Index: app/Http/Controllers/Auth/CreatePasswordController.php
===================================================================
--- app/Http/Controllers/Auth/CreatePasswordController.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Controllers/Auth/CreatePasswordController.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Requests\Auth\CreatePasswordRequest;
+use App\Models\User;
+use App\Http\Controllers\Controller;
+
+class CreatePasswordController extends Controller
+{
+    public function __construct()
+    {
+        $this->middleware("createPassword");
+    }
+
+    public function showCreatePassword($id, $token)
+    {
+        return view("auth.create_password")->with([
+            "id" => $id,
+            "token" => $token
+        ]);
+    }
+
+    public function createPassword(CreatePasswordRequest $request, $id, $token)
+    {
+        $user = User::find($id);
+
+        $user->password = bcrypt($request->password);
+        $user->is_active = true;
+        $user->is_confirmed = true;
+
+        if ($user->is_forgot_password) {
+            $user->is_forgot_password = false;
+        }
+
+        $user->save();
+
+        return redirect()->route("auth.loginShow");
+    }
+}
Index: app/Http/Controllers/Auth/ForgotPasswordController.php
===================================================================
--- app/Http/Controllers/Auth/ForgotPasswordController.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Controllers/Auth/ForgotPasswordController.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,39 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Requests\Auth\ForgotPasswordRequest;
+use App\Models\User;
+use App\Http\Controllers\Controller;
+use App\Notifications\ForgotPassword;
+
+class ForgotPasswordController extends Controller
+{
+    public function __construct()
+    {
+        $this->middleware("guest");
+    }
+
+    public function showForgotPassword()
+    {
+        return view("auth.forgot");
+    }
+
+    public function forgotPassword(ForgotPasswordRequest $request)
+    {
+        $user = User::where("email", $request->email)->first();
+
+        $user->is_forgot_password = true;
+        $user->is_active = false;
+        $user->security_code = $user->generateSecurityCode();
+        $user->verify_token = $user->generateVerifyToken();
+
+        $user->save();
+
+        $user->notify(new ForgotPassword($user));
+
+        $request->session()->flash("forgotInfo", "We have sent an email to your inbox.");
+
+        return redirect()->route("auth.forgotShow");
+    }
+}
Index: app/Http/Controllers/Auth/LoginController.php
===================================================================
--- app/Http/Controllers/Auth/LoginController.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Controllers/Auth/LoginController.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,69 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Requests\Auth\LoginRequest;
+use App\Models\User;
+use App\Http\Controllers\Controller;
+use Illuminate\Support\Facades\Hash;
+
+class LoginController extends Controller
+{
+    protected $redirectTo = '/dashboard';
+
+    public function __construct()
+    {
+        $this->middleware("guest")->except('logout');
+    }
+
+    public function showLogin()
+    {
+        return view("auth.login");
+    }
+
+    public function login(LoginRequest $request)
+    {
+        $user = User::whereUsername($request->username)->first();
+
+        if (!$user->is_active) {
+            $request->session()->flash("isActiveError", "Your account is blocked or its not confirmed yet. Please contact with your system administrator or check your email.");
+            return redirect()->back();
+        }
+
+        if (!Hash::check($request->password, $user->password)) {
+            $request->session()->flash("passwordError", "Your password is incorrect");
+            return redirect()->back()->withInput($request->input());
+        }
+
+        if (auth()->attempt([
+            "username" => $request->username,
+            "password" => $request->password,
+            "is_active" => true], $request->remember)) {
+
+            $user->is_online = true;
+            $user->save();
+
+            return redirect()->intended('/dashboard');
+        }
+
+        if ($user->is_forgot_password) {
+            $user->is_forgot_password = false;
+        }
+
+        $request->session()->flash("loginError", "An error occurred while login. Please try again later.");
+
+        return redirect()->back()->withInput($request->input());
+    }
+
+    public function logout()
+    {
+
+        $user = auth()->user();
+        $user->is_online = false;
+        $user->save();
+
+        auth()->logout();
+
+        return redirect("/auth/login");
+    }
+}
Index: app/Http/Controllers/Auth/VerifyNewEmailController.php
===================================================================
--- app/Http/Controllers/Auth/VerifyNewEmailController.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Controllers/Auth/VerifyNewEmailController.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Requests\Auth\VerifyNewEmailRequest;
+use App\Models\User;
+use App\Http\Controllers\Controller;
+
+class VerifyNewEmailController extends Controller
+{
+    public function __construct()
+    {
+        $this->middleware("checkVerifyNewEmail");
+    }
+
+    public function create($id, $token)
+    {
+        return view("auth.verify")->with([
+            "id" => $id,
+            "token" => $token
+        ]);
+    }
+
+    public function verify(VerifyNewEmailRequest $request, $id, $token)
+    {
+        $user = User::find($id);
+        $user->is_active = true;
+        $user->save();
+
+        return redirect()->route("auth.login");
+    }
+}
Index: app/Http/Kernel.php
===================================================================
--- app/Http/Kernel.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ app/Http/Kernel.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -22,4 +22,5 @@
         \App\Http\Middleware\TrimStrings::class,
         \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
+        \App\Http\Middleware\CheckForMaintenanceMode::class,
     ];
 
@@ -64,4 +65,9 @@
         'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
         'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
+        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
+        'createPassword' => \App\Http\Middleware\CheckCreatePassword::class,
+        'checkVerifyNewEmail' => \App\Http\Middleware\CheckVerifyNewEmail::class,
+        'permission' => \App\Http\Middleware\CheckPermission::class,
+        'checkIsActive' => \App\Http\Middleware\CheckIsActive::class,
     ];
 }
Index: app/Http/Middleware/Authenticate.php
===================================================================
--- app/Http/Middleware/Authenticate.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ app/Http/Middleware/Authenticate.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -16,5 +16,5 @@
     {
         if (! $request->expectsJson()) {
-            return route('login');
+            return route('auth.loginShow');
         }
     }
Index: app/Http/Middleware/CheckCreatePassword.php
===================================================================
--- app/Http/Middleware/CheckCreatePassword.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Middleware/CheckCreatePassword.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use App\Models\User;
+use Illuminate\Support\Carbon;
+
+class CheckCreatePassword
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        $id = $request->route("id");
+        $token = $request->route("token");
+
+        $user = User::findOrFail($id);
+
+        if($user->is_active) {
+            return redirect()->route("auth.loginShow");
+        }
+
+        if(!$user->is_forgot_password) {
+            if(Carbon::now()->greaterThan($user->created_at->addMinutes(10))) {
+                return redirect()->route("auth.loginShow");
+            }
+        }
+
+        return $next($request);
+    }
+}
Index: app/Http/Middleware/CheckForMaintenanceMode.php
===================================================================
--- app/Http/Middleware/CheckForMaintenanceMode.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Middleware/CheckForMaintenanceMode.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;
+
+class CheckForMaintenanceMode extends Middleware
+{
+    /**
+     * The URIs that should be reachable while maintenance mode is enabled.
+     *
+     * @var array
+     */
+    protected $except = [
+        //
+    ];
+}
Index: app/Http/Middleware/CheckIsActive.php
===================================================================
--- app/Http/Middleware/CheckIsActive.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Middleware/CheckIsActive.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,31 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+
+class CheckIsActive
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        if(!auth()->user()->is_active) {
+
+            $user = auth()->user();
+            $user->is_online = false;
+            $user->save();
+
+            auth()->logout();
+
+            return redirect()->route("auth.loginShow");
+        }
+
+        return $next($request);
+    }
+}
Index: app/Http/Middleware/CheckPermission.php
===================================================================
--- app/Http/Middleware/CheckPermission.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Middleware/CheckPermission.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,26 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+
+class CheckPermission
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next, $permission)
+    {
+        $user = auth()->user();
+
+        if($user->hasPermission($permission)) {
+            return $next($request);
+        }
+
+        return abort(403);
+    }
+}
Index: app/Http/Middleware/CheckVerifyNewEmail.php
===================================================================
--- app/Http/Middleware/CheckVerifyNewEmail.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Middleware/CheckVerifyNewEmail.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use App\Models\User;
+
+class CheckVerifyNewEmail
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        $id = $request->route("id");
+        $token = $request->route("token");
+
+        $user = User::findOrFail($id);
+
+        if($user->is_active) {
+            return redirect()->route("auth.loginShow");
+        }
+
+        return $next($request);
+    }
+}
Index: app/Http/Middleware/TrimStrings.php
===================================================================
--- app/Http/Middleware/TrimStrings.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ app/Http/Middleware/TrimStrings.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -13,5 +13,4 @@
      */
     protected $except = [
-        'current_password',
         'password',
         'password_confirmation',
Index: app/Http/Middleware/TrustHosts.php
===================================================================
--- app/Http/Middleware/TrustHosts.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ app/Http/Middleware/TrustHosts.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -4,4 +4,5 @@
 
 use Illuminate\Http\Middleware\TrustHosts as Middleware;
+use Illuminate\Http\Request;
 
 class TrustHosts extends Middleware
Index: app/Http/Middleware/VerifyCsrfToken.php
===================================================================
--- app/Http/Middleware/VerifyCsrfToken.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ app/Http/Middleware/VerifyCsrfToken.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -8,4 +8,11 @@
 {
     /**
+     * Indicates whether the XSRF-TOKEN cookie should be set on the response.
+     *
+     * @var bool
+     */
+    protected $addHttpCookie = true;
+
+    /**
      * The URIs that should be excluded from CSRF verification.
      *
Index: app/Http/Requests/Auth/CreatePasswordRequest.php
===================================================================
--- app/Http/Requests/Auth/CreatePasswordRequest.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Requests/Auth/CreatePasswordRequest.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Http\Requests\Auth;
+
+use Illuminate\Foundation\Http\FormRequest;
+use Illuminate\Validation\Rule;
+
+class CreatePasswordRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        $that = $this;
+
+        return [
+            "password" => "required|string|confirmed|min:8",
+            "security_code" => [
+                "required",
+                "integer",
+                Rule::exists("users")->where(function ($query) use ($that) {
+                    $query->where("id", $that->route("id"));
+                }),
+            ]
+        ];
+    }
+}
Index: app/Http/Requests/Auth/ForgotPasswordRequest.php
===================================================================
--- app/Http/Requests/Auth/ForgotPasswordRequest.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Requests/Auth/ForgotPasswordRequest.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Requests\Auth;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class ForgotPasswordRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        return [
+            "email" => "required|email|exists:users"
+        ];
+    }
+}
Index: app/Http/Requests/Auth/LoginRequest.php
===================================================================
--- app/Http/Requests/Auth/LoginRequest.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Requests/Auth/LoginRequest.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Requests\Auth;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class LoginRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        return [
+            "username" => "required|exists:users,username"
+        ];
+    }
+}
Index: app/Http/Requests/Auth/VerifyNewEmailRequest.php
===================================================================
--- app/Http/Requests/Auth/VerifyNewEmailRequest.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Http/Requests/Auth/VerifyNewEmailRequest.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,39 @@
+<?php
+
+namespace App\Http\Requests\Auth;
+
+use Illuminate\Foundation\Http\FormRequest;
+use Illuminate\Validation\Rule;
+
+class VerifyNewEmailRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        $that = $this;
+
+        return [
+            "security_code" => [
+                "required",
+                "integer",
+                Rule::exists("users")->where(function ($query) use ($that) {
+                    $query->where("id", $that->route("id"));
+                }),
+            ]
+        ];
+    }
+}
Index: app/Models/Permission.php
===================================================================
--- app/Models/Permission.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Models/Permission.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class Permission extends Model
+{
+    protected $table = "permissions";
+
+    public function role() {
+        return $this->belongsToMany(Role::class, "roles_permissions");
+    }
+}
Index: app/Models/Role.php
===================================================================
--- app/Models/Role.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Models/Role.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class Role extends Model
+{
+    protected $table = "roles";
+
+    public function user() {
+        return $this->hasMany(User::class);
+    }
+
+    public function permission() {
+        return $this->belongsToMany(Permission::class, "roles_permissions");
+    }
+}
Index: app/Models/User.php
===================================================================
--- app/Models/User.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ app/Models/User.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -3,42 +3,140 @@
 namespace App\Models;
 
-use Illuminate\Contracts\Auth\MustVerifyEmail;
-use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Support\Str;
+use Illuminate\Notifications\Notifiable;
 use Illuminate\Foundation\Auth\User as Authenticatable;
-use Illuminate\Notifications\Notifiable;
-use Laravel\Sanctum\HasApiTokens;
 
 class User extends Authenticatable
 {
-    use HasApiTokens, HasFactory, Notifiable;
+    use Notifiable;
+
+    protected $table = "users";
 
     /**
      * The attributes that are mass assignable.
      *
-     * @var string[]
+     * @var array
      */
     protected $fillable = [
-        'name',
-        'email',
-        'password',
+        "name",
+        "surname",
+        "username",
+        "password",
+        "email",
+        "country_code",
+        "mobile_number",
+        "role_id"
     ];
 
     /**
-     * The attributes that should be hidden for serialization.
+     * The attributes that should be hidden for arrays.
      *
      * @var array
      */
     protected $hidden = [
-        'password',
-        'remember_token',
+        "password",
+        "remember_token",
+        "is_active"
     ];
 
     /**
-     * The attributes that should be cast.
+     * The attributes that should be cast to native types.
      *
      * @var array
      */
-    protected $casts = [
-        'email_verified_at' => 'datetime',
-    ];
+    protected $casts = [];
+
+
+    public function role() {
+        return $this->belongsTo(Role::class);
+    }
+
+    public function post() {
+        return $this->hasMany(Post::class);
+    }
+
+    public function comments()
+    {
+        return $this->hasManyThrough(Comment::class, Post::class);
+    }
+
+    public function hasPermission($permission, $id = null, $any = false) {
+
+        $userPermissions = null;
+        $flag = null;
+
+        if($id != null) $userPermissions = User::find($id)->role->permission->pluck("name");
+        else $userPermissions = $this->role->permission->pluck("name");
+
+        if($any) {
+            foreach($permission as $p) {
+                if($this->hasPermission($p)) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        if(is_string($permission)) {
+            return $userPermissions->contains($permission);
+        }
+
+        if(is_array($permission)) {
+            foreach($permission as $p) {
+                if($this->hasPermission($p)) {
+                    $flag = true;
+                } else {
+                    $flag = false; break;
+                }
+            }
+        }
+
+        return $flag;
+    }
+
+    public function hasAllPermissions(array $permissions = array(), $id = null, $any = false) {
+        return $this->hasPermission($permissions, $id, $any);
+    }
+
+    public function hasAnyPermission(array $permissions = array(), $id = null, $any = true) {
+        return $this->hasPermission($permissions, $id, $any);
+    }
+
+    public function hasRole($role) {
+        return $role === $this->role->name;
+    }
+
+    public function isAdmin() {
+        return $this->hasRole("admin");
+    }
+
+    public function isAdminOrEditor() {
+        return $this->hasRole("admin") || $this->hasRole("editor");
+    }
+
+    public function getFullName($id = null) {
+
+        if($id != null) {
+            $user = User::find($id);
+            return $user->name . " " . $user->surname;
+        }
+
+        return $this->name . " " . $this->surname;
+    }
+
+    public function getPostsCount($id) {
+        return Post::where("user_id", $id)->count();
+    }
+
+    public function generateTemporaryPassword($length = 20) {
+        return bcrypt(Str::random($length));
+    }
+
+    public function generateSecurityCode($min = 10000, $max = 99999) {
+        return rand($min, $max);
+    }
+
+    public function generateVerifyToken($length = 32) {
+        return Str::random($length);
+    }
 }
Index: app/Notifications/ForgotPassword.php
===================================================================
--- app/Notifications/ForgotPassword.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ app/Notifications/ForgotPassword.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,64 @@
+<?php
+
+namespace App\Notifications;
+
+use App\Models\User;
+use Illuminate\Bus\Queueable;
+use Illuminate\Notifications\Notification;
+use Illuminate\Notifications\Messages\MailMessage;
+
+class ForgotPassword extends Notification
+{
+    use Queueable;
+
+    private $user;
+
+    /**
+     * Create a new notification instance.
+     *
+     * @return void
+     */
+    public function __construct(User $user)
+    {
+        $this->user = $user;
+    }
+
+    /**
+     * Get the notification's delivery channels.
+     *
+     * @param  mixed  $notifiable
+     * @return array
+     */
+    public function via($notifiable)
+    {
+        return ['mail'];
+    }
+
+    /**
+     * Get the mail representation of the notification.
+     *
+     * @param  mixed  $notifiable
+     * @return \Illuminate\Notifications\Messages\MailMessage
+     */
+    public function toMail($notifiable)
+    {
+        return (new MailMessage)
+                    ->greeting("Hello " . $this->user->name)
+                    ->line("To create or change your password click on the button")
+                    ->line("Your security code is: " . $this->user->security_code )
+                    ->action("Create Password", url("/auth/create-password/" . $this->user->id . "/" . $this->user->verify_token));
+    }
+
+    /**
+     * Get the array representation of the notification.
+     *
+     * @param  mixed  $notifiable
+     * @return array
+     */
+    public function toArray($notifiable)
+    {
+        return [
+            //
+        ];
+    }
+}
Index: app/Providers/AuthServiceProvider.php
===================================================================
--- app/Providers/AuthServiceProvider.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ app/Providers/AuthServiceProvider.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -14,5 +14,5 @@
      */
     protected $policies = [
-        // 'App\Models\Model' => 'App\Policies\ModelPolicy',
+        'App\Models\Model' => 'App\Policies\ModelPolicy',
     ];
 
Index: app/Providers/RouteServiceProvider.php
===================================================================
--- app/Providers/RouteServiceProvider.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ app/Providers/RouteServiceProvider.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -27,5 +27,5 @@
      * @var string|null
      */
-    // protected $namespace = 'App\\Http\\Controllers';
+    protected $namespace = 'App\\Http\\Controllers';
 
     /**
Index: tabase/migrations/2014_10_12_000000_create_users_table.php
===================================================================
--- database/migrations/2014_10_12_000000_create_users_table.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ 	(revision )
@@ -1,36 +1,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreateUsersTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('users', function (Blueprint $table) {
-            $table->id();
-            $table->string('name');
-            $table->string('email')->unique();
-            $table->timestamp('email_verified_at')->nullable();
-            $table->string('password');
-            $table->rememberToken();
-            $table->timestamps();
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('users');
-    }
-}
Index: tabase/migrations/2014_10_12_100000_create_password_resets_table.php
===================================================================
--- database/migrations/2014_10_12_100000_create_password_resets_table.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ 	(revision )
@@ -1,32 +1,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreatePasswordResetsTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('password_resets', function (Blueprint $table) {
-            $table->string('email')->index();
-            $table->string('token');
-            $table->timestamp('created_at')->nullable();
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('password_resets');
-    }
-}
Index: tabase/migrations/2019_08_19_000000_create_failed_jobs_table.php
===================================================================
--- database/migrations/2019_08_19_000000_create_failed_jobs_table.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ 	(revision )
@@ -1,36 +1,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreateFailedJobsTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('failed_jobs', function (Blueprint $table) {
-            $table->id();
-            $table->string('uuid')->unique();
-            $table->text('connection');
-            $table->text('queue');
-            $table->longText('payload');
-            $table->longText('exception');
-            $table->timestamp('failed_at')->useCurrent();
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('failed_jobs');
-    }
-}
Index: tabase/migrations/2019_12_14_000001_create_personal_access_tokens_table.php
===================================================================
--- database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ 	(revision )
@@ -1,36 +1,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreatePersonalAccessTokensTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('personal_access_tokens', function (Blueprint $table) {
-            $table->bigIncrements('id');
-            $table->morphs('tokenable');
-            $table->string('name');
-            $table->string('token', 64)->unique();
-            $table->text('abilities')->nullable();
-            $table->timestamp('last_used_at')->nullable();
-            $table->timestamps();
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('personal_access_tokens');
-    }
-}
Index: database/migrations/2021_09_27_171104_create_roles_table.php
===================================================================
--- database/migrations/2021_09_27_171104_create_roles_table.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ database/migrations/2021_09_27_171104_create_roles_table.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,31 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateRolesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('roles', function (Blueprint $table) {
+            $table->increments('id');
+            $table->string('name');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('roles');
+    }
+}
Index: database/migrations/2021_09_27_171105_create_permissions_table.php
===================================================================
--- database/migrations/2021_09_27_171105_create_permissions_table.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ database/migrations/2021_09_27_171105_create_permissions_table.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,31 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreatePermissionsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('permissions', function (Blueprint $table) {
+            $table->increments('id');
+            $table->string("name");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('permissions');
+    }
+}
Index: database/migrations/2021_09_27_171106_create_roles_permissions_table.php
===================================================================
--- database/migrations/2021_09_27_171106_create_roles_permissions_table.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ database/migrations/2021_09_27_171106_create_roles_permissions_table.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateRolesPermissionsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('roles_permissions', function (Blueprint $table) {
+            $table->integer("role_id")->unsigned();
+            $table->foreign("role_id")->references("id")->on("roles");
+            $table->integer("permission_id")->unsigned();
+            $table->foreign("permission_id")->references("id")->on("permissions");
+            $table->primary(["role_id", "permission_id"]);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('roles_permissions');
+    }
+}
Index: database/migrations/2021_09_27_171107_create_users_table.php
===================================================================
--- database/migrations/2021_09_27_171107_create_users_table.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ database/migrations/2021_09_27_171107_create_users_table.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,47 @@
+<?php
+
+use Illuminate\Support\Str;
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateUsersTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('users', function (Blueprint $table) {
+            $table->increments('id');
+            $table->string('name');
+            $table->string('surname');
+            $table->string('username')->unique();
+            $table->string('password');
+            $table->string('email')->unique();
+            $table->string('mobile_number')->unique();
+            $table->integer('role_id')->unsigned();
+            $table->foreign("role_id")->references("id")->on("roles");
+            $table->boolean('is_active')->default(false);
+            $table->boolean('is_online')->default(false);
+            $table->boolean('is_confirmed')->default(false);
+            $table->boolean('is_forgot_password')->default(false);
+            $table->integer('security_code')->nullable();
+            $table->string('verify_token')->nullable();
+            $table->rememberToken();
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('users');
+    }
+}
Index: database/migrations/2021_09_27_171108_create_password_resets_table.php
===================================================================
--- database/migrations/2021_09_27_171108_create_password_resets_table.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ database/migrations/2021_09_27_171108_create_password_resets_table.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreatePasswordResetsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('password_resets', function (Blueprint $table) {
+            $table->string('email')->index();
+            $table->string('token');
+            $table->timestamp('created_at')->nullable();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('password_resets');
+    }
+}
Index: database/seeders/DatabaseSeeder.php
===================================================================
--- database/seeders/DatabaseSeeder.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ database/seeders/DatabaseSeeder.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -14,5 +14,8 @@
     public function run()
     {
-        // \App\Models\User::factory(10)->create();
+        $this->call(RolesTableSeeder::class);
+        $this->call(PermissionsTableSeeder::class);
+        $this->call(RolesPermissionsTableSeeder::class);
+        $this->call(UsersTableSeeder::class);
     }
 }
Index: database/seeders/PermissionsTableSeeder.php
===================================================================
--- database/seeders/PermissionsTableSeeder.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ database/seeders/PermissionsTableSeeder.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,18 @@
+<?php
+
+namespace Database\Seeders;
+
+use Illuminate\Database\Seeder;
+
+class PermissionsTableSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        //
+    }
+}
Index: database/seeders/RolesPermissionsTableSeeder.php
===================================================================
--- database/seeders/RolesPermissionsTableSeeder.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ database/seeders/RolesPermissionsTableSeeder.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,18 @@
+<?php
+
+namespace Database\Seeders;
+
+use Illuminate\Database\Seeder;
+
+class RolesPermissionsTableSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        //
+    }
+}
Index: database/seeders/RolesTableSeeder.php
===================================================================
--- database/seeders/RolesTableSeeder.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ database/seeders/RolesTableSeeder.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,21 @@
+<?php
+
+namespace Database\Seeders;
+
+use Illuminate\Database\Seeder;
+
+class RolesTableSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        \DB::table('roles')->insert([
+            ["name" => "admin"], // Have access to all users(managing users), departments, documents etc
+            ["name" => "referent"], // Have access to all departments, documents etc
+        ]);
+    }
+}
Index: database/seeders/UsersTableSeeder.php
===================================================================
--- database/seeders/UsersTableSeeder.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ database/seeders/UsersTableSeeder.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,32 @@
+<?php
+
+namespace Database\Seeders;
+
+use Carbon\Carbon;
+use Illuminate\Database\Seeder;
+
+class UsersTableSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        \DB::table("users")->insert([
+            "name" => "Berat",
+            "surname" => "Kjufliju",
+            "username" => "beratk",
+            "password" => bcrypt("123456"),
+            "email" => "kufliju@gmail.com",
+            "mobile_number" => "+38971201239",
+            "role_id" => 1,
+            "is_active" => true,
+            "is_confirmed" => true,
+            "created_at" => Carbon::now()
+        ]);
+
+        //factory(App\Models\User::class, 50)->create();
+    }
+}
Index: package-lock.json
===================================================================
--- package-lock.json	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ package-lock.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -1552,4 +1552,27 @@
             "dev": true
         },
+        "adjust-sourcemap-loader": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
+            "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==",
+            "dev": true,
+            "requires": {
+                "loader-utils": "^2.0.0",
+                "regex-parser": "^2.2.11"
+            },
+            "dependencies": {
+                "loader-utils": {
+                    "version": "2.0.0",
+                    "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+                    "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+                    "dev": true,
+                    "requires": {
+                        "big.js": "^5.2.2",
+                        "emojis-list": "^3.0.0",
+                        "json5": "^2.1.2"
+                    }
+                }
+            }
+        },
         "aggregate-error": {
             "version": "3.1.0",
@@ -5632,4 +5655,10 @@
             }
         },
+        "regex-parser": {
+            "version": "2.2.11",
+            "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz",
+            "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==",
+            "dev": true
+        },
         "regexp.prototype.flags": {
             "version": "1.3.1",
@@ -5728,4 +5757,52 @@
             "dev": true
         },
+        "resolve-url-loader": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz",
+            "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==",
+            "dev": true,
+            "requires": {
+                "adjust-sourcemap-loader": "^4.0.0",
+                "convert-source-map": "^1.7.0",
+                "loader-utils": "^2.0.0",
+                "postcss": "^7.0.35",
+                "source-map": "0.6.1"
+            },
+            "dependencies": {
+                "loader-utils": {
+                    "version": "2.0.0",
+                    "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+                    "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+                    "dev": true,
+                    "requires": {
+                        "big.js": "^5.2.2",
+                        "emojis-list": "^3.0.0",
+                        "json5": "^2.1.2"
+                    }
+                },
+                "nanocolors": {
+                    "version": "0.2.10",
+                    "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.10.tgz",
+                    "integrity": "sha512-i+EDWGsJClQwR/bhLIG/CObZZwaYaS5qt+yjxZbfV+77QiNHNzE9nj4d9Ut1TGZ0R0eSwPcQWzReASzXuw/7oA==",
+                    "dev": true
+                },
+                "postcss": {
+                    "version": "7.0.38",
+                    "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz",
+                    "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==",
+                    "dev": true,
+                    "requires": {
+                        "nanocolors": "^0.2.2",
+                        "source-map": "^0.6.1"
+                    }
+                },
+                "source-map": {
+                    "version": "0.6.1",
+                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+                    "dev": true
+                }
+            }
+        },
         "retry": {
             "version": "0.13.1",
@@ -5779,4 +5856,23 @@
             "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
             "dev": true
+        },
+        "sass": {
+            "version": "1.42.1",
+            "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz",
+            "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==",
+            "dev": true,
+            "requires": {
+                "chokidar": ">=3.0.0 <4.0.0"
+            }
+        },
+        "sass-loader": {
+            "version": "12.1.0",
+            "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz",
+            "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==",
+            "dev": true,
+            "requires": {
+                "klona": "^2.0.4",
+                "neo-async": "^2.6.2"
+            }
         },
         "schema-utils": {
Index: package.json
===================================================================
--- package.json	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ package.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -14,5 +14,8 @@
         "laravel-mix": "^6.0.6",
         "lodash": "^4.17.19",
-        "postcss": "^8.1.14"
+        "postcss": "^8.1.14",
+        "resolve-url-loader": "^4.0.0",
+        "sass": "^1.42.1",
+        "sass-loader": "^12.1.0"
     }
 }
Index: public/assets/css/app.css
===================================================================
--- public/assets/css/app.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/assets/css/app.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9803 @@
+.m-0 {
+  margin: 0px !important;
+}
+
+.m-5 {
+  margin: 5px !important;
+}
+
+.m-10 {
+  margin: 10px !important;
+}
+
+.m-15 {
+  margin: 15px !important;
+}
+
+.m-20 {
+  margin: 20px !important;
+}
+
+.m-25 {
+  margin: 25px !important;
+}
+
+.m-30 {
+  margin: 30px !important;
+}
+
+.m-35 {
+  margin: 35px !important;
+}
+
+.m-40 {
+  margin: 40px !important;
+}
+
+.m-45 {
+  margin: 45px !important;
+}
+
+.m-50 {
+  margin: 50px !important;
+}
+
+.m-t-b-0 {
+  margin-top: 0px !important;
+  margin-bottom: 0px !important;
+}
+
+.m-t-b-5 {
+  margin-top: 5px !important;
+  margin-bottom: 5px !important;
+}
+
+.m-t-b-10 {
+  margin-top: 10px !important;
+  margin-bottom: 10px !important;
+}
+
+.m-t-b-15 {
+  margin-top: 15px !important;
+  margin-bottom: 15px !important;
+}
+
+.m-t-b-20 {
+  margin-top: 20px !important;
+  margin-bottom: 20px !important;
+}
+
+.m-t-b-25 {
+  margin-top: 25px !important;
+  margin-bottom: 25px !important;
+}
+
+.m-t-b-30 {
+  margin-top: 30px !important;
+  margin-bottom: 30px !important;
+}
+
+.m-t-b-35 {
+  margin-top: 35px !important;
+  margin-bottom: 35px !important;
+}
+
+.m-t-b-40 {
+  margin-top: 40px !important;
+  margin-bottom: 40px !important;
+}
+
+.m-t-b-45 {
+  margin-top: 45px !important;
+  margin-bottom: 45px !important;
+}
+
+.m-t-b-50 {
+  margin-top: 50px !important;
+  margin-bottom: 50px !important;
+}
+
+.m-l-r-0 {
+  margin-left: 0px !important;
+  margin-right: 0px !important;
+}
+
+.m-l-r-5 {
+  margin-left: 5px !important;
+  margin-right: 5px !important;
+}
+
+.m-l-r-10 {
+  margin-left: 10px !important;
+  margin-right: 10px !important;
+}
+
+.m-l-r-15 {
+  margin-left: 15px !important;
+  margin-right: 15px !important;
+}
+
+.m-l-r-20 {
+  margin-left: 20px !important;
+  margin-right: 20px !important;
+}
+
+.m-l-r-25 {
+  margin-left: 25px !important;
+  margin-right: 25px !important;
+}
+
+.m-l-r-30 {
+  margin-left: 30px !important;
+  margin-right: 30px !important;
+}
+
+.m-l-r-35 {
+  margin-left: 35px !important;
+  margin-right: 35px !important;
+}
+
+.m-l-r-40 {
+  margin-left: 40px !important;
+  margin-right: 40px !important;
+}
+
+.m-l-r-45 {
+  margin-left: 45px !important;
+  margin-right: 45px !important;
+}
+
+.m-l-r-50 {
+  margin-left: 50px !important;
+  margin-right: 50px !important;
+}
+
+.m-t-0 {
+  margin-top: 0px !important;
+}
+
+.m-t-5 {
+  margin-top: 5px !important;
+}
+
+.m-t-10 {
+  margin-top: 10px !important;
+}
+
+.m-t-15 {
+  margin-top: 15px !important;
+}
+
+.m-t-20 {
+  margin-top: 20px !important;
+}
+
+.m-t-25 {
+  margin-top: 25px !important;
+}
+
+.m-t-30 {
+  margin-top: 30px !important;
+}
+
+.m-t-35 {
+  margin-top: 35px !important;
+}
+
+.m-t-40 {
+  margin-top: 40px !important;
+}
+
+.m-t-45 {
+  margin-top: 45px !important;
+}
+
+.m-t-50 {
+  margin-top: 50px !important;
+}
+
+.m-r-0 {
+  margin-right: 0px !important;
+}
+
+.m-r-5 {
+  margin-right: 5px !important;
+}
+
+.m-r-10 {
+  margin-right: 10px !important;
+}
+
+.m-r-15 {
+  margin-right: 15px !important;
+}
+
+.m-r-20 {
+  margin-right: 20px !important;
+}
+
+.m-r-25 {
+  margin-right: 25px !important;
+}
+
+.m-r-30 {
+  margin-right: 30px !important;
+}
+
+.m-r-35 {
+  margin-right: 35px !important;
+}
+
+.m-r-40 {
+  margin-right: 40px !important;
+}
+
+.m-r-45 {
+  margin-right: 45px !important;
+}
+
+.m-r-50 {
+  margin-right: 50px !important;
+}
+
+.m-b-0 {
+  margin-bottom: 0px !important;
+}
+
+.m-b-5 {
+  margin-bottom: 5px !important;
+}
+
+.m-b-10 {
+  margin-bottom: 10px !important;
+}
+
+.m-b-15 {
+  margin-bottom: 15px !important;
+}
+
+.m-b-20 {
+  margin-bottom: 20px !important;
+}
+
+.m-b-25 {
+  margin-bottom: 25px !important;
+}
+
+.m-b-30 {
+  margin-bottom: 30px !important;
+}
+
+.m-b-35 {
+  margin-bottom: 35px !important;
+}
+
+.m-b-40 {
+  margin-bottom: 40px !important;
+}
+
+.m-b-45 {
+  margin-bottom: 45px !important;
+}
+
+.m-b-50 {
+  margin-bottom: 50px !important;
+}
+
+.m-l-0 {
+  margin-left: 0px !important;
+}
+
+.m-l-5 {
+  margin-left: 5px !important;
+}
+
+.m-l-10 {
+  margin-left: 10px !important;
+}
+
+.m-l-15 {
+  margin-left: 15px !important;
+}
+
+.m-l-20 {
+  margin-left: 20px !important;
+}
+
+.m-l-25 {
+  margin-left: 25px !important;
+}
+
+.m-l-30 {
+  margin-left: 30px !important;
+}
+
+.m-l-35 {
+  margin-left: 35px !important;
+}
+
+.m-l-40 {
+  margin-left: 40px !important;
+}
+
+.m-l-45 {
+  margin-left: 45px !important;
+}
+
+.m-l-50 {
+  margin-left: 50px !important;
+}
+
+.m-t-0-minus {
+  margin-top: 0px !important;
+}
+
+.m-t-10-minus {
+  margin-top: -10px !important;
+}
+
+.m-t-20-minus {
+  margin-top: -20px !important;
+}
+
+.m-t-30-minus {
+  margin-top: -30px !important;
+}
+
+.m-t-40-minus {
+  margin-top: -40px !important;
+}
+
+.m-t-50-minus {
+  margin-top: -50px !important;
+}
+
+.m-t-60-minus {
+  margin-top: -60px !important;
+}
+
+.m-t-70-minus {
+  margin-top: -70px !important;
+}
+
+.m-t-80-minus {
+  margin-top: -80px !important;
+}
+
+.m-t-90-minus {
+  margin-top: -90px !important;
+}
+
+.m-t-100-minus {
+  margin-top: -100px !important;
+}
+
+.m-t-110-minus {
+  margin-top: -110px !important;
+}
+
+.m-t-120-minus {
+  margin-top: -120px !important;
+}
+
+.m-t-130-minus {
+  margin-top: -130px !important;
+}
+
+.m-t-140-minus {
+  margin-top: -140px !important;
+}
+
+.m-t-150-minus {
+  margin-top: -150px !important;
+}
+
+.m-t-160-minus {
+  margin-top: -160px !important;
+}
+
+.m-t-170-minus {
+  margin-top: -170px !important;
+}
+
+.m-t-180-minus {
+  margin-top: -180px !important;
+}
+
+.m-t-190-minus {
+  margin-top: -190px !important;
+}
+
+.m-t-200-minus {
+  margin-top: -200px !important;
+}
+
+.m-t-210-minus {
+  margin-top: -210px !important;
+}
+
+.m-t-220-minus {
+  margin-top: -220px !important;
+}
+
+.m-t-230-minus {
+  margin-top: -230px !important;
+}
+
+.m-t-240-minus {
+  margin-top: -240px !important;
+}
+
+.m-t-250-minus {
+  margin-top: -250px !important;
+}
+
+.m-t-260-minus {
+  margin-top: -260px !important;
+}
+
+.m-t-270-minus {
+  margin-top: -270px !important;
+}
+
+.m-t-280-minus {
+  margin-top: -280px !important;
+}
+
+.m-t-290-minus {
+  margin-top: -290px !important;
+}
+
+.m-t-300-minus {
+  margin-top: -300px !important;
+}
+
+.m-t-310-minus {
+  margin-top: -310px !important;
+}
+
+.m-t-320-minus {
+  margin-top: -320px !important;
+}
+
+.m-t-330-minus {
+  margin-top: -330px !important;
+}
+
+.m-t-340-minus {
+  margin-top: -340px !important;
+}
+
+.m-t-350-minus {
+  margin-top: -350px !important;
+}
+
+.m-t-360-minus {
+  margin-top: -360px !important;
+}
+
+.m-t-370-minus {
+  margin-top: -370px !important;
+}
+
+.m-t-380-minus {
+  margin-top: -380px !important;
+}
+
+.m-t-390-minus {
+  margin-top: -390px !important;
+}
+
+.m-t-400-minus {
+  margin-top: -400px !important;
+}
+
+.m-t-410-minus {
+  margin-top: -410px !important;
+}
+
+.m-t-420-minus {
+  margin-top: -420px !important;
+}
+
+.m-t-430-minus {
+  margin-top: -430px !important;
+}
+
+.m-t-440-minus {
+  margin-top: -440px !important;
+}
+
+.m-t-450-minus {
+  margin-top: -450px !important;
+}
+
+.m-t-460-minus {
+  margin-top: -460px !important;
+}
+
+.m-t-470-minus {
+  margin-top: -470px !important;
+}
+
+.m-t-480-minus {
+  margin-top: -480px !important;
+}
+
+.m-t-490-minus {
+  margin-top: -490px !important;
+}
+
+.m-t-500-minus {
+  margin-top: -500px !important;
+}
+
+.m-t-510-minus {
+  margin-top: -510px !important;
+}
+
+.m-t-520-minus {
+  margin-top: -520px !important;
+}
+
+.m-t-530-minus {
+  margin-top: -530px !important;
+}
+
+.m-t-540-minus {
+  margin-top: -540px !important;
+}
+
+.m-t-550-minus {
+  margin-top: -550px !important;
+}
+
+.m-t-560-minus {
+  margin-top: -560px !important;
+}
+
+.m-t-570-minus {
+  margin-top: -570px !important;
+}
+
+.m-t-580-minus {
+  margin-top: -580px !important;
+}
+
+.m-t-590-minus {
+  margin-top: -590px !important;
+}
+
+.m-t-600-minus {
+  margin-top: -600px !important;
+}
+
+.m-t-610-minus {
+  margin-top: -610px !important;
+}
+
+.m-t-620-minus {
+  margin-top: -620px !important;
+}
+
+.m-t-630-minus {
+  margin-top: -630px !important;
+}
+
+.m-t-640-minus {
+  margin-top: -640px !important;
+}
+
+.m-t-650-minus {
+  margin-top: -650px !important;
+}
+
+.m-t-660-minus {
+  margin-top: -660px !important;
+}
+
+.m-t-670-minus {
+  margin-top: -670px !important;
+}
+
+.m-t-680-minus {
+  margin-top: -680px !important;
+}
+
+.m-t-690-minus {
+  margin-top: -690px !important;
+}
+
+.m-t-700-minus {
+  margin-top: -700px !important;
+}
+
+.m-t-710-minus {
+  margin-top: -710px !important;
+}
+
+.m-t-720-minus {
+  margin-top: -720px !important;
+}
+
+.m-t-730-minus {
+  margin-top: -730px !important;
+}
+
+.m-t-740-minus {
+  margin-top: -740px !important;
+}
+
+.m-t-750-minus {
+  margin-top: -750px !important;
+}
+
+.m-t-760-minus {
+  margin-top: -760px !important;
+}
+
+.m-t-770-minus {
+  margin-top: -770px !important;
+}
+
+.m-t-780-minus {
+  margin-top: -780px !important;
+}
+
+.m-t-790-minus {
+  margin-top: -790px !important;
+}
+
+.m-t-800-minus {
+  margin-top: -800px !important;
+}
+
+.m-t-810-minus {
+  margin-top: -810px !important;
+}
+
+.m-t-820-minus {
+  margin-top: -820px !important;
+}
+
+.m-t-830-minus {
+  margin-top: -830px !important;
+}
+
+.m-t-840-minus {
+  margin-top: -840px !important;
+}
+
+.m-t-850-minus {
+  margin-top: -850px !important;
+}
+
+.m-t-860-minus {
+  margin-top: -860px !important;
+}
+
+.m-t-870-minus {
+  margin-top: -870px !important;
+}
+
+.m-t-880-minus {
+  margin-top: -880px !important;
+}
+
+.m-t-890-minus {
+  margin-top: -890px !important;
+}
+
+.m-t-900-minus {
+  margin-top: -900px !important;
+}
+
+.m-t-910-minus {
+  margin-top: -910px !important;
+}
+
+.m-t-920-minus {
+  margin-top: -920px !important;
+}
+
+.m-t-930-minus {
+  margin-top: -930px !important;
+}
+
+.m-t-940-minus {
+  margin-top: -940px !important;
+}
+
+.m-t-950-minus {
+  margin-top: -950px !important;
+}
+
+.m-t-960-minus {
+  margin-top: -960px !important;
+}
+
+.m-t-970-minus {
+  margin-top: -970px !important;
+}
+
+.m-t-980-minus {
+  margin-top: -980px !important;
+}
+
+.m-t-990-minus {
+  margin-top: -990px !important;
+}
+
+.m-t-1000-minus {
+  margin-top: -1000px !important;
+}
+
+.m-r-0-minus {
+  margin-right: 0px !important;
+}
+
+.m-r-10-minus {
+  margin-right: -10px !important;
+}
+
+.m-r-20-minus {
+  margin-right: -20px !important;
+}
+
+.m-r-30-minus {
+  margin-right: -30px !important;
+}
+
+.m-r-40-minus {
+  margin-right: -40px !important;
+}
+
+.m-r-50-minus {
+  margin-right: -50px !important;
+}
+
+.m-r-60-minus {
+  margin-right: -60px !important;
+}
+
+.m-r-70-minus {
+  margin-right: -70px !important;
+}
+
+.m-r-80-minus {
+  margin-right: -80px !important;
+}
+
+.m-r-90-minus {
+  margin-right: -90px !important;
+}
+
+.m-r-100-minus {
+  margin-right: -100px !important;
+}
+
+.m-r-110-minus {
+  margin-right: -110px !important;
+}
+
+.m-r-120-minus {
+  margin-right: -120px !important;
+}
+
+.m-r-130-minus {
+  margin-right: -130px !important;
+}
+
+.m-r-140-minus {
+  margin-right: -140px !important;
+}
+
+.m-r-150-minus {
+  margin-right: -150px !important;
+}
+
+.m-r-160-minus {
+  margin-right: -160px !important;
+}
+
+.m-r-170-minus {
+  margin-right: -170px !important;
+}
+
+.m-r-180-minus {
+  margin-right: -180px !important;
+}
+
+.m-r-190-minus {
+  margin-right: -190px !important;
+}
+
+.m-r-200-minus {
+  margin-right: -200px !important;
+}
+
+.m-r-210-minus {
+  margin-right: -210px !important;
+}
+
+.m-r-220-minus {
+  margin-right: -220px !important;
+}
+
+.m-r-230-minus {
+  margin-right: -230px !important;
+}
+
+.m-r-240-minus {
+  margin-right: -240px !important;
+}
+
+.m-r-250-minus {
+  margin-right: -250px !important;
+}
+
+.m-r-260-minus {
+  margin-right: -260px !important;
+}
+
+.m-r-270-minus {
+  margin-right: -270px !important;
+}
+
+.m-r-280-minus {
+  margin-right: -280px !important;
+}
+
+.m-r-290-minus {
+  margin-right: -290px !important;
+}
+
+.m-r-300-minus {
+  margin-right: -300px !important;
+}
+
+.m-r-310-minus {
+  margin-right: -310px !important;
+}
+
+.m-r-320-minus {
+  margin-right: -320px !important;
+}
+
+.m-r-330-minus {
+  margin-right: -330px !important;
+}
+
+.m-r-340-minus {
+  margin-right: -340px !important;
+}
+
+.m-r-350-minus {
+  margin-right: -350px !important;
+}
+
+.m-r-360-minus {
+  margin-right: -360px !important;
+}
+
+.m-r-370-minus {
+  margin-right: -370px !important;
+}
+
+.m-r-380-minus {
+  margin-right: -380px !important;
+}
+
+.m-r-390-minus {
+  margin-right: -390px !important;
+}
+
+.m-r-400-minus {
+  margin-right: -400px !important;
+}
+
+.m-r-410-minus {
+  margin-right: -410px !important;
+}
+
+.m-r-420-minus {
+  margin-right: -420px !important;
+}
+
+.m-r-430-minus {
+  margin-right: -430px !important;
+}
+
+.m-r-440-minus {
+  margin-right: -440px !important;
+}
+
+.m-r-450-minus {
+  margin-right: -450px !important;
+}
+
+.m-r-460-minus {
+  margin-right: -460px !important;
+}
+
+.m-r-470-minus {
+  margin-right: -470px !important;
+}
+
+.m-r-480-minus {
+  margin-right: -480px !important;
+}
+
+.m-r-490-minus {
+  margin-right: -490px !important;
+}
+
+.m-r-500-minus {
+  margin-right: -500px !important;
+}
+
+.m-r-510-minus {
+  margin-right: -510px !important;
+}
+
+.m-r-520-minus {
+  margin-right: -520px !important;
+}
+
+.m-r-530-minus {
+  margin-right: -530px !important;
+}
+
+.m-r-540-minus {
+  margin-right: -540px !important;
+}
+
+.m-r-550-minus {
+  margin-right: -550px !important;
+}
+
+.m-r-560-minus {
+  margin-right: -560px !important;
+}
+
+.m-r-570-minus {
+  margin-right: -570px !important;
+}
+
+.m-r-580-minus {
+  margin-right: -580px !important;
+}
+
+.m-r-590-minus {
+  margin-right: -590px !important;
+}
+
+.m-r-600-minus {
+  margin-right: -600px !important;
+}
+
+.m-r-610-minus {
+  margin-right: -610px !important;
+}
+
+.m-r-620-minus {
+  margin-right: -620px !important;
+}
+
+.m-r-630-minus {
+  margin-right: -630px !important;
+}
+
+.m-r-640-minus {
+  margin-right: -640px !important;
+}
+
+.m-r-650-minus {
+  margin-right: -650px !important;
+}
+
+.m-r-660-minus {
+  margin-right: -660px !important;
+}
+
+.m-r-670-minus {
+  margin-right: -670px !important;
+}
+
+.m-r-680-minus {
+  margin-right: -680px !important;
+}
+
+.m-r-690-minus {
+  margin-right: -690px !important;
+}
+
+.m-r-700-minus {
+  margin-right: -700px !important;
+}
+
+.m-r-710-minus {
+  margin-right: -710px !important;
+}
+
+.m-r-720-minus {
+  margin-right: -720px !important;
+}
+
+.m-r-730-minus {
+  margin-right: -730px !important;
+}
+
+.m-r-740-minus {
+  margin-right: -740px !important;
+}
+
+.m-r-750-minus {
+  margin-right: -750px !important;
+}
+
+.m-r-760-minus {
+  margin-right: -760px !important;
+}
+
+.m-r-770-minus {
+  margin-right: -770px !important;
+}
+
+.m-r-780-minus {
+  margin-right: -780px !important;
+}
+
+.m-r-790-minus {
+  margin-right: -790px !important;
+}
+
+.m-r-800-minus {
+  margin-right: -800px !important;
+}
+
+.m-r-810-minus {
+  margin-right: -810px !important;
+}
+
+.m-r-820-minus {
+  margin-right: -820px !important;
+}
+
+.m-r-830-minus {
+  margin-right: -830px !important;
+}
+
+.m-r-840-minus {
+  margin-right: -840px !important;
+}
+
+.m-r-850-minus {
+  margin-right: -850px !important;
+}
+
+.m-r-860-minus {
+  margin-right: -860px !important;
+}
+
+.m-r-870-minus {
+  margin-right: -870px !important;
+}
+
+.m-r-880-minus {
+  margin-right: -880px !important;
+}
+
+.m-r-890-minus {
+  margin-right: -890px !important;
+}
+
+.m-r-900-minus {
+  margin-right: -900px !important;
+}
+
+.m-r-910-minus {
+  margin-right: -910px !important;
+}
+
+.m-r-920-minus {
+  margin-right: -920px !important;
+}
+
+.m-r-930-minus {
+  margin-right: -930px !important;
+}
+
+.m-r-940-minus {
+  margin-right: -940px !important;
+}
+
+.m-r-950-minus {
+  margin-right: -950px !important;
+}
+
+.m-r-960-minus {
+  margin-right: -960px !important;
+}
+
+.m-r-970-minus {
+  margin-right: -970px !important;
+}
+
+.m-r-980-minus {
+  margin-right: -980px !important;
+}
+
+.m-r-990-minus {
+  margin-right: -990px !important;
+}
+
+.m-r-1000-minus {
+  margin-right: -1000px !important;
+}
+
+.m-b-0-minus {
+  margin-bottom: 0px !important;
+}
+
+.m-b-10-minus {
+  margin-bottom: -10px !important;
+}
+
+.m-b-20-minus {
+  margin-bottom: -20px !important;
+}
+
+.m-b-30-minus {
+  margin-bottom: -30px !important;
+}
+
+.m-b-40-minus {
+  margin-bottom: -40px !important;
+}
+
+.m-b-50-minus {
+  margin-bottom: -50px !important;
+}
+
+.m-b-60-minus {
+  margin-bottom: -60px !important;
+}
+
+.m-b-70-minus {
+  margin-bottom: -70px !important;
+}
+
+.m-b-80-minus {
+  margin-bottom: -80px !important;
+}
+
+.m-b-90-minus {
+  margin-bottom: -90px !important;
+}
+
+.m-b-100-minus {
+  margin-bottom: -100px !important;
+}
+
+.m-b-110-minus {
+  margin-bottom: -110px !important;
+}
+
+.m-b-120-minus {
+  margin-bottom: -120px !important;
+}
+
+.m-b-130-minus {
+  margin-bottom: -130px !important;
+}
+
+.m-b-140-minus {
+  margin-bottom: -140px !important;
+}
+
+.m-b-150-minus {
+  margin-bottom: -150px !important;
+}
+
+.m-b-160-minus {
+  margin-bottom: -160px !important;
+}
+
+.m-b-170-minus {
+  margin-bottom: -170px !important;
+}
+
+.m-b-180-minus {
+  margin-bottom: -180px !important;
+}
+
+.m-b-190-minus {
+  margin-bottom: -190px !important;
+}
+
+.m-b-200-minus {
+  margin-bottom: -200px !important;
+}
+
+.m-b-210-minus {
+  margin-bottom: -210px !important;
+}
+
+.m-b-220-minus {
+  margin-bottom: -220px !important;
+}
+
+.m-b-230-minus {
+  margin-bottom: -230px !important;
+}
+
+.m-b-240-minus {
+  margin-bottom: -240px !important;
+}
+
+.m-b-250-minus {
+  margin-bottom: -250px !important;
+}
+
+.m-b-260-minus {
+  margin-bottom: -260px !important;
+}
+
+.m-b-270-minus {
+  margin-bottom: -270px !important;
+}
+
+.m-b-280-minus {
+  margin-bottom: -280px !important;
+}
+
+.m-b-290-minus {
+  margin-bottom: -290px !important;
+}
+
+.m-b-300-minus {
+  margin-bottom: -300px !important;
+}
+
+.m-b-310-minus {
+  margin-bottom: -310px !important;
+}
+
+.m-b-320-minus {
+  margin-bottom: -320px !important;
+}
+
+.m-b-330-minus {
+  margin-bottom: -330px !important;
+}
+
+.m-b-340-minus {
+  margin-bottom: -340px !important;
+}
+
+.m-b-350-minus {
+  margin-bottom: -350px !important;
+}
+
+.m-b-360-minus {
+  margin-bottom: -360px !important;
+}
+
+.m-b-370-minus {
+  margin-bottom: -370px !important;
+}
+
+.m-b-380-minus {
+  margin-bottom: -380px !important;
+}
+
+.m-b-390-minus {
+  margin-bottom: -390px !important;
+}
+
+.m-b-400-minus {
+  margin-bottom: -400px !important;
+}
+
+.m-b-410-minus {
+  margin-bottom: -410px !important;
+}
+
+.m-b-420-minus {
+  margin-bottom: -420px !important;
+}
+
+.m-b-430-minus {
+  margin-bottom: -430px !important;
+}
+
+.m-b-440-minus {
+  margin-bottom: -440px !important;
+}
+
+.m-b-450-minus {
+  margin-bottom: -450px !important;
+}
+
+.m-b-460-minus {
+  margin-bottom: -460px !important;
+}
+
+.m-b-470-minus {
+  margin-bottom: -470px !important;
+}
+
+.m-b-480-minus {
+  margin-bottom: -480px !important;
+}
+
+.m-b-490-minus {
+  margin-bottom: -490px !important;
+}
+
+.m-b-500-minus {
+  margin-bottom: -500px !important;
+}
+
+.m-b-510-minus {
+  margin-bottom: -510px !important;
+}
+
+.m-b-520-minus {
+  margin-bottom: -520px !important;
+}
+
+.m-b-530-minus {
+  margin-bottom: -530px !important;
+}
+
+.m-b-540-minus {
+  margin-bottom: -540px !important;
+}
+
+.m-b-550-minus {
+  margin-bottom: -550px !important;
+}
+
+.m-b-560-minus {
+  margin-bottom: -560px !important;
+}
+
+.m-b-570-minus {
+  margin-bottom: -570px !important;
+}
+
+.m-b-580-minus {
+  margin-bottom: -580px !important;
+}
+
+.m-b-590-minus {
+  margin-bottom: -590px !important;
+}
+
+.m-b-600-minus {
+  margin-bottom: -600px !important;
+}
+
+.m-b-610-minus {
+  margin-bottom: -610px !important;
+}
+
+.m-b-620-minus {
+  margin-bottom: -620px !important;
+}
+
+.m-b-630-minus {
+  margin-bottom: -630px !important;
+}
+
+.m-b-640-minus {
+  margin-bottom: -640px !important;
+}
+
+.m-b-650-minus {
+  margin-bottom: -650px !important;
+}
+
+.m-b-660-minus {
+  margin-bottom: -660px !important;
+}
+
+.m-b-670-minus {
+  margin-bottom: -670px !important;
+}
+
+.m-b-680-minus {
+  margin-bottom: -680px !important;
+}
+
+.m-b-690-minus {
+  margin-bottom: -690px !important;
+}
+
+.m-b-700-minus {
+  margin-bottom: -700px !important;
+}
+
+.m-b-710-minus {
+  margin-bottom: -710px !important;
+}
+
+.m-b-720-minus {
+  margin-bottom: -720px !important;
+}
+
+.m-b-730-minus {
+  margin-bottom: -730px !important;
+}
+
+.m-b-740-minus {
+  margin-bottom: -740px !important;
+}
+
+.m-b-750-minus {
+  margin-bottom: -750px !important;
+}
+
+.m-b-760-minus {
+  margin-bottom: -760px !important;
+}
+
+.m-b-770-minus {
+  margin-bottom: -770px !important;
+}
+
+.m-b-780-minus {
+  margin-bottom: -780px !important;
+}
+
+.m-b-790-minus {
+  margin-bottom: -790px !important;
+}
+
+.m-b-800-minus {
+  margin-bottom: -800px !important;
+}
+
+.m-b-810-minus {
+  margin-bottom: -810px !important;
+}
+
+.m-b-820-minus {
+  margin-bottom: -820px !important;
+}
+
+.m-b-830-minus {
+  margin-bottom: -830px !important;
+}
+
+.m-b-840-minus {
+  margin-bottom: -840px !important;
+}
+
+.m-b-850-minus {
+  margin-bottom: -850px !important;
+}
+
+.m-b-860-minus {
+  margin-bottom: -860px !important;
+}
+
+.m-b-870-minus {
+  margin-bottom: -870px !important;
+}
+
+.m-b-880-minus {
+  margin-bottom: -880px !important;
+}
+
+.m-b-890-minus {
+  margin-bottom: -890px !important;
+}
+
+.m-b-900-minus {
+  margin-bottom: -900px !important;
+}
+
+.m-b-910-minus {
+  margin-bottom: -910px !important;
+}
+
+.m-b-920-minus {
+  margin-bottom: -920px !important;
+}
+
+.m-b-930-minus {
+  margin-bottom: -930px !important;
+}
+
+.m-b-940-minus {
+  margin-bottom: -940px !important;
+}
+
+.m-b-950-minus {
+  margin-bottom: -950px !important;
+}
+
+.m-b-960-minus {
+  margin-bottom: -960px !important;
+}
+
+.m-b-970-minus {
+  margin-bottom: -970px !important;
+}
+
+.m-b-980-minus {
+  margin-bottom: -980px !important;
+}
+
+.m-b-990-minus {
+  margin-bottom: -990px !important;
+}
+
+.m-b-1000-minus {
+  margin-bottom: -1000px !important;
+}
+
+.m-l-0-minus {
+  margin-left: 0px !important;
+}
+
+.m-l-10-minus {
+  margin-left: -10px !important;
+}
+
+.m-l-20-minus {
+  margin-left: -20px !important;
+}
+
+.m-l-30-minus {
+  margin-left: -30px !important;
+}
+
+.m-l-40-minus {
+  margin-left: -40px !important;
+}
+
+.m-l-50-minus {
+  margin-left: -50px !important;
+}
+
+.m-l-60-minus {
+  margin-left: -60px !important;
+}
+
+.m-l-70-minus {
+  margin-left: -70px !important;
+}
+
+.m-l-80-minus {
+  margin-left: -80px !important;
+}
+
+.m-l-90-minus {
+  margin-left: -90px !important;
+}
+
+.m-l-100-minus {
+  margin-left: -100px !important;
+}
+
+.m-l-110-minus {
+  margin-left: -110px !important;
+}
+
+.m-l-120-minus {
+  margin-left: -120px !important;
+}
+
+.m-l-130-minus {
+  margin-left: -130px !important;
+}
+
+.m-l-140-minus {
+  margin-left: -140px !important;
+}
+
+.m-l-150-minus {
+  margin-left: -150px !important;
+}
+
+.m-l-160-minus {
+  margin-left: -160px !important;
+}
+
+.m-l-170-minus {
+  margin-left: -170px !important;
+}
+
+.m-l-180-minus {
+  margin-left: -180px !important;
+}
+
+.m-l-190-minus {
+  margin-left: -190px !important;
+}
+
+.m-l-200-minus {
+  margin-left: -200px !important;
+}
+
+.m-l-210-minus {
+  margin-left: -210px !important;
+}
+
+.m-l-220-minus {
+  margin-left: -220px !important;
+}
+
+.m-l-230-minus {
+  margin-left: -230px !important;
+}
+
+.m-l-240-minus {
+  margin-left: -240px !important;
+}
+
+.m-l-250-minus {
+  margin-left: -250px !important;
+}
+
+.m-l-260-minus {
+  margin-left: -260px !important;
+}
+
+.m-l-270-minus {
+  margin-left: -270px !important;
+}
+
+.m-l-280-minus {
+  margin-left: -280px !important;
+}
+
+.m-l-290-minus {
+  margin-left: -290px !important;
+}
+
+.m-l-300-minus {
+  margin-left: -300px !important;
+}
+
+.m-l-310-minus {
+  margin-left: -310px !important;
+}
+
+.m-l-320-minus {
+  margin-left: -320px !important;
+}
+
+.m-l-330-minus {
+  margin-left: -330px !important;
+}
+
+.m-l-340-minus {
+  margin-left: -340px !important;
+}
+
+.m-l-350-minus {
+  margin-left: -350px !important;
+}
+
+.m-l-360-minus {
+  margin-left: -360px !important;
+}
+
+.m-l-370-minus {
+  margin-left: -370px !important;
+}
+
+.m-l-380-minus {
+  margin-left: -380px !important;
+}
+
+.m-l-390-minus {
+  margin-left: -390px !important;
+}
+
+.m-l-400-minus {
+  margin-left: -400px !important;
+}
+
+.m-l-410-minus {
+  margin-left: -410px !important;
+}
+
+.m-l-420-minus {
+  margin-left: -420px !important;
+}
+
+.m-l-430-minus {
+  margin-left: -430px !important;
+}
+
+.m-l-440-minus {
+  margin-left: -440px !important;
+}
+
+.m-l-450-minus {
+  margin-left: -450px !important;
+}
+
+.m-l-460-minus {
+  margin-left: -460px !important;
+}
+
+.m-l-470-minus {
+  margin-left: -470px !important;
+}
+
+.m-l-480-minus {
+  margin-left: -480px !important;
+}
+
+.m-l-490-minus {
+  margin-left: -490px !important;
+}
+
+.m-l-500-minus {
+  margin-left: -500px !important;
+}
+
+.m-l-510-minus {
+  margin-left: -510px !important;
+}
+
+.m-l-520-minus {
+  margin-left: -520px !important;
+}
+
+.m-l-530-minus {
+  margin-left: -530px !important;
+}
+
+.m-l-540-minus {
+  margin-left: -540px !important;
+}
+
+.m-l-550-minus {
+  margin-left: -550px !important;
+}
+
+.m-l-560-minus {
+  margin-left: -560px !important;
+}
+
+.m-l-570-minus {
+  margin-left: -570px !important;
+}
+
+.m-l-580-minus {
+  margin-left: -580px !important;
+}
+
+.m-l-590-minus {
+  margin-left: -590px !important;
+}
+
+.m-l-600-minus {
+  margin-left: -600px !important;
+}
+
+.m-l-610-minus {
+  margin-left: -610px !important;
+}
+
+.m-l-620-minus {
+  margin-left: -620px !important;
+}
+
+.m-l-630-minus {
+  margin-left: -630px !important;
+}
+
+.m-l-640-minus {
+  margin-left: -640px !important;
+}
+
+.m-l-650-minus {
+  margin-left: -650px !important;
+}
+
+.m-l-660-minus {
+  margin-left: -660px !important;
+}
+
+.m-l-670-minus {
+  margin-left: -670px !important;
+}
+
+.m-l-680-minus {
+  margin-left: -680px !important;
+}
+
+.m-l-690-minus {
+  margin-left: -690px !important;
+}
+
+.m-l-700-minus {
+  margin-left: -700px !important;
+}
+
+.m-l-710-minus {
+  margin-left: -710px !important;
+}
+
+.m-l-720-minus {
+  margin-left: -720px !important;
+}
+
+.m-l-730-minus {
+  margin-left: -730px !important;
+}
+
+.m-l-740-minus {
+  margin-left: -740px !important;
+}
+
+.m-l-750-minus {
+  margin-left: -750px !important;
+}
+
+.m-l-760-minus {
+  margin-left: -760px !important;
+}
+
+.m-l-770-minus {
+  margin-left: -770px !important;
+}
+
+.m-l-780-minus {
+  margin-left: -780px !important;
+}
+
+.m-l-790-minus {
+  margin-left: -790px !important;
+}
+
+.m-l-800-minus {
+  margin-left: -800px !important;
+}
+
+.m-l-810-minus {
+  margin-left: -810px !important;
+}
+
+.m-l-820-minus {
+  margin-left: -820px !important;
+}
+
+.m-l-830-minus {
+  margin-left: -830px !important;
+}
+
+.m-l-840-minus {
+  margin-left: -840px !important;
+}
+
+.m-l-850-minus {
+  margin-left: -850px !important;
+}
+
+.m-l-860-minus {
+  margin-left: -860px !important;
+}
+
+.m-l-870-minus {
+  margin-left: -870px !important;
+}
+
+.m-l-880-minus {
+  margin-left: -880px !important;
+}
+
+.m-l-890-minus {
+  margin-left: -890px !important;
+}
+
+.m-l-900-minus {
+  margin-left: -900px !important;
+}
+
+.m-l-910-minus {
+  margin-left: -910px !important;
+}
+
+.m-l-920-minus {
+  margin-left: -920px !important;
+}
+
+.m-l-930-minus {
+  margin-left: -930px !important;
+}
+
+.m-l-940-minus {
+  margin-left: -940px !important;
+}
+
+.m-l-950-minus {
+  margin-left: -950px !important;
+}
+
+.m-l-960-minus {
+  margin-left: -960px !important;
+}
+
+.m-l-970-minus {
+  margin-left: -970px !important;
+}
+
+.m-l-980-minus {
+  margin-left: -980px !important;
+}
+
+.m-l-990-minus {
+  margin-left: -990px !important;
+}
+
+.m-l-1000-minus {
+  margin-left: -1000px !important;
+}
+
+.p-t-b-0 {
+  padding-top: 0px !important;
+  padding-bottom: 0px !important;
+}
+
+.p-t-b-5 {
+  padding-top: 5px !important;
+  padding-bottom: 5px !important;
+}
+
+.p-t-b-10 {
+  padding-top: 10px !important;
+  padding-bottom: 10px !important;
+}
+
+.p-t-b-15 {
+  padding-top: 15px !important;
+  padding-bottom: 15px !important;
+}
+
+.p-t-b-20 {
+  padding-top: 20px !important;
+  padding-bottom: 20px !important;
+}
+
+.p-t-b-25 {
+  padding-top: 25px !important;
+  padding-bottom: 25px !important;
+}
+
+.p-t-b-30 {
+  padding-top: 30px !important;
+  padding-bottom: 30px !important;
+}
+
+.p-t-b-35 {
+  padding-top: 35px !important;
+  padding-bottom: 35px !important;
+}
+
+.p-t-b-40 {
+  padding-top: 40px !important;
+  padding-bottom: 40px !important;
+}
+
+.p-t-b-45 {
+  padding-top: 45px !important;
+  padding-bottom: 45px !important;
+}
+
+.p-t-b-50 {
+  padding-top: 50px !important;
+  padding-bottom: 50px !important;
+}
+
+.p-l-r-0 {
+  padding-left: 0px !important;
+  padding-right: 0px !important;
+}
+
+.p-l-r-5 {
+  padding-left: 5px !important;
+  padding-right: 5px !important;
+}
+
+.p-l-r-10 {
+  padding-left: 10px !important;
+  padding-right: 10px !important;
+}
+
+.p-l-r-15 {
+  padding-left: 15px !important;
+  padding-right: 15px !important;
+}
+
+.p-l-r-20 {
+  padding-left: 20px !important;
+  padding-right: 20px !important;
+}
+
+.p-l-r-25 {
+  padding-left: 25px !important;
+  padding-right: 25px !important;
+}
+
+.p-l-r-30 {
+  padding-left: 30px !important;
+  padding-right: 30px !important;
+}
+
+.p-l-r-35 {
+  padding-left: 35px !important;
+  padding-right: 35px !important;
+}
+
+.p-l-r-40 {
+  padding-left: 40px !important;
+  padding-right: 40px !important;
+}
+
+.p-l-r-45 {
+  padding-left: 45px !important;
+  padding-right: 45px !important;
+}
+
+.p-l-r-50 {
+  padding-left: 50px !important;
+  padding-right: 50px !important;
+}
+
+.p-0 {
+  padding: 0px !important;
+}
+
+.p-5 {
+  padding: 5px !important;
+}
+
+.p-10 {
+  padding: 10px !important;
+}
+
+.p-15 {
+  padding: 15px !important;
+}
+
+.p-20 {
+  padding: 20px !important;
+}
+
+.p-25 {
+  padding: 25px !important;
+}
+
+.p-30 {
+  padding: 30px !important;
+}
+
+.p-35 {
+  padding: 35px !important;
+}
+
+.p-40 {
+  padding: 40px !important;
+}
+
+.p-45 {
+  padding: 45px !important;
+}
+
+.p-50 {
+  padding: 50px !important;
+}
+
+.p-t-0 {
+  padding-top: 0px !important;
+}
+
+.p-t-5 {
+  padding-top: 5px !important;
+}
+
+.p-t-10 {
+  padding-top: 10px !important;
+}
+
+.p-t-15 {
+  padding-top: 15px !important;
+}
+
+.p-t-20 {
+  padding-top: 20px !important;
+}
+
+.p-t-25 {
+  padding-top: 25px !important;
+}
+
+.p-t-30 {
+  padding-top: 30px !important;
+}
+
+.p-t-35 {
+  padding-top: 35px !important;
+}
+
+.p-t-40 {
+  padding-top: 40px !important;
+}
+
+.p-t-45 {
+  padding-top: 45px !important;
+}
+
+.p-t-50 {
+  padding-top: 50px !important;
+}
+
+.p-t-55 {
+  padding-top: 55px !important;
+}
+
+.p-t-60 {
+  padding-top: 60px !important;
+}
+
+.p-t-65 {
+  padding-top: 65px !important;
+}
+
+.p-t-70 {
+  padding-top: 70px !important;
+}
+
+.p-t-75 {
+  padding-top: 75px !important;
+}
+
+.p-t-80 {
+  padding-top: 80px !important;
+}
+
+.p-t-85 {
+  padding-top: 85px !important;
+}
+
+.p-t-90 {
+  padding-top: 90px !important;
+}
+
+.p-t-95 {
+  padding-top: 95px !important;
+}
+
+.p-t-100 {
+  padding-top: 100px !important;
+}
+
+.p-t-105 {
+  padding-top: 105px !important;
+}
+
+.p-t-110 {
+  padding-top: 110px !important;
+}
+
+.p-t-115 {
+  padding-top: 115px !important;
+}
+
+.p-t-120 {
+  padding-top: 120px !important;
+}
+
+.p-t-125 {
+  padding-top: 125px !important;
+}
+
+.p-t-130 {
+  padding-top: 130px !important;
+}
+
+.p-t-135 {
+  padding-top: 135px !important;
+}
+
+.p-t-140 {
+  padding-top: 140px !important;
+}
+
+.p-t-145 {
+  padding-top: 145px !important;
+}
+
+.p-t-150 {
+  padding-top: 150px !important;
+}
+
+.p-r-0 {
+  padding-right: 0px !important;
+}
+
+.p-r-5 {
+  padding-right: 5px !important;
+}
+
+.p-r-10 {
+  padding-right: 10px !important;
+}
+
+.p-r-15 {
+  padding-right: 15px !important;
+}
+
+.p-r-20 {
+  padding-right: 20px !important;
+}
+
+.p-r-25 {
+  padding-right: 25px !important;
+}
+
+.p-r-30 {
+  padding-right: 30px !important;
+}
+
+.p-r-35 {
+  padding-right: 35px !important;
+}
+
+.p-r-40 {
+  padding-right: 40px !important;
+}
+
+.p-r-45 {
+  padding-right: 45px !important;
+}
+
+.p-r-50 {
+  padding-right: 50px !important;
+}
+
+.p-r-55 {
+  padding-right: 55px !important;
+}
+
+.p-r-60 {
+  padding-right: 60px !important;
+}
+
+.p-r-65 {
+  padding-right: 65px !important;
+}
+
+.p-r-70 {
+  padding-right: 70px !important;
+}
+
+.p-r-75 {
+  padding-right: 75px !important;
+}
+
+.p-r-80 {
+  padding-right: 80px !important;
+}
+
+.p-r-85 {
+  padding-right: 85px !important;
+}
+
+.p-r-90 {
+  padding-right: 90px !important;
+}
+
+.p-r-95 {
+  padding-right: 95px !important;
+}
+
+.p-r-100 {
+  padding-right: 100px !important;
+}
+
+.p-r-105 {
+  padding-right: 105px !important;
+}
+
+.p-r-110 {
+  padding-right: 110px !important;
+}
+
+.p-r-115 {
+  padding-right: 115px !important;
+}
+
+.p-r-120 {
+  padding-right: 120px !important;
+}
+
+.p-r-125 {
+  padding-right: 125px !important;
+}
+
+.p-r-130 {
+  padding-right: 130px !important;
+}
+
+.p-r-135 {
+  padding-right: 135px !important;
+}
+
+.p-r-140 {
+  padding-right: 140px !important;
+}
+
+.p-r-145 {
+  padding-right: 145px !important;
+}
+
+.p-r-150 {
+  padding-right: 150px !important;
+}
+
+.p-b-0 {
+  padding-bottom: 0px !important;
+}
+
+.p-b-5 {
+  padding-bottom: 5px !important;
+}
+
+.p-b-10 {
+  padding-bottom: 10px !important;
+}
+
+.p-b-15 {
+  padding-bottom: 15px !important;
+}
+
+.p-b-20 {
+  padding-bottom: 20px !important;
+}
+
+.p-b-25 {
+  padding-bottom: 25px !important;
+}
+
+.p-b-30 {
+  padding-bottom: 30px !important;
+}
+
+.p-b-35 {
+  padding-bottom: 35px !important;
+}
+
+.p-b-40 {
+  padding-bottom: 40px !important;
+}
+
+.p-b-45 {
+  padding-bottom: 45px !important;
+}
+
+.p-b-50 {
+  padding-bottom: 50px !important;
+}
+
+.p-b-55 {
+  padding-bottom: 55px !important;
+}
+
+.p-b-60 {
+  padding-bottom: 60px !important;
+}
+
+.p-b-65 {
+  padding-bottom: 65px !important;
+}
+
+.p-b-70 {
+  padding-bottom: 70px !important;
+}
+
+.p-b-75 {
+  padding-bottom: 75px !important;
+}
+
+.p-b-80 {
+  padding-bottom: 80px !important;
+}
+
+.p-b-85 {
+  padding-bottom: 85px !important;
+}
+
+.p-b-90 {
+  padding-bottom: 90px !important;
+}
+
+.p-b-95 {
+  padding-bottom: 95px !important;
+}
+
+.p-b-100 {
+  padding-bottom: 100px !important;
+}
+
+.p-b-105 {
+  padding-bottom: 105px !important;
+}
+
+.p-b-110 {
+  padding-bottom: 110px !important;
+}
+
+.p-b-115 {
+  padding-bottom: 115px !important;
+}
+
+.p-b-120 {
+  padding-bottom: 120px !important;
+}
+
+.p-b-125 {
+  padding-bottom: 125px !important;
+}
+
+.p-b-130 {
+  padding-bottom: 130px !important;
+}
+
+.p-b-135 {
+  padding-bottom: 135px !important;
+}
+
+.p-b-140 {
+  padding-bottom: 140px !important;
+}
+
+.p-b-145 {
+  padding-bottom: 145px !important;
+}
+
+.p-b-150 {
+  padding-bottom: 150px !important;
+}
+
+.p-l-0 {
+  padding-left: 0px !important;
+}
+
+.p-l-5 {
+  padding-left: 5px !important;
+}
+
+.p-l-10 {
+  padding-left: 10px !important;
+}
+
+.p-l-15 {
+  padding-left: 15px !important;
+}
+
+.p-l-20 {
+  padding-left: 20px !important;
+}
+
+.p-l-25 {
+  padding-left: 25px !important;
+}
+
+.p-l-30 {
+  padding-left: 30px !important;
+}
+
+.p-l-35 {
+  padding-left: 35px !important;
+}
+
+.p-l-40 {
+  padding-left: 40px !important;
+}
+
+.p-l-45 {
+  padding-left: 45px !important;
+}
+
+.p-l-50 {
+  padding-left: 50px !important;
+}
+
+.p-l-55 {
+  padding-left: 55px !important;
+}
+
+.p-l-60 {
+  padding-left: 60px !important;
+}
+
+.p-l-65 {
+  padding-left: 65px !important;
+}
+
+.p-l-70 {
+  padding-left: 70px !important;
+}
+
+.p-l-75 {
+  padding-left: 75px !important;
+}
+
+.p-l-80 {
+  padding-left: 80px !important;
+}
+
+.p-l-85 {
+  padding-left: 85px !important;
+}
+
+.p-l-90 {
+  padding-left: 90px !important;
+}
+
+.p-l-95 {
+  padding-left: 95px !important;
+}
+
+.p-l-100 {
+  padding-left: 100px !important;
+}
+
+.p-l-105 {
+  padding-left: 105px !important;
+}
+
+.p-l-110 {
+  padding-left: 110px !important;
+}
+
+.p-l-115 {
+  padding-left: 115px !important;
+}
+
+.p-l-120 {
+  padding-left: 120px !important;
+}
+
+.p-l-125 {
+  padding-left: 125px !important;
+}
+
+.p-l-130 {
+  padding-left: 130px !important;
+}
+
+.p-l-135 {
+  padding-left: 135px !important;
+}
+
+.p-l-140 {
+  padding-left: 140px !important;
+}
+
+.p-l-145 {
+  padding-left: 145px !important;
+}
+
+.p-l-150 {
+  padding-left: 150px !important;
+}
+
+.opacity-0 {
+  opacity: 0 !important;
+}
+
+.opacity-1 {
+  opacity: 0.1 !important;
+}
+
+.opacity-2 {
+  opacity: 0.2 !important;
+}
+
+.opacity-3 {
+  opacity: 0.3 !important;
+}
+
+.opacity-4 {
+  opacity: 0.4 !important;
+}
+
+.opacity-5 {
+  opacity: 0.5 !important;
+}
+
+.opacity-6 {
+  opacity: 0.6 !important;
+}
+
+.opacity-7 {
+  opacity: 0.7 !important;
+}
+
+.opacity-8 {
+  opacity: 0.8 !important;
+}
+
+.opacity-9 {
+  opacity: 0.9 !important;
+}
+
+.font-size-10 {
+  font-size: 10px !important;
+}
+
+.font-size-11 {
+  font-size: 11px !important;
+}
+
+.font-size-12 {
+  font-size: 12px !important;
+}
+
+.font-size-13 {
+  font-size: 13px !important;
+}
+
+.font-size-14 {
+  font-size: 14px !important;
+}
+
+.font-size-15 {
+  font-size: 15px !important;
+}
+
+.font-size-16 {
+  font-size: 16px !important;
+}
+
+.font-size-17 {
+  font-size: 17px !important;
+}
+
+.font-size-18 {
+  font-size: 18px !important;
+}
+
+.font-size-19 {
+  font-size: 19px !important;
+}
+
+.font-size-20 {
+  font-size: 20px !important;
+}
+
+.font-size-21 {
+  font-size: 21px !important;
+}
+
+.font-size-22 {
+  font-size: 22px !important;
+}
+
+.font-size-23 {
+  font-size: 23px !important;
+}
+
+.font-size-24 {
+  font-size: 24px !important;
+}
+
+.font-size-25 {
+  font-size: 25px !important;
+}
+
+.font-size-26 {
+  font-size: 26px !important;
+}
+
+.font-size-27 {
+  font-size: 27px !important;
+}
+
+.font-size-28 {
+  font-size: 28px !important;
+}
+
+.font-size-29 {
+  font-size: 29px !important;
+}
+
+.font-size-30 {
+  font-size: 30px !important;
+}
+
+.font-size-31 {
+  font-size: 31px !important;
+}
+
+.font-size-32 {
+  font-size: 32px !important;
+}
+
+.font-size-33 {
+  font-size: 33px !important;
+}
+
+.font-size-34 {
+  font-size: 34px !important;
+}
+
+.font-size-35 {
+  font-size: 35px !important;
+}
+
+.font-size-36 {
+  font-size: 36px !important;
+}
+
+.font-size-37 {
+  font-size: 37px !important;
+}
+
+.font-size-38 {
+  font-size: 38px !important;
+}
+
+.font-size-39 {
+  font-size: 39px !important;
+}
+
+.font-size-40 {
+  font-size: 40px !important;
+}
+
+.font-size-41 {
+  font-size: 41px !important;
+}
+
+.font-size-42 {
+  font-size: 42px !important;
+}
+
+.font-size-43 {
+  font-size: 43px !important;
+}
+
+.font-size-44 {
+  font-size: 44px !important;
+}
+
+.font-size-45 {
+  font-size: 45px !important;
+}
+
+.font-size-46 {
+  font-size: 46px !important;
+}
+
+.font-size-47 {
+  font-size: 47px !important;
+}
+
+.font-size-48 {
+  font-size: 48px !important;
+}
+
+.font-size-49 {
+  font-size: 49px !important;
+}
+
+.font-size-50 {
+  font-size: 50px !important;
+}
+
+.line-height-0 {
+  line-height: 0px !important;
+}
+
+.line-height-1 {
+  line-height: 1px !important;
+}
+
+.line-height-2 {
+  line-height: 2px !important;
+}
+
+.line-height-3 {
+  line-height: 3px !important;
+}
+
+.line-height-4 {
+  line-height: 4px !important;
+}
+
+.line-height-5 {
+  line-height: 5px !important;
+}
+
+.line-height-6 {
+  line-height: 6px !important;
+}
+
+.line-height-7 {
+  line-height: 7px !important;
+}
+
+.line-height-8 {
+  line-height: 8px !important;
+}
+
+.line-height-9 {
+  line-height: 9px !important;
+}
+
+.line-height-10 {
+  line-height: 10px !important;
+}
+
+.line-height-11 {
+  line-height: 11px !important;
+}
+
+.line-height-12 {
+  line-height: 12px !important;
+}
+
+.line-height-13 {
+  line-height: 13px !important;
+}
+
+.line-height-14 {
+  line-height: 14px !important;
+}
+
+.line-height-15 {
+  line-height: 15px !important;
+}
+
+.line-height-16 {
+  line-height: 16px !important;
+}
+
+.line-height-17 {
+  line-height: 17px !important;
+}
+
+.line-height-18 {
+  line-height: 18px !important;
+}
+
+.line-height-19 {
+  line-height: 19px !important;
+}
+
+.line-height-20 {
+  line-height: 20px !important;
+}
+
+.line-height-21 {
+  line-height: 21px !important;
+}
+
+.line-height-22 {
+  line-height: 22px !important;
+}
+
+.line-height-23 {
+  line-height: 23px !important;
+}
+
+.line-height-24 {
+  line-height: 24px !important;
+}
+
+.line-height-25 {
+  line-height: 25px !important;
+}
+
+.line-height-26 {
+  line-height: 26px !important;
+}
+
+.line-height-27 {
+  line-height: 27px !important;
+}
+
+.line-height-28 {
+  line-height: 28px !important;
+}
+
+.line-height-29 {
+  line-height: 29px !important;
+}
+
+.line-height-30 {
+  line-height: 30px !important;
+}
+
+.line-height-31 {
+  line-height: 31px !important;
+}
+
+.line-height-32 {
+  line-height: 32px !important;
+}
+
+.line-height-33 {
+  line-height: 33px !important;
+}
+
+.line-height-34 {
+  line-height: 34px !important;
+}
+
+.line-height-35 {
+  line-height: 35px !important;
+}
+
+.line-height-36 {
+  line-height: 36px !important;
+}
+
+.line-height-37 {
+  line-height: 37px !important;
+}
+
+.line-height-38 {
+  line-height: 38px !important;
+}
+
+.line-height-39 {
+  line-height: 39px !important;
+}
+
+.line-height-40 {
+  line-height: 40px !important;
+}
+
+.line-height-41 {
+  line-height: 41px !important;
+}
+
+.line-height-42 {
+  line-height: 42px !important;
+}
+
+.line-height-43 {
+  line-height: 43px !important;
+}
+
+.line-height-44 {
+  line-height: 44px !important;
+}
+
+.line-height-45 {
+  line-height: 45px !important;
+}
+
+.line-height-46 {
+  line-height: 46px !important;
+}
+
+.line-height-47 {
+  line-height: 47px !important;
+}
+
+.line-height-48 {
+  line-height: 48px !important;
+}
+
+.line-height-49 {
+  line-height: 49px !important;
+}
+
+.line-height-50 {
+  line-height: 50px !important;
+}
+
+.width-10 {
+  width: 10px !important;
+}
+
+.width-11 {
+  width: 11px !important;
+}
+
+.width-12 {
+  width: 12px !important;
+}
+
+.width-13 {
+  width: 13px !important;
+}
+
+.width-14 {
+  width: 14px !important;
+}
+
+.width-15 {
+  width: 15px !important;
+}
+
+.width-16 {
+  width: 16px !important;
+}
+
+.width-17 {
+  width: 17px !important;
+}
+
+.width-18 {
+  width: 18px !important;
+}
+
+.width-19 {
+  width: 19px !important;
+}
+
+.width-20 {
+  width: 20px !important;
+}
+
+.width-21 {
+  width: 21px !important;
+}
+
+.width-22 {
+  width: 22px !important;
+}
+
+.width-23 {
+  width: 23px !important;
+}
+
+.width-24 {
+  width: 24px !important;
+}
+
+.width-25 {
+  width: 25px !important;
+}
+
+.width-26 {
+  width: 26px !important;
+}
+
+.width-27 {
+  width: 27px !important;
+}
+
+.width-28 {
+  width: 28px !important;
+}
+
+.width-29 {
+  width: 29px !important;
+}
+
+.width-30 {
+  width: 30px !important;
+}
+
+.width-31 {
+  width: 31px !important;
+}
+
+.width-32 {
+  width: 32px !important;
+}
+
+.width-33 {
+  width: 33px !important;
+}
+
+.width-34 {
+  width: 34px !important;
+}
+
+.width-35 {
+  width: 35px !important;
+}
+
+.width-36 {
+  width: 36px !important;
+}
+
+.width-37 {
+  width: 37px !important;
+}
+
+.width-38 {
+  width: 38px !important;
+}
+
+.width-39 {
+  width: 39px !important;
+}
+
+.width-40 {
+  width: 40px !important;
+}
+
+.width-41 {
+  width: 41px !important;
+}
+
+.width-42 {
+  width: 42px !important;
+}
+
+.width-43 {
+  width: 43px !important;
+}
+
+.width-44 {
+  width: 44px !important;
+}
+
+.width-45 {
+  width: 45px !important;
+}
+
+.width-46 {
+  width: 46px !important;
+}
+
+.width-47 {
+  width: 47px !important;
+}
+
+.width-48 {
+  width: 48px !important;
+}
+
+.width-49 {
+  width: 49px !important;
+}
+
+.width-50 {
+  width: 50px !important;
+}
+
+.height-10 {
+  height: 10px !important;
+}
+
+.height-11 {
+  height: 11px !important;
+}
+
+.height-12 {
+  height: 12px !important;
+}
+
+.height-13 {
+  height: 13px !important;
+}
+
+.height-14 {
+  height: 14px !important;
+}
+
+.height-15 {
+  height: 15px !important;
+}
+
+.height-16 {
+  height: 16px !important;
+}
+
+.height-17 {
+  height: 17px !important;
+}
+
+.height-18 {
+  height: 18px !important;
+}
+
+.height-19 {
+  height: 19px !important;
+}
+
+.height-20 {
+  height: 20px !important;
+}
+
+.height-21 {
+  height: 21px !important;
+}
+
+.height-22 {
+  height: 22px !important;
+}
+
+.height-23 {
+  height: 23px !important;
+}
+
+.height-24 {
+  height: 24px !important;
+}
+
+.height-25 {
+  height: 25px !important;
+}
+
+.height-26 {
+  height: 26px !important;
+}
+
+.height-27 {
+  height: 27px !important;
+}
+
+.height-28 {
+  height: 28px !important;
+}
+
+.height-29 {
+  height: 29px !important;
+}
+
+.height-30 {
+  height: 30px !important;
+}
+
+.height-31 {
+  height: 31px !important;
+}
+
+.height-32 {
+  height: 32px !important;
+}
+
+.height-33 {
+  height: 33px !important;
+}
+
+.height-34 {
+  height: 34px !important;
+}
+
+.height-35 {
+  height: 35px !important;
+}
+
+.height-36 {
+  height: 36px !important;
+}
+
+.height-37 {
+  height: 37px !important;
+}
+
+.height-38 {
+  height: 38px !important;
+}
+
+.height-39 {
+  height: 39px !important;
+}
+
+.height-40 {
+  height: 40px !important;
+}
+
+.height-41 {
+  height: 41px !important;
+}
+
+.height-42 {
+  height: 42px !important;
+}
+
+.height-43 {
+  height: 43px !important;
+}
+
+.height-44 {
+  height: 44px !important;
+}
+
+.height-45 {
+  height: 45px !important;
+}
+
+.height-46 {
+  height: 46px !important;
+}
+
+.height-47 {
+  height: 47px !important;
+}
+
+.height-48 {
+  height: 48px !important;
+}
+
+.height-49 {
+  height: 49px !important;
+}
+
+.height-50 {
+  height: 50px !important;
+}
+
+.h-100-vh {
+  height: 100vh;
+}
+
+body {
+  font-family: "Inter", sans-serif;
+  position: relative;
+  background-color: #f8fafb;
+  font-size: 15px;
+  color: #505050;
+}
+body.no-scroll {
+  overflow: hidden;
+}
+
+.preloader {
+  position: fixed;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  z-index: 1001;
+  background: white;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+  /* Safari */
+}
+.preloader .preloader-icon {
+  border: 5px solid #eeeeee;
+  border-radius: 50%;
+  border-top: 5px solid #3498db;
+  width: 50px;
+  height: 50px;
+  -webkit-animation: spin 0.5s linear infinite;
+          animation: spin 0.5s linear infinite;
+}
+@-webkit-keyframes spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+  }
+  100% {
+    -webkit-transform: rotate(360deg);
+  }
+}
+@keyframes spin {
+  0% {
+    transform: rotate(0deg);
+  }
+  100% {
+    transform: rotate(360deg);
+  }
+}
+.preloader svg path {
+  fill: #0081ff;
+}
+
+.icon-block {
+  width: 40px;
+  height: 40px;
+  line-height: 40px;
+  display: inline-flex;
+  justify-content: center;
+  align-items: center;
+  background: #e1e1e1;
+  border-radius: 3px;
+  text-align: center;
+  color: black;
+  font-size: 18px;
+}
+.icon-block.icon-block-outline-white {
+  border: 2px solid white;
+  background: none;
+  color: white !important;
+}
+.icon-block.icon-block-outline-primary {
+  border: 2px solid #0081ff;
+  color: #0081ff !important;
+  background: none;
+}
+.icon-block.icon-block-outline-success {
+  border: 2px solid #28c76f;
+  color: #28c76f !important;
+  background: none;
+}
+.icon-block.icon-block-outline-danger {
+  border: 2px solid #ea5455;
+  color: #ea5455 !important;
+  background: none;
+}
+.icon-block.icon-block-outline-info {
+  border: 2px solid #33b5e5;
+  color: #33b5e5 !important;
+  background: none;
+}
+.icon-block.icon-block-outline-warning {
+  border: 2px solid #ff9f43;
+  color: #ff9f43 !important;
+  background: none;
+}
+.icon-block.icon-block-outline-dark {
+  border: 2px solid #293134;
+  color: #293134 !important;
+  background: none;
+}
+.icon-block.icon-block-outline-secondary {
+  border: 2px solid #aa66cc;
+  color: #aa66cc !important;
+  background: none;
+}
+.icon-block.icon-block-outline-facebook {
+  border: 2px solid #3b5998;
+  color: #3b5998 !important;
+  background: none;
+}
+.icon-block.icon-block-outline-twitter {
+  border: 2px solid #55acee;
+  color: #55acee !important;
+  background: none;
+}
+.icon-block.icon-block-outline-linkedin {
+  border: 2px solid #0077b5;
+  color: #0077b5 !important;
+  background: none;
+}
+.icon-block.icon-block-outline-whatsapp {
+  border: 2px solid #43d854;
+  color: #43d854 !important;
+  background: none;
+}
+.icon-block.icon-block-outline-instagram {
+  border: 2px solid #3f729b;
+  color: #3f729b !important;
+  background: none;
+}
+.icon-block.icon-block-outline-dribbble {
+  border: 2px solid #ea4c89;
+  color: #ea4c89 !important;
+  background: none;
+}
+.icon-block.icon-block-outline-google {
+  border: 2px solid #db4437;
+  color: #db4437 !important;
+  background: none;
+}
+.icon-block.icon-block-outline-youtube {
+  border: 2px solid #cd201f;
+  color: #cd201f !important;
+  background: none;
+}
+.icon-block.icon-block-xl {
+  width: 70px;
+  height: 70px;
+  line-height: 70px;
+  font-size: 28px;
+}
+.icon-block.icon-block-lg {
+  width: 50px;
+  height: 50px;
+  line-height: 50px;
+  font-size: 22px;
+}
+.icon-block.icon-block-sm {
+  width: 30px;
+  height: 30px;
+  line-height: 30px;
+  font-size: 14px;
+}
+.icon-block.icon-block-xs {
+  width: 20px;
+  height: 20px;
+  line-height: 20px;
+  font-size: 12px;
+}
+.icon-block.icon-block-floating {
+  border-radius: 50%;
+}
+
+body.error-page img {
+  width: 50%;
+  display: table;
+  margin: 50px auto;
+}
+body.error-page .display-1 {
+  font-size: 10em;
+}
+
+.error-page {
+  text-align: center;
+  height: calc(100vh - 120px);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.error-page .error-page-item {
+  font-size: 14rem;
+  line-height: 14rem;
+  margin-left: -2rem;
+  text-shadow: -5px 1px 0px white;
+}
+.error-page .error-page-item:nth-child(2) {
+  transform: translate(0, 10px);
+  display: inline-block;
+}
+
+.form-control, .swal-modal input.swal-content__input, .custom-select {
+  font-size: 0.875rem;
+  border-color: #e1e1e1;
+  border-radius: 0.5rem;
+}
+.form-control:focus, .swal-modal input.swal-content__input:focus, .custom-select:focus {
+  box-shadow: none;
+  border-color: rgba(0, 129, 255, 0.8);
+}
+
+.form-control:not(.form-control-lg):not(.form-control-sm), .swal-modal input.swal-content__input:not(.form-control-lg):not(.form-control-sm) {
+  height: calc(1.5em + 0.75rem + 3px);
+}
+
+.form-rounded {
+  border-radius: 50px;
+}
+
+.form-control-lg {
+  font-size: 1.1rem;
+}
+
+.form-control-sm {
+  font-size: 0.8rem;
+}
+
+.input-group-text {
+  border: none;
+}
+
+textarea {
+  min-height: 100px;
+  max-height: 500px;
+}
+
+.custom-file-input:focus ~ .custom-file-label {
+  border-color: #339aff;
+  box-shadow: none;
+}
+
+.custom-control-input {
+  right: 0;
+}
+
+.custom-control-label {
+  line-height: 25px;
+}
+
+/* Checkboxes and Radios */
+.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before, .custom-radio .custom-control-input:checked ~ .custom-control-label::before, .custom-switch .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #0081ff;
+  background-color: #0081ff;
+}
+.custom-checkbox .custom-control-input:focus ~ .custom-control-label::before, .custom-radio .custom-control-input:focus ~ .custom-control-label::before, .custom-switch .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.3);
+}
+.custom-checkbox .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-radio .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-switch .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #5caeff;
+  background-color: #5caeff;
+}
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before, .custom-radio.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before, .custom-switch.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #aa66cc;
+  background-color: #aa66cc;
+}
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-radio.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-switch.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #d0abe3;
+  background-color: #d0abe3;
+}
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before, .custom-radio.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before, .custom-switch.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.3);
+}
+.custom-checkbox.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before, .custom-radio.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before, .custom-switch.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #28c76f;
+  background-color: #28c76f;
+}
+.custom-checkbox.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-radio.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-switch.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #6ae19f;
+  background-color: #6ae19f;
+}
+.custom-checkbox.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before, .custom-radio.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before, .custom-switch.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.3);
+}
+.custom-checkbox.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before, .custom-radio.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before, .custom-switch.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #ea5455;
+  background-color: #ea5455;
+}
+.custom-checkbox.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-radio.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-switch.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #f4a6a6;
+  background-color: #f4a6a6;
+}
+.custom-checkbox.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before, .custom-radio.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before, .custom-switch.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.3);
+}
+.custom-checkbox.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before, .custom-radio.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before, .custom-switch.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #ff9f43;
+  background-color: #ff9f43;
+}
+.custom-checkbox.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-radio.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-switch.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #ffce9f;
+  background-color: #ffce9f;
+}
+.custom-checkbox.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before, .custom-radio.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before, .custom-switch.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.3);
+}
+.custom-checkbox.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before, .custom-radio.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before, .custom-switch.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #33b5e5;
+  background-color: #33b5e5;
+}
+.custom-checkbox.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-radio.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-switch.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #84d3ef;
+  background-color: #84d3ef;
+}
+.custom-checkbox.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before, .custom-radio.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before, .custom-switch.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.3);
+}
+.custom-checkbox.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before, .custom-radio.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before, .custom-switch.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #293134;
+  background-color: #293134;
+}
+.custom-checkbox.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-radio.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before, .custom-switch.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #516167;
+  background-color: #516167;
+}
+.custom-checkbox.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before, .custom-radio.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before, .custom-switch.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.3);
+}
+
+.custom-checkbox.custom-range-danger::before {
+  background-color: #ea5455;
+}
+.custom-checkbox.custom-range-danger::-webkit-slider-thumb:active {
+  background-color: #f4a6a6;
+}
+
+.custom-range::-webkit-slider-thumb {
+  background-color: #0081ff;
+}
+.custom-range::-webkit-slider-thumb:active {
+  background-color: #5caeff;
+}
+.custom-range.custom-range-danger::-webkit-slider-thumb {
+  background-color: #ea5455;
+}
+.custom-range.custom-range-danger::-webkit-slider-thumb:active {
+  background-color: #f4a6a6;
+}
+.custom-range.custom-range-warning::-webkit-slider-thumb {
+  background-color: #ff9f43;
+}
+.custom-range.custom-range-warning::-webkit-slider-thumb:active {
+  background-color: #ffce9f;
+}
+.custom-range.custom-range-success::-webkit-slider-thumb {
+  background-color: #28c76f;
+}
+.custom-range.custom-range-success::-webkit-slider-thumb:active {
+  background-color: #6ae19f;
+}
+.custom-range.custom-range-secondary::-webkit-slider-thumb {
+  background-color: #aa66cc;
+}
+.custom-range.custom-range-secondary::-webkit-slider-thumb:active {
+  background-color: #d0abe3;
+}
+.custom-range.custom-range-info::-webkit-slider-thumb {
+  background-color: #33b5e5;
+}
+.custom-range.custom-range-info::-webkit-slider-thumb:active {
+  background-color: #84d3ef;
+}
+.custom-range.custom-range-light::-webkit-slider-thumb {
+  background-color: #afb8bd;
+}
+.custom-range.custom-range-light::-webkit-slider-thumb:active {
+  background-color: #e1e5e6;
+}
+.custom-range.custom-range-dark::-webkit-slider-thumb {
+  background-color: #293134;
+}
+.custom-range.custom-range-dark::-webkit-slider-thumb:active {
+  background-color: #516167;
+}
+
+.wizard > .content {
+  min-height: auto;
+  margin: 0;
+  margin-bottom: 15px;
+  background: none;
+  padding: 0 !important;
+}
+
+.wizard .wizard-index {
+  background-color: rgba(0, 0, 0, 0.4);
+  height: 30px;
+  width: 30px;
+  border-radius: 50%;
+  display: inline-flex;
+  justify-content: center;
+  align-items: center;
+  color: #fff;
+  margin-right: 0.5rem;
+}
+.wizard .current .wizard-index {
+  background-color: rgba(255, 255, 255, 0.2);
+}
+
+.wizard > .actions > ul > li {
+  margin: 0;
+  margin-left: 10px;
+}
+
+.wizard > .content > .body {
+  float: none;
+  position: static;
+  width: auto;
+  height: auto;
+}
+
+.wizard > .steps {
+  margin-bottom: 1.5rem;
+}
+
+.wizard > .steps a, .wizard > .steps .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .wizard > .steps button.btn, .wizard > .steps a:hover, .wizard > .steps a:active {
+  margin: 0;
+  margin-right: 10px;
+}
+
+.wizard > .steps .current a, .wizard > .steps .current .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .wizard > .steps .current button.btn, .wizard > .steps .current a:hover, .wizard > .steps .current a:active {
+  background: #0081ff;
+}
+
+.wizard > .steps .error a, .wizard > .steps .error .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .wizard > .steps .error button.btn, .wizard > .steps .error a:hover, .wizard > .steps .error a:active {
+  background: #ea5455;
+}
+
+.wizard > .steps .done a, .wizard > .steps .done .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .wizard > .steps .done button.btn, .wizard > .steps .done a:hover, .wizard > .steps .done a:active {
+  background-color: #28c76f;
+  color: white;
+}
+
+.wizard > .actions a, .wizard > .actions .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .wizard > .actions button.btn, .wizard > .actions a:hover, .wizard > .actions a:active {
+  background-color: #28c76f;
+  color: white;
+}
+
+.page-header {
+  display: flex;
+  align-items: flex-start;
+  height: 55px;
+}
+.page-header h1, .page-header h2, .page-header h3, .page-header h4, .page-header h5 {
+  margin: 0;
+}
+.page-header .breadcrumb {
+  background: none;
+  padding: 0;
+  margin: 0;
+}
+.page-header .breadcrumb a:hover, .page-header .breadcrumb .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append .page-header .breadcrumb button.btn:hover {
+  text-decoration: underline;
+}
+.page-header .breadcrumb li.breadcrumb-item {
+  font-size: 14px !important;
+}
+.page-header .breadcrumb li.breadcrumb-item:first-child:before {
+  font-size: 12px;
+  font-family: themify;
+  content: "\e69b";
+  display: inline-block;
+  margin-right: 8px;
+}
+.page-header .breadcrumb li.breadcrumb-item + .breadcrumb-item::before {
+  font-size: 10px;
+}
+.page-header .breadcrumb li.breadcrumb-item.active {
+  color: #0081ff;
+  font-weight: 600;
+}
+
+.mfp-with-zoom .mfp-container,
+.mfp-with-zoom.mfp-bg {
+  opacity: 0;
+  -webkit-backface-visibility: hidden;
+  /* ideally, transition speed should match zoom duration */
+  transition: all 0.3s ease-out;
+}
+
+.mfp-with-zoom.mfp-ready .mfp-container {
+  opacity: 1;
+}
+
+.mfp-with-zoom.mfp-ready.mfp-bg {
+  opacity: 0.8;
+}
+
+.mfp-with-zoom.mfp-removing .mfp-container,
+.mfp-with-zoom.mfp-removing.mfp-bg {
+  opacity: 0;
+}
+
+.card, .app-block .app-content .app-action, .chat-block {
+  margin-bottom: 1.875rem;
+  position: relative;
+  background-color: white;
+  border-radius: 0.5rem;
+  border: none;
+  box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+}
+.card.bg-primary .card-header, .app-block .app-content .bg-primary.app-action .card-header, .bg-primary.chat-block .card-header, .card.bg-secondary .card-header, .app-block .app-content .bg-secondary.app-action .card-header, .bg-secondary.chat-block .card-header, .card.bg-success .card-header, .app-block .app-content .bg-success.app-action .card-header, .bg-success.chat-block .card-header, .card.bg-danger .card-header, .app-block .app-content .bg-danger.app-action .card-header, .bg-danger.chat-block .card-header, .card.bg-warning .card-header, .app-block .app-content .bg-warning.app-action .card-header, .bg-warning.chat-block .card-header, .card.bg-info .card-header, .app-block .app-content .bg-info.app-action .card-header, .bg-info.chat-block .card-header, .card.bg-dark .card-header, .app-block .app-content .bg-dark.app-action .card-header, .bg-dark.chat-block .card-header {
+  border-bottom: 1px solid rgba(235, 235, 235, 0.4);
+}
+.card .card-header, .app-block .app-content .app-action .card-header, .chat-block .card-header, .card .card-footer, .app-block .app-content .app-action .card-footer, .chat-block .card-footer {
+  border: none;
+  background: none;
+  font-size: 13px;
+  font-weight: 600;
+  padding: 10px 20px;
+}
+.card .card-header, .app-block .app-content .app-action .card-header, .chat-block .card-header {
+  margin-bottom: 0;
+  border-bottom: 1px solid #ebebeb;
+}
+.card .card-footer, .app-block .app-content .app-action .card-footer, .chat-block .card-footer {
+  border-top: 1px solid #ebebeb;
+}
+.card .card-body, .app-block .app-content .app-action .card-body, .chat-block .card-body {
+  padding: 1.5rem;
+}
+.card .card-body h1.card-title, .app-block .app-content .app-action .card-body h1.card-title, .chat-block .card-body h1.card-title, .card .card-body h2.card-title, .app-block .app-content .app-action .card-body h2.card-title, .chat-block .card-body h2.card-title, .card .card-body h3.card-title, .app-block .app-content .app-action .card-body h3.card-title, .chat-block .card-body h3.card-title, .card .card-body h4.card-title, .app-block .app-content .app-action .card-body h4.card-title, .chat-block .card-body h4.card-title, .card .card-body h5.card-title, .app-block .app-content .app-action .card-body h5.card-title, .chat-block .card-body h5.card-title, .card .card-body h6.card-title, .app-block .app-content .app-action .card-body h6.card-title, .chat-block .card-body h6.card-title {
+  margin-bottom: 2rem;
+  font-size: 1rem;
+  font-weight: 600;
+}
+.card .card-body h1.card-title .dropdown *, .app-block .app-content .app-action .card-body h1.card-title .dropdown *, .chat-block .card-body h1.card-title .dropdown *, .card .card-body h2.card-title .dropdown *, .app-block .app-content .app-action .card-body h2.card-title .dropdown *, .chat-block .card-body h2.card-title .dropdown *, .card .card-body h3.card-title .dropdown *, .app-block .app-content .app-action .card-body h3.card-title .dropdown *, .chat-block .card-body h3.card-title .dropdown *, .card .card-body h4.card-title .dropdown *, .app-block .app-content .app-action .card-body h4.card-title .dropdown *, .chat-block .card-body h4.card-title .dropdown *, .card .card-body h5.card-title .dropdown *, .app-block .app-content .app-action .card-body h5.card-title .dropdown *, .chat-block .card-body h5.card-title .dropdown *, .card .card-body h6.card-title .dropdown *, .app-block .app-content .app-action .card-body h6.card-title .dropdown *, .chat-block .card-body h6.card-title .dropdown * {
+  letter-spacing: normal;
+  text-transform: none;
+}
+.card .card-scroll, .app-block .app-content .app-action .card-scroll, .chat-block .card-scroll {
+  height: 300px;
+  overflow: auto;
+}
+.card.purple, .app-block .app-content .purple.app-action, .purple.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #8a8ded, #9c9dc6);
+}
+.card.blue, .app-block .app-content .blue.app-action, .blue.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #6bc5e7, #bcd7ff);
+}
+.card.green, .app-block .app-content .green.app-action, .green.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #77df75, #b5e7a0);
+}
+.card.orange, .app-block .app-content .orange.app-action, .orange.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #ffc033, #ffc49d);
+}
+.card > .table-responsive .table td, .app-block .app-content .app-action > .table-responsive .table td, .chat-block > .table-responsive .table td, .card > .table-responsive .table th, .app-block .app-content .app-action > .table-responsive .table th, .chat-block > .table-responsive .table th {
+  padding: 0.75rem 1.5rem;
+}
+
+.card-group, .card-columns {
+  margin-bottom: 30px;
+}
+
+.bg-primary {
+  background: #0081ff !important;
+  color: white !important;
+}
+
+.bg-primary-bright {
+  background: rgba(0, 129, 255, 0.3) !important;
+}
+.bg-primary-bright.bg-hover {
+  transition: background 0.2s;
+}
+.bg-primary-bright.bg-hover:hover {
+  background: rgba(11, 91, 182, 0.3) !important;
+}
+
+.bg-primary-gradient {
+  background: linear-gradient(230deg, #0081ff, #4da7ff) !important;
+  color: white !important;
+}
+
+.bg-info {
+  background: #33b5e5 !important;
+  color: white !important;
+}
+.bg-info.bg-hover {
+  transition: background 0.2s;
+}
+.bg-info.bg-hover:hover {
+  background: #60c5eb !important;
+}
+
+.bg-info-bright {
+  background: rgba(51, 181, 229, 0.3) !important;
+}
+.bg-info-bright.bg-hover {
+  transition: background 0.2s;
+}
+.bg-info-bright.bg-hover:hover {
+  background: rgba(29, 173, 226, 0.3) !important;
+}
+
+.bg-info-gradient {
+  background: linear-gradient(230deg, #33b5e5, #77ceee) !important;
+  color: white !important;
+}
+
+.bg-secondary {
+  background: #aa66cc !important;
+  color: white !important;
+}
+.bg-secondary.bg-hover {
+  transition: background 0.2s;
+}
+.bg-secondary.bg-hover:hover {
+  background: #bf8cd9 !important;
+}
+
+.bg-secondary-bright {
+  background: rgba(170, 102, 204, 0.3) !important;
+}
+.bg-secondary-bright.bg-hover {
+  transition: background 0.2s;
+}
+.bg-secondary-bright.bg-hover:hover {
+  background: rgba(159, 83, 198, 0.3) !important;
+}
+
+.bg-secondary-gradient {
+  background: linear-gradient(230deg, #aa66cc, #ca9fdf) !important;
+  color: white !important;
+}
+
+.bg-success {
+  background: #28c76f !important;
+  color: white !important;
+}
+.bg-success.bg-hover {
+  transition: background 0.2s;
+}
+.bg-success.bg-hover:hover {
+  background: #48da89 !important;
+}
+
+.bg-success-bright {
+  background: rgba(40, 199, 111, 0.3) !important;
+}
+.bg-success-bright.bg-hover {
+  transition: background 0.2s;
+}
+.bg-success-bright.bg-hover:hover {
+  background: rgba(36, 178, 99, 0.3) !important;
+}
+
+.bg-success-gradient {
+  background: linear-gradient(230deg, #28c76f, #5dde97) !important;
+  color: white !important;
+}
+
+.bg-danger {
+  background: #ea5455 !important;
+  color: white !important;
+}
+.bg-danger.bg-hover {
+  transition: background 0.2s;
+}
+.bg-danger.bg-hover:hover {
+  background: #f08182 !important;
+}
+
+.bg-danger-bright {
+  background: rgba(234, 84, 85, 0.3) !important;
+}
+.bg-danger-bright.bg-hover {
+  transition: background 0.2s;
+}
+.bg-danger-bright.bg-hover:hover {
+  background: rgba(231, 61, 62, 0.3) !important;
+}
+
+.bg-danger-gradient {
+  background: linear-gradient(230deg, #ea5455, #f29899) !important;
+  color: white !important;
+}
+
+.bg-warning {
+  background: #ff9f43 !important;
+  color: white !important;
+}
+.bg-warning.bg-hover {
+  transition: background 0.2s;
+}
+.bg-warning.bg-hover:hover {
+  background: #ffb976 !important;
+}
+
+.bg-warning-bright {
+  background: rgba(255, 159, 67, 0.3) !important;
+}
+.bg-warning-bright.bg-hover {
+  transition: background 0.2s;
+}
+.bg-warning-bright.bg-hover:hover {
+  background: rgba(255, 146, 42, 0.3) !important;
+}
+
+.bg-warning-gradient {
+  background: linear-gradient(230deg, #ff9f43, #ffc690) !important;
+  color: white !important;
+}
+
+.bg-light {
+  background: #afb8bd !important;
+}
+
+.bg-dark {
+  background: #293134 !important;
+  color: white !important;
+}
+.bg-dark.bg-hover {
+  transition: background 0.2s;
+}
+.bg-dark.bg-hover:hover {
+  background: #3f4c51 !important;
+}
+
+.bg-dark-bright {
+  background: #d4d5d8 !important;
+}
+.bg-dark-bright.bg-hover {
+  transition: background 0.2s;
+}
+.bg-dark-bright.bg-hover:hover {
+  background: #c7c8cc !important;
+}
+
+.bg-dark-gradient {
+  background: linear-gradient(230deg, #293134, #4b595f) !important;
+  color: white !important;
+}
+
+.bg-facebook {
+  background: #3b5998 !important;
+  color: white !important;
+}
+
+.bg-twitter {
+  background: #55acee !important;
+  color: white !important;
+}
+
+.bg-linkedin {
+  background: #0077b5 !important;
+  color: white !important;
+}
+
+.bg-whatsapp {
+  background: #43d854 !important;
+  color: white !important;
+}
+
+.bg-instagram {
+  background: #3f729b !important;
+  color: white !important;
+}
+
+.bg-dribbble {
+  background: #ea4c89 !important;
+  color: white !important;
+}
+
+.bg-google {
+  background: #db4437 !important;
+  color: white !important;
+}
+
+.bg-youtube {
+  background: #cd201f !important;
+  color: white !important;
+}
+
+.text-primary {
+  color: #0081ff !important;
+}
+
+.text-secondary {
+  color: #aa66cc !important;
+}
+
+.text-info {
+  color: #33b5e5 !important;
+}
+
+.text-success, .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active.task-list .app-list-title {
+  color: #28c76f !important;
+}
+
+.text-danger {
+  color: #ea5455 !important;
+}
+
+.text-warning {
+  color: #ff9f43 !important;
+}
+
+.text-light {
+  color: #afb8bd !important;
+}
+
+.text-facebook {
+  color: #3b5998 !important;
+}
+
+.text-twitter {
+  color: #55acee !important;
+}
+
+.text-google {
+  color: #db4437 !important;
+}
+
+.text-linkedin {
+  color: #0077b5 !important;
+}
+
+.text-instagram {
+  color: #3f729b !important;
+}
+
+.text-whatsapp {
+  color: #43d854 !important;
+}
+
+.text-dribbble {
+  color: #ea4c89 !important;
+}
+
+.colorpicker.dropdown-menu {
+  visibility: visible;
+  opacity: 1;
+  height: auto;
+}
+
+.colorpicker-2x .colorpicker-saturation {
+  width: 200px;
+  height: 200px;
+}
+
+.colorpicker-2x .colorpicker-hue,
+.colorpicker-2x .colorpicker-alpha {
+  width: 30px;
+  height: 200px;
+}
+
+.colorpicker-2x .colorpicker-color,
+.colorpicker-2x .colorpicker-color div {
+  height: 30px;
+}
+
+.colorpicker.colorpicker-hidden {
+  display: none !important;
+}
+
+ul:not(.list-unstyled) {
+  margin: 0;
+  padding: 0;
+}
+ul:not(.list-unstyled) li {
+  list-style-type: none;
+}
+ul:not(.list-unstyled) li a .icon, ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn .icon, .header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn .icon {
+  color: #d1d1d1;
+  font-size: 14px;
+  vertical-align: middle;
+}
+ul:not(.list-unstyled) li a:hover, ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn:hover, ul:not(.list-unstyled) li a:focus, ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn:focus, .header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn:focus {
+  text-decoration: underline;
+}
+ul li a:hover, ul li .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append ul li button.btn:hover, ul li a:focus, ul li .header form .input-group .input-group-append button.btn:focus, .header form .input-group .input-group-append ul li button.btn:focus {
+  text-decoration: none !important;
+}
+ul.list-unstyled li {
+  margin-bottom: 10px;
+}
+ul.list-unstyled li ul {
+  margin-left: 30px !important;
+  margin-top: 10px !important;
+  margin-bottom: 10px !important;
+}
+ul.list-unstyled li ul li {
+  list-style-type: disc !important;
+}
+ul.links a, ul.links .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append ul.links button.btn {
+  display: block;
+  padding: 3px 5px;
+  color: #2e2e2e;
+}
+ul.links a.active, ul.links .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append ul.links button.active.btn {
+  color: #0081ff;
+  font-weight: 500;
+}
+
+.list-group.list-group-sm .list-group-item {
+  padding: 0.4rem 1rem;
+}
+
+.text-uppercase {
+  letter-spacing: 0.5px;
+}
+
+.bg-none {
+  background-color: inherit !important;
+}
+
+h1 {
+  font-size: 29px;
+}
+
+h2 {
+  font-size: 26px;
+}
+
+h3 {
+  font-size: 23px;
+}
+
+h4 {
+  font-size: 20px;
+}
+
+h5 {
+  font-size: 17px;
+}
+
+h6 {
+  font-size: 14px;
+}
+
+ul.list-inline li {
+  margin-bottom: 0.5rem;
+}
+
+hr {
+  border-color: #e6e6e6;
+}
+
+.right-0 {
+  right: 0;
+}
+
+.left-0 {
+  left: 0;
+}
+
+.top-0 {
+  top: 0;
+}
+
+.bottom-0 {
+  bottom: 0;
+}
+
+.cursor-pointer {
+  cursor: pointer;
+}
+
+p {
+  line-height: 1.5rem;
+}
+
+a, .header form .input-group .input-group-append button.btn {
+  color: #666666;
+  text-decoration: none;
+  transition: color 0.2s;
+}
+a:hover, .header form .input-group .input-group-append button.btn:hover {
+  color: black;
+  text-decoration: none;
+}
+a.link-1, .header form .input-group .input-group-append button.link-1.btn {
+  color: #0081ff;
+}
+a.link-1:hover, .header form .input-group .input-group-append button.link-1.btn:hover, a.link-1:focus, .header form .input-group .input-group-append button.link-1.btn:focus {
+  color: rgba(0, 129, 255, 0.8);
+}
+a.link-2, .header form .input-group .input-group-append button.link-2.btn {
+  color: black;
+}
+a.link-2:hover, .header form .input-group .input-group-append button.link-2.btn:hover, a.link-2:focus, .header form .input-group .input-group-append button.link-2.btn:focus {
+  color: #0081ff;
+}
+a.link-3, .header form .input-group .input-group-append button.link-3.btn {
+  color: white;
+}
+a.link-3:hover, .header form .input-group .input-group-append button.link-3.btn:hover, a.link-3:focus, .header form .input-group .input-group-append button.link-3.btn:focus {
+  color: #0081ff;
+}
+a:not(.active.list-group-item), .header form .input-group .input-group-append button.btn:not(.active.list-group-item), a:not(.btn):hover, .header form .input-group .input-group-append button.btn:not(.btn):hover, a:not(.btn):active, .header form .input-group .input-group-append button.btn:not(.btn):active, a:not(.btn):focus, .header form .input-group .input-group-append button.btn:not(.btn):focus {
+  text-decoration: none !important;
+  color: black;
+  outline: none;
+}
+a.btn:hover, .header form .input-group .input-group-append button.btn:hover, a.btn:active, .header form .input-group .input-group-append button.btn:active, a.btn:focus, .header form .input-group .input-group-append button.btn:focus {
+  text-decoration: none !important;
+}
+.page-link {
+  color: #0081ff;
+}
+.page-link:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.3);
+}
+
+.btn {
+  font-size: 14px;
+  width: auto;
+  display: inline-flex;
+  font-weight: 600;
+  align-items: center;
+  padding: 10px 15px;
+  line-height: 14px;
+  border-radius: 0.5rem;
+}
+.btn svg {
+  width: 14px !important;
+  height: 14px !important;
+}
+.btn[data-toggle=dropdown] {
+  align-items: center;
+}
+.btn.btn-sm {
+  padding: 5px 10px;
+  font-size: 13px;
+}
+.btn.btn-lg {
+  padding: 15px 20px;
+  font-size: 17px;
+}
+.btn.btn-block {
+  width: 100%;
+  justify-content: center;
+}
+.btn.btn-square {
+  border-radius: 0;
+}
+.btn.btn-rounded {
+  border-radius: 50px;
+  padding: 10px 20px;
+}
+.btn.btn-rounded.btn-sm {
+  padding: 5px 15px;
+  font-size: 13px;
+}
+.btn.btn-rounded.btn-lg {
+  padding: 20px 30px;
+  font-size: 17px;
+}
+.btn.btn-floating {
+  height: 35px;
+  width: 35px;
+  padding: 0;
+  justify-content: center;
+  border-radius: 50%;
+}
+.btn.btn-floating.btn-sm {
+  height: 30px;
+  width: 30px;
+}
+.btn.btn-floating.btn-lg {
+  height: 50px;
+  width: 50px;
+}
+.btn.btn-uppercase {
+  text-transform: uppercase;
+  font-size: 12px;
+  letter-spacing: 1px;
+  align-items: center;
+  font-weight: 600;
+}
+.btn.btn-uppercase.btn-sm {
+  font-size: 11px;
+}
+.btn.btn-uppercase.btn-lg {
+  font-size: 14px;
+}
+.btn.btn-shadow {
+  box-shadow: 0px 3px 4px 1px rgba(0, 0, 0, 0.3);
+}
+.btn.btn-shadow:focus, .btn.btn-shadow:active {
+  box-shadow: 0px 4px 6px 1px rgba(0, 0, 0, 0.3) !important;
+}
+.btn.btn-primary, a.btn[href="#next"], .header form .input-group .input-group-append button.btn[href="#next"], a.btn[href="#previous"], .header form .input-group .input-group-append button.btn[href="#previous"] {
+  background: #0081ff;
+  border-color: #0081ff;
+}
+.btn.btn-primary:not(:disabled):not(.disabled):hover, a.btn[href="#next"]:not(:disabled):not(.disabled):hover, .header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):hover, a.btn[href="#previous"]:not(:disabled):not(.disabled):hover, .header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):hover, .btn.btn-primary:not(:disabled):not(.disabled):focus, a.btn[href="#next"]:not(:disabled):not(.disabled):focus, .header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):focus, a.btn[href="#previous"]:not(:disabled):not(.disabled):focus, .header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):focus, .btn.btn-primary:not(:disabled):not(.disabled):active, a.btn[href="#next"]:not(:disabled):not(.disabled):active, .header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):active, a.btn[href="#previous"]:not(:disabled):not(.disabled):active, .header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):active {
+  background: #0067cc;
+  border-color: #0067cc;
+}
+.btn.btn-primary:not(:disabled):not(.disabled):focus, a.btn[href="#next"]:not(:disabled):not(.disabled):focus, .header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):focus, a.btn[href="#previous"]:not(:disabled):not(.disabled):focus, .header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.4) !important;
+}
+.btn.btn-primary.btn-pulse:not(:disabled):not(.disabled), a.btn.btn-pulse[href="#next"]:not(:disabled):not(.disabled), .header form .input-group .input-group-append button.btn.btn-pulse[href="#next"]:not(:disabled):not(.disabled), a.btn.btn-pulse[href="#previous"]:not(:disabled):not(.disabled), .header form .input-group .input-group-append button.btn.btn-pulse[href="#previous"]:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-primary:hover, a.btn[href="#next"]:hover, .header form .input-group .input-group-append button.btn[href="#next"]:hover, a.btn[href="#previous"]:hover, .header form .input-group .input-group-append button.btn[href="#previous"]:hover {
+  -webkit-animation: none;
+}
+.btn.btn-gradient-primary {
+  background: linear-gradient(20deg, #4da7ff, #0067cc);
+  border-color: transparent;
+  color: white;
+}
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):hover, .btn.btn-gradient-primary:not(:disabled):not(.disabled):focus, .btn.btn-gradient-primary:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #0081ff, #0067cc);
+  border-color: transparent;
+}
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.5);
+}
+.btn.btn-gradient-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-gradient-primary:hover {
+  -webkit-animation: none;
+}
+.btn.btn-light-primary {
+  background: rgba(0, 129, 255, 0.3);
+  border-color: transparent;
+  color: #0053a3;
+}
+.btn.btn-light-primary:not(:disabled):not(.disabled):hover, .btn.btn-light-primary:not(:disabled):not(.disabled):focus, .btn.btn-light-primary:not(:disabled):not(.disabled):active {
+  background: rgba(0, 129, 255, 0.5);
+  border-color: transparent;
+}
+.btn.btn-light-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.2);
+}
+.btn.btn-light-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-light-primary:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-primary {
+  background: none;
+  border-color: #0081ff;
+  color: #0074e6;
+  border-width: 1px;
+}
+.btn.btn-outline-primary:not(:disabled):not(.disabled):hover {
+  background: #0081ff;
+  border-color: #0081ff;
+  color: white;
+}
+.btn.btn-outline-primary:not(:disabled):not(.disabled):focus, .btn.btn-outline-primary:not(:disabled):not(.disabled):active {
+  background: #0062c2;
+  border-color: #0062c2;
+  color: white;
+}
+.btn.btn-outline-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.4);
+}
+.btn.btn-outline-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-primary:hover {
+  -webkit-animation: none;
+}
+.btn.btn-secondary {
+  background: #aa66cc;
+  border-color: #aa66cc;
+}
+.btn.btn-secondary:not(:disabled):not(.disabled):hover, .btn.btn-secondary:not(:disabled):not(.disabled):focus, .btn.btn-secondary:not(:disabled):not(.disabled):active {
+  background: #9540bf;
+  border-color: #9540bf;
+}
+.btn.btn-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.4) !important;
+}
+.btn.btn-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-secondary:hover {
+  -webkit-animation: none;
+}
+.btn.btn-gradient-secondary {
+  background: linear-gradient(20deg, #ca9fdf, #9540bf);
+  border-color: transparent;
+  color: white;
+}
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):hover, .btn.btn-gradient-secondary:not(:disabled):not(.disabled):focus, .btn.btn-gradient-secondary:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #aa66cc, #9540bf);
+  border-color: transparent;
+}
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.5);
+}
+.btn.btn-gradient-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-gradient-secondary:hover {
+  -webkit-animation: none;
+}
+.btn.btn-light-secondary {
+  background: rgba(170, 102, 204, 0.3);
+  border-color: transparent;
+  color: #7d36a1;
+}
+.btn.btn-light-secondary:not(:disabled):not(.disabled):hover, .btn.btn-light-secondary:not(:disabled):not(.disabled):focus, .btn.btn-light-secondary:not(:disabled):not(.disabled):active {
+  background: rgba(170, 102, 204, 0.5);
+  border-color: transparent;
+}
+.btn.btn-light-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.2);
+}
+.btn.btn-light-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-light-secondary:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-secondary {
+  background: none;
+  border-color: #aa66cc;
+  color: #9f53c6;
+  border-width: 1px;
+}
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):hover {
+  background: #aa66cc;
+  border-color: #aa66cc;
+  color: white;
+}
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):focus, .btn.btn-outline-secondary:not(:disabled):not(.disabled):active {
+  background: #8f3db8;
+  border-color: #8f3db8;
+  color: white;
+}
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.4);
+}
+.btn.btn-outline-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-secondary:hover {
+  -webkit-animation: none;
+}
+.btn.btn-success {
+  background: #28c76f;
+  border-color: #28c76f;
+}
+.btn.btn-success:not(:disabled):not(.disabled):hover, .btn.btn-success:not(:disabled):not(.disabled):focus, .btn.btn-success:not(:disabled):not(.disabled):active {
+  background: #1f9d57;
+  border-color: #1f9d57;
+}
+.btn.btn-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.4) !important;
+}
+.btn.btn-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-success:hover {
+  -webkit-animation: none;
+}
+.btn.btn-gradient-success {
+  background: linear-gradient(20deg, #5dde97, #1f9d57);
+  border-color: transparent;
+  color: white;
+}
+.btn.btn-gradient-success:not(:disabled):not(.disabled):hover, .btn.btn-gradient-success:not(:disabled):not(.disabled):focus, .btn.btn-gradient-success:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #28c76f, #1f9d57);
+  border-color: transparent;
+}
+.btn.btn-gradient-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.5);
+}
+.btn.btn-gradient-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-gradient-success:hover {
+  -webkit-animation: none;
+}
+.btn.btn-light-success {
+  background: rgba(40, 199, 111, 0.3);
+  border-color: transparent;
+  color: #197b44;
+}
+.btn.btn-light-success:not(:disabled):not(.disabled):hover, .btn.btn-light-success:not(:disabled):not(.disabled):focus, .btn.btn-light-success:not(:disabled):not(.disabled):active {
+  background: rgba(40, 199, 111, 0.5);
+  border-color: transparent;
+}
+.btn.btn-light-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.2);
+}
+.btn.btn-light-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-light-success:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-success {
+  background: none;
+  border-color: #28c76f;
+  color: #24b263;
+  border-width: 1px;
+}
+.btn.btn-outline-success:not(:disabled):not(.disabled):hover {
+  background: #28c76f;
+  border-color: #28c76f;
+  color: white;
+}
+.btn.btn-outline-success:not(:disabled):not(.disabled):focus, .btn.btn-outline-success:not(:disabled):not(.disabled):active {
+  background: #1e9453;
+  border-color: #1e9453;
+  color: white;
+}
+.btn.btn-outline-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.4);
+}
+.btn.btn-outline-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-success:hover {
+  -webkit-animation: none;
+}
+.btn.btn-danger {
+  background: #ea5455;
+  border-color: #ea5455;
+}
+.btn.btn-danger:not(:disabled):not(.disabled):hover, .btn.btn-danger:not(:disabled):not(.disabled):focus, .btn.btn-danger:not(:disabled):not(.disabled):active {
+  background: #e42728;
+  border-color: #e42728;
+}
+.btn.btn-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.4) !important;
+}
+.btn.btn-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-danger:hover {
+  -webkit-animation: none;
+}
+.btn.btn-gradient-danger {
+  background: linear-gradient(20deg, #f29899, #e42728);
+  border-color: transparent;
+  color: white;
+}
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):hover, .btn.btn-gradient-danger:not(:disabled):not(.disabled):focus, .btn.btn-gradient-danger:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #ea5455, #e42728);
+  border-color: transparent;
+}
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.5);
+}
+.btn.btn-gradient-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-gradient-danger:hover {
+  -webkit-animation: none;
+}
+.btn.btn-light-danger {
+  background: rgba(234, 84, 85, 0.3);
+  border-color: transparent;
+  color: #c9191a;
+}
+.btn.btn-light-danger:not(:disabled):not(.disabled):hover, .btn.btn-light-danger:not(:disabled):not(.disabled):focus, .btn.btn-light-danger:not(:disabled):not(.disabled):active {
+  background: rgba(234, 84, 85, 0.5);
+  border-color: transparent;
+}
+.btn.btn-light-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.2);
+}
+.btn.btn-light-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-light-danger:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-danger {
+  background: none;
+  border-color: #ea5455;
+  color: #e73d3e;
+  border-width: 1px;
+}
+.btn.btn-outline-danger:not(:disabled):not(.disabled):hover {
+  background: #ea5455;
+  border-color: #ea5455;
+  color: white;
+}
+.btn.btn-outline-danger:not(:disabled):not(.disabled):focus, .btn.btn-outline-danger:not(:disabled):not(.disabled):active {
+  background: #e31d1f;
+  border-color: #e31d1f;
+  color: white;
+}
+.btn.btn-outline-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.4);
+}
+.btn.btn-outline-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-danger:hover {
+  -webkit-animation: none;
+}
+.btn.btn-warning {
+  background: #ff9f43;
+  border-color: #ff9f43;
+}
+.btn.btn-warning:not(:disabled):not(.disabled):hover, .btn.btn-warning:not(:disabled):not(.disabled):focus, .btn.btn-warning:not(:disabled):not(.disabled):active {
+  background: #ff8510;
+  border-color: #ff8510;
+}
+.btn.btn-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.4) !important;
+}
+.btn.btn-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-warning:hover {
+  -webkit-animation: none;
+}
+.btn.btn-gradient-warning {
+  background: linear-gradient(20deg, #ffc690, #ff8510);
+  border-color: transparent;
+  color: white;
+  color: #212529;
+}
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):hover, .btn.btn-gradient-warning:not(:disabled):not(.disabled):focus, .btn.btn-gradient-warning:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #ff9f43, #ff8510);
+  border-color: transparent;
+}
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.5);
+}
+.btn.btn-gradient-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-gradient-warning:hover {
+  -webkit-animation: none;
+}
+.btn.btn-light-warning {
+  background: rgba(255, 159, 67, 0.3);
+  border-color: transparent;
+  color: #e67100;
+}
+.btn.btn-light-warning:not(:disabled):not(.disabled):hover, .btn.btn-light-warning:not(:disabled):not(.disabled):focus, .btn.btn-light-warning:not(:disabled):not(.disabled):active {
+  background: rgba(255, 159, 67, 0.5);
+  border-color: transparent;
+}
+.btn.btn-light-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.2);
+}
+.btn.btn-light-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-light-warning:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-warning {
+  background: none;
+  border-color: #ff9f43;
+  color: #ff922a;
+  border-width: 1px;
+}
+.btn.btn-outline-warning:not(:disabled):not(.disabled):hover {
+  background: #ff9f43;
+  border-color: #ff9f43;
+  color: white;
+}
+.btn.btn-outline-warning:not(:disabled):not(.disabled):focus, .btn.btn-outline-warning:not(:disabled):not(.disabled):active {
+  background: #ff8006;
+  border-color: #ff8006;
+  color: white;
+}
+.btn.btn-outline-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.4);
+}
+.btn.btn-outline-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-warning:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-warning:not(:disabled):not(.disabled):hover, .btn.btn-outline-warning:not(:disabled):not(.disabled):focus, .btn.btn-outline-warning:not(:disabled):not(.disabled):active {
+  color: #212529;
+}
+.btn.btn-info {
+  background: #33b5e5;
+  border-color: #33b5e5;
+}
+.btn.btn-info:not(:disabled):not(.disabled):hover, .btn.btn-info:not(:disabled):not(.disabled):focus, .btn.btn-info:not(:disabled):not(.disabled):active {
+  background: #1a9bcb;
+  border-color: #1a9bcb;
+}
+.btn.btn-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.4) !important;
+}
+.btn.btn-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-info:hover {
+  -webkit-animation: none;
+}
+.btn.btn-gradient-info {
+  background: linear-gradient(20deg, #77ceee, #1a9bcb);
+  border-color: transparent;
+  color: white;
+}
+.btn.btn-gradient-info:not(:disabled):not(.disabled):hover, .btn.btn-gradient-info:not(:disabled):not(.disabled):focus, .btn.btn-gradient-info:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #33b5e5, #1a9bcb);
+  border-color: transparent;
+}
+.btn.btn-gradient-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.5);
+}
+.btn.btn-gradient-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-gradient-info:hover {
+  -webkit-animation: none;
+}
+.btn.btn-light-info {
+  background: rgba(51, 181, 229, 0.3);
+  border-color: transparent;
+  color: #1580a7;
+}
+.btn.btn-light-info:not(:disabled):not(.disabled):hover, .btn.btn-light-info:not(:disabled):not(.disabled):focus, .btn.btn-light-info:not(:disabled):not(.disabled):active {
+  background: rgba(51, 181, 229, 0.5);
+  border-color: transparent;
+}
+.btn.btn-light-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.2);
+}
+.btn.btn-light-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-light-info:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-info {
+  background: none;
+  border-color: #33b5e5;
+  color: #1dade2;
+  border-width: 1px;
+}
+.btn.btn-outline-info:not(:disabled):not(.disabled):hover {
+  background: #33b5e5;
+  border-color: #33b5e5;
+  color: white;
+}
+.btn.btn-outline-info:not(:disabled):not(.disabled):focus, .btn.btn-outline-info:not(:disabled):not(.disabled):active {
+  background: #1994c2;
+  border-color: #1994c2;
+  color: white;
+}
+.btn.btn-outline-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.4);
+}
+.btn.btn-outline-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-info:hover {
+  -webkit-animation: none;
+}
+.btn.btn-light, .fc .btn.fc-state-default {
+  background: #afb8bd;
+  border-color: #afb8bd;
+}
+.btn.btn-light:not(:disabled):not(.disabled):hover, .fc .btn.fc-state-default:not(:disabled):not(.disabled):hover, .btn.btn-light:not(:disabled):not(.disabled):focus, .fc .btn.fc-state-default:not(:disabled):not(.disabled):focus, .btn.btn-light:not(:disabled):not(.disabled):active, .fc .btn.fc-state-default:not(:disabled):not(.disabled):active {
+  background: #939fa6;
+  border-color: #939fa6;
+}
+.btn.btn-light:not(:disabled):not(.disabled):focus, .fc .btn.fc-state-default:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.4) !important;
+}
+.btn.btn-light.btn-pulse:not(:disabled):not(.disabled), .fc .btn.btn-pulse.fc-state-default:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-light:hover, .fc .btn.fc-state-default:hover {
+  -webkit-animation: none;
+}
+.btn.btn-gradient-light {
+  background: linear-gradient(20deg, #d9dde0, #939fa6);
+  border-color: transparent;
+  color: white;
+  color: inherit;
+}
+.btn.btn-gradient-light:not(:disabled):not(.disabled):hover, .btn.btn-gradient-light:not(:disabled):not(.disabled):focus, .btn.btn-gradient-light:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #afb8bd, #939fa6);
+  border-color: transparent;
+}
+.btn.btn-gradient-light:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.5);
+}
+.btn.btn-gradient-light.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-gradient-light:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-light {
+  background: none;
+  border-color: #afb8bd;
+  color: #a1acb1;
+  border-width: 1px;
+  color: #212529;
+}
+.btn.btn-outline-light:not(:disabled):not(.disabled):hover {
+  background: #afb8bd;
+  border-color: #afb8bd;
+  color: white;
+}
+.btn.btn-outline-light:not(:disabled):not(.disabled):focus, .btn.btn-outline-light:not(:disabled):not(.disabled):active {
+  background: #8d9aa1;
+  border-color: #8d9aa1;
+  color: white;
+}
+.btn.btn-outline-light:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.4);
+}
+.btn.btn-outline-light.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-light:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-light:not(:disabled):not(.disabled):hover, .btn.btn-outline-light:not(:disabled):not(.disabled):focus, .btn.btn-outline-light:not(:disabled):not(.disabled):active {
+  color: #212529;
+}
+.btn.btn-dark {
+  background: #293134;
+  border-color: #293134;
+}
+.btn.btn-dark:not(:disabled):not(.disabled):hover, .btn.btn-dark:not(:disabled):not(.disabled):focus, .btn.btn-dark:not(:disabled):not(.disabled):active {
+  background: #131617;
+  border-color: #131617;
+}
+.btn.btn-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.4) !important;
+}
+.btn.btn-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-dark:hover {
+  -webkit-animation: none;
+}
+.btn.btn-gradient-dark {
+  background: linear-gradient(20deg, #4b595f, #131617);
+  border-color: transparent;
+  color: white;
+}
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):hover, .btn.btn-gradient-dark:not(:disabled):not(.disabled):focus, .btn.btn-gradient-dark:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #293134, #131617);
+  border-color: transparent;
+}
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.5);
+}
+.btn.btn-gradient-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-gradient-dark:hover {
+  -webkit-animation: none;
+}
+.btn.btn-light-dark {
+  background: rgba(41, 49, 52, 0.3);
+  border-color: transparent;
+  color: #010101;
+}
+.btn.btn-light-dark:not(:disabled):not(.disabled):hover, .btn.btn-light-dark:not(:disabled):not(.disabled):focus, .btn.btn-light-dark:not(:disabled):not(.disabled):active {
+  background: rgba(41, 49, 52, 0.5);
+  border-color: transparent;
+}
+.btn.btn-light-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.2);
+}
+.btn.btn-light-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-light-dark:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-dark {
+  background: none;
+  border-color: #293134;
+  color: #1e2426;
+  border-width: 1px;
+}
+.btn.btn-outline-dark:not(:disabled):not(.disabled):hover {
+  background: #293134;
+  border-color: #293134;
+  color: white;
+}
+.btn.btn-outline-dark:not(:disabled):not(.disabled):focus, .btn.btn-outline-dark:not(:disabled):not(.disabled):active {
+  background: #0e1112;
+  border-color: #0e1112;
+  color: white;
+}
+.btn.btn-outline-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.4);
+}
+.btn.btn-outline-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-dark:hover {
+  -webkit-animation: none;
+}
+.btn.btn-facebook {
+  background: #3b5998;
+  border-color: #3b5998;
+  color: white;
+}
+.btn.btn-facebook:not(:disabled):not(.disabled):hover, .btn.btn-facebook:not(:disabled):not(.disabled):focus, .btn.btn-facebook:not(:disabled):not(.disabled):active {
+  background: #2d4373;
+  border-color: #2d4373;
+}
+.btn.btn-facebook:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(59, 89, 152, 0.4) !important;
+}
+.btn.btn-facebook.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(59, 89, 152, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-facebook:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-facebook {
+  background: none;
+  border-color: #3b5998;
+  color: #344e86;
+  border-width: 1px;
+}
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):hover {
+  background: #3b5998;
+  border-color: #3b5998;
+  color: white;
+}
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):focus, .btn.btn-outline-facebook:not(:disabled):not(.disabled):active {
+  background: #2a3f6c;
+  border-color: #2a3f6c;
+  color: white;
+}
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(59, 89, 152, 0.4);
+}
+.btn.btn-outline-facebook.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(59, 89, 152, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-facebook:hover {
+  -webkit-animation: none;
+}
+.btn.btn-google {
+  background: #db4437;
+  border-color: #db4437;
+  color: white;
+}
+.btn.btn-google:not(:disabled):not(.disabled):hover, .btn.btn-google:not(:disabled):not(.disabled):focus, .btn.btn-google:not(:disabled):not(.disabled):active {
+  background: #bd2e22;
+  border-color: #bd2e22;
+}
+.btn.btn-google:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(219, 68, 55, 0.4) !important;
+}
+.btn.btn-google.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(219, 68, 55, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-google:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-google {
+  background: none;
+  border-color: #db4437;
+  color: #d33426;
+  border-width: 1px;
+}
+.btn.btn-outline-google:not(:disabled):not(.disabled):hover {
+  background: #db4437;
+  border-color: #db4437;
+  color: white;
+}
+.btn.btn-outline-google:not(:disabled):not(.disabled):focus, .btn.btn-outline-google:not(:disabled):not(.disabled):active {
+  background: #b42c20;
+  border-color: #b42c20;
+  color: white;
+}
+.btn.btn-outline-google:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(219, 68, 55, 0.4);
+}
+.btn.btn-outline-google.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(219, 68, 55, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-google:hover {
+  -webkit-animation: none;
+}
+.btn.btn-twitter {
+  background: #55acee;
+  border-color: #55acee;
+  color: white;
+}
+.btn.btn-twitter:not(:disabled):not(.disabled):hover, .btn.btn-twitter:not(:disabled):not(.disabled):focus, .btn.btn-twitter:not(:disabled):not(.disabled):active {
+  background: #2795e9;
+  border-color: #2795e9;
+}
+.btn.btn-twitter:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(85, 172, 238, 0.4) !important;
+}
+.btn.btn-twitter.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(85, 172, 238, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-twitter:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-twitter {
+  background: none;
+  border-color: #55acee;
+  color: #3ea1ec;
+  border-width: 1px;
+}
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):hover {
+  background: #55acee;
+  border-color: #55acee;
+  color: white;
+}
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):focus, .btn.btn-outline-twitter:not(:disabled):not(.disabled):active {
+  background: #1d91e8;
+  border-color: #1d91e8;
+  color: white;
+}
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(85, 172, 238, 0.4);
+}
+.btn.btn-outline-twitter.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(85, 172, 238, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-twitter:hover {
+  -webkit-animation: none;
+}
+.btn.btn-linkedin {
+  background: #0077b5;
+  border-color: #0077b5;
+  color: white;
+}
+.btn.btn-linkedin:not(:disabled):not(.disabled):hover, .btn.btn-linkedin:not(:disabled):not(.disabled):focus, .btn.btn-linkedin:not(:disabled):not(.disabled):active {
+  background: #005582;
+  border-color: #005582;
+}
+.btn.btn-linkedin:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 119, 181, 0.4) !important;
+}
+.btn.btn-linkedin.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 119, 181, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-linkedin:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-linkedin {
+  background: none;
+  border-color: #0077b5;
+  color: #00669c;
+  border-width: 1px;
+}
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):hover {
+  background: #0077b5;
+  border-color: #0077b5;
+  color: white;
+}
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):focus, .btn.btn-outline-linkedin:not(:disabled):not(.disabled):active {
+  background: #004f78;
+  border-color: #004f78;
+  color: white;
+}
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 119, 181, 0.4);
+}
+.btn.btn-outline-linkedin.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 119, 181, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-linkedin:hover {
+  -webkit-animation: none;
+}
+.btn.btn-whatsapp {
+  background: #43d854;
+  border-color: #43d854;
+  color: white;
+}
+.btn.btn-whatsapp:not(:disabled):not(.disabled):hover, .btn.btn-whatsapp:not(:disabled):not(.disabled):focus, .btn.btn-whatsapp:not(:disabled):not(.disabled):active {
+  background: #28c039;
+  border-color: #28c039;
+}
+.btn.btn-whatsapp:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(67, 216, 84, 0.4) !important;
+}
+.btn.btn-whatsapp.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(67, 216, 84, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-whatsapp:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-whatsapp {
+  background: none;
+  border-color: #43d854;
+  color: #2ed441;
+  border-width: 1px;
+}
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):hover {
+  background: #43d854;
+  border-color: #43d854;
+  color: white;
+}
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):focus, .btn.btn-outline-whatsapp:not(:disabled):not(.disabled):active {
+  background: #26b837;
+  border-color: #26b837;
+  color: white;
+}
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(67, 216, 84, 0.4);
+}
+.btn.btn-outline-whatsapp.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(67, 216, 84, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-whatsapp:hover {
+  -webkit-animation: none;
+}
+.btn.btn-instagram {
+  background: #3f729b;
+  border-color: #3f729b;
+  color: white;
+}
+.btn.btn-instagram:not(:disabled):not(.disabled):hover, .btn.btn-instagram:not(:disabled):not(.disabled):focus, .btn.btn-instagram:not(:disabled):not(.disabled):active {
+  background: #305777;
+  border-color: #305777;
+}
+.btn.btn-instagram:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(63, 114, 155, 0.4) !important;
+}
+.btn.btn-instagram.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(63, 114, 155, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-instagram:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-instagram {
+  background: none;
+  border-color: #3f729b;
+  color: #386589;
+  border-width: 1px;
+}
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):hover {
+  background: #3f729b;
+  border-color: #3f729b;
+  color: white;
+}
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):focus, .btn.btn-outline-instagram:not(:disabled):not(.disabled):active {
+  background: #2d526f;
+  border-color: #2d526f;
+  color: white;
+}
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(63, 114, 155, 0.4);
+}
+.btn.btn-outline-instagram.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(63, 114, 155, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-instagram:hover {
+  -webkit-animation: none;
+}
+.btn.btn-dribbble {
+  background: #ea4c89;
+  border-color: #ea4c89;
+  color: white;
+}
+.btn.btn-dribbble:not(:disabled):not(.disabled):hover, .btn.btn-dribbble:not(:disabled):not(.disabled):focus, .btn.btn-dribbble:not(:disabled):not(.disabled):active {
+  background: #e51e6b;
+  border-color: #e51e6b;
+}
+.btn.btn-dribbble:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 76, 137, 0.4) !important;
+}
+.btn.btn-dribbble.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 76, 137, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-dribbble:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-dribbble {
+  background: none;
+  border-color: #ea4c89;
+  color: #e7357a;
+  border-width: 1px;
+}
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):hover {
+  background: #ea4c89;
+  border-color: #ea4c89;
+  color: white;
+}
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):focus, .btn.btn-outline-dribbble:not(:disabled):not(.disabled):active {
+  background: #df1a66;
+  border-color: #df1a66;
+  color: white;
+}
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 76, 137, 0.4);
+}
+.btn.btn-outline-dribbble.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 76, 137, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-dribbble:hover {
+  -webkit-animation: none;
+}
+.btn.btn-youtube {
+  background: #cd201f;
+  border-color: #cd201f;
+  color: white;
+}
+.btn.btn-youtube:not(:disabled):not(.disabled):hover, .btn.btn-youtube:not(:disabled):not(.disabled):focus, .btn.btn-youtube:not(:disabled):not(.disabled):active {
+  background: #a11918;
+  border-color: #a11918;
+}
+.btn.btn-youtube:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(205, 32, 31, 0.4) !important;
+}
+.btn.btn-youtube.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(205, 32, 31, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-youtube:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-youtube {
+  background: none;
+  border-color: #cd201f;
+  color: #b71d1c;
+  border-width: 1px;
+}
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):hover {
+  background: #cd201f;
+  border-color: #cd201f;
+  color: white;
+}
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):focus, .btn.btn-outline-youtube:not(:disabled):not(.disabled):active {
+  background: #981817;
+  border-color: #981817;
+  color: white;
+}
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(205, 32, 31, 0.4);
+}
+.btn.btn-outline-youtube.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(205, 32, 31, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-youtube:hover {
+  -webkit-animation: none;
+}
+.btn.btn-github {
+  background: #00405d;
+  border-color: #00405d;
+  color: white;
+}
+.btn.btn-github:not(:disabled):not(.disabled):hover, .btn.btn-github:not(:disabled):not(.disabled):focus, .btn.btn-github:not(:disabled):not(.disabled):active {
+  background: #001d2a;
+  border-color: #001d2a;
+}
+.btn.btn-github:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 64, 93, 0.4) !important;
+}
+.btn.btn-github.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 64, 93, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-github:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-github {
+  background: none;
+  border-color: #00405d;
+  color: #002e44;
+  border-width: 1px;
+}
+.btn.btn-outline-github:not(:disabled):not(.disabled):hover {
+  background: #00405d;
+  border-color: #00405d;
+  color: white;
+}
+.btn.btn-outline-github:not(:disabled):not(.disabled):focus, .btn.btn-outline-github:not(:disabled):not(.disabled):active {
+  background: #001620;
+  border-color: #001620;
+  color: white;
+}
+.btn.btn-outline-github:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 64, 93, 0.4);
+}
+.btn.btn-outline-github.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 64, 93, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-github:hover {
+  -webkit-animation: none;
+}
+.btn.btn-behance {
+  background: #1769ff;
+  border-color: #1769ff;
+  color: white;
+}
+.btn.btn-behance:not(:disabled):not(.disabled):hover, .btn.btn-behance:not(:disabled):not(.disabled):focus, .btn.btn-behance:not(:disabled):not(.disabled):active {
+  background: #0050e3;
+  border-color: #0050e3;
+}
+.btn.btn-behance:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(23, 105, 255, 0.4) !important;
+}
+.btn.btn-behance.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(23, 105, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-behance:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-behance {
+  background: none;
+  border-color: #1769ff;
+  color: #0059fd;
+  border-width: 1px;
+}
+.btn.btn-outline-behance:not(:disabled):not(.disabled):hover {
+  background: #1769ff;
+  border-color: #1769ff;
+  color: white;
+}
+.btn.btn-outline-behance:not(:disabled):not(.disabled):focus, .btn.btn-outline-behance:not(:disabled):not(.disabled):active {
+  background: #004dd9;
+  border-color: #004dd9;
+  color: white;
+}
+.btn.btn-outline-behance:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(23, 105, 255, 0.4);
+}
+.btn.btn-outline-behance.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(23, 105, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-behance:hover {
+  -webkit-animation: none;
+}
+.btn.btn-skype {
+  background: #00aff0;
+  border-color: #00aff0;
+  color: white;
+}
+.btn.btn-skype:not(:disabled):not(.disabled):hover, .btn.btn-skype:not(:disabled):not(.disabled):focus, .btn.btn-skype:not(:disabled):not(.disabled):active {
+  background: #008abd;
+  border-color: #008abd;
+}
+.btn.btn-skype:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 175, 240, 0.4) !important;
+}
+.btn.btn-skype.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 175, 240, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-skype:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-skype {
+  background: none;
+  border-color: #00aff0;
+  color: #009cd7;
+  border-width: 1px;
+}
+.btn.btn-outline-skype:not(:disabled):not(.disabled):hover {
+  background: #00aff0;
+  border-color: #00aff0;
+  color: white;
+}
+.btn.btn-outline-skype:not(:disabled):not(.disabled):focus, .btn.btn-outline-skype:not(:disabled):not(.disabled):active {
+  background: #0082b3;
+  border-color: #0082b3;
+  color: white;
+}
+.btn.btn-outline-skype:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 175, 240, 0.4);
+}
+.btn.btn-outline-skype.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 175, 240, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-skype:hover {
+  -webkit-animation: none;
+}
+.btn.btn-yahoo {
+  background: #410093;
+  border-color: #410093;
+  color: white;
+}
+.btn.btn-yahoo:not(:disabled):not(.disabled):hover, .btn.btn-yahoo:not(:disabled):not(.disabled):focus, .btn.btn-yahoo:not(:disabled):not(.disabled):active {
+  background: #2a0060;
+  border-color: #2a0060;
+}
+.btn.btn-yahoo:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(65, 0, 147, 0.4) !important;
+}
+.btn.btn-yahoo.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(65, 0, 147, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-yahoo:hover {
+  -webkit-animation: none;
+}
+.btn.btn-outline-yahoo {
+  background: none;
+  border-color: #410093;
+  color: #36007a;
+  border-width: 1px;
+}
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):hover {
+  background: #410093;
+  border-color: #410093;
+  color: white;
+}
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):focus, .btn.btn-outline-yahoo:not(:disabled):not(.disabled):active {
+  background: #260056;
+  border-color: #260056;
+  color: white;
+}
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(65, 0, 147, 0.4);
+}
+.btn.btn-outline-yahoo.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(65, 0, 147, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+.btn.btn-outline-yahoo:hover {
+  -webkit-animation: none;
+}
+.btn.btn-apple, .btn.btn-google-play {
+  border-radius: 7px;
+}
+.btn.btn-apple img, .btn.btn-google-play img {
+  width: 35px;
+  margin-right: 10px;
+}
+.btn.btn-apple i, .btn.btn-google-play i {
+  font-size: 40px;
+  margin-right: 10px;
+}
+.btn.btn-apple > span, .btn.btn-google-play > span {
+  display: flex;
+  flex-direction: column;
+  text-align: left;
+}
+.btn.btn-apple > span span:nth-child(2), .btn.btn-google-play > span span:nth-child(2) {
+  font-size: 20px;
+  font-weight: 600;
+  margin-top: 5px;
+}
+.btn.btn-apple:hover, .btn.btn-apple:active, .btn.btn-apple:focus, .btn.btn-google-play:hover, .btn.btn-google-play:active, .btn.btn-google-play:focus {
+  background: #040507;
+  color: white;
+}
+.btn.btn-apple {
+  border: 1px solid #040507;
+  color: #040507;
+}
+.btn.btn-google-play {
+  background: #040507;
+  color: white;
+}
+.btn.btn-google-play > span span:nth-child(1) {
+  text-transform: uppercase;
+  font-size: 12px;
+}
+
+@-webkit-keyframes pulse {
+  to {
+    box-shadow: 0 0 0 10px rgba(232, 76, 61, 0);
+  }
+}
+
+@keyframes pulse {
+  to {
+    box-shadow: 0 0 0 10px rgba(232, 76, 61, 0);
+  }
+}
+.progress .progress-bar.progress-bar-striped {
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent) !important;
+  background-size: 1rem 1rem !important;
+}
+.progress .progress-bar:not(.progress-bar-striped) {
+  background: #0081ff;
+}
+
+.dropdown {
+  display: inline;
+}
+
+.dropdown-menu {
+  margin-top: -10px;
+  visibility: hidden;
+  opacity: 0;
+  height: 0;
+  display: block !important;
+  transition: margin-top 0.3s, opacity 0.3s;
+  border-top: 1px solid #eee !important;
+}
+.dropdown-menu ul.list-group {
+  max-height: 300px;
+}
+.dropdown-menu.show {
+  margin-top: 0;
+  visibility: visible;
+  opacity: 1;
+  height: auto;
+}
+
+.dropdown-header {
+  font-size: inherit;
+  padding: 10px 20px;
+  border-bottom: 1px solid #f0f0f0;
+}
+
+.dropdown-body {
+  padding: 10px 20px;
+}
+
+.dropdown-menu {
+  border-radius: 0.5rem;
+  font-size: 14px;
+  border: none;
+  box-shadow: 0px 5px 10px -1px rgba(0, 0, 0, 0.15);
+  overflow: hidden;
+}
+.dropdown-menu.dropdown-menu-big {
+  padding: 0;
+  width: 300px;
+}
+.dropdown-menu .dropdown-menu-body {
+  max-height: 400px;
+  overflow: auto;
+}
+.dropdown-menu .dropdown-menu-title {
+  background-color: #0081ff;
+  padding: 15px 20px;
+  color: white;
+  background-size: cover !important;
+  background-position: center !important;
+}
+.dropdown-menu .dropdown-menu-footer {
+  padding: 10px 20px;
+}
+.dropdown-menu ul li.dropdown-menu-title {
+  background: red;
+  margin: 5px 0;
+  padding: 0px 20px 5px;
+  border-bottom: 1px solid #ebebeb;
+}
+.dropdown-menu ul li.dropdown-menu-title:first-child {
+  margin-top: 0;
+}
+.dropdown-menu .dropdown-item:hover, .dropdown-menu .dropdown-item:focus, .dropdown-menu .dropdown-item:active {
+  background: #f5f5f5;
+  text-decoration: none;
+  color: #0081ff;
+}
+
+table .dropdown {
+  line-height: initial;
+}
+
+.badge {
+  padding: 5px 10px;
+  font-size: 11px;
+}
+.badge.badge-success {
+  background: #28c76f;
+}
+.badge.badge-danger {
+  background: #ea5455;
+}
+.badge.badge-secondary {
+  background: #aa66cc;
+}
+.badge.badge-info {
+  background: #33b5e5;
+}
+.badge.badge-warning {
+  background: #ff9f43;
+}
+.badge.badge-dark {
+  background: #293134;
+}
+.badge.badge-primary {
+  background: #0081ff;
+}
+.badge.badge-light {
+  background: #afb8bd;
+}
+
+.btn {
+  position: relative;
+}
+.btn .badge {
+  padding: 2px 6px;
+  right: 7px;
+  top: -7px;
+  position: absolute;
+}
+
+.collapse .card, .collapse .app-block .app-content .app-action, .app-block .app-content .collapse .app-action, .collapse .chat-block {
+  border: 1px solid #e1e1e1;
+  box-shadow: none;
+}
+
+.media > img, .media > a > img, .header form .input-group .input-group-append .media > button.btn > img {
+  width: 80px;
+}
+
+.accordion .card, .accordion .app-block .app-content .app-action, .app-block .app-content .accordion .app-action, .accordion .chat-block {
+  margin-bottom: 0;
+  border: 1px solid #ebebeb;
+}
+.accordion .card .card-header, .accordion .app-block .app-content .app-action .card-header, .app-block .app-content .accordion .app-action .card-header, .accordion .chat-block .card-header {
+  display: flex;
+  height: 50px;
+  padding: 0 10px;
+  align-items: center;
+}
+.accordion .card .card-header button, .accordion .app-block .app-content .app-action .card-header button, .app-block .app-content .accordion .app-action .card-header button, .accordion .chat-block .card-header button {
+  display: block;
+}
+.accordion.custom-accordion {
+  border: 1px solid #ebebeb;
+  border-radius: 5px;
+  overflow: hidden;
+}
+.accordion.custom-accordion .accordion-row a.accordion-header, .accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn {
+  color: #293134;
+  border-bottom: 1px solid #ebebeb;
+  border-top: 1px solid #ebebeb;
+  padding: 10px 20px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin-top: -1px;
+}
+.accordion.custom-accordion .accordion-row a.accordion-header .accordion-status-icon.open, .accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.open, .header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn .accordion-status-icon.open {
+  display: none;
+}
+.accordion.custom-accordion .accordion-row a.accordion-header:hover, .accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn:hover, .header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn:hover, .accordion.custom-accordion .accordion-row a.accordion-header:focus, .accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn:focus, .header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn:focus {
+  color: #0081ff;
+}
+.accordion.custom-accordion .accordion-row .accordion-body {
+  display: none;
+  padding: 10px 20px;
+}
+.accordion.custom-accordion .accordion-row.open a.accordion-header, .accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn {
+  background: white;
+}
+.accordion.custom-accordion .accordion-row.open a.accordion-header .accordion-status-icon.open, .accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.open, .header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn .accordion-status-icon.open {
+  display: block;
+}
+.accordion.custom-accordion .accordion-row.open a.accordion-header .accordion-status-icon.close, .accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.close, .header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn .accordion-status-icon.close {
+  display: none;
+}
+.accordion.custom-accordion .accordion-row.open .accordion-body {
+  display: block;
+}
+.accordion.custom-accordion .accordion-row:first-child a.accordion-header, .accordion.custom-accordion .accordion-row:first-child .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append .accordion.custom-accordion .accordion-row:first-child button.accordion-header.btn {
+  border-top: none;
+}
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) a.accordion-header:hover, .accordion.custom-accordion.accordion-primary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row:not(.open) button.accordion-header.btn:hover, .accordion.custom-accordion.accordion-primary .accordion-row:not(.open) a.accordion-header:focus, .accordion.custom-accordion.accordion-primary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #0081ff;
+}
+.accordion.custom-accordion.accordion-primary .accordion-row.open a.accordion-header, .accordion.custom-accordion.accordion-primary .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row.open button.accordion-header.btn {
+  background: #0081ff;
+  color: white;
+}
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) a.accordion-header:hover, .accordion.custom-accordion.accordion-success .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row:not(.open) button.accordion-header.btn:hover, .accordion.custom-accordion.accordion-success .accordion-row:not(.open) a.accordion-header:focus, .accordion.custom-accordion.accordion-success .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #28c76f;
+}
+.accordion.custom-accordion.accordion-success .accordion-row.open a.accordion-header, .accordion.custom-accordion.accordion-success .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row.open button.accordion-header.btn {
+  background: #28c76f;
+  color: white;
+}
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) a.accordion-header:hover, .accordion.custom-accordion.accordion-danger .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row:not(.open) button.accordion-header.btn:hover, .accordion.custom-accordion.accordion-danger .accordion-row:not(.open) a.accordion-header:focus, .accordion.custom-accordion.accordion-danger .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #ea5455;
+}
+.accordion.custom-accordion.accordion-danger .accordion-row.open a.accordion-header, .accordion.custom-accordion.accordion-danger .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row.open button.accordion-header.btn {
+  background: #ea5455;
+  color: white;
+}
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) a.accordion-header:hover, .accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) button.accordion-header.btn:hover, .accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) a.accordion-header:focus, .accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #aa66cc;
+}
+.accordion.custom-accordion.accordion-secondary .accordion-row.open a.accordion-header, .accordion.custom-accordion.accordion-secondary .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row.open button.accordion-header.btn {
+  background: #aa66cc;
+  color: white;
+}
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) a.accordion-header:hover, .accordion.custom-accordion.accordion-light .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row:not(.open) button.accordion-header.btn:hover, .accordion.custom-accordion.accordion-light .accordion-row:not(.open) a.accordion-header:focus, .accordion.custom-accordion.accordion-light .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #293134;
+}
+.accordion.custom-accordion.accordion-light .accordion-row.open a.accordion-header, .accordion.custom-accordion.accordion-light .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row.open button.accordion-header.btn {
+  background: #afb8bd;
+  color: #293134;
+}
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) a.accordion-header:hover, .accordion.custom-accordion.accordion-warning .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row:not(.open) button.accordion-header.btn:hover, .accordion.custom-accordion.accordion-warning .accordion-row:not(.open) a.accordion-header:focus, .accordion.custom-accordion.accordion-warning .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #ff9f43;
+}
+.accordion.custom-accordion.accordion-warning .accordion-row.open a.accordion-header, .accordion.custom-accordion.accordion-warning .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row.open button.accordion-header.btn {
+  background: #ff9f43;
+  color: #293134;
+}
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) a.accordion-header:hover, .accordion.custom-accordion.accordion-info .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row:not(.open) button.accordion-header.btn:hover, .accordion.custom-accordion.accordion-info .accordion-row:not(.open) a.accordion-header:focus, .accordion.custom-accordion.accordion-info .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #33b5e5;
+}
+.accordion.custom-accordion.accordion-info .accordion-row.open a.accordion-header, .accordion.custom-accordion.accordion-info .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row.open button.accordion-header.btn {
+  background: #33b5e5;
+  color: white;
+}
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) a.accordion-header:hover, .accordion.custom-accordion.accordion-dark .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row:not(.open) button.accordion-header.btn:hover, .accordion.custom-accordion.accordion-dark .accordion-row:not(.open) a.accordion-header:focus, .accordion.custom-accordion.accordion-dark .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #293134;
+}
+.accordion.custom-accordion.accordion-dark .accordion-row.open a.accordion-header, .accordion.custom-accordion.accordion-dark .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row.open button.accordion-header.btn {
+  background: #293134;
+  color: white;
+}
+
+.nicescroll-cursors {
+  border: none !important;
+}
+
+body:not(.dark) .nicescroll-cursors {
+  background-color: rgba(41, 49, 52, 0.4) !important;
+  width: 3px !important;
+}
+
+.isotope-item {
+  z-index: 2;
+}
+
+.isotope-hidden.isotope-item {
+  pointer-events: none;
+  z-index: 1;
+}
+
+.isotope,
+.isotope .isotope-item {
+  transition-duration: 0.8s;
+}
+
+.isotope {
+  transition-property: height, width;
+}
+
+.isotope .isotope-item {
+  transition-property: transform, opacity;
+}
+
+.gallery-container img {
+  width: 100%;
+}
+
+.daterangepicker td.active {
+  background: #0081ff;
+}
+.daterangepicker td.active:hover {
+  background: #0081ff;
+}
+
+.daterangepicker .ranges li.active {
+  background: #0081ff;
+}
+
+.alert {
+  border-color: transparent !important;
+}
+.alert .close {
+  height: 100%;
+  width: 44px;
+  justify-content: center;
+  align-items: center;
+  padding: 0;
+  display: flex;
+}
+.alert .close > * {
+  font-size: initial;
+  text-shadow: none;
+  line-height: 0;
+}
+.alert.alert-primary {
+  background: rgba(0, 129, 255, 0.3) !important;
+}
+.alert.alert-primary.alert-with-border {
+  border-left: 3px solid #0081ff !important;
+}
+.alert.alert-secondary {
+  background: rgba(170, 102, 204, 0.3) !important;
+}
+.alert.alert-secondary.alert-with-border {
+  border-left: 3px solid #aa66cc !important;
+}
+.alert.alert-success {
+  background: rgba(40, 199, 111, 0.3) !important;
+}
+.alert.alert-success.alert-with-border {
+  border-left: 3px solid #28c76f !important;
+}
+.alert.alert-danger {
+  background: rgba(234, 84, 85, 0.3) !important;
+}
+.alert.alert-danger.alert-with-border {
+  border-left: 3px solid #ea5455 !important;
+}
+.alert.alert-warning {
+  background: rgba(255, 159, 67, 0.3) !important;
+}
+.alert.alert-warning.alert-with-border {
+  border-left: 3px solid #ff9f43 !important;
+}
+.alert.alert-info {
+  background: rgba(51, 181, 229, 0.3) !important;
+}
+.alert.alert-info.alert-with-border {
+  border-left: 3px solid #33b5e5 !important;
+}
+.alert.alert-dark {
+  background: #d4d5d8 !important;
+  color: #293134 !important;
+}
+.alert.alert-dark.alert-with-border {
+  border-left: 3px solid #293134 !important;
+}
+
+.breadcrumb {
+  background: none;
+  padding: 0;
+  margin-bottom: 30px;
+}
+.breadcrumb .breadcrumb-item + .breadcrumb-item::before {
+  font-family: "themify";
+  content: "\e649";
+  font-size: 10px;
+  margin-right: 0;
+}
+.breadcrumb .breadcrumb-item:before {
+  font-family: "themify";
+  content: "\e69b";
+  margin-right: 0.5rem;
+}
+.breadcrumb .breadcrumb-item.active {
+  color: #0081ff;
+}
+
+.notify .alert {
+  border: none;
+  box-shadow: 0 2px 10px 0 rgba(24, 28, 33, 0.04);
+}
+.notify .alert .alert-heading {
+  font-size: 16px;
+  font-weight: 600;
+}
+.notify.open {
+  transform: translate(0);
+}
+
+.pagination .page-item.active .page-link {
+  background: #0081ff;
+  border-color: transparent;
+}
+.pagination .page-item .page-link:hover, .pagination .page-item .page-link:focus {
+  text-decoration: none;
+}
+.pagination.pagination-rounded .page-item {
+  margin: 0 5px;
+}
+.pagination.pagination-rounded .page-item .page-link {
+  border-radius: 50%;
+  padding: 0;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 40px;
+  width: 40px;
+}
+.pagination.pagination-rounded.pagination-sm .page-link {
+  height: 30px;
+  width: 30px;
+}
+.pagination.pagination-rounded.pagination-lg .page-link {
+  height: 60px;
+  width: 60px;
+}
+
+.tourStep {
+  border: none;
+}
+.tourStep.right {
+  margin-left: 10px;
+}
+.tourStep.left {
+  margin-right: 10px;
+}
+.tourStep.top {
+  margin-top: -10px;
+}
+.tourStep.bottom {
+  margin-top: 10px;
+}
+.tourStep .popover-navigation {
+  border-top: 1px solid #ddd;
+  padding: 0.5rem 0.75rem;
+  display: flex;
+  align-items: center;
+}
+.tourStep .popover-navigation span {
+  font-size: 12px;
+  color: #9b9b9b;
+}
+.tourStep .popover-navigation .popover-navigation-buttons {
+  margin-left: auto;
+}
+.tourStep .popover-navigation .popover-navigation-buttons .btn {
+  margin-left: 5px;
+}
+
+.swal-modal {
+  border-radius: 0.5rem;
+}
+.swal-modal .swal-title {
+  font-size: 20px;
+}
+.swal-modal .swal-text {
+  text-align: center;
+}
+.swal-modal .swal-button {
+  padding: 0.375rem 0.75rem;
+}
+.swal-modal .swal-button.swal-button--confirm {
+  background: #0081ff;
+}
+.swal-modal .swal-button.swal-button--danger {
+  background: #ea5455;
+}
+.swal-modal .swal-button.swal-button--cancel {
+  background: #afb8bd;
+}
+.swal-modal .swal-icon--error {
+  border-color: #f4a6a6;
+}
+.swal-modal .swal-icon--error .swal-icon--error__line {
+  background: #f4a6a6;
+}
+.irs .irs-single, .irs .irs-to, .irs .irs-from {
+  background: #0081ff;
+}
+.irs .irs-single:before, .irs .irs-to:before, .irs .irs-from:before {
+  border-top-color: #0081ff;
+}
+.irs .irs-handle {
+  border-color: #0081ff;
+}
+.irs .irs-bar {
+  background: #0081ff;
+}
+
+.select2 {
+  width: 100% !important;
+}
+
+.select2.select2-container .select2-selection {
+  border: 1px solid #ced4da;
+}
+.select2.select2-container .select2-selection .select2-selection__placeholder {
+  line-height: calc(2.25rem + 2px);
+}
+.select2.select2-container .select2-selection .select2-selection__arrow {
+  height: calc(2.25rem + 2px);
+  width: 30px;
+}
+.select2.select2-container .select2-selection .select2-selection__choice {
+  display: flex;
+  align-items: center;
+  border: none;
+}
+.select2.select2-container .select2-selection .select2-selection__choice .select2-selection__choice__remove {
+  font-size: 16px;
+  padding: 0 5px 0 3px;
+}
+.select2.select2-container .select2-selection.select2-container--focus {
+  border-color: red;
+}
+
+.select2-container--default .select2-results__option--highlighted[aria-selected] {
+  background-color: #0081ff;
+  color: white;
+}
+
+.select2-container--default.select2-container--focus .select2-selection--multiple {
+  border-color: rgba(0, 129, 255, 0.8);
+}
+
+.select2-container--default .select2-search--dropdown .select2-search__field {
+  height: calc(2.25rem + 2px);
+  padding: 0.375rem 0.75rem;
+}
+
+body.modal-open .modal.fade .modal-dialog {
+  transform: translate(0, 0) scale(0.9);
+}
+body.modal-open .modal.show .modal-dialog {
+  transform: translate(0, 0) scale(1);
+}
+
+.modal .modal-dialog .modal-content {
+  border: none;
+  box-shadow: none;
+  border-radius: 0.5rem;
+}
+.modal .modal-dialog .modal-content .modal-header {
+  height: 60px;
+  padding: 0 20px;
+  display: flex;
+  align-items: center;
+  background-color: #ebebeb;
+  border-bottom: none;
+}
+.modal .modal-dialog .modal-content .modal-header .modal-title {
+  font-size: 17px;
+  font-weight: 600;
+}
+.modal .modal-dialog .modal-content .modal-header button.close {
+  background-color: white;
+  text-shadow: none;
+  opacity: 1;
+  margin: 0;
+  font-size: 23px;
+  padding: 0;
+  width: 30px;
+  height: 30px;
+  display: flex;
+  border-radius: 50%;
+  align-items: center;
+  justify-content: center;
+}
+.modal .modal-dialog .modal-content .modal-header button.close:hover {
+  color: #646464;
+}
+.modal .modal-dialog .modal-content .modal-header button.close > * {
+  font-size: initial;
+}
+.modal .modal-dialog .modal-content .modal-body {
+  padding: 1.5rem;
+}
+.modal .modal-dialog .modal-content .modal-footer {
+  height: 60px;
+}
+
+.wickedpicker {
+  border: none;
+  box-shadow: 0 2px 15px 0 rgba(69, 65, 78, 0.18);
+  width: auto;
+  border-radius: 0;
+  height: auto;
+}
+.wickedpicker .wickedpicker__controls {
+  padding: 10px 15px;
+}
+.wickedpicker .wickedpicker__controls__control {
+  width: 40px;
+}
+.wickedpicker .wickedpicker__controls__control .wickedpicker__controls__control-up:before {
+  content: "\f077";
+  font: normal normal normal 14px/1 FontAwesome;
+}
+.wickedpicker .wickedpicker__controls__control .wickedpicker__controls__control-down:after {
+  content: "\f078";
+  font: normal normal normal 14px/1 FontAwesome;
+}
+.wickedpicker .wickedpicker__controls__control .hover-state {
+  color: #0081ff;
+}
+.wickedpicker .wickedpicker__title {
+  display: none;
+}
+
+.clearable-picker {
+  position: relative;
+}
+.clearable-picker [data-clear-picker] {
+  cursor: pointer;
+  font-size: 20px;
+  position: absolute;
+  right: 10px;
+  top: 50%;
+  height: 17px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 17px;
+  color: #646464;
+  margin-top: -8.5px;
+  bottom: 0;
+}
+
+.avatar {
+  display: inline-block;
+  margin-bottom: 0;
+  height: 3rem;
+  width: 3rem;
+  border-radius: 50%;
+}
+.avatar .avatar-title {
+  background: #d7d7d7;
+  width: 100%;
+  height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  text-transform: uppercase;
+  font-size: 19px;
+}
+.avatar > a, .header form .input-group .input-group-append .avatar > button.btn {
+  width: 100%;
+  height: 100%;
+  display: block;
+  transition: color 0.3s;
+  color: #0081ff;
+}
+.avatar > a:hover, .header form .input-group .input-group-append .avatar > button.btn:hover, .avatar > a:focus, .header form .input-group .input-group-append .avatar > button.btn:focus {
+  color: #646464;
+}
+.avatar > a > img, .header form .input-group .input-group-append .avatar > button.btn > img, .avatar > img {
+  width: 100%;
+  height: 100%;
+  -o-object-fit: cover;
+     object-fit: cover;
+}
+.avatar.avatar-sm {
+  height: 2rem;
+  width: 2rem;
+}
+.avatar.avatar-sm .avatar-title {
+  font-size: 14px;
+}
+.avatar.avatar-sm.avatar-state-primary:before, .avatar.avatar-sm.avatar-state-success:before, .avatar.avatar-sm.avatar-state-danger:before, .avatar.avatar-sm.avatar-state-warning:before, .avatar.avatar-sm.avatar-state-info:before, .avatar.avatar-sm.avatar-state-secondary:before, .avatar.avatar-sm.avatar-state-light:before, .avatar.avatar-sm.avatar-state-dark:before {
+  width: 0.8rem;
+  height: 0.8rem;
+}
+.avatar.avatar-lg {
+  height: 4.5rem;
+  width: 4.5rem;
+}
+.avatar.avatar-lg .avatar-title {
+  font-size: 29px;
+}
+.avatar.avatar-lg.avatar-state-primary:before, .avatar.avatar-lg.avatar-state-success:before, .avatar.avatar-lg.avatar-state-danger:before, .avatar.avatar-lg.avatar-state-warning:before, .avatar.avatar-lg.avatar-state-info:before, .avatar.avatar-lg.avatar-state-secondary:before, .avatar.avatar-lg.avatar-state-light:before, .avatar.avatar-lg.avatar-state-dark:before {
+  width: 1.3rem;
+  height: 1.3rem;
+  right: 4px;
+}
+.avatar.avatar-xl {
+  height: 5.8rem;
+  width: 5.8rem;
+}
+.avatar.avatar-xl .avatar-title {
+  font-size: 39px;
+}
+.avatar.avatar-xl.avatar-state-primary:before, .avatar.avatar-xl.avatar-state-success:before, .avatar.avatar-xl.avatar-state-danger:before, .avatar.avatar-xl.avatar-state-warning:before, .avatar.avatar-xl.avatar-state-info:before, .avatar.avatar-xl.avatar-state-secondary:before, .avatar.avatar-xl.avatar-state-light:before, .avatar.avatar-xl.avatar-state-dark:before {
+  width: 1.6rem;
+  height: 1.6rem;
+  top: 3px;
+  right: 3px;
+}
+.avatar.avatar-state-primary, .avatar.avatar-state-success, .avatar.avatar-state-danger, .avatar.avatar-state-warning, .avatar.avatar-state-info, .avatar.avatar-state-secondary, .avatar.avatar-state-light, .avatar.avatar-state-dark {
+  position: relative;
+}
+.avatar.avatar-state-primary:before, .avatar.avatar-state-success:before, .avatar.avatar-state-danger:before, .avatar.avatar-state-warning:before, .avatar.avatar-state-info:before, .avatar.avatar-state-secondary:before, .avatar.avatar-state-light:before, .avatar.avatar-state-dark:before {
+  content: "";
+  position: absolute;
+  display: block;
+  width: 1rem;
+  height: 1rem;
+  border-radius: 50%;
+  top: 0px;
+  right: 0px;
+  border: 3px solid white;
+}
+.avatar.avatar-state-primary:before {
+  background: #0081ff;
+}
+.avatar.avatar-state-success:before {
+  background: #28c76f;
+}
+.avatar.avatar-state-danger:before {
+  background: #ea5455;
+}
+.avatar.avatar-state-warning:before {
+  background: #ff9f43;
+}
+.avatar.avatar-state-info:before {
+  background: #33b5e5;
+}
+.avatar.avatar-state-secondary:before {
+  background: #aa66cc;
+}
+.avatar.avatar-state-light:before {
+  background: #afb8bd;
+}
+.avatar.avatar-state-dark:before {
+  background: #293134;
+}
+
+.avatar-group {
+  display: inline-flex;
+}
+.avatar-group .avatar {
+  margin-right: -1rem;
+  border: 2px solid white;
+}
+.avatar-group .avatar:last-child {
+  margin-right: 0;
+}
+.avatar-group .avatar:hover {
+  position: relative;
+  z-index: 1;
+}
+
+.dropzone {
+  border-width: 1px;
+  border-color: #0081ff;
+}
+
+body.form-membership {
+  background-attachment: fixed;
+  background-size: cover;
+  padding: 3rem 0;
+}
+body.form-membership .form-wrapper {
+  background-color: white;
+  box-shadow: 0 3px 10px rgba(62, 85, 120, 0.045);
+  padding: 3rem;
+  border-radius: 0.5rem;
+  width: 430px;
+  margin: 50px auto;
+  text-align: center;
+}
+body.form-membership .form-wrapper #logo {
+  margin: 1rem 0 3rem;
+}
+body.form-membership .form-wrapper #logo img:not(.logo) {
+  display: none;
+}
+body.form-membership .form-wrapper h5 {
+  text-align: center;
+  margin-bottom: 2rem;
+}
+body.form-membership .form-wrapper form .form-control, body.form-membership .form-wrapper form .swal-modal input.swal-content__input, .swal-modal body.form-membership .form-wrapper form input.swal-content__input {
+  margin-bottom: 1.5rem;
+}
+body.form-membership .form-wrapper hr {
+  margin: 2rem 0;
+}
+
+.user-page {
+  height: 100vh;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  overflow: auto;
+}
+.user-page .card, .user-page .app-block .app-content .app-action, .app-block .app-content .user-page .app-action, .user-page .chat-block {
+  width: 500px;
+}
+.user-page .card .card-body, .user-page .app-block .app-content .app-action .card-body, .app-block .app-content .user-page .app-action .card-body, .user-page .chat-block .card-body {
+  padding: 50px;
+}
+
+.chat-app {
+  overflow: hidden;
+  padding-bottom: 30px;
+}
+.chat-app .content-footer {
+  display: none;
+}
+.chat-app.horizontal-navigation .chat-block {
+  height: calc(100vh - 190px);
+}
+.chat-app.horizontal-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-top: 160px;
+}
+
+.chat-block {
+  height: calc(100vh - 135px);
+  border-radius: 0.5rem;
+  overflow: hidden;
+  margin-bottom: 0;
+}
+.chat-block .chat-sidebar {
+  padding: 1.5rem;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  background-color: #f8fafb;
+}
+.chat-block .chat-sidebar .chat-sidebar-header form {
+  margin: 1.5rem 0;
+}
+.chat-block .chat-sidebar .chat-sidebar-content {
+  flex: 1;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  overflow: auto;
+}
+.chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item {
+  background: white;
+  border-radius: 0.5rem;
+  border: 1px solid transparent;
+  margin-bottom: 1rem;
+}
+.chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item.active {
+  color: black;
+  border-color: #0081ff;
+}
+.chat-block .chat-content {
+  display: flex;
+  flex-direction: column;
+  height: 100%;
+}
+.chat-block .chat-content .mobile-chat-close-btn {
+  display: none;
+}
+.chat-block .chat-content .chat-header {
+  padding: 1.5rem;
+}
+.chat-block .chat-content .messages {
+  padding: 1.5rem;
+  display: flex;
+  flex-direction: column;
+  align-items: flex-start;
+  flex: 1;
+  overflow-x: hidden;
+}
+.chat-block .chat-content .messages .message-item {
+  margin-bottom: 20px;
+  padding-left: 10px;
+  display: flex;
+  align-items: center;
+  position: relative;
+}
+.chat-block .chat-content .messages .message-item .time {
+  margin-left: 1rem;
+}
+.chat-block .chat-content .messages .message-item img {
+  max-width: 30%;
+  border-radius: 0.5rem;
+}
+.chat-block .chat-content .messages .message-item:not(.message-media):not(.message-item-divider):before {
+  content: "";
+  border: 10px solid transparent;
+  border-right-color: #f0f0f0;
+  position: absolute;
+  top: 8px;
+  left: -10px;
+  z-index: 1;
+}
+.chat-block .chat-content .messages .message-item .message-item-content {
+  max-width: 75%;
+  background-color: #f0f0f0;
+  padding: 7px 15px;
+  line-height: 1.5rem;
+  border-radius: 0.5rem;
+  position: relative;
+  z-index: 2;
+}
+.chat-block .chat-content .messages .message-item.me {
+  flex-direction: row-reverse;
+  margin-left: auto;
+  padding-left: 0px;
+  padding-right: 10px;
+}
+.chat-block .chat-content .messages .message-item.me .time {
+  margin-left: 0;
+  margin-right: 1rem;
+}
+.chat-block .chat-content .messages .message-item.me:not(.message-item-divider):before {
+  left: auto;
+  right: -10px;
+  border-left-color: #0081ff;
+  border-right-color: transparent;
+}
+.chat-block .chat-content .messages .message-item.me .message-item-content {
+  background-color: #0081ff;
+  color: rgba(255, 255, 255, 0.9);
+}
+.chat-block .chat-content .messages .message-item.message-item-divider {
+  width: 100%;
+  display: flex;
+}
+.chat-block .chat-content .messages .message-item.message-item-divider span {
+  padding: 0 10px;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+.chat-block .chat-content .messages .message-item.message-item-divider:before, .chat-block .chat-content .messages .message-item.message-item-divider:after {
+  content: "";
+  display: block;
+  height: 1px;
+  background-color: #f0f0f0;
+  flex: 1;
+}
+.chat-block .chat-content .chat-footer {
+  padding: 1.5rem;
+}
+.chat-block .chat-content .chat-footer .chat-footer-buttons button {
+  margin-left: 0.5rem;
+}
+
+.table:not(.table-bordered) thead th {
+  border-top: none;
+  border-bottom-width: 1px;
+  font-weight: 500;
+  text-transform: uppercase;
+  font-size: 11px;
+  letter-spacing: 0.5px;
+}
+.table:not(.table-bordered) td {
+  vertical-align: middle;
+  line-height: 1;
+  white-space: nowrap;
+}
+.table .dropdown-menu {
+  margin-top: 0;
+}
+.table.table-lg td {
+  padding: 1.3rem 0.75rem;
+}
+.table tr.tr-selected {
+  background-color: whitesmoke;
+}
+.table.table-striped tbody tr:nth-of-type(odd) {
+  background-color: rgba(0, 0, 0, 0.03);
+}
+
+.table-responsive-stack tr {
+  display: flex;
+  flex-direction: row;
+}
+
+.table-responsive-stack td,
+.table-responsive-stack th {
+  display: block;
+  flex: 1 1 auto;
+}
+
+.timeline .timeline-item {
+  padding-bottom: 20px;
+  position: relative;
+  display: flex;
+}
+.timeline .timeline-item > div:last-child {
+  flex: 1;
+}
+.timeline .timeline-item::before {
+  content: "";
+  display: block;
+  position: absolute;
+  width: 1px;
+  bottom: 0px;
+  top: 32px;
+  left: 15px;
+  background: #e1e1e1;
+}
+.timeline .timeline-item:last-child {
+  padding-bottom: 0;
+  bottom: 0;
+}
+.timeline .timeline-item:last-child::before {
+  display: none;
+}
+
+#external-events .fc-event {
+  border: none;
+  background: none;
+  color: #646464;
+  font-size: 14px;
+  cursor: move;
+}
+#external-events .fc-event i {
+  margin-right: 10px;
+}
+
+.fc .fc-center h2 {
+  font-weight: 400;
+  font-size: 19px;
+  color: #828282;
+}
+.fc .fc-event {
+  background: #0081ff;
+  color: white !important;
+  border: none;
+  border-radius: 0;
+  margin: 0 3px;
+  padding: 0px 4px;
+  font-size: 11px;
+  line-height: normal;
+}
+.fc .fc-event:hover {
+  background: #0151ac;
+}
+.fc .fc-event.bg-danger:hover {
+  background: #eb3030 !important;
+}
+.fc .fc-event.bg-success:hover {
+  background: #00b43d !important;
+}
+.fc .fc-event.bg-info:hover {
+  background: #1fa1d1 !important;
+}
+.fc .fc-event.bg-warning:hover {
+  background: #eba71f !important;
+}
+.fc .fc-list-table .fc-list-item.bg-danger:hover td {
+  background: #ea5455 !important;
+}
+.fc .fc-list-table .fc-list-item.bg-danger .fc-event-dot {
+  background: white !important;
+}
+.fc .fc-list-table .fc-list-item.bg-success:hover td {
+  background: #28c76f !important;
+}
+.fc .fc-list-table .fc-list-item.bg-success .fc-event-dot {
+  background: white !important;
+}
+.fc .fc-list-table .fc-list-item.bg-info:hover td {
+  background: #33b5e5 !important;
+}
+.fc .fc-list-table .fc-list-item.bg-info .fc-event-dot {
+  background: white !important;
+}
+.fc .fc-list-table .fc-list-item.bg-warning:hover td {
+  background: #ff9f43 !important;
+}
+.fc .fc-list-table .fc-list-item.bg-warning .fc-event-dot {
+  background: white !important;
+}
+.fc .fc-list-table .fc-list-item.bg-primary:hover td {
+  background: #0081ff !important;
+}
+.fc .fc-list-table .fc-list-item.bg-primary .fc-event-dot {
+  background: white !important;
+}
+.fc .fc-list-table .fc-list-item.bg-secondary:hover td {
+  background: #aa66cc !important;
+}
+.fc .fc-list-table .fc-list-item.bg-secondary .fc-event-dot {
+  background: white !important;
+}
+.fc .fc-list-table .fc-list-item.bg-dark:hover td {
+  background: #293134 !important;
+}
+.fc .fc-list-table .fc-list-item.bg-dark .fc-event-dot {
+  background: white !important;
+}
+.fc .fc-state-default {
+  background-image: none;
+  border: none;
+  box-shadow: none;
+  text-shadow: none;
+}
+.fc .fc-state-default.fc-state-active {
+  background: #0081ff;
+  color: white;
+}
+.fc .fc-event-dot {
+  background: #cdcdcd !important;
+}
+
+.fc-toolbar .fc-state-active, .fc-toolbar .ui-state-active {
+  z-index: 2;
+}
+
+.list-group .list-group-item.list-group-item-primary {
+  background: #0081ff !important;
+  color: white !important;
+}
+.list-group .list-group-item.list-group-item-primary-bright {
+  background: rgba(0, 129, 255, 0.3) !important;
+  color: #0081ff !important;
+}
+.list-group .list-group-item.list-group-item-secondary {
+  background: #aa66cc !important;
+  color: white !important;
+}
+.list-group .list-group-item.list-group-item-secondary-bright {
+  background: rgba(170, 102, 204, 0.3) !important;
+  color: #aa66cc !important;
+}
+.list-group .list-group-item.list-group-item-success {
+  background: #28c76f !important;
+  color: white !important;
+}
+.list-group .list-group-item.list-group-item-success-bright {
+  background: rgba(40, 199, 111, 0.3) !important;
+  color: #28c76f !important;
+}
+.list-group .list-group-item.list-group-item-danger {
+  background: #ea5455 !important;
+  color: white !important;
+}
+.list-group .list-group-item.list-group-item-danger-bright {
+  background: rgba(234, 84, 85, 0.3) !important;
+  color: #ea5455 !important;
+}
+.list-group .list-group-item.list-group-item-warning {
+  background: #ff9f43 !important;
+  color: white !important;
+}
+.list-group .list-group-item.list-group-item-warning-bright {
+  background: rgba(255, 159, 67, 0.3) !important;
+  color: #ff9f43 !important;
+}
+.list-group .list-group-item.list-group-item-info {
+  background: #33b5e5 !important;
+  color: white !important;
+}
+.list-group .list-group-item.list-group-item-info-bright {
+  background: rgba(51, 181, 229, 0.3) !important;
+  color: #33b5e5 !important;
+}
+.list-group .list-group-item.list-group-item-light {
+  background: #afb8bd !important;
+}
+.list-group .list-group-item.list-group-item-dark {
+  background: #293134 !important;
+  color: white !important;
+}
+.list-group .list-group-item.list-group-item-dark-bright {
+  background: #d4d5d8 !important;
+  color: #293134 !important;
+}
+
+.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
+  background-color: #0081ff;
+}
+
+.toast-title {
+  font-weight: bold;
+}
+
+.toast-message {
+  -ms-word-wrap: break-word;
+  word-wrap: break-word;
+}
+
+.toast-message a, .toast-message .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .toast-message button.btn,
+.toast-message label {
+  color: #ffffff;
+}
+
+.toast-message a:hover, .toast-message .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append .toast-message button.btn:hover {
+  color: #cccccc;
+  text-decoration: none;
+}
+
+.toast-close-button {
+  position: relative;
+  right: -0.3em;
+  top: -0.3em;
+  float: right;
+  font-size: 20px;
+  font-weight: bold;
+  color: #ffffff;
+  opacity: 0.8;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  filter: alpha(opacity=80);
+}
+
+.toast-close-button:hover,
+.toast-close-button:focus {
+  color: #000000;
+  text-decoration: none;
+  cursor: pointer;
+  opacity: 0.4;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
+  filter: alpha(opacity=40);
+}
+
+/*Additional properties for button version
+ iOS requires the button element instead of an anchor tag.
+ If you want the anchor version, it requires `href="#"`.*/
+button.toast-close-button {
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+  -webkit-appearance: none;
+}
+
+.toast-top-center {
+  top: 30px;
+  right: 0;
+  width: 100%;
+}
+
+.toast-bottom-center {
+  bottom: 0;
+  right: 0;
+  width: 100%;
+}
+
+.toast-top-full-width {
+  top: 30px;
+  right: 0;
+  width: 100%;
+}
+
+.toast-bottom-full-width {
+  bottom: 0;
+  right: 0;
+  width: 100%;
+}
+
+.toast-top-left {
+  top: 30px;
+  left: 33px;
+}
+
+.toast-top-right {
+  top: 33px;
+  right: 33px;
+}
+
+.toast-bottom-right {
+  right: 33px;
+  bottom: 33px;
+}
+
+.toast-bottom-left {
+  bottom: 33px;
+  left: 33px;
+}
+
+#toast-container {
+  position: fixed;
+  z-index: 999999;
+  pointer-events: none;
+  /*overrides*/
+}
+
+#toast-container * {
+  box-sizing: border-box;
+}
+
+#toast-container > div {
+  position: relative;
+  overflow: hidden;
+  margin: 0 0 6px;
+  padding: 15px 15px 15px 50px;
+  width: 300px;
+  border-radius: 0.25rem;
+  background-position: 15px center;
+  background-repeat: no-repeat;
+  color: #ffffff;
+  opacity: 1;
+}
+#toast-container > div:hover {
+  cursor: pointer;
+}
+
+#toast-container > .toast-info {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container > .toast-error {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container > .toast-success {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
+}
+
+#toast-container > .toast-warning {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container.toast-top-center > div,
+#toast-container.toast-bottom-center > div {
+  width: 300px;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+#toast-container.toast-top-full-width > div,
+#toast-container.toast-bottom-full-width > div {
+  width: 96%;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.toast {
+  background-color: #293134;
+  border: none;
+  box-shadow: none;
+}
+
+.toast-success {
+  background-color: #28c76f;
+}
+
+.toast-error {
+  background-color: #ea5455;
+}
+
+.toast-info {
+  background-color: #33b5e5;
+}
+
+.toast-warning {
+  background-color: #ff9f43;
+}
+
+.toast-progress {
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  height: 2px;
+  background-color: #000000;
+  opacity: 0.2;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=20);
+  filter: alpha(opacity=20);
+}
+
+/*Responsive Design*/
+@media all and (max-width: 240px) {
+  #toast-container > div {
+    padding: 8px 8px 8px 50px;
+    width: 11em;
+  }
+
+  #toast-container .toast-close-button {
+    right: -0.2em;
+    top: -0.2em;
+  }
+}
+@media all and (min-width: 241px) and (max-width: 480px) {
+  #toast-container > div {
+    padding: 8px 8px 8px 50px;
+    width: 18em;
+  }
+
+  #toast-container .toast-close-button {
+    right: -0.2em;
+    top: -0.2em;
+  }
+}
+@media all and (min-width: 481px) and (max-width: 768px) {
+  #toast-container > div {
+    padding: 15px 15px 15px 50px;
+    width: 25em;
+  }
+}
+.dd-handle {
+  font-weight: normal;
+}
+.dd-handle:hover {
+  color: #0081ff;
+}
+
+.dd3-content {
+  font-weight: normal;
+}
+
+.slick-next {
+  right: 5px;
+}
+
+.slick-prev {
+  left: 5px;
+}
+
+.slick-prev, .slick-next {
+  width: 30px;
+  height: 30px;
+  z-index: 1;
+}
+
+.slick-prev:before, .slick-next:before {
+  font-size: 30px;
+}
+
+.slick-slide-item > * {
+  padding: 10px;
+}
+
+.slick-center {
+  transition: transform 0.3s;
+  transform: scale(1.2);
+}
+
+/* the slides */
+.slick-slide {
+  margin: 0 10px;
+}
+
+/* the parent */
+.slick-list {
+  margin: 0 -10px;
+}
+
+.stretch-layout {
+  overflow: hidden;
+}
+.stretch-layout .app-block {
+  height: calc(100vh - 135px);
+}
+.stretch-layout .content-footer {
+  display: none;
+}
+.stretch-layout:not(.chat-app).right-navigation.small-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-left: 30px !important;
+  padding-right: 110px !important;
+}
+.stretch-layout.hidden-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-right: 30px !important;
+  padding-left: 30px !important;
+}
+
+.stretch-layout.horizontal-navigation .app-block {
+  height: calc(100vh - 190px);
+}
+
+.app-block .app-sidebar {
+  height: 100%;
+}
+.app-block .app-sidebar > .card, .app-block .app-content .app-sidebar > .app-action, .app-block .app-sidebar > .chat-block {
+  height: 100%;
+  margin-bottom: 0;
+}
+.app-block .app-sidebar > .card .card-body, .app-block .app-content .app-sidebar > .app-action .card-body, .app-block .app-sidebar > .chat-block .card-body {
+  flex: none;
+}
+.app-block .app-sidebar .app-sidebar-menu {
+  flex: 1;
+}
+.app-block .app-sidebar .app-sidebar-menu .list-group .list-group-item.active {
+  background: none;
+  color: #0081ff;
+}
+.app-block .app-sidebar-menu-button {
+  display: none;
+}
+.app-block .app-content {
+  display: flex;
+  flex-direction: column;
+  height: 100%;
+}
+.app-block .app-content .app-content-overlay {
+  display: none;
+  position: absolute;
+  right: 1rem;
+  border-radius: 8px;
+  left: 1rem;
+  top: 0;
+  bottom: 0;
+  background-color: rgba(0, 0, 0, 0.25);
+  z-index: 8;
+}
+.app-block .app-content .app-content-overlay.show {
+  display: block;
+}
+.app-block .app-content .app-action {
+  display: flex;
+  justify-content: space-between;
+  padding: 1.5rem;
+}
+.app-block .app-content .app-action .action-left, .app-block .app-content .app-action .action-right {
+  display: flex;
+  align-items: center;
+}
+.app-block .app-content .app-action .action-right {
+  margin-left: 1rem;
+  flex: 1;
+  display: flex;
+  justify-content: space-between;
+}
+.app-block .app-content .app-action .action-right form {
+  flex: 1;
+}
+.app-block .app-content .app-content-body {
+  margin-bottom: 0;
+  flex: 1;
+  padding: 0;
+  height: 100%;
+  position: static;
+  overflow: hidden;
+}
+.app-block .app-content .app-content-body .app-lists {
+  height: 100%;
+  overflow: auto;
+}
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item {
+  padding-top: 15px;
+  padding-bottom: 15px;
+  background: none;
+  display: flex;
+  align-items: center;
+}
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item:hover {
+  cursor: pointer;
+  background-color: #fafafa;
+}
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active {
+  background-color: #ebebeb;
+}
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .avatar {
+  border-color: #ebebeb;
+}
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .app-list-title {
+  color: black;
+}
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active.task-list .app-list-title {
+  text-decoration: line-through;
+}
+.app-block .app-content .app-content-body .app-detail {
+  margin-bottom: 0;
+  position: absolute;
+  right: 0.9rem;
+  top: 0.5rem;
+  bottom: 0;
+  left: 0.9rem;
+  z-index: 2;
+  opacity: 0;
+  visibility: hidden;
+  transition: all 0.3s;
+}
+.app-block .app-content .app-content-body .app-detail.show {
+  opacity: 1;
+  visibility: visible;
+  top: 0;
+}
+.app-block .app-content .app-content-body .app-detail .card-header {
+  display: flex;
+  align-items: center;
+  padding: 1.5rem;
+  border-bottom: 1px solid #ebebeb;
+}
+.app-block .app-content .app-content-body .app-detail .card-header .app-detail-action-left {
+  display: flex;
+}
+.app-block .app-content .app-content-body .app-detail .card-header .app-detail-action-right {
+  margin-left: auto;
+}
+
+#compose .ql-toolbar.ql-snow, .app-block .ql-toolbar.ql-snow {
+  border: none;
+  padding: 0;
+}
+#compose .ql-editor, .app-block .ql-editor {
+  min-height: 70px;
+}
+
+.app-sortable-handle {
+  cursor: move;
+}
+
+.app-file-list {
+  border: 1px solid #ebebeb;
+}
+.app-file-list .app-file-icon {
+  background-color: #f5f5f5;
+  padding: 2rem;
+  text-align: center;
+  font-size: 2rem;
+  border-bottom: 1px solid #ebebeb;
+  border-top-right-radius: 8px;
+  border-top-left-radius: 8px;
+}
+.app-file-list:hover {
+  border-color: #d7d7d7;
+}
+
+body:not(.stretch-layout) .app-block .app-content .app-content-body {
+  overflow: visible;
+}
+
+.demo-icon-list {
+  height: 100px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 25px;
+}
+
+@media (max-width: 768px) {
+  .theme-switcher {
+    display: none;
+  }
+}
+@media (min-width: 768px) {
+  .theme-switcher {
+    opacity: 0;
+    display: flex;
+    align-items: center;
+    position: fixed;
+    right: -250px;
+    top: 50%;
+    transform: translate(0, -50%);
+    -webkit-user-select: none;
+       -moz-user-select: none;
+        -ms-user-select: none;
+            user-select: none;
+    z-index: 9999;
+    transition: right 0.3s;
+  }
+  .theme-switcher.open {
+    right: 0;
+  }
+  .theme-switcher .theme-switcher-button {
+    background-color: #0081ff;
+    color: white;
+    padding: 12px 15px;
+    border-top-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    cursor: pointer;
+  }
+  .theme-switcher .theme-switcher-button i {
+    font-size: 22px;
+    -webkit-animation-name: spin;
+            animation-name: spin;
+    -webkit-animation-duration: 3000ms;
+            animation-duration: 3000ms;
+    -webkit-animation-iteration-count: infinite;
+            animation-iteration-count: infinite;
+    -webkit-animation-timing-function: linear;
+            animation-timing-function: linear;
+  }
+  .theme-switcher .theme-switcher-panel {
+    width: 250px;
+  }
+  .theme-switcher .theme-switcher-panel .card, .theme-switcher .theme-switcher-panel .chat-block, .theme-switcher .theme-switcher-panel .app-block .app-content .app-action, .app-block .app-content .theme-switcher .theme-switcher-panel .app-action {
+    margin-bottom: 0;
+    border: 1px solid #0081ff;
+    border-right: none;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+
+  @-webkit-keyframes spin {
+    from {
+      transform: rotate(0deg);
+    }
+    to {
+      transform: rotate(360deg);
+    }
+  }
+
+  @keyframes spin {
+    from {
+      transform: rotate(0deg);
+    }
+    to {
+      transform: rotate(360deg);
+    }
+  }
+}
+@media (min-width: 1200px) {
+  body.boxed-layout {
+    background-color: white;
+  }
+  body.boxed-layout .layout-wrapper {
+    background-color: #f8fafb;
+    box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+    margin: 0 120px;
+  }
+  body.boxed-layout .layout-wrapper .header {
+    margin: 0 120px;
+  }
+  body.boxed-layout .layout-wrapper .navigation {
+    left: 120px;
+  }
+  body.boxed-layout.right-navigation .navigation {
+    left: auto;
+    right: 120px;
+  }
+  body.boxed-layout.horizontal-navigation .horizontal-navigation {
+    left: 120px;
+    right: 120px;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation {
+    width: 80px;
+    transition: width 0.3s;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-tab {
+    border-right-color: transparent;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body {
+    display: none;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn {
+    padding: 12px 0;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li {
+    position: relative;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li:hover > a .nav-link-icon, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li:hover > button.btn .nav-link-icon, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li:hover > button.btn .nav-link-icon {
+    stroke: #0081ff;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn {
+    border-radius: 4px;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a span:not(.badge):not(.avatar-title), body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn span:not(.badge):not(.avatar-title), .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn span:not(.badge):not(.avatar-title) {
+    display: none;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a .badge, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .badge, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn .badge {
+    position: absolute;
+    right: 20px;
+    top: 12px;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a .nav-link-icon, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+    margin: 0 !important;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul li.open > a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn + ul li.open > a, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn + ul li.open > a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul .header form .input-group .input-group-append li.open > button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul li.open > button.btn, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn + ul li.open > button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn + ul li.open > button.btn {
+    background: none;
+    color: #0081ff;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > ul {
+    display: none;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li:not(.navigation-divider) {
+    padding: 0 15px;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn {
+    display: block;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a .sub-menu-arrow, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn .sub-menu-arrow, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn .sub-menu-arrow {
+    display: none;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn {
+    padding-left: 53px;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a + ul li a, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a + ul li a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn + ul li a, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn + ul li a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li a, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li button.btn, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a + ul li button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a + ul li button.btn, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn + ul li button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn + ul li button.btn, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li button.btn {
+    padding-left: 65px;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a.active, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.active.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.active.btn {
+    border-radius: 5px;
+    background-color: #0081ff;
+    position: static;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a.active .nav-link-icon, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.active.btn .nav-link-icon, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.active.btn .nav-link-icon {
+    stroke: white;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover {
+    width: 320px;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover .navigation-menu-tab {
+    border-right-color: #e6e6e6;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover .navigation-menu-body {
+    display: flex;
+    height: calc(100vh - 75px);
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn {
+    display: flex;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a > span, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn > span, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn > span, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a .sub-menu-arrow, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn .sub-menu-arrow {
+    display: inherit !important;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a .nav-link-icon, body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn .nav-link-icon, .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn .nav-link-icon {
+    margin-right: 0.8rem !important;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li.open > ul {
+    display: block;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 110px;
+  }
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .content-footer {
+    margin-left: 80px;
+  }
+  body.hidden-navigation:not(.small-navigation) .header .navigation-toggler {
+    display: block;
+  }
+  body.hidden-navigation:not(.small-navigation) .navigation {
+    z-index: 1000;
+    left: -80%;
+    top: 0;
+    bottom: 0;
+    opacity: 0;
+    transition: left 0.3s;
+    position: fixed !important;
+  }
+  body.hidden-navigation:not(.small-navigation) .navigation.open {
+    left: 0;
+    opacity: 1;
+  }
+  body.hidden-navigation:not(.small-navigation).right-navigation .navigation {
+    left: auto;
+    right: -80%;
+    transition: right 0.3s;
+  }
+  body.hidden-navigation:not(.small-navigation).right-navigation .navigation.open {
+    right: 0;
+    opacity: 1;
+  }
+  body.hidden-navigation:not(.small-navigation) .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+  }
+  body.hidden-navigation:not(.small-navigation) .content-footer {
+    margin-left: 0;
+  }
+  body.right-navigation .navigation {
+    left: auto;
+    right: 0;
+    flex-direction: row-reverse;
+  }
+  body.right-navigation .navigation .navigation-menu-tab {
+    border-right: none;
+    border-left: 1px solid #e6e6e6;
+  }
+  body.right-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+    padding-right: 350px;
+  }
+  body.right-navigation .content-footer {
+    margin-left: 0;
+    margin-right: 320px;
+  }
+  body.right-navigation.small-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px !important;
+    padding-right: 110px;
+  }
+  body.right-navigation.small-navigation .content-footer {
+    margin-left: 0 !important;
+    margin-right: 80px;
+  }
+  body.right-navigation.hidden-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px !important;
+    padding-right: 30px;
+  }
+  body.horizontal-navigation .header {
+    box-shadow: none;
+  }
+  body.horizontal-navigation .horizontal-navigation {
+    border-top: 1px solid #e6e6e6;
+    box-shadow: 0px 5px 10px -10px rgba(0, 0, 0, 0.4);
+    position: fixed;
+    top: 75px;
+    background-color: white;
+    height: 55px;
+    right: 0;
+    left: 0;
+    padding: 0 30px;
+    display: flex;
+    align-items: center;
+    z-index: 997;
+  }
+  body.horizontal-navigation .horizontal-navigation > ul {
+    height: 100%;
+  }
+  body.horizontal-navigation .horizontal-navigation > ul > li {
+    display: flex;
+    align-items: center;
+    margin-right: 0.5rem;
+  }
+  body.horizontal-navigation .horizontal-navigation > ul > li > a, body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn {
+    border-radius: 100px;
+    text-transform: uppercase;
+    letter-spacing: 1px;
+    font-size: 12px;
+    padding: 10px 15px !important;
+    display: flex;
+    align-items: center;
+  }
+  body.horizontal-navigation .horizontal-navigation > ul > li > a .sub-menu-arrow, body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn .sub-menu-arrow, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn .sub-menu-arrow {
+    display: none;
+  }
+  body.horizontal-navigation .horizontal-navigation > ul > li > a .badge, body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn .badge, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn .badge {
+    margin-left: 0.5rem;
+  }
+  body.horizontal-navigation .horizontal-navigation > ul > li > a + ul, body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn + ul {
+    border-top: 1px solid #e6e6e6;
+  }
+  body.horizontal-navigation .horizontal-navigation > ul > li:hover > a, body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li:hover > button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li:hover > button.btn {
+    color: #0081ff !important;
+  }
+  body.horizontal-navigation .horizontal-navigation ul {
+    display: flex;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li {
+    position: relative;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li a, body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn {
+    padding: 10px 25px;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li a .nav-icon, body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .nav-icon, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .nav-icon {
+    margin-right: 0.5rem;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li.open > a, body.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #0081ff;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li:hover > ul {
+    display: block;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul {
+    display: none;
+    position: absolute;
+    top: 54px;
+    width: 220px;
+    background-color: white;
+    padding: 10px 0;
+    border-bottom-left-radius: 0.25rem;
+    border-bottom-right-radius: 0.25rem;
+    box-shadow: 0px 5px 9px -5px rgba(0, 0, 0, 0.3);
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul li {
+    position: relative;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul li:hover > a, body.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li:hover > button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li:hover > button.btn {
+    color: #0081ff;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul li a, body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    color: black;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul li a.active, body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.active.btn {
+    color: #0081ff;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul li.open > a, body.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li.open > button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li.open > button.btn {
+    color: #0081ff;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul {
+    left: 220px;
+    top: -12px;
+    border-left: 1px solid #f2f2f2;
+    box-shadow: 3px 0px 10px -5px rgba(0, 0, 0, 0.3);
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul:before {
+    display: none;
+  }
+  body.horizontal-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+    padding-top: 160px;
+  }
+  body.horizontal-navigation .content-footer {
+    margin-left: 0;
+  }
+  body.sticky-header .header {
+    position: sticky !important;
+    top: 0;
+  }
+}
+@media (max-width: 1200px) {
+  body.horizontal-navigation .horizontal-navigation {
+    position: fixed;
+    left: 0;
+    top: 0;
+    bottom: 0;
+    height: auto;
+    width: 320px;
+    background-color: white;
+    z-index: 1000;
+    overflow: auto;
+    padding: 15px 0;
+    display: none;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li a, body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn {
+    display: flex;
+    align-items: center;
+    padding: 15px 30px;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li a .nav-icon, body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .nav-icon, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .nav-icon {
+    margin-right: 0.5rem;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li a.active, body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.active.btn {
+    color: #0081ff;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li a .badge, body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .badge, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .badge, body.horizontal-navigation .horizontal-navigation ul li a .sub-menu-arrow, body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .sub-menu-arrow {
+    margin-left: auto;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li a .sub-menu-arrow, body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .sub-menu-arrow {
+    transform: rotate(90deg);
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul {
+    display: none;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul li a, body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    padding-left: 60px;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li a, body.horizontal-navigation .horizontal-navigation ul li ul li ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li ul li button.btn {
+    padding-left: 80px;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li a, body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li button.btn {
+    padding-left: 100px;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li.open > a, body.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn, .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #0081ff;
+  }
+  body.horizontal-navigation .horizontal-navigation ul li.open > ul {
+    display: block !important;
+  }
+  body.horizontal-navigation .horizontal-navigation.open {
+    display: block;
+  }
+}
+body.semi-dark:not(.dark) .nicescroll-cursors {
+  background-color: rgba(255, 255, 255, 0.3) !important;
+}
+body.semi-dark:not(.dark) .navigation {
+  background-color: #313852;
+  color: #c7c7c7;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a, body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn {
+  color: #c7c7c7;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a.active, body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a:not(.active):hover, body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):hover, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn:not(.active):hover, body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a:not(.active):focus, body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):focus, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn:not(.active):focus {
+  color: #0081ff;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body .avatar {
+  border-color: #313852;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body .list-group-item {
+  background: none;
+  border-color: #454c66;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo {
+  border-color: #454c66;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo img {
+  display: block;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo img:not(.logo-light) {
+  display: none;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.navigation-divider {
+  color: #dbdbdb;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a, body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn {
+  color: #c7c7c7;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a .nav-link-icon, body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+  stroke: rgba(199, 199, 199, 0.5);
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a.active, body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.active.btn {
+  color: white;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a.active:after, body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn:after, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.active.btn:after {
+  background-color: #0081ff;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a:hover, body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn:hover, body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a:focus, body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:focus, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn:focus {
+  background: none;
+  color: white;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li a.active, body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li a.active, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn + ul li a.active, body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li button.active.btn, body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li button.active.btn, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn + ul li button.active.btn {
+  color: white;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.open > a, body.semi-dark:not(.dark) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn, .header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.open > button.btn {
+  color: white;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .dropdown-divider {
+  color: #0081ff;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li ul {
+  background-color: #313852 !important;
+  border-left-color: #454c66 !important;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li ul ul {
+  border-left-color: #454c66 !important;
+}
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.navigation-divider:after {
+  background-color: #454c66 !important;
+}
+body.semi-dark:not(.dark) .navigation .avatar:before {
+  border-color: #2c2f42;
+}
+body.semi-dark:not(.dark) .horizontal-navigation {
+  background-color: #313852;
+}
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li > a + ul, body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul, .header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li > button.btn + ul {
+  border-top: 1px solid #444e72;
+}
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li > a + ul ul, body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul ul, .header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li > button.btn + ul ul {
+  border-left: 1px solid #444e72;
+}
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li.open > a, body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li.open > button.btn, .header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li.open > button.btn {
+  color: #1a8eff;
+}
+body.semi-dark:not(.dark) .horizontal-navigation ul li a, body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn {
+  color: #c7c7c7;
+}
+body.semi-dark:not(.dark) .horizontal-navigation ul li a.active, body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.active.btn {
+  color: #1a8eff;
+}
+body.semi-dark:not(.dark) .horizontal-navigation ul li a:not(.active):hover, body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:not(.active):hover, .header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn:not(.active):hover, body.semi-dark:not(.dark) .horizontal-navigation ul li a:not(.active):focus, body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:not(.active):focus, .header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn:not(.active):focus {
+  color: #1a8eff;
+}
+body.semi-dark:not(.dark) .horizontal-navigation ul li ul {
+  background-color: #313852;
+}
+body.semi-dark:not(.dark).right-navigation .navigation .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+body.semi-dark:not(.dark).small-navigation .navigation:hover .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+body.semi-dark:not(.dark).small-navigation.right-navigation .navigation:hover .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+
+body.header-dark:not(.dark) .header {
+  background-color: #313852;
+  color: #c7c7c7;
+  border-bottom-color: #444e72;
+}
+body.header-dark:not(.dark) .header .header-logo a img, body.header-dark:not(.dark) .header .header-logo form .input-group .input-group-append button.btn img, body.header-dark:not(.dark) .header form .input-group .input-group-append .header-logo button.btn img {
+  display: block;
+}
+body.header-dark:not(.dark) .header .header-logo a img:not(.logo-light), body.header-dark:not(.dark) .header .header-logo form .input-group .input-group-append button.btn img:not(.logo-light), body.header-dark:not(.dark) .header form .input-group .input-group-append .header-logo button.btn img:not(.logo-light) {
+  display: none;
+}
+body.header-dark:not(.dark) .header .navigation-toggler a, body.header-dark:not(.dark) .header .navigation-toggler form .input-group .input-group-append button.btn, body.header-dark:not(.dark) .header form .input-group .input-group-append .navigation-toggler button.btn {
+  color: #c7c7c7;
+}
+body.header-dark:not(.dark) .header .navigation-toggler a:hover, body.header-dark:not(.dark) .header .navigation-toggler form .input-group .input-group-append button.btn:hover, body.header-dark:not(.dark) .header form .input-group .input-group-append .navigation-toggler button.btn:hover {
+  color: white;
+}
+body.header-dark:not(.dark) .header a.nav-link, body.header-dark:not(.dark) .header form .input-group .input-group-append button.nav-link.btn {
+  color: #c7c7c7;
+}
+body.header-dark:not(.dark) .header a.nav-link:hover, body.header-dark:not(.dark) .header form .input-group .input-group-append button.nav-link.btn:hover {
+  color: white;
+}
+body.header-dark:not(.dark) .header .dropdown-menu {
+  border-top: none !important;
+}
+
+*:focus {
+  outline: none;
+}
+
+.sticky {
+  position: sticky !important;
+  top: 0;
+}
+
+.lead {
+  line-height: 2.2rem;
+}
+
+.layout-wrapper {
+  display: flex;
+  flex-direction: column;
+  min-height: 100vh;
+}
+.layout-wrapper .content-wrapper {
+  flex: 1;
+  display: flex;
+}
+.layout-wrapper .content-wrapper .content-body {
+  width: 0;
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+}
+.layout-wrapper .content-wrapper .content-body .content {
+  flex: 1;
+  padding: 30px;
+  padding-top: 105px;
+  padding-left: 350px;
+  padding-bottom: 0;
+}
+
+svg.feather {
+  width: 20px;
+  height: 20px;
+}
+
+.demo-code-preview {
+  border: 1px solid #ebebeb;
+  padding: 20px 10px;
+  margin-top: 2rem;
+  position: relative;
+  background-color: white;
+  border-radius: 8px;
+}
+.demo-code-preview + * {
+  margin-top: 1.5rem;
+}
+.demo-code-preview:before {
+  content: attr(data-label);
+  display: block;
+  position: absolute;
+  top: -9px;
+  left: 20px;
+  letter-spacing: 1px;
+  background-color: inherit;
+  font-size: 11px;
+  padding: 0 5px;
+}
+.demo-code-preview pre {
+  overflow-x: hidden;
+  background: none;
+  padding-top: 0;
+  padding-bottom: 0;
+  max-height: 300px;
+}
+.demo-code-preview:hover pre {
+  overflow-x: auto;
+}
+
+code[class*=language-], pre[class*=language-] {
+  font-size: 0.93em;
+  margin: 0;
+}
+
+.text-divider {
+  display: flex;
+  align-items: center;
+}
+.text-divider:after {
+  content: "";
+  display: block;
+  height: 1px;
+  background-color: #f0f0f0;
+  flex: 1;
+}
+.text-divider span {
+  margin-right: 1rem;
+}
+
+.row-xs {
+  margin-left: -0.5rem;
+  margin-right: -0.5rem;
+}
+.row-xs > div {
+  padding-left: 0.5rem;
+  padding-right: 0.5rem;
+}
+
+.overlay {
+  position: fixed;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: 999;
+  opacity: 0;
+  background: rgba(0, 0, 0, 0.3);
+  transition: opacity 0.5s;
+}
+.overlay.show {
+  opacity: 1;
+}
+
+.tooltip {
+  pointer-events: none;
+  font-family: inherit;
+  font-size: 0.835rem !important;
+}
+.tooltip .arrow {
+  display: none;
+}
+.tooltip .tooltip-inner {
+  background: rgba(0, 0, 0, 0.7);
+}
+
+.file-manager-items {
+  display: flex;
+  flex-wrap: wrap;
+}
+.file-manager-items .file-manager-item {
+  margin-right: 20px;
+  margin-bottom: 20px;
+}
+.file-manager-items .file-manager-item span {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 135px;
+  height: 115px;
+  font-size: 8.5em;
+  border: 1px solid #e1e1e1;
+  border-radius: 5px;
+  background-size: cover !important;
+  background-position: center !important;
+}
+.file-manager-items .file-manager-item.folder span {
+  color: #cea65b;
+}
+.file-manager-items .file-manager-item.image span:before {
+  display: none;
+}
+
+.small, .page-header .breadcrumb li.breadcrumb-item, .chat-block .chat-content .messages .message-item.message-item-divider span, small {
+  font-size: 12px;
+}
+
+.list-group .list-group-item {
+  padding: 0.75rem 1.5rem;
+}
+.list-group .list-group-item.active {
+  z-index: auto;
+  background: #0081ff;
+}
+
+.bring-forward {
+  position: relative;
+  z-index: 1;
+}
+
+.table-email-list table.table .dropdown [data-toggle=dropdown]:after {
+  display: none;
+}
+.table-email-list table.table .email-subject {
+  max-width: 80%;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.table-email-list table.table .email-subject a, .table-email-list table.table .email-subject .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .table-email-list table.table .email-subject button.btn {
+  display: inline-block;
+}
+.table-email-list table.table td, .table-email-list table.table .table th {
+  padding: 0.8rem;
+}
+.table-email-list a, .table-email-list .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .table-email-list button.btn {
+  color: #646464;
+}
+.table-email-list a:hover, .table-email-list .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append .table-email-list button.btn:hover, .table-email-list a:focus, .table-email-list .header form .input-group .input-group-append button.btn:focus, .header form .input-group .input-group-append .table-email-list button.btn:focus {
+  color: #0081ff;
+}
+
+.read-mail-body img {
+  max-width: 50%;
+}
+
+.bootstrap-tagsinput {
+  box-shadow: none;
+  width: 100%;
+  border: 1px solid #ced4da;
+  min-height: calc(2.25rem + 2px);
+}
+.bootstrap-tagsinput.focus {
+  border-color: #3383de;
+}
+.bootstrap-tagsinput .tag {
+  display: inline-flex;
+  color: black;
+  border-radius: 3px;
+  font-size: 13px;
+  padding: 0 8px;
+  margin: 2px 1px;
+  justify-content: space-between;
+  align-items: center;
+  background: #e1e1e1;
+}
+
+.list-group .list-group-item.active {
+  background: #0081ff;
+  border-color: transparent;
+}
+
+.list-group-flush .list-group-item:first-child {
+  border-top: 0;
+}
+
+.badge {
+  font-weight: 500;
+}
+
+.nav-pills .nav-link.active {
+  background: #0081ff;
+}
+
+.nav-tabs .nav-link.active {
+  color: #0081ff;
+}
+
+.text-muted, .chat-block .chat-content .messages .message-item.message-item-divider span, .demo-code-preview:before {
+  color: #a7abc3 !important;
+}
+
+.min-width-0 {
+  min-width: 0;
+}
+
+.list-group-item {
+  border-color: #e6e6e6;
+}
+
+.jqstooltip {
+  box-sizing: content-box;
+}
+
+.hide-show-toggler .hide-show-toggler-item {
+  display: none;
+}
+.hide-show-toggler:hover .hide-show-toggler-item, .hide-show-toggler:focus .hide-show-toggler-item {
+  display: block;
+}
+
+.tooltip {
+  font-size: 14px;
+}
+
+.jqvmap-zoomin, .jqvmap-zoomout {
+  box-sizing: initial;
+}
+
+.apexcharts-canvas {
+  margin: auto;
+}
+
+[data-backround-image] {
+  position: relative;
+  background-size: cover !important;
+  background-position: center !important;
+}
+[data-backround-image]:after {
+  content: "";
+  display: block;
+  background: rgba(255, 255, 255, 0.6);
+  position: absolute;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+}
+[data-backround-image] > * {
+  position: relative;
+  z-index: 1;
+}
+
+.dropdown-menu [data-backround-image]:after {
+  border-radius: 0;
+}
+
+.jqvmap-region {
+  fill: rgba(170, 102, 204, 0.3);
+}
+.jqvmap-region:hover {
+  fill: #aa66cc;
+}
+
+.a-0 {
+  top: 0px;
+  right: 0px;
+  bottom: 0px;
+  left: 0px;
+}
+
+.font-weight-800 {
+  font-weight: 800;
+}
+
+.circle canvas {
+  vertical-align: top;
+}
+
+.todo-item {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  margin-bottom: 10px;
+}
+.todo-item input[type=checkbox]:checked + label {
+  text-decoration: line-through;
+  color: #00961f;
+}
+
+.border-radius-1 {
+  border-radius: 5px;
+}
+
+.rounded {
+  border-radius: 0.5rem !important;
+}
+
+.nav-tabs .nav-link {
+  border-top-left-radius: 0.5rem;
+  border-top-right-radius: 0.5rem;
+}
+
+.nav-pills .nav-link {
+  border-radius: 0.5rem;
+}
+
+.apexcharts-legend.position-top.center {
+  justify-content: flex-end !important;
+}
+
+.image-hover {
+  position: relative;
+}
+.image-hover .image-hover-body {
+  display: flex;
+  align-items: flex-end;
+  opacity: 0;
+  visibility: hidden;
+  position: absolute;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, 0.5);
+  transition: all 0.3s;
+  color: white;
+  padding: 20px 30px;
+}
+.image-hover:hover .image-hover-body {
+  opacity: 1;
+  visibility: visible;
+}
+
+.nav-analiytics-style .nav-link {
+  padding: 0.5rem 1.5rem;
+}
+
+.daterangepicker {
+  font-family: "Inter";
+}
+
+.header {
+  background-color: white;
+  z-index: 999;
+  display: flex;
+  height: 75px;
+  box-shadow: 0px 5px 10px -10px rgba(0, 0, 0, 0.4);
+  position: fixed;
+  right: 0;
+  left: 0;
+  top: 0;
+}
+.header .avatar {
+  border-color: transparent;
+}
+.header .avatar.avatar-state-success:before {
+  border-color: #0081ff;
+}
+.header .header-left {
+  width: 320px;
+  padding-left: 30px;
+  display: flex;
+  align-items: center;
+}
+.header .header-left .navigation-toggler {
+  display: none;
+  margin-right: 15px;
+}
+.header .header-left .navigation-toggler a, .header .header-left .navigation-toggler form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .header-left .navigation-toggler button.btn {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.header .header-left .navigation-toggler a svg, .header .header-left .navigation-toggler form .input-group .input-group-append button.btn svg, .header form .input-group .input-group-append .header-left .navigation-toggler button.btn svg {
+  height: 30px;
+  width: 30px;
+}
+.header .header-logo a, .header .header-logo form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .header-logo button.btn {
+  height: 75px;
+  display: flex;
+  align-items: center;
+}
+.header .header-logo a img:not(.logo), .header .header-logo form .input-group .input-group-append button.btn img:not(.logo), .header form .input-group .input-group-append .header-logo button.btn img:not(.logo) {
+  display: none;
+}
+.header .header-body {
+  padding: 0 30px;
+  position: relative;
+  display: flex;
+  align-items: center;
+  flex: auto;
+  justify-content: space-between;
+}
+.header .header-body .page-title h1, .header .header-body .page-title h2, .header .header-body .page-title h3, .header .header-body .page-title h4, .header .header-body .page-title h5, .header .header-body .page-title h6 {
+  margin-bottom: 0;
+  line-height: inherit;
+}
+.header form .input-group {
+  position: relative;
+}
+.header form .input-group .form-control, .header form .input-group .swal-modal input.swal-content__input, .swal-modal .header form .input-group input.swal-content__input {
+  border: none;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+.header form .input-group .form-control:focus, .header form .input-group .swal-modal input.swal-content__input:focus, .swal-modal .header form .input-group input.swal-content__input:focus {
+  background-color: rgba(255, 255, 255, 0.2);
+}
+.header form .input-group .input-group-append {
+  position: absolute;
+  right: 0;
+}
+.header form .input-group .input-group-append button.btn {
+  position: relative;
+  z-index: 9;
+  border-top-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  background-color: inherit;
+  border: none;
+}
+.header form .input-group .input-group-append button.btn:hover {
+  opacity: 0.7;
+}
+.header form .input-group .input-group-append button.btn:focus, .header form .input-group .input-group-append button.btn:active, .header form .input-group .input-group-append button.btn:hover {
+  background-color: inherit;
+  box-shadow: none !important;
+}
+.header .header-toggler {
+  display: none;
+}
+.header [data-toggle=fullscreen] .minimize {
+  display: none;
+}
+.header .active-fullscreen .minimize {
+  display: block;
+}
+.header .active-fullscreen .maximize {
+  display: none;
+}
+.header ul.navbar-nav {
+  flex-direction: row;
+  align-items: center;
+}
+.header ul.navbar-nav li.nav-item a.nav-link, .header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn, .header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn {
+  line-height: 100%;
+  padding: 10px 15px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.header ul.navbar-nav li.nav-item a.nav-link.nav-link-notify, .header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.nav-link-notify.btn, .header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.nav-link-notify.btn {
+  position: relative;
+}
+.header ul.navbar-nav li.nav-item a.nav-link.nav-link-notify:before, .header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.nav-link-notify.btn:before, .header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.nav-link-notify.btn:before {
+  content: "";
+  position: absolute;
+  width: 6px;
+  height: 6px;
+  right: 0;
+  border-radius: 50%;
+  top: 3px;
+  background: #ea5455;
+  -webkit-animation: notify-pulse 1s infinite;
+}
+.header ul.navbar-nav li.nav-item a.nav-link:hover, .header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn:hover, .header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn:hover, .header ul.navbar-nav li.nav-item a.nav-link:focus, .header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn:focus, .header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn:focus {
+  outline: none;
+}
+.header ul.navbar-nav + form.search {
+  margin-left: 1.5rem;
+}
+.header .dropdown-menu {
+  position: absolute;
+}
+
+@-webkit-keyframes notify-pulse {
+  0% {
+    box-shadow: 0 0 0 0px rgba(234, 84, 85, 0.7);
+  }
+  100% {
+    box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
+  }
+}
+
+@keyframes notify-pulse {
+  0% {
+    box-shadow: 0 0 0 0px rgba(234, 84, 85, 0.7);
+  }
+  100% {
+    box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
+  }
+}
+.navigation {
+  background-color: white;
+  z-index: 998;
+  width: 320px;
+  box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+  position: fixed;
+  display: flex;
+  flex-direction: row;
+  left: 0;
+  bottom: 0;
+  top: 75px;
+}
+.navigation .navigation-menu-tab {
+  border-right: 1px solid #e6e6e6;
+  width: 80px;
+  display: flex;
+  flex-direction: column;
+  margin-right: 0;
+  padding: 10px;
+}
+.navigation .navigation-menu-tab .avatar {
+  border: none;
+}
+.navigation .navigation-menu-tab ul li {
+  margin-bottom: 5px;
+}
+.navigation .navigation-menu-tab ul li a, .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn {
+  display: flex;
+  height: 50px;
+  justify-content: center;
+  align-items: center;
+  border-radius: 0.5rem;
+  transition: all 0.3s;
+}
+.navigation .navigation-menu-tab ul li a:hover, .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn:hover {
+  color: #0081ff;
+}
+.navigation .navigation-menu-tab ul li a.active, .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+  background-color: #0081ff;
+  box-shadow: 0px 5px 20px -14px #0081ff;
+}
+.navigation .navigation-menu-tab ul li a svg, .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn svg, .header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn svg {
+  width: 23px;
+  height: 23px;
+}
+.navigation .navigation-menu-body {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  overflow: auto;
+}
+.navigation .navigation-menu-body .navigation-menu-group > div {
+  display: none;
+}
+.navigation .navigation-menu-body .navigation-menu-group > div.open {
+  display: block;
+}
+.navigation .navigation-menu-body ul li.navigation-divider {
+  padding: 10px 30px;
+  text-transform: uppercase;
+  font-size: 12px;
+  letter-spacing: 0.5px;
+  margin-top: 10px;
+  margin-bottom: 10px;
+  color: #a7abc3;
+}
+.navigation .navigation-menu-body ul li > a, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn {
+  display: flex;
+  align-items: center;
+  padding: 10px 30px;
+  color: #505050;
+  font-size: 14px;
+  transition: all 0.3s;
+}
+.navigation .navigation-menu-body ul li > a .nav-link-icon, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .nav-link-icon, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .nav-link-icon {
+  margin-right: 0.8rem;
+  stroke: rgba(0, 0, 0, 0.3);
+  transition: stroke 0.3s;
+  width: 20px;
+  height: 20px;
+}
+.navigation .navigation-menu-body ul li > a:hover, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn:hover, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn:hover {
+  color: #0081ff;
+}
+.navigation .navigation-menu-body ul li > a:hover .nav-link-icon, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn:hover .nav-link-icon, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn:hover .nav-link-icon {
+  stroke: #0081ff;
+}
+.navigation .navigation-menu-body ul li > a.active, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.active.btn, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.active.btn {
+  position: relative;
+  color: #0081ff;
+  font-weight: 600;
+  background: rgba(0, 129, 255, 0.15);
+  border-radius: 0.5rem;
+  margin: 0 1rem;
+}
+.navigation .navigation-menu-body ul li > a.active:before, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.active.btn:before, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.active.btn:before {
+  content: "";
+  display: block;
+  border: 6px solid transparent;
+  border-left-color: #0081ff;
+  margin-left: -12px;
+  margin-right: 5px;
+}
+.navigation .navigation-menu-body ul li > a .sub-menu-arrow, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .sub-menu-arrow, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .sub-menu-arrow {
+  margin-left: auto;
+  font-size: 14px;
+  transition: transform 0.3s;
+}
+.navigation .navigation-menu-body ul li > a .sub-menu-arrow.rotate-in, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .sub-menu-arrow.rotate-in, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .sub-menu-arrow.rotate-in {
+  transform: rotate(540deg);
+}
+.navigation .navigation-menu-body ul li > a .badge, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .badge, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .badge {
+  margin-left: auto;
+  padding: 3px 7px;
+}
+.navigation .navigation-menu-body ul li > a + ul, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul {
+  display: none;
+}
+.navigation .navigation-menu-body ul li > a + ul li, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li {
+  margin: 0;
+}
+.navigation .navigation-menu-body ul li > a + ul li a, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li a, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li a, .navigation .navigation-menu-body ul li > a + ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > a + ul li button.btn, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li button.btn, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li button.btn {
+  padding-left: 50px;
+}
+.navigation .navigation-menu-body ul li > a + ul ul, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul {
+  border-left: none;
+}
+.navigation .navigation-menu-body ul li > a + ul ul li a, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul li a, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul li a, .navigation .navigation-menu-body ul li > a + ul ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > a + ul ul li button.btn, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul li button.btn, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul li button.btn {
+  padding-left: 70px;
+}
+.navigation .navigation-menu-body ul li.open > a, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > button.btn {
+  color: #0081ff;
+  font-weight: 600;
+}
+.navigation .navigation-menu-body ul li.open > a .nav-link-icon, .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn .nav-link-icon, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > button.btn .nav-link-icon {
+  stroke: #0081ff;
+}
+.navigation .navigation-menu-body ul li.open > ul {
+  display: block;
+}
+.navigation .navigation-menu-body ul li.open > ul a.active, .navigation .navigation-menu-body ul li.open > ul .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > ul button.active.btn {
+  background-color: inherit;
+}
+
+footer.content-footer {
+  padding: 15px 30px;
+  background-color: white;
+  box-shadow: 0 0 10px -8px black;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin-left: 320px;
+}
+footer.content-footer * {
+  text-transform: uppercase;
+  letter-spacing: 0.5px;
+  font-size: 12px;
+}
+footer.content-footer .nav a, footer.content-footer .nav .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append footer.content-footer .nav button.btn {
+  padding: 5px 0;
+  margin-left: 15px;
+}
+footer.content-footer .nav a:hover, footer.content-footer .nav .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append footer.content-footer .nav button.btn:hover {
+  background: none !important;
+}
+
+.sidebar-group {
+  background-color: rgba(0, 0, 0, 0.35);
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  top: 0;
+  left: 0;
+  opacity: 0;
+  z-index: 1000;
+  transition: all 0.3s;
+  visibility: hidden;
+}
+.sidebar-group.show {
+  opacity: 1;
+  visibility: visible;
+}
+.sidebar-group .card, .sidebar-group .chat-block, .sidebar-group .app-block .app-content .app-action, .app-block .app-content .sidebar-group .app-action {
+  box-shadow: none;
+}
+.sidebar-group .sidebar {
+  width: 330px;
+  box-shadow: 0 0 25px rgba(0, 0, 0, 0.25);
+  background-color: white;
+  z-index: 1000;
+  transition: all 0.2s;
+  visibility: hidden;
+  opacity: 0;
+  margin-right: -100px;
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  top: 0;
+}
+.sidebar-group .sidebar.show {
+  visibility: visible;
+  opacity: 1;
+  margin-right: 0px;
+}
+.sidebar-group .sidebar > header {
+  background-color: #ebebeb;
+  padding: 1.5rem;
+  font-size: 16px;
+  line-height: 0;
+  display: flex;
+  align-items: center;
+}
+.sidebar-group .sidebar > header i {
+  margin-right: 10px;
+}
+.sidebar-group .sidebar .tab-content {
+  height: calc(100% - 50px);
+}
+.sidebar-group .sidebar .tab-content .tab-pane.active {
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+}
+.sidebar-group .sidebar .tab-content .tab-pane.active .tab-pane-body {
+  flex: 1;
+  overflow: auto;
+}
+.sidebar-group .sidebar .tab-content .tab-pane.active .tab-pane-footer {
+  padding: 20px 0;
+}
+
+body.dark {
+  background-color: #182139;
+  color: #c7c7c7;
+}
+body.dark a:not(.btn):not(.link-1), body.dark .header form .input-group .input-group-append button.btn:not(.btn):not(.link-1), .header form .input-group .input-group-append body.dark button.btn:not(.btn):not(.link-1) {
+  color: rgba(255, 255, 255, 0.5);
+}
+body.dark a:not(.btn):not(.link-1):hover, body.dark .header form .input-group .input-group-append button.btn:not(.btn):not(.link-1):hover, .header form .input-group .input-group-append body.dark button.btn:not(.btn):not(.link-1):hover {
+  color: rgba(255, 255, 255, 0.8);
+}
+body.dark .header {
+  background-color: #313852;
+  border-bottom-color: #454c66;
+}
+body.dark .header .header-logo {
+  border-bottom-color: #454c66;
+}
+body.dark .header .header-logo img {
+  display: block;
+}
+body.dark .header .header-logo img:not(.logo-light) {
+  display: none;
+}
+body.dark .header ul li a, body.dark .header ul li form .input-group .input-group-append button.btn, body.dark .header form .input-group .input-group-append ul li button.btn {
+  color: #c7c7c7;
+}
+body.dark .header ul li a:hover, body.dark .header ul li form .input-group .input-group-append button.btn:hover, body.dark .header form .input-group .input-group-append ul li button.btn:hover, body.dark .header ul li a:focus, body.dark .header ul li form .input-group .input-group-append button.btn:focus, body.dark .header form .input-group .input-group-append ul li button.btn:focus {
+  color: white;
+}
+body.dark .header .avatar {
+  border-color: transparent;
+}
+body.dark .text-divider:after {
+  background-color: #454c66;
+}
+body.dark input::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+body.dark input:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+body.dark input::placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+body.dark .border {
+  border-color: #454c66 !important;
+}
+body.dark .border-right {
+  border-left-color: #454c66 !important;
+  border-right-color: #454c66 !important;
+}
+body.dark .border-left {
+  border-left-color: #454c66 !important;
+  border-right-color: #454c66 !important;
+}
+body.dark .border-bottom {
+  border-bottom-color: #454c66 !important;
+}
+body.dark .border-top {
+  border-top-color: #454c66 !important;
+}
+body.dark .preloader {
+  background: #04071a;
+}
+body.dark .preloader .preloader-icon {
+  border-color: #313852;
+}
+body.dark .nav-tabs .nav-link:hover, body.dark .nav-tabs .nav-link:focus {
+  background-color: #313852 !important;
+  border-bottom-color: #313852 !important;
+}
+body.dark .nav-tabs .nav-link.active {
+  background: #313852 !important;
+  border-bottom-color: #313852 !important;
+}
+body.dark .sidebar header {
+  background-color: #2c2f42;
+}
+body.dark .navigation {
+  background-color: #313852;
+}
+body.dark .navigation .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+body.dark .navigation .navigation-menu-tab ul li a, body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn {
+  color: #c7c7c7;
+}
+body.dark .navigation .navigation-menu-tab ul li a.active, body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+}
+body.dark .navigation .navigation-menu-tab ul li a:not(.active):hover, body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):hover, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn:not(.active):hover, body.dark .navigation .navigation-menu-tab ul li a:not(.active):focus, body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):focus, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn:not(.active):focus {
+  color: #0081ff;
+}
+body.dark .navigation .navigation-menu-body ul li.navigation-divider {
+  color: #dbdbdb;
+}
+body.dark .navigation .navigation-menu-body ul li a, body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn {
+  color: #c7c7c7;
+}
+body.dark .navigation .navigation-menu-body ul li a .nav-link-icon, body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+  stroke: rgba(199, 199, 199, 0.5);
+}
+body.dark .navigation .navigation-menu-body ul li a:hover, body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn:hover, body.dark .navigation .navigation-menu-body ul li a:focus, body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:focus, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn:focus {
+  color: white;
+}
+body.dark .navigation .navigation-menu-body ul li a.active, body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.active.btn {
+  color: white;
+}
+body.dark .navigation .navigation-menu-body ul li a + ul li a.active, body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li a.active, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn + ul li a.active, body.dark .navigation .navigation-menu-body ul li a + ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li a + ul li button.active.btn, body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li button.active.btn, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn + ul li button.active.btn {
+  color: white;
+}
+body.dark .navigation .navigation-menu-body ul li.open > a, body.dark .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn, .header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li.open > button.btn {
+  color: white;
+  background-color: #454c66;
+}
+body.dark .navigation .navigation-menu-body ul li .dropdown-divider {
+  color: #0081ff;
+}
+body.dark.boxed-layout {
+  background-color: #04071a;
+}
+body.dark.boxed-layout .layout-wrapper .content-wrapper .content-body .content {
+  background-color: #182139;
+}
+body.dark.right-navigation .navigation .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+body.dark.right-navigation.small-navigation .navigation .navigation-menu-tab {
+  border-left-color: transparent;
+}
+body.dark.right-navigation.small-navigation .navigation:hover .navigation-menu-tab {
+  border-left-color: #444e72 !important;
+}
+body.dark.small-navigation .navigation:hover .navigation-menu-tab {
+  border-right-color: #444e72 !important;
+}
+body.dark .custom-accordion .accordion-row .accordion-header .close {
+  text-shadow: none;
+  color: inherit;
+}
+body.dark #vmap_usa_en, body.dark #vmap_canada_en, body.dark #vmap_world_en {
+  background-color: inherit !important;
+}
+body.dark .table {
+  color: #c7c7c7;
+}
+body.dark .table .thead-light th {
+  background-color: #59607a;
+  color: inherit;
+}
+body.dark .table .thead-dark th, body.dark .table-dark, body.dark .table-dark th, body.dark .table-dark td {
+  background-color: #04071a;
+}
+body.dark .mark, body.dark mark {
+  background-color: #59607a;
+  color: inherit;
+}
+body.dark .page-header {
+  color: rgba(255, 255, 255, 0.6);
+}
+body.dark .page-header .breadcrumb li a, body.dark .page-header .breadcrumb li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.dark .page-header .breadcrumb li button.btn {
+  color: #b3b3b3;
+}
+body.dark .page-header .breadcrumb li a:hover, body.dark .page-header .breadcrumb li .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append body.dark .page-header .breadcrumb li button.btn:hover {
+  color: #c7c7c7;
+}
+body.dark .breadcrumb li.breadcrumb-item.active {
+  color: #339aff;
+}
+body.dark [data-backround-image]:after {
+  background-color: rgba(0, 0, 0, 0.6);
+}
+body.dark .layout-alert {
+  border-color: #59607a;
+}
+body.dark .alert {
+  color: rgba(255, 255, 255, 0.6);
+}
+body.dark .alert hr {
+  border-color: rgba(255, 255, 255, 0.1);
+}
+body.dark .alert .close:hover, body.dark .alert .close:focus {
+  opacity: 0.2;
+  color: inherit;
+}
+body.dark .form-control, body.dark .swal-modal input.swal-content__input, .swal-modal body.dark input.swal-content__input {
+  background: #313852;
+  border-color: #454c66 !important;
+  color: #c3c3c3;
+}
+body.dark .form-control:focus, body.dark .swal-modal input.swal-content__input:focus, .swal-modal body.dark input.swal-content__input:focus {
+  border-color: #0081ff !important;
+}
+body.dark .timeline .timeline-item::before {
+  background: #59607a;
+}
+body.dark .dropdown-menu {
+  border-top: 1px solid #454c66 !important;
+  color: #c7c7c7;
+}
+body.dark .custom-select {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+  color: inherit;
+}
+body.dark .custom-file-label {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+  color: inherit;
+}
+body.dark .custom-file-label::after {
+  background-color: #454c66;
+  color: inherit;
+}
+body.dark .custom-range::-webkit-slider-runnable-track {
+  background-color: #454c66;
+}
+body.dark .custom-control-label::before {
+  background-color: inherit;
+  border-color: #59607a;
+}
+body.dark .custom-control-input:disabled ~ .custom-control-label::before {
+  background-color: #454c66;
+}
+body.dark .form-control-plaintext {
+  color: inherit;
+}
+body.dark .wizard > .content {
+  background-color: #454c66;
+}
+body.dark .wizard > .steps .disabled a, body.dark .wizard > .steps .disabled .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.dark .wizard > .steps .disabled button.btn, body.dark .wizard > .steps .disabled a:hover, body.dark .wizard > .steps .disabled a:active {
+  background-color: #454c66;
+}
+body.dark .wizard > .actions .disabled a, body.dark .wizard > .actions .disabled .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.dark .wizard > .actions .disabled button.btn, body.dark .wizard > .actions .disabled a:hover, body.dark .wizard > .actions .disabled a:active {
+  background: #4f5670 !important;
+  border-color: #4f5670 !important;
+}
+body.dark .wizard > .actions .disabled a:not(:disabled):not(.disabled):focus, body.dark .wizard > .actions .disabled .header form .input-group .input-group-append button.btn:not(:disabled):not(.disabled):focus, .header form .input-group .input-group-append body.dark .wizard > .actions .disabled button.btn:not(:disabled):not(.disabled):focus, body.dark .wizard > .actions .disabled a:hover:not(:disabled):not(.disabled):focus, body.dark .wizard > .actions .disabled a:active:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(4, 7, 26, 0.5);
+  outline: none;
+  color: inherit;
+}
+body.dark .pricing-table {
+  border-color: #59607a;
+}
+body.dark hr {
+  border-color: #454c66;
+}
+body.dark .dropdown-menu {
+  border: none;
+  background-color: #3b425c;
+}
+body.dark .dropdown-menu .dropdown-item {
+  color: #c3c3c3;
+}
+body.dark .dropdown-menu .dropdown-item:hover, body.dark .dropdown-menu .dropdown-item:focus {
+  background: #313852;
+}
+body.dark .bg-light {
+  background: #59607a !important;
+}
+body.dark .list-group-item {
+  background: none;
+  border-color: rgba(155, 155, 155, 0.1);
+}
+body.dark a.list-group-item, body.dark .header form .input-group .input-group-append button.list-group-item.btn, .header form .input-group .input-group-append body.dark button.list-group-item.btn {
+  color: #c7c7c7;
+}
+body.dark a.list-group-item:hover, body.dark .header form .input-group .input-group-append button.list-group-item.btn:hover, .header form .input-group .input-group-append body.dark button.list-group-item.btn:hover {
+  color: white;
+}
+body.dark .card, body.dark .chat-block, body.dark .app-block .app-content .app-action, .app-block .app-content body.dark .app-action {
+  background: #313852;
+  border-color: #444e72;
+}
+body.dark .card .card-header, body.dark .chat-block .card-header, body.dark .app-block .app-content .app-action .card-header, .app-block .app-content body.dark .app-action .card-header {
+  border-bottom-color: #2c2f42 !important;
+}
+body.dark .card .card-footer, body.dark .chat-block .card-footer, body.dark .app-block .app-content .app-action .card-footer, .app-block .app-content body.dark .app-action .card-footer {
+  border-top-color: #2c2f42;
+}
+body.dark .accordion .card, body.dark .accordion .chat-block, body.dark .accordion .app-block .app-content .app-action, .app-block .app-content body.dark .accordion .app-action, body.dark .accordion.custom-accordion {
+  border-color: rgba(240, 240, 240, 0.12);
+}
+body.dark .accordion.custom-accordion .accordion-row a.accordion-header, body.dark .accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn, .header form .input-group .input-group-append body.dark .accordion.custom-accordion .accordion-row button.accordion-header.btn {
+  border-bottom-color: rgba(240, 240, 240, 0.12);
+  border-top-color: rgba(240, 240, 240, 0.12);
+  color: inherit;
+  background-color: #454c66;
+}
+body.dark .morris-hover.morris-default-style {
+  background-color: #454c66;
+  border-color: #59607a;
+}
+body.dark .apexcharts-yaxis .apexcharts-yaxis-texts-g text {
+  fill: rgba(255, 255, 255, 0.2);
+}
+body.dark .apexcharts-grid .apexcharts-gridlines-horizontal line, body.dark .apexcharts-grid .apexcharts-gridlines-vertical line {
+  stroke: rgba(255, 255, 255, 0.1);
+}
+body.dark .apexcharts-toolbar > div > svg {
+  fill: rgba(255, 255, 255, 0.2);
+}
+body.dark .apexcharts-menu {
+  border: none;
+  background-color: #454c66;
+}
+body.dark .apexcharts-menu .apexcharts-menu-item:hover {
+  background-color: #59607a;
+}
+body.dark .apexcharts-xaxis .apexcharts-xaxis-texts-g text {
+  fill: rgba(255, 255, 255, 0.2);
+}
+body.dark .apexcharts-tooltip.light .apexcharts-tooltip-title {
+  background-color: #59607a !important;
+  border-color: #3b425c !important;
+}
+body.dark .apexcharts-xaxistooltip {
+  border-color: #3b425c !important;
+  background-color: #454c66 !important;
+  color: rgba(255, 255, 255, 0.4);
+}
+body.dark .apexcharts-xaxistooltip-bottom:after, body.dark apexcharts-xaxistooltip-bottom:before {
+  border-bottom-color: #454c66 !important;
+}
+body.dark .apexcharts-tooltip {
+  border-color: #3b425c !important;
+  background-color: #454c66 !important;
+}
+body.dark .apexcharts-title-text, body.dark .apexcharts-subtitle-text {
+  fill: rgba(255, 255, 255, 0.4);
+}
+body.dark .apexcharts-legend-text {
+  color: rgba(255, 255, 255, 0.4) !important;
+}
+body.dark .apexcharts-yaxis-title text, body.dark .apexcharts-xaxis-title text {
+  fill: rgba(255, 255, 255, 0.4);
+}
+body.dark .demo-code-preview {
+  background-color: #313852;
+  border-color: #4f5670 !important;
+}
+body.dark .demo-code-preview * {
+  text-shadow: none;
+}
+body.dark .demo-code-preview code[class*=language-], body.dark .demo-code-preview pre[class*=language-] {
+  color: white;
+}
+body.dark .demo-code-preview code[class*=language-] .token.operator, body.dark .demo-code-preview pre[class*=language-] .token.operator {
+  background: none;
+}
+body.dark .demo-code-preview .token.tag {
+  color: #e156a3;
+}
+body.dark .avatar {
+  border-color: #313852;
+}
+body.dark .avatar:before {
+  border-color: #313852;
+}
+body.dark .avatar .avatar-title {
+  background-color: #59607a;
+}
+body.dark .tourBg {
+  opacity: 0.7 !important;
+}
+body.dark .dd-handle, body.dark .dd3-content {
+  background-color: #454c66;
+  border-color: #313852;
+  color: inherit;
+}
+body.dark .dd3-handle:before {
+  color: inherit;
+}
+body.dark .dd-item button {
+  color: inherit;
+}
+body.dark .list-group-item-action {
+  color: inherit;
+}
+body.dark .list-group-item-action.active {
+  color: white;
+}
+body.dark .img-thumbnail {
+  border-color: #59607a;
+  background-color: #313852;
+}
+body.dark .progress {
+  background-color: #59607a;
+}
+body.dark .jstree-default .jstree-clicked {
+  color: #04071a;
+}
+body.dark .select2-container--default .select2-selection--single, body.dark .select2-container--default .select2-selection--multiple {
+  background-color: inherit;
+}
+body.dark .select2-container--default .select2-selection--multiple .select2-selection__choice {
+  background: #454c66;
+  color: #c3c3c3;
+}
+body.dark .select2.select2-container .select2-selection {
+  border-color: #59607a;
+}
+body.dark .select2-container--default .select2-selection--single .select2-selection__placeholder {
+  color: #646464;
+}
+body.dark .select2-container .select2-search--inline .select2-search__field {
+  color: inherit;
+}
+body.dark .select2-dropdown {
+  background-color: #313852;
+  border-color: #59607a;
+}
+body.dark .select2-container--default .select2-search--dropdown .select2-search__field {
+  background-color: #313852;
+  border-color: #59607a;
+  color: inherit;
+}
+body.dark .select2-container--default .select2-selection--single .select2-selection__rendered {
+  color: inherit;
+}
+body.dark .select2-container--default .select2-results__option[aria-selected=true] {
+  background-color: #04071a;
+  color: inherit;
+}
+body.dark .irs--round .irs-line {
+  background-color: #59607a;
+}
+body.dark .irs--round .irs-min, body.dark .irs--round .irs-max {
+  color: inherit;
+  background-color: #59607a;
+}
+body.dark .daterangepicker {
+  background-color: #3b425c;
+  border-color: #3b425c;
+}
+body.dark .daterangepicker select {
+  background-color: inherit;
+  color: inherit;
+  border-color: #59607a;
+}
+body.dark .daterangepicker:after, body.dark .daterangepicker:before {
+  border-bottom-color: #3b425c;
+}
+body.dark .daterangepicker .calendar-table {
+  background-color: #3b425c;
+  border-color: #3b425c;
+}
+body.dark .daterangepicker td.in-range {
+  background-color: #59607a;
+  color: inherit;
+}
+body.dark .daterangepicker td.end-date {
+  color: white;
+  background-color: #0081ff;
+}
+body.dark .daterangepicker .drp-buttons {
+  border-top-color: #3b425c;
+}
+body.dark .daterangepicker .drp-buttons .btn.btn-default {
+  color: inherit;
+}
+body.dark .daterangepicker td.off, body.dark .daterangepicker td.off.end-date, body.dark .daterangepicker td.off.start-date {
+  background-color: inherit;
+  color: #636a84;
+}
+body.dark .daterangepicker td.off.in-range {
+  background-color: #59607a;
+  color: #8b92ac;
+}
+body.dark .daterangepicker td.available:hover, body.dark .daterangepicker th.available:hover {
+  background-color: #0081ff;
+  color: white;
+}
+body.dark .daterangepicker td.available:hover span, body.dark .daterangepicker th.available:hover span {
+  border-color: white;
+}
+body.dark .daterangepicker .calendar-table .next span, body.dark .daterangepicker .calendar-table .prev span {
+  border-color: #6d748e;
+}
+body.dark .daterangepicker .ranges li:hover {
+  background-color: #454c66;
+}
+body.dark .popover.clockpicker-popover {
+  overflow: hidden;
+  border: 1px solid #59607a;
+}
+body.dark .popover.clockpicker-popover .popover-title {
+  background-color: #313852;
+  color: inherit;
+}
+body.dark .popover.clockpicker-popover .popover-content {
+  background-color: #313852;
+}
+body.dark .popover.clockpicker-popover .clockpicker-plate {
+  border-color: #59607a;
+  background-color: #313852;
+}
+body.dark .popover.clockpicker-popover .clockpicker-plate .clockpicker-tick {
+  color: inherit;
+}
+body.dark .popover.clockpicker-popover .clockpicker-plate .clockpicker-canvas-bg {
+  fill: #59607a;
+}
+body.dark .nav-tabs .nav-item.show .nav-link, body.dark .nav-tabs .nav-link.active {
+  background-color: #59607a;
+  color: inherit;
+  border-color: #59607a;
+}
+body.dark .nav-tabs .nav-link:focus, body.dark .nav-tabs .nav-link:hover {
+  border-color: #3b425c;
+  background-color: #3b425c;
+}
+body.dark .nav-tabs {
+  border-bottom-color: #59607a;
+}
+body.dark .figure-caption {
+  color: inherit;
+}
+body.dark .btn-link {
+  color: inherit;
+}
+body.dark .text-muted, body.dark .chat-block .chat-content .messages .message-item.message-item-divider span, .chat-block .chat-content .messages .message-item.message-item-divider body.dark span, body.dark .demo-code-preview:before {
+  color: #9f9f9f !important;
+}
+body.dark .table td, body.dark .table th {
+  border-color: rgba(155, 155, 155, 0.2);
+}
+body.dark .border-bottom {
+  border-bottom-color: rgba(155, 155, 155, 0.2) !important;
+}
+body.dark .sidebar {
+  background: #313852;
+}
+body.dark .nicescroll-cursors {
+  background-color: rgba(255, 255, 255, 0.15) !important;
+}
+body.dark .chat-block .chat-content .messages .message-item:not(.me):before {
+  border-right-color: #454c66;
+}
+body.dark .chat-block .chat-content .messages .message-item:not(.me) .message-item-content {
+  background-color: #454c66;
+}
+body.dark .chat-block .chat-content .messages .message-item.message-item-divider:before, body.dark .chat-block .chat-content .messages .message-item.message-item-divider:after {
+  background-color: #454c66;
+}
+body.dark .chat-block .chat-sidebar {
+  background-color: #3b4362;
+}
+body.dark .chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item {
+  background-color: #313852;
+}
+body.dark .chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item.active {
+  color: white;
+}
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li:hover {
+  background-color: #3b425c;
+}
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active {
+  background-color: #454c66;
+}
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .avatar {
+  border-color: #454c66;
+}
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .app-list-title {
+  color: #c7c7c7;
+}
+body.dark .app-block .app-content .app-content-body .app-detail .card-header {
+  border-bottom-color: #454c66 !important;
+}
+body.dark .app-file-list {
+  border-color: #454c66;
+}
+body.dark .app-file-list .app-file-icon {
+  background-color: #454c66;
+  border-bottom-color: #454c66;
+}
+body.dark .ql-container.ql-snow {
+  border-color: #454c66;
+}
+body.dark .ql-editor.ql-blank::before {
+  color: #c7c7c7;
+}
+body.dark .ql-snow .ql-stroke, body.dark .ql-fill {
+  stroke: #c7c7c7;
+}
+body.dark .text-black-50 {
+  color: rgba(247, 247, 247, 0.43) !important;
+}
+body.dark .table-email-list a, body.dark .table-email-list .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.dark .table-email-list button.btn {
+  color: inherit;
+}
+body.dark .table-hover tbody tr:hover {
+  color: inherit;
+}
+body.dark .input-group-text {
+  background: #454c66;
+  color: inherit;
+}
+body.dark .dropdown-divider {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+body.dark .btn.btn-light, .fc body.dark .btn.fc-state-default, body.dark .fc .fc-state-default {
+  background: #454c66;
+  border-color: transparent;
+  color: inherit;
+}
+body.dark .btn.btn-light:not(:disabled):not(.disabled):hover, .fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):hover, body.dark .btn.btn-light:not(:disabled):not(.disabled):focus, .fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):focus, body.dark .btn.btn-light:not(:disabled):not(.disabled):active, .fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):active, body.dark .fc .fc-state-default:not(:disabled):not(.disabled):hover, body.dark .fc .fc-state-default:not(:disabled):not(.disabled):focus, body.dark .fc .fc-state-default:not(:disabled):not(.disabled):active {
+  background: #4f5670;
+  border-color: #4f5670;
+  color: inherit;
+}
+body.dark .btn.btn-light:not(:disabled):not(.disabled):focus, .fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):focus, body.dark .fc .fc-state-default:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(4, 7, 26, 0.5);
+  outline: none;
+  color: inherit;
+}
+body.dark .btn.btn-outline-light {
+  border: 1px solid rgba(255, 255, 255, 0.1);
+  color: #c7c7c7;
+}
+body.dark .btn.btn-outline-light:hover {
+  background: none !important;
+  color: #d6d6d6 !important;
+  border: 1px solid rgba(255, 255, 255, 0.1) !important;
+}
+body.dark .fc-unthemed .fc-content, body.dark .fc-unthemed .fc-divider, body.dark .fc-unthemed .fc-list-heading td, body.dark .fc-unthemed .fc-list-view, body.dark .fc-unthemed .fc-popover, body.dark .fc-unthemed .fc-row, body.dark .fc-unthemed tbody, body.dark .fc-unthemed td, body.dark .fc-unthemed th, body.dark .fc-unthemed thead {
+  border-color: rgba(240, 240, 240, 0.12);
+}
+body.dark .fc-unthemed .fc-list-item:hover td {
+  background: #454c66;
+}
+body.dark .fc-unthemed .fc-divider, body.dark .fc-unthemed .fc-list-heading td, body.dark .fc-unthemed .fc-popover .fc-header {
+  background: #454c66;
+}
+body.dark .fc-unthemed td.fc-today, body.dark .fc-unthemed .fc-list-empty {
+  background: #454c66;
+}
+body.dark #external-events .fc-event {
+  color: inherit;
+}
+body.dark .bootstrap-tagsinput {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+}
+body.dark .bootstrap-tagsinput .tag {
+  background: #454c66;
+  color: #c3c3c3;
+}
+body.dark .bootstrap-tagsinput input {
+  color: #c3c3c3;
+}
+body.dark .dropzone {
+  background-color: #313852;
+  border-color: #454c66;
+}
+body.dark .modal-content {
+  background-color: #313852;
+}
+body.dark .modal-content .modal-header {
+  border-bottom-color: rgba(240, 240, 240, 0.12);
+  background-color: #454c66 !important;
+}
+body.dark .modal-content .modal-header .close {
+  text-shadow: none;
+  opacity: 1;
+  color: inherit;
+  background-color: #313852 !important;
+}
+body.dark .modal-content .modal-footer {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+body.dark .swal-modal {
+  background-color: #313852;
+}
+body.dark .swal-modal .swal-icon--success__hide-corners {
+  background-color: inherit;
+}
+body.dark .swal-modal .swal-icon--success:before, body.dark .swal-modal .swal-icon--success:after {
+  background-color: inherit;
+}
+body.dark .swal-modal .swal-title, body.dark .swal-modal .swal-text {
+  color: inherit;
+}
+body.dark .popover {
+  background-color: #454c66;
+}
+body.dark .popover .popover-header {
+  background-color: #59607a;
+  border-color: transparent;
+}
+body.dark .popover .popover-body {
+  color: inherit;
+}
+body.dark .popover .popover-navigation {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+body.dark .bs-popover-auto[x-placement^=top] > .arrow::after, body.dark .bs-popover-top > .arrow::after {
+  border-top-color: #454c66;
+}
+body.dark .bs-popover-auto[x-placement^=right] > .arrow::after, body.dark .bs-popover-right > .arrow::after {
+  border-right-color: #454c66;
+}
+body.dark .bs-popover-auto[x-placement^=bottom] > .arrow::after, body.dark .bs-popover-bottom > .arrow::after {
+  border-bottom-color: #454c66;
+}
+body.dark .bs-popover-auto[x-placement^=left] > .arrow::after, body.dark .bs-popover-left > .arrow::after {
+  border-left-color: #454c66;
+}
+body.dark ul.links a, body.dark ul.links .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.dark ul.links button.btn {
+  color: inherit;
+}
+body.dark .page-link {
+  background-color: inherit;
+  color: inherit;
+  border-color: rgba(240, 240, 240, 0.12);
+}
+body.dark .page-item.disabled .page-link {
+  background-color: #272e48;
+  border-color: rgba(240, 240, 240, 0.12);
+  color: inherit;
+}
+body.dark .nav a.nav-link:not(.active), body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active), .header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active) {
+  color: #c7c7c7;
+}
+body.dark .nav a.nav-link:not(.active):hover, body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active):hover, .header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active):hover, body.dark .nav a.nav-link:not(.active):active, body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active):active, .header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active):active {
+  background-color: #3b425c;
+}
+body.dark.form-membership .form-wrapper {
+  background-color: #313852;
+}
+body.dark.form-membership .form-wrapper #logo img {
+  display: block;
+}
+body.dark.form-membership .form-wrapper #logo img:not(.logo-light) {
+  display: none;
+}
+body.dark .content-footer {
+  background-color: #313852;
+}
+body.dark .irs--round .irs-handle {
+  background-color: #313852;
+}
+body.dark .table tr.tr-selected {
+  background-color: #3b4362;
+}
+
+body.dark.hidden-navigation .navigation {
+  background-color: #313852;
+}
+
+body.dark.small-navigation .navigation-menu-body ul li.open > a, body.dark.small-navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn, .header form .input-group .input-group-append body.dark.small-navigation .navigation-menu-body ul li.open > button.btn {
+  background-color: #454c66;
+}
+body.dark.small-navigation .navigation-menu-body ul li ul {
+  background-color: #313852 !important;
+  border-left-color: #454c66 !important;
+}
+body.dark.small-navigation .navigation-menu-body ul li.navigation-divider:after {
+  background-color: #454c66 !important;
+}
+
+@media (min-width: 1200px) {
+  body.dark.horizontal-navigation .horizontal-navigation {
+    background-color: #313852;
+    border-top-color: #444e72;
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a.active, body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.active.btn, .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.active.btn {
+    background: rgba(0, 0, 0, 0.25);
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a:hover, body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.btn:hover, .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.btn:hover {
+    background: rgba(0, 0, 0, 0.1);
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a + ul, body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.btn + ul, .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.btn + ul {
+    border-top-color: #444e72;
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul {
+    background-color: #3b425c;
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul:before {
+    border-bottom-color: #3b425c;
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a, body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn, .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    color: #c7c7c7;
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a:hover, body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.btn:hover {
+    background: none;
+    color: #339aff;
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a.active, body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.active.btn {
+    background: none;
+    color: #339aff;
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li ul {
+    border-left-color: #444e72;
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li.open > a, body.dark.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li.open > button.btn, .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li.open > button.btn {
+    background: none;
+    color: #339aff;
+  }
+
+  body.dark.navigation-toggle-one.navigation-show .navigation .navigation-menu-body {
+    background-color: #313852;
+  }
+}
+@media (max-width: 1200px) {
+  body.dark .chat-block .chat-content.mobile-open {
+    background-color: #313852;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation {
+    background-color: #3b425c;
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul li a:hover, body.dark.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li button.btn:hover {
+    color: #339aff;
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul li a.active, body.dark.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn, .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li button.active.btn {
+    color: #339aff;
+  }
+  body.dark.horizontal-navigation .horizontal-navigation ul li.open > a, body.dark.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn, .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #339aff;
+  }
+}
+@media (max-width: 1200px) {
+  .header .header-toggler {
+    display: block;
+  }
+
+  .chat-app .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 0 !important;
+  }
+
+  .chat-block {
+    position: relative;
+  }
+  .chat-block .chat-content {
+    display: none;
+  }
+  .chat-block .chat-content .chat-header {
+    padding: 0.5rem 1.5rem;
+  }
+  .chat-block .chat-content .mobile-chat-close-btn {
+    display: block;
+  }
+  .chat-block .chat-content.chat-mobile-open {
+    display: flex;
+    background-color: white;
+    position: absolute;
+    right: 0;
+    left: 0;
+    max-width: 100%;
+    z-index: 2;
+    bottom: 0;
+  }
+  .chat-block .chat-sidebar {
+    flex: 1;
+    border-right: none;
+    max-width: 100% !important;
+  }
+
+  .header {
+    margin: 0;
+  }
+  .header .header-left .navigation-toggler {
+    display: block !important;
+  }
+  .header div:nth-child(2) ul.navbar-nav:first-child {
+    display: none;
+    background: #e6e6e6;
+    position: fixed;
+    left: 0;
+    right: 0;
+    top: 75px;
+  }
+  .header div:nth-child(2) ul.navbar-nav:first-child li a, .header div:nth-child(2) ul.navbar-nav:first-child li form .input-group .input-group-append button.btn, .header form .input-group .input-group-append div:nth-child(2) ul.navbar-nav:first-child li button.btn {
+    color: black;
+  }
+  .header div:nth-child(2) ul.navbar-nav:first-child.open {
+    display: flex;
+    flex-wrap: wrap;
+  }
+  .header .header-search .input-group {
+    background-color: white;
+  }
+  .header .header-search .input-group .btn {
+    color: black;
+  }
+  .header .header-search .input-group input.form-control:focus, .header .header-search .input-group .swal-modal input.swal-content__input:focus, .swal-modal .header .header-search .input-group input.swal-content__input:focus {
+    color: black;
+  }
+  .header .header-search .input-group input.form-control::-moz-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input::-moz-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input::-moz-placeholder {
+    color: #9b9b9b;
+  }
+  .header .header-search .input-group input.form-control:-ms-input-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input:-ms-input-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input:-ms-input-placeholder {
+    color: #9b9b9b;
+  }
+  .header .header-search .input-group input.form-control::placeholder, .header .header-search .input-group .swal-modal input.swal-content__input::placeholder, .swal-modal .header .header-search .input-group input.swal-content__input::placeholder {
+    color: #9b9b9b;
+  }
+  .header .navigation-toggler a, .header .navigation-toggler form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .navigation-toggler button.btn, .header .navbar-toggler a, .header .navbar-toggler form .input-group .input-group-append button.btn, .header form .input-group .input-group-append .navbar-toggler button.btn {
+    background: none !important;
+  }
+  .header .navigation-toggler {
+    display: none !important;
+  }
+  .header .navigation-toggler.mobile-toggler {
+    display: block !important;
+  }
+  .header .navigation-toggler a:hover, .header .navigation-toggler form .input-group .input-group-append button.btn:hover, .header form .input-group .input-group-append .navigation-toggler button.btn:hover {
+    background: none !important;
+  }
+  .header .dropdown {
+    position: static;
+  }
+  .header .dropdown-menu {
+    right: 1rem !important;
+    top: auto !important;
+    left: 1rem !important;
+    margin-top: 10px;
+    width: auto !important;
+    transform: inherit !important;
+  }
+
+  .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+  }
+
+  .content-footer {
+    margin-left: 0 !important;
+  }
+
+  .navigation {
+    background-color: white;
+    z-index: 1000;
+    box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.15);
+    left: -80%;
+    top: 0;
+    bottom: 0;
+    opacity: 0;
+    transition: left 0.2s;
+    position: fixed !important;
+  }
+  .navigation.open {
+    left: 0;
+    opacity: 1;
+  }
+  .navigation header.navigation-header {
+    padding-top: 20px;
+  }
+  .navigation .navigation-icon-menu {
+    margin: 0;
+    border-radius: 0;
+  }
+  .navigation .navigation-menu-body {
+    padding: 15px 0;
+  }
+
+  .page-header {
+    padding: 0;
+    margin-top: 0;
+    margin-right: 0;
+    margin-left: 0;
+  }
+
+  .user-page {
+    padding: 20px;
+    height: auto;
+  }
+  .user-page .card, .user-page .chat-block, .user-page .app-block .app-content .app-action, .app-block .app-content .user-page .app-action {
+    width: auto;
+  }
+  .user-page .card .card-body, .user-page .chat-block .card-body, .user-page .app-block .app-content .app-action .card-body, .app-block .app-content .user-page .app-action .card-body {
+    padding: 30px;
+  }
+}
+@media (max-width: 992px) {
+  .app-block {
+    position: relative;
+  }
+  .app-block .app-sidebar-menu-button {
+    display: inline-flex;
+    margin-right: 1rem;
+  }
+  .app-block .app-sidebar {
+    display: none;
+    position: absolute;
+    left: 0;
+    z-index: 9;
+    flex: 0 0 35%;
+    max-width: 35%;
+    bottom: 0;
+  }
+  .app-block .app-sidebar .app-sidebar-menu {
+    overflow: auto;
+  }
+  .app-block .app-sidebar.show {
+    display: block;
+  }
+  .app-block .app-sidebar > .card, .app-block .app-sidebar > .chat-block, .app-block .app-content .app-sidebar > .app-action {
+    box-shadow: 3px 0px 15px -10px black;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+  .app-block .app-content {
+    flex: 0 0 100%;
+    max-width: 100%;
+  }
+  .app-block .app-content .app-action {
+    flex-direction: column-reverse;
+  }
+  .app-block .app-content .app-action .action-right {
+    margin-left: 0;
+    margin-bottom: 1rem;
+  }
+  .app-block .app-content .app-detail .card-header {
+    flex-direction: column;
+    align-items: stretch !important;
+  }
+  .app-block .app-content .app-detail .card-header .app-detail-action-right {
+    margin-left: 0 !important;
+    margin-top: 1rem;
+  }
+
+  .card, .chat-block, .app-block .app-content .app-action {
+    margin-bottom: 1rem;
+  }
+  .card .card-body, .chat-block .card-body, .app-block .app-content .app-action .card-body {
+    padding: 1.2rem;
+  }
+}
+@media (max-width: 768px) {
+  body.form-membership .form-wrapper {
+    width: 90%;
+    margin: 30px auto;
+  }
+
+  body.horizontal-navigation .horizontal-navigation.open {
+    width: 80%;
+  }
+
+  .app-block .app-content .app-action .action-right form {
+    margin-right: 0 !important;
+  }
+  .app-block .app-content .app-action .action-right .app-pager {
+    display: none !important;
+  }
+
+  .app-block .app-sidebar {
+    flex: 0 0 70%;
+    max-width: 70%;
+  }
+
+  .chat-block .chat-sidebar.border-right {
+    border-right: none !important;
+  }
+
+  .toast-top-right {
+    top: 1rem;
+    right: 1rem;
+  }
+
+  .toast-top-left {
+    top: 1rem;
+    left: 1rem;
+  }
+
+  .header .header-left {
+    width: auto;
+  }
+  .header .page-title {
+    display: none;
+  }
+
+  footer {
+    padding: 15px 20px;
+  }
+  footer .nav {
+    display: none;
+  }
+
+  .table-responsive-stack tr {
+    flex-direction: column;
+    border-bottom: 3px solid #ccc;
+    display: block;
+  }
+
+  /*  IE9 FIX   */
+  .table-responsive-stack td {
+    float: left \9 ;
+    width: 100%;
+  }
+
+  .sidebar > ul.nav {
+    display: flex;
+  }
+  .sidebar > ul.nav li.nav-item {
+    border: none;
+  }
+
+  .user-page {
+    padding: 20px;
+    height: auto;
+  }
+  .user-page .card, .user-page .chat-block, .user-page .app-block .app-content .app-action, .app-block .app-content .user-page .app-action {
+    width: 100%;
+  }
+  .user-page .card .card-body, .user-page .chat-block .card-body, .user-page .app-block .app-content .app-action .card-body, .app-block .app-content .user-page .app-action .card-body {
+    padding: 30px;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div {
+    float: none !important;
+  }
+  .fc .fc-toolbar.fc-header-toolbar > div .fc-button-group {
+    float: none !important;
+  }
+  .fc .fc-toolbar.fc-header-toolbar > div.fc-left {
+    display: flex;
+    justify-content: center;
+    margin-bottom: 15px;
+  }
+  .fc .fc-toolbar.fc-header-toolbar > div.fc-right {
+    margin-bottom: 5px;
+  }
+}
+@media (max-width: 414px) {
+  .nav {
+    display: block;
+    border: none;
+  }
+  .nav li.nav-item {
+    margin-bottom: 0;
+  }
+  .nav li.nav-item:last-child {
+    border: none;
+  }
+  .nav li.nav-item a.nav-link, .nav li.nav-item .header form .input-group .input-group-append button.nav-link.btn, .header form .input-group .input-group-append .nav li.nav-item button.nav-link.btn {
+    border: none;
+  }
+
+  body:not(.semi-dark):not(.dark) .nav li.nav-item {
+    border-bottom: 1px solid #ebebeb;
+  }
+
+  .navigation header.navigation-header .nav {
+    display: flex;
+  }
+
+  body.dark .nav li.nav-item {
+    border-bottom-color: #6d748e;
+  }
+
+  .wizard > .steps > ul > li {
+    float: none;
+    width: 100%;
+    margin-bottom: 10px;
+  }
+
+  .wizard > .content {
+    background: none;
+  }
+
+  .wizard > .content > .body {
+    position: static;
+    padding: 0;
+  }
+
+  .dataTables_wrapper .dataTables_filter {
+    display: block;
+  }
+
+  .navigation {
+    width: 75%;
+  }
+
+  .page-header .breadcrumb {
+    display: none;
+  }
+}
+@media (max-width: 375px) {
+  nav.navbar .navbar-menu {
+    padding-left: 0;
+  }
+
+  .navigation {
+    width: 85%;
+  }
+}
+@media (max-width: 544px) {
+  .text-xs-center {
+    text-align: center !important;
+  }
+
+  .text-xs-left {
+    text-align: left !important;
+  }
+
+  .text-xs-right {
+    text-align: right !important;
+  }
+}
+@media print {
+  .page-header {
+    display: none;
+  }
+}
Index: public/assets/css/app.min.css
===================================================================
--- public/assets/css/app.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/assets/css/app.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,12315 @@
+@charset "UTF-8";
+
+.m-0 {
+  margin: 0px !important;
+}
+
+.m-5 {
+  margin: 5px !important;
+}
+
+.m-10 {
+  margin: 10px !important;
+}
+
+.m-15 {
+  margin: 15px !important;
+}
+
+.m-20 {
+  margin: 20px !important;
+}
+
+.m-25 {
+  margin: 25px !important;
+}
+
+.m-30 {
+  margin: 30px !important;
+}
+
+.m-35 {
+  margin: 35px !important;
+}
+
+.m-40 {
+  margin: 40px !important;
+}
+
+.m-45 {
+  margin: 45px !important;
+}
+
+.m-50 {
+  margin: 50px !important;
+}
+
+.m-t-b-0 {
+  margin-top: 0px !important;
+  margin-bottom: 0px !important;
+}
+
+.m-t-b-5 {
+  margin-top: 5px !important;
+  margin-bottom: 5px !important;
+}
+
+.m-t-b-10 {
+  margin-top: 10px !important;
+  margin-bottom: 10px !important;
+}
+
+.m-t-b-15 {
+  margin-top: 15px !important;
+  margin-bottom: 15px !important;
+}
+
+.m-t-b-20 {
+  margin-top: 20px !important;
+  margin-bottom: 20px !important;
+}
+
+.m-t-b-25 {
+  margin-top: 25px !important;
+  margin-bottom: 25px !important;
+}
+
+.m-t-b-30 {
+  margin-top: 30px !important;
+  margin-bottom: 30px !important;
+}
+
+.m-t-b-35 {
+  margin-top: 35px !important;
+  margin-bottom: 35px !important;
+}
+
+.m-t-b-40 {
+  margin-top: 40px !important;
+  margin-bottom: 40px !important;
+}
+
+.m-t-b-45 {
+  margin-top: 45px !important;
+  margin-bottom: 45px !important;
+}
+
+.m-t-b-50 {
+  margin-top: 50px !important;
+  margin-bottom: 50px !important;
+}
+
+.m-l-r-0 {
+  margin-left: 0px !important;
+  margin-right: 0px !important;
+}
+
+.m-l-r-5 {
+  margin-left: 5px !important;
+  margin-right: 5px !important;
+}
+
+.m-l-r-10 {
+  margin-left: 10px !important;
+  margin-right: 10px !important;
+}
+
+.m-l-r-15 {
+  margin-left: 15px !important;
+  margin-right: 15px !important;
+}
+
+.m-l-r-20 {
+  margin-left: 20px !important;
+  margin-right: 20px !important;
+}
+
+.m-l-r-25 {
+  margin-left: 25px !important;
+  margin-right: 25px !important;
+}
+
+.m-l-r-30 {
+  margin-left: 30px !important;
+  margin-right: 30px !important;
+}
+
+.m-l-r-35 {
+  margin-left: 35px !important;
+  margin-right: 35px !important;
+}
+
+.m-l-r-40 {
+  margin-left: 40px !important;
+  margin-right: 40px !important;
+}
+
+.m-l-r-45 {
+  margin-left: 45px !important;
+  margin-right: 45px !important;
+}
+
+.m-l-r-50 {
+  margin-left: 50px !important;
+  margin-right: 50px !important;
+}
+
+.m-t-0 {
+  margin-top: 0px !important;
+}
+
+.m-t-5 {
+  margin-top: 5px !important;
+}
+
+.m-t-10 {
+  margin-top: 10px !important;
+}
+
+.m-t-15 {
+  margin-top: 15px !important;
+}
+
+.m-t-20 {
+  margin-top: 20px !important;
+}
+
+.m-t-25 {
+  margin-top: 25px !important;
+}
+
+.m-t-30 {
+  margin-top: 30px !important;
+}
+
+.m-t-35 {
+  margin-top: 35px !important;
+}
+
+.m-t-40 {
+  margin-top: 40px !important;
+}
+
+.m-t-45 {
+  margin-top: 45px !important;
+}
+
+.m-t-50 {
+  margin-top: 50px !important;
+}
+
+.m-r-0 {
+  margin-right: 0px !important;
+}
+
+.m-r-5 {
+  margin-right: 5px !important;
+}
+
+.m-r-10 {
+  margin-right: 10px !important;
+}
+
+.m-r-15 {
+  margin-right: 15px !important;
+}
+
+.m-r-20 {
+  margin-right: 20px !important;
+}
+
+.m-r-25 {
+  margin-right: 25px !important;
+}
+
+.m-r-30 {
+  margin-right: 30px !important;
+}
+
+.m-r-35 {
+  margin-right: 35px !important;
+}
+
+.m-r-40 {
+  margin-right: 40px !important;
+}
+
+.m-r-45 {
+  margin-right: 45px !important;
+}
+
+.m-r-50 {
+  margin-right: 50px !important;
+}
+
+.m-b-0 {
+  margin-bottom: 0px !important;
+}
+
+.m-b-5 {
+  margin-bottom: 5px !important;
+}
+
+.m-b-10 {
+  margin-bottom: 10px !important;
+}
+
+.m-b-15 {
+  margin-bottom: 15px !important;
+}
+
+.m-b-20 {
+  margin-bottom: 20px !important;
+}
+
+.m-b-25 {
+  margin-bottom: 25px !important;
+}
+
+.m-b-30 {
+  margin-bottom: 30px !important;
+}
+
+.m-b-35 {
+  margin-bottom: 35px !important;
+}
+
+.m-b-40 {
+  margin-bottom: 40px !important;
+}
+
+.m-b-45 {
+  margin-bottom: 45px !important;
+}
+
+.m-b-50 {
+  margin-bottom: 50px !important;
+}
+
+.m-l-0 {
+  margin-left: 0px !important;
+}
+
+.m-l-5 {
+  margin-left: 5px !important;
+}
+
+.m-l-10 {
+  margin-left: 10px !important;
+}
+
+.m-l-15 {
+  margin-left: 15px !important;
+}
+
+.m-l-20 {
+  margin-left: 20px !important;
+}
+
+.m-l-25 {
+  margin-left: 25px !important;
+}
+
+.m-l-30 {
+  margin-left: 30px !important;
+}
+
+.m-l-35 {
+  margin-left: 35px !important;
+}
+
+.m-l-40 {
+  margin-left: 40px !important;
+}
+
+.m-l-45 {
+  margin-left: 45px !important;
+}
+
+.m-l-50 {
+  margin-left: 50px !important;
+}
+
+.m-t-0-minus {
+  margin-top: 0px !important;
+}
+
+.m-t-10-minus {
+  margin-top: -10px !important;
+}
+
+.m-t-20-minus {
+  margin-top: -20px !important;
+}
+
+.m-t-30-minus {
+  margin-top: -30px !important;
+}
+
+.m-t-40-minus {
+  margin-top: -40px !important;
+}
+
+.m-t-50-minus {
+  margin-top: -50px !important;
+}
+
+.m-t-60-minus {
+  margin-top: -60px !important;
+}
+
+.m-t-70-minus {
+  margin-top: -70px !important;
+}
+
+.m-t-80-minus {
+  margin-top: -80px !important;
+}
+
+.m-t-90-minus {
+  margin-top: -90px !important;
+}
+
+.m-t-100-minus {
+  margin-top: -100px !important;
+}
+
+.m-t-110-minus {
+  margin-top: -110px !important;
+}
+
+.m-t-120-minus {
+  margin-top: -120px !important;
+}
+
+.m-t-130-minus {
+  margin-top: -130px !important;
+}
+
+.m-t-140-minus {
+  margin-top: -140px !important;
+}
+
+.m-t-150-minus {
+  margin-top: -150px !important;
+}
+
+.m-t-160-minus {
+  margin-top: -160px !important;
+}
+
+.m-t-170-minus {
+  margin-top: -170px !important;
+}
+
+.m-t-180-minus {
+  margin-top: -180px !important;
+}
+
+.m-t-190-minus {
+  margin-top: -190px !important;
+}
+
+.m-t-200-minus {
+  margin-top: -200px !important;
+}
+
+.m-t-210-minus {
+  margin-top: -210px !important;
+}
+
+.m-t-220-minus {
+  margin-top: -220px !important;
+}
+
+.m-t-230-minus {
+  margin-top: -230px !important;
+}
+
+.m-t-240-minus {
+  margin-top: -240px !important;
+}
+
+.m-t-250-minus {
+  margin-top: -250px !important;
+}
+
+.m-t-260-minus {
+  margin-top: -260px !important;
+}
+
+.m-t-270-minus {
+  margin-top: -270px !important;
+}
+
+.m-t-280-minus {
+  margin-top: -280px !important;
+}
+
+.m-t-290-minus {
+  margin-top: -290px !important;
+}
+
+.m-t-300-minus {
+  margin-top: -300px !important;
+}
+
+.m-t-310-minus {
+  margin-top: -310px !important;
+}
+
+.m-t-320-minus {
+  margin-top: -320px !important;
+}
+
+.m-t-330-minus {
+  margin-top: -330px !important;
+}
+
+.m-t-340-minus {
+  margin-top: -340px !important;
+}
+
+.m-t-350-minus {
+  margin-top: -350px !important;
+}
+
+.m-t-360-minus {
+  margin-top: -360px !important;
+}
+
+.m-t-370-minus {
+  margin-top: -370px !important;
+}
+
+.m-t-380-minus {
+  margin-top: -380px !important;
+}
+
+.m-t-390-minus {
+  margin-top: -390px !important;
+}
+
+.m-t-400-minus {
+  margin-top: -400px !important;
+}
+
+.m-t-410-minus {
+  margin-top: -410px !important;
+}
+
+.m-t-420-minus {
+  margin-top: -420px !important;
+}
+
+.m-t-430-minus {
+  margin-top: -430px !important;
+}
+
+.m-t-440-minus {
+  margin-top: -440px !important;
+}
+
+.m-t-450-minus {
+  margin-top: -450px !important;
+}
+
+.m-t-460-minus {
+  margin-top: -460px !important;
+}
+
+.m-t-470-minus {
+  margin-top: -470px !important;
+}
+
+.m-t-480-minus {
+  margin-top: -480px !important;
+}
+
+.m-t-490-minus {
+  margin-top: -490px !important;
+}
+
+.m-t-500-minus {
+  margin-top: -500px !important;
+}
+
+.m-t-510-minus {
+  margin-top: -510px !important;
+}
+
+.m-t-520-minus {
+  margin-top: -520px !important;
+}
+
+.m-t-530-minus {
+  margin-top: -530px !important;
+}
+
+.m-t-540-minus {
+  margin-top: -540px !important;
+}
+
+.m-t-550-minus {
+  margin-top: -550px !important;
+}
+
+.m-t-560-minus {
+  margin-top: -560px !important;
+}
+
+.m-t-570-minus {
+  margin-top: -570px !important;
+}
+
+.m-t-580-minus {
+  margin-top: -580px !important;
+}
+
+.m-t-590-minus {
+  margin-top: -590px !important;
+}
+
+.m-t-600-minus {
+  margin-top: -600px !important;
+}
+
+.m-t-610-minus {
+  margin-top: -610px !important;
+}
+
+.m-t-620-minus {
+  margin-top: -620px !important;
+}
+
+.m-t-630-minus {
+  margin-top: -630px !important;
+}
+
+.m-t-640-minus {
+  margin-top: -640px !important;
+}
+
+.m-t-650-minus {
+  margin-top: -650px !important;
+}
+
+.m-t-660-minus {
+  margin-top: -660px !important;
+}
+
+.m-t-670-minus {
+  margin-top: -670px !important;
+}
+
+.m-t-680-minus {
+  margin-top: -680px !important;
+}
+
+.m-t-690-minus {
+  margin-top: -690px !important;
+}
+
+.m-t-700-minus {
+  margin-top: -700px !important;
+}
+
+.m-t-710-minus {
+  margin-top: -710px !important;
+}
+
+.m-t-720-minus {
+  margin-top: -720px !important;
+}
+
+.m-t-730-minus {
+  margin-top: -730px !important;
+}
+
+.m-t-740-minus {
+  margin-top: -740px !important;
+}
+
+.m-t-750-minus {
+  margin-top: -750px !important;
+}
+
+.m-t-760-minus {
+  margin-top: -760px !important;
+}
+
+.m-t-770-minus {
+  margin-top: -770px !important;
+}
+
+.m-t-780-minus {
+  margin-top: -780px !important;
+}
+
+.m-t-790-minus {
+  margin-top: -790px !important;
+}
+
+.m-t-800-minus {
+  margin-top: -800px !important;
+}
+
+.m-t-810-minus {
+  margin-top: -810px !important;
+}
+
+.m-t-820-minus {
+  margin-top: -820px !important;
+}
+
+.m-t-830-minus {
+  margin-top: -830px !important;
+}
+
+.m-t-840-minus {
+  margin-top: -840px !important;
+}
+
+.m-t-850-minus {
+  margin-top: -850px !important;
+}
+
+.m-t-860-minus {
+  margin-top: -860px !important;
+}
+
+.m-t-870-minus {
+  margin-top: -870px !important;
+}
+
+.m-t-880-minus {
+  margin-top: -880px !important;
+}
+
+.m-t-890-minus {
+  margin-top: -890px !important;
+}
+
+.m-t-900-minus {
+  margin-top: -900px !important;
+}
+
+.m-t-910-minus {
+  margin-top: -910px !important;
+}
+
+.m-t-920-minus {
+  margin-top: -920px !important;
+}
+
+.m-t-930-minus {
+  margin-top: -930px !important;
+}
+
+.m-t-940-minus {
+  margin-top: -940px !important;
+}
+
+.m-t-950-minus {
+  margin-top: -950px !important;
+}
+
+.m-t-960-minus {
+  margin-top: -960px !important;
+}
+
+.m-t-970-minus {
+  margin-top: -970px !important;
+}
+
+.m-t-980-minus {
+  margin-top: -980px !important;
+}
+
+.m-t-990-minus {
+  margin-top: -990px !important;
+}
+
+.m-t-1000-minus {
+  margin-top: -1000px !important;
+}
+
+.m-r-0-minus {
+  margin-right: 0px !important;
+}
+
+.m-r-10-minus {
+  margin-right: -10px !important;
+}
+
+.m-r-20-minus {
+  margin-right: -20px !important;
+}
+
+.m-r-30-minus {
+  margin-right: -30px !important;
+}
+
+.m-r-40-minus {
+  margin-right: -40px !important;
+}
+
+.m-r-50-minus {
+  margin-right: -50px !important;
+}
+
+.m-r-60-minus {
+  margin-right: -60px !important;
+}
+
+.m-r-70-minus {
+  margin-right: -70px !important;
+}
+
+.m-r-80-minus {
+  margin-right: -80px !important;
+}
+
+.m-r-90-minus {
+  margin-right: -90px !important;
+}
+
+.m-r-100-minus {
+  margin-right: -100px !important;
+}
+
+.m-r-110-minus {
+  margin-right: -110px !important;
+}
+
+.m-r-120-minus {
+  margin-right: -120px !important;
+}
+
+.m-r-130-minus {
+  margin-right: -130px !important;
+}
+
+.m-r-140-minus {
+  margin-right: -140px !important;
+}
+
+.m-r-150-minus {
+  margin-right: -150px !important;
+}
+
+.m-r-160-minus {
+  margin-right: -160px !important;
+}
+
+.m-r-170-minus {
+  margin-right: -170px !important;
+}
+
+.m-r-180-minus {
+  margin-right: -180px !important;
+}
+
+.m-r-190-minus {
+  margin-right: -190px !important;
+}
+
+.m-r-200-minus {
+  margin-right: -200px !important;
+}
+
+.m-r-210-minus {
+  margin-right: -210px !important;
+}
+
+.m-r-220-minus {
+  margin-right: -220px !important;
+}
+
+.m-r-230-minus {
+  margin-right: -230px !important;
+}
+
+.m-r-240-minus {
+  margin-right: -240px !important;
+}
+
+.m-r-250-minus {
+  margin-right: -250px !important;
+}
+
+.m-r-260-minus {
+  margin-right: -260px !important;
+}
+
+.m-r-270-minus {
+  margin-right: -270px !important;
+}
+
+.m-r-280-minus {
+  margin-right: -280px !important;
+}
+
+.m-r-290-minus {
+  margin-right: -290px !important;
+}
+
+.m-r-300-minus {
+  margin-right: -300px !important;
+}
+
+.m-r-310-minus {
+  margin-right: -310px !important;
+}
+
+.m-r-320-minus {
+  margin-right: -320px !important;
+}
+
+.m-r-330-minus {
+  margin-right: -330px !important;
+}
+
+.m-r-340-minus {
+  margin-right: -340px !important;
+}
+
+.m-r-350-minus {
+  margin-right: -350px !important;
+}
+
+.m-r-360-minus {
+  margin-right: -360px !important;
+}
+
+.m-r-370-minus {
+  margin-right: -370px !important;
+}
+
+.m-r-380-minus {
+  margin-right: -380px !important;
+}
+
+.m-r-390-minus {
+  margin-right: -390px !important;
+}
+
+.m-r-400-minus {
+  margin-right: -400px !important;
+}
+
+.m-r-410-minus {
+  margin-right: -410px !important;
+}
+
+.m-r-420-minus {
+  margin-right: -420px !important;
+}
+
+.m-r-430-minus {
+  margin-right: -430px !important;
+}
+
+.m-r-440-minus {
+  margin-right: -440px !important;
+}
+
+.m-r-450-minus {
+  margin-right: -450px !important;
+}
+
+.m-r-460-minus {
+  margin-right: -460px !important;
+}
+
+.m-r-470-minus {
+  margin-right: -470px !important;
+}
+
+.m-r-480-minus {
+  margin-right: -480px !important;
+}
+
+.m-r-490-minus {
+  margin-right: -490px !important;
+}
+
+.m-r-500-minus {
+  margin-right: -500px !important;
+}
+
+.m-r-510-minus {
+  margin-right: -510px !important;
+}
+
+.m-r-520-minus {
+  margin-right: -520px !important;
+}
+
+.m-r-530-minus {
+  margin-right: -530px !important;
+}
+
+.m-r-540-minus {
+  margin-right: -540px !important;
+}
+
+.m-r-550-minus {
+  margin-right: -550px !important;
+}
+
+.m-r-560-minus {
+  margin-right: -560px !important;
+}
+
+.m-r-570-minus {
+  margin-right: -570px !important;
+}
+
+.m-r-580-minus {
+  margin-right: -580px !important;
+}
+
+.m-r-590-minus {
+  margin-right: -590px !important;
+}
+
+.m-r-600-minus {
+  margin-right: -600px !important;
+}
+
+.m-r-610-minus {
+  margin-right: -610px !important;
+}
+
+.m-r-620-minus {
+  margin-right: -620px !important;
+}
+
+.m-r-630-minus {
+  margin-right: -630px !important;
+}
+
+.m-r-640-minus {
+  margin-right: -640px !important;
+}
+
+.m-r-650-minus {
+  margin-right: -650px !important;
+}
+
+.m-r-660-minus {
+  margin-right: -660px !important;
+}
+
+.m-r-670-minus {
+  margin-right: -670px !important;
+}
+
+.m-r-680-minus {
+  margin-right: -680px !important;
+}
+
+.m-r-690-minus {
+  margin-right: -690px !important;
+}
+
+.m-r-700-minus {
+  margin-right: -700px !important;
+}
+
+.m-r-710-minus {
+  margin-right: -710px !important;
+}
+
+.m-r-720-minus {
+  margin-right: -720px !important;
+}
+
+.m-r-730-minus {
+  margin-right: -730px !important;
+}
+
+.m-r-740-minus {
+  margin-right: -740px !important;
+}
+
+.m-r-750-minus {
+  margin-right: -750px !important;
+}
+
+.m-r-760-minus {
+  margin-right: -760px !important;
+}
+
+.m-r-770-minus {
+  margin-right: -770px !important;
+}
+
+.m-r-780-minus {
+  margin-right: -780px !important;
+}
+
+.m-r-790-minus {
+  margin-right: -790px !important;
+}
+
+.m-r-800-minus {
+  margin-right: -800px !important;
+}
+
+.m-r-810-minus {
+  margin-right: -810px !important;
+}
+
+.m-r-820-minus {
+  margin-right: -820px !important;
+}
+
+.m-r-830-minus {
+  margin-right: -830px !important;
+}
+
+.m-r-840-minus {
+  margin-right: -840px !important;
+}
+
+.m-r-850-minus {
+  margin-right: -850px !important;
+}
+
+.m-r-860-minus {
+  margin-right: -860px !important;
+}
+
+.m-r-870-minus {
+  margin-right: -870px !important;
+}
+
+.m-r-880-minus {
+  margin-right: -880px !important;
+}
+
+.m-r-890-minus {
+  margin-right: -890px !important;
+}
+
+.m-r-900-minus {
+  margin-right: -900px !important;
+}
+
+.m-r-910-minus {
+  margin-right: -910px !important;
+}
+
+.m-r-920-minus {
+  margin-right: -920px !important;
+}
+
+.m-r-930-minus {
+  margin-right: -930px !important;
+}
+
+.m-r-940-minus {
+  margin-right: -940px !important;
+}
+
+.m-r-950-minus {
+  margin-right: -950px !important;
+}
+
+.m-r-960-minus {
+  margin-right: -960px !important;
+}
+
+.m-r-970-minus {
+  margin-right: -970px !important;
+}
+
+.m-r-980-minus {
+  margin-right: -980px !important;
+}
+
+.m-r-990-minus {
+  margin-right: -990px !important;
+}
+
+.m-r-1000-minus {
+  margin-right: -1000px !important;
+}
+
+.m-b-0-minus {
+  margin-bottom: 0px !important;
+}
+
+.m-b-10-minus {
+  margin-bottom: -10px !important;
+}
+
+.m-b-20-minus {
+  margin-bottom: -20px !important;
+}
+
+.m-b-30-minus {
+  margin-bottom: -30px !important;
+}
+
+.m-b-40-minus {
+  margin-bottom: -40px !important;
+}
+
+.m-b-50-minus {
+  margin-bottom: -50px !important;
+}
+
+.m-b-60-minus {
+  margin-bottom: -60px !important;
+}
+
+.m-b-70-minus {
+  margin-bottom: -70px !important;
+}
+
+.m-b-80-minus {
+  margin-bottom: -80px !important;
+}
+
+.m-b-90-minus {
+  margin-bottom: -90px !important;
+}
+
+.m-b-100-minus {
+  margin-bottom: -100px !important;
+}
+
+.m-b-110-minus {
+  margin-bottom: -110px !important;
+}
+
+.m-b-120-minus {
+  margin-bottom: -120px !important;
+}
+
+.m-b-130-minus {
+  margin-bottom: -130px !important;
+}
+
+.m-b-140-minus {
+  margin-bottom: -140px !important;
+}
+
+.m-b-150-minus {
+  margin-bottom: -150px !important;
+}
+
+.m-b-160-minus {
+  margin-bottom: -160px !important;
+}
+
+.m-b-170-minus {
+  margin-bottom: -170px !important;
+}
+
+.m-b-180-minus {
+  margin-bottom: -180px !important;
+}
+
+.m-b-190-minus {
+  margin-bottom: -190px !important;
+}
+
+.m-b-200-minus {
+  margin-bottom: -200px !important;
+}
+
+.m-b-210-minus {
+  margin-bottom: -210px !important;
+}
+
+.m-b-220-minus {
+  margin-bottom: -220px !important;
+}
+
+.m-b-230-minus {
+  margin-bottom: -230px !important;
+}
+
+.m-b-240-minus {
+  margin-bottom: -240px !important;
+}
+
+.m-b-250-minus {
+  margin-bottom: -250px !important;
+}
+
+.m-b-260-minus {
+  margin-bottom: -260px !important;
+}
+
+.m-b-270-minus {
+  margin-bottom: -270px !important;
+}
+
+.m-b-280-minus {
+  margin-bottom: -280px !important;
+}
+
+.m-b-290-minus {
+  margin-bottom: -290px !important;
+}
+
+.m-b-300-minus {
+  margin-bottom: -300px !important;
+}
+
+.m-b-310-minus {
+  margin-bottom: -310px !important;
+}
+
+.m-b-320-minus {
+  margin-bottom: -320px !important;
+}
+
+.m-b-330-minus {
+  margin-bottom: -330px !important;
+}
+
+.m-b-340-minus {
+  margin-bottom: -340px !important;
+}
+
+.m-b-350-minus {
+  margin-bottom: -350px !important;
+}
+
+.m-b-360-minus {
+  margin-bottom: -360px !important;
+}
+
+.m-b-370-minus {
+  margin-bottom: -370px !important;
+}
+
+.m-b-380-minus {
+  margin-bottom: -380px !important;
+}
+
+.m-b-390-minus {
+  margin-bottom: -390px !important;
+}
+
+.m-b-400-minus {
+  margin-bottom: -400px !important;
+}
+
+.m-b-410-minus {
+  margin-bottom: -410px !important;
+}
+
+.m-b-420-minus {
+  margin-bottom: -420px !important;
+}
+
+.m-b-430-minus {
+  margin-bottom: -430px !important;
+}
+
+.m-b-440-minus {
+  margin-bottom: -440px !important;
+}
+
+.m-b-450-minus {
+  margin-bottom: -450px !important;
+}
+
+.m-b-460-minus {
+  margin-bottom: -460px !important;
+}
+
+.m-b-470-minus {
+  margin-bottom: -470px !important;
+}
+
+.m-b-480-minus {
+  margin-bottom: -480px !important;
+}
+
+.m-b-490-minus {
+  margin-bottom: -490px !important;
+}
+
+.m-b-500-minus {
+  margin-bottom: -500px !important;
+}
+
+.m-b-510-minus {
+  margin-bottom: -510px !important;
+}
+
+.m-b-520-minus {
+  margin-bottom: -520px !important;
+}
+
+.m-b-530-minus {
+  margin-bottom: -530px !important;
+}
+
+.m-b-540-minus {
+  margin-bottom: -540px !important;
+}
+
+.m-b-550-minus {
+  margin-bottom: -550px !important;
+}
+
+.m-b-560-minus {
+  margin-bottom: -560px !important;
+}
+
+.m-b-570-minus {
+  margin-bottom: -570px !important;
+}
+
+.m-b-580-minus {
+  margin-bottom: -580px !important;
+}
+
+.m-b-590-minus {
+  margin-bottom: -590px !important;
+}
+
+.m-b-600-minus {
+  margin-bottom: -600px !important;
+}
+
+.m-b-610-minus {
+  margin-bottom: -610px !important;
+}
+
+.m-b-620-minus {
+  margin-bottom: -620px !important;
+}
+
+.m-b-630-minus {
+  margin-bottom: -630px !important;
+}
+
+.m-b-640-minus {
+  margin-bottom: -640px !important;
+}
+
+.m-b-650-minus {
+  margin-bottom: -650px !important;
+}
+
+.m-b-660-minus {
+  margin-bottom: -660px !important;
+}
+
+.m-b-670-minus {
+  margin-bottom: -670px !important;
+}
+
+.m-b-680-minus {
+  margin-bottom: -680px !important;
+}
+
+.m-b-690-minus {
+  margin-bottom: -690px !important;
+}
+
+.m-b-700-minus {
+  margin-bottom: -700px !important;
+}
+
+.m-b-710-minus {
+  margin-bottom: -710px !important;
+}
+
+.m-b-720-minus {
+  margin-bottom: -720px !important;
+}
+
+.m-b-730-minus {
+  margin-bottom: -730px !important;
+}
+
+.m-b-740-minus {
+  margin-bottom: -740px !important;
+}
+
+.m-b-750-minus {
+  margin-bottom: -750px !important;
+}
+
+.m-b-760-minus {
+  margin-bottom: -760px !important;
+}
+
+.m-b-770-minus {
+  margin-bottom: -770px !important;
+}
+
+.m-b-780-minus {
+  margin-bottom: -780px !important;
+}
+
+.m-b-790-minus {
+  margin-bottom: -790px !important;
+}
+
+.m-b-800-minus {
+  margin-bottom: -800px !important;
+}
+
+.m-b-810-minus {
+  margin-bottom: -810px !important;
+}
+
+.m-b-820-minus {
+  margin-bottom: -820px !important;
+}
+
+.m-b-830-minus {
+  margin-bottom: -830px !important;
+}
+
+.m-b-840-minus {
+  margin-bottom: -840px !important;
+}
+
+.m-b-850-minus {
+  margin-bottom: -850px !important;
+}
+
+.m-b-860-minus {
+  margin-bottom: -860px !important;
+}
+
+.m-b-870-minus {
+  margin-bottom: -870px !important;
+}
+
+.m-b-880-minus {
+  margin-bottom: -880px !important;
+}
+
+.m-b-890-minus {
+  margin-bottom: -890px !important;
+}
+
+.m-b-900-minus {
+  margin-bottom: -900px !important;
+}
+
+.m-b-910-minus {
+  margin-bottom: -910px !important;
+}
+
+.m-b-920-minus {
+  margin-bottom: -920px !important;
+}
+
+.m-b-930-minus {
+  margin-bottom: -930px !important;
+}
+
+.m-b-940-minus {
+  margin-bottom: -940px !important;
+}
+
+.m-b-950-minus {
+  margin-bottom: -950px !important;
+}
+
+.m-b-960-minus {
+  margin-bottom: -960px !important;
+}
+
+.m-b-970-minus {
+  margin-bottom: -970px !important;
+}
+
+.m-b-980-minus {
+  margin-bottom: -980px !important;
+}
+
+.m-b-990-minus {
+  margin-bottom: -990px !important;
+}
+
+.m-b-1000-minus {
+  margin-bottom: -1000px !important;
+}
+
+.m-l-0-minus {
+  margin-left: 0px !important;
+}
+
+.m-l-10-minus {
+  margin-left: -10px !important;
+}
+
+.m-l-20-minus {
+  margin-left: -20px !important;
+}
+
+.m-l-30-minus {
+  margin-left: -30px !important;
+}
+
+.m-l-40-minus {
+  margin-left: -40px !important;
+}
+
+.m-l-50-minus {
+  margin-left: -50px !important;
+}
+
+.m-l-60-minus {
+  margin-left: -60px !important;
+}
+
+.m-l-70-minus {
+  margin-left: -70px !important;
+}
+
+.m-l-80-minus {
+  margin-left: -80px !important;
+}
+
+.m-l-90-minus {
+  margin-left: -90px !important;
+}
+
+.m-l-100-minus {
+  margin-left: -100px !important;
+}
+
+.m-l-110-minus {
+  margin-left: -110px !important;
+}
+
+.m-l-120-minus {
+  margin-left: -120px !important;
+}
+
+.m-l-130-minus {
+  margin-left: -130px !important;
+}
+
+.m-l-140-minus {
+  margin-left: -140px !important;
+}
+
+.m-l-150-minus {
+  margin-left: -150px !important;
+}
+
+.m-l-160-minus {
+  margin-left: -160px !important;
+}
+
+.m-l-170-minus {
+  margin-left: -170px !important;
+}
+
+.m-l-180-minus {
+  margin-left: -180px !important;
+}
+
+.m-l-190-minus {
+  margin-left: -190px !important;
+}
+
+.m-l-200-minus {
+  margin-left: -200px !important;
+}
+
+.m-l-210-minus {
+  margin-left: -210px !important;
+}
+
+.m-l-220-minus {
+  margin-left: -220px !important;
+}
+
+.m-l-230-minus {
+  margin-left: -230px !important;
+}
+
+.m-l-240-minus {
+  margin-left: -240px !important;
+}
+
+.m-l-250-minus {
+  margin-left: -250px !important;
+}
+
+.m-l-260-minus {
+  margin-left: -260px !important;
+}
+
+.m-l-270-minus {
+  margin-left: -270px !important;
+}
+
+.m-l-280-minus {
+  margin-left: -280px !important;
+}
+
+.m-l-290-minus {
+  margin-left: -290px !important;
+}
+
+.m-l-300-minus {
+  margin-left: -300px !important;
+}
+
+.m-l-310-minus {
+  margin-left: -310px !important;
+}
+
+.m-l-320-minus {
+  margin-left: -320px !important;
+}
+
+.m-l-330-minus {
+  margin-left: -330px !important;
+}
+
+.m-l-340-minus {
+  margin-left: -340px !important;
+}
+
+.m-l-350-minus {
+  margin-left: -350px !important;
+}
+
+.m-l-360-minus {
+  margin-left: -360px !important;
+}
+
+.m-l-370-minus {
+  margin-left: -370px !important;
+}
+
+.m-l-380-minus {
+  margin-left: -380px !important;
+}
+
+.m-l-390-minus {
+  margin-left: -390px !important;
+}
+
+.m-l-400-minus {
+  margin-left: -400px !important;
+}
+
+.m-l-410-minus {
+  margin-left: -410px !important;
+}
+
+.m-l-420-minus {
+  margin-left: -420px !important;
+}
+
+.m-l-430-minus {
+  margin-left: -430px !important;
+}
+
+.m-l-440-minus {
+  margin-left: -440px !important;
+}
+
+.m-l-450-minus {
+  margin-left: -450px !important;
+}
+
+.m-l-460-minus {
+  margin-left: -460px !important;
+}
+
+.m-l-470-minus {
+  margin-left: -470px !important;
+}
+
+.m-l-480-minus {
+  margin-left: -480px !important;
+}
+
+.m-l-490-minus {
+  margin-left: -490px !important;
+}
+
+.m-l-500-minus {
+  margin-left: -500px !important;
+}
+
+.m-l-510-minus {
+  margin-left: -510px !important;
+}
+
+.m-l-520-minus {
+  margin-left: -520px !important;
+}
+
+.m-l-530-minus {
+  margin-left: -530px !important;
+}
+
+.m-l-540-minus {
+  margin-left: -540px !important;
+}
+
+.m-l-550-minus {
+  margin-left: -550px !important;
+}
+
+.m-l-560-minus {
+  margin-left: -560px !important;
+}
+
+.m-l-570-minus {
+  margin-left: -570px !important;
+}
+
+.m-l-580-minus {
+  margin-left: -580px !important;
+}
+
+.m-l-590-minus {
+  margin-left: -590px !important;
+}
+
+.m-l-600-minus {
+  margin-left: -600px !important;
+}
+
+.m-l-610-minus {
+  margin-left: -610px !important;
+}
+
+.m-l-620-minus {
+  margin-left: -620px !important;
+}
+
+.m-l-630-minus {
+  margin-left: -630px !important;
+}
+
+.m-l-640-minus {
+  margin-left: -640px !important;
+}
+
+.m-l-650-minus {
+  margin-left: -650px !important;
+}
+
+.m-l-660-minus {
+  margin-left: -660px !important;
+}
+
+.m-l-670-minus {
+  margin-left: -670px !important;
+}
+
+.m-l-680-minus {
+  margin-left: -680px !important;
+}
+
+.m-l-690-minus {
+  margin-left: -690px !important;
+}
+
+.m-l-700-minus {
+  margin-left: -700px !important;
+}
+
+.m-l-710-minus {
+  margin-left: -710px !important;
+}
+
+.m-l-720-minus {
+  margin-left: -720px !important;
+}
+
+.m-l-730-minus {
+  margin-left: -730px !important;
+}
+
+.m-l-740-minus {
+  margin-left: -740px !important;
+}
+
+.m-l-750-minus {
+  margin-left: -750px !important;
+}
+
+.m-l-760-minus {
+  margin-left: -760px !important;
+}
+
+.m-l-770-minus {
+  margin-left: -770px !important;
+}
+
+.m-l-780-minus {
+  margin-left: -780px !important;
+}
+
+.m-l-790-minus {
+  margin-left: -790px !important;
+}
+
+.m-l-800-minus {
+  margin-left: -800px !important;
+}
+
+.m-l-810-minus {
+  margin-left: -810px !important;
+}
+
+.m-l-820-minus {
+  margin-left: -820px !important;
+}
+
+.m-l-830-minus {
+  margin-left: -830px !important;
+}
+
+.m-l-840-minus {
+  margin-left: -840px !important;
+}
+
+.m-l-850-minus {
+  margin-left: -850px !important;
+}
+
+.m-l-860-minus {
+  margin-left: -860px !important;
+}
+
+.m-l-870-minus {
+  margin-left: -870px !important;
+}
+
+.m-l-880-minus {
+  margin-left: -880px !important;
+}
+
+.m-l-890-minus {
+  margin-left: -890px !important;
+}
+
+.m-l-900-minus {
+  margin-left: -900px !important;
+}
+
+.m-l-910-minus {
+  margin-left: -910px !important;
+}
+
+.m-l-920-minus {
+  margin-left: -920px !important;
+}
+
+.m-l-930-minus {
+  margin-left: -930px !important;
+}
+
+.m-l-940-minus {
+  margin-left: -940px !important;
+}
+
+.m-l-950-minus {
+  margin-left: -950px !important;
+}
+
+.m-l-960-minus {
+  margin-left: -960px !important;
+}
+
+.m-l-970-minus {
+  margin-left: -970px !important;
+}
+
+.m-l-980-minus {
+  margin-left: -980px !important;
+}
+
+.m-l-990-minus {
+  margin-left: -990px !important;
+}
+
+.m-l-1000-minus {
+  margin-left: -1000px !important;
+}
+
+.p-t-b-0 {
+  padding-top: 0px !important;
+  padding-bottom: 0px !important;
+}
+
+.p-t-b-5 {
+  padding-top: 5px !important;
+  padding-bottom: 5px !important;
+}
+
+.p-t-b-10 {
+  padding-top: 10px !important;
+  padding-bottom: 10px !important;
+}
+
+.p-t-b-15 {
+  padding-top: 15px !important;
+  padding-bottom: 15px !important;
+}
+
+.p-t-b-20 {
+  padding-top: 20px !important;
+  padding-bottom: 20px !important;
+}
+
+.p-t-b-25 {
+  padding-top: 25px !important;
+  padding-bottom: 25px !important;
+}
+
+.p-t-b-30 {
+  padding-top: 30px !important;
+  padding-bottom: 30px !important;
+}
+
+.p-t-b-35 {
+  padding-top: 35px !important;
+  padding-bottom: 35px !important;
+}
+
+.p-t-b-40 {
+  padding-top: 40px !important;
+  padding-bottom: 40px !important;
+}
+
+.p-t-b-45 {
+  padding-top: 45px !important;
+  padding-bottom: 45px !important;
+}
+
+.p-t-b-50 {
+  padding-top: 50px !important;
+  padding-bottom: 50px !important;
+}
+
+.p-l-r-0 {
+  padding-left: 0px !important;
+  padding-right: 0px !important;
+}
+
+.p-l-r-5 {
+  padding-left: 5px !important;
+  padding-right: 5px !important;
+}
+
+.p-l-r-10 {
+  padding-left: 10px !important;
+  padding-right: 10px !important;
+}
+
+.p-l-r-15 {
+  padding-left: 15px !important;
+  padding-right: 15px !important;
+}
+
+.p-l-r-20 {
+  padding-left: 20px !important;
+  padding-right: 20px !important;
+}
+
+.p-l-r-25 {
+  padding-left: 25px !important;
+  padding-right: 25px !important;
+}
+
+.p-l-r-30 {
+  padding-left: 30px !important;
+  padding-right: 30px !important;
+}
+
+.p-l-r-35 {
+  padding-left: 35px !important;
+  padding-right: 35px !important;
+}
+
+.p-l-r-40 {
+  padding-left: 40px !important;
+  padding-right: 40px !important;
+}
+
+.p-l-r-45 {
+  padding-left: 45px !important;
+  padding-right: 45px !important;
+}
+
+.p-l-r-50 {
+  padding-left: 50px !important;
+  padding-right: 50px !important;
+}
+
+.p-0 {
+  padding: 0px !important;
+}
+
+.p-5 {
+  padding: 5px !important;
+}
+
+.p-10 {
+  padding: 10px !important;
+}
+
+.p-15 {
+  padding: 15px !important;
+}
+
+.p-20 {
+  padding: 20px !important;
+}
+
+.p-25 {
+  padding: 25px !important;
+}
+
+.p-30 {
+  padding: 30px !important;
+}
+
+.p-35 {
+  padding: 35px !important;
+}
+
+.p-40 {
+  padding: 40px !important;
+}
+
+.p-45 {
+  padding: 45px !important;
+}
+
+.p-50 {
+  padding: 50px !important;
+}
+
+.p-t-0 {
+  padding-top: 0px !important;
+}
+
+.p-t-5 {
+  padding-top: 5px !important;
+}
+
+.p-t-10 {
+  padding-top: 10px !important;
+}
+
+.p-t-15 {
+  padding-top: 15px !important;
+}
+
+.p-t-20 {
+  padding-top: 20px !important;
+}
+
+.p-t-25 {
+  padding-top: 25px !important;
+}
+
+.p-t-30 {
+  padding-top: 30px !important;
+}
+
+.p-t-35 {
+  padding-top: 35px !important;
+}
+
+.p-t-40 {
+  padding-top: 40px !important;
+}
+
+.p-t-45 {
+  padding-top: 45px !important;
+}
+
+.p-t-50 {
+  padding-top: 50px !important;
+}
+
+.p-t-55 {
+  padding-top: 55px !important;
+}
+
+.p-t-60 {
+  padding-top: 60px !important;
+}
+
+.p-t-65 {
+  padding-top: 65px !important;
+}
+
+.p-t-70 {
+  padding-top: 70px !important;
+}
+
+.p-t-75 {
+  padding-top: 75px !important;
+}
+
+.p-t-80 {
+  padding-top: 80px !important;
+}
+
+.p-t-85 {
+  padding-top: 85px !important;
+}
+
+.p-t-90 {
+  padding-top: 90px !important;
+}
+
+.p-t-95 {
+  padding-top: 95px !important;
+}
+
+.p-t-100 {
+  padding-top: 100px !important;
+}
+
+.p-t-105 {
+  padding-top: 105px !important;
+}
+
+.p-t-110 {
+  padding-top: 110px !important;
+}
+
+.p-t-115 {
+  padding-top: 115px !important;
+}
+
+.p-t-120 {
+  padding-top: 120px !important;
+}
+
+.p-t-125 {
+  padding-top: 125px !important;
+}
+
+.p-t-130 {
+  padding-top: 130px !important;
+}
+
+.p-t-135 {
+  padding-top: 135px !important;
+}
+
+.p-t-140 {
+  padding-top: 140px !important;
+}
+
+.p-t-145 {
+  padding-top: 145px !important;
+}
+
+.p-t-150 {
+  padding-top: 150px !important;
+}
+
+.p-r-0 {
+  padding-right: 0px !important;
+}
+
+.p-r-5 {
+  padding-right: 5px !important;
+}
+
+.p-r-10 {
+  padding-right: 10px !important;
+}
+
+.p-r-15 {
+  padding-right: 15px !important;
+}
+
+.p-r-20 {
+  padding-right: 20px !important;
+}
+
+.p-r-25 {
+  padding-right: 25px !important;
+}
+
+.p-r-30 {
+  padding-right: 30px !important;
+}
+
+.p-r-35 {
+  padding-right: 35px !important;
+}
+
+.p-r-40 {
+  padding-right: 40px !important;
+}
+
+.p-r-45 {
+  padding-right: 45px !important;
+}
+
+.p-r-50 {
+  padding-right: 50px !important;
+}
+
+.p-r-55 {
+  padding-right: 55px !important;
+}
+
+.p-r-60 {
+  padding-right: 60px !important;
+}
+
+.p-r-65 {
+  padding-right: 65px !important;
+}
+
+.p-r-70 {
+  padding-right: 70px !important;
+}
+
+.p-r-75 {
+  padding-right: 75px !important;
+}
+
+.p-r-80 {
+  padding-right: 80px !important;
+}
+
+.p-r-85 {
+  padding-right: 85px !important;
+}
+
+.p-r-90 {
+  padding-right: 90px !important;
+}
+
+.p-r-95 {
+  padding-right: 95px !important;
+}
+
+.p-r-100 {
+  padding-right: 100px !important;
+}
+
+.p-r-105 {
+  padding-right: 105px !important;
+}
+
+.p-r-110 {
+  padding-right: 110px !important;
+}
+
+.p-r-115 {
+  padding-right: 115px !important;
+}
+
+.p-r-120 {
+  padding-right: 120px !important;
+}
+
+.p-r-125 {
+  padding-right: 125px !important;
+}
+
+.p-r-130 {
+  padding-right: 130px !important;
+}
+
+.p-r-135 {
+  padding-right: 135px !important;
+}
+
+.p-r-140 {
+  padding-right: 140px !important;
+}
+
+.p-r-145 {
+  padding-right: 145px !important;
+}
+
+.p-r-150 {
+  padding-right: 150px !important;
+}
+
+.p-b-0 {
+  padding-bottom: 0px !important;
+}
+
+.p-b-5 {
+  padding-bottom: 5px !important;
+}
+
+.p-b-10 {
+  padding-bottom: 10px !important;
+}
+
+.p-b-15 {
+  padding-bottom: 15px !important;
+}
+
+.p-b-20 {
+  padding-bottom: 20px !important;
+}
+
+.p-b-25 {
+  padding-bottom: 25px !important;
+}
+
+.p-b-30 {
+  padding-bottom: 30px !important;
+}
+
+.p-b-35 {
+  padding-bottom: 35px !important;
+}
+
+.p-b-40 {
+  padding-bottom: 40px !important;
+}
+
+.p-b-45 {
+  padding-bottom: 45px !important;
+}
+
+.p-b-50 {
+  padding-bottom: 50px !important;
+}
+
+.p-b-55 {
+  padding-bottom: 55px !important;
+}
+
+.p-b-60 {
+  padding-bottom: 60px !important;
+}
+
+.p-b-65 {
+  padding-bottom: 65px !important;
+}
+
+.p-b-70 {
+  padding-bottom: 70px !important;
+}
+
+.p-b-75 {
+  padding-bottom: 75px !important;
+}
+
+.p-b-80 {
+  padding-bottom: 80px !important;
+}
+
+.p-b-85 {
+  padding-bottom: 85px !important;
+}
+
+.p-b-90 {
+  padding-bottom: 90px !important;
+}
+
+.p-b-95 {
+  padding-bottom: 95px !important;
+}
+
+.p-b-100 {
+  padding-bottom: 100px !important;
+}
+
+.p-b-105 {
+  padding-bottom: 105px !important;
+}
+
+.p-b-110 {
+  padding-bottom: 110px !important;
+}
+
+.p-b-115 {
+  padding-bottom: 115px !important;
+}
+
+.p-b-120 {
+  padding-bottom: 120px !important;
+}
+
+.p-b-125 {
+  padding-bottom: 125px !important;
+}
+
+.p-b-130 {
+  padding-bottom: 130px !important;
+}
+
+.p-b-135 {
+  padding-bottom: 135px !important;
+}
+
+.p-b-140 {
+  padding-bottom: 140px !important;
+}
+
+.p-b-145 {
+  padding-bottom: 145px !important;
+}
+
+.p-b-150 {
+  padding-bottom: 150px !important;
+}
+
+.p-l-0 {
+  padding-left: 0px !important;
+}
+
+.p-l-5 {
+  padding-left: 5px !important;
+}
+
+.p-l-10 {
+  padding-left: 10px !important;
+}
+
+.p-l-15 {
+  padding-left: 15px !important;
+}
+
+.p-l-20 {
+  padding-left: 20px !important;
+}
+
+.p-l-25 {
+  padding-left: 25px !important;
+}
+
+.p-l-30 {
+  padding-left: 30px !important;
+}
+
+.p-l-35 {
+  padding-left: 35px !important;
+}
+
+.p-l-40 {
+  padding-left: 40px !important;
+}
+
+.p-l-45 {
+  padding-left: 45px !important;
+}
+
+.p-l-50 {
+  padding-left: 50px !important;
+}
+
+.p-l-55 {
+  padding-left: 55px !important;
+}
+
+.p-l-60 {
+  padding-left: 60px !important;
+}
+
+.p-l-65 {
+  padding-left: 65px !important;
+}
+
+.p-l-70 {
+  padding-left: 70px !important;
+}
+
+.p-l-75 {
+  padding-left: 75px !important;
+}
+
+.p-l-80 {
+  padding-left: 80px !important;
+}
+
+.p-l-85 {
+  padding-left: 85px !important;
+}
+
+.p-l-90 {
+  padding-left: 90px !important;
+}
+
+.p-l-95 {
+  padding-left: 95px !important;
+}
+
+.p-l-100 {
+  padding-left: 100px !important;
+}
+
+.p-l-105 {
+  padding-left: 105px !important;
+}
+
+.p-l-110 {
+  padding-left: 110px !important;
+}
+
+.p-l-115 {
+  padding-left: 115px !important;
+}
+
+.p-l-120 {
+  padding-left: 120px !important;
+}
+
+.p-l-125 {
+  padding-left: 125px !important;
+}
+
+.p-l-130 {
+  padding-left: 130px !important;
+}
+
+.p-l-135 {
+  padding-left: 135px !important;
+}
+
+.p-l-140 {
+  padding-left: 140px !important;
+}
+
+.p-l-145 {
+  padding-left: 145px !important;
+}
+
+.p-l-150 {
+  padding-left: 150px !important;
+}
+
+.opacity-0 {
+  opacity: 0 !important;
+}
+
+.opacity-1 {
+  opacity: 0.1 !important;
+}
+
+.opacity-2 {
+  opacity: 0.2 !important;
+}
+
+.opacity-3 {
+  opacity: 0.3 !important;
+}
+
+.opacity-4 {
+  opacity: 0.4 !important;
+}
+
+.opacity-5 {
+  opacity: 0.5 !important;
+}
+
+.opacity-6 {
+  opacity: 0.6 !important;
+}
+
+.opacity-7 {
+  opacity: 0.7 !important;
+}
+
+.opacity-8 {
+  opacity: 0.8 !important;
+}
+
+.opacity-9 {
+  opacity: 0.9 !important;
+}
+
+.font-size-10 {
+  font-size: 10px !important;
+}
+
+.font-size-11 {
+  font-size: 11px !important;
+}
+
+.font-size-12 {
+  font-size: 12px !important;
+}
+
+.font-size-13 {
+  font-size: 13px !important;
+}
+
+.font-size-14 {
+  font-size: 14px !important;
+}
+
+.font-size-15 {
+  font-size: 15px !important;
+}
+
+.font-size-16 {
+  font-size: 16px !important;
+}
+
+.font-size-17 {
+  font-size: 17px !important;
+}
+
+.font-size-18 {
+  font-size: 18px !important;
+}
+
+.font-size-19 {
+  font-size: 19px !important;
+}
+
+.font-size-20 {
+  font-size: 20px !important;
+}
+
+.font-size-21 {
+  font-size: 21px !important;
+}
+
+.font-size-22 {
+  font-size: 22px !important;
+}
+
+.font-size-23 {
+  font-size: 23px !important;
+}
+
+.font-size-24 {
+  font-size: 24px !important;
+}
+
+.font-size-25 {
+  font-size: 25px !important;
+}
+
+.font-size-26 {
+  font-size: 26px !important;
+}
+
+.font-size-27 {
+  font-size: 27px !important;
+}
+
+.font-size-28 {
+  font-size: 28px !important;
+}
+
+.font-size-29 {
+  font-size: 29px !important;
+}
+
+.font-size-30 {
+  font-size: 30px !important;
+}
+
+.font-size-31 {
+  font-size: 31px !important;
+}
+
+.font-size-32 {
+  font-size: 32px !important;
+}
+
+.font-size-33 {
+  font-size: 33px !important;
+}
+
+.font-size-34 {
+  font-size: 34px !important;
+}
+
+.font-size-35 {
+  font-size: 35px !important;
+}
+
+.font-size-36 {
+  font-size: 36px !important;
+}
+
+.font-size-37 {
+  font-size: 37px !important;
+}
+
+.font-size-38 {
+  font-size: 38px !important;
+}
+
+.font-size-39 {
+  font-size: 39px !important;
+}
+
+.font-size-40 {
+  font-size: 40px !important;
+}
+
+.font-size-41 {
+  font-size: 41px !important;
+}
+
+.font-size-42 {
+  font-size: 42px !important;
+}
+
+.font-size-43 {
+  font-size: 43px !important;
+}
+
+.font-size-44 {
+  font-size: 44px !important;
+}
+
+.font-size-45 {
+  font-size: 45px !important;
+}
+
+.font-size-46 {
+  font-size: 46px !important;
+}
+
+.font-size-47 {
+  font-size: 47px !important;
+}
+
+.font-size-48 {
+  font-size: 48px !important;
+}
+
+.font-size-49 {
+  font-size: 49px !important;
+}
+
+.font-size-50 {
+  font-size: 50px !important;
+}
+
+.line-height-0 {
+  line-height: 0px !important;
+}
+
+.line-height-1 {
+  line-height: 1px !important;
+}
+
+.line-height-2 {
+  line-height: 2px !important;
+}
+
+.line-height-3 {
+  line-height: 3px !important;
+}
+
+.line-height-4 {
+  line-height: 4px !important;
+}
+
+.line-height-5 {
+  line-height: 5px !important;
+}
+
+.line-height-6 {
+  line-height: 6px !important;
+}
+
+.line-height-7 {
+  line-height: 7px !important;
+}
+
+.line-height-8 {
+  line-height: 8px !important;
+}
+
+.line-height-9 {
+  line-height: 9px !important;
+}
+
+.line-height-10 {
+  line-height: 10px !important;
+}
+
+.line-height-11 {
+  line-height: 11px !important;
+}
+
+.line-height-12 {
+  line-height: 12px !important;
+}
+
+.line-height-13 {
+  line-height: 13px !important;
+}
+
+.line-height-14 {
+  line-height: 14px !important;
+}
+
+.line-height-15 {
+  line-height: 15px !important;
+}
+
+.line-height-16 {
+  line-height: 16px !important;
+}
+
+.line-height-17 {
+  line-height: 17px !important;
+}
+
+.line-height-18 {
+  line-height: 18px !important;
+}
+
+.line-height-19 {
+  line-height: 19px !important;
+}
+
+.line-height-20 {
+  line-height: 20px !important;
+}
+
+.line-height-21 {
+  line-height: 21px !important;
+}
+
+.line-height-22 {
+  line-height: 22px !important;
+}
+
+.line-height-23 {
+  line-height: 23px !important;
+}
+
+.line-height-24 {
+  line-height: 24px !important;
+}
+
+.line-height-25 {
+  line-height: 25px !important;
+}
+
+.line-height-26 {
+  line-height: 26px !important;
+}
+
+.line-height-27 {
+  line-height: 27px !important;
+}
+
+.line-height-28 {
+  line-height: 28px !important;
+}
+
+.line-height-29 {
+  line-height: 29px !important;
+}
+
+.line-height-30 {
+  line-height: 30px !important;
+}
+
+.line-height-31 {
+  line-height: 31px !important;
+}
+
+.line-height-32 {
+  line-height: 32px !important;
+}
+
+.line-height-33 {
+  line-height: 33px !important;
+}
+
+.line-height-34 {
+  line-height: 34px !important;
+}
+
+.line-height-35 {
+  line-height: 35px !important;
+}
+
+.line-height-36 {
+  line-height: 36px !important;
+}
+
+.line-height-37 {
+  line-height: 37px !important;
+}
+
+.line-height-38 {
+  line-height: 38px !important;
+}
+
+.line-height-39 {
+  line-height: 39px !important;
+}
+
+.line-height-40 {
+  line-height: 40px !important;
+}
+
+.line-height-41 {
+  line-height: 41px !important;
+}
+
+.line-height-42 {
+  line-height: 42px !important;
+}
+
+.line-height-43 {
+  line-height: 43px !important;
+}
+
+.line-height-44 {
+  line-height: 44px !important;
+}
+
+.line-height-45 {
+  line-height: 45px !important;
+}
+
+.line-height-46 {
+  line-height: 46px !important;
+}
+
+.line-height-47 {
+  line-height: 47px !important;
+}
+
+.line-height-48 {
+  line-height: 48px !important;
+}
+
+.line-height-49 {
+  line-height: 49px !important;
+}
+
+.line-height-50 {
+  line-height: 50px !important;
+}
+
+.width-10 {
+  width: 10px !important;
+}
+
+.width-11 {
+  width: 11px !important;
+}
+
+.width-12 {
+  width: 12px !important;
+}
+
+.width-13 {
+  width: 13px !important;
+}
+
+.width-14 {
+  width: 14px !important;
+}
+
+.width-15 {
+  width: 15px !important;
+}
+
+.width-16 {
+  width: 16px !important;
+}
+
+.width-17 {
+  width: 17px !important;
+}
+
+.width-18 {
+  width: 18px !important;
+}
+
+.width-19 {
+  width: 19px !important;
+}
+
+.width-20 {
+  width: 20px !important;
+}
+
+.width-21 {
+  width: 21px !important;
+}
+
+.width-22 {
+  width: 22px !important;
+}
+
+.width-23 {
+  width: 23px !important;
+}
+
+.width-24 {
+  width: 24px !important;
+}
+
+.width-25 {
+  width: 25px !important;
+}
+
+.width-26 {
+  width: 26px !important;
+}
+
+.width-27 {
+  width: 27px !important;
+}
+
+.width-28 {
+  width: 28px !important;
+}
+
+.width-29 {
+  width: 29px !important;
+}
+
+.width-30 {
+  width: 30px !important;
+}
+
+.width-31 {
+  width: 31px !important;
+}
+
+.width-32 {
+  width: 32px !important;
+}
+
+.width-33 {
+  width: 33px !important;
+}
+
+.width-34 {
+  width: 34px !important;
+}
+
+.width-35 {
+  width: 35px !important;
+}
+
+.width-36 {
+  width: 36px !important;
+}
+
+.width-37 {
+  width: 37px !important;
+}
+
+.width-38 {
+  width: 38px !important;
+}
+
+.width-39 {
+  width: 39px !important;
+}
+
+.width-40 {
+  width: 40px !important;
+}
+
+.width-41 {
+  width: 41px !important;
+}
+
+.width-42 {
+  width: 42px !important;
+}
+
+.width-43 {
+  width: 43px !important;
+}
+
+.width-44 {
+  width: 44px !important;
+}
+
+.width-45 {
+  width: 45px !important;
+}
+
+.width-46 {
+  width: 46px !important;
+}
+
+.width-47 {
+  width: 47px !important;
+}
+
+.width-48 {
+  width: 48px !important;
+}
+
+.width-49 {
+  width: 49px !important;
+}
+
+.width-50 {
+  width: 50px !important;
+}
+
+.height-10 {
+  height: 10px !important;
+}
+
+.height-11 {
+  height: 11px !important;
+}
+
+.height-12 {
+  height: 12px !important;
+}
+
+.height-13 {
+  height: 13px !important;
+}
+
+.height-14 {
+  height: 14px !important;
+}
+
+.height-15 {
+  height: 15px !important;
+}
+
+.height-16 {
+  height: 16px !important;
+}
+
+.height-17 {
+  height: 17px !important;
+}
+
+.height-18 {
+  height: 18px !important;
+}
+
+.height-19 {
+  height: 19px !important;
+}
+
+.height-20 {
+  height: 20px !important;
+}
+
+.height-21 {
+  height: 21px !important;
+}
+
+.height-22 {
+  height: 22px !important;
+}
+
+.height-23 {
+  height: 23px !important;
+}
+
+.height-24 {
+  height: 24px !important;
+}
+
+.height-25 {
+  height: 25px !important;
+}
+
+.height-26 {
+  height: 26px !important;
+}
+
+.height-27 {
+  height: 27px !important;
+}
+
+.height-28 {
+  height: 28px !important;
+}
+
+.height-29 {
+  height: 29px !important;
+}
+
+.height-30 {
+  height: 30px !important;
+}
+
+.height-31 {
+  height: 31px !important;
+}
+
+.height-32 {
+  height: 32px !important;
+}
+
+.height-33 {
+  height: 33px !important;
+}
+
+.height-34 {
+  height: 34px !important;
+}
+
+.height-35 {
+  height: 35px !important;
+}
+
+.height-36 {
+  height: 36px !important;
+}
+
+.height-37 {
+  height: 37px !important;
+}
+
+.height-38 {
+  height: 38px !important;
+}
+
+.height-39 {
+  height: 39px !important;
+}
+
+.height-40 {
+  height: 40px !important;
+}
+
+.height-41 {
+  height: 41px !important;
+}
+
+.height-42 {
+  height: 42px !important;
+}
+
+.height-43 {
+  height: 43px !important;
+}
+
+.height-44 {
+  height: 44px !important;
+}
+
+.height-45 {
+  height: 45px !important;
+}
+
+.height-46 {
+  height: 46px !important;
+}
+
+.height-47 {
+  height: 47px !important;
+}
+
+.height-48 {
+  height: 48px !important;
+}
+
+.height-49 {
+  height: 49px !important;
+}
+
+.height-50 {
+  height: 50px !important;
+}
+
+.h-100-vh {
+  height: 100vh;
+}
+
+body {
+  font-family: "Inter", sans-serif;
+  position: relative;
+  background-color: #f8fafb;
+  font-size: 15px;
+  color: #505050;
+}
+
+body.no-scroll {
+  overflow: hidden;
+}
+
+* {
+  min-width: 0;
+  min-height: 0;
+}
+
+.preloader {
+  position: fixed;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  z-index: 1001;
+  background: white;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  /* Safari */
+}
+
+.preloader .preloader-icon {
+  border: 5px solid #eeeeee;
+  border-radius: 50%;
+  border-top: 5px solid #3498db;
+  width: 50px;
+  height: 50px;
+  -webkit-animation: spin 0.5s linear infinite;
+          animation: spin 0.5s linear infinite;
+}
+
+@-webkit-keyframes spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+  }
+
+  100% {
+    -webkit-transform: rotate(360deg);
+  }
+}
+
+@keyframes spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+            transform: rotate(0deg);
+  }
+
+  100% {
+    -webkit-transform: rotate(360deg);
+            transform: rotate(360deg);
+  }
+}
+
+.preloader svg path {
+  fill: #0081ff;
+}
+
+.icon-block {
+  width: 40px;
+  height: 40px;
+  line-height: 40px;
+  display: -webkit-inline-box;
+  display: inline-flex;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  background: #e1e1e1;
+  border-radius: 3px;
+  text-align: center;
+  color: black;
+  font-size: 18px;
+}
+
+.icon-block.icon-block-outline-white {
+  border: 2px solid white;
+  background: none;
+  color: white !important;
+}
+
+.icon-block.icon-block-outline-primary {
+  border: 2px solid #0081ff;
+  color: #0081ff !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-success {
+  border: 2px solid #28c76f;
+  color: #28c76f !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-danger {
+  border: 2px solid #ea5455;
+  color: #ea5455 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-info {
+  border: 2px solid #33b5e5;
+  color: #33b5e5 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-warning {
+  border: 2px solid #ff9f43;
+  color: #ff9f43 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-dark {
+  border: 2px solid #293134;
+  color: #293134 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-secondary {
+  border: 2px solid #aa66cc;
+  color: #aa66cc !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-facebook {
+  border: 2px solid #3b5998;
+  color: #3b5998 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-twitter {
+  border: 2px solid #55acee;
+  color: #55acee !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-linkedin {
+  border: 2px solid #0077b5;
+  color: #0077b5 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-whatsapp {
+  border: 2px solid #43d854;
+  color: #43d854 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-instagram {
+  border: 2px solid #3f729b;
+  color: #3f729b !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-dribbble {
+  border: 2px solid #ea4c89;
+  color: #ea4c89 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-google {
+  border: 2px solid #db4437;
+  color: #db4437 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-youtube {
+  border: 2px solid #cd201f;
+  color: #cd201f !important;
+  background: none;
+}
+
+.icon-block.icon-block-xl {
+  width: 70px;
+  height: 70px;
+  line-height: 70px;
+  font-size: 28px;
+}
+
+.icon-block.icon-block-lg {
+  width: 50px;
+  height: 50px;
+  line-height: 50px;
+  font-size: 22px;
+}
+
+.icon-block.icon-block-sm {
+  width: 30px;
+  height: 30px;
+  line-height: 30px;
+  font-size: 14px;
+}
+
+.icon-block.icon-block-xs {
+  width: 20px;
+  height: 20px;
+  line-height: 20px;
+  font-size: 12px;
+}
+
+.icon-block.icon-block-floating {
+  border-radius: 50%;
+}
+
+body.error-page img {
+  width: 50%;
+  display: table;
+  margin: 50px auto;
+}
+
+body.error-page .display-1 {
+  font-size: 10em;
+}
+
+.error-page {
+  text-align: center;
+  height: calc(100vh - 120px);
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.error-page .error-page-item {
+  font-size: 14rem;
+  line-height: 14rem;
+  margin-left: -2rem;
+  text-shadow: -5px 1px 0px white;
+}
+
+.error-page .error-page-item:nth-child(2) {
+  -webkit-transform: translate(0, 10px);
+          transform: translate(0, 10px);
+  display: inline-block;
+}
+
+.form-control,
+.swal-modal input.swal-content__input,
+.custom-select {
+  font-size: 0.875rem;
+  border-color: #e1e1e1;
+  border-radius: 0.5rem;
+}
+
+.form-control:focus,
+.swal-modal input.swal-content__input:focus,
+.custom-select:focus {
+  box-shadow: none;
+  border-color: rgba(0, 129, 255, 0.8);
+}
+
+.form-control:not(.form-control-lg):not(.form-control-sm),
+.swal-modal input.swal-content__input:not(.form-control-lg):not(.form-control-sm) {
+  height: calc(1.5em + .75rem + 3px);
+}
+
+.form-rounded {
+  border-radius: 50px;
+}
+
+.form-control-lg {
+  font-size: 1.1rem;
+}
+
+.form-control-sm {
+  font-size: 0.8rem;
+}
+
+.input-group-text {
+  border: none;
+}
+
+textarea {
+  min-height: 100px;
+  max-height: 500px;
+}
+
+.custom-file-input:focus ~ .custom-file-label {
+  border-color: #339aff;
+  box-shadow: none;
+}
+
+.custom-control-input {
+  right: 0;
+}
+
+.custom-control-label {
+  line-height: 25px;
+}
+
+/* Checkboxes and Radios */
+
+.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #0081ff;
+  background-color: #0081ff;
+}
+
+.custom-checkbox .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.3);
+}
+
+.custom-checkbox .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #5caeff;
+  background-color: #5caeff;
+}
+
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #aa66cc;
+  background-color: #aa66cc;
+}
+
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #d0abe3;
+  background-color: #d0abe3;
+}
+
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #28c76f;
+  background-color: #28c76f;
+}
+
+.custom-checkbox.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #6ae19f;
+  background-color: #6ae19f;
+}
+
+.custom-checkbox.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #ea5455;
+  background-color: #ea5455;
+}
+
+.custom-checkbox.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #f4a6a6;
+  background-color: #f4a6a6;
+}
+
+.custom-checkbox.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #ff9f43;
+  background-color: #ff9f43;
+}
+
+.custom-checkbox.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #ffce9f;
+  background-color: #ffce9f;
+}
+
+.custom-checkbox.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #33b5e5;
+  background-color: #33b5e5;
+}
+
+.custom-checkbox.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #84d3ef;
+  background-color: #84d3ef;
+}
+
+.custom-checkbox.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #293134;
+  background-color: #293134;
+}
+
+.custom-checkbox.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #516167;
+  background-color: #516167;
+}
+
+.custom-checkbox.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.3);
+}
+
+.custom-checkbox.custom-range-danger::before {
+  background-color: #ea5455;
+}
+
+.custom-checkbox.custom-range-danger::-webkit-slider-thumb:active {
+  background-color: #f4a6a6;
+}
+
+.custom-range::-webkit-slider-thumb {
+  background-color: #0081ff;
+}
+
+.custom-range::-webkit-slider-thumb:active {
+  background-color: #5caeff;
+}
+
+.custom-range.custom-range-danger::-webkit-slider-thumb {
+  background-color: #ea5455;
+}
+
+.custom-range.custom-range-danger::-webkit-slider-thumb:active {
+  background-color: #f4a6a6;
+}
+
+.custom-range.custom-range-warning::-webkit-slider-thumb {
+  background-color: #ff9f43;
+}
+
+.custom-range.custom-range-warning::-webkit-slider-thumb:active {
+  background-color: #ffce9f;
+}
+
+.custom-range.custom-range-success::-webkit-slider-thumb {
+  background-color: #28c76f;
+}
+
+.custom-range.custom-range-success::-webkit-slider-thumb:active {
+  background-color: #6ae19f;
+}
+
+.custom-range.custom-range-secondary::-webkit-slider-thumb {
+  background-color: #aa66cc;
+}
+
+.custom-range.custom-range-secondary::-webkit-slider-thumb:active {
+  background-color: #d0abe3;
+}
+
+.custom-range.custom-range-info::-webkit-slider-thumb {
+  background-color: #33b5e5;
+}
+
+.custom-range.custom-range-info::-webkit-slider-thumb:active {
+  background-color: #84d3ef;
+}
+
+.custom-range.custom-range-light::-webkit-slider-thumb {
+  background-color: #afb8bd;
+}
+
+.custom-range.custom-range-light::-webkit-slider-thumb:active {
+  background-color: #e1e5e6;
+}
+
+.custom-range.custom-range-dark::-webkit-slider-thumb {
+  background-color: #293134;
+}
+
+.custom-range.custom-range-dark::-webkit-slider-thumb:active {
+  background-color: #516167;
+}
+
+.wizard > .content {
+  min-height: auto;
+  margin: 0;
+  margin-bottom: 15px;
+  background: none;
+  padding: 0 !important;
+}
+
+.wizard .wizard-index {
+  background-color: rgba(0, 0, 0, 0.4);
+  height: 30px;
+  width: 30px;
+  border-radius: 50%;
+  display: -webkit-inline-box;
+  display: inline-flex;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  color: #fff;
+  margin-right: 0.5rem;
+}
+
+.wizard .current .wizard-index {
+  background-color: rgba(255, 255, 255, 0.2);
+}
+
+.wizard > .actions > ul > li {
+  margin: 0;
+  margin-left: 10px;
+}
+
+.wizard > .content > .body {
+  float: none;
+  position: static;
+  width: auto;
+  height: auto;
+}
+
+.wizard > .steps {
+  margin-bottom: 1.5rem;
+}
+
+.wizard > .steps a,
+.wizard > .steps .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps button.btn,
+.wizard > .steps a:hover,
+.wizard > .steps a:active {
+  margin: 0;
+  margin-right: 10px;
+}
+
+.wizard > .steps .current a,
+.wizard > .steps .current .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps .current button.btn,
+.wizard > .steps .current a:hover,
+.wizard > .steps .current a:active {
+  background: #0081ff;
+}
+
+.wizard > .steps .error a,
+.wizard > .steps .error .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps .error button.btn,
+.wizard > .steps .error a:hover,
+.wizard > .steps .error a:active {
+  background: #ea5455;
+}
+
+.wizard > .steps .done a,
+.wizard > .steps .done .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps .done button.btn,
+.wizard > .steps .done a:hover,
+.wizard > .steps .done a:active {
+  background-color: #28c76f;
+  color: white;
+}
+
+.wizard > .actions a,
+.wizard > .actions .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .actions button.btn,
+.wizard > .actions a:hover,
+.wizard > .actions a:active {
+  background-color: #28c76f;
+  color: white;
+}
+
+.page-header {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: start;
+          align-items: flex-start;
+  height: 55px;
+}
+
+.page-header h1,
+.page-header h2,
+.page-header h3,
+.page-header h4,
+.page-header h5 {
+  margin: 0;
+}
+
+.page-header .breadcrumb {
+  background: none;
+  padding: 0;
+  margin: 0;
+}
+
+.page-header .breadcrumb a:hover,
+.page-header .breadcrumb .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .page-header .breadcrumb button.btn:hover {
+  text-decoration: underline;
+}
+
+.page-header .breadcrumb li.breadcrumb-item {
+  font-size: 14px !important;
+}
+
+.page-header .breadcrumb li.breadcrumb-item:first-child:before {
+  font-size: 12px;
+  font-family: themify;
+  content: "\E69B";
+  display: inline-block;
+  margin-right: 8px;
+}
+
+.page-header .breadcrumb li.breadcrumb-item + .breadcrumb-item::before {
+  font-size: 10px;
+}
+
+.page-header .breadcrumb li.breadcrumb-item.active {
+  color: #0081ff;
+  font-weight: 600;
+}
+
+.mfp-with-zoom .mfp-container,
+.mfp-with-zoom.mfp-bg {
+  opacity: 0;
+  -webkit-backface-visibility: hidden;
+  /* ideally, transition speed should match zoom duration */
+  -webkit-transition: all 0.3s ease-out;
+  transition: all 0.3s ease-out;
+}
+
+.mfp-with-zoom.mfp-ready .mfp-container {
+  opacity: 1;
+}
+
+.mfp-with-zoom.mfp-ready.mfp-bg {
+  opacity: 0.8;
+}
+
+.mfp-with-zoom.mfp-removing .mfp-container,
+.mfp-with-zoom.mfp-removing.mfp-bg {
+  opacity: 0;
+}
+
+.card,
+.app-block .app-content .app-action,
+.chat-block {
+  margin-bottom: 1.875rem;
+  position: relative;
+  background-color: white;
+  border-radius: 0.5rem;
+  border: none;
+  box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+}
+
+.card.bg-primary .card-header,
+.app-block .app-content .bg-primary.app-action .card-header,
+.bg-primary.chat-block .card-header,
+.card.bg-secondary .card-header,
+.app-block .app-content .bg-secondary.app-action .card-header,
+.bg-secondary.chat-block .card-header,
+.card.bg-success .card-header,
+.app-block .app-content .bg-success.app-action .card-header,
+.bg-success.chat-block .card-header,
+.card.bg-danger .card-header,
+.app-block .app-content .bg-danger.app-action .card-header,
+.bg-danger.chat-block .card-header,
+.card.bg-warning .card-header,
+.app-block .app-content .bg-warning.app-action .card-header,
+.bg-warning.chat-block .card-header,
+.card.bg-info .card-header,
+.app-block .app-content .bg-info.app-action .card-header,
+.bg-info.chat-block .card-header,
+.card.bg-dark .card-header,
+.app-block .app-content .bg-dark.app-action .card-header,
+.bg-dark.chat-block .card-header {
+  border-bottom: 1px solid rgba(235, 235, 235, 0.4);
+}
+
+.card .card-header,
+.app-block .app-content .app-action .card-header,
+.chat-block .card-header,
+.card .card-footer,
+.app-block .app-content .app-action .card-footer,
+.chat-block .card-footer {
+  border: none;
+  background: none;
+  font-size: 13px;
+  font-weight: 600;
+  padding: 10px 20px;
+}
+
+.card .card-header,
+.app-block .app-content .app-action .card-header,
+.chat-block .card-header {
+  margin-bottom: 0;
+  border-bottom: 1px solid #ebebeb;
+}
+
+.card .card-footer,
+.app-block .app-content .app-action .card-footer,
+.chat-block .card-footer {
+  border-top: 1px solid #ebebeb;
+}
+
+.card .card-body,
+.app-block .app-content .app-action .card-body,
+.chat-block .card-body {
+  padding: 1.5rem;
+}
+
+.card .card-body h1.card-title,
+.app-block .app-content .app-action .card-body h1.card-title,
+.chat-block .card-body h1.card-title,
+.card .card-body h2.card-title,
+.app-block .app-content .app-action .card-body h2.card-title,
+.chat-block .card-body h2.card-title,
+.card .card-body h3.card-title,
+.app-block .app-content .app-action .card-body h3.card-title,
+.chat-block .card-body h3.card-title,
+.card .card-body h4.card-title,
+.app-block .app-content .app-action .card-body h4.card-title,
+.chat-block .card-body h4.card-title,
+.card .card-body h5.card-title,
+.app-block .app-content .app-action .card-body h5.card-title,
+.chat-block .card-body h5.card-title,
+.card .card-body h6.card-title,
+.app-block .app-content .app-action .card-body h6.card-title,
+.chat-block .card-body h6.card-title {
+  margin-bottom: 2rem;
+  font-size: 1rem;
+  font-weight: 600;
+}
+
+.card .card-body h1.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h1.card-title .dropdown *,
+.chat-block .card-body h1.card-title .dropdown *,
+.card .card-body h2.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h2.card-title .dropdown *,
+.chat-block .card-body h2.card-title .dropdown *,
+.card .card-body h3.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h3.card-title .dropdown *,
+.chat-block .card-body h3.card-title .dropdown *,
+.card .card-body h4.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h4.card-title .dropdown *,
+.chat-block .card-body h4.card-title .dropdown *,
+.card .card-body h5.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h5.card-title .dropdown *,
+.chat-block .card-body h5.card-title .dropdown *,
+.card .card-body h6.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h6.card-title .dropdown *,
+.chat-block .card-body h6.card-title .dropdown * {
+  letter-spacing: normal;
+  text-transform: none;
+}
+
+.card .card-scroll,
+.app-block .app-content .app-action .card-scroll,
+.chat-block .card-scroll {
+  height: 300px;
+  overflow: auto;
+}
+
+.card.purple,
+.app-block .app-content .purple.app-action,
+.purple.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #8a8ded, #9c9dc6);
+}
+
+.card.blue,
+.app-block .app-content .blue.app-action,
+.blue.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #6bc5e7, #bcd7ff);
+}
+
+.card.green,
+.app-block .app-content .green.app-action,
+.green.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #77df75, #b5e7a0);
+}
+
+.card.orange,
+.app-block .app-content .orange.app-action,
+.orange.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #ffc033, #ffc49d);
+}
+
+.card > .table-responsive .table td,
+.app-block .app-content .app-action > .table-responsive .table td,
+.chat-block > .table-responsive .table td,
+.card > .table-responsive .table th,
+.app-block .app-content .app-action > .table-responsive .table th,
+.chat-block > .table-responsive .table th {
+  padding: 0.75rem 1.5rem;
+}
+
+.card-group,
+.card-columns {
+  margin-bottom: 30px;
+}
+
+.bg-primary {
+  background: #0081ff !important;
+  color: white !important;
+}
+
+.bg-primary-bright {
+  background: rgba(0, 129, 255, 0.3) !important;
+}
+
+.bg-primary-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-primary-bright.bg-hover:hover {
+  background: rgba(11, 91, 182, 0.3) !important;
+}
+
+.bg-primary-gradient {
+  background: linear-gradient(230deg, #0081ff, #4da7ff) !important;
+  color: white !important;
+}
+
+.bg-info {
+  background: #33b5e5 !important;
+  color: white !important;
+}
+
+.bg-info.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-info.bg-hover:hover {
+  background: #60c5eb !important;
+}
+
+.bg-info-bright {
+  background: rgba(51, 181, 229, 0.3) !important;
+}
+
+.bg-info-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-info-bright.bg-hover:hover {
+  background: rgba(29, 173, 226, 0.3) !important;
+}
+
+.bg-info-gradient {
+  background: linear-gradient(230deg, #33b5e5, #77ceee) !important;
+  color: white !important;
+}
+
+.bg-secondary {
+  background: #aa66cc !important;
+  color: white !important;
+}
+
+.bg-secondary.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-secondary.bg-hover:hover {
+  background: #bf8cd9 !important;
+}
+
+.bg-secondary-bright {
+  background: rgba(170, 102, 204, 0.3) !important;
+}
+
+.bg-secondary-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-secondary-bright.bg-hover:hover {
+  background: rgba(159, 83, 198, 0.3) !important;
+}
+
+.bg-secondary-gradient {
+  background: linear-gradient(230deg, #aa66cc, #ca9fdf) !important;
+  color: white !important;
+}
+
+.bg-success {
+  background: #28c76f !important;
+  color: white !important;
+}
+
+.bg-success.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-success.bg-hover:hover {
+  background: #48da89 !important;
+}
+
+.bg-success-bright {
+  background: rgba(40, 199, 111, 0.3) !important;
+}
+
+.bg-success-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-success-bright.bg-hover:hover {
+  background: rgba(36, 178, 99, 0.3) !important;
+}
+
+.bg-success-gradient {
+  background: linear-gradient(230deg, #28c76f, #5dde97) !important;
+  color: white !important;
+}
+
+.bg-danger {
+  background: #ea5455 !important;
+  color: white !important;
+}
+
+.bg-danger.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-danger.bg-hover:hover {
+  background: #f08182 !important;
+}
+
+.bg-danger-bright {
+  background: rgba(234, 84, 85, 0.3) !important;
+}
+
+.bg-danger-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-danger-bright.bg-hover:hover {
+  background: rgba(231, 61, 62, 0.3) !important;
+}
+
+.bg-danger-gradient {
+  background: linear-gradient(230deg, #ea5455, #f29899) !important;
+  color: white !important;
+}
+
+.bg-warning {
+  background: #ff9f43 !important;
+  color: white !important;
+}
+
+.bg-warning.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-warning.bg-hover:hover {
+  background: #ffb976 !important;
+}
+
+.bg-warning-bright {
+  background: rgba(255, 159, 67, 0.3) !important;
+}
+
+.bg-warning-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-warning-bright.bg-hover:hover {
+  background: rgba(255, 146, 42, 0.3) !important;
+}
+
+.bg-warning-gradient {
+  background: linear-gradient(230deg, #ff9f43, #ffc690) !important;
+  color: white !important;
+}
+
+.bg-light {
+  background: #afb8bd !important;
+}
+
+.bg-dark {
+  background: #293134 !important;
+  color: white !important;
+}
+
+.bg-dark.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-dark.bg-hover:hover {
+  background: #3f4c51 !important;
+}
+
+.bg-dark-bright {
+  background: #d4d5d8 !important;
+}
+
+.bg-dark-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-dark-bright.bg-hover:hover {
+  background: #c7c8cc !important;
+}
+
+.bg-dark-gradient {
+  background: linear-gradient(230deg, #293134, #4b595f) !important;
+  color: white !important;
+}
+
+.bg-facebook {
+  background: #3b5998 !important;
+  color: white !important;
+}
+
+.bg-twitter {
+  background: #55acee !important;
+  color: white !important;
+}
+
+.bg-linkedin {
+  background: #0077b5 !important;
+  color: white !important;
+}
+
+.bg-whatsapp {
+  background: #43d854 !important;
+  color: white !important;
+}
+
+.bg-instagram {
+  background: #3f729b !important;
+  color: white !important;
+}
+
+.bg-dribbble {
+  background: #ea4c89 !important;
+  color: white !important;
+}
+
+.bg-google {
+  background: #db4437 !important;
+  color: white !important;
+}
+
+.bg-youtube {
+  background: #cd201f !important;
+  color: white !important;
+}
+
+.text-primary {
+  color: #0081ff !important;
+}
+
+.text-secondary {
+  color: #aa66cc !important;
+}
+
+.text-info {
+  color: #33b5e5 !important;
+}
+
+.text-success,
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active.task-list .app-list-title {
+  color: #28c76f !important;
+}
+
+.text-danger {
+  color: #ea5455 !important;
+}
+
+.text-warning {
+  color: #ff9f43 !important;
+}
+
+.text-light {
+  color: #afb8bd !important;
+}
+
+.text-facebook {
+  color: #3b5998 !important;
+}
+
+.text-twitter {
+  color: #55acee !important;
+}
+
+.text-google {
+  color: #db4437 !important;
+}
+
+.text-linkedin {
+  color: #0077b5 !important;
+}
+
+.text-instagram {
+  color: #3f729b !important;
+}
+
+.text-whatsapp {
+  color: #43d854 !important;
+}
+
+.text-dribbble {
+  color: #ea4c89 !important;
+}
+
+.colorpicker.dropdown-menu {
+  visibility: visible;
+  opacity: 1;
+  height: auto;
+}
+
+.colorpicker-2x .colorpicker-saturation {
+  width: 200px;
+  height: 200px;
+}
+
+.colorpicker-2x .colorpicker-hue,
+.colorpicker-2x .colorpicker-alpha {
+  width: 30px;
+  height: 200px;
+}
+
+.colorpicker-2x .colorpicker-color,
+.colorpicker-2x .colorpicker-color div {
+  height: 30px;
+}
+
+.colorpicker.colorpicker-hidden {
+  display: none !important;
+}
+
+ul:not(.list-unstyled) {
+  margin: 0;
+  padding: 0;
+}
+
+ul:not(.list-unstyled) li {
+  list-style-type: none;
+}
+
+ul:not(.list-unstyled) li a .icon,
+ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn .icon,
+.header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn .icon {
+  color: #d1d1d1;
+  font-size: 14px;
+  vertical-align: middle;
+}
+
+ul:not(.list-unstyled) li a:hover,
+ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn:hover,
+ul:not(.list-unstyled) li a:focus,
+ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn:focus {
+  text-decoration: underline;
+}
+
+ul li a:hover,
+ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append ul li button.btn:hover,
+ul li a:focus,
+ul li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append ul li button.btn:focus {
+  text-decoration: none !important;
+}
+
+ul.list-unstyled li {
+  margin-bottom: 10px;
+}
+
+ul.list-unstyled li ul {
+  margin-left: 30px !important;
+  margin-top: 10px !important;
+  margin-bottom: 10px !important;
+}
+
+ul.list-unstyled li ul li {
+  list-style-type: disc !important;
+}
+
+ul.links a,
+ul.links .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append ul.links button.btn {
+  display: block;
+  padding: 3px 5px;
+  color: #2e2e2e;
+}
+
+ul.links a.active,
+ul.links .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append ul.links button.active.btn {
+  color: #0081ff;
+  font-weight: 500;
+}
+
+.list-group.list-group-sm .list-group-item {
+  padding: 0.4rem 1rem;
+}
+
+.text-uppercase {
+  letter-spacing: 0.5px;
+}
+
+.bg-none {
+  background-color: inherit !important;
+}
+
+h1 {
+  font-size: 29px;
+}
+
+h2 {
+  font-size: 26px;
+}
+
+h3 {
+  font-size: 23px;
+}
+
+h4 {
+  font-size: 20px;
+}
+
+h5 {
+  font-size: 17px;
+}
+
+h6 {
+  font-size: 14px;
+}
+
+ul.list-inline li {
+  margin-bottom: 0.5rem;
+}
+
+hr {
+  border-color: #e6e6e6;
+}
+
+.right-0 {
+  right: 0;
+}
+
+.left-0 {
+  left: 0;
+}
+
+.top-0 {
+  top: 0;
+}
+
+.bottom-0 {
+  bottom: 0;
+}
+
+.cursor-pointer {
+  cursor: pointer;
+}
+
+p {
+  line-height: 1.5rem;
+}
+
+a,
+.header form .input-group .input-group-append button.btn {
+  color: #666666;
+  text-decoration: none;
+  -webkit-transition: color 0.2s;
+  transition: color 0.2s;
+}
+
+a:hover,
+.header form .input-group .input-group-append button.btn:hover {
+  color: black;
+  text-decoration: none;
+}
+
+a.link-1,
+.header form .input-group .input-group-append button.link-1.btn {
+  color: #0081ff;
+}
+
+a.link-1:hover,
+.header form .input-group .input-group-append button.link-1.btn:hover,
+a.link-1:focus,
+.header form .input-group .input-group-append button.link-1.btn:focus {
+  color: rgba(0, 129, 255, 0.8);
+}
+
+a.link-2,
+.header form .input-group .input-group-append button.link-2.btn {
+  color: black;
+}
+
+a.link-2:hover,
+.header form .input-group .input-group-append button.link-2.btn:hover,
+a.link-2:focus,
+.header form .input-group .input-group-append button.link-2.btn:focus {
+  color: #0081ff;
+}
+
+a.link-3,
+.header form .input-group .input-group-append button.link-3.btn {
+  color: white;
+}
+
+a.link-3:hover,
+.header form .input-group .input-group-append button.link-3.btn:hover,
+a.link-3:focus,
+.header form .input-group .input-group-append button.link-3.btn:focus {
+  color: #0081ff;
+}
+
+a:not(.active.list-group-item),
+.header form .input-group .input-group-append button.btn:not(.active.list-group-item),
+a:not(.btn):hover,
+.header form .input-group .input-group-append button.btn:not(.btn):hover,
+a:not(.btn):active,
+.header form .input-group .input-group-append button.btn:not(.btn):active,
+a:not(.btn):focus,
+.header form .input-group .input-group-append button.btn:not(.btn):focus {
+  text-decoration: none !important;
+  color: black;
+  outline: none;
+}
+
+a.btn:hover,
+.header form .input-group .input-group-append button.btn:hover,
+a.btn:active,
+.header form .input-group .input-group-append button.btn:active,
+a.btn:focus,
+.header form .input-group .input-group-append button.btn:focus {
+  text-decoration: none !important;
+}
+
+.page-link {
+  color: #0081ff;
+}
+
+.page-link:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.3);
+}
+
+.btn {
+  font-size: 14px;
+  width: auto;
+  display: -webkit-inline-box;
+  display: inline-flex;
+  font-weight: 600;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 10px 15px;
+  line-height: 14px;
+  border-radius: 0.5rem;
+}
+
+.btn svg {
+  width: 14px !important;
+  height: 14px !important;
+}
+
+.btn[data-toggle=dropdown] {
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.btn.btn-sm {
+  padding: 5px 10px;
+  font-size: 13px;
+}
+
+.btn.btn-lg {
+  padding: 15px 20px;
+  font-size: 17px;
+}
+
+.btn.btn-block {
+  width: 100%;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.btn.btn-square {
+  border-radius: 0;
+}
+
+.btn.btn-rounded {
+  border-radius: 50px;
+  padding: 10px 20px;
+}
+
+.btn.btn-rounded.btn-sm {
+  padding: 5px 15px;
+  font-size: 13px;
+}
+
+.btn.btn-rounded.btn-lg {
+  padding: 20px 30px;
+  font-size: 17px;
+}
+
+.btn.btn-floating {
+  height: 35px;
+  width: 35px;
+  padding: 0;
+  -webkit-box-pack: center;
+          justify-content: center;
+  border-radius: 50%;
+}
+
+.btn.btn-floating.btn-sm {
+  height: 30px;
+  width: 30px;
+}
+
+.btn.btn-floating.btn-lg {
+  height: 50px;
+  width: 50px;
+}
+
+.btn.btn-uppercase {
+  text-transform: uppercase;
+  font-size: 12px;
+  letter-spacing: 1px;
+  -webkit-box-align: center;
+          align-items: center;
+  font-weight: 600;
+}
+
+.btn.btn-uppercase.btn-sm {
+  font-size: 11px;
+}
+
+.btn.btn-uppercase.btn-lg {
+  font-size: 14px;
+}
+
+.btn.btn-shadow {
+  box-shadow: 0px 3px 4px 1px rgba(0, 0, 0, 0.3);
+}
+
+.btn.btn-shadow:focus,
+.btn.btn-shadow:active {
+  box-shadow: 0px 4px 6px 1px rgba(0, 0, 0, 0.3) !important;
+}
+
+.btn.btn-primary,
+a.btn[href="#next"],
+.header form .input-group .input-group-append button.btn[href="#next"],
+a.btn[href="#previous"],
+.header form .input-group .input-group-append button.btn[href="#previous"] {
+  background: #0081ff;
+  border-color: #0081ff;
+}
+
+.btn.btn-primary:not(:disabled):not(.disabled):hover,
+a.btn[href="#next"]:not(:disabled):not(.disabled):hover,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):hover,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):hover,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):hover,
+.btn.btn-primary:not(:disabled):not(.disabled):focus,
+a.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):focus,
+.btn.btn-primary:not(:disabled):not(.disabled):active,
+a.btn[href="#next"]:not(:disabled):not(.disabled):active,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):active,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):active,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):active {
+  background: #0067cc;
+  border-color: #0067cc;
+}
+
+.btn.btn-primary:not(:disabled):not(.disabled):focus,
+a.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.4) !important;
+}
+
+.btn.btn-primary.btn-pulse:not(:disabled):not(.disabled),
+a.btn.btn-pulse[href="#next"]:not(:disabled):not(.disabled),
+.header form .input-group .input-group-append button.btn.btn-pulse[href="#next"]:not(:disabled):not(.disabled),
+a.btn.btn-pulse[href="#previous"]:not(:disabled):not(.disabled),
+.header form .input-group .input-group-append button.btn.btn-pulse[href="#previous"]:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-primary:hover,
+a.btn[href="#next"]:hover,
+.header form .input-group .input-group-append button.btn[href="#next"]:hover,
+a.btn[href="#previous"]:hover,
+.header form .input-group .input-group-append button.btn[href="#previous"]:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-primary {
+  background: linear-gradient(20deg, #4da7ff, #0067cc);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #0081ff, #0067cc);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.5);
+}
+
+.btn.btn-gradient-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-primary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-primary {
+  background: rgba(0, 129, 255, 0.3);
+  border-color: transparent;
+  color: #0053a3;
+}
+
+.btn.btn-light-primary:not(:disabled):not(.disabled):hover,
+.btn.btn-light-primary:not(:disabled):not(.disabled):focus,
+.btn.btn-light-primary:not(:disabled):not(.disabled):active {
+  background: rgba(0, 129, 255, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.2);
+}
+
+.btn.btn-light-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-primary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-primary {
+  background: none;
+  border-color: #0081ff;
+  color: #0074e6;
+  border-width: 1px;
+}
+
+.btn.btn-outline-primary:not(:disabled):not(.disabled):hover {
+  background: #0081ff;
+  border-color: #0081ff;
+  color: white;
+}
+
+.btn.btn-outline-primary:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-primary:not(:disabled):not(.disabled):active {
+  background: #0062c2;
+  border-color: #0062c2;
+  color: white;
+}
+
+.btn.btn-outline-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.4);
+}
+
+.btn.btn-outline-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-primary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-secondary {
+  background: #aa66cc;
+  border-color: #aa66cc;
+}
+
+.btn.btn-secondary:not(:disabled):not(.disabled):hover,
+.btn.btn-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-secondary:not(:disabled):not(.disabled):active {
+  background: #9540bf;
+  border-color: #9540bf;
+}
+
+.btn.btn-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.4) !important;
+}
+
+.btn.btn-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-secondary {
+  background: linear-gradient(20deg, #ca9fdf, #9540bf);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #aa66cc, #9540bf);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.5);
+}
+
+.btn.btn-gradient-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-secondary {
+  background: rgba(170, 102, 204, 0.3);
+  border-color: transparent;
+  color: #7d36a1;
+}
+
+.btn.btn-light-secondary:not(:disabled):not(.disabled):hover,
+.btn.btn-light-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-light-secondary:not(:disabled):not(.disabled):active {
+  background: rgba(170, 102, 204, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.2);
+}
+
+.btn.btn-light-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-secondary {
+  background: none;
+  border-color: #aa66cc;
+  color: #9f53c6;
+  border-width: 1px;
+}
+
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):hover {
+  background: #aa66cc;
+  border-color: #aa66cc;
+  color: white;
+}
+
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):active {
+  background: #8f3db8;
+  border-color: #8f3db8;
+  color: white;
+}
+
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.4);
+}
+
+.btn.btn-outline-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-success {
+  background: #28c76f;
+  border-color: #28c76f;
+}
+
+.btn.btn-success:not(:disabled):not(.disabled):hover,
+.btn.btn-success:not(:disabled):not(.disabled):focus,
+.btn.btn-success:not(:disabled):not(.disabled):active {
+  background: #1f9d57;
+  border-color: #1f9d57;
+}
+
+.btn.btn-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.4) !important;
+}
+
+.btn.btn-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-success {
+  background: linear-gradient(20deg, #5dde97, #1f9d57);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-success:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-success:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-success:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #28c76f, #1f9d57);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.5);
+}
+
+.btn.btn-gradient-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-success {
+  background: rgba(40, 199, 111, 0.3);
+  border-color: transparent;
+  color: #197b44;
+}
+
+.btn.btn-light-success:not(:disabled):not(.disabled):hover,
+.btn.btn-light-success:not(:disabled):not(.disabled):focus,
+.btn.btn-light-success:not(:disabled):not(.disabled):active {
+  background: rgba(40, 199, 111, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.2);
+}
+
+.btn.btn-light-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-success {
+  background: none;
+  border-color: #28c76f;
+  color: #24b263;
+  border-width: 1px;
+}
+
+.btn.btn-outline-success:not(:disabled):not(.disabled):hover {
+  background: #28c76f;
+  border-color: #28c76f;
+  color: white;
+}
+
+.btn.btn-outline-success:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-success:not(:disabled):not(.disabled):active {
+  background: #1e9453;
+  border-color: #1e9453;
+  color: white;
+}
+
+.btn.btn-outline-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.4);
+}
+
+.btn.btn-outline-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-danger {
+  background: #ea5455;
+  border-color: #ea5455;
+}
+
+.btn.btn-danger:not(:disabled):not(.disabled):hover,
+.btn.btn-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-danger:not(:disabled):not(.disabled):active {
+  background: #e42728;
+  border-color: #e42728;
+}
+
+.btn.btn-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.4) !important;
+}
+
+.btn.btn-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-danger {
+  background: linear-gradient(20deg, #f29899, #e42728);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #ea5455, #e42728);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.5);
+}
+
+.btn.btn-gradient-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-danger {
+  background: rgba(234, 84, 85, 0.3);
+  border-color: transparent;
+  color: #c9191a;
+}
+
+.btn.btn-light-danger:not(:disabled):not(.disabled):hover,
+.btn.btn-light-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-light-danger:not(:disabled):not(.disabled):active {
+  background: rgba(234, 84, 85, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.2);
+}
+
+.btn.btn-light-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-danger {
+  background: none;
+  border-color: #ea5455;
+  color: #e73d3e;
+  border-width: 1px;
+}
+
+.btn.btn-outline-danger:not(:disabled):not(.disabled):hover {
+  background: #ea5455;
+  border-color: #ea5455;
+  color: white;
+}
+
+.btn.btn-outline-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-danger:not(:disabled):not(.disabled):active {
+  background: #e31d1f;
+  border-color: #e31d1f;
+  color: white;
+}
+
+.btn.btn-outline-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.4);
+}
+
+.btn.btn-outline-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-warning {
+  background: #ff9f43;
+  border-color: #ff9f43;
+}
+
+.btn.btn-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-warning:not(:disabled):not(.disabled):active {
+  background: #ff8510;
+  border-color: #ff8510;
+}
+
+.btn.btn-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.4) !important;
+}
+
+.btn.btn-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-warning {
+  background: linear-gradient(20deg, #ffc690, #ff8510);
+  border-color: transparent;
+  color: white;
+  color: #212529;
+}
+
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #ff9f43, #ff8510);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.5);
+}
+
+.btn.btn-gradient-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-warning {
+  background: rgba(255, 159, 67, 0.3);
+  border-color: transparent;
+  color: #e67100;
+}
+
+.btn.btn-light-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-light-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-light-warning:not(:disabled):not(.disabled):active {
+  background: rgba(255, 159, 67, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.2);
+}
+
+.btn.btn-light-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-warning {
+  background: none;
+  border-color: #ff9f43;
+  color: #ff922a;
+  border-width: 1px;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):hover {
+  background: #ff9f43;
+  border-color: #ff9f43;
+  color: white;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-warning:not(:disabled):not(.disabled):active {
+  background: #ff8006;
+  border-color: #ff8006;
+  color: white;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.4);
+}
+
+.btn.btn-outline-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-outline-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-warning:not(:disabled):not(.disabled):active {
+  color: #212529;
+}
+
+.btn.btn-info {
+  background: #33b5e5;
+  border-color: #33b5e5;
+}
+
+.btn.btn-info:not(:disabled):not(.disabled):hover,
+.btn.btn-info:not(:disabled):not(.disabled):focus,
+.btn.btn-info:not(:disabled):not(.disabled):active {
+  background: #1a9bcb;
+  border-color: #1a9bcb;
+}
+
+.btn.btn-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.4) !important;
+}
+
+.btn.btn-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-info {
+  background: linear-gradient(20deg, #77ceee, #1a9bcb);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-info:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-info:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-info:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #33b5e5, #1a9bcb);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.5);
+}
+
+.btn.btn-gradient-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-info {
+  background: rgba(51, 181, 229, 0.3);
+  border-color: transparent;
+  color: #1580a7;
+}
+
+.btn.btn-light-info:not(:disabled):not(.disabled):hover,
+.btn.btn-light-info:not(:disabled):not(.disabled):focus,
+.btn.btn-light-info:not(:disabled):not(.disabled):active {
+  background: rgba(51, 181, 229, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.2);
+}
+
+.btn.btn-light-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-info {
+  background: none;
+  border-color: #33b5e5;
+  color: #1dade2;
+  border-width: 1px;
+}
+
+.btn.btn-outline-info:not(:disabled):not(.disabled):hover {
+  background: #33b5e5;
+  border-color: #33b5e5;
+  color: white;
+}
+
+.btn.btn-outline-info:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-info:not(:disabled):not(.disabled):active {
+  background: #1994c2;
+  border-color: #1994c2;
+  color: white;
+}
+
+.btn.btn-outline-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.4);
+}
+
+.btn.btn-outline-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light,
+.fc .btn.fc-state-default {
+  background: #afb8bd;
+  border-color: #afb8bd;
+}
+
+.btn.btn-light:not(:disabled):not(.disabled):hover,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):hover,
+.btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):focus,
+.btn.btn-light:not(:disabled):not(.disabled):active,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):active {
+  background: #939fa6;
+  border-color: #939fa6;
+}
+
+.btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.4) !important;
+}
+
+.btn.btn-light.btn-pulse:not(:disabled):not(.disabled),
+.fc .btn.btn-pulse.fc-state-default:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light:hover,
+.fc .btn.fc-state-default:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-light {
+  background: linear-gradient(20deg, #d9dde0, #939fa6);
+  border-color: transparent;
+  color: white;
+  color: inherit;
+}
+
+.btn.btn-gradient-light:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-light:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-light:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #afb8bd, #939fa6);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-light:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.5);
+}
+
+.btn.btn-gradient-light.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-light:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-light {
+  background: none;
+  border-color: #afb8bd;
+  color: #a1acb1;
+  border-width: 1px;
+  color: #212529;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):hover {
+  background: #afb8bd;
+  border-color: #afb8bd;
+  color: white;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-light:not(:disabled):not(.disabled):active {
+  background: #8d9aa1;
+  border-color: #8d9aa1;
+  color: white;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.4);
+}
+
+.btn.btn-outline-light.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-light:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):hover,
+.btn.btn-outline-light:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-light:not(:disabled):not(.disabled):active {
+  color: #212529;
+}
+
+.btn.btn-dark {
+  background: #293134;
+  border-color: #293134;
+}
+
+.btn.btn-dark:not(:disabled):not(.disabled):hover,
+.btn.btn-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-dark:not(:disabled):not(.disabled):active {
+  background: #131617;
+  border-color: #131617;
+}
+
+.btn.btn-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.4) !important;
+}
+
+.btn.btn-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-dark {
+  background: linear-gradient(20deg, #4b595f, #131617);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #293134, #131617);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.5);
+}
+
+.btn.btn-gradient-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-dark {
+  background: rgba(41, 49, 52, 0.3);
+  border-color: transparent;
+  color: #010101;
+}
+
+.btn.btn-light-dark:not(:disabled):not(.disabled):hover,
+.btn.btn-light-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-light-dark:not(:disabled):not(.disabled):active {
+  background: rgba(41, 49, 52, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.2);
+}
+
+.btn.btn-light-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-dark {
+  background: none;
+  border-color: #293134;
+  color: #1e2426;
+  border-width: 1px;
+}
+
+.btn.btn-outline-dark:not(:disabled):not(.disabled):hover {
+  background: #293134;
+  border-color: #293134;
+  color: white;
+}
+
+.btn.btn-outline-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-dark:not(:disabled):not(.disabled):active {
+  background: #0e1112;
+  border-color: #0e1112;
+  color: white;
+}
+
+.btn.btn-outline-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.4);
+}
+
+.btn.btn-outline-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-facebook {
+  background: #3b5998;
+  border-color: #3b5998;
+  color: white;
+}
+
+.btn.btn-facebook:not(:disabled):not(.disabled):hover,
+.btn.btn-facebook:not(:disabled):not(.disabled):focus,
+.btn.btn-facebook:not(:disabled):not(.disabled):active {
+  background: #2d4373;
+  border-color: #2d4373;
+}
+
+.btn.btn-facebook:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(59, 89, 152, 0.4) !important;
+}
+
+.btn.btn-facebook.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(59, 89, 152, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-facebook:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-facebook {
+  background: none;
+  border-color: #3b5998;
+  color: #344e86;
+  border-width: 1px;
+}
+
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):hover {
+  background: #3b5998;
+  border-color: #3b5998;
+  color: white;
+}
+
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):active {
+  background: #2a3f6c;
+  border-color: #2a3f6c;
+  color: white;
+}
+
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(59, 89, 152, 0.4);
+}
+
+.btn.btn-outline-facebook.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(59, 89, 152, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-facebook:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-google {
+  background: #db4437;
+  border-color: #db4437;
+  color: white;
+}
+
+.btn.btn-google:not(:disabled):not(.disabled):hover,
+.btn.btn-google:not(:disabled):not(.disabled):focus,
+.btn.btn-google:not(:disabled):not(.disabled):active {
+  background: #bd2e22;
+  border-color: #bd2e22;
+}
+
+.btn.btn-google:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(219, 68, 55, 0.4) !important;
+}
+
+.btn.btn-google.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(219, 68, 55, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-google:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-google {
+  background: none;
+  border-color: #db4437;
+  color: #d33426;
+  border-width: 1px;
+}
+
+.btn.btn-outline-google:not(:disabled):not(.disabled):hover {
+  background: #db4437;
+  border-color: #db4437;
+  color: white;
+}
+
+.btn.btn-outline-google:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-google:not(:disabled):not(.disabled):active {
+  background: #b42c20;
+  border-color: #b42c20;
+  color: white;
+}
+
+.btn.btn-outline-google:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(219, 68, 55, 0.4);
+}
+
+.btn.btn-outline-google.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(219, 68, 55, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-google:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-twitter {
+  background: #55acee;
+  border-color: #55acee;
+  color: white;
+}
+
+.btn.btn-twitter:not(:disabled):not(.disabled):hover,
+.btn.btn-twitter:not(:disabled):not(.disabled):focus,
+.btn.btn-twitter:not(:disabled):not(.disabled):active {
+  background: #2795e9;
+  border-color: #2795e9;
+}
+
+.btn.btn-twitter:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(85, 172, 238, 0.4) !important;
+}
+
+.btn.btn-twitter.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(85, 172, 238, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-twitter:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-twitter {
+  background: none;
+  border-color: #55acee;
+  color: #3ea1ec;
+  border-width: 1px;
+}
+
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):hover {
+  background: #55acee;
+  border-color: #55acee;
+  color: white;
+}
+
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):active {
+  background: #1d91e8;
+  border-color: #1d91e8;
+  color: white;
+}
+
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(85, 172, 238, 0.4);
+}
+
+.btn.btn-outline-twitter.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(85, 172, 238, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-twitter:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-linkedin {
+  background: #0077b5;
+  border-color: #0077b5;
+  color: white;
+}
+
+.btn.btn-linkedin:not(:disabled):not(.disabled):hover,
+.btn.btn-linkedin:not(:disabled):not(.disabled):focus,
+.btn.btn-linkedin:not(:disabled):not(.disabled):active {
+  background: #005582;
+  border-color: #005582;
+}
+
+.btn.btn-linkedin:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 119, 181, 0.4) !important;
+}
+
+.btn.btn-linkedin.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 119, 181, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-linkedin:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-linkedin {
+  background: none;
+  border-color: #0077b5;
+  color: #00669c;
+  border-width: 1px;
+}
+
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):hover {
+  background: #0077b5;
+  border-color: #0077b5;
+  color: white;
+}
+
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):active {
+  background: #004f78;
+  border-color: #004f78;
+  color: white;
+}
+
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 119, 181, 0.4);
+}
+
+.btn.btn-outline-linkedin.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 119, 181, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-linkedin:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-whatsapp {
+  background: #43d854;
+  border-color: #43d854;
+  color: white;
+}
+
+.btn.btn-whatsapp:not(:disabled):not(.disabled):hover,
+.btn.btn-whatsapp:not(:disabled):not(.disabled):focus,
+.btn.btn-whatsapp:not(:disabled):not(.disabled):active {
+  background: #28c039;
+  border-color: #28c039;
+}
+
+.btn.btn-whatsapp:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(67, 216, 84, 0.4) !important;
+}
+
+.btn.btn-whatsapp.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(67, 216, 84, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-whatsapp:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-whatsapp {
+  background: none;
+  border-color: #43d854;
+  color: #2ed441;
+  border-width: 1px;
+}
+
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):hover {
+  background: #43d854;
+  border-color: #43d854;
+  color: white;
+}
+
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):active {
+  background: #26b837;
+  border-color: #26b837;
+  color: white;
+}
+
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(67, 216, 84, 0.4);
+}
+
+.btn.btn-outline-whatsapp.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(67, 216, 84, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-whatsapp:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-instagram {
+  background: #3f729b;
+  border-color: #3f729b;
+  color: white;
+}
+
+.btn.btn-instagram:not(:disabled):not(.disabled):hover,
+.btn.btn-instagram:not(:disabled):not(.disabled):focus,
+.btn.btn-instagram:not(:disabled):not(.disabled):active {
+  background: #305777;
+  border-color: #305777;
+}
+
+.btn.btn-instagram:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(63, 114, 155, 0.4) !important;
+}
+
+.btn.btn-instagram.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(63, 114, 155, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-instagram:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-instagram {
+  background: none;
+  border-color: #3f729b;
+  color: #386589;
+  border-width: 1px;
+}
+
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):hover {
+  background: #3f729b;
+  border-color: #3f729b;
+  color: white;
+}
+
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):active {
+  background: #2d526f;
+  border-color: #2d526f;
+  color: white;
+}
+
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(63, 114, 155, 0.4);
+}
+
+.btn.btn-outline-instagram.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(63, 114, 155, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-instagram:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-dribbble {
+  background: #ea4c89;
+  border-color: #ea4c89;
+  color: white;
+}
+
+.btn.btn-dribbble:not(:disabled):not(.disabled):hover,
+.btn.btn-dribbble:not(:disabled):not(.disabled):focus,
+.btn.btn-dribbble:not(:disabled):not(.disabled):active {
+  background: #e51e6b;
+  border-color: #e51e6b;
+}
+
+.btn.btn-dribbble:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 76, 137, 0.4) !important;
+}
+
+.btn.btn-dribbble.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 76, 137, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-dribbble:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-dribbble {
+  background: none;
+  border-color: #ea4c89;
+  color: #e7357a;
+  border-width: 1px;
+}
+
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):hover {
+  background: #ea4c89;
+  border-color: #ea4c89;
+  color: white;
+}
+
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):active {
+  background: #df1a66;
+  border-color: #df1a66;
+  color: white;
+}
+
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 76, 137, 0.4);
+}
+
+.btn.btn-outline-dribbble.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 76, 137, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-dribbble:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-youtube {
+  background: #cd201f;
+  border-color: #cd201f;
+  color: white;
+}
+
+.btn.btn-youtube:not(:disabled):not(.disabled):hover,
+.btn.btn-youtube:not(:disabled):not(.disabled):focus,
+.btn.btn-youtube:not(:disabled):not(.disabled):active {
+  background: #a11918;
+  border-color: #a11918;
+}
+
+.btn.btn-youtube:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(205, 32, 31, 0.4) !important;
+}
+
+.btn.btn-youtube.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(205, 32, 31, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-youtube:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-youtube {
+  background: none;
+  border-color: #cd201f;
+  color: #b71d1c;
+  border-width: 1px;
+}
+
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):hover {
+  background: #cd201f;
+  border-color: #cd201f;
+  color: white;
+}
+
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):active {
+  background: #981817;
+  border-color: #981817;
+  color: white;
+}
+
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(205, 32, 31, 0.4);
+}
+
+.btn.btn-outline-youtube.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(205, 32, 31, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-youtube:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-github {
+  background: #00405d;
+  border-color: #00405d;
+  color: white;
+}
+
+.btn.btn-github:not(:disabled):not(.disabled):hover,
+.btn.btn-github:not(:disabled):not(.disabled):focus,
+.btn.btn-github:not(:disabled):not(.disabled):active {
+  background: #001d2a;
+  border-color: #001d2a;
+}
+
+.btn.btn-github:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 64, 93, 0.4) !important;
+}
+
+.btn.btn-github.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 64, 93, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-github:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-github {
+  background: none;
+  border-color: #00405d;
+  color: #002e44;
+  border-width: 1px;
+}
+
+.btn.btn-outline-github:not(:disabled):not(.disabled):hover {
+  background: #00405d;
+  border-color: #00405d;
+  color: white;
+}
+
+.btn.btn-outline-github:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-github:not(:disabled):not(.disabled):active {
+  background: #001620;
+  border-color: #001620;
+  color: white;
+}
+
+.btn.btn-outline-github:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 64, 93, 0.4);
+}
+
+.btn.btn-outline-github.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 64, 93, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-github:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-behance {
+  background: #1769ff;
+  border-color: #1769ff;
+  color: white;
+}
+
+.btn.btn-behance:not(:disabled):not(.disabled):hover,
+.btn.btn-behance:not(:disabled):not(.disabled):focus,
+.btn.btn-behance:not(:disabled):not(.disabled):active {
+  background: #0050e3;
+  border-color: #0050e3;
+}
+
+.btn.btn-behance:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(23, 105, 255, 0.4) !important;
+}
+
+.btn.btn-behance.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(23, 105, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-behance:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-behance {
+  background: none;
+  border-color: #1769ff;
+  color: #0059fd;
+  border-width: 1px;
+}
+
+.btn.btn-outline-behance:not(:disabled):not(.disabled):hover {
+  background: #1769ff;
+  border-color: #1769ff;
+  color: white;
+}
+
+.btn.btn-outline-behance:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-behance:not(:disabled):not(.disabled):active {
+  background: #004dd9;
+  border-color: #004dd9;
+  color: white;
+}
+
+.btn.btn-outline-behance:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(23, 105, 255, 0.4);
+}
+
+.btn.btn-outline-behance.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(23, 105, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-behance:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-skype {
+  background: #00aff0;
+  border-color: #00aff0;
+  color: white;
+}
+
+.btn.btn-skype:not(:disabled):not(.disabled):hover,
+.btn.btn-skype:not(:disabled):not(.disabled):focus,
+.btn.btn-skype:not(:disabled):not(.disabled):active {
+  background: #008abd;
+  border-color: #008abd;
+}
+
+.btn.btn-skype:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 175, 240, 0.4) !important;
+}
+
+.btn.btn-skype.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 175, 240, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-skype:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-skype {
+  background: none;
+  border-color: #00aff0;
+  color: #009cd7;
+  border-width: 1px;
+}
+
+.btn.btn-outline-skype:not(:disabled):not(.disabled):hover {
+  background: #00aff0;
+  border-color: #00aff0;
+  color: white;
+}
+
+.btn.btn-outline-skype:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-skype:not(:disabled):not(.disabled):active {
+  background: #0082b3;
+  border-color: #0082b3;
+  color: white;
+}
+
+.btn.btn-outline-skype:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 175, 240, 0.4);
+}
+
+.btn.btn-outline-skype.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 175, 240, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-skype:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-yahoo {
+  background: #410093;
+  border-color: #410093;
+  color: white;
+}
+
+.btn.btn-yahoo:not(:disabled):not(.disabled):hover,
+.btn.btn-yahoo:not(:disabled):not(.disabled):focus,
+.btn.btn-yahoo:not(:disabled):not(.disabled):active {
+  background: #2a0060;
+  border-color: #2a0060;
+}
+
+.btn.btn-yahoo:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(65, 0, 147, 0.4) !important;
+}
+
+.btn.btn-yahoo.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(65, 0, 147, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-yahoo:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-yahoo {
+  background: none;
+  border-color: #410093;
+  color: #36007a;
+  border-width: 1px;
+}
+
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):hover {
+  background: #410093;
+  border-color: #410093;
+  color: white;
+}
+
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):active {
+  background: #260056;
+  border-color: #260056;
+  color: white;
+}
+
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(65, 0, 147, 0.4);
+}
+
+.btn.btn-outline-yahoo.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(65, 0, 147, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-yahoo:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-apple,
+.btn.btn-google-play {
+  border-radius: 7px;
+}
+
+.btn.btn-apple img,
+.btn.btn-google-play img {
+  width: 35px;
+  margin-right: 10px;
+}
+
+.btn.btn-apple i,
+.btn.btn-google-play i {
+  font-size: 40px;
+  margin-right: 10px;
+}
+
+.btn.btn-apple > span,
+.btn.btn-google-play > span {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  text-align: left;
+}
+
+.btn.btn-apple > span span:nth-child(2),
+.btn.btn-google-play > span span:nth-child(2) {
+  font-size: 20px;
+  font-weight: 600;
+  margin-top: 5px;
+}
+
+.btn.btn-apple:hover,
+.btn.btn-apple:active,
+.btn.btn-apple:focus,
+.btn.btn-google-play:hover,
+.btn.btn-google-play:active,
+.btn.btn-google-play:focus {
+  background: #040507;
+  color: white;
+}
+
+.btn.btn-apple {
+  border: 1px solid #040507;
+  color: #040507;
+}
+
+.btn.btn-google-play {
+  background: #040507;
+  color: white;
+}
+
+.btn.btn-google-play > span span:nth-child(1) {
+  text-transform: uppercase;
+  font-size: 12px;
+}
+
+@-webkit-keyframes pulse {
+  to {
+    box-shadow: 0 0 0 10px rgba(232, 76, 61, 0);
+  }
+}
+
+@keyframes pulse {
+  to {
+    box-shadow: 0 0 0 10px rgba(232, 76, 61, 0);
+  }
+}
+
+.progress .progress-bar.progress-bar-striped {
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent) !important;
+  background-size: 1rem 1rem !important;
+}
+
+.progress .progress-bar:not(.progress-bar-striped) {
+  background: #0081ff;
+}
+
+.dropdown {
+  display: inline;
+}
+
+.dropdown-menu {
+  margin-top: -10px;
+  visibility: hidden;
+  opacity: 0;
+  height: 0;
+  display: block !important;
+  -webkit-transition: margin-top 0.3s, opacity 0.3s;
+  transition: margin-top 0.3s, opacity 0.3s;
+  border-top: 1px solid #eee !important;
+}
+
+.dropdown-menu ul.list-group {
+  max-height: 300px;
+}
+
+.dropdown-menu.show {
+  margin-top: 0;
+  visibility: visible;
+  opacity: 1;
+  height: auto;
+}
+
+.dropdown-header {
+  font-size: inherit;
+  padding: 10px 20px;
+  border-bottom: 1px solid #f0f0f0;
+}
+
+.dropdown-body {
+  padding: 10px 20px;
+}
+
+.dropdown-menu {
+  border-radius: 0.5rem;
+  font-size: 14px;
+  border: none;
+  box-shadow: 0px 5px 10px -1px rgba(0, 0, 0, 0.15);
+  overflow: hidden;
+}
+
+.dropdown-menu.dropdown-menu-big {
+  padding: 0;
+  width: 300px;
+}
+
+.dropdown-menu .dropdown-menu-body {
+  max-height: 400px;
+  overflow: auto;
+}
+
+.dropdown-menu .dropdown-menu-title {
+  background-color: #0081ff;
+  padding: 15px 20px;
+  color: white;
+  background-size: cover !important;
+  background-position: center !important;
+}
+
+.dropdown-menu .dropdown-menu-footer {
+  padding: 10px 20px;
+}
+
+.dropdown-menu ul li.dropdown-menu-title {
+  background: red;
+  margin: 5px 0;
+  padding: 0px 20px 5px;
+  border-bottom: 1px solid #ebebeb;
+}
+
+.dropdown-menu ul li.dropdown-menu-title:first-child {
+  margin-top: 0;
+}
+
+.dropdown-menu .dropdown-item:hover,
+.dropdown-menu .dropdown-item:focus,
+.dropdown-menu .dropdown-item:active {
+  background: #f5f5f5;
+  text-decoration: none;
+  color: #0081ff;
+}
+
+table .dropdown {
+  line-height: initial;
+}
+
+.badge {
+  padding: 5px 10px;
+  font-size: 11px;
+}
+
+.badge.badge-success {
+  background: #28c76f;
+}
+
+.badge.badge-danger {
+  background: #ea5455;
+}
+
+.badge.badge-secondary {
+  background: #aa66cc;
+}
+
+.badge.badge-info {
+  background: #33b5e5;
+}
+
+.badge.badge-warning {
+  background: #ff9f43;
+}
+
+.badge.badge-dark {
+  background: #293134;
+}
+
+.badge.badge-primary {
+  background: #0081ff;
+}
+
+.badge.badge-light {
+  background: #afb8bd;
+}
+
+.btn {
+  position: relative;
+}
+
+.btn .badge {
+  padding: 2px 6px;
+  right: 7px;
+  top: -7px;
+  position: absolute;
+}
+
+.collapse .card,
+.collapse .app-block .app-content .app-action,
+.app-block .app-content .collapse .app-action,
+.collapse .chat-block {
+  border: 1px solid #e1e1e1;
+  box-shadow: none;
+}
+
+.media > img,
+.media > a > img,
+.header form .input-group .input-group-append .media > button.btn > img {
+  width: 80px;
+}
+
+.accordion .card,
+.accordion .app-block .app-content .app-action,
+.app-block .app-content .accordion .app-action,
+.accordion .chat-block {
+  margin-bottom: 0;
+  border: 1px solid #ebebeb;
+}
+
+.accordion .card .card-header,
+.accordion .app-block .app-content .app-action .card-header,
+.app-block .app-content .accordion .app-action .card-header,
+.accordion .chat-block .card-header {
+  display: -webkit-box;
+  display: flex;
+  height: 50px;
+  padding: 0 10px;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.accordion .card .card-header button,
+.accordion .app-block .app-content .app-action .card-header button,
+.app-block .app-content .accordion .app-action .card-header button,
+.accordion .chat-block .card-header button {
+  display: block;
+}
+
+.accordion.custom-accordion {
+  border: 1px solid #ebebeb;
+  border-radius: 5px;
+  overflow: hidden;
+}
+
+.accordion.custom-accordion .accordion-row a.accordion-header,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn {
+  color: #293134;
+  border-bottom: 1px solid #ebebeb;
+  border-top: 1px solid #ebebeb;
+  padding: 10px 20px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  margin-top: -1px;
+}
+
+.accordion.custom-accordion .accordion-row a.accordion-header .accordion-status-icon.open,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.open,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn .accordion-status-icon.open {
+  display: none;
+}
+
+.accordion.custom-accordion .accordion-row a.accordion-header:hover,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn:hover,
+.accordion.custom-accordion .accordion-row a.accordion-header:focus,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn:focus {
+  color: #0081ff;
+}
+
+.accordion.custom-accordion .accordion-row .accordion-body {
+  display: none;
+  padding: 10px 20px;
+}
+
+.accordion.custom-accordion .accordion-row.open a.accordion-header,
+.accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn {
+  background: white;
+}
+
+.accordion.custom-accordion .accordion-row.open a.accordion-header .accordion-status-icon.open,
+.accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.open,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn .accordion-status-icon.open {
+  display: block;
+}
+
+.accordion.custom-accordion .accordion-row.open a.accordion-header .accordion-status-icon.close,
+.accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.close,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn .accordion-status-icon.close {
+  display: none;
+}
+
+.accordion.custom-accordion .accordion-row.open .accordion-body {
+  display: block;
+}
+
+.accordion.custom-accordion .accordion-row:first-child a.accordion-header,
+.accordion.custom-accordion .accordion-row:first-child .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row:first-child button.accordion-header.btn {
+  border-top: none;
+}
+
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #0081ff;
+}
+
+.accordion.custom-accordion.accordion-primary .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-primary .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row.open button.accordion-header.btn {
+  background: #0081ff;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #28c76f;
+}
+
+.accordion.custom-accordion.accordion-success .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-success .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row.open button.accordion-header.btn {
+  background: #28c76f;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #ea5455;
+}
+
+.accordion.custom-accordion.accordion-danger .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-danger .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row.open button.accordion-header.btn {
+  background: #ea5455;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #aa66cc;
+}
+
+.accordion.custom-accordion.accordion-secondary .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-secondary .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row.open button.accordion-header.btn {
+  background: #aa66cc;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-light .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-light .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row.open button.accordion-header.btn {
+  background: #afb8bd;
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #ff9f43;
+}
+
+.accordion.custom-accordion.accordion-warning .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-warning .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row.open button.accordion-header.btn {
+  background: #ff9f43;
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #33b5e5;
+}
+
+.accordion.custom-accordion.accordion-info .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-info .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row.open button.accordion-header.btn {
+  background: #33b5e5;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-dark .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-dark .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row.open button.accordion-header.btn {
+  background: #293134;
+  color: white;
+}
+
+.nicescroll-cursors {
+  border: none !important;
+}
+
+body:not(.dark) .nicescroll-cursors {
+  background-color: rgba(41, 49, 52, 0.4) !important;
+  width: 3px !important;
+}
+
+.isotope-item {
+  z-index: 2;
+}
+
+.isotope-hidden.isotope-item {
+  pointer-events: none;
+  z-index: 1;
+}
+
+.isotope,
+.isotope .isotope-item {
+  -webkit-transition-duration: 0.8s;
+          transition-duration: 0.8s;
+}
+
+.isotope {
+  -webkit-transition-property: height, width;
+  transition-property: height, width;
+}
+
+.isotope .isotope-item {
+  -webkit-transition-property: opacity, -webkit-transform;
+  transition-property: opacity, -webkit-transform;
+  transition-property: transform, opacity;
+  transition-property: transform, opacity, -webkit-transform;
+}
+
+.gallery-container img {
+  width: 100%;
+}
+
+.daterangepicker td.active {
+  background: #0081ff;
+}
+
+.daterangepicker td.active:hover {
+  background: #0081ff;
+}
+
+.daterangepicker .ranges li.active {
+  background: #0081ff;
+}
+
+.alert {
+  border-color: transparent !important;
+}
+
+.alert .close {
+  height: 100%;
+  width: 44px;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 0;
+  display: -webkit-box;
+  display: flex;
+}
+
+.alert .close > * {
+  font-size: initial;
+  text-shadow: none;
+  line-height: 0;
+}
+
+.alert.alert-primary {
+  background: rgba(0, 129, 255, 0.3) !important;
+}
+
+.alert.alert-primary.alert-with-border {
+  border-left: 3px solid #0081ff !important;
+}
+
+.alert.alert-secondary {
+  background: rgba(170, 102, 204, 0.3) !important;
+}
+
+.alert.alert-secondary.alert-with-border {
+  border-left: 3px solid #aa66cc !important;
+}
+
+.alert.alert-success {
+  background: rgba(40, 199, 111, 0.3) !important;
+}
+
+.alert.alert-success.alert-with-border {
+  border-left: 3px solid #28c76f !important;
+}
+
+.alert.alert-danger {
+  background: rgba(234, 84, 85, 0.3) !important;
+}
+
+.alert.alert-danger.alert-with-border {
+  border-left: 3px solid #ea5455 !important;
+}
+
+.alert.alert-warning {
+  background: rgba(255, 159, 67, 0.3) !important;
+}
+
+.alert.alert-warning.alert-with-border {
+  border-left: 3px solid #ff9f43 !important;
+}
+
+.alert.alert-info {
+  background: rgba(51, 181, 229, 0.3) !important;
+}
+
+.alert.alert-info.alert-with-border {
+  border-left: 3px solid #33b5e5 !important;
+}
+
+.alert.alert-dark {
+  background: #d4d5d8 !important;
+  color: #293134 !important;
+}
+
+.alert.alert-dark.alert-with-border {
+  border-left: 3px solid #293134 !important;
+}
+
+.breadcrumb {
+  background: none;
+  padding: 0;
+  margin-bottom: 30px;
+}
+
+.breadcrumb .breadcrumb-item + .breadcrumb-item::before {
+  font-family: "themify";
+  content: "\E649";
+  font-size: 10px;
+  margin-right: 0;
+}
+
+.breadcrumb .breadcrumb-item:before {
+  font-family: "themify";
+  content: "\E69B";
+  margin-right: 0.5rem;
+}
+
+.breadcrumb .breadcrumb-item.active {
+  color: #0081ff;
+}
+
+.notify .alert {
+  border: none;
+  box-shadow: 0 2px 10px 0 rgba(24, 28, 33, 0.04);
+}
+
+.notify .alert .alert-heading {
+  font-size: 16px;
+  font-weight: 600;
+}
+
+.notify.open {
+  -webkit-transform: translate(0);
+          transform: translate(0);
+}
+
+.pagination .page-item.active .page-link {
+  background: #0081ff;
+  border-color: transparent;
+}
+
+.pagination .page-item .page-link:hover,
+.pagination .page-item .page-link:focus {
+  text-decoration: none;
+}
+
+.pagination.pagination-rounded .page-item {
+  margin: 0 5px;
+}
+
+.pagination.pagination-rounded .page-item .page-link {
+  border-radius: 50%;
+  padding: 0;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  height: 40px;
+  width: 40px;
+}
+
+.pagination.pagination-rounded.pagination-sm .page-link {
+  height: 30px;
+  width: 30px;
+}
+
+.pagination.pagination-rounded.pagination-lg .page-link {
+  height: 60px;
+  width: 60px;
+}
+
+.tourStep {
+  border: none;
+}
+
+.tourStep.right {
+  margin-left: 10px;
+}
+
+.tourStep.left {
+  margin-right: 10px;
+}
+
+.tourStep.top {
+  margin-top: -10px;
+}
+
+.tourStep.bottom {
+  margin-top: 10px;
+}
+
+.tourStep .popover-navigation {
+  border-top: 1px solid #ddd;
+  padding: 0.5rem 0.75rem;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.tourStep .popover-navigation span {
+  font-size: 12px;
+  color: #9b9b9b;
+}
+
+.tourStep .popover-navigation .popover-navigation-buttons {
+  margin-left: auto;
+}
+
+.tourStep .popover-navigation .popover-navigation-buttons .btn {
+  margin-left: 5px;
+}
+
+.swal-modal {
+  border-radius: 0.5rem;
+}
+
+.swal-modal .swal-title {
+  font-size: 20px;
+}
+
+.swal-modal .swal-text {
+  text-align: center;
+}
+
+.swal-modal .swal-button {
+  padding: 0.375rem 0.75rem;
+}
+
+.swal-modal .swal-button.swal-button--confirm {
+  background: #0081ff;
+}
+
+.swal-modal .swal-button.swal-button--danger {
+  background: #ea5455;
+}
+
+.swal-modal .swal-button.swal-button--cancel {
+  background: #afb8bd;
+}
+
+.swal-modal .swal-icon--error {
+  border-color: #f4a6a6;
+}
+
+.swal-modal .swal-icon--error .swal-icon--error__line {
+  background: #f4a6a6;
+}
+
+.irs .irs-single,
+.irs .irs-to,
+.irs .irs-from {
+  background: #0081ff;
+}
+
+.irs .irs-single:before,
+.irs .irs-to:before,
+.irs .irs-from:before {
+  border-top-color: #0081ff;
+}
+
+.irs .irs-handle {
+  border-color: #0081ff;
+}
+
+.irs .irs-bar {
+  background: #0081ff;
+}
+
+.select2 {
+  width: 100% !important;
+}
+
+.select2.select2-container .select2-selection {
+  border: 1px solid #ced4da;
+}
+
+.select2.select2-container .select2-selection .select2-selection__placeholder {
+  line-height: calc(2.25rem + 2px);
+}
+
+.select2.select2-container .select2-selection .select2-selection__arrow {
+  height: calc(2.25rem + 2px);
+  width: 30px;
+}
+
+.select2.select2-container .select2-selection .select2-selection__choice {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  border: none;
+}
+
+.select2.select2-container .select2-selection .select2-selection__choice .select2-selection__choice__remove {
+  font-size: 16px;
+  padding: 0 5px 0 3px;
+}
+
+.select2.select2-container .select2-selection.select2-container--focus {
+  border-color: red;
+}
+
+.select2-container--default .select2-results__option--highlighted[aria-selected] {
+  background-color: #0081ff;
+  color: white;
+}
+
+.select2-container--default.select2-container--focus .select2-selection--multiple {
+  border-color: rgba(0, 129, 255, 0.8);
+}
+
+.select2-container--default .select2-search--dropdown .select2-search__field {
+  height: calc(2.25rem + 2px);
+  padding: 0.375rem 0.75rem;
+}
+
+body.modal-open .modal.fade .modal-dialog {
+  -webkit-transform: translate(0, 0) scale(0.9);
+          transform: translate(0, 0) scale(0.9);
+}
+
+body.modal-open .modal.show .modal-dialog {
+  -webkit-transform: translate(0, 0) scale(1);
+          transform: translate(0, 0) scale(1);
+}
+
+.modal .modal-dialog .modal-content {
+  border: none;
+  box-shadow: none;
+  border-radius: 0.5rem;
+}
+
+.modal .modal-dialog .modal-content .modal-header {
+  height: 60px;
+  padding: 0 20px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  background-color: #ebebeb;
+  border-bottom: none;
+}
+
+.modal .modal-dialog .modal-content .modal-header .modal-title {
+  font-size: 17px;
+  font-weight: 600;
+}
+
+.modal .modal-dialog .modal-content .modal-header button.close {
+  background-color: white;
+  text-shadow: none;
+  opacity: 1;
+  margin: 0;
+  font-size: 23px;
+  padding: 0;
+  width: 30px;
+  height: 30px;
+  display: -webkit-box;
+  display: flex;
+  border-radius: 50%;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.modal .modal-dialog .modal-content .modal-header button.close:hover {
+  color: #646464;
+}
+
+.modal .modal-dialog .modal-content .modal-header button.close > * {
+  font-size: initial;
+}
+
+.modal .modal-dialog .modal-content .modal-body {
+  padding: 1.5rem;
+}
+
+.modal .modal-dialog .modal-content .modal-footer {
+  height: 60px;
+}
+
+.wickedpicker {
+  border: none;
+  box-shadow: 0 2px 15px 0 rgba(69, 65, 78, 0.18);
+  width: auto;
+  border-radius: 0;
+  height: auto;
+}
+
+.wickedpicker .wickedpicker__controls {
+  padding: 10px 15px;
+}
+
+.wickedpicker .wickedpicker__controls__control {
+  width: 40px;
+}
+
+.wickedpicker .wickedpicker__controls__control .wickedpicker__controls__control-up:before {
+  content: "\F077";
+  font: normal normal normal 14px/1 FontAwesome;
+}
+
+.wickedpicker .wickedpicker__controls__control .wickedpicker__controls__control-down:after {
+  content: "\F078";
+  font: normal normal normal 14px/1 FontAwesome;
+}
+
+.wickedpicker .wickedpicker__controls__control .hover-state {
+  color: #0081ff;
+}
+
+.wickedpicker .wickedpicker__title {
+  display: none;
+}
+
+.clearable-picker {
+  position: relative;
+}
+
+.clearable-picker [data-clear-picker] {
+  cursor: pointer;
+  font-size: 20px;
+  position: absolute;
+  right: 10px;
+  top: 50%;
+  height: 17px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  width: 17px;
+  color: #646464;
+  margin-top: -8.5px;
+  bottom: 0;
+}
+
+.avatar {
+  display: inline-block;
+  margin-bottom: 0;
+  height: 3rem;
+  width: 3rem;
+  border-radius: 50%;
+}
+
+.avatar .avatar-title {
+  background: #d7d7d7;
+  width: 100%;
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  text-transform: uppercase;
+  font-size: 19px;
+}
+
+.avatar > a,
+.header form .input-group .input-group-append .avatar > button.btn {
+  width: 100%;
+  height: 100%;
+  display: block;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+  color: #0081ff;
+}
+
+.avatar > a:hover,
+.header form .input-group .input-group-append .avatar > button.btn:hover,
+.avatar > a:focus,
+.header form .input-group .input-group-append .avatar > button.btn:focus {
+  color: #646464;
+}
+
+.avatar > a > img,
+.header form .input-group .input-group-append .avatar > button.btn > img,
+.avatar > img {
+  width: 100%;
+  height: 100%;
+  -o-object-fit: cover;
+     object-fit: cover;
+}
+
+.avatar.avatar-sm {
+  height: 2rem;
+  width: 2rem;
+}
+
+.avatar.avatar-sm .avatar-title {
+  font-size: 14px;
+}
+
+.avatar.avatar-sm.avatar-state-primary:before,
+.avatar.avatar-sm.avatar-state-success:before,
+.avatar.avatar-sm.avatar-state-danger:before,
+.avatar.avatar-sm.avatar-state-warning:before,
+.avatar.avatar-sm.avatar-state-info:before,
+.avatar.avatar-sm.avatar-state-secondary:before,
+.avatar.avatar-sm.avatar-state-light:before,
+.avatar.avatar-sm.avatar-state-dark:before {
+  width: 0.8rem;
+  height: 0.8rem;
+}
+
+.avatar.avatar-lg {
+  height: 4.5rem;
+  width: 4.5rem;
+}
+
+.avatar.avatar-lg .avatar-title {
+  font-size: 29px;
+}
+
+.avatar.avatar-lg.avatar-state-primary:before,
+.avatar.avatar-lg.avatar-state-success:before,
+.avatar.avatar-lg.avatar-state-danger:before,
+.avatar.avatar-lg.avatar-state-warning:before,
+.avatar.avatar-lg.avatar-state-info:before,
+.avatar.avatar-lg.avatar-state-secondary:before,
+.avatar.avatar-lg.avatar-state-light:before,
+.avatar.avatar-lg.avatar-state-dark:before {
+  width: 1.3rem;
+  height: 1.3rem;
+  right: 4px;
+}
+
+.avatar.avatar-xl {
+  height: 5.8rem;
+  width: 5.8rem;
+}
+
+.avatar.avatar-xl .avatar-title {
+  font-size: 39px;
+}
+
+.avatar.avatar-xl.avatar-state-primary:before,
+.avatar.avatar-xl.avatar-state-success:before,
+.avatar.avatar-xl.avatar-state-danger:before,
+.avatar.avatar-xl.avatar-state-warning:before,
+.avatar.avatar-xl.avatar-state-info:before,
+.avatar.avatar-xl.avatar-state-secondary:before,
+.avatar.avatar-xl.avatar-state-light:before,
+.avatar.avatar-xl.avatar-state-dark:before {
+  width: 1.6rem;
+  height: 1.6rem;
+  top: 3px;
+  right: 3px;
+}
+
+.avatar.avatar-state-primary,
+.avatar.avatar-state-success,
+.avatar.avatar-state-danger,
+.avatar.avatar-state-warning,
+.avatar.avatar-state-info,
+.avatar.avatar-state-secondary,
+.avatar.avatar-state-light,
+.avatar.avatar-state-dark {
+  position: relative;
+}
+
+.avatar.avatar-state-primary:before,
+.avatar.avatar-state-success:before,
+.avatar.avatar-state-danger:before,
+.avatar.avatar-state-warning:before,
+.avatar.avatar-state-info:before,
+.avatar.avatar-state-secondary:before,
+.avatar.avatar-state-light:before,
+.avatar.avatar-state-dark:before {
+  content: "";
+  position: absolute;
+  display: block;
+  width: 1rem;
+  height: 1rem;
+  border-radius: 50%;
+  top: 0px;
+  right: 0px;
+  border: 3px solid white;
+}
+
+.avatar.avatar-state-primary:before {
+  background: #0081ff;
+}
+
+.avatar.avatar-state-success:before {
+  background: #28c76f;
+}
+
+.avatar.avatar-state-danger:before {
+  background: #ea5455;
+}
+
+.avatar.avatar-state-warning:before {
+  background: #ff9f43;
+}
+
+.avatar.avatar-state-info:before {
+  background: #33b5e5;
+}
+
+.avatar.avatar-state-secondary:before {
+  background: #aa66cc;
+}
+
+.avatar.avatar-state-light:before {
+  background: #afb8bd;
+}
+
+.avatar.avatar-state-dark:before {
+  background: #293134;
+}
+
+.avatar-group {
+  display: -webkit-inline-box;
+  display: inline-flex;
+}
+
+.avatar-group .avatar {
+  margin-right: -1rem;
+  border: 2px solid white;
+}
+
+.avatar-group .avatar:last-child {
+  margin-right: 0;
+}
+
+.avatar-group .avatar:hover {
+  position: relative;
+  z-index: 1;
+}
+
+.dropzone {
+  border-width: 1px;
+  border-color: #0081ff;
+}
+
+body.form-membership {
+  background-attachment: fixed;
+  background-size: cover;
+  padding: 3rem 0;
+}
+
+body.form-membership .form-wrapper {
+  background-color: white;
+  box-shadow: 0 3px 10px rgba(62, 85, 120, 0.045);
+  padding: 3rem;
+  border-radius: 0.5rem;
+  width: 430px;
+  margin: 50px auto;
+  text-align: center;
+}
+
+body.form-membership .form-wrapper #logo {
+  margin: 1rem 0 3rem;
+}
+
+body.form-membership .form-wrapper #logo img:not(.logo) {
+  display: none;
+}
+
+body.form-membership .form-wrapper h5 {
+  text-align: center;
+  margin-bottom: 2rem;
+}
+
+body.form-membership .form-wrapper form .form-control,
+body.form-membership .form-wrapper form .swal-modal input.swal-content__input,
+.swal-modal body.form-membership .form-wrapper form input.swal-content__input {
+  margin-bottom: 1.5rem;
+}
+
+body.form-membership .form-wrapper hr {
+  margin: 2rem 0;
+}
+
+.user-page {
+  height: 100vh;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  overflow: auto;
+}
+
+.user-page .card,
+.user-page .app-block .app-content .app-action,
+.app-block .app-content .user-page .app-action,
+.user-page .chat-block {
+  width: 500px;
+}
+
+.user-page .card .card-body,
+.user-page .app-block .app-content .app-action .card-body,
+.app-block .app-content .user-page .app-action .card-body,
+.user-page .chat-block .card-body {
+  padding: 50px;
+}
+
+.chat-app {
+  overflow: hidden;
+  padding-bottom: 30px;
+}
+
+.chat-app .content-footer {
+  display: none;
+}
+
+.chat-app.horizontal-navigation .chat-block {
+  height: calc(100vh - 190px);
+}
+
+.chat-app.horizontal-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-top: 160px;
+}
+
+.chat-block {
+  height: calc(100vh - 135px);
+  border-radius: 0.5rem;
+  overflow: hidden;
+  margin-bottom: 0;
+}
+
+.chat-block .chat-sidebar {
+  padding: 1.5rem;
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  background-color: #f8fafb;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-header form {
+  margin: 1.5rem 0;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-content {
+  -webkit-box-flex: 1;
+          flex: 1;
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  overflow: auto;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item {
+  background: white;
+  border-radius: 0.5rem;
+  border: 1px solid transparent;
+  margin-bottom: 1rem;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item.active {
+  color: black;
+  border-color: #0081ff;
+}
+
+.chat-block .chat-content {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  height: 100%;
+}
+
+.chat-block .chat-content .mobile-chat-close-btn {
+  display: none;
+}
+
+.chat-block .chat-content .chat-header {
+  padding: 1.5rem;
+}
+
+.chat-block .chat-content .messages {
+  padding: 1.5rem;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  -webkit-box-align: start;
+          align-items: flex-start;
+  -webkit-box-flex: 1;
+          flex: 1;
+  overflow-x: hidden;
+}
+
+.chat-block .chat-content .messages .message-item {
+  margin-bottom: 20px;
+  padding-left: 10px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  position: relative;
+}
+
+.chat-block .chat-content .messages .message-item .time {
+  margin-left: 1rem;
+}
+
+.chat-block .chat-content .messages .message-item img {
+  max-width: 30%;
+  border-radius: 0.5rem;
+}
+
+.chat-block .chat-content .messages .message-item:not(.message-media):not(.message-item-divider):before {
+  content: "";
+  border: 10px solid transparent;
+  border-right-color: #f0f0f0;
+  position: absolute;
+  top: 8px;
+  left: -10px;
+  z-index: 1;
+}
+
+.chat-block .chat-content .messages .message-item .message-item-content {
+  max-width: 75%;
+  background-color: #f0f0f0;
+  padding: 7px 15px;
+  line-height: 1.5rem;
+  border-radius: 0.5rem;
+  position: relative;
+  z-index: 2;
+}
+
+.chat-block .chat-content .messages .message-item.me {
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: reverse;
+          flex-direction: row-reverse;
+  margin-left: auto;
+  padding-left: 0px;
+  padding-right: 10px;
+}
+
+.chat-block .chat-content .messages .message-item.me .time {
+  margin-left: 0;
+  margin-right: 1rem;
+}
+
+.chat-block .chat-content .messages .message-item.me:not(.message-item-divider):before {
+  left: auto;
+  right: -10px;
+  border-left-color: #0081ff;
+  border-right-color: transparent;
+}
+
+.chat-block .chat-content .messages .message-item.me .message-item-content {
+  background-color: #0081ff;
+  color: rgba(255, 255, 255, 0.9);
+}
+
+.chat-block .chat-content .messages .message-item.message-item-divider {
+  width: 100%;
+  display: -webkit-box;
+  display: flex;
+}
+
+.chat-block .chat-content .messages .message-item.message-item-divider span {
+  padding: 0 10px;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.chat-block .chat-content .messages .message-item.message-item-divider:before,
+.chat-block .chat-content .messages .message-item.message-item-divider:after {
+  content: "";
+  display: block;
+  height: 1px;
+  background-color: #f0f0f0;
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.chat-block .chat-content .chat-footer {
+  padding: 1.5rem;
+}
+
+.chat-block .chat-content .chat-footer .chat-footer-buttons button {
+  margin-left: 0.5rem;
+}
+
+.table:not(.table-bordered) thead th {
+  border-top: none;
+  border-bottom-width: 1px;
+  font-weight: 500;
+  text-transform: uppercase;
+  font-size: 11px;
+  letter-spacing: 0.5px;
+}
+
+.table:not(.table-bordered) td {
+  vertical-align: middle;
+  line-height: 1;
+  white-space: nowrap;
+}
+
+.table .dropdown-menu {
+  margin-top: 0;
+}
+
+.table.table-lg td {
+  padding: 1.3rem 0.75rem;
+}
+
+.table tr.tr-selected {
+  background-color: whitesmoke;
+}
+
+.table.table-striped tbody tr:nth-of-type(odd) {
+  background-color: rgba(0, 0, 0, 0.03);
+}
+
+.table-responsive-stack tr {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+  flex-direction: row;
+}
+
+.table-responsive-stack td,
+.table-responsive-stack th {
+  display: block;
+  -webkit-box-flex: 1;
+          flex: 1 1 auto;
+}
+
+.timeline .timeline-item {
+  padding-bottom: 20px;
+  position: relative;
+  display: -webkit-box;
+  display: flex;
+}
+
+.timeline .timeline-item > div:last-child {
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.timeline .timeline-item::before {
+  content: "";
+  display: block;
+  position: absolute;
+  width: 1px;
+  bottom: 0px;
+  top: 32px;
+  left: 15px;
+  background: #e1e1e1;
+}
+
+.timeline .timeline-item:last-child {
+  padding-bottom: 0;
+  bottom: 0;
+}
+
+.timeline .timeline-item:last-child::before {
+  display: none;
+}
+
+#external-events .fc-event {
+  border: none;
+  background: none;
+  color: #646464;
+  font-size: 14px;
+  cursor: move;
+}
+
+#external-events .fc-event i {
+  margin-right: 10px;
+}
+
+.fc .fc-center h2 {
+  font-weight: 400;
+  font-size: 19px;
+  color: #828282;
+}
+
+.fc .fc-event {
+  background: #0081ff;
+  color: white !important;
+  border: none;
+  border-radius: 0;
+  margin: 0 3px;
+  padding: 0px 4px;
+  font-size: 11px;
+  line-height: normal;
+}
+
+.fc .fc-event:hover {
+  background: #0151ac;
+}
+
+.fc .fc-event.bg-danger:hover {
+  background: #eb3030 !important;
+}
+
+.fc .fc-event.bg-success:hover {
+  background: #00b43d !important;
+}
+
+.fc .fc-event.bg-info:hover {
+  background: #1fa1d1 !important;
+}
+
+.fc .fc-event.bg-warning:hover {
+  background: #eba71f !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-danger:hover td {
+  background: #ea5455 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-danger .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-success:hover td {
+  background: #28c76f !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-success .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-info:hover td {
+  background: #33b5e5 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-info .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-warning:hover td {
+  background: #ff9f43 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-warning .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-primary:hover td {
+  background: #0081ff !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-primary .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-secondary:hover td {
+  background: #aa66cc !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-secondary .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-dark:hover td {
+  background: #293134 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-dark .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-state-default {
+  background-image: none;
+  border: none;
+  box-shadow: none;
+  text-shadow: none;
+}
+
+.fc .fc-state-default.fc-state-active {
+  background: #0081ff;
+  color: white;
+}
+
+.fc .fc-event-dot {
+  background: #cdcdcd !important;
+}
+
+.fc-toolbar .fc-state-active,
+.fc-toolbar .ui-state-active {
+  z-index: 2;
+}
+
+.list-group .list-group-item.list-group-item-primary {
+  background: #0081ff !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-primary-bright {
+  background: rgba(0, 129, 255, 0.3) !important;
+  color: #0081ff !important;
+}
+
+.list-group .list-group-item.list-group-item-secondary {
+  background: #aa66cc !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-secondary-bright {
+  background: rgba(170, 102, 204, 0.3) !important;
+  color: #aa66cc !important;
+}
+
+.list-group .list-group-item.list-group-item-success {
+  background: #28c76f !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-success-bright {
+  background: rgba(40, 199, 111, 0.3) !important;
+  color: #28c76f !important;
+}
+
+.list-group .list-group-item.list-group-item-danger {
+  background: #ea5455 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-danger-bright {
+  background: rgba(234, 84, 85, 0.3) !important;
+  color: #ea5455 !important;
+}
+
+.list-group .list-group-item.list-group-item-warning {
+  background: #ff9f43 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-warning-bright {
+  background: rgba(255, 159, 67, 0.3) !important;
+  color: #ff9f43 !important;
+}
+
+.list-group .list-group-item.list-group-item-info {
+  background: #33b5e5 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-info-bright {
+  background: rgba(51, 181, 229, 0.3) !important;
+  color: #33b5e5 !important;
+}
+
+.list-group .list-group-item.list-group-item-light {
+  background: #afb8bd !important;
+}
+
+.list-group .list-group-item.list-group-item-dark {
+  background: #293134 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-dark-bright {
+  background: #d4d5d8 !important;
+  color: #293134 !important;
+}
+
+.nav-pills .nav-link.active,
+.nav-pills .show > .nav-link {
+  background-color: #0081ff;
+}
+
+.toast-title {
+  font-weight: bold;
+}
+
+.toast-message {
+  -ms-word-wrap: break-word;
+  word-wrap: break-word;
+}
+
+.toast-message a,
+.toast-message .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .toast-message button.btn,
+.toast-message label {
+  color: #ffffff;
+}
+
+.toast-message a:hover,
+.toast-message .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .toast-message button.btn:hover {
+  color: #cccccc;
+  text-decoration: none;
+}
+
+.toast-close-button {
+  position: relative;
+  right: -0.3em;
+  top: -0.3em;
+  float: right;
+  font-size: 20px;
+  font-weight: bold;
+  color: #ffffff;
+  opacity: 0.8;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  filter: alpha(opacity=80);
+}
+
+.toast-close-button:hover,
+.toast-close-button:focus {
+  color: #000000;
+  text-decoration: none;
+  cursor: pointer;
+  opacity: 0.4;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
+  filter: alpha(opacity=40);
+}
+
+/*Additional properties for button version
+ iOS requires the button element instead of an anchor tag.
+ If you want the anchor version, it requires `href="#"`.*/
+
+button.toast-close-button {
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+  -webkit-appearance: none;
+}
+
+.toast-top-center {
+  top: 30px;
+  right: 0;
+  width: 100%;
+}
+
+.toast-bottom-center {
+  bottom: 0;
+  right: 0;
+  width: 100%;
+}
+
+.toast-top-full-width {
+  top: 30px;
+  right: 0;
+  width: 100%;
+}
+
+.toast-bottom-full-width {
+  bottom: 0;
+  right: 0;
+  width: 100%;
+}
+
+.toast-top-left {
+  top: 30px;
+  left: 33px;
+}
+
+.toast-top-right {
+  top: 33px;
+  right: 33px;
+}
+
+.toast-bottom-right {
+  right: 33px;
+  bottom: 33px;
+}
+
+.toast-bottom-left {
+  bottom: 33px;
+  left: 33px;
+}
+
+#toast-container {
+  position: fixed;
+  z-index: 999999;
+  pointer-events: none;
+  /*overrides*/
+}
+
+#toast-container * {
+  box-sizing: border-box;
+}
+
+#toast-container > div {
+  position: relative;
+  overflow: hidden;
+  margin: 0 0 6px;
+  padding: 15px 15px 15px 50px;
+  width: 300px;
+  border-radius: 0.25rem;
+  background-position: 15px center;
+  background-repeat: no-repeat;
+  color: #ffffff;
+  opacity: 1;
+}
+
+#toast-container > div:hover {
+  cursor: pointer;
+}
+
+#toast-container > .toast-info {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container > .toast-error {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container > .toast-success {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
+}
+
+#toast-container > .toast-warning {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container.toast-top-center > div,
+#toast-container.toast-bottom-center > div {
+  width: 300px;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+#toast-container.toast-top-full-width > div,
+#toast-container.toast-bottom-full-width > div {
+  width: 96%;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.toast {
+  background-color: #293134;
+  border: none;
+  box-shadow: none;
+}
+
+.toast-success {
+  background-color: #28c76f;
+}
+
+.toast-error {
+  background-color: #ea5455;
+}
+
+.toast-info {
+  background-color: #33b5e5;
+}
+
+.toast-warning {
+  background-color: #ff9f43;
+}
+
+.toast-progress {
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  height: 2px;
+  background-color: #000000;
+  opacity: 0.2;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=20);
+  filter: alpha(opacity=20);
+}
+
+/*Responsive Design*/
+
+@media all and (max-width: 240px) {
+  #toast-container > div {
+    padding: 8px 8px 8px 50px;
+    width: 11em;
+  }
+
+  #toast-container .toast-close-button {
+    right: -0.2em;
+    top: -0.2em;
+  }
+}
+
+@media all and (min-width: 241px) and (max-width: 480px) {
+  #toast-container > div {
+    padding: 8px 8px 8px 50px;
+    width: 18em;
+  }
+
+  #toast-container .toast-close-button {
+    right: -0.2em;
+    top: -0.2em;
+  }
+}
+
+@media all and (min-width: 481px) and (max-width: 768px) {
+  #toast-container > div {
+    padding: 15px 15px 15px 50px;
+    width: 25em;
+  }
+}
+
+.dd-handle {
+  font-weight: normal;
+}
+
+.dd-handle:hover {
+  color: #0081ff;
+}
+
+.dd3-content {
+  font-weight: normal;
+}
+
+.slick-next {
+  right: 5px;
+}
+
+.slick-prev {
+  left: 5px;
+}
+
+.slick-prev,
+.slick-next {
+  width: 30px;
+  height: 30px;
+  z-index: 1;
+}
+
+.slick-prev:before,
+.slick-next:before {
+  font-size: 30px;
+}
+
+.slick-slide-item > * {
+  padding: 10px;
+}
+
+.slick-center {
+  -webkit-transition: -webkit-transform 0.3s;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+  -webkit-transform: scale(1.2);
+          transform: scale(1.2);
+}
+
+/* the slides */
+
+.slick-slide {
+  margin: 0 10px;
+}
+
+/* the parent */
+
+.slick-list {
+  margin: 0 -10px;
+}
+
+.stretch-layout {
+  overflow: hidden;
+}
+
+.stretch-layout .app-block {
+  height: calc(100vh - 135px);
+}
+
+.stretch-layout .content-footer {
+  display: none;
+}
+
+.stretch-layout:not(.chat-app).right-navigation.small-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-left: 30px !important;
+  padding-right: 110px !important;
+}
+
+.stretch-layout.hidden-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-right: 30px !important;
+  padding-left: 30px !important;
+}
+
+.stretch-layout.horizontal-navigation .app-block {
+  height: calc(100vh - 190px);
+}
+
+.app-block .app-sidebar {
+  height: 100%;
+}
+
+.app-block .app-sidebar > .card,
+.app-block .app-content .app-sidebar > .app-action,
+.app-block .app-sidebar > .chat-block {
+  height: 100%;
+  margin-bottom: 0;
+}
+
+.app-block .app-sidebar > .card .card-body,
+.app-block .app-content .app-sidebar > .app-action .card-body,
+.app-block .app-sidebar > .chat-block .card-body {
+  -webkit-box-flex: 0;
+          flex: none;
+}
+
+.app-block .app-sidebar .app-sidebar-menu {
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.app-block .app-sidebar .app-sidebar-menu .list-group .list-group-item.active {
+  background: none;
+  color: #0081ff;
+}
+
+.app-block .app-sidebar-menu-button {
+  display: none;
+}
+
+.app-block .app-content {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  height: 100%;
+}
+
+.app-block .app-content .app-content-overlay {
+  display: none;
+  position: absolute;
+  right: 1rem;
+  border-radius: 8px;
+  left: 1rem;
+  top: 0;
+  bottom: 0;
+  background-color: rgba(0, 0, 0, 0.25);
+  z-index: 8;
+}
+
+.app-block .app-content .app-content-overlay.show {
+  display: block;
+}
+
+.app-block .app-content .app-action {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  padding: 1.5rem;
+}
+
+.app-block .app-content .app-action .action-left,
+.app-block .app-content .app-action .action-right {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.app-block .app-content .app-action .action-right {
+  margin-left: 1rem;
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+}
+
+.app-block .app-content .app-action .action-right form {
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.app-block .app-content .app-content-body {
+  margin-bottom: 0;
+  -webkit-box-flex: 1;
+          flex: 1;
+  padding: 0;
+  height: 100%;
+  position: static;
+  overflow: hidden;
+}
+
+.app-block .app-content .app-content-body .app-lists {
+  height: 100%;
+  overflow: auto;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item {
+  padding-top: 15px;
+  padding-bottom: 15px;
+  background: none;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item:hover {
+  cursor: pointer;
+  background-color: #fafafa;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active {
+  background-color: #ebebeb;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .avatar {
+  border-color: #ebebeb;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .app-list-title {
+  color: black;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active.task-list .app-list-title {
+  text-decoration: line-through;
+}
+
+.app-block .app-content .app-content-body .app-detail {
+  margin-bottom: 0;
+  position: absolute;
+  right: 0.9rem;
+  top: 0.5rem;
+  bottom: 0;
+  left: 0.9rem;
+  z-index: 2;
+  opacity: 0;
+  visibility: hidden;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+
+.app-block .app-content .app-content-body .app-detail.show {
+  opacity: 1;
+  visibility: visible;
+  top: 0;
+}
+
+.app-block .app-content .app-content-body .app-detail .card-header {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 1.5rem;
+  border-bottom: 1px solid #ebebeb;
+}
+
+.app-block .app-content .app-content-body .app-detail .card-header .app-detail-action-left {
+  display: -webkit-box;
+  display: flex;
+}
+
+.app-block .app-content .app-content-body .app-detail .card-header .app-detail-action-right {
+  margin-left: auto;
+}
+
+#compose .ql-toolbar.ql-snow,
+.app-block .ql-toolbar.ql-snow {
+  border: none;
+  padding: 0;
+}
+
+#compose .ql-editor,
+.app-block .ql-editor {
+  min-height: 70px;
+}
+
+.app-sortable-handle {
+  cursor: move;
+}
+
+.app-file-list {
+  border: 1px solid #ebebeb;
+}
+
+.app-file-list .app-file-icon {
+  background-color: #f5f5f5;
+  padding: 2rem;
+  text-align: center;
+  font-size: 2rem;
+  border-bottom: 1px solid #ebebeb;
+  border-top-right-radius: 8px;
+  border-top-left-radius: 8px;
+}
+
+.app-file-list:hover {
+  border-color: #d7d7d7;
+}
+
+body:not(.stretch-layout) .app-block .app-content .app-content-body {
+  overflow: visible;
+}
+
+.demo-icon-list {
+  height: 100px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  font-size: 25px;
+}
+
+@media (max-width: 768px) {
+  .theme-switcher {
+    display: none;
+  }
+}
+
+@media (min-width: 768px) {
+  .theme-switcher {
+    opacity: 0;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    position: fixed;
+    right: -250px;
+    top: 50%;
+    -webkit-transform: translate(0, -50%);
+            transform: translate(0, -50%);
+    -webkit-user-select: none;
+       -moz-user-select: none;
+        -ms-user-select: none;
+            user-select: none;
+    z-index: 9999;
+    -webkit-transition: right 0.3s;
+    transition: right 0.3s;
+  }
+
+  .theme-switcher.open {
+    right: 0;
+  }
+
+  .theme-switcher .theme-switcher-button {
+    background-color: #0081ff;
+    color: white;
+    padding: 12px 15px;
+    border-top-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    cursor: pointer;
+  }
+
+  .theme-switcher .theme-switcher-button i {
+    font-size: 22px;
+    -webkit-animation-name: spin;
+            animation-name: spin;
+    -webkit-animation-duration: 3000ms;
+            animation-duration: 3000ms;
+    -webkit-animation-iteration-count: infinite;
+            animation-iteration-count: infinite;
+    -webkit-animation-timing-function: linear;
+            animation-timing-function: linear;
+  }
+
+  .theme-switcher .theme-switcher-panel {
+    width: 250px;
+  }
+
+  .theme-switcher .theme-switcher-panel .card,
+  .theme-switcher .theme-switcher-panel .chat-block,
+  .theme-switcher .theme-switcher-panel .app-block .app-content .app-action,
+  .app-block .app-content .theme-switcher .theme-switcher-panel .app-action {
+    margin-bottom: 0;
+    border: 1px solid #0081ff;
+    border-right: none;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+
+@-webkit-keyframes spin {
+    from {
+      -webkit-transform: rotate(0deg);
+              transform: rotate(0deg);
+    }
+
+    to {
+      -webkit-transform: rotate(360deg);
+              transform: rotate(360deg);
+    }
+}
+
+@keyframes spin {
+    from {
+      -webkit-transform: rotate(0deg);
+              transform: rotate(0deg);
+    }
+
+    to {
+      -webkit-transform: rotate(360deg);
+              transform: rotate(360deg);
+    }
+}
+}
+
+@media (min-width: 1200px) {
+  body.boxed-layout {
+    background-color: white;
+  }
+
+  body.boxed-layout .layout-wrapper {
+    background-color: #f8fafb;
+    box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+    margin: 0 120px;
+  }
+
+  body.boxed-layout .layout-wrapper .header {
+    margin: 0 120px;
+  }
+
+  body.boxed-layout .layout-wrapper .navigation {
+    left: 120px;
+  }
+
+  body.boxed-layout.right-navigation .navigation {
+    left: auto;
+    right: 120px;
+  }
+
+  body.boxed-layout.horizontal-navigation .horizontal-navigation {
+    left: 120px;
+    right: 120px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation {
+    width: 80px;
+    -webkit-transition: width 0.3s;
+    transition: width 0.3s;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-tab {
+    border-right-color: transparent;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn {
+    padding: 12px 0;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li {
+    position: relative;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li:hover > a .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li:hover > button.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li:hover > button.btn .nav-link-icon {
+    stroke: #0081ff;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn {
+    border-radius: 4px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a span:not(.badge):not(.avatar-title),
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn span:not(.badge):not(.avatar-title),
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn span:not(.badge):not(.avatar-title) {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a .badge,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .badge,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn .badge {
+    position: absolute;
+    right: 20px;
+    top: 12px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+    margin: 0 !important;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul li.open > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn + ul li.open > a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn + ul li.open > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul li.open > button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn + ul li.open > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn + ul li.open > button.btn {
+    background: none;
+    color: #0081ff;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > ul {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li:not(.navigation-divider) {
+    padding: 0 15px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn {
+    display: block;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a .sub-menu-arrow,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn .sub-menu-arrow {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn {
+    padding-left: 53px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li button.btn {
+    padding-left: 65px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a.active,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.active.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.active.btn {
+    border-radius: 5px;
+    background-color: #0081ff;
+    position: static;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a.active .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.active.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.active.btn .nav-link-icon {
+    stroke: white;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover {
+    width: 320px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover .navigation-menu-tab {
+    border-right-color: #e6e6e6;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover .navigation-menu-body {
+    display: -webkit-box;
+    display: flex;
+    height: calc(100vh - 75px);
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a > span,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn > span,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn > span,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a .sub-menu-arrow,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn .sub-menu-arrow {
+    display: inherit !important;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn .nav-link-icon {
+    margin-right: 0.8rem !important;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li.open > ul {
+    display: block;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 110px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .content-footer {
+    margin-left: 80px;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .header .navigation-toggler {
+    display: block;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .navigation {
+    z-index: 1000;
+    left: -80%;
+    top: 0;
+    bottom: 0;
+    opacity: 0;
+    -webkit-transition: left 0.3s;
+    transition: left 0.3s;
+    position: fixed !important;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .navigation.open {
+    left: 0;
+    opacity: 1;
+  }
+
+  body.hidden-navigation:not(.small-navigation).right-navigation .navigation {
+    left: auto;
+    right: -80%;
+    -webkit-transition: right 0.3s;
+    transition: right 0.3s;
+  }
+
+  body.hidden-navigation:not(.small-navigation).right-navigation .navigation.open {
+    right: 0;
+    opacity: 1;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .content-footer {
+    margin-left: 0;
+  }
+
+  body.right-navigation .navigation {
+    left: auto;
+    right: 0;
+    -webkit-box-orient: horizontal;
+    -webkit-box-direction: reverse;
+            flex-direction: row-reverse;
+  }
+
+  body.right-navigation .navigation .navigation-menu-tab {
+    border-right: none;
+    border-left: 1px solid #e6e6e6;
+  }
+
+  body.right-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+    padding-right: 350px;
+  }
+
+  body.right-navigation .content-footer {
+    margin-left: 0;
+    margin-right: 320px;
+  }
+
+  body.right-navigation.small-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px !important;
+    padding-right: 110px;
+  }
+
+  body.right-navigation.small-navigation .content-footer {
+    margin-left: 0 !important;
+    margin-right: 80px;
+  }
+
+  body.right-navigation.hidden-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px !important;
+    padding-right: 30px;
+  }
+
+  body.horizontal-navigation .header {
+    box-shadow: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation {
+    border-top: 1px solid #e6e6e6;
+    box-shadow: 0px 5px 10px -10px rgba(0, 0, 0, 0.4);
+    position: fixed;
+    top: 75px;
+    background-color: white;
+    height: 55px;
+    right: 0;
+    left: 0;
+    padding: 0 30px;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    z-index: 997;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul {
+    height: 100%;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li {
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    margin-right: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn {
+    border-radius: 100px;
+    text-transform: uppercase;
+    letter-spacing: 1px;
+    font-size: 12px;
+    padding: 10px 15px !important;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a .sub-menu-arrow,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn .sub-menu-arrow {
+    display: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a .badge,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn .badge,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn .badge {
+    margin-left: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a + ul,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn + ul {
+    border-top: 1px solid #e6e6e6;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li:hover > a,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li:hover > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li:hover > button.btn {
+    color: #0081ff !important;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li {
+    position: relative;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn {
+    padding: 10px 25px;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-pack: justify;
+            justify-content: space-between;
+    -webkit-box-align: center;
+            align-items: center;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .nav-icon,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .nav-icon,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .nav-icon {
+    margin-right: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li.open > a,
+  body.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li:hover > ul {
+    display: block;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul {
+    display: none;
+    position: absolute;
+    top: 54px;
+    width: 220px;
+    background-color: white;
+    padding: 10px 0;
+    border-bottom-left-radius: 0.25rem;
+    border-bottom-right-radius: 0.25rem;
+    box-shadow: 0px 5px 9px -5px rgba(0, 0, 0, 0.3);
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li {
+    position: relative;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li:hover > a,
+  body.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li:hover > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li:hover > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    color: black;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li a.active,
+  body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.active.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li.open > a,
+  body.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li.open > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul {
+    left: 220px;
+    top: -12px;
+    border-left: 1px solid #f2f2f2;
+    box-shadow: 3px 0px 10px -5px rgba(0, 0, 0, 0.3);
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul:before {
+    display: none;
+  }
+
+  body.horizontal-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+    padding-top: 160px;
+  }
+
+  body.horizontal-navigation .content-footer {
+    margin-left: 0;
+  }
+
+  body.sticky-header .header {
+    position: -webkit-sticky !important;
+    position: sticky !important;
+    top: 0;
+  }
+}
+
+@media (max-width: 1200px) {
+  body.horizontal-navigation .horizontal-navigation {
+    position: fixed;
+    left: 0;
+    top: 0;
+    bottom: 0;
+    height: auto;
+    width: 320px;
+    background-color: white;
+    z-index: 1000;
+    overflow: auto;
+    padding: 15px 0;
+    display: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn {
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    padding: 15px 30px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .nav-icon,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .nav-icon,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .nav-icon {
+    margin-right: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a.active,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.active.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .badge,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .badge,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .badge,
+  body.horizontal-navigation .horizontal-navigation ul li a .sub-menu-arrow,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .sub-menu-arrow {
+    margin-left: auto;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .sub-menu-arrow,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .sub-menu-arrow {
+    -webkit-transform: rotate(90deg);
+            transform: rotate(90deg);
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul {
+    display: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    padding-left: 60px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li ul li button.btn {
+    padding-left: 80px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li button.btn {
+    padding-left: 100px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li.open > a,
+  body.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li.open > ul {
+    display: block !important;
+  }
+
+  body.horizontal-navigation .horizontal-navigation.open {
+    display: block;
+  }
+}
+
+body.semi-dark:not(.dark) .nicescroll-cursors {
+  background-color: rgba(255, 255, 255, 0.3) !important;
+}
+
+body.semi-dark:not(.dark) .navigation {
+  background-color: #313852;
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a:not(.active):hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):hover,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn:not(.active):hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a:not(.active):focus,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):focus,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn:not(.active):focus {
+  color: #0081ff;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body .avatar {
+  border-color: #313852;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body .list-group-item {
+  background: none;
+  border-color: #454c66;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo {
+  border-color: #454c66;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo img {
+  display: block;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo img:not(.logo-light) {
+  display: none;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.navigation-divider {
+  color: #dbdbdb;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a .nav-link-icon,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+  stroke: rgba(199, 199, 199, 0.5);
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.active.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a.active:after,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn:after,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.active.btn:after {
+  background-color: #0081ff;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a:hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn:hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a:focus,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn:focus {
+  background: none;
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li a.active,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn + ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li button.active.btn,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn + ul li button.active.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.open > a,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.open > button.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .dropdown-divider {
+  color: #0081ff;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li ul {
+  background-color: #313852 !important;
+  border-left-color: #454c66 !important;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li ul ul {
+  border-left-color: #454c66 !important;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.navigation-divider:after {
+  background-color: #454c66 !important;
+}
+
+body.semi-dark:not(.dark) .navigation .avatar:before {
+  border-color: #2c2f42;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation {
+  background-color: #313852;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li > a + ul,
+body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li > button.btn + ul {
+  border-top: 1px solid #444e72;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li > a + ul ul,
+body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul ul,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li > button.btn + ul ul {
+  border-left: 1px solid #444e72;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li.open > a,
+body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li.open > button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li.open > button.btn {
+  color: #1a8eff;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li a,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li a.active,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.active.btn {
+  color: #1a8eff;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li a:not(.active):hover,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:not(.active):hover,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn:not(.active):hover,
+body.semi-dark:not(.dark) .horizontal-navigation ul li a:not(.active):focus,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:not(.active):focus,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn:not(.active):focus {
+  color: #1a8eff;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li ul {
+  background-color: #313852;
+}
+
+body.semi-dark:not(.dark).right-navigation .navigation .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+
+body.semi-dark:not(.dark).small-navigation .navigation:hover .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+
+body.semi-dark:not(.dark).small-navigation.right-navigation .navigation:hover .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+
+body.header-dark:not(.dark) .header {
+  background-color: #313852;
+  color: #c7c7c7;
+  border-bottom-color: #444e72;
+}
+
+body.header-dark:not(.dark) .header .header-logo a img,
+body.header-dark:not(.dark) .header .header-logo form .input-group .input-group-append button.btn img,
+body.header-dark:not(.dark) .header form .input-group .input-group-append .header-logo button.btn img {
+  display: block;
+}
+
+body.header-dark:not(.dark) .header .header-logo a img:not(.logo-light),
+body.header-dark:not(.dark) .header .header-logo form .input-group .input-group-append button.btn img:not(.logo-light),
+body.header-dark:not(.dark) .header form .input-group .input-group-append .header-logo button.btn img:not(.logo-light) {
+  display: none;
+}
+
+body.header-dark:not(.dark) .header .navigation-toggler a,
+body.header-dark:not(.dark) .header .navigation-toggler form .input-group .input-group-append button.btn,
+body.header-dark:not(.dark) .header form .input-group .input-group-append .navigation-toggler button.btn {
+  color: #c7c7c7;
+}
+
+body.header-dark:not(.dark) .header .navigation-toggler a:hover,
+body.header-dark:not(.dark) .header .navigation-toggler form .input-group .input-group-append button.btn:hover,
+body.header-dark:not(.dark) .header form .input-group .input-group-append .navigation-toggler button.btn:hover {
+  color: white;
+}
+
+body.header-dark:not(.dark) .header a.nav-link,
+body.header-dark:not(.dark) .header form .input-group .input-group-append button.nav-link.btn {
+  color: #c7c7c7;
+}
+
+body.header-dark:not(.dark) .header a.nav-link:hover,
+body.header-dark:not(.dark) .header form .input-group .input-group-append button.nav-link.btn:hover {
+  color: white;
+}
+
+body.header-dark:not(.dark) .header .dropdown-menu {
+  border-top: none !important;
+}
+
+*:focus {
+  outline: none;
+}
+
+.sticky {
+  position: -webkit-sticky !important;
+  position: sticky !important;
+  top: 0;
+}
+
+.lead {
+  line-height: 2.2rem;
+}
+
+.layout-wrapper {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  min-height: 100vh;
+}
+
+.layout-wrapper .content-wrapper {
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+}
+
+.layout-wrapper .content-wrapper .content-body {
+  width: 0;
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+}
+
+.layout-wrapper .content-wrapper .content-body .content {
+  -webkit-box-flex: 1;
+          flex: 1;
+  padding: 30px;
+  padding-top: 105px;
+  padding-left: 350px;
+  padding-bottom: 0;
+}
+
+svg.feather {
+  width: 20px;
+  height: 20px;
+}
+
+.demo-code-preview {
+  border: 1px solid #ebebeb;
+  padding: 20px 10px;
+  margin-top: 2rem;
+  position: relative;
+  background-color: white;
+  border-radius: 8px;
+}
+
+.demo-code-preview + * {
+  margin-top: 1.5rem;
+}
+
+.demo-code-preview:before {
+  content: attr(data-label);
+  display: block;
+  position: absolute;
+  top: -9px;
+  left: 20px;
+  letter-spacing: 1px;
+  background-color: inherit;
+  font-size: 11px;
+  padding: 0 5px;
+}
+
+.demo-code-preview pre {
+  overflow-x: hidden;
+  background: none;
+  padding-top: 0;
+  padding-bottom: 0;
+  max-height: 300px;
+}
+
+.demo-code-preview:hover pre {
+  overflow-x: auto;
+}
+
+code[class*=language-],
+pre[class*=language-] {
+  font-size: 0.93em;
+  margin: 0;
+}
+
+.text-divider {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.text-divider:after {
+  content: "";
+  display: block;
+  height: 1px;
+  background-color: #f0f0f0;
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.text-divider span {
+  margin-right: 1rem;
+}
+
+.row-xs {
+  margin-left: -0.5rem;
+  margin-right: -0.5rem;
+}
+
+.row-xs > div {
+  padding-left: 0.5rem;
+  padding-right: 0.5rem;
+}
+
+.overlay {
+  position: fixed;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: 999;
+  opacity: 0;
+  background: rgba(0, 0, 0, 0.3);
+  -webkit-transition: opacity 0.5s;
+  transition: opacity 0.5s;
+}
+
+.overlay.show {
+  opacity: 1;
+}
+
+.tooltip {
+  pointer-events: none;
+  font-family: inherit;
+  font-size: 0.835rem !important;
+}
+
+.tooltip .arrow {
+  display: none;
+}
+
+.tooltip .tooltip-inner {
+  background: rgba(0, 0, 0, 0.7);
+}
+
+.file-manager-items {
+  display: -webkit-box;
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.file-manager-items .file-manager-item {
+  margin-right: 20px;
+  margin-bottom: 20px;
+}
+
+.file-manager-items .file-manager-item span {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  width: 135px;
+  height: 115px;
+  font-size: 8.5em;
+  border: 1px solid #e1e1e1;
+  border-radius: 5px;
+  background-size: cover !important;
+  background-position: center !important;
+}
+
+.file-manager-items .file-manager-item.folder span {
+  color: #cea65b;
+}
+
+.file-manager-items .file-manager-item.image span:before {
+  display: none;
+}
+
+.small,
+.page-header .breadcrumb li.breadcrumb-item,
+.chat-block .chat-content .messages .message-item.message-item-divider span,
+small {
+  font-size: 12px;
+}
+
+.list-group .list-group-item {
+  padding: 0.75rem 1.5rem;
+}
+
+.list-group .list-group-item.active {
+  z-index: auto;
+  background: #0081ff;
+}
+
+.bring-forward {
+  position: relative;
+  z-index: 1;
+}
+
+.table-email-list table.table .dropdown [data-toggle=dropdown]:after {
+  display: none;
+}
+
+.table-email-list table.table .email-subject {
+  max-width: 80%;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.table-email-list table.table .email-subject a,
+.table-email-list table.table .email-subject .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .table-email-list table.table .email-subject button.btn {
+  display: inline-block;
+}
+
+.table-email-list table.table td,
+.table-email-list table.table .table th {
+  padding: 0.8rem;
+}
+
+.table-email-list a,
+.table-email-list .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .table-email-list button.btn {
+  color: #646464;
+}
+
+.table-email-list a:hover,
+.table-email-list .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .table-email-list button.btn:hover,
+.table-email-list a:focus,
+.table-email-list .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append .table-email-list button.btn:focus {
+  color: #0081ff;
+}
+
+.read-mail-body img {
+  max-width: 50%;
+}
+
+.bootstrap-tagsinput {
+  box-shadow: none;
+  width: 100%;
+  border: 1px solid #ced4da;
+  min-height: calc(2.25rem + 2px);
+}
+
+.bootstrap-tagsinput.focus {
+  border-color: #3383de;
+}
+
+.bootstrap-tagsinput .tag {
+  display: -webkit-inline-box;
+  display: inline-flex;
+  color: black;
+  border-radius: 3px;
+  font-size: 13px;
+  padding: 0 8px;
+  margin: 2px 1px;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  -webkit-box-align: center;
+          align-items: center;
+  background: #e1e1e1;
+}
+
+.list-group .list-group-item.active {
+  background: #0081ff;
+  border-color: transparent;
+}
+
+.list-group-flush .list-group-item:first-child {
+  border-top: 0;
+}
+
+.badge {
+  font-weight: 500;
+}
+
+.nav-pills .nav-link.active {
+  background: #0081ff;
+}
+
+.nav-tabs .nav-link.active {
+  color: #0081ff;
+}
+
+.text-muted,
+.chat-block .chat-content .messages .message-item.message-item-divider span,
+.demo-code-preview:before {
+  color: #a7abc3 !important;
+}
+
+.min-width-0 {
+  min-width: 0;
+}
+
+.list-group-item {
+  border-color: #e6e6e6;
+}
+
+.jqstooltip {
+  box-sizing: content-box;
+}
+
+.hide-show-toggler .hide-show-toggler-item {
+  display: none;
+}
+
+.hide-show-toggler:hover .hide-show-toggler-item,
+.hide-show-toggler:focus .hide-show-toggler-item {
+  display: block;
+}
+
+.tooltip {
+  font-size: 14px;
+}
+
+.jqvmap-zoomin,
+.jqvmap-zoomout {
+  box-sizing: initial;
+}
+
+.apexcharts-canvas {
+  margin: auto;
+}
+
+[data-backround-image] {
+  position: relative;
+  background-size: cover !important;
+  background-position: center !important;
+}
+
+[data-backround-image]:after {
+  content: "";
+  display: block;
+  background: rgba(255, 255, 255, 0.6);
+  position: absolute;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+}
+
+[data-backround-image] > * {
+  position: relative;
+  z-index: 1;
+}
+
+.dropdown-menu [data-backround-image]:after {
+  border-radius: 0;
+}
+
+.jqvmap-region {
+  fill: rgba(170, 102, 204, 0.3);
+}
+
+.jqvmap-region:hover {
+  fill: #aa66cc;
+}
+
+.a-0 {
+  top: 0px;
+  right: 0px;
+  bottom: 0px;
+  left: 0px;
+}
+
+.font-weight-800 {
+  font-weight: 800;
+}
+
+.circle canvas {
+  vertical-align: top;
+}
+
+.todo-item {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  margin-bottom: 10px;
+}
+
+.todo-item input[type=checkbox]:checked + label {
+  text-decoration: line-through;
+  color: #00961f;
+}
+
+.border-radius-1 {
+  border-radius: 5px;
+}
+
+.rounded {
+  border-radius: 0.5rem !important;
+}
+
+.nav-tabs .nav-link {
+  border-top-left-radius: 0.5rem;
+  border-top-right-radius: 0.5rem;
+}
+
+.nav-pills .nav-link {
+  border-radius: 0.5rem;
+}
+
+.apexcharts-legend.position-top.center {
+  -webkit-box-pack: end !important;
+          justify-content: flex-end !important;
+}
+
+.image-hover {
+  position: relative;
+}
+
+.image-hover .image-hover-body {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: end;
+          align-items: flex-end;
+  opacity: 0;
+  visibility: hidden;
+  position: absolute;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, 0.5);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  color: white;
+  padding: 20px 30px;
+}
+
+.image-hover:hover .image-hover-body {
+  opacity: 1;
+  visibility: visible;
+}
+
+.nav-analiytics-style .nav-link {
+  padding: 0.5rem 1.5rem;
+}
+
+.daterangepicker {
+  font-family: "Inter";
+}
+
+.header {
+  background-color: white;
+  z-index: 999;
+  display: -webkit-box;
+  display: flex;
+  height: 75px;
+  box-shadow: 0px 5px 10px -10px rgba(0, 0, 0, 0.4);
+  position: fixed;
+  right: 0;
+  left: 0;
+  top: 0;
+}
+
+.header .avatar {
+  border-color: transparent;
+}
+
+.header .avatar.avatar-state-success:before {
+  border-color: #0081ff;
+}
+
+.header .header-left {
+  width: 320px;
+  padding-left: 30px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.header .header-left .navigation-toggler {
+  display: none;
+  margin-right: 15px;
+}
+
+.header .header-left .navigation-toggler a,
+.header .header-left .navigation-toggler form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .header-left .navigation-toggler button.btn {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.header .header-left .navigation-toggler a svg,
+.header .header-left .navigation-toggler form .input-group .input-group-append button.btn svg,
+.header form .input-group .input-group-append .header-left .navigation-toggler button.btn svg {
+  height: 30px;
+  width: 30px;
+}
+
+.header .header-logo a,
+.header .header-logo form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .header-logo button.btn {
+  height: 75px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.header .header-logo a img:not(.logo),
+.header .header-logo form .input-group .input-group-append button.btn img:not(.logo),
+.header form .input-group .input-group-append .header-logo button.btn img:not(.logo) {
+  display: none;
+}
+
+.header .header-body {
+  padding: 0 30px;
+  position: relative;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-flex: 1;
+          flex: auto;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+}
+
+.header .header-body .page-title h1,
+.header .header-body .page-title h2,
+.header .header-body .page-title h3,
+.header .header-body .page-title h4,
+.header .header-body .page-title h5,
+.header .header-body .page-title h6 {
+  margin-bottom: 0;
+  line-height: inherit;
+}
+
+.header form .input-group {
+  position: relative;
+}
+
+.header form .input-group .form-control,
+.header form .input-group .swal-modal input.swal-content__input,
+.swal-modal .header form .input-group input.swal-content__input {
+  border: none;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+
+.header form .input-group .form-control:focus,
+.header form .input-group .swal-modal input.swal-content__input:focus,
+.swal-modal .header form .input-group input.swal-content__input:focus {
+  background-color: rgba(255, 255, 255, 0.2);
+}
+
+.header form .input-group .input-group-append {
+  position: absolute;
+  right: 0;
+}
+
+.header form .input-group .input-group-append button.btn {
+  position: relative;
+  z-index: 9;
+  border-top-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  background-color: inherit;
+  border: none;
+}
+
+.header form .input-group .input-group-append button.btn:hover {
+  opacity: 0.7;
+}
+
+.header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append button.btn:active,
+.header form .input-group .input-group-append button.btn:hover {
+  background-color: inherit;
+  box-shadow: none !important;
+}
+
+.header .header-toggler {
+  display: none;
+}
+
+.header [data-toggle=fullscreen] .minimize {
+  display: none;
+}
+
+.header .active-fullscreen .minimize {
+  display: block;
+}
+
+.header .active-fullscreen .maximize {
+  display: none;
+}
+
+.header ul.navbar-nav {
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+          flex-direction: row;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn {
+  line-height: 100%;
+  padding: 10px 15px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link.nav-link-notify,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.nav-link-notify.btn,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.nav-link-notify.btn {
+  position: relative;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link.nav-link-notify:before,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.nav-link-notify.btn:before,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.nav-link-notify.btn:before {
+  content: "";
+  position: absolute;
+  width: 6px;
+  height: 6px;
+  right: 0;
+  border-radius: 50%;
+  top: 3px;
+  background: #ea5455;
+  -webkit-animation: notify-pulse 1s infinite;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link:hover,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn:hover,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn:hover,
+.header ul.navbar-nav li.nav-item a.nav-link:focus,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn:focus,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn:focus {
+  outline: none;
+}
+
+.header ul.navbar-nav + form.search {
+  margin-left: 1.5rem;
+}
+
+.header .dropdown-menu {
+  position: absolute;
+}
+
+@-webkit-keyframes notify-pulse {
+  0% {
+    box-shadow: 0 0 0 0px rgba(234, 84, 85, 0.7);
+  }
+
+  100% {
+    box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
+  }
+}
+
+@keyframes notify-pulse {
+  0% {
+    box-shadow: 0 0 0 0px rgba(234, 84, 85, 0.7);
+  }
+
+  100% {
+    box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
+  }
+}
+
+.navigation {
+  background-color: white;
+  z-index: 998;
+  width: 320px;
+  box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+  position: fixed;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+          flex-direction: row;
+  left: 0;
+  bottom: 0;
+  top: 75px;
+}
+
+.navigation .navigation-menu-tab {
+  border-right: 1px solid #e6e6e6;
+  width: 80px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  margin-right: 0;
+  padding: 10px;
+}
+
+.navigation .navigation-menu-tab .avatar {
+  border: none;
+}
+
+.navigation .navigation-menu-tab ul li {
+  margin-bottom: 5px;
+}
+
+.navigation .navigation-menu-tab ul li a,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn {
+  display: -webkit-box;
+  display: flex;
+  height: 50px;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  border-radius: 0.5rem;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+
+.navigation .navigation-menu-tab ul li a:hover,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn:hover {
+  color: #0081ff;
+}
+
+.navigation .navigation-menu-tab ul li a.active,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+  background-color: #0081ff;
+  box-shadow: 0px 5px 20px -14px #0081ff;
+}
+
+.navigation .navigation-menu-tab ul li a svg,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn svg,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn svg {
+  width: 23px;
+  height: 23px;
+}
+
+.navigation .navigation-menu-body {
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  overflow: auto;
+}
+
+.navigation .navigation-menu-body .navigation-menu-group > div {
+  display: none;
+}
+
+.navigation .navigation-menu-body .navigation-menu-group > div.open {
+  display: block;
+}
+
+.navigation .navigation-menu-body ul li.navigation-divider {
+  padding: 10px 30px;
+  text-transform: uppercase;
+  font-size: 12px;
+  letter-spacing: 0.5px;
+  margin-top: 10px;
+  margin-bottom: 10px;
+  color: #a7abc3;
+}
+
+.navigation .navigation-menu-body ul li > a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 10px 30px;
+  color: #505050;
+  font-size: 14px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+
+.navigation .navigation-menu-body ul li > a .nav-link-icon,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .nav-link-icon,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .nav-link-icon {
+  margin-right: 0.8rem;
+  stroke: rgba(0, 0, 0, 0.3);
+  -webkit-transition: stroke 0.3s;
+  transition: stroke 0.3s;
+  width: 20px;
+  height: 20px;
+}
+
+.navigation .navigation-menu-body ul li > a:hover,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn:hover,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn:hover {
+  color: #0081ff;
+}
+
+.navigation .navigation-menu-body ul li > a:hover .nav-link-icon,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn:hover .nav-link-icon,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn:hover .nav-link-icon {
+  stroke: #0081ff;
+}
+
+.navigation .navigation-menu-body ul li > a.active,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.active.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.active.btn {
+  position: relative;
+  color: #0081ff;
+  font-weight: 600;
+  background: rgba(0, 129, 255, 0.15);
+  border-radius: 0.5rem;
+  margin: 0 1rem;
+}
+
+.navigation .navigation-menu-body ul li > a.active:before,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.active.btn:before,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.active.btn:before {
+  content: "";
+  display: block;
+  border: 6px solid transparent;
+  border-left-color: #0081ff;
+  margin-left: -12px;
+  margin-right: 5px;
+}
+
+.navigation .navigation-menu-body ul li > a .sub-menu-arrow,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .sub-menu-arrow,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .sub-menu-arrow {
+  margin-left: auto;
+  font-size: 14px;
+  -webkit-transition: -webkit-transform 0.3s;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+}
+
+.navigation .navigation-menu-body ul li > a .sub-menu-arrow.rotate-in,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .sub-menu-arrow.rotate-in,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .sub-menu-arrow.rotate-in {
+  -webkit-transform: rotate(540deg);
+          transform: rotate(540deg);
+}
+
+.navigation .navigation-menu-body ul li > a .badge,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .badge,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .badge {
+  margin-left: auto;
+  padding: 3px 7px;
+}
+
+.navigation .navigation-menu-body ul li > a + ul,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul {
+  display: none;
+}
+
+.navigation .navigation-menu-body ul li > a + ul li,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li {
+  margin: 0;
+}
+
+.navigation .navigation-menu-body ul li > a + ul li a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li a,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li a,
+.navigation .navigation-menu-body ul li > a + ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > a + ul li button.btn,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li button.btn {
+  padding-left: 50px;
+}
+
+.navigation .navigation-menu-body ul li > a + ul ul,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul {
+  border-left: none;
+}
+
+.navigation .navigation-menu-body ul li > a + ul ul li a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul li a,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul li a,
+.navigation .navigation-menu-body ul li > a + ul ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > a + ul ul li button.btn,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul li button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul li button.btn {
+  padding-left: 70px;
+}
+
+.navigation .navigation-menu-body ul li.open > a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > button.btn {
+  color: #0081ff;
+  font-weight: 600;
+}
+
+.navigation .navigation-menu-body ul li.open > a .nav-link-icon,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn .nav-link-icon,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > button.btn .nav-link-icon {
+  stroke: #0081ff;
+}
+
+.navigation .navigation-menu-body ul li.open > ul {
+  display: block;
+}
+
+.navigation .navigation-menu-body ul li.open > ul a.active,
+.navigation .navigation-menu-body ul li.open > ul .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > ul button.active.btn {
+  background-color: inherit;
+}
+
+footer.content-footer {
+  padding: 15px 30px;
+  background-color: white;
+  box-shadow: 0 0 10px -8px black;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  margin-left: 320px;
+}
+
+footer.content-footer * {
+  text-transform: uppercase;
+  letter-spacing: 0.5px;
+  font-size: 12px;
+}
+
+footer.content-footer .nav a,
+footer.content-footer .nav .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append footer.content-footer .nav button.btn {
+  padding: 5px 0;
+  margin-left: 15px;
+}
+
+footer.content-footer .nav a:hover,
+footer.content-footer .nav .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append footer.content-footer .nav button.btn:hover {
+  background: none !important;
+}
+
+.sidebar-group {
+  background-color: rgba(0, 0, 0, 0.35);
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  top: 0;
+  left: 0;
+  opacity: 0;
+  z-index: 1000;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  visibility: hidden;
+}
+
+.sidebar-group.show {
+  opacity: 1;
+  visibility: visible;
+}
+
+.sidebar-group .card,
+.sidebar-group .chat-block,
+.sidebar-group .app-block .app-content .app-action,
+.app-block .app-content .sidebar-group .app-action {
+  box-shadow: none;
+}
+
+.sidebar-group .sidebar {
+  width: 330px;
+  box-shadow: 0 0 25px rgba(0, 0, 0, 0.25);
+  background-color: white;
+  z-index: 1000;
+  -webkit-transition: all 0.2s;
+  transition: all 0.2s;
+  visibility: hidden;
+  opacity: 0;
+  margin-right: -100px;
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  top: 0;
+}
+
+.sidebar-group .sidebar.show {
+  visibility: visible;
+  opacity: 1;
+  margin-right: 0px;
+}
+
+.sidebar-group .sidebar > header {
+  background-color: #ebebeb;
+  padding: 1.5rem;
+  font-size: 16px;
+  line-height: 0;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.sidebar-group .sidebar > header i {
+  margin-right: 10px;
+}
+
+.sidebar-group .sidebar .tab-content {
+  height: calc(100% - 50px);
+}
+
+.sidebar-group .sidebar .tab-content .tab-pane.active {
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+}
+
+.sidebar-group .sidebar .tab-content .tab-pane.active .tab-pane-body {
+  -webkit-box-flex: 1;
+          flex: 1;
+  overflow: auto;
+}
+
+.sidebar-group .sidebar .tab-content .tab-pane.active .tab-pane-footer {
+  padding: 20px 0;
+}
+
+body.dark {
+  background-color: #182139;
+  color: #c7c7c7;
+}
+
+body.dark a:not(.btn):not(.link-1),
+body.dark .header form .input-group .input-group-append button.btn:not(.btn):not(.link-1),
+.header form .input-group .input-group-append body.dark button.btn:not(.btn):not(.link-1) {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark a:not(.btn):not(.link-1):hover,
+body.dark .header form .input-group .input-group-append button.btn:not(.btn):not(.link-1):hover,
+.header form .input-group .input-group-append body.dark button.btn:not(.btn):not(.link-1):hover {
+  color: rgba(255, 255, 255, 0.8);
+}
+
+body.dark .header {
+  background-color: #313852;
+  border-bottom-color: #454c66;
+}
+
+body.dark .header .header-logo {
+  border-bottom-color: #454c66;
+}
+
+body.dark .header .header-logo img {
+  display: block;
+}
+
+body.dark .header .header-logo img:not(.logo-light) {
+  display: none;
+}
+
+body.dark .header ul li a,
+body.dark .header ul li form .input-group .input-group-append button.btn,
+body.dark .header form .input-group .input-group-append ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.dark .header ul li a:hover,
+body.dark .header ul li form .input-group .input-group-append button.btn:hover,
+body.dark .header form .input-group .input-group-append ul li button.btn:hover,
+body.dark .header ul li a:focus,
+body.dark .header ul li form .input-group .input-group-append button.btn:focus,
+body.dark .header form .input-group .input-group-append ul li button.btn:focus {
+  color: white;
+}
+
+body.dark .header .avatar {
+  border-color: transparent;
+}
+
+body.dark .text-divider:after {
+  background-color: #454c66;
+}
+
+body.dark input::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input::-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input::placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark .border {
+  border-color: #454c66 !important;
+}
+
+body.dark .border-right {
+  border-left-color: #454c66 !important;
+  border-right-color: #454c66 !important;
+}
+
+body.dark .border-left {
+  border-left-color: #454c66 !important;
+  border-right-color: #454c66 !important;
+}
+
+body.dark .border-bottom {
+  border-bottom-color: #454c66 !important;
+}
+
+body.dark .border-top {
+  border-top-color: #454c66 !important;
+}
+
+body.dark .preloader {
+  background: #04071a;
+}
+
+body.dark .preloader .preloader-icon {
+  border-color: #313852;
+}
+
+body.dark .nav-tabs .nav-link:hover,
+body.dark .nav-tabs .nav-link:focus {
+  background-color: #313852 !important;
+  border-bottom-color: #313852 !important;
+}
+
+body.dark .nav-tabs .nav-link.active {
+  background: #313852 !important;
+  border-bottom-color: #313852 !important;
+}
+
+body.dark .sidebar header {
+  background-color: #2c2f42;
+}
+
+body.dark .navigation {
+  background-color: #313852;
+}
+
+body.dark .navigation .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+
+body.dark .navigation .navigation-menu-tab ul li a,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.dark .navigation .navigation-menu-tab ul li a.active,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-tab ul li a:not(.active):hover,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):hover,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn:not(.active):hover,
+body.dark .navigation .navigation-menu-tab ul li a:not(.active):focus,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):focus,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn:not(.active):focus {
+  color: #0081ff;
+}
+
+body.dark .navigation .navigation-menu-body ul li.navigation-divider {
+  color: #dbdbdb;
+}
+
+body.dark .navigation .navigation-menu-body ul li a,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.dark .navigation .navigation-menu-body ul li a .nav-link-icon,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+  stroke: rgba(199, 199, 199, 0.5);
+}
+
+body.dark .navigation .navigation-menu-body ul li a:hover,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn:hover,
+body.dark .navigation .navigation-menu-body ul li a:focus,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn:focus {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-body ul li a.active,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.active.btn {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-body ul li a + ul li a.active,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li a.active,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn + ul li a.active,
+body.dark .navigation .navigation-menu-body ul li a + ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li a + ul li button.active.btn,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn + ul li button.active.btn {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-body ul li.open > a,
+body.dark .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li.open > button.btn {
+  color: white;
+  background-color: #454c66;
+}
+
+body.dark .navigation .navigation-menu-body ul li .dropdown-divider {
+  color: #0081ff;
+}
+
+body.dark.boxed-layout {
+  background-color: #04071a;
+}
+
+body.dark.boxed-layout .layout-wrapper .content-wrapper .content-body .content {
+  background-color: #182139;
+}
+
+body.dark.right-navigation .navigation .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+
+body.dark.right-navigation.small-navigation .navigation .navigation-menu-tab {
+  border-left-color: transparent;
+}
+
+body.dark.right-navigation.small-navigation .navigation:hover .navigation-menu-tab {
+  border-left-color: #444e72 !important;
+}
+
+body.dark.small-navigation .navigation:hover .navigation-menu-tab {
+  border-right-color: #444e72 !important;
+}
+
+body.dark .custom-accordion .accordion-row .accordion-header .close {
+  text-shadow: none;
+  color: inherit;
+}
+
+body.dark #vmap_usa_en,
+body.dark #vmap_canada_en,
+body.dark #vmap_world_en {
+  background-color: inherit !important;
+}
+
+body.dark .table {
+  color: #c7c7c7;
+}
+
+body.dark .table .thead-light th {
+  background-color: #59607a;
+  color: inherit;
+}
+
+body.dark .table .thead-dark th,
+body.dark .table-dark,
+body.dark .table-dark th,
+body.dark .table-dark td {
+  background-color: #04071a;
+}
+
+body.dark .mark,
+body.dark mark {
+  background-color: #59607a;
+  color: inherit;
+}
+
+body.dark .page-header {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+body.dark .page-header .breadcrumb li a,
+body.dark .page-header .breadcrumb li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .page-header .breadcrumb li button.btn {
+  color: #b3b3b3;
+}
+
+body.dark .page-header .breadcrumb li a:hover,
+body.dark .page-header .breadcrumb li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append body.dark .page-header .breadcrumb li button.btn:hover {
+  color: #c7c7c7;
+}
+
+body.dark .breadcrumb li.breadcrumb-item.active {
+  color: #339aff;
+}
+
+body.dark [data-backround-image]:after {
+  background-color: rgba(0, 0, 0, 0.6);
+}
+
+body.dark .layout-alert {
+  border-color: #59607a;
+}
+
+body.dark .alert {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+body.dark .alert hr {
+  border-color: rgba(255, 255, 255, 0.1);
+}
+
+body.dark .alert .close:hover,
+body.dark .alert .close:focus {
+  opacity: 0.2;
+  color: inherit;
+}
+
+body.dark .form-control,
+body.dark .swal-modal input.swal-content__input,
+.swal-modal body.dark input.swal-content__input {
+  background: #313852;
+  border-color: #454c66 !important;
+  color: #c3c3c3;
+}
+
+body.dark .form-control:focus,
+body.dark .swal-modal input.swal-content__input:focus,
+.swal-modal body.dark input.swal-content__input:focus {
+  border-color: #0081ff !important;
+}
+
+body.dark .timeline .timeline-item::before {
+  background: #59607a;
+}
+
+body.dark .dropdown-menu {
+  border-top: 1px solid #454c66 !important;
+  color: #c7c7c7;
+}
+
+body.dark .custom-select {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+  color: inherit;
+}
+
+body.dark .custom-file-label {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+  color: inherit;
+}
+
+body.dark .custom-file-label::after {
+  background-color: #454c66;
+  color: inherit;
+}
+
+body.dark .custom-range::-webkit-slider-runnable-track {
+  background-color: #454c66;
+}
+
+body.dark .custom-control-label::before {
+  background-color: inherit;
+  border-color: #59607a;
+}
+
+body.dark .custom-control-input:disabled ~ .custom-control-label::before {
+  background-color: #454c66;
+}
+
+body.dark .form-control-plaintext {
+  color: inherit;
+}
+
+body.dark .wizard > .content {
+  background-color: #454c66;
+}
+
+body.dark .wizard > .steps .disabled a,
+body.dark .wizard > .steps .disabled .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .wizard > .steps .disabled button.btn,
+body.dark .wizard > .steps .disabled a:hover,
+body.dark .wizard > .steps .disabled a:active {
+  background-color: #454c66;
+}
+
+body.dark .wizard > .actions .disabled a,
+body.dark .wizard > .actions .disabled .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .wizard > .actions .disabled button.btn,
+body.dark .wizard > .actions .disabled a:hover,
+body.dark .wizard > .actions .disabled a:active {
+  background: #4f5670 !important;
+  border-color: #4f5670 !important;
+}
+
+body.dark .wizard > .actions .disabled a:not(:disabled):not(.disabled):focus,
+body.dark .wizard > .actions .disabled .header form .input-group .input-group-append button.btn:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append body.dark .wizard > .actions .disabled button.btn:not(:disabled):not(.disabled):focus,
+body.dark .wizard > .actions .disabled a:hover:not(:disabled):not(.disabled):focus,
+body.dark .wizard > .actions .disabled a:active:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(4, 7, 26, 0.5);
+  outline: none;
+  color: inherit;
+}
+
+body.dark .pricing-table {
+  border-color: #59607a;
+}
+
+body.dark hr {
+  border-color: #454c66;
+}
+
+body.dark .dropdown-menu {
+  border: none;
+  background-color: #3b425c;
+}
+
+body.dark .dropdown-menu .dropdown-item {
+  color: #c3c3c3;
+}
+
+body.dark .dropdown-menu .dropdown-item:hover,
+body.dark .dropdown-menu .dropdown-item:focus {
+  background: #313852;
+}
+
+body.dark .bg-light {
+  background: #59607a !important;
+}
+
+body.dark .list-group-item {
+  background: none;
+  border-color: rgba(155, 155, 155, 0.1);
+}
+
+body.dark a.list-group-item,
+body.dark .header form .input-group .input-group-append button.list-group-item.btn,
+.header form .input-group .input-group-append body.dark button.list-group-item.btn {
+  color: #c7c7c7;
+}
+
+body.dark a.list-group-item:hover,
+body.dark .header form .input-group .input-group-append button.list-group-item.btn:hover,
+.header form .input-group .input-group-append body.dark button.list-group-item.btn:hover {
+  color: white;
+}
+
+body.dark .card,
+body.dark .chat-block,
+body.dark .app-block .app-content .app-action,
+.app-block .app-content body.dark .app-action {
+  background: #313852;
+  border-color: #444e72;
+}
+
+body.dark .card .card-header,
+body.dark .chat-block .card-header,
+body.dark .app-block .app-content .app-action .card-header,
+.app-block .app-content body.dark .app-action .card-header {
+  border-bottom-color: #2c2f42 !important;
+}
+
+body.dark .card .card-footer,
+body.dark .chat-block .card-footer,
+body.dark .app-block .app-content .app-action .card-footer,
+.app-block .app-content body.dark .app-action .card-footer {
+  border-top-color: #2c2f42;
+}
+
+body.dark .accordion .card,
+body.dark .accordion .chat-block,
+body.dark .accordion .app-block .app-content .app-action,
+.app-block .app-content body.dark .accordion .app-action,
+body.dark .accordion.custom-accordion {
+  border-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .accordion.custom-accordion .accordion-row a.accordion-header,
+body.dark .accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append body.dark .accordion.custom-accordion .accordion-row button.accordion-header.btn {
+  border-bottom-color: rgba(240, 240, 240, 0.12);
+  border-top-color: rgba(240, 240, 240, 0.12);
+  color: inherit;
+  background-color: #454c66;
+}
+
+body.dark .morris-hover.morris-default-style {
+  background-color: #454c66;
+  border-color: #59607a;
+}
+
+body.dark .apexcharts-yaxis .apexcharts-yaxis-texts-g text {
+  fill: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .apexcharts-grid .apexcharts-gridlines-horizontal line,
+body.dark .apexcharts-grid .apexcharts-gridlines-vertical line {
+  stroke: rgba(255, 255, 255, 0.1);
+}
+
+body.dark .apexcharts-toolbar > div > svg {
+  fill: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .apexcharts-menu {
+  border: none;
+  background-color: #454c66;
+}
+
+body.dark .apexcharts-menu .apexcharts-menu-item:hover {
+  background-color: #59607a;
+}
+
+body.dark .apexcharts-xaxis .apexcharts-xaxis-texts-g text {
+  fill: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .apexcharts-tooltip.light .apexcharts-tooltip-title {
+  background-color: #59607a !important;
+  border-color: #3b425c !important;
+}
+
+body.dark .apexcharts-xaxistooltip {
+  border-color: #3b425c !important;
+  background-color: #454c66 !important;
+  color: rgba(255, 255, 255, 0.4);
+}
+
+body.dark .apexcharts-xaxistooltip-bottom:after,
+body.dark apexcharts-xaxistooltip-bottom:before {
+  border-bottom-color: #454c66 !important;
+}
+
+body.dark .apexcharts-tooltip {
+  border-color: #3b425c !important;
+  background-color: #454c66 !important;
+}
+
+body.dark .apexcharts-title-text,
+body.dark .apexcharts-subtitle-text {
+  fill: rgba(255, 255, 255, 0.4);
+}
+
+body.dark .apexcharts-legend-text {
+  color: rgba(255, 255, 255, 0.4) !important;
+}
+
+body.dark .apexcharts-yaxis-title text,
+body.dark .apexcharts-xaxis-title text {
+  fill: rgba(255, 255, 255, 0.4);
+}
+
+body.dark .demo-code-preview {
+  background-color: #313852;
+  border-color: #4f5670 !important;
+}
+
+body.dark .demo-code-preview * {
+  text-shadow: none;
+}
+
+body.dark .demo-code-preview code[class*=language-],
+body.dark .demo-code-preview pre[class*=language-] {
+  color: white;
+}
+
+body.dark .demo-code-preview code[class*=language-] .token.operator,
+body.dark .demo-code-preview pre[class*=language-] .token.operator {
+  background: none;
+}
+
+body.dark .demo-code-preview .token.tag {
+  color: #e156a3;
+}
+
+body.dark .avatar {
+  border-color: #313852;
+}
+
+body.dark .avatar:before {
+  border-color: #313852;
+}
+
+body.dark .avatar .avatar-title {
+  background-color: #59607a;
+}
+
+body.dark .tourBg {
+  opacity: 0.7 !important;
+}
+
+body.dark .dd-handle,
+body.dark .dd3-content {
+  background-color: #454c66;
+  border-color: #313852;
+  color: inherit;
+}
+
+body.dark .dd3-handle:before {
+  color: inherit;
+}
+
+body.dark .dd-item button {
+  color: inherit;
+}
+
+body.dark .list-group-item-action {
+  color: inherit;
+}
+
+body.dark .list-group-item-action.active {
+  color: white;
+}
+
+body.dark .img-thumbnail {
+  border-color: #59607a;
+  background-color: #313852;
+}
+
+body.dark .progress {
+  background-color: #59607a;
+}
+
+body.dark .jstree-default .jstree-clicked {
+  color: #04071a;
+}
+
+body.dark .select2-container--default .select2-selection--single,
+body.dark .select2-container--default .select2-selection--multiple {
+  background-color: inherit;
+}
+
+body.dark .select2-container--default .select2-selection--multiple .select2-selection__choice {
+  background: #454c66;
+  color: #c3c3c3;
+}
+
+body.dark .select2.select2-container .select2-selection {
+  border-color: #59607a;
+}
+
+body.dark .select2-container--default .select2-selection--single .select2-selection__placeholder {
+  color: #646464;
+}
+
+body.dark .select2-container .select2-search--inline .select2-search__field {
+  color: inherit;
+}
+
+body.dark .select2-dropdown {
+  background-color: #313852;
+  border-color: #59607a;
+}
+
+body.dark .select2-container--default .select2-search--dropdown .select2-search__field {
+  background-color: #313852;
+  border-color: #59607a;
+  color: inherit;
+}
+
+body.dark .select2-container--default .select2-selection--single .select2-selection__rendered {
+  color: inherit;
+}
+
+body.dark .select2-container--default .select2-results__option[aria-selected=true] {
+  background-color: #04071a;
+  color: inherit;
+}
+
+body.dark .irs--round .irs-line {
+  background-color: #59607a;
+}
+
+body.dark .irs--round .irs-min,
+body.dark .irs--round .irs-max {
+  color: inherit;
+  background-color: #59607a;
+}
+
+body.dark .daterangepicker {
+  background-color: #3b425c;
+  border-color: #3b425c;
+}
+
+body.dark .daterangepicker select {
+  background-color: inherit;
+  color: inherit;
+  border-color: #59607a;
+}
+
+body.dark .daterangepicker:after,
+body.dark .daterangepicker:before {
+  border-bottom-color: #3b425c;
+}
+
+body.dark .daterangepicker .calendar-table {
+  background-color: #3b425c;
+  border-color: #3b425c;
+}
+
+body.dark .daterangepicker td.in-range {
+  background-color: #59607a;
+  color: inherit;
+}
+
+body.dark .daterangepicker td.end-date {
+  color: white;
+  background-color: #0081ff;
+}
+
+body.dark .daterangepicker .drp-buttons {
+  border-top-color: #3b425c;
+}
+
+body.dark .daterangepicker .drp-buttons .btn.btn-default {
+  color: inherit;
+}
+
+body.dark .daterangepicker td.off,
+body.dark .daterangepicker td.off.end-date,
+body.dark .daterangepicker td.off.start-date {
+  background-color: inherit;
+  color: #636a84;
+}
+
+body.dark .daterangepicker td.off.in-range {
+  background-color: #59607a;
+  color: #8b92ac;
+}
+
+body.dark .daterangepicker td.available:hover,
+body.dark .daterangepicker th.available:hover {
+  background-color: #0081ff;
+  color: white;
+}
+
+body.dark .daterangepicker td.available:hover span,
+body.dark .daterangepicker th.available:hover span {
+  border-color: white;
+}
+
+body.dark .daterangepicker .calendar-table .next span,
+body.dark .daterangepicker .calendar-table .prev span {
+  border-color: #6d748e;
+}
+
+body.dark .daterangepicker .ranges li:hover {
+  background-color: #454c66;
+}
+
+body.dark .popover.clockpicker-popover {
+  overflow: hidden;
+  border: 1px solid #59607a;
+}
+
+body.dark .popover.clockpicker-popover .popover-title {
+  background-color: #313852;
+  color: inherit;
+}
+
+body.dark .popover.clockpicker-popover .popover-content {
+  background-color: #313852;
+}
+
+body.dark .popover.clockpicker-popover .clockpicker-plate {
+  border-color: #59607a;
+  background-color: #313852;
+}
+
+body.dark .popover.clockpicker-popover .clockpicker-plate .clockpicker-tick {
+  color: inherit;
+}
+
+body.dark .popover.clockpicker-popover .clockpicker-plate .clockpicker-canvas-bg {
+  fill: #59607a;
+}
+
+body.dark .nav-tabs .nav-item.show .nav-link,
+body.dark .nav-tabs .nav-link.active {
+  background-color: #59607a;
+  color: inherit;
+  border-color: #59607a;
+}
+
+body.dark .nav-tabs .nav-link:focus,
+body.dark .nav-tabs .nav-link:hover {
+  border-color: #3b425c;
+  background-color: #3b425c;
+}
+
+body.dark .nav-tabs {
+  border-bottom-color: #59607a;
+}
+
+body.dark .figure-caption {
+  color: inherit;
+}
+
+body.dark .btn-link {
+  color: inherit;
+}
+
+body.dark .text-muted,
+body.dark .chat-block .chat-content .messages .message-item.message-item-divider span,
+.chat-block .chat-content .messages .message-item.message-item-divider body.dark span,
+body.dark .demo-code-preview:before {
+  color: #9f9f9f !important;
+}
+
+body.dark .table td,
+body.dark .table th {
+  border-color: rgba(155, 155, 155, 0.2);
+}
+
+body.dark .border-bottom {
+  border-bottom-color: rgba(155, 155, 155, 0.2) !important;
+}
+
+body.dark .sidebar {
+  background: #313852;
+}
+
+body.dark .nicescroll-cursors {
+  background-color: rgba(255, 255, 255, 0.15) !important;
+}
+
+body.dark .chat-block .chat-content .messages .message-item:not(.me):before {
+  border-right-color: #454c66;
+}
+
+body.dark .chat-block .chat-content .messages .message-item:not(.me) .message-item-content {
+  background-color: #454c66;
+}
+
+body.dark .chat-block .chat-content .messages .message-item.message-item-divider:before,
+body.dark .chat-block .chat-content .messages .message-item.message-item-divider:after {
+  background-color: #454c66;
+}
+
+body.dark .chat-block .chat-sidebar {
+  background-color: #3b4362;
+}
+
+body.dark .chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item {
+  background-color: #313852;
+}
+
+body.dark .chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item.active {
+  color: white;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li:hover {
+  background-color: #3b425c;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active {
+  background-color: #454c66;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .avatar {
+  border-color: #454c66;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .app-list-title {
+  color: #c7c7c7;
+}
+
+body.dark .app-block .app-content .app-content-body .app-detail .card-header {
+  border-bottom-color: #454c66 !important;
+}
+
+body.dark .app-file-list {
+  border-color: #454c66;
+}
+
+body.dark .app-file-list .app-file-icon {
+  background-color: #454c66;
+  border-bottom-color: #454c66;
+}
+
+body.dark .ql-container.ql-snow {
+  border-color: #454c66;
+}
+
+body.dark .ql-editor.ql-blank::before {
+  color: #c7c7c7;
+}
+
+body.dark .ql-snow .ql-stroke,
+body.dark .ql-fill {
+  stroke: #c7c7c7;
+}
+
+body.dark .text-black-50 {
+  color: rgba(247, 247, 247, 0.43) !important;
+}
+
+body.dark .table-email-list a,
+body.dark .table-email-list .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .table-email-list button.btn {
+  color: inherit;
+}
+
+body.dark .table-hover tbody tr:hover {
+  color: inherit;
+}
+
+body.dark .input-group-text {
+  background: #454c66;
+  color: inherit;
+}
+
+body.dark .dropdown-divider {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .btn.btn-light,
+.fc body.dark .btn.fc-state-default,
+body.dark .fc .fc-state-default {
+  background: #454c66;
+  border-color: transparent;
+  color: inherit;
+}
+
+body.dark .btn.btn-light:not(:disabled):not(.disabled):hover,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):hover,
+body.dark .btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):focus,
+body.dark .btn.btn-light:not(:disabled):not(.disabled):active,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):active,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):hover,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):focus,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):active {
+  background: #4f5670;
+  border-color: #4f5670;
+  color: inherit;
+}
+
+body.dark .btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):focus,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(4, 7, 26, 0.5);
+  outline: none;
+  color: inherit;
+}
+
+body.dark .btn.btn-outline-light {
+  border: 1px solid rgba(255, 255, 255, 0.1);
+  color: #c7c7c7;
+}
+
+body.dark .btn.btn-outline-light:hover {
+  background: none !important;
+  color: #d6d6d6 !important;
+  border: 1px solid rgba(255, 255, 255, 0.1) !important;
+}
+
+body.dark .fc-unthemed .fc-content,
+body.dark .fc-unthemed .fc-divider,
+body.dark .fc-unthemed .fc-list-heading td,
+body.dark .fc-unthemed .fc-list-view,
+body.dark .fc-unthemed .fc-popover,
+body.dark .fc-unthemed .fc-row,
+body.dark .fc-unthemed tbody,
+body.dark .fc-unthemed td,
+body.dark .fc-unthemed th,
+body.dark .fc-unthemed thead {
+  border-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .fc-unthemed .fc-list-item:hover td {
+  background: #454c66;
+}
+
+body.dark .fc-unthemed .fc-divider,
+body.dark .fc-unthemed .fc-list-heading td,
+body.dark .fc-unthemed .fc-popover .fc-header {
+  background: #454c66;
+}
+
+body.dark .fc-unthemed td.fc-today,
+body.dark .fc-unthemed .fc-list-empty {
+  background: #454c66;
+}
+
+body.dark #external-events .fc-event {
+  color: inherit;
+}
+
+body.dark .bootstrap-tagsinput {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .bootstrap-tagsinput .tag {
+  background: #454c66;
+  color: #c3c3c3;
+}
+
+body.dark .bootstrap-tagsinput input {
+  color: #c3c3c3;
+}
+
+body.dark .dropzone {
+  background-color: #313852;
+  border-color: #454c66;
+}
+
+body.dark .modal-content {
+  background-color: #313852;
+}
+
+body.dark .modal-content .modal-header {
+  border-bottom-color: rgba(240, 240, 240, 0.12);
+  background-color: #454c66 !important;
+}
+
+body.dark .modal-content .modal-header .close {
+  text-shadow: none;
+  opacity: 1;
+  color: inherit;
+  background-color: #313852 !important;
+}
+
+body.dark .modal-content .modal-footer {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .swal-modal {
+  background-color: #313852;
+}
+
+body.dark .swal-modal .swal-icon--success__hide-corners {
+  background-color: inherit;
+}
+
+body.dark .swal-modal .swal-icon--success:before,
+body.dark .swal-modal .swal-icon--success:after {
+  background-color: inherit;
+}
+
+body.dark .swal-modal .swal-title,
+body.dark .swal-modal .swal-text {
+  color: inherit;
+}
+
+body.dark .popover {
+  background-color: #454c66;
+}
+
+body.dark .popover .popover-header {
+  background-color: #59607a;
+  border-color: transparent;
+}
+
+body.dark .popover .popover-body {
+  color: inherit;
+}
+
+body.dark .popover .popover-navigation {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .bs-popover-auto[x-placement^=top] > .arrow::after,
+body.dark .bs-popover-top > .arrow::after {
+  border-top-color: #454c66;
+}
+
+body.dark .bs-popover-auto[x-placement^=right] > .arrow::after,
+body.dark .bs-popover-right > .arrow::after {
+  border-right-color: #454c66;
+}
+
+body.dark .bs-popover-auto[x-placement^=bottom] > .arrow::after,
+body.dark .bs-popover-bottom > .arrow::after {
+  border-bottom-color: #454c66;
+}
+
+body.dark .bs-popover-auto[x-placement^=left] > .arrow::after,
+body.dark .bs-popover-left > .arrow::after {
+  border-left-color: #454c66;
+}
+
+body.dark ul.links a,
+body.dark ul.links .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark ul.links button.btn {
+  color: inherit;
+}
+
+body.dark .page-link {
+  background-color: inherit;
+  color: inherit;
+  border-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .page-item.disabled .page-link {
+  background-color: #272e48;
+  border-color: rgba(240, 240, 240, 0.12);
+  color: inherit;
+}
+
+body.dark .nav a.nav-link:not(.active),
+body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active),
+.header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active) {
+  color: #c7c7c7;
+}
+
+body.dark .nav a.nav-link:not(.active):hover,
+body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active):hover,
+.header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active):hover,
+body.dark .nav a.nav-link:not(.active):active,
+body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active):active,
+.header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active):active {
+  background-color: #3b425c;
+}
+
+body.dark.form-membership .form-wrapper {
+  background-color: #313852;
+}
+
+body.dark.form-membership .form-wrapper #logo img {
+  display: block;
+}
+
+body.dark.form-membership .form-wrapper #logo img:not(.logo-light) {
+  display: none;
+}
+
+body.dark .content-footer {
+  background-color: #313852;
+}
+
+body.dark .irs--round .irs-handle {
+  background-color: #313852;
+}
+
+body.dark .table tr.tr-selected {
+  background-color: #3b4362;
+}
+
+body.dark.hidden-navigation .navigation {
+  background-color: #313852;
+}
+
+body.dark.small-navigation .navigation-menu-body ul li.open > a,
+body.dark.small-navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append body.dark.small-navigation .navigation-menu-body ul li.open > button.btn {
+  background-color: #454c66;
+}
+
+body.dark.small-navigation .navigation-menu-body ul li ul {
+  background-color: #313852 !important;
+  border-left-color: #454c66 !important;
+}
+
+body.dark.small-navigation .navigation-menu-body ul li.navigation-divider:after {
+  background-color: #454c66 !important;
+}
+
+@media (min-width: 1200px) {
+  body.dark.horizontal-navigation .horizontal-navigation {
+    background-color: #313852;
+    border-top-color: #444e72;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a.active,
+  body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.active.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.active.btn {
+    background: rgba(0, 0, 0, 0.25);
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a:hover,
+  body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.btn:hover,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.btn:hover {
+    background: rgba(0, 0, 0, 0.1);
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a + ul,
+  body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.btn + ul,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.btn + ul {
+    border-top-color: #444e72;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul {
+    background-color: #3b425c;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul:before {
+    border-bottom-color: #3b425c;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    color: #c7c7c7;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a:hover,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn:hover,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.btn:hover {
+    background: none;
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a.active,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.active.btn {
+    background: none;
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li ul {
+    border-left-color: #444e72;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li.open > a,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li.open > button.btn {
+    background: none;
+    color: #339aff;
+  }
+
+  body.dark.navigation-toggle-one.navigation-show .navigation .navigation-menu-body {
+    background-color: #313852;
+  }
+}
+
+@media (max-width: 1200px) {
+  body.dark .chat-block .chat-content.mobile-open {
+    background-color: #313852;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation {
+    background-color: #3b425c;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li a:hover,
+  body.dark.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:hover,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li button.btn:hover {
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li a.active,
+  body.dark.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li button.active.btn {
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li.open > a,
+  body.dark.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #339aff;
+  }
+}
+
+@media (max-width: 1200px) {
+  .header .header-toggler {
+    display: block;
+  }
+
+  .chat-app .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 0 !important;
+  }
+
+  .chat-block {
+    position: relative;
+  }
+
+  .chat-block .chat-content {
+    display: none;
+  }
+
+  .chat-block .chat-content .chat-header {
+    padding: 0.5rem 1.5rem;
+  }
+
+  .chat-block .chat-content .mobile-chat-close-btn {
+    display: block;
+  }
+
+  .chat-block .chat-content.chat-mobile-open {
+    display: -webkit-box;
+    display: flex;
+    background-color: white;
+    position: absolute;
+    right: 0;
+    left: 0;
+    max-width: 100%;
+    z-index: 2;
+    bottom: 0;
+  }
+
+  .chat-block .chat-sidebar {
+    -webkit-box-flex: 1;
+            flex: 1;
+    border-right: none;
+    max-width: 100% !important;
+  }
+
+  .header {
+    margin: 0;
+  }
+
+  .header .header-left .navigation-toggler {
+    display: block !important;
+  }
+
+  .header div:nth-child(2) ul.navbar-nav:first-child {
+    display: none;
+    background: #e6e6e6;
+    position: fixed;
+    left: 0;
+    right: 0;
+    top: 75px;
+  }
+
+  .header div:nth-child(2) ul.navbar-nav:first-child li a,
+  .header div:nth-child(2) ul.navbar-nav:first-child li form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append div:nth-child(2) ul.navbar-nav:first-child li button.btn {
+    color: black;
+  }
+
+  .header div:nth-child(2) ul.navbar-nav:first-child.open {
+    display: -webkit-box;
+    display: flex;
+    flex-wrap: wrap;
+  }
+
+  .header .header-search .input-group {
+    background-color: white;
+  }
+
+  .header .header-search .input-group .btn {
+    color: black;
+  }
+
+  .header .header-search .input-group input.form-control:focus,
+  .header .header-search .input-group .swal-modal input.swal-content__input:focus,
+  .swal-modal .header .header-search .input-group input.swal-content__input:focus {
+    color: black;
+  }
+
+  .header .header-search .input-group input.form-control::-webkit-input-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input::-webkit-input-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input::-webkit-input-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control::-moz-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input::-moz-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input::-moz-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control:-ms-input-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input:-ms-input-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input:-ms-input-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control::-ms-input-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input::-ms-input-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input::-ms-input-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control::placeholder,
+  .header .header-search .input-group .swal-modal input.swal-content__input::placeholder,
+  .swal-modal .header .header-search .input-group input.swal-content__input::placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .navigation-toggler a,
+  .header .navigation-toggler form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append .navigation-toggler button.btn,
+  .header .navbar-toggler a,
+  .header .navbar-toggler form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append .navbar-toggler button.btn {
+    background: none !important;
+  }
+
+  .header .navigation-toggler {
+    display: none !important;
+  }
+
+  .header .navigation-toggler.mobile-toggler {
+    display: block !important;
+  }
+
+  .header .navigation-toggler a:hover,
+  .header .navigation-toggler form .input-group .input-group-append button.btn:hover,
+  .header form .input-group .input-group-append .navigation-toggler button.btn:hover {
+    background: none !important;
+  }
+
+  .header .dropdown {
+    position: static;
+  }
+
+  .header .dropdown-menu {
+    right: 1rem !important;
+    top: auto !important;
+    left: 1rem !important;
+    margin-top: 10px;
+    width: auto !important;
+    -webkit-transform: inherit !important;
+            transform: inherit !important;
+  }
+
+  .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+  }
+
+  .content-footer {
+    margin-left: 0 !important;
+  }
+
+  .navigation {
+    background-color: white;
+    z-index: 1000;
+    box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.15);
+    left: -80%;
+    top: 0;
+    bottom: 0;
+    opacity: 0;
+    -webkit-transition: left 0.2s;
+    transition: left 0.2s;
+    position: fixed !important;
+  }
+
+  .navigation.open {
+    left: 0;
+    opacity: 1;
+  }
+
+  .navigation header.navigation-header {
+    padding-top: 20px;
+  }
+
+  .navigation .navigation-icon-menu {
+    margin: 0;
+    border-radius: 0;
+  }
+
+  .navigation .navigation-menu-body {
+    padding: 15px 0;
+  }
+
+  .page-header {
+    padding: 0;
+    margin-top: 0;
+    margin-right: 0;
+    margin-left: 0;
+  }
+
+  .user-page {
+    padding: 20px;
+    height: auto;
+  }
+
+  .user-page .card,
+  .user-page .chat-block,
+  .user-page .app-block .app-content .app-action,
+  .app-block .app-content .user-page .app-action {
+    width: auto;
+  }
+
+  .user-page .card .card-body,
+  .user-page .chat-block .card-body,
+  .user-page .app-block .app-content .app-action .card-body,
+  .app-block .app-content .user-page .app-action .card-body {
+    padding: 30px;
+  }
+}
+
+@media (max-width: 992px) {
+  .app-block {
+    position: relative;
+  }
+
+  .app-block .app-sidebar-menu-button {
+    display: -webkit-inline-box;
+    display: inline-flex;
+    margin-right: 1rem;
+  }
+
+  .app-block .app-sidebar {
+    display: none;
+    position: absolute;
+    left: 0;
+    z-index: 9;
+    -webkit-box-flex: 0;
+            flex: 0 0 35%;
+    max-width: 35%;
+    bottom: 0;
+  }
+
+  .app-block .app-sidebar .app-sidebar-menu {
+    overflow: auto;
+  }
+
+  .app-block .app-sidebar.show {
+    display: block;
+  }
+
+  .app-block .app-sidebar > .card,
+  .app-block .app-sidebar > .chat-block,
+  .app-block .app-content .app-sidebar > .app-action {
+    box-shadow: 3px 0px 15px -10px black;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+
+  .app-block .app-content {
+    -webkit-box-flex: 0;
+            flex: 0 0 100%;
+    max-width: 100%;
+  }
+
+  .app-block .app-content .app-action {
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: reverse;
+            flex-direction: column-reverse;
+  }
+
+  .app-block .app-content .app-action .action-right {
+    margin-left: 0;
+    margin-bottom: 1rem;
+  }
+
+  .app-block .app-content .app-detail .card-header {
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+            flex-direction: column;
+    -webkit-box-align: stretch !important;
+            align-items: stretch !important;
+  }
+
+  .app-block .app-content .app-detail .card-header .app-detail-action-right {
+    margin-left: 0 !important;
+    margin-top: 1rem;
+  }
+
+  .card,
+  .chat-block,
+  .app-block .app-content .app-action {
+    margin-bottom: 1rem;
+  }
+
+  .card .card-body,
+  .chat-block .card-body,
+  .app-block .app-content .app-action .card-body {
+    padding: 1.2rem;
+  }
+}
+
+@media (max-width: 768px) {
+  body.form-membership .form-wrapper {
+    width: 90%;
+    margin: 30px auto;
+  }
+
+  body.horizontal-navigation .horizontal-navigation.open {
+    width: 80%;
+  }
+
+  .app-block .app-content .app-action .action-right form {
+    margin-right: 0 !important;
+  }
+
+  .app-block .app-content .app-action .action-right .app-pager {
+    display: none !important;
+  }
+
+  .app-block .app-sidebar {
+    -webkit-box-flex: 0;
+            flex: 0 0 70%;
+    max-width: 70%;
+  }
+
+  .chat-block .chat-sidebar.border-right {
+    border-right: none !important;
+  }
+
+  .toast-top-right {
+    top: 1rem;
+    right: 1rem;
+  }
+
+  .toast-top-left {
+    top: 1rem;
+    left: 1rem;
+  }
+
+  .header .header-left {
+    width: auto;
+  }
+
+  .header .page-title {
+    display: none;
+  }
+
+  footer {
+    padding: 15px 20px;
+  }
+
+  footer .nav {
+    display: none;
+  }
+
+  .table-responsive-stack tr {
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    flex-direction: column;
+    border-bottom: 3px solid #ccc;
+    display: block;
+  }
+
+  /*  IE9 FIX   */
+
+  .table-responsive-stack td {
+    float: left \9;
+    width: 100%;
+  }
+
+  .sidebar > ul.nav {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  .sidebar > ul.nav li.nav-item {
+    border: none;
+  }
+
+  .user-page {
+    padding: 20px;
+    height: auto;
+  }
+
+  .user-page .card,
+  .user-page .chat-block,
+  .user-page .app-block .app-content .app-action,
+  .app-block .app-content .user-page .app-action {
+    width: 100%;
+  }
+
+  .user-page .card .card-body,
+  .user-page .chat-block .card-body,
+  .user-page .app-block .app-content .app-action .card-body,
+  .app-block .app-content .user-page .app-action .card-body {
+    padding: 30px;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div {
+    float: none !important;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div .fc-button-group {
+    float: none !important;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div.fc-left {
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-pack: center;
+            justify-content: center;
+    margin-bottom: 15px;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div.fc-right {
+    margin-bottom: 5px;
+  }
+}
+
+@media (max-width: 414px) {
+  .nav {
+    display: block;
+    border: none;
+  }
+
+  .nav li.nav-item {
+    margin-bottom: 0;
+  }
+
+  .nav li.nav-item:last-child {
+    border: none;
+  }
+
+  .nav li.nav-item a.nav-link,
+  .nav li.nav-item .header form .input-group .input-group-append button.nav-link.btn,
+  .header form .input-group .input-group-append .nav li.nav-item button.nav-link.btn {
+    border: none;
+  }
+
+  body:not(.semi-dark):not(.dark) .nav li.nav-item {
+    border-bottom: 1px solid #ebebeb;
+  }
+
+  .navigation header.navigation-header .nav {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  body.dark .nav li.nav-item {
+    border-bottom-color: #6d748e;
+  }
+
+  .wizard > .steps > ul > li {
+    float: none;
+    width: 100%;
+    margin-bottom: 10px;
+  }
+
+  .wizard > .content {
+    background: none;
+  }
+
+  .wizard > .content > .body {
+    position: static;
+    padding: 0;
+  }
+
+  .dataTables_wrapper .dataTables_filter {
+    display: block;
+  }
+
+  .navigation {
+    width: 75%;
+  }
+
+  .page-header .breadcrumb {
+    display: none;
+  }
+}
+
+@media (max-width: 375px) {
+  nav.navbar .navbar-menu {
+    padding-left: 0;
+  }
+
+  .navigation {
+    width: 85%;
+  }
+}
+
+@media (max-width: 544px) {
+  .text-xs-center {
+    text-align: center !important;
+  }
+
+  .text-xs-left {
+    text-align: left !important;
+  }
+
+  .text-xs-right {
+    text-align: right !important;
+  }
+}
+
+@media print {
+  .page-header {
+    display: none;
+  }
+}
+
Index: public/assets/js/app.js
===================================================================
--- public/assets/js/app.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/assets/js/app.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1007 @@
+/******/ (() => { // webpackBootstrap
+/******/ 	var __webpack_modules__ = ({
+
+/***/ "./resources/assets/js/app.js":
+/*!************************************!*\
+  !*** ./resources/assets/js/app.js ***!
+  \************************************/
+/***/ (() => {
+
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+/******/
+(function (modules) {
+  // webpackBootstrap
+
+  /******/
+  // The module cache
+
+  /******/
+  var installedModules = {};
+  /******/
+
+  /******/
+  // The require function
+
+  /******/
+
+  function __nested_webpack_require_572__(moduleId) {
+    /******/
+
+    /******/
+    // Check if module is in cache
+
+    /******/
+    if (installedModules[moduleId]) {
+      /******/
+      return installedModules[moduleId].exports;
+      /******/
+    }
+    /******/
+    // Create a new module (and put it into the cache)
+
+    /******/
+
+
+    var module = installedModules[moduleId] = {
+      /******/
+      i: moduleId,
+
+      /******/
+      l: false,
+
+      /******/
+      exports: {}
+      /******/
+
+    };
+    /******/
+
+    /******/
+    // Execute the module function
+
+    /******/
+
+    modules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_572__);
+    /******/
+
+    /******/
+    // Flag the module as loaded
+
+    /******/
+
+    module.l = true;
+    /******/
+
+    /******/
+    // Return the exports of the module
+
+    /******/
+
+    return module.exports;
+    /******/
+  }
+  /******/
+
+  /******/
+
+  /******/
+  // expose the modules object (__webpack_modules__)
+
+  /******/
+
+
+  __nested_webpack_require_572__.m = modules;
+  /******/
+
+  /******/
+  // expose the module cache
+
+  /******/
+
+  __nested_webpack_require_572__.c = installedModules;
+  /******/
+
+  /******/
+  // define getter function for harmony exports
+
+  /******/
+
+  __nested_webpack_require_572__.d = function (exports, name, getter) {
+    /******/
+    if (!__nested_webpack_require_572__.o(exports, name)) {
+      /******/
+      Object.defineProperty(exports, name, {
+        enumerable: true,
+        get: getter
+      });
+      /******/
+    }
+    /******/
+
+  };
+  /******/
+
+  /******/
+  // define __esModule on exports
+
+  /******/
+
+
+  __nested_webpack_require_572__.r = function (exports) {
+    /******/
+    if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+      /******/
+      Object.defineProperty(exports, Symbol.toStringTag, {
+        value: 'Module'
+      });
+      /******/
+    }
+    /******/
+
+
+    Object.defineProperty(exports, '__esModule', {
+      value: true
+    });
+    /******/
+  };
+  /******/
+
+  /******/
+  // create a fake namespace object
+
+  /******/
+  // mode & 1: value is a module id, require it
+
+  /******/
+  // mode & 2: merge all properties of value into the ns
+
+  /******/
+  // mode & 4: return value when already ns object
+
+  /******/
+  // mode & 8|1: behave like require
+
+  /******/
+
+
+  __nested_webpack_require_572__.t = function (value, mode) {
+    /******/
+    if (mode & 1) value = __nested_webpack_require_572__(value);
+    /******/
+
+    if (mode & 8) return value;
+    /******/
+
+    if (mode & 4 && _typeof(value) === 'object' && value && value.__esModule) return value;
+    /******/
+
+    var ns = Object.create(null);
+    /******/
+
+    __nested_webpack_require_572__.r(ns);
+    /******/
+
+
+    Object.defineProperty(ns, 'default', {
+      enumerable: true,
+      value: value
+    });
+    /******/
+
+    if (mode & 2 && typeof value != 'string') for (var key in value) {
+      __nested_webpack_require_572__.d(ns, key, function (key) {
+        return value[key];
+      }.bind(null, key));
+    }
+    /******/
+
+    return ns;
+    /******/
+  };
+  /******/
+
+  /******/
+  // getDefaultExport function for compatibility with non-harmony modules
+
+  /******/
+
+
+  __nested_webpack_require_572__.n = function (module) {
+    /******/
+    var getter = module && module.__esModule ?
+    /******/
+    function getDefault() {
+      return module['default'];
+    } :
+    /******/
+    function getModuleExports() {
+      return module;
+    };
+    /******/
+
+    __nested_webpack_require_572__.d(getter, 'a', getter);
+    /******/
+
+
+    return getter;
+    /******/
+  };
+  /******/
+
+  /******/
+  // Object.prototype.hasOwnProperty.call
+
+  /******/
+
+
+  __nested_webpack_require_572__.o = function (object, property) {
+    return Object.prototype.hasOwnProperty.call(object, property);
+  };
+  /******/
+
+  /******/
+  // __webpack_public_path__
+
+  /******/
+
+
+  __nested_webpack_require_572__.p = "/";
+  /******/
+
+  /******/
+
+  /******/
+  // Load entry module and return exports
+
+  /******/
+
+  return __nested_webpack_require_572__(__nested_webpack_require_572__.s = 0);
+  /******/
+})({
+  /***/
+  "./public/assets/sass/app.scss": function publicAssetsSassAppScss(module, exports) {// removed by extract-text-webpack-plugin
+
+    /***/
+  },
+
+  /***/
+  "./resources/js/app.js": function resourcesJsAppJs(module, exports, __webpack_require__) {
+    "use strict";
+
+    (function ($) {
+      var wind_ = $(window),
+          body_ = $('body');
+      feather.replace({
+        'stroke-width': 1.5
+      });
+      $(document).on('click', '[data-toggle="fullscreen"]', function () {
+        $(this).toggleClass('active-fullscreen');
+
+        if (document.fullscreenEnabled) {
+          if ($(this).hasClass("active-fullscreen")) {
+            document.documentElement.requestFullscreen();
+          } else {
+            document.exitFullscreen();
+          }
+        } else {
+          alert("Your browser does not support fullscreen.");
+        }
+
+        return false;
+      });
+      $(document).on('click', '.overlay', function () {
+        $.removeOverlay();
+
+        if (body_.hasClass('horizontal-navigation')) {
+          $('.horizontal-navigation').removeClass('open');
+        } else {
+          $('.navigation').removeClass('open');
+        }
+
+        body_.removeClass('navigation-show');
+      });
+      $(document).on('click', '[data-sidebar-target]', function () {
+        var target = $(this).data('sidebar-target');
+        $('body').addClass('no-scroll');
+        $('.sidebar-group').addClass('show');
+        $('.sidebar-group .sidebar').removeClass('show');
+        $('.sidebar-group .sidebar' + target).addClass('show');
+        return false;
+      });
+      $(document).on('click', '.sidebar-group', function (e) {
+        if ($(e.target).is($('.sidebar-group'))) {
+          $('.sidebar-group').removeClass('show');
+          $('body').removeClass('no-scroll');
+          $('.sidebar-group .sidebar').removeClass('show');
+        }
+      }); // Active pages, automatically show on the menu
+
+      $('.navigation .navigation-menu-body .navigation-menu-group ul li a.active').closest('ul').parent('li').addClass('open').closest('ul').parent('li').addClass('open');
+      $('.navigation .navigation-menu-body .navigation-menu-group ul li a.active').closest('div').addClass('open');
+      $('.navigation .navigation-menu-tab [data-nav-target="#' + $('.navigation .navigation-menu-body .navigation-menu-group ul li a.active').closest('div').attr('id') + '"]').addClass('active');
+      $('body.horizontal-navigation .horizontal-navigation ul li a.active').closest('ul').parent('li').addClass('open').closest('ul').parent('li').addClass('open');
+      /*------------- create/remove overlay -------------*/
+
+      $.createOverlay = function () {
+        if ($('.overlay').length < 1) {
+          body_.addClass('no-scroll').append('<div class="overlay"></div>');
+          $('.overlay').addClass('show');
+        }
+      };
+
+      $.removeOverlay = function () {
+        body_.removeClass('no-scroll');
+        $('.overlay').remove();
+      };
+      /*------------- create/remove overlay -------------*/
+
+
+      $('[data-backround-image]').each(function (e) {
+        $(this).css("background", 'url(' + $(this).data('backround-image') + ')');
+      });
+      /*------------- page loader -------------*/
+
+      wind_.on('load', function () {
+        $('.preloader').fadeOut(400, function () {
+          setTimeout(function () {
+            toastr.options = {
+              timeOut: 2000,
+              progressBar: true,
+              showMethod: "slideDown",
+              hideMethod: "slideUp",
+              showDuration: 200,
+              hideDuration: 200,
+              positionClass: "toast-top-center"
+            }; //toastr.success('Welcome');
+
+            $('.theme-switcher').removeClass('open');
+          }, 500); // $('.theme-switcher').css('opacity', 1);
+        });
+      });
+      /*------------- page loader -------------*/
+
+      /*------------- side menu (sub menü arrow) -------------*/
+
+      wind_.on('load', function () {
+        setTimeout(function () {
+          $('.navigation .navigation-menu-body ul li a').each(function () {
+            var $this = $(this);
+
+            if ($this.next('ul').length) {
+              $this.append('<i class="sub-menu-arrow ti-angle-up"></i>');
+            }
+          });
+          $('.navigation .navigation-menu-body ul li.open>a>.sub-menu-arrow').removeClass('ti-plus').addClass('ti-minus').addClass('rotate-in');
+          $('body.horizontal-navigation .horizontal-navigation ul li a').each(function () {
+            var $this = $(this);
+
+            if ($this.next('ul').length) {
+              $this.append('<i class="sub-menu-arrow ti-angle-right"></i>');
+            }
+          });
+        }, 200);
+      });
+      /*------------- side menu (sub menü arrow) -------------*/
+
+      $(document).on('click', '[data-action="navigation-toggler"]', function () {
+        if (body_.hasClass('horizontal-navigation')) {
+          $('.horizontal-navigation').toggleClass('open');
+        } else {
+          $('.navigation').toggleClass('open');
+        }
+
+        $.createOverlay();
+      });
+      $(document).on('click', '[data-nav-target]', function () {
+        var $this = $(this),
+            target = $this.data('nav-target');
+
+        if (body_.hasClass('navigation-toggle-one')) {
+          body_.addClass('navigation-show');
+        }
+
+        if (body_.hasClass('horizontal-navigation')) {
+          $('.navigation .navigation-menu-body').show();
+        }
+
+        $('.navigation .navigation-menu-body .navigation-menu-group > div').removeClass('open');
+        $('.navigation .navigation-menu-body .navigation-menu-group ' + target).addClass('open');
+        $('[data-nav-target]').removeClass('active');
+        $this.addClass('active');
+        $this.tooltip('hide');
+        return false;
+      });
+      var c = $('.header .header-left .header-logo').clone();
+      $('.navigation .navigation-header').append(c.addClass('navigation-logo').removeClass('header-logo'));
+      $(document).on('click', '.navigation-toggler a', function () {
+        if (wind_.width() < 1200) {
+          $.createOverlay();
+          body_.addClass('navigation-show');
+        } else {
+          if (!body_.hasClass('navigation-toggle-one') && !body_.hasClass('navigation-toggle-two')) {
+            body_.addClass('navigation-toggle-one');
+          } else if (body_.hasClass('navigation-toggle-one') && !body_.hasClass('navigation-toggle-two')) {
+            body_.addClass('navigation-toggle-two');
+            body_.removeClass('navigation-toggle-one');
+          } else if (!body_.hasClass('navigation-toggle-one') && body_.hasClass('navigation-toggle-two')) {
+            body_.removeClass('navigation-toggle-two');
+            body_.removeClass('navigation-toggle-one');
+          }
+        }
+
+        return false;
+      });
+      $(document).on('click', '.header-toggler a', function () {
+        $('.header ul.navbar-nav').toggleClass('open');
+        return false;
+      });
+      $(document).on('click', '*', function (e) {
+        if (!$(e.target).is($('.navigation, .navigation *, .navigation-toggler *')) && body_.hasClass('navigation-toggle-one')) {
+          body_.removeClass('navigation-show');
+        }
+      });
+      $(document).on('click', '*', function (e) {
+        if (!$(e.target).is('.header ul.navbar-nav, .header ul.navbar-nav *, .header-toggler, .header-toggler *')) {
+          $('.header ul.navbar-nav').removeClass('open');
+        }
+      });
+      /*------------- form validation -------------*/
+
+      window.addEventListener('load', function () {
+        // Fetch all the forms we want to apply custom Bootstrap validation styles to
+        var forms = document.getElementsByClassName('needs-validation'); // Loop over them and prevent submission
+
+        Array.prototype.filter.call(forms, function (form) {
+          form.addEventListener('submit', function (event) {
+            if (form.checkValidity() === false) {
+              event.preventDefault();
+              event.stopPropagation();
+            }
+
+            form.classList.add('was-validated');
+          }, false);
+        });
+      }, false);
+      /*------------- form validation -------------*/
+
+      /*------------- responsive html table -------------*/
+
+      var table_responsive_stack = $(".table-responsive-stack");
+      table_responsive_stack.find("th").each(function (i) {
+        $(".table-responsive-stack td:nth-child(" + (i + 1) + ")").prepend('<span class="table-responsive-stack-thead">' + $(this).text() + ":</span> ");
+        $(".table-responsive-stack-thead").hide();
+      });
+      table_responsive_stack.each(function () {
+        var thCount = $(this).find("th").length,
+            rowGrow = 100 / thCount + "%";
+        $(this).find("th, td").css("flex-basis", rowGrow);
+      });
+
+      function flexTable() {
+        if (wind_.width() < 768) {
+          $(".table-responsive-stack").each(function (i) {
+            $(this).find(".table-responsive-stack-thead").show();
+            $(this).find("thead").hide();
+          }); // window is less than 768px
+        } else {
+          $(".table-responsive-stack").each(function (i) {
+            $(this).find(".table-responsive-stack-thead").hide();
+            $(this).find("thead").show();
+          });
+        }
+      }
+
+      flexTable();
+
+      window.onresize = function (event) {
+        flexTable();
+      };
+      /*------------- responsive html table -------------*/
+
+      /*------------- header search -------------*/
+
+
+      $(document).on('click', '[data-toggle="search"], [data-toggle="search"] *', function () {
+        $('.header .header-body .header-search').show().find('.form-control').focus();
+        return false;
+      });
+      $(document).on('click', '.close-header-search, .close-header-search svg', function () {
+        $('.header .header-body .header-search').hide();
+        return false;
+      });
+      $(document).on('click', '*', function (e) {
+        if (!$(e.target).is($('.header, .header *, [data-toggle="search"], [data-toggle="search"] *'))) {
+          $('.header .header-body .header-search').hide();
+        }
+      });
+      /*------------- header search -------------*/
+
+      /*------------- custom accordion -------------*/
+
+      $(document).on('click', '.accordion.custom-accordion .accordion-row a.accordion-header', function () {
+        var $this = $(this);
+        $this.closest('.accordion.custom-accordion').find('.accordion-row').not($this.parent()).removeClass('open');
+        $this.parent('.accordion-row').toggleClass('open');
+        return false;
+      });
+      /*------------- custom accordion -------------*/
+
+      /*------------- responsive table dropdown -------------*/
+
+      var dropdownMenu,
+          table_responsive = $('.table-responsive');
+      table_responsive.on('show.bs.dropdown', function (e) {
+        dropdownMenu = $(e.target).find('.dropdown-menu');
+        body_.append(dropdownMenu.detach());
+        var eOffset = $(e.target).offset();
+        dropdownMenu.css({
+          'display': 'block',
+          'top': eOffset.top + $(e.target).outerHeight(),
+          'left': eOffset.left,
+          'width': '184px',
+          'font-size': '14px'
+        });
+        dropdownMenu.addClass("mobPosDropdown");
+      });
+      table_responsive.on('hide.bs.dropdown', function (e) {
+        $(e.target).append(dropdownMenu.detach());
+        dropdownMenu.hide();
+      });
+      /*------------- responsive table dropdown -------------*/
+
+      /*------------- chat -------------*/
+
+      $(document).on('click', '.chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item', function () {
+        $('.chat-block .chat-content').addClass('chat-mobile-open');
+        return false;
+      });
+      $(document).on('click', '.chat-block .chat-content .mobile-chat-close-btn a', function () {
+        $('.chat-block .chat-content').removeClass('chat-mobile-open');
+        return false;
+      });
+      /*------------- chat -------------*/
+
+      /*------------- aside menu toggle -------------*/
+
+      $(document).on('click', '.navigation ul li a', function () {
+        var $this = $(this);
+
+        if ($this.next('ul').length) {
+          var sub_menu_arrow = $this.find('.sub-menu-arrow');
+          sub_menu_arrow.toggleClass('rotate-in');
+          $this.next('ul').toggle(200);
+          $this.parent('li').siblings().find('ul').not($this.parent('li').find('ul')).slideUp(200);
+          $this.next('ul').find('li ul').slideUp(200);
+          $this.next('ul').find('li>a').find('.sub-menu-arrow').removeClass('ti-minus').addClass('ti-plus');
+          $this.next('ul').find('li>a').find('.sub-menu-arrow').removeClass('rotate-in');
+          $this.parent('li').siblings().not($this.parent('li').find('ul')).find('>a').find('.sub-menu-arrow').removeClass('ti-minus').addClass('ti-plus');
+          $this.parent('li').siblings().not($this.parent('li').find('ul')).find('>a').find('.sub-menu-arrow').removeClass('rotate-in');
+
+          if (sub_menu_arrow.hasClass('rotate-in')) {
+            setTimeout(function () {
+              sub_menu_arrow.removeClass('ti-plus').addClass('ti-minus');
+            }, 200);
+          } else {
+            sub_menu_arrow.removeClass('ti-minus').addClass('ti-plus');
+          }
+
+          if (!body_.hasClass('horizontal-side-menu') && wind_.width() >= 1200) {
+            setTimeout(function (e) {
+              $('.navigation .navigation-menu-body').getNiceScroll().resize();
+            }, 300);
+          }
+
+          return false;
+        }
+      });
+      $(document).on('click', '.horizontal-navigation ul li a', function () {
+        var $this = $(this);
+
+        if ($this.next('ul').length) {
+          $this.next('ul').toggle(200);
+          $this.parent('li').siblings().find('ul').not($this.parent('li').find('ul')).slideUp(200);
+          $this.next('ul').find('li ul').slideUp(200);
+          return false;
+        }
+      });
+      /*------------- aside menu toggle -------------*/
+
+      /*------------- other -------------*/
+
+      $(document).on('click', '.dropdown-menu', function (e) {
+        e.stopPropagation();
+      });
+      $('#exampleModal').on('show.bs.modal', function (event) {
+        var button = $(event.relatedTarget),
+            recipient = button.data('whatever'),
+            modal = $(this);
+        modal.find('.modal-title').text('New message to ' + recipient);
+        modal.find('.modal-body input').val(recipient);
+      });
+      $('[data-toggle="tooltip"]').tooltip({
+        container: 'body'
+      });
+      $('[data-toggle="popover"]').popover();
+      $('.carousel').carousel();
+
+      if (wind_.width() >= 992) {
+        $('.card-scroll').niceScroll();
+        $('.table-responsive').niceScroll();
+        $('.sidebar-group .sidebar').niceScroll();
+        $('.app-block .app-content .app-lists').niceScroll();
+        $('.app-block .app-sidebar .app-sidebar-menu').niceScroll();
+        $('.chat-block .chat-sidebar .chat-sidebar-content').niceScroll();
+        var chat_messages = $('.chat-block .chat-content .messages');
+
+        if (chat_messages.length) {
+          chat_messages.niceScroll({
+            horizrailenabled: false
+          });
+          chat_messages.getNiceScroll(0).doScrollTop(chat_messages.get(0).scrollHeight, -1);
+        }
+      }
+
+      if (!body_.hasClass('small-navigation') && !body_.hasClass('horizontal-navigation') && wind_.width() >= 992) {
+        $('.navigation .navigation-menu-body').niceScroll();
+      }
+
+      $('.dropdown-menu ul.list-group').niceScroll();
+      /* Theme Switcher */
+
+      /* var path = window.location.pathname;
+      var page = path.split("/").pop();
+       var theme_switcher_html = '<div class="theme-switcher open"> \n\
+          <div class="theme-switcher-button"> \n\
+              <i class="fa fa-cog"></i> \n\
+          </div> \n\
+          <div class="theme-switcher-panel"> \n\
+              <div class="card"> \n\
+                  <div class="card-body"> \n\
+                      <h6 class="card-title">Theme Switcher</h6> \n\
+                      <div class="form-group mb-2"> \n\
+                          <div class="custom-control custom-switch"> \n\
+                              <input type="checkbox" class="custom-control-input" id="dark"> \n\
+                              <label class="custom-control-label" for="dark">Dark</label> \n\
+                          </div> \n\
+                      </div> \n\
+                      <div class="form-group mb-2"> \n\
+                          <div class="custom-control custom-switch"> \n\
+                              <input type="checkbox" class="custom-control-input" id="semi-dark"> \n\
+                              <label class="custom-control-label" for="semi-dark">Semi dark</label> \n\
+                          </div> \n\
+                      </div> \n\
+                      <div class="form-group mb-2"> \n\
+                          <div class="custom-control custom-switch"> \n\
+                              <input type="checkbox" class="custom-control-input" id="shadow-layout"> \n\
+                              <label class="custom-control-label" for="shadow-layout">Shadow layout</label> \n\
+                          </div> \n\
+                      </div> \n\
+                      <div class="form-group mb-2"> \n\
+                          <div class="custom-control custom-switch"> \n\
+                              <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="sticky-navigation"> \n\
+                              <label class="custom-control-label" for="sticky-navigation">Sticky navigation</label> \n\
+                          </div> \n\
+                      </div> \n\
+                      <div class="form-group mb-2"> \n\
+                          <div class="custom-control custom-switch"> \n\
+                              <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="small-navigation"> \n\
+                              <label class="custom-control-label" for="small-navigation">Small navigation</label> \n\
+                          </div> \n\
+                      </div> \n\
+                      <div class="form-group mb-2"> \n\
+                          <div class="custom-control custom-switch"> \n\
+                              <input type="checkbox" class="custom-control-input" id="hidden-navigation"> \n\
+                              <label class="custom-control-label" for="hidden-navigation">Hidden navigation</label> \n\
+                          </div> \n\
+                      </div> \n\
+                      <div class="form-group mb-2"> \n\
+                          <div class="custom-control custom-switch"> \n\
+                              <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="sticky-header"> \n\
+                              <label class="custom-control-label" for="sticky-header">Sticky header</label> \n\
+                          </div> \n\
+                      </div> \n\
+                      <div class="form-group mb-2"> \n\
+                          <div class="custom-control custom-switch"> \n\
+                              <input type="checkbox" class="custom-control-input" id="light-header"> \n\
+                              <label class="custom-control-label" for="light-header">Light header</label> \n\
+                          </div> \n\
+                      </div> \n\
+                      <div class="form-group mb-2"> \n\
+                          <div class="custom-control custom-switch"> \n\
+                              <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="sticky-footer"> \n\
+                              <label class="custom-control-label" for="sticky-footer">Sticky footer</label> \n\
+                          </div> \n\
+                      </div> \n\
+                  </div> \n\
+              </div> \n\
+          </div> \n\
+      </div>';
+       $('body').append(theme_switcher_html);
+       $(document).on('click', '.theme-switcher input[type="checkbox"]', function () {
+          var id = $(this).attr('id');
+          if (id === 'sticky-navigation') {
+              if ($(this).prop('checked')) {
+                  $('.navigation').niceScroll().resize();
+              } else {
+                  $('.navigation').niceScroll().remove();
+              }
+              if ($('body').hasClass('small-navigation')) {
+                  $('.navigation .navigation-menu-body > ul > li').each(function () {
+                      if ($(this).find('> a').next('ul').length) {
+                          // Dropdown add header title
+                          $(this).find('.dropdown-divider').remove();
+                      } else {
+                          // Add tooltip
+                          $(this).find('> a').tooltip('dispose');
+                      }
+                  });
+                  $('body').removeClass('small-navigation');
+                  $('.theme-switcher input[type="checkbox"][id="small-navigation"]').prop('checked', false);
+              }
+              if ($('body').hasClass('hidden-navigation')) {CUSTOMİZABLE
+                  $('body').removeClass('hidden-navigation');
+                  $('.theme-switcher input[type="checkbox"][id="hidden-navigation"]').prop('checked', false);
+              }
+          }
+          if (id === 'small-navigation') {
+              if ($(this).prop('checked')) {
+                  $('.navigation .navigation-menu-body > ul > li').each(function () {
+                      if ($(this).find('> a').next('ul').length) {
+                          // Dropdown add header title
+                          $(this).find('> a').next('ul').prepend('<li class="dropdown-divider">' + $(this).find('> a > span:not(.badge)').text() + '</li>')
+                      } else {
+                          // Add tooltip
+                          $(this).find('> a').attr('title', $(this).find('> a > span:not(.badge)').text());
+                          $(this).find('> a').tooltip({
+                              placement: "right"
+                          });
+                      }
+                  });
+              } else {
+                  $('.navigation .navigation-menu-body > ul > li').each(function () {
+                      if ($(this).find('> a').next('ul').length) {
+                          // Dropdown add header title
+                          $(this).find('.dropdown-divider').remove();
+                      } else {
+                          // Add tooltip
+                          $(this).find('> a').tooltip('dispose');
+                      }
+                  });
+              }
+              if ($('body').hasClass('sticky-navigation')) {
+                  $('body').removeClass('sticky-navigation');
+                  $('.navigation').niceScroll().remove();
+                  $('.theme-switcher input[type="checkbox"][id="sticky-navigation"]').prop('checked', false);
+              }
+              if ($('body').hasClass('hidden-navigation')) {
+                  $('body').removeClass('hidden-navigation');
+                  $('.theme-switcher input[type="checkbox"][id="hidden-navigation"]').prop('checked', false);
+              }
+          }
+          if (id === 'hidden-navigation') {
+              setTimeout(function () {
+                  $('.navigation').niceScroll().resize();
+                  $('.app-block .app-content .app-lists').niceScroll().resize();
+                  $('.app-block .app-sidebar .app-sidebar-menu').niceScroll().resize();
+                  $('.chat-block .chat-sidebar .chat-sidebar-content .tab-content .tab-pane').niceScroll().resize();
+              }, 200);
+              if (!$(this).prop('checked')) {
+                  $.removeOverlay();
+                  $('.navigation').removeClass('open');
+              }
+              if (page != 'chat.html' && page != 'inbox.html' && page != 'app-todo.html') {
+                  if ($('body').hasClass('sticky-navigation')) {
+                      $('body').removeClass('sticky-navigation');
+                      $('.theme-switcher input[type="checkbox"][id="sticky-navigation"]').prop('checked', false);
+                  }
+              }
+              if ($('body').hasClass('small-navigation')) {
+                  $('.navigation .navigation-menu-body > ul > li').each(function () {
+                      if ($(this).find('> a').next('ul').length) {
+                          // Dropdown add header title
+                          $(this).find('.dropdown-divider').remove();
+                      } else {
+                          // Add tooltip
+                          $(this).find('> a').tooltip('dispose');
+                      }
+                  });
+                  $('body').removeClass('small-navigation');
+                  $('.theme-switcher input[type="checkbox"][id="small-navigation"]').prop('checked', false);
+              }
+          }
+          if (id === 'dark') {
+              if ($('body').hasClass('semi-dark')) {
+                  $('body').removeClass('semi-dark');
+                  $('.theme-switcher input[type="checkbox"][id="semi-dark"]').prop('checked', false);
+              }
+          }
+          if (id === 'semi-dark') {
+              if ($('body').hasClass('dark')) {
+                  $('body').removeClass('dark');
+                  $('.theme-switcher input[type="checkbox"][id="dark"]').prop('checked', false);
+              }
+          }
+          $('body').toggleClass(id);
+      });
+       $(document).on('click', '.theme-switcher .theme-switcher-button', function () {
+          $('.theme-switcher').toggleClass('open');
+      }); */
+    })(jQuery);
+    /***/
+
+  },
+
+  /***/
+  0: function _(module, exports, __nested_webpack_require_30556__) {
+    __nested_webpack_require_30556__(
+    /**/
+    "./resources/js/app.js");
+
+    module.exports = __nested_webpack_require_30556__(
+    /**/
+    "./public/assets/sass/app.scss");
+    /***/
+  }
+  /******/
+
+});
+
+/***/ }),
+
+/***/ "./resources/assets/sass/app.scss":
+/*!****************************************!*\
+  !*** ./resources/assets/sass/app.scss ***!
+  \****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+// extracted by mini-css-extract-plugin
+
+
+/***/ })
+
+/******/ 	});
+/************************************************************************/
+/******/ 	// The module cache
+/******/ 	var __webpack_module_cache__ = {};
+/******/ 	
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/ 		// Check if module is in cache
+/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
+/******/ 		if (cachedModule !== undefined) {
+/******/ 			return cachedModule.exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = __webpack_module_cache__[moduleId] = {
+/******/ 			// no module.id needed
+/******/ 			// no module.loaded needed
+/******/ 			exports: {}
+/******/ 		};
+/******/ 	
+/******/ 		// Execute the module function
+/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
+/******/ 	
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/ 	
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = __webpack_modules__;
+/******/ 	
+/************************************************************************/
+/******/ 	/* webpack/runtime/chunk loaded */
+/******/ 	(() => {
+/******/ 		var deferred = [];
+/******/ 		__webpack_require__.O = (result, chunkIds, fn, priority) => {
+/******/ 			if(chunkIds) {
+/******/ 				priority = priority || 0;
+/******/ 				for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
+/******/ 				deferred[i] = [chunkIds, fn, priority];
+/******/ 				return;
+/******/ 			}
+/******/ 			var notFulfilled = Infinity;
+/******/ 			for (var i = 0; i < deferred.length; i++) {
+/******/ 				var [chunkIds, fn, priority] = deferred[i];
+/******/ 				var fulfilled = true;
+/******/ 				for (var j = 0; j < chunkIds.length; j++) {
+/******/ 					if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
+/******/ 						chunkIds.splice(j--, 1);
+/******/ 					} else {
+/******/ 						fulfilled = false;
+/******/ 						if(priority < notFulfilled) notFulfilled = priority;
+/******/ 					}
+/******/ 				}
+/******/ 				if(fulfilled) {
+/******/ 					deferred.splice(i--, 1)
+/******/ 					var r = fn();
+/******/ 					if (r !== undefined) result = r;
+/******/ 				}
+/******/ 			}
+/******/ 			return result;
+/******/ 		};
+/******/ 	})();
+/******/ 	
+/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
+/******/ 	(() => {
+/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ 	})();
+/******/ 	
+/******/ 	/* webpack/runtime/make namespace object */
+/******/ 	(() => {
+/******/ 		// define __esModule on exports
+/******/ 		__webpack_require__.r = (exports) => {
+/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 			}
+/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 		};
+/******/ 	})();
+/******/ 	
+/******/ 	/* webpack/runtime/jsonp chunk loading */
+/******/ 	(() => {
+/******/ 		// no baseURI
+/******/ 		
+/******/ 		// object to store loaded and loading chunks
+/******/ 		// undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ 		// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
+/******/ 		var installedChunks = {
+/******/ 			"/assets/js/app": 0,
+/******/ 			"assets/css/app": 0
+/******/ 		};
+/******/ 		
+/******/ 		// no chunk on demand loading
+/******/ 		
+/******/ 		// no prefetching
+/******/ 		
+/******/ 		// no preloaded
+/******/ 		
+/******/ 		// no HMR
+/******/ 		
+/******/ 		// no HMR manifest
+/******/ 		
+/******/ 		__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
+/******/ 		
+/******/ 		// install a JSONP callback for chunk loading
+/******/ 		var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
+/******/ 			var [chunkIds, moreModules, runtime] = data;
+/******/ 			// add "moreModules" to the modules object,
+/******/ 			// then flag all "chunkIds" as loaded and fire callback
+/******/ 			var moduleId, chunkId, i = 0;
+/******/ 			if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
+/******/ 				for(moduleId in moreModules) {
+/******/ 					if(__webpack_require__.o(moreModules, moduleId)) {
+/******/ 						__webpack_require__.m[moduleId] = moreModules[moduleId];
+/******/ 					}
+/******/ 				}
+/******/ 				if(runtime) var result = runtime(__webpack_require__);
+/******/ 			}
+/******/ 			if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
+/******/ 			for(;i < chunkIds.length; i++) {
+/******/ 				chunkId = chunkIds[i];
+/******/ 				if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ 					installedChunks[chunkId][0]();
+/******/ 				}
+/******/ 				installedChunks[chunkIds[i]] = 0;
+/******/ 			}
+/******/ 			return __webpack_require__.O(result);
+/******/ 		}
+/******/ 		
+/******/ 		var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || [];
+/******/ 		chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
+/******/ 		chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
+/******/ 	})();
+/******/ 	
+/************************************************************************/
+/******/ 	
+/******/ 	// startup
+/******/ 	// Load entry module and return exports
+/******/ 	// This entry module depends on other loaded chunks and execution need to be delayed
+/******/ 	__webpack_require__.O(undefined, ["assets/css/app"], () => (__webpack_require__("./resources/assets/js/app.js")))
+/******/ 	var __webpack_exports__ = __webpack_require__.O(undefined, ["assets/css/app"], () => (__webpack_require__("./resources/assets/sass/app.scss")))
+/******/ 	__webpack_exports__ = __webpack_require__.O(__webpack_exports__);
+/******/ 	
+/******/ })()
+;
Index: public/css/app.css
===================================================================
--- public/css/app.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/css/app.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+
Index: public/fonts/fontawesome-webfont.svg
===================================================================
--- public/fonts/fontawesome-webfont.svg	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/fonts/fontawesome-webfont.svg	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2671 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg>
+<metadata>
+Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016
+ By ,,,
+Copyright Dave Gandy 2016. All rights reserved.
+</metadata>
+<defs>
+<font id="FontAwesome" horiz-adv-x="1536" >
+  <font-face 
+    font-family="FontAwesome"
+    font-weight="400"
+    font-stretch="normal"
+    units-per-em="1792"
+    panose-1="0 0 0 0 0 0 0 0 0 0"
+    ascent="1536"
+    descent="-256"
+    bbox="-1.02083 -256.962 2304.6 1537.02"
+    underline-thickness="0"
+    underline-position="0"
+    unicode-range="U+0020-F500"
+  />
+<missing-glyph horiz-adv-x="896" 
+d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" />
+    <glyph glyph-name=".notdef" horiz-adv-x="896" 
+d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name="nonmarkingreturn" horiz-adv-x="597" 
+ />
+    <glyph glyph-name="space" unicode=" " horiz-adv-x="448" 
+ />
+    <glyph glyph-name="dieresis" unicode="&#xa8;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="acute" unicode="&#xb4;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="trademark" unicode="&#x2122;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="infinity" unicode="&#x221e;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="notequal" unicode="&#x2260;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="glass" unicode="&#xf000;" horiz-adv-x="1792" 
+d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
+    <glyph glyph-name="music" unicode="&#xf001;" 
+d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89
+t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="search" unicode="&#xf002;" horiz-adv-x="1664" 
+d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5
+t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+    <glyph glyph-name="envelope" unicode="&#xf003;" horiz-adv-x="1792" 
+d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13
+t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z
+M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="heart" unicode="&#xf004;" horiz-adv-x="1792" 
+d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600
+q-18 -18 -44 -18z" />
+    <glyph glyph-name="star" unicode="&#xf005;" horiz-adv-x="1664" 
+d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455
+l502 -73q56 -9 56 -46z" />
+    <glyph glyph-name="star_empty" unicode="&#xf006;" horiz-adv-x="1664" 
+d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500
+l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
+    <glyph glyph-name="user" unicode="&#xf007;" horiz-adv-x="1280" 
+d="M1280 137q0 -109 -62.5 -187t-150.5 -78h-854q-88 0 -150.5 78t-62.5 187q0 85 8.5 160.5t31.5 152t58.5 131t94 89t134.5 34.5q131 -128 313 -128t313 128q76 0 134.5 -34.5t94 -89t58.5 -131t31.5 -152t8.5 -160.5zM1024 1024q0 -159 -112.5 -271.5t-271.5 -112.5
+t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
+    <glyph glyph-name="film" unicode="&#xf008;" horiz-adv-x="1920" 
+d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128
+q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45
+t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128
+q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19
+t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="th_large" unicode="&#xf009;" horiz-adv-x="1664" 
+d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38
+h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="th" unicode="&#xf00a;" horiz-adv-x="1792" 
+d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320
+q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28
+h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192
+q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="th_list" unicode="&#xf00b;" horiz-adv-x="1792" 
+d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960
+q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28
+h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="ok" unicode="&#xf00c;" horiz-adv-x="1792" 
+d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
+    <glyph glyph-name="remove" unicode="&#xf00d;" horiz-adv-x="1408" 
+d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68
+t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
+    <glyph glyph-name="zoom_in" unicode="&#xf00e;" horiz-adv-x="1664" 
+d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224
+q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5
+t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+    <glyph glyph-name="zoom_out" unicode="&#xf010;" horiz-adv-x="1664" 
+d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z
+M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z
+" />
+    <glyph glyph-name="off" unicode="&#xf011;" 
+d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5
+t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
+    <glyph glyph-name="signal" unicode="&#xf012;" horiz-adv-x="1792" 
+d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23
+v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="cog" unicode="&#xf013;" 
+d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38
+q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13
+l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22
+q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
+    <glyph glyph-name="trash" unicode="&#xf014;" horiz-adv-x="1408" 
+d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576
+q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832
+q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="home" unicode="&#xf015;" horiz-adv-x="1664" 
+d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5
+l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
+    <glyph glyph-name="file_alt" unicode="&#xf016;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+" />
+    <glyph glyph-name="time" unicode="&#xf017;" 
+d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="road" unicode="&#xf018;" horiz-adv-x="1920" 
+d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256
+q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
+    <glyph glyph-name="download_alt" unicode="&#xf019;" horiz-adv-x="1664" 
+d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136
+q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
+    <glyph glyph-name="download" unicode="&#xf01a;" 
+d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273
+t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="upload" unicode="&#xf01b;" 
+d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198
+t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="inbox" unicode="&#xf01c;" 
+d="M1023 576h316q-1 3 -2.5 8.5t-2.5 7.5l-212 496h-708l-212 -496q-1 -3 -2.5 -8.5t-2.5 -7.5h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552
+q25 -61 25 -123z" />
+    <glyph glyph-name="play_circle" unicode="&#xf01d;" 
+d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="repeat" unicode="&#xf01e;" 
+d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q15 0 25 -9
+l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
+    <glyph glyph-name="refresh" unicode="&#xf021;" 
+d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117
+q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5
+q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
+    <glyph glyph-name="list_alt" unicode="&#xf022;" horiz-adv-x="1792" 
+d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z
+M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5
+t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47
+t47 -113z" />
+    <glyph glyph-name="lock" unicode="&#xf023;" horiz-adv-x="1152" 
+d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="flag" unicode="&#xf024;" horiz-adv-x="1792" 
+d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48
+t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="headphones" unicode="&#xf025;" horiz-adv-x="1664" 
+d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78
+t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5
+t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
+    <glyph glyph-name="volume_off" unicode="&#xf026;" horiz-adv-x="768" 
+d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
+    <glyph glyph-name="volume_down" unicode="&#xf027;" horiz-adv-x="1152" 
+d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36
+t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
+    <glyph glyph-name="volume_up" unicode="&#xf028;" horiz-adv-x="1664" 
+d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36
+t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5
+t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289
+t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
+    <glyph glyph-name="qrcode" unicode="&#xf029;" horiz-adv-x="1408" 
+d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z
+M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
+    <glyph glyph-name="barcode" unicode="&#xf02a;" horiz-adv-x="1792" 
+d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z
+M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
+    <glyph glyph-name="tag" unicode="&#xf02b;" 
+d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5
+l715 -714q37 -39 37 -91z" />
+    <glyph glyph-name="tags" unicode="&#xf02c;" horiz-adv-x="1920" 
+d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5
+l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
+    <glyph glyph-name="book" unicode="&#xf02d;" horiz-adv-x="1664" 
+d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23
+q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906
+q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5
+t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
+    <glyph glyph-name="bookmark" unicode="&#xf02e;" horiz-adv-x="1280" 
+d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+    <glyph glyph-name="print" unicode="&#xf02f;" horiz-adv-x="1664" 
+d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68
+v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
+    <glyph glyph-name="camera" unicode="&#xf030;" horiz-adv-x="1920" 
+d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136
+q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="font" unicode="&#xf031;" horiz-adv-x="1664" 
+d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57
+q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -5 -0.5 -13.5t-0.5 -12.5q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5
+q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
+    <glyph glyph-name="bold" unicode="&#xf032;" horiz-adv-x="1408" 
+d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142
+q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5
+t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68 -0.5t68 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5
+t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
+    <glyph glyph-name="italic" unicode="&#xf033;" horiz-adv-x="1024" 
+d="M0 -126l17 85q22 7 61.5 16.5t72 19t59.5 23.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5
+q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
+    <glyph glyph-name="text_height" unicode="&#xf034;" horiz-adv-x="1792" 
+d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2
+t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5
+q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27
+q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
+    <glyph glyph-name="text_width" unicode="&#xf035;" 
+d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1
+t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27
+q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5
+t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49
+t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
+    <glyph glyph-name="align_left" unicode="&#xf036;" horiz-adv-x="1792" 
+d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45
+t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="align_center" unicode="&#xf037;" horiz-adv-x="1792" 
+d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19
+h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="align_right" unicode="&#xf038;" horiz-adv-x="1792" 
+d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45
+t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="align_justify" unicode="&#xf039;" horiz-adv-x="1792" 
+d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45
+t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="list" unicode="&#xf03a;" horiz-adv-x="1792" 
+d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5
+t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344
+q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5
+t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192
+q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
+    <glyph glyph-name="indent_left" unicode="&#xf03b;" horiz-adv-x="1792" 
+d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5
+t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088
+q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+    <glyph glyph-name="indent_right" unicode="&#xf03c;" horiz-adv-x="1792" 
+d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5
+t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088
+q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+    <glyph glyph-name="facetime_video" unicode="&#xf03d;" horiz-adv-x="1792" 
+d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5
+q39 -17 39 -59z" />
+    <glyph glyph-name="picture" unicode="&#xf03e;" horiz-adv-x="1920" 
+d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216
+q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="pencil" unicode="&#xf040;" 
+d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38
+q53 0 91 -38l235 -234q37 -39 37 -91z" />
+    <glyph glyph-name="map_marker" unicode="&#xf041;" horiz-adv-x="1024" 
+d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
+    <glyph glyph-name="adjust" unicode="&#xf042;" 
+d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="tint" unicode="&#xf043;" horiz-adv-x="1024" 
+d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362
+q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
+    <glyph glyph-name="edit" unicode="&#xf044;" horiz-adv-x="1792" 
+d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832
+q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92
+l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
+    <glyph glyph-name="share" unicode="&#xf045;" horiz-adv-x="1664" 
+d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832
+q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5
+t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
+    <glyph glyph-name="check" unicode="&#xf046;" horiz-adv-x="1664" 
+d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832
+q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110
+q24 -24 24 -57t-24 -57z" />
+    <glyph glyph-name="move" unicode="&#xf047;" horiz-adv-x="1792" 
+d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45
+t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+    <glyph glyph-name="step_backward" unicode="&#xf048;" horiz-adv-x="1024" 
+d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19z" />
+    <glyph glyph-name="fast_backward" unicode="&#xf049;" horiz-adv-x="1792" 
+d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19l710 710
+q19 19 32 13t13 -32v-710q4 10 13 19z" />
+    <glyph glyph-name="backward" unicode="&#xf04a;" horiz-adv-x="1664" 
+d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q4 10 13 19z" />
+    <glyph glyph-name="play" unicode="&#xf04b;" horiz-adv-x="1408" 
+d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
+    <glyph glyph-name="pause" unicode="&#xf04c;" 
+d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="stop" unicode="&#xf04d;" 
+d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="forward" unicode="&#xf04e;" horiz-adv-x="1664" 
+d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" />
+    <glyph glyph-name="fast_forward" unicode="&#xf050;" horiz-adv-x="1792" 
+d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19l-710 -710
+q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" />
+    <glyph glyph-name="step_forward" unicode="&#xf051;" horiz-adv-x="1024" 
+d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19z" />
+    <glyph glyph-name="eject" unicode="&#xf052;" horiz-adv-x="1538" 
+d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
+    <glyph glyph-name="chevron_left" unicode="&#xf053;" horiz-adv-x="1280" 
+d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
+    <glyph glyph-name="chevron_right" unicode="&#xf054;" horiz-adv-x="1280" 
+d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
+    <glyph glyph-name="plus_sign" unicode="&#xf055;" 
+d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5
+t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="minus_sign" unicode="&#xf056;" 
+d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
+t103 -385.5z" />
+    <glyph glyph-name="remove_sign" unicode="&#xf057;" 
+d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19
+q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="ok_sign" unicode="&#xf058;" 
+d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
+t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="question_sign" unicode="&#xf059;" 
+d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59
+q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
+t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="info_sign" unicode="&#xf05a;" 
+d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23
+t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="screenshot" unicode="&#xf05b;" 
+d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109
+q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143
+q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="remove_circle" unicode="&#xf05c;" 
+d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23
+l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5
+t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="ok_circle" unicode="&#xf05d;" 
+d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198
+t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="ban_circle" unicode="&#xf05e;" 
+d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61
+t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
+    <glyph glyph-name="arrow_left" unicode="&#xf060;" 
+d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5
+t32.5 -90.5z" />
+    <glyph glyph-name="arrow_right" unicode="&#xf061;" 
+d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
+    <glyph glyph-name="arrow_up" unicode="&#xf062;" horiz-adv-x="1664" 
+d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651
+q37 -39 37 -91z" />
+    <glyph glyph-name="arrow_down" unicode="&#xf063;" horiz-adv-x="1664" 
+d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
+    <glyph glyph-name="share_alt" unicode="&#xf064;" horiz-adv-x="1792" 
+d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22
+t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
+    <glyph glyph-name="resize_full" unicode="&#xf065;" 
+d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332
+q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="resize_small" unicode="&#xf066;" 
+d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45
+t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
+    <glyph glyph-name="plus" unicode="&#xf067;" horiz-adv-x="1408" 
+d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="minus" unicode="&#xf068;" horiz-adv-x="1408" 
+d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="asterisk" unicode="&#xf069;" horiz-adv-x="1664" 
+d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154
+q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
+    <glyph glyph-name="exclamation_sign" unicode="&#xf06a;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192
+q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
+    <glyph glyph-name="gift" unicode="&#xf06b;" 
+d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320
+q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5
+t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="leaf" unicode="&#xf06c;" horiz-adv-x="1792" 
+d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268
+q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-43 0 -63.5 17.5t-45.5 59.5q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5
+t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
+    <glyph glyph-name="fire" unicode="&#xf06d;" horiz-adv-x="1408" 
+d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1
+q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
+    <glyph glyph-name="eye_open" unicode="&#xf06e;" horiz-adv-x="1792" 
+d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5
+t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
+    <glyph glyph-name="eye_close" unicode="&#xf070;" horiz-adv-x="1792" 
+d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9
+q-106 -189 -316 -567t-315 -566l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5
+q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z
+" />
+    <glyph glyph-name="warning_sign" unicode="&#xf071;" horiz-adv-x="1792" 
+d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185
+q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
+    <glyph glyph-name="plane" unicode="&#xf072;" horiz-adv-x="1408" 
+d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9
+q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
+    <glyph glyph-name="calendar" unicode="&#xf073;" horiz-adv-x="1664" 
+d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z
+M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64
+q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47
+h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="random" unicode="&#xf074;" horiz-adv-x="1792" 
+d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1
+t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5
+v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111
+t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+    <glyph glyph-name="comment" unicode="&#xf075;" horiz-adv-x="1792" 
+d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281
+q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
+    <glyph glyph-name="magnet" unicode="&#xf076;" 
+d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384
+q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="chevron_up" unicode="&#xf077;" horiz-adv-x="1792" 
+d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
+    <glyph glyph-name="chevron_down" unicode="&#xf078;" horiz-adv-x="1792" 
+d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
+    <glyph glyph-name="retweet" unicode="&#xf079;" horiz-adv-x="1920" 
+d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -10 7 -21
+zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z
+" />
+    <glyph glyph-name="shopping_cart" unicode="&#xf07a;" horiz-adv-x="1664" 
+d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45
+t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="folder_close" unicode="&#xf07b;" horiz-adv-x="1664" 
+d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+    <glyph glyph-name="folder_open" unicode="&#xf07c;" horiz-adv-x="1920" 
+d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5
+t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
+    <glyph glyph-name="resize_vertical" unicode="&#xf07d;" horiz-adv-x="768" 
+d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
+    <glyph glyph-name="resize_horizontal" unicode="&#xf07e;" horiz-adv-x="1792" 
+d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+    <glyph glyph-name="bar_chart" unicode="&#xf080;" horiz-adv-x="2048" 
+d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
+    <glyph glyph-name="twitter_sign" unicode="&#xf081;" 
+d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4
+q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5
+t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="facebook_sign" unicode="&#xf082;" 
+d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960
+q0 119 84.5 203.5t203.5 84.5h960z" />
+    <glyph glyph-name="camera_retro" unicode="&#xf083;" horiz-adv-x="1792" 
+d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5
+t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280
+q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
+    <glyph glyph-name="key" unicode="&#xf084;" horiz-adv-x="1792" 
+d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26
+l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5
+t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
+    <glyph glyph-name="cogs" unicode="&#xf085;" horiz-adv-x="1920" 
+d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5
+t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -11 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5
+l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7
+l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -8 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31
+q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20
+t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68
+q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70
+q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
+    <glyph glyph-name="comments" unicode="&#xf086;" horiz-adv-x="1792" 
+d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224
+q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7
+q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
+    <glyph glyph-name="thumbs_up_alt" unicode="&#xf087;" 
+d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5
+t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769
+q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128
+q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
+    <glyph glyph-name="thumbs_down_alt" unicode="&#xf088;" 
+d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 31 18 69q0 37 -17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5
+t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z
+M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5
+h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -73 49 -163z" />
+    <glyph glyph-name="star_half" unicode="&#xf089;" horiz-adv-x="896" 
+d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
+    <glyph glyph-name="heart_empty" unicode="&#xf08a;" horiz-adv-x="1792" 
+d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559
+q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5
+q224 0 351 -124t127 -344z" />
+    <glyph glyph-name="signout" unicode="&#xf08b;" horiz-adv-x="1664" 
+d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704
+q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
+    <glyph glyph-name="linkedin_sign" unicode="&#xf08c;" 
+d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5
+q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="pushpin" unicode="&#xf08d;" horiz-adv-x="1152" 
+d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38
+t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
+    <glyph glyph-name="external_link" unicode="&#xf08e;" horiz-adv-x="1792" 
+d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320
+q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="signin" unicode="&#xf090;" 
+d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5
+q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="trophy" unicode="&#xf091;" horiz-adv-x="1664" 
+d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91
+t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96
+q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="github_sign" unicode="&#xf092;" 
+d="M519 336q4 6 -3 13q-9 7 -14 2q-4 -6 3 -13q9 -7 14 -2zM491 377q-5 7 -12 4q-6 -4 0 -12q7 -8 12 -5q6 4 0 13zM450 417q2 4 -5 8q-7 2 -8 -2q-3 -5 4 -8q8 -2 9 2zM471 394q2 1 1.5 4.5t-3.5 5.5q-6 7 -10 3t1 -11q6 -6 11 -2zM557 319q2 7 -9 11q-9 3 -13 -4
+q-2 -7 9 -11q9 -3 13 4zM599 316q0 8 -12 8q-10 0 -10 -8t11 -8t11 8zM638 323q-2 7 -13 5t-9 -9q2 -8 12 -6t10 10zM1280 640q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -167 98 -300.5t252 -185.5q18 -3 26.5 5t8.5 20q0 52 -1 95q-6 -1 -15.5 -2.5t-35.5 -2t-48 4
+t-43.5 20t-29.5 41.5q-23 59 -57 74q-2 1 -4.5 3.5l-8 8t-7 9.5t4 7.5t19.5 3.5q6 0 15 -2t30 -15.5t33 -35.5q16 -28 37.5 -42t43.5 -14t38 3.5t30 9.5q7 47 33 69q-49 6 -86 18.5t-73 39t-55.5 76t-19.5 119.5q0 79 53 137q-24 62 5 136q19 6 54.5 -7.5t60.5 -29.5l26 -16
+q58 17 128 17t128 -17q11 7 28.5 18t55.5 26t57 9q29 -74 5 -136q53 -58 53 -137q0 -57 -14 -100.5t-35.5 -70t-53.5 -44.5t-62.5 -26t-68.5 -12q35 -31 35 -95q0 -40 -0.5 -89t-0.5 -51q0 -12 8.5 -20t26.5 -5q154 52 252 185.5t98 300.5zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="upload_alt" unicode="&#xf093;" horiz-adv-x="1664" 
+d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92
+t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
+    <glyph glyph-name="lemon" unicode="&#xf094;" 
+d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5
+q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44
+q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5
+q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -13 2 -25t3.5 -16.5t7.5 -20.5t8 -20q16 -40 25 -118.5t9 -136.5z" />
+    <glyph glyph-name="phone" unicode="&#xf095;" horiz-adv-x="1408" 
+d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -53 3.5t-57.5 12.5t-47 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-127 79 -264 216t-216 264q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47t-12.5 57.5t-3.5 53q0 92 51 186
+q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174q2 -1 19 -11.5t24 -14
+t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
+    <glyph glyph-name="check_empty" unicode="&#xf096;" horiz-adv-x="1408" 
+d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832
+q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="bookmark_empty" unicode="&#xf097;" horiz-adv-x="1280" 
+d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289
+q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+    <glyph glyph-name="phone_sign" unicode="&#xf098;" 
+d="M1280 343q0 11 -2 16t-18 16.5t-40.5 25t-47.5 26.5t-45.5 25t-28.5 15q-5 3 -19 13t-25 15t-21 5q-15 0 -36.5 -20.5t-39.5 -45t-38.5 -45t-33.5 -20.5q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170 126.5t-127 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5
+t-3.5 16.5q0 13 20.5 33.5t45 38.5t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5
+t320.5 -216.5q6 -2 30 -11t33 -12.5t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z
+" />
+    <glyph glyph-name="twitter" unicode="&#xf099;" horiz-adv-x="1664" 
+d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41
+q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
+    <glyph glyph-name="facebook" unicode="&#xf09a;" horiz-adv-x="1024" 
+d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
+    <glyph glyph-name="github" unicode="&#xf09b;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -40 7t-13 30q0 3 0.5 76.5t0.5 134.5q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 119 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24
+q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-85 13.5q-45 -113 -8 -204q-79 -87 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-39 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5
+t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -88.5t0.5 -54.5q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103zM291 305q3 7 -7 12
+q-10 3 -13 -2q-3 -7 7 -12q9 -6 13 2zM322 271q7 5 -2 16q-10 9 -16 3q-7 -5 2 -16q10 -10 16 -3zM352 226q9 7 0 19q-8 13 -17 6q-9 -5 0 -18t17 -7zM394 184q8 8 -4 19q-12 12 -20 3q-9 -8 4 -19q12 -12 20 -3zM451 159q3 11 -13 16q-15 4 -19 -7t13 -15q15 -6 19 6z
+M514 154q0 13 -17 11q-16 0 -16 -11q0 -13 17 -11q16 0 16 11zM572 164q-2 11 -18 9q-16 -3 -14 -15t18 -8t14 14z" />
+    <glyph glyph-name="unlock" unicode="&#xf09c;" horiz-adv-x="1664" 
+d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5
+t316.5 -131.5t131.5 -316.5z" />
+    <glyph glyph-name="credit_card" unicode="&#xf09d;" horiz-adv-x="1920" 
+d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608
+q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
+    <glyph glyph-name="rss" unicode="&#xf09e;" horiz-adv-x="1408" 
+d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5
+t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294
+q187 -186 294 -425.5t120 -501.5z" />
+    <glyph glyph-name="hdd" unicode="&#xf0a0;" 
+d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5
+h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75
+l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
+    <glyph glyph-name="bullhorn" unicode="&#xf0a1;" horiz-adv-x="1792" 
+d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5
+t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
+    <glyph glyph-name="bell" unicode="&#xf0a2;" horiz-adv-x="1792" 
+d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z
+M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5
+t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
+    <glyph glyph-name="certificate" unicode="&#xf0a3;" 
+d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70
+l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70
+l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
+    <glyph glyph-name="hand_right" unicode="&#xf0a4;" horiz-adv-x="1792" 
+d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106
+q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43
+q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5
+t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
+    <glyph glyph-name="hand_left" unicode="&#xf0a5;" horiz-adv-x="1792" 
+d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-8 9 -12 14q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576q-50 0 -89 -38.5
+t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45z
+M1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128q0 122 81.5 189t206.5 67
+q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
+    <glyph glyph-name="hand_up" unicode="&#xf0a6;" 
+d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576
+q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5
+t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76
+q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
+    <glyph glyph-name="hand_down" unicode="&#xf0a7;" 
+d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33
+t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580
+q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100
+q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
+    <glyph glyph-name="circle_arrow_left" unicode="&#xf0a8;" 
+d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="circle_arrow_right" unicode="&#xf0a9;" 
+d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="circle_arrow_up" unicode="&#xf0aa;" 
+d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="circle_arrow_down" unicode="&#xf0ab;" 
+d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="globe" unicode="&#xf0ac;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11
+q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 11t-9.5 10q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5
+q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5
+q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5
+t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-4 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3
+q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25
+q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5
+t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5
+t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10.5t17 -19.5q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21
+q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5
+q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3
+q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5
+t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q8 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5
+q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7
+q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
+    <glyph glyph-name="wrench" unicode="&#xf0ad;" horiz-adv-x="1664" 
+d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5
+t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
+    <glyph glyph-name="tasks" unicode="&#xf0ae;" horiz-adv-x="1792" 
+d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19
+t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="filter" unicode="&#xf0b0;" horiz-adv-x="1408" 
+d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
+    <glyph glyph-name="briefcase" unicode="&#xf0b1;" horiz-adv-x="1792" 
+d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68
+t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="fullscreen" unicode="&#xf0b2;" 
+d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144
+l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z
+" />
+    <glyph glyph-name="group" unicode="&#xf0c0;" horiz-adv-x="1920" 
+d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5
+t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75
+t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5
+t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
+    <glyph glyph-name="link" unicode="&#xf0c1;" horiz-adv-x="1664" 
+d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26
+l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15
+t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207
+q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
+    <glyph glyph-name="cloud" unicode="&#xf0c2;" horiz-adv-x="1920" 
+d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z
+" />
+    <glyph glyph-name="beaker" unicode="&#xf0c3;" horiz-adv-x="1664" 
+d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
+    <glyph glyph-name="cut" unicode="&#xf0c4;" horiz-adv-x="1792" 
+d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84
+q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148
+q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108
+q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6
+q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
+    <glyph glyph-name="copy" unicode="&#xf0c5;" horiz-adv-x="1792" 
+d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299
+h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
+    <glyph glyph-name="paper_clip" unicode="&#xf0c6;" horiz-adv-x="1408" 
+d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181
+l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235
+z" />
+    <glyph glyph-name="save" unicode="&#xf0c7;" 
+d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5
+h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
+    <glyph glyph-name="sign_blank" unicode="&#xf0c8;" 
+d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="reorder" unicode="&#xf0c9;" 
+d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45
+t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="ul" unicode="&#xf0ca;" horiz-adv-x="1792" 
+d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5
+t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z
+M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+    <glyph glyph-name="ol" unicode="&#xf0cb;" horiz-adv-x="1792" 
+d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362
+q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5
+t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 121.5t0.5 121.5v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216
+q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+    <glyph glyph-name="strikethrough" unicode="&#xf0cc;" horiz-adv-x="1792" 
+d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 98 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6
+l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -56 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23
+l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
+    <glyph glyph-name="underline" unicode="&#xf0cd;" 
+d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47
+q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41
+q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472
+q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
+    <glyph glyph-name="table" unicode="&#xf0ce;" horiz-adv-x="1664" 
+d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23
+v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192
+q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192
+q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113
+z" />
+    <glyph glyph-name="magic" unicode="&#xf0d0;" horiz-adv-x="1664" 
+d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276
+l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
+    <glyph glyph-name="truck" unicode="&#xf0d1;" horiz-adv-x="1792" 
+d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5
+t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38
+t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="pinterest" unicode="&#xf0d2;" 
+d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134
+q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33
+q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="pinterest_sign" unicode="&#xf0d3;" 
+d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5
+t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5
+t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
+    <glyph glyph-name="google_plus_sign" unicode="&#xf0d4;" 
+d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585
+h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="google_plus" unicode="&#xf0d5;" horiz-adv-x="2304" 
+d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62
+q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
+    <glyph glyph-name="money" unicode="&#xf0d6;" horiz-adv-x="1920" 
+d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384
+v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="caret_down" unicode="&#xf0d7;" horiz-adv-x="1024" 
+d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="caret_up" unicode="&#xf0d8;" horiz-adv-x="1024" 
+d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+    <glyph glyph-name="caret_left" unicode="&#xf0d9;" horiz-adv-x="640" 
+d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
+    <glyph glyph-name="caret_right" unicode="&#xf0da;" horiz-adv-x="640" 
+d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
+    <glyph glyph-name="columns" unicode="&#xf0db;" horiz-adv-x="1664" 
+d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="sort" unicode="&#xf0dc;" horiz-adv-x="1024" 
+d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+    <glyph glyph-name="sort_down" unicode="&#xf0dd;" horiz-adv-x="1024" 
+d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="sort_up" unicode="&#xf0de;" horiz-adv-x="1024" 
+d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+    <glyph glyph-name="envelope_alt" unicode="&#xf0e0;" horiz-adv-x="1792" 
+d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123
+q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
+    <glyph glyph-name="linkedin" unicode="&#xf0e1;" 
+d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329
+q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
+    <glyph glyph-name="undo" unicode="&#xf0e2;" 
+d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5
+t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
+    <glyph glyph-name="legal" unicode="&#xf0e3;" horiz-adv-x="1792" 
+d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5
+t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14
+q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28
+q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
+    <glyph glyph-name="dashboard" unicode="&#xf0e4;" horiz-adv-x="1792" 
+d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5
+t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5
+t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29
+q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="comment_alt" unicode="&#xf0e5;" horiz-adv-x="1792" 
+d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640
+q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5
+t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
+    <glyph glyph-name="comments_alt" unicode="&#xf0e6;" horiz-adv-x="1792" 
+d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257
+t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5
+t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129
+q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
+    <glyph glyph-name="bolt" unicode="&#xf0e7;" horiz-adv-x="896" 
+d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
+    <glyph glyph-name="sitemap" unicode="&#xf0e8;" horiz-adv-x="1792" 
+d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320
+q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68
+z" />
+    <glyph glyph-name="umbrella" unicode="&#xf0e9;" horiz-adv-x="1664" 
+d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97
+q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69
+q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
+    <glyph glyph-name="paste" unicode="&#xf0ea;" horiz-adv-x="1792" 
+d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28
+h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
+    <glyph glyph-name="light_bulb" unicode="&#xf0eb;" horiz-adv-x="1024" 
+d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134
+q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47
+q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5
+t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
+    <glyph glyph-name="exchange" unicode="&#xf0ec;" horiz-adv-x="1792" 
+d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9
+q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+    <glyph glyph-name="cloud_download" unicode="&#xf0ed;" horiz-adv-x="1920" 
+d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088
+q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+    <glyph glyph-name="cloud_upload" unicode="&#xf0ee;" horiz-adv-x="1920" 
+d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088
+q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+    <glyph glyph-name="user_md" unicode="&#xf0f0;" horiz-adv-x="1408" 
+d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56
+t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68
+t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5
+t271.5 -112.5t112.5 -271.5z" />
+    <glyph glyph-name="stethoscope" unicode="&#xf0f1;" horiz-adv-x="1408" 
+d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48
+t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252
+t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
+    <glyph glyph-name="suitcase" unicode="&#xf0f2;" horiz-adv-x="1792" 
+d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66
+t66 -158z" />
+    <glyph glyph-name="bell_alt" unicode="&#xf0f3;" horiz-adv-x="1792" 
+d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5
+t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
+    <glyph glyph-name="coffee" unicode="&#xf0f4;" horiz-adv-x="1920" 
+d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45
+t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
+    <glyph glyph-name="food" unicode="&#xf0f5;" horiz-adv-x="1408" 
+d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45
+t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="file_text_alt" unicode="&#xf0f6;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704
+q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
+    <glyph glyph-name="building" unicode="&#xf0f7;" horiz-adv-x="1408" 
+d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="hospital" unicode="&#xf0f8;" horiz-adv-x="1408" 
+d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5
+t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320
+v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="ambulance" unicode="&#xf0f9;" horiz-adv-x="1920" 
+d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5
+t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152
+q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="medkit" unicode="&#xf0fa;" horiz-adv-x="1792" 
+d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32
+q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
+    <glyph glyph-name="fighter_jet" unicode="&#xf0fb;" horiz-adv-x="1920" 
+d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96
+q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q128 -28 200 -52t80 -34z" />
+    <glyph glyph-name="beer" unicode="&#xf0fc;" horiz-adv-x="1664" 
+d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
+    <glyph glyph-name="h_sign" unicode="&#xf0fd;" 
+d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="f0fe" unicode="&#xf0fe;" 
+d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="double_angle_left" unicode="&#xf100;" horiz-adv-x="1024" 
+d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23
+t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
+    <glyph glyph-name="double_angle_right" unicode="&#xf101;" horiz-adv-x="1024" 
+d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23
+l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+    <glyph glyph-name="double_angle_up" unicode="&#xf102;" horiz-adv-x="1152" 
+d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393
+q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+    <glyph glyph-name="double_angle_down" unicode="&#xf103;" horiz-adv-x="1152" 
+d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23
+t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+    <glyph glyph-name="angle_left" unicode="&#xf104;" horiz-adv-x="640" 
+d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+    <glyph glyph-name="angle_right" unicode="&#xf105;" horiz-adv-x="640" 
+d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+    <glyph glyph-name="angle_up" unicode="&#xf106;" horiz-adv-x="1152" 
+d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+    <glyph glyph-name="angle_down" unicode="&#xf107;" horiz-adv-x="1152" 
+d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+    <glyph glyph-name="desktop" unicode="&#xf108;" horiz-adv-x="1920" 
+d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19
+t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="laptop" unicode="&#xf109;" horiz-adv-x="1920" 
+d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z
+M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
+    <glyph glyph-name="tablet" unicode="&#xf10a;" horiz-adv-x="1152" 
+d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832
+q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="mobile_phone" unicode="&#xf10b;" horiz-adv-x="768" 
+d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136
+q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="circle_blank" unicode="&#xf10c;" 
+d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103
+t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="quote_left" unicode="&#xf10d;" horiz-adv-x="1664" 
+d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z
+M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
+    <glyph glyph-name="quote_right" unicode="&#xf10e;" horiz-adv-x="1664" 
+d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216
+v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
+    <glyph glyph-name="spinner" unicode="&#xf110;" horiz-adv-x="1792" 
+d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5
+t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z
+M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5
+q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
+    <glyph glyph-name="circle" unicode="&#xf111;" 
+d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="reply" unicode="&#xf112;" horiz-adv-x="1792" 
+d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19
+l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
+    <glyph glyph-name="github_alt" unicode="&#xf113;" horiz-adv-x="1664" 
+d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320
+q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86
+t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218
+q0 -87 -27 -168q136 -160 136 -398z" />
+    <glyph glyph-name="folder_close_alt" unicode="&#xf114;" horiz-adv-x="1664" 
+d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320
+q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+    <glyph glyph-name="folder_open_alt" unicode="&#xf115;" horiz-adv-x="1920" 
+d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68
+v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z
+" />
+    <glyph glyph-name="expand_alt" unicode="&#xf116;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="collapse_alt" unicode="&#xf117;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="smile" unicode="&#xf118;" 
+d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
+t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5
+t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="frown" unicode="&#xf119;" 
+d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
+t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204
+t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="meh" unicode="&#xf11a;" 
+d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
+t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="gamepad" unicode="&#xf11b;" horiz-adv-x="1920" 
+d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5
+t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150
+t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
+    <glyph glyph-name="keyboard" unicode="&#xf11c;" horiz-adv-x="1920" 
+d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16
+h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16
+h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96
+q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896
+h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
+    <glyph glyph-name="flag_alt" unicode="&#xf11d;" horiz-adv-x="1792" 
+d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9
+h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102
+q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+    <glyph glyph-name="flag_checkered" unicode="&#xf11e;" horiz-adv-x="1792" 
+d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2
+q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266
+q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8
+q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+    <glyph glyph-name="terminal" unicode="&#xf120;" horiz-adv-x="1664" 
+d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9
+t9 -23z" />
+    <glyph glyph-name="code" unicode="&#xf121;" horiz-adv-x="1920" 
+d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5
+l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
+    <glyph glyph-name="reply_all" unicode="&#xf122;" horiz-adv-x="1792" 
+d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1
+q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
+    <glyph glyph-name="star_half_empty" unicode="&#xf123;" horiz-adv-x="1664" 
+d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5
+l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
+    <glyph glyph-name="location_arrow" unicode="&#xf124;" horiz-adv-x="1408" 
+d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
+    <glyph glyph-name="crop" unicode="&#xf125;" horiz-adv-x="1664" 
+d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23
+v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="code_fork" unicode="&#xf126;" horiz-adv-x="1024" 
+d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5
+q-2 -287 -226 -414q-67 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497
+q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
+    <glyph glyph-name="unlink" unicode="&#xf127;" horiz-adv-x="1664" 
+d="M439 265l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320
+q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18
+l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9
+t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
+    <glyph glyph-name="question" unicode="&#xf128;" horiz-adv-x="1024" 
+d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5
+t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
+    <glyph glyph-name="_279" unicode="&#xf129;" horiz-adv-x="640" 
+d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192
+q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="exclamation" unicode="&#xf12a;" horiz-adv-x="640" 
+d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
+    <glyph glyph-name="superscript" unicode="&#xf12b;" 
+d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z
+M1534 846v-206h-514l-3 27q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5
+t-65.5 -51.5t-30.5 -63h232v80h126z" />
+    <glyph glyph-name="subscript" unicode="&#xf12c;" 
+d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z
+M1536 -50v-206h-514l-4 27q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73
+h232v80h126z" />
+    <glyph glyph-name="_283" unicode="&#xf12d;" horiz-adv-x="1920" 
+d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
+    <glyph glyph-name="puzzle_piece" unicode="&#xf12e;" horiz-adv-x="1664" 
+d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5
+t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89
+q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117
+q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
+    <glyph glyph-name="microphone" unicode="&#xf130;" horiz-adv-x="1152" 
+d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5
+t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
+    <glyph glyph-name="microphone_off" unicode="&#xf131;" horiz-adv-x="1408" 
+d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128
+q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23
+t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
+    <glyph glyph-name="shield" unicode="&#xf132;" horiz-adv-x="1280" 
+d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150
+t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="calendar_empty" unicode="&#xf133;" horiz-adv-x="1664" 
+d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280
+q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="fire_extinguisher" unicode="&#xf134;" horiz-adv-x="1408" 
+d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800
+q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113
+q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
+    <glyph glyph-name="rocket" unicode="&#xf135;" horiz-adv-x="1664" 
+d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1
+q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
+    <glyph glyph-name="maxcdn" unicode="&#xf136;" horiz-adv-x="1792" 
+d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
+    <glyph glyph-name="chevron_sign_left" unicode="&#xf137;" 
+d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
+t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="chevron_sign_right" unicode="&#xf138;" 
+d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
+t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="chevron_sign_up" unicode="&#xf139;" 
+d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
+t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="chevron_sign_down" unicode="&#xf13a;" 
+d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
+t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="html5" unicode="&#xf13b;" horiz-adv-x="1408" 
+d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
+    <glyph glyph-name="css3" unicode="&#xf13c;" horiz-adv-x="1792" 
+d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
+    <glyph glyph-name="anchor" unicode="&#xf13d;" horiz-adv-x="1792" 
+d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352
+q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19
+t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="unlock_alt" unicode="&#xf13e;" horiz-adv-x="1152" 
+d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181
+v-320h736z" />
+    <glyph glyph-name="bullseye" unicode="&#xf140;" 
+d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150
+t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="ellipsis_horizontal" unicode="&#xf141;" horiz-adv-x="1408" 
+d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192
+q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="ellipsis_vertical" unicode="&#xf142;" horiz-adv-x="384" 
+d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192
+q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="_303" unicode="&#xf143;" 
+d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 233 -176.5 396.5t-396.5 176.5q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128
+q13 0 23 10t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="play_sign" unicode="&#xf144;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56
+q16 -8 32 -8q17 0 32 9z" />
+    <glyph glyph-name="ticket" unicode="&#xf145;" horiz-adv-x="1792" 
+d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136
+t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
+    <glyph glyph-name="minus_sign_alt" unicode="&#xf146;" 
+d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
+t84.5 -203.5z" />
+    <glyph glyph-name="check_minus" unicode="&#xf147;" horiz-adv-x="1408" 
+d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5
+t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="level_up" unicode="&#xf148;" horiz-adv-x="1024" 
+d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
+    <glyph glyph-name="level_down" unicode="&#xf149;" horiz-adv-x="1024" 
+d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
+    <glyph glyph-name="check_sign" unicode="&#xf14a;" 
+d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5
+t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="edit_sign" unicode="&#xf14b;" 
+d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120
+v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_312" unicode="&#xf14c;" 
+d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960
+q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="share_sign" unicode="&#xf14d;" 
+d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q11 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5
+t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="compass" unicode="&#xf14e;" 
+d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
+t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="collapse" unicode="&#xf150;" 
+d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120
+v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="collapse_top" unicode="&#xf151;" 
+d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_317" unicode="&#xf152;" 
+d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5
+t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="eur" unicode="&#xf153;" horiz-adv-x="1024" 
+d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9
+t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26
+l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
+    <glyph glyph-name="gbp" unicode="&#xf154;" horiz-adv-x="1024" 
+d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7
+q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
+    <glyph glyph-name="usd" unicode="&#xf155;" horiz-adv-x="1024" 
+d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43
+t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5
+t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50
+t53 -63.5t31.5 -76.5t13 -94z" />
+    <glyph glyph-name="inr" unicode="&#xf156;" horiz-adv-x="898" 
+d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102
+q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="jpy" unicode="&#xf157;" horiz-adv-x="1027" 
+d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61
+l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
+    <glyph glyph-name="rub" unicode="&#xf158;" horiz-adv-x="1280" 
+d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128
+q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
+    <glyph glyph-name="krw" unicode="&#xf159;" horiz-adv-x="1792" 
+d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23
+t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28
+q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="btc" unicode="&#xf15a;" horiz-adv-x="1280" 
+d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164
+l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30
+t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
+    <glyph glyph-name="file" unicode="&#xf15b;" 
+d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
+    <glyph glyph-name="file_text" unicode="&#xf15c;" 
+d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704
+q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
+    <glyph glyph-name="sort_by_alphabet" unicode="&#xf15d;" horiz-adv-x="1664" 
+d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23
+v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162
+l230 -662h70z" />
+    <glyph glyph-name="_329" unicode="&#xf15e;" horiz-adv-x="1664" 
+d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150
+v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248
+v119h121z" />
+    <glyph glyph-name="sort_by_attributes" unicode="&#xf160;" horiz-adv-x="1792" 
+d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832
+q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256
+q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="sort_by_attributes_alt" unicode="&#xf161;" horiz-adv-x="1792" 
+d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192
+q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832
+q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="sort_by_order" unicode="&#xf162;" 
+d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23
+zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5
+t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
+    <glyph glyph-name="sort_by_order_alt" unicode="&#xf163;" 
+d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9
+t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13
+q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
+    <glyph glyph-name="_334" unicode="&#xf164;" horiz-adv-x="1664" 
+d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76
+q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5
+t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
+    <glyph glyph-name="_335" unicode="&#xf165;" horiz-adv-x="1664" 
+d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135
+t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121
+t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
+    <glyph glyph-name="youtube_sign" unicode="&#xf166;" 
+d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 17 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15
+q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38
+q21 -29 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5
+q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78q7 -23 23 -69l24 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38
+q-51 0 -78 -38q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5
+h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="youtube" unicode="&#xf167;" 
+d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73
+q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51
+q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99
+q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-38 -51 -106 -51q-67 0 -105 51
+q-28 38 -28 118v175q0 80 28 117q38 51 105 51q68 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
+    <glyph glyph-name="xing" unicode="&#xf168;" horiz-adv-x="1408" 
+d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942
+q25 45 64 45h241q22 0 31 -15z" />
+    <glyph glyph-name="xing_sign" unicode="&#xf169;" 
+d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1
+l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="youtube_play" unicode="&#xf16a;" horiz-adv-x="1792" 
+d="M711 408l484 250l-484 253v-503zM896 1270q168 0 324.5 -4.5t229.5 -9.5l73 -4q1 0 17 -1.5t23 -3t23.5 -4.5t28.5 -8t28 -13t31 -19.5t29 -26.5q6 -6 15.5 -18.5t29 -58.5t26.5 -101q8 -64 12.5 -136.5t5.5 -113.5v-40v-136q1 -145 -18 -290q-7 -55 -25 -99.5t-32 -61.5
+l-14 -17q-14 -15 -29 -26.5t-31 -19t-28 -12.5t-28.5 -8t-24 -4.5t-23 -3t-16.5 -1.5q-251 -19 -627 -19q-207 2 -359.5 6.5t-200.5 7.5l-49 4l-36 4q-36 5 -54.5 10t-51 21t-56.5 41q-6 6 -15.5 18.5t-29 58.5t-26.5 101q-8 64 -12.5 136.5t-5.5 113.5v40v136
+q-1 145 18 290q7 55 25 99.5t32 61.5l14 17q14 15 29 26.5t31 19.5t28 13t28.5 8t23.5 4.5t23 3t17 1.5q251 18 627 18z" />
+    <glyph glyph-name="dropbox" unicode="&#xf16b;" horiz-adv-x="1792" 
+d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
+    <glyph glyph-name="stackexchange" unicode="&#xf16c;" 
+d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" />
+    <glyph glyph-name="instagram" unicode="&#xf16d;" 
+d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1162 640q0 -164 -115 -279t-279 -115t-279 115t-115 279t115 279t279 115t279 -115t115 -279zM1270 1050q0 -38 -27 -65t-65 -27t-65 27t-27 65t27 65t65 27t65 -27t27 -65zM768 1270
+q-7 0 -76.5 0.5t-105.5 0t-96.5 -3t-103 -10t-71.5 -18.5q-50 -20 -88 -58t-58 -88q-11 -29 -18.5 -71.5t-10 -103t-3 -96.5t0 -105.5t0.5 -76.5t-0.5 -76.5t0 -105.5t3 -96.5t10 -103t18.5 -71.5q20 -50 58 -88t88 -58q29 -11 71.5 -18.5t103 -10t96.5 -3t105.5 0t76.5 0.5
+t76.5 -0.5t105.5 0t96.5 3t103 10t71.5 18.5q50 20 88 58t58 88q11 29 18.5 71.5t10 103t3 96.5t0 105.5t-0.5 76.5t0.5 76.5t0 105.5t-3 96.5t-10 103t-18.5 71.5q-20 50 -58 88t-88 58q-29 11 -71.5 18.5t-103 10t-96.5 3t-105.5 0t-76.5 -0.5zM1536 640q0 -229 -5 -317
+q-10 -208 -124 -322t-322 -124q-88 -5 -317 -5t-317 5q-208 10 -322 124t-124 322q-5 88 -5 317t5 317q10 208 124 322t322 124q88 5 317 5t317 -5q208 -10 322 -124t124 -322q5 -88 5 -317z" />
+    <glyph glyph-name="flickr" unicode="&#xf16e;" 
+d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150
+t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
+    <glyph glyph-name="adn" unicode="&#xf170;" 
+d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="f171" unicode="&#xf171;" horiz-adv-x="1408" 
+d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22
+t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18
+t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5
+t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
+    <glyph glyph-name="bitbucket_sign" unicode="&#xf172;" 
+d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5
+t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z
+M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120
+v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="tumblr" unicode="&#xf173;" horiz-adv-x="1024" 
+d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14
+q78 2 134 29z" />
+    <glyph glyph-name="tumblr_sign" unicode="&#xf174;" 
+d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z
+M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="long_arrow_down" unicode="&#xf175;" horiz-adv-x="768" 
+d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
+    <glyph glyph-name="long_arrow_up" unicode="&#xf176;" horiz-adv-x="768" 
+d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
+    <glyph glyph-name="long_arrow_left" unicode="&#xf177;" horiz-adv-x="1792" 
+d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="long_arrow_right" unicode="&#xf178;" horiz-adv-x="1792" 
+d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
+    <glyph glyph-name="apple" unicode="&#xf179;" horiz-adv-x="1408" 
+d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q113 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65
+q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
+    <glyph glyph-name="windows" unicode="&#xf17a;" horiz-adv-x="1664" 
+d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
+    <glyph glyph-name="android" unicode="&#xf17b;" horiz-adv-x="1408" 
+d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30
+t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5
+h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
+    <glyph glyph-name="linux" unicode="&#xf17c;" 
+d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-10 -11 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z
+M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7
+q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15
+q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5
+t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19
+q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63
+q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18q-2 -1 -4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92
+q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152
+q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-6 0 -8 -2t0 -4
+t5 -3q14 -4 18 -31q0 -3 8 2q2 2 2 3zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5
+t-30 -18.5t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43
+q-19 4 -51 9.5t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49
+t-14 -48q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54
+q110 143 124 195q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5
+t-40.5 -33.5t-61 -14q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5
+t15.5 47.5q1 -31 8 -56.5t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
+    <glyph glyph-name="dribble" unicode="&#xf17d;" 
+d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81
+t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19
+q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -5 6.5 -17t7.5 -17q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6
+t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="skype" unicode="&#xf17e;" 
+d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5
+t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5
+q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80
+q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
+    <glyph glyph-name="foursquare" unicode="&#xf180;" horiz-adv-x="1280" 
+d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z
+M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324
+l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
+    <glyph glyph-name="trello" unicode="&#xf181;" 
+d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408
+q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="female" unicode="&#xf182;" horiz-adv-x="1280" 
+d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43
+q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+    <glyph glyph-name="male" unicode="&#xf183;" horiz-adv-x="1024" 
+d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z
+M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+    <glyph glyph-name="gittip" unicode="&#xf184;" 
+d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
+t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="sun" unicode="&#xf185;" horiz-adv-x="1792" 
+d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4
+l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94
+q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
+    <glyph glyph-name="_366" unicode="&#xf186;" 
+d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61
+t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
+    <glyph glyph-name="archive" unicode="&#xf187;" horiz-adv-x="1792" 
+d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536
+q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="bug" unicode="&#xf188;" horiz-adv-x="1664" 
+d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207
+q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19
+t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
+    <glyph glyph-name="vk" unicode="&#xf189;" horiz-adv-x="1920" 
+d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-40 -51 -55 -72t-30.5 -49.5t-12 -42t13 -34.5t32.5 -43t57 -53q4 -2 5 -4q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58
+t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6
+q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q16 19 38 30q53 26 239 24
+q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2
+q39 5 64 -2.5t31 -16.5z" />
+    <glyph glyph-name="weibo" unicode="&#xf18a;" horiz-adv-x="1792" 
+d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12
+q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422
+q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178
+q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z
+M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
+    <glyph glyph-name="renren" unicode="&#xf18b;" 
+d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495
+q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
+    <glyph glyph-name="_372" unicode="&#xf18c;" horiz-adv-x="1408" 
+d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5
+t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56
+t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -4 1 -50t-1 -72q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5
+t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
+    <glyph glyph-name="stack_exchange" unicode="&#xf18d;" horiz-adv-x="1280" 
+d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z
+" />
+    <glyph glyph-name="_374" unicode="&#xf18e;" 
+d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198
+t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="arrow_circle_alt_left" unicode="&#xf190;" 
+d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198
+t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_376" unicode="&#xf191;" 
+d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z
+M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="dot_circle_alt" unicode="&#xf192;" 
+d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5
+t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_378" unicode="&#xf193;" horiz-adv-x="1664" 
+d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128
+q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 17 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
+    <glyph glyph-name="vimeo_square" unicode="&#xf194;" 
+d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179
+q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_380" unicode="&#xf195;" horiz-adv-x="1152" 
+d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160
+q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="plus_square_o" unicode="&#xf196;" horiz-adv-x="1408" 
+d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832
+q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_382" unicode="&#xf197;" horiz-adv-x="2176" 
+d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40
+t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29
+q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
+    <glyph glyph-name="_383" unicode="&#xf198;" horiz-adv-x="1664" 
+d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9
+q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102
+t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
+    <glyph glyph-name="_384" unicode="&#xf199;" 
+d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69
+q-47 32 -142 92.5t-142 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13
+t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
+    <glyph glyph-name="_385" unicode="&#xf19a;" horiz-adv-x="1792" 
+d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5
+t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21
+t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286
+t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273
+t273 -182.5t331.5 -68z" />
+    <glyph glyph-name="_386" unicode="&#xf19b;" horiz-adv-x="1792" 
+d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
+    <glyph glyph-name="_387" unicode="&#xf19c;" horiz-adv-x="2048" 
+d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64
+q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
+    <glyph glyph-name="_388" unicode="&#xf19d;" horiz-adv-x="2304" 
+d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433
+q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
+    <glyph glyph-name="_389" unicode="&#xf19e;" 
+d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q44 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0
+q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
+    <glyph glyph-name="uniF1A0" unicode="&#xf1a0;" 
+d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5
+t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" />
+    <glyph glyph-name="f1a1" unicode="&#xf1a1;" horiz-adv-x="1792" 
+d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26
+t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37
+q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191
+t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="_392" unicode="&#xf1a2;" 
+d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54
+q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83
+q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960
+q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_393" unicode="&#xf1a3;" 
+d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150
+v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103
+t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="f1a4" unicode="&#xf1a4;" horiz-adv-x="1920" 
+d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328
+v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
+    <glyph glyph-name="_395" unicode="&#xf1a5;" 
+d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
+t84.5 -203.5z" />
+    <glyph glyph-name="_396" unicode="&#xf1a6;" horiz-adv-x="2048" 
+d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123
+v-369h123z" />
+    <glyph glyph-name="_397" unicode="&#xf1a7;" 
+d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101
+v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960
+q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_398" unicode="&#xf1a8;" horiz-adv-x="2038" 
+d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14
+q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24
+q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33
+q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5
+t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43
+q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5
+t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13
+t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
+    <glyph glyph-name="_399" unicode="&#xf1a9;" 
+d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10
+q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14
+q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14
+t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44
+q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
+    <glyph glyph-name="_400" unicode="&#xf1aa;" 
+d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z
+M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5
+t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5
+q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126
+t135.5 51q85 0 145 -60.5t60 -145.5z" />
+    <glyph glyph-name="f1ab" unicode="&#xf1ab;" 
+d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5
+q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28
+q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z
+M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11
+q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q107 36 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5
+q20 0 20 -21v-418z" />
+    <glyph glyph-name="_402" unicode="&#xf1ac;" horiz-adv-x="1792" 
+d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48
+l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23
+t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128
+q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128
+q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
+    <glyph glyph-name="_403" unicode="&#xf1ad;" 
+d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9
+t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64
+q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64
+q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9
+t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64
+q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64
+q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9
+t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
+    <glyph glyph-name="_404" unicode="&#xf1ae;" horiz-adv-x="1280" 
+d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68q29 28 68.5 28t67.5 -28l228 -228h368l228 228q28 28 68 28t68 -28q28 -29 28 -68.5t-28 -67.5zM864 1152
+q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+    <glyph glyph-name="uniF1B1" unicode="&#xf1b0;" horiz-adv-x="1664" 
+d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5
+q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819
+q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5
+t100.5 134t141.5 55.5z" />
+    <glyph glyph-name="_406" unicode="&#xf1b1;" horiz-adv-x="768" 
+d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
+    <glyph glyph-name="_407" unicode="&#xf1b2;" horiz-adv-x="1792" 
+d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z
+" />
+    <glyph glyph-name="_408" unicode="&#xf1b3;" horiz-adv-x="2304" 
+d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67
+t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-4 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70
+v-400l434 -186q36 -16 57 -48t21 -70z" />
+    <glyph glyph-name="_409" unicode="&#xf1b4;" horiz-adv-x="2048" 
+d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658
+q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204
+q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
+    <glyph glyph-name="_410" unicode="&#xf1b5;" 
+d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5
+t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217
+t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
+    <glyph glyph-name="_411" unicode="&#xf1b6;" horiz-adv-x="1792" 
+d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5
+q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89
+q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
+    <glyph glyph-name="_412" unicode="&#xf1b7;" 
+d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5
+q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5
+q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z
+" />
+    <glyph glyph-name="_413" unicode="&#xf1b8;" horiz-adv-x="1792" 
+d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188
+l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5
+t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1
+q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
+    <glyph glyph-name="_414" unicode="&#xf1b9;" horiz-adv-x="2048" 
+d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384
+q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5
+l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
+    <glyph glyph-name="_415" unicode="&#xf1ba;" horiz-adv-x="2048" 
+d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5
+t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z
+M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
+    <glyph glyph-name="_416" unicode="&#xf1bb;" 
+d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384
+q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
+    <glyph glyph-name="_417" unicode="&#xf1bc;" 
+d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64
+q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37
+q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_418" unicode="&#xf1bd;" horiz-adv-x="1024" 
+d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
+    <glyph glyph-name="_419" unicode="&#xf1be;" horiz-adv-x="2304" 
+d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11
+q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245
+q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785
+l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242
+q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236
+q0 -11 -8 -19t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786
+q-13 2 -22 11t-9 22v899q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
+    <glyph glyph-name="uniF1C0" unicode="&#xf1c0;" 
+d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127
+t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5
+t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
+    <glyph glyph-name="uniF1C1" unicode="&#xf1c1;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197
+q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8
+q-1 1 -1 2q-1 2 -1 3q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
+    <glyph glyph-name="_422" unicode="&#xf1c2;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4q0 3 -0.5 6.5t-1.5 8t-1 6.5q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5
+t-3.5 -21.5l-4 -21h-4l-2 21q-2 26 -7 46l-99 438h90v107h-300z" />
+    <glyph glyph-name="_423" unicode="&#xf1c3;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107
+h-290v-107h68l189 -272l-194 -283h-68z" />
+    <glyph glyph-name="_424" unicode="&#xf1c4;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
+    <glyph glyph-name="_425" unicode="&#xf1c5;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
+    <glyph glyph-name="_426" unicode="&#xf1c6;" 
+d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400
+v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79
+q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
+    <glyph glyph-name="_427" unicode="&#xf1c7;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5
+q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
+    <glyph glyph-name="_428" unicode="&#xf1c8;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
+    <glyph glyph-name="_429" unicode="&#xf1c9;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243
+l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
+    <glyph glyph-name="_430" unicode="&#xf1ca;" 
+d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406
+q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
+    <glyph glyph-name="_431" unicode="&#xf1cb;" horiz-adv-x="1792" 
+d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546
+q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
+    <glyph glyph-name="_432" unicode="&#xf1cc;" horiz-adv-x="2048" 
+d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94
+q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55
+t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97l93 -108q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5t-85 -189.5z" />
+    <glyph glyph-name="_433" unicode="&#xf1cd;" horiz-adv-x="1792" 
+d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194
+q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5
+t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
+    <glyph glyph-name="_434" unicode="&#xf1ce;" horiz-adv-x="1792" 
+d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5
+t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" />
+    <glyph glyph-name="uniF1D0" unicode="&#xf1d0;" horiz-adv-x="1792" 
+d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41
+t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170
+t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136
+q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
+    <glyph glyph-name="uniF1D1" unicode="&#xf1d1;" horiz-adv-x="1792" 
+d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251
+l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162
+q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33
+q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5
+t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71
+t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF1D2" unicode="&#xf1d2;" 
+d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85
+q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392
+q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072
+q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_438" unicode="&#xf1d3;" horiz-adv-x="1792" 
+d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58
+q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47
+q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171
+v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
+    <glyph glyph-name="_439" unicode="&#xf1d4;" 
+d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="uniF1D5" unicode="&#xf1d5;" horiz-adv-x="1280" 
+d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5
+t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153
+t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
+    <glyph glyph-name="uniF1D6" unicode="&#xf1d6;" horiz-adv-x="1792" 
+d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5
+q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20
+t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5
+t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
+    <glyph glyph-name="uniF1D7" unicode="&#xf1d7;" horiz-adv-x="2048" 
+d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25
+q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5
+q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109
+q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
+    <glyph glyph-name="_443" unicode="&#xf1d8;" horiz-adv-x="1792" 
+d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
+    <glyph glyph-name="_444" unicode="&#xf1d9;" horiz-adv-x="1792" 
+d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137
+l863 639l-478 -797z" />
+    <glyph glyph-name="_445" unicode="&#xf1da;" 
+d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5
+t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23
+t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="_446" unicode="&#xf1db;" 
+d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
+t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_447" unicode="&#xf1dc;" horiz-adv-x="1792" 
+d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15
+t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2
+t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160
+q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5
+q0 -26 -12 -48t-36 -22z" />
+    <glyph glyph-name="_448" unicode="&#xf1dd;" horiz-adv-x="1280" 
+d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179
+q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
+    <glyph glyph-name="_449" unicode="&#xf1de;" 
+d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256
+q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
+    <glyph glyph-name="uniF1E0" unicode="&#xf1e0;" 
+d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5
+t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
+    <glyph glyph-name="_451" unicode="&#xf1e1;" 
+d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5
+t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_452" unicode="&#xf1e2;" horiz-adv-x="1792" 
+d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5
+t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91
+q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9
+t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
+    <glyph glyph-name="_453" unicode="&#xf1e3;" horiz-adv-x="1792" 
+d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323
+l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
+    <glyph glyph-name="_454" unicode="&#xf1e4;" horiz-adv-x="1792" 
+d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23
+v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192
+q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23
+zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5
+t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
+    <glyph glyph-name="_455" unicode="&#xf1e5;" horiz-adv-x="1792" 
+d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z
+M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="_456" unicode="&#xf1e6;" horiz-adv-x="1792" 
+d="M1755 1083q37 -38 37 -90.5t-37 -90.5l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234
+l401 400q38 37 91 37t90 -37z" />
+    <glyph glyph-name="_457" unicode="&#xf1e7;" horiz-adv-x="1792" 
+d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5
+t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z
+M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q4 -2 11.5 -7
+t10.5 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
+    <glyph glyph-name="_458" unicode="&#xf1e8;" horiz-adv-x="1792" 
+d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
+    <glyph glyph-name="_459" unicode="&#xf1e9;" 
+d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36
+q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q71 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5
+t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87
+q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
+    <glyph glyph-name="_460" unicode="&#xf1ea;" horiz-adv-x="2048" 
+d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19
+t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
+    <glyph glyph-name="_461" unicode="&#xf1eb;" horiz-adv-x="2048" 
+d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121
+q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z
+M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
+    <glyph glyph-name="_462" unicode="&#xf1ec;" horiz-adv-x="1792" 
+d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5
+t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5
+t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5
+t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z
+M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38
+h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_463" unicode="&#xf1ed;" 
+d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246
+q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598
+q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
+    <glyph glyph-name="_464" unicode="&#xf1ee;" horiz-adv-x="1792" 
+d="M441 864q33 0 52 -26q266 -364 362 -774h-446q-127 441 -367 749q-12 16 -3 33.5t29 17.5h373zM1000 507q-49 -199 -125 -393q-79 310 -256 594q40 221 44 449q211 -340 337 -650zM1099 1216q235 -324 384.5 -698.5t184.5 -773.5h-451q-41 665 -553 1472h435zM1792 640
+q0 -424 -101 -812q-67 560 -359 1083q-25 301 -106 584q-4 16 5.5 28.5t25.5 12.5h359q21 0 38.5 -13t22.5 -33q115 -409 115 -850z" />
+    <glyph glyph-name="uniF1F0" unicode="&#xf1f0;" horiz-adv-x="2304" 
+d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27
+q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128
+q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_466" unicode="&#xf1f1;" horiz-adv-x="2304" 
+d="M1119 1195q-128 85 -281 85q-103 0 -197.5 -40.5t-162.5 -108.5t-108.5 -162t-40.5 -197q0 -104 40.5 -198t108.5 -162t162 -108.5t198 -40.5q153 0 281 85q-131 107 -178 265.5t0.5 316.5t177.5 265zM1152 1171q-126 -99 -172 -249.5t-0.5 -300.5t172.5 -249
+q127 99 172.5 249t-0.5 300.5t-172 249.5zM1185 1195q130 -107 177.5 -265.5t0.5 -317t-178 -264.5q128 -85 281 -85q104 0 198 40.5t162 108.5t108.5 162t40.5 198q0 103 -40.5 197t-108.5 162t-162.5 108.5t-197.5 40.5q-153 0 -281 -85zM1926 473h7v3h-17v-3h7v-17h3v17z
+M1955 456h4v20h-5l-6 -13l-6 13h-5v-20h3v15l6 -13h4l5 13v-15zM1947 16v-2h-2h-3v3h3h2v-1zM1947 7h3l-4 5h2l1 1q1 1 1 3t-1 3l-1 1h-3h-6v-13h3v5h1zM685 75q0 19 11 31t30 12q18 0 29 -12.5t11 -30.5q0 -19 -11 -31t-29 -12q-19 0 -30 12t-11 31zM1158 119q30 0 35 -32
+h-70q5 32 35 32zM1514 75q0 19 11 31t29 12t29.5 -12.5t11.5 -30.5q0 -19 -11 -31t-30 -12q-18 0 -29 12t-11 31zM1786 75q0 18 11.5 30.5t29.5 12.5t29.5 -12.5t11.5 -30.5q0 -19 -11.5 -31t-29.5 -12t-29.5 12.5t-11.5 30.5zM1944 3q-2 0 -4 1q-1 0 -3 2t-2 3q-1 2 -1 4
+q0 3 1 4q0 2 2 4l1 1q2 0 2 1q2 1 4 1q3 0 4 -1l4 -2l2 -4v-1q1 -2 1 -3l-1 -1v-3t-1 -1l-1 -2q-2 -2 -4 -2q-1 -1 -4 -1zM599 7h30v85q0 24 -14.5 38.5t-39.5 15.5q-32 0 -47 -24q-14 24 -45 24q-24 0 -39 -20v16h-30v-135h30v75q0 36 33 36q30 0 30 -36v-75h29v75
+q0 36 33 36q30 0 30 -36v-75zM765 7h29v68v67h-29v-16q-17 20 -43 20q-29 0 -48 -20t-19 -51t19 -51t48 -20q28 0 43 20v-17zM943 48q0 34 -47 40l-14 2q-23 4 -23 14q0 15 25 15q23 0 43 -11l12 24q-22 14 -55 14q-26 0 -41 -12t-15 -32q0 -33 47 -39l13 -2q24 -4 24 -14
+q0 -17 -31 -17q-25 0 -45 14l-13 -23q25 -17 58 -17q29 0 45.5 12t16.5 32zM1073 14l-8 25q-13 -7 -26 -7q-19 0 -19 22v61h48v27h-48v41h-30v-41h-28v-27h28v-61q0 -50 47 -50q21 0 36 10zM1159 146q-29 0 -48 -20t-19 -51q0 -32 19.5 -51.5t49.5 -19.5q33 0 55 19l-14 22
+q-18 -15 -39 -15q-34 0 -41 33h101v12q0 32 -18 51.5t-46 19.5zM1318 146q-23 0 -35 -20v16h-30v-135h30v76q0 35 29 35q10 0 18 -4l9 28q-9 4 -21 4zM1348 75q0 -31 19.5 -51t52.5 -20q29 0 48 16l-14 24q-18 -13 -35 -12q-18 0 -29.5 12t-11.5 31t11.5 31t29.5 12
+q19 0 35 -12l14 24q-20 16 -48 16q-33 0 -52.5 -20t-19.5 -51zM1593 7h30v68v67h-30v-16q-15 20 -42 20q-29 0 -48.5 -20t-19.5 -51t19.5 -51t48.5 -20q28 0 42 20v-17zM1726 146q-23 0 -35 -20v16h-29v-135h29v76q0 35 29 35q10 0 18 -4l9 28q-8 4 -21 4zM1866 7h29v68v122
+h-29v-71q-15 20 -43 20t-47.5 -20.5t-19.5 -50.5t19.5 -50.5t47.5 -20.5q29 0 43 20v-17zM1944 27l-2 -1h-3q-2 -1 -4 -3q-3 -1 -3 -4q-1 -2 -1 -6q0 -3 1 -5q0 -2 3 -4q2 -2 4 -3t5 -1q4 0 6 1q0 1 2 2l2 1q1 1 3 4q1 2 1 5q0 4 -1 6q-1 1 -3 4q0 1 -2 2l-2 1q-1 0 -3 0.5
+t-3 0.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_467" unicode="&#xf1f2;" horiz-adv-x="2304" 
+d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42
+q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604
+v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569
+q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73
+t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
+    <glyph glyph-name="f1f3" unicode="&#xf1f3;" horiz-adv-x="2304" 
+d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z
+M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260
+l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279
+v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040
+q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168
+q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5
+t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21
+h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5
+t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
+    <glyph glyph-name="_469" unicode="&#xf1f4;" horiz-adv-x="2304" 
+d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16
+t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76
+q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59
+t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489
+l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66
+q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_470" unicode="&#xf1f5;" horiz-adv-x="2304" 
+d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109
+q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118
+q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151
+q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31
+q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_471" unicode="&#xf1f6;" horiz-adv-x="2048" 
+d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5
+l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5
+l418 363q10 8 23.5 7t21.5 -11z" />
+    <glyph glyph-name="_472" unicode="&#xf1f7;" horiz-adv-x="2048" 
+d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128
+q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161
+q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
+    <glyph glyph-name="_473" unicode="&#xf1f8;" horiz-adv-x="1408" 
+d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704
+q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167
+q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="_474" unicode="&#xf1f9;" 
+d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5
+t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5
+t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_475" unicode="&#xf1fa;" 
+d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53
+q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24
+t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61
+t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
+    <glyph glyph-name="_476" unicode="&#xf1fb;" horiz-adv-x="1792" 
+d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10
+t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
+    <glyph glyph-name="f1fc" unicode="&#xf1fc;" horiz-adv-x="1792" 
+d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5
+t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
+    <glyph glyph-name="_478" unicode="&#xf1fd;" horiz-adv-x="1792" 
+d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11q24 0 44 -7t31 -15t33 -27q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5
+t47 37.5q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-24 0 -44 7t-31 15t-33 27q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38
+t-58 27t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448
+h256v448h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5
+q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
+    <glyph glyph-name="_479" unicode="&#xf1fe;" horiz-adv-x="2048" 
+d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
+    <glyph glyph-name="_480" unicode="&#xf200;" horiz-adv-x="1792" 
+d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_481" unicode="&#xf201;" horiz-adv-x="2048" 
+d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9
+t9 -23z" />
+    <glyph glyph-name="_482" unicode="&#xf202;" horiz-adv-x="1792" 
+d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20
+q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50
+t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1
+q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
+    <glyph glyph-name="_483" unicode="&#xf203;" 
+d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73
+q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110
+q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_484" unicode="&#xf204;" horiz-adv-x="2048" 
+d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5
+t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5
+t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
+    <glyph glyph-name="_485" unicode="&#xf205;" horiz-adv-x="2048" 
+d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5
+t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
+    <glyph glyph-name="_486" unicode="&#xf206;" horiz-adv-x="2304" 
+d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94
+q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469
+q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400
+q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
+    <glyph glyph-name="_487" unicode="&#xf207;" 
+d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5
+h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
+t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
+    <glyph glyph-name="_488" unicode="&#xf208;" horiz-adv-x="2048" 
+d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327
+q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5
+q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
+    <glyph glyph-name="_489" unicode="&#xf209;" horiz-adv-x="1280" 
+d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q17 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119
+t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5
+t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14
+q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88
+q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5
+t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
+    <glyph glyph-name="_490" unicode="&#xf20a;" horiz-adv-x="2048" 
+d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206
+q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307
+t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14
+t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
+    <glyph glyph-name="_491" unicode="&#xf20b;" 
+d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5
+t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="_492" unicode="&#xf20c;" 
+d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55
+q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410
+q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
+    <glyph glyph-name="_493" unicode="&#xf20d;" 
+d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
+    <glyph glyph-name="_494" unicode="&#xf20e;" horiz-adv-x="2048" 
+d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335
+q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5
+q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360l15 -6l188 199v347l-187 194q-13 -8 -29 -10zM986 1438
+h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13zM552 226h402l64 66
+l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224l213 -225zM1023 946
+l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196l-48 -227l130 227h-82
+zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
+    <glyph glyph-name="f210" unicode="&#xf210;" 
+d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
+    <glyph glyph-name="_496" unicode="&#xf211;" 
+d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384
+q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
+    <glyph glyph-name="f212" unicode="&#xf212;" horiz-adv-x="2048" 
+d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021
+q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25
+q209 0 374 -102q172 107 374 102z" />
+    <glyph glyph-name="_498" unicode="&#xf213;" horiz-adv-x="2048" 
+d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101
+q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284
+q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
+    <glyph glyph-name="_499" unicode="&#xf214;" 
+d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34
+l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114
+v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z
+M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378
+v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51
+h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5
+t-43 -34t-16.5 -53.5z" />
+    <glyph glyph-name="_500" unicode="&#xf215;" horiz-adv-x="2048" 
+d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832
+q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
+    <glyph glyph-name="_501" unicode="&#xf216;" horiz-adv-x="2048" 
+d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126t-103.5 132.5t-108.5 126.5t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5
+t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113
+t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5
+q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
+    <glyph glyph-name="_502" unicode="&#xf217;" horiz-adv-x="1664" 
+d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
+t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920
+q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="_503" unicode="&#xf218;" horiz-adv-x="1664" 
+d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
+t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920
+q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="_504" unicode="&#xf219;" horiz-adv-x="2048" 
+d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20
+l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
+    <glyph glyph-name="_505" unicode="&#xf21a;" horiz-adv-x="2048" 
+d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83
+q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83
+q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314
+v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83
+q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
+    <glyph glyph-name="_506" unicode="&#xf21b;" 
+d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14
+t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5
+q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31
+t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
+    <glyph glyph-name="_507" unicode="&#xf21c;" horiz-adv-x="2304" 
+d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5
+t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105
+l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226
+t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
+    <glyph glyph-name="_508" unicode="&#xf21d;" 
+d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12
+q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384
+q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5
+t158.5 -65.5t65.5 -158.5z" />
+    <glyph glyph-name="_509" unicode="&#xf21e;" horiz-adv-x="1792" 
+d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221
+q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124
+t127 -344z" />
+    <glyph glyph-name="venus" unicode="&#xf221;" horiz-adv-x="1280" 
+d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292
+q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
+    <glyph glyph-name="_511" unicode="&#xf222;" 
+d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5
+q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_512" unicode="&#xf223;" horiz-adv-x="1280" 
+d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5
+t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
+t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_513" unicode="&#xf224;" 
+d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64
+q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
+t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_514" unicode="&#xf225;" horiz-adv-x="1792" 
+d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64
+q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9
+t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5
+t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_515" unicode="&#xf226;" horiz-adv-x="1792" 
+d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23
+t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391
+q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391
+q0 -226 -154 -391q103 -57 218 -57z" />
+    <glyph glyph-name="_516" unicode="&#xf227;" horiz-adv-x="1920" 
+d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230
+q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9
+t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128
+q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -28 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
+    <glyph glyph-name="_517" unicode="&#xf228;" horiz-adv-x="2048" 
+d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23
+t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9
+t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5
+t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
+    <glyph glyph-name="_518" unicode="&#xf229;" 
+d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5
+t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
+t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_519" unicode="&#xf22a;" horiz-adv-x="1280" 
+d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22
+t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5
+t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_520" unicode="&#xf22b;" horiz-adv-x="2048" 
+d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5
+t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5
+t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_521" unicode="&#xf22c;" horiz-adv-x="1280" 
+d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5
+t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_522" unicode="&#xf22d;" horiz-adv-x="1280" 
+d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123
+t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" />
+    <glyph glyph-name="_523" unicode="&#xf22e;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="_524" unicode="&#xf22f;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="_525" unicode="&#xf230;" 
+d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
+    <glyph glyph-name="_526" unicode="&#xf231;" horiz-adv-x="1280" 
+d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5
+l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5
+q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
+    <glyph glyph-name="_527" unicode="&#xf232;" 
+d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5
+t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233
+l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
+    <glyph glyph-name="_528" unicode="&#xf233;" horiz-adv-x="1792" 
+d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216
+q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
+    <glyph glyph-name="_529" unicode="&#xf234;" horiz-adv-x="2048" 
+d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5
+t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5
+t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
+    <glyph glyph-name="_530" unicode="&#xf235;" horiz-adv-x="2048" 
+d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136
+q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69
+t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
+    <glyph glyph-name="_531" unicode="&#xf236;" horiz-adv-x="2048" 
+d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704
+q-26 0 -45 -19t-19 -45v-384h1152z" />
+    <glyph glyph-name="_532" unicode="&#xf237;" 
+d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
+    <glyph glyph-name="_533" unicode="&#xf238;" 
+d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56
+t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
+    <glyph glyph-name="_534" unicode="&#xf239;" 
+d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47
+t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
+    <glyph glyph-name="_535" unicode="&#xf23a;" horiz-adv-x="1792" 
+d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116
+q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" />
+    <glyph glyph-name="_536" unicode="&#xf23b;" 
+d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
+    <glyph glyph-name="_537" unicode="&#xf23c;" horiz-adv-x="2296" 
+d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5
+q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5
+q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42
+q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37
+q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5
+q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139
+q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 5 5 8q16 18 60 23h13q5 18 19 30t33 8
+t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132
+q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132
+q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z
+M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-105 2 -211 0v1q-1 -27 2.5 -86
+t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103
+q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34q0 2 0.5 3.5t1.5 3t1 2.5v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4
+l-10 -2.5t-12 -2l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-6 -1 -9 -1q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130
+t-73 70q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -1 -1 -4t-1 -5q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150
+q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12
+q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" />
+    <glyph glyph-name="_538" unicode="&#xf23d;" horiz-adv-x="2304" 
+d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5
+t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5
+t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
+    <glyph glyph-name="_539" unicode="&#xf23e;" horiz-adv-x="1792" 
+d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348
+t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23
+t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96
+q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512
+q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" />
+    <glyph glyph-name="_540" unicode="&#xf240;" horiz-adv-x="2304" 
+d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113
+v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" />
+    <glyph glyph-name="_541" unicode="&#xf241;" horiz-adv-x="2304" 
+d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
+h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
+    <glyph glyph-name="_542" unicode="&#xf242;" horiz-adv-x="2304" 
+d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
+h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
+    <glyph glyph-name="_543" unicode="&#xf243;" horiz-adv-x="2304" 
+d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
+h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
+    <glyph glyph-name="_544" unicode="&#xf244;" horiz-adv-x="2304" 
+d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23
+v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
+    <glyph glyph-name="_545" unicode="&#xf245;" horiz-adv-x="1280" 
+d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" />
+    <glyph glyph-name="_546" unicode="&#xf246;" horiz-adv-x="1024" 
+d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" />
+    <glyph glyph-name="_547" unicode="&#xf247;" horiz-adv-x="2048" 
+d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128
+h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
+    <glyph glyph-name="_548" unicode="&#xf248;" horiz-adv-x="2304" 
+d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256
+v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
+    <glyph glyph-name="_549" unicode="&#xf249;" 
+d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" />
+    <glyph glyph-name="_550" unicode="&#xf24a;" 
+d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68
+z" />
+    <glyph glyph-name="_551" unicode="&#xf24b;" horiz-adv-x="2304" 
+d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5
+t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88
+t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90
+t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_552" unicode="&#xf24c;" horiz-adv-x="2304" 
+d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294
+t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z
+M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_553" unicode="&#xf24d;" horiz-adv-x="1792" 
+d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113
+zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="_554" unicode="&#xf24e;" horiz-adv-x="2304" 
+d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64
+q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91
+t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5
+t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" />
+    <glyph glyph-name="_555" unicode="&#xf250;" 
+d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
+t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5
+t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
+    <glyph glyph-name="_556" unicode="&#xf251;" 
+d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
+t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" />
+    <glyph glyph-name="_557" unicode="&#xf252;" 
+d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
+t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" />
+    <glyph glyph-name="_558" unicode="&#xf253;" 
+d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
+t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196
+h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
+    <glyph glyph-name="_559" unicode="&#xf254;" 
+d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87
+t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9
+h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" />
+    <glyph glyph-name="_560" unicode="&#xf255;" 
+d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25
+q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27
+t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21
+q72 69 174 69z" />
+    <glyph glyph-name="_561" unicode="&#xf256;" horiz-adv-x="1792" 
+d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33
+t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52
+h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" />
+    <glyph glyph-name="_562" unicode="&#xf257;" horiz-adv-x="1792" 
+d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668
+q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17
+t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5
+t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5
+q0 -42 -23 -78t-61 -53l-310 -141h91z" />
+    <glyph glyph-name="_563" unicode="&#xf258;" horiz-adv-x="2048" 
+d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32
+q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68
+q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" />
+    <glyph glyph-name="_564" unicode="&#xf259;" horiz-adv-x="2048" 
+d="M459 -256q-77 0 -137.5 47.5t-79.5 122.5l-101 401q-13 57 -13 108q0 45 -5 67l-116 477q-7 27 -7 57q0 93 62 161t155 78q17 85 82.5 139t152.5 54q83 0 148 -51.5t85 -132.5l83 -348l103 428q20 81 85 132.5t148 51.5q89 0 155.5 -57.5t80.5 -144.5q92 -10 152 -79
+t60 -162q0 -24 -7 -59l-123 -512q10 7 37.5 28.5t38.5 29.5t35 23t41 20.5t41.5 11t49.5 5.5q105 0 180 -74t75 -179q0 -62 -28.5 -118t-78.5 -94l-507 -380q-68 -51 -153 -51h-694zM1104 1408q-38 0 -68.5 -24t-39.5 -62l-164 -682h-127l-145 602q-9 38 -39.5 62t-68.5 24
+q-48 0 -80 -33t-32 -80q0 -15 3 -28l132 -547h-26l-99 408q-9 37 -40 62.5t-69 25.5q-47 0 -80 -33t-33 -79q0 -14 3 -26l116 -478q7 -28 9 -86t10 -88l100 -401q8 -32 34 -52.5t59 -20.5h694q42 0 76 26l507 379q56 43 56 110q0 52 -37.5 88.5t-89.5 36.5q-43 0 -77 -26
+l-307 -230v227q0 4 32 138t68 282t39 161q4 18 4 29q0 47 -32 81t-79 34q-39 0 -69.5 -24t-39.5 -62l-116 -482h-26l150 624q3 14 3 28q0 48 -31.5 82t-79.5 34z" />
+    <glyph glyph-name="_565" unicode="&#xf25a;" horiz-adv-x="1792" 
+d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5
+q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5
+v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32
+v-384h32z" />
+    <glyph glyph-name="_566" unicode="&#xf25b;" 
+d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181
+v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46
+q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5
+q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308
+q0 -53 37.5 -90.5t90.5 -37.5h668z" />
+    <glyph glyph-name="_567" unicode="&#xf25c;" horiz-adv-x="1973" 
+d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5
+t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141
+q13 0 22 -8.5t10 -20.5z" />
+    <glyph glyph-name="_568" unicode="&#xf25d;" horiz-adv-x="1792" 
+d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109
+t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640
+q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="_569" unicode="&#xf25e;" horiz-adv-x="1792" 
+d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78
+q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5
+t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376
+q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191
+t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" />
+    <glyph glyph-name="f260" unicode="&#xf260;" horiz-adv-x="2048" 
+d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
+    <glyph glyph-name="f261" unicode="&#xf261;" horiz-adv-x="1792" 
+d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191
+t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="_572" unicode="&#xf262;" horiz-adv-x="2304" 
+d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57
+t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197
+t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5
+t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5
+t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5
+q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" />
+    <glyph glyph-name="f263" unicode="&#xf263;" horiz-adv-x="1280" 
+d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5
+t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94
+q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" />
+    <glyph glyph-name="_574" unicode="&#xf264;" 
+d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32
+q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5
+zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_575" unicode="&#xf265;" horiz-adv-x="1720" 
+d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33
+l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" />
+    <glyph glyph-name="_576" unicode="&#xf266;" horiz-adv-x="2304" 
+d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540
+q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81
+l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" />
+    <glyph glyph-name="_577" unicode="&#xf267;" horiz-adv-x="1792" 
+d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640
+q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5
+t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5
+t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5
+t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191
+t191 -286t71 -348z" />
+    <glyph glyph-name="_578" unicode="&#xf268;" horiz-adv-x="1792" 
+d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962
+q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
+    <glyph glyph-name="_579" unicode="&#xf269;" horiz-adv-x="1792" 
+d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5
+q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5
+q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
+    <glyph glyph-name="_580" unicode="&#xf26a;" horiz-adv-x="1792" 
+d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339
+q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z
+" />
+    <glyph glyph-name="_581" unicode="&#xf26b;" horiz-adv-x="1792" 
+d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606
+q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z
+M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" />
+    <glyph glyph-name="_582" unicode="&#xf26c;" horiz-adv-x="2048" 
+d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23
+v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="_583" unicode="&#xf26d;" horiz-adv-x="1792" 
+d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34
+h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100
+q-68 175 -180 287z" />
+    <glyph glyph-name="_584" unicode="&#xf26e;" 
+d="M1401 -11l-6 -6q-113 -113 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6
+q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13
+q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 33 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249
+q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 33 -6t30 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183
+q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46
+t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" />
+    <glyph glyph-name="_585" unicode="&#xf270;" horiz-adv-x="1792" 
+d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z
+M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30
+q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57
+t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133
+q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
+    <glyph glyph-name="_586" unicode="&#xf271;" horiz-adv-x="1792" 
+d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9
+h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224
+v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
+    <glyph glyph-name="_587" unicode="&#xf272;" horiz-adv-x="1792" 
+d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23
+t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47
+t47 -113v-96h128q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_588" unicode="&#xf273;" horiz-adv-x="1792" 
+d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z
+M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280
+q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_589" unicode="&#xf274;" horiz-adv-x="1792" 
+d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23
+t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47
+t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_590" unicode="&#xf275;" horiz-adv-x="1792" 
+d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" />
+    <glyph glyph-name="_591" unicode="&#xf276;" horiz-adv-x="1024" 
+d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q62 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249
+q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" />
+    <glyph glyph-name="_592" unicode="&#xf277;" horiz-adv-x="1792" 
+d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768
+q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" />
+    <glyph glyph-name="_593" unicode="&#xf278;" horiz-adv-x="2048" 
+d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173
+v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
+    <glyph glyph-name="_594" unicode="&#xf279;" horiz-adv-x="1792" 
+d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472
+q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" />
+    <glyph glyph-name="_595" unicode="&#xf27a;" horiz-adv-x="1792" 
+d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5
+t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37
+t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
+    <glyph glyph-name="_596" unicode="&#xf27b;" horiz-adv-x="1792" 
+d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5
+t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5
+t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51
+t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" />
+    <glyph glyph-name="_597" unicode="&#xf27c;" horiz-adv-x="1024" 
+d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
+    <glyph glyph-name="_598" unicode="&#xf27d;" horiz-adv-x="1792" 
+d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246
+q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
+    <glyph glyph-name="f27e" unicode="&#xf27e;" 
+d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
+    <glyph glyph-name="uniF280" unicode="&#xf280;" 
+d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72
+h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275
+l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
+    <glyph glyph-name="uniF281" unicode="&#xf281;" horiz-adv-x="1792" 
+d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5
+l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44
+t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106
+q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" />
+    <glyph glyph-name="_602" unicode="&#xf282;" horiz-adv-x="1792" 
+d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53
+q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" />
+    <glyph glyph-name="_603" unicode="&#xf283;" horiz-adv-x="2304" 
+d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" />
+    <glyph glyph-name="_604" unicode="&#xf284;" horiz-adv-x="1792" 
+d="M1584 246l-218 111q-74 -120 -196.5 -189t-263.5 -69q-147 0 -271 72t-196 196t-72 270q0 110 42.5 209.5t115 172t172 115t209.5 42.5q131 0 247.5 -60.5t192.5 -168.5l215 125q-110 169 -286.5 265t-378.5 96q-161 0 -308 -63t-253 -169t-169 -253t-63 -308t63 -308
+t169 -253t253 -169t308 -63q213 0 397.5 107t290.5 292zM1030 643l693 -352q-116 -253 -334.5 -400t-492.5 -147q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q260 0 470.5 -133.5t335.5 -366.5zM1543 640h-39v-160h-96v352h136q32 0 54.5 -20
+t28.5 -48t1 -56t-27.5 -48t-57.5 -20z" />
+    <glyph glyph-name="uniF285" unicode="&#xf285;" horiz-adv-x="1792" 
+d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" />
+    <glyph glyph-name="uniF286" unicode="&#xf286;" horiz-adv-x="1792" 
+d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96
+q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 6 2.5 9.5t8.5 5t9.5 2t11.5 0t9 -0.5v391q-32 15 -32 50q0 23 16.5 39t38.5 16t38.5 -16t16.5 -39q0 -35 -32 -50v-17q45 10 83 10q21 0 59.5 -7.5t54.5 -7.5
+q17 0 47 7.5t37 7.5q16 0 16 -16v-210q0 -15 -35 -21.5t-62 -6.5q-18 0 -54.5 7.5t-55.5 7.5q-40 0 -90 -12v-133q1 0 9 0.5t11.5 0t9.5 -2t8.5 -5t2.5 -9.5v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96
+q16 0 16 -16z" />
+    <glyph glyph-name="_607" unicode="&#xf287;" horiz-adv-x="2304" 
+d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96
+q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5
+t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" />
+    <glyph glyph-name="_608" unicode="&#xf288;" horiz-adv-x="1792" 
+d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348
+t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="_609" unicode="&#xf289;" horiz-adv-x="2304" 
+d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22
+q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5
+q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13
+q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" />
+    <glyph glyph-name="_610" unicode="&#xf28a;" 
+d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83
+t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20
+q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5
+t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" />
+    <glyph glyph-name="_611" unicode="&#xf28b;" 
+d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103
+t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_612" unicode="&#xf28c;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273
+t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" />
+    <glyph glyph-name="_613" unicode="&#xf28d;" 
+d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
+t103 -385.5z" />
+    <glyph glyph-name="_614" unicode="&#xf28e;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273
+t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" />
+    <glyph glyph-name="_615" unicode="&#xf290;" horiz-adv-x="1792" 
+d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5
+t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
+    <glyph glyph-name="_616" unicode="&#xf291;" horiz-adv-x="2048" 
+d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5
+t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416
+q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441
+h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" />
+    <glyph glyph-name="_617" unicode="&#xf292;" horiz-adv-x="1792" 
+d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12
+q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311
+q15 0 25 -12q9 -12 6 -28z" />
+    <glyph glyph-name="_618" unicode="&#xf293;" 
+d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5
+t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" />
+    <glyph glyph-name="_619" unicode="&#xf294;" horiz-adv-x="1024" 
+d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
+    <glyph glyph-name="_620" unicode="&#xf295;" 
+d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5
+t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5
+t271.5 -112.5t112.5 -271.5z" />
+    <glyph glyph-name="_621" unicode="&#xf296;" horiz-adv-x="1792" 
+d="M104 830l792 -1015l-868 630q-18 13 -25 34.5t0 42.5l101 308v0zM566 830h660l-330 -1015v0zM368 1442l198 -612h-462l198 612q8 23 33 23t33 -23zM1688 830l101 -308q7 -21 0 -42.5t-25 -34.5l-868 -630l792 1015v0zM1688 830h-462l198 612q8 23 33 23t33 -23z" />
+    <glyph glyph-name="_622" unicode="&#xf297;" horiz-adv-x="1792" 
+d="M384 704h160v224h-160v-224zM1221 372v92q-104 -36 -243 -38q-135 -1 -259.5 46.5t-220.5 122.5l1 -96q88 -80 212 -128.5t272 -47.5q129 0 238 49zM640 704h640v224h-640v-224zM1792 736q0 -187 -99 -352q89 -102 89 -229q0 -157 -129.5 -268t-313.5 -111
+q-122 0 -225 52.5t-161 140.5q-19 -1 -57 -1t-57 1q-58 -88 -161 -140.5t-225 -52.5q-184 0 -313.5 111t-129.5 268q0 127 89 229q-99 165 -99 352q0 209 120 385.5t326.5 279.5t449.5 103t449.5 -103t326.5 -279.5t120 -385.5z" />
+    <glyph glyph-name="_623" unicode="&#xf298;" 
+d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240q0 8 -6 14t-14 6h-32l-378 -256l-210 171l-210 -171l-378 256h-32q-8 0 -14 -6t-6 -14v-1240q0 -8 6 -14
+t14 -6h1240q8 0 14 6t6 14zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240q0 -62 -43 -105t-105 -43h-1240q-62 0 -105 43t-43 105v1240q0 62 43 105t105 43h1240q62 0 105 -43t43 -105z" />
+    <glyph glyph-name="_624" unicode="&#xf299;" horiz-adv-x="1792" 
+d="M896 720q-104 196 -160 278q-139 202 -347 318q-34 19 -70 36q-89 40 -94 32t34 -38l39 -31q62 -43 112.5 -93.5t94.5 -116.5t70.5 -113t70.5 -131q9 -17 13 -25q44 -84 84 -153t98 -154t115.5 -150t131 -123.5t148.5 -90.5q153 -66 154 -60q1 3 -49 37q-53 36 -81 57
+q-77 58 -179 211t-185 310zM549 177q-76 60 -132.5 125t-98 143.5t-71 154.5t-58.5 186t-52 209t-60.5 252t-76.5 289q273 0 497.5 -36t379 -92t271 -144.5t185.5 -172.5t110 -198.5t56 -199.5t12.5 -198.5t-9.5 -173t-20 -143.5t-13 -107l323 -327h-104l-281 285
+q-22 -2 -91.5 -14t-121.5 -19t-138 -6t-160.5 17t-167.5 59t-179 111z" />
+    <glyph glyph-name="_625" unicode="&#xf29a;" horiz-adv-x="1792" 
+d="M1374 879q-6 26 -28.5 39.5t-48.5 7.5q-261 -62 -401 -62t-401 62q-26 6 -48.5 -7.5t-28.5 -39.5t7.5 -48.5t39.5 -28.5q194 -46 303 -58q-2 -158 -15.5 -269t-26.5 -155.5t-41 -115.5l-9 -21q-10 -25 1 -49t36 -34q9 -4 23 -4q44 0 60 41l8 20q54 139 71 259h42
+q17 -120 71 -259l8 -20q16 -41 60 -41q14 0 23 4q25 10 36 34t1 49l-9 21q-28 71 -41 115.5t-26.5 155.5t-15.5 269q109 12 303 58q26 6 39.5 28.5t7.5 48.5zM1024 1024q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z
+M1600 640q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5zM896 1408q-156 0 -298 -61t-245 -164t-164 -245t-61 -298t61 -298
+t164 -245t245 -164t298 -61t298 61t245 164t164 245t61 298t-61 298t-164 245t-245 164t-298 61zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="_626" unicode="&#xf29b;" 
+d="M1438 723q34 -35 29 -82l-44 -551q-4 -42 -34.5 -70t-71.5 -28q-6 0 -9 1q-44 3 -72.5 36.5t-25.5 77.5l35 429l-143 -8q55 -113 55 -240q0 -216 -148 -372l-137 137q91 101 91 235q0 145 -102.5 248t-247.5 103q-134 0 -236 -92l-137 138q120 114 284 141l264 300
+l-149 87l-181 -161q-33 -30 -77 -27.5t-73 35.5t-26.5 77t34.5 73l239 213q26 23 60 26.5t64 -14.5l488 -283q36 -21 48 -68q17 -67 -26 -117l-205 -232l371 20q49 3 83 -32zM1240 1180q-74 0 -126 52t-52 126t52 126t126 52t126.5 -52t52.5 -126t-52.5 -126t-126.5 -52z
+M613 -62q106 0 196 61l139 -139q-146 -116 -335 -116q-148 0 -273.5 73t-198.5 198t-73 273q0 188 116 336l139 -139q-60 -88 -60 -197q0 -145 102.5 -247.5t247.5 -102.5z" />
+    <glyph glyph-name="_627" unicode="&#xf29c;" 
+d="M880 336v-160q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h160q14 0 23 -9t9 -23zM1136 832q0 -50 -15 -90t-45.5 -69t-52 -44t-59.5 -36q-32 -18 -46.5 -28t-26 -24t-11.5 -29v-32q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v68q0 35 10.5 64.5
+t24 47.5t39 35.5t41 25.5t44.5 21q53 25 75 43t22 49q0 42 -43.5 71.5t-95.5 29.5q-56 0 -95 -27q-29 -20 -80 -83q-9 -12 -25 -12q-11 0 -19 6l-108 82q-10 7 -12 20t5 23q122 192 349 192q129 0 238.5 -89.5t109.5 -214.5zM768 1280q-130 0 -248.5 -51t-204 -136.5
+t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5
+t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_628" unicode="&#xf29d;" horiz-adv-x="1408" 
+d="M366 1225q-64 0 -110 45.5t-46 110.5q0 64 46 109.5t110 45.5t109.5 -45.5t45.5 -109.5q0 -65 -45.5 -110.5t-109.5 -45.5zM917 583q0 -50 -30 -67.5t-63.5 -6.5t-47.5 34l-367 438q-7 12 -14 15.5t-11 1.5l-3 -3q-7 -8 4 -21l122 -139l1 -354l-161 -457
+q-67 -192 -92 -234q-15 -26 -28 -32q-50 -26 -103 -1q-29 13 -41.5 43t-9.5 57q2 17 197 618l5 416l-85 -164l35 -222q4 -24 -1 -42t-14 -27.5t-19 -16t-17 -7.5l-7 -2q-19 -3 -34.5 3t-24 16t-14 22t-7.5 19.5t-2 9.5l-46 299l211 381q23 34 113 34q75 0 107 -40l424 -521
+q7 -5 14 -17l3 -3l-1 -1q7 -13 7 -29zM514 433q43 -113 88.5 -225t69.5 -168l24 -55q36 -93 42 -125q11 -70 -36 -97q-35 -22 -66 -16t-51 22t-29 35h-1q-6 16 -8 25l-124 351zM1338 -159q31 -49 31 -57q0 -5 -3 -7q-9 -5 -14.5 0.5t-15.5 26t-16 30.5q-114 172 -423 661
+q3 -1 7 1t7 4l3 2q11 9 11 17z" />
+    <glyph glyph-name="_629" unicode="&#xf29e;" horiz-adv-x="2304" 
+d="M504 542h171l-1 265zM1530 641q0 87 -50.5 140t-146.5 53h-54v-388h52q91 0 145 57t54 138zM956 1018l1 -756q0 -14 -9.5 -24t-23.5 -10h-216q-14 0 -23.5 10t-9.5 24v62h-291l-55 -81q-10 -15 -28 -15h-267q-21 0 -30.5 18t3.5 35l556 757q9 14 27 14h332q14 0 24 -10
+t10 -24zM1783 641q0 -193 -125.5 -303t-324.5 -110h-270q-14 0 -24 10t-10 24v756q0 14 10 24t24 10h268q200 0 326 -109t126 -302zM1939 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5
+t-7.5 60t-20 91.5t-41 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2123 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-45 -108t-74 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5
+h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2304 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66 104.5t41 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96
+t9.5 -70.5z" />
+    <glyph glyph-name="uniF2A0" unicode="&#xf2a0;" horiz-adv-x="1408" 
+d="M617 -153q0 11 -13 58t-31 107t-20 69q-1 4 -5 26.5t-8.5 36t-13.5 21.5q-15 14 -51 14q-23 0 -70 -5.5t-71 -5.5q-34 0 -47 11q-6 5 -11 15.5t-7.5 20t-6.5 24t-5 18.5q-37 128 -37 255t37 255q1 4 5 18.5t6.5 24t7.5 20t11 15.5q13 11 47 11q24 0 71 -5.5t70 -5.5
+q36 0 51 14q9 8 13.5 21.5t8.5 36t5 26.5q2 9 20 69t31 107t13 58q0 22 -43.5 52.5t-75.5 42.5q-20 8 -45 8q-34 0 -98 -18q-57 -17 -96.5 -40.5t-71 -66t-46 -70t-45.5 -94.5q-6 -12 -9 -19q-49 -107 -68 -216t-19 -244t19 -244t68 -216q56 -122 83 -161q63 -91 179 -127
+l6 -2q64 -18 98 -18q25 0 45 8q32 12 75.5 42.5t43.5 52.5zM776 760q-26 0 -45 19t-19 45.5t19 45.5q37 37 37 90q0 52 -37 91q-19 19 -19 45t19 45t45 19t45 -19q75 -75 75 -181t-75 -181q-21 -19 -45 -19zM957 579q-27 0 -45 19q-19 19 -19 45t19 45q112 114 112 272
+t-112 272q-19 19 -19 45t19 45t45 19t45 -19q150 -150 150 -362t-150 -362q-18 -19 -45 -19zM1138 398q-27 0 -45 19q-19 19 -19 45t19 45q90 91 138.5 208t48.5 245t-48.5 245t-138.5 208q-19 19 -19 45t19 45t45 19t45 -19q109 -109 167 -249t58 -294t-58 -294t-167 -249
+q-18 -19 -45 -19z" />
+    <glyph glyph-name="uniF2A1" unicode="&#xf2a1;" horiz-adv-x="2176" 
+d="M192 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 352
+q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 864
+q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 1376q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 192q0 -80 -56 -136
+t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 1216q0 -80 -56 -136t-136 -56
+t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 192q0 -80 -56 -136t-136 -56t-136 56
+t-56 136t56 136t136 56t136 -56t56 -136zM1664 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136
+t56 136t136 56t136 -56t56 -136zM2176 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z" />
+    <glyph glyph-name="uniF2A2" unicode="&#xf2a2;" horiz-adv-x="1792" 
+d="M128 -192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM320 0q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM365 365l256 -256l-90 -90l-256 256zM704 384q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45z
+M1411 704q0 -59 -11.5 -108.5t-37.5 -93.5t-44 -67.5t-53 -64.5q-31 -35 -45.5 -54t-33.5 -50t-26.5 -64t-7.5 -74q0 -159 -112.5 -271.5t-271.5 -112.5q-26 0 -45 19t-19 45t19 45t45 19q106 0 181 75t75 181q0 57 11.5 105.5t37 91t43.5 66.5t52 63q40 46 59.5 72
+t37.5 74.5t18 103.5q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM896 576q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45
+t45 19t45 -19t19 -45zM1184 704q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 93 -65.5 158.5t-158.5 65.5q-92 0 -158 -65.5t-66 -158.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 146 103 249t249 103t249 -103t103 -249zM1578 993q10 -25 -1 -49t-36 -34q-9 -4 -23 -4
+q-19 0 -35.5 11t-23.5 30q-68 178 -224 295q-21 16 -25 42t12 47q17 21 43 25t47 -12q183 -137 266 -351zM1788 1074q9 -25 -1.5 -49t-35.5 -34q-11 -4 -23 -4q-44 0 -60 41q-92 238 -297 393q-22 16 -25.5 42t12.5 47q16 22 42 25.5t47 -12.5q235 -175 341 -449z" />
+    <glyph glyph-name="uniF2A3" unicode="&#xf2a3;" horiz-adv-x="2304" 
+d="M1032 576q-59 2 -84 55q-17 34 -48 53.5t-68 19.5q-53 0 -90.5 -37.5t-37.5 -90.5q0 -56 36 -89l10 -8q34 -31 82 -31q37 0 68 19.5t48 53.5q25 53 84 55zM1600 704q0 56 -36 89l-10 8q-34 31 -82 31q-37 0 -68 -19.5t-48 -53.5q-25 -53 -84 -55q59 -2 84 -55
+q17 -34 48 -53.5t68 -19.5q53 0 90.5 37.5t37.5 90.5zM1174 925q-17 -35 -55 -48t-73 4q-62 31 -134 31q-51 0 -99 -17q3 0 9.5 0.5t9.5 0.5q92 0 170.5 -50t118.5 -133q17 -36 3.5 -73.5t-49.5 -54.5q-18 -9 -39 -9q21 0 39 -9q36 -17 49.5 -54.5t-3.5 -73.5
+q-40 -83 -118.5 -133t-170.5 -50h-6q-16 2 -44 4l-290 27l-239 -120q-14 -7 -29 -7q-40 0 -57 35l-160 320q-11 23 -4 47.5t29 37.5l209 119l148 267q17 155 91.5 291.5t195.5 236.5q31 25 70.5 21.5t64.5 -34.5t21.5 -70t-34.5 -65q-70 -59 -117 -128q123 84 267 101
+q40 5 71.5 -19t35.5 -64q5 -40 -19 -71.5t-64 -35.5q-84 -10 -159 -55q46 10 99 10q115 0 218 -50q36 -18 49 -55.5t-5 -73.5zM2137 1085l160 -320q11 -23 4 -47.5t-29 -37.5l-209 -119l-148 -267q-17 -155 -91.5 -291.5t-195.5 -236.5q-26 -22 -61 -22q-45 0 -74 35
+q-25 31 -21.5 70t34.5 65q70 59 117 128q-123 -84 -267 -101q-4 -1 -12 -1q-36 0 -63.5 24t-31.5 60q-5 40 19 71.5t64 35.5q84 10 159 55q-46 -10 -99 -10q-115 0 -218 50q-36 18 -49 55.5t5 73.5q17 35 55 48t73 -4q62 -31 134 -31q51 0 99 17q-3 0 -9.5 -0.5t-9.5 -0.5
+q-92 0 -170.5 50t-118.5 133q-17 36 -3.5 73.5t49.5 54.5q18 9 39 9q-21 0 -39 9q-36 17 -49.5 54.5t3.5 73.5q40 83 118.5 133t170.5 50h6h1q14 -2 42 -4l291 -27l239 120q14 7 29 7q40 0 57 -35z" />
+    <glyph glyph-name="uniF2A4" unicode="&#xf2a4;" horiz-adv-x="1792" 
+d="M1056 704q0 -26 19 -45t45 -19t45 19t19 45q0 146 -103 249t-249 103t-249 -103t-103 -249q0 -26 19 -45t45 -19t45 19t19 45q0 93 66 158.5t158 65.5t158 -65.5t66 -158.5zM835 1280q-117 0 -223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5q0 -26 19 -45t45 -19t45 19
+t19 45q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -55 -18 -103.5t-37.5 -74.5t-59.5 -72q-34 -39 -52 -63t-43.5 -66.5t-37 -91t-11.5 -105.5q0 -106 -75 -181t-181 -75q-26 0 -45 -19t-19 -45t19 -45t45 -19q159 0 271.5 112.5t112.5 271.5q0 41 7.5 74
+t26.5 64t33.5 50t45.5 54q35 41 53 64.5t44 67.5t37.5 93.5t11.5 108.5q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5zM591 561l226 -226l-579 -579q-12 -12 -29 -12t-29 12l-168 168q-12 12 -12 29t12 29zM1612 1524l168 -168q12 -12 12 -29t-12 -30l-233 -233
+l-26 -25l-71 -71q-66 153 -195 258l91 91l207 207q13 12 30 12t29 -12z" />
+    <glyph glyph-name="uniF2A5" unicode="&#xf2a5;" 
+d="M866 1021q0 -27 -13 -94q-11 -50 -31.5 -150t-30.5 -150q-2 -11 -4.5 -12.5t-13.5 -2.5q-20 -2 -31 -2q-58 0 -84 49.5t-26 113.5q0 88 35 174t103 124q28 14 51 14q28 0 36.5 -16.5t8.5 -47.5zM1352 597q0 14 -39 75.5t-52 66.5q-21 8 -34 8q-91 0 -226 -77l-2 2
+q3 22 27.5 135t24.5 178q0 233 -242 233q-24 0 -68 -6q-94 -17 -168.5 -89.5t-111.5 -166.5t-37 -189q0 -146 80.5 -225t227.5 -79q25 0 25 -3t-1 -5q-4 -34 -26 -117q-14 -52 -51.5 -101t-82.5 -49q-42 0 -42 47q0 24 10.5 47.5t25 39.5t29.5 28.5t26 20t11 8.5q0 3 -7 10
+q-24 22 -58.5 36.5t-65.5 14.5q-35 0 -63.5 -34t-41 -75t-12.5 -75q0 -88 51.5 -142t138.5 -54q82 0 155 53t117.5 126t65.5 153q6 22 15.5 66.5t14.5 66.5q3 12 14 18q118 60 227 60q48 0 127 -18q1 -1 4 -1q5 0 9.5 4.5t4.5 8.5zM1536 1120v-960q0 -119 -84.5 -203.5
+t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="uniF2A6" unicode="&#xf2a6;" horiz-adv-x="1535" 
+d="M744 1231q0 24 -2 38.5t-8.5 30t-21 23t-37.5 7.5q-39 0 -78 -23q-105 -58 -159 -190.5t-54 -269.5q0 -44 8.5 -85.5t26.5 -80.5t52.5 -62.5t81.5 -23.5q4 0 18 -0.5t20 0t16 3t15 8.5t7 16q16 77 48 231.5t48 231.5q19 91 19 146zM1498 575q0 -7 -7.5 -13.5t-15.5 -6.5
+l-6 1q-22 3 -62 11t-72 12.5t-63 4.5q-167 0 -351 -93q-15 -8 -21 -27q-10 -36 -24.5 -105.5t-22.5 -100.5q-23 -91 -70 -179.5t-112.5 -164.5t-154.5 -123t-185 -47q-135 0 -214.5 83.5t-79.5 219.5q0 53 19.5 117t63 116.5t97.5 52.5q38 0 120 -33.5t83 -61.5
+q0 -1 -16.5 -12.5t-39.5 -31t-46 -44.5t-39 -61t-16 -74q0 -33 16.5 -53t48.5 -20q45 0 85 31.5t66.5 78t48 105.5t32.5 107t16 90v9q0 2 -3.5 3.5t-8.5 1.5h-10t-10 -0.5t-6 -0.5q-227 0 -352 122.5t-125 348.5q0 108 34.5 221t96 210t156 167.5t204.5 89.5q52 9 106 9
+q374 0 374 -360q0 -98 -38 -273t-43 -211l3 -3q101 57 182.5 88t167.5 31q22 0 53 -13q19 -7 80 -102.5t61 -116.5z" />
+    <glyph glyph-name="uniF2A7" unicode="&#xf2a7;" horiz-adv-x="1664" 
+d="M831 863q32 0 59 -18l222 -148q61 -40 110 -97l146 -170q40 -46 29 -106l-72 -413q-6 -32 -29.5 -53.5t-55.5 -25.5l-527 -56l-352 -32h-9q-39 0 -67.5 28t-28.5 68q0 37 27 64t65 32l260 32h-448q-41 0 -69.5 30t-26.5 71q2 39 32 65t69 26l442 1l-521 64q-41 5 -66 37
+t-19 73q6 35 34.5 57.5t65.5 22.5h10l481 -60l-351 94q-38 10 -62 41.5t-18 68.5q6 36 33 58.5t62 22.5q6 0 20 -2l448 -96l217 -37q1 0 3 -0.5t3 -0.5q23 0 30.5 23t-12.5 36l-186 125q-35 23 -42 63.5t18 73.5q27 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38
+l-238 262q-1 1 -2.5 3.5t-2.5 3.5q-24 31 -18.5 70t37.5 64q31 23 68 17.5t64 -33.5l142 -147q-2 -1 -5 -3.5t-4 -4.5q-32 -45 -23 -99t55 -85zM1648 1115l15 -266q4 -73 -11 -147l-48 -219q-12 -59 -67 -87l-106 -54q2 62 -39 109l-146 170q-53 61 -117 103l-222 148
+q-34 23 -76 23q-51 0 -88 -37l-235 312q-25 33 -18 73.5t41 63.5q33 22 71.5 14t62.5 -40l266 -352l-262 455q-21 35 -10.5 75t47.5 59q35 18 72.5 6t57.5 -46l241 -420l-136 337q-15 35 -4.5 74t44.5 56q37 19 76 6t56 -51l193 -415l101 -196q8 -15 23 -17.5t27 7.5t11 26
+l-12 224q-2 41 26 71t69 31q39 0 67 -28.5t30 -67.5z" />
+    <glyph glyph-name="uniF2A8" unicode="&#xf2a8;" horiz-adv-x="1792" 
+d="M335 180q-2 0 -6 2q-86 57 -168.5 145t-139.5 180q-21 30 -21 69q0 9 2 19t4 18t7 18t8.5 16t10.5 17t10 15t12 15.5t11 14.5q184 251 452 365q-110 198 -110 211q0 19 17 29q116 64 128 64q18 0 28 -16l124 -229q92 19 192 19q266 0 497.5 -137.5t378.5 -369.5
+q20 -31 20 -69t-20 -69q-91 -142 -218.5 -253.5t-278.5 -175.5q110 -198 110 -211q0 -20 -17 -29q-116 -64 -127 -64q-19 0 -29 16l-124 229l-64 119l-444 820l7 7q-58 -24 -99 -47q3 -5 127 -234t243 -449t119 -223q0 -7 -9 -9q-13 -3 -72 -3q-57 0 -60 7l-456 841
+q-39 -28 -82 -68q24 -43 214 -393.5t190 -354.5q0 -10 -11 -10q-14 0 -82.5 22t-72.5 28l-106 197l-224 413q-44 -53 -78 -106q2 -3 18 -25t23 -34l176 -327q0 -10 -10 -10zM1165 282l49 -91q273 111 450 385q-180 277 -459 389q67 -64 103 -148.5t36 -176.5
+q0 -106 -47 -200.5t-132 -157.5zM848 896q0 -20 14 -34t34 -14q86 0 147 -61t61 -147q0 -20 14 -34t34 -14t34 14t14 34q0 126 -89 215t-215 89q-20 0 -34 -14t-14 -34zM1214 961l-9 4l7 -7z" />
+    <glyph glyph-name="uniF2A9" unicode="&#xf2a9;" horiz-adv-x="1280" 
+d="M1050 430q0 -215 -147 -374q-148 -161 -378 -161q-232 0 -378 161q-147 159 -147 374q0 147 68 270.5t189 196.5t268 73q96 0 182 -31q-32 -62 -39 -126q-66 28 -143 28q-167 0 -280.5 -123t-113.5 -291q0 -170 112.5 -288.5t281.5 -118.5t281 118.5t112 288.5
+q0 89 -32 166q66 13 123 49q41 -98 41 -212zM846 619q0 -192 -79.5 -345t-238.5 -253l-14 -1q-29 0 -62 5q83 32 146.5 102.5t99.5 154.5t58.5 189t30 192.5t7.5 178.5q0 69 -3 103q55 -160 55 -326zM791 947v-2q-73 214 -206 440q88 -59 142.5 -186.5t63.5 -251.5z
+M1035 744q-83 0 -160 75q218 120 290 247q19 37 21 56q-42 -94 -139.5 -166.5t-204.5 -97.5q-35 54 -35 113q0 37 17 79t43 68q46 44 157 74q59 16 106 58.5t74 100.5q74 -105 74 -253q0 -109 -24 -170q-32 -77 -88.5 -130.5t-130.5 -53.5z" />
+    <glyph glyph-name="uniF2AA" unicode="&#xf2aa;" 
+d="M1050 495q0 78 -28 147q-41 -25 -85 -34q22 -50 22 -114q0 -117 -77 -198.5t-193 -81.5t-193.5 81.5t-77.5 198.5q0 115 78 199.5t193 84.5q53 0 98 -19q4 43 27 87q-60 21 -125 21q-154 0 -257.5 -108.5t-103.5 -263.5t103.5 -261t257.5 -106t257.5 106.5t103.5 260.5z
+M872 850q2 -24 2 -71q0 -63 -5 -123t-20.5 -132.5t-40.5 -130t-68.5 -106t-100.5 -70.5q21 -3 42 -3h10q219 139 219 411q0 116 -38 225zM872 850q-4 80 -44 171.5t-98 130.5q92 -156 142 -302zM1207 955q0 102 -51 174q-41 -86 -124 -109q-69 -19 -109 -53.5t-40 -99.5
+q0 -40 24 -77q74 17 140.5 67t95.5 115q-4 -52 -74.5 -111.5t-138.5 -97.5q52 -52 110 -52q51 0 90 37t60 90q17 42 17 117zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
+t84.5 -203.5z" />
+    <glyph glyph-name="uniF2AB" unicode="&#xf2ab;" 
+d="M1279 388q0 22 -22 27q-67 15 -118 59t-80 108q-7 19 -7 25q0 15 19.5 26t43 17t43 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-12 0 -32 -8t-31 -8q-4 0 -12 2q5 95 5 114q0 79 -17 114q-36 78 -103 121.5t-152 43.5q-199 0 -275 -165q-17 -35 -17 -114q0 -19 5 -114
+q-4 -2 -14 -2q-12 0 -32 7.5t-30 7.5q-21 0 -38.5 -12t-17.5 -32q0 -21 19.5 -35.5t43 -20.5t43 -17t19.5 -26q0 -6 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -46 137 -68q2 -5 6 -26t11.5 -30.5t23.5 -9.5q12 0 37.5 4.5t39.5 4.5q35 0 67 -15t54 -32.5t57.5 -32.5
+t76.5 -15q43 0 79 15t57.5 32.5t53.5 32.5t67 15q14 0 39.5 -4t38.5 -4q16 0 23 10t11 30t6 25q137 22 137 68zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
+t103 -385.5z" />
+    <glyph glyph-name="uniF2AC" unicode="&#xf2ac;" horiz-adv-x="1664" 
+d="M848 1408q134 1 240.5 -68.5t163.5 -192.5q27 -58 27 -179q0 -47 -9 -191q14 -7 28 -7q18 0 51 13.5t51 13.5q29 0 56 -18t27 -46q0 -32 -31.5 -54t-69 -31.5t-69 -29t-31.5 -47.5q0 -15 12 -43q37 -82 102.5 -150t144.5 -101q28 -12 80 -23q28 -6 28 -35
+q0 -70 -219 -103q-7 -11 -11 -39t-14 -46.5t-33 -18.5q-20 0 -62 6.5t-64 6.5q-37 0 -62 -5q-32 -5 -63 -22.5t-58 -38t-58 -40.5t-76 -33.5t-99 -13.5q-52 0 -96.5 13.5t-75 33.5t-57.5 40.5t-58 38t-62 22.5q-26 5 -63 5q-24 0 -65.5 -7.5t-58.5 -7.5q-25 0 -35 18.5
+t-14 47.5t-11 40q-219 33 -219 103q0 29 28 35q52 11 80 23q78 32 144.5 101t102.5 150q12 28 12 43q0 28 -31.5 47.5t-69.5 29.5t-69.5 31.5t-31.5 52.5q0 27 26 45.5t55 18.5q15 0 48 -13t53 -13q18 0 32 7q-9 142 -9 190q0 122 27 180q64 137 172 198t264 63z" />
+    <glyph glyph-name="uniF2AD" unicode="&#xf2ad;" 
+d="M1280 388q0 22 -22 27q-67 14 -118 58t-80 109q-7 14 -7 25q0 15 19.5 26t42.5 17t42.5 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-11 0 -31 -8t-32 -8q-4 0 -12 2q5 63 5 115q0 78 -17 114q-36 78 -102.5 121.5t-152.5 43.5q-198 0 -275 -165q-18 -38 -18 -115
+q0 -38 6 -114q-10 -2 -15 -2q-11 0 -31.5 8t-30.5 8q-20 0 -37.5 -12.5t-17.5 -32.5q0 -21 19.5 -35.5t42.5 -20.5t42.5 -17t19.5 -26q0 -11 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -47 138 -69q2 -5 6 -26t11 -30.5t23 -9.5q13 0 38.5 5t38.5 5q35 0 67.5 -15
+t54.5 -32.5t57.5 -32.5t76.5 -15q43 0 79 15t57.5 32.5t54 32.5t67.5 15q13 0 39 -4.5t39 -4.5q15 0 22.5 9.5t11.5 31t5 24.5q138 22 138 69zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960
+q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="uniF2AE" unicode="&#xf2ae;" horiz-adv-x="2304" 
+d="M2304 1536q-69 -46 -125 -92t-89 -81t-59.5 -71.5t-37.5 -57.5t-22 -44.5t-14 -29.5q-10 -18 -35.5 -136.5t-48.5 -164.5q-15 -29 -50 -60.5t-67.5 -50.5t-72.5 -41t-48 -28q-47 -31 -151 -231q-341 14 -630 -158q-92 -53 -303 -179q47 16 86 31t55 22l15 7
+q71 27 163 64.5t133.5 53.5t108 34.5t142.5 31.5q186 31 465 -7q1 0 10 -3q11 -6 14 -17t-3 -22l-194 -345q-15 -29 -47 -22q-128 24 -354 24q-146 0 -402 -44.5t-392 -46.5q-82 -1 -149 13t-107 37t-61 40t-33 34l-1 1v2q0 6 6 6q138 0 371 55q192 366 374.5 524t383.5 158
+q5 0 14.5 -0.5t38 -5t55 -12t61.5 -24.5t63 -39.5t54 -59t40 -82.5l102 177q2 4 21 42.5t44.5 86.5t61 109.5t84 133.5t100.5 137q66 82 128 141.5t121.5 96.5t92.5 53.5t88 39.5z" />
+    <glyph glyph-name="uniF2B0" unicode="&#xf2b0;" 
+d="M1322 640q0 -45 -5 -76l-236 14l224 -78q-19 -73 -58 -141l-214 103l177 -158q-44 -61 -107 -108l-157 178l103 -215q-61 -37 -140 -59l-79 228l14 -240q-38 -6 -76 -6t-76 6l14 238l-78 -226q-74 19 -140 59l103 215l-157 -178q-59 43 -108 108l178 158l-214 -104
+q-39 69 -58 141l224 79l-237 -14q-5 42 -5 76q0 35 5 77l238 -14l-225 79q19 73 58 140l214 -104l-177 159q46 61 107 108l158 -178l-103 215q67 39 140 58l77 -224l-13 236q36 6 75 6q38 0 76 -6l-14 -237l78 225q74 -19 140 -59l-103 -214l158 178q61 -47 107 -108
+l-177 -159l213 104q37 -62 58 -141l-224 -78l237 14q5 -31 5 -77zM1352 640q0 160 -78.5 295.5t-213 214t-292.5 78.5q-119 0 -227 -46.5t-186.5 -125t-124.5 -187.5t-46 -229q0 -119 46 -228t124.5 -187.5t186.5 -125t227 -46.5q158 0 292.5 78.5t213 214t78.5 294.5z
+M1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" />
+    <glyph glyph-name="uniF2B1" unicode="&#xf2b1;" horiz-adv-x="1664" 
+d="M339 1318h691l-26 -72h-665q-110 0 -188.5 -79t-78.5 -189v-771q0 -95 60.5 -169.5t153.5 -93.5q23 -5 98 -5v-72h-45q-140 0 -239.5 100t-99.5 240v771q0 140 99.5 240t239.5 100zM1190 1536h247l-482 -1294q-23 -61 -40.5 -103.5t-45 -98t-54 -93.5t-64.5 -78.5
+t-79.5 -65t-95.5 -41t-116 -18.5v195q163 26 220 182q20 52 20 105q0 54 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795q37 55 45 73h678v1038q0 85 -49.5 155t-129.5 99l25 67q101 -34 163.5 -123.5t62.5 -197.5z" />
+    <glyph glyph-name="uniF2B2" unicode="&#xf2b2;" horiz-adv-x="1792" 
+d="M852 1227q0 -29 -17 -52.5t-45 -23.5t-45 23.5t-17 52.5t17 52.5t45 23.5t45 -23.5t17 -52.5zM688 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50 -21.5t-20 -51.5v-114q0 -30 20.5 -52t49.5 -22q30 0 50.5 22t20.5 52zM860 -149v114q0 30 -20 51.5t-50 21.5t-50.5 -21.5
+t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22q29 0 49.5 22t20.5 52zM1034 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1208 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114
+q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1476 535q-84 -160 -232 -259.5t-323 -99.5q-123 0 -229.5 51.5t-178.5 137t-113 197.5t-41 232q0 88 21 174q-104 -175 -104 -390q0 -162 65 -312t185 -251q30 57 91 57q56 0 86 -50q32 50 87 50q56 0 86 -50q32 50 87 50t87 -50
+q30 50 86 50q28 0 52.5 -15.5t37.5 -40.5q112 94 177 231.5t73 287.5zM1326 564q0 75 -72 75q-17 0 -47 -6q-95 -19 -149 -19q-226 0 -226 243q0 86 30 204q-83 -127 -83 -275q0 -150 89 -260.5t235 -110.5q111 0 210 70q13 48 13 79zM884 1223q0 50 -32 89.5t-81 39.5
+t-81 -39.5t-32 -89.5q0 -51 31.5 -90.5t81.5 -39.5t81.5 39.5t31.5 90.5zM1513 884q0 96 -37.5 179t-113 137t-173.5 54q-77 0 -149 -35t-127 -94q-48 -159 -48 -268q0 -104 45.5 -157t147.5 -53q53 0 142 19q36 6 53 6q51 0 77.5 -28t26.5 -80q0 -26 -4 -46
+q75 68 117.5 165.5t42.5 200.5zM1792 667q0 -111 -33.5 -249.5t-93.5 -204.5q-58 -64 -195 -142.5t-228 -104.5l-4 -1v-114q0 -43 -29.5 -75t-72.5 -32q-56 0 -86 50q-32 -50 -87 -50t-87 50q-30 -50 -86 -50q-55 0 -87 50q-30 -50 -86 -50q-47 0 -75 33.5t-28 81.5
+q-90 -68 -198 -68q-118 0 -211 80q54 1 106 20q-113 31 -182 127q32 -7 71 -7q89 0 164 46q-192 192 -240 306q-24 56 -24 160q0 57 9 125.5t31.5 146.5t55 141t86.5 105t120 42q59 0 81 -52q19 29 42 54q2 3 12 13t13 16q10 15 23 38t25 42t28 39q87 111 211.5 177
+t260.5 66q35 0 62 -4q59 64 146 64q83 0 140 -57q5 -5 5 -12q0 -5 -6 -13.5t-12.5 -16t-16 -17l-10.5 -10.5q17 -6 36 -18t19 -24q0 -6 -16 -25q157 -138 197 -378q25 30 60 30q45 0 100 -49q90 -80 90 -279z" />
+    <glyph glyph-name="uniF2B3" unicode="&#xf2b3;" 
+d="M917 631q0 33 -6 64h-362v-132h217q-12 -76 -74.5 -120.5t-142.5 -44.5q-99 0 -169 71.5t-70 170.5t70 170.5t169 71.5q93 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585h109v110
+h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="uniF2B4" unicode="&#xf2b4;" 
+d="M1536 1024v-839q0 -48 -49 -62q-174 -52 -338 -52q-73 0 -215.5 29.5t-227.5 29.5q-164 0 -370 -48v-338h-160v1368q-63 25 -101 81t-38 124q0 91 64 155t155 64t155 -64t64 -155q0 -68 -38 -124t-101 -81v-68q190 44 343 44q99 0 198 -15q14 -2 111.5 -22.5t149.5 -20.5
+q77 0 165 18q11 2 80 21t89 19q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="uniF2B5" unicode="&#xf2b5;" horiz-adv-x="2304" 
+d="M192 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32zM1665 442q-10 13 -38.5 50t-41.5 54t-38 49t-42.5 53t-40.5 47t-45 49l-125 -140q-83 -94 -208.5 -92t-205.5 98q-57 69 -56.5 158t58.5 157l177 206q-22 11 -51 16.5t-47.5 6t-56.5 -0.5t-49 -1q-92 0 -158 -66
+l-158 -158h-155v-544q5 0 21 0.5t22 0t19.5 -2t20.5 -4.5t17.5 -8.5t18.5 -13.5l297 -292q115 -111 227 -111q78 0 125 47q57 -20 112.5 8t72.5 85q74 -6 127 44q20 18 36 45.5t14 50.5q10 -10 43 -10q43 0 77 21t49.5 53t12 71.5t-30.5 73.5zM1824 384h96v512h-93l-157 180
+q-66 76 -169 76h-167q-89 0 -146 -67l-209 -243q-28 -33 -28 -75t27 -75q43 -51 110 -52t111 49l193 218q25 23 53.5 21.5t47 -27t8.5 -56.5q16 -19 56 -63t60 -68q29 -36 82.5 -105.5t64.5 -84.5q52 -66 60 -140zM2112 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32z
+M2304 960v-640q0 -26 -19 -45t-45 -19h-434q-27 -65 -82 -106.5t-125 -51.5q-33 -48 -80.5 -81.5t-102.5 -45.5q-42 -53 -104.5 -81.5t-128.5 -24.5q-60 -34 -126 -39.5t-127.5 14t-117 53.5t-103.5 81l-287 282h-358q-26 0 -45 19t-19 45v672q0 26 19 45t45 19h421
+q14 14 47 48t47.5 48t44 40t50.5 37.5t51 25.5t62 19.5t68 5.5h117q99 0 181 -56q82 56 181 56h167q35 0 67 -6t56.5 -14.5t51.5 -26.5t44.5 -31t43 -39.5t39 -42t41 -48t41.5 -48.5h355q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="uniF2B6" unicode="&#xf2b6;" horiz-adv-x="1792" 
+d="M1792 882v-978q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v978q0 15 11 24q8 7 39 34.5t41.5 36t45.5 37.5t70 55.5t96 73t143.5 107t192.5 140.5q5 4 52.5 40t71.5 52.5t64 35t69 18.5t69 -18.5t65 -35.5t71 -52t52 -40q110 -80 192.5 -140.5t143.5 -107
+t96 -73t70 -55.5t45.5 -37.5t41.5 -36t39 -34.5q11 -9 11 -24zM1228 297q263 191 345 252q11 8 12.5 20.5t-6.5 23.5l-38 52q-8 11 -21 12.5t-24 -6.5q-231 -169 -343 -250q-5 -3 -52 -39t-71.5 -52.5t-64.5 -35t-69 -18.5t-69 18.5t-64.5 35t-71.5 52.5t-52 39
+q-186 134 -343 250q-11 8 -24 6.5t-21 -12.5l-38 -52q-8 -11 -6.5 -23.5t12.5 -20.5q82 -61 345 -252q10 -8 50 -38t65 -47t64 -39.5t77.5 -33.5t75.5 -11t75.5 11t79 34.5t64.5 39.5t65 47.5t48 36.5z" />
+    <glyph glyph-name="uniF2B7" unicode="&#xf2b7;" horiz-adv-x="1792" 
+d="M1474 623l39 -51q8 -11 6.5 -23.5t-11.5 -20.5q-43 -34 -126.5 -98.5t-146.5 -113t-67 -51.5q-39 -32 -60 -48t-60.5 -41t-76.5 -36.5t-74 -11.5h-1h-1q-37 0 -74 11.5t-76 36.5t-61 41.5t-60 47.5q-5 4 -65 50.5t-143.5 111t-122.5 94.5q-11 8 -12.5 20.5t6.5 23.5
+l37 52q8 11 21.5 13t24.5 -7q94 -73 306 -236q5 -4 43.5 -35t60.5 -46.5t56.5 -32.5t58.5 -17h1h1q24 0 58.5 17t56.5 32.5t60.5 46.5t43.5 35q258 198 313 242q11 8 24 6.5t21 -12.5zM1664 -96v928q-90 83 -159 139q-91 74 -389 304q-3 2 -43 35t-61 48t-56 32.5t-59 17.5
+h-1h-1q-24 0 -59 -17.5t-56 -32.5t-61 -48t-43 -35q-215 -166 -315.5 -245.5t-129.5 -104t-82 -74.5q-14 -12 -21 -19v-928q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 832v-928q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v928q0 56 41 94
+q123 114 350 290.5t233 181.5q36 30 59 47.5t61.5 42t76 36.5t74.5 12h1h1q37 0 74.5 -12t76 -36.5t61.5 -42t59 -47.5q43 -36 156 -122t226 -177t201 -173q41 -38 41 -94z" />
+    <glyph glyph-name="uniF2B8" unicode="&#xf2b8;" 
+d="M330 1l202 -214l-34 236l-216 213zM556 -225l274 218l-11 245l-300 -215zM245 413l227 -213l-48 327l-245 204zM495 189l317 214l-14 324l-352 -200zM843 178l95 -80l-2 239l-103 79q0 -1 1 -8.5t0 -12t-5 -7.5l-78 -52l85 -70q7 -6 7 -88zM138 930l256 -200l-68 465
+l-279 173zM1173 267l15 234l-230 -164l2 -240zM417 722l373 194l-19 441l-423 -163zM1270 357l20 233l-226 142l-2 -105l144 -95q6 -4 4 -9l-7 -119zM1461 496l30 222l-179 -128l-20 -228zM1273 329l-71 49l-8 -117q0 -5 -4 -8l-234 -187q-7 -5 -14 0l-98 83l7 -161
+q0 -5 -4 -8l-293 -234q-4 -2 -6 -2q-8 2 -8 3l-228 242q-4 4 -59 277q-2 7 5 11l61 37q-94 86 -95 92l-72 351q-2 7 6 12l94 45q-133 100 -135 108l-96 466q-2 10 7 13l433 135q5 0 8 -1l317 -153q6 -4 6 -9l20 -463q0 -7 -6 -10l-118 -61l126 -85q5 -2 5 -8l5 -123l121 74
+q5 4 11 0l84 -56l3 110q0 6 5 9l206 126q6 3 11 0l245 -135q4 -4 5 -7t-6.5 -60t-17.5 -124.5t-10 -70.5q0 -5 -4 -7l-191 -153q-6 -5 -13 0z" />
+    <glyph glyph-name="uniF2B9" unicode="&#xf2b9;" horiz-adv-x="1664" 
+d="M1201 298q0 57 -5.5 107t-21 100.5t-39.5 86t-64 58t-91 22.5q-6 -4 -33.5 -20.5t-42.5 -24.5t-40.5 -20t-49 -17t-46.5 -5t-46.5 5t-49 17t-40.5 20t-42.5 24.5t-33.5 20.5q-51 0 -91 -22.5t-64 -58t-39.5 -86t-21 -100.5t-5.5 -107q0 -73 42 -121.5t103 -48.5h576
+q61 0 103 48.5t42 121.5zM1028 892q0 108 -76.5 184t-183.5 76t-183.5 -76t-76.5 -184q0 -107 76.5 -183t183.5 -76t183.5 76t76.5 183zM1664 352v-192q0 -14 -9 -23t-23 -9h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216
+q66 0 113 -47t47 -113v-224h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="uniF2BA" unicode="&#xf2ba;" horiz-adv-x="1664" 
+d="M1028 892q0 -107 -76.5 -183t-183.5 -76t-183.5 76t-76.5 183q0 108 76.5 184t183.5 76t183.5 -76t76.5 -184zM980 672q46 0 82.5 -17t60 -47.5t39.5 -67t24 -81t11.5 -82.5t3.5 -79q0 -67 -39.5 -118.5t-105.5 -51.5h-576q-66 0 -105.5 51.5t-39.5 118.5q0 48 4.5 93.5
+t18.5 98.5t36.5 91.5t63 64.5t93.5 26h5q7 -4 32 -19.5t35.5 -21t33 -17t37 -16t35 -9t39.5 -4.5t39.5 4.5t35 9t37 16t33 17t35.5 21t32 19.5zM1664 928q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96
+q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216q66 0 113 -47t47 -113v-224h96q13 0 22.5 -9.5t9.5 -22.5v-192zM1408 -96v1472q0 13 -9.5 22.5t-22.5 9.5h-1216
+q-13 0 -22.5 -9.5t-9.5 -22.5v-1472q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5z" />
+    <glyph glyph-name="uniF2BB" unicode="&#xf2bb;" horiz-adv-x="2048" 
+d="M1024 405q0 64 -9 117.5t-29.5 103t-60.5 78t-97 28.5q-6 -4 -30 -18t-37.5 -21.5t-35.5 -17.5t-43 -14.5t-42 -4.5t-42 4.5t-43 14.5t-35.5 17.5t-37.5 21.5t-30 18q-57 0 -97 -28.5t-60.5 -78t-29.5 -103t-9 -117.5t37 -106.5t91 -42.5h512q54 0 91 42.5t37 106.5z
+M867 925q0 94 -66.5 160.5t-160.5 66.5t-160.5 -66.5t-66.5 -160.5t66.5 -160.5t160.5 -66.5t160.5 66.5t66.5 160.5zM1792 416v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1792 676v56q0 15 -10.5 25.5t-25.5 10.5h-568
+q-15 0 -25.5 -10.5t-10.5 -25.5v-56q0 -15 10.5 -25.5t25.5 -10.5h568q15 0 25.5 10.5t10.5 25.5zM1792 928v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-352v96q0 14 -9 23t-23 9
+h-64q-14 0 -23 -9t-9 -23v-96h-768v96q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-96h-352q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2BC" unicode="&#xf2bc;" horiz-adv-x="2048" 
+d="M1024 405q0 -64 -37 -106.5t-91 -42.5h-512q-54 0 -91 42.5t-37 106.5t9 117.5t29.5 103t60.5 78t97 28.5q6 -4 30 -18t37.5 -21.5t35.5 -17.5t43 -14.5t42 -4.5t42 4.5t43 14.5t35.5 17.5t37.5 21.5t30 18q57 0 97 -28.5t60.5 -78t29.5 -103t9 -117.5zM867 925
+q0 -94 -66.5 -160.5t-160.5 -66.5t-160.5 66.5t-66.5 160.5t66.5 160.5t160.5 66.5t160.5 -66.5t66.5 -160.5zM1792 480v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1792 732v-56q0 -15 -10.5 -25.5t-25.5 -10.5h-568
+q-15 0 -25.5 10.5t-10.5 25.5v56q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5 -10.5t10.5 -25.5zM1792 992v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1920 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1728q-13 0 -22.5 -9.5
+t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h352v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h768v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h352q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113
+t113 47h1728q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2BD" unicode="&#xf2bd;" horiz-adv-x="1792" 
+d="M1523 197q-22 155 -87.5 257.5t-184.5 118.5q-67 -74 -159.5 -115.5t-195.5 -41.5t-195.5 41.5t-159.5 115.5q-119 -16 -184.5 -118.5t-87.5 -257.5q106 -150 271 -237.5t356 -87.5t356 87.5t271 237.5zM1280 896q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5
+t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1792 640q0 -182 -71 -347.5t-190.5 -286t-285.5 -191.5t-349 -71q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF2BE" unicode="&#xf2be;" horiz-adv-x="1792" 
+d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348q0 -181 -70.5 -347t-190.5 -286t-286 -191.5t-349 -71.5t-349 71t-285.5 191.5t-190.5 286t-71 347.5t71 348t191 286t286 191t348 71zM1515 185q149 205 149 455q0 156 -61 298t-164 245t-245 164t-298 61t-298 -61
+t-245 -164t-164 -245t-61 -298q0 -250 149 -455q66 327 306 327q131 -128 313 -128t313 128q240 0 306 -327zM1280 832q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5z" />
+    <glyph glyph-name="uniF2C0" unicode="&#xf2c0;" 
+d="M1201 752q47 -14 89.5 -38t89 -73t79.5 -115.5t55 -172t22 -236.5q0 -154 -100 -263.5t-241 -109.5h-854q-141 0 -241 109.5t-100 263.5q0 131 22 236.5t55 172t79.5 115.5t89 73t89.5 38q-79 125 -79 272q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5
+t198.5 -40.5t163.5 -109.5t109.5 -163.5t40.5 -198.5q0 -147 -79 -272zM768 1408q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5zM1195 -128q88 0 150.5 71.5t62.5 173.5q0 239 -78.5 377t-225.5 145
+q-145 -127 -336 -127t-336 127q-147 -7 -225.5 -145t-78.5 -377q0 -102 62.5 -173.5t150.5 -71.5h854z" />
+    <glyph glyph-name="uniF2C1" unicode="&#xf2c1;" horiz-adv-x="1280" 
+d="M1024 278q0 -64 -37 -107t-91 -43h-512q-54 0 -91 43t-37 107t9 118t29.5 104t61 78.5t96.5 28.5q80 -75 188 -75t188 75q56 0 96.5 -28.5t61 -78.5t29.5 -104t9 -118zM870 797q0 -94 -67.5 -160.5t-162.5 -66.5t-162.5 66.5t-67.5 160.5t67.5 160.5t162.5 66.5
+t162.5 -66.5t67.5 -160.5zM1152 -96v1376h-1024v-1376q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1280 1376v-1472q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h352v-96q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v96h352
+q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2C2" unicode="&#xf2c2;" horiz-adv-x="2048" 
+d="M896 324q0 54 -7.5 100.5t-24.5 90t-51 68.5t-81 25q-64 -64 -156 -64t-156 64q-47 0 -81 -25t-51 -68.5t-24.5 -90t-7.5 -100.5q0 -55 31.5 -93.5t75.5 -38.5h426q44 0 75.5 38.5t31.5 93.5zM768 768q0 80 -56 136t-136 56t-136 -56t-56 -136t56 -136t136 -56t136 56
+t56 136zM1792 288v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1408 544v64q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1792 544v64q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23
+v-64q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1792 800v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM128 1152h1792v96q0 14 -9 23t-23 9h-1728q-14 0 -23 -9t-9 -23v-96zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728
+q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2C3" unicode="&#xf2c3;" horiz-adv-x="2048" 
+d="M896 324q0 -55 -31.5 -93.5t-75.5 -38.5h-426q-44 0 -75.5 38.5t-31.5 93.5q0 54 7.5 100.5t24.5 90t51 68.5t81 25q64 -64 156 -64t156 64q47 0 81 -25t51 -68.5t24.5 -90t7.5 -100.5zM768 768q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z
+M1792 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1408 608v-64q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h320q14 0 23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v64
+q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 864v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1920 32v1120h-1792v-1120q0 -13 9.5 -22.5t22.5 -9.5h1728q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47
+h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2C4" unicode="&#xf2c4;" horiz-adv-x="1792" 
+d="M1255 749q0 318 -105 474.5t-330 156.5q-222 0 -326 -157t-104 -474q0 -316 104 -471.5t326 -155.5q74 0 131 17q-22 43 -39 73t-44 65t-53.5 56.5t-63 36t-77.5 14.5q-46 0 -79 -16l-49 97q105 91 276 91q132 0 215.5 -54t150.5 -155q67 149 67 402zM1645 117h117
+q3 -27 -2 -67t-26.5 -95t-58 -100.5t-107 -78t-162.5 -32.5q-71 0 -130.5 19t-105.5 56t-79 78t-66 96q-97 -27 -205 -27q-150 0 -292.5 58t-253 158.5t-178 249t-67.5 317.5q0 170 67.5 319.5t178.5 250.5t253.5 159t291.5 58q121 0 238.5 -36t217 -106t176 -164.5
+t119.5 -219t43 -261.5q0 -190 -80.5 -347.5t-218.5 -264.5q47 -70 93.5 -106.5t104.5 -36.5q61 0 94 37.5t38 85.5z" />
+    <glyph glyph-name="uniF2C5" unicode="&#xf2c5;" horiz-adv-x="2304" 
+d="M453 -101q0 -21 -16 -37.5t-37 -16.5q-1 0 -13 3q-63 15 -162 140q-225 284 -225 676q0 341 213 614q39 51 95 103.5t94 52.5q19 0 35 -13.5t16 -32.5q0 -27 -63 -90q-98 -102 -147 -184q-119 -199 -119 -449q0 -281 123 -491q50 -85 136 -173q2 -3 14.5 -16t19.5 -21
+t17 -20.5t14.5 -23.5t4.5 -21zM1796 33q0 -29 -17.5 -48.5t-46.5 -19.5h-1081q-26 0 -45 19t-19 45q0 29 17.5 48.5t46.5 19.5h1081q26 0 45 -19t19 -45zM1581 644q0 -134 -67 -233q-25 -38 -69.5 -78.5t-83.5 -60.5q-16 -10 -27 -10q-7 0 -15 6t-8 12q0 9 19 30t42 46
+t42 67.5t19 88.5q0 76 -35 130q-29 42 -46 42q-3 0 -3 -5q0 -12 7.5 -35.5t7.5 -36.5q0 -22 -21.5 -35t-44.5 -13q-66 0 -66 76q0 15 1.5 44t1.5 44q0 25 -10 46q-13 25 -42 53.5t-51 28.5q-5 0 -7 -0.5t-3.5 -2.5t-1.5 -6q0 -2 16 -26t16 -54q0 -37 -19 -68t-46 -54
+t-53.5 -46t-45.5 -54t-19 -68q0 -98 42 -160q29 -43 79 -63q16 -5 17 -10q1 -2 1 -5q0 -16 -18 -16q-6 0 -33 11q-119 43 -195 139.5t-76 218.5q0 55 24.5 115.5t60 115t70.5 108.5t59.5 113.5t24.5 111.5q0 53 -25 94q-29 48 -56 64q-19 9 -19 21q0 20 41 20q50 0 110 -29
+q41 -19 71 -44.5t49.5 -51t33.5 -62.5t22 -69t16 -80q0 -1 3 -17.5t4.5 -25t5.5 -25t9 -27t11 -21.5t14.5 -16.5t18.5 -5.5q23 0 37 14t14 37q0 25 -20 67t-20 52t10 10q27 0 93 -70q72 -76 102.5 -156t30.5 -186zM2304 615q0 -274 -138 -503q-19 -32 -48 -72t-68 -86.5
+t-81 -77t-74 -30.5q-16 0 -31 15.5t-15 31.5q0 15 29 50.5t68.5 77t48.5 52.5q183 230 183 531q0 131 -20.5 235t-72.5 211q-58 119 -163 228q-2 3 -13 13.5t-16.5 16.5t-15 17.5t-15 20t-9.5 18.5t-4 19q0 19 16 35.5t35 16.5q70 0 196 -169q98 -131 146 -273t60 -314
+q2 -42 2 -64z" />
+    <glyph glyph-name="uniF2C6" unicode="&#xf2c6;" horiz-adv-x="1792" 
+d="M1189 229l147 693q9 44 -10.5 63t-51.5 7l-864 -333q-29 -11 -39.5 -25t-2.5 -26.5t32 -19.5l221 -69l513 323q21 14 32 6q7 -5 -4 -15l-415 -375v0v0l-16 -228q23 0 45 22l108 104l224 -165q64 -36 81 38zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71
+t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF2C7" unicode="&#xf2c7;" horiz-adv-x="1024" 
+d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v907h128v-907q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
+t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
+v128h192z" />
+    <glyph glyph-name="uniF2C8" unicode="&#xf2c8;" horiz-adv-x="1024" 
+d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v651h128v-651q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
+t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
+v128h192z" />
+    <glyph glyph-name="uniF2C9" unicode="&#xf2c9;" horiz-adv-x="1024" 
+d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v395h128v-395q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
+t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
+v128h192z" />
+    <glyph glyph-name="uniF2CA" unicode="&#xf2ca;" horiz-adv-x="1024" 
+d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v139h128v-139q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
+t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
+v128h192z" />
+    <glyph glyph-name="uniF2CB" unicode="&#xf2cb;" horiz-adv-x="1024" 
+d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 79 56 135.5t136 56.5t136 -56.5t56 -135.5zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5z
+M896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z" />
+    <glyph glyph-name="uniF2CC" unicode="&#xf2cc;" horiz-adv-x="1920" 
+d="M1433 1287q10 -10 10 -23t-10 -23l-626 -626q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l44 44q-72 91 -81.5 207t46.5 215q-74 71 -176 71q-106 0 -181 -75t-75 -181v-1280h-256v1280q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5q106 0 201 -41
+t166 -115q94 39 197 24.5t185 -79.5l44 44q10 10 23 10t23 -10zM1344 1024q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1600 896q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1856 1024q26 0 45 -19t19 -45t-19 -45t-45 -19
+t-45 19t-19 45t19 45t45 19zM1216 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1408 832q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM1728 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 768
+q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 640q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1600 768q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 512q-26 0 -45 19t-19 45t19 45t45 19t45 -19
+t19 -45t-19 -45t-45 -19zM1472 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 384
+q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 256q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19z" />
+    <glyph glyph-name="uniF2CD" unicode="&#xf2cd;" horiz-adv-x="1792" 
+d="M1664 448v-192q0 -169 -128 -286v-194q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v118q-63 -22 -128 -22h-768q-65 0 -128 22v-110q0 -17 -9.5 -28.5t-22.5 -11.5h-64q-13 0 -22.5 11.5t-9.5 28.5v186q-128 117 -128 286v192h1536zM704 864q0 -14 -9 -23t-23 -9t-23 9
+t-9 23t9 23t23 9t23 -9t9 -23zM768 928q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM704 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1056q0 -14 -9 -23t-23 -9t-23 9
+t-9 23t9 23t23 9t23 -9t9 -23zM704 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v640q0 106 75 181t181 75q108 0 184 -78q46 19 98 12t93 -39l22 22q11 11 22 0l42 -42
+q11 -11 0 -22l-314 -314q-11 -11 -22 0l-42 42q-11 11 0 22l22 22q-36 46 -40.5 104t23.5 108q-37 35 -88 35q-53 0 -90.5 -37.5t-37.5 -90.5v-640h1504q14 0 23 -9t9 -23zM896 1056q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1120q0 -14 -9 -23t-23 -9
+t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM896 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1248q0 -14 -9 -23
+t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1024 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1088 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23z" />
+    <glyph glyph-name="uniF2CE" unicode="&#xf2ce;" 
+d="M994 344q0 -86 -17 -197q-31 -215 -55 -313q-22 -90 -152 -90t-152 90q-24 98 -55 313q-17 110 -17 197q0 168 224 168t224 -168zM1536 768q0 -240 -134 -434t-350 -280q-8 -3 -15 3t-6 15q7 48 10 66q4 32 6 47q1 9 9 12q159 81 255.5 234t96.5 337q0 180 -91 330.5
+t-247 234.5t-337 74q-124 -7 -237 -61t-193.5 -140.5t-128 -202t-46.5 -240.5q1 -184 99 -336.5t257 -231.5q7 -3 9 -12q3 -21 6 -45q1 -9 5 -32.5t6 -35.5q1 -9 -6.5 -15t-15.5 -2q-148 58 -261 169.5t-173.5 264t-52.5 319.5q7 143 66 273.5t154.5 227t225 157.5t272.5 70
+q164 10 315.5 -46.5t261 -160.5t175 -250.5t65.5 -308.5zM994 800q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5zM1282 768q0 -122 -53.5 -228.5t-146.5 -177.5q-8 -6 -16 -2t-10 14q-6 52 -29 92q-7 10 3 20
+q58 54 91 127t33 155q0 111 -58.5 204t-157.5 141.5t-212 36.5q-133 -15 -229 -113t-109 -231q-10 -92 23.5 -176t98.5 -144q10 -10 3 -20q-24 -41 -29 -93q-2 -9 -10 -13t-16 2q-95 74 -148.5 183t-51.5 234q3 131 69 244t177 181.5t241 74.5q144 7 268 -60t196.5 -187.5
+t72.5 -263.5z" />
+    <glyph glyph-name="uniF2D0" unicode="&#xf2d0;" horiz-adv-x="1792" 
+d="M256 128h1280v768h-1280v-768zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2D1" unicode="&#xf2d1;" horiz-adv-x="1792" 
+d="M1792 224v-192q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2D2" unicode="&#xf2d2;" horiz-adv-x="2048" 
+d="M256 0h768v512h-768v-512zM1280 512h512v768h-768v-256h96q66 0 113 -47t47 -113v-352zM2048 1376v-960q0 -66 -47 -113t-113 -47h-608v-352q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h608v352q0 66 47 113t113 47h960q66 0 113 -47
+t47 -113z" />
+    <glyph glyph-name="uniF2D3" unicode="&#xf2d3;" horiz-adv-x="1792" 
+d="M1175 215l146 146q10 10 10 23t-10 23l-233 233l233 233q10 10 10 23t-10 23l-146 146q-10 10 -23 10t-23 -10l-233 -233l-233 233q-10 10 -23 10t-23 -10l-146 -146q-10 -10 -10 -23t10 -23l233 -233l-233 -233q-10 -10 -10 -23t10 -23l146 -146q10 -10 23 -10t23 10
+l233 233l233 -233q10 -10 23 -10t23 10zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2D4" unicode="&#xf2d4;" horiz-adv-x="1792" 
+d="M1257 425l-146 -146q-10 -10 -23 -10t-23 10l-169 169l-169 -169q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l169 169l-169 169q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l169 -169l169 169q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23
+l-169 -169l169 -169q10 -10 10 -23t-10 -23zM256 128h1280v1024h-1280v-1024zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2D5" unicode="&#xf2d5;" horiz-adv-x="1792" 
+d="M1070 358l306 564h-654l-306 -564h654zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF2D6" unicode="&#xf2d6;" horiz-adv-x="1794" 
+d="M1291 1060q-15 17 -35 8.5t-26 -28.5t5 -38q14 -17 40 -14.5t34 20.5t-18 52zM895 814q-8 -8 -19.5 -8t-18.5 8q-8 8 -8 19t8 18q7 8 18.5 8t19.5 -8q7 -7 7 -18t-7 -19zM1060 740l-35 -35q-12 -13 -29.5 -13t-30.5 13l-38 38q-12 13 -12 30t12 30l35 35q12 12 29.5 12
+t30.5 -12l38 -39q12 -12 12 -29.5t-12 -29.5zM951 870q-7 -8 -18.5 -8t-19.5 8q-7 8 -7 19t7 19q8 8 19 8t19 -8t8 -19t-8 -19zM1354 968q-34 -64 -107.5 -85.5t-127.5 16.5q-38 28 -61 66.5t-21 87.5t39 92t75.5 53t70.5 -5t70 -51q2 -2 13 -12.5t14.5 -13.5t13 -13.5
+t12.5 -15.5t10 -15.5t8.5 -18t4 -18.5t1 -21t-5 -22t-9.5 -24zM1555 486q3 20 -8.5 34.5t-27.5 21.5t-33 17t-23 20q-40 71 -84 98.5t-113 11.5q19 13 40 18.5t33 4.5l12 -1q2 45 -34 90q6 20 6.5 40.5t-2.5 30.5l-3 10q43 24 71 65t34 91q10 84 -43 150.5t-137 76.5
+q-60 7 -114 -18.5t-82 -74.5q-30 -51 -33.5 -101t14.5 -87t43.5 -64t56.5 -42q-45 4 -88 36t-57 88q-28 108 32 222q-16 21 -29 32q-50 0 -89 -19q19 24 42 37t36 14l13 1q0 50 -13 78q-10 21 -32.5 28.5t-47 -3.5t-37.5 -40q2 4 4 7q-7 -28 -6.5 -75.5t19 -117t48.5 -122.5
+q-25 -14 -47 -36q-35 -16 -85.5 -70.5t-84.5 -101.5l-33 -46q-90 -34 -181 -125.5t-75 -162.5q1 -16 11 -27q-15 -12 -30 -30q-21 -25 -21 -54t21.5 -40t63.5 6q41 19 77 49.5t55 60.5q-2 2 -6.5 5t-20.5 7.5t-33 3.5q23 5 51 12.5t40 10t27.5 6t26 4t23.5 0.5q14 -7 22 34
+q7 37 7 90q0 102 -40 150q106 -103 101 -219q-1 -29 -15 -50t-27 -27l-13 -6q-4 -7 -19 -32t-26 -45.5t-26.5 -52t-25 -61t-17 -63t-6.5 -66.5t10 -63q-35 54 -37 80q-22 -24 -34.5 -39t-33.5 -42t-30.5 -46t-16.5 -41t-0.5 -38t25.5 -27q45 -25 144 64t190.5 221.5
+t122.5 228.5q86 52 145 115.5t86 119.5q47 -93 154 -178q104 -83 167 -80q39 2 46 43zM1794 640q0 -182 -71 -348t-191 -286t-286.5 -191t-348.5 -71t-348.5 71t-286.5 191t-191 286t-71 348t71 348t191 286t286.5 191t348.5 71t348.5 -71t286.5 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF2D7" unicode="&#xf2d7;" 
+d="M518 1353v-655q103 -1 191.5 1.5t125.5 5.5l37 3q68 2 90.5 24.5t39.5 94.5l33 142h103l-14 -322l7 -319h-103l-29 127q-15 68 -45 93t-84 26q-87 8 -352 8v-556q0 -78 43.5 -115.5t133.5 -37.5h357q35 0 59.5 2t55 7.5t54 18t48.5 32t46 50.5t39 73l93 216h89
+q-6 -37 -31.5 -252t-30.5 -276q-146 5 -263.5 8t-162.5 4h-44h-628l-376 -12v102l127 25q67 13 91.5 37t25.5 79l8 643q3 402 -8 645q-2 61 -25.5 84t-91.5 36l-127 24v102l376 -12h702q139 0 374 27q-6 -68 -14 -194.5t-12 -219.5l-5 -92h-93l-32 124q-31 121 -74 179.5
+t-113 58.5h-548q-28 0 -35.5 -8.5t-7.5 -30.5z" />
+    <glyph glyph-name="uniF2D8" unicode="&#xf2d8;" 
+d="M922 739v-182q0 -4 0.5 -15t0 -15l-1.5 -12t-3.5 -11.5t-6.5 -7.5t-11 -5.5t-16 -1.5v309q9 0 16 -1t11 -5t6.5 -5.5t3.5 -9.5t1 -10.5v-13.5v-14zM1238 643v-121q0 -1 0.5 -12.5t0 -15.5t-2.5 -11.5t-7.5 -10.5t-13.5 -3q-9 0 -14 9q-4 10 -4 165v7v8.5v9t1.5 8.5l3.5 7
+t5 5.5t8 1.5q6 0 10 -1.5t6.5 -4.5t4 -6t2 -8.5t0.5 -8v-9.5v-9zM180 407h122v472h-122v-472zM614 407h106v472h-159l-28 -221q-20 148 -32 221h-158v-472h107v312l45 -312h76l43 319v-319zM1039 712q0 67 -5 90q-3 16 -11 28.5t-17 20.5t-25 14t-26.5 8.5t-31 4t-29 1.5
+h-29.5h-12h-91v-472h56q169 -1 197 24.5t25 180.5q-1 62 -1 100zM1356 515v133q0 29 -2 45t-9.5 33.5t-24.5 25t-46 7.5q-46 0 -77 -34v154h-117v-472h110l7 30q30 -36 77 -36q50 0 66 30.5t16 83.5zM1536 1248v-1216q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113
+v1216q0 66 47 113t113 47h1216q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2D9" unicode="&#xf2d9;" horiz-adv-x="2176" 
+d="M1143 -197q-6 1 -11 4q-13 8 -36 23t-86 65t-116.5 104.5t-112 140t-89.5 172.5q-17 3 -175 37q66 -213 235 -362t391 -184zM502 409l168 -28q-25 76 -41 167.5t-19 145.5l-4 53q-84 -82 -121 -224q5 -65 17 -114zM612 1018q-43 -64 -77 -148q44 46 74 68zM2049 584
+q0 161 -62 307t-167.5 252t-250.5 168.5t-304 62.5q-147 0 -281 -52.5t-240 -148.5q-30 -58 -45 -160q60 51 143 83.5t158.5 43t143 13.5t108.5 -1l40 -3q33 -1 53 -15.5t24.5 -33t6.5 -37t-1 -28.5q-126 11 -227.5 0.5t-183 -43.5t-142.5 -71.5t-131 -98.5
+q4 -36 11.5 -92.5t35.5 -178t62 -179.5q123 -6 247.5 14.5t214.5 53.5t162.5 67t109.5 59l37 24q22 16 39.5 20.5t30.5 -5t17 -34.5q14 -97 -39 -121q-208 -97 -467 -134q-135 -20 -317 -16q41 -96 110 -176.5t137 -127t130.5 -79t101.5 -43.5l39 -12q143 -23 263 15
+q195 99 314 289t119 418zM2123 621q-14 -135 -40 -212q-70 -208 -181.5 -346.5t-318.5 -253.5q-48 -33 -82 -44q-72 -26 -163 -16q-36 -3 -73 -3q-283 0 -504.5 173t-295.5 442q-1 0 -4 0.5t-5 0.5q-6 -50 2.5 -112.5t26 -115t36 -98t31.5 -71.5l14 -26q8 -12 54 -82
+q-71 38 -124.5 106.5t-78.5 140t-39.5 137t-17.5 107.5l-2 42q-5 2 -33.5 12.5t-48.5 18t-53 20.5t-57.5 25t-50 25.5t-42.5 27t-25 25.5q19 -10 50.5 -25.5t113 -45.5t145.5 -38l2 32q11 149 94 290q41 202 176 365q28 115 81 214q15 28 32 45t49 32q158 74 303.5 104
+t302 11t306.5 -97q220 -115 333 -336t87 -474z" />
+    <glyph glyph-name="uniF2DA" unicode="&#xf2da;" horiz-adv-x="1792" 
+d="M1341 752q29 44 -6.5 129.5t-121.5 142.5q-58 39 -125.5 53.5t-118 4.5t-68.5 -37q-12 -23 -4.5 -28t42.5 -10q23 -3 38.5 -5t44.5 -9.5t56 -17.5q36 -13 67.5 -31.5t53 -37t40 -38.5t30.5 -38t22 -34.5t16.5 -28.5t12 -18.5t10.5 -6t11 9.5zM1704 178
+q-52 -127 -148.5 -220t-214.5 -141.5t-253 -60.5t-266 13.5t-251 91t-210 161.5t-141.5 235.5t-46.5 303.5q1 41 8.5 84.5t12.5 64t24 80.5t23 73q-51 -208 1 -397t173 -318t291 -206t346 -83t349 74.5t289 244.5q20 27 18 14q0 -4 -4 -14zM1465 627q0 -104 -40.5 -199
+t-108.5 -164t-162 -109.5t-198 -40.5t-198 40.5t-162 109.5t-108.5 164t-40.5 199t40.5 199t108.5 164t162 109.5t198 40.5t198 -40.5t162 -109.5t108.5 -164t40.5 -199zM1752 915q-65 147 -180.5 251t-253 153.5t-292 53.5t-301 -36.5t-275.5 -129t-220 -211.5t-131 -297
+t-10 -373q-49 161 -51.5 311.5t35.5 272.5t109 227t165.5 180.5t207 126t232 71t242.5 9t236 -54t216 -124.5t178 -197q33 -50 62 -121t31 -112zM1690 573q12 244 -136.5 416t-396.5 240q-8 0 -10 5t24 8q125 -4 230 -50t173 -120t116 -168.5t58.5 -199t-1 -208
+t-61.5 -197.5t-122.5 -167t-185 -117.5t-248.5 -46.5q108 30 201.5 80t174 123t129.5 176.5t55 225.5z" />
+    <glyph glyph-name="uniF2DB" unicode="&#xf2db;" 
+d="M192 256v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 512v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 768v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16
+q0 16 16 16h112zM192 1024v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 1280v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM1280 1440v-1472q0 -40 -28 -68t-68 -28h-832q-40 0 -68 28
+t-28 68v1472q0 40 28 68t68 28h832q40 0 68 -28t28 -68zM1536 208v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 464v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 720v-32
+q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 976v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 1232v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16
+h48q16 0 16 -16z" />
+    <glyph glyph-name="uniF2DC" unicode="&#xf2dc;" horiz-adv-x="1664" 
+d="M1566 419l-167 -33l186 -107q23 -13 29.5 -38.5t-6.5 -48.5q-14 -23 -39 -29.5t-48 6.5l-186 106l55 -160q13 -38 -12 -63.5t-60.5 -20.5t-48.5 42l-102 300l-271 156v-313l208 -238q16 -18 17 -39t-11 -36.5t-28.5 -25t-37 -5.5t-36.5 22l-112 128v-214q0 -26 -19 -45
+t-45 -19t-45 19t-19 45v214l-112 -128q-16 -18 -36.5 -22t-37 5.5t-28.5 25t-11 36.5t17 39l208 238v313l-271 -156l-102 -300q-13 -37 -48.5 -42t-60.5 20.5t-12 63.5l55 160l-186 -106q-23 -13 -48 -6.5t-39 29.5q-13 23 -6.5 48.5t29.5 38.5l186 107l-167 33
+q-29 6 -42 29t-8.5 46.5t25.5 40t50 10.5l310 -62l271 157l-271 157l-310 -62q-4 -1 -13 -1q-27 0 -44 18t-19 40t11 43t40 26l167 33l-186 107q-23 13 -29.5 38.5t6.5 48.5t39 30t48 -7l186 -106l-55 160q-13 38 12 63.5t60.5 20.5t48.5 -42l102 -300l271 -156v313
+l-208 238q-16 18 -17 39t11 36.5t28.5 25t37 5.5t36.5 -22l112 -128v214q0 26 19 45t45 19t45 -19t19 -45v-214l112 128q16 18 36.5 22t37 -5.5t28.5 -25t11 -36.5t-17 -39l-208 -238v-313l271 156l102 300q13 37 48.5 42t60.5 -20.5t12 -63.5l-55 -160l186 106
+q23 13 48 6.5t39 -29.5q13 -23 6.5 -48.5t-29.5 -38.5l-186 -107l167 -33q27 -5 40 -26t11 -43t-19 -40t-44 -18q-9 0 -13 1l-310 62l-271 -157l271 -157l310 62q29 6 50 -10.5t25.5 -40t-8.5 -46.5t-42 -29z" />
+    <glyph glyph-name="uniF2DD" unicode="&#xf2dd;" horiz-adv-x="1792" 
+d="M1473 607q7 118 -33 226.5t-113 189t-177 131t-221 57.5q-116 7 -225.5 -32t-192 -110.5t-135 -175t-59.5 -220.5q-7 -118 33 -226.5t113 -189t177.5 -131t221.5 -57.5q155 -9 293 59t224 195.5t94 283.5zM1792 1536l-349 -348q120 -117 180.5 -272t50.5 -321
+q-11 -183 -102 -339t-241 -255.5t-332 -124.5l-999 -132l347 347q-120 116 -180.5 271.5t-50.5 321.5q11 184 102 340t241.5 255.5t332.5 124.5q167 22 500 66t500 66z" />
+    <glyph glyph-name="uniF2DE" unicode="&#xf2de;" horiz-adv-x="1792" 
+d="M948 508l163 -329h-51l-175 350l-171 -350h-49l179 374l-78 33l21 49l240 -102l-21 -50zM563 1100l304 -130l-130 -304l-304 130zM907 915l240 -103l-103 -239l-239 102zM1188 765l191 -81l-82 -190l-190 81zM1680 640q0 159 -62 304t-167.5 250.5t-250.5 167.5t-304 62
+t-304 -62t-250.5 -167.5t-167.5 -250.5t-62 -304t62 -304t167.5 -250.5t250.5 -167.5t304 -62t304 62t250.5 167.5t167.5 250.5t62 304zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71
+t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF2E0" unicode="&#xf2e0;" horiz-adv-x="1920" 
+d="M1334 302q-4 24 -27.5 34t-49.5 10.5t-48.5 12.5t-25.5 38q-5 47 33 139.5t75 181t32 127.5q-14 101 -117 103q-45 1 -75 -16l-3 -2l-5 -2.5t-4.5 -2t-5 -2t-5 -0.5t-6 1.5t-6 3.5t-6.5 5q-3 2 -9 8.5t-9 9t-8.5 7.5t-9.5 7.5t-9.5 5.5t-11 4.5t-11.5 2.5q-30 5 -48 -3
+t-45 -31q-1 -1 -9 -8.5t-12.5 -11t-15 -10t-16.5 -5.5t-17 3q-54 27 -84 40q-41 18 -94 -5t-76 -65q-16 -28 -41 -98.5t-43.5 -132.5t-40 -134t-21.5 -73q-22 -69 18.5 -119t110.5 -46q30 2 50.5 15t38.5 46q7 13 79 199.5t77 194.5q6 11 21.5 18t29.5 0q27 -15 21 -53
+q-2 -18 -51 -139.5t-50 -132.5q-6 -38 19.5 -56.5t60.5 -7t55 49.5q4 8 45.5 92t81.5 163.5t46 88.5q20 29 41 28q29 0 25 -38q-2 -16 -65.5 -147.5t-70.5 -159.5q-12 -53 13 -103t74 -74q17 -9 51 -15.5t71.5 -8t62.5 14t20 48.5zM383 86q3 -15 -5 -27.5t-23 -15.5
+q-14 -3 -26.5 5t-15.5 23q-3 14 5 27t22 16t27 -5t16 -23zM953 -177q12 -17 8.5 -37.5t-20.5 -32.5t-37.5 -8t-32.5 21q-11 17 -7.5 37.5t20.5 32.5t37.5 8t31.5 -21zM177 635q-18 -27 -49.5 -33t-57.5 13q-26 18 -32 50t12 58q18 27 49.5 33t57.5 -12q26 -19 32 -50.5
+t-12 -58.5zM1467 -42q19 -28 13 -61.5t-34 -52.5t-60.5 -13t-51.5 34t-13 61t33 53q28 19 60.5 13t52.5 -34zM1579 562q69 -113 42.5 -244.5t-134.5 -207.5q-90 -63 -199 -60q-20 -80 -84.5 -127t-143.5 -44.5t-140 57.5q-12 -9 -13 -10q-103 -71 -225 -48.5t-193 126.5
+q-50 73 -53 164q-83 14 -142.5 70.5t-80.5 128t-2 152t81 138.5q-36 60 -38 128t24.5 125t79.5 98.5t121 50.5q32 85 99 148t146.5 91.5t168 17t159.5 -66.5q72 21 140 17.5t128.5 -36t104.5 -80t67.5 -115t17.5 -140.5q52 -16 87 -57t45.5 -89t-5.5 -99.5t-58 -87.5z
+M455 1222q14 -20 9.5 -44.5t-24.5 -38.5q-19 -14 -43.5 -9.5t-37.5 24.5q-14 20 -9.5 44.5t24.5 38.5q19 14 43.5 9.5t37.5 -24.5zM614 1503q4 -16 -5 -30.5t-26 -18.5t-31 5.5t-18 26.5q-3 17 6.5 31t25.5 18q17 4 31 -5.5t17 -26.5zM1800 555q4 -20 -6.5 -37t-30.5 -21
+q-19 -4 -36 6.5t-21 30.5t6.5 37t30.5 22q20 4 36.5 -7.5t20.5 -30.5zM1136 1448q16 -27 8.5 -58.5t-35.5 -47.5q-27 -16 -57.5 -8.5t-46.5 34.5q-16 28 -8.5 59t34.5 48t58 9t47 -36zM1882 792q4 -15 -4 -27.5t-23 -16.5q-15 -3 -27.5 5.5t-15.5 22.5q-3 15 5 28t23 16
+q14 3 26.5 -5t15.5 -23zM1691 1033q15 -22 10.5 -49t-26.5 -43q-22 -15 -49 -10t-42 27t-10 49t27 43t48.5 11t41.5 -28z" />
+    <glyph glyph-name="uniF2E1" unicode="&#xf2e1;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E2" unicode="&#xf2e2;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E3" unicode="&#xf2e3;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E4" unicode="&#xf2e4;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E5" unicode="&#xf2e5;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E6" unicode="&#xf2e6;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E7" unicode="&#xf2e7;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="_698" unicode="&#xf2e8;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E9" unicode="&#xf2e9;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2EA" unicode="&#xf2ea;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2EB" unicode="&#xf2eb;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2EC" unicode="&#xf2ec;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2ED" unicode="&#xf2ed;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2EE" unicode="&#xf2ee;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="lessequal" unicode="&#xf500;" horiz-adv-x="1792" 
+ />
+  </font>
+</defs></svg>
Index: public/fonts/pe-icon-set-weather.svg
===================================================================
--- public/fonts/pe-icon-set-weather.svg	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/fonts/pe-icon-set-weather.svg	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,218 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="pe-icon-set-weather" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
+<glyph unicode="&#xe900;" glyph-name="blizzard-f" horiz-adv-x="896" d="M702.4 744c-3.2 0-4.8 0-8 0-40 89.6-128 152-232 152-128 0-232-94.4-251.2-219.2-14.4 4.8-32 8-48 8-89.6 0-163.2-75.2-163.2-166.4s73.6-166.4 164.8-166.4h536c0 0 1.6 0 1.6 0 107.2 0 193.6 88 193.6 196.8s-86.4 195.2-193.6 195.2zM288 224c0 17.6-14.4 32-32 32v0c0 17.6-14.4 32-32 32s-32-14.4-32-32c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32zM512 224c0 17.6-14.4 32-32 32v0c0 17.6-14.4 32-32 32v0c-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0 0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32zM374.4 96v0 0c0 17.6-14.4 32-32 32v0c-17.6 0-32-14.4-32-32v0 0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM585.6 96v0c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM704 256c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32z" />
+<glyph unicode="&#xe901;" glyph-name="blizzard" horiz-adv-x="960" d="M745.6 776c-49.6 92.8-145.6 152-251.2 152-129.6 0-241.6-89.6-275.2-212.8-8 1.6-16 1.6-22.4 1.6-108.8 0-196.8-89.6-196.8-198.4s88-198.4 196.8-198.4h537.6c124.8 0 225.6 102.4 225.6 228.8 0 121.6-94.4 220.8-214.4 227.2zM736 384h-539.2c-73.6 0-132.8 60.8-132.8 134.4s59.2 134.4 132.8 134.4c12.8 0 25.6-1.6 38.4-6.4l35.2-11.2 4.8 36.8c16 108.8 110.4 192 219.2 192 86.4 0 166.4-52.8 201.6-132.8l9.6-19.2 25.6 1.6c0 0 1.6 0 1.6 0 89.6 0 161.6-73.6 161.6-164.8 1.6-91.2-70.4-164.8-158.4-164.8zM256 256c-17.6 0-32-14.4-32-32-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32v0c0 17.6-14.4 32-32 32zM480 256v0c-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0 0c0-17.6 14.4-32 32-32 0 0 0 0 0 0 17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32s-14.4 32-32 32v0c0 17.6-14.4 32-32 32zM374.4 96v0c-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32v0 0c0 17.6-14.4 32-32 32zM617.6 64v0c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM672 160c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32z" />
+<glyph unicode="&#xe902;" glyph-name="cloud-down-f" horiz-adv-x="960" d="M630.4 300.8c-12.8 12.8-32 12.8-44.8 0l-73.6-73.6v275.2c0 17.6-14.4 32-32 32s-32-14.4-32-32v-275.2l-73.6 73.6c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l150.4-150.4 150.4 150.4c12.8 12.8 12.8 32 0 44.8zM752 630.4c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h104c-16 17.6-24 40-24 64 0 25.6 9.6 49.6 28.8 67.2 17.6 17.6 41.6 28.8 67.2 28.8 11.2 0 22.4-1.6 32-4.8v132.8c0 52.8 43.2 96 96 96s96-43.2 96-96v-132.8c9.6 3.2 20.8 4.8 32 4.8 25.6 0 49.6-9.6 67.2-28.8 17.6-17.6 28.8-41.6 28.8-67.2 0-24-8-46.4-24-64h70.4c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208z" />
+<glyph unicode="&#xe903;" glyph-name="cloud-down" d="M795.2 646.4c-52.8 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-8 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h80c17.6 0 32 14.4 32 32s-14.4 32-32 32h-80c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c17.6 116.8 120 204.8 236.8 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176 0-96-78.4-176-176-176h-48c-17.6 0-32-14.4-32-32s14.4-32 32-32h48c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM617.6 284.8l-73.6-73.6v275.2c0 17.6-14.4 32-32 32s-32-14.4-32-32v-275.2l-73.6 73.6c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l150.4-150.4 150.4 150.4c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0z" />
+<glyph unicode="&#xe904;" glyph-name="cloud-refresh-f" horiz-adv-x="960" d="M760 377.6c-14.4 9.6-35.2 6.4-44.8-9.6l-11.2-16c-28.8 89.6-113.6 155.2-212.8 155.2-123.2 0-224-100.8-224-224s100.8-224 224-224c59.2 0 116.8 24 158.4 65.6 12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0c-30.4-30.4-70.4-46.4-113.6-46.4-88 0-160 72-160 160s72 160 160 160c67.2 0 124.8-41.6 148.8-100.8l-19.2 17.6c-12.8 11.2-33.6 11.2-44.8-1.6s-11.2-33.6 1.6-44.8l110.4-99.2 80 120c11.2 12.8 8 32-8 43.2zM752 676.8c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h28.8c0 8-1.6 14.4-1.6 22.4 0 158.4 129.6 288 288 288 97.6 0 185.6-48 238.4-126.4 4.8 0 8 1.6 12.8 1.6 19.2 0 36.8-4.8 52.8-16 20.8-14.4 35.2-35.2 41.6-60.8 4.8-25.6 0-51.2-14.4-72l-20.8-30.4c3.2 1.6 6.4 1.6 9.6 3.2 84.8 30.4 148.8 104 148.8 198.4 0 115.2-92.8 208-208 208z" />
+<glyph unicode="&#xe905;" glyph-name="cloud-refresh" d="M208 212.8c-115.2 0-208 92.8-208 208s92.8 208 208 208c9.6 0 17.6 0 27.2-1.6 33.6 131.2 155.2 225.6 292.8 225.6 112 0 214.4-62.4 267.2-160 126.4-6.4 228.8-112 228.8-240 0-107.2-68.8-198.4-169.6-230.4-17.6-4.8-35.2 4.8-40 20.8-4.8 17.6 4.8 35.2 20.8 40 73.6 22.4 124.8 91.2 124.8 168 0 97.6-78.4 176-176 176-1.6 0-1.6 0-3.2 0s-3.2 0-4.8 0h-20.8l-8 19.2c-38.4 86.4-124.8 142.4-219.2 142.4-118.4 0-219.2-88-236.8-204.8l-4.8-36.8-35.2 11.2c-14.4 4.8-27.2 6.4-41.6 6.4-80 0-144-64-144-144s64-144 144-144c17.6 0 32-14.4 32-32s-16-32-33.6-32zM524.8 43.2c-123.2 0-224 100.8-224 224s100.8 224 224 224 224-100.8 224-224c0-8 0-17.6-1.6-25.6-1.6-17.6-17.6-30.4-35.2-28.8s-30.4 17.6-28.8 35.2c0 6.4 1.6 12.8 1.6 17.6 0 88-72 160-160 160s-160-72-160-160c0-88 72-160 160-160 43.2 0 83.2 16 113.6 46.4 12.8 12.8 32 12.8 44.8 0s12.8-32 0-44.8c-43.2-41.6-99.2-64-158.4-64zM721.6 196.8l-110.4 99.2c-12.8 11.2-14.4 32-1.6 44.8 11.2 12.8 32 14.4 44.8 1.6l54.4-49.6 38.4 59.2c9.6 14.4 30.4 19.2 44.8 9.6s19.2-30.4 9.6-44.8l-80-120z" />
+<glyph unicode="&#xe906;" glyph-name="cloud-up-f" horiz-adv-x="960" d="M630.4 390.4l-150.4 150.4-150.4-150.4c-12.8-12.8-12.8-32 0-44.8s32-12.8 44.8 0l73.6 73.6v-275.2c0-17.6 14.4-32 32-32s32 14.4 32 32v275.2l73.6-73.6c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8zM752 624c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h208v68.8c-9.6-3.2-20.8-4.8-32-4.8-25.6 0-49.6 9.6-67.2 28.8-19.2 17.6-28.8 41.6-28.8 67.2s9.6 49.6 28.8 67.2l195.2 195.2 195.2-195.2c17.6-17.6 28.8-41.6 28.8-67.2s-9.6-49.6-28.8-67.2c-17.6-19.2-41.6-28.8-67.2-28.8-11.2 0-22.4 1.6-32 4.8v-68.8h174.4c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208z" />
+<glyph unicode="&#xe907;" glyph-name="cloud-up" d="M795.2 640c-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h144c17.6 0 32 14.4 32 32s-14.4 32-32 32h-144c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176s-78.4-176-174.4-176h-115.2c-17.6 0-32-14.4-32-32s14.4-32 32-32h112c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM640 320c8 0 16 3.2 22.4 9.6 12.8 12.8 12.8 32 0 44.8l-150.4 150.4-150.4-150.4c-12.8-12.8-12.8-32 0-44.8s32-12.8 44.8 0l73.6 73.6v-275.2c0-17.6 14.4-32 32-32s32 14.4 32 32v275.2l73.6-73.6c6.4-6.4 14.4-9.6 22.4-9.6z" />
+<glyph unicode="&#xe908;" glyph-name="compass-e-f" horiz-adv-x="768" d="M768 448c0 212.8-171.2 384-384 384s-384-171.2-384-384c0-212.8 171.2-384 384-384s384 171.2 384 384zM264 448c0 44.8 35.2 80 80 80 14.4 0 28.8-3.2 40-11.2l120-68.8-120-68.8c-11.2-6.4-25.6-11.2-40-11.2-44.8 0-80 35.2-80 80z" />
+<glyph unicode="&#xe909;" glyph-name="compass-e" horiz-adv-x="832" d="M416 32c-228.8 0-416 187.2-416 416s187.2 416 416 416 416-187.2 416-416-187.2-416-416-416zM416 800c-193.6 0-352-158.4-352-352s158.4-352 352-352 352 158.4 352 352-158.4 352-352 352zM384 352c-52.8 0-96 43.2-96 96s43.2 96 96 96c17.6 0 33.6-4.8 48-12.8l144-83.2-144-83.2c-14.4-8-30.4-12.8-48-12.8zM384 480c-17.6 0-32-14.4-32-32s14.4-32 32-32c6.4 0 11.2 1.6 16 4.8l48 27.2-48 27.2c-4.8 3.2-9.6 4.8-16 4.8z" />
+<glyph unicode="&#xe90a;" glyph-name="compass-f" horiz-adv-x="960" d="M817.6 787.204c-187.2 187.2-491.2 187.2-678.4 0s-187.2-491.2 0-678.4c187.2-187.2 491.2-187.2 678.4 0s187.2 491.2 0 678.4zM550.4 376.004l-216-72 72 216 216 72-72-216z" />
+<glyph unicode="&#xe90b;" glyph-name="compass-n-f" horiz-adv-x="768" d="M384 832c-212.8 0-384-171.2-384-384s171.2-384 384-384c212.8 0 384 171.2 384 384s-171.2 384-384 384zM384 328c-44.8 0-80 35.2-80 80 0 14.4 3.2 28.8 11.2 40l68.8 120 68.8-120c6.4-11.2 11.2-25.6 11.2-40 0-44.8-35.2-80-80-80z" />
+<glyph unicode="&#xe90c;" glyph-name="compass-n" horiz-adv-x="832" d="M416 32c-228.8 0-416 187.2-416 416s187.2 416 416 416 416-187.2 416-416-187.2-416-416-416zM416 800c-193.6 0-352-158.4-352-352s158.4-352 352-352 352 158.4 352 352-158.4 352-352 352zM416 320c-52.8 0-96 43.2-96 96 0 17.6 4.8 33.6 12.8 48l83.2 144 83.2-144c8-14.4 12.8-30.4 12.8-48 0-52.8-43.2-96-96-96zM416 480l-27.2-48c-3.2-4.8-4.8-9.6-4.8-16 0-17.6 14.4-32 32-32s32 14.4 32 32c0 6.4-1.6 11.2-4.8 16v0l-27.2 48z" />
+<glyph unicode="&#xe90d;" glyph-name="compass-s-f" horiz-adv-x="768" d="M384 64c212.8 0 384 171.2 384 384s-171.2 384-384 384c-212.8 0-384-171.2-384-384s171.2-384 384-384zM384 568c44.8 0 80-35.2 80-80 0-14.4-3.2-28.8-11.2-40l-68.8-120-68.8 120c-6.4 11.2-11.2 25.6-11.2 40 0 44.8 35.2 80 80 80z" />
+<glyph unicode="&#xe90e;" glyph-name="compass-s" horiz-adv-x="832" d="M416 32c-228.8 0-416 187.2-416 416s187.2 416 416 416 416-187.2 416-416-187.2-416-416-416zM416 800c-193.6 0-352-158.4-352-352s158.4-352 352-352 352 158.4 352 352-158.4 352-352 352zM416 288l-83.2 144c-8 14.4-12.8 30.4-12.8 48 0 52.8 43.2 96 96 96s96-43.2 96-96c0-17.6-4.8-33.6-12.8-48l-83.2-144zM416 512c-17.6 0-32-14.4-32-32 0-6.4 1.6-11.2 4.8-16l27.2-48 27.2 48c3.2 4.8 4.8 9.6 4.8 16 0 17.6-14.4 32-32 32z" />
+<glyph unicode="&#xe90f;" glyph-name="compass-w-f" horiz-adv-x="768" d="M0 448c0-212.8 171.2-384 384-384s384 171.2 384 384c0 212.8-171.2 384-384 384s-384-171.2-384-384zM504 448c0-44.8-35.2-80-80-80-14.4 0-28.8 3.2-40 11.2l-120 68.8 120 68.8c11.2 6.4 25.6 11.2 40 11.2 44.8 0 80-35.2 80-80z" />
+<glyph unicode="&#xe910;" glyph-name="compass-w" horiz-adv-x="832" d="M416 32c-228.8 0-416 187.2-416 416s187.2 416 416 416 416-187.2 416-416-187.2-416-416-416zM416 800c-193.6 0-352-158.4-352-352s158.4-352 352-352 352 158.4 352 352-158.4 352-352 352zM448 352c-17.6 0-33.6 4.8-48 12.8l-144 83.2 144 83.2c14.4 8 30.4 12.8 48 12.8 52.8 0 96-43.2 96-96s-43.2-96-96-96zM384 448l48-27.2c4.8-3.2 9.6-4.8 16-4.8 17.6 0 32 14.4 32 32s-14.4 32-32 32c-6.4 0-11.2-1.6-16-4.8v0l-48-27.2z" />
+<glyph unicode="&#xe911;" glyph-name="compass" d="M512-64c-136 0-265.6 52.8-361.6 150.4-97.6 96-150.4 225.6-150.4 361.6s52.8 265.6 150.4 361.6c96 97.6 225.6 150.4 361.6 150.4s265.6-52.8 361.6-150.4c96-96 150.4-225.6 150.4-361.6s-52.8-265.6-150.4-361.6c-96-97.6-225.6-150.4-361.6-150.4zM512 896c-120 0-232-46.4-316.8-131.2-174.4-174.4-174.4-459.2 0-633.6 84.8-84.8 196.8-131.2 316.8-131.2s232 46.4 316.8 131.2v0c84.8 84.8 131.2 196.8 131.2 316.8s-46.4 232-131.2 316.8c-84.8 84.8-196.8 131.2-316.8 131.2zM332.8 268.8l89.6 267.2 267.2 89.6-89.6-267.2-267.2-89.6zM473.6 486.4l-38.4-116.8 116.8 38.4 38.4 116.8-116.8-38.4z" />
+<glyph unicode="&#xe912;" glyph-name="degree-celsius" horiz-adv-x="736" d="M256 832c0 70.4-57.6 128-128 128s-128-57.6-128-128 57.6-128 128-128 128 57.6 128 128zM128 768c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM684.8 49.6c-44.8-32-99.2-49.6-156.8-49.6-150.4 0-272 121.6-272 272v160c0 150.4 121.6 272 272 272 56 0 110.4-17.6 156.8-49.6 14.4-9.6 35.2-6.4 44.8 8s6.4 35.2-8 44.8c-56 40-123.2 60.8-193.6 60.8-185.6 0-336-150.4-336-336v-160c0-185.6 150.4-336 336-336 70.4 0 137.6 20.8 193.6 60.8 14.4 9.6 17.6 30.4 8 44.8s-30.4 17.6-44.8 8z" />
+<glyph unicode="&#xe913;" glyph-name="degree-fahrenheit" horiz-adv-x="800" d="M768 768h-448v-800c0-17.6 14.4-32 32-32s32 14.4 32 32v384h256c17.6 0 32 14.4 32 32s-14.4 32-32 32h-256v288h384c17.6 0 32 14.4 32 32s-14.4 32-32 32zM128 960c-70.4 0-128-57.6-128-128s57.6-128 128-128 128 57.6 128 128-57.6 128-128 128zM128 768c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64z" />
+<glyph unicode="&#xe914;" glyph-name="drizzle-f" horiz-adv-x="960" d="M752 768c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h574.4c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208zM272 288c-17.6 0-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32-14.4 32-32 32zM208 160c-17.6 0-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32c0 17.6-14.4 32-32 32zM272 32c-17.6 0-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32c0 17.6-14.4 32-32 32zM432 192c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32zM432 96c-17.6 0-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32c0 17.6-14.4 32-32 32zM592 128c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32zM592 288c-17.6 0-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32-14.4 32-32 32zM592 32c-17.6 0-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32-14.4 32-32 32zM720 96c-17.6 0-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32c0 17.6-14.4 32-32 32zM752 256c-17.6 0-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32c0 17.6-14.4 32-32 32zM480 480c-17.6 0-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32-14.4 32-32 32z" />
+<glyph unicode="&#xe915;" glyph-name="drizzle" d="M795.2 800c-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h576c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM784 384h-576c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176-1.6-97.6-80-176-177.6-176zM393.6 182.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM288 192c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6zM246.4 73.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6zM265.6-54.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4zM416 32c0-8 3.2-16 9.6-22.4s14.4-9.6 22.4-9.6c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4zM553.6 118.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM630.4 246.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 17.6-9.6 22.4zM790.4 169.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-12.8-9.6-22.4 0-8 3.2-16 9.6-22.4s14.4-9.6 22.4-9.6c8 0 16 3.2 22.4 9.6zM713.6 54.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM585.6-9.6c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0z" />
+<glyph unicode="&#xe916;" glyph-name="drop-cloud-f" horiz-adv-x="960" d="M576 137.6c0 8-1.6 16-4.8 24-19.2 68.8-91.2 158.4-91.2 158.4s-72-89.6-91.2-158.4c-3.2-8-3.2-16-4.8-24 0-3.2 0-4.8 0-8 0-54.4 43.2-97.6 96-97.6s96 43.2 96 97.6c0 3.2 0 4.8 0 8zM752 704c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h203.2c24 36.8 46.4 65.6 49.6 72l49.6 64 49.6-64c4.8-4.8 27.2-33.6 49.6-72h172.8c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208z" />
+<glyph unicode="&#xe917;" glyph-name="drop-cloud" d="M784 256h-112c-17.6 0-32 14.4-32 32s14.4 32 32 32h113.6c96 0 174.4 80 174.4 176 0 97.6-78.4 176-176 176-1.6 0-1.6 0-3.2 0l-25.6-1.6-9.6 19.2c-36.8 86.4-123.2 142.4-217.6 142.4-118.4 0-219.2-88-236.8-204.8l-4.8-36.8-35.2 11.2c-14.4 4.8-28.8 6.4-43.2 6.4-80 0-144-64-144-144s64-144 144-144h144c17.6 0 32-14.4 32-32s-14.4-32-32-32h-144c-115.2 0-208 92.8-208 208s92.8 208 208 208c9.6 0 17.6 0 27.2-1.6 33.6 131.2 155.2 225.6 292.8 225.6 112 0 214.4-62.4 267.2-160 128-6.4 228.8-112 228.8-240 0-132.8-107.2-240-240-240zM512 0c-70.4 0-128 57.6-128 129.6 0 3.2 0 6.4 0 9.6 0 9.6 3.2 20.8 6.4 30.4 20.8 73.6 92.8 164.8 96 169.6l25.6 32 25.6-32c3.2-3.2 75.2-96 96-169.6 3.2-8 4.8-19.2 6.4-28.8 0-3.2 0-6.4 0-9.6 0-73.6-57.6-131.2-128-131.2zM512 265.6c-20.8-30.4-49.6-76.8-60.8-113.6-1.6-6.4-3.2-11.2-3.2-17.6 0-1.6 0-3.2 0-4.8 0-36.8 28.8-65.6 64-65.6s64 28.8 64 65.6c0 1.6 0 3.2 0 4.8v1.6c0 4.8-1.6 11.2-3.2 16-11.2 36.8-40 83.2-60.8 113.6z" />
+<glyph unicode="&#xe918;" glyph-name="drop-f" horiz-adv-x="640" d="M640 318.4c-1.6 27.2-6.4 52.8-16 78.4-64 230.4-302.4 531.2-302.4 531.2s-238.4-300.8-304-531.2c-8-25.6-12.8-51.2-16-78.4 0-8-1.6-16-1.6-24 1.6-180.8 145.6-326.4 321.6-326.4s320 145.6 320 326.4c0 8 0 16-1.6 24z" />
+<glyph unicode="&#xe919;" glyph-name="drop-percentage-f" horiz-adv-x="640" d="M257.6 448c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM449.6 192c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM640 318.4c-1.6 27.2-6.4 52.8-16 78.4-64 230.4-302.4 531.2-302.4 531.2s-238.4-300.8-304-531.2c-8-25.6-12.8-51.2-16-78.4 0-8-1.6-16-1.6-24 1.6-180.8 145.6-326.4 321.6-326.4s320 145.6 320 326.4c0 8 0 16-1.6 24zM129.6 448c0 52.8 43.2 96 96 96s96-43.2 96-96c0-52.8-43.2-96-96-96s-96 43.2-96 96zM225.6 128c-6.4 0-11.2 1.6-16 4.8-14.4 9.6-20.8 28.8-11.2 43.2l192 320c9.6 14.4 28.8 20.8 43.2 11.2s20.8-28.8 11.2-43.2l-192-320c-6.4-11.2-16-16-27.2-16zM417.6 96c-52.8 0-96 43.2-96 96s43.2 96 96 96c52.8 0 96-43.2 96-96s-43.2-96-96-96z" />
+<glyph unicode="&#xe91a;" glyph-name="drop-percentage" horiz-adv-x="720" d="M361.6-64c-190.4 0-345.6 158.4-345.6 352 0 8 0 17.6 1.6 27.2 1.6 28.8 8 57.6 16 83.2 64 228.8 292.8 518.4 302.4 529.6l25.6 32 24-30.4c9.6-12.8 238.4-302.4 304-531.2 8-25.6 14.4-54.4 16-83.2 1.6-9.6 1.6-19.2 1.6-27.2 0-193.6-155.2-352-345.6-352zM361.6 857.6c-60.8-81.6-217.6-302.4-267.2-476.8-8-24-12.8-46.4-14.4-70.4 0-8-1.6-16-1.6-22.4 0-160 126.4-289.6 283.2-289.6s283.2 129.6 283.2 289.6c0 6.4 0 12.8-1.6 20.8v0c-1.6 24-6.4 48-12.8 68.8-51.2 177.6-208 398.4-268.8 480zM267.2 124.8c-4.8 0-11.2 1.6-16 4.8-14.4 9.6-19.2 28.8-11.2 43.2l188.8 313.6c9.6 14.4 28.8 19.2 43.2 11.2 14.4-9.6 19.2-28.8 11.2-43.2l-188.8-315.2c-6.4-9.6-16-14.4-27.2-14.4zM267.2 344c-51.2 0-94.4 41.6-94.4 94.4s41.6 94.4 94.4 94.4 94.4-41.6 94.4-94.4-41.6-94.4-94.4-94.4zM267.2 470.4c-17.6 0-32-14.4-32-32s14.4-32 32-32c17.6 0 32 14.4 32 32s-14.4 32-32 32zM456 92.8c-51.2 0-94.4 41.6-94.4 94.4 0 51.2 41.6 94.4 94.4 94.4 51.2 0 94.4-41.6 94.4-94.4s-43.2-94.4-94.4-94.4zM456 217.6c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z" />
+<glyph unicode="&#xe91b;" glyph-name="drop" horiz-adv-x="720" d="M361.6-64c-190.4 0-345.6 158.4-345.6 352 0 8 0 17.6 1.6 27.2 1.6 28.8 8 57.6 16 83.2 64 228.8 292.8 518.4 302.4 529.6l25.6 32 24-30.4c9.6-12.8 238.4-302.4 304-531.2 8-25.6 14.4-54.4 16-83.2 1.6-9.6 1.6-19.2 1.6-27.2 0-193.6-155.2-352-345.6-352zM361.6 857.6c-60.8-81.6-217.6-302.4-267.2-476.8-8-24-12.8-46.4-14.4-70.4 0-8-1.6-16-1.6-22.4 0-160 126.4-289.6 283.2-289.6s283.2 129.6 283.2 289.6c0 6.4 0 12.8-1.6 20.8v0c-1.6 24-6.4 48-12.8 68.8-51.2 177.6-208 398.4-268.8 480z" />
+<glyph unicode="&#xe91c;" glyph-name="drops-f" horiz-adv-x="896" d="M320 144c-1.6 12.8-3.2 27.2-8 40-33.6 113.6-152 264-152 264s-118.4-150.4-152-265.6c-3.2-12.8-6.4-25.6-8-38.4 0-4.8 0-8 0-12.8 0-89.6 72-163.2 160-163.2s160 73.6 160 163.2c0 4.8 0 8 0 12.8zM896 144c-1.6 12.8-3.2 27.2-8 40-33.6 113.6-152 264-152 264s-118.4-150.4-152-265.6c-4.8-12.8-6.4-25.6-8-40 0-4.8 0-8 0-12.8 0-88 72-161.6 160-161.6s160 73.6 160 163.2c0 4.8 0 8 0 12.8zM608 624c-1.6 14.4-3.2 27.2-8 40-33.6 113.6-152 264-152 264s-118.4-150.4-152-265.6c-4.8-12.8-6.4-25.6-8-40 0-4.8 0-8 0-12.8 0-88 72-161.6 160-161.6s160 73.6 160 163.2c0 4.8 0 8 0 12.8z" />
+<glyph unicode="&#xe91d;" glyph-name="drops" horiz-adv-x="944" d="M187.2-64c-104 0-187.2 86.4-187.2 192 0 4.8 0 9.6 0 14.4 1.6 16 4.8 30.4 9.6 44.8 33.6 116.8 148.8 264 153.6 270.4l24 30.4 24-30.4c4.8-6.4 121.6-153.6 155.2-270.4 4.8-12.8 8-28.8 8-44.8 0-4.8 0-9.6 0-14.4 1.6-105.6-83.2-192-187.2-192zM187.2 385.6c-35.2-48-97.6-142.4-118.4-216-3.2-11.2-6.4-20.8-6.4-32 0-3.2 0-6.4 0-9.6 0-70.4 56-128 126.4-128s126.4 57.6 126.4 128c0 3.2 0 6.4 0 9.6v0c-1.6 11.2-3.2 20.8-6.4 30.4-24 76.8-86.4 169.6-121.6 217.6zM753.6-64c-104 0-188.8 86.4-188.8 192 0 4.8 0 9.6 0 14.4 1.6 16 4.8 30.4 9.6 44.8 33.6 116.8 148.8 264 153.6 270.4l24 30.4 24-30.4c4.8-6.4 121.6-153.6 155.2-270.4 4.8-12.8 8-28.8 8-44.8 0-4.8 0-9.6 0-14.4 1.6-105.6-81.6-192-185.6-192zM753.6 385.6c-35.2-48-97.6-142.4-118.4-216-3.2-11.2-6.4-20.8-6.4-32 0-3.2 0-6.4 0-9.6 0-70.4 56-128 126.4-128s126.4 57.6 126.4 128c0 3.2 0 6.4 0 9.6v0c-1.6 11.2-3.2 20.8-6.4 30.4-24 76.8-86.4 169.6-121.6 217.6zM470.4 406.4c-104 0-188.8 86.4-188.8 192 0 4.8 0 9.6 0 14.4 1.6 14.4 4.8 30.4 9.6 44.8 33.6 116.8 148.8 264 153.6 270.4l25.6 32 24-30.4c4.8-6.4 121.6-153.6 155.2-270.4 4.8-12.8 8-28.8 8-44.8 0-4.8 0-9.6 0-14.4 1.6-107.2-83.2-193.6-187.2-193.6zM470.4 857.6c-35.2-48-97.6-142.4-118.4-216-3.2-11.2-6.4-20.8-6.4-32 0-3.2 0-6.4 0-9.6 0-70.4 56-128 126.4-128s126.4 57.6 126.4 128c0 3.2 0 6.4 0 9.6v0c-1.6 11.2-3.2 20.8-6.4 30.4-24 75.2-86.4 168-121.6 217.6z" />
+<glyph unicode="&#xe91e;" glyph-name="eclipse-1-f" horiz-adv-x="896" d="M512 705.6c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM192 385.6c0 17.6-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32h128c17.6 0 32 14.4 32 32zM240 611.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM889.6 731.2c-12.8 12.8-32 12.8-44.8 0l-158.4-158.4c-48 44.8-108.8 68.8-174.4 68.8-140.8 0-256-115.2-256-256 0-65.6 24-126.4 68.8-174.4l-158.4-158.4c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l163.2 163.2c41.6-27.2 88-40 139.2-40 140.8 0 256 115.2 256 256 0 49.6-14.4 97.6-40 139.2l163.2 163.2c9.6 9.6 9.6 30.4-3.2 41.6zM512 577.6c48 0 92.8-17.6 128-49.6l-270.4-270.4c-32 35.2-49.6 80-49.6 128 0 105.6 86.4 192 192 192z" />
+<glyph unicode="&#xe91f;" glyph-name="eclipse-1" horiz-adv-x="896" d="M512 185.6c-16 0-30.4 1.6-46.4 4.8-17.6 4.8-35.2-6.4-38.4-24-4.8-17.6 6.4-35.2 24-38.4 19.2-4.8 40-8 60.8-8 140.8 0 256 115.2 256 256 0 22.4-3.2 44.8-8 65.6-4.8 17.6-22.4 27.2-38.4 22.4-17.6-4.8-27.2-22.4-22.4-38.4s6.4-32 6.4-49.6c-1.6-104-88-190.4-193.6-190.4zM310.4 220.8l-160-160c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l179.2 179.2c0 0 1.6 1.6 1.6 1.6s1.6 1.6 1.6 1.6l496 496c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-160-160c-44.8 35.2-99.2 54.4-156.8 54.4-140.8 0-256-115.2-256-256 0-57.6 19.2-112 54.4-156.8zM512 569.6c40 0 78.4-12.8 110.4-35.2l-267.2-267.2c-22.4 32-35.2 70.4-35.2 110.4 0 105.6 86.4 192 192 192zM512 697.6c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM32 345.6h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32zM240 603.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2z" />
+<glyph unicode="&#xe920;" glyph-name="eclipse-2-f" horiz-adv-x="896" d="M512 705.6c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM192 385.6c0 17.6-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32h128c17.6 0 32 14.4 32 32zM240 611.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM889.6 731.2c-12.8 12.8-32 12.8-44.8 0l-678.4-678.4c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l678.4 678.4c12.8 12.8 12.8 33.6 0 44.8zM288 262.4l347.2 347.2c-36.8 20.8-80 32-123.2 32-140.8 0-256-115.2-256-256 0-44.8 11.2-86.4 32-123.2z" />
+<glyph unicode="&#xe921;" glyph-name="eclipse-2" horiz-adv-x="896" d="M310.4 220.8l-160-160c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l678.4 678.4c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-160-160c-44.8 35.2-99.2 54.4-156.8 54.4-140.8 0-256-115.2-256-256 0-57.6 19.2-112 54.4-156.8zM512 569.6c40 0 78.4-12.8 110.4-35.2l-267.2-267.2c-22.4 32-35.2 70.4-35.2 110.4 0 105.6 86.4 192 192 192zM512 697.6c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM32 345.6h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32zM240 603.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2z" />
+<glyph unicode="&#xe922;" glyph-name="eclipse-3-f" d="M1014.4 950.4c-12.8 12.8-32 12.8-44.8 0l-305.6-304c-28.8 134.4-142.4 238.4-281.6 252.8 20.8-38.4 32-81.6 32-126.4 0-148.8-120-268.8-268.8-268.8-40 0-80 9.6-113.6 25.6 20.8-131.2 120-236.8 249.6-265.6l-272-272c-12.8-12.8-12.8-32 0-44.8 6.4-8 14.4-11.2 22.4-11.2s16 3.2 22.4 9.6l960 960c12.8 12.8 12.8 32 0 44.8z" />
+<glyph unicode="&#xe923;" glyph-name="eclipse-3" d="M17.6-49.6c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l952 950.4c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-275.2-275.2c-38.4 137.6-158.4 241.6-304 256l-59.2 6.4 28.8-52.8c17.6-33.6 27.2-72 27.2-110.4 0-129.6-105.6-235.2-235.2-235.2-33.6 0-67.2 8-99.2 22.4l-52.8 24 9.6-59.2c20.8-137.6 121.6-246.4 252.8-283.2l-244.8-243.2c-11.2-12.8-11.2-33.6 0-44.8zM86.4 478.4c22.4-4.8 44.8-8 67.2-8 164.8 0 297.6 134.4 297.6 297.6 0 28.8-4.8 56-11.2 83.2 105.6-32 185.6-123.2 201.6-235.2l-326.4-324.8c-105.6 16-193.6 88-228.8 187.2z" />
+<glyph unicode="&#xe924;" glyph-name="eclipse-4-f" horiz-adv-x="896" d="M512 633.6c-140.8 0-256-115.2-256-256s115.2-256 256-256c140.8 0 256 115.2 256 256s-115.2 256-256 256zM512 185.6c-70.4 0-131.2 36.8-164.8 92.8 12.8-3.2 27.2-4.8 40-4.8 121.6 0 219.2 99.2 219.2 219.2 0 17.6-1.6 35.2-6.4 52.8 60.8-32 102.4-96 102.4-169.6 1.6-104-84.8-190.4-190.4-190.4zM512 697.6c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM192 377.6c0 17.6-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32h128c17.6 0 32 14.4 32 32zM240 603.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM873.6 739.2c-12.8 12.8-32 12.8-44.8 0l-91.2-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 33.6 0 44.8zM240 152l-91.2-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8-11.2 11.2-32 11.2-44.8 0z" />
+<glyph unicode="&#xe925;" glyph-name="eclipse-4" horiz-adv-x="896" d="M512 121.6c140.8 0 256 115.2 256 256s-115.2 256-256 256-256-115.2-256-256 115.2-256 256-256zM704 377.6c0-105.6-86.4-192-192-192-75.2 0-140.8 44.8-172.8 107.2 11.2-1.6 20.8-3.2 32-3.2 121.6 0 219.2 99.2 219.2 219.2 0 14.4-1.6 28.8-4.8 43.2 70.4-27.2 118.4-96 118.4-174.4zM320 377.6c0 105.6 86.4 192 192 192 1.6 0 3.2 0 4.8 0 8-19.2 11.2-38.4 11.2-59.2 0-86.4-70.4-155.2-155.2-155.2-17.6 0-35.2 3.2-51.2 9.6-1.6 3.2-1.6 8-1.6 12.8zM544 729.6v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32s32 14.4 32 32zM0 377.6c0-17.6 14.4-32 32-32h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32zM150.4 739.2c-12.8-12.8-12.8-32 0-44.8l91.2-91.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-33.6 12.8-44.8 0zM873.6 694.4c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-91.2-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l91.2 91.2zM240 152l-91.2-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8-11.2 11.2-32 11.2-44.8 0z" />
+<glyph unicode="&#xe926;" glyph-name="fog-1-f" d="M784 672c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-91.2 0-166.4-70.4-176-160h960c0 115.2-92.8 224-208 224zM992 384h-960c-17.6 0-32-14.4-32-32s14.4-32 32-32h960c17.6 0 32 14.4 32 32s-14.4 32-32 32zM928 256h-800c-17.6 0-32-14.4-32-32s14.4-32 32-32h800c17.6 0 32 14.4 32 32s-14.4 32-32 32zM448 128h-256c-17.6 0-32-14.4-32-32s14.4-32 32-32h256c17.6 0 32 14.4 32 32s-14.4 32-32 32zM896 128h-320c-17.6 0-32-14.4-32-32s14.4-32 32-32h320c17.6 0 32 14.4 32 32s-14.4 32-32 32z" />
+<glyph unicode="&#xe927;" glyph-name="fog-1" d="M1.6 435.2c-1.6-17.6 11.2-33.6 28.8-35.2 0 0 1.6 0 1.6 0 16 0 30.4 12.8 32 28.8 6.4 75.2 68.8 131.2 144 131.2 14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176 0-17.6 14.4-32 32-32s32 14.4 32 32c0 128-100.8 233.6-228.8 240-52.8 97.6-156.8 160-268.8 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-108.8 0-196.8-81.6-206.4-188.8zM32 304h960c17.6 0 32 14.4 32 32s-14.4 32-32 32h-960c-17.6 0-32-14.4-32-32s14.4-32 32-32zM960 208c0 17.6-14.4 32-32 32h-800c-17.6 0-32-14.4-32-32s14.4-32 32-32h800c17.6 0 32 14.4 32 32zM192 112c-17.6 0-32-14.4-32-32s14.4-32 32-32h256c17.6 0 32 14.4 32 32s-14.4 32-32 32h-256zM576 112c-17.6 0-32-14.4-32-32s14.4-32 32-32h320c17.6 0 32 14.4 32 32s-14.4 32-32 32h-320z" />
+<glyph unicode="&#xe928;" glyph-name="fog-2-f" horiz-adv-x="992" d="M928 336h-896c-17.6 0-32-14.4-32-32s14.4-32 32-32h896c17.6 0 32 14.4 32 32s-14.4 32-32 32zM864 208h-768c-17.6 0-32-14.4-32-32s14.4-32 32-32h768c17.6 0 32 14.4 32 32s-14.4 32-32 32zM800 80h-608c-17.6 0-32-14.4-32-32s14.4-32 32-32h608c17.6 0 32 14.4 32 32s-14.4 32-32 32zM704 560c-6.4 0-12.8 0-19.2-1.6-36.8 94.4-129.6 161.6-236.8 161.6-131.2 0-238.4-97.6-254.4-224 0 0-1.6 0-1.6 0-65.6 0-121.6-40-147.2-96h848c-14.4 91.2-94.4 160-188.8 160zM720 624c96-8 177.6-67.2 214.4-153.6 35.2 28.8 57.6 73.6 57.6 123.2 0 88-72 160-160 160-32 75.2-105.6 128-192 128-75.2 0-139.2-38.4-176-96 107.2-9.6 203.2-68.8 256-161.6z" />
+<glyph unicode="&#xe929;" glyph-name="fog-2" d="M852.8 766.4c-41.6 80-121.6 129.6-212.8 129.6-105.6 0-195.2-65.6-227.2-161.6-120-14.4-219.2-104-246.4-224-65.6-8-123.2-51.2-150.4-113.6-6.4-16 0-35.2 16-41.6s35.2 0 41.6 16c20.8 46.4 65.6 76.8 115.2 76.8l32-1.6 3.2 28.8c16 112 112 196.8 224 196.8 91.2 0 172.8-56 208-140.8l9.6-22.4 22.4 3.2c4.8 0 9.6 1.6 16 1.6 78.4 0 145.6-56 158.4-132.8 3.2-16 16-27.2 32-27.2 1.6 0 3.2 0 4.8 0 17.6 3.2 28.8 19.2 25.6 36.8-1.6 6.4-1.6 11.2-3.2 16 62.4 32 102.4 97.6 102.4 169.6 0 99.2-75.2 180.8-171.2 190.4zM897.6 465.6c-38.4 65.6-110.4 108.8-190.4 110.4-43.2 88-128 147.2-224 158.4 27.2 59.2 88 97.6 156.8 97.6 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128 0-46.4-24-88-62.4-110.4zM960 288c0 17.6-14.4 32-32 32h-896c-17.6 0-32-14.4-32-32s14.4-32 32-32h896c17.6 0 32 14.4 32 32zM896 160c0 17.6-14.4 32-32 32h-768c-17.6 0-32-14.4-32-32s14.4-32 32-32h768c17.6 0 32 14.4 32 32zM192 64c-17.6 0-32-14.4-32-32s14.4-32 32-32h608c17.6 0 32 14.4 32 32s-14.4 32-32 32h-608z" />
+<glyph unicode="&#xe92a;" glyph-name="fog-3-f" horiz-adv-x="1008" d="M972.8 292.8h-702.4c-17.6 0-32-14.4-32-32s14.4-32 32-32h702.4c17.6 0 32 14.4 32 32s-14.4 32-32 32zM908.8 164.8h-574.4c-17.6 0-32-14.4-32-32s14.4-32 32-32h574.4c17.6 0 32 14.4 32 32s-14.4 32-32 32zM844.8 36.8h-382.4c-17.6 0-32-14.4-32-32s14.4-32 32-32h382.4c17.6 0 32 14.4 32 32s-14.4 32-32 32zM366.4 36.8h-62.4c-17.6 0-32-14.4-32-32s14.4-32 32-32h62.4c17.6 0 32 14.4 32 32s-14.4 32-32 32zM368 763.2c17.6 0 32 14.4 32 32v96c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32zM160 555.2c0 17.6-14.4 32-32 32h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96c17.6 0 32 14.4 32 32zM180.8 697.6c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-68.8 68.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l68.8-68.8zM532.8 688c8 0 16 3.2 22.4 9.6l68.8 68.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-68.8-68.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6zM180.8 412.8l-68.8-68.8c-12.8-12.8-12.8-32 0-44.8 6.4-4.8 14.4-8 22.4-8s16 3.2 22.4 9.6l68.8 68.8c12.8 12.8 12.8 32 0 44.8-12.8 11.2-33.6 11.2-44.8-1.6zM416 441.6c-4.8 0-11.2 1.6-17.6 1.6-56 0-104-36.8-121.6-88h694.4c0 0 1.6 0 1.6 0-4.8 84.8-73.6 152-160 152-32 75.2-105.6 128-192 128-107.2 1.6-196.8-84.8-204.8-193.6zM256 443.2c27.2 32 65.6 54.4 107.2 62.4 19.2 67.2 64 123.2 123.2 158.4-28.8 33.6-72 52.8-120 52.8-88 0-160-72-160-160 1.6-44.8 19.2-84.8 49.6-113.6z" />
+<glyph unicode="&#xe92b;" glyph-name="fog-3" d="M352 896v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96c0 17.6-14.4 32-32 32s-32-14.4-32-32zM32 512h96c17.6 0 32 14.4 32 32s-14.4 32-32 32h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32zM180.8 702.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-67.2 68.8c-12.8 11.2-33.6 11.2-46.4 0-12.8-12.8-12.8-32 0-44.8l68.8-68.8zM611.2 816l-68.8-68.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l68.8 68.8c12.8 12.8 12.8 32 0 44.8s-33.6 11.2-44.8 0zM112 272c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l68.8 68.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-68.8-68.8c-12.8-11.2-12.8-32 0-44.8zM852.8 542.4c-40 80-121.6 129.6-212.8 129.6-35.2 0-67.2-8-97.6-20.8-35.2 52.8-94.4 84.8-158.4 84.8-105.6 0-192-86.4-192-192 0-62.4 30.4-120 80-155.2-4.8-9.6-8-19.2-11.2-28.8-4.8-17.6 6.4-35.2 22.4-38.4 3.2 0 4.8-1.6 8-1.6 14.4 0 27.2 9.6 30.4 24 11.2 41.6 49.6 72 92.8 72 3.2 0 6.4 0 9.6-1.6l36.8-4.8 1.6 33.6c9.6 92.8 86.4 164.8 177.6 164.8 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128 0-17.6 14.4-32 32-32s32 14.4 32 32c0 99.2-75.2 180.8-171.2 190.4zM404.8 480c-36.8-3.2-68.8-17.6-96-40-32 24-52.8 62.4-52.8 104 0 70.4 57.6 128 128 128 41.6 0 80-20.8 104-54.4-41.6-35.2-72-83.2-83.2-137.6zM1022.4 256c0 17.6-14.4 32-32 32h-702.4c-17.6 0-32-14.4-32-32s14.4-32 32-32h702.4c17.6 0 32 14.4 32 32zM958.4 128c0 17.6-14.4 32-32 32h-574.4c-17.6 0-32-14.4-32-32s14.4-32 32-32h574.4c17.6 0 32 14.4 32 32zM480 32c-17.6 0-32-14.4-32-32s14.4-32 32-32h382.4c17.6 0 32 14.4 32 32s-14.4 32-32 32h-382.4zM321.6 32c-17.6 0-32-14.4-32-32s14.4-32 32-32h62.4c17.6 0 32 14.4 32 32s-14.4 32-32 32h-62.4z" />
+<glyph unicode="&#xe92c;" glyph-name="fog-4-f" horiz-adv-x="960" d="M227.2 496c0 0-1.6 0-1.6 0-52.8 0-99.2-25.6-128-64h820.8c-25.6 75.2-97.6 128-180.8 128-6.4 0-12.8 0-19.2-1.6-38.4 94.4-129.6 161.6-238.4 161.6-129.6 0-238.4-97.6-252.8-224zM75.2 502.4c27.2 25.6 62.4 43.2 97.6 51.2 27.2 92.8 94.4 168 182.4 204.8-35.2 54.4-94.4 89.6-163.2 89.6-3.2 0-8 0-11.2 0 6.4-16 11.2-35.2 11.2-54.4 0-75.2-60.8-137.6-137.6-137.6-19.2 0-38.4 4.8-54.4 11.2 0-3.2 0-8 0-11.2 0-62.4 28.8-118.4 75.2-153.6zM928 368h-864c-17.6 0-32-14.4-32-32s14.4-32 32-32h864c17.6 0 32 14.4 32 32s-14.4 32-32 32zM832 240h-704c-17.6 0-32-14.4-32-32s14.4-32 32-32h704c17.6 0 32 14.4 32 32s-14.4 32-32 32zM768 112h-512c-17.6 0-32-14.4-32-32s14.4-32 32-32h512c17.6 0 32 14.4 32 32s-14.4 32-32 32zM160 112h-62.4c-17.6 0-32-14.4-32-32s14.4-32 32-32h62.4c17.6 0 32 14.4 32 32s-14.4 32-32 32z" />
+<glyph unicode="&#xe92d;" glyph-name="fog-4" horiz-adv-x="992" d="M44.8 680l-41.6 17.6-3.2-48c0-3.2 0-6.4 0-9.6 0-80 43.2-153.6 112-193.6-3.2-3.2-6.4-6.4-8-11.2-11.2-14.4-8-33.6 6.4-44.8s33.6-8 44.8 6.4c24 32 60.8 51.2 100.8 51.2l32-1.6 3.2 28.8c12.8 112 108.8 196.8 220.8 196.8 91.2 0 172.8-56 208-140.8l9.6-22.4 24 1.6c4.8 0 9.6 0 16 0 67.2 0 128-43.2 150.4-107.2 4.8-12.8 17.6-20.8 30.4-20.8 3.2 0 6.4 0 11.2 1.6 16 6.4 25.6 24 19.2 41.6-32 89.6-115.2 148.8-209.6 148.8-48 97.6-147.2 160-257.6 160-27.2 0-54.4-4.8-80-11.2-35.2 84.8-116.8 140.8-209.6 140.8-3.2 0-8 0-11.2 0l-48-3.2 17.6-41.6c6.4-12.8 8-27.2 8-41.6 0-57.6-48-105.6-105.6-105.6-12.8 0-27.2 3.2-40 8zM256 777.6c0 6.4 0 12.8-1.6 20.8 52.8-9.6 97.6-46.4 118.4-97.6-70.4-40-123.2-107.2-142.4-188.8-22.4-3.2-44.8-9.6-64-20.8-51.2 19.2-89.6 65.6-100.8 118.4 8-1.6 14.4-1.6 20.8-1.6 94.4 0 169.6 75.2 169.6 169.6zM992 320c0 17.6-14.4 32-32 32h-864c-17.6 0-32-14.4-32-32s14.4-32 32-32h864c17.6 0 32 14.4 32 32zM896 192c0 17.6-14.4 32-32 32h-704c-17.6 0-32-14.4-32-32s14.4-32 32-32h704c17.6 0 32 14.4 32 32zM288 96c-17.6 0-32-14.4-32-32s14.4-32 32-32h512c17.6 0 32 14.4 32 32s-14.4 32-32 32h-512zM129.6 96c-17.6 0-32-14.4-32-32s14.4-32 32-32h62.4c17.6 0 32 14.4 32 32s-14.4 32-32 32h-62.4z" />
+<glyph unicode="&#xe92e;" glyph-name="full-moon-1-f" horiz-adv-x="640" d="M640 448c0-176.731-143.269-320-320-320s-320 143.269-320 320c0 176.731 143.269 320 320 320s320-143.269 320-320z" />
+<glyph unicode="&#xe92f;" glyph-name="full-moon-1" horiz-adv-x="704" d="M0 448c0-193.6 158.4-352 352-352s352 158.4 352 352-158.4 352-352 352-352-158.4-352-352zM352 736c158.4 0 288-129.6 288-288s-129.6-288-288-288-288 129.6-288 288 129.6 288 288 288z" />
+<glyph unicode="&#xe930;" glyph-name="full-moon-2-f" horiz-adv-x="640" d="M320 768c-176 0-320-144-320-320s144-320 320-320c176 0 320 144 320 320s-144 320-320 320zM214.4 489.6c-6.4-6.4-14.4-9.6-22.4-9.6s-16 3.2-22.4 9.6c-6.4 4.8-9.6 12.8-9.6 22.4 0 8 3.2 16 9.6 22.4 11.2 12.8 33.6 12.8 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-17.6-9.6-22.4zM342.4 617.6c-6.4-6.4-14.4-9.6-22.4-9.6s-16 3.2-22.4 9.6c-6.4 4.8-9.6 12.8-9.6 22.4 0 8 3.2 16 9.6 22.4 11.2 12.8 33.6 12.8 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4 0-9.6-3.2-17.6-9.6-22.4zM502.4 521.6c-6.4-6.4-14.4-9.6-22.4-9.6s-16 3.2-22.4 9.6c-6.4 4.8-9.6 12.8-9.6 22.4 0 8 3.2 16 9.6 22.4 12.8 12.8 33.6 12.8 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4 0-9.6-3.2-17.6-9.6-22.4z" />
+<glyph unicode="&#xe931;" glyph-name="full-moon-2" horiz-adv-x="704" d="M0 448c0-193.6 158.4-352 352-352s352 158.4 352 352-158.4 352-352 352c-193.6 0-352-158.4-352-352zM640 448c0-158.4-129.6-288-288-288s-288 129.6-288 288 129.6 288 288 288c158.4 0 288-129.6 288-288zM329.6 662.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 11.2-33.6 11.2-44.8 0zM512 512c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6zM201.6 534.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 11.2-33.6 11.2-44.8 0z" />
+<glyph unicode="&#xe932;" glyph-name="full-moon-3-f" horiz-adv-x="960" d="M480 928c-265.6 0-480-214.4-480-480s214.4-480 480-480c265.6 0 480 214.4 480 480s-214.4 480-480 480zM257.6 432c-27.2 0-48 20.8-48 48s20.8 48 48 48c27.2 0 48-20.8 48-48 0-25.6-22.4-48-48-48zM544 720c-27.2 0-48 20.8-48 48s20.8 48 48 48 48-20.8 48-48-20.8-48-48-48zM736 528c-27.2 0-48 20.8-48 48s20.8 48 48 48 48-20.8 48-48c0-27.2-20.8-48-48-48z" />
+<glyph unicode="&#xe933;" glyph-name="full-moon-3" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512 0c-246.4 0-448 201.6-448 448s201.6 448 448 448 448-201.6 448-448-201.6-448-448-448zM289.6 528c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 27.2-22.4 48-48 48zM768 624c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 25.6-20.8 48-48 48zM576 816c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 25.6-20.8 48-48 48z" />
+<glyph unicode="&#xe934;" glyph-name="hail-1-f" horiz-adv-x="960" d="M752 768c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h574.4c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208zM720 288c-17.6 0-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160c0 17.6-14.4 32-32 32zM560 288c-17.6 0-32-14.4-32-32v-64c0-17.6 14.4-32 32-32s32 14.4 32 32v64c0 17.6-14.4 32-32 32zM400 288c-17.6 0-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160c0 17.6-14.4 32-32 32zM240 128c17.6 0 32 14.4 32 32v96c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32zM217.6 86.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM377.6 22.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM537.6 118.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 17.6-9.6 22.4c-11.2 11.2-33.6 12.8-44.8 0zM720 32c-17.6 0-32-14.4-32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32c0 17.6-14.4 32-32 32z" />
+<glyph unicode="&#xe935;" glyph-name="hail-1" d="M795.2 800c-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h576c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM785.6 384h-577.6c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176s-80-176-176-176zM736 32c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32zM576 256c-17.6 0-32-14.4-32-32v-64c0-17.6 14.4-32 32-32s32 14.4 32 32v64c0 17.6-14.4 32-32 32zM416 32c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32zM256 256c-17.6 0-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96c0 17.6-14.4 32-32 32zM233.6 54.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM393.6-54.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4zM553.6 86.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM713.6-54.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4z" />
+<glyph unicode="&#xe936;" glyph-name="hail-2-f" horiz-adv-x="960" d="M752 768c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h574.4c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208zM544 128c17.6 0 32 14.4 32 32v96c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32zM416 64c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32zM320 0v256c0 17.6-14.4 32-32 32s-32-14.4-32-32v-166.4c-36.8 27.2-83.2 41.6-129.6 36.8-17.6-1.6-30.4-17.6-28.8-35.2s17.6-30.4 35.2-28.8c54.4 4.8 105.6-25.6 128-75.2 0 0 0 0 0 0 1.6-1.6 3.2-4.8 4.8-6.4 0 0 1.6-1.6 1.6-1.6 1.6-1.6 3.2-3.2 6.4-4.8 0 0 0 0 1.6 0 1.6-1.6 4.8-1.6 6.4-3.2 0 0 1.6 0 1.6 0 3.2 0 4.8-1.6 8-1.6 0 0 0 0 0 0 1.6 0 1.6 0 3.2 0s3.2 0 3.2 0c0 0 0 0 1.6 0s3.2 1.6 4.8 1.6c0 0 0 0 0 0s1.6 0 1.6 1.6c1.6 0 1.6 1.6 3.2 1.6s1.6 1.6 1.6 1.6c0 0 1.6 1.6 1.6 1.6s1.6 1.6 1.6 3.2c0 1.6 1.6 1.6 1.6 3.2s1.6 1.6 1.6 3.2c0 1.6 1.6 1.6 1.6 3.2s0 1.6 1.6 3.2c0 1.6 0 1.6 1.6 3.2 0 1.6 0 3.2 0 3.2-1.6-1.6-1.6 0-1.6 0v0c0 0 0 0 0 0zM833.6 126.4c-48 3.2-92.8-9.6-129.6-36.8v166.4c0 17.6-14.4 32-32 32s-32-14.4-32-32v-256c0 0 0 0 0 0v0c0 0 0-1.6 0-1.6 0-1.6 0-3.2 0-3.2 0-1.6 0-1.6 1.6-3.2 0-1.6 0-1.6 1.6-3.2 0-1.6 1.6-1.6 1.6-3.2s1.6-1.6 1.6-3.2c0-1.6 1.6-1.6 1.6-3.2s1.6-1.6 1.6-3.2c0 0 1.6-1.6 1.6-1.6s1.6-1.6 1.6-1.6c1.6 0 1.6-1.6 3.2-1.6 0 0 1.6 0 1.6-1.6 0 0 0 0 0 0 1.6 0 3.2-1.6 4.8-1.6 0 0 0 0 1.6 0s1.6 0 3.2 0 1.6 0 3.2 0c0 0 0 0 0 0 3.2 0 4.8 0 8 1.6 0 0 1.6 0 1.6 0 1.6 0 4.8 1.6 6.4 3.2 0 0 0 0 1.6 0 1.6 1.6 4.8 3.2 6.4 4.8 0 0 1.6 1.6 1.6 1.6 1.6 1.6 3.2 4.8 4.8 6.4 0 0 0 0 0 0 22.4 49.6 73.6 80 128 75.2 17.6-1.6 33.6 11.2 35.2 28.8 0 19.2-12.8 35.2-30.4 36.8zM393.6 22.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM521.6 86.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM950.4 118.4c-11.2 12.8-33.6 12.8-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4z" />
+<glyph unicode="&#xe937;" glyph-name="hail-2" d="M795.2 800c-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h576c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM784 384h-576c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176-1.6-97.6-80-176-177.6-176zM704 256c-17.6 0-32-14.4-32-32v-256c0 0 0 0 0 0v0c0 0 0-1.6 0-1.6 0-1.6 0-3.2 0-4.8s0-1.6 0-3.2 0-1.6 1.6-3.2c0-1.6 1.6-1.6 1.6-3.2s1.6-1.6 1.6-3.2c0-1.6 1.6-1.6 1.6-1.6 0-1.6 1.6-1.6 1.6-3.2 0 0 1.6-1.6 1.6-1.6s1.6-1.6 1.6-1.6c1.6 0 1.6-1.6 3.2-1.6 0 0 1.6 0 1.6-1.6 0 0 0 0 0 0 1.6 0 3.2-1.6 4.8-1.6 0 0 0 0 1.6 0s1.6 0 3.2 0 1.6 0 3.2 0c0 0 0 0 0 0 3.2 0 4.8 0 8 1.6 0 0 1.6 0 1.6 0 1.6 0 4.8 1.6 6.4 3.2 0 0 0 0 1.6 0 1.6 1.6 4.8 3.2 6.4 4.8 0 0 1.6 1.6 1.6 1.6 1.6 1.6 3.2 4.8 4.8 6.4 0 0 0 0 0 0 22.4 49.6 73.6 80 128 75.2 17.6-1.6 33.6 11.2 35.2 28.8s-11.2 33.6-28.8 35.2c-48 3.2-92.8-9.6-129.6-36.8v168c0 17.6-14.4 32-32 32zM608 128v96c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32zM480 64v160c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32zM320 256c-17.6 0-32-14.4-32-32v-166.4c-36.8 27.2-83.2 41.6-129.6 36.8-17.6-1.6-30.4-17.6-28.8-35.2s17.6-30.4 35.2-28.8c54.4 4.8 105.6-25.6 128-75.2 0 0 0 0 0 0 1.6-1.6 3.2-4.8 4.8-6.4 0 0 1.6-1.6 1.6-1.6 1.6-1.6 3.2-3.2 6.4-4.8 0 0 0 0 1.6 0 1.6-1.6 4.8-1.6 6.4-3.2 0 0 1.6 0 1.6 0 3.2 0 4.8-1.6 8-1.6 0 0 0 0 0 0 1.6 0 1.6 0 3.2 0s3.2 0 3.2 0c0 0 0 0 1.6 0s3.2 1.6 4.8 1.6c0 0 0 0 0 0s1.6 0 1.6 1.6c1.6 0 1.6 1.6 3.2 1.6s1.6 1.6 1.6 1.6c0 0 1.6 1.6 1.6 1.6s1.6 1.6 1.6 3.2c0 0 1.6 1.6 1.6 1.6 0 1.6 1.6 1.6 1.6 3.2s1.6 1.6 1.6 3.2c0 1.6 0 1.6 1.6 3.2 0 1.6 0 1.6 1.6 3.2 0 1.6 0 3.2 0 3.2s0 1.6 0 1.6v0c0 0 0 0 0 0v256c-1.6 17.6-16 32-33.6 32zM425.6-54.4c6.4-6.4 14.4-9.6 22.4-9.6s17.6 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 11.2-33.6 11.2-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4zM553.6 9.6c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 11.2-33.6 11.2-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4zM982.4 41.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 12.8-33.6 12.8-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6z" />
+<glyph unicode="&#xe938;" glyph-name="hail-day-1-f" horiz-adv-x="960" d="M800 192c-17.6 0-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96c0 17.6-14.4 32-32 32zM672 192c-17.6 0-32-14.4-32-32v-32c0-17.6 14.4-32 32-32s32 14.4 32 32v32c0 17.6-14.4 32-32 32zM544 192c-17.6 0-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96c0 17.6-14.4 32-32 32zM416 192c-17.6 0-32-14.4-32-32v-32c0-17.6 14.4-32 32-32s32 14.4 32 32v32c0 17.6-14.4 32-32 32zM352 816c17.6 0 32 14.4 32 32v80c0 17.6-14.4 32-32 32s-32-14.4-32-32v-80c0-17.6 14.4-32 32-32zM144 608c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32s14.4-32 32-32h80c17.6 0 32 14.4 32 32zM164.8 750.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-51.2 52.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l51.2-52.8zM516.8 740.8c8 0 16 3.2 22.4 9.6l52.8 51.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-4.8 14.4-8 22.4-8zM164.8 465.6l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM800 576c-32 75.2-105.6 128-192 128-110.4 0-200-84.8-208-193.6-4.8 0-11.2 1.6-17.6 1.6-70.4 0-128-57.6-128-128s57.6-128 128-128h416c88 0 160 72 160 160 1.6 88-70.4 160-158.4 160zM460.8 724.8c-28.8 27.2-67.2 43.2-108.8 43.2-88 0-160-72-160-160 0-41.6 16-78.4 40-105.6 28.8 35.2 68.8 62.4 115.2 70.4 19.2 62.4 59.2 116.8 113.6 152zM448 32c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM576-32c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM704 32c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM832-32c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
+<glyph unicode="&#xe939;" glyph-name="hail-day-1" horiz-adv-x="992" d="M160 608c0-62.4 30.4-120 80-155.2-9.6-20.8-16-43.2-16-68.8 0-88 72-160 160-160h416c105.6 0 192 86.4 192 192 0 99.2-75.2 180.8-171.2 190.4-40 80-121.6 129.6-212.8 129.6-35.2 0-67.2-8-97.6-20.8-35.2 52.8-94.4 84.8-158.4 84.8-105.6 0-192-86.4-192-192zM608 672c72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128s-57.6-128-128-128h-416c-52.8 0-96 43.2-96 96s43.2 96 96 96c3.2 0 6.4 0 9.6-1.6l36.8-4.8 1.6 33.6c8 92.8 84.8 164.8 176 164.8zM456 681.6c-41.6-33.6-72-83.2-83.2-137.6-36.8-3.2-68.8-17.6-96-40-32 24-52.8 62.4-52.8 104 0 70.4 57.6 128 128 128 41.6 0 80-20.8 104-54.4zM384 864v64c0 17.6-14.4 32-32 32s-32-14.4-32-32v-64c0-17.6 14.4-32 32-32s32 14.4 32 32zM0 608c0-17.6 14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32zM112 801.6l36.8-36.8c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-35.2 38.4c-12.8 12.8-32 12.8-44.8 0-14.4-12.8-14.4-33.6-1.6-46.4zM510.4 766.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 35.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-36.8-36.8c-12.8-11.2-12.8-30.4 0-43.2zM112 368c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 36.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-36.8-36.8c-12.8-11.2-12.8-32 0-44.8zM800 32c17.6 0 32 14.4 32 32v96c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32zM672 192c-17.6 0-32-14.4-32-32v-32c0-17.6 14.4-32 32-32s32 14.4 32 32v32c0 17.6-14.4 32-32 32zM544 192c-17.6 0-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96c0 17.6-14.4 32-32 32zM416 96c17.6 0 32 14.4 32 32v32c0 17.6-14.4 32-32 32s-32-14.4-32-32v-32c0-17.6 14.4-32 32-32zM393.6 9.6c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4zM521.6-9.6c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 12.8-33.6 12.8-44.8 0zM649.6 54.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 12.8-33.6 12.8-44.8 0zM777.6-54.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4z" />
+<glyph unicode="&#xe93a;" glyph-name="hail-day-2-f" horiz-adv-x="976" d="M528 192c17.6 0 32-14.4 32-32v-32c0-17.6-14.4-32-32-32s-32 14.4-32 32v32c0 17.6 14.4 32 32 32zM656 192c17.6 0 32-14.4 32-32v-96c0-17.6-14.4-32-32-32s-32 14.4-32 32v96c0 17.6 14.4 32 32 32zM752-32v192c0 17.6 14.4 32 32 32s32-14.4 32-32v-102.4c36.8 27.2 83.2 41.6 129.6 36.8 17.6-1.6 30.4-17.6 28.8-35.2s-16-30.4-35.2-28.8c-54.4 4.8-105.6-25.6-128-75.2 0 0 0 0 0 0-1.6-1.6-3.2-4.8-4.8-6.4 0 0-1.6-1.6-1.6-1.6-1.6-1.6-3.2-3.2-6.4-4.8 0 0 0 0-1.6 0-1.6-1.6-4.8-1.6-6.4-3.2 0 0-1.6 0-1.6 0-3.2 0-4.8-1.6-8-1.6v0 0c0 0 0 0 0 0-1.6 0-4.8 0-6.4 0 0 0 0 0 0 0-1.6 0-3.2 1.6-6.4 1.6 0 0 0 0 0 0s-1.6 0-1.6 1.6c-1.6 0-3.2 1.6-3.2 1.6-1.6 0-1.6 1.6-1.6 1.6-1.6 0-1.6 1.6-3.2 1.6 0 0-1.6 1.6-1.6 3.2s-1.6 1.6-1.6 3.2c0 1.6-1.6 1.6-1.6 3.2s-1.6 1.6-1.6 3.2c0 1.6 0 1.6-1.6 3.2 0 1.6 0 1.6 0 3.2s0 3.2 0 4.8c1.6-3.2 1.6-3.2 1.6-1.6v0c0 0 0 0 0 0zM238.4 94.4c48 4.8 92.8-9.6 129.6-36.8v102.4c0 17.6 14.4 32 32 32s32-14.4 32-32v-192c0 0 0 0 0 0v0c0 0 0-1.6 0-1.6 0-1.6 0-3.2 0-4.8s0-1.6 0-3.2 0-1.6-1.6-3.2c0-1.6-1.6-1.6-1.6-3.2s-1.6-1.6-1.6-3.2c0-1.6-1.6-1.6-1.6-3.2s-1.6-1.6-1.6-3.2c0 0-1.6-1.6-3.2-1.6 0 0-1.6-1.6-1.6-1.6-1.6-1.6-3.2-1.6-3.2-1.6s-1.6 0-1.6-1.6c0 0 0 0 0 0-1.6-1.6-3.2-1.6-6.4-1.6 0 0 0 0 0 0-1.6 0-3.2 0-6.4 0 0 0 0 0 0 0v0 0c-3.2 0-4.8 0-8 1.6 0 0-1.6 0-1.6 0-1.6 0-4.8 1.6-6.4 3.2 0 0 0 0-1.6 0-1.6 1.6-4.8 3.2-6.4 4.8 0 0-1.6 1.6-1.6 1.6-1.6 1.6-3.2 4.8-4.8 6.4 0 0 0 0 0 0-22.4 49.6-73.6 80-128 75.2-17.6-1.6-33.6 11.2-35.2 28.8 0 20.8 12.8 36.8 30.4 38.4zM678.4-9.6c6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6s-16 3.2-22.4 9.6c-6.4 6.4-9.6 14.4-9.6 22.4s3.2 16 9.6 22.4c12.8 11.2 33.6 11.2 44.8 0zM550.4 54.4c6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6s-16 3.2-22.4 9.6c-6.4 6.4-9.6 14.4-9.6 22.4s3.2 16 9.6 22.4c12.8 11.2 33.6 11.2 44.8 0zM121.6 86.4c11.2 12.8 33.6 12.8 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6s-16 3.2-22.4 9.6c-6.4 6.4-9.6 14.4-9.6 22.4s3.2 16 9.6 22.4zM352 816c17.6 0 32 14.4 32 32v80c0 17.6-14.4 32-32 32s-32-14.4-32-32v-80c0-17.6 14.4-32 32-32zM144 608c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32s14.4-32 32-32h80c17.6 0 32 14.4 32 32zM164.8 750.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-51.2 52.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l51.2-52.8zM516.8 740.8c8 0 16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6zM164.8 465.6l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM800 576c-32 75.2-105.6 128-192 128-110.4 0-200-84.8-208-193.6-4.8 0-11.2 1.6-17.6 1.6-70.4 0-128-57.6-128-128s57.6-128 128-128h416c88 0 160 72 160 160 1.6 89.6-70.4 160-158.4 160zM460.8 724.8c-28.8 27.2-67.2 43.2-108.8 43.2-88 0-160-72-160-160 0-41.6 16-78.4 40-105.6 28.8 35.2 68.8 62.4 115.2 70.4 19.2 64 59.2 116.8 113.6 152z" />
+<glyph unicode="&#xe93b;" glyph-name="hail-day-2" d="M300.8 899.2v-60.8c0-16 12.8-30.4 30.4-30.4 16 0 30.4 12.8 30.4 30.4v60.8c0 16-12.8 30.4-30.4 30.4-16 0-30.4-12.8-30.4-30.4zM120 598.4c0 16-12.8 30.4-30.4 30.4h-59.2c-16 0-30.4-12.8-30.4-30.4s12.8-30.4 30.4-30.4h60.8c16 0 28.8 14.4 28.8 30.4zM182.4 747.2c11.2 11.2 11.2 30.4 0 43.2l-33.6 33.6c-11.2 11.2-30.4 11.2-43.2 0-11.2-11.2-11.2-30.4 0-43.2l33.6-33.6c6.4-6.4 12.8-9.6 20.8-9.6 9.6 1.6 16 3.2 22.4 9.6zM513.6 824l-33.6-33.6c-11.2-11.2-11.2-30.4 0-43.2 6.4-6.4 12.8-9.6 20.8-9.6s16 3.2 20.8 9.6l33.6 33.6c11.2 11.2 11.2 30.4 0 43.2-9.6 11.2-28.8 11.2-41.6 0zM105.6 372.8c6.4-6.4 12.8-9.6 20.8-9.6s16 3.2 20.8 9.6l33.6 33.6c11.2 11.2 11.2 30.4 0 43.2-11.2 11.2-30.4 11.2-43.2 0l-32-33.6c-11.2-12.8-11.2-32 0-43.2zM772.8 598.4c-38.4 73.6-115.2 121.6-200 121.6-32 0-64-6.4-91.2-19.2-33.6 49.6-89.6 80-150.4 80-99.2 0-180.8-81.6-180.8-180.8 0-57.6 28.8-112 75.2-145.6-9.6-19.2-14.4-41.6-14.4-64 0-83.2 67.2-150.4 150.4-150.4h392c99.2 0 180.8 81.6 180.8 180.8 0 89.6-70.4 166.4-161.6 177.6zM211.2 598.4c0 67.2 54.4 120 120 120 40 0 75.2-19.2 97.6-51.2-40-32-67.2-78.4-78.4-129.6-33.6-1.6-65.6-16-89.6-38.4-30.4 24-49.6 60.8-49.6 99.2zM753.6 297.6h-392c-49.6 0-89.6 40-89.6 89.6s40 89.6 89.6 89.6c3.2 0 6.4 0 8-1.6l35.2-4.8 1.6 32c6.4 86.4 78.4 153.6 164.8 153.6 67.2 0 126.4-40 153.6-102.4l8-19.2h20.8c65.6 0 120-54.4 120-120 0-62.4-54.4-116.8-120-116.8zM632 116.8c16 0 30.4 12.8 30.4 30.4v30.4c0 16-12.8 30.4-30.4 30.4-16 0-30.4-12.8-30.4-30.4v-30.4c1.6-17.6 14.4-30.4 30.4-30.4zM512 56c16 0 30.4 12.8 30.4 30.4v89.6c0 16-12.8 30.4-30.4 30.4-16 0-30.4-12.8-30.4-30.4v-89.6c0-16 14.4-30.4 30.4-30.4zM364.8-16c0 0 0 0 0 0 1.6-3.2 3.2-4.8 4.8-6.4 0 0 0-1.6 1.6-1.6 1.6-1.6 3.2-3.2 6.4-4.8 0 0 0 0 1.6 0 1.6-1.6 3.2-1.6 6.4-3.2 0 0 1.6 0 1.6 0 1.6 0 4.8-1.6 8-1.6 0 0 0 0 0 0 1.6 0 1.6 0 3.2 0s1.6 0 3.2 0c0 0 0 0 0 0 1.6 0 3.2 1.6 4.8 1.6 0 0 0 0 0 0s1.6 0 1.6 1.6c1.6 0 1.6 1.6 3.2 1.6s1.6 1.6 1.6 1.6c0 0 1.6 1.6 1.6 1.6s1.6 1.6 1.6 3.2c0 0 1.6 1.6 1.6 1.6 0 1.6 1.6 1.6 1.6 3.2s1.6 1.6 1.6 3.2c0 1.6 0 1.6 1.6 3.2 0 1.6 0 1.6 0 3.2s0 3.2 0 3.2c0 0 0 1.6 0 1.6v0c0 0 0 0 0 0v180.8c0 16-12.8 30.4-30.4 30.4-16 0-30.4-12.8-30.4-30.4v-96c-35.2 25.6-78.4 38.4-123.2 35.2-16-1.6-28.8-16-27.2-32s16-28.8 32-27.2c51.2 1.6 100.8-27.2 121.6-73.6zM932.8 83.2c1.6 16-11.2 30.4-27.2 32-44.8 3.2-88-9.6-123.2-35.2v96c0 16-12.8 30.4-30.4 30.4-16 0-30.4-12.8-30.4-30.4v-180.8c0 0 0 0 0 0v0c0 0 0-1.6 0-1.6 0-1.6 0-3.2 0-3.2 0-1.6 0-1.6 0-3.2s0-1.6 1.6-3.2c0-1.6 1.6-1.6 1.6-3.2s1.6-1.6 1.6-3.2c0 0 1.6-1.6 1.6-1.6 0-1.6 1.6-1.6 1.6-3.2 0 0 1.6-1.6 1.6-1.6s1.6-1.6 1.6-1.6c1.6 0 1.6-1.6 3.2-1.6 0 0 1.6 0 1.6-1.6 0 0 0 0 0 0 1.6 0 3.2-1.6 4.8-1.6 0 0 0 0 1.6 0 0 0 1.6 0 1.6 0 1.6 0 3.2 0 3.2 0s0 0 0 0c3.2 0 4.8 0 8 1.6 0 0 1.6 0 1.6 0 1.6 0 4.8 1.6 6.4 3.2 0 0 0 0 1.6 0 1.6 1.6 3.2 3.2 6.4 4.8 0 0 0 1.6 1.6 1.6 1.6 1.6 3.2 3.2 3.2 6.4 0 0 0 0 0 0 20.8 46.4 68.8 75.2 120 70.4 19.2 1.6 33.6 12.8 35.2 30.4zM491.2-24c4.8-4.8 12.8-9.6 20.8-9.6s16 3.2 20.8 9.6c6.4 4.8 9.6 12.8 9.6 20.8s-3.2 16-9.6 20.8c-11.2 11.2-32 11.2-43.2 0-4.8-4.8-8-12.8-8-20.8s3.2-16 9.6-20.8zM611.2 35.2c4.8-4.8 12.8-9.6 20.8-9.6s16 3.2 20.8 9.6c6.4 4.8 9.6 12.8 9.6 20.8s-3.2 16-9.6 20.8c-11.2 11.2-32 11.2-43.2 0-4.8-4.8-8-12.8-8-20.8 0-6.4 3.2-14.4 9.6-20.8zM972.8 107.2c-4.8-4.8-8-12.8-8-20.8s3.2-16 9.6-20.8c4.8-4.8 12.8-9.6 20.8-9.6s16 3.2 20.8 9.6c6.4 4.8 9.6 12.8 9.6 20.8s-3.2 16-9.6 20.8c-12.8 11.2-32 11.2-43.2 0z" />
+<glyph unicode="&#xe93c;" glyph-name="hail-full-moon-1-f" horiz-adv-x="800" d="M608 64c-17.6 0-32 14.4-32 32v160c0 17.6 14.4 32 32 32s32-14.4 32-32v-160c0-17.6-14.4-32-32-32zM480 160c-17.6 0-32 14.4-32 32v64c0 17.6 14.4 32 32 32s32-14.4 32-32v-64c0-17.6-14.4-32-32-32zM352 64c-17.6 0-32 14.4-32 32v160c0 17.6 14.4 32 32 32s32-14.4 32-32v-160c0-17.6-14.4-32-32-32zM224 128c-17.6 0-32 14.4-32 32v96c0 17.6 14.4 32 32 32s32-14.4 32-32v-96c0-17.6-14.4-32-32-32zM636.8 668.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h436.8c89.6 0 163.2 70.4 163.2 158.4-1.6 83.2-75.2 155.2-164.8 155.2zM150.4 673.6c24 75.2 81.6 134.4 153.6 166.4-27.2 51.2-81.6 88-144 88-88 0-160-72-160-160 0-56 28.8-105.6 72-134.4 22.4 19.2 49.6 32 78.4 40zM256 64c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM384 0c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM512 96c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM640 0c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
+<glyph unicode="&#xe93d;" glyph-name="hail-full-moon-1" horiz-adv-x="864" d="M672 224c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160zM512 128c17.6 0 32 14.4 32 32v64c0 17.6-14.4 32-32 32s-32-14.4-32-32v-64c0-17.6 14.4-32 32-32zM384 32c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32zM288 224c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96zM108.8 595.2c-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4s-84.8 187.2-192 190.4c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-105.6 0-192-86.4-192-192 0-76.8 44.8-142.4 108.8-172.8zM449.6 768c76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 92.8 91.2 160 184 160zM192 896c60.8 0 113.6-43.2 124.8-102.4-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-65.6 4.8-118.4 59.2-118.4 128 0 70.4 57.6 128 128 128zM233.6 54.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM384-64c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6zM512 32c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6zM617.6-9.6c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0z" />
+<glyph unicode="&#xe93e;" glyph-name="hail-full-moon-2-f" horiz-adv-x="896" d="M480 128c17.6 0 32 14.4 32 32v96c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32zM352 64c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32zM256 0v256c0 17.6-14.4 32-32 32s-32-14.4-32-32v-166.4c-36.8 27.2-83.2 41.6-129.6 36.8-17.6-1.6-30.4-17.6-28.8-35.2s16-30.4 35.2-28.8c54.4 4.8 105.6-25.6 128-75.2 0 0 0 0 0 0 1.6-1.6 3.2-4.8 4.8-6.4 0 0 1.6-1.6 1.6-1.6 1.6-1.6 3.2-3.2 6.4-4.8 0 0 0 0 1.6 0 1.6-1.6 4.8-1.6 6.4-3.2 0 0 1.6 0 1.6 0 3.2 0 4.8-1.6 8-1.6 0 0 0 0 0 0 1.6 0 1.6 0 3.2 0s1.6 0 3.2 0c0 0 0 0 1.6 0s3.2 1.6 4.8 1.6c0 0 0 0 0 0s1.6 0 1.6 1.6c1.6 0 1.6 1.6 3.2 1.6s1.6 1.6 3.2 1.6c0 0 1.6 1.6 1.6 1.6 0 1.6 1.6 1.6 1.6 3.2 0 0 1.6 1.6 1.6 1.6 0 1.6 1.6 1.6 1.6 3.2s1.6 1.6 1.6 3.2c0 1.6 0 1.6 1.6 3.2 0 1.6 0 1.6 0 3.2s0 3.2 0 4.8c-1.6-1.6-1.6 0-1.6 0v0c0 0 0 0 0 0zM769.6 126.4c-48 3.2-92.8-9.6-129.6-36.8v166.4c0 17.6-14.4 32-32 32s-32-14.4-32-32v-256c0 0 0 0 0 0v0c0 0 0-1.6 0-1.6 0-1.6 0-3.2 0-4.8s0-1.6 0-3.2 0-1.6 1.6-3.2c0-1.6 1.6-1.6 1.6-3.2s1.6-1.6 1.6-3.2c0-1.6 1.6-1.6 1.6-1.6 0-1.6 1.6-1.6 1.6-3.2 0 0 1.6-1.6 1.6-1.6s1.6-1.6 3.2-1.6c1.6 0 1.6-1.6 3.2-1.6 0 0 1.6 0 1.6-1.6 0 0 0 0 0 0 1.6 0 3.2-1.6 4.8-1.6 0 0 0 0 1.6 0s1.6 0 3.2 0 1.6 0 3.2 0v0c3.2 0 4.8 0 8 1.6 0 0 1.6 0 1.6 0 1.6 0 4.8 1.6 6.4 3.2 0 0 0 0 1.6 0 1.6 1.6 4.8 3.2 6.4 4.8 0 0 1.6 1.6 1.6 1.6 1.6 1.6 3.2 4.8 4.8 6.4 0 0 0 0 0 0 22.4 49.6 73.6 80 128 75.2 17.6-1.6 33.6 11.2 35.2 28.8 0 19.2-12.8 35.2-30.4 36.8zM329.6 22.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM457.6 86.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-17.6 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM886.4 118.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4zM636.8 668.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h436.8c89.6 0 163.2 70.4 163.2 158.4-1.6 83.2-75.2 155.2-164.8 155.2zM150.4 673.6c24 75.2 81.6 134.4 153.6 166.4-27.2 52.8-81.6 88-144 88-88 0-160-72-160-160 0-56 28.8-105.6 72-134.4 22.4 19.2 49.6 32 78.4 40z" />
+<glyph unicode="&#xe93f;" glyph-name="hail-full-moon-2" horiz-adv-x="928" d="M673.6 700.8c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-24 80-97.6 139.2-185.6 139.2-105.6 0-192-86.4-192-192 0-76.8 44.8-142.4 108.8-172.8-27.2-28.8-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c108.8 0 195.2 86.4 195.2 190.4s-84.8 187.2-190.4 190.4zM64 768c0 70.4 57.6 128 128 128 60.8 0 113.6-43.2 124.8-102.4-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-65.6 4.8-118.4 59.2-118.4 128zM668.8 384h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2h32l3.2 27.2c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-65.6-57.6-123.2-131.2-123.2zM640 256c-17.6 0-32-14.4-32-32v-256c0 0 0 0 0 0v0c0 0 0-1.6 0-1.6 0-1.6 0-3.2 0-3.2 0-1.6 0-1.6 1.6-3.2 0-1.6 0-1.6 1.6-3.2 0-1.6 1.6-1.6 1.6-3.2s1.6-1.6 1.6-3.2c0-1.6 1.6-1.6 1.6-1.6 0-1.6 1.6-1.6 1.6-3.2 0 0 1.6-1.6 1.6-1.6s1.6-1.6 3.2-1.6c1.6 0 1.6-1.6 3.2-1.6 0 0 1.6 0 1.6-1.6 0 0 0 0 0 0 1.6 0 3.2-1.6 4.8-1.6 0 0 0 0 1.6 0 0 0 1.6 0 1.6 0 1.6 0 3.2 0 4.8 0 0 0 0 0 0 0 3.2 0 4.8 0 8 1.6 0 0 1.6 0 1.6 0 1.6 0 4.8 1.6 6.4 3.2 0 0 0 0 1.6 0 1.6 1.6 4.8 3.2 6.4 4.8 0 0 1.6 1.6 1.6 1.6 1.6 1.6 3.2 4.8 4.8 6.4 0 0 0 0 0 0 22.4 49.6 73.6 80 128 75.2 17.6-1.6 33.6 11.2 35.2 28.8s-11.2 33.6-28.8 35.2c-48 4.8-92.8-9.6-129.6-36.8v166.4c-3.2 17.6-17.6 32-35.2 32zM544 224c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96zM416 224c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160zM224 224v-166.4c-36.8 27.2-83.2 41.6-129.6 36.8-17.6-1.6-30.4-17.6-28.8-35.2s17.6-30.4 35.2-28.8c54.4 4.8 105.6-25.6 128-75.2 0 0 0 0 0 0 1.6-1.6 3.2-4.8 4.8-6.4 0 0 1.6-1.6 1.6-1.6 1.6-1.6 3.2-3.2 6.4-4.8 0 0 1.6 0 1.6 0 1.6-1.6 4.8-1.6 6.4-3.2 0 0 1.6 0 1.6 0 3.2 0 4.8-1.6 8-1.6 0 0 0 0 0 0 1.6 0 1.6 0 3.2 0s1.6 0 3.2 0c0 0 0 0 0 0 1.6 0 3.2 1.6 6.4 1.6 0 0 0 0 0 0s1.6 0 1.6 1.6c1.6 0 1.6 1.6 3.2 1.6s1.6 1.6 3.2 1.6c0 0 1.6 1.6 1.6 1.6s1.6 1.6 1.6 3.2c0 0 1.6 1.6 1.6 1.6 0 1.6 1.6 1.6 1.6 3.2s1.6 1.6 1.6 3.2c0 1.6 0 1.6 1.6 3.2 0 1.6 0 1.6 1.6 3.2 0 1.6 0 3.2 0 3.2s0 1.6 0 1.6v0c0 0 0 0 0 0v256c0 17.6-14.4 32-32 32s-35.2-14.4-35.2-32zM873.6 86.4c-6.4-6.4-9.6-14.4-9.6-24 0-8 3.2-16 9.6-22.4s14.4-9.6 22.4-9.6c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 12.8-33.6 12.8-44.8 1.6zM489.6 54.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 12.8-33.6 12.8-44.8 0zM361.6-9.6c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 12.8-33.6 12.8-44.8 0z" />
+<glyph unicode="&#xe940;" glyph-name="hail-night-1-f" horiz-adv-x="800" d="M611.2 64c-17.6 0-32 14.4-32 32v160c0 17.6 14.4 32 32 32s32-14.4 32-32v-160c0-17.6-14.4-32-32-32zM483.2 160c-17.6 0-32 14.4-32 32v64c0 17.6 14.4 32 32 32s32-14.4 32-32v-64c0-17.6-14.4-32-32-32zM355.2 64c-17.6 0-32 14.4-32 32v160c0 17.6 14.4 32 32 32s32-14.4 32-32v-160c0-17.6-14.4-32-32-32zM227.2 128c-17.6 0-32 14.4-32 32v96c0 17.6 14.4 32 32 32s32-14.4 32-32v-96c0-17.6-14.4-32-32-32zM636.8 352c89.6 0 163.2 70.4 163.2 158.4s-73.6 158.4-163.2 158.4c-4.8 0-11.2 0-16-1.6-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2l435.2-1.6zM72 633.6c22.4 17.6 48 32 76.8 38.4 24 75.2 81.6 134.4 153.6 166.4-25.6 52.8-80 89.6-142.4 89.6-4.8 0-8-1.6-11.2-1.6 6.4-14.4 9.6-28.8 9.6-46.4 0-62.4-49.6-112-112-112-16 0-32 3.2-44.8 9.6 0-3.2-1.6-6.4-1.6-9.6 0-56 28.8-105.6 72-134.4zM259.2 64c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM387.2 0c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM515.2 96c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM643.2 0c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
+<glyph unicode="&#xe941;" glyph-name="hail-night-1" horiz-adv-x="864" d="M640 32c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32zM544 224c0 17.6-14.4 32-32 32s-32-14.4-32-32v-64c0-17.6 14.4-32 32-32s32 14.4 32 32v64zM416 224c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160zM256 96c17.6 0 32 14.4 32 32v96c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32zM864 510.4c0 104-84.8 187.2-192 190.4-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-3.2 0-8 0-11.2-1.6-1.6 0-1.6 0-3.2 0l-46.4-3.2 19.2-41.6c4.8-11.2 8-22.4 8-33.6 0-44.8-35.2-80-80-80-11.2 0-22.4 1.6-32 6.4l-41.6 19.2-3.2-44.8v-1.6c-1.6-4.8-1.6-8-1.6-11.2 0-76.8 44.8-142.4 108.8-172.8-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4zM67.2 736c3.2 0 6.4 0 11.2 0 80 0 144 64 144 144 0 4.8 0 8 0 11.2 48-11.2 84.8-49.6 96-97.6-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-57.6 3.2-104 43.2-116.8 96zM668.8 384h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-67.2-59.2-123.2-131.2-123.2zM361.6-9.6c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM489.6 86.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM640-64c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6zM256 0c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-12.8-9.6-22.4 0-8 3.2-16 9.6-22.4 6.4-4.8 14.4-9.6 22.4-9.6z" />
+<glyph unicode="&#xe942;" glyph-name="hail-night-2-f" horiz-adv-x="896" d="M480 288c-17.6 0-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96c0 17.6-14.4 32-32 32zM352 288c-17.6 0-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160c0 17.6-14.4 32-32 32zM256 0v256c0 17.6-14.4 32-32 32s-32-14.4-32-32v-166.4c-36.8 27.2-83.2 41.6-129.6 36.8-17.6-1.6-30.4-17.6-28.8-35.2s16-30.4 35.2-28.8c54.4 4.8 105.6-25.6 128-75.2 0 0 0 0 0 0 1.6-1.6 3.2-4.8 4.8-6.4 0 0 1.6-1.6 1.6-1.6 1.6-1.6 3.2-3.2 6.4-4.8 0 0 0 0 1.6 0 1.6-1.6 4.8-1.6 6.4-3.2 0 0 1.6 0 1.6 0 3.2 0 4.8-1.6 8-1.6 0 0 0 0 0 0 1.6 0 1.6 0 3.2 0s1.6 0 3.2 0c0 0 0 0 1.6 0s3.2 1.6 4.8 1.6c0 0 0 0 0 0s1.6 0 1.6 1.6c1.6 0 1.6 1.6 3.2 1.6s1.6 1.6 1.6 1.6c0 0 1.6 1.6 1.6 1.6s1.6 1.6 1.6 3.2c0 0 1.6 1.6 1.6 1.6 0 1.6 1.6 1.6 1.6 3.2s1.6 1.6 1.6 3.2c0 1.6 0 1.6 1.6 3.2 0 1.6 0 1.6 0 3.2s0 3.2 0 4.8c0-1.6 0 0 0 0v0c0 0 0 0 0 0zM769.6 126.4c-48 3.2-92.8-9.6-129.6-36.8v166.4c0 17.6-14.4 32-32 32s-32-14.4-32-32v-256c0 0 0 0 0 0v0c0 0 0-1.6 0-1.6 0-1.6 0-3.2 0-4.8s0-1.6 0-3.2 0-1.6 1.6-3.2c0-1.6 1.6-1.6 1.6-3.2s1.6-1.6 1.6-3.2c0-1.6 1.6-1.6 1.6-1.6 0-1.6 1.6-1.6 1.6-3.2 0 0 1.6-1.6 1.6-1.6s1.6-1.6 1.6-1.6c1.6 0 1.6-1.6 3.2-1.6 0 0 1.6 0 1.6-1.6 0 0 0 0 0 0 1.6 0 3.2-1.6 4.8-1.6 0 0 0 0 1.6 0s1.6 0 3.2 0 1.6 0 3.2 0v0c3.2 0 4.8 0 8 1.6 0 0 1.6 0 1.6 0 1.6 0 4.8 1.6 6.4 3.2 0 0 0 0 1.6 0 1.6 1.6 4.8 3.2 6.4 4.8 0 0 1.6 1.6 1.6 1.6 1.6 1.6 3.2 4.8 4.8 6.4 0 0 0 0 0 0 22.4 49.6 73.6 80 128 75.2 17.6-1.6 33.6 11.2 35.2 28.8 1.6 19.2-11.2 35.2-28.8 36.8zM329.6 22.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM457.6 86.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM886.4 118.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4zM636.8 668.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h436.8c89.6 0 163.2 70.4 163.2 158.4-1.6 83.2-75.2 155.2-164.8 155.2zM73.6 633.6c22.4 17.6 48 32 76.8 38.4 24 75.2 81.6 134.4 153.6 166.4-27.2 54.4-81.6 89.6-144 89.6-4.8 0-8-1.6-11.2-1.6 6.4-14.4 9.6-28.8 9.6-46.4 0-62.4-49.6-112-112-112-16 0-32 3.2-44.8 9.6 0-3.2-1.6-6.4-1.6-9.6 0-56 28.8-105.6 73.6-134.4z" />
+<glyph unicode="&#xe943;" glyph-name="hail-night-2" horiz-adv-x="928" d="M232 320h436.8c108.8 0 195.2 86.4 195.2 190.4s-84.8 187.2-192 190.4c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-3.2 0-8 0-11.2-1.6-1.6 0-1.6 0-3.2 0l-46.4-3.2 19.2-41.6c4.8-11.2 8-22.4 8-33.6 0-44.8-35.2-80-80-80-11.2 0-22.4 1.6-32 6.4l-41.6 19.2-3.2-44.8v-1.6c-1.6-4.8-1.6-8-1.6-11.2 0-76.8 44.8-142.4 108.8-172.8-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2zM451.2 768c76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 92.8 89.6 160 184 160zM67.2 737.6c3.2 0 6.4 0 11.2 0 80 0 144 64 144 144 0 4.8 0 8 0 11.2 48-11.2 84.8-49.6 96-97.6-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-57.6 3.2-102.4 41.6-116.8 96zM512 256c-17.6 0-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96c0 17.6-14.4 32-32 32zM384 256c-17.6 0-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160c0 17.6-14.4 32-32 32zM256 256c-17.6 0-32-14.4-32-32v-166.4c-36.8 27.2-83.2 41.6-129.6 36.8-17.6-1.6-30.4-17.6-28.8-35.2s17.6-30.4 35.2-28.8c54.4 4.8 105.6-25.6 128-75.2 0 0 0 0 0 0 1.6-1.6 3.2-4.8 4.8-6.4 0 0 1.6-1.6 1.6-1.6 1.6-1.6 3.2-3.2 6.4-4.8 0 0 0 0 1.6 0 1.6-1.6 4.8-1.6 6.4-3.2 0 0 1.6 0 1.6 0 3.2 0 4.8-1.6 8-1.6 0 0 0 0 0 0 1.6 0 1.6 0 3.2 0s1.6 0 3.2 0c0 0 0 0 0 0 1.6 0 3.2 1.6 4.8 1.6 0 0 0 0 0 0s1.6 0 1.6 1.6c1.6 0 1.6 1.6 3.2 1.6s1.6 1.6 1.6 1.6c0 0 1.6 1.6 1.6 1.6s1.6 1.6 1.6 3.2c0 0 1.6 1.6 1.6 1.6 0 1.6 1.6 1.6 1.6 3.2s1.6 1.6 1.6 3.2c0 1.6 0 1.6 1.6 3.2 0 1.6 0 1.6 1.6 3.2 0 1.6 0 3.2 0 3.2s0 1.6 0 1.6v256c0 17.6-14.4 32-32 32zM801.6 94.4c-48 4.8-92.8-9.6-129.6-36.8v166.4c0 17.6-14.4 32-32 32s-32-14.4-32-32v-256c0 0 0-1.6 0-1.6 0-1.6 0-3.2 0-3.2 0-1.6 0-1.6 1.6-3.2 0-1.6 0-1.6 1.6-3.2 0-1.6 1.6-1.6 1.6-3.2s1.6-1.6 1.6-3.2c0-1.6 1.6-1.6 1.6-1.6 0-1.6 1.6-1.6 1.6-3.2 0 0 1.6-1.6 1.6-1.6s1.6-1.6 1.6-1.6c1.6 0 1.6-1.6 3.2-1.6 0 0 1.6 0 1.6-1.6 0 0 0 0 0 0 1.6 0 3.2-1.6 4.8-1.6 0 0 0 0 1.6 0 0 0 1.6 0 1.6 0 1.6 0 3.2 0 4.8 0 0 0 0 0 0 0 3.2 0 4.8 0 8 1.6 0 0 1.6 0 1.6 0 1.6 0 4.8 1.6 6.4 3.2 0 0 0 0 1.6 0 1.6 1.6 4.8 3.2 6.4 4.8 0 0 1.6 1.6 1.6 1.6 1.6 1.6 3.2 4.8 4.8 6.4 0 0 0 0 0 0 22.4 49.6 73.6 80 128 75.2 17.6-1.6 33.6 11.2 35.2 28.8s-12.8 33.6-30.4 35.2zM361.6-9.6c-6.4-4.8-9.6-12.8-9.6-22.4 0-8 3.2-16 9.6-22.4s14.4-9.6 22.4-9.6c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 12.8-33.6 12.8-44.8 0zM489.6 54.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 12.8-33.6 12.8-44.8 0zM873.6 86.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 12.8-33.6 12.8-44.8 0z" />
+<glyph unicode="&#xe944;" glyph-name="heavy-hail-day-f" horiz-adv-x="960" d="M328 118.4l17.6 20.8c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-17.6-20.8c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 20.8-6.4s17.6 4.8 24 11.2zM500.8 185.6c-14.4 11.2-33.6 9.6-44.8-4.8l-94.4-118.4c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l94.4 118.4c11.2 11.2 8 32-4.8 43.2zM648 118.4l16 20.8c11.2 14.4 8 33.6-4.8 44.8-14.4 11.2-33.6 9.6-44.8-4.8l-16-20.8c-11.2-14.4-8-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 11.2zM820.8 185.6c-14.4 11.2-33.6 9.6-44.8-4.8l-94.4-118.4c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l94.4 118.4c11.2 11.2 8 32-4.8 43.2zM224 91.2c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-32 12.8-44.8 0zM304-9.6c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM544 91.2c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 17.6-9.6 22.4c-11.2 12.8-32 12.8-44.8 0zM624-9.6c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM352 816c17.6 0 32 14.4 32 32v80c0 17.6-14.4 32-32 32s-32-14.4-32-32v-80c0-17.6 14.4-32 32-32zM144 608c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32s14.4-32 32-32h80c17.6 0 32 14.4 32 32zM164.8 750.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-51.2 52.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l51.2-52.8zM516.8 740.8c8 0 16 3.2 22.4 9.6l52.8 51.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-4.8 14.4-8 22.4-8zM209.6 465.6c-12.8 12.8-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l52.8 52.8c12.8 11.2 12.8 32 0 44.8zM800 576c-32 75.2-105.6 128-192 128-110.4 0-200-84.8-208-193.6-4.8 1.6-9.6 1.6-16 1.6-70.4 0-128-57.6-128-128s57.6-128 128-128h416c88 0 160 72 160 160s-72 160-160 160zM232 502.4c28.8 35.2 68.8 62.4 115.2 70.4 19.2 64 59.2 116.8 113.6 152-28.8 27.2-67.2 43.2-108.8 43.2-88 0-160-72-160-160 0-41.6 16-78.4 40-105.6z" />
+<glyph unicode="&#xe945;" glyph-name="heavy-hail-day" horiz-adv-x="992" d="M320 928v-64c0-17.6 14.4-32 32-32s32 14.4 32 32v64c0 17.6-14.4 32-32 32s-32-14.4-32-32zM32 640c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32h-64zM112 801.6l36.8-36.8c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-35.2 38.4c-12.8 12.8-32 12.8-44.8 0-14.4-12.8-14.4-33.6-1.6-46.4zM547.2 848l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 35.2c12.8 12.8 12.8 32 0 44.8s-33.6 12.8-44.8 1.6zM112 368c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 36.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-36.8-36.8c-12.8-11.2-12.8-32 0-44.8zM992 416c0 99.2-75.2 180.8-171.2 190.4-40 80-121.6 129.6-212.8 129.6-35.2 0-67.2-8-97.6-20.8-35.2 52.8-94.4 84.8-158.4 84.8-105.6 0-192-86.4-192-192 0-62.4 30.4-120 80-155.2-9.6-20.8-16-43.2-16-68.8 0-88 72-160 160-160h416c105.6 0 192 86.4 192 192zM224 608c0 70.4 57.6 128 128 128 41.6 0 80-20.8 104-54.4-41.6-33.6-72-83.2-83.2-137.6-36.8-3.2-68.8-17.6-96-40-32 24-52.8 62.4-52.8 104zM800 288h-416c-52.8 0-96 43.2-96 96s43.2 96 96 96c3.2 0 6.4 0 9.6-1.6l36.8-4.8 1.6 33.6c8 92.8 84.8 164.8 176 164.8 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128s-57.6-128-128-128zM340.8 185.6c-14.4 11.2-33.6 9.6-44.8-4.8l-17.6-20.8c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 20.8-6.4 9.6 0 19.2 4.8 25.6 11.2l17.6 20.8c9.6 12.8 6.4 33.6-6.4 44.8zM364.8 17.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l94.4 118.4c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-94.4-118.4c-11.2-16-8-36.8 4.8-46.4zM660.8 185.6c-14.4 11.2-33.6 8-44.8-4.8l-16-20.8c-11.2-14.4-8-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l16 20.8c11.2 11.2 8 32-4.8 43.2zM684.8 17.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l94.4 118.4c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-94.4-118.4c-11.2-16-8-36.8 4.8-46.4zM224 91.2c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-32 12.8-44.8 0zM304-9.6c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4 14.4-9.6 22.4-9.6c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-11.2 12.8-33.6 12.8-44.8 0zM544 91.2c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-32 12.8-44.8 0zM624-9.6c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4 14.4-9.6 22.4-9.6c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0z" />
+<glyph unicode="&#xe946;" glyph-name="heavy-hail-f" horiz-adv-x="960" d="M752 768c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h574.4c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208zM136 172.8c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l40 51.2c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-41.6-49.6c-6.4-8-14.4-12.8-24-12.8zM222.4 43.2c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l145.6 180.8c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-145.6-180.8c-6.4-8-16-11.2-25.6-11.2zM520 174.4c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l40 49.6c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-40-49.6c-6.4-6.4-16-11.2-25.6-11.2zM606.4 43.2c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l145.6 180.8c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-145.6-180.8c-6.4-8-16-11.2-25.6-11.2zM73.6 96c-8 0-16 3.2-22.4 9.6s-9.6 14.4-9.6 22.4c0 8 3.2 16 9.6 22.4 11.2 12.8 33.6 12.8 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6zM163.2-32c-8 0-16 3.2-22.4 9.6s-9.6 14.4-9.6 22.4c0 8 3.2 16 9.6 22.4 12.8 11.2 33.6 11.2 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6zM457.6 96c-8 0-16 3.2-22.4 9.6s-9.6 14.4-9.6 22.4c0 8 3.2 16 9.6 22.4 12.8 12.8 33.6 12.8 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6zM547.2-32c-8 0-16 3.2-22.4 9.6s-9.6 14.4-9.6 22.4c0 8 3.2 16 9.6 22.4 12.8 11.2 33.6 11.2 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6z" />
+<glyph unicode="&#xe947;" glyph-name="heavy-hail-full-moon-f" horiz-adv-x="800" d="M120 172.8c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l40 51.2c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-30.4 4.8-44.8l-41.6-49.6c-6.4-8-14.4-12.8-24-12.8zM174.4 43.2c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l145.6 180.8c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-145.6-180.8c-6.4-8-16-11.2-25.6-11.2zM440 174.4c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l40 49.6c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-40-49.6c-6.4-6.4-16-11.2-25.6-11.2zM494.4 43.2c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l145.6 180.8c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-145.6-180.8c-6.4-8-16-11.2-25.6-11.2zM57.6 96c-8 0-16 3.2-22.4 9.6s-9.6 14.4-9.6 22.4c0 8 3.2 16 9.6 22.4 11.2 12.8 33.6 11.2 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6zM115.2-32c-8 0-16 3.2-22.4 9.6s-9.6 14.4-9.6 22.4c0 8 3.2 16 9.6 22.4 11.2 12.8 33.6 12.8 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6zM377.6 96c-8 0-16 3.2-22.4 9.6s-9.6 14.4-9.6 22.4c0 8 3.2 16 9.6 22.4 11.2 11.2 33.6 11.2 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6zM435.2-32c-8 0-16 3.2-22.4 9.6s-9.6 14.4-9.6 22.4c0 8 3.2 16 9.6 22.4 11.2 12.8 33.6 12.8 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6zM636.8 668.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h436.8c89.6 0 163.2 70.4 163.2 158.4-1.6 83.2-75.2 155.2-164.8 155.2zM150.4 673.6c24 75.2 81.6 134.4 153.6 166.4-27.2 51.2-81.6 88-144 88-88 0-160-72-160-160 0-56 28.8-105.6 72-134.4 22.4 19.2 49.6 32 78.4 40z" />
+<glyph unicode="&#xe948;" glyph-name="heavy-hail-full-moon" horiz-adv-x="864" d="M211.2 249.6c-14.4 11.2-33.6 9.6-44.8-4.8l-40-51.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l40 51.2c12.8 11.2 9.6 32-4.8 43.2zM371.2 249.6c-14.4 11.2-33.6 9.6-44.8-4.8l-145.6-180.8c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l145.6 180.8c12.8 11.2 9.6 32-4.8 43.2zM531.2 249.6c-14.4 11.2-33.6 9.6-44.8-4.8l-38.4-49.6c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l40 49.6c11.2 11.2 8 32-6.4 43.2zM507.2 17.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l145.6 180.8c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-145.6-180.8c-11.2-16-9.6-35.2 4.8-46.4zM67.2 118.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6 9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-11.2 12.8-33.6 12.8-44.8 0zM124.8-9.6c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM387.2 118.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM444.8-9.6c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM672 700.8c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-105.6 0-192-86.4-192-192 0-76.8 44.8-142.4 108.8-172.8-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4s-84.8 187.2-192 190.4zM64 768c0 70.4 57.6 128 128 128 60.8 0 113.6-43.2 124.8-102.4-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-65.6 4.8-118.4 59.2-118.4 128zM668.8 384h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-65.6-59.2-123.2-131.2-123.2z" />
+<glyph unicode="&#xe949;" glyph-name="heavy-hail-night-f" horiz-adv-x="800" d="M120 172.8c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 32-4.8 44.8l40 51.2c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-30.4 4.8-44.8l-41.6-49.6c-6.4-8-16-12.8-24-12.8zM174.4 43.2c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l145.6 180.8c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-145.6-180.8c-6.4-8-16-11.2-25.6-11.2zM440 174.4c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l40 49.6c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-30.4 4.8-44.8l-40-49.6c-6.4-6.4-16-11.2-25.6-11.2zM494.4 43.2c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l145.6 180.8c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-145.6-180.8c-6.4-8-16-11.2-25.6-11.2zM57.6 96c-8 0-16 3.2-22.4 9.6s-9.6 14.4-9.6 22.4c0 8 3.2 16 9.6 22.4 12.8 11.2 33.6 11.2 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6zM115.2-32c-8 0-16 3.2-22.4 9.6s-9.6 14.4-9.6 22.4c0 8 3.2 16 9.6 22.4 12.8 12.8 33.6 12.8 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6zM377.6 96c-8 0-16 3.2-22.4 9.6s-9.6 14.4-9.6 22.4c0 8 3.2 16 9.6 22.4 12.8 12.8 33.6 11.2 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6zM435.2-32c-8 0-17.6 3.2-22.4 9.6-6.4 6.4-9.6 14.4-9.6 22.4s3.2 16 9.6 22.4c11.2 12.8 33.6 12.8 44.8 0 6.4-6.4 9.6-14.4 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-14.4-9.6-22.4-9.6zM636.8 352c89.6 0 163.2 70.4 163.2 158.4s-73.6 158.4-163.2 158.4c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2l435.2-3.2zM72 633.6c22.4 17.6 48 32 76.8 38.4 24 75.2 81.6 134.4 153.6 166.4-25.6 54.4-80 89.6-142.4 89.6-4.8 0-8-1.6-11.2-1.6 6.4-14.4 9.6-28.8 9.6-46.4 0-62.4-49.6-112-112-112-16 0-32 3.2-44.8 9.6 0-3.2-1.6-6.4-1.6-9.6 0-56 28.8-105.6 72-134.4z" />
+<glyph unicode="&#xe94a;" glyph-name="heavy-hail-night" horiz-adv-x="864" d="M131.2 148.8c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 11.2l40 51.2c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-40-51.2c-11.2-14.4-8-33.6 4.8-44.8zM371.2 249.6c-14.4 11.2-33.6 9.6-44.8-4.8l-145.6-180.8c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l145.6 180.8c11.2 11.2 9.6 32-4.8 43.2zM452.8 150.4c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l40 49.6c11.2 14.4 8 33.6-4.8 44.8-14.4 11.2-33.6 9.6-44.8-4.8l-40-51.2c-11.2-14.4-9.6-33.6 4.8-44.8zM691.2 249.6c-14.4 11.2-33.6 9.6-44.8-4.8l-145.6-180.8c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l145.6 180.8c11.2 11.2 9.6 32-4.8 43.2zM67.2 118.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 11.2-33.6 12.8-44.8 0zM179.2-32c0 8-3.2 16-9.6 22.4-11.2 12.8-33.6 12.8-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4zM409.6 64c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c4.8-6.4 14.4-9.6 22.4-9.6zM467.2-64c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4-3.2 16-9.6 22.4c-12.8 12.8-33.6 12.8-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c4.8-6.4 14.4-9.6 22.4-9.6zM864 510.4c0 104-84.8 187.2-192 190.4-43.2 80-128 131.2-222.4 131.2-25.6 0-49.6-3.2-73.6-11.2-22.4 80-96 139.2-184 139.2-3.2 0-8 0-11.2-1.6-1.6 0-1.6 0-3.2 0l-46.4-3.2 19.2-41.6c4.8-11.2 8-22.4 8-33.6 0-44.8-35.2-80-80-80-11.2 0-22.4 1.6-32 6.4l-41.6 19.2-3.2-44.8v-1.6c-1.6-4.8-1.6-8-1.6-11.2 0-76.8 44.8-142.4 108.8-172.8-27.2-28.8-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4zM67.2 737.6c3.2 0 6.4 0 11.2 0 80 0 144 64 144 144 0 4.8 0 8 0 12.8 48-11.2 84.8-49.6 96-97.6-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-57.6 1.6-104 40-116.8 94.4zM668.8 384h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-65.6-59.2-123.2-131.2-123.2z" />
+<glyph unicode="&#xe94b;" glyph-name="heavy-hail" d="M795.2 800c-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h576c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM784 384h-576c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176-1.6-97.6-80-176-177.6-176zM211.2 249.6c-14.4 11.2-33.6 8-44.8-4.8l-40-51.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-8 20.8-8 9.6 0 19.2 4.8 25.6 12.8l40 51.2c9.6 12.8 8 33.6-6.4 44.8zM403.2 249.6c-14.4 11.2-33.6 9.6-44.8-4.8l-145.6-180.8c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l145.6 180.8c11.2 11.2 9.6 32-4.8 43.2zM595.2 249.6c-14.4 11.2-33.6 8-44.8-4.8l-38.4-49.6c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l40 49.6c11.2 11.2 8 32-6.4 43.2zM648 22.4l145.6 180.8c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-145.6-180.8c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 3.2 25.6 11.2zM67.2 118.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM179.2-64c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-11.2 11.2-33.6 11.2-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6zM451.2 118.4c-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM585.6-54.4c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 11.2-33.6 11.2-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6z" />
+<glyph unicode="&#xe94c;" glyph-name="heavy-rain-1-f" horiz-adv-x="960" d="M752 768c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h574.4c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208zM73.6 96c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l102.4 128c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-102.4-128c-6.4-6.4-16-11.2-25.6-11.2zM163.2-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l204.8 256c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-204.8-256c-6.4-6.4-16-11.2-25.6-11.2zM457.6 96c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l102.4 128c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-102.4-128c-6.4-6.4-16-11.2-25.6-11.2zM547.2-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l204.8 256c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-204.8-256c-6.4-6.4-16-11.2-25.6-11.2z" />
+<glyph unicode="&#xe94d;" glyph-name="heavy-rain-1" d="M795.2 800c-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h576c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM784 384h-576c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176-1.6-97.6-80-176-177.6-176zM211.2 249.6c-14.4 11.2-33.6 8-44.8-4.8l-102.4-128c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-6.4 14.4-8 20.8-8 9.6 0 19.2 4.8 25.6 12.8l102.4 128c9.6 12.8 8 33.6-6.4 44.8zM158.4-57.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l204.8 256c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-204.8-256c-11.2-14.4-8-35.2 4.8-46.4zM595.2 249.6c-14.4 11.2-33.6 8-44.8-4.8l-102.4-128c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l102.4 128c12.8 11.2 9.6 32-4.8 43.2zM542.4-57.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l204.8 256c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-204.8-256c-11.2-14.4-8-35.2 4.8-46.4z" />
+<glyph unicode="&#xe94e;" glyph-name="heavy-rain-2-f" horiz-adv-x="992" d="M771.2 768c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h574.4c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208zM35.2 24c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l32 40c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-32-40c-6.4-6.4-16-11.2-25.6-11.2zM139.2 153.6c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l56 70.4c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-56-70.4c-8-8-17.6-11.2-25.6-11.2zM182.4-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l25.6 32c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-25.6-32c-6.4-6.4-16-11.2-25.6-11.2zM284.8 96c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l102.4 128c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-102.4-128c-6.4-6.4-16-11.2-25.6-11.2zM419.2 24c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l59.2 73.6c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-59.2-73.6c-6.4-6.4-16-11.2-25.6-11.2zM553.6 192c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l25.6 32c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-25.6-32c-6.4-6.4-16-11.2-25.6-11.2zM566.4-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l67.2 83.2c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-67.2-83.2c-6.4-6.4-16-11.2-25.6-11.2zM708.8 145.6c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l62.4 78.4c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-62.4-78.4c-6.4-6.4-16-11.2-25.6-11.2z" />
+<glyph unicode="&#xe94f;" glyph-name="heavy-rain-2" d="M795.2 800c-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h576c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM784 384h-576c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176-1.6-97.6-80-176-177.6-176zM57.6 4.8l32 40c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-32-40c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6-1.6 19.2 3.2 25.6 11.2zM211.2 249.6c-14.4 11.2-33.6 8-44.8-4.8l-56-70.4c-11.2-14.4-9.6-35.2 4.8-46.4 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l56 70.4c11.2 12.8 9.6 33.6-4.8 44.8zM224 25.6c-14.4 11.2-33.6 8-44.8-4.8l-25.6-32c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l25.6 32c11.2 11.2 9.6 32-4.8 43.2zM403.2 249.6c-14.4 11.2-33.6 9.6-44.8-4.8l-102.4-128c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l102.4 128c11.2 11.2 9.6 32-4.8 43.2zM441.6 4.8l59.2 73.6c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 8-44.8-4.8l-59.2-73.6c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6-1.6 19.2 3.2 25.6 11.2zM595.2 249.6c-14.4 11.2-33.6 9.6-44.8-4.8l-25.6-32c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l25.6 32c11.2 11.2 9.6 32-4.8 43.2zM542.4-57.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l67.2 83.2c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-67.2-83.2c-11.2-14.4-8-35.2 4.8-46.4zM705.6 113.6c9.6 0 19.2 4.8 25.6 12.8l62.4 78.4c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-62.4-78.4c-11.2-14.4-9.6-33.6 4.8-44.8 4.8-4.8 12.8-8 19.2-8z" />
+<glyph unicode="&#xe950;" glyph-name="heavy-rain-day-f" horiz-adv-x="960" d="M339.2 185.6c-14.4 11.2-33.6 9.6-44.8-4.8l-72-91.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l72 91.2c12.8 11.2 9.6 32-4.8 43.2zM499.2 185.6c-14.4 11.2-33.6 9.6-44.8-4.8l-153.6-192c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l153.6 192c12.8 11.2 9.6 32-4.8 43.2zM659.2 185.6c-14.4 11.2-33.6 9.6-44.8-4.8l-72-91.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l72 91.2c12.8 11.2 9.6 32-4.8 43.2zM819.2 185.6c-14.4 11.2-33.6 9.6-44.8-4.8l-153.6-192c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l153.6 192c12.8 11.2 9.6 32-4.8 43.2zM352 816c17.6 0 32 14.4 32 32v80c0 17.6-14.4 32-32 32s-32-14.4-32-32v-80c0-17.6 14.4-32 32-32zM144 608c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32s14.4-32 32-32h80c17.6 0 32 14.4 32 32zM164.8 750.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-51.2 52.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l51.2-52.8zM516.8 740.8c8 0 16 3.2 22.4 9.6l52.8 51.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-4.8 14.4-8 22.4-8zM209.6 465.6c-12.8 12.8-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l52.8 52.8c12.8 11.2 12.8 32 0 44.8zM800 576c-32 75.2-105.6 128-192 128-110.4 0-200-84.8-208-193.6-4.8 1.6-9.6 1.6-16 1.6-70.4 0-128-57.6-128-128s57.6-128 128-128h416c88 0 160 72 160 160s-72 160-160 160zM232 502.4c28.8 35.2 68.8 62.4 115.2 70.4 19.2 64 59.2 116.8 113.6 152-28.8 27.2-67.2 43.2-108.8 43.2-88 0-160-72-160-160 0-41.6 16-78.4 40-105.6z" />
+<glyph unicode="&#xe951;" glyph-name="heavy-rain-day" horiz-adv-x="992" d="M320 928v-64c0-17.6 14.4-32 32-32s32 14.4 32 32v64c0 17.6-14.4 32-32 32s-32-14.4-32-32zM32 576h64c17.6 0 32 14.4 32 32s-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32zM112 801.6l36.8-36.8c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-35.2 38.4c-12.8 12.8-32 12.8-44.8 0-14.4-12.8-14.4-33.6-1.6-46.4zM547.2 848l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 35.2c12.8 12.8 12.8 32 0 44.8s-33.6 12.8-44.8 1.6zM148.8 449.6l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 36.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM820.8 606.4c-40 80-121.6 129.6-212.8 129.6-35.2 0-67.2-8-97.6-20.8-35.2 52.8-94.4 84.8-158.4 84.8-105.6 0-192-86.4-192-192 0-62.4 30.4-120 80-155.2-9.6-20.8-16-43.2-16-68.8 0-88 72-160 160-160h416c105.6 0 192 86.4 192 192 0 99.2-75.2 180.8-171.2 190.4zM224 608c0 70.4 57.6 128 128 128 41.6 0 80-20.8 104-54.4-41.6-33.6-72-83.2-83.2-137.6-36.8-3.2-68.8-17.6-96-40-32 24-52.8 62.4-52.8 104zM800 288h-416c-52.8 0-96 43.2-96 96s43.2 96 96 96c3.2 0 6.4 0 9.6-1.6l36.8-4.8 1.6 33.6c8 92.8 84.8 164.8 176 164.8 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128s-57.6-128-128-128zM340.8 185.6c-14.4 11.2-33.6 9.6-44.8-4.8l-72-91.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l72 91.2c11.2 11.2 8 32-4.8 43.2zM305.6-57.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l153.6 192c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-153.6-192c-11.2-14.4-8-35.2 4.8-46.4zM660.8 185.6c-14.4 11.2-33.6 9.6-44.8-4.8l-72-91.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l72 91.2c11.2 11.2 8 32-4.8 43.2zM625.6-57.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l153.6 192c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-153.6-192c-11.2-14.4-8-35.2 4.8-46.4z" />
+<glyph unicode="&#xe952;" glyph-name="heavy-rain-full-moon-f" horiz-adv-x="800" d="M59.2 96c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l102.4 128c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-102.4-128c-6.4-6.4-16-11.2-25.6-11.2zM116.8-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l204.8 256c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-204.8-256c-6.4-6.4-16-11.2-25.6-11.2zM379.2 96c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l102.4 128c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-102.4-128c-6.4-6.4-16-11.2-25.6-11.2zM436.8-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l204.8 256c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-204.8-256c-6.4-6.4-16-11.2-25.6-11.2zM636.8 668.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h436.8c89.6 0 163.2 70.4 163.2 158.4-1.6 83.2-75.2 155.2-164.8 155.2zM150.4 673.6c24 75.2 81.6 134.4 153.6 166.4-27.2 51.2-81.6 88-144 88-88 0-160-72-160-160 0-56 28.8-105.6 72-134.4 22.4 19.2 49.6 32 78.4 40z" />
+<glyph unicode="&#xe953;" glyph-name="heavy-rain-full-moon" horiz-adv-x="864" d="M216 249.6c-14.4 11.2-33.6 9.6-44.8-4.8l-102.4-128c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l102.4 128c11.2 11.2 8 32-4.8 43.2zM129.6-57.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l204.8 256c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-204.8-256c-11.2-14.4-8-35.2 4.8-46.4zM392 70.4c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l102.4 128c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-102.4-128c-11.2-14.4-8-35.2 4.8-46.4zM449.6-57.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l204.8 256c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-204.8-256c-11.2-14.4-8-35.2 4.8-46.4zM0 768c0-76.8 44.8-142.4 108.8-172.8-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4s-84.8 187.2-192 190.4c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-105.6 0-192-86.4-192-192zM449.6 768c76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 92.8 91.2 160 184 160zM192 896c60.8 0 113.6-43.2 124.8-102.4-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-65.6 4.8-118.4 59.2-118.4 128 0 70.4 57.6 128 128 128z" />
+<glyph unicode="&#xe954;" glyph-name="heavy-rain-night-f" horiz-adv-x="800" d="M60.8 96c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l102.4 128c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-102.4-128c-6.4-6.4-16-11.2-25.6-11.2zM118.4-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l204.8 256c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-204.8-256c-6.4-6.4-16-11.2-25.6-11.2zM380.8 96c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l102.4 128c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-102.4-128c-6.4-6.4-16-11.2-25.6-11.2zM438.4-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l204.8 256c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-204.8-256c-6.4-6.4-16-11.2-25.6-11.2zM636.8 352c89.6 0 163.2 70.4 163.2 158.4s-73.6 158.4-163.2 158.4c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2l435.2-3.2zM72 633.6c22.4 17.6 48 32 76.8 38.4 24 75.2 81.6 134.4 153.6 166.4-25.6 54.4-80 89.6-142.4 89.6-4.8 0-8-1.6-11.2-1.6 6.4-14.4 9.6-28.8 9.6-46.4 0-62.4-49.6-112-112-112-16 0-32 3.2-44.8 9.6 0-3.2-1.6-6.4-1.6-9.6 0-56 28.8-105.6 72-134.4z" />
+<glyph unicode="&#xe955;" glyph-name="heavy-rain-night" horiz-adv-x="864" d="M72 70.4c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l102.4 128c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-102.4-128c-11.2-14.4-8-35.2 4.8-46.4zM129.6-57.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l204.8 256c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-204.8-256c-11.2-14.4-8-35.2 4.8-46.4zM392 70.4c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l102.4 128c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-102.4-128c-11.2-14.4-8-35.2 4.8-46.4zM449.6-57.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l204.8 256c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-204.8-256c-11.2-14.4-8-35.2 4.8-46.4zM108.8 595.2c-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4s-84.8 187.2-192 190.4c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-3.2-73.6-11.2-22.4 80-96 139.2-184 139.2-3.2 0-8 0-11.2-1.6-1.6 0-1.6 0-3.2 0l-46.4-3.2 19.2-41.6c4.8-11.2 8-22.4 8-33.6 0-44.8-35.2-80-80-80-11.2 0-22.4 1.6-32 6.4l-41.6 19.2-3.2-44.8v-1.6c-1.6-4.8-1.6-8-1.6-11.2 0-76.8 44.8-142.4 108.8-172.8zM449.6 768c76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 92.8 91.2 160 184 160zM78.4 736c80 0 144 64 144 144 0 4.8 0 8 0 11.2 48-11.2 84.8-49.6 96-97.6-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-57.6 3.2-102.4 43.2-115.2 96 1.6 0 6.4 0 9.6 0z" />
+<glyph unicode="&#xe956;" glyph-name="mist" d="M32 416h960c17.6 0 32 14.4 32 32s-14.4 32-32 32h-960c-17.6 0-32-14.4-32-32s14.4-32 32-32zM64 576c0-17.6 14.4-32 32-32h768c17.6 0 32 14.4 32 32s-14.4 32-32 32h-768c-17.6 0-32-14.4-32-32zM128 192c0-17.6 14.4-32 32-32h768c17.6 0 32 14.4 32 32s-14.4 32-32 32h-768c-17.6 0-32-14.4-32-32zM64 672h352c17.6 0 32 14.4 32 32s-14.4 32-32 32h-352c-17.6 0-32-14.4-32-32s14.4-32 32-32zM736 672c17.6 0 32 14.4 32 32s-14.4 32-32 32h-192c-17.6 0-32-14.4-32-32s14.4-32 32-32h192zM896 704c0-17.6 14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32zM864 288c17.6 0 32 14.4 32 32s-14.4 32-32 32h-352c-17.6 0-32-14.4-32-32s14.4-32 32-32h352zM192 288h192c17.6 0 32 14.4 32 32s-14.4 32-32 32h-192c-17.6 0-32-14.4-32-32s14.4-32 32-32z" />
+<glyph unicode="&#xe957;" glyph-name="mix-rainfall-1-f" horiz-adv-x="960" d="M452.8 256l118.4 147.2c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-203.2-251.2h128l-112-139.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l196.8 241.6h-128zM753.6 768c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h187.2l105.6 132.8c17.6 22.4 46.4 36.8 75.2 36.8 22.4 0 43.2-8 59.2-20.8 20.8-16 32-38.4 35.2-64s-4.8-51.2-20.8-70.4l-8-14.4h140.8c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208zM100.8 81.6c-14.4 11.2-33.6 9.6-44.8-4.8l-44.8-56c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-6.4 12.8-8 20.8-8 9.6 0 19.2 4.8 25.6 12.8l44.8 56c9.6 12.8 8 33.6-6.4 44.8zM260.8 281.6c-14.4 11.2-33.6 9.6-44.8-4.8l-94.4-118.4c-11.2-14.4-8-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l94.4 118.4c11.2 11.2 9.6 32-4.8 43.2zM676.8 160c-14.4 11.2-33.6 9.6-44.8-4.8l-108.8-136c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l108.8 136c11.2 12.8 9.6 32-4.8 43.2zM774.4 281.6c-14.4 11.2-33.6 8-44.8-4.8l-25.6-32c-11.2-14.4-8-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l25.6 32c11.2 11.2 8 32-4.8 43.2z" />
+<glyph unicode="&#xe958;" glyph-name="mix-rainfall-1" d="M795.2 800c-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h144c17.6 0 32 14.4 32 32s-14.4 32-32 32h-144c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176s-78.4-176-174.4-176h-115.2c-17.6 0-32-14.4-32-32s14.4-32 32-32h112c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM115.2 49.6c-14.4 11.2-33.6 9.6-44.8-4.8l-44.8-56c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-6.4 12.8-8 20.8-8 9.6 0 19.2 4.8 25.6 12.8l44.8 56c9.6 12.8 8 33.6-6.4 44.8zM161.6 73.6c9.6 0 19.2 4.8 25.6 12.8l94.4 118.4c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-94.4-118.4c-12.8-14.4-9.6-33.6 3.2-44.8 6.4-4.8 14.4-8 20.8-8zM596.8 449.6c-14.4 11.2-33.6 9.6-44.8-4.8l-203.2-252.8h128l-112-139.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l196.8 241.6h-128l118.4 147.2c11.2 14.4 8 35.2-4.8 46.4zM691.2 128c-14.4 11.2-33.6 9.6-44.8-4.8l-108.8-136c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l108.8 136c11.2 12.8 9.6 32-4.8 43.2zM742.4 160c9.6 0 19.2 4.8 25.6 12.8l25.6 32c11.2 14.4 8 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-25.6-32c-11.2-14.4-8-33.6 4.8-44.8 4.8-6.4 12.8-8 19.2-8z" />
+<glyph unicode="&#xe959;" glyph-name="mix-rainfall-2-f" horiz-adv-x="960" d="M569.6 387.2c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-203.2-251.2h128l-112-139.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l196.8 241.6h-128l118.4 147.2zM752 752c-3.2 0-4.8 0-8 0-43.2 92.8-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-80-176-176 0-97.6 78.4-176 176-176h187.2l105.6 132.8c17.6 22.4 46.4 36.8 75.2 36.8 22.4 0 43.2-8 59.2-20.8 20.8-16 32-38.4 35.2-64s-4.8-51.2-20.8-70.4l-8-14.4h140.8c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208zM244.8 265.6c-14.4 11.2-33.6 8-44.8-4.8l-102.4-128c-11.2-14.4-8-33.6 4.8-44.8 6.4-6.4 12.8-8 20.8-8 9.6 0 19.2 4.8 25.6 12.8l102.4 128c9.6 12.8 6.4 33.6-6.4 44.8zM756.8 265.6c-14.4 11.2-33.6 9.6-44.8-4.8l-102.4-126.4c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l102.4 126.4c11.2 11.2 8 32-4.8 43.2z" />
+<glyph unicode="&#xe95a;" glyph-name="mix-rainfall-2" d="M795.2 766.4c-51.2 99.2-155.2 161.6-267.2 161.6-137.6 0-259.2-96-292.8-225.6-9.6 0-17.6 1.6-27.2 1.6-115.2 0-208-94.4-208-208s92.8-208 208-208h144c17.6 0 32 14.4 32 32s-14.4 32-32 32h-144c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176s-78.4-176-174.4-176h-115.2c-17.6 0-32-14.4-32-32s14.4-32 32-32h112c132.8 0 240 107.2 240 240 0 128-100.8 232-228.8 238.4zM134.4 38.4c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l102.4 128c11.2 14.4 8 33.6-4.8 44.8-14.4 11.2-33.6 8-44.8-4.8l-102.4-128c-11.2-16-9.6-35.2 4.8-46.4zM595.2 416c-14.4 11.2-33.6 9.6-44.8-4.8l-201.6-251.2h128l-112-139.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 11.2l196.8 243.2h-128l118.4 147.2c11.2 14.4 8 33.6-6.4 44.8zM665.6 32c9.6 0 19.2 4.8 25.6 12.8l102.4 126.4c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-102.4-126.4c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-8 19.2-8z" />
+<glyph unicode="&#xe95b;" glyph-name="moon-1-f" horiz-adv-x="640" d="M350.4 769.6c20.8-38.4 32-81.6 32-126.4 0-148.8-120-268.8-268.8-268.8-40 0-80 9.6-113.6 25.6 24-153.6 156.8-272 318.4-272 177.6 0 321.6 144 321.6 321.6 0 166.4-126.4 304-289.6 320z" />
+<glyph unicode="&#xe95c;" glyph-name="moon-1" horiz-adv-x="720" d="M712 446.4c0 182.4-137.6 334.4-318.4 352l-59.2 6.4 28.8-52.8c19.2-33.6 28.8-73.6 28.8-112 0-129.6-105.6-236.8-236.8-236.8-35.2 0-68.8 8-100.8 22.4l-54.4 25.6 9.6-59.2c25.6-174.4 172.8-300.8 347.2-300.8 195.2 0 355.2 160 355.2 355.2zM356.8 155.2c-124.8 0-232 78.4-272 190.4 22.4-4.8 44.8-8 68.8-8 166.4 0 300.8 134.4 300.8 300.8 0 28.8-4.8 57.6-12.8 84.8 120-35.2 206.4-147.2 206.4-276.8 0-160-131.2-291.2-291.2-291.2z" />
+<glyph unicode="&#xe95d;" glyph-name="moon-2-f" horiz-adv-x="960" d="M521.6 926.4c30.4-56 48-121.6 48-188.8 0-220.8-179.2-400-400-400-60.8 0-118.4 14.4-169.6 38.4 35.2-230.4 233.6-406.4 473.6-406.4 265.6 0 480 214.4 480 480 0 248-188.8 452.8-432 476.8z" />
+<glyph unicode="&#xe95e;" glyph-name="moon-2" d="M513.6-64c281.6 0 510.4 228.8 510.4 510.4 0 264-198.4 481.6-459.2 507.2l-59.2 6.4 28.8-52.8c28.8-52.8 43.2-113.6 43.2-174.4 0-201.6-164.8-366.4-366.4-366.4-54.4 0-105.6 11.2-155.2 35.2l-56 25.6 9.6-59.2c38.4-249.6 251.2-432 504-432zM209.6 302.4c238.4 0 432 193.6 432 430.4 0 51.2-9.6 100.8-25.6 147.2 198.4-44.8 344-222.4 344-433.6 0-246.4-200-446.4-446.4-446.4-203.2 0-374.4 132.8-428.8 321.6 40-12.8 83.2-19.2 124.8-19.2z" />
+<glyph unicode="&#xe95f;" glyph-name="moon-3-f" horiz-adv-x="512" d="M361.6 448c0 108.8 54.4 206.4 139.2 264-51.2 35.2-113.6 56-180.8 56-176 0-320-144-320-320s144-320 320-320c67.2 0 129.6 20.8 180.8 56-84.8 57.6-139.2 155.2-139.2 264z" />
+<glyph unicode="&#xe960;" glyph-name="moon-3" horiz-adv-x="608" d="M552 684.8l38.4 25.6-38.4 27.2c-59.2 40-128 62.4-200 62.4-193.6 0-352-158.4-352-352s158.4-352 352-352c72 0 140.8 20.8 200 62.4l38.4 25.6-38.4 27.2c-78.4 54.4-124.8 142.4-124.8 236.8s46.4 184 124.8 236.8zM363.2 448c0-99.2 41.6-193.6 115.2-259.2-38.4-19.2-81.6-28.8-124.8-28.8-158.4 0-288 129.6-288 288s129.6 288 288 288c43.2 0 86.4-9.6 124.8-28.8-73.6-65.6-115.2-160-115.2-259.2z" />
+<glyph unicode="&#xe961;" glyph-name="moon-4-f" horiz-adv-x="768" d="M544 448c0 164.8 83.2 308.8 208 395.2-76.8 52.8-171.2 84.8-272 84.8-265.6 0-480-214.4-480-480s214.4-480 480-480c100.8 0 195.2 32 272 84.8-126.4 86.4-208 230.4-208 395.2z" />
+<glyph unicode="&#xe962;" glyph-name="moon-4" horiz-adv-x="848" d="M803.2 817.6l38.4 25.6-38.4 25.6c-86.4 60.8-187.2 91.2-291.2 91.2-281.6 0-512-230.4-512-512s230.4-512 512-512c104 0 204.8 30.4 289.6 89.6l38.4 25.6-38.4 25.6c-120 86.4-193.6 224-193.6 371.2s73.6 284.8 195.2 369.6zM544 448c0-152 67.2-296 184-392-65.6-36.8-139.2-56-216-56-246.4 0-448 201.6-448 448s201.6 448 448 448c75.2 0 148.8-19.2 216-56-115.2-96-184-240-184-392z" />
+<glyph unicode="&#xe963;" glyph-name="moon-first-quarter-f" horiz-adv-x="704" d="M352 800c-193.6 0-352-158.4-352-352s158.4-352 352-352c193.6 0 352 158.4 352 352s-158.4 352-352 352zM352 160v0 576c158.4 0 288-129.6 288-288s-129.6-288-288-288z" />
+<glyph unicode="&#xe964;" glyph-name="moon-horizon-f" d="M992 352h-960c-17.6 0-32-14.4-32-32s14.4-32 32-32h960c17.6 0 32 14.4 32 32s-14.4 32-32 32zM704 416c0 0 0 0 0 0 0 105.6-86.4 192-192 192s-192-86.4-192-192c0 0 0 0 0 0h384z" />
+<glyph unicode="&#xe965;" glyph-name="moon-horizon" d="M342.4 336c16 6.4 25.6 24 19.2 41.6s-9.6 35.2-9.6 54.4c0 88 72 160 160 160s160-72 160-160c0-19.2-3.2-36.8-9.6-54.4-6.4-16 3.2-35.2 19.2-41.6 3.2-1.6 8-1.6 11.2-1.6 12.8 0 25.6 8 30.4 20.8 9.6 24 12.8 49.6 12.8 76.8 0 123.2-100.8 224-224 224s-224-100.8-224-224c0-25.6 4.8-51.2 12.8-76.8 6.4-16 25.6-24 41.6-19.2zM32 240h960c17.6 0 32 14.4 32 32s-14.4 32-32 32h-960c-17.6 0-32-14.4-32-32s14.4-32 32-32z" />
+<glyph unicode="&#xe966;" glyph-name="moon-last-quarter-f" horiz-adv-x="704" d="M352 800c-193.6 0-352-158.4-352-352s158.4-352 352-352 352 158.4 352 352c0 193.6-158.4 352-352 352zM64 448c0 158.4 129.6 288 288 288 0 0 0 0 0 0v-576c0 0 0 0 0 0-158.4 0-288 129.6-288 288z" />
+<glyph unicode="&#xe967;" glyph-name="moon-sea-f" d="M128 352h768c17.6 0 32 14.4 32 32s-14.4 32-32 32h-768c-17.6 0-32-14.4-32-32s14.4-32 32-32zM992 288h-960c-17.6 0-32-14.4-32-32s14.4-32 32-32h960c17.6 0 32 14.4 32 32s-14.4 32-32 32zM768 160h-480c-17.6 0-32-14.4-32-32s14.4-32 32-32h480c17.6 0 32 14.4 32 32s-14.4 32-32 32zM798.4 480c1.6 11.2 1.6 20.8 1.6 32 0 158.4-129.6 288-288 288s-288-129.6-288-288c0-11.2 0-20.8 1.6-32h572.8z" />
+<glyph unicode="&#xe968;" glyph-name="moon-sea" d="M128 336h768c17.6 0 32 14.4 32 32s-14.4 32-32 32h-78.4c9.6 30.4 14.4 62.4 14.4 96 0 176-144 320-320 320s-320-144-320-320c0-33.6 4.8-65.6 14.4-96h-78.4c-17.6 0-32-14.4-32-32s14.4-32 32-32zM512 752c140.8 0 256-115.2 256-256 0-33.6-6.4-65.6-19.2-96h-473.6c-12.8 30.4-19.2 62.4-19.2 96 0 140.8 115.2 256 256 256zM32 208h960c17.6 0 32 14.4 32 32s-14.4 32-32 32h-960c-17.6 0-32-14.4-32-32s14.4-32 32-32zM768 144h-480c-17.6 0-32-14.4-32-32s14.4-32 32-32h480c17.6 0 32 14.4 32 32s-14.4 32-32 32z" />
+<glyph unicode="&#xe969;" glyph-name="moon-waning-crescent-f" horiz-adv-x="704" d="M352 800c-193.6 0-352-158.4-352-352s158.4-352 352-352c193.6 0 352 158.4 352 352s-158.4 352-352 352zM64 448c0 158.4 129.6 288 288 288 27.2 0 54.4-4.8 80-11.2-120-35.2-208-145.6-208-276.8s88-241.6 208-276.8c-25.6-8-52.8-11.2-80-11.2-158.4 0-288 129.6-288 288z" />
+<glyph unicode="&#xe96a;" glyph-name="moon-waning-gibbous-f" horiz-adv-x="704" d="M352 800c-193.6 0-352-158.4-352-352s158.4-352 352-352 352 158.4 352 352c0 193.6-158.4 352-352 352zM64 448c0 131.2 88 241.6 208 276.8 123.2-35.2 208-148.8 208-276.8s-84.8-241.6-208-276.8c-120 35.2-208 145.6-208 276.8z" />
+<glyph unicode="&#xe96b;" glyph-name="moon-waxing-crescent-f" horiz-adv-x="704" d="M352 800c-193.6 0-352-158.4-352-352s158.4-352 352-352c193.6 0 352 158.4 352 352s-158.4 352-352 352zM352 160c-27.2 0-54.4 4.8-80 11.2 120 35.2 208 145.6 208 276.8s-88 241.6-208 276.8c25.6 8 52.8 11.2 80 11.2 158.4 0 288-129.6 288-288s-129.6-288-288-288z" />
+<glyph unicode="&#xe96c;" glyph-name="moon-waxing-gibbous-f" horiz-adv-x="704" d="M352 800c-193.6 0-352-158.4-352-352s158.4-352 352-352c193.6 0 352 158.4 352 352s-158.4 352-352 352zM432 171.2c-123.2 35.2-208 148.8-208 276.8s84.8 241.6 208 276.8c120-35.2 208-145.6 208-276.8s-88-241.6-208-276.8z" />
+<glyph unicode="&#xe96d;" glyph-name="mostly-cloudy-1-f" horiz-adv-x="960" d="M752 576c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h574.4c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208z" />
+<glyph unicode="&#xe96e;" glyph-name="mostly-cloudy-1" d="M795.2 608c-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h576c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM785.6 192h-577.6c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176-1.6-97.6-80-176-176-176z" />
+<glyph unicode="&#xe96f;" glyph-name="mostly-cloudy-2-f" horiz-adv-x="960" d="M672 464c-6.4 0-12.8 0-19.2-1.6-36.8 94.4-129.6 161.6-236.8 161.6-131.2 0-238.4-97.6-254.4-224 0 0-1.6 0-1.6 0-88 0-160-72-160-160s72-160 160-160h513.6c105.6 0 190.4 86.4 190.4 192s-86.4 192-192 192zM800 688c-32 75.2-105.6 128-192 128s-161.6-52.8-192-128v0c116.8 0 220.8-62.4 276.8-161.6 86.4-6.4 160-57.6 200-128 40 28.8 65.6 76.8 65.6 129.6 1.6 88-70.4 160-158.4 160z" />
+<glyph unicode="&#xe970;" glyph-name="mostly-cloudy-2" d="M1024 528c0 99.2-75.2 180.8-171.2 190.4-41.6 80-121.6 129.6-212.8 129.6-116.8 0-216-83.2-235.2-195.2-116.8-17.6-212.8-105.6-238.4-222.4-92.8-12.8-166.4-92.8-166.4-190.4 0-105.6 86.4-192 192-192h545.6v3.2c107.2 16 190.4 108.8 190.4 220.8 0 28.8-6.4 56-16 81.6 67.2 30.4 112 97.6 112 174.4zM705.6 112h-513.6c-70.4 0-128 57.6-128 128s56 126.4 126.4 128l32-1.6 3.2 28.8c14.4 112 110.4 196.8 222.4 196.8 91.2 0 172.8-56 208-140.8l9.6-22.4 22.4 3.2c4.8 0 9.6 0 16 0 88 0 160-72 160-160s-72-160-158.4-160zM880 409.6c-40 52.8-104 86.4-174.4 86.4-44.8 91.2-134.4 152-235.2 158.4 19.2 76.8 88 129.6 169.6 129.6 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128 0-52.8-32-99.2-80-118.4z" />
+<glyph unicode="&#xe971;" glyph-name="partly-cloudy-1-f" horiz-adv-x="976" d="M368 680c17.6 0 32 14.4 32 32v96c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32zM160 472c0 17.6-14.4 32-32 32h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96c17.6 0 32 14.4 32 32zM180.8 614.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-68.8 68.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l68.8-68.8zM532.8 604.8c8 0 16 3.2 22.4 9.6l68.8 68.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-68.8-68.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6zM180.8 329.6l-68.8-68.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l68.8 68.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM816 376c-32 75.2-105.6 128-192 128-110.4 0-200-84.8-208-193.6-4.8 0-11.2 1.6-17.6 1.6-70.4 0-128-57.6-128-128s57.6-128 128-128h416c88 0 160 72 160 160 1.6 88-70.4 160-158.4 160zM363.2 372.8c22.4 76.8 76.8 137.6 147.2 171.2-25.6 52.8-80 89.6-144 89.6-88 0-160-72-160-160 0-57.6 30.4-107.2 75.2-136 25.6 16 52.8 28.8 81.6 35.2z" />
+<glyph unicode="&#xe972;" glyph-name="partly-cloudy-1" d="M352 832v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96c0 17.6-14.4 32-32 32s-32-14.4-32-32zM32 448h96c17.6 0 32 14.4 32 32s-14.4 32-32 32h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32zM225.6 638.4c12.8 12.8 12.8 32 0 44.8l-67.2 68.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l68.8-68.8c6.4-6.4 14.4-9.6 22.4-9.6 6.4 0 14.4 3.2 20.8 9.6zM611.2 752l-68.8-68.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l68.8 68.8c12.8 12.8 12.8 32 0 44.8-12.8 11.2-33.6 11.2-44.8 0zM112 208c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l68.8 68.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-68.8-68.8c-12.8-11.2-12.8-32 0-44.8zM852.8 414.4c-40 80-121.6 129.6-212.8 129.6-25.6 0-49.6-4.8-72-11.2-22.4 80-97.6 139.2-184 139.2-105.6 0-192-86.4-192-192 0-76.8 46.4-144 112-174.4-28.8-28.8-48-68.8-48-113.6 0-88 72-160 160-160h416c105.6 0 192 86.4 192 192 0 99.2-75.2 180.8-171.2 190.4zM256 480c0 70.4 57.6 128 128 128 62.4 0 113.6-44.8 124.8-102.4-52.8-33.6-89.6-88-104-150.4-6.4-3.2-12.8-3.2-20.8-3.2-70.4 0-128 57.6-128 128zM832 96h-416c-52.8 0-96 43.2-96 96s43.2 96 96 96c3.2 0 6.4 0 9.6-1.6l36.8-4.8 1.6 33.6c8 92.8 84.8 164.8 176 164.8 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128s-57.6-128-128-128z" />
+<glyph unicode="&#xe973;" glyph-name="partly-cloudy-2-f" horiz-adv-x="960" d="M768 496c-6.4 0-12.8 0-19.2-1.6-36.8 94.4-129.6 161.6-236.8 161.6-131.2 0-238.4-97.6-254.4-224 0 0-1.6 0-1.6 0-88 0-160-72-160-160s72-160 160-160h513.6c105.6 0 190.4 86.4 190.4 192s-86.4 192-192 192zM361.6 681.6c-32 60.8-96 102.4-169.6 102.4-105.6 0-192-86.4-192-192 0-70.4 38.4-131.2 94.4-164.8 28.8 30.4 67.2 52.8 110.4 64 24 83.2 81.6 150.4 156.8 190.4z" />
+<glyph unicode="&#xe974;" glyph-name="partly-cloudy-2" d="M801.6 528c-48 97.6-147.2 160-257.6 160-38.4 0-75.2-8-108.8-22.4-30.4 88-115.2 150.4-211.2 150.4-123.2 0-224-100.8-224-224 0-89.6 54.4-169.6 134.4-204.8-24-32-38.4-72-38.4-115.2 0-105.6 86.4-192 192-192h545.6v3.2c107.2 16 190.4 108.8 190.4 220.8 0 123.2-99.2 222.4-222.4 224zM64 592c0 88 72 160 160 160 72 0 134.4-49.6 153.6-116.8-57.6-40-99.2-100.8-115.2-172.8-27.2-3.2-52.8-12.8-73.6-25.6-72 16-124.8 80-124.8 155.2zM801.6 144h-513.6c-70.4 0-128 57.6-128 128s56 126.4 126.4 128l32-1.6 3.2 30.4c14.4 110.4 110.4 195.2 222.4 195.2 91.2 0 172.8-56 208-140.8l9.6-22.4 22.4 3.2c4.8 0 9.6 0 16 0 88 0 160-72 160-160s-72-160-158.4-160z" />
+<glyph unicode="&#xe975;" glyph-name="partly-cloudy-3-f" horiz-adv-x="960" d="M768 464c-6.4 0-12.8 0-19.2-1.6-36.8 94.4-129.6 161.6-236.8 161.6-131.2 0-238.4-97.6-254.4-224 0 0-1.6 0-1.6 0-88 0-160-72-160-160s72-160 160-160h513.6c105.6 0 190.4 86.4 190.4 192s-86.4 192-192 192zM204.8 457.6c32 107.2 118.4 190.4 225.6 219.2-33.6 81.6-113.6 139.2-206.4 139.2-4.8 0-8 0-12.8 0 8-19.2 12.8-41.6 12.8-64 0-88-72-160-160-160-22.4 0-43.2 4.8-64 12.8 0-4.8 0-8 0-12.8 0-78.4 41.6-148.8 102.4-188.8 28.8 27.2 64 46.4 102.4 54.4z" />
+<glyph unicode="&#xe976;" glyph-name="partly-cloudy-3" d="M140.8 363.2c-27.2-33.6-44.8-76.8-44.8-123.2 0-105.6 86.4-192 192-192h513.6c123.2 0 222.4 100.8 222.4 224s-99.2 222.4-222.4 224c-48 97.6-147.2 160-257.6 160-12.8 0-27.2-1.6-40-3.2-27.2 113.6-128 195.2-248 195.2-3.2 0-8 0-11.2 0l-49.6-3.2 17.6-41.6c6.4-16 11.2-33.6 11.2-51.2 0-70.4-57.6-128-128-128-17.6 0-35.2 3.2-51.2 11.2l-41.6 17.6-3.2-49.6c0-3.2 0-8 0-11.2 0-99.2 56-185.6 140.8-228.8zM544 592c91.2 0 172.8-56 208-140.8l9.6-22.4 22.4 3.2c4.8 0 9.6 0 16 0 88 0 160-72 160-160s-72-160-158.4-160h-513.6c-70.4 0-128 57.6-128 128s56 126.4 126.4 128l32-1.6 3.2 28.8c14.4 112 110.4 196.8 222.4 196.8zM96 560c105.6 0 192 86.4 192 192 0 9.6 0 19.2-1.6 30.4 76.8-11.2 139.2-68.8 156.8-144-89.6-33.6-158.4-110.4-179.2-206.4-24-3.2-46.4-11.2-65.6-20.8-70.4 20.8-121.6 80-132.8 150.4 11.2-1.6 20.8-1.6 30.4-1.6z" />
+<glyph unicode="&#xe977;" glyph-name="rain-1-f" horiz-adv-x="960" d="M752 768c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h574.4c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208zM720 288c-17.6 0-32-14.4-32-32v-256c0-17.6 14.4-32 32-32s32 14.4 32 32v256c0 17.6-14.4 32-32 32zM560 288c-17.6 0-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160c0 17.6-14.4 32-32 32zM400 288c-17.6 0-32-14.4-32-32v-256c0-17.6 14.4-32 32-32s32 14.4 32 32v256c0 17.6-14.4 32-32 32zM240 288c-17.6 0-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160c0 17.6-14.4 32-32 32z" />
+<glyph unicode="&#xe978;" glyph-name="rain-1" d="M795.2 800c-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h576c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM785.6 384h-577.6c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176-1.6-97.6-80-176-176-176zM768-32v256c0 17.6-14.4 32-32 32s-32-14.4-32-32v-256c0-17.6 14.4-32 32-32s32 14.4 32 32zM608 64v160c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32zM448-32v256c0 17.6-14.4 32-32 32s-32-14.4-32-32v-256c0-17.6 14.4-32 32-32s32 14.4 32 32zM256 32c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32z" />
+<glyph unicode="&#xe979;" glyph-name="rain-and-snow-f" horiz-adv-x="960" d="M228.8 281.6c-14.4 11.2-33.6 9.6-44.8-4.8l-102.4-128c-11.2-14.4-9.6-33.6 4.8-44.8 4.8-6.4 12.8-8 19.2-8 9.6 0 19.2 4.8 25.6 12.8l102.4 128c11.2 12.8 8 33.6-4.8 44.8zM420.8 281.6c-14.4 11.2-33.6 9.6-44.8-4.8l-204.8-256c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l204.8 256c11.2 11.2 8 32-4.8 43.2zM624 222.4c0 17.6-14.4 32-32 32v0c0 17.6-14.4 32-32 32v0c-17.6 0-32-14.4-32-32-17.6 0-32-14.4-32-32s14.4-32 32-32v0 0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32zM486.4 94.4v0 0c0 17.6-14.4 32-32 32v0c-17.6 0-32-14.4-32-32-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32s-14.4 32-32 32zM697.6 94.4c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM816 254.4c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM752 768c-3.2 0-4.8 0-8 0-43.2 94.4-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-78.4-176-176s78.4-176 176-176h574.4c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208z" />
+<glyph unicode="&#xe97a;" glyph-name="rain-and-snow" d="M260.8 249.6c-14.4 11.2-33.6 8-44.8-4.8l-102.4-128c-11.2-14.4-9.6-33.6 4.8-44.8 4.8-6.4 12.8-8 19.2-8 9.6 0 19.2 4.8 25.6 12.8l102.4 128c11.2 12.8 8 33.6-4.8 44.8zM452.8 249.6c-14.4 11.2-33.6 9.6-44.8-4.8l-204.8-256c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l204.8 256c11.2 11.2 8 32-4.8 43.2zM592 254.4v0c-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0 0c0-17.6 14.4-32 32-32 0 0 0 0 0 0 17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32s-14.4 32-32 32v0c0 17.6-14.4 32-32 32zM486.4 94.4v0c-17.6 0-32-14.4-32-32-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32v0 0c0 17.6-14.4 32-32 32zM729.6 62.4v0c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM784 158.4c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32zM795.2 800c-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h576c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240zM784 384h-576c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176-1.6-97.6-80-176-177.6-176z" />
+<glyph unicode="&#xe97b;" glyph-name="rain-day-f" horiz-adv-x="960" d="M352 816c17.6 0 32 14.4 32 32v80c0 17.6-14.4 32-32 32s-32-14.4-32-32v-80c0-17.6 14.4-32 32-32zM144 608c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32s14.4-32 32-32h80c17.6 0 32 14.4 32 32zM164.8 750.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-51.2 52.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l51.2-52.8zM516.8 740.8c8 0 16 3.2 22.4 9.6l52.8 51.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-4.8 14.4-8 22.4-8zM164.8 465.6l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM800 576c-32 75.2-105.6 128-192 128-110.4 0-200-84.8-208-193.6-4.8 0-11.2 1.6-17.6 1.6-70.4 0-128-57.6-128-128s57.6-128 128-128h416c88 0 160 72 160 160 1.6 88-70.4 160-158.4 160zM800 192c-17.6 0-32-14.4-32-32v-192c0-17.6 14.4-32 32-32s32 14.4 32 32v192c0 17.6-14.4 32-32 32zM672 192c-17.6 0-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96c0 17.6-14.4 32-32 32zM544 192c-17.6 0-32-14.4-32-32v-192c0-17.6 14.4-32 32-32s32 14.4 32 32v192c0 17.6-14.4 32-32 32zM416 192c-17.6 0-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96c0 17.6-14.4 32-32 32zM460.8 724.8c-28.8 25.6-67.2 43.2-108.8 43.2-88 0-160-72-160-160 0-41.6 16-78.4 40-105.6 28.8 35.2 68.8 62.4 115.2 70.4 19.2 62.4 59.2 116.8 113.6 152z" />
+<glyph unicode="&#xe97c;" glyph-name="rain-day" horiz-adv-x="992" d="M352 960c-17.6 0-32-14.4-32-32v-64c0-17.6 14.4-32 32-32s32 14.4 32 32v64c0 17.6-14.4 32-32 32zM32 576h64c17.6 0 32 14.4 32 32s-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32zM193.6 766.4c12.8 12.8 12.8 32 0 44.8l-35.2 36.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l36.8-36.8c6.4-6.4 14.4-9.6 22.4-9.6 6.4 0 14.4 3.2 20.8 9.6zM510.4 766.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 35.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-36.8-36.8c-12.8-11.2-12.8-30.4 0-43.2zM148.8 449.6l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 36.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM820.8 606.4c-40 80-121.6 129.6-212.8 129.6-35.2 0-67.2-8-97.6-20.8-35.2 52.8-94.4 84.8-158.4 84.8-105.6 0-192-86.4-192-192 0-62.4 30.4-120 80-155.2-9.6-20.8-16-43.2-16-68.8 0-88 72-160 160-160h416c105.6 0 192 86.4 192 192 0 99.2-75.2 180.8-171.2 190.4zM224 608c0 70.4 57.6 128 128 128 41.6 0 80-20.8 104-54.4-41.6-33.6-72-83.2-83.2-137.6-36.8-3.2-68.8-17.6-96-40-32 24-52.8 62.4-52.8 104zM800 288h-416c-52.8 0-96 43.2-96 96s43.2 96 96 96c3.2 0 6.4 0 9.6-1.6l36.8-4.8 1.6 33.6c8 92.8 84.8 164.8 176 164.8 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128s-57.6-128-128-128zM832-32v192c0 17.6-14.4 32-32 32s-32-14.4-32-32v-192c0-17.6 14.4-32 32-32s32 14.4 32 32zM704 64v96c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32zM544-64c17.6 0 32 14.4 32 32v192c0 17.6-14.4 32-32 32s-32-14.4-32-32v-192c0-17.6 14.4-32 32-32zM448 64v96c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32s32 14.4 32 32z" />
+<glyph unicode="&#xe97d;" glyph-name="rain-full-moon-f" horiz-adv-x="800" d="M636.8 668.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h436.8c89.6 0 163.2 70.4 163.2 158.4-1.6 83.2-75.2 155.2-164.8 155.2zM608 288c-17.6 0-32-14.4-32-32v-256c0-17.6 14.4-32 32-32s32 14.4 32 32v256c0 17.6-14.4 32-32 32zM480 288c-17.6 0-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160c0 17.6-14.4 32-32 32zM352 288c-17.6 0-32-14.4-32-32v-256c0-17.6 14.4-32 32-32s32 14.4 32 32v256c0 17.6-14.4 32-32 32zM224 288c-17.6 0-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160c0 17.6-14.4 32-32 32zM150.4 673.6c24 75.2 81.6 134.4 153.6 166.4-27.2 51.2-81.6 88-144 88-88 0-160-72-160-160 0-56 28.8-105.6 72-134.4 22.4 19.2 49.6 32 78.4 40z" />
+<glyph unicode="&#xe97e;" glyph-name="rain-full-moon" horiz-adv-x="864" d="M640 256c-17.6 0-32-14.4-32-32v-256c0-17.6 14.4-32 32-32s32 14.4 32 32v256c0 17.6-14.4 32-32 32zM480 224v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160c0 17.6-14.4 32-32 32s-32-14.4-32-32zM352 224v-256c0-17.6 14.4-32 32-32s32 14.4 32 32v256c0 17.6-14.4 32-32 32s-32-14.4-32-32zM224 224v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160c0 17.6-14.4 32-32 32s-32-14.4-32-32zM0 768c0-76.8 44.8-142.4 108.8-172.8-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4s-84.8 187.2-192 190.4c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-105.6 0-192-86.4-192-192zM449.6 768c76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 92.8 91.2 160 184 160zM316.8 793.6c-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-65.6 4.8-118.4 59.2-118.4 128 0 70.4 57.6 128 128 128 60.8 0 113.6-43.2 124.8-102.4z" />
+<glyph unicode="&#xe97f;" glyph-name="rain-night-f" horiz-adv-x="800" d="M636.8 352c89.6 0 163.2 70.4 163.2 158.4s-73.6 158.4-163.2 158.4c-4.8 0-11.2 0-16-1.6-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2l435.2-1.6zM608-32c-17.6 0-32 14.4-32 32v256c0 17.6 14.4 32 32 32s32-14.4 32-32v-256c0-17.6-14.4-32-32-32zM480 64c-17.6 0-32 14.4-32 32v160c0 17.6 14.4 32 32 32s32-14.4 32-32v-160c0-17.6-14.4-32-32-32zM352-32c-17.6 0-32 14.4-32 32v256c0 17.6 14.4 32 32 32s32-14.4 32-32v-256c0-17.6-14.4-32-32-32zM224 64c-17.6 0-32 14.4-32 32v160c0 17.6 14.4 32 32 32s32-14.4 32-32v-160c0-17.6-14.4-32-32-32zM72 633.6c22.4 17.6 48 32 76.8 38.4 24 75.2 81.6 134.4 153.6 166.4-25.6 54.4-80 89.6-142.4 89.6-4.8 0-8-1.6-11.2-1.6 6.4-14.4 9.6-28.8 9.6-46.4 0-62.4-49.6-112-112-112-16 0-32 3.2-44.8 9.6 0-3.2-1.6-6.4-1.6-9.6 0-56 28.8-105.6 72-134.4z" />
+<glyph unicode="&#xe980;" glyph-name="rain-night" horiz-adv-x="864" d="M864 510.4c0 104-84.8 187.2-192 190.4-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-3.2 0-8 0-11.2-1.6-1.6 0-1.6 0-3.2 0l-46.4-3.2 19.2-41.6c4.8-11.2 8-22.4 8-33.6 0-44.8-35.2-80-80-80-11.2 0-22.4 1.6-32 6.4l-41.6 19.2-3.2-44.8v-1.6c-1.6-4.8-1.6-8-1.6-11.2 0-76.8 44.8-142.4 108.8-172.8-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4zM67.2 737.6c3.2 0 6.4 0 11.2 0 80 0 144 64 144 144 0 4.8 0 8 0 11.2 48-11.2 84.8-49.6 96-97.6-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-57.6 3.2-104 41.6-116.8 96zM232 384c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4l-436.8 3.2zM640-64c17.6 0 32 14.4 32 32v256c0 17.6-14.4 32-32 32s-32-14.4-32-32v-256c0-17.6 14.4-32 32-32zM480 224v-160c0-17.6 14.4-32 32-32s32 14.4 32 32v160c0 17.6-14.4 32-32 32s-32-14.4-32-32zM416-32v256c0 17.6-14.4 32-32 32s-32-14.4-32-32v-256c0-17.6 14.4-32 32-32s32 14.4 32 32zM288 64v160c0 17.6-14.4 32-32 32s-32-14.4-32-32v-160c0-17.6 14.4-32 32-32s32 14.4 32 32z" />
+<glyph unicode="&#xe981;" glyph-name="severe-thunderstorm-f" horiz-adv-x="960" d="M451.2 240l118.4 147.2c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-203.2-251.2h128l-112-139.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l196.8 241.6h-128zM752 752c-3.2 0-4.8 0-8 0-43.2 92.8-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-80-176-176s78.4-176 176-176h187.2l105.6 132.8c17.6 22.4 46.4 36.8 75.2 36.8 22.4 0 43.2-8 59.2-20.8 20.8-16 32-38.4 35.2-64s-4.8-51.2-20.8-70.4l-8-14.4h140.8c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208s-92.8 208-208 208zM208 219.2c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-118.4-147.2h96l-35.2-44.8c-11.2-14.4-9.6-33.6 4.8-44.8 4.8-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l118.4 148.8h-96l35.2 41.6zM742.4 219.2c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-120-147.2h96l-35.2-44.8c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l118.4 148.8h-96l36.8 41.6z" />
+<glyph unicode="&#xe982;" glyph-name="severe-thunderstorm" d="M795.2 766.4c-51.2 99.2-155.2 161.6-267.2 161.6-137.6 0-259.2-96-292.8-225.6-9.6 0-17.6 1.6-27.2 1.6-115.2 0-208-94.4-208-208s92.8-208 208-208h144c17.6 0 32 14.4 32 32s-14.4 32-32 32h-144c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176s-78.4-176-174.4-176h-115.2c-17.6 0-32-14.4-32-32s14.4-32 32-32h112c132.8 0 240 107.2 240 240 0 128-100.8 232-228.8 238.4zM596.8 416c-14.4 11.2-33.6 9.6-44.8-4.8l-203.2-251.2h128l-112-139.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l196.8 241.6h-128l118.4 147.2c11.2 14.4 8 33.6-4.8 44.8zM235.2 248c-14.4 11.2-33.6 9.6-44.8-4.8l-118.4-147.2h96l-35.2-44.8c-11.2-14.4-9.6-33.6 4.8-44.8 4.8-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l118.4 148.8h-96l35.2 43.2c11.2 12.8 8 32-4.8 43.2zM768 248c-14.4 11.2-33.6 9.6-44.8-4.8l-118.4-147.2h96l-35.2-44.8c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l118.4 148.8h-96l35.2 43.2c12.8 12.8 9.6 32-4.8 43.2z" />
+<glyph unicode="&#xe983;" glyph-name="snow-day-1-f" horiz-adv-x="960" d="M352 808c17.6 0 32 14.4 32 32v80c0 17.6-14.4 32-32 32s-32-14.4-32-32v-80c0-17.6 14.4-32 32-32zM144 600c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32s14.4-32 32-32h80c17.6 0 32 14.4 32 32zM164.8 742.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-52.8 52.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l52.8-52.8zM516.8 732.8c8 0 16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6zM164.8 457.6l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM800 568c-32 75.2-105.6 128-192 128-110.4 0-200-84.8-208-193.6-4.8 0-11.2 1.6-17.6 1.6-70.4 0-128-57.6-128-128s57.6-128 128-128h416c88 0 160 72 160 160 1.6 88-70.4 160-158.4 160zM460.8 716.8c-28.8 27.2-67.2 43.2-108.8 43.2-88 0-160-72-160-160 0-41.6 16-78.4 40-105.6 28.8 35.2 68.8 62.4 115.2 70.4 19.2 62.4 59.2 116.8 113.6 152zM416 168c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM384 40c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM512 104c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM512-24c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM640 40c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM672 168c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM832 136c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM800 8c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
+<glyph unicode="&#xe984;" glyph-name="snow-day-1" horiz-adv-x="992" d="M320 928v-64c0-17.6 14.4-32 32-32s32 14.4 32 32v64c0 17.6-14.4 32-32 32s-32-14.4-32-32zM32 640c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32h-64zM193.6 766.4c12.8 12.8 12.8 32 0 44.8l-35.2 36.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l36.8-36.8c6.4-6.4 14.4-9.6 22.4-9.6s14.4 3.2 20.8 9.6zM547.2 848l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 35.2c12.8 12.8 12.8 32 0 44.8s-33.6 12.8-44.8 1.6zM148.8 449.6l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 36.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM820.8 606.4c-40 80-121.6 129.6-212.8 129.6-35.2 0-67.2-8-97.6-20.8-35.2 52.8-94.4 84.8-158.4 84.8-105.6 0-192-86.4-192-192 0-62.4 30.4-120 80-155.2-9.6-20.8-16-43.2-16-68.8 0-88 72-160 160-160h416c105.6 0 192 86.4 192 192 0 99.2-75.2 180.8-171.2 190.4zM224 608c0 70.4 57.6 128 128 128 41.6 0 80-20.8 104-54.4-41.6-33.6-72-83.2-83.2-137.6-36.8-3.2-68.8-17.6-96-40-32 24-52.8 62.4-52.8 104zM800 288h-416c-52.8 0-96 43.2-96 96s43.2 96 96 96c3.2 0 6.4 0 9.6-1.6l36.8-4.8 1.6 33.6c6.4 92.8 84.8 164.8 176 164.8 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128s-57.6-128-128-128zM406.4 137.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6zM329.6 54.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM457.6-54.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4zM480 64c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6zM662.4 137.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6zM585.6 54.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM745.6 22.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM822.4 105.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6z" />
+<glyph unicode="&#xe985;" glyph-name="snow-day-2-f" horiz-adv-x="960" d="M424 131.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM536 3.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM648 131.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM872 131.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM760 3.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM352 788.8c17.6 0 32 14.4 32 32v80c0 17.6-14.4 32-32 32s-32-14.4-32-32v-80c0-17.6 14.4-32 32-32zM144 580.8c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32s14.4-32 32-32h80c17.6 0 32 14.4 32 32zM164.8 723.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-52.8 52.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l52.8-52.8zM516.8 713.6c8 0 16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6zM164.8 438.4l-52.8-51.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8-12.8 11.2-32 11.2-44.8-1.6zM800 550.4c-32 75.2-105.6 128-192 128-110.4 0-200-84.8-208-193.6-4.8 0-11.2 1.6-17.6 1.6-70.4 0-128-57.6-128-128s57.6-128 128-128h416c88 0 160 72 160 160 1.6 88-70.4 160-158.4 160zM460.8 697.6c-28.8 27.2-67.2 43.2-108.8 43.2-88 0-160-72-160-160 0-41.6 16-78.4 40-105.6 28.8 35.2 68.8 62.4 115.2 70.4 19.2 64 59.2 116.8 113.6 152z" />
+<glyph unicode="&#xe986;" glyph-name="snow-day-2" horiz-adv-x="992" d="M320 928v-64c0-17.6 14.4-32 32-32s32 14.4 32 32v64c0 17.6-14.4 32-32 32s-32-14.4-32-32zM128 608c0 17.6-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32zM193.6 766.4c12.8 12.8 12.8 32 0 44.8l-35.2 36.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l36.8-36.8c6.4-6.4 14.4-9.6 22.4-9.6s14.4 3.2 20.8 9.6zM547.2 848l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 35.2c12.8 12.8 12.8 32 0 44.8s-33.6 14.4-44.8 1.6zM148.8 449.6l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 36.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM820.8 606.4c-40 80-121.6 129.6-212.8 129.6-35.2 0-67.2-8-97.6-20.8-35.2 52.8-94.4 84.8-158.4 84.8-105.6 0-192-86.4-192-192 0-62.4 30.4-120 80-155.2-9.6-20.8-16-43.2-16-68.8 0-88 72-160 160-160h416c105.6 0 192 86.4 192 192 0 99.2-75.2 180.8-171.2 190.4zM224 608c0 70.4 57.6 128 128 128 41.6 0 80-20.8 104-54.4-41.6-33.6-72-83.2-83.2-137.6-36.8-3.2-68.8-17.6-96-40-32 24-52.8 62.4-52.8 104zM800 288h-416c-52.8 0-96 43.2-96 96s43.2 96 96 96c3.2 0 6.4 0 9.6-1.6l36.8-4.8 1.6 33.6c8 92.8 84.8 164.8 176 164.8 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128s-57.6-128-128-128zM512-16c0 27.2-20.8 48-48 48s-48-20.8-48-48c0-27.2 20.8-48 48-48s48 20.8 48 48zM768-16c0 27.2-20.8 48-48 48s-48-20.8-48-48c0-27.2 20.8-48 48-48s48 20.8 48 48zM384 112c0 27.2-20.8 48-48 48s-48-20.8-48-48c0-27.2 20.8-48 48-48s48 20.8 48 48zM640 112c0 27.2-20.8 48-48 48s-48-20.8-48-48c0-27.2 20.8-48 48-48s48 20.8 48 48zM896 112c0 27.2-20.8 48-48 48s-48-20.8-48-48c0-27.2 20.8-48 48-48s48 20.8 48 48z" />
+<glyph unicode="&#xe987;" glyph-name="snow-day-3-f" horiz-adv-x="960" d="M448 136c0 17.6-14.4 32-32 32v0c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0 0c17.6 0 32 14.4 32 32zM672 136c0 17.6-14.4 32-32 32v0c0 17.6-14.4 32-32 32v0c-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0 0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32zM534.4 40v0c0 17.6-14.4 32-32 32v0c-17.6 0-32-14.4-32-32-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32s-14.4 32-32 32zM745.6 40v0c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM864 168v0c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0 0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM352 808c17.6 0 32 14.4 32 32v80c0 17.6-14.4 32-32 32s-32-14.4-32-32v-80c0-17.6 14.4-32 32-32zM144 600c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32s14.4-32 32-32h80c17.6 0 32 14.4 32 32zM164.8 742.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-52.8 52.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l52.8-52.8zM516.8 732.8c8 0 16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6zM164.8 457.6l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM800 568c-32 75.2-105.6 128-192 128-110.4 0-200-84.8-208-193.6-4.8 0-11.2 1.6-17.6 1.6-70.4 0-128-57.6-128-128s57.6-128 128-128h416c88 0 160 72 160 160 1.6 88-70.4 160-158.4 160zM460.8 716.8c-28.8 27.2-67.2 43.2-108.8 43.2-88 0-160-72-160-160 0-41.6 16-78.4 40-105.6 28.8 35.2 68.8 62.4 115.2 70.4 19.2 62.4 59.2 116.8 113.6 152z" />
+<glyph unicode="&#xe988;" glyph-name="snow-day-3" horiz-adv-x="992" d="M416 160c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM608 192v0c-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0 0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32s-14.4 32-32 32v0c0 17.6-14.4 32-32 32zM502.4 64v0c-17.6 0-32-14.4-32-32-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32s-14.4 32-32 32v0 0c0 17.6-14.4 32-32 32zM745.6 32v0c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM800 96c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32zM320 928v-64c0-17.6 14.4-32 32-32s32 14.4 32 32v64c0 17.6-14.4 32-32 32s-32-14.4-32-32zM128 608c0 17.6-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32zM193.6 766.4c12.8 12.8 12.8 32 0 44.8l-35.2 36.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l36.8-36.8c6.4-6.4 14.4-9.6 22.4-9.6 6.4 0 14.4 3.2 20.8 9.6zM547.2 848l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 35.2c12.8 12.8 12.8 32 0 44.8s-33.6 12.8-44.8 1.6zM112 368c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 36.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-36.8-36.8c-12.8-11.2-12.8-32 0-44.8zM820.8 606.4c-40 80-121.6 129.6-212.8 129.6-35.2 0-67.2-8-97.6-20.8-35.2 52.8-94.4 84.8-158.4 84.8-105.6 0-192-86.4-192-192 0-62.4 30.4-120 80-155.2-9.6-20.8-16-43.2-16-68.8 0-88 72-160 160-160h416c105.6 0 192 86.4 192 192 0 99.2-75.2 180.8-171.2 190.4zM224 608c0 70.4 57.6 128 128 128 41.6 0 80-20.8 104-54.4-41.6-33.6-72-83.2-83.2-137.6-36.8-3.2-68.8-17.6-96-40-32 24-52.8 62.4-52.8 104zM800 288h-416c-52.8 0-96 43.2-96 96s43.2 96 96 96c3.2 0 6.4 0 9.6-1.6l36.8-4.8 1.6 33.6c8 92.8 84.8 164.8 176 164.8 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128s-57.6-128-128-128z" />
+<glyph unicode="&#xe989;" glyph-name="snow-f" horiz-adv-x="896" d="M702.4 764.8c-3.2 0-4.8 0-8 0-40 89.6-128 152-232 152-128 0-232-94.4-251.2-219.2-14.4 4.8-32 8-48 8-89.6-1.6-163.2-75.2-163.2-168 0-91.2 73.6-166.4 164.8-166.4h536c0 0 1.6 0 1.6 0 107.2 0 193.6 88 193.6 196.8s-86.4 196.8-193.6 196.8zM192 316.8c-22.4 0-40-17.6-40-40s17.6-40 40-40c22.4 0 40 17.6 40 40 0 20.8-17.6 40-40 40zM320 187.2c-22.4 0-40-17.6-40-40s17.6-40 40-40c22.4 0 40 17.6 40 40s-17.6 40-40 40zM448 316.8c-22.4 0-40-17.6-40-40s17.6-40 40-40c22.4 0 40 17.6 40 40 0 20.8-17.6 40-40 40zM704 236.8c22.4 0 40 17.6 40 40s-17.6 40-40 40-40-17.6-40-40c0-22.4 17.6-40 40-40zM576 187.2c-22.4 0-40-17.6-40-40s17.6-40 40-40c22.4 0 40 17.6 40 40s-17.6 40-40 40zM192 60.8c-22.4 0-40-17.6-40-40s17.6-40 40-40c22.4 0 40 17.6 40 40 0 20.8-17.6 40-40 40zM448 60.8c-22.4 0-40-17.6-40-40s17.6-40 40-40c22.4 0 40 17.6 40 40 0 20.8-17.6 40-40 40zM704 60.8c-22.4 0-40-17.6-40-40s17.6-40 40-40 40 17.6 40 40c0 20.8-17.6 40-40 40z" />
+<glyph unicode="&#xe98a;" glyph-name="snow-full-moon-1-f" horiz-adv-x="800" d="M636.8 668.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h436.8c89.6 0 163.2 70.4 163.2 158.4-1.6 83.2-75.2 155.2-164.8 155.2zM150.4 673.6c24 75.2 81.6 134.4 153.6 166.4-27.2 51.2-81.6 88-144 88-88 0-160-72-160-160 0-56 28.8-105.6 72-134.4 22.4 19.2 49.6 32 78.4 40zM225.6 256c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM161.6 128c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM225.6 0c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM353.6 192c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM385.6 64c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM513.6 128c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM545.6 256c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM545.6 0c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM673.6 64c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM705.6 224c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
+<glyph unicode="&#xe98b;" glyph-name="snow-full-moon-1" horiz-adv-x="864" d="M0 768c0-76.8 44.8-142.4 108.8-172.8-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4s-84.8 187.2-192 190.4c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-105.6 0-192-86.4-192-192zM449.6 768c76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2h32l3.2 27.2c11.2 92.8 91.2 160 184 160zM316.8 793.6c-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-65.6 4.8-118.4 59.2-118.4 128 0 70.4 57.6 128 128 128 60.8 0 113.6-43.2 124.8-102.4zM246.4 246.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 17.6-9.6 22.4zM384 160c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4zM566.4 246.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 17.6-9.6 22.4zM544 96c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4zM384 0c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6zM201.6-9.6c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM544-64c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6zM649.6 54.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM726.4 169.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6zM137.6 118.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0z" />
+<glyph unicode="&#xe98c;" glyph-name="snow-full-moon-2-f" horiz-adv-x="800" d="M248 195.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM360 67.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM472 195.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM696 195.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM584 67.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM635.2 608c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h436.8c89.6 0 163.2 70.4 163.2 158.4-1.6 84.8-75.2 155.2-164.8 155.2zM148.8 612.8c24 75.2 81.6 134.4 153.6 166.4-25.6 52.8-80 88-142.4 88-88 0-160-72-160-160 0-56 28.8-105.6 72-134.4 20.8 19.2 48 33.6 76.8 40z" />
+<glyph unicode="&#xe98d;" glyph-name="snow-full-moon-2" horiz-adv-x="864" d="M0 720c0-76.8 44.8-142.4 108.8-172.8-27.2-28.8-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4s-84.8 187.2-192 190.4c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-105.6 0-192-86.4-192-192zM449.6 720c76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 92.8 91.2 160 184 160zM316.8 745.6c-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-65.6 4.8-118.4 59.2-118.4 128 0 70.4 57.6 128 128 128 60.8 0 113.6-43.2 124.8-102.4zM288 32c0-27.2 20.8-48 48-48s48 20.8 48 48c0 27.2-20.8 48-48 48s-48-22.4-48-48zM544 32c0-27.2 20.8-48 48-48s48 20.8 48 48c0 27.2-20.8 48-48 48s-48-22.4-48-48zM160 160c0-27.2 20.8-48 48-48s48 20.8 48 48c0 27.2-20.8 48-48 48s-48-22.4-48-48zM416 160c0-27.2 20.8-48 48-48s48 20.8 48 48c0 27.2-20.8 48-48 48s-48-22.4-48-48zM672 160c0-27.2 20.8-48 48-48s48 20.8 48 48c0 27.2-20.8 48-48 48s-48-22.4-48-48z" />
+<glyph unicode="&#xe98e;" glyph-name="snow-full-moon-3-f" horiz-adv-x="800" d="M272 208c0 17.6-14.4 32-32 32 0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32zM496 208c0 17.6-14.4 32-32 32v0c0 17.6-14.4 32-32 32v0c-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0 0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32zM358.4 80v0 0c0 17.6-14.4 32-32 32v0c-17.6 0-32-14.4-32-32-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32s-14.4 32-32 32zM569.6 80v0c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM688 240c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM636.8 652.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h436.8c89.6 0 163.2 70.4 163.2 158.4-1.6 83.2-75.2 155.2-164.8 155.2zM150.4 657.6c24 75.2 81.6 134.4 153.6 166.4-27.2 52.8-81.6 88-144 88-88 0-160-72-160-160 0-56 28.8-105.6 72-134.4 22.4 19.2 49.6 32 78.4 40z" />
+<glyph unicode="&#xe98f;" glyph-name="snow-full-moon-3" horiz-adv-x="864" d="M672 684.8c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-105.6 0-192-86.4-192-192 0-76.8 44.8-142.4 108.8-172.8-27.2-28.8-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4s-84.8 187.2-192 190.4zM64 752c0 70.4 57.6 128 128 128 60.8 0 113.6-43.2 124.8-102.4-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-65.6 4.8-118.4 59.2-118.4 128zM668.8 368h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-65.6-59.2-123.2-131.2-123.2zM256 208c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0 0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM448 240c0 0 0 0 0 0-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0 0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32s-14.4 32-32 32v0c0 17.6-14.4 32-32 32zM342.4 80c0 0 0 0 0 0-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32s-14.4 32-32 32v0c0 17.6-14.4 32-32 32zM553.6 80c-17.6 0-32-14.4-32-32-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32c17.6 0 32 14.4 32 32s-14.4 32-32 32c0 17.6-14.4 32-32 32zM640 144c0-17.6 14.4-32 32-32s32 14.4 32 32v0 0c17.6 0 32 14.4 32 32s-14.4 32-32 32v0c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32z" />
+<glyph unicode="&#xe990;" glyph-name="snow-night-1-f" horiz-adv-x="800" d="M636.8 344c89.6 0 163.2 70.4 163.2 158.4s-73.6 158.4-163.2 158.4c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2l435.2-3.2zM72 625.6c22.4 17.6 48 32 76.8 38.4 24 75.2 81.6 134.4 153.6 166.4-25.6 52.8-80 88-142.4 88-4.8 0-8-1.6-11.2-1.6 6.4-14.4 9.6-30.4 9.6-46.4 0-62.4-49.6-112-112-112-16 0-32 3.2-44.8 9.6 0-3.2-1.6-6.4-1.6-9.6 0-54.4 28.8-104 72-132.8zM225.6 264c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM161.6 136c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM225.6 8c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM353.6 200c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM385.6 72c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM513.6 136c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM545.6 264c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM545.6 8c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM673.6 72c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM705.6 232c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
+<glyph unicode="&#xe991;" glyph-name="snow-night-1" horiz-adv-x="864" d="M864 510.4c0 104-84.8 187.2-192 190.4-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-3.2 0-8 0-11.2-1.6-1.6 0-1.6 0-3.2 0l-46.4-3.2 19.2-41.6c4.8-11.2 8-22.4 8-33.6 0-44.8-35.2-80-80-80-11.2 0-22.4 1.6-32 6.4l-41.6 19.2-3.2-44.8v-1.6c-1.6-4.8-1.6-8-1.6-11.2 0-76.8 44.8-142.4 108.8-172.8-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4zM67.2 737.6c3.2 0 6.4 0 11.2 0 80 0 144 64 144 144 0 4.8 0 8 0 12.8 48-11.2 84.8-49.6 96-97.6-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-57.6 0-104 40-116.8 94.4zM232 384c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4l-436.8 3.2zM256-32c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4zM160 64c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6zM246.4 246.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 17.6-9.6 22.4zM384 160c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4zM384 0c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6zM544 96c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4zM566.4 246.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 17.6-9.6 22.4zM726.4 169.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-12.8 11.2-33.6 11.2-44.8 0-6.4-6.4-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6zM649.6 54.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0zM544-64c8 0 16 3.2 22.4 9.6s9.6 14.4 9.6 22.4c0 8-3.2 16-9.6 22.4-12.8 11.2-33.6 11.2-44.8 0-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6z" />
+<glyph unicode="&#xe992;" glyph-name="snow-night-2-f" horiz-adv-x="800" d="M248 195.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM320 107.2c-22.4 0-40-17.6-40-40s17.6-40 40-40c22.4 0 40 17.6 40 40s-17.6 40-40 40zM472 195.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM696 195.2c0-22.091-17.909-40-40-40s-40 17.909-40 40c0 22.091 17.909 40 40 40s40-17.909 40-40zM544 107.2c-22.4 0-40-17.6-40-40s17.6-40 40-40c22.4 0 40 17.6 40 40s-17.6 40-40 40zM636.8 292.8c89.6 0 163.2 70.4 163.2 158.4s-73.6 158.4-163.2 158.4c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2l435.2-3.2zM72 574.4c22.4 17.6 48 32 76.8 38.4 24 75.2 81.6 134.4 153.6 166.4-25.6 52.8-80 88-142.4 88-4.8 0-8-1.6-11.2-1.6 6.4-14.4 9.6-30.4 9.6-46.4 0-62.4-49.6-112-112-112-16 0-32 3.2-44.8 9.6 0-3.2-1.6-6.4-1.6-9.6 0-54.4 28.8-104 72-132.8z" />
+<glyph unicode="&#xe993;" glyph-name="snow-night-2" horiz-adv-x="864" d="M671.966 652.8c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-3.2 0-8 0-11.2-1.6-1.6 0-1.6 0-3.2 0l-46.4-3.2 19.2-41.6c4.8-11.2 8-22.4 8-33.6 0-44.8-35.2-80-80-80-11.2 0-22.4 1.6-32 6.4l-41.6 17.6-3.2-44.8v-1.6c-1.6-3.2-1.6-6.4-1.6-9.6 0-76.8 44.8-142.4 108.8-172.8-27.2-28.8-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4s-84.8 187.2-192 190.4zM67.166 689.6c3.2 0 6.4 0 11.2 0 80 0 144 64 144 144 0 4.8 0 8 0 11.2 48-11.2 84.8-49.6 96-97.6-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-57.6 3.2-104 41.6-116.8 96zM668.766 336h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-65.6-59.2-123.2-131.2-123.2zM207.966 208c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 27.2-20.8 48-48 48zM463.966 208c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 27.2-20.8 48-48 48zM719.966 208c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 27.2-20.8 48-48 48zM591.966 80c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 25.6-20.8 48-48 48zM335.966 80c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 25.6-20.8 48-48 48z" />
+<glyph unicode="&#xe994;" glyph-name="snow-night-3-f" horiz-adv-x="800" d="M272 208c0 17.6-14.4 32-32 32 0 17.6-14.4 32-32 32s-32-14.4-32-32c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32zM496 208c0 17.6-14.4 32-32 32v0c0 17.6-14.4 32-32 32v0c-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0 0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32zM358.4 80v0 0c0 17.6-14.4 32-32 32v0c-17.6 0-32-14.4-32-32-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32s-14.4 32-32 32zM569.6 80v0c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM688 240c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM636.8 652.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h436.8c89.6 0 163.2 70.4 163.2 158.4-1.6 83.2-75.2 155.2-164.8 155.2zM150.4 657.6c24 75.2 81.6 134.4 153.6 166.4-27.2 52.8-81.6 88-144 88-4.8 0-8-1.6-11.2-1.6 6.4-14.4 9.6-28.8 9.6-46.4 0-62.4-49.6-112-112-112-16 0-32 3.2-44.8 9.6 0-3.2-1.6-6.4-1.6-9.6 0-56 28.8-105.6 72-134.4 22.4 19.2 49.6 32 78.4 40z" />
+<glyph unicode="&#xe995;" glyph-name="snow-night-3" horiz-adv-x="864" d="M672 684.8c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-3.2 0-8 0-11.2-1.6-1.6 0-1.6 0-3.2 0l-46.4-3.2 19.2-41.6c4.8-11.2 8-22.4 8-33.6 0-44.8-35.2-80-80-80-11.2 0-22.4 1.6-32 6.4l-41.6 19.2-3.2-44.8v-1.6c-1.6-4.8-1.6-8-1.6-11.2 0-76.8 44.8-142.4 108.8-172.8-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h436.8c107.2 0 195.2 86.4 195.2 190.4 0 102.4-84.8 187.2-192 190.4zM67.2 721.6c3.2 0 6.4 0 11.2 0 80 0 144 64 144 144 0 4.8 0 8 0 12.8 48-11.2 84.8-49.6 96-97.6-54.4-33.6-94.4-86.4-110.4-148.8-8-1.6-16-3.2-24-4.8-57.6 1.6-104 40-116.8 94.4zM668.8 368h-436.8c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-65.6-59.2-123.2-131.2-123.2zM288 176c0 17.6-14.4 32-32 32 0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32zM512 176c0 17.6-14.4 32-32 32v0c0 17.6-14.4 32-32 32 0 0 0 0 0 0-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32 17.6 0 32 14.4 32 32zM374.4 48v0 0c0 17.6-14.4 32-32 32 0 0 0 0 0 0-17.6 0-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32v0c17.6 0 32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM585.6 48v0c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32zM704 208c0 17.6-14.4 32-32 32s-32-14.4-32-32v0c-17.6 0-32-14.4-32-32s14.4-32 32-32v0c0-17.6 14.4-32 32-32s32 14.4 32 32v0c17.6 0 32 14.4 32 32s-14.4 32-32 32z" />
+<glyph unicode="&#xe996;" glyph-name="snow" horiz-adv-x="960" d="M0 550.4c0-108.8 88-198.4 196.8-198.4h537.6c124.8 0 225.6 102.4 225.6 228.8 0 121.6-94.4 220.8-212.8 227.2-51.2 92.8-147.2 152-252.8 152-129.6 0-241.6-89.6-275.2-212.8-8 1.6-16 1.6-22.4 1.6-108.8 0-196.8-89.6-196.8-198.4zM196.8 684.8c12.8 0 25.6-1.6 38.4-6.4l35.2-11.2 4.8 36.8c16 108.8 110.4 192 219.2 192 86.4 0 166.4-52.8 201.6-132.8l8-19.2 27.2 1.6c89.6 0 161.6-73.6 161.6-164.8 3.2-91.2-68.8-164.8-156.8-164.8h-539.2c-73.6 0-132.8 60.8-132.8 134.4s59.2 134.4 132.8 134.4zM240 288c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 27.2-20.8 48-48 48zM496 192c27.2 0 48 20.8 48 48s-20.8 48-48 48-48-20.8-48-48c0-27.2 20.8-48 48-48zM416 112c0 27.2-20.8 48-48 48s-48-20.8-48-48c0-27.2 20.8-48 48-48s48 20.8 48 48zM624 64c27.2 0 48 20.8 48 48s-20.8 48-48 48-48-20.8-48-48c0-27.2 20.8-48 48-48zM752 288c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 27.2-20.8 48-48 48zM240 32c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 27.2-20.8 48-48 48zM496-64c27.2 0 48 20.8 48 48s-20.8 48-48 48-48-20.8-48-48c0-25.6 20.8-48 48-48zM752 32c-27.2 0-48-20.8-48-48s20.8-48 48-48 48 20.8 48 48c0 27.2-20.8 48-48 48z" />
+<glyph unicode="&#xe997;" glyph-name="snowflake" d="M1024 448c0 17.6-14.4 32-32 32h-83.2l83.2 83.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-128-128h-230.4l160 160h180.8c17.6 0 32 14.4 32 32s-14.4 32-32 32h-116.8l60.8 60.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-60.8-60.8v118.4c0 17.6-14.4 32-32 32s-32-14.4-32-32v-180.8l-160-160v228.8l128 128c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-83.2-83.2v83.2c0 17.6-14.4 32-32 32s-32-14.4-32-32v-83.2l-83.2 83.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l128-128v-228.8l-164.8 163.2v176c0 17.6-14.4 32-32 32s-32-14.4-32-32v-112l-56 56c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l60.8-60.8h-121.6c-17.6 0-32-14.4-32-32s14.4-32 32-32h185.6l160-160h-230.4l-128 128c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l83.2-83.2h-83.2c-17.6 0-32-14.4-32-32s14.4-32 32-32h83.2l-83.2-83.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l128 128h228.8l-163.2-164.8h-180.8c-17.6 0-32-14.4-32-32s14.4-32 32-32h116.8l-56-56c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l56 56v-116.8c0-17.6 14.4-32 32-32s32 14.4 32 32v180.8l164.8 164.8v-228.8l-128-128c-12.8-12.8-12.8-32 0-44.8s32-12.8 44.8 0l83.2 83.2v-84.8c0-17.6 14.4-32 32-32s32 14.4 32 32v83.2l83.2-83.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-128 128v230.4l160-160v-185.6c0-17.6 14.4-32 32-32s32 14.4 32 32v121.6l60.8-60.8c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-56 56h112c17.6 0 32 14.4 32 32s-14.4 32-32 32h-176l-164.8 164.8h228.8l128-128c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-81.6 83.2h83.2c17.6 0 32 14.4 32 32z" />
+<glyph unicode="&#xe998;" glyph-name="sun-1-f" d="M752 448c0-132.548-107.452-240-240-240s-240 107.452-240 240c0 132.548 107.452 240 240 240s240-107.452 240-240zM512 768c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM512 128c-17.6 0-32-14.4-32-32v-128c0-17.6 14.4-32 32-32s32 14.4 32 32v128c0 17.6-14.4 32-32 32zM992 480h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32h128c17.6 0 32 14.4 32 32s-14.4 32-32 32zM192 448c0 17.6-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32h128c17.6 0 32 14.4 32 32zM240 673.6c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM784 222.4c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2zM761.6 665.6c8 0 16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-92.8-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 24-9.6zM240 222.4l-91.2-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8-11.2 11.2-32 11.2-44.8 0z" />
+<glyph unicode="&#xe999;" glyph-name="sun-1" d="M512 192c140.8 0 256 115.2 256 256s-115.2 256-256 256-256-115.2-256-256 115.2-256 256-256zM512 640c105.6 0 192-86.4 192-192s-86.4-192-192-192-192 86.4-192 192 86.4 192 192 192zM512 768c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM544-32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32s32 14.4 32 32zM992 480h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32h128c17.6 0 32 14.4 32 32s-14.4 32-32 32zM32 416h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32zM240 673.6c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM784 222.4c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2zM761.6 665.6c8 0 16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-92.8-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 24-9.6zM240 222.4l-91.2-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8-11.2 11.2-32 11.2-44.8 0z" />
+<glyph unicode="&#xe99a;" glyph-name="sun-2-f" d="M992 480h-225.6c-6.4 46.4-24 89.6-51.2 124.8l160 160c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-160-160c-35.2 27.2-78.4 46.4-124.8 51.2v227.2c0 17.6-14.4 32-32 32s-32-14.4-32-32v-227.2c-46.4-6.4-89.6-24-124.8-51.2l-160 160c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l160-160c-27.2-35.2-46.4-78.4-51.2-124.8h-228.8c-17.6 0-32-14.4-32-32s14.4-32 32-32h227.2c6.4-46.4 24-89.6 51.2-124.8l-160-160c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l160 160c35.2-27.2 78.4-46.4 124.8-51.2v-227.2c0-17.6 14.4-32 32-32s32 14.4 32 32v225.6c46.4 6.4 89.6 24 124.8 51.2l160-160c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-160 160c27.2 35.2 46.4 78.4 51.2 124.8h227.2c17.6 0 32 14.4 32 32 0 19.2-14.4 33.6-32 33.6z" />
+<glyph unicode="&#xe99b;" glyph-name="sun-2" d="M32 416h227.2c6.4-46.4 24-89.6 51.2-124.8l-160-160c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l160 160c35.2-27.2 78.4-46.4 124.8-51.2v-227.2c0-17.6 14.4-32 32-32s32 14.4 32 32v225.6c46.4 6.4 89.6 24 124.8 51.2l160-160c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-160 160c27.2 35.2 46.4 78.4 51.2 124.8h227.2c17.6 0 32 14.4 32 32s-14.4 32-32 32h-225.6c-6.4 46.4-24 89.6-51.2 124.8l160 160c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-160-160c-35.2 27.2-78.4 46.4-124.8 51.2v228.8c0 17.6-14.4 32-32 32s-32-14.4-32-32v-227.2c-46.4-6.4-89.6-24-124.8-51.2l-160 160c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l160-160c-27.2-35.2-46.4-78.4-51.2-124.8h-228.8c-17.6 0-32-14.4-32-32s14.4-32 32-32zM512 640c105.6 0 192-86.4 192-192 0-52.8-20.8-99.2-54.4-134.4 0 0-1.6 0-1.6-1.6 0 0 0-1.6-1.6-1.6-33.6-33.6-81.6-54.4-132.8-54.4 0 0-1.6 0-1.6 0s-1.6 0-1.6 0c-105.6 1.6-190.4 86.4-190.4 192s86.4 192 192 192z" />
+<glyph unicode="&#xe99c;" glyph-name="sun-horizon-1-f" d="M512 560c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM768 304c0-17.6 14.4-32 32-32h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32zM96 272h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32zM992 208h-960c-17.6 0-32-14.4-32-32s14.4-32 32-32h960c17.6 0 32 14.4 32 32s-14.4 32-32 32zM304 467.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM697.6 457.6c8 0 16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-92.8-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 24-9.6zM323.2 272h377.6c1.6 11.2 3.2 20.8 3.2 32 0 105.6-86.4 192-192 192s-192-86.4-192-192c0-11.2 1.6-22.4 3.2-32z" />
+<glyph unicode="&#xe99d;" glyph-name="sun-horizon-1" d="M300.8 227.2c6.4-16 24-25.6 41.6-19.2 16 6.4 25.6 24 19.2 41.6s-9.6 35.2-9.6 54.4c0 88 72 160 160 160s160-72 160-160c0-19.2-3.2-36.8-9.6-54.4-6.4-16 3.2-35.2 19.2-41.6 3.2-1.6 8-1.6 11.2-1.6 12.8 0 25.6 8 30.4 20.8 9.6 24 12.8 49.6 12.8 76.8 0 123.2-100.8 224-224 224s-224-100.8-224-224c0-25.6 4.8-52.8 12.8-76.8zM512 592c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM800 304c0-17.6 14.4-32 32-32h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32zM64 272h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32zM992 176h-960c-17.6 0-32-14.4-32-32s14.4-32 32-32h960c17.6 0 32 14.4 32 32s-14.4 32-32 32zM272 499.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM729.6 489.6c8 0 16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-92.8-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 24-9.6z" />
+<glyph unicode="&#xe99e;" glyph-name="sun-horizon-2-f" horiz-adv-x="832" d="M416 512c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM800 256h-768c-17.6 0-32-14.4-32-32s14.4-32 32-32h768c17.6 0 32 14.4 32 32s-14.4 32-32 32zM617.6 320c-36.8 75.2-113.6 128-201.6 128s-166.4-52.8-201.6-128h403.2zM176 419.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM633.6 409.6c8 0 16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-92.8-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 24-9.6z" />
+<glyph unicode="&#xe99f;" glyph-name="sun-horizon-2" horiz-adv-x="832" d="M416 512c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM32 192h190.4c0 0 0 0 1.6 0s0 0 1.6 0h382.4c0 0 0 0 1.6 0s0 0 1.6 0h188.8c17.6 0 32 14.4 32 32s-14.4 32-32 32h-161.6c-16 108.8-108.8 192-220.8 192s-206.4-83.2-220.8-192h-164.8c-17.6 0-32-14.4-32-32s14.4-32 32-32zM416 384c76.8 0 142.4-54.4 156.8-128h-313.6c14.4 73.6 80 128 156.8 128zM176 419.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM633.6 409.6c8 0 16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-92.8-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 24-9.6z" />
+<glyph unicode="&#xe9a0;" glyph-name="sunrise-f" d="M512 608c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM800 320c0-17.6 14.4-32 32-32h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32zM64 288h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32zM992 160h-448v147.2l41.6-41.6c12.8-12.8 32-12.8 44.8 0s12.8 32 0 44.8l-118.4 118.4-22.4-22.4c0 0 0 0 0 0l-96-96c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l41.6 41.6v-147.2h-448c-17.6 0-32-14.4-32-32s14.4-32 32-32h960c17.6 0 32 14.4 32 32s-14.4 32-32 32zM272 515.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM729.6 505.6c8 0 16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-92.8-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 24-9.6zM310.4 224h35.2c-16 17.6-24 40-24 64 0 25.6 9.6 49.6 28.8 67.2l161.6 161.6 163.2-163.2c36.8-36.8 36.8-94.4 3.2-131.2h35.2c14.4 28.8 22.4 62.4 22.4 96 0 123.2-100.8 224-224 224s-224-100.8-224-224c0-32 8-65.6 22.4-94.4z" />
+<glyph unicode="&#xe9a1;" glyph-name="sunrise" d="M512 608c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM800 320c0-17.6 14.4-32 32-32h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32zM64 288h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32zM32 96h960c17.6 0 32 14.4 32 32s-14.4 32-32 32h-448v147.2l41.6-41.6c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-118.4 118.4-22.4-22.4c0 0 0 0 0 0l-96-96c-12.8-12.8-12.8-32 0-44.8s32-12.8 44.8 0l41.6 41.6v-147.2h-448c-17.6 0-32-14.4-32-32s14.4-32 32-32zM272 515.2c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM729.6 505.6c8 0 16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-92.8-91.2c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 24-9.6zM300.8 244.8c6.4-16 24-25.6 41.6-19.2 16 6.4 25.6 24 19.2 41.6-6.4 16-9.6 35.2-9.6 52.8 0 88 72 160 160 160s160-72 160-160c0-19.2-3.2-36.8-9.6-54.4-6.4-16 3.2-35.2 19.2-41.6 3.2-1.6 8-1.6 11.2-1.6 12.8 0 25.6 8 30.4 20.8 9.6 24 14.4 51.2 14.4 76.8 0 123.2-100.8 224-224 224s-224-100.8-224-224c-1.6-25.6 3.2-51.2 11.2-75.2z" />
+<glyph unicode="&#xe9a2;" glyph-name="sunset-f" d="M512 694.4c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM768 438.4c0-17.6 14.4-32 32-32h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32zM96 406.4h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32zM992 342.4h-960c-17.6 0-32-14.4-32-32s14.4-32 32-32h448v-147.2l-41.6 41.6c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l118.4-118.4 118.4 118.4c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-41.6-41.6v147.2h448c17.6 0 32 14.4 32 32s-14.4 32-32 32zM304 601.6c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM697.6 592c8 0 16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-91.2-91.2c-12.8-12.8-12.8-32 0-44.8 4.8-6.4 12.8-9.6 22.4-9.6zM323.2 406.4h377.6c1.6 11.2 3.2 20.8 3.2 32 0 105.6-86.4 192-192 192s-192-86.4-192-192c0-11.2 1.6-20.8 3.2-32z" />
+<glyph unicode="&#xe9a3;" glyph-name="sunset" d="M512 726.4c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32s-32-14.4-32-32v-128c0-17.6 14.4-32 32-32zM800 438.4c0-17.6 14.4-32 32-32h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32zM64 406.4h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32zM32 246.4h448v-147.2l-41.6 41.6c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l118.4-118.4 22.4 22.4c0 0 0 0 0 0l96 96c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-41.6-41.6v147.2h448c17.6 0 32 14.4 32 32s-14.4 32-32 32h-960c-17.6 0-32-14.4-32-32s14.4-32 32-32zM272 633.6c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-91.2 91.2c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l91.2-91.2zM729.6 624c8 0 16 3.2 22.4 9.6l91.2 91.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-91.2-91.2c-12.8-12.8-12.8-32 0-44.8 4.8-6.4 12.8-9.6 22.4-9.6zM300.8 363.2c6.4-16 24-25.6 41.6-19.2 16 6.4 25.6 24 19.2 41.6s-9.6 35.2-9.6 54.4c0 88 72 160 160 160s160-72 160-160c0-19.2-3.2-36.8-9.6-54.4-6.4-16 3.2-35.2 19.2-41.6 3.2-1.6 8-1.6 11.2-1.6 12.8 0 25.6 8 30.4 20.8 9.6 24 14.4 51.2 14.4 76.8 0 123.2-100.8 224-224 224s-224-100.8-224-224c-1.6-27.2 3.2-52.8 11.2-76.8z" />
+<glyph unicode="&#xe9a4;" glyph-name="thermometer-1-f" horiz-adv-x="448" d="M352 376v424c0 70.4-57.6 128-128 128s-128-57.6-128-128v-424c-57.6-40-96-107.2-96-184 0-123.2 100.8-224 224-224s224 100.8 224 224c0 76.8-38.4 144-96 184zM224 96c-52.8 0-96 43.2-96 96 0 41.6 27.2 76.8 64 91.2v516.8c0 17.6 14.4 32 32 32s32-14.4 32-32v-516.8c36.8-12.8 64-48 64-91.2 0-52.8-43.2-96-96-96z" />
+<glyph unicode="&#xe9a5;" glyph-name="thermometer-1" horiz-adv-x="512" d="M416 392v408c0 88-72 160-160 160s-160-72-160-160v-408c-60.8-48-96-121.6-96-200 0-140.8 115.2-256 256-256s256 115.2 256 256c0 78.4-35.2 152-96 200zM256 0c-105.6 0-192 86.4-192 192 0 62.4 30.4 121.6 81.6 156.8l14.4 9.6v441.6c0 52.8 43.2 96 96 96s96-43.2 96-96v-441.6l14.4-9.6c51.2-35.2 81.6-94.4 81.6-156.8 0-105.6-86.4-192-192-192zM288 315.2v484.8c0 17.6-14.4 32-32 32s-32-14.4-32-32v-484.8c-54.4-14.4-96-64-96-123.2 0-70.4 57.6-128 128-128s128 57.6 128 128c0 59.2-41.6 108.8-96 123.2zM256 128c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64z" />
+<glyph unicode="&#xe9a6;" glyph-name="thermometer-2-f" horiz-adv-x="448" d="M352 376v424c0 70.4-57.6 128-128 128s-128-57.6-128-128v-424c-57.6-40-96-107.2-96-184 0-123.2 100.8-224 224-224s224 100.8 224 224c0 76.8-38.4 144-96 184zM224 96c-52.8 0-96 43.2-96 96 0 41.6 27.2 76.8 64 91.2v388.8c0 17.6 14.4 32 32 32s32-14.4 32-32v-388.8c36.8-12.8 64-48 64-91.2 0-52.8-43.2-96-96-96z" />
+<glyph unicode="&#xe9a7;" glyph-name="thermometer-2" horiz-adv-x="512" d="M416 392v408c0 88-72 160-160 160s-160-72-160-160v-408c-60.8-48-96-121.6-96-200 0-140.8 115.2-256 256-256s256 115.2 256 256c0 78.4-35.2 152-96 200zM256 0c-105.6 0-192 86.4-192 192 0 62.4 30.4 121.6 81.6 156.8l14.4 9.6v441.6c0 52.8 43.2 96 96 96s96-43.2 96-96v-441.6l14.4-9.6c51.2-35.2 81.6-94.4 81.6-156.8 0-105.6-86.4-192-192-192zM288 315.2v356.8c0 17.6-14.4 32-32 32s-32-14.4-32-32v-356.8c-54.4-14.4-96-64-96-123.2 0-70.4 57.6-128 128-128s128 57.6 128 128c0 59.2-41.6 108.8-96 123.2zM256 128c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64z" />
+<glyph unicode="&#xe9a8;" glyph-name="thermometer-3-f" horiz-adv-x="448" d="M352 376v424c0 70.4-57.6 128-128 128s-128-57.6-128-128v-424c-57.6-40-96-107.2-96-184 0-123.2 100.8-224 224-224s224 100.8 224 224c0 76.8-38.4 144-96 184zM224 96c-52.8 0-96 43.2-96 96 0 41.6 27.2 76.8 64 91.2v260.8c0 17.6 14.4 32 32 32s32-14.4 32-32v-260.8c36.8-12.8 64-48 64-91.2 0-52.8-43.2-96-96-96z" />
+<glyph unicode="&#xe9a9;" glyph-name="thermometer-3" horiz-adv-x="512" d="M416 392v408c0 88-72 160-160 160s-160-72-160-160v-408c-60.8-48-96-121.6-96-200 0-140.8 115.2-256 256-256s256 115.2 256 256c0 78.4-35.2 152-96 200zM256 0c-105.6 0-192 86.4-192 192 0 62.4 30.4 121.6 81.6 156.8l14.4 9.6v441.6c0 52.8 43.2 96 96 96s96-43.2 96-96v-441.6l14.4-9.6c51.2-35.2 81.6-94.4 81.6-156.8 0-105.6-86.4-192-192-192zM288 315.2v228.8c0 17.6-14.4 32-32 32s-32-14.4-32-32v-228.8c-54.4-14.4-96-64-96-123.2 0-70.4 57.6-128 128-128s128 57.6 128 128c0 59.2-41.6 108.8-96 123.2zM256 128c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64z" />
+<glyph unicode="&#xe9aa;" glyph-name="thermometer-4-f" horiz-adv-x="448" d="M352 376v424c0 70.4-57.6 128-128 128s-128-57.6-128-128v-424c-57.6-40-96-107.2-96-184 0-123.2 100.8-224 224-224s224 100.8 224 224c0 76.8-38.4 144-96 184zM224 96c-52.8 0-96 43.2-96 96 0 41.6 27.2 76.8 64 91.2v132.8c0 17.6 14.4 32 32 32s32-14.4 32-32v-132.8c36.8-12.8 64-48 64-91.2 0-52.8-43.2-96-96-96z" />
+<glyph unicode="&#xe9ab;" glyph-name="thermometer-4" horiz-adv-x="512" d="M416 392v408c0 88-72 160-160 160s-160-72-160-160v-408c-60.8-48-96-121.6-96-200 0-140.8 115.2-256 256-256s256 115.2 256 256c0 78.4-35.2 152-96 200zM256 0c-105.6 0-192 86.4-192 192 0 62.4 30.4 121.6 81.6 156.8l14.4 9.6v441.6c0 52.8 43.2 96 96 96s96-43.2 96-96v-441.6l14.4-9.6c51.2-35.2 81.6-94.4 81.6-156.8 0-105.6-86.4-192-192-192zM288 315.2v100.8c0 17.6-14.4 32-32 32s-32-14.4-32-32v-100.8c-54.4-14.4-96-64-96-123.2 0-70.4 57.6-128 128-128s128 57.6 128 128c0 59.2-41.6 108.8-96 123.2zM256 128c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64z" />
+<glyph unicode="&#xe9ac;" glyph-name="thermometer-5-f" horiz-adv-x="448" d="M352 376v424c0 70.4-57.6 128-128 128s-128-57.6-128-128v-424c-57.6-40-96-107.2-96-184 0-123.2 100.8-224 224-224s224 100.8 224 224c0 76.8-38.4 144-96 184zM224 96c-52.8 0-96 43.2-96 96s43.2 96 96 96c52.8 0 96-43.2 96-96s-43.2-96-96-96z" />
+<glyph unicode="&#xe9ad;" glyph-name="thermometer-5" horiz-adv-x="512" d="M416 392v408c0 88-72 160-160 160s-160-72-160-160v-408c-60.8-48-96-121.6-96-200 0-140.8 115.2-256 256-256s256 115.2 256 256c0 78.4-35.2 152-96 200zM256 0c-105.6 0-192 86.4-192 192 0 62.4 30.4 121.6 81.6 156.8l14.4 9.6v441.6c0 52.8 43.2 96 96 96s96-43.2 96-96v-441.6l14.4-9.6c51.2-35.2 81.6-94.4 81.6-156.8 0-105.6-86.4-192-192-192zM256 320c-70.4 0-128-57.6-128-128s57.6-128 128-128 128 57.6 128 128-57.6 128-128 128zM256 128c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64z" />
+<glyph unicode="&#xe9ae;" glyph-name="thunderbolt-1-f" horiz-adv-x="608" d="M448 928l-448-512h227.2l-99.2-448 480 544h-224z" />
+<glyph unicode="&#xe9af;" glyph-name="thunderbolt-1" horiz-adv-x="656" d="M121.6-64l102.4 460.8h-224l491.2 563.2-65.6-424h224l-528-600zM121.6 452.8h171.2l-70.4-318.4 305.6 345.6h-166.4l46.4 299.2-286.4-326.4z" />
+<glyph unicode="&#xe9b0;" glyph-name="thunderbolt-2-f" horiz-adv-x="576" d="M544 928h-352l-192-480h262.4l-166.4-480 480 608h-224z" />
+<glyph unicode="&#xe9b1;" glyph-name="thunderbolt-2" horiz-adv-x="608" d="M44.8-64l188.8 544h-233.6l192 480h377.6l-169.6-310.4h208l-563.2-713.6zM83.2 536h230.4l-105.6-302.4 283.2 358.4h-187.2l169.6 312h-243.2l-147.2-368z" />
+<glyph unicode="&#xe9b2;" glyph-name="thunderstorm-day-1-f" horiz-adv-x="960" d="M480-64c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l112 139.2h-128l200 252.8c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-30.4 4.8-44.8l-118.4-147.2h128l-193.6-243.2c-6.4-8-16-12.8-25.6-12.8zM352 816c17.6 0 32 14.4 32 32v80c0 17.6-14.4 32-32 32s-32-14.4-32-32v-80c0-17.6 14.4-32 32-32zM144 608c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32s14.4-32 32-32h80c17.6 0 32 14.4 32 32zM164.8 750.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-52.8 52.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l52.8-52.8zM516.8 740.8c8 0 16 3.2 22.4 9.6l52.8 51.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-4.8 14.4-8 22.4-8zM164.8 465.6l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM460.8 724.8c-28.8 25.6-67.2 43.2-108.8 43.2-88 0-160-72-160-160 0-41.6 16-78.4 40-105.6 28.8 35.2 68.8 62.4 115.2 70.4 19.2 62.4 59.2 116.8 113.6 152zM800 576c-32 75.2-105.6 128-192 128-110.4 0-200-84.8-208-193.6-4.8 0-11.2 1.6-17.6 1.6-70.4 0-128-57.6-128-128s57.6-128 128-128h75.2l131.2 163.2c17.6 22.4 46.4 36.8 75.2 36.8 22.4 0 43.2-8 59.2-20.8 20.8-16 32-38.4 35.2-64s-4.8-51.2-20.8-70.4l-32-44.8h94.4c88 0 160 72 160 160s-72 160-160 160z" />
+<glyph unicode="&#xe9b3;" glyph-name="thunderstorm-day-1" horiz-adv-x="992" d="M684.8 384c-14.4 11.2-33.6 9.6-44.8-4.8l-201.6-251.2h128l-112-139.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l195.2 241.6h-128l118.4 147.2c11.2 14.4 9.6 33.6-4.8 44.8zM320 928v-64c0-17.6 14.4-32 32-32s32 14.4 32 32v64c0 17.6-14.4 32-32 32s-32-14.4-32-32zM32 640c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32h-64zM112 801.6l36.8-36.8c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-36.8 36.8c-12.8 12.8-32 12.8-44.8 0-12.8-11.2-12.8-32 0-44.8zM510.4 766.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 35.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-36.8-36.8c-12.8-11.2-12.8-32 0-43.2zM112 368c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 36.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8zM992 416c0 99.2-75.2 180.8-171.2 190.4-40 80-121.6 129.6-212.8 129.6-35.2 0-67.2-8-97.6-20.8-35.2 51.2-94.4 84.8-158.4 84.8-105.6 0-192-86.4-192-192 0-62.4 30.4-120 80-155.2-9.6-20.8-16-43.2-16-68.8 0-88 72-160 160-160h64c17.6 0 32 14.4 32 32s-14.4 32-32 32h-64c-52.8 0-96 43.2-96 96s43.2 96 96 96c3.2 0 6.4 0 9.6-1.6l36.8-4.8 1.6 33.6c8 92.8 84.8 164.8 176 164.8 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128s-57.6-128-128-128h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c105.6 0 192 86.4 192 192zM372.8 544c-36.8-3.2-68.8-17.6-96-40-32 22.4-52.8 62.4-52.8 104 0 70.4 57.6 128 128 128 41.6 0 80-20.8 104-54.4-41.6-35.2-72-83.2-83.2-137.6z" />
+<glyph unicode="&#xe9b4;" glyph-name="thunderstorm-day-2-f" horiz-adv-x="960" d="M196.8-64c-6.4 0-14.4 1.6-20.8 6.4-14.4 11.2-16 32-4.8 44.8l19.2 24c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-32 4.8-44.8l-19.2-24c-4.8-6.4-14.4-11.2-24-11.2zM281.6 43.2c-6.4 0-14.4 3.2-20.8 8-14.4 11.2-16 32-4.8 44.8l70.4 84.8c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-32 4.8-44.8l-70.4-84.8c-4.8-9.6-14.4-12.8-24-12.8zM678.4-64c-6.4 0-14.4 1.6-20.8 6.4-14.4 11.2-16 32-4.8 44.8l56 70.4c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-30.4 4.8-44.8l-54.4-68.8c-6.4-8-16-12.8-25.6-12.8zM806.4 96c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l25.6 32c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-25.6-32c-6.4-8-16-11.2-25.6-11.2zM480-64c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l112 139.2h-128l200 252.8c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-30.4 4.8-44.8l-118.4-147.2h128l-193.6-243.2c-6.4-8-16-12.8-25.6-12.8zM352 816c17.6 0 32 14.4 32 32v80c0 17.6-14.4 32-32 32s-32-14.4-32-32v-80c0-17.6 14.4-32 32-32zM144 608c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32s14.4-32 32-32h80c17.6 0 32 14.4 32 32zM164.8 750.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-52.8 52.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l52.8-52.8zM516.8 740.8c8 0 16 3.2 22.4 9.6l52.8 51.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-4.8 14.4-8 22.4-8zM164.8 465.6l-52.8-52.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l52.8 52.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0zM460.8 724.8c-28.8 25.6-67.2 43.2-108.8 43.2-88 0-160-72-160-160 0-41.6 16-78.4 40-105.6 28.8 35.2 68.8 62.4 115.2 70.4 19.2 62.4 59.2 116.8 113.6 152zM800 576c-32 75.2-105.6 128-192 128-110.4 0-200-84.8-208-193.6-4.8 0-11.2 1.6-17.6 1.6-70.4 0-128-57.6-128-128s57.6-128 128-128h75.2l131.2 163.2c17.6 22.4 46.4 36.8 75.2 36.8 22.4 0 43.2-8 59.2-20.8 20.8-16 32-38.4 35.2-64s-4.8-51.2-20.8-70.4l-32-44.8h94.4c88 0 160 72 160 160s-72 160-160 160z" />
+<glyph unicode="&#xe9b5;" glyph-name="thunderstorm-day-2" horiz-adv-x="992" d="M172.8-11.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 20.8-6.4 9.6 0 19.2 4.8 25.6 11.2l19.2 24c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-20.8-24zM307.2 54.4l70.4 84.8c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-70.4-84.8c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-8 20.8-8 8 1.6 17.6 4.8 24 12.8zM659.2-56c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 11.2l56 70.4c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-56-70.4c-11.2-14.4-9.6-33.6 4.8-44.8zM806.4 96c9.6 0 19.2 4.8 25.6 12.8l25.6 32c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-25.6-32c-11.2-14.4-9.6-33.6 4.8-44.8 4.8-6.4 12.8-8 19.2-8zM684.8 384c-14.4 11.2-33.6 9.6-44.8-4.8l-201.6-251.2h128l-112-139.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l195.2 241.6h-128l118.4 147.2c11.2 14.4 9.6 33.6-4.8 44.8zM352 960c-17.6 0-32-14.4-32-32v-64c0-17.6 14.4-32 32-32s32 14.4 32 32v64c0 17.6-14.4 32-32 32zM0 608c0-17.6 14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32zM193.6 766.4c12.8 12.8 12.8 32 0 44.8l-36.8 36.8c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l36.8-36.8c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6zM532.8 756.8c8 0 16 3.2 22.4 9.6l36.8 35.2c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8 6.4-4.8 14.4-8 22.4-8zM148.8 449.6l-36.8-36.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6l36.8 36.8c12.8 12.8 12.8 32 0 44.8-12.8 11.2-32 11.2-44.8 0zM820.8 606.4c-40 80-121.6 129.6-212.8 129.6-35.2 0-67.2-8-97.6-20.8-35.2 51.2-94.4 84.8-158.4 84.8-105.6 0-192-86.4-192-192 0-62.4 30.4-120 80-155.2-9.6-20.8-16-43.2-16-68.8 0-88 72-160 160-160h64c17.6 0 32 14.4 32 32s-14.4 32-32 32h-64c-52.8 0-96 43.2-96 96s43.2 96 96 96c3.2 0 6.4 0 9.6-1.6l36.8-4.8 1.6 33.6c8 92.8 84.8 164.8 176 164.8 72 0 134.4-43.2 163.2-108.8l8-19.2h20.8c70.4 0 128-57.6 128-128s-57.6-128-128-128h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c105.6 0 192 86.4 192 192 0 99.2-75.2 180.8-171.2 190.4zM372.8 544c-36.8-3.2-68.8-17.6-96-40-32 22.4-52.8 62.4-52.8 104 0 70.4 57.6 128 128 128 41.6 0 80-20.8 104-54.4-41.6-35.2-72-83.2-83.2-137.6z" />
+<glyph unicode="&#xe9b6;" glyph-name="thunderstorm-f" horiz-adv-x="960" d="M358.4-16c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l112 139.2h-128l201.6 251.2c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-30.4 4.8-44.8l-118.4-145.6h128l-195.2-243.2c-6.4-8-16-12.8-25.6-12.8zM752 752c-3.2 0-4.8 0-8 0-43.2 92.8-137.6 160-248 160-136 0-249.6-100.8-268.8-232-16 4.8-33.6 8-51.2 8-97.6 0-176-80-176-176 0-97.6 78.4-176 176-176h187.2l105.6 132.8c17.6 22.4 46.4 36.8 75.2 36.8 22.4 0 43.2-8 59.2-20.8 20.8-16 32-38.4 35.2-64s-4.8-51.2-20.8-70.4l-8-14.4h140.8c0 0 1.6 0 1.6 0 115.2 0 208 92.8 208 208 0 113.6-92.8 208-208 208z" />
+<glyph unicode="&#xe9b7;" glyph-name="thunderstorm-full-moon-1-f" horiz-adv-x="800" d="M294.4-16c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l112 139.2h-128l201.6 251.2c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-30.4 4.8-44.8l-120-145.6h128l-193.6-243.2c-6.4-8-16-12.8-25.6-12.8zM150.4 657.6c24 75.2 81.6 134.4 153.6 166.4-27.2 51.2-81.6 88-144 88-88 0-160-72-160-160 0-56 28.8-105.6 72-134.4 22.4 19.2 49.6 32 78.4 40zM636.8 651.2c-4.8 0-11.2 0-16-1.6-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h99.2l105.6 131.2c17.6 22.4 46.4 36.8 75.2 36.8 22.4 0 43.2-8 59.2-20.8 20.8-16 32-38.4 35.2-64s-4.8-51.2-20.8-70.4l-9.6-12.8h92.8c89.6 0 163.2 70.4 163.2 158.4-1.6 86.4-75.2 156.8-164.8 156.8z" />
+<glyph unicode="&#xe9b8;" glyph-name="thunderstorm-full-moon-1" horiz-adv-x="864" d="M531.2 416c-14.4 11.2-33.6 9.6-44.8-4.8l-201.6-251.2h128l-112-139.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l195.2 241.6h-128l118.4 147.2c11.2 14.4 9.6 33.6-4.8 44.8zM672 667.2c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 81.6-96 140.8-184 140.8-105.6 0-192-86.4-192-192 0-76.8 44.8-142.4 108.8-172.8-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h88c17.6 0 32 14.4 32 32s-14.4 32-32 32h-88c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-3.2 3.2 30.4c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4l-60.8 3.2c-17.6 0-32-14.4-32-32s14.4-32 32-32v0h60.8c107.2 0 195.2 86.4 195.2 190.4 0 102.4-84.8 187.2-192 188.8zM208 612.8c-8-1.6-16-3.2-24-4.8-67.2 4.8-120 59.2-120 128 0 70.4 57.6 128 128 128 60.8 0 113.6-43.2 124.8-102.4-54.4-32-94.4-84.8-108.8-148.8z" />
+<glyph unicode="&#xe9b9;" glyph-name="thunderstorm-full-moon-2-f" horiz-adv-x="864" d="M35.2-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l44.8 56c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-44.8-56c-6.4-6.4-16-11.2-25.6-11.2zM145.6 105.6c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l94.4 118.4c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-94.4-118.4c-6.4-6.4-16-11.2-25.6-11.2zM547.2-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l108.8 136c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-108.8-136c-6.4-6.4-16-11.2-25.6-11.2zM726.4 192c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l25.6 32c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-25.6-32c-6.4-6.4-16-11.2-25.6-11.2zM358.4 0c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l112 139.2h-128l201.6 251.2c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-30.4 4.8-44.8l-120-145.6h128l-193.6-243.2c-6.4-8-16-12.8-25.6-12.8zM214.4 673.6c24 75.2 81.6 134.4 153.6 166.4-25.6 52.8-80 88-142.4 88-88 0-160-72-160-160 0-56 28.8-105.6 72-134.4 20.8 19.2 48 32 76.8 40zM700.8 668.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h99.2l105.6 131.2c17.6 22.4 46.4 36.8 75.2 36.8 22.4 0 43.2-8 59.2-20.8 20.8-16 32-38.4 35.2-64s-4.8-51.2-20.8-70.4l-9.6-16h92.8c89.6 0 163.2 70.4 163.2 158.4-1.6 86.4-75.2 158.4-164.8 158.4z" />
+<glyph unicode="&#xe9ba;" glyph-name="thunderstorm-full-moon-2" horiz-adv-x="928" d="M580.8 448c-14.4 11.2-33.6 9.6-44.8-4.8l-201.6-251.2h128l-112-139.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l195.2 241.6h-128l118.4 148.8c11.2 12.8 9.6 33.6-4.8 43.2zM721.6 700.8c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-105.6 0-192-86.4-192-192 0-76.8 44.8-142.4 108.8-172.8-27.2-28.8-44.8-68.8-44.8-110.4 0-89.6 75.2-163.2 168-163.2h88c17.6 0 32 14.4 32 32s-14.4 32-32 32h-88c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4h-60.8c-17.6 0-32-14.4-32-32s14.4-32 32-32c0 0 0 0 0 0h60.8c107.2 0 195.2 86.4 195.2 190.4 0 105.6-84.8 188.8-192 192zM257.6 646.4c-8-1.6-16-3.2-24-4.8-67.2 4.8-120 59.2-120 128 0 70.4 57.6 128 128 128 60.8 0 113.6-43.2 124.8-102.4-52.8-33.6-94.4-86.4-108.8-148.8zM16-57.6c6.4-4.8 14.4-6.4 20.8-6.4 9.6 0 19.2 4.8 25.6 12.8l44.8 56c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 8-44.8-4.8l-46.4-57.6c-11.2-12.8-8-33.6 4.8-44.8zM147.2 73.6c9.6 0 19.2 4.8 25.6 12.8l94.4 118.4c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-94.4-118.4c-11.2-14.4-9.6-33.6 4.8-44.8 4.8-4.8 12.8-8 19.2-8zM529.6-57.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l108.8 136c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-110.4-137.6c-9.6-12.8-8-33.6 6.4-44.8zM728 160c9.6 0 19.2 4.8 25.6 12.8l25.6 32c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-25.6-32c-11.2-14.4-9.6-33.6 4.8-44.8 4.8-6.4 12.8-8 19.2-8z" />
+<glyph unicode="&#xe9bb;" glyph-name="thunderstorm-night-1-f" horiz-adv-x="800" d="M294.4-16c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l112 139.2h-128l201.6 251.2c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-30.4 4.8-44.8l-120-145.6h128l-193.6-243.2c-6.4-8-16-12.8-25.6-12.8zM72 617.6c22.4 17.6 48 32 76.8 38.4 24 75.2 81.6 134.4 153.6 166.4-25.6 52.8-80 89.6-142.4 89.6-4.8 0-8-1.6-11.2-1.6 6.4-14.4 9.6-28.8 9.6-46.4 0-62.4-49.6-112-112-112-16 0-32 3.2-44.8 9.6 0-3.2-1.6-6.4-1.6-9.6 0-56 28.8-105.6 72-134.4zM636.8 652.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h99.2l105.6 131.2c17.6 22.4 46.4 36.8 75.2 36.8 22.4 0 43.2-8 59.2-20.8 20.8-16 32-38.4 35.2-64s-4.8-51.2-20.8-70.4l-9.6-16h91.2c89.6 0 163.2 70.4 163.2 158.4 0 86.4-73.6 158.4-163.2 158.4z" />
+<glyph unicode="&#xe9bc;" glyph-name="thunderstorm-night-1" horiz-adv-x="864" d="M307.2-24c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l193.6 241.6h-128l118.4 147.2c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-201.6-251.2h128l-112-139.2c-9.6-14.4-8-35.2 6.4-44.8zM668.8 352h-60.8c-17.6 0-32-14.4-32-32s14.4-32 32-32v0h60.8c107.2 0 195.2 86.4 195.2 190.4s-84.8 187.2-192 190.4c-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-3.2 0-8 0-11.2-1.6-1.6 0-1.6 0-3.2 0l-46.4-3.2 19.2-41.6c4.8-11.2 8-22.4 8-33.6 0-44.8-35.2-80-80-80-11.2 0-22.4 1.6-32 6.4l-41.6 17.6-3.2-44.8v-1.6c-1.6-3.2-1.6-6.4-1.6-9.6 0-76.8 44.8-142.4 108.8-172.8-27.2-30.4-44.8-68.8-44.8-112 0-89.6 75.2-163.2 168-163.2h88c17.6 0 32 14.4 32 32s-14.4 32-32 32h-88c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-67.2-59.2-123.2-131.2-123.2zM208 612.8c-8-1.6-16-3.2-24-4.8-57.6 3.2-102.4 43.2-115.2 96 3.2 0 6.4 0 11.2 0 80 0 144 64 144 144 0 3.2 0 8 0 11.2 48-11.2 84.8-49.6 96-97.6-57.6-32-97.6-84.8-112-148.8z" />
+<glyph unicode="&#xe9bd;" glyph-name="thunderstorm-night-2-f" horiz-adv-x="880" d="M35.2-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l44.8 56c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-44.8-56c-6.4-6.4-16-11.2-25.6-11.2zM145.6 105.6c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l94.4 118.4c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-94.4-118.4c-6.4-6.4-16-11.2-25.6-11.2zM547.2-32c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l108.8 136c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-108.8-136c-6.4-6.4-16-11.2-25.6-11.2zM726.4 192c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l25.6 32c11.2 14.4 30.4 16 44.8 4.8s16-30.4 4.8-44.8l-25.6-32c-6.4-6.4-16-11.2-25.6-11.2zM374.4 0c-6.4 0-14.4 1.6-19.2 6.4-14.4 11.2-16 30.4-4.8 44.8l112 139.2h-128l201.6 251.2c11.2 14.4 32 16 44.8 4.8 14.4-11.2 16-30.4 4.8-44.8l-120-145.6h128l-193.6-243.2c-6.4-8-16-12.8-25.6-12.8zM152 633.6c22.4 17.6 48 32 76.8 38.4 24 75.2 81.6 134.4 153.6 166.4-25.6 52.8-80 88-142.4 88-4.8 0-8-1.6-11.2-1.6 6.4-12.8 9.6-27.2 9.6-44.8 0-62.4-49.6-112-112-112-16 0-32 3.2-44.8 9.6 0-3.2-1.6-6.4-1.6-9.6 0-56 28.8-105.6 72-134.4zM716.8 668.8c-4.8 0-11.2 0-16 0-32 78.4-110.4 132.8-201.6 132.8-112 0-203.2-80-216-184 0 0-1.6 0-1.6 0-75.2 0-136-59.2-136-131.2s60.8-131.2 136-131.2h99.2l105.6 131.2c17.6 22.4 46.4 36.8 75.2 36.8 22.4 0 43.2-8 59.2-20.8 20.8-16 32-38.4 35.2-64s-4.8-51.2-20.8-70.4l-9.6-16h91.2c89.6 0 163.2 70.4 163.2 158.4 0 86.4-73.6 158.4-163.2 158.4z" />
+<glyph unicode="&#xe9be;" glyph-name="thunderstorm-night-2" horiz-adv-x="912" d="M356.8 8c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l193.6 241.6h-128l118.4 147.2c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-201.6-251.2h128l-112-139.2c-9.6-14.4-8-33.6 6.4-44.8zM913.6 510.4c0 104-84.8 187.2-192 190.4-43.2 80-128 131.2-222.4 131.2-25.6 0-51.2-4.8-73.6-11.2-22.4 80-96 139.2-184 139.2-3.2 0-8 0-11.2-1.6-1.6 0-1.6 0-3.2 0l-44.8-3.2 19.2-41.6c4.8-11.2 8-22.4 8-33.6 0-44.8-35.2-80-80-80-11.2 0-22.4 1.6-32 6.4l-43.2 19.2-3.2-44.8v-1.6c0-3.2-1.6-6.4-1.6-9.6 0-76.8 44.8-142.4 108.8-172.8-27.2-28.8-44.8-68.8-44.8-110.4 0-89.6 75.2-163.2 168-163.2h88c17.6 0 32 14.4 32 32s-14.4 32-32 32h-88c-57.6 0-104 44.8-104 99.2s46.4 99.2 102.4 99.2l32-1.6 3.2 28.8c11.2 89.6 91.2 156.8 184 156.8 76.8 0 144-44.8 172.8-112l9.6-22.4 24 1.6c4.8 0 8 0 12.8 0 72 0 131.2-56 131.2-126.4 0-68.8-59.2-126.4-131.2-126.4h-60.8c-17.6 0-32-14.4-32-32s14.4-32 32-32v0h60.8c108.8 0 195.2 86.4 195.2 190.4zM257.6 646.4c-8-1.6-16-3.2-24-6.4-56 4.8-102.4 43.2-115.2 96 3.2 0 6.4 0 11.2 0 80 0 144 64 144 144 0 3.2 0 8 0 11.2 48-11.2 84.8-49.6 96-97.6-56-32-97.6-84.8-112-147.2zM16-57.6c6.4-3.2 14.4-6.4 20.8-6.4 9.6 0 19.2 4.8 25.6 12.8l44.8 56c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-46.4-56c-11.2-14.4-8-35.2 4.8-46.4zM216 244.8l-94.4-118.4c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l94.4 118.4c11.2 14.4 9.6 33.6-4.8 44.8-12.8 9.6-33.6 6.4-44.8-6.4zM529.6-57.6c6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l108.8 136c11.2 14.4 9.6 33.6-4.8 44.8s-33.6 9.6-44.8-4.8l-110.4-136c-9.6-14.4-8-35.2 6.4-46.4zM728 244.8l-25.6-32c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l25.6 32c11.2 14.4 9.6 33.6-4.8 44.8-12.8 9.6-33.6 6.4-44.8-6.4z" />
+<glyph unicode="&#xe9bf;" glyph-name="thunderstorm" d="M208 288h144c17.6 0 32 14.4 32 32s-14.4 32-32 32h-144c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 97.6 0 176-78.4 176-176s-78.4-176-174.4-176h-115.2c-17.6 0-32-14.4-32-32s14.4-32 32-32h112c132.8 0 240 107.2 240 240 0 128-100.8 233.6-228.8 240-51.2 97.6-155.2 160-267.2 160-137.6 0-259.2-96-292.8-225.6-9.6 0-17.6 1.6-27.2 1.6-115.2 0-208-94.4-208-208s92.8-208 208-208zM595.2 416c-14.4 11.2-33.6 9.6-44.8-4.8l-201.6-251.2h128l-112-139.2c-11.2-14.4-9.6-33.6 4.8-44.8 6.4-4.8 12.8-6.4 19.2-6.4 9.6 0 19.2 4.8 25.6 12.8l196.8 241.6h-128l118.4 147.2c11.2 14.4 8 33.6-6.4 44.8z" />
+<glyph unicode="&#xe9c0;" glyph-name="tornado-1" d="M960 896c0 17.6-14.4 32-32 32h-896c-17.6 0-32-14.4-32-32s14.4-32 32-32h896c17.6 0 32 14.4 32 32zM992 800h-800c-17.6 0-32-14.4-32-32s14.4-32 32-32h800c17.6 0 32 14.4 32 32s-14.4 32-32 32zM832 672h-704c-17.6 0-32-14.4-32-32s14.4-32 32-32h704c17.6 0 32 14.4 32 32s-14.4 32-32 32zM704 512c0 17.6-14.4 32-32 32h-480c-17.6 0-32-14.4-32-32s14.4-32 32-32h480c17.6 0 32 14.4 32 32zM768 384c0 17.6-14.4 32-32 32h-448c-17.6 0-32-14.4-32-32s14.4-32 32-32h448c17.6 0 32 14.4 32 32zM736 288h-320c-17.6 0-32-14.4-32-32s14.4-32 32-32h320c17.6 0 32 14.4 32 32s-14.4 32-32 32zM640 160h-160c-17.6 0-32-14.4-32-32s14.4-32 32-32h160c17.6 0 32 14.4 32 32s-14.4 32-32 32zM512 32h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32z" />
+<glyph unicode="&#xe9c1;" glyph-name="tornado-2" horiz-adv-x="960" d="M448 0c-17.6 0-32 14.4-32 32s14.4 32 32 32c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-52.8 0-96 43.2-96 96s43.2 96 96 96h320c17.6 0 32 14.4 32 32s-14.4 32-32 32h-288c-52.8 0-96 43.2-96 96s43.2 96 96 96h512c17.6 0 32 14.4 32 32s-14.4 32-32 32h-704c-52.8 0-96 43.2-96 96s43.2 96 96 96h640c17.6 0 32 14.4 32 32s-14.4 32-32 32h-768c-17.6 0-32 14.4-32 32s14.4 32 32 32h768c52.8 0 96-43.2 96-96s-43.2-96-96-96h-640c-17.6 0-32-14.4-32-32s14.4-32 32-32h704c52.8 0 96-43.2 96-96s-43.2-96-96-96h-512c-17.6 0-32-14.4-32-32s14.4-32 32-32h288c52.8 0 96-43.2 96-96s-43.2-96-96-96h-320c-17.6 0-32-14.4-32-32s14.4-32 32-32h128c52.8 0 96-43.2 96-96s-43.2-96-96-96zM384-64c-17.6 0-32 14.4-32 32 0 52.8 43.2 96 96 96 17.6 0 32-14.4 32-32s-14.4-32-32-32c-17.6 0-32-14.4-32-32s-14.4-32-32-32z" />
+<glyph unicode="&#xe9c2;" glyph-name="umbrella-f" horiz-adv-x="992" d="M528 894.4v17.6c0 17.6-14.4 32-32 32s-32-14.4-32-32v-17.6c-259.2-16-464-232-464-494.4 0-1.6 0-1.6 0-3.2 0 0 0-1.6 0-1.6 0-1.6 1.6-3.2 1.6-3.2s0-1.6 1.6-1.6c0-1.6 1.6-1.6 3.2-3.2 0 0 0-1.6 1.6-1.6 0 0 1.6 0 1.6-1.6 0 0 0 0 1.6 0s3.2 0 4.8 0c4.8 0 9.6 3.2 12.8 6.4 24 35.2 64 57.6 107.2 57.6s81.6-20.8 105.6-56c1.6-1.6 3.2-3.2 4.8-4.8 0 0 0 0 0 0 8-4.8 17.6-3.2 22.4 4.8 24 35.2 64 57.6 107.2 57.6s81.6-20.8 105.6-56c0-1.6 1.6-1.6 1.6-1.6 0-1.6 1.6-1.6 3.2-3.2 0 0 0 0 0 0s0 0 0 0c3.2-4.8 6.4-4.8 9.6-4.8s6.4 1.6 8 3.2c3.2 1.6 4.8 3.2 4.8 6.4 24 35.2 62.4 56 105.6 56s81.6-20.8 105.6-56c1.6-1.6 3.2-3.2 4.8-4.8 0 0 0 0 0 0 3.2-1.6 6.4-3.2 9.6-3.2 4.8 0 9.6 3.2 12.8 6.4 24 35.2 64 57.6 107.2 57.6s81.6-20.8 105.6-56c0 0 1.6-1.6 1.6-1.6s1.6-1.6 1.6-1.6c0 0 1.6-1.6 1.6-1.6 3.2-1.6 4.8-3.2 8-3.2 9.6 0 16 6.4 16 16 3.2 260.8-201.6 476.8-460.8 492.8zM624 80c-17.6 0-32-14.4-32-32s-14.4-32-32-32-32 14.4-32 32v278.4c-9.6-4.8-20.8-6.4-32-6.4s-22.4 3.2-32 6.4v-278.4c0-52.8 43.2-96 96-96s96 43.2 96 96c0 17.6-14.4 32-32 32z" />
+<glyph unicode="&#xe9c3;" glyph-name="umbrella" d="M544 894.4v33.6c0 17.6-14.4 32-32 32s-32-14.4-32-32v-33.6c-267.2-16-480-238.4-480-510.4 0-11.2 6.4-20.8 14.4-27.2 0 0 0 0 0 0s0 0 1.6 0c1.6-1.6 3.2-1.6 6.4-3.2 1.6 0 1.6 0 3.2-1.6 1.6 0 3.2 0 4.8 0s1.6 0 3.2 0c4.8 0 8 1.6 11.2 3.2 0 0 0 0 0 0 1.6 0 3.2 1.6 4.8 3.2 0 0 0 0 0 0 3.2 1.6 6.4 4.8 8 8 22.4 30.4 57.6 49.6 94.4 49.6s72-19.2 92.8-49.6c3.2-3.2 6.4-6.4 9.6-9.6 0 0 0 0 0 0 14.4-9.6 35.2-6.4 44.8 8 20.8 32 56 49.6 92.8 49.6 35.2 0 67.2-16 88-43.2v-339.2c0-52.8 43.2-96 96-96s96 43.2 96 96c0 17.6-14.4 32-32 32s-32-14.4-32-32c0-17.6-14.4-32-32-32s-32 14.4-32 32v340.8c20.8 27.2 52.8 43.2 88 43.2 36.8 0 72-19.2 92.8-49.6 3.2-3.2 6.4-6.4 9.6-9.6 0 0 0 0 0 0s1.6 0 1.6-1.6c1.6 0 3.2-1.6 4.8-1.6 3.2-1.6 8-3.2 11.2-3.2 9.6 0 20.8 4.8 27.2 14.4 20.8 32 56 49.6 92.8 49.6s72-19.2 92.8-49.6c1.6-1.6 3.2-4.8 4.8-6.4 6.4-3.2 14.4-6.4 22.4-6.4 17.6 0 32 14.4 32 32 0 272-212.8 494.4-480 510.4zM872 480c-44.8 0-88-17.6-120-48-32 30.4-75.2 48-120 48s-88-17.6-120-48c-32 30.4-75.2 48-120 48s-88-17.6-120-48c-32 30.4-75.2 48-120 48-28.8 0-56-6.4-81.6-20.8 36.8 211.2 220.8 372.8 441.6 372.8s404.8-161.6 441.6-372.8c-25.6 14.4-52.8 20.8-81.6 20.8z" />
+<glyph unicode="&#xe9c4;" glyph-name="wind-2" d="M291.2 556.8c73.6 0 155.2 22.4 240 83.2 232 166.4 417.6-8 438.4-28.8 12.8-12.8 32-12.8 44.8 0s12.8 32 0 44.8c-24 24-246.4 232-521.6 35.2-232-166.4-417.6 8-438.4 28.8-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8c54.4-56 156.8-118.4 281.6-118.4zM492.8 480c-131.2-94.4-248-76.8-321.6-48-16 6.4-35.2-1.6-41.6-17.6s1.6-35.2 17.6-41.6c38.4-16 88-28.8 142.4-28.8 70.4 0 153.6 20.8 240 83.2 232 166.4 417.6-8 438.4-28.8 12.8-12.8 32-12.8 44.8 0s12.8 32 0 44.8c-22.4 25.6-243.2 233.6-520 36.8zM875.2 310.4c-89.6 35.2-227.2 56-382.4-54.4-232-166.4-417.6 8-438.4 28.8-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8c54.4-56 156.8-118.4 281.6-118.4 73.6 0 155.2 22.4 240 83.2 131.2 94.4 248 78.4 321.6 48 16-6.4 35.2 1.6 41.6 17.6s-1.6 33.6-19.2 40z" />
+<glyph unicode="&#xe9c5;" glyph-name="wind-cloud" d="M768 352h128c52.8 0 96 43.2 96 96s-43.2 96-96 96c-17.6 0-32-14.4-32-32s14.4-32 32-32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32zM928 288h-224c-17.6 0-32-14.4-32-32s14.4-32 32-32h224c17.6 0 32-14.4 32-32s-14.4-32-32-32c-17.6 0-32-14.4-32-32s14.4-32 32-32c52.8 0 96 43.2 96 96s-43.2 96-96 96zM544 288h-336c-80 0-144 64-144 144s64 144 144 144c14.4 0 28.8-1.6 41.6-6.4l35.2-11.2 4.8 36.8c19.2 116.8 120 204.8 238.4 204.8 94.4 0 180.8-56 219.2-142.4l9.6-19.2 25.6 1.6c1.6 0 1.6 0 3.2 0 33.6 0 67.2-9.6 94.4-27.2 14.4-9.6 35.2-4.8 44.8 9.6s4.8 35.2-9.6 44.8c-35.2 22.4-75.2 35.2-116.8 36.8-54.4 97.6-158.4 160-270.4 160-137.6 0-259.2-94.4-292.8-225.6-9.6 1.6-17.6 1.6-27.2 1.6-115.2 0-208-92.8-208-208s92.8-208 208-208h336c35.2 0 64-28.8 64-64s-28.8-64-64-64c-17.6 0-32-14.4-32-32s14.4-32 32-32c70.4 0 128 57.6 128 128s-57.6 128-128 128zM608 416h-224c-17.6 0-32-14.4-32-32s14.4-32 32-32h224c70.4 0 128 57.6 128 128s-57.6 128-128 128c-17.6 0-32-14.4-32-32s14.4-32 32-32c35.2 0 64-28.8 64-64s-28.8-64-64-64zM265.6 406.4c-6.4-4.8-9.6-14.4-9.6-22.4s3.2-16 9.6-22.4c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c6.4 6.4 9.6 14.4 9.6 22.4s-3.2 16-9.6 22.4c-11.2 12.8-33.6 12.8-44.8 0z" />
+<glyph unicode="&#xe9c6;" glyph-name="wind-cone-f" horiz-adv-x="992" d="M448 897.6v-436.8c86.4 8 160 19.2 224 30.4v276.8c-36.8 22.4-75.2 48-118.4 76.8-35.2 24-70.4 40-105.6 52.8zM192 928c0 17.6-14.4 32-32 32s-32-14.4-32-32v-928h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h256c17.6 0 32 14.4 32 32s-14.4 32-32 32h-96v448c68.8 0 132.8 3.2 192 6.4v460.8c-75.2 16-140.8 14.4-192 12.8zM928 672c-67.2 0-126.4 22.4-192 59.2v-228.8c78.4 16 140.8 32 192 41.6 59.2 9.6 64 46.4 64 64s-8 64-64 64z" />
+<glyph unicode="&#xe9c7;" glyph-name="wind-cone" d="M928 702.4c-99.2 0-184 54.4-310.4 137.6-14.4 9.6-30.4 19.2-46.4 30.4-145.6 94.4-291.2 91.2-379.2 89.6-11.2 0-22.4 0-32 0h-32v-508.8c0-1.6 0-3.2 0-3.2s0-1.6 0-3.2v-444.8h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h256c17.6 0 32 14.4 32 32s-14.4 32-32 32h-96v416c225.6 1.6 392 24 516.8 48 0 0 1.6 0 1.6 0 52.8 9.6 99.2 20.8 139.2 28.8 32 6.4 57.6 12.8 83.2 17.6 57.6 9.6 91.2 44.8 91.2 96 0 46.4-30.4 96-96 96zM580.8 787.2c32-20.8 62.4-40 91.2-57.6v-208c-64-11.2-137.6-22.4-224-30.4v371.2c28.8-11.2 59.2-25.6 88-44.8 16-11.2 30.4-20.8 44.8-30.4zM192 896c0 0 1.6 0 1.6 0 51.2 0 118.4 1.6 190.4-14.4v-393.6c-59.2-4.8-121.6-6.4-192-8v416zM921.6 574.4c-25.6-4.8-52.8-11.2-84.8-17.6-30.4-6.4-64-14.4-100.8-22.4v158.4c64-33.6 124.8-54.4 192-54.4 8 0 32 0 32-32 0-9.6 0-25.6-38.4-32z" />
+<glyph unicode="&#xe9c8;" glyph-name="wind-day" d="M768 208h96c52.8 0 96 43.2 96 96s-43.2 96-96 96c-17.6 0-32-14.4-32-32s14.4-32 32-32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32zM928 176h-160c-17.6 0-32-14.4-32-32s14.4-32 32-32h160c17.6 0 32-14.4 32-32s-14.4-32-32-32c-17.6 0-32-14.4-32-32s14.4-32 32-32c52.8 0 96 43.2 96 96s-43.2 96-96 96zM592 176h-259.2c-59.2 0-108.8 48-108.8 108.8 0 59.2 49.6 108.8 108.8 108.8 11.2 0 20.8-1.6 32-4.8l35.2-11.2 4.8 36.8c12.8 89.6 92.8 158.4 184 158.4 73.6 0 139.2-43.2 169.6-110.4l9.6-19.2 27.2 1.6c25.6 0 51.2-8 72-20.8 14.4-9.6 35.2-4.8 44.8 9.6s4.8 35.2-9.6 44.8c-28.8 17.6-60.8 28.8-92.8 30.4-43.2 78.4-128 128-217.6 128-9.6 0-19.2 0-28.8-1.6-30.4 70.4-99.2 116.8-176 116.8-105.6 0-192-86.4-192-192 0-48 19.2-94.4 49.6-128-49.6-30.4-81.6-84.8-81.6-147.2 0-96 76.8-172.8 172.8-172.8h256c27.2 0 48-20.8 48-48s-20.8-48-48-48c-17.6 0-32-14.4-32-32s14.4-32 32-32c62.4 0 112 49.6 112 112s-49.6 112-112 112zM384 688c48 0 91.2-27.2 113.6-68.8-70.4-28.8-126.4-88-148.8-161.6-4.8 0-11.2 0-16 0-8 0-16 0-22.4-1.6-33.6 24-54.4 62.4-54.4 104 0 70.4 57.6 128 128 128zM640 432c-17.6 0-32-14.4-32-32s14.4-32 32-32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-171.2c-17.6 0-32-14.4-32-32s14.4-32 32-32h171.2c52.8 0 96 43.2 96 96s-43.2 96-96 96zM352 912v-96c0-17.6 14.4-32 32-32s32 14.4 32 32v96c0 17.6-14.4 32-32 32s-32-14.4-32-32zM128 592h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96c17.6 0 32 14.4 32 32s-14.4 32-32 32zM112 832c-12.8-12.8-12.8-32 0-44.8l68.8-68.8c6.4-6.4 14.4-9.6 22.4-9.6s16 3.2 22.4 9.6c12.8 12.8 12.8 32 0 44.8l-67.2 68.8c-12.8 11.2-33.6 11.2-46.4 0zM564.8 708.8c8 0 16 3.2 22.4 9.6l68.8 68.8c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-68.8-68.8c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6z" />
+<glyph unicode="&#xe9c9;" glyph-name="wind-full-moon" d="M768 272h96c52.8 0 96 43.2 96 96s-43.2 96-96 96c-17.6 0-32-14.4-32-32s14.4-32 32-32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32zM928 240h-160c-17.6 0-32-14.4-32-32s14.4-32 32-32h160c17.6 0 32-14.4 32-32s-14.4-32-32-32c-17.6 0-32-14.4-32-32s14.4-32 32-32c52.8 0 96 43.2 96 96s-43.2 96-96 96zM592 240h-355.2c-59.2 0-108.8 48-108.8 108.8 0 59.2 49.6 108.8 108.8 108.8 11.2 0 20.8-1.6 32-4.8l35.2-11.2 4.8 36.8c12.8 89.6 92.8 158.4 184 158.4 73.6 0 139.2-43.2 169.6-110.4l9.6-19.2 27.2 1.6c25.6 0 51.2-8 72-20.8 14.4-9.6 35.2-4.8 44.8 9.6s4.8 35.2-9.6 44.8c-28.8 17.6-60.8 28.8-92.8 30.4-43.2 78.4-128 128-217.6 128-16 0-33.6-1.6-48-4.8-22.4 104-113.6 184-224 184-123.2 0-224-100.8-224-224 0-80 43.2-152 108.8-192-27.2-30.4-44.8-70.4-44.8-115.2 0-96 76.8-172.8 172.8-172.8h355.2c27.2 0 48-20.8 48-48s-20.8-48-48-48c-17.6 0-32-14.4-32-32s14.4-32 32-32c62.4 0 112 49.6 112 112s-49.6 112-112 112zM64 656c0 88 72 160 160 160 81.6 0 148.8-62.4 158.4-140.8-60.8-30.4-108.8-86.4-129.6-153.6-4.8 0-11.2 0-16 0-25.6 0-48-4.8-70.4-14.4-60.8 22.4-102.4 83.2-102.4 148.8zM640 496c-17.6 0-32-14.4-32-32s14.4-32 32-32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-267.2c-17.6 0-32-14.4-32-32s14.4-32 32-32h267.2c52.8 0 96 43.2 96 96s-43.2 96-96 96z" />
+<glyph unicode="&#xe9ca;" glyph-name="wind-moon" d="M800 348.8h96c52.8 0 96 43.2 96 96s-43.2 96-96 96c-17.6 0-32-14.4-32-32s14.4-32 32-32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32zM928 284.8h-192c-17.6 0-32-14.4-32-32s14.4-32 32-32h192c17.6 0 32-14.4 32-32s-14.4-32-32-32c-17.6 0-32-14.4-32-32s14.4-32 32-32c52.8 0 96 43.2 96 96s-43.2 96-96 96zM544 284.8h-512c-17.6 0-32-14.4-32-32s14.4-32 32-32h512c35.2 0 64-28.8 64-64s-28.8-64-64-64c-17.6 0-32-14.4-32-32s14.4-32 32-32c70.4 0 128 57.6 128 128s-57.6 128-128 128zM608 604.8c-17.6 0-32-14.4-32-32s14.4-32 32-32c35.2 0 64-28.8 64-64s-28.8-64-64-64h-129.6c-76.8 0-144 44.8-174.4 112 11.2-1.6 20.8-1.6 32-1.6 121.6 0 219.2 99.2 219.2 219.2 0 14.4-1.6 28.8-4.8 44.8 46.4-19.2 84.8-54.4 105.6-102.4 6.4-16 25.6-24 41.6-16 16 6.4 24 25.6 16 41.6-36.8 84.8-118.4 144-209.6 153.6l-59.2 6.4 28.8-52.8c12.8-22.4 19.2-48 19.2-73.6 0-86.4-70.4-155.2-155.2-155.2-22.4 0-44.8 4.8-65.6 14.4l-54.4 25.6 9.6-59.2c9.6-62.4 40-115.2 83.2-153.6h-278.4c-17.6 0-32-14.4-32-32s14.4-32 32-32h576c70.4 0 128 57.6 128 128 0 67.2-57.6 124.8-128 124.8z" />
+<glyph unicode="&#xe9cb;" glyph-name="wind-night" d="M768 272h96c52.8 0 96 43.2 96 96s-43.2 96-96 96c-17.6 0-32-14.4-32-32s14.4-32 32-32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32zM928 240h-160c-17.6 0-32-14.4-32-32s14.4-32 32-32h160c17.6 0 32-14.4 32-32s-14.4-32-32-32c-17.6 0-32-14.4-32-32s14.4-32 32-32c52.8 0 96 43.2 96 96s-43.2 96-96 96zM592 240h-355.2c-59.2 0-108.8 48-108.8 108.8 0 59.2 49.6 108.8 108.8 108.8 11.2 0 20.8-1.6 32-4.8l35.2-11.2 4.8 36.8c12.8 89.6 92.8 158.4 184 158.4 72 0 139.2-43.2 169.6-110.4l9.6-19.2 27.2 1.6c25.6 0 51.2-8 72-20.8 14.4-9.6 35.2-4.8 44.8 9.6s4.8 35.2-9.6 44.8c-28.8 17.6-60.8 28.8-92.8 30.4-43.2 78.4-128 128-217.6 128-16 0-32-1.6-48-4.8-22.4 105.6-113.6 184-224 184-3.2 0-6.4 0-11.2 0l-48-3.2 17.6-41.6c6.4-12.8 8-27.2 8-41.6 0-57.6-48-105.6-105.6-105.6-14.4 0-28.8 3.2-41.6 8l-41.6 17.6-3.2-48c0-3.2 0-6.4 0-11.2 0-80 41.6-152 108.8-192-27.2-28.8-43.2-70.4-43.2-113.6 0-96 76.8-172.8 172.8-172.8h355.2c27.2 0 48-20.8 48-48s-20.8-48-48-48c-17.6 0-32-14.4-32-32s14.4-32 32-32c62.4 0 112 49.6 112 112s-49.6 112-112 112zM67.2 624c6.4 0 12.8 0 19.2 0 94.4 0 169.6 75.2 169.6 169.6 0 6.4 0 12.8-1.6 20.8 67.2-12.8 120-67.2 128-137.6-62.4-30.4-110.4-86.4-129.6-153.6-4.8 0-11.2 0-16 0-25.6 0-49.6-4.8-70.4-16-52.8 19.2-89.6 64-99.2 116.8zM640 496c-17.6 0-32-14.4-32-32s14.4-32 32-32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-267.2c-17.6 0-32-14.4-32-32s14.4-32 32-32h267.2c52.8 0 96 43.2 96 96s-43.2 96-96 96z" />
+<glyph unicode="&#xe9cc;" glyph-name="wind-sun" d="M512 800c17.6 0 32 14.4 32 32v96c0 17.6-14.4 32-32 32s-32-14.4-32-32v-96c0-17.6 14.4-32 32-32zM64 448h128c17.6 0 32 14.4 32 32s-14.4 32-32 32h-128c-17.6 0-32-14.4-32-32s14.4-32 32-32zM288 704c8 0 16 3.2 22.4 9.6 12.8 12.8 12.8 32 0 44.8l-96 96c-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8l96-96c6.4-6.4 14.4-9.6 22.4-9.6zM736 704c8 0 16 3.2 22.4 9.6l94.4 94.4c12.8 12.8 12.8 32 0 44.8s-32 12.8-44.8 0l-94.4-94.4c-12.8-12.8-12.8-32 0-44.8 6.4-6.4 14.4-9.6 22.4-9.6zM800 256h96c52.8 0 96 43.2 96 96s-43.2 96-96 96c-17.6 0-32-14.4-32-32s14.4-32 32-32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32zM928 192h-192c-17.6 0-32-14.4-32-32s14.4-32 32-32h192c17.6 0 32-14.4 32-32s-14.4-32-32-32c-17.6 0-32-14.4-32-32s14.4-32 32-32c52.8 0 96 43.2 96 96s-43.2 96-96 96zM544 192h-512c-17.6 0-32-14.4-32-32s14.4-32 32-32h512c35.2 0 64-28.8 64-64s-28.8-64-64-64c-17.6 0-32-14.4-32-32s14.4-32 32-32c70.4 0 128 57.6 128 128s-57.6 128-128 128zM608 512c-17.6 0-32-14.4-32-32s14.4-32 32-32c35.2 0 64-28.8 64-64s-28.8-64-64-64h-96c0 0 0 0 0 0-97.6 0-176 78.4-176 176s78.4 176 176 176c67.2 0 129.6-40 158.4-100.8 8-16 27.2-22.4 43.2-14.4s22.4 27.2 14.4 43.2c-40 81.6-124.8 136-216 136-132.8 0-240-107.2-240-240 0-68.8 30.4-132.8 76.8-176h-316.8c-17.6 0-32-14.4-32-32s14.4-32 32-32h576c70.4 0 128 57.6 128 128s-57.6 128-128 128z" />
+<glyph unicode="&#xe9cd;" glyph-name="wind-turbine-f" horiz-adv-x="720" d="M425.6 528c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM425.6 868.8c0 56-35.2 75.2-64 75.2v0 0 0 0c-28.8 0-64-19.2-64-75.2s32-212.8 64-212.8v0 0 0 0c32 0 64 156.8 64 212.8zM264 457.6v0 0c-16 27.2-168-22.4-216-51.2s-48-67.2-33.6-92.8c0 0 0 0 0 0 14.4-25.6 48-46.4 97.6-17.6 48 27.2 168 132.8 152 161.6zM675.2 404.8c-48 28.8-200 78.4-216 51.2 0 0 0 0 0 0v0c-16-27.2 104-134.4 152-161.6 48-28.8 81.6-8 97.6 17.6 0 0 0 0 0 0 14.4 25.6 16 65.6-33.6 92.8zM553.6 16h-160v388.8c-9.6-3.2-20.8-4.8-32-4.8s-22.4 1.6-32 4.8v-388.8h-160c-17.6 0-32-14.4-32-32s14.4-32 32-32h384c17.6 0 32 14.4 32 32s-14.4 32-32 32z" />
+<glyph unicode="&#xe9ce;" glyph-name="wind-turbine" horiz-adv-x="784" d="M390.4 608c80 0 96 243.2 96 244.8 0 73.6-48 107.2-96 107.2s-96-33.6-96-107.2c0-1.6 16-244.8 96-244.8zM390.4 896c14.4 0 32-8 32-43.2 0-41.6-16-121.6-32-161.6-16 40-32 120-32 161.6 0 35.2 17.6 43.2 32 43.2zM720 416v0c-1.6 1.6-177.6 88-243.2 54.4 6.4 12.8 9.6 25.6 9.6 40 0 52.8-43.2 96-96 96s-96-43.2-96-96c0-14.4 3.2-27.2 8-38.4-65.6 32-240-54.4-241.6-56-36.8-22.4-51.2-48-56-67.2-4.8-20.8-3.2-41.6 6.4-60.8l4.8-8c12.8-20.8 32-36.8 54.4-43.2 6.4-1.6 16-3.2 25.6-3.2 16 0 36.8 4.8 60.8 17.6 1.6 1.6 176 118.4 169.6 190.4 9.6-8 20.8-16 33.6-19.2v-422.4h-161.6c-17.6 0-32-14.4-32-32s14.4-32 32-32h384c17.6 0 32 14.4 32 32s-14.4 32-32 32h-160v422.4c12.8 4.8 24 11.2 32 19.2-8-72 166.4-190.4 169.6-190.4 24-12.8 43.2-17.6 60.8-17.6 9.6 0 19.2 1.6 25.6 3.2 22.4 6.4 41.6 22.4 54.4 43.2 24 41.6 19.2 99.2-44.8 136zM124.8 307.2c-9.6-6.4-24-11.2-36.8-8-8 3.2-14.4 9.6-16 12.8v1.6c-3.2 4.8-6.4 12.8-3.2 22.4 3.2 12.8 16 22.4 25.6 27.2 36.8 20.8 113.6 46.4 156.8 52.8-30.4-33.6-89.6-88-126.4-108.8zM390.4 544c17.6 0 32-14.4 32-32s-14.4-32-32-32c-17.6 0-32 14.4-32 32s14.4 32 32 32zM708.8 312c-3.2-4.8-8-11.2-17.6-14.4-12.8-3.2-25.6 3.2-36.8 8-36.8 20.8-97.6 75.2-124.8 108.8 43.2-6.4 120-32 156.8-52.8 32-17.6 30.4-36.8 22.4-49.6z" />
+<glyph unicode="&#xe9cf;" glyph-name="wind" d="M512 352h-384c-35.2 0-64 28.8-64 64s28.8 64 64 64h416c105.6 0 192 86.4 192 192s-86.4 192-192 192c-17.6 0-32-14.4-32-32s14.4-32 32-32c70.4 0 128-57.6 128-128s-57.6-128-128-128h-416c-70.4 0-128-57.6-128-128s57.6-128 128-128h384c52.8 0 96-43.2 96-96s-43.2-96-96-96c-17.6 0-32-14.4-32-32s14.4-32 32-32c88 0 160 72 160 160s-72 160-160 160zM192 640c0-17.6 14.4-32 32-32h192c52.8 0 96 43.2 96 96s-43.2 96-96 96c-17.6 0-32-14.4-32-32s14.4-32 32-32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-192c-17.6 0-32-14.4-32-32zM672 448c0-17.6 14.4-32 32-32h96c88 0 160 72 160 160s-72 160-160 160c-17.6 0-32-14.4-32-32s14.4-32 32-32c52.8 0 96-43.2 96-96s-43.2-96-96-96h-96c-17.6 0-32-14.4-32-32zM896 352h-192c-17.6 0-32-14.4-32-32s14.4-32 32-32h192c35.2 0 64-28.8 64-64s-28.8-64-64-64c-17.6 0-32-14.4-32-32s14.4-32 32-32c70.4 0 128 57.6 128 128s-57.6 128-128 128z" />
+</font></defs></svg>
Index: public/fonts/themify.svg
===================================================================
--- public/fonts/themify.svg	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/fonts/themify.svg	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,362 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="themify" horiz-adv-x="512">
+<font-face units-per-em="512" ascent="480" descent="-32" />
+<missing-glyph horiz-adv-x="512" />
+<glyph unicode="&#x20;" d="" horiz-adv-x="256" />
+<glyph unicode="&#xe600;" d="M512 329.412h-99.178l70.114-70.114-21.293-21.293-70.114 70.114v-99.178h-30.118v98.966l-320.632-321.204-21.293 21.293 320.844 321.416h-99.388v30.118h99.177l-70.114 70.114 21.293 21.293 70.114-70.114v99.178h30.118v-99.298l68.879 68.999 21.293-21.293-68.758-68.879h99.057v-30.118z" />
+<glyph unicode="&#xe601;" d="M108.032 301.312c-28.793 0-46.682-15.059-46.682-39.334v-65.084c0-12.499 4.849-24.214 13.643-33.069 8.794-8.825 20.54-13.704 33.039-13.704h52.495l171.249-171.309v494.803l-169.563-172.303h-54.181zM301.659 400.068v-348.522l-128.662 128.692h-64.994c-9.126 0-16.535 7.469-16.535 16.655v65.084c0 2.74 0 9.216 16.564 9.216h66.771l126.856 128.873zM361.563 149.098v30.118c16.745 0 30.358 13.613 30.358 30.358s-13.613 30.358-30.358 30.358v30.118c33.34 0 60.476-27.136 60.476-60.476s-27.136-60.476-60.476-60.476zM482.756 209.332c0-66.44-54.031-120.471-120.471-120.471v30.118c49.815 0 90.353 40.538 90.353 90.353s-40.538 90.353-90.353 90.353v30.118c66.409 0 120.471-54.061 120.471-120.471z" />
+<glyph unicode="&#xe602;" d="M512-16.58c-1.897 80.926-83.667 150.558-196.397 168.93v41.382c14.818 14.245 25.359 36.352 32.256 55.206 9.999 5 18.793 16.143 23.913 31.112 7.168 20.721 4.397 39.846-6.204 49.061 0.844 7.168 1.385 14.487 0.452 21.775-2.38 19.968 1.957 31.262 5.843 41.201 3.192 8.343 6.897 17.8 3.192 28.461-13.312 38.34-52.013 59.452-108.966 59.452l-7.951-0.15c-39.544-1.416-51.411-18.071-59.362-33.581-0.994-1.868-2.319-4.397-2.319-4.548-51.561-4.608-51.109-47.255-50.718-81.529l0.090-11.113c0-6.174 0.271-12.619 0.783-19.245-12.8-9.036-15.179-30.268-5.391-52.315 5.572-12.499 13.613-21.956 22.558-26.865 7.319-20.299 18.823-44.273 35.508-59.181v-38.641c-114.387-17.74-197.391-87.552-199.288-169.412l-0.361-15.42h512.692l-0.332 15.42zM31.744-1.882c11.806 63.067 86.106 115.079 184.38 126.615l13.282 1.566v80.293l-6.506 4.517c-11.836 8.192-23.823 28.522-32.828 55.748l-2.5 8.463-8.855 1.536c-1.596 0.572-6.264 4.608-9.939 12.89-2.259 5.060-3.132 9.397-3.373 12.499l15.36-4.307-2.892 22.558c-1.265 9.939-1.928 19.606-1.928 28.612l-0.090 11.445c-0.452 40.388 1.536 49.212 23.281 51.17 16.414 1.446 22.648 13.523 26.383 20.751 4.518 8.794 8.433 16.354 33.732 17.287l6.837 0.12c24.967 0 68.638-5.090 80.384-38.611 0-1.295-1.566-5.331-2.711-8.282-4.367-11.264-10.963-28.281-7.65-55.808 0.723-5.662-0.211-12.77-1.204-20.329l-2.68-24.245 13.282 1.446c0.241-3.132-0.12-8.101-2.259-14.216-2.921-8.704-7.288-13.191-7.138-13.673h-10.842l-3.433-10.3c-8.524-25.691-19.577-45.086-30.389-53.248l-5.964-4.517v-82.101l13.192-1.656c96.708-12.077 169.893-63.94 181.609-126.253h-448.542z" />
+<glyph unicode="&#xe603;" d="M286.118 149.549c0-11.023-6.235-20.239-15.059-25.48v-64.874h-30.118v64.844c-8.855 5.24-15.059 14.457-15.059 25.51 0 16.625 13.463 30.118 30.118 30.118 16.595 0 30.117-13.462 30.117-30.118zM451.584 225.204v-213.233c0-24.908-20.269-45.177-45.176-45.177h-300.815c-24.907 0-45.176 20.269-45.176 45.176v213.233c0 24.907 20.269 45.177 45.176 45.177h270.878v59.874c0 66.44-54.031 120.471-120.471 120.471s-120.471-54.031-120.471-120.471h-30.118c0 83.034 67.554 150.588 150.588 150.588s150.588-67.554 150.588-150.588v-59.874c24.817-0.12 44.996-20.33 44.996-45.177zM421.466 225.204c0 8.313-6.776 15.059-15.059 15.059h-300.815c-8.282 0-15.059-6.746-15.059-15.059v-213.233c0-8.313 6.776-15.059 15.059-15.059h300.815c8.283 0 15.059 6.747 15.059 15.059v213.233z" />
+<glyph unicode="&#xe604;" d="M64.271 325.226l42.225 77.914c32.708 49.634 98.244 63.097 146.703 30.991l-16.595-25.088c-34.605 22.86-81.408 13.252-104.328-21.353l-42.225-77.915c-23.522-35.78-13.975-82.582 20.691-105.442 34.424-22.649 72.584-16.474 99.78 16.204l23.131-19.305c-22.347-26.865-51.019-40.719-80.655-40.719-19.727 0-39.846 6.144-58.85 18.673-48.489 32.045-61.922 97.551-29.876 146.041zM121.706 238.035l-3.915-3.885 21.233-21.354 3.946 3.916c29.364 29.364 77.132 29.364 106.466 0s29.365-77.132 0-106.466l-91.046-91.076c-29.364-29.365-77.132-29.365-106.466 0s-29.364 77.132 0 106.466l31.865 31.894-21.293 21.293-31.864-31.925c-41.081-41.080-41.081-107.972 0-149.052 20.57-20.57 47.525-30.811 74.541-30.811s53.971 10.27 74.541 30.81l91.046 91.076c41.081 41.081 41.081 107.972 0 149.052-41.171 41.171-108.032 41.081-149.052 0.060zM330.18 269.177h122.7v30.117h-122.7v-30.117zM316.084 228.608l58.76-33.942 15.059 26.052-58.76 33.942-15.059-26.052zM323.764 445.184l-47.586-82.432 26.052-15.059 47.586 82.402-26.052 15.089zM477.877 397.93l-15.059 26.052-150.347-86.799 15.059-26.052 150.348 86.799z" />
+<glyph unicode="&#xe605;" d="M329.337 419.283c-6.565 26.172-30.087 45.659-58.278 45.659-28.070 0-51.501-19.365-58.157-45.659h-107.49v-30.118h331.294v30.118h-107.37zM271.059 434.824c11.505 0 21.233-6.656 26.353-15.541h-52.194c5.18 9.125 14.607 15.541 25.841 15.541zM391.529 359.529h30.118v-316.717c0-24.908-20.269-45.176-45.176-45.176h-210.823c-24.907 0-45.177 20.269-45.177 45.176v316.717h30.118v-316.717c0-8.283 6.746-15.059 15.059-15.059h210.823c8.313 0 15.059 6.776 15.059 15.059v316.717zM240.941 329.412v-240.941h-30.118v240.941h30.118zM331.294 329.412v-240.941h-30.118v240.941h30.118z" />
+<glyph unicode="&#xe606;" d="M346.353 175.33c91.347 0 165.647 68.337 165.647 152.335s-74.3 152.335-165.647 152.335c-57.585 0-111.225-28.25-141.071-73.216-21.233 12.017-45.056 18.312-69.752 18.312-74.722 0-135.53-56.019-135.53-124.898 0-68.849 60.807-124.868 135.53-124.868 5.602 0 11.294 0.392 17.257 1.115 19.637-17.709 45.839-27.738 73.095-27.738 30.178 0 58.097 11.656 78.065 32.226 14.697-3.764 28.642-5.602 42.406-5.602zM293.497 215.416l-6.385-8.072c-14.185-17.86-37.075-28.522-61.229-28.522-21.805 0-42.587 8.734-57.073 24.004l-5.542 5.813-7.951-1.385c-6.445-1.115-12.981-1.807-19.787-1.807-58.127 0-105.412 42.496-105.412 94.72 0 52.254 47.285 94.78 105.412 94.78 23.853 0 46.652-7.409 65.928-21.474l14.215-10.331 8.042 15.661c22.227 43.159 70.355 71.077 122.639 71.077 74.722 0 135.529-54.814 135.529-122.247 0-67.373-60.808-122.218-135.529-122.218-13.644 0-27.738 2.259-43.038 6.957l-9.818 3.042zM346.353 163.764c-33.22 0-60.236-27.015-60.236-60.236s27.015-60.236 60.236-60.236 60.236 27.015 60.236 60.236-27.015 60.236-60.236 60.236zM346.353 73.412c-16.595 0-30.118 13.493-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.118-30.118zM459.294 58.353c-20.751 0-37.647-16.896-37.647-37.647s16.896-37.647 37.647-37.647 37.647 16.896 37.647 37.647-16.896 37.647-37.647 37.647zM451.764 20.706c0 4.156 3.373 7.529 7.529 7.529s7.529-3.373 7.529-7.529c0-8.283-15.059-8.283-15.059 0z" />
+<glyph unicode="&#xe607;" d="M512.602 239.059h-61.591c-7.379 96.196-84.51 173.026-180.827 180.013v62.103h-30.118v-62.193c-95.533-7.77-171.731-84.299-179.079-179.923h-61.59v-30.117h61.59c7.349-95.624 83.546-172.153 179.049-179.923v-61.019h30.117v60.928c96.316 6.957 173.447 83.788 180.827 180.013h61.59v30.118zM270.185 59.046v59.543h-30.118v-59.452c-78.939 7.589-141.794 70.776-148.962 149.805h58.88v30.118h-58.88c7.168 79.029 70.024 142.215 148.962 149.805v-58.278h30.118v58.368c79.721-6.837 143.481-70.264 150.709-149.896h-58.88v-30.118h58.88c-7.228-79.631-70.988-143.059-150.708-149.895z" />
+<glyph unicode="&#xe608;" d="M269.644 449.642l-119.476-86.799v-365.628l120.049 84.149 121.706-83.877v365.478l-122.278 86.678zM361.834 54.829l-91.708 63.247-89.811-62.976v292.412l89.6 65.084 91.949-65.204v-292.563zM218.474 299.264c0-29.063 23.642-52.706 52.706-52.706s52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706-52.706-23.642-52.706-52.706zM271.18 321.852c12.438 0 22.588-10.149 22.588-22.588s-10.149-22.588-22.588-22.588-22.588 10.149-22.588 22.588 10.15 22.588 22.588 22.588z" />
+<glyph unicode="&#xe609;" d="M278.588 43.294c0-12.499-10.089-22.588-22.588-22.588s-22.588 10.089-22.588 22.588 10.089 22.588 22.588 22.588 22.588-10.089 22.588-22.588zM481.882 434.824v-421.647c0-24.908-18.824-45.176-41.924-45.176h-367.917c-23.1 0-41.924 20.269-41.924 45.176v421.647c0 24.907 18.824 45.176 41.924 45.176h367.947c23.070 0 41.894-20.269 41.894-45.176zM451.764 434.824c0 8.162-5.391 15.059-11.806 15.059h-367.917c-6.415 0-11.806-6.897-11.806-15.059v-421.647c0-8.162 5.391-15.059 11.806-15.059h367.947c6.385 0 11.776 6.897 11.776 15.059v421.647zM90.353 419.764h331.294v-331.294h-331.294v331.294zM120.471 118.588h271.059v271.059h-271.059v-271.059z" />
+<glyph unicode="&#xe60a;" d="M501.368 268.664h-187.483l-57.886 178.297-57.916-178.297h-187.452l151.643-110.17-57.886-178.297 151.612 110.201 151.643-110.201-57.886 178.297 151.612 110.171zM350.358 59.046l-94.358 68.608-94.358-68.578 36.051 110.983-94.359 68.488h116.645l36.020 110.954 36.020-110.954h116.645l-94.358-68.517 36.051-110.983z" />
+<glyph unicode="&#xe60b;" d="M195.764 389.647c-42.948 0-82.582-23.431-103.996-60.236h-31.533v-316.236c0-24.907 20.269-45.176 45.177-45.176h180.706c24.907 0 45.176 20.269 45.176 45.176v316.236h-31.533c-21.413 36.774-61.108 60.236-103.996 60.236zM195.764 359.529c25.871 0 50.356-11.324 67.283-30.117h-134.536c16.896 18.793 41.351 30.117 67.252 30.117zM301.176 13.176c0-8.283-6.747-15.059-15.059-15.059h-180.706c-8.313 0-15.059 6.776-15.059 15.059v286.118h210.823v-286.118zM240.941 480h-90.353v-90.353h90.353v90.353zM210.823 419.764h-30.118v30.118h30.118v-30.118zM359.755 434.492l94.449-15.601-4.909-29.696-180.706 29.817 2.56 15.481-2.56 15.48 180.706 29.817 4.909-29.696-94.449-15.601z" />
+<glyph unicode="&#xe60c;" d="M346.353 359.529c0 49.815-40.538 90.353-90.353 90.353s-90.353-40.538-90.353-90.353c0-44.664 32.648-81.619 75.294-88.817v-242.477h-60.236v-30.118h150.588v30.118h-60.236v242.477c42.647 7.198 75.294 44.153 75.294 88.817zM195.764 359.529c0 33.22 27.016 60.236 60.236 60.236s60.236-27.015 60.236-60.236-27.015-60.236-60.236-60.236-60.236 27.015-60.236 60.236zM135.65 413.982c-11.385-13.854-17.378-30.238-17.378-47.405s5.993-33.551 17.378-47.405l-23.311-19.155c-15.812 19.305-24.184 42.315-24.184 66.53s8.373 47.255 24.184 66.53l23.311-19.094zM60.236 366.547c0-32.497 11.656-63.127 33.702-88.486l-22.709-19.757c-26.534 30.479-41.111 68.97-41.111 108.243s14.577 77.764 41.111 108.273l22.709-19.757c-22.046-25.389-33.702-56.019-33.702-88.516zM423.846 366.547c0-24.245-8.373-47.225-24.214-66.53l-23.281 19.125c11.385 13.854 17.378 30.238 17.378 47.405s-5.993 33.551-17.378 47.405l23.281 19.125c15.842-19.276 24.214-42.285 24.214-66.53zM481.882 366.547c0-39.304-14.577-77.764-41.111-108.273l-22.709 19.757c22.046 25.42 33.702 56.019 33.702 88.516s-11.656 63.126-33.702 88.486l22.709 19.757c26.534-30.479 41.111-68.94 41.111-108.243z" />
+<glyph unicode="&#xe60d;" d="M82.823 103.529c-29.064 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM82.823 28.236c-12.469 0-22.588 10.149-22.588 22.588s10.119 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.12-22.588-22.588-22.588zM338.824 103.529c-29.063 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM338.824 28.236c-12.469 0-22.588 10.149-22.588 22.588s10.12 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.12-22.588-22.588-22.588zM402.703 419.764l-9.096-60.236h-395.836l33.672-242.025h358.791l31.262 224.768 7.108 47.375h83.396v30.117h-109.297zM389.3 329.412l-4.187-30.118h-348.582l-4.187 30.118h356.954zM57.645 147.622l-16.896 121.555h340.179l-16.896-121.555h-306.387z" />
+<glyph unicode="&#xe60e;" d="M82.823 103.529c-29.064 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM82.823 28.236c-12.439 0-22.588 10.149-22.588 22.588s10.149 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.15-22.588-22.588-22.588zM338.824 103.529c-29.063 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM338.824 28.236c-12.438 0-22.588 10.149-22.588 22.588s10.149 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.149-22.588-22.588-22.588zM402.673 419.764l-9.065-60.236h-395.836l33.642-242.025h358.822l31.413 225.882 6.957 46.261h83.396v30.117h-109.327zM364.002 147.622h-306.356l-25.299 181.79h356.954l-25.299-181.79zM331.294 178.824h-240.941v119.537h30.118v-89.419h180.706v89.45h30.118v-119.567zM120.471 390.581h-30.117v59.301h240.941v-57.404h-30.118v27.286h-180.706v-29.184z" />
+<glyph unicode="&#xe60f;" d="M256 300.137c-41.502 0-75.294-33.792-75.294-75.294s33.792-75.294 75.294-75.294 75.294 33.792 75.294 75.294-33.792 75.294-75.294 75.294zM256 179.667c-24.907 0-45.177 20.269-45.177 45.177s20.269 45.177 45.177 45.177 45.176-20.269 45.176-45.177-20.269-45.177-45.177-45.177zM510.193 195.509c1.115 9.668 1.807 19.426 1.807 29.334s-0.692 19.667-1.807 29.334l-77.945 23.432c-3.584 12.107-8.373 23.702-14.276 34.605l38.52 71.589c-12.228 15.36-26.172 29.305-41.563 41.563l-71.589-38.55c-10.933 5.903-22.528 10.661-34.635 14.276l-23.372 77.945c-9.637 1.115-19.396 1.807-29.334 1.807s-19.697-0.692-29.334-1.807l-23.371-77.945c-12.137-3.584-23.763-8.373-34.636-14.306l-71.59 38.55c-15.39-12.228-29.335-26.172-41.532-41.563l38.52-71.529c-5.903-10.903-10.662-22.528-14.276-34.636l-77.975-23.431c-1.115-9.637-1.807-19.396-1.807-29.334s0.693-19.697 1.807-29.335l77.945-23.372c3.614-12.137 8.373-23.763 14.276-34.666l-38.52-71.56c12.228-15.39 26.172-29.334 41.563-41.563l71.589 38.52c10.903-5.903 22.528-10.661 34.636-14.276l23.371-77.945c9.668-1.115 19.426-1.807 29.334-1.807s19.697 0.692 29.334 1.807l23.372 77.945c12.108 3.614 23.733 8.373 34.635 14.276l71.56-38.52c15.39 12.258 29.334 26.202 41.563 41.592l-38.49 71.56c5.903 10.902 10.661 22.528 14.276 34.635l77.945 23.372zM408.034 196.322l-4.638-15.601c-3.012-10.149-7.017-19.877-11.926-28.883l-7.71-14.306 7.68-14.306 28.672-53.308c-2.981-3.163-6.053-6.235-9.216-9.216l-67.554 36.412-14.306-7.71c-9.065-4.909-18.793-8.885-28.913-11.926l-15.601-4.638-4.668-15.601-17.438-58.188c-2.168-0.060-4.307-0.091-6.415-0.091s-4.246 0.030-6.415 0.091l-17.438 58.188-4.668 15.601-15.601 4.638c-10.119 3.012-19.847 7.017-28.883 11.926l-14.306 7.71-67.614-36.352c-3.132 2.981-6.234 6.053-9.216 9.216l36.382 67.584-7.71 14.306c-4.879 9.036-8.885 18.764-11.927 28.913l-4.608 15.571-73.758 22.106c-0.090 2.168-0.12 4.307-0.12 6.385 0 2.108 0.030 4.246 0.12 6.415l73.728 22.107 4.638 15.601c3.012 10.149 7.017 19.877 11.927 28.883l7.71 14.306-36.382 67.614c2.981 3.132 6.053 6.234 9.186 9.216l67.674-36.442 14.336 7.8c8.945 4.879 18.643 8.885 28.792 11.897l15.601 4.638 4.668 15.601 17.438 58.188c2.198 0.030 4.337 0.060 6.445 0.060s4.247-0.030 6.415-0.090l17.438-58.188 4.668-15.601 15.601-4.638c10.089-3.012 19.848-7.017 28.913-11.926l14.306-7.68 67.584 36.382c3.132-2.981 6.235-6.053 9.216-9.216l-28.702-53.308-7.68-14.306 7.74-14.306c4.909-9.036 8.885-18.733 11.897-28.822l4.638-15.601 15.601-4.668 58.188-17.499c0.030-2.168 0.060-4.307 0.060-6.415s-0.030-4.247-0.12-6.415l-73.728-22.106z" />
+<glyph unicode="&#xe610;" d="M500.074 2.093l-155.798 155.798c29.365 34.244 47.255 78.637 47.255 127.187 0 107.942-87.823 195.764-195.764 195.764-52.284 0-101.466-20.36-138.481-57.314-36.955-36.984-57.314-86.166-57.284-138.451 0-107.942 87.823-195.764 195.764-195.764 48.549 0 92.973 17.89 127.217 47.255l155.798-155.798 21.293 21.324zM195.764 119.432c-91.317 0-165.647 74.3-165.647 165.647-0.030 44.273 17.197 85.865 48.489 117.127 31.262 31.292 72.885 48.519 117.157 48.519 91.317 0 165.647-74.3 165.647-165.647 0-91.317-74.33-165.647-165.647-165.647z" />
+<glyph unicode="&#xe611;" d="M500.074 1.25l-155.798 155.798c29.365 34.244 47.255 78.607 47.255 127.187 0 107.942-87.823 195.764-195.764 195.764-52.315 0-101.466-20.36-138.451-57.344-36.984-36.954-57.314-86.137-57.314-138.421 0-107.942 87.823-195.764 195.764-195.764 48.549 0 92.943 17.89 127.217 47.255l155.798-155.798 21.293 21.324zM195.764 118.588c-91.347 0-165.647 74.3-165.647 165.647 0 44.273 17.197 85.865 48.489 117.158 31.292 31.262 72.885 48.489 117.157 48.489 91.347 0 165.647-74.3 165.647-165.647 0-91.347-74.3-165.647-165.647-165.647zM210.823 299.294h60.235v-30.117h-60.236v-60.236h-30.118v60.236h-60.236v30.118h60.236v60.236h30.118v-60.236z" />
+<glyph unicode="&#xe612;" d="M500.074 2.093l-155.798 155.798c29.365 34.244 47.255 78.637 47.255 127.187 0 107.942-87.823 195.764-195.764 195.764-52.284 0-101.466-20.36-138.481-57.314-36.955-36.984-57.314-86.166-57.284-138.451 0-107.942 87.823-195.764 195.764-195.764 48.549 0 92.973 17.89 127.217 47.255l155.798-155.798 21.293 21.324zM195.764 119.432c-91.317 0-165.647 74.3-165.647 165.647-0.030 44.273 17.197 85.865 48.489 117.127 31.262 31.292 72.885 48.519 117.157 48.519 91.317 0 165.647-74.3 165.647-165.647 0-91.317-74.33-165.647-165.647-165.647zM120.471 300.137h150.588v-30.118h-150.588v30.118z" />
+<glyph unicode="&#xe613;" d="M391.529 148.706c-16.414 0-31.594-4.728-44.875-12.409l-69.933 73.909 188.536 199.198-21.896 20.721-187.362-197.993-187.422 197.993-21.865-20.721 188.536-199.198-69.933-73.879c-13.252 7.65-28.461 12.378-44.845 12.378-49.815 0-90.353-40.538-90.353-90.353s40.538-90.353 90.353-90.353 90.353 40.538 90.353 90.353c0 22.498-8.584 42.887-22.227 58.7l67.403 71.228 67.404-71.228c-13.673-15.842-22.227-36.202-22.227-58.7 0-49.815 40.538-90.353 90.353-90.353s90.353 40.538 90.353 90.353-40.538 90.353-90.353 90.353zM120.471-1.882c-33.22 0-60.236 27.015-60.236 60.236s27.016 60.236 60.236 60.236 60.236-27.015 60.236-60.236-27.016-60.236-60.236-60.236zM391.529-1.882c-33.22 0-60.236 27.015-60.236 60.236s27.015 60.236 60.236 60.236 60.236-27.015 60.236-60.236-27.015-60.236-60.236-60.236z" />
+<glyph unicode="&#xe614;" d="M150.588 480v-512h210.823v512h-210.823zM331.294-1.882h-150.588v29.636h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v29.636h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.117h60.236v30.118h-60.236v30.118h150.588v-451.764z" />
+<glyph unicode="&#xe615;" d="M135.288 480h-59.754c-24.907 0-45.176-20.269-45.176-45.176v-320.964l75.927-149.263 74.21 149.353v320.873c-0.030 24.908-20.299 45.176-45.207 45.176zM75.535 449.882h59.754c8.282 0 15.059-6.776 15.059-15.059v-30.69h-89.871v30.69c0 8.283 6.746 15.059 15.059 15.059zM60.476 342.964v31.051h89.871v-31.051h-89.871zM118.904 57.721h-26.203l-32.226 63.368v191.759h30.118v-195.192h30.118v195.192h29.636v-191.85l-31.443-63.277zM240.941 480v-512h210.823v512h-210.823zM421.647-1.882h-150.588v29.636h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v29.636h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.117h60.236v30.118h-60.236v30.118h150.588v-451.764z" />
+<glyph unicode="&#xe616;" d="M362.496 479.548l-362.044-362.044 149.083-149.052 362.014 362.014-149.052 149.082zM43.038 117.504l20.962 20.962 42.587-42.587 21.293 21.293-42.587 42.587 21.654 21.654 21.293-21.293 21.293 21.293-21.293 21.293 21.293 21.293 42.587-42.587 21.293 21.293-42.587 42.587 20.962 20.962 21.293-21.293 21.293 21.293-21.293 21.293 21.293 21.293 42.587-42.587 21.293 21.293-42.587 42.587 21.625 21.625 21.293-21.293 21.293 21.293-21.293 21.293 21.293 21.293 42.616-42.587 21.293 21.293-42.616 42.587 21.324 21.323 106.466-106.496-319.428-319.428-106.496 106.466z" />
+<glyph unicode="&#xe617;" d="M107.279 449.882v-465.589l141.131 98.485 143.119-98.183v465.288h-284.25zM361.412 41.758l-113.122 77.644-110.863-77.342v377.705h223.985v-378.007z" />
+<glyph unicode="&#xe618;" d="M301.99 176.595v303.405h-182.332v-303.495l90.986 61.832 91.347-61.741zM149.775 233.397v216.486h122.127v-216.576l-61.35 41.442-60.778-41.352zM481.882 449.671v-451.554h-451.764v451.554h59.452v-30.118h-29.334v-391.318h391.529v391.318h-120.621v30.118h150.739z" />
+<glyph unicode="&#xe619;" d="M180.706 239.059h-180.706v180.706h30.117v-123.754c30.509 96.166 121.555 165.165 225.882 165.165 105.592 0 199.409-71.077 228.111-172.845l-29.003-8.162c-25.058 88.847-106.948 150.919-199.108 150.919-97.159-0.030-181.188-68.548-202.029-161.912h126.735v-30.118zM331.294 208.941v-30.118h126.735c-20.872-93.395-104.779-161.882-202.029-161.882-92.22 0-174.080 62.072-199.108 150.92l-29.003-8.162c28.672-101.767 122.489-172.845 228.111-172.845 104.177 0 195.012 68.668 225.882 165.105v-123.724h30.118v180.706h-180.706z" />
+<glyph unicode="&#xe61a;" d="M481.882 208.941h-210.824v-210.824h-30.118v210.823h-210.823v30.118h210.823v210.824h30.118v-210.824h210.823v-30.118z" />
+<glyph unicode="&#xe61b;" d="M361.412 344.471c0 58.127-47.284 105.412-105.412 105.412s-105.412-47.285-105.412-105.412c0-52.556 38.791-95.925 89.209-103.756v-242.598h30.118v242.357c51.501 6.867 91.498 50.658 91.498 103.996zM256 269.177c-41.532 0-75.294 33.762-75.294 75.294s33.762 75.294 75.294 75.294 75.294-33.762 75.294-75.294-33.762-75.294-75.294-75.294zM301.176 329.412h-30.118c0 16.625-13.493 30.117-30.118 30.117v30.118c33.22 0 60.236-27.016 60.236-60.236z" />
+<glyph unicode="&#xe61c;" d="M467.697 393.954l-42.255 42.285c-17.017 17.047-46.833 17.047-63.909 0l-272.776-272.805-51.862-159.262 158.058 53.157 272.716 272.745c17.649 17.589 17.649 46.26 0.030 63.88zM93.184 79.616l19.426 59.603 58.248-58.277-59.121-19.877-18.552 18.553zM131.162 163.223l165.436 165.436 63.579-63.548-165.466-165.466-63.548 63.579zM317.892 349.982l21.956 21.956 63.579-63.548-21.956-21.956-63.579 63.548zM446.404 351.368l-21.685-21.685-63.579 63.548 21.685 21.715c5.692 5.692 15.601 5.692 21.293 0l42.255-42.285c5.903-5.903 5.903-15.42 0.030-21.293z" />
+<glyph unicode="&#xe61d;" d="M496.911 424.493l-42.255 42.255c-17.046 17.047-46.833 17.047-63.909 0l-226.966-226.966-51.862-159.232 158.088 53.158 226.906 226.906c8.524 8.524 13.221 19.877 13.221 31.955s-4.699 23.401-13.221 31.925zM168.177 155.995l19.215 58.94 57.826-57.796-58.489-19.667-18.553 18.522zM205.764 239.179l120.049 120.049 63.548-63.548-120.049-120.049-63.548 63.548zM347.106 380.522l21.956 21.956 63.548-63.548-21.956-21.956-63.548 63.548zM475.618 381.907l-21.685-21.715-63.548 63.548 21.685 21.715c5.723 5.692 15.631 5.692 21.293 0l42.255-42.255c2.831-2.861 4.397-6.626 4.397-10.661s-1.566-7.771-4.397-10.632zM451.764 254.118h30.118v-286.118h-481.882v451.764h225.882v-30.118h-195.764v-391.529h421.647v256z" />
+<glyph unicode="&#xe61e;" d="M451.764 419.764v60.236h-391.529v-60.236h-15.541c-24.636 0-44.694-20.329-44.694-45.327v-90.052c0-24.998 20.058-45.327 44.694-45.327h181.429c8.282 0 15.059-6.776 15.059-15.059v-45.176h-30.358v-210.823h90.353v210.823h-29.877v45.176c0 24.907-20.269 45.176-45.177 45.176h-181.429c-8.011 0-14.577 6.837-14.577 15.21v90.052c0 8.373 6.566 15.209 14.577 15.209h15.541v-90.353h391.529v90.353h30.118v30.118h-30.118zM271.059-1.882h-30.118v150.588h30.118v-150.588zM421.647 329.412h-331.294v120.47h331.294v-120.47z" />
+<glyph unicode="&#xe61f;" d="M502.995 184.305l-267.084 268.77-4.036-4.005c-20.119 19.908-46.743 30.9-75.084 30.931 0 0 0 0-0.030 0-28.552 0-55.447-11.144-75.656-31.353-20.239-20.209-31.383-47.074-31.383-75.716 0-28.341 11.023-54.965 30.931-75.084l-66.5-66.53c-9.126-9.156-14.155-21.263-14.155-34.124 0-12.921 5-24.998 14.065-34.033l144.896-146.341c9.095-9.096 21.203-14.125 34.063-14.125 12.921 0 25.028 5.060 34.124 14.185l167.394 167.394 108.454 0.030zM79.842 372.962c0 20.54 8.011 39.846 22.558 54.393 14.547 14.516 33.822 22.528 54.362 22.528 0.030 0 0.030 0 0.030 0 20.299 0 39.333-7.891 53.79-22.106l-108.604-108.635c-14.246 14.487-22.136 33.521-22.136 53.82zM205.794 38.144c-3.404-3.404-7.981-5.331-12.8-5.331s-9.367 1.868-12.709 5.24l-109.508 110.652h245.579l-110.562-110.562zM346.474 178.824h-305.543l-5.511 5.602c-3.433 3.404-5.3 7.921-5.3 12.74 0 4.849 1.898 9.397 5.331 12.86l200.403 200.403 194.801-196.036-48.61-0.030-35.569-35.539zM472.486 119.823l-12.258 18.191-12.589-18.010c-9.608-13.764-41.050-60.567-41.050-84.269 0-29.063 23.642-52.706 52.706-52.706s52.706 23.673 52.706 52.736c0 23.552-30.238 70.295-39.514 84.058zM459.294 13.176c-12.438 0-22.588 10.149-22.588 22.588 0 7.228 10.511 27.708 23.070 47.917 12.047-20.179 22.106-40.629 22.106-47.917 0-12.438-10.149-22.588-22.588-22.588z" />
+<glyph unicode="&#xe620;" d="M256 464.941c-132.849 0-240.941-108.092-240.941-240.941s108.092-240.941 240.941-240.941 240.941 108.092 240.941 240.941-108.092 240.941-240.941 240.941zM256 434.824c52.706 0 100.834-19.577 137.849-51.682l-296.96-296.99c-32.136 36.984-51.712 85.142-51.712 137.849 0 116.224 94.57 210.823 210.823 210.823zM256 13.176c-52.706 0-100.834 19.577-137.849 51.682l296.96 296.99c32.135-36.984 51.712-85.142 51.712-137.849 0-116.224-94.57-210.823-210.823-210.823z" />
+<glyph unicode="&#xe621;" d="M376.471 480h-240.941c-24.907 0-45.177-20.269-45.177-45.176v-421.647c0-24.908 20.269-45.176 45.177-45.176h240.941c24.908 0 45.176 20.269 45.176 45.176v421.647c0 24.907-20.269 45.176-45.176 45.176zM135.53 449.882h240.941c8.313 0 15.059-6.746 15.059-15.059v-45.177h-271.059v45.177c0 8.313 6.746 15.059 15.059 15.059zM391.529 359.529v-240.941h-271.059v240.941h271.059zM376.471-1.882h-240.941c-8.313 0-15.059 6.747-15.059 15.059v75.294h271.059v-75.294c0-8.313-6.747-15.059-15.059-15.059zM271.059 43.294c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059 6.746 15.059 15.059 15.059 15.059-6.747 15.059-15.059z" />
+<glyph unicode="&#xe622;" d="M451.764 239.059v-30.117h-391.529v30.118h391.529z" />
+<glyph unicode="&#xe623;" d="M256 480c-83.034 0-150.588-67.554-150.588-150.588 0-41.412 16.715-80.083 47.044-108.906 2.56-2.469 5.421-4.638 8.313-6.806l3.102-2.349c5.391-4.247 11.113-7.74 16.836-11.173v-217.118l74.661 57.254 75.926-57.254v217.118c5.723 3.433 11.475 6.957 16.866 11.204l3.102 2.319c2.892 2.168 5.723 4.337 8.313 6.806 30.298 28.822 47.014 67.493 47.014 108.906 0 83.034-67.554 150.588-150.588 150.588zM301.176 43.505l-45.959 34.666-44.394-34.063v127.247c14.517-5.029 29.696-7.589 45.177-7.589s30.66 2.56 45.177 7.589v-127.85zM338.793 242.311c-1.716-1.656-3.644-3.042-5.572-4.428l-3.704-2.831c-43.52-34.183-103.544-34.154-147.004-0.030l-3.734 2.861c-1.928 1.416-3.855 2.801-5.572 4.428-24.305 23.1-37.677 54.001-37.677 87.1 0 66.44 54.031 120.471 120.47 120.471s120.471-54.031 120.471-120.471c0-33.099-13.372-64-37.677-87.1zM329.788 374.166l5.541-29.575-54.904-10.27 34.515-58.338-25.931-15.36-32.738 55.296-32.828-55.266-25.871 15.36 34.696 58.428-53.489 10.149 5.602 29.575 56.561-10.692v56.29h30.118v-56.561l58.729 10.963z" />
+<glyph unicode="&#xe624;" d="M256 480c-83.034 0-150.588-67.554-150.588-150.588 0-41.412 16.715-80.083 47.044-108.906 2.56-2.469 5.421-4.638 8.313-6.806l3.102-2.349c5.391-4.247 11.113-7.74 16.836-11.173v-217.118l74.661 57.254 75.926-57.254v217.118c5.723 3.433 11.475 6.957 16.866 11.204l3.102 2.319c2.892 2.168 5.723 4.337 8.313 6.806 30.298 28.822 47.014 67.493 47.014 108.906 0 83.034-67.554 150.588-150.588 150.588zM301.176 43.505l-45.959 34.666-44.394-34.063v127.247c14.517-5.029 29.696-7.589 45.177-7.589s30.66 2.56 45.177 7.589v-127.85zM338.793 242.311c-1.716-1.656-3.644-3.042-5.572-4.428l-3.704-2.831c-43.52-34.183-103.544-34.154-147.004-0.030l-3.734 2.861c-1.928 1.416-3.855 2.801-5.572 4.428-24.305 23.1-37.677 54.001-37.677 87.1 0 66.44 54.031 120.471 120.47 120.471s120.471-54.031 120.471-120.471c0-33.099-13.372-64-37.677-87.1zM308.706 329.412c0-29.094-23.612-52.706-52.706-52.706s-52.706 23.612-52.706 52.706 23.612 52.706 52.706 52.706 52.706-23.612 52.706-52.706z" />
+<glyph unicode="&#xe625;" d="M320.632 449.882h-23.13c-6.988 17.709-23.161 30.118-41.954 30.118h-74.3c-8.794 0-15.963-2.711-21.263-8.072-9.517-9.548-9.457-23.221-9.397-37.737v-354.756l55.748-70.024h4.488v-41.412l30.118 20.721v20.721h4.428l55.808 70.024v340.3h19.456c10.149 0 10.661-16.263 10.661-19.516v-128.482h30.118v128.482c0.030 29.214-16.745 49.634-40.779 49.634zM181.248 449.882h74.3c8.584 0 15.541-8.764 15.541-19.516v-100.954h-90.383v104.93c0 5.843-0.060 14.668 0.542 15.541zM230.912 39.529h-10.029l-40.147 50.447-0.030 209.317h90.353v-209.317l-40.147-50.447z" />
+<glyph unicode="&#xe626;" d="M471.763 308.812l-16.384 16.384c2.349 5.391 3.825 11.084 4.187 16.926 0.783 13.101-3.644 25.148-12.529 34.033l-52.555 52.555c-6.204 6.204-13.161 9.337-20.691 9.337-13.523 0-23.161-9.728-33.37-20.059l-272.143-272.143-10.090-88.998 3.163-3.132-29.274-29.274 35.931-6.686 14.668 14.637 3.132-3.132 88.968 10.029 261.933 261.964 13.733-13.733c2.168-2.168 2.831-4.337 2.289-7.379-0.783-4.247-3.885-9.337-8.524-13.975l-90.835-90.865 21.293-21.293 90.835 90.865c9.125 9.095 14.969 19.426 16.866 29.817 2.349 12.83-1.416 24.967-10.601 34.123zM160.918 68.081l-64.091-7.259-7.078 7.077 7.288 64.030 169.322 169.322 63.88-63.88-169.321-169.292zM351.533 258.666l-63.88 63.88 74.21 74.21c4.096 4.187 10.3 10.451 11.324 10.662l52.555-52.556c3.614-3.614 3.885-8.372 3.764-10.872-0.301-5.060-2.651-9.969-6.565-13.915l-71.409-71.409z" />
+<glyph unicode="&#xe627;" d="M456.162 213.339l-185.103 185.133v-400.354h-30.118v400.354l-185.103-185.133-21.323 21.323 221.485 221.455 221.485-221.485-21.324-21.293z" />
+<glyph unicode="&#xe628;" d="M473.058 224.844l-221.485-221.485-21.293 21.293 185.103 185.103h-385.265v30.118h385.295l-185.133 185.163 21.293 21.293 221.485-221.485z" />
+<glyph unicode="&#xe629;" d="M481.882 209.784h-385.295l185.103-185.103-21.293-21.293-221.455 221.455 221.485 221.485 21.293-21.293-185.133-185.133h385.295v-30.118z" />
+<glyph unicode="&#xe62a;" d="M477.485 213.339l-221.485-221.455-221.485 221.455 21.293 21.293 185.133-185.103v400.354h30.117v-400.354l185.103 185.103 21.324-21.293z" />
+<glyph unicode="&#xe62b;" d="M286.118 149.549c0-11.023-6.235-20.239-15.059-25.48v-64.874h-30.118v64.844c-8.855 5.24-15.059 14.457-15.059 25.51 0 16.625 13.463 30.118 30.118 30.118 16.595 0 30.117-13.462 30.117-30.118zM450.711 225.204v-213.233c0-24.908-20.269-45.177-45.176-45.177h-300.845c-24.907 0-45.176 20.269-45.176 45.176v213.233c0 24.907 20.269 45.177 45.176 45.177h0.723v59.874c0 83.034 67.554 150.588 150.588 150.588s150.588-67.554 150.588-150.588v-59.995c24.425-0.542 44.123-20.51 44.123-45.056zM135.53 270.381h240.941v59.874c0 66.44-54.031 120.471-120.471 120.471s-120.471-54.031-120.471-120.471v-59.874zM420.593 225.204c0 7.951-6.235 14.276-14.005 14.848v-0.12h-301.176v0.332h-0.723c-8.282 0-15.059-6.746-15.059-15.059v-213.233c0-8.313 6.776-15.059 15.059-15.059h300.845c8.283 0 15.059 6.747 15.059 15.059v213.233z" />
+<glyph unicode="&#xe62c;" d="M59.362 420.788l159.262-424.689 36.502 228.924 228.924 36.502-424.689 159.262zM228.834 251.347l-22.016-137.999-95.985 255.97 255.97-95.985-137.969-21.986z" />
+<glyph unicode="&#xe62d;" d="M391.017 270.983l-28.25-28.25-21.293 21.293 28.25 28.25c29.365 29.364 29.365 77.132 0 106.466s-77.132 29.364-106.466 0l-89.962-89.992c-29.364-29.365-29.364-77.132 0-106.466s77.132-29.365 106.466 0l21.293-21.293c-20.57-20.57-47.525-30.81-74.541-30.81s-53.971 10.27-74.511 30.81c-41.081 41.081-41.081 107.972 0 149.052l89.962 89.962c41.111 41.111 107.941 41.111 149.052 0 41.111-41.051 41.111-107.942 0-149.022zM181.971 238.035l-3.916-3.885 21.233-21.354 3.946 3.916c29.364 29.364 77.131 29.364 106.466 0s29.365-77.132 0-106.466l-91.046-91.106c-29.364-29.365-77.132-29.365-106.466 0s-29.365 77.132 0 106.466l31.865 31.894-21.293 21.293-31.864-31.894c-41.081-41.081-41.081-107.972 0-149.052 20.57-20.57 47.525-30.811 74.541-30.811s53.971 10.27 74.541 30.81l91.046 91.076c41.081 41.081 41.081 107.972 0 149.052-41.14 41.171-108.002 41.081-149.052 0.060z" />
+<glyph unicode="&#xe62e;" d="M0 480v-512h512v512h-512zM30.117 299.294h271.059v-301.176h-271.059v301.176zM481.882-1.882h-150.588v301.176h150.588v-301.176zM30.117 329.412v120.47h451.764v-120.47h-451.764z" />
+<glyph unicode="&#xe62f;" d="M391.529 449.882h-391.529v-331.294h391.529v331.294zM361.412 148.706h-331.294v271.059h331.294v-271.059zM512 329.412v-331.294h-391.529v91.286h30.118v-61.169h331.294v271.059h-60.717v30.118h90.835z" />
+<glyph unicode="&#xe630;" d="M331.294 449.882h-331.294v-271.059h331.294v271.059zM301.176 208.941h-271.059v210.824h271.059v-210.824zM421.647 88.471h-331.294v59.663h30.118v-29.546h271.059v210.824h-29.937v30.117h60.055v-271.059zM512 269.177v-271.059h-331.294v59.663h30.118v-29.546h271.059v210.823h-29.937v30.117h60.054z" />
+<glyph unicode="&#xe631;" d="M446.072 290.289l21.293 21.293-52.194 52.194 22.799 22.678-21.233 21.353-245.339-244.164c-14.577 10.12-32.226 16.113-51.291 16.113-49.815 0-90.353-40.538-90.353-90.353s40.538-90.353 90.353-90.353 90.353 40.538 90.353 90.353c0 19.908-6.686 38.189-17.619 53.127l158.54 157.756 52.344-52.345 21.293 21.293-52.315 52.284 21.113 21.022 52.254-52.254zM120.079 29.169c-33.22 0-60.236 27.015-60.236 60.236s27.016 60.236 60.236 60.236 60.236-27.015 60.236-60.236-27.016-60.236-60.236-60.236z" />
+<glyph unicode="&#xe632;" d="M256 68.081l-146.161 145.468 21.233 21.353 109.869-109.357v325.18h30.117v-325.18l109.839 109.327 21.233-21.353-146.131-145.438zM481.882 208.038v-194.861c0-8.313-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.747-15.059 15.059v195.012h-30.117v-195.012c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v194.861h-30.118z" />
+<glyph unicode="&#xe633;" d="M30.117 449.882v-451.764h451.764v451.764h-451.764zM451.764 28.236h-391.529v60.236h391.529v-60.236zM60.236 118.588v301.176h391.529v-301.176h-391.529zM427.761 173.854l-20.992-21.594-72.794 70.746-46.803-50.477-74.873 132.97-102.43-149.836-24.877 16.986 129.807 189.832 78.426-139.204 39.665 42.827 94.87-92.25z" />
+<glyph unicode="&#xe634;" d="M376.471 460.183c-52.375 0-97.913-29.877-120.471-73.457-22.558 43.58-68.096 73.457-120.471 73.457-74.722 0-135.53-60.808-135.53-135.529 0-10.331 1.446-21.052 4.638-33.672l3.283-10.572c43.129-131.132 230.671-282.895 238.652-289.25l9.427-7.589 9.427 7.589c8.493 6.837 208.595 168.599 238.743 289.551l3.373 11.084c3.042 12.107 4.457 22.558 4.457 32.858 0 74.722-60.808 135.53-135.53 135.53zM478.539 299.897l-3.404-11.143c-24.365-97.762-179.079-232.719-219.136-266.331-38.611 32.618-184.38 160.738-219.407 267.204l-3.012 9.517c-2.319 9.366-3.463 17.709-3.463 25.51 0 58.127 47.284 105.412 105.412 105.412s105.412-47.315 105.412-105.412v-7.589h30.118v7.589c0 58.127 47.284 105.412 105.412 105.412s105.412-47.285 105.412-105.412c0-7.77-1.144-15.872-3.343-24.756z" />
+<glyph unicode="&#xe635;" d="M4.608 290.981c-3.163 12.62-4.608 23.341-4.608 33.672 0 74.722 60.807 135.529 135.53 135.529 52.374 0 97.912-29.876 120.47-73.457 22.558 43.58 68.096 73.457 120.471 73.457 74.722 0 135.529-60.808 135.529-135.529 0-10.3-1.416-20.721-4.428-32.858l-3.404-11.084c-2.44-9.969-6.867-21.715-13.644-36.111l-27.226 12.83c5.903 12.589 9.698 22.558 11.897 31.352l3.373 11.113c2.199 8.885 3.313 16.987 3.313 24.757 0 58.127-47.284 105.412-105.412 105.412s-105.412-47.315-105.412-105.412h-30.118c0 58.127-47.285 105.412-105.412 105.412s-105.412-47.315-105.412-105.412c0-7.801 1.145-16.143 3.493-25.51l3.012-9.517c2.831-8.644 7.078-18.612 13.282-31.111l-26.985-13.433c-6.867 13.854-11.626 25.088-14.998 35.328l-3.313 10.572zM255.97 21.88c-24.275 19.065-93.425 76.288-149.865 150.98l-24.004-18.191c72.102-95.382 161.25-161.19 164.984-163.93l8.975-6.565 8.915 6.626c3.885 2.861 95.985 71.5 166.731 163.78l-23.884 18.341c-55.658-72.553-127.067-131.494-151.853-151.040zM426.827 256.678l-85.293-60.236-85.293 60.236-85.323-60.236-85.444 60.205-94.148-66.319 17.348-24.636 76.8 54.151 85.444-60.265 85.323 60.236 85.293-60.236 85.293 60.236 76.469-54.091 17.408 24.576-93.876 66.38z" />
+<glyph unicode="&#xe636;" d="M421.647 347.392v-218.594c0-25.781-10.149-56.23-19.125-83.065-5.391-16.204-10.993-32.918-10.993-40.087v-22.588c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v22.588c0 12.047 5.541 28.612 12.559 49.604 7.8 23.492 17.558 52.676 17.558 73.548v218.594c0 8.283-6.204 14.547-14.396 14.547-8.373 0-15.42-6.325-15.692-14.095 0-0.091-0.060-0.18-0.060-0.271l0.030-116.254c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059l-0.030 123.061c0 0.15 0.091 0.271 0.091 0.452v42.345c0 6.988-4.216 14.547-13.433 14.547-8.252 0-15.902-6.325-16.384-13.553-0.030-0.392-0.301-0.753-0.361-1.174v-134.927c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.716-15.059 15.059v147.456c0 0.662 0.301 1.265 0.392 1.897v23.943c0 7.861-7.259 14.517-15.812 14.517-8.403 0-14.969-6.355-14.969-14.517v-26.082c0.060-0.452 0.271-0.844 0.271-1.325v0-147.456c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.746-15.059 15.059v0 138.3c0 0.12-0.090 0.211-0.12 0.332-0.994 7.168-7.469 12.589-15.059 12.589-8.403 0-15.209-6.536-15.209-14.547v-171.821c0-6.264-3.855-11.866-9.698-14.065-5.752-2.199-12.439-0.603-16.595 4.066l-33.642 37.767c-11.836 13.824-19.757 9.366-22.678 7.68-3.493-1.958-5.993-5.15-6.987-8.945-0.964-3.644-0.421-7.469 1.506-10.752l99.148-211.094c1.386-2.199 4.758-4.668 8.855-5.662 6.776-1.627 11.505-7.68 11.505-14.637v-26.654c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v16.444c-6.957 3.855-12.74 9.457-16.866 16.414l-99.117 211.125c-5.421 9.005-7.078 21.022-4.036 32.557 3.102 11.656 10.662 21.383 21.263 27.407 20.359 11.475 42.828 6.204 60.236-14.095l7.138-8.012v132.276c0 24.636 20.329 44.664 45.327 44.664 5.24 0 10.331-0.903 15.059-2.56 2.018 22.799 21.383 40.719 44.906 40.719 24.124 0 43.942-18.191 45.809-41.171 5.15 1.928 10.722 3.012 16.505 3.012 24.425 0 43.55-19.606 43.55-44.664v-7.891c4.909 1.777 10.18 2.74 15.661 2.74 24.938 0.030 44.484-19.577 44.484-44.635z" />
+<glyph unicode="&#xe637;" d="M459.053 316.762l-35.78-242.868c-3.554-18.432-11.716-26.503-17.649-32.406-5.752-5.723-9.577-9.517-9.577-28.1v-30.329c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v30.329c0 28.762 8.373 39.424 18.492 49.453 4.668 4.638 7.469 7.439 9.156 16.083l35.69 242.116c0.542 3.705 1.536 16.264-8.222 17.619-3.373 0.482-6.114-0.060-8.283-1.716-2.892-2.139-4.94-6.294-5.662-11.385l-14.969-99.87c-0.753-5.15-4.156-9.517-8.915-11.596s-10.27-1.506-14.577 1.476c-1.506-0.241-4.036 0.692-6.565 2.349-4.578 2.921-7.198 8.072-6.897 13.493l8.584 159.202c0.692 8.373-5.12 15.33-13.011 16.023-3.825 0.361-7.5-0.844-10.421-3.283-2.952-2.47-4.699-5.903-5.029-9.668l-13.945-144.023c-0.783-8.101-7.198-13.975-15.993-13.583-2.44 0.15-4.909 0.301-7.409 0.332-8.101 0.18-14.607 6.716-14.757 14.788l-3.464 184.29c0 8.072-6.325 14.396-14.095 14.396s-14.095-6.325-14.095-14.095l-3.554-198.355c-0.12-5.722-3.434-10.903-8.613-13.342-1.868-0.903-3.674-1.807-5.391-2.771-4.428-2.53-9.819-2.62-14.336-0.241-4.518 2.349-7.559 6.837-8.071 11.897l-15.511 160.497c-0.332 3.945-2.108 7.379-5 9.819-2.922 2.439-6.867 3.554-10.391 3.283-3.795-0.332-7.198-2.108-9.637-5.029-2.41-2.892-3.584-6.565-3.252-10.33l15.149-213.745c0.482-6.565-3.404-12.709-9.548-15.089-6.204-2.409-13.191-0.512-17.257 4.668l-46.713 58.82c-6.114 10.24-16.926 13.101-25.299 8.252-4.096-2.38-7.017-6.174-8.222-10.722-1.204-4.517-0.603-9.276 1.807-13.342l106.285-183.326c2.41-4.187 6.355-7.108 11.053-8.252 6.746-1.627 11.505-7.68 11.505-14.637v-20.781c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v10.541c-7.65 4.126-14.005 10.27-18.492 18.010l-106.316 183.326c-6.415 11.023-8.132 23.884-4.819 36.202 3.252 12.348 11.174 22.649 22.257 29.063 22.829 13.162 52.043 5.331 65.174-17.438l15.239-19.095-11.716 165.135c-1.024 11.505 2.59 23.010 10.18 32.106 7.589 9.036 18.311 14.607 30.088 15.661 11.957 1.084 23.341-2.62 32.436-10.24 4.397-3.704 7.921-8.101 10.541-12.981l0.422 22.678c0 24.154 19.847 43.972 44.212 43.972s44.212-19.848 44.212-44.243l0.421-22.468c2.651 4.909 6.204 9.337 10.632 13.071 9.125 7.65 20.721 11.324 32.467 10.24 24.425-2.139 42.526-23.732 40.388-48.128l-1.596-29.455c0.783 0.692 1.627 1.356 2.44 1.988 8.674 6.505 19.185 9.036 30.66 7.469 23.642-3.283 37.587-24.576 33.792-51.712z" />
+<glyph unicode="&#xe638;" d="M420.533 311.341v-176.007c0-23.401-11.535-37.376-19.968-47.556-7.048-8.553-10.722-13.342-10.722-20.901v-53.7c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v53.7c0 18.764 9.788 30.599 17.649 40.087 7.288 8.825 13.071 15.781 13.071 28.341v176.037c0 9.397-8.072 18.252-16.595 18.252-9.909 0-12.017-1.536-12.108-1.596-1.988-2.68-1.928-17.137-1.897-28.792 0.030-5.692 0.060-12.047-0.060-19.035-0.12-8.252-6.415-14.396-15.18-14.848-8.252 0.060-14.938 6.776-14.938 15.059v63.85c0 9.246-6.686 16.203-15.541 16.203-8.132 0-14.095-6.053-14.818-14.697v-60.325c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v0 60.566c0 0.091-0.060 0.181-0.060 0.301v23.281c0 1.988-0.421 19.336-14.276 19.336-13.553 0-15.601-12.108-15.601-19.336v-21.172c0-0.844-0.332-1.627-0.482-2.44v-78.125c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.746-15.059 15.059v0 80.836c-1.446 5.843-5.662 11.746-14.035 11.746-8.613 0-15.872-7.861-15.872-17.167v-100.894c0-0.211-0.18-0.392-0.18-0.602v-33.16c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v25.118c-5.3 1.928-12.981 3.494-17.378 2.5-3.554-0.692-7.138-3.825-9.367-8.162-1.777-3.404-4.156-10.451-0.271-19.185l51.14-111.947c0.482-1.054 0.813-2.139 1.054-3.252 1.686-8.283 9.397-13.733 17.709-12.981 4.186 0.542 8.463-0.904 11.655-3.764 3.162-2.861 5-6.927 5-11.204v-52.525c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v38.731c-16.143 4.187-29.184 16.896-33.34 33.882l-50.567 110.683c-6.626 14.938-6.234 31.412 0.964 45.387 6.445 12.439 17.709 21.353 30.148 23.883 6.325 1.295 14.878 0.934 23.341-0.783v21.685c0 0.301 0.15 0.572 0.18 0.874v55.717c0 26.082 20.661 47.284 45.989 47.284 6.024 0 11.806-1.204 17.047-3.373 5.994 19.396 22.076 31.834 43.159 31.834 20.118 0 35.9-12.709 41.834-31.955 5.361 2.259 11.234 3.493 17.438 3.493 20.751 0 37.888-13.372 43.58-32.286 5.512 1.204 11.113 1.476 16.143 1.476 25.359 0 46.743-22.137 46.743-48.369z" />
+<glyph unicode="&#xe639;" d="M240.941 359.529l-58.97 60.236h-181.971v-451.764h512v391.529h-271.059zM169.321 389.647l58.97-60.236h253.59v-61.048l-451.764 0.783v120.501h139.204zM30.117-1.882v240.911l451.764-0.783v-240.128h-451.764z" />
+<glyph unicode="&#xe63a;" d="M391.529 178.582v278.227l-357.767-139.113 357.767-139.113zM361.412 222.584l-244.585 95.112 244.585 95.141v-190.253zM451.764 480v-512h-30.118v512h30.118z" />
+<glyph unicode="&#xe63b;" d="M451.764 480v-512h-30.118v512h30.118zM45.989 450.605h345.54v-240.941h-346.052l87.673 119.025-87.16 121.916zM361.412 420.488h-256.844l65.807-92.040-65.295-88.666h256.332v180.706z" />
+<glyph unicode="&#xe63c;" d="M451.764 480v-512h-30.118v512h30.118zM150.107 449.882h240.941v-240.941h-150.107v-60.236h-210.823v240.941h119.988v60.236zM210.823 208.941h-60.236v150.588h-90.353v-180.706h150.588v30.118zM180.224 419.764v-30.118h0.482v-150.588h180.224v180.706h-180.706z" />
+<glyph unicode="&#xe63d;" d="M510.946 214.452c-38.671 98.394-141.161 164.533-254.946 164.533s-216.275-66.139-254.946-164.533c-1.385-3.524-1.385-7.469 0-10.993 38.701-98.425 141.161-164.563 254.946-164.563s216.245 66.108 254.946 164.532c1.415 3.554 1.415 7.469 0 11.023zM256 69.014c-99.328 0-188.808 55.988-224.648 139.927 35.81 83.938 125.29 139.927 224.648 139.927s188.837-55.989 224.648-139.927c-35.84-83.908-125.32-139.927-224.648-139.927zM256 318.66c-60.507 0-109.719-49.212-109.719-109.718s49.212-109.719 109.748-109.719c60.476 0 109.719 49.212 109.719 109.719s-49.243 109.719-109.749 109.719zM256 129.34c-43.911 0-79.631 35.719-79.631 79.601s35.749 79.601 79.631 79.601c43.882 0 79.601-35.719 79.601-79.601s-35.69-79.601-79.601-79.601zM256 249.811c-22.528 0-40.87-18.341-40.87-40.869s18.341-40.87 40.87-40.87 40.87 18.341 40.87 40.87-18.341 40.87-40.87 40.87zM256 198.189c-5.933 0-10.752 4.819-10.752 10.752s4.819 10.752 10.752 10.752 10.752-4.819 10.752-10.752-4.819-10.752-10.752-10.752z" />
+<glyph unicode="&#xe63e;" d="M131.283 300.62l-21.624 20.992 146.341 150.739 146.341-150.739-21.625-20.962-109.659 112.941v-324.277h-30.118v324.276l-109.659-112.971zM481.882 208.038v-194.861c0-8.313-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.747-15.059 15.059v195.012h-30.117v-195.012c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v194.861h-30.118z" />
+<glyph unicode="&#xe63f;" d="M180.706 26.94v212.119h-30.118v-212.119l-109.809 109.809-21.293-21.293 146.161-146.161 146.191 146.191-21.293 21.293-109.839-109.839zM165.286 12.243h0.692l-0.332-0.361-0.362 0.361zM471.221 311.221l-109.809 109.839v-213.715h-30.118v213.715l-109.809-109.839-21.323 21.323 146.191 146.161 146.191-146.191-21.324-21.293z" />
+<glyph unicode="&#xe640;" d="M60.236 148.706h391.529v240.941h-391.529v-240.941zM90.353 359.529h331.294v-180.706h-331.294v180.706zM466.824 449.882h-421.647c-24.907 0-45.176-19.215-45.176-42.858v-305.814c0-23.642 20.269-42.858 45.176-42.858h421.647c24.907 0 45.176 19.215 45.176 42.858v305.815c0 23.642-20.269 42.858-45.176 42.858zM481.882 101.211c0-7.048-6.776-12.74-15.059-12.74h-421.647c-8.282 0-15.059 5.692-15.059 12.74v305.815c0 7.048 6.776 12.74 15.059 12.74h421.647c8.283 0 15.059-5.692 15.059-12.74v-305.815zM150.588 28.236h210.823v-30.118h-210.823v30.118z" />
+<glyph unicode="&#xe641;" d="M511.97 449.882h-67.976c0.030 5.060 0.241 9.879 0.241 15.059v15.059h-376.471v-15.059c0-4.819 0.121-10.029 0.15-15.059h-67.885l-0.030-15.029c-0.090-32.708 1.867-66.228 5.873-99.69 10.601-88.455 38.279-190.976 84.179-213.444 5.843-2.892 11.897-4.337 17.95-4.337 7.168 0 14.427 2.048 21.293 6.204l6.294 4.216c25.088-38.46 59.332-64.421 105.351-69.21v-60.476h-88.938v-30.118h210.824v30.118h-91.769v60.145c42.616 4.488 77.854 28.16 105.201 69.632l7.048-4.668c6.505-3.916 13.462-5.843 20.51-5.843 6.053 0 12.168 1.445 18.131 4.367 45.899 22.468 73.577 124.988 84.179 213.444 4.005 33.43 5.963 66.981 5.873 99.689l-0.030 14.999zM120.109 153.705l-6.897-4.638c-3.373-1.988-6.144-2.108-9.879-0.301-23.642 11.596-54.453 80.565-67.554 190.012-3.252 27.106-5.090 54.272-5.541 80.986h38.34c2.921-88.064 15.451-194.801 53.971-269.733l-2.439 3.675zM256 87.236c-136.734 0-156.582 242.447-158.028 362.647h316.055c-1.476-142.185-25.238-362.647-158.028-362.647zM476.22 338.779c-13.132-109.447-43.911-178.417-67.554-190.012-3.704-1.837-6.505-1.747-9.276-0.091l-7.529 5.029-3.493-5.24c32.497 61.38 51.411 152.576 55.145 271.3h38.279c-0.482-26.714-2.319-53.88-5.572-80.986z" />
+<glyph unicode="&#xe642;" d="M380.265 276.917l-122.971 200.975-126.826-201.036-135.5 115.441 52.374-394.18h417.28l52.345 393.788-136.704-114.989zM73.698 28.236l-4.005 30.118h372.586l-4.005-30.118h-364.574zM446.284 88.471h-380.567l-30.57 230.009 102.279-87.1 119.476 189.44 115.983-189.5 104.026 87.522-30.63-230.37z" />
+<glyph unicode="&#xe643;" d="M512 434.824v-240.007c0-24.908-20.269-45.176-45.176-45.176h-15.3v30.118h15.3c8.313 0 15.059 6.776 15.059 15.059v240.007c0 8.283-6.747 15.059-15.059 15.059h-421.647c-8.313 0-15.059-6.776-15.059-15.059v-240.007c0-8.283 6.746-15.059 15.059-15.059h45.177v-87.1l53.579 47.255 19.908-22.588-103.605-91.407v123.724h-15.059c-24.907 0-45.176 20.269-45.176 45.176v240.007c0 24.907 20.269 45.176 45.176 45.176h421.647c24.907 0 45.176-20.269 45.176-45.176zM422.25 192.678v-91.648c0-24.908-20.269-45.176-45.176-45.176h-15.059v-92.281l-110.442 92.281h-25.69c-24.907 0-45.177 20.269-45.177 45.176v91.648c0 24.908 20.269 45.177 45.177 45.177h151.19c24.908 0 45.176-20.269 45.176-45.177zM392.132 192.678c0 8.283-6.747 15.059-15.059 15.059h-151.19c-8.313 0-15.059-6.776-15.059-15.059v-91.648c0-8.283 6.746-15.059 15.059-15.059h36.653l69.361-58.007v58.007h45.176c8.313 0 15.059 6.776 15.059 15.059v91.648z" />
+<glyph unicode="&#xe644;" d="M466.824 480h-421.647c-24.907 0-45.176-20.269-45.176-45.176v-301.176c0-24.908 20.269-45.176 45.176-45.176h15.059v-123.542l141.191 123.543h265.397c24.907 0 45.176 20.269 45.176 45.176v301.176c0 24.908-20.269 45.176-45.176 45.176zM481.882 133.647c0-8.283-6.747-15.059-15.059-15.059h-276.721l-99.749-87.281v87.281h-45.176c-8.313 0-15.059 6.776-15.059 15.059v301.176c0 8.283 6.746 15.059 15.059 15.059h421.647c8.313 0 15.059-6.776 15.059-15.059v-301.176z" />
+<glyph unicode="&#xe645;" d="M466.824 480h-421.647c-24.907 0-45.176-20.269-45.176-45.176v-301.176c0-24.908 20.269-45.176 45.176-45.176h15.059v-123.542l141.191 123.543h265.397c24.907 0 45.176 20.269 45.176 45.176v301.176c0 24.908-20.269 45.176-45.176 45.176zM481.882 133.647c0-8.283-6.747-15.059-15.059-15.059h-276.721l-99.749-87.281v87.281h-45.176c-8.313 0-15.059 6.776-15.059 15.059v301.176c0 8.283 6.746 15.059 15.059 15.059h421.647c8.313 0 15.059-6.776 15.059-15.059v-301.176zM90.353 389.647h331.294v-30.118h-331.294v30.118zM90.353 329.412h331.294v-30.118h-331.294v30.118zM90.353 269.177h180.706v-30.118h-180.706v30.118z" />
+<glyph unicode="&#xe646;" d="M277.293 224l200.162-200.162-21.293-21.293-200.162 200.162-200.162-200.162-21.293 21.293 200.162 200.162-200.192 200.162 21.293 21.293 200.192-200.162 200.162 200.162 21.293-21.293-200.162-200.162z" />
+<glyph unicode="&#xe647;" d="M362.044 352.482v-255.94h-30.118v255.94c0 32.858-24.064 68.247-76.921 68.247-58.459 0-74.060-42.888-74.060-68.247v-244.585h0.211v-43.882c0-18.673 20.871-36.322 42.948-36.322 25.419 0 47.194 20.57 47.194 37.376v8.132h-0.091l0.241 229.406c0 26.323-7.439 26.323-14.035 26.323-11.113 0-16.475-1.054-16.475-24.787v-154.986h-30.118v154.986c0 13.583 0 54.904 46.592 54.904 20.149 0 44.152-9.788 44.152-56.471l-0.211-193.656h0.060v-43.882c0-35.328-36.864-67.493-77.312-67.493-38.912 0-73.065 31.051-73.065 66.44v2.228h-0.211v286.268c0 47.375 32.588 98.364 104.177 98.364 70.264-0.030 107.038-49.483 107.038-98.364z" />
+<glyph unicode="&#xe648;" d="M492.544 121.721l-21.293-21.293-215.251 215.221-215.22-215.221-21.293 21.293 236.514 236.514 236.544-236.514z" />
+<glyph unicode="&#xe649;" d="M397.764 224.844l-236.544-236.544-21.293 21.293 215.22 215.22-215.22 215.281 21.293 21.293 236.544-236.544z" />
+<glyph unicode="&#xe64a;" d="M156.822 224.874l215.221-215.251-21.293-21.293-236.514 236.544 236.544 236.514 21.293-21.293-215.251-215.221z" />
+<glyph unicode="&#xe64b;" d="M492.544 327.153l-236.574-236.544-236.514 236.544 21.293 21.293 215.19-215.221 215.281 215.251 21.324-21.323z" />
+<glyph unicode="&#xe64c;" d="M464.354 426.572l-266.029-406.137-148.119 132.096 20.058 22.468 122.007-108.845 246.905 376.923 25.178-16.505z" />
+<glyph unicode="&#xe64d;" d="M421.647 306.492h30.118v-308.375h-421.647v421.647h252.777v-30.118h-222.66v-361.412h361.412v278.257zM146.191 234.661l-21.323-21.324 103.424-103.424 228.502 346.714-25.148 16.595-208.173-315.874-77.282 77.312z" />
+<glyph unicode="&#xe64e;" d="M179.441 389.647v30.118h-87.823v-30.118h-91.618v-361.412h512v361.412h-332.559zM481.882 58.353h-451.764v210.824h197.482c-10.391-17.8-16.775-38.22-16.775-60.236 0-66.44 54.031-120.471 120.471-120.471s120.471 54.031 120.471 120.471c0 22.016-6.385 42.436-16.776 60.236h46.893v-210.823zM421.647 208.941c0-49.815-40.538-90.353-90.353-90.353s-90.353 40.538-90.353 90.353 40.538 90.353 90.353 90.353 90.353-40.538 90.353-90.353zM410.142 299.294c-21.203 18.492-48.55 30.118-78.848 30.118s-57.645-11.625-78.848-30.118h-222.328v60.236h451.764v-60.236h-71.74z" />
+<glyph unicode="&#xe64f;" d="M496.007 413.079h-58.036c-8.794 0-15.993-7.048-15.993-15.692v-20.089l-331.144-121.374v8.132c0 12.951-10.782 23.522-24.004 23.522h-42.828c-13.222 0-24.004-10.572-24.004-23.522v-141.192c0-12.921 10.782-23.522 24.004-23.522h42.828c13.192 0 24.004 10.601 24.004 23.522v9.969l31.142-5.692c-0.692-4.909-1.144-9.819-1.144-14.788 0-57.133 47.013-103.635 104.779-103.635 49.905 0 91.257 33.973 101.798 80.776l94.57-17.348v-19.848c0-8.644 7.198-15.692 15.993-15.692h58.036c8.795 0 15.993 7.048 15.993 15.692v345.088c0 8.644-7.198 15.692-15.993 15.692zM225.612 38.837c-41.171 0-74.662 32.979-74.662 73.517 0 3.132 0.813 6.174 1.204 9.276l145.769-26.745c-7.951-32.587-37.195-56.049-72.313-56.049zM481.882 66.726h-29.786v30.509l-391.379 71.77v-39.514h-30.599v128h30.599v-44.695l391.379 143.45v26.715h29.786v-316.236z" />
+<glyph unicode="&#xe650;" d="M479.262 426.331l-195.764-286.118-24.847 16.986 195.764 286.118 24.847-16.986zM271.059 58.594c0-33.22-27.016-60.236-60.236-60.236-6.114 0-16.203-0.452-16.293-0.452h-164.262l137.125 103.334c4.518 3.132 25.871 17.589 43.429 17.589 33.22 0 60.235-27.015 60.235-60.236zM240.941 58.594c0 16.595-13.523 30.118-30.118 30.118-5.27 0-17.529-6.114-25.691-11.836l-64.844-48.881h73.276c1.898 0.091 11.324 0.482 17.257 0.482 16.595 0 30.118 13.523 30.118 30.118z" />
+<glyph unicode="&#xe651;" d="M210.823 88.471v45.176h30.118v-15.059h30.117v15.059h30.118v-45.176h-90.353zM512 148.706h-30.118v-180.706h-451.764v180.706h-30.117v240.941h108.906c28.25 55.115 84.48 90.353 147.094 90.353s118.875-35.268 147.095-90.353h108.905v-240.941zM143.631 389.647h224.798c-24.847 37.135-66.56 60.236-112.399 60.236s-87.552-23.13-112.399-60.236zM451.764 148.706h-391.529v-150.588h391.529v150.588zM481.882 359.529h-451.764v-180.706h451.764v180.706z" />
+<glyph unicode="&#xe652;" d="M431.074 419.404h-215.401l-70.204-211.245h50.176l-60.536-182.272 285.606 242.477h-87.462l97.822 151.040zM338.733 238.245l-141.161-119.838 39.815 119.838h-50.146l50.146 151.040h138.3l-97.822-151.040h60.868z" />
+<glyph unicode="&#xe653;" d="M356.292 239.059l-115.23-217.841-26.624 14.065 91.859 173.659h-153.871l147.576 219.226 24.967-16.836-115.983-172.273h147.305z" />
+<glyph unicode="&#xe654;" d="M271.059 419.764v60.236h-30.118v-60.236h-210.823v-301.176h451.764v301.176h-210.823zM451.764 148.706h-391.529v240.941h391.529v-240.941zM105.412 88.471h301.176v-30.118h-77.824l45.297-70.053-25.299-16.354-55.868 86.408h-21.836v-90.353h-30.118v90.353h-21.444l-56.29-86.438-25.238 16.414 45.598 70.024h-78.156v30.118z" />
+<glyph unicode="&#xe655;" d="M391.529 359.529v72.101c0 26.654-22.197 48.369-49.483 48.369h-171.641c-27.256 0-49.453-21.715-49.453-48.369v-72.101h-90.835v-391.529h451.764v391.529h-90.353zM151.070 431.631c0 10.060 8.674 18.252 19.335 18.252h171.641c10.692 0 19.365-8.192 19.365-18.252v-72.101h-210.341v72.101zM451.764-1.882h-391.529v240.941h391.529v-240.941zM451.764 269.177h-391.529v60.236h60.717v-19.365h30.117v19.365h210.341v-19.365h30.118v19.365h60.236v-60.236z" />
+<glyph unicode="&#xe656;" d="M409.69 138.195l-21.263 21.324 49.514 49.423h-166.882v-166.882l49.423 49.514 21.324-21.263-85.805-85.986-85.805 85.986 21.323 21.263 49.423-49.514v166.882h-166.882l49.513-49.423-21.263-21.324-85.986 85.805 85.986 85.805 21.263-21.324-49.513-49.423h166.882v166.882l-49.423-49.514-21.323 21.263 85.805 85.986 85.805-85.986-21.324-21.263-49.423 49.514v-166.882h166.882l-49.514 49.423 21.263 21.324 85.986-85.805-85.986-85.805z" />
+<glyph unicode="&#xe657;" d="M350.63 116.691l21.564-21.022-116.194-119.115-116.194 119.085 21.564 21.022 79.571-81.529v377.736l-79.571-81.558-21.564 21.052 116.194 119.085 116.194-119.085-21.564-21.022-79.571 81.529v-377.765l79.571 81.589z" />
+<glyph unicode="&#xe658;" d="M503.447 224l-119.085-116.194-21.022 21.564 81.529 79.571h-377.736l81.558-79.571-21.022-21.564-119.115 116.194 119.085 116.194 21.022-21.564-81.528-79.571h377.765l-81.558 79.571 21.022 21.564 119.085-116.194z" />
+<glyph unicode="&#xe659;" d="M481.762 138.104l0.12-139.987-140.017 0.12 0.030 30.118 88.546-0.091-174.441 174.411-174.441-174.442 88.546 0.091 0.030-30.118-140.017-0.091 0.12 140.017 30.117-0.030-0.090-88.516 174.441 174.411-174.441 174.442 0.090-88.516-30.117-0.030-0.12 139.987 140.017-0.12-0.030-30.118-88.546 0.091 174.441-174.442 174.441 174.442-88.546-0.091-0.030 30.118 140.017 0.12-0.12-140.017-30.118 0.030 0.091 88.516-174.441-174.411 174.442-174.442-0.091 88.516 30.118 0.030z" />
+<glyph unicode="&#xe65a;" d="M481.882 449.973v-271.149h-30.118v219.768l-310.724-310.121-21.293 21.324 310.663 310.061h-220.34v30.118h271.812z" />
+<glyph unicode="&#xe65b;" d="M370.206 88.471l-310.724 310.122v-219.768h-30.117v271.149h271.812v-30.118h-220.34l310.663-310.061-21.293-21.324z" />
+<glyph unicode="&#xe65c;" d="M256 305.529l131.132-131.132-21.293-21.293-109.839 109.839-109.809-109.809-21.293 21.293 131.102 131.102zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" />
+<glyph unicode="&#xe65d;" d="M206.427 355.132l131.102-131.132-131.132-131.132-21.293 21.293 109.839 109.839-109.839 109.809 21.323 21.324zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" />
+<glyph unicode="&#xe65e;" d="M326.897 333.809l-109.839-109.809 109.809-109.809-21.293-21.293-131.102 131.102 131.132 131.132 21.293-21.324zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" />
+<glyph unicode="&#xe65f;" d="M365.809 294.897l21.293-21.293-131.102-131.132-131.132 131.102 21.293 21.293 109.839-109.809 109.809 109.839zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" />
+<glyph unicode="&#xe660;" d="M256 297.096l206.427-206.427-21.293-21.293-185.133 185.133-185.103-185.103-21.293 21.293 206.396 206.396zM256 400.369l185.103-185.103 21.293 21.293-206.396 206.427-206.427-206.427 21.323-21.293 185.103 185.103z" />
+<glyph unicode="&#xe661;" d="M290.454 224l-206.427-206.427-21.293 21.293 185.103 185.133-185.103 185.103 21.293 21.324 206.427-206.427zM229.918 430.426l-21.293-21.323 185.103-185.103-185.103-185.103 21.293-21.293 206.396 206.396-206.396 206.427z" />
+<glyph unicode="&#xe662;" d="M240.549 224l185.103-185.103-21.293-21.293-206.396 206.396 206.427 206.427 21.293-21.293-185.133-185.133zM279.793 409.133l-21.293 21.293-206.427-206.426 206.427-206.427 21.293 21.293-185.103 185.133 185.103 185.133z" />
+<glyph unicode="&#xe663;" d="M256 159.428l-206.427 206.427 21.293 21.293 185.133-185.103 185.103 185.103 21.293-21.293-206.396-206.426zM256 56.124l-185.103 185.133-21.323-21.293 206.427-206.427 206.427 206.427-21.293 21.293-185.133-185.133z" />
+<glyph unicode="&#xe664;" d="M291.147 480h-230.912v-512h391.529v352.135l-160.618 159.865zM301.176 427.535l98.575-98.123h-98.575v98.123zM90.353-1.882v451.764h90.353v-30.118h30.118v30.118h60.235v-150.588h150.588v-301.176h-331.294zM150.588 239.059h30.118v-30.117h-30.118v30.118zM180.706 239.059v30.118h30.118v-30.118h-30.118zM180.706 299.294v30.118h30.118v-30.118h-30.118zM150.588 299.294h30.118v-30.117h-30.118v30.117zM150.588 359.529h30.118v-30.117h-30.118v30.117zM180.706 359.529v30.118h30.118v-30.118h-30.118zM150.588 419.764h30.118v-30.118h-30.118v30.118zM180.706 197.226c-33.22 0-60.236-27.015-60.236-60.236s27.016-60.236 60.236-60.236c1.868 0 3.644 0.211 6.596 0.603 19.456 2.139 36.684 13.704 46.11 30.901 5 9.125 7.53 18.793 7.53 28.732 0 33.22-27.016 60.236-60.236 60.236zM206.999 122.684c-4.698-8.584-13.282-14.366-22.95-15.42l-3.373-0.421c-16.595 0-30.088 13.523-30.088 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118c0-4.788-1.295-9.608-3.825-14.276z" />
+<glyph unicode="&#xe665;" d="M256.482 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.868 256-256 256zM31.352 208.941h88.456c1.325-30.841 6.355-61.169 15.451-90.353h-78.396c-14.486 27.286-23.371 57.916-25.509 90.353zM119.808 239.059h-88.456c2.139 32.436 11.023 63.066 25.51 90.353h78.306c-9.066-29.184-14.065-59.512-15.36-90.353zM167.063 329.412h177.573c9.939-29.064 15.721-59.392 17.137-90.353h-211.847c1.386 30.961 7.198 61.29 17.137 90.353zM149.925 208.941h211.877c-1.476-30.961-7.259-61.289-17.228-90.353h-177.423c-9.969 29.063-15.781 59.392-17.227 90.353zM391.921 208.941h89.69c-2.139-32.437-11.023-63.067-25.51-90.353h-79.631c9.096 29.184 14.125 59.512 15.45 90.353zM391.921 239.059c-1.295 30.84-6.295 61.169-15.36 90.353h79.541c14.457-27.286 23.341-57.916 25.51-90.353h-89.69zM436.766 359.529h-70.897c-11.806 28.763-27.588 55.959-46.683 81.317 47.526-13.764 88.486-42.767 117.579-81.317zM273.288 449.039c24.817-27.015 44.695-57.224 59.392-89.51h-153.66c14.667 32.256 34.515 62.434 59.332 89.45 5.994 0.452 11.987 0.904 18.131 0.904 5.662 0 11.234-0.452 16.805-0.844zM192.241 440.456c-18.944-25.239-34.666-52.315-46.381-80.926h-69.692c28.763 38.159 69.18 66.981 116.074 80.926zM76.168 88.471h69.782c11.776-28.642 27.558-55.748 46.592-80.986-47.013 13.884-87.552 42.737-116.374 80.986zM238.713-0.979c-24.877 27.015-44.815 57.194-59.572 89.45h153.419c-14.757-32.286-34.695-62.494-59.603-89.51-5.452-0.392-10.933-0.844-16.474-0.844-6.024 0-11.897 0.452-17.769 0.904zM318.856 7.063c19.155 25.359 35.057 52.615 46.893 81.408h71.017c-29.154-38.641-70.234-67.674-117.911-81.408z" />
+<glyph unicode="&#xe666;" d="M328.313 92.988l29.425-6.415c-15.209-69.813-75.625-118.573-146.914-118.573-83.034 0-150.588 67.554-150.588 150.588 0 68.367 46.11 128.271 112.188 145.649l7.65-29.124c-52.827-13.915-89.721-61.831-89.721-116.525 0-66.44 54.031-120.471 120.471-120.471 57.013 0 105.321 39.002 117.489 94.87zM481.882 24.591v-30.118h-56.26l-28.762 124.024h-185.464l-16.384 243.411c-25.51 7.017-44.423 30.148-44.423 57.856 0 33.22 27.016 60.236 60.236 60.236s60.236-27.015 60.236-60.236c0-28.25-19.577-51.803-45.809-58.308l8.132-120.802 109.388 27.136 7.228-29.244-114.597-28.401 4.156-61.5h181.248l28.762-124.024h32.316zM210.823 389.647c16.625 0 30.118 13.523 30.118 30.118s-13.493 30.118-30.118 30.118-30.118-13.523-30.118-30.118 13.493-30.118 30.118-30.118z" />
+<glyph unicode="&#xe667;" d="M0 480v-120.471h512v120.471h-512zM481.882 389.647h-451.764v60.236h451.764v-60.236zM0 178.824h512v120.471h-512v-120.471zM30.117 269.177h451.764v-60.236h-451.764v60.236zM0-1.882h512v120.471h-512v-120.471zM30.117 88.471h451.764v-60.236h-451.764v60.236z" />
+<glyph unicode="&#xe668;" d="M150.588 480v-120.471h361.412v120.471h-361.412zM481.882 389.647h-301.176v60.236h301.176v-60.236zM150.588 178.824h361.412v120.471h-361.412v-120.471zM180.706 269.177h301.176v-60.236h-301.176v60.236zM150.588-1.882h361.412v120.471h-361.412v-120.471zM180.706 88.471h301.176v-60.236h-301.176v60.236zM0 359.529h120.471v120.471h-120.471v-120.471zM30.117 449.882h60.236v-60.236h-60.236v60.236zM0 178.824h120.471v120.471h-120.471v-120.471zM30.117 269.177h60.236v-60.236h-60.236v60.236zM0-1.882h120.471v120.471h-120.471v-120.471zM30.117 88.471h60.236v-60.236h-60.236v60.236z" />
+<glyph unicode="&#xe669;" d="M0 269.177h210.823v210.823h-210.823v-210.823zM30.117 449.882h150.588v-150.588h-150.588v150.588zM301.176 480v-210.823h210.824v210.823h-210.823zM481.882 299.294h-150.588v150.588h150.588v-150.588zM0-32h210.823v210.823h-210.823v-210.823zM30.117 148.706h150.588v-150.588h-150.588v150.588zM301.176-32h210.824v210.823h-210.823v-210.823zM331.294 148.706h150.588v-150.588h-150.588v150.588z" />
+<glyph unicode="&#xe66a;" d="M210.823 359.529h30.118v-60.236h-30.118v30.118h-60.236v-240.941h30.118v-30.118h-90.353v30.118h30.117v240.941h-60.236v-30.118h-30.117v60.236h180.706zM451.764 359.529h-180.706v-60.236h30.118v30.118h60.236v-240.941h-30.118v-30.118h90.353v30.118h-30.118v240.941h60.236v-30.118h30.118v60.236h-30.118z" />
+<glyph unicode="&#xe66b;" d="M512-1.882v-30.118h-512v30.118h512zM240.911 428.559v-340.088h30.118v340.149l109.839-109.839 21.293 21.293-146.161 146.161-146.191-146.161 21.293-21.293 109.809 109.779z" />
+<glyph unicode="&#xe66c;" d="M451.764 449.882v-30.118h-30.118v-194.53c0-91.317-74.3-165.647-165.647-165.647s-165.647 74.33-165.647 165.647v194.53h-30.117v30.118h90.353v-30.118h-30.118v-194.53c0-74.722 60.808-135.529 135.529-135.529s135.529 60.808 135.529 135.53v194.53h-30.118v30.118h90.353zM60.236-1.882h391.529v30.118h-391.529v-30.118z" />
+<glyph unicode="&#xe66d;" d="M512 389.647h-331.294v-90.353h-86.528l-35.84-120.47h-58.338v-149.896h60.295c0-0.241-0.060-0.452-0.060-0.692 0-33.22 27.016-60.236 60.236-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h150.739c-0.030-0.241-0.091-0.452-0.091-0.692 0-33.22 27.015-60.236 60.236-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h60.296v360.719zM116.645 269.177h64.060v-90.353h-90.956l26.895 90.353zM120.471-1.882c-16.595 0-30.117 13.523-30.117 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM391.529-1.882c-16.595 0-30.118 13.523-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM481.882 59.046h-38.882c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-168.117c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-38.882v89.66h180.706v210.823h271.059v-300.484z" />
+<glyph unicode="&#xe66e;" d="M271.059 419.012v30.87h45.176v30.118h-120.471v-30.118h45.177v-30.87c-117.519-7.83-210.823-105.652-210.823-225.13 0-124.567 101.316-225.882 225.882-225.882s225.882 101.316 225.882 225.882c0 119.476-93.305 217.299-210.824 225.13zM256-1.882c-107.942 0-195.764 87.823-195.764 195.764s87.823 195.764 195.764 195.764 195.764-87.823 195.764-195.764-87.823-195.764-195.764-195.764zM271.059 208.941h120.471v-30.118h-150.588v120.471h30.117v-90.353z" />
+<glyph unicode="&#xe66f;" d="M286.118 449.882v-15.059c0-16.625-13.523-30.118-30.118-30.118s-30.118 13.493-30.118 30.118v15.059h-105.412v-451.764h105.412v15.059c0 16.625 13.523 30.118 30.118 30.118s30.118-13.493 30.118-30.118v-15.059h105.412v451.764h-105.412zM197.662 419.764c6.716-25.932 30.328-45.177 58.338-45.177s51.621 19.245 58.338 45.177h47.074v-180.706h-210.823v180.706h47.074zM314.338 28.236c-6.686 25.932-30.298 45.176-58.338 45.176s-51.621-19.245-58.338-45.176h-47.074v180.706h210.824v-180.706h-47.074z" />
+<glyph unicode="&#xe670;" d="M462.848 187.106c2.5-6.114 3.976-14.035 3.976-24.305 0-15.842-7.228-29.244-18.703-37.135 4.156-7.048 6.144-15.089 6.144-23.13 0-16.926-9.427-31.353-23.642-38.791 2.409-5.662 3.825-12.649 3.885-21.233 0.060-13.523-3.885-24.396-11.776-32.316-8.313-8.342-20.089-12.589-34.966-12.589h-169.412c-22.708 0-38.34 12.168-49.785 21.082-6.596 5.12-12.83 9.999-17.167 9.999h-63.308c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059h63.308c14.667 0 25.811-8.674 35.66-16.324 9.728-7.56 18.914-14.728 31.292-14.728h169.412c6.385 0 11.234 1.295 13.613 3.704 2.048 2.048 3.072 5.723 3.042 10.902-0.091 13.161-2.771 15.993-30.931 15.993h-3.192c-8.313 0-15.059 6.747-15.059 15.059s6.747 15.059 15.059 15.059h37.888c9.246 0 15.962 5.933 15.962 14.095 0 13.553-13.523 15.571-21.594 15.571h-22.588c-8.313 0-15.059 6.747-15.059 15.059s6.747 15.059 15.059 15.059h43.279c9.969 0 13.493 7.529 13.493 14.577 0 14.818 0 14.818-13.221 15.209-1.536 0.030-3.132 0.151-4.699 0.211h-32.406c-8.313 0-15.059 6.747-15.059 15.059s6.747 15.059 15.059 15.059h29.575c0.211 0 0.392 0.12 0.603 0.12h19.004c8.885 0 16.143 6.837 16.143 15.209s-7.228 15.209-16.143 15.209h-134.114c-4.488 0-8.734 1.988-11.596 5.452-2.861 3.464-4.036 8.012-3.192 12.409l15.661 82.341c1.868 8.222 7.168 31.533 0.994 41.863-1.596 2.68-5.481 5.542-10.24 5.542 0 0 0 0 0 0-5.903 0-11.957-4.729-17.046-13.252l-97.612-157.636c-2.74-4.428-7.589-7.138-12.8-7.138h-77.372c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059h68.999l93.004 150.287c14.336 24.094 32.979 27.738 42.767 27.738 0 0 0 0 0.030 0 14.607 0 28.762-7.951 36.081-20.209 10.963-18.341 7.168-43.52 2.62-63.428l-12.137-63.97h115.923c25.51 0 46.26-20.329 46.26-45.327 0.030-14.998-7.469-28.341-18.974-36.593z" />
+<glyph unicode="&#xe671;" d="M438.754 193.852c0-8.313-6.747-15.059-15.059-15.059h-69l-93.003-150.287c-14.366-24.094-32.979-27.738-42.767-27.738 0 0-0.030 0-0.030 0-14.607 0-28.762 7.951-36.111 20.209-10.963 18.372-7.168 43.55-2.62 63.428l12.137 63.97h-115.923c-25.51 0-46.23 20.329-46.23 45.327 0 16.505 9.035 30.991 22.528 38.912-4.608 6.294-7.529 13.703-7.529 21.956 0 15.842 7.228 29.244 18.703 37.135-4.156 7.077-6.144 15.119-6.144 23.161 0 17.317 9.878 31.985 24.606 39.303-4.005 7.71-4.879 15.541-4.879 20.781 0 28.070 17.499 44.815 46.773 44.815h169.412c22.709 0 38.37-12.168 49.784-21.082 6.596-5.12 12.83-9.999 17.137-9.999h63.337c8.313 0 15.059-6.746 15.059-15.059s-6.747-15.059-15.059-15.059h-63.337c-14.668 0-25.811 8.674-35.659 16.324-9.698 7.62-18.884 14.757-31.262 14.757h-169.412c-14.065 0-16.655-4.969-16.655-14.697 0-4.759 0-15.872 30.931-15.872h3.162c8.313 0 15.059-6.746 15.059-15.059s-6.746-15.059-15.059-15.059h-37.888c-9.246 0-15.932-5.933-15.932-14.095 0-13.553 13.523-15.571 21.594-15.571h22.588c8.313 0 15.059-6.746 15.059-15.059s-6.746-15.059-15.059-15.059h-43.249c-9.939 0-13.493-7.53-13.493-14.577 0-5.060 11.023-13.764 21.233-15.451h29.094c8.313 0 15.059-6.746 15.059-15.059s-6.746-15.059-15.059-15.059h-29.606c-0.211 0-0.391-0.12-0.603-0.12h-19.004c-8.885 0-16.113-6.837-16.113-15.209s7.228-15.209 16.113-15.209h134.114c4.488 0 8.734-1.988 11.595-5.452 2.861-3.464 4.036-8.012 3.192-12.409l-15.661-82.341c-1.868-8.222-7.168-31.503-0.994-41.863 1.596-2.651 5.482-5.541 10.24-5.541 5.903 0 11.957 4.728 17.047 13.252l97.551 157.636c2.74 4.428 7.589 7.138 12.8 7.138h77.372c8.403 0 15.119-6.747 15.119-15.059z" />
+<glyph unicode="&#xe672;" d="M421.647 419.764v-90.353h-30.118v60.236h-120.471v-361.412h49.483v-30.118h-129.084v30.118h49.483v361.412h-120.471v-60.236h-30.117v90.353h331.294z" />
+<glyph unicode="&#xe673;" d="M512-1.882v-30.118h-512v30.118h512zM156.702 239.781l126.615-91.136 168.448 188.265v-68.788h30.118v121.525h-121.555v-30.118h71.259l-152.697-170.616-124.356 89.57-131.674-119.146 20.209-22.317 113.634 102.762z" />
+<glyph unicode="&#xe674;" d="M155.588 214.875l-131.644 119.145 20.179 22.317 113.634-102.791 126.615 91.136 168.448-188.236v68.819h30.118v-121.555h-121.555v30.118h71.259l-152.667 170.617-124.386-89.57zM0-1.882v-30.118h512v30.118h-512z" />
+<glyph unicode="&#xe675;" d="M320.632 84.074l21.293-21.293-85.925-85.956-85.956 85.956 21.293 21.293 49.604-49.604v113.604h30.118v-113.604l49.574 49.604zM240.941 413.531v-113.604h30.117v113.604l49.574-49.574 21.293 21.293-85.925 85.925-85.956-85.925 21.293-21.293 49.604 49.573zM0 239.059v-30.117h512v30.118h-512z" />
+<glyph unicode="&#xe676;" d="M66.469 239.059h113.604v-30.117h-113.604l49.574-49.574-21.293-21.293-85.925 85.925 85.956 85.956 21.293-21.293-49.604-49.604zM417.25 309.956l-21.293-21.293 49.574-49.604h-113.604v-30.118h113.604l-49.574-49.574 21.293-21.293 85.925 85.925-85.925 85.956zM240.941-32h30.117v512h-30.118v-512z" />
+<glyph unicode="&#xe677;" d="M180.706 301.553h30.118v-60.236h-30.118v30.118h-60.236v-240.941h30.118v-30.118h-90.353v30.118h30.117v240.941h-60.236v-30.118h-30.117v60.235h180.706zM481.882 419.764h-301.176v-77.613h30.118v47.495h120.471v-361.412h-30.118v-30.118h90.353v30.118h-30.118v361.412h120.471v-47.495h30.117v77.613h-30.118z" />
+<glyph unicode="&#xe678;" d="M256 329.412c-58.127 0-105.412-47.285-105.412-105.412s47.285-105.412 105.412-105.412 105.412 47.284 105.412 105.412-47.284 105.412-105.412 105.412zM256 148.706c-41.502 0-75.294 33.792-75.294 75.294s33.792 75.294 75.294 75.294 75.294-33.792 75.294-75.294-33.792-75.294-75.294-75.294zM271.059 359.529h-30.118v90.353h30.118v-90.353zM240.941 88.471h30.117v-90.353h-30.118v90.353zM481.882 239.059v-30.117h-90.353v30.118h90.353zM120.471 208.941h-90.353v30.118h90.353v-30.118zM362.496 309.203l-21.293 21.293 63.88 63.88 21.293-21.293-63.88-63.88zM149.504 138.797l21.293-21.293-63.88-63.88-21.293 21.293 63.88 63.88zM362.496 138.797l63.88-63.88-21.293-21.293-63.88 63.88 21.293 21.293zM149.504 309.203l-63.88 63.88 21.293 21.293 63.88-63.88-21.293-21.293z" />
+<glyph unicode="&#xe679;" d="M251.603 370.191l146.161-146.191-146.191-146.191-21.293 21.293 109.839 109.839h-340.118v30.118h340.089l-109.809 109.809 21.323 21.324zM481.882 480v-512h30.118v512h-30.118z" />
+<glyph unicode="&#xe67a;" d="M512 208.911h-340.089l109.809-109.809-21.293-21.293-146.191 146.191 146.191 146.191 21.293-21.293-109.869-109.869h340.149v-30.118zM0-32h30.117v512h-30.117v-512z" />
+<glyph unicode="&#xe67b;" d="M451.764 449.401c0-49.815-40.538-90.353-90.353-90.353s-90.353 40.538-90.353 90.353h-30.118c0-49.815-40.538-90.353-90.353-90.353s-90.353 40.538-90.353 90.353h-30.117v-206.216c0-162.786 210.884-240.941 219.889-244.164l5-1.837 5.030 1.747c9.036 3.102 221.846 77.914 221.846 245.097v205.372h-30.118zM60.236 243.215v126.614c22.076-25.058 54.422-40.9 90.353-40.9 36.020 0 68.246 16.053 90.353 41.231v-334.728c-49.965 22.498-180.706 92.371-180.706 207.781zM451.764 244.028c0-117.308-129.295-185.615-180.706-208.173v334.336c22.106-25.178 54.332-41.231 90.353-41.231 35.93 0 68.276 15.812 90.353 40.87v-125.802z" />
+<glyph unicode="&#xe67c;" d="M30.117 480v-512h451.764v512h-451.764zM451.764-1.882h-391.529v451.764h60.236v-32.889c-17.499-6.234-30.118-22.799-30.118-42.406 0-24.907 20.269-45.176 45.177-45.176s45.177 20.269 45.177 45.176c0 19.607-12.619 36.172-30.118 42.406v32.889h90.353v-32.889c-17.499-6.234-30.118-22.799-30.118-42.406 0-24.907 20.269-45.176 45.176-45.176s45.176 20.269 45.176 45.176c0 19.607-12.62 36.172-30.118 42.406v32.889h90.353v-32.889c-17.498-6.234-30.118-22.799-30.118-42.406 0-24.907 20.269-45.176 45.176-45.176s45.176 20.269 45.176 45.176c0 19.607-12.62 36.172-30.118 42.406v32.889h60.236v-451.764zM150.588 374.588c0-8.282-6.776-15.059-15.059-15.059s-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059zM271.059 374.588c0-8.282-6.776-15.059-15.059-15.059s-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059zM391.529 374.588c0-8.282-6.776-15.059-15.059-15.059s-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059z" />
+<glyph unicode="&#xe67d;" d="M512 374.588c0 68.458-131.916 105.412-256 105.412s-256-36.954-256-105.412c0-4.487 0.723-9.577 2.409-15.059h-2.409v-286.118c0-68.457 131.916-105.412 256-105.412s256 36.954 256 105.412v286.118h-2.409c1.687 5.481 2.409 10.572 2.409 15.059zM256 449.882c129.295 0 225.882-39.755 225.882-75.294 0-11.987-11.685-25.148-32.918-37.014-42.737-23.974-114.868-38.279-192.964-38.279s-150.227 14.306-192.964 38.279c-21.233 11.867-32.919 25.028-32.919 37.014 0 35.539 96.588 75.294 225.882 75.294zM256-1.882c-129.295 0-225.882 39.755-225.882 75.294v49.182c5.27-4.066 11.053-8.162 18.191-12.137 47.044-26.323 124.687-42.044 207.691-42.044 10.39 0 20.691 0.241 30.81 0.723 71.108 3.343 135.68 18.281 176.851 41.322v0c0 0.030 0.030 0.030 0.030 0.030 7.108 4.005 12.95 8.072 18.191 12.137v-49.212c0-35.539-96.587-75.294-225.882-75.294zM448.964 136.749c-42.767-23.943-114.868-38.25-192.964-38.25-9.758 0-19.456 0.241-28.973 0.663-66.68 3.072-126.585 16.625-163.99 37.557v0c-21.203 11.926-32.919 25.088-32.919 37.075v49.212c5.27-4.066 11.084-8.162 18.221-12.137 47.014-26.323 124.657-42.044 207.661-42.044s160.648 15.721 207.661 42.044c7.138 3.976 12.95 8.072 18.221 12.137v-49.212c0-11.987-11.716-25.148-32.918-37.045zM448.933 237.161c-42.737-23.944-114.839-38.25-192.934-38.25s-150.196 14.306-192.934 38.25c-21.233 11.867-32.949 25.058-32.949 37.045v49.212c5.27-4.096 11.053-8.162 18.191-12.168 47.044-26.353 124.657-42.074 207.691-42.074s160.647 15.721 207.691 42.074c7.138 4.006 12.921 8.072 18.191 12.168v-49.212c0-11.987-11.716-25.178-32.949-37.044z" />
+<glyph unicode="&#xe67e;" d="M220.070 273.332c0 58.609-47.676 106.285-106.285 106.285-58.579 0-106.255-47.676-106.255-106.285 0-58.579 47.676-106.255 106.255-106.255 22.107 0 42.647 6.837 59.663 18.402-37.075-104.508-120.169-116.766-124.476-117.339l3.705-29.877c1.536 0.18 154.353 21.173 167.544 232.628l-0.392 0.030c0.030 0.813 0.241 1.566 0.241 2.41zM113.784 197.165c-41.984 0-76.138 34.154-76.138 76.137s34.154 76.168 76.138 76.168c42.014 0 76.168-34.183 76.168-76.168s-34.154-76.137-76.168-76.137zM503.988 270.923c0.030 0.813 0.241 1.596 0.241 2.409 0 58.609-47.676 106.285-106.255 106.285s-106.255-47.676-106.255-106.285c0-58.579 47.676-106.255 106.255-106.255 22.106 0 42.647 6.837 59.663 18.402-37.045-104.508-120.17-116.766-124.476-117.339l3.704-29.877c1.536 0.18 154.353 21.173 167.544 232.628l-0.421 0.030zM397.974 197.165c-41.984 0-76.137 34.154-76.137 76.137s34.154 76.168 76.137 76.168 76.137-34.183 76.137-76.168-34.154-76.137-76.137-76.137z" />
+<glyph unicode="&#xe67f;" d="M396.62 250.684c-22.106 0-42.676-6.837-59.693-18.432 37.044 104.569 120.2 116.856 124.507 117.399l-3.704 29.877c-1.536-0.181-154.383-21.203-167.544-232.659l0.452-0.030c0-0.813-0.241-1.627-0.241-2.44 0-58.579 47.676-106.255 106.255-106.255s106.255 47.676 106.255 106.255-47.707 106.285-106.285 106.285zM396.62 68.262c-42.014 0-76.137 34.154-76.137 76.137s34.154 76.137 76.137 76.137 76.137-34.154 76.137-76.137-34.154-76.137-76.137-76.137zM112.429 250.684c-22.106 0-42.647-6.837-59.663-18.432 37.044 104.569 120.169 116.856 124.476 117.399l-3.704 29.877c-1.536-0.181-154.353-21.203-167.575-232.659l0.452-0.030c0-0.813-0.241-1.627-0.241-2.44 0-58.579 47.676-106.255 106.255-106.255s106.255 47.676 106.255 106.255-47.646 106.285-106.255 106.285zM112.429 68.262c-42.014 0-76.138 34.154-76.138 76.137s34.153 76.137 76.138 76.137 76.138-34.154 76.138-76.137-34.124-76.137-76.138-76.137z" />
+<glyph unicode="&#xe680;" d="M431.586 239.059l-56.5 131.825-103.544-294.641-120.923 394.842-71.379-232.026h-79.24v-30.118h101.466l49.092 159.503 118.964-388.608 108.333 308.103 33.852-78.998h100.292v30.118z" />
+<glyph unicode="&#xe681;" d="M512 299.294h-90.594v54.754l-135.62 125.952h-195.674v-180.706h-90.112v-240.941h90.353v-93.364h331.294v93.365h90.353v240.941zM300.935 424.825l70.325-65.295h-70.325v65.295zM120.23 449.882h150.588v-120.47h120.471v-30.118h-271.059v150.588zM391.529-4.894h-271.059v150.588h271.059v-150.588zM481.882 88.471h-60.236v87.341h-331.294v-87.341h-60.236v180.706h451.764v-180.706zM331.475 88.471h-180.887v30.118h180.887v-30.118zM271.059 28.236h-120.471v30.118h120.471v-30.118zM90.353 208.941h-30.117v30.118h30.117v-30.118zM150.588 208.941h-30.118v30.118h30.118v-30.118z" />
+<glyph unicode="&#xe682;" d="M481.882 193.882c0-124.567-101.316-225.882-225.882-225.882s-225.882 101.316-225.882 225.882c0 105.351 74.572 198.144 177.333 220.642l6.445-29.425c-89.028-19.486-153.66-99.9-153.66-191.217 0-107.942 87.823-195.764 195.764-195.764s195.764 87.823 195.764 195.764c0 91.196-64.542 171.611-153.48 191.187l6.476 29.425c102.641-22.619 177.122-115.38 177.122-220.612zM271.059 480h-30.118v-301.176h30.118v301.176z" />
+<glyph unicode="&#xe683;" d="M90.353 359.529v-151.010c0-82.793 74.33-150.167 165.647-150.167s165.647 67.373 165.647 150.167v151.010h-331.294zM391.529 208.519c0-66.198-60.808-120.049-135.53-120.049s-135.53 53.851-135.53 120.049v120.892h271.059v-120.892zM211.305 389.647h-30.118v90.353h30.118v-90.353zM330.812 389.647h-30.118v90.353h30.118v-90.353zM240.941 58.353h30.117v-90.353h-30.118v90.353zM331.294 239.059h-150.588v30.118h150.588v-30.118zM331.294 178.824h-150.588v30.118h150.588v-30.118z" />
+<glyph unicode="&#xe684;" d="M451.313 210.658l30.058-2.018c-7.921-118.061-106.918-210.522-225.37-210.522-124.567 0-225.882 101.316-225.882 225.882 0 117.609 91.769 216.546 208.956 225.25l2.228-30.027c-101.526-7.53-181.067-93.275-181.067-195.223 0-107.942 87.823-195.764 195.764-195.764 102.671 0 188.446 80.113 195.313 182.423zM512 254.148v-15.059l-15.089-0.512h-225.34v241.453l15.089-0.030c124.266-0.271 225.34-101.617 225.34-225.852zM481.461 268.695c-6.716 95.473-83.606 172.965-179.772 180.555v-180.555h179.772z" />
+<glyph unicode="&#xe685;" d="M481.882 449.099h-331.535c-65.686 0-119.115-53.428-119.115-119.115s53.428-119.085 119.115-119.085h90.594v-212.781h30.118v420.864h60.687v-420.864h30.118v420.864h120.019v30.118zM240.941 240.987h-90.594c-49.092 0-88.998 39.906-88.998 88.968 0 49.092 39.906 88.998 88.998 88.998h90.594v-177.965z" />
+<glyph unicode="&#xe686;" d="M0 480v-512h512v512h-512zM481.882-1.882h-451.764v451.764h451.764v-451.764zM120.471 171.836v-83.365h30.117v83.365c22.227 6.565 38.581 26.925 38.581 51.23s-16.354 44.664-38.581 51.23v85.233h-30.118v-85.233c-22.227-6.566-38.581-26.925-38.581-51.23s16.354-44.695 38.581-51.23zM135.53 246.588c12.981 0 23.522-10.571 23.522-23.522s-10.541-23.522-23.522-23.522-23.522 10.541-23.522 23.522 10.541 23.522 23.522 23.522zM240.941 235.836v-147.365h30.117v147.365c22.227 6.565 38.581 26.925 38.581 51.23s-16.354 44.664-38.581 51.23v21.233h-30.118v-21.233c-22.227-6.565-38.581-26.925-38.581-51.23s16.354-44.695 38.581-51.23zM256 310.588c12.981 0 23.522-10.571 23.522-23.522s-10.541-23.552-23.522-23.552-23.522 10.572-23.522 23.552 10.541 23.522 23.522 23.522zM376.471 75.911c29.575 0 53.639 24.064 53.639 53.639 0 24.335-16.354 44.664-38.581 51.23v178.748h-30.118v-178.748c-22.227-6.565-38.58-26.925-38.58-51.23 0-29.575 24.064-53.639 53.639-53.639zM376.471 153.103c12.981 0 23.522-10.572 23.522-23.522s-10.572-23.522-23.522-23.522-23.522 10.572-23.522 23.522 10.541 23.522 23.522 23.522z" />
+<glyph unicode="&#xe687;" d="M256.512 481.054l-256.512-97.009v-322.048l256-96.015 256 96.015v322.018l-255.488 97.039zM454.295 373.745l-77.884-29.214-197.482 74.963 77.553 29.334 197.813-75.084zM256 299.385l-198.204 74.331 78.577 29.696 197.3-74.902-77.673-29.124zM30.117 351.909l210.823-79.059v-269.011l-210.823 79.059v269.011zM271.059 3.84v269.011l210.824 79.059v-269.011l-210.823-79.059z" />
+<glyph unicode="&#xe688;" d="M444.687 345.706l12.68 27.286-216.425 100.472v-297.502c-15.39 13.372-35.238 21.745-57.163 21.745-48.399 0-87.763-39.394-87.763-87.763s39.364-87.763 87.763-87.763 87.763 39.394 87.763 87.763c0 1.596-0.392 3.102-0.482 4.638v311.717l173.628-80.595zM183.778 52.3c-31.804 0-57.645 25.841-57.645 57.645s25.841 57.645 57.645 57.645 57.645-25.841 57.645-57.645-25.871-57.645-57.645-57.645z" />
+<glyph unicode="&#xe689;" d="M180.706 472.019v-277.745c-15.42 13.433-35.328 21.865-57.344 21.865-48.399 0-87.763-39.394-87.763-87.763s39.364-87.763 87.763-87.763c47.285 0 85.684 37.677 87.431 84.54v0 0.18c0.030 1.024 0.301 1.988 0.301 3.072s-0.241 2.018-0.271 3.042v183.537l271.059-53.037v-140.529c-15.45 13.583-35.478 22.106-57.645 22.106-48.399 0-87.763-39.394-87.763-87.763s39.364-87.763 87.763-87.763c47.736 0 86.498 38.34 87.552 85.805l0.211-0.060v353.461l-331.294 64.813zM123.362 70.731c-31.804 0-57.645 25.841-57.645 57.645s25.841 57.645 57.645 57.645c30.75 0 55.718-24.245 57.344-54.573v-6.114c-1.626-30.358-26.594-54.603-57.344-54.603zM210.823 345.645v89.811l271.059-53.067v-89.75l-271.059 53.007zM424.237-1.882c-31.804 0-57.645 25.841-57.645 57.645s25.841 57.645 57.645 57.645 57.645-25.841 57.645-57.645-25.841-57.645-57.645-57.645z" />
+<glyph unicode="&#xe68a;" d="M256 480c-91.347 0-165.647-74.3-165.647-165.647v-180.706c0-91.347 74.3-165.647 165.647-165.647s165.647 74.3 165.647 165.647v180.706c0 91.347-74.3 165.647-165.647 165.647zM391.529 133.647c0-74.722-60.808-135.53-135.53-135.53s-135.53 60.808-135.53 135.529v180.706c0 74.722 60.808 135.529 135.53 135.529s135.53-60.808 135.53-135.529v-180.706zM256 374.588c-24.907 0-45.177-20.269-45.177-45.176v-60.236c0-24.907 20.269-45.176 45.177-45.176s45.176 20.269 45.176 45.177v60.236c0 24.907-20.269 45.176-45.177 45.176zM271.059 269.177c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v60.236c0 8.313 6.746 15.059 15.059 15.059s15.059-6.746 15.059-15.059v-60.236z" />
+<glyph unicode="&#xe68b;" d="M256 480c-91.347 0-165.647-74.3-165.647-165.647v-180.706c0-91.347 74.3-165.647 165.647-165.647s165.647 74.3 165.647 165.647v180.706c0 91.347-74.3 165.647-165.647 165.647zM391.529 314.353v-15.059h-120.471v149.052c67.584-7.589 120.471-64.421 120.471-133.994zM240.941 448.346v-149.052h-120.471v15.059c0 69.572 52.886 126.404 120.471 133.993zM256-1.882c-74.722 0-135.53 60.808-135.53 135.53v135.529h271.059v-135.529c0-74.722-60.808-135.529-135.53-135.529z" />
+<glyph unicode="&#xe68c;" d="M322.831 191.563v0l-0.301 0.301c-0.392 0.332-0.663 0.723-1.084 1.024l-0.091-0.12-50.296 38.611v171.882c34.334-6.566 60.236-35.057 60.236-69.15l15.029-1.807 15.089 1.807c0 50.598-39.424 92.22-90.353 99.268v46.622h-30.118v-46.622c-50.929-7.047-90.353-48.67-90.353-99.268 0-28.371 12.679-55.356 34.666-74.481l-0.15-0.151 1.204-0.933c0 0 0 0 0 0v0l54.633-41.984v-171.821c-34.334 6.565-60.236 35.057-60.236 69.15h-30.118c0-50.597 39.424-92.22 90.353-99.268v-46.652h30.118v46.652c50.929 7.048 90.353 48.67 90.353 99.268 0 30.298-14.125 58.398-38.581 77.673zM205.463 281.796c-15.721 13.433-24.756 32.436-24.756 52.315 0 34.093 25.901 62.584 60.236 69.15v-148.721l-35.478 27.256zM271.059 44.74v148.661l33.25-25.57c17.077-13.462 26.986-33.009 26.986-53.94 0-34.093-25.901-62.584-60.236-69.15z" />
+<glyph unicode="&#xe68d;" d="M256 118.588c74.722 0 135.529 60.808 135.529 135.53v90.353c0 69.602-52.887 126.404-120.471 133.994v1.536h-30.118v-1.536c-67.584-7.59-120.471-64.392-120.471-133.994v-90.353c0-74.722 60.807-135.53 135.53-135.53zM180.706 417.988v-58.459h30.118v79.752c9.397 4.488 19.456 7.529 30.118 9.065v-88.817h30.117v88.817c10.661-1.536 20.721-4.548 30.118-9.065v-79.752h30.118v58.459c18.582-19.004 30.118-44.906 30.118-73.517v-15.059h-210.823v15.059c0 28.612 11.535 54.543 30.118 73.517zM150.588 299.294h210.823v-45.176c0-58.127-47.284-105.412-105.412-105.412s-105.412 47.284-105.412 105.412v45.177zM451.764 269.177v-97.883c0-62.253-60.808-112.941-135.529-112.941h-45.176v-90.353h-30.118v90.353h-45.177c-74.722 0-135.53 50.688-135.53 112.941v97.882h30.118v-97.882c0-45.688 47.285-82.823 105.412-82.823h120.47c58.127 0 105.412 37.135 105.412 82.823v97.882h30.118z" />
+<glyph unicode="&#xe68e;" d="M481.882 389.647v-60.236h-451.764v60.236h451.764zM30.117 178.824h451.764v60.236h-451.764v-60.236zM30.117 28.236h451.764v60.236h-451.764v-60.236z" />
+<glyph unicode="&#xe68f;" d="M481.882 419.764v-60.236h-331.294v60.236h331.294zM150.588 208.941h331.294v60.236h-331.294v-60.236zM150.588 58.353h331.294v60.236h-331.294v-60.236zM60.236 419.764c-16.625 0-30.117-13.462-30.117-30.118s13.492-30.118 30.117-30.118 30.118 13.462 30.118 30.118-13.493 30.118-30.117 30.118zM60.236 269.177c-16.625 0-30.117-13.463-30.117-30.118s13.492-30.117 30.117-30.117 30.118 13.462 30.118 30.118-13.493 30.118-30.117 30.118zM60.236 118.588c-16.625 0-30.117-13.462-30.117-30.118s13.492-30.118 30.117-30.118 30.118 13.462 30.118 30.118-13.493 30.118-30.117 30.118z" />
+<glyph unicode="&#xe690;" d="M316.205 346.338l-147.637 42.707-168.569 0.603v-331.294h161.069l156.491-44.544 164.322 48.339v332.529l-165.677-48.339zM180.706 354.198l120.47-34.846v-269.553l-120.471 34.304v270.095zM30.117 359.529h120.47v-271.571l-120.471 0.512v271.059zM451.764 84.676l-120.471-35.449v270.125l120.471 35.148v-269.824z" />
+<glyph unicode="&#xe691;" d="M451.764 359.529v-2.078l-0.392 1.747-30.57-6.656c-4.187 54.302-49.212 97.34-104.568 97.34-55.447 0-100.563-43.219-104.629-97.642l-30.9 6.716v0.572h-180.706v-331.294h161.069l156.492-44.544 164.322 48.339v327.5h-30.118zM316.236 419.764c41.532 0 75.294-33.792 75.294-75.294 0-54.392-51.772-126.765-75.294-156.822-23.522 30.058-75.294 102.43-75.294 156.822 0 41.502 33.762 75.294 75.294 75.294zM180.706 328.147l32.557-7.077c12.409-68.337 72.463-144.204 87.913-162.816v-138.601l-120.471 34.304v274.191zM30.117 329.412h120.47v-271.571l-120.471 0.512v271.059zM331.294 19.11v139.173c15.481 18.643 75.685 94.72 87.974 163.117l32.497 7.048v-273.89l-120.471-35.449zM357.135 341.971c0 22.558-18.341 40.9-40.9 40.9s-40.9-18.341-40.9-40.9 18.341-40.93 40.9-40.93 40.9 18.341 40.9 40.93zM305.453 341.971c0 5.964 4.849 10.782 10.782 10.782s10.782-4.849 10.782-10.782-4.849-10.812-10.782-10.812-10.782 4.849-10.782 10.812z" />
+<glyph unicode="&#xe692;" d="M30.117 208.941c0-66.44 51.532-120.471 114.838-120.471v-30.118c-79.932 0-144.956 67.554-144.956 150.588s65.024 150.588 144.956 150.588h127.367l-49.573 49.574 21.293 21.293 85.956-85.925-85.925-85.956-21.323 21.323 49.604 49.574h-127.397c-63.308 0-114.838-54.031-114.838-120.471zM367.044 359.529v-30.117c63.308 0 114.839-54.031 114.839-120.471s-51.531-120.471-114.839-120.471h-127.397l49.574 49.574-21.293 21.293-85.925-85.925 85.956-85.956 21.293 21.293-49.604 49.604h127.368c79.963 0 144.987 67.554 144.987 150.588s-65.024 150.588-144.956 150.588z" />
+<glyph unicode="&#xe693;" d="M256 464.941c-91.317 0-165.647-74.3-165.647-165.647 0-131.704 147.968-303.766 154.262-311.055l11.385-13.101 11.385 13.132c6.295 7.259 154.262 179.32 154.262 311.025 0 91.347-74.33 165.647-165.647 165.647zM256 21.76c-34.515 42.887-135.53 177.062-135.53 277.534 0 74.722 60.808 135.529 135.53 135.529s135.529-60.808 135.529-135.529c0-100.382-101.014-234.647-135.53-277.534zM256 385.461c-49.815 0-90.353-40.538-90.353-90.353s40.538-90.353 90.353-90.353 90.353 40.538 90.353 90.353-40.538 90.353-90.353 90.353zM256 234.873c-33.22 0-60.236 27.016-60.236 60.236s27.016 60.236 60.236 60.236 60.236-27.016 60.236-60.236-27.015-60.236-60.236-60.236z" />
+<glyph unicode="&#xe694;" d="M512 359.529v-30.117h-361.412v30.117h361.412zM90.353 344.471c0-24.908-20.269-45.177-45.176-45.177s-45.176 20.269-45.176 45.177 20.269 45.176 45.176 45.176 45.176-20.269 45.176-45.176zM60.236 344.471c0 8.282-6.746 15.059-15.059 15.059s-15.059-6.776-15.059-15.059 6.746-15.059 15.059-15.059 15.059 6.776 15.059 15.059zM150.588 208.941h361.412v30.118h-361.412v-30.118zM90.353 224c0-24.908-20.269-45.176-45.176-45.176s-45.176 20.269-45.176 45.177 20.269 45.177 45.176 45.177 45.176-20.269 45.176-45.177zM60.236 224c0 8.282-6.746 15.059-15.059 15.059s-15.059-6.776-15.059-15.059 6.746-15.059 15.059-15.059 15.059 6.776 15.059 15.059zM150.588 88.471h361.412v30.118h-361.412v-30.118zM90.353 103.529c0-24.908-20.269-45.176-45.176-45.176s-45.176 20.269-45.176 45.176 20.269 45.176 45.176 45.176 45.176-20.269 45.176-45.176zM60.236 103.529c0 8.283-6.746 15.059-15.059 15.059s-15.059-6.776-15.059-15.059 6.746-15.059 15.059-15.059 15.059 6.776 15.059 15.059z" />
+<glyph unicode="&#xe695;" d="M256 480c-91.317 0-165.647-78.818-165.647-175.676 0-70.897 29.034-110.532 54.633-145.498 19.185-26.142 35.72-48.731 35.72-80.505v-63.127c0-26.022 20.269-47.195 45.177-47.195h60.236c24.908 0 45.176 21.173 45.176 47.195v64.030c0 31.473 15.571 52.254 35.238 78.577 24.546 32.858 55.115 73.698 55.115 146.523 0 96.858-74.331 175.676-165.647 175.676zM286.118-1.882h-60.236c-8.282 0-15.059 7.65-15.059 17.077v49.182h90.353v-49.182c0-9.427-6.776-17.077-15.059-17.077zM342.408 175.842c-17.679-23.642-35.84-47.978-40.237-81.348h-92.522c-4.578 33.19-22.709 58.036-40.358 82.131-24.004 32.768-48.821 66.65-48.821 127.699 0 80.263 60.808 145.559 135.53 145.559s135.529-65.295 135.529-145.559c0-62.796-24.967-96.196-49.122-128.482z" />
+<glyph unicode="&#xe696;" d="M358.25 419.343l-171.399-391.108h23.974v-30.118h-90.353v30.118h33.461l171.399 391.108h-24.154v30.118h90.353v-30.118h-33.28z" />
+<glyph unicode="&#xe697;" d="M325.271 50.041v-30.118h-138.541v30.118h54.212v223.804h-52.706v30.117h82.823v-253.922h54.212zM240.58 358.174c25.54 0 46.14 20.661 46.14 46.14 0 25.51-20.63 46.2-46.14 46.2-25.57 0-46.201-20.691-46.201-46.2 0-25.48 20.66-46.14 46.201-46.14z" />
+<glyph unicode="&#xe698;" d="M512 239.059c0-66.439-54.031-120.47-120.471-120.47-36.051 0-69.572 16.022-92.582 43.731l-0.060-0.030-0.421 0.542c-0.332 0.421-0.783 0.692-1.144 1.144l0.12 0.091-109.447 134.988c-17.137 19.276-41.743 30.358-67.524 30.358-49.815 0-90.353-40.538-90.353-90.353 0-49.815 40.538-90.353 90.353-90.353 27.558 0 53.278 12.348 70.536 33.882l0.271-0.211 24.606 30.479 23.431-18.914-24.787-30.69-0.301 0.241c-22.98-28.522-57.133-44.906-93.756-44.906-66.439 0-120.471 54.031-120.471 120.471 0 66.44 54.031 120.471 120.471 120.471 33.732 0 65.837-14.366 88.636-39.183l0.241 0.18 1.265-1.566 111.375-137.337c17.257-20.872 42.436-32.918 69.541-32.918 49.815 0 90.353 40.538 90.353 90.353 0 49.815-40.538 90.353-90.353 90.353-25.48 0-49.694-10.902-66.861-29.786l-28.551-35.388-23.431 18.914 28.551 35.388-0.12 0.091c22.889 25.991 55.868 40.9 90.413 40.9 66.44 0 120.47-54.031 120.47-120.47z" />
+<glyph unicode="&#xe699;" d="M0 389.647v-361.412h512v361.412h-512zM481.882 58.353h-451.764v301.176h451.764v-301.176zM77.162 73.080l-30.117 0.663c0.994 43.068 42.105 79.872 99.659 90.865v9.819c-7.469 7.8-12.8 18.372-16.414 27.798-4.879 3.493-9.096 8.854-12.017 15.541-5.572 12.348-4.608 24.726 1.897 32.166-0.121 2.228-0.18 4.428-0.18 6.536l-0.060 5.541c-0.18 16.173-0.482 42.767 27.98 47.707 5.843 10.21 14.547 18.884 35.508 19.607 33.822 1.054 57.706-11.385 65.807-34.666 2.74-7.981 0.18-14.607-1.686-19.426-1.777-4.578-3.464-8.885-2.47-16.987 0.392-3.222 0.332-6.385 0.090-9.396 5.27-7.138 6.355-17.98 2.47-29.364-2.861-8.222-7.5-14.577-13.071-18.312-3.343-8.644-8.132-18.191-14.667-25.45v-11.354c57.495-11.294 97.22-47.315 98.214-90.594l-30.118-0.692c-0.692 30.75-36.442 57.464-85.022 63.518l-13.191 1.656v51.471l6.024 4.517c3.192 2.409 8.162 9.668 12.499 22.919l4.066 10.361 2.228 19.004c0.422 3.192 0.813 6.234 0.572 8.071-1.868 15.661 1.988 25.6 4.276 31.503 0.15 0.422 0.271 0.692 0.362 0.933-6.325 11.927-26.474 12.439-35.268 12.228-8.343-0.332-8.945-1.506-10.571-4.608-2.048-3.976-6.897-13.312-19.185-14.396-2.771-0.241-3.644-0.813-3.644-0.813-1.235-1.928-1.144-11.053-1.084-17.107l0.030-5.873c0-4.246 0.301-8.794 0.874-13.432l2.108-17.257 3.614-0.632 0.090-7.469c4.638-14.035 10.21-21.715 13.583-24.034l6.476-4.488v-50.808l-13.312-1.566c-48.549-5.692-85.654-33.069-86.347-63.699zM451.764 239.059h-150.588v30.118h150.588v-30.118zM421.647 178.824h-120.471v30.118h120.471v-30.118z" />
+<glyph unicode="&#xe69a;" d="M271.059 359.529h169.412l-108.695 120.471h-211.305v-120.471h120.471v-112.128h-33.882v-279.401h97.882v279.401h-33.882v112.128zM150.588 449.882h167.786l54.363-60.236h-222.148v60.236zM274.824-1.882h-37.647v219.166h37.647v-219.166z" />
+<glyph unicode="&#xe69b;" d="M421.647-1.882h-90.353v180.706h-150.588v-180.706h-90.353v271.059h-30.117v-301.176h391.529v301.176h-30.118v-271.059zM210.823-1.882v150.588h90.353v-150.588h-90.353zM505.856 285.048l-17.829-24.305-232.026 170.466-232.026-170.406-17.829 24.275 249.856 183.476 249.856-183.507z" />
+<glyph unicode="&#xe69c;" d="M310.543 33.325c0-27.046-21.986-49.031-49.062-49.031-27.166 0-49.122 21.986-49.122 49.031 0 27.106 21.956 49.092 49.122 49.092 27.046 0 49.062-21.986 49.062-49.092zM351.413 408.531c-15.42 19.426-43.49 42.587-89.841 42.587-123.422 0-127.85-113.182-127.88-114.327l30.118-0.783c0.090 3.463 3.313 84.992 97.762 84.992 34.334 0 54.964-16.956 66.228-31.172 16.716-21.083 21.082-45.418 18.793-55.206-8.764-37.014-30.449-56.531-53.399-77.192-28.16-25.329-57.224-51.501-57.224-107.159h30.118c0 42.225 20.841 61.019 47.255 84.781 24.214 21.805 51.652 46.501 62.555 92.702 4.488 19.095-2.5 53.007-24.486 80.775z" />
+<glyph unicode="&#xe69d;" d="M481.31 236.499c-5.783 135.319-104.478 243.501-225.31 243.501s-219.528-108.183-225.31-243.501c-17.77-6.054-30.69-22.769-30.69-42.617v-120.471c0-24.907 20.179-45.176 44.996-45.176h45.357v30.118h30.117v150.588h-30.118v30.118h-29.455c6.776 117.519 91.557 210.824 195.102 210.824s188.326-93.305 195.102-210.824h-29.455v-30.118h-30.118v-150.588h30.118v-30.118h45.357c24.817 0 44.996 20.269 44.996 45.176v120.471c0 19.848-12.921 36.563-30.69 42.617zM60.236 58.353h-15.239c-8.192 0-14.878 6.776-14.878 15.059v120.471c0 8.283 6.686 15.059 14.878 15.059h15.239v-150.588zM481.882 73.412c0-8.283-6.686-15.059-14.878-15.059h-15.24v150.588h15.24c8.192 0 14.878-6.776 14.878-15.059v-120.471z" />
+<glyph unicode="&#xe69e;" d="M406.588 103.529c-24.907 0-45.176-20.269-45.176-45.176s20.269-45.176 45.176-45.176 45.176 20.269 45.176 45.176-20.269 45.176-45.176 45.176zM406.588 43.294c-8.283 0-15.059 6.776-15.059 15.059s6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059-6.776-15.059-15.059-15.059zM512 385.13l-88.034 94.87h-335.842l-88.124-92.973v-193.747h28.19l-28.19-35.298v-189.982h512v188.536l-31.503 36.743h31.503v191.85zM101.044 449.882h309.79l55.838-60.236h-422.701l57.073 60.236zM30.117-1.882v120.471h451.764v-120.471h-451.764zM479.051 148.706h-447.94l35.569 44.574h374.182l38.189-44.574zM30.117 223.397v136.132h451.764v-136.132h-451.764zM406.588 329.412c-24.907 0-45.176-20.269-45.176-45.177 0-24.877 20.269-45.147 45.176-45.147s45.176 20.269 45.176 45.147c0 24.908-20.269 45.177-45.176 45.177zM406.588 269.207c-8.283 0-15.059 6.746-15.059 15.029s6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059-6.776-15.029-15.059-15.029z" />
+<glyph unicode="&#xe69f;" d="M425.683 389.767h-339.305l-86.377-131.734v-199.8h512v197.843l-86.317 133.692zM102.671 359.65h306.598l58.488-90.594h-424.478l59.392 90.594zM30.117 88.35v150.588h451.764v-150.588h-451.764zM406.588 208.82c-24.907 0-45.176-20.269-45.176-45.176s20.269-45.176 45.176-45.176 45.176 20.269 45.176 45.176-20.269 45.176-45.176 45.176zM406.588 148.586c-8.283 0-15.059 6.776-15.059 15.059s6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059-6.776-15.059-15.059-15.059z" />
+<glyph unicode="&#xe6a0;" d="M236.092 311.010l-1.024-5.964 20.269 2.59c0.12 0 0.632 0.091 0.934 0.12l19.185-2.439-0.933 5.452c32.828 6.084 99.629 21.835 137.788 54.513 14.878 12.709 23.070 29.817 23.070 48.188s-8.192 35.478-23.070 48.219c-28.371 24.335-77.132 24.305-105.502 0-24.516-20.992-40.93-51.983-51.531-79.149-10.601 27.106-27.016 58.007-51.531 78.938-28.34 24.275-77.041 24.245-105.382 0-14.878-12.709-23.070-29.786-23.070-48.098 0-18.312 8.192-35.358 23.070-48.038 38.159-32.587 104.96-48.279 137.728-54.332zM326.385 438.799c8.764 7.5 20.51 11.626 33.159 11.626 12.62 0 24.425-4.126 33.159-11.626 8.101-6.897 12.529-15.902 12.529-25.329 0-9.397-4.428-18.372-12.529-25.299-31.082-26.594-88.214-40.81-119.447-46.923 7.379 26.745 23.582 72.252 53.127 97.551zM117.91 438.588c8.764 7.469 20.51 11.595 33.159 11.595 12.619 0 24.395-4.126 33.13-11.595 29.395-25.088 45.598-70.385 53.007-97.069-31.202 6.053-88.185 20.179-119.296 46.743-8.072 6.867-12.499 15.781-12.499 25.118 0 9.366 4.427 18.312 12.499 25.209zM512 299.294h-512v-120.47h30.117v-210.824h451.764v210.823h30.118v120.471zM210.101 269.177h90.534l32.106-175.978-49.634 20.63-39.183-36.292-33.822 191.639zM30.117 269.177h149.383l10.631-60.236h-160.015v60.236zM451.764-1.882h-391.529v180.706h135.228l28.371-160.918 65.536 60.687 82.884-34.485-24.546 134.716h104.056v-180.706zM481.882 208.941h-139.685l-10.993 60.236h150.679v-60.236z" />
+<glyph unicode="&#xe6a1;" d="M271.059 359.891v89.991h-30.118v-89.991c-107.339-3.163-240.941-38.611-240.941-74.903v-212.059c0-24.908 20.269-45.176 45.176-45.176h53.91l60.115 118.392c17.077-3.132 51.591-8.252 95.564-8.252 44.544 0 81.137 5.24 99.027 8.342l57.464-118.483h55.567c24.907 0 45.176 20.269 45.176 45.176v212.059c0 36.292-133.632 71.77-240.941 74.902zM481.882 72.93c0-8.283-6.776-15.059-15.059-15.059h-36.683l-59.512 122.579-11.625-2.56c-0.452-0.091-45.628-9.909-104.267-9.909-58.459 0-99.84 9.728-100.262 9.849l-11.565 2.801-62.284-122.73h-35.449c-8.282 0-15.059 6.776-15.059 15.059v208.263c15.119 13.162 101.797 45.719 210.823 48.519v-0.332h30.117v0.392c108.996-2.831 195.704-35.388 210.823-48.55v-208.324zM150.588 268.574h30.058v-30.118h-30.058v-30.72h-30.118v30.72h-30.118v30.117h30.118v30.72h30.118v-30.72zM376.471 208.339c24.908 0 45.176 20.269 45.176 45.177s-20.269 45.177-45.176 45.177-45.176-20.239-45.176-45.177 20.269-45.177 45.176-45.177zM376.471 268.574c8.283 0 15.059-6.776 15.059-15.059s-6.776-15.059-15.059-15.059-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059z" />
+<glyph unicode="&#xe6a2;" d="M16.264 480l194.56-277.956v-234.044h90.353v234.044l194.56 277.956h-479.473zM271.059 211.531v-213.413h-30.118v213.413l-166.852 238.351h363.821l-166.852-238.351z" />
+<glyph unicode="&#xe6a3;" d="M376.38 480h-195.674v-60.536h30.118v30.419h150.588v-120.47h120.471v-240.941h-120.983v-30.118h151.1v295.695l-135.62 125.952zM391.529 424.825l70.325-65.295h-70.325v65.295zM0 389.647v-421.647h331.294v295.695l-135.62 125.952h-195.674zM210.823 334.471l70.325-65.295h-70.325v65.295zM30.117-1.882v361.412h150.588v-120.471h120.47v-240.941h-271.059z" />
+<glyph unicode="&#xe6a4;" d="M291.147 480h-230.912v-512h391.529v352.135l-160.618 159.865zM301.176 427.535l98.575-98.123h-98.575v98.123zM90.353-1.882v451.764h180.706v-150.588h150.588v-301.176h-331.294z" />
+<glyph unicode="&#xe6a5;" d="M404.962 353.476l-156.492 90.383c-20.781 11.957-49.694 4.247-61.681-16.565l-180.706-313.012c-12.469-21.564-5.029-49.243 16.564-61.741l95.744-54.935 131.222 0.542 171.911 293.617c12.438 21.564 5.029 49.243-16.565 61.711zM232.298 28.205l-105.954-0.421-88.697 50.868c-7.198 4.187-9.668 13.372-5.511 20.601l82.823 143.481 181.519-104.81-64.18-109.719zM395.445 306.914l-83.757-143.059-181.669 104.9 82.823 143.481c2.68 4.638 7.71 7.53 13.071 7.53 2.65 0 5.18-0.663 7.5-1.988l156.492-90.353c7.198-4.186 9.668-13.402 5.541-20.51zM512 28.236v-30.118h-210.823v30.118h210.823z" />
+<glyph unicode="&#xe6a6;" d="M60.236 480v-512h391.529v512h-391.529zM141.403 359.529l-42.406 90.353h314.007l-42.466-90.353h-229.135zM122.308 329.412h118.634v-271.059h-120.531l-30.058-34.786v373.88l31.955-68.036zM134.174 28.236h243.712l25.962-30.118h-295.635l25.962 30.118zM391.71 58.353h-120.651v271.059h118.603l31.985 68.096v-373.911l-29.937 34.756z" />
+<glyph unicode="&#xe6a7;" d="M512-1.882v-30.118h-512v30.118h512zM402.191 213.339l-21.293 21.293-109.809-109.809v355.178h-30.118v-355.207l-109.839 109.869-21.323-21.323 146.191-146.161 146.191 146.161z" />
+<glyph unicode="&#xe6a8;" d="M501.188 317.094l-84.661 102.671h-145.468v60.236h-30.118v-60.236h-210.823v-210.823h210.823v-240.941h30.118v240.941h145.709l84.42 108.153zM271.059 239.059h-210.823v150.588h342.076l60.265-73.065-60.507-77.523h-131.012z" />
+<glyph unicode="&#xe6a9;" d="M271.059 299.294h141.402l58.368 77.192-58.609 73.397h-141.161v30.118h-30.118v-30.118h-180.706v-150.588h180.706v-60.236h-141.161l-58.609-73.397 58.368-77.192h141.402v-120.471h30.118v120.471h180.706v150.588h-180.706v60.235zM90.353 419.764h307.38l34.966-43.791-35.207-46.562h-307.14v90.353zM421.647 118.588h-307.14l-35.208 46.562 34.966 43.791h307.38v-90.353z" />
+<glyph unicode="&#xe6aa;" d="M512 133.647v-15.059h-185.765v30.118h155.166c-3.373 50.959-23.763 97.31-55.476 133.541l-24.275-24.275-21.293 21.293 24.154 24.154c-36.202 31.714-82.522 51.983-133.452 55.387v-89.63h-30.118v89.63c-50.929-3.404-97.25-23.673-133.421-55.387l23.974-23.974-21.293-21.293-24.094 24.094c-31.714-36.231-52.133-82.582-55.477-133.542h155.738v-30.118h-186.368v15.059c0 141.161 114.838 256 256 256s256-114.839 256-256zM316.236 133.647c0-33.22-27.015-60.236-60.236-60.236s-60.236 27.015-60.236 60.236c0 19.396 9.367 36.442 23.612 47.495l-62.705 109.327 26.112 14.969 64.482-112.429c2.861 0.421 5.722 0.873 8.734 0.873 33.22 0 60.236-27.015 60.236-60.236zM286.118 133.647c0 16.595-13.523 30.118-30.118 30.118s-30.118-13.523-30.118-30.118 13.523-30.118 30.118-30.118 30.118 13.523 30.118 30.118z" />
+<glyph unicode="&#xe6ab;" d="M90.353 389.647v-331.294h331.294v331.294h-331.294zM391.529 88.471h-271.059v271.059h271.059v-271.059z" />
+<glyph unicode="&#xe6ac;" d="M269.252 273.062l32.557 40.357-0.12 0.091c25.75 29.244 62.856 46.020 101.738 46.020h57.163l-49.574 49.573 21.293 21.293 85.925-85.925-85.956-85.956-21.293 21.293 49.604 49.604h-57.163c-29.786 0-58.157-12.8-78.156-34.906l-32.527-40.327-23.492 18.884zM176.219 157.861l-0.332 0.241c-20.089-25.088-50.085-39.514-82.311-39.514h-93.576v-30.118h93.576c41.231 0 79.661 18.402 105.502 50.477l0.332-0.271 28.34 35.117-23.401 18.944-28.13-34.876zM410.986 168.162l49.604-49.574h-57.163c-31.684 0-61.169 14.125-81.317 38.581l-128.572 158.57-0.301-0.241c-25.6 27.889-61.681 44.032-99.659 44.032h-93.576v-30.118h93.576c30.058 0 58.669-12.891 78.637-35.238l125.32-154.564-0.151-0.12c25.901-32.406 64.542-51.019 106.014-51.019h57.163l-49.574-49.574 21.293-21.293 85.956 85.956-85.956 85.956-21.293-21.353z" />
+<glyph unicode="&#xe6ad;" d="M90.353 398.923v-349.907l349.907 175.797-349.907 174.11zM120.471 350.253l252.446-125.591-252.446-126.825v252.416z" />
+<glyph unicode="&#xe6ae;" d="M90.353 28.236h120.471v391.529h-120.471v-391.529zM120.471 389.647h60.236v-331.294h-60.236v331.294zM301.176 419.764v-391.529h120.471v391.529h-120.471zM391.529 58.353h-60.236v331.294h60.236v-331.294z" />
+<glyph unicode="&#xe6af;" d="M90.353 406.634v-365.508l219.286 183.657-219.286 181.851zM120.471 342.543l142.125-117.851-142.125-119.025v236.875zM460.228 224.783l-194.56-162.936-19.365 23.13 166.852 139.716-166.762 138.3 19.245 23.19 194.59-161.4z" />
+<glyph unicode="&#xe6b0;" d="M202.361 224.783l219.286-183.628v365.478l-219.286-181.851zM391.529 105.668l-142.125 118.995 142.125 117.88v-236.875zM98.816 224.662l166.852-139.716-19.365-23.13-194.56 162.936 194.62 161.371 19.245-23.191-166.792-138.27z" />
+<glyph unicode="&#xe6b1;" d="M384 344.471c-17.408 0-34.515-3.705-50.929-11.053-26.774 26.292-62.494 41.171-99.659 41.171-59.212 0-110.954-35.84-132.428-90.413-54.302 2.228-100.984-42.797-100.984-97.822 0-53.971 43.911-97.882 97.882-97.882h286.117c70.565 0 128 57.435 128 128s-57.435 128-128 128zM384 118.588h-286.118c-37.376 0-67.764 30.389-67.764 67.764s30.389 67.764 67.764 67.764c3.764 0 7.349-0.572 10.933-1.144l13.101-2.168 3.795 12.709c14.396 48.429 57.676 80.956 107.7 80.956 32.316 0 63.308-14.366 84.962-39.364l7.981-9.216 10.661 5.873c15.149 8.342 30.931 12.589 46.983 12.589 53.971 0 97.882-43.911 97.882-97.882s-43.911-97.882-97.882-97.882z" />
+<glyph unicode="&#xe6b2;" d="M512 276.706c0-70.566-57.404-128-128-128h-83.034v30.118h83.034c53.971 0 97.882 43.911 97.882 97.882s-43.911 97.882-97.882 97.882c-16.022 0-31.834-4.247-46.983-12.559l-10.661-5.873-7.981 9.216c-21.654 24.968-52.645 39.334-84.962 39.334-50.025 0-93.334-32.527-107.701-80.956l-3.795-12.709-13.101 2.168c-3.584 0.572-7.168 1.144-10.933 1.144-37.346 0-67.764-30.388-67.764-67.764s30.419-67.764 67.764-67.764h111.405v-30.118h-111.405c-53.971 0-97.882 43.911-97.882 97.882 0 54.995 46.050 100.442 100.984 97.822 21.474 54.573 73.216 90.413 132.428 90.413 37.165 0 72.885-14.878 99.659-41.171 16.444 7.348 33.521 11.053 50.929 11.053 70.596 0 128-57.435 128-128zM320.632 213.339l21.293 21.293-85.925 85.956-85.956-85.925 21.293-21.293 49.604 49.573v-234.707h30.118v234.707l49.574-49.604z" />
+<glyph unicode="&#xe6b3;" d="M512 276.706c0-70.566-57.404-128-128-128h-83.034v30.118h83.034c53.971 0 97.882 43.911 97.882 97.882s-43.911 97.882-97.882 97.882c-16.022 0-31.834-4.247-46.983-12.559l-10.661-5.873-7.981 9.216c-21.654 24.968-52.645 39.334-84.962 39.334-50.025 0-93.334-32.527-107.701-80.956l-3.795-12.709-13.101 2.168c-3.584 0.572-7.168 1.144-10.933 1.144-37.346 0-67.764-30.388-67.764-67.764s30.419-67.764 67.764-67.764h111.405v-30.118h-111.405c-53.971 0-97.882 43.911-97.882 97.882 0 54.995 45.508 100.442 100.984 97.822 21.474 54.573 73.216 90.413 132.428 90.413 37.165 0 72.885-14.878 99.659-41.171 16.444 7.348 33.521 11.053 50.929 11.053 70.596 0 128-57.435 128-128zM271.059 66.485v232.81h-30.118v-232.81l-49.573 49.574-21.293-21.293 85.925-85.925 85.956 85.956-21.293 21.293-49.604-49.604z" />
+<glyph unicode="&#xe6b4;" d="M481.882 419.764v-451.764h-451.764v451.764h67.584v-30.118h-37.467v-391.529h391.529v391.529h-38.49v30.118h68.608zM391.529 329.412h-271.059v120.47h92.913c6.234 17.529 22.98 30.118 42.617 30.118s36.382-12.589 42.617-30.118h92.913v-120.47zM361.412 419.764h-90.353v15.059c0 8.313-6.747 15.059-15.059 15.059s-15.059-6.747-15.059-15.059v-15.059h-90.353v-60.236h210.823v60.236z" />
+<glyph unicode="&#xe6b5;" d="M512 179.305l-58.971-0.060-61.772 120.049h-239.405l-89.389-120.44-62.464-0.030v-149.896h60.295c0-0.241-0.060-0.452-0.060-0.692 0-33.22 27.015-60.236 60.235-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h150.739c-0.030-0.241-0.091-0.452-0.091-0.692 0-33.22 27.015-60.236 60.236-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h60.296v150.377zM419.178 179.215l-117.368-0.12v90.082h71.077l46.291-89.962zM166.972 269.177h104.719v-90.112l-171.701-0.151 66.982 90.262zM120.471-1.882c-16.595 0-30.117 13.523-30.117 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM391.529-1.882c-16.595 0-30.118 13.523-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM481.882 59.046h-38.882c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-168.117c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-38.882v89.66l451.764 0.452v-90.112z" />
+<glyph unicode="&#xe6b6;" d="M421.647 419.764v30.118h-90.353v-30.118h-150.588v30.118h-90.353v-30.118h-90.353v-451.764h512v451.764h-90.353zM361.412 419.764h30.118v-60.236h-30.118v60.236zM120.471 419.764h30.117v-60.236h-30.118v60.236zM481.882-1.882h-451.764v268.68h451.764v-268.68zM30.117 296.915v92.732h60.236v-60.236h90.353v60.236h150.588v-60.236h90.353v60.236h60.236v-92.732h-451.764z" />
+<glyph unicode="&#xe6b7;" d="M499.712 445.305c-1.596 0.301-39.786 7.349-89.781 7.349-63.397 0-115.291-11.023-154.353-32.768-45.719 23.040-98.304 34.696-156.492 34.696-50.628 0-86.317-9.096-87.793-9.487l-11.294-2.952 0.030-418.816 18.794 4.849c0.331 0.060 33.732 8.524 80.263 8.524 43.58 0 83.456-7.228 119.266-21.173v-24.938h75.294v25.781c38.581 14.697 82.733 18.402 116.254 18.402 47.044 0 83.908-6.776 84.269-6.837l17.829-3.313v418.364l-12.288 2.319zM30.117 61.154v357.135c13.583 2.53 38.46 6.174 68.969 6.174 53.037 0 100.563-10.842 141.854-31.443v-354.666c-42.255 18.582-89.66 28.461-141.854 28.461-29.184 0-53.398-3.042-68.969-5.662zM481.882 60.22c-16.143 2.108-41.954 4.638-71.981 4.638-55.657 0-101.828-8.975-138.843-25.75v354.575c42.827 23.492 98.515 28.853 138.842 28.853 30.81 0 57.284-2.922 71.981-4.94v-357.376z" />
+<glyph unicode="&#xe6b8;" d="M461.161 54.588c-0.421 0.392-39.514 38.972-39.514 96.678v99.147c0 93.395-74.33 169.351-165.647 169.351s-165.647-75.957-165.647-169.351v-99.147c0-56.049-39.334-96.467-39.695-96.858l-25.389-25.69h462.517l-26.624 25.871zM91.919 58.835c13.372 20.841 28.552 53.127 28.552 92.431v99.147c0 76.77 60.807 139.234 135.529 139.234s135.529-62.464 135.529-139.234v-99.147c0-39.755 14.908-71.77 28.25-92.431h-327.861zM271.059 419.764h-30.118v30.118h30.118v-30.118zM271.059 28.236h30.118c0-24.908-20.269-45.176-45.176-45.176s-45.177 20.269-45.177 45.176h30.118c0-8.313 6.776-15.059 15.059-15.059s15.059 6.747 15.059 15.059z" />
+<glyph unicode="&#xe6b9;" d="M256.482 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.868 256-256 256zM391.198 239.059c2.952 43.972 18.522 85.986 45.086 121.073 25.901-34.123 42.285-75.746 45.297-121.073h-90.383zM481.581 208.941c-3.012-45.327-19.396-86.98-45.327-121.103-26.534 35.117-42.105 77.132-45.026 121.103h90.353zM416.406 383.353c-32.949-41.291-52.194-91.558-55.326-144.293h-90.022v210.101c56.591-3.675 107.64-27.979 145.348-65.807zM240.941 449.099v-210.040h-89.148c-3.072 52.766-22.317 103.003-55.236 144.293 37.466 37.617 88.154 61.892 144.384 65.747zM31.352 239.059c3.012 45.327 19.396 86.98 45.327 121.103 26.534-35.087 42.075-77.101 45.026-121.103h-90.353zM121.675 208.941c-2.921-44.032-18.432-86.016-44.996-121.103-25.931 34.123-42.316 75.776-45.327 121.103h90.323zM96.527 64.647c32.979 41.291 52.194 91.527 55.266 144.293h89.148v-210.041c-56.23 3.855-106.917 28.13-144.414 65.747zM271.059-1.159v210.101h90.052c3.102-52.736 22.348-103.002 55.266-144.324-37.707-37.798-88.726-62.103-145.317-65.777z" />
+<glyph unicode="&#xe6ba;" d="M512-1.882v-30.118h-512v30.118h512zM60.236 178.824h60.236v-150.588h30.118v180.706h-120.471v-180.706h30.117v150.588zM210.823 269.177h60.235v-240.941h30.118v271.059h-120.471v-271.059h30.118v240.941zM361.412 389.647h60.236v-361.412h30.118v391.529h-120.471v-391.529h30.118v361.412z" />
+<glyph unicode="&#xe6bb;" d="M512-1.882v-30.118h-512v30.118h512zM361.412 178.824h60.236v-150.588h30.118v180.706h-120.471v-180.706h30.118v150.588zM210.823 269.177h60.235v-240.941h30.118v271.059h-120.471v-271.059h30.118v240.941zM60.236 389.647h60.236v-361.412h30.118v391.529h-120.471v-391.529h30.117v361.412z" />
+<glyph unicode="&#xe6bc;" d="M439.205 28.236v-30.118h-213.323c-91.316 0-165.647 74.3-165.647 165.647s74.331 165.647 165.647 165.647h87.703l-79.692 79.692 21.293 21.293 116.043-116.044-116.043-116.073-21.293 21.324 79.692 79.692h-87.702c-74.722 0-135.53-60.808-135.53-135.53s60.808-135.529 135.53-135.529h213.324z" />
+<glyph unicode="&#xe6bd;" d="M451.764 254.118c0-91.347-74.3-165.647-165.647-165.647h-87.702l79.692-79.692-21.293-21.293-116.043 116.043 116.074 116.073 21.293-21.293-79.721-79.721h87.702c74.722 0 135.529 60.808 135.529 135.53s-60.808 135.53-135.529 135.53h-213.323v30.118h213.323c91.347 0 165.647-74.3 165.647-165.647z" />
+<glyph unicode="&#xe6be;" d="M451.764 193.882v-165.647h-165.647v30.118h114.537l-310.302 310.302v-114.537h-30.117v165.647h165.647v-30.117h-113.935l309.7-309.7v113.935h30.118z" />
+<glyph unicode="&#xe6bf;" d="M512 419.764h-512v-120.471h30.117v-331.294h451.764v331.294h30.118v120.471zM451.764-1.882h-391.529v301.176h391.529v-301.176zM481.882 329.412h-451.764v60.236h451.764v-60.236zM180.706 148.706h151.070c33.22 0 60.236 27.015 60.236 60.236s-27.015 60.236-60.236 60.236h-151.070c-33.22 0-60.236-27.016-60.236-60.236s27.016-60.236 60.236-60.236zM180.706 239.059h151.070c16.625 0 30.118-13.493 30.118-30.117s-13.493-30.118-30.118-30.118h-151.070c-16.625 0-30.118 13.493-30.118 30.118s13.493 30.118 30.118 30.118z" />
+<glyph unicode="&#xe6c0;" d="M460.529 100.759l-47.284 94.178-94.178-47.224 13.493-26.955 56.35 28.281c-11.234-57.435-58.91-101.346-117.851-107.972v228.111h45.176v30.118h-45.176v31.654c34.334 6.988 60.236 37.376 60.236 73.758 0 41.532-33.792 75.294-75.294 75.294s-75.294-33.762-75.294-75.294c0-36.382 25.901-66.771 60.236-73.758v-31.654h-45.177v-30.118h45.177v-228.111c-58.88 6.626-106.556 50.477-117.82 107.821l56.019-28.13 13.493 26.956-94.178 47.224-47.285-94.178 26.925-13.523 19.606 39.093c20.871-67.614 83.938-116.916 158.298-116.916 74.21 0 137.216 49.092 158.178 116.465l19.426-38.641 26.925 13.523zM210.823 404.706c0 24.907 20.269 45.176 45.177 45.176s45.176-20.269 45.176-45.176-20.269-45.177-45.177-45.177-45.177 20.269-45.177 45.177z" />
+<glyph unicode="&#xe6c1;" d="M512 419.764v-30.118h-512v30.118h512zM90.353 269.177h421.647v30.117h-421.647v-30.117zM0 148.706h512v30.118h-512v-30.118zM210.823 28.236h301.177v30.118h-301.176v-30.118z" />
+<glyph unicode="&#xe6c2;" d="M512 419.764v-30.118h-512v30.118h512zM421.647 299.294h-421.647v-30.117h421.647v30.117zM0 148.706h512v30.118h-512v-30.118zM0 28.236h301.176v30.118h-301.176v-30.118z" />
+<glyph unicode="&#xe6c3;" d="M512 419.764v-30.118h-512v30.118h512zM0 269.177h512v30.117h-512v-30.117zM0 148.706h512v30.118h-512v-30.118zM0 28.236h512v30.118h-512v-30.118z" />
+<glyph unicode="&#xe6c4;" d="M512 419.764v-30.118h-512v30.118h512zM45.176 299.294v-30.117h421.647v30.117h-421.647zM0 148.706h512v30.118h-512v-30.118zM105.412 28.236h301.176v30.118h-301.176v-30.118z" />
+<glyph unicode="&#xe6c5;" d="M254.614 435.065l-248.23-436.947h499.38l-251.151 436.947zM254.765 374.347l198.927-346.112h-395.565l196.638 346.112zM271.059 150.573h-30.118v118.603h30.118v-118.603zM286.118 87.537c0-16.625-13.462-30.118-30.118-30.118s-30.118 13.493-30.118 30.118 13.463 30.118 30.118 30.118 30.118-13.493 30.118-30.118z" />
+<glyph unicode="&#xe6c6;" d="M443.151 275.471c15.18 15.42 23.673 35.569 23.673 57.314 0 45.267-36.834 82.101-82.070 82.101-26.684 0-51.050-13.071-66.469-34.635-15.089 4.668-30.901 7.5-47.224 8.644v30.87h30.118v30.118h-90.353v-30.118h30.118v-30.87c-16.324-1.144-32.136-3.976-47.225-8.644-15.42 21.594-39.756 34.635-66.469 34.635-45.236 0-82.070-36.834-82.070-82.1 0-21.775 8.493-41.924 23.672-57.314-15.029-28.973-23.672-61.801-23.672-96.647 0-51.411 18.552-98.515 49.243-135.138l-38.701-51.591 24.094-18.070 35.9 47.887c37.316-33.401 86.377-53.911 140.288-53.911s102.972 20.51 140.288 53.911l35.9-47.887 24.094 18.070-38.701 51.591c30.69 36.623 49.243 83.727 49.243 135.138 0 34.846-8.644 67.674-23.673 96.647zM384.753 384.768c28.642 0 51.953-23.311 51.953-51.983 0-11.234-3.614-21.805-10.089-30.63-20.42 28.19-47.616 51.019-79.209 66.319 9.698 10.21 22.95 16.294 37.346 16.294zM75.294 332.785c0 28.642 23.311 51.983 51.953 51.983 14.396 0 27.648-6.084 37.346-16.264-31.594-15.3-58.76-38.159-79.21-66.319-6.475 8.825-10.090 19.365-10.090 30.599zM256-1.882c-99.659 0-180.706 81.046-180.706 180.706s81.047 180.706 180.706 180.706 180.706-81.047 180.706-180.706-81.046-180.706-180.706-180.706zM271.059 178.824h120.471v-30.118h-150.588v120.471h30.117v-90.353z" />
+<glyph unicode="&#xe6c7;" d="M421.647 419.764v60.236h-391.529v-512h391.529v60.236h60.236v391.529h-60.236zM60.236-1.882v451.764h60.236v-451.764h-60.236zM391.529-1.882h-240.941v451.764h240.941v-451.764zM451.764 58.353h-30.118v90.353h30.118v-90.353zM451.764 178.824h-30.118v90.353h30.118v-90.353zM421.647 299.294v90.353h30.118v-90.353h-30.118zM180.706 359.529h150.588v-30.117h-150.588v30.117zM180.706 299.294h120.47v-30.117h-120.471v30.117z" />
+<glyph unicode="&#xe6c8;" d="M351.382 480h-260.548v-59.754h-15.54c-24.907 0-45.176-20.269-45.176-45.176v-258.651l75.927-149.263 74.21 149.353v258.56c0 24.908-20.269 45.176-45.177 45.176h-14.125v29.636h210.341v-150.588h150.588v-301.177h-346.353v-30.118h376.471v352.135l-160.618 159.864zM117.7 58.293h-24.215l-33.25 65.356v176.128h30.118v-181.519h30.118v181.519h29.636v-176.219l-32.406-65.265zM150.107 375.070v-45.176h-89.871v45.176c0 8.282 6.776 15.059 15.059 15.059h59.753c8.313 0 15.059-6.777 15.059-15.059zM361.412 427.535l98.575-98.123h-98.575v98.123z" />
+<glyph unicode="&#xe6c9;" d="M0 449.882v-451.764h512v451.764h-512zM481.882 419.764v-90.353h-451.764v90.353h451.764zM30.117 28.236v271.059h451.764v-271.059h-451.764zM210.823 359.529h-30.118v30.118h30.118v-30.118zM150.588 359.529h-30.118v30.118h30.118v-30.118zM90.353 359.529h-30.117v30.118h30.117v-30.118z" />
+<glyph unicode="&#xe6ca;" d="M60.236 480h30.118v-30.118h-30.117v30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM180.706 449.882h30.118v30.118h-30.118v-30.118zM240.941 449.882h30.117v30.118h-30.118v-30.118zM301.176 449.882h30.118v30.118h-30.118v-30.118zM361.412 449.882h30.118v30.118h-30.118v-30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM60.236 208.941h30.118v30.118h-30.117v-30.118zM120.471 208.941h30.117v30.118h-30.118v-30.118zM180.706 208.941h30.118v30.118h-30.118v-30.118zM301.176 208.941h30.118v30.118h-30.118v-30.118zM361.412 208.941h30.118v30.118h-30.118v-30.118zM421.647 208.941h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM240.941 389.647h30.117v30.118h-30.118v-30.118zM240.941 329.412h30.117v30.117h-30.118v-30.117zM240.941 269.177h30.117v30.117h-30.118v-30.117zM240.941 208.941h30.117v30.118h-30.118v-30.118zM240.941 148.706h30.117v30.118h-30.118v-30.118zM240.941 88.471h30.117v30.118h-30.118v-30.118zM240.941 28.236h30.117v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 269.177h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0-32h30.117v30.118h-30.117v-30.118z" />
+<glyph unicode="&#xe6cb;" d="M60.236 480h30.118v-30.118h-30.117v30.118zM150.588 480h-30.118v-30.118h30.118v30.118zM210.823 480h-30.118v-30.118h30.118v30.118zM271.059 480h-30.118v-30.118h30.118v30.118zM331.294 480h-30.118v-30.118h30.118v30.118zM391.529 480h-30.118v-30.118h30.118v30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 269.177h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0-32h30.117v30.118h-30.117v-30.118zM405.534 241.197c0.632-5.632 1.054-11.355 1.054-17.197s-0.421-11.565-1.054-17.197l-1.115-9.878-43.339-13.011c-0.753-1.957-1.536-3.885-2.409-5.813l21.413-39.815-6.174-7.771c-7.168-9.005-15.39-17.228-24.425-24.425l-7.771-6.204-39.815 21.444c-1.897-0.844-3.855-1.656-5.813-2.409l-12.981-43.309-9.849-1.144c-5.662-0.663-11.414-1.054-17.257-1.054s-11.595 0.392-17.257 1.054l-9.849 1.144-13.011 43.309c-1.958 0.753-3.885 1.536-5.813 2.409l-39.845-21.413-7.77 6.174c-9.005 7.168-17.227 15.39-24.395 24.425l-6.144 7.74 21.413 39.815c-0.874 1.957-1.656 3.885-2.41 5.843l-43.34 13.011-1.115 9.878c-0.632 5.632-1.054 11.354-1.054 17.197s0.421 11.565 1.054 17.197l1.115 9.879 43.34 13.011c0.753 1.958 1.536 3.885 2.41 5.813l-21.413 39.815 6.144 7.77c7.138 8.975 15.36 17.197 24.425 24.426l7.77 6.204 39.816-21.444c1.898 0.874 3.855 1.656 5.813 2.409l13.011 43.309 9.849 1.144c11.324 1.325 23.191 1.325 34.515 0l9.849-1.144 13.011-43.309c1.957-0.723 3.885-1.536 5.813-2.409l39.815 21.444 7.771-6.204c9.005-7.168 17.228-15.39 24.395-24.396l6.174-7.771-21.413-39.845c0.844-1.897 1.656-3.855 2.409-5.782l43.339-13.041 1.115-9.879zM376.471 224c0 1.356-0.030 2.71-0.091 4.066l-39.243 11.776-2.289 7.831c-1.566 5.27-3.704 10.481-6.355 15.42l-3.825 7.138 19.336 35.93c-1.868 1.988-3.795 3.945-5.813 5.813l-35.9-19.335-7.198 3.855c-4.94 2.651-10.149 4.819-15.45 6.385l-7.83 2.319-11.746 39.183c-2.68 0.12-5.452 0.12-8.132 0l-11.746-39.213-7.831-2.319c-5.361-1.596-10.541-3.734-15.42-6.355l-7.138-3.885-35.96 19.365c-2.018-1.897-3.946-3.825-5.813-5.813l19.335-35.93-3.855-7.138c-2.65-4.939-4.819-10.119-6.385-15.48l-2.319-7.8-39.183-11.746c-0.060-1.356-0.090-2.71-0.090-4.066s0.030-2.711 0.090-4.036l39.213-11.776 2.319-7.83c1.566-5.331 3.734-10.541 6.385-15.481l3.825-7.138-19.335-35.93c1.868-1.988 3.795-3.945 5.813-5.813l35.93 19.336 7.138-3.825c4.94-2.651 10.149-4.819 15.451-6.385l7.831-2.319 11.776-39.213c2.68-0.12 5.452-0.12 8.132 0l11.776 39.183 7.8 2.319c5.331 1.566 10.541 3.735 15.481 6.385l7.138 3.825 35.9-19.336c2.018 1.868 3.945 3.825 5.813 5.813l-19.336 35.93 3.825 7.138c2.651 4.94 4.819 10.12 6.385 15.481l2.319 7.8 39.183 11.776c0.060 1.385 0.091 2.74 0.091 4.096z" />
+<glyph unicode="&#xe6cc;" d="M60.236 480h30.118v-30.118h-30.117v30.118zM150.588 480h-30.118v-30.118h30.118v30.118zM210.823 480h-30.118v-30.118h30.118v30.118zM271.059 480h-30.118v-30.118h30.118v30.118zM331.294 480h-30.118v-30.118h30.118v30.118zM391.529 480h-30.118v-30.118h30.118v30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 269.177h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0-32h30.117v30.118h-30.117v-30.118zM255.94 177.529l-124.808 124.898-21.323-21.324 146.131-146.191 146.221 146.191-21.293 21.293-124.928-124.868z" />
+<glyph unicode="&#xe6cd;" d="M47.104 419.764c-25.721 0-46.682-20.781-46.682-46.321h-0.421v-329.457c0-25.54 20.932-46.321 46.682-46.321h406.348v49.844h58.97v372.254h-464.896zM46.682 27.813c-9.126 0-16.564 7.259-16.564 16.204v288.618c0.723-0.211 1.627-0.15 2.349-0.361 4.307-1.265 8.825-2.048 13.644-2.139 0.211 0 0.361-0.091 0.572-0.091h376.26v-91.407h-86.106c-25.962 0-47.074-20.269-47.074-45.176v-30.118c0-24.907 21.113-45.176 47.074-45.176h86.106v-90.353h-376.26zM336.805 148.284c-9.366 0-16.956 6.747-16.956 15.059v30.118c0 8.313 7.62 15.059 16.956 15.059h145.077v-60.236h-145.077zM481.882 77.659h-28.853v40.508h28.853v-40.508zM453.029 238.637v121.524h-405.925c-8.222 0-16.564 4.126-16.564 13.282 0.030 8.945 7.469 16.204 16.564 16.204h434.779v-151.010h-28.853z" />
+<glyph unicode="&#xe6ce;" d="M0 449.882v-451.764h512v451.764h-512zM481.882 359.529h-8.072l-70.957 60.236h79.029v-60.236zM263.318 269.177l70.988 60.236h87.913l-70.988-60.236h-87.913zM204.891 359.529l-70.987 60.236h87.883l70.987-60.236h-87.883zM287.744 329.412l-70.988-60.236h-87.913l70.957 60.236h87.944zM339.365 359.529l-70.988 60.236h87.883l70.988-60.236h-87.883zM30.117 419.764h57.224l70.988-60.236h-128.211v60.236zM30.117 329.412h123.151l-70.987-60.236h-52.164v60.236zM481.882 28.236h-451.764v210.823h451.764v-210.823zM481.882 269.177h-84.089l70.957 60.236h13.132v-60.236z" />
+<glyph unicode="&#xe6cf;" d="M391.259 276.706v67.764c0 24.907-20.42 45.176-45.538 45.176h-225.25v15.059c0 8.313 6.776 15.059 15.059 15.059h166.882v30.118h-166.882c-24.907 0-45.177-20.269-45.177-45.176v-15.059h-44.815c-25.118 0-45.538-20.269-45.538-45.176v-60.266c0-24.907 20.42-45.177 45.538-45.177h15.18v-165.617c0-24.907 20.269-45.176 45.176-45.176h239.857c25.118 0 45.538 20.269 45.538 45.176v67.795l120.712-83.817v303.134l-120.741-83.817zM481.882 114.944l-120.742 83.817v-125.349c0-8.313-6.897-15.059-15.42-15.059h-239.827c-8.282 0-15.059 6.747-15.059 15.059v195.735h-45.297c-8.523 0-15.42 6.746-15.42 15.059v60.265c0 8.313 6.897 15.059 15.42 15.059h300.212c8.493 0 15.42-6.747 15.42-15.059v-125.38l120.712 83.847v-187.994z" />
+<glyph unicode="&#xe6d0;" d="M449.957 299.294c-31.082 19.486-66.68 30.118-103.605 30.118-23.432 0-46.050-4.337-67.433-12.168l77.372 77.372c6.114-3.072 12.89-4.969 20.179-4.969 24.907 0 45.176 20.269 45.176 45.176s-20.269 45.176-45.176 45.176-45.176-20.269-45.176-45.176c0-6.626 1.506-12.891 4.096-18.553l-117.76-117.73c-2.44 0.421-4.94 0.753-7.53 0.753-24.907 0-45.177-20.269-45.177-45.177 0-2.56 0.332-5.060 0.753-7.53l-101.978-101.978c-5.662 2.59-11.897 4.096-18.523 4.096-24.907 0-45.176-20.269-45.176-45.176s20.269-45.176 45.176-45.176 45.176 20.269 45.176 45.176c0 7.288-1.897 14.065-4.969 20.149l77.402 77.403c-7.891-21.534-12.197-44.363-12.197-67.433 0-44.243 18.432-82.372 30.118-102.129v-63.518h90.353v90.353h-70.355c-12.589 24.877-19.998 51.591-19.998 75.294 0 26.714 6.626 53.127 18.914 76.649 3.404-0.813 6.867-1.356 10.481-1.356 24.907 0 45.177 20.269 45.177 45.177 0 5.421-1.114 10.541-2.861 15.36 49.513 34.063 115.862 38.189 169.231 11.234v-71.771h90.353v90.353h-62.043zM376.471 449.882c8.313 0 15.059-6.746 15.059-15.059s-6.747-15.059-15.059-15.059-15.059 6.747-15.059 15.059 6.747 15.059 15.059 15.059zM45.176 88.471c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059 15.059-6.747 15.059-15.059-6.746-15.059-15.059-15.059zM210.823 28.236h30.118v-30.118h-30.118v30.118zM210.101 239.059c-8.313 0-15.059 6.746-15.059 15.059s6.746 15.059 15.059 15.059 15.059-6.747 15.059-15.059-6.746-15.059-15.059-15.059zM481.882 239.059h-30.118v30.118h30.118v-30.118z" />
+<glyph unicode="&#xe6d1;" d="M79.149 274.779c-2.771 0-6.596-0.091-9.005-0.512l-0.723-0.12-0.362-0.632c-12.288-22.528-36.743-88.365-40.629-98.063-8.433 0.603-19.667 0.572-19.667 11.264 0 7.771 27.227 71.379 30.991 81.829l0.723 1.988h-2.108c-2.53 0-4.999-0.15-7.409-0.332-2.259-0.15-4.397-0.301-6.476-0.301-5.482 0-22.317-0.662-24.335 12.86-0.813 5.602 1.506 11.716 4.186 14.697 0.512-7.349 11.957-7.017 15.059-7.017 6.837 0 21.293 2.861 30.449 4.036 10.632 1.356 22.558 4.458 33.521 4.458 10.993 0 18.974-6.686 18.974-15.842 0-3.192-1.024-6.716-2.981-10.149-5.813 1.325-14.366 1.837-20.209 1.837zM196.488 191.232c-6.234-1.476-14.065-0.783-14.065 12.047 0.060 15.661 17.257 33.822 25.841 33.822 1.536 0 6.053-1.114 5.060-6.114-5.27-26.594-29.516-22.468-27.678-25.509 8.734-14.517 51.531 7.048 47.375 37.587-1.386 10.421-7.68 17.438-19.697 17.438-22.287 0-47.797-33.1-52.315-57.464-9.125-9.276-19.486-8.613-20.269-8.524-0.632 0.873-0.662 2.62 0.392 6.114 1.868 6.144 6.174 15.51 11.113 23.793 4.638 7.74 9.487 15.812 9.487 21.775 0 7.198-4.246 10.843-12.559 10.843-10.873 0-30.87-13.312-30.87-13.312 0.783 6.355 20.992 47.224 20.992 52.736 0 6.445-2.922 10.873-10.933 10.873-2.078 0-8.162-2.078-11.656-3.343-3.343-25.721-16.655-46.954-21.925-58.73-9.849-21.956-20.751-44.935-20.751-54.513 0-9.036 8.704-17.679 18.1-18.070 8.433 31.865 29.034 66.44 43.159 66.44 0 0-16.293-33.942-16.293-49.483 0-7.65 1.626-15.51 13.643-15.51 0.060 0 0.12 0 0.18 0 10.873-1.115 22.648 13.583 27.558 20.54 0.662-16.534 15.089-18.372 21.383-18.372 18.341 0 34.575 11.173 46.893 30.991-6.837-5.662-23.643-14.035-32.166-16.053zM322.59 201.382c0.632 2.469 2.409 7.379 6.686 15.661 5.361 10.421 12.68 24.636 12.68 33.25 0 5.030-2.38 7.259-7.771 7.259-6.897 0-16.776-6.295-25.811-16.414l-2.53-2.801v3.825c0 9.999-2.952 15.059-8.674 15.059-7.349 0-19.365-8.313-30.539-21.203 0 0 2.289 11.505 2.289 15.209 0 7.831-6.867 8.975-10.933 8.975-2.168 0-4.428-0.271-6.776-0.783-0.753-8.764-9.036-27.98-16.354-45.026-4.728-11.053-9.607-22.407-9.607-24.907 0-8.012 5.452-13.192 13.824-13.192 0.422 0 0.844 0 1.295 0.030 6.174 20.751 22.709 51.2 34.425 51.2h2.018l-0.692-1.958c-1.656-5.030-4.276-9.969-6.837-14.758-4.307-8.072-8.313-15.692-8.313-23.823 0-6.626 6.174-10.21 11.987-10.21 1.476 0 2.68 0.151 3.735 0.452 4.247 19.245 26.413 51.591 35.599 51.591h2.711l-1.506-2.319c-2.711-4.277-13.673-24.606-13.673-39.032 0-8.975 4.397-13.312 13.372-13.312 12.469 0 21.384 11.505 24.877 24.004-4.066-2.801-7.62-3.373-11.414-3.373-3.042-0.030-5.572 0.603-4.066 6.596zM377.495 191.744c-6.656-5.512-15.721-0.542-15.872 4.517-0.12 5.541 4.759 15.39 10.812 27.196 4.759 9.367 10.933 15.751 10.361 20.48-0.783 6.686-9.969 11.927-15.692 11.927-0.512 0-0.994-0.030-1.506-0.090-0.271 0-0.482-0.030-0.692-0.030-3.132-8.072-7.168-16.805-11.084-25.299-6.988-15.149-13.613-29.485-13.613-36.984 0-9.397 6.355-19.577 16.625-19.577 10.722 0.542 16.324 5.211 20.661 17.86zM380.596 266.135c2.771 0 6.084 0.301 9.728 0.844 4.728 5.752 7.108 10.601 7.108 14.366 0 3.885-6.084 6.024-23.612 6.174-5.541-5.602-5.24-9.638-5.24-14.125 0.030-4.849 3.976-7.259 12.017-7.259zM493.598 263.183l-0.904-0.030-0.12-0.844c-1.897-14.456-31.594-63.367-37.105-49.483-1.235 3.132 2.289 11.505 5.271 18.462 3.404 7.951 7.228 16.956 6.837 22.016-0.091 1.144-0.482 2.108-1.054 2.952-0.332 0.723-0.964 1.536-2.108 2.259-0.933 0.603-2.168 1.054-3.704 1.445-3.524 1.024-7.83 1.205-11.324 1.084-3.976 0.060-8.342-0.091-12.8-0.362l0.271 0.813c4.247 13.854 15.541 26.774 18.733 28.732 7.861 4.849 18.372 6.024 20.721-4.699 1.988 4.517 2.56 5.813 1.988 9.216-1.687 10.391-9.397 16.022-21.534 16.685-22.046 1.144-37.798-31.111-45.357-49.573l-0.18-0.422-0.361-0.271c-2.139-1.506-6.114-2.5-8.493-3.132-0.512-0.12-0.904-0.241-1.175-0.332-4.608-1.656-5.572-6.144-5.662-8.162-0.12-3.343 3.885-5.813 5.662-8.855 0 0-7.771-19.306-13.402-31.021-8.825-18.281-22.86-49.243-23.1-56.139-0.332-8.403 11.926-16.173 18.613-17.046 2.048 14.035 41.652 103.484 41.652 103.484 1.416 2.168 3.825 5.18 7.62 7.469 3.554 1.446 6.264 1.928 8.342 1.868 0.512-0.12 0.904-0.271 1.265-0.482 1.084-0.602 1.777-1.536 2.168-2.47-1.356-4.819-3.132-9.909-4.909-14.908-3.855-10.903-8.915-27.708-8.252-35.569 0.421-5.029 0.873-7.409 3.554-10.18 8.041-8.252 28.19 5.903 34.183 13.974l0.994-0.421c-7.168-20.42-18.191-34.244-29.967-34.605-15.692-0.542-22.227 9.608-22.227 9.608s-2.651-9.758 7.921-20.57c4.728-4.819 11.746-6.807 18.914-6.264 0.482 0.030 0.964 0.091 1.445 0.12 28.913 3.132 41.502 35.93 51.652 66.771 1.416 4.337 6.295 15.812 7.74 19.938 0.813 2.228 1.837 4.638 2.801 6.957l0.12 0.271c2.289 5.572 3.795 9.337 3.675 11.234-0.632 7.138-9.728 10.692-18.402 10.481z" />
+<glyph unicode="&#xe6d2;" d="M283.136 440.726c-29.997 0-63.156-5.090-99.539-16.444-288.738-90.233-160.106-289.672-122.278-309.369 64.18-33.28-34.666-107.64-34.666-107.64s84.841 24.817 192.874 35.9c129.868 13.252 275.727 32.166 288.889 104.418 20.601 113.272-46.954 293.135-225.28 293.135zM478.78 152.983c-9.849-54.061-180.375-71.469-262.325-79.812-40.749-4.187-78.095-10.24-109.147-16.204 4.246 10.572 6.505 21.654 5.572 32.918-1.054 12.589-7.349 36.020-37.466 51.682-11.204 6.686-51.441 58.73-44.544 116.796 8.855 74.361 92.823 115.652 161.702 137.186 32.045 9.999 62.524 15.059 90.564 15.059 59.362 0 107.851-22.046 144.173-65.566 49.002-58.73 61.169-138.782 51.471-192.060zM120.471 284.236c0 16.595 13.492 30.118 30.117 30.118s30.118-13.523 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.523-30.118 30.118zM271.059 299.294c0 16.655 13.462 30.118 30.118 30.118 16.625 0 30.118-13.463 30.118-30.118 0-16.595-13.493-30.117-30.118-30.117-16.655 0-30.118 13.523-30.118 30.117zM400.565 224c-166.912-184.982-289.13-28.612-289.13-28.612 96.376-86.257 289.13 28.612 289.13 28.612z" />
+<glyph unicode="&#xe6d3;" d="M183.597 424.283c-288.708-90.233-160.106-289.672-122.248-309.369 64.18-33.28-34.696-107.64-34.696-107.64s84.841 24.817 192.874 35.9c129.867 13.252 275.757 32.166 288.889 104.418 24.064 132.307-72.192 355.599-324.819 276.691zM301.176 329.412c16.625 0 30.118-13.463 30.118-30.118 0-16.595-13.493-30.117-30.118-30.117-16.655 0-30.118 13.523-30.118 30.117 0 16.655 13.462 30.118 30.118 30.118zM150.588 314.353c16.625 0 30.118-13.523 30.118-30.118s-13.493-30.118-30.118-30.118-30.118 13.523-30.118 30.118 13.493 30.118 30.118 30.118zM111.436 195.388c96.377-86.257 289.13 28.612 289.13 28.612-166.912-184.982-289.13-28.612-289.13-28.612z" />
+<glyph unicode="&#xe6d4;" d="M403.094 389.647c-28.22 55.085-84.48 90.353-147.095 90.353s-118.844-35.238-147.095-90.353h-108.906v-391.529h512v391.529h-108.906zM256 449.882c45.839 0 87.552-23.1 112.399-60.236h-224.798c24.877 37.105 66.56 60.236 112.399 60.236zM481.882 28.236h-451.764v331.294h451.764v-331.294zM240.941 178.824h-60.236v30.118h60.236v60.236h30.117v-60.236h60.236v-30.118h-60.236v-60.236h-30.118v60.236z" />
+<glyph unicode="&#xe6d5;" d="M512 121.058c0 31.503-25.66 57.163-57.133 57.163h-132.397l37.948 136.042 0.572 106.014c-0.060 32.377-27.558 59.724-60.115 59.724h-90.082c-32.618 0-60.145-27.347-60.145-59.724v-101.225l38.49-140.83h-132.006c-31.473 0-57.133-25.66-57.133-57.163v-122.94h30.117v-30.118h451.764v30.118h30.118v122.94zM481.882 28.236h-451.764v92.822c0 14.908 12.108 27.046 27.016 27.046h171.58l-47.947 172.996v99.177c0 15.781 14.035 29.606 30.028 29.606h90.082c15.932 0 29.937-13.824 29.937-29.606v-99.9l-48.007-172.273h172.062c14.908 0 27.015-12.137 27.015-27.046v-92.822z" />
+<glyph unicode="&#xe6d6;" d="M161.25 303.692l-79.722-79.692 79.692-79.692-21.293-21.293-100.984 100.985 101.014 101.014 21.293-21.323zM372.074 325.014l-21.293-21.293 79.692-79.721-79.692-79.692 21.293-21.293 100.984 100.985-100.985 101.014zM240.941-32h30.117v512h-30.118v-512z" />
+<glyph unicode="&#xe6d7;" d="M498.779 364.228l-42.255 42.285c-16.956 17.017-46.803 17.077-63.88 0l-379.121-379.241 163.66 0.091 65.747 65.295 24.817-23.341 231.032 231.063c8.524 8.493 13.221 19.847 13.221 31.924s-4.699 23.402-13.221 31.925zM204.077 175.33l24.817 24.817 63.518-63.518-24.787-24.847-63.548 63.548zM164.774 57.479l-78.547-0.030 96.557 96.588 39.484-39.484-57.494-57.073zM477.485 321.642l-163.75-163.75-63.548 63.548 163.75 163.78c2.831 2.861 6.596 4.427 10.632 4.427s7.8-1.566 10.661-4.397l42.255-42.285c5.873-5.903 5.873-15.42 0-21.324z" />
+<glyph unicode="&#xe6d8;" d="M0.783 449.882h90.353v-30.118h-60.236v-391.529h60.236v-30.118h-90.353v451.764zM422.43 449.882v-30.118h60.236v-391.529h-60.236v-30.118h90.353v451.764h-90.353zM268.348 240.053c-33.581 13.041-48.399 24.214-48.399 46.983 0 16.625 12.649 36.473 45.869 36.473 22.016 0 38.279-7.198 46.231-11.565l8.674 25.66c-10.812 6.144-28.913 11.926-53.82 11.926-47.315 0-78.728-28.19-78.728-66.108 0-34.334 24.546-54.905 64.301-69 32.858-12.62 45.869-25.63 45.869-48.369 0-24.546-18.793-41.563-50.929-41.563-21.684 0-42.255 7.228-56.35 15.902l-7.951-26.383c13.011-8.644 38.641-15.541 62.102-15.541 57.435 0 85.263 32.497 85.263 70.084 0.030 35.78-20.962 55.627-62.132 71.5z" />
+<glyph unicode="&#xe6d9;" d="M457.999 224l-101.014-101.014-21.293 21.293 79.721 79.721-79.692 79.692 21.293 21.293 100.985-100.984zM210.823-32h30.118v512h-30.118v-512z" />
+<glyph unicode="&#xe6da;" d="M176.309 303.692l-79.722-79.692 79.692-79.692-21.293-21.293-100.984 100.985 101.014 101.014 21.293-21.323zM271.059 480v-512h30.118v512h-30.118z" />
+<glyph unicode="&#xe6db;" d="M0 471.175v-503.175h503.175l-503.175 503.175zM30.117 398.471l89.058-89.058-19.727-19.727 21.293-21.293 19.727 19.727 21.353-21.353-19.727-19.757 21.293-21.293 19.727 19.727 21.383-21.353-19.727-19.727 21.293-21.293 19.727 19.727 21.383-21.384-19.727-19.727 21.293-21.293 19.727 19.727 21.353-21.353-19.727-19.727 21.293-21.293 19.727 19.727 21.384-21.384-19.727-19.727 21.293-21.293 19.727 19.727 76.68-76.68h-400.354v400.354zM60.236 28.236h232.116l-232.117 232.116v-232.116zM90.353 187.648l129.295-129.295h-129.295v129.295z" />
+<glyph unicode="&#xe6dc;" d="M60.236 480v-509.048l61.078 74.722 45.267-56.621 45.207 56.471 45.146-56.471 45.176 56.471 45.176-56.471 45.147 56.471 59.332-74.089v508.567h-391.529zM421.647 57.269l-29.214 36.472-45.147-56.471-45.176 56.471-45.176-56.471-45.147 56.471-45.207-56.471-45.026 56.32-31.202-38.189v394.481h331.294v-392.613zM331.204 359.529h-180.706v30.118h180.706v-30.118zM270.969 239.059h-120.471v30.118h120.471v-30.118zM360.749 299.294h-210.823v30.118h210.823v-30.118zM150.588 178.824h210.823v-30.118h-210.823v30.118z" />
+<glyph unicode="&#xe6dd;" d="M240.941 133.647h30.117v-165.647h-30.118v165.647zM421.647 214.964v-66.259h-331.294v66.259l32.948 14.667 33.31 190.133-12.921 23.462-20.209 36.773h265.036l-20.239-36.773-12.89-23.462 33.31-190.103 32.949-14.697zM391.529 195.418l-29.696 13.252-2.771 15.781-35.178 200.553 5.12 9.307 8.584 15.571h-163.178l13.703-24.908-1.807-10.421-36.141-205.884-29.696-13.252v-16.595h271.059v16.595z" />
+<glyph unicode="&#xe6de;" d="M162.756 152.049l21.293-21.293-158.358-158.328-21.293 21.293 158.358 158.328zM512 292.608l-66.018-19.185-110.893-157.997 12.921-33.671-46.833-46.833-234.255 234.255 46.863 46.863 33.672-12.921 157.967 110.893 7.469 25.72 11.685 40.267 187.422-187.392zM454.716 307.305l-115.411 115.38-4.94-17.076-2.952-10.18-179.803-126.193-30.388 11.655-11.716-11.716 191.668-191.668 11.716 11.746-5.873 15.42-5.752 14.969 9.246 13.132 116.947 166.671 10.18 2.952 17.077 4.909z" />
+<glyph unicode="&#xe6df;" d="M285.877 480h-59.754c-24.907 0-45.177-20.269-45.177-45.176v-320.964l75.927-149.263 74.21 149.353v320.873c-0.030 24.908-20.3 45.176-45.207 45.176zM226.124 449.882h59.754c8.283 0 15.059-6.776 15.059-15.059v-30.69h-89.871v30.69c0 8.283 6.746 15.059 15.059 15.059zM243.291 57.721l-28.13 55.266h81.769l-27.437-55.266h-26.202zM211.065 143.074v169.773h89.871v-169.773h-89.871zM211.065 342.964v31.051h89.871v-31.051h-89.871z" />
+<glyph unicode="&#xe6e0;" d="M256 464.941c-132.849 0-240.941-108.092-240.941-240.941 0-128.933 100.954-234.526 229.828-240.399l38.791-1.777-82.010 82.010c-8.524 8.524-13.221 19.877-13.221 31.955s4.698 23.401 13.221 31.955c17.047 17.046 46.833 17.046 63.88 0l112.007-112.007 10.24 6.716c68.367 44.755 109.147 120.109 109.147 201.548 0 132.849-108.092 240.941-240.941 240.941zM381.289 54.588l-94.419 94.419c-28.401 28.431-78.065 28.431-106.466 0-14.215-14.216-22.046-33.13-22.046-53.248s7.831-39.033 22.046-53.248l22.317-22.317c-91.136 23.582-157.546 106.014-157.546 203.806 0 116.254 94.57 210.823 210.823 210.823s210.823-94.57 210.823-210.823c0-67.162-31.744-129.656-85.534-169.412zM346.353 284.236c-33.22 0-60.236-27.015-60.236-60.236s27.015-60.236 60.236-60.236 60.236 27.015 60.236 60.236-27.015 60.236-60.236 60.236zM346.353 193.882c-16.595 0-30.118 13.523-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM256 299.294c-24.938 0-45.177 20.209-45.177 45.177s20.239 45.177 45.177 45.177c24.967 0 45.176-20.209 45.176-45.177s-20.209-45.177-45.177-45.177zM173.177 302.577c0-16.625-13.493-30.118-30.118-30.118s-30.118 13.493-30.118 30.118 13.493 30.118 30.118 30.118 30.118-13.463 30.118-30.118z" />
+<glyph unicode="&#xe6e1;" d="M60.236 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.985-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM60.236 208.941c-16.595 0-30.117 13.493-30.117 30.118s13.523 30.118 30.117 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.117-30.118zM256 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM256 208.941c-16.595 0-30.118 13.493-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.118-30.118zM451.764 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM451.764 208.941c-16.595 0-30.118 13.493-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.118-30.118z" />
+<glyph unicode="&#xe6e2;" d="M120.471 239.059c0-33.25-26.986-60.236-60.236-60.236s-60.236 26.986-60.236 60.236 26.985 60.236 60.236 60.236 60.236-26.986 60.236-60.236zM256 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM451.764 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236z" />
+<glyph unicode="&#xe6e3;" d="M349.786 268.544c20.721 22.709 33.732 52.615 33.732 85.745 0 70.325-57.193 127.518-127.518 127.518s-127.518-57.193-127.518-127.518c0-33.13 13.011-63.036 33.732-85.745l34.244-240.308h44.484v-59.754h30.118v59.754h44.484l34.244 240.308zM180.706 415.337v-55.808h30.118v80.535c9.306 4.94 19.365 8.433 30.118 10.119v-120.772h30.117v120.772c10.752-1.686 20.812-5.18 30.118-10.12v-80.534h30.118v55.808c13.613-16.775 22.106-37.828 22.106-61.018 0-53.73-43.7-97.43-97.4-97.43s-97.4 43.671-97.4 97.4c0 23.221 8.493 44.273 22.107 61.048zM222.6 58.353l-26.203 183.838c17.86-9.517 37.948-15.451 59.603-15.451s41.743 5.933 59.603 15.481l-26.202-183.868h-66.801z" />
+<glyph unicode="&#xe6e4;" d="M331.294 480v-304.851c0-40.026-33.792-72.553-75.294-72.553s-75.294 32.527-75.294 72.553v304.851h-150.588v-314.188c0-128.482 116.374-197.813 225.882-197.813s225.882 69.331 225.882 197.813v314.188h-150.588zM451.764 449.882v-90.353h-90.353v90.353h90.353zM150.588 449.882v-90.353h-90.353v90.353h90.353zM256-1.882c-78.697 0-195.764 44.664-195.764 167.695v163.599h90.353v-154.262c0-56.621 47.285-102.671 105.412-102.671s105.412 46.050 105.412 102.671v154.262h90.353v-163.599c0-123.031-117.067-167.695-195.764-167.695z" />
+<glyph unicode="&#xe6e5;" d="M512 299.294v-30.117h-512v30.117h512zM0 178.824h512v30.118h-512v-30.118z" />
+<glyph unicode="&#xe6e6;" d="M0 239.119h15.059v-30.117h-15.059v30.118zM71.77 208.971h28.34v30.118h-28.34v-30.118zM156.792 208.971h28.34v30.118h-28.34v-30.118zM326.897 208.941h28.341v30.118h-28.341v-30.118zM241.845 208.971h28.311v30.088h-28.31v-30.088zM411.919 208.941h28.341v30.118h-28.341v-30.118zM496.941 239.059v-30.117h15.059v30.118h-15.059z" />
+<glyph unicode="&#xe6e7;" d="M0 239.059h120.471v-30.117h-120.471v30.118zM195.764 208.941h120.471v30.118h-120.471v-30.118zM391.529 239.059v-30.117h120.471v30.118h-120.471z" />
+<glyph unicode="&#xe6e8;" d="M0 480v-512h512v512h-512zM481.882-1.882h-451.764v451.764h451.764v-451.764z" />
+<glyph unicode="&#xe6e9;" d="M0 480v-512h512v512h-512zM481.882-1.882h-451.764v451.764h451.764v-451.764zM90.353 239.059h30.117v-30.117h-30.118v30.118zM90.353 359.529h30.117v-30.117h-30.118v30.117zM90.353 178.824h30.117v-30.118h-30.118v30.118zM90.353 299.294h30.117v-30.117h-30.118v30.117zM90.353 419.764h30.117v-30.118h-30.118v30.118zM90.353 58.353h30.117v-30.118h-30.118v30.118zM90.353 118.588h30.117v-30.118h-30.118v30.118zM391.529 419.764h30.118v-30.118h-30.118v30.118zM391.529 299.294h30.118v-30.117h-30.118v30.117zM391.529 359.529h30.118v-30.117h-30.118v30.117zM391.529 239.059h30.118v-30.117h-30.118v30.118zM391.529 178.824h30.118v-30.118h-30.118v30.118zM391.529 118.588h30.118v-30.118h-30.118v30.118zM391.529 58.353h30.118v-30.118h-30.118v30.118z" />
+<glyph unicode="&#xe6ea;" d="M60.236-1.882h30.118v-30.118h-30.117v30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM421.647 389.647h30.118v30.118h-30.118v-30.118zM421.647 329.412h30.118v30.117h-30.118v-30.117zM421.647 88.471h30.118v30.118h-30.118v-30.118zM421.647 269.177h30.118v30.117h-30.118v-30.117zM421.647 208.941h30.118v30.118h-30.118v-30.118zM421.647 28.236h30.118v30.118h-30.118v-30.118zM421.647 148.706h30.118v30.118h-30.118v-30.118zM421.647 480v-30.118h30.118v30.118h-30.118zM361.412 449.882h30.118v30.118h-30.118v-30.118zM180.706 449.882h30.118v30.118h-30.118v-30.118zM240.941 449.882h30.117v30.118h-30.118v-30.118zM301.176 449.882h30.118v30.118h-30.118v-30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM60.236 449.882h30.118v30.118h-30.117v-30.118zM60.236 88.471h30.118v30.118h-30.117v-30.118zM60.236 28.236h30.118v30.118h-30.117v-30.118zM60.236 148.706h30.118v30.118h-30.117v-30.118zM60.236 389.647h30.118v30.118h-30.117v-30.118zM60.236 329.412h30.118v30.117h-30.117v-30.117zM60.236 269.177h30.118v30.117h-30.117v-30.117zM60.236 208.941h30.118v30.118h-30.117v-30.118z" />
+<glyph unicode="&#xe6eb;" d="M210.823 389.647v30.118h-210.823v-421.647h512v391.529h-301.176zM331.294 359.529v-30.117h-120.471v30.117h120.471zM481.882 28.236h-451.764v361.412h150.588v-90.353h301.176v-271.059zM361.412 329.412v30.117h120.471v-30.117h-120.471z" />
+<glyph unicode="&#xe6ec;" d="M361.412 419.764h-361.412v-421.647h512v421.647h-150.588zM481.882 389.647v-60.236h-120.471v60.236h120.471zM331.294 389.647v-60.236h-150.588v60.236h150.588zM30.117 389.647h120.47v-60.236h-120.471v60.236zM481.882 28.236h-451.764v271.059h451.764v-271.059z" />
+<glyph unicode="&#xe6ed;" d="M180.706 449.882v-30.118h-180.706v-120.471h30.117v-120.47h150.588v-181.248h331.294v452.307h-331.294zM60.236 299.294h120.471v-30.117h-120.471v30.117zM60.236 208.941v30.118h120.471v-30.118h-120.471zM481.882 27.693h-271.059v301.719h-180.706v60.236h180.706v30.118h271.059v-392.072z" />
+<glyph unicode="&#xe6ee;" d="M210.823 419.764v30.118h-210.823v-120.38h30.117v90.262h150.588v-90.353h331.294v90.353h-301.176zM210.823 389.647h120.47v-30.118h-120.471v30.118zM361.412 359.529v30.118h120.471v-30.118h-120.471z" />
+<glyph unicode="&#xe6ef;" d="M0 449.882v-421.647h512v421.647h-512zM481.882 58.353h-451.764v361.412h451.764v-361.412zM139.927 168.162l-70.867 70.897 70.897 70.897 21.293-21.293-49.604-49.604 49.574-49.574-21.293-21.324zM350.75 189.485l49.604 49.573-49.574 49.573 21.293 21.293 70.867-70.867-70.897-70.897-21.293 21.324z" />
+<glyph unicode="&#xe6f0;" d="M60.236 58.353h391.529v331.294h-391.529v-331.294zM90.353 359.529h331.294v-271.059h-331.294v271.059zM481.882 343.537h30.118v-239.074h-30.118v239.074zM0 343.537h30.117v-239.074h-30.117v239.074z" />
+<glyph unicode="&#xe6f1;" d="M512 480v-512h-150.588v512h150.588zM271.059-32h30.118v30.118h-30.118v-30.118zM217.54-32h26.774v30.118h-26.774v-30.118zM56.892-32h26.774v30.118h-26.775v-30.118zM110.442-32h26.775v30.118h-26.775v-30.118zM163.99-32h26.774v30.118h-26.774v-30.118zM0-32h30.117v30.118h-30.117v-30.118zM0 208.941h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 269.177h30.117v30.117h-30.117v-30.117zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 449.882h30.117v30.118h-30.117v-30.118zM244.284 480h-26.774v-30.118h26.774v30.118zM190.735 480h-26.774v-30.118h26.774v30.118zM83.636 480h-26.745v-30.118h26.775v30.118zM137.186 480h-26.745v-30.118h26.775v30.118zM271.059 449.882h30.118v30.118h-30.118v-30.118zM271.059 28.236h30.118v30.118h-30.118v-30.118zM271.059 88.471h30.118v30.118h-30.118v-30.118zM271.059 208.941h30.118v30.118h-30.118v-30.118zM271.059 148.706h30.118v30.118h-30.118v-30.118zM271.059 329.412h30.118v30.117h-30.118v-30.117zM271.059 269.177h30.118v30.117h-30.118v-30.117zM271.059 389.647h30.118v30.118h-30.118v-30.118z" />
+<glyph unicode="&#xe6f2;" d="M0-1.882h30.117v-30.118h-30.117v30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM60.236 449.882h30.118v30.118h-30.117v-30.118zM361.412 449.882h30.118v30.118h-30.118v-30.118zM301.176 449.882h30.118v30.118h-30.118v-30.118zM180.706 449.882h30.118v30.118h-30.118v-30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM240.941 449.882h30.117v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 269.177h30.117v30.117h-30.117v-30.117z" />
+<glyph unicode="&#xe6f3;" d="M0 480h150.588v-512h-150.588v512zM210.823-32h30.118v30.118h-30.118v-30.118zM428.333-32h26.774v30.118h-26.774v-30.118zM374.784-32h26.774v30.118h-26.774v-30.118zM267.716-32h26.774v30.118h-26.774v-30.118zM321.265-32h26.774v30.118h-26.774v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM428.363 449.882h26.774v30.118h-26.774v-30.118zM374.814 449.882h26.774v30.118h-26.774v-30.118zM321.265 449.882h26.774v30.118h-26.774v-30.118zM267.716 449.882h26.774v30.118h-26.774v-30.118zM210.823 449.882h30.118v30.118h-30.118v-30.118zM210.823 28.236h30.118v30.118h-30.118v-30.118zM210.823 88.471h30.118v30.118h-30.118v-30.118zM210.823 269.177h30.118v30.117h-30.118v-30.117zM210.823 148.706h30.118v30.118h-30.118v-30.118zM210.823 329.412h30.118v30.117h-30.118v-30.117zM210.823 389.647h30.118v30.118h-30.118v-30.118zM210.823 208.941h30.118v30.118h-30.118v-30.118z" />
+<glyph unicode="&#xe6f4;" d="M0.632 449.521v-451.764h512v451.764h-512zM245.067 223.729l-214.317-186.639v373.82l214.317-187.181zM43.941 419.404h425.803l-213.203-185.675-212.601 185.675zM256.512 213.73l212.811-185.856h-426.225l213.413 185.856zM267.987 223.729l214.528 186.85v-374.212l-214.528 187.362z" />
+<glyph unicode="&#xe6f5;" d="M0 269.177v-90.353h391.529v90.353h-391.529zM240.941 239.059v-30.117h-90.353v30.118h90.353zM30.117 239.059h90.353v-30.117h-90.353v30.118zM361.412 208.941h-90.353v30.118h90.353v-30.118z" />
+<glyph unicode="&#xe6f6;" d="M90.353 449.882v-90.353h331.294v90.353h-331.294zM391.529 389.647h-271.059v30.118h271.059v-30.118zM90.353 239.059h331.294v90.353h-331.294v-90.353zM120.471 299.294h271.059v-30.117h-271.059v30.117zM90.353 118.678h331.294v90.353h-331.294v-90.353zM120.471 178.914h271.059v-30.118h-271.059v30.118zM90.353-1.792h331.294v90.353h-331.294v-90.353zM120.471 58.443h271.059v-30.118h-271.059v30.118z" />
+<glyph unicode="&#xe6f7;" d="M0 178.824h150.588v90.353h-150.588v-90.353zM30.117 239.059h90.353v-30.117h-90.353v30.118zM180.706 178.824h150.588v90.353h-150.588v-90.353zM210.823 239.059h90.353v-30.117h-90.353v30.118zM361.412 269.177v-90.353h150.588v90.353h-150.588zM481.882 208.941h-90.353v30.118h90.353v-30.118z" />
+<glyph unicode="&#xe6f8;" d="M0 269.177v-90.353h512v90.353h-512zM271.059 239.059h90.353v-30.117h-90.353v30.118zM240.941 208.941h-90.353v30.118h90.353v-30.118zM30.117 239.059h90.353v-30.117h-90.353v30.118zM481.882 208.941h-90.353v30.118h90.353v-30.118z" />
+<glyph unicode="&#xe6f9;" d="M60.236 88.471h451.764v-30.118h-451.764v30.118zM210.823-1.671h301.177v30.118h-301.176v-30.118zM512 449.882v-331.294h-512v331.294h512zM481.882 419.764h-451.764v-271.059h451.764v271.059z" />
+<glyph unicode="&#xe6fa;" d="M240.941 359.529v-271.059h271.059v271.059h-271.059zM481.882 118.588h-210.824v210.824h210.823v-210.824zM35.358 359.529h175.465v-30.117h-175.465v30.117zM105.502 239.179h105.322v-30.117h-105.322v30.118zM210.553 269.236h-210.553v30.118h210.553v-30.118zM0.271 179.034h210.553v-30.118h-210.553v30.118zM35.358 118.588h175.465v-30.118h-175.465v30.118z" />
+<glyph unicode="&#xe6fb;" d="M451.764 118.588h-391.529v30.118h391.529v-30.118zM361.412 88.682h-301.176v-30.118h301.176v30.118zM512 449.882v-451.764h-512v451.764h512zM481.882 419.764h-451.764v-391.529h451.764v391.529z" />
+<glyph unicode="&#xe6fc;" d="M0 419.764v-361.412h512v361.412h-512zM30.117 178.522v211.125h451.764v-211.125h-451.764z" />
+<glyph unicode="&#xe6fd;" d="M361.412 208.941h-301.176v30.118h301.176v-30.118zM361.412 178.824h-301.176v-30.118h301.176v30.118zM512 449.882v-451.764h-512v451.764h512zM481.882 419.764h-451.764v-391.529h451.764v391.529z" />
+<glyph unicode="&#xe6fe;" d="M0 88.471h451.764v-30.118h-451.764v30.118zM0-1.671h301.176v30.118h-301.176v-30.118zM512 449.882v-331.294h-512v331.294h512zM481.882 419.764h-451.764v-271.059h451.764v271.059z" />
+<glyph unicode="&#xe6ff;" d="M301.176 359.529h175.465v-30.117h-175.466v30.117zM301.176 239.179h105.322v-30.117h-105.322v30.118zM301.447 299.355h210.553v-30.118h-210.553v30.118zM301.176 179.034h210.553v-30.118h-210.553v30.118zM301.176 118.588h175.465v-30.118h-175.466v30.118zM0 88.471h271.059v271.059h-271.059v-271.059zM30.117 329.412h210.823v-210.824h-210.823v210.824z" />
+<glyph unicode="&#xe700;" d="M30.117 88.471h451.764v-30.118h-451.764v30.118zM120.471-1.671h271.059v30.118h-271.059v-30.118zM512 449.882v-331.294h-512v331.294h512zM481.882 419.764h-451.764v-271.059h451.764v271.059z" />
+<glyph unicode="&#xe701;" d="M30.117 359.529v-180.706h451.764v180.706h-451.764zM451.764 208.941h-391.529v120.471h391.529v-120.471zM421.647 148.706v-30.118h-331.294v30.118h331.294zM60.236 88.471h391.529v-30.118h-391.529v30.118z" />
+<glyph unicode="&#xe702;" d="M451.764 359.529h-271.059v30.118h271.059v-30.118zM180.706 329.412v-30.118h331.294v30.118h-331.294zM0 419.764h150.588v-150.588h-150.588v150.588zM30.117 299.294h90.353v90.353h-90.353v-90.353zM451.764 178.824h-271.059v-30.118h271.059v30.118zM180.706 88.471h331.294v30.118h-331.294v-30.118zM0 208.941h150.588v-150.588h-150.588v150.588zM30.117 88.471h90.353v90.353h-90.353v-90.353z" />
+<glyph unicode="&#xe703;" d="M451.764 329.412h-271.059v30.117h271.059v-30.117zM180.706 299.294v-30.117h331.294v30.117h-331.294zM0 239.059h150.588v150.588h-150.588v-150.588zM451.764 148.706h-271.059v-30.118h271.059v30.118zM180.706 58.353h331.294v30.118h-331.294v-30.118zM0 28.236h150.588v150.588h-150.588v-150.588z" />
+<glyph unicode="&#xe704;" d="M421.647 329.412h-421.647v60.236h421.647v-60.236zM0 299.294v-30.117h512v30.117h-512zM421.647 178.824h-421.647v-60.236h421.647v60.236zM0 58.353h512v30.118h-512v-30.118z" />
+<glyph unicode="&#xe705;" d="M496.851 329.412h-75.204v30.117h75.204v-30.117zM466.793 239.179h-45.147v-30.117h45.147v30.118zM421.767 299.355v-30.118h90.233v30.118h-90.233zM421.647 148.916h90.233v30.118h-90.233v-30.118zM421.647 88.471h75.204v30.118h-75.204v-30.118zM0 359.529h391.529v-271.059h-391.529v271.059zM30.117 118.588h331.294v210.824h-331.294v-210.824z" />
+<glyph unicode="&#xe706;" d="M512 239.059v-30.117h-512v30.118h512z" />
+<glyph unicode="&#xe707;" d="M30.117 359.529h90.353v90.353h-90.353v-90.353zM60.236 419.764h30.118v-30.118h-30.117v30.118zM150.588 359.529h90.353v90.353h-90.353v-90.353zM180.706 419.764h30.118v-30.118h-30.118v30.118zM271.059 359.529h90.353v90.353h-90.353v-90.353zM301.176 419.764h30.118v-30.118h-30.118v30.118zM391.529 449.882v-90.353h90.353v90.353h-90.353zM451.764 389.647h-30.118v30.118h30.118v-30.118zM30.117 239.059h90.353v90.353h-90.353v-90.353zM60.236 299.294h30.118v-30.117h-30.117v30.117zM150.588 239.059h90.353v90.353h-90.353v-90.353zM180.706 299.294h30.118v-30.117h-30.118v30.117zM271.059 239.059h90.353v90.353h-90.353v-90.353zM301.176 299.294h30.118v-30.117h-30.118v30.117zM391.529 239.059h90.353v90.353h-90.353v-90.353zM421.647 299.294h30.118v-30.117h-30.118v30.117zM30.117 118.588h90.353v90.353h-90.353v-90.353zM60.236 178.824h30.118v-30.118h-30.117v30.118zM150.588 118.588h90.353v90.353h-90.353v-90.353zM180.706 178.824h30.118v-30.118h-30.118v30.118zM271.059 118.588h90.353v90.353h-90.353v-90.353zM301.176 178.824h30.118v-30.118h-30.118v30.118zM391.529 118.588h90.353v90.353h-90.353v-90.353zM421.647 178.824h30.118v-30.118h-30.118v30.118zM30.117-1.882h90.353v90.353h-90.353v-90.353zM60.236 58.353h30.118v-30.118h-30.117v30.118zM150.588-1.882h90.353v90.353h-90.353v-90.353zM180.706 58.353h30.118v-30.118h-30.118v30.118zM271.059-1.882h90.353v90.353h-90.353v-90.353zM301.176 58.353h30.118v-30.118h-30.118v30.118zM391.529-1.882h90.353v90.353h-90.353v-90.353zM421.647 58.353h30.118v-30.118h-30.118v30.118z" />
+<glyph unicode="&#xe708;" d="M0 329.412h150.588v150.588h-150.588v-150.588zM30.117 449.882h90.353v-90.353h-90.353v90.353zM180.706 329.412h150.588v150.588h-150.588v-150.588zM210.823 449.882h90.353v-90.353h-90.353v90.353zM361.412 480v-150.588h150.588v150.588h-150.588zM481.882 359.529h-90.353v90.353h90.353v-90.353zM0 148.706h150.588v150.588h-150.588v-150.588zM30.117 269.177h90.353v-90.353h-90.353v90.353zM180.706 148.706h150.588v150.588h-150.588v-150.588zM210.823 269.177h90.353v-90.353h-90.353v90.353zM361.412 148.706h150.588v150.588h-150.588v-150.588zM391.529 269.177h90.353v-90.353h-90.353v90.353zM0-32h150.588v150.588h-150.588v-150.588zM30.117 88.471h90.353v-90.353h-90.353v90.353zM180.706-32h150.588v150.588h-150.588v-150.588zM210.823 88.471h90.353v-90.353h-90.353v90.353zM361.412-32h150.588v150.588h-150.588v-150.588zM391.529 88.471h90.353v-90.353h-90.353v90.353z" />
+<glyph unicode="&#xe709;" d="M0 269.177h210.823v210.823h-210.823v-210.823zM30.117 449.882h150.588v-150.588h-150.588v150.588zM271.059 480v-210.823h210.824v210.823h-210.823zM451.764 299.294h-150.588v150.588h150.588v-150.588zM0-1.882h210.823v210.824h-210.823v-210.823zM30.117 178.824h150.588v-150.588h-150.588v150.588zM271.059-1.882h210.824v210.824h-210.823v-210.823zM301.176 178.824h150.588v-150.588h-150.588v150.588z" />
+<glyph unicode="&#xe70a;" d="M0 419.764h90.353v-90.353h-90.353v90.353zM271.059 329.412h90.353v90.353h-90.353v-90.353zM0 88.471h90.353v90.353h-90.353v-90.353zM271.059 88.471h90.353v90.353h-90.353v-90.353zM120.471 389.647h120.471v30.118h-120.471v-30.118zM120.471 329.412h120.471v30.117h-120.471v-30.117zM391.529 419.764v-30.118h120.471v30.118h-120.471zM391.529 329.412h120.471v30.117h-120.471v-30.117zM210.823 299.324h-90.353v-30.118h90.353v30.118zM481.882 299.324h-90.353v-30.118h90.353v30.118zM120.471 148.706h120.471v30.118h-120.471v-30.118zM120.471 88.471h120.471v30.118h-120.471v-30.118zM391.529 148.706h120.471v30.118h-120.471v-30.118zM391.529 88.471h120.471v30.118h-120.471v-30.118zM120.471 28.265h90.353v30.118h-90.353v-30.118zM391.529 28.265h90.353v30.118h-90.353v-30.118z" />
+<glyph unicode="&#xe70b;" d="M0 389.647v-331.294h512v331.294h-512zM481.882 88.471h-451.764v271.059h451.764v-271.059zM421.647 239.059h-301.176v30.118h301.176v-30.118zM271.059 208.941h150.588v-60.236h-150.588v60.236z" />
+<glyph unicode="&#xe70c;" d="M0 389.647v-331.294h512v331.294h-512zM481.882 88.471h-451.764v271.059h451.764v-271.059zM391.529 239.059h-301.176v30.118h301.176v-30.118zM240.941 148.706h-150.588v60.236h150.588v-60.236z" />
+<glyph unicode="&#xe70d;" d="M421.647 239.059h-331.294v30.118h331.294v-30.118zM512 389.647v-331.294h-512v331.294h512zM481.882 359.529h-451.764v-271.059h451.764v271.059zM191.458 148.706h129.084v60.236h-129.084v-60.236z" />
+<glyph unicode="&#xe70e;" d="M271.059 269.177h-210.823v30.117h210.823v-30.117zM120.26 208.941h150.588v30.118h-150.588v-30.118zM512 389.647v-301.176h-512v301.176h512zM481.882 359.529h-451.764v-240.941h451.764v240.941zM451.764 299.294h-150.588v-60.235h150.588v60.235z" />
+<glyph unicode="&#xe70f;" d="M451.764 269.177h-210.823v30.117h210.823v-30.117zM241.152 208.941h150.588v30.118h-150.588v-30.118zM512 389.647v-301.176h-512v301.176h512zM481.882 359.529h-451.764v-240.941h451.764v240.941zM210.823 299.294h-150.588v-60.235h150.588v60.235z" />
+<glyph unicode="&#xe710;" d="M30.117-32h90.353v512h-90.353v-512zM60.236 449.882h30.118v-451.764h-30.117v451.764zM150.588-32h90.353v512h-90.353v-512zM180.706 449.882h30.118v-451.764h-30.118v451.764zM271.059-32h90.353v512h-90.353v-512zM301.176 449.882h30.118v-451.764h-30.118v451.764zM391.529 480v-512h90.353v512h-90.353zM451.764-1.882h-30.118v451.764h30.118v-451.764z" />
+<glyph unicode="&#xe711;" d="M0-32h150.588v512h-150.588v-512zM30.117 449.882h90.353v-451.764h-90.353v451.764zM180.706-32h150.588v512h-150.588v-512zM210.823 449.882h90.353v-451.764h-90.353v451.764zM361.412 480v-512h150.588v512h-150.588zM481.882-1.882h-90.353v451.764h90.353v-451.764z" />
+<glyph unicode="&#xe712;" d="M0-32h240.941v512h-240.941v-512zM30.117 449.882h180.706v-451.764h-180.706v451.764zM271.059 480v-512h240.941v512h-240.941zM481.882-1.882h-180.706v451.764h180.706v-451.764z" />
+<glyph unicode="&#xe713;" d="M0 480v-90.353h512v90.353h-512zM481.882 419.764h-451.764v30.118h451.764v-30.118zM0 88.471h512v271.059h-512v-271.059zM30.117 329.412h451.764v-210.824h-451.764v210.824zM0-32h512v90.353h-512v-90.353zM30.117 28.236h451.764v-30.118h-451.764v30.118z" />
+<glyph unicode="&#xe714;" d="M0 480v-512h512v512h-512zM481.882 449.882v-271.059h-451.764v271.059h451.764zM481.882 148.706v-60.236h-451.764v60.236h451.764zM30.117-1.882v60.236h451.764v-60.236h-451.764z" />
+<glyph unicode="&#xe715;" d="M120.471 480v-271.059h391.529v271.059h-391.529zM481.882 239.059h-331.294v210.823h331.294v-210.823zM0 389.647h90.353v90.353h-90.353v-90.353zM30.117 449.882h30.117v-30.118h-30.117v30.118zM120.471 88.471h391.529v90.353h-391.529v-90.353zM150.588 148.706h331.294v-30.118h-331.294v30.118zM0 88.471h90.353v90.353h-90.353v-90.353zM30.117 148.706h30.117v-30.118h-30.117v30.118zM120.471-32h391.529v90.353h-391.529v-90.353zM150.588 28.236h331.294v-30.118h-331.294v30.118zM0-32h90.353v90.353h-90.353v-90.353zM30.117 28.236h30.117v-30.118h-30.117v30.118z" />
+<glyph unicode="&#xe716;" d="M90.353 480v-195.735l164.623-286.087 166.671 286.058v195.764h-331.294zM255.126 58.353h0.060l-0.030-0.060-0.030 0.060zM256 299.294c-16.625 0-30.118 13.523-30.118 30.118s13.493 30.117 30.118 30.117 30.118-13.523 30.118-30.117-13.493-30.118-30.118-30.118zM391.529 292.367l-120.471-206.788v185.736c25.901 6.716 45.176 30.118 45.176 58.097 0 33.22-27.015 60.236-60.236 60.236s-60.236-27.015-60.236-60.236c0-27.979 19.275-51.38 45.177-58.097v-188.356l-120.471 209.378v157.546h271.059v-157.515z" />
+<glyph unicode="&#xe717;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM271.059 107.475h29.485v-30.118h-89.088v30.118h29.485v133.12h-28.492v30.118h58.609v-163.238zM216.395 329.833c0 16.414 13.282 29.696 29.696 29.696s29.666-13.282 29.666-29.696c0-16.354-13.252-29.636-29.666-29.636s-29.696 13.282-29.696 29.636z" />
+<glyph unicode="&#xe718;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM290.876 111.993c0-17.107-13.914-31.051-31.051-31.051-17.197 0-31.112 13.945-31.112 31.051 0 17.167 13.915 31.082 31.112 31.082 17.137 0 31.051-13.884 31.051-31.082zM321.115 353.054c13.493-17.016 20.3-39.996 16.565-55.868-7.319-30.931-25.359-47.195-41.291-61.531-16.354-14.728-28.13-25.299-28.13-49.604h-30.118c0 37.677 20.209 55.899 38.069 71.981 13.884 12.499 26.986 24.305 32.106 46.050 1.024 4.307-1.175 18.070-10.842 30.268-9.246 11.716-21.925 17.649-37.587 17.649-53.579 0-56.29-43.49-56.411-48.459l-30.118 0.813c0.723 26.895 19.727 77.764 86.528 77.764 24.636 0 46.351-10.33 61.229-29.063z" />
+<glyph unicode="&#xe719;" d="M471.884 298.782c-28.822 107.128-116.344 181.218-215.884 181.218-99.238 0-187.091-74.21-215.883-181.218-22.498-2.47-40.117-21.444-40.117-44.665v-120.471c0-18.824 11.505-34.937 27.828-41.713 5.843-52.615 50.086-93.817 104.237-93.817h81.529c6.234-17.498 22.799-30.117 42.406-30.117h90.353c24.907 0 45.176 20.269 45.176 45.176s-20.269 45.176-45.176 45.176h-90.353c-19.607 0-36.172-12.62-42.406-30.118h-81.529c-36.382 0-66.771 25.901-73.758 60.236h32.045v30.118h30.118v150.588h-30.118v30.118h-18.251c27.498 89.178 100.954 150.588 183.899 150.588 83.185 0 156.401-61.35 183.899-150.588h-18.252v-30.118h-30.118v-150.588h30.118v-30.118h45.357c24.817 0 44.996 20.269 44.996 45.176v120.471c0 23.221-17.619 42.195-40.116 44.664zM256 28.236h90.353c8.283 0 15.059-6.747 15.059-15.059s-6.776-15.059-15.059-15.059h-90.353c-8.282 0-15.059 6.747-15.059 15.059s6.776 15.059 15.059 15.059zM60.236 118.588h-15.239c-8.192 0-14.878 6.747-14.878 15.059v120.471c0 8.313 6.686 15.059 14.878 15.059h15.239v-150.588zM481.882 133.647c0-8.313-6.686-15.059-14.878-15.059h-15.24v150.588h15.24c8.192 0 14.878-6.746 14.878-15.059v-120.471z" />
+<glyph unicode="&#xe71a;" d="M436.706 231.951v-95.955c0-20.179-9.698-46.833-18.252-70.325-5.572-15.269-11.866-32.587-11.866-39.454v-25.75c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v25.75c0 12.168 6.053 28.762 13.673 49.755 7.71 21.142 16.444 45.116 16.444 59.995v95.985c0 8.734-7.108 16.113-15.541 16.113-8.795 0-13.673-7.891-13.945-15.661-0.271-8.192-6.295-15.269-15.3-14.517-8.192 0.151-14.788 6.867-14.788 15.059v47.044c0 8.915-6.837 16.173-15.209 16.173-7.951 0-14.577-6.626-15.119-15.059-0.512-8.132-6.867-14.607-15.51-14.095-8.132 0.271-14.577 6.927-14.577 15.059v38.159c0 8.885-6.747 16.113-15.059 16.113-7.8 0-14.668-6.084-15.691-13.884-1.024-7.831-7.891-13.884-15.902-13.071-7.921 0.512-14.095 7.077-14.095 15.029v109.357c0 8.885-6.837 16.113-15.209 16.113s-15.209-7.228-15.209-16.113v-186.127c0-6.204-3.795-11.776-9.577-14.035-5.752-2.259-12.348-0.723-16.565 3.825l-33.551 36.472c-13.824 13.915-18.281 11.264-22.528 8.644-7.409-4.397-9.969-14.577-5.662-22.287l99.027-213.775c1.596-2.74 4.97-5.361 8.945-6.355 6.716-1.716 11.385-7.71 11.385-14.607v-25.058c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v15.029c-7.018 4.036-12.86 9.939-17.017 17.288l-98.996 213.775c-11.836 20.902-4.427 49.122 17.017 61.862 28.913 17.317 51.291-5.21 59.693-13.673l7.831-8.493v147.516c0 25.51 20.359 46.231 45.327 46.231s45.327-20.721 45.327-46.231v-70.023c4.879 1.747 10.119 2.71 15.571 2.71 23.823 0 43.37-18.944 45.056-42.887 4.759 1.777 9.878 2.71 15.209 2.71 24.998 0 45.327-20.751 45.327-46.291v-4.096c4.367 1.476 9.036 2.259 13.945 2.259 25.148 0.030 45.628-20.721 45.628-46.201z" />
+<glyph unicode="&#xe71b;" d="M509.651 254.298c0-24.968-20.721-45.297-46.231-45.297h-70.024c1.777-4.879 2.74-10.149 2.74-15.601 0-23.823-18.944-43.37-42.887-45.056 1.747-4.759 2.68-9.849 2.68-15.18 0-24.998-20.751-45.357-46.26-45.357h-4.096c1.476-4.367 2.259-9.036 2.259-13.945 0-25.148-20.781-45.628-46.26-45.628h-95.924c-20.179 0-46.833 9.698-70.355 18.252-15.27 5.572-32.557 11.866-39.424 11.866h-25.75c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059h25.75c12.137 0 28.732-6.024 49.694-13.673 21.203-7.71 45.207-16.444 60.084-16.444h95.924c8.764 0 16.143 7.108 16.143 15.541 0 8.795-7.891 13.673-15.661 13.945-8.192 0.301-14.667 7.108-14.517 15.33s6.867 14.788 15.059 14.788h47.044c8.915 0 16.143 6.837 16.143 15.24 0 7.951-6.596 14.547-14.998 15.089-8.162 0.512-14.396 7.349-14.156 15.51 0.271 8.132 6.897 14.577 15.059 14.577h38.189c8.885 0 16.113 6.776 16.113 15.059 0 7.8-6.114 14.697-13.914 15.692-7.861 1.024-13.583 8.012-13.071 15.902 0.542 7.951 7.077 14.095 15.029 14.095h109.357c8.885 0 16.113 6.806 16.113 15.179 0 8.403-7.228 15.24-16.113 15.24h-186.127c-6.204 0-11.776 3.795-14.035 9.577s-0.692 12.348 3.855 16.565l36.472 33.521c13.854 13.824 11.204 18.221 8.644 22.528-4.457 7.499-14.457 10.089-22.348 5.662l-213.745-98.997c-2.68-1.566-5.3-4.939-6.355-8.945-1.656-6.716-7.65-11.385-14.577-11.385h-25.058c-8.313 0-15.059 6.746-15.059 15.059s6.746 15.059 15.059 15.059h15.029c4.036 7.018 9.909 12.891 17.258 16.987l213.775 99.027c20.872 11.746 49.152 4.397 61.892-17.016 17.288-28.822-5.211-51.26-13.644-59.693l-8.493-7.83h147.486c25.479 0 46.231-20.36 46.231-45.357z" />
+<glyph unicode="&#xe71c;" d="M494.592 73.412c0-8.313-6.747-15.059-15.059-15.059h-25.75c-6.837 0-24.154-6.295-39.424-11.866-23.522-8.553-50.176-18.252-70.355-18.252h-95.924c-25.51 0-46.261 20.48-46.261 45.659 0 4.909 0.783 9.577 2.259 13.945h-4.066c-25.51 0-46.261 20.36-46.261 45.357 0 5.331 0.934 10.421 2.68 15.18-23.944 1.656-42.888 21.203-42.888 45.026 0 5.452 0.964 10.692 2.74 15.601h-70.053c-25.509 0-46.23 20.329-46.23 45.297 0 24.997 20.721 45.357 46.23 45.357h147.486l-8.012 7.379c-8.915 8.885-31.412 31.322-14.095 60.175 12.74 21.384 40.96 28.763 62.886 16.475l211.667-97.942c8.072-4.488 14.185-10.481 18.281-17.559h15.059c8.313 0 15.059-6.747 15.059-15.059s-6.747-15.059-15.059-15.059h-25.028c-6.897 0-12.921 4.668-14.607 11.385-1.024 4.006-3.644 7.379-7.379 9.487l-211.667 97.913c-8.855 4.94-18.884 2.409-23.341-5.090-2.59-4.337-5.24-8.734 9.036-23.010l36.020-33.069c4.578-4.216 6.084-10.752 3.825-16.565s-7.831-9.577-14.035-9.577h-186.127c-8.855 0-16.083-6.837-16.083-15.239 0-8.373 7.228-15.179 16.113-15.179h109.357c7.951 0 14.517-6.144 15.029-14.095 0.512-7.921-5.21-14.878-13.071-15.902-7.8-0.994-13.884-7.921-13.884-15.721 0-8.283 7.228-15.059 16.113-15.059h38.189c8.132 0 14.818-6.476 15.059-14.577 0.241-8.162-6.024-14.998-14.125-15.51-8.433-0.542-15.029-7.138-15.029-15.089 0-8.403 7.258-15.24 16.143-15.24h47.044c8.222 0 14.908-6.596 15.059-14.788s-6.325-15.029-14.517-15.33c-7.77-0.271-15.661-5.15-15.661-13.945 0-8.403 7.409-15.51 16.143-15.51h95.924c14.878 0 38.882 8.734 60.055 16.444 20.962 7.65 37.556 13.673 49.694 13.673h25.75c8.342 0 15.089-6.747 15.089-15.059z" />
+<glyph unicode="&#xe71d;" d="M414.208 139.58c-28.793-17.378-51.26 5.211-59.693 13.673l-7.83 8.493v-147.516c0-25.51-20.329-46.231-45.327-46.231s-45.327 20.721-45.327 46.231v70.024c-4.879-1.777-10.119-2.74-15.571-2.74-23.793 0-43.369 18.944-45.056 42.887-4.758-1.777-9.879-2.711-15.209-2.711-24.998 0-45.327 20.751-45.327 46.291v4.096c-4.367-1.476-9.035-2.259-13.945-2.259-25.148 0-45.628 20.751-45.628 46.231v95.955c0 20.179 9.698 46.833 18.252 70.325 5.572 15.269 11.867 32.587 11.867 39.424v25.781c0 8.313 6.746 15.059 15.059 15.059s15.059-6.747 15.059-15.059v-25.75c0-12.168-6.024-28.762-13.674-49.755-7.71-21.173-16.444-45.147-16.444-60.024v-95.955c0-8.734 7.108-16.113 15.54-16.113 8.794 0 13.674 7.891 13.944 15.661 0.301 8.132 6.957 14.517 15.059 14.517 0.090 0 0.18 0 0.271 0 8.192-0.15 14.788-6.867 14.788-15.059v-47.044c0-8.915 6.837-16.173 15.209-16.173 7.951 0 14.577 6.626 15.119 15.059 0.482 8.101 7.077 14.156 15.481 14.095 8.132-0.271 14.577-6.927 14.577-15.059v-38.189c0-8.885 6.776-16.113 15.059-16.113 7.8 0 14.667 6.084 15.691 13.884 1.024 7.861 8.041 13.974 15.902 13.101 7.921-0.512 14.095-7.077 14.095-15.029v-109.357c0-8.885 6.837-16.113 15.209-16.113s15.209 7.228 15.209 16.113v186.127c0 6.204 3.795 11.776 9.577 14.035 5.692 2.259 12.318 0.723 16.565-3.825l33.551-36.473c13.824-13.914 18.281-11.234 22.528-8.644 7.409 4.397 9.969 14.577 5.662 22.287l-99.027 213.775c-1.596 2.74-4.94 5.361-8.945 6.355-6.686 1.687-11.385 7.68-11.385 14.607v25.058c0 8.313 6.747 15.059 15.059 15.059s15.059-6.746 15.059-15.059v-15.029c7.017-4.036 12.89-9.939 16.986-17.288l99.027-213.775c11.836-20.901 4.457-49.122-17.017-61.861z" />
+<glyph unicode="&#xe71e;" d="M391.529 178.824v301.176h-391.529v-391.529h391.529v90.353zM30.117 449.882h331.294v-240.941h-22.739l-77.221 99.961-34.906-36.563-67.704 116.887-107.701-180.284h-21.022v240.941zM300.635 208.941h-214.407l72.222 120.892 62.163-107.339 38.4 40.267 41.623-53.82zM30.117 118.588v60.236h331.294v-60.236h-331.294zM512 389.647v-391.529h-391.529v59.753h30.118v-29.636h331.294v331.294h-60.236v30.118h90.353z" />
+<glyph unicode="&#xe71f;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM391.529 208.941c0-74.722-60.808-135.53-135.53-135.53s-135.53 60.808-135.53 135.529c0 8.313 6.746 15.059 15.059 15.059s15.059-6.747 15.059-15.059c0-58.127 47.285-105.412 105.412-105.412s105.412 47.284 105.412 105.412c0 8.313 6.747 15.059 15.059 15.059s15.059-6.747 15.059-15.059zM135.53 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118zM316.236 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118z" />
+<glyph unicode="&#xe720;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM391.529 88.471c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059c0 58.127-47.284 105.412-105.412 105.412s-105.412-47.284-105.412-105.412c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059c0 74.722 60.808 135.53 135.53 135.53s135.53-60.807 135.53-135.53zM135.53 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118zM316.236 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118z" />
+<glyph unicode="&#xe721;" d="M466.824 419.764h-421.647c-24.907 0-45.176-20.269-45.176-45.177v-301.176c0-24.908 20.269-45.176 45.176-45.176h421.647c24.907 0 45.176 20.269 45.176 45.176v301.176c0 24.907-20.269 45.176-45.176 45.176zM481.882 73.412c0-8.283-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.776-15.059 15.059v165.647h451.764v-165.647zM30.117 329.412v45.176c0 8.282 6.746 15.059 15.059 15.059h421.647c8.313 0 15.059-6.777 15.059-15.059v-45.176h-451.764z" />
+<glyph unicode="&#xe722;" d="M90.353 41.156l219.286 183.627-219.286 181.851v-365.478zM120.471 342.543l142.125-117.88-142.125-118.995v236.875zM421.647 419.764v-391.529h-30.118v391.529h30.118z" />
+<glyph unicode="&#xe723;" d="M202.361 223.217l219.286-181.851v365.478l-219.286-183.627zM391.529 105.457l-142.125 117.88 142.125 118.995v-236.875zM90.353 419.764h30.117v-391.529h-30.118v391.529z" />
+<glyph unicode="&#xe724;" d="M256 404.706c-99.659 0-180.706-81.047-180.706-180.706s81.047-180.706 180.706-180.706 180.706 81.046 180.706 180.706-81.046 180.706-180.706 180.706zM256 73.412c-83.034 0-150.588 67.554-150.588 150.588s67.554 150.588 150.588 150.588 150.588-67.554 150.588-150.588-67.554-150.588-150.588-150.588z" />
+<glyph unicode="&#xe725;" d="M255.217 398.11l-181.851-219.286h365.478l-183.627 219.286zM255.338 351.067l118.995-142.125h-236.875l117.88 142.125zM451.764 88.471v-30.118h-391.529v30.118h391.529z" />
+<glyph unicode="&#xe726;" d="M391.529 239.059h30.118c0-74.722-60.808-135.53-135.53-135.53s-135.53 60.808-135.53 135.53h30.118c0-58.127 47.285-105.412 105.412-105.412s105.412 47.284 105.412 105.412zM225.882 284.236c16.655 0 30.118 13.462 30.118 30.118s-13.463 30.118-30.118 30.118-30.118-13.462-30.118-30.118 13.463-30.118 30.118-30.118zM346.353 284.236c16.655 0 30.118 13.462 30.118 30.118s-13.462 30.118-30.118 30.118-30.118-13.462-30.118-30.118 13.462-30.118 30.118-30.118zM512 254.118c0-124.567-101.316-225.882-225.882-225.882-40.358 0-79.751 10.812-114.537 31.353l-165.647-85.625 85.624 165.617c-20.51 34.786-31.323 74.18-31.323 114.537 0 124.566 101.316 225.882 225.882 225.882s225.882-101.316 225.882-225.882zM481.882 254.118c0 107.942-87.823 195.764-195.764 195.764s-195.764-87.823-195.764-195.764c0-37.466 10.782-74.060 31.202-105.743l4.728-7.318-50.116-96.918 96.888 50.116 7.319-4.728c31.714-20.389 68.246-31.172 105.743-31.172 107.942 0 195.764 87.823 195.764 195.764z" />
+<glyph unicode="&#xe727;" d="M512 253.184c0 24.907-20.269 45.177-45.176 45.177h-144.805l8.584 27.528 0.692 108.935c0 24.907-20.269 45.176-45.176 45.176h-60.236c-24.907 0-45.177-20.269-45.177-45.176v-103.966l9.337-32.527h-144.866c-24.907 0-45.176-20.269-45.176-45.177v-104.99h28.070l-23.070-180.164h502.001l-23.070 180.164h28.070v105.020zM472.787-1.882h-51.14v60.236h-30.118v-60.236h-30.118v90.353h-30.118v-90.353h-30.118v120.471h-30.118v-120.471h-150.588v60.236h-30.118v-60.236h-51.14l19.215 150.046h395.144l19.215-150.046zM31.924 178.281h-1.807v74.903c0 8.312 6.746 15.059 15.059 15.059h185.675l-20.028 64.904v101.677c0 8.313 6.746 15.059 15.059 15.059h60.236c8.313 0 15.059-6.746 15.059-15.059v-102.189l-20.089-64.392h185.736c8.313 0 15.059-6.747 15.059-15.059v-74.872h-449.957zM240.941 419.764h30.117v-30.118h-30.118v30.118z" />
+<glyph unicode="&#xe728;" d="M250.006 286.584c13.162 0 23.16 4.849 30.299 14.577 5.452 7.138 7.981 18.583 7.981 33.732v49.995c0 15.149-2.53 26.292-7.981 33.43-7.168 9.668-17.167 14.547-30.298 14.547-12.891 0-22.889-4.849-29.967-14.547-5.452-7.168-8.012-18.312-8.012-33.461v-49.995c0-15.149 2.56-26.292 8.012-33.732 7.077-9.698 17.077-14.547 29.967-14.547zM237.719 390.009c0 13.131 4.006 19.697 12.288 19.697 8.584 0 12.288-6.566 12.288-19.697v-59.995c0-13.161-3.704-19.998-12.288-19.998-8.282 0-12.288 6.867-12.288 19.998v59.995zM311.717 297.156c-1.445 4.307-2.259 11.143-2.259 21.413v112.58h25.991v-104.839c0-6.024 0-9.427 0.301-10.029 0.572-4.006 2.56-6.264 5.993-6.264 5.12 0 10.541 4.006 16.264 12.288v108.845h25.991v-142.577h-25.991v15.721c-10.27-11.987-19.968-17.709-29.455-17.709-8.283 0-14.276 3.404-16.836 10.571zM410.594 124.281v-13.132h-25.721v13.132c0 12.86 4.307 19.456 12.86 19.456 8.553-0.030 12.86-6.596 12.86-19.456zM131.132 426.572c-6.264 17.709-12.529 35.719-18.582 53.428h30.329l20.269-75.144 19.426 75.144h29.154l-34.575-113.995v-77.433h-28.552v77.433c-2.59 14.005-8.313 34.003-17.468 60.567zM460.288 215.416c-5.15 22.588-23.733 39.153-45.719 41.713-52.586 5.722-105.743 5.722-158.6 5.722s-106.014 0-158.298-5.722c-22.227-2.56-40.538-19.125-45.959-41.713-7.138-31.985-7.439-66.861-7.439-99.99 0-32.858 0-67.976 7.439-99.99 5.15-22.588 23.732-39.153 45.718-41.442 52.556-5.993 105.713-5.993 158.57-5.993s106.014 0 158.6 5.993c21.956 2.289 40.267 18.853 45.719 41.442 7.138 31.985 7.439 67.132 7.439 99.99-0.030 33.13-0.030 68.005-7.469 99.99zM165.135 186.564h-30.54v-162.575h-28.582v162.575h-30.028v26.865h89.148v-26.865zM242.297 23.988h-25.45v15.42c-10.3-11.716-19.998-17.438-29.154-17.438-8.252 0-14.276 3.433-16.565 10.572-1.446 4.276-2.289 10.873-2.289 20.841v111.707h25.45v-103.996c0-6.024 0-9.156 0.271-10.029 0.602-3.976 2.59-5.993 5.994-5.993 5.18 0 10.601 3.976 16.293 11.987v108.002h25.45v-141.071zM339.456 66.274c0-13.161-0.603-22.558-2.59-28.551-3.132-10.3-10.3-15.721-20.3-15.721-9.125 0-18.010 5.15-26.594 15.721v-13.733h-25.389v189.44h25.389v-62.012c8.283 10.3 17.167 15.42 26.594 15.42 9.999 0 17.167-5.421 20.3-15.993 1.988-5.723 2.59-15.119 2.59-28.281v-56.29zM436.013 89.705h-51.14v-24.847c0-13.161 4.307-19.697 13.161-19.697 6.295 0 9.999 3.404 11.445 10.27 0.271 1.416 0.572 7.138 0.572 17.438h25.991v-3.735c0-8.283 0-14.005-0.572-16.565-0.603-5.692-2.892-10.842-5.993-15.42-6.897-9.999-17.438-15.149-30.841-15.149-13.433 0-23.462 4.849-30.87 14.577-5.421 6.867-8.283 18.010-8.283 33.159v49.423c0 15.149 2.59 25.991 8.012 33.159 7.439 9.728 17.438 14.577 30.599 14.577 12.89 0 22.86-4.849 30.268-14.577 5.18-7.138 7.74-17.98 7.74-33.159v-29.455zM314.007 124.582v-60.296c0-12.86-3.735-19.125-11.144-19.125-4.307 0-8.584 1.988-12.89 6.264v85.986c4.307 4.307 8.584 6.295 12.89 6.295 7.409 0 11.144-6.565 11.144-19.125z" />
+<glyph unicode="&#xe729;" d="M471.763 398.983c-12.529 15.902-34.033 24.335-62.132 24.335-7.951 0-15.692-0.693-22.829-1.777-26.172-4.397-90.925-37.105-112.82-105.954-1.536-4.758-0.572-9.999 2.56-13.944 3.132-3.916 8.101-6.054 13.041-5.632 16.926 1.356 29.575 0.362 33.491-4.005 3.132-3.404 4.276-11.625 3.192-23.13-1.385-15.36-10.029-33.1-19.094-50.447-4.367-7.951-17.709-32.377-25.962-32.377-1.957 0-5.090 2.078-8.313 5.541-15.481 16.716-18.673 48.58-21.413 76.74-0.964 9.276-1.837 18.131-3.132 26.504l-2.078 11.776c-2.861 16.565-6.114 35.328-11.264 52.074-6.204 19.396-21.052 44.394-42.797 51.14-4.698 1.325-9.819 1.988-15.149 1.988-20.721 0-39.334-9.909-44.604-12.981-22.076-13.101-39.936-29.154-57.224-44.694-13.041-11.686-26.504-23.823-41.743-34.575-3.976-2.831-6.355-10.089-6.355-14.969 0-5.692 3.192-10.902 8.313-13.463 1.687-0.873 1.928-1.265 3.283-3.915 2.169-4.216 6.656-12.921 19.276-14.939 11.173-1.656 21.655 1.627 30.358 4.367 4.728 1.506 9.216 2.891 12.138 2.891 1.054 0 2.289 0 4.788-4.186 5.21-8.704 8.072-18.643 11.084-29.184 1.566-5.361 3.102-10.722 4.999-16.263 6.686-18.402 11.806-38.49 17.197-59.753l4.728-18.884c10.782-44.423 25.57-105.201 66.831-122.519 6.234-2.651 13.342-4.005 21.173-4.005 20.149 0 41.472 8.854 53.308 16.264 35.117 20.691 67.493 51.26 98.906 93.485 57.555 77.041 93.004 169.863 99.178 202.451 4.909 26.082 1.356 46.381-10.933 62.042zM453.12 342.543c-4.397-23.13-34.726-111.074-93.726-190.012-29.003-39.002-58.428-66.981-90.383-85.805-11.866-7.409-35.75-15.089-47.104-10.27-27.316 11.475-40.026 63.729-49.303 101.918l-4.849 19.245c-5.572 21.956-10.873 42.737-17.95 62.344-1.686 4.819-3.072 9.698-4.488 14.517-3.404 11.897-6.957 24.214-14.185 36.262-7.409 12.529-17.709 18.884-30.63 18.884-7.559 0-14.457-2.168-21.142-4.276-4.788-1.506-9.337-2.922-14.427-3.222-0.391 0.692-0.813 1.506-1.325 2.349 11.385 8.975 21.684 18.221 31.744 27.287 16.926 15.239 32.918 29.606 52.345 41.111 6.988 4.066 18.853 8.824 29.364 8.824 2.59 0 4.94-0.301 6.626-0.753 7.71-2.379 17.86-16.474 22.588-31.262 4.548-14.757 7.62-32.527 10.3-48.219l2.078-11.656c1.174-7.439 1.958-15.751 2.861-24.455 3.222-32.888 6.927-70.114 29.364-94.298 9.396-10.029 19.607-15.119 30.359-15.119 26.142 0 41.954 28.973 53.73 50.597 9.366 17.98 19.456 38.882 21.324 59.633 1.928 21.203-1.536 35.84-10.933 46.17-9.457 10.391-22.92 13.372-34.274 14.186 24.335 46.351 71.168 63.699 80.444 65.265 5.541 0.813 11.746 1.385 18.131 1.385 10.632 0 29.696-1.687 38.46-12.83 6.565-8.403 8.192-20.751 5-37.798z" />
+<glyph unicode="&#xe72a;" d="M512 382.539c-18.853-8.132-39.303-13.974-60.446-16.233 21.775 12.981 38.34 33.43 46.14 57.796-20.149-12.017-42.887-20.781-66.59-25.329-19.155 20.48-46.442 33.13-76.649 33.13-58.157 0-104.93-47.104-104.93-104.9 0-8.132 0.994-16.263 2.59-24.064-87.070 4.518-164.714 46.11-216.365 109.809-9.096-15.571-14.306-33.46-14.306-52.977 0-36.382 18.523-68.517 46.772-87.371-17.197 0.663-33.461 5.542-47.435 13.312 0-0.301 0-0.964 0-1.295 0-50.959 36.051-93.214 84.148-102.972-8.764-2.259-18.191-3.554-27.618-3.554-6.806 0-13.312 0.632-19.788 1.627 13.312-41.592 51.983-71.8 98.093-72.794-36.081-28.25-81.228-44.815-130.289-44.815-8.764 0-16.896 0.301-25.329 1.265 46.471-29.877 101.677-47.104 161.16-47.104 192.964 0 298.556 159.834 298.556 298.526 0 4.578 0 9.095-0.301 13.673 20.42 14.939 38.279 33.491 52.586 54.272zM429.568 314.624c0-111.466-83.275-268.409-268.438-268.409-14.818 0-29.485 1.204-43.911 3.554 20.179 8.313 39.303 19.456 56.952 33.25 10.029 7.83 14.035 21.142 9.999 33.22-4.036 12.077-15.209 20.329-27.949 20.601-16.414 0.332-31.774 5.933-44.183 15.33 0.121 0.030 0.241 0.060 0.362 0.091 13.613 3.493 22.98 15.902 22.619 29.937-0.332 14.065-10.331 25.962-24.094 28.762-19.636 3.976-36.231 15.541-46.953 31.503 1.054-0.060 2.078-0.12 3.132-0.15 0.391 0 0.753 0 1.144 0 13.011 0 24.606 8.373 28.642 20.841 4.156 12.83-0.723 26.835-11.957 34.334-18.974 12.649-31.021 33.009-33.069 55.446 54.934-47.646 124.868-76.228 198.686-80.052 0.512-0.030 1.054-0.030 1.566-0.030 8.764 0 17.107 3.825 22.86 10.511 6.084 7.077 8.524 16.595 6.626 25.72-1.325 6.295-1.988 12.348-1.988 17.92 0 41.231 33.551 74.782 74.812 74.782 21.022 0 40.418-8.373 54.663-23.612 3.493-3.735 7.861-6.476 12.559-8.012-0.572-4.397-0.18-8.945 1.295-13.372 1.897-5.752 5.421-10.601 9.939-14.156-2.68-4.939-3.976-10.631-3.584-16.384 0.301-3.885 0.271-7.74 0.271-11.625z" />
+<glyph unicode="&#xe72b;" d="M261 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256c0 141.161-114.839 256-256 256zM261-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM421.647 208.941v-30.118h-180.706v150.588h30.117v-120.47h150.588z" />
+<glyph unicode="&#xe72c;" d="M396.047 97.897c-21.685-14.396-42.767-21.384-64.482-21.384-11.173 0-20.601 2.469-28.913 7.56-5.12 3.102-8.342 6.716-10.029 11.354-1.566 4.036-3.404 15.721-3.404 48.55v108.574h114.236v105.713h-114.206v121.736h-97.009l-1.686-13.192c-2.892-22.829-8.132-41.894-15.42-56.561-7.379-14.486-16.775-26.503-28.552-36.653-11.987-9.999-26.715-17.95-43.701-23.582l-10.331-3.434v-94.027h53.339v-154.052c0-24.456 2.62-42.858 7.891-55.838 5.15-13.644 14.908-26.774 29.184-39.123 13.975-11.806 30.268-20.691 48.219-26.323 18.402-6.084 39.635-9.216 63.097-9.216 21.052 0 40.538 2.139 57.645 6.325 17.288 3.945 36.563 10.963 58.88 21.474l8.644 4.066v113.574l-23.401-15.541zM389.331 19.079c-16.655-7.379-31.172-12.438-44.333-15.481-31.232-7.62-74.572-7.71-104.599 2.259-14.336 4.517-27.136 11.475-37.918 20.57-10.27 8.915-17.197 17.95-20.691 27.196-3.885 9.517-5.813 24.606-5.813 44.845v184.2h-53.308v42.496c16.354 6.505 30.87 14.998 43.369 25.449 14.757 12.71 26.865 28.19 35.96 46.080 7.5 14.998 12.951 32.467 16.475 53.188h40.659v-121.736h114.236v-45.477h-114.236v-138.662c0-32.166 1.566-49.393 5.3-59.060 3.945-10.933 11.565-19.877 22.588-26.564 27.98-17.197 67.012-15.119 102.31 1.265v-40.568z" />
+<glyph unicode="&#xe72d;" d="M487.876 180.54c2.68 14.757 4.036 29.365 4.036 43.46 0 144.203-128.572 259.253-279.401 231.876-22.769 15.812-49.243 24.124-76.981 24.124-74.722 0-135.53-60.808-135.53-135.53 0-27.738 8.313-54.212 24.124-77.011-2.68-14.758-4.036-29.335-4.036-43.46 0-144.203 128.602-259.252 279.401-231.876 22.769-15.812 49.243-24.124 76.981-24.124 74.722 0 135.53 60.808 135.53 135.529 0 27.738-8.313 54.212-24.124 77.011zM376.471-1.882c-23.341 0-45.538 7.589-64.241 21.956l-5.481 4.216-6.776-1.416c-15.029-3.102-29.817-4.668-44.002-4.668-113.483 0-205.794 92.31-205.794 205.794 0 14.185 1.566 28.973 4.699 44.002l1.386 6.776-4.216 5.482c-14.336 18.643-21.925 40.9-21.925 64.211 0 58.127 47.285 105.412 105.412 105.412 23.341 0 45.538-7.589 64.241-21.956l5.482-4.216 6.776 1.416c14.999 3.072 29.786 4.668 43.972 4.668 113.483 0 205.794-92.311 205.794-205.794 0-14.185-1.566-28.973-4.699-44.002l-1.385-6.776 4.216-5.481c14.366-18.643 21.956-40.9 21.956-64.211 0-58.127-47.284-105.412-105.412-105.412zM383.067 171.625c0-63.699-61.5-93.184-120.471-93.184-70.596 0-129.596 31.382-129.596 69.964 0 17.228 9.728 32.918 31.714 32.918 33.581 0 36.714-48.308 94.75-48.308 27.588 0 45.478 12.197 45.478 28.22 0 20.089-17.257 23.221-45.176 30.118l-45.809 11.294c-45.779 10.993-80.956 29.816-80.956 82.522 0 63.668 63.066 87.221 117.339 87.221 59.301 0 119.206-23.522 119.206-59.603 0-18.191-12.228-34.214-32.618-34.214-30.449 0-31.382 36.051-80.655 36.051-27.588 0-45.177-7.5-45.177-24.124 0-18.221 17.89-22.287 41.773-27.949l32.587-7.529c44.574-10.029 97.611-28.822 97.611-83.396z" />
+<glyph unicode="&#xe72e;" d="M204.649 76.544c-33.43 31.232-52.615 75.355-52.615 121.103 0 91.347 74.331 165.647 165.647 165.647h87.702l-79.692 79.692 21.293 21.293 116.074-116.074-116.073-116.073-21.293 21.293 79.692 79.691h-87.702c-74.722 0-135.53-60.808-135.53-135.529 0-37.978 15.3-73.156 43.038-99.087l-20.54-21.956zM483.328 208.038v-194.861c0-8.283-6.776-15.059-15.059-15.059h-421.647c-8.282 0-15.059 6.776-15.059 15.059v195.012h-30.117v-195.012c0-24.908 20.269-45.176 45.176-45.176h421.647c24.907 0 45.176 20.269 45.176 45.176v194.861h-30.118z" />
+<glyph unicode="&#xe72f;" d="M166.46 232.162l-116.043 116.073 116.073 116.073 21.293-21.293-79.722-79.722h87.703c91.317 0 165.647-74.3 165.647-165.647 0-45.748-19.185-89.841-52.615-121.103l-20.54 21.986c27.738 25.962 43.038 61.139 43.038 99.117 0 74.722-60.808 135.529-135.53 135.529h-87.703l79.692-79.691-21.293-21.323zM481.882 208.188v-195.012c0-8.283-6.776-15.059-15.059-15.059h-421.647c-8.282 0-15.059 6.776-15.059 15.059v194.861h-30.117v-194.861c0-24.907 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v195.012h-30.118z" />
+<glyph unicode="&#xe730;" d="M361.412 148.706c0 30.118 0 150.588 0 180.706 0 150.588-90.353 150.588-90.353 150.588s-90.353 0-90.353-150.588 0-60.236 0-180.706c0 0-60.236 0-60.236-180.706 0 0 71.65 71.529 129.868 87.19 0.12-17.529 9.337-31.654 20.721-31.654s20.601 14.156 20.721 31.654c58.217-15.661 129.868-87.19 129.868-87.19 0 180.706-60.236 180.706-60.236 180.706zM271.059 449.852c7.83-0.632 50.206-8.132 58.639-90.323h-117.278c8.433 82.191 50.808 89.691 58.639 90.323zM271.059 88.471c-38.279 0-82.582-26.142-116.766-51.712 7.921 63.88 25.871 79.18 29.907 81.829h26.624v210.824h120.471v-210.824h26.624c4.036-2.651 21.986-17.95 29.907-81.829-34.183 25.57-78.486 51.712-116.766 51.712z" />
+<glyph unicode="&#xe731;" d="M452.517 292.518c0-115.019-63.94-200.644-157.997-200.644-31.594 0-61.29 17.107-71.228 36.533-17.107-67.404-20.54-80.324-20.54-80.324-6.114-22.468-18.643-44.966-29.666-62.464-31.412-22.197-34.334 12.168-34.334 12.168-0.723 20.601-0.362 45.327 5 67.373 0 0 5.692 23.642 37.647 159.172-9.487 18.673-9.487 46.471-9.487 46.471 0 43.4 25.148 75.776 56.38 75.776 26.654 0 39.575-20.179 39.575-44.183 0-26.654-17.167-66.65-25.871-103.575-7.228-31.232 15.601-56.35 46.050-56.35 55.627 0 92.883 71.168 92.883 155.347 0 64.362-43.37 112.309-121.826 112.309-88.697 0-143.902-66.259-143.902-140.108 0-25.54 7.59-43.429 19.396-57.524 5.361-6.476 6.114-8.734 4.186-16.354-1.476-5.331-4.518-18.281-6.054-23.221-1.898-7.62-8.011-10.27-14.457-7.62-40.749 16.805-59.813 61.711-59.813 111.978 0 83.004 70.024 182.754 208.655 182.754 111.947 0 185.404-81.077 185.404-167.514z" />
+<glyph unicode="&#xe732;" d="M451.764 419.764v-225.882h-30.118v170.707l-281.118-281.118-21.293 21.293 284.883 284.883h-178.236v30.118h225.882zM331.294-1.882h-301.176v301.176h197.994v30.118h-228.111v-361.412h361.412v232.327h-30.118v-202.21z" />
+<glyph unicode="&#xe733;" d="M232.93 6.46l279.070-38.46v241.845h-279.070v-203.385zM263.048 179.727h218.835v-177.182l-218.835 30.178v147.004zM0 38.445l209.829-28.883v200.283h-209.829v-171.399zM30.117 179.727h149.595v-135.62l-149.595 20.601v115.019zM0 235.685h209.829v202.752l-209.829-28.883v-173.869zM30.117 383.322l149.595 20.601v-138.089h-149.595v117.489zM232.93 441.54v-205.854h279.070v244.315l-279.070-38.46zM481.882 265.803h-218.835v149.474l218.835 30.178v-179.652z" />
+<glyph unicode="&#xe734;" d="M512 359.529v-30.117h-361.412v30.117h361.412zM150.588 208.941h361.412v30.118h-361.412v-30.118zM150.588 88.471h361.412v30.118h-361.412v-30.118zM62.735 375.19h0.271v-71.77h10.722v82.131h-9.457l-17.95-9.608 2.139-8.463 14.276 7.71zM49.363 191.714l6.596 6.053c17.287 16.685 28.281 28.943 28.281 44.123 0 11.746-7.469 23.884-25.178 23.884-9.457 0-17.529-3.524-23.221-8.343l3.524-7.831c3.825 3.162 9.999 6.957 17.468 6.957 12.228 0 16.293-7.71 16.293-16.053-0.121-12.379-9.638-23.010-30.599-42.978l-8.704-8.463v-6.837h52.404v9.246h-36.864v0.241zM67.343 106.812v0.271c10.12 3.644 15.18 10.842 15.18 19.336 0 9.969-7.319 19.577-23.492 19.577-8.855 0-17.197-3.132-21.504-6.325l2.922-8.101c3.524 2.53 9.849 5.452 16.444 5.452 10.24 0 14.396-5.813 14.396-12.378 0-9.728-10.24-13.914-18.311-13.914h-6.204v-8.313h6.174c10.752 0 21.112-4.94 21.233-16.444 0.15-6.837-4.307-15.902-18.552-15.902-7.74 0-15.059 3.132-18.191 5.18l-3.042-8.584c4.036-2.68 12.108-5.602 21.353-5.602 19.697 0 29.937 11.505 29.937 24.636 0 11.505-8.222 19.094-18.341 21.113z" />
+<glyph unicode="&#xe735;" d="M21.022 304.625h103.544v-310.904h-103.544v310.904zM73.427 454.279c-35.148 0-58.368-23.221-58.368-53.669 0-29.787 22.287-53.639 57.103-53.639h0.632c36.081 0 58.669 23.853 58.368 53.639-0.332 30.449-22.287 53.669-57.736 53.669zM378.036 311.853c-55.085 0-79.601-30.178-93.184-51.471v44.243h-103.213c0 0 1.265-29.184 0-310.904h103.213v173.508c0 9.397 0.964 18.522 3.433 25.389 7.56 18.522 24.456 37.647 53.067 37.647 37.286 0 52.344-28.551 52.344-70.264v-166.28h103.243v178.206c0 95.382-50.839 139.927-118.904 139.927z" />
+<glyph unicode="&#xe736;" d="M512 480v-512h-120.471v512h120.471zM0-32h90.353v512h-90.353v-512zM331.294-32h30.118v30.118h-30.118v-30.118zM228.020-32h25.811v30.118h-25.811v-30.118zM279.673-32h25.811v30.118h-25.811v-30.118zM176.399-32h25.811v30.118h-25.811v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM120.471 389.647h30.117v30.118h-30.118v-30.118zM120.471 88.471h30.117v30.118h-30.118v-30.118zM120.471 28.236h30.117v30.118h-30.118v-30.118zM120.471 148.706h30.117v30.118h-30.118v-30.118zM120.471 269.177h30.117v30.117h-30.118v-30.117zM120.471 329.412h30.117v30.117h-30.118v-30.117zM120.471 208.941h30.117v30.118h-30.118v-30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM176.399 449.882h25.811v30.118h-25.811v-30.118zM279.673 449.882h25.811v30.118h-25.811v-30.118zM228.020 449.882h25.811v30.118h-25.811v-30.118zM331.294 449.882h30.118v30.118h-30.118v-30.118zM331.294 329.412h30.118v30.117h-30.118v-30.117zM331.294 389.647h30.118v30.118h-30.118v-30.118zM331.294 269.177h30.118v30.117h-30.118v-30.117zM331.294 208.941h30.118v30.118h-30.118v-30.118zM331.294 28.236h30.118v30.118h-30.118v-30.118zM331.294 88.471h30.118v30.118h-30.118v-30.118zM331.294 148.706h30.118v30.118h-30.118v-30.118z" />
+<glyph unicode="&#xe737;" d="M30.117 449.882h90.353v-90.353h-90.353v90.353zM150.588 359.529h90.353v90.353h-90.353v-90.353zM271.059 359.529h90.353v90.353h-90.353v-90.353zM391.529 449.882v-90.353h90.353v90.353h-90.353zM30.117 239.059h90.353v90.353h-90.353v-90.353zM150.588 239.059h90.353v90.353h-90.353v-90.353zM271.059 239.059h90.353v90.353h-90.353v-90.353zM391.529 239.059h90.353v90.353h-90.353v-90.353zM30.117 118.588h90.353v90.353h-90.353v-90.353zM150.588 118.588h90.353v90.353h-90.353v-90.353zM271.059 118.588h90.353v90.353h-90.353v-90.353zM391.529 118.588h90.353v90.353h-90.353v-90.353zM30.117-1.882h90.353v90.353h-90.353v-90.353zM150.588-1.882h90.353v90.353h-90.353v-90.353zM271.059-1.882h90.353v90.353h-90.353v-90.353zM391.529-1.882h90.353v90.353h-90.353v-90.353z" />
+<glyph unicode="&#xe738;" d="M0 480h150.588v-150.588h-150.588v150.588zM180.706 329.412h150.588v150.588h-150.588v-150.588zM361.412 480v-150.588h150.588v150.588h-150.588zM0 148.706h150.588v150.588h-150.588v-150.588zM180.706 148.706h150.588v150.588h-150.588v-150.588zM361.412 148.706h150.588v150.588h-150.588v-150.588zM0-32h150.588v150.588h-150.588v-150.588zM180.706-32h150.588v150.588h-150.588v-150.588zM361.412-32h150.588v150.588h-150.588v-150.588z" />
+<glyph unicode="&#xe739;" d="M0 480h210.823v-210.823h-210.823v210.823zM271.059 480v-210.823h210.824v210.823h-210.823zM0-1.882h210.823v210.824h-210.823v-210.823zM271.059-1.882h210.824v210.824h-210.823v-210.823z" />
+<glyph unicode="&#xe73a;" d="M30.117 480h90.353v-512h-90.353v512zM150.588-32h90.353v512h-90.353v-512zM271.059-32h90.353v512h-90.353v-512zM391.529 480v-512h90.353v512h-90.353z" />
+<glyph unicode="&#xe73b;" d="M0 480h150.588v-512h-150.588v512zM180.706-32h150.588v512h-150.588v-512zM361.412 480v-512h150.588v512h-150.588z" />
+<glyph unicode="&#xe73c;" d="M0 480h240.941v-512h-240.941v512zM271.059 480v-512h240.941v512h-240.941z" />
+<glyph unicode="&#xe73d;" d="M391.529 480h-271.059c-66.259 0-120.471-54.212-120.471-120.471v-271.059c0-66.259 54.212-120.47 120.471-120.47h271.059c66.259 0 120.471 54.212 120.471 120.471v271.059c0 66.259-54.212 120.471-120.471 120.471zM481.882 88.471c0-49.815-40.538-90.353-90.353-90.353h-271.059c-49.815 0-90.353 40.538-90.353 90.353v180.706h96.588c-8.614-18.372-13.764-38.641-13.764-60.236 0-78.878 64.18-143.059 143.059-143.059s143.059 64.18 143.059 143.059c0 21.595-5.15 41.863-13.764 60.236h96.587v-180.706zM368.941 208.941c0-62.284-50.658-112.941-112.941-112.941s-112.941 50.658-112.941 112.941 50.658 112.941 112.941 112.941 112.941-50.658 112.941-112.941zM365.99 299.294c-26.262 31.894-65.536 52.706-109.99 52.706s-83.727-20.812-109.99-52.706h-115.892v60.236c0 49.815 40.538 90.353 90.353 90.353h271.059c49.815 0 90.353-40.538 90.353-90.353v-60.236h-115.892zM435.32 398.020v-39.092c0-9.005-7.349-16.354-16.324-16.354h-41.201c-9.036 0.030-16.384 7.379-16.384 16.354v39.092c0 9.005 7.349 16.354 16.384 16.354h41.201c8.975 0 16.324-7.349 16.324-16.354z" />
+<glyph unicode="&#xe73e;" d="M512 401.243v-39.394h-78.757v-78.788h-39.394v78.788h-78.757v39.394h78.757v78.758h39.394v-78.758h78.757zM312.923 95.096c0-35.388-16.896-64-43.068-86.769-35.388-30.479-83.697-40.327-129.235-40.327-57.525 0-140.619 24.606-140.619 95.985 0 14.457 4.939 28.642 11.415 41.563 27.347 55.356 112.881 69.541 167.966 71.077-10.119 13.221-19.667 28.582-19.667 45.839 0 10.149 3.644 16.926 6.776 26.444-7.409-0.904-14.457-1.536-21.534-1.536-59.693 0-111.375 44.002-111.375 105.864 0 58.458 45.207 108.303 101.196 120.591 18.793 4.036 38.129 6.174 57.524 6.174h134.505l-41.532-24.305h-41.593c30.509-19.065 45.869-56.32 45.869-90.774 0-81.529-68.94-87.673-68.94-128.301 0-39.695 92.31-55.387 92.31-141.523zM232.659 333.839c0 46.772-25.268 123.995-82.191 123.995-40.267 0-59.964-35.69-59.964-72.012 0-46.743 30.75-119.988 85.534-119.988 42.105 0.030 56.621 30.479 56.621 68.005zM269.553 68.623c0 43.068-40.358 67.072-71.71 88.938-5.24 0.603-10.18 0.603-15.42 0.603-50.417 0-125.531-15.993-125.531-79.993 0-59.060 66.469-81.86 115.712-81.86 45.839 0 96.948 18.462 96.948 72.313z" />
+<glyph unicode="&#xe73f;" d="M393.849 145.243c0-22.468-11.716-59.091-39.394-59.091-27.708 0-39.424 36.623-39.424 59.091 0 22.438 11.716 59.091 39.424 59.091 27.678 0 39.394-36.653 39.394-59.091zM157.546 204.333c-27.678 0-39.394-36.653-39.394-59.091 0-22.468 11.716-59.091 39.394-59.091 27.678 0 39.394 36.623 39.394 59.091 0 22.438-11.716 59.091-39.394 59.091zM512 199.394c0-34.183-3.373-70.476-18.764-101.858-40.629-82.161-152.305-90.142-232.298-90.142-81.228 0-199.68 7.048-241.845 90.142-15.722 31.082-19.095 67.675-19.095 101.858 0 44.935 12.318 87.371 41.864 121.826-5.541 16.926-8.313 34.786-8.313 52.344 0 23.070 5.21 46.11 15.691 67.072 48.61 0 79.692-21.233 116.615-50.146 31.082 7.379 63.066 10.752 95.082 10.752 28.913 0 58.157-3.102 86.166-9.849 36.623 28.612 67.675 49.243 115.682 49.243 10.481-20.932 15.692-44.002 15.692-67.072 0-17.558-2.771-35.087-8.313-51.712 29.546-34.756 41.834-77.523 41.834-122.459zM443.060 145.243c0 47.074-28.582 88.606-78.757 88.606-20.3 0-39.665-3.704-59.995-6.476-15.993-2.47-31.985-3.373-48.309-3.373s-32.316 0.904-48.309 3.373c-19.998 2.771-39.695 6.476-59.995 6.476-50.146 0-78.757-41.532-78.757-88.606 0-94.148 86.137-108.604 161.22-108.604h51.712c75.084-0.030 161.19 14.457 161.19 108.604z" />
+<glyph unicode="&#xe740;" d="M219.708 224c0-60.657-49.212-109.839-109.809-109.839-60.687 0-109.9 49.182-109.9 109.839s49.212 109.839 109.9 109.839c60.596 0 109.809-49.182 109.809-109.839zM512 224c0-60.657-49.212-109.839-109.899-109.839-60.596 0-109.809 49.212-109.809 109.839s49.212 109.839 109.809 109.839c60.687 0 109.899-49.182 109.899-109.839zM481.882 224c0 43.972-35.78 79.721-79.781 79.721-43.942 0-79.692-35.78-79.692-79.721s35.75-79.721 79.692-79.721c44.002 0 79.781 35.75 79.781 79.721z" />
+<glyph unicode="&#xe741;" d="M375.296 312.245l-9.306-88.245h-70.536v-256h-105.954v256h-52.796v88.245h52.796v53.127c0 71.771 29.846 114.628 114.688 114.628h70.505v-88.245h-44.123c-32.918 0-35.117-12.438-35.117-35.418v-44.092h79.842z" />
+<glyph unicode="&#xe742;" d="M507.572 348.356l-159.503 104.026-92.070-76.439-91.738 76.439-159.834-104.026 93.365-74.572-93.335-74.752 103.725-67.554v-46.171l148.089-88.516 148.359 88.486v46.622l102.912 67.162-93.305 74.722 93.334 74.572zM350.178 415.036l106.014-69.15-67.222-53.669-107.219 65.957 68.428 56.862zM361.412 273.784l-105.412-65.024-105.412 65.024 105.412 64.874 105.412-64.874zM55.808 345.886l106.225 69.15 68.216-56.832-107.249-65.988-67.192 53.669zM55.778 201.563l67.222 53.88 107.279-66.198-68.246-56.923-106.255 69.24zM374.513 102.385l-118.212-70.565-117.971 70.536v9.487l25.962-16.896 91.769 76.499 92.040-76.499 26.443 17.257v-9.819zM456.222 201.532l-106.044-69.21-68.457 56.923 107.249 66.198 67.252-53.91z" />
+<glyph unicode="&#xe743;" d="M256 480c-141.372 0-256-114.628-256-256s114.628-256 256-256 256 114.628 256 256-114.628 256-256 256zM481.702 220.356c-62.494 13.733-117.339 12.74-164.714 2.771-7.56 18.884-16.143 38.34-25.57 58.127 50.628 19.516 99.147 47.767 136.975 88.365 33.31-39.394 53.489-90.172 53.489-145.619 0-1.235-0.18-2.409-0.18-3.644zM407.281 391.243c-34.937-37.858-80.956-64.301-129.416-82.522-22.889 44.212-50.899 89.148-84.751 132.066 19.998 5.813 41.050 9.095 62.886 9.095 58.248 0 111.195-22.347 151.281-58.639zM163.539 429.854c34.124-42.075 62.102-86.859 85.173-131.102-89.57-27.708-179.682-30.961-214.257-31.021 14.276 72.493 63.368 132.518 129.084 162.124zM30.117 224c0 4.548 0.422 9.036 0.663 13.523 1.958-0.030 4.036-0.030 6.385-0.030 39.334 0 132.578 3.764 225.34 33.551 9.036-18.823 17.408-37.496 24.697-55.537-108.574-33.159-172.755-111.586-196.156-145.348-37.677 40.358-60.928 94.358-60.928 153.841zM113.182 49.197c17.95 27.136 78.336 105.954 185.073 137.637 28.943-78.245 42.315-142.878 47.164-170.195-27.437-11.866-57.645-18.522-89.419-18.522-54.151 0-103.876 19.185-142.818 51.079zM373.459 31.428c-5.964 32.015-19.155 91.618-45.267 162.786 43.49 8.433 93.636 8.674 150.829-4.367-10.27-67.042-49.935-124.356-105.563-158.419z" />
+<glyph unicode="&#xe744;" d="M421.677 144.941c-14.125 20.3-21.203 43.37-21.203 68.608 0 23.371 6.776 44.635 19.998 63.699 7.379 10.752 19.065 22.769 35.087 36.292-10.451 12.951-21.263 23.402-32.015 30.78-19.094 13.221-40.9 19.998-65.536 19.998-15.089 0-32.918-3.704-53.218-10.451-20.329-7.077-35.087-10.481-44.002-10.481-7.108 0-21.263 3.072-42.496 9.246-21.534 6.144-39.394 9.216-54.453 9.216-35.418 0-64.332-14.788-87.371-44.303-23.070-29.846-34.756-68.005-34.756-115.079 0-50.447 15.39-101.828 45.207-154.774 30.449-52.916 60.928-79.692 92.612-79.692 10.149 0 23.703 3.373 40.629 10.481 16.655 6.747 31.382 10.149 43.7 10.149 12.62 0 28.281-3.072 46.442-9.849 18.492-6.445 32.618-9.849 43.099-9.849 26.142 0 52.615 20.028 79.089 60.325 17.829 26.774 30.148 52.615 37.828 76.921-18.131 5.512-34.454 18.432-48.64 38.762zM407.281 45.764c-19.788-30.118-38.942-46.743-53.911-46.743-4.428 0-13.824 1.416-32.557 7.951-20.872 7.8-40.057 11.746-56.983 11.746-16.293 0-34.786-4.156-55.356-12.499-17.468-7.319-26.052-8.101-28.943-8.101-18.914 0-42.526 22.95-66.379 64.362-27.799 49.363-41.322 95.142-41.322 139.987 0 40.237 9.337 71.891 28.371 96.557 17.438 22.317 37.677 32.708 63.639 32.708 12.077 0 27.166-2.65 46.050-8.041 31.654-9.186 43.49-10.421 50.868-10.421 12.8 0 30.419 3.976 53.519 12.017 17.74 5.903 32.437 8.915 43.671 8.915 18.341 0 34.183-4.788 48.49-14.728 1.988-1.386 4.066-2.952 6.144-4.668-6.867-7.108-12.469-13.884-16.926-20.389-16.866-24.275-25.389-51.471-25.389-80.896 0-31.563 8.945-60.416 26.624-85.836 10.661-15.209 22.528-27.347 35.599-36.322-6.536-15.029-14.998-30.298-25.209-45.598zM283.829 360.613c-7.077-2.168-17.529-4.005-31.985-5.24 0.632 30.449 8.613 56.923 24.004 79.059 15.39 22.197 41.201 37.255 76.95 45.568 0.603-2.771 1.204-4.94 1.506-6.776 0-2.139 0.332-3.976 0.332-6.144 0-12.62-3.072-26.774-8.915-41.863-6.144-15.39-15.692-29.546-28.642-42.466-11.084-11.053-22.166-18.432-33.25-22.137z" />
+<glyph unicode="&#xe745;" d="M114.718 308.45h282.594v-205.011c0-18.764-15.119-33.882-33.521-33.882h-23.161v-69.873c0-17.558-14.125-31.684-31.654-31.684-17.558 0-31.774 14.156-31.774 31.684v69.873h-42.406v-69.873c0-17.529-14.215-31.684-31.774-31.684-17.197 0-31.382 14.156-31.382 31.684l-0.271 69.873h-22.799c-18.733 0-33.852 15.089-33.852 33.882v205.011zM70.987 314.293c-17.529 0-31.714-14.186-31.714-31.383v-132.397c0-17.558 14.185-31.684 31.714-31.684s31.383 14.156 31.383 31.684v132.397c0 17.197-14.095 31.382-31.382 31.382zM398.216 319.533h-284.732c0 48.941 29.274 91.437 72.674 113.573l-21.895 40.298c-1.235 2.168-0.632 4.94 1.536 6.174 2.138 0.933 4.94 0.332 6.174-1.868l22.137-40.628c18.823 8.342 39.756 12.95 61.892 12.95s43.068-4.608 61.892-12.921l22.137 40.629c1.235 2.168 4.036 2.771 6.174 1.868 2.168-1.235 2.771-4.006 1.536-6.174l-21.895-40.298c43.129-22.166 72.373-64.662 72.373-113.604zM203.023 382.931c0 6.476-5.21 12.017-11.957 12.017-6.506 0-11.716-5.541-11.716-12.017 0-6.445 5.21-11.987 11.716-11.987 6.746-0.030 11.957 5.512 11.957 11.987zM332.649 382.931c0 6.476-5.211 12.017-11.716 12.017-6.776 0-11.957-5.541-11.957-12.017 0-6.445 5.211-11.987 11.957-11.987 6.505-0.030 11.716 5.512 11.716 11.987zM441.012 314.293c-17.257 0-31.382-13.854-31.382-31.383v-132.397c0-17.558 14.125-31.684 31.382-31.684 17.529 0 31.714 14.156 31.714 31.684v132.397c-0.030 17.529-14.185 31.382-31.714 31.382z" />
+<glyph unicode="&#xe746;" d="M426.587 480h-381.41c-24.907 0-45.176-20.269-45.176-45.176v-421.647c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v383.217l-85.413 83.606zM240.941 449.882v-120.47h90.353v120.47h30.118v-150.588h-240.941v150.588h120.47zM90.353-1.882v180.706h331.294v-180.706h-331.294zM481.882 13.176c0-8.283-6.776-15.059-15.059-15.059h-15.059v210.823h-391.529v-210.823h-15.059c-8.313 0-15.059 6.776-15.059 15.059v421.647c0 8.283 6.746 15.059 15.059 15.059h45.177v-180.706h301.176v180.706h22.769l67.584-66.138v-370.567z" />
+<glyph unicode="&#xe747;" d="M466.824 480h-381.41l-85.413-83.606v-383.217c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v421.647c0 24.907-20.269 45.176-45.176 45.176zM391.529 449.882v-60.236h-240.941v60.236h240.941zM90.353-1.882v30.118h331.294v-30.118h-331.294zM481.882 13.176c0-8.283-6.747-15.059-15.059-15.059h-15.059v60.236h-391.529v-60.236h-15.059c-8.313 0-15.059 6.776-15.059 15.059v370.567l67.584 66.138h22.769v-90.353h301.176v90.353h45.176c8.313 0 15.059-6.776 15.059-15.059v-421.647zM256 329.412c-58.127 0-105.412-47.285-105.412-105.412s47.285-105.412 105.412-105.412 105.412 47.284 105.412 105.412-47.284 105.412-105.412 105.412zM256 148.706c-41.502 0-75.294 33.762-75.294 75.294s33.792 75.294 75.294 75.294 75.294-33.762 75.294-75.294-33.792-75.294-75.294-75.294z" />
+<glyph unicode="&#xe748;" d="M286.118-16.941c-9.849 1.747-19.998 3.163-30.419 3.163-10.119 0-20.269-1.445-30.388-3.163l3.764 204.77c-53.88 92.943-104.569 187.603-163.9 277.113 10.12-2.62 20.54-4.337 31.262-4.337s21.715 2.048 32.136 4.337c40.538-71.861 84.57-141.613 127.126-212.269 42.857 70.084 88.335 139.867 127.157 212.269 10.12-2.62 20.57-4.066 30.961-4.066 11.023 0 22.317 1.445 33.009 4.066-23.19-31.865-42.285-66.59-62.253-100.473-34.484-58.789-68.367-117.609-102.25-176.64l3.795-204.77z" />
+<glyph unicode="&#xe749;" d="M496.941 224c0-132.819-108.092-240.941-240.941-240.941s-240.941 108.123-240.941 240.941 108.092 240.941 240.941 240.941 240.941-108.123 240.941-240.941zM485.918 224c0 126.644-103.243 229.918-229.918 229.918s-229.918-103.274-229.918-229.918 103.243-229.918 229.918-229.918 229.918 103.274 229.918 229.918zM67.222 308.179l98.696-270.276c-69.12 33.642-116.706 104.358-116.706 186.097 0 29.816 6.475 58.368 18.010 84.179zM379.693 167.529l-20.45-68.849-74.752 222.088c0 0 12.378 0.813 23.673 2.168 11.023 1.356 9.698 17.769-1.325 16.926-33.611-2.409-55.145-2.68-55.145-2.68s-20.148 0.301-54.302 2.71c-11.294 0.813-12.649-16.113-1.356-16.926 10.481-1.084 21.504-2.198 21.504-2.198l32.256-88.185-45.177-135.53-75.294 223.714c0 0 12.379 0.813 23.673 2.168 11.023 1.356 9.698 17.769-1.325 16.926-33.37-2.409-55.145-2.68-55.145-2.68-3.764 0-8.313 0.271-13.162 0.271 36.834 56.229 100.292 93.334 172.635 93.334 53.79 0 102.731-20.721 139.565-54.332-0.813 0-1.868 0-2.68 0-20.179 0-34.695-17.498-34.695-36.593 0-16.926 9.939-31.202 20.42-48.369 8.101-13.733 16.926-31.473 16.926-57.043 0.030-17.679-7.198-38.159-15.842-66.922zM323.192 31.97c0.271-1.054 0.813-2.108 1.356-2.952-21.504-7.529-44.363-11.836-68.578-11.836-20.148 0-39.785 3.012-58.368 8.613l61.862 180.133 63.729-173.959zM462.788 224c0-76.348-41.412-142.788-103.002-178.567l63.187 182.332c10.481 30.148 15.872 53.218 15.872 74.24 0 7.5-0.542 14.517-1.627 21.233 16.173-29.575 25.57-63.217 25.57-99.238z" />
+<glyph unicode="&#xe74a;" d="M485.858 410.7c-17.468 22.166-54.091 23.010-79.661 19.185-20.48-3.404-90.293-34.063-113.755-107.791 41.773 3.404 63.849-3.042 59.633-49.002-1.747-19.576-11.535-40.478-22.166-60.958-12.83-23.372-36.171-69.421-67.313-36.171-27.678 29.817-25.992 86.889-31.924 124.808-3.885 21.324-7.68 47.737-14.517 69.873-5.994 18.764-20.059 41.292-36.623 46.442-18.311 5.15-40.93-2.981-54.121-10.632-41.834-24.757-69.451-59.693-110.351-88.636v-3.012c13.613-6.837 9.396-17.89 20.028-19.606 25.148-3.373 48.941 23.492 65.626-4.638 10.21-17.017 13.192-35.78 19.547-54.151 8.915-24.666 15.39-51.531 22.588-79.661 11.927-48.188 26.444-119.717 68.156-137.246 20.932-8.945 52.887 3.012 68.638 12.83 43.399 25.6 78.005 62.644 106.496 100.954 66.892 89.54 103.123 191.759 108.664 221.154 3.825 20.058 3.404 40.508-8.945 56.26z" />
+<glyph unicode="&#xe74b;" d="M459.385 328.268c0.332-4.548 0.332-9.096 0.332-13.673 0-138.692-105.592-298.526-298.556-298.526-59.452 0-114.688 17.228-161.16 47.104 8.463-0.964 16.595-1.265 25.359-1.265 49.062 0 94.178 16.565 130.259 44.815-46.14 0.964-84.781 31.202-98.093 72.794 6.475-0.964 12.98-1.627 19.757-1.627 9.457 0 18.884 1.295 27.648 3.554-48.068 9.758-84.148 51.983-84.148 102.972 0 0.332 0 0.994 0 1.295 13.974-7.771 30.208-12.649 47.435-13.312-28.251 18.853-46.773 51.019-46.773 87.371 0 19.486 5.21 37.376 14.306 52.977 51.652-63.699 129.295-105.291 216.365-109.809-1.656 7.8-2.62 15.932-2.62 24.064 0 57.796 46.803 104.9 104.93 104.9 30.208 0 57.495-12.649 76.68-33.13 23.702 4.548 46.411 13.312 66.59 25.329-7.8-24.365-24.365-44.845-46.14-57.796 21.142 2.259 41.592 8.101 60.446 16.233-14.306-20.781-32.166-39.334-52.615-54.272z" />
+<glyph unicode="&#xe74c;" d="M274.191 464.941v-121.735h114.236v-75.596h-114.236v-123.603c0-27.919 1.265-45.809 4.397-53.971 2.831-7.861 8.463-14.095 16.293-18.824 10.661-6.565 22.919-9.728 36.714-9.728 24.486 0 48.64 7.861 72.795 23.884v-75.926c-20.721-9.728-39.213-16.625-55.838-20.42-16.655-4.066-34.816-5.933-54.302-5.933-21.956 0-41.382 2.831-58.368 8.463-16.926 5.331-31.382 13.493-43.279 23.522-11.897 10.33-20.359 21.324-24.756 32.918-4.698 11.625-6.897 28.522-6.897 50.507v169.111h-53.339v68.096c18.793 6.235 35.117 15.059 48.61 26.323 13.523 11.626 24.185 25.42 32.346 41.412 8.132 16.324 13.794 36.714 16.926 61.5h68.698z" />
+<glyph unicode="&#xe74d;" d="M496.941 3.147c0-10.993-9.096-20.089-20.089-20.089h-441.705c-10.963 0-20.088 9.096-20.088 20.089v441.705c0 10.993 9.095 20.089 20.088 20.089h441.736c10.963 0 20.089-9.096 20.089-20.089v-441.705zM235.911 404.706c0 5.662-4.397 10.029-10.029 10.029h-150.588c-5.662 0-10.029-4.397-10.029-10.029v-321.265c0-5.632 4.397-10.029 10.029-10.029h150.588c5.662 0 10.029 4.397 10.029 10.029v321.265zM446.735 404.706c0 5.662-4.397 10.029-10.029 10.029h-150.588c-5.662 0-10.029-4.397-10.029-10.029v-200.795c0-5.632 4.367-10.029 10.029-10.029h150.588c5.662 0 10.029 4.397 10.029 10.029v200.795z" />
+<glyph unicode="&#xe74e;" d="M381.289-7.274c0-9.397-0.271-9.397-0.271-9.397v-0.271h-304.369c-9.427 0-9.427 0.271-9.427 0.271h-0.271v197.933h32.557v-166.219h249.555v166.22h32.226v-188.536zM316.507 47.631l-190.102-0.271v40.599l190.102 0.271v-40.599zM321.084 140.092l-3.493-40.327-189.59 17.468 3.764 40.327 189.32-17.468zM333.733 193.34l-10.511-39.303-183.657 49.243 10.481 39.274 183.687-49.212zM357.647 239.601l-20.721-34.937-163.75 96.768 20.691 34.966 163.78-96.798zM397.704 268.092l-33.31-22.859-107.339 157.034 33.611 23.161 107.038-157.334zM445.048 277.489l-40.087-6.988-32.527 187.452 40.056 6.988 32.557-187.452z" />
+<glyph unicode="&#xe74f;" d="M26.564 174.848l-4.186-26.353c-0.211-1.054-0.813-1.868-1.867-1.868s-1.686 0.813-1.867 1.868l-3.584 26.353 3.554 26.774c0.211 1.054 0.843 1.868 1.867 1.868s1.657-0.813 1.867-1.868l4.216-26.774zM45.809 174.848l-5.421-42.436c-0.211-1.054-1.054-1.868-2.078-1.868-1.054 0-1.867 0.813-1.867 2.048l-4.819 42.255c4.819 43.309 4.819 43.309 4.819 43.309 0 1.024 0.813 1.868 1.867 1.868 1.024 0 1.867-0.844 2.078-1.868l5.421-43.309zM64.844 174.848l-5.21-49.574c0-1.235-1.054-2.289-2.319-2.289s-2.289 1.054-2.5 2.289l-4.397 49.574 4.397 51.23c0.211 1.476 1.265 2.5 2.5 2.5 1.265 0 2.319-1.024 2.319-2.5l5.21-51.23zM84.088 174.848l-4.819-51.019c-0.211-1.687-1.445-2.74-2.921-2.74-1.445 0-2.71 1.054-2.71 2.74l-4.397 51.019 4.397 52.706c0 1.686 1.265 2.71 2.71 2.71 1.476 0 2.71-1.024 2.921-2.71l4.819-52.706zM103.334 174.848l-4.397-51.471c-0.211-1.868-1.686-3.343-3.343-3.343s-3.132 1.476-3.132 3.343l-4.186 51.471 4.186 48.911c0 1.716 1.476 3.162 3.132 3.162 1.686 0 3.132-1.476 3.343-3.162l4.397-48.911zM122.971 174.848l-4.397-51.471c0-2.048-1.686-3.764-3.554-3.764-2.078 0-3.554 1.716-3.764 3.764l-3.764 51.471c3.764 79.51 3.764 79.51 3.764 79.51 0.241 2.048 1.686 3.734 3.764 3.734 1.868 0 3.554-1.686 3.554-3.734l4.397-79.51zM142.215 174.426l-3.976-51.050c0-2.289-1.898-3.945-3.976-3.945-2.289 0-3.946 1.656-4.186 3.945l-3.343 51.050c3.343 97.882 3.343 97.882 3.343 97.882 0.211 2.289 1.868 3.976 4.186 3.976 2.078 0 3.976-1.687 3.976-3.976l3.976-97.882zM162.515 174.848l-3.764-50.628c-0.211-2.5-2.078-4.397-4.608-4.397-2.289 0-4.186 1.868-4.397 4.397l-3.343 50.628 3.343 105.834c0 2.5 2.108 4.608 4.397 4.608 2.5 0 4.397-2.108 4.608-4.608l3.764-105.834zM182.393 174.848l-3.373 109.387c-0.18 2.711-2.289 5.029-5 5.029-2.5 0-4.819-2.319-4.819-5.029l-2.952-109.387 2.952-50.417c0.211-2.711 2.319-4.819 4.819-4.819 2.71 0 4.819 2.108 5.030 4.819l3.343 50.417zM202.451 174.848l-3.132-49.995c0-2.921-2.289-5.24-5.24-5.24-2.922 0-5.030 2.319-5.21 5.24l-2.952 49.995 2.952 106.676c0 2.952 2.289 5.24 5.21 5.24 2.952 0 5.24-2.289 5.24-5.24l3.132-106.676zM222.961 174.637l-2.952-49.393c0-3.132-2.5-5.662-5.632-5.662s-5.662 2.53-5.843 5.662l-2.5 49.393 2.5 102.882c0.211 3.343 2.71 5.873 5.843 5.873 3.132 0 5.421-2.53 5.632-5.873l2.952-102.882zM243.23 174.637l-2.5 122.579c0 2.078-1.054 3.976-2.71 5-1.054 0.632-2.108 1.054-3.343 1.054-1.265 0-2.289-0.421-3.343-1.054-1.686-1.054-2.74-2.922-2.74-5l-0.211-1.235-2.108-121.103c0 0 0-0.211 2.319-49.363 0 0 0 0 0-0.241 0-1.235 0.422-2.5 1.265-3.524 1.265-1.476 2.922-2.289 4.819-2.289 1.686 0 3.132 0.813 4.186 1.868 1.265 1.024 1.868 2.5 1.868 4.187l0.211 5 2.289 44.123zM261.452 126.329c0-3.554-2.921-6.476-6.476-6.476s-6.476 2.921-6.716 6.476l-1.235 23.823-1.265 24.486 2.5 133v0.662c0.211 1.868 1.054 3.764 2.53 5 1.024 0.813 2.5 1.476 4.156 1.476 1.054 0 2.319-0.421 3.132-1.054 1.868-1.024 3.132-3.132 3.343-5.421l2.921-133.662-2.892-48.308zM437.76 119.612c-164.202 0-164.382 0-164.382 0-3.554 0.421-6.476 3.132-6.476 6.897v188.084c0 3.524 1.265 5.21 5.873 6.897 11.505 4.578 24.456 7.077 37.858 7.077 54.573 0 99.358-41.803 104.147-95.142 7.108 2.922 14.848 4.608 23.010 4.608 32.618 0 59.181-26.594 59.181-59.422-0.030-32.647-26.594-59-59.212-59z" />
+<glyph unicode="&#xe750;" d="M496.941 83.411c0-55.507-44.875-100.352-100.382-100.352-55.537 0-100.382 44.845-100.382 100.352 0 3.493 0.301 7.228 0.603 10.661l-112.941 56.5c-17.86-16.625-42.044-26.986-68.397-26.986-55.537 0-100.382 44.845-100.382 100.412 0 55.507 44.845 100.352 100.382 100.352 26.353 0 50.508-10.33 68.397-26.955l112.941 56.44c-0.301 3.494-0.603 7.228-0.603 10.662 0 55.567 44.845 100.412 100.382 100.412 55.507 0 100.382-44.845 100.382-100.412 0-55.537-44.875-100.382-100.382-100.382-26.353 0-50.507 10.361-68.397 26.986l-112.941-56.47c0.301-3.464 0.632-7.228 0.632-10.661 0-3.464-0.332-7.228-0.632-10.661l112.941-56.531c17.89 16.655 42.075 27.015 68.397 27.015 55.507 0.060 100.382-44.785 100.382-100.382z" />
+<glyph unicode="&#xe751;" d="M496.941 73.412c0-49.875-40.478-90.353-90.353-90.353h-301.176c-49.875 0-90.353 40.478-90.353 90.353v301.176c0 49.875 40.478 90.353 90.353 90.353h301.176c49.875 0 90.353-40.478 90.353-90.353v-301.176zM349.786 197.316c-17.558 0-33.551-6.897-45.478-18.191l-75.596 37.647c0.301 2.53 0.602 4.699 0.602 7.228s-0.301 4.698-0.632 7.228l75.595 37.617c11.926-11.294 27.919-18.191 45.478-18.191 36.714 0 66.831 30.087 66.831 67.132 0 36.714-30.118 66.831-66.831 66.831-37.014 0-67.132-30.118-67.132-66.831 0-2.5 0.301-4.699 0.632-7.198l-75.596-37.647c-11.897 10.993-27.889 17.89-45.447 17.89-36.714 0-66.831-29.786-66.831-66.831s30.117-66.831 66.831-66.831c17.559 0 33.551 6.897 45.477 17.89l75.595-37.647c-0.332-2.5-0.632-4.699-0.632-7.198 0-36.714 30.118-66.831 67.132-66.831 36.714 0 66.831 30.118 66.831 66.831 0 37.014-30.118 67.102-66.831 67.102z" />
+<glyph unicode="&#xe752;" d="M469.263 180.751c0.723-4.849 1.204-9.939 1.204-14.788 0-39.394-23.070-75.806-64.603-103.002-40.569-26.474-93.997-41.050-150.829-41.050s-110.501 14.577-150.829 41.050c-41.803 27.196-64.603 63.608-64.603 103.002 0 5.331 0.482 10.661 1.205 16.022-15.3 9.698-25.75 26.955-25.75 46.411 0 30.328 24.546 54.875 54.874 54.875 13.613 0 26.263-5.12 35.96-13.372 38.882 24.787 89.63 38.882 143.781 39.876l32.557 102.701c1.445 4.608 6.325 7.288 11.173 6.325l84.3-19.908c7.017 16.023 23.070 27.196 41.532 27.196 25.028 0 45.176-20.42 45.176-45.207 0-24.998-20.149-45.418-45.176-45.418-24.787 0-44.935 20.179-45.176 44.936l-76.529 17.98-28.16-88.877c51.23-2.168 99.087-16.293 136.012-40.327 9.698 8.734 22.588 14.095 36.683 14.095 30.329 0 54.875-24.546 54.875-54.875 0-20.42-11.173-38.159-27.678-47.646zM46.14 201.412c7.77 20.872 22.588 40.327 43.7 57.103-5.541 3.855-12.62 6.053-19.908 6.053-19.908 0-36.172-16.263-36.172-36.172 0-10.722 4.849-20.42 12.379-26.985zM451.764 165.964c0 32.527-19.938 63.608-56.109 87.221-37.406 24.275-87.431 37.858-140.619 37.858s-103.244-13.613-140.649-37.858c-36.202-23.582-56.109-54.663-56.109-87.221 0-32.798 19.908-63.88 56.109-87.462 37.406-24.275 87.431-37.888 140.619-37.888s103.243 13.613 140.619 37.888c36.202 23.582 56.139 54.663 56.139 87.462zM183.627 158.916c-18.221 0-33.762 14.818-33.762 33.039 0 18.432 15.541 33.762 33.762 33.762s33.28-15.33 33.28-33.762c0-18.221-15.059-33.039-33.28-33.039zM333.733 110.547c3.644-3.614 3.644-9.698 0-13.342-16.264-16.264-41.532-24.034-77.493-24.034h-0.482c-35.96 0-61.229 7.771-77.493 24.034-3.644 3.644-3.644 9.728 0 13.342 3.644 3.675 9.457 3.675 13.131 0 12.619-12.62 33.521-18.673 64.362-18.673h0.482c30.63 0 51.742 6.053 64.361 18.673 3.644 3.675 9.457 3.675 13.132 0zM362.135 191.955c0-18.191-15.059-33.039-33.28-33.039s-33.762 14.818-33.762 33.039c0 18.432 15.541 33.762 33.762 33.762s33.28-15.33 33.28-33.762zM392.734 380.883c0-14.517 11.897-26.443 26.474-26.443s26.474 11.926 26.474 26.443c0 14.577-11.926 26.504-26.474 26.504-14.577 0-26.474-11.927-26.474-26.504zM478.238 228.397c0 19.908-16.264 36.171-36.171 36.171-7.771 0-15.059-2.439-20.901-6.806 20.901-16.775 35.69-36.442 43.249-57.826 8.493 6.837 13.824 17.046 13.824 28.461z" />
+<glyph unicode="&#xe753;" d="M256 464.941c-133.060 0-240.941-107.851-240.941-240.941 0-98.635 59.332-183.417 144.233-220.672-0.662 16.836-0.15 37.014 4.186 55.326 4.608 19.546 30.991 131.283 30.991 131.283s-7.71 15.39-7.71 38.129c0 35.72 20.721 62.343 46.501 62.343 21.925 0 32.497-16.444 32.497-36.141 0-22.016-14.065-54.995-21.293-85.504-6.024-25.57 12.83-46.411 38.038-46.411 45.659 0 76.409 58.609 76.409 128.090 0 52.796-35.599 92.34-100.262 92.34-73.096 0-118.603-54.543-118.603-115.38 0-21.022 6.174-35.81 15.872-47.255 4.428-5.271 5.060-7.409 3.464-13.433-1.144-4.428-3.825-15.119-4.909-19.336-1.626-6.114-6.565-8.283-12.047-6.053-33.702 13.764-49.363 50.628-49.363 92.070 0 68.428 57.706 150.528 172.213 150.528 91.979 0 152.516-66.59 152.516-138.029 0-94.54-52.555-165.135-129.988-165.135-26.022 0-50.507 14.095-58.88 30.058 0 0-13.975-55.537-16.926-66.228-5.12-18.582-15.119-37.135-24.275-51.622 21.655-6.445 44.544-9.909 68.276-9.909 133.060 0 240.941 107.851 240.941 240.941s-107.882 240.941-240.941 240.941z" />
+<glyph unicode="&#xe754;" d="M0 409.555l209.829 28.883v-202.752h-209.829v173.869zM0 38.445l209.829-28.883v200.283h-209.829v-171.399zM232.93 441.54v-205.854h279.070v244.315l-279.070-38.46zM232.93 6.46l279.070-38.46v241.845h-279.070v-203.385z" />
+<glyph unicode="&#xe755;" d="M417.099 20.706c-15.33-7.83-35.78-25.058-43.309-32.286-5.662-5.391-29.034-8.101-42.225-1.356-15.33 7.83-7.259 20.209-30.931 20.962-11.836 0.301-23.401 0.301-34.966 0.301-10.21-0.301-20.42-0.813-30.931-1.054-35.478-0.813-38.972-23.702-61.862-22.889-15.601 0.542-35.208 12.921-69.12 19.877-23.672 4.879-46.502 6.174-51.38 16.685-4.819 10.511 5.933 22.317 6.716 32.527 0.813 13.733-10.21 32.286-2.139 39.303 6.987 6.174 21.775 1.627 31.443 6.957 10.21 5.903 14.516 10.511 14.516 23.13 3.764-12.86-0.271-23.341-8.614-28.461-5.12-3.223-14.516-4.849-22.347-4.066-6.174 0.572-9.939-0.241-11.565-2.68-2.41-2.952-1.627-8.342 1.355-15.33 2.952-6.988 6.445-11.565 5.903-20.149-0.271-8.613-9.939-18.853-8.313-26.112 0.542-2.711 3.222-5.12 9.939-6.988 10.752-2.952 30.388-5.903 49.483-10.511 21.263-5.361 43.309-15.029 57.043-13.161 40.869 5.662 17.468 49.483 11.023 59.934-34.696 54.363-57.555 89.841-75.836 75.866-4.578-3.764-4.849 9.156-4.578 14.276 0.813 17.769 9.698 24.185 15.059 37.918 10.21 26.112 18.010 55.928 33.611 71.258 11.655 15.089 29.937 39.544 33.46 52.435-2.982 27.979-3.795 57.555-4.307 83.335-0.542 27.708 3.764 51.953 34.966 68.849 7.5 4.066 17.438 5.662 27.949 5.662 18.552 0.301 39.244-5.12 52.435-14.788 20.992-15.601 34.154-48.67 32.557-72.313-1.084-18.553 2.139-37.647 8.072-57.555 6.988-23.401 18.041-39.786 35.78-58.609 21.263-22.588 37.918-66.952 42.767-95.172 4.307-26.413-1.627-42.797-7.259-43.611-8.613-1.295-13.974-28.461-40.87-27.407-17.197 0.813-18.824 11.023-23.673 19.908-7.8 13.704-15.601 9.397-18.553-5.12-1.627-7.259-0.572-18.041 1.868-26.052 4.849-16.956 3.223-32.828 0.271-52.465-5.662-37.105 26.082-44.092 47.345-26.323 20.962 17.438 25.54 20.149 51.892 29.305 40.056 13.733 26.624 25.811 5.090 33.069-19.365 6.476-20.149 39.033-13.192 45.207 1.627-34.966 19.908-40.087 27.437-44.906 33.069-20.51-12.378-37.466-32.015-47.405zM371.923 150.573c7.259 24.245 4.036 33.882-0.783 56.772-3.764 17.197-19.637 40.629-32.015 47.857 3.223-2.68 9.156-10.481 15.33-22.287 10.752-20.209 21.504-50.026 14.517-74.782-2.68-9.637-9.125-10.993-13.433-11.264-18.824-2.168-7.8 22.588-15.601 56.17-8.885 37.677-18.010 40.358-20.149 43.309-11.084 48.911-23.161 44.062-26.684 62.344-2.952 16.414 14.276 29.846-9.125 34.424-7.259 1.356-17.468 8.613-21.504 9.156-4.036 0.512-6.204 27.166 8.854 27.979 14.788 1.084 17.498-16.685 14.788-23.702-4.276-6.957 0.271-9.668 7.56-7.228 5.903 1.867 2.139 17.468 3.493 19.606-3.764 22.588-13.192 25.811-22.86 27.708-37.135-2.952-20.45-43.851-24.214-40.087-5.391 5.662-20.962 0.542-20.962 4.066 0.271 20.962-6.746 33.069-16.414 33.34-10.752 0.271-15.059-14.788-15.601-23.371-0.813-8.072 4.578-25.058 8.613-23.703 2.68 0.813 7.258 6.204 2.41 5.903-2.41 0-6.174 5.933-6.716 12.921-0.271 7.017 2.44 14.005 11.565 13.733 10.481-0.271 10.481-21.233 9.397-22.046-3.464-2.41-7.8-7.018-8.343-7.801-3.464-5.662-10.18-7.228-12.891-9.698-4.578-4.819-5.632-10.21-2.138-12.077 12.348-6.988 8.313-15.029 25.54-15.631 11.294-0.542 19.607 1.626 27.437 4.036 5.903 1.868 25.028 5.903 29.033 12.921 1.868 2.952 4.036 2.952 5.361 2.138 2.68-1.325 3.223-6.445-3.493-8.072-9.397-2.71-18.824-7.83-27.407-11.053-8.343-3.464-11.023-4.819-18.823-6.144-17.739-3.223-30.9 6.445-19.095-5.12 4.036-3.764 7.8-6.174 18.011-5.933 22.588 0.813 47.616 28.010 50.026 15.902 0.512-2.68-7.017-5.903-12.921-8.885-20.962-10.21-35.75-30.66-49.212-23.642-12.107 6.445-24.185 36.322-23.944 22.829 0.271-20.691-27.166-38.972-14.517-62.644-8.343-2.108-26.895-41.683-29.576-62.103-1.626-11.836 1.084-26.353-1.898-34.425-4.036-11.836-22.317 11.294-16.384 39.514 1.054 4.819 0 5.933-1.356 3.464-7.258-13.161-3.222-31.714 2.68-44.604 2.44-5.662 8.613-8.072 13.191-12.921 9.397-10.722 46.501-38.189 52.977-44.906 8.343-7.8 5.933-26.052-11.294-27.949 8.885-16.685 17.468-18.312 17.227-45.447 10.21 5.361 6.204 17.197 1.868 24.697-2.982 5.421-6.716 7.83-5.933 9.156 0.542 0.813 5.933 5.421 8.885 1.868 9.125-10.21 26.353-12.077 44.635-9.668 18.553 2.168 38.46 8.613 47.586 23.401 4.307 6.988 7.259 9.397 9.156 8.072 2.139-1.054 2.981-5.903 2.68-13.974-0.271-8.613-3.764-17.498-6.174-24.757-2.44-8.342-3.223-13.974 4.849-14.276 2.139 15.089 6.445 29.877 7.529 44.935 1.356 17.197-11.023 48.911 2.44 64.813 3.493 4.307 7.771 4.819 13.704 4.819 0.783 21.534 33.882 19.877 44.906 11.023 0 4.879-10.481 9.427-14.788 11.324zM152.486 228.006c-1.898-3.464-6.716-6.144-2.982-6.716 1.356-0.271 5.12 3.012 6.746 6.716 1.325 4.578 2.68 7.018 0.542 7.831-2.44 0.783-1.898-4.036-4.307-7.831zM214.046 373.775c-3.222 0.813-2.68-4.005-1.054-3.493 1.084 0 2.44-1.627 1.868-4.036-0.542-3.222-0.271-5.421 2.168-5.421 0.271 0 0.783 0 0.783 0.813 1.114 6.776-2.138 11.596-3.764 12.137zM221.334 349.048c-2.68-0.271-2.168 5.933 6.445 5.391-5.391-0.542-3.494-5.391-6.445-5.391zM243.381 353.626c7.8 3.464 10.481-1.897 7.8-2.981-2.71-0.783-2.982 4.337-7.8 2.981zM275.908 375.401c-3.493-0.301-2.409-1.868-0.783-2.409 2.139-0.603 4.307-4.337 4.849-8.343 0-0.542 2.68 0.542 2.68 1.356 0.241 6.415-5.391 9.638-6.747 9.397zM291.509 433.468c-2.139 2.168-4.307 4.066-6.445 4.066-5.391-0.542-2.711-6.174-3.493-8.885-1.084-2.952-5.090-5.391-2.409-7.529 2.44-1.868 4.036 2.952 9.156 4.819 1.325 0.572 7.529-0.241 8.854 2.71 0.241 1.356-3.223 2.952-5.662 4.819zM321.356 314.654c-5.090 3.192-6.174 8.584-8.041 6.716-5.662-6.174 6.988-19.095 12.348-20.209 3.223-0.542 5.662 3.795 4.849 7.56-1.084 5.090-4.849 3.222-9.156 5.933z" />
+<glyph unicode="&#xe756;" d="M496.941 152.712c0-51.531-42.587-93.425-94.81-93.425-1.868 0-3.524 0.241-5.18 0.241h-286.358c-52.706 3.072-95.533 43.309-95.533 95.533 0 35.057 19.064 65.656 47.526 82.341-1.867 6.114-2.831 12.469-2.831 19.305 0 35.99 29.425 65.174 66.108 65.174 15.059 0 29.184-5.18 40.478-13.643 23.070 47.526 72.012 80.474 129.175 80.474 79.3 0 143.3-63.308 143.3-141.191 0-2.831-0.241-5.662-0.241-8.463 34.123-14.125 58.368-47.525 58.368-86.347zM193.898 114.341c23.070 0 39.756 7.288 56.47 23.281-6.837 8.463-14.366 16.716-21.413 25.178-9.637-9.397-20.239-15.3-33.882-15.3-16.715 0-31.052 11.053-31.052 28.461 0 17.167 14.366 28.461 30.6 28.461 51.772 0 62.825-90.353 138.12-90.353 36.714 0 67.764 23.070 67.764 61.651 0 39.063-31.292 61.892-68.457 61.892-23.070 0-40.237-6.596-56.712-22.829 7.529-8.222 14.577-16.926 21.895-25.419 9.397 9.186 19.998 15.059 33.401 15.059 15.541 0 31.051-11.053 31.051-27.527 0-18.131-13.192-29.636-30.81-29.636-50.116 0-63.518 90.353-136.945 90.353-36.472 0-68.698-22.348-68.698-61.169-0.060-39.725 31.232-62.103 68.668-62.103z" />
+<glyph unicode="&#xe757;" d="M300.544 118.257l-47.375-47.676-9.397-9.397c-27.618-27.286-66.198-36.714-101.316-27.919-6.626-28.883-32.346-50.206-63.066-50.206-35.449 0-64.332 28.883-64.332 64.632 0 30.389 21.022 56.139 49.573 62.705-9.096 35.478 0.301 74.391 27.919 101.978l3.764 3.764 47.375-47.707-3.434-3.433c-15.692-15.36-15.36-40.448 0-56.109 15.36-15.39 40.478-15.39 55.838 0l9.427 9.397 47.375 47.707 50.508 50.176 47.375-47.707-50.236-50.206zM247.537 378.654l-47.676-47.646-3.795 3.764c-15.36 15.36-40.478 15.36-55.838 0-15.36-15.39-15.36-40.81 0-56.17l106.978-106.978-47.345-47.676-50.507 50.206-47.375 47.646-9.427 9.397c-28.883 28.551-37.647 69.662-26.684 106.375-28.852 6.264-50.176 31.985-50.176 62.735 0 35.78 28.883 64.632 64.332 64.632 32.316 0 58.669-23.522 63.669-53.971 34.816 8.162 72.794-1.596 100.081-28.522l3.764-3.795zM440.471 336.308c10.361-36.051 1.235-76.529-27.286-105.080l-3.764-3.764-47.375 47.707 3.764 3.734c15.36 15.39 15.36 40.508 0 55.868-15.36 15.36-40.478 15.36-55.838 0l-107.309-107.34-47.676 47.707 50.507 50.206 47.676 47.646 9.096 9.427c28.551 28.522 69.331 37.647 105.743 26.956 4.367 31.413 31.353 55.567 64 55.567 35.449 0 64.332-28.883 64.332-64.632-0.030-32.618-24.486-59.603-55.868-64zM432.61-16.941c-31.353 0-57.404 22.257-63.368 51.772-36.382-11.264-78.125-2.53-106.978 26.353l-3.433 3.764 47.375 47.676 3.764-3.735c15.36-15.39 40.478-15.39 55.838 0 15.36 15.36 15.36 40.448 0 55.838l-9.397 9.427-97.913 97.852 47.676 47.707 97.882-97.913 9.125-9.397c27.286-27.286 37.014-65.897 28.22-101.014 31.382-4.397 55.537-31.082 55.537-63.668 0-35.78-28.853-64.662-64.332-64.662z" />
+<glyph unicode="&#xe758;" d="M468.028 464.941l-38.55-433.062-174.080-48.82-172.875 48.82-38.55 433.062h424.057zM389.12 376.425h-266.24l14.155-160.828h184.35l-6.686-68.638-59.302-16.022-59.030 15.993-3.916 42.135h-52.676l6.626-83.697 109.026-30.118h1.175v0.301l108.152 29.817 15.059 163.84h-193.988l-4.518 54.513h202.993l4.819 52.706z" />
+<glyph unicode="&#xe759;" d="M256 464.941c-133.060 0-240.941-107.911-240.941-240.941 0-133.060 107.882-240.941 240.941-240.941s240.941 107.882 240.941 240.941c0 133.029-107.882 240.941-240.941 240.941zM163.629 149.339c-41.894 0-75.867 33.913-75.867 75.836 0 41.894 33.972 75.836 75.867 75.836s75.806-33.942 75.806-75.836c0-41.924-33.942-75.836-75.806-75.836zM353.882 149.339c-41.894 0-75.836 33.913-75.836 75.836 0 41.894 33.942 75.836 75.836 75.836s75.836-33.942 75.836-75.836c0-41.924-33.942-75.836-75.836-75.836z" />
+<glyph unicode="&#xe75a;" d="M0 419.764v-391.529h512v391.529h-512zM255.82 184.335l-207.691 205.312h416.226l-208.535-205.312zM173.327 223.518l-143.209-141.011v282.594l143.209-141.583zM194.74 202.346l61.019-60.325 60.115 59.212 144.565-142.878h-411.919l146.221 143.993zM337.348 222.344l144.535 142.306v-285.124l-144.534 142.818z" />
+<glyph unicode="&#xe75b;" d="M257.897-16.941c-111.978 0-212.691 88.124-212.691 207.993 0 119.688 93.304 175.074 110.592 184.139 20.601 10.963 35.418 16.745 58.73 35.388 11.535 9.065 21.143 22.257 24.184 54.362 16.715-20.028 36.774-43.339 51.019-52.977 23.341-15.36 46.683-21.413 71.077-36.774 14.818-9.065 105.954-64.753 105.954-187.964 0-122.94-97.159-204.167-208.866-204.167zM422.55 181.745c-21.956 0-66.409-45.568-89.721-45.839-27.136-0.542-64.723 53.82-119.085 53.308-42.827-0.301-76.559-34.334-77.132-70.565-0.271-20.329 6.325-35.418 20.329-44.996 9.337-6.295 17.829-10.149 45.538-10.149 46.11 0 104.568 57.103 131.464 56.23 21.384-0.783 54.573-53.248 71.349-54.332 13.161-1.084 20.028 4.94 31.262 21.113 10.963 16.474 15.661 42.285 15.661 56.832 0 14.245-6.325 38.4-29.666 38.4zM358.912 36.036c-9.337-6.867-30.208-15.39-59.844-15.39s-43.611 6.325-52.947 13.462c-1.356 1.084-0.813 1.084-3.584 1.084-3.012 0-4.638-1.385-7.108-3.283-2.198-1.928-3.283-6.596 0-9.878 20.299-18.643 54.332-17.017 79.3-14.788 25.269 2.469 46.683 17.257 48.851 19.456 3.283 3.252 2.469 6.024 1.897 7.951-0.542 1.928-2.199 4.638-6.565 1.385zM344.064 82.929c-5.481 3.554-13.402 4.126-20.812 4.126-7.439 0-11.535 0.542-19.456-2.74-8.012-3.283-16.233-10.692-21.413-15.39-5.24-4.638-6.053-8.222-3.313-12.077 2.771-3.524 5.783-1.325 13.462 5.24 7.951 6.325 13.192 12.077 29.365 12.077s18.944-6.053 22.197-12.077c3.313-6.024 3.584-6.867 6.867-5.24 3.855 1.928 5.783 4.699 3.855 9.397-1.957 4.638-5.24 12.86-10.752 16.685z" />
+<glyph unicode="&#xe75c;" d="M15.059 198.58l141.764-92.461 99.177 82.703-142.908 88.245zM156.822 448.015l-141.764-92.491 98.033-78.457 142.908 88.154zM496.941 355.524l-141.733 92.491-99.207-82.793 142.938-88.154zM256 188.822l99.207-82.703 141.733 92.461-98.003 78.486zM256.301 171.023l-99.478-82.492-42.556 27.829v-31.172l142.035-85.203 142.065 85.203v31.172l-42.587-27.829z" />
+<glyph unicode="&#xe75d;" d="M496.941 442.052l-72.493-363.339-219.166-72.764-190.223 72.764 19.365 97.069h80.956l-7.921-40.057 114.989-43.882 132.457 43.882 18.492 92.401h-329.156l15.782 80.896h329.487l10.39 52.103h-329.216l16.052 80.926h410.202z" />
+<glyph unicode="&#xe75e;" d="M300.243 58.353h-30.118c0 97.37-80.655 176.58-179.772 176.58v30.118c115.742 0 209.89-92.732 209.89-206.697zM90.353 374.588v-30.117c160.436 0 286.118-125.681 286.118-286.118h30.118c0 177.333-138.902 316.236-316.236 316.236zM180.706 103.5c0 24.908-20.209 45.207-45.086 45.207-24.968 0-45.267-20.3-45.267-45.207s20.299-45.176 45.267-45.176c24.877 0 45.086 20.269 45.086 45.176zM150.588 103.5c0-8.283-6.716-15.059-14.969-15.059-8.343 0-15.149 6.776-15.149 15.059 0 8.313 6.806 15.089 15.149 15.089 8.252 0 14.969-6.776 14.969-15.089zM512 13.176v421.647c0 24.908-20.269 45.176-45.176 45.176h-421.647c-24.907 0-45.176-20.269-45.176-45.176v-421.647c0-24.907 20.269-45.176 45.176-45.176h421.647c24.907 0 45.176 20.269 45.176 45.176zM466.824 449.882c8.313 0 15.059-6.776 15.059-15.059v-421.647c0-8.283-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.776-15.059 15.059v421.647c0 8.282 6.746 15.059 15.059 15.059h421.647z" />
+<glyph unicode="&#xe75f;" d="M336.505-32h-30.118c0 166.068-137.457 301.176-306.387 301.176v30.118c185.555 0 336.505-148.63 336.505-331.294zM0 480v-30.118c270.216 0 481.882-211.667 481.882-481.882h30.118c0 287.082-224.918 512-512 512zM120.471 28.205c0 33.25-26.986 60.266-60.115 60.266-33.28 0-60.356-27.015-60.356-60.265 0-33.22 27.076-60.205 60.356-60.205 33.13 0 60.115 26.986 60.115 60.205zM90.353 28.205c0-16.595-13.463-30.087-29.997-30.087-16.685 0-30.238 13.493-30.238 30.087 0 16.625 13.553 30.148 30.238 30.148 16.535 0 29.997-13.523 29.997-30.148z" />
+</font></defs></svg>
Index: public/js/app.js
===================================================================
--- public/js/app.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/js/app.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,19694 @@
+/******/ (() => { // webpackBootstrap
+/******/ 	var __webpack_modules__ = ({
+
+/***/ "./node_modules/axios/index.js":
+/*!*************************************!*\
+  !*** ./node_modules/axios/index.js ***!
+  \*************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/axios/lib/axios.js");
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/adapters/xhr.js":
+/*!************************************************!*\
+  !*** ./node_modules/axios/lib/adapters/xhr.js ***!
+  \************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+var settle = __webpack_require__(/*! ./../core/settle */ "./node_modules/axios/lib/core/settle.js");
+var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./node_modules/axios/lib/helpers/cookies.js");
+var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js");
+var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js");
+var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./node_modules/axios/lib/helpers/parseHeaders.js");
+var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js");
+var createError = __webpack_require__(/*! ../core/createError */ "./node_modules/axios/lib/core/createError.js");
+
+module.exports = function xhrAdapter(config) {
+  return new Promise(function dispatchXhrRequest(resolve, reject) {
+    var requestData = config.data;
+    var requestHeaders = config.headers;
+    var responseType = config.responseType;
+
+    if (utils.isFormData(requestData)) {
+      delete requestHeaders['Content-Type']; // Let the browser set it
+    }
+
+    var request = new XMLHttpRequest();
+
+    // HTTP basic authentication
+    if (config.auth) {
+      var username = config.auth.username || '';
+      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';
+      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
+    }
+
+    var fullPath = buildFullPath(config.baseURL, config.url);
+    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
+
+    // Set the request timeout in MS
+    request.timeout = config.timeout;
+
+    function onloadend() {
+      if (!request) {
+        return;
+      }
+      // Prepare the response
+      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
+      var responseData = !responseType || responseType === 'text' ||  responseType === 'json' ?
+        request.responseText : request.response;
+      var response = {
+        data: responseData,
+        status: request.status,
+        statusText: request.statusText,
+        headers: responseHeaders,
+        config: config,
+        request: request
+      };
+
+      settle(resolve, reject, response);
+
+      // Clean up request
+      request = null;
+    }
+
+    if ('onloadend' in request) {
+      // Use onloadend if available
+      request.onloadend = onloadend;
+    } else {
+      // Listen for ready state to emulate onloadend
+      request.onreadystatechange = function handleLoad() {
+        if (!request || request.readyState !== 4) {
+          return;
+        }
+
+        // The request errored out and we didn't get a response, this will be
+        // handled by onerror instead
+        // With one exception: request that using file: protocol, most browsers
+        // will return status as 0 even though it's a successful request
+        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
+          return;
+        }
+        // readystate handler is calling before onerror or ontimeout handlers,
+        // so we should call onloadend on the next 'tick'
+        setTimeout(onloadend);
+      };
+    }
+
+    // Handle browser request cancellation (as opposed to a manual cancellation)
+    request.onabort = function handleAbort() {
+      if (!request) {
+        return;
+      }
+
+      reject(createError('Request aborted', config, 'ECONNABORTED', request));
+
+      // Clean up request
+      request = null;
+    };
+
+    // Handle low level network errors
+    request.onerror = function handleError() {
+      // Real errors are hidden from us by the browser
+      // onerror should only fire if it's a network error
+      reject(createError('Network Error', config, null, request));
+
+      // Clean up request
+      request = null;
+    };
+
+    // Handle timeout
+    request.ontimeout = function handleTimeout() {
+      var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';
+      if (config.timeoutErrorMessage) {
+        timeoutErrorMessage = config.timeoutErrorMessage;
+      }
+      reject(createError(
+        timeoutErrorMessage,
+        config,
+        config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',
+        request));
+
+      // Clean up request
+      request = null;
+    };
+
+    // Add xsrf header
+    // This is only done if running in a standard browser environment.
+    // Specifically not if we're in a web worker, or react-native.
+    if (utils.isStandardBrowserEnv()) {
+      // Add xsrf header
+      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?
+        cookies.read(config.xsrfCookieName) :
+        undefined;
+
+      if (xsrfValue) {
+        requestHeaders[config.xsrfHeaderName] = xsrfValue;
+      }
+    }
+
+    // Add headers to the request
+    if ('setRequestHeader' in request) {
+      utils.forEach(requestHeaders, function setRequestHeader(val, key) {
+        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
+          // Remove Content-Type if data is undefined
+          delete requestHeaders[key];
+        } else {
+          // Otherwise add header to the request
+          request.setRequestHeader(key, val);
+        }
+      });
+    }
+
+    // Add withCredentials to request if needed
+    if (!utils.isUndefined(config.withCredentials)) {
+      request.withCredentials = !!config.withCredentials;
+    }
+
+    // Add responseType to request if needed
+    if (responseType && responseType !== 'json') {
+      request.responseType = config.responseType;
+    }
+
+    // Handle progress if needed
+    if (typeof config.onDownloadProgress === 'function') {
+      request.addEventListener('progress', config.onDownloadProgress);
+    }
+
+    // Not all browsers support upload events
+    if (typeof config.onUploadProgress === 'function' && request.upload) {
+      request.upload.addEventListener('progress', config.onUploadProgress);
+    }
+
+    if (config.cancelToken) {
+      // Handle cancellation
+      config.cancelToken.promise.then(function onCanceled(cancel) {
+        if (!request) {
+          return;
+        }
+
+        request.abort();
+        reject(cancel);
+        // Clean up request
+        request = null;
+      });
+    }
+
+    if (!requestData) {
+      requestData = null;
+    }
+
+    // Send the request
+    request.send(requestData);
+  });
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/axios.js":
+/*!*****************************************!*\
+  !*** ./node_modules/axios/lib/axios.js ***!
+  \*****************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js");
+var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js");
+var Axios = __webpack_require__(/*! ./core/Axios */ "./node_modules/axios/lib/core/Axios.js");
+var mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js");
+var defaults = __webpack_require__(/*! ./defaults */ "./node_modules/axios/lib/defaults.js");
+
+/**
+ * Create an instance of Axios
+ *
+ * @param {Object} defaultConfig The default config for the instance
+ * @return {Axios} A new instance of Axios
+ */
+function createInstance(defaultConfig) {
+  var context = new Axios(defaultConfig);
+  var instance = bind(Axios.prototype.request, context);
+
+  // Copy axios.prototype to instance
+  utils.extend(instance, Axios.prototype, context);
+
+  // Copy context to instance
+  utils.extend(instance, context);
+
+  return instance;
+}
+
+// Create the default instance to be exported
+var axios = createInstance(defaults);
+
+// Expose Axios class to allow class inheritance
+axios.Axios = Axios;
+
+// Factory for creating new instances
+axios.create = function create(instanceConfig) {
+  return createInstance(mergeConfig(axios.defaults, instanceConfig));
+};
+
+// Expose Cancel & CancelToken
+axios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js");
+axios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./node_modules/axios/lib/cancel/CancelToken.js");
+axios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js");
+
+// Expose all/spread
+axios.all = function all(promises) {
+  return Promise.all(promises);
+};
+axios.spread = __webpack_require__(/*! ./helpers/spread */ "./node_modules/axios/lib/helpers/spread.js");
+
+// Expose isAxiosError
+axios.isAxiosError = __webpack_require__(/*! ./helpers/isAxiosError */ "./node_modules/axios/lib/helpers/isAxiosError.js");
+
+module.exports = axios;
+
+// Allow use of default import syntax in TypeScript
+module.exports["default"] = axios;
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/cancel/Cancel.js":
+/*!*************************************************!*\
+  !*** ./node_modules/axios/lib/cancel/Cancel.js ***!
+  \*************************************************/
+/***/ ((module) => {
+
+"use strict";
+
+
+/**
+ * A `Cancel` is an object that is thrown when an operation is canceled.
+ *
+ * @class
+ * @param {string=} message The message.
+ */
+function Cancel(message) {
+  this.message = message;
+}
+
+Cancel.prototype.toString = function toString() {
+  return 'Cancel' + (this.message ? ': ' + this.message : '');
+};
+
+Cancel.prototype.__CANCEL__ = true;
+
+module.exports = Cancel;
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/cancel/CancelToken.js":
+/*!******************************************************!*\
+  !*** ./node_modules/axios/lib/cancel/CancelToken.js ***!
+  \******************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var Cancel = __webpack_require__(/*! ./Cancel */ "./node_modules/axios/lib/cancel/Cancel.js");
+
+/**
+ * A `CancelToken` is an object that can be used to request cancellation of an operation.
+ *
+ * @class
+ * @param {Function} executor The executor function.
+ */
+function CancelToken(executor) {
+  if (typeof executor !== 'function') {
+    throw new TypeError('executor must be a function.');
+  }
+
+  var resolvePromise;
+  this.promise = new Promise(function promiseExecutor(resolve) {
+    resolvePromise = resolve;
+  });
+
+  var token = this;
+  executor(function cancel(message) {
+    if (token.reason) {
+      // Cancellation has already been requested
+      return;
+    }
+
+    token.reason = new Cancel(message);
+    resolvePromise(token.reason);
+  });
+}
+
+/**
+ * Throws a `Cancel` if cancellation has been requested.
+ */
+CancelToken.prototype.throwIfRequested = function throwIfRequested() {
+  if (this.reason) {
+    throw this.reason;
+  }
+};
+
+/**
+ * Returns an object that contains a new `CancelToken` and a function that, when called,
+ * cancels the `CancelToken`.
+ */
+CancelToken.source = function source() {
+  var cancel;
+  var token = new CancelToken(function executor(c) {
+    cancel = c;
+  });
+  return {
+    token: token,
+    cancel: cancel
+  };
+};
+
+module.exports = CancelToken;
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/cancel/isCancel.js":
+/*!***************************************************!*\
+  !*** ./node_modules/axios/lib/cancel/isCancel.js ***!
+  \***************************************************/
+/***/ ((module) => {
+
+"use strict";
+
+
+module.exports = function isCancel(value) {
+  return !!(value && value.__CANCEL__);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/core/Axios.js":
+/*!**********************************************!*\
+  !*** ./node_modules/axios/lib/core/Axios.js ***!
+  \**********************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js");
+var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./node_modules/axios/lib/core/InterceptorManager.js");
+var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./node_modules/axios/lib/core/dispatchRequest.js");
+var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js");
+var validator = __webpack_require__(/*! ../helpers/validator */ "./node_modules/axios/lib/helpers/validator.js");
+
+var validators = validator.validators;
+/**
+ * Create a new instance of Axios
+ *
+ * @param {Object} instanceConfig The default config for the instance
+ */
+function Axios(instanceConfig) {
+  this.defaults = instanceConfig;
+  this.interceptors = {
+    request: new InterceptorManager(),
+    response: new InterceptorManager()
+  };
+}
+
+/**
+ * Dispatch a request
+ *
+ * @param {Object} config The config specific for this request (merged with this.defaults)
+ */
+Axios.prototype.request = function request(config) {
+  /*eslint no-param-reassign:0*/
+  // Allow for axios('example/url'[, config]) a la fetch API
+  if (typeof config === 'string') {
+    config = arguments[1] || {};
+    config.url = arguments[0];
+  } else {
+    config = config || {};
+  }
+
+  config = mergeConfig(this.defaults, config);
+
+  // Set config.method
+  if (config.method) {
+    config.method = config.method.toLowerCase();
+  } else if (this.defaults.method) {
+    config.method = this.defaults.method.toLowerCase();
+  } else {
+    config.method = 'get';
+  }
+
+  var transitional = config.transitional;
+
+  if (transitional !== undefined) {
+    validator.assertOptions(transitional, {
+      silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),
+      forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),
+      clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')
+    }, false);
+  }
+
+  // filter out skipped interceptors
+  var requestInterceptorChain = [];
+  var synchronousRequestInterceptors = true;
+  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
+    if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
+      return;
+    }
+
+    synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
+
+    requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
+  });
+
+  var responseInterceptorChain = [];
+  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
+    responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
+  });
+
+  var promise;
+
+  if (!synchronousRequestInterceptors) {
+    var chain = [dispatchRequest, undefined];
+
+    Array.prototype.unshift.apply(chain, requestInterceptorChain);
+    chain = chain.concat(responseInterceptorChain);
+
+    promise = Promise.resolve(config);
+    while (chain.length) {
+      promise = promise.then(chain.shift(), chain.shift());
+    }
+
+    return promise;
+  }
+
+
+  var newConfig = config;
+  while (requestInterceptorChain.length) {
+    var onFulfilled = requestInterceptorChain.shift();
+    var onRejected = requestInterceptorChain.shift();
+    try {
+      newConfig = onFulfilled(newConfig);
+    } catch (error) {
+      onRejected(error);
+      break;
+    }
+  }
+
+  try {
+    promise = dispatchRequest(newConfig);
+  } catch (error) {
+    return Promise.reject(error);
+  }
+
+  while (responseInterceptorChain.length) {
+    promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());
+  }
+
+  return promise;
+};
+
+Axios.prototype.getUri = function getUri(config) {
+  config = mergeConfig(this.defaults, config);
+  return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, '');
+};
+
+// Provide aliases for supported request methods
+utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
+  /*eslint func-names:0*/
+  Axios.prototype[method] = function(url, config) {
+    return this.request(mergeConfig(config || {}, {
+      method: method,
+      url: url,
+      data: (config || {}).data
+    }));
+  };
+});
+
+utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
+  /*eslint func-names:0*/
+  Axios.prototype[method] = function(url, data, config) {
+    return this.request(mergeConfig(config || {}, {
+      method: method,
+      url: url,
+      data: data
+    }));
+  };
+});
+
+module.exports = Axios;
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/core/InterceptorManager.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/axios/lib/core/InterceptorManager.js ***!
+  \***********************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+
+function InterceptorManager() {
+  this.handlers = [];
+}
+
+/**
+ * Add a new interceptor to the stack
+ *
+ * @param {Function} fulfilled The function to handle `then` for a `Promise`
+ * @param {Function} rejected The function to handle `reject` for a `Promise`
+ *
+ * @return {Number} An ID used to remove interceptor later
+ */
+InterceptorManager.prototype.use = function use(fulfilled, rejected, options) {
+  this.handlers.push({
+    fulfilled: fulfilled,
+    rejected: rejected,
+    synchronous: options ? options.synchronous : false,
+    runWhen: options ? options.runWhen : null
+  });
+  return this.handlers.length - 1;
+};
+
+/**
+ * Remove an interceptor from the stack
+ *
+ * @param {Number} id The ID that was returned by `use`
+ */
+InterceptorManager.prototype.eject = function eject(id) {
+  if (this.handlers[id]) {
+    this.handlers[id] = null;
+  }
+};
+
+/**
+ * Iterate over all the registered interceptors
+ *
+ * This method is particularly useful for skipping over any
+ * interceptors that may have become `null` calling `eject`.
+ *
+ * @param {Function} fn The function to call for each interceptor
+ */
+InterceptorManager.prototype.forEach = function forEach(fn) {
+  utils.forEach(this.handlers, function forEachHandler(h) {
+    if (h !== null) {
+      fn(h);
+    }
+  });
+};
+
+module.exports = InterceptorManager;
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/core/buildFullPath.js":
+/*!******************************************************!*\
+  !*** ./node_modules/axios/lib/core/buildFullPath.js ***!
+  \******************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js");
+var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js");
+
+/**
+ * Creates a new URL by combining the baseURL with the requestedURL,
+ * only when the requestedURL is not already an absolute URL.
+ * If the requestURL is absolute, this function returns the requestedURL untouched.
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} requestedURL Absolute or relative URL to combine
+ * @returns {string} The combined full path
+ */
+module.exports = function buildFullPath(baseURL, requestedURL) {
+  if (baseURL && !isAbsoluteURL(requestedURL)) {
+    return combineURLs(baseURL, requestedURL);
+  }
+  return requestedURL;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/core/createError.js":
+/*!****************************************************!*\
+  !*** ./node_modules/axios/lib/core/createError.js ***!
+  \****************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var enhanceError = __webpack_require__(/*! ./enhanceError */ "./node_modules/axios/lib/core/enhanceError.js");
+
+/**
+ * Create an Error with the specified message, config, error code, request and response.
+ *
+ * @param {string} message The error message.
+ * @param {Object} config The config.
+ * @param {string} [code] The error code (for example, 'ECONNABORTED').
+ * @param {Object} [request] The request.
+ * @param {Object} [response] The response.
+ * @returns {Error} The created error.
+ */
+module.exports = function createError(message, config, code, request, response) {
+  var error = new Error(message);
+  return enhanceError(error, config, code, request, response);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/core/dispatchRequest.js":
+/*!********************************************************!*\
+  !*** ./node_modules/axios/lib/core/dispatchRequest.js ***!
+  \********************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+var transformData = __webpack_require__(/*! ./transformData */ "./node_modules/axios/lib/core/transformData.js");
+var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js");
+var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults.js");
+
+/**
+ * Throws a `Cancel` if cancellation has been requested.
+ */
+function throwIfCancellationRequested(config) {
+  if (config.cancelToken) {
+    config.cancelToken.throwIfRequested();
+  }
+}
+
+/**
+ * Dispatch a request to the server using the configured adapter.
+ *
+ * @param {object} config The config that is to be used for the request
+ * @returns {Promise} The Promise to be fulfilled
+ */
+module.exports = function dispatchRequest(config) {
+  throwIfCancellationRequested(config);
+
+  // Ensure headers exist
+  config.headers = config.headers || {};
+
+  // Transform request data
+  config.data = transformData.call(
+    config,
+    config.data,
+    config.headers,
+    config.transformRequest
+  );
+
+  // Flatten headers
+  config.headers = utils.merge(
+    config.headers.common || {},
+    config.headers[config.method] || {},
+    config.headers
+  );
+
+  utils.forEach(
+    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
+    function cleanHeaderConfig(method) {
+      delete config.headers[method];
+    }
+  );
+
+  var adapter = config.adapter || defaults.adapter;
+
+  return adapter(config).then(function onAdapterResolution(response) {
+    throwIfCancellationRequested(config);
+
+    // Transform response data
+    response.data = transformData.call(
+      config,
+      response.data,
+      response.headers,
+      config.transformResponse
+    );
+
+    return response;
+  }, function onAdapterRejection(reason) {
+    if (!isCancel(reason)) {
+      throwIfCancellationRequested(config);
+
+      // Transform response data
+      if (reason && reason.response) {
+        reason.response.data = transformData.call(
+          config,
+          reason.response.data,
+          reason.response.headers,
+          config.transformResponse
+        );
+      }
+    }
+
+    return Promise.reject(reason);
+  });
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/core/enhanceError.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/axios/lib/core/enhanceError.js ***!
+  \*****************************************************/
+/***/ ((module) => {
+
+"use strict";
+
+
+/**
+ * Update an Error with the specified config, error code, and response.
+ *
+ * @param {Error} error The error to update.
+ * @param {Object} config The config.
+ * @param {string} [code] The error code (for example, 'ECONNABORTED').
+ * @param {Object} [request] The request.
+ * @param {Object} [response] The response.
+ * @returns {Error} The error.
+ */
+module.exports = function enhanceError(error, config, code, request, response) {
+  error.config = config;
+  if (code) {
+    error.code = code;
+  }
+
+  error.request = request;
+  error.response = response;
+  error.isAxiosError = true;
+
+  error.toJSON = function toJSON() {
+    return {
+      // Standard
+      message: this.message,
+      name: this.name,
+      // Microsoft
+      description: this.description,
+      number: this.number,
+      // Mozilla
+      fileName: this.fileName,
+      lineNumber: this.lineNumber,
+      columnNumber: this.columnNumber,
+      stack: this.stack,
+      // Axios
+      config: this.config,
+      code: this.code
+    };
+  };
+  return error;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/core/mergeConfig.js":
+/*!****************************************************!*\
+  !*** ./node_modules/axios/lib/core/mergeConfig.js ***!
+  \****************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js");
+
+/**
+ * Config-specific merge-function which creates a new config-object
+ * by merging two configuration objects together.
+ *
+ * @param {Object} config1
+ * @param {Object} config2
+ * @returns {Object} New object resulting from merging config2 to config1
+ */
+module.exports = function mergeConfig(config1, config2) {
+  // eslint-disable-next-line no-param-reassign
+  config2 = config2 || {};
+  var config = {};
+
+  var valueFromConfig2Keys = ['url', 'method', 'data'];
+  var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];
+  var defaultToConfig2Keys = [
+    'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',
+    'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',
+    'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',
+    'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',
+    'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'
+  ];
+  var directMergeKeys = ['validateStatus'];
+
+  function getMergedValue(target, source) {
+    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {
+      return utils.merge(target, source);
+    } else if (utils.isPlainObject(source)) {
+      return utils.merge({}, source);
+    } else if (utils.isArray(source)) {
+      return source.slice();
+    }
+    return source;
+  }
+
+  function mergeDeepProperties(prop) {
+    if (!utils.isUndefined(config2[prop])) {
+      config[prop] = getMergedValue(config1[prop], config2[prop]);
+    } else if (!utils.isUndefined(config1[prop])) {
+      config[prop] = getMergedValue(undefined, config1[prop]);
+    }
+  }
+
+  utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {
+    if (!utils.isUndefined(config2[prop])) {
+      config[prop] = getMergedValue(undefined, config2[prop]);
+    }
+  });
+
+  utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);
+
+  utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {
+    if (!utils.isUndefined(config2[prop])) {
+      config[prop] = getMergedValue(undefined, config2[prop]);
+    } else if (!utils.isUndefined(config1[prop])) {
+      config[prop] = getMergedValue(undefined, config1[prop]);
+    }
+  });
+
+  utils.forEach(directMergeKeys, function merge(prop) {
+    if (prop in config2) {
+      config[prop] = getMergedValue(config1[prop], config2[prop]);
+    } else if (prop in config1) {
+      config[prop] = getMergedValue(undefined, config1[prop]);
+    }
+  });
+
+  var axiosKeys = valueFromConfig2Keys
+    .concat(mergeDeepPropertiesKeys)
+    .concat(defaultToConfig2Keys)
+    .concat(directMergeKeys);
+
+  var otherKeys = Object
+    .keys(config1)
+    .concat(Object.keys(config2))
+    .filter(function filterAxiosKeys(key) {
+      return axiosKeys.indexOf(key) === -1;
+    });
+
+  utils.forEach(otherKeys, mergeDeepProperties);
+
+  return config;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/core/settle.js":
+/*!***********************************************!*\
+  !*** ./node_modules/axios/lib/core/settle.js ***!
+  \***********************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var createError = __webpack_require__(/*! ./createError */ "./node_modules/axios/lib/core/createError.js");
+
+/**
+ * Resolve or reject a Promise based on response status.
+ *
+ * @param {Function} resolve A function that resolves the promise.
+ * @param {Function} reject A function that rejects the promise.
+ * @param {object} response The response.
+ */
+module.exports = function settle(resolve, reject, response) {
+  var validateStatus = response.config.validateStatus;
+  if (!response.status || !validateStatus || validateStatus(response.status)) {
+    resolve(response);
+  } else {
+    reject(createError(
+      'Request failed with status code ' + response.status,
+      response.config,
+      null,
+      response.request,
+      response
+    ));
+  }
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/core/transformData.js":
+/*!******************************************************!*\
+  !*** ./node_modules/axios/lib/core/transformData.js ***!
+  \******************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+var defaults = __webpack_require__(/*! ./../defaults */ "./node_modules/axios/lib/defaults.js");
+
+/**
+ * Transform the data for a request or a response
+ *
+ * @param {Object|String} data The data to be transformed
+ * @param {Array} headers The headers for the request or response
+ * @param {Array|Function} fns A single function or Array of functions
+ * @returns {*} The resulting transformed data
+ */
+module.exports = function transformData(data, headers, fns) {
+  var context = this || defaults;
+  /*eslint no-param-reassign:0*/
+  utils.forEach(fns, function transform(fn) {
+    data = fn.call(context, data, headers);
+  });
+
+  return data;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/defaults.js":
+/*!********************************************!*\
+  !*** ./node_modules/axios/lib/defaults.js ***!
+  \********************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+/* provided dependency */ var process = __webpack_require__(/*! process/browser */ "./node_modules/process/browser.js");
+
+
+var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js");
+var normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ "./node_modules/axios/lib/helpers/normalizeHeaderName.js");
+var enhanceError = __webpack_require__(/*! ./core/enhanceError */ "./node_modules/axios/lib/core/enhanceError.js");
+
+var DEFAULT_CONTENT_TYPE = {
+  'Content-Type': 'application/x-www-form-urlencoded'
+};
+
+function setContentTypeIfUnset(headers, value) {
+  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
+    headers['Content-Type'] = value;
+  }
+}
+
+function getDefaultAdapter() {
+  var adapter;
+  if (typeof XMLHttpRequest !== 'undefined') {
+    // For browsers use XHR adapter
+    adapter = __webpack_require__(/*! ./adapters/xhr */ "./node_modules/axios/lib/adapters/xhr.js");
+  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {
+    // For node use HTTP adapter
+    adapter = __webpack_require__(/*! ./adapters/http */ "./node_modules/axios/lib/adapters/xhr.js");
+  }
+  return adapter;
+}
+
+function stringifySafely(rawValue, parser, encoder) {
+  if (utils.isString(rawValue)) {
+    try {
+      (parser || JSON.parse)(rawValue);
+      return utils.trim(rawValue);
+    } catch (e) {
+      if (e.name !== 'SyntaxError') {
+        throw e;
+      }
+    }
+  }
+
+  return (encoder || JSON.stringify)(rawValue);
+}
+
+var defaults = {
+
+  transitional: {
+    silentJSONParsing: true,
+    forcedJSONParsing: true,
+    clarifyTimeoutError: false
+  },
+
+  adapter: getDefaultAdapter(),
+
+  transformRequest: [function transformRequest(data, headers) {
+    normalizeHeaderName(headers, 'Accept');
+    normalizeHeaderName(headers, 'Content-Type');
+
+    if (utils.isFormData(data) ||
+      utils.isArrayBuffer(data) ||
+      utils.isBuffer(data) ||
+      utils.isStream(data) ||
+      utils.isFile(data) ||
+      utils.isBlob(data)
+    ) {
+      return data;
+    }
+    if (utils.isArrayBufferView(data)) {
+      return data.buffer;
+    }
+    if (utils.isURLSearchParams(data)) {
+      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
+      return data.toString();
+    }
+    if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {
+      setContentTypeIfUnset(headers, 'application/json');
+      return stringifySafely(data);
+    }
+    return data;
+  }],
+
+  transformResponse: [function transformResponse(data) {
+    var transitional = this.transitional;
+    var silentJSONParsing = transitional && transitional.silentJSONParsing;
+    var forcedJSONParsing = transitional && transitional.forcedJSONParsing;
+    var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';
+
+    if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {
+      try {
+        return JSON.parse(data);
+      } catch (e) {
+        if (strictJSONParsing) {
+          if (e.name === 'SyntaxError') {
+            throw enhanceError(e, this, 'E_JSON_PARSE');
+          }
+          throw e;
+        }
+      }
+    }
+
+    return data;
+  }],
+
+  /**
+   * A timeout in milliseconds to abort a request. If set to 0 (default) a
+   * timeout is not created.
+   */
+  timeout: 0,
+
+  xsrfCookieName: 'XSRF-TOKEN',
+  xsrfHeaderName: 'X-XSRF-TOKEN',
+
+  maxContentLength: -1,
+  maxBodyLength: -1,
+
+  validateStatus: function validateStatus(status) {
+    return status >= 200 && status < 300;
+  }
+};
+
+defaults.headers = {
+  common: {
+    'Accept': 'application/json, text/plain, */*'
+  }
+};
+
+utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
+  defaults.headers[method] = {};
+});
+
+utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
+  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
+});
+
+module.exports = defaults;
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/bind.js":
+/*!************************************************!*\
+  !*** ./node_modules/axios/lib/helpers/bind.js ***!
+  \************************************************/
+/***/ ((module) => {
+
+"use strict";
+
+
+module.exports = function bind(fn, thisArg) {
+  return function wrap() {
+    var args = new Array(arguments.length);
+    for (var i = 0; i < args.length; i++) {
+      args[i] = arguments[i];
+    }
+    return fn.apply(thisArg, args);
+  };
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/buildURL.js":
+/*!****************************************************!*\
+  !*** ./node_modules/axios/lib/helpers/buildURL.js ***!
+  \****************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+
+function encode(val) {
+  return encodeURIComponent(val).
+    replace(/%3A/gi, ':').
+    replace(/%24/g, '$').
+    replace(/%2C/gi, ',').
+    replace(/%20/g, '+').
+    replace(/%5B/gi, '[').
+    replace(/%5D/gi, ']');
+}
+
+/**
+ * Build a URL by appending params to the end
+ *
+ * @param {string} url The base of the url (e.g., http://www.google.com)
+ * @param {object} [params] The params to be appended
+ * @returns {string} The formatted url
+ */
+module.exports = function buildURL(url, params, paramsSerializer) {
+  /*eslint no-param-reassign:0*/
+  if (!params) {
+    return url;
+  }
+
+  var serializedParams;
+  if (paramsSerializer) {
+    serializedParams = paramsSerializer(params);
+  } else if (utils.isURLSearchParams(params)) {
+    serializedParams = params.toString();
+  } else {
+    var parts = [];
+
+    utils.forEach(params, function serialize(val, key) {
+      if (val === null || typeof val === 'undefined') {
+        return;
+      }
+
+      if (utils.isArray(val)) {
+        key = key + '[]';
+      } else {
+        val = [val];
+      }
+
+      utils.forEach(val, function parseValue(v) {
+        if (utils.isDate(v)) {
+          v = v.toISOString();
+        } else if (utils.isObject(v)) {
+          v = JSON.stringify(v);
+        }
+        parts.push(encode(key) + '=' + encode(v));
+      });
+    });
+
+    serializedParams = parts.join('&');
+  }
+
+  if (serializedParams) {
+    var hashmarkIndex = url.indexOf('#');
+    if (hashmarkIndex !== -1) {
+      url = url.slice(0, hashmarkIndex);
+    }
+
+    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
+  }
+
+  return url;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/combineURLs.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/axios/lib/helpers/combineURLs.js ***!
+  \*******************************************************/
+/***/ ((module) => {
+
+"use strict";
+
+
+/**
+ * Creates a new URL by combining the specified URLs
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} relativeURL The relative URL
+ * @returns {string} The combined URL
+ */
+module.exports = function combineURLs(baseURL, relativeURL) {
+  return relativeURL
+    ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
+    : baseURL;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/cookies.js":
+/*!***************************************************!*\
+  !*** ./node_modules/axios/lib/helpers/cookies.js ***!
+  \***************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+
+module.exports = (
+  utils.isStandardBrowserEnv() ?
+
+  // Standard browser envs support document.cookie
+    (function standardBrowserEnv() {
+      return {
+        write: function write(name, value, expires, path, domain, secure) {
+          var cookie = [];
+          cookie.push(name + '=' + encodeURIComponent(value));
+
+          if (utils.isNumber(expires)) {
+            cookie.push('expires=' + new Date(expires).toGMTString());
+          }
+
+          if (utils.isString(path)) {
+            cookie.push('path=' + path);
+          }
+
+          if (utils.isString(domain)) {
+            cookie.push('domain=' + domain);
+          }
+
+          if (secure === true) {
+            cookie.push('secure');
+          }
+
+          document.cookie = cookie.join('; ');
+        },
+
+        read: function read(name) {
+          var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
+          return (match ? decodeURIComponent(match[3]) : null);
+        },
+
+        remove: function remove(name) {
+          this.write(name, '', Date.now() - 86400000);
+        }
+      };
+    })() :
+
+  // Non standard browser env (web workers, react-native) lack needed support.
+    (function nonStandardBrowserEnv() {
+      return {
+        write: function write() {},
+        read: function read() { return null; },
+        remove: function remove() {}
+      };
+    })()
+);
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***!
+  \*********************************************************/
+/***/ ((module) => {
+
+"use strict";
+
+
+/**
+ * Determines whether the specified URL is absolute
+ *
+ * @param {string} url The URL to test
+ * @returns {boolean} True if the specified URL is absolute, otherwise false
+ */
+module.exports = function isAbsoluteURL(url) {
+  // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
+  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
+  // by any combination of letters, digits, plus, period, or hyphen.
+  return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/isAxiosError.js":
+/*!********************************************************!*\
+  !*** ./node_modules/axios/lib/helpers/isAxiosError.js ***!
+  \********************************************************/
+/***/ ((module) => {
+
+"use strict";
+
+
+/**
+ * Determines whether the payload is an error thrown by Axios
+ *
+ * @param {*} payload The value to test
+ * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
+ */
+module.exports = function isAxiosError(payload) {
+  return (typeof payload === 'object') && (payload.isAxiosError === true);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***!
+  \***********************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+
+module.exports = (
+  utils.isStandardBrowserEnv() ?
+
+  // Standard browser envs have full support of the APIs needed to test
+  // whether the request URL is of the same origin as current location.
+    (function standardBrowserEnv() {
+      var msie = /(msie|trident)/i.test(navigator.userAgent);
+      var urlParsingNode = document.createElement('a');
+      var originURL;
+
+      /**
+    * Parse a URL to discover it's components
+    *
+    * @param {String} url The URL to be parsed
+    * @returns {Object}
+    */
+      function resolveURL(url) {
+        var href = url;
+
+        if (msie) {
+        // IE needs attribute set twice to normalize properties
+          urlParsingNode.setAttribute('href', href);
+          href = urlParsingNode.href;
+        }
+
+        urlParsingNode.setAttribute('href', href);
+
+        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
+        return {
+          href: urlParsingNode.href,
+          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
+          host: urlParsingNode.host,
+          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
+          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
+          hostname: urlParsingNode.hostname,
+          port: urlParsingNode.port,
+          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
+            urlParsingNode.pathname :
+            '/' + urlParsingNode.pathname
+        };
+      }
+
+      originURL = resolveURL(window.location.href);
+
+      /**
+    * Determine if a URL shares the same origin as the current location
+    *
+    * @param {String} requestURL The URL to test
+    * @returns {boolean} True if URL shares the same origin, otherwise false
+    */
+      return function isURLSameOrigin(requestURL) {
+        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
+        return (parsed.protocol === originURL.protocol &&
+            parsed.host === originURL.host);
+      };
+    })() :
+
+  // Non standard browser envs (web workers, react-native) lack needed support.
+    (function nonStandardBrowserEnv() {
+      return function isURLSameOrigin() {
+        return true;
+      };
+    })()
+);
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***!
+  \***************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js");
+
+module.exports = function normalizeHeaderName(headers, normalizedName) {
+  utils.forEach(headers, function processHeader(value, name) {
+    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
+      headers[normalizedName] = value;
+      delete headers[name];
+    }
+  });
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/parseHeaders.js":
+/*!********************************************************!*\
+  !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***!
+  \********************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+
+// Headers whose duplicates are ignored by node
+// c.f. https://nodejs.org/api/http.html#http_message_headers
+var ignoreDuplicateOf = [
+  'age', 'authorization', 'content-length', 'content-type', 'etag',
+  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
+  'last-modified', 'location', 'max-forwards', 'proxy-authorization',
+  'referer', 'retry-after', 'user-agent'
+];
+
+/**
+ * Parse headers into an object
+ *
+ * ```
+ * Date: Wed, 27 Aug 2014 08:58:49 GMT
+ * Content-Type: application/json
+ * Connection: keep-alive
+ * Transfer-Encoding: chunked
+ * ```
+ *
+ * @param {String} headers Headers needing to be parsed
+ * @returns {Object} Headers parsed into an object
+ */
+module.exports = function parseHeaders(headers) {
+  var parsed = {};
+  var key;
+  var val;
+  var i;
+
+  if (!headers) { return parsed; }
+
+  utils.forEach(headers.split('\n'), function parser(line) {
+    i = line.indexOf(':');
+    key = utils.trim(line.substr(0, i)).toLowerCase();
+    val = utils.trim(line.substr(i + 1));
+
+    if (key) {
+      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
+        return;
+      }
+      if (key === 'set-cookie') {
+        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);
+      } else {
+        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
+      }
+    }
+  });
+
+  return parsed;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/spread.js":
+/*!**************************************************!*\
+  !*** ./node_modules/axios/lib/helpers/spread.js ***!
+  \**************************************************/
+/***/ ((module) => {
+
+"use strict";
+
+
+/**
+ * Syntactic sugar for invoking a function and expanding an array for arguments.
+ *
+ * Common use case would be to use `Function.prototype.apply`.
+ *
+ *  ```js
+ *  function f(x, y, z) {}
+ *  var args = [1, 2, 3];
+ *  f.apply(null, args);
+ *  ```
+ *
+ * With `spread` this example can be re-written.
+ *
+ *  ```js
+ *  spread(function(x, y, z) {})([1, 2, 3]);
+ *  ```
+ *
+ * @param {Function} callback
+ * @returns {Function}
+ */
+module.exports = function spread(callback) {
+  return function wrap(arr) {
+    return callback.apply(null, arr);
+  };
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/validator.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/axios/lib/helpers/validator.js ***!
+  \*****************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var pkg = __webpack_require__(/*! ./../../package.json */ "./node_modules/axios/package.json");
+
+var validators = {};
+
+// eslint-disable-next-line func-names
+['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {
+  validators[type] = function validator(thing) {
+    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
+  };
+});
+
+var deprecatedWarnings = {};
+var currentVerArr = pkg.version.split('.');
+
+/**
+ * Compare package versions
+ * @param {string} version
+ * @param {string?} thanVersion
+ * @returns {boolean}
+ */
+function isOlderVersion(version, thanVersion) {
+  var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;
+  var destVer = version.split('.');
+  for (var i = 0; i < 3; i++) {
+    if (pkgVersionArr[i] > destVer[i]) {
+      return true;
+    } else if (pkgVersionArr[i] < destVer[i]) {
+      return false;
+    }
+  }
+  return false;
+}
+
+/**
+ * Transitional option validator
+ * @param {function|boolean?} validator
+ * @param {string?} version
+ * @param {string} message
+ * @returns {function}
+ */
+validators.transitional = function transitional(validator, version, message) {
+  var isDeprecated = version && isOlderVersion(version);
+
+  function formatMessage(opt, desc) {
+    return '[Axios v' + pkg.version + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
+  }
+
+  // eslint-disable-next-line func-names
+  return function(value, opt, opts) {
+    if (validator === false) {
+      throw new Error(formatMessage(opt, ' has been removed in ' + version));
+    }
+
+    if (isDeprecated && !deprecatedWarnings[opt]) {
+      deprecatedWarnings[opt] = true;
+      // eslint-disable-next-line no-console
+      console.warn(
+        formatMessage(
+          opt,
+          ' has been deprecated since v' + version + ' and will be removed in the near future'
+        )
+      );
+    }
+
+    return validator ? validator(value, opt, opts) : true;
+  };
+};
+
+/**
+ * Assert object's properties type
+ * @param {object} options
+ * @param {object} schema
+ * @param {boolean?} allowUnknown
+ */
+
+function assertOptions(options, schema, allowUnknown) {
+  if (typeof options !== 'object') {
+    throw new TypeError('options must be an object');
+  }
+  var keys = Object.keys(options);
+  var i = keys.length;
+  while (i-- > 0) {
+    var opt = keys[i];
+    var validator = schema[opt];
+    if (validator) {
+      var value = options[opt];
+      var result = value === undefined || validator(value, opt, options);
+      if (result !== true) {
+        throw new TypeError('option ' + opt + ' must be ' + result);
+      }
+      continue;
+    }
+    if (allowUnknown !== true) {
+      throw Error('Unknown option ' + opt);
+    }
+  }
+}
+
+module.exports = {
+  isOlderVersion: isOlderVersion,
+  assertOptions: assertOptions,
+  validators: validators
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/utils.js":
+/*!*****************************************!*\
+  !*** ./node_modules/axios/lib/utils.js ***!
+  \*****************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+
+
+var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js");
+
+// utils is a library of generic helper functions non-specific to axios
+
+var toString = Object.prototype.toString;
+
+/**
+ * Determine if a value is an Array
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an Array, otherwise false
+ */
+function isArray(val) {
+  return toString.call(val) === '[object Array]';
+}
+
+/**
+ * Determine if a value is undefined
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if the value is undefined, otherwise false
+ */
+function isUndefined(val) {
+  return typeof val === 'undefined';
+}
+
+/**
+ * Determine if a value is a Buffer
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Buffer, otherwise false
+ */
+function isBuffer(val) {
+  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
+    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);
+}
+
+/**
+ * Determine if a value is an ArrayBuffer
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an ArrayBuffer, otherwise false
+ */
+function isArrayBuffer(val) {
+  return toString.call(val) === '[object ArrayBuffer]';
+}
+
+/**
+ * Determine if a value is a FormData
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an FormData, otherwise false
+ */
+function isFormData(val) {
+  return (typeof FormData !== 'undefined') && (val instanceof FormData);
+}
+
+/**
+ * Determine if a value is a view on an ArrayBuffer
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
+ */
+function isArrayBufferView(val) {
+  var result;
+  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
+    result = ArrayBuffer.isView(val);
+  } else {
+    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);
+  }
+  return result;
+}
+
+/**
+ * Determine if a value is a String
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a String, otherwise false
+ */
+function isString(val) {
+  return typeof val === 'string';
+}
+
+/**
+ * Determine if a value is a Number
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Number, otherwise false
+ */
+function isNumber(val) {
+  return typeof val === 'number';
+}
+
+/**
+ * Determine if a value is an Object
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an Object, otherwise false
+ */
+function isObject(val) {
+  return val !== null && typeof val === 'object';
+}
+
+/**
+ * Determine if a value is a plain Object
+ *
+ * @param {Object} val The value to test
+ * @return {boolean} True if value is a plain Object, otherwise false
+ */
+function isPlainObject(val) {
+  if (toString.call(val) !== '[object Object]') {
+    return false;
+  }
+
+  var prototype = Object.getPrototypeOf(val);
+  return prototype === null || prototype === Object.prototype;
+}
+
+/**
+ * Determine if a value is a Date
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Date, otherwise false
+ */
+function isDate(val) {
+  return toString.call(val) === '[object Date]';
+}
+
+/**
+ * Determine if a value is a File
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a File, otherwise false
+ */
+function isFile(val) {
+  return toString.call(val) === '[object File]';
+}
+
+/**
+ * Determine if a value is a Blob
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Blob, otherwise false
+ */
+function isBlob(val) {
+  return toString.call(val) === '[object Blob]';
+}
+
+/**
+ * Determine if a value is a Function
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Function, otherwise false
+ */
+function isFunction(val) {
+  return toString.call(val) === '[object Function]';
+}
+
+/**
+ * Determine if a value is a Stream
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Stream, otherwise false
+ */
+function isStream(val) {
+  return isObject(val) && isFunction(val.pipe);
+}
+
+/**
+ * Determine if a value is a URLSearchParams object
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a URLSearchParams object, otherwise false
+ */
+function isURLSearchParams(val) {
+  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
+}
+
+/**
+ * Trim excess whitespace off the beginning and end of a string
+ *
+ * @param {String} str The String to trim
+ * @returns {String} The String freed of excess whitespace
+ */
+function trim(str) {
+  return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, '');
+}
+
+/**
+ * Determine if we're running in a standard browser environment
+ *
+ * This allows axios to run in a web worker, and react-native.
+ * Both environments support XMLHttpRequest, but not fully standard globals.
+ *
+ * web workers:
+ *  typeof window -> undefined
+ *  typeof document -> undefined
+ *
+ * react-native:
+ *  navigator.product -> 'ReactNative'
+ * nativescript
+ *  navigator.product -> 'NativeScript' or 'NS'
+ */
+function isStandardBrowserEnv() {
+  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||
+                                           navigator.product === 'NativeScript' ||
+                                           navigator.product === 'NS')) {
+    return false;
+  }
+  return (
+    typeof window !== 'undefined' &&
+    typeof document !== 'undefined'
+  );
+}
+
+/**
+ * Iterate over an Array or an Object invoking a function for each item.
+ *
+ * If `obj` is an Array callback will be called passing
+ * the value, index, and complete array for each item.
+ *
+ * If 'obj' is an Object callback will be called passing
+ * the value, key, and complete object for each property.
+ *
+ * @param {Object|Array} obj The object to iterate
+ * @param {Function} fn The callback to invoke for each item
+ */
+function forEach(obj, fn) {
+  // Don't bother if no value provided
+  if (obj === null || typeof obj === 'undefined') {
+    return;
+  }
+
+  // Force an array if not already something iterable
+  if (typeof obj !== 'object') {
+    /*eslint no-param-reassign:0*/
+    obj = [obj];
+  }
+
+  if (isArray(obj)) {
+    // Iterate over array values
+    for (var i = 0, l = obj.length; i < l; i++) {
+      fn.call(null, obj[i], i, obj);
+    }
+  } else {
+    // Iterate over object keys
+    for (var key in obj) {
+      if (Object.prototype.hasOwnProperty.call(obj, key)) {
+        fn.call(null, obj[key], key, obj);
+      }
+    }
+  }
+}
+
+/**
+ * Accepts varargs expecting each argument to be an object, then
+ * immutably merges the properties of each object and returns result.
+ *
+ * When multiple objects contain the same key the later object in
+ * the arguments list will take precedence.
+ *
+ * Example:
+ *
+ * ```js
+ * var result = merge({foo: 123}, {foo: 456});
+ * console.log(result.foo); // outputs 456
+ * ```
+ *
+ * @param {Object} obj1 Object to merge
+ * @returns {Object} Result of all merge properties
+ */
+function merge(/* obj1, obj2, obj3, ... */) {
+  var result = {};
+  function assignValue(val, key) {
+    if (isPlainObject(result[key]) && isPlainObject(val)) {
+      result[key] = merge(result[key], val);
+    } else if (isPlainObject(val)) {
+      result[key] = merge({}, val);
+    } else if (isArray(val)) {
+      result[key] = val.slice();
+    } else {
+      result[key] = val;
+    }
+  }
+
+  for (var i = 0, l = arguments.length; i < l; i++) {
+    forEach(arguments[i], assignValue);
+  }
+  return result;
+}
+
+/**
+ * Extends object a by mutably adding to it the properties of object b.
+ *
+ * @param {Object} a The object to be extended
+ * @param {Object} b The object to copy properties from
+ * @param {Object} thisArg The object to bind function to
+ * @return {Object} The resulting value of object a
+ */
+function extend(a, b, thisArg) {
+  forEach(b, function assignValue(val, key) {
+    if (thisArg && typeof val === 'function') {
+      a[key] = bind(val, thisArg);
+    } else {
+      a[key] = val;
+    }
+  });
+  return a;
+}
+
+/**
+ * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
+ *
+ * @param {string} content with BOM
+ * @return {string} content value without BOM
+ */
+function stripBOM(content) {
+  if (content.charCodeAt(0) === 0xFEFF) {
+    content = content.slice(1);
+  }
+  return content;
+}
+
+module.exports = {
+  isArray: isArray,
+  isArrayBuffer: isArrayBuffer,
+  isBuffer: isBuffer,
+  isFormData: isFormData,
+  isArrayBufferView: isArrayBufferView,
+  isString: isString,
+  isNumber: isNumber,
+  isObject: isObject,
+  isPlainObject: isPlainObject,
+  isUndefined: isUndefined,
+  isDate: isDate,
+  isFile: isFile,
+  isBlob: isBlob,
+  isFunction: isFunction,
+  isStream: isStream,
+  isURLSearchParams: isURLSearchParams,
+  isStandardBrowserEnv: isStandardBrowserEnv,
+  forEach: forEach,
+  merge: merge,
+  extend: extend,
+  trim: trim,
+  stripBOM: stripBOM
+};
+
+
+/***/ }),
+
+/***/ "./resources/js/app.js":
+/*!*****************************!*\
+  !*** ./resources/js/app.js ***!
+  \*****************************/
+/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
+
+__webpack_require__(/*! ./bootstrap */ "./resources/js/bootstrap.js");
+
+/***/ }),
+
+/***/ "./resources/js/bootstrap.js":
+/*!***********************************!*\
+  !*** ./resources/js/bootstrap.js ***!
+  \***********************************/
+/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
+
+window._ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js");
+/**
+ * We'll load the axios HTTP library which allows us to easily issue requests
+ * to our Laravel back-end. This library automatically handles sending the
+ * CSRF token as a header based on the value of the "XSRF" token cookie.
+ */
+
+window.axios = __webpack_require__(/*! axios */ "./node_modules/axios/index.js");
+window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
+/**
+ * Echo exposes an expressive API for subscribing to channels and listening
+ * for events that are broadcast by Laravel. Echo and event broadcasting
+ * allows your team to easily build robust real-time web applications.
+ */
+// import Echo from 'laravel-echo';
+// window.Pusher = require('pusher-js');
+// window.Echo = new Echo({
+//     broadcaster: 'pusher',
+//     key: process.env.MIX_PUSHER_APP_KEY,
+//     cluster: process.env.MIX_PUSHER_APP_CLUSTER,
+//     forceTLS: true
+// });
+
+/***/ }),
+
+/***/ "./node_modules/lodash/lodash.js":
+/*!***************************************!*\
+  !*** ./node_modules/lodash/lodash.js ***!
+  \***************************************/
+/***/ (function(module, exports, __webpack_require__) {
+
+/* module decorator */ module = __webpack_require__.nmd(module);
+var __WEBPACK_AMD_DEFINE_RESULT__;/**
+ * @license
+ * Lodash <https://lodash.com/>
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
+ * Released under MIT license <https://lodash.com/license>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
+;(function() {
+
+  /** Used as a safe reference for `undefined` in pre-ES5 environments. */
+  var undefined;
+
+  /** Used as the semantic version number. */
+  var VERSION = '4.17.21';
+
+  /** Used as the size to enable large array optimizations. */
+  var LARGE_ARRAY_SIZE = 200;
+
+  /** Error message constants. */
+  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
+      FUNC_ERROR_TEXT = 'Expected a function',
+      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';
+
+  /** Used to stand-in for `undefined` hash values. */
+  var HASH_UNDEFINED = '__lodash_hash_undefined__';
+
+  /** Used as the maximum memoize cache size. */
+  var MAX_MEMOIZE_SIZE = 500;
+
+  /** Used as the internal argument placeholder. */
+  var PLACEHOLDER = '__lodash_placeholder__';
+
+  /** Used to compose bitmasks for cloning. */
+  var CLONE_DEEP_FLAG = 1,
+      CLONE_FLAT_FLAG = 2,
+      CLONE_SYMBOLS_FLAG = 4;
+
+  /** Used to compose bitmasks for value comparisons. */
+  var COMPARE_PARTIAL_FLAG = 1,
+      COMPARE_UNORDERED_FLAG = 2;
+
+  /** Used to compose bitmasks for function metadata. */
+  var WRAP_BIND_FLAG = 1,
+      WRAP_BIND_KEY_FLAG = 2,
+      WRAP_CURRY_BOUND_FLAG = 4,
+      WRAP_CURRY_FLAG = 8,
+      WRAP_CURRY_RIGHT_FLAG = 16,
+      WRAP_PARTIAL_FLAG = 32,
+      WRAP_PARTIAL_RIGHT_FLAG = 64,
+      WRAP_ARY_FLAG = 128,
+      WRAP_REARG_FLAG = 256,
+      WRAP_FLIP_FLAG = 512;
+
+  /** Used as default options for `_.truncate`. */
+  var DEFAULT_TRUNC_LENGTH = 30,
+      DEFAULT_TRUNC_OMISSION = '...';
+
+  /** Used to detect hot functions by number of calls within a span of milliseconds. */
+  var HOT_COUNT = 800,
+      HOT_SPAN = 16;
+
+  /** Used to indicate the type of lazy iteratees. */
+  var LAZY_FILTER_FLAG = 1,
+      LAZY_MAP_FLAG = 2,
+      LAZY_WHILE_FLAG = 3;
+
+  /** Used as references for various `Number` constants. */
+  var INFINITY = 1 / 0,
+      MAX_SAFE_INTEGER = 9007199254740991,
+      MAX_INTEGER = 1.7976931348623157e+308,
+      NAN = 0 / 0;
+
+  /** Used as references for the maximum length and index of an array. */
+  var MAX_ARRAY_LENGTH = 4294967295,
+      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
+      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
+
+  /** Used to associate wrap methods with their bit flags. */
+  var wrapFlags = [
+    ['ary', WRAP_ARY_FLAG],
+    ['bind', WRAP_BIND_FLAG],
+    ['bindKey', WRAP_BIND_KEY_FLAG],
+    ['curry', WRAP_CURRY_FLAG],
+    ['curryRight', WRAP_CURRY_RIGHT_FLAG],
+    ['flip', WRAP_FLIP_FLAG],
+    ['partial', WRAP_PARTIAL_FLAG],
+    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
+    ['rearg', WRAP_REARG_FLAG]
+  ];
+
+  /** `Object#toString` result references. */
+  var argsTag = '[object Arguments]',
+      arrayTag = '[object Array]',
+      asyncTag = '[object AsyncFunction]',
+      boolTag = '[object Boolean]',
+      dateTag = '[object Date]',
+      domExcTag = '[object DOMException]',
+      errorTag = '[object Error]',
+      funcTag = '[object Function]',
+      genTag = '[object GeneratorFunction]',
+      mapTag = '[object Map]',
+      numberTag = '[object Number]',
+      nullTag = '[object Null]',
+      objectTag = '[object Object]',
+      promiseTag = '[object Promise]',
+      proxyTag = '[object Proxy]',
+      regexpTag = '[object RegExp]',
+      setTag = '[object Set]',
+      stringTag = '[object String]',
+      symbolTag = '[object Symbol]',
+      undefinedTag = '[object Undefined]',
+      weakMapTag = '[object WeakMap]',
+      weakSetTag = '[object WeakSet]';
+
+  var arrayBufferTag = '[object ArrayBuffer]',
+      dataViewTag = '[object DataView]',
+      float32Tag = '[object Float32Array]',
+      float64Tag = '[object Float64Array]',
+      int8Tag = '[object Int8Array]',
+      int16Tag = '[object Int16Array]',
+      int32Tag = '[object Int32Array]',
+      uint8Tag = '[object Uint8Array]',
+      uint8ClampedTag = '[object Uint8ClampedArray]',
+      uint16Tag = '[object Uint16Array]',
+      uint32Tag = '[object Uint32Array]';
+
+  /** Used to match empty string literals in compiled template source. */
+  var reEmptyStringLeading = /\b__p \+= '';/g,
+      reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
+      reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
+
+  /** Used to match HTML entities and HTML characters. */
+  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
+      reUnescapedHtml = /[&<>"']/g,
+      reHasEscapedHtml = RegExp(reEscapedHtml.source),
+      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
+
+  /** Used to match template delimiters. */
+  var reEscape = /<%-([\s\S]+?)%>/g,
+      reEvaluate = /<%([\s\S]+?)%>/g,
+      reInterpolate = /<%=([\s\S]+?)%>/g;
+
+  /** Used to match property names within property paths. */
+  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
+      reIsPlainProp = /^\w*$/,
+      rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
+
+  /**
+   * Used to match `RegExp`
+   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
+   */
+  var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
+      reHasRegExpChar = RegExp(reRegExpChar.source);
+
+  /** Used to match leading whitespace. */
+  var reTrimStart = /^\s+/;
+
+  /** Used to match a single whitespace character. */
+  var reWhitespace = /\s/;
+
+  /** Used to match wrap detail comments. */
+  var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
+      reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
+      reSplitDetails = /,? & /;
+
+  /** Used to match words composed of alphanumeric characters. */
+  var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
+
+  /**
+   * Used to validate the `validate` option in `_.template` variable.
+   *
+   * Forbids characters which could potentially change the meaning of the function argument definition:
+   * - "()," (modification of function parameters)
+   * - "=" (default value)
+   * - "[]{}" (destructuring of function parameters)
+   * - "/" (beginning of a comment)
+   * - whitespace
+   */
+  var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
+
+  /** Used to match backslashes in property paths. */
+  var reEscapeChar = /\\(\\)?/g;
+
+  /**
+   * Used to match
+   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
+   */
+  var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
+
+  /** Used to match `RegExp` flags from their coerced string values. */
+  var reFlags = /\w*$/;
+
+  /** Used to detect bad signed hexadecimal string values. */
+  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
+
+  /** Used to detect binary string values. */
+  var reIsBinary = /^0b[01]+$/i;
+
+  /** Used to detect host constructors (Safari). */
+  var reIsHostCtor = /^\[object .+?Constructor\]$/;
+
+  /** Used to detect octal string values. */
+  var reIsOctal = /^0o[0-7]+$/i;
+
+  /** Used to detect unsigned integer values. */
+  var reIsUint = /^(?:0|[1-9]\d*)$/;
+
+  /** Used to match Latin Unicode letters (excluding mathematical operators). */
+  var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
+
+  /** Used to ensure capturing order of template delimiters. */
+  var reNoMatch = /($^)/;
+
+  /** Used to match unescaped characters in compiled string literals. */
+  var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
+
+  /** Used to compose unicode character classes. */
+  var rsAstralRange = '\\ud800-\\udfff',
+      rsComboMarksRange = '\\u0300-\\u036f',
+      reComboHalfMarksRange = '\\ufe20-\\ufe2f',
+      rsComboSymbolsRange = '\\u20d0-\\u20ff',
+      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
+      rsDingbatRange = '\\u2700-\\u27bf',
+      rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
+      rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
+      rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
+      rsPunctuationRange = '\\u2000-\\u206f',
+      rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
+      rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
+      rsVarRange = '\\ufe0e\\ufe0f',
+      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
+
+  /** Used to compose unicode capture groups. */
+  var rsApos = "['\u2019]",
+      rsAstral = '[' + rsAstralRange + ']',
+      rsBreak = '[' + rsBreakRange + ']',
+      rsCombo = '[' + rsComboRange + ']',
+      rsDigits = '\\d+',
+      rsDingbat = '[' + rsDingbatRange + ']',
+      rsLower = '[' + rsLowerRange + ']',
+      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
+      rsFitz = '\\ud83c[\\udffb-\\udfff]',
+      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
+      rsNonAstral = '[^' + rsAstralRange + ']',
+      rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
+      rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
+      rsUpper = '[' + rsUpperRange + ']',
+      rsZWJ = '\\u200d';
+
+  /** Used to compose unicode regexes. */
+  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
+      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
+      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
+      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
+      reOptMod = rsModifier + '?',
+      rsOptVar = '[' + rsVarRange + ']?',
+      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
+      rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
+      rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
+      rsSeq = rsOptVar + reOptMod + rsOptJoin,
+      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
+      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
+
+  /** Used to match apostrophes. */
+  var reApos = RegExp(rsApos, 'g');
+
+  /**
+   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
+   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
+   */
+  var reComboMark = RegExp(rsCombo, 'g');
+
+  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
+  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
+
+  /** Used to match complex or compound words. */
+  var reUnicodeWord = RegExp([
+    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
+    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
+    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
+    rsUpper + '+' + rsOptContrUpper,
+    rsOrdUpper,
+    rsOrdLower,
+    rsDigits,
+    rsEmoji
+  ].join('|'), 'g');
+
+  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
+  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
+
+  /** Used to detect strings that need a more robust regexp to match words. */
+  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
+
+  /** Used to assign default `context` object properties. */
+  var contextProps = [
+    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
+    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
+    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
+    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
+    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
+  ];
+
+  /** Used to make template sourceURLs easier to identify. */
+  var templateCounter = -1;
+
+  /** Used to identify `toStringTag` values of typed arrays. */
+  var typedArrayTags = {};
+  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
+  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
+  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
+  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
+  typedArrayTags[uint32Tag] = true;
+  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
+  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
+  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
+  typedArrayTags[errorTag] = typedArrayTags[funcTag] =
+  typedArrayTags[mapTag] = typedArrayTags[numberTag] =
+  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
+  typedArrayTags[setTag] = typedArrayTags[stringTag] =
+  typedArrayTags[weakMapTag] = false;
+
+  /** Used to identify `toStringTag` values supported by `_.clone`. */
+  var cloneableTags = {};
+  cloneableTags[argsTag] = cloneableTags[arrayTag] =
+  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
+  cloneableTags[boolTag] = cloneableTags[dateTag] =
+  cloneableTags[float32Tag] = cloneableTags[float64Tag] =
+  cloneableTags[int8Tag] = cloneableTags[int16Tag] =
+  cloneableTags[int32Tag] = cloneableTags[mapTag] =
+  cloneableTags[numberTag] = cloneableTags[objectTag] =
+  cloneableTags[regexpTag] = cloneableTags[setTag] =
+  cloneableTags[stringTag] = cloneableTags[symbolTag] =
+  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
+  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
+  cloneableTags[errorTag] = cloneableTags[funcTag] =
+  cloneableTags[weakMapTag] = false;
+
+  /** Used to map Latin Unicode letters to basic Latin letters. */
+  var deburredLetters = {
+    // Latin-1 Supplement block.
+    '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
+    '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
+    '\xc7': 'C',  '\xe7': 'c',
+    '\xd0': 'D',  '\xf0': 'd',
+    '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
+    '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
+    '\xcc': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
+    '\xec': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
+    '\xd1': 'N',  '\xf1': 'n',
+    '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
+    '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
+    '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
+    '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
+    '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
+    '\xc6': 'Ae', '\xe6': 'ae',
+    '\xde': 'Th', '\xfe': 'th',
+    '\xdf': 'ss',
+    // Latin Extended-A block.
+    '\u0100': 'A',  '\u0102': 'A', '\u0104': 'A',
+    '\u0101': 'a',  '\u0103': 'a', '\u0105': 'a',
+    '\u0106': 'C',  '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
+    '\u0107': 'c',  '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
+    '\u010e': 'D',  '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
+    '\u0112': 'E',  '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
+    '\u0113': 'e',  '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
+    '\u011c': 'G',  '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
+    '\u011d': 'g',  '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
+    '\u0124': 'H',  '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
+    '\u0128': 'I',  '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
+    '\u0129': 'i',  '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
+    '\u0134': 'J',  '\u0135': 'j',
+    '\u0136': 'K',  '\u0137': 'k', '\u0138': 'k',
+    '\u0139': 'L',  '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
+    '\u013a': 'l',  '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
+    '\u0143': 'N',  '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
+    '\u0144': 'n',  '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
+    '\u014c': 'O',  '\u014e': 'O', '\u0150': 'O',
+    '\u014d': 'o',  '\u014f': 'o', '\u0151': 'o',
+    '\u0154': 'R',  '\u0156': 'R', '\u0158': 'R',
+    '\u0155': 'r',  '\u0157': 'r', '\u0159': 'r',
+    '\u015a': 'S',  '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
+    '\u015b': 's',  '\u015d': 's', '\u015f': 's', '\u0161': 's',
+    '\u0162': 'T',  '\u0164': 'T', '\u0166': 'T',
+    '\u0163': 't',  '\u0165': 't', '\u0167': 't',
+    '\u0168': 'U',  '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
+    '\u0169': 'u',  '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
+    '\u0174': 'W',  '\u0175': 'w',
+    '\u0176': 'Y',  '\u0177': 'y', '\u0178': 'Y',
+    '\u0179': 'Z',  '\u017b': 'Z', '\u017d': 'Z',
+    '\u017a': 'z',  '\u017c': 'z', '\u017e': 'z',
+    '\u0132': 'IJ', '\u0133': 'ij',
+    '\u0152': 'Oe', '\u0153': 'oe',
+    '\u0149': "'n", '\u017f': 's'
+  };
+
+  /** Used to map characters to HTML entities. */
+  var htmlEscapes = {
+    '&': '&amp;',
+    '<': '&lt;',
+    '>': '&gt;',
+    '"': '&quot;',
+    "'": '&#39;'
+  };
+
+  /** Used to map HTML entities to characters. */
+  var htmlUnescapes = {
+    '&amp;': '&',
+    '&lt;': '<',
+    '&gt;': '>',
+    '&quot;': '"',
+    '&#39;': "'"
+  };
+
+  /** Used to escape characters for inclusion in compiled string literals. */
+  var stringEscapes = {
+    '\\': '\\',
+    "'": "'",
+    '\n': 'n',
+    '\r': 'r',
+    '\u2028': 'u2028',
+    '\u2029': 'u2029'
+  };
+
+  /** Built-in method references without a dependency on `root`. */
+  var freeParseFloat = parseFloat,
+      freeParseInt = parseInt;
+
+  /** Detect free variable `global` from Node.js. */
+  var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;
+
+  /** Detect free variable `self`. */
+  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+
+  /** Used as a reference to the global object. */
+  var root = freeGlobal || freeSelf || Function('return this')();
+
+  /** Detect free variable `exports`. */
+  var freeExports =  true && exports && !exports.nodeType && exports;
+
+  /** Detect free variable `module`. */
+  var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module;
+
+  /** Detect the popular CommonJS extension `module.exports`. */
+  var moduleExports = freeModule && freeModule.exports === freeExports;
+
+  /** Detect free variable `process` from Node.js. */
+  var freeProcess = moduleExports && freeGlobal.process;
+
+  /** Used to access faster Node.js helpers. */
+  var nodeUtil = (function() {
+    try {
+      // Use `util.types` for Node.js 10+.
+      var types = freeModule && freeModule.require && freeModule.require('util').types;
+
+      if (types) {
+        return types;
+      }
+
+      // Legacy `process.binding('util')` for Node.js < 10.
+      return freeProcess && freeProcess.binding && freeProcess.binding('util');
+    } catch (e) {}
+  }());
+
+  /* Node.js helper references. */
+  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
+      nodeIsDate = nodeUtil && nodeUtil.isDate,
+      nodeIsMap = nodeUtil && nodeUtil.isMap,
+      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
+      nodeIsSet = nodeUtil && nodeUtil.isSet,
+      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * A faster alternative to `Function#apply`, this function invokes `func`
+   * with the `this` binding of `thisArg` and the arguments of `args`.
+   *
+   * @private
+   * @param {Function} func The function to invoke.
+   * @param {*} thisArg The `this` binding of `func`.
+   * @param {Array} args The arguments to invoke `func` with.
+   * @returns {*} Returns the result of `func`.
+   */
+  function apply(func, thisArg, args) {
+    switch (args.length) {
+      case 0: return func.call(thisArg);
+      case 1: return func.call(thisArg, args[0]);
+      case 2: return func.call(thisArg, args[0], args[1]);
+      case 3: return func.call(thisArg, args[0], args[1], args[2]);
+    }
+    return func.apply(thisArg, args);
+  }
+
+  /**
+   * A specialized version of `baseAggregator` for arrays.
+   *
+   * @private
+   * @param {Array} [array] The array to iterate over.
+   * @param {Function} setter The function to set `accumulator` values.
+   * @param {Function} iteratee The iteratee to transform keys.
+   * @param {Object} accumulator The initial aggregated object.
+   * @returns {Function} Returns `accumulator`.
+   */
+  function arrayAggregator(array, setter, iteratee, accumulator) {
+    var index = -1,
+        length = array == null ? 0 : array.length;
+
+    while (++index < length) {
+      var value = array[index];
+      setter(accumulator, value, iteratee(value), array);
+    }
+    return accumulator;
+  }
+
+  /**
+   * A specialized version of `_.forEach` for arrays without support for
+   * iteratee shorthands.
+   *
+   * @private
+   * @param {Array} [array] The array to iterate over.
+   * @param {Function} iteratee The function invoked per iteration.
+   * @returns {Array} Returns `array`.
+   */
+  function arrayEach(array, iteratee) {
+    var index = -1,
+        length = array == null ? 0 : array.length;
+
+    while (++index < length) {
+      if (iteratee(array[index], index, array) === false) {
+        break;
+      }
+    }
+    return array;
+  }
+
+  /**
+   * A specialized version of `_.forEachRight` for arrays without support for
+   * iteratee shorthands.
+   *
+   * @private
+   * @param {Array} [array] The array to iterate over.
+   * @param {Function} iteratee The function invoked per iteration.
+   * @returns {Array} Returns `array`.
+   */
+  function arrayEachRight(array, iteratee) {
+    var length = array == null ? 0 : array.length;
+
+    while (length--) {
+      if (iteratee(array[length], length, array) === false) {
+        break;
+      }
+    }
+    return array;
+  }
+
+  /**
+   * A specialized version of `_.every` for arrays without support for
+   * iteratee shorthands.
+   *
+   * @private
+   * @param {Array} [array] The array to iterate over.
+   * @param {Function} predicate The function invoked per iteration.
+   * @returns {boolean} Returns `true` if all elements pass the predicate check,
+   *  else `false`.
+   */
+  function arrayEvery(array, predicate) {
+    var index = -1,
+        length = array == null ? 0 : array.length;
+
+    while (++index < length) {
+      if (!predicate(array[index], index, array)) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  /**
+   * A specialized version of `_.filter` for arrays without support for
+   * iteratee shorthands.
+   *
+   * @private
+   * @param {Array} [array] The array to iterate over.
+   * @param {Function} predicate The function invoked per iteration.
+   * @returns {Array} Returns the new filtered array.
+   */
+  function arrayFilter(array, predicate) {
+    var index = -1,
+        length = array == null ? 0 : array.length,
+        resIndex = 0,
+        result = [];
+
+    while (++index < length) {
+      var value = array[index];
+      if (predicate(value, index, array)) {
+        result[resIndex++] = value;
+      }
+    }
+    return result;
+  }
+
+  /**
+   * A specialized version of `_.includes` for arrays without support for
+   * specifying an index to search from.
+   *
+   * @private
+   * @param {Array} [array] The array to inspect.
+   * @param {*} target The value to search for.
+   * @returns {boolean} Returns `true` if `target` is found, else `false`.
+   */
+  function arrayIncludes(array, value) {
+    var length = array == null ? 0 : array.length;
+    return !!length && baseIndexOf(array, value, 0) > -1;
+  }
+
+  /**
+   * This function is like `arrayIncludes` except that it accepts a comparator.
+   *
+   * @private
+   * @param {Array} [array] The array to inspect.
+   * @param {*} target The value to search for.
+   * @param {Function} comparator The comparator invoked per element.
+   * @returns {boolean} Returns `true` if `target` is found, else `false`.
+   */
+  function arrayIncludesWith(array, value, comparator) {
+    var index = -1,
+        length = array == null ? 0 : array.length;
+
+    while (++index < length) {
+      if (comparator(value, array[index])) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * A specialized version of `_.map` for arrays without support for iteratee
+   * shorthands.
+   *
+   * @private
+   * @param {Array} [array] The array to iterate over.
+   * @param {Function} iteratee The function invoked per iteration.
+   * @returns {Array} Returns the new mapped array.
+   */
+  function arrayMap(array, iteratee) {
+    var index = -1,
+        length = array == null ? 0 : array.length,
+        result = Array(length);
+
+    while (++index < length) {
+      result[index] = iteratee(array[index], index, array);
+    }
+    return result;
+  }
+
+  /**
+   * Appends the elements of `values` to `array`.
+   *
+   * @private
+   * @param {Array} array The array to modify.
+   * @param {Array} values The values to append.
+   * @returns {Array} Returns `array`.
+   */
+  function arrayPush(array, values) {
+    var index = -1,
+        length = values.length,
+        offset = array.length;
+
+    while (++index < length) {
+      array[offset + index] = values[index];
+    }
+    return array;
+  }
+
+  /**
+   * A specialized version of `_.reduce` for arrays without support for
+   * iteratee shorthands.
+   *
+   * @private
+   * @param {Array} [array] The array to iterate over.
+   * @param {Function} iteratee The function invoked per iteration.
+   * @param {*} [accumulator] The initial value.
+   * @param {boolean} [initAccum] Specify using the first element of `array` as
+   *  the initial value.
+   * @returns {*} Returns the accumulated value.
+   */
+  function arrayReduce(array, iteratee, accumulator, initAccum) {
+    var index = -1,
+        length = array == null ? 0 : array.length;
+
+    if (initAccum && length) {
+      accumulator = array[++index];
+    }
+    while (++index < length) {
+      accumulator = iteratee(accumulator, array[index], index, array);
+    }
+    return accumulator;
+  }
+
+  /**
+   * A specialized version of `_.reduceRight` for arrays without support for
+   * iteratee shorthands.
+   *
+   * @private
+   * @param {Array} [array] The array to iterate over.
+   * @param {Function} iteratee The function invoked per iteration.
+   * @param {*} [accumulator] The initial value.
+   * @param {boolean} [initAccum] Specify using the last element of `array` as
+   *  the initial value.
+   * @returns {*} Returns the accumulated value.
+   */
+  function arrayReduceRight(array, iteratee, accumulator, initAccum) {
+    var length = array == null ? 0 : array.length;
+    if (initAccum && length) {
+      accumulator = array[--length];
+    }
+    while (length--) {
+      accumulator = iteratee(accumulator, array[length], length, array);
+    }
+    return accumulator;
+  }
+
+  /**
+   * A specialized version of `_.some` for arrays without support for iteratee
+   * shorthands.
+   *
+   * @private
+   * @param {Array} [array] The array to iterate over.
+   * @param {Function} predicate The function invoked per iteration.
+   * @returns {boolean} Returns `true` if any element passes the predicate check,
+   *  else `false`.
+   */
+  function arraySome(array, predicate) {
+    var index = -1,
+        length = array == null ? 0 : array.length;
+
+    while (++index < length) {
+      if (predicate(array[index], index, array)) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Gets the size of an ASCII `string`.
+   *
+   * @private
+   * @param {string} string The string inspect.
+   * @returns {number} Returns the string size.
+   */
+  var asciiSize = baseProperty('length');
+
+  /**
+   * Converts an ASCII `string` to an array.
+   *
+   * @private
+   * @param {string} string The string to convert.
+   * @returns {Array} Returns the converted array.
+   */
+  function asciiToArray(string) {
+    return string.split('');
+  }
+
+  /**
+   * Splits an ASCII `string` into an array of its words.
+   *
+   * @private
+   * @param {string} The string to inspect.
+   * @returns {Array} Returns the words of `string`.
+   */
+  function asciiWords(string) {
+    return string.match(reAsciiWord) || [];
+  }
+
+  /**
+   * The base implementation of methods like `_.findKey` and `_.findLastKey`,
+   * without support for iteratee shorthands, which iterates over `collection`
+   * using `eachFunc`.
+   *
+   * @private
+   * @param {Array|Object} collection The collection to inspect.
+   * @param {Function} predicate The function invoked per iteration.
+   * @param {Function} eachFunc The function to iterate over `collection`.
+   * @returns {*} Returns the found element or its key, else `undefined`.
+   */
+  function baseFindKey(collection, predicate, eachFunc) {
+    var result;
+    eachFunc(collection, function(value, key, collection) {
+      if (predicate(value, key, collection)) {
+        result = key;
+        return false;
+      }
+    });
+    return result;
+  }
+
+  /**
+   * The base implementation of `_.findIndex` and `_.findLastIndex` without
+   * support for iteratee shorthands.
+   *
+   * @private
+   * @param {Array} array The array to inspect.
+   * @param {Function} predicate The function invoked per iteration.
+   * @param {number} fromIndex The index to search from.
+   * @param {boolean} [fromRight] Specify iterating from right to left.
+   * @returns {number} Returns the index of the matched value, else `-1`.
+   */
+  function baseFindIndex(array, predicate, fromIndex, fromRight) {
+    var length = array.length,
+        index = fromIndex + (fromRight ? 1 : -1);
+
+    while ((fromRight ? index-- : ++index < length)) {
+      if (predicate(array[index], index, array)) {
+        return index;
+      }
+    }
+    return -1;
+  }
+
+  /**
+   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
+   *
+   * @private
+   * @param {Array} array The array to inspect.
+   * @param {*} value The value to search for.
+   * @param {number} fromIndex The index to search from.
+   * @returns {number} Returns the index of the matched value, else `-1`.
+   */
+  function baseIndexOf(array, value, fromIndex) {
+    return value === value
+      ? strictIndexOf(array, value, fromIndex)
+      : baseFindIndex(array, baseIsNaN, fromIndex);
+  }
+
+  /**
+   * This function is like `baseIndexOf` except that it accepts a comparator.
+   *
+   * @private
+   * @param {Array} array The array to inspect.
+   * @param {*} value The value to search for.
+   * @param {number} fromIndex The index to search from.
+   * @param {Function} comparator The comparator invoked per element.
+   * @returns {number} Returns the index of the matched value, else `-1`.
+   */
+  function baseIndexOfWith(array, value, fromIndex, comparator) {
+    var index = fromIndex - 1,
+        length = array.length;
+
+    while (++index < length) {
+      if (comparator(array[index], value)) {
+        return index;
+      }
+    }
+    return -1;
+  }
+
+  /**
+   * The base implementation of `_.isNaN` without support for number objects.
+   *
+   * @private
+   * @param {*} value The value to check.
+   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
+   */
+  function baseIsNaN(value) {
+    return value !== value;
+  }
+
+  /**
+   * The base implementation of `_.mean` and `_.meanBy` without support for
+   * iteratee shorthands.
+   *
+   * @private
+   * @param {Array} array The array to iterate over.
+   * @param {Function} iteratee The function invoked per iteration.
+   * @returns {number} Returns the mean.
+   */
+  function baseMean(array, iteratee) {
+    var length = array == null ? 0 : array.length;
+    return length ? (baseSum(array, iteratee) / length) : NAN;
+  }
+
+  /**
+   * The base implementation of `_.property` without support for deep paths.
+   *
+   * @private
+   * @param {string} key The key of the property to get.
+   * @returns {Function} Returns the new accessor function.
+   */
+  function baseProperty(key) {
+    return function(object) {
+      return object == null ? undefined : object[key];
+    };
+  }
+
+  /**
+   * The base implementation of `_.propertyOf` without support for deep paths.
+   *
+   * @private
+   * @param {Object} object The object to query.
+   * @returns {Function} Returns the new accessor function.
+   */
+  function basePropertyOf(object) {
+    return function(key) {
+      return object == null ? undefined : object[key];
+    };
+  }
+
+  /**
+   * The base implementation of `_.reduce` and `_.reduceRight`, without support
+   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
+   *
+   * @private
+   * @param {Array|Object} collection The collection to iterate over.
+   * @param {Function} iteratee The function invoked per iteration.
+   * @param {*} accumulator The initial value.
+   * @param {boolean} initAccum Specify using the first or last element of
+   *  `collection` as the initial value.
+   * @param {Function} eachFunc The function to iterate over `collection`.
+   * @returns {*} Returns the accumulated value.
+   */
+  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
+    eachFunc(collection, function(value, index, collection) {
+      accumulator = initAccum
+        ? (initAccum = false, value)
+        : iteratee(accumulator, value, index, collection);
+    });
+    return accumulator;
+  }
+
+  /**
+   * The base implementation of `_.sortBy` which uses `comparer` to define the
+   * sort order of `array` and replaces criteria objects with their corresponding
+   * values.
+   *
+   * @private
+   * @param {Array} array The array to sort.
+   * @param {Function} comparer The function to define sort order.
+   * @returns {Array} Returns `array`.
+   */
+  function baseSortBy(array, comparer) {
+    var length = array.length;
+
+    array.sort(comparer);
+    while (length--) {
+      array[length] = array[length].value;
+    }
+    return array;
+  }
+
+  /**
+   * The base implementation of `_.sum` and `_.sumBy` without support for
+   * iteratee shorthands.
+   *
+   * @private
+   * @param {Array} array The array to iterate over.
+   * @param {Function} iteratee The function invoked per iteration.
+   * @returns {number} Returns the sum.
+   */
+  function baseSum(array, iteratee) {
+    var result,
+        index = -1,
+        length = array.length;
+
+    while (++index < length) {
+      var current = iteratee(array[index]);
+      if (current !== undefined) {
+        result = result === undefined ? current : (result + current);
+      }
+    }
+    return result;
+  }
+
+  /**
+   * The base implementation of `_.times` without support for iteratee shorthands
+   * or max array length checks.
+   *
+   * @private
+   * @param {number} n The number of times to invoke `iteratee`.
+   * @param {Function} iteratee The function invoked per iteration.
+   * @returns {Array} Returns the array of results.
+   */
+  function baseTimes(n, iteratee) {
+    var index = -1,
+        result = Array(n);
+
+    while (++index < n) {
+      result[index] = iteratee(index);
+    }
+    return result;
+  }
+
+  /**
+   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
+   * of key-value pairs for `object` corresponding to the property names of `props`.
+   *
+   * @private
+   * @param {Object} object The object to query.
+   * @param {Array} props The property names to get values for.
+   * @returns {Object} Returns the key-value pairs.
+   */
+  function baseToPairs(object, props) {
+    return arrayMap(props, function(key) {
+      return [key, object[key]];
+    });
+  }
+
+  /**
+   * The base implementation of `_.trim`.
+   *
+   * @private
+   * @param {string} string The string to trim.
+   * @returns {string} Returns the trimmed string.
+   */
+  function baseTrim(string) {
+    return string
+      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
+      : string;
+  }
+
+  /**
+   * The base implementation of `_.unary` without support for storing metadata.
+   *
+   * @private
+   * @param {Function} func The function to cap arguments for.
+   * @returns {Function} Returns the new capped function.
+   */
+  function baseUnary(func) {
+    return function(value) {
+      return func(value);
+    };
+  }
+
+  /**
+   * The base implementation of `_.values` and `_.valuesIn` which creates an
+   * array of `object` property values corresponding to the property names
+   * of `props`.
+   *
+   * @private
+   * @param {Object} object The object to query.
+   * @param {Array} props The property names to get values for.
+   * @returns {Object} Returns the array of property values.
+   */
+  function baseValues(object, props) {
+    return arrayMap(props, function(key) {
+      return object[key];
+    });
+  }
+
+  /**
+   * Checks if a `cache` value for `key` exists.
+   *
+   * @private
+   * @param {Object} cache The cache to query.
+   * @param {string} key The key of the entry to check.
+   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+   */
+  function cacheHas(cache, key) {
+    return cache.has(key);
+  }
+
+  /**
+   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
+   * that is not found in the character symbols.
+   *
+   * @private
+   * @param {Array} strSymbols The string symbols to inspect.
+   * @param {Array} chrSymbols The character symbols to find.
+   * @returns {number} Returns the index of the first unmatched string symbol.
+   */
+  function charsStartIndex(strSymbols, chrSymbols) {
+    var index = -1,
+        length = strSymbols.length;
+
+    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
+    return index;
+  }
+
+  /**
+   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
+   * that is not found in the character symbols.
+   *
+   * @private
+   * @param {Array} strSymbols The string symbols to inspect.
+   * @param {Array} chrSymbols The character symbols to find.
+   * @returns {number} Returns the index of the last unmatched string symbol.
+   */
+  function charsEndIndex(strSymbols, chrSymbols) {
+    var index = strSymbols.length;
+
+    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
+    return index;
+  }
+
+  /**
+   * Gets the number of `placeholder` occurrences in `array`.
+   *
+   * @private
+   * @param {Array} array The array to inspect.
+   * @param {*} placeholder The placeholder to search for.
+   * @returns {number} Returns the placeholder count.
+   */
+  function countHolders(array, placeholder) {
+    var length = array.length,
+        result = 0;
+
+    while (length--) {
+      if (array[length] === placeholder) {
+        ++result;
+      }
+    }
+    return result;
+  }
+
+  /**
+   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
+   * letters to basic Latin letters.
+   *
+   * @private
+   * @param {string} letter The matched letter to deburr.
+   * @returns {string} Returns the deburred letter.
+   */
+  var deburrLetter = basePropertyOf(deburredLetters);
+
+  /**
+   * Used by `_.escape` to convert characters to HTML entities.
+   *
+   * @private
+   * @param {string} chr The matched character to escape.
+   * @returns {string} Returns the escaped character.
+   */
+  var escapeHtmlChar = basePropertyOf(htmlEscapes);
+
+  /**
+   * Used by `_.template` to escape characters for inclusion in compiled string literals.
+   *
+   * @private
+   * @param {string} chr The matched character to escape.
+   * @returns {string} Returns the escaped character.
+   */
+  function escapeStringChar(chr) {
+    return '\\' + stringEscapes[chr];
+  }
+
+  /**
+   * Gets the value at `key` of `object`.
+   *
+   * @private
+   * @param {Object} [object] The object to query.
+   * @param {string} key The key of the property to get.
+   * @returns {*} Returns the property value.
+   */
+  function getValue(object, key) {
+    return object == null ? undefined : object[key];
+  }
+
+  /**
+   * Checks if `string` contains Unicode symbols.
+   *
+   * @private
+   * @param {string} string The string to inspect.
+   * @returns {boolean} Returns `true` if a symbol is found, else `false`.
+   */
+  function hasUnicode(string) {
+    return reHasUnicode.test(string);
+  }
+
+  /**
+   * Checks if `string` contains a word composed of Unicode symbols.
+   *
+   * @private
+   * @param {string} string The string to inspect.
+   * @returns {boolean} Returns `true` if a word is found, else `false`.
+   */
+  function hasUnicodeWord(string) {
+    return reHasUnicodeWord.test(string);
+  }
+
+  /**
+   * Converts `iterator` to an array.
+   *
+   * @private
+   * @param {Object} iterator The iterator to convert.
+   * @returns {Array} Returns the converted array.
+   */
+  function iteratorToArray(iterator) {
+    var data,
+        result = [];
+
+    while (!(data = iterator.next()).done) {
+      result.push(data.value);
+    }
+    return result;
+  }
+
+  /**
+   * Converts `map` to its key-value pairs.
+   *
+   * @private
+   * @param {Object} map The map to convert.
+   * @returns {Array} Returns the key-value pairs.
+   */
+  function mapToArray(map) {
+    var index = -1,
+        result = Array(map.size);
+
+    map.forEach(function(value, key) {
+      result[++index] = [key, value];
+    });
+    return result;
+  }
+
+  /**
+   * Creates a unary function that invokes `func` with its argument transformed.
+   *
+   * @private
+   * @param {Function} func The function to wrap.
+   * @param {Function} transform The argument transform.
+   * @returns {Function} Returns the new function.
+   */
+  function overArg(func, transform) {
+    return function(arg) {
+      return func(transform(arg));
+    };
+  }
+
+  /**
+   * Replaces all `placeholder` elements in `array` with an internal placeholder
+   * and returns an array of their indexes.
+   *
+   * @private
+   * @param {Array} array The array to modify.
+   * @param {*} placeholder The placeholder to replace.
+   * @returns {Array} Returns the new array of placeholder indexes.
+   */
+  function replaceHolders(array, placeholder) {
+    var index = -1,
+        length = array.length,
+        resIndex = 0,
+        result = [];
+
+    while (++index < length) {
+      var value = array[index];
+      if (value === placeholder || value === PLACEHOLDER) {
+        array[index] = PLACEHOLDER;
+        result[resIndex++] = index;
+      }
+    }
+    return result;
+  }
+
+  /**
+   * Converts `set` to an array of its values.
+   *
+   * @private
+   * @param {Object} set The set to convert.
+   * @returns {Array} Returns the values.
+   */
+  function setToArray(set) {
+    var index = -1,
+        result = Array(set.size);
+
+    set.forEach(function(value) {
+      result[++index] = value;
+    });
+    return result;
+  }
+
+  /**
+   * Converts `set` to its value-value pairs.
+   *
+   * @private
+   * @param {Object} set The set to convert.
+   * @returns {Array} Returns the value-value pairs.
+   */
+  function setToPairs(set) {
+    var index = -1,
+        result = Array(set.size);
+
+    set.forEach(function(value) {
+      result[++index] = [value, value];
+    });
+    return result;
+  }
+
+  /**
+   * A specialized version of `_.indexOf` which performs strict equality
+   * comparisons of values, i.e. `===`.
+   *
+   * @private
+   * @param {Array} array The array to inspect.
+   * @param {*} value The value to search for.
+   * @param {number} fromIndex The index to search from.
+   * @returns {number} Returns the index of the matched value, else `-1`.
+   */
+  function strictIndexOf(array, value, fromIndex) {
+    var index = fromIndex - 1,
+        length = array.length;
+
+    while (++index < length) {
+      if (array[index] === value) {
+        return index;
+      }
+    }
+    return -1;
+  }
+
+  /**
+   * A specialized version of `_.lastIndexOf` which performs strict equality
+   * comparisons of values, i.e. `===`.
+   *
+   * @private
+   * @param {Array} array The array to inspect.
+   * @param {*} value The value to search for.
+   * @param {number} fromIndex The index to search from.
+   * @returns {number} Returns the index of the matched value, else `-1`.
+   */
+  function strictLastIndexOf(array, value, fromIndex) {
+    var index = fromIndex + 1;
+    while (index--) {
+      if (array[index] === value) {
+        return index;
+      }
+    }
+    return index;
+  }
+
+  /**
+   * Gets the number of symbols in `string`.
+   *
+   * @private
+   * @param {string} string The string to inspect.
+   * @returns {number} Returns the string size.
+   */
+  function stringSize(string) {
+    return hasUnicode(string)
+      ? unicodeSize(string)
+      : asciiSize(string);
+  }
+
+  /**
+   * Converts `string` to an array.
+   *
+   * @private
+   * @param {string} string The string to convert.
+   * @returns {Array} Returns the converted array.
+   */
+  function stringToArray(string) {
+    return hasUnicode(string)
+      ? unicodeToArray(string)
+      : asciiToArray(string);
+  }
+
+  /**
+   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
+   * character of `string`.
+   *
+   * @private
+   * @param {string} string The string to inspect.
+   * @returns {number} Returns the index of the last non-whitespace character.
+   */
+  function trimmedEndIndex(string) {
+    var index = string.length;
+
+    while (index-- && reWhitespace.test(string.charAt(index))) {}
+    return index;
+  }
+
+  /**
+   * Used by `_.unescape` to convert HTML entities to characters.
+   *
+   * @private
+   * @param {string} chr The matched character to unescape.
+   * @returns {string} Returns the unescaped character.
+   */
+  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
+
+  /**
+   * Gets the size of a Unicode `string`.
+   *
+   * @private
+   * @param {string} string The string inspect.
+   * @returns {number} Returns the string size.
+   */
+  function unicodeSize(string) {
+    var result = reUnicode.lastIndex = 0;
+    while (reUnicode.test(string)) {
+      ++result;
+    }
+    return result;
+  }
+
+  /**
+   * Converts a Unicode `string` to an array.
+   *
+   * @private
+   * @param {string} string The string to convert.
+   * @returns {Array} Returns the converted array.
+   */
+  function unicodeToArray(string) {
+    return string.match(reUnicode) || [];
+  }
+
+  /**
+   * Splits a Unicode `string` into an array of its words.
+   *
+   * @private
+   * @param {string} The string to inspect.
+   * @returns {Array} Returns the words of `string`.
+   */
+  function unicodeWords(string) {
+    return string.match(reUnicodeWord) || [];
+  }
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * Create a new pristine `lodash` function using the `context` object.
+   *
+   * @static
+   * @memberOf _
+   * @since 1.1.0
+   * @category Util
+   * @param {Object} [context=root] The context object.
+   * @returns {Function} Returns a new `lodash` function.
+   * @example
+   *
+   * _.mixin({ 'foo': _.constant('foo') });
+   *
+   * var lodash = _.runInContext();
+   * lodash.mixin({ 'bar': lodash.constant('bar') });
+   *
+   * _.isFunction(_.foo);
+   * // => true
+   * _.isFunction(_.bar);
+   * // => false
+   *
+   * lodash.isFunction(lodash.foo);
+   * // => false
+   * lodash.isFunction(lodash.bar);
+   * // => true
+   *
+   * // Create a suped-up `defer` in Node.js.
+   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
+   */
+  var runInContext = (function runInContext(context) {
+    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
+
+    /** Built-in constructor references. */
+    var Array = context.Array,
+        Date = context.Date,
+        Error = context.Error,
+        Function = context.Function,
+        Math = context.Math,
+        Object = context.Object,
+        RegExp = context.RegExp,
+        String = context.String,
+        TypeError = context.TypeError;
+
+    /** Used for built-in method references. */
+    var arrayProto = Array.prototype,
+        funcProto = Function.prototype,
+        objectProto = Object.prototype;
+
+    /** Used to detect overreaching core-js shims. */
+    var coreJsData = context['__core-js_shared__'];
+
+    /** Used to resolve the decompiled source of functions. */
+    var funcToString = funcProto.toString;
+
+    /** Used to check objects for own properties. */
+    var hasOwnProperty = objectProto.hasOwnProperty;
+
+    /** Used to generate unique IDs. */
+    var idCounter = 0;
+
+    /** Used to detect methods masquerading as native. */
+    var maskSrcKey = (function() {
+      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
+      return uid ? ('Symbol(src)_1.' + uid) : '';
+    }());
+
+    /**
+     * Used to resolve the
+     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+     * of values.
+     */
+    var nativeObjectToString = objectProto.toString;
+
+    /** Used to infer the `Object` constructor. */
+    var objectCtorString = funcToString.call(Object);
+
+    /** Used to restore the original `_` reference in `_.noConflict`. */
+    var oldDash = root._;
+
+    /** Used to detect if a method is native. */
+    var reIsNative = RegExp('^' +
+      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
+      .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
+    );
+
+    /** Built-in value references. */
+    var Buffer = moduleExports ? context.Buffer : undefined,
+        Symbol = context.Symbol,
+        Uint8Array = context.Uint8Array,
+        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
+        getPrototype = overArg(Object.getPrototypeOf, Object),
+        objectCreate = Object.create,
+        propertyIsEnumerable = objectProto.propertyIsEnumerable,
+        splice = arrayProto.splice,
+        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
+        symIterator = Symbol ? Symbol.iterator : undefined,
+        symToStringTag = Symbol ? Symbol.toStringTag : undefined;
+
+    var defineProperty = (function() {
+      try {
+        var func = getNative(Object, 'defineProperty');
+        func({}, '', {});
+        return func;
+      } catch (e) {}
+    }());
+
+    /** Mocked built-ins. */
+    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
+        ctxNow = Date && Date.now !== root.Date.now && Date.now,
+        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
+
+    /* Built-in method references for those with the same name as other `lodash` methods. */
+    var nativeCeil = Math.ceil,
+        nativeFloor = Math.floor,
+        nativeGetSymbols = Object.getOwnPropertySymbols,
+        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
+        nativeIsFinite = context.isFinite,
+        nativeJoin = arrayProto.join,
+        nativeKeys = overArg(Object.keys, Object),
+        nativeMax = Math.max,
+        nativeMin = Math.min,
+        nativeNow = Date.now,
+        nativeParseInt = context.parseInt,
+        nativeRandom = Math.random,
+        nativeReverse = arrayProto.reverse;
+
+    /* Built-in method references that are verified to be native. */
+    var DataView = getNative(context, 'DataView'),
+        Map = getNative(context, 'Map'),
+        Promise = getNative(context, 'Promise'),
+        Set = getNative(context, 'Set'),
+        WeakMap = getNative(context, 'WeakMap'),
+        nativeCreate = getNative(Object, 'create');
+
+    /** Used to store function metadata. */
+    var metaMap = WeakMap && new WeakMap;
+
+    /** Used to lookup unminified function names. */
+    var realNames = {};
+
+    /** Used to detect maps, sets, and weakmaps. */
+    var dataViewCtorString = toSource(DataView),
+        mapCtorString = toSource(Map),
+        promiseCtorString = toSource(Promise),
+        setCtorString = toSource(Set),
+        weakMapCtorString = toSource(WeakMap);
+
+    /** Used to convert symbols to primitives and strings. */
+    var symbolProto = Symbol ? Symbol.prototype : undefined,
+        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
+        symbolToString = symbolProto ? symbolProto.toString : undefined;
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates a `lodash` object which wraps `value` to enable implicit method
+     * chain sequences. Methods that operate on and return arrays, collections,
+     * and functions can be chained together. Methods that retrieve a single value
+     * or may return a primitive value will automatically end the chain sequence
+     * and return the unwrapped value. Otherwise, the value must be unwrapped
+     * with `_#value`.
+     *
+     * Explicit chain sequences, which must be unwrapped with `_#value`, may be
+     * enabled using `_.chain`.
+     *
+     * The execution of chained methods is lazy, that is, it's deferred until
+     * `_#value` is implicitly or explicitly called.
+     *
+     * Lazy evaluation allows several methods to support shortcut fusion.
+     * Shortcut fusion is an optimization to merge iteratee calls; this avoids
+     * the creation of intermediate arrays and can greatly reduce the number of
+     * iteratee executions. Sections of a chain sequence qualify for shortcut
+     * fusion if the section is applied to an array and iteratees accept only
+     * one argument. The heuristic for whether a section qualifies for shortcut
+     * fusion is subject to change.
+     *
+     * Chaining is supported in custom builds as long as the `_#value` method is
+     * directly or indirectly included in the build.
+     *
+     * In addition to lodash methods, wrappers have `Array` and `String` methods.
+     *
+     * The wrapper `Array` methods are:
+     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
+     *
+     * The wrapper `String` methods are:
+     * `replace` and `split`
+     *
+     * The wrapper methods that support shortcut fusion are:
+     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
+     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
+     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
+     *
+     * The chainable wrapper methods are:
+     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
+     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
+     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
+     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
+     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
+     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
+     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
+     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
+     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
+     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
+     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
+     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
+     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
+     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
+     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
+     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
+     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
+     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
+     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
+     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
+     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
+     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
+     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
+     * `zipObject`, `zipObjectDeep`, and `zipWith`
+     *
+     * The wrapper methods that are **not** chainable by default are:
+     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
+     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
+     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
+     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
+     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
+     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
+     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
+     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
+     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
+     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
+     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
+     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
+     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
+     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
+     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
+     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
+     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
+     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
+     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
+     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
+     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
+     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
+     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
+     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
+     * `upperFirst`, `value`, and `words`
+     *
+     * @name _
+     * @constructor
+     * @category Seq
+     * @param {*} value The value to wrap in a `lodash` instance.
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * function square(n) {
+     *   return n * n;
+     * }
+     *
+     * var wrapped = _([1, 2, 3]);
+     *
+     * // Returns an unwrapped value.
+     * wrapped.reduce(_.add);
+     * // => 6
+     *
+     * // Returns a wrapped value.
+     * var squares = wrapped.map(square);
+     *
+     * _.isArray(squares);
+     * // => false
+     *
+     * _.isArray(squares.value());
+     * // => true
+     */
+    function lodash(value) {
+      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
+        if (value instanceof LodashWrapper) {
+          return value;
+        }
+        if (hasOwnProperty.call(value, '__wrapped__')) {
+          return wrapperClone(value);
+        }
+      }
+      return new LodashWrapper(value);
+    }
+
+    /**
+     * The base implementation of `_.create` without support for assigning
+     * properties to the created object.
+     *
+     * @private
+     * @param {Object} proto The object to inherit from.
+     * @returns {Object} Returns the new object.
+     */
+    var baseCreate = (function() {
+      function object() {}
+      return function(proto) {
+        if (!isObject(proto)) {
+          return {};
+        }
+        if (objectCreate) {
+          return objectCreate(proto);
+        }
+        object.prototype = proto;
+        var result = new object;
+        object.prototype = undefined;
+        return result;
+      };
+    }());
+
+    /**
+     * The function whose prototype chain sequence wrappers inherit from.
+     *
+     * @private
+     */
+    function baseLodash() {
+      // No operation performed.
+    }
+
+    /**
+     * The base constructor for creating `lodash` wrapper objects.
+     *
+     * @private
+     * @param {*} value The value to wrap.
+     * @param {boolean} [chainAll] Enable explicit method chain sequences.
+     */
+    function LodashWrapper(value, chainAll) {
+      this.__wrapped__ = value;
+      this.__actions__ = [];
+      this.__chain__ = !!chainAll;
+      this.__index__ = 0;
+      this.__values__ = undefined;
+    }
+
+    /**
+     * By default, the template delimiters used by lodash are like those in
+     * embedded Ruby (ERB) as well as ES2015 template strings. Change the
+     * following template settings to use alternative delimiters.
+     *
+     * @static
+     * @memberOf _
+     * @type {Object}
+     */
+    lodash.templateSettings = {
+
+      /**
+       * Used to detect `data` property values to be HTML-escaped.
+       *
+       * @memberOf _.templateSettings
+       * @type {RegExp}
+       */
+      'escape': reEscape,
+
+      /**
+       * Used to detect code to be evaluated.
+       *
+       * @memberOf _.templateSettings
+       * @type {RegExp}
+       */
+      'evaluate': reEvaluate,
+
+      /**
+       * Used to detect `data` property values to inject.
+       *
+       * @memberOf _.templateSettings
+       * @type {RegExp}
+       */
+      'interpolate': reInterpolate,
+
+      /**
+       * Used to reference the data object in the template text.
+       *
+       * @memberOf _.templateSettings
+       * @type {string}
+       */
+      'variable': '',
+
+      /**
+       * Used to import variables into the compiled template.
+       *
+       * @memberOf _.templateSettings
+       * @type {Object}
+       */
+      'imports': {
+
+        /**
+         * A reference to the `lodash` function.
+         *
+         * @memberOf _.templateSettings.imports
+         * @type {Function}
+         */
+        '_': lodash
+      }
+    };
+
+    // Ensure wrappers are instances of `baseLodash`.
+    lodash.prototype = baseLodash.prototype;
+    lodash.prototype.constructor = lodash;
+
+    LodashWrapper.prototype = baseCreate(baseLodash.prototype);
+    LodashWrapper.prototype.constructor = LodashWrapper;
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
+     *
+     * @private
+     * @constructor
+     * @param {*} value The value to wrap.
+     */
+    function LazyWrapper(value) {
+      this.__wrapped__ = value;
+      this.__actions__ = [];
+      this.__dir__ = 1;
+      this.__filtered__ = false;
+      this.__iteratees__ = [];
+      this.__takeCount__ = MAX_ARRAY_LENGTH;
+      this.__views__ = [];
+    }
+
+    /**
+     * Creates a clone of the lazy wrapper object.
+     *
+     * @private
+     * @name clone
+     * @memberOf LazyWrapper
+     * @returns {Object} Returns the cloned `LazyWrapper` object.
+     */
+    function lazyClone() {
+      var result = new LazyWrapper(this.__wrapped__);
+      result.__actions__ = copyArray(this.__actions__);
+      result.__dir__ = this.__dir__;
+      result.__filtered__ = this.__filtered__;
+      result.__iteratees__ = copyArray(this.__iteratees__);
+      result.__takeCount__ = this.__takeCount__;
+      result.__views__ = copyArray(this.__views__);
+      return result;
+    }
+
+    /**
+     * Reverses the direction of lazy iteration.
+     *
+     * @private
+     * @name reverse
+     * @memberOf LazyWrapper
+     * @returns {Object} Returns the new reversed `LazyWrapper` object.
+     */
+    function lazyReverse() {
+      if (this.__filtered__) {
+        var result = new LazyWrapper(this);
+        result.__dir__ = -1;
+        result.__filtered__ = true;
+      } else {
+        result = this.clone();
+        result.__dir__ *= -1;
+      }
+      return result;
+    }
+
+    /**
+     * Extracts the unwrapped value from its lazy wrapper.
+     *
+     * @private
+     * @name value
+     * @memberOf LazyWrapper
+     * @returns {*} Returns the unwrapped value.
+     */
+    function lazyValue() {
+      var array = this.__wrapped__.value(),
+          dir = this.__dir__,
+          isArr = isArray(array),
+          isRight = dir < 0,
+          arrLength = isArr ? array.length : 0,
+          view = getView(0, arrLength, this.__views__),
+          start = view.start,
+          end = view.end,
+          length = end - start,
+          index = isRight ? end : (start - 1),
+          iteratees = this.__iteratees__,
+          iterLength = iteratees.length,
+          resIndex = 0,
+          takeCount = nativeMin(length, this.__takeCount__);
+
+      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
+        return baseWrapperValue(array, this.__actions__);
+      }
+      var result = [];
+
+      outer:
+      while (length-- && resIndex < takeCount) {
+        index += dir;
+
+        var iterIndex = -1,
+            value = array[index];
+
+        while (++iterIndex < iterLength) {
+          var data = iteratees[iterIndex],
+              iteratee = data.iteratee,
+              type = data.type,
+              computed = iteratee(value);
+
+          if (type == LAZY_MAP_FLAG) {
+            value = computed;
+          } else if (!computed) {
+            if (type == LAZY_FILTER_FLAG) {
+              continue outer;
+            } else {
+              break outer;
+            }
+          }
+        }
+        result[resIndex++] = value;
+      }
+      return result;
+    }
+
+    // Ensure `LazyWrapper` is an instance of `baseLodash`.
+    LazyWrapper.prototype = baseCreate(baseLodash.prototype);
+    LazyWrapper.prototype.constructor = LazyWrapper;
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates a hash object.
+     *
+     * @private
+     * @constructor
+     * @param {Array} [entries] The key-value pairs to cache.
+     */
+    function Hash(entries) {
+      var index = -1,
+          length = entries == null ? 0 : entries.length;
+
+      this.clear();
+      while (++index < length) {
+        var entry = entries[index];
+        this.set(entry[0], entry[1]);
+      }
+    }
+
+    /**
+     * Removes all key-value entries from the hash.
+     *
+     * @private
+     * @name clear
+     * @memberOf Hash
+     */
+    function hashClear() {
+      this.__data__ = nativeCreate ? nativeCreate(null) : {};
+      this.size = 0;
+    }
+
+    /**
+     * Removes `key` and its value from the hash.
+     *
+     * @private
+     * @name delete
+     * @memberOf Hash
+     * @param {Object} hash The hash to modify.
+     * @param {string} key The key of the value to remove.
+     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+     */
+    function hashDelete(key) {
+      var result = this.has(key) && delete this.__data__[key];
+      this.size -= result ? 1 : 0;
+      return result;
+    }
+
+    /**
+     * Gets the hash value for `key`.
+     *
+     * @private
+     * @name get
+     * @memberOf Hash
+     * @param {string} key The key of the value to get.
+     * @returns {*} Returns the entry value.
+     */
+    function hashGet(key) {
+      var data = this.__data__;
+      if (nativeCreate) {
+        var result = data[key];
+        return result === HASH_UNDEFINED ? undefined : result;
+      }
+      return hasOwnProperty.call(data, key) ? data[key] : undefined;
+    }
+
+    /**
+     * Checks if a hash value for `key` exists.
+     *
+     * @private
+     * @name has
+     * @memberOf Hash
+     * @param {string} key The key of the entry to check.
+     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+     */
+    function hashHas(key) {
+      var data = this.__data__;
+      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
+    }
+
+    /**
+     * Sets the hash `key` to `value`.
+     *
+     * @private
+     * @name set
+     * @memberOf Hash
+     * @param {string} key The key of the value to set.
+     * @param {*} value The value to set.
+     * @returns {Object} Returns the hash instance.
+     */
+    function hashSet(key, value) {
+      var data = this.__data__;
+      this.size += this.has(key) ? 0 : 1;
+      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
+      return this;
+    }
+
+    // Add methods to `Hash`.
+    Hash.prototype.clear = hashClear;
+    Hash.prototype['delete'] = hashDelete;
+    Hash.prototype.get = hashGet;
+    Hash.prototype.has = hashHas;
+    Hash.prototype.set = hashSet;
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates an list cache object.
+     *
+     * @private
+     * @constructor
+     * @param {Array} [entries] The key-value pairs to cache.
+     */
+    function ListCache(entries) {
+      var index = -1,
+          length = entries == null ? 0 : entries.length;
+
+      this.clear();
+      while (++index < length) {
+        var entry = entries[index];
+        this.set(entry[0], entry[1]);
+      }
+    }
+
+    /**
+     * Removes all key-value entries from the list cache.
+     *
+     * @private
+     * @name clear
+     * @memberOf ListCache
+     */
+    function listCacheClear() {
+      this.__data__ = [];
+      this.size = 0;
+    }
+
+    /**
+     * Removes `key` and its value from the list cache.
+     *
+     * @private
+     * @name delete
+     * @memberOf ListCache
+     * @param {string} key The key of the value to remove.
+     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+     */
+    function listCacheDelete(key) {
+      var data = this.__data__,
+          index = assocIndexOf(data, key);
+
+      if (index < 0) {
+        return false;
+      }
+      var lastIndex = data.length - 1;
+      if (index == lastIndex) {
+        data.pop();
+      } else {
+        splice.call(data, index, 1);
+      }
+      --this.size;
+      return true;
+    }
+
+    /**
+     * Gets the list cache value for `key`.
+     *
+     * @private
+     * @name get
+     * @memberOf ListCache
+     * @param {string} key The key of the value to get.
+     * @returns {*} Returns the entry value.
+     */
+    function listCacheGet(key) {
+      var data = this.__data__,
+          index = assocIndexOf(data, key);
+
+      return index < 0 ? undefined : data[index][1];
+    }
+
+    /**
+     * Checks if a list cache value for `key` exists.
+     *
+     * @private
+     * @name has
+     * @memberOf ListCache
+     * @param {string} key The key of the entry to check.
+     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+     */
+    function listCacheHas(key) {
+      return assocIndexOf(this.__data__, key) > -1;
+    }
+
+    /**
+     * Sets the list cache `key` to `value`.
+     *
+     * @private
+     * @name set
+     * @memberOf ListCache
+     * @param {string} key The key of the value to set.
+     * @param {*} value The value to set.
+     * @returns {Object} Returns the list cache instance.
+     */
+    function listCacheSet(key, value) {
+      var data = this.__data__,
+          index = assocIndexOf(data, key);
+
+      if (index < 0) {
+        ++this.size;
+        data.push([key, value]);
+      } else {
+        data[index][1] = value;
+      }
+      return this;
+    }
+
+    // Add methods to `ListCache`.
+    ListCache.prototype.clear = listCacheClear;
+    ListCache.prototype['delete'] = listCacheDelete;
+    ListCache.prototype.get = listCacheGet;
+    ListCache.prototype.has = listCacheHas;
+    ListCache.prototype.set = listCacheSet;
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates a map cache object to store key-value pairs.
+     *
+     * @private
+     * @constructor
+     * @param {Array} [entries] The key-value pairs to cache.
+     */
+    function MapCache(entries) {
+      var index = -1,
+          length = entries == null ? 0 : entries.length;
+
+      this.clear();
+      while (++index < length) {
+        var entry = entries[index];
+        this.set(entry[0], entry[1]);
+      }
+    }
+
+    /**
+     * Removes all key-value entries from the map.
+     *
+     * @private
+     * @name clear
+     * @memberOf MapCache
+     */
+    function mapCacheClear() {
+      this.size = 0;
+      this.__data__ = {
+        'hash': new Hash,
+        'map': new (Map || ListCache),
+        'string': new Hash
+      };
+    }
+
+    /**
+     * Removes `key` and its value from the map.
+     *
+     * @private
+     * @name delete
+     * @memberOf MapCache
+     * @param {string} key The key of the value to remove.
+     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+     */
+    function mapCacheDelete(key) {
+      var result = getMapData(this, key)['delete'](key);
+      this.size -= result ? 1 : 0;
+      return result;
+    }
+
+    /**
+     * Gets the map value for `key`.
+     *
+     * @private
+     * @name get
+     * @memberOf MapCache
+     * @param {string} key The key of the value to get.
+     * @returns {*} Returns the entry value.
+     */
+    function mapCacheGet(key) {
+      return getMapData(this, key).get(key);
+    }
+
+    /**
+     * Checks if a map value for `key` exists.
+     *
+     * @private
+     * @name has
+     * @memberOf MapCache
+     * @param {string} key The key of the entry to check.
+     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+     */
+    function mapCacheHas(key) {
+      return getMapData(this, key).has(key);
+    }
+
+    /**
+     * Sets the map `key` to `value`.
+     *
+     * @private
+     * @name set
+     * @memberOf MapCache
+     * @param {string} key The key of the value to set.
+     * @param {*} value The value to set.
+     * @returns {Object} Returns the map cache instance.
+     */
+    function mapCacheSet(key, value) {
+      var data = getMapData(this, key),
+          size = data.size;
+
+      data.set(key, value);
+      this.size += data.size == size ? 0 : 1;
+      return this;
+    }
+
+    // Add methods to `MapCache`.
+    MapCache.prototype.clear = mapCacheClear;
+    MapCache.prototype['delete'] = mapCacheDelete;
+    MapCache.prototype.get = mapCacheGet;
+    MapCache.prototype.has = mapCacheHas;
+    MapCache.prototype.set = mapCacheSet;
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     *
+     * Creates an array cache object to store unique values.
+     *
+     * @private
+     * @constructor
+     * @param {Array} [values] The values to cache.
+     */
+    function SetCache(values) {
+      var index = -1,
+          length = values == null ? 0 : values.length;
+
+      this.__data__ = new MapCache;
+      while (++index < length) {
+        this.add(values[index]);
+      }
+    }
+
+    /**
+     * Adds `value` to the array cache.
+     *
+     * @private
+     * @name add
+     * @memberOf SetCache
+     * @alias push
+     * @param {*} value The value to cache.
+     * @returns {Object} Returns the cache instance.
+     */
+    function setCacheAdd(value) {
+      this.__data__.set(value, HASH_UNDEFINED);
+      return this;
+    }
+
+    /**
+     * Checks if `value` is in the array cache.
+     *
+     * @private
+     * @name has
+     * @memberOf SetCache
+     * @param {*} value The value to search for.
+     * @returns {number} Returns `true` if `value` is found, else `false`.
+     */
+    function setCacheHas(value) {
+      return this.__data__.has(value);
+    }
+
+    // Add methods to `SetCache`.
+    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
+    SetCache.prototype.has = setCacheHas;
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates a stack cache object to store key-value pairs.
+     *
+     * @private
+     * @constructor
+     * @param {Array} [entries] The key-value pairs to cache.
+     */
+    function Stack(entries) {
+      var data = this.__data__ = new ListCache(entries);
+      this.size = data.size;
+    }
+
+    /**
+     * Removes all key-value entries from the stack.
+     *
+     * @private
+     * @name clear
+     * @memberOf Stack
+     */
+    function stackClear() {
+      this.__data__ = new ListCache;
+      this.size = 0;
+    }
+
+    /**
+     * Removes `key` and its value from the stack.
+     *
+     * @private
+     * @name delete
+     * @memberOf Stack
+     * @param {string} key The key of the value to remove.
+     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+     */
+    function stackDelete(key) {
+      var data = this.__data__,
+          result = data['delete'](key);
+
+      this.size = data.size;
+      return result;
+    }
+
+    /**
+     * Gets the stack value for `key`.
+     *
+     * @private
+     * @name get
+     * @memberOf Stack
+     * @param {string} key The key of the value to get.
+     * @returns {*} Returns the entry value.
+     */
+    function stackGet(key) {
+      return this.__data__.get(key);
+    }
+
+    /**
+     * Checks if a stack value for `key` exists.
+     *
+     * @private
+     * @name has
+     * @memberOf Stack
+     * @param {string} key The key of the entry to check.
+     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+     */
+    function stackHas(key) {
+      return this.__data__.has(key);
+    }
+
+    /**
+     * Sets the stack `key` to `value`.
+     *
+     * @private
+     * @name set
+     * @memberOf Stack
+     * @param {string} key The key of the value to set.
+     * @param {*} value The value to set.
+     * @returns {Object} Returns the stack cache instance.
+     */
+    function stackSet(key, value) {
+      var data = this.__data__;
+      if (data instanceof ListCache) {
+        var pairs = data.__data__;
+        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
+          pairs.push([key, value]);
+          this.size = ++data.size;
+          return this;
+        }
+        data = this.__data__ = new MapCache(pairs);
+      }
+      data.set(key, value);
+      this.size = data.size;
+      return this;
+    }
+
+    // Add methods to `Stack`.
+    Stack.prototype.clear = stackClear;
+    Stack.prototype['delete'] = stackDelete;
+    Stack.prototype.get = stackGet;
+    Stack.prototype.has = stackHas;
+    Stack.prototype.set = stackSet;
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates an array of the enumerable property names of the array-like `value`.
+     *
+     * @private
+     * @param {*} value The value to query.
+     * @param {boolean} inherited Specify returning inherited property names.
+     * @returns {Array} Returns the array of property names.
+     */
+    function arrayLikeKeys(value, inherited) {
+      var isArr = isArray(value),
+          isArg = !isArr && isArguments(value),
+          isBuff = !isArr && !isArg && isBuffer(value),
+          isType = !isArr && !isArg && !isBuff && isTypedArray(value),
+          skipIndexes = isArr || isArg || isBuff || isType,
+          result = skipIndexes ? baseTimes(value.length, String) : [],
+          length = result.length;
+
+      for (var key in value) {
+        if ((inherited || hasOwnProperty.call(value, key)) &&
+            !(skipIndexes && (
+               // Safari 9 has enumerable `arguments.length` in strict mode.
+               key == 'length' ||
+               // Node.js 0.10 has enumerable non-index properties on buffers.
+               (isBuff && (key == 'offset' || key == 'parent')) ||
+               // PhantomJS 2 has enumerable non-index properties on typed arrays.
+               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
+               // Skip index properties.
+               isIndex(key, length)
+            ))) {
+          result.push(key);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * A specialized version of `_.sample` for arrays.
+     *
+     * @private
+     * @param {Array} array The array to sample.
+     * @returns {*} Returns the random element.
+     */
+    function arraySample(array) {
+      var length = array.length;
+      return length ? array[baseRandom(0, length - 1)] : undefined;
+    }
+
+    /**
+     * A specialized version of `_.sampleSize` for arrays.
+     *
+     * @private
+     * @param {Array} array The array to sample.
+     * @param {number} n The number of elements to sample.
+     * @returns {Array} Returns the random elements.
+     */
+    function arraySampleSize(array, n) {
+      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
+    }
+
+    /**
+     * A specialized version of `_.shuffle` for arrays.
+     *
+     * @private
+     * @param {Array} array The array to shuffle.
+     * @returns {Array} Returns the new shuffled array.
+     */
+    function arrayShuffle(array) {
+      return shuffleSelf(copyArray(array));
+    }
+
+    /**
+     * This function is like `assignValue` except that it doesn't assign
+     * `undefined` values.
+     *
+     * @private
+     * @param {Object} object The object to modify.
+     * @param {string} key The key of the property to assign.
+     * @param {*} value The value to assign.
+     */
+    function assignMergeValue(object, key, value) {
+      if ((value !== undefined && !eq(object[key], value)) ||
+          (value === undefined && !(key in object))) {
+        baseAssignValue(object, key, value);
+      }
+    }
+
+    /**
+     * Assigns `value` to `key` of `object` if the existing value is not equivalent
+     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+     * for equality comparisons.
+     *
+     * @private
+     * @param {Object} object The object to modify.
+     * @param {string} key The key of the property to assign.
+     * @param {*} value The value to assign.
+     */
+    function assignValue(object, key, value) {
+      var objValue = object[key];
+      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
+          (value === undefined && !(key in object))) {
+        baseAssignValue(object, key, value);
+      }
+    }
+
+    /**
+     * Gets the index at which the `key` is found in `array` of key-value pairs.
+     *
+     * @private
+     * @param {Array} array The array to inspect.
+     * @param {*} key The key to search for.
+     * @returns {number} Returns the index of the matched value, else `-1`.
+     */
+    function assocIndexOf(array, key) {
+      var length = array.length;
+      while (length--) {
+        if (eq(array[length][0], key)) {
+          return length;
+        }
+      }
+      return -1;
+    }
+
+    /**
+     * Aggregates elements of `collection` on `accumulator` with keys transformed
+     * by `iteratee` and values set by `setter`.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} setter The function to set `accumulator` values.
+     * @param {Function} iteratee The iteratee to transform keys.
+     * @param {Object} accumulator The initial aggregated object.
+     * @returns {Function} Returns `accumulator`.
+     */
+    function baseAggregator(collection, setter, iteratee, accumulator) {
+      baseEach(collection, function(value, key, collection) {
+        setter(accumulator, value, iteratee(value), collection);
+      });
+      return accumulator;
+    }
+
+    /**
+     * The base implementation of `_.assign` without support for multiple sources
+     * or `customizer` functions.
+     *
+     * @private
+     * @param {Object} object The destination object.
+     * @param {Object} source The source object.
+     * @returns {Object} Returns `object`.
+     */
+    function baseAssign(object, source) {
+      return object && copyObject(source, keys(source), object);
+    }
+
+    /**
+     * The base implementation of `_.assignIn` without support for multiple sources
+     * or `customizer` functions.
+     *
+     * @private
+     * @param {Object} object The destination object.
+     * @param {Object} source The source object.
+     * @returns {Object} Returns `object`.
+     */
+    function baseAssignIn(object, source) {
+      return object && copyObject(source, keysIn(source), object);
+    }
+
+    /**
+     * The base implementation of `assignValue` and `assignMergeValue` without
+     * value checks.
+     *
+     * @private
+     * @param {Object} object The object to modify.
+     * @param {string} key The key of the property to assign.
+     * @param {*} value The value to assign.
+     */
+    function baseAssignValue(object, key, value) {
+      if (key == '__proto__' && defineProperty) {
+        defineProperty(object, key, {
+          'configurable': true,
+          'enumerable': true,
+          'value': value,
+          'writable': true
+        });
+      } else {
+        object[key] = value;
+      }
+    }
+
+    /**
+     * The base implementation of `_.at` without support for individual paths.
+     *
+     * @private
+     * @param {Object} object The object to iterate over.
+     * @param {string[]} paths The property paths to pick.
+     * @returns {Array} Returns the picked elements.
+     */
+    function baseAt(object, paths) {
+      var index = -1,
+          length = paths.length,
+          result = Array(length),
+          skip = object == null;
+
+      while (++index < length) {
+        result[index] = skip ? undefined : get(object, paths[index]);
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.clamp` which doesn't coerce arguments.
+     *
+     * @private
+     * @param {number} number The number to clamp.
+     * @param {number} [lower] The lower bound.
+     * @param {number} upper The upper bound.
+     * @returns {number} Returns the clamped number.
+     */
+    function baseClamp(number, lower, upper) {
+      if (number === number) {
+        if (upper !== undefined) {
+          number = number <= upper ? number : upper;
+        }
+        if (lower !== undefined) {
+          number = number >= lower ? number : lower;
+        }
+      }
+      return number;
+    }
+
+    /**
+     * The base implementation of `_.clone` and `_.cloneDeep` which tracks
+     * traversed objects.
+     *
+     * @private
+     * @param {*} value The value to clone.
+     * @param {boolean} bitmask The bitmask flags.
+     *  1 - Deep clone
+     *  2 - Flatten inherited properties
+     *  4 - Clone symbols
+     * @param {Function} [customizer] The function to customize cloning.
+     * @param {string} [key] The key of `value`.
+     * @param {Object} [object] The parent object of `value`.
+     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
+     * @returns {*} Returns the cloned value.
+     */
+    function baseClone(value, bitmask, customizer, key, object, stack) {
+      var result,
+          isDeep = bitmask & CLONE_DEEP_FLAG,
+          isFlat = bitmask & CLONE_FLAT_FLAG,
+          isFull = bitmask & CLONE_SYMBOLS_FLAG;
+
+      if (customizer) {
+        result = object ? customizer(value, key, object, stack) : customizer(value);
+      }
+      if (result !== undefined) {
+        return result;
+      }
+      if (!isObject(value)) {
+        return value;
+      }
+      var isArr = isArray(value);
+      if (isArr) {
+        result = initCloneArray(value);
+        if (!isDeep) {
+          return copyArray(value, result);
+        }
+      } else {
+        var tag = getTag(value),
+            isFunc = tag == funcTag || tag == genTag;
+
+        if (isBuffer(value)) {
+          return cloneBuffer(value, isDeep);
+        }
+        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
+          result = (isFlat || isFunc) ? {} : initCloneObject(value);
+          if (!isDeep) {
+            return isFlat
+              ? copySymbolsIn(value, baseAssignIn(result, value))
+              : copySymbols(value, baseAssign(result, value));
+          }
+        } else {
+          if (!cloneableTags[tag]) {
+            return object ? value : {};
+          }
+          result = initCloneByTag(value, tag, isDeep);
+        }
+      }
+      // Check for circular references and return its corresponding clone.
+      stack || (stack = new Stack);
+      var stacked = stack.get(value);
+      if (stacked) {
+        return stacked;
+      }
+      stack.set(value, result);
+
+      if (isSet(value)) {
+        value.forEach(function(subValue) {
+          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
+        });
+      } else if (isMap(value)) {
+        value.forEach(function(subValue, key) {
+          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
+        });
+      }
+
+      var keysFunc = isFull
+        ? (isFlat ? getAllKeysIn : getAllKeys)
+        : (isFlat ? keysIn : keys);
+
+      var props = isArr ? undefined : keysFunc(value);
+      arrayEach(props || value, function(subValue, key) {
+        if (props) {
+          key = subValue;
+          subValue = value[key];
+        }
+        // Recursively populate clone (susceptible to call stack limits).
+        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
+      });
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.conforms` which doesn't clone `source`.
+     *
+     * @private
+     * @param {Object} source The object of property predicates to conform to.
+     * @returns {Function} Returns the new spec function.
+     */
+    function baseConforms(source) {
+      var props = keys(source);
+      return function(object) {
+        return baseConformsTo(object, source, props);
+      };
+    }
+
+    /**
+     * The base implementation of `_.conformsTo` which accepts `props` to check.
+     *
+     * @private
+     * @param {Object} object The object to inspect.
+     * @param {Object} source The object of property predicates to conform to.
+     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
+     */
+    function baseConformsTo(object, source, props) {
+      var length = props.length;
+      if (object == null) {
+        return !length;
+      }
+      object = Object(object);
+      while (length--) {
+        var key = props[length],
+            predicate = source[key],
+            value = object[key];
+
+        if ((value === undefined && !(key in object)) || !predicate(value)) {
+          return false;
+        }
+      }
+      return true;
+    }
+
+    /**
+     * The base implementation of `_.delay` and `_.defer` which accepts `args`
+     * to provide to `func`.
+     *
+     * @private
+     * @param {Function} func The function to delay.
+     * @param {number} wait The number of milliseconds to delay invocation.
+     * @param {Array} args The arguments to provide to `func`.
+     * @returns {number|Object} Returns the timer id or timeout object.
+     */
+    function baseDelay(func, wait, args) {
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      return setTimeout(function() { func.apply(undefined, args); }, wait);
+    }
+
+    /**
+     * The base implementation of methods like `_.difference` without support
+     * for excluding multiple arrays or iteratee shorthands.
+     *
+     * @private
+     * @param {Array} array The array to inspect.
+     * @param {Array} values The values to exclude.
+     * @param {Function} [iteratee] The iteratee invoked per element.
+     * @param {Function} [comparator] The comparator invoked per element.
+     * @returns {Array} Returns the new array of filtered values.
+     */
+    function baseDifference(array, values, iteratee, comparator) {
+      var index = -1,
+          includes = arrayIncludes,
+          isCommon = true,
+          length = array.length,
+          result = [],
+          valuesLength = values.length;
+
+      if (!length) {
+        return result;
+      }
+      if (iteratee) {
+        values = arrayMap(values, baseUnary(iteratee));
+      }
+      if (comparator) {
+        includes = arrayIncludesWith;
+        isCommon = false;
+      }
+      else if (values.length >= LARGE_ARRAY_SIZE) {
+        includes = cacheHas;
+        isCommon = false;
+        values = new SetCache(values);
+      }
+      outer:
+      while (++index < length) {
+        var value = array[index],
+            computed = iteratee == null ? value : iteratee(value);
+
+        value = (comparator || value !== 0) ? value : 0;
+        if (isCommon && computed === computed) {
+          var valuesIndex = valuesLength;
+          while (valuesIndex--) {
+            if (values[valuesIndex] === computed) {
+              continue outer;
+            }
+          }
+          result.push(value);
+        }
+        else if (!includes(values, computed, comparator)) {
+          result.push(value);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.forEach` without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Array|Object} Returns `collection`.
+     */
+    var baseEach = createBaseEach(baseForOwn);
+
+    /**
+     * The base implementation of `_.forEachRight` without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Array|Object} Returns `collection`.
+     */
+    var baseEachRight = createBaseEach(baseForOwnRight, true);
+
+    /**
+     * The base implementation of `_.every` without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} predicate The function invoked per iteration.
+     * @returns {boolean} Returns `true` if all elements pass the predicate check,
+     *  else `false`
+     */
+    function baseEvery(collection, predicate) {
+      var result = true;
+      baseEach(collection, function(value, index, collection) {
+        result = !!predicate(value, index, collection);
+        return result;
+      });
+      return result;
+    }
+
+    /**
+     * The base implementation of methods like `_.max` and `_.min` which accepts a
+     * `comparator` to determine the extremum value.
+     *
+     * @private
+     * @param {Array} array The array to iterate over.
+     * @param {Function} iteratee The iteratee invoked per iteration.
+     * @param {Function} comparator The comparator used to compare values.
+     * @returns {*} Returns the extremum value.
+     */
+    function baseExtremum(array, iteratee, comparator) {
+      var index = -1,
+          length = array.length;
+
+      while (++index < length) {
+        var value = array[index],
+            current = iteratee(value);
+
+        if (current != null && (computed === undefined
+              ? (current === current && !isSymbol(current))
+              : comparator(current, computed)
+            )) {
+          var computed = current,
+              result = value;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.fill` without an iteratee call guard.
+     *
+     * @private
+     * @param {Array} array The array to fill.
+     * @param {*} value The value to fill `array` with.
+     * @param {number} [start=0] The start position.
+     * @param {number} [end=array.length] The end position.
+     * @returns {Array} Returns `array`.
+     */
+    function baseFill(array, value, start, end) {
+      var length = array.length;
+
+      start = toInteger(start);
+      if (start < 0) {
+        start = -start > length ? 0 : (length + start);
+      }
+      end = (end === undefined || end > length) ? length : toInteger(end);
+      if (end < 0) {
+        end += length;
+      }
+      end = start > end ? 0 : toLength(end);
+      while (start < end) {
+        array[start++] = value;
+      }
+      return array;
+    }
+
+    /**
+     * The base implementation of `_.filter` without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} predicate The function invoked per iteration.
+     * @returns {Array} Returns the new filtered array.
+     */
+    function baseFilter(collection, predicate) {
+      var result = [];
+      baseEach(collection, function(value, index, collection) {
+        if (predicate(value, index, collection)) {
+          result.push(value);
+        }
+      });
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.flatten` with support for restricting flattening.
+     *
+     * @private
+     * @param {Array} array The array to flatten.
+     * @param {number} depth The maximum recursion depth.
+     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
+     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
+     * @param {Array} [result=[]] The initial result value.
+     * @returns {Array} Returns the new flattened array.
+     */
+    function baseFlatten(array, depth, predicate, isStrict, result) {
+      var index = -1,
+          length = array.length;
+
+      predicate || (predicate = isFlattenable);
+      result || (result = []);
+
+      while (++index < length) {
+        var value = array[index];
+        if (depth > 0 && predicate(value)) {
+          if (depth > 1) {
+            // Recursively flatten arrays (susceptible to call stack limits).
+            baseFlatten(value, depth - 1, predicate, isStrict, result);
+          } else {
+            arrayPush(result, value);
+          }
+        } else if (!isStrict) {
+          result[result.length] = value;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `baseForOwn` which iterates over `object`
+     * properties returned by `keysFunc` and invokes `iteratee` for each property.
+     * Iteratee functions may exit iteration early by explicitly returning `false`.
+     *
+     * @private
+     * @param {Object} object The object to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @param {Function} keysFunc The function to get the keys of `object`.
+     * @returns {Object} Returns `object`.
+     */
+    var baseFor = createBaseFor();
+
+    /**
+     * This function is like `baseFor` except that it iterates over properties
+     * in the opposite order.
+     *
+     * @private
+     * @param {Object} object The object to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @param {Function} keysFunc The function to get the keys of `object`.
+     * @returns {Object} Returns `object`.
+     */
+    var baseForRight = createBaseFor(true);
+
+    /**
+     * The base implementation of `_.forOwn` without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Object} object The object to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Object} Returns `object`.
+     */
+    function baseForOwn(object, iteratee) {
+      return object && baseFor(object, iteratee, keys);
+    }
+
+    /**
+     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Object} object The object to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Object} Returns `object`.
+     */
+    function baseForOwnRight(object, iteratee) {
+      return object && baseForRight(object, iteratee, keys);
+    }
+
+    /**
+     * The base implementation of `_.functions` which creates an array of
+     * `object` function property names filtered from `props`.
+     *
+     * @private
+     * @param {Object} object The object to inspect.
+     * @param {Array} props The property names to filter.
+     * @returns {Array} Returns the function names.
+     */
+    function baseFunctions(object, props) {
+      return arrayFilter(props, function(key) {
+        return isFunction(object[key]);
+      });
+    }
+
+    /**
+     * The base implementation of `_.get` without support for default values.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @param {Array|string} path The path of the property to get.
+     * @returns {*} Returns the resolved value.
+     */
+    function baseGet(object, path) {
+      path = castPath(path, object);
+
+      var index = 0,
+          length = path.length;
+
+      while (object != null && index < length) {
+        object = object[toKey(path[index++])];
+      }
+      return (index && index == length) ? object : undefined;
+    }
+
+    /**
+     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
+     * `keysFunc` and `symbolsFunc` to get the enumerable property names and
+     * symbols of `object`.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @param {Function} keysFunc The function to get the keys of `object`.
+     * @param {Function} symbolsFunc The function to get the symbols of `object`.
+     * @returns {Array} Returns the array of property names and symbols.
+     */
+    function baseGetAllKeys(object, keysFunc, symbolsFunc) {
+      var result = keysFunc(object);
+      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
+    }
+
+    /**
+     * The base implementation of `getTag` without fallbacks for buggy environments.
+     *
+     * @private
+     * @param {*} value The value to query.
+     * @returns {string} Returns the `toStringTag`.
+     */
+    function baseGetTag(value) {
+      if (value == null) {
+        return value === undefined ? undefinedTag : nullTag;
+      }
+      return (symToStringTag && symToStringTag in Object(value))
+        ? getRawTag(value)
+        : objectToString(value);
+    }
+
+    /**
+     * The base implementation of `_.gt` which doesn't coerce arguments.
+     *
+     * @private
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @returns {boolean} Returns `true` if `value` is greater than `other`,
+     *  else `false`.
+     */
+    function baseGt(value, other) {
+      return value > other;
+    }
+
+    /**
+     * The base implementation of `_.has` without support for deep paths.
+     *
+     * @private
+     * @param {Object} [object] The object to query.
+     * @param {Array|string} key The key to check.
+     * @returns {boolean} Returns `true` if `key` exists, else `false`.
+     */
+    function baseHas(object, key) {
+      return object != null && hasOwnProperty.call(object, key);
+    }
+
+    /**
+     * The base implementation of `_.hasIn` without support for deep paths.
+     *
+     * @private
+     * @param {Object} [object] The object to query.
+     * @param {Array|string} key The key to check.
+     * @returns {boolean} Returns `true` if `key` exists, else `false`.
+     */
+    function baseHasIn(object, key) {
+      return object != null && key in Object(object);
+    }
+
+    /**
+     * The base implementation of `_.inRange` which doesn't coerce arguments.
+     *
+     * @private
+     * @param {number} number The number to check.
+     * @param {number} start The start of the range.
+     * @param {number} end The end of the range.
+     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
+     */
+    function baseInRange(number, start, end) {
+      return number >= nativeMin(start, end) && number < nativeMax(start, end);
+    }
+
+    /**
+     * The base implementation of methods like `_.intersection`, without support
+     * for iteratee shorthands, that accepts an array of arrays to inspect.
+     *
+     * @private
+     * @param {Array} arrays The arrays to inspect.
+     * @param {Function} [iteratee] The iteratee invoked per element.
+     * @param {Function} [comparator] The comparator invoked per element.
+     * @returns {Array} Returns the new array of shared values.
+     */
+    function baseIntersection(arrays, iteratee, comparator) {
+      var includes = comparator ? arrayIncludesWith : arrayIncludes,
+          length = arrays[0].length,
+          othLength = arrays.length,
+          othIndex = othLength,
+          caches = Array(othLength),
+          maxLength = Infinity,
+          result = [];
+
+      while (othIndex--) {
+        var array = arrays[othIndex];
+        if (othIndex && iteratee) {
+          array = arrayMap(array, baseUnary(iteratee));
+        }
+        maxLength = nativeMin(array.length, maxLength);
+        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
+          ? new SetCache(othIndex && array)
+          : undefined;
+      }
+      array = arrays[0];
+
+      var index = -1,
+          seen = caches[0];
+
+      outer:
+      while (++index < length && result.length < maxLength) {
+        var value = array[index],
+            computed = iteratee ? iteratee(value) : value;
+
+        value = (comparator || value !== 0) ? value : 0;
+        if (!(seen
+              ? cacheHas(seen, computed)
+              : includes(result, computed, comparator)
+            )) {
+          othIndex = othLength;
+          while (--othIndex) {
+            var cache = caches[othIndex];
+            if (!(cache
+                  ? cacheHas(cache, computed)
+                  : includes(arrays[othIndex], computed, comparator))
+                ) {
+              continue outer;
+            }
+          }
+          if (seen) {
+            seen.push(computed);
+          }
+          result.push(value);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.invert` and `_.invertBy` which inverts
+     * `object` with values transformed by `iteratee` and set by `setter`.
+     *
+     * @private
+     * @param {Object} object The object to iterate over.
+     * @param {Function} setter The function to set `accumulator` values.
+     * @param {Function} iteratee The iteratee to transform values.
+     * @param {Object} accumulator The initial inverted object.
+     * @returns {Function} Returns `accumulator`.
+     */
+    function baseInverter(object, setter, iteratee, accumulator) {
+      baseForOwn(object, function(value, key, object) {
+        setter(accumulator, iteratee(value), key, object);
+      });
+      return accumulator;
+    }
+
+    /**
+     * The base implementation of `_.invoke` without support for individual
+     * method arguments.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @param {Array|string} path The path of the method to invoke.
+     * @param {Array} args The arguments to invoke the method with.
+     * @returns {*} Returns the result of the invoked method.
+     */
+    function baseInvoke(object, path, args) {
+      path = castPath(path, object);
+      object = parent(object, path);
+      var func = object == null ? object : object[toKey(last(path))];
+      return func == null ? undefined : apply(func, object, args);
+    }
+
+    /**
+     * The base implementation of `_.isArguments`.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
+     */
+    function baseIsArguments(value) {
+      return isObjectLike(value) && baseGetTag(value) == argsTag;
+    }
+
+    /**
+     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
+     */
+    function baseIsArrayBuffer(value) {
+      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
+    }
+
+    /**
+     * The base implementation of `_.isDate` without Node.js optimizations.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
+     */
+    function baseIsDate(value) {
+      return isObjectLike(value) && baseGetTag(value) == dateTag;
+    }
+
+    /**
+     * The base implementation of `_.isEqual` which supports partial comparisons
+     * and tracks traversed objects.
+     *
+     * @private
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @param {boolean} bitmask The bitmask flags.
+     *  1 - Unordered comparison
+     *  2 - Partial comparison
+     * @param {Function} [customizer] The function to customize comparisons.
+     * @param {Object} [stack] Tracks traversed `value` and `other` objects.
+     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+     */
+    function baseIsEqual(value, other, bitmask, customizer, stack) {
+      if (value === other) {
+        return true;
+      }
+      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
+        return value !== value && other !== other;
+      }
+      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
+    }
+
+    /**
+     * A specialized version of `baseIsEqual` for arrays and objects which performs
+     * deep comparisons and tracks traversed objects enabling objects with circular
+     * references to be compared.
+     *
+     * @private
+     * @param {Object} object The object to compare.
+     * @param {Object} other The other object to compare.
+     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+     * @param {Function} customizer The function to customize comparisons.
+     * @param {Function} equalFunc The function to determine equivalents of values.
+     * @param {Object} [stack] Tracks traversed `object` and `other` objects.
+     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+     */
+    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
+      var objIsArr = isArray(object),
+          othIsArr = isArray(other),
+          objTag = objIsArr ? arrayTag : getTag(object),
+          othTag = othIsArr ? arrayTag : getTag(other);
+
+      objTag = objTag == argsTag ? objectTag : objTag;
+      othTag = othTag == argsTag ? objectTag : othTag;
+
+      var objIsObj = objTag == objectTag,
+          othIsObj = othTag == objectTag,
+          isSameTag = objTag == othTag;
+
+      if (isSameTag && isBuffer(object)) {
+        if (!isBuffer(other)) {
+          return false;
+        }
+        objIsArr = true;
+        objIsObj = false;
+      }
+      if (isSameTag && !objIsObj) {
+        stack || (stack = new Stack);
+        return (objIsArr || isTypedArray(object))
+          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
+          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
+      }
+      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
+        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
+            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
+
+        if (objIsWrapped || othIsWrapped) {
+          var objUnwrapped = objIsWrapped ? object.value() : object,
+              othUnwrapped = othIsWrapped ? other.value() : other;
+
+          stack || (stack = new Stack);
+          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
+        }
+      }
+      if (!isSameTag) {
+        return false;
+      }
+      stack || (stack = new Stack);
+      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
+    }
+
+    /**
+     * The base implementation of `_.isMap` without Node.js optimizations.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
+     */
+    function baseIsMap(value) {
+      return isObjectLike(value) && getTag(value) == mapTag;
+    }
+
+    /**
+     * The base implementation of `_.isMatch` without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Object} object The object to inspect.
+     * @param {Object} source The object of property values to match.
+     * @param {Array} matchData The property names, values, and compare flags to match.
+     * @param {Function} [customizer] The function to customize comparisons.
+     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
+     */
+    function baseIsMatch(object, source, matchData, customizer) {
+      var index = matchData.length,
+          length = index,
+          noCustomizer = !customizer;
+
+      if (object == null) {
+        return !length;
+      }
+      object = Object(object);
+      while (index--) {
+        var data = matchData[index];
+        if ((noCustomizer && data[2])
+              ? data[1] !== object[data[0]]
+              : !(data[0] in object)
+            ) {
+          return false;
+        }
+      }
+      while (++index < length) {
+        data = matchData[index];
+        var key = data[0],
+            objValue = object[key],
+            srcValue = data[1];
+
+        if (noCustomizer && data[2]) {
+          if (objValue === undefined && !(key in object)) {
+            return false;
+          }
+        } else {
+          var stack = new Stack;
+          if (customizer) {
+            var result = customizer(objValue, srcValue, key, object, source, stack);
+          }
+          if (!(result === undefined
+                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
+                : result
+              )) {
+            return false;
+          }
+        }
+      }
+      return true;
+    }
+
+    /**
+     * The base implementation of `_.isNative` without bad shim checks.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a native function,
+     *  else `false`.
+     */
+    function baseIsNative(value) {
+      if (!isObject(value) || isMasked(value)) {
+        return false;
+      }
+      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
+      return pattern.test(toSource(value));
+    }
+
+    /**
+     * The base implementation of `_.isRegExp` without Node.js optimizations.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
+     */
+    function baseIsRegExp(value) {
+      return isObjectLike(value) && baseGetTag(value) == regexpTag;
+    }
+
+    /**
+     * The base implementation of `_.isSet` without Node.js optimizations.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
+     */
+    function baseIsSet(value) {
+      return isObjectLike(value) && getTag(value) == setTag;
+    }
+
+    /**
+     * The base implementation of `_.isTypedArray` without Node.js optimizations.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
+     */
+    function baseIsTypedArray(value) {
+      return isObjectLike(value) &&
+        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
+    }
+
+    /**
+     * The base implementation of `_.iteratee`.
+     *
+     * @private
+     * @param {*} [value=_.identity] The value to convert to an iteratee.
+     * @returns {Function} Returns the iteratee.
+     */
+    function baseIteratee(value) {
+      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
+      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
+      if (typeof value == 'function') {
+        return value;
+      }
+      if (value == null) {
+        return identity;
+      }
+      if (typeof value == 'object') {
+        return isArray(value)
+          ? baseMatchesProperty(value[0], value[1])
+          : baseMatches(value);
+      }
+      return property(value);
+    }
+
+    /**
+     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of property names.
+     */
+    function baseKeys(object) {
+      if (!isPrototype(object)) {
+        return nativeKeys(object);
+      }
+      var result = [];
+      for (var key in Object(object)) {
+        if (hasOwnProperty.call(object, key) && key != 'constructor') {
+          result.push(key);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of property names.
+     */
+    function baseKeysIn(object) {
+      if (!isObject(object)) {
+        return nativeKeysIn(object);
+      }
+      var isProto = isPrototype(object),
+          result = [];
+
+      for (var key in object) {
+        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
+          result.push(key);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.lt` which doesn't coerce arguments.
+     *
+     * @private
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @returns {boolean} Returns `true` if `value` is less than `other`,
+     *  else `false`.
+     */
+    function baseLt(value, other) {
+      return value < other;
+    }
+
+    /**
+     * The base implementation of `_.map` without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} iteratee The function invoked per iteration.
+     * @returns {Array} Returns the new mapped array.
+     */
+    function baseMap(collection, iteratee) {
+      var index = -1,
+          result = isArrayLike(collection) ? Array(collection.length) : [];
+
+      baseEach(collection, function(value, key, collection) {
+        result[++index] = iteratee(value, key, collection);
+      });
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.matches` which doesn't clone `source`.
+     *
+     * @private
+     * @param {Object} source The object of property values to match.
+     * @returns {Function} Returns the new spec function.
+     */
+    function baseMatches(source) {
+      var matchData = getMatchData(source);
+      if (matchData.length == 1 && matchData[0][2]) {
+        return matchesStrictComparable(matchData[0][0], matchData[0][1]);
+      }
+      return function(object) {
+        return object === source || baseIsMatch(object, source, matchData);
+      };
+    }
+
+    /**
+     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
+     *
+     * @private
+     * @param {string} path The path of the property to get.
+     * @param {*} srcValue The value to match.
+     * @returns {Function} Returns the new spec function.
+     */
+    function baseMatchesProperty(path, srcValue) {
+      if (isKey(path) && isStrictComparable(srcValue)) {
+        return matchesStrictComparable(toKey(path), srcValue);
+      }
+      return function(object) {
+        var objValue = get(object, path);
+        return (objValue === undefined && objValue === srcValue)
+          ? hasIn(object, path)
+          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
+      };
+    }
+
+    /**
+     * The base implementation of `_.merge` without support for multiple sources.
+     *
+     * @private
+     * @param {Object} object The destination object.
+     * @param {Object} source The source object.
+     * @param {number} srcIndex The index of `source`.
+     * @param {Function} [customizer] The function to customize merged values.
+     * @param {Object} [stack] Tracks traversed source values and their merged
+     *  counterparts.
+     */
+    function baseMerge(object, source, srcIndex, customizer, stack) {
+      if (object === source) {
+        return;
+      }
+      baseFor(source, function(srcValue, key) {
+        stack || (stack = new Stack);
+        if (isObject(srcValue)) {
+          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
+        }
+        else {
+          var newValue = customizer
+            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
+            : undefined;
+
+          if (newValue === undefined) {
+            newValue = srcValue;
+          }
+          assignMergeValue(object, key, newValue);
+        }
+      }, keysIn);
+    }
+
+    /**
+     * A specialized version of `baseMerge` for arrays and objects which performs
+     * deep merges and tracks traversed objects enabling objects with circular
+     * references to be merged.
+     *
+     * @private
+     * @param {Object} object The destination object.
+     * @param {Object} source The source object.
+     * @param {string} key The key of the value to merge.
+     * @param {number} srcIndex The index of `source`.
+     * @param {Function} mergeFunc The function to merge values.
+     * @param {Function} [customizer] The function to customize assigned values.
+     * @param {Object} [stack] Tracks traversed source values and their merged
+     *  counterparts.
+     */
+    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
+      var objValue = safeGet(object, key),
+          srcValue = safeGet(source, key),
+          stacked = stack.get(srcValue);
+
+      if (stacked) {
+        assignMergeValue(object, key, stacked);
+        return;
+      }
+      var newValue = customizer
+        ? customizer(objValue, srcValue, (key + ''), object, source, stack)
+        : undefined;
+
+      var isCommon = newValue === undefined;
+
+      if (isCommon) {
+        var isArr = isArray(srcValue),
+            isBuff = !isArr && isBuffer(srcValue),
+            isTyped = !isArr && !isBuff && isTypedArray(srcValue);
+
+        newValue = srcValue;
+        if (isArr || isBuff || isTyped) {
+          if (isArray(objValue)) {
+            newValue = objValue;
+          }
+          else if (isArrayLikeObject(objValue)) {
+            newValue = copyArray(objValue);
+          }
+          else if (isBuff) {
+            isCommon = false;
+            newValue = cloneBuffer(srcValue, true);
+          }
+          else if (isTyped) {
+            isCommon = false;
+            newValue = cloneTypedArray(srcValue, true);
+          }
+          else {
+            newValue = [];
+          }
+        }
+        else if (isPlainObject(srcValue) || isArguments(srcValue)) {
+          newValue = objValue;
+          if (isArguments(objValue)) {
+            newValue = toPlainObject(objValue);
+          }
+          else if (!isObject(objValue) || isFunction(objValue)) {
+            newValue = initCloneObject(srcValue);
+          }
+        }
+        else {
+          isCommon = false;
+        }
+      }
+      if (isCommon) {
+        // Recursively merge objects and arrays (susceptible to call stack limits).
+        stack.set(srcValue, newValue);
+        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
+        stack['delete'](srcValue);
+      }
+      assignMergeValue(object, key, newValue);
+    }
+
+    /**
+     * The base implementation of `_.nth` which doesn't coerce arguments.
+     *
+     * @private
+     * @param {Array} array The array to query.
+     * @param {number} n The index of the element to return.
+     * @returns {*} Returns the nth element of `array`.
+     */
+    function baseNth(array, n) {
+      var length = array.length;
+      if (!length) {
+        return;
+      }
+      n += n < 0 ? length : 0;
+      return isIndex(n, length) ? array[n] : undefined;
+    }
+
+    /**
+     * The base implementation of `_.orderBy` without param guards.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
+     * @param {string[]} orders The sort orders of `iteratees`.
+     * @returns {Array} Returns the new sorted array.
+     */
+    function baseOrderBy(collection, iteratees, orders) {
+      if (iteratees.length) {
+        iteratees = arrayMap(iteratees, function(iteratee) {
+          if (isArray(iteratee)) {
+            return function(value) {
+              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
+            }
+          }
+          return iteratee;
+        });
+      } else {
+        iteratees = [identity];
+      }
+
+      var index = -1;
+      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
+
+      var result = baseMap(collection, function(value, key, collection) {
+        var criteria = arrayMap(iteratees, function(iteratee) {
+          return iteratee(value);
+        });
+        return { 'criteria': criteria, 'index': ++index, 'value': value };
+      });
+
+      return baseSortBy(result, function(object, other) {
+        return compareMultiple(object, other, orders);
+      });
+    }
+
+    /**
+     * The base implementation of `_.pick` without support for individual
+     * property identifiers.
+     *
+     * @private
+     * @param {Object} object The source object.
+     * @param {string[]} paths The property paths to pick.
+     * @returns {Object} Returns the new object.
+     */
+    function basePick(object, paths) {
+      return basePickBy(object, paths, function(value, path) {
+        return hasIn(object, path);
+      });
+    }
+
+    /**
+     * The base implementation of  `_.pickBy` without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Object} object The source object.
+     * @param {string[]} paths The property paths to pick.
+     * @param {Function} predicate The function invoked per property.
+     * @returns {Object} Returns the new object.
+     */
+    function basePickBy(object, paths, predicate) {
+      var index = -1,
+          length = paths.length,
+          result = {};
+
+      while (++index < length) {
+        var path = paths[index],
+            value = baseGet(object, path);
+
+        if (predicate(value, path)) {
+          baseSet(result, castPath(path, object), value);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * A specialized version of `baseProperty` which supports deep paths.
+     *
+     * @private
+     * @param {Array|string} path The path of the property to get.
+     * @returns {Function} Returns the new accessor function.
+     */
+    function basePropertyDeep(path) {
+      return function(object) {
+        return baseGet(object, path);
+      };
+    }
+
+    /**
+     * The base implementation of `_.pullAllBy` without support for iteratee
+     * shorthands.
+     *
+     * @private
+     * @param {Array} array The array to modify.
+     * @param {Array} values The values to remove.
+     * @param {Function} [iteratee] The iteratee invoked per element.
+     * @param {Function} [comparator] The comparator invoked per element.
+     * @returns {Array} Returns `array`.
+     */
+    function basePullAll(array, values, iteratee, comparator) {
+      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
+          index = -1,
+          length = values.length,
+          seen = array;
+
+      if (array === values) {
+        values = copyArray(values);
+      }
+      if (iteratee) {
+        seen = arrayMap(array, baseUnary(iteratee));
+      }
+      while (++index < length) {
+        var fromIndex = 0,
+            value = values[index],
+            computed = iteratee ? iteratee(value) : value;
+
+        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
+          if (seen !== array) {
+            splice.call(seen, fromIndex, 1);
+          }
+          splice.call(array, fromIndex, 1);
+        }
+      }
+      return array;
+    }
+
+    /**
+     * The base implementation of `_.pullAt` without support for individual
+     * indexes or capturing the removed elements.
+     *
+     * @private
+     * @param {Array} array The array to modify.
+     * @param {number[]} indexes The indexes of elements to remove.
+     * @returns {Array} Returns `array`.
+     */
+    function basePullAt(array, indexes) {
+      var length = array ? indexes.length : 0,
+          lastIndex = length - 1;
+
+      while (length--) {
+        var index = indexes[length];
+        if (length == lastIndex || index !== previous) {
+          var previous = index;
+          if (isIndex(index)) {
+            splice.call(array, index, 1);
+          } else {
+            baseUnset(array, index);
+          }
+        }
+      }
+      return array;
+    }
+
+    /**
+     * The base implementation of `_.random` without support for returning
+     * floating-point numbers.
+     *
+     * @private
+     * @param {number} lower The lower bound.
+     * @param {number} upper The upper bound.
+     * @returns {number} Returns the random number.
+     */
+    function baseRandom(lower, upper) {
+      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
+    }
+
+    /**
+     * The base implementation of `_.range` and `_.rangeRight` which doesn't
+     * coerce arguments.
+     *
+     * @private
+     * @param {number} start The start of the range.
+     * @param {number} end The end of the range.
+     * @param {number} step The value to increment or decrement by.
+     * @param {boolean} [fromRight] Specify iterating from right to left.
+     * @returns {Array} Returns the range of numbers.
+     */
+    function baseRange(start, end, step, fromRight) {
+      var index = -1,
+          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
+          result = Array(length);
+
+      while (length--) {
+        result[fromRight ? length : ++index] = start;
+        start += step;
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.repeat` which doesn't coerce arguments.
+     *
+     * @private
+     * @param {string} string The string to repeat.
+     * @param {number} n The number of times to repeat the string.
+     * @returns {string} Returns the repeated string.
+     */
+    function baseRepeat(string, n) {
+      var result = '';
+      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
+        return result;
+      }
+      // Leverage the exponentiation by squaring algorithm for a faster repeat.
+      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
+      do {
+        if (n % 2) {
+          result += string;
+        }
+        n = nativeFloor(n / 2);
+        if (n) {
+          string += string;
+        }
+      } while (n);
+
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.rest` which doesn't validate or coerce arguments.
+     *
+     * @private
+     * @param {Function} func The function to apply a rest parameter to.
+     * @param {number} [start=func.length-1] The start position of the rest parameter.
+     * @returns {Function} Returns the new function.
+     */
+    function baseRest(func, start) {
+      return setToString(overRest(func, start, identity), func + '');
+    }
+
+    /**
+     * The base implementation of `_.sample`.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to sample.
+     * @returns {*} Returns the random element.
+     */
+    function baseSample(collection) {
+      return arraySample(values(collection));
+    }
+
+    /**
+     * The base implementation of `_.sampleSize` without param guards.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to sample.
+     * @param {number} n The number of elements to sample.
+     * @returns {Array} Returns the random elements.
+     */
+    function baseSampleSize(collection, n) {
+      var array = values(collection);
+      return shuffleSelf(array, baseClamp(n, 0, array.length));
+    }
+
+    /**
+     * The base implementation of `_.set`.
+     *
+     * @private
+     * @param {Object} object The object to modify.
+     * @param {Array|string} path The path of the property to set.
+     * @param {*} value The value to set.
+     * @param {Function} [customizer] The function to customize path creation.
+     * @returns {Object} Returns `object`.
+     */
+    function baseSet(object, path, value, customizer) {
+      if (!isObject(object)) {
+        return object;
+      }
+      path = castPath(path, object);
+
+      var index = -1,
+          length = path.length,
+          lastIndex = length - 1,
+          nested = object;
+
+      while (nested != null && ++index < length) {
+        var key = toKey(path[index]),
+            newValue = value;
+
+        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
+          return object;
+        }
+
+        if (index != lastIndex) {
+          var objValue = nested[key];
+          newValue = customizer ? customizer(objValue, key, nested) : undefined;
+          if (newValue === undefined) {
+            newValue = isObject(objValue)
+              ? objValue
+              : (isIndex(path[index + 1]) ? [] : {});
+          }
+        }
+        assignValue(nested, key, newValue);
+        nested = nested[key];
+      }
+      return object;
+    }
+
+    /**
+     * The base implementation of `setData` without support for hot loop shorting.
+     *
+     * @private
+     * @param {Function} func The function to associate metadata with.
+     * @param {*} data The metadata.
+     * @returns {Function} Returns `func`.
+     */
+    var baseSetData = !metaMap ? identity : function(func, data) {
+      metaMap.set(func, data);
+      return func;
+    };
+
+    /**
+     * The base implementation of `setToString` without support for hot loop shorting.
+     *
+     * @private
+     * @param {Function} func The function to modify.
+     * @param {Function} string The `toString` result.
+     * @returns {Function} Returns `func`.
+     */
+    var baseSetToString = !defineProperty ? identity : function(func, string) {
+      return defineProperty(func, 'toString', {
+        'configurable': true,
+        'enumerable': false,
+        'value': constant(string),
+        'writable': true
+      });
+    };
+
+    /**
+     * The base implementation of `_.shuffle`.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to shuffle.
+     * @returns {Array} Returns the new shuffled array.
+     */
+    function baseShuffle(collection) {
+      return shuffleSelf(values(collection));
+    }
+
+    /**
+     * The base implementation of `_.slice` without an iteratee call guard.
+     *
+     * @private
+     * @param {Array} array The array to slice.
+     * @param {number} [start=0] The start position.
+     * @param {number} [end=array.length] The end position.
+     * @returns {Array} Returns the slice of `array`.
+     */
+    function baseSlice(array, start, end) {
+      var index = -1,
+          length = array.length;
+
+      if (start < 0) {
+        start = -start > length ? 0 : (length + start);
+      }
+      end = end > length ? length : end;
+      if (end < 0) {
+        end += length;
+      }
+      length = start > end ? 0 : ((end - start) >>> 0);
+      start >>>= 0;
+
+      var result = Array(length);
+      while (++index < length) {
+        result[index] = array[index + start];
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.some` without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} predicate The function invoked per iteration.
+     * @returns {boolean} Returns `true` if any element passes the predicate check,
+     *  else `false`.
+     */
+    function baseSome(collection, predicate) {
+      var result;
+
+      baseEach(collection, function(value, index, collection) {
+        result = predicate(value, index, collection);
+        return !result;
+      });
+      return !!result;
+    }
+
+    /**
+     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
+     * performs a binary search of `array` to determine the index at which `value`
+     * should be inserted into `array` in order to maintain its sort order.
+     *
+     * @private
+     * @param {Array} array The sorted array to inspect.
+     * @param {*} value The value to evaluate.
+     * @param {boolean} [retHighest] Specify returning the highest qualified index.
+     * @returns {number} Returns the index at which `value` should be inserted
+     *  into `array`.
+     */
+    function baseSortedIndex(array, value, retHighest) {
+      var low = 0,
+          high = array == null ? low : array.length;
+
+      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
+        while (low < high) {
+          var mid = (low + high) >>> 1,
+              computed = array[mid];
+
+          if (computed !== null && !isSymbol(computed) &&
+              (retHighest ? (computed <= value) : (computed < value))) {
+            low = mid + 1;
+          } else {
+            high = mid;
+          }
+        }
+        return high;
+      }
+      return baseSortedIndexBy(array, value, identity, retHighest);
+    }
+
+    /**
+     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
+     * which invokes `iteratee` for `value` and each element of `array` to compute
+     * their sort ranking. The iteratee is invoked with one argument; (value).
+     *
+     * @private
+     * @param {Array} array The sorted array to inspect.
+     * @param {*} value The value to evaluate.
+     * @param {Function} iteratee The iteratee invoked per element.
+     * @param {boolean} [retHighest] Specify returning the highest qualified index.
+     * @returns {number} Returns the index at which `value` should be inserted
+     *  into `array`.
+     */
+    function baseSortedIndexBy(array, value, iteratee, retHighest) {
+      var low = 0,
+          high = array == null ? 0 : array.length;
+      if (high === 0) {
+        return 0;
+      }
+
+      value = iteratee(value);
+      var valIsNaN = value !== value,
+          valIsNull = value === null,
+          valIsSymbol = isSymbol(value),
+          valIsUndefined = value === undefined;
+
+      while (low < high) {
+        var mid = nativeFloor((low + high) / 2),
+            computed = iteratee(array[mid]),
+            othIsDefined = computed !== undefined,
+            othIsNull = computed === null,
+            othIsReflexive = computed === computed,
+            othIsSymbol = isSymbol(computed);
+
+        if (valIsNaN) {
+          var setLow = retHighest || othIsReflexive;
+        } else if (valIsUndefined) {
+          setLow = othIsReflexive && (retHighest || othIsDefined);
+        } else if (valIsNull) {
+          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
+        } else if (valIsSymbol) {
+          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
+        } else if (othIsNull || othIsSymbol) {
+          setLow = false;
+        } else {
+          setLow = retHighest ? (computed <= value) : (computed < value);
+        }
+        if (setLow) {
+          low = mid + 1;
+        } else {
+          high = mid;
+        }
+      }
+      return nativeMin(high, MAX_ARRAY_INDEX);
+    }
+
+    /**
+     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
+     * support for iteratee shorthands.
+     *
+     * @private
+     * @param {Array} array The array to inspect.
+     * @param {Function} [iteratee] The iteratee invoked per element.
+     * @returns {Array} Returns the new duplicate free array.
+     */
+    function baseSortedUniq(array, iteratee) {
+      var index = -1,
+          length = array.length,
+          resIndex = 0,
+          result = [];
+
+      while (++index < length) {
+        var value = array[index],
+            computed = iteratee ? iteratee(value) : value;
+
+        if (!index || !eq(computed, seen)) {
+          var seen = computed;
+          result[resIndex++] = value === 0 ? 0 : value;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.toNumber` which doesn't ensure correct
+     * conversions of binary, hexadecimal, or octal string values.
+     *
+     * @private
+     * @param {*} value The value to process.
+     * @returns {number} Returns the number.
+     */
+    function baseToNumber(value) {
+      if (typeof value == 'number') {
+        return value;
+      }
+      if (isSymbol(value)) {
+        return NAN;
+      }
+      return +value;
+    }
+
+    /**
+     * The base implementation of `_.toString` which doesn't convert nullish
+     * values to empty strings.
+     *
+     * @private
+     * @param {*} value The value to process.
+     * @returns {string} Returns the string.
+     */
+    function baseToString(value) {
+      // Exit early for strings to avoid a performance hit in some environments.
+      if (typeof value == 'string') {
+        return value;
+      }
+      if (isArray(value)) {
+        // Recursively convert values (susceptible to call stack limits).
+        return arrayMap(value, baseToString) + '';
+      }
+      if (isSymbol(value)) {
+        return symbolToString ? symbolToString.call(value) : '';
+      }
+      var result = (value + '');
+      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+    }
+
+    /**
+     * The base implementation of `_.uniqBy` without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Array} array The array to inspect.
+     * @param {Function} [iteratee] The iteratee invoked per element.
+     * @param {Function} [comparator] The comparator invoked per element.
+     * @returns {Array} Returns the new duplicate free array.
+     */
+    function baseUniq(array, iteratee, comparator) {
+      var index = -1,
+          includes = arrayIncludes,
+          length = array.length,
+          isCommon = true,
+          result = [],
+          seen = result;
+
+      if (comparator) {
+        isCommon = false;
+        includes = arrayIncludesWith;
+      }
+      else if (length >= LARGE_ARRAY_SIZE) {
+        var set = iteratee ? null : createSet(array);
+        if (set) {
+          return setToArray(set);
+        }
+        isCommon = false;
+        includes = cacheHas;
+        seen = new SetCache;
+      }
+      else {
+        seen = iteratee ? [] : result;
+      }
+      outer:
+      while (++index < length) {
+        var value = array[index],
+            computed = iteratee ? iteratee(value) : value;
+
+        value = (comparator || value !== 0) ? value : 0;
+        if (isCommon && computed === computed) {
+          var seenIndex = seen.length;
+          while (seenIndex--) {
+            if (seen[seenIndex] === computed) {
+              continue outer;
+            }
+          }
+          if (iteratee) {
+            seen.push(computed);
+          }
+          result.push(value);
+        }
+        else if (!includes(seen, computed, comparator)) {
+          if (seen !== result) {
+            seen.push(computed);
+          }
+          result.push(value);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * The base implementation of `_.unset`.
+     *
+     * @private
+     * @param {Object} object The object to modify.
+     * @param {Array|string} path The property path to unset.
+     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
+     */
+    function baseUnset(object, path) {
+      path = castPath(path, object);
+      object = parent(object, path);
+      return object == null || delete object[toKey(last(path))];
+    }
+
+    /**
+     * The base implementation of `_.update`.
+     *
+     * @private
+     * @param {Object} object The object to modify.
+     * @param {Array|string} path The path of the property to update.
+     * @param {Function} updater The function to produce the updated value.
+     * @param {Function} [customizer] The function to customize path creation.
+     * @returns {Object} Returns `object`.
+     */
+    function baseUpdate(object, path, updater, customizer) {
+      return baseSet(object, path, updater(baseGet(object, path)), customizer);
+    }
+
+    /**
+     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
+     * without support for iteratee shorthands.
+     *
+     * @private
+     * @param {Array} array The array to query.
+     * @param {Function} predicate The function invoked per iteration.
+     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
+     * @param {boolean} [fromRight] Specify iterating from right to left.
+     * @returns {Array} Returns the slice of `array`.
+     */
+    function baseWhile(array, predicate, isDrop, fromRight) {
+      var length = array.length,
+          index = fromRight ? length : -1;
+
+      while ((fromRight ? index-- : ++index < length) &&
+        predicate(array[index], index, array)) {}
+
+      return isDrop
+        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
+        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
+    }
+
+    /**
+     * The base implementation of `wrapperValue` which returns the result of
+     * performing a sequence of actions on the unwrapped `value`, where each
+     * successive action is supplied the return value of the previous.
+     *
+     * @private
+     * @param {*} value The unwrapped value.
+     * @param {Array} actions Actions to perform to resolve the unwrapped value.
+     * @returns {*} Returns the resolved value.
+     */
+    function baseWrapperValue(value, actions) {
+      var result = value;
+      if (result instanceof LazyWrapper) {
+        result = result.value();
+      }
+      return arrayReduce(actions, function(result, action) {
+        return action.func.apply(action.thisArg, arrayPush([result], action.args));
+      }, result);
+    }
+
+    /**
+     * The base implementation of methods like `_.xor`, without support for
+     * iteratee shorthands, that accepts an array of arrays to inspect.
+     *
+     * @private
+     * @param {Array} arrays The arrays to inspect.
+     * @param {Function} [iteratee] The iteratee invoked per element.
+     * @param {Function} [comparator] The comparator invoked per element.
+     * @returns {Array} Returns the new array of values.
+     */
+    function baseXor(arrays, iteratee, comparator) {
+      var length = arrays.length;
+      if (length < 2) {
+        return length ? baseUniq(arrays[0]) : [];
+      }
+      var index = -1,
+          result = Array(length);
+
+      while (++index < length) {
+        var array = arrays[index],
+            othIndex = -1;
+
+        while (++othIndex < length) {
+          if (othIndex != index) {
+            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
+          }
+        }
+      }
+      return baseUniq(baseFlatten(result, 1), iteratee, comparator);
+    }
+
+    /**
+     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
+     *
+     * @private
+     * @param {Array} props The property identifiers.
+     * @param {Array} values The property values.
+     * @param {Function} assignFunc The function to assign values.
+     * @returns {Object} Returns the new object.
+     */
+    function baseZipObject(props, values, assignFunc) {
+      var index = -1,
+          length = props.length,
+          valsLength = values.length,
+          result = {};
+
+      while (++index < length) {
+        var value = index < valsLength ? values[index] : undefined;
+        assignFunc(result, props[index], value);
+      }
+      return result;
+    }
+
+    /**
+     * Casts `value` to an empty array if it's not an array like object.
+     *
+     * @private
+     * @param {*} value The value to inspect.
+     * @returns {Array|Object} Returns the cast array-like object.
+     */
+    function castArrayLikeObject(value) {
+      return isArrayLikeObject(value) ? value : [];
+    }
+
+    /**
+     * Casts `value` to `identity` if it's not a function.
+     *
+     * @private
+     * @param {*} value The value to inspect.
+     * @returns {Function} Returns cast function.
+     */
+    function castFunction(value) {
+      return typeof value == 'function' ? value : identity;
+    }
+
+    /**
+     * Casts `value` to a path array if it's not one.
+     *
+     * @private
+     * @param {*} value The value to inspect.
+     * @param {Object} [object] The object to query keys on.
+     * @returns {Array} Returns the cast property path array.
+     */
+    function castPath(value, object) {
+      if (isArray(value)) {
+        return value;
+      }
+      return isKey(value, object) ? [value] : stringToPath(toString(value));
+    }
+
+    /**
+     * A `baseRest` alias which can be replaced with `identity` by module
+     * replacement plugins.
+     *
+     * @private
+     * @type {Function}
+     * @param {Function} func The function to apply a rest parameter to.
+     * @returns {Function} Returns the new function.
+     */
+    var castRest = baseRest;
+
+    /**
+     * Casts `array` to a slice if it's needed.
+     *
+     * @private
+     * @param {Array} array The array to inspect.
+     * @param {number} start The start position.
+     * @param {number} [end=array.length] The end position.
+     * @returns {Array} Returns the cast slice.
+     */
+    function castSlice(array, start, end) {
+      var length = array.length;
+      end = end === undefined ? length : end;
+      return (!start && end >= length) ? array : baseSlice(array, start, end);
+    }
+
+    /**
+     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
+     *
+     * @private
+     * @param {number|Object} id The timer id or timeout object of the timer to clear.
+     */
+    var clearTimeout = ctxClearTimeout || function(id) {
+      return root.clearTimeout(id);
+    };
+
+    /**
+     * Creates a clone of  `buffer`.
+     *
+     * @private
+     * @param {Buffer} buffer The buffer to clone.
+     * @param {boolean} [isDeep] Specify a deep clone.
+     * @returns {Buffer} Returns the cloned buffer.
+     */
+    function cloneBuffer(buffer, isDeep) {
+      if (isDeep) {
+        return buffer.slice();
+      }
+      var length = buffer.length,
+          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
+
+      buffer.copy(result);
+      return result;
+    }
+
+    /**
+     * Creates a clone of `arrayBuffer`.
+     *
+     * @private
+     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
+     * @returns {ArrayBuffer} Returns the cloned array buffer.
+     */
+    function cloneArrayBuffer(arrayBuffer) {
+      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
+      new Uint8Array(result).set(new Uint8Array(arrayBuffer));
+      return result;
+    }
+
+    /**
+     * Creates a clone of `dataView`.
+     *
+     * @private
+     * @param {Object} dataView The data view to clone.
+     * @param {boolean} [isDeep] Specify a deep clone.
+     * @returns {Object} Returns the cloned data view.
+     */
+    function cloneDataView(dataView, isDeep) {
+      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
+      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
+    }
+
+    /**
+     * Creates a clone of `regexp`.
+     *
+     * @private
+     * @param {Object} regexp The regexp to clone.
+     * @returns {Object} Returns the cloned regexp.
+     */
+    function cloneRegExp(regexp) {
+      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
+      result.lastIndex = regexp.lastIndex;
+      return result;
+    }
+
+    /**
+     * Creates a clone of the `symbol` object.
+     *
+     * @private
+     * @param {Object} symbol The symbol object to clone.
+     * @returns {Object} Returns the cloned symbol object.
+     */
+    function cloneSymbol(symbol) {
+      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
+    }
+
+    /**
+     * Creates a clone of `typedArray`.
+     *
+     * @private
+     * @param {Object} typedArray The typed array to clone.
+     * @param {boolean} [isDeep] Specify a deep clone.
+     * @returns {Object} Returns the cloned typed array.
+     */
+    function cloneTypedArray(typedArray, isDeep) {
+      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
+      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
+    }
+
+    /**
+     * Compares values to sort them in ascending order.
+     *
+     * @private
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @returns {number} Returns the sort order indicator for `value`.
+     */
+    function compareAscending(value, other) {
+      if (value !== other) {
+        var valIsDefined = value !== undefined,
+            valIsNull = value === null,
+            valIsReflexive = value === value,
+            valIsSymbol = isSymbol(value);
+
+        var othIsDefined = other !== undefined,
+            othIsNull = other === null,
+            othIsReflexive = other === other,
+            othIsSymbol = isSymbol(other);
+
+        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
+            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
+            (valIsNull && othIsDefined && othIsReflexive) ||
+            (!valIsDefined && othIsReflexive) ||
+            !valIsReflexive) {
+          return 1;
+        }
+        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
+            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
+            (othIsNull && valIsDefined && valIsReflexive) ||
+            (!othIsDefined && valIsReflexive) ||
+            !othIsReflexive) {
+          return -1;
+        }
+      }
+      return 0;
+    }
+
+    /**
+     * Used by `_.orderBy` to compare multiple properties of a value to another
+     * and stable sort them.
+     *
+     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
+     * specify an order of "desc" for descending or "asc" for ascending sort order
+     * of corresponding values.
+     *
+     * @private
+     * @param {Object} object The object to compare.
+     * @param {Object} other The other object to compare.
+     * @param {boolean[]|string[]} orders The order to sort by for each property.
+     * @returns {number} Returns the sort order indicator for `object`.
+     */
+    function compareMultiple(object, other, orders) {
+      var index = -1,
+          objCriteria = object.criteria,
+          othCriteria = other.criteria,
+          length = objCriteria.length,
+          ordersLength = orders.length;
+
+      while (++index < length) {
+        var result = compareAscending(objCriteria[index], othCriteria[index]);
+        if (result) {
+          if (index >= ordersLength) {
+            return result;
+          }
+          var order = orders[index];
+          return result * (order == 'desc' ? -1 : 1);
+        }
+      }
+      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
+      // that causes it, under certain circumstances, to provide the same value for
+      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
+      // for more details.
+      //
+      // This also ensures a stable sort in V8 and other engines.
+      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
+      return object.index - other.index;
+    }
+
+    /**
+     * Creates an array that is the composition of partially applied arguments,
+     * placeholders, and provided arguments into a single array of arguments.
+     *
+     * @private
+     * @param {Array} args The provided arguments.
+     * @param {Array} partials The arguments to prepend to those provided.
+     * @param {Array} holders The `partials` placeholder indexes.
+     * @params {boolean} [isCurried] Specify composing for a curried function.
+     * @returns {Array} Returns the new array of composed arguments.
+     */
+    function composeArgs(args, partials, holders, isCurried) {
+      var argsIndex = -1,
+          argsLength = args.length,
+          holdersLength = holders.length,
+          leftIndex = -1,
+          leftLength = partials.length,
+          rangeLength = nativeMax(argsLength - holdersLength, 0),
+          result = Array(leftLength + rangeLength),
+          isUncurried = !isCurried;
+
+      while (++leftIndex < leftLength) {
+        result[leftIndex] = partials[leftIndex];
+      }
+      while (++argsIndex < holdersLength) {
+        if (isUncurried || argsIndex < argsLength) {
+          result[holders[argsIndex]] = args[argsIndex];
+        }
+      }
+      while (rangeLength--) {
+        result[leftIndex++] = args[argsIndex++];
+      }
+      return result;
+    }
+
+    /**
+     * This function is like `composeArgs` except that the arguments composition
+     * is tailored for `_.partialRight`.
+     *
+     * @private
+     * @param {Array} args The provided arguments.
+     * @param {Array} partials The arguments to append to those provided.
+     * @param {Array} holders The `partials` placeholder indexes.
+     * @params {boolean} [isCurried] Specify composing for a curried function.
+     * @returns {Array} Returns the new array of composed arguments.
+     */
+    function composeArgsRight(args, partials, holders, isCurried) {
+      var argsIndex = -1,
+          argsLength = args.length,
+          holdersIndex = -1,
+          holdersLength = holders.length,
+          rightIndex = -1,
+          rightLength = partials.length,
+          rangeLength = nativeMax(argsLength - holdersLength, 0),
+          result = Array(rangeLength + rightLength),
+          isUncurried = !isCurried;
+
+      while (++argsIndex < rangeLength) {
+        result[argsIndex] = args[argsIndex];
+      }
+      var offset = argsIndex;
+      while (++rightIndex < rightLength) {
+        result[offset + rightIndex] = partials[rightIndex];
+      }
+      while (++holdersIndex < holdersLength) {
+        if (isUncurried || argsIndex < argsLength) {
+          result[offset + holders[holdersIndex]] = args[argsIndex++];
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Copies the values of `source` to `array`.
+     *
+     * @private
+     * @param {Array} source The array to copy values from.
+     * @param {Array} [array=[]] The array to copy values to.
+     * @returns {Array} Returns `array`.
+     */
+    function copyArray(source, array) {
+      var index = -1,
+          length = source.length;
+
+      array || (array = Array(length));
+      while (++index < length) {
+        array[index] = source[index];
+      }
+      return array;
+    }
+
+    /**
+     * Copies properties of `source` to `object`.
+     *
+     * @private
+     * @param {Object} source The object to copy properties from.
+     * @param {Array} props The property identifiers to copy.
+     * @param {Object} [object={}] The object to copy properties to.
+     * @param {Function} [customizer] The function to customize copied values.
+     * @returns {Object} Returns `object`.
+     */
+    function copyObject(source, props, object, customizer) {
+      var isNew = !object;
+      object || (object = {});
+
+      var index = -1,
+          length = props.length;
+
+      while (++index < length) {
+        var key = props[index];
+
+        var newValue = customizer
+          ? customizer(object[key], source[key], key, object, source)
+          : undefined;
+
+        if (newValue === undefined) {
+          newValue = source[key];
+        }
+        if (isNew) {
+          baseAssignValue(object, key, newValue);
+        } else {
+          assignValue(object, key, newValue);
+        }
+      }
+      return object;
+    }
+
+    /**
+     * Copies own symbols of `source` to `object`.
+     *
+     * @private
+     * @param {Object} source The object to copy symbols from.
+     * @param {Object} [object={}] The object to copy symbols to.
+     * @returns {Object} Returns `object`.
+     */
+    function copySymbols(source, object) {
+      return copyObject(source, getSymbols(source), object);
+    }
+
+    /**
+     * Copies own and inherited symbols of `source` to `object`.
+     *
+     * @private
+     * @param {Object} source The object to copy symbols from.
+     * @param {Object} [object={}] The object to copy symbols to.
+     * @returns {Object} Returns `object`.
+     */
+    function copySymbolsIn(source, object) {
+      return copyObject(source, getSymbolsIn(source), object);
+    }
+
+    /**
+     * Creates a function like `_.groupBy`.
+     *
+     * @private
+     * @param {Function} setter The function to set accumulator values.
+     * @param {Function} [initializer] The accumulator object initializer.
+     * @returns {Function} Returns the new aggregator function.
+     */
+    function createAggregator(setter, initializer) {
+      return function(collection, iteratee) {
+        var func = isArray(collection) ? arrayAggregator : baseAggregator,
+            accumulator = initializer ? initializer() : {};
+
+        return func(collection, setter, getIteratee(iteratee, 2), accumulator);
+      };
+    }
+
+    /**
+     * Creates a function like `_.assign`.
+     *
+     * @private
+     * @param {Function} assigner The function to assign values.
+     * @returns {Function} Returns the new assigner function.
+     */
+    function createAssigner(assigner) {
+      return baseRest(function(object, sources) {
+        var index = -1,
+            length = sources.length,
+            customizer = length > 1 ? sources[length - 1] : undefined,
+            guard = length > 2 ? sources[2] : undefined;
+
+        customizer = (assigner.length > 3 && typeof customizer == 'function')
+          ? (length--, customizer)
+          : undefined;
+
+        if (guard && isIterateeCall(sources[0], sources[1], guard)) {
+          customizer = length < 3 ? undefined : customizer;
+          length = 1;
+        }
+        object = Object(object);
+        while (++index < length) {
+          var source = sources[index];
+          if (source) {
+            assigner(object, source, index, customizer);
+          }
+        }
+        return object;
+      });
+    }
+
+    /**
+     * Creates a `baseEach` or `baseEachRight` function.
+     *
+     * @private
+     * @param {Function} eachFunc The function to iterate over a collection.
+     * @param {boolean} [fromRight] Specify iterating from right to left.
+     * @returns {Function} Returns the new base function.
+     */
+    function createBaseEach(eachFunc, fromRight) {
+      return function(collection, iteratee) {
+        if (collection == null) {
+          return collection;
+        }
+        if (!isArrayLike(collection)) {
+          return eachFunc(collection, iteratee);
+        }
+        var length = collection.length,
+            index = fromRight ? length : -1,
+            iterable = Object(collection);
+
+        while ((fromRight ? index-- : ++index < length)) {
+          if (iteratee(iterable[index], index, iterable) === false) {
+            break;
+          }
+        }
+        return collection;
+      };
+    }
+
+    /**
+     * Creates a base function for methods like `_.forIn` and `_.forOwn`.
+     *
+     * @private
+     * @param {boolean} [fromRight] Specify iterating from right to left.
+     * @returns {Function} Returns the new base function.
+     */
+    function createBaseFor(fromRight) {
+      return function(object, iteratee, keysFunc) {
+        var index = -1,
+            iterable = Object(object),
+            props = keysFunc(object),
+            length = props.length;
+
+        while (length--) {
+          var key = props[fromRight ? length : ++index];
+          if (iteratee(iterable[key], key, iterable) === false) {
+            break;
+          }
+        }
+        return object;
+      };
+    }
+
+    /**
+     * Creates a function that wraps `func` to invoke it with the optional `this`
+     * binding of `thisArg`.
+     *
+     * @private
+     * @param {Function} func The function to wrap.
+     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
+     * @param {*} [thisArg] The `this` binding of `func`.
+     * @returns {Function} Returns the new wrapped function.
+     */
+    function createBind(func, bitmask, thisArg) {
+      var isBind = bitmask & WRAP_BIND_FLAG,
+          Ctor = createCtor(func);
+
+      function wrapper() {
+        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
+        return fn.apply(isBind ? thisArg : this, arguments);
+      }
+      return wrapper;
+    }
+
+    /**
+     * Creates a function like `_.lowerFirst`.
+     *
+     * @private
+     * @param {string} methodName The name of the `String` case method to use.
+     * @returns {Function} Returns the new case function.
+     */
+    function createCaseFirst(methodName) {
+      return function(string) {
+        string = toString(string);
+
+        var strSymbols = hasUnicode(string)
+          ? stringToArray(string)
+          : undefined;
+
+        var chr = strSymbols
+          ? strSymbols[0]
+          : string.charAt(0);
+
+        var trailing = strSymbols
+          ? castSlice(strSymbols, 1).join('')
+          : string.slice(1);
+
+        return chr[methodName]() + trailing;
+      };
+    }
+
+    /**
+     * Creates a function like `_.camelCase`.
+     *
+     * @private
+     * @param {Function} callback The function to combine each word.
+     * @returns {Function} Returns the new compounder function.
+     */
+    function createCompounder(callback) {
+      return function(string) {
+        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
+      };
+    }
+
+    /**
+     * Creates a function that produces an instance of `Ctor` regardless of
+     * whether it was invoked as part of a `new` expression or by `call` or `apply`.
+     *
+     * @private
+     * @param {Function} Ctor The constructor to wrap.
+     * @returns {Function} Returns the new wrapped function.
+     */
+    function createCtor(Ctor) {
+      return function() {
+        // Use a `switch` statement to work with class constructors. See
+        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
+        // for more details.
+        var args = arguments;
+        switch (args.length) {
+          case 0: return new Ctor;
+          case 1: return new Ctor(args[0]);
+          case 2: return new Ctor(args[0], args[1]);
+          case 3: return new Ctor(args[0], args[1], args[2]);
+          case 4: return new Ctor(args[0], args[1], args[2], args[3]);
+          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
+          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
+          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
+        }
+        var thisBinding = baseCreate(Ctor.prototype),
+            result = Ctor.apply(thisBinding, args);
+
+        // Mimic the constructor's `return` behavior.
+        // See https://es5.github.io/#x13.2.2 for more details.
+        return isObject(result) ? result : thisBinding;
+      };
+    }
+
+    /**
+     * Creates a function that wraps `func` to enable currying.
+     *
+     * @private
+     * @param {Function} func The function to wrap.
+     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
+     * @param {number} arity The arity of `func`.
+     * @returns {Function} Returns the new wrapped function.
+     */
+    function createCurry(func, bitmask, arity) {
+      var Ctor = createCtor(func);
+
+      function wrapper() {
+        var length = arguments.length,
+            args = Array(length),
+            index = length,
+            placeholder = getHolder(wrapper);
+
+        while (index--) {
+          args[index] = arguments[index];
+        }
+        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
+          ? []
+          : replaceHolders(args, placeholder);
+
+        length -= holders.length;
+        if (length < arity) {
+          return createRecurry(
+            func, bitmask, createHybrid, wrapper.placeholder, undefined,
+            args, holders, undefined, undefined, arity - length);
+        }
+        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
+        return apply(fn, this, args);
+      }
+      return wrapper;
+    }
+
+    /**
+     * Creates a `_.find` or `_.findLast` function.
+     *
+     * @private
+     * @param {Function} findIndexFunc The function to find the collection index.
+     * @returns {Function} Returns the new find function.
+     */
+    function createFind(findIndexFunc) {
+      return function(collection, predicate, fromIndex) {
+        var iterable = Object(collection);
+        if (!isArrayLike(collection)) {
+          var iteratee = getIteratee(predicate, 3);
+          collection = keys(collection);
+          predicate = function(key) { return iteratee(iterable[key], key, iterable); };
+        }
+        var index = findIndexFunc(collection, predicate, fromIndex);
+        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
+      };
+    }
+
+    /**
+     * Creates a `_.flow` or `_.flowRight` function.
+     *
+     * @private
+     * @param {boolean} [fromRight] Specify iterating from right to left.
+     * @returns {Function} Returns the new flow function.
+     */
+    function createFlow(fromRight) {
+      return flatRest(function(funcs) {
+        var length = funcs.length,
+            index = length,
+            prereq = LodashWrapper.prototype.thru;
+
+        if (fromRight) {
+          funcs.reverse();
+        }
+        while (index--) {
+          var func = funcs[index];
+          if (typeof func != 'function') {
+            throw new TypeError(FUNC_ERROR_TEXT);
+          }
+          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
+            var wrapper = new LodashWrapper([], true);
+          }
+        }
+        index = wrapper ? index : length;
+        while (++index < length) {
+          func = funcs[index];
+
+          var funcName = getFuncName(func),
+              data = funcName == 'wrapper' ? getData(func) : undefined;
+
+          if (data && isLaziable(data[0]) &&
+                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
+                !data[4].length && data[9] == 1
+              ) {
+            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
+          } else {
+            wrapper = (func.length == 1 && isLaziable(func))
+              ? wrapper[funcName]()
+              : wrapper.thru(func);
+          }
+        }
+        return function() {
+          var args = arguments,
+              value = args[0];
+
+          if (wrapper && args.length == 1 && isArray(value)) {
+            return wrapper.plant(value).value();
+          }
+          var index = 0,
+              result = length ? funcs[index].apply(this, args) : value;
+
+          while (++index < length) {
+            result = funcs[index].call(this, result);
+          }
+          return result;
+        };
+      });
+    }
+
+    /**
+     * Creates a function that wraps `func` to invoke it with optional `this`
+     * binding of `thisArg`, partial application, and currying.
+     *
+     * @private
+     * @param {Function|string} func The function or method name to wrap.
+     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
+     * @param {*} [thisArg] The `this` binding of `func`.
+     * @param {Array} [partials] The arguments to prepend to those provided to
+     *  the new function.
+     * @param {Array} [holders] The `partials` placeholder indexes.
+     * @param {Array} [partialsRight] The arguments to append to those provided
+     *  to the new function.
+     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
+     * @param {Array} [argPos] The argument positions of the new function.
+     * @param {number} [ary] The arity cap of `func`.
+     * @param {number} [arity] The arity of `func`.
+     * @returns {Function} Returns the new wrapped function.
+     */
+    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
+      var isAry = bitmask & WRAP_ARY_FLAG,
+          isBind = bitmask & WRAP_BIND_FLAG,
+          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
+          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
+          isFlip = bitmask & WRAP_FLIP_FLAG,
+          Ctor = isBindKey ? undefined : createCtor(func);
+
+      function wrapper() {
+        var length = arguments.length,
+            args = Array(length),
+            index = length;
+
+        while (index--) {
+          args[index] = arguments[index];
+        }
+        if (isCurried) {
+          var placeholder = getHolder(wrapper),
+              holdersCount = countHolders(args, placeholder);
+        }
+        if (partials) {
+          args = composeArgs(args, partials, holders, isCurried);
+        }
+        if (partialsRight) {
+          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
+        }
+        length -= holdersCount;
+        if (isCurried && length < arity) {
+          var newHolders = replaceHolders(args, placeholder);
+          return createRecurry(
+            func, bitmask, createHybrid, wrapper.placeholder, thisArg,
+            args, newHolders, argPos, ary, arity - length
+          );
+        }
+        var thisBinding = isBind ? thisArg : this,
+            fn = isBindKey ? thisBinding[func] : func;
+
+        length = args.length;
+        if (argPos) {
+          args = reorder(args, argPos);
+        } else if (isFlip && length > 1) {
+          args.reverse();
+        }
+        if (isAry && ary < length) {
+          args.length = ary;
+        }
+        if (this && this !== root && this instanceof wrapper) {
+          fn = Ctor || createCtor(fn);
+        }
+        return fn.apply(thisBinding, args);
+      }
+      return wrapper;
+    }
+
+    /**
+     * Creates a function like `_.invertBy`.
+     *
+     * @private
+     * @param {Function} setter The function to set accumulator values.
+     * @param {Function} toIteratee The function to resolve iteratees.
+     * @returns {Function} Returns the new inverter function.
+     */
+    function createInverter(setter, toIteratee) {
+      return function(object, iteratee) {
+        return baseInverter(object, setter, toIteratee(iteratee), {});
+      };
+    }
+
+    /**
+     * Creates a function that performs a mathematical operation on two values.
+     *
+     * @private
+     * @param {Function} operator The function to perform the operation.
+     * @param {number} [defaultValue] The value used for `undefined` arguments.
+     * @returns {Function} Returns the new mathematical operation function.
+     */
+    function createMathOperation(operator, defaultValue) {
+      return function(value, other) {
+        var result;
+        if (value === undefined && other === undefined) {
+          return defaultValue;
+        }
+        if (value !== undefined) {
+          result = value;
+        }
+        if (other !== undefined) {
+          if (result === undefined) {
+            return other;
+          }
+          if (typeof value == 'string' || typeof other == 'string') {
+            value = baseToString(value);
+            other = baseToString(other);
+          } else {
+            value = baseToNumber(value);
+            other = baseToNumber(other);
+          }
+          result = operator(value, other);
+        }
+        return result;
+      };
+    }
+
+    /**
+     * Creates a function like `_.over`.
+     *
+     * @private
+     * @param {Function} arrayFunc The function to iterate over iteratees.
+     * @returns {Function} Returns the new over function.
+     */
+    function createOver(arrayFunc) {
+      return flatRest(function(iteratees) {
+        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
+        return baseRest(function(args) {
+          var thisArg = this;
+          return arrayFunc(iteratees, function(iteratee) {
+            return apply(iteratee, thisArg, args);
+          });
+        });
+      });
+    }
+
+    /**
+     * Creates the padding for `string` based on `length`. The `chars` string
+     * is truncated if the number of characters exceeds `length`.
+     *
+     * @private
+     * @param {number} length The padding length.
+     * @param {string} [chars=' '] The string used as padding.
+     * @returns {string} Returns the padding for `string`.
+     */
+    function createPadding(length, chars) {
+      chars = chars === undefined ? ' ' : baseToString(chars);
+
+      var charsLength = chars.length;
+      if (charsLength < 2) {
+        return charsLength ? baseRepeat(chars, length) : chars;
+      }
+      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
+      return hasUnicode(chars)
+        ? castSlice(stringToArray(result), 0, length).join('')
+        : result.slice(0, length);
+    }
+
+    /**
+     * Creates a function that wraps `func` to invoke it with the `this` binding
+     * of `thisArg` and `partials` prepended to the arguments it receives.
+     *
+     * @private
+     * @param {Function} func The function to wrap.
+     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
+     * @param {*} thisArg The `this` binding of `func`.
+     * @param {Array} partials The arguments to prepend to those provided to
+     *  the new function.
+     * @returns {Function} Returns the new wrapped function.
+     */
+    function createPartial(func, bitmask, thisArg, partials) {
+      var isBind = bitmask & WRAP_BIND_FLAG,
+          Ctor = createCtor(func);
+
+      function wrapper() {
+        var argsIndex = -1,
+            argsLength = arguments.length,
+            leftIndex = -1,
+            leftLength = partials.length,
+            args = Array(leftLength + argsLength),
+            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
+
+        while (++leftIndex < leftLength) {
+          args[leftIndex] = partials[leftIndex];
+        }
+        while (argsLength--) {
+          args[leftIndex++] = arguments[++argsIndex];
+        }
+        return apply(fn, isBind ? thisArg : this, args);
+      }
+      return wrapper;
+    }
+
+    /**
+     * Creates a `_.range` or `_.rangeRight` function.
+     *
+     * @private
+     * @param {boolean} [fromRight] Specify iterating from right to left.
+     * @returns {Function} Returns the new range function.
+     */
+    function createRange(fromRight) {
+      return function(start, end, step) {
+        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
+          end = step = undefined;
+        }
+        // Ensure the sign of `-0` is preserved.
+        start = toFinite(start);
+        if (end === undefined) {
+          end = start;
+          start = 0;
+        } else {
+          end = toFinite(end);
+        }
+        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
+        return baseRange(start, end, step, fromRight);
+      };
+    }
+
+    /**
+     * Creates a function that performs a relational operation on two values.
+     *
+     * @private
+     * @param {Function} operator The function to perform the operation.
+     * @returns {Function} Returns the new relational operation function.
+     */
+    function createRelationalOperation(operator) {
+      return function(value, other) {
+        if (!(typeof value == 'string' && typeof other == 'string')) {
+          value = toNumber(value);
+          other = toNumber(other);
+        }
+        return operator(value, other);
+      };
+    }
+
+    /**
+     * Creates a function that wraps `func` to continue currying.
+     *
+     * @private
+     * @param {Function} func The function to wrap.
+     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
+     * @param {Function} wrapFunc The function to create the `func` wrapper.
+     * @param {*} placeholder The placeholder value.
+     * @param {*} [thisArg] The `this` binding of `func`.
+     * @param {Array} [partials] The arguments to prepend to those provided to
+     *  the new function.
+     * @param {Array} [holders] The `partials` placeholder indexes.
+     * @param {Array} [argPos] The argument positions of the new function.
+     * @param {number} [ary] The arity cap of `func`.
+     * @param {number} [arity] The arity of `func`.
+     * @returns {Function} Returns the new wrapped function.
+     */
+    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
+      var isCurry = bitmask & WRAP_CURRY_FLAG,
+          newHolders = isCurry ? holders : undefined,
+          newHoldersRight = isCurry ? undefined : holders,
+          newPartials = isCurry ? partials : undefined,
+          newPartialsRight = isCurry ? undefined : partials;
+
+      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
+      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
+
+      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
+        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
+      }
+      var newData = [
+        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
+        newHoldersRight, argPos, ary, arity
+      ];
+
+      var result = wrapFunc.apply(undefined, newData);
+      if (isLaziable(func)) {
+        setData(result, newData);
+      }
+      result.placeholder = placeholder;
+      return setWrapToString(result, func, bitmask);
+    }
+
+    /**
+     * Creates a function like `_.round`.
+     *
+     * @private
+     * @param {string} methodName The name of the `Math` method to use when rounding.
+     * @returns {Function} Returns the new round function.
+     */
+    function createRound(methodName) {
+      var func = Math[methodName];
+      return function(number, precision) {
+        number = toNumber(number);
+        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
+        if (precision && nativeIsFinite(number)) {
+          // Shift with exponential notation to avoid floating-point issues.
+          // See [MDN](https://mdn.io/round#Examples) for more details.
+          var pair = (toString(number) + 'e').split('e'),
+              value = func(pair[0] + 'e' + (+pair[1] + precision));
+
+          pair = (toString(value) + 'e').split('e');
+          return +(pair[0] + 'e' + (+pair[1] - precision));
+        }
+        return func(number);
+      };
+    }
+
+    /**
+     * Creates a set object of `values`.
+     *
+     * @private
+     * @param {Array} values The values to add to the set.
+     * @returns {Object} Returns the new set.
+     */
+    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
+      return new Set(values);
+    };
+
+    /**
+     * Creates a `_.toPairs` or `_.toPairsIn` function.
+     *
+     * @private
+     * @param {Function} keysFunc The function to get the keys of a given object.
+     * @returns {Function} Returns the new pairs function.
+     */
+    function createToPairs(keysFunc) {
+      return function(object) {
+        var tag = getTag(object);
+        if (tag == mapTag) {
+          return mapToArray(object);
+        }
+        if (tag == setTag) {
+          return setToPairs(object);
+        }
+        return baseToPairs(object, keysFunc(object));
+      };
+    }
+
+    /**
+     * Creates a function that either curries or invokes `func` with optional
+     * `this` binding and partially applied arguments.
+     *
+     * @private
+     * @param {Function|string} func The function or method name to wrap.
+     * @param {number} bitmask The bitmask flags.
+     *    1 - `_.bind`
+     *    2 - `_.bindKey`
+     *    4 - `_.curry` or `_.curryRight` of a bound function
+     *    8 - `_.curry`
+     *   16 - `_.curryRight`
+     *   32 - `_.partial`
+     *   64 - `_.partialRight`
+     *  128 - `_.rearg`
+     *  256 - `_.ary`
+     *  512 - `_.flip`
+     * @param {*} [thisArg] The `this` binding of `func`.
+     * @param {Array} [partials] The arguments to be partially applied.
+     * @param {Array} [holders] The `partials` placeholder indexes.
+     * @param {Array} [argPos] The argument positions of the new function.
+     * @param {number} [ary] The arity cap of `func`.
+     * @param {number} [arity] The arity of `func`.
+     * @returns {Function} Returns the new wrapped function.
+     */
+    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
+      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
+      if (!isBindKey && typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      var length = partials ? partials.length : 0;
+      if (!length) {
+        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
+        partials = holders = undefined;
+      }
+      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
+      arity = arity === undefined ? arity : toInteger(arity);
+      length -= holders ? holders.length : 0;
+
+      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
+        var partialsRight = partials,
+            holdersRight = holders;
+
+        partials = holders = undefined;
+      }
+      var data = isBindKey ? undefined : getData(func);
+
+      var newData = [
+        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
+        argPos, ary, arity
+      ];
+
+      if (data) {
+        mergeData(newData, data);
+      }
+      func = newData[0];
+      bitmask = newData[1];
+      thisArg = newData[2];
+      partials = newData[3];
+      holders = newData[4];
+      arity = newData[9] = newData[9] === undefined
+        ? (isBindKey ? 0 : func.length)
+        : nativeMax(newData[9] - length, 0);
+
+      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
+        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
+      }
+      if (!bitmask || bitmask == WRAP_BIND_FLAG) {
+        var result = createBind(func, bitmask, thisArg);
+      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
+        result = createCurry(func, bitmask, arity);
+      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
+        result = createPartial(func, bitmask, thisArg, partials);
+      } else {
+        result = createHybrid.apply(undefined, newData);
+      }
+      var setter = data ? baseSetData : setData;
+      return setWrapToString(setter(result, newData), func, bitmask);
+    }
+
+    /**
+     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
+     * of source objects to the destination object for all destination properties
+     * that resolve to `undefined`.
+     *
+     * @private
+     * @param {*} objValue The destination value.
+     * @param {*} srcValue The source value.
+     * @param {string} key The key of the property to assign.
+     * @param {Object} object The parent object of `objValue`.
+     * @returns {*} Returns the value to assign.
+     */
+    function customDefaultsAssignIn(objValue, srcValue, key, object) {
+      if (objValue === undefined ||
+          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
+        return srcValue;
+      }
+      return objValue;
+    }
+
+    /**
+     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
+     * objects into destination objects that are passed thru.
+     *
+     * @private
+     * @param {*} objValue The destination value.
+     * @param {*} srcValue The source value.
+     * @param {string} key The key of the property to merge.
+     * @param {Object} object The parent object of `objValue`.
+     * @param {Object} source The parent object of `srcValue`.
+     * @param {Object} [stack] Tracks traversed source values and their merged
+     *  counterparts.
+     * @returns {*} Returns the value to assign.
+     */
+    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
+      if (isObject(objValue) && isObject(srcValue)) {
+        // Recursively merge objects and arrays (susceptible to call stack limits).
+        stack.set(srcValue, objValue);
+        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
+        stack['delete'](srcValue);
+      }
+      return objValue;
+    }
+
+    /**
+     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
+     * objects.
+     *
+     * @private
+     * @param {*} value The value to inspect.
+     * @param {string} key The key of the property to inspect.
+     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
+     */
+    function customOmitClone(value) {
+      return isPlainObject(value) ? undefined : value;
+    }
+
+    /**
+     * A specialized version of `baseIsEqualDeep` for arrays with support for
+     * partial deep comparisons.
+     *
+     * @private
+     * @param {Array} array The array to compare.
+     * @param {Array} other The other array to compare.
+     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+     * @param {Function} customizer The function to customize comparisons.
+     * @param {Function} equalFunc The function to determine equivalents of values.
+     * @param {Object} stack Tracks traversed `array` and `other` objects.
+     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
+     */
+    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
+      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
+          arrLength = array.length,
+          othLength = other.length;
+
+      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
+        return false;
+      }
+      // Check that cyclic values are equal.
+      var arrStacked = stack.get(array);
+      var othStacked = stack.get(other);
+      if (arrStacked && othStacked) {
+        return arrStacked == other && othStacked == array;
+      }
+      var index = -1,
+          result = true,
+          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
+
+      stack.set(array, other);
+      stack.set(other, array);
+
+      // Ignore non-index properties.
+      while (++index < arrLength) {
+        var arrValue = array[index],
+            othValue = other[index];
+
+        if (customizer) {
+          var compared = isPartial
+            ? customizer(othValue, arrValue, index, other, array, stack)
+            : customizer(arrValue, othValue, index, array, other, stack);
+        }
+        if (compared !== undefined) {
+          if (compared) {
+            continue;
+          }
+          result = false;
+          break;
+        }
+        // Recursively compare arrays (susceptible to call stack limits).
+        if (seen) {
+          if (!arraySome(other, function(othValue, othIndex) {
+                if (!cacheHas(seen, othIndex) &&
+                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
+                  return seen.push(othIndex);
+                }
+              })) {
+            result = false;
+            break;
+          }
+        } else if (!(
+              arrValue === othValue ||
+                equalFunc(arrValue, othValue, bitmask, customizer, stack)
+            )) {
+          result = false;
+          break;
+        }
+      }
+      stack['delete'](array);
+      stack['delete'](other);
+      return result;
+    }
+
+    /**
+     * A specialized version of `baseIsEqualDeep` for comparing objects of
+     * the same `toStringTag`.
+     *
+     * **Note:** This function only supports comparing values with tags of
+     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
+     *
+     * @private
+     * @param {Object} object The object to compare.
+     * @param {Object} other The other object to compare.
+     * @param {string} tag The `toStringTag` of the objects to compare.
+     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+     * @param {Function} customizer The function to customize comparisons.
+     * @param {Function} equalFunc The function to determine equivalents of values.
+     * @param {Object} stack Tracks traversed `object` and `other` objects.
+     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+     */
+    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
+      switch (tag) {
+        case dataViewTag:
+          if ((object.byteLength != other.byteLength) ||
+              (object.byteOffset != other.byteOffset)) {
+            return false;
+          }
+          object = object.buffer;
+          other = other.buffer;
+
+        case arrayBufferTag:
+          if ((object.byteLength != other.byteLength) ||
+              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
+            return false;
+          }
+          return true;
+
+        case boolTag:
+        case dateTag:
+        case numberTag:
+          // Coerce booleans to `1` or `0` and dates to milliseconds.
+          // Invalid dates are coerced to `NaN`.
+          return eq(+object, +other);
+
+        case errorTag:
+          return object.name == other.name && object.message == other.message;
+
+        case regexpTag:
+        case stringTag:
+          // Coerce regexes to strings and treat strings, primitives and objects,
+          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
+          // for more details.
+          return object == (other + '');
+
+        case mapTag:
+          var convert = mapToArray;
+
+        case setTag:
+          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
+          convert || (convert = setToArray);
+
+          if (object.size != other.size && !isPartial) {
+            return false;
+          }
+          // Assume cyclic values are equal.
+          var stacked = stack.get(object);
+          if (stacked) {
+            return stacked == other;
+          }
+          bitmask |= COMPARE_UNORDERED_FLAG;
+
+          // Recursively compare objects (susceptible to call stack limits).
+          stack.set(object, other);
+          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
+          stack['delete'](object);
+          return result;
+
+        case symbolTag:
+          if (symbolValueOf) {
+            return symbolValueOf.call(object) == symbolValueOf.call(other);
+          }
+      }
+      return false;
+    }
+
+    /**
+     * A specialized version of `baseIsEqualDeep` for objects with support for
+     * partial deep comparisons.
+     *
+     * @private
+     * @param {Object} object The object to compare.
+     * @param {Object} other The other object to compare.
+     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
+     * @param {Function} customizer The function to customize comparisons.
+     * @param {Function} equalFunc The function to determine equivalents of values.
+     * @param {Object} stack Tracks traversed `object` and `other` objects.
+     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+     */
+    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
+      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
+          objProps = getAllKeys(object),
+          objLength = objProps.length,
+          othProps = getAllKeys(other),
+          othLength = othProps.length;
+
+      if (objLength != othLength && !isPartial) {
+        return false;
+      }
+      var index = objLength;
+      while (index--) {
+        var key = objProps[index];
+        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
+          return false;
+        }
+      }
+      // Check that cyclic values are equal.
+      var objStacked = stack.get(object);
+      var othStacked = stack.get(other);
+      if (objStacked && othStacked) {
+        return objStacked == other && othStacked == object;
+      }
+      var result = true;
+      stack.set(object, other);
+      stack.set(other, object);
+
+      var skipCtor = isPartial;
+      while (++index < objLength) {
+        key = objProps[index];
+        var objValue = object[key],
+            othValue = other[key];
+
+        if (customizer) {
+          var compared = isPartial
+            ? customizer(othValue, objValue, key, other, object, stack)
+            : customizer(objValue, othValue, key, object, other, stack);
+        }
+        // Recursively compare objects (susceptible to call stack limits).
+        if (!(compared === undefined
+              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
+              : compared
+            )) {
+          result = false;
+          break;
+        }
+        skipCtor || (skipCtor = key == 'constructor');
+      }
+      if (result && !skipCtor) {
+        var objCtor = object.constructor,
+            othCtor = other.constructor;
+
+        // Non `Object` object instances with different constructors are not equal.
+        if (objCtor != othCtor &&
+            ('constructor' in object && 'constructor' in other) &&
+            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
+              typeof othCtor == 'function' && othCtor instanceof othCtor)) {
+          result = false;
+        }
+      }
+      stack['delete'](object);
+      stack['delete'](other);
+      return result;
+    }
+
+    /**
+     * A specialized version of `baseRest` which flattens the rest array.
+     *
+     * @private
+     * @param {Function} func The function to apply a rest parameter to.
+     * @returns {Function} Returns the new function.
+     */
+    function flatRest(func) {
+      return setToString(overRest(func, undefined, flatten), func + '');
+    }
+
+    /**
+     * Creates an array of own enumerable property names and symbols of `object`.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of property names and symbols.
+     */
+    function getAllKeys(object) {
+      return baseGetAllKeys(object, keys, getSymbols);
+    }
+
+    /**
+     * Creates an array of own and inherited enumerable property names and
+     * symbols of `object`.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of property names and symbols.
+     */
+    function getAllKeysIn(object) {
+      return baseGetAllKeys(object, keysIn, getSymbolsIn);
+    }
+
+    /**
+     * Gets metadata for `func`.
+     *
+     * @private
+     * @param {Function} func The function to query.
+     * @returns {*} Returns the metadata for `func`.
+     */
+    var getData = !metaMap ? noop : function(func) {
+      return metaMap.get(func);
+    };
+
+    /**
+     * Gets the name of `func`.
+     *
+     * @private
+     * @param {Function} func The function to query.
+     * @returns {string} Returns the function name.
+     */
+    function getFuncName(func) {
+      var result = (func.name + ''),
+          array = realNames[result],
+          length = hasOwnProperty.call(realNames, result) ? array.length : 0;
+
+      while (length--) {
+        var data = array[length],
+            otherFunc = data.func;
+        if (otherFunc == null || otherFunc == func) {
+          return data.name;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Gets the argument placeholder value for `func`.
+     *
+     * @private
+     * @param {Function} func The function to inspect.
+     * @returns {*} Returns the placeholder value.
+     */
+    function getHolder(func) {
+      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
+      return object.placeholder;
+    }
+
+    /**
+     * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
+     * this function returns the custom method, otherwise it returns `baseIteratee`.
+     * If arguments are provided, the chosen function is invoked with them and
+     * its result is returned.
+     *
+     * @private
+     * @param {*} [value] The value to convert to an iteratee.
+     * @param {number} [arity] The arity of the created iteratee.
+     * @returns {Function} Returns the chosen function or its result.
+     */
+    function getIteratee() {
+      var result = lodash.iteratee || iteratee;
+      result = result === iteratee ? baseIteratee : result;
+      return arguments.length ? result(arguments[0], arguments[1]) : result;
+    }
+
+    /**
+     * Gets the data for `map`.
+     *
+     * @private
+     * @param {Object} map The map to query.
+     * @param {string} key The reference key.
+     * @returns {*} Returns the map data.
+     */
+    function getMapData(map, key) {
+      var data = map.__data__;
+      return isKeyable(key)
+        ? data[typeof key == 'string' ? 'string' : 'hash']
+        : data.map;
+    }
+
+    /**
+     * Gets the property names, values, and compare flags of `object`.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the match data of `object`.
+     */
+    function getMatchData(object) {
+      var result = keys(object),
+          length = result.length;
+
+      while (length--) {
+        var key = result[length],
+            value = object[key];
+
+        result[length] = [key, value, isStrictComparable(value)];
+      }
+      return result;
+    }
+
+    /**
+     * Gets the native function at `key` of `object`.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @param {string} key The key of the method to get.
+     * @returns {*} Returns the function if it's native, else `undefined`.
+     */
+    function getNative(object, key) {
+      var value = getValue(object, key);
+      return baseIsNative(value) ? value : undefined;
+    }
+
+    /**
+     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
+     *
+     * @private
+     * @param {*} value The value to query.
+     * @returns {string} Returns the raw `toStringTag`.
+     */
+    function getRawTag(value) {
+      var isOwn = hasOwnProperty.call(value, symToStringTag),
+          tag = value[symToStringTag];
+
+      try {
+        value[symToStringTag] = undefined;
+        var unmasked = true;
+      } catch (e) {}
+
+      var result = nativeObjectToString.call(value);
+      if (unmasked) {
+        if (isOwn) {
+          value[symToStringTag] = tag;
+        } else {
+          delete value[symToStringTag];
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Creates an array of the own enumerable symbols of `object`.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of symbols.
+     */
+    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
+      if (object == null) {
+        return [];
+      }
+      object = Object(object);
+      return arrayFilter(nativeGetSymbols(object), function(symbol) {
+        return propertyIsEnumerable.call(object, symbol);
+      });
+    };
+
+    /**
+     * Creates an array of the own and inherited enumerable symbols of `object`.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of symbols.
+     */
+    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
+      var result = [];
+      while (object) {
+        arrayPush(result, getSymbols(object));
+        object = getPrototype(object);
+      }
+      return result;
+    };
+
+    /**
+     * Gets the `toStringTag` of `value`.
+     *
+     * @private
+     * @param {*} value The value to query.
+     * @returns {string} Returns the `toStringTag`.
+     */
+    var getTag = baseGetTag;
+
+    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
+    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
+        (Map && getTag(new Map) != mapTag) ||
+        (Promise && getTag(Promise.resolve()) != promiseTag) ||
+        (Set && getTag(new Set) != setTag) ||
+        (WeakMap && getTag(new WeakMap) != weakMapTag)) {
+      getTag = function(value) {
+        var result = baseGetTag(value),
+            Ctor = result == objectTag ? value.constructor : undefined,
+            ctorString = Ctor ? toSource(Ctor) : '';
+
+        if (ctorString) {
+          switch (ctorString) {
+            case dataViewCtorString: return dataViewTag;
+            case mapCtorString: return mapTag;
+            case promiseCtorString: return promiseTag;
+            case setCtorString: return setTag;
+            case weakMapCtorString: return weakMapTag;
+          }
+        }
+        return result;
+      };
+    }
+
+    /**
+     * Gets the view, applying any `transforms` to the `start` and `end` positions.
+     *
+     * @private
+     * @param {number} start The start of the view.
+     * @param {number} end The end of the view.
+     * @param {Array} transforms The transformations to apply to the view.
+     * @returns {Object} Returns an object containing the `start` and `end`
+     *  positions of the view.
+     */
+    function getView(start, end, transforms) {
+      var index = -1,
+          length = transforms.length;
+
+      while (++index < length) {
+        var data = transforms[index],
+            size = data.size;
+
+        switch (data.type) {
+          case 'drop':      start += size; break;
+          case 'dropRight': end -= size; break;
+          case 'take':      end = nativeMin(end, start + size); break;
+          case 'takeRight': start = nativeMax(start, end - size); break;
+        }
+      }
+      return { 'start': start, 'end': end };
+    }
+
+    /**
+     * Extracts wrapper details from the `source` body comment.
+     *
+     * @private
+     * @param {string} source The source to inspect.
+     * @returns {Array} Returns the wrapper details.
+     */
+    function getWrapDetails(source) {
+      var match = source.match(reWrapDetails);
+      return match ? match[1].split(reSplitDetails) : [];
+    }
+
+    /**
+     * Checks if `path` exists on `object`.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @param {Array|string} path The path to check.
+     * @param {Function} hasFunc The function to check properties.
+     * @returns {boolean} Returns `true` if `path` exists, else `false`.
+     */
+    function hasPath(object, path, hasFunc) {
+      path = castPath(path, object);
+
+      var index = -1,
+          length = path.length,
+          result = false;
+
+      while (++index < length) {
+        var key = toKey(path[index]);
+        if (!(result = object != null && hasFunc(object, key))) {
+          break;
+        }
+        object = object[key];
+      }
+      if (result || ++index != length) {
+        return result;
+      }
+      length = object == null ? 0 : object.length;
+      return !!length && isLength(length) && isIndex(key, length) &&
+        (isArray(object) || isArguments(object));
+    }
+
+    /**
+     * Initializes an array clone.
+     *
+     * @private
+     * @param {Array} array The array to clone.
+     * @returns {Array} Returns the initialized clone.
+     */
+    function initCloneArray(array) {
+      var length = array.length,
+          result = new array.constructor(length);
+
+      // Add properties assigned by `RegExp#exec`.
+      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
+        result.index = array.index;
+        result.input = array.input;
+      }
+      return result;
+    }
+
+    /**
+     * Initializes an object clone.
+     *
+     * @private
+     * @param {Object} object The object to clone.
+     * @returns {Object} Returns the initialized clone.
+     */
+    function initCloneObject(object) {
+      return (typeof object.constructor == 'function' && !isPrototype(object))
+        ? baseCreate(getPrototype(object))
+        : {};
+    }
+
+    /**
+     * Initializes an object clone based on its `toStringTag`.
+     *
+     * **Note:** This function only supports cloning values with tags of
+     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
+     *
+     * @private
+     * @param {Object} object The object to clone.
+     * @param {string} tag The `toStringTag` of the object to clone.
+     * @param {boolean} [isDeep] Specify a deep clone.
+     * @returns {Object} Returns the initialized clone.
+     */
+    function initCloneByTag(object, tag, isDeep) {
+      var Ctor = object.constructor;
+      switch (tag) {
+        case arrayBufferTag:
+          return cloneArrayBuffer(object);
+
+        case boolTag:
+        case dateTag:
+          return new Ctor(+object);
+
+        case dataViewTag:
+          return cloneDataView(object, isDeep);
+
+        case float32Tag: case float64Tag:
+        case int8Tag: case int16Tag: case int32Tag:
+        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
+          return cloneTypedArray(object, isDeep);
+
+        case mapTag:
+          return new Ctor;
+
+        case numberTag:
+        case stringTag:
+          return new Ctor(object);
+
+        case regexpTag:
+          return cloneRegExp(object);
+
+        case setTag:
+          return new Ctor;
+
+        case symbolTag:
+          return cloneSymbol(object);
+      }
+    }
+
+    /**
+     * Inserts wrapper `details` in a comment at the top of the `source` body.
+     *
+     * @private
+     * @param {string} source The source to modify.
+     * @returns {Array} details The details to insert.
+     * @returns {string} Returns the modified source.
+     */
+    function insertWrapDetails(source, details) {
+      var length = details.length;
+      if (!length) {
+        return source;
+      }
+      var lastIndex = length - 1;
+      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
+      details = details.join(length > 2 ? ', ' : ' ');
+      return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
+    }
+
+    /**
+     * Checks if `value` is a flattenable `arguments` object or array.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
+     */
+    function isFlattenable(value) {
+      return isArray(value) || isArguments(value) ||
+        !!(spreadableSymbol && value && value[spreadableSymbol]);
+    }
+
+    /**
+     * Checks if `value` is a valid array-like index.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
+     */
+    function isIndex(value, length) {
+      var type = typeof value;
+      length = length == null ? MAX_SAFE_INTEGER : length;
+
+      return !!length &&
+        (type == 'number' ||
+          (type != 'symbol' && reIsUint.test(value))) &&
+            (value > -1 && value % 1 == 0 && value < length);
+    }
+
+    /**
+     * Checks if the given arguments are from an iteratee call.
+     *
+     * @private
+     * @param {*} value The potential iteratee value argument.
+     * @param {*} index The potential iteratee index or key argument.
+     * @param {*} object The potential iteratee object argument.
+     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
+     *  else `false`.
+     */
+    function isIterateeCall(value, index, object) {
+      if (!isObject(object)) {
+        return false;
+      }
+      var type = typeof index;
+      if (type == 'number'
+            ? (isArrayLike(object) && isIndex(index, object.length))
+            : (type == 'string' && index in object)
+          ) {
+        return eq(object[index], value);
+      }
+      return false;
+    }
+
+    /**
+     * Checks if `value` is a property name and not a property path.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @param {Object} [object] The object to query keys on.
+     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
+     */
+    function isKey(value, object) {
+      if (isArray(value)) {
+        return false;
+      }
+      var type = typeof value;
+      if (type == 'number' || type == 'symbol' || type == 'boolean' ||
+          value == null || isSymbol(value)) {
+        return true;
+      }
+      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
+        (object != null && value in Object(object));
+    }
+
+    /**
+     * Checks if `value` is suitable for use as unique object key.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
+     */
+    function isKeyable(value) {
+      var type = typeof value;
+      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
+        ? (value !== '__proto__')
+        : (value === null);
+    }
+
+    /**
+     * Checks if `func` has a lazy counterpart.
+     *
+     * @private
+     * @param {Function} func The function to check.
+     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
+     *  else `false`.
+     */
+    function isLaziable(func) {
+      var funcName = getFuncName(func),
+          other = lodash[funcName];
+
+      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
+        return false;
+      }
+      if (func === other) {
+        return true;
+      }
+      var data = getData(other);
+      return !!data && func === data[0];
+    }
+
+    /**
+     * Checks if `func` has its source masked.
+     *
+     * @private
+     * @param {Function} func The function to check.
+     * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+     */
+    function isMasked(func) {
+      return !!maskSrcKey && (maskSrcKey in func);
+    }
+
+    /**
+     * Checks if `func` is capable of being masked.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
+     */
+    var isMaskable = coreJsData ? isFunction : stubFalse;
+
+    /**
+     * Checks if `value` is likely a prototype object.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
+     */
+    function isPrototype(value) {
+      var Ctor = value && value.constructor,
+          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
+
+      return value === proto;
+    }
+
+    /**
+     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
+     *
+     * @private
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` if suitable for strict
+     *  equality comparisons, else `false`.
+     */
+    function isStrictComparable(value) {
+      return value === value && !isObject(value);
+    }
+
+    /**
+     * A specialized version of `matchesProperty` for source values suitable
+     * for strict equality comparisons, i.e. `===`.
+     *
+     * @private
+     * @param {string} key The key of the property to get.
+     * @param {*} srcValue The value to match.
+     * @returns {Function} Returns the new spec function.
+     */
+    function matchesStrictComparable(key, srcValue) {
+      return function(object) {
+        if (object == null) {
+          return false;
+        }
+        return object[key] === srcValue &&
+          (srcValue !== undefined || (key in Object(object)));
+      };
+    }
+
+    /**
+     * A specialized version of `_.memoize` which clears the memoized function's
+     * cache when it exceeds `MAX_MEMOIZE_SIZE`.
+     *
+     * @private
+     * @param {Function} func The function to have its output memoized.
+     * @returns {Function} Returns the new memoized function.
+     */
+    function memoizeCapped(func) {
+      var result = memoize(func, function(key) {
+        if (cache.size === MAX_MEMOIZE_SIZE) {
+          cache.clear();
+        }
+        return key;
+      });
+
+      var cache = result.cache;
+      return result;
+    }
+
+    /**
+     * Merges the function metadata of `source` into `data`.
+     *
+     * Merging metadata reduces the number of wrappers used to invoke a function.
+     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
+     * may be applied regardless of execution order. Methods like `_.ary` and
+     * `_.rearg` modify function arguments, making the order in which they are
+     * executed important, preventing the merging of metadata. However, we make
+     * an exception for a safe combined case where curried functions have `_.ary`
+     * and or `_.rearg` applied.
+     *
+     * @private
+     * @param {Array} data The destination metadata.
+     * @param {Array} source The source metadata.
+     * @returns {Array} Returns `data`.
+     */
+    function mergeData(data, source) {
+      var bitmask = data[1],
+          srcBitmask = source[1],
+          newBitmask = bitmask | srcBitmask,
+          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
+
+      var isCombo =
+        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
+        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
+        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
+
+      // Exit early if metadata can't be merged.
+      if (!(isCommon || isCombo)) {
+        return data;
+      }
+      // Use source `thisArg` if available.
+      if (srcBitmask & WRAP_BIND_FLAG) {
+        data[2] = source[2];
+        // Set when currying a bound function.
+        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
+      }
+      // Compose partial arguments.
+      var value = source[3];
+      if (value) {
+        var partials = data[3];
+        data[3] = partials ? composeArgs(partials, value, source[4]) : value;
+        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
+      }
+      // Compose partial right arguments.
+      value = source[5];
+      if (value) {
+        partials = data[5];
+        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
+        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
+      }
+      // Use source `argPos` if available.
+      value = source[7];
+      if (value) {
+        data[7] = value;
+      }
+      // Use source `ary` if it's smaller.
+      if (srcBitmask & WRAP_ARY_FLAG) {
+        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
+      }
+      // Use source `arity` if one is not provided.
+      if (data[9] == null) {
+        data[9] = source[9];
+      }
+      // Use source `func` and merge bitmasks.
+      data[0] = source[0];
+      data[1] = newBitmask;
+
+      return data;
+    }
+
+    /**
+     * This function is like
+     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+     * except that it includes inherited enumerable properties.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of property names.
+     */
+    function nativeKeysIn(object) {
+      var result = [];
+      if (object != null) {
+        for (var key in Object(object)) {
+          result.push(key);
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Converts `value` to a string using `Object.prototype.toString`.
+     *
+     * @private
+     * @param {*} value The value to convert.
+     * @returns {string} Returns the converted string.
+     */
+    function objectToString(value) {
+      return nativeObjectToString.call(value);
+    }
+
+    /**
+     * A specialized version of `baseRest` which transforms the rest array.
+     *
+     * @private
+     * @param {Function} func The function to apply a rest parameter to.
+     * @param {number} [start=func.length-1] The start position of the rest parameter.
+     * @param {Function} transform The rest array transform.
+     * @returns {Function} Returns the new function.
+     */
+    function overRest(func, start, transform) {
+      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
+      return function() {
+        var args = arguments,
+            index = -1,
+            length = nativeMax(args.length - start, 0),
+            array = Array(length);
+
+        while (++index < length) {
+          array[index] = args[start + index];
+        }
+        index = -1;
+        var otherArgs = Array(start + 1);
+        while (++index < start) {
+          otherArgs[index] = args[index];
+        }
+        otherArgs[start] = transform(array);
+        return apply(func, this, otherArgs);
+      };
+    }
+
+    /**
+     * Gets the parent value at `path` of `object`.
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @param {Array} path The path to get the parent value of.
+     * @returns {*} Returns the parent value.
+     */
+    function parent(object, path) {
+      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
+    }
+
+    /**
+     * Reorder `array` according to the specified indexes where the element at
+     * the first index is assigned as the first element, the element at
+     * the second index is assigned as the second element, and so on.
+     *
+     * @private
+     * @param {Array} array The array to reorder.
+     * @param {Array} indexes The arranged array indexes.
+     * @returns {Array} Returns `array`.
+     */
+    function reorder(array, indexes) {
+      var arrLength = array.length,
+          length = nativeMin(indexes.length, arrLength),
+          oldArray = copyArray(array);
+
+      while (length--) {
+        var index = indexes[length];
+        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
+      }
+      return array;
+    }
+
+    /**
+     * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
+     *
+     * @private
+     * @param {Object} object The object to query.
+     * @param {string} key The key of the property to get.
+     * @returns {*} Returns the property value.
+     */
+    function safeGet(object, key) {
+      if (key === 'constructor' && typeof object[key] === 'function') {
+        return;
+      }
+
+      if (key == '__proto__') {
+        return;
+      }
+
+      return object[key];
+    }
+
+    /**
+     * Sets metadata for `func`.
+     *
+     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
+     * period of time, it will trip its breaker and transition to an identity
+     * function to avoid garbage collection pauses in V8. See
+     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
+     * for more details.
+     *
+     * @private
+     * @param {Function} func The function to associate metadata with.
+     * @param {*} data The metadata.
+     * @returns {Function} Returns `func`.
+     */
+    var setData = shortOut(baseSetData);
+
+    /**
+     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
+     *
+     * @private
+     * @param {Function} func The function to delay.
+     * @param {number} wait The number of milliseconds to delay invocation.
+     * @returns {number|Object} Returns the timer id or timeout object.
+     */
+    var setTimeout = ctxSetTimeout || function(func, wait) {
+      return root.setTimeout(func, wait);
+    };
+
+    /**
+     * Sets the `toString` method of `func` to return `string`.
+     *
+     * @private
+     * @param {Function} func The function to modify.
+     * @param {Function} string The `toString` result.
+     * @returns {Function} Returns `func`.
+     */
+    var setToString = shortOut(baseSetToString);
+
+    /**
+     * Sets the `toString` method of `wrapper` to mimic the source of `reference`
+     * with wrapper details in a comment at the top of the source body.
+     *
+     * @private
+     * @param {Function} wrapper The function to modify.
+     * @param {Function} reference The reference function.
+     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
+     * @returns {Function} Returns `wrapper`.
+     */
+    function setWrapToString(wrapper, reference, bitmask) {
+      var source = (reference + '');
+      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
+    }
+
+    /**
+     * Creates a function that'll short out and invoke `identity` instead
+     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
+     * milliseconds.
+     *
+     * @private
+     * @param {Function} func The function to restrict.
+     * @returns {Function} Returns the new shortable function.
+     */
+    function shortOut(func) {
+      var count = 0,
+          lastCalled = 0;
+
+      return function() {
+        var stamp = nativeNow(),
+            remaining = HOT_SPAN - (stamp - lastCalled);
+
+        lastCalled = stamp;
+        if (remaining > 0) {
+          if (++count >= HOT_COUNT) {
+            return arguments[0];
+          }
+        } else {
+          count = 0;
+        }
+        return func.apply(undefined, arguments);
+      };
+    }
+
+    /**
+     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
+     *
+     * @private
+     * @param {Array} array The array to shuffle.
+     * @param {number} [size=array.length] The size of `array`.
+     * @returns {Array} Returns `array`.
+     */
+    function shuffleSelf(array, size) {
+      var index = -1,
+          length = array.length,
+          lastIndex = length - 1;
+
+      size = size === undefined ? length : size;
+      while (++index < size) {
+        var rand = baseRandom(index, lastIndex),
+            value = array[rand];
+
+        array[rand] = array[index];
+        array[index] = value;
+      }
+      array.length = size;
+      return array;
+    }
+
+    /**
+     * Converts `string` to a property path array.
+     *
+     * @private
+     * @param {string} string The string to convert.
+     * @returns {Array} Returns the property path array.
+     */
+    var stringToPath = memoizeCapped(function(string) {
+      var result = [];
+      if (string.charCodeAt(0) === 46 /* . */) {
+        result.push('');
+      }
+      string.replace(rePropName, function(match, number, quote, subString) {
+        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
+      });
+      return result;
+    });
+
+    /**
+     * Converts `value` to a string key if it's not a string or symbol.
+     *
+     * @private
+     * @param {*} value The value to inspect.
+     * @returns {string|symbol} Returns the key.
+     */
+    function toKey(value) {
+      if (typeof value == 'string' || isSymbol(value)) {
+        return value;
+      }
+      var result = (value + '');
+      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+    }
+
+    /**
+     * Converts `func` to its source code.
+     *
+     * @private
+     * @param {Function} func The function to convert.
+     * @returns {string} Returns the source code.
+     */
+    function toSource(func) {
+      if (func != null) {
+        try {
+          return funcToString.call(func);
+        } catch (e) {}
+        try {
+          return (func + '');
+        } catch (e) {}
+      }
+      return '';
+    }
+
+    /**
+     * Updates wrapper `details` based on `bitmask` flags.
+     *
+     * @private
+     * @returns {Array} details The details to modify.
+     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
+     * @returns {Array} Returns `details`.
+     */
+    function updateWrapDetails(details, bitmask) {
+      arrayEach(wrapFlags, function(pair) {
+        var value = '_.' + pair[0];
+        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
+          details.push(value);
+        }
+      });
+      return details.sort();
+    }
+
+    /**
+     * Creates a clone of `wrapper`.
+     *
+     * @private
+     * @param {Object} wrapper The wrapper to clone.
+     * @returns {Object} Returns the cloned wrapper.
+     */
+    function wrapperClone(wrapper) {
+      if (wrapper instanceof LazyWrapper) {
+        return wrapper.clone();
+      }
+      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
+      result.__actions__ = copyArray(wrapper.__actions__);
+      result.__index__  = wrapper.__index__;
+      result.__values__ = wrapper.__values__;
+      return result;
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates an array of elements split into groups the length of `size`.
+     * If `array` can't be split evenly, the final chunk will be the remaining
+     * elements.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Array
+     * @param {Array} array The array to process.
+     * @param {number} [size=1] The length of each chunk
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {Array} Returns the new array of chunks.
+     * @example
+     *
+     * _.chunk(['a', 'b', 'c', 'd'], 2);
+     * // => [['a', 'b'], ['c', 'd']]
+     *
+     * _.chunk(['a', 'b', 'c', 'd'], 3);
+     * // => [['a', 'b', 'c'], ['d']]
+     */
+    function chunk(array, size, guard) {
+      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
+        size = 1;
+      } else {
+        size = nativeMax(toInteger(size), 0);
+      }
+      var length = array == null ? 0 : array.length;
+      if (!length || size < 1) {
+        return [];
+      }
+      var index = 0,
+          resIndex = 0,
+          result = Array(nativeCeil(length / size));
+
+      while (index < length) {
+        result[resIndex++] = baseSlice(array, index, (index += size));
+      }
+      return result;
+    }
+
+    /**
+     * Creates an array with all falsey values removed. The values `false`, `null`,
+     * `0`, `""`, `undefined`, and `NaN` are falsey.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {Array} array The array to compact.
+     * @returns {Array} Returns the new array of filtered values.
+     * @example
+     *
+     * _.compact([0, 1, false, 2, '', 3]);
+     * // => [1, 2, 3]
+     */
+    function compact(array) {
+      var index = -1,
+          length = array == null ? 0 : array.length,
+          resIndex = 0,
+          result = [];
+
+      while (++index < length) {
+        var value = array[index];
+        if (value) {
+          result[resIndex++] = value;
+        }
+      }
+      return result;
+    }
+
+    /**
+     * Creates a new array concatenating `array` with any additional arrays
+     * and/or values.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to concatenate.
+     * @param {...*} [values] The values to concatenate.
+     * @returns {Array} Returns the new concatenated array.
+     * @example
+     *
+     * var array = [1];
+     * var other = _.concat(array, 2, [3], [[4]]);
+     *
+     * console.log(other);
+     * // => [1, 2, 3, [4]]
+     *
+     * console.log(array);
+     * // => [1]
+     */
+    function concat() {
+      var length = arguments.length;
+      if (!length) {
+        return [];
+      }
+      var args = Array(length - 1),
+          array = arguments[0],
+          index = length;
+
+      while (index--) {
+        args[index - 1] = arguments[index];
+      }
+      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
+    }
+
+    /**
+     * Creates an array of `array` values not included in the other given arrays
+     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+     * for equality comparisons. The order and references of result values are
+     * determined by the first array.
+     *
+     * **Note:** Unlike `_.pullAll`, this method returns a new array.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {...Array} [values] The values to exclude.
+     * @returns {Array} Returns the new array of filtered values.
+     * @see _.without, _.xor
+     * @example
+     *
+     * _.difference([2, 1], [2, 3]);
+     * // => [1]
+     */
+    var difference = baseRest(function(array, values) {
+      return isArrayLikeObject(array)
+        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
+        : [];
+    });
+
+    /**
+     * This method is like `_.difference` except that it accepts `iteratee` which
+     * is invoked for each element of `array` and `values` to generate the criterion
+     * by which they're compared. The order and references of result values are
+     * determined by the first array. The iteratee is invoked with one argument:
+     * (value).
+     *
+     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {...Array} [values] The values to exclude.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {Array} Returns the new array of filtered values.
+     * @example
+     *
+     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
+     * // => [1.2]
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
+     * // => [{ 'x': 2 }]
+     */
+    var differenceBy = baseRest(function(array, values) {
+      var iteratee = last(values);
+      if (isArrayLikeObject(iteratee)) {
+        iteratee = undefined;
+      }
+      return isArrayLikeObject(array)
+        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
+        : [];
+    });
+
+    /**
+     * This method is like `_.difference` except that it accepts `comparator`
+     * which is invoked to compare elements of `array` to `values`. The order and
+     * references of result values are determined by the first array. The comparator
+     * is invoked with two arguments: (arrVal, othVal).
+     *
+     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {...Array} [values] The values to exclude.
+     * @param {Function} [comparator] The comparator invoked per element.
+     * @returns {Array} Returns the new array of filtered values.
+     * @example
+     *
+     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
+     *
+     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
+     * // => [{ 'x': 2, 'y': 1 }]
+     */
+    var differenceWith = baseRest(function(array, values) {
+      var comparator = last(values);
+      if (isArrayLikeObject(comparator)) {
+        comparator = undefined;
+      }
+      return isArrayLikeObject(array)
+        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
+        : [];
+    });
+
+    /**
+     * Creates a slice of `array` with `n` elements dropped from the beginning.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.5.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {number} [n=1] The number of elements to drop.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.drop([1, 2, 3]);
+     * // => [2, 3]
+     *
+     * _.drop([1, 2, 3], 2);
+     * // => [3]
+     *
+     * _.drop([1, 2, 3], 5);
+     * // => []
+     *
+     * _.drop([1, 2, 3], 0);
+     * // => [1, 2, 3]
+     */
+    function drop(array, n, guard) {
+      var length = array == null ? 0 : array.length;
+      if (!length) {
+        return [];
+      }
+      n = (guard || n === undefined) ? 1 : toInteger(n);
+      return baseSlice(array, n < 0 ? 0 : n, length);
+    }
+
+    /**
+     * Creates a slice of `array` with `n` elements dropped from the end.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {number} [n=1] The number of elements to drop.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.dropRight([1, 2, 3]);
+     * // => [1, 2]
+     *
+     * _.dropRight([1, 2, 3], 2);
+     * // => [1]
+     *
+     * _.dropRight([1, 2, 3], 5);
+     * // => []
+     *
+     * _.dropRight([1, 2, 3], 0);
+     * // => [1, 2, 3]
+     */
+    function dropRight(array, n, guard) {
+      var length = array == null ? 0 : array.length;
+      if (!length) {
+        return [];
+      }
+      n = (guard || n === undefined) ? 1 : toInteger(n);
+      n = length - n;
+      return baseSlice(array, 0, n < 0 ? 0 : n);
+    }
+
+    /**
+     * Creates a slice of `array` excluding elements dropped from the end.
+     * Elements are dropped until `predicate` returns falsey. The predicate is
+     * invoked with three arguments: (value, index, array).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'active': true },
+     *   { 'user': 'fred',    'active': false },
+     *   { 'user': 'pebbles', 'active': false }
+     * ];
+     *
+     * _.dropRightWhile(users, function(o) { return !o.active; });
+     * // => objects for ['barney']
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
+     * // => objects for ['barney', 'fred']
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.dropRightWhile(users, ['active', false]);
+     * // => objects for ['barney']
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.dropRightWhile(users, 'active');
+     * // => objects for ['barney', 'fred', 'pebbles']
+     */
+    function dropRightWhile(array, predicate) {
+      return (array && array.length)
+        ? baseWhile(array, getIteratee(predicate, 3), true, true)
+        : [];
+    }
+
+    /**
+     * Creates a slice of `array` excluding elements dropped from the beginning.
+     * Elements are dropped until `predicate` returns falsey. The predicate is
+     * invoked with three arguments: (value, index, array).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'active': false },
+     *   { 'user': 'fred',    'active': false },
+     *   { 'user': 'pebbles', 'active': true }
+     * ];
+     *
+     * _.dropWhile(users, function(o) { return !o.active; });
+     * // => objects for ['pebbles']
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.dropWhile(users, { 'user': 'barney', 'active': false });
+     * // => objects for ['fred', 'pebbles']
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.dropWhile(users, ['active', false]);
+     * // => objects for ['pebbles']
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.dropWhile(users, 'active');
+     * // => objects for ['barney', 'fred', 'pebbles']
+     */
+    function dropWhile(array, predicate) {
+      return (array && array.length)
+        ? baseWhile(array, getIteratee(predicate, 3), true)
+        : [];
+    }
+
+    /**
+     * Fills elements of `array` with `value` from `start` up to, but not
+     * including, `end`.
+     *
+     * **Note:** This method mutates `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.2.0
+     * @category Array
+     * @param {Array} array The array to fill.
+     * @param {*} value The value to fill `array` with.
+     * @param {number} [start=0] The start position.
+     * @param {number} [end=array.length] The end position.
+     * @returns {Array} Returns `array`.
+     * @example
+     *
+     * var array = [1, 2, 3];
+     *
+     * _.fill(array, 'a');
+     * console.log(array);
+     * // => ['a', 'a', 'a']
+     *
+     * _.fill(Array(3), 2);
+     * // => [2, 2, 2]
+     *
+     * _.fill([4, 6, 8, 10], '*', 1, 3);
+     * // => [4, '*', '*', 10]
+     */
+    function fill(array, value, start, end) {
+      var length = array == null ? 0 : array.length;
+      if (!length) {
+        return [];
+      }
+      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
+        start = 0;
+        end = length;
+      }
+      return baseFill(array, value, start, end);
+    }
+
+    /**
+     * This method is like `_.find` except that it returns the index of the first
+     * element `predicate` returns truthy for instead of the element itself.
+     *
+     * @static
+     * @memberOf _
+     * @since 1.1.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @param {number} [fromIndex=0] The index to search from.
+     * @returns {number} Returns the index of the found element, else `-1`.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'active': false },
+     *   { 'user': 'fred',    'active': false },
+     *   { 'user': 'pebbles', 'active': true }
+     * ];
+     *
+     * _.findIndex(users, function(o) { return o.user == 'barney'; });
+     * // => 0
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.findIndex(users, { 'user': 'fred', 'active': false });
+     * // => 1
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.findIndex(users, ['active', false]);
+     * // => 0
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.findIndex(users, 'active');
+     * // => 2
+     */
+    function findIndex(array, predicate, fromIndex) {
+      var length = array == null ? 0 : array.length;
+      if (!length) {
+        return -1;
+      }
+      var index = fromIndex == null ? 0 : toInteger(fromIndex);
+      if (index < 0) {
+        index = nativeMax(length + index, 0);
+      }
+      return baseFindIndex(array, getIteratee(predicate, 3), index);
+    }
+
+    /**
+     * This method is like `_.findIndex` except that it iterates over elements
+     * of `collection` from right to left.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.0.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @param {number} [fromIndex=array.length-1] The index to search from.
+     * @returns {number} Returns the index of the found element, else `-1`.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'active': true },
+     *   { 'user': 'fred',    'active': false },
+     *   { 'user': 'pebbles', 'active': false }
+     * ];
+     *
+     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
+     * // => 2
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.findLastIndex(users, { 'user': 'barney', 'active': true });
+     * // => 0
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.findLastIndex(users, ['active', false]);
+     * // => 2
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.findLastIndex(users, 'active');
+     * // => 0
+     */
+    function findLastIndex(array, predicate, fromIndex) {
+      var length = array == null ? 0 : array.length;
+      if (!length) {
+        return -1;
+      }
+      var index = length - 1;
+      if (fromIndex !== undefined) {
+        index = toInteger(fromIndex);
+        index = fromIndex < 0
+          ? nativeMax(length + index, 0)
+          : nativeMin(index, length - 1);
+      }
+      return baseFindIndex(array, getIteratee(predicate, 3), index, true);
+    }
+
+    /**
+     * Flattens `array` a single level deep.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {Array} array The array to flatten.
+     * @returns {Array} Returns the new flattened array.
+     * @example
+     *
+     * _.flatten([1, [2, [3, [4]], 5]]);
+     * // => [1, 2, [3, [4]], 5]
+     */
+    function flatten(array) {
+      var length = array == null ? 0 : array.length;
+      return length ? baseFlatten(array, 1) : [];
+    }
+
+    /**
+     * Recursively flattens `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Array
+     * @param {Array} array The array to flatten.
+     * @returns {Array} Returns the new flattened array.
+     * @example
+     *
+     * _.flattenDeep([1, [2, [3, [4]], 5]]);
+     * // => [1, 2, 3, 4, 5]
+     */
+    function flattenDeep(array) {
+      var length = array == null ? 0 : array.length;
+      return length ? baseFlatten(array, INFINITY) : [];
+    }
+
+    /**
+     * Recursively flatten `array` up to `depth` times.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.4.0
+     * @category Array
+     * @param {Array} array The array to flatten.
+     * @param {number} [depth=1] The maximum recursion depth.
+     * @returns {Array} Returns the new flattened array.
+     * @example
+     *
+     * var array = [1, [2, [3, [4]], 5]];
+     *
+     * _.flattenDepth(array, 1);
+     * // => [1, 2, [3, [4]], 5]
+     *
+     * _.flattenDepth(array, 2);
+     * // => [1, 2, 3, [4], 5]
+     */
+    function flattenDepth(array, depth) {
+      var length = array == null ? 0 : array.length;
+      if (!length) {
+        return [];
+      }
+      depth = depth === undefined ? 1 : toInteger(depth);
+      return baseFlatten(array, depth);
+    }
+
+    /**
+     * The inverse of `_.toPairs`; this method returns an object composed
+     * from key-value `pairs`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} pairs The key-value pairs.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * _.fromPairs([['a', 1], ['b', 2]]);
+     * // => { 'a': 1, 'b': 2 }
+     */
+    function fromPairs(pairs) {
+      var index = -1,
+          length = pairs == null ? 0 : pairs.length,
+          result = {};
+
+      while (++index < length) {
+        var pair = pairs[index];
+        result[pair[0]] = pair[1];
+      }
+      return result;
+    }
+
+    /**
+     * Gets the first element of `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @alias first
+     * @category Array
+     * @param {Array} array The array to query.
+     * @returns {*} Returns the first element of `array`.
+     * @example
+     *
+     * _.head([1, 2, 3]);
+     * // => 1
+     *
+     * _.head([]);
+     * // => undefined
+     */
+    function head(array) {
+      return (array && array.length) ? array[0] : undefined;
+    }
+
+    /**
+     * Gets the index at which the first occurrence of `value` is found in `array`
+     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+     * for equality comparisons. If `fromIndex` is negative, it's used as the
+     * offset from the end of `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {*} value The value to search for.
+     * @param {number} [fromIndex=0] The index to search from.
+     * @returns {number} Returns the index of the matched value, else `-1`.
+     * @example
+     *
+     * _.indexOf([1, 2, 1, 2], 2);
+     * // => 1
+     *
+     * // Search from the `fromIndex`.
+     * _.indexOf([1, 2, 1, 2], 2, 2);
+     * // => 3
+     */
+    function indexOf(array, value, fromIndex) {
+      var length = array == null ? 0 : array.length;
+      if (!length) {
+        return -1;
+      }
+      var index = fromIndex == null ? 0 : toInteger(fromIndex);
+      if (index < 0) {
+        index = nativeMax(length + index, 0);
+      }
+      return baseIndexOf(array, value, index);
+    }
+
+    /**
+     * Gets all but the last element of `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.initial([1, 2, 3]);
+     * // => [1, 2]
+     */
+    function initial(array) {
+      var length = array == null ? 0 : array.length;
+      return length ? baseSlice(array, 0, -1) : [];
+    }
+
+    /**
+     * Creates an array of unique values that are included in all given arrays
+     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+     * for equality comparisons. The order and references of result values are
+     * determined by the first array.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @returns {Array} Returns the new array of intersecting values.
+     * @example
+     *
+     * _.intersection([2, 1], [2, 3]);
+     * // => [2]
+     */
+    var intersection = baseRest(function(arrays) {
+      var mapped = arrayMap(arrays, castArrayLikeObject);
+      return (mapped.length && mapped[0] === arrays[0])
+        ? baseIntersection(mapped)
+        : [];
+    });
+
+    /**
+     * This method is like `_.intersection` except that it accepts `iteratee`
+     * which is invoked for each element of each `arrays` to generate the criterion
+     * by which they're compared. The order and references of result values are
+     * determined by the first array. The iteratee is invoked with one argument:
+     * (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {Array} Returns the new array of intersecting values.
+     * @example
+     *
+     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
+     * // => [2.1]
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
+     * // => [{ 'x': 1 }]
+     */
+    var intersectionBy = baseRest(function(arrays) {
+      var iteratee = last(arrays),
+          mapped = arrayMap(arrays, castArrayLikeObject);
+
+      if (iteratee === last(mapped)) {
+        iteratee = undefined;
+      } else {
+        mapped.pop();
+      }
+      return (mapped.length && mapped[0] === arrays[0])
+        ? baseIntersection(mapped, getIteratee(iteratee, 2))
+        : [];
+    });
+
+    /**
+     * This method is like `_.intersection` except that it accepts `comparator`
+     * which is invoked to compare elements of `arrays`. The order and references
+     * of result values are determined by the first array. The comparator is
+     * invoked with two arguments: (arrVal, othVal).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @param {Function} [comparator] The comparator invoked per element.
+     * @returns {Array} Returns the new array of intersecting values.
+     * @example
+     *
+     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
+     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
+     *
+     * _.intersectionWith(objects, others, _.isEqual);
+     * // => [{ 'x': 1, 'y': 2 }]
+     */
+    var intersectionWith = baseRest(function(arrays) {
+      var comparator = last(arrays),
+          mapped = arrayMap(arrays, castArrayLikeObject);
+
+      comparator = typeof comparator == 'function' ? comparator : undefined;
+      if (comparator) {
+        mapped.pop();
+      }
+      return (mapped.length && mapped[0] === arrays[0])
+        ? baseIntersection(mapped, undefined, comparator)
+        : [];
+    });
+
+    /**
+     * Converts all elements in `array` into a string separated by `separator`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to convert.
+     * @param {string} [separator=','] The element separator.
+     * @returns {string} Returns the joined string.
+     * @example
+     *
+     * _.join(['a', 'b', 'c'], '~');
+     * // => 'a~b~c'
+     */
+    function join(array, separator) {
+      return array == null ? '' : nativeJoin.call(array, separator);
+    }
+
+    /**
+     * Gets the last element of `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @returns {*} Returns the last element of `array`.
+     * @example
+     *
+     * _.last([1, 2, 3]);
+     * // => 3
+     */
+    function last(array) {
+      var length = array == null ? 0 : array.length;
+      return length ? array[length - 1] : undefined;
+    }
+
+    /**
+     * This method is like `_.indexOf` except that it iterates over elements of
+     * `array` from right to left.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {*} value The value to search for.
+     * @param {number} [fromIndex=array.length-1] The index to search from.
+     * @returns {number} Returns the index of the matched value, else `-1`.
+     * @example
+     *
+     * _.lastIndexOf([1, 2, 1, 2], 2);
+     * // => 3
+     *
+     * // Search from the `fromIndex`.
+     * _.lastIndexOf([1, 2, 1, 2], 2, 2);
+     * // => 1
+     */
+    function lastIndexOf(array, value, fromIndex) {
+      var length = array == null ? 0 : array.length;
+      if (!length) {
+        return -1;
+      }
+      var index = length;
+      if (fromIndex !== undefined) {
+        index = toInteger(fromIndex);
+        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
+      }
+      return value === value
+        ? strictLastIndexOf(array, value, index)
+        : baseFindIndex(array, baseIsNaN, index, true);
+    }
+
+    /**
+     * Gets the element at index `n` of `array`. If `n` is negative, the nth
+     * element from the end is returned.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.11.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {number} [n=0] The index of the element to return.
+     * @returns {*} Returns the nth element of `array`.
+     * @example
+     *
+     * var array = ['a', 'b', 'c', 'd'];
+     *
+     * _.nth(array, 1);
+     * // => 'b'
+     *
+     * _.nth(array, -2);
+     * // => 'c';
+     */
+    function nth(array, n) {
+      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
+    }
+
+    /**
+     * Removes all given values from `array` using
+     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+     * for equality comparisons.
+     *
+     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
+     * to remove elements from an array by predicate.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.0.0
+     * @category Array
+     * @param {Array} array The array to modify.
+     * @param {...*} [values] The values to remove.
+     * @returns {Array} Returns `array`.
+     * @example
+     *
+     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
+     *
+     * _.pull(array, 'a', 'c');
+     * console.log(array);
+     * // => ['b', 'b']
+     */
+    var pull = baseRest(pullAll);
+
+    /**
+     * This method is like `_.pull` except that it accepts an array of values to remove.
+     *
+     * **Note:** Unlike `_.difference`, this method mutates `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to modify.
+     * @param {Array} values The values to remove.
+     * @returns {Array} Returns `array`.
+     * @example
+     *
+     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
+     *
+     * _.pullAll(array, ['a', 'c']);
+     * console.log(array);
+     * // => ['b', 'b']
+     */
+    function pullAll(array, values) {
+      return (array && array.length && values && values.length)
+        ? basePullAll(array, values)
+        : array;
+    }
+
+    /**
+     * This method is like `_.pullAll` except that it accepts `iteratee` which is
+     * invoked for each element of `array` and `values` to generate the criterion
+     * by which they're compared. The iteratee is invoked with one argument: (value).
+     *
+     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to modify.
+     * @param {Array} values The values to remove.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {Array} Returns `array`.
+     * @example
+     *
+     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
+     *
+     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
+     * console.log(array);
+     * // => [{ 'x': 2 }]
+     */
+    function pullAllBy(array, values, iteratee) {
+      return (array && array.length && values && values.length)
+        ? basePullAll(array, values, getIteratee(iteratee, 2))
+        : array;
+    }
+
+    /**
+     * This method is like `_.pullAll` except that it accepts `comparator` which
+     * is invoked to compare elements of `array` to `values`. The comparator is
+     * invoked with two arguments: (arrVal, othVal).
+     *
+     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.6.0
+     * @category Array
+     * @param {Array} array The array to modify.
+     * @param {Array} values The values to remove.
+     * @param {Function} [comparator] The comparator invoked per element.
+     * @returns {Array} Returns `array`.
+     * @example
+     *
+     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
+     *
+     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
+     * console.log(array);
+     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
+     */
+    function pullAllWith(array, values, comparator) {
+      return (array && array.length && values && values.length)
+        ? basePullAll(array, values, undefined, comparator)
+        : array;
+    }
+
+    /**
+     * Removes elements from `array` corresponding to `indexes` and returns an
+     * array of removed elements.
+     *
+     * **Note:** Unlike `_.at`, this method mutates `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Array
+     * @param {Array} array The array to modify.
+     * @param {...(number|number[])} [indexes] The indexes of elements to remove.
+     * @returns {Array} Returns the new array of removed elements.
+     * @example
+     *
+     * var array = ['a', 'b', 'c', 'd'];
+     * var pulled = _.pullAt(array, [1, 3]);
+     *
+     * console.log(array);
+     * // => ['a', 'c']
+     *
+     * console.log(pulled);
+     * // => ['b', 'd']
+     */
+    var pullAt = flatRest(function(array, indexes) {
+      var length = array == null ? 0 : array.length,
+          result = baseAt(array, indexes);
+
+      basePullAt(array, arrayMap(indexes, function(index) {
+        return isIndex(index, length) ? +index : index;
+      }).sort(compareAscending));
+
+      return result;
+    });
+
+    /**
+     * Removes all elements from `array` that `predicate` returns truthy for
+     * and returns an array of the removed elements. The predicate is invoked
+     * with three arguments: (value, index, array).
+     *
+     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
+     * to pull elements from an array by value.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.0.0
+     * @category Array
+     * @param {Array} array The array to modify.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the new array of removed elements.
+     * @example
+     *
+     * var array = [1, 2, 3, 4];
+     * var evens = _.remove(array, function(n) {
+     *   return n % 2 == 0;
+     * });
+     *
+     * console.log(array);
+     * // => [1, 3]
+     *
+     * console.log(evens);
+     * // => [2, 4]
+     */
+    function remove(array, predicate) {
+      var result = [];
+      if (!(array && array.length)) {
+        return result;
+      }
+      var index = -1,
+          indexes = [],
+          length = array.length;
+
+      predicate = getIteratee(predicate, 3);
+      while (++index < length) {
+        var value = array[index];
+        if (predicate(value, index, array)) {
+          result.push(value);
+          indexes.push(index);
+        }
+      }
+      basePullAt(array, indexes);
+      return result;
+    }
+
+    /**
+     * Reverses `array` so that the first element becomes the last, the second
+     * element becomes the second to last, and so on.
+     *
+     * **Note:** This method mutates `array` and is based on
+     * [`Array#reverse`](https://mdn.io/Array/reverse).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to modify.
+     * @returns {Array} Returns `array`.
+     * @example
+     *
+     * var array = [1, 2, 3];
+     *
+     * _.reverse(array);
+     * // => [3, 2, 1]
+     *
+     * console.log(array);
+     * // => [3, 2, 1]
+     */
+    function reverse(array) {
+      return array == null ? array : nativeReverse.call(array);
+    }
+
+    /**
+     * Creates a slice of `array` from `start` up to, but not including, `end`.
+     *
+     * **Note:** This method is used instead of
+     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
+     * returned.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Array
+     * @param {Array} array The array to slice.
+     * @param {number} [start=0] The start position.
+     * @param {number} [end=array.length] The end position.
+     * @returns {Array} Returns the slice of `array`.
+     */
+    function slice(array, start, end) {
+      var length = array == null ? 0 : array.length;
+      if (!length) {
+        return [];
+      }
+      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
+        start = 0;
+        end = length;
+      }
+      else {
+        start = start == null ? 0 : toInteger(start);
+        end = end === undefined ? length : toInteger(end);
+      }
+      return baseSlice(array, start, end);
+    }
+
+    /**
+     * Uses a binary search to determine the lowest index at which `value`
+     * should be inserted into `array` in order to maintain its sort order.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {Array} array The sorted array to inspect.
+     * @param {*} value The value to evaluate.
+     * @returns {number} Returns the index at which `value` should be inserted
+     *  into `array`.
+     * @example
+     *
+     * _.sortedIndex([30, 50], 40);
+     * // => 1
+     */
+    function sortedIndex(array, value) {
+      return baseSortedIndex(array, value);
+    }
+
+    /**
+     * This method is like `_.sortedIndex` except that it accepts `iteratee`
+     * which is invoked for `value` and each element of `array` to compute their
+     * sort ranking. The iteratee is invoked with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The sorted array to inspect.
+     * @param {*} value The value to evaluate.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {number} Returns the index at which `value` should be inserted
+     *  into `array`.
+     * @example
+     *
+     * var objects = [{ 'x': 4 }, { 'x': 5 }];
+     *
+     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
+     * // => 0
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
+     * // => 0
+     */
+    function sortedIndexBy(array, value, iteratee) {
+      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
+    }
+
+    /**
+     * This method is like `_.indexOf` except that it performs a binary
+     * search on a sorted `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {*} value The value to search for.
+     * @returns {number} Returns the index of the matched value, else `-1`.
+     * @example
+     *
+     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
+     * // => 1
+     */
+    function sortedIndexOf(array, value) {
+      var length = array == null ? 0 : array.length;
+      if (length) {
+        var index = baseSortedIndex(array, value);
+        if (index < length && eq(array[index], value)) {
+          return index;
+        }
+      }
+      return -1;
+    }
+
+    /**
+     * This method is like `_.sortedIndex` except that it returns the highest
+     * index at which `value` should be inserted into `array` in order to
+     * maintain its sort order.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Array
+     * @param {Array} array The sorted array to inspect.
+     * @param {*} value The value to evaluate.
+     * @returns {number} Returns the index at which `value` should be inserted
+     *  into `array`.
+     * @example
+     *
+     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
+     * // => 4
+     */
+    function sortedLastIndex(array, value) {
+      return baseSortedIndex(array, value, true);
+    }
+
+    /**
+     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
+     * which is invoked for `value` and each element of `array` to compute their
+     * sort ranking. The iteratee is invoked with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The sorted array to inspect.
+     * @param {*} value The value to evaluate.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {number} Returns the index at which `value` should be inserted
+     *  into `array`.
+     * @example
+     *
+     * var objects = [{ 'x': 4 }, { 'x': 5 }];
+     *
+     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
+     * // => 1
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
+     * // => 1
+     */
+    function sortedLastIndexBy(array, value, iteratee) {
+      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
+    }
+
+    /**
+     * This method is like `_.lastIndexOf` except that it performs a binary
+     * search on a sorted `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {*} value The value to search for.
+     * @returns {number} Returns the index of the matched value, else `-1`.
+     * @example
+     *
+     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
+     * // => 3
+     */
+    function sortedLastIndexOf(array, value) {
+      var length = array == null ? 0 : array.length;
+      if (length) {
+        var index = baseSortedIndex(array, value, true) - 1;
+        if (eq(array[index], value)) {
+          return index;
+        }
+      }
+      return -1;
+    }
+
+    /**
+     * This method is like `_.uniq` except that it's designed and optimized
+     * for sorted arrays.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @returns {Array} Returns the new duplicate free array.
+     * @example
+     *
+     * _.sortedUniq([1, 1, 2]);
+     * // => [1, 2]
+     */
+    function sortedUniq(array) {
+      return (array && array.length)
+        ? baseSortedUniq(array)
+        : [];
+    }
+
+    /**
+     * This method is like `_.uniqBy` except that it's designed and optimized
+     * for sorted arrays.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {Function} [iteratee] The iteratee invoked per element.
+     * @returns {Array} Returns the new duplicate free array.
+     * @example
+     *
+     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
+     * // => [1.1, 2.3]
+     */
+    function sortedUniqBy(array, iteratee) {
+      return (array && array.length)
+        ? baseSortedUniq(array, getIteratee(iteratee, 2))
+        : [];
+    }
+
+    /**
+     * Gets all but the first element of `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.tail([1, 2, 3]);
+     * // => [2, 3]
+     */
+    function tail(array) {
+      var length = array == null ? 0 : array.length;
+      return length ? baseSlice(array, 1, length) : [];
+    }
+
+    /**
+     * Creates a slice of `array` with `n` elements taken from the beginning.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {number} [n=1] The number of elements to take.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.take([1, 2, 3]);
+     * // => [1]
+     *
+     * _.take([1, 2, 3], 2);
+     * // => [1, 2]
+     *
+     * _.take([1, 2, 3], 5);
+     * // => [1, 2, 3]
+     *
+     * _.take([1, 2, 3], 0);
+     * // => []
+     */
+    function take(array, n, guard) {
+      if (!(array && array.length)) {
+        return [];
+      }
+      n = (guard || n === undefined) ? 1 : toInteger(n);
+      return baseSlice(array, 0, n < 0 ? 0 : n);
+    }
+
+    /**
+     * Creates a slice of `array` with `n` elements taken from the end.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {number} [n=1] The number of elements to take.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * _.takeRight([1, 2, 3]);
+     * // => [3]
+     *
+     * _.takeRight([1, 2, 3], 2);
+     * // => [2, 3]
+     *
+     * _.takeRight([1, 2, 3], 5);
+     * // => [1, 2, 3]
+     *
+     * _.takeRight([1, 2, 3], 0);
+     * // => []
+     */
+    function takeRight(array, n, guard) {
+      var length = array == null ? 0 : array.length;
+      if (!length) {
+        return [];
+      }
+      n = (guard || n === undefined) ? 1 : toInteger(n);
+      n = length - n;
+      return baseSlice(array, n < 0 ? 0 : n, length);
+    }
+
+    /**
+     * Creates a slice of `array` with elements taken from the end. Elements are
+     * taken until `predicate` returns falsey. The predicate is invoked with
+     * three arguments: (value, index, array).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'active': true },
+     *   { 'user': 'fred',    'active': false },
+     *   { 'user': 'pebbles', 'active': false }
+     * ];
+     *
+     * _.takeRightWhile(users, function(o) { return !o.active; });
+     * // => objects for ['fred', 'pebbles']
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
+     * // => objects for ['pebbles']
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.takeRightWhile(users, ['active', false]);
+     * // => objects for ['fred', 'pebbles']
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.takeRightWhile(users, 'active');
+     * // => []
+     */
+    function takeRightWhile(array, predicate) {
+      return (array && array.length)
+        ? baseWhile(array, getIteratee(predicate, 3), false, true)
+        : [];
+    }
+
+    /**
+     * Creates a slice of `array` with elements taken from the beginning. Elements
+     * are taken until `predicate` returns falsey. The predicate is invoked with
+     * three arguments: (value, index, array).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Array
+     * @param {Array} array The array to query.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the slice of `array`.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'active': false },
+     *   { 'user': 'fred',    'active': false },
+     *   { 'user': 'pebbles', 'active': true }
+     * ];
+     *
+     * _.takeWhile(users, function(o) { return !o.active; });
+     * // => objects for ['barney', 'fred']
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.takeWhile(users, { 'user': 'barney', 'active': false });
+     * // => objects for ['barney']
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.takeWhile(users, ['active', false]);
+     * // => objects for ['barney', 'fred']
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.takeWhile(users, 'active');
+     * // => []
+     */
+    function takeWhile(array, predicate) {
+      return (array && array.length)
+        ? baseWhile(array, getIteratee(predicate, 3))
+        : [];
+    }
+
+    /**
+     * Creates an array of unique values, in order, from all given arrays using
+     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+     * for equality comparisons.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @returns {Array} Returns the new array of combined values.
+     * @example
+     *
+     * _.union([2], [1, 2]);
+     * // => [2, 1]
+     */
+    var union = baseRest(function(arrays) {
+      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
+    });
+
+    /**
+     * This method is like `_.union` except that it accepts `iteratee` which is
+     * invoked for each element of each `arrays` to generate the criterion by
+     * which uniqueness is computed. Result values are chosen from the first
+     * array in which the value occurs. The iteratee is invoked with one argument:
+     * (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {Array} Returns the new array of combined values.
+     * @example
+     *
+     * _.unionBy([2.1], [1.2, 2.3], Math.floor);
+     * // => [2.1, 1.2]
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
+     * // => [{ 'x': 1 }, { 'x': 2 }]
+     */
+    var unionBy = baseRest(function(arrays) {
+      var iteratee = last(arrays);
+      if (isArrayLikeObject(iteratee)) {
+        iteratee = undefined;
+      }
+      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
+    });
+
+    /**
+     * This method is like `_.union` except that it accepts `comparator` which
+     * is invoked to compare elements of `arrays`. Result values are chosen from
+     * the first array in which the value occurs. The comparator is invoked
+     * with two arguments: (arrVal, othVal).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @param {Function} [comparator] The comparator invoked per element.
+     * @returns {Array} Returns the new array of combined values.
+     * @example
+     *
+     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
+     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
+     *
+     * _.unionWith(objects, others, _.isEqual);
+     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
+     */
+    var unionWith = baseRest(function(arrays) {
+      var comparator = last(arrays);
+      comparator = typeof comparator == 'function' ? comparator : undefined;
+      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
+    });
+
+    /**
+     * Creates a duplicate-free version of an array, using
+     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+     * for equality comparisons, in which only the first occurrence of each element
+     * is kept. The order of result values is determined by the order they occur
+     * in the array.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @returns {Array} Returns the new duplicate free array.
+     * @example
+     *
+     * _.uniq([2, 1, 2]);
+     * // => [2, 1]
+     */
+    function uniq(array) {
+      return (array && array.length) ? baseUniq(array) : [];
+    }
+
+    /**
+     * This method is like `_.uniq` except that it accepts `iteratee` which is
+     * invoked for each element in `array` to generate the criterion by which
+     * uniqueness is computed. The order of result values is determined by the
+     * order they occur in the array. The iteratee is invoked with one argument:
+     * (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {Array} Returns the new duplicate free array.
+     * @example
+     *
+     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
+     * // => [2.1, 1.2]
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
+     * // => [{ 'x': 1 }, { 'x': 2 }]
+     */
+    function uniqBy(array, iteratee) {
+      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
+    }
+
+    /**
+     * This method is like `_.uniq` except that it accepts `comparator` which
+     * is invoked to compare elements of `array`. The order of result values is
+     * determined by the order they occur in the array.The comparator is invoked
+     * with two arguments: (arrVal, othVal).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {Function} [comparator] The comparator invoked per element.
+     * @returns {Array} Returns the new duplicate free array.
+     * @example
+     *
+     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
+     *
+     * _.uniqWith(objects, _.isEqual);
+     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
+     */
+    function uniqWith(array, comparator) {
+      comparator = typeof comparator == 'function' ? comparator : undefined;
+      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
+    }
+
+    /**
+     * This method is like `_.zip` except that it accepts an array of grouped
+     * elements and creates an array regrouping the elements to their pre-zip
+     * configuration.
+     *
+     * @static
+     * @memberOf _
+     * @since 1.2.0
+     * @category Array
+     * @param {Array} array The array of grouped elements to process.
+     * @returns {Array} Returns the new array of regrouped elements.
+     * @example
+     *
+     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
+     * // => [['a', 1, true], ['b', 2, false]]
+     *
+     * _.unzip(zipped);
+     * // => [['a', 'b'], [1, 2], [true, false]]
+     */
+    function unzip(array) {
+      if (!(array && array.length)) {
+        return [];
+      }
+      var length = 0;
+      array = arrayFilter(array, function(group) {
+        if (isArrayLikeObject(group)) {
+          length = nativeMax(group.length, length);
+          return true;
+        }
+      });
+      return baseTimes(length, function(index) {
+        return arrayMap(array, baseProperty(index));
+      });
+    }
+
+    /**
+     * This method is like `_.unzip` except that it accepts `iteratee` to specify
+     * how regrouped values should be combined. The iteratee is invoked with the
+     * elements of each group: (...group).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.8.0
+     * @category Array
+     * @param {Array} array The array of grouped elements to process.
+     * @param {Function} [iteratee=_.identity] The function to combine
+     *  regrouped values.
+     * @returns {Array} Returns the new array of regrouped elements.
+     * @example
+     *
+     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
+     * // => [[1, 10, 100], [2, 20, 200]]
+     *
+     * _.unzipWith(zipped, _.add);
+     * // => [3, 30, 300]
+     */
+    function unzipWith(array, iteratee) {
+      if (!(array && array.length)) {
+        return [];
+      }
+      var result = unzip(array);
+      if (iteratee == null) {
+        return result;
+      }
+      return arrayMap(result, function(group) {
+        return apply(iteratee, undefined, group);
+      });
+    }
+
+    /**
+     * Creates an array excluding all given values using
+     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+     * for equality comparisons.
+     *
+     * **Note:** Unlike `_.pull`, this method returns a new array.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {Array} array The array to inspect.
+     * @param {...*} [values] The values to exclude.
+     * @returns {Array} Returns the new array of filtered values.
+     * @see _.difference, _.xor
+     * @example
+     *
+     * _.without([2, 1, 2, 3], 1, 2);
+     * // => [3]
+     */
+    var without = baseRest(function(array, values) {
+      return isArrayLikeObject(array)
+        ? baseDifference(array, values)
+        : [];
+    });
+
+    /**
+     * Creates an array of unique values that is the
+     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
+     * of the given arrays. The order of result values is determined by the order
+     * they occur in the arrays.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.4.0
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @returns {Array} Returns the new array of filtered values.
+     * @see _.difference, _.without
+     * @example
+     *
+     * _.xor([2, 1], [2, 3]);
+     * // => [1, 3]
+     */
+    var xor = baseRest(function(arrays) {
+      return baseXor(arrayFilter(arrays, isArrayLikeObject));
+    });
+
+    /**
+     * This method is like `_.xor` except that it accepts `iteratee` which is
+     * invoked for each element of each `arrays` to generate the criterion by
+     * which by which they're compared. The order of result values is determined
+     * by the order they occur in the arrays. The iteratee is invoked with one
+     * argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {Array} Returns the new array of filtered values.
+     * @example
+     *
+     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
+     * // => [1.2, 3.4]
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
+     * // => [{ 'x': 2 }]
+     */
+    var xorBy = baseRest(function(arrays) {
+      var iteratee = last(arrays);
+      if (isArrayLikeObject(iteratee)) {
+        iteratee = undefined;
+      }
+      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
+    });
+
+    /**
+     * This method is like `_.xor` except that it accepts `comparator` which is
+     * invoked to compare elements of `arrays`. The order of result values is
+     * determined by the order they occur in the arrays. The comparator is invoked
+     * with two arguments: (arrVal, othVal).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Array
+     * @param {...Array} [arrays] The arrays to inspect.
+     * @param {Function} [comparator] The comparator invoked per element.
+     * @returns {Array} Returns the new array of filtered values.
+     * @example
+     *
+     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
+     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
+     *
+     * _.xorWith(objects, others, _.isEqual);
+     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
+     */
+    var xorWith = baseRest(function(arrays) {
+      var comparator = last(arrays);
+      comparator = typeof comparator == 'function' ? comparator : undefined;
+      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
+    });
+
+    /**
+     * Creates an array of grouped elements, the first of which contains the
+     * first elements of the given arrays, the second of which contains the
+     * second elements of the given arrays, and so on.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Array
+     * @param {...Array} [arrays] The arrays to process.
+     * @returns {Array} Returns the new array of grouped elements.
+     * @example
+     *
+     * _.zip(['a', 'b'], [1, 2], [true, false]);
+     * // => [['a', 1, true], ['b', 2, false]]
+     */
+    var zip = baseRest(unzip);
+
+    /**
+     * This method is like `_.fromPairs` except that it accepts two arrays,
+     * one of property identifiers and one of corresponding values.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.4.0
+     * @category Array
+     * @param {Array} [props=[]] The property identifiers.
+     * @param {Array} [values=[]] The property values.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * _.zipObject(['a', 'b'], [1, 2]);
+     * // => { 'a': 1, 'b': 2 }
+     */
+    function zipObject(props, values) {
+      return baseZipObject(props || [], values || [], assignValue);
+    }
+
+    /**
+     * This method is like `_.zipObject` except that it supports property paths.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.1.0
+     * @category Array
+     * @param {Array} [props=[]] The property identifiers.
+     * @param {Array} [values=[]] The property values.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
+     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
+     */
+    function zipObjectDeep(props, values) {
+      return baseZipObject(props || [], values || [], baseSet);
+    }
+
+    /**
+     * This method is like `_.zip` except that it accepts `iteratee` to specify
+     * how grouped values should be combined. The iteratee is invoked with the
+     * elements of each group: (...group).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.8.0
+     * @category Array
+     * @param {...Array} [arrays] The arrays to process.
+     * @param {Function} [iteratee=_.identity] The function to combine
+     *  grouped values.
+     * @returns {Array} Returns the new array of grouped elements.
+     * @example
+     *
+     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
+     *   return a + b + c;
+     * });
+     * // => [111, 222]
+     */
+    var zipWith = baseRest(function(arrays) {
+      var length = arrays.length,
+          iteratee = length > 1 ? arrays[length - 1] : undefined;
+
+      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
+      return unzipWith(arrays, iteratee);
+    });
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates a `lodash` wrapper instance that wraps `value` with explicit method
+     * chain sequences enabled. The result of such sequences must be unwrapped
+     * with `_#value`.
+     *
+     * @static
+     * @memberOf _
+     * @since 1.3.0
+     * @category Seq
+     * @param {*} value The value to wrap.
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36 },
+     *   { 'user': 'fred',    'age': 40 },
+     *   { 'user': 'pebbles', 'age': 1 }
+     * ];
+     *
+     * var youngest = _
+     *   .chain(users)
+     *   .sortBy('age')
+     *   .map(function(o) {
+     *     return o.user + ' is ' + o.age;
+     *   })
+     *   .head()
+     *   .value();
+     * // => 'pebbles is 1'
+     */
+    function chain(value) {
+      var result = lodash(value);
+      result.__chain__ = true;
+      return result;
+    }
+
+    /**
+     * This method invokes `interceptor` and returns `value`. The interceptor
+     * is invoked with one argument; (value). The purpose of this method is to
+     * "tap into" a method chain sequence in order to modify intermediate results.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Seq
+     * @param {*} value The value to provide to `interceptor`.
+     * @param {Function} interceptor The function to invoke.
+     * @returns {*} Returns `value`.
+     * @example
+     *
+     * _([1, 2, 3])
+     *  .tap(function(array) {
+     *    // Mutate input array.
+     *    array.pop();
+     *  })
+     *  .reverse()
+     *  .value();
+     * // => [2, 1]
+     */
+    function tap(value, interceptor) {
+      interceptor(value);
+      return value;
+    }
+
+    /**
+     * This method is like `_.tap` except that it returns the result of `interceptor`.
+     * The purpose of this method is to "pass thru" values replacing intermediate
+     * results in a method chain sequence.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Seq
+     * @param {*} value The value to provide to `interceptor`.
+     * @param {Function} interceptor The function to invoke.
+     * @returns {*} Returns the result of `interceptor`.
+     * @example
+     *
+     * _('  abc  ')
+     *  .chain()
+     *  .trim()
+     *  .thru(function(value) {
+     *    return [value];
+     *  })
+     *  .value();
+     * // => ['abc']
+     */
+    function thru(value, interceptor) {
+      return interceptor(value);
+    }
+
+    /**
+     * This method is the wrapper version of `_.at`.
+     *
+     * @name at
+     * @memberOf _
+     * @since 1.0.0
+     * @category Seq
+     * @param {...(string|string[])} [paths] The property paths to pick.
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
+     *
+     * _(object).at(['a[0].b.c', 'a[1]']).value();
+     * // => [3, 4]
+     */
+    var wrapperAt = flatRest(function(paths) {
+      var length = paths.length,
+          start = length ? paths[0] : 0,
+          value = this.__wrapped__,
+          interceptor = function(object) { return baseAt(object, paths); };
+
+      if (length > 1 || this.__actions__.length ||
+          !(value instanceof LazyWrapper) || !isIndex(start)) {
+        return this.thru(interceptor);
+      }
+      value = value.slice(start, +start + (length ? 1 : 0));
+      value.__actions__.push({
+        'func': thru,
+        'args': [interceptor],
+        'thisArg': undefined
+      });
+      return new LodashWrapper(value, this.__chain__).thru(function(array) {
+        if (length && !array.length) {
+          array.push(undefined);
+        }
+        return array;
+      });
+    });
+
+    /**
+     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
+     *
+     * @name chain
+     * @memberOf _
+     * @since 0.1.0
+     * @category Seq
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36 },
+     *   { 'user': 'fred',   'age': 40 }
+     * ];
+     *
+     * // A sequence without explicit chaining.
+     * _(users).head();
+     * // => { 'user': 'barney', 'age': 36 }
+     *
+     * // A sequence with explicit chaining.
+     * _(users)
+     *   .chain()
+     *   .head()
+     *   .pick('user')
+     *   .value();
+     * // => { 'user': 'barney' }
+     */
+    function wrapperChain() {
+      return chain(this);
+    }
+
+    /**
+     * Executes the chain sequence and returns the wrapped result.
+     *
+     * @name commit
+     * @memberOf _
+     * @since 3.2.0
+     * @category Seq
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * var array = [1, 2];
+     * var wrapped = _(array).push(3);
+     *
+     * console.log(array);
+     * // => [1, 2]
+     *
+     * wrapped = wrapped.commit();
+     * console.log(array);
+     * // => [1, 2, 3]
+     *
+     * wrapped.last();
+     * // => 3
+     *
+     * console.log(array);
+     * // => [1, 2, 3]
+     */
+    function wrapperCommit() {
+      return new LodashWrapper(this.value(), this.__chain__);
+    }
+
+    /**
+     * Gets the next value on a wrapped object following the
+     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
+     *
+     * @name next
+     * @memberOf _
+     * @since 4.0.0
+     * @category Seq
+     * @returns {Object} Returns the next iterator value.
+     * @example
+     *
+     * var wrapped = _([1, 2]);
+     *
+     * wrapped.next();
+     * // => { 'done': false, 'value': 1 }
+     *
+     * wrapped.next();
+     * // => { 'done': false, 'value': 2 }
+     *
+     * wrapped.next();
+     * // => { 'done': true, 'value': undefined }
+     */
+    function wrapperNext() {
+      if (this.__values__ === undefined) {
+        this.__values__ = toArray(this.value());
+      }
+      var done = this.__index__ >= this.__values__.length,
+          value = done ? undefined : this.__values__[this.__index__++];
+
+      return { 'done': done, 'value': value };
+    }
+
+    /**
+     * Enables the wrapper to be iterable.
+     *
+     * @name Symbol.iterator
+     * @memberOf _
+     * @since 4.0.0
+     * @category Seq
+     * @returns {Object} Returns the wrapper object.
+     * @example
+     *
+     * var wrapped = _([1, 2]);
+     *
+     * wrapped[Symbol.iterator]() === wrapped;
+     * // => true
+     *
+     * Array.from(wrapped);
+     * // => [1, 2]
+     */
+    function wrapperToIterator() {
+      return this;
+    }
+
+    /**
+     * Creates a clone of the chain sequence planting `value` as the wrapped value.
+     *
+     * @name plant
+     * @memberOf _
+     * @since 3.2.0
+     * @category Seq
+     * @param {*} value The value to plant.
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * function square(n) {
+     *   return n * n;
+     * }
+     *
+     * var wrapped = _([1, 2]).map(square);
+     * var other = wrapped.plant([3, 4]);
+     *
+     * other.value();
+     * // => [9, 16]
+     *
+     * wrapped.value();
+     * // => [1, 4]
+     */
+    function wrapperPlant(value) {
+      var result,
+          parent = this;
+
+      while (parent instanceof baseLodash) {
+        var clone = wrapperClone(parent);
+        clone.__index__ = 0;
+        clone.__values__ = undefined;
+        if (result) {
+          previous.__wrapped__ = clone;
+        } else {
+          result = clone;
+        }
+        var previous = clone;
+        parent = parent.__wrapped__;
+      }
+      previous.__wrapped__ = value;
+      return result;
+    }
+
+    /**
+     * This method is the wrapper version of `_.reverse`.
+     *
+     * **Note:** This method mutates the wrapped array.
+     *
+     * @name reverse
+     * @memberOf _
+     * @since 0.1.0
+     * @category Seq
+     * @returns {Object} Returns the new `lodash` wrapper instance.
+     * @example
+     *
+     * var array = [1, 2, 3];
+     *
+     * _(array).reverse().value()
+     * // => [3, 2, 1]
+     *
+     * console.log(array);
+     * // => [3, 2, 1]
+     */
+    function wrapperReverse() {
+      var value = this.__wrapped__;
+      if (value instanceof LazyWrapper) {
+        var wrapped = value;
+        if (this.__actions__.length) {
+          wrapped = new LazyWrapper(this);
+        }
+        wrapped = wrapped.reverse();
+        wrapped.__actions__.push({
+          'func': thru,
+          'args': [reverse],
+          'thisArg': undefined
+        });
+        return new LodashWrapper(wrapped, this.__chain__);
+      }
+      return this.thru(reverse);
+    }
+
+    /**
+     * Executes the chain sequence to resolve the unwrapped value.
+     *
+     * @name value
+     * @memberOf _
+     * @since 0.1.0
+     * @alias toJSON, valueOf
+     * @category Seq
+     * @returns {*} Returns the resolved unwrapped value.
+     * @example
+     *
+     * _([1, 2, 3]).value();
+     * // => [1, 2, 3]
+     */
+    function wrapperValue() {
+      return baseWrapperValue(this.__wrapped__, this.__actions__);
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Creates an object composed of keys generated from the results of running
+     * each element of `collection` thru `iteratee`. The corresponding value of
+     * each key is the number of times the key was returned by `iteratee`. The
+     * iteratee is invoked with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 0.5.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
+     * @returns {Object} Returns the composed aggregate object.
+     * @example
+     *
+     * _.countBy([6.1, 4.2, 6.3], Math.floor);
+     * // => { '4': 1, '6': 2 }
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.countBy(['one', 'two', 'three'], 'length');
+     * // => { '3': 2, '5': 1 }
+     */
+    var countBy = createAggregator(function(result, value, key) {
+      if (hasOwnProperty.call(result, key)) {
+        ++result[key];
+      } else {
+        baseAssignValue(result, key, 1);
+      }
+    });
+
+    /**
+     * Checks if `predicate` returns truthy for **all** elements of `collection`.
+     * Iteration is stopped once `predicate` returns falsey. The predicate is
+     * invoked with three arguments: (value, index|key, collection).
+     *
+     * **Note:** This method returns `true` for
+     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
+     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
+     * elements of empty collections.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {boolean} Returns `true` if all elements pass the predicate check,
+     *  else `false`.
+     * @example
+     *
+     * _.every([true, 1, null, 'yes'], Boolean);
+     * // => false
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36, 'active': false },
+     *   { 'user': 'fred',   'age': 40, 'active': false }
+     * ];
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.every(users, { 'user': 'barney', 'active': false });
+     * // => false
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.every(users, ['active', false]);
+     * // => true
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.every(users, 'active');
+     * // => false
+     */
+    function every(collection, predicate, guard) {
+      var func = isArray(collection) ? arrayEvery : baseEvery;
+      if (guard && isIterateeCall(collection, predicate, guard)) {
+        predicate = undefined;
+      }
+      return func(collection, getIteratee(predicate, 3));
+    }
+
+    /**
+     * Iterates over elements of `collection`, returning an array of all elements
+     * `predicate` returns truthy for. The predicate is invoked with three
+     * arguments: (value, index|key, collection).
+     *
+     * **Note:** Unlike `_.remove`, this method returns a new array.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the new filtered array.
+     * @see _.reject
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36, 'active': true },
+     *   { 'user': 'fred',   'age': 40, 'active': false }
+     * ];
+     *
+     * _.filter(users, function(o) { return !o.active; });
+     * // => objects for ['fred']
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.filter(users, { 'age': 36, 'active': true });
+     * // => objects for ['barney']
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.filter(users, ['active', false]);
+     * // => objects for ['fred']
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.filter(users, 'active');
+     * // => objects for ['barney']
+     *
+     * // Combining several predicates using `_.overEvery` or `_.overSome`.
+     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
+     * // => objects for ['fred', 'barney']
+     */
+    function filter(collection, predicate) {
+      var func = isArray(collection) ? arrayFilter : baseFilter;
+      return func(collection, getIteratee(predicate, 3));
+    }
+
+    /**
+     * Iterates over elements of `collection`, returning the first element
+     * `predicate` returns truthy for. The predicate is invoked with three
+     * arguments: (value, index|key, collection).
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to inspect.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @param {number} [fromIndex=0] The index to search from.
+     * @returns {*} Returns the matched element, else `undefined`.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36, 'active': true },
+     *   { 'user': 'fred',    'age': 40, 'active': false },
+     *   { 'user': 'pebbles', 'age': 1,  'active': true }
+     * ];
+     *
+     * _.find(users, function(o) { return o.age < 40; });
+     * // => object for 'barney'
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.find(users, { 'age': 1, 'active': true });
+     * // => object for 'pebbles'
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.find(users, ['active', false]);
+     * // => object for 'fred'
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.find(users, 'active');
+     * // => object for 'barney'
+     */
+    var find = createFind(findIndex);
+
+    /**
+     * This method is like `_.find` except that it iterates over elements of
+     * `collection` from right to left.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.0.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to inspect.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @param {number} [fromIndex=collection.length-1] The index to search from.
+     * @returns {*} Returns the matched element, else `undefined`.
+     * @example
+     *
+     * _.findLast([1, 2, 3, 4], function(n) {
+     *   return n % 2 == 1;
+     * });
+     * // => 3
+     */
+    var findLast = createFind(findLastIndex);
+
+    /**
+     * Creates a flattened array of values by running each element in `collection`
+     * thru `iteratee` and flattening the mapped results. The iteratee is invoked
+     * with three arguments: (value, index|key, collection).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the new flattened array.
+     * @example
+     *
+     * function duplicate(n) {
+     *   return [n, n];
+     * }
+     *
+     * _.flatMap([1, 2], duplicate);
+     * // => [1, 1, 2, 2]
+     */
+    function flatMap(collection, iteratee) {
+      return baseFlatten(map(collection, iteratee), 1);
+    }
+
+    /**
+     * This method is like `_.flatMap` except that it recursively flattens the
+     * mapped results.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.7.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the new flattened array.
+     * @example
+     *
+     * function duplicate(n) {
+     *   return [[[n, n]]];
+     * }
+     *
+     * _.flatMapDeep([1, 2], duplicate);
+     * // => [1, 1, 2, 2]
+     */
+    function flatMapDeep(collection, iteratee) {
+      return baseFlatten(map(collection, iteratee), INFINITY);
+    }
+
+    /**
+     * This method is like `_.flatMap` except that it recursively flattens the
+     * mapped results up to `depth` times.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.7.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {number} [depth=1] The maximum recursion depth.
+     * @returns {Array} Returns the new flattened array.
+     * @example
+     *
+     * function duplicate(n) {
+     *   return [[[n, n]]];
+     * }
+     *
+     * _.flatMapDepth([1, 2], duplicate, 2);
+     * // => [[1, 1], [2, 2]]
+     */
+    function flatMapDepth(collection, iteratee, depth) {
+      depth = depth === undefined ? 1 : toInteger(depth);
+      return baseFlatten(map(collection, iteratee), depth);
+    }
+
+    /**
+     * Iterates over elements of `collection` and invokes `iteratee` for each element.
+     * The iteratee is invoked with three arguments: (value, index|key, collection).
+     * Iteratee functions may exit iteration early by explicitly returning `false`.
+     *
+     * **Note:** As with other "Collections" methods, objects with a "length"
+     * property are iterated like arrays. To avoid this behavior use `_.forIn`
+     * or `_.forOwn` for object iteration.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @alias each
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Array|Object} Returns `collection`.
+     * @see _.forEachRight
+     * @example
+     *
+     * _.forEach([1, 2], function(value) {
+     *   console.log(value);
+     * });
+     * // => Logs `1` then `2`.
+     *
+     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
+     *   console.log(key);
+     * });
+     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
+     */
+    function forEach(collection, iteratee) {
+      var func = isArray(collection) ? arrayEach : baseEach;
+      return func(collection, getIteratee(iteratee, 3));
+    }
+
+    /**
+     * This method is like `_.forEach` except that it iterates over elements of
+     * `collection` from right to left.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.0.0
+     * @alias eachRight
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Array|Object} Returns `collection`.
+     * @see _.forEach
+     * @example
+     *
+     * _.forEachRight([1, 2], function(value) {
+     *   console.log(value);
+     * });
+     * // => Logs `2` then `1`.
+     */
+    function forEachRight(collection, iteratee) {
+      var func = isArray(collection) ? arrayEachRight : baseEachRight;
+      return func(collection, getIteratee(iteratee, 3));
+    }
+
+    /**
+     * Creates an object composed of keys generated from the results of running
+     * each element of `collection` thru `iteratee`. The order of grouped values
+     * is determined by the order they occur in `collection`. The corresponding
+     * value of each key is an array of elements responsible for generating the
+     * key. The iteratee is invoked with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
+     * @returns {Object} Returns the composed aggregate object.
+     * @example
+     *
+     * _.groupBy([6.1, 4.2, 6.3], Math.floor);
+     * // => { '4': [4.2], '6': [6.1, 6.3] }
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.groupBy(['one', 'two', 'three'], 'length');
+     * // => { '3': ['one', 'two'], '5': ['three'] }
+     */
+    var groupBy = createAggregator(function(result, value, key) {
+      if (hasOwnProperty.call(result, key)) {
+        result[key].push(value);
+      } else {
+        baseAssignValue(result, key, [value]);
+      }
+    });
+
+    /**
+     * Checks if `value` is in `collection`. If `collection` is a string, it's
+     * checked for a substring of `value`, otherwise
+     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+     * is used for equality comparisons. If `fromIndex` is negative, it's used as
+     * the offset from the end of `collection`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to inspect.
+     * @param {*} value The value to search for.
+     * @param {number} [fromIndex=0] The index to search from.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
+     * @returns {boolean} Returns `true` if `value` is found, else `false`.
+     * @example
+     *
+     * _.includes([1, 2, 3], 1);
+     * // => true
+     *
+     * _.includes([1, 2, 3], 1, 2);
+     * // => false
+     *
+     * _.includes({ 'a': 1, 'b': 2 }, 1);
+     * // => true
+     *
+     * _.includes('abcd', 'bc');
+     * // => true
+     */
+    function includes(collection, value, fromIndex, guard) {
+      collection = isArrayLike(collection) ? collection : values(collection);
+      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
+
+      var length = collection.length;
+      if (fromIndex < 0) {
+        fromIndex = nativeMax(length + fromIndex, 0);
+      }
+      return isString(collection)
+        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
+        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
+    }
+
+    /**
+     * Invokes the method at `path` of each element in `collection`, returning
+     * an array of the results of each invoked method. Any additional arguments
+     * are provided to each invoked method. If `path` is a function, it's invoked
+     * for, and `this` bound to, each element in `collection`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Array|Function|string} path The path of the method to invoke or
+     *  the function invoked per iteration.
+     * @param {...*} [args] The arguments to invoke each method with.
+     * @returns {Array} Returns the array of results.
+     * @example
+     *
+     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
+     * // => [[1, 5, 7], [1, 2, 3]]
+     *
+     * _.invokeMap([123, 456], String.prototype.split, '');
+     * // => [['1', '2', '3'], ['4', '5', '6']]
+     */
+    var invokeMap = baseRest(function(collection, path, args) {
+      var index = -1,
+          isFunc = typeof path == 'function',
+          result = isArrayLike(collection) ? Array(collection.length) : [];
+
+      baseEach(collection, function(value) {
+        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
+      });
+      return result;
+    });
+
+    /**
+     * Creates an object composed of keys generated from the results of running
+     * each element of `collection` thru `iteratee`. The corresponding value of
+     * each key is the last element responsible for generating the key. The
+     * iteratee is invoked with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
+     * @returns {Object} Returns the composed aggregate object.
+     * @example
+     *
+     * var array = [
+     *   { 'dir': 'left', 'code': 97 },
+     *   { 'dir': 'right', 'code': 100 }
+     * ];
+     *
+     * _.keyBy(array, function(o) {
+     *   return String.fromCharCode(o.code);
+     * });
+     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
+     *
+     * _.keyBy(array, 'dir');
+     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
+     */
+    var keyBy = createAggregator(function(result, value, key) {
+      baseAssignValue(result, key, value);
+    });
+
+    /**
+     * Creates an array of values by running each element in `collection` thru
+     * `iteratee`. The iteratee is invoked with three arguments:
+     * (value, index|key, collection).
+     *
+     * Many lodash methods are guarded to work as iteratees for methods like
+     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
+     *
+     * The guarded methods are:
+     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
+     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
+     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
+     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the new mapped array.
+     * @example
+     *
+     * function square(n) {
+     *   return n * n;
+     * }
+     *
+     * _.map([4, 8], square);
+     * // => [16, 64]
+     *
+     * _.map({ 'a': 4, 'b': 8 }, square);
+     * // => [16, 64] (iteration order is not guaranteed)
+     *
+     * var users = [
+     *   { 'user': 'barney' },
+     *   { 'user': 'fred' }
+     * ];
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.map(users, 'user');
+     * // => ['barney', 'fred']
+     */
+    function map(collection, iteratee) {
+      var func = isArray(collection) ? arrayMap : baseMap;
+      return func(collection, getIteratee(iteratee, 3));
+    }
+
+    /**
+     * This method is like `_.sortBy` except that it allows specifying the sort
+     * orders of the iteratees to sort by. If `orders` is unspecified, all values
+     * are sorted in ascending order. Otherwise, specify an order of "desc" for
+     * descending or "asc" for ascending sort order of corresponding values.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
+     *  The iteratees to sort by.
+     * @param {string[]} [orders] The sort orders of `iteratees`.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
+     * @returns {Array} Returns the new sorted array.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'fred',   'age': 48 },
+     *   { 'user': 'barney', 'age': 34 },
+     *   { 'user': 'fred',   'age': 40 },
+     *   { 'user': 'barney', 'age': 36 }
+     * ];
+     *
+     * // Sort by `user` in ascending order and by `age` in descending order.
+     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
+     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
+     */
+    function orderBy(collection, iteratees, orders, guard) {
+      if (collection == null) {
+        return [];
+      }
+      if (!isArray(iteratees)) {
+        iteratees = iteratees == null ? [] : [iteratees];
+      }
+      orders = guard ? undefined : orders;
+      if (!isArray(orders)) {
+        orders = orders == null ? [] : [orders];
+      }
+      return baseOrderBy(collection, iteratees, orders);
+    }
+
+    /**
+     * Creates an array of elements split into two groups, the first of which
+     * contains elements `predicate` returns truthy for, the second of which
+     * contains elements `predicate` returns falsey for. The predicate is
+     * invoked with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the array of grouped elements.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney',  'age': 36, 'active': false },
+     *   { 'user': 'fred',    'age': 40, 'active': true },
+     *   { 'user': 'pebbles', 'age': 1,  'active': false }
+     * ];
+     *
+     * _.partition(users, function(o) { return o.active; });
+     * // => objects for [['fred'], ['barney', 'pebbles']]
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.partition(users, { 'age': 1, 'active': false });
+     * // => objects for [['pebbles'], ['barney', 'fred']]
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.partition(users, ['active', false]);
+     * // => objects for [['barney', 'pebbles'], ['fred']]
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.partition(users, 'active');
+     * // => objects for [['fred'], ['barney', 'pebbles']]
+     */
+    var partition = createAggregator(function(result, value, key) {
+      result[key ? 0 : 1].push(value);
+    }, function() { return [[], []]; });
+
+    /**
+     * Reduces `collection` to a value which is the accumulated result of running
+     * each element in `collection` thru `iteratee`, where each successive
+     * invocation is supplied the return value of the previous. If `accumulator`
+     * is not given, the first element of `collection` is used as the initial
+     * value. The iteratee is invoked with four arguments:
+     * (accumulator, value, index|key, collection).
+     *
+     * Many lodash methods are guarded to work as iteratees for methods like
+     * `_.reduce`, `_.reduceRight`, and `_.transform`.
+     *
+     * The guarded methods are:
+     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
+     * and `sortBy`
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [accumulator] The initial value.
+     * @returns {*} Returns the accumulated value.
+     * @see _.reduceRight
+     * @example
+     *
+     * _.reduce([1, 2], function(sum, n) {
+     *   return sum + n;
+     * }, 0);
+     * // => 3
+     *
+     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
+     *   (result[value] || (result[value] = [])).push(key);
+     *   return result;
+     * }, {});
+     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
+     */
+    function reduce(collection, iteratee, accumulator) {
+      var func = isArray(collection) ? arrayReduce : baseReduce,
+          initAccum = arguments.length < 3;
+
+      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
+    }
+
+    /**
+     * This method is like `_.reduce` except that it iterates over elements of
+     * `collection` from right to left.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [accumulator] The initial value.
+     * @returns {*} Returns the accumulated value.
+     * @see _.reduce
+     * @example
+     *
+     * var array = [[0, 1], [2, 3], [4, 5]];
+     *
+     * _.reduceRight(array, function(flattened, other) {
+     *   return flattened.concat(other);
+     * }, []);
+     * // => [4, 5, 2, 3, 0, 1]
+     */
+    function reduceRight(collection, iteratee, accumulator) {
+      var func = isArray(collection) ? arrayReduceRight : baseReduce,
+          initAccum = arguments.length < 3;
+
+      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
+    }
+
+    /**
+     * The opposite of `_.filter`; this method returns the elements of `collection`
+     * that `predicate` does **not** return truthy for.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the new filtered array.
+     * @see _.filter
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36, 'active': false },
+     *   { 'user': 'fred',   'age': 40, 'active': true }
+     * ];
+     *
+     * _.reject(users, function(o) { return !o.active; });
+     * // => objects for ['fred']
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.reject(users, { 'age': 40, 'active': true });
+     * // => objects for ['barney']
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.reject(users, ['active', false]);
+     * // => objects for ['fred']
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.reject(users, 'active');
+     * // => objects for ['barney']
+     */
+    function reject(collection, predicate) {
+      var func = isArray(collection) ? arrayFilter : baseFilter;
+      return func(collection, negate(getIteratee(predicate, 3)));
+    }
+
+    /**
+     * Gets a random element from `collection`.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.0.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to sample.
+     * @returns {*} Returns the random element.
+     * @example
+     *
+     * _.sample([1, 2, 3, 4]);
+     * // => 2
+     */
+    function sample(collection) {
+      var func = isArray(collection) ? arraySample : baseSample;
+      return func(collection);
+    }
+
+    /**
+     * Gets `n` random elements at unique keys from `collection` up to the
+     * size of `collection`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to sample.
+     * @param {number} [n=1] The number of elements to sample.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {Array} Returns the random elements.
+     * @example
+     *
+     * _.sampleSize([1, 2, 3], 2);
+     * // => [3, 1]
+     *
+     * _.sampleSize([1, 2, 3], 4);
+     * // => [2, 3, 1]
+     */
+    function sampleSize(collection, n, guard) {
+      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
+        n = 1;
+      } else {
+        n = toInteger(n);
+      }
+      var func = isArray(collection) ? arraySampleSize : baseSampleSize;
+      return func(collection, n);
+    }
+
+    /**
+     * Creates an array of shuffled values, using a version of the
+     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to shuffle.
+     * @returns {Array} Returns the new shuffled array.
+     * @example
+     *
+     * _.shuffle([1, 2, 3, 4]);
+     * // => [4, 1, 3, 2]
+     */
+    function shuffle(collection) {
+      var func = isArray(collection) ? arrayShuffle : baseShuffle;
+      return func(collection);
+    }
+
+    /**
+     * Gets the size of `collection` by returning its length for array-like
+     * values or the number of own enumerable string keyed properties for objects.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object|string} collection The collection to inspect.
+     * @returns {number} Returns the collection size.
+     * @example
+     *
+     * _.size([1, 2, 3]);
+     * // => 3
+     *
+     * _.size({ 'a': 1, 'b': 2 });
+     * // => 2
+     *
+     * _.size('pebbles');
+     * // => 7
+     */
+    function size(collection) {
+      if (collection == null) {
+        return 0;
+      }
+      if (isArrayLike(collection)) {
+        return isString(collection) ? stringSize(collection) : collection.length;
+      }
+      var tag = getTag(collection);
+      if (tag == mapTag || tag == setTag) {
+        return collection.size;
+      }
+      return baseKeys(collection).length;
+    }
+
+    /**
+     * Checks if `predicate` returns truthy for **any** element of `collection`.
+     * Iteration is stopped once `predicate` returns truthy. The predicate is
+     * invoked with three arguments: (value, index|key, collection).
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {boolean} Returns `true` if any element passes the predicate check,
+     *  else `false`.
+     * @example
+     *
+     * _.some([null, 0, 'yes', false], Boolean);
+     * // => true
+     *
+     * var users = [
+     *   { 'user': 'barney', 'active': true },
+     *   { 'user': 'fred',   'active': false }
+     * ];
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.some(users, { 'user': 'barney', 'active': false });
+     * // => false
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.some(users, ['active', false]);
+     * // => true
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.some(users, 'active');
+     * // => true
+     */
+    function some(collection, predicate, guard) {
+      var func = isArray(collection) ? arraySome : baseSome;
+      if (guard && isIterateeCall(collection, predicate, guard)) {
+        predicate = undefined;
+      }
+      return func(collection, getIteratee(predicate, 3));
+    }
+
+    /**
+     * Creates an array of elements, sorted in ascending order by the results of
+     * running each element in a collection thru each iteratee. This method
+     * performs a stable sort, that is, it preserves the original sort order of
+     * equal elements. The iteratees are invoked with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Collection
+     * @param {Array|Object} collection The collection to iterate over.
+     * @param {...(Function|Function[])} [iteratees=[_.identity]]
+     *  The iteratees to sort by.
+     * @returns {Array} Returns the new sorted array.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'fred',   'age': 48 },
+     *   { 'user': 'barney', 'age': 36 },
+     *   { 'user': 'fred',   'age': 30 },
+     *   { 'user': 'barney', 'age': 34 }
+     * ];
+     *
+     * _.sortBy(users, [function(o) { return o.user; }]);
+     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
+     *
+     * _.sortBy(users, ['user', 'age']);
+     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
+     */
+    var sortBy = baseRest(function(collection, iteratees) {
+      if (collection == null) {
+        return [];
+      }
+      var length = iteratees.length;
+      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
+        iteratees = [];
+      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
+        iteratees = [iteratees[0]];
+      }
+      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
+    });
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Gets the timestamp of the number of milliseconds that have elapsed since
+     * the Unix epoch (1 January 1970 00:00:00 UTC).
+     *
+     * @static
+     * @memberOf _
+     * @since 2.4.0
+     * @category Date
+     * @returns {number} Returns the timestamp.
+     * @example
+     *
+     * _.defer(function(stamp) {
+     *   console.log(_.now() - stamp);
+     * }, _.now());
+     * // => Logs the number of milliseconds it took for the deferred invocation.
+     */
+    var now = ctxNow || function() {
+      return root.Date.now();
+    };
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * The opposite of `_.before`; this method creates a function that invokes
+     * `func` once it's called `n` or more times.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Function
+     * @param {number} n The number of calls before `func` is invoked.
+     * @param {Function} func The function to restrict.
+     * @returns {Function} Returns the new restricted function.
+     * @example
+     *
+     * var saves = ['profile', 'settings'];
+     *
+     * var done = _.after(saves.length, function() {
+     *   console.log('done saving!');
+     * });
+     *
+     * _.forEach(saves, function(type) {
+     *   asyncSave({ 'type': type, 'complete': done });
+     * });
+     * // => Logs 'done saving!' after the two async saves have completed.
+     */
+    function after(n, func) {
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      n = toInteger(n);
+      return function() {
+        if (--n < 1) {
+          return func.apply(this, arguments);
+        }
+      };
+    }
+
+    /**
+     * Creates a function that invokes `func`, with up to `n` arguments,
+     * ignoring any additional arguments.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Function
+     * @param {Function} func The function to cap arguments for.
+     * @param {number} [n=func.length] The arity cap.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {Function} Returns the new capped function.
+     * @example
+     *
+     * _.map(['6', '8', '10'], _.ary(parseInt, 1));
+     * // => [6, 8, 10]
+     */
+    function ary(func, n, guard) {
+      n = guard ? undefined : n;
+      n = (func && n == null) ? func.length : n;
+      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
+    }
+
+    /**
+     * Creates a function that invokes `func`, with the `this` binding and arguments
+     * of the created function, while it's called less than `n` times. Subsequent
+     * calls to the created function return the result of the last `func` invocation.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Function
+     * @param {number} n The number of calls at which `func` is no longer invoked.
+     * @param {Function} func The function to restrict.
+     * @returns {Function} Returns the new restricted function.
+     * @example
+     *
+     * jQuery(element).on('click', _.before(5, addContactToList));
+     * // => Allows adding up to 4 contacts to the list.
+     */
+    function before(n, func) {
+      var result;
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      n = toInteger(n);
+      return function() {
+        if (--n > 0) {
+          result = func.apply(this, arguments);
+        }
+        if (n <= 1) {
+          func = undefined;
+        }
+        return result;
+      };
+    }
+
+    /**
+     * Creates a function that invokes `func` with the `this` binding of `thisArg`
+     * and `partials` prepended to the arguments it receives.
+     *
+     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
+     * may be used as a placeholder for partially applied arguments.
+     *
+     * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
+     * property of bound functions.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Function
+     * @param {Function} func The function to bind.
+     * @param {*} thisArg The `this` binding of `func`.
+     * @param {...*} [partials] The arguments to be partially applied.
+     * @returns {Function} Returns the new bound function.
+     * @example
+     *
+     * function greet(greeting, punctuation) {
+     *   return greeting + ' ' + this.user + punctuation;
+     * }
+     *
+     * var object = { 'user': 'fred' };
+     *
+     * var bound = _.bind(greet, object, 'hi');
+     * bound('!');
+     * // => 'hi fred!'
+     *
+     * // Bound with placeholders.
+     * var bound = _.bind(greet, object, _, '!');
+     * bound('hi');
+     * // => 'hi fred!'
+     */
+    var bind = baseRest(function(func, thisArg, partials) {
+      var bitmask = WRAP_BIND_FLAG;
+      if (partials.length) {
+        var holders = replaceHolders(partials, getHolder(bind));
+        bitmask |= WRAP_PARTIAL_FLAG;
+      }
+      return createWrap(func, bitmask, thisArg, partials, holders);
+    });
+
+    /**
+     * Creates a function that invokes the method at `object[key]` with `partials`
+     * prepended to the arguments it receives.
+     *
+     * This method differs from `_.bind` by allowing bound functions to reference
+     * methods that may be redefined or don't yet exist. See
+     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
+     * for more details.
+     *
+     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
+     * builds, may be used as a placeholder for partially applied arguments.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.10.0
+     * @category Function
+     * @param {Object} object The object to invoke the method on.
+     * @param {string} key The key of the method.
+     * @param {...*} [partials] The arguments to be partially applied.
+     * @returns {Function} Returns the new bound function.
+     * @example
+     *
+     * var object = {
+     *   'user': 'fred',
+     *   'greet': function(greeting, punctuation) {
+     *     return greeting + ' ' + this.user + punctuation;
+     *   }
+     * };
+     *
+     * var bound = _.bindKey(object, 'greet', 'hi');
+     * bound('!');
+     * // => 'hi fred!'
+     *
+     * object.greet = function(greeting, punctuation) {
+     *   return greeting + 'ya ' + this.user + punctuation;
+     * };
+     *
+     * bound('!');
+     * // => 'hiya fred!'
+     *
+     * // Bound with placeholders.
+     * var bound = _.bindKey(object, 'greet', _, '!');
+     * bound('hi');
+     * // => 'hiya fred!'
+     */
+    var bindKey = baseRest(function(object, key, partials) {
+      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
+      if (partials.length) {
+        var holders = replaceHolders(partials, getHolder(bindKey));
+        bitmask |= WRAP_PARTIAL_FLAG;
+      }
+      return createWrap(key, bitmask, object, partials, holders);
+    });
+
+    /**
+     * Creates a function that accepts arguments of `func` and either invokes
+     * `func` returning its result, if at least `arity` number of arguments have
+     * been provided, or returns a function that accepts the remaining `func`
+     * arguments, and so on. The arity of `func` may be specified if `func.length`
+     * is not sufficient.
+     *
+     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
+     * may be used as a placeholder for provided arguments.
+     *
+     * **Note:** This method doesn't set the "length" property of curried functions.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.0.0
+     * @category Function
+     * @param {Function} func The function to curry.
+     * @param {number} [arity=func.length] The arity of `func`.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {Function} Returns the new curried function.
+     * @example
+     *
+     * var abc = function(a, b, c) {
+     *   return [a, b, c];
+     * };
+     *
+     * var curried = _.curry(abc);
+     *
+     * curried(1)(2)(3);
+     * // => [1, 2, 3]
+     *
+     * curried(1, 2)(3);
+     * // => [1, 2, 3]
+     *
+     * curried(1, 2, 3);
+     * // => [1, 2, 3]
+     *
+     * // Curried with placeholders.
+     * curried(1)(_, 3)(2);
+     * // => [1, 2, 3]
+     */
+    function curry(func, arity, guard) {
+      arity = guard ? undefined : arity;
+      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
+      result.placeholder = curry.placeholder;
+      return result;
+    }
+
+    /**
+     * This method is like `_.curry` except that arguments are applied to `func`
+     * in the manner of `_.partialRight` instead of `_.partial`.
+     *
+     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
+     * builds, may be used as a placeholder for provided arguments.
+     *
+     * **Note:** This method doesn't set the "length" property of curried functions.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Function
+     * @param {Function} func The function to curry.
+     * @param {number} [arity=func.length] The arity of `func`.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {Function} Returns the new curried function.
+     * @example
+     *
+     * var abc = function(a, b, c) {
+     *   return [a, b, c];
+     * };
+     *
+     * var curried = _.curryRight(abc);
+     *
+     * curried(3)(2)(1);
+     * // => [1, 2, 3]
+     *
+     * curried(2, 3)(1);
+     * // => [1, 2, 3]
+     *
+     * curried(1, 2, 3);
+     * // => [1, 2, 3]
+     *
+     * // Curried with placeholders.
+     * curried(3)(1, _)(2);
+     * // => [1, 2, 3]
+     */
+    function curryRight(func, arity, guard) {
+      arity = guard ? undefined : arity;
+      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
+      result.placeholder = curryRight.placeholder;
+      return result;
+    }
+
+    /**
+     * Creates a debounced function that delays invoking `func` until after `wait`
+     * milliseconds have elapsed since the last time the debounced function was
+     * invoked. The debounced function comes with a `cancel` method to cancel
+     * delayed `func` invocations and a `flush` method to immediately invoke them.
+     * Provide `options` to indicate whether `func` should be invoked on the
+     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
+     * with the last arguments provided to the debounced function. Subsequent
+     * calls to the debounced function return the result of the last `func`
+     * invocation.
+     *
+     * **Note:** If `leading` and `trailing` options are `true`, `func` is
+     * invoked on the trailing edge of the timeout only if the debounced function
+     * is invoked more than once during the `wait` timeout.
+     *
+     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
+     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
+     *
+     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
+     * for details over the differences between `_.debounce` and `_.throttle`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Function
+     * @param {Function} func The function to debounce.
+     * @param {number} [wait=0] The number of milliseconds to delay.
+     * @param {Object} [options={}] The options object.
+     * @param {boolean} [options.leading=false]
+     *  Specify invoking on the leading edge of the timeout.
+     * @param {number} [options.maxWait]
+     *  The maximum time `func` is allowed to be delayed before it's invoked.
+     * @param {boolean} [options.trailing=true]
+     *  Specify invoking on the trailing edge of the timeout.
+     * @returns {Function} Returns the new debounced function.
+     * @example
+     *
+     * // Avoid costly calculations while the window size is in flux.
+     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
+     *
+     * // Invoke `sendMail` when clicked, debouncing subsequent calls.
+     * jQuery(element).on('click', _.debounce(sendMail, 300, {
+     *   'leading': true,
+     *   'trailing': false
+     * }));
+     *
+     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
+     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
+     * var source = new EventSource('/stream');
+     * jQuery(source).on('message', debounced);
+     *
+     * // Cancel the trailing debounced invocation.
+     * jQuery(window).on('popstate', debounced.cancel);
+     */
+    function debounce(func, wait, options) {
+      var lastArgs,
+          lastThis,
+          maxWait,
+          result,
+          timerId,
+          lastCallTime,
+          lastInvokeTime = 0,
+          leading = false,
+          maxing = false,
+          trailing = true;
+
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      wait = toNumber(wait) || 0;
+      if (isObject(options)) {
+        leading = !!options.leading;
+        maxing = 'maxWait' in options;
+        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
+        trailing = 'trailing' in options ? !!options.trailing : trailing;
+      }
+
+      function invokeFunc(time) {
+        var args = lastArgs,
+            thisArg = lastThis;
+
+        lastArgs = lastThis = undefined;
+        lastInvokeTime = time;
+        result = func.apply(thisArg, args);
+        return result;
+      }
+
+      function leadingEdge(time) {
+        // Reset any `maxWait` timer.
+        lastInvokeTime = time;
+        // Start the timer for the trailing edge.
+        timerId = setTimeout(timerExpired, wait);
+        // Invoke the leading edge.
+        return leading ? invokeFunc(time) : result;
+      }
+
+      function remainingWait(time) {
+        var timeSinceLastCall = time - lastCallTime,
+            timeSinceLastInvoke = time - lastInvokeTime,
+            timeWaiting = wait - timeSinceLastCall;
+
+        return maxing
+          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
+          : timeWaiting;
+      }
+
+      function shouldInvoke(time) {
+        var timeSinceLastCall = time - lastCallTime,
+            timeSinceLastInvoke = time - lastInvokeTime;
+
+        // Either this is the first call, activity has stopped and we're at the
+        // trailing edge, the system time has gone backwards and we're treating
+        // it as the trailing edge, or we've hit the `maxWait` limit.
+        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
+          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
+      }
+
+      function timerExpired() {
+        var time = now();
+        if (shouldInvoke(time)) {
+          return trailingEdge(time);
+        }
+        // Restart the timer.
+        timerId = setTimeout(timerExpired, remainingWait(time));
+      }
+
+      function trailingEdge(time) {
+        timerId = undefined;
+
+        // Only invoke if we have `lastArgs` which means `func` has been
+        // debounced at least once.
+        if (trailing && lastArgs) {
+          return invokeFunc(time);
+        }
+        lastArgs = lastThis = undefined;
+        return result;
+      }
+
+      function cancel() {
+        if (timerId !== undefined) {
+          clearTimeout(timerId);
+        }
+        lastInvokeTime = 0;
+        lastArgs = lastCallTime = lastThis = timerId = undefined;
+      }
+
+      function flush() {
+        return timerId === undefined ? result : trailingEdge(now());
+      }
+
+      function debounced() {
+        var time = now(),
+            isInvoking = shouldInvoke(time);
+
+        lastArgs = arguments;
+        lastThis = this;
+        lastCallTime = time;
+
+        if (isInvoking) {
+          if (timerId === undefined) {
+            return leadingEdge(lastCallTime);
+          }
+          if (maxing) {
+            // Handle invocations in a tight loop.
+            clearTimeout(timerId);
+            timerId = setTimeout(timerExpired, wait);
+            return invokeFunc(lastCallTime);
+          }
+        }
+        if (timerId === undefined) {
+          timerId = setTimeout(timerExpired, wait);
+        }
+        return result;
+      }
+      debounced.cancel = cancel;
+      debounced.flush = flush;
+      return debounced;
+    }
+
+    /**
+     * Defers invoking the `func` until the current call stack has cleared. Any
+     * additional arguments are provided to `func` when it's invoked.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Function
+     * @param {Function} func The function to defer.
+     * @param {...*} [args] The arguments to invoke `func` with.
+     * @returns {number} Returns the timer id.
+     * @example
+     *
+     * _.defer(function(text) {
+     *   console.log(text);
+     * }, 'deferred');
+     * // => Logs 'deferred' after one millisecond.
+     */
+    var defer = baseRest(function(func, args) {
+      return baseDelay(func, 1, args);
+    });
+
+    /**
+     * Invokes `func` after `wait` milliseconds. Any additional arguments are
+     * provided to `func` when it's invoked.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Function
+     * @param {Function} func The function to delay.
+     * @param {number} wait The number of milliseconds to delay invocation.
+     * @param {...*} [args] The arguments to invoke `func` with.
+     * @returns {number} Returns the timer id.
+     * @example
+     *
+     * _.delay(function(text) {
+     *   console.log(text);
+     * }, 1000, 'later');
+     * // => Logs 'later' after one second.
+     */
+    var delay = baseRest(function(func, wait, args) {
+      return baseDelay(func, toNumber(wait) || 0, args);
+    });
+
+    /**
+     * Creates a function that invokes `func` with arguments reversed.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Function
+     * @param {Function} func The function to flip arguments for.
+     * @returns {Function} Returns the new flipped function.
+     * @example
+     *
+     * var flipped = _.flip(function() {
+     *   return _.toArray(arguments);
+     * });
+     *
+     * flipped('a', 'b', 'c', 'd');
+     * // => ['d', 'c', 'b', 'a']
+     */
+    function flip(func) {
+      return createWrap(func, WRAP_FLIP_FLAG);
+    }
+
+    /**
+     * Creates a function that memoizes the result of `func`. If `resolver` is
+     * provided, it determines the cache key for storing the result based on the
+     * arguments provided to the memoized function. By default, the first argument
+     * provided to the memoized function is used as the map cache key. The `func`
+     * is invoked with the `this` binding of the memoized function.
+     *
+     * **Note:** The cache is exposed as the `cache` property on the memoized
+     * function. Its creation may be customized by replacing the `_.memoize.Cache`
+     * constructor with one whose instances implement the
+     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
+     * method interface of `clear`, `delete`, `get`, `has`, and `set`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Function
+     * @param {Function} func The function to have its output memoized.
+     * @param {Function} [resolver] The function to resolve the cache key.
+     * @returns {Function} Returns the new memoized function.
+     * @example
+     *
+     * var object = { 'a': 1, 'b': 2 };
+     * var other = { 'c': 3, 'd': 4 };
+     *
+     * var values = _.memoize(_.values);
+     * values(object);
+     * // => [1, 2]
+     *
+     * values(other);
+     * // => [3, 4]
+     *
+     * object.a = 2;
+     * values(object);
+     * // => [1, 2]
+     *
+     * // Modify the result cache.
+     * values.cache.set(object, ['a', 'b']);
+     * values(object);
+     * // => ['a', 'b']
+     *
+     * // Replace `_.memoize.Cache`.
+     * _.memoize.Cache = WeakMap;
+     */
+    function memoize(func, resolver) {
+      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      var memoized = function() {
+        var args = arguments,
+            key = resolver ? resolver.apply(this, args) : args[0],
+            cache = memoized.cache;
+
+        if (cache.has(key)) {
+          return cache.get(key);
+        }
+        var result = func.apply(this, args);
+        memoized.cache = cache.set(key, result) || cache;
+        return result;
+      };
+      memoized.cache = new (memoize.Cache || MapCache);
+      return memoized;
+    }
+
+    // Expose `MapCache`.
+    memoize.Cache = MapCache;
+
+    /**
+     * Creates a function that negates the result of the predicate `func`. The
+     * `func` predicate is invoked with the `this` binding and arguments of the
+     * created function.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Function
+     * @param {Function} predicate The predicate to negate.
+     * @returns {Function} Returns the new negated function.
+     * @example
+     *
+     * function isEven(n) {
+     *   return n % 2 == 0;
+     * }
+     *
+     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
+     * // => [1, 3, 5]
+     */
+    function negate(predicate) {
+      if (typeof predicate != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      return function() {
+        var args = arguments;
+        switch (args.length) {
+          case 0: return !predicate.call(this);
+          case 1: return !predicate.call(this, args[0]);
+          case 2: return !predicate.call(this, args[0], args[1]);
+          case 3: return !predicate.call(this, args[0], args[1], args[2]);
+        }
+        return !predicate.apply(this, args);
+      };
+    }
+
+    /**
+     * Creates a function that is restricted to invoking `func` once. Repeat calls
+     * to the function return the value of the first invocation. The `func` is
+     * invoked with the `this` binding and arguments of the created function.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Function
+     * @param {Function} func The function to restrict.
+     * @returns {Function} Returns the new restricted function.
+     * @example
+     *
+     * var initialize = _.once(createApplication);
+     * initialize();
+     * initialize();
+     * // => `createApplication` is invoked once
+     */
+    function once(func) {
+      return before(2, func);
+    }
+
+    /**
+     * Creates a function that invokes `func` with its arguments transformed.
+     *
+     * @static
+     * @since 4.0.0
+     * @memberOf _
+     * @category Function
+     * @param {Function} func The function to wrap.
+     * @param {...(Function|Function[])} [transforms=[_.identity]]
+     *  The argument transforms.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * function doubled(n) {
+     *   return n * 2;
+     * }
+     *
+     * function square(n) {
+     *   return n * n;
+     * }
+     *
+     * var func = _.overArgs(function(x, y) {
+     *   return [x, y];
+     * }, [square, doubled]);
+     *
+     * func(9, 3);
+     * // => [81, 6]
+     *
+     * func(10, 5);
+     * // => [100, 10]
+     */
+    var overArgs = castRest(function(func, transforms) {
+      transforms = (transforms.length == 1 && isArray(transforms[0]))
+        ? arrayMap(transforms[0], baseUnary(getIteratee()))
+        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
+
+      var funcsLength = transforms.length;
+      return baseRest(function(args) {
+        var index = -1,
+            length = nativeMin(args.length, funcsLength);
+
+        while (++index < length) {
+          args[index] = transforms[index].call(this, args[index]);
+        }
+        return apply(func, this, args);
+      });
+    });
+
+    /**
+     * Creates a function that invokes `func` with `partials` prepended to the
+     * arguments it receives. This method is like `_.bind` except it does **not**
+     * alter the `this` binding.
+     *
+     * The `_.partial.placeholder` value, which defaults to `_` in monolithic
+     * builds, may be used as a placeholder for partially applied arguments.
+     *
+     * **Note:** This method doesn't set the "length" property of partially
+     * applied functions.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.2.0
+     * @category Function
+     * @param {Function} func The function to partially apply arguments to.
+     * @param {...*} [partials] The arguments to be partially applied.
+     * @returns {Function} Returns the new partially applied function.
+     * @example
+     *
+     * function greet(greeting, name) {
+     *   return greeting + ' ' + name;
+     * }
+     *
+     * var sayHelloTo = _.partial(greet, 'hello');
+     * sayHelloTo('fred');
+     * // => 'hello fred'
+     *
+     * // Partially applied with placeholders.
+     * var greetFred = _.partial(greet, _, 'fred');
+     * greetFred('hi');
+     * // => 'hi fred'
+     */
+    var partial = baseRest(function(func, partials) {
+      var holders = replaceHolders(partials, getHolder(partial));
+      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
+    });
+
+    /**
+     * This method is like `_.partial` except that partially applied arguments
+     * are appended to the arguments it receives.
+     *
+     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
+     * builds, may be used as a placeholder for partially applied arguments.
+     *
+     * **Note:** This method doesn't set the "length" property of partially
+     * applied functions.
+     *
+     * @static
+     * @memberOf _
+     * @since 1.0.0
+     * @category Function
+     * @param {Function} func The function to partially apply arguments to.
+     * @param {...*} [partials] The arguments to be partially applied.
+     * @returns {Function} Returns the new partially applied function.
+     * @example
+     *
+     * function greet(greeting, name) {
+     *   return greeting + ' ' + name;
+     * }
+     *
+     * var greetFred = _.partialRight(greet, 'fred');
+     * greetFred('hi');
+     * // => 'hi fred'
+     *
+     * // Partially applied with placeholders.
+     * var sayHelloTo = _.partialRight(greet, 'hello', _);
+     * sayHelloTo('fred');
+     * // => 'hello fred'
+     */
+    var partialRight = baseRest(function(func, partials) {
+      var holders = replaceHolders(partials, getHolder(partialRight));
+      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
+    });
+
+    /**
+     * Creates a function that invokes `func` with arguments arranged according
+     * to the specified `indexes` where the argument value at the first index is
+     * provided as the first argument, the argument value at the second index is
+     * provided as the second argument, and so on.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Function
+     * @param {Function} func The function to rearrange arguments for.
+     * @param {...(number|number[])} indexes The arranged argument indexes.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var rearged = _.rearg(function(a, b, c) {
+     *   return [a, b, c];
+     * }, [2, 0, 1]);
+     *
+     * rearged('b', 'c', 'a')
+     * // => ['a', 'b', 'c']
+     */
+    var rearg = flatRest(function(func, indexes) {
+      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
+    });
+
+    /**
+     * Creates a function that invokes `func` with the `this` binding of the
+     * created function and arguments from `start` and beyond provided as
+     * an array.
+     *
+     * **Note:** This method is based on the
+     * [rest parameter](https://mdn.io/rest_parameters).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Function
+     * @param {Function} func The function to apply a rest parameter to.
+     * @param {number} [start=func.length-1] The start position of the rest parameter.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var say = _.rest(function(what, names) {
+     *   return what + ' ' + _.initial(names).join(', ') +
+     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
+     * });
+     *
+     * say('hello', 'fred', 'barney', 'pebbles');
+     * // => 'hello fred, barney, & pebbles'
+     */
+    function rest(func, start) {
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      start = start === undefined ? start : toInteger(start);
+      return baseRest(func, start);
+    }
+
+    /**
+     * Creates a function that invokes `func` with the `this` binding of the
+     * create function and an array of arguments much like
+     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
+     *
+     * **Note:** This method is based on the
+     * [spread operator](https://mdn.io/spread_operator).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.2.0
+     * @category Function
+     * @param {Function} func The function to spread arguments over.
+     * @param {number} [start=0] The start position of the spread.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var say = _.spread(function(who, what) {
+     *   return who + ' says ' + what;
+     * });
+     *
+     * say(['fred', 'hello']);
+     * // => 'fred says hello'
+     *
+     * var numbers = Promise.all([
+     *   Promise.resolve(40),
+     *   Promise.resolve(36)
+     * ]);
+     *
+     * numbers.then(_.spread(function(x, y) {
+     *   return x + y;
+     * }));
+     * // => a Promise of 76
+     */
+    function spread(func, start) {
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      start = start == null ? 0 : nativeMax(toInteger(start), 0);
+      return baseRest(function(args) {
+        var array = args[start],
+            otherArgs = castSlice(args, 0, start);
+
+        if (array) {
+          arrayPush(otherArgs, array);
+        }
+        return apply(func, this, otherArgs);
+      });
+    }
+
+    /**
+     * Creates a throttled function that only invokes `func` at most once per
+     * every `wait` milliseconds. The throttled function comes with a `cancel`
+     * method to cancel delayed `func` invocations and a `flush` method to
+     * immediately invoke them. Provide `options` to indicate whether `func`
+     * should be invoked on the leading and/or trailing edge of the `wait`
+     * timeout. The `func` is invoked with the last arguments provided to the
+     * throttled function. Subsequent calls to the throttled function return the
+     * result of the last `func` invocation.
+     *
+     * **Note:** If `leading` and `trailing` options are `true`, `func` is
+     * invoked on the trailing edge of the timeout only if the throttled function
+     * is invoked more than once during the `wait` timeout.
+     *
+     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
+     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
+     *
+     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
+     * for details over the differences between `_.throttle` and `_.debounce`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Function
+     * @param {Function} func The function to throttle.
+     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
+     * @param {Object} [options={}] The options object.
+     * @param {boolean} [options.leading=true]
+     *  Specify invoking on the leading edge of the timeout.
+     * @param {boolean} [options.trailing=true]
+     *  Specify invoking on the trailing edge of the timeout.
+     * @returns {Function} Returns the new throttled function.
+     * @example
+     *
+     * // Avoid excessively updating the position while scrolling.
+     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
+     *
+     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
+     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
+     * jQuery(element).on('click', throttled);
+     *
+     * // Cancel the trailing throttled invocation.
+     * jQuery(window).on('popstate', throttled.cancel);
+     */
+    function throttle(func, wait, options) {
+      var leading = true,
+          trailing = true;
+
+      if (typeof func != 'function') {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      if (isObject(options)) {
+        leading = 'leading' in options ? !!options.leading : leading;
+        trailing = 'trailing' in options ? !!options.trailing : trailing;
+      }
+      return debounce(func, wait, {
+        'leading': leading,
+        'maxWait': wait,
+        'trailing': trailing
+      });
+    }
+
+    /**
+     * Creates a function that accepts up to one argument, ignoring any
+     * additional arguments.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Function
+     * @param {Function} func The function to cap arguments for.
+     * @returns {Function} Returns the new capped function.
+     * @example
+     *
+     * _.map(['6', '8', '10'], _.unary(parseInt));
+     * // => [6, 8, 10]
+     */
+    function unary(func) {
+      return ary(func, 1);
+    }
+
+    /**
+     * Creates a function that provides `value` to `wrapper` as its first
+     * argument. Any additional arguments provided to the function are appended
+     * to those provided to the `wrapper`. The wrapper is invoked with the `this`
+     * binding of the created function.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Function
+     * @param {*} value The value to wrap.
+     * @param {Function} [wrapper=identity] The wrapper function.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var p = _.wrap(_.escape, function(func, text) {
+     *   return '<p>' + func(text) + '</p>';
+     * });
+     *
+     * p('fred, barney, & pebbles');
+     * // => '<p>fred, barney, &amp; pebbles</p>'
+     */
+    function wrap(value, wrapper) {
+      return partial(castFunction(wrapper), value);
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Casts `value` as an array if it's not one.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.4.0
+     * @category Lang
+     * @param {*} value The value to inspect.
+     * @returns {Array} Returns the cast array.
+     * @example
+     *
+     * _.castArray(1);
+     * // => [1]
+     *
+     * _.castArray({ 'a': 1 });
+     * // => [{ 'a': 1 }]
+     *
+     * _.castArray('abc');
+     * // => ['abc']
+     *
+     * _.castArray(null);
+     * // => [null]
+     *
+     * _.castArray(undefined);
+     * // => [undefined]
+     *
+     * _.castArray();
+     * // => []
+     *
+     * var array = [1, 2, 3];
+     * console.log(_.castArray(array) === array);
+     * // => true
+     */
+    function castArray() {
+      if (!arguments.length) {
+        return [];
+      }
+      var value = arguments[0];
+      return isArray(value) ? value : [value];
+    }
+
+    /**
+     * Creates a shallow clone of `value`.
+     *
+     * **Note:** This method is loosely based on the
+     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
+     * and supports cloning arrays, array buffers, booleans, date objects, maps,
+     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
+     * arrays. The own enumerable properties of `arguments` objects are cloned
+     * as plain objects. An empty object is returned for uncloneable values such
+     * as error objects, functions, DOM nodes, and WeakMaps.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to clone.
+     * @returns {*} Returns the cloned value.
+     * @see _.cloneDeep
+     * @example
+     *
+     * var objects = [{ 'a': 1 }, { 'b': 2 }];
+     *
+     * var shallow = _.clone(objects);
+     * console.log(shallow[0] === objects[0]);
+     * // => true
+     */
+    function clone(value) {
+      return baseClone(value, CLONE_SYMBOLS_FLAG);
+    }
+
+    /**
+     * This method is like `_.clone` except that it accepts `customizer` which
+     * is invoked to produce the cloned value. If `customizer` returns `undefined`,
+     * cloning is handled by the method instead. The `customizer` is invoked with
+     * up to four arguments; (value [, index|key, object, stack]).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to clone.
+     * @param {Function} [customizer] The function to customize cloning.
+     * @returns {*} Returns the cloned value.
+     * @see _.cloneDeepWith
+     * @example
+     *
+     * function customizer(value) {
+     *   if (_.isElement(value)) {
+     *     return value.cloneNode(false);
+     *   }
+     * }
+     *
+     * var el = _.cloneWith(document.body, customizer);
+     *
+     * console.log(el === document.body);
+     * // => false
+     * console.log(el.nodeName);
+     * // => 'BODY'
+     * console.log(el.childNodes.length);
+     * // => 0
+     */
+    function cloneWith(value, customizer) {
+      customizer = typeof customizer == 'function' ? customizer : undefined;
+      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
+    }
+
+    /**
+     * This method is like `_.clone` except that it recursively clones `value`.
+     *
+     * @static
+     * @memberOf _
+     * @since 1.0.0
+     * @category Lang
+     * @param {*} value The value to recursively clone.
+     * @returns {*} Returns the deep cloned value.
+     * @see _.clone
+     * @example
+     *
+     * var objects = [{ 'a': 1 }, { 'b': 2 }];
+     *
+     * var deep = _.cloneDeep(objects);
+     * console.log(deep[0] === objects[0]);
+     * // => false
+     */
+    function cloneDeep(value) {
+      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
+    }
+
+    /**
+     * This method is like `_.cloneWith` except that it recursively clones `value`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to recursively clone.
+     * @param {Function} [customizer] The function to customize cloning.
+     * @returns {*} Returns the deep cloned value.
+     * @see _.cloneWith
+     * @example
+     *
+     * function customizer(value) {
+     *   if (_.isElement(value)) {
+     *     return value.cloneNode(true);
+     *   }
+     * }
+     *
+     * var el = _.cloneDeepWith(document.body, customizer);
+     *
+     * console.log(el === document.body);
+     * // => false
+     * console.log(el.nodeName);
+     * // => 'BODY'
+     * console.log(el.childNodes.length);
+     * // => 20
+     */
+    function cloneDeepWith(value, customizer) {
+      customizer = typeof customizer == 'function' ? customizer : undefined;
+      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
+    }
+
+    /**
+     * Checks if `object` conforms to `source` by invoking the predicate
+     * properties of `source` with the corresponding property values of `object`.
+     *
+     * **Note:** This method is equivalent to `_.conforms` when `source` is
+     * partially applied.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.14.0
+     * @category Lang
+     * @param {Object} object The object to inspect.
+     * @param {Object} source The object of property predicates to conform to.
+     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
+     * @example
+     *
+     * var object = { 'a': 1, 'b': 2 };
+     *
+     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
+     * // => true
+     *
+     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
+     * // => false
+     */
+    function conformsTo(object, source) {
+      return source == null || baseConformsTo(object, source, keys(source));
+    }
+
+    /**
+     * Performs a
+     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+     * comparison between two values to determine if they are equivalent.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+     * @example
+     *
+     * var object = { 'a': 1 };
+     * var other = { 'a': 1 };
+     *
+     * _.eq(object, object);
+     * // => true
+     *
+     * _.eq(object, other);
+     * // => false
+     *
+     * _.eq('a', 'a');
+     * // => true
+     *
+     * _.eq('a', Object('a'));
+     * // => false
+     *
+     * _.eq(NaN, NaN);
+     * // => true
+     */
+    function eq(value, other) {
+      return value === other || (value !== value && other !== other);
+    }
+
+    /**
+     * Checks if `value` is greater than `other`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.9.0
+     * @category Lang
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @returns {boolean} Returns `true` if `value` is greater than `other`,
+     *  else `false`.
+     * @see _.lt
+     * @example
+     *
+     * _.gt(3, 1);
+     * // => true
+     *
+     * _.gt(3, 3);
+     * // => false
+     *
+     * _.gt(1, 3);
+     * // => false
+     */
+    var gt = createRelationalOperation(baseGt);
+
+    /**
+     * Checks if `value` is greater than or equal to `other`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.9.0
+     * @category Lang
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @returns {boolean} Returns `true` if `value` is greater than or equal to
+     *  `other`, else `false`.
+     * @see _.lte
+     * @example
+     *
+     * _.gte(3, 1);
+     * // => true
+     *
+     * _.gte(3, 3);
+     * // => true
+     *
+     * _.gte(1, 3);
+     * // => false
+     */
+    var gte = createRelationalOperation(function(value, other) {
+      return value >= other;
+    });
+
+    /**
+     * Checks if `value` is likely an `arguments` object.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
+     *  else `false`.
+     * @example
+     *
+     * _.isArguments(function() { return arguments; }());
+     * // => true
+     *
+     * _.isArguments([1, 2, 3]);
+     * // => false
+     */
+    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
+      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
+        !propertyIsEnumerable.call(value, 'callee');
+    };
+
+    /**
+     * Checks if `value` is classified as an `Array` object.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is an array, else `false`.
+     * @example
+     *
+     * _.isArray([1, 2, 3]);
+     * // => true
+     *
+     * _.isArray(document.body.children);
+     * // => false
+     *
+     * _.isArray('abc');
+     * // => false
+     *
+     * _.isArray(_.noop);
+     * // => false
+     */
+    var isArray = Array.isArray;
+
+    /**
+     * Checks if `value` is classified as an `ArrayBuffer` object.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.3.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
+     * @example
+     *
+     * _.isArrayBuffer(new ArrayBuffer(2));
+     * // => true
+     *
+     * _.isArrayBuffer(new Array(2));
+     * // => false
+     */
+    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
+
+    /**
+     * Checks if `value` is array-like. A value is considered array-like if it's
+     * not a function and has a `value.length` that's an integer greater than or
+     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
+     * @example
+     *
+     * _.isArrayLike([1, 2, 3]);
+     * // => true
+     *
+     * _.isArrayLike(document.body.children);
+     * // => true
+     *
+     * _.isArrayLike('abc');
+     * // => true
+     *
+     * _.isArrayLike(_.noop);
+     * // => false
+     */
+    function isArrayLike(value) {
+      return value != null && isLength(value.length) && !isFunction(value);
+    }
+
+    /**
+     * This method is like `_.isArrayLike` except that it also checks if `value`
+     * is an object.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is an array-like object,
+     *  else `false`.
+     * @example
+     *
+     * _.isArrayLikeObject([1, 2, 3]);
+     * // => true
+     *
+     * _.isArrayLikeObject(document.body.children);
+     * // => true
+     *
+     * _.isArrayLikeObject('abc');
+     * // => false
+     *
+     * _.isArrayLikeObject(_.noop);
+     * // => false
+     */
+    function isArrayLikeObject(value) {
+      return isObjectLike(value) && isArrayLike(value);
+    }
+
+    /**
+     * Checks if `value` is classified as a boolean primitive or object.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
+     * @example
+     *
+     * _.isBoolean(false);
+     * // => true
+     *
+     * _.isBoolean(null);
+     * // => false
+     */
+    function isBoolean(value) {
+      return value === true || value === false ||
+        (isObjectLike(value) && baseGetTag(value) == boolTag);
+    }
+
+    /**
+     * Checks if `value` is a buffer.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.3.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
+     * @example
+     *
+     * _.isBuffer(new Buffer(2));
+     * // => true
+     *
+     * _.isBuffer(new Uint8Array(2));
+     * // => false
+     */
+    var isBuffer = nativeIsBuffer || stubFalse;
+
+    /**
+     * Checks if `value` is classified as a `Date` object.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
+     * @example
+     *
+     * _.isDate(new Date);
+     * // => true
+     *
+     * _.isDate('Mon April 23 2012');
+     * // => false
+     */
+    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
+
+    /**
+     * Checks if `value` is likely a DOM element.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
+     * @example
+     *
+     * _.isElement(document.body);
+     * // => true
+     *
+     * _.isElement('<body>');
+     * // => false
+     */
+    function isElement(value) {
+      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
+    }
+
+    /**
+     * Checks if `value` is an empty object, collection, map, or set.
+     *
+     * Objects are considered empty if they have no own enumerable string keyed
+     * properties.
+     *
+     * Array-like values such as `arguments` objects, arrays, buffers, strings, or
+     * jQuery-like collections are considered empty if they have a `length` of `0`.
+     * Similarly, maps and sets are considered empty if they have a `size` of `0`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is empty, else `false`.
+     * @example
+     *
+     * _.isEmpty(null);
+     * // => true
+     *
+     * _.isEmpty(true);
+     * // => true
+     *
+     * _.isEmpty(1);
+     * // => true
+     *
+     * _.isEmpty([1, 2, 3]);
+     * // => false
+     *
+     * _.isEmpty({ 'a': 1 });
+     * // => false
+     */
+    function isEmpty(value) {
+      if (value == null) {
+        return true;
+      }
+      if (isArrayLike(value) &&
+          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
+            isBuffer(value) || isTypedArray(value) || isArguments(value))) {
+        return !value.length;
+      }
+      var tag = getTag(value);
+      if (tag == mapTag || tag == setTag) {
+        return !value.size;
+      }
+      if (isPrototype(value)) {
+        return !baseKeys(value).length;
+      }
+      for (var key in value) {
+        if (hasOwnProperty.call(value, key)) {
+          return false;
+        }
+      }
+      return true;
+    }
+
+    /**
+     * Performs a deep comparison between two values to determine if they are
+     * equivalent.
+     *
+     * **Note:** This method supports comparing arrays, array buffers, booleans,
+     * date objects, error objects, maps, numbers, `Object` objects, regexes,
+     * sets, strings, symbols, and typed arrays. `Object` objects are compared
+     * by their own, not inherited, enumerable properties. Functions and DOM
+     * nodes are compared by strict equality, i.e. `===`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+     * @example
+     *
+     * var object = { 'a': 1 };
+     * var other = { 'a': 1 };
+     *
+     * _.isEqual(object, other);
+     * // => true
+     *
+     * object === other;
+     * // => false
+     */
+    function isEqual(value, other) {
+      return baseIsEqual(value, other);
+    }
+
+    /**
+     * This method is like `_.isEqual` except that it accepts `customizer` which
+     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
+     * are handled by the method instead. The `customizer` is invoked with up to
+     * six arguments: (objValue, othValue [, index|key, object, other, stack]).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @param {Function} [customizer] The function to customize comparisons.
+     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+     * @example
+     *
+     * function isGreeting(value) {
+     *   return /^h(?:i|ello)$/.test(value);
+     * }
+     *
+     * function customizer(objValue, othValue) {
+     *   if (isGreeting(objValue) && isGreeting(othValue)) {
+     *     return true;
+     *   }
+     * }
+     *
+     * var array = ['hello', 'goodbye'];
+     * var other = ['hi', 'goodbye'];
+     *
+     * _.isEqualWith(array, other, customizer);
+     * // => true
+     */
+    function isEqualWith(value, other, customizer) {
+      customizer = typeof customizer == 'function' ? customizer : undefined;
+      var result = customizer ? customizer(value, other) : undefined;
+      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
+    }
+
+    /**
+     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
+     * `SyntaxError`, `TypeError`, or `URIError` object.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
+     * @example
+     *
+     * _.isError(new Error);
+     * // => true
+     *
+     * _.isError(Error);
+     * // => false
+     */
+    function isError(value) {
+      if (!isObjectLike(value)) {
+        return false;
+      }
+      var tag = baseGetTag(value);
+      return tag == errorTag || tag == domExcTag ||
+        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
+    }
+
+    /**
+     * Checks if `value` is a finite primitive number.
+     *
+     * **Note:** This method is based on
+     * [`Number.isFinite`](https://mdn.io/Number/isFinite).
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
+     * @example
+     *
+     * _.isFinite(3);
+     * // => true
+     *
+     * _.isFinite(Number.MIN_VALUE);
+     * // => true
+     *
+     * _.isFinite(Infinity);
+     * // => false
+     *
+     * _.isFinite('3');
+     * // => false
+     */
+    function isFinite(value) {
+      return typeof value == 'number' && nativeIsFinite(value);
+    }
+
+    /**
+     * Checks if `value` is classified as a `Function` object.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a function, else `false`.
+     * @example
+     *
+     * _.isFunction(_);
+     * // => true
+     *
+     * _.isFunction(/abc/);
+     * // => false
+     */
+    function isFunction(value) {
+      if (!isObject(value)) {
+        return false;
+      }
+      // The use of `Object#toString` avoids issues with the `typeof` operator
+      // in Safari 9 which returns 'object' for typed arrays and other constructors.
+      var tag = baseGetTag(value);
+      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
+    }
+
+    /**
+     * Checks if `value` is an integer.
+     *
+     * **Note:** This method is based on
+     * [`Number.isInteger`](https://mdn.io/Number/isInteger).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
+     * @example
+     *
+     * _.isInteger(3);
+     * // => true
+     *
+     * _.isInteger(Number.MIN_VALUE);
+     * // => false
+     *
+     * _.isInteger(Infinity);
+     * // => false
+     *
+     * _.isInteger('3');
+     * // => false
+     */
+    function isInteger(value) {
+      return typeof value == 'number' && value == toInteger(value);
+    }
+
+    /**
+     * Checks if `value` is a valid array-like length.
+     *
+     * **Note:** This method is loosely based on
+     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+     * @example
+     *
+     * _.isLength(3);
+     * // => true
+     *
+     * _.isLength(Number.MIN_VALUE);
+     * // => false
+     *
+     * _.isLength(Infinity);
+     * // => false
+     *
+     * _.isLength('3');
+     * // => false
+     */
+    function isLength(value) {
+      return typeof value == 'number' &&
+        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+    }
+
+    /**
+     * Checks if `value` is the
+     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+     * @example
+     *
+     * _.isObject({});
+     * // => true
+     *
+     * _.isObject([1, 2, 3]);
+     * // => true
+     *
+     * _.isObject(_.noop);
+     * // => true
+     *
+     * _.isObject(null);
+     * // => false
+     */
+    function isObject(value) {
+      var type = typeof value;
+      return value != null && (type == 'object' || type == 'function');
+    }
+
+    /**
+     * Checks if `value` is object-like. A value is object-like if it's not `null`
+     * and has a `typeof` result of "object".
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+     * @example
+     *
+     * _.isObjectLike({});
+     * // => true
+     *
+     * _.isObjectLike([1, 2, 3]);
+     * // => true
+     *
+     * _.isObjectLike(_.noop);
+     * // => false
+     *
+     * _.isObjectLike(null);
+     * // => false
+     */
+    function isObjectLike(value) {
+      return value != null && typeof value == 'object';
+    }
+
+    /**
+     * Checks if `value` is classified as a `Map` object.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.3.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
+     * @example
+     *
+     * _.isMap(new Map);
+     * // => true
+     *
+     * _.isMap(new WeakMap);
+     * // => false
+     */
+    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
+
+    /**
+     * Performs a partial deep comparison between `object` and `source` to
+     * determine if `object` contains equivalent property values.
+     *
+     * **Note:** This method is equivalent to `_.matches` when `source` is
+     * partially applied.
+     *
+     * Partial comparisons will match empty array and empty object `source`
+     * values against any array or object value, respectively. See `_.isEqual`
+     * for a list of supported value comparisons.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Lang
+     * @param {Object} object The object to inspect.
+     * @param {Object} source The object of property values to match.
+     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
+     * @example
+     *
+     * var object = { 'a': 1, 'b': 2 };
+     *
+     * _.isMatch(object, { 'b': 2 });
+     * // => true
+     *
+     * _.isMatch(object, { 'b': 1 });
+     * // => false
+     */
+    function isMatch(object, source) {
+      return object === source || baseIsMatch(object, source, getMatchData(source));
+    }
+
+    /**
+     * This method is like `_.isMatch` except that it accepts `customizer` which
+     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
+     * are handled by the method instead. The `customizer` is invoked with five
+     * arguments: (objValue, srcValue, index|key, object, source).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {Object} object The object to inspect.
+     * @param {Object} source The object of property values to match.
+     * @param {Function} [customizer] The function to customize comparisons.
+     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
+     * @example
+     *
+     * function isGreeting(value) {
+     *   return /^h(?:i|ello)$/.test(value);
+     * }
+     *
+     * function customizer(objValue, srcValue) {
+     *   if (isGreeting(objValue) && isGreeting(srcValue)) {
+     *     return true;
+     *   }
+     * }
+     *
+     * var object = { 'greeting': 'hello' };
+     * var source = { 'greeting': 'hi' };
+     *
+     * _.isMatchWith(object, source, customizer);
+     * // => true
+     */
+    function isMatchWith(object, source, customizer) {
+      customizer = typeof customizer == 'function' ? customizer : undefined;
+      return baseIsMatch(object, source, getMatchData(source), customizer);
+    }
+
+    /**
+     * Checks if `value` is `NaN`.
+     *
+     * **Note:** This method is based on
+     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
+     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
+     * `undefined` and other non-number values.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
+     * @example
+     *
+     * _.isNaN(NaN);
+     * // => true
+     *
+     * _.isNaN(new Number(NaN));
+     * // => true
+     *
+     * isNaN(undefined);
+     * // => true
+     *
+     * _.isNaN(undefined);
+     * // => false
+     */
+    function isNaN(value) {
+      // An `NaN` primitive is the only value that is not equal to itself.
+      // Perform the `toStringTag` check first to avoid errors with some
+      // ActiveX objects in IE.
+      return isNumber(value) && value != +value;
+    }
+
+    /**
+     * Checks if `value` is a pristine native function.
+     *
+     * **Note:** This method can't reliably detect native functions in the presence
+     * of the core-js package because core-js circumvents this kind of detection.
+     * Despite multiple requests, the core-js maintainer has made it clear: any
+     * attempt to fix the detection will be obstructed. As a result, we're left
+     * with little choice but to throw an error. Unfortunately, this also affects
+     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
+     * which rely on core-js.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a native function,
+     *  else `false`.
+     * @example
+     *
+     * _.isNative(Array.prototype.push);
+     * // => true
+     *
+     * _.isNative(_);
+     * // => false
+     */
+    function isNative(value) {
+      if (isMaskable(value)) {
+        throw new Error(CORE_ERROR_TEXT);
+      }
+      return baseIsNative(value);
+    }
+
+    /**
+     * Checks if `value` is `null`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
+     * @example
+     *
+     * _.isNull(null);
+     * // => true
+     *
+     * _.isNull(void 0);
+     * // => false
+     */
+    function isNull(value) {
+      return value === null;
+    }
+
+    /**
+     * Checks if `value` is `null` or `undefined`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
+     * @example
+     *
+     * _.isNil(null);
+     * // => true
+     *
+     * _.isNil(void 0);
+     * // => true
+     *
+     * _.isNil(NaN);
+     * // => false
+     */
+    function isNil(value) {
+      return value == null;
+    }
+
+    /**
+     * Checks if `value` is classified as a `Number` primitive or object.
+     *
+     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
+     * classified as numbers, use the `_.isFinite` method.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a number, else `false`.
+     * @example
+     *
+     * _.isNumber(3);
+     * // => true
+     *
+     * _.isNumber(Number.MIN_VALUE);
+     * // => true
+     *
+     * _.isNumber(Infinity);
+     * // => true
+     *
+     * _.isNumber('3');
+     * // => false
+     */
+    function isNumber(value) {
+      return typeof value == 'number' ||
+        (isObjectLike(value) && baseGetTag(value) == numberTag);
+    }
+
+    /**
+     * Checks if `value` is a plain object, that is, an object created by the
+     * `Object` constructor or one with a `[[Prototype]]` of `null`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.8.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     * }
+     *
+     * _.isPlainObject(new Foo);
+     * // => false
+     *
+     * _.isPlainObject([1, 2, 3]);
+     * // => false
+     *
+     * _.isPlainObject({ 'x': 0, 'y': 0 });
+     * // => true
+     *
+     * _.isPlainObject(Object.create(null));
+     * // => true
+     */
+    function isPlainObject(value) {
+      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
+        return false;
+      }
+      var proto = getPrototype(value);
+      if (proto === null) {
+        return true;
+      }
+      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
+      return typeof Ctor == 'function' && Ctor instanceof Ctor &&
+        funcToString.call(Ctor) == objectCtorString;
+    }
+
+    /**
+     * Checks if `value` is classified as a `RegExp` object.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.1.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
+     * @example
+     *
+     * _.isRegExp(/abc/);
+     * // => true
+     *
+     * _.isRegExp('/abc/');
+     * // => false
+     */
+    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
+
+    /**
+     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
+     * double precision number which isn't the result of a rounded unsafe integer.
+     *
+     * **Note:** This method is based on
+     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
+     * @example
+     *
+     * _.isSafeInteger(3);
+     * // => true
+     *
+     * _.isSafeInteger(Number.MIN_VALUE);
+     * // => false
+     *
+     * _.isSafeInteger(Infinity);
+     * // => false
+     *
+     * _.isSafeInteger('3');
+     * // => false
+     */
+    function isSafeInteger(value) {
+      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
+    }
+
+    /**
+     * Checks if `value` is classified as a `Set` object.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.3.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
+     * @example
+     *
+     * _.isSet(new Set);
+     * // => true
+     *
+     * _.isSet(new WeakSet);
+     * // => false
+     */
+    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
+
+    /**
+     * Checks if `value` is classified as a `String` primitive or object.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a string, else `false`.
+     * @example
+     *
+     * _.isString('abc');
+     * // => true
+     *
+     * _.isString(1);
+     * // => false
+     */
+    function isString(value) {
+      return typeof value == 'string' ||
+        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
+    }
+
+    /**
+     * Checks if `value` is classified as a `Symbol` primitive or object.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
+     * @example
+     *
+     * _.isSymbol(Symbol.iterator);
+     * // => true
+     *
+     * _.isSymbol('abc');
+     * // => false
+     */
+    function isSymbol(value) {
+      return typeof value == 'symbol' ||
+        (isObjectLike(value) && baseGetTag(value) == symbolTag);
+    }
+
+    /**
+     * Checks if `value` is classified as a typed array.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
+     * @example
+     *
+     * _.isTypedArray(new Uint8Array);
+     * // => true
+     *
+     * _.isTypedArray([]);
+     * // => false
+     */
+    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
+
+    /**
+     * Checks if `value` is `undefined`.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
+     * @example
+     *
+     * _.isUndefined(void 0);
+     * // => true
+     *
+     * _.isUndefined(null);
+     * // => false
+     */
+    function isUndefined(value) {
+      return value === undefined;
+    }
+
+    /**
+     * Checks if `value` is classified as a `WeakMap` object.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.3.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
+     * @example
+     *
+     * _.isWeakMap(new WeakMap);
+     * // => true
+     *
+     * _.isWeakMap(new Map);
+     * // => false
+     */
+    function isWeakMap(value) {
+      return isObjectLike(value) && getTag(value) == weakMapTag;
+    }
+
+    /**
+     * Checks if `value` is classified as a `WeakSet` object.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.3.0
+     * @category Lang
+     * @param {*} value The value to check.
+     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
+     * @example
+     *
+     * _.isWeakSet(new WeakSet);
+     * // => true
+     *
+     * _.isWeakSet(new Set);
+     * // => false
+     */
+    function isWeakSet(value) {
+      return isObjectLike(value) && baseGetTag(value) == weakSetTag;
+    }
+
+    /**
+     * Checks if `value` is less than `other`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.9.0
+     * @category Lang
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @returns {boolean} Returns `true` if `value` is less than `other`,
+     *  else `false`.
+     * @see _.gt
+     * @example
+     *
+     * _.lt(1, 3);
+     * // => true
+     *
+     * _.lt(3, 3);
+     * // => false
+     *
+     * _.lt(3, 1);
+     * // => false
+     */
+    var lt = createRelationalOperation(baseLt);
+
+    /**
+     * Checks if `value` is less than or equal to `other`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.9.0
+     * @category Lang
+     * @param {*} value The value to compare.
+     * @param {*} other The other value to compare.
+     * @returns {boolean} Returns `true` if `value` is less than or equal to
+     *  `other`, else `false`.
+     * @see _.gte
+     * @example
+     *
+     * _.lte(1, 3);
+     * // => true
+     *
+     * _.lte(3, 3);
+     * // => true
+     *
+     * _.lte(3, 1);
+     * // => false
+     */
+    var lte = createRelationalOperation(function(value, other) {
+      return value <= other;
+    });
+
+    /**
+     * Converts `value` to an array.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Lang
+     * @param {*} value The value to convert.
+     * @returns {Array} Returns the converted array.
+     * @example
+     *
+     * _.toArray({ 'a': 1, 'b': 2 });
+     * // => [1, 2]
+     *
+     * _.toArray('abc');
+     * // => ['a', 'b', 'c']
+     *
+     * _.toArray(1);
+     * // => []
+     *
+     * _.toArray(null);
+     * // => []
+     */
+    function toArray(value) {
+      if (!value) {
+        return [];
+      }
+      if (isArrayLike(value)) {
+        return isString(value) ? stringToArray(value) : copyArray(value);
+      }
+      if (symIterator && value[symIterator]) {
+        return iteratorToArray(value[symIterator]());
+      }
+      var tag = getTag(value),
+          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
+
+      return func(value);
+    }
+
+    /**
+     * Converts `value` to a finite number.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.12.0
+     * @category Lang
+     * @param {*} value The value to convert.
+     * @returns {number} Returns the converted number.
+     * @example
+     *
+     * _.toFinite(3.2);
+     * // => 3.2
+     *
+     * _.toFinite(Number.MIN_VALUE);
+     * // => 5e-324
+     *
+     * _.toFinite(Infinity);
+     * // => 1.7976931348623157e+308
+     *
+     * _.toFinite('3.2');
+     * // => 3.2
+     */
+    function toFinite(value) {
+      if (!value) {
+        return value === 0 ? value : 0;
+      }
+      value = toNumber(value);
+      if (value === INFINITY || value === -INFINITY) {
+        var sign = (value < 0 ? -1 : 1);
+        return sign * MAX_INTEGER;
+      }
+      return value === value ? value : 0;
+    }
+
+    /**
+     * Converts `value` to an integer.
+     *
+     * **Note:** This method is loosely based on
+     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to convert.
+     * @returns {number} Returns the converted integer.
+     * @example
+     *
+     * _.toInteger(3.2);
+     * // => 3
+     *
+     * _.toInteger(Number.MIN_VALUE);
+     * // => 0
+     *
+     * _.toInteger(Infinity);
+     * // => 1.7976931348623157e+308
+     *
+     * _.toInteger('3.2');
+     * // => 3
+     */
+    function toInteger(value) {
+      var result = toFinite(value),
+          remainder = result % 1;
+
+      return result === result ? (remainder ? result - remainder : result) : 0;
+    }
+
+    /**
+     * Converts `value` to an integer suitable for use as the length of an
+     * array-like object.
+     *
+     * **Note:** This method is based on
+     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to convert.
+     * @returns {number} Returns the converted integer.
+     * @example
+     *
+     * _.toLength(3.2);
+     * // => 3
+     *
+     * _.toLength(Number.MIN_VALUE);
+     * // => 0
+     *
+     * _.toLength(Infinity);
+     * // => 4294967295
+     *
+     * _.toLength('3.2');
+     * // => 3
+     */
+    function toLength(value) {
+      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
+    }
+
+    /**
+     * Converts `value` to a number.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to process.
+     * @returns {number} Returns the number.
+     * @example
+     *
+     * _.toNumber(3.2);
+     * // => 3.2
+     *
+     * _.toNumber(Number.MIN_VALUE);
+     * // => 5e-324
+     *
+     * _.toNumber(Infinity);
+     * // => Infinity
+     *
+     * _.toNumber('3.2');
+     * // => 3.2
+     */
+    function toNumber(value) {
+      if (typeof value == 'number') {
+        return value;
+      }
+      if (isSymbol(value)) {
+        return NAN;
+      }
+      if (isObject(value)) {
+        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
+        value = isObject(other) ? (other + '') : other;
+      }
+      if (typeof value != 'string') {
+        return value === 0 ? value : +value;
+      }
+      value = baseTrim(value);
+      var isBinary = reIsBinary.test(value);
+      return (isBinary || reIsOctal.test(value))
+        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
+        : (reIsBadHex.test(value) ? NAN : +value);
+    }
+
+    /**
+     * Converts `value` to a plain object flattening inherited enumerable string
+     * keyed properties of `value` to own properties of the plain object.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Lang
+     * @param {*} value The value to convert.
+     * @returns {Object} Returns the converted plain object.
+     * @example
+     *
+     * function Foo() {
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.assign({ 'a': 1 }, new Foo);
+     * // => { 'a': 1, 'b': 2 }
+     *
+     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
+     * // => { 'a': 1, 'b': 2, 'c': 3 }
+     */
+    function toPlainObject(value) {
+      return copyObject(value, keysIn(value));
+    }
+
+    /**
+     * Converts `value` to a safe integer. A safe integer can be compared and
+     * represented correctly.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to convert.
+     * @returns {number} Returns the converted integer.
+     * @example
+     *
+     * _.toSafeInteger(3.2);
+     * // => 3
+     *
+     * _.toSafeInteger(Number.MIN_VALUE);
+     * // => 0
+     *
+     * _.toSafeInteger(Infinity);
+     * // => 9007199254740991
+     *
+     * _.toSafeInteger('3.2');
+     * // => 3
+     */
+    function toSafeInteger(value) {
+      return value
+        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
+        : (value === 0 ? value : 0);
+    }
+
+    /**
+     * Converts `value` to a string. An empty string is returned for `null`
+     * and `undefined` values. The sign of `-0` is preserved.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Lang
+     * @param {*} value The value to convert.
+     * @returns {string} Returns the converted string.
+     * @example
+     *
+     * _.toString(null);
+     * // => ''
+     *
+     * _.toString(-0);
+     * // => '-0'
+     *
+     * _.toString([1, 2, 3]);
+     * // => '1,2,3'
+     */
+    function toString(value) {
+      return value == null ? '' : baseToString(value);
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Assigns own enumerable string keyed properties of source objects to the
+     * destination object. Source objects are applied from left to right.
+     * Subsequent sources overwrite property assignments of previous sources.
+     *
+     * **Note:** This method mutates `object` and is loosely based on
+     * [`Object.assign`](https://mdn.io/Object/assign).
+     *
+     * @static
+     * @memberOf _
+     * @since 0.10.0
+     * @category Object
+     * @param {Object} object The destination object.
+     * @param {...Object} [sources] The source objects.
+     * @returns {Object} Returns `object`.
+     * @see _.assignIn
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     * }
+     *
+     * function Bar() {
+     *   this.c = 3;
+     * }
+     *
+     * Foo.prototype.b = 2;
+     * Bar.prototype.d = 4;
+     *
+     * _.assign({ 'a': 0 }, new Foo, new Bar);
+     * // => { 'a': 1, 'c': 3 }
+     */
+    var assign = createAssigner(function(object, source) {
+      if (isPrototype(source) || isArrayLike(source)) {
+        copyObject(source, keys(source), object);
+        return;
+      }
+      for (var key in source) {
+        if (hasOwnProperty.call(source, key)) {
+          assignValue(object, key, source[key]);
+        }
+      }
+    });
+
+    /**
+     * This method is like `_.assign` except that it iterates over own and
+     * inherited source properties.
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @alias extend
+     * @category Object
+     * @param {Object} object The destination object.
+     * @param {...Object} [sources] The source objects.
+     * @returns {Object} Returns `object`.
+     * @see _.assign
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     * }
+     *
+     * function Bar() {
+     *   this.c = 3;
+     * }
+     *
+     * Foo.prototype.b = 2;
+     * Bar.prototype.d = 4;
+     *
+     * _.assignIn({ 'a': 0 }, new Foo, new Bar);
+     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
+     */
+    var assignIn = createAssigner(function(object, source) {
+      copyObject(source, keysIn(source), object);
+    });
+
+    /**
+     * This method is like `_.assignIn` except that it accepts `customizer`
+     * which is invoked to produce the assigned values. If `customizer` returns
+     * `undefined`, assignment is handled by the method instead. The `customizer`
+     * is invoked with five arguments: (objValue, srcValue, key, object, source).
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @alias extendWith
+     * @category Object
+     * @param {Object} object The destination object.
+     * @param {...Object} sources The source objects.
+     * @param {Function} [customizer] The function to customize assigned values.
+     * @returns {Object} Returns `object`.
+     * @see _.assignWith
+     * @example
+     *
+     * function customizer(objValue, srcValue) {
+     *   return _.isUndefined(objValue) ? srcValue : objValue;
+     * }
+     *
+     * var defaults = _.partialRight(_.assignInWith, customizer);
+     *
+     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
+     * // => { 'a': 1, 'b': 2 }
+     */
+    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
+      copyObject(source, keysIn(source), object, customizer);
+    });
+
+    /**
+     * This method is like `_.assign` except that it accepts `customizer`
+     * which is invoked to produce the assigned values. If `customizer` returns
+     * `undefined`, assignment is handled by the method instead. The `customizer`
+     * is invoked with five arguments: (objValue, srcValue, key, object, source).
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Object
+     * @param {Object} object The destination object.
+     * @param {...Object} sources The source objects.
+     * @param {Function} [customizer] The function to customize assigned values.
+     * @returns {Object} Returns `object`.
+     * @see _.assignInWith
+     * @example
+     *
+     * function customizer(objValue, srcValue) {
+     *   return _.isUndefined(objValue) ? srcValue : objValue;
+     * }
+     *
+     * var defaults = _.partialRight(_.assignWith, customizer);
+     *
+     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
+     * // => { 'a': 1, 'b': 2 }
+     */
+    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
+      copyObject(source, keys(source), object, customizer);
+    });
+
+    /**
+     * Creates an array of values corresponding to `paths` of `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 1.0.0
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {...(string|string[])} [paths] The property paths to pick.
+     * @returns {Array} Returns the picked values.
+     * @example
+     *
+     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
+     *
+     * _.at(object, ['a[0].b.c', 'a[1]']);
+     * // => [3, 4]
+     */
+    var at = flatRest(baseAt);
+
+    /**
+     * Creates an object that inherits from the `prototype` object. If a
+     * `properties` object is given, its own enumerable string keyed properties
+     * are assigned to the created object.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.3.0
+     * @category Object
+     * @param {Object} prototype The object to inherit from.
+     * @param {Object} [properties] The properties to assign to the object.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * function Shape() {
+     *   this.x = 0;
+     *   this.y = 0;
+     * }
+     *
+     * function Circle() {
+     *   Shape.call(this);
+     * }
+     *
+     * Circle.prototype = _.create(Shape.prototype, {
+     *   'constructor': Circle
+     * });
+     *
+     * var circle = new Circle;
+     * circle instanceof Circle;
+     * // => true
+     *
+     * circle instanceof Shape;
+     * // => true
+     */
+    function create(prototype, properties) {
+      var result = baseCreate(prototype);
+      return properties == null ? result : baseAssign(result, properties);
+    }
+
+    /**
+     * Assigns own and inherited enumerable string keyed properties of source
+     * objects to the destination object for all destination properties that
+     * resolve to `undefined`. Source objects are applied from left to right.
+     * Once a property is set, additional values of the same property are ignored.
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The destination object.
+     * @param {...Object} [sources] The source objects.
+     * @returns {Object} Returns `object`.
+     * @see _.defaultsDeep
+     * @example
+     *
+     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
+     * // => { 'a': 1, 'b': 2 }
+     */
+    var defaults = baseRest(function(object, sources) {
+      object = Object(object);
+
+      var index = -1;
+      var length = sources.length;
+      var guard = length > 2 ? sources[2] : undefined;
+
+      if (guard && isIterateeCall(sources[0], sources[1], guard)) {
+        length = 1;
+      }
+
+      while (++index < length) {
+        var source = sources[index];
+        var props = keysIn(source);
+        var propsIndex = -1;
+        var propsLength = props.length;
+
+        while (++propsIndex < propsLength) {
+          var key = props[propsIndex];
+          var value = object[key];
+
+          if (value === undefined ||
+              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
+            object[key] = source[key];
+          }
+        }
+      }
+
+      return object;
+    });
+
+    /**
+     * This method is like `_.defaults` except that it recursively assigns
+     * default properties.
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.10.0
+     * @category Object
+     * @param {Object} object The destination object.
+     * @param {...Object} [sources] The source objects.
+     * @returns {Object} Returns `object`.
+     * @see _.defaults
+     * @example
+     *
+     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
+     * // => { 'a': { 'b': 2, 'c': 3 } }
+     */
+    var defaultsDeep = baseRest(function(args) {
+      args.push(undefined, customDefaultsMerge);
+      return apply(mergeWith, undefined, args);
+    });
+
+    /**
+     * This method is like `_.find` except that it returns the key of the first
+     * element `predicate` returns truthy for instead of the element itself.
+     *
+     * @static
+     * @memberOf _
+     * @since 1.1.0
+     * @category Object
+     * @param {Object} object The object to inspect.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @returns {string|undefined} Returns the key of the matched element,
+     *  else `undefined`.
+     * @example
+     *
+     * var users = {
+     *   'barney':  { 'age': 36, 'active': true },
+     *   'fred':    { 'age': 40, 'active': false },
+     *   'pebbles': { 'age': 1,  'active': true }
+     * };
+     *
+     * _.findKey(users, function(o) { return o.age < 40; });
+     * // => 'barney' (iteration order is not guaranteed)
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.findKey(users, { 'age': 1, 'active': true });
+     * // => 'pebbles'
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.findKey(users, ['active', false]);
+     * // => 'fred'
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.findKey(users, 'active');
+     * // => 'barney'
+     */
+    function findKey(object, predicate) {
+      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
+    }
+
+    /**
+     * This method is like `_.findKey` except that it iterates over elements of
+     * a collection in the opposite order.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.0.0
+     * @category Object
+     * @param {Object} object The object to inspect.
+     * @param {Function} [predicate=_.identity] The function invoked per iteration.
+     * @returns {string|undefined} Returns the key of the matched element,
+     *  else `undefined`.
+     * @example
+     *
+     * var users = {
+     *   'barney':  { 'age': 36, 'active': true },
+     *   'fred':    { 'age': 40, 'active': false },
+     *   'pebbles': { 'age': 1,  'active': true }
+     * };
+     *
+     * _.findLastKey(users, function(o) { return o.age < 40; });
+     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.findLastKey(users, { 'age': 36, 'active': true });
+     * // => 'barney'
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.findLastKey(users, ['active', false]);
+     * // => 'fred'
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.findLastKey(users, 'active');
+     * // => 'pebbles'
+     */
+    function findLastKey(object, predicate) {
+      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
+    }
+
+    /**
+     * Iterates over own and inherited enumerable string keyed properties of an
+     * object and invokes `iteratee` for each property. The iteratee is invoked
+     * with three arguments: (value, key, object). Iteratee functions may exit
+     * iteration early by explicitly returning `false`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.3.0
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Object} Returns `object`.
+     * @see _.forInRight
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.forIn(new Foo, function(value, key) {
+     *   console.log(key);
+     * });
+     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
+     */
+    function forIn(object, iteratee) {
+      return object == null
+        ? object
+        : baseFor(object, getIteratee(iteratee, 3), keysIn);
+    }
+
+    /**
+     * This method is like `_.forIn` except that it iterates over properties of
+     * `object` in the opposite order.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.0.0
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Object} Returns `object`.
+     * @see _.forIn
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.forInRight(new Foo, function(value, key) {
+     *   console.log(key);
+     * });
+     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
+     */
+    function forInRight(object, iteratee) {
+      return object == null
+        ? object
+        : baseForRight(object, getIteratee(iteratee, 3), keysIn);
+    }
+
+    /**
+     * Iterates over own enumerable string keyed properties of an object and
+     * invokes `iteratee` for each property. The iteratee is invoked with three
+     * arguments: (value, key, object). Iteratee functions may exit iteration
+     * early by explicitly returning `false`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.3.0
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Object} Returns `object`.
+     * @see _.forOwnRight
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.forOwn(new Foo, function(value, key) {
+     *   console.log(key);
+     * });
+     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
+     */
+    function forOwn(object, iteratee) {
+      return object && baseForOwn(object, getIteratee(iteratee, 3));
+    }
+
+    /**
+     * This method is like `_.forOwn` except that it iterates over properties of
+     * `object` in the opposite order.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.0.0
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Object} Returns `object`.
+     * @see _.forOwn
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.forOwnRight(new Foo, function(value, key) {
+     *   console.log(key);
+     * });
+     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
+     */
+    function forOwnRight(object, iteratee) {
+      return object && baseForOwnRight(object, getIteratee(iteratee, 3));
+    }
+
+    /**
+     * Creates an array of function property names from own enumerable properties
+     * of `object`.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to inspect.
+     * @returns {Array} Returns the function names.
+     * @see _.functionsIn
+     * @example
+     *
+     * function Foo() {
+     *   this.a = _.constant('a');
+     *   this.b = _.constant('b');
+     * }
+     *
+     * Foo.prototype.c = _.constant('c');
+     *
+     * _.functions(new Foo);
+     * // => ['a', 'b']
+     */
+    function functions(object) {
+      return object == null ? [] : baseFunctions(object, keys(object));
+    }
+
+    /**
+     * Creates an array of function property names from own and inherited
+     * enumerable properties of `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Object
+     * @param {Object} object The object to inspect.
+     * @returns {Array} Returns the function names.
+     * @see _.functions
+     * @example
+     *
+     * function Foo() {
+     *   this.a = _.constant('a');
+     *   this.b = _.constant('b');
+     * }
+     *
+     * Foo.prototype.c = _.constant('c');
+     *
+     * _.functionsIn(new Foo);
+     * // => ['a', 'b', 'c']
+     */
+    function functionsIn(object) {
+      return object == null ? [] : baseFunctions(object, keysIn(object));
+    }
+
+    /**
+     * Gets the value at `path` of `object`. If the resolved value is
+     * `undefined`, the `defaultValue` is returned in its place.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.7.0
+     * @category Object
+     * @param {Object} object The object to query.
+     * @param {Array|string} path The path of the property to get.
+     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
+     * @returns {*} Returns the resolved value.
+     * @example
+     *
+     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
+     *
+     * _.get(object, 'a[0].b.c');
+     * // => 3
+     *
+     * _.get(object, ['a', '0', 'b', 'c']);
+     * // => 3
+     *
+     * _.get(object, 'a.b.c', 'default');
+     * // => 'default'
+     */
+    function get(object, path, defaultValue) {
+      var result = object == null ? undefined : baseGet(object, path);
+      return result === undefined ? defaultValue : result;
+    }
+
+    /**
+     * Checks if `path` is a direct property of `object`.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to query.
+     * @param {Array|string} path The path to check.
+     * @returns {boolean} Returns `true` if `path` exists, else `false`.
+     * @example
+     *
+     * var object = { 'a': { 'b': 2 } };
+     * var other = _.create({ 'a': _.create({ 'b': 2 }) });
+     *
+     * _.has(object, 'a');
+     * // => true
+     *
+     * _.has(object, 'a.b');
+     * // => true
+     *
+     * _.has(object, ['a', 'b']);
+     * // => true
+     *
+     * _.has(other, 'a');
+     * // => false
+     */
+    function has(object, path) {
+      return object != null && hasPath(object, path, baseHas);
+    }
+
+    /**
+     * Checks if `path` is a direct or inherited property of `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Object
+     * @param {Object} object The object to query.
+     * @param {Array|string} path The path to check.
+     * @returns {boolean} Returns `true` if `path` exists, else `false`.
+     * @example
+     *
+     * var object = _.create({ 'a': _.create({ 'b': 2 }) });
+     *
+     * _.hasIn(object, 'a');
+     * // => true
+     *
+     * _.hasIn(object, 'a.b');
+     * // => true
+     *
+     * _.hasIn(object, ['a', 'b']);
+     * // => true
+     *
+     * _.hasIn(object, 'b');
+     * // => false
+     */
+    function hasIn(object, path) {
+      return object != null && hasPath(object, path, baseHasIn);
+    }
+
+    /**
+     * Creates an object composed of the inverted keys and values of `object`.
+     * If `object` contains duplicate values, subsequent values overwrite
+     * property assignments of previous values.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.7.0
+     * @category Object
+     * @param {Object} object The object to invert.
+     * @returns {Object} Returns the new inverted object.
+     * @example
+     *
+     * var object = { 'a': 1, 'b': 2, 'c': 1 };
+     *
+     * _.invert(object);
+     * // => { '1': 'c', '2': 'b' }
+     */
+    var invert = createInverter(function(result, value, key) {
+      if (value != null &&
+          typeof value.toString != 'function') {
+        value = nativeObjectToString.call(value);
+      }
+
+      result[value] = key;
+    }, constant(identity));
+
+    /**
+     * This method is like `_.invert` except that the inverted object is generated
+     * from the results of running each element of `object` thru `iteratee`. The
+     * corresponding inverted value of each inverted key is an array of keys
+     * responsible for generating the inverted value. The iteratee is invoked
+     * with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.1.0
+     * @category Object
+     * @param {Object} object The object to invert.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {Object} Returns the new inverted object.
+     * @example
+     *
+     * var object = { 'a': 1, 'b': 2, 'c': 1 };
+     *
+     * _.invertBy(object);
+     * // => { '1': ['a', 'c'], '2': ['b'] }
+     *
+     * _.invertBy(object, function(value) {
+     *   return 'group' + value;
+     * });
+     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
+     */
+    var invertBy = createInverter(function(result, value, key) {
+      if (value != null &&
+          typeof value.toString != 'function') {
+        value = nativeObjectToString.call(value);
+      }
+
+      if (hasOwnProperty.call(result, value)) {
+        result[value].push(key);
+      } else {
+        result[value] = [key];
+      }
+    }, getIteratee);
+
+    /**
+     * Invokes the method at `path` of `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Object
+     * @param {Object} object The object to query.
+     * @param {Array|string} path The path of the method to invoke.
+     * @param {...*} [args] The arguments to invoke the method with.
+     * @returns {*} Returns the result of the invoked method.
+     * @example
+     *
+     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
+     *
+     * _.invoke(object, 'a[0].b.c.slice', 1, 3);
+     * // => [2, 3]
+     */
+    var invoke = baseRest(baseInvoke);
+
+    /**
+     * Creates an array of the own enumerable property names of `object`.
+     *
+     * **Note:** Non-object values are coerced to objects. See the
+     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+     * for more details.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of property names.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.keys(new Foo);
+     * // => ['a', 'b'] (iteration order is not guaranteed)
+     *
+     * _.keys('hi');
+     * // => ['0', '1']
+     */
+    function keys(object) {
+      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
+    }
+
+    /**
+     * Creates an array of the own and inherited enumerable property names of `object`.
+     *
+     * **Note:** Non-object values are coerced to objects.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Object
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of property names.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.keysIn(new Foo);
+     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
+     */
+    function keysIn(object) {
+      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
+    }
+
+    /**
+     * The opposite of `_.mapValues`; this method creates an object with the
+     * same values as `object` and keys generated by running each own enumerable
+     * string keyed property of `object` thru `iteratee`. The iteratee is invoked
+     * with three arguments: (value, key, object).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.8.0
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Object} Returns the new mapped object.
+     * @see _.mapValues
+     * @example
+     *
+     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
+     *   return key + value;
+     * });
+     * // => { 'a1': 1, 'b2': 2 }
+     */
+    function mapKeys(object, iteratee) {
+      var result = {};
+      iteratee = getIteratee(iteratee, 3);
+
+      baseForOwn(object, function(value, key, object) {
+        baseAssignValue(result, iteratee(value, key, object), value);
+      });
+      return result;
+    }
+
+    /**
+     * Creates an object with the same keys as `object` and values generated
+     * by running each own enumerable string keyed property of `object` thru
+     * `iteratee`. The iteratee is invoked with three arguments:
+     * (value, key, object).
+     *
+     * @static
+     * @memberOf _
+     * @since 2.4.0
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Object} Returns the new mapped object.
+     * @see _.mapKeys
+     * @example
+     *
+     * var users = {
+     *   'fred':    { 'user': 'fred',    'age': 40 },
+     *   'pebbles': { 'user': 'pebbles', 'age': 1 }
+     * };
+     *
+     * _.mapValues(users, function(o) { return o.age; });
+     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.mapValues(users, 'age');
+     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
+     */
+    function mapValues(object, iteratee) {
+      var result = {};
+      iteratee = getIteratee(iteratee, 3);
+
+      baseForOwn(object, function(value, key, object) {
+        baseAssignValue(result, key, iteratee(value, key, object));
+      });
+      return result;
+    }
+
+    /**
+     * This method is like `_.assign` except that it recursively merges own and
+     * inherited enumerable string keyed properties of source objects into the
+     * destination object. Source properties that resolve to `undefined` are
+     * skipped if a destination value exists. Array and plain object properties
+     * are merged recursively. Other objects and value types are overridden by
+     * assignment. Source objects are applied from left to right. Subsequent
+     * sources overwrite property assignments of previous sources.
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.5.0
+     * @category Object
+     * @param {Object} object The destination object.
+     * @param {...Object} [sources] The source objects.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * var object = {
+     *   'a': [{ 'b': 2 }, { 'd': 4 }]
+     * };
+     *
+     * var other = {
+     *   'a': [{ 'c': 3 }, { 'e': 5 }]
+     * };
+     *
+     * _.merge(object, other);
+     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
+     */
+    var merge = createAssigner(function(object, source, srcIndex) {
+      baseMerge(object, source, srcIndex);
+    });
+
+    /**
+     * This method is like `_.merge` except that it accepts `customizer` which
+     * is invoked to produce the merged values of the destination and source
+     * properties. If `customizer` returns `undefined`, merging is handled by the
+     * method instead. The `customizer` is invoked with six arguments:
+     * (objValue, srcValue, key, object, source, stack).
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Object
+     * @param {Object} object The destination object.
+     * @param {...Object} sources The source objects.
+     * @param {Function} customizer The function to customize assigned values.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * function customizer(objValue, srcValue) {
+     *   if (_.isArray(objValue)) {
+     *     return objValue.concat(srcValue);
+     *   }
+     * }
+     *
+     * var object = { 'a': [1], 'b': [2] };
+     * var other = { 'a': [3], 'b': [4] };
+     *
+     * _.mergeWith(object, other, customizer);
+     * // => { 'a': [1, 3], 'b': [2, 4] }
+     */
+    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
+      baseMerge(object, source, srcIndex, customizer);
+    });
+
+    /**
+     * The opposite of `_.pick`; this method creates an object composed of the
+     * own and inherited enumerable property paths of `object` that are not omitted.
+     *
+     * **Note:** This method is considerably slower than `_.pick`.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The source object.
+     * @param {...(string|string[])} [paths] The property paths to omit.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * var object = { 'a': 1, 'b': '2', 'c': 3 };
+     *
+     * _.omit(object, ['a', 'c']);
+     * // => { 'b': '2' }
+     */
+    var omit = flatRest(function(object, paths) {
+      var result = {};
+      if (object == null) {
+        return result;
+      }
+      var isDeep = false;
+      paths = arrayMap(paths, function(path) {
+        path = castPath(path, object);
+        isDeep || (isDeep = path.length > 1);
+        return path;
+      });
+      copyObject(object, getAllKeysIn(object), result);
+      if (isDeep) {
+        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
+      }
+      var length = paths.length;
+      while (length--) {
+        baseUnset(result, paths[length]);
+      }
+      return result;
+    });
+
+    /**
+     * The opposite of `_.pickBy`; this method creates an object composed of
+     * the own and inherited enumerable string keyed properties of `object` that
+     * `predicate` doesn't return truthy for. The predicate is invoked with two
+     * arguments: (value, key).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Object
+     * @param {Object} object The source object.
+     * @param {Function} [predicate=_.identity] The function invoked per property.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * var object = { 'a': 1, 'b': '2', 'c': 3 };
+     *
+     * _.omitBy(object, _.isNumber);
+     * // => { 'b': '2' }
+     */
+    function omitBy(object, predicate) {
+      return pickBy(object, negate(getIteratee(predicate)));
+    }
+
+    /**
+     * Creates an object composed of the picked `object` properties.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The source object.
+     * @param {...(string|string[])} [paths] The property paths to pick.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * var object = { 'a': 1, 'b': '2', 'c': 3 };
+     *
+     * _.pick(object, ['a', 'c']);
+     * // => { 'a': 1, 'c': 3 }
+     */
+    var pick = flatRest(function(object, paths) {
+      return object == null ? {} : basePick(object, paths);
+    });
+
+    /**
+     * Creates an object composed of the `object` properties `predicate` returns
+     * truthy for. The predicate is invoked with two arguments: (value, key).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Object
+     * @param {Object} object The source object.
+     * @param {Function} [predicate=_.identity] The function invoked per property.
+     * @returns {Object} Returns the new object.
+     * @example
+     *
+     * var object = { 'a': 1, 'b': '2', 'c': 3 };
+     *
+     * _.pickBy(object, _.isNumber);
+     * // => { 'a': 1, 'c': 3 }
+     */
+    function pickBy(object, predicate) {
+      if (object == null) {
+        return {};
+      }
+      var props = arrayMap(getAllKeysIn(object), function(prop) {
+        return [prop];
+      });
+      predicate = getIteratee(predicate);
+      return basePickBy(object, props, function(value, path) {
+        return predicate(value, path[0]);
+      });
+    }
+
+    /**
+     * This method is like `_.get` except that if the resolved value is a
+     * function it's invoked with the `this` binding of its parent object and
+     * its result is returned.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to query.
+     * @param {Array|string} path The path of the property to resolve.
+     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
+     * @returns {*} Returns the resolved value.
+     * @example
+     *
+     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
+     *
+     * _.result(object, 'a[0].b.c1');
+     * // => 3
+     *
+     * _.result(object, 'a[0].b.c2');
+     * // => 4
+     *
+     * _.result(object, 'a[0].b.c3', 'default');
+     * // => 'default'
+     *
+     * _.result(object, 'a[0].b.c3', _.constant('default'));
+     * // => 'default'
+     */
+    function result(object, path, defaultValue) {
+      path = castPath(path, object);
+
+      var index = -1,
+          length = path.length;
+
+      // Ensure the loop is entered when path is empty.
+      if (!length) {
+        length = 1;
+        object = undefined;
+      }
+      while (++index < length) {
+        var value = object == null ? undefined : object[toKey(path[index])];
+        if (value === undefined) {
+          index = length;
+          value = defaultValue;
+        }
+        object = isFunction(value) ? value.call(object) : value;
+      }
+      return object;
+    }
+
+    /**
+     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
+     * it's created. Arrays are created for missing index properties while objects
+     * are created for all other missing properties. Use `_.setWith` to customize
+     * `path` creation.
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.7.0
+     * @category Object
+     * @param {Object} object The object to modify.
+     * @param {Array|string} path The path of the property to set.
+     * @param {*} value The value to set.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
+     *
+     * _.set(object, 'a[0].b.c', 4);
+     * console.log(object.a[0].b.c);
+     * // => 4
+     *
+     * _.set(object, ['x', '0', 'y', 'z'], 5);
+     * console.log(object.x[0].y.z);
+     * // => 5
+     */
+    function set(object, path, value) {
+      return object == null ? object : baseSet(object, path, value);
+    }
+
+    /**
+     * This method is like `_.set` except that it accepts `customizer` which is
+     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
+     * path creation is handled by the method instead. The `customizer` is invoked
+     * with three arguments: (nsValue, key, nsObject).
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Object
+     * @param {Object} object The object to modify.
+     * @param {Array|string} path The path of the property to set.
+     * @param {*} value The value to set.
+     * @param {Function} [customizer] The function to customize assigned values.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * var object = {};
+     *
+     * _.setWith(object, '[0][1]', 'a', Object);
+     * // => { '0': { '1': 'a' } }
+     */
+    function setWith(object, path, value, customizer) {
+      customizer = typeof customizer == 'function' ? customizer : undefined;
+      return object == null ? object : baseSet(object, path, value, customizer);
+    }
+
+    /**
+     * Creates an array of own enumerable string keyed-value pairs for `object`
+     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
+     * entries are returned.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @alias entries
+     * @category Object
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the key-value pairs.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.toPairs(new Foo);
+     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
+     */
+    var toPairs = createToPairs(keys);
+
+    /**
+     * Creates an array of own and inherited enumerable string keyed-value pairs
+     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
+     * or set, its entries are returned.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @alias entriesIn
+     * @category Object
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the key-value pairs.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.toPairsIn(new Foo);
+     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
+     */
+    var toPairsIn = createToPairs(keysIn);
+
+    /**
+     * An alternative to `_.reduce`; this method transforms `object` to a new
+     * `accumulator` object which is the result of running each of its own
+     * enumerable string keyed properties thru `iteratee`, with each invocation
+     * potentially mutating the `accumulator` object. If `accumulator` is not
+     * provided, a new object with the same `[[Prototype]]` will be used. The
+     * iteratee is invoked with four arguments: (accumulator, value, key, object).
+     * Iteratee functions may exit iteration early by explicitly returning `false`.
+     *
+     * @static
+     * @memberOf _
+     * @since 1.3.0
+     * @category Object
+     * @param {Object} object The object to iterate over.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @param {*} [accumulator] The custom accumulator value.
+     * @returns {*} Returns the accumulated value.
+     * @example
+     *
+     * _.transform([2, 3, 4], function(result, n) {
+     *   result.push(n *= n);
+     *   return n % 2 == 0;
+     * }, []);
+     * // => [4, 9]
+     *
+     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
+     *   (result[value] || (result[value] = [])).push(key);
+     * }, {});
+     * // => { '1': ['a', 'c'], '2': ['b'] }
+     */
+    function transform(object, iteratee, accumulator) {
+      var isArr = isArray(object),
+          isArrLike = isArr || isBuffer(object) || isTypedArray(object);
+
+      iteratee = getIteratee(iteratee, 4);
+      if (accumulator == null) {
+        var Ctor = object && object.constructor;
+        if (isArrLike) {
+          accumulator = isArr ? new Ctor : [];
+        }
+        else if (isObject(object)) {
+          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
+        }
+        else {
+          accumulator = {};
+        }
+      }
+      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
+        return iteratee(accumulator, value, index, object);
+      });
+      return accumulator;
+    }
+
+    /**
+     * Removes the property at `path` of `object`.
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Object
+     * @param {Object} object The object to modify.
+     * @param {Array|string} path The path of the property to unset.
+     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
+     * @example
+     *
+     * var object = { 'a': [{ 'b': { 'c': 7 } }] };
+     * _.unset(object, 'a[0].b.c');
+     * // => true
+     *
+     * console.log(object);
+     * // => { 'a': [{ 'b': {} }] };
+     *
+     * _.unset(object, ['a', '0', 'b', 'c']);
+     * // => true
+     *
+     * console.log(object);
+     * // => { 'a': [{ 'b': {} }] };
+     */
+    function unset(object, path) {
+      return object == null ? true : baseUnset(object, path);
+    }
+
+    /**
+     * This method is like `_.set` except that accepts `updater` to produce the
+     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
+     * is invoked with one argument: (value).
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.6.0
+     * @category Object
+     * @param {Object} object The object to modify.
+     * @param {Array|string} path The path of the property to set.
+     * @param {Function} updater The function to produce the updated value.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
+     *
+     * _.update(object, 'a[0].b.c', function(n) { return n * n; });
+     * console.log(object.a[0].b.c);
+     * // => 9
+     *
+     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
+     * console.log(object.x[0].y.z);
+     * // => 0
+     */
+    function update(object, path, updater) {
+      return object == null ? object : baseUpdate(object, path, castFunction(updater));
+    }
+
+    /**
+     * This method is like `_.update` except that it accepts `customizer` which is
+     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
+     * path creation is handled by the method instead. The `customizer` is invoked
+     * with three arguments: (nsValue, key, nsObject).
+     *
+     * **Note:** This method mutates `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.6.0
+     * @category Object
+     * @param {Object} object The object to modify.
+     * @param {Array|string} path The path of the property to set.
+     * @param {Function} updater The function to produce the updated value.
+     * @param {Function} [customizer] The function to customize assigned values.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * var object = {};
+     *
+     * _.updateWith(object, '[0][1]', _.constant('a'), Object);
+     * // => { '0': { '1': 'a' } }
+     */
+    function updateWith(object, path, updater, customizer) {
+      customizer = typeof customizer == 'function' ? customizer : undefined;
+      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
+    }
+
+    /**
+     * Creates an array of the own enumerable string keyed property values of `object`.
+     *
+     * **Note:** Non-object values are coerced to objects.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Object
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of property values.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.values(new Foo);
+     * // => [1, 2] (iteration order is not guaranteed)
+     *
+     * _.values('hi');
+     * // => ['h', 'i']
+     */
+    function values(object) {
+      return object == null ? [] : baseValues(object, keys(object));
+    }
+
+    /**
+     * Creates an array of the own and inherited enumerable string keyed property
+     * values of `object`.
+     *
+     * **Note:** Non-object values are coerced to objects.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Object
+     * @param {Object} object The object to query.
+     * @returns {Array} Returns the array of property values.
+     * @example
+     *
+     * function Foo() {
+     *   this.a = 1;
+     *   this.b = 2;
+     * }
+     *
+     * Foo.prototype.c = 3;
+     *
+     * _.valuesIn(new Foo);
+     * // => [1, 2, 3] (iteration order is not guaranteed)
+     */
+    function valuesIn(object) {
+      return object == null ? [] : baseValues(object, keysIn(object));
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Clamps `number` within the inclusive `lower` and `upper` bounds.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Number
+     * @param {number} number The number to clamp.
+     * @param {number} [lower] The lower bound.
+     * @param {number} upper The upper bound.
+     * @returns {number} Returns the clamped number.
+     * @example
+     *
+     * _.clamp(-10, -5, 5);
+     * // => -5
+     *
+     * _.clamp(10, -5, 5);
+     * // => 5
+     */
+    function clamp(number, lower, upper) {
+      if (upper === undefined) {
+        upper = lower;
+        lower = undefined;
+      }
+      if (upper !== undefined) {
+        upper = toNumber(upper);
+        upper = upper === upper ? upper : 0;
+      }
+      if (lower !== undefined) {
+        lower = toNumber(lower);
+        lower = lower === lower ? lower : 0;
+      }
+      return baseClamp(toNumber(number), lower, upper);
+    }
+
+    /**
+     * Checks if `n` is between `start` and up to, but not including, `end`. If
+     * `end` is not specified, it's set to `start` with `start` then set to `0`.
+     * If `start` is greater than `end` the params are swapped to support
+     * negative ranges.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.3.0
+     * @category Number
+     * @param {number} number The number to check.
+     * @param {number} [start=0] The start of the range.
+     * @param {number} end The end of the range.
+     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
+     * @see _.range, _.rangeRight
+     * @example
+     *
+     * _.inRange(3, 2, 4);
+     * // => true
+     *
+     * _.inRange(4, 8);
+     * // => true
+     *
+     * _.inRange(4, 2);
+     * // => false
+     *
+     * _.inRange(2, 2);
+     * // => false
+     *
+     * _.inRange(1.2, 2);
+     * // => true
+     *
+     * _.inRange(5.2, 4);
+     * // => false
+     *
+     * _.inRange(-3, -2, -6);
+     * // => true
+     */
+    function inRange(number, start, end) {
+      start = toFinite(start);
+      if (end === undefined) {
+        end = start;
+        start = 0;
+      } else {
+        end = toFinite(end);
+      }
+      number = toNumber(number);
+      return baseInRange(number, start, end);
+    }
+
+    /**
+     * Produces a random number between the inclusive `lower` and `upper` bounds.
+     * If only one argument is provided a number between `0` and the given number
+     * is returned. If `floating` is `true`, or either `lower` or `upper` are
+     * floats, a floating-point number is returned instead of an integer.
+     *
+     * **Note:** JavaScript follows the IEEE-754 standard for resolving
+     * floating-point values which can produce unexpected results.
+     *
+     * @static
+     * @memberOf _
+     * @since 0.7.0
+     * @category Number
+     * @param {number} [lower=0] The lower bound.
+     * @param {number} [upper=1] The upper bound.
+     * @param {boolean} [floating] Specify returning a floating-point number.
+     * @returns {number} Returns the random number.
+     * @example
+     *
+     * _.random(0, 5);
+     * // => an integer between 0 and 5
+     *
+     * _.random(5);
+     * // => also an integer between 0 and 5
+     *
+     * _.random(5, true);
+     * // => a floating-point number between 0 and 5
+     *
+     * _.random(1.2, 5.2);
+     * // => a floating-point number between 1.2 and 5.2
+     */
+    function random(lower, upper, floating) {
+      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
+        upper = floating = undefined;
+      }
+      if (floating === undefined) {
+        if (typeof upper == 'boolean') {
+          floating = upper;
+          upper = undefined;
+        }
+        else if (typeof lower == 'boolean') {
+          floating = lower;
+          lower = undefined;
+        }
+      }
+      if (lower === undefined && upper === undefined) {
+        lower = 0;
+        upper = 1;
+      }
+      else {
+        lower = toFinite(lower);
+        if (upper === undefined) {
+          upper = lower;
+          lower = 0;
+        } else {
+          upper = toFinite(upper);
+        }
+      }
+      if (lower > upper) {
+        var temp = lower;
+        lower = upper;
+        upper = temp;
+      }
+      if (floating || lower % 1 || upper % 1) {
+        var rand = nativeRandom();
+        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
+      }
+      return baseRandom(lower, upper);
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the camel cased string.
+     * @example
+     *
+     * _.camelCase('Foo Bar');
+     * // => 'fooBar'
+     *
+     * _.camelCase('--foo-bar--');
+     * // => 'fooBar'
+     *
+     * _.camelCase('__FOO_BAR__');
+     * // => 'fooBar'
+     */
+    var camelCase = createCompounder(function(result, word, index) {
+      word = word.toLowerCase();
+      return result + (index ? capitalize(word) : word);
+    });
+
+    /**
+     * Converts the first character of `string` to upper case and the remaining
+     * to lower case.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to capitalize.
+     * @returns {string} Returns the capitalized string.
+     * @example
+     *
+     * _.capitalize('FRED');
+     * // => 'Fred'
+     */
+    function capitalize(string) {
+      return upperFirst(toString(string).toLowerCase());
+    }
+
+    /**
+     * Deburrs `string` by converting
+     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
+     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
+     * letters to basic Latin letters and removing
+     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to deburr.
+     * @returns {string} Returns the deburred string.
+     * @example
+     *
+     * _.deburr('déjà vu');
+     * // => 'deja vu'
+     */
+    function deburr(string) {
+      string = toString(string);
+      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
+    }
+
+    /**
+     * Checks if `string` ends with the given target string.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to inspect.
+     * @param {string} [target] The string to search for.
+     * @param {number} [position=string.length] The position to search up to.
+     * @returns {boolean} Returns `true` if `string` ends with `target`,
+     *  else `false`.
+     * @example
+     *
+     * _.endsWith('abc', 'c');
+     * // => true
+     *
+     * _.endsWith('abc', 'b');
+     * // => false
+     *
+     * _.endsWith('abc', 'b', 2);
+     * // => true
+     */
+    function endsWith(string, target, position) {
+      string = toString(string);
+      target = baseToString(target);
+
+      var length = string.length;
+      position = position === undefined
+        ? length
+        : baseClamp(toInteger(position), 0, length);
+
+      var end = position;
+      position -= target.length;
+      return position >= 0 && string.slice(position, end) == target;
+    }
+
+    /**
+     * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
+     * corresponding HTML entities.
+     *
+     * **Note:** No other characters are escaped. To escape additional
+     * characters use a third-party library like [_he_](https://mths.be/he).
+     *
+     * Though the ">" character is escaped for symmetry, characters like
+     * ">" and "/" don't need escaping in HTML and have no special meaning
+     * unless they're part of a tag or unquoted attribute value. See
+     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
+     * (under "semi-related fun fact") for more details.
+     *
+     * When working with HTML you should always
+     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
+     * XSS vectors.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The string to escape.
+     * @returns {string} Returns the escaped string.
+     * @example
+     *
+     * _.escape('fred, barney, & pebbles');
+     * // => 'fred, barney, &amp; pebbles'
+     */
+    function escape(string) {
+      string = toString(string);
+      return (string && reHasUnescapedHtml.test(string))
+        ? string.replace(reUnescapedHtml, escapeHtmlChar)
+        : string;
+    }
+
+    /**
+     * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
+     * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to escape.
+     * @returns {string} Returns the escaped string.
+     * @example
+     *
+     * _.escapeRegExp('[lodash](https://lodash.com/)');
+     * // => '\[lodash\]\(https://lodash\.com/\)'
+     */
+    function escapeRegExp(string) {
+      string = toString(string);
+      return (string && reHasRegExpChar.test(string))
+        ? string.replace(reRegExpChar, '\\$&')
+        : string;
+    }
+
+    /**
+     * Converts `string` to
+     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the kebab cased string.
+     * @example
+     *
+     * _.kebabCase('Foo Bar');
+     * // => 'foo-bar'
+     *
+     * _.kebabCase('fooBar');
+     * // => 'foo-bar'
+     *
+     * _.kebabCase('__FOO_BAR__');
+     * // => 'foo-bar'
+     */
+    var kebabCase = createCompounder(function(result, word, index) {
+      return result + (index ? '-' : '') + word.toLowerCase();
+    });
+
+    /**
+     * Converts `string`, as space separated words, to lower case.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the lower cased string.
+     * @example
+     *
+     * _.lowerCase('--Foo-Bar--');
+     * // => 'foo bar'
+     *
+     * _.lowerCase('fooBar');
+     * // => 'foo bar'
+     *
+     * _.lowerCase('__FOO_BAR__');
+     * // => 'foo bar'
+     */
+    var lowerCase = createCompounder(function(result, word, index) {
+      return result + (index ? ' ' : '') + word.toLowerCase();
+    });
+
+    /**
+     * Converts the first character of `string` to lower case.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the converted string.
+     * @example
+     *
+     * _.lowerFirst('Fred');
+     * // => 'fred'
+     *
+     * _.lowerFirst('FRED');
+     * // => 'fRED'
+     */
+    var lowerFirst = createCaseFirst('toLowerCase');
+
+    /**
+     * Pads `string` on the left and right sides if it's shorter than `length`.
+     * Padding characters are truncated if they can't be evenly divided by `length`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to pad.
+     * @param {number} [length=0] The padding length.
+     * @param {string} [chars=' '] The string used as padding.
+     * @returns {string} Returns the padded string.
+     * @example
+     *
+     * _.pad('abc', 8);
+     * // => '  abc   '
+     *
+     * _.pad('abc', 8, '_-');
+     * // => '_-abc_-_'
+     *
+     * _.pad('abc', 3);
+     * // => 'abc'
+     */
+    function pad(string, length, chars) {
+      string = toString(string);
+      length = toInteger(length);
+
+      var strLength = length ? stringSize(string) : 0;
+      if (!length || strLength >= length) {
+        return string;
+      }
+      var mid = (length - strLength) / 2;
+      return (
+        createPadding(nativeFloor(mid), chars) +
+        string +
+        createPadding(nativeCeil(mid), chars)
+      );
+    }
+
+    /**
+     * Pads `string` on the right side if it's shorter than `length`. Padding
+     * characters are truncated if they exceed `length`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to pad.
+     * @param {number} [length=0] The padding length.
+     * @param {string} [chars=' '] The string used as padding.
+     * @returns {string} Returns the padded string.
+     * @example
+     *
+     * _.padEnd('abc', 6);
+     * // => 'abc   '
+     *
+     * _.padEnd('abc', 6, '_-');
+     * // => 'abc_-_'
+     *
+     * _.padEnd('abc', 3);
+     * // => 'abc'
+     */
+    function padEnd(string, length, chars) {
+      string = toString(string);
+      length = toInteger(length);
+
+      var strLength = length ? stringSize(string) : 0;
+      return (length && strLength < length)
+        ? (string + createPadding(length - strLength, chars))
+        : string;
+    }
+
+    /**
+     * Pads `string` on the left side if it's shorter than `length`. Padding
+     * characters are truncated if they exceed `length`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to pad.
+     * @param {number} [length=0] The padding length.
+     * @param {string} [chars=' '] The string used as padding.
+     * @returns {string} Returns the padded string.
+     * @example
+     *
+     * _.padStart('abc', 6);
+     * // => '   abc'
+     *
+     * _.padStart('abc', 6, '_-');
+     * // => '_-_abc'
+     *
+     * _.padStart('abc', 3);
+     * // => 'abc'
+     */
+    function padStart(string, length, chars) {
+      string = toString(string);
+      length = toInteger(length);
+
+      var strLength = length ? stringSize(string) : 0;
+      return (length && strLength < length)
+        ? (createPadding(length - strLength, chars) + string)
+        : string;
+    }
+
+    /**
+     * Converts `string` to an integer of the specified radix. If `radix` is
+     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
+     * hexadecimal, in which case a `radix` of `16` is used.
+     *
+     * **Note:** This method aligns with the
+     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
+     *
+     * @static
+     * @memberOf _
+     * @since 1.1.0
+     * @category String
+     * @param {string} string The string to convert.
+     * @param {number} [radix=10] The radix to interpret `value` by.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {number} Returns the converted integer.
+     * @example
+     *
+     * _.parseInt('08');
+     * // => 8
+     *
+     * _.map(['6', '08', '10'], _.parseInt);
+     * // => [6, 8, 10]
+     */
+    function parseInt(string, radix, guard) {
+      if (guard || radix == null) {
+        radix = 0;
+      } else if (radix) {
+        radix = +radix;
+      }
+      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
+    }
+
+    /**
+     * Repeats the given string `n` times.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to repeat.
+     * @param {number} [n=1] The number of times to repeat the string.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {string} Returns the repeated string.
+     * @example
+     *
+     * _.repeat('*', 3);
+     * // => '***'
+     *
+     * _.repeat('abc', 2);
+     * // => 'abcabc'
+     *
+     * _.repeat('abc', 0);
+     * // => ''
+     */
+    function repeat(string, n, guard) {
+      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
+        n = 1;
+      } else {
+        n = toInteger(n);
+      }
+      return baseRepeat(toString(string), n);
+    }
+
+    /**
+     * Replaces matches for `pattern` in `string` with `replacement`.
+     *
+     * **Note:** This method is based on
+     * [`String#replace`](https://mdn.io/String/replace).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to modify.
+     * @param {RegExp|string} pattern The pattern to replace.
+     * @param {Function|string} replacement The match replacement.
+     * @returns {string} Returns the modified string.
+     * @example
+     *
+     * _.replace('Hi Fred', 'Fred', 'Barney');
+     * // => 'Hi Barney'
+     */
+    function replace() {
+      var args = arguments,
+          string = toString(args[0]);
+
+      return args.length < 3 ? string : string.replace(args[1], args[2]);
+    }
+
+    /**
+     * Converts `string` to
+     * [snake case](https://en.wikipedia.org/wiki/Snake_case).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the snake cased string.
+     * @example
+     *
+     * _.snakeCase('Foo Bar');
+     * // => 'foo_bar'
+     *
+     * _.snakeCase('fooBar');
+     * // => 'foo_bar'
+     *
+     * _.snakeCase('--FOO-BAR--');
+     * // => 'foo_bar'
+     */
+    var snakeCase = createCompounder(function(result, word, index) {
+      return result + (index ? '_' : '') + word.toLowerCase();
+    });
+
+    /**
+     * Splits `string` by `separator`.
+     *
+     * **Note:** This method is based on
+     * [`String#split`](https://mdn.io/String/split).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to split.
+     * @param {RegExp|string} separator The separator pattern to split by.
+     * @param {number} [limit] The length to truncate results to.
+     * @returns {Array} Returns the string segments.
+     * @example
+     *
+     * _.split('a-b-c', '-', 2);
+     * // => ['a', 'b']
+     */
+    function split(string, separator, limit) {
+      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
+        separator = limit = undefined;
+      }
+      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
+      if (!limit) {
+        return [];
+      }
+      string = toString(string);
+      if (string && (
+            typeof separator == 'string' ||
+            (separator != null && !isRegExp(separator))
+          )) {
+        separator = baseToString(separator);
+        if (!separator && hasUnicode(string)) {
+          return castSlice(stringToArray(string), 0, limit);
+        }
+      }
+      return string.split(separator, limit);
+    }
+
+    /**
+     * Converts `string` to
+     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
+     *
+     * @static
+     * @memberOf _
+     * @since 3.1.0
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the start cased string.
+     * @example
+     *
+     * _.startCase('--foo-bar--');
+     * // => 'Foo Bar'
+     *
+     * _.startCase('fooBar');
+     * // => 'Foo Bar'
+     *
+     * _.startCase('__FOO_BAR__');
+     * // => 'FOO BAR'
+     */
+    var startCase = createCompounder(function(result, word, index) {
+      return result + (index ? ' ' : '') + upperFirst(word);
+    });
+
+    /**
+     * Checks if `string` starts with the given target string.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to inspect.
+     * @param {string} [target] The string to search for.
+     * @param {number} [position=0] The position to search from.
+     * @returns {boolean} Returns `true` if `string` starts with `target`,
+     *  else `false`.
+     * @example
+     *
+     * _.startsWith('abc', 'a');
+     * // => true
+     *
+     * _.startsWith('abc', 'b');
+     * // => false
+     *
+     * _.startsWith('abc', 'b', 1);
+     * // => true
+     */
+    function startsWith(string, target, position) {
+      string = toString(string);
+      position = position == null
+        ? 0
+        : baseClamp(toInteger(position), 0, string.length);
+
+      target = baseToString(target);
+      return string.slice(position, position + target.length) == target;
+    }
+
+    /**
+     * Creates a compiled template function that can interpolate data properties
+     * in "interpolate" delimiters, HTML-escape interpolated data properties in
+     * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
+     * properties may be accessed as free variables in the template. If a setting
+     * object is given, it takes precedence over `_.templateSettings` values.
+     *
+     * **Note:** In the development build `_.template` utilizes
+     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
+     * for easier debugging.
+     *
+     * For more information on precompiling templates see
+     * [lodash's custom builds documentation](https://lodash.com/custom-builds).
+     *
+     * For more information on Chrome extension sandboxes see
+     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category String
+     * @param {string} [string=''] The template string.
+     * @param {Object} [options={}] The options object.
+     * @param {RegExp} [options.escape=_.templateSettings.escape]
+     *  The HTML "escape" delimiter.
+     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
+     *  The "evaluate" delimiter.
+     * @param {Object} [options.imports=_.templateSettings.imports]
+     *  An object to import into the template as free variables.
+     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
+     *  The "interpolate" delimiter.
+     * @param {string} [options.sourceURL='lodash.templateSources[n]']
+     *  The sourceURL of the compiled template.
+     * @param {string} [options.variable='obj']
+     *  The data object variable name.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {Function} Returns the compiled template function.
+     * @example
+     *
+     * // Use the "interpolate" delimiter to create a compiled template.
+     * var compiled = _.template('hello <%= user %>!');
+     * compiled({ 'user': 'fred' });
+     * // => 'hello fred!'
+     *
+     * // Use the HTML "escape" delimiter to escape data property values.
+     * var compiled = _.template('<b><%- value %></b>');
+     * compiled({ 'value': '<script>' });
+     * // => '<b>&lt;script&gt;</b>'
+     *
+     * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
+     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
+     * compiled({ 'users': ['fred', 'barney'] });
+     * // => '<li>fred</li><li>barney</li>'
+     *
+     * // Use the internal `print` function in "evaluate" delimiters.
+     * var compiled = _.template('<% print("hello " + user); %>!');
+     * compiled({ 'user': 'barney' });
+     * // => 'hello barney!'
+     *
+     * // Use the ES template literal delimiter as an "interpolate" delimiter.
+     * // Disable support by replacing the "interpolate" delimiter.
+     * var compiled = _.template('hello ${ user }!');
+     * compiled({ 'user': 'pebbles' });
+     * // => 'hello pebbles!'
+     *
+     * // Use backslashes to treat delimiters as plain text.
+     * var compiled = _.template('<%= "\\<%- value %\\>" %>');
+     * compiled({ 'value': 'ignored' });
+     * // => '<%- value %>'
+     *
+     * // Use the `imports` option to import `jQuery` as `jq`.
+     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
+     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
+     * compiled({ 'users': ['fred', 'barney'] });
+     * // => '<li>fred</li><li>barney</li>'
+     *
+     * // Use the `sourceURL` option to specify a custom sourceURL for the template.
+     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
+     * compiled(data);
+     * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
+     *
+     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
+     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
+     * compiled.source;
+     * // => function(data) {
+     * //   var __t, __p = '';
+     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
+     * //   return __p;
+     * // }
+     *
+     * // Use custom template delimiters.
+     * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
+     * var compiled = _.template('hello {{ user }}!');
+     * compiled({ 'user': 'mustache' });
+     * // => 'hello mustache!'
+     *
+     * // Use the `source` property to inline compiled templates for meaningful
+     * // line numbers in error messages and stack traces.
+     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
+     *   var JST = {\
+     *     "main": ' + _.template(mainText).source + '\
+     *   };\
+     * ');
+     */
+    function template(string, options, guard) {
+      // Based on John Resig's `tmpl` implementation
+      // (http://ejohn.org/blog/javascript-micro-templating/)
+      // and Laura Doktorova's doT.js (https://github.com/olado/doT).
+      var settings = lodash.templateSettings;
+
+      if (guard && isIterateeCall(string, options, guard)) {
+        options = undefined;
+      }
+      string = toString(string);
+      options = assignInWith({}, options, settings, customDefaultsAssignIn);
+
+      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
+          importsKeys = keys(imports),
+          importsValues = baseValues(imports, importsKeys);
+
+      var isEscaping,
+          isEvaluating,
+          index = 0,
+          interpolate = options.interpolate || reNoMatch,
+          source = "__p += '";
+
+      // Compile the regexp to match each delimiter.
+      var reDelimiters = RegExp(
+        (options.escape || reNoMatch).source + '|' +
+        interpolate.source + '|' +
+        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
+        (options.evaluate || reNoMatch).source + '|$'
+      , 'g');
+
+      // Use a sourceURL for easier debugging.
+      // The sourceURL gets injected into the source that's eval-ed, so be careful
+      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in
+      // and escape the comment, thus injecting code that gets evaled.
+      var sourceURL = '//# sourceURL=' +
+        (hasOwnProperty.call(options, 'sourceURL')
+          ? (options.sourceURL + '').replace(/\s/g, ' ')
+          : ('lodash.templateSources[' + (++templateCounter) + ']')
+        ) + '\n';
+
+      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
+        interpolateValue || (interpolateValue = esTemplateValue);
+
+        // Escape characters that can't be included in string literals.
+        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
+
+        // Replace delimiters with snippets.
+        if (escapeValue) {
+          isEscaping = true;
+          source += "' +\n__e(" + escapeValue + ") +\n'";
+        }
+        if (evaluateValue) {
+          isEvaluating = true;
+          source += "';\n" + evaluateValue + ";\n__p += '";
+        }
+        if (interpolateValue) {
+          source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
+        }
+        index = offset + match.length;
+
+        // The JS engine embedded in Adobe products needs `match` returned in
+        // order to produce the correct `offset` value.
+        return match;
+      });
+
+      source += "';\n";
+
+      // If `variable` is not specified wrap a with-statement around the generated
+      // code to add the data object to the top of the scope chain.
+      var variable = hasOwnProperty.call(options, 'variable') && options.variable;
+      if (!variable) {
+        source = 'with (obj) {\n' + source + '\n}\n';
+      }
+      // Throw an error if a forbidden character was found in `variable`, to prevent
+      // potential command injection attacks.
+      else if (reForbiddenIdentifierChars.test(variable)) {
+        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);
+      }
+
+      // Cleanup code by stripping empty strings.
+      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
+        .replace(reEmptyStringMiddle, '$1')
+        .replace(reEmptyStringTrailing, '$1;');
+
+      // Frame code as the function body.
+      source = 'function(' + (variable || 'obj') + ') {\n' +
+        (variable
+          ? ''
+          : 'obj || (obj = {});\n'
+        ) +
+        "var __t, __p = ''" +
+        (isEscaping
+           ? ', __e = _.escape'
+           : ''
+        ) +
+        (isEvaluating
+          ? ', __j = Array.prototype.join;\n' +
+            "function print() { __p += __j.call(arguments, '') }\n"
+          : ';\n'
+        ) +
+        source +
+        'return __p\n}';
+
+      var result = attempt(function() {
+        return Function(importsKeys, sourceURL + 'return ' + source)
+          .apply(undefined, importsValues);
+      });
+
+      // Provide the compiled function's source by its `toString` method or
+      // the `source` property as a convenience for inlining compiled templates.
+      result.source = source;
+      if (isError(result)) {
+        throw result;
+      }
+      return result;
+    }
+
+    /**
+     * Converts `string`, as a whole, to lower case just like
+     * [String#toLowerCase](https://mdn.io/toLowerCase).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the lower cased string.
+     * @example
+     *
+     * _.toLower('--Foo-Bar--');
+     * // => '--foo-bar--'
+     *
+     * _.toLower('fooBar');
+     * // => 'foobar'
+     *
+     * _.toLower('__FOO_BAR__');
+     * // => '__foo_bar__'
+     */
+    function toLower(value) {
+      return toString(value).toLowerCase();
+    }
+
+    /**
+     * Converts `string`, as a whole, to upper case just like
+     * [String#toUpperCase](https://mdn.io/toUpperCase).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the upper cased string.
+     * @example
+     *
+     * _.toUpper('--foo-bar--');
+     * // => '--FOO-BAR--'
+     *
+     * _.toUpper('fooBar');
+     * // => 'FOOBAR'
+     *
+     * _.toUpper('__foo_bar__');
+     * // => '__FOO_BAR__'
+     */
+    function toUpper(value) {
+      return toString(value).toUpperCase();
+    }
+
+    /**
+     * Removes leading and trailing whitespace or specified characters from `string`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to trim.
+     * @param {string} [chars=whitespace] The characters to trim.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {string} Returns the trimmed string.
+     * @example
+     *
+     * _.trim('  abc  ');
+     * // => 'abc'
+     *
+     * _.trim('-_-abc-_-', '_-');
+     * // => 'abc'
+     *
+     * _.map(['  foo  ', '  bar  '], _.trim);
+     * // => ['foo', 'bar']
+     */
+    function trim(string, chars, guard) {
+      string = toString(string);
+      if (string && (guard || chars === undefined)) {
+        return baseTrim(string);
+      }
+      if (!string || !(chars = baseToString(chars))) {
+        return string;
+      }
+      var strSymbols = stringToArray(string),
+          chrSymbols = stringToArray(chars),
+          start = charsStartIndex(strSymbols, chrSymbols),
+          end = charsEndIndex(strSymbols, chrSymbols) + 1;
+
+      return castSlice(strSymbols, start, end).join('');
+    }
+
+    /**
+     * Removes trailing whitespace or specified characters from `string`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to trim.
+     * @param {string} [chars=whitespace] The characters to trim.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {string} Returns the trimmed string.
+     * @example
+     *
+     * _.trimEnd('  abc  ');
+     * // => '  abc'
+     *
+     * _.trimEnd('-_-abc-_-', '_-');
+     * // => '-_-abc'
+     */
+    function trimEnd(string, chars, guard) {
+      string = toString(string);
+      if (string && (guard || chars === undefined)) {
+        return string.slice(0, trimmedEndIndex(string) + 1);
+      }
+      if (!string || !(chars = baseToString(chars))) {
+        return string;
+      }
+      var strSymbols = stringToArray(string),
+          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
+
+      return castSlice(strSymbols, 0, end).join('');
+    }
+
+    /**
+     * Removes leading whitespace or specified characters from `string`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to trim.
+     * @param {string} [chars=whitespace] The characters to trim.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {string} Returns the trimmed string.
+     * @example
+     *
+     * _.trimStart('  abc  ');
+     * // => 'abc  '
+     *
+     * _.trimStart('-_-abc-_-', '_-');
+     * // => 'abc-_-'
+     */
+    function trimStart(string, chars, guard) {
+      string = toString(string);
+      if (string && (guard || chars === undefined)) {
+        return string.replace(reTrimStart, '');
+      }
+      if (!string || !(chars = baseToString(chars))) {
+        return string;
+      }
+      var strSymbols = stringToArray(string),
+          start = charsStartIndex(strSymbols, stringToArray(chars));
+
+      return castSlice(strSymbols, start).join('');
+    }
+
+    /**
+     * Truncates `string` if it's longer than the given maximum string length.
+     * The last characters of the truncated string are replaced with the omission
+     * string which defaults to "...".
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to truncate.
+     * @param {Object} [options={}] The options object.
+     * @param {number} [options.length=30] The maximum string length.
+     * @param {string} [options.omission='...'] The string to indicate text is omitted.
+     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
+     * @returns {string} Returns the truncated string.
+     * @example
+     *
+     * _.truncate('hi-diddly-ho there, neighborino');
+     * // => 'hi-diddly-ho there, neighbo...'
+     *
+     * _.truncate('hi-diddly-ho there, neighborino', {
+     *   'length': 24,
+     *   'separator': ' '
+     * });
+     * // => 'hi-diddly-ho there,...'
+     *
+     * _.truncate('hi-diddly-ho there, neighborino', {
+     *   'length': 24,
+     *   'separator': /,? +/
+     * });
+     * // => 'hi-diddly-ho there...'
+     *
+     * _.truncate('hi-diddly-ho there, neighborino', {
+     *   'omission': ' [...]'
+     * });
+     * // => 'hi-diddly-ho there, neig [...]'
+     */
+    function truncate(string, options) {
+      var length = DEFAULT_TRUNC_LENGTH,
+          omission = DEFAULT_TRUNC_OMISSION;
+
+      if (isObject(options)) {
+        var separator = 'separator' in options ? options.separator : separator;
+        length = 'length' in options ? toInteger(options.length) : length;
+        omission = 'omission' in options ? baseToString(options.omission) : omission;
+      }
+      string = toString(string);
+
+      var strLength = string.length;
+      if (hasUnicode(string)) {
+        var strSymbols = stringToArray(string);
+        strLength = strSymbols.length;
+      }
+      if (length >= strLength) {
+        return string;
+      }
+      var end = length - stringSize(omission);
+      if (end < 1) {
+        return omission;
+      }
+      var result = strSymbols
+        ? castSlice(strSymbols, 0, end).join('')
+        : string.slice(0, end);
+
+      if (separator === undefined) {
+        return result + omission;
+      }
+      if (strSymbols) {
+        end += (result.length - end);
+      }
+      if (isRegExp(separator)) {
+        if (string.slice(end).search(separator)) {
+          var match,
+              substring = result;
+
+          if (!separator.global) {
+            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
+          }
+          separator.lastIndex = 0;
+          while ((match = separator.exec(substring))) {
+            var newEnd = match.index;
+          }
+          result = result.slice(0, newEnd === undefined ? end : newEnd);
+        }
+      } else if (string.indexOf(baseToString(separator), end) != end) {
+        var index = result.lastIndexOf(separator);
+        if (index > -1) {
+          result = result.slice(0, index);
+        }
+      }
+      return result + omission;
+    }
+
+    /**
+     * The inverse of `_.escape`; this method converts the HTML entities
+     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
+     * their corresponding characters.
+     *
+     * **Note:** No other HTML entities are unescaped. To unescape additional
+     * HTML entities use a third-party library like [_he_](https://mths.be/he).
+     *
+     * @static
+     * @memberOf _
+     * @since 0.6.0
+     * @category String
+     * @param {string} [string=''] The string to unescape.
+     * @returns {string} Returns the unescaped string.
+     * @example
+     *
+     * _.unescape('fred, barney, &amp; pebbles');
+     * // => 'fred, barney, & pebbles'
+     */
+    function unescape(string) {
+      string = toString(string);
+      return (string && reHasEscapedHtml.test(string))
+        ? string.replace(reEscapedHtml, unescapeHtmlChar)
+        : string;
+    }
+
+    /**
+     * Converts `string`, as space separated words, to upper case.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the upper cased string.
+     * @example
+     *
+     * _.upperCase('--foo-bar');
+     * // => 'FOO BAR'
+     *
+     * _.upperCase('fooBar');
+     * // => 'FOO BAR'
+     *
+     * _.upperCase('__foo_bar__');
+     * // => 'FOO BAR'
+     */
+    var upperCase = createCompounder(function(result, word, index) {
+      return result + (index ? ' ' : '') + word.toUpperCase();
+    });
+
+    /**
+     * Converts the first character of `string` to upper case.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category String
+     * @param {string} [string=''] The string to convert.
+     * @returns {string} Returns the converted string.
+     * @example
+     *
+     * _.upperFirst('fred');
+     * // => 'Fred'
+     *
+     * _.upperFirst('FRED');
+     * // => 'FRED'
+     */
+    var upperFirst = createCaseFirst('toUpperCase');
+
+    /**
+     * Splits `string` into an array of its words.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category String
+     * @param {string} [string=''] The string to inspect.
+     * @param {RegExp|string} [pattern] The pattern to match words.
+     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
+     * @returns {Array} Returns the words of `string`.
+     * @example
+     *
+     * _.words('fred, barney, & pebbles');
+     * // => ['fred', 'barney', 'pebbles']
+     *
+     * _.words('fred, barney, & pebbles', /[^, ]+/g);
+     * // => ['fred', 'barney', '&', 'pebbles']
+     */
+    function words(string, pattern, guard) {
+      string = toString(string);
+      pattern = guard ? undefined : pattern;
+
+      if (pattern === undefined) {
+        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
+      }
+      return string.match(pattern) || [];
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Attempts to invoke `func`, returning either the result or the caught error
+     * object. Any additional arguments are provided to `func` when it's invoked.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Util
+     * @param {Function} func The function to attempt.
+     * @param {...*} [args] The arguments to invoke `func` with.
+     * @returns {*} Returns the `func` result or error object.
+     * @example
+     *
+     * // Avoid throwing errors for invalid selectors.
+     * var elements = _.attempt(function(selector) {
+     *   return document.querySelectorAll(selector);
+     * }, '>_>');
+     *
+     * if (_.isError(elements)) {
+     *   elements = [];
+     * }
+     */
+    var attempt = baseRest(function(func, args) {
+      try {
+        return apply(func, undefined, args);
+      } catch (e) {
+        return isError(e) ? e : new Error(e);
+      }
+    });
+
+    /**
+     * Binds methods of an object to the object itself, overwriting the existing
+     * method.
+     *
+     * **Note:** This method doesn't set the "length" property of bound functions.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Util
+     * @param {Object} object The object to bind and assign the bound methods to.
+     * @param {...(string|string[])} methodNames The object method names to bind.
+     * @returns {Object} Returns `object`.
+     * @example
+     *
+     * var view = {
+     *   'label': 'docs',
+     *   'click': function() {
+     *     console.log('clicked ' + this.label);
+     *   }
+     * };
+     *
+     * _.bindAll(view, ['click']);
+     * jQuery(element).on('click', view.click);
+     * // => Logs 'clicked docs' when clicked.
+     */
+    var bindAll = flatRest(function(object, methodNames) {
+      arrayEach(methodNames, function(key) {
+        key = toKey(key);
+        baseAssignValue(object, key, bind(object[key], object));
+      });
+      return object;
+    });
+
+    /**
+     * Creates a function that iterates over `pairs` and invokes the corresponding
+     * function of the first predicate to return truthy. The predicate-function
+     * pairs are invoked with the `this` binding and arguments of the created
+     * function.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Util
+     * @param {Array} pairs The predicate-function pairs.
+     * @returns {Function} Returns the new composite function.
+     * @example
+     *
+     * var func = _.cond([
+     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],
+     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
+     *   [_.stubTrue,                      _.constant('no match')]
+     * ]);
+     *
+     * func({ 'a': 1, 'b': 2 });
+     * // => 'matches A'
+     *
+     * func({ 'a': 0, 'b': 1 });
+     * // => 'matches B'
+     *
+     * func({ 'a': '1', 'b': '2' });
+     * // => 'no match'
+     */
+    function cond(pairs) {
+      var length = pairs == null ? 0 : pairs.length,
+          toIteratee = getIteratee();
+
+      pairs = !length ? [] : arrayMap(pairs, function(pair) {
+        if (typeof pair[1] != 'function') {
+          throw new TypeError(FUNC_ERROR_TEXT);
+        }
+        return [toIteratee(pair[0]), pair[1]];
+      });
+
+      return baseRest(function(args) {
+        var index = -1;
+        while (++index < length) {
+          var pair = pairs[index];
+          if (apply(pair[0], this, args)) {
+            return apply(pair[1], this, args);
+          }
+        }
+      });
+    }
+
+    /**
+     * Creates a function that invokes the predicate properties of `source` with
+     * the corresponding property values of a given object, returning `true` if
+     * all predicates return truthy, else `false`.
+     *
+     * **Note:** The created function is equivalent to `_.conformsTo` with
+     * `source` partially applied.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Util
+     * @param {Object} source The object of property predicates to conform to.
+     * @returns {Function} Returns the new spec function.
+     * @example
+     *
+     * var objects = [
+     *   { 'a': 2, 'b': 1 },
+     *   { 'a': 1, 'b': 2 }
+     * ];
+     *
+     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
+     * // => [{ 'a': 1, 'b': 2 }]
+     */
+    function conforms(source) {
+      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
+    }
+
+    /**
+     * Creates a function that returns `value`.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.4.0
+     * @category Util
+     * @param {*} value The value to return from the new function.
+     * @returns {Function} Returns the new constant function.
+     * @example
+     *
+     * var objects = _.times(2, _.constant({ 'a': 1 }));
+     *
+     * console.log(objects);
+     * // => [{ 'a': 1 }, { 'a': 1 }]
+     *
+     * console.log(objects[0] === objects[1]);
+     * // => true
+     */
+    function constant(value) {
+      return function() {
+        return value;
+      };
+    }
+
+    /**
+     * Checks `value` to determine whether a default value should be returned in
+     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
+     * or `undefined`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.14.0
+     * @category Util
+     * @param {*} value The value to check.
+     * @param {*} defaultValue The default value.
+     * @returns {*} Returns the resolved value.
+     * @example
+     *
+     * _.defaultTo(1, 10);
+     * // => 1
+     *
+     * _.defaultTo(undefined, 10);
+     * // => 10
+     */
+    function defaultTo(value, defaultValue) {
+      return (value == null || value !== value) ? defaultValue : value;
+    }
+
+    /**
+     * Creates a function that returns the result of invoking the given functions
+     * with the `this` binding of the created function, where each successive
+     * invocation is supplied the return value of the previous.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Util
+     * @param {...(Function|Function[])} [funcs] The functions to invoke.
+     * @returns {Function} Returns the new composite function.
+     * @see _.flowRight
+     * @example
+     *
+     * function square(n) {
+     *   return n * n;
+     * }
+     *
+     * var addSquare = _.flow([_.add, square]);
+     * addSquare(1, 2);
+     * // => 9
+     */
+    var flow = createFlow();
+
+    /**
+     * This method is like `_.flow` except that it creates a function that
+     * invokes the given functions from right to left.
+     *
+     * @static
+     * @since 3.0.0
+     * @memberOf _
+     * @category Util
+     * @param {...(Function|Function[])} [funcs] The functions to invoke.
+     * @returns {Function} Returns the new composite function.
+     * @see _.flow
+     * @example
+     *
+     * function square(n) {
+     *   return n * n;
+     * }
+     *
+     * var addSquare = _.flowRight([square, _.add]);
+     * addSquare(1, 2);
+     * // => 9
+     */
+    var flowRight = createFlow(true);
+
+    /**
+     * This method returns the first argument it receives.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Util
+     * @param {*} value Any value.
+     * @returns {*} Returns `value`.
+     * @example
+     *
+     * var object = { 'a': 1 };
+     *
+     * console.log(_.identity(object) === object);
+     * // => true
+     */
+    function identity(value) {
+      return value;
+    }
+
+    /**
+     * Creates a function that invokes `func` with the arguments of the created
+     * function. If `func` is a property name, the created function returns the
+     * property value for a given element. If `func` is an array or object, the
+     * created function returns `true` for elements that contain the equivalent
+     * source properties, otherwise it returns `false`.
+     *
+     * @static
+     * @since 4.0.0
+     * @memberOf _
+     * @category Util
+     * @param {*} [func=_.identity] The value to convert to a callback.
+     * @returns {Function} Returns the callback.
+     * @example
+     *
+     * var users = [
+     *   { 'user': 'barney', 'age': 36, 'active': true },
+     *   { 'user': 'fred',   'age': 40, 'active': false }
+     * ];
+     *
+     * // The `_.matches` iteratee shorthand.
+     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
+     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
+     *
+     * // The `_.matchesProperty` iteratee shorthand.
+     * _.filter(users, _.iteratee(['user', 'fred']));
+     * // => [{ 'user': 'fred', 'age': 40 }]
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.map(users, _.iteratee('user'));
+     * // => ['barney', 'fred']
+     *
+     * // Create custom iteratee shorthands.
+     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
+     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {
+     *     return func.test(string);
+     *   };
+     * });
+     *
+     * _.filter(['abc', 'def'], /ef/);
+     * // => ['def']
+     */
+    function iteratee(func) {
+      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
+    }
+
+    /**
+     * Creates a function that performs a partial deep comparison between a given
+     * object and `source`, returning `true` if the given object has equivalent
+     * property values, else `false`.
+     *
+     * **Note:** The created function is equivalent to `_.isMatch` with `source`
+     * partially applied.
+     *
+     * Partial comparisons will match empty array and empty object `source`
+     * values against any array or object value, respectively. See `_.isEqual`
+     * for a list of supported value comparisons.
+     *
+     * **Note:** Multiple values can be checked by combining several matchers
+     * using `_.overSome`
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Util
+     * @param {Object} source The object of property values to match.
+     * @returns {Function} Returns the new spec function.
+     * @example
+     *
+     * var objects = [
+     *   { 'a': 1, 'b': 2, 'c': 3 },
+     *   { 'a': 4, 'b': 5, 'c': 6 }
+     * ];
+     *
+     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
+     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
+     *
+     * // Checking for several possible values
+     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));
+     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
+     */
+    function matches(source) {
+      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
+    }
+
+    /**
+     * Creates a function that performs a partial deep comparison between the
+     * value at `path` of a given object to `srcValue`, returning `true` if the
+     * object value is equivalent, else `false`.
+     *
+     * **Note:** Partial comparisons will match empty array and empty object
+     * `srcValue` values against any array or object value, respectively. See
+     * `_.isEqual` for a list of supported value comparisons.
+     *
+     * **Note:** Multiple values can be checked by combining several matchers
+     * using `_.overSome`
+     *
+     * @static
+     * @memberOf _
+     * @since 3.2.0
+     * @category Util
+     * @param {Array|string} path The path of the property to get.
+     * @param {*} srcValue The value to match.
+     * @returns {Function} Returns the new spec function.
+     * @example
+     *
+     * var objects = [
+     *   { 'a': 1, 'b': 2, 'c': 3 },
+     *   { 'a': 4, 'b': 5, 'c': 6 }
+     * ];
+     *
+     * _.find(objects, _.matchesProperty('a', 4));
+     * // => { 'a': 4, 'b': 5, 'c': 6 }
+     *
+     * // Checking for several possible values
+     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));
+     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
+     */
+    function matchesProperty(path, srcValue) {
+      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
+    }
+
+    /**
+     * Creates a function that invokes the method at `path` of a given object.
+     * Any additional arguments are provided to the invoked method.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.7.0
+     * @category Util
+     * @param {Array|string} path The path of the method to invoke.
+     * @param {...*} [args] The arguments to invoke the method with.
+     * @returns {Function} Returns the new invoker function.
+     * @example
+     *
+     * var objects = [
+     *   { 'a': { 'b': _.constant(2) } },
+     *   { 'a': { 'b': _.constant(1) } }
+     * ];
+     *
+     * _.map(objects, _.method('a.b'));
+     * // => [2, 1]
+     *
+     * _.map(objects, _.method(['a', 'b']));
+     * // => [2, 1]
+     */
+    var method = baseRest(function(path, args) {
+      return function(object) {
+        return baseInvoke(object, path, args);
+      };
+    });
+
+    /**
+     * The opposite of `_.method`; this method creates a function that invokes
+     * the method at a given path of `object`. Any additional arguments are
+     * provided to the invoked method.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.7.0
+     * @category Util
+     * @param {Object} object The object to query.
+     * @param {...*} [args] The arguments to invoke the method with.
+     * @returns {Function} Returns the new invoker function.
+     * @example
+     *
+     * var array = _.times(3, _.constant),
+     *     object = { 'a': array, 'b': array, 'c': array };
+     *
+     * _.map(['a[2]', 'c[0]'], _.methodOf(object));
+     * // => [2, 0]
+     *
+     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
+     * // => [2, 0]
+     */
+    var methodOf = baseRest(function(object, args) {
+      return function(path) {
+        return baseInvoke(object, path, args);
+      };
+    });
+
+    /**
+     * Adds all own enumerable string keyed function properties of a source
+     * object to the destination object. If `object` is a function, then methods
+     * are added to its prototype as well.
+     *
+     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
+     * avoid conflicts caused by modifying the original.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Util
+     * @param {Function|Object} [object=lodash] The destination object.
+     * @param {Object} source The object of functions to add.
+     * @param {Object} [options={}] The options object.
+     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
+     * @returns {Function|Object} Returns `object`.
+     * @example
+     *
+     * function vowels(string) {
+     *   return _.filter(string, function(v) {
+     *     return /[aeiou]/i.test(v);
+     *   });
+     * }
+     *
+     * _.mixin({ 'vowels': vowels });
+     * _.vowels('fred');
+     * // => ['e']
+     *
+     * _('fred').vowels().value();
+     * // => ['e']
+     *
+     * _.mixin({ 'vowels': vowels }, { 'chain': false });
+     * _('fred').vowels();
+     * // => ['e']
+     */
+    function mixin(object, source, options) {
+      var props = keys(source),
+          methodNames = baseFunctions(source, props);
+
+      if (options == null &&
+          !(isObject(source) && (methodNames.length || !props.length))) {
+        options = source;
+        source = object;
+        object = this;
+        methodNames = baseFunctions(source, keys(source));
+      }
+      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
+          isFunc = isFunction(object);
+
+      arrayEach(methodNames, function(methodName) {
+        var func = source[methodName];
+        object[methodName] = func;
+        if (isFunc) {
+          object.prototype[methodName] = function() {
+            var chainAll = this.__chain__;
+            if (chain || chainAll) {
+              var result = object(this.__wrapped__),
+                  actions = result.__actions__ = copyArray(this.__actions__);
+
+              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
+              result.__chain__ = chainAll;
+              return result;
+            }
+            return func.apply(object, arrayPush([this.value()], arguments));
+          };
+        }
+      });
+
+      return object;
+    }
+
+    /**
+     * Reverts the `_` variable to its previous value and returns a reference to
+     * the `lodash` function.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Util
+     * @returns {Function} Returns the `lodash` function.
+     * @example
+     *
+     * var lodash = _.noConflict();
+     */
+    function noConflict() {
+      if (root._ === this) {
+        root._ = oldDash;
+      }
+      return this;
+    }
+
+    /**
+     * This method returns `undefined`.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.3.0
+     * @category Util
+     * @example
+     *
+     * _.times(2, _.noop);
+     * // => [undefined, undefined]
+     */
+    function noop() {
+      // No operation performed.
+    }
+
+    /**
+     * Creates a function that gets the argument at index `n`. If `n` is negative,
+     * the nth argument from the end is returned.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Util
+     * @param {number} [n=0] The index of the argument to return.
+     * @returns {Function} Returns the new pass-thru function.
+     * @example
+     *
+     * var func = _.nthArg(1);
+     * func('a', 'b', 'c', 'd');
+     * // => 'b'
+     *
+     * var func = _.nthArg(-2);
+     * func('a', 'b', 'c', 'd');
+     * // => 'c'
+     */
+    function nthArg(n) {
+      n = toInteger(n);
+      return baseRest(function(args) {
+        return baseNth(args, n);
+      });
+    }
+
+    /**
+     * Creates a function that invokes `iteratees` with the arguments it receives
+     * and returns their results.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Util
+     * @param {...(Function|Function[])} [iteratees=[_.identity]]
+     *  The iteratees to invoke.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var func = _.over([Math.max, Math.min]);
+     *
+     * func(1, 2, 3, 4);
+     * // => [4, 1]
+     */
+    var over = createOver(arrayMap);
+
+    /**
+     * Creates a function that checks if **all** of the `predicates` return
+     * truthy when invoked with the arguments it receives.
+     *
+     * Following shorthands are possible for providing predicates.
+     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
+     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Util
+     * @param {...(Function|Function[])} [predicates=[_.identity]]
+     *  The predicates to check.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var func = _.overEvery([Boolean, isFinite]);
+     *
+     * func('1');
+     * // => true
+     *
+     * func(null);
+     * // => false
+     *
+     * func(NaN);
+     * // => false
+     */
+    var overEvery = createOver(arrayEvery);
+
+    /**
+     * Creates a function that checks if **any** of the `predicates` return
+     * truthy when invoked with the arguments it receives.
+     *
+     * Following shorthands are possible for providing predicates.
+     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
+     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Util
+     * @param {...(Function|Function[])} [predicates=[_.identity]]
+     *  The predicates to check.
+     * @returns {Function} Returns the new function.
+     * @example
+     *
+     * var func = _.overSome([Boolean, isFinite]);
+     *
+     * func('1');
+     * // => true
+     *
+     * func(null);
+     * // => true
+     *
+     * func(NaN);
+     * // => false
+     *
+     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])
+     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])
+     */
+    var overSome = createOver(arraySome);
+
+    /**
+     * Creates a function that returns the value at `path` of a given object.
+     *
+     * @static
+     * @memberOf _
+     * @since 2.4.0
+     * @category Util
+     * @param {Array|string} path The path of the property to get.
+     * @returns {Function} Returns the new accessor function.
+     * @example
+     *
+     * var objects = [
+     *   { 'a': { 'b': 2 } },
+     *   { 'a': { 'b': 1 } }
+     * ];
+     *
+     * _.map(objects, _.property('a.b'));
+     * // => [2, 1]
+     *
+     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
+     * // => [1, 2]
+     */
+    function property(path) {
+      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
+    }
+
+    /**
+     * The opposite of `_.property`; this method creates a function that returns
+     * the value at a given path of `object`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.0.0
+     * @category Util
+     * @param {Object} object The object to query.
+     * @returns {Function} Returns the new accessor function.
+     * @example
+     *
+     * var array = [0, 1, 2],
+     *     object = { 'a': array, 'b': array, 'c': array };
+     *
+     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
+     * // => [2, 0]
+     *
+     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
+     * // => [2, 0]
+     */
+    function propertyOf(object) {
+      return function(path) {
+        return object == null ? undefined : baseGet(object, path);
+      };
+    }
+
+    /**
+     * Creates an array of numbers (positive and/or negative) progressing from
+     * `start` up to, but not including, `end`. A step of `-1` is used if a negative
+     * `start` is specified without an `end` or `step`. If `end` is not specified,
+     * it's set to `start` with `start` then set to `0`.
+     *
+     * **Note:** JavaScript follows the IEEE-754 standard for resolving
+     * floating-point values which can produce unexpected results.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Util
+     * @param {number} [start=0] The start of the range.
+     * @param {number} end The end of the range.
+     * @param {number} [step=1] The value to increment or decrement by.
+     * @returns {Array} Returns the range of numbers.
+     * @see _.inRange, _.rangeRight
+     * @example
+     *
+     * _.range(4);
+     * // => [0, 1, 2, 3]
+     *
+     * _.range(-4);
+     * // => [0, -1, -2, -3]
+     *
+     * _.range(1, 5);
+     * // => [1, 2, 3, 4]
+     *
+     * _.range(0, 20, 5);
+     * // => [0, 5, 10, 15]
+     *
+     * _.range(0, -4, -1);
+     * // => [0, -1, -2, -3]
+     *
+     * _.range(1, 4, 0);
+     * // => [1, 1, 1]
+     *
+     * _.range(0);
+     * // => []
+     */
+    var range = createRange();
+
+    /**
+     * This method is like `_.range` except that it populates values in
+     * descending order.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Util
+     * @param {number} [start=0] The start of the range.
+     * @param {number} end The end of the range.
+     * @param {number} [step=1] The value to increment or decrement by.
+     * @returns {Array} Returns the range of numbers.
+     * @see _.inRange, _.range
+     * @example
+     *
+     * _.rangeRight(4);
+     * // => [3, 2, 1, 0]
+     *
+     * _.rangeRight(-4);
+     * // => [-3, -2, -1, 0]
+     *
+     * _.rangeRight(1, 5);
+     * // => [4, 3, 2, 1]
+     *
+     * _.rangeRight(0, 20, 5);
+     * // => [15, 10, 5, 0]
+     *
+     * _.rangeRight(0, -4, -1);
+     * // => [-3, -2, -1, 0]
+     *
+     * _.rangeRight(1, 4, 0);
+     * // => [1, 1, 1]
+     *
+     * _.rangeRight(0);
+     * // => []
+     */
+    var rangeRight = createRange(true);
+
+    /**
+     * This method returns a new empty array.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.13.0
+     * @category Util
+     * @returns {Array} Returns the new empty array.
+     * @example
+     *
+     * var arrays = _.times(2, _.stubArray);
+     *
+     * console.log(arrays);
+     * // => [[], []]
+     *
+     * console.log(arrays[0] === arrays[1]);
+     * // => false
+     */
+    function stubArray() {
+      return [];
+    }
+
+    /**
+     * This method returns `false`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.13.0
+     * @category Util
+     * @returns {boolean} Returns `false`.
+     * @example
+     *
+     * _.times(2, _.stubFalse);
+     * // => [false, false]
+     */
+    function stubFalse() {
+      return false;
+    }
+
+    /**
+     * This method returns a new empty object.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.13.0
+     * @category Util
+     * @returns {Object} Returns the new empty object.
+     * @example
+     *
+     * var objects = _.times(2, _.stubObject);
+     *
+     * console.log(objects);
+     * // => [{}, {}]
+     *
+     * console.log(objects[0] === objects[1]);
+     * // => false
+     */
+    function stubObject() {
+      return {};
+    }
+
+    /**
+     * This method returns an empty string.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.13.0
+     * @category Util
+     * @returns {string} Returns the empty string.
+     * @example
+     *
+     * _.times(2, _.stubString);
+     * // => ['', '']
+     */
+    function stubString() {
+      return '';
+    }
+
+    /**
+     * This method returns `true`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.13.0
+     * @category Util
+     * @returns {boolean} Returns `true`.
+     * @example
+     *
+     * _.times(2, _.stubTrue);
+     * // => [true, true]
+     */
+    function stubTrue() {
+      return true;
+    }
+
+    /**
+     * Invokes the iteratee `n` times, returning an array of the results of
+     * each invocation. The iteratee is invoked with one argument; (index).
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Util
+     * @param {number} n The number of times to invoke `iteratee`.
+     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+     * @returns {Array} Returns the array of results.
+     * @example
+     *
+     * _.times(3, String);
+     * // => ['0', '1', '2']
+     *
+     *  _.times(4, _.constant(0));
+     * // => [0, 0, 0, 0]
+     */
+    function times(n, iteratee) {
+      n = toInteger(n);
+      if (n < 1 || n > MAX_SAFE_INTEGER) {
+        return [];
+      }
+      var index = MAX_ARRAY_LENGTH,
+          length = nativeMin(n, MAX_ARRAY_LENGTH);
+
+      iteratee = getIteratee(iteratee);
+      n -= MAX_ARRAY_LENGTH;
+
+      var result = baseTimes(length, iteratee);
+      while (++index < n) {
+        iteratee(index);
+      }
+      return result;
+    }
+
+    /**
+     * Converts `value` to a property path array.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Util
+     * @param {*} value The value to convert.
+     * @returns {Array} Returns the new property path array.
+     * @example
+     *
+     * _.toPath('a.b.c');
+     * // => ['a', 'b', 'c']
+     *
+     * _.toPath('a[0].b.c');
+     * // => ['a', '0', 'b', 'c']
+     */
+    function toPath(value) {
+      if (isArray(value)) {
+        return arrayMap(value, toKey);
+      }
+      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
+    }
+
+    /**
+     * Generates a unique ID. If `prefix` is given, the ID is appended to it.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Util
+     * @param {string} [prefix=''] The value to prefix the ID with.
+     * @returns {string} Returns the unique ID.
+     * @example
+     *
+     * _.uniqueId('contact_');
+     * // => 'contact_104'
+     *
+     * _.uniqueId();
+     * // => '105'
+     */
+    function uniqueId(prefix) {
+      var id = ++idCounter;
+      return toString(prefix) + id;
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * Adds two numbers.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.4.0
+     * @category Math
+     * @param {number} augend The first number in an addition.
+     * @param {number} addend The second number in an addition.
+     * @returns {number} Returns the total.
+     * @example
+     *
+     * _.add(6, 4);
+     * // => 10
+     */
+    var add = createMathOperation(function(augend, addend) {
+      return augend + addend;
+    }, 0);
+
+    /**
+     * Computes `number` rounded up to `precision`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.10.0
+     * @category Math
+     * @param {number} number The number to round up.
+     * @param {number} [precision=0] The precision to round up to.
+     * @returns {number} Returns the rounded up number.
+     * @example
+     *
+     * _.ceil(4.006);
+     * // => 5
+     *
+     * _.ceil(6.004, 2);
+     * // => 6.01
+     *
+     * _.ceil(6040, -2);
+     * // => 6100
+     */
+    var ceil = createRound('ceil');
+
+    /**
+     * Divide two numbers.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.7.0
+     * @category Math
+     * @param {number} dividend The first number in a division.
+     * @param {number} divisor The second number in a division.
+     * @returns {number} Returns the quotient.
+     * @example
+     *
+     * _.divide(6, 4);
+     * // => 1.5
+     */
+    var divide = createMathOperation(function(dividend, divisor) {
+      return dividend / divisor;
+    }, 1);
+
+    /**
+     * Computes `number` rounded down to `precision`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.10.0
+     * @category Math
+     * @param {number} number The number to round down.
+     * @param {number} [precision=0] The precision to round down to.
+     * @returns {number} Returns the rounded down number.
+     * @example
+     *
+     * _.floor(4.006);
+     * // => 4
+     *
+     * _.floor(0.046, 2);
+     * // => 0.04
+     *
+     * _.floor(4060, -2);
+     * // => 4000
+     */
+    var floor = createRound('floor');
+
+    /**
+     * Computes the maximum value of `array`. If `array` is empty or falsey,
+     * `undefined` is returned.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Math
+     * @param {Array} array The array to iterate over.
+     * @returns {*} Returns the maximum value.
+     * @example
+     *
+     * _.max([4, 2, 8, 6]);
+     * // => 8
+     *
+     * _.max([]);
+     * // => undefined
+     */
+    function max(array) {
+      return (array && array.length)
+        ? baseExtremum(array, identity, baseGt)
+        : undefined;
+    }
+
+    /**
+     * This method is like `_.max` except that it accepts `iteratee` which is
+     * invoked for each element in `array` to generate the criterion by which
+     * the value is ranked. The iteratee is invoked with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Math
+     * @param {Array} array The array to iterate over.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {*} Returns the maximum value.
+     * @example
+     *
+     * var objects = [{ 'n': 1 }, { 'n': 2 }];
+     *
+     * _.maxBy(objects, function(o) { return o.n; });
+     * // => { 'n': 2 }
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.maxBy(objects, 'n');
+     * // => { 'n': 2 }
+     */
+    function maxBy(array, iteratee) {
+      return (array && array.length)
+        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
+        : undefined;
+    }
+
+    /**
+     * Computes the mean of the values in `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Math
+     * @param {Array} array The array to iterate over.
+     * @returns {number} Returns the mean.
+     * @example
+     *
+     * _.mean([4, 2, 8, 6]);
+     * // => 5
+     */
+    function mean(array) {
+      return baseMean(array, identity);
+    }
+
+    /**
+     * This method is like `_.mean` except that it accepts `iteratee` which is
+     * invoked for each element in `array` to generate the value to be averaged.
+     * The iteratee is invoked with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.7.0
+     * @category Math
+     * @param {Array} array The array to iterate over.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {number} Returns the mean.
+     * @example
+     *
+     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
+     *
+     * _.meanBy(objects, function(o) { return o.n; });
+     * // => 5
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.meanBy(objects, 'n');
+     * // => 5
+     */
+    function meanBy(array, iteratee) {
+      return baseMean(array, getIteratee(iteratee, 2));
+    }
+
+    /**
+     * Computes the minimum value of `array`. If `array` is empty or falsey,
+     * `undefined` is returned.
+     *
+     * @static
+     * @since 0.1.0
+     * @memberOf _
+     * @category Math
+     * @param {Array} array The array to iterate over.
+     * @returns {*} Returns the minimum value.
+     * @example
+     *
+     * _.min([4, 2, 8, 6]);
+     * // => 2
+     *
+     * _.min([]);
+     * // => undefined
+     */
+    function min(array) {
+      return (array && array.length)
+        ? baseExtremum(array, identity, baseLt)
+        : undefined;
+    }
+
+    /**
+     * This method is like `_.min` except that it accepts `iteratee` which is
+     * invoked for each element in `array` to generate the criterion by which
+     * the value is ranked. The iteratee is invoked with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Math
+     * @param {Array} array The array to iterate over.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {*} Returns the minimum value.
+     * @example
+     *
+     * var objects = [{ 'n': 1 }, { 'n': 2 }];
+     *
+     * _.minBy(objects, function(o) { return o.n; });
+     * // => { 'n': 1 }
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.minBy(objects, 'n');
+     * // => { 'n': 1 }
+     */
+    function minBy(array, iteratee) {
+      return (array && array.length)
+        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
+        : undefined;
+    }
+
+    /**
+     * Multiply two numbers.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.7.0
+     * @category Math
+     * @param {number} multiplier The first number in a multiplication.
+     * @param {number} multiplicand The second number in a multiplication.
+     * @returns {number} Returns the product.
+     * @example
+     *
+     * _.multiply(6, 4);
+     * // => 24
+     */
+    var multiply = createMathOperation(function(multiplier, multiplicand) {
+      return multiplier * multiplicand;
+    }, 1);
+
+    /**
+     * Computes `number` rounded to `precision`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.10.0
+     * @category Math
+     * @param {number} number The number to round.
+     * @param {number} [precision=0] The precision to round to.
+     * @returns {number} Returns the rounded number.
+     * @example
+     *
+     * _.round(4.006);
+     * // => 4
+     *
+     * _.round(4.006, 2);
+     * // => 4.01
+     *
+     * _.round(4060, -2);
+     * // => 4100
+     */
+    var round = createRound('round');
+
+    /**
+     * Subtract two numbers.
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Math
+     * @param {number} minuend The first number in a subtraction.
+     * @param {number} subtrahend The second number in a subtraction.
+     * @returns {number} Returns the difference.
+     * @example
+     *
+     * _.subtract(6, 4);
+     * // => 2
+     */
+    var subtract = createMathOperation(function(minuend, subtrahend) {
+      return minuend - subtrahend;
+    }, 0);
+
+    /**
+     * Computes the sum of the values in `array`.
+     *
+     * @static
+     * @memberOf _
+     * @since 3.4.0
+     * @category Math
+     * @param {Array} array The array to iterate over.
+     * @returns {number} Returns the sum.
+     * @example
+     *
+     * _.sum([4, 2, 8, 6]);
+     * // => 20
+     */
+    function sum(array) {
+      return (array && array.length)
+        ? baseSum(array, identity)
+        : 0;
+    }
+
+    /**
+     * This method is like `_.sum` except that it accepts `iteratee` which is
+     * invoked for each element in `array` to generate the value to be summed.
+     * The iteratee is invoked with one argument: (value).
+     *
+     * @static
+     * @memberOf _
+     * @since 4.0.0
+     * @category Math
+     * @param {Array} array The array to iterate over.
+     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
+     * @returns {number} Returns the sum.
+     * @example
+     *
+     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
+     *
+     * _.sumBy(objects, function(o) { return o.n; });
+     * // => 20
+     *
+     * // The `_.property` iteratee shorthand.
+     * _.sumBy(objects, 'n');
+     * // => 20
+     */
+    function sumBy(array, iteratee) {
+      return (array && array.length)
+        ? baseSum(array, getIteratee(iteratee, 2))
+        : 0;
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    // Add methods that return wrapped values in chain sequences.
+    lodash.after = after;
+    lodash.ary = ary;
+    lodash.assign = assign;
+    lodash.assignIn = assignIn;
+    lodash.assignInWith = assignInWith;
+    lodash.assignWith = assignWith;
+    lodash.at = at;
+    lodash.before = before;
+    lodash.bind = bind;
+    lodash.bindAll = bindAll;
+    lodash.bindKey = bindKey;
+    lodash.castArray = castArray;
+    lodash.chain = chain;
+    lodash.chunk = chunk;
+    lodash.compact = compact;
+    lodash.concat = concat;
+    lodash.cond = cond;
+    lodash.conforms = conforms;
+    lodash.constant = constant;
+    lodash.countBy = countBy;
+    lodash.create = create;
+    lodash.curry = curry;
+    lodash.curryRight = curryRight;
+    lodash.debounce = debounce;
+    lodash.defaults = defaults;
+    lodash.defaultsDeep = defaultsDeep;
+    lodash.defer = defer;
+    lodash.delay = delay;
+    lodash.difference = difference;
+    lodash.differenceBy = differenceBy;
+    lodash.differenceWith = differenceWith;
+    lodash.drop = drop;
+    lodash.dropRight = dropRight;
+    lodash.dropRightWhile = dropRightWhile;
+    lodash.dropWhile = dropWhile;
+    lodash.fill = fill;
+    lodash.filter = filter;
+    lodash.flatMap = flatMap;
+    lodash.flatMapDeep = flatMapDeep;
+    lodash.flatMapDepth = flatMapDepth;
+    lodash.flatten = flatten;
+    lodash.flattenDeep = flattenDeep;
+    lodash.flattenDepth = flattenDepth;
+    lodash.flip = flip;
+    lodash.flow = flow;
+    lodash.flowRight = flowRight;
+    lodash.fromPairs = fromPairs;
+    lodash.functions = functions;
+    lodash.functionsIn = functionsIn;
+    lodash.groupBy = groupBy;
+    lodash.initial = initial;
+    lodash.intersection = intersection;
+    lodash.intersectionBy = intersectionBy;
+    lodash.intersectionWith = intersectionWith;
+    lodash.invert = invert;
+    lodash.invertBy = invertBy;
+    lodash.invokeMap = invokeMap;
+    lodash.iteratee = iteratee;
+    lodash.keyBy = keyBy;
+    lodash.keys = keys;
+    lodash.keysIn = keysIn;
+    lodash.map = map;
+    lodash.mapKeys = mapKeys;
+    lodash.mapValues = mapValues;
+    lodash.matches = matches;
+    lodash.matchesProperty = matchesProperty;
+    lodash.memoize = memoize;
+    lodash.merge = merge;
+    lodash.mergeWith = mergeWith;
+    lodash.method = method;
+    lodash.methodOf = methodOf;
+    lodash.mixin = mixin;
+    lodash.negate = negate;
+    lodash.nthArg = nthArg;
+    lodash.omit = omit;
+    lodash.omitBy = omitBy;
+    lodash.once = once;
+    lodash.orderBy = orderBy;
+    lodash.over = over;
+    lodash.overArgs = overArgs;
+    lodash.overEvery = overEvery;
+    lodash.overSome = overSome;
+    lodash.partial = partial;
+    lodash.partialRight = partialRight;
+    lodash.partition = partition;
+    lodash.pick = pick;
+    lodash.pickBy = pickBy;
+    lodash.property = property;
+    lodash.propertyOf = propertyOf;
+    lodash.pull = pull;
+    lodash.pullAll = pullAll;
+    lodash.pullAllBy = pullAllBy;
+    lodash.pullAllWith = pullAllWith;
+    lodash.pullAt = pullAt;
+    lodash.range = range;
+    lodash.rangeRight = rangeRight;
+    lodash.rearg = rearg;
+    lodash.reject = reject;
+    lodash.remove = remove;
+    lodash.rest = rest;
+    lodash.reverse = reverse;
+    lodash.sampleSize = sampleSize;
+    lodash.set = set;
+    lodash.setWith = setWith;
+    lodash.shuffle = shuffle;
+    lodash.slice = slice;
+    lodash.sortBy = sortBy;
+    lodash.sortedUniq = sortedUniq;
+    lodash.sortedUniqBy = sortedUniqBy;
+    lodash.split = split;
+    lodash.spread = spread;
+    lodash.tail = tail;
+    lodash.take = take;
+    lodash.takeRight = takeRight;
+    lodash.takeRightWhile = takeRightWhile;
+    lodash.takeWhile = takeWhile;
+    lodash.tap = tap;
+    lodash.throttle = throttle;
+    lodash.thru = thru;
+    lodash.toArray = toArray;
+    lodash.toPairs = toPairs;
+    lodash.toPairsIn = toPairsIn;
+    lodash.toPath = toPath;
+    lodash.toPlainObject = toPlainObject;
+    lodash.transform = transform;
+    lodash.unary = unary;
+    lodash.union = union;
+    lodash.unionBy = unionBy;
+    lodash.unionWith = unionWith;
+    lodash.uniq = uniq;
+    lodash.uniqBy = uniqBy;
+    lodash.uniqWith = uniqWith;
+    lodash.unset = unset;
+    lodash.unzip = unzip;
+    lodash.unzipWith = unzipWith;
+    lodash.update = update;
+    lodash.updateWith = updateWith;
+    lodash.values = values;
+    lodash.valuesIn = valuesIn;
+    lodash.without = without;
+    lodash.words = words;
+    lodash.wrap = wrap;
+    lodash.xor = xor;
+    lodash.xorBy = xorBy;
+    lodash.xorWith = xorWith;
+    lodash.zip = zip;
+    lodash.zipObject = zipObject;
+    lodash.zipObjectDeep = zipObjectDeep;
+    lodash.zipWith = zipWith;
+
+    // Add aliases.
+    lodash.entries = toPairs;
+    lodash.entriesIn = toPairsIn;
+    lodash.extend = assignIn;
+    lodash.extendWith = assignInWith;
+
+    // Add methods to `lodash.prototype`.
+    mixin(lodash, lodash);
+
+    /*------------------------------------------------------------------------*/
+
+    // Add methods that return unwrapped values in chain sequences.
+    lodash.add = add;
+    lodash.attempt = attempt;
+    lodash.camelCase = camelCase;
+    lodash.capitalize = capitalize;
+    lodash.ceil = ceil;
+    lodash.clamp = clamp;
+    lodash.clone = clone;
+    lodash.cloneDeep = cloneDeep;
+    lodash.cloneDeepWith = cloneDeepWith;
+    lodash.cloneWith = cloneWith;
+    lodash.conformsTo = conformsTo;
+    lodash.deburr = deburr;
+    lodash.defaultTo = defaultTo;
+    lodash.divide = divide;
+    lodash.endsWith = endsWith;
+    lodash.eq = eq;
+    lodash.escape = escape;
+    lodash.escapeRegExp = escapeRegExp;
+    lodash.every = every;
+    lodash.find = find;
+    lodash.findIndex = findIndex;
+    lodash.findKey = findKey;
+    lodash.findLast = findLast;
+    lodash.findLastIndex = findLastIndex;
+    lodash.findLastKey = findLastKey;
+    lodash.floor = floor;
+    lodash.forEach = forEach;
+    lodash.forEachRight = forEachRight;
+    lodash.forIn = forIn;
+    lodash.forInRight = forInRight;
+    lodash.forOwn = forOwn;
+    lodash.forOwnRight = forOwnRight;
+    lodash.get = get;
+    lodash.gt = gt;
+    lodash.gte = gte;
+    lodash.has = has;
+    lodash.hasIn = hasIn;
+    lodash.head = head;
+    lodash.identity = identity;
+    lodash.includes = includes;
+    lodash.indexOf = indexOf;
+    lodash.inRange = inRange;
+    lodash.invoke = invoke;
+    lodash.isArguments = isArguments;
+    lodash.isArray = isArray;
+    lodash.isArrayBuffer = isArrayBuffer;
+    lodash.isArrayLike = isArrayLike;
+    lodash.isArrayLikeObject = isArrayLikeObject;
+    lodash.isBoolean = isBoolean;
+    lodash.isBuffer = isBuffer;
+    lodash.isDate = isDate;
+    lodash.isElement = isElement;
+    lodash.isEmpty = isEmpty;
+    lodash.isEqual = isEqual;
+    lodash.isEqualWith = isEqualWith;
+    lodash.isError = isError;
+    lodash.isFinite = isFinite;
+    lodash.isFunction = isFunction;
+    lodash.isInteger = isInteger;
+    lodash.isLength = isLength;
+    lodash.isMap = isMap;
+    lodash.isMatch = isMatch;
+    lodash.isMatchWith = isMatchWith;
+    lodash.isNaN = isNaN;
+    lodash.isNative = isNative;
+    lodash.isNil = isNil;
+    lodash.isNull = isNull;
+    lodash.isNumber = isNumber;
+    lodash.isObject = isObject;
+    lodash.isObjectLike = isObjectLike;
+    lodash.isPlainObject = isPlainObject;
+    lodash.isRegExp = isRegExp;
+    lodash.isSafeInteger = isSafeInteger;
+    lodash.isSet = isSet;
+    lodash.isString = isString;
+    lodash.isSymbol = isSymbol;
+    lodash.isTypedArray = isTypedArray;
+    lodash.isUndefined = isUndefined;
+    lodash.isWeakMap = isWeakMap;
+    lodash.isWeakSet = isWeakSet;
+    lodash.join = join;
+    lodash.kebabCase = kebabCase;
+    lodash.last = last;
+    lodash.lastIndexOf = lastIndexOf;
+    lodash.lowerCase = lowerCase;
+    lodash.lowerFirst = lowerFirst;
+    lodash.lt = lt;
+    lodash.lte = lte;
+    lodash.max = max;
+    lodash.maxBy = maxBy;
+    lodash.mean = mean;
+    lodash.meanBy = meanBy;
+    lodash.min = min;
+    lodash.minBy = minBy;
+    lodash.stubArray = stubArray;
+    lodash.stubFalse = stubFalse;
+    lodash.stubObject = stubObject;
+    lodash.stubString = stubString;
+    lodash.stubTrue = stubTrue;
+    lodash.multiply = multiply;
+    lodash.nth = nth;
+    lodash.noConflict = noConflict;
+    lodash.noop = noop;
+    lodash.now = now;
+    lodash.pad = pad;
+    lodash.padEnd = padEnd;
+    lodash.padStart = padStart;
+    lodash.parseInt = parseInt;
+    lodash.random = random;
+    lodash.reduce = reduce;
+    lodash.reduceRight = reduceRight;
+    lodash.repeat = repeat;
+    lodash.replace = replace;
+    lodash.result = result;
+    lodash.round = round;
+    lodash.runInContext = runInContext;
+    lodash.sample = sample;
+    lodash.size = size;
+    lodash.snakeCase = snakeCase;
+    lodash.some = some;
+    lodash.sortedIndex = sortedIndex;
+    lodash.sortedIndexBy = sortedIndexBy;
+    lodash.sortedIndexOf = sortedIndexOf;
+    lodash.sortedLastIndex = sortedLastIndex;
+    lodash.sortedLastIndexBy = sortedLastIndexBy;
+    lodash.sortedLastIndexOf = sortedLastIndexOf;
+    lodash.startCase = startCase;
+    lodash.startsWith = startsWith;
+    lodash.subtract = subtract;
+    lodash.sum = sum;
+    lodash.sumBy = sumBy;
+    lodash.template = template;
+    lodash.times = times;
+    lodash.toFinite = toFinite;
+    lodash.toInteger = toInteger;
+    lodash.toLength = toLength;
+    lodash.toLower = toLower;
+    lodash.toNumber = toNumber;
+    lodash.toSafeInteger = toSafeInteger;
+    lodash.toString = toString;
+    lodash.toUpper = toUpper;
+    lodash.trim = trim;
+    lodash.trimEnd = trimEnd;
+    lodash.trimStart = trimStart;
+    lodash.truncate = truncate;
+    lodash.unescape = unescape;
+    lodash.uniqueId = uniqueId;
+    lodash.upperCase = upperCase;
+    lodash.upperFirst = upperFirst;
+
+    // Add aliases.
+    lodash.each = forEach;
+    lodash.eachRight = forEachRight;
+    lodash.first = head;
+
+    mixin(lodash, (function() {
+      var source = {};
+      baseForOwn(lodash, function(func, methodName) {
+        if (!hasOwnProperty.call(lodash.prototype, methodName)) {
+          source[methodName] = func;
+        }
+      });
+      return source;
+    }()), { 'chain': false });
+
+    /*------------------------------------------------------------------------*/
+
+    /**
+     * The semantic version number.
+     *
+     * @static
+     * @memberOf _
+     * @type {string}
+     */
+    lodash.VERSION = VERSION;
+
+    // Assign default placeholders.
+    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
+      lodash[methodName].placeholder = lodash;
+    });
+
+    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
+    arrayEach(['drop', 'take'], function(methodName, index) {
+      LazyWrapper.prototype[methodName] = function(n) {
+        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
+
+        var result = (this.__filtered__ && !index)
+          ? new LazyWrapper(this)
+          : this.clone();
+
+        if (result.__filtered__) {
+          result.__takeCount__ = nativeMin(n, result.__takeCount__);
+        } else {
+          result.__views__.push({
+            'size': nativeMin(n, MAX_ARRAY_LENGTH),
+            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')
+          });
+        }
+        return result;
+      };
+
+      LazyWrapper.prototype[methodName + 'Right'] = function(n) {
+        return this.reverse()[methodName](n).reverse();
+      };
+    });
+
+    // Add `LazyWrapper` methods that accept an `iteratee` value.
+    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
+      var type = index + 1,
+          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
+
+      LazyWrapper.prototype[methodName] = function(iteratee) {
+        var result = this.clone();
+        result.__iteratees__.push({
+          'iteratee': getIteratee(iteratee, 3),
+          'type': type
+        });
+        result.__filtered__ = result.__filtered__ || isFilter;
+        return result;
+      };
+    });
+
+    // Add `LazyWrapper` methods for `_.head` and `_.last`.
+    arrayEach(['head', 'last'], function(methodName, index) {
+      var takeName = 'take' + (index ? 'Right' : '');
+
+      LazyWrapper.prototype[methodName] = function() {
+        return this[takeName](1).value()[0];
+      };
+    });
+
+    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.
+    arrayEach(['initial', 'tail'], function(methodName, index) {
+      var dropName = 'drop' + (index ? '' : 'Right');
+
+      LazyWrapper.prototype[methodName] = function() {
+        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
+      };
+    });
+
+    LazyWrapper.prototype.compact = function() {
+      return this.filter(identity);
+    };
+
+    LazyWrapper.prototype.find = function(predicate) {
+      return this.filter(predicate).head();
+    };
+
+    LazyWrapper.prototype.findLast = function(predicate) {
+      return this.reverse().find(predicate);
+    };
+
+    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
+      if (typeof path == 'function') {
+        return new LazyWrapper(this);
+      }
+      return this.map(function(value) {
+        return baseInvoke(value, path, args);
+      });
+    });
+
+    LazyWrapper.prototype.reject = function(predicate) {
+      return this.filter(negate(getIteratee(predicate)));
+    };
+
+    LazyWrapper.prototype.slice = function(start, end) {
+      start = toInteger(start);
+
+      var result = this;
+      if (result.__filtered__ && (start > 0 || end < 0)) {
+        return new LazyWrapper(result);
+      }
+      if (start < 0) {
+        result = result.takeRight(-start);
+      } else if (start) {
+        result = result.drop(start);
+      }
+      if (end !== undefined) {
+        end = toInteger(end);
+        result = end < 0 ? result.dropRight(-end) : result.take(end - start);
+      }
+      return result;
+    };
+
+    LazyWrapper.prototype.takeRightWhile = function(predicate) {
+      return this.reverse().takeWhile(predicate).reverse();
+    };
+
+    LazyWrapper.prototype.toArray = function() {
+      return this.take(MAX_ARRAY_LENGTH);
+    };
+
+    // Add `LazyWrapper` methods to `lodash.prototype`.
+    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
+      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
+          isTaker = /^(?:head|last)$/.test(methodName),
+          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],
+          retUnwrapped = isTaker || /^find/.test(methodName);
+
+      if (!lodashFunc) {
+        return;
+      }
+      lodash.prototype[methodName] = function() {
+        var value = this.__wrapped__,
+            args = isTaker ? [1] : arguments,
+            isLazy = value instanceof LazyWrapper,
+            iteratee = args[0],
+            useLazy = isLazy || isArray(value);
+
+        var interceptor = function(value) {
+          var result = lodashFunc.apply(lodash, arrayPush([value], args));
+          return (isTaker && chainAll) ? result[0] : result;
+        };
+
+        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
+          // Avoid lazy use if the iteratee has a "length" value other than `1`.
+          isLazy = useLazy = false;
+        }
+        var chainAll = this.__chain__,
+            isHybrid = !!this.__actions__.length,
+            isUnwrapped = retUnwrapped && !chainAll,
+            onlyLazy = isLazy && !isHybrid;
+
+        if (!retUnwrapped && useLazy) {
+          value = onlyLazy ? value : new LazyWrapper(this);
+          var result = func.apply(value, args);
+          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
+          return new LodashWrapper(result, chainAll);
+        }
+        if (isUnwrapped && onlyLazy) {
+          return func.apply(this, args);
+        }
+        result = this.thru(interceptor);
+        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;
+      };
+    });
+
+    // Add `Array` methods to `lodash.prototype`.
+    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
+      var func = arrayProto[methodName],
+          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
+          retUnwrapped = /^(?:pop|shift)$/.test(methodName);
+
+      lodash.prototype[methodName] = function() {
+        var args = arguments;
+        if (retUnwrapped && !this.__chain__) {
+          var value = this.value();
+          return func.apply(isArray(value) ? value : [], args);
+        }
+        return this[chainName](function(value) {
+          return func.apply(isArray(value) ? value : [], args);
+        });
+      };
+    });
+
+    // Map minified method names to their real names.
+    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
+      var lodashFunc = lodash[methodName];
+      if (lodashFunc) {
+        var key = lodashFunc.name + '';
+        if (!hasOwnProperty.call(realNames, key)) {
+          realNames[key] = [];
+        }
+        realNames[key].push({ 'name': methodName, 'func': lodashFunc });
+      }
+    });
+
+    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
+      'name': 'wrapper',
+      'func': undefined
+    }];
+
+    // Add methods to `LazyWrapper`.
+    LazyWrapper.prototype.clone = lazyClone;
+    LazyWrapper.prototype.reverse = lazyReverse;
+    LazyWrapper.prototype.value = lazyValue;
+
+    // Add chain sequence methods to the `lodash` wrapper.
+    lodash.prototype.at = wrapperAt;
+    lodash.prototype.chain = wrapperChain;
+    lodash.prototype.commit = wrapperCommit;
+    lodash.prototype.next = wrapperNext;
+    lodash.prototype.plant = wrapperPlant;
+    lodash.prototype.reverse = wrapperReverse;
+    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
+
+    // Add lazy aliases.
+    lodash.prototype.first = lodash.prototype.head;
+
+    if (symIterator) {
+      lodash.prototype[symIterator] = wrapperToIterator;
+    }
+    return lodash;
+  });
+
+  /*--------------------------------------------------------------------------*/
+
+  // Export lodash.
+  var _ = runInContext();
+
+  // Some AMD build optimizers, like r.js, check for condition patterns like:
+  if (true) {
+    // Expose Lodash on the global object to prevent errors when Lodash is
+    // loaded by a script tag in the presence of an AMD loader.
+    // See http://requirejs.org/docs/errors.html#mismatch for more details.
+    // Use `_.noConflict` to remove Lodash from the global object.
+    root._ = _;
+
+    // Define as an anonymous module so, through path mapping, it can be
+    // referenced as the "underscore" module.
+    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
+      return _;
+    }).call(exports, __webpack_require__, exports, module),
+		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+  }
+  // Check for `exports` after `define` in case a build optimizer adds it.
+  else {}
+}.call(this));
+
+
+/***/ }),
+
+/***/ "./resources/css/app.css":
+/*!*******************************!*\
+  !*** ./resources/css/app.css ***!
+  \*******************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+// extracted by mini-css-extract-plugin
+
+
+/***/ }),
+
+/***/ "./node_modules/process/browser.js":
+/*!*****************************************!*\
+  !*** ./node_modules/process/browser.js ***!
+  \*****************************************/
+/***/ ((module) => {
+
+// shim for using process in browser
+var process = module.exports = {};
+
+// cached from whatever global is present so that test runners that stub it
+// don't break things.  But we need to wrap it in a try catch in case it is
+// wrapped in strict mode code which doesn't define any globals.  It's inside a
+// function because try/catches deoptimize in certain engines.
+
+var cachedSetTimeout;
+var cachedClearTimeout;
+
+function defaultSetTimout() {
+    throw new Error('setTimeout has not been defined');
+}
+function defaultClearTimeout () {
+    throw new Error('clearTimeout has not been defined');
+}
+(function () {
+    try {
+        if (typeof setTimeout === 'function') {
+            cachedSetTimeout = setTimeout;
+        } else {
+            cachedSetTimeout = defaultSetTimout;
+        }
+    } catch (e) {
+        cachedSetTimeout = defaultSetTimout;
+    }
+    try {
+        if (typeof clearTimeout === 'function') {
+            cachedClearTimeout = clearTimeout;
+        } else {
+            cachedClearTimeout = defaultClearTimeout;
+        }
+    } catch (e) {
+        cachedClearTimeout = defaultClearTimeout;
+    }
+} ())
+function runTimeout(fun) {
+    if (cachedSetTimeout === setTimeout) {
+        //normal enviroments in sane situations
+        return setTimeout(fun, 0);
+    }
+    // if setTimeout wasn't available but was latter defined
+    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+        cachedSetTimeout = setTimeout;
+        return setTimeout(fun, 0);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedSetTimeout(fun, 0);
+    } catch(e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+            return cachedSetTimeout.call(null, fun, 0);
+        } catch(e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+            return cachedSetTimeout.call(this, fun, 0);
+        }
+    }
+
+
+}
+function runClearTimeout(marker) {
+    if (cachedClearTimeout === clearTimeout) {
+        //normal enviroments in sane situations
+        return clearTimeout(marker);
+    }
+    // if clearTimeout wasn't available but was latter defined
+    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+        cachedClearTimeout = clearTimeout;
+        return clearTimeout(marker);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedClearTimeout(marker);
+    } catch (e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
+            return cachedClearTimeout.call(null, marker);
+        } catch (e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+            return cachedClearTimeout.call(this, marker);
+        }
+    }
+
+
+
+}
+var queue = [];
+var draining = false;
+var currentQueue;
+var queueIndex = -1;
+
+function cleanUpNextTick() {
+    if (!draining || !currentQueue) {
+        return;
+    }
+    draining = false;
+    if (currentQueue.length) {
+        queue = currentQueue.concat(queue);
+    } else {
+        queueIndex = -1;
+    }
+    if (queue.length) {
+        drainQueue();
+    }
+}
+
+function drainQueue() {
+    if (draining) {
+        return;
+    }
+    var timeout = runTimeout(cleanUpNextTick);
+    draining = true;
+
+    var len = queue.length;
+    while(len) {
+        currentQueue = queue;
+        queue = [];
+        while (++queueIndex < len) {
+            if (currentQueue) {
+                currentQueue[queueIndex].run();
+            }
+        }
+        queueIndex = -1;
+        len = queue.length;
+    }
+    currentQueue = null;
+    draining = false;
+    runClearTimeout(timeout);
+}
+
+process.nextTick = function (fun) {
+    var args = new Array(arguments.length - 1);
+    if (arguments.length > 1) {
+        for (var i = 1; i < arguments.length; i++) {
+            args[i - 1] = arguments[i];
+        }
+    }
+    queue.push(new Item(fun, args));
+    if (queue.length === 1 && !draining) {
+        runTimeout(drainQueue);
+    }
+};
+
+// v8 likes predictible objects
+function Item(fun, array) {
+    this.fun = fun;
+    this.array = array;
+}
+Item.prototype.run = function () {
+    this.fun.apply(null, this.array);
+};
+process.title = 'browser';
+process.browser = true;
+process.env = {};
+process.argv = [];
+process.version = ''; // empty string to avoid regexp issues
+process.versions = {};
+
+function noop() {}
+
+process.on = noop;
+process.addListener = noop;
+process.once = noop;
+process.off = noop;
+process.removeListener = noop;
+process.removeAllListeners = noop;
+process.emit = noop;
+process.prependListener = noop;
+process.prependOnceListener = noop;
+
+process.listeners = function (name) { return [] }
+
+process.binding = function (name) {
+    throw new Error('process.binding is not supported');
+};
+
+process.cwd = function () { return '/' };
+process.chdir = function (dir) {
+    throw new Error('process.chdir is not supported');
+};
+process.umask = function() { return 0; };
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/package.json":
+/*!*****************************************!*\
+  !*** ./node_modules/axios/package.json ***!
+  \*****************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = JSON.parse('{"_from":"axios@^0.21","_id":"axios@0.21.4","_inBundle":false,"_integrity":"sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==","_location":"/axios","_phantomChildren":{},"_requested":{"type":"range","registry":true,"raw":"axios@^0.21","name":"axios","escapedName":"axios","rawSpec":"^0.21","saveSpec":null,"fetchSpec":"^0.21"},"_requiredBy":["#DEV:/"],"_resolved":"https://registry.npmjs.org/axios/-/axios-0.21.4.tgz","_shasum":"c67b90dc0568e5c1cf2b0b858c43ba28e2eda575","_spec":"axios@^0.21","_where":"C:\\\\laragon\\\\www\\\\SaveSpace","author":{"name":"Matt Zabriskie"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"bugs":{"url":"https://github.com/axios/axios/issues"},"bundleDependencies":false,"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}],"dependencies":{"follow-redirects":"^1.14.0"},"deprecated":false,"description":"Promise based HTTP client for the browser and node.js","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"homepage":"https://axios-http.com","jsdelivr":"dist/axios.min.js","keywords":["xhr","http","ajax","promise","node"],"license":"MIT","main":"index.js","name":"axios","repository":{"type":"git","url":"git+https://github.com/axios/axios.git"},"scripts":{"build":"NODE_ENV=production grunt build","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","examples":"node ./examples/server.js","fix":"eslint --fix lib/**/*.js","postversion":"git push && git push --tags","preversion":"npm test","start":"node ./sandbox/server.js","test":"grunt test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json"},"typings":"./index.d.ts","unpkg":"dist/axios.min.js","version":"0.21.4"}');
+
+/***/ })
+
+/******/ 	});
+/************************************************************************/
+/******/ 	// The module cache
+/******/ 	var __webpack_module_cache__ = {};
+/******/ 	
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/ 		// Check if module is in cache
+/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
+/******/ 		if (cachedModule !== undefined) {
+/******/ 			return cachedModule.exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = __webpack_module_cache__[moduleId] = {
+/******/ 			id: moduleId,
+/******/ 			loaded: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/ 	
+/******/ 		// Execute the module function
+/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/ 	
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+/******/ 	
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/ 	
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = __webpack_modules__;
+/******/ 	
+/************************************************************************/
+/******/ 	/* webpack/runtime/chunk loaded */
+/******/ 	(() => {
+/******/ 		var deferred = [];
+/******/ 		__webpack_require__.O = (result, chunkIds, fn, priority) => {
+/******/ 			if(chunkIds) {
+/******/ 				priority = priority || 0;
+/******/ 				for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
+/******/ 				deferred[i] = [chunkIds, fn, priority];
+/******/ 				return;
+/******/ 			}
+/******/ 			var notFulfilled = Infinity;
+/******/ 			for (var i = 0; i < deferred.length; i++) {
+/******/ 				var [chunkIds, fn, priority] = deferred[i];
+/******/ 				var fulfilled = true;
+/******/ 				for (var j = 0; j < chunkIds.length; j++) {
+/******/ 					if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
+/******/ 						chunkIds.splice(j--, 1);
+/******/ 					} else {
+/******/ 						fulfilled = false;
+/******/ 						if(priority < notFulfilled) notFulfilled = priority;
+/******/ 					}
+/******/ 				}
+/******/ 				if(fulfilled) {
+/******/ 					deferred.splice(i--, 1)
+/******/ 					var r = fn();
+/******/ 					if (r !== undefined) result = r;
+/******/ 				}
+/******/ 			}
+/******/ 			return result;
+/******/ 		};
+/******/ 	})();
+/******/ 	
+/******/ 	/* webpack/runtime/global */
+/******/ 	(() => {
+/******/ 		__webpack_require__.g = (function() {
+/******/ 			if (typeof globalThis === 'object') return globalThis;
+/******/ 			try {
+/******/ 				return this || new Function('return this')();
+/******/ 			} catch (e) {
+/******/ 				if (typeof window === 'object') return window;
+/******/ 			}
+/******/ 		})();
+/******/ 	})();
+/******/ 	
+/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
+/******/ 	(() => {
+/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ 	})();
+/******/ 	
+/******/ 	/* webpack/runtime/make namespace object */
+/******/ 	(() => {
+/******/ 		// define __esModule on exports
+/******/ 		__webpack_require__.r = (exports) => {
+/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 			}
+/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 		};
+/******/ 	})();
+/******/ 	
+/******/ 	/* webpack/runtime/node module decorator */
+/******/ 	(() => {
+/******/ 		__webpack_require__.nmd = (module) => {
+/******/ 			module.paths = [];
+/******/ 			if (!module.children) module.children = [];
+/******/ 			return module;
+/******/ 		};
+/******/ 	})();
+/******/ 	
+/******/ 	/* webpack/runtime/jsonp chunk loading */
+/******/ 	(() => {
+/******/ 		// no baseURI
+/******/ 		
+/******/ 		// object to store loaded and loading chunks
+/******/ 		// undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ 		// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
+/******/ 		var installedChunks = {
+/******/ 			"/js/app": 0,
+/******/ 			"css/app": 0
+/******/ 		};
+/******/ 		
+/******/ 		// no chunk on demand loading
+/******/ 		
+/******/ 		// no prefetching
+/******/ 		
+/******/ 		// no preloaded
+/******/ 		
+/******/ 		// no HMR
+/******/ 		
+/******/ 		// no HMR manifest
+/******/ 		
+/******/ 		__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
+/******/ 		
+/******/ 		// install a JSONP callback for chunk loading
+/******/ 		var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
+/******/ 			var [chunkIds, moreModules, runtime] = data;
+/******/ 			// add "moreModules" to the modules object,
+/******/ 			// then flag all "chunkIds" as loaded and fire callback
+/******/ 			var moduleId, chunkId, i = 0;
+/******/ 			if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
+/******/ 				for(moduleId in moreModules) {
+/******/ 					if(__webpack_require__.o(moreModules, moduleId)) {
+/******/ 						__webpack_require__.m[moduleId] = moreModules[moduleId];
+/******/ 					}
+/******/ 				}
+/******/ 				if(runtime) var result = runtime(__webpack_require__);
+/******/ 			}
+/******/ 			if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
+/******/ 			for(;i < chunkIds.length; i++) {
+/******/ 				chunkId = chunkIds[i];
+/******/ 				if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ 					installedChunks[chunkId][0]();
+/******/ 				}
+/******/ 				installedChunks[chunkIds[i]] = 0;
+/******/ 			}
+/******/ 			return __webpack_require__.O(result);
+/******/ 		}
+/******/ 		
+/******/ 		var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || [];
+/******/ 		chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
+/******/ 		chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
+/******/ 	})();
+/******/ 	
+/************************************************************************/
+/******/ 	
+/******/ 	// startup
+/******/ 	// Load entry module and return exports
+/******/ 	// This entry module depends on other loaded chunks and execution need to be delayed
+/******/ 	__webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/js/app.js")))
+/******/ 	var __webpack_exports__ = __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/css/app.css")))
+/******/ 	__webpack_exports__ = __webpack_require__.O(__webpack_exports__);
+/******/ 	
+/******/ })()
+;
Index: public/mix-manifest.json
===================================================================
--- public/mix-manifest.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/mix-manifest.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,8 @@
+{
+    "/assets/js/app.js": "/assets/js/app.js",
+    "/assets/css/app.css": "/assets/css/app.css",
+    "/assets/css/app.min.css": "/assets/css/app.min.css",
+    "/assets/media/images/favicon.png": "/assets/media/images/favicon.png",
+    "/assets/media/images/logo-small.png": "/assets/media/images/logo-small.png",
+    "/assets/media/images/logo.png": "/assets/media/images/logo.png"
+}
Index: public/vendors/bundle.css
===================================================================
--- public/vendors/bundle.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/bundle.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,200 @@
+/*!
+ * Bootstrap v4.3.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 The Bootstrap Authors
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}
+
+/*
+ *  inter-ui font
+ */
+
+@font-face {
+    font-family: 'Inter';
+    font-style:  normal;
+    font-weight: 100;
+    font-display: swap;
+    src: url("../fonts/Inter-Thin-BETA.woff2") format("woff2"),
+    url("../fonts/Inter-Thin-BETA.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  italic;
+    font-weight: 100;
+    font-display: swap;
+    src: url("../fonts/Inter-ThinItalic-BETA.woff2") format("woff2"),
+    url("../fonts/Inter-ThinItalic-BETA.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  normal;
+    font-weight: 200;
+    font-display: swap;
+    src: url("../fonts/Inter-ExtraLight-BETA.woff2") format("woff2"),
+    url("../fonts/Inter-ExtraLight-BETA.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  italic;
+    font-weight: 200;
+    font-display: swap;
+    src: url("../fonts/Inter-ExtraLightItalic-BETA.woff2") format("woff2"),
+    url("../fonts/Inter-ExtraLightItalic-BETA.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  normal;
+    font-weight: 300;
+    font-display: swap;
+    src: url("../fonts/Inter-Light-BETA.woff2") format("woff2"),
+    url("../fonts/Inter-Light-BETA.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  italic;
+    font-weight: 300;
+    font-display: swap;
+    src: url("../fonts/Inter-LightItalic-BETA.woff2") format("woff2"),
+    url("../fonts/Inter-LightItalic-BETA.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  normal;
+    font-weight: 400;
+    font-display: swap;
+    src: url("../fonts/Inter-Regular.woff2") format("woff2"),
+    url("../fonts/Inter-Regular.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  italic;
+    font-weight: 400;
+    font-display: swap;
+    src: url("../fonts/Inter-Italic.woff2") format("woff2"),
+    url("../fonts/Inter-Italic.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  normal;
+    font-weight: 500;
+    font-display: swap;
+    src: url("../fonts/Inter-Medium.woff2") format("woff2"),
+    url("../fonts/Inter-Medium.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  italic;
+    font-weight: 500;
+    font-display: swap;
+    src: url("../fonts/Inter-MediumItalic.woff2") format("woff2"),
+    url("../fonts/Inter-MediumItalic.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  normal;
+    font-weight: 600;
+    font-display: swap;
+    src: url("../fonts/Inter-SemiBold.woff2") format("woff2"),
+    url("../fonts/Inter-SemiBold.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  italic;
+    font-weight: 600;
+    font-display: swap;
+    src: url("../fonts/Inter-SemiBoldItalic.woff2") format("woff2"),
+    url("../fonts/Inter-SemiBoldItalic.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  normal;
+    font-weight: 700;
+    font-display: swap;
+    src: url("../fonts/Inter-Bold.woff2") format("woff2"),
+    url("../fonts/Inter-Bold.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  italic;
+    font-weight: 700;
+    font-display: swap;
+    src: url("../fonts/Inter-BoldItalic.woff2") format("woff2"),
+    url("../fonts/Inter-BoldItalic.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  normal;
+    font-weight: 800;
+    font-display: swap;
+    src: url("../fonts/Inter-ExtraBold.woff2") format("woff2"),
+    url("../fonts/Inter-ExtraBold.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  italic;
+    font-weight: 800;
+    font-display: swap;
+    src: url("../fonts/Inter-ExtraBoldItalic.woff2") format("woff2"),
+    url("../fonts/Inter-ExtraBoldItalic.woff") format("woff");
+}
+
+@font-face {
+    font-family: 'Inter';
+    font-style:  normal;
+    font-weight: 900;
+    font-display: swap;
+    src: url("../fonts/Inter-Black.woff2") format("woff2"),
+    url("../fonts/Inter-Black.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter';
+    font-style:  italic;
+    font-weight: 900;
+    font-display: swap;
+    src: url("../fonts/Inter-BlackItalic.woff2") format("woff2"),
+    url("../fonts/Inter-BlackItalic.woff") format("woff");
+}
+@font-face {
+    font-family: 'Inter var';
+    font-weight: 100 900;
+    font-display: swap;
+    font-style: normal;
+    font-named-instance: 'Regular';
+    src: url("../fonts/Inter-upright.var.woff2") format("woff2");
+}
+@font-face {
+    font-family: 'Inter var';
+    font-weight: 100 900;
+    font-display: swap;
+    font-style: italic;
+    font-named-instance: 'Italic';
+    src: url("../fonts/Inter-italic.var.woff2") format("woff2");
+}
+@font-face {
+    font-family: 'Inter var experimental';
+    font-weight: 100 900;
+    font-display: swap;
+    font-style: oblique 0deg 10deg;
+    src: url("../fonts/Inter.var.woff2") format("woff2");
+}
+
+/*!
+ *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
+ *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}  .fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}  .fa-2x{font-size:2em}  .fa-3x{font-size:3em}  .fa-4x{font-size:4em}  .fa-5x{font-size:5em}  .fa-fw{width:1.28571429em;text-align:center}  .fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}  .fa-ul>li{position:relative}  .fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}  .fa-li.fa-lg{left:-1.85714286em}  .fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}  .fa-pull-left{float:left}  .fa-pull-right{float:right}  .fa.fa-pull-left{margin-right:.3em}  .fa.fa-pull-right{margin-left:.3em}  .pull-right{float:right}  .pull-left{float:left}  .fa.pull-left{margin-right:.3em}  .fa.pull-right{margin-left:.3em}  .fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}  .fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}  @-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}  @keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}  .fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}  .fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}  .fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}  .fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}  .fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}  :root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}  .fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}  .fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}  .fa-stack-1x{line-height:inherit}  .fa-stack-2x{font-size:2em}  .fa-inverse{color:#fff}  .fa-glass:before{content:"\f000"}  .fa-music:before{content:"\f001"}  .fa-search:before{content:"\f002"}  .fa-envelope-o:before{content:"\f003"}  .fa-heart:before{content:"\f004"}  .fa-star:before{content:"\f005"}  .fa-star-o:before{content:"\f006"}  .fa-user:before{content:"\f007"}  .fa-film:before{content:"\f008"}  .fa-th-large:before{content:"\f009"}  .fa-th:before{content:"\f00a"}  .fa-th-list:before{content:"\f00b"}  .fa-check:before{content:"\f00c"}  .fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}  .fa-search-plus:before{content:"\f00e"}  .fa-search-minus:before{content:"\f010"}  .fa-power-off:before{content:"\f011"}  .fa-signal:before{content:"\f012"}  .fa-gear:before,.fa-cog:before{content:"\f013"}  .fa-trash-o:before{content:"\f014"}  .fa-home:before{content:"\f015"}  .fa-file-o:before{content:"\f016"}  .fa-clock-o:before{content:"\f017"}  .fa-road:before{content:"\f018"}  .fa-download:before{content:"\f019"}  .fa-arrow-circle-o-down:before{content:"\f01a"}  .fa-arrow-circle-o-up:before{content:"\f01b"}  .fa-inbox:before{content:"\f01c"}  .fa-play-circle-o:before{content:"\f01d"}  .fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}  .fa-refresh:before{content:"\f021"}  .fa-list-alt:before{content:"\f022"}  .fa-lock:before{content:"\f023"}  .fa-flag:before{content:"\f024"}  .fa-headphones:before{content:"\f025"}  .fa-volume-off:before{content:"\f026"}  .fa-volume-down:before{content:"\f027"}  .fa-volume-up:before{content:"\f028"}  .fa-qrcode:before{content:"\f029"}  .fa-barcode:before{content:"\f02a"}  .fa-tag:before{content:"\f02b"}  .fa-tags:before{content:"\f02c"}  .fa-book:before{content:"\f02d"}  .fa-bookmark:before{content:"\f02e"}  .fa-print:before{content:"\f02f"}  .fa-camera:before{content:"\f030"}  .fa-font:before{content:"\f031"}  .fa-bold:before{content:"\f032"}  .fa-italic:before{content:"\f033"}  .fa-text-height:before{content:"\f034"}  .fa-text-width:before{content:"\f035"}  .fa-align-left:before{content:"\f036"}  .fa-align-center:before{content:"\f037"}  .fa-align-right:before{content:"\f038"}  .fa-align-justify:before{content:"\f039"}  .fa-list:before{content:"\f03a"}  .fa-dedent:before,.fa-outdent:before{content:"\f03b"}  .fa-indent:before{content:"\f03c"}  .fa-video-camera:before{content:"\f03d"}  .fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}  .fa-pencil:before{content:"\f040"}  .fa-map-marker:before{content:"\f041"}  .fa-adjust:before{content:"\f042"}  .fa-tint:before{content:"\f043"}  .fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}  .fa-share-square-o:before{content:"\f045"}  .fa-check-square-o:before{content:"\f046"}  .fa-arrows:before{content:"\f047"}  .fa-step-backward:before{content:"\f048"}  .fa-fast-backward:before{content:"\f049"}  .fa-backward:before{content:"\f04a"}  .fa-play:before{content:"\f04b"}  .fa-pause:before{content:"\f04c"}  .fa-stop:before{content:"\f04d"}  .fa-forward:before{content:"\f04e"}  .fa-fast-forward:before{content:"\f050"}  .fa-step-forward:before{content:"\f051"}  .fa-eject:before{content:"\f052"}  .fa-chevron-left:before{content:"\f053"}  .fa-chevron-right:before{content:"\f054"}  .fa-plus-circle:before{content:"\f055"}  .fa-minus-circle:before{content:"\f056"}  .fa-times-circle:before{content:"\f057"}  .fa-check-circle:before{content:"\f058"}  .fa-question-circle:before{content:"\f059"}  .fa-info-circle:before{content:"\f05a"}  .fa-crosshairs:before{content:"\f05b"}  .fa-times-circle-o:before{content:"\f05c"}  .fa-check-circle-o:before{content:"\f05d"}  .fa-ban:before{content:"\f05e"}  .fa-arrow-left:before{content:"\f060"}  .fa-arrow-right:before{content:"\f061"}  .fa-arrow-up:before{content:"\f062"}  .fa-arrow-down:before{content:"\f063"}  .fa-mail-forward:before,.fa-share:before{content:"\f064"}  .fa-expand:before{content:"\f065"}  .fa-compress:before{content:"\f066"}  .fa-plus:before{content:"\f067"}  .fa-minus:before{content:"\f068"}  .fa-asterisk:before{content:"\f069"}  .fa-exclamation-circle:before{content:"\f06a"}  .fa-gift:before{content:"\f06b"}  .fa-leaf:before{content:"\f06c"}  .fa-fire:before{content:"\f06d"}  .fa-eye:before{content:"\f06e"}  .fa-eye-slash:before{content:"\f070"}  .fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}  .fa-plane:before{content:"\f072"}  .fa-calendar:before{content:"\f073"}  .fa-random:before{content:"\f074"}  .fa-comment:before{content:"\f075"}  .fa-magnet:before{content:"\f076"}  .fa-chevron-up:before{content:"\f077"}  .fa-chevron-down:before{content:"\f078"}  .fa-retweet:before{content:"\f079"}  .fa-shopping-cart:before{content:"\f07a"}  .fa-folder:before{content:"\f07b"}  .fa-folder-open:before{content:"\f07c"}  .fa-arrows-v:before{content:"\f07d"}  .fa-arrows-h:before{content:"\f07e"}  .fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}  .fa-twitter-square:before{content:"\f081"}  .fa-facebook-square:before{content:"\f082"}  .fa-camera-retro:before{content:"\f083"}  .fa-key:before{content:"\f084"}  .fa-gears:before,.fa-cogs:before{content:"\f085"}  .fa-comments:before{content:"\f086"}  .fa-thumbs-o-up:before{content:"\f087"}  .fa-thumbs-o-down:before{content:"\f088"}  .fa-star-half:before{content:"\f089"}  .fa-heart-o:before{content:"\f08a"}  .fa-sign-out:before{content:"\f08b"}  .fa-linkedin-square:before{content:"\f08c"}  .fa-thumb-tack:before{content:"\f08d"}  .fa-external-link:before{content:"\f08e"}  .fa-sign-in:before{content:"\f090"}  .fa-trophy:before{content:"\f091"}  .fa-github-square:before{content:"\f092"}  .fa-upload:before{content:"\f093"}  .fa-lemon-o:before{content:"\f094"}  .fa-phone:before{content:"\f095"}  .fa-square-o:before{content:"\f096"}  .fa-bookmark-o:before{content:"\f097"}  .fa-phone-square:before{content:"\f098"}  .fa-twitter:before{content:"\f099"}  .fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}  .fa-github:before{content:"\f09b"}  .fa-unlock:before{content:"\f09c"}  .fa-credit-card:before{content:"\f09d"}  .fa-feed:before,.fa-rss:before{content:"\f09e"}  .fa-hdd-o:before{content:"\f0a0"}  .fa-bullhorn:before{content:"\f0a1"}  .fa-bell:before{content:"\f0f3"}  .fa-certificate:before{content:"\f0a3"}  .fa-hand-o-right:before{content:"\f0a4"}  .fa-hand-o-left:before{content:"\f0a5"}  .fa-hand-o-up:before{content:"\f0a6"}  .fa-hand-o-down:before{content:"\f0a7"}  .fa-arrow-circle-left:before{content:"\f0a8"}  .fa-arrow-circle-right:before{content:"\f0a9"}  .fa-arrow-circle-up:before{content:"\f0aa"}  .fa-arrow-circle-down:before{content:"\f0ab"}  .fa-globe:before{content:"\f0ac"}  .fa-wrench:before{content:"\f0ad"}  .fa-tasks:before{content:"\f0ae"}  .fa-filter:before{content:"\f0b0"}  .fa-briefcase:before{content:"\f0b1"}  .fa-arrows-alt:before{content:"\f0b2"}  .fa-group:before,.fa-users:before{content:"\f0c0"}  .fa-chain:before,.fa-link:before{content:"\f0c1"}  .fa-cloud:before{content:"\f0c2"}  .fa-flask:before{content:"\f0c3"}  .fa-cut:before,.fa-scissors:before{content:"\f0c4"}  .fa-copy:before,.fa-files-o:before{content:"\f0c5"}  .fa-paperclip:before{content:"\f0c6"}  .fa-save:before,.fa-floppy-o:before{content:"\f0c7"}  .fa-square:before{content:"\f0c8"}  .fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}  .fa-list-ul:before{content:"\f0ca"}  .fa-list-ol:before{content:"\f0cb"}  .fa-strikethrough:before{content:"\f0cc"}  .fa-underline:before{content:"\f0cd"}  .fa-table:before{content:"\f0ce"}  .fa-magic:before{content:"\f0d0"}  .fa-truck:before{content:"\f0d1"}  .fa-pinterest:before{content:"\f0d2"}  .fa-pinterest-square:before{content:"\f0d3"}  .fa-google-plus-square:before{content:"\f0d4"}  .fa-google-plus:before{content:"\f0d5"}  .fa-money:before{content:"\f0d6"}  .fa-caret-down:before{content:"\f0d7"}  .fa-caret-up:before{content:"\f0d8"}  .fa-caret-left:before{content:"\f0d9"}  .fa-caret-right:before{content:"\f0da"}  .fa-columns:before{content:"\f0db"}  .fa-unsorted:before,.fa-sort:before{content:"\f0dc"}  .fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}  .fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}  .fa-envelope:before{content:"\f0e0"}  .fa-linkedin:before{content:"\f0e1"}  .fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}  .fa-legal:before,.fa-gavel:before{content:"\f0e3"}  .fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}  .fa-comment-o:before{content:"\f0e5"}  .fa-comments-o:before{content:"\f0e6"}  .fa-flash:before,.fa-bolt:before{content:"\f0e7"}  .fa-sitemap:before{content:"\f0e8"}  .fa-umbrella:before{content:"\f0e9"}  .fa-paste:before,.fa-clipboard:before{content:"\f0ea"}  .fa-lightbulb-o:before{content:"\f0eb"}  .fa-exchange:before{content:"\f0ec"}  .fa-cloud-download:before{content:"\f0ed"}  .fa-cloud-upload:before{content:"\f0ee"}  .fa-user-md:before{content:"\f0f0"}  .fa-stethoscope:before{content:"\f0f1"}  .fa-suitcase:before{content:"\f0f2"}  .fa-bell-o:before{content:"\f0a2"}  .fa-coffee:before{content:"\f0f4"}  .fa-cutlery:before{content:"\f0f5"}  .fa-file-text-o:before{content:"\f0f6"}  .fa-building-o:before{content:"\f0f7"}  .fa-hospital-o:before{content:"\f0f8"}  .fa-ambulance:before{content:"\f0f9"}  .fa-medkit:before{content:"\f0fa"}  .fa-fighter-jet:before{content:"\f0fb"}  .fa-beer:before{content:"\f0fc"}  .fa-h-square:before{content:"\f0fd"}  .fa-plus-square:before{content:"\f0fe"}  .fa-angle-double-left:before{content:"\f100"}  .fa-angle-double-right:before{content:"\f101"}  .fa-angle-double-up:before{content:"\f102"}  .fa-angle-double-down:before{content:"\f103"}  .fa-angle-left:before{content:"\f104"}  .fa-angle-right:before{content:"\f105"}  .fa-angle-up:before{content:"\f106"}  .fa-angle-down:before{content:"\f107"}  .fa-desktop:before{content:"\f108"}  .fa-laptop:before{content:"\f109"}  .fa-tablet:before{content:"\f10a"}  .fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}  .fa-circle-o:before{content:"\f10c"}  .fa-quote-left:before{content:"\f10d"}  .fa-quote-right:before{content:"\f10e"}  .fa-spinner:before{content:"\f110"}  .fa-circle:before{content:"\f111"}  .fa-mail-reply:before,.fa-reply:before{content:"\f112"}  .fa-github-alt:before{content:"\f113"}  .fa-folder-o:before{content:"\f114"}  .fa-folder-open-o:before{content:"\f115"}  .fa-smile-o:before{content:"\f118"}  .fa-frown-o:before{content:"\f119"}  .fa-meh-o:before{content:"\f11a"}  .fa-gamepad:before{content:"\f11b"}  .fa-keyboard-o:before{content:"\f11c"}  .fa-flag-o:before{content:"\f11d"}  .fa-flag-checkered:before{content:"\f11e"}  .fa-terminal:before{content:"\f120"}  .fa-code:before{content:"\f121"}  .fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}  .fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}  .fa-location-arrow:before{content:"\f124"}  .fa-crop:before{content:"\f125"}  .fa-code-fork:before{content:"\f126"}  .fa-unlink:before,.fa-chain-broken:before{content:"\f127"}  .fa-question:before{content:"\f128"}  .fa-info:before{content:"\f129"}  .fa-exclamation:before{content:"\f12a"}  .fa-superscript:before{content:"\f12b"}  .fa-subscript:before{content:"\f12c"}  .fa-eraser:before{content:"\f12d"}  .fa-puzzle-piece:before{content:"\f12e"}  .fa-microphone:before{content:"\f130"}  .fa-microphone-slash:before{content:"\f131"}  .fa-shield:before{content:"\f132"}  .fa-calendar-o:before{content:"\f133"}  .fa-fire-extinguisher:before{content:"\f134"}  .fa-rocket:before{content:"\f135"}  .fa-maxcdn:before{content:"\f136"}  .fa-chevron-circle-left:before{content:"\f137"}  .fa-chevron-circle-right:before{content:"\f138"}  .fa-chevron-circle-up:before{content:"\f139"}  .fa-chevron-circle-down:before{content:"\f13a"}  .fa-html5:before{content:"\f13b"}  .fa-css3:before{content:"\f13c"}  .fa-anchor:before{content:"\f13d"}  .fa-unlock-alt:before{content:"\f13e"}  .fa-bullseye:before{content:"\f140"}  .fa-ellipsis-h:before{content:"\f141"}  .fa-ellipsis-v:before{content:"\f142"}  .fa-rss-square:before{content:"\f143"}  .fa-play-circle:before{content:"\f144"}  .fa-ticket:before{content:"\f145"}  .fa-minus-square:before{content:"\f146"}  .fa-minus-square-o:before{content:"\f147"}  .fa-level-up:before{content:"\f148"}  .fa-level-down:before{content:"\f149"}  .fa-check-square:before{content:"\f14a"}  .fa-pencil-square:before{content:"\f14b"}  .fa-external-link-square:before{content:"\f14c"}  .fa-share-square:before{content:"\f14d"}  .fa-compass:before{content:"\f14e"}  .fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}  .fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}  .fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}  .fa-euro:before,.fa-eur:before{content:"\f153"}  .fa-gbp:before{content:"\f154"}  .fa-dollar:before,.fa-usd:before{content:"\f155"}  .fa-rupee:before,.fa-inr:before{content:"\f156"}  .fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}  .fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}  .fa-won:before,.fa-krw:before{content:"\f159"}  .fa-bitcoin:before,.fa-btc:before{content:"\f15a"}  .fa-file:before{content:"\f15b"}  .fa-file-text:before{content:"\f15c"}  .fa-sort-alpha-asc:before{content:"\f15d"}  .fa-sort-alpha-desc:before{content:"\f15e"}  .fa-sort-amount-asc:before{content:"\f160"}  .fa-sort-amount-desc:before{content:"\f161"}  .fa-sort-numeric-asc:before{content:"\f162"}  .fa-sort-numeric-desc:before{content:"\f163"}  .fa-thumbs-up:before{content:"\f164"}  .fa-thumbs-down:before{content:"\f165"}  .fa-youtube-square:before{content:"\f166"}  .fa-youtube:before{content:"\f167"}  .fa-xing:before{content:"\f168"}  .fa-xing-square:before{content:"\f169"}  .fa-youtube-play:before{content:"\f16a"}  .fa-dropbox:before{content:"\f16b"}  .fa-stack-overflow:before{content:"\f16c"}  .fa-instagram:before{content:"\f16d"}  .fa-flickr:before{content:"\f16e"}  .fa-adn:before{content:"\f170"}  .fa-bitbucket:before{content:"\f171"}  .fa-bitbucket-square:before{content:"\f172"}  .fa-tumblr:before{content:"\f173"}  .fa-tumblr-square:before{content:"\f174"}  .fa-long-arrow-down:before{content:"\f175"}  .fa-long-arrow-up:before{content:"\f176"}  .fa-long-arrow-left:before{content:"\f177"}  .fa-long-arrow-right:before{content:"\f178"}  .fa-apple:before{content:"\f179"}  .fa-windows:before{content:"\f17a"}  .fa-android:before{content:"\f17b"}  .fa-linux:before{content:"\f17c"}  .fa-dribbble:before{content:"\f17d"}  .fa-skype:before{content:"\f17e"}  .fa-foursquare:before{content:"\f180"}  .fa-trello:before{content:"\f181"}  .fa-female:before{content:"\f182"}  .fa-male:before{content:"\f183"}  .fa-gittip:before,.fa-gratipay:before{content:"\f184"}  .fa-sun-o:before{content:"\f185"}  .fa-moon-o:before{content:"\f186"}  .fa-archive:before{content:"\f187"}  .fa-bug:before{content:"\f188"}  .fa-vk:before{content:"\f189"}  .fa-weibo:before{content:"\f18a"}  .fa-renren:before{content:"\f18b"}  .fa-pagelines:before{content:"\f18c"}  .fa-stack-exchange:before{content:"\f18d"}  .fa-arrow-circle-o-right:before{content:"\f18e"}  .fa-arrow-circle-o-left:before{content:"\f190"}  .fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}  .fa-dot-circle-o:before{content:"\f192"}  .fa-wheelchair:before{content:"\f193"}  .fa-vimeo-square:before{content:"\f194"}  .fa-turkish-lira:before,.fa-try:before{content:"\f195"}  .fa-plus-square-o:before{content:"\f196"}  .fa-space-shuttle:before{content:"\f197"}  .fa-slack:before{content:"\f198"}  .fa-envelope-square:before{content:"\f199"}  .fa-wordpress:before{content:"\f19a"}  .fa-openid:before{content:"\f19b"}  .fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}  .fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}  .fa-yahoo:before{content:"\f19e"}  .fa-google:before{content:"\f1a0"}  .fa-reddit:before{content:"\f1a1"}  .fa-reddit-square:before{content:"\f1a2"}  .fa-stumbleupon-circle:before{content:"\f1a3"}  .fa-stumbleupon:before{content:"\f1a4"}  .fa-delicious:before{content:"\f1a5"}  .fa-digg:before{content:"\f1a6"}  .fa-pied-piper-pp:before{content:"\f1a7"}  .fa-pied-piper-alt:before{content:"\f1a8"}  .fa-drupal:before{content:"\f1a9"}  .fa-joomla:before{content:"\f1aa"}  .fa-language:before{content:"\f1ab"}  .fa-fax:before{content:"\f1ac"}  .fa-building:before{content:"\f1ad"}  .fa-child:before{content:"\f1ae"}  .fa-paw:before{content:"\f1b0"}  .fa-spoon:before{content:"\f1b1"}  .fa-cube:before{content:"\f1b2"}  .fa-cubes:before{content:"\f1b3"}  .fa-behance:before{content:"\f1b4"}  .fa-behance-square:before{content:"\f1b5"}  .fa-steam:before{content:"\f1b6"}  .fa-steam-square:before{content:"\f1b7"}  .fa-recycle:before{content:"\f1b8"}  .fa-automobile:before,.fa-car:before{content:"\f1b9"}  .fa-cab:before,.fa-taxi:before{content:"\f1ba"}  .fa-tree:before{content:"\f1bb"}  .fa-spotify:before{content:"\f1bc"}  .fa-deviantart:before{content:"\f1bd"}  .fa-soundcloud:before{content:"\f1be"}  .fa-database:before{content:"\f1c0"}  .fa-file-pdf-o:before{content:"\f1c1"}  .fa-file-word-o:before{content:"\f1c2"}  .fa-file-excel-o:before{content:"\f1c3"}  .fa-file-powerpoint-o:before{content:"\f1c4"}  .fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}  .fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}  .fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}  .fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}  .fa-file-code-o:before{content:"\f1c9"}  .fa-vine:before{content:"\f1ca"}  .fa-codepen:before{content:"\f1cb"}  .fa-jsfiddle:before{content:"\f1cc"}  .fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}  .fa-circle-o-notch:before{content:"\f1ce"}  .fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}  .fa-ge:before,.fa-empire:before{content:"\f1d1"}  .fa-git-square:before{content:"\f1d2"}  .fa-git:before{content:"\f1d3"}  .fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}  .fa-tencent-weibo:before{content:"\f1d5"}  .fa-qq:before{content:"\f1d6"}  .fa-wechat:before,.fa-weixin:before{content:"\f1d7"}  .fa-send:before,.fa-paper-plane:before{content:"\f1d8"}  .fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}  .fa-history:before{content:"\f1da"}  .fa-circle-thin:before{content:"\f1db"}  .fa-header:before{content:"\f1dc"}  .fa-paragraph:before{content:"\f1dd"}  .fa-sliders:before{content:"\f1de"}  .fa-share-alt:before{content:"\f1e0"}  .fa-share-alt-square:before{content:"\f1e1"}  .fa-bomb:before{content:"\f1e2"}  .fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}  .fa-tty:before{content:"\f1e4"}  .fa-binoculars:before{content:"\f1e5"}  .fa-plug:before{content:"\f1e6"}  .fa-slideshare:before{content:"\f1e7"}  .fa-twitch:before{content:"\f1e8"}  .fa-yelp:before{content:"\f1e9"}  .fa-newspaper-o:before{content:"\f1ea"}  .fa-wifi:before{content:"\f1eb"}  .fa-calculator:before{content:"\f1ec"}  .fa-paypal:before{content:"\f1ed"}  .fa-google-wallet:before{content:"\f1ee"}  .fa-cc-visa:before{content:"\f1f0"}  .fa-cc-mastercard:before{content:"\f1f1"}  .fa-cc-discover:before{content:"\f1f2"}  .fa-cc-amex:before{content:"\f1f3"}  .fa-cc-paypal:before{content:"\f1f4"}  .fa-cc-stripe:before{content:"\f1f5"}  .fa-bell-slash:before{content:"\f1f6"}  .fa-bell-slash-o:before{content:"\f1f7"}  .fa-trash:before{content:"\f1f8"}  .fa-copyright:before{content:"\f1f9"}  .fa-at:before{content:"\f1fa"}  .fa-eyedropper:before{content:"\f1fb"}  .fa-paint-brush:before{content:"\f1fc"}  .fa-birthday-cake:before{content:"\f1fd"}  .fa-area-chart:before{content:"\f1fe"}  .fa-pie-chart:before{content:"\f200"}  .fa-line-chart:before{content:"\f201"}  .fa-lastfm:before{content:"\f202"}  .fa-lastfm-square:before{content:"\f203"}  .fa-toggle-off:before{content:"\f204"}  .fa-toggle-on:before{content:"\f205"}  .fa-bicycle:before{content:"\f206"}  .fa-bus:before{content:"\f207"}  .fa-ioxhost:before{content:"\f208"}  .fa-angellist:before{content:"\f209"}  .fa-cc:before{content:"\f20a"}  .fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}  .fa-meanpath:before{content:"\f20c"}  .fa-buysellads:before{content:"\f20d"}  .fa-connectdevelop:before{content:"\f20e"}  .fa-dashcube:before{content:"\f210"}  .fa-forumbee:before{content:"\f211"}  .fa-leanpub:before{content:"\f212"}  .fa-sellsy:before{content:"\f213"}  .fa-shirtsinbulk:before{content:"\f214"}  .fa-simplybuilt:before{content:"\f215"}  .fa-skyatlas:before{content:"\f216"}  .fa-cart-plus:before{content:"\f217"}  .fa-cart-arrow-down:before{content:"\f218"}  .fa-diamond:before{content:"\f219"}  .fa-ship:before{content:"\f21a"}  .fa-user-secret:before{content:"\f21b"}  .fa-motorcycle:before{content:"\f21c"}  .fa-street-view:before{content:"\f21d"}  .fa-heartbeat:before{content:"\f21e"}  .fa-venus:before{content:"\f221"}  .fa-mars:before{content:"\f222"}  .fa-mercury:before{content:"\f223"}  .fa-intersex:before,.fa-transgender:before{content:"\f224"}  .fa-transgender-alt:before{content:"\f225"}  .fa-venus-double:before{content:"\f226"}  .fa-mars-double:before{content:"\f227"}  .fa-venus-mars:before{content:"\f228"}  .fa-mars-stroke:before{content:"\f229"}  .fa-mars-stroke-v:before{content:"\f22a"}  .fa-mars-stroke-h:before{content:"\f22b"}  .fa-neuter:before{content:"\f22c"}  .fa-genderless:before{content:"\f22d"}  .fa-facebook-official:before{content:"\f230"}  .fa-pinterest-p:before{content:"\f231"}  .fa-whatsapp:before{content:"\f232"}  .fa-server:before{content:"\f233"}  .fa-user-plus:before{content:"\f234"}  .fa-user-times:before{content:"\f235"}  .fa-hotel:before,.fa-bed:before{content:"\f236"}  .fa-viacoin:before{content:"\f237"}  .fa-train:before{content:"\f238"}  .fa-subway:before{content:"\f239"}  .fa-medium:before{content:"\f23a"}  .fa-yc:before,.fa-y-combinator:before{content:"\f23b"}  .fa-optin-monster:before{content:"\f23c"}  .fa-opencart:before{content:"\f23d"}  .fa-expeditedssl:before{content:"\f23e"}  .fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}  .fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}  .fa-battery-2:before,.fa-battery-half:before{content:"\f242"}  .fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}  .fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}  .fa-mouse-pointer:before{content:"\f245"}  .fa-i-cursor:before{content:"\f246"}  .fa-object-group:before{content:"\f247"}  .fa-object-ungroup:before{content:"\f248"}  .fa-sticky-note:before{content:"\f249"}  .fa-sticky-note-o:before{content:"\f24a"}  .fa-cc-jcb:before{content:"\f24b"}  .fa-cc-diners-club:before{content:"\f24c"}  .fa-clone:before{content:"\f24d"}  .fa-balance-scale:before{content:"\f24e"}  .fa-hourglass-o:before{content:"\f250"}  .fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}  .fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}  .fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}  .fa-hourglass:before{content:"\f254"}  .fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}  .fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}  .fa-hand-scissors-o:before{content:"\f257"}  .fa-hand-lizard-o:before{content:"\f258"}  .fa-hand-spock-o:before{content:"\f259"}  .fa-hand-pointer-o:before{content:"\f25a"}  .fa-hand-peace-o:before{content:"\f25b"}  .fa-trademark:before{content:"\f25c"}  .fa-registered:before{content:"\f25d"}  .fa-creative-commons:before{content:"\f25e"}  .fa-gg:before{content:"\f260"}  .fa-gg-circle:before{content:"\f261"}  .fa-tripadvisor:before{content:"\f262"}  .fa-odnoklassniki:before{content:"\f263"}  .fa-odnoklassniki-square:before{content:"\f264"}  .fa-get-pocket:before{content:"\f265"}  .fa-wikipedia-w:before{content:"\f266"}  .fa-safari:before{content:"\f267"}  .fa-chrome:before{content:"\f268"}  .fa-firefox:before{content:"\f269"}  .fa-opera:before{content:"\f26a"}  .fa-internet-explorer:before{content:"\f26b"}  .fa-tv:before,.fa-television:before{content:"\f26c"}  .fa-contao:before{content:"\f26d"}  .fa-500px:before{content:"\f26e"}  .fa-amazon:before{content:"\f270"}  .fa-calendar-plus-o:before{content:"\f271"}  .fa-calendar-minus-o:before{content:"\f272"}  .fa-calendar-times-o:before{content:"\f273"}  .fa-calendar-check-o:before{content:"\f274"}  .fa-industry:before{content:"\f275"}  .fa-map-pin:before{content:"\f276"}  .fa-map-signs:before{content:"\f277"}  .fa-map-o:before{content:"\f278"}  .fa-map:before{content:"\f279"}  .fa-commenting:before{content:"\f27a"}  .fa-commenting-o:before{content:"\f27b"}  .fa-houzz:before{content:"\f27c"}  .fa-vimeo:before{content:"\f27d"}  .fa-black-tie:before{content:"\f27e"}  .fa-fonticons:before{content:"\f280"}  .fa-reddit-alien:before{content:"\f281"}  .fa-edge:before{content:"\f282"}  .fa-credit-card-alt:before{content:"\f283"}  .fa-codiepie:before{content:"\f284"}  .fa-modx:before{content:"\f285"}  .fa-fort-awesome:before{content:"\f286"}  .fa-usb:before{content:"\f287"}  .fa-product-hunt:before{content:"\f288"}  .fa-mixcloud:before{content:"\f289"}  .fa-scribd:before{content:"\f28a"}  .fa-pause-circle:before{content:"\f28b"}  .fa-pause-circle-o:before{content:"\f28c"}  .fa-stop-circle:before{content:"\f28d"}  .fa-stop-circle-o:before{content:"\f28e"}  .fa-shopping-bag:before{content:"\f290"}  .fa-shopping-basket:before{content:"\f291"}  .fa-hashtag:before{content:"\f292"}  .fa-bluetooth:before{content:"\f293"}  .fa-bluetooth-b:before{content:"\f294"}  .fa-percent:before{content:"\f295"}  .fa-gitlab:before{content:"\f296"}  .fa-wpbeginner:before{content:"\f297"}  .fa-wpforms:before{content:"\f298"}  .fa-envira:before{content:"\f299"}  .fa-universal-access:before{content:"\f29a"}  .fa-wheelchair-alt:before{content:"\f29b"}  .fa-question-circle-o:before{content:"\f29c"}  .fa-blind:before{content:"\f29d"}  .fa-audio-description:before{content:"\f29e"}  .fa-volume-control-phone:before{content:"\f2a0"}  .fa-braille:before{content:"\f2a1"}  .fa-assistive-listening-systems:before{content:"\f2a2"}  .fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}  .fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}  .fa-glide:before{content:"\f2a5"}  .fa-glide-g:before{content:"\f2a6"}  .fa-signing:before,.fa-sign-language:before{content:"\f2a7"}  .fa-low-vision:before{content:"\f2a8"}  .fa-viadeo:before{content:"\f2a9"}  .fa-viadeo-square:before{content:"\f2aa"}  .fa-snapchat:before{content:"\f2ab"}  .fa-snapchat-ghost:before{content:"\f2ac"}  .fa-snapchat-square:before{content:"\f2ad"}  .fa-pied-piper:before{content:"\f2ae"}  .fa-first-order:before{content:"\f2b0"}  .fa-yoast:before{content:"\f2b1"}  .fa-themeisle:before{content:"\f2b2"}  .fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}  .fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}  .fa-handshake-o:before{content:"\f2b5"}  .fa-envelope-open:before{content:"\f2b6"}  .fa-envelope-open-o:before{content:"\f2b7"}  .fa-linode:before{content:"\f2b8"}  .fa-address-book:before{content:"\f2b9"}  .fa-address-book-o:before{content:"\f2ba"}  .fa-vcard:before,.fa-address-card:before{content:"\f2bb"}  .fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}  .fa-user-circle:before{content:"\f2bd"}  .fa-user-circle-o:before{content:"\f2be"}  .fa-user-o:before{content:"\f2c0"}  .fa-id-badge:before{content:"\f2c1"}  .fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}  .fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}  .fa-quora:before{content:"\f2c4"}  .fa-free-code-camp:before{content:"\f2c5"}  .fa-telegram:before{content:"\f2c6"}  .fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}  .fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}  .fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}  .fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}  .fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}  .fa-shower:before{content:"\f2cc"}  .fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}  .fa-podcast:before{content:"\f2ce"}  .fa-window-maximize:before{content:"\f2d0"}  .fa-window-minimize:before{content:"\f2d1"}  .fa-window-restore:before{content:"\f2d2"}  .fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}  .fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}  .fa-bandcamp:before{content:"\f2d5"}  .fa-grav:before{content:"\f2d6"}  .fa-etsy:before{content:"\f2d7"}  .fa-imdb:before{content:"\f2d8"}  .fa-ravelry:before{content:"\f2d9"}  .fa-eercast:before{content:"\f2da"}  .fa-microchip:before{content:"\f2db"}  .fa-snowflake-o:before{content:"\f2dc"}  .fa-superpowers:before{content:"\f2dd"}  .fa-wpexplorer:before{content:"\f2de"}  .fa-meetup:before{content:"\f2e0"}  .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}  .sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
+
+/*
+ *
+ * Themify Icon
+ *
+ */
+
+@font-face{font-family:themify;src:url(../fonts/themify.eot);src:url(../fonts/themify.eot?#iefix) format('embedded-opentype'),url(../fonts/themify.woff) format('woff'),url(../fonts/themify.ttf) format('truetype'),url(../fonts/themify.svg) format('svg');font-weight:400;font-style:normal}[class*=" ti-"],[class^=ti-]{font-family:themify;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ti-wand:before{content:"\e600"}.ti-volume:before{content:"\e601"}.ti-user:before{content:"\e602"}.ti-unlock:before{content:"\e603"}.ti-unlink:before{content:"\e604"}.ti-trash:before{content:"\e605"}.ti-thought:before{content:"\e606"}.ti-target:before{content:"\e607"}.ti-tag:before{content:"\e608"}.ti-tablet:before{content:"\e609"}.ti-star:before{content:"\e60a"}.ti-spray:before{content:"\e60b"}.ti-signal:before{content:"\e60c"}.ti-shopping-cart:before{content:"\e60d"}.ti-shopping-cart-full:before{content:"\e60e"}.ti-settings:before{content:"\e60f"}.ti-search:before{content:"\e610"}.ti-zoom-in:before{content:"\e611"}.ti-zoom-out:before{content:"\e612"}.ti-cut:before{content:"\e613"}.ti-ruler:before{content:"\e614"}.ti-ruler-pencil:before{content:"\e615"}.ti-ruler-alt:before{content:"\e616"}.ti-bookmark:before{content:"\e617"}.ti-bookmark-alt:before{content:"\e618"}.ti-reload:before{content:"\e619"}.ti-plus:before{content:"\e61a"}.ti-pin:before{content:"\e61b"}.ti-pencil:before{content:"\e61c"}.ti-pencil-alt:before{content:"\e61d"}.ti-paint-roller:before{content:"\e61e"}.ti-paint-bucket:before{content:"\e61f"}.ti-na:before{content:"\e620"}.ti-mobile:before{content:"\e621"}.ti-minus:before{content:"\e622"}.ti-medall:before{content:"\e623"}.ti-medall-alt:before{content:"\e624"}.ti-marker:before{content:"\e625"}.ti-marker-alt:before{content:"\e626"}.ti-arrow-up:before{content:"\e627"}.ti-arrow-right:before{content:"\e628"}.ti-arrow-left:before{content:"\e629"}.ti-arrow-down:before{content:"\e62a"}.ti-lock:before{content:"\e62b"}.ti-location-arrow:before{content:"\e62c"}.ti-link:before{content:"\e62d"}.ti-layout:before{content:"\e62e"}.ti-layers:before{content:"\e62f"}.ti-layers-alt:before{content:"\e630"}.ti-key:before{content:"\e631"}.ti-import:before{content:"\e632"}.ti-image:before{content:"\e633"}.ti-heart:before{content:"\e634"}.ti-heart-broken:before{content:"\e635"}.ti-hand-stop:before{content:"\e636"}.ti-hand-open:before{content:"\e637"}.ti-hand-drag:before{content:"\e638"}.ti-folder:before{content:"\e639"}.ti-flag:before{content:"\e63a"}.ti-flag-alt:before{content:"\e63b"}.ti-flag-alt-2:before{content:"\e63c"}.ti-eye:before{content:"\e63d"}.ti-export:before{content:"\e63e"}.ti-exchange-vertical:before{content:"\e63f"}.ti-desktop:before{content:"\e640"}.ti-cup:before{content:"\e641"}.ti-crown:before{content:"\e642"}.ti-comments:before{content:"\e643"}.ti-comment:before{content:"\e644"}.ti-comment-alt:before{content:"\e645"}.ti-close:before{content:"\e646"}.ti-clip:before{content:"\e647"}.ti-angle-up:before{content:"\e648"}.ti-angle-right:before{content:"\e649"}.ti-angle-left:before{content:"\e64a"}.ti-angle-down:before{content:"\e64b"}.ti-check:before{content:"\e64c"}.ti-check-box:before{content:"\e64d"}.ti-camera:before{content:"\e64e"}.ti-announcement:before{content:"\e64f"}.ti-brush:before{content:"\e650"}.ti-briefcase:before{content:"\e651"}.ti-bolt:before{content:"\e652"}.ti-bolt-alt:before{content:"\e653"}.ti-blackboard:before{content:"\e654"}.ti-bag:before{content:"\e655"}.ti-move:before{content:"\e656"}.ti-arrows-vertical:before{content:"\e657"}.ti-arrows-horizontal:before{content:"\e658"}.ti-fullscreen:before{content:"\e659"}.ti-arrow-top-right:before{content:"\e65a"}.ti-arrow-top-left:before{content:"\e65b"}.ti-arrow-circle-up:before{content:"\e65c"}.ti-arrow-circle-right:before{content:"\e65d"}.ti-arrow-circle-left:before{content:"\e65e"}.ti-arrow-circle-down:before{content:"\e65f"}.ti-angle-double-up:before{content:"\e660"}.ti-angle-double-right:before{content:"\e661"}.ti-angle-double-left:before{content:"\e662"}.ti-angle-double-down:before{content:"\e663"}.ti-zip:before{content:"\e664"}.ti-world:before{content:"\e665"}.ti-wheelchair:before{content:"\e666"}.ti-view-list:before{content:"\e667"}.ti-view-list-alt:before{content:"\e668"}.ti-view-grid:before{content:"\e669"}.ti-uppercase:before{content:"\e66a"}.ti-upload:before{content:"\e66b"}.ti-underline:before{content:"\e66c"}.ti-truck:before{content:"\e66d"}.ti-timer:before{content:"\e66e"}.ti-ticket:before{content:"\e66f"}.ti-thumb-up:before{content:"\e670"}.ti-thumb-down:before{content:"\e671"}.ti-text:before{content:"\e672"}.ti-stats-up:before{content:"\e673"}.ti-stats-down:before{content:"\e674"}.ti-split-v:before{content:"\e675"}.ti-split-h:before{content:"\e676"}.ti-smallcap:before{content:"\e677"}.ti-shine:before{content:"\e678"}.ti-shift-right:before{content:"\e679"}.ti-shift-left:before{content:"\e67a"}.ti-shield:before{content:"\e67b"}.ti-notepad:before{content:"\e67c"}.ti-server:before{content:"\e67d"}.ti-quote-right:before{content:"\e67e"}.ti-quote-left:before{content:"\e67f"}.ti-pulse:before{content:"\e680"}.ti-printer:before{content:"\e681"}.ti-power-off:before{content:"\e682"}.ti-plug:before{content:"\e683"}.ti-pie-chart:before{content:"\e684"}.ti-paragraph:before{content:"\e685"}.ti-panel:before{content:"\e686"}.ti-package:before{content:"\e687"}.ti-music:before{content:"\e688"}.ti-music-alt:before{content:"\e689"}.ti-mouse:before{content:"\e68a"}.ti-mouse-alt:before{content:"\e68b"}.ti-money:before{content:"\e68c"}.ti-microphone:before{content:"\e68d"}.ti-menu:before{content:"\e68e"}.ti-menu-alt:before{content:"\e68f"}.ti-map:before{content:"\e690"}.ti-map-alt:before{content:"\e691"}.ti-loop:before{content:"\e692"}.ti-location-pin:before{content:"\e693"}.ti-list:before{content:"\e694"}.ti-light-bulb:before{content:"\e695"}.ti-Italic:before{content:"\e696"}.ti-info:before{content:"\e697"}.ti-infinite:before{content:"\e698"}.ti-id-badge:before{content:"\e699"}.ti-hummer:before{content:"\e69a"}.ti-home:before{content:"\e69b"}.ti-help:before{content:"\e69c"}.ti-headphone:before{content:"\e69d"}.ti-harddrives:before{content:"\e69e"}.ti-harddrive:before{content:"\e69f"}.ti-gift:before{content:"\e6a0"}.ti-game:before{content:"\e6a1"}.ti-filter:before{content:"\e6a2"}.ti-files:before{content:"\e6a3"}.ti-file:before{content:"\e6a4"}.ti-eraser:before{content:"\e6a5"}.ti-envelope:before{content:"\e6a6"}.ti-download:before{content:"\e6a7"}.ti-direction:before{content:"\e6a8"}.ti-direction-alt:before{content:"\e6a9"}.ti-dashboard:before{content:"\e6aa"}.ti-control-stop:before{content:"\e6ab"}.ti-control-shuffle:before{content:"\e6ac"}.ti-control-play:before{content:"\e6ad"}.ti-control-pause:before{content:"\e6ae"}.ti-control-forward:before{content:"\e6af"}.ti-control-backward:before{content:"\e6b0"}.ti-cloud:before{content:"\e6b1"}.ti-cloud-up:before{content:"\e6b2"}.ti-cloud-down:before{content:"\e6b3"}.ti-clipboard:before{content:"\e6b4"}.ti-car:before{content:"\e6b5"}.ti-calendar:before{content:"\e6b6"}.ti-book:before{content:"\e6b7"}.ti-bell:before{content:"\e6b8"}.ti-basketball:before{content:"\e6b9"}.ti-bar-chart:before{content:"\e6ba"}.ti-bar-chart-alt:before{content:"\e6bb"}.ti-back-right:before{content:"\e6bc"}.ti-back-left:before{content:"\e6bd"}.ti-arrows-corner:before{content:"\e6be"}.ti-archive:before{content:"\e6bf"}.ti-anchor:before{content:"\e6c0"}.ti-align-right:before{content:"\e6c1"}.ti-align-left:before{content:"\e6c2"}.ti-align-justify:before{content:"\e6c3"}.ti-align-center:before{content:"\e6c4"}.ti-alert:before{content:"\e6c5"}.ti-alarm-clock:before{content:"\e6c6"}.ti-agenda:before{content:"\e6c7"}.ti-write:before{content:"\e6c8"}.ti-window:before{content:"\e6c9"}.ti-widgetized:before{content:"\e6ca"}.ti-widget:before{content:"\e6cb"}.ti-widget-alt:before{content:"\e6cc"}.ti-wallet:before{content:"\e6cd"}.ti-video-clapper:before{content:"\e6ce"}.ti-video-camera:before{content:"\e6cf"}.ti-vector:before{content:"\e6d0"}.ti-themify-logo:before{content:"\e6d1"}.ti-themify-favicon:before{content:"\e6d2"}.ti-themify-favicon-alt:before{content:"\e6d3"}.ti-support:before{content:"\e6d4"}.ti-stamp:before{content:"\e6d5"}.ti-split-v-alt:before{content:"\e6d6"}.ti-slice:before{content:"\e6d7"}.ti-shortcode:before{content:"\e6d8"}.ti-shift-right-alt:before{content:"\e6d9"}.ti-shift-left-alt:before{content:"\e6da"}.ti-ruler-alt-2:before{content:"\e6db"}.ti-receipt:before{content:"\e6dc"}.ti-pin2:before{content:"\e6dd"}.ti-pin-alt:before{content:"\e6de"}.ti-pencil-alt2:before{content:"\e6df"}.ti-palette:before{content:"\e6e0"}.ti-more:before{content:"\e6e1"}.ti-more-alt:before{content:"\e6e2"}.ti-microphone-alt:before{content:"\e6e3"}.ti-magnet:before{content:"\e6e4"}.ti-line-double:before{content:"\e6e5"}.ti-line-dotted:before{content:"\e6e6"}.ti-line-dashed:before{content:"\e6e7"}.ti-layout-width-full:before{content:"\e6e8"}.ti-layout-width-default:before{content:"\e6e9"}.ti-layout-width-default-alt:before{content:"\e6ea"}.ti-layout-tab:before{content:"\e6eb"}.ti-layout-tab-window:before{content:"\e6ec"}.ti-layout-tab-v:before{content:"\e6ed"}.ti-layout-tab-min:before{content:"\e6ee"}.ti-layout-slider:before{content:"\e6ef"}.ti-layout-slider-alt:before{content:"\e6f0"}.ti-layout-sidebar-right:before{content:"\e6f1"}.ti-layout-sidebar-none:before{content:"\e6f2"}.ti-layout-sidebar-left:before{content:"\e6f3"}.ti-layout-placeholder:before{content:"\e6f4"}.ti-layout-menu:before{content:"\e6f5"}.ti-layout-menu-v:before{content:"\e6f6"}.ti-layout-menu-separated:before{content:"\e6f7"}.ti-layout-menu-full:before{content:"\e6f8"}.ti-layout-media-right-alt:before{content:"\e6f9"}.ti-layout-media-right:before{content:"\e6fa"}.ti-layout-media-overlay:before{content:"\e6fb"}.ti-layout-media-overlay-alt:before{content:"\e6fc"}.ti-layout-media-overlay-alt-2:before{content:"\e6fd"}.ti-layout-media-left-alt:before{content:"\e6fe"}.ti-layout-media-left:before{content:"\e6ff"}.ti-layout-media-center-alt:before{content:"\e700"}.ti-layout-media-center:before{content:"\e701"}.ti-layout-list-thumb:before{content:"\e702"}.ti-layout-list-thumb-alt:before{content:"\e703"}.ti-layout-list-post:before{content:"\e704"}.ti-layout-list-large-image:before{content:"\e705"}.ti-layout-line-solid:before{content:"\e706"}.ti-layout-grid4:before{content:"\e707"}.ti-layout-grid3:before{content:"\e708"}.ti-layout-grid2:before{content:"\e709"}.ti-layout-grid2-thumb:before{content:"\e70a"}.ti-layout-cta-right:before{content:"\e70b"}.ti-layout-cta-left:before{content:"\e70c"}.ti-layout-cta-center:before{content:"\e70d"}.ti-layout-cta-btn-right:before{content:"\e70e"}.ti-layout-cta-btn-left:before{content:"\e70f"}.ti-layout-column4:before{content:"\e710"}.ti-layout-column3:before{content:"\e711"}.ti-layout-column2:before{content:"\e712"}.ti-layout-accordion-separated:before{content:"\e713"}.ti-layout-accordion-merged:before{content:"\e714"}.ti-layout-accordion-list:before{content:"\e715"}.ti-ink-pen:before{content:"\e716"}.ti-info-alt:before{content:"\e717"}.ti-help-alt:before{content:"\e718"}.ti-headphone-alt:before{content:"\e719"}.ti-hand-point-up:before{content:"\e71a"}.ti-hand-point-right:before{content:"\e71b"}.ti-hand-point-left:before{content:"\e71c"}.ti-hand-point-down:before{content:"\e71d"}.ti-gallery:before{content:"\e71e"}.ti-face-smile:before{content:"\e71f"}.ti-face-sad:before{content:"\e720"}.ti-credit-card:before{content:"\e721"}.ti-control-skip-forward:before{content:"\e722"}.ti-control-skip-backward:before{content:"\e723"}.ti-control-record:before{content:"\e724"}.ti-control-eject:before{content:"\e725"}.ti-comments-smiley:before{content:"\e726"}.ti-brush-alt:before{content:"\e727"}.ti-youtube:before{content:"\e728"}.ti-vimeo:before{content:"\e729"}.ti-twitter:before{content:"\e72a"}.ti-time:before{content:"\e72b"}.ti-tumblr:before{content:"\e72c"}.ti-skype:before{content:"\e72d"}.ti-share:before{content:"\e72e"}.ti-share-alt:before{content:"\e72f"}.ti-rocket:before{content:"\e730"}.ti-pinterest:before{content:"\e731"}.ti-new-window:before{content:"\e732"}.ti-microsoft:before{content:"\e733"}.ti-list-ol:before{content:"\e734"}.ti-linkedin:before{content:"\e735"}.ti-layout-sidebar-2:before{content:"\e736"}.ti-layout-grid4-alt:before{content:"\e737"}.ti-layout-grid3-alt:before{content:"\e738"}.ti-layout-grid2-alt:before{content:"\e739"}.ti-layout-column4-alt:before{content:"\e73a"}.ti-layout-column3-alt:before{content:"\e73b"}.ti-layout-column2-alt:before{content:"\e73c"}.ti-instagram:before{content:"\e73d"}.ti-google:before{content:"\e73e"}.ti-github:before{content:"\e73f"}.ti-flickr:before{content:"\e740"}.ti-facebook:before{content:"\e741"}.ti-dropbox:before{content:"\e742"}.ti-dribbble:before{content:"\e743"}.ti-apple:before{content:"\e744"}.ti-android:before{content:"\e745"}.ti-save:before{content:"\e746"}.ti-save-alt:before{content:"\e747"}.ti-yahoo:before{content:"\e748"}.ti-wordpress:before{content:"\e749"}.ti-vimeo-alt:before{content:"\e74a"}.ti-twitter-alt:before{content:"\e74b"}.ti-tumblr-alt:before{content:"\e74c"}.ti-trello:before{content:"\e74d"}.ti-stack-overflow:before{content:"\e74e"}.ti-soundcloud:before{content:"\e74f"}.ti-sharethis:before{content:"\e750"}.ti-sharethis-alt:before{content:"\e751"}.ti-reddit:before{content:"\e752"}.ti-pinterest-alt:before{content:"\e753"}.ti-microsoft-alt:before{content:"\e754"}.ti-linux:before{content:"\e755"}.ti-jsfiddle:before{content:"\e756"}.ti-joomla:before{content:"\e757"}.ti-html5:before{content:"\e758"}.ti-flickr-alt:before{content:"\e759"}.ti-email:before{content:"\e75a"}.ti-drupal:before{content:"\e75b"}.ti-dropbox-alt:before{content:"\e75c"}.ti-css3:before{content:"\e75d"}.ti-rss:before{content:"\e75e"}.ti-rss-alt:before{content:"\e75f"}
+
+/*
+ *
+ *  Pe Icon Set Weather
+ *
+ */
+
+@font-face{font-family:pe-icon-set-weather;src:url(../fonts/pe-icon-set-weather.eot?nlruav);src:url(../fonts/pe-icon-set-weather.eot?nlruav#iefix) format("embedded-opentype"),url(../fonts/pe-icon-set-weather.ttf?nlruav) format("truetype"),url(../fonts/pe-icon-set-weather.woff?nlruav) format("woff"),url(../fonts/pe-icon-set-weather.svg?nlruav#pe-icon-set-weather) format("svg");font-weight:400;font-style:normal}[class*=" pe-is-w-"],[class^=pe-is-w-]{display:inline-block;font-family:pe-icon-set-weather;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pe-is-w-blizzard-f:before{content:"\e900"}.pe-is-w-blizzard:before{content:"\e901"}.pe-is-w-cloud-down-f:before{content:"\e902"}.pe-is-w-cloud-down:before{content:"\e903"}.pe-is-w-cloud-refresh-f:before{content:"\e904"}.pe-is-w-cloud-refresh:before{content:"\e905"}.pe-is-w-cloud-up-f:before{content:"\e906"}.pe-is-w-cloud-up:before{content:"\e907"}.pe-is-w-compass-e-f:before{content:"\e908"}.pe-is-w-compass-e:before{content:"\e909"}.pe-is-w-compass-f:before{content:"\e90a"}.pe-is-w-compass-n-f:before{content:"\e90b"}.pe-is-w-compass-n:before{content:"\e90c"}.pe-is-w-compass-s-f:before{content:"\e90d"}.pe-is-w-compass-s:before{content:"\e90e"}.pe-is-w-compass-w-f:before{content:"\e90f"}.pe-is-w-compass-w:before{content:"\e910"}.pe-is-w-compass:before{content:"\e911"}.pe-is-w-degree-celsius:before{content:"\e912"}.pe-is-w-degree-fahrenheit:before{content:"\e913"}.pe-is-w-drizzle-f:before{content:"\e914"}.pe-is-w-drizzle:before{content:"\e915"}.pe-is-w-drop-cloud-f:before{content:"\e916"}.pe-is-w-drop-cloud:before{content:"\e917"}.pe-is-w-drop-f:before{content:"\e918"}.pe-is-w-drop-percentage-f:before{content:"\e919"}.pe-is-w-drop-percentage:before{content:"\e91a"}.pe-is-w-drop:before{content:"\e91b"}.pe-is-w-drops-f:before{content:"\e91c"}.pe-is-w-drops:before{content:"\e91d"}.pe-is-w-eclipse-1-f:before{content:"\e91e"}.pe-is-w-eclipse-1:before{content:"\e91f"}.pe-is-w-eclipse-2-f:before{content:"\e920"}.pe-is-w-eclipse-2:before{content:"\e921"}.pe-is-w-eclipse-3-f:before{content:"\e922"}.pe-is-w-eclipse-3:before{content:"\e923"}.pe-is-w-eclipse-4-f:before{content:"\e924"}.pe-is-w-eclipse-4:before{content:"\e925"}.pe-is-w-fog-1-f:before{content:"\e926"}.pe-is-w-fog-1:before{content:"\e927"}.pe-is-w-fog-2-f:before{content:"\e928"}.pe-is-w-fog-2:before{content:"\e929"}.pe-is-w-fog-3-f:before{content:"\e92a"}.pe-is-w-fog-3:before{content:"\e92b"}.pe-is-w-fog-4-f:before{content:"\e92c"}.pe-is-w-fog-4:before{content:"\e92d"}.pe-is-w-full-moon-1-f:before{content:"\e92e"}.pe-is-w-full-moon-1:before{content:"\e92f"}.pe-is-w-full-moon-2-f:before{content:"\e930"}.pe-is-w-full-moon-2:before{content:"\e931"}.pe-is-w-full-moon-3-f:before{content:"\e932"}.pe-is-w-full-moon-3:before{content:"\e933"}.pe-is-w-hail-1-f:before{content:"\e934"}.pe-is-w-hail-1:before{content:"\e935"}.pe-is-w-hail-2-f:before{content:"\e936"}.pe-is-w-hail-2:before{content:"\e937"}.pe-is-w-hail-day-1-f:before{content:"\e938"}.pe-is-w-hail-day-1:before{content:"\e939"}.pe-is-w-hail-day-2-f:before{content:"\e93a"}.pe-is-w-hail-day-2:before{content:"\e93b"}.pe-is-w-hail-full-moon-1-f:before{content:"\e93c"}.pe-is-w-hail-full-moon-1:before{content:"\e93d"}.pe-is-w-hail-full-moon-2-f:before{content:"\e93e"}.pe-is-w-hail-full-moon-2:before{content:"\e93f"}.pe-is-w-hail-night-1-f:before{content:"\e940"}.pe-is-w-hail-night-1:before{content:"\e941"}.pe-is-w-hail-night-2-f:before{content:"\e942"}.pe-is-w-hail-night-2:before{content:"\e943"}.pe-is-w-heavy-hail-day-f:before{content:"\e944"}.pe-is-w-heavy-hail-day:before{content:"\e945"}.pe-is-w-heavy-hail-f:before{content:"\e946"}.pe-is-w-heavy-hail-full-moon-f:before{content:"\e947"}.pe-is-w-heavy-hail-full-moon:before{content:"\e948"}.pe-is-w-heavy-hail-night-f:before{content:"\e949"}.pe-is-w-heavy-hail-night:before{content:"\e94a"}.pe-is-w-heavy-hail:before{content:"\e94b"}.pe-is-w-heavy-rain-1-f:before{content:"\e94c"}.pe-is-w-heavy-rain-1:before{content:"\e94d"}.pe-is-w-heavy-rain-2-f:before{content:"\e94e"}.pe-is-w-heavy-rain-2:before{content:"\e94f"}.pe-is-w-heavy-rain-day-f:before{content:"\e950"}.pe-is-w-heavy-rain-day:before{content:"\e951"}.pe-is-w-heavy-rain-full-moon-f:before{content:"\e952"}.pe-is-w-heavy-rain-full-moon:before{content:"\e953"}.pe-is-w-heavy-rain-night-f:before{content:"\e954"}.pe-is-w-heavy-rain-night:before{content:"\e955"}.pe-is-w-mist:before{content:"\e956"}.pe-is-w-mix-rainfall-1-f:before{content:"\e957"}.pe-is-w-mix-rainfall-1:before{content:"\e958"}.pe-is-w-mix-rainfall-2-f:before{content:"\e959"}.pe-is-w-mix-rainfall-2:before{content:"\e95a"}.pe-is-w-moon-1-f:before{content:"\e95b"}.pe-is-w-moon-1:before{content:"\e95c"}.pe-is-w-moon-2-f:before{content:"\e95d"}.pe-is-w-moon-2:before{content:"\e95e"}.pe-is-w-moon-3-f:before{content:"\e95f"}.pe-is-w-moon-3:before{content:"\e960"}.pe-is-w-moon-4-f:before{content:"\e961"}.pe-is-w-moon-4:before{content:"\e962"}.pe-is-w-moon-first-quarter-f:before{content:"\e963"}.pe-is-w-moon-horizon-f:before{content:"\e964"}.pe-is-w-moon-horizon:before{content:"\e965"}.pe-is-w-moon-last-quarter-f:before{content:"\e966"}.pe-is-w-moon-sea-f:before{content:"\e967"}.pe-is-w-moon-sea:before{content:"\e968"}.pe-is-w-moon-waning-crescent-f:before{content:"\e969"}.pe-is-w-moon-waning-gibbous-f:before{content:"\e96a"}.pe-is-w-moon-waxing-crescent-f:before{content:"\e96b"}.pe-is-w-moon-waxing-gibbous-f:before{content:"\e96c"}.pe-is-w-mostly-cloudy-1-f:before{content:"\e96d"}.pe-is-w-mostly-cloudy-1:before{content:"\e96e"}.pe-is-w-mostly-cloudy-2-f:before{content:"\e96f"}.pe-is-w-mostly-cloudy-2:before{content:"\e970"}.pe-is-w-partly-cloudy-1-f:before{content:"\e971"}.pe-is-w-partly-cloudy-1:before{content:"\e972"}.pe-is-w-partly-cloudy-2-f:before{content:"\e973"}.pe-is-w-partly-cloudy-2:before{content:"\e974"}.pe-is-w-partly-cloudy-3-f:before{content:"\e975"}.pe-is-w-partly-cloudy-3:before{content:"\e976"}.pe-is-w-rain-1-f:before{content:"\e977"}.pe-is-w-rain-1:before{content:"\e978"}.pe-is-w-rain-and-snow-f:before{content:"\e979"}.pe-is-w-rain-and-snow:before{content:"\e97a"}.pe-is-w-rain-day-f:before{content:"\e97b"}.pe-is-w-rain-day:before{content:"\e97c"}.pe-is-w-rain-full-moon-f:before{content:"\e97d"}.pe-is-w-rain-full-moon:before{content:"\e97e"}.pe-is-w-rain-night-f:before{content:"\e97f"}.pe-is-w-rain-night:before{content:"\e980"}.pe-is-w-severe-thunderstorm-f:before{content:"\e981"}.pe-is-w-severe-thunderstorm:before{content:"\e982"}.pe-is-w-snow-day-1-f:before{content:"\e983"}.pe-is-w-snow-day-1:before{content:"\e984"}.pe-is-w-snow-day-2-f:before{content:"\e985"}.pe-is-w-snow-day-2:before{content:"\e986"}.pe-is-w-snow-day-3-f:before{content:"\e987"}.pe-is-w-snow-day-3:before{content:"\e988"}.pe-is-w-snow-f:before{content:"\e989"}.pe-is-w-snow-full-moon-1-f:before{content:"\e98a"}.pe-is-w-snow-full-moon-1:before{content:"\e98b"}.pe-is-w-snow-full-moon-2-f:before{content:"\e98c"}.pe-is-w-snow-full-moon-2:before{content:"\e98d"}.pe-is-w-snow-full-moon-3-f:before{content:"\e98e"}.pe-is-w-snow-full-moon-3:before{content:"\e98f"}.pe-is-w-snow-night-1-f:before{content:"\e990"}.pe-is-w-snow-night-1:before{content:"\e991"}.pe-is-w-snow-night-2-f:before{content:"\e992"}.pe-is-w-snow-night-2:before{content:"\e993"}.pe-is-w-snow-night-3-f:before{content:"\e994"}.pe-is-w-snow-night-3:before{content:"\e995"}.pe-is-w-snow:before{content:"\e996"}.pe-is-w-snowflake:before{content:"\e997"}.pe-is-w-sun-1-f:before{content:"\e998"}.pe-is-w-sun-1:before{content:"\e999"}.pe-is-w-sun-2-f:before{content:"\e99a"}.pe-is-w-sun-2:before{content:"\e99b"}.pe-is-w-sun-horizon-1-f:before{content:"\e99c"}.pe-is-w-sun-horizon-1:before{content:"\e99d"}.pe-is-w-sun-horizon-2-f:before{content:"\e99e"}.pe-is-w-sun-horizon-2:before{content:"\e99f"}.pe-is-w-sunrise-f:before{content:"\e9a0"}.pe-is-w-sunrise:before{content:"\e9a1"}.pe-is-w-sunset-f:before{content:"\e9a2"}.pe-is-w-sunset:before{content:"\e9a3"}.pe-is-w-thermometer-1-f:before{content:"\e9a4"}.pe-is-w-thermometer-1:before{content:"\e9a5"}.pe-is-w-thermometer-2-f:before{content:"\e9a6"}.pe-is-w-thermometer-2:before{content:"\e9a7"}.pe-is-w-thermometer-3-f:before{content:"\e9a8"}.pe-is-w-thermometer-3:before{content:"\e9a9"}.pe-is-w-thermometer-4-f:before{content:"\e9aa"}.pe-is-w-thermometer-4:before{content:"\e9ab"}.pe-is-w-thermometer-5-f:before{content:"\e9ac"}.pe-is-w-thermometer-5:before{content:"\e9ad"}.pe-is-w-thunderbolt-1-f:before{content:"\e9ae"}.pe-is-w-thunderbolt-1:before{content:"\e9af"}.pe-is-w-thunderbolt-2-f:before{content:"\e9b0"}.pe-is-w-thunderbolt-2:before{content:"\e9b1"}.pe-is-w-thunderstorm-day-1-f:before{content:"\e9b2"}.pe-is-w-thunderstorm-day-1:before{content:"\e9b3"}.pe-is-w-thunderstorm-day-2-f:before{content:"\e9b4"}.pe-is-w-thunderstorm-day-2:before{content:"\e9b5"}.pe-is-w-thunderstorm-f:before{content:"\e9b6"}.pe-is-w-thunderstorm-full-moon-1-f:before{content:"\e9b7"}.pe-is-w-thunderstorm-full-moon-1:before{content:"\e9b8"}.pe-is-w-thunderstorm-full-moon-2-f:before{content:"\e9b9"}.pe-is-w-thunderstorm-full-moon-2:before{content:"\e9ba"}.pe-is-w-thunderstorm-night-1-f:before{content:"\e9bb"}.pe-is-w-thunderstorm-night-1:before{content:"\e9bc"}.pe-is-w-thunderstorm-night-2-f:before{content:"\e9bd"}.pe-is-w-thunderstorm-night-2:before{content:"\e9be"}.pe-is-w-thunderstorm:before{content:"\e9bf"}.pe-is-w-tornado-1:before{content:"\e9c0"}.pe-is-w-tornado-2:before{content:"\e9c1"}.pe-is-w-umbrella-f:before{content:"\e9c2"}.pe-is-w-umbrella:before{content:"\e9c3"}.pe-is-w-wind-2:before{content:"\e9c4"}.pe-is-w-wind-cloud:before{content:"\e9c5"}.pe-is-w-wind-cone-f:before{content:"\e9c6"}.pe-is-w-wind-cone:before{content:"\e9c7"}.pe-is-w-wind-day:before{content:"\e9c8"}.pe-is-w-wind-full-moon:before{content:"\e9c9"}.pe-is-w-wind-moon:before{content:"\e9ca"}.pe-is-w-wind-night:before{content:"\e9cb"}.pe-is-w-wind-sun:before{content:"\e9cc"}.pe-is-w-wind-turbine-f:before{content:"\e9cd"}.pe-is-w-wind-turbine:before{content:"\e9ce"}.pe-is-w-wind:before{content:"\e9cf"}
Index: public/vendors/bundle.js
===================================================================
--- public/vendors/bundle.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/bundle.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,88 @@
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+
+/*! jQuery UI - v1.12.1 - 2016-09-14
+* http://jqueryui.com
+* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?m.left+=p:"center"===n.at[0]&&(m.left+=p/2),"bottom"===n.at[1]?m.top+=f:"center"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),x=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},m),I=e(k.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=I[0],D.top+=I[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+I[0],u[1]+I[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-l,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)
+    }}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(i)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("<span>").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(t.trim(t(this).children(".ui-menu-item-wrapper").text()))})}}),t.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;
+        this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<div>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("<div>").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!1&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){return"text"===t?(this._super("showLabel",e),void 0):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.12.1"}});var m;t.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.on("focus",this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))
+    }},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="<div class='ui-datepicker-group",U[1]>1)switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",P=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,P+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!E[2]?"":" title='"+E[2].replace(/'/g,"&#39;")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+A.getMonth()+"' data-year='"+A.getFullYear()+"'")+">"+(F&&!_?"&#xa0;":L?"<span class='ui-state-default'>"+A.getDate()+"</span>":"<a class='ui-state-default"+(A.getTime()===B.getTime()?" ui-state-highlight":"")+(A.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),T+="</tbody></table>"+(X?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}
+    },_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,h,l,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog
+    },disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant",e.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("<li>",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var s=t("<li>"),n=t("<div>",{title:i.element.attr("title")});return i.disabled&&this._addClass(s,null,"ui-state-disabled"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;return t===!1?(this.button.css("width",""),void 0):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1
+    },_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td>&#160;</td>",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;
+        this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("<div>").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip});
+
+/*
+ Popper.js
+ Copyright (C) Federico Zivolo 2019
+ Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
+ */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView,n=o.getComputedStyle(e,null);return t?n[t]:n}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function r(e){return 11===e?pe:10===e?se:pe||se}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent||null;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',o='top'===t?'scrollTop':'scrollLeft',n=e.nodeName;if('BODY'===n||'HTML'===n){var i=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||i;return r[o]}return e[o]}function f(e,t){var o=2<arguments.length&&void 0!==arguments[2]&&arguments[2],n=l(t,'top'),i=l(t,'left'),r=o?-1:1;return e.top+=n*r,e.bottom+=n*r,e.left+=i*r,e.right+=i*r,e}function m(e,t){var o='x'===t?'Left':'Top',n='Left'==o?'Right':'Bottom';return parseFloat(e['border'+o+'Width'],10)+parseFloat(e['border'+n+'Width'],10)}function h(e,t,o,n){return ee(t['offset'+e],t['scroll'+e],o['client'+e],o['offset'+e],o['scroll'+e],r(10)?parseInt(o['offset'+e])+parseInt(n['margin'+('Height'===e?'Top':'Left')])+parseInt(n['margin'+('Height'===e?'Bottom':'Right')]):0)}function c(e){var t=e.body,o=e.documentElement,n=r(10)&&getComputedStyle(o);return{height:h('Height',t,o,n),width:h('Width',t,o,n)}}function g(e){return fe({},e,{right:e.left+e.width,bottom:e.top+e.height})}function u(e){var o={};try{if(r(10)){o=e.getBoundingClientRect();var n=l(e,'top'),i=l(e,'left');o.top+=n,o.left+=i,o.bottom+=n,o.right+=i}else o=e.getBoundingClientRect()}catch(t){}var p={left:o.left,top:o.top,width:o.right-o.left,height:o.bottom-o.top},s='HTML'===e.nodeName?c(e.ownerDocument):{},d=s.width||e.clientWidth||p.right-p.left,a=s.height||e.clientHeight||p.bottom-p.top,f=e.offsetWidth-d,h=e.offsetHeight-a;if(f||h){var u=t(e);f-=m(u,'x'),h-=m(u,'y'),p.width-=f,p.height-=h}return g(p)}function b(e,o){var i=2<arguments.length&&void 0!==arguments[2]&&arguments[2],p=r(10),s='HTML'===o.nodeName,d=u(e),a=u(o),l=n(e),m=t(o),h=parseFloat(m.borderTopWidth,10),c=parseFloat(m.borderLeftWidth,10);i&&s&&(a.top=ee(a.top,0),a.left=ee(a.left,0));var b=g({top:d.top-a.top-h,left:d.left-a.left-c,width:d.width,height:d.height});if(b.marginTop=0,b.marginLeft=0,!p&&s){var w=parseFloat(m.marginTop,10),y=parseFloat(m.marginLeft,10);b.top-=h-w,b.bottom-=h-w,b.left-=c-y,b.right-=c-y,b.marginTop=w,b.marginLeft=y}return(p&&!i?o.contains(l):o===l&&'BODY'!==l.nodeName)&&(b=f(b,o)),b}function w(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=e.ownerDocument.documentElement,n=b(e,o),i=ee(o.clientWidth,window.innerWidth||0),r=ee(o.clientHeight,window.innerHeight||0),p=t?0:l(o),s=t?0:l(o,'left'),d={top:p-n.top+n.marginTop,left:s-n.left+n.marginLeft,width:i,height:r};return g(d)}function y(e){var n=e.nodeName;if('BODY'===n||'HTML'===n)return!1;if('fixed'===t(e,'position'))return!0;var i=o(e);return!!i&&y(i)}function E(e){if(!e||!e.parentElement||r())return document.documentElement;for(var o=e.parentElement;o&&'none'===t(o,'transform');)o=o.parentElement;return o||document.documentElement}function v(e,t,i,r){var p=4<arguments.length&&void 0!==arguments[4]&&arguments[4],s={top:0,left:0},d=p?E(e):a(e,t);if('viewport'===r)s=w(d,p);else{var l;'scrollParent'===r?(l=n(o(t)),'BODY'===l.nodeName&&(l=e.ownerDocument.documentElement)):'window'===r?l=e.ownerDocument.documentElement:l=r;var f=b(l,d,p);if('HTML'===l.nodeName&&!y(d)){var m=c(e.ownerDocument),h=m.height,g=m.width;s.top+=f.top-f.marginTop,s.bottom=h+f.top,s.left+=f.left-f.marginLeft,s.right=g+f.left}else s=f}i=i||0;var u='number'==typeof i;return s.left+=u?i:i.left||0,s.top+=u?i:i.top||0,s.right-=u?i:i.right||0,s.bottom-=u?i:i.bottom||0,s}function x(e){var t=e.width,o=e.height;return t*o}function O(e,t,o,n,i){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var p=v(o,n,r,i),s={top:{width:p.width,height:t.top-p.top},right:{width:p.right-t.right,height:p.height},bottom:{width:p.width,height:p.bottom-t.bottom},left:{width:t.left-p.left,height:p.height}},d=Object.keys(s).map(function(e){return fe({key:e},s[e],{area:x(s[e])})}).sort(function(e,t){return t.area-e.area}),a=d.filter(function(e){var t=e.width,n=e.height;return t>=o.clientWidth&&n>=o.clientHeight}),l=0<a.length?a[0].key:d[0].key,f=e.split('-')[1];return l+(f?'-'+f:'')}function L(e,t,o){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,i=n?E(t):a(t,o);return b(o,i,n)}function S(e){var t=e.ownerDocument.defaultView,o=t.getComputedStyle(e),n=parseFloat(o.marginTop||0)+parseFloat(o.marginBottom||0),i=parseFloat(o.marginLeft||0)+parseFloat(o.marginRight||0),r={width:e.offsetWidth+i,height:e.offsetHeight+n};return r}function T(e){var t={left:'right',right:'left',bottom:'top',top:'bottom'};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function D(e,t,o){o=o.split('-')[0];var n=S(e),i={width:n.width,height:n.height},r=-1!==['right','left'].indexOf(o),p=r?'top':'left',s=r?'left':'top',d=r?'height':'width',a=r?'width':'height';return i[p]=t[p]+t[d]/2-n[d]/2,i[s]=o===s?t[s]-n[a]:t[T(s)],i}function C(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function N(e,t,o){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===o});var n=C(e,function(e){return e[t]===o});return e.indexOf(n)}function P(t,o,n){var i=void 0===n?t:t.slice(0,N(t,'name',n));return i.forEach(function(t){t['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var n=t['function']||t.fn;t.enabled&&e(n)&&(o.offsets.popper=g(o.offsets.popper),o.offsets.reference=g(o.offsets.reference),o=n(o,t))}),o}function k(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=L(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=D(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?'fixed':'absolute',e=P(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function W(e,t){return e.some(function(e){var o=e.name,n=e.enabled;return n&&o===t})}function H(e){for(var t=[!1,'ms','Webkit','Moz','O'],o=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<t.length;n++){var i=t[n],r=i?''+i+o:e;if('undefined'!=typeof document.body.style[r])return r}return null}function B(){return this.state.isDestroyed=!0,W(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.position='',this.popper.style.top='',this.popper.style.left='',this.popper.style.right='',this.popper.style.bottom='',this.popper.style.willChange='',this.popper.style[H('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function A(e){var t=e.ownerDocument;return t?t.defaultView:window}function M(e,t,o,i){var r='BODY'===e.nodeName,p=r?e.ownerDocument.defaultView:e;p.addEventListener(t,o,{passive:!0}),r||M(n(p.parentNode),t,o,i),i.push(p)}function F(e,t,o,i){o.updateBound=i,A(e).addEventListener('resize',o.updateBound,{passive:!0});var r=n(e);return M(r,'scroll',o.updateBound,o.scrollParents),o.scrollElement=r,o.eventsEnabled=!0,o}function I(){this.state.eventsEnabled||(this.state=F(this.reference,this.options,this.state,this.scheduleUpdate))}function R(e,t){return A(e).removeEventListener('resize',t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function U(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=R(this.reference,this.state))}function Y(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function j(e,t){Object.keys(t).forEach(function(o){var n='';-1!==['width','height','top','right','bottom','left'].indexOf(o)&&Y(t[o])&&(n='px'),e.style[o]=t[o]+n})}function V(e,t){Object.keys(t).forEach(function(o){var n=t[o];!1===n?e.removeAttribute(o):e.setAttribute(o,t[o])})}function q(e,t){var o=e.offsets,n=o.popper,i=o.reference,r=$,p=function(e){return e},s=r(i.width),d=r(n.width),a=-1!==['left','right'].indexOf(e.placement),l=-1!==e.placement.indexOf('-'),f=t?a||l||s%2==d%2?r:Z:p,m=t?r:p;return{left:f(1==s%2&&1==d%2&&!l&&t?n.left-1:n.left),top:m(n.top),bottom:m(n.bottom),right:f(n.right)}}function K(e,t,o){var n=C(e,function(e){var o=e.name;return o===t}),i=!!n&&e.some(function(e){return e.name===o&&e.enabled&&e.order<n.order});if(!i){var r='`'+t+'`';console.warn('`'+o+'`'+' modifier is required by '+r+' modifier in order to work, be sure to include it before '+r+'!')}return i}function z(e){return'end'===e?'start':'start'===e?'end':e}function G(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=ce.indexOf(e),n=ce.slice(o+1).concat(ce.slice(0,o));return t?n.reverse():n}function _(e,t,o,n){var i=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+i[1],p=i[2];if(!r)return e;if(0===p.indexOf('%')){var s;switch(p){case'%p':s=o;break;case'%':case'%r':default:s=n;}var d=g(s);return d[t]/100*r}if('vh'===p||'vw'===p){var a;return a='vh'===p?ee(document.documentElement.clientHeight,window.innerHeight||0):ee(document.documentElement.clientWidth,window.innerWidth||0),a/100*r}return r}function X(e,t,o,n){var i=[0,0],r=-1!==['right','left'].indexOf(n),p=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=p.indexOf(C(p,function(e){return-1!==e.search(/,|\s/)}));p[s]&&-1===p[s].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var d=/\s*,\s*|\s+/,a=-1===s?[p]:[p.slice(0,s).concat([p[s].split(d)[0]]),[p[s].split(d)[1]].concat(p.slice(s+1))];return a=a.map(function(e,n){var i=(1===n?!r:r)?'height':'width',p=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t)},[]).map(function(e){return _(e,i,t,o)})}),a.forEach(function(e,t){e.forEach(function(o,n){Y(o)&&(i[t]+=o*('-'===e[n-1]?-1:1))})}),i}function J(e,t){var o,n=t.offset,i=e.placement,r=e.offsets,p=r.popper,s=r.reference,d=i.split('-')[0];return o=Y(+n)?[+n,0]:X(n,p,s,d),'left'===d?(p.top+=o[0],p.left-=o[1]):'right'===d?(p.top+=o[0],p.left+=o[1]):'top'===d?(p.left+=o[0],p.top-=o[1]):'bottom'===d&&(p.left+=o[0],p.top+=o[1]),e.popper=p,e}for(var Q=Math.min,Z=Math.floor,$=Math.round,ee=Math.max,te='undefined'!=typeof window&&'undefined'!=typeof document,oe=['Edge','Trident','Firefox'],ne=0,ie=0;ie<oe.length;ie+=1)if(te&&0<=navigator.userAgent.indexOf(oe[ie])){ne=1;break}var i=te&&window.Promise,re=i?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},ne))}},pe=te&&!!(window.MSInputMethodContext&&document.documentMode),se=te&&/MSIE 10/.test(navigator.userAgent),de=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')},ae=function(){function e(e,t){for(var o,n=0;n<t.length;n++)o=t[n],o.enumerable=o.enumerable||!1,o.configurable=!0,'value'in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),le=function(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},fe=Object.assign||function(e){for(var t,o=1;o<arguments.length;o++)for(var n in t=arguments[o],t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},me=te&&/Firefox/i.test(navigator.userAgent),he=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],ce=he.slice(3),ge={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},ue=function(){function t(o,n){var i=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};de(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=re(this.update.bind(this)),this.options=fe({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=o&&o.jquery?o[0]:o,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(fe({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){i.options.modifiers[e]=fe({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return fe({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(t){t.enabled&&e(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var p=this.options.eventsEnabled;p&&this.enableEventListeners(),this.state.eventsEnabled=p}return ae(t,[{key:'update',value:function(){return k.call(this)}},{key:'destroy',value:function(){return B.call(this)}},{key:'enableEventListeners',value:function(){return I.call(this)}},{key:'disableEventListeners',value:function(){return U.call(this)}}]),t}();return ue.Utils=('undefined'==typeof window?global:window).PopperUtils,ue.placements=he,ue.Defaults={placement:'bottom',positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,o=t.split('-')[0],n=t.split('-')[1];if(n){var i=e.offsets,r=i.reference,p=i.popper,s=-1!==['bottom','top'].indexOf(o),d=s?'left':'top',a=s?'width':'height',l={start:le({},d,r[d]),end:le({},d,r[d]+r[a]-p[a])};e.offsets.popper=fe({},p,l[n])}return e}},offset:{order:200,enabled:!0,fn:J,offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var o=t.boundariesElement||p(e.instance.popper);e.instance.reference===o&&(o=p(o));var n=H('transform'),i=e.instance.popper.style,r=i.top,s=i.left,d=i[n];i.top='',i.left='',i[n]='';var a=v(e.instance.popper,e.instance.reference,t.padding,o,e.positionFixed);i.top=r,i.left=s,i[n]=d,t.boundaries=a;var l=t.priority,f=e.offsets.popper,m={primary:function(e){var o=f[e];return f[e]<a[e]&&!t.escapeWithReference&&(o=ee(f[e],a[e])),le({},e,o)},secondary:function(e){var o='right'===e?'left':'top',n=f[o];return f[e]>a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),le({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=fe({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]<r(n[d])&&(e.offsets.popper[d]=r(n[d])-o[a]),o[d]>r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-u<s[m]&&(e.offsets.popper[m]-=s[m]-(d[c]-u)),d[m]+u>s[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},le(n,m,$(v)),le(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ge.FLIP:p=[n,i];break;case ge.CLOCKWISE:p=G(n);break;case ge.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)<f(l.right)||'top'===n&&f(a.bottom)>f(l.top)||'bottom'===n&&f(a.top)<f(l.bottom),h=f(a.left)<f(o.left),c=f(a.right)>f(o.right),g=f(a.top)<f(o.top),u=f(a.bottom)>f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u);(m||b||y)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),y&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=fe({},e.offsets.popper,D(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=C(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottom<o.top||t.left>o.right||t.top>o.bottom||t.right<o.left){if(!0===e.hide)return e;e.hide=!0,e.attributes['x-out-of-boundaries']=''}else{if(!1===e.hide)return e;e.hide=!1,e.attributes['x-out-of-boundaries']=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var o=t.x,n=t.y,i=e.offsets.popper,r=C(e.instance.modifiers,function(e){return'applyStyle'===e.name}).gpuAcceleration;void 0!==r&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var s,d,a=void 0===r?t.gpuAcceleration:r,l=p(e.instance.popper),f=u(l),m={position:i.position},h=q(e,2>window.devicePixelRatio||!me),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=H('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=fe({},E,e.attributes),e.styles=fe({},m,e.styles),e.arrowStyles=fe({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return j(e.instance.popper,e.styles),V(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&j(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),j(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ue});
+//# sourceMappingURL=popper.min.js.map
+
+/*!
+  * Bootstrap v4.3.1 (https://getbootstrap.com/)
+  * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+  */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t=t||self).bootstrap={},t.jQuery,t.Popper)}(this,function(t,g,u){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}g=g&&g.hasOwnProperty("default")?g.default:g,u=u&&u.hasOwnProperty("default")?u.default:u;var e="transitionend";function n(t){var e=this,n=!1;return g(this).one(_.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||_.triggerTransitionEnd(e)},t),this}var _={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=g(t).css("transition-duration"),n=g(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){g(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&_.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?_.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};g.fn.emulateTransitionEnd=n,g.event.special[_.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(g(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o="alert",r="bs.alert",a="."+r,c=g.fn[o],h={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},f="alert",d="fade",m="show",p=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){g.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=_.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=g(t).closest("."+f)[0]),n},t._triggerCloseEvent=function(t){var e=g.Event(h.CLOSE);return g(t).trigger(e),e},t._removeElement=function(e){var n=this;if(g(e).removeClass(m),g(e).hasClass(d)){var t=_.getTransitionDurationFromElement(e);g(e).one(_.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){g(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();g(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',p._handleDismiss(new p)),g.fn[o]=p._jQueryInterface,g.fn[o].Constructor=p,g.fn[o].noConflict=function(){return g.fn[o]=c,p._jQueryInterface};var v="button",y="bs.button",E="."+y,C=".data-api",T=g.fn[v],S="active",b="btn",I="focus",D='[data-toggle^="button"]',w='[data-toggle="buttons"]',A='input:not([type="hidden"])',N=".active",O=".btn",k={CLICK_DATA_API:"click"+E+C,FOCUS_BLUR_DATA_API:"focus"+E+C+" blur"+E+C},P=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=g(this._element).closest(w)[0];if(n){var i=this._element.querySelector(A);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(S))t=!1;else{var o=n.querySelector(N);o&&g(o).removeClass(S)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains(S),g(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(S)),t&&g(this._element).toggleClass(S)},t.dispose=function(){g.removeData(this._element,y),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(y);t||(t=new n(this),g(this).data(y,t)),"toggle"===e&&t[e]()})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),n}();g(document).on(k.CLICK_DATA_API,D,function(t){t.preventDefault();var e=t.target;g(e).hasClass(b)||(e=g(e).closest(O)),P._jQueryInterface.call(g(e),"toggle")}).on(k.FOCUS_BLUR_DATA_API,D,function(t){var e=g(t.target).closest(O)[0];g(e).toggleClass(I,/^focus(in)?$/.test(t.type))}),g.fn[v]=P._jQueryInterface,g.fn[v].Constructor=P,g.fn[v].noConflict=function(){return g.fn[v]=T,P._jQueryInterface};var L="carousel",j="bs.carousel",H="."+j,R=".data-api",x=g.fn[L],F={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},U={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},W="next",q="prev",M="left",K="right",Q={SLIDE:"slide"+H,SLID:"slid"+H,KEYDOWN:"keydown"+H,MOUSEENTER:"mouseenter"+H,MOUSELEAVE:"mouseleave"+H,TOUCHSTART:"touchstart"+H,TOUCHMOVE:"touchmove"+H,TOUCHEND:"touchend"+H,POINTERDOWN:"pointerdown"+H,POINTERUP:"pointerup"+H,DRAG_START:"dragstart"+H,LOAD_DATA_API:"load"+H+R,CLICK_DATA_API:"click"+H+R},B="carousel",V="active",Y="slide",z="carousel-item-right",X="carousel-item-left",$="carousel-item-next",G="carousel-item-prev",J="pointer-event",Z=".active",tt=".active.carousel-item",et=".carousel-item",nt=".carousel-item img",it=".carousel-item-next, .carousel-item-prev",ot=".carousel-indicators",rt="[data-slide], [data-slide-to]",st='[data-ride="carousel"]',at={TOUCH:"touch",PEN:"pen"},lt=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(ot),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(W)},t.nextWhenVisible=function(){!document.hidden&&g(this._element).is(":visible")&&"hidden"!==g(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(q)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(it)&&(_.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector(tt);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)g(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?W:q;this._slide(i,this._items[t])}},t.dispose=function(){g(this._element).off(H),g.removeData(this._element,j),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l({},F,t),_.typeCheckConfig(L,t,U),t},t._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;0<e&&this.prev(),e<0&&this.next()}},t._addEventListeners=function(){var e=this;this._config.keyboard&&g(this._element).on(Q.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&g(this._element).on(Q.MOUSEENTER,function(t){return e.pause(t)}).on(Q.MOUSELEAVE,function(t){return e.cycle(t)}),this._config.touch&&this._addTouchEventListeners()},t._addTouchEventListeners=function(){var n=this;if(this._touchSupported){var e=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},i=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),"hover"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))};g(this._element.querySelectorAll(nt)).on(Q.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(g(this._element).on(Q.POINTERDOWN,function(t){return e(t)}),g(this._element).on(Q.POINTERUP,function(t){return i(t)}),this._element.classList.add(J)):(g(this._element).on(Q.TOUCHSTART,function(t){return e(t)}),g(this._element).on(Q.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),g(this._element).on(Q.TOUCHEND,function(t){return i(t)}))}},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(et)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===W,i=t===q,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===q?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(tt)),o=g.Event(Q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return g(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(Z));g(e).removeClass(V);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&g(n).addClass(V)}},t._slide=function(t,e){var n,i,o,r=this,s=this._element.querySelector(tt),a=this._getItemIndex(s),l=e||s&&this._getItemByDirection(t,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=t===W?(n=X,i=$,M):(n=z,i=G,K),l&&g(l).hasClass(V))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=g.Event(Q.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(g(this._element).hasClass(Y)){g(l).addClass(i),_.reflow(l),g(s).addClass(n),g(l).addClass(n);var f=parseInt(l.getAttribute("data-interval"),10);this._config.interval=f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,f):this._config.defaultInterval||this._config.interval;var d=_.getTransitionDurationFromElement(s);g(s).one(_.TRANSITION_END,function(){g(l).removeClass(n+" "+i).addClass(V),g(s).removeClass(V+" "+i+" "+n),r._isSliding=!1,setTimeout(function(){return g(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else g(s).removeClass(V),g(l).addClass(V),this._isSliding=!1,g(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var t=g(this).data(j),e=l({},F,g(this).data());"object"==typeof i&&(e=l({},e,i));var n="string"==typeof i?i:e.slide;if(t||(t=new r(this,e),g(this).data(j,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&e.ride&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e=_.getSelectorFromElement(this);if(e){var n=g(e)[0];if(n&&g(n).hasClass(B)){var i=l({},g(n).data(),g(this).data()),o=this.getAttribute("data-slide-to");o&&(i.interval=!1),r._jQueryInterface.call(g(n),i),o&&g(n).data(j).to(o),t.preventDefault()}}},s(r,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return F}}]),r}();g(document).on(Q.CLICK_DATA_API,rt,lt._dataApiClickHandler),g(window).on(Q.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(st)),e=0,n=t.length;e<n;e++){var i=g(t[e]);lt._jQueryInterface.call(i,i.data())}}),g.fn[L]=lt._jQueryInterface,g.fn[L].Constructor=lt,g.fn[L].noConflict=function(){return g.fn[L]=x,lt._jQueryInterface};var ct="collapse",ht="bs.collapse",ut="."+ht,ft=g.fn[ct],dt={toggle:!0,parent:""},gt={toggle:"boolean",parent:"(string|element)"},_t={SHOW:"show"+ut,SHOWN:"shown"+ut,HIDE:"hide"+ut,HIDDEN:"hidden"+ut,CLICK_DATA_API:"click"+ut+".data-api"},mt="show",pt="collapse",vt="collapsing",yt="collapsed",Et="width",Ct="height",Tt=".show, .collapsing",St='[data-toggle="collapse"]',bt=function(){function a(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(St)),i=0,o=n.length;i<o;i++){var r=n[i],s=_.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(t){return t===e});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){g(this._element).hasClass(mt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!g(this._element).hasClass(mt)&&(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(Tt)).filter(function(t){return"string"==typeof n._config.parent?t.getAttribute("data-parent")===n._config.parent:t.classList.contains(pt)})).length&&(t=null),!(t&&(e=g(t).not(this._selector).data(ht))&&e._isTransitioning))){var i=g.Event(_t.SHOW);if(g(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(g(t).not(this._selector),"hide"),e||g(t).data(ht,null));var o=this._getDimension();g(this._element).removeClass(pt).addClass(vt),this._element.style[o]=0,this._triggerArray.length&&g(this._triggerArray).removeClass(yt).attr("aria-expanded",!0),this.setTransitioning(!0);var r="scroll"+(o[0].toUpperCase()+o.slice(1)),s=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){g(n._element).removeClass(vt).addClass(pt).addClass(mt),n._element.style[o]="",n.setTransitioning(!1),g(n._element).trigger(_t.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+"px"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&g(this._element).hasClass(mt)){var e=g.Event(_t.HIDE);if(g(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",_.reflow(this._element),g(this._element).addClass(vt).removeClass(pt).removeClass(mt);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=_.getSelectorFromElement(r);if(null!==s)g([].slice.call(document.querySelectorAll(s))).hasClass(mt)||g(r).addClass(yt).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var a=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){t.setTransitioning(!1),g(t._element).removeClass(vt).addClass(pt).trigger(_t.HIDDEN)}).emulateTransitionEnd(a)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){g.removeData(this._element,ht),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l({},dt,t)).toggle=Boolean(t.toggle),_.typeCheckConfig(ct,t,gt),t},t._getDimension=function(){return g(this._element).hasClass(Et)?Et:Ct},t._getParent=function(){var t,n=this;_.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(t.querySelectorAll(e));return g(i).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=g(t).hasClass(mt);e.length&&g(e).toggleClass(yt,!n).attr("aria-expanded",n)},a._getTargetFromElement=function(t){var e=_.getSelectorFromElement(t);return e?document.querySelector(e):null},a._jQueryInterface=function(i){return this.each(function(){var t=g(this),e=t.data(ht),n=l({},dt,t.data(),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(ht,e)),"string"==typeof i){if("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return dt}}]),a}();g(document).on(_t.CLICK_DATA_API,St,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=g(this),e=_.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));g(i).each(function(){var t=g(this),e=t.data(ht)?"toggle":n.data();bt._jQueryInterface.call(t,e)})}),g.fn[ct]=bt._jQueryInterface,g.fn[ct].Constructor=bt,g.fn[ct].noConflict=function(){return g.fn[ct]=ft,bt._jQueryInterface};var It="dropdown",Dt="bs.dropdown",wt="."+Dt,At=".data-api",Nt=g.fn[It],Ot=new RegExp("38|40|27"),kt={HIDE:"hide"+wt,HIDDEN:"hidden"+wt,SHOW:"show"+wt,SHOWN:"shown"+wt,CLICK:"click"+wt,CLICK_DATA_API:"click"+wt+At,KEYDOWN_DATA_API:"keydown"+wt+At,KEYUP_DATA_API:"keyup"+wt+At},Pt="disabled",Lt="show",jt="dropup",Ht="dropright",Rt="dropleft",xt="dropdown-menu-right",Ft="position-static",Ut='[data-toggle="dropdown"]',Wt=".dropdown form",qt=".dropdown-menu",Mt=".navbar-nav",Kt=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Qt="top-start",Bt="top-end",Vt="bottom-start",Yt="bottom-end",zt="right-start",Xt="left-start",$t={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},Gt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},Jt=function(){function c(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=c.prototype;return t.toggle=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)){var t=c._getParentFromElement(this._element),e=g(this._menu).hasClass(Lt);if(c._clearMenus(),!e){var n={relatedTarget:this._element},i=g.Event(kt.SHOW,n);if(g(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof u)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=t:_.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&g(t).addClass(Ft),this._popper=new u(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===g(t).closest(Mt).length&&g(document.body).children().on("mouseover",null,g.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),g(this._menu).toggleClass(Lt),g(t).toggleClass(Lt).trigger(g.Event(kt.SHOWN,n))}}}},t.show=function(){if(!(this._element.disabled||g(this._element).hasClass(Pt)||g(this._menu).hasClass(Lt))){var t={relatedTarget:this._element},e=g.Event(kt.SHOW,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(kt.SHOWN,t)))}},t.hide=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)&&g(this._menu).hasClass(Lt)){var t={relatedTarget:this._element},e=g.Event(kt.HIDE,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(kt.HIDDEN,t)))}},t.dispose=function(){g.removeData(this._element,Dt),g(this._element).off(wt),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;g(this._element).on(kt.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l({},this.constructor.Default,g(this._element).data(),t),_.typeCheckConfig(It,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=c._getParentFromElement(this._element);t&&(this._menu=t.querySelector(qt))}return this._menu},t._getPlacement=function(){var t=g(this._element.parentNode),e=Vt;return t.hasClass(jt)?(e=Qt,g(this._menu).hasClass(xt)&&(e=Bt)):t.hasClass(Ht)?e=zt:t.hasClass(Rt)?e=Xt:g(this._menu).hasClass(xt)&&(e=Yt),e},t._detectNavbar=function(){return 0<g(this._element).closest(".navbar").length},t._getOffset=function(){var e=this,t={};return"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e._config.offset(t.offsets,e._element)||{}),t}:t.offset=this._config.offset,t},t._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),t},c._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(Dt);if(t||(t=new c(this,"object"==typeof e?e:null),g(this).data(Dt,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},c._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(Ut)),n=0,i=e.length;n<i;n++){var o=c._getParentFromElement(e[n]),r=g(e[n]).data(Dt),s={relatedTarget:e[n]};if(t&&"click"===t.type&&(s.clickEvent=t),r){var a=r._menu;if(g(o).hasClass(Lt)&&!(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&g.contains(o,t.target))){var l=g.Event(kt.HIDE,s);g(o).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),e[n].setAttribute("aria-expanded","false"),g(a).removeClass(Lt),g(o).removeClass(Lt).trigger(g.Event(kt.HIDDEN,s)))}}}},c._getParentFromElement=function(t){var e,n=_.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},c._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||g(t.target).closest(qt).length)):Ot.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!g(this).hasClass(Pt))){var e=c._getParentFromElement(this),n=g(e).hasClass(Lt);if(n&&(!n||27!==t.which&&32!==t.which)){var i=[].slice.call(e.querySelectorAll(Kt));if(0!==i.length){var o=i.indexOf(t.target);38===t.which&&0<o&&o--,40===t.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===t.which){var r=e.querySelector(Ut);g(r).trigger("focus")}g(this).trigger("click")}}},s(c,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return $t}},{key:"DefaultType",get:function(){return Gt}}]),c}();g(document).on(kt.KEYDOWN_DATA_API,Ut,Jt._dataApiKeydownHandler).on(kt.KEYDOWN_DATA_API,qt,Jt._dataApiKeydownHandler).on(kt.CLICK_DATA_API+" "+kt.KEYUP_DATA_API,Jt._clearMenus).on(kt.CLICK_DATA_API,Ut,function(t){t.preventDefault(),t.stopPropagation(),Jt._jQueryInterface.call(g(this),"toggle")}).on(kt.CLICK_DATA_API,Wt,function(t){t.stopPropagation()}),g.fn[It]=Jt._jQueryInterface,g.fn[It].Constructor=Jt,g.fn[It].noConflict=function(){return g.fn[It]=Nt,Jt._jQueryInterface};var Zt="modal",te="bs.modal",ee="."+te,ne=g.fn[Zt],ie={backdrop:!0,keyboard:!0,focus:!0,show:!0},oe={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},re={HIDE:"hide"+ee,HIDDEN:"hidden"+ee,SHOW:"show"+ee,SHOWN:"shown"+ee,FOCUSIN:"focusin"+ee,RESIZE:"resize"+ee,CLICK_DISMISS:"click.dismiss"+ee,KEYDOWN_DISMISS:"keydown.dismiss"+ee,MOUSEUP_DISMISS:"mouseup.dismiss"+ee,MOUSEDOWN_DISMISS:"mousedown.dismiss"+ee,CLICK_DATA_API:"click"+ee+".data-api"},se="modal-dialog-scrollable",ae="modal-scrollbar-measure",le="modal-backdrop",ce="modal-open",he="fade",ue="show",fe=".modal-dialog",de=".modal-body",ge='[data-toggle="modal"]',_e='[data-dismiss="modal"]',me=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",pe=".sticky-top",ve=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(fe),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){g(this._element).hasClass(he)&&(this._isTransitioning=!0);var n=g.Event(re.SHOW,{relatedTarget:t});g(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),g(this._element).on(re.CLICK_DISMISS,_e,function(t){return e.hide(t)}),g(this._dialog).on(re.MOUSEDOWN_DISMISS,function(){g(e._element).one(re.MOUSEUP_DISMISS,function(t){g(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=g.Event(re.HIDE);if(g(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=g(this._element).hasClass(he);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),g(document).off(re.FOCUSIN),g(this._element).removeClass(ue),g(this._element).off(re.CLICK_DISMISS),g(this._dialog).off(re.MOUSEDOWN_DISMISS),i){var o=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(o)}else this._hideModal()}}},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return g(t).off(ee)}),g(document).off(re.FOCUSIN),g.removeData(this._element,te),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l({},ie,t),_.typeCheckConfig(Zt,t,oe),t},t._showElement=function(t){var e=this,n=g(this._element).hasClass(he);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),g(this._dialog).hasClass(se)?this._dialog.querySelector(de).scrollTop=0:this._element.scrollTop=0,n&&_.reflow(this._element),g(this._element).addClass(ue),this._config.focus&&this._enforceFocus();var i=g.Event(re.SHOWN,{relatedTarget:t}),o=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,g(e._element).trigger(i)};if(n){var r=_.getTransitionDurationFromElement(this._dialog);g(this._dialog).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()},t._enforceFocus=function(){var e=this;g(document).off(re.FOCUSIN).on(re.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===g(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?g(this._element).on(re.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||g(this._element).off(re.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?g(window).on(re.RESIZE,function(t){return e.handleUpdate(t)}):g(window).off(re.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){g(document.body).removeClass(ce),t._resetAdjustments(),t._resetScrollbar(),g(t._element).trigger(re.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(g(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=g(this._element).hasClass(he)?he:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=le,n&&this._backdrop.classList.add(n),g(this._backdrop).appendTo(document.body),g(this._element).on(re.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._element.focus():e.hide())}),n&&_.reflow(this._backdrop),g(this._backdrop).addClass(ue),!t)return;if(!n)return void t();var i=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){g(this._backdrop).removeClass(ue);var o=function(){e._removeBackdrop(),t&&t()};if(g(this._element).hasClass(he)){var r=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var t=[].slice.call(document.querySelectorAll(me)),e=[].slice.call(document.querySelectorAll(pe));g(t).each(function(t,e){var n=e.style.paddingRight,i=g(e).css("padding-right");g(e).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),g(e).each(function(t,e){var n=e.style.marginRight,i=g(e).css("margin-right");g(e).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=g(document.body).css("padding-right");g(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}g(document.body).addClass(ce)},t._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(me));g(t).each(function(t,e){var n=g(e).data("padding-right");g(e).removeData("padding-right"),e.style.paddingRight=n||""});var e=[].slice.call(document.querySelectorAll(""+pe));g(e).each(function(t,e){var n=g(e).data("margin-right");"undefined"!=typeof n&&g(e).css("margin-right",n).removeData("margin-right")});var n=g(document.body).data("padding-right");g(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=ae,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=g(this).data(te),e=l({},ie,g(this).data(),"object"==typeof n&&n?n:{});if(t||(t=new o(this,e),g(this).data(te,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return ie}}]),o}();g(document).on(re.CLICK_DATA_API,ge,function(t){var e,n=this,i=_.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=g(e).data(te)?"toggle":l({},g(e).data(),g(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var r=g(e).one(re.SHOW,function(t){t.isDefaultPrevented()||r.one(re.HIDDEN,function(){g(n).is(":visible")&&n.focus()})});ve._jQueryInterface.call(g(e),o,this)}),g.fn[Zt]=ve._jQueryInterface,g.fn[Zt].Constructor=ve,g.fn[Zt].noConflict=function(){return g.fn[Zt]=ne,ve._jQueryInterface};var ye=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Ee={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Ce=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Te=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function Se(t,s,e){if(0===t.length)return t;if(e&&"function"==typeof e)return e(t);for(var n=(new window.DOMParser).parseFromString(t,"text/html"),a=Object.keys(s),l=[].slice.call(n.body.querySelectorAll("*")),i=function(t,e){var n=l[t],i=n.nodeName.toLowerCase();if(-1===a.indexOf(n.nodeName.toLowerCase()))return n.parentNode.removeChild(n),"continue";var o=[].slice.call(n.attributes),r=[].concat(s["*"]||[],s[i]||[]);o.forEach(function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===ye.indexOf(n)||Boolean(t.nodeValue.match(Ce)||t.nodeValue.match(Te));for(var i=e.filter(function(t){return t instanceof RegExp}),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return!0;return!1})(t,r)||n.removeAttribute(t.nodeName)})},o=0,r=l.length;o<r;o++)i(o);return n.body.innerHTML}var be="tooltip",Ie="bs.tooltip",De="."+Ie,we=g.fn[be],Ae="bs-tooltip",Ne=new RegExp("(^|\\s)"+Ae+"\\S+","g"),Oe=["sanitize","whiteList","sanitizeFn"],ke={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object"},Pe={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Le={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Ee},je="show",He="out",Re={HIDE:"hide"+De,HIDDEN:"hidden"+De,SHOW:"show"+De,SHOWN:"shown"+De,INSERTED:"inserted"+De,CLICK:"click"+De,FOCUSIN:"focusin"+De,FOCUSOUT:"focusout"+De,MOUSEENTER:"mouseenter"+De,MOUSELEAVE:"mouseleave"+De},xe="fade",Fe="show",Ue=".tooltip-inner",We=".arrow",qe="hover",Me="focus",Ke="click",Qe="manual",Be=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(xe);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:We},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===He&&e._leave(null,e)};if(g(this.tip).hasClass(xe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==je&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[Ke]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[qe]=!1,g(this.tip).hasClass(xe)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ae+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ue)),this.getTitle()),g(t).removeClass(xe+" "+Fe)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Se(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Pe[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Qe){var e=t===qe?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===qe?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Me:qe]=!0),g(e.getTipElement()).hasClass(Fe)||e._hoverState===je?e._hoverState=je:(clearTimeout(e._timeout),e._hoverState=je,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===je&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Me:qe]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===He&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==Oe.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(be,t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ne);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(xe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ie),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ie,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Le}},{key:"NAME",get:function(){return be}},{key:"DATA_KEY",get:function(){return Ie}},{key:"Event",get:function(){return Re}},{key:"EVENT_KEY",get:function(){return De}},{key:"DefaultType",get:function(){return ke}}]),i}();g.fn[be]=Be._jQueryInterface,g.fn[be].Constructor=Be,g.fn[be].noConflict=function(){return g.fn[be]=we,Be._jQueryInterface};var Ve="popover",Ye="bs.popover",ze="."+Ye,Xe=g.fn[Ve],$e="bs-popover",Ge=new RegExp("(^|\\s)"+$e+"\\S+","g"),Je=l({},Be.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),Ze=l({},Be.DefaultType,{content:"(string|element|function)"}),tn="fade",en="show",nn=".popover-header",on=".popover-body",rn={HIDE:"hide"+ze,HIDDEN:"hidden"+ze,SHOW:"show"+ze,SHOWN:"shown"+ze,INSERTED:"inserted"+ze,CLICK:"click"+ze,FOCUSIN:"focusin"+ze,FOCUSOUT:"focusout"+ze,MOUSEENTER:"mouseenter"+ze,MOUSELEAVE:"mouseleave"+ze},sn=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass($e+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(nn),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(on),e),t.removeClass(tn+" "+en)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ge);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ye),e="object"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ye,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Je}},{key:"NAME",get:function(){return Ve}},{key:"DATA_KEY",get:function(){return Ye}},{key:"Event",get:function(){return rn}},{key:"EVENT_KEY",get:function(){return ze}},{key:"DefaultType",get:function(){return Ze}}]),i}(Be);g.fn[Ve]=sn._jQueryInterface,g.fn[Ve].Constructor=sn,g.fn[Ve].noConflict=function(){return g.fn[Ve]=Xe,sn._jQueryInterface};var an="scrollspy",ln="bs.scrollspy",cn="."+ln,hn=g.fn[an],un={offset:10,method:"auto",target:""},fn={offset:"number",method:"string",target:"(string|element)"},dn={ACTIVATE:"activate"+cn,SCROLL:"scroll"+cn,LOAD_DATA_API:"load"+cn+".data-api"},gn="dropdown-item",_n="active",mn='[data-spy="scroll"]',pn=".nav, .list-group",vn=".nav-link",yn=".nav-item",En=".list-group-item",Cn=".dropdown",Tn=".dropdown-item",Sn=".dropdown-toggle",bn="offset",In="position",Dn=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+vn+","+this._config.target+" "+En+","+this._config.target+" "+Tn,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,g(this._scrollElement).on(dn.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?bn:In,o="auto"===this._config.method?t:this._config.method,r=o===In?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=_.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[g(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){g.removeData(this._element,ln),g(this._scrollElement).off(cn),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if("string"!=typeof(t=l({},un,"object"==typeof t&&t?t:{})).target){var e=g(t.target).attr("id");e||(e=_.getUID(an),g(t.target).attr("id",e)),t.target="#"+e}return _.typeCheckConfig(an,t,fn),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",").map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'}),n=g([].slice.call(document.querySelectorAll(t.join(","))));n.hasClass(gn)?(n.closest(Cn).find(Sn).addClass(_n),n.addClass(_n)):(n.addClass(_n),n.parents(pn).prev(vn+", "+En).addClass(_n),n.parents(pn).prev(yn).children(vn).addClass(_n)),g(this._scrollElement).trigger(dn.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(_n)}).forEach(function(t){return t.classList.remove(_n)})},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(ln);if(t||(t=new n(this,"object"==typeof e&&e),g(this).data(ln,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return un}}]),n}();g(window).on(dn.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(mn)),e=t.length;e--;){var n=g(t[e]);Dn._jQueryInterface.call(n,n.data())}}),g.fn[an]=Dn._jQueryInterface,g.fn[an].Constructor=Dn,g.fn[an].noConflict=function(){return g.fn[an]=hn,Dn._jQueryInterface};var wn="bs.tab",An="."+wn,Nn=g.fn.tab,On={HIDE:"hide"+An,HIDDEN:"hidden"+An,SHOW:"show"+An,SHOWN:"shown"+An,CLICK_DATA_API:"click"+An+".data-api"},kn="dropdown-menu",Pn="active",Ln="disabled",jn="fade",Hn="show",Rn=".dropdown",xn=".nav, .list-group",Fn=".active",Un="> li > .active",Wn='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',qn=".dropdown-toggle",Mn="> .dropdown-menu .active",Kn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&g(this._element).hasClass(Pn)||g(this._element).hasClass(Ln))){var t,i,e=g(this._element).closest(xn)[0],o=_.getSelectorFromElement(this._element);if(e){var r="UL"===e.nodeName||"OL"===e.nodeName?Un:Fn;i=(i=g.makeArray(g(e).find(r)))[i.length-1]}var s=g.Event(On.HIDE,{relatedTarget:this._element}),a=g.Event(On.SHOW,{relatedTarget:i});if(i&&g(i).trigger(s),g(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=g.Event(On.HIDDEN,{relatedTarget:n._element}),e=g.Event(On.SHOWN,{relatedTarget:i});g(i).trigger(t),g(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){g.removeData(this._element,wn),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?g(e).children(Fn):g(e).find(Un))[0],r=n&&o&&g(o).hasClass(jn),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=_.getTransitionDurationFromElement(o);g(o).removeClass(Hn).one(_.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){g(e).removeClass(Pn);var i=g(e.parentNode).find(Mn)[0];i&&g(i).removeClass(Pn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(g(t).addClass(Pn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),_.reflow(t),t.classList.contains(jn)&&t.classList.add(Hn),t.parentNode&&g(t.parentNode).hasClass(kn)){var o=g(t).closest(Rn)[0];if(o){var r=[].slice.call(o.querySelectorAll(qn));g(r).addClass(Pn)}t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(wn);if(e||(e=new i(this),t.data(wn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();g(document).on(On.CLICK_DATA_API,Wn,function(t){t.preventDefault(),Kn._jQueryInterface.call(g(this),"show")}),g.fn.tab=Kn._jQueryInterface,g.fn.tab.Constructor=Kn,g.fn.tab.noConflict=function(){return g.fn.tab=Nn,Kn._jQueryInterface};var Qn="toast",Bn="bs.toast",Vn="."+Bn,Yn=g.fn[Qn],zn={CLICK_DISMISS:"click.dismiss"+Vn,HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn},Xn="fade",$n="hide",Gn="show",Jn="showing",Zn={animation:"boolean",autohide:"boolean",delay:"number"},ti={animation:!0,autohide:!0,delay:500},ei='[data-dismiss="toast"]',ni=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;g(this._element).trigger(zn.SHOW),this._config.animation&&this._element.classList.add(Xn);var e=function(){t._element.classList.remove(Jn),t._element.classList.add(Gn),g(t._element).trigger(zn.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove($n),this._element.classList.add(Jn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(Gn)&&(g(this._element).trigger(zn.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(Gn)&&this._element.classList.remove(Gn),g(this._element).off(zn.CLICK_DISMISS),g.removeData(this._element,Bn),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},ti,g(this._element).data(),"object"==typeof t&&t?t:{}),_.typeCheckConfig(Qn,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;g(this._element).on(zn.CLICK_DISMISS,ei,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add($n),g(t._element).trigger(zn.HIDDEN)};if(this._element.classList.remove(Gn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(Bn);if(e||(e=new i(this,"object"==typeof n&&n),t.data(Bn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"DefaultType",get:function(){return Zn}},{key:"Default",get:function(){return ti}}]),i}();g.fn[Qn]=ni._jQueryInterface,g.fn[Qn].Constructor=ni,g.fn[Qn].noConflict=function(){return g.fn[Qn]=Yn,ni._jQueryInterface},function(){if("undefined"==typeof g)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=g.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),t.Util=_,t.Alert=p,t.Button=P,t.Carousel=lt,t.Collapse=bt,t.Dropdown=Jt,t.Modal=ve,t.Popover=sn,t.Scrollspy=Dn,t.Tab=Kn,t.Toast=ni,t.Tooltip=Be,Object.defineProperty(t,"__esModule",{value:!0})});
+//# sourceMappingURL=bootstrap.min.js.map
+
+/*
+ * Toastr
+ * Copyright 2012-2015
+ * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.
+ * All Rights Reserved.
+ * Use, reproduction, distribution, and modification of this code is subject to the terms and
+ * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php
+ *
+ * ARIA Support: Greta Krafsig
+ *
+ * Project: https://github.com/CodeSeven/toastr
+ */
+("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)})(["jquery"],function(D){return function(){var h,t,v,C=0,s="error",o="info",i="success",a="warning",e={clear:function(e,t){var n=O();h||w(n),r(e,n,t)||function(e){for(var t=h.children(),n=t.length-1;0<=n;n--)r(D(t[n]),e)}(n)},remove:function(e){var t=O();h||w(t),e&&0===D(":focus",e).length?b(e):h.children().length&&h.remove()},error:function(e,t,n){return l({type:s,iconClass:O().iconClasses.error,message:e,optionsOverride:n,title:t})},getContainer:w,info:function(e,t,n){return l({type:o,iconClass:O().iconClasses.info,message:e,optionsOverride:n,title:t})},options:{},subscribe:function(e){t=e},success:function(e,t,n){return l({type:i,iconClass:O().iconClasses.success,message:e,optionsOverride:n,title:t})},version:"2.1.4",warning:function(e,t,n){return l({type:a,iconClass:O().iconClasses.warning,message:e,optionsOverride:n,title:t})}};return e;function w(e,t){return e||(e=O()),(h=D("#"+e.containerId)).length||t&&(n=e,(h=D("<div/>").attr("id",n.containerId).addClass(n.positionClass)).appendTo(D(n.target)),h=h),h;var n}function r(e,t,n){var s=!(!n||!n.force)&&n.force;return!(!e||!s&&0!==D(":focus",e).length||(e[t.hideMethod]({duration:t.hideDuration,easing:t.hideEasing,complete:function(){b(e)}}),0))}function T(e){t&&t(e)}function l(t){var o=O(),e=t.iconClass||o.iconClass;if(void 0!==t.optionsOverride&&(o=D.extend(o,t.optionsOverride),e=t.optionsOverride.iconClass||e),!function(e,t){if(e.preventDuplicates){if(t.message===v)return!0;v=t.message}return!1}(o,t)){C++,h=w(o,!0);var i=null,a=D("<div/>"),n=D("<div/>"),s=D("<div/>"),r=D("<div/>"),l=D(o.closeHtml),c={intervalId:null,hideEta:null,maxHideTime:null},d={toastId:C,state:"visible",startTime:new Date,options:o,map:t};return t.iconClass&&a.addClass(o.toastClass).addClass(e),function(){if(t.title){var e=t.title;o.escapeHtml&&(e=u(t.title)),n.append(e).addClass(o.titleClass),a.append(n)}}(),function(){if(t.message){var e=t.message;o.escapeHtml&&(e=u(t.message)),s.append(e).addClass(o.messageClass),a.append(s)}}(),o.closeButton&&(l.addClass(o.closeClass).attr("role","button"),a.prepend(l)),o.progressBar&&(r.addClass(o.progressClass),a.prepend(r)),o.rtl&&a.addClass("rtl"),o.newestOnTop?h.prepend(a):h.append(a),function(){var e="";switch(t.iconClass){case"toast-success":case"toast-info":e="polite";break;default:e="assertive"}a.attr("aria-live",e)}(),a.hide(),a[o.showMethod]({duration:o.showDuration,easing:o.showEasing,complete:o.onShown}),0<o.timeOut&&(i=setTimeout(p,o.timeOut),c.maxHideTime=parseFloat(o.timeOut),c.hideEta=(new Date).getTime()+c.maxHideTime,o.progressBar&&(c.intervalId=setInterval(f,10))),o.closeOnHover&&a.hover(g,m),!o.onclick&&o.tapToDismiss&&a.click(p),o.closeButton&&l&&l.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&!0!==e.cancelBubble&&(e.cancelBubble=!0),o.onCloseClick&&o.onCloseClick(e),p(!0)}),o.onclick&&a.click(function(e){o.onclick(e),p()}),T(d),o.debug&&console&&console.log(d),a}function u(e){return null==e&&(e=""),e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function p(e){var t=e&&!1!==o.closeMethod?o.closeMethod:o.hideMethod,n=e&&!1!==o.closeDuration?o.closeDuration:o.hideDuration,s=e&&!1!==o.closeEasing?o.closeEasing:o.hideEasing;if(!D(":focus",a).length||e)return clearTimeout(c.intervalId),a[t]({duration:n,easing:s,complete:function(){b(a),clearTimeout(i),o.onHidden&&"hidden"!==d.state&&o.onHidden(),d.state="hidden",d.endTime=new Date,T(d)}})}function m(){(0<o.timeOut||0<o.extendedTimeOut)&&(i=setTimeout(p,o.extendedTimeOut),c.maxHideTime=parseFloat(o.extendedTimeOut),c.hideEta=(new Date).getTime()+c.maxHideTime)}function g(){clearTimeout(i),c.hideEta=0,a.stop(!0,!0)[o.showMethod]({duration:o.showDuration,easing:o.showEasing})}function f(){var e=(c.hideEta-(new Date).getTime())/c.maxHideTime*100;r.width(e+"%")}}function O(){return D.extend({},{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,closeMethod:!1,closeDuration:!1,closeEasing:!1,closeOnHover:!0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",escapeHtml:!1,target:"body",closeHtml:'<button type="button">&times;</button>',closeClass:"toast-close-button",newestOnTop:!0,preventDuplicates:!1,progressBar:!1,progressClass:"toast-progress",rtl:!1},e.options)}function b(e){h||(h=w()),e.is(":visible")||(e.remove(),e=null,0===h.children().length&&(h.remove(),v=void 0))}}()});
+
+/*
+ * Sweet alert
+ */
+
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.swal=e():t.swal=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o="swal-button";e.CLASS_NAMES={MODAL:"swal-modal",OVERLAY:"swal-overlay",SHOW_MODAL:"swal-overlay--show-modal",MODAL_TITLE:"swal-title",MODAL_TEXT:"swal-text",ICON:"swal-icon",ICON_CUSTOM:"swal-icon--custom",CONTENT:"swal-content",FOOTER:"swal-footer",BUTTON_CONTAINER:"swal-button-container",BUTTON:o,CONFIRM_BUTTON:o+"--confirm",CANCEL_BUTTON:o+"--cancel",DANGER_BUTTON:o+"--danger",BUTTON_LOADING:o+"--loading",BUTTON_LOADER:o+"__loader"},e.default=e.CLASS_NAMES},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getNode=function(t){var e="."+t;return document.querySelector(e)},e.stringToNode=function(t){var e=document.createElement("div");return e.innerHTML=t.trim(),e.firstChild},e.insertAfter=function(t,e){var n=e.nextSibling;e.parentNode.insertBefore(t,n)},e.removeNode=function(t){t.parentElement.removeChild(t)},e.throwErr=function(t){throw t=t.replace(/ +(?= )/g,""),"SweetAlert: "+(t=t.trim())},e.isPlainObject=function(t){if("[object Object]"!==Object.prototype.toString.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype},e.ordinalSuffixOf=function(t){var e=t%10,n=t%100;return 1===e&&11!==n?t+"st":2===e&&12!==n?t+"nd":3===e&&13!==n?t+"rd":t+"th"}},function(t,e,n){"use strict";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),o(n(25));var r=n(26);e.overlayMarkup=r.default,o(n(27)),o(n(28)),o(n(29));var i=n(0),a=i.default.MODAL_TITLE,s=i.default.MODAL_TEXT,c=i.default.ICON,l=i.default.FOOTER;e.iconMarkup='\n  <div class="'+c+'"></div>',e.titleMarkup='\n  <div class="'+a+'"></div>\n',e.textMarkup='\n  <div class="'+s+'"></div>',e.footerMarkup='\n  <div class="'+l+'"></div>\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1);e.CONFIRM_KEY="confirm",e.CANCEL_KEY="cancel";var r={visible:!0,text:null,value:null,className:"",closeModal:!0},i=Object.assign({},r,{visible:!1,text:"Cancel",value:null}),a=Object.assign({},r,{text:"OK",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):"string"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n<o.length;n++){var r=o[n],a=t[r],s=c(r,a);e[r]=s}return e.cancel||(e.cancel=i),e},u=function(t){var n={};switch(t.length){case 1:n[e.CANCEL_KEY]=Object.assign({},i,{visible:!1});break;case 2:n[e.CANCEL_KEY]=c(e.CANCEL_KEY,t[0]),n[e.CONFIRM_KEY]=c(e.CONFIRM_KEY,t[1]);break;default:o.throwErr("Invalid number of 'buttons' in array ("+t.length+").\n      If you want more than 2 buttons, you need to use an object!")}return n};e.getButtonListOpts=function(t){var n=e.defaultButtonList;return"string"==typeof t?n[e.CONFIRM_KEY]=c(e.CONFIRM_KEY,t):Array.isArray(t)?n=u(t):o.isPlainObject(t)?n=l(t):!0===t?n=u([!0,!0]):!1===t?n=u([!1,!1]):void 0===t&&(n=e.defaultButtonList),n}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(2),i=n(0),a=i.default.MODAL,s=i.default.OVERLAY,c=n(30),l=n(31),u=n(32),f=n(33);e.injectElIntoModal=function(t){var e=o.getNode(a),n=o.stringToNode(t);return e.appendChild(n),n};var d=function(t){t.className=a,t.textContent=""},p=function(t,e){d(t);var n=e.className;n&&t.classList.add(n)};e.initModalContent=function(t){var e=o.getNode(a);p(e,t),c.default(t.icon),l.initTitle(t.title),l.initText(t.text),f.default(t.content),u.default(t.buttons,t.dangerMode)};var m=function(){var t=o.getNode(s),e=o.stringToNode(r.modalMarkup);t.appendChild(e)};e.default=m},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r={isOpen:!1,promise:null,actions:{},timer:null},i=Object.assign({},r);e.resetState=function(){i=Object.assign({},r)},e.setActionValue=function(t){if("string"==typeof t)return a(o.CONFIRM_KEY,t);for(var e in t)a(e,t[e])};var a=function(t,e){i.actions[t]||(i.actions[t]={}),Object.assign(i.actions[t],{value:e})};e.setActionOptionsFor=function(t,e){var n=(void 0===e?{}:e).closeModal,o=void 0===n||n;Object.assign(i.actions[t],{closeModal:o})},e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(0),a=i.default.OVERLAY,s=i.default.SHOW_MODAL,c=i.default.BUTTON,l=i.default.BUTTON_LOADING,u=n(5);e.openModal=function(){o.getNode(a).classList.add(s),u.default.isOpen=!0};var f=function(){o.getNode(a).classList.remove(s),u.default.isOpen=!1};e.onAction=function(t){void 0===t&&(t=r.CANCEL_KEY);var e=u.default.actions[t],n=e.value;if(!1===e.closeModal){var i=c+"--"+t;o.getNode(i).classList.add(l)}else f();u.default.promise.resolve(n)},e.getState=function(){var t=Object.assign({},u.default);return delete t.promise,delete t.timer,t},e.stopLoading=function(){for(var t=document.querySelectorAll("."+c),e=0;e<t.length;e++){t[e].classList.remove(l)}}},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){(function(e){t.exports=e.sweetAlert=n(9)}).call(e,n(7))},function(t,e,n){(function(e){t.exports=e.swal=n(10)}).call(e,n(7))},function(t,e,n){"undefined"!=typeof window&&n(11),n(16);var o=n(23).default;t.exports=o},function(t,e,n){var o=n(12);"string"==typeof o&&(o=[[t.i,o,""]]);var r={insertAt:"top"};r.transform=void 0;n(14)(o,r);o.locals&&(t.exports=o.locals)},function(t,e,n){e=t.exports=n(13)(void 0),e.push([t.i,'.swal-icon--error{border-color:#f27474;-webkit-animation:animateErrorIcon .5s;animation:animateErrorIcon .5s}.swal-icon--error__x-mark{position:relative;display:block;-webkit-animation:animateXMark .5s;animation:animateXMark .5s}.swal-icon--error__line{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal-icon--error__line--left{-webkit-transform:rotate(45deg);transform:rotate(45deg);left:17px}.swal-icon--error__line--right{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}@-webkit-keyframes animateErrorIcon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}to{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}}@keyframes animateErrorIcon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}to{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}}@-webkit-keyframes animateXMark{0%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}to{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}@keyframes animateXMark{0%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}to{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}.swal-icon--warning{border-color:#f8bb86;-webkit-animation:pulseWarning .75s infinite alternate;animation:pulseWarning .75s infinite alternate}.swal-icon--warning__body{width:5px;height:47px;top:10px;border-radius:2px;margin-left:-2px}.swal-icon--warning__body,.swal-icon--warning__dot{position:absolute;left:50%;background-color:#f8bb86}.swal-icon--warning__dot{width:7px;height:7px;border-radius:50%;margin-left:-4px;bottom:-11px}@-webkit-keyframes pulseWarning{0%{border-color:#f8d486}to{border-color:#f8bb86}}@keyframes pulseWarning{0%{border-color:#f8d486}to{border-color:#f8bb86}}.swal-icon--success{border-color:#a5dc86}.swal-icon--success:after,.swal-icon--success:before{content:"";border-radius:50%;position:absolute;width:60px;height:120px;background:#fff;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal-icon--success:before{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;transform-origin:60px 60px}.swal-icon--success:after{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;transform-origin:0 60px;-webkit-animation:rotatePlaceholder 4.25s ease-in;animation:rotatePlaceholder 4.25s ease-in}.swal-icon--success__ring{width:80px;height:80px;border:4px solid hsla(98,55%,69%,.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal-icon--success__hide-corners{width:5px;height:90px;background-color:#fff;padding:1px;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal-icon--success__line{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal-icon--success__line--tip{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation:animateSuccessTip .75s;animation:animateSuccessTip .75s}.swal-icon--success__line--long{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-animation:animateSuccessLong .75s;animation:animateSuccessLong .75s}@-webkit-keyframes rotatePlaceholder{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}to{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes rotatePlaceholder{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}to{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@-webkit-keyframes animateSuccessTip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}to{width:25px;left:14px;top:45px}}@keyframes animateSuccessTip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}to{width:25px;left:14px;top:45px}}@-webkit-keyframes animateSuccessLong{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}to{width:47px;right:8px;top:38px}}@keyframes animateSuccessLong{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}to{width:47px;right:8px;top:38px}}.swal-icon--info{border-color:#c9dae1}.swal-icon--info:before{width:5px;height:29px;bottom:17px;border-radius:2px;margin-left:-2px}.swal-icon--info:after,.swal-icon--info:before{content:"";position:absolute;left:50%;background-color:#c9dae1}.swal-icon--info:after{width:7px;height:7px;border-radius:50%;margin-left:-3px;top:19px}.swal-icon{width:80px;height:80px;border-width:4px;border-style:solid;border-radius:50%;padding:0;position:relative;box-sizing:content-box;margin:20px auto}.swal-icon:first-child{margin-top:32px}.swal-icon--custom{width:auto;height:auto;max-width:100%;border:none;border-radius:0}.swal-icon img{max-width:100%;max-height:100%}.swal-title{color:rgba(0,0,0,.65);font-weight:600;text-transform:none;position:relative;display:block;padding:13px 16px;font-size:27px;line-height:normal;text-align:center;margin-bottom:0}.swal-title:first-child{margin-top:26px}.swal-title:not(:first-child){padding-bottom:0}.swal-title:not(:last-child){margin-bottom:13px}.swal-text{font-size:16px;position:relative;float:none;line-height:normal;vertical-align:top;text-align:left;display:inline-block;margin:0;padding:0 10px;font-weight:400;color:rgba(0,0,0,.64);max-width:calc(100% - 20px);overflow-wrap:break-word;box-sizing:border-box}.swal-text:first-child{margin-top:45px}.swal-text:last-child{margin-bottom:45px}.swal-footer{text-align:right;padding-top:13px;margin-top:13px;padding:13px 16px;border-radius:inherit;border-top-left-radius:0;border-top-right-radius:0}.swal-button-container{margin:5px;display:inline-block;position:relative}.swal-button{background-color:#7cd1f9;color:#fff;border:none;box-shadow:none;border-radius:5px;font-weight:600;font-size:14px;padding:10px 24px;margin:0;cursor:pointer}.swal-button:not([disabled]):hover{background-color:#78cbf2}.swal-button:active{background-color:#70bce0}.swal-button:focus{outline:none;box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(43,114,165,.29)}.swal-button[disabled]{opacity:.5;cursor:default}.swal-button::-moz-focus-inner{border:0}.swal-button--cancel{color:#555;background-color:#efefef}.swal-button--cancel:not([disabled]):hover{background-color:#e8e8e8}.swal-button--cancel:active{background-color:#d7d7d7}.swal-button--cancel:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(116,136,150,.29)}.swal-button--danger{background-color:#e64942}.swal-button--danger:not([disabled]):hover{background-color:#df4740}.swal-button--danger:active{background-color:#cf423b}.swal-button--danger:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(165,43,43,.29)}.swal-content{padding:0 20px;margin-top:20px;font-size:medium}.swal-content:last-child{margin-bottom:20px}.swal-content__input,.swal-content__textarea{-webkit-appearance:none;background-color:#fff;border:none;font-size:14px;display:block;box-sizing:border-box;width:100%;border:1px solid rgba(0,0,0,.14);padding:10px 13px;border-radius:2px;transition:border-color .2s}.swal-content__input:focus,.swal-content__textarea:focus{outline:none;border-color:#6db8ff}.swal-content__textarea{resize:vertical}.swal-button--loading{color:transparent}.swal-button--loading~.swal-button__loader{opacity:1}.swal-button__loader{position:absolute;height:auto;width:43px;z-index:2;left:50%;top:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);text-align:center;pointer-events:none;opacity:0}.swal-button__loader div{display:inline-block;float:none;vertical-align:baseline;width:9px;height:9px;padding:0;border:none;margin:2px;opacity:.4;border-radius:7px;background-color:hsla(0,0%,100%,.9);transition:background .2s;-webkit-animation:swal-loading-anim 1s infinite;animation:swal-loading-anim 1s infinite}.swal-button__loader div:nth-child(3n+2){-webkit-animation-delay:.15s;animation-delay:.15s}.swal-button__loader div:nth-child(3n+3){-webkit-animation-delay:.3s;animation-delay:.3s}@-webkit-keyframes swal-loading-anim{0%{opacity:.4}20%{opacity:.4}50%{opacity:1}to{opacity:.4}}@keyframes swal-loading-anim{0%{opacity:.4}20%{opacity:.4}50%{opacity:1}to{opacity:.4}}.swal-overlay{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center;font-size:0;overflow-y:auto;background-color:rgba(0,0,0,.4);z-index:10000;pointer-events:none;opacity:0;transition:opacity .3s}.swal-overlay:before{content:" ";display:inline-block;vertical-align:middle;height:100%}.swal-overlay--show-modal{opacity:1;pointer-events:auto}.swal-overlay--show-modal .swal-modal{opacity:1;pointer-events:auto;box-sizing:border-box;-webkit-animation:showSweetAlert .3s;animation:showSweetAlert .3s;will-change:transform}.swal-modal{width:478px;opacity:0;pointer-events:none;background-color:#fff;text-align:center;border-radius:5px;position:static;margin:20px auto;display:inline-block;vertical-align:middle;-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;z-index:10001;transition:opacity .2s,-webkit-transform .3s;transition:transform .3s,opacity .2s;transition:transform .3s,opacity .2s,-webkit-transform .3s}@media (max-width:500px){.swal-modal{width:calc(100% - 20px)}}@-webkit-keyframes showSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1)}1%{-webkit-transform:scale(.5);transform:scale(.5)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes showSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1)}1%{-webkit-transform:scale(.5);transform:scale(.5)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}to{-webkit-transform:scale(1);transform:scale(1)}}',""])},function(t,e){function n(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var i=o(r);return[n].concat(r.sources.map(function(t){return"/*# sourceURL="+r.sourceRoot+t+" */"})).concat([i]).join("\n")}return[n].join("\n")}function o(t){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+" */"}t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var o=n(e,t);return e[2]?"@media "+e[2]+"{"+o+"}":o}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var o={},r=0;r<this.length;r++){var i=this[r][0];"number"==typeof i&&(o[i]=!0)}for(r=0;r<t.length;r++){var a=t[r];"number"==typeof a[0]&&o[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),e.push(a))}},e}},function(t,e,n){function o(t,e){for(var n=0;n<t.length;n++){var o=t[n],r=m[o.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](o.parts[i]);for(;i<o.parts.length;i++)r.parts.push(u(o.parts[i],e))}else{for(var a=[],i=0;i<o.parts.length;i++)a.push(u(o.parts[i],e));m[o.id]={id:o.id,refs:1,parts:a}}}}function r(t,e){for(var n=[],o={},r=0;r<t.length;r++){var i=t[r],a=e.base?i[0]+e.base:i[0],s=i[1],c=i[2],l=i[3],u={css:s,media:c,sourceMap:l};o[a]?o[a].parts.push(u):n.push(o[a]={id:a,parts:[u]})}return n}function i(t,e){var n=v(t.insertInto);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var o=w[w.length-1];if("top"===t.insertAt)o?o.nextSibling?n.insertBefore(e,o.nextSibling):n.appendChild(e):n.insertBefore(e,n.firstChild),w.push(e);else{if("bottom"!==t.insertAt)throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");n.appendChild(e)}}function a(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t);var e=w.indexOf(t);e>=0&&w.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute("media",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([o],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");e=e||{},e.attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;a<n.length;a++){var s=n[a],c=m[s.id];c.refs--,i.push(c)}if(t){o(r(t,e),e)}for(var a=0;a<i.length;a++){var c=i[a];if(0===c.refs){for(var l=0;l<c.parts.length;l++)c.parts[l]();delete m[c.id]}}}};var x=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join("\n")}}()},function(t,e){t.exports=function(t){var e="undefined"!=typeof window&&window.location;if(!e)throw new Error("fixUrls requires window.location");if(!t||"string"!=typeof t)return t;var n=e.protocol+"//"+e.host,o=n+e.pathname.replace(/\/[^\/]*$/,"/");return t.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(t,e){var r=e.trim().replace(/^"(.*)"$/,function(t,e){return e}).replace(/^'(.*)'$/,function(t,e){return e});if(/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(r))return t;var i;return i=0===r.indexOf("//")?r:0===r.indexOf("/")?n+r:o+r.replace(/^\.\//,""),"url("+JSON.stringify(i)+")"})}},function(t,e,n){var o=n(17);"undefined"==typeof window||window.Promise||(window.Promise=o),n(21),String.prototype.includes||(String.prototype.includes=function(t,e){"use strict";return"number"!=typeof e&&(e=0),!(e+t.length>this.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i<o;){if(function(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}(n[i],t))return!0;i++}return!1}}),"undefined"!=typeof window&&function(t){t.forEach(function(t){t.hasOwnProperty("remove")||Object.defineProperty(t,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype])},function(t,e,n){(function(e){!function(n){function o(){}function r(t,e){return function(){t.apply(e,arguments)}}function i(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(t,this)}function a(t,e){for(;3===t._state;)t=t._value;if(0===t._state)return void t._deferreds.push(e);t._handled=!0,i._immediateFn(function(){var n=1===t._state?e.onFulfilled:e.onRejected;if(null===n)return void(1===t._state?s:c)(e.promise,t._value);var o;try{o=n(t._value)}catch(t){return void c(e.promise,t)}s(e.promise,o)})}function s(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof i)return t._state=3,t._value=e,void l(t);if("function"==typeof n)return void f(r(n,e),t)}t._state=1,t._value=e,l(t)}catch(e){c(t,e)}}function c(t,e){t._state=2,t._value=e,l(t)}function l(t){2===t._state&&0===t._deferreds.length&&i._immediateFn(function(){t._handled||i._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)a(t,t._deferreds[e]);t._deferreds=null}function u(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function f(t,e){var n=!1;try{t(function(t){n||(n=!0,s(e,t))},function(t){n||(n=!0,c(e,t))})}catch(t){if(n)return;n=!0,c(e,t)}}var d=setTimeout;i.prototype.catch=function(t){return this.then(null,t)},i.prototype.then=function(t,e){var n=new this.constructor(o);return a(this,new u(t,e,n)),n},i.all=function(t){var e=Array.prototype.slice.call(t);return new i(function(t,n){function o(i,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(t){o(i,t)},n)}e[i]=a,0==--r&&t(e)}catch(t){n(t)}}if(0===e.length)return t([]);for(var r=e.length,i=0;i<e.length;i++)o(i,e[i])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(t){return new i(function(e,n){n(t)})},i.race=function(t){return new i(function(e,n){for(var o=0,r=t.length;o<r;o++)t[o].then(e,n)})},i._immediateFn="function"==typeof e&&function(t){e(t)}||function(t){d(t,0)},i._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},i._setImmediateFn=function(t){i._immediateFn=t},i._setUnhandledRejectionFn=function(t){i._unhandledRejectionFn=t},void 0!==t&&t.exports?t.exports=i:n.Promise||(n.Promise=i)}(this)}).call(e,n(18).setImmediate)},function(t,e,n){function o(t,e){this._id=t,this._clearFn=e}var r=Function.prototype.apply;e.setTimeout=function(){return new o(r.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new o(r.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function o(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var o={callback:t,args:e};return l[c]=o,s(c),c++}function r(t){delete l[t]}function i(t){var e=t.callback,o=t.args;switch(o.length){case 0:e();break;case 1:e(o[0]);break;case 2:e(o[0],o[1]);break;case 3:e(o[0],o[1],o[2]);break;default:e.apply(n,o)}}function a(t){if(u)setTimeout(a,0,t);else{var e=l[t];if(e){u=!0;try{i(e)}finally{r(t),u=!1}}}}if(!t.setImmediate){var s,c=1,l={},u=!1,f=t.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(t);d=d&&d.setTimeout?d:t,"[object process]"==={}.toString.call(t.process)?function(){s=function(t){e.nextTick(function(){a(t)})}}():function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&a(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),s=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){a(t.data)},s=function(e){t.port2.postMessage(e)}}():f&&"onreadystatechange"in f.createElement("script")?function(){var t=f.documentElement;s=function(e){var n=f.createElement("script");n.onreadystatechange=function(){a(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():function(){s=function(t){setTimeout(a,0,t)}}(),d.setImmediate=o,d.clearImmediate=r}}("undefined"==typeof self?void 0===t?this:t:self)}).call(e,n(7),n(20))},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function r(t){if(u===setTimeout)return setTimeout(t,0);if((u===n||!u)&&setTimeout)return u=setTimeout,setTimeout(t,0);try{return u(t,0)}catch(e){try{return u.call(null,t,0)}catch(e){return u.call(this,t,0)}}}function i(t){if(f===clearTimeout)return clearTimeout(t);if((f===o||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(t);try{return f(t)}catch(e){try{return f.call(null,t)}catch(e){return f.call(this,t)}}}function a(){b&&p&&(b=!1,p.length?m=p.concat(m):v=-1,m.length&&s())}function s(){if(!b){var t=r(a);b=!0;for(var e=m.length;e;){for(p=m,m=[];++v<e;)p&&p[v].run();v=-1,e=m.length}p=null,b=!1,i(t)}}function c(t,e){this.fun=t,this.array=e}function l(){}var u,f,d=t.exports={};!function(){try{u="function"==typeof setTimeout?setTimeout:n}catch(t){u=n}try{f="function"==typeof clearTimeout?clearTimeout:o}catch(t){f=o}}();var p,m=[],b=!1,v=-1;d.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];m.push(new c(t,e)),1!==m.length||b||r(s)},c.prototype.run=function(){this.fun.apply(null,this.array)},d.title="browser",d.browser=!0,d.env={},d.argv=[],d.version="",d.versions={},d.on=l,d.addListener=l,d.once=l,d.off=l,d.removeListener=l,d.removeAllListeners=l,d.emit=l,d.prependListener=l,d.prependOnceListener=l,d.listeners=function(t){return[]},d.binding=function(t){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(t){throw new Error("process.chdir is not supported")},d.umask=function(){return 0}},function(t,e,n){"use strict";n(22).polyfill()},function(t,e,n){"use strict";function o(t,e){if(void 0===t||null===t)throw new TypeError("Cannot convert first argument to object");for(var n=Object(t),o=1;o<arguments.length;o++){var r=arguments[o];if(void 0!==r&&null!==r)for(var i=Object.keys(Object(r)),a=0,s=i.length;a<s;a++){var c=i[a],l=Object.getOwnPropertyDescriptor(r,c);void 0!==l&&l.enumerable&&(n[c]=r[c])}}return n}function r(){Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:o})}t.exports={assign:o,polyfill:r}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(24),r=n(6),i=n(5),a=n(36),s=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if("undefined"!=typeof window){var n=a.getOpts.apply(void 0,t);return new Promise(function(t,e){i.default.promise={resolve:t,reject:e},o.default(n),setTimeout(function(){r.openModal()})})}};s.close=r.onAction,s.getState=r.getState,s.setActionValue=i.setActionValue,s.stopLoading=r.stopLoading,s.setDefaults=a.setDefaults,e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(0),i=r.default.MODAL,a=n(4),s=n(34),c=n(35),l=n(1);e.init=function(t){o.getNode(i)||(document.body||l.throwErr("You can only use SweetAlert AFTER the DOM has loaded!"),s.default(),a.default()),a.initModalContent(t),c.default(t)},e.default=e.init},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.MODAL;e.modalMarkup='\n  <div class="'+r+'" role="dialog" aria-modal="true"></div>',e.default=e.modalMarkup},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.OVERLAY,i='<div \n    class="'+r+'"\n    tabIndex="-1">\n  </div>';e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+"--error",e=t+"__line";return'\n    <div class="'+t+'__x-mark">\n      <span class="'+e+" "+e+'--left"></span>\n      <span class="'+e+" "+e+'--right"></span>\n    </div>\n  '},e.warningIconMarkup=function(){var t=r+"--warning";return'\n    <span class="'+t+'__body">\n      <span class="'+t+'__dot"></span>\n    </span>\n  '},e.successIconMarkup=function(){var t=r+"--success";return'\n    <span class="'+t+"__line "+t+'__line--long"></span>\n    <span class="'+t+"__line "+t+'__line--tip"></span>\n\n    <div class="'+t+'__ring"></div>\n    <div class="'+t+'__hide-corners"></div>\n  '}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\n  <div class="'+r+'">\n\n  </div>\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\n  <div class="'+r+'">\n\n    <button\n      class="'+i+'"\n    ></button>\n\n    <div class="'+a+'">\n      <div></div>\n      <div></div>\n      <div></div>\n    </div>\n\n  </div>\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=["error","warning","success","info"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+"--"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement("img");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes("AppleWebKit")&&(t.style.display="none",t.offsetHeight,t.style.display="")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split("\n").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n<o.length-1&&e.appendChild(document.createElement("br"))});var n=r.injectElIntoModal(o.textMarkup);n.appendChild(e),i(n)}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(4),i=n(0),a=i.default.BUTTON,s=i.default.DANGER_BUTTON,c=n(3),l=n(2),u=n(6),f=n(5),d=function(t,e,n){var r=e.text,i=e.value,d=e.className,p=e.closeModal,m=o.stringToNode(l.buttonMarkup),b=m.querySelector("."+a),v=a+"--"+t;if(b.classList.add(v),d){(Array.isArray(d)?d:d.split(" ")).filter(function(t){return t.length>0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener("click",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener("input",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener("keyup",function(t){if("Enter"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue("")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+"__"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}"input"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;"string"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case"Escape":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case"Tab":return f(t)}},b=function(t){if(o.default.isOpen)return"Tab"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener("keydown",m)},w=function(t){t[0].addEventListener("keydown",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener("click",x),t&&e.addEventListener("click",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener("keyup",p):document.removeEventListener("keyup",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr("Cannot set both 'button' and 'buttons' options!"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+" argument ('"+t+"') is invalid")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr("Expected "+u(n)+" argument ('"+r+"') to be a plain object")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr("Unexpected "+u(n)+" argument ("+r+")")},m=function(t,e,n,r){var i=typeof e,a="string"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n={};t.forEach(function(e,o){var r=m(0,e,o,t);Object.assign(n,r)});var o=l(n);n.buttons=r.getButtonListOpts(o),delete n.button,n.content=i.getContentOpts(n.content);var u=Object.assign({},s,c,n);return Object.keys(u).forEach(function(t){a.DEPRECATED_OPTS[t]&&a.logDeprecation(t)}),u}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r={element:"input",attributes:{placeholder:""}};e.getContentOpts=function(t){var e={};return o.isPlainObject(t)?Object.assign(e,t):t instanceof Element?{element:t}:"input"===t?r:null}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.logDeprecation=function(t){var n=e.DEPRECATED_OPTS[t],o=n.onlyRename,r=n.replacement,i=n.subOption,a=n.link,s=o?"renamed":"deprecated",c='SweetAlert warning: "'+t+'" option has been '+s+".";if(r){c+=" Please use"+(i?' "'+i+'" in ':" ")+'"'+r+'" instead.'}var l="https://sweetalert.js.org";c+=a?" More details: "+l+a:" More details: "+l+"/guides/#upgrading-from-1x",console.warn(c)},e.DEPRECATED_OPTS={type:{replacement:"icon",link:"/docs/#icon"},imageUrl:{replacement:"icon",link:"/docs/#icon"},customClass:{replacement:"className",onlyRename:!0,link:"/docs/#classname"},imageSize:{},showCancelButton:{replacement:"buttons",link:"/docs/#buttons"},showConfirmButton:{replacement:"button",link:"/docs/#button"},confirmButtonText:{replacement:"button",link:"/docs/#button"},confirmButtonColor:{},cancelButtonText:{replacement:"buttons",link:"/docs/#buttons"},closeOnConfirm:{replacement:"button",subOption:"closeModal",link:"/docs/#button"},closeOnCancel:{replacement:"buttons",subOption:"closeModal",link:"/docs/#buttons"},showLoaderOnConfirm:{replacement:"buttons"},animation:{},inputType:{replacement:"content",link:"/docs/#content"},inputValue:{replacement:"content",link:"/docs/#content"},inputPlaceholder:{replacement:"content",link:"/docs/#content"},html:{replacement:"content",link:"/docs/#content"},allowEscapeKey:{replacement:"closeOnEsc",onlyRename:!0,link:"/docs/#closeonesc"},allowClickOutside:{replacement:"closeOnClickOutside",onlyRename:!0,link:"/docs/#closeonclickoutside"}}}])});
+
+/* jquery.nicescroll v3.7.6 InuYaksa - MIT - https://nicescroll.areaaperta.com */
+!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){"use strict";var o=!1,t=!1,r=0,i=2e3,s=0,n=e,l=document,a=window,c=n(a),d=[],u=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||!1,h=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.mozCancelAnimationFrame||!1;if(u)a.cancelAnimationFrame||(h=function(e){});else{var p=0;u=function(e,o){var t=(new Date).getTime(),r=Math.max(0,16-(t-p)),i=a.setTimeout(function(){e(t+r)},r);return p=t+r,i},h=function(e){a.clearTimeout(e)}}var m=a.MutationObserver||a.WebKitMutationObserver||!1,f=Date.now||function(){return(new Date).getTime()},g={zindex:"auto",cursoropacitymin:0,cursoropacitymax:1,cursorcolor:"#424242",cursorwidth:"6px",cursorborder:"1px solid #fff",cursorborderradius:"5px",scrollspeed:40,mousescrollstep:27,touchbehavior:!1,emulatetouch:!1,hwacceleration:!0,usetransition:!0,boxzoom:!1,dblclickzoom:!0,gesturezoom:!0,grabcursorenabled:!0,autohidemode:!0,background:"",iframeautoresize:!0,cursorminheight:32,preservenativescrolling:!0,railoffset:!1,railhoffset:!1,bouncescroll:!0,spacebarenabled:!0,railpadding:{top:0,right:0,left:0,bottom:0},disableoutline:!0,horizrailenabled:!0,railalign:"right",railvalign:"bottom",enabletranslate3d:!0,enablemousewheel:!0,enablekeyboard:!0,smoothscroll:!0,sensitiverail:!0,enablemouselockapi:!0,cursorfixedheight:!1,directionlockdeadzone:6,hidecursordelay:400,nativeparentscrolling:!0,enablescrollonselection:!0,overflowx:!0,overflowy:!0,cursordragspeed:.3,rtlmode:"auto",cursordragontouch:!1,oneaxismousemode:"auto",scriptpath:function(){var e=l.currentScript||function(){var e=l.getElementsByTagName("script");return!!e.length&&e[e.length-1]}(),o=e?e.src.split("?")[0]:"";return o.split("/").length>0?o.split("/").slice(0,-1).join("/")+"/":""}(),preventmultitouchscrolling:!0,disablemutationobserver:!1,enableobserver:!0,scrollbarid:!1},v=!1,w=function(){if(v)return v;var e=l.createElement("DIV"),o=e.style,t=navigator.userAgent,r=navigator.platform,i={};return i.haspointerlock="pointerLockElement"in l||"webkitPointerLockElement"in l||"mozPointerLockElement"in l,i.isopera="opera"in a,i.isopera12=i.isopera&&"getUserMedia"in navigator,i.isoperamini="[object OperaMini]"===Object.prototype.toString.call(a.operamini),i.isie="all"in l&&"attachEvent"in e&&!i.isopera,i.isieold=i.isie&&!("msInterpolationMode"in o),i.isie7=i.isie&&!i.isieold&&(!("documentMode"in l)||7===l.documentMode),i.isie8=i.isie&&"documentMode"in l&&8===l.documentMode,i.isie9=i.isie&&"performance"in a&&9===l.documentMode,i.isie10=i.isie&&"performance"in a&&10===l.documentMode,i.isie11="msRequestFullscreen"in e&&l.documentMode>=11,i.ismsedge="msCredentials"in a,i.ismozilla="MozAppearance"in o,i.iswebkit=!i.ismsedge&&"WebkitAppearance"in o,i.ischrome=i.iswebkit&&"chrome"in a,i.ischrome38=i.ischrome&&"touchAction"in o,i.ischrome22=!i.ischrome38&&i.ischrome&&i.haspointerlock,i.ischrome26=!i.ischrome38&&i.ischrome&&"transition"in o,i.cantouch="ontouchstart"in l.documentElement||"ontouchstart"in a,i.hasw3ctouch=(a.PointerEvent||!1)&&(navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0),i.hasmstouch=!i.hasw3ctouch&&(a.MSPointerEvent||!1),i.ismac=/^mac$/i.test(r),i.isios=i.cantouch&&/iphone|ipad|ipod/i.test(r),i.isios4=i.isios&&!("seal"in Object),i.isios7=i.isios&&"webkitHidden"in l,i.isios8=i.isios&&"hidden"in l,i.isios10=i.isios&&a.Proxy,i.isandroid=/android/i.test(t),i.haseventlistener="addEventListener"in e,i.trstyle=!1,i.hastransform=!1,i.hastranslate3d=!1,i.transitionstyle=!1,i.hastransition=!1,i.transitionend=!1,i.trstyle="transform",i.hastransform="transform"in o||function(){for(var e=["msTransform","webkitTransform","MozTransform","OTransform"],t=0,r=e.length;t<r;t++)if(void 0!==o[e[t]]){i.trstyle=e[t];break}i.hastransform=!!i.trstyle}(),i.hastransform&&(o[i.trstyle]="translate3d(1px,2px,3px)",i.hastranslate3d=/translate3d/.test(o[i.trstyle])),i.transitionstyle="transition",i.prefixstyle="",i.transitionend="transitionend",i.hastransition="transition"in o||function(){i.transitionend=!1;for(var e=["webkitTransition","msTransition","MozTransition","OTransition","OTransition","KhtmlTransition"],t=["-webkit-","-ms-","-moz-","-o-","-o","-khtml-"],r=["webkitTransitionEnd","msTransitionEnd","transitionend","otransitionend","oTransitionEnd","KhtmlTransitionEnd"],s=0,n=e.length;s<n;s++)if(e[s]in o){i.transitionstyle=e[s],i.prefixstyle=t[s],i.transitionend=r[s];break}i.ischrome26&&(i.prefixstyle=t[1]),i.hastransition=i.transitionstyle}(),i.cursorgrabvalue=function(){var e=["grab","-webkit-grab","-moz-grab"];(i.ischrome&&!i.ischrome38||i.isie)&&(e=[]);for(var t=0,r=e.length;t<r;t++){var s=e[t];if(o.cursor=s,o.cursor==s)return s}return"url(https://cdnjs.cloudflare.com/ajax/libs/slider-pro/1.3.0/css/images/openhand.cur),n-resize"}(),i.hasmousecapture="setCapture"in e,i.hasMutationObserver=!1!==m,e=null,v=i,i},b=function(e,p){function v(){var e=T.doc.css(P.trstyle);return!(!e||"matrix"!=e.substr(0,6))&&e.replace(/^.*\((.*)\)$/g,"$1").replace(/px/g,"").split(/, +/)}function b(){var e=T.win;if("zIndex"in e)return e.zIndex();for(;e.length>0;){if(9==e[0].nodeType)return!1;var o=e.css("zIndex");if(!isNaN(o)&&0!==o)return parseInt(o);e=e.parent()}return!1}function x(e,o,t){var r=e.css(o),i=parseFloat(r);if(isNaN(i)){var s=3==(i=I[r]||0)?t?T.win.outerHeight()-T.win.innerHeight():T.win.outerWidth()-T.win.innerWidth():1;return T.isie8&&i&&(i+=1),s?i:0}return i}function S(e,o,t,r){T._bind(e,o,function(r){var i={original:r=r||a.event,target:r.target||r.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==r.type?0:1,deltaX:0,deltaZ:0,preventDefault:function(){return r.preventDefault?r.preventDefault():r.returnValue=!1,!1},stopImmediatePropagation:function(){r.stopImmediatePropagation?r.stopImmediatePropagation():r.cancelBubble=!0}};return"mousewheel"==o?(r.wheelDeltaX&&(i.deltaX=-.025*r.wheelDeltaX),r.wheelDeltaY&&(i.deltaY=-.025*r.wheelDeltaY),!i.deltaY&&!i.deltaX&&(i.deltaY=-.025*r.wheelDelta)):i.deltaY=r.detail,t.call(e,i)},r)}function z(e,o,t,r){T.scrollrunning||(T.newscrolly=T.getScrollTop(),T.newscrollx=T.getScrollLeft(),D=f());var i=f()-D;if(D=f(),i>350?A=1:A+=(2-A)/10,e=e*A|0,o=o*A|0,e){if(r)if(e<0){if(T.getScrollLeft()>=T.page.maxw)return!0}else if(T.getScrollLeft()<=0)return!0;var s=e>0?1:-1;X!==s&&(T.scrollmom&&T.scrollmom.stop(),T.newscrollx=T.getScrollLeft(),X=s),T.lastdeltax-=e}if(o){if(function(){var e=T.getScrollTop();if(o<0){if(e>=T.page.maxh)return!0}else if(e<=0)return!0}()){if(M.nativeparentscrolling&&t&&!T.ispage&&!T.zoomactive)return!0;var n=T.view.h>>1;T.newscrolly<-n?(T.newscrolly=-n,o=-1):T.newscrolly>T.page.maxh+n?(T.newscrolly=T.page.maxh+n,o=1):o=0}var l=o>0?1:-1;B!==l&&(T.scrollmom&&T.scrollmom.stop(),T.newscrolly=T.getScrollTop(),B=l),T.lastdeltay-=o}(o||e)&&T.synched("relativexy",function(){var e=T.lastdeltay+T.newscrolly;T.lastdeltay=0;var o=T.lastdeltax+T.newscrollx;T.lastdeltax=0,T.rail.drag||T.doScrollPos(o,e)})}function k(e,o,t){var r,i;return!(t||!q)||(0===e.deltaMode?(r=-e.deltaX*(M.mousescrollstep/54)|0,i=-e.deltaY*(M.mousescrollstep/54)|0):1===e.deltaMode&&(r=-e.deltaX*M.mousescrollstep*50/80|0,i=-e.deltaY*M.mousescrollstep*50/80|0),o&&M.oneaxismousemode&&0===r&&i&&(r=i,i=0,t&&(r<0?T.getScrollLeft()>=T.page.maxw:T.getScrollLeft()<=0)&&(i=r,r=0)),T.isrtlmode&&(r=-r),z(r,i,t,!0)?void(t&&(q=!0)):(q=!1,e.stopImmediatePropagation(),e.preventDefault()))}var T=this;this.version="3.7.6",this.name="nicescroll",this.me=p;var E=n("body"),M=this.opt={doc:E,win:!1};if(n.extend(M,g),M.snapbackspeed=80,e)for(var L in M)void 0!==e[L]&&(M[L]=e[L]);if(M.disablemutationobserver&&(m=!1),this.doc=M.doc,this.iddoc=this.doc&&this.doc[0]?this.doc[0].id||"":"",this.ispage=/^BODY|HTML/.test(M.win?M.win[0].nodeName:this.doc[0].nodeName),this.haswrapper=!1!==M.win,this.win=M.win||(this.ispage?c:this.doc),this.docscroll=this.ispage&&!this.haswrapper?c:this.win,this.body=E,this.viewport=!1,this.isfixed=!1,this.iframe=!1,this.isiframe="IFRAME"==this.doc[0].nodeName&&"IFRAME"==this.win[0].nodeName,this.istextarea="TEXTAREA"==this.win[0].nodeName,this.forcescreen=!1,this.canshowonmouseevent="scroll"!=M.autohidemode,this.onmousedown=!1,this.onmouseup=!1,this.onmousemove=!1,this.onmousewheel=!1,this.onkeypress=!1,this.ongesturezoom=!1,this.onclick=!1,this.onscrollstart=!1,this.onscrollend=!1,this.onscrollcancel=!1,this.onzoomin=!1,this.onzoomout=!1,this.view=!1,this.page=!1,this.scroll={x:0,y:0},this.scrollratio={x:0,y:0},this.cursorheight=20,this.scrollvaluemax=0,"auto"==M.rtlmode){var C=this.win[0]==a?this.body:this.win,N=C.css("writing-mode")||C.css("-webkit-writing-mode")||C.css("-ms-writing-mode")||C.css("-moz-writing-mode");"horizontal-tb"==N||"lr-tb"==N||""===N?(this.isrtlmode="rtl"==C.css("direction"),this.isvertical=!1):(this.isrtlmode="vertical-rl"==N||"tb"==N||"tb-rl"==N||"rl-tb"==N,this.isvertical="vertical-rl"==N||"tb"==N||"tb-rl"==N)}else this.isrtlmode=!0===M.rtlmode,this.isvertical=!1;if(this.scrollrunning=!1,this.scrollmom=!1,this.observer=!1,this.observerremover=!1,this.observerbody=!1,!1!==M.scrollbarid)this.id=M.scrollbarid;else do{this.id="ascrail"+i++}while(l.getElementById(this.id));this.rail=!1,this.cursor=!1,this.cursorfreezed=!1,this.selectiondrag=!1,this.zoom=!1,this.zoomactive=!1,this.hasfocus=!1,this.hasmousefocus=!1,this.railslocked=!1,this.locked=!1,this.hidden=!1,this.cursoractive=!0,this.wheelprevented=!1,this.overflowx=M.overflowx,this.overflowy=M.overflowy,this.nativescrollingarea=!1,this.checkarea=0,this.events=[],this.saved={},this.delaylist={},this.synclist={},this.lastdeltax=0,this.lastdeltay=0,this.detected=w();var P=n.extend({},this.detected);this.canhwscroll=P.hastransform&&M.hwacceleration,this.ishwscroll=this.canhwscroll&&T.haswrapper,this.isrtlmode?this.isvertical?this.hasreversehr=!(P.iswebkit||P.isie||P.isie11):this.hasreversehr=!(P.iswebkit||P.isie&&!P.isie10&&!P.isie11):this.hasreversehr=!1,this.istouchcapable=!1,P.cantouch||!P.hasw3ctouch&&!P.hasmstouch?!P.cantouch||P.isios||P.isandroid||!P.iswebkit&&!P.ismozilla||(this.istouchcapable=!0):this.istouchcapable=!0,M.enablemouselockapi||(P.hasmousecapture=!1,P.haspointerlock=!1),this.debounced=function(e,o,t){T&&(T.delaylist[e]||!1||(T.delaylist[e]={h:u(function(){T.delaylist[e].fn.call(T),T.delaylist[e]=!1},t)},o.call(T)),T.delaylist[e].fn=o)},this.synched=function(e,o){T.synclist[e]?T.synclist[e]=o:(T.synclist[e]=o,u(function(){T&&(T.synclist[e]&&T.synclist[e].call(T),T.synclist[e]=null)}))},this.unsynched=function(e){T.synclist[e]&&(T.synclist[e]=!1)},this.css=function(e,o){for(var t in o)T.saved.css.push([e,t,e.css(t)]),e.css(t,o[t])},this.scrollTop=function(e){return void 0===e?T.getScrollTop():T.setScrollTop(e)},this.scrollLeft=function(e){return void 0===e?T.getScrollLeft():T.setScrollLeft(e)};var R=function(e,o,t,r,i,s,n){this.st=e,this.ed=o,this.spd=t,this.p1=r||0,this.p2=i||1,this.p3=s||0,this.p4=n||1,this.ts=f(),this.df=o-e};if(R.prototype={B2:function(e){return 3*(1-e)*(1-e)*e},B3:function(e){return 3*(1-e)*e*e},B4:function(e){return e*e*e},getPos:function(){return(f()-this.ts)/this.spd},getNow:function(){var e=(f()-this.ts)/this.spd,o=this.B2(e)+this.B3(e)+this.B4(e);return e>=1?this.ed:this.st+this.df*o|0},update:function(e,o){return this.st=this.getNow(),this.ed=e,this.spd=o,this.ts=f(),this.df=this.ed-this.st,this}},this.ishwscroll){this.doc.translate={x:0,y:0,tx:"0px",ty:"0px"},P.hastranslate3d&&P.isios&&this.doc.css("-webkit-backface-visibility","hidden"),this.getScrollTop=function(e){if(!e){var o=v();if(o)return 16==o.length?-o[13]:-o[5];if(T.timerscroll&&T.timerscroll.bz)return T.timerscroll.bz.getNow()}return T.doc.translate.y},this.getScrollLeft=function(e){if(!e){var o=v();if(o)return 16==o.length?-o[12]:-o[4];if(T.timerscroll&&T.timerscroll.bh)return T.timerscroll.bh.getNow()}return T.doc.translate.x},this.notifyScrollEvent=function(e){var o=l.createEvent("UIEvents");o.initUIEvent("scroll",!1,!1,a,1),o.niceevent=!0,e.dispatchEvent(o)};var _=this.isrtlmode?1:-1;P.hastranslate3d&&M.enabletranslate3d?(this.setScrollTop=function(e,o){T.doc.translate.y=e,T.doc.translate.ty=-1*e+"px",T.doc.css(P.trstyle,"translate3d("+T.doc.translate.tx+","+T.doc.translate.ty+",0)"),o||T.notifyScrollEvent(T.win[0])},this.setScrollLeft=function(e,o){T.doc.translate.x=e,T.doc.translate.tx=e*_+"px",T.doc.css(P.trstyle,"translate3d("+T.doc.translate.tx+","+T.doc.translate.ty+",0)"),o||T.notifyScrollEvent(T.win[0])}):(this.setScrollTop=function(e,o){T.doc.translate.y=e,T.doc.translate.ty=-1*e+"px",T.doc.css(P.trstyle,"translate("+T.doc.translate.tx+","+T.doc.translate.ty+")"),o||T.notifyScrollEvent(T.win[0])},this.setScrollLeft=function(e,o){T.doc.translate.x=e,T.doc.translate.tx=e*_+"px",T.doc.css(P.trstyle,"translate("+T.doc.translate.tx+","+T.doc.translate.ty+")"),o||T.notifyScrollEvent(T.win[0])})}else this.getScrollTop=function(){return T.docscroll.scrollTop()},this.setScrollTop=function(e){T.docscroll.scrollTop(e)},this.getScrollLeft=function(){return T.hasreversehr?T.detected.ismozilla?T.page.maxw-Math.abs(T.docscroll.scrollLeft()):T.page.maxw-T.docscroll.scrollLeft():T.docscroll.scrollLeft()},this.setScrollLeft=function(e){return setTimeout(function(){if(T)return T.hasreversehr&&(e=T.detected.ismozilla?-(T.page.maxw-e):T.page.maxw-e),T.docscroll.scrollLeft(e)},1)};this.getTarget=function(e){return!!e&&(e.target?e.target:!!e.srcElement&&e.srcElement)},this.hasParent=function(e,o){if(!e)return!1;for(var t=e.target||e.srcElement||e||!1;t&&t.id!=o;)t=t.parentNode||!1;return!1!==t};var I={thin:1,medium:3,thick:5};this.getDocumentScrollOffset=function(){return{top:a.pageYOffset||l.documentElement.scrollTop,left:a.pageXOffset||l.documentElement.scrollLeft}},this.getOffset=function(){if(T.isfixed){var e=T.win.offset(),o=T.getDocumentScrollOffset();return e.top-=o.top,e.left-=o.left,e}var t=T.win.offset();if(!T.viewport)return t;var r=T.viewport.offset();return{top:t.top-r.top,left:t.left-r.left}},this.updateScrollBar=function(e){var o,t;if(T.ishwscroll)T.rail.css({height:T.win.innerHeight()-(M.railpadding.top+M.railpadding.bottom)}),T.railh&&T.railh.css({width:T.win.innerWidth()-(M.railpadding.left+M.railpadding.right)});else{var r=T.getOffset();if(o={top:r.top,left:r.left-(M.railpadding.left+M.railpadding.right)},o.top+=x(T.win,"border-top-width",!0),o.left+=T.rail.align?T.win.outerWidth()-x(T.win,"border-right-width")-T.rail.width:x(T.win,"border-left-width"),(t=M.railoffset)&&(t.top&&(o.top+=t.top),t.left&&(o.left+=t.left)),T.railslocked||T.rail.css({top:o.top,left:o.left,height:(e?e.h:T.win.innerHeight())-(M.railpadding.top+M.railpadding.bottom)}),T.zoom&&T.zoom.css({top:o.top+1,left:1==T.rail.align?o.left-20:o.left+T.rail.width+4}),T.railh&&!T.railslocked){o={top:r.top,left:r.left},(t=M.railhoffset)&&(t.top&&(o.top+=t.top),t.left&&(o.left+=t.left));var i=T.railh.align?o.top+x(T.win,"border-top-width",!0)+T.win.innerHeight()-T.railh.height:o.top+x(T.win,"border-top-width",!0),s=o.left+x(T.win,"border-left-width");T.railh.css({top:i-(M.railpadding.top+M.railpadding.bottom),left:s,width:T.railh.width})}}},this.doRailClick=function(e,o,t){var r,i,s,n;T.railslocked||(T.cancelEvent(e),"pageY"in e||(e.pageX=e.clientX+l.documentElement.scrollLeft,e.pageY=e.clientY+l.documentElement.scrollTop),o?(r=t?T.doScrollLeft:T.doScrollTop,s=t?(e.pageX-T.railh.offset().left-T.cursorwidth/2)*T.scrollratio.x:(e.pageY-T.rail.offset().top-T.cursorheight/2)*T.scrollratio.y,T.unsynched("relativexy"),r(0|s)):(r=t?T.doScrollLeftBy:T.doScrollBy,s=t?T.scroll.x:T.scroll.y,n=t?e.pageX-T.railh.offset().left:e.pageY-T.rail.offset().top,i=t?T.view.w:T.view.h,r(s>=n?i:-i)))},T.newscrolly=T.newscrollx=0,T.hasanimationframe="requestAnimationFrame"in a,T.hascancelanimationframe="cancelAnimationFrame"in a,T.hasborderbox=!1,this.init=function(){if(T.saved.css=[],P.isoperamini)return!0;if(P.isandroid&&!("hidden"in l))return!0;M.emulatetouch=M.emulatetouch||M.touchbehavior,T.hasborderbox=a.getComputedStyle&&"border-box"===a.getComputedStyle(l.body)["box-sizing"];var e={"overflow-y":"hidden"};if((P.isie11||P.isie10)&&(e["-ms-overflow-style"]="none"),T.ishwscroll&&(this.doc.css(P.transitionstyle,P.prefixstyle+"transform 0ms ease-out"),P.transitionend&&T.bind(T.doc,P.transitionend,T.onScrollTransitionEnd,!1)),T.zindex="auto",T.ispage||"auto"!=M.zindex?T.zindex=M.zindex:T.zindex=b()||"auto",!T.ispage&&"auto"!=T.zindex&&T.zindex>s&&(s=T.zindex),T.isie&&0===T.zindex&&"auto"==M.zindex&&(T.zindex="auto"),!T.ispage||!P.isieold){var i=T.docscroll;T.ispage&&(i=T.haswrapper?T.win:T.doc),T.css(i,e),T.ispage&&(P.isie11||P.isie)&&T.css(n("html"),e),!P.isios||T.ispage||T.haswrapper||T.css(E,{"-webkit-overflow-scrolling":"touch"});var d=n(l.createElement("div"));d.css({position:"relative",top:0,float:"right",width:M.cursorwidth,height:0,"background-color":M.cursorcolor,border:M.cursorborder,"background-clip":"padding-box","-webkit-border-radius":M.cursorborderradius,"-moz-border-radius":M.cursorborderradius,"border-radius":M.cursorborderradius}),d.addClass("nicescroll-cursors"),T.cursor=d;var u=n(l.createElement("div"));u.attr("id",T.id),u.addClass("nicescroll-rails nicescroll-rails-vr");var h,p,f=["left","right","top","bottom"];for(var g in f)p=f[g],(h=M.railpadding[p]||0)&&u.css("padding-"+p,h+"px");u.append(d),u.width=Math.max(parseFloat(M.cursorwidth),d.outerWidth()),u.css({width:u.width+"px",zIndex:T.zindex,background:M.background,cursor:"default"}),u.visibility=!0,u.scrollable=!0,u.align="left"==M.railalign?0:1,T.rail=u,T.rail.drag=!1;var v=!1;!M.boxzoom||T.ispage||P.isieold||(v=l.createElement("div"),T.bind(v,"click",T.doZoom),T.bind(v,"mouseenter",function(){T.zoom.css("opacity",M.cursoropacitymax)}),T.bind(v,"mouseleave",function(){T.zoom.css("opacity",M.cursoropacitymin)}),T.zoom=n(v),T.zoom.css({cursor:"pointer",zIndex:T.zindex,backgroundImage:"url("+M.scriptpath+"zoomico.png)",height:18,width:18,backgroundPosition:"0 0"}),M.dblclickzoom&&T.bind(T.win,"dblclick",T.doZoom),P.cantouch&&M.gesturezoom&&(T.ongesturezoom=function(e){return e.scale>1.5&&T.doZoomIn(e),e.scale<.8&&T.doZoomOut(e),T.cancelEvent(e)},T.bind(T.win,"gestureend",T.ongesturezoom))),T.railh=!1;var w;if(M.horizrailenabled&&(T.css(i,{overflowX:"hidden"}),(d=n(l.createElement("div"))).css({position:"absolute",top:0,height:M.cursorwidth,width:0,backgroundColor:M.cursorcolor,border:M.cursorborder,backgroundClip:"padding-box","-webkit-border-radius":M.cursorborderradius,"-moz-border-radius":M.cursorborderradius,"border-radius":M.cursorborderradius}),P.isieold&&d.css("overflow","hidden"),d.addClass("nicescroll-cursors"),T.cursorh=d,(w=n(l.createElement("div"))).attr("id",T.id+"-hr"),w.addClass("nicescroll-rails nicescroll-rails-hr"),w.height=Math.max(parseFloat(M.cursorwidth),d.outerHeight()),w.css({height:w.height+"px",zIndex:T.zindex,background:M.background}),w.append(d),w.visibility=!0,w.scrollable=!0,w.align="top"==M.railvalign?0:1,T.railh=w,T.railh.drag=!1),T.ispage)u.css({position:"fixed",top:0,height:"100%"}),u.css(u.align?{right:0}:{left:0}),T.body.append(u),T.railh&&(w.css({position:"fixed",left:0,width:"100%"}),w.css(w.align?{bottom:0}:{top:0}),T.body.append(w));else{if(T.ishwscroll){"static"==T.win.css("position")&&T.css(T.win,{position:"relative"});var x="HTML"==T.win[0].nodeName?T.body:T.win;n(x).scrollTop(0).scrollLeft(0),T.zoom&&(T.zoom.css({position:"absolute",top:1,right:0,"margin-right":u.width+4}),x.append(T.zoom)),u.css({position:"absolute",top:0}),u.css(u.align?{right:0}:{left:0}),x.append(u),w&&(w.css({position:"absolute",left:0,bottom:0}),w.css(w.align?{bottom:0}:{top:0}),x.append(w))}else{T.isfixed="fixed"==T.win.css("position");var S=T.isfixed?"fixed":"absolute";T.isfixed||(T.viewport=T.getViewport(T.win[0])),T.viewport&&(T.body=T.viewport,/fixed|absolute/.test(T.viewport.css("position"))||T.css(T.viewport,{position:"relative"})),u.css({position:S}),T.zoom&&T.zoom.css({position:S}),T.updateScrollBar(),T.body.append(u),T.zoom&&T.body.append(T.zoom),T.railh&&(w.css({position:S}),T.body.append(w))}P.isios&&T.css(T.win,{"-webkit-tap-highlight-color":"rgba(0,0,0,0)","-webkit-touch-callout":"none"}),M.disableoutline&&(P.isie&&T.win.attr("hideFocus","true"),P.iswebkit&&T.win.css("outline","none"))}if(!1===M.autohidemode?(T.autohidedom=!1,T.rail.css({opacity:M.cursoropacitymax}),T.railh&&T.railh.css({opacity:M.cursoropacitymax})):!0===M.autohidemode||"leave"===M.autohidemode?(T.autohidedom=n().add(T.rail),P.isie8&&(T.autohidedom=T.autohidedom.add(T.cursor)),T.railh&&(T.autohidedom=T.autohidedom.add(T.railh)),T.railh&&P.isie8&&(T.autohidedom=T.autohidedom.add(T.cursorh))):"scroll"==M.autohidemode?(T.autohidedom=n().add(T.rail),T.railh&&(T.autohidedom=T.autohidedom.add(T.railh))):"cursor"==M.autohidemode?(T.autohidedom=n().add(T.cursor),T.railh&&(T.autohidedom=T.autohidedom.add(T.cursorh))):"hidden"==M.autohidemode&&(T.autohidedom=!1,T.hide(),T.railslocked=!1),P.cantouch||T.istouchcapable||M.emulatetouch||P.hasmstouch){T.scrollmom=new y(T);T.ontouchstart=function(e){if(T.locked)return!1;if(e.pointerType&&("mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))return!1;if(T.hasmoving=!1,T.scrollmom.timer&&(T.triggerScrollEnd(),T.scrollmom.stop()),!T.railslocked){var o=T.getTarget(e);if(o&&/INPUT/i.test(o.nodeName)&&/range/i.test(o.type))return T.stopPropagation(e);var t="mousedown"===e.type;if(!("clientX"in e)&&"changedTouches"in e&&(e.clientX=e.changedTouches[0].clientX,e.clientY=e.changedTouches[0].clientY),T.forcescreen){var r=e;(e={original:e.original?e.original:e}).clientX=r.screenX,e.clientY=r.screenY}if(T.rail.drag={x:e.clientX,y:e.clientY,sx:T.scroll.x,sy:T.scroll.y,st:T.getScrollTop(),sl:T.getScrollLeft(),pt:2,dl:!1,tg:o},T.ispage||!M.directionlockdeadzone)T.rail.drag.dl="f";else{var i={w:c.width(),h:c.height()},s=T.getContentSize(),l=s.h-i.h,a=s.w-i.w;T.rail.scrollable&&!T.railh.scrollable?T.rail.drag.ck=l>0&&"v":!T.rail.scrollable&&T.railh.scrollable?T.rail.drag.ck=a>0&&"h":T.rail.drag.ck=!1}if(M.emulatetouch&&T.isiframe&&P.isie){var d=T.win.position();T.rail.drag.x+=d.left,T.rail.drag.y+=d.top}if(T.hasmoving=!1,T.lastmouseup=!1,T.scrollmom.reset(e.clientX,e.clientY),o&&t){if(!/INPUT|SELECT|BUTTON|TEXTAREA/i.test(o.nodeName))return P.hasmousecapture&&o.setCapture(),M.emulatetouch?(o.onclick&&!o._onclick&&(o._onclick=o.onclick,o.onclick=function(e){if(T.hasmoving)return!1;o._onclick.call(this,e)}),T.cancelEvent(e)):T.stopPropagation(e);/SUBMIT|CANCEL|BUTTON/i.test(n(o).attr("type"))&&(T.preventclick={tg:o,click:!1})}}},T.ontouchend=function(e){if(!T.rail.drag)return!0;if(2==T.rail.drag.pt){if(e.pointerType&&("mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))return!1;T.rail.drag=!1;var o="mouseup"===e.type;if(T.hasmoving&&(T.scrollmom.doMomentum(),T.lastmouseup=!0,T.hideCursor(),P.hasmousecapture&&l.releaseCapture(),o))return T.cancelEvent(e)}else if(1==T.rail.drag.pt)return T.onmouseup(e)};var z=M.emulatetouch&&T.isiframe&&!P.hasmousecapture,k=.3*M.directionlockdeadzone|0;T.ontouchmove=function(e,o){if(!T.rail.drag)return!0;if(e.targetTouches&&M.preventmultitouchscrolling&&e.targetTouches.length>1)return!0;if(e.pointerType&&("mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))return!0;if(2==T.rail.drag.pt){"changedTouches"in e&&(e.clientX=e.changedTouches[0].clientX,e.clientY=e.changedTouches[0].clientY);var t,r;if(r=t=0,z&&!o){var i=T.win.position();r=-i.left,t=-i.top}var s=e.clientY+t,n=s-T.rail.drag.y,a=e.clientX+r,c=a-T.rail.drag.x,d=T.rail.drag.st-n;if(T.ishwscroll&&M.bouncescroll)d<0?d=Math.round(d/2):d>T.page.maxh&&(d=T.page.maxh+Math.round((d-T.page.maxh)/2));else if(d<0?(d=0,s=0):d>T.page.maxh&&(d=T.page.maxh,s=0),0===s&&!T.hasmoving)return T.ispage||(T.rail.drag=!1),!0;var u=T.getScrollLeft();if(T.railh&&T.railh.scrollable&&(u=T.isrtlmode?c-T.rail.drag.sl:T.rail.drag.sl-c,T.ishwscroll&&M.bouncescroll?u<0?u=Math.round(u/2):u>T.page.maxw&&(u=T.page.maxw+Math.round((u-T.page.maxw)/2)):(u<0&&(u=0,a=0),u>T.page.maxw&&(u=T.page.maxw,a=0))),!T.hasmoving){if(T.rail.drag.y===e.clientY&&T.rail.drag.x===e.clientX)return T.cancelEvent(e);var h=Math.abs(n),p=Math.abs(c),m=M.directionlockdeadzone;if(T.rail.drag.ck?"v"==T.rail.drag.ck?p>m&&h<=k?T.rail.drag=!1:h>m&&(T.rail.drag.dl="v"):"h"==T.rail.drag.ck&&(h>m&&p<=k?T.rail.drag=!1:p>m&&(T.rail.drag.dl="h")):h>m&&p>m?T.rail.drag.dl="f":h>m?T.rail.drag.dl=p>k?"f":"v":p>m&&(T.rail.drag.dl=h>k?"f":"h"),!T.rail.drag.dl)return T.cancelEvent(e);T.triggerScrollStart(e.clientX,e.clientY,0,0,0),T.hasmoving=!0}return T.preventclick&&!T.preventclick.click&&(T.preventclick.click=T.preventclick.tg.onclick||!1,T.preventclick.tg.onclick=T.onpreventclick),T.rail.drag.dl&&("v"==T.rail.drag.dl?u=T.rail.drag.sl:"h"==T.rail.drag.dl&&(d=T.rail.drag.st)),T.synched("touchmove",function(){T.rail.drag&&2==T.rail.drag.pt&&(T.prepareTransition&&T.resetTransition(),T.rail.scrollable&&T.setScrollTop(d),T.scrollmom.update(a,s),T.railh&&T.railh.scrollable?(T.setScrollLeft(u),T.showCursor(d,u)):T.showCursor(d),P.isie10&&l.selection.clear())}),T.cancelEvent(e)}return 1==T.rail.drag.pt?T.onmousemove(e):void 0},T.ontouchstartCursor=function(e,o){if(!T.rail.drag||3==T.rail.drag.pt){if(T.locked)return T.cancelEvent(e);T.cancelScroll(),T.rail.drag={x:e.touches[0].clientX,y:e.touches[0].clientY,sx:T.scroll.x,sy:T.scroll.y,pt:3,hr:!!o};var t=T.getTarget(e);return!T.ispage&&P.hasmousecapture&&t.setCapture(),T.isiframe&&!P.hasmousecapture&&(T.saved.csspointerevents=T.doc.css("pointer-events"),T.css(T.doc,{"pointer-events":"none"})),T.cancelEvent(e)}},T.ontouchendCursor=function(e){if(T.rail.drag){if(P.hasmousecapture&&l.releaseCapture(),T.isiframe&&!P.hasmousecapture&&T.doc.css("pointer-events",T.saved.csspointerevents),3!=T.rail.drag.pt)return;return T.rail.drag=!1,T.cancelEvent(e)}},T.ontouchmoveCursor=function(e){if(T.rail.drag){if(3!=T.rail.drag.pt)return;if(T.cursorfreezed=!0,T.rail.drag.hr){T.scroll.x=T.rail.drag.sx+(e.touches[0].clientX-T.rail.drag.x),T.scroll.x<0&&(T.scroll.x=0);var o=T.scrollvaluemaxw;T.scroll.x>o&&(T.scroll.x=o)}else{T.scroll.y=T.rail.drag.sy+(e.touches[0].clientY-T.rail.drag.y),T.scroll.y<0&&(T.scroll.y=0);var t=T.scrollvaluemax;T.scroll.y>t&&(T.scroll.y=t)}return T.synched("touchmove",function(){T.rail.drag&&3==T.rail.drag.pt&&(T.showCursor(),T.rail.drag.hr?T.doScrollLeft(Math.round(T.scroll.x*T.scrollratio.x),M.cursordragspeed):T.doScrollTop(Math.round(T.scroll.y*T.scrollratio.y),M.cursordragspeed))}),T.cancelEvent(e)}}}if(T.onmousedown=function(e,o){if(!T.rail.drag||1==T.rail.drag.pt){if(T.railslocked)return T.cancelEvent(e);T.cancelScroll(),T.rail.drag={x:e.clientX,y:e.clientY,sx:T.scroll.x,sy:T.scroll.y,pt:1,hr:o||!1};var t=T.getTarget(e);return P.hasmousecapture&&t.setCapture(),T.isiframe&&!P.hasmousecapture&&(T.saved.csspointerevents=T.doc.css("pointer-events"),T.css(T.doc,{"pointer-events":"none"})),T.hasmoving=!1,T.cancelEvent(e)}},T.onmouseup=function(e){if(T.rail.drag)return 1!=T.rail.drag.pt||(P.hasmousecapture&&l.releaseCapture(),T.isiframe&&!P.hasmousecapture&&T.doc.css("pointer-events",T.saved.csspointerevents),T.rail.drag=!1,T.cursorfreezed=!1,T.hasmoving&&T.triggerScrollEnd(),T.cancelEvent(e))},T.onmousemove=function(e){if(T.rail.drag){if(1!==T.rail.drag.pt)return;if(P.ischrome&&0===e.which)return T.onmouseup(e);if(T.cursorfreezed=!0,T.hasmoving||T.triggerScrollStart(e.clientX,e.clientY,0,0,0),T.hasmoving=!0,T.rail.drag.hr){T.scroll.x=T.rail.drag.sx+(e.clientX-T.rail.drag.x),T.scroll.x<0&&(T.scroll.x=0);var o=T.scrollvaluemaxw;T.scroll.x>o&&(T.scroll.x=o)}else{T.scroll.y=T.rail.drag.sy+(e.clientY-T.rail.drag.y),T.scroll.y<0&&(T.scroll.y=0);var t=T.scrollvaluemax;T.scroll.y>t&&(T.scroll.y=t)}return T.synched("mousemove",function(){T.cursorfreezed&&(T.showCursor(),T.rail.drag.hr?T.scrollLeft(Math.round(T.scroll.x*T.scrollratio.x)):T.scrollTop(Math.round(T.scroll.y*T.scrollratio.y)))}),T.cancelEvent(e)}T.checkarea=0},P.cantouch||M.emulatetouch)T.onpreventclick=function(e){if(T.preventclick)return T.preventclick.tg.onclick=T.preventclick.click,T.preventclick=!1,T.cancelEvent(e)},T.onclick=!P.isios&&function(e){return!T.lastmouseup||(T.lastmouseup=!1,T.cancelEvent(e))},M.grabcursorenabled&&P.cursorgrabvalue&&(T.css(T.ispage?T.doc:T.win,{cursor:P.cursorgrabvalue}),T.css(T.rail,{cursor:P.cursorgrabvalue}));else{var L=function(e){if(T.selectiondrag){if(e){var o=T.win.outerHeight(),t=e.pageY-T.selectiondrag.top;t>0&&t<o&&(t=0),t>=o&&(t-=o),T.selectiondrag.df=t}if(0!==T.selectiondrag.df){var r=-2*T.selectiondrag.df/6|0;T.doScrollBy(r),T.debounced("doselectionscroll",function(){L()},50)}}};T.hasTextSelected="getSelection"in l?function(){return l.getSelection().rangeCount>0}:"selection"in l?function(){return"None"!=l.selection.type}:function(){return!1},T.onselectionstart=function(e){T.ispage||(T.selectiondrag=T.win.offset())},T.onselectionend=function(e){T.selectiondrag=!1},T.onselectiondrag=function(e){T.selectiondrag&&T.hasTextSelected()&&T.debounced("selectionscroll",function(){L(e)},250)}}if(P.hasw3ctouch?(T.css(T.ispage?n("html"):T.win,{"touch-action":"none"}),T.css(T.rail,{"touch-action":"none"}),T.css(T.cursor,{"touch-action":"none"}),T.bind(T.win,"pointerdown",T.ontouchstart),T.bind(l,"pointerup",T.ontouchend),T.delegate(l,"pointermove",T.ontouchmove)):P.hasmstouch?(T.css(T.ispage?n("html"):T.win,{"-ms-touch-action":"none"}),T.css(T.rail,{"-ms-touch-action":"none"}),T.css(T.cursor,{"-ms-touch-action":"none"}),T.bind(T.win,"MSPointerDown",T.ontouchstart),T.bind(l,"MSPointerUp",T.ontouchend),T.delegate(l,"MSPointerMove",T.ontouchmove),T.bind(T.cursor,"MSGestureHold",function(e){e.preventDefault()}),T.bind(T.cursor,"contextmenu",function(e){e.preventDefault()})):P.cantouch&&(T.bind(T.win,"touchstart",T.ontouchstart,!1,!0),T.bind(l,"touchend",T.ontouchend,!1,!0),T.bind(l,"touchcancel",T.ontouchend,!1,!0),T.delegate(l,"touchmove",T.ontouchmove,!1,!0)),M.emulatetouch&&(T.bind(T.win,"mousedown",T.ontouchstart,!1,!0),T.bind(l,"mouseup",T.ontouchend,!1,!0),T.bind(l,"mousemove",T.ontouchmove,!1,!0)),(M.cursordragontouch||!P.cantouch&&!M.emulatetouch)&&(T.rail.css({cursor:"default"}),T.railh&&T.railh.css({cursor:"default"}),T.jqbind(T.rail,"mouseenter",function(){if(!T.ispage&&!T.win.is(":visible"))return!1;T.canshowonmouseevent&&T.showCursor(),T.rail.active=!0}),T.jqbind(T.rail,"mouseleave",function(){T.rail.active=!1,T.rail.drag||T.hideCursor()}),M.sensitiverail&&(T.bind(T.rail,"click",function(e){T.doRailClick(e,!1,!1)}),T.bind(T.rail,"dblclick",function(e){T.doRailClick(e,!0,!1)}),T.bind(T.cursor,"click",function(e){T.cancelEvent(e)}),T.bind(T.cursor,"dblclick",function(e){T.cancelEvent(e)})),T.railh&&(T.jqbind(T.railh,"mouseenter",function(){if(!T.ispage&&!T.win.is(":visible"))return!1;T.canshowonmouseevent&&T.showCursor(),T.rail.active=!0}),T.jqbind(T.railh,"mouseleave",function(){T.rail.active=!1,T.rail.drag||T.hideCursor()}),M.sensitiverail&&(T.bind(T.railh,"click",function(e){T.doRailClick(e,!1,!0)}),T.bind(T.railh,"dblclick",function(e){T.doRailClick(e,!0,!0)}),T.bind(T.cursorh,"click",function(e){T.cancelEvent(e)}),T.bind(T.cursorh,"dblclick",function(e){T.cancelEvent(e)})))),M.cursordragontouch&&(this.istouchcapable||P.cantouch)&&(T.bind(T.cursor,"touchstart",T.ontouchstartCursor),T.bind(T.cursor,"touchmove",T.ontouchmoveCursor),T.bind(T.cursor,"touchend",T.ontouchendCursor),T.cursorh&&T.bind(T.cursorh,"touchstart",function(e){T.ontouchstartCursor(e,!0)}),T.cursorh&&T.bind(T.cursorh,"touchmove",T.ontouchmoveCursor),T.cursorh&&T.bind(T.cursorh,"touchend",T.ontouchendCursor)),M.emulatetouch||P.isandroid||P.isios?(T.bind(P.hasmousecapture?T.win:l,"mouseup",T.ontouchend),T.onclick&&T.bind(l,"click",T.onclick),M.cursordragontouch?(T.bind(T.cursor,"mousedown",T.onmousedown),T.bind(T.cursor,"mouseup",T.onmouseup),T.cursorh&&T.bind(T.cursorh,"mousedown",function(e){T.onmousedown(e,!0)}),T.cursorh&&T.bind(T.cursorh,"mouseup",T.onmouseup)):(T.bind(T.rail,"mousedown",function(e){e.preventDefault()}),T.railh&&T.bind(T.railh,"mousedown",function(e){e.preventDefault()}))):(T.bind(P.hasmousecapture?T.win:l,"mouseup",T.onmouseup),T.bind(l,"mousemove",T.onmousemove),T.onclick&&T.bind(l,"click",T.onclick),T.bind(T.cursor,"mousedown",T.onmousedown),T.bind(T.cursor,"mouseup",T.onmouseup),T.railh&&(T.bind(T.cursorh,"mousedown",function(e){T.onmousedown(e,!0)}),T.bind(T.cursorh,"mouseup",T.onmouseup)),!T.ispage&&M.enablescrollonselection&&(T.bind(T.win[0],"mousedown",T.onselectionstart),T.bind(l,"mouseup",T.onselectionend),T.bind(T.cursor,"mouseup",T.onselectionend),T.cursorh&&T.bind(T.cursorh,"mouseup",T.onselectionend),T.bind(l,"mousemove",T.onselectiondrag)),T.zoom&&(T.jqbind(T.zoom,"mouseenter",function(){T.canshowonmouseevent&&T.showCursor(),T.rail.active=!0}),T.jqbind(T.zoom,"mouseleave",function(){T.rail.active=!1,T.rail.drag||T.hideCursor()}))),M.enablemousewheel&&(T.isiframe||T.mousewheel(P.isie&&T.ispage?l:T.win,T.onmousewheel),T.mousewheel(T.rail,T.onmousewheel),T.railh&&T.mousewheel(T.railh,T.onmousewheelhr)),T.ispage||P.cantouch||/HTML|^BODY/.test(T.win[0].nodeName)||(T.win.attr("tabindex")||T.win.attr({tabindex:++r}),T.bind(T.win,"focus",function(e){o=T.getTarget(e).id||T.getTarget(e)||!1,T.hasfocus=!0,T.canshowonmouseevent&&T.noticeCursor()}),T.bind(T.win,"blur",function(e){o=!1,T.hasfocus=!1}),T.bind(T.win,"mouseenter",function(e){t=T.getTarget(e).id||T.getTarget(e)||!1,T.hasmousefocus=!0,T.canshowonmouseevent&&T.noticeCursor()}),T.bind(T.win,"mouseleave",function(e){t=!1,T.hasmousefocus=!1,T.rail.drag||T.hideCursor()})),T.onkeypress=function(e){if(T.railslocked&&0===T.page.maxh)return!0;e=e||a.event;var r=T.getTarget(e);if(r&&/INPUT|TEXTAREA|SELECT|OPTION/.test(r.nodeName)&&(!(r.getAttribute("type")||r.type||!1)||!/submit|button|cancel/i.tp))return!0;if(n(r).attr("contenteditable"))return!0;if(T.hasfocus||T.hasmousefocus&&!o||T.ispage&&!o&&!t){var i=e.keyCode;if(T.railslocked&&27!=i)return T.cancelEvent(e);var s=e.ctrlKey||!1,l=e.shiftKey||!1,c=!1;switch(i){case 38:case 63233:T.doScrollBy(72),c=!0;break;case 40:case 63235:T.doScrollBy(-72),c=!0;break;case 37:case 63232:T.railh&&(s?T.doScrollLeft(0):T.doScrollLeftBy(72),c=!0);break;case 39:case 63234:T.railh&&(s?T.doScrollLeft(T.page.maxw):T.doScrollLeftBy(-72),c=!0);break;case 33:case 63276:T.doScrollBy(T.view.h),c=!0;break;case 34:case 63277:T.doScrollBy(-T.view.h),c=!0;break;case 36:case 63273:T.railh&&s?T.doScrollPos(0,0):T.doScrollTo(0),c=!0;break;case 35:case 63275:T.railh&&s?T.doScrollPos(T.page.maxw,T.page.maxh):T.doScrollTo(T.page.maxh),c=!0;break;case 32:M.spacebarenabled&&(l?T.doScrollBy(T.view.h):T.doScrollBy(-T.view.h),c=!0);break;case 27:T.zoomactive&&(T.doZoom(),c=!0)}if(c)return T.cancelEvent(e)}},M.enablekeyboard&&T.bind(l,P.isopera&&!P.isopera12?"keypress":"keydown",T.onkeypress),T.bind(l,"keydown",function(e){(e.ctrlKey||!1)&&(T.wheelprevented=!0)}),T.bind(l,"keyup",function(e){e.ctrlKey||!1||(T.wheelprevented=!1)}),T.bind(a,"blur",function(e){T.wheelprevented=!1}),T.bind(a,"resize",T.onscreenresize),T.bind(a,"orientationchange",T.onscreenresize),T.bind(a,"load",T.lazyResize),P.ischrome&&!T.ispage&&!T.haswrapper){var C=T.win.attr("style"),N=parseFloat(T.win.css("width"))+1;T.win.css("width",N),T.synched("chromefix",function(){T.win.attr("style",C)})}if(T.onAttributeChange=function(e){T.lazyResize(T.isieold?250:30)},M.enableobserver&&(T.isie11||!1===m||(T.observerbody=new m(function(e){if(e.forEach(function(e){if("attributes"==e.type)return E.hasClass("modal-open")&&E.hasClass("modal-dialog")&&!n.contains(n(".modal-dialog")[0],T.doc[0])?T.hide():T.show()}),T.me.clientWidth!=T.page.width||T.me.clientHeight!=T.page.height)return T.lazyResize(30)}),T.observerbody.observe(l.body,{childList:!0,subtree:!0,characterData:!1,attributes:!0,attributeFilter:["class"]})),!T.ispage&&!T.haswrapper)){var R=T.win[0];!1!==m?(T.observer=new m(function(e){e.forEach(T.onAttributeChange)}),T.observer.observe(R,{childList:!0,characterData:!1,attributes:!0,subtree:!1}),T.observerremover=new m(function(e){e.forEach(function(e){if(e.removedNodes.length>0)for(var o in e.removedNodes)if(T&&e.removedNodes[o]===R)return T.remove()})}),T.observerremover.observe(R.parentNode,{childList:!0,characterData:!1,attributes:!1,subtree:!1})):(T.bind(R,P.isie&&!P.isie9?"propertychange":"DOMAttrModified",T.onAttributeChange),P.isie9&&R.attachEvent("onpropertychange",T.onAttributeChange),T.bind(R,"DOMNodeRemoved",function(e){e.target===R&&T.remove()}))}!T.ispage&&M.boxzoom&&T.bind(a,"resize",T.resizeZoom),T.istextarea&&(T.bind(T.win,"keydown",T.lazyResize),T.bind(T.win,"mouseup",T.lazyResize)),T.lazyResize(30)}if("IFRAME"==this.doc[0].nodeName){var _=function(){T.iframexd=!1;var o;try{(o="contentDocument"in this?this.contentDocument:this.contentWindow._doc).domain}catch(e){T.iframexd=!0,o=!1}if(T.iframexd)return"console"in a&&console.log("NiceScroll error: policy restriced iframe"),!0;if(T.forcescreen=!0,T.isiframe&&(T.iframe={doc:n(o),html:T.doc.contents().find("html")[0],body:T.doc.contents().find("body")[0]},T.getContentSize=function(){return{w:Math.max(T.iframe.html.scrollWidth,T.iframe.body.scrollWidth),h:Math.max(T.iframe.html.scrollHeight,T.iframe.body.scrollHeight)}},T.docscroll=n(T.iframe.body)),!P.isios&&M.iframeautoresize&&!T.isiframe){T.win.scrollTop(0),T.doc.height("");var t=Math.max(o.getElementsByTagName("html")[0].scrollHeight,o.body.scrollHeight);T.doc.height(t)}T.lazyResize(30),T.css(n(T.iframe.body),e),P.isios&&T.haswrapper&&T.css(n(o.body),{"-webkit-transform":"translate3d(0,0,0)"}),"contentWindow"in this?T.bind(this.contentWindow,"scroll",T.onscroll):T.bind(o,"scroll",T.onscroll),M.enablemousewheel&&T.mousewheel(o,T.onmousewheel),M.enablekeyboard&&T.bind(o,P.isopera?"keypress":"keydown",T.onkeypress),P.cantouch?(T.bind(o,"touchstart",T.ontouchstart),T.bind(o,"touchmove",T.ontouchmove)):M.emulatetouch&&(T.bind(o,"mousedown",T.ontouchstart),T.bind(o,"mousemove",function(e){return T.ontouchmove(e,!0)}),M.grabcursorenabled&&P.cursorgrabvalue&&T.css(n(o.body),{cursor:P.cursorgrabvalue})),T.bind(o,"mouseup",T.ontouchend),T.zoom&&(M.dblclickzoom&&T.bind(o,"dblclick",T.doZoom),T.ongesturezoom&&T.bind(o,"gestureend",T.ongesturezoom))};this.doc[0].readyState&&"complete"===this.doc[0].readyState&&setTimeout(function(){_.call(T.doc[0],!1)},500),T.bind(this.doc,"load",_)}},this.showCursor=function(e,o){if(T.cursortimeout&&(clearTimeout(T.cursortimeout),T.cursortimeout=0),T.rail){if(T.autohidedom&&(T.autohidedom.stop().css({opacity:M.cursoropacitymax}),T.cursoractive=!0),T.rail.drag&&1==T.rail.drag.pt||(void 0!==e&&!1!==e&&(T.scroll.y=e/T.scrollratio.y|0),void 0!==o&&(T.scroll.x=o/T.scrollratio.x|0)),T.cursor.css({height:T.cursorheight,top:T.scroll.y}),T.cursorh){var t=T.hasreversehr?T.scrollvaluemaxw-T.scroll.x:T.scroll.x;T.cursorh.css({width:T.cursorwidth,left:!T.rail.align&&T.rail.visibility?t+T.rail.width:t}),T.cursoractive=!0}T.zoom&&T.zoom.stop().css({opacity:M.cursoropacitymax})}},this.hideCursor=function(e){T.cursortimeout||T.rail&&T.autohidedom&&(T.hasmousefocus&&"leave"===M.autohidemode||(T.cursortimeout=setTimeout(function(){T.rail.active&&T.showonmouseevent||(T.autohidedom.stop().animate({opacity:M.cursoropacitymin}),T.zoom&&T.zoom.stop().animate({opacity:M.cursoropacitymin}),T.cursoractive=!1),T.cursortimeout=0},e||M.hidecursordelay)))},this.noticeCursor=function(e,o,t){T.showCursor(o,t),T.rail.active||T.hideCursor(e)},this.getContentSize=T.ispage?function(){return{w:Math.max(l.body.scrollWidth,l.documentElement.scrollWidth),h:Math.max(l.body.scrollHeight,l.documentElement.scrollHeight)}}:T.haswrapper?function(){return{w:T.doc[0].offsetWidth,h:T.doc[0].offsetHeight}}:function(){return{w:T.docscroll[0].scrollWidth,h:T.docscroll[0].scrollHeight}},this.onResize=function(e,o){if(!T||!T.win)return!1;var t=T.page.maxh,r=T.page.maxw,i=T.view.h,s=T.view.w;if(T.view={w:T.ispage?T.win.width():T.win[0].clientWidth,h:T.ispage?T.win.height():T.win[0].clientHeight},T.page=o||T.getContentSize(),T.page.maxh=Math.max(0,T.page.h-T.view.h),T.page.maxw=Math.max(0,T.page.w-T.view.w),T.page.maxh==t&&T.page.maxw==r&&T.view.w==s&&T.view.h==i){if(T.ispage)return T;var n=T.win.offset();if(T.lastposition){var l=T.lastposition;if(l.top==n.top&&l.left==n.left)return T}T.lastposition=n}return 0===T.page.maxh?(T.hideRail(),T.scrollvaluemax=0,T.scroll.y=0,T.scrollratio.y=0,T.cursorheight=0,T.setScrollTop(0),T.rail&&(T.rail.scrollable=!1)):(T.page.maxh-=M.railpadding.top+M.railpadding.bottom,T.rail.scrollable=!0),0===T.page.maxw?(T.hideRailHr(),T.scrollvaluemaxw=0,T.scroll.x=0,T.scrollratio.x=0,T.cursorwidth=0,T.setScrollLeft(0),T.railh&&(T.railh.scrollable=!1)):(T.page.maxw-=M.railpadding.left+M.railpadding.right,T.railh&&(T.railh.scrollable=M.horizrailenabled)),T.railslocked=T.locked||0===T.page.maxh&&0===T.page.maxw,T.railslocked?(T.ispage||T.updateScrollBar(T.view),!1):(T.hidden||(T.rail.visibility||T.showRail(),T.railh&&!T.railh.visibility&&T.showRailHr()),T.istextarea&&T.win.css("resize")&&"none"!=T.win.css("resize")&&(T.view.h-=20),T.cursorheight=Math.min(T.view.h,Math.round(T.view.h*(T.view.h/T.page.h))),T.cursorheight=M.cursorfixedheight?M.cursorfixedheight:Math.max(M.cursorminheight,T.cursorheight),T.cursorwidth=Math.min(T.view.w,Math.round(T.view.w*(T.view.w/T.page.w))),T.cursorwidth=M.cursorfixedheight?M.cursorfixedheight:Math.max(M.cursorminheight,T.cursorwidth),T.scrollvaluemax=T.view.h-T.cursorheight-(M.railpadding.top+M.railpadding.bottom),T.hasborderbox||(T.scrollvaluemax-=T.cursor[0].offsetHeight-T.cursor[0].clientHeight),T.railh&&(T.railh.width=T.page.maxh>0?T.view.w-T.rail.width:T.view.w,T.scrollvaluemaxw=T.railh.width-T.cursorwidth-(M.railpadding.left+M.railpadding.right)),T.ispage||T.updateScrollBar(T.view),T.scrollratio={x:T.page.maxw/T.scrollvaluemaxw,y:T.page.maxh/T.scrollvaluemax},T.getScrollTop()>T.page.maxh?T.doScrollTop(T.page.maxh):(T.scroll.y=T.getScrollTop()/T.scrollratio.y|0,T.scroll.x=T.getScrollLeft()/T.scrollratio.x|0,T.cursoractive&&T.noticeCursor()),T.scroll.y&&0===T.getScrollTop()&&T.doScrollTo(T.scroll.y*T.scrollratio.y|0),T)},this.resize=T.onResize;var O=0;this.onscreenresize=function(e){clearTimeout(O);var o=!T.ispage&&!T.haswrapper;o&&T.hideRails(),O=setTimeout(function(){T&&(o&&T.showRails(),T.resize()),O=0},120)},this.lazyResize=function(e){return clearTimeout(O),e=isNaN(e)?240:e,O=setTimeout(function(){T&&T.resize(),O=0},e),T},this.jqbind=function(e,o,t){T.events.push({e:e,n:o,f:t,q:!0}),n(e).on(o,t)},this.mousewheel=function(e,o,t){var r="jquery"in e?e[0]:e;if("onwheel"in l.createElement("div"))T._bind(r,"wheel",o,t||!1);else{var i=void 0!==l.onmousewheel?"mousewheel":"DOMMouseScroll";S(r,i,o,t||!1),"DOMMouseScroll"==i&&S(r,"MozMousePixelScroll",o,t||!1)}};var Y=!1;if(P.haseventlistener){try{var H=Object.defineProperty({},"passive",{get:function(){Y=!0}});a.addEventListener("test",null,H)}catch(e){}this.stopPropagation=function(e){return!!e&&((e=e.original?e.original:e).stopPropagation(),!1)},this.cancelEvent=function(e){return e.cancelable&&e.preventDefault(),e.stopImmediatePropagation(),e.preventManipulation&&e.preventManipulation(),!1}}else Event.prototype.preventDefault=function(){this.returnValue=!1},Event.prototype.stopPropagation=function(){this.cancelBubble=!0},a.constructor.prototype.addEventListener=l.constructor.prototype.addEventListener=Element.prototype.addEventListener=function(e,o,t){this.attachEvent("on"+e,o)},a.constructor.prototype.removeEventListener=l.constructor.prototype.removeEventListener=Element.prototype.removeEventListener=function(e,o,t){this.detachEvent("on"+e,o)},this.cancelEvent=function(e){return(e=e||a.event)&&(e.cancelBubble=!0,e.cancel=!0,e.returnValue=!1),!1},this.stopPropagation=function(e){return(e=e||a.event)&&(e.cancelBubble=!0),!1};this.delegate=function(e,o,t,r,i){var s=d[o]||!1;s||(s={a:[],l:[],f:function(e){for(var o=s.l,t=!1,r=o.length-1;r>=0;r--)if(!1===(t=o[r].call(e.target,e)))return!1;return t}},T.bind(e,o,s.f,r,i),d[o]=s),T.ispage?(s.a=[T.id].concat(s.a),s.l=[t].concat(s.l)):(s.a.push(T.id),s.l.push(t))},this.undelegate=function(e,o,t,r,i){var s=d[o]||!1;if(s&&s.l)for(var n=0,l=s.l.length;n<l;n++)s.a[n]===T.id&&(s.a.splice(n),s.l.splice(n),0===s.a.length&&(T._unbind(e,o,s.l.f),d[o]=null))},this.bind=function(e,o,t,r,i){var s="jquery"in e?e[0]:e;T._bind(s,o,t,r||!1,i||!1)},this._bind=function(e,o,t,r,i){T.events.push({e:e,n:o,f:t,b:r,q:!1}),Y&&i?e.addEventListener(o,t,{passive:!1,capture:r}):e.addEventListener(o,t,r||!1)},this._unbind=function(e,o,t,r){d[o]?T.undelegate(e,o,t,r):e.removeEventListener(o,t,r)},this.unbindAll=function(){for(var e=0;e<T.events.length;e++){var o=T.events[e];o.q?o.e.unbind(o.n,o.f):T._unbind(o.e,o.n,o.f,o.b)}},this.showRails=function(){return T.showRail().showRailHr()},this.showRail=function(){return 0===T.page.maxh||!T.ispage&&"none"==T.win.css("display")||(T.rail.visibility=!0,T.rail.css("display","block")),T},this.showRailHr=function(){return T.railh&&(0===T.page.maxw||!T.ispage&&"none"==T.win.css("display")||(T.railh.visibility=!0,T.railh.css("display","block"))),T},this.hideRails=function(){return T.hideRail().hideRailHr()},this.hideRail=function(){return T.rail.visibility=!1,T.rail.css("display","none"),T},this.hideRailHr=function(){return T.railh&&(T.railh.visibility=!1,T.railh.css("display","none")),T},this.show=function(){return T.hidden=!1,T.railslocked=!1,T.showRails()},this.hide=function(){return T.hidden=!0,T.railslocked=!0,T.hideRails()},this.toggle=function(){return T.hidden?T.show():T.hide()},this.remove=function(){T.stop(),T.cursortimeout&&clearTimeout(T.cursortimeout);for(var e in T.delaylist)T.delaylist[e]&&h(T.delaylist[e].h);T.doZoomOut(),T.unbindAll(),P.isie9&&T.win[0].detachEvent("onpropertychange",T.onAttributeChange),!1!==T.observer&&T.observer.disconnect(),!1!==T.observerremover&&T.observerremover.disconnect(),!1!==T.observerbody&&T.observerbody.disconnect(),T.events=null,T.cursor&&T.cursor.remove(),T.cursorh&&T.cursorh.remove(),T.rail&&T.rail.remove(),T.railh&&T.railh.remove(),T.zoom&&T.zoom.remove();for(var o=0;o<T.saved.css.length;o++){var t=T.saved.css[o];t[0].css(t[1],void 0===t[2]?"":t[2])}T.saved=!1,T.me.data("__nicescroll","");var r=n.nicescroll;r.each(function(e){if(this&&this.id===T.id){delete r[e];for(var o=++e;o<r.length;o++,e++)r[e]=r[o];--r.length&&delete r[r.length]}});for(var i in T)T[i]=null,delete T[i];T=null},this.scrollstart=function(e){return this.onscrollstart=e,T},this.scrollend=function(e){return this.onscrollend=e,T},this.scrollcancel=function(e){return this.onscrollcancel=e,T},this.zoomin=function(e){return this.onzoomin=e,T},this.zoomout=function(e){return this.onzoomout=e,T},this.isScrollable=function(e){var o=e.target?e.target:e;if("OPTION"==o.nodeName)return!0;for(;o&&1==o.nodeType&&o!==this.me[0]&&!/^BODY|HTML/.test(o.nodeName);){var t=n(o),r=t.css("overflowY")||t.css("overflowX")||t.css("overflow")||"";if(/scroll|auto/.test(r))return o.clientHeight!=o.scrollHeight;o=!!o.parentNode&&o.parentNode}return!1},this.getViewport=function(e){for(var o=!(!e||!e.parentNode)&&e.parentNode;o&&1==o.nodeType&&!/^BODY|HTML/.test(o.nodeName);){var t=n(o);if(/fixed|absolute/.test(t.css("position")))return t;var r=t.css("overflowY")||t.css("overflowX")||t.css("overflow")||"";if(/scroll|auto/.test(r)&&o.clientHeight!=o.scrollHeight)return t;if(t.getNiceScroll().length>0)return t;o=!!o.parentNode&&o.parentNode}return!1},this.triggerScrollStart=function(e,o,t,r,i){if(T.onscrollstart){var s={type:"scrollstart",current:{x:e,y:o},request:{x:t,y:r},end:{x:T.newscrollx,y:T.newscrolly},speed:i};T.onscrollstart.call(T,s)}},this.triggerScrollEnd=function(){if(T.onscrollend){var e=T.getScrollLeft(),o=T.getScrollTop(),t={type:"scrollend",current:{x:e,y:o},end:{x:e,y:o}};T.onscrollend.call(T,t)}};var B=0,X=0,D=0,A=1,q=!1;if(this.onmousewheel=function(e){if(T.wheelprevented||T.locked)return!1;if(T.railslocked)return T.debounced("checkunlock",T.resize,250),!1;if(T.rail.drag)return T.cancelEvent(e);if("auto"===M.oneaxismousemode&&0!==e.deltaX&&(M.oneaxismousemode=!1),M.oneaxismousemode&&0===e.deltaX&&!T.rail.scrollable)return!T.railh||!T.railh.scrollable||T.onmousewheelhr(e);var o=f(),t=!1;if(M.preservenativescrolling&&T.checkarea+600<o&&(T.nativescrollingarea=T.isScrollable(e),t=!0),T.checkarea=o,T.nativescrollingarea)return!0;var r=k(e,!1,t);return r&&(T.checkarea=0),r},this.onmousewheelhr=function(e){if(!T.wheelprevented){if(T.railslocked||!T.railh.scrollable)return!0;if(T.rail.drag)return T.cancelEvent(e);var o=f(),t=!1;return M.preservenativescrolling&&T.checkarea+600<o&&(T.nativescrollingarea=T.isScrollable(e),t=!0),T.checkarea=o,!!T.nativescrollingarea||(T.railslocked?T.cancelEvent(e):k(e,!0,t))}},this.stop=function(){return T.cancelScroll(),T.scrollmon&&T.scrollmon.stop(),T.cursorfreezed=!1,T.scroll.y=Math.round(T.getScrollTop()*(1/T.scrollratio.y)),T.noticeCursor(),T},this.getTransitionSpeed=function(e){return 80+e/72*M.scrollspeed|0},M.smoothscroll)if(T.ishwscroll&&P.hastransition&&M.usetransition&&M.smoothscroll){var j="";this.resetTransition=function(){j="",T.doc.css(P.prefixstyle+"transition-duration","0ms")},this.prepareTransition=function(e,o){var t=o?e:T.getTransitionSpeed(e),r=t+"ms";return j!==r&&(j=r,T.doc.css(P.prefixstyle+"transition-duration",r)),t},this.doScrollLeft=function(e,o){var t=T.scrollrunning?T.newscrolly:T.getScrollTop();T.doScrollPos(e,t,o)},this.doScrollTop=function(e,o){var t=T.scrollrunning?T.newscrollx:T.getScrollLeft();T.doScrollPos(t,e,o)},this.cursorupdate={running:!1,start:function(){var e=this;if(!e.running){e.running=!0;var o=function(){e.running&&u(o),T.showCursor(T.getScrollTop(),T.getScrollLeft()),T.notifyScrollEvent(T.win[0])};u(o)}},stop:function(){this.running=!1}},this.doScrollPos=function(e,o,t){var r=T.getScrollTop(),i=T.getScrollLeft();if(((T.newscrolly-r)*(o-r)<0||(T.newscrollx-i)*(e-i)<0)&&T.cancelScroll(),M.bouncescroll?(o<0?o=o/2|0:o>T.page.maxh&&(o=T.page.maxh+(o-T.page.maxh)/2|0),e<0?e=e/2|0:e>T.page.maxw&&(e=T.page.maxw+(e-T.page.maxw)/2|0)):(o<0?o=0:o>T.page.maxh&&(o=T.page.maxh),e<0?e=0:e>T.page.maxw&&(e=T.page.maxw)),T.scrollrunning&&e==T.newscrollx&&o==T.newscrolly)return!1;T.newscrolly=o,T.newscrollx=e;var s=T.getScrollTop(),n=T.getScrollLeft(),l={};l.x=e-n,l.y=o-s;var a=0|Math.sqrt(l.x*l.x+l.y*l.y),c=T.prepareTransition(a);T.scrollrunning||(T.scrollrunning=!0,T.triggerScrollStart(n,s,e,o,c),T.cursorupdate.start()),T.scrollendtrapped=!0,P.transitionend||(T.scrollendtrapped&&clearTimeout(T.scrollendtrapped),T.scrollendtrapped=setTimeout(T.onScrollTransitionEnd,c)),T.setScrollTop(T.newscrolly),T.setScrollLeft(T.newscrollx)},this.cancelScroll=function(){if(!T.scrollendtrapped)return!0;var e=T.getScrollTop(),o=T.getScrollLeft();return T.scrollrunning=!1,P.transitionend||clearTimeout(P.transitionend),T.scrollendtrapped=!1,T.resetTransition(),T.setScrollTop(e),T.railh&&T.setScrollLeft(o),T.timerscroll&&T.timerscroll.tm&&clearInterval(T.timerscroll.tm),T.timerscroll=!1,T.cursorfreezed=!1,T.cursorupdate.stop(),T.showCursor(e,o),T},this.onScrollTransitionEnd=function(){if(T.scrollendtrapped){var e=T.getScrollTop(),o=T.getScrollLeft();if(e<0?e=0:e>T.page.maxh&&(e=T.page.maxh),o<0?o=0:o>T.page.maxw&&(o=T.page.maxw),e!=T.newscrolly||o!=T.newscrollx)return T.doScrollPos(o,e,M.snapbackspeed);T.scrollrunning&&T.triggerScrollEnd(),T.scrollrunning=!1,T.scrollendtrapped=!1,T.resetTransition(),T.timerscroll=!1,T.setScrollTop(e),T.railh&&T.setScrollLeft(o),T.cursorupdate.stop(),T.noticeCursor(!1,e,o),T.cursorfreezed=!1}}}else this.doScrollLeft=function(e,o){var t=T.scrollrunning?T.newscrolly:T.getScrollTop();T.doScrollPos(e,t,o)},this.doScrollTop=function(e,o){var t=T.scrollrunning?T.newscrollx:T.getScrollLeft();T.doScrollPos(t,e,o)},this.doScrollPos=function(e,o,t){var r=T.getScrollTop(),i=T.getScrollLeft();((T.newscrolly-r)*(o-r)<0||(T.newscrollx-i)*(e-i)<0)&&T.cancelScroll();var s=!1;if(T.bouncescroll&&T.rail.visibility||(o<0?(o=0,s=!0):o>T.page.maxh&&(o=T.page.maxh,s=!0)),T.bouncescroll&&T.railh.visibility||(e<0?(e=0,s=!0):e>T.page.maxw&&(e=T.page.maxw,s=!0)),T.scrollrunning&&T.newscrolly===o&&T.newscrollx===e)return!0;T.newscrolly=o,T.newscrollx=e,T.dst={},T.dst.x=e-i,T.dst.y=o-r,T.dst.px=i,T.dst.py=r;var n=0|Math.sqrt(T.dst.x*T.dst.x+T.dst.y*T.dst.y),l=T.getTransitionSpeed(n);T.bzscroll={};var a=s?1:.58;T.bzscroll.x=new R(i,T.newscrollx,l,0,0,a,1),T.bzscroll.y=new R(r,T.newscrolly,l,0,0,a,1);f();var c=function(){if(T.scrollrunning){var e=T.bzscroll.y.getPos();T.setScrollLeft(T.bzscroll.x.getNow()),T.setScrollTop(T.bzscroll.y.getNow()),e<=1?T.timer=u(c):(T.scrollrunning=!1,T.timer=0,T.triggerScrollEnd())}};T.scrollrunning||(T.triggerScrollStart(i,r,e,o,l),T.scrollrunning=!0,T.timer=u(c))},this.cancelScroll=function(){return T.timer&&h(T.timer),T.timer=0,T.bzscroll=!1,T.scrollrunning=!1,T};else this.doScrollLeft=function(e,o){var t=T.getScrollTop();T.doScrollPos(e,t,o)},this.doScrollTop=function(e,o){var t=T.getScrollLeft();T.doScrollPos(t,e,o)},this.doScrollPos=function(e,o,t){var r=e>T.page.maxw?T.page.maxw:e;r<0&&(r=0);var i=o>T.page.maxh?T.page.maxh:o;i<0&&(i=0),T.synched("scroll",function(){T.setScrollTop(i),T.setScrollLeft(r)})},this.cancelScroll=function(){};this.doScrollBy=function(e,o){z(0,e)},this.doScrollLeftBy=function(e,o){z(e,0)},this.doScrollTo=function(e,o){var t=o?Math.round(e*T.scrollratio.y):e;t<0?t=0:t>T.page.maxh&&(t=T.page.maxh),T.cursorfreezed=!1,T.doScrollTop(e)},this.checkContentSize=function(){var e=T.getContentSize();e.h==T.page.h&&e.w==T.page.w||T.resize(!1,e)},T.onscroll=function(e){T.rail.drag||T.cursorfreezed||T.synched("scroll",function(){T.scroll.y=Math.round(T.getScrollTop()/T.scrollratio.y),T.railh&&(T.scroll.x=Math.round(T.getScrollLeft()/T.scrollratio.x)),T.noticeCursor()})},T.bind(T.docscroll,"scroll",T.onscroll),this.doZoomIn=function(e){if(!T.zoomactive){T.zoomactive=!0,T.zoomrestore={style:{}};var o=["position","top","left","zIndex","backgroundColor","marginTop","marginBottom","marginLeft","marginRight"],t=T.win[0].style;for(var r in o){var i=o[r];T.zoomrestore.style[i]=void 0!==t[i]?t[i]:""}T.zoomrestore.style.width=T.win.css("width"),T.zoomrestore.style.height=T.win.css("height"),T.zoomrestore.padding={w:T.win.outerWidth()-T.win.width(),h:T.win.outerHeight()-T.win.height()},P.isios4&&(T.zoomrestore.scrollTop=c.scrollTop(),c.scrollTop(0)),T.win.css({position:P.isios4?"absolute":"fixed",top:0,left:0,zIndex:s+100,margin:0});var n=T.win.css("backgroundColor");return(""===n||/transparent|rgba\(0, 0, 0, 0\)|rgba\(0,0,0,0\)/.test(n))&&T.win.css("backgroundColor","#fff"),T.rail.css({zIndex:s+101}),T.zoom.css({zIndex:s+102}),T.zoom.css("backgroundPosition","0 -18px"),T.resizeZoom(),T.onzoomin&&T.onzoomin.call(T),T.cancelEvent(e)}},this.doZoomOut=function(e){if(T.zoomactive)return T.zoomactive=!1,T.win.css("margin",""),T.win.css(T.zoomrestore.style),P.isios4&&c.scrollTop(T.zoomrestore.scrollTop),T.rail.css({"z-index":T.zindex}),T.zoom.css({"z-index":T.zindex}),T.zoomrestore=!1,T.zoom.css("backgroundPosition","0 0"),T.onResize(),T.onzoomout&&T.onzoomout.call(T),T.cancelEvent(e)},this.doZoom=function(e){return T.zoomactive?T.doZoomOut(e):T.doZoomIn(e)},this.resizeZoom=function(){if(T.zoomactive){var e=T.getScrollTop();T.win.css({width:c.width()-T.zoomrestore.padding.w+"px",height:c.height()-T.zoomrestore.padding.h+"px"}),T.onResize(),T.setScrollTop(Math.min(T.page.maxh,e))}},this.init(),n.nicescroll.push(this)},y=function(e){var o=this;this.nc=e,this.lastx=0,this.lasty=0,this.speedx=0,this.speedy=0,this.lasttime=0,this.steptime=0,this.snapx=!1,this.snapy=!1,this.demulx=0,this.demuly=0,this.lastscrollx=-1,this.lastscrolly=-1,this.chkx=0,this.chky=0,this.timer=0,this.reset=function(e,t){o.stop(),o.steptime=0,o.lasttime=f(),o.speedx=0,o.speedy=0,o.lastx=e,o.lasty=t,o.lastscrollx=-1,o.lastscrolly=-1},this.update=function(e,t){var r=f();o.steptime=r-o.lasttime,o.lasttime=r;var i=t-o.lasty,s=e-o.lastx,n=o.nc.getScrollTop()+i,l=o.nc.getScrollLeft()+s;o.snapx=l<0||l>o.nc.page.maxw,o.snapy=n<0||n>o.nc.page.maxh,o.speedx=s,o.speedy=i,o.lastx=e,o.lasty=t},this.stop=function(){o.nc.unsynched("domomentum2d"),o.timer&&clearTimeout(o.timer),o.timer=0,o.lastscrollx=-1,o.lastscrolly=-1},this.doSnapy=function(e,t){var r=!1;t<0?(t=0,r=!0):t>o.nc.page.maxh&&(t=o.nc.page.maxh,r=!0),e<0?(e=0,r=!0):e>o.nc.page.maxw&&(e=o.nc.page.maxw,r=!0),r?o.nc.doScrollPos(e,t,o.nc.opt.snapbackspeed):o.nc.triggerScrollEnd()},this.doMomentum=function(e){var t=f(),r=e?t+e:o.lasttime,i=o.nc.getScrollLeft(),s=o.nc.getScrollTop(),n=o.nc.page.maxh,l=o.nc.page.maxw;o.speedx=l>0?Math.min(60,o.speedx):0,o.speedy=n>0?Math.min(60,o.speedy):0;var a=r&&t-r<=60;(s<0||s>n||i<0||i>l)&&(a=!1);var c=!(!o.speedy||!a)&&o.speedy,d=!(!o.speedx||!a)&&o.speedx;if(c||d){var u=Math.max(16,o.steptime);if(u>50){var h=u/50;o.speedx*=h,o.speedy*=h,u=50}o.demulxy=0,o.lastscrollx=o.nc.getScrollLeft(),o.chkx=o.lastscrollx,o.lastscrolly=o.nc.getScrollTop(),o.chky=o.lastscrolly;var p=o.lastscrollx,m=o.lastscrolly,g=function(){var e=f()-t>600?.04:.02;o.speedx&&(p=Math.floor(o.lastscrollx-o.speedx*(1-o.demulxy)),o.lastscrollx=p,(p<0||p>l)&&(e=.1)),o.speedy&&(m=Math.floor(o.lastscrolly-o.speedy*(1-o.demulxy)),o.lastscrolly=m,(m<0||m>n)&&(e=.1)),o.demulxy=Math.min(1,o.demulxy+e),o.nc.synched("domomentum2d",function(){if(o.speedx){o.nc.getScrollLeft();o.chkx=p,o.nc.setScrollLeft(p)}if(o.speedy){o.nc.getScrollTop();o.chky=m,o.nc.setScrollTop(m)}o.timer||(o.nc.hideCursor(),o.doSnapy(p,m))}),o.demulxy<1?o.timer=setTimeout(g,u):(o.stop(),o.nc.hideCursor(),o.doSnapy(p,m))};g()}else o.doSnapy(o.nc.getScrollLeft(),o.nc.getScrollTop())}},x=e.fn.scrollTop;e.cssHooks.pageYOffset={get:function(e,o,t){var r=n.data(e,"__nicescroll")||!1;return r&&r.ishwscroll?r.getScrollTop():x.call(e)},set:function(e,o){var t=n.data(e,"__nicescroll")||!1;return t&&t.ishwscroll?t.setScrollTop(parseInt(o)):x.call(e,o),this}},e.fn.scrollTop=function(e){if(void 0===e){var o=!!this[0]&&(n.data(this[0],"__nicescroll")||!1);return o&&o.ishwscroll?o.getScrollTop():x.call(this)}return this.each(function(){var o=n.data(this,"__nicescroll")||!1;o&&o.ishwscroll?o.setScrollTop(parseInt(e)):x.call(n(this),e)})};var S=e.fn.scrollLeft;n.cssHooks.pageXOffset={get:function(e,o,t){var r=n.data(e,"__nicescroll")||!1;return r&&r.ishwscroll?r.getScrollLeft():S.call(e)},set:function(e,o){var t=n.data(e,"__nicescroll")||!1;return t&&t.ishwscroll?t.setScrollLeft(parseInt(o)):S.call(e,o),this}},e.fn.scrollLeft=function(e){if(void 0===e){var o=!!this[0]&&(n.data(this[0],"__nicescroll")||!1);return o&&o.ishwscroll?o.getScrollLeft():S.call(this)}return this.each(function(){var o=n.data(this,"__nicescroll")||!1;o&&o.ishwscroll?o.setScrollLeft(parseInt(e)):S.call(n(this),e)})};var z=function(e){var o=this;if(this.length=0,this.name="nicescrollarray",this.each=function(e){return n.each(o,e),o},this.push=function(e){o[o.length]=e,o.length++},this.eq=function(e){return o[e]},e)for(var t=0;t<e.length;t++){var r=n.data(e[t],"__nicescroll")||!1;r&&(this[this.length]=r,this.length++)}return this};!function(e,o,t){for(var r=0,i=o.length;r<i;r++)t(e,o[r])}(z.prototype,["show","hide","toggle","onResize","resize","remove","stop","doScrollPos"],function(e,o){e[o]=function(){var e=arguments;return this.each(function(){this[o].apply(this,e)})}}),e.fn.getNiceScroll=function(e){return void 0===e?new z(this):this[e]&&n.data(this[e],"__nicescroll")||!1},(e.expr.pseudos||e.expr[":"]).nicescroll=function(e){return void 0!==n.data(e,"__nicescroll")},n.fn.niceScroll=function(e,o){void 0!==o||"object"!=typeof e||"jquery"in e||(o=e,e=!1);var t=new z;return this.each(function(){var r=n(this),i=n.extend({},o);if(e){var s=n(e);i.doc=s.length>1?n(e,r):s,i.win=r}!("doc"in i)||"win"in i||(i.win=r);var l=r.data("__nicescroll")||!1;l||(i.doc=i.doc||r,l=new b(i,r),r.data("__nicescroll",l)),t.push(l)}),1===t.length?t[0]:t},a.NiceScroll={getjQuery:function(){return e}},n.nicescroll||(n.nicescroll=new z,n.nicescroll.options=g)});
+
+
+/* Feather icons */
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(l){if(n[l])return n[l].exports;var t=n[l]={i:l,l:!1,exports:{}};return e[l].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=e,i.c=n,i.d=function(e,n,l){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:l})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=61)}([function(e,n,i){var l=i(20)("wks"),t=i(11),r=i(1).Symbol,o="function"==typeof r;(e.exports=function(e){return l[e]||(l[e]=o&&r[e]||(o?r:t)("Symbol."+e))}).store=l},function(e,n){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,n){var i=e.exports={version:"2.5.6"};"number"==typeof __e&&(__e=i)},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n,i){e.exports=!i(27)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n,i){var l=i(13);e.exports=function(e){if(!l(e))throw TypeError(e+" is not an object!");return e}},function(e,n,i){var l=i(5),t=i(56),r=i(55),o=Object.defineProperty;n.f=i(4)?Object.defineProperty:function(e,n,i){if(l(e),n=r(n,!0),l(i),t)try{return o(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){var l=i(6),t=i(12);e.exports=i(4)?function(e,n,i){return l.f(e,n,t(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=o(i(35)),t=o(i(33)),r=o(i(32));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(t.default).map(function(e){return new l.default(e,t.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n,i){var l=i(20)("keys"),t=i(11);e.exports=function(e){return l[e]||(l[e]=t(e))}},function(e,n){e.exports={}},function(e,n){var i=0,l=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+l).toString(36))}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on  "+e);return e}},function(e,n){var i=Math.ceil,l=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?l:i)(e)}},function(e,n,i){var l;
+    /*!
+      Copyright (c) 2016 Jed Watson.
+      Licensed under the MIT License (MIT), see
+      http://jedwatson.github.io/classnames
+    */
+    /*!
+      Copyright (c) 2016 Jed Watson.
+      Licensed under the MIT License (MIT), see
+      http://jedwatson.github.io/classnames
+    */
+    !function(){"use strict";var i=function(){function e(){}function n(e,n){for(var i=n.length,l=0;l<i;++l)t(e,n[l])}e.prototype=Object.create(null);var i={}.hasOwnProperty;var l=/\s+/;function t(e,t){if(t){var r=typeof t;"string"===r?function(e,n){for(var i=n.split(l),t=i.length,r=0;r<t;++r)e[i[r]]=!0}(e,t):Array.isArray(t)?n(e,t):"object"===r?function(e,n){for(var l in n)i.call(n,l)&&(e[l]=!!n[l])}(e,t):"number"===r&&function(e,n){e[n]=!0}(e,t)}}return function(){for(var i=arguments.length,l=Array(i),t=0;t<i;t++)l[t]=arguments[t];var r=new e;n(r,l);var o=[];for(var a in r)r[a]&&o.push(a);return o.join(" ")}}();void 0!==e&&e.exports?e.exports=i:void 0===(l=function(){return i}.apply(n,[]))||(e.exports=l)}()},function(e,n,i){var l=i(14);e.exports=function(e){return Object(l(e))}},function(e,n,i){var l=i(6).f,t=i(3),r=i(0)("toStringTag");e.exports=function(e,n,i){e&&!t(e=i?e:e.prototype,r)&&l(e,r,{configurable:!0,value:n})}},function(e,n){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,n,i){var l=i(2),t=i(1),r=t["__core-js_shared__"]||(t["__core-js_shared__"]={});(e.exports=function(e,n){return r[e]||(r[e]=void 0!==n?n:{})})("versions",[]).push({version:l.version,mode:i(29)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(e,n,i){var l=i(15),t=Math.min;e.exports=function(e){return e>0?t(l(e),9007199254740991):0}},function(e,n){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,n,i){var l=i(48),t=i(14);e.exports=function(e){return l(t(e))}},function(e,n,i){var l=i(54);e.exports=function(e,n,i){if(l(e),void 0===n)return e;switch(i){case 1:return function(i){return e.call(n,i)};case 2:return function(i,l){return e.call(n,i,l)};case 3:return function(i,l,t){return e.call(n,i,l,t)}}return function(){return e.apply(n,arguments)}}},function(e,n,i){var l=i(1),t=i(7),r=i(3),o=i(11)("src"),a=Function.toString,c=(""+a).split("toString");i(2).inspectSource=function(e){return a.call(e)},(e.exports=function(e,n,i,a){var y="function"==typeof i;y&&(r(i,"name")||t(i,"name",n)),e[n]!==i&&(y&&(r(i,o)||t(i,o,e[n]?""+e[n]:c.join(String(n)))),e===l?e[n]=i:a?e[n]?e[n]=i:t(e,n,i):(delete e[n],t(e,n,i)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[o]||a.call(this)})},function(e,n,i){var l=i(13),t=i(1).document,r=l(t)&&l(t.createElement);e.exports=function(e){return r?t.createElement(e):{}}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n,i){var l=i(1),t=i(2),r=i(7),o=i(25),a=i(24),c=function(e,n,i){var y,p,h,x,s=e&c.F,u=e&c.G,d=e&c.S,f=e&c.P,v=e&c.B,g=u?l:d?l[n]||(l[n]={}):(l[n]||{}).prototype,m=u?t:t[n]||(t[n]={}),M=m.prototype||(m.prototype={});for(y in u&&(i=n),i)h=((p=!s&&g&&void 0!==g[y])?g:i)[y],x=v&&p?a(h,l):f&&"function"==typeof h?a(Function.call,h):h,g&&o(g,y,h,e&c.U),m[y]!=h&&r(m,y,x),f&&M[y]!=h&&(M[y]=h)};l.core=t,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,n){e.exports=!1},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var i=arguments[n];for(var l in i)Object.prototype.hasOwnProperty.call(i,l)&&(e[l]=i[l])}return e},t=o(i(16)),r=o(i(8));function o(e){return e&&e.__esModule?e:{default:e}}n.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"==typeof document)throw new Error("`feather.replace()` only works in a browser environment.");var n=document.querySelectorAll("[data-feather]");Array.from(n).forEach(function(n){return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=function(e){return Array.from(e.attributes).reduce(function(e,n){return e[n.name]=n.value,e},{})}(e),o=i["data-feather"];delete i["data-feather"];var a=r.default[o].toSvg(l({},n,i,{class:(0,t.default)(n.class,i.class)})),c=(new DOMParser).parseFromString(a,"image/svg+xml").querySelector("svg");e.parentNode.replaceChild(c,e)}(n,e)})}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l,t=i(8),r=(l=t)&&l.__esModule?l:{default:l};n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."),!e)throw new Error("The required `key` (icon name) parameter is missing.");if(!r.default[e])throw new Error("No icon matching '"+e+"'. See the complete list of icons at https://feathericons.com");return r.default[e].toSvg(n)}},function(e){e.exports={activity:["pulse","health","action","motion"],airplay:["stream","cast","mirroring"],"alert-circle":["warning"],"alert-octagon":["warning"],"alert-triangle":["warning"],"at-sign":["mention"],award:["achievement","badge"],aperture:["camera","photo"],bell:["alarm","notification"],"bell-off":["alarm","notification","silent"],bluetooth:["wireless"],"book-open":["read"],book:["read","dictionary","booklet","magazine"],bookmark:["read","clip","marker","tag"],briefcase:["work","bag","baggage","folder"],clipboard:["copy"],clock:["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],cloud:["weather"],codepen:["logo"],codesandbox:["logo"],coffee:["drink","cup","mug","tea","cafe","hot","beverage"],command:["keyboard","cmd"],compass:["navigation","safari","travel"],copy:["clone","duplicate"],"corner-down-left":["arrow"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],"credit-card":["purchase","payment","cc"],crop:["photo","image"],crosshair:["aim","target"],database:["storage"],delete:["remove"],disc:["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],droplet:["water"],edit:["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],eye:["view","watch"],"eye-off":["view","watch"],"external-link":["outbound"],facebook:["logo"],"fast-forward":["music"],figma:["logo","design","tool"],film:["movie","video"],"folder-minus":["directory"],"folder-plus":["directory"],folder:["directory"],frown:["emoji","face","bad","sad","emotion"],gift:["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],github:["logo","version control"],gitlab:["logo","version control"],global:["world","browser","language","translate"],"hard-drive":["computer","server"],hash:["hashtag","number","pound"],headphones:["music","audio"],heart:["like","love"],"help-circle":["question mark"],hexagon:["shape","node.js","logo"],home:["house"],image:["picture"],inbox:["email"],instagram:["logo","camera"],key:["password","login","authentication"],"life-bouy":["help","life ring","support"],linkedin:["logo"],lock:["security","password"],"log-in":["sign in","arrow"],"log-out":["sign out","arrow"],mail:["email"],"map-pin":["location","navigation","travel","marker"],map:["location","navigation","travel"],maximize:["fullscreen"],"maximize-2":["fullscreen","arrows"],meh:["emoji","face","neutral","emotion"],menu:["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record"],mic:["record"],minimize:["exit fullscreen"],"minimize-2":["exit fullscreen","arrows"],monitor:["tv"],moon:["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],move:["arrows"],navigation:["location","travel"],"navigation-2":["location","travel"],octagon:["stop"],package:["box"],paperclip:["attachment"],pause:["music","stop"],"pause-circle":["music","stop"],"pen-tool":["vector","drawing"],play:["music","start"],"play-circle":["music","start"],plus:["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],pocket:["logo","save"],power:["on","off"],radio:["signal"],rewind:["music"],rss:["feed","subscribe"],save:["floppy disk"],search:["find","magnifier","magnifying glass"],send:["message","mail","paper airplane"],settings:["cog","edit","gear","preferences"],shield:["security"],"shield-off":["security"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],shuffle:["music"],"skip-back":["music"],"skip-forward":["music"],slash:["ban","no"],sliders:["settings","controls"],smile:["emoji","face","happy","good","emotion"],speaker:["music"],star:["bookmark","favorite","like"],sun:["brightness","weather","light"],sunrise:["weather"],sunset:["weather"],tag:["label"],target:["bullseye"],terminal:["code","command line"],"thumbs-down":["dislike","bad"],"thumbs-up":["like","good"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],trash:["garbage","delete","remove"],"trash-2":["garbage","delete","remove"],triangle:["delta"],truck:["delivery","van","shipping"],twitter:["logo"],umbrella:["rain","weather"],"video-off":["camera","movie","film"],video:["camera","movie","film"],voicemail:["phone"],volume:["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],watch:["clock","time"],wind:["weather","air"],"x-circle":["cancel","close","delete","remove","times"],"x-octagon":["delete","stop","alert","warning","times"],"x-square":["cancel","close","delete","remove","times"],x:["cancel","close","delete","remove","times"],youtube:["logo","video","play"],"zap-off":["flash","camera","lightning"],zap:["flash","camera","lightning"]}},function(e){e.exports={activity:'<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline>',airplay:'<path d="M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1"></path><polygon points="12 15 17 21 7 21 12 15"></polygon>',"alert-circle":'<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12" y2="16"></line>',"alert-octagon":'<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12" y2="16"></line>',"alert-triangle":'<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12" y2="17"></line>',"align-center":'<line x1="18" y1="10" x2="6" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="18" y1="18" x2="6" y2="18"></line>',"align-justify":'<line x1="21" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="3" y2="18"></line>',"align-left":'<line x1="17" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="17" y1="18" x2="3" y2="18"></line>',"align-right":'<line x1="21" y1="10" x2="7" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="7" y2="18"></line>',anchor:'<circle cx="12" cy="5" r="3"></circle><line x1="12" y1="22" x2="12" y2="8"></line><path d="M5 12H2a10 10 0 0 0 20 0h-3"></path>',aperture:'<circle cx="12" cy="12" r="10"></circle><line x1="14.31" y1="8" x2="20.05" y2="17.94"></line><line x1="9.69" y1="8" x2="21.17" y2="8"></line><line x1="7.38" y1="12" x2="13.12" y2="2.06"></line><line x1="9.69" y1="16" x2="3.95" y2="6.06"></line><line x1="14.31" y1="16" x2="2.83" y2="16"></line><line x1="16.62" y1="12" x2="10.88" y2="21.94"></line>',archive:'<polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line>',"arrow-down-circle":'<circle cx="12" cy="12" r="10"></circle><polyline points="8 12 12 16 16 12"></polyline><line x1="12" y1="8" x2="12" y2="16"></line>',"arrow-down-left":'<line x1="17" y1="7" x2="7" y2="17"></line><polyline points="17 17 7 17 7 7"></polyline>',"arrow-down-right":'<line x1="7" y1="7" x2="17" y2="17"></line><polyline points="17 7 17 17 7 17"></polyline>',"arrow-down":'<line x1="12" y1="5" x2="12" y2="19"></line><polyline points="19 12 12 19 5 12"></polyline>',"arrow-left-circle":'<circle cx="12" cy="12" r="10"></circle><polyline points="12 8 8 12 12 16"></polyline><line x1="16" y1="12" x2="8" y2="12"></line>',"arrow-left":'<line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline>',"arrow-right-circle":'<circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line>',"arrow-right":'<line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline>',"arrow-up-circle":'<circle cx="12" cy="12" r="10"></circle><polyline points="16 12 12 8 8 12"></polyline><line x1="12" y1="16" x2="12" y2="8"></line>',"arrow-up-left":'<line x1="17" y1="17" x2="7" y2="7"></line><polyline points="7 17 7 7 17 7"></polyline>',"arrow-up-right":'<line x1="7" y1="17" x2="17" y2="7"></line><polyline points="7 7 17 7 17 17"></polyline>',"arrow-up":'<line x1="12" y1="19" x2="12" y2="5"></line><polyline points="5 12 12 5 19 12"></polyline>',"at-sign":'<circle cx="12" cy="12" r="4"></circle><path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94"></path>',award:'<circle cx="12" cy="8" r="7"></circle><polyline points="8.21 13.89 7 23 12 20 17 23 15.79 13.88"></polyline>',"bar-chart-2":'<line x1="18" y1="20" x2="18" y2="10"></line><line x1="12" y1="20" x2="12" y2="4"></line><line x1="6" y1="20" x2="6" y2="14"></line>',"bar-chart":'<line x1="12" y1="20" x2="12" y2="10"></line><line x1="18" y1="20" x2="18" y2="4"></line><line x1="6" y1="20" x2="6" y2="16"></line>',"battery-charging":'<path d="M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19"></path><line x1="23" y1="13" x2="23" y2="11"></line><polyline points="11 6 7 12 13 12 9 18"></polyline>',battery:'<rect x="1" y="6" width="18" height="12" rx="2" ry="2"></rect><line x1="23" y1="13" x2="23" y2="11"></line>',"bell-off":'<path d="M13.73 21a2 2 0 0 1-3.46 0"></path><path d="M18.63 13A17.89 17.89 0 0 1 18 8"></path><path d="M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14"></path><path d="M18 8a6 6 0 0 0-9.33-5"></path><line x1="1" y1="1" x2="23" y2="23"></line>',bell:'<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path>',bluetooth:'<polyline points="6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5"></polyline>',bold:'<path d="M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"></path><path d="M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"></path>',"book-open":'<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path>',book:'<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path>',bookmark:'<path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"></path>',box:'<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>',briefcase:'<rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path>',calendar:'<rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line>',"camera-off":'<line x1="1" y1="1" x2="23" y2="23"></line><path d="M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56"></path>',camera:'<path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"></path><circle cx="12" cy="13" r="4"></circle>',cast:'<path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path><line x1="2" y1="20" x2="2" y2="20"></line>',"check-circle":'<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline>',"check-square":'<polyline points="9 11 12 14 22 4"></polyline><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path>',check:'<polyline points="20 6 9 17 4 12"></polyline>',"chevron-down":'<polyline points="6 9 12 15 18 9"></polyline>',"chevron-left":'<polyline points="15 18 9 12 15 6"></polyline>',"chevron-right":'<polyline points="9 18 15 12 9 6"></polyline>',"chevron-up":'<polyline points="18 15 12 9 6 15"></polyline>',"chevrons-down":'<polyline points="7 13 12 18 17 13"></polyline><polyline points="7 6 12 11 17 6"></polyline>',"chevrons-left":'<polyline points="11 17 6 12 11 7"></polyline><polyline points="18 17 13 12 18 7"></polyline>',"chevrons-right":'<polyline points="13 17 18 12 13 7"></polyline><polyline points="6 17 11 12 6 7"></polyline>',"chevrons-up":'<polyline points="17 11 12 6 7 11"></polyline><polyline points="17 18 12 13 7 18"></polyline>',chrome:'<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="21.17" y1="8" x2="12" y2="8"></line><line x1="3.95" y1="6.06" x2="8.54" y2="14"></line><line x1="10.88" y1="21.94" x2="15.46" y2="14"></line>',circle:'<circle cx="12" cy="12" r="10"></circle>',clipboard:'<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect>',clock:'<circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline>',"cloud-drizzle":'<line x1="8" y1="19" x2="8" y2="21"></line><line x1="8" y1="13" x2="8" y2="15"></line><line x1="16" y1="19" x2="16" y2="21"></line><line x1="16" y1="13" x2="16" y2="15"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="12" y1="15" x2="12" y2="17"></line><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"></path>',"cloud-lightning":'<path d="M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9"></path><polyline points="13 11 9 17 15 17 11 23"></polyline>',"cloud-off":'<path d="M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3"></path><line x1="1" y1="1" x2="23" y2="23"></line>',"cloud-rain":'<line x1="16" y1="13" x2="16" y2="21"></line><line x1="8" y1="13" x2="8" y2="21"></line><line x1="12" y1="15" x2="12" y2="23"></line><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"></path>',"cloud-snow":'<path d="M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25"></path><line x1="8" y1="16" x2="8" y2="16"></line><line x1="8" y1="20" x2="8" y2="20"></line><line x1="12" y1="18" x2="12" y2="18"></line><line x1="12" y1="22" x2="12" y2="22"></line><line x1="16" y1="16" x2="16" y2="16"></line><line x1="16" y1="20" x2="16" y2="20"></line>',cloud:'<path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"></path>',code:'<polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline>',codepen:'<polygon points="12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2"></polygon><line x1="12" y1="22" x2="12" y2="15.5"></line><polyline points="22 8.5 12 15.5 2 8.5"></polyline><polyline points="2 15.5 12 8.5 22 15.5"></polyline><line x1="12" y1="2" x2="12" y2="8.5"></line>',codesandbox:'<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="7.5 4.21 12 6.81 16.5 4.21"></polyline><polyline points="7.5 19.79 7.5 14.6 3 12"></polyline><polyline points="21 12 16.5 14.6 16.5 19.79"></polyline><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>',coffee:'<path d="M18 8h1a4 4 0 0 1 0 8h-1"></path><path d="M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z"></path><line x1="6" y1="1" x2="6" y2="4"></line><line x1="10" y1="1" x2="10" y2="4"></line><line x1="14" y1="1" x2="14" y2="4"></line>',columns:'<path d="M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18"></path>',command:'<path d="M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z"></path>',compass:'<circle cx="12" cy="12" r="10"></circle><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"></polygon>',copy:'<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>',"corner-down-left":'<polyline points="9 10 4 15 9 20"></polyline><path d="M20 4v7a4 4 0 0 1-4 4H4"></path>',"corner-down-right":'<polyline points="15 10 20 15 15 20"></polyline><path d="M4 4v7a4 4 0 0 0 4 4h12"></path>',"corner-left-down":'<polyline points="14 15 9 20 4 15"></polyline><path d="M20 4h-7a4 4 0 0 0-4 4v12"></path>',"corner-left-up":'<polyline points="14 9 9 4 4 9"></polyline><path d="M20 20h-7a4 4 0 0 1-4-4V4"></path>',"corner-right-down":'<polyline points="10 15 15 20 20 15"></polyline><path d="M4 4h7a4 4 0 0 1 4 4v12"></path>',"corner-right-up":'<polyline points="10 9 15 4 20 9"></polyline><path d="M4 20h7a4 4 0 0 0 4-4V4"></path>',"corner-up-left":'<polyline points="9 14 4 9 9 4"></polyline><path d="M20 20v-7a4 4 0 0 0-4-4H4"></path>',"corner-up-right":'<polyline points="15 14 20 9 15 4"></polyline><path d="M4 20v-7a4 4 0 0 1 4-4h12"></path>',cpu:'<rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line>',"credit-card":'<rect x="1" y="4" width="22" height="16" rx="2" ry="2"></rect><line x1="1" y1="10" x2="23" y2="10"></line>',crop:'<path d="M6.13 1L6 16a2 2 0 0 0 2 2h15"></path><path d="M1 6.13L16 6a2 2 0 0 1 2 2v15"></path>',crosshair:'<circle cx="12" cy="12" r="10"></circle><line x1="22" y1="12" x2="18" y2="12"></line><line x1="6" y1="12" x2="2" y2="12"></line><line x1="12" y1="6" x2="12" y2="2"></line><line x1="12" y1="22" x2="12" y2="18"></line>',database:'<ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"></path><path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"></path>',delete:'<path d="M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z"></path><line x1="18" y1="9" x2="12" y2="15"></line><line x1="12" y1="9" x2="18" y2="15"></line>',disc:'<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="3"></circle>',"dollar-sign":'<line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>',"download-cloud":'<polyline points="8 17 12 21 16 17"></polyline><line x1="12" y1="12" x2="12" y2="21"></line><path d="M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29"></path>',download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line>',droplet:'<path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path>',"edit-2":'<path d="M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"></path>',"edit-3":'<path d="M12 20h9"></path><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"></path>',edit:'<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>',"external-link":'<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line>',"eye-off":'<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"></path><line x1="1" y1="1" x2="23" y2="23"></line>',eye:'<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle>',facebook:'<path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path>',"fast-forward":'<polygon points="13 19 22 12 13 5 13 19"></polygon><polygon points="2 19 11 12 2 5 2 19"></polygon>',feather:'<path d="M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z"></path><line x1="16" y1="8" x2="2" y2="22"></line><line x1="17.5" y1="15" x2="9" y2="15"></line>',figma:'<path d="M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z"></path><path d="M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z"></path><path d="M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z"></path><path d="M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z"></path><path d="M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z"></path>',"file-minus":'<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="9" y1="15" x2="15" y2="15"></line>',"file-plus":'<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line>',"file-text":'<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline>',file:'<path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>',film:'<rect x="2" y="2" width="20" height="20" rx="2.18" ry="2.18"></rect><line x1="7" y1="2" x2="7" y2="22"></line><line x1="17" y1="2" x2="17" y2="22"></line><line x1="2" y1="12" x2="22" y2="12"></line><line x1="2" y1="7" x2="7" y2="7"></line><line x1="2" y1="17" x2="7" y2="17"></line><line x1="17" y1="17" x2="22" y2="17"></line><line x1="17" y1="7" x2="22" y2="7"></line>',filter:'<polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"></polygon>',flag:'<path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"></path><line x1="4" y1="22" x2="4" y2="15"></line>',"folder-minus":'<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path><line x1="9" y1="14" x2="15" y2="14"></line>',"folder-plus":'<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path><line x1="12" y1="11" x2="12" y2="17"></line><line x1="9" y1="14" x2="15" y2="14"></line>',folder:'<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path>',frown:'<circle cx="12" cy="12" r="10"></circle><path d="M16 16s-1.5-2-4-2-4 2-4 2"></path><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>',gift:'<polyline points="20 12 20 22 4 22 4 12"></polyline><rect x="2" y="7" width="20" height="5"></rect><line x1="12" y1="22" x2="12" y2="7"></line><path d="M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z"></path><path d="M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z"></path>',"git-branch":'<line x1="6" y1="3" x2="6" y2="15"></line><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><path d="M18 9a9 9 0 0 1-9 9"></path>',"git-commit":'<circle cx="12" cy="12" r="4"></circle><line x1="1.05" y1="12" x2="7" y2="12"></line><line x1="17.01" y1="12" x2="22.96" y2="12"></line>',"git-merge":'<circle cx="18" cy="18" r="3"></circle><circle cx="6" cy="6" r="3"></circle><path d="M6 21V9a9 9 0 0 0 9 9"></path>',"git-pull-request":'<circle cx="18" cy="18" r="3"></circle><circle cx="6" cy="6" r="3"></circle><path d="M13 6h3a2 2 0 0 1 2 2v7"></path><line x1="6" y1="9" x2="6" y2="21"></line>',github:'<path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path>',gitlab:'<path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path>',globe:'<circle cx="12" cy="12" r="10"></circle><line x1="2" y1="12" x2="22" y2="12"></line><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path>',grid:'<rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect>',"hard-drive":'<line x1="22" y1="12" x2="2" y2="12"></line><path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"></path><line x1="6" y1="16" x2="6" y2="16"></line><line x1="10" y1="16" x2="10" y2="16"></line>',hash:'<line x1="4" y1="9" x2="20" y2="9"></line><line x1="4" y1="15" x2="20" y2="15"></line><line x1="10" y1="3" x2="8" y2="21"></line><line x1="16" y1="3" x2="14" y2="21"></line>',headphones:'<path d="M3 18v-6a9 9 0 0 1 18 0v6"></path><path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>',heart:'<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>',"help-circle":'<circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12" y2="17"></line>',hexagon:'<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path>',home:'<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline>',image:'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline>',inbox:'<polyline points="22 12 16 12 14 15 10 15 8 12 2 12"></polyline><path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"></path>',info:'<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12" y2="8"></line>',instagram:'<rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" y1="6.5" x2="17.5" y2="6.5"></line>',italic:'<line x1="19" y1="4" x2="10" y2="4"></line><line x1="14" y1="20" x2="5" y2="20"></line><line x1="15" y1="4" x2="9" y2="20"></line>',key:'<path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"></path>',layers:'<polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline>',layout:'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line>',"life-buoy":'<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="4.93" y1="4.93" x2="9.17" y2="9.17"></line><line x1="14.83" y1="14.83" x2="19.07" y2="19.07"></line><line x1="14.83" y1="9.17" x2="19.07" y2="4.93"></line><line x1="14.83" y1="9.17" x2="18.36" y2="5.64"></line><line x1="4.93" y1="19.07" x2="9.17" y2="14.83"></line>',"link-2":'<path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line>',link:'<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>',linkedin:'<path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle>',list:'<line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3" y2="6"></line><line x1="3" y1="12" x2="3" y2="12"></line><line x1="3" y1="18" x2="3" y2="18"></line>',loader:'<line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line>',lock:'<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path>',"log-in":'<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"></path><polyline points="10 17 15 12 10 7"></polyline><line x1="15" y1="12" x2="3" y2="12"></line>',"log-out":'<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path><polyline points="16 17 21 12 16 7"></polyline><line x1="21" y1="12" x2="9" y2="12"></line>',mail:'<path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline>',"map-pin":'<path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle>',map:'<polygon points="1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6"></polygon><line x1="8" y1="2" x2="8" y2="18"></line><line x1="16" y1="6" x2="16" y2="22"></line>',"maximize-2":'<polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" y1="3" x2="14" y2="10"></line><line x1="3" y1="21" x2="10" y2="14"></line>',maximize:'<path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"></path>',meh:'<circle cx="12" cy="12" r="10"></circle><line x1="8" y1="15" x2="16" y2="15"></line><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>',menu:'<line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line>',"message-circle":'<path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"></path>',"message-square":'<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>',"mic-off":'<line x1="1" y1="1" x2="23" y2="23"></line><path d="M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6"></path><path d="M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23"></path><line x1="12" y1="19" x2="12" y2="23"></line><line x1="8" y1="23" x2="16" y2="23"></line>',mic:'<path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2"></path><line x1="12" y1="19" x2="12" y2="23"></line><line x1="8" y1="23" x2="16" y2="23"></line>',"minimize-2":'<polyline points="4 14 10 14 10 20"></polyline><polyline points="20 10 14 10 14 4"></polyline><line x1="14" y1="10" x2="21" y2="3"></line><line x1="3" y1="21" x2="10" y2="14"></line>',minimize:'<path d="M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3"></path>',"minus-circle":'<circle cx="12" cy="12" r="10"></circle><line x1="8" y1="12" x2="16" y2="12"></line>',"minus-square":'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="8" y1="12" x2="16" y2="12"></line>',minus:'<line x1="5" y1="12" x2="19" y2="12"></line>',monitor:'<rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line>',moon:'<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>',"more-horizontal":'<circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle>',"more-vertical":'<circle cx="12" cy="12" r="1"></circle><circle cx="12" cy="5" r="1"></circle><circle cx="12" cy="19" r="1"></circle>',"mouse-pointer":'<path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z"></path><path d="M13 13l6 6"></path>',move:'<polyline points="5 9 2 12 5 15"></polyline><polyline points="9 5 12 2 15 5"></polyline><polyline points="15 19 12 22 9 19"></polyline><polyline points="19 9 22 12 19 15"></polyline><line x1="2" y1="12" x2="22" y2="12"></line><line x1="12" y1="2" x2="12" y2="22"></line>',music:'<path d="M9 18V5l12-2v13"></path><circle cx="6" cy="18" r="3"></circle><circle cx="18" cy="16" r="3"></circle>',"navigation-2":'<polygon points="12 2 19 21 12 17 5 21 12 2"></polygon>',navigation:'<polygon points="3 11 22 2 13 21 11 13 3 11"></polygon>',octagon:'<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon>',package:'<line x1="16.5" y1="9.4" x2="7.5" y2="4.21"></line><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>',paperclip:'<path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path>',"pause-circle":'<circle cx="12" cy="12" r="10"></circle><line x1="10" y1="15" x2="10" y2="9"></line><line x1="14" y1="15" x2="14" y2="9"></line>',pause:'<rect x="6" y="4" width="4" height="16"></rect><rect x="14" y="4" width="4" height="16"></rect>',"pen-tool":'<path d="M12 19l7-7 3 3-7 7-3-3z"></path><path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"></path><path d="M2 2l7.586 7.586"></path><circle cx="11" cy="11" r="2"></circle>',percent:'<line x1="19" y1="5" x2="5" y2="19"></line><circle cx="6.5" cy="6.5" r="2.5"></circle><circle cx="17.5" cy="17.5" r="2.5"></circle>',"phone-call":'<path d="M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',"phone-forwarded":'<polyline points="19 1 23 5 19 9"></polyline><line x1="15" y1="5" x2="23" y2="5"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',"phone-incoming":'<polyline points="16 2 16 8 22 8"></polyline><line x1="23" y1="1" x2="16" y2="8"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',"phone-missed":'<line x1="23" y1="1" x2="17" y2="7"></line><line x1="17" y1="1" x2="23" y2="7"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',"phone-off":'<path d="M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91"></path><line x1="23" y1="1" x2="1" y2="23"></line>',"phone-outgoing":'<polyline points="23 7 23 1 17 1"></polyline><line x1="16" y1="8" x2="23" y2="1"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',phone:'<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',"pie-chart":'<path d="M21.21 15.89A10 10 0 1 1 8 2.83"></path><path d="M22 12A10 10 0 0 0 12 2v10z"></path>',"play-circle":'<circle cx="12" cy="12" r="10"></circle><polygon points="10 8 16 12 10 16 10 8"></polygon>',play:'<polygon points="5 3 19 12 5 21 5 3"></polygon>',"plus-circle":'<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line>',"plus-square":'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line>',plus:'<line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line>',pocket:'<path d="M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z"></path><polyline points="8 10 12 14 16 10"></polyline>',power:'<path d="M18.36 6.64a9 9 0 1 1-12.73 0"></path><line x1="12" y1="2" x2="12" y2="12"></line>',printer:'<polyline points="6 9 6 2 18 2 18 9"></polyline><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"></path><rect x="6" y="14" width="12" height="8"></rect>',radio:'<circle cx="12" cy="12" r="2"></circle><path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"></path>',"refresh-ccw":'<polyline points="1 4 1 10 7 10"></polyline><polyline points="23 20 23 14 17 14"></polyline><path d="M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"></path>',"refresh-cw":'<polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path>',repeat:'<polyline points="17 1 21 5 17 9"></polyline><path d="M3 11V9a4 4 0 0 1 4-4h14"></path><polyline points="7 23 3 19 7 15"></polyline><path d="M21 13v2a4 4 0 0 1-4 4H3"></path>',rewind:'<polygon points="11 19 2 12 11 5 11 19"></polygon><polygon points="22 19 13 12 22 5 22 19"></polygon>',"rotate-ccw":'<polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path>',"rotate-cw":'<polyline points="23 4 23 10 17 10"></polyline><path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10"></path>',rss:'<path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle>',save:'<path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"></path><polyline points="17 21 17 13 7 13 7 21"></polyline><polyline points="7 3 7 8 15 8"></polyline>',scissors:'<circle cx="6" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><line x1="20" y1="4" x2="8.12" y2="15.88"></line><line x1="14.47" y1="14.48" x2="20" y2="20"></line><line x1="8.12" y1="8.12" x2="12" y2="12"></line>',search:'<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line>',send:'<line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>',server:'<rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6" y2="6"></line><line x1="6" y1="18" x2="6" y2="18"></line>',settings:'<circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path>',"share-2":'<circle cx="18" cy="5" r="3"></circle><circle cx="6" cy="12" r="3"></circle><circle cx="18" cy="19" r="3"></circle><line x1="8.59" y1="13.51" x2="15.42" y2="17.49"></line><line x1="15.41" y1="6.51" x2="8.59" y2="10.49"></line>',share:'<path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"></path><polyline points="16 6 12 2 8 6"></polyline><line x1="12" y1="2" x2="12" y2="15"></line>',"shield-off":'<path d="M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18"></path><path d="M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38"></path><line x1="1" y1="1" x2="23" y2="23"></line>',shield:'<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>',"shopping-bag":'<path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"></path><line x1="3" y1="6" x2="21" y2="6"></line><path d="M16 10a4 4 0 0 1-8 0"></path>',"shopping-cart":'<circle cx="9" cy="21" r="1"></circle><circle cx="20" cy="21" r="1"></circle><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"></path>',shuffle:'<polyline points="16 3 21 3 21 8"></polyline><line x1="4" y1="20" x2="21" y2="3"></line><polyline points="21 16 21 21 16 21"></polyline><line x1="15" y1="15" x2="21" y2="21"></line><line x1="4" y1="4" x2="9" y2="9"></line>',sidebar:'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line>',"skip-back":'<polygon points="19 20 9 12 19 4 19 20"></polygon><line x1="5" y1="19" x2="5" y2="5"></line>',"skip-forward":'<polygon points="5 4 15 12 5 20 5 4"></polygon><line x1="19" y1="5" x2="19" y2="19"></line>',slack:'<path d="M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z"></path><path d="M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"></path><path d="M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z"></path><path d="M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z"></path><path d="M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z"></path><path d="M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"></path><path d="M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z"></path><path d="M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z"></path>',slash:'<circle cx="12" cy="12" r="10"></circle><line x1="4.93" y1="4.93" x2="19.07" y2="19.07"></line>',sliders:'<line x1="4" y1="21" x2="4" y2="14"></line><line x1="4" y1="10" x2="4" y2="3"></line><line x1="12" y1="21" x2="12" y2="12"></line><line x1="12" y1="8" x2="12" y2="3"></line><line x1="20" y1="21" x2="20" y2="16"></line><line x1="20" y1="12" x2="20" y2="3"></line><line x1="1" y1="14" x2="7" y2="14"></line><line x1="9" y1="8" x2="15" y2="8"></line><line x1="17" y1="16" x2="23" y2="16"></line>',smartphone:'<rect x="5" y="2" width="14" height="20" rx="2" ry="2"></rect><line x1="12" y1="18" x2="12" y2="18"></line>',smile:'<circle cx="12" cy="12" r="10"></circle><path d="M8 14s1.5 2 4 2 4-2 4-2"></path><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>',speaker:'<rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><circle cx="12" cy="14" r="4"></circle><line x1="12" y1="6" x2="12" y2="6"></line>',square:'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>',star:'<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>',"stop-circle":'<circle cx="12" cy="12" r="10"></circle><rect x="9" y="9" width="6" height="6"></rect>',sun:'<circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>',sunrise:'<path d="M17 18a5 5 0 0 0-10 0"></path><line x1="12" y1="2" x2="12" y2="9"></line><line x1="4.22" y1="10.22" x2="5.64" y2="11.64"></line><line x1="1" y1="18" x2="3" y2="18"></line><line x1="21" y1="18" x2="23" y2="18"></line><line x1="18.36" y1="11.64" x2="19.78" y2="10.22"></line><line x1="23" y1="22" x2="1" y2="22"></line><polyline points="8 6 12 2 16 6"></polyline>',sunset:'<path d="M17 18a5 5 0 0 0-10 0"></path><line x1="12" y1="9" x2="12" y2="2"></line><line x1="4.22" y1="10.22" x2="5.64" y2="11.64"></line><line x1="1" y1="18" x2="3" y2="18"></line><line x1="21" y1="18" x2="23" y2="18"></line><line x1="18.36" y1="11.64" x2="19.78" y2="10.22"></line><line x1="23" y1="22" x2="1" y2="22"></line><polyline points="16 5 12 9 8 5"></polyline>',tablet:'<rect x="4" y="2" width="16" height="20" rx="2" ry="2" transform="rotate(180 12 12)"></rect><line x1="12" y1="18" x2="12" y2="18"></line>',tag:'<path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7" y2="7"></line>',target:'<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="6"></circle><circle cx="12" cy="12" r="2"></circle>',terminal:'<polyline points="4 17 10 11 4 5"></polyline><line x1="12" y1="19" x2="20" y2="19"></line>',thermometer:'<path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path>',"thumbs-down":'<path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path>',"thumbs-up":'<path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path>',"toggle-left":'<rect x="1" y="5" width="22" height="14" rx="7" ry="7"></rect><circle cx="8" cy="12" r="3"></circle>',"toggle-right":'<rect x="1" y="5" width="22" height="14" rx="7" ry="7"></rect><circle cx="16" cy="12" r="3"></circle>',"trash-2":'<polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line>',trash:'<polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path>',trello:'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><rect x="7" y="7" width="3" height="9"></rect><rect x="14" y="7" width="3" height="5"></rect>',"trending-down":'<polyline points="23 18 13.5 8.5 8.5 13.5 1 6"></polyline><polyline points="17 18 23 18 23 12"></polyline>',"trending-up":'<polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline><polyline points="17 6 23 6 23 12"></polyline>',triangle:'<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path>',truck:'<rect x="1" y="3" width="15" height="13"></rect><polygon points="16 8 20 8 23 11 23 16 16 16 16 8"></polygon><circle cx="5.5" cy="18.5" r="2.5"></circle><circle cx="18.5" cy="18.5" r="2.5"></circle>',tv:'<rect x="2" y="7" width="20" height="15" rx="2" ry="2"></rect><polyline points="17 2 12 7 7 2"></polyline>',twitter:'<path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path>',type:'<polyline points="4 7 4 4 20 4 20 7"></polyline><line x1="9" y1="20" x2="15" y2="20"></line><line x1="12" y1="4" x2="12" y2="20"></line>',umbrella:'<path d="M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7"></path>',underline:'<path d="M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3"></path><line x1="4" y1="21" x2="20" y2="21"></line>',unlock:'<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 9.9-1"></path>',"upload-cloud":'<polyline points="16 16 12 12 8 16"></polyline><line x1="12" y1="12" x2="12" y2="21"></line><path d="M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3"></path><polyline points="16 16 12 12 8 16"></polyline>',upload:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="17 8 12 3 7 8"></polyline><line x1="12" y1="3" x2="12" y2="15"></line>',"user-check":'<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><polyline points="17 11 19 13 23 9"></polyline>',"user-minus":'<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="23" y1="11" x2="17" y2="11"></line>',"user-plus":'<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="20" y1="8" x2="20" y2="14"></line><line x1="23" y1="11" x2="17" y2="11"></line>',"user-x":'<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="18" y1="8" x2="23" y2="13"></line><line x1="23" y1="8" x2="18" y2="13"></line>',user:'<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle>',users:'<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path>',"video-off":'<path d="M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10"></path><line x1="1" y1="1" x2="23" y2="23"></line>',video:'<polygon points="23 7 16 12 23 17 23 7"></polygon><rect x="1" y="5" width="15" height="14" rx="2" ry="2"></rect>',voicemail:'<circle cx="5.5" cy="11.5" r="4.5"></circle><circle cx="18.5" cy="11.5" r="4.5"></circle><line x1="5.5" y1="16" x2="18.5" y2="16"></line>',"volume-1":'<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M15.54 8.46a5 5 0 0 1 0 7.07"></path>',"volume-2":'<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07"></path>',"volume-x":'<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><line x1="23" y1="9" x2="17" y2="15"></line><line x1="17" y1="9" x2="23" y2="15"></line>',volume:'<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon>',watch:'<circle cx="12" cy="12" r="7"></circle><polyline points="12 9 12 12 13.5 13.5"></polyline><path d="M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83"></path>',"wifi-off":'<line x1="1" y1="1" x2="23" y2="23"></line><path d="M16.72 11.06A10.94 10.94 0 0 1 19 12.55"></path><path d="M5 12.55a10.94 10.94 0 0 1 5.17-2.39"></path><path d="M10.71 5.05A16 16 0 0 1 22.58 9"></path><path d="M1.42 9a15.91 15.91 0 0 1 4.7-2.88"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12" y2="20"></line>',wifi:'<path d="M5 12.55a11 11 0 0 1 14.08 0"></path><path d="M1.42 9a16 16 0 0 1 21.16 0"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12" y2="20"></line>',wind:'<path d="M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2"></path>',"x-circle":'<circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line>',"x-octagon":'<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line>',"x-square":'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="9" x2="15" y2="15"></line><line x1="15" y1="9" x2="9" y2="15"></line>',x:'<line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line>',youtube:'<path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z"></path><polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"></polygon>',"zap-off":'<polyline points="12.41 6.75 13 2 10.57 4.92"></polyline><polyline points="18.57 12.91 21 10 15.66 10"></polyline><polyline points="8 8 3 14 12 14 11 22 16 16"></polyline><line x1="1" y1="1" x2="23" y2="23"></line>',zap:'<polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon>',"zoom-in":'<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line>',"zoom-out":'<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="8" y1="11" x2="14" y2="11"></line>'}},function(e){e.exports={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var i=arguments[n];for(var l in i)Object.prototype.hasOwnProperty.call(i,l)&&(e[l]=i[l])}return e},t=function(){function e(e,n){for(var i=0;i<n.length;i++){var l=n[i];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(n,i,l){return i&&e(n.prototype,i),l&&e(n,l),n}}(),r=a(i(16)),o=a(i(34));function a(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(n,i){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.name=n,this.contents=i,this.tags=t,this.attrs=l({},o.default,{class:"feather feather-"+n})}return t(e,[{key:"toSvg",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"<svg "+function(e){return Object.keys(e).map(function(n){return n+'="'+e[n]+'"'}).join(" ")}(l({},this.attrs,e,{class:(0,r.default)(this.attrs.class,e.class)}))+">"+this.contents+"</svg>"}},{key:"toString",value:function(){return this.contents}}]),e}();n.default=c},function(e,n,i){"use strict";var l=o(i(8)),t=o(i(31)),r=o(i(30));function o(e){return e&&e.__esModule?e:{default:e}}e.exports={icons:l.default,toSvg:t.default,replace:r.default}},function(e,n,i){var l=i(0)("iterator"),t=!1;try{var r=[7][l]();r.return=function(){t=!0},Array.from(r,function(){throw 2})}catch(e){}e.exports=function(e,n){if(!n&&!t)return!1;var i=!1;try{var r=[7],o=r[l]();o.next=function(){return{done:i=!0}},r[l]=function(){return o},e(r)}catch(e){}return i}},function(e,n,i){var l=i(22),t=i(0)("toStringTag"),r="Arguments"==l(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),t))?i:r?l(n):"Object"==(o=l(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){var l=i(38),t=i(0)("iterator"),r=i(10);e.exports=i(2).getIteratorMethod=function(e){if(void 0!=e)return e[t]||e["@@iterator"]||r[l(e)]}},function(e,n,i){"use strict";var l=i(6),t=i(12);e.exports=function(e,n,i){n in e?l.f(e,n,t(0,i)):e[n]=i}},function(e,n,i){var l=i(10),t=i(0)("iterator"),r=Array.prototype;e.exports=function(e){return void 0!==e&&(l.Array===e||r[t]===e)}},function(e,n,i){var l=i(5);e.exports=function(e,n,i,t){try{return t?n(l(i)[0],i[1]):n(i)}catch(n){var r=e.return;throw void 0!==r&&l(r.call(e)),n}}},function(e,n,i){"use strict";var l=i(24),t=i(28),r=i(17),o=i(42),a=i(41),c=i(21),y=i(40),p=i(39);t(t.S+t.F*!i(37)(function(e){Array.from(e)}),"Array",{from:function(e){var n,i,t,h,x=r(e),s="function"==typeof this?this:Array,u=arguments.length,d=u>1?arguments[1]:void 0,f=void 0!==d,v=0,g=p(x);if(f&&(d=l(d,u>2?arguments[2]:void 0,2)),void 0==g||s==Array&&a(g))for(i=new s(n=c(x.length));n>v;v++)y(i,v,f?d(x[v],v):x[v]);else for(h=g.call(x),i=new s;!(t=h.next()).done;v++)y(i,v,f?o(h,d,[t.value,v],!0):t.value);return i.length=v,i}})},function(e,n,i){var l=i(3),t=i(17),r=i(9)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=t(e),l(e,r)?e[r]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},function(e,n,i){var l=i(1).document;e.exports=l&&l.documentElement},function(e,n,i){var l=i(15),t=Math.max,r=Math.min;e.exports=function(e,n){return(e=l(e))<0?t(e+n,0):r(e,n)}},function(e,n,i){var l=i(23),t=i(21),r=i(46);e.exports=function(e){return function(n,i,o){var a,c=l(n),y=t(c.length),p=r(o,y);if(e&&i!=i){for(;y>p;)if((a=c[p++])!=a)return!0}else for(;y>p;p++)if((e||p in c)&&c[p]===i)return e||p||0;return!e&&-1}}},function(e,n,i){var l=i(22);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==l(e)?e.split(""):Object(e)}},function(e,n,i){var l=i(3),t=i(23),r=i(47)(!1),o=i(9)("IE_PROTO");e.exports=function(e,n){var i,a=t(e),c=0,y=[];for(i in a)i!=o&&l(a,i)&&y.push(i);for(;n.length>c;)l(a,i=n[c++])&&(~r(y,i)||y.push(i));return y}},function(e,n,i){var l=i(49),t=i(19);e.exports=Object.keys||function(e){return l(e,t)}},function(e,n,i){var l=i(6),t=i(5),r=i(50);e.exports=i(4)?Object.defineProperties:function(e,n){t(e);for(var i,o=r(n),a=o.length,c=0;a>c;)l.f(e,i=o[c++],n[i]);return e}},function(e,n,i){var l=i(5),t=i(51),r=i(19),o=i(9)("IE_PROTO"),a=function(){},c=function(){var e,n=i(26)("iframe"),l=r.length;for(n.style.display="none",i(45).appendChild(n),n.src="javascript:",(e=n.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),c=e.F;l--;)delete c.prototype[r[l]];return c()};e.exports=Object.create||function(e,n){var i;return null!==e?(a.prototype=l(e),i=new a,a.prototype=null,i[o]=e):i=c(),void 0===n?i:t(i,n)}},function(e,n,i){"use strict";var l=i(52),t=i(12),r=i(18),o={};i(7)(o,i(0)("iterator"),function(){return this}),e.exports=function(e,n,i){e.prototype=l(o,{next:t(1,i)}),r(e,n+" Iterator")}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,n,i){var l=i(13);e.exports=function(e,n){if(!l(e))return e;var i,t;if(n&&"function"==typeof(i=e.toString)&&!l(t=i.call(e)))return t;if("function"==typeof(i=e.valueOf)&&!l(t=i.call(e)))return t;if(!n&&"function"==typeof(i=e.toString)&&!l(t=i.call(e)))return t;throw TypeError("Can't convert object to primitive value")}},function(e,n,i){e.exports=!i(4)&&!i(27)(function(){return 7!=Object.defineProperty(i(26)("div"),"a",{get:function(){return 7}}).a})},function(e,n,i){"use strict";var l=i(29),t=i(28),r=i(25),o=i(7),a=i(10),c=i(53),y=i(18),p=i(44),h=i(0)("iterator"),x=!([].keys&&"next"in[].keys()),s=function(){return this};e.exports=function(e,n,i,u,d,f,v){c(i,n,u);var g,m,M,w=function(e){if(!x&&e in k)return k[e];switch(e){case"keys":case"values":return function(){return new i(this,e)}}return function(){return new i(this,e)}},b=n+" Iterator",z="values"==d,A=!1,k=e.prototype,H=k[h]||k["@@iterator"]||d&&k[d],V=H||w(d),j=d?z?w("entries"):V:void 0,O="Array"==n&&k.entries||H;if(O&&(M=p(O.call(new e)))!==Object.prototype&&M.next&&(y(M,b,!0),l||"function"==typeof M[h]||o(M,h,s)),z&&H&&"values"!==H.name&&(A=!0,V=function(){return H.call(this)}),l&&!v||!x&&!A&&k[h]||o(k,h,V),a[n]=V,a[b]=s,d)if(g={values:z?V:w("values"),keys:f?V:w("keys"),entries:j},v)for(m in g)m in k||r(k,m,g[m]);else t(t.P+t.F*(x||A),n,g);return g}},function(e,n,i){var l=i(15),t=i(14);e.exports=function(e){return function(n,i){var r,o,a=String(t(n)),c=l(i),y=a.length;return c<0||c>=y?e?"":void 0:(r=a.charCodeAt(c))<55296||r>56319||c+1===y||(o=a.charCodeAt(c+1))<56320||o>57343?e?a.charAt(c):r:e?a.slice(c,c+2):o-56320+(r-55296<<10)+65536}}},function(e,n,i){"use strict";var l=i(58)(!0);i(57)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,n=this._t,i=this._i;return i>=n.length?{value:void 0,done:!0}:(e=l(n,i),this._i+=e.length,{value:e,done:!1})})},function(e,n,i){i(59),i(43),e.exports=i(2).Array.from},function(e,n,i){i(60),e.exports=i(36)}])});
+//# sourceMappingURL=feather.min.js.map
+
+/* Waves Effect */
+!function(t,e){"use strict";"function"==typeof define&&define.amd?define([],function(){return t.Waves=e.call(t),t.Waves}):"object"==typeof exports?module.exports=e.call(t):t.Waves=e.call(t)}("object"==typeof global?global:this,function(){"use strict";function t(t){return null!==t&&t===t.window}function e(e){return t(e)?e:9===e.nodeType&&e.defaultView}function n(t){var e=typeof t;return"function"===e||"object"===e&&!!t}function o(t){return n(t)&&t.nodeType>0}function a(t){var e=f.call(t);return"[object String]"===e?d(t):n(t)&&/^\[object (Array|HTMLCollection|NodeList|Object)\]$/.test(e)&&t.hasOwnProperty("length")?t:o(t)?[t]:[]}function i(t){var n,o,a={top:0,left:0},i=t&&t.ownerDocument;return n=i.documentElement,void 0!==t.getBoundingClientRect&&(a=t.getBoundingClientRect()),o=e(i),{top:a.top+o.pageYOffset-n.clientTop,left:a.left+o.pageXOffset-n.clientLeft}}function r(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e+=n+":"+t[n]+";");return e}function s(t,e,n){if(n){n.classList.remove("waves-rippling");var o=n.getAttribute("data-x"),a=n.getAttribute("data-y"),i=n.getAttribute("data-scale"),s=n.getAttribute("data-translate"),u=350-(Date.now()-Number(n.getAttribute("data-hold")));u<0&&(u=0),"mousemove"===t.type&&(u=150);var c="mousemove"===t.type?2500:v.duration;setTimeout(function(){var t={top:a+"px",left:o+"px",opacity:"0","-webkit-transition-duration":c+"ms","-moz-transition-duration":c+"ms","-o-transition-duration":c+"ms","transition-duration":c+"ms","-webkit-transform":i+" "+s,"-moz-transform":i+" "+s,"-ms-transform":i+" "+s,"-o-transform":i+" "+s,transform:i+" "+s};n.setAttribute("style",r(t)),setTimeout(function(){try{e.removeChild(n)}catch(t){return!1}},c)},u)}}function u(t){if(!1===h.allowEvent(t))return null;for(var e=null,n=t.target||t.srcElement;n.parentElement;){if(!(n instanceof SVGElement)&&n.classList.contains("waves-effect")){e=n;break}n=n.parentElement}return e}function c(t){var e=u(t);if(null!==e){if(e.disabled||e.getAttribute("disabled")||e.classList.contains("disabled"))return;if(h.registerEvent(t),"touchstart"===t.type&&v.delay){var n=!1,o=setTimeout(function(){o=null,v.show(t,e)},v.delay),a=function(a){o&&(clearTimeout(o),o=null,v.show(t,e)),n||(n=!0,v.hide(a,e)),r()},i=function(t){o&&(clearTimeout(o),o=null),a(t),r()};e.addEventListener("touchmove",i,!1),e.addEventListener("touchend",a,!1),e.addEventListener("touchcancel",a,!1);var r=function(){e.removeEventListener("touchmove",i),e.removeEventListener("touchend",a),e.removeEventListener("touchcancel",a)}}else v.show(t,e),m&&(e.addEventListener("touchend",v.hide,!1),e.addEventListener("touchcancel",v.hide,!1)),e.addEventListener("mouseup",v.hide,!1),e.addEventListener("mouseleave",v.hide,!1)}}var l=l||{},d=document.querySelectorAll.bind(document),f=Object.prototype.toString,m="ontouchstart"in window,v={duration:750,delay:200,show:function(t,e,n){if(2===t.button)return!1;e=e||this;var o=document.createElement("div");o.className="waves-ripple waves-rippling",e.appendChild(o);var a=i(e),s=0,u=0;"touches"in t&&t.touches.length?(s=t.touches[0].pageY-a.top,u=t.touches[0].pageX-a.left):(s=t.pageY-a.top,u=t.pageX-a.left),u=u>=0?u:0,s=s>=0?s:0;var c="scale("+e.clientWidth/100*3+")",l="translate(0,0)";n&&(l="translate("+n.x+"px, "+n.y+"px)"),o.setAttribute("data-hold",Date.now()),o.setAttribute("data-x",u),o.setAttribute("data-y",s),o.setAttribute("data-scale",c),o.setAttribute("data-translate",l);var d={top:s+"px",left:u+"px"};o.classList.add("waves-notransition"),o.setAttribute("style",r(d)),o.classList.remove("waves-notransition"),d["-webkit-transform"]=c+" "+l,d["-moz-transform"]=c+" "+l,d["-ms-transform"]=c+" "+l,d["-o-transform"]=c+" "+l,d.transform=c+" "+l,d.opacity="1";var f="mousemove"===t.type?2500:v.duration;d["-webkit-transition-duration"]=f+"ms",d["-moz-transition-duration"]=f+"ms",d["-o-transition-duration"]=f+"ms",d["transition-duration"]=f+"ms",o.setAttribute("style",r(d))},hide:function(t,e){for(var n=(e=e||this).getElementsByClassName("waves-rippling"),o=0,a=n.length;o<a;o++)s(t,e,n[o]);m&&(e.removeEventListener("touchend",v.hide),e.removeEventListener("touchcancel",v.hide)),e.removeEventListener("mouseup",v.hide),e.removeEventListener("mouseleave",v.hide)}},p={input:function(t){var e=t.parentNode;if("i"!==e.tagName.toLowerCase()||!e.classList.contains("waves-effect")){var n=document.createElement("i");n.className=t.className+" waves-input-wrapper",t.className="waves-button-input",e.replaceChild(n,t),n.appendChild(t);var o=window.getComputedStyle(t,null),a=o.color,i=o.backgroundColor;n.setAttribute("style","color:"+a+";background:"+i),t.setAttribute("style","background-color:rgba(0,0,0,0);")}},img:function(t){var e=t.parentNode;if("i"!==e.tagName.toLowerCase()||!e.classList.contains("waves-effect")){var n=document.createElement("i");e.replaceChild(n,t),n.appendChild(t)}}},h={touches:0,allowEvent:function(t){var e=!0;return/^(mousedown|mousemove)$/.test(t.type)&&h.touches&&(e=!1),e},registerEvent:function(t){var e=t.type;"touchstart"===e?h.touches+=1:/^(touchend|touchcancel)$/.test(e)&&setTimeout(function(){h.touches&&(h.touches-=1)},500)}};return l.init=function(t){var e=document.body;"duration"in(t=t||{})&&(v.duration=t.duration),"delay"in t&&(v.delay=t.delay),m&&(e.addEventListener("touchstart",c,!1),e.addEventListener("touchcancel",h.registerEvent,!1),e.addEventListener("touchend",h.registerEvent,!1)),e.addEventListener("mousedown",c,!1)},l.attach=function(t,e){t=a(t),"[object Array]"===f.call(e)&&(e=e.join(" ")),e=e?" "+e:"";for(var n,o,i=0,r=t.length;i<r;i++)o=(n=t[i]).tagName.toLowerCase(),-1!==["input","img"].indexOf(o)&&(p[o](n),n=n.parentElement),-1===n.className.indexOf("waves-effect")&&(n.className+=" waves-effect"+e)},l.ripple=function(t,e){var n=(t=a(t)).length;if(e=e||{},e.wait=e.wait||0,e.position=e.position||null,n)for(var o,r,s,u={},c=0,l={type:"mousedown",button:1};c<n;c++)if(o=t[c],r=e.position||{x:o.clientWidth/2,y:o.clientHeight/2},s=i(o),u.x=s.left+r.x,u.y=s.top+r.y,l.pageX=u.x,l.pageY=u.y,v.show(l,o),e.wait>=0&&null!==e.wait){var d={type:"mouseup",button:1};setTimeout(function(t,e){return function(){v.hide(t,e)}}(d,o),e.wait)}},l.calm=function(t){for(var e={type:"mouseup",button:1},n=0,o=(t=a(t)).length;n<o;n++)v.hide(e,t[n])},l.displayEffect=function(t){l.init(t)},l});
+//# sourceMappingURL=waves.min.js.map
+
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(t){if(n[t])return n[t].exports;var l=n[t]={i:t,l:!1,exports:{}};return e[t].call(l.exports,l,l.exports,i),l.l=!0,l.exports}return i.m=e,i.c=n,i.d=function(e,n,t){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=80)}([function(e,n,i){(function(n){var i="object",t=function(e){return e&&e.Math==Math&&e};e.exports=t(typeof globalThis==i&&globalThis)||t(typeof window==i&&window)||t(typeof self==i&&self)||t(typeof n==i&&n)||Function("return this")()}).call(this,i(75))},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n,i){var t=i(0),l=i(11),r=i(33),o=i(62),a=t.Symbol,c=l("wks");e.exports=function(e){return c[e]||(c[e]=o&&a[e]||(o?a:r)("Symbol."+e))}},function(e,n,i){var t=i(6);e.exports=function(e){if(!t(e))throw TypeError(String(e)+" is not an object");return e}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n,i){var t=i(8),l=i(7),r=i(10);e.exports=t?function(e,n,i){return l.f(e,n,r(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n,i){var t=i(8),l=i(35),r=i(3),o=i(18),a=Object.defineProperty;n.f=t?a:function(e,n,i){if(r(e),n=o(n,!0),r(i),l)try{return a(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){var t=i(4);e.exports=!t(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n){e.exports={}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n,i){var t=i(0),l=i(19),r=i(17),o=t["__core-js_shared__"]||l("__core-js_shared__",{});(e.exports=function(e,n){return o[e]||(o[e]=void 0!==n?n:{})})("versions",[]).push({version:"3.1.3",mode:r?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=o(i(43)),l=o(i(41)),r=o(i(40));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(l.default).map(function(e){return new t.default(e,l.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,n,i){var t=i(72),l=i(20);e.exports=function(e){return t(l(e))}},function(e,n){e.exports={}},function(e,n,i){var t=i(11),l=i(33),r=t("keys");e.exports=function(e){return r[e]||(r[e]=l(e))}},function(e,n){e.exports=!1},function(e,n,i){var t=i(6);e.exports=function(e,n){if(!t(e))return e;var i,l;if(n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;if("function"==typeof(i=e.valueOf)&&!t(l=i.call(e)))return l;if(!n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;throw TypeError("Can't convert object to primitive value")}},function(e,n,i){var t=i(0),l=i(5);e.exports=function(e,n){try{l(t,e,n)}catch(i){t[e]=n}return n}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n){var i=Math.ceil,t=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?t:i)(e)}},function(e,n,i){var t;
+    /*!
+      Copyright (c) 2016 Jed Watson.
+      Licensed under the MIT License (MIT), see
+      http://jedwatson.github.io/classnames
+    */
+    /*!
+      Copyright (c) 2016 Jed Watson.
+      Licensed under the MIT License (MIT), see
+      http://jedwatson.github.io/classnames
+    */
+    !function(){"use strict";var i=function(){function e(){}function n(e,n){for(var i=n.length,t=0;t<i;++t)l(e,n[t])}e.prototype=Object.create(null);var i={}.hasOwnProperty;var t=/\s+/;function l(e,l){if(l){var r=typeof l;"string"===r?function(e,n){for(var i=n.split(t),l=i.length,r=0;r<l;++r)e[i[r]]=!0}(e,l):Array.isArray(l)?n(e,l):"object"===r?function(e,n){for(var t in n)i.call(n,t)&&(e[t]=!!n[t])}(e,l):"number"===r&&function(e,n){e[n]=!0}(e,l)}}return function(){for(var i=arguments.length,t=Array(i),l=0;l<i;l++)t[l]=arguments[l];var r=new e;n(r,t);var o=[];for(var a in r)r[a]&&o.push(a);return o.join(" ")}}();void 0!==e&&e.exports?e.exports=i:void 0===(t=function(){return i}.apply(n,[]))||(e.exports=t)}()},function(e,n,i){var t=i(7).f,l=i(1),r=i(2)("toStringTag");e.exports=function(e,n,i){e&&!l(e=i?e:e.prototype,r)&&t(e,r,{configurable:!0,value:n})}},function(e,n,i){var t=i(20);e.exports=function(e){return Object(t(e))}},function(e,n,i){var t=i(1),l=i(24),r=i(16),o=i(63),a=r("IE_PROTO"),c=Object.prototype;e.exports=o?Object.getPrototypeOf:function(e){return e=l(e),t(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?c:null}},function(e,n,i){"use strict";var t,l,r,o=i(25),a=i(5),c=i(1),p=i(2),y=i(17),h=p("iterator"),x=!1;[].keys&&("next"in(r=[].keys())?(l=o(o(r)))!==Object.prototype&&(t=l):x=!0),void 0==t&&(t={}),y||c(t,h)||a(t,h,function(){return this}),e.exports={IteratorPrototype:t,BUGGY_SAFARI_ITERATORS:x}},function(e,n,i){var t=i(21),l=Math.min;e.exports=function(e){return e>0?l(t(e),9007199254740991):0}},function(e,n,i){var t=i(1),l=i(14),r=i(68),o=i(15),a=r(!1);e.exports=function(e,n){var i,r=l(e),c=0,p=[];for(i in r)!t(o,i)&&t(r,i)&&p.push(i);for(;n.length>c;)t(r,i=n[c++])&&(~a(p,i)||p.push(i));return p}},function(e,n,i){var t=i(0),l=i(11),r=i(5),o=i(1),a=i(19),c=i(36),p=i(37),y=p.get,h=p.enforce,x=String(c).split("toString");l("inspectSource",function(e){return c.call(e)}),(e.exports=function(e,n,i,l){var c=!!l&&!!l.unsafe,p=!!l&&!!l.enumerable,y=!!l&&!!l.noTargetGet;"function"==typeof i&&("string"!=typeof n||o(i,"name")||r(i,"name",n),h(i).source=x.join("string"==typeof n?n:"")),e!==t?(c?!y&&e[n]&&(p=!0):delete e[n],p?e[n]=i:r(e,n,i)):p?e[n]=i:a(n,i)})(Function.prototype,"toString",function(){return"function"==typeof this&&y(this).source||c.call(this)})},function(e,n){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,n,i){var t=i(8),l=i(73),r=i(10),o=i(14),a=i(18),c=i(1),p=i(35),y=Object.getOwnPropertyDescriptor;n.f=t?y:function(e,n){if(e=o(e),n=a(n,!0),p)try{return y(e,n)}catch(e){}if(c(e,n))return r(!l.f.call(e,n),e[n])}},function(e,n,i){var t=i(0),l=i(31).f,r=i(5),o=i(29),a=i(19),c=i(71),p=i(65);e.exports=function(e,n){var i,y,h,x,s,u=e.target,d=e.global,f=e.stat;if(i=d?t:f?t[u]||a(u,{}):(t[u]||{}).prototype)for(y in n){if(x=n[y],h=e.noTargetGet?(s=l(i,y))&&s.value:i[y],!p(d?y:u+(f?".":"#")+y,e.forced)&&void 0!==h){if(typeof x==typeof h)continue;c(x,h)}(e.sham||h&&h.sham)&&r(x,"sham",!0),o(i,y,x,e)}}},function(e,n){var i=0,t=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+t).toString(36))}},function(e,n,i){var t=i(0),l=i(6),r=t.document,o=l(r)&&l(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},function(e,n,i){var t=i(8),l=i(4),r=i(34);e.exports=!t&&!l(function(){return 7!=Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a})},function(e,n,i){var t=i(11);e.exports=t("native-function-to-string",Function.toString)},function(e,n,i){var t,l,r,o=i(76),a=i(0),c=i(6),p=i(5),y=i(1),h=i(16),x=i(15),s=a.WeakMap;if(o){var u=new s,d=u.get,f=u.has,v=u.set;t=function(e,n){return v.call(u,e,n),n},l=function(e){return d.call(u,e)||{}},r=function(e){return f.call(u,e)}}else{var g=h("state");x[g]=!0,t=function(e,n){return p(e,g,n),n},l=function(e){return y(e,g)?e[g]:{}},r=function(e){return y(e,g)}}e.exports={set:t,get:l,has:r,enforce:function(e){return r(e)?l(e):t(e,{})},getterFor:function(e){return function(n){var i;if(!c(n)||(i=l(n)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return i}}}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var i=arguments[n];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t])}return e},l=o(i(22)),r=o(i(12));function o(e){return e&&e.__esModule?e:{default:e}}n.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"==typeof document)throw new Error("`feather.replace()` only works in a browser environment.");var n=document.querySelectorAll("[data-feather]");Array.from(n).forEach(function(n){return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=function(e){return Array.from(e.attributes).reduce(function(e,n){return e[n.name]=n.value,e},{})}(e),o=i["data-feather"];delete i["data-feather"];var a=r.default[o].toSvg(t({},n,i,{class:(0,l.default)(n.class,i.class)})),c=(new DOMParser).parseFromString(a,"image/svg+xml").querySelector("svg");e.parentNode.replaceChild(c,e)}(n,e)})}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t,l=i(12),r=(t=l)&&t.__esModule?t:{default:t};n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."),!e)throw new Error("The required `key` (icon name) parameter is missing.");if(!r.default[e])throw new Error("No icon matching '"+e+"'. See the complete list of icons at https://feathericons.com");return r.default[e].toSvg(n)}},function(e){e.exports={activity:["pulse","health","action","motion"],airplay:["stream","cast","mirroring"],"alert-circle":["warning"],"alert-octagon":["warning"],"alert-triangle":["warning"],"at-sign":["mention"],award:["achievement","badge"],aperture:["camera","photo"],bell:["alarm","notification"],"bell-off":["alarm","notification","silent"],bluetooth:["wireless"],"book-open":["read"],book:["read","dictionary","booklet","magazine"],bookmark:["read","clip","marker","tag"],briefcase:["work","bag","baggage","folder"],clipboard:["copy"],clock:["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],cloud:["weather"],codepen:["logo"],codesandbox:["logo"],coffee:["drink","cup","mug","tea","cafe","hot","beverage"],command:["keyboard","cmd"],compass:["navigation","safari","travel"],copy:["clone","duplicate"],"corner-down-left":["arrow"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],"credit-card":["purchase","payment","cc"],crop:["photo","image"],crosshair:["aim","target"],database:["storage"],delete:["remove"],disc:["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],droplet:["water"],edit:["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],eye:["view","watch"],"eye-off":["view","watch"],"external-link":["outbound"],facebook:["logo"],"fast-forward":["music"],figma:["logo","design","tool"],film:["movie","video"],"folder-minus":["directory"],"folder-plus":["directory"],folder:["directory"],framer:["logo","design","tool"],frown:["emoji","face","bad","sad","emotion"],gift:["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],github:["logo","version control"],gitlab:["logo","version control"],global:["world","browser","language","translate"],"hard-drive":["computer","server"],hash:["hashtag","number","pound"],headphones:["music","audio"],heart:["like","love"],"help-circle":["question mark"],hexagon:["shape","node.js","logo"],home:["house"],image:["picture"],inbox:["email"],instagram:["logo","camera"],key:["password","login","authentication"],"life-bouy":["help","life ring","support"],linkedin:["logo"],lock:["security","password"],"log-in":["sign in","arrow"],"log-out":["sign out","arrow"],mail:["email"],"map-pin":["location","navigation","travel","marker"],map:["location","navigation","travel"],maximize:["fullscreen"],"maximize-2":["fullscreen","arrows"],meh:["emoji","face","neutral","emotion"],menu:["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record"],mic:["record"],minimize:["exit fullscreen"],"minimize-2":["exit fullscreen","arrows"],monitor:["tv"],moon:["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],move:["arrows"],navigation:["location","travel"],"navigation-2":["location","travel"],octagon:["stop"],package:["box"],paperclip:["attachment"],pause:["music","stop"],"pause-circle":["music","stop"],"pen-tool":["vector","drawing"],play:["music","start"],"play-circle":["music","start"],plus:["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],pocket:["logo","save"],power:["on","off"],radio:["signal"],rewind:["music"],rss:["feed","subscribe"],save:["floppy disk"],search:["find","magnifier","magnifying glass"],send:["message","mail","paper airplane"],settings:["cog","edit","gear","preferences"],shield:["security"],"shield-off":["security"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],shuffle:["music"],"skip-back":["music"],"skip-forward":["music"],slash:["ban","no"],sliders:["settings","controls"],smile:["emoji","face","happy","good","emotion"],speaker:["music"],star:["bookmark","favorite","like"],sun:["brightness","weather","light"],sunrise:["weather"],sunset:["weather"],tag:["label"],target:["bullseye"],terminal:["code","command line"],"thumbs-down":["dislike","bad"],"thumbs-up":["like","good"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],trash:["garbage","delete","remove"],"trash-2":["garbage","delete","remove"],triangle:["delta"],truck:["delivery","van","shipping"],twitter:["logo"],umbrella:["rain","weather"],"video-off":["camera","movie","film"],video:["camera","movie","film"],voicemail:["phone"],volume:["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],watch:["clock","time"],wind:["weather","air"],"x-circle":["cancel","close","delete","remove","times"],"x-octagon":["delete","stop","alert","warning","times"],"x-square":["cancel","close","delete","remove","times"],x:["cancel","close","delete","remove","times"],youtube:["logo","video","play"],"zap-off":["flash","camera","lightning"],zap:["flash","camera","lightning"]}},function(e){e.exports={activity:'<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline>',airplay:'<path d="M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1"></path><polygon points="12 15 17 21 7 21 12 15"></polygon>',"alert-circle":'<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line>',"alert-octagon":'<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line>',"alert-triangle":'<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line>',"align-center":'<line x1="18" y1="10" x2="6" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="18" y1="18" x2="6" y2="18"></line>',"align-justify":'<line x1="21" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="3" y2="18"></line>',"align-left":'<line x1="17" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="17" y1="18" x2="3" y2="18"></line>',"align-right":'<line x1="21" y1="10" x2="7" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="7" y2="18"></line>',anchor:'<circle cx="12" cy="5" r="3"></circle><line x1="12" y1="22" x2="12" y2="8"></line><path d="M5 12H2a10 10 0 0 0 20 0h-3"></path>',aperture:'<circle cx="12" cy="12" r="10"></circle><line x1="14.31" y1="8" x2="20.05" y2="17.94"></line><line x1="9.69" y1="8" x2="21.17" y2="8"></line><line x1="7.38" y1="12" x2="13.12" y2="2.06"></line><line x1="9.69" y1="16" x2="3.95" y2="6.06"></line><line x1="14.31" y1="16" x2="2.83" y2="16"></line><line x1="16.62" y1="12" x2="10.88" y2="21.94"></line>',archive:'<polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line>',"arrow-down-circle":'<circle cx="12" cy="12" r="10"></circle><polyline points="8 12 12 16 16 12"></polyline><line x1="12" y1="8" x2="12" y2="16"></line>',"arrow-down-left":'<line x1="17" y1="7" x2="7" y2="17"></line><polyline points="17 17 7 17 7 7"></polyline>',"arrow-down-right":'<line x1="7" y1="7" x2="17" y2="17"></line><polyline points="17 7 17 17 7 17"></polyline>',"arrow-down":'<line x1="12" y1="5" x2="12" y2="19"></line><polyline points="19 12 12 19 5 12"></polyline>',"arrow-left-circle":'<circle cx="12" cy="12" r="10"></circle><polyline points="12 8 8 12 12 16"></polyline><line x1="16" y1="12" x2="8" y2="12"></line>',"arrow-left":'<line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline>',"arrow-right-circle":'<circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line>',"arrow-right":'<line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline>',"arrow-up-circle":'<circle cx="12" cy="12" r="10"></circle><polyline points="16 12 12 8 8 12"></polyline><line x1="12" y1="16" x2="12" y2="8"></line>',"arrow-up-left":'<line x1="17" y1="17" x2="7" y2="7"></line><polyline points="7 17 7 7 17 7"></polyline>',"arrow-up-right":'<line x1="7" y1="17" x2="17" y2="7"></line><polyline points="7 7 17 7 17 17"></polyline>',"arrow-up":'<line x1="12" y1="19" x2="12" y2="5"></line><polyline points="5 12 12 5 19 12"></polyline>',"at-sign":'<circle cx="12" cy="12" r="4"></circle><path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94"></path>',award:'<circle cx="12" cy="8" r="7"></circle><polyline points="8.21 13.89 7 23 12 20 17 23 15.79 13.88"></polyline>',"bar-chart-2":'<line x1="18" y1="20" x2="18" y2="10"></line><line x1="12" y1="20" x2="12" y2="4"></line><line x1="6" y1="20" x2="6" y2="14"></line>',"bar-chart":'<line x1="12" y1="20" x2="12" y2="10"></line><line x1="18" y1="20" x2="18" y2="4"></line><line x1="6" y1="20" x2="6" y2="16"></line>',"battery-charging":'<path d="M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19"></path><line x1="23" y1="13" x2="23" y2="11"></line><polyline points="11 6 7 12 13 12 9 18"></polyline>',battery:'<rect x="1" y="6" width="18" height="12" rx="2" ry="2"></rect><line x1="23" y1="13" x2="23" y2="11"></line>',"bell-off":'<path d="M13.73 21a2 2 0 0 1-3.46 0"></path><path d="M18.63 13A17.89 17.89 0 0 1 18 8"></path><path d="M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14"></path><path d="M18 8a6 6 0 0 0-9.33-5"></path><line x1="1" y1="1" x2="23" y2="23"></line>',bell:'<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path>',bluetooth:'<polyline points="6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5"></polyline>',bold:'<path d="M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"></path><path d="M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"></path>',"book-open":'<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path>',book:'<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path>',bookmark:'<path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"></path>',box:'<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>',briefcase:'<rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path>',calendar:'<rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line>',"camera-off":'<line x1="1" y1="1" x2="23" y2="23"></line><path d="M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56"></path>',camera:'<path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"></path><circle cx="12" cy="13" r="4"></circle>',cast:'<path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path><line x1="2" y1="20" x2="2.01" y2="20"></line>',"check-circle":'<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline>',"check-square":'<polyline points="9 11 12 14 22 4"></polyline><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path>',check:'<polyline points="20 6 9 17 4 12"></polyline>',"chevron-down":'<polyline points="6 9 12 15 18 9"></polyline>',"chevron-left":'<polyline points="15 18 9 12 15 6"></polyline>',"chevron-right":'<polyline points="9 18 15 12 9 6"></polyline>',"chevron-up":'<polyline points="18 15 12 9 6 15"></polyline>',"chevrons-down":'<polyline points="7 13 12 18 17 13"></polyline><polyline points="7 6 12 11 17 6"></polyline>',"chevrons-left":'<polyline points="11 17 6 12 11 7"></polyline><polyline points="18 17 13 12 18 7"></polyline>',"chevrons-right":'<polyline points="13 17 18 12 13 7"></polyline><polyline points="6 17 11 12 6 7"></polyline>',"chevrons-up":'<polyline points="17 11 12 6 7 11"></polyline><polyline points="17 18 12 13 7 18"></polyline>',chrome:'<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="21.17" y1="8" x2="12" y2="8"></line><line x1="3.95" y1="6.06" x2="8.54" y2="14"></line><line x1="10.88" y1="21.94" x2="15.46" y2="14"></line>',circle:'<circle cx="12" cy="12" r="10"></circle>',clipboard:'<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect>',clock:'<circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline>',"cloud-drizzle":'<line x1="8" y1="19" x2="8" y2="21"></line><line x1="8" y1="13" x2="8" y2="15"></line><line x1="16" y1="19" x2="16" y2="21"></line><line x1="16" y1="13" x2="16" y2="15"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="12" y1="15" x2="12" y2="17"></line><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"></path>',"cloud-lightning":'<path d="M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9"></path><polyline points="13 11 9 17 15 17 11 23"></polyline>',"cloud-off":'<path d="M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3"></path><line x1="1" y1="1" x2="23" y2="23"></line>',"cloud-rain":'<line x1="16" y1="13" x2="16" y2="21"></line><line x1="8" y1="13" x2="8" y2="21"></line><line x1="12" y1="15" x2="12" y2="23"></line><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"></path>',"cloud-snow":'<path d="M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25"></path><line x1="8" y1="16" x2="8.01" y2="16"></line><line x1="8" y1="20" x2="8.01" y2="20"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="12" y1="22" x2="12.01" y2="22"></line><line x1="16" y1="16" x2="16.01" y2="16"></line><line x1="16" y1="20" x2="16.01" y2="20"></line>',cloud:'<path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"></path>',code:'<polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline>',codepen:'<polygon points="12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2"></polygon><line x1="12" y1="22" x2="12" y2="15.5"></line><polyline points="22 8.5 12 15.5 2 8.5"></polyline><polyline points="2 15.5 12 8.5 22 15.5"></polyline><line x1="12" y1="2" x2="12" y2="8.5"></line>',codesandbox:'<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="7.5 4.21 12 6.81 16.5 4.21"></polyline><polyline points="7.5 19.79 7.5 14.6 3 12"></polyline><polyline points="21 12 16.5 14.6 16.5 19.79"></polyline><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>',coffee:'<path d="M18 8h1a4 4 0 0 1 0 8h-1"></path><path d="M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z"></path><line x1="6" y1="1" x2="6" y2="4"></line><line x1="10" y1="1" x2="10" y2="4"></line><line x1="14" y1="1" x2="14" y2="4"></line>',columns:'<path d="M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18"></path>',command:'<path d="M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z"></path>',compass:'<circle cx="12" cy="12" r="10"></circle><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"></polygon>',copy:'<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>',"corner-down-left":'<polyline points="9 10 4 15 9 20"></polyline><path d="M20 4v7a4 4 0 0 1-4 4H4"></path>',"corner-down-right":'<polyline points="15 10 20 15 15 20"></polyline><path d="M4 4v7a4 4 0 0 0 4 4h12"></path>',"corner-left-down":'<polyline points="14 15 9 20 4 15"></polyline><path d="M20 4h-7a4 4 0 0 0-4 4v12"></path>',"corner-left-up":'<polyline points="14 9 9 4 4 9"></polyline><path d="M20 20h-7a4 4 0 0 1-4-4V4"></path>',"corner-right-down":'<polyline points="10 15 15 20 20 15"></polyline><path d="M4 4h7a4 4 0 0 1 4 4v12"></path>',"corner-right-up":'<polyline points="10 9 15 4 20 9"></polyline><path d="M4 20h7a4 4 0 0 0 4-4V4"></path>',"corner-up-left":'<polyline points="9 14 4 9 9 4"></polyline><path d="M20 20v-7a4 4 0 0 0-4-4H4"></path>',"corner-up-right":'<polyline points="15 14 20 9 15 4"></polyline><path d="M4 20v-7a4 4 0 0 1 4-4h12"></path>',cpu:'<rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line>',"credit-card":'<rect x="1" y="4" width="22" height="16" rx="2" ry="2"></rect><line x1="1" y1="10" x2="23" y2="10"></line>',crop:'<path d="M6.13 1L6 16a2 2 0 0 0 2 2h15"></path><path d="M1 6.13L16 6a2 2 0 0 1 2 2v15"></path>',crosshair:'<circle cx="12" cy="12" r="10"></circle><line x1="22" y1="12" x2="18" y2="12"></line><line x1="6" y1="12" x2="2" y2="12"></line><line x1="12" y1="6" x2="12" y2="2"></line><line x1="12" y1="22" x2="12" y2="18"></line>',database:'<ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"></path><path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"></path>',delete:'<path d="M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z"></path><line x1="18" y1="9" x2="12" y2="15"></line><line x1="12" y1="9" x2="18" y2="15"></line>',disc:'<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="3"></circle>',"dollar-sign":'<line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>',"download-cloud":'<polyline points="8 17 12 21 16 17"></polyline><line x1="12" y1="12" x2="12" y2="21"></line><path d="M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29"></path>',download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line>',droplet:'<path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path>',"edit-2":'<path d="M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"></path>',"edit-3":'<path d="M12 20h9"></path><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"></path>',edit:'<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>',"external-link":'<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line>',"eye-off":'<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"></path><line x1="1" y1="1" x2="23" y2="23"></line>',eye:'<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle>',facebook:'<path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path>',"fast-forward":'<polygon points="13 19 22 12 13 5 13 19"></polygon><polygon points="2 19 11 12 2 5 2 19"></polygon>',feather:'<path d="M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z"></path><line x1="16" y1="8" x2="2" y2="22"></line><line x1="17.5" y1="15" x2="9" y2="15"></line>',figma:'<path d="M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z"></path><path d="M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z"></path><path d="M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z"></path><path d="M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z"></path><path d="M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z"></path>',"file-minus":'<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="9" y1="15" x2="15" y2="15"></line>',"file-plus":'<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line>',"file-text":'<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline>',file:'<path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>',film:'<rect x="2" y="2" width="20" height="20" rx="2.18" ry="2.18"></rect><line x1="7" y1="2" x2="7" y2="22"></line><line x1="17" y1="2" x2="17" y2="22"></line><line x1="2" y1="12" x2="22" y2="12"></line><line x1="2" y1="7" x2="7" y2="7"></line><line x1="2" y1="17" x2="7" y2="17"></line><line x1="17" y1="17" x2="22" y2="17"></line><line x1="17" y1="7" x2="22" y2="7"></line>',filter:'<polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"></polygon>',flag:'<path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"></path><line x1="4" y1="22" x2="4" y2="15"></line>',"folder-minus":'<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path><line x1="9" y1="14" x2="15" y2="14"></line>',"folder-plus":'<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path><line x1="12" y1="11" x2="12" y2="17"></line><line x1="9" y1="14" x2="15" y2="14"></line>',folder:'<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path>',framer:'<path d="M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7"></path>',frown:'<circle cx="12" cy="12" r="10"></circle><path d="M16 16s-1.5-2-4-2-4 2-4 2"></path><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>',gift:'<polyline points="20 12 20 22 4 22 4 12"></polyline><rect x="2" y="7" width="20" height="5"></rect><line x1="12" y1="22" x2="12" y2="7"></line><path d="M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z"></path><path d="M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z"></path>',"git-branch":'<line x1="6" y1="3" x2="6" y2="15"></line><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><path d="M18 9a9 9 0 0 1-9 9"></path>',"git-commit":'<circle cx="12" cy="12" r="4"></circle><line x1="1.05" y1="12" x2="7" y2="12"></line><line x1="17.01" y1="12" x2="22.96" y2="12"></line>',"git-merge":'<circle cx="18" cy="18" r="3"></circle><circle cx="6" cy="6" r="3"></circle><path d="M6 21V9a9 9 0 0 0 9 9"></path>',"git-pull-request":'<circle cx="18" cy="18" r="3"></circle><circle cx="6" cy="6" r="3"></circle><path d="M13 6h3a2 2 0 0 1 2 2v7"></path><line x1="6" y1="9" x2="6" y2="21"></line>',github:'<path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path>',gitlab:'<path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path>',globe:'<circle cx="12" cy="12" r="10"></circle><line x1="2" y1="12" x2="22" y2="12"></line><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path>',grid:'<rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect>',"hard-drive":'<line x1="22" y1="12" x2="2" y2="12"></line><path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"></path><line x1="6" y1="16" x2="6.01" y2="16"></line><line x1="10" y1="16" x2="10.01" y2="16"></line>',hash:'<line x1="4" y1="9" x2="20" y2="9"></line><line x1="4" y1="15" x2="20" y2="15"></line><line x1="10" y1="3" x2="8" y2="21"></line><line x1="16" y1="3" x2="14" y2="21"></line>',headphones:'<path d="M3 18v-6a9 9 0 0 1 18 0v6"></path><path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>',heart:'<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>',"help-circle":'<circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line>',hexagon:'<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path>',home:'<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline>',image:'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline>',inbox:'<polyline points="22 12 16 12 14 15 10 15 8 12 2 12"></polyline><path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"></path>',info:'<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line>',instagram:'<rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line>',italic:'<line x1="19" y1="4" x2="10" y2="4"></line><line x1="14" y1="20" x2="5" y2="20"></line><line x1="15" y1="4" x2="9" y2="20"></line>',key:'<path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"></path>',layers:'<polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline>',layout:'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line>',"life-buoy":'<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="4.93" y1="4.93" x2="9.17" y2="9.17"></line><line x1="14.83" y1="14.83" x2="19.07" y2="19.07"></line><line x1="14.83" y1="9.17" x2="19.07" y2="4.93"></line><line x1="14.83" y1="9.17" x2="18.36" y2="5.64"></line><line x1="4.93" y1="19.07" x2="9.17" y2="14.83"></line>',"link-2":'<path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line>',link:'<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>',linkedin:'<path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle>',list:'<line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line>',loader:'<line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line>',lock:'<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path>',"log-in":'<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"></path><polyline points="10 17 15 12 10 7"></polyline><line x1="15" y1="12" x2="3" y2="12"></line>',"log-out":'<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path><polyline points="16 17 21 12 16 7"></polyline><line x1="21" y1="12" x2="9" y2="12"></line>',mail:'<path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline>',"map-pin":'<path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle>',map:'<polygon points="1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6"></polygon><line x1="8" y1="2" x2="8" y2="18"></line><line x1="16" y1="6" x2="16" y2="22"></line>',"maximize-2":'<polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" y1="3" x2="14" y2="10"></line><line x1="3" y1="21" x2="10" y2="14"></line>',maximize:'<path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"></path>',meh:'<circle cx="12" cy="12" r="10"></circle><line x1="8" y1="15" x2="16" y2="15"></line><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>',menu:'<line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line>',"message-circle":'<path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"></path>',"message-square":'<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>',"mic-off":'<line x1="1" y1="1" x2="23" y2="23"></line><path d="M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6"></path><path d="M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23"></path><line x1="12" y1="19" x2="12" y2="23"></line><line x1="8" y1="23" x2="16" y2="23"></line>',mic:'<path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2"></path><line x1="12" y1="19" x2="12" y2="23"></line><line x1="8" y1="23" x2="16" y2="23"></line>',"minimize-2":'<polyline points="4 14 10 14 10 20"></polyline><polyline points="20 10 14 10 14 4"></polyline><line x1="14" y1="10" x2="21" y2="3"></line><line x1="3" y1="21" x2="10" y2="14"></line>',minimize:'<path d="M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3"></path>',"minus-circle":'<circle cx="12" cy="12" r="10"></circle><line x1="8" y1="12" x2="16" y2="12"></line>',"minus-square":'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="8" y1="12" x2="16" y2="12"></line>',minus:'<line x1="5" y1="12" x2="19" y2="12"></line>',monitor:'<rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line>',moon:'<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>',"more-horizontal":'<circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle>',"more-vertical":'<circle cx="12" cy="12" r="1"></circle><circle cx="12" cy="5" r="1"></circle><circle cx="12" cy="19" r="1"></circle>',"mouse-pointer":'<path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z"></path><path d="M13 13l6 6"></path>',move:'<polyline points="5 9 2 12 5 15"></polyline><polyline points="9 5 12 2 15 5"></polyline><polyline points="15 19 12 22 9 19"></polyline><polyline points="19 9 22 12 19 15"></polyline><line x1="2" y1="12" x2="22" y2="12"></line><line x1="12" y1="2" x2="12" y2="22"></line>',music:'<path d="M9 18V5l12-2v13"></path><circle cx="6" cy="18" r="3"></circle><circle cx="18" cy="16" r="3"></circle>',"navigation-2":'<polygon points="12 2 19 21 12 17 5 21 12 2"></polygon>',navigation:'<polygon points="3 11 22 2 13 21 11 13 3 11"></polygon>',octagon:'<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon>',package:'<line x1="16.5" y1="9.4" x2="7.5" y2="4.21"></line><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>',paperclip:'<path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path>',"pause-circle":'<circle cx="12" cy="12" r="10"></circle><line x1="10" y1="15" x2="10" y2="9"></line><line x1="14" y1="15" x2="14" y2="9"></line>',pause:'<rect x="6" y="4" width="4" height="16"></rect><rect x="14" y="4" width="4" height="16"></rect>',"pen-tool":'<path d="M12 19l7-7 3 3-7 7-3-3z"></path><path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"></path><path d="M2 2l7.586 7.586"></path><circle cx="11" cy="11" r="2"></circle>',percent:'<line x1="19" y1="5" x2="5" y2="19"></line><circle cx="6.5" cy="6.5" r="2.5"></circle><circle cx="17.5" cy="17.5" r="2.5"></circle>',"phone-call":'<path d="M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',"phone-forwarded":'<polyline points="19 1 23 5 19 9"></polyline><line x1="15" y1="5" x2="23" y2="5"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',"phone-incoming":'<polyline points="16 2 16 8 22 8"></polyline><line x1="23" y1="1" x2="16" y2="8"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',"phone-missed":'<line x1="23" y1="1" x2="17" y2="7"></line><line x1="17" y1="1" x2="23" y2="7"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',"phone-off":'<path d="M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91"></path><line x1="23" y1="1" x2="1" y2="23"></line>',"phone-outgoing":'<polyline points="23 7 23 1 17 1"></polyline><line x1="16" y1="8" x2="23" y2="1"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',phone:'<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>',"pie-chart":'<path d="M21.21 15.89A10 10 0 1 1 8 2.83"></path><path d="M22 12A10 10 0 0 0 12 2v10z"></path>',"play-circle":'<circle cx="12" cy="12" r="10"></circle><polygon points="10 8 16 12 10 16 10 8"></polygon>',play:'<polygon points="5 3 19 12 5 21 5 3"></polygon>',"plus-circle":'<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line>',"plus-square":'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line>',plus:'<line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line>',pocket:'<path d="M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z"></path><polyline points="8 10 12 14 16 10"></polyline>',power:'<path d="M18.36 6.64a9 9 0 1 1-12.73 0"></path><line x1="12" y1="2" x2="12" y2="12"></line>',printer:'<polyline points="6 9 6 2 18 2 18 9"></polyline><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"></path><rect x="6" y="14" width="12" height="8"></rect>',radio:'<circle cx="12" cy="12" r="2"></circle><path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"></path>',"refresh-ccw":'<polyline points="1 4 1 10 7 10"></polyline><polyline points="23 20 23 14 17 14"></polyline><path d="M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"></path>',"refresh-cw":'<polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path>',repeat:'<polyline points="17 1 21 5 17 9"></polyline><path d="M3 11V9a4 4 0 0 1 4-4h14"></path><polyline points="7 23 3 19 7 15"></polyline><path d="M21 13v2a4 4 0 0 1-4 4H3"></path>',rewind:'<polygon points="11 19 2 12 11 5 11 19"></polygon><polygon points="22 19 13 12 22 5 22 19"></polygon>',"rotate-ccw":'<polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path>',"rotate-cw":'<polyline points="23 4 23 10 17 10"></polyline><path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10"></path>',rss:'<path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle>',save:'<path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"></path><polyline points="17 21 17 13 7 13 7 21"></polyline><polyline points="7 3 7 8 15 8"></polyline>',scissors:'<circle cx="6" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><line x1="20" y1="4" x2="8.12" y2="15.88"></line><line x1="14.47" y1="14.48" x2="20" y2="20"></line><line x1="8.12" y1="8.12" x2="12" y2="12"></line>',search:'<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line>',send:'<line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>',server:'<rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6.01" y2="6"></line><line x1="6" y1="18" x2="6.01" y2="18"></line>',settings:'<circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path>',"share-2":'<circle cx="18" cy="5" r="3"></circle><circle cx="6" cy="12" r="3"></circle><circle cx="18" cy="19" r="3"></circle><line x1="8.59" y1="13.51" x2="15.42" y2="17.49"></line><line x1="15.41" y1="6.51" x2="8.59" y2="10.49"></line>',share:'<path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"></path><polyline points="16 6 12 2 8 6"></polyline><line x1="12" y1="2" x2="12" y2="15"></line>',"shield-off":'<path d="M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18"></path><path d="M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38"></path><line x1="1" y1="1" x2="23" y2="23"></line>',shield:'<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>',"shopping-bag":'<path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"></path><line x1="3" y1="6" x2="21" y2="6"></line><path d="M16 10a4 4 0 0 1-8 0"></path>',"shopping-cart":'<circle cx="9" cy="21" r="1"></circle><circle cx="20" cy="21" r="1"></circle><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"></path>',shuffle:'<polyline points="16 3 21 3 21 8"></polyline><line x1="4" y1="20" x2="21" y2="3"></line><polyline points="21 16 21 21 16 21"></polyline><line x1="15" y1="15" x2="21" y2="21"></line><line x1="4" y1="4" x2="9" y2="9"></line>',sidebar:'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line>',"skip-back":'<polygon points="19 20 9 12 19 4 19 20"></polygon><line x1="5" y1="19" x2="5" y2="5"></line>',"skip-forward":'<polygon points="5 4 15 12 5 20 5 4"></polygon><line x1="19" y1="5" x2="19" y2="19"></line>',slack:'<path d="M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z"></path><path d="M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"></path><path d="M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z"></path><path d="M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z"></path><path d="M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z"></path><path d="M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"></path><path d="M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z"></path><path d="M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z"></path>',slash:'<circle cx="12" cy="12" r="10"></circle><line x1="4.93" y1="4.93" x2="19.07" y2="19.07"></line>',sliders:'<line x1="4" y1="21" x2="4" y2="14"></line><line x1="4" y1="10" x2="4" y2="3"></line><line x1="12" y1="21" x2="12" y2="12"></line><line x1="12" y1="8" x2="12" y2="3"></line><line x1="20" y1="21" x2="20" y2="16"></line><line x1="20" y1="12" x2="20" y2="3"></line><line x1="1" y1="14" x2="7" y2="14"></line><line x1="9" y1="8" x2="15" y2="8"></line><line x1="17" y1="16" x2="23" y2="16"></line>',smartphone:'<rect x="5" y="2" width="14" height="20" rx="2" ry="2"></rect><line x1="12" y1="18" x2="12.01" y2="18"></line>',smile:'<circle cx="12" cy="12" r="10"></circle><path d="M8 14s1.5 2 4 2 4-2 4-2"></path><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>',speaker:'<rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><circle cx="12" cy="14" r="4"></circle><line x1="12" y1="6" x2="12.01" y2="6"></line>',square:'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>',star:'<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>',"stop-circle":'<circle cx="12" cy="12" r="10"></circle><rect x="9" y="9" width="6" height="6"></rect>',sun:'<circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>',sunrise:'<path d="M17 18a5 5 0 0 0-10 0"></path><line x1="12" y1="2" x2="12" y2="9"></line><line x1="4.22" y1="10.22" x2="5.64" y2="11.64"></line><line x1="1" y1="18" x2="3" y2="18"></line><line x1="21" y1="18" x2="23" y2="18"></line><line x1="18.36" y1="11.64" x2="19.78" y2="10.22"></line><line x1="23" y1="22" x2="1" y2="22"></line><polyline points="8 6 12 2 16 6"></polyline>',sunset:'<path d="M17 18a5 5 0 0 0-10 0"></path><line x1="12" y1="9" x2="12" y2="2"></line><line x1="4.22" y1="10.22" x2="5.64" y2="11.64"></line><line x1="1" y1="18" x2="3" y2="18"></line><line x1="21" y1="18" x2="23" y2="18"></line><line x1="18.36" y1="11.64" x2="19.78" y2="10.22"></line><line x1="23" y1="22" x2="1" y2="22"></line><polyline points="16 5 12 9 8 5"></polyline>',tablet:'<rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="12" y1="18" x2="12.01" y2="18"></line>',tag:'<path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line>',target:'<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="6"></circle><circle cx="12" cy="12" r="2"></circle>',terminal:'<polyline points="4 17 10 11 4 5"></polyline><line x1="12" y1="19" x2="20" y2="19"></line>',thermometer:'<path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path>',"thumbs-down":'<path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path>',"thumbs-up":'<path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path>',"toggle-left":'<rect x="1" y="5" width="22" height="14" rx="7" ry="7"></rect><circle cx="8" cy="12" r="3"></circle>',"toggle-right":'<rect x="1" y="5" width="22" height="14" rx="7" ry="7"></rect><circle cx="16" cy="12" r="3"></circle>',tool:'<path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"></path>',"trash-2":'<polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line>',trash:'<polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path>',trello:'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><rect x="7" y="7" width="3" height="9"></rect><rect x="14" y="7" width="3" height="5"></rect>',"trending-down":'<polyline points="23 18 13.5 8.5 8.5 13.5 1 6"></polyline><polyline points="17 18 23 18 23 12"></polyline>',"trending-up":'<polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline><polyline points="17 6 23 6 23 12"></polyline>',triangle:'<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path>',truck:'<rect x="1" y="3" width="15" height="13"></rect><polygon points="16 8 20 8 23 11 23 16 16 16 16 8"></polygon><circle cx="5.5" cy="18.5" r="2.5"></circle><circle cx="18.5" cy="18.5" r="2.5"></circle>',tv:'<rect x="2" y="7" width="20" height="15" rx="2" ry="2"></rect><polyline points="17 2 12 7 7 2"></polyline>',twitch:'<path d="M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7"></path>',twitter:'<path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path>',type:'<polyline points="4 7 4 4 20 4 20 7"></polyline><line x1="9" y1="20" x2="15" y2="20"></line><line x1="12" y1="4" x2="12" y2="20"></line>',umbrella:'<path d="M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7"></path>',underline:'<path d="M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3"></path><line x1="4" y1="21" x2="20" y2="21"></line>',unlock:'<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 9.9-1"></path>',"upload-cloud":'<polyline points="16 16 12 12 8 16"></polyline><line x1="12" y1="12" x2="12" y2="21"></line><path d="M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3"></path><polyline points="16 16 12 12 8 16"></polyline>',upload:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="17 8 12 3 7 8"></polyline><line x1="12" y1="3" x2="12" y2="15"></line>',"user-check":'<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><polyline points="17 11 19 13 23 9"></polyline>',"user-minus":'<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="23" y1="11" x2="17" y2="11"></line>',"user-plus":'<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="20" y1="8" x2="20" y2="14"></line><line x1="23" y1="11" x2="17" y2="11"></line>',"user-x":'<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="18" y1="8" x2="23" y2="13"></line><line x1="23" y1="8" x2="18" y2="13"></line>',user:'<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle>',users:'<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path>',"video-off":'<path d="M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10"></path><line x1="1" y1="1" x2="23" y2="23"></line>',video:'<polygon points="23 7 16 12 23 17 23 7"></polygon><rect x="1" y="5" width="15" height="14" rx="2" ry="2"></rect>',voicemail:'<circle cx="5.5" cy="11.5" r="4.5"></circle><circle cx="18.5" cy="11.5" r="4.5"></circle><line x1="5.5" y1="16" x2="18.5" y2="16"></line>',"volume-1":'<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M15.54 8.46a5 5 0 0 1 0 7.07"></path>',"volume-2":'<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07"></path>',"volume-x":'<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><line x1="23" y1="9" x2="17" y2="15"></line><line x1="17" y1="9" x2="23" y2="15"></line>',volume:'<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon>',watch:'<circle cx="12" cy="12" r="7"></circle><polyline points="12 9 12 12 13.5 13.5"></polyline><path d="M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83"></path>',"wifi-off":'<line x1="1" y1="1" x2="23" y2="23"></line><path d="M16.72 11.06A10.94 10.94 0 0 1 19 12.55"></path><path d="M5 12.55a10.94 10.94 0 0 1 5.17-2.39"></path><path d="M10.71 5.05A16 16 0 0 1 22.58 9"></path><path d="M1.42 9a15.91 15.91 0 0 1 4.7-2.88"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12.01" y2="20"></line>',wifi:'<path d="M5 12.55a11 11 0 0 1 14.08 0"></path><path d="M1.42 9a16 16 0 0 1 21.16 0"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12.01" y2="20"></line>',wind:'<path d="M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2"></path>',"x-circle":'<circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line>',"x-octagon":'<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line>',"x-square":'<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="9" x2="15" y2="15"></line><line x1="15" y1="9" x2="9" y2="15"></line>',x:'<line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line>',youtube:'<path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z"></path><polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"></polygon>',"zap-off":'<polyline points="12.41 6.75 13 2 10.57 4.92"></polyline><polyline points="18.57 12.91 21 10 15.66 10"></polyline><polyline points="8 8 3 14 12 14 11 22 16 16"></polyline><line x1="1" y1="1" x2="23" y2="23"></line>',zap:'<polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon>',"zoom-in":'<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line>',"zoom-out":'<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="8" y1="11" x2="14" y2="11"></line>'}},function(e){e.exports={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var i=arguments[n];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t])}return e},l=function(){function e(e,n){for(var i=0;i<n.length;i++){var t=n[i];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,t.key,t)}}return function(n,i,t){return i&&e(n.prototype,i),t&&e(n,t),n}}(),r=a(i(22)),o=a(i(42));function a(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(n,i){var l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.name=n,this.contents=i,this.tags=l,this.attrs=t({},o.default,{class:"feather feather-"+n})}return l(e,[{key:"toSvg",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"<svg "+function(e){return Object.keys(e).map(function(n){return n+'="'+e[n]+'"'}).join(" ")}(t({},this.attrs,e,{class:(0,r.default)(this.attrs.class,e.class)}))+">"+this.contents+"</svg>"}},{key:"toString",value:function(){return this.contents}}]),e}();n.default=c},function(e,n,i){"use strict";var t=o(i(12)),l=o(i(39)),r=o(i(38));function o(e){return e&&e.__esModule?e:{default:e}}e.exports={icons:t.default,toSvg:l.default,replace:r.default}},function(e,n,i){e.exports=i(0)},function(e,n,i){var t=i(2)("iterator"),l=!1;try{var r=0,o={next:function(){return{done:!!r++}},return:function(){l=!0}};o[t]=function(){return this},Array.from(o,function(){throw 2})}catch(e){}e.exports=function(e,n){if(!n&&!l)return!1;var i=!1;try{var r={};r[t]=function(){return{next:function(){return{done:i=!0}}}},e(r)}catch(e){}return i}},function(e,n,i){var t=i(30),l=i(2)("toStringTag"),r="Arguments"==t(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),l))?i:r?t(n):"Object"==(o=t(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){var t=i(47),l=i(9),r=i(2)("iterator");e.exports=function(e){if(void 0!=e)return e[r]||e["@@iterator"]||l[t(e)]}},function(e,n,i){"use strict";var t=i(18),l=i(7),r=i(10);e.exports=function(e,n,i){var o=t(n);o in e?l.f(e,o,r(0,i)):e[o]=i}},function(e,n,i){var t=i(2),l=i(9),r=t("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(l.Array===e||o[r]===e)}},function(e,n,i){var t=i(3);e.exports=function(e,n,i,l){try{return l?n(t(i)[0],i[1]):n(i)}catch(n){var r=e.return;throw void 0!==r&&t(r.call(e)),n}}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,n,i){var t=i(52);e.exports=function(e,n,i){if(t(e),void 0===n)return e;switch(i){case 0:return function(){return e.call(n)};case 1:return function(i){return e.call(n,i)};case 2:return function(i,t){return e.call(n,i,t)};case 3:return function(i,t,l){return e.call(n,i,t,l)}}return function(){return e.apply(n,arguments)}}},function(e,n,i){"use strict";var t=i(53),l=i(24),r=i(51),o=i(50),a=i(27),c=i(49),p=i(48);e.exports=function(e){var n,i,y,h,x=l(e),s="function"==typeof this?this:Array,u=arguments.length,d=u>1?arguments[1]:void 0,f=void 0!==d,v=0,g=p(x);if(f&&(d=t(d,u>2?arguments[2]:void 0,2)),void 0==g||s==Array&&o(g))for(i=new s(n=a(x.length));n>v;v++)c(i,v,f?d(x[v],v):x[v]);else for(h=g.call(x),i=new s;!(y=h.next()).done;v++)c(i,v,f?r(h,d,[y.value,v],!0):y.value);return i.length=v,i}},function(e,n,i){var t=i(32),l=i(54);t({target:"Array",stat:!0,forced:!i(46)(function(e){Array.from(e)})},{from:l})},function(e,n,i){var t=i(6),l=i(3);e.exports=function(e,n){if(l(e),!t(n)&&null!==n)throw TypeError("Can't set "+String(n)+" as a prototype")}},function(e,n,i){var t=i(56);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,n=!1,i={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(i,[]),n=i instanceof Array}catch(e){}return function(i,l){return t(i,l),n?e.call(i,l):i.__proto__=l,i}}():void 0)},function(e,n,i){var t=i(0).document;e.exports=t&&t.documentElement},function(e,n,i){var t=i(28),l=i(13);e.exports=Object.keys||function(e){return t(e,l)}},function(e,n,i){var t=i(8),l=i(7),r=i(3),o=i(59);e.exports=t?Object.defineProperties:function(e,n){r(e);for(var i,t=o(n),a=t.length,c=0;a>c;)l.f(e,i=t[c++],n[i]);return e}},function(e,n,i){var t=i(3),l=i(60),r=i(13),o=i(15),a=i(58),c=i(34),p=i(16)("IE_PROTO"),y=function(){},h=function(){var e,n=c("iframe"),i=r.length;for(n.style.display="none",a.appendChild(n),n.src=String("javascript:"),(e=n.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),h=e.F;i--;)delete h.prototype[r[i]];return h()};e.exports=Object.create||function(e,n){var i;return null!==e?(y.prototype=t(e),i=new y,y.prototype=null,i[p]=e):i=h(),void 0===n?i:l(i,n)},o[p]=!0},function(e,n,i){var t=i(4);e.exports=!!Object.getOwnPropertySymbols&&!t(function(){return!String(Symbol())})},function(e,n,i){var t=i(4);e.exports=!t(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})},function(e,n,i){"use strict";var t=i(26).IteratorPrototype,l=i(61),r=i(10),o=i(23),a=i(9),c=function(){return this};e.exports=function(e,n,i){var p=n+" Iterator";return e.prototype=l(t,{next:r(1,i)}),o(e,p,!1,!0),a[p]=c,e}},function(e,n,i){var t=i(4),l=/#|\.prototype\./,r=function(e,n){var i=a[o(e)];return i==p||i!=c&&("function"==typeof n?t(n):!!n)},o=r.normalize=function(e){return String(e).replace(l,".").toLowerCase()},a=r.data={},c=r.NATIVE="N",p=r.POLYFILL="P";e.exports=r},function(e,n){n.f=Object.getOwnPropertySymbols},function(e,n,i){var t=i(21),l=Math.max,r=Math.min;e.exports=function(e,n){var i=t(e);return i<0?l(i+n,0):r(i,n)}},function(e,n,i){var t=i(14),l=i(27),r=i(67);e.exports=function(e){return function(n,i,o){var a,c=t(n),p=l(c.length),y=r(o,p);if(e&&i!=i){for(;p>y;)if((a=c[y++])!=a)return!0}else for(;p>y;y++)if((e||y in c)&&c[y]===i)return e||y||0;return!e&&-1}}},function(e,n,i){var t=i(28),l=i(13).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(e){return t(e,l)}},function(e,n,i){var t=i(0),l=i(69),r=i(66),o=i(3),a=t.Reflect;e.exports=a&&a.ownKeys||function(e){var n=l.f(o(e)),i=r.f;return i?n.concat(i(e)):n}},function(e,n,i){var t=i(1),l=i(70),r=i(31),o=i(7);e.exports=function(e,n){for(var i=l(n),a=o.f,c=r.f,p=0;p<i.length;p++){var y=i[p];t(e,y)||a(e,y,c(n,y))}}},function(e,n,i){var t=i(4),l=i(30),r="".split;e.exports=t(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==l(e)?r.call(e,""):Object(e)}:Object},function(e,n,i){"use strict";var t={}.propertyIsEnumerable,l=Object.getOwnPropertyDescriptor,r=l&&!t.call({1:2},1);n.f=r?function(e){var n=l(this,e);return!!n&&n.enumerable}:t},function(e,n,i){"use strict";var t=i(32),l=i(64),r=i(25),o=i(57),a=i(23),c=i(5),p=i(29),y=i(2),h=i(17),x=i(9),s=i(26),u=s.IteratorPrototype,d=s.BUGGY_SAFARI_ITERATORS,f=y("iterator"),v=function(){return this};e.exports=function(e,n,i,y,s,g,m){l(i,n,y);var M,w,b,z=function(e){if(e===s&&O)return O;if(!d&&e in H)return H[e];switch(e){case"keys":case"values":case"entries":return function(){return new i(this,e)}}return function(){return new i(this)}},A=n+" Iterator",k=!1,H=e.prototype,V=H[f]||H["@@iterator"]||s&&H[s],O=!d&&V||z(s),j="Array"==n&&H.entries||V;if(j&&(M=r(j.call(new e)),u!==Object.prototype&&M.next&&(h||r(M)===u||(o?o(M,u):"function"!=typeof M[f]&&c(M,f,v)),a(M,A,!0,!0),h&&(x[A]=v))),"values"==s&&V&&"values"!==V.name&&(k=!0,O=function(){return V.call(this)}),h&&!m||H[f]===O||c(H,f,O),x[n]=O,s)if(w={values:z("values"),keys:g?O:z("keys"),entries:z("entries")},m)for(b in w)!d&&!k&&b in H||p(H,b,w[b]);else t({target:n,proto:!0,forced:d||k},w);return w}},function(e,n){var i;i=function(){return this}();try{i=i||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(i=window)}e.exports=i},function(e,n,i){var t=i(0),l=i(36),r=t.WeakMap;e.exports="function"==typeof r&&/native code/.test(l.call(r))},function(e,n,i){var t=i(21),l=i(20);e.exports=function(e,n,i){var r,o,a=String(l(e)),c=t(n),p=a.length;return c<0||c>=p?i?"":void 0:(r=a.charCodeAt(c))<55296||r>56319||c+1===p||(o=a.charCodeAt(c+1))<56320||o>57343?i?a.charAt(c):r:i?a.slice(c,c+2):o-56320+(r-55296<<10)+65536}},function(e,n,i){"use strict";var t=i(77),l=i(37),r=i(74),o=l.set,a=l.getterFor("String Iterator");r(String,"String",function(e){o(this,{type:"String Iterator",string:String(e),index:0})},function(){var e,n=a(this),i=n.string,l=n.index;return l>=i.length?{value:void 0,done:!0}:(e=t(i,l,!0),n.index+=e.length,{value:e,done:!1})})},function(e,n,i){i(78),i(55);var t=i(45);e.exports=t.Array.from},function(e,n,i){i(79),e.exports=i(44)}])});
+//# sourceMappingURL=feather.min.js.map
Index: public/vendors/charts/apex/apexcharts.amd.js
===================================================================
--- public/vendors/charts/apex/apexcharts.amd.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/apexcharts.amd.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,32704 @@
+define("ApexCharts", [], function() { return /******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// identity function for calling harmony imports with the correct context
+/******/ 	__webpack_require__.i = function(value) { return value; };
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, {
+/******/ 				configurable: false,
+/******/ 				enumerable: true,
+/******/ 				get: getter
+/******/ 			});
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 79);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/*
+ ** Generic functions which are not dependent on ApexCharts
+ */
+
+var Utils = function () {
+  function Utils() {
+    _classCallCheck(this, Utils);
+  }
+
+  _createClass(Utils, [{
+    key: 'shadeRGBColor',
+    value: function shadeRGBColor(percent, color) {
+      var f = color.split(','),
+          t = percent < 0 ? 0 : 255,
+          p = percent < 0 ? percent * -1 : percent,
+          R = parseInt(f[0].slice(4)),
+          G = parseInt(f[1]),
+          B = parseInt(f[2]);
+      return 'rgb(' + (Math.round((t - R) * p) + R) + ',' + (Math.round((t - G) * p) + G) + ',' + (Math.round((t - B) * p) + B) + ')';
+    }
+  }, {
+    key: 'shadeHexColor',
+    value: function shadeHexColor(percent, color) {
+      var f = parseInt(color.slice(1), 16),
+          t = percent < 0 ? 0 : 255,
+          p = percent < 0 ? percent * -1 : percent,
+          R = f >> 16,
+          G = f >> 8 & 0x00ff,
+          B = f & 0x0000ff;
+      return '#' + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1);
+    }
+
+    // beautiful color shading blending code
+    // http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors
+
+  }, {
+    key: 'shadeColor',
+    value: function shadeColor(p, color) {
+      if (color.length > 7) return this.shadeRGBColor(p, color);else return this.shadeHexColor(p, color);
+    }
+  }], [{
+    key: 'bind',
+    value: function bind(fn, me) {
+      return function () {
+        return fn.apply(me, arguments);
+      };
+    }
+  }, {
+    key: 'isObject',
+    value: function isObject(item) {
+      return item && (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object' && !Array.isArray(item) && item != null;
+    }
+  }, {
+    key: 'listToArray',
+    value: function listToArray(list) {
+      var i = void 0,
+          array = [];
+      for (i = 0; i < list.length; i++) {
+        array[i] = list[i];
+      }
+      return array;
+    }
+
+    // to extend defaults with user options
+    // credit: http://stackoverflow.com/questions/27936772/deep-object-merging-in-es6-es7#answer-34749873
+
+  }, {
+    key: 'extend',
+    value: function extend(target, source) {
+      var _this = this;
+
+      if (typeof Object.assign !== 'function') {
+        ;(function () {
+          Object.assign = function (target) {
+            'use strict';
+            // We must check against these specific cases.
+
+            if (target === undefined || target === null) {
+              throw new TypeError('Cannot convert undefined or null to object');
+            }
+
+            var output = Object(target);
+            for (var index = 1; index < arguments.length; index++) {
+              var _source = arguments[index];
+              if (_source !== undefined && _source !== null) {
+                for (var nextKey in _source) {
+                  if (_source.hasOwnProperty(nextKey)) {
+                    output[nextKey] = _source[nextKey];
+                  }
+                }
+              }
+            }
+            return output;
+          };
+        })();
+      }
+
+      var output = Object.assign({}, target);
+      if (this.isObject(target) && this.isObject(source)) {
+        Object.keys(source).forEach(function (key) {
+          if (_this.isObject(source[key])) {
+            if (!(key in target)) {
+              Object.assign(output, _defineProperty({}, key, source[key]));
+            } else {
+              output[key] = _this.extend(target[key], source[key]);
+            }
+          } else {
+            Object.assign(output, _defineProperty({}, key, source[key]));
+          }
+        });
+      }
+      return output;
+    }
+  }, {
+    key: 'extendArray',
+    value: function extendArray(arrToExtend, resultArr) {
+      var extendedArr = [];
+      arrToExtend.map(function (item) {
+        extendedArr.push(Utils.extend(resultArr, item));
+      });
+      arrToExtend = extendedArr;
+      return arrToExtend;
+    }
+
+    // If month counter exceeds 12, it starts again from 1
+
+  }, {
+    key: 'monthMod',
+    value: function monthMod(month) {
+      return month % 12;
+    }
+  }, {
+    key: 'addProps',
+    value: function addProps(obj, arr, val) {
+      if (typeof arr === 'string') {
+        arr = arr.split('.');
+      }
+
+      obj[arr[0]] = obj[arr[0]] || {};
+
+      var tmpObj = obj[arr[0]];
+
+      if (arr.length > 1) {
+        arr.shift();
+        this.addProps(tmpObj, arr, val);
+      } else {
+        obj[arr[0]] = val;
+      }
+
+      return obj;
+    }
+  }, {
+    key: 'clone',
+    value: function clone(source) {
+      if (Object.prototype.toString.call(source) === '[object Array]') {
+        var cloneResult = [];
+        for (var i = 0; i < source.length; i++) {
+          cloneResult[i] = this.clone(source[i]);
+        }
+        return cloneResult;
+      } else if ((typeof source === 'undefined' ? 'undefined' : _typeof(source)) === 'object') {
+        var _cloneResult = {};
+        for (var prop in source) {
+          if (source.hasOwnProperty(prop)) {
+            _cloneResult[prop] = this.clone(source[prop]);
+          }
+        }
+        return _cloneResult;
+      } else {
+        return source;
+      }
+    }
+  }, {
+    key: 'log10',
+    value: function log10(x) {
+      return Math.log(x) / Math.LN10;
+    }
+  }, {
+    key: 'roundToBase10',
+    value: function roundToBase10(x) {
+      return Math.pow(10, Math.floor(Math.log10(x)));
+    }
+  }, {
+    key: 'roundToBase',
+    value: function roundToBase(x, base) {
+      return Math.pow(base, Math.floor(Math.log(x) / Math.log(base)));
+    }
+  }, {
+    key: 'parseNumber',
+    value: function parseNumber(val) {
+      if (val === null) return val;
+      return parseFloat(val);
+    }
+  }, {
+    key: 'noExponents',
+    value: function noExponents(val) {
+      var data = String(val).split(/[eE]/);
+      if (data.length == 1) return data[0];
+
+      var z = '',
+          sign = val < 0 ? '-' : '',
+          str = data[0].replace('.', ''),
+          mag = Number(data[1]) + 1;
+
+      if (mag < 0) {
+        z = sign + '0.';
+        while (mag++) {
+          z += '0';
+        }return z + str.replace(/^\-/, '');
+      }
+      mag -= str.length;
+      while (mag--) {
+        z += '0';
+      }return str + z;
+    }
+  }, {
+    key: 'getDimensions',
+    value: function getDimensions(el) {
+      var computedStyle = getComputedStyle(el);
+      var ret = [];
+
+      var elementHeight = el.clientHeight;
+      var elementWidth = el.clientWidth;
+
+      elementHeight -= parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom);
+      elementWidth -= parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);
+      ret.push(elementWidth);
+      ret.push(elementHeight);
+
+      return ret;
+    }
+  }, {
+    key: 'getBoundingClientRect',
+    value: function getBoundingClientRect(element) {
+      var rect = element.getBoundingClientRect();
+      return {
+        top: rect.top,
+        right: rect.right,
+        bottom: rect.bottom,
+        left: rect.left,
+        width: rect.width,
+        height: rect.height,
+        x: rect.x,
+        y: rect.y
+      };
+    }
+
+    // http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-12342275
+
+  }, {
+    key: 'hexToRgba',
+    value: function hexToRgba() {
+      var hex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '#999999';
+      var opacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.6;
+
+      if (hex.substring(0, 1) !== '#') {
+        hex = '#999999';
+      }
+
+      var h = hex.replace('#', '');
+      h = h.match(new RegExp('(.{' + h.length / 3 + '})', 'g'));
+
+      for (var i = 0; i < h.length; i++) {
+        h[i] = parseInt(h[i].length === 1 ? h[i] + h[i] : h[i], 16);
+      }
+
+      if (typeof opacity !== 'undefined') h.push(opacity);
+
+      return 'rgba(' + h.join(',') + ')';
+    }
+  }, {
+    key: 'getOpacityFromRGBA',
+    value: function getOpacityFromRGBA(rgba) {
+      rgba = rgba.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
+      return rgba[3];
+    }
+  }, {
+    key: 'rgb2hex',
+    value: function rgb2hex(rgb) {
+      rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
+      return rgb && rgb.length === 4 ? '#' + ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';
+    }
+  }, {
+    key: 'isColorHex',
+    value: function isColorHex(color) {
+      return (/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(color)
+      );
+    }
+  }, {
+    key: 'polarToCartesian',
+    value: function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
+      var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;
+
+      return {
+        x: centerX + radius * Math.cos(angleInRadians),
+        y: centerY + radius * Math.sin(angleInRadians)
+      };
+    }
+  }, {
+    key: 'escapeString',
+    value: function escapeString(str) {
+      var escapeWith = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';
+
+      var newStr = str.toString().slice();
+      newStr = newStr.replace(/[` ~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, escapeWith);
+      return newStr;
+    }
+  }, {
+    key: 'negToZero',
+    value: function negToZero(val) {
+      return val < 0 ? 0 : val;
+    }
+  }, {
+    key: 'moveIndexInArray',
+    value: function moveIndexInArray(arr, old_index, new_index) {
+      if (new_index >= arr.length) {
+        var k = new_index - arr.length + 1;
+        while (k--) {
+          arr.push(undefined);
+        }
+      }
+      arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);
+      return arr;
+    }
+  }, {
+    key: 'extractNumber',
+    value: function extractNumber(s) {
+      return parseFloat(s.replace(/[^\d\.]*/g, ''));
+    }
+  }, {
+    key: 'randomString',
+    value: function randomString(len) {
+      var text = '';
+      var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+
+      for (var i = 0; i < len; i++) {
+        text += possible.charAt(Math.floor(Math.random() * possible.length));
+      }
+
+      return text;
+    }
+  }, {
+    key: 'findAncestor',
+    value: function findAncestor(el, cls) {
+      while ((el = el.parentElement) && !el.classList.contains(cls)) {}
+      return el;
+    }
+  }, {
+    key: 'setELstyles',
+    value: function setELstyles(el, styles) {
+      for (var key in styles) {
+        if (styles.hasOwnProperty(key)) {
+          el.style.key = styles[key];
+        }
+      }
+    }
+  }, {
+    key: 'isNumber',
+    value: function isNumber(value) {
+      return !isNaN(value) && parseFloat(Number(value)) === value && !isNaN(parseInt(value, 10));
+    }
+  }, {
+    key: 'isFloat',
+    value: function isFloat(n) {
+      return Number(n) === n && n % 1 !== 0;
+    }
+  }, {
+    key: 'isSafari',
+    value: function isSafari() {
+      return (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)
+      );
+    }
+  }, {
+    key: 'isFirefox',
+    value: function isFirefox() {
+      return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
+    }
+  }, {
+    key: 'isIE11',
+    value: function isIE11() {
+      if (window.navigator.userAgent.indexOf('MSIE') !== -1 || window.navigator.appVersion.indexOf('Trident/') > -1) {
+        return true;
+      }
+    }
+  }, {
+    key: 'isIE',
+    value: function isIE() {
+      var ua = window.navigator.userAgent;
+
+      var msie = ua.indexOf('MSIE ');
+      if (msie > 0) {
+        // IE 10 or older => return version number
+        return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
+      }
+
+      var trident = ua.indexOf('Trident/');
+      if (trident > 0) {
+        // IE 11 => return version number
+        var rv = ua.indexOf('rv:');
+        return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
+      }
+
+      var edge = ua.indexOf('Edge/');
+      if (edge > 0) {
+        // Edge (IE 12+) => return version number
+        return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
+      }
+
+      // other browser
+      return false;
+    }
+  }]);
+
+  return Utils;
+}();
+
+exports.default = Utils;
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _Filters = __webpack_require__(3);
+
+var _Filters2 = _interopRequireDefault(_Filters);
+
+var _Animations = __webpack_require__(5);
+
+var _Animations2 = _interopRequireDefault(_Animations);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Graphics Class for all drawing operations.
+ *
+ * @module Graphics
+ **/
+
+var Graphics = function () {
+  function Graphics(ctx) {
+    _classCallCheck(this, Graphics);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Graphics, [{
+    key: 'drawLine',
+    value: function drawLine(x1, y1, x2, y2) {
+      var lineColor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '#a8a8a8';
+      var dashArray = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
+      var strokeWidth = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
+
+      var w = this.w;
+      var line = w.globals.dom.Paper.line().attr({
+        x1: x1,
+        y1: y1,
+        x2: x2,
+        y2: y2,
+        stroke: lineColor,
+        'stroke-dasharray': dashArray,
+        'stroke-width': strokeWidth
+      });
+
+      return line;
+    }
+  }, {
+    key: 'drawRect',
+    value: function drawRect() {
+      var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+      var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+      var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+      var radius = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+      var color = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '#fefefe';
+      var opacity = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1;
+      var strokeWidth = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
+      var strokeColor = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null;
+      var strokeDashArray = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 0;
+
+      var w = this.w;
+      var rect = w.globals.dom.Paper.rect();
+
+      rect.attr({
+        x: x1,
+        y: y1,
+        width: x2 > 0 ? x2 : 0,
+        height: y2 > 0 ? y2 : 0,
+        rx: radius,
+        ry: radius,
+        fill: color,
+        opacity: opacity,
+        'stroke-width': strokeWidth !== null ? strokeWidth : 0,
+        stroke: strokeColor !== null ? strokeColor : 'none',
+        'stroke-dasharray': strokeDashArray
+      });
+
+      return rect;
+    }
+  }, {
+    key: 'drawPolygon',
+    value: function drawPolygon(polygonString) {
+      var stroke = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#e1e1e1';
+      var fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none';
+
+      var w = this.w;
+      var polygon = w.globals.dom.Paper.polygon(polygonString).attr({
+        fill: fill,
+        stroke: stroke
+      });
+
+      return polygon;
+    }
+  }, {
+    key: 'drawCircle',
+    value: function drawCircle(radius) {
+      var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+
+      var w = this.w;
+
+      var c = w.globals.dom.Paper.circle(radius * 2);
+      if (attrs !== null) {
+        c.attr(attrs);
+      }
+      return c;
+    }
+  }, {
+    key: 'drawPath',
+    value: function drawPath(_ref) {
+      var _ref$d = _ref.d,
+          d = _ref$d === undefined ? '' : _ref$d,
+          _ref$stroke = _ref.stroke,
+          stroke = _ref$stroke === undefined ? '#a8a8a8' : _ref$stroke,
+          _ref$strokeWidth = _ref.strokeWidth,
+          strokeWidth = _ref$strokeWidth === undefined ? 1 : _ref$strokeWidth,
+          fill = _ref.fill,
+          _ref$fillOpacity = _ref.fillOpacity,
+          fillOpacity = _ref$fillOpacity === undefined ? 1 : _ref$fillOpacity,
+          _ref$strokeOpacity = _ref.strokeOpacity,
+          strokeOpacity = _ref$strokeOpacity === undefined ? 1 : _ref$strokeOpacity,
+          classes = _ref.classes,
+          _ref$strokeLinecap = _ref.strokeLinecap,
+          strokeLinecap = _ref$strokeLinecap === undefined ? null : _ref$strokeLinecap,
+          _ref$strokeDashArray = _ref.strokeDashArray,
+          strokeDashArray = _ref$strokeDashArray === undefined ? 0 : _ref$strokeDashArray;
+
+      var w = this.w;
+
+      if (strokeLinecap === null) {
+        strokeLinecap = w.config.stroke.lineCap;
+      }
+
+      if (d.indexOf('undefined') > -1 || d.indexOf('NaN') > -1) {
+        d = 'M 0 ' + w.globals.gridHeight;
+      }
+      var p = w.globals.dom.Paper.path(d).attr({
+        fill: fill,
+        'fill-opacity': fillOpacity,
+        stroke: stroke,
+        'stroke-opacity': strokeOpacity,
+        'stroke-linecap': strokeLinecap,
+        'stroke-width': strokeWidth,
+        'stroke-dasharray': strokeDashArray,
+        class: classes
+      });
+
+      return p;
+    }
+  }, {
+    key: 'group',
+    value: function group() {
+      var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+
+      var w = this.w;
+      var g = w.globals.dom.Paper.group();
+
+      if (attrs !== null) {
+        g.attr(attrs);
+      }
+      return g;
+    }
+  }, {
+    key: 'move',
+    value: function move(x, y) {
+      var move = ['M', x, y].join(' ');
+      return move;
+    }
+  }, {
+    key: 'line',
+    value: function line(x, y) {
+      var hORv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+
+      var line = null;
+      if (hORv === null) {
+        line = ['L', x, y].join(' ');
+      } else if (hORv === 'H') {
+        line = ['H', x].join(' ');
+      } else if (hORv === 'V') {
+        line = ['V', y].join(' ');
+      }
+      return line;
+    }
+  }, {
+    key: 'curve',
+    value: function curve(x1, y1, x2, y2, x, y) {
+      var curve = ['C', x1, y1, x2, y2, x, y].join(' ');
+      return curve;
+    }
+  }, {
+    key: 'quadraticCurve',
+    value: function quadraticCurve(x1, y1, x, y) {
+      var curve = ['Q', x1, y1, x, y].join(' ');
+      return curve;
+    }
+  }, {
+    key: 'arc',
+    value: function arc(rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y) {
+      var relative = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;
+
+      var coord = 'A';
+      if (relative) coord = 'a';
+
+      var arc = [coord, rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y].join(' ');
+      return arc;
+    }
+
+    /**
+     * @memberof Graphics
+     * @param {object}
+     *  i = series's index
+     *  realIndex = realIndex is series's actual index when it was drawn time. After several redraws, the iterating "i" may change in loops, but realIndex doesn't
+     *  pathFrom = existing pathFrom to animateTo
+     *  pathTo = new Path to which d attr will be animated from pathFrom to pathTo
+     *  stroke = line Color
+     *  strokeWidth = width of path Line
+     *  fill = it can be gradient, single color, pattern or image
+     *  animationDelay = how much to delay when starting animation (in milliseconds)
+     *  dataChangeSpeed = for dynamic animations, when data changes
+     *  className = class attribute to add
+     * @return {object} svg.js path object
+     **/
+
+  }, {
+    key: 'renderPaths',
+    value: function renderPaths(_ref2) {
+      var i = _ref2.i,
+          j = _ref2.j,
+          realIndex = _ref2.realIndex,
+          pathFrom = _ref2.pathFrom,
+          pathTo = _ref2.pathTo,
+          stroke = _ref2.stroke,
+          strokeWidth = _ref2.strokeWidth,
+          strokeLinecap = _ref2.strokeLinecap,
+          fill = _ref2.fill,
+          animationDelay = _ref2.animationDelay,
+          initialSpeed = _ref2.initialSpeed,
+          dataChangeSpeed = _ref2.dataChangeSpeed,
+          className = _ref2.className,
+          id = _ref2.id,
+          _ref2$shouldClipToGri = _ref2.shouldClipToGrid,
+          shouldClipToGrid = _ref2$shouldClipToGri === undefined ? true : _ref2$shouldClipToGri,
+          _ref2$bindEventsOnPat = _ref2.bindEventsOnPaths,
+          bindEventsOnPaths = _ref2$bindEventsOnPat === undefined ? true : _ref2$bindEventsOnPat,
+          _ref2$drawShadow = _ref2.drawShadow,
+          drawShadow = _ref2$drawShadow === undefined ? true : _ref2$drawShadow;
+
+      var w = this.w;
+      var filters = new _Filters2.default(this.ctx);
+      var anim = new _Animations2.default(this.ctx);
+
+      var initialAnim = this.w.config.chart.animations.enabled;
+      var dynamicAnim = initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+
+      var d = void 0;
+      var shouldAnimate = !!(initialAnim && !w.globals.resized || dynamicAnim && w.globals.dataChanged && w.globals.shouldAnimate);
+
+      if (shouldAnimate) {
+        d = pathFrom;
+      } else {
+        d = pathTo;
+        this.w.globals.animationEnded = true;
+      }
+
+      var strokeDashArrayOpt = w.config.stroke.dashArray;
+      var strokeDashArray = 0;
+      if (Array.isArray(strokeDashArrayOpt)) {
+        strokeDashArray = strokeDashArrayOpt[realIndex];
+      } else {
+        strokeDashArray = w.config.stroke.dashArray;
+      }
+
+      var el = this.drawPath({
+        d: d,
+        stroke: stroke,
+        strokeWidth: strokeWidth,
+        fill: fill,
+        fillOpacity: 1,
+        classes: className,
+        strokeLinecap: strokeLinecap,
+        strokeDashArray: strokeDashArray
+      });
+
+      el.attr('id', id + '-' + i);
+      el.attr('index', realIndex);
+
+      if (shouldClipToGrid) {
+        el.attr({
+          'clip-path': 'url(#gridRectMask' + w.globals.cuid + ')'
+        });
+      }
+
+      // const defaultFilter = el.filterer
+
+      if (w.config.states.normal.filter.type !== 'none') {
+        filters.getDefaultFilter(el, realIndex);
+      } else {
+        if (w.config.chart.dropShadow.enabled && drawShadow) {
+          if (!w.config.chart.dropShadow.enabledSeries || w.config.chart.dropShadow.enabledSeries && w.config.chart.dropShadow.enabledSeries.indexOf(realIndex) !== -1) {
+            var shadow = w.config.chart.dropShadow;
+            filters.dropShadow(el, shadow, realIndex);
+          }
+        }
+      }
+
+      if (bindEventsOnPaths) {
+        el.node.addEventListener('mouseenter', this.pathMouseEnter.bind(this, el));
+        el.node.addEventListener('mouseleave', this.pathMouseLeave.bind(this, el));
+        el.node.addEventListener('mousedown', this.pathMouseDown.bind(this, el));
+      }
+
+      el.attr({
+        pathTo: pathTo,
+        pathFrom: pathFrom
+      });
+
+      var defaultAnimateOpts = {
+        el: el,
+        j: j,
+        pathFrom: pathFrom,
+        pathTo: pathTo,
+        strokeWidth: strokeWidth
+      };
+
+      if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+        anim.animatePathsGradually(_extends({}, defaultAnimateOpts, {
+          speed: initialSpeed,
+          delay: animationDelay
+        }));
+      } else {
+        if (w.globals.resized || !w.globals.dataChanged) {
+          anim.showDelayedElements();
+        }
+      }
+
+      if (w.globals.dataChanged && dynamicAnim && shouldAnimate) {
+        anim.animatePathsGradually(_extends({}, defaultAnimateOpts, {
+          speed: dataChangeSpeed
+        }));
+      }
+
+      return el;
+    }
+  }, {
+    key: 'drawPattern',
+    value: function drawPattern(style, width, height) {
+      var stroke = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '#a8a8a8';
+      var strokeWidth = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+      var opacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
+
+      var w = this.w;
+
+      var p = w.globals.dom.Paper.pattern(width, height, function (add) {
+        if (style === 'horizontalLines') {
+          add.line(0, 0, height, 0).stroke({ color: stroke, width: strokeWidth + 1 });
+        } else if (style === 'verticalLines') {
+          add.line(0, 0, 0, width).stroke({ color: stroke, width: strokeWidth + 1 });
+        } else if (style === 'slantedLines') {
+          add.line(0, 0, width, height).stroke({ color: stroke, width: strokeWidth });
+        } else if (style === 'squares') {
+          add.rect(width, height).fill('none').stroke({ color: stroke, width: strokeWidth });
+        } else if (style === 'circles') {
+          add.circle(width).fill('none').stroke({ color: stroke, width: strokeWidth });
+        }
+      });
+
+      return p;
+    }
+  }, {
+    key: 'drawGradient',
+    value: function drawGradient(style, gfrom, gto, opacityFrom, opacityTo) {
+      var size = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
+      var stops = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
+      var colorStops = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
+      var i = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0;
+
+      var w = this.w;
+      var g = void 0;
+
+      gfrom = _Utils2.default.hexToRgba(gfrom, opacityFrom);
+      gto = _Utils2.default.hexToRgba(gto, opacityTo);
+
+      var stop1 = 0;
+      var stop2 = 1;
+      var stop3 = 1;
+      var stop4 = null;
+
+      if (stops !== null) {
+        stop1 = typeof stops[0] !== 'undefined' ? stops[0] / 100 : 0;
+        stop2 = typeof stops[1] !== 'undefined' ? stops[1] / 100 : 1;
+        stop3 = typeof stops[2] !== 'undefined' ? stops[2] / 100 : 1;
+        stop4 = typeof stops[3] !== 'undefined' ? stops[3] / 100 : null;
+      }
+
+      var radial = !!(w.config.chart.type === 'donut' || w.config.chart.type === 'pie' || w.config.chart.type === 'bubble');
+
+      if (colorStops === null || colorStops.length === 0) {
+        g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) {
+          stop.at(stop1, gfrom, opacityFrom);
+          stop.at(stop2, gto, opacityTo);
+          stop.at(stop3, gto, opacityTo);
+          if (stop4 !== null) {
+            stop.at(stop4, gfrom, opacityFrom);
+          }
+        });
+      } else {
+        g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) {
+          var stops = Array.isArray(colorStops[i]) ? colorStops[i] : colorStops;
+          stops.forEach(function (s) {
+            stop.at(s.offset / 100, s.color, s.opacity);
+          });
+        });
+      }
+
+      if (!radial) {
+        if (style === 'vertical') {
+          g.from(0, 0).to(0, 1);
+        } else if (style === 'diagonal') {
+          g.from(0, 0).to(1, 1);
+        } else if (style === 'horizontal') {
+          g.from(0, 1).to(1, 1);
+        } else if (style === 'diagonal2') {
+          g.from(0, 1).to(2, 2);
+        }
+      } else {
+        var offx = w.globals.gridWidth / 2;
+        var offy = w.globals.gridHeight / 2;
+
+        if (w.config.chart.type !== 'bubble') {
+          g.attr({
+            gradientUnits: 'userSpaceOnUse',
+            cx: offx,
+            cy: offy,
+            r: size
+          });
+        } else {
+          g.attr({
+            cx: 0.5,
+            cy: 0.5,
+            r: 0.8,
+            fx: 0.2,
+            fy: 0.2
+          });
+        }
+      }
+
+      return g;
+    }
+  }, {
+    key: 'drawText',
+    value: function drawText(opts) {
+      var w = this.w;
+
+      var x = opts.x,
+          y = opts.y,
+          text = opts.text,
+          textAnchor = opts.textAnchor,
+          fontSize = opts.fontSize,
+          fontFamily = opts.fontFamily,
+          foreColor = opts.foreColor,
+          opacity = opts.opacity;
+
+
+      if (typeof text === 'undefined') text = '';
+
+      if (!textAnchor) {
+        textAnchor = 'start';
+      }
+
+      if (!foreColor) {
+        foreColor = w.config.chart.foreColor;
+      }
+      fontFamily = fontFamily || w.config.chart.fontFamily;
+
+      var elText = void 0;
+      if (Array.isArray(text)) {
+        elText = w.globals.dom.Paper.text(function (add) {
+          for (var i = 0; i < text.length; i++) {
+            add.tspan(text[i]);
+          }
+        });
+      } else {
+        elText = w.globals.dom.Paper.plain(text);
+      }
+
+      elText.attr({
+        x: x,
+        y: y,
+        'text-anchor': textAnchor,
+        'dominant-baseline': 'auto',
+        'font-size': fontSize,
+        'font-family': fontFamily,
+        fill: foreColor,
+        class:  true ? opts.cssClass : ''
+      });
+
+      elText.node.style.fontFamily = fontFamily;
+      elText.node.style.opacity = opacity;
+
+      return elText;
+    }
+  }, {
+    key: 'addTspan',
+    value: function addTspan(textEl, text, fontFamily) {
+      var tspan = textEl.tspan(text);
+
+      if (!fontFamily) {
+        fontFamily = this.w.config.chart.fontFamily;
+      }
+      tspan.node.style.fontFamily = fontFamily;
+    }
+  }, {
+    key: 'drawMarker',
+    value: function drawMarker(x, y, opts) {
+      x = x || 0;
+      var size = opts.pSize || 0;
+
+      var elPoint = null;
+
+      if (opts.shape === 'square') {
+        var radius = opts.pRadius === undefined ? size / 2 : opts.pRadius;
+
+        if (y === null) {
+          size = 0;
+          radius = 0;
+        }
+
+        var nSize = size * 1.2 + radius;
+
+        var p = this.drawRect(nSize, nSize, nSize, nSize, radius);
+
+        p.attr({
+          x: x - nSize / 2,
+          y: y - nSize / 2,
+          cx: x,
+          cy: y,
+          class: opts.class ? opts.class : '',
+          fill: opts.pointFillColor,
+          'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1,
+          stroke: opts.pointStrokeColor,
+          'stroke-width': opts.pWidth ? opts.pWidth : 0,
+          'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1
+        });
+
+        elPoint = p;
+      } else if (opts.shape === 'circle') {
+        if (!_Utils2.default.isNumber(y)) {
+          size = 0;
+          y = 0;
+        }
+
+        // let nSize = size - opts.pRadius / 2 < 0 ? 0 : size - opts.pRadius / 2
+
+        elPoint = this.drawCircle(size, {
+          cx: x,
+          cy: y,
+          class: opts.class ? opts.class : '',
+          stroke: opts.pointStrokeColor,
+          fill: opts.pointFillColor,
+          'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1,
+          'stroke-width': opts.pWidth ? opts.pWidth : 0,
+          'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1
+        });
+      }
+
+      return elPoint;
+    }
+  }, {
+    key: 'pathMouseEnter',
+    value: function pathMouseEnter(path, e) {
+      var w = this.w;
+      var filters = new _Filters2.default(this.ctx);
+
+      var i = parseInt(path.node.getAttribute('index'));
+      var j = parseInt(path.node.getAttribute('j'));
+
+      if (typeof w.config.chart.events.dataPointMouseEnter === 'function') {
+        w.config.chart.events.dataPointMouseEnter(e, this.ctx, {
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+      }
+      this.ctx.fireEvent('dataPointMouseEnter', [e, this.ctx, { seriesIndex: i, dataPointIndex: j, w: w }]);
+
+      if (w.config.states.active.filter.type !== 'none') {
+        if (path.node.getAttribute('selected') === 'true') {
+          return;
+        }
+      }
+
+      if (w.config.states.hover.filter.type !== 'none') {
+        if (w.config.states.active.filter.type !== 'none' && !w.globals.isTouchDevice) {
+          var hoverFilter = w.config.states.hover.filter;
+          filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value);
+        }
+      }
+    }
+  }, {
+    key: 'pathMouseLeave',
+    value: function pathMouseLeave(path, e) {
+      var w = this.w;
+      var filters = new _Filters2.default(this.ctx);
+
+      var i = parseInt(path.node.getAttribute('index'));
+      var j = parseInt(path.node.getAttribute('j'));
+
+      if (typeof w.config.chart.events.dataPointMouseLeave === 'function') {
+        w.config.chart.events.dataPointMouseLeave(e, this.ctx, {
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+      }
+      this.ctx.fireEvent('dataPointMouseLeave', [e, this.ctx, { seriesIndex: i, dataPointIndex: j, w: w }]);
+
+      if (w.config.states.active.filter.type !== 'none') {
+        if (path.node.getAttribute('selected') === 'true') {
+          return;
+        }
+      }
+
+      if (w.config.states.hover.filter.type !== 'none') {
+        filters.getDefaultFilter(path, i);
+      }
+    }
+  }, {
+    key: 'pathMouseDown',
+    value: function pathMouseDown(path, e) {
+      var w = this.w;
+      var filters = new _Filters2.default(this.ctx);
+
+      var i = parseInt(path.node.getAttribute('index'));
+      var j = parseInt(path.node.getAttribute('j'));
+
+      var selected = 'false';
+      if (path.node.getAttribute('selected') === 'true') {
+        path.node.setAttribute('selected', 'false');
+
+        if (w.globals.selectedDataPoints[i].indexOf(j) > -1) {
+          var index = w.globals.selectedDataPoints[i].indexOf(j);
+          w.globals.selectedDataPoints[i].splice(index, 1);
+        }
+      } else {
+        if (!w.config.states.active.allowMultipleDataPointsSelection && w.globals.selectedDataPoints.length > 0) {
+          w.globals.selectedDataPoints = [];
+          var elPaths = w.globals.dom.Paper.select('.apexcharts-series path').members;
+          var elCircles = w.globals.dom.Paper.select('.apexcharts-series circle, .apexcharts-series rect').members;
+
+          elPaths.forEach(function (elPath) {
+            elPath.node.setAttribute('selected', 'false');
+            filters.getDefaultFilter(elPath, i);
+          });
+
+          elCircles.forEach(function (circle) {
+            circle.node.setAttribute('selected', 'false');
+            filters.getDefaultFilter(circle, i);
+          });
+        }
+
+        path.node.setAttribute('selected', 'true');
+        selected = 'true';
+
+        if (typeof w.globals.selectedDataPoints[i] === 'undefined') {
+          w.globals.selectedDataPoints[i] = [];
+        }
+        w.globals.selectedDataPoints[i].push(j);
+      }
+
+      if (selected === 'true') {
+        var activeFilter = w.config.states.active.filter;
+        if (activeFilter !== 'none') {
+          filters.applyFilter(path, i, activeFilter.type, activeFilter.value);
+        }
+      } else {
+        if (w.config.states.active.filter.type !== 'none') {
+          filters.getDefaultFilter(path, i);
+        }
+      }
+
+      if (typeof w.config.chart.events.dataPointSelection === 'function') {
+        w.config.chart.events.dataPointSelection(e, this.ctx, {
+          selectedDataPoints: w.globals.selectedDataPoints,
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+      }
+      this.ctx.fireEvent('dataPointSelection', [e, this.ctx, {
+        selectedDataPoints: w.globals.selectedDataPoints,
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      }]);
+
+      // if (this.w.config.chart.selection.selectedPoints !== undefined) {
+      //   this.w.config.chart.selection.selectedPoints(w.globals.selectedDataPoints)
+      // }
+    }
+  }, {
+    key: 'rotateAroundCenter',
+    value: function rotateAroundCenter(el) {
+      var coord = el.getBBox();
+      var x = coord.x + coord.width / 2;
+      var y = coord.y + coord.height / 2;
+
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: 'getTextRects',
+    value: function getTextRects(text, fontSize, fontFamily, transform) {
+      var useBBox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
+
+      var w = this.w;
+      var virtualText = this.drawText({
+        x: -200,
+        y: -200,
+        text: text,
+        textAnchor: 'start',
+        fontSize: fontSize,
+        fontFamily: fontFamily,
+        foreColor: '#fff',
+        opacity: 0
+      });
+
+      if (transform) {
+        virtualText.attr('transform', transform);
+      }
+      w.globals.dom.Paper.add(virtualText);
+
+      var rect = virtualText.bbox();
+      if (!useBBox) {
+        rect = virtualText.node.getBoundingClientRect();
+      }
+
+      virtualText.remove();
+
+      return {
+        width: rect.width,
+        height: rect.height
+      };
+    }
+
+    /**
+     * append ... to long text
+     * http://stackoverflow.com/questions/9241315/trimming-text-to-a-given-pixel-width-in-svg
+     * @memberof Graphics
+     **/
+
+  }, {
+    key: 'placeTextWithEllipsis',
+    value: function placeTextWithEllipsis(textObj, textString, width) {
+      textObj.textContent = textString;
+
+      if (textString.length > 0) {
+        // ellipsis is needed
+        if (textObj.getSubStringLength(0, textString.length) >= width) {
+          for (var x = textString.length - 3; x > 0; x -= 3) {
+            if (textObj.getSubStringLength(0, x) <= width) {
+              textObj.textContent = textString.substring(0, x) + '...';
+              return;
+            }
+          }
+          textObj.textContent = '...'; // can't place at all
+        }
+      }
+    }
+  }], [{
+    key: 'setAttrs',
+    value: function setAttrs(el, attrs) {
+      for (var key in attrs) {
+        if (attrs.hasOwnProperty(key)) {
+          el.setAttribute(key, attrs[key]);
+        }
+      }
+    }
+  }]);
+
+  return Graphics;
+}();
+
+exports.default = Graphics;
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/*
+ ** Util functions which are dependent on ApexCharts instance
+ */
+
+var CoreUtils = function () {
+  function CoreUtils(ctx) {
+    _classCallCheck(this, CoreUtils);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(CoreUtils, [{
+    key: 'getStackedSeriesTotals',
+
+
+    /**
+     * @memberof CoreUtils
+     * returns the sum of all individual values in a multiple stacked series
+     * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]]
+     *  @return [34,36,48,13]
+     **/
+    value: function getStackedSeriesTotals() {
+      var w = this.w;
+      var total = [];
+
+      for (var i = 0; i < w.globals.series[w.globals.maxValsInArrayIndex].length; i++) {
+        var t = 0;
+        for (var j = 0; j < w.globals.series.length; j++) {
+          t += w.globals.series[j][i];
+        }
+        total.push(t);
+      }
+      w.globals.stackedSeriesTotals = total;
+      return total;
+    }
+
+    // get total of the all values inside all series
+
+  }, {
+    key: 'getSeriesTotalByIndex',
+    value: function getSeriesTotalByIndex() {
+      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+
+      if (index === null) {
+        // non-plot chart types - pie / donut / circle
+        return this.w.config.series.reduce(function (acc, cur) {
+          return acc + cur;
+        }, 0);
+      } else {
+        // axis charts - supporting multiple series
+        return this.w.globals.series[index].reduce(function (acc, cur) {
+          return acc + cur;
+        }, 0);
+      }
+    }
+  }, {
+    key: 'isSeriesNull',
+    value: function isSeriesNull() {
+      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+
+      var r = [];
+      if (index === null) {
+        // non-plot chart types - pie / donut / circle
+        r = this.w.config.series.filter(function (d) {
+          return d !== null;
+        });
+      } else {
+        // axis charts - supporting multiple series
+        r = this.w.globals.series[index].filter(function (d) {
+          return d !== null;
+        });
+      }
+
+      return r.length === 0;
+    }
+  }, {
+    key: 'seriesHaveSameValues',
+    value: function seriesHaveSameValues(index) {
+      return this.w.globals.series[index].every(function (val, i, arr) {
+        return val === arr[0];
+      });
+    }
+
+    // maxValsInArrayIndex is the index of series[] which has the largest number of items
+
+  }, {
+    key: 'getLargestSeries',
+    value: function getLargestSeries() {
+      var w = this.w;
+      w.globals.maxValsInArrayIndex = w.globals.series.map(function (a) {
+        return a.length;
+      }).indexOf(Math.max.apply(Math, w.globals.series.map(function (a) {
+        return a.length;
+      })));
+    }
+  }, {
+    key: 'getLargestMarkerSize',
+    value: function getLargestMarkerSize() {
+      var w = this.w;
+      var size = 0;
+
+      w.globals.markers.size.forEach(function (m) {
+        size = Math.max(size, m);
+      });
+
+      w.globals.markers.largestSize = size;
+
+      return size;
+    }
+
+    /**
+     * @memberof Core
+     * returns the sum of all values in a series
+     * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]]
+     *  @return [120, 11]
+     **/
+
+  }, {
+    key: 'getSeriesTotals',
+    value: function getSeriesTotals() {
+      var w = this.w;
+
+      w.globals.seriesTotals = w.globals.series.map(function (ser, index) {
+        var total = 0;
+
+        if (Array.isArray(ser)) {
+          for (var j = 0; j < ser.length; j++) {
+            total += ser[j];
+          }
+        } else {
+          // for pie/donuts/gauges
+          total += ser;
+        }
+
+        return total;
+      });
+    }
+  }, {
+    key: 'getSeriesTotalsXRange',
+    value: function getSeriesTotalsXRange(minX, maxX) {
+      var w = this.w;
+
+      var seriesTotalsXRange = w.globals.series.map(function (ser, index) {
+        var total = 0;
+
+        for (var j = 0; j < ser.length; j++) {
+          if (w.globals.seriesX[index][j] > minX && w.globals.seriesX[index][j] < maxX) {
+            total += ser[j];
+          }
+        }
+
+        return total;
+      });
+
+      return seriesTotalsXRange;
+    }
+
+    /**
+     * @memberof CoreUtils
+     * returns the percentage value of all individual values which can be used in a 100% stacked series
+     * Eg. w.globals.series = [[32, 33, 43, 12], [2, 3, 5, 1]]
+     *  @return [[94.11, 91.66, 89.58, 92.30], [5.88, 8.33, 10.41, 7.7]]
+     **/
+
+  }, {
+    key: 'getPercentSeries',
+    value: function getPercentSeries() {
+      var w = this.w;
+
+      w.globals.seriesPercent = w.globals.series.map(function (ser, index) {
+        var seriesPercent = [];
+        if (Array.isArray(ser)) {
+          for (var j = 0; j < ser.length; j++) {
+            var total = w.globals.stackedSeriesTotals[j];
+            var percent = 100 * ser[j] / total;
+            seriesPercent.push(percent);
+          }
+        } else {
+          var _total = w.globals.seriesTotals.reduce(function (acc, val) {
+            return acc + val;
+          }, 0);
+          var _percent = 100 * ser / _total;
+          seriesPercent.push(_percent);
+        }
+
+        return seriesPercent;
+      });
+    }
+  }, {
+    key: 'getCalculatedRatios',
+    value: function getCalculatedRatios() {
+      var gl = this.w.globals;
+
+      var yRatio = [];
+      var invertedYRatio = 0;
+      var xRatio = 0;
+      var initialXRatio = 0;
+      var invertedXRatio = 0;
+      var zRatio = 0;
+      var baseLineY = [];
+      var baseLineInvertedY = 0.1;
+      var baseLineX = 0;
+
+      gl.yRange = [];
+      if (gl.isMultipleYAxis) {
+        for (var i = 0; i < gl.minYArr.length; i++) {
+          gl.yRange.push(Math.abs(gl.minYArr[i] - gl.maxYArr[i]));
+          baseLineY.push(0);
+        }
+      } else {
+        gl.yRange.push(Math.abs(gl.minY - gl.maxY));
+      }
+      gl.xRange = Math.abs(gl.maxX - gl.minX);
+      gl.zRange = Math.abs(gl.maxZ - gl.minZ);
+
+      // multiple y axis
+      for (var _i = 0; _i < gl.yRange.length; _i++) {
+        yRatio.push(gl.yRange[_i] / gl.gridHeight);
+      }
+
+      xRatio = gl.xRange / gl.gridWidth;
+      initialXRatio = Math.abs(gl.initialmaxX - gl.initialminX) / gl.gridWidth;
+
+      invertedYRatio = gl.yRange / gl.gridWidth;
+      invertedXRatio = gl.xRange / gl.gridHeight;
+      zRatio = gl.zRange / gl.gridHeight * 16;
+
+      if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) {
+        // Negative numbers present in series
+        gl.hasNegs = true;
+      }
+
+      if (gl.isMultipleYAxis) {
+        baseLineY = [];
+
+        // baseline variables is the 0 of the yaxis which will be needed when there are negatives
+        for (var _i2 = 0; _i2 < yRatio.length; _i2++) {
+          baseLineY.push(-gl.minYArr[_i2] / yRatio[_i2]);
+        }
+      } else {
+        baseLineY.push(-gl.minY / yRatio[0]);
+
+        if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) {
+          baseLineInvertedY = -gl.minY / invertedYRatio; // this is for bar chart
+          baseLineX = gl.minX / xRatio;
+        }
+      }
+
+      return {
+        yRatio: yRatio,
+        invertedYRatio: invertedYRatio,
+        zRatio: zRatio,
+        xRatio: xRatio,
+        initialXRatio: initialXRatio,
+        invertedXRatio: invertedXRatio,
+        baseLineInvertedY: baseLineInvertedY,
+        baseLineY: baseLineY,
+        baseLineX: baseLineX
+      };
+    }
+  }, {
+    key: 'getLogSeries',
+    value: function getLogSeries(series) {
+      var w = this.w;
+
+      w.globals.seriesLog = series.map(function (s, i) {
+        if (w.config.yaxis[i] && w.config.yaxis[i].logarithmic) {
+          return s.map(function (d) {
+            if (d === null) return null;
+
+            var logVal = (Math.log(d) - Math.log(w.globals.minYArr[i])) / (Math.log(w.globals.maxYArr[i]) - Math.log(w.globals.minYArr[i]));
+
+            return logVal;
+          });
+        } else {
+          return s;
+        }
+      });
+
+      return w.globals.seriesLog;
+    }
+  }, {
+    key: 'getLogYRatios',
+    value: function getLogYRatios(yRatio) {
+      var _this = this;
+
+      var w = this.w;
+      var gl = this.w.globals;
+
+      gl.yLogRatio = yRatio.slice();
+
+      gl.logYRange = gl.yRange.map(function (yRange, i) {
+        if (w.config.yaxis[i] && _this.w.config.yaxis[i].logarithmic) {
+          var maxY = -Number.MAX_VALUE;
+          var minY = Number.MIN_VALUE;
+          var range = 1;
+          gl.seriesLog.forEach(function (s, si) {
+            s.forEach(function (v) {
+              if (w.config.yaxis[si] && w.config.yaxis[si].logarithmic) {
+                maxY = Math.max(v, maxY);
+                minY = Math.min(v, minY);
+              }
+            });
+          });
+
+          range = Math.pow(gl.yRange[i], Math.abs(minY - maxY) / gl.yRange[i]);
+
+          gl.yLogRatio[i] = range / gl.gridHeight;
+          return range;
+        }
+      });
+
+      return gl.yLogRatio;
+    }
+
+    // Some config objects can be array - and we need to extend them correctly
+
+  }], [{
+    key: 'checkComboSeries',
+    value: function checkComboSeries(series) {
+      var comboCharts = false;
+      var comboChartsHasBars = false;
+      // if user specified a type in series too, turn on comboCharts flag
+      if (series.length && typeof series[0].type !== 'undefined') {
+        comboCharts = true;
+        series.forEach(function (s) {
+          if (s.type === 'bar' || s.type === 'column') {
+            comboChartsHasBars = true;
+          }
+        });
+      }
+
+      return {
+        comboCharts: comboCharts,
+        comboChartsHasBars: comboChartsHasBars
+      };
+    }
+  }, {
+    key: 'extendArrayProps',
+    value: function extendArrayProps(configInstance, options) {
+      if (options.yaxis) {
+        options = configInstance.extendYAxis(options);
+      }
+      if (options.annotations) {
+        if (options.annotations.yaxis) {
+          options = configInstance.extendYAxisAnnotations(options);
+        }
+        if (options.annotations.xaxis) {
+          options = configInstance.extendXAxisAnnotations(options);
+        }
+        if (options.annotations.points) {
+          options = configInstance.extendPointAnnotations(options);
+        }
+      }
+
+      return options;
+    }
+  }]);
+
+  return CoreUtils;
+}();
+
+exports.default = CoreUtils;
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Filters Class for setting hover/active states on the paths.
+ *
+ * @module Formatters
+ **/
+var Filters = function () {
+  function Filters(ctx) {
+    _classCallCheck(this, Filters);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  // create a re-usable filter which can be appended other filter effects and applied to multiple elements
+
+
+  _createClass(Filters, [{
+    key: 'getDefaultFilter',
+    value: function getDefaultFilter(el, i) {
+      var w = this.w;
+      el.unfilter(true);
+
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+
+      if (w.config.states.normal.filter !== 'none') {
+        this.applyFilter(el, i, w.config.states.normal.filter.type, w.config.states.normal.filter.value);
+      } else {
+        if (w.config.chart.dropShadow.enabled) {
+          this.dropShadow(el, w.config.chart.dropShadow, i);
+        }
+      }
+    }
+  }, {
+    key: 'addNormalFilter',
+    value: function addNormalFilter(el, i) {
+      var w = this.w;
+      if (w.config.chart.dropShadow.enabled) {
+        this.dropShadow(el, w.config.chart.dropShadow, i);
+      }
+    }
+
+    // appends dropShadow to the filter object which can be chained with other filter effects
+
+  }, {
+    key: 'addLightenFilter',
+    value: function addLightenFilter(el, i, attrs) {
+      var _this = this;
+
+      var w = this.w;
+      var intensity = attrs.intensity;
+
+
+      if (_Utils2.default.isFirefox()) {
+        return;
+      }
+
+      el.unfilter(true);
+
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+
+      el.filter(function (add) {
+        var shadowAttr = w.config.chart.dropShadow;
+        if (shadowAttr.enabled) {
+          filter = _this.addShadow(add, i, shadowAttr);
+        } else {
+          filter = add;
+        }
+        filter.componentTransfer({
+          rgb: { type: 'linear', slope: 1.5, intercept: intensity }
+        });
+      });
+      el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+    }
+
+    // appends dropShadow to the filter object which can be chained with other filter effects
+
+  }, {
+    key: 'addDarkenFilter',
+    value: function addDarkenFilter(el, i, attrs) {
+      var _this2 = this;
+
+      var w = this.w;
+      var intensity = attrs.intensity;
+
+
+      if (_Utils2.default.isFirefox()) {
+        return;
+      }
+
+      el.unfilter(true);
+
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+
+      el.filter(function (add) {
+        var shadowAttr = w.config.chart.dropShadow;
+        if (shadowAttr.enabled) {
+          filter = _this2.addShadow(add, i, shadowAttr);
+        } else {
+          filter = add;
+        }
+        filter.componentTransfer({
+          rgb: { type: 'linear', slope: intensity }
+        });
+      });
+      el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+    }
+  }, {
+    key: 'applyFilter',
+    value: function applyFilter(el, i, filter) {
+      var intensity = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.5;
+
+      switch (filter) {
+        case 'none':
+          {
+            this.addNormalFilter(el, i);
+            break;
+          }
+        case 'lighten':
+          {
+            this.addLightenFilter(el, i, {
+              intensity: intensity
+            });
+            break;
+          }
+        case 'darken':
+          {
+            this.addDarkenFilter(el, i, {
+              intensity: intensity
+            });
+            break;
+          }
+        default:
+          // do nothing
+          break;
+      }
+    }
+
+    // appends dropShadow to the filter object which can be chained with other filter effects
+
+  }, {
+    key: 'addShadow',
+    value: function addShadow(add, i, attrs) {
+      var blur = attrs.blur,
+          top = attrs.top,
+          left = attrs.left,
+          color = attrs.color,
+          opacity = attrs.opacity;
+
+
+      var shadowBlur = add.flood(Array.isArray(color) ? color[i] : color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source);
+      return add.blend(add.source, shadowBlur);
+    }
+
+    // directly adds dropShadow to the element and returns the same element.
+    // the only way it is different from the addShadow() function is that addShadow is chainable to other filters, while this function discards all filters and add dropShadow
+
+  }, {
+    key: 'dropShadow',
+    value: function dropShadow(el, attrs) {
+      var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+      var top = attrs.top,
+          left = attrs.left,
+          blur = attrs.blur,
+          color = attrs.color,
+          opacity = attrs.opacity,
+          noUserSpaceOnUse = attrs.noUserSpaceOnUse;
+
+      el.unfilter(true);
+
+      color = Array.isArray(color) ? color[i] : color;
+
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+
+      el.filter(function (add) {
+        var shadowBlur = null;
+        if (_Utils2.default.isSafari() || _Utils2.default.isFirefox() || _Utils2.default.isIE()) {
+          // safari/firefox has some alternative way to use this filter
+          shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur);
+        } else {
+          shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source);
+        }
+
+        add.blend(add.source, shadowBlur);
+      });
+
+      if (!noUserSpaceOnUse) {
+        el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+      }
+
+      return el;
+    }
+  }, {
+    key: 'setSelectionFilter',
+    value: function setSelectionFilter(el, realIndex, dataPointIndex) {
+      var w = this.w;
+      if (typeof w.globals.selectedDataPoints[realIndex] !== 'undefined') {
+        if (w.globals.selectedDataPoints[realIndex].indexOf(dataPointIndex) > -1) {
+          el.node.setAttribute('selected', true);
+          var activeFilter = w.config.states.active.filter;
+          if (activeFilter !== 'none') {
+            this.applyFilter(el, realIndex, activeFilter.type, activeFilter.value);
+          }
+        }
+      }
+    }
+  }]);
+
+  return Filters;
+}();
+
+exports.default = Filters;
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Fill Class for setting fill options of the paths.
+ *
+ * @module Fill
+ **/
+
+var Fill = function () {
+  function Fill(ctx) {
+    _classCallCheck(this, Fill);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    this.opts = null;
+    this.seriesIndex = 0;
+  }
+
+  _createClass(Fill, [{
+    key: 'clippedImgArea',
+    value: function clippedImgArea(params) {
+      var w = this.w;
+      var cnf = w.config;
+
+      var svgW = parseInt(w.globals.gridWidth);
+      var svgH = parseInt(w.globals.gridHeight);
+
+      var size = svgW > svgH ? svgW : svgH;
+
+      var fillImg = params.image;
+
+      var imgWidth = 0;
+      var imgHeight = 0;
+      if (typeof params.width === 'undefined' && typeof params.height === 'undefined') {
+        if (cnf.fill.image.width !== undefined && cnf.fill.image.height !== undefined) {
+          imgWidth = cnf.fill.image.width + 1;
+          imgHeight = cnf.fill.image.height;
+        } else {
+          imgWidth = size + 1;
+          imgHeight = size;
+        }
+      } else {
+        imgWidth = params.width;
+        imgHeight = params.height;
+      }
+
+      var elPattern = document.createElementNS(w.globals.SVGNS, 'pattern');
+
+      _Graphics2.default.setAttrs(elPattern, {
+        id: params.patternID,
+        patternUnits: params.patternUnits ? params.patternUnits : 'userSpaceOnUse',
+        width: imgWidth + 'px',
+        height: imgHeight + 'px'
+      });
+
+      var elImage = document.createElementNS(w.globals.SVGNS, 'image');
+      elPattern.appendChild(elImage);
+
+      elImage.setAttributeNS('http://www.w3.org/1999/xlink', 'href', fillImg);
+
+      _Graphics2.default.setAttrs(elImage, {
+        x: 0,
+        y: 0,
+        preserveAspectRatio: 'none',
+        width: imgWidth + 'px',
+        height: imgHeight + 'px'
+      });
+
+      elImage.style.opacity = params.opacity;
+
+      w.globals.dom.elDefs.node.appendChild(elPattern);
+    }
+  }, {
+    key: 'getSeriesIndex',
+    value: function getSeriesIndex(opts) {
+      var w = this.w;
+
+      if (w.config.chart.type === 'bar' && w.config.plotOptions.bar.distributed || w.config.chart.type === 'heatmap') {
+        this.seriesIndex = opts.seriesNumber;
+      } else {
+        this.seriesIndex = opts.seriesNumber % w.globals.series.length;
+      }
+
+      return this.seriesIndex;
+    }
+  }, {
+    key: 'fillPath',
+    value: function fillPath(opts) {
+      var w = this.w;
+      this.opts = opts;
+
+      var cnf = this.w.config;
+      var pathFill = void 0;
+
+      var patternFill = void 0,
+          gradientFill = void 0;
+
+      this.seriesIndex = this.getSeriesIndex(opts);
+
+      var fillColors = this.getFillColors();
+      var fillColor = fillColors[this.seriesIndex];
+
+      if (typeof fillColor === 'function') {
+        fillColor = fillColor({
+          seriesIndex: this.seriesIndex,
+          value: opts.value,
+          w: w
+        });
+      }
+      var fillType = this.getFillType(this.seriesIndex);
+      var fillOpacity = Array.isArray(cnf.fill.opacity) ? cnf.fill.opacity[this.seriesIndex] : cnf.fill.opacity;
+
+      var defaultColor = fillColor;
+
+      if (opts.color) {
+        fillColor = opts.color;
+      }
+
+      if (fillColor.indexOf('rgb') === -1) {
+        defaultColor = _Utils2.default.hexToRgba(fillColor, fillOpacity);
+      } else {
+        if (fillColor.indexOf('rgba') > -1) {
+          fillOpacity = 0 + '.' + _Utils2.default.getOpacityFromRGBA(fillColors[this.seriesIndex]);
+        }
+      }
+
+      if (fillType === 'pattern') {
+        patternFill = this.handlePatternFill(patternFill, fillColor, fillOpacity, defaultColor);
+      }
+
+      if (fillType === 'gradient') {
+        gradientFill = this.handleGradientFill(gradientFill, fillColor, fillOpacity, this.seriesIndex);
+      }
+
+      if (cnf.fill.image.src.length > 0 && fillType === 'image') {
+        if (opts.seriesNumber < cnf.fill.image.src.length) {
+          this.clippedImgArea({
+            opacity: fillOpacity,
+            image: cnf.fill.image.src[opts.seriesNumber],
+            patternUnits: opts.patternUnits,
+            patternID: 'pattern' + w.globals.cuid + (opts.seriesNumber + 1)
+          });
+          pathFill = 'url(#pattern' + w.globals.cuid + (opts.seriesNumber + 1) + ')';
+        } else {
+          pathFill = defaultColor;
+        }
+      } else if (fillType === 'gradient') {
+        pathFill = gradientFill;
+      } else if (fillType === 'pattern') {
+        pathFill = patternFill;
+      } else {
+        pathFill = defaultColor;
+      }
+
+      // override pattern/gradient if opts.solid is true
+      if (opts.solid) {
+        pathFill = defaultColor;
+      }
+
+      return pathFill;
+    }
+  }, {
+    key: 'getFillType',
+    value: function getFillType(seriesIndex) {
+      var w = this.w;
+
+      if (Array.isArray(w.config.fill.type)) {
+        return w.config.fill.type[seriesIndex];
+      } else {
+        return w.config.fill.type;
+      }
+    }
+  }, {
+    key: 'getFillColors',
+    value: function getFillColors() {
+      var w = this.w;
+      var cnf = w.config;
+      var opts = this.opts;
+
+      var fillColors = [];
+
+      if (w.globals.comboCharts) {
+        if (w.config.series[this.seriesIndex].type === 'line') {
+          if (w.globals.stroke.colors instanceof Array) {
+            fillColors = w.globals.stroke.colors;
+          } else {
+            fillColors.push(w.globals.stroke.colors);
+          }
+        } else {
+          if (w.globals.fill.colors instanceof Array) {
+            fillColors = w.globals.fill.colors;
+          } else {
+            fillColors.push(w.globals.fill.colors);
+          }
+        }
+      } else {
+        if (cnf.chart.type === 'line') {
+          if (w.globals.stroke.colors instanceof Array) {
+            fillColors = w.globals.stroke.colors;
+          } else {
+            fillColors.push(w.globals.stroke.colors);
+          }
+        } else {
+          if (w.globals.fill.colors instanceof Array) {
+            fillColors = w.globals.fill.colors;
+          } else {
+            fillColors.push(w.globals.fill.colors);
+          }
+        }
+      }
+
+      // colors passed in arguments
+      if (typeof opts.fillColors !== 'undefined') {
+        fillColors = [];
+        if (opts.fillColors instanceof Array) {
+          fillColors = opts.fillColors.slice();
+        } else {
+          fillColors.push(opts.fillColors);
+        }
+      }
+
+      return fillColors;
+    }
+  }, {
+    key: 'handlePatternFill',
+    value: function handlePatternFill(patternFill, fillColor, fillOpacity, defaultColor) {
+      var cnf = this.w.config;
+      var opts = this.opts;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var patternStrokeWidth = cnf.fill.pattern.strokeWidth === undefined ? Array.isArray(cnf.stroke.width) ? cnf.stroke.width[this.seriesIndex] : cnf.stroke.width : Array.isArray(cnf.fill.pattern.strokeWidth) ? cnf.fill.pattern.strokeWidth[this.seriesIndex] : cnf.fill.pattern.strokeWidth;
+      var patternLineColor = fillColor;
+
+      if (cnf.fill.pattern.style instanceof Array) {
+        if (typeof cnf.fill.pattern.style[opts.seriesNumber] !== 'undefined') {
+          var pf = graphics.drawPattern(cnf.fill.pattern.style[opts.seriesNumber], cnf.fill.pattern.width, cnf.fill.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity);
+          patternFill = pf;
+        } else {
+          patternFill = defaultColor;
+        }
+      } else {
+        patternFill = graphics.drawPattern(cnf.fill.pattern.style, cnf.fill.pattern.width, cnf.fill.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity);
+      }
+      return patternFill;
+    }
+  }, {
+    key: 'handleGradientFill',
+    value: function handleGradientFill(gradientFill, fillColor, fillOpacity, i) {
+      var cnf = this.w.config;
+      var opts = this.opts;
+      var graphics = new _Graphics2.default(this.ctx);
+      var utils = new _Utils2.default();
+
+      var type = cnf.fill.gradient.type;
+      var gradientFrom = void 0,
+          gradientTo = void 0;
+      var opacityFrom = cnf.fill.gradient.opacityFrom === undefined ? fillOpacity : Array.isArray(cnf.fill.gradient.opacityFrom) ? cnf.fill.gradient.opacityFrom[i] : cnf.fill.gradient.opacityFrom;
+      var opacityTo = cnf.fill.gradient.opacityTo === undefined ? fillOpacity : Array.isArray(cnf.fill.gradient.opacityTo) ? cnf.fill.gradient.opacityTo[i] : cnf.fill.gradient.opacityTo;
+
+      gradientFrom = fillColor;
+      if (cnf.fill.gradient.gradientToColors === undefined || cnf.fill.gradient.gradientToColors.length === 0) {
+        if (cnf.fill.gradient.shade === 'dark') {
+          gradientTo = utils.shadeColor(parseFloat(cnf.fill.gradient.shadeIntensity) * -1, fillColor);
+        } else {
+          gradientTo = utils.shadeColor(parseFloat(cnf.fill.gradient.shadeIntensity), fillColor);
+        }
+      } else {
+        gradientTo = cnf.fill.gradient.gradientToColors[opts.seriesNumber];
+      }
+
+      if (cnf.fill.gradient.inverseColors) {
+        var t = gradientFrom;
+        gradientFrom = gradientTo;
+        gradientTo = t;
+      }
+
+      gradientFill = graphics.drawGradient(type, gradientFrom, gradientTo, opacityFrom, opacityTo, opts.size, cnf.fill.gradient.stops, cnf.fill.gradient.colorStops, i);
+
+      return gradientFill;
+    }
+  }]);
+
+  return Fill;
+}();
+
+exports.default = Fill;
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Animation Class.
+ *
+ * @module Animations
+ **/
+
+var Animations = function () {
+  function Animations(ctx) {
+    _classCallCheck(this, Animations);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    this.setEasingFunctions();
+  }
+
+  _createClass(Animations, [{
+    key: 'setEasingFunctions',
+    value: function setEasingFunctions() {
+      var easing = void 0;
+
+      var userDefinedEasing = this.w.config.chart.animations.easing;
+
+      switch (userDefinedEasing) {
+        case 'linear':
+          {
+            easing = '-';
+            break;
+          }
+        case 'easein':
+          {
+            easing = '<';
+            break;
+          }
+        case 'easeout':
+          {
+            easing = '>';
+            break;
+          }
+        case 'easeinout':
+          {
+            easing = '<>';
+            break;
+          }
+        case 'swing':
+          {
+            easing = function easing(pos) {
+              var s = 1.70158;
+              return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
+            };
+            break;
+          }
+        case 'bounce':
+          {
+            easing = function easing(pos) {
+              if (pos < 1 / 2.75) {
+                return 7.5625 * pos * pos;
+              } else if (pos < 2 / 2.75) {
+                return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
+              } else if (pos < 2.5 / 2.75) {
+                return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
+              } else {
+                return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
+              }
+            };
+            break;
+          }
+        case 'elastic':
+          {
+            easing = function easing(pos) {
+              if (pos === !!pos) return pos;
+              return Math.pow(2, -10 * pos) * Math.sin((pos - 0.075) * (2 * Math.PI) / 0.3) + 1;
+            };
+            break;
+          }
+
+        default:
+          {
+            easing = '<>';
+          }
+      }
+
+      this.w.globals.easing = easing;
+    }
+  }, {
+    key: 'animateLine',
+    value: function animateLine(el, from, to, speed) {
+      el.attr(from).animate(speed).attr(to);
+    }
+
+    /*
+     ** Animate radius of a circle element
+     */
+
+  }, {
+    key: 'animateCircleRadius',
+    value: function animateCircleRadius(el, from, to, speed, easing) {
+      if (!from) from = 0;
+
+      el.attr({
+        r: from
+      }).animate(speed, easing).attr({
+        r: to
+      });
+    }
+
+    /*
+     ** Animate radius and position of a circle element
+     */
+
+  }, {
+    key: 'animateCircle',
+    value: function animateCircle(el, from, to, speed, easing) {
+      el.attr({
+        r: from.r,
+        cx: from.cx,
+        cy: from.cy
+      }).animate(speed, easing).attr({
+        r: to.r,
+        cx: to.cx,
+        cy: to.cy
+      });
+    }
+
+    /*
+     ** Animate rect properties
+     */
+
+  }, {
+    key: 'animateRect',
+    value: function animateRect(el, from, to, speed, fn) {
+      el.attr(from).animate(speed).attr(to).afterAll(function () {
+        fn();
+      });
+    }
+  }, {
+    key: 'animatePathsGradually',
+    value: function animatePathsGradually(params) {
+      var el = params.el,
+          j = params.j,
+          pathFrom = params.pathFrom,
+          pathTo = params.pathTo,
+          speed = params.speed,
+          delay = params.delay,
+          strokeWidth = params.strokeWidth;
+
+
+      var me = this;
+      var w = this.w;
+
+      var delayFactor = 0;
+
+      if (w.config.chart.animations.animateGradually.enabled) {
+        delayFactor = w.config.chart.animations.animateGradually.delay;
+      }
+
+      if (w.config.chart.animations.dynamicAnimation.enabled && w.globals.dataChanged) {
+        delayFactor = 0;
+      }
+
+      me.morphSVG(el, j, pathFrom, pathTo, speed, strokeWidth, delay * delayFactor);
+    }
+  }, {
+    key: 'showDelayedElements',
+    value: function showDelayedElements() {
+      this.w.globals.delayedElements.forEach(function (d) {
+        var ele = d.el;
+        ele.classList.remove('hidden');
+      });
+    }
+
+    // SVG.js animation for morphing one path to another
+
+  }, {
+    key: 'morphSVG',
+    value: function morphSVG(el, j, pathFrom, pathTo, speed, strokeWidth, delay) {
+      var _this = this;
+
+      var w = this.w;
+
+      if (!pathFrom) {
+        pathFrom = el.attr('pathFrom');
+      }
+
+      if (!pathTo) {
+        pathTo = el.attr('pathTo');
+      }
+
+      if (!pathFrom || pathFrom.indexOf('undefined') > -1 || pathFrom.indexOf('NaN') > -1) {
+        pathFrom = 'M 0 ' + w.globals.gridHeight;
+        speed = 1;
+      }
+      if (pathTo.indexOf('undefined') > -1 || pathTo.indexOf('NaN') > -1) {
+        pathTo = 'M 0 ' + w.globals.gridHeight;
+        speed = 1;
+      }
+      if (!w.globals.shouldAnimate) {
+        speed = 1;
+      }
+
+      el.plot(pathFrom).animate(1, w.globals.easing, delay).plot(pathFrom).animate(speed, w.globals.easing, delay).plot(pathTo).afterAll(function () {
+        // a flag to indicate that the original mount function can return true now as animation finished here
+
+        if (_Utils2.default.isNumber(j)) {
+          if (j === w.globals.series[w.globals.maxValsInArrayIndex].length - 2 && w.globals.shouldAnimate) {
+            w.globals.animationEnded = true;
+          }
+        } else if (w.globals.shouldAnimate) {
+          w.globals.animationEnded = true;
+          if (typeof w.config.chart.events.animationEnd === 'function') {
+            w.config.chart.events.animationEnd(_this.ctx, w);
+          }
+        }
+
+        _this.showDelayedElements();
+      });
+    }
+  }]);
+
+  return Animations;
+}();
+
+exports.default = Animations;
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Filters = __webpack_require__(3);
+
+var _Filters2 = _interopRequireDefault(_Filters);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Markers Class for drawing points on y values in axes charts.
+ *
+ * @module Markers
+ **/
+
+var Markers = function () {
+  function Markers(ctx, opts) {
+    _classCallCheck(this, Markers);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Markers, [{
+    key: 'setGlobalMarkerSize',
+    value: function setGlobalMarkerSize() {
+      var w = this.w;
+
+      w.globals.markers.size = Array.isArray(w.config.markers.size) ? w.config.markers.size : [w.config.markers.size];
+
+      if (w.globals.markers.size.length > 0) {
+        if (w.globals.markers.size.length < w.globals.series.length + 1) {
+          for (var i = 0; i <= w.globals.series.length; i++) {
+            if (typeof w.globals.markers.size[i] === 'undefined') {
+              w.globals.markers.size.push(w.globals.markers.size[0]);
+            }
+          }
+        }
+      } else {
+        w.globals.markers.size = w.config.series.map(function (s) {
+          return w.config.markers.size;
+        });
+      }
+    }
+  }, {
+    key: 'plotChartMarkers',
+    value: function plotChartMarkers(pointsPos, seriesIndex, j) {
+      var _this = this;
+
+      var w = this.w;
+
+      var i = seriesIndex;
+      var p = pointsPos;
+      var elPointsWrap = null;
+
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var point = void 0;
+
+      if (w.globals.markers.size[seriesIndex] > 0) {
+        elPointsWrap = graphics.group({
+          class: 'apexcharts-series-markers'
+        });
+
+        elPointsWrap.attr('clip-path', 'url(#gridRectMarkerMask' + w.globals.cuid + ')');
+      }
+
+      if (p.x instanceof Array) {
+        var _loop = function _loop(q) {
+          var dataPointIndex = j;
+
+          // a small hack as we have 2 points for the first val to connect it
+          if (j === 1 && q === 0) dataPointIndex = 0;
+          if (j === 1 && q === 1) dataPointIndex = 1;
+
+          var PointClasses = 'apexcharts-marker';
+          if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) {
+            PointClasses += ' no-pointer-events';
+          }
+
+          var shouldMarkerDraw = Array.isArray(w.config.markers.size) ? w.globals.markers.size[seriesIndex] > 0 : w.config.markers.size > 0;
+
+          if (shouldMarkerDraw) {
+            if (_Utils2.default.isNumber(p.y[q])) {
+              PointClasses += ' w' + (Math.random() + 1).toString(36).substring(4);
+            } else {
+              PointClasses = 'apexcharts-nullpoint';
+            }
+
+            var opts = _this.getMarkerConfig(PointClasses, seriesIndex);
+
+            // discrete markers is an option where user can specify a particular marker with different size and color
+            w.config.markers.discrete.map(function (marker) {
+              if (marker.seriesIndex === seriesIndex && marker.dataPointIndex === dataPointIndex) {
+                opts.pointStrokeColor = marker.strokeColor;
+                opts.pointFillColor = marker.fillColor;
+                opts.pSize = marker.size;
+              }
+            });
+
+            if (w.config.series[i].data[j]) {
+              if (w.config.series[i].data[j].fillColor) {
+                opts.pointFillColor = w.config.series[i].data[j].fillColor;
+              }
+
+              if (w.config.series[i].data[j].strokeColor) {
+                opts.pointStrokeColor = w.config.series[i].data[j].strokeColor;
+              }
+            }
+
+            point = graphics.drawMarker(p.x[q], p.y[q], opts);
+
+            point.attr('rel', dataPointIndex);
+            point.attr('j', dataPointIndex);
+            point.attr('index', seriesIndex);
+            point.node.setAttribute('default-marker-size', opts.pSize);
+
+            var filters = new _Filters2.default(_this.ctx);
+            filters.setSelectionFilter(point, seriesIndex, dataPointIndex);
+            _this.addEvents(point);
+
+            if (elPointsWrap) {
+              elPointsWrap.add(point);
+            }
+          } else {
+            // dynamic array creation - multidimensional
+            if (typeof w.globals.pointsArray[seriesIndex] === 'undefined') w.globals.pointsArray[seriesIndex] = [];
+
+            w.globals.pointsArray[seriesIndex].push([p.x[q], p.y[q]]);
+          }
+        };
+
+        for (var q = 0; q < p.x.length; q++) {
+          _loop(q);
+        }
+      }
+
+      return elPointsWrap;
+    }
+  }, {
+    key: 'getMarkerConfig',
+    value: function getMarkerConfig(cssClass, seriesIndex) {
+      var w = this.w;
+      var pStyle = this.getMarkerStyle(seriesIndex);
+
+      var pSize = w.globals.markers.size[seriesIndex];
+
+      return {
+        pSize: pSize,
+        pRadius: w.config.markers.radius,
+        pWidth: w.config.markers.strokeWidth,
+        pointStrokeColor: pStyle.pointStrokeColor,
+        pointFillColor: pStyle.pointFillColor,
+        shape: w.config.markers.shape instanceof Array ? w.config.markers.shape[seriesIndex] : w.config.markers.shape,
+        class: cssClass,
+        pointStrokeOpacity: w.config.markers.strokeOpacity,
+        pointFillOpacity: w.config.markers.fillOpacity,
+        seriesIndex: seriesIndex
+      };
+    }
+  }, {
+    key: 'addEvents',
+    value: function addEvents(circle) {
+      var graphics = new _Graphics2.default(this.ctx);
+      circle.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this.ctx, circle));
+      circle.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this.ctx, circle));
+
+      circle.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this.ctx, circle));
+
+      circle.node.addEventListener('touchstart', graphics.pathMouseDown.bind(this.ctx, circle), { passive: true });
+    }
+  }, {
+    key: 'getMarkerStyle',
+    value: function getMarkerStyle(seriesIndex) {
+      var w = this.w;
+
+      var colors = w.globals.markers.colors;
+      var strokeColors = w.config.markers.strokeColor || w.config.markers.strokeColors;
+
+      var pointStrokeColor = strokeColors instanceof Array ? strokeColors[seriesIndex] : strokeColors;
+      var pointFillColor = colors instanceof Array ? colors[seriesIndex] : colors;
+
+      return {
+        pointStrokeColor: pointStrokeColor,
+        pointFillColor: pointFillColor
+      };
+    }
+  }]);
+
+  return Markers;
+}();
+
+exports.default = Markers;
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Series Class for interation with the Series of the chart.
+ *
+ * @module Series
+ **/
+
+var Series = function () {
+  function Series(ctx) {
+    _classCallCheck(this, Series);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Series, [{
+    key: 'getAllSeriesEls',
+    value: function getAllSeriesEls() {
+      return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');
+    }
+  }, {
+    key: 'getSeriesByName',
+    value: function getSeriesByName(seriesName) {
+      return this.w.globals.dom.baseEl.querySelector('[seriesName=\'' + _Utils2.default.escapeString(seriesName) + '\']');
+    }
+  }, {
+    key: 'addCollapsedClassToSeries',
+    value: function addCollapsedClassToSeries(elSeries, index) {
+      var w = this.w;
+      function iterateOnAllCollapsedSeries(series) {
+        for (var cs = 0; cs < series.length; cs++) {
+          if (series[cs].index === index) {
+            elSeries.node.classList.add('apexcharts-series-collapsed');
+          }
+        }
+      }
+
+      iterateOnAllCollapsedSeries(w.globals.collapsedSeries);
+      iterateOnAllCollapsedSeries(w.globals.ancillaryCollapsedSeries);
+    }
+  }, {
+    key: 'toggleSeriesOnHover',
+    value: function toggleSeriesOnHover(e, targetElement) {
+      var w = this.w;
+
+      var allSeriesEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');
+
+      if (e.type === 'mousemove') {
+        var seriesCnt = parseInt(targetElement.getAttribute('rel')) - 1;
+
+        var seriesEl = null;
+        if (w.globals.axisCharts || w.config.chart.type === 'radialBar') {
+          if (w.globals.axisCharts) {
+            seriesEl = w.globals.dom.baseEl.querySelector('.apexcharts-series[data\\:realIndex=\'' + seriesCnt + '\']');
+          } else {
+            seriesEl = w.globals.dom.baseEl.querySelector('.apexcharts-series[rel=\'' + (seriesCnt + 1) + '\']');
+          }
+        } else {
+          seriesEl = w.globals.dom.baseEl.querySelector('.apexcharts-series[rel=\'' + (seriesCnt + 1) + '\'] path');
+        }
+
+        for (var se = 0; se < allSeriesEls.length; se++) {
+          allSeriesEls[se].classList.add('legend-mouseover-inactive');
+        }
+
+        if (seriesEl !== null) {
+          if (!w.globals.axisCharts) {
+            seriesEl.parentNode.classList.remove('legend-mouseover-inactive');
+          }
+
+          seriesEl.classList.remove('legend-mouseover-inactive');
+        }
+      } else if (e.type === 'mouseout') {
+        for (var _se = 0; _se < allSeriesEls.length; _se++) {
+          allSeriesEls[_se].classList.remove('legend-mouseover-inactive');
+        }
+      }
+    }
+  }, {
+    key: 'highlightRangeInSeries',
+    value: function highlightRangeInSeries(e, targetElement) {
+      var w = this.w;
+      var allHeatMapElements = w.globals.dom.baseEl.querySelectorAll('.apexcharts-heatmap-rect');
+
+      var allActive = function allActive() {
+        for (var i = 0; i < allHeatMapElements.length; i++) {
+          allHeatMapElements[i].classList.remove('legend-mouseover-inactive');
+        }
+      };
+      var allInactive = function allInactive() {
+        for (var i = 0; i < allHeatMapElements.length; i++) {
+          allHeatMapElements[i].classList.add('legend-mouseover-inactive');
+        }
+      };
+
+      var selectedActive = function selectedActive(range) {
+        for (var i = 0; i < allHeatMapElements.length; i++) {
+          var val = parseInt(allHeatMapElements[i].getAttribute('val'));
+          if (val >= range.from && val <= range.to) {
+            allHeatMapElements[i].classList.remove('legend-mouseover-inactive');
+          }
+        }
+      };
+
+      if (e.type === 'mousemove') {
+        var seriesCnt = parseInt(targetElement.getAttribute('rel')) - 1;
+        allActive();
+        allInactive();
+
+        var range = w.config.plotOptions.heatmap.colorScale.ranges[seriesCnt];
+
+        selectedActive(range);
+      } else if (e.type === 'mouseout') {
+        allActive();
+      }
+    }
+  }, {
+    key: 'getActiveSeriesIndex',
+    value: function getActiveSeriesIndex() {
+      var w = this.w;
+      var activeIndex = 0;
+
+      if (w.globals.series.length > 1) {
+        // active series flag is required to know if user has not deactivated via legend click
+        var firstActiveSeriesIndex = w.globals.series.map(function (series, index) {
+          if (series.length > 0 && w.config.series[index].type !== 'bar' && w.config.series[index].type !== 'column') {
+            return index;
+          } else {
+            return -1;
+          }
+        });
+
+        for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+          if (firstActiveSeriesIndex[a] !== -1) {
+            activeIndex = firstActiveSeriesIndex[a];
+            break;
+          }
+        }
+      }
+
+      return activeIndex;
+    }
+  }, {
+    key: 'getActiveConfigSeriesIndex',
+    value: function getActiveConfigSeriesIndex() {
+      var w = this.w;
+      var activeIndex = 0;
+
+      if (w.config.series.length > 1) {
+        // active series flag is required to know if user has not deactivated via legend click
+        var firstActiveSeriesIndex = w.config.series.map(function (series, index) {
+          if (series.data && series.data.length > 0) {
+            return index;
+          } else {
+            return -1;
+          }
+        });
+
+        for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+          if (firstActiveSeriesIndex[a] !== -1) {
+            activeIndex = firstActiveSeriesIndex[a];
+            break;
+          }
+        }
+      }
+
+      return activeIndex;
+    }
+  }, {
+    key: 'getPreviousPaths',
+    value: function getPreviousPaths() {
+      var w = this.w;
+
+      w.globals.previousPaths = [];
+
+      function pushPaths(seriesEls, i, type) {
+        var paths = seriesEls[i].childNodes;
+        var dArr = {
+          type: type,
+          paths: [],
+          realIndex: seriesEls[i].getAttribute('data:realIndex')
+        };
+
+        for (var j = 0; j < paths.length; j++) {
+          if (paths[j].hasAttribute('pathTo')) {
+            var d = paths[j].getAttribute('pathTo');
+            dArr.paths.push({
+              d: d
+            });
+          }
+        }
+
+        w.globals.previousPaths.push(dArr);
+      }
+
+      var linePaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-line-series .apexcharts-series');
+      if (linePaths.length > 0) {
+        for (var p = linePaths.length - 1; p >= 0; p--) {
+          pushPaths(linePaths, p, 'line');
+        }
+      }
+
+      var areapaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-area-series .apexcharts-series');
+
+      if (areapaths.length > 0) {
+        for (var i = areapaths.length - 1; i >= 0; i--) {
+          pushPaths(areapaths, i, 'area');
+        }
+      }
+
+      var barPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-series .apexcharts-series');
+      if (barPaths.length > 0) {
+        for (var _p = 0; _p < barPaths.length; _p++) {
+          pushPaths(barPaths, _p, 'bar');
+        }
+      }
+
+      var candlestickPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-candlestick-series .apexcharts-series');
+      if (candlestickPaths.length > 0) {
+        for (var _p2 = 0; _p2 < candlestickPaths.length; _p2++) {
+          pushPaths(candlestickPaths, _p2, 'candlestick');
+        }
+      }
+
+      var radarPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-radar-series .apexcharts-series');
+      if (radarPaths.length > 0) {
+        for (var _p3 = 0; _p3 < radarPaths.length; _p3++) {
+          pushPaths(radarPaths, _p3, 'radar');
+        }
+      }
+
+      var bubblepaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bubble-series .apexcharts-series');
+      if (bubblepaths.length > 0) {
+        for (var s = 0; s < bubblepaths.length; s++) {
+          var seriesEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bubble-series .apexcharts-series[data\\:realIndex=\'' + s + '\'] circle');
+          var dArr = [];
+
+          for (var _i = 0; _i < seriesEls.length; _i++) {
+            dArr.push({
+              x: seriesEls[_i].getAttribute('cx'),
+              y: seriesEls[_i].getAttribute('cy'),
+              r: seriesEls[_i].getAttribute('r')
+            });
+          }
+          w.globals.previousPaths.push(dArr);
+        }
+      }
+
+      var scatterpaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-scatter-series .apexcharts-series');
+      if (scatterpaths.length > 0) {
+        for (var _s = 0; _s < scatterpaths.length; _s++) {
+          var _seriesEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-scatter-series .apexcharts-series[data\\:realIndex=\'' + _s + '\'] circle');
+          var _dArr = [];
+
+          for (var _i2 = 0; _i2 < _seriesEls.length; _i2++) {
+            _dArr.push({
+              x: _seriesEls[_i2].getAttribute('cx'),
+              y: _seriesEls[_i2].getAttribute('cy'),
+              r: _seriesEls[_i2].getAttribute('r')
+            });
+          }
+          w.globals.previousPaths.push(_dArr);
+        }
+      }
+
+      var heatmapColors = w.globals.dom.baseEl.querySelectorAll('.apexcharts-heatmap .apexcharts-series');
+
+      if (heatmapColors.length > 0) {
+        for (var h = 0; h < heatmapColors.length; h++) {
+          var _seriesEls2 = w.globals.dom.baseEl.querySelectorAll('.apexcharts-heatmap .apexcharts-series[data\\:realIndex=\'' + h + '\'] rect');
+
+          var _dArr2 = [];
+
+          for (var _i3 = 0; _i3 < _seriesEls2.length; _i3++) {
+            _dArr2.push({
+              color: _seriesEls2[_i3].getAttribute('color')
+            });
+          }
+          w.globals.previousPaths.push(_dArr2);
+        }
+      }
+
+      if (!w.globals.axisCharts) {
+        // for non-axis charts (i.e., circular charts, pathFrom is not usable. We need whole series)
+        w.globals.previousPaths = w.globals.series;
+      }
+    }
+  }, {
+    key: 'handleNoData',
+    value: function handleNoData() {
+      var w = this.w;
+      var me = this;
+
+      var noDataOpts = w.config.noData;
+      var graphics = new _Graphics2.default(me.ctx);
+
+      var x = w.globals.svgWidth / 2;
+      var y = w.globals.svgHeight / 2;
+      var textAnchor = 'middle';
+
+      w.globals.noData = true;
+      w.globals.animationEnded = true;
+
+      if (noDataOpts.align === 'left') {
+        x = 10;
+        textAnchor = 'start';
+      } else if (noDataOpts.align === 'right') {
+        x = w.globals.svgWidth - 10;
+        textAnchor = 'end';
+      }
+
+      if (noDataOpts.verticalAlign === 'top') {
+        y = 50;
+      } else if (noDataOpts.verticalAlign === 'bottom') {
+        y = w.globals.svgHeight - 50;
+      }
+
+      x = x + noDataOpts.offsetX;
+      y = y + parseInt(noDataOpts.style.fontSize) + 2;
+
+      if (noDataOpts.text !== undefined && noDataOpts.text !== '') {
+        var titleText = graphics.drawText({
+          x: x,
+          y: y,
+          text: noDataOpts.text,
+          textAnchor: textAnchor,
+          fontSize: noDataOpts.style.fontSize,
+          fontFamily: noDataOpts.style.fontFamily,
+          foreColor: noDataOpts.style.color,
+          opacity: 1,
+          class: 'apexcharts-text-nodata'
+        });
+
+        titleText.node.setAttribute('class', 'apexcharts-title-text');
+
+        w.globals.dom.Paper.add(titleText);
+      }
+    }
+
+    // When user clicks on legends, the collapsed series is filled with [0,0,0,...,0]
+    // This is because we don't want to alter the series' length as it is used at many places
+
+  }, {
+    key: 'setNullSeriesToZeroValues',
+    value: function setNullSeriesToZeroValues(series) {
+      var w = this.w;
+      for (var sl = 0; sl < series.length; sl++) {
+        if (series[sl].length === 0) {
+          for (var j = 0; j < series[w.globals.maxValsInArrayIndex].length; j++) {
+            series[sl].push(0);
+          }
+        }
+      }
+      return series;
+    }
+  }, {
+    key: 'hasAllSeriesEqualX',
+    value: function hasAllSeriesEqualX() {
+      var equalLen = true;
+      var w = this.w;
+
+      var filteredSerX = this.filteredSeriesX();
+
+      for (var i = 0; i < filteredSerX.length - 1; i++) {
+        if (filteredSerX[i][0] !== filteredSerX[i + 1][0]) {
+          equalLen = false;
+          break;
+        }
+      }
+
+      w.globals.allSeriesHasEqualX = equalLen;
+
+      return equalLen;
+    }
+  }, {
+    key: 'filteredSeriesX',
+    value: function filteredSeriesX() {
+      var w = this.w;
+
+      var filteredSeriesX = w.globals.seriesX.map(function (ser, index) {
+        if (ser.length > 0) {
+          return ser;
+        } else {
+          return [];
+        }
+      });
+
+      return filteredSeriesX;
+    }
+  }]);
+
+  return Series;
+}();
+
+exports.default = Series;
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _CoreUtils = __webpack_require__(2);
+
+var _CoreUtils2 = _interopRequireDefault(_CoreUtils);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _Fill = __webpack_require__(4);
+
+var _Fill2 = _interopRequireDefault(_Fill);
+
+var _Filters = __webpack_require__(3);
+
+var _Filters2 = _interopRequireDefault(_Filters);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _DataLabels = __webpack_require__(9);
+
+var _DataLabels2 = _interopRequireDefault(_DataLabels);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Bar Class responsible for drawing both Columns and Bars.
+ *
+ * @module Bar
+ **/
+
+var Bar = function () {
+  function Bar(ctx, xyRatios) {
+    _classCallCheck(this, Bar);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+    this.barOptions = w.config.plotOptions.bar;
+
+    this.isHorizontal = this.barOptions.horizontal;
+    this.strokeWidth = w.config.stroke.width;
+    this.isNullValue = false;
+
+    this.xyRatios = xyRatios;
+
+    if (this.xyRatios !== null) {
+      this.xRatio = xyRatios.xRatio;
+      this.yRatio = xyRatios.yRatio;
+      this.invertedXRatio = xyRatios.invertedXRatio;
+      this.invertedYRatio = xyRatios.invertedYRatio;
+      this.baseLineY = xyRatios.baseLineY;
+      this.baseLineInvertedY = xyRatios.baseLineInvertedY;
+    }
+    this.yaxisIndex = 0;
+
+    this.seriesLen = 0;
+  }
+
+  /** primary draw method which is called on bar object
+   * @memberof Bar
+   * @param {array} series - user supplied series values
+   * @param {int} seriesIndex - the index by which series will be drawn on the svg
+   * @return {node} element which is supplied to parent chart draw method for appending
+   **/
+
+
+  _createClass(Bar, [{
+    key: 'draw',
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var coreUtils = new _CoreUtils2.default(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+      this.series = series;
+      this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+
+      this.initVariables(series);
+
+      var ret = graphics.group({
+        class: 'apexcharts-bar-series apexcharts-plot-series'
+      });
+
+      if (w.config.dataLabels.enabled) {
+        if (this.totalItems > w.config.plotOptions.bar.dataLabels.maxItems) {
+          console.warn('WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.');
+        }
+      }
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var x = void 0,
+            y = void 0,
+            xDivision = void 0,
+            // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+        yDivision = void 0,
+            // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+        zeroH = void 0,
+            // zeroH is the baseline where 0 meets y axis
+        zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+        var yArrj = []; // hold y values of current iterating series
+        var xArrj = []; // hold x values of current iterating series
+
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;
+
+        // el to which series will be drawn
+        var elSeries = graphics.group({
+          class: 'apexcharts-series',
+          rel: i + 1,
+          seriesName: _Utils2.default.escapeString(w.globals.seriesNames[realIndex]),
+          'data:realIndex': realIndex
+        });
+
+        this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex);
+
+        if (series[i].length > 0) {
+          this.visibleI = this.visibleI + 1;
+        }
+
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;
+
+        var initPositions = this.initialPositions();
+
+        y = initPositions.y;
+        barHeight = initPositions.barHeight;
+        yDivision = initPositions.yDivision;
+        zeroW = initPositions.zeroW;
+
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+
+        if (!this.horizontal) {
+          xArrj.push(x + barWidth / 2);
+        }
+
+        // eldatalabels
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+
+        for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+          if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+            this.isNullValue = true;
+          } else {
+            this.isNullValue = false;
+          }
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var paths = null;
+          if (this.isHorizontal) {
+            paths = this.drawBarPaths({
+              indexes: { i: i, j: j, realIndex: realIndex, bc: bc },
+              barHeight: barHeight,
+              strokeWidth: strokeWidth,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              zeroW: zeroW,
+              x: x,
+              y: y,
+              yDivision: yDivision,
+              elSeries: elSeries
+            });
+            barWidth = this.series[i][j] / this.invertedYRatio;
+          } else {
+            paths = this.drawColumnPaths({
+              indexes: { i: i, j: j, realIndex: realIndex, bc: bc },
+              x: x,
+              y: y,
+              xDivision: xDivision,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              barWidth: barWidth,
+              zeroH: zeroH,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries
+            });
+            barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+          }
+
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x;
+
+          // push current X
+          if (j > 0) {
+            xArrj.push(x + barWidth / 2);
+          }
+
+          yArrj.push(y);
+
+          var pathFill = this.getPathFillColor(series, i, j, realIndex);
+
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            visibleSeries: this.visibleI,
+            type: 'bar'
+          });
+        }
+
+        // push all x val arrays into main xArr
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj;
+
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: 'getPathFillColor',
+    value: function getPathFillColor(series, i, j, realIndex) {
+      var w = this.w;
+      var fill = new _Fill2.default(this.ctx);
+
+      var fillColor = null;
+      var seriesNumber = this.barOptions.distributed ? j : i;
+
+      if (this.barOptions.colors.ranges.length > 0) {
+        var colorRange = this.barOptions.colors.ranges;
+        colorRange.map(function (range) {
+          if (series[i][j] >= range.from && series[i][j] <= range.to) {
+            fillColor = range.color;
+          }
+        });
+      }
+
+      if (w.config.series[i].data[j] && w.config.series[i].data[j].fillColor) {
+        fillColor = w.config.series[i].data[j].fillColor;
+      }
+
+      var pathFill = fill.fillPath({
+        seriesNumber: this.barOptions.distributed ? seriesNumber : realIndex,
+        color: fillColor,
+        value: series[i][j]
+      });
+
+      return pathFill;
+    }
+  }, {
+    key: 'renderSeries',
+    value: function renderSeries(_ref) {
+      var realIndex = _ref.realIndex,
+          pathFill = _ref.pathFill,
+          lineFill = _ref.lineFill,
+          j = _ref.j,
+          i = _ref.i,
+          pathFrom = _ref.pathFrom,
+          pathTo = _ref.pathTo,
+          strokeWidth = _ref.strokeWidth,
+          elSeries = _ref.elSeries,
+          x = _ref.x,
+          y = _ref.y,
+          series = _ref.series,
+          barHeight = _ref.barHeight,
+          barWidth = _ref.barWidth,
+          elDataLabelsWrap = _ref.elDataLabelsWrap,
+          visibleSeries = _ref.visibleSeries,
+          type = _ref.type;
+
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      if (!lineFill) {
+        /* fix apexcharts#341 */
+        lineFill = this.barOptions.distributed ? w.globals.stroke.colors[j] : w.globals.stroke.colors[realIndex];
+      }
+
+      if (w.config.series[i].data[j] && w.config.series[i].data[j].strokeColor) {
+        lineFill = w.config.series[i].data[j].strokeColor;
+      }
+
+      if (this.isNullValue) {
+        pathFill = 'none';
+      }
+
+      var delay = j / w.config.chart.animations.animateGradually.delay * (w.config.chart.animations.speed / w.globals.dataPoints) / 2.4;
+
+      var renderedPath = graphics.renderPaths({
+        i: i,
+        j: j,
+        realIndex: realIndex,
+        pathFrom: pathFrom,
+        pathTo: pathTo,
+        stroke: lineFill,
+        strokeWidth: strokeWidth,
+        strokeLineCap: w.config.stroke.lineCap,
+        fill: pathFill,
+        animationDelay: delay,
+        initialSpeed: w.config.chart.animations.speed,
+        dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+        className: 'apexcharts-' + type + '-area',
+        id: 'apexcharts-' + type + '-area'
+      });
+
+      renderedPath.attr('clip-path', 'url(#gridRectMask' + w.globals.cuid + ')');
+
+      var filters = new _Filters2.default(this.ctx);
+      filters.setSelectionFilter(renderedPath, realIndex, j);
+      elSeries.add(renderedPath);
+
+      var dataLabels = this.calculateDataLabelsPos({
+        x: x,
+        y: y,
+        i: i,
+        j: j,
+        series: series,
+        realIndex: realIndex,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        renderedPath: renderedPath,
+        visibleSeries: visibleSeries
+      });
+      if (dataLabels !== null) {
+        elDataLabelsWrap.add(dataLabels);
+      }
+
+      elSeries.add(elDataLabelsWrap);
+      return elSeries;
+    }
+  }, {
+    key: 'initVariables',
+    value: function initVariables(series) {
+      var w = this.w;
+      this.series = series;
+      this.totalItems = 0;
+      this.seriesLen = 0;
+      this.visibleI = -1;
+      this.visibleItems = 1; // number of visible bars after user zoomed in/out
+
+      for (var sl = 0; sl < series.length; sl++) {
+        if (series[sl].length > 0) {
+          this.seriesLen = this.seriesLen + 1;
+          this.totalItems += series[sl].length;
+        }
+        if (w.globals.isXNumeric) {
+          // get max visible items
+          for (var j = 0; j < series[sl].length; j++) {
+            if (w.globals.seriesX[sl][j] > w.globals.minX && w.globals.seriesX[sl][j] < w.globals.maxX) {
+              this.visibleItems++;
+            }
+          }
+        } else {
+          this.visibleItems = w.globals.dataPoints;
+        }
+      }
+
+      if (this.seriesLen === 0) {
+        // A small adjustment when combo charts are used
+        this.seriesLen = 1;
+      }
+    }
+  }, {
+    key: 'initialPositions',
+    value: function initialPositions() {
+      var w = this.w;
+      var x = void 0,
+          y = void 0,
+          yDivision = void 0,
+          xDivision = void 0,
+          barHeight = void 0,
+          barWidth = void 0,
+          zeroH = void 0,
+          zeroW = void 0;
+      if (this.isHorizontal) {
+        // height divided into equal parts
+        yDivision = w.globals.gridHeight / w.globals.dataPoints;
+        barHeight = yDivision / this.seriesLen;
+
+        if (w.globals.isXNumeric) {
+          yDivision = w.globals.gridHeight / this.totalItems;
+          barHeight = yDivision / this.seriesLen;
+        }
+
+        barHeight = barHeight * parseInt(this.barOptions.barHeight) / 100;
+
+        zeroW = this.baseLineInvertedY + w.globals.padHorizontal + (this.isReversed ? w.globals.gridWidth : 0) - (this.isReversed ? this.baseLineInvertedY * 2 : 0);
+
+        y = (yDivision - barHeight * this.seriesLen) / 2;
+      } else {
+        // width divided into equal parts
+        xDivision = w.globals.gridWidth / this.visibleItems;
+        barWidth = xDivision / this.seriesLen * parseInt(this.barOptions.columnWidth) / 100;
+
+        if (w.globals.isXNumeric) {
+          // max barwidth should be equal to minXDiff to avoid overlap
+          xDivision = w.globals.minXDiff / this.xRatio;
+          barWidth = xDivision / this.seriesLen * parseInt(this.barOptions.columnWidth) / 100;
+        }
+
+        zeroH = w.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0);
+
+        x = w.globals.padHorizontal + (xDivision - barWidth * this.seriesLen) / 2;
+      }
+
+      return {
+        x: x,
+        y: y,
+        yDivision: yDivision,
+        xDivision: xDivision,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        zeroH: zeroH,
+        zeroW: zeroW
+      };
+    }
+  }, {
+    key: 'drawBarPaths',
+    value: function drawBarPaths(_ref2) {
+      var indexes = _ref2.indexes,
+          barHeight = _ref2.barHeight,
+          strokeWidth = _ref2.strokeWidth,
+          pathTo = _ref2.pathTo,
+          pathFrom = _ref2.pathFrom,
+          zeroW = _ref2.zeroW,
+          x = _ref2.x,
+          y = _ref2.y,
+          yDivision = _ref2.yDivision,
+          elSeries = _ref2.elSeries;
+
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+
+      if (w.globals.isXNumeric) {
+        y = (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - barHeight;
+      }
+
+      var barYPosition = y + barHeight * this.visibleI;
+
+      pathTo = graphics.move(zeroW, barYPosition);
+
+      pathFrom = graphics.move(zeroW, barYPosition);
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j);
+      }
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        x = zeroW;
+      } else {
+        x = zeroW + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2;
+      }
+
+      var endingShapeOpts = {
+        barHeight: barHeight,
+        strokeWidth: strokeWidth,
+        barYPosition: barYPosition,
+        x: x,
+        zeroW: zeroW
+      };
+      var endingShape = this.barEndingShape(w, endingShapeOpts, this.series, i, j);
+
+      pathTo = pathTo + graphics.line(endingShape.newX, barYPosition) + endingShape.path + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition);
+
+      pathFrom = pathFrom + graphics.line(zeroW, barYPosition) + endingShape.ending_p_from + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition);
+
+      if (!w.globals.isXNumeric) {
+        y = y + yDivision;
+      }
+
+      if (this.barOptions.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= this.barOptions.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+
+        var bcolor = this.barOptions.colors.backgroundBarColors[bc];
+        var rect = graphics.drawRect(0, barYPosition - barHeight * this.visibleI, w.globals.gridWidth, barHeight * this.seriesLen, 0, bcolor, this.barOptions.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y,
+        barYPosition: barYPosition
+      };
+    }
+  }, {
+    key: 'drawColumnPaths',
+    value: function drawColumnPaths(_ref3) {
+      var indexes = _ref3.indexes,
+          x = _ref3.x,
+          y = _ref3.y,
+          xDivision = _ref3.xDivision,
+          pathTo = _ref3.pathTo,
+          pathFrom = _ref3.pathFrom,
+          barWidth = _ref3.barWidth,
+          zeroH = _ref3.zeroH,
+          strokeWidth = _ref3.strokeWidth,
+          elSeries = _ref3.elSeries;
+
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var i = indexes.i;
+      var j = indexes.j;
+
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+
+      if (w.globals.isXNumeric) {
+        x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x + barWidth * this.visibleI;
+
+      pathTo = graphics.move(barXPosition, zeroH);
+
+      pathFrom = graphics.move(barXPosition, zeroH);
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j);
+      }
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        y = zeroH;
+      } else {
+        y = zeroH - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2;
+      }
+
+      var endingShapeOpts = {
+        barWidth: barWidth,
+        strokeWidth: strokeWidth,
+        barXPosition: barXPosition,
+        y: y,
+        zeroH: zeroH
+      };
+      var endingShape = this.barEndingShape(w, endingShapeOpts, this.series, i, j);
+
+      pathTo = pathTo + graphics.line(barXPosition, endingShape.newY) + endingShape.path + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition - strokeWidth / 2, zeroH);
+      pathFrom = pathFrom + graphics.line(barXPosition, zeroH) + endingShape.ending_p_from + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition - strokeWidth / 2, zeroH);
+
+      if (!w.globals.isXNumeric) {
+        x = x + xDivision;
+      }
+
+      if (this.barOptions.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= this.barOptions.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+        var bcolor = this.barOptions.colors.backgroundBarColors[bc];
+        var rect = graphics.drawRect(barXPosition - barWidth * this.visibleI, 0, barWidth * this.seriesLen, w.globals.gridHeight, 0, bcolor, this.barOptions.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y,
+        barXPosition: barXPosition
+      };
+    }
+
+    /** getPathFrom is a common function for bars/columns which is used to get previous paths when data changes.
+     * @memberof Bar
+     * @param {int} realIndex - current iterating i
+     * @param {int} j - current iterating series's j index
+     * @return {string} pathFrom is the string which will be appended in animations
+     **/
+
+  }, {
+    key: 'getPathFrom',
+    value: function getPathFrom(realIndex, j) {
+      var w = this.w;
+      var pathFrom = void 0;
+      for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+        var gpp = w.globals.previousPaths[pp];
+
+        if (gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+          if (typeof w.globals.previousPaths[pp].paths[j] !== 'undefined') {
+            pathFrom = w.globals.previousPaths[pp].paths[j].d;
+          }
+        }
+      }
+      return pathFrom;
+    }
+
+    /** calculateBarDataLabels is used to calculate the positions for the data-labels
+     * It also sets the element's data attr for bars and calls drawCalculatedBarDataLabels()
+     * @memberof Bar
+     * @param {object} {barProps} most of the bar properties used throughout the bar
+     * drawing function
+     * @return {object} dataLabels node-element which you can append later
+     **/
+
+  }, {
+    key: 'calculateDataLabelsPos',
+    value: function calculateDataLabelsPos(_ref4) {
+      var x = _ref4.x,
+          y = _ref4.y,
+          i = _ref4.i,
+          j = _ref4.j,
+          realIndex = _ref4.realIndex,
+          series = _ref4.series,
+          barHeight = _ref4.barHeight,
+          barWidth = _ref4.barWidth,
+          visibleSeries = _ref4.visibleSeries,
+          renderedPath = _ref4.renderedPath;
+
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+
+      var bcx = x + parseFloat(barWidth * visibleSeries);
+      var bcy = y + parseFloat(barHeight * visibleSeries);
+
+      if (w.globals.isXNumeric && !w.globals.isBarHorizontal) {
+        bcx = x + parseFloat(barWidth * (visibleSeries + 1)) - strokeWidth;
+        bcy = y + parseFloat(barHeight * (visibleSeries + 1)) - strokeWidth;
+      }
+
+      var dataLabels = null;
+      var dataLabelsX = x;
+      var dataLabelsY = y;
+      var dataLabelsPos = {};
+      var dataLabelsConfig = w.config.dataLabels;
+      var barDataLabelsConfig = this.barOptions.dataLabels;
+
+      var offX = dataLabelsConfig.offsetX;
+      var offY = dataLabelsConfig.offsetY;
+
+      var textRects = { width: 0, height: 0 };
+      if (w.config.dataLabels.enabled) {
+        textRects = graphics.getTextRects(w.globals.yLabelFormatters[0](w.globals.maxY), parseInt(dataLabelsConfig.style.fontSize));
+      }
+
+      if (this.isHorizontal) {
+        dataLabelsPos = this.calculateBarsDataLabelsPosition({
+          x: x,
+          y: y,
+          i: i,
+          j: j,
+          renderedPath: renderedPath,
+          bcy: bcy,
+          barHeight: barHeight,
+          barWidth: barWidth,
+          textRects: textRects,
+          strokeWidth: strokeWidth,
+          dataLabelsX: dataLabelsX,
+          dataLabelsY: dataLabelsY,
+          barDataLabelsConfig: barDataLabelsConfig,
+          offX: offX,
+          offY: offY
+        });
+      } else {
+        dataLabelsPos = this.calculateColumnsDataLabelsPosition({
+          x: x,
+          y: y,
+          i: i,
+          j: j,
+          renderedPath: renderedPath,
+          realIndex: realIndex,
+          bcx: bcx,
+          bcy: bcy,
+          barHeight: barHeight,
+          barWidth: barWidth,
+          textRects: textRects,
+          strokeWidth: strokeWidth,
+          dataLabelsY: dataLabelsY,
+          barDataLabelsConfig: barDataLabelsConfig,
+          offX: offX,
+          offY: offY
+        });
+      }
+
+      renderedPath.attr({
+        cy: dataLabelsPos.bcy,
+        cx: dataLabelsPos.bcx,
+        j: j,
+        val: series[i][j],
+        barHeight: barHeight,
+        barWidth: barWidth
+      });
+
+      dataLabels = this.drawCalculatedDataLabels({
+        x: dataLabelsPos.dataLabelsX,
+        y: dataLabelsPos.dataLabelsY,
+        val: series[i][j],
+        i: realIndex,
+        j: j,
+        barWidth: barWidth,
+        barHeight: barHeight,
+        textRects: textRects,
+        dataLabelsConfig: dataLabelsConfig
+      });
+
+      return dataLabels;
+    }
+  }, {
+    key: 'calculateColumnsDataLabelsPosition',
+    value: function calculateColumnsDataLabelsPosition(opts) {
+      var w = this.w;
+      var i = opts.i,
+          j = opts.j,
+          y = opts.y,
+          bcx = opts.bcx,
+          barWidth = opts.barWidth,
+          barHeight = opts.barHeight,
+          textRects = opts.textRects,
+          dataLabelsY = opts.dataLabelsY,
+          barDataLabelsConfig = opts.barDataLabelsConfig,
+          strokeWidth = opts.strokeWidth,
+          offX = opts.offX,
+          offY = opts.offY;
+
+      var dataLabelsX = void 0;
+
+      var dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints;
+      bcx = bcx - strokeWidth / 2;
+
+      if (w.globals.isXNumeric) {
+        dataLabelsX = bcx - barWidth / 2 + offX;
+      } else {
+        dataLabelsX = bcx - dataPointsDividedWidth + barWidth / 2 + offX;
+      }
+      var valIsNegative = this.series[i][j] <= 0;
+
+      if (this.isReversed) {
+        y = y - barHeight;
+      }
+
+      switch (barDataLabelsConfig.position) {
+        case 'center':
+          if (valIsNegative) {
+            dataLabelsY = y + barHeight / 2 + textRects.height / 2 + offY;
+          } else {
+            dataLabelsY = y + barHeight / 2 + textRects.height / 2 - offY;
+          }
+          break;
+        case 'bottom':
+          if (valIsNegative) {
+            dataLabelsY = y + barHeight + textRects.height + strokeWidth + offY;
+          } else {
+            dataLabelsY = y + barHeight - textRects.height / 2 + strokeWidth - offY;
+          }
+          break;
+        case 'top':
+          if (valIsNegative) {
+            dataLabelsY = y - textRects.height / 2 - offY;
+          } else {
+            dataLabelsY = y + textRects.height + offY;
+          }
+          break;
+      }
+
+      if (!w.config.chart.stacked) {
+        if (dataLabelsY < 0) {
+          dataLabelsY = 0 + strokeWidth;
+        } else if (dataLabelsY + textRects.height / 3 > w.globals.gridHeight) {
+          dataLabelsY = w.globals.gridHeight - strokeWidth;
+        }
+      }
+
+      return {
+        bcx: bcx,
+        bcy: y,
+        dataLabelsX: dataLabelsX,
+        dataLabelsY: dataLabelsY
+      };
+    }
+  }, {
+    key: 'calculateBarsDataLabelsPosition',
+    value: function calculateBarsDataLabelsPosition(opts) {
+      var w = this.w;
+      var x = opts.x,
+          i = opts.i,
+          j = opts.j,
+          bcy = opts.bcy,
+          barHeight = opts.barHeight,
+          barWidth = opts.barWidth,
+          textRects = opts.textRects,
+          dataLabelsX = opts.dataLabelsX,
+          strokeWidth = opts.strokeWidth,
+          barDataLabelsConfig = opts.barDataLabelsConfig,
+          offX = opts.offX,
+          offY = opts.offY;
+
+
+      var dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints;
+
+      var dataLabelsY = bcy - dataPointsDividedHeight + barHeight / 2 + textRects.height / 2 + offY - 3;
+
+      var valIsNegative = this.series[i][j] <= 0;
+
+      if (this.isReversed) {
+        x = x + barWidth;
+      }
+
+      switch (barDataLabelsConfig.position) {
+        case 'center':
+          if (valIsNegative) {
+            dataLabelsX = x - barWidth / 2 - offX;
+          } else {
+            dataLabelsX = x - barWidth / 2 + offX;
+          }
+          break;
+        case 'bottom':
+          if (valIsNegative) {
+            dataLabelsX = x - barWidth - strokeWidth - Math.round(textRects.width / 2) - offX;
+          } else {
+            dataLabelsX = x - barWidth + strokeWidth + Math.round(textRects.width / 2) + offX;
+          }
+          break;
+        case 'top':
+          if (valIsNegative) {
+            dataLabelsX = x - strokeWidth + Math.round(textRects.width / 2) - offX;
+          } else {
+            dataLabelsX = x - strokeWidth - Math.round(textRects.width / 2) + offX;
+          }
+          break;
+      }
+
+      if (!w.config.chart.stacked) {
+        if (dataLabelsX < 0) {
+          dataLabelsX = dataLabelsX + textRects.width + strokeWidth;
+        } else if (dataLabelsX + textRects.width / 2 > w.globals.gridWidth) {
+          dataLabelsX = w.globals.gridWidth - textRects.width - strokeWidth;
+        }
+      }
+
+      return {
+        bcx: x,
+        bcy: bcy,
+        dataLabelsX: dataLabelsX,
+        dataLabelsY: dataLabelsY
+      };
+    }
+  }, {
+    key: 'drawCalculatedDataLabels',
+    value: function drawCalculatedDataLabels(_ref5) {
+      var x = _ref5.x,
+          y = _ref5.y,
+          val = _ref5.val,
+          i = _ref5.i,
+          j = _ref5.j,
+          textRects = _ref5.textRects,
+          barHeight = _ref5.barHeight,
+          barWidth = _ref5.barWidth,
+          dataLabelsConfig = _ref5.dataLabelsConfig;
+
+      var w = this.w;
+
+      var dataLabels = new _DataLabels2.default(this.ctx);
+      var graphics = new _Graphics2.default(this.ctx);
+      var formatter = dataLabelsConfig.formatter;
+
+      var elDataLabelsWrap = null;
+
+      var isSeriesNotCollapsed = w.globals.collapsedSeriesIndices.indexOf(i) > -1;
+
+      if (dataLabelsConfig.enabled && !isSeriesNotCollapsed) {
+        elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-data-labels'
+        });
+
+        var text = '';
+        if (typeof val !== 'undefined' && val !== null) {
+          text = formatter(val, { seriesIndex: i, dataPointIndex: j, w: w });
+        }
+
+        if (val === 0 && w.config.chart.stacked) {
+          // in a stacked bar/column chart, 0 value should be neglected as it will overlap on the next element
+          text = '';
+        }
+
+        if (w.config.chart.stacked && this.barOptions.dataLabels.hideOverflowingLabels) {
+          // if there is not enough space to draw the label in the bar/column rect, check hideOverflowingLabels property to prevent overflowing on wrong rect
+          // Note: This issue is only seen in stacked charts
+          if (this.isHorizontal) {
+            barWidth = this.series[i][j] / this.yRatio[this.yaxisIndex];
+            if (textRects.width / 1.6 > barWidth) {
+              text = '';
+            }
+          } else {
+            barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+            if (textRects.height / 1.6 > barHeight) {
+              text = '';
+            }
+          }
+        }
+
+        dataLabels.plotDataLabelsText({
+          x: x,
+          y: y,
+          text: text,
+          i: i,
+          j: j,
+          parent: elDataLabelsWrap,
+          dataLabelsConfig: dataLabelsConfig,
+          alwaysDrawDataLabel: true,
+          offsetCorrection: true
+        });
+      }
+
+      return elDataLabelsWrap;
+    }
+
+    /** barEndingShape draws the various shapes on top of bars/columns
+     * @memberof Bar
+     * @param {object} w - chart context
+     * @param {object} opts - consists several properties like barHeight/barWidth
+     * @param {array} series - global primary series
+     * @param {int} i - current iterating series's index
+     * @param {int} j - series's j of i
+     * @return {object} path - ending shape whether round/arrow
+     *         ending_p_from - similar to pathFrom
+     *         newY - which is calculated from existing y and new shape's top
+     **/
+
+  }, {
+    key: 'barEndingShape',
+    value: function barEndingShape(w, opts, series, i, j) {
+      var graphics = new _Graphics2.default(this.ctx);
+
+      if (this.isHorizontal) {
+        var endingShape = null;
+        var endingShapeFrom = '';
+        var x = opts.x;
+
+        if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) {
+          var inverse = series[i][j] < 0;
+          var eX = opts.barHeight / 2 - opts.strokeWidth;
+          if (inverse) eX = -opts.barHeight / 2 - opts.strokeWidth;
+
+          if (!w.config.chart.stacked) {
+            if (this.barOptions.endingShape === 'rounded') {
+              x = opts.x - eX / 2;
+            }
+          }
+
+          switch (this.barOptions.endingShape) {
+            case 'flat':
+              endingShape = graphics.line(x, opts.barYPosition + opts.barHeight - opts.strokeWidth);
+              break;
+
+            case 'rounded':
+              endingShape = graphics.quadraticCurve(x + eX, opts.barYPosition + (opts.barHeight - opts.strokeWidth) / 2, x, opts.barYPosition + opts.barHeight - opts.strokeWidth);
+              break;
+          }
+        }
+        return {
+          path: endingShape,
+          ending_p_from: endingShapeFrom,
+          newX: x
+        };
+      } else {
+        var _endingShape = null;
+        var _endingShapeFrom = '';
+        var y = opts.y;
+
+        if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) {
+          var _inverse = series[i][j] < 0;
+
+          var eY = opts.barWidth / 2 - opts.strokeWidth;
+
+          if (_inverse) eY = -opts.barWidth / 2 - opts.strokeWidth;
+
+          if (!w.config.chart.stacked) {
+            // the shape exceeds the chart height, hence reduce y
+            if (this.barOptions.endingShape === 'rounded') {
+              y = y + eY / 2;
+            }
+          }
+
+          switch (this.barOptions.endingShape) {
+            case 'flat':
+              _endingShape = graphics.line(opts.barXPosition + opts.barWidth - opts.strokeWidth, y);
+              break;
+
+            case 'rounded':
+              _endingShape = graphics.quadraticCurve(opts.barXPosition + (opts.barWidth - opts.strokeWidth) / 2, y - eY, opts.barXPosition + opts.barWidth - opts.strokeWidth, y);
+              break;
+          }
+        }
+
+        return {
+          path: _endingShape,
+          ending_p_from: _endingShapeFrom,
+          newY: y
+        };
+      }
+    }
+  }]);
+
+  return Bar;
+}();
+
+exports.default = Bar;
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Scatter = __webpack_require__(19);
+
+var _Scatter2 = _interopRequireDefault(_Scatter);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Filters = __webpack_require__(3);
+
+var _Filters2 = _interopRequireDefault(_Filters);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts DataLabels Class for drawing dataLabels on Axes based Charts.
+ *
+ * @module DataLabels
+ **/
+
+var DataLabels = function () {
+  function DataLabels(ctx) {
+    _classCallCheck(this, DataLabels);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  // When there are many datalabels to be printed, and some of them overlaps each other in the same series, this method will take care of that
+  // Also, when datalabels exceeds the drawable area and get clipped off, we need to adjust and move some pixels to make them visible again
+
+
+  _createClass(DataLabels, [{
+    key: 'dataLabelsCorrection',
+    value: function dataLabelsCorrection(x, y, val, i, dataPointIndex, alwaysDrawDataLabel, fontSize) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+      var drawnextLabel = false; //
+
+      var textRects = graphics.getTextRects(val, fontSize);
+      var width = textRects.width;
+      var height = textRects.height;
+
+      // first value in series, so push an empty array
+      if (typeof w.globals.dataLabelsRects[i] === 'undefined') w.globals.dataLabelsRects[i] = [];
+
+      // then start pushing actual rects in that sub-array
+      w.globals.dataLabelsRects[i].push({ x: x, y: y, width: width, height: height });
+
+      var len = w.globals.dataLabelsRects[i].length - 2;
+      var lastDrawnIndex = typeof w.globals.lastDrawnDataLabelsIndexes[i] !== 'undefined' ? w.globals.lastDrawnDataLabelsIndexes[i][w.globals.lastDrawnDataLabelsIndexes[i].length - 1] : 0;
+
+      if (typeof w.globals.dataLabelsRects[i][len] !== 'undefined') {
+        var lastDataLabelRect = w.globals.dataLabelsRects[i][lastDrawnIndex];
+        if (
+        // next label forward and x not intersecting
+        x > lastDataLabelRect.x + lastDataLabelRect.width + 2 || y > lastDataLabelRect.y + lastDataLabelRect.height + 2 || x + width < lastDataLabelRect.x // next label is going to be drawn backwards
+        ) {
+            // the 2 indexes don't override, so OK to draw next label
+            drawnextLabel = true;
+          }
+      }
+
+      if (dataPointIndex === 0 || alwaysDrawDataLabel) {
+        drawnextLabel = true;
+      }
+
+      return {
+        x: x,
+        y: y,
+        drawnextLabel: drawnextLabel
+      };
+    }
+  }, {
+    key: 'drawDataLabel',
+    value: function drawDataLabel(pos, i, j) {
+      var z = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
+      var align = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'top';
+
+      // this method handles line, area, bubble, scatter charts as those charts contains markers/points which have pre-defined x/y positions
+      // all other charts like bars / heatmaps will define their own drawDataLabel routine
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var dataLabelsConfig = w.config.dataLabels;
+
+      var x = 0;
+      var y = 0;
+
+      var dataPointIndex = j;
+
+      var elDataLabelsWrap = null;
+
+      if (!dataLabelsConfig.enabled || pos.x instanceof Array !== true) {
+        return elDataLabelsWrap;
+      }
+
+      elDataLabelsWrap = graphics.group({
+        class: 'apexcharts-data-labels'
+      });
+
+      elDataLabelsWrap.attr('clip-path', 'url(#gridRectMarkerMask' + w.globals.cuid + ')');
+
+      for (var q = 0; q < pos.x.length; q++) {
+        x = pos.x[q] + dataLabelsConfig.offsetX;
+        y = pos.y[q] + dataLabelsConfig.offsetY - w.globals.markers.size[i] - 5;
+
+        if (align === 'bottom') {
+          y = y + w.globals.markers.size[i] * 2 + parseInt(dataLabelsConfig.style.fontSize) * 1.4;
+        }
+
+        if (!isNaN(x)) {
+          // a small hack as we have 2 points for the first val to connect it
+          if (j === 1 && q === 0) dataPointIndex = 0;
+          if (j === 1 && q === 1) dataPointIndex = 1;
+
+          var val = w.globals.series[i][dataPointIndex];
+
+          var text = '';
+
+          if (w.config.chart.type === 'bubble') {
+            text = w.globals.seriesZ[i][dataPointIndex];
+            y = pos.y[q] + w.config.dataLabels.offsetY;
+            var scatter = new _Scatter2.default(this.ctx);
+            var centerTextInBubbleCoords = scatter.centerTextInBubble(y, i, dataPointIndex);
+            y = centerTextInBubbleCoords.y;
+          } else {
+            if (typeof val !== 'undefined' && val !== null) {
+              text = w.config.dataLabels.formatter(val, {
+                ctx: this.ctx,
+                seriesIndex: i,
+                dataPointIndex: dataPointIndex,
+                w: w
+              });
+            }
+          }
+
+          this.plotDataLabelsText({
+            x: x,
+            y: y,
+            text: text,
+            i: i,
+            j: dataPointIndex,
+            parent: elDataLabelsWrap,
+            offsetCorrection: true,
+            dataLabelsConfig: w.config.dataLabels
+          });
+        }
+      }
+
+      return elDataLabelsWrap;
+    }
+  }, {
+    key: 'plotDataLabelsText',
+    value: function plotDataLabelsText(opts) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+      var x = opts.x,
+          y = opts.y,
+          i = opts.i,
+          j = opts.j,
+          text = opts.text,
+          textAnchor = opts.textAnchor,
+          parent = opts.parent,
+          dataLabelsConfig = opts.dataLabelsConfig,
+          alwaysDrawDataLabel = opts.alwaysDrawDataLabel,
+          offsetCorrection = opts.offsetCorrection;
+
+
+      if (Array.isArray(w.config.dataLabels.enabledOnSeries)) {
+        if (w.config.dataLabels.enabledOnSeries.indexOf(i) > -1) {
+          return;
+        }
+      }
+
+      var correctedLabels = {
+        x: x,
+        y: y,
+        drawnextLabel: true
+      };
+
+      if (offsetCorrection) {
+        correctedLabels = this.dataLabelsCorrection(x, y, text, i, j, alwaysDrawDataLabel, parseInt(dataLabelsConfig.style.fontSize));
+      }
+
+      // when zoomed, we don't need to correct labels offsets,
+      // but if normally, labels get cropped, correct them
+      if (!w.globals.zoomed) {
+        x = correctedLabels.x;
+        y = correctedLabels.y;
+      }
+
+      if (correctedLabels.drawnextLabel) {
+        var dataLabelText = graphics.drawText({
+          width: 100,
+          height: parseInt(dataLabelsConfig.style.fontSize),
+          x: x,
+          y: y,
+          foreColor: w.globals.dataLabels.style.colors[i],
+          textAnchor: textAnchor || dataLabelsConfig.textAnchor,
+          text: text,
+          fontSize: dataLabelsConfig.style.fontSize,
+          fontFamily: dataLabelsConfig.style.fontFamily
+        });
+
+        dataLabelText.attr({
+          class: 'apexcharts-datalabel',
+          cx: x,
+          cy: y
+        });
+
+        if (dataLabelsConfig.dropShadow.enabled) {
+          var textShadow = dataLabelsConfig.dropShadow;
+          var filters = new _Filters2.default(this.ctx);
+          filters.dropShadow(dataLabelText, textShadow);
+        }
+
+        parent.add(dataLabelText);
+
+        if (typeof w.globals.lastDrawnDataLabelsIndexes[i] === 'undefined') {
+          w.globals.lastDrawnDataLabelsIndexes[i] = [];
+        }
+
+        w.globals.lastDrawnDataLabelsIndexes[i].push(j);
+      }
+    }
+  }]);
+
+  return DataLabels;
+}();
+
+exports.default = DataLabels;
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _DateTime = __webpack_require__(11);
+
+var _DateTime2 = _interopRequireDefault(_DateTime);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Formatter Class for setting value formatters for axes as well as tooltips.
+ *
+ * @module Formatters
+ **/
+
+var Formatters = function () {
+  function Formatters(ctx) {
+    _classCallCheck(this, Formatters);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.tooltipKeyFormat = 'dd MMM';
+  }
+
+  _createClass(Formatters, [{
+    key: 'xLabelFormat',
+    value: function xLabelFormat(fn, val) {
+      var w = this.w;
+
+      if (w.config.xaxis.type === 'datetime') {
+        // if user has not specified a custom formatter, use the default tooltip.x.format
+        if (w.config.tooltip.x.formatter === undefined) {
+          var datetimeObj = new _DateTime2.default(this.ctx);
+          return datetimeObj.formatDate(new Date(val), w.config.tooltip.x.format, true, true);
+        }
+      }
+
+      return fn(val);
+    }
+  }, {
+    key: 'setLabelFormatters',
+    value: function setLabelFormatters() {
+      var w = this.w;
+
+      w.globals.xLabelFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.xaxisTooltipFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.ttKeyFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.ttZFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.legendFormatter = function (val) {
+        return val;
+      };
+
+      if (typeof w.config.tooltip.x.formatter === 'function') {
+        w.globals.ttKeyFormatter = w.config.tooltip.x.formatter;
+      }
+
+      if (typeof w.config.xaxis.tooltip.formatter === 'function') {
+        w.globals.xaxisTooltipFormatter = w.config.xaxis.tooltip.formatter;
+      }
+
+      if (Array.isArray(w.config.tooltip.y)) {
+        w.globals.ttVal = w.config.tooltip.y;
+      } else {
+        if (w.config.tooltip.y.formatter !== undefined) {
+          w.globals.ttVal = w.config.tooltip.y;
+        }
+      }
+
+      if (w.config.tooltip.z.formatter !== undefined) {
+        w.globals.ttZFormatter = w.config.tooltip.z.formatter;
+      }
+
+      // legend formatter - if user wants to append any global values of series to legend text
+      if (w.config.legend.formatter !== undefined) {
+        w.globals.legendFormatter = w.config.legend.formatter;
+      }
+
+      // formatter function will always overwrite format property
+      if (w.config.xaxis.labels.formatter !== undefined) {
+        w.globals.xLabelFormatter = w.config.xaxis.labels.formatter;
+      } else {
+        w.globals.xLabelFormatter = function (val) {
+          if (_Utils2.default.isNumber(val)) {
+            // numeric xaxis may have smaller range, so defaulting to 1 decimal
+            if (w.config.xaxis.type === 'numeric' && w.globals.dataPoints < 50) {
+              return val.toFixed(1);
+            }
+            return val.toFixed(0);
+          }
+          return val;
+        };
+      }
+
+      // formatter function will always overwrite format property
+      w.config.yaxis.forEach(function (yaxe, i) {
+        if (yaxe.labels.formatter !== undefined) {
+          w.globals.yLabelFormatters[i] = yaxe.labels.formatter;
+        } else {
+          w.globals.yLabelFormatters[i] = function (val) {
+            if (_Utils2.default.isNumber(val)) {
+              if (w.globals.yValueDecimal !== 0) {
+                return val.toFixed(yaxe.decimalsInFloat !== undefined ? yaxe.decimalsInFloat : w.globals.yValueDecimal);
+              } else if (w.globals.maxY - w.globals.minY < 5) {
+                return val.toFixed(1);
+              } else {
+                return val.toFixed(0);
+              }
+            }
+            return val;
+          };
+        }
+      });
+
+      return w.globals;
+    }
+  }, {
+    key: 'heatmapLabelFormatters',
+    value: function heatmapLabelFormatters() {
+      var w = this.w;
+      if (w.config.chart.type === 'heatmap') {
+        w.globals.yAxisScale[0].result = w.globals.seriesNames.slice();
+
+        //  get the longest string from the labels array and also apply label formatter to it
+        var longest = w.globals.seriesNames.reduce(function (a, b) {
+          return a.length > b.length ? a : b;
+        }, 0);
+        w.globals.yAxisScale[0].niceMax = longest;
+        w.globals.yAxisScale[0].niceMin = longest;
+      }
+    }
+  }]);
+
+  return Formatters;
+}();
+
+exports.default = Formatters;
+
+/***/ }),
+/* 11 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * DateTime Class to manipulate datetime values.
+ *
+ * @module DateTime
+ **/
+
+var DateTime = function () {
+  function DateTime(ctx) {
+    _classCallCheck(this, DateTime);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    this.months31 = [1, 3, 5, 7, 8, 10, 12];
+    this.months30 = [2, 4, 6, 9, 11];
+
+    this.daysCntOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
+  }
+
+  _createClass(DateTime, [{
+    key: 'isValidDate',
+    value: function isValidDate(date) {
+      return !isNaN(this.parseDate(date));
+    }
+  }, {
+    key: 'getUTCTimeStamp',
+    value: function getUTCTimeStamp(dateStr) {
+      if (!Date.parse(dateStr)) {
+        return dateStr;
+      }
+      return new Date(new Date(dateStr).toISOString().substr(0, 25)).getTime();
+    }
+  }, {
+    key: 'parseDate',
+    value: function parseDate(dateStr) {
+      var parsed = Date.parse(dateStr);
+      if (!isNaN(parsed)) {
+        return this.getUTCTimeStamp(dateStr);
+      }
+
+      var output = Date.parse(dateStr.replace(/-/g, '/').replace(/[a-z]+/gi, ' '));
+      output = this.getUTCTimeStamp(output);
+      return output;
+    }
+
+    // https://stackoverflow.com/a/11252167/6495043
+
+  }, {
+    key: 'treatAsUtc',
+    value: function treatAsUtc(dateStr) {
+      var result = new Date(dateStr);
+      result.setMinutes(result.getMinutes() - result.getTimezoneOffset());
+      return result;
+    }
+
+    // http://stackoverflow.com/questions/14638018/current-time-formatting-with-javascript#answer-14638191
+
+  }, {
+    key: 'formatDate',
+    value: function formatDate(date, format) {
+      var utc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      var convertToUTC = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
+
+      var locale = this.w.globals.locale;
+
+      var MMMM = ['\x00'].concat(_toConsumableArray(locale.months));
+      var MMM = ['\x01'].concat(_toConsumableArray(locale.shortMonths));
+      var dddd = ['\x02'].concat(_toConsumableArray(locale.days));
+      var ddd = ['\x03'].concat(_toConsumableArray(locale.shortDays));
+
+      function ii(i, len) {
+        var s = i + '';
+        len = len || 2;
+        while (s.length < len) {
+          s = '0' + s;
+        }return s;
+      }
+
+      if (convertToUTC) {
+        date = this.treatAsUtc(date);
+      }
+
+      var y = utc ? date.getUTCFullYear() : date.getFullYear();
+      format = format.replace(/(^|[^\\])yyyy+/g, '$1' + y);
+      format = format.replace(/(^|[^\\])yy/g, '$1' + y.toString().substr(2, 2));
+      format = format.replace(/(^|[^\\])y/g, '$1' + y);
+
+      var M = (utc ? date.getUTCMonth() : date.getMonth()) + 1;
+      format = format.replace(/(^|[^\\])MMMM+/g, '$1' + MMMM[0]);
+      format = format.replace(/(^|[^\\])MMM/g, '$1' + MMM[0]);
+      format = format.replace(/(^|[^\\])MM/g, '$1' + ii(M));
+      format = format.replace(/(^|[^\\])M/g, '$1' + M);
+
+      var d = utc ? date.getUTCDate() : date.getDate();
+      format = format.replace(/(^|[^\\])dddd+/g, '$1' + dddd[0]);
+      format = format.replace(/(^|[^\\])ddd/g, '$1' + ddd[0]);
+      format = format.replace(/(^|[^\\])dd/g, '$1' + ii(d));
+      format = format.replace(/(^|[^\\])d/g, '$1' + d);
+
+      var H = utc ? date.getUTCHours() : date.getHours();
+      format = format.replace(/(^|[^\\])HH+/g, '$1' + ii(H));
+      format = format.replace(/(^|[^\\])H/g, '$1' + H);
+
+      var h = H > 12 ? H - 12 : H === 0 ? 12 : H;
+      format = format.replace(/(^|[^\\])hh+/g, '$1' + ii(h));
+      format = format.replace(/(^|[^\\])h/g, '$1' + h);
+
+      var m = utc ? date.getUTCMinutes() : date.getMinutes();
+      format = format.replace(/(^|[^\\])mm+/g, '$1' + ii(m));
+      format = format.replace(/(^|[^\\])m/g, '$1' + m);
+
+      var s = utc ? date.getUTCSeconds() : date.getSeconds();
+      format = format.replace(/(^|[^\\])ss+/g, '$1' + ii(s));
+      format = format.replace(/(^|[^\\])s/g, '$1' + s);
+
+      var f = utc ? date.getUTCMilliseconds() : date.getMilliseconds();
+      format = format.replace(/(^|[^\\])fff+/g, '$1' + ii(f, 3));
+      f = Math.round(f / 10);
+      format = format.replace(/(^|[^\\])ff/g, '$1' + ii(f));
+      f = Math.round(f / 10);
+      format = format.replace(/(^|[^\\])f/g, '$1' + f);
+
+      var T = H < 12 ? 'AM' : 'PM';
+      format = format.replace(/(^|[^\\])TT+/g, '$1' + T);
+      format = format.replace(/(^|[^\\])T/g, '$1' + T.charAt(0));
+
+      var t = T.toLowerCase();
+      format = format.replace(/(^|[^\\])tt+/g, '$1' + t);
+      format = format.replace(/(^|[^\\])t/g, '$1' + t.charAt(0));
+
+      var tz = -date.getTimezoneOffset();
+      var K = utc || !tz ? 'Z' : tz > 0 ? '+' : '-';
+      if (!utc) {
+        tz = Math.abs(tz);
+        var tzHrs = Math.floor(tz / 60);
+        var tzMin = tz % 60;
+        K += ii(tzHrs) + ':' + ii(tzMin);
+      }
+      format = format.replace(/(^|[^\\])K/g, '$1' + K);
+
+      var day = (utc ? date.getUTCDay() : date.getDay()) + 1;
+      format = format.replace(new RegExp(dddd[0], 'g'), dddd[day]);
+      format = format.replace(new RegExp(ddd[0], 'g'), ddd[day]);
+
+      format = format.replace(new RegExp(MMMM[0], 'g'), MMMM[M]);
+      format = format.replace(new RegExp(MMM[0], 'g'), MMM[M]);
+
+      format = format.replace(/\\(.)/g, '$1');
+
+      return format;
+    }
+  }, {
+    key: 'getTimeUnitsfromTimestamp',
+    value: function getTimeUnitsfromTimestamp(minX, maxX) {
+      var w = this.w;
+
+      if (w.config.xaxis.min !== undefined) {
+        minX = w.config.xaxis.min;
+      }
+      if (w.config.xaxis.max !== undefined) {
+        maxX = w.config.xaxis.max;
+      }
+
+      var minYear = new Date(minX).getFullYear();
+      var maxYear = new Date(maxX).getFullYear();
+
+      var minMonth = new Date(minX).getMonth();
+      var maxMonth = new Date(maxX).getMonth();
+
+      var minDate = new Date(minX).getDate();
+      var maxDate = new Date(maxX).getDate();
+
+      var minHour = new Date(minX).getHours();
+      var maxHour = new Date(maxX).getHours();
+
+      var minMinute = new Date(minX).getMinutes();
+      var maxMinute = new Date(maxX).getMinutes();
+
+      return {
+        minMinute: minMinute,
+        maxMinute: maxMinute,
+        minHour: minHour,
+        maxHour: maxHour,
+        minDate: minDate,
+        maxDate: maxDate,
+        minMonth: minMonth,
+        maxMonth: maxMonth,
+        minYear: minYear,
+        maxYear: maxYear
+      };
+    }
+  }, {
+    key: 'isLeapYear',
+    value: function isLeapYear(year) {
+      return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
+    }
+  }, {
+    key: 'calculcateLastDaysOfMonth',
+    value: function calculcateLastDaysOfMonth(month, year, subtract) {
+      var days = this.determineDaysOfMonths(month, year);
+
+      // whatever days we get, subtract the number of days asked
+      return days - subtract;
+    }
+  }, {
+    key: 'determineDaysOfYear',
+    value: function determineDaysOfYear(year) {
+      var days = 365;
+
+      if (this.isLeapYear(year)) {
+        days = 366;
+      }
+
+      return days;
+    }
+  }, {
+    key: 'determineRemainingDaysOfYear',
+    value: function determineRemainingDaysOfYear(year, month, date) {
+      var dayOfYear = this.daysCntOfYear[month] + date;
+      if (month > 1 && this.isLeapYear()) dayOfYear++;
+      return dayOfYear;
+    }
+  }, {
+    key: 'determineDaysOfMonths',
+    value: function determineDaysOfMonths(month, year) {
+      var days = 30;
+
+      month = _Utils2.default.monthMod(month);
+
+      switch (true) {
+        case this.months30.indexOf(month) > -1:
+          if (month === 2) {
+            if (this.isLeapYear(year)) {
+              days = 29;
+            } else {
+              days = 28;
+            }
+          }
+
+          break;
+
+        case this.months31.indexOf(month) > -1:
+          days = 31;
+          break;
+
+        default:
+          days = 31;
+          break;
+      }
+
+      return days;
+    }
+  }]);
+
+  return DateTime;
+}();
+
+exports.default = DateTime;
+
+/***/ }),
+/* 12 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Fill = __webpack_require__(4);
+
+var _Fill2 = _interopRequireDefault(_Fill);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Filters = __webpack_require__(3);
+
+var _Filters2 = _interopRequireDefault(_Filters);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Pie Class for drawing Pie / Donut Charts.
+ * @module Pie
+ **/
+
+var Pie = function () {
+  function Pie(ctx) {
+    _classCallCheck(this, Pie);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    this.chartType = this.w.config.chart.type;
+
+    this.initialAnim = this.w.config.chart.animations.enabled;
+    this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+
+    this.animBeginArr = [0];
+    this.animDur = 0;
+
+    this.donutDataLabels = this.w.config.plotOptions.pie.donut.labels;
+
+    var w = this.w;
+
+    this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors;
+
+    this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.svgHeight - 35 : w.globals.gridWidth;
+
+    this.centerY = this.defaultSize / 2;
+    this.centerX = w.globals.gridWidth / 2;
+
+    this.fullAngle = 360;
+
+    this.size = 0;
+    this.donutSize = 0;
+
+    this.sliceLabels = [];
+
+    this.prevSectorAngleArr = []; // for dynamic animations
+  }
+
+  _createClass(Pie, [{
+    key: 'draw',
+    value: function draw(series) {
+      var self = this;
+      var w = this.w;
+
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var ret = graphics.group({
+        class: 'apexcharts-pie'
+      });
+
+      var total = 0;
+      for (var k = 0; k < series.length; k++) {
+        // CALCULATE THE TOTAL
+        total += _Utils2.default.negToZero(series[k]);
+      }
+
+      var sectorAngleArr = [];
+
+      // el to which series will be drawn
+      var elSeries = graphics.group();
+
+      // prevent division by zero error if there is no data
+      if (total === 0) {
+        total = 0.00001;
+      }
+
+      for (var i = 0; i < series.length; i++) {
+        // CALCULATE THE ANGLES
+        var angle = this.fullAngle * _Utils2.default.negToZero(series[i]) / total;
+        sectorAngleArr.push(angle);
+      }
+
+      if (w.globals.dataChanged) {
+        var prevTotal = 0;
+        for (var _k = 0; _k < w.globals.previousPaths.length; _k++) {
+          // CALCULATE THE PREV TOTAL
+          prevTotal += _Utils2.default.negToZero(w.globals.previousPaths[_k]);
+        }
+
+        var previousAngle = void 0;
+
+        for (var _i = 0; _i < w.globals.previousPaths.length; _i++) {
+          // CALCULATE THE PREVIOUS ANGLES
+          previousAngle = this.fullAngle * _Utils2.default.negToZero(w.globals.previousPaths[_i]) / prevTotal;
+          this.prevSectorAngleArr.push(previousAngle);
+        }
+      }
+
+      this.size = this.defaultSize / 2.05 - w.config.stroke.width - w.config.chart.dropShadow.blur;
+
+      if (w.config.plotOptions.pie.size !== undefined) {
+        this.size = w.config.plotOptions.pie.size;
+      }
+
+      this.donutSize = this.size * parseInt(w.config.plotOptions.pie.donut.size) / 100;
+
+      var scaleSize = w.config.plotOptions.pie.customScale;
+      var halfW = w.globals.gridWidth / 2;
+      var halfH = w.globals.gridHeight / 2;
+      var translateX = halfW - w.globals.gridWidth / 2 * scaleSize;
+      var translateY = halfH - w.globals.gridHeight / 2 * scaleSize;
+
+      if (this.donutDataLabels.show) {
+        var dataLabels = this.renderInnerDataLabels(this.donutDataLabels, {
+          hollowSize: this.donutSize,
+          centerX: this.centerX,
+          centerY: this.centerY,
+          opacity: this.donutDataLabels.show,
+          translateX: translateX,
+          translateY: translateY
+        });
+
+        ret.add(dataLabels);
+      }
+
+      if (w.config.chart.type === 'donut') {
+        // draw the inner circle and add some text to it
+        var circle = graphics.drawCircle(this.donutSize);
+
+        circle.attr({
+          cx: this.centerX,
+          cy: this.centerY,
+          fill: w.config.plotOptions.pie.donut.background
+        });
+
+        elSeries.add(circle);
+      }
+
+      var elG = self.drawArcs(sectorAngleArr, series);
+
+      // add slice dataLabels at the end
+      this.sliceLabels.forEach(function (s) {
+        elG.add(s);
+      });
+
+      elSeries.attr({
+        transform: 'translate(' + translateX + ', ' + (translateY - 5) + ') scale(' + scaleSize + ')'
+      });
+
+      ret.attr({
+        'data:innerTranslateX': translateX,
+        'data:innerTranslateY': translateY - 25
+      });
+
+      elSeries.add(elG);
+
+      ret.add(elSeries);
+
+      return ret;
+    }
+
+    // core function for drawing pie arcs
+
+  }, {
+    key: 'drawArcs',
+    value: function drawArcs(sectorAngleArr, series) {
+      var w = this.w;
+      var filters = new _Filters2.default(this.ctx);
+
+      var graphics = new _Graphics2.default(this.ctx);
+      var fill = new _Fill2.default(this.ctx);
+      var g = graphics.group();
+
+      var startAngle = 0;
+      var prevStartAngle = 0;
+      var endAngle = 0;
+      var prevEndAngle = 0;
+
+      this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0;
+
+      for (var i = 0; i < sectorAngleArr.length; i++) {
+        // if(sectorAngleArr[i]>0) {
+
+        var elPieArc = graphics.group({
+          class: 'apexcharts-series apexcharts-pie-series',
+          seriesName: _Utils2.default.escapeString(w.globals.seriesNames[i]),
+          id: 'apexcharts-series-' + i,
+          rel: i + 1
+        });
+
+        g.add(elPieArc);
+
+        startAngle = endAngle;
+        prevStartAngle = prevEndAngle;
+
+        endAngle = startAngle + sectorAngleArr[i];
+        prevEndAngle = prevStartAngle + this.prevSectorAngleArr[i];
+
+        var angle = endAngle - startAngle;
+
+        var pathFill = fill.fillPath({
+          seriesNumber: i,
+          size: this.size,
+          value: series[i]
+        }); // additionaly, pass size for gradient drawing in the fillPath function
+
+        var path = this.getChangedPath(prevStartAngle, prevEndAngle);
+
+        var elPath = graphics.drawPath({
+          d: path,
+          stroke: this.lineColorArr instanceof Array ? this.lineColorArr[i] : this.lineColorArr,
+          strokeWidth: this.strokeWidth,
+          fill: pathFill,
+          fillOpacity: w.config.fill.opacity,
+          classes: 'apexcharts-pie-area'
+        });
+
+        elPath.attr({
+          id: 'apexcharts-' + w.config.chart.type + '-slice-' + i,
+          index: 0,
+          j: i
+        });
+
+        if (w.config.chart.dropShadow.enabled) {
+          var shadow = w.config.chart.dropShadow;
+          filters.dropShadow(elPath, shadow, i);
+        }
+
+        this.addListeners(elPath, this.donutDataLabels);
+
+        _Graphics2.default.setAttrs(elPath.node, {
+          'data:angle': angle,
+          'data:startAngle': startAngle,
+          'data:strokeWidth': this.strokeWidth,
+          'data:value': series[i]
+        });
+
+        var labelPosition = {
+          x: 0,
+          y: 0
+        };
+
+        if (w.config.chart.type === 'pie') {
+          labelPosition = _Utils2.default.polarToCartesian(this.centerX, this.centerY, this.size / 1.25 + w.config.plotOptions.pie.dataLabels.offset, startAngle + (endAngle - startAngle) / 2);
+        } else if (w.config.chart.type === 'donut') {
+          labelPosition = _Utils2.default.polarToCartesian(this.centerX, this.centerY, (this.size + this.donutSize) / 2 + w.config.plotOptions.pie.dataLabels.offset, startAngle + (endAngle - startAngle) / 2);
+        }
+
+        elPieArc.add(elPath);
+
+        // Animation code starts
+        var dur = 0;
+        if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+          dur = (endAngle - startAngle) / this.fullAngle * w.config.chart.animations.speed;
+
+          this.animDur = dur + this.animDur;
+          this.animBeginArr.push(this.animDur);
+        } else {
+          this.animBeginArr.push(0);
+        }
+
+        if (this.dynamicAnim && w.globals.dataChanged) {
+          this.animatePaths(elPath, {
+            endAngle: endAngle,
+            startAngle: startAngle,
+            prevStartAngle: prevStartAngle,
+            prevEndAngle: prevEndAngle,
+            animateStartingPos: true,
+            i: i,
+            animBeginArr: this.animBeginArr,
+            dur: w.config.chart.animations.dynamicAnimation.speed
+          });
+        } else {
+          this.animatePaths(elPath, {
+            endAngle: endAngle,
+            startAngle: startAngle,
+            i: i,
+            totalItems: sectorAngleArr.length - 1,
+            animBeginArr: this.animBeginArr,
+            dur: dur
+          });
+        }
+
+        // animation code ends
+        if (w.config.plotOptions.pie.expandOnClick) {
+          elPath.click(this.pieClicked.bind(this, i));
+        }
+
+        if (w.config.dataLabels.enabled) {
+          var xPos = labelPosition.x;
+          var yPos = labelPosition.y;
+          var text = 100 * (endAngle - startAngle) / 360 + '%';
+
+          if (angle !== 0 && w.config.plotOptions.pie.dataLabels.minAngleToShowLabel < sectorAngleArr[i]) {
+            var formatter = w.config.dataLabels.formatter;
+            if (formatter !== undefined) {
+              text = formatter(w.globals.seriesPercent[i][0], {
+                seriesIndex: i,
+                w: w
+              });
+            }
+            var foreColor = w.globals.dataLabels.style.colors[i];
+
+            var elPieLabel = graphics.drawText({
+              x: xPos,
+              y: yPos,
+              text: text,
+              textAnchor: 'middle',
+              fontSize: w.config.dataLabels.style.fontSize,
+              fontFamily: w.config.dataLabels.style.fontFamily,
+              foreColor: foreColor
+            });
+
+            if (w.config.dataLabels.dropShadow.enabled) {
+              var textShadow = w.config.dataLabels.dropShadow;
+              var _filters = new _Filters2.default(this.ctx);
+              _filters.dropShadow(elPieLabel, textShadow);
+            }
+
+            elPieLabel.node.classList.add('apexcharts-pie-label');
+            if (w.config.chart.animations.animate && w.globals.resized === false) {
+              elPieLabel.node.classList.add('apexcharts-pie-label-delay');
+              elPieLabel.node.style.animationDelay = w.config.chart.animations.speed / 940 + 's';
+            }
+
+            this.sliceLabels.push(elPieLabel);
+          }
+        }
+        // }
+      }
+
+      return g;
+    }
+  }, {
+    key: 'addListeners',
+    value: function addListeners(elPath, dataLabels) {
+      var graphics = new _Graphics2.default(this.ctx);
+      // append filters on mouseenter and mouseleave
+      elPath.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, elPath));
+      elPath.node.addEventListener('mouseenter', this.printDataLabelsInner.bind(this, elPath.node, dataLabels));
+      elPath.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, elPath));
+      elPath.node.addEventListener('mouseleave', this.revertDataLabelsInner.bind(this, elPath.node, dataLabels));
+      elPath.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, elPath));
+      elPath.node.addEventListener('mousedown', this.printDataLabelsInner.bind(this, elPath.node, dataLabels));
+    }
+
+    // This function can be used for other circle charts too
+
+  }, {
+    key: 'animatePaths',
+    value: function animatePaths(el, opts) {
+      var w = this.w;
+      var me = this;
+
+      var angle = opts.endAngle - opts.startAngle;
+      var prevAngle = angle;
+
+      var fromStartAngle = opts.startAngle;
+      var toStartAngle = opts.startAngle;
+
+      if (opts.prevStartAngle !== undefined && opts.prevEndAngle !== undefined) {
+        fromStartAngle = opts.prevEndAngle;
+        prevAngle = opts.prevEndAngle - opts.prevStartAngle;
+      }
+      if (opts.i === w.config.series.length - 1) {
+        // some adjustments for the last overlapping paths
+        if (angle + toStartAngle > this.fullAngle) {
+          opts.endAngle = opts.endAngle - (angle + toStartAngle);
+        } else if (angle + toStartAngle < this.fullAngle) {
+          opts.endAngle = opts.endAngle + (this.fullAngle - (angle + toStartAngle));
+        }
+      }
+
+      if (angle === this.fullAngle) angle = this.fullAngle - 0.01;
+
+      me.animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts);
+    }
+  }, {
+    key: 'animateArc',
+    value: function animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts) {
+      var me = this;
+      var w = this.w;
+
+      var size = me.size;
+
+      if (!size) {
+        size = opts.size;
+      }
+
+      var path = void 0;
+
+      if (isNaN(fromStartAngle) || isNaN(prevAngle)) {
+        fromStartAngle = toStartAngle;
+        prevAngle = angle;
+        opts.dur = 0;
+      }
+
+      var currAngle = angle;
+      var startAngle = toStartAngle;
+      var fromAngle = fromStartAngle - toStartAngle;
+
+      if (w.globals.dataChanged && opts.shouldSetPrevPaths) {
+        // to avoid flickering, set prev path first and then we will animate from there
+        path = me.getPiePath({
+          me: me,
+          startAngle: startAngle,
+          angle: prevAngle,
+          size: size
+        });
+        el.attr({ d: path });
+      }
+
+      if (opts.dur !== 0) {
+        el.animate(opts.dur, w.globals.easing, opts.animBeginArr[opts.i]).afterAll(function () {
+          if (w.config.chart.type === 'pie' || w.config.chart.type === 'donut') {
+            this.animate(300).attr({
+              'stroke-width': w.config.stroke.width
+            });
+          }
+
+          w.globals.animationEnded = true;
+        }).during(function (pos) {
+          currAngle = fromAngle + (angle - fromAngle) * pos;
+          if (opts.animateStartingPos) {
+            currAngle = prevAngle + (angle - prevAngle) * pos;
+            startAngle = fromStartAngle - prevAngle + (toStartAngle - (fromStartAngle - prevAngle)) * pos;
+          }
+
+          path = me.getPiePath({
+            me: me,
+            startAngle: startAngle,
+            angle: currAngle,
+            size: size
+          });
+
+          el.node.setAttribute('data:pathOrig', path);
+
+          el.attr({
+            d: path
+          });
+        });
+      } else {
+        path = me.getPiePath({
+          me: me,
+          startAngle: startAngle,
+          angle: angle,
+          size: size
+        });
+
+        if (!opts.isTrack) {
+          w.globals.animationEnded = true;
+        }
+        el.node.setAttribute('data:pathOrig', path);
+
+        el.attr({
+          d: path
+        });
+      }
+    }
+  }, {
+    key: 'pieClicked',
+    value: function pieClicked(i) {
+      var w = this.w;
+      var me = this;
+      var path = void 0;
+
+      var size = me.size + 4;
+      var elPath = w.globals.dom.Paper.select('#apexcharts-' + w.config.chart.type.toLowerCase() + '-slice-' + i).members[0];
+
+      var pathFrom = elPath.attr('d');
+
+      if (elPath.attr('data:pieClicked') === 'true') {
+        elPath.attr({
+          'data:pieClicked': 'false'
+        });
+        this.revertDataLabelsInner(elPath.node, this.donutDataLabels);
+
+        var origPath = elPath.attr('data:pathOrig');
+        elPath.attr({
+          d: origPath
+        });
+        return;
+      } else {
+        // reset all elems
+        var allEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-pie-area');
+        Array.prototype.forEach.call(allEls, function (pieSlice) {
+          pieSlice.setAttribute('data:pieClicked', 'false');
+          var origPath = pieSlice.getAttribute('data:pathOrig');
+          pieSlice.setAttribute('d', origPath);
+        });
+        elPath.attr('data:pieClicked', 'true');
+      }
+
+      var startAngle = parseInt(elPath.attr('data:startAngle'));
+      var angle = parseInt(elPath.attr('data:angle'));
+
+      path = me.getPiePath({
+        me: me,
+        startAngle: startAngle,
+        angle: angle,
+        size: size
+      });
+
+      if (angle === 360) return;
+
+      elPath.plot(path).animate(1).plot(pathFrom).animate(100).plot(path);
+    }
+  }, {
+    key: 'getChangedPath',
+    value: function getChangedPath(prevStartAngle, prevEndAngle) {
+      var path = '';
+      if (this.dynamicAnim && this.w.globals.dataChanged) {
+        path = this.getPiePath({
+          me: this,
+          startAngle: prevStartAngle,
+          angle: prevEndAngle - prevStartAngle,
+          size: this.size
+        });
+      }
+      return path;
+    }
+  }, {
+    key: 'getPiePath',
+    value: function getPiePath(_ref) {
+      var me = _ref.me,
+          startAngle = _ref.startAngle,
+          angle = _ref.angle,
+          size = _ref.size;
+
+      var w = this.w;
+      var path = void 0;
+
+      var startDeg = startAngle;
+      var startRadians = Math.PI * (startDeg - 90) / 180;
+
+      var endDeg = angle + startAngle;
+      if (Math.ceil(endDeg) >= 360) endDeg = 359.99;
+
+      var endRadians = Math.PI * (endDeg - 90) / 180;
+
+      var x1 = me.centerX + size * Math.cos(startRadians);
+      var y1 = me.centerY + size * Math.sin(startRadians);
+      var x2 = me.centerX + size * Math.cos(endRadians);
+      var y2 = me.centerY + size * Math.sin(endRadians);
+
+      var startInner = _Utils2.default.polarToCartesian(me.centerX, me.centerY, me.donutSize, endDeg);
+      var endInner = _Utils2.default.polarToCartesian(me.centerX, me.centerY, me.donutSize, startDeg);
+
+      var largeArc = angle > 180 ? 1 : 0;
+
+      if (w.config.chart.type === 'donut') {
+        path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2, 'L', startInner.x, startInner.y, 'A', me.donutSize, me.donutSize, 0, largeArc, 0, endInner.x, endInner.y, 'L', x1, y1, 'z'].join(' ');
+      } else if (w.config.chart.type === 'pie') {
+        path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2, 'L', me.centerX, me.centerY, 'L', x1, y1].join(' ');
+      } else {
+        path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2].join(' ');
+      }
+
+      return path;
+    }
+  }, {
+    key: 'renderInnerDataLabels',
+    value: function renderInnerDataLabels(dataLabelsConfig, opts) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var g = graphics.group({
+        class: 'apexcharts-datalabels-group',
+        transform: 'translate(' + (opts.translateX ? opts.translateX : 0) + ', ' + (opts.translateY ? opts.translateY : 0) + ')'
+      });
+
+      var showTotal = dataLabelsConfig.total.show;
+
+      g.node.style.opacity = opts.opacity;
+
+      var x = opts.centerX;
+      var y = opts.centerY;
+
+      var labelColor = void 0,
+          valueColor = void 0;
+
+      if (dataLabelsConfig.name.color === undefined) {
+        labelColor = w.globals.colors[0];
+      } else {
+        labelColor = dataLabelsConfig.name.color;
+      }
+
+      if (dataLabelsConfig.value.color === undefined) {
+        valueColor = w.config.chart.foreColor;
+      } else {
+        valueColor = dataLabelsConfig.value.color;
+      }
+
+      var lbFormatter = dataLabelsConfig.value.formatter;
+      var val = '';
+      var name = '';
+
+      if (showTotal) {
+        labelColor = dataLabelsConfig.total.color;
+        name = dataLabelsConfig.total.label;
+        val = dataLabelsConfig.total.formatter(w);
+      } else {
+        if (w.globals.series.length === 1) {
+          val = lbFormatter(w.globals.series[0], w);
+          name = w.globals.seriesNames[0];
+        }
+      }
+
+      if (dataLabelsConfig.name.show) {
+        var elLabel = graphics.drawText({
+          x: x,
+          y: y + parseInt(dataLabelsConfig.name.offsetY),
+          text: name,
+          textAnchor: 'middle',
+          foreColor: labelColor,
+          fontSize: dataLabelsConfig.name.fontSize,
+          fontFamily: dataLabelsConfig.name.fontFamily
+        });
+        elLabel.node.classList.add('apexcharts-datalabel-label');
+        g.add(elLabel);
+      }
+
+      if (dataLabelsConfig.value.show) {
+        var valOffset = dataLabelsConfig.name.show ? parseInt(dataLabelsConfig.value.offsetY) + 16 : dataLabelsConfig.value.offsetY;
+
+        var elValue = graphics.drawText({
+          x: x,
+          y: y + valOffset,
+          text: val,
+          textAnchor: 'middle',
+          foreColor: valueColor,
+          fontSize: dataLabelsConfig.value.fontSize,
+          fontFamily: dataLabelsConfig.value.fontFamily
+        });
+        elValue.node.classList.add('apexcharts-datalabel-value');
+        g.add(elValue);
+      }
+
+      // for a multi-series circle chart, we need to show total value instead of first series labels
+
+      return g;
+    }
+
+    /**
+     *
+     * @param {string} name - The name of the series
+     * @param {string} val - The value of that series
+     * @param {object} el - Optional el (indicates which series was hovered/clicked). If this param is not present, means we need to show total
+     */
+
+  }, {
+    key: 'printInnerLabels',
+    value: function printInnerLabels(labelsConfig, name, val, el) {
+      var w = this.w;
+
+      var labelColor = void 0;
+
+      if (el) {
+        if (labelsConfig.name.color === undefined) {
+          labelColor = w.globals.colors[parseInt(el.parentNode.getAttribute('rel')) - 1];
+        } else {
+          labelColor = labelsConfig.name.color;
+        }
+      } else {
+        if (w.globals.series.length > 1 && labelsConfig.total.show) {
+          labelColor = labelsConfig.total.color;
+        }
+      }
+
+      var elLabel = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-label');
+      var elValue = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-value');
+
+      var lbFormatter = labelsConfig.value.formatter;
+      val = lbFormatter(val, w);
+
+      // we need to show Total Val - so get the formatter of it
+      if (!el && typeof labelsConfig.total.formatter === 'function') {
+        val = labelsConfig.total.formatter(w);
+      }
+
+      if (elLabel !== null) {
+        elLabel.textContent = name;
+      }
+
+      if (elValue !== null) {
+        elValue.textContent = val;
+      }
+      if (elLabel !== null) {
+        elLabel.style.fill = labelColor;
+      }
+    }
+  }, {
+    key: 'printDataLabelsInner',
+    value: function printDataLabelsInner(el, dataLabelsConfig) {
+      var w = this.w;
+
+      var val = el.getAttribute('data:value');
+      var name = w.globals.seriesNames[parseInt(el.parentNode.getAttribute('rel')) - 1];
+
+      if (w.globals.series.length > 1) {
+        this.printInnerLabels(dataLabelsConfig, name, val, el);
+      }
+
+      var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group');
+      if (dataLabelsGroup !== null) {
+        dataLabelsGroup.style.opacity = 1;
+      }
+    }
+  }, {
+    key: 'revertDataLabelsInner',
+    value: function revertDataLabelsInner(el, dataLabelsConfig, event) {
+      var _this = this;
+
+      var w = this.w;
+      var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group');
+
+      if (dataLabelsConfig.total.show && w.globals.series.length > 1) {
+        var pie = new Pie(this.ctx);
+        pie.printInnerLabels(dataLabelsConfig, dataLabelsConfig.total.label, dataLabelsConfig.total.formatter(w));
+      } else {
+        var slices = document.querySelectorAll('.apexcharts-pie-area');
+        var sliceOut = false;
+
+        slices.forEach(function (s) {
+          if (s.getAttribute('data:pieClicked') === 'true') {
+            sliceOut = true;
+            _this.printDataLabelsInner(s, dataLabelsConfig);
+          }
+        });
+
+        if (!sliceOut) {
+          if (w.globals.selectedDataPoints.length && w.globals.series.length > 1) {
+            if (w.globals.selectedDataPoints[0].length > 0) {
+              var index = w.globals.selectedDataPoints[0];
+              var _el = w.globals.dom.baseEl.querySelector('#apexcharts-' + w.config.chart.type.toLowerCase() + '-slice-' + index);
+
+              this.printDataLabelsInner(_el, dataLabelsConfig);
+            } else if (dataLabelsGroup && w.globals.selectedDataPoints.length && w.globals.selectedDataPoints[0].length === 0) {
+              dataLabelsGroup.style.opacity = 0;
+            }
+          } else {
+            if (dataLabelsGroup && w.globals.series.length > 1) {
+              dataLabelsGroup.style.opacity = 0;
+            }
+          }
+        }
+      }
+    }
+  }]);
+
+  return Pie;
+}();
+
+exports.default = Pie;
+
+/***/ }),
+/* 13 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Formatters = __webpack_require__(10);
+
+var _Formatters2 = _interopRequireDefault(_Formatters);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _YAxis = __webpack_require__(16);
+
+var _YAxis2 = _interopRequireDefault(_YAxis);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Dimensions Class for calculating rects of all elements that are drawn and will be drawn.
+ *
+ * @module Dimensions
+ **/
+
+var Dimensions = function () {
+  function Dimensions(ctx) {
+    _classCallCheck(this, Dimensions);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.lgRect = {};
+    this.yAxisWidth = 0;
+    this.xAxisHeight = 0;
+    this.isSparkline = this.w.config.chart.sparkline.enabled;
+
+    this.xPadRight = 0;
+    this.xPadLeft = 0;
+  }
+
+  /**
+   * @memberof Dimensions
+   * @param {object} w - chart context
+   **/
+
+
+  _createClass(Dimensions, [{
+    key: 'plotCoords',
+    value: function plotCoords() {
+      var w = this.w;
+      var gl = w.globals;
+
+      var lgRect = this.getLegendsRect();
+
+      if (gl.axisCharts) {
+        // for line / area / scatter / column
+        this.setGridCoordsForAxisCharts(lgRect);
+      } else {
+        // for pie / donuts / circle
+        this.setGridCoordsForNonAxisCharts(lgRect);
+      }
+
+      this.titleSubtitleOffset();
+
+      // after calculating everything, apply padding set by user
+      gl.gridHeight = gl.gridHeight - w.config.grid.padding.top - w.config.grid.padding.bottom;
+
+      gl.gridWidth = gl.gridWidth - w.config.grid.padding.left - w.config.grid.padding.right - this.xPadRight - this.xPadLeft;
+
+      gl.translateX = gl.translateX + w.config.grid.padding.left + this.xPadLeft;
+      gl.translateY = gl.translateY + w.config.grid.padding.top;
+    }
+  }, {
+    key: 'conditionalChecksForAxisCoords',
+    value: function conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords) {
+      var w = this.w;
+      this.xAxisHeight = (xaxisLabelCoords.height + xtitleCoords.height) * w.globals.LINE_HEIGHT_RATIO + 15;
+
+      this.xAxisWidth = xaxisLabelCoords.width;
+
+      if (this.xAxisHeight - xtitleCoords.height > w.config.xaxis.labels.maxHeight) {
+        this.xAxisHeight = w.config.xaxis.labels.maxHeight;
+      }
+
+      if (w.config.xaxis.labels.minHeight && this.xAxisHeight < w.config.xaxis.labels.minHeight) {
+        this.xAxisHeight = w.config.xaxis.labels.minHeight;
+      }
+
+      if (w.config.xaxis.floating) {
+        this.xAxisHeight = 0;
+      }
+
+      if (!w.globals.isBarHorizontal) {
+        this.yAxisWidth = this.getTotalYAxisWidth();
+      } else {
+        this.yAxisWidth = w.globals.yLabelsCoords[0].width + w.globals.yTitleCoords[0].width + 15;
+      }
+
+      var minYAxisWidth = 0;
+      var maxYAxisWidth = 0;
+      w.config.yaxis.forEach(function (y) {
+        minYAxisWidth += y.labels.minWidth;
+        maxYAxisWidth += y.labels.maxWidth;
+      });
+      if (this.yAxisWidth < minYAxisWidth) {
+        this.yAxisWidth = minYAxisWidth;
+      }
+      if (this.yAxisWidth > maxYAxisWidth) {
+        this.yAxisWidth = maxYAxisWidth;
+      }
+    }
+  }, {
+    key: 'setGridCoordsForAxisCharts',
+    value: function setGridCoordsForAxisCharts(lgRect) {
+      var w = this.w;
+      var gl = w.globals;
+
+      var yaxisLabelCoords = this.getyAxisLabelsCoords();
+      var xaxisLabelCoords = this.getxAxisLabelsCoords();
+
+      var yTitleCoords = this.getyAxisTitleCoords();
+      var xtitleCoords = this.getxAxisTitleCoords();
+
+      w.globals.yLabelsCoords = [];
+      w.globals.yTitleCoords = [];
+      w.config.yaxis.map(function (yaxe, index) {
+        // store the labels and titles coords in global vars
+        w.globals.yLabelsCoords.push({
+          width: yaxisLabelCoords[index].width,
+          index: index
+        });
+        w.globals.yTitleCoords.push({
+          width: yTitleCoords[index].width,
+          index: index
+        });
+      });
+
+      this.conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords);
+
+      gl.translateXAxisY = w.globals.rotateXLabels ? this.xAxisHeight / 8 : -4;
+      gl.translateXAxisX = w.globals.rotateXLabels && w.globals.isXNumeric && w.config.xaxis.labels.rotate <= -45 ? -this.xAxisWidth / 4 : 0;
+
+      if (w.globals.isBarHorizontal) {
+        gl.rotateXLabels = false;
+        gl.translateXAxisY = -1 * (parseInt(w.config.xaxis.labels.style.fontSize) / 1.5);
+      }
+
+      gl.translateXAxisY = gl.translateXAxisY + w.config.xaxis.labels.offsetY;
+      gl.translateXAxisX = gl.translateXAxisX + w.config.xaxis.labels.offsetX;
+
+      var yAxisWidth = this.yAxisWidth;
+      var xAxisHeight = this.xAxisHeight;
+      gl.xAxisLabelsHeight = this.xAxisHeight;
+      gl.xAxisHeight = this.xAxisHeight;
+      var translateY = 10;
+
+      if (!w.config.grid.show || w.config.chart.type === 'radar') {
+        yAxisWidth = 0;
+        xAxisHeight = 35;
+      }
+
+      if (this.isSparkline) {
+        lgRect = {
+          height: 0,
+          width: 0
+        };
+        xAxisHeight = 0;
+        yAxisWidth = 0;
+        translateY = 0;
+      }
+
+      this.additionalPaddingXLabels(xaxisLabelCoords);
+
+      switch (w.config.legend.position) {
+        case 'bottom':
+          gl.translateY = translateY;
+          gl.translateX = yAxisWidth;
+          gl.gridHeight = gl.svgHeight - lgRect.height - xAxisHeight - (!this.isSparkline ? w.globals.rotateXLabels ? 10 : 15 : 0);
+          gl.gridWidth = gl.svgWidth - yAxisWidth;
+          break;
+        case 'top':
+          gl.translateY = lgRect.height + translateY;
+          gl.translateX = yAxisWidth;
+          gl.gridHeight = gl.svgHeight - lgRect.height - xAxisHeight - (!this.isSparkline ? w.globals.rotateXLabels ? 10 : 15 : 0);
+          gl.gridWidth = gl.svgWidth - yAxisWidth;
+          break;
+        case 'left':
+          gl.translateY = translateY;
+          gl.translateX = lgRect.width + yAxisWidth;
+          gl.gridHeight = gl.svgHeight - xAxisHeight - 12;
+          gl.gridWidth = gl.svgWidth - lgRect.width - yAxisWidth;
+          break;
+        case 'right':
+          gl.translateY = translateY;
+          gl.translateX = yAxisWidth;
+          gl.gridHeight = gl.svgHeight - xAxisHeight - 12;
+          gl.gridWidth = gl.svgWidth - lgRect.width - yAxisWidth - 5;
+          break;
+        default:
+          throw new Error('Legend position not supported');
+      }
+
+      this.setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords);
+
+      // after drawing everything, set the Y axis positions
+      var objyAxis = new _YAxis2.default(this.ctx);
+      objyAxis.setYAxisXPosition(yaxisLabelCoords, yTitleCoords);
+    }
+  }, {
+    key: 'setGridCoordsForNonAxisCharts',
+    value: function setGridCoordsForNonAxisCharts(lgRect) {
+      var w = this.w;
+      var gl = w.globals;
+      var xPad = 0;
+
+      if (w.config.legend.show && !w.config.legend.floating) {
+        xPad = 20;
+      }
+
+      var offY = 10;
+      var offX = 0;
+
+      if (w.config.chart.type === 'pie' || w.config.chart.type === 'donut') {
+        offY = offY + w.config.plotOptions.pie.offsetY;
+        offX = offX + w.config.plotOptions.pie.offsetX;
+      } else if (w.config.chart.type === 'radialBar') {
+        offY = offY + w.config.plotOptions.radialBar.offsetY;
+        offX = offX + w.config.plotOptions.radialBar.offsetX;
+      }
+
+      if (!w.config.legend.show) {
+        gl.gridHeight = gl.svgHeight - 35;
+        gl.gridWidth = gl.gridHeight;
+
+        gl.translateY = offY - 10;
+        gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+
+        return;
+      }
+
+      switch (w.config.legend.position) {
+        case 'bottom':
+          gl.gridHeight = gl.svgHeight - lgRect.height - 35;
+          gl.gridWidth = gl.gridHeight;
+
+          gl.translateY = offY - 20;
+          gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+          break;
+        case 'top':
+          gl.gridHeight = gl.svgHeight - lgRect.height - 35;
+          gl.gridWidth = gl.gridHeight;
+
+          gl.translateY = lgRect.height + offY;
+          gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+          break;
+        case 'left':
+          gl.gridWidth = gl.svgWidth - lgRect.width - xPad;
+          gl.gridHeight = gl.gridWidth;
+          gl.translateY = offY;
+          gl.translateX = offX + lgRect.width + xPad;
+
+          break;
+        case 'right':
+          gl.gridWidth = gl.svgWidth - lgRect.width - xPad - 5;
+          gl.gridHeight = gl.gridWidth;
+          gl.translateY = offY;
+          gl.translateX = offX + 10;
+
+          break;
+        default:
+          throw new Error('Legend position not supported');
+      }
+    }
+  }, {
+    key: 'setGridXPosForDualYAxis',
+    value: function setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords) {
+      var w = this.w;
+      w.config.yaxis.map(function (yaxe, index) {
+        if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1 && !w.config.yaxis[index].floating && w.config.yaxis[index].show) {
+          if (yaxe.opposite) {
+            w.globals.translateX = w.globals.translateX - (yaxisLabelCoords[index].width + yTitleCoords[index].width) - parseInt(w.config.yaxis[index].labels.style.fontSize) / 1.2 - 12;
+          }
+        }
+      });
+    }
+
+    // Sometimes, the last labels gets cropped in category/numeric xaxis.
+    // Hence, we add some additional padding based on the label length to avoid the last label being cropped.
+    // NOTE: datetime x-axis won't have any effect with this as we don't know the label length there due to many constraints.
+
+  }, {
+    key: 'additionalPaddingXLabels',
+    value: function additionalPaddingXLabels(xaxisLabelCoords) {
+      var _this = this;
+
+      var w = this.w;
+
+      if (w.config.xaxis.type === 'category' && w.globals.isBarHorizontal || w.config.xaxis.type === 'numeric' || w.config.xaxis.type === 'datetime') {
+        var rightPad = function rightPad(labels) {
+          if (_this.timescaleLabels) {
+            // for timeline labels, we take the last label and check if it exceeds gridWidth
+            var lastTimescaleLabel = _this.timescaleLabels[_this.timescaleLabels.length - 1];
+            var labelPosition = lastTimescaleLabel.position + labels.width;
+            if (labelPosition > w.globals.gridWidth) {
+              w.globals.skipLastTimelinelabel = true;
+            } else {
+              // we have to make it false again in case of zooming/panning
+              w.globals.skipLastTimelinelabel = false;
+            }
+          } else if (w.config.xaxis.type !== 'datetime') {
+            if (w.config.grid.padding.right < labels.width) {
+              _this.xPadRight = labels.width / 2 + 1;
+            }
+          }
+        };
+
+        var leftPad = function leftPad(labels) {
+          if (w.config.grid.padding.left < labels.width) {
+            _this.xPadLeft = labels.width / 2 + 1;
+          }
+        };
+
+        var isXNumeric = w.globals.isXNumeric;
+
+        w.config.yaxis.forEach(function (yaxe, i) {
+          var shouldPad = !yaxe.show || yaxe.floating || w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || isXNumeric || yaxe.opposite && w.globals.isBarHorizontal;
+
+          if (shouldPad) {
+            if (isXNumeric && w.globals.isMultipleYAxis && w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || w.globals.isBarHorizontal && yaxe.opposite) {
+              leftPad(xaxisLabelCoords);
+            }
+
+            if (!w.globals.isBarHorizontal && yaxe.opposite && w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || isXNumeric && !w.globals.isMultipleYAxis) {
+              rightPad(xaxisLabelCoords);
+            }
+          }
+        });
+      }
+    }
+  }, {
+    key: 'titleSubtitleOffset',
+    value: function titleSubtitleOffset() {
+      var w = this.w;
+      var gl = w.globals;
+      var gridShrinkOffset = this.isSparkline || !w.globals.axisCharts ? 0 : 10;
+
+      if (w.config.title.text !== undefined) {
+        gridShrinkOffset += w.config.title.margin;
+      } else {
+        gridShrinkOffset += this.isSparkline || !w.globals.axisCharts ? 0 : 5;
+      }
+
+      if (w.config.subtitle.text !== undefined) {
+        gridShrinkOffset += w.config.subtitle.margin;
+      } else {
+        gridShrinkOffset += this.isSparkline || !w.globals.axisCharts ? 0 : 5;
+      }
+
+      if (w.config.legend.show && w.config.legend.position === 'bottom' && !w.config.legend.floating && w.config.series.length > 1) {
+        gridShrinkOffset += 10;
+      }
+
+      var titleCoords = this.getTitleSubtitleCoords('title');
+      var subtitleCoords = this.getTitleSubtitleCoords('subtitle');
+
+      gl.gridHeight = gl.gridHeight - titleCoords.height - subtitleCoords.height - gridShrinkOffset;
+
+      gl.translateY = gl.translateY + titleCoords.height + subtitleCoords.height + gridShrinkOffset;
+    }
+  }, {
+    key: 'getTotalYAxisWidth',
+    value: function getTotalYAxisWidth() {
+      var w = this.w;
+      var yAxisWidth = 0;
+      var padding = 10;
+
+      var isHiddenYAxis = function isHiddenYAxis(index) {
+        return w.globals.ignoreYAxisIndexes.indexOf(index) > -1;
+      };
+      w.globals.yLabelsCoords.map(function (yLabelCoord, index) {
+        var floating = w.config.yaxis[index].floating;
+        if (yLabelCoord.width > 0 && !floating) {
+          yAxisWidth = yAxisWidth + yLabelCoord.width + padding;
+          if (isHiddenYAxis(index)) {
+            yAxisWidth = yAxisWidth - yLabelCoord.width - padding;
+          }
+        } else {
+          yAxisWidth = yAxisWidth + (floating || !w.config.yaxis[index].show ? 0 : 5);
+        }
+      });
+
+      w.globals.yTitleCoords.map(function (yTitleCoord, index) {
+        var floating = w.config.yaxis[index].floating;
+        padding = parseInt(w.config.yaxis[index].title.style.fontSize);
+        if (yTitleCoord.width > 0 && !floating) {
+          yAxisWidth = yAxisWidth + yTitleCoord.width + padding;
+          if (isHiddenYAxis(index)) {
+            yAxisWidth = yAxisWidth - yTitleCoord.width - padding;
+          }
+        } else {
+          yAxisWidth = yAxisWidth + (floating || !w.config.yaxis[index].show ? 0 : 5);
+        }
+      });
+
+      return yAxisWidth;
+    }
+  }, {
+    key: 'getxAxisTimeScaleLabelsCoords',
+    value: function getxAxisTimeScaleLabelsCoords() {
+      var w = this.w;
+      var rect = void 0;
+
+      this.timescaleLabels = w.globals.timelineLabels.slice();
+      if (w.globals.isBarHorizontal && w.config.xaxis.type === 'datetime') {
+        this.timescaleLabels = w.globals.invertedTimelineLabels.slice();
+      }
+
+      var labels = this.timescaleLabels.map(function (label) {
+        return label.value;
+      });
+
+      //  get the longest string from the labels array and also apply label formatter to it
+      var val = labels.reduce(function (a, b) {
+        // if undefined, maybe user didn't pass the datetime(x) values
+        if (typeof a === 'undefined') {
+          console.error('You have possibly supplied invalid Date format. Please supply a valid JavaScript Date');
+          return 0;
+        } else {
+          return a.length > b.length ? a : b;
+        }
+      }, 0);
+
+      var graphics = new _Graphics2.default(this.ctx);
+      rect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize);
+
+      var totalWidthRotated = rect.width * 1.05 * labels.length;
+
+      if (totalWidthRotated > w.globals.gridWidth && w.config.xaxis.labels.rotate !== 0) {
+        w.globals.overlappingXLabels = true;
+      }
+
+      return rect;
+    }
+
+    /**
+     * Get X Axis Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: 'getxAxisLabelsCoords',
+    value: function getxAxisLabelsCoords() {
+      var w = this.w;
+
+      var xaxisLabels = w.globals.labels.slice();
+      var rect = void 0;
+
+      if (w.globals.timelineLabels.length > 0) {
+        var coords = this.getxAxisTimeScaleLabelsCoords();
+        rect = {
+          width: coords.width,
+          height: coords.height
+        };
+      } else {
+        var lgWidthForSideLegends = w.config.legend.position === 'left' && w.config.legend.position === 'right' && !w.config.legend.floating ? this.lgRect.width : 0;
+
+        // get the longest string from the labels array and also apply label formatter
+        var xlbFormatter = w.globals.xLabelFormatter;
+
+        // prevent changing xaxisLabels to avoid issues in multi-yaxies - fix #522
+        var val = xaxisLabels.reduce(function (a, b) {
+          return a.length > b.length ? a : b;
+        }, 0);
+
+        // the labels gets changed for bar charts
+        if (w.globals.isBarHorizontal) {
+          val = w.globals.yAxisScale[0].result.reduce(function (a, b) {
+            return a.length > b.length ? a : b;
+          }, 0);
+        }
+
+        var xFormat = new _Formatters2.default(this.ctx);
+        val = xFormat.xLabelFormat(xlbFormatter, val);
+
+        var graphics = new _Graphics2.default(this.ctx);
+
+        var xLabelrect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize);
+
+        rect = {
+          width: xLabelrect.width,
+          height: xLabelrect.height
+        };
+
+        if (rect.width * xaxisLabels.length > w.globals.svgWidth - lgWidthForSideLegends - this.yAxisWidth && w.config.xaxis.labels.rotate !== 0) {
+          if (!w.globals.isBarHorizontal) {
+            w.globals.rotateXLabels = true;
+            xLabelrect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize, w.config.xaxis.labels.style.fontFamily, 'rotate(' + w.config.xaxis.labels.rotate + ' 0 0)', false);
+
+            rect.height = xLabelrect.height / 1.66;
+          }
+        } else {
+          w.globals.rotateXLabels = false;
+        }
+      }
+
+      if (!w.config.xaxis.labels.show) {
+        rect = {
+          width: 0,
+          height: 0
+        };
+      }
+
+      return {
+        width: rect.width,
+        height: rect.height
+      };
+    }
+
+    /**
+     * Get Y Axis Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: 'getyAxisLabelsCoords',
+    value: function getyAxisLabelsCoords() {
+      var _this2 = this;
+
+      var w = this.w;
+
+      var width = 0;
+      var height = 0;
+      var ret = [];
+      var labelPad = 10;
+
+      w.config.yaxis.map(function (yaxe, index) {
+        if (yaxe.show && yaxe.labels.show && w.globals.yAxisScale[index].result.length) {
+          var lbFormatter = w.globals.yLabelFormatters[index];
+
+          // the second parameter -1 is the index of tick which user can use in the formatter
+          var val = lbFormatter(w.globals.yAxisScale[index].niceMax, -1);
+
+          // if user has specified a custom formatter, and the result is null or empty, we need to discard the formatter and take the value as it is.
+          if (typeof val === 'undefined' || val.length === 0) {
+            val = w.globals.yAxisScale[index].niceMax;
+          }
+
+          if (w.globals.isBarHorizontal) {
+            labelPad = 0;
+
+            var barYaxisLabels = w.globals.labels.slice();
+
+            //  get the longest string from the labels array and also apply label formatter to it
+            val = barYaxisLabels.reduce(function (a, b) {
+              return a.length > b.length ? a : b;
+            }, 0);
+
+            val = lbFormatter(val, -1);
+          }
+
+          var graphics = new _Graphics2.default(_this2.ctx);
+          var rect = graphics.getTextRects(val, yaxe.labels.style.fontSize);
+
+          ret.push({
+            width: rect.width + labelPad,
+            height: rect.height
+          });
+        } else {
+          ret.push({
+            width: width,
+            height: height
+          });
+        }
+      });
+
+      return ret;
+    }
+
+    /**
+     * Get X Axis Title Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: 'getxAxisTitleCoords',
+    value: function getxAxisTitleCoords() {
+      var w = this.w;
+      var width = 0;
+      var height = 0;
+
+      if (w.config.xaxis.title.text !== undefined) {
+        var graphics = new _Graphics2.default(this.ctx);
+
+        var rect = graphics.getTextRects(w.config.xaxis.title.text, w.config.xaxis.title.style.fontSize);
+
+        width = rect.width;
+        height = rect.height;
+      }
+
+      return {
+        width: width,
+        height: height
+      };
+    }
+
+    /**
+     * Get Y Axis Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: 'getyAxisTitleCoords',
+    value: function getyAxisTitleCoords() {
+      var _this3 = this;
+
+      var w = this.w;
+      var ret = [];
+
+      w.config.yaxis.map(function (yaxe, index) {
+        if (yaxe.show && yaxe.title.text !== undefined) {
+          var graphics = new _Graphics2.default(_this3.ctx);
+          var rect = graphics.getTextRects(yaxe.title.text, yaxe.title.style.fontSize, yaxe.title.style.fontFamily, 'rotate(-90 0 0)', false);
+
+          ret.push({
+            width: rect.width,
+            height: rect.height
+          });
+        } else {
+          ret.push({
+            width: 0,
+            height: 0
+          });
+        }
+      });
+
+      return ret;
+    }
+
+    /**
+     * Get Chart Title/Subtitle Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: 'getTitleSubtitleCoords',
+    value: function getTitleSubtitleCoords(type) {
+      var w = this.w;
+      var width = 0;
+      var height = 0;
+
+      var floating = type === 'title' ? w.config.title.floating : w.config.subtitle.floating;
+
+      var el = w.globals.dom.baseEl.querySelector('.apexcharts-' + type + '-text');
+
+      if (el !== null && !floating) {
+        var coord = el.getBoundingClientRect();
+        width = coord.width;
+        height = w.globals.axisCharts ? coord.height + 5 : coord.height;
+      }
+
+      return {
+        width: width,
+        height: height
+      };
+    }
+  }, {
+    key: 'getLegendsRect',
+    value: function getLegendsRect() {
+      var w = this.w;
+
+      var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+      var lgRect = Object.assign({}, _Utils2.default.getBoundingClientRect(elLegendWrap));
+
+      if (elLegendWrap !== null && !w.config.legend.floating && w.config.legend.show) {
+        this.lgRect = {
+          x: lgRect.x,
+          y: lgRect.y,
+          height: lgRect.height,
+          width: lgRect.height === 0 ? 0 : lgRect.width
+        };
+      } else {
+        this.lgRect = {
+          x: 0,
+          y: 0,
+          height: 0,
+          width: 0
+        };
+      }
+
+      return this.lgRect;
+    }
+  }]);
+
+  return Dimensions;
+}();
+
+exports.default = Dimensions;
+
+/***/ }),
+/* 14 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var Range = function () {
+  function Range(ctx) {
+    _classCallCheck(this, Range);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  // http://stackoverflow.com/questions/326679/choosing-an-attractive-linear-scale-for-a-graphs-y-axiss
+  // This routine creates the Y axis values for a graph.
+
+
+  _createClass(Range, [{
+    key: 'niceScale',
+    value: function niceScale(yMin, yMax, diff) {
+      var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+      var ticks = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 10;
+
+      var w = this.w;
+      var NO_MIN_MAX_PROVIDED = this.w.config.yaxis[index].max === undefined && this.w.config.yaxis[index].min === undefined || this.w.config.yaxis[index].forceNiceScale;
+      if (yMin === Number.MIN_VALUE && yMax === 0 || !_Utils2.default.isNumber(yMin) && !_Utils2.default.isNumber(yMax) || yMin === Number.MIN_VALUE && yMax === -Number.MAX_VALUE) {
+        // when all values are 0
+        yMin = 0;
+        yMax = ticks;
+        var linearScale = this.linearScale(yMin, yMax, ticks);
+        return linearScale;
+      }
+
+      if (yMin > yMax) {
+        // if somehow due to some wrong config, user sent max less than min,
+        // adjust the min/max again
+        console.warn('yaxis.min cannot be greater than yaxis.max');
+        yMax = yMin + 0.1;
+      } else if (yMin === yMax) {
+        // If yMin and yMax are identical, then
+        // adjust the yMin and yMax values to actually
+        // make a graph. Also avoids division by zero errors.
+        yMin = yMin === 0 ? 0 : yMin - 0.5; // some small value
+        yMax = yMax === 0 ? 2 : yMax + 0.5; // some small value
+      }
+
+      // Calculate Min amd Max graphical labels and graph
+      // increments.  The number of ticks defaults to
+      // 10 which is the SUGGESTED value.  Any tick value
+      // entered is used as a suggested value which is
+      // adjusted to be a 'pretty' value.
+      //
+      // Output will be an array of the Y axis values that
+      // encompass the Y values.
+      var result = [];
+
+      // Determine Range
+      var range = Math.abs(yMax - yMin);
+
+      if (range < 1 && NO_MIN_MAX_PROVIDED && (w.config.chart.type === 'candlestick' || w.config.series[index].type === 'candlestick' || w.globals.isRangeData)) {
+        /* fix https://github.com/apexcharts/apexcharts.js/issues/430 */
+        yMax = yMax * 1.01;
+      }
+
+      // for extremely small values - #fix #553
+      if (range < 0.00001 && NO_MIN_MAX_PROVIDED && yMax < 10) {
+        yMax = yMax * 1.05;
+      } else if (diff > 0.1 && diff < 3 && NO_MIN_MAX_PROVIDED) {
+        /* fix https://github.com/apexcharts/apexcharts.js/issues/576 */
+        /* fix https://github.com/apexcharts/apexcharts.js/issues/588 */
+        yMax = yMax + diff / 3;
+      }
+
+      var tiks = ticks + 1;
+      // Adjust ticks if needed
+      if (tiks < 2) {
+        tiks = 2;
+      } else if (tiks > 2) {
+        tiks -= 2;
+      }
+
+      // Get raw step value
+      var tempStep = range / tiks;
+      // Calculate pretty step value
+
+      var mag = Math.floor(_Utils2.default.log10(tempStep));
+      var magPow = Math.pow(10, mag);
+      var magMsd = parseInt(tempStep / magPow);
+      var stepSize = magMsd * magPow;
+
+      // build Y label array.
+      // Lower and upper bounds calculations
+      var lb = stepSize * Math.floor(yMin / stepSize);
+      var ub = stepSize * Math.ceil(yMax / stepSize);
+      // Build array
+      var val = lb;
+      while (1) {
+        result.push(val);
+        val += stepSize;
+        if (val > ub) {
+          break;
+        }
+      }
+
+      if (NO_MIN_MAX_PROVIDED) {
+        return {
+          result: result,
+          niceMin: result[0],
+          niceMax: result[result.length - 1]
+        };
+      } else {
+        result = [];
+        var v = yMin;
+        result.push(v);
+        var valuesDivider = Math.abs(yMax - yMin) / ticks;
+        for (var i = 0; i <= ticks - 1; i++) {
+          v = v + valuesDivider;
+          result.push(v);
+        }
+
+        return {
+          result: result,
+          niceMin: result[0],
+          niceMax: result[result.length - 1]
+        };
+      }
+    }
+  }, {
+    key: 'linearScale',
+    value: function linearScale(yMin, yMax) {
+      var ticks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
+
+      var range = Math.abs(yMax - yMin);
+
+      var step = range / ticks;
+      if (ticks === Number.MAX_VALUE) {
+        ticks = 10;
+        step = 1;
+      }
+
+      var result = [];
+      var v = yMin;
+
+      while (ticks >= 0) {
+        result.push(v);
+        v = v + step;
+        ticks -= 1;
+      }
+
+      return {
+        result: result,
+        niceMin: result[0],
+        niceMax: result[result.length - 1]
+      };
+    }
+  }, {
+    key: 'logarithmicScale',
+    value: function logarithmicScale(index, yMin, yMax, ticks) {
+      if (yMin < 0 || yMin === Number.MIN_VALUE) yMin = 0.01;
+
+      var base = 10;
+
+      var min = Math.log(yMin) / Math.log(base);
+      var max = Math.log(yMax) / Math.log(base);
+
+      var range = Math.abs(yMax - yMin);
+
+      var step = range / ticks;
+
+      var result = [];
+      var v = yMin;
+
+      while (ticks >= 0) {
+        result.push(v);
+        v = v + step;
+        ticks -= 1;
+      }
+
+      var logs = result.map(function (niceNumber, i) {
+        if (niceNumber <= 0) {
+          niceNumber = 0.01;
+        }
+
+        // calculate adjustment factor
+        var scale = (max - min) / (yMax - yMin);
+
+        var logVal = Math.pow(base, min + scale * (niceNumber - min));
+        return Math.round(logVal / _Utils2.default.roundToBase(logVal, base)) * _Utils2.default.roundToBase(logVal, base);
+      });
+
+      // Math.floor may have rounded the value to 0, revert back to 1
+      if (logs[0] === 0) logs[0] = 1;
+
+      return {
+        result: logs,
+        niceMin: logs[0],
+        niceMax: logs[logs.length - 1]
+      };
+    }
+  }, {
+    key: 'setYScaleForIndex',
+    value: function setYScaleForIndex(index, minY, maxY) {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+
+      var y = gl.isBarHorizontal ? cnf.xaxis : cnf.yaxis[index];
+
+      if (typeof gl.yAxisScale[index] === 'undefined') {
+        gl.yAxisScale[index] = [];
+      }
+
+      if (y.logarithmic) {
+        gl.allSeriesCollapsed = false;
+        gl.yAxisScale[index] = this.logarithmicScale(index, minY, maxY, y.tickAmount ? y.tickAmount : Math.floor(Math.log10(maxY)));
+      } else {
+        if (maxY === -Number.MAX_VALUE || !_Utils2.default.isNumber(maxY)) {
+          // no data in the chart. Either all series collapsed or user passed a blank array
+          gl.yAxisScale[index] = this.linearScale(0, 5, 5);
+        } else {
+          // there is some data. Turn off the allSeriesCollapsed flag
+          gl.allSeriesCollapsed = false;
+
+          if ((y.min !== undefined || y.max !== undefined) && !y.forceNiceScale) {
+            // fix https://github.com/apexcharts/apexcharts.js/issues/492
+            gl.yAxisScale[index] = this.linearScale(minY, maxY, y.tickAmount);
+          } else {
+            var diff = Math.abs(maxY - minY);
+
+            gl.yAxisScale[index] = this.niceScale(minY, maxY, diff, index,
+            // fix https://github.com/apexcharts/apexcharts.js/issues/397
+            y.tickAmount ? y.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5);
+          }
+        }
+      }
+    }
+  }, {
+    key: 'setMultipleYScales',
+    value: function setMultipleYScales() {
+      var _this = this;
+
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+
+      var minYArr = gl.minYArr.concat([]);
+      var maxYArr = gl.maxYArr.concat([]);
+
+      var scalesIndices = [];
+      // here, we loop through the yaxis array and find the item which has "seriesName" property
+      cnf.yaxis.forEach(function (yaxe, i) {
+        var index = i;
+        cnf.series.forEach(function (s, si) {
+          // if seriesName matches and that series is not collapsed, we use that scale
+          if (s.name === yaxe.seriesName && gl.collapsedSeriesIndices.indexOf(si) === -1) {
+            index = si;
+
+            if (i !== si) {
+              scalesIndices.push({
+                index: si,
+                similarIndex: i,
+                alreadyExists: true
+              });
+            } else {
+              scalesIndices.push({
+                index: si
+              });
+            }
+          }
+        });
+
+        var minY = minYArr[index];
+        var maxY = maxYArr[index];
+
+        _this.setYScaleForIndex(i, minY, maxY);
+      });
+
+      this.sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices);
+    }
+  }, {
+    key: 'sameScaleInMultipleAxes',
+    value: function sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices) {
+      var _this2 = this;
+
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+
+      // we got the scalesIndices array in the above code, but we need to filter out the items which doesn't have same scales
+      var similarIndices = [];
+      scalesIndices.forEach(function (scale) {
+        if (scale.alreadyExists) {
+          if (typeof similarIndices[scale.index] === 'undefined') {
+            similarIndices[scale.index] = [];
+          }
+          similarIndices[scale.index].push(scale.index);
+          similarIndices[scale.index].push(scale.similarIndex);
+        }
+      });
+
+      function intersect(a, b) {
+        return a.filter(function (value) {
+          return b.indexOf(value) !== -1;
+        });
+      }
+
+      similarIndices.forEach(function (si, i) {
+        similarIndices.forEach(function (sj, j) {
+          if (i !== j) {
+            if (intersect(si, sj).length > 0) {
+              similarIndices[i] = similarIndices[i].concat(similarIndices[j]);
+            }
+          }
+        });
+      });
+
+      // then, we remove duplicates from the similarScale array
+      var uniqueSimilarIndices = similarIndices.map(function (item) {
+        return item.filter(function (i, pos) {
+          return item.indexOf(i) === pos;
+        });
+      });
+
+      // sort further to remove whole duplicate arrays later
+      var sortedIndices = uniqueSimilarIndices.map(function (s) {
+        return s.sort();
+      });
+
+      // remove undefined items
+      similarIndices = similarIndices.filter(function (s) {
+        return !!s;
+      });
+
+      var indices = sortedIndices.slice();
+      var stringIndices = indices.map(function (ind) {
+        return JSON.stringify(ind);
+      });
+      indices = indices.filter(function (ind, p) {
+        return stringIndices.indexOf(JSON.stringify(ind)) === p;
+      });
+
+      var sameScaleMinYArr = [];
+      var sameScaleMaxYArr = [];
+      minYArr.forEach(function (minYValue, yi) {
+        indices.forEach(function (scale, i) {
+          // we compare only the yIndex which exists in the indices array
+          if (scale.indexOf(yi) > -1) {
+            if (typeof sameScaleMinYArr[i] === 'undefined') {
+              sameScaleMinYArr[i] = [];
+              sameScaleMaxYArr[i] = [];
+            }
+            sameScaleMinYArr[i].push({
+              key: yi,
+              value: minYValue
+            });
+            sameScaleMaxYArr[i].push({
+              key: yi,
+              value: maxYArr[yi]
+            });
+          }
+        });
+      });
+
+      var sameScaleMin = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, Number.MIN_VALUE);
+      var sameScaleMax = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, -Number.MAX_VALUE);
+
+      sameScaleMinYArr.forEach(function (s, i) {
+        s.forEach(function (sc, j) {
+          sameScaleMin[i] = Math.min(sc.value, sameScaleMin[i]);
+        });
+      });
+
+      sameScaleMaxYArr.forEach(function (s, i) {
+        s.forEach(function (sc, j) {
+          sameScaleMax[i] = Math.max(sc.value, sameScaleMax[i]);
+        });
+      });
+
+      minYArr.forEach(function (min, i) {
+        sameScaleMaxYArr.forEach(function (s, si) {
+          var minY = sameScaleMin[si];
+          var maxY = sameScaleMax[si];
+
+          s.forEach(function (ind, k) {
+            if (s[k].key === i) {
+              if (cnf.yaxis[i].min !== undefined) {
+                if (typeof cnf.yaxis[i].min === 'function') {
+                  minY = cnf.yaxis[i].min(gl.minY);
+                } else {
+                  minY = cnf.yaxis[i].min;
+                }
+              }
+              if (cnf.yaxis[i].max !== undefined) {
+                if (typeof cnf.yaxis[i].max === 'function') {
+                  maxY = cnf.yaxis[i].max(gl.maxY);
+                } else {
+                  maxY = cnf.yaxis[i].max;
+                }
+              }
+
+              _this2.setYScaleForIndex(i, minY, maxY);
+            }
+          });
+        });
+      });
+    }
+  }, {
+    key: 'autoScaleY',
+    value: function autoScaleY(ctx, e) {
+      if (!ctx) {
+        ctx = this;
+      }
+
+      var ret = [];
+
+      ctx.w.config.series.forEach(function (serie) {
+        var min = void 0,
+            max = void 0;
+        var first = serie.data.find(function (x) {
+          return x[0] >= e.xaxis.min;
+        });
+        var firstValue = first[1];
+        max = min = firstValue;
+        serie.data.forEach(function (data) {
+          if (data[0] <= e.xaxis.max && data[0] >= e.xaxis.min) {
+            if (data[1] > max && data[1] !== null) max = data[1];
+            if (data[1] < min && data[1] !== null) min = data[1];
+          }
+        });
+
+        min *= 0.95;
+        max *= 1.05;
+
+        ret.push({
+          min: min,
+          max: max
+        });
+      });
+
+      return ret;
+    }
+  }]);
+
+  return Range;
+}();
+
+exports.default = Range;
+
+/***/ }),
+/* 15 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _AxesUtils = __webpack_require__(24);
+
+var _AxesUtils2 = _interopRequireDefault(_AxesUtils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts XAxis Class for drawing X-Axis.
+ *
+ * @module XAxis
+ **/
+
+var XAxis = function () {
+  function XAxis(ctx) {
+    _classCallCheck(this, XAxis);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    var w = this.w;
+    this.xaxisLabels = w.globals.labels.slice();
+    if (w.globals.timelineLabels.length > 0) {
+      //  timeline labels are there
+      this.xaxisLabels = w.globals.timelineLabels.slice();
+    }
+
+    this.drawnLabels = [];
+
+    if (w.config.xaxis.position === 'top') {
+      this.offY = 0;
+    } else {
+      this.offY = w.globals.gridHeight + 1;
+    }
+    this.offY = this.offY + w.config.xaxis.axisBorder.offsetY;
+
+    this.xaxisFontSize = w.config.xaxis.labels.style.fontSize;
+    this.xaxisFontFamily = w.config.xaxis.labels.style.fontFamily;
+    this.xaxisForeColors = w.config.xaxis.labels.style.colors;
+    this.xaxisBorderWidth = w.config.xaxis.axisBorder.width;
+
+    if (this.xaxisBorderWidth.indexOf('%') > -1) {
+      this.xaxisBorderWidth = w.globals.gridWidth * parseInt(this.xaxisBorderWidth) / 100;
+    } else {
+      this.xaxisBorderWidth = parseInt(this.xaxisBorderWidth);
+    }
+    this.xaxisBorderHeight = w.config.xaxis.axisBorder.height;
+
+    // For bars, we will only consider single y xais,
+    // as we are not providing multiple yaxis for bar charts
+    this.yaxis = w.config.yaxis[0];
+    this.axesUtils = new _AxesUtils2.default(ctx);
+  }
+
+  _createClass(XAxis, [{
+    key: 'drawXaxis',
+    value: function drawXaxis() {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var elXaxis = graphics.group({
+        class: 'apexcharts-xaxis',
+        transform: 'translate(' + w.config.xaxis.offsetX + ', ' + w.config.xaxis.offsetY + ')'
+      });
+
+      var elXaxisTexts = graphics.group({
+        class: 'apexcharts-xaxis-texts-g',
+        transform: 'translate(' + w.globals.translateXAxisX + ', ' + w.globals.translateXAxisY + ')'
+      });
+
+      elXaxis.add(elXaxisTexts);
+
+      var colWidth = void 0;
+
+      // initial x Position (keep adding column width in the loop)
+      var xPos = w.globals.padHorizontal;
+      var labels = [];
+
+      for (var i = 0; i < this.xaxisLabels.length; i++) {
+        labels.push(this.xaxisLabels[i]);
+      }
+
+      if (w.globals.isXNumeric) {
+        colWidth = w.globals.gridWidth / (labels.length - 1);
+        xPos = xPos + colWidth / 2 + w.config.xaxis.labels.offsetX;
+      } else {
+        colWidth = w.globals.gridWidth / labels.length;
+        xPos = xPos + colWidth + w.config.xaxis.labels.offsetX;
+      }
+
+      var labelsLen = labels.length;
+
+      if (w.config.xaxis.labels.show) {
+        for (var _i = 0; _i <= labelsLen - 1; _i++) {
+          var x = xPos - colWidth / 2 + w.config.xaxis.labels.offsetX;
+
+          var label = this.axesUtils.getLabel(labels, w.globals.timelineLabels, x, _i, this.drawnLabels);
+
+          this.drawnLabels.push(label.text);
+
+          var offsetYCorrection = 28;
+          if (w.globals.rotateXLabels) {
+            offsetYCorrection = 22;
+          }
+          var elTick = graphics.drawText({
+            x: label.x,
+            y: this.offY + w.config.xaxis.labels.offsetY + offsetYCorrection,
+            text: '',
+            textAnchor: 'middle',
+            fontSize: this.xaxisFontSize,
+            fontFamily: this.xaxisFontFamily,
+            foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[_i] : this.xaxisForeColors,
+            cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass
+          });
+
+          if (_i === labelsLen - 1) {
+            if (w.globals.skipLastTimelinelabel) {
+              label.text = '';
+            }
+          }
+
+          elXaxisTexts.add(elTick);
+
+          graphics.addTspan(elTick, label.text, this.xaxisFontFamily);
+
+          var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title');
+          elTooltipTitle.textContent = label.text;
+          elTick.node.appendChild(elTooltipTitle);
+
+          xPos = xPos + colWidth;
+        }
+      }
+
+      if (w.config.xaxis.title.text !== undefined) {
+        var elXaxisTitle = graphics.group({
+          class: 'apexcharts-xaxis-title'
+        });
+
+        var elXAxisTitleText = graphics.drawText({
+          x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX,
+          y: this.offY - parseInt(this.xaxisFontSize) + w.globals.xAxisLabelsHeight + w.config.xaxis.title.offsetY,
+          text: w.config.xaxis.title.text,
+          textAnchor: 'middle',
+          fontSize: w.config.xaxis.title.style.fontSize,
+          fontFamily: w.config.xaxis.title.style.fontFamily,
+          foreColor: w.config.xaxis.title.style.color,
+          cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass
+        });
+
+        elXaxisTitle.add(elXAxisTitleText);
+
+        elXaxis.add(elXaxisTitle);
+      }
+
+      if (w.config.xaxis.axisBorder.show) {
+        var lineCorrection = 0;
+        if (w.config.chart.type === 'bar' && w.globals.isXNumeric) {
+          lineCorrection = lineCorrection - 15;
+        }
+        var elHorzLine = graphics.drawLine(w.globals.padHorizontal + lineCorrection + w.config.xaxis.axisBorder.offsetX, this.offY, this.xaxisBorderWidth, this.offY, w.config.xaxis.axisBorder.color, 0, this.xaxisBorderHeight);
+
+        elXaxis.add(elHorzLine);
+      }
+
+      return elXaxis;
+    }
+
+    // this actually becomes the vertical axis (for bar charts)
+
+  }, {
+    key: 'drawXaxisInversed',
+    value: function drawXaxisInversed(realIndex) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var translateYAxisX = w.config.yaxis[0].opposite ? w.globals.translateYAxisX[realIndex] : 0;
+
+      var elYaxis = graphics.group({
+        class: 'apexcharts-yaxis apexcharts-xaxis-inversed',
+        rel: realIndex
+      });
+
+      var elYaxisTexts = graphics.group({
+        class: 'apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g',
+        transform: 'translate(' + translateYAxisX + ', 0)'
+      });
+
+      elYaxis.add(elYaxisTexts);
+
+      var colHeight = void 0;
+
+      // initial x Position (keep adding column width in the loop)
+      var yPos = void 0;
+      var labels = [];
+
+      for (var i = 0; i < this.xaxisLabels.length; i++) {
+        labels.push(this.xaxisLabels[i]);
+      }
+
+      colHeight = w.globals.gridHeight / labels.length;
+      yPos = -(colHeight / 2.2);
+
+      var lbFormatter = w.globals.yLabelFormatters[0];
+
+      var ylabels = w.config.yaxis[0].labels;
+
+      if (ylabels.show) {
+        for (var _i2 = 0; _i2 <= labels.length - 1; _i2++) {
+          var label = typeof labels[_i2] === 'undefined' ? '' : labels[_i2];
+
+          label = lbFormatter(label);
+
+          var elLabel = graphics.drawText({
+            x: ylabels.offsetX - 15,
+            y: yPos + colHeight + ylabels.offsetY,
+            text: label,
+            textAnchor: this.yaxis.opposite ? 'start' : 'end',
+            foreColor: ylabels.style.color ? ylabels.style.color : ylabels.style.colors[_i2],
+            fontSize: ylabels.style.fontSize,
+            fontFamily: ylabels.style.fontFamily,
+            cssClass: 'apexcharts-yaxis-label ' + ylabels.style.cssClass
+          });
+
+          elYaxisTexts.add(elLabel);
+
+          if (w.config.yaxis[realIndex].labels.rotate !== 0) {
+            var labelRotatingCenter = graphics.rotateAroundCenter(elLabel.node);
+            elLabel.node.setAttribute('transform', 'rotate(' + w.config.yaxis[realIndex].labels.rotate + ' ' + labelRotatingCenter.x + ' ' + labelRotatingCenter.y + ')');
+          }
+          yPos = yPos + colHeight;
+        }
+      }
+
+      if (w.config.yaxis[0].title.text !== undefined) {
+        var elXaxisTitle = graphics.group({
+          class: 'apexcharts-yaxis-title apexcharts-xaxis-title-inversed',
+          transform: 'translate(' + translateYAxisX + ', 0)'
+        });
+
+        var elXAxisTitleText = graphics.drawText({
+          x: 0,
+          y: w.globals.gridHeight / 2,
+          text: w.config.yaxis[0].title.text,
+          textAnchor: 'middle',
+          foreColor: w.config.yaxis[0].title.style.color,
+          fontSize: w.config.yaxis[0].title.style.fontSize,
+          fontFamily: w.config.yaxis[0].title.style.fontFamily,
+          cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[0].title.style.cssClass
+        });
+
+        elXaxisTitle.add(elXAxisTitleText);
+
+        elYaxis.add(elXaxisTitle);
+      }
+
+      if (w.config.xaxis.axisBorder.show) {
+        var elHorzLine = graphics.drawLine(w.globals.padHorizontal + w.config.xaxis.axisBorder.offsetX, this.offY, this.xaxisBorderWidth, this.offY, this.yaxis.axisBorder.color, 0, this.xaxisBorderHeight);
+
+        elYaxis.add(elHorzLine);
+
+        this.axesUtils.drawYAxisTicks(0, labels.length, w.config.yaxis[0].axisBorder, w.config.yaxis[0].axisTicks, 0, colHeight, elYaxis);
+      }
+
+      return elYaxis;
+    }
+  }, {
+    key: 'drawXaxisTicks',
+    value: function drawXaxisTicks(x1, appendToElement) {
+      var w = this.w;
+      var x2 = x1;
+
+      if (x1 < 0 || x1 > w.globals.gridWidth) return;
+
+      var y1 = this.offY + w.config.xaxis.axisTicks.offsetY;
+      var y2 = y1 + w.config.xaxis.axisTicks.height;
+
+      if (w.config.xaxis.axisTicks.show) {
+        var graphics = new _Graphics2.default(this.ctx);
+
+        var line = graphics.drawLine(x1 + w.config.xaxis.axisTicks.offsetX, y1 + w.config.xaxis.offsetY, x2 + w.config.xaxis.axisTicks.offsetX, y2 + w.config.xaxis.offsetY, w.config.xaxis.axisTicks.color);
+
+        // we are not returning anything, but appending directly to the element pased in param
+        appendToElement.add(line);
+        line.node.classList.add('apexcharts-xaxis-tick');
+      }
+    }
+  }, {
+    key: 'getXAxisTicksPositions',
+    value: function getXAxisTicksPositions() {
+      var w = this.w;
+      var xAxisTicksPositions = [];
+
+      var xCount = this.xaxisLabels.length;
+      var x1 = w.globals.padHorizontal;
+
+      if (w.globals.timelineLabels.length > 0) {
+        for (var i = 0; i < xCount; i++) {
+          x1 = this.xaxisLabels[i].position;
+          xAxisTicksPositions.push(x1);
+        }
+      } else {
+        var xCountForCategoryCharts = xCount;
+        for (var _i3 = 0; _i3 < xCountForCategoryCharts; _i3++) {
+          var x1Count = xCountForCategoryCharts;
+          if (w.globals.isXNumeric && w.config.chart.type !== 'bar') {
+            x1Count -= 1;
+          }
+          x1 = x1 + w.globals.gridWidth / x1Count;
+          xAxisTicksPositions.push(x1);
+        }
+      }
+
+      return xAxisTicksPositions;
+    }
+
+    // to rotate x-axis labels or to put ... for longer text in xaxis
+
+  }, {
+    key: 'xAxisLabelCorrections',
+    value: function xAxisLabelCorrections() {
+      var w = this.w;
+
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var xAxis = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g');
+
+      var xAxisTexts = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-texts-g text');
+      var yAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-inversed text');
+      var xAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-inversed-texts-g text');
+
+      if (w.globals.rotateXLabels || w.config.xaxis.labels.rotateAlways) {
+        for (var xat = 0; xat < xAxisTexts.length; xat++) {
+          var textRotatingCenter = graphics.rotateAroundCenter(xAxisTexts[xat]);
+          textRotatingCenter.y = textRotatingCenter.y - 1; // + tickWidth/4;
+          textRotatingCenter.x = textRotatingCenter.x + 1;
+
+          xAxisTexts[xat].setAttribute('transform', 'rotate(' + w.config.xaxis.labels.rotate + ' ' + textRotatingCenter.x + ' ' + textRotatingCenter.y + ')');
+
+          xAxisTexts[xat].setAttribute('text-anchor', 'end');
+
+          var offsetHeight = 10;
+
+          xAxis.setAttribute('transform', 'translate(0, ' + -offsetHeight + ')');
+
+          var tSpan = xAxisTexts[xat].childNodes;
+
+          if (w.config.xaxis.labels.trim) {
+            graphics.placeTextWithEllipsis(tSpan[0], tSpan[0].textContent, w.config.xaxis.labels.maxHeight - 40);
+          }
+        }
+      } else {
+        var width = w.globals.gridWidth / w.globals.labels.length;
+
+        for (var _xat = 0; _xat < xAxisTexts.length; _xat++) {
+          var _tSpan = xAxisTexts[_xat].childNodes;
+
+          if (w.config.xaxis.labels.trim && w.config.xaxis.type !== 'datetime') {
+            graphics.placeTextWithEllipsis(_tSpan[0], _tSpan[0].textContent, width);
+          }
+        }
+      }
+
+      if (yAxisTextsInversed.length > 0) {
+        // truncate rotated y axis in bar chart (x axis)
+        var firstLabelPosX = yAxisTextsInversed[yAxisTextsInversed.length - 1].getBBox();
+        var lastLabelPosX = yAxisTextsInversed[0].getBBox();
+
+        if (firstLabelPosX.x < -20) {
+          yAxisTextsInversed[yAxisTextsInversed.length - 1].parentNode.removeChild(yAxisTextsInversed[yAxisTextsInversed.length - 1]);
+        }
+
+        if (lastLabelPosX.x + lastLabelPosX.width > w.globals.gridWidth) {
+          yAxisTextsInversed[0].parentNode.removeChild(yAxisTextsInversed[0]);
+        }
+
+        // truncate rotated x axis in bar chart (y axis)
+        for (var _xat2 = 0; _xat2 < xAxisTextsInversed.length; _xat2++) {
+          graphics.placeTextWithEllipsis(xAxisTextsInversed[_xat2], xAxisTextsInversed[_xat2].textContent, w.config.yaxis[0].labels.maxWidth - parseInt(w.config.yaxis[0].title.style.fontSize) * 2 - 20);
+        }
+      }
+    }
+
+    // renderXAxisBands() {
+    //   let w = this.w;
+
+    //   let plotBand = document.createElementNS(w.globals.SVGNS, 'rect')
+    //   w.globals.dom.elGraphical.add(plotBand)
+    // }
+
+  }]);
+
+  return XAxis;
+}();
+
+exports.default = XAxis;
+
+/***/ }),
+/* 16 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _AxesUtils = __webpack_require__(24);
+
+var _AxesUtils2 = _interopRequireDefault(_AxesUtils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts YAxis Class for drawing Y-Axis.
+ *
+ * @module YAxis
+ **/
+
+var YAxis = function () {
+  function YAxis(ctx) {
+    _classCallCheck(this, YAxis);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+
+    this.xaxisFontSize = w.config.xaxis.labels.style.fontSize;
+    this.axisFontFamily = w.config.xaxis.labels.style.fontFamily;
+
+    this.xaxisForeColors = w.config.xaxis.labels.style.colors;
+
+    this.xAxisoffX = 0;
+    if (w.config.xaxis.position === 'bottom') {
+      this.xAxisoffX = w.globals.gridHeight;
+    }
+    this.drawnLabels = [];
+    this.axesUtils = new _AxesUtils2.default(ctx);
+  }
+
+  _createClass(YAxis, [{
+    key: 'drawYaxis',
+    value: function drawYaxis(realIndex) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var yaxisFontSize = w.config.yaxis[realIndex].labels.style.fontSize;
+      var yaxisFontFamily = w.config.yaxis[realIndex].labels.style.fontFamily;
+
+      var elYaxis = graphics.group({
+        class: 'apexcharts-yaxis',
+        rel: realIndex,
+        transform: 'translate(' + w.globals.translateYAxisX[realIndex] + ', 0)'
+      });
+
+      if (!w.config.yaxis[realIndex].show) {
+        return elYaxis;
+      }
+
+      var elYaxisTexts = graphics.group({
+        class: 'apexcharts-yaxis-texts-g'
+      });
+
+      elYaxis.add(elYaxisTexts);
+
+      var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1;
+
+      // labelsDivider is simply svg height/number of ticks
+      var labelsDivider = w.globals.gridHeight / tickAmount + 0.1;
+
+      // initial label position = 0;
+      var l = w.globals.translateY;
+      var lbFormatter = w.globals.yLabelFormatters[realIndex];
+
+      var labels = w.globals.yAxisScale[realIndex].result.slice();
+      if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].reversed) {
+        labels.reverse();
+      }
+
+      if (w.config.yaxis[realIndex].labels.show) {
+        for (var i = tickAmount; i >= 0; i--) {
+          var val = labels[i];
+
+          val = lbFormatter(val, i);
+
+          var xPad = w.config.yaxis[realIndex].labels.padding;
+          if (w.config.yaxis[realIndex].opposite && w.config.yaxis.length !== 0) {
+            xPad = xPad * -1;
+          }
+
+          var label = graphics.drawText({
+            x: xPad,
+            y: l + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY + 1,
+            text: val,
+            textAnchor: w.config.yaxis[realIndex].opposite ? 'start' : 'end',
+            fontSize: yaxisFontSize,
+            fontFamily: yaxisFontFamily,
+            foreColor: w.config.yaxis[realIndex].labels.style.color,
+            cssClass: 'apexcharts-yaxis-label ' + w.config.yaxis[realIndex].labels.style.cssClass
+          });
+          elYaxisTexts.add(label);
+
+          var labelRotatingCenter = graphics.rotateAroundCenter(label.node);
+          if (w.config.yaxis[realIndex].labels.rotate !== 0) {
+            label.node.setAttribute('transform', 'rotate(' + w.config.yaxis[realIndex].labels.rotate + ' ' + labelRotatingCenter.x + ' ' + labelRotatingCenter.y + ')');
+          }
+          l = l + labelsDivider;
+        }
+      }
+
+      if (w.config.yaxis[realIndex].title.text !== undefined) {
+        var elYaxisTitle = graphics.group({
+          class: 'apexcharts-yaxis-title'
+        });
+
+        var x = 0;
+        if (w.config.yaxis[realIndex].opposite) {
+          x = w.globals.translateYAxisX[realIndex];
+        }
+        var elYAxisTitleText = graphics.drawText({
+          x: x,
+          y: w.globals.gridHeight / 2 + w.globals.translateY,
+          text: w.config.yaxis[realIndex].title.text,
+          textAnchor: 'end',
+          foreColor: w.config.yaxis[realIndex].title.style.color,
+          fontSize: w.config.yaxis[realIndex].title.style.fontSize,
+          fontFamily: w.config.yaxis[realIndex].title.style.fontFamily,
+          cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[realIndex].title.style.cssClass
+        });
+
+        elYaxisTitle.add(elYAxisTitleText);
+
+        elYaxis.add(elYaxisTitle);
+      }
+
+      var axisBorder = w.config.yaxis[realIndex].axisBorder;
+      if (axisBorder.show) {
+        var _x = 31 + axisBorder.offsetX;
+        if (w.config.yaxis[realIndex].opposite) {
+          _x = -31 - axisBorder.offsetX;
+        }
+
+        var elVerticalLine = graphics.drawLine(_x, w.globals.translateY + axisBorder.offsetY - 2, _x, w.globals.gridHeight + w.globals.translateY + axisBorder.offsetY + 2, axisBorder.color);
+
+        elYaxis.add(elVerticalLine);
+
+        this.axesUtils.drawYAxisTicks(_x, tickAmount, axisBorder, w.config.yaxis[realIndex].axisTicks, realIndex, labelsDivider, elYaxis);
+      }
+
+      return elYaxis;
+    }
+
+    // This actually becomes horizonal axis (for bar charts)
+
+  }, {
+    key: 'drawYaxisInversed',
+    value: function drawYaxisInversed(realIndex) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var elXaxis = graphics.group({
+        class: 'apexcharts-xaxis apexcharts-yaxis-inversed'
+      });
+
+      var elXaxisTexts = graphics.group({
+        class: 'apexcharts-xaxis-texts-g',
+        transform: 'translate(' + w.globals.translateXAxisX + ', ' + w.globals.translateXAxisY + ')'
+      });
+
+      elXaxis.add(elXaxisTexts);
+
+      var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1;
+
+      // labelsDivider is simply svg width/number of ticks
+      var labelsDivider = w.globals.gridWidth / tickAmount + 0.1;
+
+      // initial label position;
+      var l = labelsDivider + w.config.xaxis.labels.offsetX;
+
+      var lbFormatter = w.globals.xLabelFormatter;
+
+      var labels = w.globals.yAxisScale[realIndex].result.slice();
+
+      var timelineLabels = w.globals.invertedTimelineLabels;
+      if (timelineLabels.length > 0) {
+        this.xaxisLabels = timelineLabels.slice();
+        labels = timelineLabels.slice();
+        tickAmount = labels.length;
+      }
+
+      if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].reversed) {
+        labels.reverse();
+      }
+
+      var tl = timelineLabels.length;
+
+      if (w.config.xaxis.labels.show) {
+        for (var i = tl ? 0 : tickAmount; tl ? i < tl - 1 : i >= 0; tl ? i++ : i--) {
+          var val = labels[i];
+          val = lbFormatter(val, i);
+
+          var x = w.globals.gridWidth + w.globals.padHorizontal - (l - labelsDivider + w.config.xaxis.labels.offsetX);
+
+          if (timelineLabels.length) {
+            var label = this.axesUtils.getLabel(labels, timelineLabels, x, i, this.drawnLabels);
+            x = label.x;
+            val = label.text;
+            this.drawnLabels.push(label.text);
+          }
+
+          var elTick = graphics.drawText({
+            x: x,
+            y: this.xAxisoffX + w.config.xaxis.labels.offsetY + 30,
+            text: '',
+            textAnchor: 'middle',
+            foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[realIndex] : this.xaxisForeColors,
+            fontSize: this.xaxisFontSize,
+            fontFamily: this.xaxisFontFamily,
+            cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass
+          });
+
+          elXaxisTexts.add(elTick);
+
+          elTick.tspan(val);
+
+          var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title');
+          elTooltipTitle.textContent = val;
+          elTick.node.appendChild(elTooltipTitle);
+
+          l = l + labelsDivider;
+        }
+      }
+
+      if (w.config.xaxis.title.text !== undefined) {
+        var elYaxisTitle = graphics.group({
+          class: 'apexcharts-xaxis-title apexcharts-yaxis-title-inversed'
+        });
+
+        var elYAxisTitleText = graphics.drawText({
+          x: w.globals.gridWidth / 2,
+          y: this.xAxisoffX + parseInt(this.xaxisFontSize) + parseInt(w.config.xaxis.title.style.fontSize) + 20,
+          text: w.config.xaxis.title.text,
+          textAnchor: 'middle',
+          fontSize: w.config.xaxis.title.style.fontSize,
+          fontFamily: w.config.xaxis.title.style.fontFamily,
+          cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass
+        });
+
+        elYaxisTitle.add(elYAxisTitleText);
+
+        elXaxis.add(elYaxisTitle);
+      }
+
+      var axisBorder = w.config.yaxis[realIndex].axisBorder;
+      if (axisBorder.show) {
+        var elVerticalLine = graphics.drawLine(w.globals.padHorizontal + axisBorder.offsetX, 1 + axisBorder.offsetY, w.globals.padHorizontal + axisBorder.offsetX, w.globals.gridHeight + axisBorder.offsetY, axisBorder.color);
+
+        elXaxis.add(elVerticalLine);
+      }
+
+      return elXaxis;
+    }
+  }, {
+    key: 'yAxisTitleRotate',
+    value: function yAxisTitleRotate(realIndex, yAxisOpposite) {
+      var w = this.w;
+
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var yAxisLabelsCoord = {
+        width: 0,
+        height: 0
+      };
+      var yAxisTitleCoord = {
+        width: 0,
+        height: 0
+      };
+
+      var elYAxisLabelsWrap = w.globals.dom.baseEl.querySelector(' .apexcharts-yaxis[rel=\'' + realIndex + '\'] .apexcharts-yaxis-texts-g');
+
+      if (elYAxisLabelsWrap !== null) {
+        yAxisLabelsCoord = elYAxisLabelsWrap.getBoundingClientRect();
+      }
+
+      var yAxisTitle = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis[rel=\'' + realIndex + '\'] .apexcharts-yaxis-title text');
+
+      if (yAxisTitle !== null) {
+        yAxisTitleCoord = yAxisTitle.getBoundingClientRect();
+      }
+
+      if (yAxisTitle !== null) {
+        var x = this.xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite);
+
+        yAxisTitle.setAttribute('x', x.xPos - (yAxisOpposite ? 10 : 0));
+      }
+
+      if (yAxisTitle !== null) {
+        var titleRotatingCenter = graphics.rotateAroundCenter(yAxisTitle);
+        if (!yAxisOpposite) {
+          yAxisTitle.setAttribute('transform', 'rotate(-' + w.config.yaxis[realIndex].title.rotate + ' ' + titleRotatingCenter.x + ' ' + titleRotatingCenter.y + ')');
+        } else {
+          yAxisTitle.setAttribute('transform', 'rotate(' + w.config.yaxis[realIndex].title.rotate + ' ' + titleRotatingCenter.x + ' ' + titleRotatingCenter.y + ')');
+        }
+      }
+    }
+  }, {
+    key: 'xPaddingForYAxisTitle',
+    value: function xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite) {
+      var w = this.w;
+      var oppositeAxisCount = 0;
+
+      var x = 0;
+      var padd = 10;
+
+      if (w.config.yaxis[realIndex].title.text === undefined || realIndex < 0) {
+        return {
+          xPos: x,
+          padd: 0
+        };
+      }
+
+      if (yAxisOpposite) {
+        x = yAxisLabelsCoord.width + w.config.yaxis[realIndex].title.offsetX + yAxisTitleCoord.width / 2 + padd / 2;
+
+        oppositeAxisCount += 1;
+
+        if (oppositeAxisCount === 0) {
+          x = x - padd / 2;
+        }
+      } else {
+        x = yAxisLabelsCoord.width * -1 + w.config.yaxis[realIndex].title.offsetX + padd / 2 + yAxisTitleCoord.width / 2;
+
+        if (w.globals.isBarHorizontal) {
+          padd = 25;
+          x = yAxisLabelsCoord.width * -1 - w.config.yaxis[realIndex].title.offsetX - padd;
+        }
+      }
+
+      return { xPos: x, padd: padd };
+    }
+
+    // sets the x position of the y-axis by counting the labels width, title width and any offset
+
+  }, {
+    key: 'setYAxisXPosition',
+    value: function setYAxisXPosition(yaxisLabelCoords, yTitleCoords) {
+      var w = this.w;
+
+      var xLeft = 0;
+      var xRight = 0;
+      var leftOffsetX = 21;
+      var rightOffsetX = 1;
+
+      if (w.config.yaxis.length > 1) {
+        this.multipleYs = true;
+      }
+
+      w.config.yaxis.map(function (yaxe, index) {
+        var shouldNotDrawAxis = w.globals.ignoreYAxisIndexes.indexOf(index) > -1 || !yaxe.show || yaxe.floating || yaxisLabelCoords[index].width === 0;
+
+        var axisWidth = yaxisLabelCoords[index].width + yTitleCoords[index].width;
+
+        if (!yaxe.opposite) {
+          xLeft = w.globals.translateX - leftOffsetX;
+
+          if (!shouldNotDrawAxis) {
+            leftOffsetX = leftOffsetX + axisWidth + 20;
+          }
+
+          w.globals.translateYAxisX[index] = xLeft + yaxe.labels.offsetX;
+        } else {
+          if (w.globals.isBarHorizontal) {
+            xRight = w.globals.gridWidth + w.globals.translateX - 1;
+
+            w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX;
+          } else {
+            xRight = w.globals.gridWidth + w.globals.translateX + rightOffsetX;
+
+            if (!shouldNotDrawAxis) {
+              rightOffsetX = rightOffsetX + axisWidth + 20;
+            }
+
+            w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX + 20;
+          }
+        }
+      });
+    }
+  }, {
+    key: 'setYAxisTextAlignments',
+    value: function setYAxisTextAlignments() {
+      var w = this.w;
+
+      var yaxis = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis');
+      yaxis = _Utils2.default.listToArray(yaxis);
+      yaxis.forEach(function (y, index) {
+        var yaxe = w.config.yaxis[index];
+        // proceed only if user has specified alignment
+        if (yaxe.labels.align !== undefined) {
+          var yAxisInner = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis[rel=\'' + index + '\'] .apexcharts-yaxis-texts-g');
+          var yAxisTexts = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis[rel=\'' + index + '\'] .apexcharts-yaxis-label');
+
+          yAxisTexts = _Utils2.default.listToArray(yAxisTexts);
+
+          var rect = yAxisInner.getBoundingClientRect();
+
+          if (yaxe.labels.align === 'left') {
+            yAxisTexts.forEach(function (label, lI) {
+              label.setAttribute('text-anchor', 'start');
+            });
+            if (!yaxe.opposite) {
+              yAxisInner.setAttribute('transform', 'translate(-' + rect.width + ', 0)');
+            }
+          } else if (yaxe.labels.align === 'center') {
+            yAxisTexts.forEach(function (label, lI) {
+              label.setAttribute('text-anchor', 'middle');
+            });
+            yAxisInner.setAttribute('transform', 'translate(' + rect.width / 2 * (!yaxe.opposite ? -1 : 1) + ', 0)');
+          } else if (yaxe.labels.align === 'right') {
+            yAxisTexts.forEach(function (label, lI) {
+              label.setAttribute('text-anchor', 'end');
+            });
+            if (yaxe.opposite) {
+              yAxisInner.setAttribute('transform', 'translate(' + rect.width + ', 0)');
+            }
+          }
+        }
+      });
+    }
+  }]);
+
+  return YAxis;
+}();
+
+exports.default = YAxis;
+
+/***/ }),
+/* 17 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Defaults = __webpack_require__(25);
+
+var _Defaults2 = _interopRequireDefault(_Defaults);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _CoreUtils = __webpack_require__(2);
+
+var _CoreUtils2 = _interopRequireDefault(_CoreUtils);
+
+var _Options = __webpack_require__(18);
+
+var _Options2 = _interopRequireDefault(_Options);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Config Class for extending user options with pre-defined ApexCharts config.
+ *
+ * @module Config
+ **/
+var Config = function () {
+  function Config(opts) {
+    _classCallCheck(this, Config);
+
+    this.opts = opts;
+  }
+
+  _createClass(Config, [{
+    key: 'init',
+    value: function init() {
+      var opts = this.opts;
+      var options = new _Options2.default();
+      var defaults = new _Defaults2.default(opts);
+
+      this.chartType = opts.chart.type;
+
+      if (this.chartType === 'histogram') {
+        // technically, a histogram can be drawn by a column chart with no spaces in between
+        opts.chart.type = 'bar';
+        opts = _Utils2.default.extend({
+          plotOptions: {
+            bar: {
+              columnWidth: '99.99%'
+            }
+          }
+        }, opts);
+      }
+
+      opts.series = this.checkEmptySeries(opts.series);
+
+      opts = this.extendYAxis(opts);
+      opts = this.extendAnnotations(opts);
+
+      var config = options.init();
+      var newDefaults = {};
+      if (opts && (typeof opts === 'undefined' ? 'undefined' : _typeof(opts)) === 'object') {
+        var chartDefaults = {};
+        switch (this.chartType) {
+          case 'line':
+            chartDefaults = defaults.line();
+            break;
+          case 'area':
+            chartDefaults = defaults.area();
+            break;
+          case 'bar':
+            chartDefaults = defaults.bar();
+            break;
+          case 'candlestick':
+            chartDefaults = defaults.candlestick();
+            break;
+          case 'rangeBar':
+            chartDefaults = defaults.rangeBar();
+            break;
+          case 'histogram':
+            chartDefaults = defaults.bar();
+            break;
+          case 'bubble':
+            chartDefaults = defaults.bubble();
+            break;
+          case 'scatter':
+            chartDefaults = defaults.scatter();
+            break;
+          case 'heatmap':
+            chartDefaults = defaults.heatmap();
+            break;
+          case 'pie':
+            chartDefaults = defaults.pie();
+            break;
+          case 'donut':
+            chartDefaults = defaults.donut();
+            break;
+          case 'radar':
+            chartDefaults = defaults.radar();
+            break;
+          case 'radialBar':
+            chartDefaults = defaults.radialBar();
+            break;
+          default:
+            chartDefaults = defaults.line();
+        }
+
+        if (opts.chart.brush && opts.chart.brush.enabled) {
+          chartDefaults = defaults.brush(chartDefaults);
+        }
+
+        if (opts.chart.stacked && opts.chart.stackType === '100%') {
+          defaults.stacked100();
+        }
+
+        // If user has specified a dark theme, make the tooltip dark too
+        this.checkForDarkTheme(window.Apex); // check global window Apex options
+        this.checkForDarkTheme(opts); // check locally passed options
+
+        opts.xaxis = opts.xaxis || window.Apex.xaxis || {};
+
+        var combo = _CoreUtils2.default.checkComboSeries(opts.series);
+        if ((opts.chart.type === 'line' || opts.chart.type === 'area' || opts.chart.type === 'scatter') && !combo.comboChartsHasBars && opts.xaxis.type !== 'datetime' && opts.xaxis.type !== 'numeric' && opts.xaxis.tickPlacement !== 'between') {
+          opts = _Defaults2.default.convertCatToNumeric(opts);
+        }
+        if (opts.chart.sparkline && opts.chart.sparkline.enabled || window.Apex.chart && window.Apex.chart.sparkline && window.Apex.chart.sparkline.enabled) {
+          chartDefaults = defaults.sparkline(chartDefaults);
+        }
+        newDefaults = _Utils2.default.extend(config, chartDefaults);
+      }
+
+      // config should cascade in this fashion
+      // default-config < global-apex-variable-config < user-defined-config
+
+      // get GLOBALLY defined options and merge with the default config
+      var mergedWithDefaultConfig = _Utils2.default.extend(newDefaults, window.Apex);
+
+      // get the merged config and extend with user defined config
+      config = _Utils2.default.extend(mergedWithDefaultConfig, opts);
+
+      // some features are not supported. those mismatches should be handled
+      config = this.handleUserInputErrors(config);
+
+      return config;
+    }
+  }, {
+    key: 'extendYAxis',
+    value: function extendYAxis(opts) {
+      var options = new _Options2.default();
+      if (typeof opts.yaxis === 'undefined') {
+        opts.yaxis = {};
+      }
+
+      // extend global yaxis config (only if object is provided / not an array)
+      if (opts.yaxis.constructor !== Array && window.Apex.yaxis && window.Apex.yaxis.constructor !== Array) {
+        opts.yaxis = _Utils2.default.extend(opts.yaxis, window.Apex.yaxis);
+      }
+
+      // as we can't extend nested object's array with extend, we need to do it first
+      // user can provide either an array or object in yaxis config
+      if (opts.yaxis.constructor !== Array) {
+        // convert the yaxis to array if user supplied object
+        opts.yaxis = [_Utils2.default.extend(options.yAxis, opts.yaxis)];
+      } else {
+        opts.yaxis = _Utils2.default.extendArray(opts.yaxis, options.yAxis);
+      }
+      return opts;
+    }
+
+    // annotations also accepts array, so we need to extend them manually
+
+  }, {
+    key: 'extendAnnotations',
+    value: function extendAnnotations(opts) {
+      if (typeof opts.annotations === 'undefined') {
+        opts.annotations = {};
+        opts.annotations.yaxis = [];
+        opts.annotations.xaxis = [];
+        opts.annotations.points = [];
+      }
+
+      opts = this.extendYAxisAnnotations(opts);
+      opts = this.extendXAxisAnnotations(opts);
+      opts = this.extendPointAnnotations(opts);
+
+      return opts;
+    }
+  }, {
+    key: 'extendYAxisAnnotations',
+    value: function extendYAxisAnnotations(opts) {
+      var options = new _Options2.default();
+      opts.annotations.yaxis = _Utils2.default.extendArray(typeof opts.annotations.yaxis !== 'undefined' ? opts.annotations.yaxis : [], options.yAxisAnnotation);
+      return opts;
+    }
+  }, {
+    key: 'extendXAxisAnnotations',
+    value: function extendXAxisAnnotations(opts) {
+      var options = new _Options2.default();
+      opts.annotations.xaxis = _Utils2.default.extendArray(typeof opts.annotations.xaxis !== 'undefined' ? opts.annotations.xaxis : [], options.xAxisAnnotation);
+      return opts;
+    }
+  }, {
+    key: 'extendPointAnnotations',
+    value: function extendPointAnnotations(opts) {
+      var options = new _Options2.default();
+      opts.annotations.points = _Utils2.default.extendArray(typeof opts.annotations.points !== 'undefined' ? opts.annotations.points : [], options.pointAnnotation);
+      return opts;
+    }
+  }, {
+    key: 'checkForDarkTheme',
+    value: function checkForDarkTheme(opts) {
+      if (opts.theme && opts.theme.mode === 'dark') {
+        if (!opts.tooltip) {
+          opts.tooltip = {};
+        }
+        if (opts.tooltip.theme !== 'light') {
+          opts.tooltip.theme = 'dark';
+        }
+
+        if (!opts.chart.foreColor) {
+          opts.chart.foreColor = '#f6f7f8';
+        }
+
+        if (!opts.theme.palette) {
+          opts.theme.palette = 'palette4';
+        }
+      }
+    }
+  }, {
+    key: 'checkEmptySeries',
+    value: function checkEmptySeries(ser) {
+      if (ser.length === 0) {
+        return [{
+          data: []
+        }];
+      }
+      return ser;
+    }
+  }, {
+    key: 'handleUserInputErrors',
+    value: function handleUserInputErrors(opts) {
+      var config = opts;
+      // conflicting tooltip option. intersect makes sure to focus on 1 point at a time. Shared cannot be used along with it
+      if (config.tooltip.shared && config.tooltip.intersect) {
+        throw new Error('tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.');
+      }
+
+      if (config.chart.scroller) {
+        console.warn('Scroller has been deprecated since v2.0.0. Please remove the configuration for chart.scroller');
+      }
+
+      if ((config.chart.type === 'bar' || config.chart.type === 'rangeBar') && config.plotOptions.bar.horizontal) {
+        // No multiple yaxis for bars
+        if (config.yaxis.length > 1) {
+          throw new Error('Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false');
+        }
+
+        // if yaxis is reversed in horizontal bar chart, you should draw the y-axis on right side
+        if (config.yaxis[0].reversed) {
+          config.yaxis[0].opposite = true;
+        }
+
+        config.xaxis.tooltip.enabled = false; // no xaxis tooltip for horizontal bar
+        config.yaxis[0].tooltip.enabled = false; // no xaxis tooltip for horizontal bar
+        config.chart.zoom.enabled = false; // no zooming for horz bars
+      }
+
+      if (config.chart.type === 'bar' || config.chart.type === 'rangeBar') {
+        if (config.tooltip.shared) {
+          if (config.xaxis.crosshairs.width === 'barWidth' && config.series.length > 1) {
+            console.warn('crosshairs.width = "barWidth" is only supported in single series, not in a multi-series barChart.');
+            config.xaxis.crosshairs.width = 'tickWidth';
+          }
+          if (config.plotOptions.bar.horizontal) {
+            config.states.hover.type = 'none';
+            config.tooltip.shared = false;
+          }
+          if (!config.tooltip.followCursor) {
+            console.warn('followCursor option in shared columns cannot be turned off. Please set %ctooltip.followCursor: true', 'color: blue;');
+            config.tooltip.followCursor = true;
+          }
+        }
+      }
+
+      if (config.chart.type === 'candlestick') {
+        if (config.yaxis[0].reversed) {
+          console.warn('Reversed y-axis in candlestick chart is not supported.');
+          config.yaxis[0].reversed = false;
+        }
+      }
+
+      if (config.chart.group && config.yaxis[0].labels.minWidth === 0) {
+        console.warn('It looks like you have multiple charts in synchronization. You must provide yaxis.labels.minWidth which must be EQUAL for all grouped charts to prevent incorrect behaviour.');
+      }
+
+      // if user supplied array for stroke width, it will only be applicable to line/area charts, for any other charts, revert back to Number
+      if (Array.isArray(config.stroke.width)) {
+        if (config.chart.type !== 'line' && config.chart.type !== 'area') {
+          console.warn('stroke.width option accepts array only for line and area charts. Reverted back to Number');
+          config.stroke.width = config.stroke.width[0];
+        }
+      }
+
+      return config;
+    }
+  }]);
+
+  return Config;
+}();
+
+exports.default = Config;
+
+/***/ }),
+/* 18 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * ApexCharts Options for setting the initial configuration of ApexCharts
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      **/
+
+
+var _en = __webpack_require__(30);
+
+var _en2 = _interopRequireDefault(_en);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var Options = function () {
+  function Options() {
+    _classCallCheck(this, Options);
+
+    this.yAxis = {
+      show: true,
+      showAlways: false,
+      seriesName: undefined,
+      opposite: false,
+      reversed: false,
+      logarithmic: false,
+      tickAmount: undefined,
+      forceNiceScale: false,
+      max: undefined,
+      min: undefined,
+      floating: false,
+      decimalsInFloat: undefined,
+      labels: {
+        show: true,
+        minWidth: 0,
+        maxWidth: 160,
+        offsetX: 0,
+        offsetY: 0,
+        align: undefined,
+        rotate: 0,
+        padding: 20,
+        style: {
+          colors: [],
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: ''
+        },
+        formatter: undefined
+      },
+      axisBorder: {
+        show: false,
+        color: '#78909C',
+        offsetX: 0,
+        offsetY: 0
+      },
+      axisTicks: {
+        show: false,
+        color: '#78909C',
+        width: 6,
+        offsetX: 0,
+        offsetY: 0
+      },
+      title: {
+        text: undefined,
+        rotate: 90,
+        offsetY: 0,
+        offsetX: 0,
+        style: {
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: ''
+        }
+      },
+      tooltip: {
+        enabled: false,
+        offsetX: 0
+      },
+      crosshairs: {
+        show: true,
+        position: 'front',
+        stroke: {
+          color: '#b6b6b6',
+          width: 1,
+          dashArray: 0
+        }
+      }
+    };
+
+    this.xAxisAnnotation = {
+      x: 0,
+      x2: null,
+      strokeDashArray: 1,
+      fillColor: '#c2c2c2',
+      borderColor: '#c2c2c2',
+      opacity: 0.3,
+      offsetX: 0,
+      offsetY: 0,
+      label: {
+        borderColor: '#c2c2c2',
+        borderWidth: 1,
+        text: undefined,
+        textAnchor: 'middle',
+        orientation: 'vertical',
+        position: 'top',
+        offsetX: 0,
+        offsetY: 0,
+        style: {
+          background: '#fff',
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: '',
+          padding: {
+            left: 5,
+            right: 5,
+            top: 2,
+            bottom: 2
+          }
+        }
+      }
+    };
+
+    this.yAxisAnnotation = {
+      y: 0,
+      y2: null,
+      strokeDashArray: 1,
+      fillColor: '#c2c2c2',
+      borderColor: '#c2c2c2',
+      opacity: 0.3,
+      offsetX: 0,
+      offsetY: 0,
+      yAxisIndex: 0,
+      label: {
+        borderColor: '#c2c2c2',
+        borderWidth: 1,
+        text: undefined,
+        textAnchor: 'end',
+        position: 'right',
+        offsetX: 0,
+        offsetY: -3,
+        style: {
+          background: '#fff',
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: '',
+          padding: {
+            left: 5,
+            right: 5,
+            top: 0,
+            bottom: 2
+          }
+        }
+      }
+    };
+
+    this.pointAnnotation = {
+      x: 0,
+      y: null,
+      yAxisIndex: 0,
+      seriesIndex: 0,
+      marker: {
+        size: 0,
+        fillColor: '#fff',
+        strokeWidth: 2,
+        strokeColor: '#333',
+        shape: 'circle',
+        offsetX: 0,
+        offsetY: 0,
+        radius: 2,
+        cssClass: ''
+      },
+      label: {
+        borderColor: '#c2c2c2',
+        borderWidth: 1,
+        text: undefined,
+        textAnchor: 'middle',
+        offsetX: 0,
+        offsetY: -15,
+        style: {
+          background: '#fff',
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: '',
+          padding: {
+            left: 5,
+            right: 5,
+            top: 0,
+            bottom: 2
+          }
+        }
+      },
+      customSVG: {
+        SVG: undefined,
+        cssClass: undefined,
+        offsetX: 0,
+        offsetY: 0
+      }
+    };
+  }
+
+  _createClass(Options, [{
+    key: 'init',
+    value: function init() {
+      return {
+        annotations: {
+          position: 'front',
+          yaxis: [this.yAxisAnnotation],
+          xaxis: [this.xAxisAnnotation],
+          points: [this.pointAnnotation]
+        },
+        chart: {
+          animations: {
+            enabled: true,
+            easing: 'easeinout', // linear, easeout, easein, easeinout, swing, bounce, elastic
+            speed: 800,
+            animateGradually: {
+              delay: 150,
+              enabled: true
+            },
+            dynamicAnimation: {
+              enabled: true,
+              speed: 350
+            }
+          },
+          background: 'transparent',
+          locales: [_en2.default],
+          defaultLocale: 'en',
+          dropShadow: {
+            enabled: false,
+            enabledSeries: undefined,
+            top: 2,
+            left: 2,
+            blur: 4,
+            color: '#000',
+            opacity: 0.35
+          },
+          events: {
+            animationEnd: undefined,
+            beforeMount: undefined,
+            mounted: undefined,
+            updated: undefined,
+            click: undefined,
+            legendClick: undefined,
+            markerClick: undefined,
+            selection: undefined,
+            dataPointSelection: undefined,
+            dataPointMouseEnter: undefined,
+            dataPointMouseLeave: undefined,
+            beforeZoom: undefined,
+            zoomed: undefined,
+            scrolled: undefined
+          },
+          foreColor: '#373d3f',
+          fontFamily: 'Helvetica, Arial, sans-serif',
+          height: 'auto',
+          parentHeightOffset: 15,
+          id: undefined,
+          group: undefined,
+          offsetX: 0,
+          offsetY: 0,
+          selection: {
+            enabled: false,
+            type: 'x',
+            // selectedPoints: undefined, // default datapoints that should be selected automatically
+            fill: {
+              color: '#24292e',
+              opacity: 0.1
+            },
+            stroke: {
+              width: 1,
+              color: '#24292e',
+              opacity: 0.4,
+              dashArray: 3
+            },
+            xaxis: {
+              min: undefined,
+              max: undefined
+            },
+            yaxis: {
+              min: undefined,
+              max: undefined
+            }
+          },
+          sparkline: {
+            enabled: false
+          },
+          brush: {
+            enabled: false,
+            autoScaleYaxis: false,
+            target: undefined
+          },
+          stacked: false,
+          stackType: 'normal',
+          toolbar: {
+            show: true,
+            tools: {
+              download: true,
+              selection: true,
+              zoom: true,
+              zoomin: true,
+              zoomout: true,
+              pan: true,
+              reset: true,
+              customIcons: []
+            },
+            autoSelected: 'zoom' // accepts -> zoom, pan, selection
+          },
+          type: 'line',
+          width: '100%',
+          zoom: {
+            enabled: true,
+            type: 'x',
+            // autoScaleYaxis: false, // TODO: rewrite the autoScaleY function
+            zoomedArea: {
+              fill: {
+                color: '#90CAF9',
+                opacity: 0.4
+              },
+              stroke: {
+                color: '#0D47A1',
+                opacity: 0.4,
+                width: 1
+              }
+            }
+          }
+        },
+        plotOptions: {
+          bar: {
+            horizontal: false,
+            columnWidth: '70%', // should be in percent 0 - 100
+            barHeight: '70%', // should be in percent 0 - 100
+            distributed: false,
+            endingShape: 'flat',
+            colors: {
+              ranges: [],
+              backgroundBarColors: [],
+              backgroundBarOpacity: 1
+            },
+            dataLabels: {
+              maxItems: 100,
+              hideOverflowingLabels: true,
+              position: 'top' // top, center, bottom
+              // TODO: provide stackedLabels for stacked charts which gives additions of values
+            }
+          },
+          candlestick: {
+            colors: {
+              upward: '#00B746',
+              downward: '#EF403C'
+            },
+            wick: {
+              useFillColor: true
+            }
+          },
+          heatmap: {
+            radius: 2,
+            enableShades: true,
+            shadeIntensity: 0.5,
+            reverseNegativeShade: true,
+            distributed: false,
+            colorScale: {
+              inverse: false,
+              ranges: [],
+              min: undefined,
+              max: undefined
+            }
+          },
+          radialBar: {
+            size: undefined,
+            inverseOrder: false,
+            startAngle: 0,
+            endAngle: 360,
+            offsetX: 0,
+            offsetY: 0,
+            hollow: {
+              margin: 5,
+              size: '50%',
+              background: 'transparent',
+              image: undefined,
+              imageWidth: 150,
+              imageHeight: 150,
+              imageOffsetX: 0,
+              imageOffsetY: 0,
+              imageClipped: true,
+              position: 'front',
+              dropShadow: {
+                enabled: false,
+                top: 0,
+                left: 0,
+                blur: 3,
+                color: '#000',
+                opacity: 0.5
+              }
+            },
+            track: {
+              show: true,
+              startAngle: undefined,
+              endAngle: undefined,
+              background: '#f2f2f2',
+              strokeWidth: '97%',
+              opacity: 1,
+              margin: 5, // margin is in pixels
+              dropShadow: {
+                enabled: false,
+                top: 0,
+                left: 0,
+                blur: 3,
+                color: '#000',
+                opacity: 0.5
+              }
+            },
+            dataLabels: {
+              show: true,
+              name: {
+                show: true,
+                fontSize: '16px',
+                fontFamily: undefined,
+                color: undefined,
+                offsetY: 0
+              },
+              value: {
+                show: true,
+                fontSize: '14px',
+                fontFamily: undefined,
+                color: undefined,
+                offsetY: 16,
+                formatter: function formatter(val) {
+                  return val + '%';
+                }
+              },
+              total: {
+                show: false,
+                label: 'Total',
+                color: undefined,
+                formatter: function formatter(w) {
+                  return w.globals.seriesTotals.reduce(function (a, b) {
+                    return a + b;
+                  }, 0) / w.globals.series.length + '%';
+                }
+              }
+            }
+          },
+          rangeBar: {},
+          pie: {
+            size: undefined,
+            customScale: 1,
+            offsetX: 0,
+            offsetY: 0,
+            expandOnClick: true,
+            dataLabels: {
+              // These are the percentage values which are displayed on slice
+              offset: 0, // offset by which labels will move outside
+              minAngleToShowLabel: 10
+            },
+            donut: {
+              size: '65%',
+              background: 'transparent',
+              labels: {
+                // These are the inner labels appearing inside donut
+                show: false,
+                name: {
+                  show: true,
+                  fontSize: '16px',
+                  fontFamily: undefined,
+                  color: undefined,
+                  offsetY: -10
+                },
+                value: {
+                  show: true,
+                  fontSize: '20px',
+                  fontFamily: undefined,
+                  color: undefined,
+                  offsetY: 10,
+                  formatter: function formatter(val) {
+                    return val;
+                  }
+                },
+                total: {
+                  show: false,
+                  label: 'Total',
+                  color: undefined,
+                  formatter: function formatter(w) {
+                    return w.globals.seriesTotals.reduce(function (a, b) {
+                      return a + b;
+                    }, 0);
+                  }
+                }
+              }
+            }
+          },
+          radar: {
+            size: undefined,
+            offsetX: 0,
+            offsetY: 0,
+            polygons: {
+              // strokeColor: '#e8e8e8', // should be deprecated in the minor version i.e 3.2
+              strokeColors: '#e8e8e8',
+              connectorColors: '#e8e8e8',
+              fill: {
+                colors: undefined
+              }
+            }
+          }
+        },
+        colors: undefined,
+        dataLabels: {
+          enabled: true,
+          enabledOnSeries: undefined,
+          formatter: function formatter(val) {
+            return val;
+          },
+          textAnchor: 'middle',
+          offsetX: 0,
+          offsetY: 0,
+          style: {
+            fontSize: '12px',
+            fontFamily: undefined,
+            colors: undefined
+          },
+          dropShadow: {
+            enabled: false,
+            top: 1,
+            left: 1,
+            blur: 1,
+            color: '#000',
+            opacity: 0.45
+          }
+        },
+        fill: {
+          type: 'solid',
+          colors: undefined, // array of colors
+          opacity: 0.85,
+          gradient: {
+            shade: 'dark',
+            type: 'horizontal',
+            shadeIntensity: 0.5,
+            gradientToColors: undefined,
+            inverseColors: true,
+            opacityFrom: 1,
+            opacityTo: 1,
+            stops: [0, 50, 100],
+            colorStops: []
+          },
+          image: {
+            src: [],
+            width: undefined, // optional
+            height: undefined // optional
+          },
+          pattern: {
+            style: 'sqaures', // String | Array of Strings
+            width: 6,
+            height: 6,
+            strokeWidth: 2
+          }
+        },
+        grid: {
+          show: true,
+          borderColor: '#e0e0e0',
+          strokeDashArray: 0,
+          position: 'back',
+          xaxis: {
+            lines: {
+              show: false,
+              animate: false
+            }
+          },
+          yaxis: {
+            lines: {
+              show: true,
+              animate: false
+            }
+          },
+          row: {
+            colors: undefined, // takes as array which will be repeated on rows
+            opacity: 0.5
+          },
+          column: {
+            colors: undefined, // takes an array which will be repeated on columns
+            opacity: 0.5
+          },
+          padding: {
+            top: 0,
+            right: 10,
+            bottom: 0,
+            left: 12
+          }
+        },
+        labels: [],
+        legend: {
+          show: true,
+          showForSingleSeries: false,
+          showForNullSeries: true,
+          showForZeroSeries: true,
+          floating: false,
+          position: 'bottom', // whether to position legends in 1 of 4
+          // direction - top, bottom, left, right
+          horizontalAlign: 'center', // when position top/bottom, you can specify whether to align legends left, right or center
+          fontSize: '12px',
+          fontFamily: undefined,
+          width: undefined,
+          height: undefined,
+          formatter: undefined,
+          offsetX: -20,
+          offsetY: 0,
+          labels: {
+            colors: undefined,
+            useSeriesColors: false
+          },
+          markers: {
+            width: 12,
+            height: 12,
+            strokeWidth: 0,
+            strokeColor: '#fff',
+            radius: 12,
+            customHTML: undefined,
+            offsetX: 0,
+            offsetY: 0,
+            onClick: undefined
+          },
+          itemMargin: {
+            horizontal: 0,
+            vertical: 5
+          },
+          onItemClick: {
+            toggleDataSeries: true
+          },
+          onItemHover: {
+            highlightDataSeries: true
+          }
+        },
+        markers: {
+          discrete: [],
+          size: 0,
+          colors: undefined,
+          //strokeColor: '#fff', // TODO: deprecate in major version 4.0
+          strokeColors: '#fff',
+          strokeWidth: 2,
+          strokeOpacity: 0.9,
+          fillOpacity: 1,
+          shape: 'circle',
+          radius: 2,
+          offsetX: 0,
+          offsetY: 0,
+          hover: {
+            size: undefined,
+            sizeOffset: 3
+          }
+        },
+        noData: {
+          text: undefined,
+          align: 'center',
+          verticalAlign: 'middle',
+          offsetX: 0,
+          offsetY: 0,
+          style: {
+            color: undefined,
+            fontSize: '14px',
+            fontFamily: undefined
+          }
+        },
+        responsive: [], // breakpoints should follow ascending order 400, then 700, then 1000
+        series: undefined,
+        states: {
+          normal: {
+            filter: {
+              type: 'none',
+              value: 0
+            }
+          },
+          hover: {
+            filter: {
+              type: 'lighten',
+              value: 0.15
+            }
+          },
+          active: {
+            allowMultipleDataPointsSelection: false,
+            filter: {
+              type: 'darken',
+              value: 0.65
+            }
+          }
+        },
+        title: {
+          text: undefined,
+          align: 'left',
+          margin: 10,
+          offsetX: 0,
+          offsetY: 0,
+          floating: false,
+          style: {
+            fontSize: '14px',
+            fontFamily: undefined,
+            color: undefined
+          }
+        },
+        subtitle: {
+          text: undefined,
+          align: 'left',
+          margin: 10,
+          offsetX: 0,
+          offsetY: 30,
+          floating: false,
+          style: {
+            fontSize: '12px',
+            fontFamily: undefined,
+            color: undefined
+          }
+        },
+        stroke: {
+          show: true,
+          curve: 'smooth', // "smooth" / "straight" / "stepline"
+          lineCap: 'butt', // round, butt , square
+          width: 2,
+          colors: undefined, // array of colors
+          dashArray: 0 // single value or array of values
+        },
+        tooltip: {
+          enabled: true,
+          enabledOnSeries: undefined,
+          shared: true,
+          followCursor: false, // when disabled, the tooltip will show on top of the series instead of mouse position
+          intersect: false, // when enabled, tooltip will only show when user directly hovers over point
+          inverseOrder: false,
+          custom: undefined,
+          fillSeriesColor: false,
+          theme: 'light',
+          style: {
+            fontSize: '12px',
+            fontFamily: undefined
+          },
+          onDatasetHover: {
+            highlightDataSeries: false
+          },
+          x: {
+            // x value
+            show: true,
+            format: 'dd MMM', // dd/MM, dd MMM yy, dd MMM yyyy
+            formatter: undefined // a custom user supplied formatter function
+          },
+          y: {
+            formatter: undefined,
+            title: {
+              formatter: function formatter(seriesName) {
+                return seriesName;
+              }
+            }
+          },
+          z: {
+            formatter: undefined,
+            title: 'Size: '
+          },
+          marker: {
+            show: true
+          },
+          items: {
+            display: 'flex'
+          },
+          fixed: {
+            enabled: false,
+            position: 'topRight', // topRight, topLeft, bottomRight, bottomLeft
+            offsetX: 0,
+            offsetY: 0
+          }
+        },
+        xaxis: {
+          type: 'category',
+          categories: [],
+          offsetX: 0,
+          offsetY: 0,
+          labels: {
+            show: true,
+            rotate: -45,
+            rotateAlways: false,
+            hideOverlappingLabels: true,
+            trim: true,
+            minHeight: undefined,
+            maxHeight: 120,
+            showDuplicates: true,
+            style: {
+              colors: [],
+              fontSize: '12px',
+              fontFamily: undefined,
+              cssClass: ''
+            },
+            offsetX: 0,
+            offsetY: 0,
+            format: undefined,
+            formatter: undefined, // custom formatter function which will override format
+            datetimeFormatter: {
+              year: 'yyyy',
+              month: "MMM 'yy",
+              day: 'dd MMM',
+              hour: 'HH:mm',
+              minute: 'HH:mm:ss'
+            }
+          },
+          axisBorder: {
+            show: true,
+            color: '#78909C',
+            width: '100%',
+            height: 1,
+            offsetX: 0,
+            offsetY: 0
+          },
+          axisTicks: {
+            show: true,
+            color: '#78909C',
+            height: 6,
+            offsetX: 0,
+            offsetY: 0
+          },
+          tickAmount: undefined,
+          tickPlacement: 'on',
+          min: undefined,
+          max: undefined,
+          range: undefined,
+          floating: false,
+          position: 'bottom',
+          title: {
+            text: undefined,
+            offsetX: 0,
+            offsetY: 0,
+            style: {
+              color: undefined,
+              fontSize: '12px',
+              fontFamily: undefined,
+              cssClass: ''
+            }
+          },
+          crosshairs: {
+            show: true,
+            width: 1, // tickWidth/barWidth or an integer
+            position: 'back',
+            opacity: 0.9,
+            stroke: {
+              color: '#b6b6b6',
+              width: 1,
+              dashArray: 3
+            },
+            fill: {
+              type: 'solid', // solid, gradient
+              color: '#B1B9C4',
+              gradient: {
+                colorFrom: '#D8E3F0',
+                colorTo: '#BED1E6',
+                stops: [0, 100],
+                opacityFrom: 0.4,
+                opacityTo: 0.5
+              }
+            },
+            dropShadow: {
+              enabled: false,
+              left: 0,
+              top: 0,
+              blur: 1,
+              opacity: 0.4
+            }
+          },
+          tooltip: {
+            enabled: true,
+            offsetY: 0,
+            formatter: undefined,
+            style: {
+              fontSize: '12px',
+              fontFamily: undefined
+            }
+          }
+        },
+        yaxis: this.yAxis,
+        theme: {
+          mode: 'light',
+          palette: 'palette1', // If defined, it will overwrite globals.colors variable
+          monochrome: {
+            // monochrome allows you to select just 1 color and fill out the rest with light/dark shade (intensity can be selected)
+            enabled: false,
+            color: '#008FFB',
+            shadeTo: 'light',
+            shadeIntensity: 0.65
+          }
+        }
+      };
+    }
+  }]);
+
+  return Options;
+}();
+
+exports.default = Options;
+
+/***/ }),
+/* 19 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Animations = __webpack_require__(5);
+
+var _Animations2 = _interopRequireDefault(_Animations);
+
+var _Fill = __webpack_require__(4);
+
+var _Fill2 = _interopRequireDefault(_Fill);
+
+var _Filters = __webpack_require__(3);
+
+var _Filters2 = _interopRequireDefault(_Filters);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Markers = __webpack_require__(6);
+
+var _Markers2 = _interopRequireDefault(_Markers);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Scatter Class.
+ * This Class also handles bubbles chart as currently there is no major difference in drawing them,
+ * @module Scatter
+ **/
+var Scatter = function () {
+  function Scatter(ctx) {
+    _classCallCheck(this, Scatter);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    this.initialAnim = this.w.config.chart.animations.enabled;
+    this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+
+    // this array will help in centering the label in bubbles
+    this.radiusSizes = [];
+  }
+
+  _createClass(Scatter, [{
+    key: 'draw',
+    value: function draw(elSeries, j, opts) {
+      var w = this.w;
+
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var realIndex = opts.realIndex;
+      var pointsPos = opts.pointsPos;
+      var zRatio = opts.zRatio;
+      var elPointsMain = opts.elParent;
+
+      var elPointsWrap = graphics.group({
+        class: 'apexcharts-series-markers apexcharts-series-' + w.config.chart.type
+      });
+
+      elPointsWrap.attr('clip-path', 'url(#gridRectMarkerMask' + w.globals.cuid + ')');
+
+      if (pointsPos.x instanceof Array) {
+        for (var q = 0; q < pointsPos.x.length; q++) {
+          var dataPointIndex = j + 1;
+          var shouldDraw = true;
+
+          // a small hack as we have 2 points for the first val to connect it
+          if (j === 0 && q === 0) dataPointIndex = 0;
+          if (j === 0 && q === 1) dataPointIndex = 1;
+
+          var radius = 0;
+          var finishRadius = w.globals.markers.size[realIndex];
+
+          if (zRatio !== Infinity) {
+            // means we have a bubble
+            finishRadius = w.globals.seriesZ[realIndex][dataPointIndex] / zRatio;
+            if (typeof this.radiusSizes[realIndex] === 'undefined') {
+              this.radiusSizes.push([]);
+            }
+            this.radiusSizes[realIndex].push(finishRadius);
+          }
+
+          if (!w.config.chart.animations.enabled) {
+            radius = finishRadius;
+          }
+
+          var x = pointsPos.x[q];
+          var y = pointsPos.y[q];
+
+          radius = radius || 0;
+
+          if (x === 0 && y === 0 || y === null || typeof w.globals.series[realIndex][dataPointIndex] === 'undefined') {
+            shouldDraw = false;
+          }
+
+          if (shouldDraw) {
+            var circle = this.drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j);
+            elPointsWrap.add(circle);
+          }
+
+          elPointsMain.add(elPointsWrap);
+        }
+      }
+    }
+  }, {
+    key: 'drawPoint',
+    value: function drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j) {
+      var w = this.w;
+
+      var i = realIndex;
+      var anim = new _Animations2.default(this.ctx);
+      var filters = new _Filters2.default(this.ctx);
+      var fill = new _Fill2.default(this.ctx);
+      var markers = new _Markers2.default(this.ctx);
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var markerConfig = markers.getMarkerConfig('apexcharts-marker', i);
+
+      var pathFillCircle = fill.fillPath({
+        seriesNumber: realIndex,
+        patternUnits: 'objectBoundingBox',
+        value: w.globals.series[realIndex][j]
+      });
+      var circle = graphics.drawCircle(radius);
+
+      if (w.config.series[i].data[dataPointIndex]) {
+        if (w.config.series[i].data[dataPointIndex].fillColor) {
+          pathFillCircle = w.config.series[i].data[dataPointIndex].fillColor;
+        }
+      }
+
+      circle.attr({
+        cx: x,
+        cy: y,
+        fill: pathFillCircle,
+        stroke: markerConfig.pointStrokeColor,
+        strokeWidth: markerConfig.pWidth
+      });
+
+      if (w.config.chart.dropShadow.enabled) {
+        var dropShadow = w.config.chart.dropShadow;
+        filters.dropShadow(circle, dropShadow, realIndex);
+      }
+
+      if (this.initialAnim && !w.globals.dataChanged) {
+        var speed = 1;
+        if (!w.globals.resized) {
+          speed = w.config.chart.animations.speed;
+        }
+        anim.animateCircleRadius(circle, 0, finishRadius, speed, w.globals.easing);
+      }
+
+      if (w.globals.dataChanged) {
+        if (this.dynamicAnim) {
+          var _speed = w.config.chart.animations.dynamicAnimation.speed;
+          var prevX = void 0,
+              prevY = void 0,
+              prevR = void 0;
+
+          var prevPathJ = null;
+
+          prevPathJ = w.globals.previousPaths[realIndex] && w.globals.previousPaths[realIndex][j];
+
+          if (typeof prevPathJ !== 'undefined' && prevPathJ !== null) {
+            // series containing less elements will ignore these values and revert to 0
+            prevX = prevPathJ.x;
+            prevY = prevPathJ.y;
+            prevR = typeof prevPathJ.r !== 'undefined' ? prevPathJ.r : finishRadius;
+          }
+
+          for (var cs = 0; cs < w.globals.collapsedSeries.length; cs++) {
+            if (w.globals.collapsedSeries[cs].index === realIndex) {
+              _speed = 1;
+              finishRadius = 0;
+            }
+          }
+
+          if (x === 0 && y === 0) finishRadius = 0;
+
+          anim.animateCircle(circle, {
+            cx: prevX,
+            cy: prevY,
+            r: prevR
+          }, {
+            cx: x,
+            cy: y,
+            r: finishRadius
+          }, _speed, w.globals.easing);
+        } else {
+          circle.attr({
+            r: finishRadius
+          });
+        }
+      }
+
+      circle.attr({
+        rel: dataPointIndex,
+        j: dataPointIndex,
+        index: realIndex,
+        'default-marker-size': finishRadius
+      });
+
+      filters.setSelectionFilter(circle, realIndex, dataPointIndex);
+      markers.addEvents(circle);
+
+      circle.node.classList.add('apexcharts-marker');
+
+      return circle;
+    }
+  }, {
+    key: 'centerTextInBubble',
+    value: function centerTextInBubble(y) {
+      var w = this.w;
+      y = y + parseInt(w.config.dataLabels.style.fontSize) / 4;
+
+      return {
+        y: y
+      };
+    }
+  }]);
+
+  return Scatter;
+}();
+
+exports.default = Scatter;
+
+/***/ }),
+/* 20 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Filters = __webpack_require__(3);
+
+var _Filters2 = _interopRequireDefault(_Filters);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var Crosshairs = function () {
+  function Crosshairs(ctx) {
+    _classCallCheck(this, Crosshairs);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Crosshairs, [{
+    key: 'drawXCrosshairs',
+    value: function drawXCrosshairs() {
+      var w = this.w;
+
+      var graphics = new _Graphics2.default(this.ctx);
+      var filters = new _Filters2.default(this.ctx);
+
+      var crosshairGradient = w.config.xaxis.crosshairs.fill.gradient;
+      var crosshairShadow = w.config.xaxis.crosshairs.dropShadow;
+
+      var fillType = w.config.xaxis.crosshairs.fill.type;
+      var gradientFrom = crosshairGradient.colorFrom;
+      var gradientTo = crosshairGradient.colorTo;
+      var opacityFrom = crosshairGradient.opacityFrom;
+      var opacityTo = crosshairGradient.opacityTo;
+      var stops = crosshairGradient.stops;
+
+      var shadow = 'none';
+      var dropShadow = crosshairShadow.enabled;
+      var shadowLeft = crosshairShadow.left;
+      var shadowTop = crosshairShadow.top;
+      var shadowBlur = crosshairShadow.blur;
+      var shadowColor = crosshairShadow.color;
+      var shadowOpacity = crosshairShadow.opacity;
+
+      var xcrosshairsFill = w.config.xaxis.crosshairs.fill.color;
+
+      if (w.config.xaxis.crosshairs.show) {
+        if (fillType === 'gradient') {
+          xcrosshairsFill = graphics.drawGradient('vertical', gradientFrom, gradientTo, opacityFrom, opacityTo, null, stops, null);
+        }
+
+        var xcrosshairs = graphics.drawRect();
+        if (w.config.xaxis.crosshairs.width === 1) {
+          // to prevent drawing 2 lines, convert rect to line
+          xcrosshairs = graphics.drawLine();
+        }
+
+        xcrosshairs.attr({
+          class: 'apexcharts-xcrosshairs',
+          x: 0,
+          y: 0,
+          y2: w.globals.gridHeight,
+          width: _Utils2.default.isNumber(w.config.xaxis.crosshairs.width) ? w.config.xaxis.crosshairs.width : 0,
+          height: w.globals.gridHeight,
+          fill: xcrosshairsFill,
+          filter: shadow,
+          'fill-opacity': w.config.xaxis.crosshairs.opacity,
+          stroke: w.config.xaxis.crosshairs.stroke.color,
+          'stroke-width': w.config.xaxis.crosshairs.stroke.width,
+          'stroke-dasharray': w.config.xaxis.crosshairs.stroke.dashArray
+        });
+
+        if (dropShadow) {
+          xcrosshairs = filters.dropShadow(xcrosshairs, {
+            left: shadowLeft,
+            top: shadowTop,
+            blur: shadowBlur,
+            color: shadowColor,
+            opacity: shadowOpacity
+          });
+        }
+
+        w.globals.dom.elGraphical.add(xcrosshairs);
+      }
+    }
+  }, {
+    key: 'drawYCrosshairs',
+    value: function drawYCrosshairs() {
+      var w = this.w;
+
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var crosshair = w.config.yaxis[0].crosshairs;
+
+      if (w.config.yaxis[0].crosshairs.show) {
+        var ycrosshairs = graphics.drawLine(0, 0, w.globals.gridWidth, 0, crosshair.stroke.color, crosshair.stroke.dashArray, crosshair.stroke.width);
+        ycrosshairs.attr({
+          class: 'apexcharts-ycrosshairs'
+        });
+
+        w.globals.dom.elGraphical.add(ycrosshairs);
+      }
+
+      // draw an invisible crosshair to help in positioning the yaxis tooltip
+      var ycrosshairsHidden = graphics.drawLine(0, 0, w.globals.gridWidth, 0, crosshair.stroke.color, 0, 0);
+      ycrosshairsHidden.attr({
+        class: 'apexcharts-ycrosshairs-hidden'
+      });
+
+      w.globals.dom.elGraphical.add(ycrosshairsHidden);
+    }
+  }]);
+
+  return Crosshairs;
+}();
+
+exports.default = Crosshairs;
+
+/***/ }),
+/* 21 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _promisePolyfill = __webpack_require__(28);
+
+var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var Exports = function () {
+  function Exports(ctx) {
+    _classCallCheck(this, Exports);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Exports, [{
+    key: 'getSvgString',
+    value: function getSvgString() {
+      return this.w.globals.dom.Paper.svg();
+    }
+  }, {
+    key: 'cleanup',
+    value: function cleanup() {
+      var w = this.w;
+
+      // hide some elements to avoid printing them on exported svg
+      var xcrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs');
+      var ycrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs');
+      if (xcrosshairs) {
+        xcrosshairs.setAttribute('x', -500);
+      }
+      if (ycrosshairs) {
+        ycrosshairs.setAttribute('y1', -100);
+        ycrosshairs.setAttribute('y2', -100);
+      }
+    }
+  }, {
+    key: 'svgUrl',
+    value: function svgUrl() {
+      this.cleanup();
+
+      var svgData = this.getSvgString();
+      var svgBlob = new Blob([svgData], { type: 'image/svg+xml;charset=utf-8' });
+      return URL.createObjectURL(svgBlob);
+    }
+  }, {
+    key: 'dataURI',
+    value: function dataURI() {
+      var _this = this;
+
+      return new _promisePolyfill2.default(function (resolve) {
+        var w = _this.w;
+
+        _this.cleanup();
+        var canvas = document.createElement('canvas');
+        canvas.width = w.globals.svgWidth;
+        canvas.height = w.globals.svgHeight;
+
+        var canvasBg = w.config.chart.background === 'transparent' ? '#fff' : w.config.chart.background;
+
+        var ctx = canvas.getContext('2d');
+        ctx.fillStyle = canvasBg;
+        ctx.fillRect(0, 0, canvas.width, canvas.height);
+
+        var DOMURL = window.URL || window.webkitURL || window;
+
+        var img = new Image();
+        img.crossOrigin = 'anonymous';
+
+        var svgData = _this.getSvgString();
+        var svgUrl = 'data:image/svg+xml,' + encodeURIComponent(svgData);
+
+        img.onload = function () {
+          ctx.drawImage(img, 0, 0);
+          DOMURL.revokeObjectURL(svgUrl);
+
+          var imgURI = canvas.toDataURL('image/png');
+
+          resolve(imgURI);
+        };
+
+        img.src = svgUrl;
+      });
+    }
+  }, {
+    key: 'exportToSVG',
+    value: function exportToSVG() {
+      this.triggerDownload(this.svgUrl(), '.svg');
+    }
+  }, {
+    key: 'exportToPng',
+    value: function exportToPng() {
+      var _this2 = this;
+
+      this.dataURI().then(function (imgURI) {
+        _this2.triggerDownload(imgURI, '.png');
+      });
+    }
+  }, {
+    key: 'triggerDownload',
+    value: function triggerDownload(href, ext) {
+      var downloadLink = document.createElement('a');
+      downloadLink.href = href;
+      downloadLink.download = this.w.globals.chartID + ext;
+      document.body.appendChild(downloadLink);
+      downloadLink.click();
+      document.body.removeChild(downloadLink);
+    }
+  }]);
+
+  return Exports;
+}();
+
+exports.default = Exports;
+
+/***/ }),
+/* 22 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _Scales = __webpack_require__(14);
+
+var _Scales2 = _interopRequireDefault(_Scales);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * Range is used to generates values between min and max.
+ *
+ * @module Range
+ **/
+
+var Range = function () {
+  function Range(ctx) {
+    _classCallCheck(this, Range);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    this.scales = new _Scales2.default(ctx);
+  }
+
+  _createClass(Range, [{
+    key: 'init',
+    value: function init() {
+      this.setYRange();
+      this.setXRange();
+      this.setZRange();
+    }
+  }, {
+    key: 'getMinYMaxY',
+    value: function getMinYMaxY(startingIndex) {
+      var lowestY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;
+      var highestY = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -Number.MAX_VALUE;
+      var len = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
+
+      var gl = this.w.globals;
+      var maxY = -Number.MAX_VALUE;
+      var minY = Number.MIN_VALUE;
+
+      if (len === null) {
+        len = startingIndex + 1;
+      }
+
+      var series = gl.series;
+      var seriesMin = series;
+      var seriesMax = series;
+
+      if (this.w.config.chart.type === 'candlestick') {
+        seriesMin = gl.seriesCandleL;
+        seriesMax = gl.seriesCandleH;
+      } else if (gl.isRangeData) {
+        seriesMin = gl.seriesRangeStart;
+        seriesMax = gl.seriesRangeEnd;
+      }
+
+      for (var i = startingIndex; i < len; i++) {
+        gl.dataPoints = Math.max(gl.dataPoints, series[i].length);
+
+        for (var j = 0; j < gl.series[i].length; j++) {
+          var val = series[i][j];
+          if (val !== null && _Utils2.default.isNumber(val)) {
+            maxY = Math.max(maxY, seriesMax[i][j]);
+            lowestY = Math.min(lowestY, seriesMin[i][j]);
+            highestY = Math.max(highestY, seriesMin[i][j]);
+
+            if (this.w.config.chart.type === 'candlestick') {
+              maxY = Math.max(maxY, gl.seriesCandleO[i][j]);
+              maxY = Math.max(maxY, gl.seriesCandleH[i][j]);
+              maxY = Math.max(maxY, gl.seriesCandleL[i][j]);
+              maxY = Math.max(maxY, gl.seriesCandleC[i][j]);
+              highestY = maxY;
+            }
+
+            if (_Utils2.default.isFloat(val)) {
+              val = _Utils2.default.noExponents(val);
+              gl.yValueDecimal = Math.max(gl.yValueDecimal, val.toString().split('.')[1].length);
+            }
+            if (minY > seriesMin[i][j] && seriesMin[i][j] < 0) {
+              minY = seriesMin[i][j];
+            }
+          } else {
+            gl.hasNullValues = true;
+          }
+        }
+      }
+
+      return {
+        minY: minY,
+        maxY: maxY,
+        lowestY: lowestY,
+        highestY: highestY
+      };
+    }
+  }, {
+    key: 'setYRange',
+    value: function setYRange() {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      gl.maxY = -Number.MAX_VALUE;
+      gl.minY = Number.MIN_VALUE;
+
+      var lowestYInAllSeries = Number.MAX_VALUE;
+
+      if (gl.isMultipleYAxis) {
+        // we need to get minY and maxY for multiple y axis
+        for (var i = 0; i < gl.series.length; i++) {
+          var minYMaxYArr = this.getMinYMaxY(i, lowestYInAllSeries, null, i + 1);
+          gl.minYArr.push(minYMaxYArr.minY);
+          gl.maxYArr.push(minYMaxYArr.maxY);
+          lowestYInAllSeries = minYMaxYArr.lowestY;
+        }
+      }
+
+      // and then, get the minY and maxY from all series
+      var minYMaxY = this.getMinYMaxY(0, lowestYInAllSeries, null, gl.series.length);
+      gl.minY = minYMaxY.minY;
+      gl.maxY = minYMaxY.maxY;
+      lowestYInAllSeries = minYMaxY.lowestY;
+
+      if (cnf.chart.stacked) {
+        // for stacked charts, we calculate each series's parallel values. i.e, series[0][j] + series[1][j] .... [series[i.length][j]] and get the max out of it
+        var stackedPoss = [];
+        var stackedNegs = [];
+
+        for (var j = 0; j < gl.series[gl.maxValsInArrayIndex].length; j++) {
+          var poss = 0;
+          var negs = 0;
+          for (var _i = 0; _i < gl.series.length; _i++) {
+            if (gl.series[_i][j] !== null && _Utils2.default.isNumber(gl.series[_i][j])) {
+              if (gl.series[_i][j] > 0) {
+                // 0.0001 fixes #185 when values are very small
+                poss = poss + parseFloat(gl.series[_i][j]) + 0.0001;
+              } else {
+                negs = negs + parseFloat(gl.series[_i][j]);
+              }
+            }
+
+            if (_i === gl.series.length - 1) {
+              // push all the totals to the array for future use
+              stackedPoss.push(poss);
+              stackedNegs.push(negs);
+            }
+          }
+        }
+
+        // get the max/min out of the added parallel values
+        for (var z = 0; z < stackedPoss.length; z++) {
+          gl.maxY = Math.max(gl.maxY, stackedPoss[z]);
+          gl.minY = Math.min(gl.minY, stackedNegs[z]);
+        }
+      }
+
+      // if the numbers are too big, reduce the range
+      // for eg, if number is between 100000-110000, putting 0 as the lowest value is not so good idea. So change the gl.minY for line/area/candlesticks
+      if (cnf.chart.type === 'line' || cnf.chart.type === 'area' || cnf.chart.type === 'candlestick') {
+        if (gl.minY === Number.MIN_VALUE && lowestYInAllSeries !== -Number.MAX_VALUE && lowestYInAllSeries !== gl.maxY // single value possibility
+        ) {
+            var diff = gl.maxY - lowestYInAllSeries;
+            if (lowestYInAllSeries >= 0 && lowestYInAllSeries <= 10) {
+              // if minY is already 0/low value, we don't want to go negatives here - so this check is essential.
+              diff = 0;
+            }
+            gl.minY = lowestYInAllSeries - diff * 5 / 100;
+            /* fix https://github.com/apexcharts/apexcharts.js/issues/426 */
+            gl.maxY = gl.maxY + diff * 5 / 100;
+          }
+      }
+
+      cnf.yaxis.map(function (yaxe, index) {
+        // override all min/max values by user defined values (y axis)
+        if (yaxe.max !== undefined) {
+          if (typeof yaxe.max === 'number') {
+            gl.maxYArr[index] = yaxe.max;
+          } else if (typeof yaxe.max === 'function') {
+            gl.maxYArr[index] = yaxe.max(gl.maxY);
+          }
+
+          // gl.maxY is for single y-axis chart, it will be ignored in multi-yaxis
+          gl.maxY = gl.maxYArr[index];
+        }
+        if (yaxe.min !== undefined) {
+          if (typeof yaxe.min === 'number') {
+            gl.minYArr[index] = yaxe.min;
+          } else if (typeof yaxe.min === 'function') {
+            gl.minYArr[index] = yaxe.min(gl.minY);
+          }
+          // gl.minY is for single y-axis chart, it will be ignored in multi-yaxis
+          gl.minY = gl.minYArr[index];
+        }
+      });
+
+      // for horizontal bar charts, we need to check xaxis min/max as user may have specified there
+      if (gl.isBarHorizontal) {
+        if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') {
+          gl.minY = cnf.xaxis.min;
+        }
+
+        if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') {
+          gl.maxY = cnf.xaxis.max;
+        }
+      }
+
+      // for multi y-axis we need different scales for each
+      if (gl.isMultipleYAxis) {
+        this.scales.setMultipleYScales();
+        gl.minY = lowestYInAllSeries;
+        gl.yAxisScale.forEach(function (scale, i) {
+          gl.minYArr[i] = scale.niceMin;
+          gl.maxYArr[i] = scale.niceMax;
+        });
+      } else {
+        this.scales.setYScaleForIndex(0, gl.minY, gl.maxY);
+        gl.minY = gl.yAxisScale[0].niceMin;
+        gl.maxY = gl.yAxisScale[0].niceMax;
+        gl.minYArr[0] = gl.yAxisScale[0].niceMin;
+        gl.maxYArr[0] = gl.yAxisScale[0].niceMax;
+      }
+
+      return {
+        minY: gl.minY,
+        maxY: gl.maxY,
+        minYArr: gl.minYArr,
+        maxYArr: gl.maxYArr
+      };
+    }
+  }, {
+    key: 'setXRange',
+    value: function setXRange() {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+
+      var isXNumeric = cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'datetime' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided || gl.noLabelsProvided || gl.isXNumeric;
+
+      // minX maxX starts here
+      if (gl.isXNumeric) {
+        for (var i = 0; i < gl.series.length; i++) {
+          if (gl.labels[i]) {
+            for (var j = 0; j < gl.labels[i].length; j++) {
+              if (gl.labels[i][j] !== null && _Utils2.default.isNumber(gl.labels[i][j])) {
+                gl.maxX = Math.max(gl.maxX, gl.labels[i][j]);
+                gl.initialmaxX = Math.max(gl.maxX, gl.labels[i][j]);
+                gl.minX = Math.min(gl.minX, gl.labels[i][j]);
+                gl.initialminX = Math.min(gl.minX, gl.labels[i][j]);
+              }
+            }
+          }
+        }
+      }
+
+      if (gl.noLabelsProvided) {
+        if (cnf.xaxis.categories.length === 0) {
+          gl.maxX = gl.labels[gl.labels.length - 1];
+          gl.initialmaxX = gl.labels[gl.labels.length - 1];
+          gl.minX = 1;
+          gl.initialminX = 1;
+        }
+      }
+
+      // for numeric xaxis, we need to adjust some padding left and right for bar charts
+      if (gl.comboChartsHasBars || cnf.chart.type === 'candlestick' || cnf.chart.type === 'bar' && gl.isXNumeric) {
+        if (cnf.xaxis.type !== 'category' || gl.isXNumeric) {
+          var minX = gl.minX - gl.svgWidth / gl.dataPoints * (Math.abs(gl.maxX - gl.minX) / gl.svgWidth) / 2;
+          gl.minX = minX;
+          gl.initialminX = minX;
+          var maxX = gl.maxX + gl.svgWidth / gl.dataPoints * (Math.abs(gl.maxX - gl.minX) / gl.svgWidth) / 2;
+          gl.maxX = maxX;
+          gl.initialmaxX = maxX;
+        }
+      }
+
+      if ((gl.isXNumeric || gl.noLabelsProvided) && (!cnf.xaxis.convertedCatToNumeric || gl.dataFormatXNumeric)) {
+        var ticks = void 0;
+
+        if (cnf.xaxis.tickAmount === undefined) {
+          ticks = Math.round(gl.svgWidth / 150);
+
+          // no labels provided and total number of dataPoints is less than 20
+          if (cnf.xaxis.type === 'numeric' && gl.dataPoints < 20) {
+            ticks = gl.dataPoints - 1;
+          }
+
+          // this check is for when ticks exceeds total datapoints and that would result in duplicate labels
+          if (ticks > gl.dataPoints && gl.dataPoints !== 0) {
+            ticks = gl.dataPoints - 1;
+          }
+        } else if (cnf.xaxis.tickAmount === 'dataPoints') {
+          ticks = gl.series[gl.maxValsInArrayIndex].length - 1;
+        } else {
+          ticks = cnf.xaxis.tickAmount;
+        }
+
+        // override all min/max values by user defined values (x axis)
+        if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') {
+          gl.maxX = cnf.xaxis.max;
+        }
+        if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') {
+          gl.minX = cnf.xaxis.min;
+        }
+
+        // if range is provided, adjust the new minX
+        if (cnf.xaxis.range !== undefined) {
+          gl.minX = gl.maxX - cnf.xaxis.range;
+        }
+
+        if (gl.minX !== Number.MAX_VALUE && gl.maxX !== -Number.MAX_VALUE) {
+          gl.xAxisScale = this.scales.linearScale(gl.minX, gl.maxX, ticks);
+        } else {
+          gl.xAxisScale = this.scales.linearScale(1, ticks, ticks);
+          if (gl.noLabelsProvided && gl.labels.length > 0) {
+            gl.xAxisScale = this.scales.linearScale(1, gl.labels.length, ticks - 1);
+
+            // this is the only place seriesX is again mutated
+            gl.seriesX = gl.labels.slice();
+          }
+        }
+        // we will still store these labels as the count for this will be different (to draw grid and labels placement)
+        if (isXNumeric) {
+          gl.labels = gl.xAxisScale.result.slice();
+        }
+      }
+
+      if (gl.minX === gl.maxX) {
+        // single dataPoint
+        if (cnf.xaxis.type === 'datetime') {
+          var newMinX = new Date(gl.minX);
+          newMinX.setDate(newMinX.getDate() - 2);
+          gl.minX = new Date(newMinX).getTime();
+
+          var newMaxX = new Date(gl.maxX);
+          newMaxX.setDate(newMaxX.getDate() + 2);
+          gl.maxX = new Date(newMaxX).getTime();
+        } else if (cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided) {
+          gl.minX = gl.minX - 2;
+          gl.maxX = gl.maxX + 2;
+        }
+      }
+
+      if (gl.isXNumeric) {
+        // get the least x diff if numeric x axis is present
+        gl.seriesX.forEach(function (sX, i) {
+          sX.forEach(function (s, j) {
+            if (j > 0) {
+              var xDiff = s - gl.seriesX[i][j - 1];
+              gl.minXDiff = Math.min(xDiff, gl.minXDiff);
+            }
+          });
+        });
+
+        this.calcMinXDiffForTinySeries();
+      }
+
+      return {
+        minX: gl.minX,
+        maxX: gl.maxX
+      };
+    }
+  }, {
+    key: 'calcMinXDiffForTinySeries',
+    value: function calcMinXDiffForTinySeries() {
+      var w = this.w;
+
+      var len = w.globals.labels.length;
+
+      if (w.globals.labels.length === 1) {
+        w.globals.minXDiff = (w.globals.maxX - w.globals.minX) / len / 3;
+      } else {
+        if (w.globals.minXDiff === Number.MAX_VALUE) {
+          // possibly a single dataPoint (fixes react-apexcharts/issue#34)
+          if (w.globals.timelineLabels.length > 0) {
+            len = w.globals.timelineLabels.length;
+          }
+          if (len < 3) {
+            len = 3;
+          }
+          w.globals.minXDiff = (w.globals.maxX - w.globals.minX) / len;
+        }
+      }
+
+      return w.globals.minXDiff;
+    }
+  }, {
+    key: 'setZRange',
+    value: function setZRange() {
+      var gl = this.w.globals;
+
+      // minZ, maxZ starts here
+      if (gl.isDataXYZ) {
+        for (var i = 0; i < gl.series.length; i++) {
+          if (typeof gl.seriesZ[i] !== 'undefined') {
+            for (var j = 0; j < gl.seriesZ[i].length; j++) {
+              if (gl.seriesZ[i][j] !== null && _Utils2.default.isNumber(gl.seriesZ[i][j])) {
+                gl.maxZ = Math.max(gl.maxZ, gl.seriesZ[i][j]);
+                gl.minZ = Math.min(gl.minZ, gl.seriesZ[i][j]);
+              }
+            }
+          }
+        }
+      }
+    }
+  }]);
+
+  return Range;
+}();
+
+exports.default = Range;
+
+/***/ }),
+/* 23 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Exports = __webpack_require__(21);
+
+var _Exports2 = _interopRequireDefault(_Exports);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _icoPanHand = __webpack_require__(75);
+
+var _icoPanHand2 = _interopRequireDefault(_icoPanHand);
+
+var _icoZoomIn = __webpack_require__(78);
+
+var _icoZoomIn2 = _interopRequireDefault(_icoZoomIn);
+
+var _icoHome = __webpack_require__(72);
+
+var _icoHome2 = _interopRequireDefault(_icoHome);
+
+var _icoPlus = __webpack_require__(76);
+
+var _icoPlus2 = _interopRequireDefault(_icoPlus);
+
+var _icoMinus = __webpack_require__(74);
+
+var _icoMinus2 = _interopRequireDefault(_icoMinus);
+
+var _icoSelect = __webpack_require__(77);
+
+var _icoSelect2 = _interopRequireDefault(_icoSelect);
+
+var _icoMenu = __webpack_require__(73);
+
+var _icoMenu2 = _interopRequireDefault(_icoMenu);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Toolbar Class for creating toolbar in axis based charts.
+ *
+ * @module Toolbar
+ **/
+
+var Toolbar = function () {
+  function Toolbar(ctx) {
+    _classCallCheck(this, Toolbar);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    this.ev = this.w.config.chart.events;
+
+    this.localeValues = this.w.globals.locale.toolbar;
+  }
+
+  _createClass(Toolbar, [{
+    key: 'createToolbar',
+    value: function createToolbar() {
+      var w = this.w;
+      var elToolbarWrap = document.createElement('div');
+      elToolbarWrap.setAttribute('class', 'apexcharts-toolbar');
+      w.globals.dom.elWrap.appendChild(elToolbarWrap);
+
+      this.elZoom = document.createElement('div');
+      this.elZoomIn = document.createElement('div');
+      this.elZoomOut = document.createElement('div');
+      this.elPan = document.createElement('div');
+      this.elSelection = document.createElement('div');
+      this.elZoomReset = document.createElement('div');
+      this.elMenuIcon = document.createElement('div');
+      this.elMenu = document.createElement('div');
+      this.elCustomIcons = [];
+
+      this.t = w.config.chart.toolbar.tools;
+
+      if (Array.isArray(this.t.customIcons)) {
+        for (var i = 0; i < this.t.customIcons.length; i++) {
+          this.elCustomIcons.push(document.createElement('div'));
+        }
+      }
+
+      this.elMenuItems = [];
+
+      var toolbarControls = [];
+
+      if (this.t.zoomin && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoomIn,
+          icon: typeof this.t.zoomin === 'string' ? this.t.zoomin : _icoPlus2.default,
+          title: this.localeValues.zoomIn,
+          class: 'apexcharts-zoom-in-icon'
+        });
+      }
+
+      if (this.t.zoomout && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoomOut,
+          icon: typeof this.t.zoomout === 'string' ? this.t.zoomout : _icoMinus2.default,
+          title: this.localeValues.zoomOut,
+          class: 'apexcharts-zoom-out-icon'
+        });
+      }
+
+      if (this.t.zoom && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoom,
+          icon: typeof this.t.zoom === 'string' ? this.t.zoom : _icoZoomIn2.default,
+          title: this.localeValues.selectionZoom,
+          class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-zoom-icon'
+        });
+      }
+
+      if (this.t.selection && w.config.chart.selection.enabled) {
+        toolbarControls.push({
+          el: this.elSelection,
+          icon: typeof this.t.selection === 'string' ? this.t.selection : _icoSelect2.default,
+          title: this.localeValues.selection,
+          class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-selection-icon'
+        });
+      }
+
+      if (this.t.pan && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elPan,
+          icon: typeof this.t.pan === 'string' ? this.t.pan : _icoPanHand2.default,
+          title: this.localeValues.pan,
+          class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-pan-icon'
+        });
+      }
+
+      if (this.t.reset && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoomReset,
+          icon: typeof this.t.reset === 'string' ? this.t.reset : _icoHome2.default,
+          title: this.localeValues.reset,
+          class: 'apexcharts-reset-zoom-icon'
+        });
+      }
+      if (this.t.download) {
+        toolbarControls.push({
+          el: this.elMenuIcon,
+          icon: typeof this.t.download === 'string' ? this.t.download : _icoMenu2.default,
+          title: this.localeValues.menu,
+          class: 'apexcharts-menu-icon'
+        });
+      }
+
+      for (var _i = 0; _i < this.elCustomIcons.length; _i++) {
+        toolbarControls.push({
+          el: this.elCustomIcons[_i],
+          icon: this.t.customIcons[_i].icon,
+          title: this.t.customIcons[_i].title,
+          index: this.t.customIcons[_i].index,
+          class: 'apexcharts-toolbar-custom-icon ' + this.t.customIcons[_i].class
+        });
+      }
+
+      toolbarControls.forEach(function (t, index) {
+        if (t.index) {
+          _Utils2.default.moveIndexInArray(toolbarControls, index, t.index);
+        }
+      });
+
+      for (var _i2 = 0; _i2 < toolbarControls.length; _i2++) {
+        _Graphics2.default.setAttrs(toolbarControls[_i2].el, {
+          class: toolbarControls[_i2].class,
+          title: toolbarControls[_i2].title
+        });
+
+        toolbarControls[_i2].el.innerHTML = toolbarControls[_i2].icon;
+        elToolbarWrap.appendChild(toolbarControls[_i2].el);
+      }
+
+      elToolbarWrap.appendChild(this.elMenu);
+
+      _Graphics2.default.setAttrs(this.elMenu, {
+        class: 'apexcharts-menu'
+      });
+
+      var menuItems = [{
+        name: 'exportSVG',
+        title: this.localeValues.exportToSVG
+      }, {
+        name: 'exportPNG',
+        title: this.localeValues.exportToPNG
+      }];
+      for (var _i3 = 0; _i3 < menuItems.length; _i3++) {
+        this.elMenuItems.push(document.createElement('div'));
+        this.elMenuItems[_i3].innerHTML = menuItems[_i3].title;
+        _Graphics2.default.setAttrs(this.elMenuItems[_i3], {
+          class: 'apexcharts-menu-item ' + menuItems[_i3].name,
+          title: menuItems[_i3].title
+        });
+        this.elMenu.appendChild(this.elMenuItems[_i3]);
+      }
+
+      if (w.globals.zoomEnabled) {
+        this.elZoom.classList.add('selected');
+      } else if (w.globals.panEnabled) {
+        this.elPan.classList.add('selected');
+      } else if (w.globals.selectionEnabled) {
+        this.elSelection.classList.add('selected');
+      }
+
+      this.addToolbarEventListeners();
+    }
+  }, {
+    key: 'addToolbarEventListeners',
+    value: function addToolbarEventListeners() {
+      var _this = this;
+
+      this.elZoomReset.addEventListener('click', this.handleZoomReset.bind(this));
+      this.elSelection.addEventListener('click', this.toggleSelection.bind(this));
+      this.elZoom.addEventListener('click', this.toggleZooming.bind(this));
+      this.elZoomIn.addEventListener('click', this.handleZoomIn.bind(this));
+      this.elZoomOut.addEventListener('click', this.handleZoomOut.bind(this));
+      this.elPan.addEventListener('click', this.togglePanning.bind(this));
+      this.elMenuIcon.addEventListener('click', this.toggleMenu.bind(this));
+      this.elMenuItems.forEach(function (m) {
+        if (m.classList.contains('exportSVG')) {
+          m.addEventListener('click', _this.downloadSVG.bind(_this));
+        } else if (m.classList.contains('exportPNG')) {
+          m.addEventListener('click', _this.downloadPNG.bind(_this));
+        }
+      });
+      for (var i = 0; i < this.t.customIcons.length; i++) {
+        this.elCustomIcons[i].addEventListener('click', this.t.customIcons[i].click);
+      }
+    }
+  }, {
+    key: 'toggleSelection',
+    value: function toggleSelection() {
+      this.toggleOtherControls();
+      this.w.globals.selectionEnabled = !this.w.globals.selectionEnabled;
+
+      if (!this.elSelection.classList.contains('selected')) {
+        this.elSelection.classList.add('selected');
+      } else {
+        this.elSelection.classList.remove('selected');
+      }
+    }
+  }, {
+    key: 'toggleZooming',
+    value: function toggleZooming() {
+      this.toggleOtherControls();
+      this.w.globals.zoomEnabled = !this.w.globals.zoomEnabled;
+
+      if (!this.elZoom.classList.contains('selected')) {
+        this.elZoom.classList.add('selected');
+      } else {
+        this.elZoom.classList.remove('selected');
+      }
+    }
+  }, {
+    key: 'getToolbarIconsReference',
+    value: function getToolbarIconsReference() {
+      var w = this.w;
+      if (!this.elZoom) {
+        this.elZoom = w.globals.dom.baseEl.querySelector('.apexcharts-zoom-icon');
+      }
+      if (!this.elPan) {
+        this.elPan = w.globals.dom.baseEl.querySelector('.apexcharts-pan-icon');
+      }
+      if (!this.elSelection) {
+        this.elSelection = w.globals.dom.baseEl.querySelector('.apexcharts-selection-icon');
+      }
+    }
+  }, {
+    key: 'enableZooming',
+    value: function enableZooming() {
+      this.toggleOtherControls();
+      this.w.globals.zoomEnabled = true;
+      if (this.elZoom) {
+        this.elZoom.classList.add('selected');
+      }
+      if (this.elPan) {
+        this.elPan.classList.remove('selected');
+      }
+    }
+  }, {
+    key: 'enablePanning',
+    value: function enablePanning() {
+      this.toggleOtherControls();
+      this.w.globals.panEnabled = true;
+
+      if (this.elPan) {
+        this.elPan.classList.add('selected');
+      }
+      if (this.elZoom) {
+        this.elZoom.classList.remove('selected');
+      }
+    }
+  }, {
+    key: 'togglePanning',
+    value: function togglePanning() {
+      this.toggleOtherControls();
+      this.w.globals.panEnabled = !this.w.globals.panEnabled;
+
+      if (!this.elPan.classList.contains('selected')) {
+        this.elPan.classList.add('selected');
+      } else {
+        this.elPan.classList.remove('selected');
+      }
+    }
+  }, {
+    key: 'toggleOtherControls',
+    value: function toggleOtherControls() {
+      var w = this.w;
+      w.globals.panEnabled = false;
+      w.globals.zoomEnabled = false;
+      w.globals.selectionEnabled = false;
+
+      this.getToolbarIconsReference();
+
+      if (this.elPan) {
+        this.elPan.classList.remove('selected');
+      }
+      if (this.elSelection) {
+        this.elSelection.classList.remove('selected');
+      }
+      if (this.elZoom) {
+        this.elZoom.classList.remove('selected');
+      }
+    }
+  }, {
+    key: 'handleZoomIn',
+    value: function handleZoomIn() {
+      var w = this.w;
+
+      var centerX = (w.globals.minX + w.globals.maxX) / 2;
+      var newMinX = (w.globals.minX + centerX) / 2;
+      var newMaxX = (w.globals.maxX + centerX) / 2;
+
+      if (!w.globals.disableZoomIn) {
+        this.zoomUpdateOptions(newMinX, newMaxX);
+      }
+    }
+  }, {
+    key: 'handleZoomOut',
+    value: function handleZoomOut() {
+      var w = this.w;
+
+      // avoid zooming out beyond 1000 which may result in NaN values being printed on x-axis
+      if (w.config.xaxis.type === 'datetime' && new Date(w.globals.minX).getUTCFullYear() < 1000) {
+        return;
+      }
+
+      var centerX = (w.globals.minX + w.globals.maxX) / 2;
+      var newMinX = w.globals.minX - (centerX - w.globals.minX);
+      var newMaxX = w.globals.maxX - (centerX - w.globals.maxX);
+
+      if (!w.globals.disableZoomOut) {
+        this.zoomUpdateOptions(newMinX, newMaxX);
+      }
+    }
+  }, {
+    key: 'zoomUpdateOptions',
+    value: function zoomUpdateOptions(newMinX, newMaxX) {
+      var xaxis = {
+        min: newMinX,
+        max: newMaxX
+      };
+
+      var beforeZoomRange = this.getBeforeZoomRange(xaxis);
+      if (beforeZoomRange) {
+        xaxis = beforeZoomRange.xaxis;
+      }
+
+      this.w.globals.zoomed = true;
+
+      this.ctx._updateOptions({
+        xaxis: xaxis
+      }, false, this.w.config.chart.animations.dynamicAnimation.enabled);
+
+      this.zoomCallback(xaxis);
+    }
+  }, {
+    key: 'zoomCallback',
+    value: function zoomCallback(xaxis, yaxis) {
+      if (typeof this.ev.zoomed === 'function') {
+        this.ev.zoomed(this.ctx, { xaxis: xaxis, yaxis: yaxis });
+      }
+    }
+  }, {
+    key: 'getBeforeZoomRange',
+    value: function getBeforeZoomRange(xaxis, yaxis) {
+      var newRange = null;
+      if (typeof this.ev.beforeZoom === 'function') {
+        newRange = this.ev.beforeZoom(this, { xaxis: xaxis, yaxis: yaxis });
+      }
+
+      return newRange;
+    }
+  }, {
+    key: 'toggleMenu',
+    value: function toggleMenu() {
+      if (this.elMenu.classList.contains('open')) {
+        this.elMenu.classList.remove('open');
+      } else {
+        this.elMenu.classList.add('open');
+      }
+    }
+  }, {
+    key: 'downloadPNG',
+    value: function downloadPNG() {
+      var downloadPNG = new _Exports2.default(this.ctx);
+      downloadPNG.exportToPng(this.ctx);
+      this.toggleMenu();
+    }
+  }, {
+    key: 'downloadSVG',
+    value: function downloadSVG() {
+      var downloadSVG = new _Exports2.default(this.ctx);
+      downloadSVG.exportToSVG();
+      this.toggleMenu();
+    }
+  }, {
+    key: 'handleZoomReset',
+    value: function handleZoomReset(e) {
+      var _this2 = this;
+
+      var charts = this.ctx.getSyncedCharts();
+
+      charts.forEach(function (ch) {
+        var w = ch.w;
+
+        if (w.globals.minX !== w.globals.initialminX && w.globals.maxX !== w.globals.initialmaxX) {
+          ch.revertDefaultAxisMinMax();
+
+          if (typeof w.config.chart.events.zoomed === 'function') {
+            _this2.zoomCallback({
+              min: w.config.xaxis.min,
+              max: w.config.xaxis.max
+            });
+          }
+
+          w.globals.zoomed = false;
+
+          ch._updateSeries(w.globals.initialSeries, w.config.chart.animations.dynamicAnimation.enabled);
+        }
+      });
+    }
+  }, {
+    key: 'destroy',
+    value: function destroy() {
+      if (this.elZoomReset) {
+        this.elZoomReset.removeEventListener('click', this.handleZoomReset.bind(this));
+        this.elSelection.removeEventListener('click', this.toggleSelection.bind(this));
+        this.elZoom.removeEventListener('click', this.toggleZooming.bind(this));
+        this.elZoomIn.removeEventListener('click', this.handleZoomIn.bind(this));
+        this.elZoomOut.removeEventListener('click', this.handleZoomOut.bind(this));
+        this.elPan.removeEventListener('click', this.togglePanning.bind(this));
+        this.elMenuIcon.removeEventListener('click', this.toggleMenu.bind(this));
+      }
+
+      this.elZoom = null;
+      this.elZoomIn = null;
+      this.elZoomOut = null;
+      this.elPan = null;
+      this.elSelection = null;
+      this.elZoomReset = null;
+      this.elMenuIcon = null;
+    }
+  }]);
+
+  return Toolbar;
+}();
+
+exports.default = Toolbar;
+
+/***/ }),
+/* 24 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Formatters = __webpack_require__(10);
+
+var _Formatters2 = _interopRequireDefault(_Formatters);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var AxesUtils = function () {
+  function AxesUtils(ctx) {
+    _classCallCheck(this, AxesUtils);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  // Based on the formatter function, get the label text and position
+
+
+  _createClass(AxesUtils, [{
+    key: 'getLabel',
+    value: function getLabel(labels, timelineLabels, x, i) {
+      var drawnLabels = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
+
+      var w = this.w;
+      var rawLabel = typeof labels[i] === 'undefined' ? '' : labels[i];
+      var label = void 0;
+
+      var xlbFormatter = w.globals.xLabelFormatter;
+      var customFormatter = w.config.xaxis.labels.formatter;
+
+      var xFormat = new _Formatters2.default(this.ctx);
+      label = xFormat.xLabelFormat(xlbFormatter, rawLabel);
+
+      if (customFormatter !== undefined) {
+        label = customFormatter(rawLabel, labels[i], i);
+      }
+
+      if (timelineLabels.length > 0) {
+        x = timelineLabels[i].position;
+        label = timelineLabels[i].value;
+      } else {
+        if (w.config.xaxis.type === 'datetime' && customFormatter === undefined) {
+          label = '';
+        }
+      }
+
+      if (typeof label === 'undefined') label = '';
+
+      label = label.toString();
+
+      if (label.indexOf('NaN') === 0 || label.toLowerCase().indexOf('invalid') === 0 || label.toLowerCase().indexOf('infinity') >= 0 || drawnLabels.indexOf(label) >= 0 && !w.config.xaxis.labels.showDuplicates) {
+        label = '';
+      }
+
+      return {
+        x: x,
+        text: label
+      };
+    }
+  }, {
+    key: 'drawYAxisTicks',
+    value: function drawYAxisTicks(x, tickAmount, axisBorder, axisTicks, realIndex, labelsDivider, elYaxis) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      // initial label position = 0;
+      var t = w.globals.translateY;
+
+      if (axisTicks.show) {
+        if (w.config.yaxis[realIndex].opposite === true) x = x + axisTicks.width;
+
+        for (var i = tickAmount; i >= 0; i--) {
+          var tY = t + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY - 1;
+          if (w.globals.isBarHorizontal) {
+            tY = labelsDivider * i;
+          }
+          var elTick = graphics.drawLine(x + axisBorder.offsetX - axisTicks.width + axisTicks.offsetX, tY + axisTicks.offsetY, x + axisBorder.offsetX + axisTicks.offsetX, tY + axisTicks.offsetY, axisBorder.color);
+          elYaxis.add(elTick);
+          t = t + labelsDivider;
+        }
+      }
+    }
+  }]);
+
+  return AxesUtils;
+}();
+
+exports.default = AxesUtils;
+
+/***/ }),
+/* 25 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _DateTime = __webpack_require__(11);
+
+var _DateTime2 = _interopRequireDefault(_DateTime);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Default Class for setting default options for all chart types.
+ *
+ * @module Defaults
+ **/
+
+var Defaults = function () {
+  function Defaults(opts) {
+    _classCallCheck(this, Defaults);
+
+    this.opts = opts;
+  }
+
+  _createClass(Defaults, [{
+    key: 'line',
+    value: function line() {
+      return {
+        chart: {
+          animations: {
+            easing: 'swing'
+          }
+        },
+        dataLabels: {
+          enabled: false
+        },
+        stroke: {
+          width: 5,
+          curve: 'straight'
+        },
+        markers: {
+          size: 0,
+          hover: {
+            sizeOffset: 6
+          }
+        },
+        xaxis: {
+          crosshairs: {
+            width: 1
+          }
+        }
+      };
+    }
+  }, {
+    key: 'sparkline',
+    value: function sparkline(defaults) {
+      this.opts.yaxis[0].labels.show = false;
+      this.opts.yaxis[0].floating = true;
+
+      var ret = {
+        grid: {
+          show: false,
+          padding: {
+            left: 0,
+            right: 0,
+            top: 0,
+            bottom: 0
+          }
+        },
+        legend: {
+          show: false
+        },
+        xaxis: {
+          labels: {
+            show: false
+          },
+          tooltip: {
+            enabled: false
+          },
+          axisBorder: {
+            show: false
+          }
+        },
+        chart: {
+          toolbar: {
+            show: false
+          },
+          zoom: {
+            enabled: false
+          }
+        },
+        dataLabels: {
+          enabled: false
+        }
+      };
+
+      return _Utils2.default.extend(defaults, ret);
+    }
+  }, {
+    key: 'bar',
+    value: function bar() {
+      return {
+        chart: {
+          stacked: false,
+          animations: {
+            easing: 'swing'
+          }
+        },
+        plotOptions: {
+          bar: {
+            dataLabels: {
+              position: 'center'
+            }
+          }
+        },
+        dataLabels: {
+          style: {
+            colors: ['#fff']
+          }
+        },
+        stroke: {
+          width: 0
+        },
+        fill: {
+          opacity: 0.85
+        },
+        legend: {
+          markers: {
+            shape: 'square',
+            radius: 2,
+            size: 8
+          }
+        },
+        tooltip: {
+          shared: false
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          },
+          crosshairs: {
+            width: 'barWidth',
+            position: 'back',
+            fill: {
+              type: 'gradient'
+            },
+            dropShadow: {
+              enabled: false
+            },
+            stroke: {
+              width: 0
+            }
+          }
+        }
+      };
+    }
+  }, {
+    key: 'candlestick',
+    value: function candlestick() {
+      return {
+        stroke: {
+          width: 1,
+          colors: ['#333']
+        },
+        dataLabels: {
+          enabled: false
+        },
+        tooltip: {
+          shared: true,
+          custom: function custom(_ref) {
+            var seriesIndex = _ref.seriesIndex,
+                dataPointIndex = _ref.dataPointIndex,
+                w = _ref.w;
+
+            var o = w.globals.seriesCandleO[seriesIndex][dataPointIndex];
+            var h = w.globals.seriesCandleH[seriesIndex][dataPointIndex];
+            var l = w.globals.seriesCandleL[seriesIndex][dataPointIndex];
+            var c = w.globals.seriesCandleC[seriesIndex][dataPointIndex];
+            return '<div class="apexcharts-tooltip-candlestick">' + '<div>Open: <span class="value">' + o + '</span></div>' + '<div>High: <span class="value">' + h + '</span></div>' + '<div>Low: <span class="value">' + l + '</span></div>' + '<div>Close: <span class="value">' + c + '</span></div>' + '</div>';
+          }
+        },
+        states: {
+          active: {
+            filter: {
+              type: 'none'
+            }
+          }
+        },
+        xaxis: {
+          crosshairs: {
+            width: 1
+          }
+        }
+      };
+    }
+  }, {
+    key: 'rangeBar',
+    value: function rangeBar() {
+      return {
+        stroke: {
+          width: 0
+        },
+        plotOptions: {
+          bar: {
+            dataLabels: {
+              position: 'center'
+            }
+          }
+        },
+        dataLabels: {
+          enabled: false,
+          formatter: function formatter(val, _ref2) {
+            var ctx = _ref2.ctx,
+                seriesIndex = _ref2.seriesIndex,
+                dataPointIndex = _ref2.dataPointIndex,
+                w = _ref2.w;
+
+            var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex];
+            var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex];
+            return end - start;
+          },
+          style: {
+            colors: ['#fff']
+          }
+        },
+        tooltip: {
+          shared: false,
+          followCursor: true,
+          custom: function custom(_ref3) {
+            var ctx = _ref3.ctx,
+                seriesIndex = _ref3.seriesIndex,
+                dataPointIndex = _ref3.dataPointIndex,
+                w = _ref3.w;
+
+            var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex];
+            var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex];
+
+            var startVal = '';
+            var endVal = '';
+
+            var color = w.globals.colors[seriesIndex];
+            if (w.config.tooltip.x.formatter === undefined) {
+              if (w.config.xaxis.type === 'datetime') {
+                var datetimeObj = new _DateTime2.default(ctx);
+                startVal = datetimeObj.formatDate(new Date(start), w.config.tooltip.x.format, true, true);
+                endVal = datetimeObj.formatDate(new Date(end), w.config.tooltip.x.format, true, true);
+              } else {
+                startVal = start;
+                endVal = end;
+              }
+            } else {
+              startVal = w.config.tooltip.x.formatter(start);
+              endVal = w.config.tooltip.x.formatter(end);
+            }
+
+            var ylabel = w.globals.labels[dataPointIndex];
+
+            return '<div class="apexcharts-tooltip-rangebar">' + '<div> <span class="series-name" style="color: ' + color + '">' + (w.config.series[seriesIndex].name ? w.config.series[seriesIndex].name : '') + '</span></div>' + '<div> <span class="category">' + ylabel + ': </span> <span class="value start-value">' + startVal + '</span> <span class="separator">-</span> <span class="value end-value">' + endVal + '</span></div>' + '</div>';
+          }
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          },
+          crosshairs: {
+            stroke: {
+              width: 0
+            }
+          }
+        }
+      };
+    }
+  }, {
+    key: 'area',
+    value: function area() {
+      return {
+        stroke: {
+          width: 4
+        },
+        fill: {
+          type: 'gradient',
+          gradient: {
+            inverseColors: false,
+            shade: 'light',
+            type: 'vertical',
+            opacityFrom: 0.65,
+            opacityTo: 0.5,
+            stops: [0, 100, 100]
+          }
+        },
+        markers: {
+          size: 0,
+          hover: {
+            sizeOffset: 6
+          }
+        },
+        tooltip: {
+          followCursor: false
+        }
+      };
+    }
+  }, {
+    key: 'brush',
+    value: function brush(defaults) {
+      var ret = {
+        chart: {
+          toolbar: {
+            autoSelected: 'selection',
+            show: false
+          },
+          zoom: {
+            enabled: false
+          }
+        },
+        dataLabels: {
+          enabled: false
+        },
+        stroke: {
+          width: 1
+        },
+        tooltip: {
+          enabled: false
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          }
+        }
+      };
+
+      return _Utils2.default.extend(defaults, ret);
+    }
+  }, {
+    key: 'stacked100',
+    value: function stacked100() {
+      var _this = this;
+
+      this.opts.dataLabels = this.opts.dataLabels || {};
+      this.opts.dataLabels.formatter = this.opts.dataLabels.formatter || undefined;
+      var existingDataLabelFormatter = this.opts.dataLabels.formatter;
+
+      this.opts.yaxis.forEach(function (yaxe, index) {
+        _this.opts.yaxis[index].min = 0;
+        _this.opts.yaxis[index].max = 100;
+      });
+
+      var isBar = this.opts.chart.type === 'bar';
+
+      if (isBar) {
+        this.opts.dataLabels.formatter = existingDataLabelFormatter || function (val) {
+          if (typeof val === 'number') {
+            return val ? val.toFixed(0) + '%' : val;
+          }
+          return val;
+        };
+      }
+    }
+
+    // This function removes the left and right spacing in chart for line/area/scatter if xaxis type = category for those charts by converting xaxis = numeric. Numeric/Datetime xaxis prevents the unnecessary spacing in the left/right of the chart area
+
+  }, {
+    key: 'bubble',
+    value: function bubble() {
+      return {
+        dataLabels: {
+          style: {
+            colors: ['#fff']
+          }
+        },
+        tooltip: {
+          shared: false,
+          intersect: true
+        },
+        xaxis: {
+          crosshairs: {
+            width: 0
+          }
+        },
+        fill: {
+          type: 'solid',
+          gradient: {
+            shade: 'light',
+            inverse: true,
+            shadeIntensity: 0.55,
+            opacityFrom: 0.4,
+            opacityTo: 0.8
+          }
+        }
+      };
+    }
+  }, {
+    key: 'scatter',
+    value: function scatter() {
+      return {
+        dataLabels: {
+          enabled: false
+        },
+        tooltip: {
+          shared: false,
+          intersect: true
+        },
+        markers: {
+          size: 6,
+          strokeWidth: 2,
+          hover: {
+            sizeOffset: 2
+          }
+        }
+      };
+    }
+  }, {
+    key: 'heatmap',
+    value: function heatmap() {
+      return {
+        chart: {
+          stacked: false,
+          zoom: {
+            enabled: false
+          }
+        },
+        fill: {
+          opacity: 1
+        },
+        dataLabels: {
+          style: {
+            colors: ['#fff']
+          }
+        },
+        stroke: {
+          colors: ['#fff']
+        },
+        tooltip: {
+          followCursor: true,
+          marker: {
+            show: false
+          },
+          x: {
+            show: false
+          }
+        },
+        legend: {
+          position: 'top',
+          markers: {
+            shape: 'square',
+            size: 10,
+            offsetY: 2
+          }
+        },
+        grid: {
+          padding: {
+            right: 20
+          }
+        }
+      };
+    }
+  }, {
+    key: 'pie',
+    value: function pie() {
+      return {
+        chart: {
+          toolbar: {
+            show: false
+          }
+        },
+        plotOptions: {
+          pie: {
+            donut: {
+              labels: {
+                show: false
+              }
+            }
+          }
+        },
+        dataLabels: {
+          formatter: function formatter(val) {
+            return val.toFixed(1) + '%';
+          },
+          style: {
+            colors: ['#fff']
+          },
+          dropShadow: {
+            enabled: true
+          }
+        },
+        stroke: {
+          colors: ['#fff']
+        },
+        fill: {
+          opacity: 1,
+          gradient: {
+            shade: 'dark',
+            shadeIntensity: 0.35,
+            inverseColors: false,
+            stops: [0, 100, 100]
+          }
+        },
+        padding: {
+          right: 0,
+          left: 0
+        },
+        tooltip: {
+          theme: 'dark',
+          fillSeriesColor: true
+        },
+        legend: {
+          position: 'right'
+        }
+      };
+    }
+  }, {
+    key: 'donut',
+    value: function donut() {
+      return {
+        chart: {
+          toolbar: {
+            show: false
+          }
+        },
+        dataLabels: {
+          formatter: function formatter(val) {
+            return val.toFixed(1) + '%';
+          },
+          style: {
+            colors: ['#fff']
+          },
+          dropShadow: {
+            enabled: true
+          }
+        },
+        stroke: {
+          colors: ['#fff']
+        },
+        fill: {
+          opacity: 1,
+          gradient: {
+            shade: 'dark',
+            shadeIntensity: 0.4,
+            inverseColors: false,
+            type: 'vertical',
+            opacityFrom: 1,
+            opacityTo: 1,
+            stops: [70, 98, 100]
+          }
+        },
+        padding: {
+          right: 0,
+          left: 0
+        },
+        tooltip: {
+          theme: 'dark',
+          fillSeriesColor: true
+        },
+        legend: {
+          position: 'right'
+        }
+      };
+    }
+  }, {
+    key: 'radar',
+    value: function radar() {
+      this.opts.yaxis[0].labels.style.fontSize = '13px';
+      this.opts.yaxis[0].labels.offsetY = 6;
+
+      return {
+        dataLabels: {
+          enabled: true,
+          style: {
+            colors: ['#a8a8a8'],
+            fontSize: '11px'
+          }
+        },
+        stroke: {
+          width: 2
+        },
+        markers: {
+          size: 3,
+          strokeWidth: 1,
+          strokeOpacity: 1
+        },
+        fill: {
+          opacity: 0.2
+        },
+        tooltip: {
+          shared: false,
+          intersect: true,
+          followCursor: true
+        },
+        grid: {
+          show: false
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          },
+          crosshairs: {
+            show: false
+          }
+        }
+      };
+    }
+  }, {
+    key: 'radialBar',
+    value: function radialBar() {
+      return {
+        chart: {
+          animations: {
+            dynamicAnimation: {
+              enabled: true,
+              speed: 800
+            }
+          },
+          toolbar: {
+            show: false
+          }
+        },
+        fill: {
+          gradient: {
+            shade: 'dark',
+            shadeIntensity: 0.4,
+            inverseColors: false,
+            type: 'diagonal2',
+            opacityFrom: 1,
+            opacityTo: 1,
+            stops: [70, 98, 100]
+          }
+        },
+        padding: {
+          right: 0,
+          left: 0
+        },
+        legend: {
+          show: false,
+          position: 'right'
+        },
+        tooltip: {
+          enabled: false,
+          fillSeriesColor: true
+        }
+      };
+    }
+  }], [{
+    key: 'convertCatToNumeric',
+    value: function convertCatToNumeric(opts) {
+      opts.xaxis.type = 'numeric';
+      opts.xaxis.convertedCatToNumeric = true;
+      opts.xaxis.labels = opts.xaxis.labels || {};
+      opts.xaxis.labels.formatter = opts.xaxis.labels.formatter || function (val) {
+        return val;
+      };
+      opts.chart = opts.chart || {};
+      opts.chart.zoom = opts.chart.zoom || window.Apex.chart && window.Apex.chart.zoom || {};
+      var defaultFormatter = opts.xaxis.labels.formatter;
+      var labels = opts.xaxis.categories && opts.xaxis.categories.length ? opts.xaxis.categories : opts.labels;
+
+      if (labels && labels.length) {
+        opts.xaxis.labels.formatter = function (val) {
+          return defaultFormatter(labels[val - 1]);
+        };
+      }
+
+      opts.xaxis.categories = [];
+      opts.labels = [];
+      opts.chart.zoom.enabled = opts.chart.zoom.enabled || false;
+
+      return opts;
+    }
+  }]);
+
+  return Defaults;
+}();
+
+exports.default = Defaults;
+
+/***/ }),
+/* 26 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Series = __webpack_require__(7);
+
+var _Series2 = _interopRequireDefault(_Series);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Tooltip.Position Class to move the tooltip based on x and y position.
+ *
+ * @module Tooltip.Position
+ **/
+
+var Position = function () {
+  function Position(tooltipContext) {
+    _classCallCheck(this, Position);
+
+    this.ttCtx = tooltipContext;
+    this.ctx = tooltipContext.ctx;
+    this.w = tooltipContext.w;
+  }
+
+  /**
+   * This will move the crosshair (the vertical/horz line that moves along with mouse)
+   * Along with this, this function also calls the xaxisMove function
+   * @memberof Position
+   * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair
+   */
+
+
+  _createClass(Position, [{
+    key: 'moveXCrosshairs',
+    value: function moveXCrosshairs(cx) {
+      var j = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+
+      var ttCtx = this.ttCtx;
+      var w = this.w;
+
+      var xcrosshairs = ttCtx.getElXCrosshairs();
+
+      var x = cx - ttCtx.xcrosshairsWidth / 2;
+
+      var tickAmount = w.globals.labels.slice().length;
+      if (j !== null) {
+        x = w.globals.gridWidth / tickAmount * j;
+      }
+
+      if (w.config.xaxis.crosshairs.width === 'tickWidth' || w.config.xaxis.crosshairs.width === 'barWidth') {
+        if (x + ttCtx.xcrosshairsWidth > w.globals.gridWidth) {
+          x = w.globals.gridWidth - ttCtx.xcrosshairsWidth;
+        }
+      } else {
+        if (j !== null) {
+          x = x + w.globals.gridWidth / tickAmount / 2;
+        }
+      }
+
+      if (x < 0) {
+        x = 0;
+      }
+
+      if (x > w.globals.gridWidth) {
+        x = w.globals.gridWidth;
+      }
+
+      if (xcrosshairs !== null) {
+        xcrosshairs.setAttribute('x', x);
+        xcrosshairs.setAttribute('x1', x);
+        xcrosshairs.setAttribute('x2', x);
+        xcrosshairs.setAttribute('y2', w.globals.gridHeight);
+        xcrosshairs.classList.add('active');
+      }
+
+      if (ttCtx.blxaxisTooltip) {
+        var tx = x;
+        if (w.config.xaxis.crosshairs.width === 'tickWidth' || w.config.xaxis.crosshairs.width === 'barWidth') {
+          tx = x + ttCtx.xcrosshairsWidth / 2;
+        }
+        this.moveXAxisTooltip(tx);
+      }
+    }
+
+    /**
+     * This will move the crosshair (the vertical/horz line that moves along with mouse)
+     * Along with this, this function also calls the xaxisMove function
+     * @memberof Position
+     * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair
+     */
+
+  }, {
+    key: 'moveYCrosshairs',
+    value: function moveYCrosshairs(cy) {
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.ycrosshairs !== null) {
+        _Graphics2.default.setAttrs(ttCtx.ycrosshairs, {
+          y1: cy,
+          y2: cy
+        });
+
+        _Graphics2.default.setAttrs(ttCtx.ycrosshairsHidden, {
+          y1: cy,
+          y2: cy
+        });
+      }
+    }
+
+    /**
+     ** AxisTooltip is the small rectangle which appears on x axis with x value, when user moves
+     * @memberof Position
+     * @param {int} - cx = point's x position, wherever point's x is, you need to move
+     */
+
+  }, {
+    key: 'moveXAxisTooltip',
+    value: function moveXAxisTooltip(cx) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.xaxisTooltip !== null) {
+        ttCtx.xaxisTooltip.classList.add('active');
+
+        var cy = ttCtx.xaxisOffY + w.config.xaxis.tooltip.offsetY + w.globals.translateY + 1 + w.config.xaxis.offsetY;
+
+        var xaxisTTText = ttCtx.xaxisTooltip.getBoundingClientRect();
+        var xaxisTTTextWidth = xaxisTTText.width;
+
+        cx = cx - xaxisTTTextWidth / 2;
+
+        if (!isNaN(cx)) {
+          cx = cx + w.globals.translateX;
+
+          var textRect = 0;
+          var graphics = new _Graphics2.default(this.ctx);
+          textRect = graphics.getTextRects(ttCtx.xaxisTooltipText.innerHTML);
+
+          ttCtx.xaxisTooltipText.style.minWidth = textRect.width + 'px';
+          ttCtx.xaxisTooltip.style.left = cx + 'px';
+          ttCtx.xaxisTooltip.style.top = cy + 'px';
+        }
+      }
+    }
+  }, {
+    key: 'moveYAxisTooltip',
+    value: function moveYAxisTooltip(index) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.yaxisTTEls === null) {
+        ttCtx.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip');
+      }
+
+      var ycrosshairsHiddenRectY1 = parseInt(ttCtx.ycrosshairsHidden.getAttribute('y1'));
+      var cy = w.globals.translateY + ycrosshairsHiddenRectY1;
+
+      var yAxisTTRect = ttCtx.yaxisTTEls[index].getBoundingClientRect();
+      var yAxisTTHeight = yAxisTTRect.height;
+      var cx = w.globals.translateYAxisX[index] - 2;
+
+      if (w.config.yaxis[index].opposite) {
+        cx = cx - 26;
+      }
+
+      cy = cy - yAxisTTHeight / 2;
+
+      if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1) {
+        ttCtx.yaxisTTEls[index].classList.add('active');
+        ttCtx.yaxisTTEls[index].style.top = cy + 'px';
+        ttCtx.yaxisTTEls[index].style.left = cx + w.config.yaxis[index].tooltip.offsetX + 'px';
+      } else {
+        ttCtx.yaxisTTEls[index].classList.remove('active');
+      }
+    }
+
+    /**
+     ** moves the whole tooltip by changing x, y attrs
+     * @memberof Position
+     * @param {int} - cx = point's x position, wherever point's x is, you need to move tooltip
+     * @param {int} - cy = point's y position, wherever point's y is, you need to move tooltip
+     * @param {int} - r = point's radius
+     */
+
+  }, {
+    key: 'moveTooltip',
+    value: function moveTooltip(cx, cy) {
+      var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+
+      var w = this.w;
+
+      var ttCtx = this.ttCtx;
+      var tooltipEl = ttCtx.getElTooltip();
+      var tooltipRect = ttCtx.tooltipRect;
+
+      var pointR = r !== null ? parseInt(r) : 1;
+
+      var x = parseInt(cx) + pointR + 5;
+      var y = parseInt(cy) + pointR / 2; // - tooltipRect.ttHeight / 2
+
+      if (x > w.globals.gridWidth / 2) {
+        x = x - tooltipRect.ttWidth - pointR - 15;
+      }
+
+      if (x > w.globals.gridWidth - tooltipRect.ttWidth - 10) {
+        x = w.globals.gridWidth - tooltipRect.ttWidth;
+      }
+
+      if (x < -20) {
+        x = -20;
+      }
+
+      if (w.config.tooltip.followCursor) {
+        var elGrid = ttCtx.getElGrid();
+        var seriesBound = elGrid.getBoundingClientRect();
+        y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top - tooltipRect.ttHeight / 2;
+      }
+
+      var newPositions = this.positionChecks(tooltipRect, x, y);
+      x = newPositions.x;
+      y = newPositions.y;
+
+      if (!isNaN(x)) {
+        x = x + w.globals.translateX;
+
+        tooltipEl.style.left = x + 'px';
+        tooltipEl.style.top = y + 'px';
+      }
+    }
+  }, {
+    key: 'positionChecks',
+    value: function positionChecks(tooltipRect, x, y) {
+      var w = this.w;
+      if (tooltipRect.ttHeight + y > w.globals.gridHeight) {
+        y = w.globals.gridHeight - tooltipRect.ttHeight + w.globals.translateY;
+      }
+
+      if (y < 0) {
+        y = 0;
+      }
+
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: 'moveMarkers',
+    value: function moveMarkers(i, j) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (w.globals.markers.size[i] > 0) {
+        var allPoints = w.globals.dom.baseEl.querySelectorAll(' .apexcharts-series[data\\:realIndex=\'' + i + '\'] .apexcharts-marker');
+        for (var p = 0; p < allPoints.length; p++) {
+          if (parseInt(allPoints[p].getAttribute('rel')) === j) {
+            ttCtx.marker.resetPointsSize();
+            ttCtx.marker.enlargeCurrentPoint(j, allPoints[p]);
+          }
+        }
+      } else {
+        ttCtx.marker.resetPointsSize();
+        this.moveDynamicPointOnHover(j, i);
+      }
+    }
+
+    // This function is used when you need to show markers/points only on hover -
+    // DIFFERENT X VALUES in multiple series
+
+  }, {
+    key: 'moveDynamicPointOnHover',
+    value: function moveDynamicPointOnHover(j, capturedSeries) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var cx = 0;
+      var cy = 0;
+
+      var pointsArr = w.globals.pointsArray;
+
+      var hoverSize = w.config.markers.hover.size;
+
+      if (hoverSize === undefined) {
+        hoverSize = w.globals.markers.size[capturedSeries] + w.config.markers.hover.sizeOffset;
+      }
+
+      cx = pointsArr[capturedSeries][j][0];
+      cy = pointsArr[capturedSeries][j][1] ? pointsArr[capturedSeries][j][1] : 0;
+
+      var point = w.globals.dom.baseEl.querySelector('.apexcharts-series[data\\:realIndex=\'' + capturedSeries + '\'] .apexcharts-series-markers circle');
+
+      if (point) {
+        point.setAttribute('r', hoverSize);
+
+        point.setAttribute('cx', cx);
+        point.setAttribute('cy', cy);
+      }
+
+      // point.style.opacity = w.config.markers.hover.opacity
+
+      this.moveXCrosshairs(cx);
+
+      if (!ttCtx.fixedTooltip) {
+        this.moveTooltip(cx, cy, hoverSize);
+      }
+    }
+
+    // This function is used when you need to show markers/points only on hover -
+    // SAME X VALUES in multiple series
+
+  }, {
+    key: 'moveDynamicPointsOnHover',
+    value: function moveDynamicPointsOnHover(j) {
+      var ttCtx = this.ttCtx;
+      var w = ttCtx.w;
+      var cx = 0;
+      var cy = 0;
+      var activeSeries = 0;
+
+      var pointsArr = w.globals.pointsArray;
+
+      var series = new _Series2.default(this.ctx);
+      activeSeries = series.getActiveSeriesIndex();
+
+      var hoverSize = w.config.markers.hover.size;
+      if (hoverSize === undefined) {
+        hoverSize = w.globals.markers.size[activeSeries] + w.config.markers.hover.sizeOffset;
+      }
+
+      if (pointsArr[activeSeries]) {
+        cx = pointsArr[activeSeries][j][0];
+        cy = pointsArr[activeSeries][j][1];
+      }
+
+      var points = null;
+      var allPoints = ttCtx.getAllMarkers();
+
+      if (allPoints !== null) {
+        points = allPoints;
+      } else {
+        points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers circle');
+      }
+
+      if (points !== null) {
+        for (var p = 0; p < points.length; p++) {
+          var pointArr = pointsArr[p];
+
+          if (pointArr && pointArr.length) {
+            var pcy = pointsArr[p][j][1];
+            points[p].setAttribute('cx', cx);
+            var realIndex = parseInt(points[p].parentNode.parentNode.parentNode.getAttribute('data:realIndex'));
+
+            if (pcy !== null) {
+              points[realIndex] && points[realIndex].setAttribute('r', hoverSize);
+              points[realIndex] && points[realIndex].setAttribute('cy', pcy);
+            } else {
+              points[realIndex] && points[realIndex].setAttribute('r', 0);
+            }
+          }
+        }
+      }
+
+      this.moveXCrosshairs(cx);
+
+      if (!ttCtx.fixedTooltip) {
+        var tcy = cy || w.globals.gridHeight;
+        this.moveTooltip(cx, tcy, hoverSize);
+      }
+    }
+  }, {
+    key: 'moveStickyTooltipOverBars',
+    value: function moveStickyTooltipOverBars(j) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      var jBar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-series .apexcharts-series[rel=\'1\'] path[j=\'' + j + '\'], .apexcharts-candlestick-series .apexcharts-series[rel=\'1\'] path[j=\'' + j + '\'], .apexcharts-rangebar-series .apexcharts-series[rel=\'1\'] path[j=\'' + j + '\']');
+
+      var bcx = jBar ? parseFloat(jBar.getAttribute('cx')) : 0;
+      var bcy = 0;
+      var bw = jBar ? parseFloat(jBar.getAttribute('barWidth')) : 0;
+
+      if (w.globals.isXNumeric) {
+        bcx = bcx - bw / 2;
+      } else {
+        bcx = ttCtx.xAxisTicksPositions[j - 1] + ttCtx.dataPointsDividedWidth / 2;
+        if (isNaN(bcx)) {
+          bcx = ttCtx.xAxisTicksPositions[j] - ttCtx.dataPointsDividedWidth / 2;
+        }
+      }
+
+      // tooltip will move vertically along with mouse as it is a shared tooltip
+      var elGrid = ttCtx.getElGrid();
+      var seriesBound = elGrid.getBoundingClientRect();
+
+      bcy = ttCtx.e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2;
+
+      this.moveXCrosshairs(bcx);
+
+      if (!ttCtx.fixedTooltip) {
+        var tcy = bcy || w.globals.gridHeight;
+        this.moveTooltip(bcx, tcy);
+      }
+    }
+  }]);
+
+  return Position;
+}();
+
+exports.default = Position;
+
+/***/ }),
+/* 27 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * ApexCharts Tooltip.Utils Class to support Tooltip functionality.
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * @module Tooltip.Utils
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      **/
+
+
+var _CoreUtils = __webpack_require__(2);
+
+var _CoreUtils2 = _interopRequireDefault(_CoreUtils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var Utils = function () {
+  function Utils(tooltipContext) {
+    _classCallCheck(this, Utils);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+    this.ctx = tooltipContext.ctx;
+  }
+
+  /**
+   ** When hovering over series, you need to capture which series is being hovered on.
+   ** This function will return both capturedseries index as well as inner index of that series
+   * @memberof Utils
+   * @param {object}
+   * - hoverArea = the rect on which user hovers
+   * - elGrid = dimensions of the hover rect (it can be different than hoverarea)
+   */
+
+
+  _createClass(Utils, [{
+    key: 'getNearestValues',
+    value: function getNearestValues(_ref) {
+      var hoverArea = _ref.hoverArea,
+          elGrid = _ref.elGrid,
+          clientX = _ref.clientX,
+          clientY = _ref.clientY,
+          hasBars = _ref.hasBars;
+
+      var w = this.w;
+
+      var hoverWidth = w.globals.gridWidth;
+
+      var xDivisor = hoverWidth / (w.globals.dataPoints - 1);
+
+      var seriesBound = elGrid.getBoundingClientRect();
+
+      if (hasBars && w.globals.comboCharts || hasBars) {
+        xDivisor = hoverWidth / w.globals.dataPoints;
+      }
+
+      var hoverX = clientX - seriesBound.left;
+      var hoverY = clientY - seriesBound.top;
+
+      var inRect = hoverX < 0 || hoverY < 0 || hoverX > w.globals.gridWidth || hoverY > w.globals.gridHeight;
+
+      if (inRect) {
+        hoverArea.classList.remove('hovering-zoom');
+        hoverArea.classList.remove('hovering-pan');
+      } else {
+        if (w.globals.zoomEnabled) {
+          hoverArea.classList.remove('hovering-pan');
+          hoverArea.classList.add('hovering-zoom');
+        } else if (w.globals.panEnabled) {
+          hoverArea.classList.remove('hovering-zoom');
+          hoverArea.classList.add('hovering-pan');
+        }
+      }
+
+      var j = Math.round(hoverX / xDivisor);
+
+      if (hasBars) {
+        j = Math.ceil(hoverX / xDivisor);
+        j = j - 1;
+      }
+
+      var capturedSeries = null;
+      var closest = null;
+      var seriesXValArr = [];
+      var seriesYValArr = [];
+
+      for (var s = 0; s < w.globals.seriesXvalues.length; s++) {
+        seriesXValArr.push([w.globals.seriesXvalues[s][0] - 0.000001].concat(w.globals.seriesXvalues[s]));
+      }
+
+      seriesXValArr = seriesXValArr.map(function (seriesXVal) {
+        return seriesXVal.filter(function (s) {
+          return s;
+        });
+      });
+
+      seriesYValArr = w.globals.seriesYvalues.map(function (seriesYVal) {
+        return seriesYVal.filter(function (s) {
+          return s;
+        });
+      });
+
+      // if X axis type is not category and tooltip is not shared, then we need to find the cursor position and get the nearest value
+      if (w.globals.isXNumeric) {
+        closest = this.closestInMultiArray(hoverX, hoverY, seriesXValArr, seriesYValArr);
+        capturedSeries = closest.index;
+        j = closest.j;
+
+        if (capturedSeries !== null) {
+          // initial push, it should be a little smaller than the 1st val
+          seriesXValArr = w.globals.seriesXvalues[capturedSeries];
+
+          closest = this.closestInArray(hoverX, seriesXValArr);
+
+          j = closest.index;
+        }
+      }
+
+      if (!j || j < 1) j = 0;
+
+      return {
+        capturedSeries: capturedSeries,
+        j: j,
+        hoverX: hoverX,
+        hoverY: hoverY
+      };
+    }
+  }, {
+    key: 'closestInMultiArray',
+    value: function closestInMultiArray(hoverX, hoverY, Xarrays, Yarrays) {
+      var w = this.w;
+      var activeIndex = 0;
+      var currIndex = null;
+      var j = -1;
+
+      if (w.globals.series.length > 1) {
+        activeIndex = this.getFirstActiveXArray(Xarrays);
+      } else {
+        currIndex = 0;
+      }
+
+      var currY = Yarrays[activeIndex][0];
+      var currX = Xarrays[activeIndex][0];
+
+      var diffX = Math.abs(hoverX - currX);
+      var diffY = Math.abs(hoverY - currY);
+      var diff = diffY + diffX;
+
+      Yarrays.map(function (arrY, arrIndex) {
+        arrY.map(function (y, innerKey) {
+          var newdiffY = Math.abs(hoverY - Yarrays[arrIndex][innerKey]);
+          var newdiffX = Math.abs(hoverX - Xarrays[arrIndex][innerKey]);
+          var newdiff = newdiffX + newdiffY;
+
+          if (newdiff < diff) {
+            diff = newdiff;
+            diffX = newdiffX;
+            diffY = newdiffY;
+            currIndex = arrIndex;
+            j = innerKey;
+          }
+        });
+      });
+
+      return {
+        index: currIndex,
+        j: j
+      };
+    }
+  }, {
+    key: 'getFirstActiveXArray',
+    value: function getFirstActiveXArray(Xarrays) {
+      var activeIndex = 0;
+      var coreUtils = new _CoreUtils2.default(this.ctx);
+
+      var firstActiveSeriesIndex = Xarrays.map(function (xarr, index) {
+        if (xarr.length > 0) {
+          return index;
+        } else {
+          return -1;
+        }
+      });
+
+      for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+        var total = coreUtils.getSeriesTotalByIndex(a);
+
+        if (firstActiveSeriesIndex[a] !== -1 && total !== 0 && !coreUtils.seriesHaveSameValues(a)) {
+          activeIndex = firstActiveSeriesIndex[a];
+          break;
+        }
+      }
+
+      return activeIndex;
+    }
+  }, {
+    key: 'closestInArray',
+    value: function closestInArray(val, arr) {
+      var curr = arr[0];
+      var currIndex = null;
+      var diff = Math.abs(val - curr);
+
+      for (var i = 0; i < arr.length; i++) {
+        var newdiff = Math.abs(val - arr[i]);
+        if (newdiff < diff) {
+          diff = newdiff;
+          curr = arr[i];
+          currIndex = i;
+        }
+      }
+
+      return {
+        index: currIndex
+      };
+    }
+
+    /**
+     * When there are multiple series, it is possible to have different x values for each series.
+     * But it may be possible in those multiple series, that there is same x value for 2 or more
+     * series.
+     * @memberof Utils
+     * @param {int}
+     * - j = is the inner index of series -> (series[i][j])
+     * @return {bool}
+     */
+
+  }, {
+    key: 'isXoverlap',
+    value: function isXoverlap(j) {
+      var w = this.w;
+      var xSameForAllSeriesJArr = [];
+
+      var seriesX = w.globals.seriesX.filter(function (s) {
+        return typeof s[0] !== 'undefined';
+      });
+
+      if (seriesX.length > 0) {
+        for (var i = 0; i < seriesX.length - 1; i++) {
+          if (typeof seriesX[i][j] !== 'undefined' && typeof seriesX[i + 1][j] !== 'undefined') {
+            if (seriesX[i][j] !== seriesX[i + 1][j]) {
+              xSameForAllSeriesJArr.push('unEqual');
+            }
+          }
+        }
+      }
+
+      if (xSameForAllSeriesJArr.length === 0) {
+        return true;
+      }
+
+      return false;
+    }
+  }, {
+    key: 'isinitialSeriesSameLen',
+    value: function isinitialSeriesSameLen() {
+      var sameLen = true;
+
+      var initialSeries = this.w.globals.initialSeries;
+
+      for (var i = 0; i < initialSeries.length - 1; i++) {
+        if (initialSeries[i].data.length !== initialSeries[i + 1].data.length) {
+          sameLen = false;
+          break;
+        }
+      }
+
+      return sameLen;
+    }
+  }, {
+    key: 'getBarsHeight',
+    value: function getBarsHeight(allbars) {
+      var bars = [].concat(_toConsumableArray(allbars));
+      var totalHeight = bars.reduce(function (acc, bar) {
+        return acc + bar.getBBox().height;
+      }, 0);
+
+      return totalHeight;
+    }
+  }, {
+    key: 'toggleAllTooltipSeriesGroups',
+    value: function toggleAllTooltipSeriesGroups(state) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.allTooltipSeriesGroups.length === 0) {
+        ttCtx.allTooltipSeriesGroups = w.globals.dom.baseEl.querySelectorAll('.apexcharts-tooltip-series-group');
+      }
+
+      var allTooltipSeriesGroups = ttCtx.allTooltipSeriesGroups;
+      for (var i = 0; i < allTooltipSeriesGroups.length; i++) {
+        if (state === 'enable') {
+          allTooltipSeriesGroups[i].classList.add('active');
+          allTooltipSeriesGroups[i].style.display = w.config.tooltip.items.display;
+        } else {
+          allTooltipSeriesGroups[i].classList.remove('active');
+          allTooltipSeriesGroups[i].style.display = 'none';
+        }
+      }
+    }
+  }]);
+
+  return Utils;
+}();
+
+exports.default = Utils;
+
+/***/ }),
+/* 28 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(setImmediate) {
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _finally = __webpack_require__(57);
+
+var _finally2 = _interopRequireDefault(_finally);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+// Store setTimeout reference so promise-polyfill will be unaffected by
+// other code modifying setTimeout (like sinon.useFakeTimers())
+var setTimeoutFunc = setTimeout;
+
+function noop() {}
+
+// Polyfill for Function.prototype.bind
+function bind(fn, thisArg) {
+  return function () {
+    fn.apply(thisArg, arguments);
+  };
+}
+
+/**
+ * @constructor
+ * @param {Function} fn
+ */
+function Promise(fn) {
+  if (!(this instanceof Promise)) throw new TypeError('Promises must be constructed via new');
+  if (typeof fn !== 'function') throw new TypeError('not a function');
+  /** @type {!number} */
+  this._state = 0;
+  /** @type {!boolean} */
+  this._handled = false;
+  /** @type {Promise|undefined} */
+  this._value = undefined;
+  /** @type {!Array<!Function>} */
+  this._deferreds = [];
+
+  doResolve(fn, this);
+}
+
+function handle(self, deferred) {
+  while (self._state === 3) {
+    self = self._value;
+  }
+  if (self._state === 0) {
+    self._deferreds.push(deferred);
+    return;
+  }
+  self._handled = true;
+  Promise._immediateFn(function () {
+    var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
+    if (cb === null) {
+      (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
+      return;
+    }
+    var ret;
+    try {
+      ret = cb(self._value);
+    } catch (e) {
+      reject(deferred.promise, e);
+      return;
+    }
+    resolve(deferred.promise, ret);
+  });
+}
+
+function resolve(self, newValue) {
+  try {
+    // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
+    if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');
+    if (newValue && ((typeof newValue === 'undefined' ? 'undefined' : _typeof(newValue)) === 'object' || typeof newValue === 'function')) {
+      var then = newValue.then;
+      if (newValue instanceof Promise) {
+        self._state = 3;
+        self._value = newValue;
+        finale(self);
+        return;
+      } else if (typeof then === 'function') {
+        doResolve(bind(then, newValue), self);
+        return;
+      }
+    }
+    self._state = 1;
+    self._value = newValue;
+    finale(self);
+  } catch (e) {
+    reject(self, e);
+  }
+}
+
+function reject(self, newValue) {
+  self._state = 2;
+  self._value = newValue;
+  finale(self);
+}
+
+function finale(self) {
+  if (self._state === 2 && self._deferreds.length === 0) {
+    Promise._immediateFn(function () {
+      if (!self._handled) {
+        Promise._unhandledRejectionFn(self._value);
+      }
+    });
+  }
+
+  for (var i = 0, len = self._deferreds.length; i < len; i++) {
+    handle(self, self._deferreds[i]);
+  }
+  self._deferreds = null;
+}
+
+/**
+ * @constructor
+ */
+function Handler(onFulfilled, onRejected, promise) {
+  this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
+  this.onRejected = typeof onRejected === 'function' ? onRejected : null;
+  this.promise = promise;
+}
+
+/**
+ * Take a potentially misbehaving resolver function and make sure
+ * onFulfilled and onRejected are only called once.
+ *
+ * Makes no guarantees about asynchrony.
+ */
+function doResolve(fn, self) {
+  var done = false;
+  try {
+    fn(function (value) {
+      if (done) return;
+      done = true;
+      resolve(self, value);
+    }, function (reason) {
+      if (done) return;
+      done = true;
+      reject(self, reason);
+    });
+  } catch (ex) {
+    if (done) return;
+    done = true;
+    reject(self, ex);
+  }
+}
+
+Promise.prototype['catch'] = function (onRejected) {
+  return this.then(null, onRejected);
+};
+
+Promise.prototype.then = function (onFulfilled, onRejected) {
+  // @ts-ignore
+  var prom = new this.constructor(noop);
+
+  handle(this, new Handler(onFulfilled, onRejected, prom));
+  return prom;
+};
+
+Promise.prototype['finally'] = _finally2.default;
+
+Promise.all = function (arr) {
+  return new Promise(function (resolve, reject) {
+    if (!arr || typeof arr.length === 'undefined') throw new TypeError('Promise.all accepts an array');
+    var args = Array.prototype.slice.call(arr);
+    if (args.length === 0) return resolve([]);
+    var remaining = args.length;
+
+    function res(i, val) {
+      try {
+        if (val && ((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' || typeof val === 'function')) {
+          var then = val.then;
+          if (typeof then === 'function') {
+            then.call(val, function (val) {
+              res(i, val);
+            }, reject);
+            return;
+          }
+        }
+        args[i] = val;
+        if (--remaining === 0) {
+          resolve(args);
+        }
+      } catch (ex) {
+        reject(ex);
+      }
+    }
+
+    for (var i = 0; i < args.length; i++) {
+      res(i, args[i]);
+    }
+  });
+};
+
+Promise.resolve = function (value) {
+  if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.constructor === Promise) {
+    return value;
+  }
+
+  return new Promise(function (resolve) {
+    resolve(value);
+  });
+};
+
+Promise.reject = function (value) {
+  return new Promise(function (resolve, reject) {
+    reject(value);
+  });
+};
+
+Promise.race = function (values) {
+  return new Promise(function (resolve, reject) {
+    for (var i = 0, len = values.length; i < len; i++) {
+      values[i].then(resolve, reject);
+    }
+  });
+};
+
+// Use polyfill for setImmediate for performance gains
+Promise._immediateFn = typeof setImmediate === 'function' && function (fn) {
+  setImmediate(fn);
+} || function (fn) {
+  setTimeoutFunc(fn, 0);
+};
+
+Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
+  if (typeof console !== 'undefined' && console) {
+    console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
+  }
+};
+
+exports.default = Promise;
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(65).setImmediate))
+
+/***/ }),
+/* 29 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var g;
+
+// This works in non-strict mode
+g = function () {
+	return this;
+}();
+
+try {
+	// This works if eval is allowed (see CSP)
+	g = g || Function("return this")() || (1, eval)("this");
+} catch (e) {
+	// This works if the window reference is available
+	if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === "object") g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+/***/ }),
+/* 30 */
+/***/ (function(module, exports) {
+
+module.exports = {"name":"en","options":{"months":["January","February","March","April","May","June","July","August","September","October","November","December"],"shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"days":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"shortDays":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"toolbar":{"exportToSVG":"Download SVG","exportToPNG":"Download PNG","menu":"Menu","selection":"Selection","selectionZoom":"Selection Zoom","zoomIn":"Zoom In","zoomOut":"Zoom Out","pan":"Panning","reset":"Reset Zoom"}}}
+
+/***/ }),
+/* 31 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Annotations = __webpack_require__(40);
+
+var _Annotations2 = _interopRequireDefault(_Annotations);
+
+var _Animations = __webpack_require__(5);
+
+var _Animations2 = _interopRequireDefault(_Animations);
+
+var _Base = __webpack_require__(41);
+
+var _Base2 = _interopRequireDefault(_Base);
+
+var _Config = __webpack_require__(17);
+
+var _Config2 = _interopRequireDefault(_Config);
+
+var _Core = __webpack_require__(42);
+
+var _Core2 = _interopRequireDefault(_Core);
+
+var _CoreUtils = __webpack_require__(2);
+
+var _CoreUtils2 = _interopRequireDefault(_CoreUtils);
+
+var _Crosshairs = __webpack_require__(20);
+
+var _Crosshairs2 = _interopRequireDefault(_Crosshairs);
+
+var _Defaults = __webpack_require__(25);
+
+var _Defaults2 = _interopRequireDefault(_Defaults);
+
+var _Dimensions = __webpack_require__(13);
+
+var _Dimensions2 = _interopRequireDefault(_Dimensions);
+
+var _Formatters = __webpack_require__(10);
+
+var _Formatters2 = _interopRequireDefault(_Formatters);
+
+var _Exports = __webpack_require__(21);
+
+var _Exports2 = _interopRequireDefault(_Exports);
+
+var _Grid = __webpack_require__(49);
+
+var _Grid2 = _interopRequireDefault(_Grid);
+
+var _Legend = __webpack_require__(43);
+
+var _Legend2 = _interopRequireDefault(_Legend);
+
+var _Markers = __webpack_require__(6);
+
+var _Markers2 = _interopRequireDefault(_Markers);
+
+var _Range = __webpack_require__(22);
+
+var _Range2 = _interopRequireDefault(_Range);
+
+var _Responsive = __webpack_require__(44);
+
+var _Responsive2 = _interopRequireDefault(_Responsive);
+
+var _Series = __webpack_require__(7);
+
+var _Series2 = _interopRequireDefault(_Series);
+
+var _Theme = __webpack_require__(45);
+
+var _Theme2 = _interopRequireDefault(_Theme);
+
+var _Tooltip = __webpack_require__(55);
+
+var _Tooltip2 = _interopRequireDefault(_Tooltip);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _ZoomPanSelection = __webpack_require__(48);
+
+var _ZoomPanSelection2 = _interopRequireDefault(_ZoomPanSelection);
+
+var _TitleSubtitle = __webpack_require__(47);
+
+var _TitleSubtitle2 = _interopRequireDefault(_TitleSubtitle);
+
+var _Toolbar = __webpack_require__(23);
+
+var _Toolbar2 = _interopRequireDefault(_Toolbar);
+
+var _Options = __webpack_require__(18);
+
+var _Options2 = _interopRequireDefault(_Options);
+
+var _promisePolyfill = __webpack_require__(28);
+
+var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
+
+__webpack_require__(66);
+
+__webpack_require__(61);
+
+__webpack_require__(62);
+
+__webpack_require__(60);
+
+__webpack_require__(64);
+
+__webpack_require__(63);
+
+__webpack_require__(70);
+
+__webpack_require__(67);
+
+__webpack_require__(68);
+
+var _en = __webpack_require__(30);
+
+var _en2 = _interopRequireDefault(_en);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+// global Apex object which user can use to override chart's defaults globally
+window.Apex = {};
+
+/**
+ *
+ * @module ApexCharts
+ **/
+
+var ApexCharts = function () {
+  function ApexCharts(el, opts) {
+    _classCallCheck(this, ApexCharts);
+
+    this.opts = opts;
+    this.ctx = this;
+
+    // Pass the user supplied options to the Base Class where these options will be extended with defaults. The returned object from Base Class will become the config object in the entire codebase.
+    this.w = new _Base2.default(opts).init();
+
+    this.el = el;
+
+    this.w.globals.cuid = (Math.random() + 1).toString(36).substring(4);
+    this.w.globals.chartID = this.w.config.chart.id ? this.w.config.chart.id : this.w.globals.cuid;
+
+    this.initModules();
+
+    this.create = _Utils2.default.bind(this.create, this);
+    this.windowResizeHandler = this.windowResize.bind(this);
+  }
+
+  /**
+   * The primary method user will call to render the chart.
+   */
+
+
+  _createClass(ApexCharts, [{
+    key: 'render',
+    value: function render() {
+      var _this = this;
+
+      // main method
+      return new _promisePolyfill2.default(function (resolve, reject) {
+        // only draw chart, if element found
+        if (_this.el !== null) {
+          if (typeof Apex._chartInstances === 'undefined') {
+            Apex._chartInstances = [];
+          }
+          if (_this.w.config.chart.id) {
+            Apex._chartInstances.push({
+              id: _this.w.globals.chartID,
+              group: _this.w.config.chart.group,
+              chart: _this
+            });
+          }
+
+          // set the locale here
+          _this.setLocale(_this.w.config.chart.defaultLocale);
+          var beforeMount = _this.w.config.chart.events.beforeMount;
+          if (typeof beforeMount === 'function') {
+            beforeMount(_this, _this.w);
+          }
+
+          _this.fireEvent('beforeMount', [_this, _this.w]);
+          window.addEventListener('resize', _this.windowResizeHandler);
+          window.addResizeListener(_this.el.parentNode, _this.parentResizeCallback.bind(_this));
+
+          var graphData = _this.create(_this.w.config.series, {});
+          if (!graphData) return resolve(_this);
+          _this.mount(graphData).then(function () {
+            resolve(graphData);
+
+            if (typeof _this.w.config.chart.events.mounted === 'function') {
+              _this.w.config.chart.events.mounted(_this, _this.w);
+            }
+
+            _this.fireEvent('mounted', [_this, _this.w]);
+          }).catch(function (e) {
+            reject(e);
+            // handle error in case no data or element not found
+          });
+        } else {
+          reject(new Error('Element not found'));
+        }
+      });
+    }
+  }, {
+    key: 'initModules',
+    value: function initModules() {
+      this.animations = new _Animations2.default(this);
+      this.core = new _Core2.default(this.el, this);
+      this.grid = new _Grid2.default(this);
+      this.coreUtils = new _CoreUtils2.default(this);
+      this.config = new _Config2.default({});
+      this.crosshairs = new _Crosshairs2.default(this);
+      this.options = new _Options2.default();
+      this.responsive = new _Responsive2.default(this);
+      this.series = new _Series2.default(this);
+      this.theme = new _Theme2.default(this);
+      this.formatters = new _Formatters2.default(this);
+      this.titleSubtitle = new _TitleSubtitle2.default(this);
+      this.legend = new _Legend2.default(this);
+      this.toolbar = new _Toolbar2.default(this);
+      this.dimensions = new _Dimensions2.default(this);
+      this.zoomPanSelection = new _ZoomPanSelection2.default(this);
+      this.w.globals.tooltip = new _Tooltip2.default(this);
+    }
+  }, {
+    key: 'addEventListener',
+    value: function addEventListener(name, handler) {
+      var w = this.w;
+
+      if (w.globals.events.hasOwnProperty(name)) {
+        w.globals.events[name].push(handler);
+      } else {
+        w.globals.events[name] = [handler];
+      }
+    }
+  }, {
+    key: 'removeEventListener',
+    value: function removeEventListener(name, handler) {
+      var w = this.w;
+      if (!w.globals.events.hasOwnProperty(name)) {
+        return;
+      }
+
+      var index = w.globals.events[name].indexOf(handler);
+      if (index !== -1) {
+        w.globals.events[name].splice(index, 1);
+      }
+    }
+  }, {
+    key: 'fireEvent',
+    value: function fireEvent(name, args) {
+      var w = this.w;
+
+      if (!w.globals.events.hasOwnProperty(name)) {
+        return;
+      }
+
+      if (!args || !args.length) {
+        args = [];
+      }
+
+      var evs = w.globals.events[name];
+      var l = evs.length;
+
+      for (var i = 0; i < l; i++) {
+        evs[i].apply(null, args);
+      }
+    }
+  }, {
+    key: 'create',
+    value: function create(ser, opts) {
+      var w = this.w;
+      this.initModules();
+      var gl = this.w.globals;
+
+      gl.noData = false;
+      gl.animationEnded = false;
+
+      this.responsive.checkResponsiveConfig(opts);
+
+      if (this.el === null) {
+        gl.animationEnded = true;
+        return null;
+      }
+
+      this.core.setupElements();
+
+      if (gl.svgWidth === 0) {
+        // if the element is hidden, skip drawing
+        gl.animationEnded = true;
+        return null;
+      }
+
+      var combo = _CoreUtils2.default.checkComboSeries(ser);
+      gl.comboCharts = combo.comboCharts;
+      gl.comboChartsHasBars = combo.comboChartsHasBars;
+
+      if (ser.length === 0 || ser.length === 1 && ser[0].data && ser[0].data.length === 0) {
+        this.series.handleNoData();
+      }
+
+      this.setupEventHandlers();
+
+      // Handle the data inputted by user and set some of the global variables (for eg, if data is datetime / numeric / category). Don't calculate the range / min / max at this time
+      this.core.parseData(ser);
+
+      // this is a good time to set theme colors first
+      this.theme.init();
+
+      // as markers accepts array, we need to setup global markers for easier access
+      var markers = new _Markers2.default(this);
+      markers.setGlobalMarkerSize();
+
+      // labelFormatters should be called before dimensions as in dimensions we need text labels width
+      this.formatters.setLabelFormatters();
+      this.titleSubtitle.draw();
+
+      // legend is calculated here before coreCalculations because it affects the plottable area
+      this.legend.init();
+
+      // check whether in multiple series, all series share the same X
+      this.series.hasAllSeriesEqualX();
+
+      // coreCalculations will give the min/max range and yaxis/axis values. It should be called here to set series variable from config to globals
+      if (gl.axisCharts) {
+        this.core.coreCalculations();
+        if (w.config.xaxis.type !== 'category') {
+          // as we have minX and maxX values, determine the default DateTimeFormat for time series
+          this.formatters.setLabelFormatters();
+        }
+      }
+
+      // we need to generate yaxis for heatmap separately as we are not showing numerics there, but seriesNames. There are some tweaks which are required for heatmap to align labels correctly which are done in below function
+      // Also we need to do this before calcuting Dimentions plotCoords() method of Dimensions
+      this.formatters.heatmapLabelFormatters();
+
+      // We got plottable area here, next task would be to calculate axis areas
+      this.dimensions.plotCoords();
+
+      var xyRatios = this.core.xySettings();
+
+      this.grid.createGridMask();
+
+      var elGraph = this.core.plotChartType(ser, xyRatios);
+
+      // after all the drawing calculations, shift the graphical area (actual charts/bars) excluding legends
+      this.core.shiftGraphPosition();
+
+      var dim = {
+        plot: {
+          left: w.globals.translateX,
+          top: w.globals.translateY,
+          width: w.globals.gridWidth,
+          height: w.globals.gridHeight
+        }
+      };
+
+      return {
+        elGraph: elGraph,
+        xyRatios: xyRatios,
+        elInner: w.globals.dom.elGraphical,
+        dimensions: dim
+      };
+    }
+  }, {
+    key: 'mount',
+    value: function mount() {
+      var graphData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+
+      var me = this;
+      var w = me.w;
+
+      return new _promisePolyfill2.default(function (resolve, reject) {
+        // no data to display
+        if (me.el === null) {
+          return reject(new Error('Not enough data to display or target element not found'));
+        } else if (graphData === null || w.globals.allSeriesCollapsed) {
+          me.series.handleNoData();
+        }
+        me.annotations = new _Annotations2.default(me);
+        me.core.drawAxis(w.config.chart.type, graphData.xyRatios);
+
+        me.grid = new _Grid2.default(me);
+        if (w.config.grid.position === 'back') {
+          me.grid.drawGrid();
+        }
+
+        if (w.config.annotations.position === 'back') {
+          me.annotations.drawAnnotations();
+        }
+
+        if (graphData.elGraph instanceof Array) {
+          for (var g = 0; g < graphData.elGraph.length; g++) {
+            w.globals.dom.elGraphical.add(graphData.elGraph[g]);
+          }
+        } else {
+          w.globals.dom.elGraphical.add(graphData.elGraph);
+        }
+
+        if (w.config.grid.position === 'front') {
+          me.grid.drawGrid();
+        }
+
+        if (w.config.xaxis.crosshairs.position === 'front') {
+          me.crosshairs.drawXCrosshairs();
+        }
+
+        if (w.config.yaxis[0].crosshairs.position === 'front') {
+          me.crosshairs.drawYCrosshairs();
+        }
+
+        if (w.config.annotations.position === 'front') {
+          me.annotations.drawAnnotations();
+        }
+
+        if (!w.globals.noData) {
+          // draw tooltips at the end
+          if (w.config.tooltip.enabled && !w.globals.noData) {
+            me.w.globals.tooltip.drawTooltip(graphData.xyRatios);
+          }
+
+          if (w.globals.axisCharts && w.globals.isXNumeric) {
+            if (w.config.chart.zoom.enabled || w.config.chart.selection && w.config.chart.selection.enabled || w.config.chart.pan && w.config.chart.pan.enabled) {
+              me.zoomPanSelection.init({
+                xyRatios: graphData.xyRatios
+              });
+            }
+          } else {
+            var tools = w.config.chart.toolbar.tools;
+            tools.zoom = false;
+            tools.zoomin = false;
+            tools.zoomout = false;
+            tools.selection = false;
+            tools.pan = false;
+            tools.reset = false;
+          }
+
+          if (w.config.chart.toolbar.show && !w.globals.allSeriesCollapsed) {
+            me.toolbar.createToolbar();
+          }
+        }
+
+        if (w.globals.memory.methodsToExec.length > 0) {
+          w.globals.memory.methodsToExec.forEach(function (fn) {
+            fn.method(fn.params, false, fn.context);
+          });
+        }
+        resolve(me);
+      });
+    }
+  }, {
+    key: 'clearPreviousPaths',
+    value: function clearPreviousPaths() {
+      var w = this.w;
+      w.globals.previousPaths = [];
+      w.globals.allSeriesCollapsed = false;
+      w.globals.collapsedSeries = [];
+      w.globals.collapsedSeriesIndices = [];
+    }
+
+    /**
+     * Allows users to update Options after the chart has rendered.
+     *
+     * @param {object} options - A new config object can be passed which will be merged with the existing config object
+     * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there
+     * @param {boolean} animate - should animate or not on updating Options
+     */
+
+  }, {
+    key: 'updateOptions',
+    value: function updateOptions(options) {
+      var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+      var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      var overwriteInitialConfig = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
+
+      var w = this.w;
+      if (options.series) {
+        if (options.series[0].data) {
+          options.series = options.series.map(function (s, i) {
+            return _extends({}, w.config.series[i], {
+              name: s.name ? s.name : w.config.series[i] && w.config.series[i].name,
+              type: s.type ? s.type : w.config.series[i] && w.config.series[i].type,
+              data: s.data ? s.data : w.config.series[i] && w.config.series[i].data
+            });
+          });
+        }
+
+        // user updated the series via updateOptions() function.
+        // Hence, we need to reset axis min/max to avoid zooming issues
+        this.revertDefaultAxisMinMax();
+      }
+      // user has set x-axis min/max externally - hence we need to forcefully set the xaxis min/max
+      if (options.xaxis) {
+        if (options.xaxis.min || options.xaxis.max) {
+          this.forceXAxisUpdate(options);
+        }
+
+        /* fixes apexcharts.js#369 and react-apexcharts#46 */
+        if (options.xaxis.categories && options.xaxis.categories.length && w.config.xaxis.convertedCatToNumeric) {
+          options = _Defaults2.default.convertCatToNumeric(options);
+        }
+      }
+      if (w.globals.collapsedSeriesIndices.length > 0) {
+        this.clearPreviousPaths();
+      }
+      /* update theme mode#459 */
+      if (options.theme) {
+        options = this.theme.updateThemeOptions(options);
+      }
+      return this._updateOptions(options, redraw, animate, overwriteInitialConfig);
+    }
+
+    /**
+     * private method to update Options.
+     *
+     * @param {object} options - A new config object can be passed which will be merged with the existing config object
+     * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there
+     * @param {boolean} animate - should animate or not on updating Options
+     * @param {boolean} overwriteInitialConfig - should update the initial config or not
+     */
+
+  }, {
+    key: '_updateOptions',
+    value: function _updateOptions(options) {
+      var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+      var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      var overwriteInitialConfig = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
+
+      var charts = this.getSyncedCharts();
+
+      charts.forEach(function (ch) {
+        var w = ch.w;
+
+        w.globals.shouldAnimate = animate;
+
+        if (!redraw) {
+          w.globals.resized = true;
+          w.globals.dataChanged = true;
+
+          if (animate) {
+            ch.series.getPreviousPaths();
+          }
+        }
+
+        if (options && (typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {
+          ch.config = new _Config2.default(options);
+          options = _CoreUtils2.default.extendArrayProps(ch.config, options);
+
+          w.config = _Utils2.default.extend(w.config, options);
+
+          if (overwriteInitialConfig) {
+            // we need to forget the lastXAxis and lastYAxis is user forcefully overwriteInitialConfig. If we do not do this, and next time when user zooms the chart after setting yaxis.min/max or xaxis.min/max - the stored lastXAxis will never allow the chart to use the updated min/max by user.
+            w.globals.lastXAxis = [];
+            w.globals.lastYAxis = [];
+
+            // After forgetting lastAxes, we need to restore the new config in initialConfig/initialSeries
+            w.globals.initialConfig = _Utils2.default.extend({}, w.config);
+            w.globals.initialSeries = JSON.parse(JSON.stringify(w.config.series));
+          }
+        }
+
+        return ch.update(options);
+      });
+    }
+
+    /**
+     * Allows users to update Series after the chart has rendered.
+     *
+     * @param {array} series - New series which will override the existing
+     */
+
+  }, {
+    key: 'updateSeries',
+    value: function updateSeries() {
+      var newSeries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+      var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+
+      this.revertDefaultAxisMinMax();
+      return this._updateSeries(newSeries, animate, overwriteInitialSeries);
+    }
+
+    /**
+     * Allows users to append a new series after the chart has rendered.
+     *
+     * @param {array} newSerie - New serie which will be appended to the existing series
+     */
+
+  }, {
+    key: 'appendSeries',
+    value: function appendSeries(newSerie) {
+      var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+
+      var newSeries = this.w.config.series.slice();
+      newSeries.push(newSerie);
+      this.revertDefaultAxisMinMax();
+      return this._updateSeries(newSeries, animate, overwriteInitialSeries);
+    }
+
+    /**
+     * Private method to update Series.
+     *
+     * @param {array} series - New series which will override the existing
+     */
+
+  }, {
+    key: '_updateSeries',
+    value: function _updateSeries(newSeries, animate) {
+      var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+      var w = this.w;
+
+      this.w.globals.shouldAnimate = animate;
+
+      w.globals.dataChanged = true;
+
+      // if user has collapsed some series with legend, we need to clear those
+      if (w.globals.allSeriesCollapsed) {
+        w.globals.allSeriesCollapsed = false;
+      }
+
+      if (animate) {
+        this.series.getPreviousPaths();
+      }
+
+      var existingSeries = void 0;
+
+      // axis charts
+      if (w.globals.axisCharts) {
+        existingSeries = newSeries.map(function (s, i) {
+          return _extends({}, w.config.series[i], {
+            name: s.name ? s.name : w.config.series[i] && w.config.series[i].name,
+            type: s.type ? s.type : w.config.series[i] && w.config.series[i].type,
+            data: s.data ? s.data : w.config.series[i] && w.config.series[i].data
+          });
+        });
+
+        if (existingSeries.length === 0) {
+          existingSeries = [{ data: [] }];
+        }
+        w.config.series = existingSeries;
+      } else {
+        // non-axis chart (pie/radialbar)
+        w.config.series = newSeries.slice();
+      }
+
+      if (overwriteInitialSeries) {
+        w.globals.initialConfig.series = JSON.parse(JSON.stringify(w.config.series));
+        w.globals.initialSeries = JSON.parse(JSON.stringify(w.config.series));
+      }
+
+      return this.update();
+    }
+
+    /**
+     * Get all charts in the same "group" (including the instance which is called upon) to sync them when user zooms in/out or pan.
+     */
+
+  }, {
+    key: 'getSyncedCharts',
+    value: function getSyncedCharts() {
+      var chartGroups = this.getGroupedCharts();
+      var allCharts = [this];
+      if (chartGroups.length) {
+        allCharts = [];
+        chartGroups.forEach(function (ch) {
+          allCharts.push(ch);
+        });
+      }
+
+      return allCharts;
+    }
+
+    /**
+     * Get charts in the same "group" (excluding the instance which is called upon) to perform operations on the other charts of the same group (eg., tooltip hovering)
+     */
+
+  }, {
+    key: 'getGroupedCharts',
+    value: function getGroupedCharts() {
+      var _this2 = this;
+
+      return Apex._chartInstances.filter(function (ch) {
+        if (ch.group) {
+          return true;
+        }
+      }).map(function (ch) {
+        return _this2.w.config.chart.group === ch.group ? ch.chart : _this2;
+      });
+    }
+
+    /**
+     * Allows users to append Data to series.
+     *
+     * @param {array} newData - New data in the same format as series
+     */
+
+  }, {
+    key: 'appendData',
+    value: function appendData(newData) {
+      var overwriteInitialSeries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+      var me = this;
+
+      me.w.globals.dataChanged = true;
+
+      me.series.getPreviousPaths();
+
+      var newSeries = me.w.config.series.slice();
+
+      for (var i = 0; i < newSeries.length; i++) {
+        if (typeof newData[i] !== 'undefined') {
+          for (var j = 0; j < newData[i].data.length; j++) {
+            newSeries[i].data.push(newData[i].data[j]);
+          }
+        }
+      }
+      me.w.config.series = newSeries;
+      if (overwriteInitialSeries) {
+        me.w.globals.initialSeries = JSON.parse(JSON.stringify(me.w.config.series));
+      }
+
+      return this.update();
+    }
+  }, {
+    key: 'update',
+    value: function update(options) {
+      var _this3 = this;
+
+      return new _promisePolyfill2.default(function (resolve, reject) {
+        _this3.clear();
+
+        var graphData = _this3.create(_this3.w.config.series, options);
+        if (!graphData) return resolve(_this3);
+        _this3.mount(graphData).then(function () {
+          if (typeof _this3.w.config.chart.events.updated === 'function') {
+            _this3.w.config.chart.events.updated(_this3, _this3.w);
+          }
+          _this3.fireEvent('updated', [_this3, _this3.w]);
+
+          _this3.w.globals.isDirty = true;
+
+          resolve(_this3);
+        }).catch(function (e) {
+          reject(e);
+        });
+      });
+    }
+  }, {
+    key: 'forceXAxisUpdate',
+    value: function forceXAxisUpdate(options) {
+      var w = this.w;
+      if (typeof options.xaxis.min !== 'undefined') {
+        w.config.xaxis.min = options.xaxis.min;
+        w.globals.lastXAxis.min = options.xaxis.min;
+      }
+      if (typeof options.xaxis.max !== 'undefined') {
+        w.config.xaxis.max = options.xaxis.max;
+        w.globals.lastXAxis.max = options.xaxis.max;
+      }
+    }
+
+    /**
+     * This function reverts the yaxis and xaxis min/max values to what it was when the chart was defined.
+     * This function fixes an important bug where a user might load a new series after zooming in/out of previous series which resulted in wrong min/max
+     * Also, this should never be called internally on zoom/pan - the reset should only happen when user calls the updateSeries() function externally
+     */
+
+  }, {
+    key: 'revertDefaultAxisMinMax',
+    value: function revertDefaultAxisMinMax() {
+      var w = this.w;
+
+      w.config.xaxis.min = w.globals.lastXAxis.min;
+      w.config.xaxis.max = w.globals.lastXAxis.max;
+
+      w.config.yaxis.map(function (yaxe, index) {
+        if (w.globals.zoomed) {
+          // if user has zoomed, and this function is called
+          // then we need to get the lastAxis min and max
+          if (typeof w.globals.lastYAxis[index] !== 'undefined') {
+            yaxe.min = w.globals.lastYAxis[index].min;
+            yaxe.max = w.globals.lastYAxis[index].max;
+          }
+        }
+      });
+    }
+  }, {
+    key: 'clear',
+    value: function clear() {
+      if (this.zoomPanSelection) {
+        this.zoomPanSelection.destroy();
+      }
+      if (this.toolbar) {
+        this.toolbar.destroy();
+      }
+
+      this.animations = null;
+      this.annotations = null;
+      this.core = null;
+      this.grid = null;
+      this.series = null;
+      this.responsive = null;
+      this.theme = null;
+      this.formatters = null;
+      this.titleSubtitle = null;
+      this.legend = null;
+      this.dimensions = null;
+      this.options = null;
+      this.crosshairs = null;
+      this.zoomPanSelection = null;
+      this.toolbar = null;
+      this.w.globals.tooltip = null;
+      this.clearDomElements();
+    }
+  }, {
+    key: 'killSVG',
+    value: function killSVG(draw) {
+      return new _promisePolyfill2.default(function (resolve, reject) {
+        draw.each(function (i, children) {
+          this.removeClass('*');
+          this.off();
+          this.stop();
+        }, true);
+        draw.ungroup();
+        draw.clear();
+        resolve('done');
+      });
+    }
+  }, {
+    key: 'clearDomElements',
+    value: function clearDomElements() {
+      var domEls = this.w.globals.dom;
+
+      if (this.el !== null) {
+        // remove all child elements - resetting the whole chart
+        while (this.el.firstChild) {
+          this.el.removeChild(this.el.firstChild);
+        }
+      }
+
+      this.killSVG(domEls.Paper);
+      domEls.Paper.remove();
+
+      domEls.elWrap = null;
+      domEls.elGraphical = null;
+      domEls.elLegendWrap = null;
+      domEls.baseEl = null;
+      domEls.elGridRect = null;
+      domEls.elGridRectMask = null;
+      domEls.elGridRectMarkerMask = null;
+      domEls.elDefs = null;
+    }
+
+    /**
+     * Destroy the chart instance by removing all elements which also clean up event listeners on those elements.
+     */
+
+  }, {
+    key: 'destroy',
+    value: function destroy() {
+      this.clear();
+
+      // remove the chart's instance from the global Apex._chartInstances
+      var chartID = this.w.config.chart.id;
+      if (chartID) {
+        Apex._chartInstances.forEach(function (c, i) {
+          if (c.id === chartID) {
+            Apex._chartInstances.splice(i, 1);
+          }
+        });
+      }
+      window.removeEventListener('resize', this.windowResizeHandler);
+
+      window.removeResizeListener(this.el.parentNode, this.parentResizeCallback.bind(this));
+    }
+
+    /**
+     * Allows the user to provide data attrs in the element and the chart will render automatically when this method is called by searching for the elements containing 'data-apexcharts' attribute
+     */
+
+  }, {
+    key: 'toggleSeries',
+    value: function toggleSeries(seriesName) {
+      var targetElement = this.series.getSeriesByName(seriesName);
+      var seriesCnt = parseInt(targetElement.getAttribute('data:realIndex'));
+      var isHidden = targetElement.classList.contains('apexcharts-series-collapsed');
+      this.legend.toggleDataSeries(seriesCnt, isHidden);
+    }
+  }, {
+    key: 'resetToggleSeries',
+    value: function resetToggleSeries() {
+      this.legend.resetToggleDataSeries();
+    }
+  }, {
+    key: 'setupEventHandlers',
+    value: function setupEventHandlers() {
+      var w = this.w;
+      var me = this;
+
+      var clickableArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass);
+
+      var eventList = ['mousedown', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend'];
+      eventList.forEach(function (event) {
+        clickableArea.addEventListener(event, function (e) {
+          if (e.type === 'mousedown' && e.which === 1) {
+            // todo - provide a mousedown event too
+          } else if (e.type === 'mouseup' && e.which === 1 || e.type === 'touchend') {
+            if (typeof w.config.chart.events.click === 'function') {
+              w.config.chart.events.click(e, me, w);
+            }
+            me.fireEvent('click', [e, me, w]);
+          }
+        }, { capture: false, passive: true });
+      });
+
+      eventList.forEach(function (event) {
+        document.addEventListener(event, function (e) {
+          w.globals.clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+          w.globals.clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY;
+        });
+      });
+
+      this.core.setupBrushHandler();
+    }
+  }, {
+    key: 'addXaxisAnnotation',
+    value: function addXaxisAnnotation(opts) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+
+      var me = this;
+      if (context) {
+        me = context;
+      }
+      me.annotations.addXaxisAnnotationExternal(opts, pushToMemory, me);
+    }
+  }, {
+    key: 'addYaxisAnnotation',
+    value: function addYaxisAnnotation(opts) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+
+      var me = this;
+      if (context) {
+        me = context;
+      }
+      me.annotations.addYaxisAnnotationExternal(opts, pushToMemory, me);
+    }
+  }, {
+    key: 'addPointAnnotation',
+    value: function addPointAnnotation(opts) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+
+      var me = this;
+      if (context) {
+        me = context;
+      }
+      me.annotations.addPointAnnotationExternal(opts, pushToMemory, me);
+    }
+  }, {
+    key: 'clearAnnotations',
+    value: function clearAnnotations() {
+      var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+
+      var me = this;
+      if (context) {
+        me = context;
+      }
+      me.annotations.clearAnnotations(me);
+    }
+
+    // This method is never used internally and will be only called externally on the chart instance.
+    // Hence, we need to keep all these elements in memory when the chart gets updated and redraw again
+
+  }, {
+    key: 'addText',
+    value: function addText(options) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+
+      var me = this;
+      if (context) {
+        me = context;
+      }
+
+      me.annotations.addText(options, pushToMemory, me);
+    }
+  }, {
+    key: 'getChartArea',
+    value: function getChartArea() {
+      var el = this.w.globals.dom.baseEl.querySelector('.apexcharts-inner');
+
+      return el;
+    }
+  }, {
+    key: 'getSeriesTotalXRange',
+    value: function getSeriesTotalXRange(minX, maxX) {
+      return this.coreUtils.getSeriesTotalsXRange(minX, maxX);
+    }
+  }, {
+    key: 'getHighestValueInSeries',
+    value: function getHighestValueInSeries() {
+      var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+
+      var range = new _Range2.default(this.ctx);
+      var minYmaxY = range.getMinYMaxY(seriesIndex);
+
+      return minYmaxY.highestY;
+    }
+  }, {
+    key: 'getLowestValueInSeries',
+    value: function getLowestValueInSeries() {
+      var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+
+      var range = new _Range2.default(this.ctx);
+      var minYmaxY = range.getMinYMaxY(seriesIndex);
+
+      return minYmaxY.lowestY;
+    }
+  }, {
+    key: 'getSeriesTotal',
+    value: function getSeriesTotal() {
+      return this.w.globals.seriesTotals;
+    }
+  }, {
+    key: 'setLocale',
+    value: function setLocale(localeName) {
+      this.setCurrentLocaleValues(localeName);
+    }
+  }, {
+    key: 'setCurrentLocaleValues',
+    value: function setCurrentLocaleValues(localeName) {
+      var locales = this.w.config.chart.locales;
+
+      // check if user has specified locales in global Apex variable
+      // if yes - then extend those with local chart's locale
+      if (window.Apex.chart && window.Apex.chart.locales && window.Apex.chart.locales.length > 0) {
+        locales = this.w.config.chart.locales.concat(window.Apex.chart.locales);
+      }
+
+      // find the locale from the array of locales which user has set (either by chart.defaultLocale or by calling setLocale() method.)
+      var selectedLocale = locales.filter(function (c) {
+        return c.name === localeName;
+      })[0];
+
+      if (selectedLocale) {
+        // create a complete locale object by extending defaults so you don't get undefined errors.
+        var ret = _Utils2.default.extend(_en2.default, selectedLocale);
+
+        // store these locale options in global var for ease access
+        this.w.globals.locale = ret.options;
+      } else {
+        throw new Error('Wrong locale name provided. Please make sure you set the correct locale name in options');
+      }
+    }
+  }, {
+    key: 'dataURI',
+    value: function dataURI() {
+      var exp = new _Exports2.default(this.ctx);
+      return exp.dataURI();
+    }
+  }, {
+    key: 'paper',
+    value: function paper() {
+      return this.w.globals.dom.Paper;
+    }
+  }, {
+    key: 'parentResizeCallback',
+    value: function parentResizeCallback() {
+      if (this.w.globals.animationEnded) {
+        this.windowResize();
+      }
+    }
+
+    /**
+     * Handle window resize and re-draw the whole chart.
+     */
+
+  }, {
+    key: 'windowResize',
+    value: function windowResize() {
+      var _this4 = this;
+
+      clearTimeout(this.w.globals.resizeTimer);
+      this.w.globals.resizeTimer = window.setTimeout(function () {
+        _this4.w.globals.resized = true;
+        _this4.w.globals.dataChanged = false;
+
+        // we need to redraw the whole chart on window resize (with a small delay).
+        _this4.update();
+      }, 150);
+    }
+  }], [{
+    key: 'initOnLoad',
+    value: function initOnLoad() {
+      var els = document.querySelectorAll('[data-apexcharts]');
+
+      for (var i = 0; i < els.length; i++) {
+        var el = els[i];
+        var options = JSON.parse(els[i].getAttribute('data-options'));
+        var apexChart = new ApexCharts(el, options);
+        apexChart.render();
+      }
+    }
+
+    /**
+     * This static method allows users to call chart methods without necessarily from the
+     * instance of the chart in case user has assigned chartID to the targetted chart.
+     * The chartID is used for mapping the instance stored in Apex._chartInstances global variable
+     *
+     * This is helpful in cases when you don't have reference of the chart instance
+     * easily and need to call the method from anywhere.
+     * For eg, in React/Vue applications when you have many parent/child components,
+     * and need easy reference to other charts for performing dynamic operations
+     *
+     * @param {string} chartID - The unique identifier which will be used to call methods
+     * on that chart instance
+     * @param {function} fn - The method name to call
+     * @param {object} opts - The parameters which are accepted in the original method will be passed here in the same order.
+     */
+
+  }, {
+    key: 'exec',
+    value: function exec(chartID, fn) {
+      var chart = this.getChartByID(chartID);
+
+      if (!chart) return;
+
+      for (var _len = arguments.length, opts = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
+        opts[_key - 2] = arguments[_key];
+      }
+
+      switch (fn) {
+        case 'updateOptions':
+          {
+            return chart.updateOptions.apply(chart, opts);
+          }
+        case 'updateSeries':
+          {
+            return chart.updateSeries.apply(chart, opts);
+          }
+        case 'appendData':
+          {
+            return chart.appendData.apply(chart, opts);
+          }
+        case 'appendSeries':
+          {
+            return chart.appendSeries.apply(chart, opts);
+          }
+        case 'toggleSeries':
+          {
+            return chart.toggleSeries.apply(chart, opts);
+          }
+        case 'dataURI':
+          {
+            return chart.dataURI.apply(chart, opts);
+          }
+        case 'addXaxisAnnotation':
+          {
+            return chart.addXaxisAnnotation.apply(chart, opts);
+          }
+        case 'addYaxisAnnotation':
+          {
+            return chart.addYaxisAnnotation.apply(chart, opts);
+          }
+        case 'addPointAnnotation':
+          {
+            return chart.addPointAnnotation.apply(chart, opts);
+          }
+        case 'addText':
+          {
+            return chart.addText.apply(chart, opts);
+          }
+        case 'clearAnnotations':
+          {
+            return chart.clearAnnotations.apply(chart, opts);
+          }
+        case 'paper':
+          {
+            return chart.paper.apply(chart, opts);
+          }
+        case 'destroy':
+          {
+            return chart.destroy();
+          }
+      }
+    }
+  }, {
+    key: 'merge',
+    value: function merge(target, source) {
+      return _Utils2.default.extend(target, source);
+    }
+  }, {
+    key: 'getChartByID',
+    value: function getChartByID(chartID) {
+      var c = Apex._chartInstances.filter(function (ch) {
+        return ch.id === chartID;
+      })[0];
+      return c.chart;
+    }
+  }]);
+
+  return ApexCharts;
+}();
+
+exports.default = ApexCharts;
+
+/***/ }),
+/* 32 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/*
+	MIT License http://www.opensource.org/licenses/mit-license.php
+	Author Tobias Koppers @sokra
+*/
+// css base code, injected by the css-loader
+module.exports = function (useSourceMap) {
+	var list = [];
+
+	// return the list of modules as css string
+	list.toString = function toString() {
+		return this.map(function (item) {
+			var content = cssWithMappingToString(item, useSourceMap);
+			if (item[2]) {
+				return "@media " + item[2] + "{" + content + "}";
+			} else {
+				return content;
+			}
+		}).join("");
+	};
+
+	// import a list of modules into the list
+	list.i = function (modules, mediaQuery) {
+		if (typeof modules === "string") modules = [[null, modules, ""]];
+		var alreadyImportedModules = {};
+		for (var i = 0; i < this.length; i++) {
+			var id = this[i][0];
+			if (typeof id === "number") alreadyImportedModules[id] = true;
+		}
+		for (i = 0; i < modules.length; i++) {
+			var item = modules[i];
+			// skip already imported module
+			// this implementation is not 100% perfect for weird media query combinations
+			//  when a module is imported multiple times with different media queries.
+			//  I hope this will never occur (Hey this way we have smaller bundles)
+			if (typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
+				if (mediaQuery && !item[2]) {
+					item[2] = mediaQuery;
+				} else if (mediaQuery) {
+					item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
+				}
+				list.push(item);
+			}
+		}
+	};
+	return list;
+};
+
+function cssWithMappingToString(item, useSourceMap) {
+	var content = item[1] || '';
+	var cssMapping = item[3];
+	if (!cssMapping) {
+		return content;
+	}
+
+	if (useSourceMap && typeof btoa === 'function') {
+		var sourceMapping = toComment(cssMapping);
+		var sourceURLs = cssMapping.sources.map(function (source) {
+			return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';
+		});
+
+		return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
+	}
+
+	return [content].join('\n');
+}
+
+// Adapted from convert-source-map (MIT)
+function toComment(sourceMap) {
+	// eslint-disable-next-line no-undef
+	var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
+	var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;
+
+	return '/*# ' + data + ' */';
+}
+
+/***/ }),
+/* 33 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _CoreUtils = __webpack_require__(2);
+
+var _CoreUtils2 = _interopRequireDefault(_CoreUtils);
+
+var _Bar2 = __webpack_require__(8);
+
+var _Bar3 = _interopRequireDefault(_Bar2);
+
+var _Fill = __webpack_require__(4);
+
+var _Fill2 = _interopRequireDefault(_Fill);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+/**
+ * ApexCharts BarStacked Class responsible for drawing both Stacked Columns and Bars.
+ *
+ * @module BarStacked
+ * The whole calculation for stacked bar/column is different from normal bar/column,
+ * hence it makes sense to derive a new class for it extending most of the props of Parent Bar
+ **/
+
+var BarStacked = function (_Bar) {
+  _inherits(BarStacked, _Bar);
+
+  function BarStacked() {
+    _classCallCheck(this, BarStacked);
+
+    return _possibleConstructorReturn(this, (BarStacked.__proto__ || Object.getPrototypeOf(BarStacked)).apply(this, arguments));
+  }
+
+  _createClass(BarStacked, [{
+    key: 'draw',
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      this.graphics = new _Graphics2.default(this.ctx);
+      this.fill = new _Fill2.default(this.ctx);
+      this.bar = new _Bar3.default(this.ctx, this.xyRatios);
+
+      var coreUtils = new _CoreUtils2.default(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+      this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+
+      this.initVariables(series);
+
+      if (w.config.chart.stackType === '100%') {
+        series = w.globals.seriesPercent.slice();
+      }
+
+      this.series = series;
+
+      this.totalItems = 0;
+
+      this.prevY = []; // y position on chart
+      this.prevX = []; // x position on chart
+      this.prevYF = []; // y position including shapes on chart
+      this.prevXF = []; // x position including shapes on chart
+      this.prevYVal = []; // y values (series[i][j]) in columns
+      this.prevXVal = []; // x values (series[i][j]) in bars
+
+      this.xArrj = []; // xj indicates x position on graph in bars
+      this.xArrjF = []; // xjF indicates bar's x position + endingshape's positions in bars
+      this.xArrjVal = []; // x val means the actual series's y values in horizontal/bars
+      this.yArrj = []; // yj indicates y position on graph in columns
+      this.yArrjF = []; // yjF indicates bar's y position + endingshape's positions in columns
+      this.yArrjVal = []; // y val means the actual series's y values in columns
+
+      for (var sl = 0; sl < series.length; sl++) {
+        if (series[sl].length > 0) {
+          this.totalItems += series[sl].length;
+        }
+      }
+
+      var ret = this.graphics.group({
+        class: 'apexcharts-bar-series apexcharts-plot-series'
+      });
+
+      var x = 0;
+      var y = 0;
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var xDivision = void 0; // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+        var yDivision = void 0; // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+        var zeroH = void 0; // zeroH is the baseline where 0 meets y axis
+        var zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+        var xArrValues = [];
+        var yArrValues = [];
+
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;
+
+        // el to which series will be drawn
+        var elSeries = this.graphics.group({
+          class: 'apexcharts-series',
+          seriesName: _Utils2.default.escapeString(w.globals.seriesNames[realIndex]),
+
+          rel: i + 1,
+          'data:realIndex': realIndex
+        });
+
+        // eldatalabels
+        var elDataLabelsWrap = this.graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+
+        var initPositions = this.initialPositions(x, y, xDivision, yDivision, zeroH, zeroW);
+        y = initPositions.y;
+        barHeight = initPositions.barHeight;
+        yDivision = initPositions.yDivision;
+        zeroW = initPositions.zeroW;
+
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+
+        this.yArrj = [];
+        this.yArrjF = [];
+        this.yArrjVal = [];
+        this.xArrj = [];
+        this.xArrjF = [];
+        this.xArrjVal = [];
+
+        // if (!this.horizontal) {
+        // this.xArrj.push(x + barWidth / 2)
+        // }
+
+        for (var j = 0; j < w.globals.dataPoints; j++) {
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var paths = null;
+          if (this.isHorizontal) {
+            paths = this.drawBarPaths({
+              indexes: { i: i, j: j, realIndex: realIndex, bc: bc },
+              barHeight: barHeight,
+              strokeWidth: strokeWidth,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              zeroW: zeroW,
+              x: x,
+              y: y,
+              yDivision: yDivision,
+              elSeries: elSeries
+            });
+            barWidth = this.series[i][j] / this.invertedYRatio;
+          } else {
+            paths = this.drawColumnPaths({
+              indexes: { i: i, j: j, realIndex: realIndex, bc: bc },
+              x: x,
+              y: y,
+              xDivision: xDivision,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              barWidth: barWidth,
+              zeroH: zeroH,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries
+            });
+            barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+          }
+
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x;
+
+          xArrValues.push(x);
+          yArrValues.push(y);
+
+          var pathFill = this.bar.getPathFillColor(series, i, j, realIndex);
+
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            type: 'bar',
+            visibleSeries: 0
+          });
+        }
+
+        // push all x val arrays into main xArr
+        w.globals.seriesXvalues[realIndex] = xArrValues;
+        w.globals.seriesYvalues[realIndex] = yArrValues;
+
+        // push all current y values array to main PrevY Array
+        this.prevY.push(this.yArrj);
+        this.prevYF.push(this.yArrjF);
+        this.prevYVal.push(this.yArrjVal);
+        this.prevX.push(this.xArrj);
+        this.prevXF.push(this.xArrjF);
+        this.prevXVal.push(this.xArrjVal);
+
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: 'initialPositions',
+    value: function initialPositions(x, y, xDivision, yDivision, zeroH, zeroW) {
+      var w = this.w;
+
+      var barHeight = void 0,
+          barWidth = void 0;
+      if (this.isHorizontal) {
+        // height divided into equal parts
+        yDivision = w.globals.gridHeight / w.globals.dataPoints;
+        barHeight = yDivision;
+
+        barHeight = barHeight * parseInt(w.config.plotOptions.bar.barHeight) / 100;
+
+        zeroW = this.baseLineInvertedY + w.globals.padHorizontal + (this.isReversed ? w.globals.gridWidth : 0) - (this.isReversed ? this.baseLineInvertedY * 2 : 0);
+
+        // initial y position is half of barHeight * half of number of Bars
+        y = (yDivision - barHeight) / 2;
+      } else {
+        // width divided into equal parts
+        xDivision = w.globals.gridWidth / w.globals.dataPoints;
+
+        barWidth = xDivision;
+
+        if (w.globals.isXNumeric) {
+          xDivision = w.globals.minXDiff / this.xRatio;
+          barWidth = xDivision * parseInt(this.barOptions.columnWidth) / 100;
+        } else {
+          barWidth = barWidth * parseInt(w.config.plotOptions.bar.columnWidth) / 100;
+        }
+
+        zeroH = this.baseLineY[this.yaxisIndex] + (this.isReversed ? w.globals.gridHeight : 0) - (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0);
+
+        // initial x position is one third of barWidth
+        x = w.globals.padHorizontal + (xDivision - barWidth) / 2;
+      }
+      return {
+        x: x,
+        y: y,
+        yDivision: yDivision,
+        xDivision: xDivision,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        zeroH: zeroH,
+        zeroW: zeroW
+      };
+    }
+  }, {
+    key: 'drawBarPaths',
+    value: function drawBarPaths(_ref) {
+      var indexes = _ref.indexes,
+          barHeight = _ref.barHeight,
+          strokeWidth = _ref.strokeWidth,
+          pathTo = _ref.pathTo,
+          pathFrom = _ref.pathFrom,
+          zeroW = _ref.zeroW,
+          x = _ref.x,
+          y = _ref.y,
+          yDivision = _ref.yDivision,
+          elSeries = _ref.elSeries;
+
+      var w = this.w;
+      var barYPosition = y;
+      var barXPosition = void 0;
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+
+      var prevBarW = 0;
+      for (var k = 0; k < this.prevXF.length; k++) {
+        prevBarW = prevBarW + this.prevXF[k][j];
+      }
+
+      if (i > 0) {
+        var bXP = zeroW;
+
+        if (this.prevXVal[i - 1][j] < 0) {
+          if (this.series[i][j] >= 0) {
+            bXP = this.prevX[i - 1][j] + prevBarW - (this.isReversed ? prevBarW : 0) * 2;
+          } else {
+            bXP = this.prevX[i - 1][j];
+          }
+        } else if (this.prevXVal[i - 1][j] >= 0) {
+          if (this.series[i][j] >= 0) {
+            bXP = this.prevX[i - 1][j];
+          } else {
+            bXP = this.prevX[i - 1][j] - prevBarW + (this.isReversed ? prevBarW : 0) * 2;
+          }
+        }
+
+        barXPosition = bXP;
+      } else {
+        // the first series will not have prevX values
+        barXPosition = zeroW;
+      }
+
+      if (this.series[i][j] === null) {
+        x = barXPosition;
+      } else {
+        x = barXPosition + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2;
+      }
+
+      var endingShapeOpts = {
+        barHeight: barHeight,
+        strokeWidth: strokeWidth,
+        invertedYRatio: this.invertedYRatio,
+        barYPosition: barYPosition,
+        x: x
+      };
+      var endingShape = this.bar.barEndingShape(w, endingShapeOpts, this.series, i, j);
+
+      if (this.series.length > 1 && i !== this.endingShapeOnSeriesNumber) {
+        // revert back to flat shape if not last series
+        endingShape.path = this.graphics.line(endingShape.newX, barYPosition + barHeight - strokeWidth);
+      }
+
+      this.xArrj.push(endingShape.newX);
+      this.xArrjF.push(Math.abs(barXPosition - endingShape.newX));
+      this.xArrjVal.push(this.series[i][j]);
+
+      pathTo = this.graphics.move(barXPosition, barYPosition);
+      pathFrom = this.graphics.move(barXPosition, barYPosition);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.bar.getPathFrom(realIndex, j, false);
+      }
+
+      pathTo = pathTo + this.graphics.line(endingShape.newX, barYPosition) + endingShape.path + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition);
+      pathFrom = pathFrom + this.graphics.line(barXPosition, barYPosition) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition);
+
+      if (w.config.plotOptions.bar.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= w.config.plotOptions.bar.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+
+        var bcolor = w.config.plotOptions.bar.colors.backgroundBarColors[bc];
+        var rect = this.graphics.drawRect(0, barYPosition, w.globals.gridWidth, barHeight, 0, bcolor, w.config.plotOptions.bar.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+
+      y = y + yDivision;
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: 'drawColumnPaths',
+    value: function drawColumnPaths(_ref2) {
+      var indexes = _ref2.indexes,
+          x = _ref2.x,
+          y = _ref2.y,
+          xDivision = _ref2.xDivision,
+          pathTo = _ref2.pathTo,
+          pathFrom = _ref2.pathFrom,
+          barWidth = _ref2.barWidth,
+          zeroH = _ref2.zeroH,
+          strokeWidth = _ref2.strokeWidth,
+          elSeries = _ref2.elSeries;
+
+      var w = this.w;
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+
+      if (w.globals.isXNumeric) {
+        var seriesVal = w.globals.seriesX[i][j];
+        if (!seriesVal) seriesVal = 0;
+        x = (seriesVal - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x;
+      var barYPosition = void 0;
+
+      var prevBarH = 0;
+      for (var k = 0; k < this.prevYF.length; k++) {
+        prevBarH = prevBarH + this.prevYF[k][j];
+      }
+
+      if (i > 0 && !w.globals.isXNumeric || i > 0 && w.globals.isXNumeric && w.globals.seriesX[i - 1][j] === w.globals.seriesX[i][j]) {
+        var bYP = void 0;
+        var prevYValue = this.prevY[i - 1][j];
+
+        if (this.prevYVal[i - 1][j] < 0) {
+          if (this.series[i][j] >= 0) {
+            bYP = prevYValue - prevBarH + (this.isReversed ? prevBarH : 0) * 2;
+          } else {
+            bYP = prevYValue;
+          }
+        } else {
+          if (this.series[i][j] >= 0) {
+            bYP = prevYValue;
+          } else {
+            bYP = prevYValue + prevBarH - (this.isReversed ? prevBarH : 0) * 2;
+          }
+        }
+
+        barYPosition = bYP;
+      } else {
+        // the first series will not have prevY values, also if the prev index's series X doesn't matches the current index's series X, then start from zero
+        barYPosition = w.globals.gridHeight - zeroH;
+      }
+
+      y = barYPosition - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2;
+
+      var endingShapeOpts = {
+        barWidth: barWidth,
+        strokeWidth: strokeWidth,
+        yRatio: this.yRatio[this.yaxisIndex],
+        barXPosition: barXPosition,
+        y: y
+      };
+      var endingShape = this.bar.barEndingShape(w, endingShapeOpts, this.series, i, j);
+
+      this.yArrj.push(endingShape.newY);
+      this.yArrjF.push(Math.abs(barYPosition - endingShape.newY));
+      this.yArrjVal.push(this.series[i][j]);
+
+      pathTo = this.graphics.move(barXPosition, barYPosition);
+      pathFrom = this.graphics.move(barXPosition, barYPosition);
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.bar.getPathFrom(realIndex, j, false);
+      }
+
+      pathTo = pathTo + this.graphics.line(barXPosition, endingShape.newY) + endingShape.path + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition - strokeWidth / 2, barYPosition);
+      pathFrom = pathFrom + this.graphics.line(barXPosition, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition - strokeWidth / 2, barYPosition);
+
+      if (w.config.plotOptions.bar.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= w.config.plotOptions.bar.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+        var bcolor = w.config.plotOptions.bar.colors.backgroundBarColors[bc];
+        var rect = this.graphics.drawRect(barXPosition, 0, barWidth, w.globals.gridHeight, 0, bcolor, w.config.plotOptions.bar.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+
+      x = x + xDivision;
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: w.globals.isXNumeric ? x - xDivision : x,
+        y: y
+      };
+    }
+
+    /*
+     * When user clicks on legends, the collapsed series will be filled with [0,0,0,...,0]
+     * We need to make sure, that the last series is not [0,0,0,...,0]
+     * as we need to draw shapes on the last series (for stacked bars/columns only)
+     * Hence, we are collecting all inner arrays in series which has [0,0,0...,0]
+     **/
+
+  }, {
+    key: 'checkZeroSeries',
+    value: function checkZeroSeries(_ref3) {
+      var series = _ref3.series;
+
+      var w = this.w;
+      for (var zs = 0; zs < series.length; zs++) {
+        var total = 0;
+        for (var zsj = 0; zsj < series[w.globals.maxValsInArrayIndex].length; zsj++) {
+          total += series[zs][zsj];
+        }
+        if (total === 0) {
+          this.zeroSerieses.push(zs);
+        }
+      }
+
+      // After getting all zeroserieses, we need to ensure whether endingshapeonSeries is not in that zeroseries array
+      for (var s = series.length - 1; s >= 0; s--) {
+        if (this.zeroSerieses.indexOf(s) > -1 && s === this.endingShapeOnSeriesNumber) {
+          this.endingShapeOnSeriesNumber -= 1;
+        }
+      }
+    }
+  }]);
+
+  return BarStacked;
+}(_Bar3.default);
+
+exports.default = BarStacked;
+
+/***/ }),
+/* 34 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _CoreUtils = __webpack_require__(2);
+
+var _CoreUtils2 = _interopRequireDefault(_CoreUtils);
+
+var _Bar2 = __webpack_require__(8);
+
+var _Bar3 = _interopRequireDefault(_Bar2);
+
+var _Fill = __webpack_require__(4);
+
+var _Fill2 = _interopRequireDefault(_Fill);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+/**
+ * ApexCharts CandleStick Class responsible for drawing both Stacked Columns and Bars.
+ *
+ * @module CandleStick
+ **/
+
+var CandleStick = function (_Bar) {
+  _inherits(CandleStick, _Bar);
+
+  function CandleStick() {
+    _classCallCheck(this, CandleStick);
+
+    return _possibleConstructorReturn(this, (CandleStick.__proto__ || Object.getPrototypeOf(CandleStick)).apply(this, arguments));
+  }
+
+  _createClass(CandleStick, [{
+    key: 'draw',
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+      var fill = new _Fill2.default(this.ctx);
+
+      this.candlestickOptions = this.w.config.plotOptions.candlestick;
+
+      var coreUtils = new _CoreUtils2.default(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+      this.series = series;
+      this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+
+      this.initVariables(series);
+
+      var ret = graphics.group({
+        class: 'apexcharts-candlestick-series apexcharts-plot-series'
+      });
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var x = void 0,
+            y = void 0,
+            xDivision = void 0,
+            // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+        zeroH = void 0; // zeroH is the baseline where 0 meets y axis
+
+        var yArrj = []; // hold y values of current iterating series
+        var xArrj = []; // hold x values of current iterating series
+
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;
+
+        // el to which series will be drawn
+        var elSeries = graphics.group({
+          class: 'apexcharts-series',
+          seriesName: _Utils2.default.escapeString(w.globals.seriesNames[realIndex]),
+          rel: i + 1,
+          'data:realIndex': realIndex
+        });
+
+        if (series[i].length > 0) {
+          this.visibleI = this.visibleI + 1;
+        }
+
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        var initPositions = this.initialPositions();
+
+        y = initPositions.y;
+        barHeight = initPositions.barHeight;
+
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+
+        xArrj.push(x + barWidth / 2);
+
+        // eldatalabels
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+
+        for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+          if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+            this.isNullValue = true;
+          } else {
+            this.isNullValue = false;
+          }
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var color = void 0;
+
+          var paths = this.drawCandleStickPaths({
+            indexes: {
+              i: i,
+              j: j,
+              realIndex: realIndex,
+              bc: bc
+            },
+            x: x,
+            y: y,
+            xDivision: xDivision,
+            pathTo: pathTo,
+            pathFrom: pathFrom,
+            barWidth: barWidth,
+            zeroH: zeroH,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries
+          });
+
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x;
+          color = paths.color;
+
+          // push current X
+          if (j > 0) {
+            xArrj.push(x + barWidth / 2);
+          }
+
+          yArrj.push(y);
+
+          var pathFill = fill.fillPath({
+            seriesNumber: realIndex,
+            color: color,
+            value: series[i][j]
+          });
+
+          var lineFill = this.candlestickOptions.wick.useFillColor ? color : undefined;
+
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            lineFill: lineFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            visibleSeries: this.visibleI,
+            type: 'candlestick'
+          });
+        }
+
+        // push all x val arrays into main xArr
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj;
+
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: 'drawCandleStickPaths',
+    value: function drawCandleStickPaths(_ref) {
+      var indexes = _ref.indexes,
+          x = _ref.x,
+          y = _ref.y,
+          xDivision = _ref.xDivision,
+          pathTo = _ref.pathTo,
+          pathFrom = _ref.pathFrom,
+          barWidth = _ref.barWidth,
+          zeroH = _ref.zeroH,
+          strokeWidth = _ref.strokeWidth;
+
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var i = indexes.i;
+      var j = indexes.j;
+
+      var isPositive = true;
+      var colorPos = w.config.plotOptions.candlestick.colors.upward;
+      var colorNeg = w.config.plotOptions.candlestick.colors.downward;
+
+      var yRatio = this.yRatio[this.yaxisIndex];
+      var realIndex = indexes.realIndex;
+
+      var ohlc = this.getOHLCValue(realIndex, j);
+      var l1 = zeroH;
+      var l2 = zeroH;
+
+      if (ohlc.o > ohlc.c) {
+        isPositive = false;
+      }
+
+      var y1 = Math.min(ohlc.o, ohlc.c);
+      var y2 = Math.max(ohlc.o, ohlc.c);
+
+      if (w.globals.isXNumeric) {
+        x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x + barWidth * this.visibleI;
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        y1 = zeroH;
+      } else {
+        y1 = zeroH - y1 / yRatio;
+        y2 = zeroH - y2 / yRatio;
+        l1 = zeroH - ohlc.h / yRatio;
+        l2 = zeroH - ohlc.l / yRatio;
+      }
+
+      pathTo = graphics.move(barXPosition, zeroH);
+      pathFrom = graphics.move(barXPosition, y1);
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j, true);
+      }
+
+      pathTo = graphics.move(barXPosition, y2) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth / 2, l1) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition + barWidth / 2, l2) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition, y1) + graphics.line(barXPosition, y2 - strokeWidth / 2);
+
+      pathFrom = pathFrom + graphics.move(barXPosition, y1);
+
+      if (!w.globals.isXNumeric) {
+        x = x + xDivision;
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y2,
+        barXPosition: barXPosition,
+        color: isPositive ? colorPos : colorNeg
+      };
+    }
+  }, {
+    key: 'getOHLCValue',
+    value: function getOHLCValue(i, j) {
+      var w = this.w;
+      return {
+        o: w.globals.seriesCandleO[i][j],
+        h: w.globals.seriesCandleH[i][j],
+        l: w.globals.seriesCandleL[i][j],
+        c: w.globals.seriesCandleC[i][j]
+      };
+    }
+  }]);
+
+  return CandleStick;
+}(_Bar3.default);
+
+exports.default = CandleStick;
+
+/***/ }),
+/* 35 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _DataLabels = __webpack_require__(9);
+
+var _DataLabels2 = _interopRequireDefault(_DataLabels);
+
+var _Animations = __webpack_require__(5);
+
+var _Animations2 = _interopRequireDefault(_Animations);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _Filters = __webpack_require__(3);
+
+var _Filters2 = _interopRequireDefault(_Filters);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts HeatMap Class.
+ * @module HeatMap
+ **/
+
+var HeatMap = function () {
+  function HeatMap(ctx, xyRatios) {
+    _classCallCheck(this, HeatMap);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    this.xRatio = xyRatios.xRatio;
+    this.yRatio = xyRatios.yRatio;
+
+    this.negRange = false;
+
+    this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation;
+
+    this.rectRadius = this.w.config.plotOptions.heatmap.radius;
+    this.strokeWidth = this.w.config.stroke.width;
+  }
+
+  _createClass(HeatMap, [{
+    key: 'draw',
+    value: function draw(series) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var ret = graphics.group({
+        class: 'apexcharts-heatmap'
+      });
+
+      ret.attr('clip-path', 'url(#gridRectMask' + w.globals.cuid + ')');
+
+      // width divided into equal parts
+      var xDivision = w.globals.gridWidth / w.globals.dataPoints;
+      var yDivision = w.globals.gridHeight / w.globals.series.length;
+
+      var y1 = 0;
+      var rev = false;
+
+      this.checkColorRange();
+
+      var heatSeries = series.slice();
+      if (w.config.yaxis[0].reversed) {
+        rev = true;
+        heatSeries.reverse();
+      }
+
+      for (var i = rev ? 0 : heatSeries.length - 1; rev ? i < heatSeries.length : i >= 0; rev ? i++ : i--) {
+        // el to which series will be drawn
+        var elSeries = graphics.group({
+          class: 'apexcharts-series apexcharts-heatmap-series',
+          seriesName: _Utils2.default.escapeString(w.globals.seriesNames[i]),
+          rel: i + 1,
+          'data:realIndex': i
+        });
+
+        if (w.config.chart.dropShadow.enabled) {
+          var shadow = w.config.chart.dropShadow;
+          var filters = new _Filters2.default(this.ctx);
+          filters.dropShadow(elSeries, shadow, i);
+        }
+
+        var x1 = 0;
+
+        for (var j = 0; j < heatSeries[i].length; j++) {
+          var colorShadePercent = 1;
+
+          var heatColorProps = this.determineHeatColor(i, j);
+
+          if (w.globals.hasNegs || this.negRange) {
+            var shadeIntensity = w.config.plotOptions.heatmap.shadeIntensity;
+
+            if (w.config.plotOptions.heatmap.reverseNegativeShade) {
+              if (heatColorProps.percent < 0) {
+                colorShadePercent = heatColorProps.percent / 100 * (shadeIntensity * 1.25);
+              } else {
+                colorShadePercent = (1 - heatColorProps.percent / 100) * (shadeIntensity * 1.25);
+              }
+            } else {
+              if (heatColorProps.percent < 0) {
+                colorShadePercent = 1 - (1 + heatColorProps.percent / 100) * shadeIntensity;
+              } else {
+                colorShadePercent = (1 - heatColorProps.percent / 100) * shadeIntensity;
+              }
+            }
+          } else {
+            colorShadePercent = 1 - heatColorProps.percent / 100;
+          }
+
+          var color = heatColorProps.color;
+
+          if (w.config.plotOptions.heatmap.enableShades) {
+            var utils = new _Utils2.default();
+            color = _Utils2.default.hexToRgba(utils.shadeColor(colorShadePercent, heatColorProps.color), w.config.fill.opacity);
+          }
+
+          var radius = this.rectRadius;
+
+          var rect = graphics.drawRect(x1, y1, xDivision, yDivision, radius);
+          rect.attr({
+            cx: x1,
+            cy: y1
+          });
+
+          rect.node.classList.add('apexcharts-heatmap-rect');
+          elSeries.add(rect);
+
+          rect.attr({
+            fill: color,
+            i: i,
+            index: i,
+            j: j,
+            val: heatSeries[i][j],
+            'stroke-width': this.strokeWidth,
+            stroke: w.globals.stroke.colors[0],
+            color: color
+          });
+
+          rect.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, rect));
+          rect.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, rect));
+          rect.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, rect));
+
+          if (w.config.chart.animations.enabled && !w.globals.dataChanged) {
+            var speed = 1;
+            if (!w.globals.resized) {
+              speed = w.config.chart.animations.speed;
+            }
+            this.animateHeatMap(rect, x1, y1, xDivision, yDivision, speed);
+          }
+
+          if (w.globals.dataChanged) {
+            var _speed = 1;
+            if (this.dynamicAnim.enabled && w.globals.shouldAnimate) {
+              _speed = this.dynamicAnim.speed;
+
+              var colorFrom = w.globals.previousPaths[i] && w.globals.previousPaths[i][j] && w.globals.previousPaths[i][j].color;
+
+              if (!colorFrom) colorFrom = 'rgba(255, 255, 255, 0)';
+
+              this.animateHeatColor(rect, _Utils2.default.isColorHex(colorFrom) ? colorFrom : _Utils2.default.rgb2hex(colorFrom), _Utils2.default.isColorHex(color) ? color : _Utils2.default.rgb2hex(color), _speed);
+            }
+          }
+
+          var dataLabels = this.calculateHeatmapDataLabels({
+            x: x1,
+            y: y1,
+            i: i,
+            j: j,
+            series: heatSeries,
+            rectHeight: yDivision,
+            rectWidth: xDivision
+          });
+          if (dataLabels !== null) {
+            elSeries.add(dataLabels);
+          }
+
+          x1 = x1 + xDivision;
+        }
+
+        y1 = y1 + yDivision;
+
+        ret.add(elSeries);
+      }
+
+      // adjust yaxis labels for heatmap
+      var yAxisScale = w.globals.yAxisScale[0].result.slice();
+      if (w.config.yaxis[0].reversed) {
+        yAxisScale.unshift('');
+      } else {
+        yAxisScale.push('');
+      }
+      w.globals.yAxisScale[0].result = yAxisScale;
+      var divisor = w.globals.gridHeight / w.globals.series.length;
+      w.config.yaxis[0].labels.offsetY = -(divisor / 2);
+
+      return ret;
+    }
+  }, {
+    key: 'checkColorRange',
+    value: function checkColorRange() {
+      var _this = this;
+
+      var w = this.w;
+
+      var heatmap = w.config.plotOptions.heatmap;
+
+      if (heatmap.colorScale.ranges.length > 0) {
+        heatmap.colorScale.ranges.map(function (range, index) {
+          if (range.from < 0) {
+            _this.negRange = true;
+          }
+        });
+      }
+    }
+  }, {
+    key: 'determineHeatColor',
+    value: function determineHeatColor(i, j) {
+      var w = this.w;
+
+      var val = w.globals.series[i][j];
+
+      var heatmap = w.config.plotOptions.heatmap;
+
+      var seriesNumber = heatmap.colorScale.inverse ? j : i;
+
+      var color = w.globals.colors[seriesNumber];
+      var min = Math.min.apply(Math, _toConsumableArray(w.globals.series[i]));
+      var max = Math.max.apply(Math, _toConsumableArray(w.globals.series[i]));
+
+      if (!heatmap.distributed) {
+        min = w.globals.minY;
+        max = w.globals.maxY;
+      }
+
+      if (typeof heatmap.colorScale.min !== 'undefined') {
+        min = heatmap.colorScale.min < w.globals.minY ? heatmap.colorScale.min : w.globals.minY;
+        max = heatmap.colorScale.max > w.globals.maxY ? heatmap.colorScale.max : w.globals.maxY;
+      }
+
+      var total = Math.abs(max) + Math.abs(min);
+      var percent = 100 * val / (total === 0 ? total - 0.000001 : total);
+
+      if (heatmap.colorScale.ranges.length > 0) {
+        var colorRange = heatmap.colorScale.ranges;
+        colorRange.map(function (range, index) {
+          if (val >= range.from && val <= range.to) {
+            color = range.color;
+            min = range.from;
+            max = range.to;
+            var _total = Math.abs(max) + Math.abs(min);
+            percent = 100 * val / (_total === 0 ? _total - 0.000001 : _total);
+          }
+        });
+      }
+
+      return {
+        color: color,
+        percent: percent
+      };
+    }
+  }, {
+    key: 'calculateHeatmapDataLabels',
+    value: function calculateHeatmapDataLabels(_ref) {
+      var x = _ref.x,
+          y = _ref.y,
+          i = _ref.i,
+          j = _ref.j,
+          series = _ref.series,
+          rectHeight = _ref.rectHeight,
+          rectWidth = _ref.rectWidth;
+
+      var w = this.w;
+      // let graphics = new Graphics(this.ctx)
+      var dataLabelsConfig = w.config.dataLabels;
+
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var dataLabels = new _DataLabels2.default(this.ctx);
+      var formatter = dataLabelsConfig.formatter;
+
+      var elDataLabelsWrap = null;
+
+      if (dataLabelsConfig.enabled) {
+        elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-data-labels'
+        });
+
+        var offX = dataLabelsConfig.offsetX;
+        var offY = dataLabelsConfig.offsetY;
+
+        var dataLabelsX = x + rectWidth / 2 + offX;
+        var dataLabelsY = y + rectHeight / 2 + parseInt(dataLabelsConfig.style.fontSize) / 3 + offY;
+
+        var text = formatter(w.globals.series[i][j], {
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+        dataLabels.plotDataLabelsText({
+          x: dataLabelsX,
+          y: dataLabelsY,
+          text: text,
+          i: i,
+          j: j,
+          parent: elDataLabelsWrap,
+          dataLabelsConfig: dataLabelsConfig
+        });
+      }
+
+      return elDataLabelsWrap;
+    }
+  }, {
+    key: 'animateHeatMap',
+    value: function animateHeatMap(el, x, y, width, height, speed) {
+      var _this2 = this;
+
+      var animations = new _Animations2.default(this.ctx);
+      animations.animateRect(el, {
+        x: x + width / 2,
+        y: y + height / 2,
+        width: 0,
+        height: 0
+      }, {
+        x: x,
+        y: y,
+        width: width,
+        height: height
+      }, speed, function () {
+        _this2.w.globals.animationEnded = true;
+      });
+    }
+  }, {
+    key: 'animateHeatColor',
+    value: function animateHeatColor(el, colorFrom, colorTo, speed) {
+      el.attr({
+        fill: colorFrom
+      }).animate(speed).attr({
+        fill: colorTo
+      });
+    }
+  }]);
+
+  return HeatMap;
+}();
+
+exports.default = HeatMap;
+
+/***/ }),
+/* 36 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _CoreUtils = __webpack_require__(2);
+
+var _CoreUtils2 = _interopRequireDefault(_CoreUtils);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Fill = __webpack_require__(4);
+
+var _Fill2 = _interopRequireDefault(_Fill);
+
+var _DataLabels = __webpack_require__(9);
+
+var _DataLabels2 = _interopRequireDefault(_DataLabels);
+
+var _Markers = __webpack_require__(6);
+
+var _Markers2 = _interopRequireDefault(_Markers);
+
+var _Scatter = __webpack_require__(19);
+
+var _Scatter2 = _interopRequireDefault(_Scatter);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Line Class responsible for drawing Line / Area Charts.
+ * This class is also responsible for generating values for Bubble/Scatter charts, so need to rename it to Axis Charts to avoid confusions
+ * @module Line
+ **/
+
+var Line = function () {
+  function Line(ctx, xyRatios, isPointsChart) {
+    _classCallCheck(this, Line);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    this.xyRatios = xyRatios;
+
+    this.pointsChart = !(this.w.config.chart.type !== 'bubble' && this.w.config.chart.type !== 'scatter') || isPointsChart;
+
+    this.scatter = new _Scatter2.default(this.ctx);
+
+    this.noNegatives = this.w.globals.minX === Number.MAX_VALUE;
+
+    this.yaxisIndex = 0;
+  }
+
+  _createClass(Line, [{
+    key: 'draw',
+    value: function draw(series, ptype, seriesIndex) {
+      var w = this.w;
+
+      var graphics = new _Graphics2.default(this.ctx);
+      var fill = new _Fill2.default(this.ctx);
+
+      var type = w.globals.comboCharts ? ptype : w.config.chart.type;
+
+      var ret = graphics.group({
+        class: 'apexcharts-' + type + '-series apexcharts-plot-series'
+      });
+
+      var coreUtils = new _CoreUtils2.default(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+
+      var yRatio = this.xyRatios.yRatio;
+
+      yRatio = coreUtils.getLogYRatios(yRatio);
+
+      var zRatio = this.xyRatios.zRatio;
+      var xRatio = this.xyRatios.xRatio;
+      var baseLineY = this.xyRatios.baseLineY;
+
+      // push all series in an array, so we can draw in reverse order (for stacked charts)
+      var allSeries = [];
+
+      var prevSeriesY = [];
+
+      var categoryAxisCorrection = 0;
+
+      for (var i = 0; i < series.length; i++) {
+        // width divided into equal parts
+
+        if (type === 'line' && (w.config.fill.type === 'gradient' || w.config.fill.type[i] === 'gradient')) {
+          // a small adjustment to allow gradient line to draw correctly for all same values
+          /* #fix https://github.com/apexcharts/apexcharts.js/issues/358 */
+          if (coreUtils.seriesHaveSameValues(i)) {
+            var gSeries = series[i].slice();
+            gSeries[gSeries.length - 1] = gSeries[gSeries.length - 1] + 0.000001;
+            series[i] = gSeries;
+          }
+        }
+
+        var xDivision = w.globals.gridWidth / w.globals.dataPoints;
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;
+
+        if (yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;
+
+        var yArrj = []; // hold y values of current iterating series
+        var xArrj = []; // hold x values of current iterating series
+
+        // zeroY is the 0 value in y series which can be used in negative charts
+        var zeroY = w.globals.gridHeight - baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? baseLineY[this.yaxisIndex] * 2 : 0);
+
+        var areaBottomY = zeroY;
+        if (zeroY > w.globals.gridHeight) {
+          areaBottomY = w.globals.gridHeight;
+        }
+
+        categoryAxisCorrection = xDivision / 2;
+
+        var x = w.globals.padHorizontal + categoryAxisCorrection;
+        var y = 1;
+
+        if (w.globals.isXNumeric && w.globals.seriesX.length > 0) {
+          x = (w.globals.seriesX[realIndex][0] - w.globals.minX) / xRatio;
+        }
+
+        xArrj.push(x);
+
+        var linePath = void 0,
+            areaPath = void 0,
+            pathFromLine = void 0,
+            pathFromArea = void 0;
+
+        var linePaths = [];
+        var areaPaths = [];
+
+        // el to which series will be drawn
+        var elSeries = graphics.group({
+          class: 'apexcharts-series',
+          seriesName: _Utils2.default.escapeString(w.globals.seriesNames[realIndex])
+        });
+
+        // points
+        var elPointsMain = graphics.group({
+          class: 'apexcharts-series-markers-wrap'
+        });
+
+        // eldatalabels
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+
+        this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex);
+
+        var longestSeries = series[i].length === w.globals.dataPoints;
+        elSeries.attr({
+          'data:longestSeries': longestSeries,
+          rel: i + 1,
+          'data:realIndex': realIndex
+        });
+
+        this.appendPathFrom = true;
+
+        var pX = x;
+        var pY = void 0;
+
+        var prevX = pX;
+        var prevY = zeroY; // w.globals.svgHeight;
+
+        var lineYPosition = 0;
+
+        // the first value in the current series is not null or undefined
+        var firstPrevY = this.determineFirstPrevY({
+          i: i,
+          series: series,
+          yRatio: yRatio[this.yaxisIndex],
+          zeroY: zeroY,
+          prevY: prevY,
+          prevSeriesY: prevSeriesY,
+          lineYPosition: lineYPosition
+        });
+        prevY = firstPrevY.prevY;
+
+        yArrj.push(prevY);
+        pY = prevY;
+
+        if (series[i][0] === null) {
+          // when the first value itself is null, we need to move the pointer to a location where a null value is not found
+          for (var s = 0; s < series[i].length; s++) {
+            if (series[i][s] !== null) {
+              prevX = xDivision * s;
+              prevY = zeroY - series[i][s] / yRatio[this.yaxisIndex];
+              linePath = graphics.move(prevX, prevY);
+              areaPath = graphics.move(prevX, areaBottomY);
+              break;
+            }
+          }
+        } else {
+          linePath = graphics.move(prevX, prevY);
+          areaPath = graphics.move(prevX, areaBottomY) + graphics.line(prevX, prevY);
+        }
+
+        pathFromLine = graphics.move(-1, zeroY) + graphics.line(-1, zeroY);
+        pathFromArea = graphics.move(-1, zeroY) + graphics.line(-1, zeroY);
+
+        if (w.globals.previousPaths.length > 0) {
+          var pathFrom = this.checkPreviousPaths({
+            pathFromLine: pathFromLine,
+            pathFromArea: pathFromArea,
+            realIndex: realIndex
+          });
+          pathFromLine = pathFrom.pathFromLine;
+          pathFromArea = pathFrom.pathFromArea;
+        }
+
+        var iterations = w.globals.dataPoints > 1 ? w.globals.dataPoints - 1 : w.globals.dataPoints;
+        for (var j = 0; j < iterations; j++) {
+          if (w.globals.isXNumeric) {
+            var sX = w.globals.seriesX[realIndex][j + 1];
+            if (typeof w.globals.seriesX[realIndex][j + 1] === 'undefined') {
+              /* fix #374 */
+              sX = w.globals.seriesX[realIndex][iterations - 1];
+            }
+            x = (sX - w.globals.minX) / xRatio;
+          } else {
+            x = x + xDivision;
+          }
+
+          var minY = _Utils2.default.isNumber(w.globals.minYArr[realIndex]) ? w.globals.minYArr[realIndex] : w.globals.minY;
+
+          if (w.config.chart.stacked) {
+            if (i > 0 && w.globals.collapsedSeries.length < w.config.series.length - 1) {
+              lineYPosition = prevSeriesY[i - 1][j + 1];
+            } else {
+              // the first series will not have prevY values
+              lineYPosition = zeroY;
+            }
+
+            if (typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null) {
+              y = lineYPosition - minY / yRatio[this.yaxisIndex] + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2;
+            } else {
+              y = lineYPosition - series[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2;
+            }
+          } else {
+            if (typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null) {
+              y = zeroY - minY / yRatio[this.yaxisIndex] + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2;
+            } else {
+              y = zeroY - series[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2;
+            }
+          }
+
+          // push current X
+          xArrj.push(x);
+
+          // push current Y that will be used as next series's bottom position
+          yArrj.push(y);
+
+          var calculatedPaths = this.createPaths({
+            series: series,
+            i: i,
+            j: j,
+            x: x,
+            y: y,
+            xDivision: xDivision,
+            pX: pX,
+            pY: pY,
+            areaBottomY: areaBottomY,
+            linePath: linePath,
+            areaPath: areaPath,
+            linePaths: linePaths,
+            areaPaths: areaPaths,
+            seriesIndex: seriesIndex
+          });
+
+          areaPaths = calculatedPaths.areaPaths;
+          linePaths = calculatedPaths.linePaths;
+          pX = calculatedPaths.pX;
+          pY = calculatedPaths.pY;
+          areaPath = calculatedPaths.areaPath;
+          linePath = calculatedPaths.linePath;
+
+          if (this.appendPathFrom) {
+            pathFromLine = pathFromLine + graphics.line(x, zeroY);
+            pathFromArea = pathFromArea + graphics.line(x, zeroY);
+          }
+
+          var pointsPos = this.calculatePoints({
+            series: series,
+            x: x,
+            y: y,
+            realIndex: realIndex,
+            i: i,
+            j: j,
+            prevY: prevY,
+            categoryAxisCorrection: categoryAxisCorrection,
+            xRatio: xRatio
+          });
+
+          if (!this.pointsChart) {
+            var markers = new _Markers2.default(this.ctx);
+            if (w.globals.dataPoints > 1) {
+              elPointsMain.node.classList.add('hidden');
+            }
+
+            var elPointsWrap = markers.plotChartMarkers(pointsPos, realIndex, j + 1);
+            if (elPointsWrap !== null) {
+              elPointsMain.add(elPointsWrap);
+            }
+          } else {
+            // scatter / bubble chart points creation
+            this.scatter.draw(elSeries, j, {
+              realIndex: realIndex,
+              pointsPos: pointsPos,
+              zRatio: zRatio,
+              elParent: elPointsMain
+            });
+          }
+
+          var dataLabelAlign = !series[i][j + 1] || series[i][j + 1] > series[i][j] ? 'top' : 'bottom';
+
+          var dataLabels = new _DataLabels2.default(this.ctx);
+          var drawnLabels = dataLabels.drawDataLabel(pointsPos, realIndex, j + 1, null, dataLabelAlign);
+          if (drawnLabels !== null) {
+            elDataLabelsWrap.add(drawnLabels);
+          }
+        }
+
+        // push all current y values array to main PrevY Array
+        prevSeriesY.push(yArrj);
+
+        // push all x val arrays into main xArr
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj;
+
+        // these elements will be shown after area path animation completes
+        if (!this.pointsChart) {
+          w.globals.delayedElements.push({
+            el: elPointsMain.node,
+            index: realIndex
+          });
+        }
+
+        var defaultRenderedPathOptions = {
+          i: i,
+          realIndex: realIndex,
+          animationDelay: i,
+          initialSpeed: w.config.chart.animations.speed,
+          dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+          className: 'apexcharts-' + type,
+          id: 'apexcharts-' + type
+        };
+
+        if (type === 'area') {
+          var pathFill = fill.fillPath({
+            seriesNumber: realIndex
+          });
+
+          for (var p = 0; p < areaPaths.length; p++) {
+            var renderedPath = graphics.renderPaths(_extends({}, defaultRenderedPathOptions, {
+              pathFrom: pathFromArea,
+              pathTo: areaPaths[p],
+              stroke: 'none',
+              strokeWidth: 0,
+              strokeLineCap: null,
+              fill: pathFill
+            }));
+
+            elSeries.add(renderedPath);
+          }
+        }
+
+        if (w.config.stroke.show && !this.pointsChart) {
+          var lineFill = null;
+          if (type === 'line') {
+            // fillable lines only for lineChart
+            lineFill = fill.fillPath({
+              seriesNumber: realIndex,
+              i: i
+            });
+          } else {
+            lineFill = w.globals.stroke.colors[realIndex];
+          }
+
+          for (var _p = 0; _p < linePaths.length; _p++) {
+            var _renderedPath = graphics.renderPaths(_extends({}, defaultRenderedPathOptions, {
+              pathFrom: pathFromLine,
+              pathTo: linePaths[_p],
+              stroke: lineFill,
+              strokeWidth: Array.isArray(w.config.stroke.width) ? w.config.stroke.width[realIndex] : w.config.stroke.width,
+              strokeLineCap: w.config.stroke.lineCap,
+              fill: 'none'
+            }));
+
+            elSeries.add(_renderedPath);
+          }
+        }
+
+        elSeries.add(elPointsMain);
+        elSeries.add(elDataLabelsWrap);
+
+        allSeries.push(elSeries);
+      }
+
+      for (var _s = allSeries.length; _s > 0; _s--) {
+        ret.add(allSeries[_s - 1]);
+      }
+
+      return ret;
+    }
+  }, {
+    key: 'createPaths',
+    value: function createPaths(_ref) {
+      var series = _ref.series,
+          i = _ref.i,
+          j = _ref.j,
+          x = _ref.x,
+          y = _ref.y,
+          pX = _ref.pX,
+          pY = _ref.pY,
+          xDivision = _ref.xDivision,
+          areaBottomY = _ref.areaBottomY,
+          linePath = _ref.linePath,
+          areaPath = _ref.areaPath,
+          linePaths = _ref.linePaths,
+          areaPaths = _ref.areaPaths,
+          seriesIndex = _ref.seriesIndex;
+
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var curve = w.config.stroke.curve;
+
+      if (Array.isArray(w.config.stroke.curve)) {
+        if (Array.isArray(seriesIndex)) {
+          curve = w.config.stroke.curve[seriesIndex[i]];
+        } else {
+          curve = w.config.stroke.curve[i];
+        }
+      }
+
+      // logic of smooth curve derived from chartist
+      // CREDITS: https://gionkunz.github.io/chartist-js/
+      if (curve === 'smooth') {
+        var length = (x - pX) * 0.35;
+        if (w.globals.hasNullValues) {
+          if (series[i][j] !== null) {
+            if (series[i][j + 1] !== null) {
+              linePath = graphics.move(pX, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y);
+              areaPath = graphics.move(pX + 1, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y) + graphics.line(x, areaBottomY) + graphics.line(pX, areaBottomY) + 'z';
+            } else {
+              linePath = graphics.move(pX, pY);
+              areaPath = graphics.move(pX, pY) + 'z';
+            }
+          }
+
+          linePaths.push(linePath);
+          areaPaths.push(areaPath);
+        } else {
+          linePath = linePath + graphics.curve(pX + length, pY, x - length, y, x, y);
+          areaPath = areaPath + graphics.curve(pX + length, pY, x - length, y, x, y);
+        }
+
+        pX = x;
+        pY = y;
+
+        if (j === series[i].length - 2) {
+          // last loop, close path
+          areaPath = areaPath + graphics.curve(pX, pY, x, y, x, areaBottomY) + graphics.move(x, y) + 'z';
+          if (!w.globals.hasNullValues) {
+            linePaths.push(linePath);
+            areaPaths.push(areaPath);
+          }
+        }
+      } else {
+        if (series[i][j + 1] === null) {
+          linePath = linePath + graphics.move(x, y);
+          areaPath = areaPath + graphics.line(x - xDivision, areaBottomY) + graphics.move(x, y);
+        }
+        if (series[i][j] === null) {
+          linePath = linePath + graphics.move(x, y);
+          areaPath = areaPath + graphics.move(x, areaBottomY);
+        }
+
+        if (curve === 'stepline') {
+          linePath = linePath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V');
+          areaPath = areaPath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V');
+        } else if (curve === 'straight') {
+          linePath = linePath + graphics.line(x, y);
+          areaPath = areaPath + graphics.line(x, y);
+        }
+
+        if (j === series[i].length - 2) {
+          // last loop, close path
+          areaPath = areaPath + graphics.line(x, areaBottomY) + graphics.move(x, y) + 'z';
+          linePaths.push(linePath);
+          areaPaths.push(areaPath);
+        }
+      }
+
+      return {
+        linePaths: linePaths,
+        areaPaths: areaPaths,
+        pX: pX,
+        pY: pY,
+        linePath: linePath,
+        areaPath: areaPath
+      };
+    }
+  }, {
+    key: 'calculatePoints',
+    value: function calculatePoints(_ref2) {
+      var series = _ref2.series,
+          realIndex = _ref2.realIndex,
+          x = _ref2.x,
+          y = _ref2.y,
+          i = _ref2.i,
+          j = _ref2.j,
+          prevY = _ref2.prevY,
+          categoryAxisCorrection = _ref2.categoryAxisCorrection,
+          xRatio = _ref2.xRatio;
+
+      var w = this.w;
+
+      var ptX = [];
+      var ptY = [];
+
+      if (j === 0) {
+        var xPT1st = categoryAxisCorrection + w.config.markers.offsetX;
+        // the first point for line series
+        // we need to check whether it's not a time series, because a time series may
+        // start from the middle of the x axis
+        if (w.globals.isXNumeric) {
+          xPT1st = (w.globals.seriesX[realIndex][0] - w.globals.minX) / xRatio + w.config.markers.offsetX;
+        }
+
+        // push 2 points for the first data values
+        ptX.push(xPT1st);
+        ptY.push(_Utils2.default.isNumber(series[i][0]) ? prevY + w.config.markers.offsetY : null);
+        ptX.push(x + w.config.markers.offsetX);
+        ptY.push(_Utils2.default.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null);
+      } else {
+        ptX.push(x + w.config.markers.offsetX);
+        ptY.push(_Utils2.default.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null);
+      }
+
+      var pointsPos = {
+        x: ptX,
+        y: ptY
+      };
+
+      return pointsPos;
+    }
+  }, {
+    key: 'checkPreviousPaths',
+    value: function checkPreviousPaths(_ref3) {
+      var pathFromLine = _ref3.pathFromLine,
+          pathFromArea = _ref3.pathFromArea,
+          realIndex = _ref3.realIndex;
+
+      var w = this.w;
+
+      for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+        var gpp = w.globals.previousPaths[pp];
+
+        if ((gpp.type === 'line' || gpp.type === 'area') && gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+          if (gpp.type === 'line') {
+            this.appendPathFrom = false;
+            pathFromLine = w.globals.previousPaths[pp].paths[0].d;
+          } else if (gpp.type === 'area') {
+            this.appendPathFrom = false;
+            pathFromArea = w.globals.previousPaths[pp].paths[0].d;
+
+            if (w.config.stroke.show) {
+              pathFromLine = w.globals.previousPaths[pp].paths[1].d;
+            }
+          }
+        }
+      }
+
+      return {
+        pathFromLine: pathFromLine,
+        pathFromArea: pathFromArea
+      };
+    }
+  }, {
+    key: 'determineFirstPrevY',
+    value: function determineFirstPrevY(_ref4) {
+      var i = _ref4.i,
+          series = _ref4.series,
+          yRatio = _ref4.yRatio,
+          zeroY = _ref4.zeroY,
+          prevY = _ref4.prevY,
+          prevSeriesY = _ref4.prevSeriesY,
+          lineYPosition = _ref4.lineYPosition;
+
+      var w = this.w;
+      if (typeof series[i][0] !== 'undefined') {
+        if (w.config.chart.stacked) {
+          if (i > 0) {
+            // 1st y value of previous series
+            lineYPosition = prevSeriesY[i - 1][0];
+          } else {
+            // the first series will not have prevY values
+            lineYPosition = zeroY;
+          }
+          prevY = lineYPosition - series[i][0] / yRatio + (this.isReversed ? series[i][0] / yRatio : 0) * 2;
+        } else {
+          prevY = zeroY - series[i][0] / yRatio + (this.isReversed ? series[i][0] / yRatio : 0) * 2;
+        }
+      } else {
+        // the first value in the current series is null
+        if (w.config.chart.stacked && i > 0 && typeof series[i][0] === 'undefined') {
+          // check for undefined value (undefined value will occur when we clear the series while user clicks on legend to hide serieses)
+          for (var s = i - 1; s >= 0; s--) {
+            // for loop to get to 1st previous value until we get it
+            if (series[s][0] !== null && typeof series[s][0] !== 'undefined') {
+              lineYPosition = prevSeriesY[s][0];
+              prevY = lineYPosition;
+              break;
+            }
+          }
+        }
+      }
+      return {
+        prevY: prevY,
+        lineYPosition: lineYPosition
+      };
+    }
+  }]);
+
+  return Line;
+}();
+
+exports.default = Line;
+
+/***/ }),
+/* 37 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Fill = __webpack_require__(4);
+
+var _Fill2 = _interopRequireDefault(_Fill);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Markers = __webpack_require__(6);
+
+var _Markers2 = _interopRequireDefault(_Markers);
+
+var _DataLabels = __webpack_require__(9);
+
+var _DataLabels2 = _interopRequireDefault(_DataLabels);
+
+var _Filters = __webpack_require__(3);
+
+var _Filters2 = _interopRequireDefault(_Filters);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Radar Class for Spider/Radar Charts.
+ * @module Radar
+ **/
+
+var Radar = function () {
+  function Radar(ctx) {
+    _classCallCheck(this, Radar);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    this.chartType = this.w.config.chart.type;
+
+    this.initialAnim = this.w.config.chart.animations.enabled;
+    this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+
+    this.animDur = 0;
+
+    var w = this.w;
+    this.graphics = new _Graphics2.default(this.ctx);
+
+    this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors;
+
+    this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.svgHeight - 35 : w.globals.gridWidth;
+
+    this.maxValue = this.w.globals.maxY;
+
+    this.polygons = w.config.plotOptions.radar.polygons;
+
+    this.maxLabelWidth = 20;
+
+    var longestLabel = w.globals.labels.slice().sort(function (a, b) {
+      return b.length - a.length;
+    })[0];
+    var labelWidth = this.graphics.getTextRects(longestLabel, w.config.dataLabels.style.fontSize);
+
+    this.size = this.defaultSize / 2.1 - w.config.stroke.width - w.config.chart.dropShadow.blur - labelWidth.width / 1.75;
+
+    if (w.config.plotOptions.radar.size !== undefined) {
+      this.size = w.config.plotOptions.radar.size;
+    }
+
+    this.dataRadiusOfPercent = [];
+    this.dataRadius = [];
+    this.angleArr = [];
+
+    this.yaxisLabelsTextsPos = [];
+  }
+
+  _createClass(Radar, [{
+    key: 'draw',
+    value: function draw(series) {
+      var _this = this;
+
+      var w = this.w;
+      var fill = new _Fill2.default(this.ctx);
+
+      var allSeries = [];
+
+      this.dataPointsLen = series[w.globals.maxValsInArrayIndex].length;
+      this.disAngle = Math.PI * 2 / this.dataPointsLen;
+
+      var halfW = w.globals.gridWidth / 2;
+      var halfH = w.globals.gridHeight / 2;
+      var translateX = halfW;
+      var translateY = halfH;
+
+      var ret = this.graphics.group({
+        class: 'apexcharts-radar-series',
+        'data:innerTranslateX': translateX,
+        'data:innerTranslateY': translateY - 25,
+        transform: 'translate(' + (translateX || 0) + ', ' + (translateY || 0) + ')'
+      });
+
+      var dataPointsPos = [];
+      var elPointsMain = null;
+
+      this.yaxisLabels = this.graphics.group({
+        class: 'apexcharts-yaxis'
+      });
+
+      series.forEach(function (s, i) {
+        // el to which series will be drawn
+        var elSeries = _this.graphics.group().attr({
+          class: 'apexcharts-series',
+          seriesName: _Utils2.default.escapeString(w.globals.seriesNames[i]),
+          rel: i + 1,
+          'data:realIndex': i
+        });
+
+        _this.dataRadiusOfPercent[i] = [];
+        _this.dataRadius[i] = [];
+        _this.angleArr[i] = [];
+
+        s.forEach(function (dv, j) {
+          _this.dataRadiusOfPercent[i][j] = dv / _this.maxValue;
+          _this.dataRadius[i][j] = _this.dataRadiusOfPercent[i][j] * _this.size;
+          _this.angleArr[i][j] = j * _this.disAngle;
+        });
+
+        dataPointsPos = _this.getDataPointsPos(_this.dataRadius[i], _this.angleArr[i]);
+        var paths = _this.createPaths(dataPointsPos, {
+          x: 0,
+          y: 0
+        });
+
+        // points
+        elPointsMain = _this.graphics.group({
+          class: 'apexcharts-series-markers-wrap hidden'
+        });
+
+        w.globals.delayedElements.push({
+          el: elPointsMain.node,
+          index: i
+        });
+
+        var defaultRenderedPathOptions = {
+          i: i,
+          realIndex: i,
+          animationDelay: i,
+          initialSpeed: w.config.chart.animations.speed,
+          dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+          className: 'apexcharts-radar',
+          id: 'apexcharts-radar',
+          shouldClipToGrid: false,
+          bindEventsOnPaths: false,
+          stroke: w.globals.stroke.colors[i],
+          strokeLineCap: w.config.stroke.lineCap
+        };
+
+        var pathFrom = null;
+
+        if (w.globals.previousPaths.length > 0) {
+          pathFrom = _this.getPathFrom(i);
+        }
+
+        for (var p = 0; p < paths.linePathsTo.length; p++) {
+          var renderedLinePath = _this.graphics.renderPaths(_extends({}, defaultRenderedPathOptions, {
+            pathFrom: pathFrom === null ? paths.linePathsFrom[p] : pathFrom,
+            pathTo: paths.linePathsTo[p],
+            strokeWidth: Array.isArray(w.config.stroke.width) ? w.config.stroke.width[i] : w.config.stroke.width,
+            fill: 'none',
+            drawShadow: false
+          }));
+
+          elSeries.add(renderedLinePath);
+
+          var pathFill = fill.fillPath({
+            seriesNumber: i
+          });
+
+          var renderedAreaPath = _this.graphics.renderPaths(_extends({}, defaultRenderedPathOptions, {
+            pathFrom: pathFrom === null ? paths.areaPathsFrom[p] : pathFrom,
+            pathTo: paths.areaPathsTo[p],
+            strokeWidth: 0,
+            fill: pathFill,
+            drawShadow: false
+          }));
+
+          if (w.config.chart.dropShadow.enabled) {
+            var filters = new _Filters2.default(_this.ctx);
+
+            var shadow = w.config.chart.dropShadow;
+            filters.dropShadow(renderedAreaPath, Object.assign({}, shadow, { noUserSpaceOnUse: true }), i);
+          }
+
+          elSeries.add(renderedAreaPath);
+        }
+
+        s.forEach(function (sj, j) {
+          var markers = new _Markers2.default(_this.ctx);
+
+          var opts = markers.getMarkerConfig('apexcharts-marker', i);
+          var point = _this.graphics.drawMarker(dataPointsPos[j].x, dataPointsPos[j].y, opts);
+
+          point.attr('rel', j);
+          point.attr('j', j);
+          point.attr('index', i);
+          point.node.setAttribute('default-marker-size', opts.pSize);
+
+          var elPointsWrap = _this.graphics.group({
+            class: 'apexcharts-series-markers'
+          });
+
+          if (elPointsWrap) {
+            elPointsWrap.add(point);
+          }
+
+          elPointsMain.add(elPointsWrap);
+
+          elSeries.add(elPointsMain);
+        });
+
+        allSeries.push(elSeries);
+      });
+
+      this.drawPolygons({
+        parent: ret
+      });
+
+      if (w.config.dataLabels.enabled) {
+        var dataLabels = this.drawLabels();
+        ret.add(dataLabels);
+      }
+
+      ret.add(this.yaxisLabels);
+
+      allSeries.forEach(function (elS) {
+        ret.add(elS);
+      });
+
+      return ret;
+    }
+  }, {
+    key: 'drawPolygons',
+    value: function drawPolygons(opts) {
+      var _this2 = this;
+
+      var w = this.w;
+      var parent = opts.parent;
+
+
+      var yaxisTexts = w.globals.yAxisScale[0].result.reverse();
+      var layers = yaxisTexts.length;
+
+      var radiusSizes = [];
+      var layerDis = this.size / (layers - 1);
+      for (var i = 0; i < layers; i++) {
+        radiusSizes[i] = layerDis * i;
+      }
+      radiusSizes.reverse();
+
+      var polygonStrings = [];
+      var lines = [];
+
+      radiusSizes.forEach(function (radiusSize, r) {
+        var polygon = _this2.getPolygonPos(radiusSize);
+        var string = '';
+
+        polygon.forEach(function (p, i) {
+          if (r === 0) {
+            var line = _this2.graphics.drawLine(p.x, p.y, 0, 0, Array.isArray(_this2.polygons.connectorColors) ? _this2.polygons.connectorColors[i] : _this2.polygons.connectorColors);
+
+            lines.push(line);
+          }
+
+          if (i === 0) {
+            _this2.yaxisLabelsTextsPos.push({
+              x: p.x,
+              y: p.y
+            });
+          }
+
+          string += p.x + ',' + p.y + ' ';
+        });
+
+        polygonStrings.push(string);
+      });
+
+      polygonStrings.forEach(function (p, i) {
+        var strokeColors = _this2.polygons.strokeColors;
+        var polygon = _this2.graphics.drawPolygon(p, Array.isArray(strokeColors) ? strokeColors[i] : strokeColors, w.globals.radarPolygons.fill.colors[i]);
+        parent.add(polygon);
+      });
+
+      lines.forEach(function (l) {
+        parent.add(l);
+      });
+
+      if (w.config.yaxis[0].show) {
+        this.yaxisLabelsTextsPos.forEach(function (p, i) {
+          var yText = _this2.drawYAxisText(p.x, p.y, i, yaxisTexts[i]);
+          _this2.yaxisLabels.add(yText);
+        });
+      }
+    }
+  }, {
+    key: 'drawYAxisText',
+    value: function drawYAxisText(x, y, i, text) {
+      var w = this.w;
+
+      var yaxisConfig = w.config.yaxis[0];
+      var formatter = w.globals.yLabelFormatters[0];
+
+      var yaxisLabel = this.graphics.drawText({
+        x: x + yaxisConfig.labels.offsetX,
+        y: y + yaxisConfig.labels.offsetY,
+        text: formatter(text, i),
+        textAnchor: 'middle',
+        fontSize: yaxisConfig.labels.style.fontSize,
+        fontFamily: yaxisConfig.labels.style.fontFamily,
+        foreColor: yaxisConfig.labels.style.color
+      });
+
+      return yaxisLabel;
+    }
+  }, {
+    key: 'drawLabels',
+    value: function drawLabels() {
+      var _this3 = this;
+
+      var w = this.w;
+
+      var limit = 10;
+
+      var textAnchor = 'middle';
+
+      var dataLabelsConfig = w.config.dataLabels;
+      var elDataLabelsWrap = this.graphics.group({
+        class: 'apexcharts-datalabels'
+      });
+
+      var polygonPos = this.getPolygonPos(this.size);
+
+      var currPosX = 0;
+      var currPosY = 0;
+
+      w.globals.labels.forEach(function (label, i) {
+        var formatter = dataLabelsConfig.formatter;
+        var dataLabels = new _DataLabels2.default(_this3.ctx);
+
+        if (polygonPos[i]) {
+          currPosX = polygonPos[i].x;
+          currPosY = polygonPos[i].y;
+
+          if (Math.abs(polygonPos[i].x) >= limit) {
+            if (polygonPos[i].x > 0) {
+              textAnchor = 'start';
+              currPosX += 10;
+            } else if (polygonPos[i].x < 0) {
+              textAnchor = 'end';
+              currPosX -= 10;
+            }
+          } else {
+            textAnchor = 'middle';
+          }
+          if (Math.abs(polygonPos[i].y) >= _this3.size - limit) {
+            if (polygonPos[i].y < 0) {
+              currPosY -= 10;
+            } else if (polygonPos[i].y > 0) {
+              currPosY += 10;
+            }
+          }
+
+          var text = formatter(label, {
+            seriesIndex: -1,
+            dataPointIndex: i,
+            w: w
+          });
+
+          dataLabels.plotDataLabelsText({
+            x: currPosX,
+            y: currPosY,
+            text: text,
+            textAnchor: textAnchor,
+            i: i,
+            j: i,
+            parent: elDataLabelsWrap,
+            dataLabelsConfig: dataLabelsConfig,
+            offsetCorrection: false
+          });
+        }
+      });
+
+      return elDataLabelsWrap;
+    }
+  }, {
+    key: 'createPaths',
+    value: function createPaths(pos, origin) {
+      var _this4 = this;
+
+      var linePathsTo = [];
+      var linePathsFrom = [];
+      var areaPathsTo = [];
+      var areaPathsFrom = [];
+
+      if (pos.length) {
+        linePathsFrom = [this.graphics.move(origin.x, origin.y)];
+        areaPathsFrom = [this.graphics.move(origin.x, origin.y)];
+
+        var linePathTo = this.graphics.move(pos[0].x, pos[0].y);
+        var areaPathTo = this.graphics.move(pos[0].x, pos[0].y);
+
+        pos.forEach(function (p, i) {
+          linePathTo += _this4.graphics.line(p.x, p.y);
+          areaPathTo += _this4.graphics.line(p.x, p.y);
+          if (i === pos.length - 1) {
+            linePathTo += 'Z';
+            areaPathTo += 'Z';
+          }
+        });
+
+        linePathsTo.push(linePathTo);
+        areaPathsTo.push(areaPathTo);
+      }
+
+      return {
+        linePathsFrom: linePathsFrom,
+        linePathsTo: linePathsTo,
+        areaPathsFrom: areaPathsFrom,
+        areaPathsTo: areaPathsTo
+      };
+    }
+  }, {
+    key: 'getPathFrom',
+    value: function getPathFrom(realIndex) {
+      var w = this.w;
+      var pathFrom = null;
+      for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+        var gpp = w.globals.previousPaths[pp];
+
+        if (gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+          if (typeof w.globals.previousPaths[pp].paths[0] !== 'undefined') {
+            pathFrom = w.globals.previousPaths[pp].paths[0].d;
+          }
+        }
+      }
+      return pathFrom;
+    }
+  }, {
+    key: 'getDataPointsPos',
+    value: function getDataPointsPos(dataRadiusArr, angleArr) {
+      var dataPointsLen = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.dataPointsLen;
+
+      dataRadiusArr = dataRadiusArr || [];
+      angleArr = angleArr || [];
+      var dataPointsPosArray = [];
+      for (var j = 0; j < dataPointsLen; j++) {
+        var curPointPos = {};
+        curPointPos.x = dataRadiusArr[j] * Math.sin(angleArr[j]);
+        curPointPos.y = -dataRadiusArr[j] * Math.cos(angleArr[j]);
+        dataPointsPosArray.push(curPointPos);
+      }
+      return dataPointsPosArray;
+    }
+  }, {
+    key: 'getPolygonPos',
+    value: function getPolygonPos(size) {
+      var dotsArray = [];
+      var angle = Math.PI * 2 / this.dataPointsLen;
+      for (var i = 0; i < this.dataPointsLen; i++) {
+        var curPos = {};
+        curPos.x = size * Math.sin(i * angle);
+        curPos.y = -size * Math.cos(i * angle);
+        dotsArray.push(curPos);
+      }
+      return dotsArray;
+    }
+  }]);
+
+  return Radar;
+}();
+
+exports.default = Radar;
+
+/***/ }),
+/* 38 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Pie2 = __webpack_require__(12);
+
+var _Pie3 = _interopRequireDefault(_Pie2);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _Fill = __webpack_require__(4);
+
+var _Fill2 = _interopRequireDefault(_Fill);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Filters = __webpack_require__(3);
+
+var _Filters2 = _interopRequireDefault(_Filters);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+/**
+ * ApexCharts Radial Class for drawing Circle / Semi Circle Charts.
+ * @module Radial
+ **/
+
+var Radial = function (_Pie) {
+  _inherits(Radial, _Pie);
+
+  function Radial(ctx) {
+    _classCallCheck(this, Radial);
+
+    var _this = _possibleConstructorReturn(this, (Radial.__proto__ || Object.getPrototypeOf(Radial)).call(this, ctx));
+
+    _this.ctx = ctx;
+    _this.w = ctx.w;
+    _this.animBeginArr = [0];
+    _this.animDur = 0;
+
+    var w = _this.w;
+    _this.startAngle = w.config.plotOptions.radialBar.startAngle;
+    _this.endAngle = w.config.plotOptions.radialBar.endAngle;
+
+    _this.trackStartAngle = w.config.plotOptions.radialBar.track.startAngle;
+    _this.trackEndAngle = w.config.plotOptions.radialBar.track.endAngle;
+
+    _this.radialDataLabels = w.config.plotOptions.radialBar.dataLabels;
+
+    if (!_this.trackStartAngle) _this.trackStartAngle = _this.startAngle;
+    if (!_this.trackEndAngle) _this.trackEndAngle = _this.endAngle;
+
+    if (_this.endAngle === 360) _this.endAngle = 359.99;
+
+    _this.fullAngle = 360 - w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle;
+
+    _this.margin = parseInt(w.config.plotOptions.radialBar.track.margin);
+    return _this;
+  }
+
+  _createClass(Radial, [{
+    key: 'draw',
+    value: function draw(series) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var ret = graphics.group({
+        class: 'apexcharts-radialbar'
+      });
+
+      var elSeries = graphics.group();
+
+      var centerY = this.defaultSize / 2;
+      var centerX = w.globals.gridWidth / 2;
+
+      var size = this.defaultSize / 2.05 - w.config.stroke.width - w.config.chart.dropShadow.blur;
+
+      if (w.config.plotOptions.radialBar.size !== undefined) {
+        size = w.config.plotOptions.radialBar.size;
+      }
+
+      var colorArr = w.globals.fill.colors;
+
+      if (w.config.plotOptions.radialBar.track.show) {
+        var elTracks = this.drawTracks({
+          size: size,
+          centerX: centerX,
+          centerY: centerY,
+          colorArr: colorArr,
+          series: series
+        });
+        elSeries.add(elTracks);
+      }
+
+      var elG = this.drawArcs({
+        size: size,
+        centerX: centerX,
+        centerY: centerY,
+        colorArr: colorArr,
+        series: series
+      });
+
+      elSeries.add(elG.g);
+
+      if (w.config.plotOptions.radialBar.hollow.position === 'front') {
+        elG.g.add(elG.elHollow);
+        if (elG.dataLabels) {
+          elG.g.add(elG.dataLabels);
+        }
+      }
+
+      ret.add(elSeries);
+
+      return ret;
+    }
+  }, {
+    key: 'drawTracks',
+    value: function drawTracks(opts) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var g = graphics.group();
+
+      var filters = new _Filters2.default(this.ctx);
+      var fill = new _Fill2.default(this.ctx);
+
+      var strokeWidth = this.getStrokeWidth(opts);
+
+      opts.size = opts.size - strokeWidth / 2;
+
+      for (var i = 0; i < opts.series.length; i++) {
+        var elRadialBarTrack = graphics.group({
+          class: 'apexcharts-radialbar-track apexcharts-track'
+        });
+        g.add(elRadialBarTrack);
+
+        elRadialBarTrack.attr({
+          id: 'apexcharts-track-' + i,
+          rel: i + 1
+        });
+
+        opts.size = opts.size - strokeWidth - this.margin;
+
+        var trackConfig = w.config.plotOptions.radialBar.track;
+        var pathFill = fill.fillPath({
+          seriesNumber: 0,
+          size: opts.size,
+          fillColors: Array.isArray(trackConfig.background) ? trackConfig.background[i] : trackConfig.background,
+          solid: true
+        });
+
+        var startAngle = this.trackStartAngle;
+        var endAngle = this.trackEndAngle;
+
+        if (Math.abs(endAngle) + Math.abs(startAngle) >= 360) endAngle = 360 - Math.abs(this.startAngle) - 0.1;
+
+        var elPath = graphics.drawPath({
+          d: '',
+          stroke: pathFill,
+          strokeWidth: strokeWidth * parseInt(trackConfig.strokeWidth) / 100,
+          fill: 'none',
+          strokeOpacity: trackConfig.opacity,
+          classes: 'apexcharts-radialbar-area'
+        });
+
+        if (trackConfig.dropShadow.enabled) {
+          var shadow = trackConfig.dropShadow;
+          filters.dropShadow(elPath, shadow);
+        }
+
+        elRadialBarTrack.add(elPath);
+
+        elPath.attr('id', 'apexcharts-radialbarTrack-' + i);
+
+        var pie = new _Pie3.default(this.ctx);
+        pie.animatePaths(elPath, {
+          centerX: opts.centerX,
+          centerY: opts.centerY,
+          endAngle: endAngle,
+          startAngle: startAngle,
+          size: opts.size,
+          i: i,
+          totalItems: 2,
+          animBeginArr: 0,
+          dur: 0,
+          isTrack: true,
+          easing: w.globals.easing
+        });
+      }
+
+      return g;
+    }
+  }, {
+    key: 'drawArcs',
+    value: function drawArcs(opts) {
+      var w = this.w;
+      // size, donutSize, centerX, centerY, colorArr, lineColorArr, sectorAngleArr, series
+
+      var graphics = new _Graphics2.default(this.ctx);
+      var fill = new _Fill2.default(this.ctx);
+      var filters = new _Filters2.default(this.ctx);
+      var g = graphics.group();
+
+      var strokeWidth = this.getStrokeWidth(opts);
+      opts.size = opts.size - strokeWidth / 2;
+
+      var hollowFillID = w.config.plotOptions.radialBar.hollow.background;
+      var hollowSize = opts.size - strokeWidth * opts.series.length - this.margin * opts.series.length - strokeWidth * parseInt(w.config.plotOptions.radialBar.track.strokeWidth) / 100 / 2;
+
+      var hollowRadius = hollowSize - w.config.plotOptions.radialBar.hollow.margin;
+
+      if (w.config.plotOptions.radialBar.hollow.image !== undefined) {
+        hollowFillID = this.drawHollowImage(opts, g, hollowSize, hollowFillID);
+      }
+
+      var elHollow = this.drawHollow({
+        size: hollowRadius,
+        centerX: opts.centerX,
+        centerY: opts.centerY,
+        fill: hollowFillID
+      });
+
+      if (w.config.plotOptions.radialBar.hollow.dropShadow.enabled) {
+        var shadow = w.config.plotOptions.radialBar.hollow.dropShadow;
+        filters.dropShadow(elHollow, shadow);
+      }
+
+      var shown = 1;
+      if (!this.radialDataLabels.total.show && w.globals.series.length > 1) {
+        shown = 0;
+      }
+
+      var pie = new _Pie3.default(this.ctx);
+      var dataLabels = null;
+
+      if (this.radialDataLabels.show) {
+        dataLabels = pie.renderInnerDataLabels(this.radialDataLabels, {
+          hollowSize: hollowSize,
+          centerX: opts.centerX,
+          centerY: opts.centerY,
+          opacity: shown
+        });
+      }
+
+      if (w.config.plotOptions.radialBar.hollow.position === 'back') {
+        g.add(elHollow);
+        if (dataLabels) {
+          g.add(dataLabels);
+        }
+      }
+
+      var reverseLoop = false;
+      if (w.config.plotOptions.radialBar.inverseOrder) {
+        reverseLoop = true;
+      }
+
+      for (var i = reverseLoop ? opts.series.length - 1 : 0; reverseLoop ? i >= 0 : i < opts.series.length; reverseLoop ? i-- : i++) {
+        var elRadialBarArc = graphics.group({
+          class: 'apexcharts-series apexcharts-radial-series',
+          seriesName: _Utils2.default.escapeString(w.globals.seriesNames[i])
+        });
+        g.add(elRadialBarArc);
+
+        elRadialBarArc.attr({
+          id: 'apexcharts-series-' + i,
+          rel: i + 1
+        });
+
+        this.ctx.series.addCollapsedClassToSeries(elRadialBarArc, i);
+
+        opts.size = opts.size - strokeWidth - this.margin;
+
+        var pathFill = fill.fillPath({
+          seriesNumber: i,
+          size: opts.size,
+          value: opts.series[i]
+        });
+
+        var startAngle = this.startAngle;
+        var prevStartAngle = void 0;
+
+        var totalAngle = Math.abs(w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle);
+
+        // if data exceeds 100, make it 100
+        var dataValue = _Utils2.default.negToZero(opts.series[i] > 100 ? 100 : opts.series[i]) / 100;
+
+        var endAngle = Math.round(totalAngle * dataValue) + this.startAngle;
+
+        var prevEndAngle = void 0;
+        if (w.globals.dataChanged) {
+          prevStartAngle = this.startAngle;
+          prevEndAngle = Math.round(totalAngle * _Utils2.default.negToZero(w.globals.previousPaths[i]) / 100) + prevStartAngle;
+        }
+
+        var currFullAngle = Math.abs(endAngle) + Math.abs(startAngle);
+        if (currFullAngle >= 360) {
+          endAngle = endAngle - 0.01;
+        }
+
+        var prevFullAngle = Math.abs(prevEndAngle) + Math.abs(prevStartAngle);
+        if (prevFullAngle >= 360) {
+          prevEndAngle = prevEndAngle - 0.01;
+        }
+
+        var angle = endAngle - startAngle;
+
+        var dashArray = Array.isArray(w.config.stroke.dashArray) ? w.config.stroke.dashArray[i] : w.config.stroke.dashArray;
+
+        var elPath = graphics.drawPath({
+          d: '',
+          stroke: pathFill,
+          strokeWidth: strokeWidth,
+          fill: 'none',
+          fillOpacity: w.config.fill.opacity,
+          classes: 'apexcharts-radialbar-area',
+          strokeDashArray: dashArray
+        });
+
+        _Graphics2.default.setAttrs(elPath.node, {
+          'data:angle': angle,
+          'data:value': opts.series[i]
+        });
+
+        if (w.config.chart.dropShadow.enabled) {
+          var _shadow = w.config.chart.dropShadow;
+          filters.dropShadow(elPath, _shadow, i);
+        }
+
+        this.addListeners(elPath, this.radialDataLabels);
+
+        var _pie = new _Pie3.default(this.ctx);
+
+        elRadialBarArc.add(elPath);
+
+        elPath.attr({
+          id: 'apexcharts-radialbar-slice-' + i,
+          index: 0,
+          j: i
+        });
+
+        var dur = 0;
+        if (_pie.initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+          dur = (endAngle - startAngle) / 360 * w.config.chart.animations.speed;
+
+          this.animDur = dur / (opts.series.length * 1.2) + this.animDur;
+          this.animBeginArr.push(this.animDur);
+        }
+
+        if (w.globals.dataChanged) {
+          dur = (endAngle - startAngle) / 360 * w.config.chart.animations.dynamicAnimation.speed;
+
+          this.animDur = dur / (opts.series.length * 1.2) + this.animDur;
+          this.animBeginArr.push(this.animDur);
+        }
+
+        _pie.animatePaths(elPath, {
+          centerX: opts.centerX,
+          centerY: opts.centerY,
+          endAngle: endAngle,
+          startAngle: startAngle,
+          prevEndAngle: prevEndAngle,
+          prevStartAngle: prevStartAngle,
+          size: opts.size,
+          i: i,
+          totalItems: 2,
+          animBeginArr: this.animBeginArr,
+          dur: dur,
+          shouldSetPrevPaths: true,
+          easing: w.globals.easing
+        });
+      }
+
+      return {
+        g: g,
+        elHollow: elHollow,
+        dataLabels: dataLabels
+      };
+    }
+  }, {
+    key: 'drawHollow',
+    value: function drawHollow(opts) {
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var circle = graphics.drawCircle(opts.size * 2);
+
+      circle.attr({
+        class: 'apexcharts-radialbar-hollow',
+        cx: opts.centerX,
+        cy: opts.centerY,
+        r: opts.size,
+        fill: opts.fill
+      });
+
+      return circle;
+    }
+  }, {
+    key: 'drawHollowImage',
+    value: function drawHollowImage(opts, g, hollowSize, hollowFillID) {
+      var w = this.w;
+      var fill = new _Fill2.default(this.ctx);
+
+      var randID = (Math.random() + 1).toString(36).substring(4);
+      var hollowFillImg = w.config.plotOptions.radialBar.hollow.image;
+
+      if (w.config.plotOptions.radialBar.hollow.imageClipped) {
+        fill.clippedImgArea({
+          width: hollowSize,
+          height: hollowSize,
+          image: hollowFillImg,
+          patternID: 'pattern' + w.globals.cuid + randID
+        });
+        hollowFillID = 'url(#pattern' + w.globals.cuid + randID + ')';
+      } else {
+        var imgWidth = w.config.plotOptions.radialBar.hollow.imageWidth;
+        var imgHeight = w.config.plotOptions.radialBar.hollow.imageHeight;
+        if (imgWidth === undefined && imgHeight === undefined) {
+          var image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) {
+            this.move(opts.centerX - loader.width / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - loader.height / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY);
+          });
+          g.add(image);
+        } else {
+          var _image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) {
+            this.move(opts.centerX - imgWidth / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - imgHeight / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY);
+            this.size(imgWidth, imgHeight);
+          });
+          g.add(_image);
+        }
+      }
+      return hollowFillID;
+    }
+  }, {
+    key: 'getStrokeWidth',
+    value: function getStrokeWidth(opts) {
+      var w = this.w;
+      return opts.size * (100 - parseInt(w.config.plotOptions.radialBar.hollow.size)) / 100 / (opts.series.length + 1) - this.margin;
+    }
+  }]);
+
+  return Radial;
+}(_Pie3.default);
+
+exports.default = Radial;
+
+/***/ }),
+/* 39 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Bar2 = __webpack_require__(8);
+
+var _Bar3 = _interopRequireDefault(_Bar2);
+
+var _Fill = __webpack_require__(4);
+
+var _Fill2 = _interopRequireDefault(_Fill);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+/**
+ * ApexCharts RangeBar Class responsible for drawing Range/Timeline Bars.
+ *
+ * @module RangeBar
+ **/
+
+var RangeBar = function (_Bar) {
+  _inherits(RangeBar, _Bar);
+
+  function RangeBar() {
+    _classCallCheck(this, RangeBar);
+
+    return _possibleConstructorReturn(this, (RangeBar.__proto__ || Object.getPrototypeOf(RangeBar)).apply(this, arguments));
+  }
+
+  _createClass(RangeBar, [{
+    key: 'draw',
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+      var fill = new _Fill2.default(this.ctx);
+
+      this.rangeBarOptions = this.w.config.plotOptions.rangeBar;
+
+      this.series = series;
+      this.seriesRangeStart = w.globals.seriesRangeStart;
+      this.seriesRangeEnd = w.globals.seriesRangeEnd;
+
+      this.initVariables(series);
+
+      var ret = graphics.group({
+        class: 'apexcharts-rangebar-series apexcharts-plot-series'
+      });
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var x = void 0,
+            y = void 0,
+            xDivision = void 0,
+            // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+        yDivision = void 0,
+            // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+        zeroH = void 0,
+            // zeroH is the baseline where 0 meets y axis
+        zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+        var yArrj = []; // hold y values of current iterating series
+        var xArrj = []; // hold x values of current iterating series
+
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;
+
+        // el to which series will be drawn
+        var elSeries = graphics.group({
+          class: 'apexcharts-series',
+          seriesName: _Utils2.default.escapeString(w.globals.seriesNames[realIndex]),
+          rel: i + 1,
+          'data:realIndex': realIndex
+        });
+
+        if (series[i].length > 0) {
+          this.visibleI = this.visibleI + 1;
+        }
+
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        var initPositions = this.initialPositions();
+
+        y = initPositions.y;
+        yDivision = initPositions.yDivision;
+        barHeight = initPositions.barHeight;
+        zeroW = initPositions.zeroW;
+
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+
+        xArrj.push(x + barWidth / 2);
+
+        // eldatalabels
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+
+        for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+          if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+            this.isNullValue = true;
+          } else {
+            this.isNullValue = false;
+          }
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var paths = null;
+          if (this.isHorizontal) {
+            paths = this.drawRangeBarPaths({
+              indexes: { i: i, j: j, realIndex: realIndex, bc: bc },
+              barHeight: barHeight,
+              strokeWidth: strokeWidth,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              zeroW: zeroW,
+              x: x,
+              y: y,
+              yDivision: yDivision,
+              elSeries: elSeries
+            });
+
+            barWidth = paths.barWidth;
+          } else {
+            paths = this.drawRangeColumnPaths({
+              indexes: { i: i, j: j, realIndex: realIndex, bc: bc },
+              x: x,
+              y: y,
+              xDivision: xDivision,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              barWidth: barWidth,
+              zeroH: zeroH,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries
+            });
+
+            barHeight = paths.barHeight;
+          }
+
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x;
+
+          // push current X
+          if (j > 0) {
+            xArrj.push(x + barWidth / 2);
+          }
+
+          yArrj.push(y);
+
+          var pathFill = fill.fillPath({
+            seriesNumber: realIndex
+          });
+
+          var lineFill = w.globals.stroke.colors[realIndex];
+
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            lineFill: lineFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            visibleSeries: this.visibleI,
+            type: 'rangebar'
+          });
+        }
+
+        // push all x val arrays into main xArr
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj;
+
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: 'drawRangeColumnPaths',
+    value: function drawRangeColumnPaths(_ref) {
+      var indexes = _ref.indexes,
+          x = _ref.x,
+          y = _ref.y,
+          strokeWidth = _ref.strokeWidth,
+          xDivision = _ref.xDivision,
+          pathTo = _ref.pathTo,
+          pathFrom = _ref.pathFrom,
+          barWidth = _ref.barWidth,
+          zeroH = _ref.zeroH;
+
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var i = indexes.i;
+      var j = indexes.j;
+
+      var yRatio = this.yRatio[this.yaxisIndex];
+      var realIndex = indexes.realIndex;
+
+      var range = this.getRangeValue(realIndex, j);
+
+      var y1 = Math.min(range.start, range.end);
+      var y2 = Math.max(range.start, range.end);
+
+      if (w.globals.isXNumeric) {
+        x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x + barWidth * this.visibleI;
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        y1 = zeroH;
+      } else {
+        y1 = zeroH - y1 / yRatio;
+        y2 = zeroH - y2 / yRatio;
+      }
+      var barHeight = Math.abs(y2 - y1);
+
+      pathTo = graphics.move(barXPosition, zeroH);
+      pathFrom = graphics.move(barXPosition, y1);
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j, true);
+      }
+
+      pathTo = graphics.move(barXPosition, y2) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition, y1) + graphics.line(barXPosition, y2 - strokeWidth / 2);
+
+      pathFrom = pathFrom + graphics.move(barXPosition, y1) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition, y1);
+
+      if (!w.globals.isXNumeric) {
+        x = x + xDivision;
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        barHeight: barHeight,
+        x: x,
+        y: y2,
+        barXPosition: barXPosition
+      };
+    }
+  }, {
+    key: 'drawRangeBarPaths',
+    value: function drawRangeBarPaths(_ref2) {
+      var indexes = _ref2.indexes,
+          x = _ref2.x,
+          y = _ref2.y,
+          yDivision = _ref2.yDivision,
+          pathTo = _ref2.pathTo,
+          pathFrom = _ref2.pathFrom,
+          barHeight = _ref2.barHeight,
+          zeroW = _ref2.zeroW;
+
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var i = indexes.i;
+      var j = indexes.j;
+
+      var realIndex = indexes.realIndex;
+
+      var x1 = zeroW;
+      var x2 = zeroW;
+
+      if (w.globals.isXNumeric) {
+        y = (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - barHeight;
+      }
+
+      var barYPosition = y + barHeight * this.visibleI;
+
+      if (typeof this.series[i][j] !== 'undefined' && this.series[i][j] !== null) {
+        x1 = zeroW + this.seriesRangeStart[i][j] / this.invertedYRatio;
+        x2 = zeroW + this.seriesRangeEnd[i][j] / this.invertedYRatio;
+      }
+
+      pathTo = graphics.move(zeroW, barYPosition);
+      pathFrom = graphics.move(zeroW, barYPosition);
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j);
+      }
+
+      var barWidth = Math.abs(x2 - x1);
+
+      pathTo = graphics.move(x1, barYPosition) + graphics.line(x2, barYPosition) + graphics.line(x2, barYPosition + barHeight) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition);
+
+      pathFrom = pathFrom + graphics.line(x1, barYPosition) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition);
+
+      if (!w.globals.isXNumeric) {
+        y = y + yDivision;
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        barWidth: barWidth,
+        x: x2,
+        y: y,
+        barYPosition: barYPosition
+      };
+    }
+  }, {
+    key: 'getRangeValue',
+    value: function getRangeValue(i, j) {
+      var w = this.w;
+      return {
+        start: w.globals.seriesRangeStart[i][j],
+        end: w.globals.seriesRangeEnd[i][j]
+      };
+    }
+  }]);
+
+  return RangeBar;
+}(_Bar3.default);
+
+exports.default = RangeBar;
+
+/***/ }),
+/* 40 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Options = __webpack_require__(18);
+
+var _Options2 = _interopRequireDefault(_Options);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Annotations Class for drawing lines/rects on both xaxis and yaxis.
+ *
+ * @module Annotations
+ **/
+var Annotations = function () {
+  function Annotations(ctx) {
+    _classCallCheck(this, Annotations);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.graphics = new _Graphics2.default(this.ctx);
+
+    if (this.w.globals.isBarHorizontal) {
+      this.invertAxis = true;
+    }
+
+    this.xDivision = this.w.globals.gridWidth / this.w.globals.dataPoints;
+  }
+
+  _createClass(Annotations, [{
+    key: 'drawAnnotations',
+    value: function drawAnnotations() {
+      var w = this.w;
+      if (w.globals.axisCharts) {
+        var yAnnotations = this.drawYAxisAnnotations();
+        var xAnnotations = this.drawXAxisAnnotations();
+        var pointAnnotations = this.drawPointAnnotations();
+
+        var initialAnim = w.config.chart.animations.enabled;
+
+        var annoArray = [yAnnotations, xAnnotations, pointAnnotations];
+        var annoElArray = [xAnnotations.node, yAnnotations.node, pointAnnotations.node];
+        for (var i = 0; i < 3; i++) {
+          w.globals.dom.elGraphical.add(annoArray[i]);
+          if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+            annoElArray[i].classList.add('hidden');
+          }
+          w.globals.delayedElements.push({ el: annoElArray[i], index: 0 });
+        }
+
+        // background sizes needs to be calculated after text is drawn, so calling them last
+        this.annotationsBackground();
+      }
+    }
+  }, {
+    key: 'addXaxisAnnotation',
+    value: function addXaxisAnnotation(anno, parent, index) {
+      var w = this.w;
+
+      var min = this.invertAxis ? w.globals.minY : w.globals.minX;
+      var range = this.invertAxis ? w.globals.yRange[0] : w.globals.xRange;
+
+      var x1 = (anno.x - min) / (range / w.globals.gridWidth);
+      var text = anno.label.text;
+
+      if (w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) {
+        var catIndex = w.globals.labels.indexOf(anno.x);
+        var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+
+        if (xLabel) {
+          x1 = parseFloat(xLabel.getAttribute('x'));
+        }
+      }
+
+      var strokeDashArray = anno.strokeDashArray;
+
+      if (x1 < 0 || x1 > w.globals.gridWidth) return;
+
+      if (anno.x2 === null) {
+        var line = this.graphics.drawLine(x1 + anno.offsetX, // x1
+        0 + anno.offsetY, // y1
+        x1 + anno.offsetX, // x2
+        w.globals.gridHeight + anno.offsetY, // y2
+        anno.borderColor, // lineColor
+        strokeDashArray //dashArray
+        );
+        parent.appendChild(line.node);
+      } else {
+        var x2 = (anno.x2 - min) / (range / w.globals.gridWidth);
+        if (x2 < x1) {
+          var temp = x1;
+          x1 = x2;
+          x2 = temp;
+        }
+
+        if (text) {
+          var rect = this.graphics.drawRect(x1 + anno.offsetX, // x1
+          0 + anno.offsetY, // y1
+          x2 - x1, // x2
+          w.globals.gridHeight + anno.offsetY, // y2
+          0, // radius
+          anno.fillColor, // color
+          anno.opacity, // opacity,
+          1, // strokeWidth
+          anno.borderColor, // strokeColor
+          strokeDashArray // stokeDashArray
+          );
+          parent.appendChild(rect.node);
+        }
+      }
+      var textY = anno.label.position === 'top' ? -3 : w.globals.gridHeight;
+
+      var elText = this.graphics.drawText({
+        x: x1 + anno.label.offsetX,
+        y: textY + anno.label.offsetY,
+        text: text,
+        textAnchor: anno.label.textAnchor,
+        fontSize: anno.label.style.fontSize,
+        fontFamily: anno.label.style.fontFamily,
+        foreColor: anno.label.style.color,
+        cssClass: 'apexcharts-xaxis-annotation-label ' + anno.label.style.cssClass
+      });
+
+      elText.attr({
+        rel: index
+      });
+
+      parent.appendChild(elText.node);
+
+      // after placing the annotations on svg, set any vertically placed annotations
+      this.setOrientations(anno, index);
+    }
+  }, {
+    key: 'drawXAxisAnnotations',
+    value: function drawXAxisAnnotations() {
+      var _this = this;
+
+      var w = this.w;
+
+      var elg = this.graphics.group({
+        class: 'apexcharts-xaxis-annotations'
+      });
+
+      w.config.annotations.xaxis.map(function (anno, index) {
+        _this.addXaxisAnnotation(anno, elg.node, index);
+      });
+
+      return elg;
+    }
+  }, {
+    key: 'addYaxisAnnotation',
+    value: function addYaxisAnnotation(anno, parent, index) {
+      var w = this.w;
+
+      var strokeDashArray = anno.strokeDashArray;
+
+      var y1 = void 0;
+      var y2 = void 0;
+
+      if (this.invertAxis) {
+        var catIndex = w.globals.labels.indexOf(anno.y);
+        var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+
+        if (xLabel) {
+          y1 = parseFloat(xLabel.getAttribute('y'));
+        }
+      } else {
+        y1 = w.globals.gridHeight - (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+        if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+          y1 = (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+        }
+      }
+
+      var text = anno.label.text;
+
+      if (anno.y2 === null) {
+        var line = this.graphics.drawLine(0 + anno.offsetX, // x1
+        y1 + anno.offsetY, // y1
+        w.globals.gridWidth + anno.offsetX, // x2
+        y1 + anno.offsetY, // y2
+        anno.borderColor, // lineColor
+        strokeDashArray // dashArray
+        );
+        parent.appendChild(line.node);
+      } else {
+        if (this.invertAxis) {
+          var _catIndex = w.globals.labels.indexOf(anno.y2);
+          var _xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis-texts-g text:nth-child(' + (_catIndex + 1) + ')');
+
+          if (_xLabel) {
+            y2 = parseFloat(_xLabel.getAttribute('y'));
+          }
+        } else {
+          y2 = w.globals.gridHeight - (anno.y2 - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+          if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+            y2 = (anno.y2 - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+          }
+        }
+
+        if (y2 > y1) {
+          var temp = y1;
+          y1 = y2;
+          y2 = temp;
+        }
+
+        if (text) {
+          var rect = this.graphics.drawRect(0 + anno.offsetX, // x1
+          y2 + anno.offsetY, // y1
+          w.globals.gridWidth + anno.offsetX, // x2
+          y1 - y2, // y2
+          0, // radius
+          anno.fillColor, // color
+          anno.opacity, // opacity,
+          1, // strokeWidth
+          anno.borderColor, // strokeColor
+          strokeDashArray // stokeDashArray
+          );
+          parent.appendChild(rect.node);
+        }
+      }
+      var textX = anno.label.position === 'right' ? w.globals.gridWidth : 0;
+
+      var elText = this.graphics.drawText({
+        x: textX + anno.label.offsetX,
+        y: (y2 || y1) + anno.label.offsetY - 3,
+        text: text,
+        textAnchor: anno.label.textAnchor,
+        fontSize: anno.label.style.fontSize,
+        fontFamily: anno.label.style.fontFamily,
+        foreColor: anno.label.style.color,
+        cssClass: 'apexcharts-yaxis-annotation-label ' + anno.label.style.cssClass
+      });
+
+      elText.attr({
+        rel: index
+      });
+
+      parent.appendChild(elText.node);
+    }
+  }, {
+    key: 'drawYAxisAnnotations',
+    value: function drawYAxisAnnotations() {
+      var _this2 = this;
+
+      var w = this.w;
+
+      var elg = this.graphics.group({
+        class: 'apexcharts-yaxis-annotations'
+      });
+
+      w.config.annotations.yaxis.map(function (anno, index) {
+        _this2.addYaxisAnnotation(anno, elg.node, index);
+      });
+
+      return elg;
+    }
+  }, {
+    key: 'clearAnnotations',
+    value: function clearAnnotations(ctx) {
+      var w = ctx.w;
+      var annos = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations');
+
+      annos = _Utils2.default.listToArray(annos);
+
+      annos.forEach(function (a) {
+        while (a.firstChild) {
+          a.removeChild(a.firstChild);
+        }
+      });
+    }
+  }, {
+    key: 'addPointAnnotation',
+    value: function addPointAnnotation(anno, parent, index) {
+      var w = this.w;
+
+      var x = 0;
+      var y = 0;
+      var pointY = 0;
+
+      if (this.invertAxis) {
+        console.warn('Point annotation is not supported in horizontal bar charts.');
+      }
+
+      if (typeof anno.x === 'string') {
+        var catIndex = w.globals.labels.indexOf(anno.x);
+        var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+
+        var xPos = parseFloat(xLabel.getAttribute('x'));
+
+        x = xPos;
+
+        var annoY = anno.y;
+        if (anno.y === null) {
+          annoY = w.globals.series[anno.seriesIndex][catIndex];
+        }
+        y = w.globals.gridHeight - (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+
+        pointY = w.globals.gridHeight - (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+        if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+          y = (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) + parseInt(anno.label.style.fontSize) + anno.marker.size;
+
+          pointY = (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+        }
+      } else {
+        x = (anno.x - w.globals.minX) / (w.globals.xRange / w.globals.gridWidth);
+        y = w.globals.gridHeight - (parseFloat(anno.y) - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+
+        pointY = w.globals.gridHeight - (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+        if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+          y = (parseFloat(anno.y) - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+
+          pointY = (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+        }
+      }
+
+      if (x < 0 || x > w.globals.gridWidth) return;
+
+      var optsPoints = {
+        pSize: anno.marker.size,
+        pWidth: anno.marker.strokeWidth,
+        pointFillColor: anno.marker.fillColor,
+        pointStrokeColor: anno.marker.strokeColor,
+        shape: anno.marker.shape,
+        radius: anno.marker.radius,
+        class: 'apexcharts-point-annotation-marker ' + anno.marker.cssClass
+      };
+      var point = this.graphics.drawMarker(x + anno.marker.offsetX, pointY + anno.marker.offsetY, optsPoints);
+      parent.appendChild(point.node);
+
+      var text = anno.label.text ? anno.label.text : '';
+
+      var elText = this.graphics.drawText({
+        x: x + anno.label.offsetX,
+        y: y + anno.label.offsetY,
+        text: text,
+        textAnchor: anno.label.textAnchor,
+        fontSize: anno.label.style.fontSize,
+        fontFamily: anno.label.style.fontFamily,
+        foreColor: anno.label.style.color,
+        cssClass: 'apexcharts-point-annotation-label ' + anno.label.style.cssClass
+      });
+
+      elText.attr({
+        rel: index
+      });
+
+      parent.appendChild(elText.node);
+
+      if (anno.customSVG.SVG) {
+        var g = this.graphics.group({
+          class: 'apexcharts-point-annotations-custom-svg ' + anno.customSVG.cssClass
+        });
+
+        g.attr({
+          transform: 'translate(' + (x + anno.customSVG.offsetX) + ', ' + (y + anno.customSVG.offsetY) + ')'
+        });
+
+        g.node.innerHTML = anno.customSVG.SVG;
+        parent.appendChild(g.node);
+      }
+    }
+  }, {
+    key: 'drawPointAnnotations',
+    value: function drawPointAnnotations() {
+      var _this3 = this;
+
+      var w = this.w;
+
+      var elg = this.graphics.group({
+        class: 'apexcharts-point-annotations'
+      });
+
+      w.config.annotations.points.map(function (anno, index) {
+        _this3.addPointAnnotation(anno, elg.node, index);
+      });
+
+      return elg;
+    }
+  }, {
+    key: 'setOrientations',
+    value: function setOrientations(anno) {
+      var annoIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+
+      var w = this.w;
+
+      if (anno.label.orientation === 'vertical') {
+        var i = annoIndex !== null ? annoIndex : 0;
+        var xAnno = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel=\'' + i + '\']');
+
+        if (xAnno !== null) {
+          var xAnnoCoord = xAnno.getBoundingClientRect();
+          xAnno.setAttribute('x', parseFloat(xAnno.getAttribute('x')) - xAnnoCoord.height + 4);
+
+          if (anno.label.position === 'top') {
+            xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) + xAnnoCoord.width);
+          } else {
+            xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) - xAnnoCoord.width);
+          }
+
+          var annoRotatingCenter = this.graphics.rotateAroundCenter(xAnno);
+          var x = annoRotatingCenter.x;
+          var y = annoRotatingCenter.y;
+
+          xAnno.setAttribute('transform', 'rotate(-90 ' + x + ' ' + y + ')');
+        }
+      }
+    }
+  }, {
+    key: 'addBackgroundToAnno',
+    value: function addBackgroundToAnno(annoEl, anno) {
+      var w = this.w;
+
+      if (!anno.label.text) return null;
+
+      var elGridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid').getBoundingClientRect();
+
+      var coords = annoEl.getBoundingClientRect();
+
+      var pleft = anno.label.style.padding.left;
+      var pright = anno.label.style.padding.right;
+      var ptop = anno.label.style.padding.top;
+      var pbottom = anno.label.style.padding.bottom;
+
+      if (anno.label.orientation === 'vertical') {
+        ptop = anno.label.style.padding.left;
+        pbottom = anno.label.style.padding.right;
+        pleft = anno.label.style.padding.top;
+        pright = anno.label.style.padding.bottom;
+      }
+
+      var x1 = coords.left - elGridRect.left - pleft;
+      var y1 = coords.top - elGridRect.top - ptop;
+      var elRect = this.graphics.drawRect(x1, y1, coords.width + pleft + pright, coords.height + ptop + pbottom, 0, anno.label.style.background, 1, anno.label.borderWidth, anno.label.borderColor, 0);
+
+      return elRect;
+    }
+  }, {
+    key: 'annotationsBackground',
+    value: function annotationsBackground() {
+      var _this4 = this;
+
+      var w = this.w;
+
+      var add = function add(anno, i, type) {
+        var annoLabel = w.globals.dom.baseEl.querySelector('.apexcharts-' + type + '-annotations .apexcharts-' + type + '-annotation-label[rel=\'' + i + '\']');
+
+        if (annoLabel) {
+          var parent = annoLabel.parentNode;
+          var elRect = _this4.addBackgroundToAnno(annoLabel, anno);
+
+          if (elRect) {
+            parent.insertBefore(elRect.node, annoLabel);
+          }
+        }
+      };
+
+      w.config.annotations.xaxis.map(function (anno, i) {
+        add(anno, i, 'xaxis');
+      });
+
+      w.config.annotations.yaxis.map(function (anno, i) {
+        add(anno, i, 'yaxis');
+      });
+
+      w.config.annotations.points.map(function (anno, i) {
+        add(anno, i, 'point');
+      });
+    }
+  }, {
+    key: 'addText',
+    value: function addText(params, pushToMemory, context) {
+      var x = params.x,
+          y = params.y,
+          text = params.text,
+          textAnchor = params.textAnchor,
+          _params$appendTo = params.appendTo,
+          appendTo = _params$appendTo === undefined ? '.apexcharts-inner' : _params$appendTo,
+          foreColor = params.foreColor,
+          fontSize = params.fontSize,
+          fontFamily = params.fontFamily,
+          cssClass = params.cssClass,
+          backgroundColor = params.backgroundColor,
+          borderWidth = params.borderWidth,
+          strokeDashArray = params.strokeDashArray,
+          radius = params.radius,
+          borderColor = params.borderColor,
+          _params$paddingLeft = params.paddingLeft,
+          paddingLeft = _params$paddingLeft === undefined ? 4 : _params$paddingLeft,
+          _params$paddingRight = params.paddingRight,
+          paddingRight = _params$paddingRight === undefined ? 4 : _params$paddingRight,
+          _params$paddingBottom = params.paddingBottom,
+          paddingBottom = _params$paddingBottom === undefined ? 2 : _params$paddingBottom,
+          _params$paddingTop = params.paddingTop,
+          paddingTop = _params$paddingTop === undefined ? 2 : _params$paddingTop;
+
+
+      var me = context;
+      var w = me.w;
+
+      var parentNode = w.globals.dom.baseEl.querySelector(appendTo);
+
+      var elText = this.graphics.drawText({
+        x: x,
+        y: y,
+        text: text,
+        textAnchor: textAnchor || 'start',
+        fontSize: fontSize || '12px',
+        fontFamily: fontFamily || w.config.chart.fontFamily,
+        foreColor: foreColor || w.config.chart.foreColor,
+        cssClass:  true ? cssClass : ''
+      });
+
+      parentNode.appendChild(elText.node);
+
+      var textRect = elText.bbox();
+
+      if (text) {
+        var elRect = this.graphics.drawRect(textRect.x - paddingLeft, textRect.y - paddingTop, textRect.width + paddingLeft + paddingRight, textRect.height + paddingBottom + paddingTop, radius, backgroundColor, 1, borderWidth, borderColor, strokeDashArray);
+
+        elText.before(elRect);
+      }
+
+      if (pushToMemory) {
+        w.globals.memory.methodsToExec.push({
+          context: me,
+          method: me.addText,
+          params: {
+            x: x,
+            y: y,
+            text: text,
+            textAnchor: textAnchor,
+            appendTo: appendTo,
+            foreColor: foreColor,
+            fontSize: fontSize,
+            cssClass: cssClass,
+            backgroundColor: backgroundColor,
+            borderWidth: borderWidth,
+            strokeDashArray: strokeDashArray,
+            radius: radius,
+            borderColor: borderColor,
+            paddingLeft: paddingLeft,
+            paddingRight: paddingRight,
+            paddingBottom: paddingBottom,
+            paddingTop: paddingTop
+          }
+        });
+      }
+
+      return context;
+    }
+  }, {
+    key: 'addPointAnnotationExternal',
+    value: function addPointAnnotationExternal(params, pushToMemory, context) {
+      if (typeof this.invertAxis === 'undefined') {
+        this.invertAxis = context.w.globals.isBarHorizontal;
+      }
+
+      this.addAnnotationExternal({
+        params: params,
+        pushToMemory: pushToMemory,
+        context: context,
+        type: 'point',
+        contextMethod: context.addPointAnnotation
+      });
+      return context;
+    }
+  }, {
+    key: 'addYaxisAnnotationExternal',
+    value: function addYaxisAnnotationExternal(params, pushToMemory, context) {
+      this.addAnnotationExternal({
+        params: params,
+        pushToMemory: pushToMemory,
+        context: context,
+        type: 'yaxis',
+        contextMethod: context.addYaxisAnnotation
+      });
+      return context;
+    }
+
+    // The addXaxisAnnotation method requires a parent class, and user calling this method externally on the chart instance may not specify parent, hence a different method
+
+  }, {
+    key: 'addXaxisAnnotationExternal',
+    value: function addXaxisAnnotationExternal(params, pushToMemory, context) {
+      this.addAnnotationExternal({
+        params: params,
+        pushToMemory: pushToMemory,
+        context: context,
+        type: 'xaxis',
+        contextMethod: context.addXaxisAnnotation
+      });
+      return context;
+    }
+  }, {
+    key: 'addAnnotationExternal',
+    value: function addAnnotationExternal(_ref) {
+      var params = _ref.params,
+          pushToMemory = _ref.pushToMemory,
+          context = _ref.context,
+          type = _ref.type,
+          contextMethod = _ref.contextMethod;
+
+      var me = context;
+      var w = me.w;
+      var parent = w.globals.dom.baseEl.querySelector('.apexcharts-' + type + '-annotations');
+      var index = parent.childNodes.length + 1;
+
+      var opt = new _Options2.default();
+      var axesAnno = Object.assign({}, type === 'xaxis' ? opt.xAxisAnnotation : type === 'yaxis' ? opt.yAxisAnnotation : opt.pointAnnotation);
+
+      var anno = _Utils2.default.extend(axesAnno, params);
+
+      switch (type) {
+        case 'xaxis':
+          this.addXaxisAnnotation(anno, parent, index);
+          break;
+        case 'yaxis':
+          this.addYaxisAnnotation(anno, parent, index);
+          break;
+        case 'point':
+          this.addPointAnnotation(anno, parent, index);
+          break;
+      }
+
+      // add background
+      var axesAnnoLabel = w.globals.dom.baseEl.querySelector('.apexcharts-' + type + '-annotations .apexcharts-' + type + '-annotation-label[rel=\'' + index + '\']');
+      var elRect = this.addBackgroundToAnno(axesAnnoLabel, anno);
+      if (elRect) {
+        parent.insertBefore(elRect.node, axesAnnoLabel);
+      }
+
+      if (pushToMemory) {
+        w.globals.memory.methodsToExec.push({
+          context: me,
+          method: contextMethod,
+          params: params
+        });
+      }
+
+      return context;
+    }
+  }]);
+
+  return Annotations;
+}();
+
+exports.default = Annotations;
+
+/***/ }),
+/* 41 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Config = __webpack_require__(17);
+
+var _Config2 = _interopRequireDefault(_Config);
+
+var _Globals = __webpack_require__(50);
+
+var _Globals2 = _interopRequireDefault(_Globals);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Base Class for extending user options with pre-defined ApexCharts config.
+ *
+ * @module Base
+ **/
+var Base = function () {
+  function Base(opts) {
+    _classCallCheck(this, Base);
+
+    this.opts = opts;
+  }
+
+  _createClass(Base, [{
+    key: 'init',
+    value: function init() {
+      var config = new _Config2.default(this.opts).init();
+      var globals = new _Globals2.default().init(config);
+
+      var w = {
+        config: config,
+        globals: globals
+      };
+
+      return w;
+    }
+  }]);
+
+  return Base;
+}();
+
+exports.default = Base;
+
+/***/ }),
+/* 42 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Bar = __webpack_require__(8);
+
+var _Bar2 = _interopRequireDefault(_Bar);
+
+var _BarStacked = __webpack_require__(33);
+
+var _BarStacked2 = _interopRequireDefault(_BarStacked);
+
+var _CandleStick = __webpack_require__(34);
+
+var _CandleStick2 = _interopRequireDefault(_CandleStick);
+
+var _CoreUtils = __webpack_require__(2);
+
+var _CoreUtils2 = _interopRequireDefault(_CoreUtils);
+
+var _Crosshairs = __webpack_require__(20);
+
+var _Crosshairs2 = _interopRequireDefault(_Crosshairs);
+
+var _DateTime = __webpack_require__(11);
+
+var _DateTime2 = _interopRequireDefault(_DateTime);
+
+var _HeatMap = __webpack_require__(35);
+
+var _HeatMap2 = _interopRequireDefault(_HeatMap);
+
+var _Pie = __webpack_require__(12);
+
+var _Pie2 = _interopRequireDefault(_Pie);
+
+var _Radar = __webpack_require__(37);
+
+var _Radar2 = _interopRequireDefault(_Radar);
+
+var _Radial = __webpack_require__(38);
+
+var _Radial2 = _interopRequireDefault(_Radial);
+
+var _RangeBar = __webpack_require__(39);
+
+var _RangeBar2 = _interopRequireDefault(_RangeBar);
+
+var _Line = __webpack_require__(36);
+
+var _Line2 = _interopRequireDefault(_Line);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _XAxis = __webpack_require__(15);
+
+var _XAxis2 = _interopRequireDefault(_XAxis);
+
+var _YAxis = __webpack_require__(16);
+
+var _YAxis2 = _interopRequireDefault(_YAxis);
+
+var _Range = __webpack_require__(22);
+
+var _Range2 = _interopRequireDefault(_Range);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _Scales = __webpack_require__(14);
+
+var _Scales2 = _interopRequireDefault(_Scales);
+
+var _Series = __webpack_require__(7);
+
+var _Series2 = _interopRequireDefault(_Series);
+
+var _TimeScale = __webpack_require__(46);
+
+var _TimeScale2 = _interopRequireDefault(_TimeScale);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Core Class responsible for major calculations and creating elements.
+ *
+ * @module Core
+ **/
+
+var Core = function () {
+  function Core(el, ctx) {
+    _classCallCheck(this, Core);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.el = el;
+
+    this.coreUtils = new _CoreUtils2.default(this.ctx);
+
+    this.twoDSeries = [];
+    this.threeDSeries = [];
+    this.twoDSeriesX = [];
+  }
+
+  // get data and store into appropriate vars
+
+  _createClass(Core, [{
+    key: 'setupElements',
+    value: function setupElements() {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+
+      // const graphics = new Graphics(this.ctx)
+
+      var ct = cnf.chart.type;
+      var axisChartsArrTypes = ['line', 'area', 'bar', 'rangeBar',
+      // 'rangeArea',
+      'candlestick', 'radar', 'scatter', 'bubble', 'heatmap'];
+
+      var xyChartsArrTypes = ['line', 'area', 'bar', 'rangeBar',
+      // 'rangeArea',
+      'candlestick', 'scatter', 'bubble'];
+
+      gl.axisCharts = axisChartsArrTypes.indexOf(ct) > -1;
+
+      gl.xyCharts = xyChartsArrTypes.indexOf(ct) > -1;
+
+      gl.isBarHorizontal = (cnf.chart.type === 'bar' || cnf.chart.type === 'rangeBar') && cnf.plotOptions.bar.horizontal;
+
+      gl.chartClass = '.apexcharts' + gl.cuid;
+
+      gl.dom.baseEl = this.el;
+
+      gl.dom.elWrap = document.createElement('div');
+      _Graphics2.default.setAttrs(gl.dom.elWrap, {
+        id: gl.chartClass.substring(1),
+        class: 'apexcharts-canvas ' + gl.chartClass.substring(1)
+      });
+      this.el.appendChild(gl.dom.elWrap);
+
+      gl.dom.Paper = new window.SVG.Doc(gl.dom.elWrap);
+      gl.dom.Paper.attr({
+        class: 'apexcharts-svg',
+        'xmlns:data': 'ApexChartsNS',
+        transform: 'translate(' + cnf.chart.offsetX + ', ' + cnf.chart.offsetY + ')'
+      });
+
+      gl.dom.Paper.node.style.background = cnf.chart.background;
+
+      this.setSVGDimensions();
+
+      gl.dom.elGraphical = gl.dom.Paper.group().attr({
+        class: 'apexcharts-inner apexcharts-graphical'
+      });
+
+      gl.dom.elDefs = gl.dom.Paper.defs();
+
+      gl.dom.elLegendWrap = document.createElement('div');
+      gl.dom.elLegendWrap.classList.add('apexcharts-legend');
+      gl.dom.elWrap.appendChild(gl.dom.elLegendWrap);
+
+      // gl.dom.Paper.add(gl.dom.elLegendWrap)
+      gl.dom.Paper.add(gl.dom.elGraphical);
+      gl.dom.elGraphical.add(gl.dom.elDefs);
+    }
+  }, {
+    key: 'plotChartType',
+    value: function plotChartType(ser, xyRatios) {
+      var w = this.w;
+      var cnf = w.config;
+      var gl = w.globals;
+
+      var lineSeries = {
+        series: [],
+        i: []
+      };
+      var areaSeries = {
+        series: [],
+        i: []
+      };
+      var scatterSeries = {
+        series: [],
+        i: []
+      };
+
+      var bubbleSeries = {
+        series: [],
+        i: []
+      };
+
+      var columnSeries = {
+        series: [],
+        i: []
+      };
+
+      var candlestickSeries = {
+        series: [],
+        i: []
+      };
+
+      gl.series.map(function (series, st) {
+        // if user has specified a particular type for particular series
+        if (typeof ser[st].type !== 'undefined') {
+          if (ser[st].type === 'column' || ser[st].type === 'bar') {
+            w.config.plotOptions.bar.horizontal = false; // horizontal bars not supported in mixed charts, hence forcefully set to false
+            columnSeries.series.push(series);
+            columnSeries.i.push(st);
+          } else if (ser[st].type === 'area') {
+            areaSeries.series.push(series);
+            areaSeries.i.push(st);
+          } else if (ser[st].type === 'line') {
+            lineSeries.series.push(series);
+            lineSeries.i.push(st);
+          } else if (ser[st].type === 'scatter') {
+            scatterSeries.series.push(series);
+            scatterSeries.i.push(st);
+          } else if (ser[st].type === 'bubble') {
+            bubbleSeries.series.push(series);
+            bubbleSeries.i.push(st);
+          } else if (ser[st].type === 'candlestick') {
+            candlestickSeries.series.push(series);
+            candlestickSeries.i.push(st);
+          } else {
+            // user has specified type, but it is not valid (other than line/area/column)
+            console.warn('You have specified an unrecognized chart type. Available types for this propery are line/area/column/bar/scatter/bubble');
+          }
+          gl.comboCharts = true;
+        } else {
+          lineSeries.series.push(series);
+          lineSeries.i.push(st);
+        }
+      });
+
+      var line = new _Line2.default(this.ctx, xyRatios);
+      var candlestick = new _CandleStick2.default(this.ctx, xyRatios);
+      var pie = new _Pie2.default(this.ctx);
+      var radialBar = new _Radial2.default(this.ctx);
+      var rangeBar = new _RangeBar2.default(this.ctx, xyRatios);
+      var radar = new _Radar2.default(this.ctx);
+      var elGraph = [];
+
+      if (gl.comboCharts) {
+        if (areaSeries.series.length > 0) {
+          elGraph.push(line.draw(areaSeries.series, 'area', areaSeries.i));
+        }
+        if (columnSeries.series.length > 0) {
+          if (w.config.chart.stacked) {
+            var barStacked = new _BarStacked2.default(this.ctx, xyRatios);
+            elGraph.push(barStacked.draw(columnSeries.series, columnSeries.i));
+          } else {
+            var bar = new _Bar2.default(this.ctx, xyRatios);
+            elGraph.push(bar.draw(columnSeries.series, columnSeries.i));
+          }
+        }
+        if (lineSeries.series.length > 0) {
+          elGraph.push(line.draw(lineSeries.series, 'line', lineSeries.i));
+        }
+        if (candlestickSeries.series.length > 0) {
+          elGraph.push(candlestick.draw(candlestickSeries.series, candlestickSeries.i));
+        }
+        if (scatterSeries.series.length > 0) {
+          var scatterLine = new _Line2.default(this.ctx, xyRatios, true);
+          elGraph.push(scatterLine.draw(scatterSeries.series, 'scatter', scatterSeries.i));
+        }
+        // TODO: allow bubble series in a combo chart
+        // if (bubbleSeries.series.length > 0) {
+        //   const bubbleLine = new Line(this.ctx, xyRatios, true)
+        //   elGraph.push(
+        //     bubbleLine.draw(bubbleSeries.series, 'bubble', bubbleSeries.i)
+        //   )
+        // }
+      } else {
+        switch (cnf.chart.type) {
+          case 'line':
+            elGraph = line.draw(gl.series, 'line');
+            break;
+          case 'area':
+            elGraph = line.draw(gl.series, 'area');
+            break;
+          case 'bar':
+            if (cnf.chart.stacked) {
+              var _barStacked = new _BarStacked2.default(this.ctx, xyRatios);
+              elGraph = _barStacked.draw(gl.series);
+            } else {
+              var _bar = new _Bar2.default(this.ctx, xyRatios);
+              elGraph = _bar.draw(gl.series);
+            }
+            break;
+          case 'candlestick':
+            var candleStick = new _CandleStick2.default(this.ctx, xyRatios);
+            elGraph = candleStick.draw(gl.series);
+            break;
+          case 'rangeBar':
+            elGraph = rangeBar.draw(gl.series);
+            break;
+          case 'heatmap':
+            var heatmap = new _HeatMap2.default(this.ctx, xyRatios);
+            elGraph = heatmap.draw(gl.series);
+            break;
+          case 'pie':
+          case 'donut':
+            elGraph = pie.draw(gl.series);
+            break;
+          case 'radialBar':
+            elGraph = radialBar.draw(gl.series);
+            break;
+          case 'radar':
+            elGraph = radar.draw(gl.series);
+            break;
+          default:
+            elGraph = line.draw(gl.series);
+        }
+      }
+
+      return elGraph;
+    }
+  }, {
+    key: 'setSVGDimensions',
+    value: function setSVGDimensions() {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+
+      gl.svgWidth = cnf.chart.width;
+      gl.svgHeight = cnf.chart.height;
+
+      var elDim = _Utils2.default.getDimensions(this.el);
+
+      var widthUnit = cnf.chart.width.toString().split(/[0-9]+/g).pop();
+
+      if (widthUnit === '%') {
+        if (_Utils2.default.isNumber(elDim[0])) {
+          if (elDim[0].width === 0) {
+            elDim = _Utils2.default.getDimensions(this.el.parentNode);
+          }
+
+          gl.svgWidth = elDim[0] * parseInt(cnf.chart.width) / 100;
+        }
+      } else if (widthUnit === 'px' || widthUnit === '') {
+        gl.svgWidth = parseInt(cnf.chart.width);
+      }
+
+      if (gl.svgHeight !== 'auto' && gl.svgHeight !== '') {
+        var heightUnit = cnf.chart.height.toString().split(/[0-9]+/g).pop();
+        if (heightUnit === '%') {
+          var elParentDim = _Utils2.default.getDimensions(this.el.parentNode);
+          gl.svgHeight = elParentDim[1] * parseInt(cnf.chart.height) / 100;
+        } else {
+          gl.svgHeight = parseInt(cnf.chart.height);
+        }
+      } else {
+        if (gl.axisCharts) {
+          gl.svgHeight = gl.svgWidth / 1.61;
+        } else {
+          gl.svgHeight = gl.svgWidth;
+        }
+      }
+
+      _Graphics2.default.setAttrs(gl.dom.Paper.node, {
+        width: gl.svgWidth,
+        height: gl.svgHeight
+      });
+
+      // gl.dom.Paper.node.parentNode.parentNode.style.minWidth = gl.svgWidth + "px";
+      var offsetY = cnf.chart.sparkline.enabled ? 0 : gl.axisCharts ? cnf.chart.parentHeightOffset : 0;
+
+      gl.dom.Paper.node.parentNode.parentNode.style.minHeight = gl.svgHeight + offsetY + 'px';
+
+      gl.dom.elWrap.style.width = gl.svgWidth + 'px';
+      gl.dom.elWrap.style.height = gl.svgHeight + 'px';
+    }
+  }, {
+    key: 'shiftGraphPosition',
+    value: function shiftGraphPosition() {
+      var gl = this.w.globals;
+
+      var tY = gl.translateY;
+      var tX = gl.translateX;
+
+      var scalingAttrs = {
+        transform: 'translate(' + tX + ', ' + tY + ')'
+      };
+      _Graphics2.default.setAttrs(gl.dom.elGraphical.node, scalingAttrs);
+    }
+
+    /*
+     ** All the calculations for setting range in charts will be done here
+     */
+
+  }, {
+    key: 'coreCalculations',
+    value: function coreCalculations() {
+      var range = new _Range2.default(this.ctx);
+      range.init();
+    }
+  }, {
+    key: 'resetGlobals',
+    value: function resetGlobals() {
+      var _this = this;
+
+      var gl = this.w.globals;
+      gl.series = [];
+      gl.seriesCandleO = [];
+      gl.seriesCandleH = [];
+      gl.seriesCandleL = [];
+      gl.seriesCandleC = [];
+      gl.seriesRangeStart = [];
+      gl.seriesRangeEnd = [];
+      gl.seriesPercent = [];
+      gl.seriesX = [];
+      gl.seriesZ = [];
+      gl.seriesNames = [];
+      gl.seriesTotals = [];
+      gl.stackedSeriesTotals = [];
+      gl.labels = [];
+      gl.timelineLabels = [];
+      gl.noLabelsProvided = false;
+      gl.timescaleTicks = [];
+      gl.resizeTimer = null;
+      gl.selectionResizeTimer = null;
+      gl.seriesXvalues = function () {
+        return _this.w.config.series.map(function (s) {
+          return [];
+        });
+      }();
+      gl.seriesYvalues = function () {
+        return _this.w.config.series.map(function (s) {
+          return [];
+        });
+      }();
+      gl.delayedElements = [];
+      gl.pointsArray = [];
+      gl.dataLabelsRects = [];
+      gl.isXNumeric = false;
+      gl.isDataXYZ = false;
+      gl.maxY = -Number.MAX_VALUE;
+      gl.minY = Number.MIN_VALUE;
+      gl.minYArr = [];
+      gl.maxYArr = [];
+      gl.maxX = -Number.MAX_VALUE;
+      gl.minX = Number.MAX_VALUE;
+      gl.initialmaxX = -Number.MAX_VALUE;
+      gl.initialminX = Number.MAX_VALUE;
+      gl.maxDate = 0;
+      gl.minDate = Number.MAX_VALUE;
+      gl.minZ = Number.MAX_VALUE;
+      gl.maxZ = -Number.MAX_VALUE;
+      gl.minXDiff = Number.MAX_VALUE;
+      gl.yAxisScale = [];
+      gl.xAxisScale = null;
+      gl.xAxisTicksPositions = [];
+      gl.yLabelsCoords = [];
+      gl.yTitleCoords = [];
+      gl.xRange = 0;
+      gl.yRange = [];
+      gl.zRange = 0;
+      gl.dataPoints = 0;
+    }
+  }, {
+    key: 'isMultipleY',
+    value: function isMultipleY() {
+      // user has supplied an array in yaxis property. So, turn on multipleYAxis flag
+      if (this.w.config.yaxis.constructor === Array && this.w.config.yaxis.length > 1) {
+        // first, turn off stacking if multiple y axis
+        this.w.config.chart.stacked = false;
+        this.w.globals.isMultipleYAxis = true;
+        return true;
+      }
+    }
+  }, {
+    key: 'excludeCollapsedSeriesInYAxis',
+    value: function excludeCollapsedSeriesInYAxis() {
+      var _this2 = this;
+
+      var w = this.w;
+      w.globals.ignoreYAxisIndexes = w.globals.collapsedSeries.map(function (collapsed, i) {
+        if (_this2.w.globals.isMultipleYAxis) {
+          return collapsed.index;
+        }
+      });
+    }
+  }, {
+    key: 'isMultiFormat',
+    value: function isMultiFormat() {
+      return this.isFormatXY() || this.isFormat2DArray();
+    }
+
+    // given format is [{x, y}, {x, y}]
+
+  }, {
+    key: 'isFormatXY',
+    value: function isFormatXY() {
+      var series = this.w.config.series.slice();
+
+      var sr = new _Series2.default(this.ctx);
+      this.activeSeriesIndex = sr.getActiveConfigSeriesIndex();
+
+      if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && series[this.activeSeriesIndex].data[0] !== null && typeof series[this.activeSeriesIndex].data[0].x !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null) {
+        return true;
+      }
+    }
+
+    // given format is [[x, y], [x, y]]
+
+  }, {
+    key: 'isFormat2DArray',
+    value: function isFormat2DArray() {
+      var series = this.w.config.series.slice();
+
+      var sr = new _Series2.default(this.ctx);
+      this.activeSeriesIndex = sr.getActiveConfigSeriesIndex();
+
+      if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && typeof series[this.activeSeriesIndex].data[0] !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null && series[this.activeSeriesIndex].data[0].constructor === Array) {
+        return true;
+      }
+    }
+  }, {
+    key: 'handleFormat2DArray',
+    value: function handleFormat2DArray(ser, i) {
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+
+      for (var j = 0; j < ser[i].data.length; j++) {
+        if (typeof ser[i].data[j][1] !== 'undefined') {
+          if (Array.isArray(ser[i].data[j][1]) && ser[i].data[j][1].length === 4) {
+            this.twoDSeries.push(_Utils2.default.parseNumber(ser[i].data[j][1][3]));
+          } else {
+            this.twoDSeries.push(_Utils2.default.parseNumber(ser[i].data[j][1]));
+          }
+          gl.dataFormatXNumeric = true;
+        }
+        if (cnf.xaxis.type === 'datetime') {
+          // if timestamps are provided and xaxis type is datettime,
+
+          var ts = new Date(ser[i].data[j][0]);
+          ts = new Date(ts).getTime();
+          this.twoDSeriesX.push(ts);
+        } else {
+          this.twoDSeriesX.push(ser[i].data[j][0]);
+        }
+      }
+
+      for (var _j = 0; _j < ser[i].data.length; _j++) {
+        if (typeof ser[i].data[_j][2] !== 'undefined') {
+          this.threeDSeries.push(ser[i].data[_j][2]);
+          gl.isDataXYZ = true;
+        }
+      }
+    }
+  }, {
+    key: 'handleFormatXY',
+    value: function handleFormatXY(ser, i) {
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+
+      var dt = new _DateTime2.default(this.ctx);
+
+      var activeI = i;
+      if (gl.collapsedSeriesIndices.indexOf(i) > -1) {
+        // fix #368
+        activeI = this.activeSeriesIndex;
+      }
+
+      // get series
+      for (var j = 0; j < ser[i].data.length; j++) {
+        if (typeof ser[i].data[j].y !== 'undefined') {
+          if (Array.isArray(ser[i].data[j].y)) {
+            this.twoDSeries.push(_Utils2.default.parseNumber(ser[i].data[j].y[ser[i].data[j].y.length - 1]));
+          } else {
+            this.twoDSeries.push(_Utils2.default.parseNumber(ser[i].data[j].y));
+          }
+        }
+      }
+
+      // get seriesX
+      for (var _j2 = 0; _j2 < ser[activeI].data.length; _j2++) {
+        var isXString = typeof ser[activeI].data[_j2].x === 'string';
+        var isXDate = !!dt.isValidDate(ser[activeI].data[_j2].x.toString());
+
+        if (isXString || isXDate) {
+          // user supplied '01/01/2017' or a date string (a JS date object is not supported)
+          if (isXString) {
+            if (cnf.xaxis.type === 'datetime' && !gl.isRangeData) {
+              this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x));
+            } else {
+              // a category and not a numeric x value
+              this.fallbackToCategory = true;
+              this.twoDSeriesX.push(ser[activeI].data[_j2].x);
+            }
+          } else {
+            if (cnf.xaxis.type === 'datetime') {
+              this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x.toString()));
+            } else {
+              gl.dataFormatXNumeric = true;
+              gl.isXNumeric = true;
+              this.twoDSeriesX.push(parseFloat(ser[activeI].data[_j2].x));
+            }
+          }
+        } else {
+          // a numeric value in x property
+          gl.isXNumeric = true;
+          gl.dataFormatXNumeric = true;
+          this.twoDSeriesX.push(ser[activeI].data[_j2].x);
+        }
+      }
+
+      if (ser[i].data[0] && typeof ser[i].data[0].z !== 'undefined') {
+        for (var t = 0; t < ser[i].data.length; t++) {
+          this.threeDSeries.push(ser[i].data[t].z);
+        }
+        gl.isDataXYZ = true;
+      }
+    }
+  }, {
+    key: 'handleRangeData',
+    value: function handleRangeData(ser, i) {
+      var gl = this.w.globals;
+
+      var range = {};
+      if (this.isFormat2DArray()) {
+        range = this.handleRangeDataFormat('array', ser, i);
+      } else if (this.isFormatXY()) {
+        range = this.handleRangeDataFormat('xy', ser, i);
+      }
+
+      gl.seriesRangeStart.push(range.start);
+      gl.seriesRangeEnd.push(range.end);
+
+      return range;
+    }
+  }, {
+    key: 'handleCandleStickData',
+    value: function handleCandleStickData(ser, i) {
+      var gl = this.w.globals;
+
+      var ohlc = {};
+      if (this.isFormat2DArray()) {
+        ohlc = this.handleCandleStickDataFormat('array', ser, i);
+      } else if (this.isFormatXY()) {
+        ohlc = this.handleCandleStickDataFormat('xy', ser, i);
+      }
+
+      gl.seriesCandleO.push(ohlc.o);
+      gl.seriesCandleH.push(ohlc.h);
+      gl.seriesCandleL.push(ohlc.l);
+      gl.seriesCandleC.push(ohlc.c);
+
+      return ohlc;
+    }
+  }, {
+    key: 'handleRangeDataFormat',
+    value: function handleRangeDataFormat(format, ser, i) {
+      var rangeStart = [];
+      var rangeEnd = [];
+
+      var err = 'Please provide [Start, End] values in valid format. Read more https://apexcharts.com/docs/series/#rangecharts';
+
+      var serObj = new _Series2.default(this.ctx);
+      var activeIndex = serObj.getActiveConfigSeriesIndex();
+      if (format === 'array') {
+        if (ser[activeIndex].data[0][1].length !== 2) {
+          throw new Error(err);
+        }
+        for (var j = 0; j < ser[i].data.length; j++) {
+          rangeStart.push(ser[i].data[j][1][0]);
+          rangeEnd.push(ser[i].data[j][1][1]);
+        }
+      } else if (format === 'xy') {
+        if (ser[activeIndex].data[0].y.length !== 2) {
+          throw new Error(err);
+        }
+        for (var _j3 = 0; _j3 < ser[i].data.length; _j3++) {
+          rangeStart.push(ser[i].data[_j3].y[0]);
+          rangeEnd.push(ser[i].data[_j3].y[1]);
+        }
+      }
+
+      return {
+        start: rangeStart,
+        end: rangeEnd
+      };
+    }
+  }, {
+    key: 'handleCandleStickDataFormat',
+    value: function handleCandleStickDataFormat(format, ser, i) {
+      var serO = [];
+      var serH = [];
+      var serL = [];
+      var serC = [];
+
+      var err = 'Please provide [Open, High, Low and Close] values in valid format. Read more https://apexcharts.com/docs/series/#candlestick';
+
+      if (format === 'array') {
+        if (ser[i].data[0][1].length !== 4) {
+          throw new Error(err);
+        }
+        for (var j = 0; j < ser[i].data.length; j++) {
+          serO.push(ser[i].data[j][1][0]);
+          serH.push(ser[i].data[j][1][1]);
+          serL.push(ser[i].data[j][1][2]);
+          serC.push(ser[i].data[j][1][3]);
+        }
+      } else if (format === 'xy') {
+        if (ser[i].data[0].y.length !== 4) {
+          throw new Error(err);
+        }
+        for (var _j4 = 0; _j4 < ser[i].data.length; _j4++) {
+          serO.push(ser[i].data[_j4].y[0]);
+          serH.push(ser[i].data[_j4].y[1]);
+          serL.push(ser[i].data[_j4].y[2]);
+          serC.push(ser[i].data[_j4].y[3]);
+        }
+      }
+
+      return {
+        o: serO,
+        h: serH,
+        l: serL,
+        c: serC
+      };
+    }
+  }, {
+    key: 'parseDataAxisCharts',
+    value: function parseDataAxisCharts(ser) {
+      var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.ctx;
+
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+
+      var dt = new _DateTime2.default(ctx);
+
+      for (var i = 0; i < ser.length; i++) {
+        this.twoDSeries = [];
+        this.twoDSeriesX = [];
+        this.threeDSeries = [];
+
+        if (typeof ser[i].data === 'undefined') {
+          console.error("It is a possibility that you may have not included 'data' property in series.");
+          return;
+        }
+
+        if (cnf.chart.type === 'rangeBar' || cnf.chart.type === 'rangeArea' || ser[i].type === 'rangeBar' || ser[i].type === 'rangeArea') {
+          gl.isRangeData = true;
+          this.handleRangeData(ser, i);
+        }
+
+        if (this.isMultiFormat()) {
+          if (this.isFormat2DArray()) {
+            this.handleFormat2DArray(ser, i);
+          } else if (this.isFormatXY()) {
+            this.handleFormatXY(ser, i);
+          }
+
+          if (cnf.chart.type === 'candlestick' || ser[i].type === 'candlestick') {
+            this.handleCandleStickData(ser, i);
+          }
+
+          gl.series.push(this.twoDSeries);
+          gl.labels.push(this.twoDSeriesX);
+          gl.seriesX.push(this.twoDSeriesX);
+
+          if (!this.fallbackToCategory) {
+            gl.isXNumeric = true;
+          }
+        } else {
+          if (cnf.xaxis.type === 'datetime') {
+            // user didn't supplied [{x,y}] or [[x,y]], but single array in data.
+            // Also labels/categories were supplied differently
+            gl.isXNumeric = true;
+            var dates = cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice();
+
+            for (var j = 0; j < dates.length; j++) {
+              if (typeof dates[j] === 'string') {
+                var isDate = dt.isValidDate(dates[j]);
+                if (isDate) {
+                  this.twoDSeriesX.push(dt.parseDate(dates[j]));
+                } else {
+                  throw new Error('You have provided invalid Date format. Please provide a valid JavaScript Date');
+                }
+              }
+            }
+
+            gl.seriesX.push(this.twoDSeriesX);
+          } else if (cnf.xaxis.type === 'numeric') {
+            gl.isXNumeric = true;
+            var x = cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice();
+
+            if (x.length > 0) {
+              this.twoDSeriesX = x;
+              gl.seriesX.push(this.twoDSeriesX);
+            }
+          }
+          gl.labels.push(this.twoDSeriesX);
+          var singleArray = ser[i].data.map(function (d) {
+            return _Utils2.default.parseNumber(d);
+          });
+          gl.series.push(singleArray);
+        }
+
+        gl.seriesZ.push(this.threeDSeries);
+
+        if (ser[i].name !== undefined) {
+          gl.seriesNames.push(ser[i].name);
+        } else {
+          gl.seriesNames.push('series-' + parseInt(i + 1));
+        }
+      }
+
+      return this.w;
+    }
+  }, {
+    key: 'parseDataNonAxisCharts',
+    value: function parseDataNonAxisCharts(ser) {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+
+      gl.series = ser.slice();
+      gl.seriesNames = cnf.labels.slice();
+      for (var i = 0; i < gl.series.length; i++) {
+        if (gl.seriesNames[i] === undefined) {
+          gl.seriesNames.push('series-' + (i + 1));
+        }
+      }
+
+      return this.w;
+    }
+
+    /** User possibly set string categories in xaxis.categories or labels prop
+     * Or didn't set xaxis labels at all - in which case we manually do it.
+     * If user passed series data as [[3, 2], [4, 5]] or [{ x: 3, y: 55 }],
+     * this shouldn't be called
+     * @param {array} ser - the series which user passed to the config
+     */
+
+  }, {
+    key: 'handleExternalLabelsData',
+    value: function handleExternalLabelsData(ser) {
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+
+      if (cnf.xaxis.categories.length > 0) {
+        // user provided labels in xaxis.category prop
+        gl.labels = cnf.xaxis.categories;
+      } else if (cnf.labels.length > 0) {
+        // user provided labels in labels props
+        gl.labels = cnf.labels.slice();
+      } else if (this.fallbackToCategory) {
+        // user provided labels in x prop in [{ x: 3, y: 55 }] data, and those labels are already stored in gl.labels[0], so just re-arrange the gl.labels array
+        gl.labels = gl.labels[0];
+      } else {
+        // user didn't provided any labels, fallback to 1-2-3-4-5
+        var labelArr = [];
+
+        if (gl.axisCharts) {
+          // for axis charts, we get the longest series and create labels from it
+          for (var i = 0; i < gl.series[gl.maxValsInArrayIndex].length; i++) {
+            labelArr.push(i + 1);
+          }
+
+          // create gl.seriesX as it will be used in calculations of x positions
+          for (var _i = 0; _i < ser.length; _i++) {
+            gl.seriesX.push(labelArr);
+          }
+
+          // turn on the isXNumeric flag to allow minX and maxX to function properly
+          gl.isXNumeric = true;
+        }
+
+        // no series to pull labels from, put a 0-10 series
+        // possibly, user collapsed all series. Hence we can't work with above calc
+        if (labelArr.length === 0) {
+          labelArr = [0, 10];
+          for (var _i2 = 0; _i2 < ser.length; _i2++) {
+            gl.seriesX.push(labelArr);
+          }
+        }
+
+        // Finally, pass the labelArr in gl.labels which will be printed on x-axis
+        gl.labels = labelArr;
+
+        // Turn on this global flag to indicate no labels were provided by user
+        gl.noLabelsProvided = true;
+      }
+    }
+
+    // Segregate user provided data into appropriate vars
+
+  }, {
+    key: 'parseData',
+    value: function parseData(ser) {
+      var w = this.w;
+      var cnf = w.config;
+      var gl = w.globals;
+      this.excludeCollapsedSeriesInYAxis();
+
+      // If we detected string in X prop of series, we fallback to category x-axis
+      this.fallbackToCategory = false;
+
+      this.resetGlobals();
+      this.isMultipleY();
+
+      if (gl.axisCharts) {
+        // axisCharts includes line / area / column / scatter
+        this.parseDataAxisCharts(ser);
+      } else {
+        // non-axis charts are pie / donut
+        this.parseDataNonAxisCharts(ser);
+      }
+
+      this.coreUtils.getLargestSeries();
+
+      // set Null values to 0 in all series when user hides/shows some series
+      if (cnf.chart.type === 'bar' && cnf.chart.stacked) {
+        var series = new _Series2.default(this.ctx);
+        gl.series = series.setNullSeriesToZeroValues(gl.series);
+      }
+
+      this.coreUtils.getSeriesTotals();
+      if (gl.axisCharts) {
+        this.coreUtils.getStackedSeriesTotals();
+      }
+
+      this.coreUtils.getPercentSeries();
+
+      if (!gl.dataFormatXNumeric && (!gl.isXNumeric || cnf.xaxis.type === 'numeric' && cnf.labels.length === 0 && cnf.xaxis.categories.length === 0)) {
+        // x-axis labels couldn't be detected; hence try searching every option in config
+        this.handleExternalLabelsData(ser);
+      }
+    }
+  }, {
+    key: 'xySettings',
+    value: function xySettings() {
+      var xyRatios = null;
+      var w = this.w;
+
+      if (w.globals.axisCharts) {
+        if (w.config.xaxis.crosshairs.position === 'back') {
+          var crosshairs = new _Crosshairs2.default(this.ctx);
+          crosshairs.drawXCrosshairs();
+        }
+        if (w.config.yaxis[0].crosshairs.position === 'back') {
+          var _crosshairs = new _Crosshairs2.default(this.ctx);
+          _crosshairs.drawYCrosshairs();
+        }
+
+        xyRatios = this.coreUtils.getCalculatedRatios();
+
+        if (w.config.xaxis.type === 'datetime' && w.config.xaxis.labels.formatter === undefined) {
+          var ts = new _TimeScale2.default(this.ctx);
+          var formattedTimeScale = void 0;
+          if (isFinite(w.globals.minX) && isFinite(w.globals.maxX) && !w.globals.isBarHorizontal) {
+            formattedTimeScale = ts.calculateTimeScaleTicks(w.globals.minX, w.globals.maxX);
+            ts.recalcDimensionsBasedOnFormat(formattedTimeScale, false);
+          } else if (w.globals.isBarHorizontal) {
+            formattedTimeScale = ts.calculateTimeScaleTicks(w.globals.minY, w.globals.maxY);
+            ts.recalcDimensionsBasedOnFormat(formattedTimeScale, true);
+          }
+        }
+      }
+      return xyRatios;
+    }
+  }, {
+    key: 'drawAxis',
+    value: function drawAxis(type, xyRatios) {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+
+      var xAxis = new _XAxis2.default(this.ctx);
+      var yAxis = new _YAxis2.default(this.ctx);
+
+      if (gl.axisCharts && type !== 'radar') {
+        var elXaxis = void 0,
+            elYaxis = void 0;
+
+        if (gl.isBarHorizontal) {
+          elYaxis = yAxis.drawYaxisInversed(0);
+          elXaxis = xAxis.drawXaxisInversed(0);
+
+          gl.dom.elGraphical.add(elXaxis);
+          gl.dom.elGraphical.add(elYaxis);
+        } else {
+          elXaxis = xAxis.drawXaxis();
+          gl.dom.elGraphical.add(elXaxis);
+
+          cnf.yaxis.map(function (yaxe, index) {
+            if (gl.ignoreYAxisIndexes.indexOf(index) === -1) {
+              elYaxis = yAxis.drawYaxis(index);
+              gl.dom.Paper.add(elYaxis);
+            }
+          });
+        }
+      }
+
+      cnf.yaxis.map(function (yaxe, index) {
+        if (gl.ignoreYAxisIndexes.indexOf(index) === -1) {
+          yAxis.yAxisTitleRotate(index, yaxe.opposite);
+        }
+      });
+    }
+  }, {
+    key: 'setupBrushHandler',
+    value: function setupBrushHandler() {
+      var _this3 = this;
+
+      var w = this.w;
+
+      // only for brush charts
+      if (!w.config.chart.brush.enabled) {
+        return;
+      }
+
+      // if user has not defined a custom function for selection - we handle the brush chart
+      // otherwise we leave it to the user to define the functionality for selection
+      if (typeof w.config.chart.events.selection !== 'function') {
+        var targets = w.config.chart.brush.targets || [w.config.chart.brush.target];
+        // retro compatibility with single target option
+        targets.forEach(function (target) {
+          var targetChart = ApexCharts.getChartByID(target);
+          targetChart.w.globals.brushSource = _this3.ctx;
+
+          var updateSourceChart = function updateSourceChart() {
+            _this3.ctx._updateOptions({
+              chart: {
+                selection: {
+                  xaxis: {
+                    min: targetChart.w.globals.minX,
+                    max: targetChart.w.globals.maxX
+                  }
+                }
+              }
+            }, false, false);
+          };
+          if (typeof targetChart.w.config.chart.events.zoomed !== 'function') {
+            targetChart.w.config.chart.events.zoomed = function () {
+              updateSourceChart();
+            };
+          }
+          if (typeof targetChart.w.config.chart.events.scrolled !== 'function') {
+            targetChart.w.config.chart.events.scrolled = function () {
+              updateSourceChart();
+            };
+          }
+
+          w.config.chart.events.selection = function (chart, e) {
+            var yaxis = _Utils2.default.clone(w.config.yaxis);
+            if (w.config.chart.brush.autoScaleYaxis) {
+              var scale = new _Scales2.default(targetChart);
+              yaxis = scale.autoScaleY(targetChart, e);
+            }
+            targetChart._updateOptions({
+              xaxis: {
+                min: e.xaxis.min,
+                max: e.xaxis.max
+              },
+              yaxis: yaxis
+            }, false, false, false);
+          };
+        });
+      }
+    }
+  }]);
+
+  return Core;
+}();
+
+exports.default = Core;
+
+/***/ }),
+/* 43 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _CoreUtils = __webpack_require__(2);
+
+var _CoreUtils2 = _interopRequireDefault(_CoreUtils);
+
+var _Dimensions = __webpack_require__(13);
+
+var _Dimensions2 = _interopRequireDefault(_Dimensions);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Pie = __webpack_require__(12);
+
+var _Pie2 = _interopRequireDefault(_Pie);
+
+var _Series = __webpack_require__(7);
+
+var _Series2 = _interopRequireDefault(_Series);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Legend Class to draw legend.
+ *
+ * @module Legend
+ **/
+
+var Legend = function () {
+  function Legend(ctx, opts) {
+    _classCallCheck(this, Legend);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    this.onLegendClick = this.onLegendClick.bind(this);
+    this.onLegendHovered = this.onLegendHovered.bind(this);
+  }
+
+  _createClass(Legend, [{
+    key: 'init',
+    value: function init() {
+      var w = this.w;
+
+      var gl = w.globals;
+      var cnf = w.config;
+
+      var showLegendAlways = cnf.legend.showForSingleSeries && gl.series.length === 1 || gl.series.length > 1;
+
+      if ((showLegendAlways || !gl.axisCharts) && cnf.legend.show) {
+        while (gl.dom.elLegendWrap.firstChild) {
+          gl.dom.elLegendWrap.removeChild(gl.dom.elLegendWrap.firstChild);
+        }
+
+        this.drawLegends();
+        if (!_Utils2.default.isIE11()) {
+          this.appendToForeignObject();
+        } else {
+          // IE11 doesn't supports foreignObject, hence append it to <head>
+          document.getElementsByTagName('head')[0].appendChild(this.getLegendStyles());
+        }
+
+        if (cnf.legend.position === 'bottom' || cnf.legend.position === 'top') {
+          this.legendAlignHorizontal();
+        } else if (cnf.legend.position === 'right' || cnf.legend.position === 'left') {
+          this.legendAlignVertical();
+        }
+      }
+    }
+  }, {
+    key: 'appendToForeignObject',
+    value: function appendToForeignObject() {
+      var gl = this.w.globals;
+
+      var elForeign = document.createElementNS(gl.SVGNS, 'foreignObject');
+
+      elForeign.setAttribute('x', 0);
+      elForeign.setAttribute('y', 0);
+      elForeign.setAttribute('width', gl.svgWidth);
+      elForeign.setAttribute('height', gl.svgHeight);
+      gl.dom.elLegendWrap.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
+
+      elForeign.appendChild(gl.dom.elLegendWrap);
+      elForeign.appendChild(this.getLegendStyles());
+
+      gl.dom.Paper.node.insertBefore(elForeign, gl.dom.elGraphical.node);
+    }
+  }, {
+    key: 'drawLegends',
+    value: function drawLegends() {
+      var self = this;
+      var w = this.w;
+
+      var fontFamily = w.config.legend.fontFamily;
+
+      var legendNames = w.globals.seriesNames;
+      var fillcolor = w.globals.colors.slice();
+
+      if (w.config.chart.type === 'heatmap') {
+        var ranges = w.config.plotOptions.heatmap.colorScale.ranges;
+        legendNames = ranges.map(function (colorScale) {
+          return colorScale.name ? colorScale.name : colorScale.from + ' - ' + colorScale.to;
+        });
+        fillcolor = ranges.map(function (color) {
+          return color.color;
+        });
+      }
+      var legendFormatter = w.globals.legendFormatter;
+
+      for (var i = 0; i <= legendNames.length - 1; i++) {
+        var text = legendFormatter(legendNames[i], { seriesIndex: i, w: w });
+
+        var collapsedSeries = false;
+        var ancillaryCollapsedSeries = false;
+        if (w.globals.collapsedSeries.length > 0) {
+          for (var c = 0; c < w.globals.collapsedSeries.length; c++) {
+            if (w.globals.collapsedSeries[c].index === i) {
+              collapsedSeries = true;
+            }
+          }
+        }
+
+        if (w.globals.ancillaryCollapsedSeriesIndices.length > 0) {
+          for (var _c = 0; _c < w.globals.ancillaryCollapsedSeriesIndices.length; _c++) {
+            if (w.globals.ancillaryCollapsedSeriesIndices[_c] === i) {
+              ancillaryCollapsedSeries = true;
+            }
+          }
+        }
+
+        var elMarker = document.createElement('span');
+        elMarker.classList.add('apexcharts-legend-marker');
+
+        var mOffsetX = w.config.legend.markers.offsetX;
+        var mOffsetY = w.config.legend.markers.offsetY;
+        var mHeight = w.config.legend.markers.height;
+        var mWidth = w.config.legend.markers.width;
+        var mBorderWidth = w.config.legend.markers.strokeWidth;
+        var mBorderColor = w.config.legend.markers.strokeColor;
+        var mBorderRadius = w.config.legend.markers.radius;
+
+        var mStyle = elMarker.style;
+
+        mStyle.background = fillcolor[i];
+        mStyle.color = fillcolor[i];
+        mStyle.height = Array.isArray(mHeight) ? parseFloat(mHeight[i]) + 'px' : parseFloat(mHeight) + 'px';
+        mStyle.width = Array.isArray(mWidth) ? parseFloat(mWidth[i]) + 'px' : parseFloat(mWidth) + 'px';
+        mStyle.left = Array.isArray(mOffsetX) ? mOffsetX[i] : mOffsetX;
+        mStyle.top = Array.isArray(mOffsetY) ? mOffsetY[i] : mOffsetY;
+        mStyle.borderWidth = Array.isArray(mBorderWidth) ? mBorderWidth[i] : mBorderWidth;
+        mStyle.borderColor = Array.isArray(mBorderColor) ? mBorderColor[i] : mBorderColor;
+        mStyle.borderRadius = Array.isArray(mBorderRadius) ? parseFloat(mBorderRadius[i]) + 'px' : parseFloat(mBorderRadius) + 'px';
+
+        if (w.config.legend.markers.customHTML) {
+          if (Array.isArray(w.config.legend.markers.customHTML)) {
+            elMarker.innerHTML = w.config.legend.markers.customHTML[i]();
+          } else {
+            elMarker.innerHTML = w.config.legend.markers.customHTML();
+          }
+        }
+
+        _Graphics2.default.setAttrs(elMarker, {
+          rel: i + 1,
+          'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+        });
+
+        if (collapsedSeries || ancillaryCollapsedSeries) {
+          elMarker.classList.add('inactive-legend');
+        }
+
+        var elLegend = document.createElement('div');
+
+        var elLegendText = document.createElement('span');
+        elLegendText.classList.add('apexcharts-legend-text');
+        elLegendText.innerHTML = text;
+
+        var textColor = w.config.legend.labels.useSeriesColors ? w.globals.colors[i] : w.config.legend.labels.colors;
+
+        if (!textColor) {
+          textColor = w.config.chart.foreColor;
+        }
+
+        elLegendText.style.color = textColor;
+
+        elLegendText.style.fontSize = parseFloat(w.config.legend.fontSize) + 'px';
+        elLegendText.style.fontFamily = fontFamily || w.config.chart.fontFamily;
+
+        _Graphics2.default.setAttrs(elLegendText, {
+          rel: i + 1,
+          'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+        });
+
+        elLegend.appendChild(elMarker);
+        elLegend.appendChild(elLegendText);
+
+        var coreUtils = new _CoreUtils2.default(this.ctx);
+        if (!w.config.legend.showForZeroSeries) {
+          var total = coreUtils.getSeriesTotalByIndex(i);
+
+          if (total === 0 && coreUtils.seriesHaveSameValues(i) && !coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) {
+            elLegend.classList.add('apexcharts-hidden-zero-series');
+          }
+        }
+
+        if (!w.config.legend.showForNullSeries) {
+          if (coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) {
+            elLegend.classList.add('apexcharts-hidden-null-series');
+          }
+        }
+
+        w.globals.dom.elLegendWrap.appendChild(elLegend);
+        w.globals.dom.elLegendWrap.classList.add(w.config.legend.horizontalAlign);
+        // w.globals.dom.elLegendWrap.classList.add(w.config.legend.verticalAlign)
+        w.globals.dom.elLegendWrap.classList.add('position-' + w.config.legend.position);
+
+        elLegend.classList.add('apexcharts-legend-series');
+        elLegend.style.margin = w.config.legend.itemMargin.horizontal + 'px ' + w.config.legend.itemMargin.vertical + 'px';
+        w.globals.dom.elLegendWrap.style.width = w.config.legend.width ? w.config.legend.width + 'px' : '';
+        w.globals.dom.elLegendWrap.style.height = w.config.legend.height ? w.config.legend.height + 'px' : '';
+
+        _Graphics2.default.setAttrs(elLegend, {
+          rel: i + 1,
+          'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+        });
+
+        if (collapsedSeries || ancillaryCollapsedSeries) {
+          elLegend.classList.add('inactive-legend');
+        }
+
+        if (!w.config.legend.onItemClick.toggleDataSeries) {
+          elLegend.classList.add('no-click');
+        }
+      }
+
+      // for now - just prevent click on heatmap legend - and allow hover only
+      var clickAllowed = w.config.chart.type !== 'heatmap';
+
+      if (clickAllowed && w.config.legend.onItemClick.toggleDataSeries) {
+        w.globals.dom.elWrap.addEventListener('click', self.onLegendClick, true);
+      }
+
+      if (w.config.legend.onItemHover.highlightDataSeries) {
+        w.globals.dom.elWrap.addEventListener('mousemove', self.onLegendHovered, true);
+        w.globals.dom.elWrap.addEventListener('mouseout', self.onLegendHovered, true);
+      }
+    }
+  }, {
+    key: 'getLegendBBox',
+    value: function getLegendBBox() {
+      var w = this.w;
+      var currLegendsWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+      var currLegendsWrapRect = currLegendsWrap.getBoundingClientRect();
+
+      var currLegendsWrapWidth = currLegendsWrapRect.width;
+      var currLegendsWrapHeight = currLegendsWrapRect.height;
+
+      return {
+        clwh: currLegendsWrapHeight,
+        clww: currLegendsWrapWidth
+      };
+    }
+  }, {
+    key: 'setLegendWrapXY',
+    value: function setLegendWrapXY(offsetX, offsetY) {
+      var w = this.w;
+
+      var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+
+      var legendRect = elLegendWrap.getBoundingClientRect();
+
+      var x = 0;
+      var y = 0;
+
+      if (w.config.legend.position === 'bottom') {
+        y = y + (w.globals.svgHeight - legendRect.height / 2);
+      } else if (w.config.legend.position === 'top') {
+        var dim = new _Dimensions2.default(this.ctx);
+        var titleH = dim.getTitleSubtitleCoords('title').height;
+        var subtitleH = dim.getTitleSubtitleCoords('subtitle').height;
+
+        y = y + (titleH > 0 ? titleH - 10 : 0) + (subtitleH > 0 ? subtitleH - 10 : 0);
+      }
+
+      elLegendWrap.style.position = 'absolute';
+
+      x = x + offsetX + w.config.legend.offsetX;
+      y = y + offsetY + w.config.legend.offsetY;
+
+      elLegendWrap.style.left = x + 'px';
+      elLegendWrap.style.top = y + 'px';
+
+      if (w.config.legend.position === 'bottom') {
+        elLegendWrap.style.top = 'auto';
+        elLegendWrap.style.bottom = 10 + w.config.legend.offsetY + 'px';
+      } else if (w.config.legend.position === 'right') {
+        elLegendWrap.style.left = 'auto';
+        elLegendWrap.style.right = 25 + w.config.legend.offsetX + 'px';
+      }
+
+      if (elLegendWrap.style.width) {
+        elLegendWrap.style.width = parseInt(w.config.legend.width) + 'px';
+      }
+
+      if (elLegendWrap.style.height) {
+        elLegendWrap.style.height = parseInt(w.config.legend.height) + 'px';
+      }
+    }
+  }, {
+    key: 'legendAlignHorizontal',
+    value: function legendAlignHorizontal() {
+      var w = this.w;
+
+      var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+
+      elLegendWrap.style.right = 0;
+
+      var lRect = this.getLegendBBox();
+
+      var dimensions = new _Dimensions2.default(this.ctx);
+      var titleRect = dimensions.getTitleSubtitleCoords('title');
+      var subtitleRect = dimensions.getTitleSubtitleCoords('subtitle');
+
+      var offsetX = 20;
+      var offsetY = 0;
+
+      // the whole legend box is set to bottom
+      if (w.config.legend.position === 'bottom') {
+        offsetY = -lRect.clwh / 1.8;
+      } else if (w.config.legend.position === 'top') {
+        offsetY = titleRect.height + subtitleRect.height + w.config.title.margin + w.config.subtitle.margin - 15;
+      }
+
+      this.setLegendWrapXY(offsetX, offsetY);
+    }
+  }, {
+    key: 'legendAlignVertical',
+    value: function legendAlignVertical() {
+      var w = this.w;
+
+      var lRect = this.getLegendBBox();
+
+      var offsetY = 20;
+      var offsetX = 0;
+
+      if (w.config.legend.position === 'left') {
+        offsetX = 20;
+      }
+
+      if (w.config.legend.position === 'right') {
+        offsetX = w.globals.svgWidth - lRect.clww - 10;
+      }
+
+      this.setLegendWrapXY(offsetX, offsetY);
+    }
+  }, {
+    key: 'onLegendHovered',
+    value: function onLegendHovered(e) {
+      var w = this.w;
+
+      var hoverOverLegend = e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker');
+
+      if (w.config.chart.type !== 'heatmap') {
+        if (!e.target.classList.contains('inactive-legend') && hoverOverLegend) {
+          var series = new _Series2.default(this.ctx);
+          series.toggleSeriesOnHover(e, e.target);
+        }
+      } else {
+        // for heatmap handling
+        if (hoverOverLegend) {
+          var seriesCnt = parseInt(e.target.getAttribute('rel')) - 1;
+          this.ctx.fireEvent('legendHover', [this.ctx, seriesCnt, this.w]);
+
+          var _series = new _Series2.default(this.ctx);
+          _series.highlightRangeInSeries(e, e.target);
+        }
+      }
+    }
+  }, {
+    key: 'onLegendClick',
+    value: function onLegendClick(e) {
+      if (e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker')) {
+        var seriesCnt = parseInt(e.target.getAttribute('rel')) - 1;
+        var isHidden = e.target.getAttribute('data:collapsed') === 'true';
+
+        var legendClick = this.w.config.chart.events.legendClick;
+        if (typeof legendClick === 'function') {
+          legendClick(this.ctx, seriesCnt, this.w);
+        }
+
+        this.ctx.fireEvent('legendClick', [this.ctx, seriesCnt, this.w]);
+
+        var markerClick = this.w.config.legend.markers.onClick;
+        if (typeof markerClick === 'function' && e.target.classList.contains('apexcharts-legend-marker')) {
+          markerClick(this.ctx, seriesCnt, this.w);
+          this.ctx.fireEvent('legendMarkerClick', [this.ctx, seriesCnt, this.w]);
+        }
+
+        this.toggleDataSeries(seriesCnt, isHidden);
+      }
+    }
+  }, {
+    key: 'getLegendStyles',
+    value: function getLegendStyles() {
+      var stylesheet = document.createElement('style');
+      stylesheet.setAttribute('type', 'text/css');
+
+      var text = '\n    \n      .apexcharts-legend {\n        display: flex;\n        overflow: auto;\n        padding: 0 10px;\n      }\n\n      .apexcharts-legend.position-bottom, .apexcharts-legend.position-top {\n        flex-wrap: wrap\n      }\n      .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n        flex-direction: column;\n        bottom: 0;\n      }\n\n      .apexcharts-legend.position-bottom.left, .apexcharts-legend.position-top.left, .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n        justify-content: flex-start;\n      }\n\n      .apexcharts-legend.position-bottom.center, .apexcharts-legend.position-top.center {\n        justify-content: center;  \n      }\n\n      .apexcharts-legend.position-bottom.right, .apexcharts-legend.position-top.right {\n        justify-content: flex-end;\n      }\n\n      .apexcharts-legend-series {\n        cursor: pointer;\n        line-height: normal;\n      }\n\n      .apexcharts-legend.position-bottom .apexcharts-legend-series, .apexcharts-legend.position-top .apexcharts-legend-series{\n        display: flex;\n        align-items: center;\n      }\n\n      .apexcharts-legend-text {\n        position: relative;\n        font-size: 14px;\n      }\n\n      .apexcharts-legend-text *, .apexcharts-legend-marker * {\n        pointer-events: none;\n      }\n\n      .apexcharts-legend-marker {\n        position: relative;\n        display: inline-block;\n        cursor: pointer;\n        margin-right: 3px;\n      }\n      \n      .apexcharts-legend.right .apexcharts-legend-series, .apexcharts-legend.left .apexcharts-legend-series{\n        display: inline-block;\n      }\n\n      .apexcharts-legend-series.no-click {\n        cursor: auto;\n      }\n\n      .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\n        display: none !important;\n      }\n\n      .inactive-legend {\n        opacity: 0.45;\n      }';
+
+      var rules = document.createTextNode(text);
+
+      stylesheet.appendChild(rules);
+
+      return stylesheet;
+    }
+  }, {
+    key: 'resetToggleDataSeries',
+    value: function resetToggleDataSeries() {
+      var w = this.w;
+
+      var seriesEls = null;
+
+      var realIndexes = [];
+
+      if (w.globals.axisCharts) {
+        seriesEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series[data\\:realIndex]');
+        seriesEls = _Utils2.default.listToArray(seriesEls);
+
+        seriesEls.forEach(function (v) {
+          realIndexes.push(parseInt(v.getAttribute('data:realIndex')));
+        });
+      } else {
+        seriesEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series[rel]');
+        seriesEls = _Utils2.default.listToArray(seriesEls);
+
+        seriesEls.forEach(function (v) {
+          realIndexes.push(parseInt(v.getAttribute('rel')) - 1);
+        });
+      }
+
+      realIndexes.sort();
+
+      if (w.globals.collapsedSeries.length > 0) {
+        var risingSeries = w.globals.risingSeries.slice();
+        var series = w.config.series.slice();
+
+        for (var c = 0; c < w.globals.collapsedSeries.length; c++) {
+          var index = realIndexes.indexOf(w.globals.collapsedSeries[c].index);
+
+          if (index !== -1) {
+            if (w.globals.axisCharts) {
+              series[index].data = w.globals.collapsedSeries.slice()[c].data.slice();
+            } else {
+              series[index] = w.globals.collapsedSeries.slice()[c].data;
+            }
+            risingSeries.push(index);
+          }
+        }
+        w.globals.collapsedSeries = [];
+        w.globals.ancillaryCollapsedSeries = [];
+        w.globals.collapsedSeriesIndices = [];
+        w.globals.ancillaryCollapsedSeriesIndices = [];
+        w.globals.risingSeries = risingSeries;
+        w.config.series = series;
+        this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+      }
+    }
+  }, {
+    key: 'toggleDataSeries',
+    value: function toggleDataSeries(seriesCnt, isHidden) {
+      var w = this.w;
+      if (w.globals.axisCharts || w.config.chart.type === 'radialBar') {
+        w.globals.resized = true; // we don't want initial animations again
+
+        var seriesEl = null;
+
+        var realIndex = null;
+
+        // yes, make it null. 1 series will rise at a time
+        w.globals.risingSeries = [];
+
+        if (w.globals.axisCharts) {
+          seriesEl = w.globals.dom.baseEl.querySelector('.apexcharts-series[data\\:realIndex=\'' + seriesCnt + '\']');
+          realIndex = parseInt(seriesEl.getAttribute('data:realIndex'));
+        } else {
+          seriesEl = w.globals.dom.baseEl.querySelector('.apexcharts-series[rel=\'' + (seriesCnt + 1) + '\']');
+          realIndex = parseInt(seriesEl.getAttribute('rel')) - 1;
+        }
+
+        if (isHidden) {
+          this.riseCollapsedSeries(w.globals.collapsedSeries, w.globals.collapsedSeriesIndices, realIndex);
+          this.riseCollapsedSeries(w.globals.ancillaryCollapsedSeries, w.globals.ancillaryCollapsedSeriesIndices, realIndex);
+        } else {
+          if (w.globals.axisCharts) {
+            var shouldNotHideYAxis = false;
+
+            if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].show && w.config.yaxis[realIndex].showAlways) {
+              shouldNotHideYAxis = true;
+              if (w.globals.ancillaryCollapsedSeriesIndices.indexOf(realIndex) < 0) {
+                w.globals.ancillaryCollapsedSeries.push({
+                  index: realIndex,
+                  data: w.config.series[realIndex].data.slice(),
+                  type: seriesEl.parentNode.className.baseVal.split('-')[1]
+                });
+                w.globals.ancillaryCollapsedSeriesIndices.push(realIndex);
+              }
+            }
+
+            if (!shouldNotHideYAxis) {
+              w.globals.collapsedSeries.push({
+                index: realIndex,
+                data: w.config.series[realIndex].data.slice(),
+                type: seriesEl.parentNode.className.baseVal.split('-')[1]
+              });
+              w.globals.collapsedSeriesIndices.push(realIndex);
+
+              var removeIndexOfRising = w.globals.risingSeries.indexOf(realIndex);
+
+              w.globals.risingSeries.splice(removeIndexOfRising, 1);
+            }
+
+            // TODO: AVOID mutating the user's config object below
+            w.config.series[realIndex].data = [];
+          } else {
+            w.globals.collapsedSeries.push({
+              index: realIndex,
+              data: w.config.series[realIndex]
+            });
+            w.globals.collapsedSeriesIndices.push(realIndex);
+            w.config.series[realIndex] = 0;
+          }
+
+          var seriesChildren = seriesEl.childNodes;
+          for (var sc = 0; sc < seriesChildren.length; sc++) {
+            if (seriesChildren[sc].classList.contains('apexcharts-series-markers-wrap')) {
+              if (seriesChildren[sc].classList.contains('apexcharts-hide')) {
+                seriesChildren[sc].classList.remove('apexcharts-hide');
+              } else {
+                seriesChildren[sc].classList.add('apexcharts-hide');
+              }
+            }
+          }
+
+          w.globals.allSeriesCollapsed = w.globals.collapsedSeries.length === w.globals.series.length;
+
+          this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+        }
+      } else {
+        // for non-axis charts i.e pie / donuts
+        var _seriesEl = w.globals.dom.Paper.select(' .apexcharts-series[rel=\'' + (seriesCnt + 1) + '\'] path');
+
+        var type = w.config.chart.type;
+        if (type === 'pie' || type === 'donut') {
+          var dataLabels = w.config.plotOptions.pie.donut.labels;
+
+          var graphics = new _Graphics2.default(this.ctx);
+          var pie = new _Pie2.default(this.ctx);
+          graphics.pathMouseDown(_seriesEl.members[0], null);
+          pie.printDataLabelsInner(_seriesEl.members[0].node, dataLabels);
+        }
+
+        _seriesEl.fire('click');
+      }
+    }
+  }, {
+    key: 'riseCollapsedSeries',
+    value: function riseCollapsedSeries(series, seriesIndices, realIndex) {
+      var w = this.w;
+
+      if (series.length > 0) {
+        for (var c = 0; c < series.length; c++) {
+          if (series[c].index === realIndex) {
+            if (w.globals.axisCharts) {
+              w.config.series[realIndex].data = series[c].data.slice();
+              series.splice(c, 1);
+              seriesIndices.splice(c, 1);
+              w.globals.risingSeries.push(realIndex);
+            } else {
+              w.config.series[realIndex] = series[c].data;
+              series.splice(c, 1);
+              seriesIndices.splice(c, 1);
+              w.globals.risingSeries.push(realIndex);
+            }
+            this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+          }
+        }
+      }
+    }
+  }]);
+
+  return Legend;
+}();
+
+exports.default = Legend;
+
+/***/ }),
+/* 44 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Config = __webpack_require__(17);
+
+var _Config2 = _interopRequireDefault(_Config);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _CoreUtils = __webpack_require__(2);
+
+var _CoreUtils2 = _interopRequireDefault(_CoreUtils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Responsive Class to override options for different screen sizes.
+ *
+ * @module Responsive
+ **/
+
+var Responsive = function () {
+  function Responsive(ctx) {
+    _classCallCheck(this, Responsive);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  // the opts parameter if not null has to be set overriding everything
+  // as the opts is set by user externally
+
+
+  _createClass(Responsive, [{
+    key: 'checkResponsiveConfig',
+    value: function checkResponsiveConfig(opts) {
+      var _this = this;
+
+      var w = this.w;
+      var cnf = w.config;
+
+      // check if responsive config exists
+      if (cnf.responsive.length === 0) return;
+
+      var res = cnf.responsive.slice();
+      res.sort(function (a, b) {
+        return a.breakpoint > b.breakpoint ? 1 : b.breakpoint > a.breakpoint ? -1 : 0;
+      }).reverse();
+
+      var config = new _Config2.default({});
+
+      var iterateResponsiveOptions = function iterateResponsiveOptions() {
+        var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+        var largestBreakpoint = res[0].breakpoint;
+        var width = window.innerWidth > 0 ? window.innerWidth : screen.width;
+
+        if (width > largestBreakpoint) {
+          var options = _CoreUtils2.default.extendArrayProps(config, w.globals.initialConfig);
+          newOptions = _Utils2.default.extend(options, newOptions);
+          newOptions = _Utils2.default.extend(w.config, newOptions);
+          _this.overrideResponsiveOptions(newOptions);
+        } else {
+          for (var i = 0; i < res.length; i++) {
+            if (width < res[i].breakpoint) {
+              newOptions = _CoreUtils2.default.extendArrayProps(config, res[i].options);
+              newOptions = _Utils2.default.extend(w.config, newOptions);
+              _this.overrideResponsiveOptions(newOptions);
+            }
+          }
+        }
+      };
+
+      if (opts) {
+        var options = _CoreUtils2.default.extendArrayProps(config, opts);
+        options = _Utils2.default.extend(w.config, options);
+        options = _Utils2.default.extend(options, opts);
+        iterateResponsiveOptions(options);
+      } else {
+        iterateResponsiveOptions({});
+      }
+    }
+  }, {
+    key: 'overrideResponsiveOptions',
+    value: function overrideResponsiveOptions(newOptions) {
+      var newConfig = new _Config2.default(newOptions).init();
+      this.w.config = newConfig;
+    }
+  }]);
+
+  return Responsive;
+}();
+
+exports.default = Responsive;
+
+/***/ }),
+/* 45 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Theme Class for setting the colors and palettes.
+ *
+ * @module Theme
+ **/
+
+var Theme = function () {
+  function Theme(ctx) {
+    _classCallCheck(this, Theme);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.colors = [];
+  }
+
+  _createClass(Theme, [{
+    key: 'init',
+    value: function init() {
+      this.setDefaultColors();
+    }
+  }, {
+    key: 'setDefaultColors',
+    value: function setDefaultColors() {
+      var w = this.w;
+      var utils = new _Utils2.default();
+
+      w.globals.dom.elWrap.classList.add(w.config.theme.mode);
+
+      if (w.config.colors === undefined) {
+        w.globals.colors = this.predefined();
+      } else {
+        w.globals.colors = w.config.colors;
+      }
+
+      if (w.config.theme.monochrome.enabled) {
+        var monoArr = [];
+        var glsCnt = w.globals.series.length;
+        if (w.config.plotOptions.bar.distributed && w.config.chart.type === 'bar') {
+          glsCnt = w.globals.series[0].length * w.globals.series.length;
+        }
+
+        var mainColor = w.config.theme.monochrome.color;
+        var part = 1 / (glsCnt / w.config.theme.monochrome.shadeIntensity);
+        var shade = w.config.theme.monochrome.shadeTo;
+        var percent = 0;
+
+        for (var gsl = 0; gsl < glsCnt; gsl++) {
+          var newColor = void 0;
+
+          if (shade === 'dark') {
+            newColor = utils.shadeColor(percent * -1, mainColor);
+            percent = percent + part;
+          } else {
+            newColor = utils.shadeColor(percent, mainColor);
+            percent = percent + part;
+          }
+
+          monoArr.push(newColor);
+        }
+        w.globals.colors = monoArr.slice();
+      }
+      var defaultColors = w.globals.colors.slice();
+
+      // if user specfied less colors than no. of series, push the same colors again
+      this.pushExtraColors(w.globals.colors);
+
+      // The Border colors
+      if (w.config.stroke.colors === undefined) {
+        w.globals.stroke.colors = defaultColors;
+      } else {
+        w.globals.stroke.colors = w.config.stroke.colors;
+      }
+      this.pushExtraColors(w.globals.stroke.colors);
+
+      // The FILL colors
+      if (w.config.fill.colors === undefined) {
+        w.globals.fill.colors = defaultColors;
+      } else {
+        w.globals.fill.colors = w.config.fill.colors;
+      }
+      this.pushExtraColors(w.globals.fill.colors);
+
+      if (w.config.dataLabels.style.colors === undefined) {
+        w.globals.dataLabels.style.colors = defaultColors;
+      } else {
+        w.globals.dataLabels.style.colors = w.config.dataLabels.style.colors;
+      }
+      this.pushExtraColors(w.globals.dataLabels.style.colors, 50);
+
+      if (w.config.plotOptions.radar.polygons.fill.colors === undefined) {
+        w.globals.radarPolygons.fill.colors = [w.config.theme.mode === 'dark' ? '#202D48' : '#fff'];
+      } else {
+        w.globals.radarPolygons.fill.colors = w.config.plotOptions.radar.polygons.fill.colors;
+      }
+      this.pushExtraColors(w.globals.radarPolygons.fill.colors, 20);
+
+      // The point colors
+      if (w.config.markers.colors === undefined) {
+        w.globals.markers.colors = defaultColors;
+      } else {
+        w.globals.markers.colors = w.config.markers.colors;
+      }
+      this.pushExtraColors(w.globals.markers.colors);
+    }
+
+    // When the number of colors provided is less than the number of series, this method
+    // will push same colors to the list
+    // params:
+    // distributed is only valid for distributed column/bar charts
+
+  }, {
+    key: 'pushExtraColors',
+    value: function pushExtraColors(colorSeries, length) {
+      var distributed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+
+      var w = this.w;
+
+      var len = length || w.globals.series.length;
+
+      if (distributed === null) {
+        distributed = w.config.chart.type === 'bar' && w.config.plotOptions.bar.distributed || w.config.chart.type === 'heatmap' && w.config.plotOptions.heatmap.colorScale.inverse;
+      }
+
+      if (distributed) {
+        len = w.globals.series[0].length * w.globals.series.length;
+      }
+
+      if (colorSeries.length < len) {
+        var diff = len - colorSeries.length;
+        for (var i = 0; i < diff; i++) {
+          colorSeries.push(colorSeries[i]);
+        }
+      }
+    }
+  }, {
+    key: 'updateThemeOptions',
+    value: function updateThemeOptions(options) {
+      options.chart = options.chart || {};
+      options.tooltip = options.tooltip || {};
+      var mode = options.theme.mode || 'light';
+      var palette = options.theme.palette ? options.theme.palette : mode === 'dark' ? 'palette4' : 'palette1';
+      var foreColor = options.chart.foreColor ? options.chart.foreColor : mode === 'dark' ? '#f6f7f8' : '#373d3f';
+
+      options.tooltip.theme = mode;
+      options.chart.foreColor = foreColor;
+      options.theme.palette = palette;
+
+      return options;
+    }
+  }, {
+    key: 'predefined',
+    value: function predefined() {
+      var palette = this.w.config.theme.palette;
+
+      // D6E3F8, FCEFEF, DCE0D9, A5978B, EDDDD4, D6E3F8, FEF5EF
+      switch (palette) {
+        case 'palette1':
+          this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'];
+          break;
+        case 'palette2':
+          this.colors = ['#3f51b5', '#03a9f4', '#4caf50', '#f9ce1d', '#FF9800'];
+          break;
+        case 'palette3':
+          this.colors = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B'];
+          break;
+        case 'palette4':
+          this.colors = ['#4ecdc4', '#c7f464', '#81D4FA', '#fd6a6a', '#546E7A'];
+          break;
+        case 'palette5':
+          this.colors = ['#2b908f', '#f9a3a4', '#90ee7e', '#fa4443', '#69d2e7'];
+          break;
+        case 'palette6':
+          this.colors = ['#449DD1', '#F86624', '#EA3546', '#662E9B', '#C5D86D'];
+          break;
+        case 'palette7':
+          this.colors = ['#D7263D', '#1B998B', '#2E294E', '#F46036', '#E2C044'];
+          break;
+        case 'palette8':
+          this.colors = ['#662E9B', '#F86624', '#F9C80E', '#EA3546', '#43BCCD'];
+          break;
+        case 'palette9':
+          this.colors = ['#5C4742', '#A5978B', '#8D5B4C', '#5A2A27', '#C4BBAF'];
+          break;
+        case 'palette10':
+          this.colors = ['#A300D6', '#7D02EB', '#5653FE', '#2983FF', '#00B1F2'];
+          break;
+        default:
+          this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'];
+          break;
+      }
+      return this.colors;
+    }
+  }]);
+
+  return Theme;
+}();
+
+exports.default = Theme;
+
+/***/ }),
+/* 46 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _DateTime = __webpack_require__(11);
+
+var _DateTime2 = _interopRequireDefault(_DateTime);
+
+var _Dimensions = __webpack_require__(13);
+
+var _Dimensions2 = _interopRequireDefault(_Dimensions);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts TimeScale Class for generating time ticks for x-axis.
+ *
+ * @module TimeScale
+ **/
+
+var TimeScale = function () {
+  function TimeScale(ctx) {
+    _classCallCheck(this, TimeScale);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.timeScaleArray = [];
+  }
+
+  _createClass(TimeScale, [{
+    key: 'calculateTimeScaleTicks',
+    value: function calculateTimeScaleTicks(minX, maxX) {
+      var _this = this;
+
+      var w = this.w;
+
+      // null check when no series to show
+      if (w.globals.allSeriesCollapsed) {
+        w.globals.labels = [];
+        w.globals.timelineLabels = [];
+        return [];
+      }
+
+      var dt = new _DateTime2.default(this.ctx);
+
+      var daysDiff = (maxX - minX) / (1000 * 60 * 60 * 24);
+      this.determineInterval(daysDiff);
+
+      w.globals.disableZoomIn = false;
+      w.globals.disableZoomOut = false;
+
+      if (daysDiff < 0.005) {
+        w.globals.disableZoomIn = true;
+      } else if (daysDiff > 50000) {
+        w.globals.disableZoomOut = true;
+      }
+
+      var timeIntervals = dt.getTimeUnitsfromTimestamp(minX, maxX);
+
+      var daysWidthOnXAxis = w.globals.gridWidth / daysDiff;
+      var hoursWidthOnXAxis = daysWidthOnXAxis / 24;
+      var minutesWidthOnXAxis = hoursWidthOnXAxis / 60;
+
+      var numberOfHours = Math.floor(daysDiff * 24);
+      var numberOfMinutes = Math.floor(daysDiff * 24 * 60);
+      var numberOfDays = Math.floor(daysDiff);
+      var numberOfMonths = Math.floor(daysDiff / 30);
+      var numberOfYears = Math.floor(daysDiff / 365);
+
+      var firstVal = {
+        minMinute: timeIntervals.minMinute,
+        minHour: timeIntervals.minHour,
+        minDate: timeIntervals.minDate,
+        minMonth: timeIntervals.minMonth,
+        minYear: timeIntervals.minYear
+      };
+
+      var currentMinute = firstVal.minMinute;
+      var currentHour = firstVal.minHour;
+      var currentMonthDate = firstVal.minDate;
+      var currentDate = firstVal.minDate;
+      var currentMonth = firstVal.minMonth;
+      var currentYear = firstVal.minYear;
+
+      var params = {
+        firstVal: firstVal,
+        currentMinute: currentMinute,
+        currentHour: currentHour,
+        currentMonthDate: currentMonthDate,
+        currentDate: currentDate,
+        currentMonth: currentMonth,
+        currentYear: currentYear,
+        daysWidthOnXAxis: daysWidthOnXAxis,
+        hoursWidthOnXAxis: hoursWidthOnXAxis,
+        minutesWidthOnXAxis: minutesWidthOnXAxis,
+        numberOfMinutes: numberOfMinutes,
+        numberOfHours: numberOfHours,
+        numberOfDays: numberOfDays,
+        numberOfMonths: numberOfMonths,
+        numberOfYears: numberOfYears
+      };
+
+      switch (this.tickInterval) {
+        case 'years':
+          {
+            this.generateYearScale(params);
+            break;
+          }
+        case 'months':
+        case 'half_year':
+          {
+            this.generateMonthScale(params);
+            break;
+          }
+        case 'months_days':
+        case 'months_fortnight':
+        case 'days':
+        case 'week_days':
+          {
+            this.generateDayScale(params);
+            break;
+          }
+        case 'hours':
+          {
+            this.generateHourScale(params);
+            break;
+          }
+        case 'minutes':
+          this.generateMinuteScale(params);
+          break;
+      }
+
+      // first, we will adjust the month values index
+      // as in the upper function, it is starting from 0
+      // we will start them from 1
+      var adjustedMonthInTimeScaleArray = this.timeScaleArray.map(function (ts) {
+        var defaultReturn = {
+          position: ts.position,
+          unit: ts.unit,
+          year: ts.year,
+          day: ts.day ? ts.day : 1,
+          hour: ts.hour ? ts.hour : 0,
+          month: ts.month + 1
+        };
+        if (ts.unit === 'month') {
+          return _extends({}, defaultReturn, {
+            value: ts.value + 1
+          });
+        } else if (ts.unit === 'day' || ts.unit === 'hour') {
+          return _extends({}, defaultReturn, {
+            value: ts.value
+          });
+        } else if (ts.unit === 'minute') {
+          return _extends({}, defaultReturn, {
+            value: ts.value,
+            minute: ts.value
+          });
+        }
+
+        return ts;
+      });
+
+      var filteredTimeScale = adjustedMonthInTimeScaleArray.filter(function (ts) {
+        var modulo = 1;
+        var ticks = Math.ceil(w.globals.gridWidth / 120);
+        var value = ts.value;
+        if (w.config.xaxis.tickAmount !== undefined) {
+          ticks = w.config.xaxis.tickAmount;
+        }
+        if (adjustedMonthInTimeScaleArray.length > ticks) {
+          modulo = Math.floor(adjustedMonthInTimeScaleArray.length / ticks);
+        }
+
+        var shouldNotSkipUnit = false; // there is a big change in unit i.e days to months
+        var shouldNotPrint = false; // should skip these values
+
+        switch (_this.tickInterval) {
+          case 'half_year':
+            modulo = 7;
+            if (ts.unit === 'year') {
+              shouldNotSkipUnit = true;
+            }
+            break;
+          case 'months':
+            modulo = 1;
+            if (ts.unit === 'year') {
+              shouldNotSkipUnit = true;
+            }
+            break;
+          case 'months_fortnight':
+            modulo = 15;
+            if (ts.unit === 'year' || ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+            if (value === 30) {
+              shouldNotPrint = true;
+            }
+            break;
+          case 'months_days':
+            modulo = 10;
+            if (ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+            if (value === 30) {
+              shouldNotPrint = true;
+            }
+            break;
+          case 'week_days':
+            modulo = 8;
+            if (ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+            break;
+          case 'days':
+            modulo = 1;
+            if (ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+            break;
+          case 'hours':
+            if (ts.unit === 'day') {
+              shouldNotSkipUnit = true;
+            }
+            break;
+          case 'minutes':
+            if (value % 5 !== 0) {
+              shouldNotPrint = true;
+            }
+            break;
+        }
+
+        if (_this.tickInterval === 'minutes' || _this.tickInterval === 'hours') {
+          if (!shouldNotPrint) {
+            return true;
+          }
+        } else {
+          if ((value % modulo === 0 || shouldNotSkipUnit) && !shouldNotPrint) {
+            return true;
+          }
+        }
+      });
+
+      return filteredTimeScale;
+    }
+  }, {
+    key: 'recalcDimensionsBasedOnFormat',
+    value: function recalcDimensionsBasedOnFormat(filteredTimeScale, inverted) {
+      var w = this.w;
+      var reformattedTimescaleArray = this.formatDates(filteredTimeScale);
+
+      var removedOverlappingTS = this.removeOverlappingTS(reformattedTimescaleArray);
+
+      if (!inverted) {
+        w.globals.timelineLabels = removedOverlappingTS.slice();
+      } else {
+        w.globals.invertedTimelineLabels = removedOverlappingTS.slice();
+      }
+
+      // at this stage, we need to re-calculate coords of the grid as timeline labels may have altered the xaxis labels coords
+      // The reason we can't do this prior to this stage is because timeline labels depends on gridWidth, and as the ticks are calculated based on available gridWidth, there can be unknown number of ticks generated for different minX and maxX
+      // Dependency on Dimensions(), need to refactor correctly
+      // TODO - find an alternate way to avoid calling this Heavy method twice
+      var dimensions = new _Dimensions2.default(this.ctx);
+      dimensions.plotCoords();
+    }
+  }, {
+    key: 'determineInterval',
+    value: function determineInterval(daysDiff) {
+      switch (true) {
+        case daysDiff > 1825:
+          // difference is more than 5 years
+          this.tickInterval = 'years';
+          break;
+        case daysDiff > 800 && daysDiff <= 1825:
+          this.tickInterval = 'half_year';
+          break;
+        case daysDiff > 180 && daysDiff <= 800:
+          this.tickInterval = 'months';
+          break;
+        case daysDiff > 90 && daysDiff <= 180:
+          this.tickInterval = 'months_fortnight';
+          break;
+        case daysDiff > 60 && daysDiff <= 90:
+          this.tickInterval = 'months_days';
+          break;
+        case daysDiff > 30 && daysDiff <= 60:
+          this.tickInterval = 'week_days';
+          break;
+        case daysDiff > 2 && daysDiff <= 30:
+          this.tickInterval = 'days';
+          break;
+        case daysDiff > 0.1 && daysDiff <= 2:
+          // less than  2 days
+          this.tickInterval = 'hours';
+          break;
+        case daysDiff < 0.1:
+          this.tickInterval = 'minutes';
+          break;
+        default:
+          this.tickInterval = 'days';
+          break;
+      }
+    }
+  }, {
+    key: 'generateYearScale',
+    value: function generateYearScale(params) {
+      var firstVal = params.firstVal,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          daysWidthOnXAxis = params.daysWidthOnXAxis,
+          numberOfYears = params.numberOfYears;
+
+
+      var firstTickValue = firstVal.minYear;
+      var firstTickPosition = 0;
+      var dt = new _DateTime2.default(this.ctx);
+
+      var unit = 'year';
+
+      if (firstVal.minDate > 1 && firstVal.minMonth > 0) {
+        var remainingDays = dt.determineRemainingDaysOfYear(firstVal.minYear, firstVal.minMonth, firstVal.minDate);
+
+        // remainingDaysofFirstMonth is used to reacht the 2nd tick position
+        var remainingDaysOfFirstYear = dt.determineDaysOfYear(firstVal.minYear) - remainingDays + 1;
+
+        // calculate the first tick position
+        firstTickPosition = remainingDaysOfFirstYear * daysWidthOnXAxis;
+        firstTickValue = firstVal.minYear + 1;
+        // push the first tick in the array
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: firstTickValue,
+          unit: unit,
+          year: firstTickValue,
+          month: _Utils2.default.monthMod(currentMonth + 1)
+        });
+      } else if (firstVal.minDate === 1 && firstVal.minMonth === 0) {
+        // push the first tick in the array
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: firstTickValue,
+          unit: unit,
+          year: currentYear,
+          month: _Utils2.default.monthMod(currentMonth + 1)
+        });
+      }
+
+      var year = firstTickValue;
+      var pos = firstTickPosition;
+
+      // keep drawing rest of the ticks
+      for (var i = 0; i < numberOfYears; i++) {
+        year++;
+        pos = dt.determineDaysOfYear(year - 1) * daysWidthOnXAxis + pos;
+        this.timeScaleArray.push({
+          position: pos,
+          value: year,
+          unit: unit,
+          year: year,
+          month: 1
+        });
+      }
+    }
+  }, {
+    key: 'generateMonthScale',
+    value: function generateMonthScale(params) {
+      var firstVal = params.firstVal,
+          currentMonthDate = params.currentMonthDate,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          daysWidthOnXAxis = params.daysWidthOnXAxis,
+          numberOfMonths = params.numberOfMonths;
+
+
+      var firstTickValue = currentMonth;
+      var firstTickPosition = 0;
+      var dt = new _DateTime2.default(this.ctx);
+      var unit = 'month';
+      var yrCounter = 0;
+
+      if (firstVal.minDate > 1) {
+        // remainingDaysofFirstMonth is used to reacht the 2nd tick position
+        var remainingDaysOfFirstMonth = dt.determineDaysOfMonths(currentMonth + 1, firstVal.minYear) - currentMonthDate + 1;
+
+        // calculate the first tick position
+        firstTickPosition = remainingDaysOfFirstMonth * daysWidthOnXAxis;
+        firstTickValue = _Utils2.default.monthMod(currentMonth + 1);
+
+        var year = currentYear + yrCounter;
+        var _month = _Utils2.default.monthMod(firstTickValue);
+        var value = firstTickValue;
+        // it's Jan, so update the year
+        if (firstTickValue === 0) {
+          unit = 'year';
+          value = year;
+          _month = 1;
+          yrCounter += 1;
+          year = year + yrCounter;
+        }
+
+        // push the first tick in the array
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: value,
+          unit: unit,
+          year: year,
+          month: _month
+        });
+      } else {
+        // push the first tick in the array
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: firstTickValue,
+          unit: unit,
+          year: currentYear,
+          month: _Utils2.default.monthMod(currentMonth)
+        });
+      }
+
+      var month = firstTickValue + 1;
+      var pos = firstTickPosition;
+
+      // keep drawing rest of the ticks
+      for (var i = 0, j = 1; i < numberOfMonths; i++, j++) {
+        month = _Utils2.default.monthMod(month);
+
+        if (month === 0) {
+          unit = 'year';
+          yrCounter += 1;
+        } else {
+          unit = 'month';
+        }
+        var _year = currentYear + Math.floor(month / 12) + yrCounter;
+
+        pos = dt.determineDaysOfMonths(month, _year) * daysWidthOnXAxis + pos;
+        var monthVal = month === 0 ? _year : month;
+        this.timeScaleArray.push({
+          position: pos,
+          value: monthVal,
+          unit: unit,
+          year: _year,
+          month: month === 0 ? 1 : month
+        });
+        month++;
+      }
+    }
+  }, {
+    key: 'generateDayScale',
+    value: function generateDayScale(params) {
+      var firstVal = params.firstVal,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          hoursWidthOnXAxis = params.hoursWidthOnXAxis,
+          numberOfDays = params.numberOfDays;
+
+
+      var dt = new _DateTime2.default(this.ctx);
+
+      var unit = 'day';
+
+      var remainingHours = 24 - firstVal.minHour;
+      var yrCounter = 0;
+
+      // calculate the first tick position
+      var firstTickPosition = remainingHours * hoursWidthOnXAxis;
+      var firstTickValue = firstVal.minDate + 1;
+
+      var val = firstTickValue;
+
+      var changeMonth = function changeMonth(dateVal, month, year) {
+        var monthdays = dt.determineDaysOfMonths(month + 1, year);
+
+        if (dateVal > monthdays) {
+          month = month + 1;
+          date = 1;
+          unit = 'month';
+          val = month;
+          return month;
+        }
+
+        return month;
+      };
+
+      var date = firstTickValue;
+      var month = changeMonth(date, currentMonth, currentYear);
+
+      // push the first tick in the array
+      this.timeScaleArray.push({
+        position: firstTickPosition,
+        value: val,
+        unit: unit,
+        year: currentYear,
+        month: _Utils2.default.monthMod(month),
+        day: date
+      });
+
+      var pos = firstTickPosition;
+      // keep drawing rest of the ticks
+      for (var i = 0; i < numberOfDays; i++) {
+        date += 1;
+        unit = 'day';
+        month = changeMonth(date, month, currentYear + Math.floor(month / 12) + yrCounter);
+
+        var year = currentYear + Math.floor(month / 12) + yrCounter;
+
+        pos = 24 * hoursWidthOnXAxis + pos;
+        var _val = date === 1 ? _Utils2.default.monthMod(month) : date;
+        this.timeScaleArray.push({
+          position: pos,
+          value: _val,
+          unit: unit,
+          year: year,
+          month: _Utils2.default.monthMod(month),
+          day: _val
+        });
+      }
+    }
+  }, {
+    key: 'generateHourScale',
+    value: function generateHourScale(params) {
+      var firstVal = params.firstVal,
+          currentDate = params.currentDate,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          minutesWidthOnXAxis = params.minutesWidthOnXAxis,
+          numberOfHours = params.numberOfHours;
+
+
+      var dt = new _DateTime2.default(this.ctx);
+
+      var yrCounter = 0;
+      var unit = 'hour';
+
+      var changeDate = function changeDate(dateVal, month) {
+        var monthdays = dt.determineDaysOfMonths(month + 1, currentYear);
+        if (dateVal > monthdays) {
+          date = 1;
+          month = month + 1;
+        }
+        return {
+          month: month,
+          date: date
+        };
+      };
+
+      var changeMonth = function changeMonth(dateVal, month) {
+        var monthdays = dt.determineDaysOfMonths(month + 1, currentYear);
+        if (dateVal > monthdays) {
+          month = month + 1;
+          return month;
+        }
+
+        return month;
+      };
+
+      var remainingMins = 60 - firstVal.minMinute;
+
+      var firstTickPosition = remainingMins * minutesWidthOnXAxis;
+      var firstTickValue = firstVal.minHour + 1;
+      var hour = firstTickValue + 1;
+
+      if (remainingMins === 60) {
+        firstTickPosition = 0;
+        firstTickValue = firstVal.minHour;
+        hour = firstTickValue + 1;
+      }
+
+      var date = currentDate;
+
+      var month = changeMonth(date, currentMonth);
+
+      // push the first tick in the array
+      this.timeScaleArray.push({
+        position: firstTickPosition,
+        value: firstTickValue,
+        unit: unit,
+        day: date,
+        hour: hour,
+        year: currentYear,
+        month: _Utils2.default.monthMod(month)
+      });
+
+      var pos = firstTickPosition;
+      // keep drawing rest of the ticks
+      for (var i = 0; i < numberOfHours; i++) {
+        unit = 'hour';
+
+        if (hour >= 24) {
+          hour = 0;
+          date += 1;
+          unit = 'day';
+
+          var checkNextMonth = changeDate(date, month);
+
+          month = checkNextMonth.month;
+          month = changeMonth(date, month);
+        }
+
+        var year = currentYear + Math.floor(month / 12) + yrCounter;
+        pos = hour === 0 && i === 0 ? remainingMins * minutesWidthOnXAxis : 60 * minutesWidthOnXAxis + pos;
+        var val = hour === 0 ? date : hour;
+        this.timeScaleArray.push({
+          position: pos,
+          value: val,
+          unit: unit,
+          hour: hour,
+          day: date,
+          year: year,
+          month: _Utils2.default.monthMod(month)
+        });
+
+        hour++;
+      }
+    }
+  }, {
+    key: 'generateMinuteScale',
+    value: function generateMinuteScale(params) {
+      var firstVal = params.firstVal,
+          currentMinute = params.currentMinute,
+          currentHour = params.currentHour,
+          currentDate = params.currentDate,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          minutesWidthOnXAxis = params.minutesWidthOnXAxis,
+          numberOfMinutes = params.numberOfMinutes;
+
+
+      var yrCounter = 0;
+      var unit = 'minute';
+
+      var remainingMins = currentMinute - firstVal.minMinute;
+
+      var firstTickPosition = minutesWidthOnXAxis - remainingMins;
+      var firstTickValue = firstVal.minMinute + 1;
+      var minute = firstTickValue + 1;
+
+      var date = currentDate;
+      var month = currentMonth;
+      var year = currentYear;
+      var hour = currentHour;
+
+      // push the first tick in the array
+      this.timeScaleArray.push({
+        position: firstTickPosition,
+        value: firstTickValue,
+        unit: unit,
+        day: date,
+        hour: hour,
+        minute: minute,
+        year: year,
+        month: _Utils2.default.monthMod(month)
+      });
+
+      var pos = firstTickPosition;
+      // keep drawing rest of the ticks
+      for (var i = 0; i < numberOfMinutes; i++) {
+        if (minute >= 60) {
+          minute = 0;
+          hour += 1;
+          if (hour === 24) {
+            hour = 0;
+          }
+        }
+
+        var _year2 = currentYear + Math.floor(month / 12) + yrCounter;
+        pos = minutesWidthOnXAxis + pos;
+        var val = minute;
+        this.timeScaleArray.push({
+          position: pos,
+          value: val,
+          unit: unit,
+          hour: hour,
+          minute: minute,
+          day: date,
+          year: _year2,
+          month: _Utils2.default.monthMod(month)
+        });
+
+        minute++;
+      }
+    }
+  }, {
+    key: 'createRawDateString',
+    value: function createRawDateString(ts, value) {
+      var raw = ts.year;
+
+      raw += '-' + ('0' + ts.month.toString()).slice(-2);
+
+      // unit is day
+      if (ts.unit === 'day') {
+        raw += ts.unit === 'day' ? '-' + ('0' + value).slice(-2) : '-01';
+      } else {
+        raw += '-' + ('0' + (ts.day ? ts.day : '1')).slice(-2);
+      }
+
+      // unit is hour
+      if (ts.unit === 'hour') {
+        raw += ts.unit === 'hour' ? 'T' + ('0' + value).slice(-2) : 'T00';
+      } else {
+        raw += 'T' + ('0' + (ts.hour ? ts.hour : '0')).slice(-2);
+      }
+
+      // unit is minute
+      raw += ts.unit === 'minute' ? ':' + ('0' + value).slice(-2) + ':00.000Z' : ':00:00.000Z';
+
+      return raw;
+    }
+  }, {
+    key: 'formatDates',
+    value: function formatDates(filteredTimeScale) {
+      var _this2 = this;
+
+      var w = this.w;
+
+      var reformattedTimescaleArray = filteredTimeScale.map(function (ts) {
+        var value = ts.value.toString();
+
+        var dt = new _DateTime2.default(_this2.ctx);
+
+        var raw = _this2.createRawDateString(ts, value);
+
+        // parse the whole ISO datestring
+        var dateString = new Date(Date.parse(raw));
+
+        if (w.config.xaxis.labels.format === undefined) {
+          var customFormat = 'dd MMM';
+          var dtFormatter = w.config.xaxis.labels.datetimeFormatter;
+          if (ts.unit === 'year') customFormat = dtFormatter.year;
+          if (ts.unit === 'month') customFormat = dtFormatter.month;
+          if (ts.unit === 'day') customFormat = dtFormatter.day;
+          if (ts.unit === 'hour') customFormat = dtFormatter.hour;
+          if (ts.unit === 'minute') customFormat = dtFormatter.minute;
+
+          value = dt.formatDate(dateString, customFormat, true, false);
+        } else {
+          value = dt.formatDate(dateString, w.config.xaxis.labels.format);
+        }
+
+        return {
+          dateString: raw,
+          position: ts.position,
+          value: value,
+          unit: ts.unit,
+          year: ts.year,
+          month: ts.month
+        };
+      });
+
+      return reformattedTimescaleArray;
+    }
+  }, {
+    key: 'removeOverlappingTS',
+    value: function removeOverlappingTS(arr) {
+      var _this3 = this;
+
+      var graphics = new _Graphics2.default(this.ctx);
+      var lastDrawnIndex = 0;
+
+      var filteredArray = arr.map(function (item, index) {
+        if (index > 0 && _this3.w.config.xaxis.labels.hideOverlappingLabels) {
+          var prevLabelWidth = graphics.getTextRects(arr[lastDrawnIndex].value).width;
+          var prevPos = arr[lastDrawnIndex].position;
+          var pos = item.position;
+
+          if (pos > prevPos + prevLabelWidth + 10) {
+            lastDrawnIndex = index;
+            return item;
+          } else {
+            return null;
+          }
+        } else {
+          return item;
+        }
+      });
+
+      filteredArray = filteredArray.filter(function (f) {
+        return f !== null;
+      });
+
+      return filteredArray;
+    }
+  }]);
+
+  return TimeScale;
+}();
+
+exports.default = TimeScale;
+
+/***/ }),
+/* 47 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var TitleSubtitle = function () {
+  function TitleSubtitle(ctx) {
+    _classCallCheck(this, TitleSubtitle);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(TitleSubtitle, [{
+    key: 'draw',
+    value: function draw() {
+      this.drawTitleSubtitle('title');
+      this.drawTitleSubtitle('subtitle');
+    }
+  }, {
+    key: 'drawTitleSubtitle',
+    value: function drawTitleSubtitle(type) {
+      var w = this.w;
+      var tsConfig = type === 'title' ? w.config.title : w.config.subtitle;
+
+      var x = w.globals.svgWidth / 2;
+      var y = tsConfig.offsetY;
+      var textAnchor = 'middle';
+
+      if (tsConfig.align === 'left') {
+        x = 10;
+        textAnchor = 'start';
+      } else if (tsConfig.align === 'right') {
+        x = w.globals.svgWidth - 10;
+        textAnchor = 'end';
+      }
+
+      x = x + tsConfig.offsetX;
+      y = y + parseInt(tsConfig.style.fontSize) + 2;
+
+      if (tsConfig.text !== undefined) {
+        var graphics = new _Graphics2.default(this.ctx);
+        var titleText = graphics.drawText({
+          x: x,
+          y: y,
+          text: tsConfig.text,
+          textAnchor: textAnchor,
+          fontSize: tsConfig.style.fontSize,
+          fontFamily: tsConfig.style.fontFamily,
+          foreColor: tsConfig.style.color,
+          opacity: 1
+        });
+
+        titleText.node.setAttribute('class', 'apexcharts-' + type + '-text');
+
+        w.globals.dom.Paper.add(titleText);
+      }
+    }
+  }]);
+
+  return TitleSubtitle;
+}();
+
+exports.default = TitleSubtitle;
+
+/***/ }),
+/* 48 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+var _Toolbar2 = __webpack_require__(23);
+
+var _Toolbar3 = _interopRequireDefault(_Toolbar2);
+
+var _Scales = __webpack_require__(14);
+
+var _Scales2 = _interopRequireDefault(_Scales);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+/**
+ * ApexCharts Zoom Class for handling zooming and panning on axes based charts.
+ *
+ * @module ZoomPanSelection
+ **/
+
+var ZoomPanSelection = function (_Toolbar) {
+  _inherits(ZoomPanSelection, _Toolbar);
+
+  function ZoomPanSelection(ctx) {
+    _classCallCheck(this, ZoomPanSelection);
+
+    var _this = _possibleConstructorReturn(this, (ZoomPanSelection.__proto__ || Object.getPrototypeOf(ZoomPanSelection)).call(this, ctx));
+
+    _this.ctx = ctx;
+    _this.w = ctx.w;
+
+    _this.dragged = false;
+    _this.graphics = new _Graphics2.default(_this.ctx);
+
+    _this.eventList = ['mousedown', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend'];
+
+    _this.clientX = 0;
+    _this.clientY = 0;
+    _this.startX = 0;
+    _this.endX = 0;
+    _this.dragX = 0;
+    _this.startY = 0;
+    _this.endY = 0;
+    _this.dragY = 0;
+    return _this;
+  }
+
+  _createClass(ZoomPanSelection, [{
+    key: 'init',
+    value: function init(_ref) {
+      var _this2 = this;
+
+      var xyRatios = _ref.xyRatios;
+
+      var w = this.w;
+      var me = this;
+
+      this.xyRatios = xyRatios;
+
+      this.zoomRect = this.graphics.drawRect(0, 0, 0, 0);
+      this.selectionRect = this.graphics.drawRect(0, 0, 0, 0);
+      this.gridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid');
+
+      this.zoomRect.node.classList.add('apexcharts-zoom-rect');
+      this.selectionRect.node.classList.add('apexcharts-selection-rect');
+      w.globals.dom.elGraphical.add(this.zoomRect);
+      w.globals.dom.elGraphical.add(this.selectionRect);
+
+      if (w.config.chart.selection.type === 'x') {
+        this.slDraggableRect = this.selectionRect.draggable({
+          minX: 0,
+          minY: 0,
+          maxX: w.globals.gridWidth,
+          maxY: w.globals.gridHeight
+        }).on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+      } else if (w.config.chart.selection.type === 'y') {
+        this.slDraggableRect = this.selectionRect.draggable({
+          minX: 0,
+          maxX: w.globals.gridWidth
+        }).on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+      } else {
+        this.slDraggableRect = this.selectionRect.draggable().on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+      }
+      this.preselectedSelection();
+
+      this.hoverArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass);
+      this.hoverArea.classList.add('zoomable');
+
+      this.eventList.forEach(function (event) {
+        _this2.hoverArea.addEventListener(event, me.svgMouseEvents.bind(me, xyRatios), { capture: false, passive: true });
+      });
+    }
+
+    // remove the event listeners which were previously added on hover area
+
+  }, {
+    key: 'destroy',
+    value: function destroy() {
+      var _this3 = this;
+
+      var me = this;
+      this.eventList.forEach(function (event) {
+        if (_this3.hoverArea) {
+          _this3.hoverArea.removeEventListener(event, me.svgMouseEvents.bind(me, me.xyRatios), { capture: false, passive: true });
+        }
+      });
+
+      if (this.slDraggableRect) {
+        this.slDraggableRect.draggable(false);
+        this.slDraggableRect.off();
+        this.selectionRect.off();
+      }
+
+      this.selectionRect = null;
+      this.zoomRect = null;
+      this.gridRect = null;
+    }
+  }, {
+    key: 'svgMouseEvents',
+    value: function svgMouseEvents(xyRatios, e) {
+      var w = this.w;
+      var me = this;
+      var toolbar = this.ctx.toolbar;
+
+      var zoomtype = w.globals.zoomEnabled ? w.config.chart.zoom.type : w.config.chart.selection.type;
+
+      if (e.shiftKey) {
+        this.shiftWasPressed = true;
+        toolbar.enablePanning();
+      } else {
+        if (this.shiftWasPressed) {
+          toolbar.enableZooming();
+          this.shiftWasPressed = false;
+        }
+      }
+
+      var falsePositives = e.target.classList.contains('apexcharts-selection-rect') || e.target.parentNode.classList.contains('apexcharts-toolbar');
+
+      if (falsePositives) return;
+
+      me.clientX = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientX : e.type === 'touchend' ? e.changedTouches[0].clientX : e.clientX;
+      me.clientY = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientY : e.type === 'touchend' ? e.changedTouches[0].clientY : e.clientY;
+
+      if (e.type === 'mousedown' && e.which === 1) {
+        var gridRectDim = me.gridRect.getBoundingClientRect();
+
+        me.startX = me.clientX - gridRectDim.left;
+        me.startY = me.clientY - gridRectDim.top;
+
+        me.dragged = false;
+        me.w.globals.mousedown = true;
+      }
+
+      if (e.type === 'mousemove' && e.which === 1 || e.type === 'touchmove') {
+        me.dragged = true;
+
+        if (w.globals.panEnabled) {
+          w.globals.selection = null;
+          if (me.w.globals.mousedown) {
+            me.panDragging({
+              context: me,
+              zoomtype: zoomtype,
+              xyRatios: xyRatios
+            });
+          }
+        } else {
+          if (me.w.globals.mousedown && w.globals.zoomEnabled || me.w.globals.mousedown && w.globals.selectionEnabled) {
+            me.selection = me.selectionDrawing({
+              context: me,
+              zoomtype: zoomtype
+            });
+          }
+        }
+      }
+
+      if (e.type === 'mouseup' || e.type === 'touchend') {
+        // we will be calling getBoundingClientRect on each mousedown/mousemove/mouseup
+        var _gridRectDim = me.gridRect.getBoundingClientRect();
+
+        if (me.w.globals.mousedown) {
+          // user released the drag, now do all the calculations
+          me.endX = me.clientX - _gridRectDim.left;
+          me.endY = me.clientY - _gridRectDim.top;
+          me.dragX = Math.abs(me.endX - me.startX);
+          me.dragY = Math.abs(me.endY - me.startY);
+
+          if (w.globals.zoomEnabled || w.globals.selectionEnabled) {
+            me.selectionDrawn({
+              context: me,
+              zoomtype: zoomtype
+            });
+          }
+        }
+
+        if (w.globals.zoomEnabled) {
+          me.hideSelectionRect(this.selectionRect);
+        }
+
+        me.dragged = false;
+        me.w.globals.mousedown = false;
+      }
+
+      this.makeSelectionRectDraggable();
+    }
+  }, {
+    key: 'makeSelectionRectDraggable',
+    value: function makeSelectionRectDraggable() {
+      var w = this.w;
+
+      if (!this.selectionRect) return;
+
+      var rectDim = this.selectionRect.node.getBoundingClientRect();
+      if (rectDim.width > 0 && rectDim.height > 0) {
+        this.slDraggableRect.selectize().resize({
+          constraint: {
+            minX: 0,
+            minY: 0,
+            maxX: w.globals.gridWidth,
+            maxY: w.globals.gridHeight
+          }
+        }).on('resizing', this.selectionDragging.bind(this, 'resizing'));
+      }
+    }
+  }, {
+    key: 'preselectedSelection',
+    value: function preselectedSelection() {
+      var w = this.w;
+      var xyRatios = this.xyRatios;
+
+      if (!w.globals.zoomEnabled) {
+        if (typeof w.globals.selection !== 'undefined' && w.globals.selection !== null) {
+          this.drawSelectionRect(w.globals.selection);
+        } else {
+          if (w.config.chart.selection.xaxis.min !== undefined && w.config.chart.selection.xaxis.max !== undefined) {
+            var x = (w.config.chart.selection.xaxis.min - w.globals.minX) / xyRatios.xRatio;
+            var width = w.globals.gridWidth - (w.globals.maxX - w.config.chart.selection.xaxis.max) / xyRatios.xRatio - x;
+            var selectionRect = {
+              x: x,
+              y: 0,
+              width: width,
+              height: w.globals.gridHeight,
+              translateX: 0,
+              translateY: 0,
+              selectionEnabled: true
+            };
+            this.drawSelectionRect(selectionRect);
+            this.makeSelectionRectDraggable();
+            if (typeof w.config.chart.events.selection === 'function') {
+              w.config.chart.events.selection(this.ctx, {
+                xaxis: {
+                  min: w.config.chart.selection.xaxis.min,
+                  max: w.config.chart.selection.xaxis.max
+                },
+                yaxis: {}
+              });
+            }
+          }
+        }
+      }
+    }
+  }, {
+    key: 'drawSelectionRect',
+    value: function drawSelectionRect(_ref2) {
+      var x = _ref2.x,
+          y = _ref2.y,
+          width = _ref2.width,
+          height = _ref2.height,
+          translateX = _ref2.translateX,
+          translateY = _ref2.translateY;
+
+      var w = this.w;
+      var zoomRect = this.zoomRect;
+      var selectionRect = this.selectionRect;
+      if (this.dragged || w.globals.selection !== null) {
+        var scalingAttrs = {
+          transform: 'translate(' + translateX + ', ' + translateY + ')'
+
+          // change styles based on zoom or selection
+          // zoom is Enabled and user has dragged, so draw blue rect
+        };if (w.globals.zoomEnabled && this.dragged) {
+          zoomRect.attr({
+            x: x,
+            y: y,
+            width: width,
+            height: height,
+            fill: w.config.chart.zoom.zoomedArea.fill.color,
+            'fill-opacity': w.config.chart.zoom.zoomedArea.fill.opacity,
+            stroke: w.config.chart.zoom.zoomedArea.stroke.color,
+            'stroke-width': w.config.chart.zoom.zoomedArea.stroke.width,
+            'stroke-opacity': w.config.chart.zoom.zoomedArea.stroke.opacity
+          });
+          _Graphics2.default.setAttrs(zoomRect.node, scalingAttrs);
+        }
+
+        // selection is enabled
+        if (w.globals.selectionEnabled) {
+          selectionRect.attr({
+            x: x,
+            y: y,
+            width: width > 0 ? width : 0,
+            height: height > 0 ? height : 0,
+            fill: w.config.chart.selection.fill.color,
+            'fill-opacity': w.config.chart.selection.fill.opacity,
+            stroke: w.config.chart.selection.stroke.color,
+            'stroke-width': w.config.chart.selection.stroke.width,
+            'stroke-dasharray': w.config.chart.selection.stroke.dashArray,
+            'stroke-opacity': w.config.chart.selection.stroke.opacity
+          });
+
+          _Graphics2.default.setAttrs(selectionRect.node, scalingAttrs);
+        }
+      }
+    }
+  }, {
+    key: 'hideSelectionRect',
+    value: function hideSelectionRect(rect) {
+      if (rect) {
+        rect.attr({
+          x: 0,
+          y: 0,
+          width: 0,
+          height: 0
+        });
+      }
+    }
+  }, {
+    key: 'selectionDrawing',
+    value: function selectionDrawing(_ref3) {
+      var context = _ref3.context,
+          zoomtype = _ref3.zoomtype;
+
+      var w = this.w;
+      var me = context;
+
+      var gridRectDim = this.gridRect.getBoundingClientRect();
+
+      var startX = me.startX - 1;
+      var startY = me.startY;
+
+      var selectionWidth = me.clientX - gridRectDim.left - startX;
+      var selectionHeight = me.clientY - gridRectDim.top - startY;
+      var translateX = 0;
+      var translateY = 0;
+
+      var selectionRect = {};
+
+      if (Math.abs(selectionWidth + startX) > w.globals.gridWidth || me.clientX - gridRectDim.left < 0) {
+        // user dragged the mouse outside drawing area
+        // TODO: test the selectionRect and make sure it doesn't crosses drawing area
+        me.hideSelectionRect(this.zoomRect);
+        me.dragged = false;
+        me.w.globals.mousedown = false;
+      }
+
+      // inverse selection X
+      if (startX > me.clientX - gridRectDim.left) {
+        selectionWidth = Math.abs(selectionWidth);
+        translateX = -selectionWidth;
+      }
+
+      // inverse selection Y
+      if (startY > me.clientY - gridRectDim.top) {
+        selectionHeight = Math.abs(selectionHeight);
+        translateY = -selectionHeight;
+      }
+
+      if (zoomtype === 'x') {
+        selectionRect = {
+          x: startX,
+          y: 0,
+          width: selectionWidth,
+          height: w.globals.gridHeight,
+          translateX: translateX,
+          translateY: 0
+        };
+      } else if (zoomtype === 'y') {
+        selectionRect = {
+          x: 0,
+          y: startY,
+          width: w.globals.gridWidth,
+          height: selectionHeight,
+          translateX: 0,
+          translateY: translateY
+        };
+      } else {
+        selectionRect = {
+          x: startX,
+          y: startY,
+          width: selectionWidth,
+          height: selectionHeight,
+          translateX: translateX,
+          translateY: translateY
+        };
+      }
+
+      me.drawSelectionRect(selectionRect);
+      me.selectionDragging('resizing');
+      return selectionRect;
+    }
+  }, {
+    key: 'selectionDragging',
+    value: function selectionDragging(type, e) {
+      var _this4 = this;
+
+      var w = this.w;
+      var xyRatios = this.xyRatios;
+
+      var selRect = this.selectionRect;
+
+      var timerInterval = 0;
+
+      if (type === 'resizing') {
+        timerInterval = 30;
+      }
+      if (typeof w.config.chart.events.selection === 'function' && w.globals.selectionEnabled) {
+        // a small debouncer is required when resizing to avoid freezing the chart
+        clearTimeout(this.w.globals.selectionResizeTimer);
+        this.w.globals.selectionResizeTimer = window.setTimeout(function () {
+          var gridRectDim = _this4.gridRect.getBoundingClientRect();
+          var selectionRect = selRect.node.getBoundingClientRect();
+
+          var minX = w.globals.xAxisScale.niceMin + (selectionRect.left - gridRectDim.left) * xyRatios.xRatio;
+          var maxX = w.globals.xAxisScale.niceMin + (selectionRect.right - gridRectDim.left) * xyRatios.xRatio;
+
+          var minY = w.globals.yAxisScale[0].niceMin + (gridRectDim.bottom - selectionRect.bottom) * xyRatios.yRatio[0];
+          var maxY = w.globals.yAxisScale[0].niceMax - (selectionRect.top - gridRectDim.top) * xyRatios.yRatio[0];
+
+          w.config.chart.events.selection(_this4.ctx, {
+            xaxis: {
+              min: minX,
+              max: maxX
+            },
+            yaxis: {
+              min: minY,
+              max: maxY
+            }
+          });
+        }, timerInterval);
+      }
+    }
+  }, {
+    key: 'selectionDrawn',
+    value: function selectionDrawn(_ref4) {
+      var context = _ref4.context,
+          zoomtype = _ref4.zoomtype;
+
+      var w = this.w;
+      var me = context;
+      var xyRatios = this.xyRatios;
+      var toolbar = this.ctx.toolbar;
+
+      if (me.startX > me.endX) {
+        var tempX = me.startX;
+        me.startX = me.endX;
+        me.endX = tempX;
+      }
+      if (me.startY > me.endY) {
+        var tempY = me.startY;
+        me.startY = me.endY;
+        me.endY = tempY;
+      }
+
+      var xLowestValue = w.globals.xAxisScale.niceMin + me.startX * xyRatios.xRatio;
+      var xHighestValue = w.globals.xAxisScale.niceMin + me.endX * xyRatios.xRatio;
+
+      // TODO: we will consider the 1st y axis values here for getting highest and lowest y
+      var yHighestValue = [];
+      var yLowestValue = [];
+
+      w.config.yaxis.forEach(function (yaxe, index) {
+        yHighestValue.push(Math.floor(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.startY));
+        yLowestValue.push(Math.floor(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.endY));
+      });
+
+      if (me.dragged && (me.dragX > 10 || me.dragY > 10) && xLowestValue !== xHighestValue) {
+        if (w.globals.zoomEnabled) {
+          var yaxis = _Utils2.default.clone(w.config.yaxis);
+
+          // before zooming in/out, store the last yaxis and xaxis range, so that when user hits the RESET button, we get the original range
+          // also - make sure user is not already zoomed in/out - otherwise we will store zoomed values in lastAxis
+          if (!w.globals.zoomed) {
+            w.globals.lastXAxis = _Utils2.default.clone(w.config.xaxis);
+            w.globals.lastYAxis = _Utils2.default.clone(w.config.yaxis);
+          }
+
+          var xaxis = {
+            min: xLowestValue,
+            max: xHighestValue
+          };
+
+          if (zoomtype === 'xy' || zoomtype === 'y') {
+            yaxis.forEach(function (yaxe, index) {
+              yaxis[index].min = yLowestValue[index];
+              yaxis[index].max = yHighestValue[index];
+            });
+          }
+
+          if (w.config.chart.zoom.autoScaleYaxis) {
+            var scale = new _Scales2.default(me.ctx);
+            yaxis = scale.autoScaleY(me.ctx, { xaxis: xaxis });
+          }
+
+          if (toolbar) {
+            var beforeZoomRange = toolbar.getBeforeZoomRange(xaxis, yaxis);
+            if (beforeZoomRange) {
+              xaxis = beforeZoomRange.xaxis ? beforeZoomRange.xaxis : xaxis;
+              yaxis = beforeZoomRange.yaxis ? beforeZoomRange.yaxe : yaxis;
+            }
+          }
+
+          me.ctx._updateOptions({
+            xaxis: xaxis,
+            yaxis: yaxis
+          }, false, me.w.config.chart.animations.dynamicAnimation.enabled);
+
+          if (typeof w.config.chart.events.zoomed === 'function') {
+            toolbar.zoomCallback(xaxis, yaxis);
+          }
+
+          w.globals.zoomed = true;
+        } else if (w.globals.selectionEnabled) {
+          var _yaxis = null;
+          var _xaxis = null;
+          _xaxis = {
+            min: xLowestValue,
+            max: xHighestValue
+          };
+          if (zoomtype === 'xy' || zoomtype === 'y') {
+            _yaxis = _Utils2.default.clone(w.config.yaxis);
+            _yaxis.forEach(function (yaxe, index) {
+              _yaxis[index].min = yLowestValue[index];
+              _yaxis[index].max = yHighestValue[index];
+            });
+          }
+
+          w.globals.selection = me.selection;
+          if (typeof w.config.chart.events.selection === 'function') {
+            w.config.chart.events.selection(me.ctx, {
+              xaxis: _xaxis,
+              yaxis: _yaxis
+            });
+          }
+        }
+      }
+    }
+  }, {
+    key: 'panDragging',
+    value: function panDragging(_ref5) {
+      var context = _ref5.context,
+          zoomtype = _ref5.zoomtype;
+
+      var w = this.w;
+      var me = context;
+
+      var moveDirection = void 0;
+
+      // check to make sure there is data to compare against
+      if (typeof w.globals.lastClientPosition.x !== 'undefined') {
+        // get the change from last position to this position
+        var deltaX = w.globals.lastClientPosition.x - me.clientX;
+        var deltaY = w.globals.lastClientPosition.y - me.clientY;
+
+        // check which direction had the highest amplitude and then figure out direction by checking if the value is greater or less than zero
+        if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0) {
+          moveDirection = 'left';
+        } else if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX < 0) {
+          moveDirection = 'right';
+        } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY > 0) {
+          moveDirection = 'up';
+        } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY < 0) {
+          moveDirection = 'down';
+        }
+      }
+
+      // set the new last position to the current for next time (to get the position of drag)
+      w.globals.lastClientPosition = {
+        x: me.clientX,
+        y: me.clientY
+      };
+
+      var xLowestValue = w.globals.minX;
+      var xHighestValue = w.globals.maxX;
+
+      this.panScrolled(moveDirection, xLowestValue, xHighestValue);
+    }
+  }, {
+    key: 'panScrolled',
+    value: function panScrolled(moveDirection, xLowestValue, xHighestValue) {
+      var w = this.w;
+      var xyRatios = this.xyRatios;
+      var yaxis = _Utils2.default.clone(w.config.yaxis);
+
+      if (moveDirection === 'left') {
+        xLowestValue = w.globals.minX + w.globals.gridWidth / 15 * xyRatios.xRatio;
+        xHighestValue = w.globals.maxX + w.globals.gridWidth / 15 * xyRatios.xRatio;
+      } else if (moveDirection === 'right') {
+        xLowestValue = w.globals.minX - w.globals.gridWidth / 15 * xyRatios.xRatio;
+        xHighestValue = w.globals.maxX - w.globals.gridWidth / 15 * xyRatios.xRatio;
+      }
+
+      if (xLowestValue < w.globals.initialminX || xHighestValue > w.globals.initialmaxX) {
+        xLowestValue = w.globals.minX;
+        xHighestValue = w.globals.maxX;
+      }
+
+      var xaxis = {
+        min: xLowestValue,
+        max: xHighestValue
+      };
+
+      if (w.config.chart.zoom.autoScaleYaxis) {
+        var scale = new _Scales2.default(me.ctx);
+        yaxis = scale.autoScaleY(me.ctx, { xaxis: xaxis });
+      }
+      this.ctx._updateOptions({
+        xaxis: {
+          min: xLowestValue,
+          max: xHighestValue
+        },
+        yaxis: yaxis
+      }, false, false);
+
+      if (typeof w.config.chart.events.scrolled === 'function') {
+        w.config.chart.events.scrolled(this.ctx, {
+          xaxis: {
+            min: xLowestValue,
+            max: xHighestValue
+          }
+        });
+      }
+    }
+  }]);
+
+  return ZoomPanSelection;
+}(_Toolbar3.default);
+
+exports.default = ZoomPanSelection;
+
+/***/ }),
+/* 49 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Animations = __webpack_require__(5);
+
+var _Animations2 = _interopRequireDefault(_Animations);
+
+var _CoreUtils = __webpack_require__(2);
+
+var _CoreUtils2 = _interopRequireDefault(_CoreUtils);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _XAxis = __webpack_require__(15);
+
+var _XAxis2 = _interopRequireDefault(_XAxis);
+
+var _YAxis = __webpack_require__(16);
+
+var _YAxis2 = _interopRequireDefault(_YAxis);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Grid Class for drawing Cartesian Grid.
+ *
+ * @module Grid
+ **/
+
+var Grid = function () {
+  function Grid(ctx) {
+    _classCallCheck(this, Grid);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+
+    var w = this.w;
+    this.anim = new _Animations2.default(this.ctx);
+    this.xaxisLabels = w.globals.labels.slice();
+
+    this.animX = w.config.grid.xaxis.lines.animate && w.config.chart.animations.enabled;
+    this.animY = w.config.grid.yaxis.lines.animate && w.config.chart.animations.enabled;
+
+    if (w.globals.timelineLabels.length > 0) {
+      //  timeline labels are there
+      this.xaxisLabels = w.globals.timelineLabels.slice();
+    }
+  }
+
+  // .when using sparklines or when showing no grid, we need to have a grid area which is reused at many places for other calculations as well
+
+
+  _createClass(Grid, [{
+    key: 'drawGridArea',
+    value: function drawGridArea() {
+      var elGrid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+
+      var w = this.w;
+
+      var graphics = new _Graphics2.default(this.ctx);
+
+      if (elGrid === null) {
+        elGrid = graphics.group({
+          class: 'apexcharts-grid'
+        });
+      }
+
+      var elVerticalLine = graphics.drawLine(w.globals.padHorizontal, 1, w.globals.padHorizontal, w.globals.gridHeight, 'transparent');
+
+      var elHorzLine = graphics.drawLine(w.globals.padHorizontal, w.globals.gridHeight, w.globals.gridWidth, w.globals.gridHeight, 'transparent');
+
+      elGrid.add(elHorzLine);
+      elGrid.add(elVerticalLine);
+
+      return elGrid;
+    }
+  }, {
+    key: 'drawGrid',
+    value: function drawGrid() {
+      var w = this.w;
+
+      var xAxis = new _XAxis2.default(this.ctx);
+      var yaxis = new _YAxis2.default(this.ctx);
+
+      var gl = this.w.globals;
+
+      var elgrid = null;
+
+      if (gl.axisCharts) {
+        if (w.config.grid.show) {
+          // grid is drawn after xaxis and yaxis are drawn
+          elgrid = this.renderGrid();
+          gl.dom.elGraphical.add(elgrid.el);
+
+          this.drawGridArea(elgrid.el);
+        } else {
+          var elgridArea = this.drawGridArea();
+          gl.dom.elGraphical.add(elgridArea);
+        }
+
+        if (elgrid !== null) {
+          xAxis.xAxisLabelCorrections(elgrid.xAxisTickWidth);
+        }
+
+        yaxis.setYAxisTextAlignments();
+      }
+    }
+
+    // This mask will clip off overflowing graphics from the drawable area
+
+  }, {
+    key: 'createGridMask',
+    value: function createGridMask() {
+      var w = this.w;
+      var gl = w.globals;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var strokeSize = Array.isArray(w.config.stroke.width) ? 0 : w.config.stroke.width;
+
+      if (Array.isArray(w.config.stroke.width)) {
+        var strokeMaxSize = 0;
+        w.config.stroke.width.forEach(function (m) {
+          strokeMaxSize = Math.max(strokeMaxSize, m);
+        });
+        strokeSize = strokeMaxSize;
+      }
+
+      gl.dom.elGridRectMask = document.createElementNS(gl.SVGNS, 'clipPath');
+      gl.dom.elGridRectMask.setAttribute('id', 'gridRectMask' + gl.cuid);
+
+      gl.dom.elGridRectMarkerMask = document.createElementNS(gl.SVGNS, 'clipPath');
+      gl.dom.elGridRectMarkerMask.setAttribute('id', 'gridRectMarkerMask' + gl.cuid);
+
+      gl.dom.elGridRect = graphics.drawRect(-strokeSize / 2, -strokeSize / 2, gl.gridWidth + strokeSize, gl.gridHeight + strokeSize, 0, '#fff');
+
+      var coreUtils = new _CoreUtils2.default(this);
+      coreUtils.getLargestMarkerSize();
+
+      var markerSize = w.globals.markers.largestSize + 1;
+
+      gl.dom.elGridRectMarker = graphics.drawRect(-markerSize, -markerSize, gl.gridWidth + markerSize * 2, gl.gridHeight + markerSize * 2, 0, '#fff');
+      gl.dom.elGridRectMask.appendChild(gl.dom.elGridRect.node);
+      gl.dom.elGridRectMarkerMask.appendChild(gl.dom.elGridRectMarker.node);
+
+      var defs = gl.dom.baseEl.querySelector('defs');
+      defs.appendChild(gl.dom.elGridRectMask);
+      defs.appendChild(gl.dom.elGridRectMarkerMask);
+    }
+
+    // actual grid rendering
+
+  }, {
+    key: 'renderGrid',
+    value: function renderGrid() {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var strokeDashArray = w.config.grid.strokeDashArray;
+
+      var elg = graphics.group({
+        class: 'apexcharts-grid'
+      });
+      var elgridLinesH = graphics.group({
+        class: 'apexcharts-gridlines-horizontal'
+      });
+      var elgridLinesV = graphics.group({
+        class: 'apexcharts-gridlines-vertical'
+      });
+
+      elg.add(elgridLinesH);
+      elg.add(elgridLinesV);
+
+      var tickAmount = 8;
+      for (var i = 0; i < w.globals.series.length; i++) {
+        if (typeof w.globals.yAxisScale[i] !== 'undefined') {
+          tickAmount = w.globals.yAxisScale[i].result.length - 1;
+        }
+        if (tickAmount > 2) break;
+      }
+
+      var xCount = void 0;
+
+      if (!w.globals.isBarHorizontal) {
+        xCount = this.xaxisLabels.length;
+
+        // draw vertical lines
+        if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) {
+          var x1 = w.globals.padHorizontal;
+          var y1 = 0;
+          var x2 = void 0;
+          var y2 = w.globals.gridHeight;
+
+          if (w.globals.timelineLabels.length > 0) {
+            for (var _i = 0; _i < xCount; _i++) {
+              x1 = this.xaxisLabels[_i].position;
+              x2 = this.xaxisLabels[_i].position;
+              if (w.config.grid.xaxis.lines.show && x1 > 0 && x1 < w.globals.gridWidth) {
+                var line = graphics.drawLine(x1, y1, x2, y2, w.config.grid.borderColor, strokeDashArray);
+                line.node.classList.add('apexcharts-gridline');
+                elgridLinesV.add(line);
+
+                if (this.animX) {
+                  this.animateLine(line, { x1: 0, x2: 0 }, { x1: x1, x2: x2 });
+                }
+              }
+
+              var xAxis = new _XAxis2.default(this.ctx);
+
+              if (_i === xCount - 1) {
+                if (!w.globals.skipLastTimelinelabel) {
+                  // skip drawing last label here
+                  xAxis.drawXaxisTicks(x1, elg);
+                }
+              } else {
+                xAxis.drawXaxisTicks(x1, elg);
+              }
+            }
+          } else {
+            var xCountForCategoryCharts = xCount;
+            for (var _i2 = 0; _i2 < xCountForCategoryCharts; _i2++) {
+              var x1Count = xCountForCategoryCharts;
+              if (w.globals.isXNumeric && w.config.chart.type !== 'bar') {
+                x1Count -= 1;
+              }
+
+              x1 = x1 + w.globals.gridWidth / x1Count;
+              x2 = x1;
+
+              // skip the last line
+              if (_i2 === x1Count - 1) break;
+
+              if (w.config.grid.xaxis.lines.show) {
+                var _line = graphics.drawLine(x1, y1, x2, y2, w.config.grid.borderColor, strokeDashArray);
+
+                _line.node.classList.add('apexcharts-gridline');
+                elgridLinesV.add(_line);
+
+                if (this.animX) {
+                  this.animateLine(_line, { x1: 0, x2: 0 }, { x1: x1, x2: x2 });
+                }
+              }
+
+              var _xAxis = new _XAxis2.default(this.ctx);
+              _xAxis.drawXaxisTicks(x1, elg);
+            }
+          }
+        }
+
+        // draw horizontal lines
+        if (w.config.grid.yaxis.lines.show) {
+          var _x2 = 0;
+          var _y = 0;
+          var _y2 = 0;
+          var _x3 = w.globals.gridWidth;
+          for (var _i3 = 0; _i3 < tickAmount + 1; _i3++) {
+            var _line2 = graphics.drawLine(_x2, _y, _x3, _y2, w.config.grid.borderColor, strokeDashArray);
+            elgridLinesH.add(_line2);
+            _line2.node.classList.add('apexcharts-gridline');
+
+            if (this.animY) {
+              this.animateLine(_line2, { y1: _y + 20, y2: _y2 + 20 }, { y1: _y, y2: _y2 });
+            }
+
+            _y = _y + w.globals.gridHeight / tickAmount;
+            _y2 = _y;
+          }
+        }
+      } else {
+        xCount = tickAmount;
+
+        // draw vertical lines
+        if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) {
+          var _x4 = w.globals.padHorizontal;
+          var _y3 = 0;
+          var _x5 = void 0;
+          var _y4 = w.globals.gridHeight;
+          for (var _i4 = 0; _i4 < xCount + 1; _i4++) {
+            _x4 = _x4 + w.globals.gridWidth / xCount + 0.3;
+            _x5 = _x4;
+
+            // skip the last vertical line
+            if (_i4 === xCount - 1) break;
+
+            if (w.config.grid.xaxis.lines.show) {
+              var _line3 = graphics.drawLine(_x4, _y3, _x5, _y4, w.config.grid.borderColor, strokeDashArray);
+
+              _line3.node.classList.add('apexcharts-gridline');
+              elgridLinesV.add(_line3);
+
+              if (this.animX) {
+                this.animateLine(_line3, { x1: 0, x2: 0 }, { x1: _x4, x2: _x5 });
+              }
+            }
+
+            // skip the first vertical line
+            var _xAxis2 = new _XAxis2.default(this.ctx);
+            _xAxis2.drawXaxisTicks(_x4, elg);
+          }
+        }
+
+        // draw horizontal lines
+        if (w.config.grid.yaxis.lines.show) {
+          var _x6 = 0;
+          var _y5 = 0;
+          var _y6 = 0;
+          var _x7 = w.globals.gridWidth;
+          for (var _i5 = 0; _i5 < w.globals.dataPoints + 1; _i5++) {
+            var _line4 = graphics.drawLine(_x6, _y5, _x7, _y6, w.config.grid.borderColor, strokeDashArray);
+            elgridLinesH.add(_line4);
+            _line4.node.classList.add('apexcharts-gridline');
+
+            if (this.animY) {
+              this.animateLine(_line4, { y1: _y5 + 20, y2: _y6 + 20 }, { y1: _y5, y2: _y6 });
+            }
+
+            _y5 = _y5 + w.globals.gridHeight / w.globals.dataPoints;
+            _y6 = _y5;
+          }
+        }
+      }
+
+      this.drawGridBands(elg, xCount, tickAmount);
+      return {
+        el: elg,
+        xAxisTickWidth: w.globals.gridWidth / xCount
+      };
+    }
+  }, {
+    key: 'drawGridBands',
+    value: function drawGridBands(elg, xCount, tickAmount) {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      // rows background bands
+      if (w.config.grid.row.colors !== undefined && w.config.grid.row.colors.length > 0) {
+        var x1 = 0;
+        var y1 = 0;
+        var y2 = w.globals.gridHeight / tickAmount;
+        var x2 = w.globals.gridWidth;
+
+        for (var i = 0, c = 0; i < tickAmount; i++, c++) {
+          if (c >= w.config.grid.row.colors.length) {
+            c = 0;
+          }
+          var color = w.config.grid.row.colors[c];
+          var rect = graphics.drawRect(x1, y1, x2, y2, 0, color, w.config.grid.row.opacity);
+          elg.add(rect);
+          rect.node.classList.add('apexcharts-gridRow');
+
+          y1 = y1 + w.globals.gridHeight / tickAmount;
+        }
+      }
+
+      // columns background bands
+      if (w.config.grid.column.colors !== undefined && w.config.grid.column.colors.length > 0) {
+        var _x8 = w.globals.padHorizontal;
+        var _y7 = 0;
+        var _x9 = w.globals.padHorizontal + w.globals.gridWidth / xCount;
+        var _y8 = w.globals.gridHeight;
+        for (var _i6 = 0, _c = 0; _i6 < xCount; _i6++, _c++) {
+          if (_c >= w.config.grid.column.colors.length) {
+            _c = 0;
+          }
+          var _color = w.config.grid.column.colors[_c];
+          var _rect = graphics.drawRect(_x8, _y7, _x9, _y8, 0, _color, w.config.grid.column.opacity);
+          _rect.node.classList.add('apexcharts-gridColumn');
+          elg.add(_rect);
+
+          _x8 = _x8 + w.globals.gridWidth / xCount;
+        }
+      }
+    }
+  }, {
+    key: 'animateLine',
+    value: function animateLine(line, from, to) {
+      var w = this.w;
+
+      var initialAnim = w.config.chart.animations;
+
+      if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+        var speed = initialAnim.speed;
+        this.anim.animateLine(line, from, to, speed);
+      }
+    }
+  }]);
+
+  return Grid;
+}();
+
+exports.default = Grid;
+
+/***/ }),
+/* 50 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var Globals = function () {
+  function Globals() {
+    _classCallCheck(this, Globals);
+  }
+
+  _createClass(Globals, [{
+    key: 'globalVars',
+    value: function globalVars(config) {
+      return {
+        chartID: null, // chart ID - apexcharts-cuid
+        cuid: null, // chart ID - random numbers excluding "apexcharts" part
+        events: {
+          beforeMount: [],
+          mounted: [],
+          updated: [],
+          clicked: [],
+          selection: [],
+          dataPointSelection: [],
+          zoomed: [],
+          scrolled: []
+        },
+        colors: [],
+        clientX: null,
+        clientY: null,
+        fill: {
+          colors: []
+        },
+        stroke: {
+          colors: []
+        },
+        dataLabels: {
+          style: {
+            colors: []
+          }
+        },
+        radarPolygons: {
+          fill: {
+            colors: []
+          }
+        },
+        markers: {
+          colors: [],
+          size: config.markers.size,
+          largestSize: 0
+        },
+        animationEnded: false,
+        isTouchDevice: 'ontouchstart' in window || navigator.msMaxTouchPoints,
+        isDirty: false, // chart has been updated after the initial render. This is different than dataChanged property. isDirty means user manually called some method to update
+        initialConfig: null, // we will store the first config user has set to go back when user finishes interactions like zooming and come out of it
+        lastXAxis: [],
+        lastYAxis: [],
+        series: [], // the MAIN series array (y values)
+        seriesRangeStart: [], // the clone of series becomes the start in range
+        seriesRangeEnd: [], // the end values in range chart
+        seriesPercent: [], // the percentage values of the given series
+        seriesTotals: [],
+        stackedSeriesTotals: [],
+        seriesX: [], // store the numeric x values in this array (x values)
+        seriesZ: [], // The 3rd "Z" dimension for bubbles chart (z values)
+        labels: [], // store the text to draw on x axis
+        // Don't mutate the labels, many things including tooltips depends on it!
+        timelineLabels: [], // store the timeline Labels in another variable
+        invertedTimelineLabels: [], // for rangebar timeline
+        seriesNames: [], // same as labels, used in non axis charts
+        noLabelsProvided: false, // if user didn't provide any categories/labels or x values, fallback to 1,2,3,4...
+        allSeriesCollapsed: false,
+        collapsedSeries: [], // when user collapses a series, it goes into this array
+        collapsedSeriesIndices: [], // this stores the index of the collapsedSeries instead of whole object for quick access
+        ancillaryCollapsedSeries: [], // when user collapses an "alwaysVisible" series, it goes into this array
+        ancillaryCollapsedSeriesIndices: [], // this stores the index of the ancillaryCollapsedSeries whose y-axis is always visible
+        risingSeries: [], // when user re-opens a collapsed series, it goes here
+        dataFormatXNumeric: false, // boolean value to indicate user has passed numeric x values
+        selectedDataPoints: [],
+        ignoreYAxisIndexes: [], // when series are being collapsed in multiple y axes, ignore certain index
+        padHorizontal: 0,
+        maxValsInArrayIndex: 0,
+        zoomEnabled: config.chart.toolbar.autoSelected === 'zoom' && config.chart.toolbar.tools.zoom && config.chart.zoom.enabled,
+        panEnabled: config.chart.toolbar.autoSelected === 'pan' && config.chart.toolbar.tools.pan,
+        selectionEnabled: config.chart.toolbar.autoSelected === 'selection' && config.chart.toolbar.tools.selection,
+        yaxis: null,
+        minY: Number.MIN_VALUE, //  is 5e-324, i.e. the smallest positive number
+        // NOTE: If there are multiple y axis, the first yaxis array element will be considered for all y values calculations. Rest all will be calculated based on that
+        maxY: -Number.MAX_VALUE, // is -1.7976931348623157e+308
+        // NOTE: The above note for minY applies here as well
+
+        minYArr: [],
+        maxYArr: [],
+        maxX: -Number.MAX_VALUE, // is -1.7976931348623157e+308
+        initialmaxX: -Number.MAX_VALUE,
+        minX: Number.MIN_VALUE, //  is 5e-324, i.e. the smallest positive number
+        initialminX: Number.MIN_VALUE,
+        minZ: Number.MIN_VALUE, // Max Z value in charts with Z axis
+        maxZ: -Number.MAX_VALUE, // Max Z value in charts with Z axis
+        minXDiff: Number.MAX_VALUE,
+        mousedown: false,
+        lastClientPosition: {}, // don't reset this variable this the chart is destroyed. It is used to detect right or left mousemove in panning
+        visibleXRange: undefined,
+        yRange: [], // this property is the absolute sum of positive and negative values [eg (-100 + 200 = 300)] - yAxis
+        zRange: 0, // zAxis Range (for bubble charts)
+        xRange: 0, // xAxis range
+        yValueDecimal: 0, // are there floating numbers in the series. If yes, this represent the len of the decimals
+        total: 0,
+        SVGNS: 'http://www.w3.org/2000/svg', // svg namespace
+        svgWidth: 0, // the whole svg width
+        svgHeight: 0, // the whole svg height
+        noData: false, // whether there is any data to display or not
+        locale: {}, // the current locale values will be preserved here for global access
+        dom: {}, // for storing all dom nodes in this particular property
+        // elWrap: null, // the element that wraps everything
+        // elGraphical: null, // this contains lines/areas/bars/pies
+        // elGridRect: null, // paths going outside this area will be clipped
+        // elGridRectMask: null, // clipping will happen with this mask
+        // elGridRectMarkerMask: null, // clipping will happen with this mask
+        // elLegendWrap: null, // the whole legend area
+        // elDefs: null, // [defs] element
+        memory: {
+          methodsToExec: []
+        },
+        shouldAnimate: true,
+        skipLastTimelinelabel: false, // when last label is cropped, skip drawing it
+        delayedElements: [], // element which appear after animation has finished
+        axisCharts: true, // chart type = line or area or bar
+        // (refer them also as plot charts in the code)
+        isXNumeric: false, // bool: data was provided in a {[x,y], [x,y]} pattern
+        isDataXYZ: false, // bool: data was provided in a {[x,y,z]} pattern
+        resized: false, // bool: user has resized
+        resizeTimer: null, // timeout function to make a small delay before
+        // drawing when user resized
+        comboCharts: false, // bool: whether it's a combination of line/column
+        comboChartsHasBars: false, // bool: whether it's a combination of line/column
+        dataChanged: false, // bool: has data changed dynamically
+        previousPaths: [], // array: when data is changed, it will animate from
+        // previous paths
+        seriesXvalues: [], // we will need this in tooltip (it's x position)
+        // when we will have unequal x values, we will need
+        // some way to get x value depending on mouse pointer
+        seriesYvalues: [], // we will need this when deciding which series
+        // user hovered on
+        seriesCandleO: [], // candle stick open values
+        seriesCandleH: [], // candle stick high values
+        seriesCandleL: [], // candle stick low values
+        seriesCandleC: [], // candle stick close values
+        allSeriesHasEqualX: true,
+        dataPoints: 0, // the longest series length
+        pointsArray: [], // store the points positions here to draw later on hover
+        // format is - [[x,y],[x,y]... [x,y]]
+        dataLabelsRects: [], // store the positions of datalabels to prevent collision
+        lastDrawnDataLabelsIndexes: [],
+        hasNullValues: false, // bool: whether series contains null values
+        easing: null, // function: animation effect to apply
+        zoomed: false, // whether user has zoomed or not
+        gridWidth: 0, // drawable width of actual graphs (series paths)
+        gridHeight: 0, // drawable height of actual graphs (series paths)
+        yAxisScale: [],
+        xAxisScale: null,
+        xAxisTicksPositions: [],
+        timescaleTicks: [],
+        rotateXLabels: false,
+        defaultLabels: false,
+        xLabelFormatter: undefined, // formatter for x axis labels
+        yLabelFormatters: [],
+        xaxisTooltipFormatter: undefined, // formatter for x axis tooltip
+        ttKeyFormatter: undefined,
+        ttVal: undefined,
+        ttZFormatter: undefined,
+        LINE_HEIGHT_RATIO: 1.618,
+        xAxisLabelsHeight: 0,
+        yAxisLabelsWidth: 0,
+        scaleX: 1,
+        scaleY: 1,
+        translateX: 0,
+        translateY: 0,
+        translateYAxisX: [],
+        yLabelsCoords: [],
+        yTitleCoords: [],
+        yAxisWidths: [],
+        translateXAxisY: 0,
+        translateXAxisX: 0,
+        tooltip: null,
+        tooltipOpts: null
+      };
+    }
+  }, {
+    key: 'init',
+    value: function init(config) {
+      var globals = this.globalVars(config);
+
+      globals.initialConfig = _Utils2.default.extend({}, config);
+      globals.initialSeries = JSON.parse(JSON.stringify(globals.initialConfig.series));
+      globals.lastXAxis = JSON.parse(JSON.stringify(globals.initialConfig.xaxis));
+      globals.lastYAxis = JSON.parse(JSON.stringify(globals.initialConfig.yaxis));
+      return globals;
+    }
+  }]);
+
+  return Globals;
+}();
+
+exports.default = Globals;
+
+/***/ }),
+/* 51 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Tooltip.AxesTooltip Class.
+ *
+ * @module Tooltip.AxesTooltip
+ **/
+
+var AxesTooltip = function () {
+  function AxesTooltip(tooltipContext) {
+    _classCallCheck(this, AxesTooltip);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+  }
+
+  /**
+   * This method adds the secondary tooltip which appears below x axis
+   * @memberof Tooltip
+   **/
+
+
+  _createClass(AxesTooltip, [{
+    key: 'drawXaxisTooltip',
+    value: function drawXaxisTooltip() {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      var isBottom = w.config.xaxis.position === 'bottom';
+
+      ttCtx.xaxisOffY = isBottom ? w.globals.gridHeight + 1 : 1;
+      var tooltipCssClass = isBottom ? 'apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom' : 'apexcharts-xaxistooltip apexcharts-xaxistooltip-top';
+
+      var renderTo = w.globals.dom.elWrap;
+
+      if (ttCtx.blxaxisTooltip) {
+        var xaxisTooltip = w.globals.dom.baseEl.querySelector('.apexcharts-xaxistooltip');
+
+        if (xaxisTooltip === null) {
+          ttCtx.xaxisTooltip = document.createElement('div');
+          ttCtx.xaxisTooltip.setAttribute('class', tooltipCssClass + ' ' + w.config.tooltip.theme);
+
+          renderTo.appendChild(ttCtx.xaxisTooltip);
+
+          ttCtx.xaxisTooltipText = document.createElement('div');
+          ttCtx.xaxisTooltipText.classList.add('apexcharts-xaxistooltip-text');
+
+          ttCtx.xaxisTooltipText.style.fontFamily = w.config.xaxis.tooltip.style.fontFamily || w.config.chart.fontFamily;
+          ttCtx.xaxisTooltipText.style.fontSize = w.config.xaxis.tooltip.style.fontSize;
+
+          ttCtx.xaxisTooltip.appendChild(ttCtx.xaxisTooltipText);
+        }
+      }
+    }
+
+    /**
+     * This method adds the secondary tooltip which appears below x axis
+     * @memberof Tooltip
+     **/
+
+  }, {
+    key: 'drawYaxisTooltip',
+    value: function drawYaxisTooltip() {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      for (var i = 0; i < w.config.yaxis.length; i++) {
+        var isRight = w.config.yaxis[i].opposite || w.config.yaxis[i].crosshairs.opposite;
+
+        ttCtx.yaxisOffX = isRight ? w.globals.gridWidth + 1 : 1;
+        var tooltipCssClass = isRight ? 'apexcharts-yaxistooltip apexcharts-yaxistooltip-' + i + ' apexcharts-yaxistooltip-right' : 'apexcharts-yaxistooltip apexcharts-yaxistooltip-' + i + ' apexcharts-yaxistooltip-left';
+
+        var renderTo = w.globals.dom.elWrap;
+
+        if (ttCtx.blyaxisTooltip) {
+          var yaxisTooltip = w.globals.dom.baseEl.querySelector('.apexcharts-yaxistooltip apexcharts-yaxistooltip-' + i);
+
+          if (yaxisTooltip === null) {
+            ttCtx.yaxisTooltip = document.createElement('div');
+            ttCtx.yaxisTooltip.setAttribute('class', tooltipCssClass + ' ' + w.config.tooltip.theme);
+
+            renderTo.appendChild(ttCtx.yaxisTooltip);
+
+            if (i === 0) ttCtx.yaxisTooltipText = [];
+
+            ttCtx.yaxisTooltipText.push(document.createElement('div'));
+            ttCtx.yaxisTooltipText[i].classList.add('apexcharts-yaxistooltip-text');
+
+            ttCtx.yaxisTooltip.appendChild(ttCtx.yaxisTooltipText[i]);
+          }
+        }
+      }
+    }
+
+    /**
+     * @memberof Tooltip
+     **/
+
+  }, {
+    key: 'setXCrosshairWidth',
+    value: function setXCrosshairWidth() {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      // set xcrosshairs width
+      var xcrosshairs = ttCtx.getElXCrosshairs();
+      ttCtx.xcrosshairsWidth = parseInt(w.config.xaxis.crosshairs.width);
+
+      if (!w.globals.comboCharts) {
+        if (w.config.xaxis.crosshairs.width === 'tickWidth') {
+          var count = w.globals.labels.length;
+          ttCtx.xcrosshairsWidth = w.globals.gridWidth / count;
+        } else if (w.config.xaxis.crosshairs.width === 'barWidth') {
+          var bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area');
+          if (bar !== null) {
+            var barWidth = parseFloat(bar.getAttribute('barWidth'));
+            ttCtx.xcrosshairsWidth = barWidth;
+          } else {
+            ttCtx.xcrosshairsWidth = 1;
+          }
+        }
+      } else {
+        var _bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area');
+        if (_bar !== null && w.config.xaxis.crosshairs.width === 'barWidth') {
+          var _barWidth = parseFloat(_bar.getAttribute('barWidth'));
+          ttCtx.xcrosshairsWidth = _barWidth;
+        } else {
+          if (w.config.xaxis.crosshairs.width === 'tickWidth') {
+            var _count = w.globals.labels.length;
+            ttCtx.xcrosshairsWidth = w.globals.gridWidth / _count;
+          }
+        }
+      }
+
+      if (w.globals.isBarHorizontal) {
+        ttCtx.xcrosshairsWidth = 0;
+      }
+      if (xcrosshairs !== null && ttCtx.xcrosshairsWidth > 0) {
+        xcrosshairs.setAttribute('width', ttCtx.xcrosshairsWidth);
+      }
+    }
+  }, {
+    key: 'handleYCrosshair',
+    value: function handleYCrosshair() {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      // set ycrosshairs height
+      ttCtx.ycrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs');
+
+      ttCtx.ycrosshairsHidden = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs-hidden');
+    }
+  }, {
+    key: 'drawYaxisTooltipText',
+    value: function drawYaxisTooltipText(index, clientY, xyRatios) {
+      var ttCtx = this.ttCtx;
+      var w = this.w;
+
+      var lbFormatter = w.globals.yLabelFormatters[index];
+
+      if (ttCtx.blyaxisTooltip) {
+        var elGrid = ttCtx.getElGrid();
+        var seriesBound = elGrid.getBoundingClientRect();
+
+        var hoverY = (clientY - seriesBound.top) * xyRatios.yRatio[index];
+        var height = w.globals.maxYArr[index] - w.globals.minYArr[index];
+
+        var val = w.globals.minYArr[index] + (height - hoverY);
+
+        ttCtx.tooltipPosition.moveYCrosshairs(clientY - seriesBound.top);
+        ttCtx.yaxisTooltipText[index].innerHTML = lbFormatter(val);
+        ttCtx.tooltipPosition.moveYAxisTooltip(index);
+      }
+    }
+  }]);
+
+  return AxesTooltip;
+}();
+
+exports.default = AxesTooltip;
+
+/***/ }),
+/* 52 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Tooltip.Intersect Class.
+ *
+ * @module Tooltip.Intersect
+ **/
+
+var Intersect = function () {
+  function Intersect(tooltipContext) {
+    _classCallCheck(this, Intersect);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+  }
+
+  _createClass(Intersect, [{
+    key: 'getAttr',
+    value: function getAttr(e, attr) {
+      return parseFloat(e.target.getAttribute(attr));
+    }
+  }, {
+    key: 'handleHeatTooltip',
+    value: function handleHeatTooltip(_ref) {
+      var e = _ref.e,
+          opt = _ref.opt,
+          x = _ref.x,
+          y = _ref.y;
+
+      var ttCtx = this.ttCtx;
+      var w = this.w;
+
+      if (e.target.classList.contains('apexcharts-heatmap-rect')) {
+        var i = this.getAttr(e, 'i');
+        var j = this.getAttr(e, 'j');
+        var cx = this.getAttr(e, 'cx');
+        var cy = this.getAttr(e, 'cy');
+        var width = this.getAttr(e, 'width');
+        var height = this.getAttr(e, 'height');
+
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: i,
+          j: j,
+          shared: false
+        });
+
+        x = cx + ttCtx.tooltipRect.ttWidth / 2 + width;
+        y = cy + ttCtx.tooltipRect.ttHeight / 2 - height / 2;
+
+        ttCtx.tooltipPosition.moveXCrosshairs(cx + width / 2);
+
+        if (x > w.globals.gridWidth / 2) {
+          x = cx - ttCtx.tooltipRect.ttWidth / 2 + width;
+        }
+        if (ttCtx.w.config.tooltip.followCursor) {
+          var elGrid = ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect();
+          // x = ttCtx.e.clientX - seriesBound.left
+          y = ttCtx.e.clientY - seriesBound.top + w.globals.translateY / 2 - 10;
+        }
+      }
+
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: 'handleMarkerTooltip',
+    value: function handleMarkerTooltip(_ref2) {
+      var e = _ref2.e,
+          opt = _ref2.opt,
+          x = _ref2.x,
+          y = _ref2.y;
+
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      var i = void 0;
+      var j = void 0;
+      if (e.target.classList.contains('apexcharts-marker')) {
+        var cx = parseInt(opt.paths.getAttribute('cx'));
+        var cy = parseInt(opt.paths.getAttribute('cy'));
+        var val = parseFloat(opt.paths.getAttribute('val'));
+
+        j = parseInt(opt.paths.getAttribute('rel'));
+        i = parseInt(opt.paths.parentNode.parentNode.parentNode.getAttribute('rel')) - 1;
+
+        if (ttCtx.intersect) {
+          var el = _Utils2.default.findAncestor(opt.paths, 'apexcharts-series');
+          if (el) {
+            i = parseInt(el.getAttribute('data:realIndex'));
+          }
+        }
+
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: i,
+          j: j,
+          shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared
+        });
+
+        if (e.type === 'mouseup') {
+          ttCtx.markerClick(e, i, j);
+        }
+
+        x = cx;
+        y = cy + w.globals.translateY - ttCtx.tooltipRect.ttHeight * 1.4;
+
+        if (ttCtx.w.config.tooltip.followCursor) {
+          var elGrid = ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect();
+          y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top;
+        }
+
+        if (val < 0) {
+          y = cy;
+        }
+        ttCtx.marker.enlargeCurrentPoint(j, opt.paths, x, y);
+      }
+
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: 'handleBarTooltip',
+    value: function handleBarTooltip(_ref3) {
+      var e = _ref3.e,
+          opt = _ref3.opt;
+
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      var tooltipEl = ttCtx.getElTooltip();
+
+      var bx = 0;
+      var x = 0;
+      var y = 0;
+      // let bW = 0
+      var i = 0;
+      var strokeWidth = void 0;
+      var barXY = this.getBarTooltipXY({
+        e: e,
+        opt: opt
+      });
+      i = barXY.i;
+      var barHeight = barXY.barHeight;
+      var j = barXY.j;
+
+      if (w.globals.isBarHorizontal && ttCtx.hasBars() || !w.config.tooltip.shared) {
+        x = barXY.x;
+        y = barXY.y;
+        strokeWidth = Array.isArray(w.config.stroke.width) ? w.config.stroke.width[i] : w.config.stroke.width;
+        // bW = barXY.barWidth
+        bx = x;
+      } else {
+        if (!w.globals.comboCharts && !w.config.tooltip.shared) {
+          bx = bx / 2;
+        }
+      }
+
+      // y is NaN, make it touch the bottom of grid area
+      if (isNaN(y)) {
+        y = w.globals.svgHeight - ttCtx.tooltipRect.ttHeight;
+      }
+
+      // x exceeds gridWidth
+      if (x + ttCtx.tooltipRect.ttWidth > w.globals.gridWidth) {
+        x = x - ttCtx.tooltipRect.ttWidth;
+      } else if (x < 0) {
+        x = x + ttCtx.tooltipRect.ttWidth;
+      }
+
+      if (ttCtx.w.config.tooltip.followCursor) {
+        var elGrid = ttCtx.getElGrid();
+        var seriesBound = elGrid.getBoundingClientRect();
+        y = ttCtx.e.clientY - seriesBound.top;
+      }
+
+      // if tooltip is still null, querySelector
+      if (ttCtx.tooltip === null) {
+        ttCtx.tooltip = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip');
+      }
+
+      if (!w.config.tooltip.shared) {
+        if (w.globals.comboChartsHasBars) {
+          ttCtx.tooltipPosition.moveXCrosshairs(bx + strokeWidth / 2);
+        } else {
+          ttCtx.tooltipPosition.moveXCrosshairs(bx);
+        }
+      }
+
+      // move tooltip here
+      if (!ttCtx.fixedTooltip && (!w.config.tooltip.shared || w.globals.isBarHorizontal && ttCtx.hasBars())) {
+        if (isReversed) {
+          x = w.globals.gridWidth - x;
+        }
+        tooltipEl.style.left = x + w.globals.translateX + 'px';
+
+        var seriesIndex = parseInt(opt.paths.parentNode.getAttribute('data:realIndex'));
+
+        var isReversed = w.globals.isMultipleYAxis ? w.config.yaxis[seriesIndex] && w.config.yaxis[seriesIndex].reversed : w.config.yaxis[0].reversed;
+
+        if (isReversed && !(w.globals.isBarHorizontal && ttCtx.hasBars())) {
+          y = y + barHeight - (w.globals.series[i][j] < 0 ? barHeight : 0) * 2;
+        }
+        if (ttCtx.tooltipRect.ttHeight + y > w.globals.gridHeight) {
+          y = w.globals.gridHeight - ttCtx.tooltipRect.ttHeight + w.globals.translateY;
+          tooltipEl.style.top = y + 'px';
+        } else {
+          tooltipEl.style.top = y + w.globals.translateY - ttCtx.tooltipRect.ttHeight / 2 + 'px';
+        }
+      }
+    }
+  }, {
+    key: 'getBarTooltipXY',
+    value: function getBarTooltipXY(_ref4) {
+      var e = _ref4.e,
+          opt = _ref4.opt;
+
+      var w = this.w;
+      var j = null;
+      var ttCtx = this.ttCtx;
+      var i = 0;
+      var x = 0;
+      var y = 0;
+      var barWidth = 0;
+      var barHeight = 0;
+
+      var cl = e.target.classList;
+
+      if (cl.contains('apexcharts-bar-area') || cl.contains('apexcharts-candlestick-area') || cl.contains('apexcharts-rangebar-area')) {
+        var bar = e.target;
+        var barRect = bar.getBoundingClientRect();
+
+        var seriesBound = opt.elGrid.getBoundingClientRect();
+
+        var bh = barRect.height;
+        barHeight = barRect.height;
+        var bw = barRect.width;
+
+        var cx = parseInt(bar.getAttribute('cx'));
+        var cy = parseInt(bar.getAttribute('cy'));
+        barWidth = parseFloat(bar.getAttribute('barWidth'));
+        var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+
+        j = parseInt(bar.getAttribute('j'));
+        i = parseInt(bar.parentNode.getAttribute('rel')) - 1;
+
+        if (w.globals.comboCharts) {
+          i = parseInt(bar.parentNode.getAttribute('data:realIndex'));
+        }
+
+        // if (w.config.tooltip.shared) {
+        // this check not needed  at the moment
+        //   const yDivisor = w.globals.gridHeight / (w.globals.series.length)
+        //   const hoverY = ttCtx.clientY - ttCtx.seriesBound.top
+
+        //   j = Math.ceil(hoverY / yDivisor)
+        // }
+
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: i,
+          j: j,
+          shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared
+        });
+
+        if (w.config.tooltip.followCursor) {
+          if (w.globals.isBarHorizontal) {
+            x = clientX - seriesBound.left + 15;
+            y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2;
+          } else {
+            if (w.globals.isXNumeric) {
+              x = cx - bw / 2;
+            } else {
+              x = cx - ttCtx.dataPointsDividedWidth + bw / 2;
+            }
+            y = e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2 - 15;
+          }
+        } else {
+          if (w.globals.isBarHorizontal) {
+            x = cx;
+            if (x < ttCtx.xyRatios.baseLineInvertedY) {
+              x = cx - ttCtx.tooltipRect.ttWidth;
+            }
+
+            y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2;
+          } else {
+            // if columns
+            if (w.globals.isXNumeric) {
+              x = cx - bw / 2;
+            } else {
+              x = cx - ttCtx.dataPointsDividedWidth + bw / 2;
+            }
+
+            y = cy; // - ttCtx.tooltipRect.ttHeight / 2 + 10
+          }
+        }
+      }
+
+      return {
+        x: x,
+        y: y,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        i: i,
+        j: j
+      };
+    }
+  }]);
+
+  return Intersect;
+}();
+
+exports.default = Intersect;
+
+/***/ }),
+/* 53 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Formatters = __webpack_require__(10);
+
+var _Formatters2 = _interopRequireDefault(_Formatters);
+
+var _Utils = __webpack_require__(27);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Tooltip.Labels Class to draw texts on the tooltip.
+ *
+ * @module Tooltip.Labels
+ **/
+
+var Labels = function () {
+  function Labels(tooltipContext) {
+    _classCallCheck(this, Labels);
+
+    this.w = tooltipContext.w;
+    this.ctx = tooltipContext.ctx;
+    this.ttCtx = tooltipContext;
+    this.tooltipUtil = new _Utils2.default(tooltipContext);
+  }
+
+  _createClass(Labels, [{
+    key: 'drawSeriesTexts',
+    value: function drawSeriesTexts(_ref) {
+      var _ref$shared = _ref.shared,
+          shared = _ref$shared === undefined ? true : _ref$shared,
+          ttItems = _ref.ttItems,
+          _ref$i = _ref.i,
+          i = _ref$i === undefined ? 0 : _ref$i,
+          _ref$j = _ref.j,
+          j = _ref$j === undefined ? null : _ref$j;
+
+      var w = this.w;
+
+      if (w.config.tooltip.custom !== undefined) {
+        this.handleCustomTooltip({ i: i, j: j });
+      } else {
+        this.toggleActiveInactiveSeries(shared);
+      }
+
+      var values = this.getValuesToPrint({
+        i: i,
+        j: j
+      });
+
+      this.printLabels({
+        i: i,
+        j: j,
+        values: values,
+        ttItems: ttItems,
+        shared: shared
+      });
+
+      // Re-calculate tooltip dimensions now that we have drawn the text
+      var tooltipEl = this.ttCtx.getElTooltip();
+
+      this.ttCtx.tooltipRect.ttWidth = tooltipEl.getBoundingClientRect().width;
+      this.ttCtx.tooltipRect.ttHeight = tooltipEl.getBoundingClientRect().height;
+    }
+  }, {
+    key: 'printLabels',
+    value: function printLabels(_ref2) {
+      var i = _ref2.i,
+          j = _ref2.j,
+          values = _ref2.values,
+          ttItems = _ref2.ttItems,
+          shared = _ref2.shared;
+
+      var w = this.w;
+      var val = void 0;
+      var xVal = values.xVal,
+          zVal = values.zVal,
+          xAxisTTVal = values.xAxisTTVal;
+
+
+      var seriesName = '';
+
+      var pColor = w.globals.colors[i];
+      if (j !== null && w.config.plotOptions.bar.distributed) {
+        pColor = w.globals.colors[j];
+      }
+
+      for (var t = 0, inverset = w.globals.series.length - 1; t < w.globals.series.length; t++, inverset--) {
+        var f = this.getFormatters(i);
+        seriesName = this.getSeriesName({
+          fn: f.yLbTitleFormatter,
+          index: i,
+          seriesIndex: i,
+          j: j
+        });
+
+        if (shared) {
+          var tIndex = w.config.tooltip.inverseOrder ? inverset : t;
+          f = this.getFormatters(tIndex);
+
+          seriesName = this.getSeriesName({
+            fn: f.yLbTitleFormatter,
+            index: tIndex,
+            seriesIndex: i,
+            j: j
+          });
+          pColor = w.globals.colors[tIndex];
+
+          // for plot charts, not for pie/donuts
+          val = f.yLbFormatter(w.globals.series[tIndex][j], {
+            series: w.globals.series,
+            seriesIndex: tIndex,
+            dataPointIndex: j,
+            w: w
+          });
+
+          // discard 0 values in BARS
+          if (this.ttCtx.hasBars() && w.config.chart.stacked && w.globals.series[tIndex][j] === 0 || typeof w.globals.series[tIndex][j] === 'undefined') {
+            val = undefined;
+          }
+        } else {
+          val = f.yLbFormatter(w.globals.series[i][j], {
+            series: w.globals.series,
+            seriesIndex: i,
+            dataPointIndex: j,
+            w: w
+          });
+        }
+
+        // for pie / donuts
+        if (j === null) {
+          val = f.yLbFormatter(w.globals.series[i], w);
+        }
+
+        this.DOMHandling({
+          t: t,
+          ttItems: ttItems,
+          values: {
+            val: val,
+            xVal: xVal,
+            xAxisTTVal: xAxisTTVal,
+            zVal: zVal
+          },
+          seriesName: seriesName,
+          shared: shared,
+          pColor: pColor
+        });
+      }
+    }
+  }, {
+    key: 'getFormatters',
+    value: function getFormatters(i) {
+      var w = this.w;
+
+      var yLbFormatter = w.globals.yLabelFormatters[i];
+      var yLbTitleFormatter = void 0;
+
+      if (w.globals.ttVal !== undefined) {
+        if (Array.isArray(w.globals.ttVal)) {
+          yLbFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].formatter;
+          yLbTitleFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].title && w.globals.ttVal[i].title.formatter;
+        } else {
+          yLbFormatter = w.globals.ttVal.formatter;
+          if (typeof w.globals.ttVal.title.formatter === 'function') {
+            yLbTitleFormatter = w.globals.ttVal.title.formatter;
+          }
+        }
+      } else {
+        yLbTitleFormatter = w.config.tooltip.y.title.formatter;
+      }
+
+      if (typeof yLbFormatter !== 'function') {
+        if (w.globals.yLabelFormatters[0]) {
+          yLbFormatter = w.globals.yLabelFormatters[0];
+        } else {
+          yLbFormatter = function yLbFormatter(label) {
+            return label;
+          };
+        }
+      }
+
+      if (typeof yLbTitleFormatter !== 'function') {
+        yLbTitleFormatter = function yLbTitleFormatter(label) {
+          return label;
+        };
+      }
+
+      return {
+        yLbFormatter: yLbFormatter,
+        yLbTitleFormatter: yLbTitleFormatter
+      };
+    }
+  }, {
+    key: 'getSeriesName',
+    value: function getSeriesName(_ref3) {
+      var fn = _ref3.fn,
+          index = _ref3.index,
+          seriesIndex = _ref3.seriesIndex,
+          j = _ref3.j;
+
+      var w = this.w;
+      return fn(String(w.globals.seriesNames[index]), {
+        series: w.globals.series,
+        seriesIndex: seriesIndex,
+        dataPointIndex: j,
+        w: w
+      });
+    }
+  }, {
+    key: 'DOMHandling',
+    value: function DOMHandling(_ref4) {
+      var t = _ref4.t,
+          ttItems = _ref4.ttItems,
+          values = _ref4.values,
+          seriesName = _ref4.seriesName,
+          shared = _ref4.shared,
+          pColor = _ref4.pColor;
+
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      var val = values.val,
+          xVal = values.xVal,
+          xAxisTTVal = values.xAxisTTVal,
+          zVal = values.zVal;
+
+
+      var ttItemsChildren = null;
+      ttItemsChildren = ttItems[t].children;
+
+      if (w.config.tooltip.fillSeriesColor) {
+        //  elTooltip.style.backgroundColor = pColor
+        ttItems[t].style.backgroundColor = pColor;
+        ttItemsChildren[0].style.display = 'none';
+      }
+
+      if (ttCtx.showTooltipTitle) {
+        if (ttCtx.tooltipTitle === null) {
+          // get it once if null, and store it in class property
+          ttCtx.tooltipTitle = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-title');
+        }
+        ttCtx.tooltipTitle.innerHTML = xVal;
+      }
+
+      // if xaxis tooltip is constructed, we need to replace the innerHTML
+      if (ttCtx.blxaxisTooltip) {
+        ttCtx.xaxisTooltipText.innerHTML = xAxisTTVal !== '' ? xAxisTTVal : xVal;
+      }
+
+      var ttYLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-label');
+      if (ttYLabel) {
+        ttYLabel.innerHTML = seriesName ? seriesName + ': ' : '';
+      }
+      var ttYVal = ttItems[t].querySelector('.apexcharts-tooltip-text-value');
+      if (ttYVal) {
+        ttYVal.innerHTML = val;
+      }
+
+      if (ttItemsChildren[0] && ttItemsChildren[0].classList.contains('apexcharts-tooltip-marker')) {
+        ttItemsChildren[0].style.backgroundColor = pColor;
+      }
+
+      if (!w.config.tooltip.marker.show) {
+        ttItemsChildren[0].style.display = 'none';
+      }
+
+      if (zVal !== null) {
+        var ttZLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-z-label');
+        ttZLabel.innerHTML = w.config.tooltip.z.title;
+        var ttZVal = ttItems[t].querySelector('.apexcharts-tooltip-text-z-value');
+        ttZVal.innerHTML = zVal;
+      }
+
+      if (shared && ttItemsChildren[0]) {
+        // hide when no Val or series collapsed
+        if (typeof val === 'undefined' || val === null || w.globals.collapsedSeriesIndices.indexOf(t) > -1) {
+          ttItemsChildren[0].parentNode.style.display = 'none';
+        } else {
+          ttItemsChildren[0].parentNode.style.display = w.config.tooltip.items.display;
+        }
+      }
+    }
+  }, {
+    key: 'toggleActiveInactiveSeries',
+    value: function toggleActiveInactiveSeries(shared) {
+      var w = this.w;
+      if (shared) {
+        // make all tooltips active
+        this.tooltipUtil.toggleAllTooltipSeriesGroups('enable');
+      } else {
+        // disable all tooltip text groups
+        this.tooltipUtil.toggleAllTooltipSeriesGroups('disable');
+
+        // enable the first tooltip text group
+        var firstTooltipSeriesGroup = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-series-group');
+
+        if (firstTooltipSeriesGroup) {
+          firstTooltipSeriesGroup.classList.add('active');
+          firstTooltipSeriesGroup.style.display = w.config.tooltip.items.display;
+        }
+      }
+    }
+  }, {
+    key: 'getValuesToPrint',
+    value: function getValuesToPrint(_ref5) {
+      var i = _ref5.i,
+          j = _ref5.j;
+
+      var w = this.w;
+      var filteredSeriesX = this.ctx.series.filteredSeriesX();
+
+      var xVal = '';
+      var xAxisTTVal = '';
+      var zVal = null;
+      var val = null;
+
+      var customFormatterOpts = {
+        series: w.globals.series,
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      };
+
+      var zFormatter = w.globals.ttZFormatter;
+
+      if (j === null) {
+        val = w.globals.series[i];
+      } else {
+        if (w.globals.isXNumeric) {
+          xVal = filteredSeriesX[i][j];
+          if (filteredSeriesX[i].length === 0) {
+            // a series (possibly the first one) might be collapsed, so get the next active index
+            var firstActiveSeriesIndex = this.tooltipUtil.getFirstActiveXArray(filteredSeriesX);
+            xVal = filteredSeriesX[firstActiveSeriesIndex][j];
+          }
+        } else {
+          xVal = typeof w.globals.labels[j] !== 'undefined' ? w.globals.labels[j] : '';
+        }
+      }
+
+      var bufferXVal = xVal;
+
+      if (w.globals.isXNumeric && w.config.xaxis.type === 'datetime') {
+        var xFormat = new _Formatters2.default(this.ctx);
+        xVal = xFormat.xLabelFormat(w.globals.ttKeyFormatter, bufferXVal);
+      } else {
+        xVal = w.globals.xLabelFormatter(bufferXVal, customFormatterOpts);
+      }
+
+      // override default x-axis formatter with tooltip formatter
+      if (w.config.tooltip.x.formatter !== undefined) {
+        xVal = w.globals.ttKeyFormatter(bufferXVal, customFormatterOpts);
+      }
+
+      if (w.globals.seriesZ.length > 0 && w.globals.seriesZ[0].length > 0) {
+        zVal = zFormatter(w.globals.seriesZ[i][j], w);
+      }
+
+      if (typeof w.config.xaxis.tooltip.formatter === 'function') {
+        xAxisTTVal = w.globals.xaxisTooltipFormatter(bufferXVal, customFormatterOpts);
+      } else {
+        xAxisTTVal = xVal;
+      }
+
+      return {
+        val: val,
+        xVal: xVal,
+        xAxisTTVal: xAxisTTVal,
+        zVal: zVal
+      };
+    }
+  }, {
+    key: 'handleCustomTooltip',
+    value: function handleCustomTooltip(_ref6) {
+      var i = _ref6.i,
+          j = _ref6.j;
+
+      var w = this.w;
+      var tooltipEl = this.ttCtx.getElTooltip();
+
+      // override everything with a custom html tooltip and replace it
+      tooltipEl.innerHTML = w.config.tooltip.custom({
+        ctx: this.ctx,
+        series: w.globals.series,
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      });
+    }
+  }]);
+
+  return Labels;
+}();
+
+exports.default = Labels;
+
+/***/ }),
+/* 54 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Position = __webpack_require__(26);
+
+var _Position2 = _interopRequireDefault(_Position);
+
+var _Markers = __webpack_require__(6);
+
+var _Markers2 = _interopRequireDefault(_Markers);
+
+var _Utils = __webpack_require__(0);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Tooltip.Marker Class to draw texts on the tooltip.
+ *
+ * @module Tooltip.Marker
+ **/
+
+var Marker = function () {
+  function Marker(tooltipContext) {
+    _classCallCheck(this, Marker);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+    this.ctx = tooltipContext.ctx;
+    this.tooltipPosition = new _Position2.default(tooltipContext);
+  }
+
+  _createClass(Marker, [{
+    key: 'drawDynamicPoints',
+    value: function drawDynamicPoints() {
+      var w = this.w;
+
+      var graphics = new _Graphics2.default(this.ctx);
+      var marker = new _Markers2.default(this.ctx);
+
+      var elsSeries = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');
+
+      for (var i = 0; i < elsSeries.length; i++) {
+        var seriesIndex = parseInt(elsSeries[i].getAttribute('data:realIndex'));
+
+        var pointsMain = w.globals.dom.baseEl.querySelector('.apexcharts-series[data\\:realIndex=\'' + seriesIndex + '\'] .apexcharts-series-markers-wrap');
+
+        if (pointsMain !== null) {
+          // it can be null as we have tooltips in donut/bar charts
+          var point = void 0;
+
+          var PointClasses = 'apexcharts-marker w' + (Math.random() + 1).toString(36).substring(4);
+          if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) {
+            PointClasses += ' no-pointer-events';
+          }
+
+          var elPointOptions = marker.getMarkerConfig(PointClasses, seriesIndex);
+
+          point = graphics.drawMarker(0, 0, elPointOptions);
+
+          point.node.setAttribute('default-marker-size', 0);
+
+          var elPointsG = document.createElementNS(w.globals.SVGNS, 'g');
+          elPointsG.classList.add('apexcharts-series-markers');
+
+          elPointsG.appendChild(point.node);
+          pointsMain.appendChild(elPointsG);
+        }
+      }
+    }
+  }, {
+    key: 'enlargeCurrentPoint',
+    value: function enlargeCurrentPoint(rel, point) {
+      var x = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+      var y = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
+
+      var w = this.w;
+
+      if (w.config.chart.type !== 'bubble') {
+        this.newPointSize(rel, point);
+      }
+
+      var cx = point.getAttribute('cx');
+      var cy = point.getAttribute('cy');
+
+      if (x !== null && y !== null) {
+        cx = x;
+        cy = y;
+      }
+
+      this.tooltipPosition.moveXCrosshairs(cx);
+
+      if (!this.fixedTooltip) {
+        if (w.config.chart.type === 'radar') {
+          var elGrid = this.ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect();
+
+          cx = this.ttCtx.e.clientX - seriesBound.left;
+        }
+
+        this.tooltipPosition.moveTooltip(cx, cy, w.config.markers.hover.size);
+      }
+    }
+  }, {
+    key: 'enlargePoints',
+    value: function enlargePoints(j) {
+      var w = this.w;
+      var me = this;
+      var ttCtx = this.ttCtx;
+
+      var col = j;
+
+      var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker');
+
+      var newSize = w.config.markers.hover.size;
+
+      for (var p = 0; p < points.length; p++) {
+        var rel = points[p].getAttribute('rel');
+        var index = points[p].getAttribute('index');
+
+        if (newSize === undefined) {
+          newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset;
+        }
+
+        if (col === parseInt(rel)) {
+          me.newPointSize(col, points[p]);
+
+          var cx = points[p].getAttribute('cx');
+          var cy = points[p].getAttribute('cy');
+
+          me.tooltipPosition.moveXCrosshairs(cx);
+
+          if (!ttCtx.fixedTooltip) {
+            me.tooltipPosition.moveTooltip(cx, cy, newSize);
+          }
+        } else {
+          me.oldPointSize(points[p]);
+        }
+      }
+    }
+  }, {
+    key: 'newPointSize',
+    value: function newPointSize(rel, point) {
+      var w = this.w;
+      var newSize = w.config.markers.hover.size;
+
+      var elPoint = null;
+
+      if (rel === 0) {
+        elPoint = point.parentNode.firstChild;
+      } else {
+        elPoint = point.parentNode.lastChild;
+      }
+
+      var index = parseInt(elPoint.getAttribute('index'));
+      if (newSize === undefined) {
+        newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset;
+      }
+
+      elPoint.setAttribute('r', newSize);
+    }
+  }, {
+    key: 'oldPointSize',
+    value: function oldPointSize(point) {
+      var size = parseInt(point.getAttribute('default-marker-size'));
+      point.setAttribute('r', size);
+    }
+  }, {
+    key: 'resetPointsSize',
+    value: function resetPointsSize() {
+      var w = this.w;
+
+      var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker');
+
+      for (var p = 0; p < points.length; p++) {
+        var size = parseInt(points[p].getAttribute('default-marker-size'));
+        if (_Utils2.default.isNumber(size)) {
+          points[p].setAttribute('r', size);
+        } else {
+          points[p].setAttribute('r', 0);
+        }
+      }
+    }
+  }]);
+
+  return Marker;
+}();
+
+exports.default = Marker;
+
+/***/ }),
+/* 55 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Labels = __webpack_require__(53);
+
+var _Labels2 = _interopRequireDefault(_Labels);
+
+var _Position = __webpack_require__(26);
+
+var _Position2 = _interopRequireDefault(_Position);
+
+var _Marker = __webpack_require__(54);
+
+var _Marker2 = _interopRequireDefault(_Marker);
+
+var _Intersect = __webpack_require__(52);
+
+var _Intersect2 = _interopRequireDefault(_Intersect);
+
+var _AxesTooltip = __webpack_require__(51);
+
+var _AxesTooltip2 = _interopRequireDefault(_AxesTooltip);
+
+var _Graphics = __webpack_require__(1);
+
+var _Graphics2 = _interopRequireDefault(_Graphics);
+
+var _Series = __webpack_require__(7);
+
+var _Series2 = _interopRequireDefault(_Series);
+
+var _XAxis = __webpack_require__(15);
+
+var _XAxis2 = _interopRequireDefault(_XAxis);
+
+var _Utils = __webpack_require__(27);
+
+var _Utils2 = _interopRequireDefault(_Utils);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * ApexCharts Core Tooltip Class to handle the tooltip generation.
+ *
+ * @module Tooltip
+ **/
+
+var Tooltip = function () {
+  function Tooltip(ctx) {
+    _classCallCheck(this, Tooltip);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+
+    this.tConfig = w.config.tooltip;
+
+    this.tooltipUtil = new _Utils2.default(this);
+    this.tooltipLabels = new _Labels2.default(this);
+    this.tooltipPosition = new _Position2.default(this);
+    this.marker = new _Marker2.default(this);
+    this.intersect = new _Intersect2.default(this);
+    this.axesTooltip = new _AxesTooltip2.default(this);
+    this.showOnIntersect = this.tConfig.intersect;
+    this.showTooltipTitle = this.tConfig.x.show;
+    this.fixedTooltip = this.tConfig.fixed.enabled;
+    this.xaxisTooltip = null;
+    this.yaxisTTEls = null;
+    this.isBarShared = !w.globals.isBarHorizontal && this.tConfig.shared;
+  }
+
+  _createClass(Tooltip, [{
+    key: 'getElTooltip',
+    value: function getElTooltip(ctx) {
+      if (!ctx) ctx = this;
+      return ctx.w.globals.dom.baseEl.querySelector('.apexcharts-tooltip');
+    }
+  }, {
+    key: 'getElXCrosshairs',
+    value: function getElXCrosshairs() {
+      return this.w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs');
+    }
+  }, {
+    key: 'getElGrid',
+    value: function getElGrid() {
+      return this.w.globals.dom.baseEl.querySelector('.apexcharts-grid');
+    }
+  }, {
+    key: 'drawTooltip',
+    value: function drawTooltip(xyRatios) {
+      var w = this.w;
+      this.xyRatios = xyRatios;
+      this.blxaxisTooltip = w.config.xaxis.tooltip.enabled && w.globals.axisCharts;
+      this.blyaxisTooltip = w.config.yaxis[0].tooltip.enabled && w.globals.axisCharts;
+      this.allTooltipSeriesGroups = [];
+
+      if (!w.globals.axisCharts) {
+        this.showTooltipTitle = false;
+      }
+
+      var tooltipEl = document.createElement('div');
+      tooltipEl.classList.add('apexcharts-tooltip');
+      tooltipEl.classList.add(this.tConfig.theme);
+      w.globals.dom.elWrap.appendChild(tooltipEl);
+
+      if (w.globals.axisCharts) {
+        this.axesTooltip.drawXaxisTooltip();
+        this.axesTooltip.drawYaxisTooltip();
+        this.axesTooltip.setXCrosshairWidth();
+        this.axesTooltip.handleYCrosshair();
+
+        var xAxis = new _XAxis2.default(this.ctx);
+        this.xAxisTicksPositions = xAxis.getXAxisTicksPositions();
+      }
+
+      // we forcefully set intersect true for these conditions
+      if (w.globals.comboCharts && !this.tConfig.shared || this.tConfig.intersect && !this.tConfig.shared || (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && !this.tConfig.shared) {
+        this.showOnIntersect = true;
+      }
+
+      if (w.config.markers.size === 0 || w.globals.markers.largestSize === 0) {
+        // when user don't want to show points all the time, but only on when hovering on series
+        this.marker.drawDynamicPoints(this);
+      }
+
+      // no visible series, exit
+      if (w.globals.collapsedSeries.length === w.globals.series.length) return;
+
+      this.dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints;
+      this.dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints;
+
+      if (this.showTooltipTitle) {
+        this.tooltipTitle = document.createElement('div');
+        this.tooltipTitle.classList.add('apexcharts-tooltip-title');
+        this.tooltipTitle.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily;
+        this.tooltipTitle.style.fontSize = this.tConfig.style.fontSize;
+        tooltipEl.appendChild(this.tooltipTitle);
+      }
+
+      var ttItemsCnt = w.globals.series.length; // whether shared or not, default is shared
+      if ((w.globals.xyCharts || w.globals.comboCharts) && this.tConfig.shared) {
+        if (!this.showOnIntersect) {
+          ttItemsCnt = w.globals.series.length;
+        } else {
+          ttItemsCnt = 1;
+        }
+      }
+
+      this.ttItems = this.createTTElements(ttItemsCnt);
+      this.addSVGEvents();
+    }
+  }, {
+    key: 'createTTElements',
+    value: function createTTElements(ttItemsCnt) {
+      var w = this.w;
+      var ttItems = [];
+
+      var tooltipEl = this.getElTooltip();
+      for (var i = 0; i < ttItemsCnt; i++) {
+        var gTxt = document.createElement('div');
+        gTxt.classList.add('apexcharts-tooltip-series-group');
+        if (this.tConfig.shared && this.tConfig.enabledOnSeries && Array.isArray(this.tConfig.enabledOnSeries)) {
+          if (this.tConfig.enabledOnSeries.indexOf(i) < 0) {
+            gTxt.classList.add('apexcharts-tooltip-series-group-hidden');
+          }
+        }
+
+        var point = document.createElement('span');
+        point.classList.add('apexcharts-tooltip-marker');
+        point.style.backgroundColor = w.globals.colors[i];
+        gTxt.appendChild(point);
+
+        var gYZ = document.createElement('div');
+        gYZ.classList.add('apexcharts-tooltip-text');
+
+        gYZ.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily;
+        gYZ.style.fontSize = this.tConfig.style.fontSize;
+
+        // y values group
+        var gYValText = document.createElement('div');
+        gYValText.classList.add('apexcharts-tooltip-y-group');
+
+        var txtLabel = document.createElement('span');
+        txtLabel.classList.add('apexcharts-tooltip-text-label');
+        gYValText.appendChild(txtLabel);
+
+        var txtValue = document.createElement('span');
+        txtValue.classList.add('apexcharts-tooltip-text-value');
+        gYValText.appendChild(txtValue);
+
+        // z values group
+        var gZValText = document.createElement('div');
+        gZValText.classList.add('apexcharts-tooltip-z-group');
+
+        var txtZLabel = document.createElement('span');
+        txtZLabel.classList.add('apexcharts-tooltip-text-z-label');
+        gZValText.appendChild(txtZLabel);
+
+        var txtZValue = document.createElement('span');
+        txtZValue.classList.add('apexcharts-tooltip-text-z-value');
+        gZValText.appendChild(txtZValue);
+
+        gYZ.appendChild(gYValText);
+        gYZ.appendChild(gZValText);
+
+        gTxt.appendChild(gYZ);
+
+        tooltipEl.appendChild(gTxt);
+
+        ttItems.push(gTxt);
+      }
+
+      return ttItems;
+    }
+  }, {
+    key: 'addSVGEvents',
+    value: function addSVGEvents() {
+      var w = this.w;
+      var type = w.config.chart.type;
+      var tooltipEl = this.getElTooltip();
+
+      var commonBar = !!(type === 'bar' || type === 'candlestick' || type === 'rangeBar');
+
+      var hoverArea = w.globals.dom.Paper.node;
+
+      var elGrid = this.getElGrid();
+      if (elGrid) {
+        this.seriesBound = elGrid.getBoundingClientRect();
+      }
+
+      var tooltipY = [];
+      var tooltipX = [];
+
+      var seriesHoverParams = {
+        hoverArea: hoverArea,
+        elGrid: elGrid,
+        tooltipEl: tooltipEl,
+        tooltipY: tooltipY,
+        tooltipX: tooltipX,
+        ttItems: this.ttItems
+      };
+
+      var points = void 0;
+
+      if (w.globals.axisCharts) {
+        if (type === 'area' || type === 'line' || type === 'scatter' || type === 'bubble') {
+          points = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker");
+        } else if (commonBar) {
+          points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-rangebar-area');
+        } else if (type === 'heatmap') {
+          points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-heatmap');
+        } else if (type === 'radar') {
+          points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-marker');
+        }
+
+        if (points && points.length) {
+          for (var p = 0; p < points.length; p++) {
+            tooltipY.push(points[p].getAttribute('cy'));
+            tooltipX.push(points[p].getAttribute('cx'));
+          }
+        }
+      }
+
+      var validSharedChartTypes = w.globals.xyCharts && !this.showOnIntersect || w.globals.comboCharts && !this.showOnIntersect || commonBar && this.hasBars() && this.tConfig.shared;
+
+      if (validSharedChartTypes) {
+        this.addPathsEventListeners([hoverArea], seriesHoverParams);
+      } else if (commonBar && !w.globals.comboCharts) {
+        this.addBarsEventListeners(seriesHoverParams);
+      } else if (type === 'bubble' || type === 'scatter' || type === 'radar' || this.showOnIntersect && (type === 'area' || type === 'line')) {
+        this.addPointsEventsListeners(seriesHoverParams);
+      } else if (!w.globals.axisCharts || type === 'heatmap') {
+        var seriesAll = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');
+        this.addPathsEventListeners(seriesAll, seriesHoverParams);
+      }
+
+      if (this.showOnIntersect) {
+        var linePoints = w.globals.dom.baseEl.querySelectorAll('.apexcharts-line-series .apexcharts-marker');
+        if (linePoints.length > 0) {
+          // if we find any lineSeries, addEventListeners for them
+          this.addPathsEventListeners(linePoints, seriesHoverParams);
+        }
+
+        var areaPoints = w.globals.dom.baseEl.querySelectorAll('.apexcharts-area-series .apexcharts-marker');
+        if (areaPoints.length > 0) {
+          // if we find any areaSeries, addEventListeners for them
+          this.addPathsEventListeners(areaPoints, seriesHoverParams);
+        }
+
+        // combo charts may have bars, so add event listeners here too
+        if (this.hasBars() && !this.tConfig.shared) {
+          this.addBarsEventListeners(seriesHoverParams);
+        }
+      }
+    }
+  }, {
+    key: 'drawFixedTooltipRect',
+    value: function drawFixedTooltipRect() {
+      var w = this.w;
+
+      var tooltipEl = this.getElTooltip();
+
+      var tooltipRect = tooltipEl.getBoundingClientRect();
+
+      var ttWidth = tooltipRect.width + 10;
+      var ttHeight = tooltipRect.height + 10;
+      var x = this.tConfig.fixed.offsetX;
+      var y = this.tConfig.fixed.offsetY;
+
+      if (this.tConfig.fixed.position.toLowerCase().indexOf('right') > -1) {
+        x = x + w.globals.svgWidth - ttWidth + 10;
+      }
+
+      if (this.tConfig.fixed.position.toLowerCase().indexOf('bottom') > -1) {
+        y = y + w.globals.svgHeight - ttHeight - 10;
+      }
+
+      tooltipEl.style.left = x + 'px';
+      tooltipEl.style.top = y + 'px';
+
+      return {
+        x: x,
+        y: y,
+        ttWidth: ttWidth,
+        ttHeight: ttHeight
+      };
+    }
+  }, {
+    key: 'addPointsEventsListeners',
+    value: function addPointsEventsListeners(seriesHoverParams) {
+      var w = this.w;
+      var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers .apexcharts-marker');
+      this.addPathsEventListeners(points, seriesHoverParams);
+    }
+  }, {
+    key: 'addBarsEventListeners',
+    value: function addBarsEventListeners(seriesHoverParams) {
+      var w = this.w;
+      var bars = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-rangebar-area');
+
+      this.addPathsEventListeners(bars, seriesHoverParams);
+    }
+  }, {
+    key: 'addPathsEventListeners',
+    value: function addPathsEventListeners(paths, opts) {
+      var _this = this;
+
+      var self = this;
+
+      var _loop = function _loop(p) {
+        var extendedOpts = {
+          paths: paths[p],
+          tooltipEl: opts.tooltipEl,
+          tooltipY: opts.tooltipY,
+          tooltipX: opts.tooltipX,
+          elGrid: opts.elGrid,
+          hoverArea: opts.hoverArea,
+          ttItems: opts.ttItems
+        };
+
+        _this.w.globals.tooltipOpts = extendedOpts;
+
+        var events = ['mousemove', 'mouseup', 'touchmove', 'mouseout', 'touchend'];
+
+        events.map(function (ev) {
+          return paths[p].addEventListener(ev, self.seriesHover.bind(self, extendedOpts), { capture: false, passive: true });
+        });
+      };
+
+      for (var p = 0; p < paths.length; p++) {
+        _loop(p);
+      }
+    }
+
+    /*
+     ** The actual series hover function
+     */
+
+  }, {
+    key: 'seriesHover',
+    value: function seriesHover(opt, e) {
+      var _this2 = this;
+
+      var chartGroups = [];
+      var w = this.w;
+
+      // if user has more than one charts in group, we need to sync
+      if (w.config.chart.group) {
+        chartGroups = this.ctx.getGroupedCharts();
+      }
+
+      if (w.globals.axisCharts && (w.globals.minX === -Infinity && w.globals.maxX === Infinity || w.globals.dataPoints === 0)) {
+        return;
+      }
+
+      if (chartGroups.length) {
+        chartGroups.forEach(function (ch) {
+          var tooltipEl = _this2.getElTooltip(ch);
+
+          var newOpts = {
+            paths: opt.paths,
+            tooltipEl: tooltipEl,
+            tooltipY: opt.tooltipY,
+            tooltipX: opt.tooltipX,
+            elGrid: opt.elGrid,
+            hoverArea: opt.hoverArea,
+            ttItems: ch.w.globals.tooltip.ttItems
+
+            // all the charts should have the same minX and maxX (same xaxis) for multiple tooltips to work correctly
+          };if (ch.w.globals.minX === _this2.w.globals.minX && ch.w.globals.maxX === _this2.w.globals.maxX) {
+            ch.w.globals.tooltip.seriesHoverByContext({
+              chartCtx: ch,
+              ttCtx: ch.w.globals.tooltip,
+              opt: newOpts,
+              e: e
+            });
+          }
+        });
+      } else {
+        this.seriesHoverByContext({
+          chartCtx: this.ctx,
+          ttCtx: this.w.globals.tooltip,
+          opt: opt,
+          e: e
+        });
+      }
+    }
+  }, {
+    key: 'seriesHoverByContext',
+    value: function seriesHoverByContext(_ref) {
+      var chartCtx = _ref.chartCtx,
+          ttCtx = _ref.ttCtx,
+          opt = _ref.opt,
+          e = _ref.e;
+
+      var w = chartCtx.w;
+      var tooltipEl = this.getElTooltip();
+
+      // tooltipRect is calculated on every mousemove, because the text is dynamic
+      ttCtx.tooltipRect = {
+        x: 0,
+        y: 0,
+        ttWidth: tooltipEl.getBoundingClientRect().width,
+        ttHeight: tooltipEl.getBoundingClientRect().height
+      };
+      ttCtx.e = e;
+
+      // highlight the current hovered bars
+      if (ttCtx.hasBars() && !w.globals.comboCharts && !ttCtx.isBarShared) {
+        if (this.tConfig.onDatasetHover.highlightDataSeries) {
+          var series = new _Series2.default(chartCtx);
+          series.toggleSeriesOnHover(e, e.target.parentNode);
+        }
+      }
+
+      if (ttCtx.fixedTooltip) {
+        ttCtx.drawFixedTooltipRect();
+      }
+
+      if (w.globals.axisCharts) {
+        ttCtx.axisChartsTooltips({
+          e: e,
+          opt: opt,
+          tooltipRect: ttCtx.tooltipRect
+        });
+      } else {
+        // non-plot charts i.e pie/donut/circle
+        ttCtx.nonAxisChartsTooltips({
+          e: e,
+          opt: opt,
+          tooltipRect: ttCtx.tooltipRect
+        });
+      }
+    }
+
+    // tooltip handling for line/area/bar/columns/scatter
+
+  }, {
+    key: 'axisChartsTooltips',
+    value: function axisChartsTooltips(_ref2) {
+      var e = _ref2.e,
+          opt = _ref2.opt;
+
+      var w = this.w;
+      var j = void 0,
+          x = void 0,
+          y = void 0;
+
+      var self = this;
+      var capj = null;
+
+      var seriesBound = opt.elGrid.getBoundingClientRect();
+
+      var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+      var clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY;
+
+      this.clientY = clientY;
+      this.clientX = clientX;
+
+      if (clientY < seriesBound.top || clientY > seriesBound.top + seriesBound.height) {
+        self.handleMouseOut(opt);
+        return;
+      }
+
+      if (Array.isArray(this.tConfig.enabledOnSeries)) {
+        var index = parseInt(opt.paths.getAttribute('index'));
+        if (this.tConfig.enabledOnSeries.indexOf(index) < 0) {
+          self.handleMouseOut(opt);
+          return;
+        }
+      }
+
+      var tooltipEl = this.getElTooltip();
+      var xcrosshairs = this.getElXCrosshairs();
+
+      var isStickyTooltip = w.globals.xyCharts || w.config.chart.type === 'bar' && !w.globals.isBarHorizontal && this.hasBars() && this.tConfig.shared || w.globals.comboCharts && this.hasBars;
+
+      if (w.globals.isBarHorizontal && this.hasBars()) {
+        isStickyTooltip = false;
+      }
+
+      if (e.type === 'mousemove' || e.type === 'touchmove' || e.type === 'mouseup') {
+        if (xcrosshairs !== null) {
+          xcrosshairs.classList.add('active');
+        }
+
+        if (self.ycrosshairs !== null && self.blyaxisTooltip) {
+          self.ycrosshairs.classList.add('active');
+        }
+
+        if (isStickyTooltip && !self.showOnIntersect) {
+          capj = self.tooltipUtil.getNearestValues({
+            context: self,
+            hoverArea: opt.hoverArea,
+            elGrid: opt.elGrid,
+            clientX: clientX,
+            clientY: clientY,
+            hasBars: self.hasBars
+          });
+
+          j = capj.j;
+          var capturedSeries = capj.capturedSeries;
+
+          if (capj.hoverX < 0 || capj.hoverX > w.globals.gridWidth) {
+            self.handleMouseOut(opt);
+            return;
+          }
+
+          if (capturedSeries !== null) {
+            var ignoreNull = w.globals.series[capturedSeries][j] === null;
+            if (ignoreNull) {
+              opt.tooltipEl.classList.remove('active');
+              return;
+            }
+
+            if (typeof w.globals.series[capturedSeries][j] !== 'undefined') {
+              if (this.tConfig.shared && this.tooltipUtil.isXoverlap(j) && this.tooltipUtil.isinitialSeriesSameLen()) {
+                this.create(e, self, capturedSeries, j, opt.ttItems);
+              } else {
+                this.create(e, self, capturedSeries, j, opt.ttItems, false);
+              }
+            } else {
+              if (this.tooltipUtil.isXoverlap(j)) {
+                self.create(e, self, 0, j, opt.ttItems);
+              }
+            }
+          } else {
+            // couldn't capture any series. check if shared X is same,
+            // if yes, draw a grouped tooltip
+            if (this.tooltipUtil.isXoverlap(j)) {
+              self.create(e, self, 0, j, opt.ttItems);
+            }
+          }
+        } else {
+          if (w.config.chart.type === 'heatmap') {
+            var markerXY = this.intersect.handleHeatTooltip({
+              e: e,
+              opt: opt,
+              x: x,
+              y: y
+            });
+            x = markerXY.x;
+            y = markerXY.y;
+
+            tooltipEl.style.left = x + 'px';
+            tooltipEl.style.top = y + 'px';
+          } else {
+            if (this.hasBars) {
+              this.intersect.handleBarTooltip({
+                e: e,
+                opt: opt
+              });
+            }
+
+            if (this.hasMarkers) {
+              // intersect - line/area/scatter/bubble
+              this.intersect.handleMarkerTooltip({
+                e: e,
+                opt: opt,
+                x: x,
+                y: y
+              });
+            }
+          }
+        }
+
+        if (this.blyaxisTooltip) {
+          for (var yt = 0; yt < w.config.yaxis.length; yt++) {
+            self.axesTooltip.drawYaxisTooltipText(yt, clientY, self.xyRatios);
+          }
+        }
+
+        opt.tooltipEl.classList.add('active');
+      } else if (e.type === 'mouseout' || e.type === 'touchend') {
+        this.handleMouseOut(opt);
+      }
+    }
+
+    // tooltip handling for pie/donuts
+
+  }, {
+    key: 'nonAxisChartsTooltips',
+    value: function nonAxisChartsTooltips(_ref3) {
+      var e = _ref3.e,
+          opt = _ref3.opt,
+          tooltipRect = _ref3.tooltipRect;
+
+      var w = this.w;
+      var rel = opt.paths.getAttribute('rel');
+
+      var tooltipEl = this.getElTooltip();
+
+      var seriesBound = w.globals.dom.elWrap.getBoundingClientRect();
+
+      if (e.type === 'mousemove' || e.type === 'touchmove') {
+        tooltipEl.classList.add('active');
+
+        this.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: parseInt(rel) - 1,
+          shared: false
+        });
+
+        var x = w.globals.clientX - seriesBound.left - tooltipRect.ttWidth / 2;
+        var y = w.globals.clientY - seriesBound.top - tooltipRect.ttHeight - 10;
+
+        tooltipEl.style.left = x + 'px';
+        tooltipEl.style.top = y + 'px';
+      } else if (e.type === 'mouseout' || e.type === 'touchend') {
+        tooltipEl.classList.remove('active');
+      }
+    }
+  }, {
+    key: 'deactivateHoverFilter',
+    value: function deactivateHoverFilter() {
+      var w = this.w;
+      var graphics = new _Graphics2.default(this.ctx);
+
+      var allPaths = w.globals.dom.Paper.select('.apexcharts-bar-area');
+
+      for (var b = 0; b < allPaths.length; b++) {
+        graphics.pathMouseLeave(allPaths[b]);
+      }
+    }
+  }, {
+    key: 'handleMouseOut',
+    value: function handleMouseOut(opt) {
+      var w = this.w;
+
+      var xcrosshairs = this.getElXCrosshairs();
+
+      opt.tooltipEl.classList.remove('active');
+      this.deactivateHoverFilter();
+      if (w.config.chart.type !== 'bubble') {
+        this.marker.resetPointsSize();
+      }
+      if (xcrosshairs !== null) {
+        xcrosshairs.classList.remove('active');
+      }
+      if (this.ycrosshairs !== null) {
+        this.ycrosshairs.classList.remove('active');
+      }
+      if (this.blxaxisTooltip) {
+        this.xaxisTooltip.classList.remove('active');
+      }
+      if (this.blyaxisTooltip) {
+        if (this.yaxisTTEls === null) {
+          this.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip');
+        }
+        for (var i = 0; i < this.yaxisTTEls.length; i++) {
+          this.yaxisTTEls[i].classList.remove('active');
+        }
+      }
+    }
+  }, {
+    key: 'getElMarkers',
+    value: function getElMarkers() {
+      return this.w.globals.dom.baseEl.querySelectorAll(' .apexcharts-series-markers');
+    }
+  }, {
+    key: 'getAllMarkers',
+    value: function getAllMarkers() {
+      return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers .apexcharts-marker');
+    }
+  }, {
+    key: 'hasMarkers',
+    value: function hasMarkers() {
+      var markers = this.getElMarkers();
+      return markers.length > 0;
+    }
+  }, {
+    key: 'getElBars',
+    value: function getElBars() {
+      return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-series,  .apexcharts-candlestick-series, .apexcharts-rangebar-series');
+    }
+  }, {
+    key: 'hasBars',
+    value: function hasBars() {
+      var bars = this.getElBars();
+      return bars.length > 0;
+    }
+  }, {
+    key: 'markerClick',
+    value: function markerClick(e, seriesIndex, dataPointIndex) {
+      var w = this.w;
+      if (typeof w.config.chart.events.markerClick === 'function') {
+        w.config.chart.events.markerClick(e, this.ctx, {
+          seriesIndex: seriesIndex,
+          dataPointIndex: dataPointIndex,
+          w: w
+        });
+      }
+      this.ctx.fireEvent('markerClick', [e, this.ctx, { seriesIndex: seriesIndex, dataPointIndex: dataPointIndex, w: w }]);
+    }
+  }, {
+    key: 'create',
+    value: function create(e, context, capturedSeries, j, ttItems) {
+      var shared = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
+
+      var w = this.w;
+      var ttCtx = context;
+
+      if (e.type === 'mouseup') {
+        this.markerClick(e, capturedSeries, j);
+      }
+
+      if (shared === null) shared = this.tConfig.shared;
+
+      var hasMarkers = this.hasMarkers();
+
+      var bars = this.getElBars();
+
+      if (shared) {
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: ttItems,
+          i: capturedSeries,
+          j: j,
+          shared: this.showOnIntersect ? false : this.tConfig.shared
+        });
+
+        if (hasMarkers) {
+          if (w.globals.markers.largestSize > 0) {
+            ttCtx.marker.enlargePoints(j);
+          } else {
+            ttCtx.tooltipPosition.moveDynamicPointsOnHover(j);
+          }
+        }
+
+        if (this.hasBars()) {
+          this.barSeriesHeight = this.tooltipUtil.getBarsHeight(bars);
+          if (this.barSeriesHeight > 0) {
+            // hover state, activate snap filter
+            var graphics = new _Graphics2.default(this.ctx);
+            var paths = w.globals.dom.Paper.select('.apexcharts-bar-area[j=\'' + j + '\']');
+
+            // de-activate first
+            this.deactivateHoverFilter();
+
+            this.tooltipPosition.moveStickyTooltipOverBars(j);
+
+            for (var b = 0; b < paths.length; b++) {
+              graphics.pathMouseEnter(paths[b]);
+            }
+          }
+        }
+      } else {
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          shared: false,
+          ttItems: ttItems,
+          i: capturedSeries,
+          j: j
+        });
+
+        if (this.hasBars()) {
+          ttCtx.tooltipPosition.moveStickyTooltipOverBars(j);
+        }
+
+        if (hasMarkers) {
+          ttCtx.tooltipPosition.moveMarkers(capturedSeries, j);
+        }
+      }
+    }
+  }]);
+
+  return Tooltip;
+}();
+
+exports.default = Tooltip;
+
+/***/ }),
+/* 56 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// shim for using process in browser
+var process = module.exports = {};
+
+// cached from whatever global is present so that test runners that stub it
+// don't break things.  But we need to wrap it in a try catch in case it is
+// wrapped in strict mode code which doesn't define any globals.  It's inside a
+// function because try/catches deoptimize in certain engines.
+
+var cachedSetTimeout;
+var cachedClearTimeout;
+
+function defaultSetTimout() {
+    throw new Error('setTimeout has not been defined');
+}
+function defaultClearTimeout() {
+    throw new Error('clearTimeout has not been defined');
+}
+(function () {
+    try {
+        if (typeof setTimeout === 'function') {
+            cachedSetTimeout = setTimeout;
+        } else {
+            cachedSetTimeout = defaultSetTimout;
+        }
+    } catch (e) {
+        cachedSetTimeout = defaultSetTimout;
+    }
+    try {
+        if (typeof clearTimeout === 'function') {
+            cachedClearTimeout = clearTimeout;
+        } else {
+            cachedClearTimeout = defaultClearTimeout;
+        }
+    } catch (e) {
+        cachedClearTimeout = defaultClearTimeout;
+    }
+})();
+function runTimeout(fun) {
+    if (cachedSetTimeout === setTimeout) {
+        //normal enviroments in sane situations
+        return setTimeout(fun, 0);
+    }
+    // if setTimeout wasn't available but was latter defined
+    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+        cachedSetTimeout = setTimeout;
+        return setTimeout(fun, 0);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedSetTimeout(fun, 0);
+    } catch (e) {
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+            return cachedSetTimeout.call(null, fun, 0);
+        } catch (e) {
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+            return cachedSetTimeout.call(this, fun, 0);
+        }
+    }
+}
+function runClearTimeout(marker) {
+    if (cachedClearTimeout === clearTimeout) {
+        //normal enviroments in sane situations
+        return clearTimeout(marker);
+    }
+    // if clearTimeout wasn't available but was latter defined
+    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+        cachedClearTimeout = clearTimeout;
+        return clearTimeout(marker);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedClearTimeout(marker);
+    } catch (e) {
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
+            return cachedClearTimeout.call(null, marker);
+        } catch (e) {
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+            return cachedClearTimeout.call(this, marker);
+        }
+    }
+}
+var queue = [];
+var draining = false;
+var currentQueue;
+var queueIndex = -1;
+
+function cleanUpNextTick() {
+    if (!draining || !currentQueue) {
+        return;
+    }
+    draining = false;
+    if (currentQueue.length) {
+        queue = currentQueue.concat(queue);
+    } else {
+        queueIndex = -1;
+    }
+    if (queue.length) {
+        drainQueue();
+    }
+}
+
+function drainQueue() {
+    if (draining) {
+        return;
+    }
+    var timeout = runTimeout(cleanUpNextTick);
+    draining = true;
+
+    var len = queue.length;
+    while (len) {
+        currentQueue = queue;
+        queue = [];
+        while (++queueIndex < len) {
+            if (currentQueue) {
+                currentQueue[queueIndex].run();
+            }
+        }
+        queueIndex = -1;
+        len = queue.length;
+    }
+    currentQueue = null;
+    draining = false;
+    runClearTimeout(timeout);
+}
+
+process.nextTick = function (fun) {
+    var args = new Array(arguments.length - 1);
+    if (arguments.length > 1) {
+        for (var i = 1; i < arguments.length; i++) {
+            args[i - 1] = arguments[i];
+        }
+    }
+    queue.push(new Item(fun, args));
+    if (queue.length === 1 && !draining) {
+        runTimeout(drainQueue);
+    }
+};
+
+// v8 likes predictible objects
+function Item(fun, array) {
+    this.fun = fun;
+    this.array = array;
+}
+Item.prototype.run = function () {
+    this.fun.apply(null, this.array);
+};
+process.title = 'browser';
+process.browser = true;
+process.env = {};
+process.argv = [];
+process.version = ''; // empty string to avoid regexp issues
+process.versions = {};
+
+function noop() {}
+
+process.on = noop;
+process.addListener = noop;
+process.once = noop;
+process.off = noop;
+process.removeListener = noop;
+process.removeAllListeners = noop;
+process.emit = noop;
+process.prependListener = noop;
+process.prependOnceListener = noop;
+
+process.listeners = function (name) {
+    return [];
+};
+
+process.binding = function (name) {
+    throw new Error('process.binding is not supported');
+};
+
+process.cwd = function () {
+    return '/';
+};
+process.chdir = function (dir) {
+    throw new Error('process.chdir is not supported');
+};
+process.umask = function () {
+    return 0;
+};
+
+/***/ }),
+/* 57 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+/**
+ * @this {Promise}
+ */
+function finallyConstructor(callback) {
+  var constructor = this.constructor;
+  return this.then(function (value) {
+    return constructor.resolve(callback()).then(function () {
+      return value;
+    });
+  }, function (reason) {
+    return constructor.resolve(callback()).then(function () {
+      return constructor.reject(reason);
+    });
+  });
+}
+
+exports.default = finallyConstructor;
+
+/***/ }),
+/* 58 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global, process) {
+
+(function (global, undefined) {
+    "use strict";
+
+    if (global.setImmediate) {
+        return;
+    }
+
+    var nextHandle = 1; // Spec says greater than zero
+    var tasksByHandle = {};
+    var currentlyRunningATask = false;
+    var doc = global.document;
+    var registerImmediate;
+
+    function setImmediate(callback) {
+        // Callback can either be a function or a string
+        if (typeof callback !== "function") {
+            callback = new Function("" + callback);
+        }
+        // Copy function arguments
+        var args = new Array(arguments.length - 1);
+        for (var i = 0; i < args.length; i++) {
+            args[i] = arguments[i + 1];
+        }
+        // Store and register the task
+        var task = { callback: callback, args: args };
+        tasksByHandle[nextHandle] = task;
+        registerImmediate(nextHandle);
+        return nextHandle++;
+    }
+
+    function clearImmediate(handle) {
+        delete tasksByHandle[handle];
+    }
+
+    function run(task) {
+        var callback = task.callback;
+        var args = task.args;
+        switch (args.length) {
+            case 0:
+                callback();
+                break;
+            case 1:
+                callback(args[0]);
+                break;
+            case 2:
+                callback(args[0], args[1]);
+                break;
+            case 3:
+                callback(args[0], args[1], args[2]);
+                break;
+            default:
+                callback.apply(undefined, args);
+                break;
+        }
+    }
+
+    function runIfPresent(handle) {
+        // From the spec: "Wait until any invocations of this algorithm started before this one have completed."
+        // So if we're currently running a task, we'll need to delay this invocation.
+        if (currentlyRunningATask) {
+            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
+            // "too much recursion" error.
+            setTimeout(runIfPresent, 0, handle);
+        } else {
+            var task = tasksByHandle[handle];
+            if (task) {
+                currentlyRunningATask = true;
+                try {
+                    run(task);
+                } finally {
+                    clearImmediate(handle);
+                    currentlyRunningATask = false;
+                }
+            }
+        }
+    }
+
+    function installNextTickImplementation() {
+        registerImmediate = function registerImmediate(handle) {
+            process.nextTick(function () {
+                runIfPresent(handle);
+            });
+        };
+    }
+
+    function canUsePostMessage() {
+        // The test against `importScripts` prevents this implementation from being installed inside a web worker,
+        // where `global.postMessage` means something completely different and can't be used for this purpose.
+        if (global.postMessage && !global.importScripts) {
+            var postMessageIsAsynchronous = true;
+            var oldOnMessage = global.onmessage;
+            global.onmessage = function () {
+                postMessageIsAsynchronous = false;
+            };
+            global.postMessage("", "*");
+            global.onmessage = oldOnMessage;
+            return postMessageIsAsynchronous;
+        }
+    }
+
+    function installPostMessageImplementation() {
+        // Installs an event handler on `global` for the `message` event: see
+        // * https://developer.mozilla.org/en/DOM/window.postMessage
+        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
+
+        var messagePrefix = "setImmediate$" + Math.random() + "$";
+        var onGlobalMessage = function onGlobalMessage(event) {
+            if (event.source === global && typeof event.data === "string" && event.data.indexOf(messagePrefix) === 0) {
+                runIfPresent(+event.data.slice(messagePrefix.length));
+            }
+        };
+
+        if (global.addEventListener) {
+            global.addEventListener("message", onGlobalMessage, false);
+        } else {
+            global.attachEvent("onmessage", onGlobalMessage);
+        }
+
+        registerImmediate = function registerImmediate(handle) {
+            global.postMessage(messagePrefix + handle, "*");
+        };
+    }
+
+    function installMessageChannelImplementation() {
+        var channel = new MessageChannel();
+        channel.port1.onmessage = function (event) {
+            var handle = event.data;
+            runIfPresent(handle);
+        };
+
+        registerImmediate = function registerImmediate(handle) {
+            channel.port2.postMessage(handle);
+        };
+    }
+
+    function installReadyStateChangeImplementation() {
+        var html = doc.documentElement;
+        registerImmediate = function registerImmediate(handle) {
+            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
+            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
+            var script = doc.createElement("script");
+            script.onreadystatechange = function () {
+                runIfPresent(handle);
+                script.onreadystatechange = null;
+                html.removeChild(script);
+                script = null;
+            };
+            html.appendChild(script);
+        };
+    }
+
+    function installSetTimeoutImplementation() {
+        registerImmediate = function registerImmediate(handle) {
+            setTimeout(runIfPresent, 0, handle);
+        };
+    }
+
+    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
+    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
+    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
+
+    // Don't get fooled by e.g. browserify environments.
+    if ({}.toString.call(global.process) === "[object process]") {
+        // For Node.js before 0.9
+        installNextTickImplementation();
+    } else if (canUsePostMessage()) {
+        // For non-IE10 modern browsers
+        installPostMessageImplementation();
+    } else if (global.MessageChannel) {
+        // For web workers, where supported
+        installMessageChannelImplementation();
+    } else if (doc && "onreadystatechange" in doc.createElement("script")) {
+        // For IE 6–8
+        installReadyStateChangeImplementation();
+    } else {
+        // For older browsers
+        installSetTimeoutImplementation();
+    }
+
+    attachTo.setImmediate = setImmediate;
+    attachTo.clearImmediate = clearImmediate;
+})(typeof self === "undefined" ? typeof global === "undefined" ? undefined : global : self);
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(29), __webpack_require__(56)))
+
+/***/ }),
+/* 59 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/**
+ * When source maps are enabled, `style-loader` uses a link element with a data-uri to
+ * embed the css on the page. This breaks all relative urls because now they are relative to a
+ * bundle instead of the current page.
+ *
+ * One solution is to only use full urls, but that may be impossible.
+ *
+ * Instead, this function "fixes" the relative urls to be absolute according to the current page location.
+ *
+ * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.
+ *
+ */
+
+module.exports = function (css) {
+	// get current location
+	var location = typeof window !== "undefined" && window.location;
+
+	if (!location) {
+		throw new Error("fixUrls requires window.location");
+	}
+
+	// blank or null?
+	if (!css || typeof css !== "string") {
+		return css;
+	}
+
+	var baseUrl = location.protocol + "//" + location.host;
+	var currentDir = baseUrl + location.pathname.replace(/\/[^\/]*$/, "/");
+
+	// convert each url(...)
+	/*
+ This regular expression is just a way to recursively match brackets within
+ a string.
+ 	 /url\s*\(  = Match on the word "url" with any whitespace after it and then a parens
+    (  = Start a capturing group
+      (?:  = Start a non-capturing group
+          [^)(]  = Match anything that isn't a parentheses
+          |  = OR
+          \(  = Match a start parentheses
+              (?:  = Start another non-capturing groups
+                  [^)(]+  = Match anything that isn't a parentheses
+                  |  = OR
+                  \(  = Match a start parentheses
+                      [^)(]*  = Match anything that isn't a parentheses
+                  \)  = Match a end parentheses
+              )  = End Group
+              *\) = Match anything and then a close parens
+          )  = Close non-capturing group
+          *  = Match anything
+       )  = Close capturing group
+  \)  = Match a close parens
+ 	 /gi  = Get all matches, not the first.  Be case insensitive.
+  */
+	var fixedCss = css.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function (fullMatch, origUrl) {
+		// strip quotes (if they exist)
+		var unquotedOrigUrl = origUrl.trim().replace(/^"(.*)"$/, function (o, $1) {
+			return $1;
+		}).replace(/^'(.*)'$/, function (o, $1) {
+			return $1;
+		});
+
+		// already a full url? no change
+		if (/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(unquotedOrigUrl)) {
+			return fullMatch;
+		}
+
+		// convert the url to a full url
+		var newUrl;
+
+		if (unquotedOrigUrl.indexOf("//") === 0) {
+			//TODO: should we add protocol?
+			newUrl = unquotedOrigUrl;
+		} else if (unquotedOrigUrl.indexOf("/") === 0) {
+			// path should be relative to the base url
+			newUrl = baseUrl + unquotedOrigUrl; // already starts with '/'
+		} else {
+			// path should be relative to current directory
+			newUrl = currentDir + unquotedOrigUrl.replace(/^\.\//, ""); // Strip leading './'
+		}
+
+		// send back the fixed url(...)
+		return "url(" + JSON.stringify(newUrl) + ")";
+	});
+
+	// send back the fixed css
+	return fixedCss;
+};
+
+/***/ }),
+/* 60 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/*! svg.draggable.js - v2.2.1 - 2016-08-25
+* https://github.com/wout/svg.draggable.js
+* Copyright (c) 2016 Wout Fierens; Licensed MIT */
+;(function () {
+
+  // creates handler, saves it
+  function DragHandler(el) {
+    el.remember('_draggable', this);
+    this.el = el;
+  }
+
+  // Sets new parameter, starts dragging
+  DragHandler.prototype.init = function (constraint, val) {
+    var _this = this;
+    this.constraint = constraint;
+    this.value = val;
+    this.el.on('mousedown.drag', function (e) {
+      _this.start(e);
+    });
+    this.el.on('touchstart.drag', function (e) {
+      _this.start(e);
+    });
+  };
+
+  // transforms one point from screen to user coords
+  DragHandler.prototype.transformPoint = function (event, offset) {
+    event = event || window.event;
+    var touches = event.changedTouches && event.changedTouches[0] || event;
+    this.p.x = touches.pageX - (offset || 0);
+    this.p.y = touches.pageY;
+    return this.p.matrixTransform(this.m);
+  };
+
+  // gets elements bounding box with special handling of groups, nested and use
+  DragHandler.prototype.getBBox = function () {
+
+    var box = this.el.bbox();
+
+    if (this.el instanceof SVG.Nested) box = this.el.rbox();
+
+    if (this.el instanceof SVG.G || this.el instanceof SVG.Use || this.el instanceof SVG.Nested) {
+      box.x = this.el.x();
+      box.y = this.el.y();
+    }
+
+    return box;
+  };
+
+  // start dragging
+  DragHandler.prototype.start = function (e) {
+
+    // check for left button
+    if (e.type == 'click' || e.type == 'mousedown' || e.type == 'mousemove') {
+      if ((e.which || e.buttons) != 1) {
+        return;
+      }
+    }
+
+    var _this = this;
+
+    // fire beforedrag event
+    this.el.fire('beforedrag', { event: e, handler: this });
+
+    // search for parent on the fly to make sure we can call
+    // draggable() even when element is not in the dom currently
+    this.parent = this.parent || this.el.parent(SVG.Nested) || this.el.parent(SVG.Doc);
+    this.p = this.parent.node.createSVGPoint();
+
+    // save current transformation matrix
+    this.m = this.el.node.getScreenCTM().inverse();
+
+    var box = this.getBBox();
+
+    var anchorOffset;
+
+    // fix text-anchor in text-element (#37)
+    if (this.el instanceof SVG.Text) {
+      anchorOffset = this.el.node.getComputedTextLength();
+
+      switch (this.el.attr('text-anchor')) {
+        case 'middle':
+          anchorOffset /= 2;
+          break;
+        case 'start':
+          anchorOffset = 0;
+          break;
+      }
+    }
+
+    this.startPoints = {
+      // We take absolute coordinates since we are just using a delta here
+      point: this.transformPoint(e, anchorOffset),
+      box: box,
+      transform: this.el.transform()
+
+      // add drag and end events to window
+    };SVG.on(window, 'mousemove.drag', function (e) {
+      _this.drag(e);
+    });
+    SVG.on(window, 'touchmove.drag', function (e) {
+      _this.drag(e);
+    });
+    SVG.on(window, 'mouseup.drag', function (e) {
+      _this.end(e);
+    });
+    SVG.on(window, 'touchend.drag', function (e) {
+      _this.end(e);
+    });
+
+    // fire dragstart event
+    this.el.fire('dragstart', { event: e, p: this.startPoints.point, m: this.m, handler: this });
+
+    // prevent browser drag behavior
+    e.preventDefault();
+
+    // prevent propagation to a parent that might also have dragging enabled
+    e.stopPropagation();
+  };
+
+  // while dragging
+  DragHandler.prototype.drag = function (e) {
+
+    var box = this.getBBox(),
+        p = this.transformPoint(e),
+        x = this.startPoints.box.x + p.x - this.startPoints.point.x,
+        y = this.startPoints.box.y + p.y - this.startPoints.point.y,
+        c = this.constraint,
+        gx = p.x - this.startPoints.point.x,
+        gy = p.y - this.startPoints.point.y;
+
+    var event = new CustomEvent('dragmove', {
+      detail: {
+        event: e,
+        p: p,
+        m: this.m,
+        handler: this
+      },
+      cancelable: true
+    });
+
+    this.el.fire(event);
+
+    if (event.defaultPrevented) return p;
+
+    // move the element to its new position, if possible by constraint
+    if (typeof c == 'function') {
+
+      var coord = c.call(this.el, x, y, this.m);
+
+      // bool, just show us if movement is allowed or not
+      if (typeof coord == 'boolean') {
+        coord = {
+          x: coord,
+          y: coord
+        };
+      }
+
+      // if true, we just move. If !false its a number and we move it there
+      if (coord.x === true) {
+        this.el.x(x);
+      } else if (coord.x !== false) {
+        this.el.x(coord.x);
+      }
+
+      if (coord.y === true) {
+        this.el.y(y);
+      } else if (coord.y !== false) {
+        this.el.y(coord.y);
+      }
+    } else if ((typeof c === 'undefined' ? 'undefined' : _typeof(c)) == 'object') {
+
+      // keep element within constrained box
+      if (c.minX != null && x < c.minX) x = c.minX;else if (c.maxX != null && x > c.maxX - box.width) {
+        x = c.maxX - box.width;
+      }if (c.minY != null && y < c.minY) y = c.minY;else if (c.maxY != null && y > c.maxY - box.height) y = c.maxY - box.height;
+
+      if (this.el instanceof SVG.G) this.el.matrix(this.startPoints.transform).transform({ x: gx, y: gy }, true);else this.el.move(x, y);
+    }
+
+    // so we can use it in the end-method, too
+    return p;
+  };
+
+  DragHandler.prototype.end = function (e) {
+
+    // final drag
+    var p = this.drag(e);
+
+    // fire dragend event
+    this.el.fire('dragend', { event: e, p: p, m: this.m, handler: this });
+
+    // unbind events
+    SVG.off(window, 'mousemove.drag');
+    SVG.off(window, 'touchmove.drag');
+    SVG.off(window, 'mouseup.drag');
+    SVG.off(window, 'touchend.drag');
+  };
+
+  SVG.extend(SVG.Element, {
+    // Make element draggable
+    // Constraint might be an object (as described in readme.md) or a function in the form "function (x, y)" that gets called before every move.
+    // The function can return a boolean or an object of the form {x, y}, to which the element will be moved. "False" skips moving, true moves to raw x, y.
+    draggable: function draggable(value, constraint) {
+
+      // Check the parameters and reassign if needed
+      if (typeof value == 'function' || (typeof value === 'undefined' ? 'undefined' : _typeof(value)) == 'object') {
+        constraint = value;
+        value = true;
+      }
+
+      var dragHandler = this.remember('_draggable') || new DragHandler(this);
+
+      // When no parameter is given, value is true
+      value = typeof value === 'undefined' ? true : value;
+
+      if (value) dragHandler.init(constraint || {}, value);else {
+        this.off('mousedown.drag');
+        this.off('touchstart.drag');
+      }
+
+      return this;
+    }
+
+  });
+}).call(undefined);
+
+/***/ }),
+/* 61 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/*! svg.filter.js - v2.0.2 - 2016-02-24
+* https://github.com/wout/svg.filter.js
+* Copyright (c) 2016 Wout Fierens; Licensed MIT */
+;(function () {
+
+  // Main filter class
+  SVG.Filter = SVG.invent({
+    create: 'filter',
+    inherit: SVG.Parent,
+    extend: {
+      // Static strings
+      source: 'SourceGraphic',
+      sourceAlpha: 'SourceAlpha',
+      background: 'BackgroundImage',
+      backgroundAlpha: 'BackgroundAlpha',
+      fill: 'FillPaint',
+      stroke: 'StrokePaint',
+
+      autoSetIn: true,
+      // Custom put method for leaner code
+      put: function put(element, i) {
+        this.add(element, i);
+
+        if (!element.attr('in') && this.autoSetIn) {
+          element.attr('in', this.source);
+        }
+        if (!element.attr('result')) {
+          element.attr('result', element);
+        }
+
+        return element;
+      },
+      // Blend effect
+      blend: function blend(in1, in2, mode) {
+        return this.put(new SVG.BlendEffect(in1, in2, mode));
+      },
+      // ColorMatrix effect
+      colorMatrix: function colorMatrix(type, values) {
+        return this.put(new SVG.ColorMatrixEffect(type, values));
+      },
+      // ConvolveMatrix effect
+      convolveMatrix: function convolveMatrix(matrix) {
+        return this.put(new SVG.ConvolveMatrixEffect(matrix));
+      },
+      // ComponentTransfer effect
+      componentTransfer: function componentTransfer(components) {
+        return this.put(new SVG.ComponentTransferEffect(components));
+      },
+      // Composite effect
+      composite: function composite(in1, in2, operator) {
+        return this.put(new SVG.CompositeEffect(in1, in2, operator));
+      },
+      // Flood effect
+      flood: function flood(color, opacity) {
+        return this.put(new SVG.FloodEffect(color, opacity));
+      },
+      // Offset effect
+      offset: function offset(x, y) {
+        return this.put(new SVG.OffsetEffect(x, y));
+      },
+      // Image effect
+      image: function image(src) {
+        return this.put(new SVG.ImageEffect(src));
+      },
+      // Merge effect
+      merge: function merge() {
+        //pass the array of arguments to the constructor because we dont know if the user gave us an array as the first arguemnt or wether they listed the effects in the arguments
+        var args = [undefined];
+        for (var i in arguments) {
+          args.push(arguments[i]);
+        }return this.put(new (SVG.MergeEffect.bind.apply(SVG.MergeEffect, args))());
+      },
+      // Gaussian Blur effect
+      gaussianBlur: function gaussianBlur(x, y) {
+        return this.put(new SVG.GaussianBlurEffect(x, y));
+      },
+      // Morphology effect
+      morphology: function morphology(operator, radius) {
+        return this.put(new SVG.MorphologyEffect(operator, radius));
+      },
+      // DiffuseLighting effect
+      diffuseLighting: function diffuseLighting(surfaceScale, diffuseConstant, kernelUnitLength) {
+        return this.put(new SVG.DiffuseLightingEffect(surfaceScale, diffuseConstant, kernelUnitLength));
+      },
+      // DisplacementMap effect
+      displacementMap: function displacementMap(in1, in2, scale, xChannelSelector, yChannelSelector) {
+        return this.put(new SVG.DisplacementMapEffect(in1, in2, scale, xChannelSelector, yChannelSelector));
+      },
+      // SpecularLighting effect
+      specularLighting: function specularLighting(surfaceScale, diffuseConstant, specularExponent, kernelUnitLength) {
+        return this.put(new SVG.SpecularLightingEffect(surfaceScale, diffuseConstant, specularExponent, kernelUnitLength));
+      },
+      // Tile effect
+      tile: function tile() {
+        return this.put(new SVG.TileEffect());
+      },
+      // Turbulence effect
+      turbulence: function turbulence(baseFrequency, numOctaves, seed, stitchTiles, type) {
+        return this.put(new SVG.TurbulenceEffect(baseFrequency, numOctaves, seed, stitchTiles, type));
+      },
+      // Default string value
+      toString: function toString() {
+        return 'url(#' + this.attr('id') + ')';
+      }
+    }
+  });
+
+  //add .filter function
+  SVG.extend(SVG.Defs, {
+    // Define filter
+    filter: function filter(block) {
+      var filter = this.put(new SVG.Filter());
+
+      /* invoke passed block */
+      if (typeof block === 'function') block.call(filter, filter);
+
+      return filter;
+    }
+  });
+  SVG.extend(SVG.Container, {
+    // Define filter on defs
+    filter: function filter(block) {
+      return this.defs().filter(block);
+    }
+  });
+  SVG.extend(SVG.Element, SVG.G, SVG.Nested, {
+    // Create filter element in defs and store reference
+    filter: function filter(block) {
+      this.filterer = block instanceof SVG.Element ? block : this.doc().filter(block);
+
+      if (this.doc() && this.filterer.doc() !== this.doc()) {
+        this.doc().defs().add(this.filterer);
+      }
+
+      this.attr('filter', this.filterer);
+
+      return this.filterer;
+    },
+    // Remove filter
+    unfilter: function unfilter(remove) {
+      /* also remove the filter node */
+      if (this.filterer && remove === true) this.filterer.remove();
+
+      /* delete reference to filterer */
+      delete this.filterer;
+
+      /* remove filter attribute */
+      return this.attr('filter', null);
+    }
+  });
+
+  // Create SVG.Effect class
+  SVG.Effect = SVG.invent({
+    create: function create() {
+      this.constructor.call(this);
+    },
+    inherit: SVG.Element,
+    extend: {
+      // Set in attribute
+      in: function _in(effect) {
+        return effect == null ? this.parent() && this.parent().select('[result="' + this.attr('in') + '"]').get(0) || this.attr('in') : this.attr('in', effect);
+      },
+      // Named result
+      result: function result(_result) {
+        return _result == null ? this.attr('result') : this.attr('result', _result);
+      },
+      // Stringification
+      toString: function toString() {
+        return this.result();
+      }
+    }
+  });
+
+  // create class for parent effects like merge
+  // Inherit from SVG.Parent
+  SVG.ParentEffect = SVG.invent({
+    create: function create() {
+      this.constructor.call(this);
+    },
+    inherit: SVG.Parent,
+    extend: {
+      // Set in attribute
+      in: function _in(effect) {
+        return effect == null ? this.parent() && this.parent().select('[result="' + this.attr('in') + '"]').get(0) || this.attr('in') : this.attr('in', effect);
+      },
+      // Named result
+      result: function result(_result2) {
+        return _result2 == null ? this.attr('result') : this.attr('result', _result2);
+      },
+      // Stringification
+      toString: function toString() {
+        return this.result();
+      }
+    }
+  });
+
+  //chaining
+  var chainingEffects = {
+    // Blend effect
+    blend: function blend(in2, mode) {
+      return this.parent() && this.parent().blend(this, in2, mode); //pass this as the first input
+    },
+    // ColorMatrix effect
+    colorMatrix: function colorMatrix(type, values) {
+      return this.parent() && this.parent().colorMatrix(type, values).in(this);
+    },
+    // ConvolveMatrix effect
+    convolveMatrix: function convolveMatrix(matrix) {
+      return this.parent() && this.parent().convolveMatrix(matrix).in(this);
+    },
+    // ComponentTransfer effect
+    componentTransfer: function componentTransfer(components) {
+      return this.parent() && this.parent().componentTransfer(components).in(this);
+    },
+    // Composite effect
+    composite: function composite(in2, operator) {
+      return this.parent() && this.parent().composite(this, in2, operator); //pass this as the first input
+    },
+    // Flood effect
+    flood: function flood(color, opacity) {
+      return this.parent() && this.parent().flood(color, opacity); //this effect dont have inputs
+    },
+    // Offset effect
+    offset: function offset(x, y) {
+      return this.parent() && this.parent().offset(x, y).in(this);
+    },
+    // Image effect
+    image: function image(src) {
+      return this.parent() && this.parent().image(src); //this effect dont have inputs
+    },
+    // Merge effect
+    merge: function merge() {
+      return this.parent() && this.parent().merge.apply(this.parent(), [this].concat(arguments)); //pass this as the first argument
+    },
+    // Gaussian Blur effect
+    gaussianBlur: function gaussianBlur(x, y) {
+      return this.parent() && this.parent().gaussianBlur(x, y).in(this);
+    },
+    // Morphology effect
+    morphology: function morphology(operator, radius) {
+      return this.parent() && this.parent().morphology(operator, radius).in(this);
+    },
+    // DiffuseLighting effect
+    diffuseLighting: function diffuseLighting(surfaceScale, diffuseConstant, kernelUnitLength) {
+      return this.parent() && this.parent().diffuseLighting(surfaceScale, diffuseConstant, kernelUnitLength).in(this);
+    },
+    // DisplacementMap effect
+    displacementMap: function displacementMap(in2, scale, xChannelSelector, yChannelSelector) {
+      return this.parent() && this.parent().displacementMap(this, in2, scale, xChannelSelector, yChannelSelector); //pass this as the first input
+    },
+    // SpecularLighting effect
+    specularLighting: function specularLighting(surfaceScale, diffuseConstant, specularExponent, kernelUnitLength) {
+      return this.parent() && this.parent().specularLighting(surfaceScale, diffuseConstant, specularExponent, kernelUnitLength).in(this);
+    },
+    // Tile effect
+    tile: function tile() {
+      return this.parent() && this.parent().tile().in(this);
+    },
+    // Turbulence effect
+    turbulence: function turbulence(baseFrequency, numOctaves, seed, stitchTiles, type) {
+      return this.parent() && this.parent().turbulence(baseFrequency, numOctaves, seed, stitchTiles, type).in(this);
+    }
+  };
+  SVG.extend(SVG.Effect, chainingEffects);
+  SVG.extend(SVG.ParentEffect, chainingEffects);
+
+  //crea class for child effects, like MergeNode, FuncR and lights
+  SVG.ChildEffect = SVG.invent({
+    create: function create() {
+      this.constructor.call(this);
+    },
+    inherit: SVG.Element,
+    extend: {
+      in: function _in(effect) {
+        this.attr('in', effect);
+      }
+      //dont include any "result" functions because these types of nodes dont have them
+    }
+  });
+
+  // Create all different effects
+  var effects = {
+    blend: function blend(in1, in2, mode) {
+      this.attr({
+        in: in1,
+        in2: in2,
+        mode: mode || 'normal'
+      });
+    },
+    colorMatrix: function colorMatrix(type, values) {
+      if (type == 'matrix') values = normaliseMatrix(values);
+
+      this.attr({
+        type: type,
+        values: typeof values == 'undefined' ? null : values
+      });
+    },
+    convolveMatrix: function convolveMatrix(matrix) {
+      matrix = normaliseMatrix(matrix);
+
+      this.attr({
+        order: Math.sqrt(matrix.split(' ').length),
+        kernelMatrix: matrix
+      });
+    },
+    composite: function composite(in1, in2, operator) {
+      this.attr({
+        in: in1,
+        in2: in2,
+        operator: operator
+      });
+    },
+    flood: function flood(color, opacity) {
+      this.attr('flood-color', color);
+      if (opacity != null) this.attr('flood-opacity', opacity);
+    },
+    offset: function offset(x, y) {
+      this.attr({
+        dx: x,
+        dy: y
+      });
+    },
+    image: function image(src) {
+      this.attr('href', src, SVG.xlink);
+    },
+    displacementMap: function displacementMap(in1, in2, scale, xChannelSelector, yChannelSelector) {
+      this.attr({
+        in: in1,
+        in2: in2,
+        scale: scale,
+        xChannelSelector: xChannelSelector,
+        yChannelSelector: yChannelSelector
+      });
+    },
+    gaussianBlur: function gaussianBlur(x, y) {
+      if (x != null || y != null) this.attr('stdDeviation', listString(Array.prototype.slice.call(arguments)));else this.attr('stdDeviation', '0 0');
+    },
+    morphology: function morphology(operator, radius) {
+      this.attr({
+        operator: operator,
+        radius: radius
+      });
+    },
+    tile: function tile() {},
+    turbulence: function turbulence(baseFrequency, numOctaves, seed, stitchTiles, type) {
+      this.attr({
+        numOctaves: numOctaves,
+        seed: seed,
+        stitchTiles: stitchTiles,
+        baseFrequency: baseFrequency,
+        type: type
+      });
+    }
+
+    // Create all parent effects
+  };var parentEffects = {
+    merge: function merge() {
+      var children;
+
+      //test to see if we have a set
+      if (arguments[0] instanceof SVG.Set) {
+        var that = this;
+        arguments[0].each(function (i) {
+          if (this instanceof SVG.MergeNode) that.put(this);else if (this instanceof SVG.Effect || this instanceof SVG.ParentEffect) that.put(new SVG.MergeNode(this));
+        });
+      } else {
+        //if the first argument is an array use it
+        if (Array.isArray(arguments[0])) children = arguments[0];else children = arguments;
+
+        for (var i = 0; i < children.length; i++) {
+          if (children[i] instanceof SVG.MergeNode) {
+            this.put(children[i]);
+          } else this.put(new SVG.MergeNode(children[i]));
+        }
+      }
+    },
+    componentTransfer: function componentTransfer(compontents) {
+      /* create rgb set */
+      this.rgb = new SVG.Set()
+
+      /* create components */
+      ;['r', 'g', 'b', 'a'].forEach(function (c) {
+        /* create component */
+        this[c] = new SVG['Func' + c.toUpperCase()]('identity');
+
+        /* store component in set */
+        this.rgb.add(this[c]);
+
+        /* add component node */
+        this.node.appendChild(this[c].node);
+      }.bind(this)); //lost context in foreach
+
+      /* set components */
+      if (compontents) {
+        if (compontents.rgb) {
+          /* set bundled components */
+          ;['r', 'g', 'b'].forEach(function (c) {
+            this[c].attr(compontents.rgb);
+          }.bind(this));
+
+          delete compontents.rgb;
+        }
+
+        /* set individual components */
+        for (var c in compontents) {
+          this[c].attr(compontents[c]);
+        }
+      }
+    },
+    diffuseLighting: function diffuseLighting(surfaceScale, diffuseConstant, kernelUnitLength) {
+      this.attr({
+        surfaceScale: surfaceScale,
+        diffuseConstant: diffuseConstant,
+        kernelUnitLength: kernelUnitLength
+      });
+    },
+    specularLighting: function specularLighting(surfaceScale, diffuseConstant, specularExponent, kernelUnitLength) {
+      this.attr({
+        surfaceScale: surfaceScale,
+        diffuseConstant: diffuseConstant,
+        specularExponent: specularExponent,
+        kernelUnitLength: kernelUnitLength
+      });
+    }
+
+    // Create child effects like PointLight and MergeNode
+  };var childEffects = {
+    distantLight: function distantLight(azimuth, elevation) {
+      this.attr({
+        azimuth: azimuth,
+        elevation: elevation
+      });
+    },
+    pointLight: function pointLight(x, y, z) {
+      this.attr({
+        x: x,
+        y: y,
+        z: z
+      });
+    },
+    spotLight: function spotLight(x, y, z, pointsAtX, pointsAtY, pointsAtZ) {
+      this.attr({
+        x: x,
+        y: y,
+        z: z,
+        pointsAtX: pointsAtX,
+        pointsAtY: pointsAtY,
+        pointsAtZ: pointsAtZ
+      });
+    },
+    mergeNode: function mergeNode(in1) {
+      this.attr('in', in1);
+    }
+
+    // Create compontent functions
+  };['r', 'g', 'b', 'a'].forEach(function (c) {
+    /* create class */
+    childEffects['Func' + c.toUpperCase()] = function (type) {
+      this.attr('type', type);
+
+      // take diffent arguments based on the type
+      switch (type) {
+        case 'table':
+          this.attr('tableValues', arguments[1]);
+          break;
+        case 'linear':
+          this.attr('slope', arguments[1]);
+          this.attr('intercept', arguments[2]);
+          break;
+        case 'gamma':
+          this.attr('amplitude', arguments[1]);
+          this.attr('exponent', arguments[2]);
+          this.attr('offset', arguments[2]);
+          break;
+      }
+    };
+  });
+
+  //create effects
+  foreach(effects, function (effect, i) {
+
+    /* capitalize name */
+    var name = i.charAt(0).toUpperCase() + i.slice(1);
+    var proto = {};
+
+    /* create class */
+    SVG[name + 'Effect'] = SVG.invent({
+      create: function create() {
+        //call super
+        this.constructor.call(this, SVG.create('fe' + name));
+
+        //call constructor for this effect
+        effect.apply(this, arguments);
+
+        //set the result
+        this.result(this.attr('id') + 'Out');
+      },
+      inherit: SVG.Effect,
+      extend: proto
+    });
+  });
+
+  //create parent effects
+  foreach(parentEffects, function (effect, i) {
+
+    /* capitalize name */
+    var name = i.charAt(0).toUpperCase() + i.slice(1);
+    var proto = {};
+
+    /* create class */
+    SVG[name + 'Effect'] = SVG.invent({
+      create: function create() {
+        //call super
+        this.constructor.call(this, SVG.create('fe' + name));
+
+        //call constructor for this effect
+        effect.apply(this, arguments);
+
+        //set the result
+        this.result(this.attr('id') + 'Out');
+      },
+      inherit: SVG.ParentEffect,
+      extend: proto
+    });
+  });
+
+  //create child effects
+  foreach(childEffects, function (effect, i) {
+
+    /* capitalize name */
+    var name = i.charAt(0).toUpperCase() + i.slice(1);
+    var proto = {};
+
+    /* create class */
+    SVG[name] = SVG.invent({
+      create: function create() {
+        //call super
+        this.constructor.call(this, SVG.create('fe' + name));
+
+        //call constructor for this effect
+        effect.apply(this, arguments);
+      },
+      inherit: SVG.ChildEffect,
+      extend: proto
+    });
+  });
+
+  // Effect-specific extensions
+  SVG.extend(SVG.MergeEffect, {
+    in: function _in(effect) {
+      if (effect instanceof SVG.MergeNode) this.add(effect, 0);else this.add(new SVG.MergeNode(effect), 0);
+
+      return this;
+    }
+  });
+  SVG.extend(SVG.CompositeEffect, SVG.BlendEffect, SVG.DisplacementMapEffect, {
+    in2: function in2(effect) {
+      return effect == null ? this.parent() && this.parent().select('[result="' + this.attr('in2') + '"]').get(0) || this.attr('in2') : this.attr('in2', effect);
+    }
+  });
+
+  // Presets
+  SVG.filter = {
+    sepiatone: [.343, .669, .119, 0, 0, .249, .626, .130, 0, 0, .172, .334, .111, 0, 0, .000, .000, .000, 1, 0]
+
+    // Helpers
+  };function normaliseMatrix(matrix) {
+    /* convert possible array value to string */
+    if (Array.isArray(matrix)) matrix = new SVG.Array(matrix);
+
+    /* ensure there are no leading, tailing or double spaces */
+    return matrix.toString().replace(/^\s+/, '').replace(/\s+$/, '').replace(/\s+/g, ' ');
+  }
+
+  function listString(list) {
+    if (!Array.isArray(list)) return list;
+
+    for (var i = 0, l = list.length, s = []; i < l; i++) {
+      s.push(list[i]);
+    }return s.join(' ');
+  }
+
+  function foreach() {
+    //loops through mutiple objects
+    var fn = function fn() {};
+    if (typeof arguments[arguments.length - 1] == 'function') {
+      fn = arguments[arguments.length - 1];
+      Array.prototype.splice.call(arguments, arguments.length - 1, 1);
+    }
+    for (var k in arguments) {
+      for (var i in arguments[k]) {
+        fn(arguments[k][i], i, arguments[k]);
+      }
+    }
+  }
+}).call(undefined);
+
+/***/ }),
+/* 62 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/*!
+* svg.pathmorphing.js - Enables pathmorphing / path animation in svg.js
+* @version 0.1.3
+*
+*
+* @copyright (c) 2018 Ulrich-Matthias Schäfer
+* @license MIT
+*/;
+;(function () {
+  "use strict";
+
+  SVG.extend(SVG.PathArray, {
+    morph: function morph(array) {
+
+      var startArr = this.value,
+          destArr = this.parse(array);
+
+      var startOffsetM = 0,
+          destOffsetM = 0;
+
+      var startOffsetNextM = false,
+          destOffsetNextM = false;
+
+      while (true) {
+        // stop if there is no M anymore
+        if (startOffsetM === false && destOffsetM === false) break;
+
+        // find the next M in path array
+        startOffsetNextM = findNextM(startArr, startOffsetM === false ? false : startOffsetM + 1);
+        destOffsetNextM = findNextM(destArr, destOffsetM === false ? false : destOffsetM + 1);
+
+        // We have to add one M to the startArray
+        if (startOffsetM === false) {
+          var bbox = new SVG.PathArray(result.start).bbox();
+
+          // when the last block had no bounding box we simply take the first M we got
+          if (bbox.height == 0 || bbox.width == 0) {
+            startOffsetM = startArr.push(startArr[0]) - 1;
+          } else {
+            // we take the middle of the bbox instead when we got one
+            startOffsetM = startArr.push(['M', bbox.x + bbox.width / 2, bbox.y + bbox.height / 2]) - 1;
+          }
+        }
+
+        // We have to add one M to the destArray
+        if (destOffsetM === false) {
+          var bbox = new SVG.PathArray(result.dest).bbox();
+
+          if (bbox.height == 0 || bbox.width == 0) {
+            destOffsetM = destArr.push(destArr[0]) - 1;
+          } else {
+            destOffsetM = destArr.push(['M', bbox.x + bbox.width / 2, bbox.y + bbox.height / 2]) - 1;
+          }
+        }
+
+        // handle block from M to next M
+        var result = handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM);
+
+        // update the arrays to their new values
+        startArr = startArr.slice(0, startOffsetM).concat(result.start, startOffsetNextM === false ? [] : startArr.slice(startOffsetNextM));
+        destArr = destArr.slice(0, destOffsetM).concat(result.dest, destOffsetNextM === false ? [] : destArr.slice(destOffsetNextM));
+
+        // update offsets
+        startOffsetM = startOffsetNextM === false ? false : startOffsetM + result.start.length;
+        destOffsetM = destOffsetNextM === false ? false : destOffsetM + result.dest.length;
+      }
+
+      // copy back arrays
+      this.value = startArr;
+      this.destination = new SVG.PathArray();
+      this.destination.value = destArr;
+
+      return this;
+    }
+  });
+
+  // sorry for the long declaration
+  // slices out one block (from M to M) and syncronize it so the types and length match
+  function handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM, undefined) {
+
+    // slice out the block we need
+    var startArrTemp = startArr.slice(startOffsetM, startOffsetNextM || undefined),
+        destArrTemp = destArr.slice(destOffsetM, destOffsetNextM || undefined);
+
+    var i = 0,
+        posStart = { pos: [0, 0], start: [0, 0] },
+        posDest = { pos: [0, 0], start: [0, 0] };
+
+    do {
+
+      // convert shorthand types to long form
+      startArrTemp[i] = simplyfy.call(posStart, startArrTemp[i]);
+      destArrTemp[i] = simplyfy.call(posDest, destArrTemp[i]);
+
+      // check if both shape types match
+      // 2 elliptical arc curve commands ('A'), are considered different if the
+      // flags (large-arc-flag, sweep-flag) don't match
+      if (startArrTemp[i][0] != destArrTemp[i][0] || startArrTemp[i][0] == 'M' || startArrTemp[i][0] == 'A' && (startArrTemp[i][4] != destArrTemp[i][4] || startArrTemp[i][5] != destArrTemp[i][5])) {
+
+        // if not, convert shapes to beziere
+        Array.prototype.splice.apply(startArrTemp, [i, 1].concat(toBeziere.call(posStart, startArrTemp[i])));
+        Array.prototype.splice.apply(destArrTemp, [i, 1].concat(toBeziere.call(posDest, destArrTemp[i])));
+      } else {
+
+        // only update positions otherwise
+        startArrTemp[i] = setPosAndReflection.call(posStart, startArrTemp[i]);
+        destArrTemp[i] = setPosAndReflection.call(posDest, destArrTemp[i]);
+      }
+
+      // we are at the end at both arrays. stop here
+      if (++i == startArrTemp.length && i == destArrTemp.length) break;
+
+      // destArray is longer. Add one element
+      if (i == startArrTemp.length) {
+        startArrTemp.push(['C', posStart.pos[0], posStart.pos[1], posStart.pos[0], posStart.pos[1], posStart.pos[0], posStart.pos[1]]);
+      }
+
+      // startArr is longer. Add one element
+      if (i == destArrTemp.length) {
+        destArrTemp.push(['C', posDest.pos[0], posDest.pos[1], posDest.pos[0], posDest.pos[1], posDest.pos[0], posDest.pos[1]]);
+      }
+    } while (true);
+
+    // return the updated block
+    return { start: startArrTemp, dest: destArrTemp };
+  }
+
+  // converts shorthand types to long form
+  function simplyfy(val) {
+
+    switch (val[0]) {
+      case 'z': // shorthand line to start
+      case 'Z':
+        val[0] = 'L';
+        val[1] = this.start[0];
+        val[2] = this.start[1];
+        break;
+      case 'H':
+        // shorthand horizontal line
+        val[0] = 'L';
+        val[2] = this.pos[1];
+        break;
+      case 'V':
+        // shorthand vertical line
+        val[0] = 'L';
+        val[2] = val[1];
+        val[1] = this.pos[0];
+        break;
+      case 'T':
+        // shorthand quadratic beziere
+        val[0] = 'Q';
+        val[3] = val[1];
+        val[4] = val[2];
+        val[1] = this.reflection[1];
+        val[2] = this.reflection[0];
+        break;
+      case 'S':
+        // shorthand cubic beziere
+        val[0] = 'C';
+        val[6] = val[4];
+        val[5] = val[3];
+        val[4] = val[2];
+        val[3] = val[1];
+        val[2] = this.reflection[1];
+        val[1] = this.reflection[0];
+        break;
+    }
+
+    return val;
+  }
+
+  // updates reflection point and current position
+  function setPosAndReflection(val) {
+
+    var len = val.length;
+
+    this.pos = [val[len - 2], val[len - 1]];
+
+    if ('SCQT'.indexOf(val[0]) != -1) this.reflection = [2 * this.pos[0] - val[len - 4], 2 * this.pos[1] - val[len - 3]];
+
+    return val;
+  }
+
+  // converts all types to cubic beziere
+  function toBeziere(val) {
+    var retVal = [val];
+
+    switch (val[0]) {
+      case 'M':
+        // special handling for M
+        this.pos = this.start = [val[1], val[2]];
+        return retVal;
+      case 'L':
+        val[5] = val[3] = val[1];
+        val[6] = val[4] = val[2];
+        val[1] = this.pos[0];
+        val[2] = this.pos[1];
+        break;
+      case 'Q':
+        val[6] = val[4];
+        val[5] = val[3];
+        val[4] = val[4] * 1 / 3 + val[2] * 2 / 3;
+        val[3] = val[3] * 1 / 3 + val[1] * 2 / 3;
+        val[2] = this.pos[1] * 1 / 3 + val[2] * 2 / 3;
+        val[1] = this.pos[0] * 1 / 3 + val[1] * 2 / 3;
+        break;
+      case 'A':
+        retVal = arcToBeziere(this.pos, val);
+        val = retVal[0];
+        break;
+    }
+
+    val[0] = 'C';
+    this.pos = [val[5], val[6]];
+    this.reflection = [2 * val[5] - val[3], 2 * val[6] - val[4]];
+
+    return retVal;
+  }
+
+  // finds the next position of type M
+  function findNextM(arr, offset) {
+
+    if (offset === false) return false;
+
+    for (var i = offset, len = arr.length; i < len; ++i) {
+
+      if (arr[i][0] == 'M') return i;
+    }
+
+    return false;
+  }
+
+  // Convert an arc segment into equivalent cubic Bezier curves
+  // Depending on the arc, up to 4 curves might be used to represent it since a
+  // curve gives a good approximation for only a quarter of an ellipse
+  // The curves are returned as an array of SVG curve commands:
+  // [ ['C', x1, y1, x2, y2, x, y] ... ]
+  function arcToBeziere(pos, val) {
+    // Parameters extraction, handle out-of-range parameters as specified in the SVG spec
+    // See: https://www.w3.org/TR/SVG11/implnote.html#ArcOutOfRangeParameters
+    var rx = Math.abs(val[1]),
+        ry = Math.abs(val[2]),
+        xAxisRotation = val[3] % 360,
+        largeArcFlag = val[4],
+        sweepFlag = val[5],
+        x = val[6],
+        y = val[7],
+        A = new SVG.Point(pos),
+        B = new SVG.Point(x, y),
+        primedCoord,
+        lambda,
+        mat,
+        k,
+        c,
+        cSquare,
+        t,
+        O,
+        OA,
+        OB,
+        tetaStart,
+        tetaEnd,
+        deltaTeta,
+        nbSectors,
+        f,
+        arcSegPoints,
+        angle,
+        sinAngle,
+        cosAngle,
+        pt,
+        i,
+        il,
+        retVal = [],
+        x1,
+        y1,
+        x2,
+        y2;
+
+    // Ensure radii are non-zero
+    if (rx === 0 || ry === 0 || A.x === B.x && A.y === B.y) {
+      // treat this arc as a straight line segment
+      return [['C', A.x, A.y, B.x, B.y, B.x, B.y]];
+    }
+
+    // Ensure radii are large enough using the algorithm provided in the SVG spec
+    // See: https://www.w3.org/TR/SVG11/implnote.html#ArcCorrectionOutOfRangeRadii
+    primedCoord = new SVG.Point((A.x - B.x) / 2, (A.y - B.y) / 2).transform(new SVG.Matrix().rotate(xAxisRotation));
+    lambda = primedCoord.x * primedCoord.x / (rx * rx) + primedCoord.y * primedCoord.y / (ry * ry);
+    if (lambda > 1) {
+      lambda = Math.sqrt(lambda);
+      rx = lambda * rx;
+      ry = lambda * ry;
+    }
+
+    // To simplify calculations, we make the arc part of a unit circle (rayon is 1) instead of an ellipse
+    mat = new SVG.Matrix().rotate(xAxisRotation).scale(1 / rx, 1 / ry).rotate(-xAxisRotation);
+    A = A.transform(mat);
+    B = B.transform(mat);
+
+    // Calculate the horizontal and vertical distance between the initial and final point of the arc
+    k = [B.x - A.x, B.y - A.y];
+
+    // Find the length of the chord formed by A and B
+    cSquare = k[0] * k[0] + k[1] * k[1];
+    c = Math.sqrt(cSquare);
+
+    // Calculate the ratios of the horizontal and vertical distance on the length of the chord
+    k[0] /= c;
+    k[1] /= c;
+
+    // Calculate the distance between the circle center and the chord midpoint
+    // using this formula: t = sqrt(r^2 - c^2 / 4)
+    // where t is the distance between the cirle center and the chord midpoint,
+    //       r is the rayon of the circle and c is the chord length
+    // From: http://www.ajdesigner.com/phpcircle/circle_segment_chord_t.php
+    // Because of the imprecision of floating point numbers, cSquare might end
+    // up being slightly above 4 which would result in a negative radicand
+    // To prevent that, a test is made before computing the square root
+    t = cSquare < 4 ? Math.sqrt(1 - cSquare / 4) : 0;
+
+    // For most situations, there are actually two different ellipses that
+    // satisfy the constraints imposed by the points A and B, the radii rx and ry,
+    // and the xAxisRotation
+    // When the flags largeArcFlag and sweepFlag are equal, it means that the
+    // second ellipse is used as a solution
+    // See: https://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands
+    if (largeArcFlag === sweepFlag) {
+      t *= -1;
+    }
+
+    // Calculate the coordinates of the center of the circle from the midpoint of the chord
+    // This is done by multiplying the ratios calculated previously by the distance between
+    // the circle center and the chord midpoint and using these values to go from the midpoint
+    // to the center of the circle
+    // The negative of the vertical distance ratio is used to modify the x coordinate while
+    // the horizontal distance ratio is used to modify the y coordinate
+    // That is because the center of the circle is perpendicular to the chord and perpendicular
+    // lines are negative reciprocals
+    O = new SVG.Point((B.x + A.x) / 2 + t * -k[1], (B.y + A.y) / 2 + t * k[0]);
+    // Move the center of the circle at the origin
+    OA = new SVG.Point(A.x - O.x, A.y - O.y);
+    OB = new SVG.Point(B.x - O.x, B.y - O.y);
+
+    // Calculate the start and end angle
+    tetaStart = Math.acos(OA.x / Math.sqrt(OA.x * OA.x + OA.y * OA.y));
+    if (OA.y < 0) {
+      tetaStart *= -1;
+    }
+    tetaEnd = Math.acos(OB.x / Math.sqrt(OB.x * OB.x + OB.y * OB.y));
+    if (OB.y < 0) {
+      tetaEnd *= -1;
+    }
+
+    // If sweep-flag is '1', then the arc will be drawn in a "positive-angle" direction,
+    // make sure that the end angle is above the start angle
+    if (sweepFlag && tetaStart > tetaEnd) {
+      tetaEnd += 2 * Math.PI;
+    }
+    // If sweep-flag is '0', then the arc will be drawn in a "negative-angle" direction,
+    // make sure that the end angle is below the start angle
+    if (!sweepFlag && tetaStart < tetaEnd) {
+      tetaEnd -= 2 * Math.PI;
+    }
+
+    // Find the number of Bezier curves that are required to represent the arc
+    // A cubic Bezier curve gives a good enough approximation when representing at most a quarter of a circle
+    nbSectors = Math.ceil(Math.abs(tetaStart - tetaEnd) * 2 / Math.PI);
+
+    // Calculate the coordinates of the points of all the Bezier curves required to represent the arc
+    // For an in-depth explanation of this part see: http://pomax.github.io/bezierinfo/#circles_cubic
+    arcSegPoints = [];
+    angle = tetaStart;
+    deltaTeta = (tetaEnd - tetaStart) / nbSectors;
+    f = 4 * Math.tan(deltaTeta / 4) / 3;
+    for (i = 0; i <= nbSectors; i++) {
+      // The <= is because a Bezier curve have a start and a endpoint
+      cosAngle = Math.cos(angle);
+      sinAngle = Math.sin(angle);
+
+      pt = new SVG.Point(O.x + cosAngle, O.y + sinAngle);
+      arcSegPoints[i] = [new SVG.Point(pt.x + f * sinAngle, pt.y - f * cosAngle), pt, new SVG.Point(pt.x - f * sinAngle, pt.y + f * cosAngle)];
+
+      angle += deltaTeta;
+    }
+
+    // Remove the first control point of the first segment point and remove the second control point of the last segment point
+    // These two control points are not used in the approximation of the arc, that is why they are removed
+    arcSegPoints[0][0] = arcSegPoints[0][1].clone();
+    arcSegPoints[arcSegPoints.length - 1][2] = arcSegPoints[arcSegPoints.length - 1][1].clone();
+
+    // Revert the transformation that was applied to make the arc part of a unit circle instead of an ellipse
+    mat = new SVG.Matrix().rotate(xAxisRotation).scale(rx, ry).rotate(-xAxisRotation);
+    for (i = 0, il = arcSegPoints.length; i < il; i++) {
+      arcSegPoints[i][0] = arcSegPoints[i][0].transform(mat);
+      arcSegPoints[i][1] = arcSegPoints[i][1].transform(mat);
+      arcSegPoints[i][2] = arcSegPoints[i][2].transform(mat);
+    }
+
+    // Convert the segments points to SVG curve commands
+    for (i = 1, il = arcSegPoints.length; i < il; i++) {
+      pt = arcSegPoints[i - 1][2];
+      x1 = pt.x;
+      y1 = pt.y;
+
+      pt = arcSegPoints[i][0];
+      x2 = pt.x;
+      y2 = pt.y;
+
+      pt = arcSegPoints[i][1];
+      x = pt.x;
+      y = pt.y;
+
+      retVal.push(['C', x1, y1, x2, y2, x, y]);
+    }
+
+    return retVal;
+  }
+})();
+
+/***/ }),
+/* 63 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/*!
+* svg.resize.js - An extension for svg.js which allows to resize elements which are selected
+* @version 1.4.2
+* https://github.com/svgdotjs/svg.resize.js
+*
+* @copyright [object Object]
+* @license MIT
+*/;
+;(function () {
+    "use strict";
+
+    ;(function () {
+
+        function ResizeHandler(el) {
+
+            el.remember('_resizeHandler', this);
+
+            this.el = el;
+            this.parameters = {};
+            this.lastUpdateCall = null;
+            this.p = el.doc().node.createSVGPoint();
+        }
+
+        ResizeHandler.prototype.transformPoint = function (x, y, m) {
+
+            this.p.x = x - (this.offset.x - window.pageXOffset);
+            this.p.y = y - (this.offset.y - window.pageYOffset);
+
+            return this.p.matrixTransform(m || this.m);
+        };
+
+        ResizeHandler.prototype._extractPosition = function (event) {
+            // Extract a position from a mouse/touch event.
+            // Returns { x: .., y: .. }
+            return {
+                x: event.clientX != null ? event.clientX : event.touches[0].clientX,
+                y: event.clientY != null ? event.clientY : event.touches[0].clientY
+            };
+        };
+
+        ResizeHandler.prototype.init = function (options) {
+
+            var _this = this;
+
+            this.stop();
+
+            if (options === 'stop') {
+                return;
+            }
+
+            this.options = {};
+
+            // Merge options and defaults
+            for (var i in this.el.resize.defaults) {
+                this.options[i] = this.el.resize.defaults[i];
+                if (typeof options[i] !== 'undefined') {
+                    this.options[i] = options[i];
+                }
+            }
+
+            // We listen to all these events which are specifying different edges
+            this.el.on('lt.resize', function (e) {
+                _this.resize(e || window.event);
+            }); // Left-Top
+            this.el.on('rt.resize', function (e) {
+                _this.resize(e || window.event);
+            }); // Right-Top
+            this.el.on('rb.resize', function (e) {
+                _this.resize(e || window.event);
+            }); // Right-Bottom
+            this.el.on('lb.resize', function (e) {
+                _this.resize(e || window.event);
+            }); // Left-Bottom
+
+            this.el.on('t.resize', function (e) {
+                _this.resize(e || window.event);
+            }); // Top
+            this.el.on('r.resize', function (e) {
+                _this.resize(e || window.event);
+            }); // Right
+            this.el.on('b.resize', function (e) {
+                _this.resize(e || window.event);
+            }); // Bottom
+            this.el.on('l.resize', function (e) {
+                _this.resize(e || window.event);
+            }); // Left
+
+            this.el.on('rot.resize', function (e) {
+                _this.resize(e || window.event);
+            }); // Rotation
+
+            this.el.on('point.resize', function (e) {
+                _this.resize(e || window.event);
+            }); // Point-Moving
+
+            // This call ensures, that the plugin reacts to a change of snapToGrid immediately
+            this.update();
+        };
+
+        ResizeHandler.prototype.stop = function () {
+            this.el.off('lt.resize');
+            this.el.off('rt.resize');
+            this.el.off('rb.resize');
+            this.el.off('lb.resize');
+
+            this.el.off('t.resize');
+            this.el.off('r.resize');
+            this.el.off('b.resize');
+            this.el.off('l.resize');
+
+            this.el.off('rot.resize');
+
+            this.el.off('point.resize');
+
+            return this;
+        };
+
+        ResizeHandler.prototype.resize = function (event) {
+
+            var _this = this;
+
+            this.m = this.el.node.getScreenCTM().inverse();
+            this.offset = { x: window.pageXOffset, y: window.pageYOffset };
+
+            var txPt = this._extractPosition(event.detail.event);
+            this.parameters = {
+                type: this.el.type, // the type of element
+                p: this.transformPoint(txPt.x, txPt.y),
+                x: event.detail.x, // x-position of the mouse when resizing started
+                y: event.detail.y, // y-position of the mouse when resizing started
+                box: this.el.bbox(), // The bounding-box of the element
+                rotation: this.el.transform().rotation // The current rotation of the element
+            };
+
+            // Add font-size parameter if the element type is text
+            if (this.el.type === "text") {
+                this.parameters.fontSize = this.el.attr()["font-size"];
+            }
+
+            // the i-param in the event holds the index of the point which is moved, when using `deepSelect`
+            if (event.detail.i !== undefined) {
+
+                // get the point array
+                var array = this.el.array().valueOf();
+
+                // Save the index and the point which is moved
+                this.parameters.i = event.detail.i;
+                this.parameters.pointCoords = [array[event.detail.i][0], array[event.detail.i][1]];
+            }
+
+            // Lets check which edge of the bounding-box was clicked and resize the this.el according to this
+            switch (event.type) {
+
+                // Left-Top-Edge
+                case 'lt':
+                    // We build a calculating function for every case which gives us the new position of the this.el
+                    this.calc = function (diffX, diffY) {
+                        // The procedure is always the same
+                        // First we snap the edge to the given grid (snapping to 1px grid is normal resizing)
+                        var snap = this.snapToGrid(diffX, diffY);
+
+                        // Now we check if the new height and width still valid (> 0)
+                        if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height - snap[1] > 0) {
+                            // ...if valid, we resize the this.el (which can include moving because the coord-system starts at the left-top and this edge is moving sometimes when resized)
+
+                            /*
+                             * but first check if the element is text box, so we can change the font size instead of
+                             * the width and height
+                             */
+
+                            if (this.parameters.type === "text") {
+                                this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y);
+                                this.el.attr("font-size", this.parameters.fontSize - snap[0]);
+                                return;
+                            }
+
+                            snap = this.checkAspectRatio(snap);
+
+                            this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y + snap[1]).size(this.parameters.box.width - snap[0], this.parameters.box.height - snap[1]);
+                        }
+                    };
+                    break;
+
+                // Right-Top
+                case 'rt':
+                    // s.a.
+                    this.calc = function (diffX, diffY) {
+                        var snap = this.snapToGrid(diffX, diffY, 1 << 1);
+                        if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height - snap[1] > 0) {
+                            if (this.parameters.type === "text") {
+                                this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y);
+                                this.el.attr("font-size", this.parameters.fontSize + snap[0]);
+                                return;
+                            }
+
+                            snap = this.checkAspectRatio(snap);
+
+                            this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).size(this.parameters.box.width + snap[0], this.parameters.box.height - snap[1]);
+                        }
+                    };
+                    break;
+
+                // Right-Bottom
+                case 'rb':
+                    // s.a.
+                    this.calc = function (diffX, diffY) {
+                        var snap = this.snapToGrid(diffX, diffY, 0);
+                        if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height + snap[1] > 0) {
+                            if (this.parameters.type === "text") {
+                                this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y);
+                                this.el.attr("font-size", this.parameters.fontSize + snap[0]);
+                                return;
+                            }
+
+                            snap = this.checkAspectRatio(snap);
+
+                            this.el.move(this.parameters.box.x, this.parameters.box.y).size(this.parameters.box.width + snap[0], this.parameters.box.height + snap[1]);
+                        }
+                    };
+                    break;
+
+                // Left-Bottom
+                case 'lb':
+                    // s.a.
+                    this.calc = function (diffX, diffY) {
+                        var snap = this.snapToGrid(diffX, diffY, 1);
+                        if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height + snap[1] > 0) {
+                            if (this.parameters.type === "text") {
+                                this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y);
+                                this.el.attr("font-size", this.parameters.fontSize - snap[0]);
+                                return;
+                            }
+
+                            snap = this.checkAspectRatio(snap);
+
+                            this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).size(this.parameters.box.width - snap[0], this.parameters.box.height + snap[1]);
+                        }
+                    };
+                    break;
+
+                // Top
+                case 't':
+                    // s.a.
+                    this.calc = function (diffX, diffY) {
+                        var snap = this.snapToGrid(diffX, diffY, 1 << 1);
+                        if (this.parameters.box.height - snap[1] > 0) {
+                            // Disable the font-resizing if it is not from the corner of bounding-box
+                            if (this.parameters.type === "text") {
+                                return;
+                            }
+
+                            this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).height(this.parameters.box.height - snap[1]);
+                        }
+                    };
+                    break;
+
+                // Right
+                case 'r':
+                    // s.a.
+                    this.calc = function (diffX, diffY) {
+                        var snap = this.snapToGrid(diffX, diffY, 0);
+                        if (this.parameters.box.width + snap[0] > 0) {
+                            if (this.parameters.type === "text") {
+                                return;
+                            }
+
+                            this.el.move(this.parameters.box.x, this.parameters.box.y).width(this.parameters.box.width + snap[0]);
+                        }
+                    };
+                    break;
+
+                // Bottom
+                case 'b':
+                    // s.a.
+                    this.calc = function (diffX, diffY) {
+                        var snap = this.snapToGrid(diffX, diffY, 0);
+                        if (this.parameters.box.height + snap[1] > 0) {
+                            if (this.parameters.type === "text") {
+                                return;
+                            }
+
+                            this.el.move(this.parameters.box.x, this.parameters.box.y).height(this.parameters.box.height + snap[1]);
+                        }
+                    };
+                    break;
+
+                // Left
+                case 'l':
+                    // s.a.
+                    this.calc = function (diffX, diffY) {
+                        var snap = this.snapToGrid(diffX, diffY, 1);
+                        if (this.parameters.box.width - snap[0] > 0) {
+                            if (this.parameters.type === "text") {
+                                return;
+                            }
+
+                            this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).width(this.parameters.box.width - snap[0]);
+                        }
+                    };
+                    break;
+
+                // Rotation
+                case 'rot':
+                    // s.a.
+                    this.calc = function (diffX, diffY) {
+
+                        // yes this is kinda stupid but we need the mouse coords back...
+                        var current = { x: diffX + this.parameters.p.x, y: diffY + this.parameters.p.y };
+
+                        // start minus middle
+                        var sAngle = Math.atan2(this.parameters.p.y - this.parameters.box.y - this.parameters.box.height / 2, this.parameters.p.x - this.parameters.box.x - this.parameters.box.width / 2);
+
+                        // end minus middle
+                        var pAngle = Math.atan2(current.y - this.parameters.box.y - this.parameters.box.height / 2, current.x - this.parameters.box.x - this.parameters.box.width / 2);
+
+                        var angle = (pAngle - sAngle) * 180 / Math.PI;
+
+                        // We have to move the element to the center of the box first and change the rotation afterwards
+                        // because rotation always works around a rotation-center, which is changed when moving the element
+                        // We also set the new rotation center to the center of the box.
+                        this.el.center(this.parameters.box.cx, this.parameters.box.cy).rotate(this.parameters.rotation + angle - angle % this.options.snapToAngle, this.parameters.box.cx, this.parameters.box.cy);
+                    };
+                    break;
+
+                // Moving one single Point (needed when an element is deepSelected which means you can move every single point of the object)
+                case 'point':
+                    this.calc = function (diffX, diffY) {
+
+                        // Snapping the point to the grid
+                        var snap = this.snapToGrid(diffX, diffY, this.parameters.pointCoords[0], this.parameters.pointCoords[1]);
+
+                        // Get the point array
+                        var array = this.el.array().valueOf();
+
+                        // Changing the moved point in the array
+                        array[this.parameters.i][0] = this.parameters.pointCoords[0] + snap[0];
+                        array[this.parameters.i][1] = this.parameters.pointCoords[1] + snap[1];
+
+                        // And plot the new this.el
+                        this.el.plot(array);
+                    };
+            }
+
+            this.el.fire('resizestart', { dx: this.parameters.x, dy: this.parameters.y, event: event });
+            // When resizing started, we have to register events for...
+            // Touches.
+            SVG.on(window, 'touchmove.resize', function (e) {
+                _this.update(e || window.event);
+            });
+            SVG.on(window, 'touchend.resize', function () {
+                _this.done();
+            });
+            // Mouse.
+            SVG.on(window, 'mousemove.resize', function (e) {
+                _this.update(e || window.event);
+            });
+            SVG.on(window, 'mouseup.resize', function () {
+                _this.done();
+            });
+        };
+
+        // The update-function redraws the element every time the mouse is moving
+        ResizeHandler.prototype.update = function (event) {
+
+            if (!event) {
+                if (this.lastUpdateCall) {
+                    this.calc(this.lastUpdateCall[0], this.lastUpdateCall[1]);
+                }
+                return;
+            }
+
+            // Calculate the difference between the mouseposition at start and now
+            var txPt = this._extractPosition(event);
+            var p = this.transformPoint(txPt.x, txPt.y);
+
+            var diffX = p.x - this.parameters.p.x,
+                diffY = p.y - this.parameters.p.y;
+
+            this.lastUpdateCall = [diffX, diffY];
+
+            // Calculate the new position and height / width of the element
+            this.calc(diffX, diffY);
+
+            // Emit an event to say we have changed.
+            this.el.fire('resizing', { dx: diffX, dy: diffY, event: event });
+        };
+
+        // Is called on mouseup.
+        // Removes the update-function from the mousemove event
+        ResizeHandler.prototype.done = function () {
+            this.lastUpdateCall = null;
+            SVG.off(window, 'mousemove.resize');
+            SVG.off(window, 'mouseup.resize');
+            SVG.off(window, 'touchmove.resize');
+            SVG.off(window, 'touchend.resize');
+            this.el.fire('resizedone');
+        };
+
+        // The flag is used to determine whether the resizing is used with a left-Point (first bit) and top-point (second bit)
+        // In this cases the temp-values are calculated differently
+        ResizeHandler.prototype.snapToGrid = function (diffX, diffY, flag, pointCoordsY) {
+
+            var temp;
+
+            // If `pointCoordsY` is given, a single Point has to be snapped (deepSelect). That's why we need a different temp-value
+            if (typeof pointCoordsY !== 'undefined') {
+                // Note that flag = pointCoordsX in this case
+                temp = [(flag + diffX) % this.options.snapToGrid, (pointCoordsY + diffY) % this.options.snapToGrid];
+            } else {
+                // We check if the flag is set and if not we set a default-value (both bits set - which means upper-left-edge)
+                flag = flag == null ? 1 | 1 << 1 : flag;
+                temp = [(this.parameters.box.x + diffX + (flag & 1 ? 0 : this.parameters.box.width)) % this.options.snapToGrid, (this.parameters.box.y + diffY + (flag & 1 << 1 ? 0 : this.parameters.box.height)) % this.options.snapToGrid];
+            }
+
+            diffX -= Math.abs(temp[0]) < this.options.snapToGrid / 2 ? temp[0] : temp[0] - (diffX < 0 ? -this.options.snapToGrid : this.options.snapToGrid);
+            diffY -= Math.abs(temp[1]) < this.options.snapToGrid / 2 ? temp[1] : temp[1] - (diffY < 0 ? -this.options.snapToGrid : this.options.snapToGrid);
+
+            return this.constraintToBox(diffX, diffY, flag, pointCoordsY);
+        };
+
+        // keep element within constrained box
+        ResizeHandler.prototype.constraintToBox = function (diffX, diffY, flag, pointCoordsY) {
+            //return [diffX, diffY]
+            var c = this.options.constraint || {};
+            var orgX, orgY;
+
+            if (typeof pointCoordsY !== 'undefined') {
+                orgX = flag;
+                orgY = pointCoordsY;
+            } else {
+                orgX = this.parameters.box.x + (flag & 1 ? 0 : this.parameters.box.width);
+                orgY = this.parameters.box.y + (flag & 1 << 1 ? 0 : this.parameters.box.height);
+            }
+
+            if (typeof c.minX !== 'undefined' && orgX + diffX < c.minX) {
+                diffX = c.minX - orgX;
+            }
+
+            if (typeof c.maxX !== 'undefined' && orgX + diffX > c.maxX) {
+                diffX = c.maxX - orgX;
+            }
+
+            if (typeof c.minY !== 'undefined' && orgY + diffY < c.minY) {
+                diffY = c.minY - orgY;
+            }
+
+            if (typeof c.maxY !== 'undefined' && orgY + diffY > c.maxY) {
+                diffY = c.maxY - orgY;
+            }
+
+            return [diffX, diffY];
+        };
+
+        ResizeHandler.prototype.checkAspectRatio = function (snap) {
+            if (!this.options.saveAspectRatio) {
+                return snap;
+            }
+
+            var updatedSnap = snap.slice();
+            var aspectRatio = this.parameters.box.width / this.parameters.box.height;
+            var newW = this.parameters.box.width + snap[0];
+            var newH = this.parameters.box.height - snap[1];
+            var newAspectRatio = newW / newH;
+
+            if (newAspectRatio < aspectRatio) {
+                // Height is too big. Adapt it
+                updatedSnap[1] = newW / aspectRatio - this.parameters.box.height;
+            } else if (newAspectRatio > aspectRatio) {
+                // Width is too big. Adapt it
+                updatedSnap[0] = this.parameters.box.width - newH * aspectRatio;
+            }
+
+            return updatedSnap;
+        };
+
+        SVG.extend(SVG.Element, {
+            // Resize element with mouse
+            resize: function resize(options) {
+
+                (this.remember('_resizeHandler') || new ResizeHandler(this)).init(options || {});
+
+                return this;
+            }
+
+        });
+
+        SVG.Element.prototype.resize.defaults = {
+            snapToAngle: 0.1, // Specifies the speed the rotation is happening when moving the mouse
+            snapToGrid: 1, // Snaps to a grid of `snapToGrid` Pixels
+            constraint: {}, // keep element within constrained box
+            saveAspectRatio: false // Save aspect ratio when resizing using lt, rt, rb or lb points
+        };
+    }).call(this);
+})();
+
+/***/ }),
+/* 64 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/*!
+* svg.select.js - An extension of svg.js which allows to select elements with mouse
+* @version 2.1.2
+* https://github.com/svgdotjs/svg.select.js
+*
+* @copyright Ulrich-Matthias Schäfer
+* @license MIT
+*/;
+;(function () {
+    "use strict";
+
+    function SelectHandler(el) {
+
+        this.el = el;
+        el.remember('_selectHandler', this);
+        this.pointSelection = { isSelected: false };
+        this.rectSelection = { isSelected: false };
+    }
+
+    SelectHandler.prototype.init = function (value, options) {
+
+        var bbox = this.el.bbox();
+        this.options = {};
+
+        // Merging the defaults and the options-object together
+        for (var i in this.el.selectize.defaults) {
+            this.options[i] = this.el.selectize.defaults[i];
+            if (options[i] !== undefined) {
+                this.options[i] = options[i];
+            }
+        }
+
+        this.parent = this.el.parent();
+        this.nested = this.nested || this.parent.group();
+        this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y));
+
+        // When deepSelect is enabled and the element is a line/polyline/polygon, draw only points for moving
+        if (this.options.deepSelect && ['line', 'polyline', 'polygon'].indexOf(this.el.type) !== -1) {
+            this.selectPoints(value);
+        } else {
+            this.selectRect(value);
+        }
+
+        this.observe();
+        this.cleanup();
+    };
+
+    SelectHandler.prototype.selectPoints = function (value) {
+
+        this.pointSelection.isSelected = value;
+
+        // When set is already there we dont have to create one
+        if (this.pointSelection.set) {
+            return this;
+        }
+
+        // Create our set of elements
+        this.pointSelection.set = this.parent.set();
+        // draw the circles and mark the element as selected
+        this.drawCircles();
+
+        return this;
+    };
+
+    // create the point-array which contains the 2 points of a line or simply the points-array of polyline/polygon
+    SelectHandler.prototype.getPointArray = function () {
+        var bbox = this.el.bbox();
+
+        return this.el.array().valueOf().map(function (el) {
+            return [el[0] - bbox.x, el[1] - bbox.y];
+        });
+    };
+
+    // The function to draw the circles
+    SelectHandler.prototype.drawCircles = function () {
+
+        var _this = this,
+            array = this.getPointArray();
+
+        // go through the array of points
+        for (var i = 0, len = array.length; i < len; ++i) {
+
+            var curriedEvent = function (k) {
+                return function (ev) {
+                    ev = ev || window.event;
+                    ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+                    ev.stopPropagation();
+
+                    var x = ev.pageX || ev.touches[0].pageX;
+                    var y = ev.pageY || ev.touches[0].pageY;
+                    _this.el.fire('point', { x: x, y: y, i: k, event: ev });
+                };
+            }(i);
+
+            // add every point to the set
+            this.pointSelection.set.add(
+            // a circle with our css-classes and a touchstart-event which fires our event for moving points
+            this.nested.circle(this.options.radius).center(array[i][0], array[i][1]).addClass(this.options.classPoints).addClass(this.options.classPoints + '_point').on('touchstart', curriedEvent).on('mousedown', curriedEvent));
+        }
+    };
+
+    // every time a circle is moved, we have to update the positions of our circle
+    SelectHandler.prototype.updatePointSelection = function () {
+        var array = this.getPointArray();
+
+        this.pointSelection.set.each(function (i) {
+            if (this.cx() === array[i][0] && this.cy() === array[i][1]) {
+                return;
+            }
+            this.center(array[i][0], array[i][1]);
+        });
+    };
+
+    SelectHandler.prototype.updateRectSelection = function () {
+        var bbox = this.el.bbox();
+
+        this.rectSelection.set.get(0).attr({
+            width: bbox.width,
+            height: bbox.height
+        });
+
+        // set.get(1) is always in the upper left corner. no need to move it
+        if (this.options.points) {
+            this.rectSelection.set.get(2).center(bbox.width, 0);
+            this.rectSelection.set.get(3).center(bbox.width, bbox.height);
+            this.rectSelection.set.get(4).center(0, bbox.height);
+
+            this.rectSelection.set.get(5).center(bbox.width / 2, 0);
+            this.rectSelection.set.get(6).center(bbox.width, bbox.height / 2);
+            this.rectSelection.set.get(7).center(bbox.width / 2, bbox.height);
+            this.rectSelection.set.get(8).center(0, bbox.height / 2);
+        }
+
+        if (this.options.rotationPoint) {
+            if (this.options.points) {
+                this.rectSelection.set.get(9).center(bbox.width / 2, 20);
+            } else {
+                this.rectSelection.set.get(1).center(bbox.width / 2, 20);
+            }
+        }
+    };
+
+    SelectHandler.prototype.selectRect = function (value) {
+
+        var _this = this,
+            bbox = this.el.bbox();
+
+        this.rectSelection.isSelected = value;
+
+        // when set is already p
+        this.rectSelection.set = this.rectSelection.set || this.parent.set();
+
+        // helperFunction to create a mouse-down function which triggers the event specified in `eventName`
+        function getMoseDownFunc(eventName) {
+            return function (ev) {
+                ev = ev || window.event;
+                ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+                ev.stopPropagation();
+
+                var x = ev.pageX || ev.touches[0].pageX;
+                var y = ev.pageY || ev.touches[0].pageY;
+                _this.el.fire(eventName, { x: x, y: y, event: ev });
+            };
+        }
+
+        // create the selection-rectangle and add the css-class
+        if (!this.rectSelection.set.get(0)) {
+            this.rectSelection.set.add(this.nested.rect(bbox.width, bbox.height).addClass(this.options.classRect));
+        }
+
+        // Draw Points at the edges, if enabled
+        if (this.options.points && !this.rectSelection.set.get(1)) {
+            var ename = "touchstart",
+                mname = "mousedown";
+            this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, 0).attr('class', this.options.classPoints + '_lt').on(mname, getMoseDownFunc('lt')).on(ename, getMoseDownFunc('lt')));
+            this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, 0).attr('class', this.options.classPoints + '_rt').on(mname, getMoseDownFunc('rt')).on(ename, getMoseDownFunc('rt')));
+            this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, bbox.height).attr('class', this.options.classPoints + '_rb').on(mname, getMoseDownFunc('rb')).on(ename, getMoseDownFunc('rb')));
+            this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, bbox.height).attr('class', this.options.classPoints + '_lb').on(mname, getMoseDownFunc('lb')).on(ename, getMoseDownFunc('lb')));
+
+            this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, 0).attr('class', this.options.classPoints + '_t').on(mname, getMoseDownFunc('t')).on(ename, getMoseDownFunc('t')));
+            this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, bbox.height / 2).attr('class', this.options.classPoints + '_r').on(mname, getMoseDownFunc('r')).on(ename, getMoseDownFunc('r')));
+            this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, bbox.height).attr('class', this.options.classPoints + '_b').on(mname, getMoseDownFunc('b')).on(ename, getMoseDownFunc('b')));
+            this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, bbox.height / 2).attr('class', this.options.classPoints + '_l').on(mname, getMoseDownFunc('l')).on(ename, getMoseDownFunc('l')));
+
+            this.rectSelection.set.each(function () {
+                this.addClass(_this.options.classPoints);
+            });
+        }
+
+        // draw rotationPint, if enabled
+        if (this.options.rotationPoint && (this.options.points && !this.rectSelection.set.get(9) || !this.options.points && !this.rectSelection.set.get(1))) {
+
+            var curriedEvent = function curriedEvent(ev) {
+                ev = ev || window.event;
+                ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+                ev.stopPropagation();
+
+                var x = ev.pageX || ev.touches[0].pageX;
+                var y = ev.pageY || ev.touches[0].pageY;
+                _this.el.fire('rot', { x: x, y: y, event: ev });
+            };
+            this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, 20).attr('class', this.options.classPoints + '_rot').on("touchstart", curriedEvent).on("mousedown", curriedEvent));
+        }
+    };
+
+    SelectHandler.prototype.handler = function () {
+
+        var bbox = this.el.bbox();
+        this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y));
+
+        if (this.rectSelection.isSelected) {
+            this.updateRectSelection();
+        }
+
+        if (this.pointSelection.isSelected) {
+            this.updatePointSelection();
+        }
+    };
+
+    SelectHandler.prototype.observe = function () {
+        var _this = this;
+
+        if (MutationObserver) {
+            if (this.rectSelection.isSelected || this.pointSelection.isSelected) {
+                this.observerInst = this.observerInst || new MutationObserver(function () {
+                    _this.handler();
+                });
+                this.observerInst.observe(this.el.node, { attributes: true });
+            } else {
+                try {
+                    this.observerInst.disconnect();
+                    delete this.observerInst;
+                } catch (e) {}
+            }
+        } else {
+            this.el.off('DOMAttrModified.select');
+
+            if (this.rectSelection.isSelected || this.pointSelection.isSelected) {
+                this.el.on('DOMAttrModified.select', function () {
+                    _this.handler();
+                });
+            }
+        }
+    };
+
+    SelectHandler.prototype.cleanup = function () {
+
+        //var _this = this;
+
+        if (!this.rectSelection.isSelected && this.rectSelection.set) {
+            // stop watching the element, remove the selection
+            this.rectSelection.set.each(function () {
+                this.remove();
+            });
+
+            this.rectSelection.set.clear();
+            delete this.rectSelection.set;
+        }
+
+        if (!this.pointSelection.isSelected && this.pointSelection.set) {
+            // Remove all points, clear the set, stop watching the element
+            this.pointSelection.set.each(function () {
+                this.remove();
+            });
+
+            this.pointSelection.set.clear();
+            delete this.pointSelection.set;
+        }
+
+        if (!this.pointSelection.isSelected && !this.rectSelection.isSelected) {
+            this.nested.remove();
+            delete this.nested;
+        }
+    };
+
+    SVG.extend(SVG.Element, {
+        // Select element with mouse
+        selectize: function selectize(value, options) {
+
+            // Check the parameters and reassign if needed
+            if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {
+                options = value;
+                value = true;
+            }
+
+            var selectHandler = this.remember('_selectHandler') || new SelectHandler(this);
+
+            selectHandler.init(value === undefined ? true : value, options || {});
+
+            return this;
+        }
+    });
+
+    SVG.Element.prototype.selectize.defaults = {
+        points: true, // If true, points at the edges are drawn. Needed for resize!
+        classRect: 'svg_select_boundingRect', // Css-class added to the rect
+        classPoints: 'svg_select_points', // Css-class added to the points
+        radius: 7, // radius of the points
+        rotationPoint: true, // If true, rotation point is drawn. Needed for rotation!
+        deepSelect: false // If true, moving of single points is possible (only line, polyline, polyon)
+    };
+})();
+
+/***/ }),
+/* 65 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {
+
+var scope = typeof global !== "undefined" && global || typeof self !== "undefined" && self || window;
+var apply = Function.prototype.apply;
+
+// DOM APIs, for completeness
+
+exports.setTimeout = function () {
+  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);
+};
+exports.setInterval = function () {
+  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);
+};
+exports.clearTimeout = exports.clearInterval = function (timeout) {
+  if (timeout) {
+    timeout.close();
+  }
+};
+
+function Timeout(id, clearFn) {
+  this._id = id;
+  this._clearFn = clearFn;
+}
+Timeout.prototype.unref = Timeout.prototype.ref = function () {};
+Timeout.prototype.close = function () {
+  this._clearFn.call(scope, this._id);
+};
+
+// Does not start the time, just sets up the members needed.
+exports.enroll = function (item, msecs) {
+  clearTimeout(item._idleTimeoutId);
+  item._idleTimeout = msecs;
+};
+
+exports.unenroll = function (item) {
+  clearTimeout(item._idleTimeoutId);
+  item._idleTimeout = -1;
+};
+
+exports._unrefActive = exports.active = function (item) {
+  clearTimeout(item._idleTimeoutId);
+
+  var msecs = item._idleTimeout;
+  if (msecs >= 0) {
+    item._idleTimeoutId = setTimeout(function onTimeout() {
+      if (item._onTimeout) item._onTimeout();
+    }, msecs);
+  }
+};
+
+// setimmediate attaches itself to the global object
+__webpack_require__(58);
+// On some exotic environments, it's not clear which object `setimmediate` was
+// able to install onto.  Search each possibility in the same order as the
+// `setimmediate` library.
+exports.setImmediate = typeof self !== "undefined" && self.setImmediate || typeof global !== "undefined" && global.setImmediate || undefined && undefined.setImmediate;
+exports.clearImmediate = typeof self !== "undefined" && self.clearImmediate || typeof global !== "undefined" && global.clearImmediate || undefined && undefined.clearImmediate;
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(29)))
+
+/***/ }),
+/* 66 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+var __WEBPACK_AMD_DEFINE_RESULT__;
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/*!
+* svg.js - A lightweight library for manipulating and animating SVG.
+* @version 2.6.6
+* https://svgdotjs.github.io/
+*
+* @copyright Wout Fierens <wout@mick-wout.com>
+* @license MIT
+*
+* BUILT: Thu Aug 30 2018 11:37:58 GMT+0200 (GMT+02:00)
+*/;
+(function (root, factory) {
+  /* istanbul ignore next */
+  if (true) {
+    !(__WEBPACK_AMD_DEFINE_RESULT__ = function () {
+      return factory(root, root.document);
+    }.call(exports, __webpack_require__, exports, module),
+				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+    /* below check fixes #412 */
+  } else if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined') {
+    module.exports = root.document ? factory(root, root.document) : function (w) {
+      return factory(w, w.document);
+    };
+  } else {
+    root.SVG = factory(root, root.document);
+  }
+})(typeof window !== 'undefined' ? window : undefined, function (window, document) {
+  // Find global reference - uses 'this' by default when available,
+  // falls back to 'window' otherwise (for bundlers like Webpack)
+  var globalRef = typeof this !== 'undefined' ? this : window;
+
+  // The main wrapping element
+  var SVG = globalRef.SVG = function (element) {
+    if (SVG.supported) {
+      element = new SVG.Doc(element);
+
+      if (!SVG.parser.draw) {
+        SVG.prepare();
+      }
+
+      return element;
+    }
+  };
+
+  // Default namespaces
+  SVG.ns = 'http://www.w3.org/2000/svg';
+  SVG.xmlns = 'http://www.w3.org/2000/xmlns/';
+  SVG.xlink = 'http://www.w3.org/1999/xlink';
+  SVG.svgjs = 'http://svgjs.com/svgjs';
+
+  // Svg support test
+  SVG.supported = function () {
+    return true;
+    // !!document.createElementNS &&
+    //     !! document.createElementNS(SVG.ns,'svg').createSVGRect
+  }();
+
+  // Don't bother to continue if SVG is not supported
+  if (!SVG.supported) return false;
+
+  // Element id sequence
+  SVG.did = 1000;
+
+  // Get next named element id
+  SVG.eid = function (name) {
+    return 'Svgjs' + capitalize(name) + SVG.did++;
+  };
+
+  // Method for element creation
+  SVG.create = function (name) {
+    // create element
+    var element = document.createElementNS(this.ns, name);
+
+    // apply unique id
+    element.setAttribute('id', this.eid(name));
+
+    return element;
+  };
+
+  // Method for extending objects
+  SVG.extend = function () {
+    var modules, methods, key, i;
+
+    // Get list of modules
+    modules = [].slice.call(arguments);
+
+    // Get object with extensions
+    methods = modules.pop();
+
+    for (i = modules.length - 1; i >= 0; i--) {
+      if (modules[i]) {
+        for (key in methods) {
+          modules[i].prototype[key] = methods[key];
+        }
+      }
+    }
+
+    // Make sure SVG.Set inherits any newly added methods
+    if (SVG.Set && SVG.Set.inherit) {
+      SVG.Set.inherit();
+    }
+  };
+
+  // Invent new element
+  SVG.invent = function (config) {
+    // Create element initializer
+    var initializer = typeof config.create === 'function' ? config.create : function () {
+      this.constructor.call(this, SVG.create(config.create));
+    };
+
+    // Inherit prototype
+    if (config.inherit) {
+      initializer.prototype = new config.inherit();
+    }
+
+    // Extend with methods
+    if (config.extend) {
+      SVG.extend(initializer, config.extend);
+    }
+
+    // Attach construct method to parent
+    if (config.construct) {
+      SVG.extend(config.parent || SVG.Container, config.construct);
+    }
+
+    return initializer;
+  };
+
+  // Adopt existing svg elements
+  SVG.adopt = function (node) {
+    // check for presence of node
+    if (!node) return null;
+
+    // make sure a node isn't already adopted
+    if (node.instance) return node.instance;
+
+    // initialize variables
+    var element;
+
+    // adopt with element-specific settings
+    if (node.nodeName == 'svg') {
+      element = node.parentNode instanceof window.SVGElement ? new SVG.Nested() : new SVG.Doc();
+    } else if (node.nodeName == 'linearGradient') {
+      element = new SVG.Gradient('linear');
+    } else if (node.nodeName == 'radialGradient') {
+      element = new SVG.Gradient('radial');
+    } else if (SVG[capitalize(node.nodeName)]) {
+      element = new SVG[capitalize(node.nodeName)]();
+    } else {
+      element = new SVG.Element(node);
+    }
+
+    // ensure references
+    element.type = node.nodeName;
+    element.node = node;
+    node.instance = element;
+
+    // SVG.Class specific preparations
+    if (element instanceof SVG.Doc) {
+      element.namespace().defs();
+    }
+
+    // pull svgjs data from the dom (getAttributeNS doesn't work in html5)
+    element.setData(JSON.parse(node.getAttribute('svgjs:data')) || {});
+
+    return element;
+  };
+
+  // Initialize parsing element
+  SVG.prepare = function () {
+    // Select document body and create invisible svg element
+    var body = document.getElementsByTagName('body')[0],
+        draw = (body ? new SVG.Doc(body) : SVG.adopt(document.documentElement).nested()).size(2, 0);
+
+    // Create parser object
+    SVG.parser = {
+      body: body || document.documentElement,
+      draw: draw.style('opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden').node,
+      poly: draw.polyline().node,
+      path: draw.path().node,
+      native: SVG.create('svg')
+    };
+  };
+
+  SVG.parser = {
+    native: SVG.create('svg')
+  };
+
+  document.addEventListener('DOMContentLoaded', function () {
+    if (!SVG.parser.draw) {
+      SVG.prepare();
+    }
+  }, false);
+
+  // Storage for regular expressions
+  SVG.regex = {
+    // Parse unit value
+    numberAndUnit: /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,
+
+    // Parse hex value
+    hex: /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,
+
+    // Parse rgb value
+    rgb: /rgb\((\d+),(\d+),(\d+)\)/,
+
+    // Parse reference id
+    reference: /#([a-z0-9\-_]+)/i,
+
+    // splits a transformation chain
+    transforms: /\)\s*,?\s*/,
+
+    // Whitespace
+    whitespace: /\s/g,
+
+    // Test hex value
+    isHex: /^#[a-f0-9]{3,6}$/i,
+
+    // Test rgb value
+    isRgb: /^rgb\(/,
+
+    // Test css declaration
+    isCss: /[^:]+:[^;]+;?/,
+
+    // Test for blank string
+    isBlank: /^(\s+)?$/,
+
+    // Test for numeric string
+    isNumber: /^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,
+
+    // Test for percent value
+    isPercent: /^-?[\d\.]+%$/,
+
+    // Test for image url
+    isImage: /\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,
+
+    // split at whitespace and comma
+    delimiter: /[\s,]+/,
+
+    // The following regex are used to parse the d attribute of a path
+
+    // Matches all hyphens which are not after an exponent
+    hyphen: /([^e])\-/gi,
+
+    // Replaces and tests for all path letters
+    pathLetters: /[MLHVCSQTAZ]/gi,
+
+    // yes we need this one, too
+    isPathLetter: /[MLHVCSQTAZ]/i,
+
+    // matches 0.154.23.45
+    numbersWithDots: /((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,
+
+    // matches .
+    dots: /\./g
+  };
+
+  SVG.utils = {
+    // Map function
+    map: function map(array, block) {
+      var i,
+          il = array.length,
+          result = [];
+
+      for (i = 0; i < il; i++) {
+        result.push(block(array[i]));
+      }
+
+      return result;
+    },
+
+    // Filter function
+    filter: function filter(array, block) {
+      var i,
+          il = array.length,
+          result = [];
+
+      for (i = 0; i < il; i++) {
+        if (block(array[i])) {
+          result.push(array[i]);
+        }
+      }
+
+      return result;
+    },
+
+    // Degrees to radians
+    radians: function radians(d) {
+      return d % 360 * Math.PI / 180;
+    },
+
+    // Radians to degrees
+    degrees: function degrees(r) {
+      return r * 180 / Math.PI % 360;
+    },
+
+    filterSVGElements: function filterSVGElements(nodes) {
+      return this.filter(nodes, function (el) {
+        return el instanceof window.SVGElement;
+      });
+    }
+
+  };
+
+  SVG.defaults = {
+    // Default attribute values
+    attrs: {
+      // fill and stroke
+      'fill-opacity': 1,
+      'stroke-opacity': 1,
+      'stroke-width': 0,
+      'stroke-linejoin': 'miter',
+      'stroke-linecap': 'butt',
+      fill: '#000000',
+      stroke: '#000000',
+      opacity: 1,
+      // position
+      x: 0,
+      y: 0,
+      cx: 0,
+      cy: 0,
+      // size
+      width: 0,
+      height: 0,
+      // radius
+      r: 0,
+      rx: 0,
+      ry: 0,
+      // gradient
+      offset: 0,
+      'stop-opacity': 1,
+      'stop-color': '#000000',
+      // text
+      'font-size': 16,
+      'font-family': 'Helvetica, Arial, sans-serif',
+      'text-anchor': 'start'
+    }
+    // Module for color convertions
+  };SVG.Color = function (color) {
+    var match;
+
+    // initialize defaults
+    this.r = 0;
+    this.g = 0;
+    this.b = 0;
+
+    if (!color) return;
+
+    // parse color
+    if (typeof color === 'string') {
+      if (SVG.regex.isRgb.test(color)) {
+        // get rgb values
+        match = SVG.regex.rgb.exec(color.replace(SVG.regex.whitespace, ''));
+
+        // parse numeric values
+        this.r = parseInt(match[1]);
+        this.g = parseInt(match[2]);
+        this.b = parseInt(match[3]);
+      } else if (SVG.regex.isHex.test(color)) {
+        // get hex values
+        match = SVG.regex.hex.exec(fullHex(color));
+
+        // parse numeric values
+        this.r = parseInt(match[1], 16);
+        this.g = parseInt(match[2], 16);
+        this.b = parseInt(match[3], 16);
+      }
+    } else if ((typeof color === 'undefined' ? 'undefined' : _typeof(color)) === 'object') {
+      this.r = color.r;
+      this.g = color.g;
+      this.b = color.b;
+    }
+  };
+
+  SVG.extend(SVG.Color, {
+    // Default to hex conversion
+    toString: function toString() {
+      return this.toHex();
+    },
+    // Build hex value
+    toHex: function toHex() {
+      return '#' + compToHex(this.r) + compToHex(this.g) + compToHex(this.b);
+    },
+    // Build rgb value
+    toRgb: function toRgb() {
+      return 'rgb(' + [this.r, this.g, this.b].join() + ')';
+    },
+    // Calculate true brightness
+    brightness: function brightness() {
+      return this.r / 255 * 0.30 + this.g / 255 * 0.59 + this.b / 255 * 0.11;
+    },
+    // Make color morphable
+    morph: function morph(color) {
+      this.destination = new SVG.Color(color);
+
+      return this;
+    },
+    // Get morphed color at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this;
+
+      // normalise pos
+      pos = pos < 0 ? 0 : pos > 1 ? 1 : pos;
+
+      // generate morphed color
+      return new SVG.Color({
+        r: ~~(this.r + (this.destination.r - this.r) * pos),
+        g: ~~(this.g + (this.destination.g - this.g) * pos),
+        b: ~~(this.b + (this.destination.b - this.b) * pos)
+      });
+    }
+
+  });
+
+  // Testers
+
+  // Test if given value is a color string
+  SVG.Color.test = function (color) {
+    color += '';
+    return SVG.regex.isHex.test(color) || SVG.regex.isRgb.test(color);
+  };
+
+  // Test if given value is a rgb object
+  SVG.Color.isRgb = function (color) {
+    return color && typeof color.r === 'number' && typeof color.g === 'number' && typeof color.b === 'number';
+  };
+
+  // Test if given value is a color
+  SVG.Color.isColor = function (color) {
+    return SVG.Color.isRgb(color) || SVG.Color.test(color);
+  };
+  // Module for array conversion
+  SVG.Array = function (array, fallback) {
+    array = (array || []).valueOf();
+
+    // if array is empty and fallback is provided, use fallback
+    if (array.length == 0 && fallback) {
+      array = fallback.valueOf();
+    }
+
+    // parse array
+    this.value = this.parse(array);
+  };
+
+  SVG.extend(SVG.Array, {
+    // Make array morphable
+    morph: function morph(array) {
+      this.destination = this.parse(array);
+
+      // normalize length of arrays
+      if (this.value.length != this.destination.length) {
+        var lastValue = this.value[this.value.length - 1],
+            lastDestination = this.destination[this.destination.length - 1];
+
+        while (this.value.length > this.destination.length) {
+          this.destination.push(lastDestination);
+        }
+        while (this.value.length < this.destination.length) {
+          this.value.push(lastValue);
+        }
+      }
+
+      return this;
+    },
+    // Clean up any duplicate points
+    settle: function settle() {
+      // find all unique values
+      for (var i = 0, il = this.value.length, seen = []; i < il; i++) {
+        if (seen.indexOf(this.value[i]) == -1) {
+          seen.push(this.value[i]);
+        }
+      }
+
+      // set new value
+      return this.value = seen;
+    },
+    // Get morphed array at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this;
+
+      // generate morphed array
+      for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+        array.push(this.value[i] + (this.destination[i] - this.value[i]) * pos);
+      }
+
+      return new SVG.Array(array);
+    },
+    // Convert array to string
+    toString: function toString() {
+      return this.value.join(' ');
+    },
+    // Real value
+    valueOf: function valueOf() {
+      return this.value;
+    },
+    // Parse whitespace separated string
+    parse: function parse(array) {
+      array = array.valueOf();
+
+      // if already is an array, no need to parse it
+      if (Array.isArray(array)) return array;
+
+      return this.split(array);
+    },
+    // Strip unnecessary whitespace
+    split: function split(string) {
+      return string.trim().split(SVG.regex.delimiter).map(parseFloat);
+    },
+    // Reverse array
+    reverse: function reverse() {
+      this.value.reverse();
+
+      return this;
+    },
+    clone: function clone() {
+      var clone = new this.constructor();
+      clone.value = array_clone(this.value);
+      return clone;
+    }
+  });
+  // Poly points array
+  SVG.PointArray = function (array, fallback) {
+    SVG.Array.call(this, array, fallback || [[0, 0]]);
+  };
+
+  // Inherit from SVG.Array
+  SVG.PointArray.prototype = new SVG.Array();
+  SVG.PointArray.prototype.constructor = SVG.PointArray;
+
+  SVG.extend(SVG.PointArray, {
+    // Convert array to string
+    toString: function toString() {
+      // convert to a poly point string
+      for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+        array.push(this.value[i].join(','));
+      }
+
+      return array.join(' ');
+    },
+    // Convert array to line object
+    toLine: function toLine() {
+      return {
+        x1: this.value[0][0],
+        y1: this.value[0][1],
+        x2: this.value[1][0],
+        y2: this.value[1][1]
+      };
+    },
+    // Get morphed array at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this;
+
+      // generate morphed point string
+      for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+        array.push([this.value[i][0] + (this.destination[i][0] - this.value[i][0]) * pos, this.value[i][1] + (this.destination[i][1] - this.value[i][1]) * pos]);
+      }
+
+      return new SVG.PointArray(array);
+    },
+    // Parse point string and flat array
+    parse: function parse(array) {
+      var points = [];
+
+      array = array.valueOf();
+
+      // if it is an array
+      if (Array.isArray(array)) {
+        // and it is not flat, there is no need to parse it
+        if (Array.isArray(array[0])) {
+          // make sure to use a clone
+          return array.map(function (el) {
+            return el.slice();
+          });
+        } else if (array[0].x != null) {
+          // allow point objects to be passed
+          return array.map(function (el) {
+            return [el.x, el.y];
+          });
+        }
+      } else {
+        // Else, it is considered as a string
+        // parse points
+        array = array.trim().split(SVG.regex.delimiter).map(parseFloat);
+      }
+
+      // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints
+      // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.
+      if (array.length % 2 !== 0) array.pop();
+
+      // wrap points in two-tuples and parse points as floats
+      for (var i = 0, len = array.length; i < len; i = i + 2) {
+        points.push([array[i], array[i + 1]]);
+      }
+
+      return points;
+    },
+    // Move point string
+    move: function move(x, y) {
+      var box = this.bbox();
+
+      // get relative offset
+      x -= box.x;
+      y -= box.y;
+
+      // move every point
+      if (!isNaN(x) && !isNaN(y)) {
+        for (var i = this.value.length - 1; i >= 0; i--) {
+          this.value[i] = [this.value[i][0] + x, this.value[i][1] + y];
+        }
+      }
+
+      return this;
+    },
+    // Resize poly string
+    size: function size(width, height) {
+      var i,
+          box = this.bbox();
+
+      // recalculate position of all points according to new size
+      for (i = this.value.length - 1; i >= 0; i--) {
+        if (box.width) this.value[i][0] = (this.value[i][0] - box.x) * width / box.width + box.x;
+        if (box.height) this.value[i][1] = (this.value[i][1] - box.y) * height / box.height + box.y;
+      }
+
+      return this;
+    },
+    // Get bounding box of points
+    bbox: function bbox() {
+      if (!SVG.parser.draw) {
+        SVG.prepare();
+      }
+      SVG.parser.poly.setAttribute('points', this.toString());
+
+      return SVG.parser.poly.getBBox();
+    }
+  });
+
+  var pathHandlers = {
+    M: function M(c, p, p0) {
+      p.x = p0.x = c[0];
+      p.y = p0.y = c[1];
+
+      return ['M', p.x, p.y];
+    },
+    L: function L(c, p) {
+      p.x = c[0];
+      p.y = c[1];
+      return ['L', c[0], c[1]];
+    },
+    H: function H(c, p) {
+      p.x = c[0];
+      return ['H', c[0]];
+    },
+    V: function V(c, p) {
+      p.y = c[0];
+      return ['V', c[0]];
+    },
+    C: function C(c, p) {
+      p.x = c[4];
+      p.y = c[5];
+      return ['C', c[0], c[1], c[2], c[3], c[4], c[5]];
+    },
+    S: function S(c, p) {
+      p.x = c[2];
+      p.y = c[3];
+      return ['S', c[0], c[1], c[2], c[3]];
+    },
+    Q: function Q(c, p) {
+      p.x = c[2];
+      p.y = c[3];
+      return ['Q', c[0], c[1], c[2], c[3]];
+    },
+    T: function T(c, p) {
+      p.x = c[0];
+      p.y = c[1];
+      return ['T', c[0], c[1]];
+    },
+    Z: function Z(c, p, p0) {
+      p.x = p0.x;
+      p.y = p0.y;
+      return ['Z'];
+    },
+    A: function A(c, p) {
+      p.x = c[5];
+      p.y = c[6];
+      return ['A', c[0], c[1], c[2], c[3], c[4], c[5], c[6]];
+    }
+  };
+
+  var mlhvqtcsa = 'mlhvqtcsaz'.split('');
+
+  for (var i = 0, il = mlhvqtcsa.length; i < il; ++i) {
+    pathHandlers[mlhvqtcsa[i]] = function (i) {
+      return function (c, p, p0) {
+        if (i == 'H') c[0] = c[0] + p.x;else if (i == 'V') c[0] = c[0] + p.y;else if (i == 'A') {
+          c[5] = c[5] + p.x, c[6] = c[6] + p.y;
+        } else {
+          for (var j = 0, jl = c.length; j < jl; ++j) {
+            c[j] = c[j] + (j % 2 ? p.y : p.x);
+          }
+        }
+
+        return pathHandlers[i](c, p, p0);
+      };
+    }(mlhvqtcsa[i].toUpperCase());
+  }
+
+  // Path points array
+  SVG.PathArray = function (array, fallback) {
+    SVG.Array.call(this, array, fallback || [['M', 0, 0]]);
+  };
+
+  // Inherit from SVG.Array
+  SVG.PathArray.prototype = new SVG.Array();
+  SVG.PathArray.prototype.constructor = SVG.PathArray;
+
+  SVG.extend(SVG.PathArray, {
+    // Convert array to string
+    toString: function toString() {
+      return arrayToString(this.value);
+    },
+    // Move path string
+    move: function move(x, y) {
+      // get bounding box of current situation
+      var box = this.bbox();
+
+      // get relative offset
+      x -= box.x;
+      y -= box.y;
+
+      if (!isNaN(x) && !isNaN(y)) {
+        // move every point
+        for (var l, i = this.value.length - 1; i >= 0; i--) {
+          l = this.value[i][0];
+
+          if (l == 'M' || l == 'L' || l == 'T') {
+            this.value[i][1] += x;
+            this.value[i][2] += y;
+          } else if (l == 'H') {
+            this.value[i][1] += x;
+          } else if (l == 'V') {
+            this.value[i][1] += y;
+          } else if (l == 'C' || l == 'S' || l == 'Q') {
+            this.value[i][1] += x;
+            this.value[i][2] += y;
+            this.value[i][3] += x;
+            this.value[i][4] += y;
+
+            if (l == 'C') {
+              this.value[i][5] += x;
+              this.value[i][6] += y;
+            }
+          } else if (l == 'A') {
+            this.value[i][6] += x;
+            this.value[i][7] += y;
+          }
+        }
+      }
+
+      return this;
+    },
+    // Resize path string
+    size: function size(width, height) {
+      // get bounding box of current situation
+      var i,
+          l,
+          box = this.bbox();
+
+      // recalculate position of all points according to new size
+      for (i = this.value.length - 1; i >= 0; i--) {
+        l = this.value[i][0];
+
+        if (l == 'M' || l == 'L' || l == 'T') {
+          this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+          this.value[i][2] = (this.value[i][2] - box.y) * height / box.height + box.y;
+        } else if (l == 'H') {
+          this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+        } else if (l == 'V') {
+          this.value[i][1] = (this.value[i][1] - box.y) * height / box.height + box.y;
+        } else if (l == 'C' || l == 'S' || l == 'Q') {
+          this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+          this.value[i][2] = (this.value[i][2] - box.y) * height / box.height + box.y;
+          this.value[i][3] = (this.value[i][3] - box.x) * width / box.width + box.x;
+          this.value[i][4] = (this.value[i][4] - box.y) * height / box.height + box.y;
+
+          if (l == 'C') {
+            this.value[i][5] = (this.value[i][5] - box.x) * width / box.width + box.x;
+            this.value[i][6] = (this.value[i][6] - box.y) * height / box.height + box.y;
+          }
+        } else if (l == 'A') {
+          // resize radii
+          this.value[i][1] = this.value[i][1] * width / box.width;
+          this.value[i][2] = this.value[i][2] * height / box.height;
+
+          // move position values
+          this.value[i][6] = (this.value[i][6] - box.x) * width / box.width + box.x;
+          this.value[i][7] = (this.value[i][7] - box.y) * height / box.height + box.y;
+        }
+      }
+
+      return this;
+    },
+    // Test if the passed path array use the same path data commands as this path array
+    equalCommands: function equalCommands(pathArray) {
+      var i, il, equalCommands;
+
+      pathArray = new SVG.PathArray(pathArray);
+
+      equalCommands = this.value.length === pathArray.value.length;
+      for (i = 0, il = this.value.length; equalCommands && i < il; i++) {
+        equalCommands = this.value[i][0] === pathArray.value[i][0];
+      }
+
+      return equalCommands;
+    },
+    // Make path array morphable
+    morph: function morph(pathArray) {
+      pathArray = new SVG.PathArray(pathArray);
+
+      if (this.equalCommands(pathArray)) {
+        this.destination = pathArray;
+      } else {
+        this.destination = null;
+      }
+
+      return this;
+    },
+    // Get morphed path array at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this;
+
+      var sourceArray = this.value,
+          destinationArray = this.destination.value,
+          array = [],
+          pathArray = new SVG.PathArray(),
+          i,
+          il,
+          j,
+          jl;
+
+      // Animate has specified in the SVG spec
+      // See: https://www.w3.org/TR/SVG11/paths.html#PathElement
+      for (i = 0, il = sourceArray.length; i < il; i++) {
+        array[i] = [sourceArray[i][0]];
+        for (j = 1, jl = sourceArray[i].length; j < jl; j++) {
+          array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos;
+        }
+        // For the two flags of the elliptical arc command, the SVG spec say:
+        // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true
+        // Elliptical arc command as an array followed by corresponding indexes:
+        // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]
+        //   0    1   2        3                 4             5      6  7
+        if (array[i][0] === 'A') {
+          array[i][4] = +(array[i][4] != 0);
+          array[i][5] = +(array[i][5] != 0);
+        }
+      }
+
+      // Directly modify the value of a path array, this is done this way for performance
+      pathArray.value = array;
+      return pathArray;
+    },
+    // Absolutize and parse path to array
+    parse: function parse(array) {
+      // if it's already a patharray, no need to parse it
+      if (array instanceof SVG.PathArray) return array.valueOf();
+
+      // prepare for parsing
+      var i,
+          x0,
+          y0,
+          s,
+          seg,
+          arr,
+          x = 0,
+          y = 0,
+          paramCnt = { 'M': 2, 'L': 2, 'H': 1, 'V': 1, 'C': 6, 'S': 4, 'Q': 4, 'T': 2, 'A': 7, 'Z': 0 };
+
+      if (typeof array === 'string') {
+        array = array.replace(SVG.regex.numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123
+        .replace(SVG.regex.pathLetters, ' $& ') // put some room between letters and numbers
+        .replace(SVG.regex.hyphen, '$1 -') // add space before hyphen
+        .trim() // trim
+        .split(SVG.regex.delimiter); // split into array
+      } else {
+        array = array.reduce(function (prev, curr) {
+          return [].concat.call(prev, curr);
+        }, []);
+      }
+
+      // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...]
+      var arr = [],
+          p = new SVG.Point(),
+          p0 = new SVG.Point(),
+          index = 0,
+          len = array.length;
+
+      do {
+        // Test if we have a path letter
+        if (SVG.regex.isPathLetter.test(array[index])) {
+          s = array[index];
+          ++index;
+          // If last letter was a move command and we got no new, it defaults to [L]ine
+        } else if (s == 'M') {
+          s = 'L';
+        } else if (s == 'm') {
+          s = 'l';
+        }
+
+        arr.push(pathHandlers[s].call(null, array.slice(index, index = index + paramCnt[s.toUpperCase()]).map(parseFloat), p, p0));
+      } while (len > index);
+
+      return arr;
+    },
+    // Get bounding box of path
+    bbox: function bbox() {
+      if (!SVG.parser.draw) {
+        SVG.prepare();
+      }
+      SVG.parser.path.setAttribute('d', this.toString());
+
+      return SVG.parser.path.getBBox();
+    }
+
+  });
+
+  // Module for unit convertions
+  SVG.Number = SVG.invent({
+    // Initialize
+    create: function create(value, unit) {
+      // initialize defaults
+      this.value = 0;
+      this.unit = unit || '';
+
+      // parse value
+      if (typeof value === 'number') {
+        // ensure a valid numeric value
+        this.value = isNaN(value) ? 0 : !isFinite(value) ? value < 0 ? -3.4e+38 : +3.4e+38 : value;
+      } else if (typeof value === 'string') {
+        unit = value.match(SVG.regex.numberAndUnit);
+
+        if (unit) {
+          // make value numeric
+          this.value = parseFloat(unit[1]);
+
+          // normalize
+          if (unit[5] == '%') {
+            this.value /= 100;
+          } else if (unit[5] == 's') {
+            this.value *= 1000;
+          }
+
+          // store unit
+          this.unit = unit[5];
+        }
+      } else {
+        if (value instanceof SVG.Number) {
+          this.value = value.valueOf();
+          this.unit = value.unit;
+        }
+      }
+    },
+    // Add methods
+    extend: {
+      // Stringalize
+      toString: function toString() {
+        return (this.unit == '%' ? ~~(this.value * 1e8) / 1e6 : this.unit == 's' ? this.value / 1e3 : this.value) + this.unit;
+      },
+      toJSON: function toJSON() {
+        return this.toString();
+      }, // Convert to primitive
+      valueOf: function valueOf() {
+        return this.value;
+      },
+      // Add number
+      plus: function plus(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this + number, this.unit || number.unit);
+      },
+      // Subtract number
+      minus: function minus(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this - number, this.unit || number.unit);
+      },
+      // Multiply number
+      times: function times(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this * number, this.unit || number.unit);
+      },
+      // Divide number
+      divide: function divide(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this / number, this.unit || number.unit);
+      },
+      // Convert to different unit
+      to: function to(unit) {
+        var number = new SVG.Number(this);
+
+        if (typeof unit === 'string') {
+          number.unit = unit;
+        }
+
+        return number;
+      },
+      // Make number morphable
+      morph: function morph(number) {
+        this.destination = new SVG.Number(number);
+
+        if (number.relative) {
+          this.destination.value += this.value;
+        }
+
+        return this;
+      },
+      // Get morphed number at given position
+      at: function at(pos) {
+        // Make sure a destination is defined
+        if (!this.destination) return this;
+
+        // Generate new morphed number
+        return new SVG.Number(this.destination).minus(this).times(pos).plus(this);
+      }
+
+    }
+  });
+
+  SVG.Element = SVG.invent({
+    // Initialize node
+    create: function create(node) {
+      // make stroke value accessible dynamically
+      this._stroke = SVG.defaults.attrs.stroke;
+      this._event = null;
+
+      // initialize data object
+      this.dom = {};
+
+      // create circular reference
+      if (this.node = node) {
+        this.type = node.nodeName;
+        this.node.instance = this;
+
+        // store current attribute value
+        this._stroke = node.getAttribute('stroke') || this._stroke;
+      }
+    },
+
+    // Add class methods
+    extend: {
+      // Move over x-axis
+      x: function x(_x) {
+        return this.attr('x', _x);
+      },
+      // Move over y-axis
+      y: function y(_y) {
+        return this.attr('y', _y);
+      },
+      // Move by center over x-axis
+      cx: function cx(x) {
+        return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2);
+      },
+      // Move by center over y-axis
+      cy: function cy(y) {
+        return y == null ? this.y() + this.height() / 2 : this.y(y - this.height() / 2);
+      },
+      // Move element to given x and y values
+      move: function move(x, y) {
+        return this.x(x).y(y);
+      },
+      // Move element by its center
+      center: function center(x, y) {
+        return this.cx(x).cy(y);
+      },
+      // Set width of element
+      width: function width(_width) {
+        return this.attr('width', _width);
+      },
+      // Set height of element
+      height: function height(_height) {
+        return this.attr('height', _height);
+      },
+      // Set element size to given width and height
+      size: function size(width, height) {
+        var p = proportionalSize(this, width, height);
+
+        return this.width(new SVG.Number(p.width)).height(new SVG.Number(p.height));
+      },
+      // Clone element
+      clone: function clone(parent) {
+        // write dom data to the dom so the clone can pickup the data
+        this.writeDataToDom();
+
+        // clone element and assign new id
+        var clone = assignNewId(this.node.cloneNode(true));
+
+        // insert the clone in the given parent or after myself
+        if (parent) parent.add(clone);else this.after(clone);
+
+        return clone;
+      },
+      // Remove element
+      remove: function remove() {
+        if (this.parent()) {
+          this.parent().removeElement(this);
+        }
+
+        return this;
+      },
+      // Replace element
+      replace: function replace(element) {
+        this.after(element).remove();
+
+        return element;
+      },
+      // Add element to given container and return self
+      addTo: function addTo(parent) {
+        return parent.put(this);
+      },
+      // Add element to given container and return container
+      putIn: function putIn(parent) {
+        return parent.add(this);
+      },
+      // Get / set id
+      id: function id(_id) {
+        return this.attr('id', _id);
+      },
+      // Checks whether the given point inside the bounding box of the element
+      inside: function inside(x, y) {
+        var box = this.bbox();
+
+        return x > box.x && y > box.y && x < box.x + box.width && y < box.y + box.height;
+      },
+      // Show element
+      show: function show() {
+        return this.style('display', '');
+      },
+      // Hide element
+      hide: function hide() {
+        return this.style('display', 'none');
+      },
+      // Is element visible?
+      visible: function visible() {
+        return this.style('display') != 'none';
+      },
+      // Return id on string conversion
+      toString: function toString() {
+        return this.attr('id');
+      },
+      // Return array of classes on the node
+      classes: function classes() {
+        var attr = this.attr('class');
+
+        return attr == null ? [] : attr.trim().split(SVG.regex.delimiter);
+      },
+      // Return true if class exists on the node, false otherwise
+      hasClass: function hasClass(name) {
+        return this.classes().indexOf(name) != -1;
+      },
+      // Add class to the node
+      addClass: function addClass(name) {
+        if (!this.hasClass(name)) {
+          var array = this.classes();
+          array.push(name);
+          this.attr('class', array.join(' '));
+        }
+
+        return this;
+      },
+      // Remove class from the node
+      removeClass: function removeClass(name) {
+        if (this.hasClass(name)) {
+          this.attr('class', this.classes().filter(function (c) {
+            return c != name;
+          }).join(' '));
+        }
+
+        return this;
+      },
+      // Toggle the presence of a class on the node
+      toggleClass: function toggleClass(name) {
+        return this.hasClass(name) ? this.removeClass(name) : this.addClass(name);
+      },
+      // Get referenced element form attribute value
+      reference: function reference(attr) {
+        return SVG.get(this.attr(attr));
+      },
+      // Returns the parent element instance
+      parent: function parent(type) {
+        var parent = this;
+
+        // check for parent
+        if (!parent.node.parentNode) return null;
+
+        // get parent element
+        parent = SVG.adopt(parent.node.parentNode);
+
+        if (!type) return parent;
+
+        // loop trough ancestors if type is given
+        while (parent && parent.node instanceof window.SVGElement) {
+          if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent;
+          if (!parent.node.parentNode || parent.node.parentNode.nodeName == '#document') return null; // #759, #720
+          parent = SVG.adopt(parent.node.parentNode);
+        }
+      },
+      // Get parent document
+      doc: function doc() {
+        return this instanceof SVG.Doc ? this : this.parent(SVG.Doc);
+      },
+      // return array of all ancestors of given type up to the root svg
+      parents: function parents(type) {
+        var parents = [],
+            parent = this;
+
+        do {
+          parent = parent.parent(type);
+          if (!parent || !parent.node) break;
+
+          parents.push(parent);
+        } while (parent.parent);
+
+        return parents;
+      },
+      // matches the element vs a css selector
+      matches: function matches(selector) {
+        return _matches(this.node, selector);
+      },
+      // Returns the svg node to call native svg methods on it
+      native: function native() {
+        return this.node;
+      },
+      // Import raw svg
+      svg: function svg(_svg) {
+        // create temporary holder
+        var well = document.createElement('svg');
+
+        // act as a setter if svg is given
+        if (_svg && this instanceof SVG.Parent) {
+          // dump raw svg
+          well.innerHTML = '<svg>' + _svg.replace(/\n/, '').replace(/<([\w:-]+)([^<]+?)\/>/g, '<$1$2></$1>') + '</svg>';
+
+          // transplant nodes
+          for (var i = 0, il = well.firstChild.childNodes.length; i < il; i++) {
+            this.node.appendChild(well.firstChild.firstChild);
+          }
+
+          // otherwise act as a getter
+        } else {
+          // create a wrapping svg element in case of partial content
+          well.appendChild(_svg = document.createElement('svg'));
+
+          // write svgjs data to the dom
+          this.writeDataToDom();
+
+          // insert a copy of this node
+          _svg.appendChild(this.node.cloneNode(true));
+
+          // return target element
+          return well.innerHTML.replace(/^<svg>/, '').replace(/<\/svg>$/, '');
+        }
+
+        return this;
+      },
+      // write svgjs data to the dom
+      writeDataToDom: function writeDataToDom() {
+        // dump variables recursively
+        if (this.each || this.lines) {
+          var fn = this.each ? this : this.lines();
+          fn.each(function () {
+            this.writeDataToDom();
+          });
+        }
+
+        // remove previously set data
+        this.node.removeAttribute('svgjs:data');
+
+        if (Object.keys(this.dom).length) {
+          this.node.setAttribute('svgjs:data', JSON.stringify(this.dom));
+        } // see #428
+
+        return this;
+      },
+      // set given data to the elements data property
+      setData: function setData(o) {
+        this.dom = o;
+        return this;
+      },
+      is: function is(obj) {
+        return _is(this, obj);
+      }
+    }
+  });
+
+  SVG.easing = {
+    '-': function _(pos) {
+      return pos;
+    },
+    '<>': function _(pos) {
+      return -Math.cos(pos * Math.PI) / 2 + 0.5;
+    },
+    '>': function _(pos) {
+      return Math.sin(pos * Math.PI / 2);
+    },
+    '<': function _(pos) {
+      return -Math.cos(pos * Math.PI / 2) + 1;
+    }
+  };
+
+  SVG.morph = function (pos) {
+    return function (from, to) {
+      return new SVG.MorphObj(from, to).at(pos);
+    };
+  };
+
+  SVG.Situation = SVG.invent({
+
+    create: function create(o) {
+      this.init = false;
+      this.reversed = false;
+      this.reversing = false;
+
+      this.duration = new SVG.Number(o.duration).valueOf();
+      this.delay = new SVG.Number(o.delay).valueOf();
+
+      this.start = +new Date() + this.delay;
+      this.finish = this.start + this.duration;
+      this.ease = o.ease;
+
+      // this.loop is incremented from 0 to this.loops
+      // it is also incremented when in an infinite loop (when this.loops is true)
+      this.loop = 0;
+      this.loops = false;
+
+      this.animations = {
+        // functionToCall: [list of morphable objects]
+        // e.g. move: [SVG.Number, SVG.Number]
+      };
+
+      this.attrs = {
+        // holds all attributes which are not represented from a function svg.js provides
+        // e.g. someAttr: SVG.Number
+      };
+
+      this.styles = {
+        // holds all styles which should be animated
+        // e.g. fill-color: SVG.Color
+      };
+
+      this.transforms = [
+        // holds all transformations as transformation objects
+        // e.g. [SVG.Rotate, SVG.Translate, SVG.Matrix]
+      ];
+
+      this.once = {
+        // functions to fire at a specific position
+        // e.g. "0.5": function foo(){}
+      };
+    }
+
+  });
+
+  SVG.FX = SVG.invent({
+
+    create: function create(element) {
+      this._target = element;
+      this.situations = [];
+      this.active = false;
+      this.situation = null;
+      this.paused = false;
+      this.lastPos = 0;
+      this.pos = 0;
+      // The absolute position of an animation is its position in the context of its complete duration (including delay and loops)
+      // When performing a delay, absPos is below 0 and when performing a loop, its value is above 1
+      this.absPos = 0;
+      this._speed = 1;
+    },
+
+    extend: {
+
+      /**
+       * sets or returns the target of this animation
+       * @param o object || number In case of Object it holds all parameters. In case of number its the duration of the animation
+       * @param ease function || string Function which should be used for easing or easing keyword
+       * @param delay Number indicating the delay before the animation starts
+       * @return target || this
+       */
+      animate: function animate(o, ease, delay) {
+        if ((typeof o === 'undefined' ? 'undefined' : _typeof(o)) === 'object') {
+          ease = o.ease;
+          delay = o.delay;
+          o = o.duration;
+        }
+
+        var situation = new SVG.Situation({
+          duration: o || 1000,
+          delay: delay || 0,
+          ease: SVG.easing[ease || '-'] || ease
+        });
+
+        this.queue(situation);
+
+        return this;
+      },
+
+      /**
+      * sets a delay before the next element of the queue is called
+      * @param delay Duration of delay in milliseconds
+      * @return this.target()
+      */
+      delay: function delay(_delay) {
+        // The delay is performed by an empty situation with its duration
+        // attribute set to the duration of the delay
+        var situation = new SVG.Situation({
+          duration: _delay,
+          delay: 0,
+          ease: SVG.easing['-']
+        });
+
+        return this.queue(situation);
+      },
+
+      /**
+      * sets or returns the target of this animation
+      * @param null || target SVG.Element which should be set as new target
+      * @return target || this
+      */
+      target: function target(_target) {
+        if (_target && _target instanceof SVG.Element) {
+          this._target = _target;
+          return this;
+        }
+
+        return this._target;
+      },
+
+      // returns the absolute position at a given time
+      timeToAbsPos: function timeToAbsPos(timestamp) {
+        return (timestamp - this.situation.start) / (this.situation.duration / this._speed);
+      },
+
+      // returns the timestamp from a given absolute positon
+      absPosToTime: function absPosToTime(absPos) {
+        return this.situation.duration / this._speed * absPos + this.situation.start;
+      },
+
+      // starts the animationloop
+      startAnimFrame: function startAnimFrame() {
+        this.stopAnimFrame();
+        this.animationFrame = window.requestAnimationFrame(function () {
+          this.step();
+        }.bind(this));
+      },
+
+      // cancels the animationframe
+      stopAnimFrame: function stopAnimFrame() {
+        window.cancelAnimationFrame(this.animationFrame);
+      },
+
+      // kicks off the animation - only does something when the queue is currently not active and at least one situation is set
+      start: function start() {
+        // dont start if already started
+        if (!this.active && this.situation) {
+          this.active = true;
+          this.startCurrent();
+        }
+
+        return this;
+      },
+
+      // start the current situation
+      startCurrent: function startCurrent() {
+        this.situation.start = +new Date() + this.situation.delay / this._speed;
+        this.situation.finish = this.situation.start + this.situation.duration / this._speed;
+        return this.initAnimations().step();
+      },
+
+      /**
+      * adds a function / Situation to the animation queue
+      * @param fn function / situation to add
+      * @return this
+      */
+      queue: function queue(fn) {
+        if (typeof fn === 'function' || fn instanceof SVG.Situation) {
+          this.situations.push(fn);
+        }
+
+        if (!this.situation) this.situation = this.situations.shift();
+
+        return this;
+      },
+
+      /**
+      * pulls next element from the queue and execute it
+      * @return this
+      */
+      dequeue: function dequeue() {
+        // stop current animation
+        this.stop();
+
+        // get next animation from queue
+        this.situation = this.situations.shift();
+
+        if (this.situation) {
+          if (this.situation instanceof SVG.Situation) {
+            this.start();
+          } else {
+            // If it is not a SVG.Situation, then it is a function, we execute it
+            this.situation.call(this);
+          }
+        }
+
+        return this;
+      },
+
+      // updates all animations to the current state of the element
+      // this is important when one property could be changed from another property
+      initAnimations: function initAnimations() {
+        var i, j, source;
+        var s = this.situation;
+
+        if (s.init) return this;
+
+        for (i in s.animations) {
+          source = this.target()[i]();
+
+          if (!Array.isArray(source)) {
+            source = [source];
+          }
+
+          if (!Array.isArray(s.animations[i])) {
+            s.animations[i] = [s.animations[i]];
+          }
+
+          // if(s.animations[i].length > source.length) {
+          //  source.concat = source.concat(s.animations[i].slice(source.length, s.animations[i].length))
+          // }
+
+          for (j = source.length; j--;) {
+            // The condition is because some methods return a normal number instead
+            // of a SVG.Number
+            if (s.animations[i][j] instanceof SVG.Number) {
+              source[j] = new SVG.Number(source[j]);
+            }
+
+            s.animations[i][j] = source[j].morph(s.animations[i][j]);
+          }
+        }
+
+        for (i in s.attrs) {
+          s.attrs[i] = new SVG.MorphObj(this.target().attr(i), s.attrs[i]);
+        }
+
+        for (i in s.styles) {
+          s.styles[i] = new SVG.MorphObj(this.target().style(i), s.styles[i]);
+        }
+
+        s.initialTransformation = this.target().matrixify();
+
+        s.init = true;
+        return this;
+      },
+      clearQueue: function clearQueue() {
+        this.situations = [];
+        return this;
+      },
+      clearCurrent: function clearCurrent() {
+        this.situation = null;
+        return this;
+      },
+      /** stops the animation immediately
+      * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately.
+      * @param clearQueue A Boolean indicating whether to remove queued animation as well.
+      * @return this
+      */
+      stop: function stop(jumpToEnd, clearQueue) {
+        var active = this.active;
+        this.active = false;
+
+        if (clearQueue) {
+          this.clearQueue();
+        }
+
+        if (jumpToEnd && this.situation) {
+          // initialize the situation if it was not
+          !active && this.startCurrent();
+          this.atEnd();
+        }
+
+        this.stopAnimFrame();
+
+        return this.clearCurrent();
+      },
+
+      /** resets the element to the state where the current element has started
+      * @return this
+      */
+      reset: function reset() {
+        if (this.situation) {
+          var temp = this.situation;
+          this.stop();
+          this.situation = temp;
+          this.atStart();
+        }
+        return this;
+      },
+
+      // Stop the currently-running animation, remove all queued animations, and complete all animations for the element.
+      finish: function finish() {
+        this.stop(true, false);
+
+        while (this.dequeue().situation && this.stop(true, false)) {}
+
+        this.clearQueue().clearCurrent();
+
+        return this;
+      },
+
+      // set the internal animation pointer at the start position, before any loops, and updates the visualisation
+      atStart: function atStart() {
+        return this.at(0, true);
+      },
+
+      // set the internal animation pointer at the end position, after all the loops, and updates the visualisation
+      atEnd: function atEnd() {
+        if (this.situation.loops === true) {
+          // If in a infinite loop, we end the current iteration
+          this.situation.loops = this.situation.loop + 1;
+        }
+
+        if (typeof this.situation.loops === 'number') {
+          // If performing a finite number of loops, we go after all the loops
+          return this.at(this.situation.loops, true);
+        } else {
+          // If no loops, we just go at the end
+          return this.at(1, true);
+        }
+      },
+
+      // set the internal animation pointer to the specified position and updates the visualisation
+      // if isAbsPos is true, pos is treated as an absolute position
+      at: function at(pos, isAbsPos) {
+        var durDivSpd = this.situation.duration / this._speed;
+
+        this.absPos = pos;
+        // If pos is not an absolute position, we convert it into one
+        if (!isAbsPos) {
+          if (this.situation.reversed) this.absPos = 1 - this.absPos;
+          this.absPos += this.situation.loop;
+        }
+
+        this.situation.start = +new Date() - this.absPos * durDivSpd;
+        this.situation.finish = this.situation.start + durDivSpd;
+
+        return this.step(true);
+      },
+
+      /**
+      * sets or returns the speed of the animations
+      * @param speed null || Number The new speed of the animations
+      * @return Number || this
+      */
+      speed: function speed(_speed) {
+        if (_speed === 0) return this.pause();
+
+        if (_speed) {
+          this._speed = _speed;
+          // We use an absolute position here so that speed can affect the delay before the animation
+          return this.at(this.absPos, true);
+        } else return this._speed;
+      },
+
+      // Make loopable
+      loop: function loop(times, reverse) {
+        var c = this.last();
+
+        // store total loops
+        c.loops = times != null ? times : true;
+        c.loop = 0;
+
+        if (reverse) c.reversing = true;
+        return this;
+      },
+
+      // pauses the animation
+      pause: function pause() {
+        this.paused = true;
+        this.stopAnimFrame();
+
+        return this;
+      },
+
+      // unpause the animation
+      play: function play() {
+        if (!this.paused) return this;
+        this.paused = false;
+        // We use an absolute position here so that the delay before the animation can be paused
+        return this.at(this.absPos, true);
+      },
+
+      /**
+      * toggle or set the direction of the animation
+      * true sets direction to backwards while false sets it to forwards
+      * @param reversed Boolean indicating whether to reverse the animation or not (default: toggle the reverse status)
+      * @return this
+      */
+      reverse: function reverse(reversed) {
+        var c = this.last();
+
+        if (typeof reversed === 'undefined') c.reversed = !c.reversed;else c.reversed = reversed;
+
+        return this;
+      },
+
+      /**
+      * returns a float from 0-1 indicating the progress of the current animation
+      * @param eased Boolean indicating whether the returned position should be eased or not
+      * @return number
+      */
+      progress: function progress(easeIt) {
+        return easeIt ? this.situation.ease(this.pos) : this.pos;
+      },
+
+      /**
+      * adds a callback function which is called when the current animation is finished
+      * @param fn Function which should be executed as callback
+      * @return number
+      */
+      after: function after(fn) {
+        var c = this.last(),
+            wrapper = function wrapper(e) {
+          if (e.detail.situation == c) {
+            fn.call(this, c);
+            this.off('finished.fx', wrapper); // prevent memory leak
+          }
+        };
+
+        this.target().on('finished.fx', wrapper);
+
+        return this._callStart();
+      },
+
+      // adds a callback which is called whenever one animation step is performed
+      during: function during(fn) {
+        var c = this.last(),
+            wrapper = function wrapper(e) {
+          if (e.detail.situation == c) {
+            fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, c);
+          }
+        };
+
+        // see above
+        this.target().off('during.fx', wrapper).on('during.fx', wrapper);
+
+        this.after(function () {
+          this.off('during.fx', wrapper);
+        });
+
+        return this._callStart();
+      },
+
+      // calls after ALL animations in the queue are finished
+      afterAll: function afterAll(fn) {
+        var wrapper = function wrapper(e) {
+          fn.call(this);
+          this.off('allfinished.fx', wrapper);
+        };
+
+        // see above
+        this.target().off('allfinished.fx', wrapper).on('allfinished.fx', wrapper);
+
+        return this._callStart();
+      },
+
+      // calls on every animation step for all animations
+      duringAll: function duringAll(fn) {
+        var wrapper = function wrapper(e) {
+          fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, e.detail.situation);
+        };
+
+        this.target().off('during.fx', wrapper).on('during.fx', wrapper);
+
+        this.afterAll(function () {
+          this.off('during.fx', wrapper);
+        });
+
+        return this._callStart();
+      },
+
+      last: function last() {
+        return this.situations.length ? this.situations[this.situations.length - 1] : this.situation;
+      },
+
+      // adds one property to the animations
+      add: function add(method, args, type) {
+        this.last()[type || 'animations'][method] = args;
+        return this._callStart();
+      },
+
+      /** perform one step of the animation
+      *  @param ignoreTime Boolean indicating whether to ignore time and use position directly or recalculate position based on time
+      *  @return this
+      */
+      step: function step(ignoreTime) {
+        // convert current time to an absolute position
+        if (!ignoreTime) this.absPos = this.timeToAbsPos(+new Date());
+
+        // This part convert an absolute position to a position
+        if (this.situation.loops !== false) {
+          var absPos, absPosInt, lastLoop;
+
+          // If the absolute position is below 0, we just treat it as if it was 0
+          absPos = Math.max(this.absPos, 0);
+          absPosInt = Math.floor(absPos);
+
+          if (this.situation.loops === true || absPosInt < this.situation.loops) {
+            this.pos = absPos - absPosInt;
+            lastLoop = this.situation.loop;
+            this.situation.loop = absPosInt;
+          } else {
+            this.absPos = this.situation.loops;
+            this.pos = 1;
+            // The -1 here is because we don't want to toggle reversed when all the loops have been completed
+            lastLoop = this.situation.loop - 1;
+            this.situation.loop = this.situation.loops;
+          }
+
+          if (this.situation.reversing) {
+            // Toggle reversed if an odd number of loops as occured since the last call of step
+            this.situation.reversed = this.situation.reversed != Boolean((this.situation.loop - lastLoop) % 2);
+          }
+        } else {
+          // If there are no loop, the absolute position must not be above 1
+          this.absPos = Math.min(this.absPos, 1);
+          this.pos = this.absPos;
+        }
+
+        // while the absolute position can be below 0, the position must not be below 0
+        if (this.pos < 0) this.pos = 0;
+
+        if (this.situation.reversed) this.pos = 1 - this.pos;
+
+        // apply easing
+        var eased = this.situation.ease(this.pos);
+
+        // call once-callbacks
+        for (var i in this.situation.once) {
+          if (i > this.lastPos && i <= eased) {
+            this.situation.once[i].call(this.target(), this.pos, eased);
+            delete this.situation.once[i];
+          }
+        }
+
+        // fire during callback with position, eased position and current situation as parameter
+        if (this.active) this.target().fire('during', { pos: this.pos, eased: eased, fx: this, situation: this.situation });
+
+        // the user may call stop or finish in the during callback
+        // so make sure that we still have a valid situation
+        if (!this.situation) {
+          return this;
+        }
+
+        // apply the actual animation to every property
+        this.eachAt();
+
+        // do final code when situation is finished
+        if (this.pos == 1 && !this.situation.reversed || this.situation.reversed && this.pos == 0) {
+          // stop animation callback
+          this.stopAnimFrame();
+
+          // fire finished callback with current situation as parameter
+          this.target().fire('finished', { fx: this, situation: this.situation });
+
+          if (!this.situations.length) {
+            this.target().fire('allfinished');
+
+            // Recheck the length since the user may call animate in the afterAll callback
+            if (!this.situations.length) {
+              this.target().off('.fx'); // there shouldnt be any binding left, but to make sure...
+              this.active = false;
+            }
+          }
+
+          // start next animation
+          if (this.active) this.dequeue();else this.clearCurrent();
+        } else if (!this.paused && this.active) {
+          // we continue animating when we are not at the end
+          this.startAnimFrame();
+        }
+
+        // save last eased position for once callback triggering
+        this.lastPos = eased;
+        return this;
+      },
+
+      // calculates the step for every property and calls block with it
+      eachAt: function eachAt() {
+        var i,
+            len,
+            at,
+            self = this,
+            target = this.target(),
+            s = this.situation;
+
+        // apply animations which can be called trough a method
+        for (i in s.animations) {
+          at = [].concat(s.animations[i]).map(function (el) {
+            return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+          });
+
+          target[i].apply(target, at);
+        }
+
+        // apply animation which has to be applied with attr()
+        for (i in s.attrs) {
+          at = [i].concat(s.attrs[i]).map(function (el) {
+            return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+          });
+
+          target.attr.apply(target, at);
+        }
+
+        // apply animation which has to be applied with style()
+        for (i in s.styles) {
+          at = [i].concat(s.styles[i]).map(function (el) {
+            return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+          });
+
+          target.style.apply(target, at);
+        }
+
+        // animate initialTransformation which has to be chained
+        if (s.transforms.length) {
+          // get initial initialTransformation
+          at = s.initialTransformation;
+          for (i = 0, len = s.transforms.length; i < len; i++) {
+            // get next transformation in chain
+            var a = s.transforms[i];
+
+            // multiply matrix directly
+            if (a instanceof SVG.Matrix) {
+              if (a.relative) {
+                at = at.multiply(new SVG.Matrix().morph(a).at(s.ease(this.pos)));
+              } else {
+                at = at.morph(a).at(s.ease(this.pos));
+              }
+              continue;
+            }
+
+            // when transformation is absolute we have to reset the needed transformation first
+            if (!a.relative) {
+              a.undo(at.extract());
+            }
+
+            // and reapply it after
+            at = at.multiply(a.at(s.ease(this.pos)));
+          }
+
+          // set new matrix on element
+          target.matrix(at);
+        }
+
+        return this;
+      },
+
+      // adds an once-callback which is called at a specific position and never again
+      once: function once(pos, fn, isEased) {
+        var c = this.last();
+        if (!isEased) pos = c.ease(pos);
+
+        c.once[pos] = fn;
+
+        return this;
+      },
+
+      _callStart: function _callStart() {
+        setTimeout(function () {
+          this.start();
+        }.bind(this), 0);
+        return this;
+      }
+
+    },
+
+    parent: SVG.Element,
+
+    // Add method to parent elements
+    construct: {
+      // Get fx module or create a new one, then animate with given duration and ease
+      animate: function animate(o, ease, delay) {
+        return (this.fx || (this.fx = new SVG.FX(this))).animate(o, ease, delay);
+      },
+      delay: function delay(_delay2) {
+        return (this.fx || (this.fx = new SVG.FX(this))).delay(_delay2);
+      },
+      stop: function stop(jumpToEnd, clearQueue) {
+        if (this.fx) {
+          this.fx.stop(jumpToEnd, clearQueue);
+        }
+
+        return this;
+      },
+      finish: function finish() {
+        if (this.fx) {
+          this.fx.finish();
+        }
+
+        return this;
+      },
+      // Pause current animation
+      pause: function pause() {
+        if (this.fx) {
+          this.fx.pause();
+        }
+
+        return this;
+      },
+      // Play paused current animation
+      play: function play() {
+        if (this.fx) {
+          this.fx.play();
+        }
+
+        return this;
+      },
+      // Set/Get the speed of the animations
+      speed: function speed(_speed2) {
+        if (this.fx) {
+          if (_speed2 == null) {
+            return this.fx.speed();
+          } else {
+            this.fx.speed(_speed2);
+          }
+        }
+
+        return this;
+      }
+    }
+
+  });
+
+  // MorphObj is used whenever no morphable object is given
+  SVG.MorphObj = SVG.invent({
+
+    create: function create(from, to) {
+      // prepare color for morphing
+      if (SVG.Color.isColor(to)) return new SVG.Color(from).morph(to);
+      // check if we have a list of values
+      if (SVG.regex.delimiter.test(from)) {
+        // prepare path for morphing
+        if (SVG.regex.pathLetters.test(from)) return new SVG.PathArray(from).morph(to);
+        // prepare value list for morphing
+        else return new SVG.Array(from).morph(to);
+      }
+      // prepare number for morphing
+      if (SVG.regex.numberAndUnit.test(to)) return new SVG.Number(from).morph(to);
+
+      // prepare for plain morphing
+      this.value = from;
+      this.destination = to;
+    },
+
+    extend: {
+      at: function at(pos, real) {
+        return real < 1 ? this.value : this.destination;
+      },
+
+      valueOf: function valueOf() {
+        return this.value;
+      }
+    }
+
+  });
+
+  SVG.extend(SVG.FX, {
+    // Add animatable attributes
+    attr: function attr(a, v, relative) {
+      // apply attributes individually
+      if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {
+        for (var key in a) {
+          this.attr(key, a[key]);
+        }
+      } else {
+        this.add(a, v, 'attrs');
+      }
+
+      return this;
+    },
+    // Add animatable styles
+    style: function style(s, v) {
+      if ((typeof s === 'undefined' ? 'undefined' : _typeof(s)) === 'object') {
+        for (var key in s) {
+          this.style(key, s[key]);
+        }
+      } else {
+        this.add(s, v, 'styles');
+      }
+
+      return this;
+    },
+    // Animatable x-axis
+    x: function x(_x2, relative) {
+      if (this.target() instanceof SVG.G) {
+        this.transform({ x: _x2 }, relative);
+        return this;
+      }
+
+      var num = new SVG.Number(_x2);
+      num.relative = relative;
+      return this.add('x', num);
+    },
+    // Animatable y-axis
+    y: function y(_y2, relative) {
+      if (this.target() instanceof SVG.G) {
+        this.transform({ y: _y2 }, relative);
+        return this;
+      }
+
+      var num = new SVG.Number(_y2);
+      num.relative = relative;
+      return this.add('y', num);
+    },
+    // Animatable center x-axis
+    cx: function cx(x) {
+      return this.add('cx', new SVG.Number(x));
+    },
+    // Animatable center y-axis
+    cy: function cy(y) {
+      return this.add('cy', new SVG.Number(y));
+    },
+    // Add animatable move
+    move: function move(x, y) {
+      return this.x(x).y(y);
+    },
+    // Add animatable center
+    center: function center(x, y) {
+      return this.cx(x).cy(y);
+    },
+    // Add animatable size
+    size: function size(width, height) {
+      if (this.target() instanceof SVG.Text) {
+        // animate font size for Text elements
+        this.attr('font-size', width);
+      } else {
+        // animate bbox based size for all other elements
+        var box;
+
+        if (!width || !height) {
+          box = this.target().bbox();
+        }
+
+        if (!width) {
+          width = box.width / box.height * height;
+        }
+
+        if (!height) {
+          height = box.height / box.width * width;
+        }
+
+        this.add('width', new SVG.Number(width)).add('height', new SVG.Number(height));
+      }
+
+      return this;
+    },
+    // Add animatable width
+    width: function width(_width2) {
+      return this.add('width', new SVG.Number(_width2));
+    },
+    // Add animatable height
+    height: function height(_height2) {
+      return this.add('height', new SVG.Number(_height2));
+    },
+    // Add animatable plot
+    plot: function plot(a, b, c, d) {
+      // Lines can be plotted with 4 arguments
+      if (arguments.length == 4) {
+        return this.plot([a, b, c, d]);
+      }
+
+      return this.add('plot', new (this.target().morphArray)(a));
+    },
+    // Add leading method
+    leading: function leading(value) {
+      return this.target().leading ? this.add('leading', new SVG.Number(value)) : this;
+    },
+    // Add animatable viewbox
+    viewbox: function viewbox(x, y, width, height) {
+      if (this.target() instanceof SVG.Container) {
+        this.add('viewbox', new SVG.ViewBox(x, y, width, height));
+      }
+
+      return this;
+    },
+    update: function update(o) {
+      if (this.target() instanceof SVG.Stop) {
+        if (typeof o === 'number' || o instanceof SVG.Number) {
+          return this.update({
+            offset: arguments[0],
+            color: arguments[1],
+            opacity: arguments[2]
+          });
+        }
+
+        if (o.opacity != null) this.attr('stop-opacity', o.opacity);
+        if (o.color != null) this.attr('stop-color', o.color);
+        if (o.offset != null) this.attr('offset', o.offset);
+      }
+
+      return this;
+    }
+  });
+
+  SVG.Box = SVG.invent({
+    create: function create(x, y, width, height) {
+      if ((typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && !(x instanceof SVG.Element)) {
+        // chromes getBoundingClientRect has no x and y property
+        return SVG.Box.call(this, x.left != null ? x.left : x.x, x.top != null ? x.top : x.y, x.width, x.height);
+      } else if (arguments.length == 4) {
+        this.x = x;
+        this.y = y;
+        this.width = width;
+        this.height = height;
+      }
+
+      // add center, right, bottom...
+      fullBox(this);
+    },
+    extend: {
+      // Merge rect box with another, return a new instance
+      merge: function merge(box) {
+        var b = new this.constructor();
+
+        // merge boxes
+        b.x = Math.min(this.x, box.x);
+        b.y = Math.min(this.y, box.y);
+        b.width = Math.max(this.x + this.width, box.x + box.width) - b.x;
+        b.height = Math.max(this.y + this.height, box.y + box.height) - b.y;
+
+        return fullBox(b);
+      },
+
+      transform: function transform(m) {
+        var xMin = Infinity,
+            xMax = -Infinity,
+            yMin = Infinity,
+            yMax = -Infinity,
+            p,
+            bbox;
+
+        var pts = [new SVG.Point(this.x, this.y), new SVG.Point(this.x2, this.y), new SVG.Point(this.x, this.y2), new SVG.Point(this.x2, this.y2)];
+
+        pts.forEach(function (p) {
+          p = p.transform(m);
+          xMin = Math.min(xMin, p.x);
+          xMax = Math.max(xMax, p.x);
+          yMin = Math.min(yMin, p.y);
+          yMax = Math.max(yMax, p.y);
+        });
+
+        bbox = new this.constructor();
+        bbox.x = xMin;
+        bbox.width = xMax - xMin;
+        bbox.y = yMin;
+        bbox.height = yMax - yMin;
+
+        fullBox(bbox);
+
+        return bbox;
+      }
+    }
+  });
+
+  SVG.BBox = SVG.invent({
+    // Initialize
+    create: function create(element) {
+      SVG.Box.apply(this, [].slice.call(arguments));
+
+      // get values if element is given
+      if (element instanceof SVG.Element) {
+        var box;
+
+        // yes this is ugly, but Firefox can be a pain when it comes to elements that are not yet rendered
+        try {
+          if (!document.documentElement.contains) {
+            // This is IE - it does not support contains() for top-level SVGs
+            var topParent = element.node;
+            while (topParent.parentNode) {
+              topParent = topParent.parentNode;
+            }
+            if (topParent != document) throw new Error('Element not in the dom');
+          } else {}
+          // the element is NOT in the dom, throw error
+          // disabling the check below which fixes issue #76
+          // if (!document.documentElement.contains(element.node)) throw new Exception('Element not in the dom')
+
+
+          // find native bbox
+          box = element.node.getBBox();
+        } catch (e) {
+          if (element instanceof SVG.Shape) {
+            if (!SVG.parser.draw) {
+              // fixes apexcharts/vue-apexcharts #14
+              SVG.prepare();
+            }
+            var clone = element.clone(SVG.parser.draw.instance).show();
+            box = clone.node.getBBox();
+            clone.remove();
+          } else {
+            box = {
+              x: element.node.clientLeft,
+              y: element.node.clientTop,
+              width: element.node.clientWidth,
+              height: element.node.clientHeight
+            };
+          }
+        }
+
+        SVG.Box.call(this, box);
+      }
+    },
+
+    // Define ancestor
+    inherit: SVG.Box,
+
+    // Define Parent
+    parent: SVG.Element,
+
+    // Constructor
+    construct: {
+      // Get bounding box
+      bbox: function bbox() {
+        return new SVG.BBox(this);
+      }
+    }
+
+  });
+
+  SVG.BBox.prototype.constructor = SVG.BBox;
+
+  SVG.extend(SVG.Element, {
+    tbox: function tbox() {
+      console.warn('Use of TBox is deprecated and mapped to RBox. Use .rbox() instead.');
+      return this.rbox(this.doc());
+    }
+  });
+
+  SVG.RBox = SVG.invent({
+    // Initialize
+    create: function create(element) {
+      SVG.Box.apply(this, [].slice.call(arguments));
+
+      if (element instanceof SVG.Element) {
+        SVG.Box.call(this, element.node.getBoundingClientRect());
+      }
+    },
+
+    inherit: SVG.Box,
+
+    // define Parent
+    parent: SVG.Element,
+
+    extend: {
+      addOffset: function addOffset() {
+        // offset by window scroll position, because getBoundingClientRect changes when window is scrolled
+        this.x += window.pageXOffset;
+        this.y += window.pageYOffset;
+        return this;
+      }
+    },
+
+    // Constructor
+    construct: {
+      // Get rect box
+      rbox: function rbox(el) {
+        if (el) return new SVG.RBox(this).transform(el.screenCTM().inverse());
+        return new SVG.RBox(this).addOffset();
+      }
+    }
+
+  });
+
+  SVG.RBox.prototype.constructor = SVG.RBox;
+
+  SVG.Matrix = SVG.invent({
+    // Initialize
+    create: function create(source) {
+      var i,
+          base = arrayToMatrix([1, 0, 0, 1, 0, 0]);
+
+      // ensure source as object
+      source = source instanceof SVG.Element ? source.matrixify() : typeof source === 'string' ? arrayToMatrix(source.split(SVG.regex.delimiter).map(parseFloat)) : arguments.length == 6 ? arrayToMatrix([].slice.call(arguments)) : Array.isArray(source) ? arrayToMatrix(source) : (typeof source === 'undefined' ? 'undefined' : _typeof(source)) === 'object' ? source : base;
+
+      // merge source
+      for (i = abcdef.length - 1; i >= 0; --i) {
+        this[abcdef[i]] = source[abcdef[i]] != null ? source[abcdef[i]] : base[abcdef[i]];
+      }
+    },
+
+    // Add methods
+    extend: {
+      // Extract individual transformations
+      extract: function extract() {
+        // find delta transform points
+        var px = deltaTransformPoint(this, 0, 1),
+            py = deltaTransformPoint(this, 1, 0),
+            skewX = 180 / Math.PI * Math.atan2(px.y, px.x) - 90;
+
+        return {
+          // translation
+          x: this.e,
+          y: this.f,
+          transformedX: (this.e * Math.cos(skewX * Math.PI / 180) + this.f * Math.sin(skewX * Math.PI / 180)) / Math.sqrt(this.a * this.a + this.b * this.b),
+          transformedY: (this.f * Math.cos(skewX * Math.PI / 180) + this.e * Math.sin(-skewX * Math.PI / 180)) / Math.sqrt(this.c * this.c + this.d * this.d),
+          // skew
+          skewX: -skewX,
+          skewY: 180 / Math.PI * Math.atan2(py.y, py.x),
+          // scale
+          scaleX: Math.sqrt(this.a * this.a + this.b * this.b),
+          scaleY: Math.sqrt(this.c * this.c + this.d * this.d),
+          // rotation
+          rotation: skewX,
+          a: this.a,
+          b: this.b,
+          c: this.c,
+          d: this.d,
+          e: this.e,
+          f: this.f,
+          matrix: new SVG.Matrix(this)
+        };
+      },
+      // Clone matrix
+      clone: function clone() {
+        return new SVG.Matrix(this);
+      },
+      // Morph one matrix into another
+      morph: function morph(matrix) {
+        // store new destination
+        this.destination = new SVG.Matrix(matrix);
+
+        return this;
+      },
+      // Get morphed matrix at a given position
+      at: function at(pos) {
+        // make sure a destination is defined
+        if (!this.destination) return this;
+
+        // calculate morphed matrix at a given position
+        var matrix = new SVG.Matrix({
+          a: this.a + (this.destination.a - this.a) * pos,
+          b: this.b + (this.destination.b - this.b) * pos,
+          c: this.c + (this.destination.c - this.c) * pos,
+          d: this.d + (this.destination.d - this.d) * pos,
+          e: this.e + (this.destination.e - this.e) * pos,
+          f: this.f + (this.destination.f - this.f) * pos
+        });
+
+        return matrix;
+      },
+      // Multiplies by given matrix
+      multiply: function multiply(matrix) {
+        return new SVG.Matrix(this.native().multiply(parseMatrix(matrix).native()));
+      },
+      // Inverses matrix
+      inverse: function inverse() {
+        return new SVG.Matrix(this.native().inverse());
+      },
+      // Translate matrix
+      translate: function translate(x, y) {
+        return new SVG.Matrix(this.native().translate(x || 0, y || 0));
+      },
+      // Scale matrix
+      scale: function scale(x, y, cx, cy) {
+        // support uniformal scale
+        if (arguments.length == 1) {
+          y = x;
+        } else if (arguments.length == 3) {
+          cy = cx;
+          cx = y;
+          y = x;
+        }
+
+        return this.around(cx, cy, new SVG.Matrix(x, 0, 0, y, 0, 0));
+      },
+      // Rotate matrix
+      rotate: function rotate(r, cx, cy) {
+        // convert degrees to radians
+        r = SVG.utils.radians(r);
+
+        return this.around(cx, cy, new SVG.Matrix(Math.cos(r), Math.sin(r), -Math.sin(r), Math.cos(r), 0, 0));
+      },
+      // Flip matrix on x or y, at a given offset
+      flip: function flip(a, o) {
+        return a == 'x' ? this.scale(-1, 1, o, 0) : a == 'y' ? this.scale(1, -1, 0, o) : this.scale(-1, -1, a, o != null ? o : a);
+      },
+      // Skew
+      skew: function skew(x, y, cx, cy) {
+        // support uniformal skew
+        if (arguments.length == 1) {
+          y = x;
+        } else if (arguments.length == 3) {
+          cy = cx;
+          cx = y;
+          y = x;
+        }
+
+        // convert degrees to radians
+        x = SVG.utils.radians(x);
+        y = SVG.utils.radians(y);
+
+        return this.around(cx, cy, new SVG.Matrix(1, Math.tan(y), Math.tan(x), 1, 0, 0));
+      },
+      // SkewX
+      skewX: function skewX(x, cx, cy) {
+        return this.skew(x, 0, cx, cy);
+      },
+      // SkewY
+      skewY: function skewY(y, cx, cy) {
+        return this.skew(0, y, cx, cy);
+      },
+      // Transform around a center point
+      around: function around(cx, cy, matrix) {
+        return this.multiply(new SVG.Matrix(1, 0, 0, 1, cx || 0, cy || 0)).multiply(matrix).multiply(new SVG.Matrix(1, 0, 0, 1, -cx || 0, -cy || 0));
+      },
+      // Convert to native SVGMatrix
+      native: function native() {
+        // create new matrix
+        var matrix = SVG.parser.native.createSVGMatrix();
+
+        // update with current values
+        for (var i = abcdef.length - 1; i >= 0; i--) {
+          matrix[abcdef[i]] = this[abcdef[i]];
+        }
+
+        return matrix;
+      },
+      // Convert matrix to string
+      toString: function toString() {
+        // Construct the matrix directly, avoid values that are too small
+        return 'matrix(' + float32String(this.a) + ',' + float32String(this.b) + ',' + float32String(this.c) + ',' + float32String(this.d) + ',' + float32String(this.e) + ',' + float32String(this.f) + ')';
+      }
+    },
+
+    // Define parent
+    parent: SVG.Element,
+
+    // Add parent method
+    construct: {
+      // Get current matrix
+      ctm: function ctm() {
+        return new SVG.Matrix(this.node.getCTM());
+      },
+      // Get current screen matrix
+      screenCTM: function screenCTM() {
+        /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537
+           This is needed because FF does not return the transformation matrix
+           for the inner coordinate system when getScreenCTM() is called on nested svgs.
+           However all other Browsers do that */
+        if (this instanceof SVG.Nested) {
+          var rect = this.rect(1, 1);
+          var m = rect.node.getScreenCTM();
+          rect.remove();
+          return new SVG.Matrix(m);
+        }
+        return new SVG.Matrix(this.node.getScreenCTM());
+      }
+
+    }
+
+  });
+
+  SVG.Point = SVG.invent({
+    // Initialize
+    create: function create(x, y) {
+      var i,
+          source,
+          base = { x: 0, y: 0
+
+        // ensure source as object
+      };source = Array.isArray(x) ? { x: x[0], y: x[1] } : (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' ? { x: x.x, y: x.y } : x != null ? { x: x, y: y != null ? y : x } : base; // If y has no value, then x is used has its value
+
+      // merge source
+      this.x = source.x;
+      this.y = source.y;
+    },
+
+    // Add methods
+    extend: {
+      // Clone point
+      clone: function clone() {
+        return new SVG.Point(this);
+      },
+      // Morph one point into another
+      morph: function morph(x, y) {
+        // store new destination
+        this.destination = new SVG.Point(x, y);
+
+        return this;
+      },
+      // Get morphed point at a given position
+      at: function at(pos) {
+        // make sure a destination is defined
+        if (!this.destination) return this;
+
+        // calculate morphed matrix at a given position
+        var point = new SVG.Point({
+          x: this.x + (this.destination.x - this.x) * pos,
+          y: this.y + (this.destination.y - this.y) * pos
+        });
+
+        return point;
+      },
+      // Convert to native SVGPoint
+      native: function native() {
+        // create new point
+        var point = SVG.parser.native.createSVGPoint();
+
+        // update with current values
+        point.x = this.x;
+        point.y = this.y;
+
+        return point;
+      },
+      // transform point with matrix
+      transform: function transform(matrix) {
+        return new SVG.Point(this.native().matrixTransform(matrix.native()));
+      }
+
+    }
+
+  });
+
+  SVG.extend(SVG.Element, {
+
+    // Get point
+    point: function point(x, y) {
+      return new SVG.Point(x, y).transform(this.screenCTM().inverse());
+    }
+
+  });
+
+  SVG.extend(SVG.Element, {
+    // Set svg element attribute
+    attr: function attr(a, v, n) {
+      // act as full getter
+      if (a == null) {
+        // get an object of attributes
+        a = {};
+        v = this.node.attributes;
+        for (n = v.length - 1; n >= 0; n--) {
+          a[v[n].nodeName] = SVG.regex.isNumber.test(v[n].nodeValue) ? parseFloat(v[n].nodeValue) : v[n].nodeValue;
+        }
+
+        return a;
+      } else if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {
+        // apply every attribute individually if an object is passed
+        for (v in a) {
+          this.attr(v, a[v]);
+        }
+      } else if (v === null) {
+        // remove value
+        this.node.removeAttribute(a);
+      } else if (v == null) {
+        // act as a getter if the first and only argument is not an object
+        v = this.node.getAttribute(a);
+        return v == null ? SVG.defaults.attrs[a] : SVG.regex.isNumber.test(v) ? parseFloat(v) : v;
+      } else {
+        // BUG FIX: some browsers will render a stroke if a color is given even though stroke width is 0
+        if (a == 'stroke-width') {
+          this.attr('stroke', parseFloat(v) > 0 ? this._stroke : null);
+        } else if (a == 'stroke') {
+          this._stroke = v;
+        }
+
+        // convert image fill and stroke to patterns
+        if (a == 'fill' || a == 'stroke') {
+          if (SVG.regex.isImage.test(v)) {
+            v = this.doc().defs().image(v, 0, 0);
+          }
+
+          if (v instanceof SVG.Image) {
+            v = this.doc().defs().pattern(0, 0, function () {
+              this.add(v);
+            });
+          }
+        }
+
+        // ensure correct numeric values (also accepts NaN and Infinity)
+        if (typeof v === 'number') {
+          v = new SVG.Number(v);
+        }
+
+        // ensure full hex color
+        else if (SVG.Color.isColor(v)) {
+            v = new SVG.Color(v);
+          }
+
+          // parse array values
+          else if (Array.isArray(v)) {
+              v = new SVG.Array(v);
+            }
+
+        // if the passed attribute is leading...
+        if (a == 'leading') {
+          // ... call the leading method instead
+          if (this.leading) {
+            this.leading(v);
+          }
+        } else {
+          // set given attribute on node
+          typeof n === 'string' ? this.node.setAttributeNS(n, a, v.toString()) : this.node.setAttribute(a, v.toString());
+        }
+
+        // rebuild if required
+        if (this.rebuild && (a == 'font-size' || a == 'x')) {
+          this.rebuild(a, v);
+        }
+      }
+
+      return this;
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Add transformations
+    transform: function transform(o, relative) {
+      // get target in case of the fx module, otherwise reference this
+      var target = this,
+          matrix,
+          bbox;
+
+      // act as a getter
+      if ((typeof o === 'undefined' ? 'undefined' : _typeof(o)) !== 'object') {
+        // get current matrix
+        matrix = new SVG.Matrix(target).extract();
+
+        return typeof o === 'string' ? matrix[o] : matrix;
+      }
+
+      // get current matrix
+      matrix = new SVG.Matrix(target);
+
+      // ensure relative flag
+      relative = !!relative || !!o.relative;
+
+      // act on matrix
+      if (o.a != null) {
+        matrix = relative
+        // relative
+        ? matrix.multiply(new SVG.Matrix(o))
+        // absolute
+        : new SVG.Matrix(o);
+
+        // act on rotation
+      } else if (o.rotation != null) {
+        // ensure centre point
+        ensureCentre(o, target);
+
+        // apply transformation
+        matrix = relative
+        // relative
+        ? matrix.rotate(o.rotation, o.cx, o.cy)
+        // absolute
+        : matrix.rotate(o.rotation - matrix.extract().rotation, o.cx, o.cy);
+
+        // act on scale
+      } else if (o.scale != null || o.scaleX != null || o.scaleY != null) {
+        // ensure centre point
+        ensureCentre(o, target);
+
+        // ensure scale values on both axes
+        o.scaleX = o.scale != null ? o.scale : o.scaleX != null ? o.scaleX : 1;
+        o.scaleY = o.scale != null ? o.scale : o.scaleY != null ? o.scaleY : 1;
+
+        if (!relative) {
+          // absolute; multiply inversed values
+          var e = matrix.extract();
+          o.scaleX = o.scaleX * 1 / e.scaleX;
+          o.scaleY = o.scaleY * 1 / e.scaleY;
+        }
+
+        matrix = matrix.scale(o.scaleX, o.scaleY, o.cx, o.cy);
+
+        // act on skew
+      } else if (o.skew != null || o.skewX != null || o.skewY != null) {
+        // ensure centre point
+        ensureCentre(o, target);
+
+        // ensure skew values on both axes
+        o.skewX = o.skew != null ? o.skew : o.skewX != null ? o.skewX : 0;
+        o.skewY = o.skew != null ? o.skew : o.skewY != null ? o.skewY : 0;
+
+        if (!relative) {
+          // absolute; reset skew values
+          var e = matrix.extract();
+          matrix = matrix.multiply(new SVG.Matrix().skew(e.skewX, e.skewY, o.cx, o.cy).inverse());
+        }
+
+        matrix = matrix.skew(o.skewX, o.skewY, o.cx, o.cy);
+
+        // act on flip
+      } else if (o.flip) {
+        if (o.flip == 'x' || o.flip == 'y') {
+          o.offset = o.offset == null ? target.bbox()['c' + o.flip] : o.offset;
+        } else {
+          if (o.offset == null) {
+            bbox = target.bbox();
+            o.flip = bbox.cx;
+            o.offset = bbox.cy;
+          } else {
+            o.flip = o.offset;
+          }
+        }
+
+        matrix = new SVG.Matrix().flip(o.flip, o.offset);
+
+        // act on translate
+      } else if (o.x != null || o.y != null) {
+        if (relative) {
+          // relative
+          matrix = matrix.translate(o.x, o.y);
+        } else {
+          // absolute
+          if (o.x != null) matrix.e = o.x;
+          if (o.y != null) matrix.f = o.y;
+        }
+      }
+
+      return this.attr('transform', matrix);
+    }
+  });
+
+  SVG.extend(SVG.FX, {
+    transform: function transform(o, relative) {
+      // get target in case of the fx module, otherwise reference this
+      var target = this.target(),
+          matrix,
+          bbox;
+
+      // act as a getter
+      if ((typeof o === 'undefined' ? 'undefined' : _typeof(o)) !== 'object') {
+        // get current matrix
+        matrix = new SVG.Matrix(target).extract();
+
+        return typeof o === 'string' ? matrix[o] : matrix;
+      }
+
+      // ensure relative flag
+      relative = !!relative || !!o.relative;
+
+      // act on matrix
+      if (o.a != null) {
+        matrix = new SVG.Matrix(o);
+
+        // act on rotation
+      } else if (o.rotation != null) {
+        // ensure centre point
+        ensureCentre(o, target);
+
+        // apply transformation
+        matrix = new SVG.Rotate(o.rotation, o.cx, o.cy);
+
+        // act on scale
+      } else if (o.scale != null || o.scaleX != null || o.scaleY != null) {
+        // ensure centre point
+        ensureCentre(o, target);
+
+        // ensure scale values on both axes
+        o.scaleX = o.scale != null ? o.scale : o.scaleX != null ? o.scaleX : 1;
+        o.scaleY = o.scale != null ? o.scale : o.scaleY != null ? o.scaleY : 1;
+
+        matrix = new SVG.Scale(o.scaleX, o.scaleY, o.cx, o.cy);
+
+        // act on skew
+      } else if (o.skewX != null || o.skewY != null) {
+        // ensure centre point
+        ensureCentre(o, target);
+
+        // ensure skew values on both axes
+        o.skewX = o.skewX != null ? o.skewX : 0;
+        o.skewY = o.skewY != null ? o.skewY : 0;
+
+        matrix = new SVG.Skew(o.skewX, o.skewY, o.cx, o.cy);
+
+        // act on flip
+      } else if (o.flip) {
+        if (o.flip == 'x' || o.flip == 'y') {
+          o.offset = o.offset == null ? target.bbox()['c' + o.flip] : o.offset;
+        } else {
+          if (o.offset == null) {
+            bbox = target.bbox();
+            o.flip = bbox.cx;
+            o.offset = bbox.cy;
+          } else {
+            o.flip = o.offset;
+          }
+        }
+
+        matrix = new SVG.Matrix().flip(o.flip, o.offset);
+
+        // act on translate
+      } else if (o.x != null || o.y != null) {
+        matrix = new SVG.Translate(o.x, o.y);
+      }
+
+      if (!matrix) return this;
+
+      matrix.relative = relative;
+
+      this.last().transforms.push(matrix);
+
+      return this._callStart();
+    }
+  });
+
+  SVG.extend(SVG.Element, {
+    // Reset all transformations
+    untransform: function untransform() {
+      return this.attr('transform', null);
+    },
+    // merge the whole transformation chain into one matrix and returns it
+    matrixify: function matrixify() {
+      var matrix = (this.attr('transform') || '').
+      // split transformations
+      split(SVG.regex.transforms).slice(0, -1).map(function (str) {
+        // generate key => value pairs
+        var kv = str.trim().split('(');
+        return [kv[0], kv[1].split(SVG.regex.delimiter).map(function (str) {
+          return parseFloat(str);
+        })];
+      })
+      // merge every transformation into one matrix
+      .reduce(function (matrix, transform) {
+        if (transform[0] == 'matrix') return matrix.multiply(arrayToMatrix(transform[1]));
+        return matrix[transform[0]].apply(matrix, transform[1]);
+      }, new SVG.Matrix());
+
+      return matrix;
+    },
+    // add an element to another parent without changing the visual representation on the screen
+    toParent: function toParent(parent) {
+      if (this == parent) return this;
+      var ctm = this.screenCTM();
+      var pCtm = parent.screenCTM().inverse();
+
+      this.addTo(parent).untransform().transform(pCtm.multiply(ctm));
+
+      return this;
+    },
+    // same as above with parent equals root-svg
+    toDoc: function toDoc() {
+      return this.toParent(this.doc());
+    }
+
+  });
+
+  SVG.Transformation = SVG.invent({
+
+    create: function create(source, inversed) {
+      if (arguments.length > 1 && typeof inversed !== 'boolean') {
+        return this.constructor.call(this, [].slice.call(arguments));
+      }
+
+      if (Array.isArray(source)) {
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          this[this.arguments[i]] = source[i];
+        }
+      } else if ((typeof source === 'undefined' ? 'undefined' : _typeof(source)) === 'object') {
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          this[this.arguments[i]] = source[this.arguments[i]];
+        }
+      }
+
+      this.inversed = false;
+
+      if (inversed === true) {
+        this.inversed = true;
+      }
+    },
+
+    extend: {
+
+      arguments: [],
+      method: '',
+
+      at: function at(pos) {
+        var params = [];
+
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          params.push(this[this.arguments[i]]);
+        }
+
+        var m = this._undo || new SVG.Matrix();
+
+        m = new SVG.Matrix().morph(SVG.Matrix.prototype[this.method].apply(m, params)).at(pos);
+
+        return this.inversed ? m.inverse() : m;
+      },
+
+      undo: function undo(o) {
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          o[this.arguments[i]] = typeof this[this.arguments[i]] === 'undefined' ? 0 : o[this.arguments[i]];
+        }
+
+        // The method SVG.Matrix.extract which was used before calling this
+        // method to obtain a value for the parameter o doesn't return a cx and
+        // a cy so we use the ones that were provided to this object at its creation
+        o.cx = this.cx;
+        o.cy = this.cy;
+
+        this._undo = new SVG[capitalize(this.method)](o, true).at(1);
+
+        return this;
+      }
+
+    }
+
+  });
+
+  SVG.Translate = SVG.invent({
+
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+
+    extend: {
+      arguments: ['transformedX', 'transformedY'],
+      method: 'translate'
+    }
+
+  });
+
+  SVG.Rotate = SVG.invent({
+
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+
+    extend: {
+      arguments: ['rotation', 'cx', 'cy'],
+      method: 'rotate',
+      at: function at(pos) {
+        var m = new SVG.Matrix().rotate(new SVG.Number().morph(this.rotation - (this._undo ? this._undo.rotation : 0)).at(pos), this.cx, this.cy);
+        return this.inversed ? m.inverse() : m;
+      },
+      undo: function undo(o) {
+        this._undo = o;
+        return this;
+      }
+    }
+
+  });
+
+  SVG.Scale = SVG.invent({
+
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+
+    extend: {
+      arguments: ['scaleX', 'scaleY', 'cx', 'cy'],
+      method: 'scale'
+    }
+
+  });
+
+  SVG.Skew = SVG.invent({
+
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+
+    extend: {
+      arguments: ['skewX', 'skewY', 'cx', 'cy'],
+      method: 'skew'
+    }
+
+  });
+
+  SVG.extend(SVG.Element, {
+    // Dynamic style generator
+    style: function style(s, v) {
+      if (arguments.length == 0) {
+        // get full style
+        return this.node.style.cssText || '';
+      } else if (arguments.length < 2) {
+        // apply every style individually if an object is passed
+        if ((typeof s === 'undefined' ? 'undefined' : _typeof(s)) === 'object') {
+          for (v in s) {
+            this.style(v, s[v]);
+          }
+        } else if (SVG.regex.isCss.test(s)) {
+          // parse css string
+          s = s.split(/\s*;\s*/)
+          // filter out suffix ; and stuff like ;;
+          .filter(function (e) {
+            return !!e;
+          }).map(function (e) {
+            return e.split(/\s*:\s*/);
+          });
+
+          // apply every definition individually
+          while (v = s.pop()) {
+            this.style(v[0], v[1]);
+          }
+        } else {
+          // act as a getter if the first and only argument is not an object
+          return this.node.style[camelCase(s)];
+        }
+      } else {
+        this.node.style[camelCase(s)] = v === null || SVG.regex.isBlank.test(v) ? '' : v;
+      }
+
+      return this;
+    }
+  });
+  SVG.Parent = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      this.constructor.call(this, element);
+    },
+
+    // Inherit from
+    inherit: SVG.Element,
+
+    // Add class methods
+    extend: {
+      // Returns all child elements
+      children: function children() {
+        return SVG.utils.map(SVG.utils.filterSVGElements(this.node.childNodes), function (node) {
+          return SVG.adopt(node);
+        });
+      },
+      // Add given element at a position
+      add: function add(element, i) {
+        if (i == null) {
+          this.node.appendChild(element.node);
+        } else if (element.node != this.node.childNodes[i]) {
+          this.node.insertBefore(element.node, this.node.childNodes[i]);
+        }
+
+        return this;
+      },
+      // Basically does the same as `add()` but returns the added element instead
+      put: function put(element, i) {
+        this.add(element, i);
+        return element;
+      },
+      // Checks if the given element is a child
+      has: function has(element) {
+        return this.index(element) >= 0;
+      },
+      // Gets index of given element
+      index: function index(element) {
+        return [].slice.call(this.node.childNodes).indexOf(element.node);
+      },
+      // Get a element at the given index
+      get: function get(i) {
+        return SVG.adopt(this.node.childNodes[i]);
+      },
+      // Get first child
+      first: function first() {
+        return this.get(0);
+      },
+      // Get the last child
+      last: function last() {
+        return this.get(this.node.childNodes.length - 1);
+      },
+      // Iterates over all children and invokes a given block
+      each: function each(block, deep) {
+        var i,
+            il,
+            children = this.children();
+
+        for (i = 0, il = children.length; i < il; i++) {
+          if (children[i] instanceof SVG.Element) {
+            block.apply(children[i], [i, children]);
+          }
+
+          if (deep && children[i] instanceof SVG.Container) {
+            children[i].each(block, deep);
+          }
+        }
+
+        return this;
+      },
+      // Remove a given child
+      removeElement: function removeElement(element) {
+        this.node.removeChild(element.node);
+
+        return this;
+      },
+      // Remove all elements in this container
+      clear: function clear() {
+        // remove children
+        while (this.node.hasChildNodes()) {
+          this.node.removeChild(this.node.lastChild);
+        }
+
+        // remove defs reference
+        delete this._defs;
+
+        return this;
+      }, // Get defs
+      defs: function defs() {
+        return this.doc().defs();
+      }
+    }
+
+  });
+
+  SVG.extend(SVG.Parent, {
+
+    ungroup: function ungroup(parent, depth) {
+      if (depth === 0 || this instanceof SVG.Defs || this.node == SVG.parser.draw) return this;
+
+      parent = parent || (this instanceof SVG.Doc ? this : this.parent(SVG.Parent));
+      depth = depth || Infinity;
+
+      this.each(function () {
+        if (this instanceof SVG.Defs) return this;
+        if (this instanceof SVG.Parent) return this.ungroup(parent, depth - 1);
+        return this.toParent(parent);
+      });
+
+      this.node.firstChild || this.remove();
+
+      return this;
+    },
+
+    flatten: function flatten(parent, depth) {
+      return this.ungroup(parent, depth);
+    }
+
+  });
+  SVG.Container = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      this.constructor.call(this, element);
+    },
+
+    // Inherit from
+    inherit: SVG.Parent
+
+  });
+
+  SVG.ViewBox = SVG.invent({
+
+    create: function create(source) {
+      var i,
+          base = [0, 0, 0, 0];
+
+      var x,
+          y,
+          width,
+          height,
+          box,
+          view,
+          we,
+          he,
+          wm = 1,
+          // width multiplier
+      hm = 1,
+          // height multiplier
+      reg = /[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/gi;
+
+      if (source instanceof SVG.Element) {
+        we = source;
+        he = source;
+        view = (source.attr('viewBox') || '').match(reg);
+        box = source.bbox;
+
+        // get dimensions of current node
+        width = new SVG.Number(source.width());
+        height = new SVG.Number(source.height());
+
+        // find nearest non-percentual dimensions
+        while (width.unit == '%') {
+          wm *= width.value;
+          width = new SVG.Number(we instanceof SVG.Doc ? we.parent().offsetWidth : we.parent().width());
+          we = we.parent();
+        }
+        while (height.unit == '%') {
+          hm *= height.value;
+          height = new SVG.Number(he instanceof SVG.Doc ? he.parent().offsetHeight : he.parent().height());
+          he = he.parent();
+        }
+
+        // ensure defaults
+        this.x = 0;
+        this.y = 0;
+        this.width = width * wm;
+        this.height = height * hm;
+        this.zoom = 1;
+
+        if (view) {
+          // get width and height from viewbox
+          x = parseFloat(view[0]);
+          y = parseFloat(view[1]);
+          width = parseFloat(view[2]);
+          height = parseFloat(view[3]);
+
+          // calculate zoom accoring to viewbox
+          this.zoom = this.width / this.height > width / height ? this.height / height : this.width / width;
+
+          // calculate real pixel dimensions on parent SVG.Doc element
+          this.x = x;
+          this.y = y;
+          this.width = width;
+          this.height = height;
+        }
+      } else {
+        // ensure source as object
+        source = typeof source === 'string' ? source.match(reg).map(function (el) {
+          return parseFloat(el);
+        }) : Array.isArray(source) ? source : (typeof source === 'undefined' ? 'undefined' : _typeof(source)) === 'object' ? [source.x, source.y, source.width, source.height] : arguments.length == 4 ? [].slice.call(arguments) : base;
+
+        this.x = source[0];
+        this.y = source[1];
+        this.width = source[2];
+        this.height = source[3];
+      }
+    },
+
+    extend: {
+
+      toString: function toString() {
+        return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height;
+      },
+      morph: function morph(x, y, width, height) {
+        this.destination = new SVG.ViewBox(x, y, width, height);
+        return this;
+      },
+
+      at: function at(pos) {
+        if (!this.destination) return this;
+
+        return new SVG.ViewBox([this.x + (this.destination.x - this.x) * pos, this.y + (this.destination.y - this.y) * pos, this.width + (this.destination.width - this.width) * pos, this.height + (this.destination.height - this.height) * pos]);
+      }
+
+    },
+
+    // Define parent
+    parent: SVG.Container,
+
+    // Add parent method
+    construct: {
+
+      // get/set viewbox
+      viewbox: function viewbox(x, y, width, height) {
+        if (arguments.length == 0)
+          // act as a getter if there are no arguments
+          {
+            return new SVG.ViewBox(this);
+          }
+
+        // otherwise act as a setter
+        return this.attr('viewBox', new SVG.ViewBox(x, y, width, height));
+      }
+
+    }
+
+  })
+  // Add events to elements
+  ;['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'mousemove',
+  // , 'mouseenter' -> not supported by IE
+  // , 'mouseleave' -> not supported by IE
+  'touchstart', 'touchmove', 'touchleave', 'touchend', 'touchcancel'].forEach(function (event) {
+    // add event to SVG.Element
+    SVG.Element.prototype[event] = function (f) {
+      // bind event to element rather than element node
+      SVG.on(this.node, event, f);
+      return this;
+    };
+  });
+
+  // Initialize listeners stack
+  SVG.listeners = [];
+  SVG.handlerMap = [];
+  SVG.listenerId = 0;
+
+  // Add event binder in the SVG namespace
+  SVG.on = function (node, event, listener, binding, options) {
+    // create listener, get object-index
+    var l = listener.bind(binding || node.instance || node),
+        index = (SVG.handlerMap.indexOf(node) + 1 || SVG.handlerMap.push(node)) - 1,
+        ev = event.split('.')[0],
+        ns = event.split('.')[1] || '*';
+
+    // ensure valid object
+    SVG.listeners[index] = SVG.listeners[index] || {};
+    SVG.listeners[index][ev] = SVG.listeners[index][ev] || {};
+    SVG.listeners[index][ev][ns] = SVG.listeners[index][ev][ns] || {};
+
+    if (!listener._svgjsListenerId) {
+      listener._svgjsListenerId = ++SVG.listenerId;
+    }
+
+    // reference listener
+    SVG.listeners[index][ev][ns][listener._svgjsListenerId] = l;
+
+    // add listener
+    node.addEventListener(ev, l, options || false);
+  };
+
+  // Add event unbinder in the SVG namespace
+  SVG.off = function (node, event, listener) {
+    var index = SVG.handlerMap.indexOf(node),
+        ev = event && event.split('.')[0],
+        ns = event && event.split('.')[1],
+        namespace = '';
+
+    if (index == -1) return;
+
+    if (listener) {
+      if (typeof listener === 'function') listener = listener._svgjsListenerId;
+      if (!listener) return;
+
+      // remove listener reference
+      if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns || '*']) {
+        // remove listener
+        node.removeEventListener(ev, SVG.listeners[index][ev][ns || '*'][listener], false);
+
+        delete SVG.listeners[index][ev][ns || '*'][listener];
+      }
+    } else if (ns && ev) {
+      // remove all listeners for a namespaced event
+      if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns]) {
+        for (listener in SVG.listeners[index][ev][ns]) {
+          SVG.off(node, [ev, ns].join('.'), listener);
+        }
+
+        delete SVG.listeners[index][ev][ns];
+      }
+    } else if (ns) {
+      // remove all listeners for a specific namespace
+      for (event in SVG.listeners[index]) {
+        for (namespace in SVG.listeners[index][event]) {
+          if (ns === namespace) {
+            SVG.off(node, [event, ns].join('.'));
+          }
+        }
+      }
+    } else if (ev) {
+      // remove all listeners for the event
+      if (SVG.listeners[index][ev]) {
+        for (namespace in SVG.listeners[index][ev]) {
+          SVG.off(node, [ev, namespace].join('.'));
+        }
+
+        delete SVG.listeners[index][ev];
+      }
+    } else {
+      // remove all listeners on a given node
+      for (event in SVG.listeners[index]) {
+        SVG.off(node, event);
+      }
+
+      delete SVG.listeners[index];
+      delete SVG.handlerMap[index];
+    }
+  };
+
+  //
+  SVG.extend(SVG.Element, {
+    // Bind given event to listener
+    on: function on(event, listener, binding, options) {
+      SVG.on(this.node, event, listener, binding, options);
+
+      return this;
+    },
+    // Unbind event from listener
+    off: function off(event, listener) {
+      SVG.off(this.node, event, listener);
+
+      return this;
+    },
+    // Fire given event
+    fire: function fire(event, data) {
+      // Dispatch event
+      if (event instanceof window.Event) {
+        this.node.dispatchEvent(event);
+      } else {
+        this.node.dispatchEvent(event = new SVG.CustomEvent(event, { detail: data, cancelable: true }));
+      }
+
+      this._event = event;
+      return this;
+    },
+    event: function event() {
+      return this._event;
+    }
+  });
+
+  SVG.Defs = SVG.invent({
+    // Initialize node
+    create: 'defs',
+
+    // Inherit from
+    inherit: SVG.Container
+
+  });
+  SVG.G = SVG.invent({
+    // Initialize node
+    create: 'g',
+
+    // Inherit from
+    inherit: SVG.Container,
+
+    // Add class methods
+    extend: {
+      // Move over x-axis
+      x: function x(_x3) {
+        return _x3 == null ? this.transform('x') : this.transform({ x: _x3 - this.x() }, true);
+      },
+      // Move over y-axis
+      y: function y(_y3) {
+        return _y3 == null ? this.transform('y') : this.transform({ y: _y3 - this.y() }, true);
+      },
+      // Move by center over x-axis
+      cx: function cx(x) {
+        return x == null ? this.gbox().cx : this.x(x - this.gbox().width / 2);
+      },
+      // Move by center over y-axis
+      cy: function cy(y) {
+        return y == null ? this.gbox().cy : this.y(y - this.gbox().height / 2);
+      },
+      gbox: function gbox() {
+        var bbox = this.bbox(),
+            trans = this.transform();
+
+        bbox.x += trans.x;
+        bbox.x2 += trans.x;
+        bbox.cx += trans.x;
+
+        bbox.y += trans.y;
+        bbox.y2 += trans.y;
+        bbox.cy += trans.y;
+
+        return bbox;
+      }
+    },
+
+    // Add parent method
+    construct: {
+      // Create a group element
+      group: function group() {
+        return this.put(new SVG.G());
+      }
+    }
+  });
+
+  SVG.Doc = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      if (element) {
+        // ensure the presence of a dom element
+        element = typeof element === 'string' ? document.getElementById(element) : element;
+
+        // If the target is an svg element, use that element as the main wrapper.
+        // This allows svg.js to work with svg documents as well.
+        if (element.nodeName == 'svg') {
+          this.constructor.call(this, element);
+        } else {
+          this.constructor.call(this, SVG.create('svg'));
+          element.appendChild(this.node);
+          this.size('100%', '100%');
+        }
+
+        // set svg element attributes and ensure defs node
+        this.namespace().defs();
+      }
+    },
+
+    // Inherit from
+    inherit: SVG.Container,
+
+    // Add class methods
+    extend: {
+      // Add namespaces
+      namespace: function namespace() {
+        return this.attr({ xmlns: SVG.ns, version: '1.1' }).attr('xmlns:xlink', SVG.xlink, SVG.xmlns).attr('xmlns:svgjs', SVG.svgjs, SVG.xmlns);
+      },
+      // Creates and returns defs element
+      defs: function defs() {
+        if (!this._defs) {
+          var defs;
+
+          // Find or create a defs element in this instance
+          if (defs = this.node.getElementsByTagName('defs')[0]) {
+            this._defs = SVG.adopt(defs);
+          } else {
+            this._defs = new SVG.Defs();
+          }
+
+          // Make sure the defs node is at the end of the stack
+          this.node.appendChild(this._defs.node);
+        }
+
+        return this._defs;
+      },
+      // custom parent method
+      parent: function parent() {
+        if (!this.node.parentNode || this.node.parentNode.nodeName == '#document') return null;
+        return this.node.parentNode;
+      },
+      // Fix for possible sub-pixel offset. See:
+      // https://bugzilla.mozilla.org/show_bug.cgi?id=608812
+      spof: function spof() {
+        var pos = this.node.getScreenCTM();
+
+        if (pos) {
+          this.style('left', -pos.e % 1 + 'px').style('top', -pos.f % 1 + 'px');
+        }
+
+        return this;
+      },
+
+      // Removes the doc from the DOM
+      remove: function remove() {
+        if (this.parent()) {
+          this.parent().removeChild(this.node);
+        }
+
+        return this;
+      },
+      clear: function clear() {
+        // remove children
+        while (this.node.hasChildNodes()) {
+          this.node.removeChild(this.node.lastChild);
+        }
+
+        // remove defs reference
+        delete this._defs;
+
+        // add back parser
+        if (SVG.parser.draw && !SVG.parser.draw.parentNode) {
+          this.node.appendChild(SVG.parser.draw);
+        }
+
+        return this;
+      },
+      clone: function clone(parent) {
+        // write dom data to the dom so the clone can pickup the data
+        this.writeDataToDom();
+
+        // get reference to node
+        var node = this.node;
+
+        // clone element and assign new id
+        var clone = assignNewId(node.cloneNode(true));
+
+        // insert the clone in the given parent or after myself
+        if (parent) {
+          (parent.node || parent).appendChild(clone.node);
+        } else {
+          node.parentNode.insertBefore(clone.node, node.nextSibling);
+        }
+
+        return clone;
+      }
+    }
+
+  });
+
+  // ### This module adds backward / forward functionality to elements.
+
+  //
+  SVG.extend(SVG.Element, {
+    // Get all siblings, including myself
+    siblings: function siblings() {
+      return this.parent().children();
+    },
+    // Get the curent position siblings
+    position: function position() {
+      return this.parent().index(this);
+    },
+    // Get the next element (will return null if there is none)
+    next: function next() {
+      return this.siblings()[this.position() + 1];
+    },
+    // Get the next element (will return null if there is none)
+    previous: function previous() {
+      return this.siblings()[this.position() - 1];
+    },
+    // Send given element one step forward
+    forward: function forward() {
+      var i = this.position() + 1,
+          p = this.parent();
+
+      // move node one step forward
+      p.removeElement(this).add(this, i);
+
+      // make sure defs node is always at the top
+      if (p instanceof SVG.Doc) {
+        p.node.appendChild(p.defs().node);
+      }
+
+      return this;
+    },
+    // Send given element one step backward
+    backward: function backward() {
+      var i = this.position();
+
+      if (i > 0) {
+        this.parent().removeElement(this).add(this, i - 1);
+      }
+
+      return this;
+    },
+    // Send given element all the way to the front
+    front: function front() {
+      var p = this.parent();
+
+      // Move node forward
+      p.node.appendChild(this.node);
+
+      // Make sure defs node is always at the top
+      if (p instanceof SVG.Doc) {
+        p.node.appendChild(p.defs().node);
+      }
+
+      return this;
+    },
+    // Send given element all the way to the back
+    back: function back() {
+      if (this.position() > 0) {
+        this.parent().removeElement(this).add(this, 0);
+      }
+
+      return this;
+    },
+    // Inserts a given element before the targeted element
+    before: function before(element) {
+      element.remove();
+
+      var i = this.position();
+
+      this.parent().add(element, i);
+
+      return this;
+    },
+    // Insters a given element after the targeted element
+    after: function after(element) {
+      element.remove();
+
+      var i = this.position();
+
+      this.parent().add(element, i + 1);
+
+      return this;
+    }
+
+  });
+  SVG.Mask = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('mask'));
+
+      // keep references to masked elements
+      this.targets = [];
+    },
+
+    // Inherit from
+    inherit: SVG.Container,
+
+    // Add class methods
+    extend: {
+      // Unmask all masked elements and remove itself
+      remove: function remove() {
+        // unmask all targets
+        for (var i = this.targets.length - 1; i >= 0; i--) {
+          if (this.targets[i]) {
+            this.targets[i].unmask();
+          }
+        }
+        this.targets = [];
+
+        // remove mask from parent
+        SVG.Element.prototype.remove.call(this);
+
+        return this;
+      }
+    },
+
+    // Add parent method
+    construct: {
+      // Create masking element
+      mask: function mask() {
+        return this.defs().put(new SVG.Mask());
+      }
+    }
+  });
+
+  SVG.extend(SVG.Element, {
+    // Distribute mask to svg element
+    maskWith: function maskWith(element) {
+      // use given mask or create a new one
+      this.masker = element instanceof SVG.Mask ? element : this.parent().mask().add(element);
+
+      // store reverence on self in mask
+      this.masker.targets.push(this);
+
+      // apply mask
+      return this.attr('mask', 'url("#' + this.masker.attr('id') + '")');
+    },
+    // Unmask element
+    unmask: function unmask() {
+      delete this.masker;
+      return this.attr('mask', null);
+    }
+
+  });
+
+  SVG.ClipPath = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('clipPath'));
+
+      // keep references to clipped elements
+      this.targets = [];
+    },
+
+    // Inherit from
+    inherit: SVG.Container,
+
+    // Add class methods
+    extend: {
+      // Unclip all clipped elements and remove itself
+      remove: function remove() {
+        // unclip all targets
+        for (var i = this.targets.length - 1; i >= 0; i--) {
+          if (this.targets[i]) {
+            this.targets[i].unclip();
+          }
+        }
+        this.targets = [];
+
+        // remove clipPath from parent
+        this.parent().removeElement(this);
+
+        return this;
+      }
+    },
+
+    // Add parent method
+    construct: {
+      // Create clipping element
+      clip: function clip() {
+        return this.defs().put(new SVG.ClipPath());
+      }
+    }
+  });
+
+  //
+  SVG.extend(SVG.Element, {
+    // Distribute clipPath to svg element
+    clipWith: function clipWith(element) {
+      // use given clip or create a new one
+      this.clipper = element instanceof SVG.ClipPath ? element : this.parent().clip().add(element);
+
+      // store reverence on self in mask
+      this.clipper.targets.push(this);
+
+      // apply mask
+      return this.attr('clip-path', 'url("#' + this.clipper.attr('id') + '")');
+    },
+    // Unclip element
+    unclip: function unclip() {
+      delete this.clipper;
+      return this.attr('clip-path', null);
+    }
+
+  });
+  SVG.Gradient = SVG.invent({
+    // Initialize node
+    create: function create(type) {
+      this.constructor.call(this, SVG.create(type + 'Gradient'));
+
+      // store type
+      this.type = type;
+    },
+
+    // Inherit from
+    inherit: SVG.Container,
+
+    // Add class methods
+    extend: {
+      // Add a color stop
+      at: function at(offset, color, opacity) {
+        return this.put(new SVG.Stop()).update(offset, color, opacity);
+      },
+      // Update gradient
+      update: function update(block) {
+        // remove all stops
+        this.clear();
+
+        // invoke passed block
+        if (typeof block === 'function') {
+          block.call(this, this);
+        }
+
+        return this;
+      },
+      // Return the fill id
+      fill: function fill() {
+        return 'url(#' + this.id() + ')';
+      },
+      // Alias string convertion to fill
+      toString: function toString() {
+        return this.fill();
+      },
+      // custom attr to handle transform
+      attr: function attr(a, b, c) {
+        if (a == 'transform') a = 'gradientTransform';
+        return SVG.Container.prototype.attr.call(this, a, b, c);
+      }
+    },
+
+    // Add parent method
+    construct: {
+      // Create gradient element in defs
+      gradient: function gradient(type, block) {
+        return this.defs().gradient(type, block);
+      }
+    }
+  });
+
+  // Add animatable methods to both gradient and fx module
+  SVG.extend(SVG.Gradient, SVG.FX, {
+    // From position
+    from: function from(x, y) {
+      return (this._target || this).type == 'radial' ? this.attr({ fx: new SVG.Number(x), fy: new SVG.Number(y) }) : this.attr({ x1: new SVG.Number(x), y1: new SVG.Number(y) });
+    },
+    // To position
+    to: function to(x, y) {
+      return (this._target || this).type == 'radial' ? this.attr({ cx: new SVG.Number(x), cy: new SVG.Number(y) }) : this.attr({ x2: new SVG.Number(x), y2: new SVG.Number(y) });
+    }
+  });
+
+  // Base gradient generation
+  SVG.extend(SVG.Defs, {
+    // define gradient
+    gradient: function gradient(type, block) {
+      return this.put(new SVG.Gradient(type)).update(block);
+    }
+
+  });
+
+  SVG.Stop = SVG.invent({
+    // Initialize node
+    create: 'stop',
+
+    // Inherit from
+    inherit: SVG.Element,
+
+    // Add class methods
+    extend: {
+      // add color stops
+      update: function update(o) {
+        if (typeof o === 'number' || o instanceof SVG.Number) {
+          o = {
+            offset: arguments[0],
+            color: arguments[1],
+            opacity: arguments[2]
+          };
+        }
+
+        // set attributes
+        if (o.opacity != null) this.attr('stop-opacity', o.opacity);
+        if (o.color != null) this.attr('stop-color', o.color);
+        if (o.offset != null) this.attr('offset', new SVG.Number(o.offset));
+
+        return this;
+      }
+    }
+
+  });
+
+  SVG.Pattern = SVG.invent({
+    // Initialize node
+    create: 'pattern',
+
+    // Inherit from
+    inherit: SVG.Container,
+
+    // Add class methods
+    extend: {
+      // Return the fill id
+      fill: function fill() {
+        return 'url(#' + this.id() + ')';
+      },
+      // Update pattern by rebuilding
+      update: function update(block) {
+        // remove content
+        this.clear();
+
+        // invoke passed block
+        if (typeof block === 'function') {
+          block.call(this, this);
+        }
+
+        return this;
+      },
+      // Alias string convertion to fill
+      toString: function toString() {
+        return this.fill();
+      },
+      // custom attr to handle transform
+      attr: function attr(a, b, c) {
+        if (a == 'transform') a = 'patternTransform';
+        return SVG.Container.prototype.attr.call(this, a, b, c);
+      }
+
+    },
+
+    // Add parent method
+    construct: {
+      // Create pattern element in defs
+      pattern: function pattern(width, height, block) {
+        return this.defs().pattern(width, height, block);
+      }
+    }
+  });
+
+  SVG.extend(SVG.Defs, {
+    // Define gradient
+    pattern: function pattern(width, height, block) {
+      return this.put(new SVG.Pattern()).update(block).attr({
+        x: 0,
+        y: 0,
+        width: width,
+        height: height,
+        patternUnits: 'userSpaceOnUse'
+      });
+    }
+
+  });
+  SVG.Shape = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      this.constructor.call(this, element);
+    },
+
+    // Inherit from
+    inherit: SVG.Element
+
+  });
+
+  SVG.Bare = SVG.invent({
+    // Initialize
+    create: function create(element, inherit) {
+      // construct element
+      this.constructor.call(this, SVG.create(element));
+
+      // inherit custom methods
+      if (inherit) {
+        for (var method in inherit.prototype) {
+          if (typeof inherit.prototype[method] === 'function') {
+            this[method] = inherit.prototype[method];
+          }
+        }
+      }
+    },
+
+    // Inherit from
+    inherit: SVG.Element,
+
+    // Add methods
+    extend: {
+      // Insert some plain text
+      words: function words(text) {
+        // remove contents
+        while (this.node.hasChildNodes()) {
+          this.node.removeChild(this.node.lastChild);
+        }
+
+        // create text node
+        this.node.appendChild(document.createTextNode(text));
+
+        return this;
+      }
+    }
+  });
+
+  SVG.extend(SVG.Parent, {
+    // Create an element that is not described by SVG.js
+    element: function element(_element, inherit) {
+      return this.put(new SVG.Bare(_element, inherit));
+    }
+  });
+
+  SVG.Symbol = SVG.invent({
+    // Initialize node
+    create: 'symbol',
+
+    // Inherit from
+    inherit: SVG.Container,
+
+    construct: {
+      // create symbol
+      symbol: function symbol() {
+        return this.put(new SVG.Symbol());
+      }
+    }
+  });
+
+  SVG.Use = SVG.invent({
+    // Initialize node
+    create: 'use',
+
+    // Inherit from
+    inherit: SVG.Shape,
+
+    // Add class methods
+    extend: {
+      // Use element as a reference
+      element: function element(_element2, file) {
+        // Set lined element
+        return this.attr('href', (file || '') + '#' + _element2, SVG.xlink);
+      }
+    },
+
+    // Add parent method
+    construct: {
+      // Create a use element
+      use: function use(element, file) {
+        return this.put(new SVG.Use()).element(element, file);
+      }
+    }
+  });
+  SVG.Rect = SVG.invent({
+    // Initialize node
+    create: 'rect',
+
+    // Inherit from
+    inherit: SVG.Shape,
+
+    // Add parent method
+    construct: {
+      // Create a rect element
+      rect: function rect(width, height) {
+        return this.put(new SVG.Rect()).size(width, height);
+      }
+    }
+  });
+  SVG.Circle = SVG.invent({
+    // Initialize node
+    create: 'circle',
+
+    // Inherit from
+    inherit: SVG.Shape,
+
+    // Add parent method
+    construct: {
+      // Create circle element, based on ellipse
+      circle: function circle(size) {
+        return this.put(new SVG.Circle()).rx(new SVG.Number(size).divide(2)).move(0, 0);
+      }
+    }
+  });
+
+  SVG.extend(SVG.Circle, SVG.FX, {
+    // Radius x value
+    rx: function rx(_rx) {
+      return this.attr('r', _rx);
+    },
+    // Alias radius x value
+    ry: function ry(_ry) {
+      return this.rx(_ry);
+    }
+  });
+
+  SVG.Ellipse = SVG.invent({
+    // Initialize node
+    create: 'ellipse',
+
+    // Inherit from
+    inherit: SVG.Shape,
+
+    // Add parent method
+    construct: {
+      // Create an ellipse
+      ellipse: function ellipse(width, height) {
+        return this.put(new SVG.Ellipse()).size(width, height).move(0, 0);
+      }
+    }
+  });
+
+  SVG.extend(SVG.Ellipse, SVG.Rect, SVG.FX, {
+    // Radius x value
+    rx: function rx(_rx2) {
+      return this.attr('rx', _rx2);
+    },
+    // Radius y value
+    ry: function ry(_ry2) {
+      return this.attr('ry', _ry2);
+    }
+  });
+
+  // Add common method
+  SVG.extend(SVG.Circle, SVG.Ellipse, {
+    // Move over x-axis
+    x: function x(_x4) {
+      return _x4 == null ? this.cx() - this.rx() : this.cx(_x4 + this.rx());
+    },
+    // Move over y-axis
+    y: function y(_y4) {
+      return _y4 == null ? this.cy() - this.ry() : this.cy(_y4 + this.ry());
+    },
+    // Move by center over x-axis
+    cx: function cx(x) {
+      return x == null ? this.attr('cx') : this.attr('cx', x);
+    },
+    // Move by center over y-axis
+    cy: function cy(y) {
+      return y == null ? this.attr('cy') : this.attr('cy', y);
+    },
+    // Set width of element
+    width: function width(_width3) {
+      return _width3 == null ? this.rx() * 2 : this.rx(new SVG.Number(_width3).divide(2));
+    },
+    // Set height of element
+    height: function height(_height3) {
+      return _height3 == null ? this.ry() * 2 : this.ry(new SVG.Number(_height3).divide(2));
+    },
+    // Custom size function
+    size: function size(width, height) {
+      var p = proportionalSize(this, width, height);
+
+      return this.rx(new SVG.Number(p.width).divide(2)).ry(new SVG.Number(p.height).divide(2));
+    }
+  });
+  SVG.Line = SVG.invent({
+    // Initialize node
+    create: 'line',
+
+    // Inherit from
+    inherit: SVG.Shape,
+
+    // Add class methods
+    extend: {
+      // Get array
+      array: function array() {
+        return new SVG.PointArray([[this.attr('x1'), this.attr('y1')], [this.attr('x2'), this.attr('y2')]]);
+      },
+      // Overwrite native plot() method
+      plot: function plot(x1, y1, x2, y2) {
+        if (x1 == null) {
+          return this.array();
+        } else if (typeof y1 !== 'undefined') {
+          x1 = { x1: x1, y1: y1, x2: x2, y2: y2 };
+        } else {
+          x1 = new SVG.PointArray(x1).toLine();
+        }
+
+        return this.attr(x1);
+      },
+      // Move by left top corner
+      move: function move(x, y) {
+        return this.attr(this.array().move(x, y).toLine());
+      },
+      // Set element size to given width and height
+      size: function size(width, height) {
+        var p = proportionalSize(this, width, height);
+
+        return this.attr(this.array().size(p.width, p.height).toLine());
+      }
+    },
+
+    // Add parent method
+    construct: {
+      // Create a line element
+      line: function line(x1, y1, x2, y2) {
+        // make sure plot is called as a setter
+        // x1 is not necessarily a number, it can also be an array, a string and a SVG.PointArray
+        return SVG.Line.prototype.plot.apply(this.put(new SVG.Line()), x1 != null ? [x1, y1, x2, y2] : [0, 0, 0, 0]);
+      }
+    }
+  });
+
+  SVG.Polyline = SVG.invent({
+    // Initialize node
+    create: 'polyline',
+
+    // Inherit from
+    inherit: SVG.Shape,
+
+    // Add parent method
+    construct: {
+      // Create a wrapped polyline element
+      polyline: function polyline(p) {
+        // make sure plot is called as a setter
+        return this.put(new SVG.Polyline()).plot(p || new SVG.PointArray());
+      }
+    }
+  });
+
+  SVG.Polygon = SVG.invent({
+    // Initialize node
+    create: 'polygon',
+
+    // Inherit from
+    inherit: SVG.Shape,
+
+    // Add parent method
+    construct: {
+      // Create a wrapped polygon element
+      polygon: function polygon(p) {
+        // make sure plot is called as a setter
+        return this.put(new SVG.Polygon()).plot(p || new SVG.PointArray());
+      }
+    }
+  });
+
+  // Add polygon-specific functions
+  SVG.extend(SVG.Polyline, SVG.Polygon, {
+    // Get array
+    array: function array() {
+      return this._array || (this._array = new SVG.PointArray(this.attr('points')));
+    },
+    // Plot new path
+    plot: function plot(p) {
+      return p == null ? this.array() : this.clear().attr('points', typeof p === 'string' ? p : this._array = new SVG.PointArray(p));
+    },
+    // Clear array cache
+    clear: function clear() {
+      delete this._array;
+      return this;
+    },
+    // Move by left top corner
+    move: function move(x, y) {
+      return this.attr('points', this.array().move(x, y));
+    },
+    // Set element size to given width and height
+    size: function size(width, height) {
+      var p = proportionalSize(this, width, height);
+
+      return this.attr('points', this.array().size(p.width, p.height));
+    }
+
+  });
+
+  // unify all point to point elements
+  SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, {
+    // Define morphable array
+    morphArray: SVG.PointArray,
+    // Move by left top corner over x-axis
+    x: function x(_x5) {
+      return _x5 == null ? this.bbox().x : this.move(_x5, this.bbox().y);
+    },
+    // Move by left top corner over y-axis
+    y: function y(_y5) {
+      return _y5 == null ? this.bbox().y : this.move(this.bbox().x, _y5);
+    },
+    // Set width of element
+    width: function width(_width4) {
+      var b = this.bbox();
+
+      return _width4 == null ? b.width : this.size(_width4, b.height);
+    },
+    // Set height of element
+    height: function height(_height4) {
+      var b = this.bbox();
+
+      return _height4 == null ? b.height : this.size(b.width, _height4);
+    }
+  });
+  SVG.Path = SVG.invent({
+    // Initialize node
+    create: 'path',
+
+    // Inherit from
+    inherit: SVG.Shape,
+
+    // Add class methods
+    extend: {
+      // Define morphable array
+      morphArray: SVG.PathArray,
+      // Get array
+      array: function array() {
+        return this._array || (this._array = new SVG.PathArray(this.attr('d')));
+      },
+      // Plot new path
+      plot: function plot(d) {
+        return d == null ? this.array() : this.clear().attr('d', typeof d === 'string' ? d : this._array = new SVG.PathArray(d));
+      },
+      // Clear array cache
+      clear: function clear() {
+        delete this._array;
+        return this;
+      },
+      // Move by left top corner
+      move: function move(x, y) {
+        return this.attr('d', this.array().move(x, y));
+      },
+      // Move by left top corner over x-axis
+      x: function x(_x6) {
+        return _x6 == null ? this.bbox().x : this.move(_x6, this.bbox().y);
+      },
+      // Move by left top corner over y-axis
+      y: function y(_y6) {
+        return _y6 == null ? this.bbox().y : this.move(this.bbox().x, _y6);
+      },
+      // Set element size to given width and height
+      size: function size(width, height) {
+        var p = proportionalSize(this, width, height);
+
+        return this.attr('d', this.array().size(p.width, p.height));
+      },
+      // Set width of element
+      width: function width(_width5) {
+        return _width5 == null ? this.bbox().width : this.size(_width5, this.bbox().height);
+      },
+      // Set height of element
+      height: function height(_height5) {
+        return _height5 == null ? this.bbox().height : this.size(this.bbox().width, _height5);
+      }
+
+    },
+
+    // Add parent method
+    construct: {
+      // Create a wrapped path element
+      path: function path(d) {
+        // make sure plot is called as a setter
+        return this.put(new SVG.Path()).plot(d || new SVG.PathArray());
+      }
+    }
+  });
+
+  SVG.Image = SVG.invent({
+    // Initialize node
+    create: 'image',
+
+    // Inherit from
+    inherit: SVG.Shape,
+
+    // Add class methods
+    extend: {
+      // (re)load image
+      load: function load(url) {
+        if (!url) return this;
+
+        var self = this,
+            img = new window.Image();
+
+        // preload image
+        SVG.on(img, 'load', function () {
+          SVG.off(img);
+
+          var p = self.parent(SVG.Pattern);
+
+          if (p === null) return;
+
+          // ensure image size
+          if (self.width() == 0 && self.height() == 0) {
+            self.size(img.width, img.height);
+          }
+
+          // ensure pattern size if not set
+          if (p && p.width() == 0 && p.height() == 0) {
+            p.size(self.width(), self.height());
+          }
+
+          // callback
+          if (typeof self._loaded === 'function') {
+            self._loaded.call(self, {
+              width: img.width,
+              height: img.height,
+              ratio: img.width / img.height,
+              url: url
+            });
+          }
+        });
+
+        SVG.on(img, 'error', function (e) {
+          SVG.off(img);
+
+          if (typeof self._error === 'function') {
+            self._error.call(self, e);
+          }
+        });
+
+        return this.attr('href', img.src = this.src = url, SVG.xlink);
+      },
+      // Add loaded callback
+      loaded: function loaded(_loaded) {
+        this._loaded = _loaded;
+        return this;
+      },
+
+      error: function error(_error) {
+        this._error = _error;
+        return this;
+      }
+    },
+
+    // Add parent method
+    construct: {
+      // create image element, load image and set its size
+      image: function image(source, width, height) {
+        return this.put(new SVG.Image()).load(source).size(width || 0, height || width || 0);
+      }
+    }
+
+  });
+  SVG.Text = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('text'));
+
+      this.dom.leading = new SVG.Number(1.3); // store leading value for rebuilding
+      this._rebuild = true; // enable automatic updating of dy values
+      this._build = false; // disable build mode for adding multiple lines
+
+      // set default font
+      this.attr('font-family', SVG.defaults.attrs['font-family']);
+    },
+
+    // Inherit from
+    inherit: SVG.Shape,
+
+    // Add class methods
+    extend: {
+      // Move over x-axis
+      x: function x(_x7) {
+        // act as getter
+        if (_x7 == null) {
+          return this.attr('x');
+        }
+
+        return this.attr('x', _x7);
+      },
+      // Move over y-axis
+      y: function y(_y7) {
+        var oy = this.attr('y'),
+            o = typeof oy === 'number' ? oy - this.bbox().y : 0;
+
+        // act as getter
+        if (_y7 == null) {
+          return typeof oy === 'number' ? oy - o : oy;
+        }
+
+        return this.attr('y', typeof _y7.valueOf() === 'number' ? _y7 + o : _y7);
+      },
+      // Move center over x-axis
+      cx: function cx(x) {
+        return x == null ? this.bbox().cx : this.x(x - this.bbox().width / 2);
+      },
+      // Move center over y-axis
+      cy: function cy(y) {
+        return y == null ? this.bbox().cy : this.y(y - this.bbox().height / 2);
+      },
+      // Set the text content
+      text: function text(text) {
+        // act as getter
+        if (typeof text === 'undefined') {
+          var text = '';
+          var children = this.node.childNodes;
+          for (var i = 0, len = children.length; i < len; ++i) {
+            // add newline if its not the first child and newLined is set to true
+            if (i != 0 && children[i].nodeType != 3 && SVG.adopt(children[i]).dom.newLined == true) {
+              text += '\n';
+            }
+
+            // add content of this node
+            text += children[i].textContent;
+          }
+
+          return text;
+        }
+
+        // remove existing content
+        this.clear().build(true);
+
+        if (typeof text === 'function') {
+          // call block
+          text.call(this, this);
+        } else {
+          // store text and make sure text is not blank
+          text = text.split('\n');
+
+          // build new lines
+          for (var i = 0, il = text.length; i < il; i++) {
+            this.tspan(text[i]).newLine();
+          }
+        }
+
+        // disable build mode and rebuild lines
+        return this.build(false).rebuild();
+      },
+      // Set font size
+      size: function size(_size) {
+        return this.attr('font-size', _size).rebuild();
+      },
+      // Set / get leading
+      leading: function leading(value) {
+        // act as getter
+        if (value == null) {
+          return this.dom.leading;
+        }
+
+        // act as setter
+        this.dom.leading = new SVG.Number(value);
+
+        return this.rebuild();
+      },
+      // Get all the first level lines
+      lines: function lines() {
+        var node = (this.textPath && this.textPath() || this).node;
+
+        // filter tspans and map them to SVG.js instances
+        var lines = SVG.utils.map(SVG.utils.filterSVGElements(node.childNodes), function (el) {
+          return SVG.adopt(el);
+        });
+
+        // return an instance of SVG.set
+        return new SVG.Set(lines);
+      },
+      // Rebuild appearance type
+      rebuild: function rebuild(_rebuild) {
+        // store new rebuild flag if given
+        if (typeof _rebuild === 'boolean') {
+          this._rebuild = _rebuild;
+        }
+
+        // define position of all lines
+        if (this._rebuild) {
+          var self = this,
+              blankLineOffset = 0,
+              dy = this.dom.leading * new SVG.Number(this.attr('font-size'));
+
+          this.lines().each(function () {
+            if (this.dom.newLined) {
+              if (!self.textPath()) {
+                this.attr('x', self.attr('x'));
+              }
+              if (this.text() == '\n') {
+                blankLineOffset += dy;
+              } else {
+                this.attr('dy', dy + blankLineOffset);
+                blankLineOffset = 0;
+              }
+            }
+          });
+
+          this.fire('rebuild');
+        }
+
+        return this;
+      },
+      // Enable / disable build mode
+      build: function build(_build) {
+        this._build = !!_build;
+        return this;
+      },
+      // overwrite method from parent to set data properly
+      setData: function setData(o) {
+        this.dom = o;
+        this.dom.leading = new SVG.Number(o.leading || 1.3);
+        return this;
+      }
+    },
+
+    // Add parent method
+    construct: {
+      // Create text element
+      text: function text(_text) {
+        return this.put(new SVG.Text()).text(_text);
+      },
+      // Create plain text element
+      plain: function plain(text) {
+        return this.put(new SVG.Text()).plain(text);
+      }
+    }
+
+  });
+
+  SVG.Tspan = SVG.invent({
+    // Initialize node
+    create: 'tspan',
+
+    // Inherit from
+    inherit: SVG.Shape,
+
+    // Add class methods
+    extend: {
+      // Set text content
+      text: function text(_text2) {
+        if (_text2 == null) return this.node.textContent + (this.dom.newLined ? '\n' : '');
+
+        typeof _text2 === 'function' ? _text2.call(this, this) : this.plain(_text2);
+
+        return this;
+      },
+      // Shortcut dx
+      dx: function dx(_dx) {
+        return this.attr('dx', _dx);
+      },
+      // Shortcut dy
+      dy: function dy(_dy) {
+        return this.attr('dy', _dy);
+      },
+      // Create new line
+      newLine: function newLine() {
+        // fetch text parent
+        var t = this.parent(SVG.Text);
+
+        // mark new line
+        this.dom.newLined = true;
+
+        // apply new hy¡n
+        return this.dy(t.dom.leading * t.attr('font-size')).attr('x', t.x());
+      }
+    }
+
+  });
+
+  SVG.extend(SVG.Text, SVG.Tspan, {
+    // Create plain text node
+    plain: function plain(text) {
+      // clear if build mode is disabled
+      if (this._build === false) {
+        this.clear();
+      }
+
+      // create text node
+      this.node.appendChild(document.createTextNode(text));
+
+      return this;
+    },
+    // Create a tspan
+    tspan: function tspan(text) {
+      var node = (this.textPath && this.textPath() || this).node,
+          tspan = new SVG.Tspan();
+
+      // clear if build mode is disabled
+      if (this._build === false) {
+        this.clear();
+      }
+
+      // add new tspan
+      node.appendChild(tspan.node);
+
+      return tspan.text(text);
+    },
+    // Clear all lines
+    clear: function clear() {
+      var node = (this.textPath && this.textPath() || this).node;
+
+      // remove existing child nodes
+      while (node.hasChildNodes()) {
+        node.removeChild(node.lastChild);
+      }
+
+      return this;
+    },
+    // Get length of text element
+    length: function length() {
+      return this.node.getComputedTextLength();
+    }
+  });
+
+  SVG.TextPath = SVG.invent({
+    // Initialize node
+    create: 'textPath',
+
+    // Inherit from
+    inherit: SVG.Parent,
+
+    // Define parent class
+    parent: SVG.Text,
+
+    // Add parent method
+    construct: {
+      morphArray: SVG.PathArray,
+      // Create path for text to run on
+      path: function path(d) {
+        // create textPath element
+        var path = new SVG.TextPath(),
+            track = this.doc().defs().path(d);
+
+        // move lines to textpath
+        while (this.node.hasChildNodes()) {
+          path.node.appendChild(this.node.firstChild);
+        }
+
+        // add textPath element as child node
+        this.node.appendChild(path.node);
+
+        // link textPath to path and add content
+        path.attr('href', '#' + track, SVG.xlink);
+
+        return this;
+      },
+      // return the array of the path track element
+      array: function array() {
+        var track = this.track();
+
+        return track ? track.array() : null;
+      },
+      // Plot path if any
+      plot: function plot(d) {
+        var track = this.track(),
+            pathArray = null;
+
+        if (track) {
+          pathArray = track.plot(d);
+        }
+
+        return d == null ? pathArray : this;
+      },
+      // Get the path track element
+      track: function track() {
+        var path = this.textPath();
+
+        if (path) {
+          return path.reference('href');
+        }
+      },
+      // Get the textPath child
+      textPath: function textPath() {
+        if (this.node.firstChild && this.node.firstChild.nodeName == 'textPath') {
+          return SVG.adopt(this.node.firstChild);
+        }
+      }
+    }
+  });
+
+  SVG.Nested = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('svg'));
+
+      this.style('overflow', 'visible');
+    },
+
+    // Inherit from
+    inherit: SVG.Container,
+
+    // Add parent method
+    construct: {
+      // Create nested svg document
+      nested: function nested() {
+        return this.put(new SVG.Nested());
+      }
+    }
+  });
+  SVG.A = SVG.invent({
+    // Initialize node
+    create: 'a',
+
+    // Inherit from
+    inherit: SVG.Container,
+
+    // Add class methods
+    extend: {
+      // Link url
+      to: function to(url) {
+        return this.attr('href', url, SVG.xlink);
+      },
+      // Link show attribute
+      show: function show(target) {
+        return this.attr('show', target, SVG.xlink);
+      },
+      // Link target attribute
+      target: function target(_target2) {
+        return this.attr('target', _target2);
+      }
+    },
+
+    // Add parent method
+    construct: {
+      // Create a hyperlink element
+      link: function link(url) {
+        return this.put(new SVG.A()).to(url);
+      }
+    }
+  });
+
+  SVG.extend(SVG.Element, {
+    // Create a hyperlink element
+    linkTo: function linkTo(url) {
+      var link = new SVG.A();
+
+      if (typeof url === 'function') {
+        url.call(link, link);
+      } else {
+        link.to(url);
+      }
+
+      return this.parent().put(link).put(this);
+    }
+
+  });
+  SVG.Marker = SVG.invent({
+    // Initialize node
+    create: 'marker',
+
+    // Inherit from
+    inherit: SVG.Container,
+
+    // Add class methods
+    extend: {
+      // Set width of element
+      width: function width(_width6) {
+        return this.attr('markerWidth', _width6);
+      },
+      // Set height of element
+      height: function height(_height6) {
+        return this.attr('markerHeight', _height6);
+      },
+      // Set marker refX and refY
+      ref: function ref(x, y) {
+        return this.attr('refX', x).attr('refY', y);
+      },
+      // Update marker
+      update: function update(block) {
+        // remove all content
+        this.clear();
+
+        // invoke passed block
+        if (typeof block === 'function') {
+          block.call(this, this);
+        }
+
+        return this;
+      },
+      // Return the fill id
+      toString: function toString() {
+        return 'url(#' + this.id() + ')';
+      }
+    },
+
+    // Add parent method
+    construct: {
+      marker: function marker(width, height, block) {
+        // Create marker element in defs
+        return this.defs().marker(width, height, block);
+      }
+    }
+
+  });
+
+  SVG.extend(SVG.Defs, {
+    // Create marker
+    marker: function marker(width, height, block) {
+      // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto
+      return this.put(new SVG.Marker()).size(width, height).ref(width / 2, height / 2).viewbox(0, 0, width, height).attr('orient', 'auto').update(block);
+    }
+
+  });
+
+  SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, SVG.Path, {
+    // Create and attach markers
+    marker: function marker(_marker, width, height, block) {
+      var attr = ['marker'];
+
+      // Build attribute name
+      if (_marker != 'all') attr.push(_marker);
+      attr = attr.join('-');
+
+      // Set marker attribute
+      _marker = arguments[1] instanceof SVG.Marker ? arguments[1] : this.doc().marker(width, height, block);
+
+      return this.attr(attr, _marker);
+    }
+
+  });
+  // Define list of available attributes for stroke and fill
+  var sugar = {
+    stroke: ['color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset'],
+    fill: ['color', 'opacity', 'rule'],
+    prefix: function prefix(t, a) {
+      return a == 'color' ? t : t + '-' + a;
+    }
+
+    // Add sugar for fill and stroke
+  };['fill', 'stroke'].forEach(function (m) {
+    var i,
+        extension = {};
+
+    extension[m] = function (o) {
+      if (typeof o === 'undefined') {
+        return this;
+      }
+      if (typeof o === 'string' || SVG.Color.isRgb(o) || o && typeof o.fill === 'function') {
+        this.attr(m, o);
+      } else
+        // set all attributes from sugar.fill and sugar.stroke list
+        {
+          for (i = sugar[m].length - 1; i >= 0; i--) {
+            if (o[sugar[m][i]] != null) {
+              this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]]);
+            }
+          }
+        }
+
+      return this;
+    };
+
+    SVG.extend(SVG.Element, SVG.FX, extension);
+  });
+
+  SVG.extend(SVG.Element, SVG.FX, {
+    // Map rotation to transform
+    rotate: function rotate(d, cx, cy) {
+      return this.transform({ rotation: d, cx: cx, cy: cy });
+    },
+    // Map skew to transform
+    skew: function skew(x, y, cx, cy) {
+      return arguments.length == 1 || arguments.length == 3 ? this.transform({ skew: x, cx: y, cy: cx }) : this.transform({ skewX: x, skewY: y, cx: cx, cy: cy });
+    },
+    // Map scale to transform
+    scale: function scale(x, y, cx, cy) {
+      return arguments.length == 1 || arguments.length == 3 ? this.transform({ scale: x, cx: y, cy: cx }) : this.transform({ scaleX: x, scaleY: y, cx: cx, cy: cy });
+    },
+    // Map translate to transform
+    translate: function translate(x, y) {
+      return this.transform({ x: x, y: y });
+    },
+    // Map flip to transform
+    flip: function flip(a, o) {
+      o = typeof a === 'number' ? a : o;
+      return this.transform({ flip: a || 'both', offset: o });
+    },
+    // Map matrix to transform
+    matrix: function matrix(m) {
+      return this.attr('transform', new SVG.Matrix(arguments.length == 6 ? [].slice.call(arguments) : m));
+    },
+    // Opacity
+    opacity: function opacity(value) {
+      return this.attr('opacity', value);
+    },
+    // Relative move over x axis
+    dx: function dx(x) {
+      return this.x(new SVG.Number(x).plus(this instanceof SVG.FX ? 0 : this.x()), true);
+    },
+    // Relative move over y axis
+    dy: function dy(y) {
+      return this.y(new SVG.Number(y).plus(this instanceof SVG.FX ? 0 : this.y()), true);
+    },
+    // Relative move over x and y axes
+    dmove: function dmove(x, y) {
+      return this.dx(x).dy(y);
+    }
+  });
+
+  SVG.extend(SVG.Rect, SVG.Ellipse, SVG.Circle, SVG.Gradient, SVG.FX, {
+    // Add x and y radius
+    radius: function radius(x, y) {
+      var type = (this._target || this).type;
+      return type == 'radial' || type == 'circle' ? this.attr('r', new SVG.Number(x)) : this.rx(x).ry(y == null ? x : y);
+    }
+  });
+
+  SVG.extend(SVG.Path, {
+    // Get path length
+    length: function length() {
+      return this.node.getTotalLength();
+    },
+    // Get point at length
+    pointAt: function pointAt(length) {
+      return this.node.getPointAtLength(length);
+    }
+  });
+
+  SVG.extend(SVG.Parent, SVG.Text, SVG.Tspan, SVG.FX, {
+    // Set font
+    font: function font(a, v) {
+      if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {
+        for (v in a) {
+          this.font(v, a[v]);
+        }
+      }
+
+      return a == 'leading' ? this.leading(v) : a == 'anchor' ? this.attr('text-anchor', v) : a == 'size' || a == 'family' || a == 'weight' || a == 'stretch' || a == 'variant' || a == 'style' ? this.attr('font-' + a, v) : this.attr(a, v);
+    }
+  });
+
+  SVG.Set = SVG.invent({
+    // Initialize
+    create: function create(members) {
+      // Set initial state
+      Array.isArray(members) ? this.members = members : this.clear();
+    },
+
+    // Add class methods
+    extend: {
+      // Add element to set
+      add: function add() {
+        var i,
+            il,
+            elements = [].slice.call(arguments);
+
+        for (i = 0, il = elements.length; i < il; i++) {
+          this.members.push(elements[i]);
+        }
+
+        return this;
+      },
+      // Remove element from set
+      remove: function remove(element) {
+        var i = this.index(element);
+
+        // remove given child
+        if (i > -1) {
+          this.members.splice(i, 1);
+        }
+
+        return this;
+      },
+      // Iterate over all members
+      each: function each(block) {
+        for (var i = 0, il = this.members.length; i < il; i++) {
+          block.apply(this.members[i], [i, this.members]);
+        }
+
+        return this;
+      },
+      // Restore to defaults
+      clear: function clear() {
+        // initialize store
+        this.members = [];
+
+        return this;
+      },
+      // Get the length of a set
+      length: function length() {
+        return this.members.length;
+      },
+      // Checks if a given element is present in set
+      has: function has(element) {
+        return this.index(element) >= 0;
+      },
+      // retuns index of given element in set
+      index: function index(element) {
+        return this.members.indexOf(element);
+      },
+      // Get member at given index
+      get: function get(i) {
+        return this.members[i];
+      },
+      // Get first member
+      first: function first() {
+        return this.get(0);
+      },
+      // Get last member
+      last: function last() {
+        return this.get(this.members.length - 1);
+      },
+      // Default value
+      valueOf: function valueOf() {
+        return this.members;
+      },
+      // Get the bounding box of all members included or empty box if set has no items
+      bbox: function bbox() {
+        // return an empty box of there are no members
+        if (this.members.length == 0) {
+          return new SVG.RBox();
+        }
+
+        // get the first rbox and update the target bbox
+        var rbox = this.members[0].rbox(this.members[0].doc());
+
+        this.each(function () {
+          // user rbox for correct position and visual representation
+          rbox = rbox.merge(this.rbox(this.doc()));
+        });
+
+        return rbox;
+      }
+    },
+
+    // Add parent method
+    construct: {
+      // Create a new set
+      set: function set(members) {
+        return new SVG.Set(members);
+      }
+    }
+  });
+
+  SVG.FX.Set = SVG.invent({
+    // Initialize node
+    create: function create(set) {
+      // store reference to set
+      this.set = set;
+    }
+
+  });
+
+  // Alias methods
+  SVG.Set.inherit = function () {
+    var m,
+        methods = [];
+
+    // gather shape methods
+    for (var m in SVG.Shape.prototype) {
+      if (typeof SVG.Shape.prototype[m] === 'function' && typeof SVG.Set.prototype[m] !== 'function') {
+        methods.push(m);
+      }
+    }
+
+    // apply shape aliasses
+    methods.forEach(function (method) {
+      SVG.Set.prototype[method] = function () {
+        for (var i = 0, il = this.members.length; i < il; i++) {
+          if (this.members[i] && typeof this.members[i][method] === 'function') {
+            this.members[i][method].apply(this.members[i], arguments);
+          }
+        }
+
+        return method == 'animate' ? this.fx || (this.fx = new SVG.FX.Set(this)) : this;
+      };
+    });
+
+    // clear methods for the next round
+    methods = [];
+
+    // gather fx methods
+    for (var m in SVG.FX.prototype) {
+      if (typeof SVG.FX.prototype[m] === 'function' && typeof SVG.FX.Set.prototype[m] !== 'function') {
+        methods.push(m);
+      }
+    }
+
+    // apply fx aliasses
+    methods.forEach(function (method) {
+      SVG.FX.Set.prototype[method] = function () {
+        for (var i = 0, il = this.set.members.length; i < il; i++) {
+          this.set.members[i].fx[method].apply(this.set.members[i].fx, arguments);
+        }
+
+        return this;
+      };
+    });
+  };
+
+  SVG.extend(SVG.Element, {
+    // Store data values on svg nodes
+    data: function data(a, v, r) {
+      if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {
+        for (v in a) {
+          this.data(v, a[v]);
+        }
+      } else if (arguments.length < 2) {
+        try {
+          return JSON.parse(this.attr('data-' + a));
+        } catch (e) {
+          return this.attr('data-' + a);
+        }
+      } else {
+        this.attr('data-' + a, v === null ? null : r === true || typeof v === 'string' || typeof v === 'number' ? v : JSON.stringify(v));
+      }
+
+      return this;
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Remember arbitrary data
+    remember: function remember(k, v) {
+      // remember every item in an object individually
+      if (_typeof(arguments[0]) === 'object') {
+        for (var v in k) {
+          this.remember(v, k[v]);
+        }
+      }
+
+      // retrieve memory
+      else if (arguments.length == 1) {
+          return this.memory()[k];
+        }
+
+        // store memory
+        else {
+            this.memory()[k] = v;
+          }
+
+      return this;
+    },
+
+    // Erase a given memory
+    forget: function forget() {
+      if (arguments.length == 0) {
+        this._memory = {};
+      } else {
+        for (var i = arguments.length - 1; i >= 0; i--) {
+          delete this.memory()[arguments[i]];
+        }
+      }
+
+      return this;
+    },
+
+    // Initialize or return local memory object
+    memory: function memory() {
+      return this._memory || (this._memory = {});
+    }
+
+  });
+  // Method for getting an element by id
+  SVG.get = function (id) {
+    var node = document.getElementById(idFromReference(id) || id);
+    return SVG.adopt(node);
+  };
+
+  // Select elements by query string
+  SVG.select = function (query, parent) {
+    return new SVG.Set(SVG.utils.map((parent || document).querySelectorAll(query), function (node) {
+      return SVG.adopt(node);
+    }));
+  };
+
+  SVG.extend(SVG.Parent, {
+    // Scoped select method
+    select: function select(query) {
+      return SVG.select(query, this.node);
+    }
+
+  });
+  function pathRegReplace(a, b, c, d) {
+    return c + d.replace(SVG.regex.dots, ' .');
+  }
+
+  // creates deep clone of array
+  function array_clone(arr) {
+    var clone = arr.slice(0);
+    for (var i = clone.length; i--;) {
+      if (Array.isArray(clone[i])) {
+        clone[i] = array_clone(clone[i]);
+      }
+    }
+    return clone;
+  }
+
+  // tests if a given element is instance of an object
+  function _is(el, obj) {
+    return el instanceof obj;
+  }
+
+  // tests if a given selector matches an element
+  function _matches(el, selector) {
+    return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector);
+  }
+
+  // Convert dash-separated-string to camelCase
+  function camelCase(s) {
+    return s.toLowerCase().replace(/-(.)/g, function (m, g) {
+      return g.toUpperCase();
+    });
+  }
+
+  // Capitalize first letter of a string
+  function capitalize(s) {
+    return s.charAt(0).toUpperCase() + s.slice(1);
+  }
+
+  // Ensure to six-based hex
+  function fullHex(hex) {
+    return hex.length == 4 ? ['#', hex.substring(1, 2), hex.substring(1, 2), hex.substring(2, 3), hex.substring(2, 3), hex.substring(3, 4), hex.substring(3, 4)].join('') : hex;
+  }
+
+  // Component to hex value
+  function compToHex(comp) {
+    var hex = comp.toString(16);
+    return hex.length == 1 ? '0' + hex : hex;
+  }
+
+  // Calculate proportional width and height values when necessary
+  function proportionalSize(element, width, height) {
+    if (width == null || height == null) {
+      var box = element.bbox();
+
+      if (width == null) {
+        width = box.width / box.height * height;
+      } else if (height == null) {
+        height = box.height / box.width * width;
+      }
+    }
+
+    return {
+      width: width,
+      height: height
+    };
+  }
+
+  // Delta transform point
+  function deltaTransformPoint(matrix, x, y) {
+    return {
+      x: x * matrix.a + y * matrix.c + 0,
+      y: x * matrix.b + y * matrix.d + 0
+    };
+  }
+
+  // Map matrix array to object
+  function arrayToMatrix(a) {
+    return { a: a[0], b: a[1], c: a[2], d: a[3], e: a[4], f: a[5] };
+  }
+
+  // Parse matrix if required
+  function parseMatrix(matrix) {
+    if (!(matrix instanceof SVG.Matrix)) {
+      matrix = new SVG.Matrix(matrix);
+    }
+
+    return matrix;
+  }
+
+  // Add centre point to transform object
+  function ensureCentre(o, target) {
+    o.cx = o.cx == null ? target.bbox().cx : o.cx;
+    o.cy = o.cy == null ? target.bbox().cy : o.cy;
+  }
+
+  // PathArray Helpers
+  function arrayToString(a) {
+    for (var i = 0, il = a.length, s = ''; i < il; i++) {
+      s += a[i][0];
+
+      if (a[i][1] != null) {
+        s += a[i][1];
+
+        if (a[i][2] != null) {
+          s += ' ';
+          s += a[i][2];
+
+          if (a[i][3] != null) {
+            s += ' ';
+            s += a[i][3];
+            s += ' ';
+            s += a[i][4];
+
+            if (a[i][5] != null) {
+              s += ' ';
+              s += a[i][5];
+              s += ' ';
+              s += a[i][6];
+
+              if (a[i][7] != null) {
+                s += ' ';
+                s += a[i][7];
+              }
+            }
+          }
+        }
+      }
+    }
+
+    return s + ' ';
+  }
+
+  // Deep new id assignment
+  function assignNewId(node) {
+    // do the same for SVG child nodes as well
+    for (var i = node.childNodes.length - 1; i >= 0; i--) {
+      if (node.childNodes[i] instanceof window.SVGElement) {
+        assignNewId(node.childNodes[i]);
+      }
+    }
+
+    return SVG.adopt(node).id(SVG.eid(node.nodeName));
+  }
+
+  // Add more bounding box properties
+  function fullBox(b) {
+    if (b.x == null) {
+      b.x = 0;
+      b.y = 0;
+      b.width = 0;
+      b.height = 0;
+    }
+
+    b.w = b.width;
+    b.h = b.height;
+    b.x2 = b.x + b.width;
+    b.y2 = b.y + b.height;
+    b.cx = b.x + b.width / 2;
+    b.cy = b.y + b.height / 2;
+
+    return b;
+  }
+
+  // Get id from reference string
+  function idFromReference(url) {
+    var m = (url || '').toString().match(SVG.regex.reference);
+
+    if (m) return m[1];
+  }
+
+  // If values like 1e-88 are passed, this is not a valid 32 bit float,
+  // but in those cases, we are so close to 0 that 0 works well!
+  function float32String(v) {
+    return Math.abs(v) > 1e-37 ? v : 0;
+  }
+
+  // Create matrix array for looping
+  var abcdef = 'abcdef'.split('');
+
+  // Add CustomEvent to IE9 and IE10
+  if (typeof window.CustomEvent !== 'function') {
+    // Code from: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent
+    var CustomEventPoly = function CustomEventPoly(event, options) {
+      options = options || { bubbles: false, cancelable: false, detail: undefined };
+      var e = document.createEvent('CustomEvent');
+      e.initCustomEvent(event, options.bubbles, options.cancelable, options.detail);
+      return e;
+    };
+
+    CustomEventPoly.prototype = window.Event.prototype;
+
+    SVG.CustomEvent = CustomEventPoly;
+  } else {
+    SVG.CustomEvent = window.CustomEvent;
+  }
+
+  // requestAnimationFrame / cancelAnimationFrame Polyfill with fallback based on Paul Irish
+  (function (w) {
+    var lastTime = 0;
+    var vendors = ['moz', 'webkit'];
+
+    for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+      w.requestAnimationFrame = w[vendors[x] + 'RequestAnimationFrame'];
+      w.cancelAnimationFrame = w[vendors[x] + 'CancelAnimationFrame'] || w[vendors[x] + 'CancelRequestAnimationFrame'];
+    }
+
+    w.requestAnimationFrame = w.requestAnimationFrame || function (callback) {
+      var currTime = new Date().getTime();
+      var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+
+      var id = w.setTimeout(function () {
+        callback(currTime + timeToCall);
+      }, timeToCall);
+
+      lastTime = currTime + timeToCall;
+      return id;
+    };
+
+    w.cancelAnimationFrame = w.cancelAnimationFrame || w.clearTimeout;
+  })(window);
+
+  return SVG;
+});
+
+/***/ }),
+/* 67 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/*
+ * classList.js: Cross-browser full element.classList implementation.
+ * 1.2.20171210
+ *
+ * By Eli Grey, http://eligrey.com
+ * License: Dedicated to the public domain.
+ *   See https://github.com/eligrey/classList.js/blob/master/LICENSE.md
+ */
+
+/*global self, document, DOMException */
+
+/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */
+
+if ("document" in self) {
+
+  // Full polyfill for browsers with no classList support
+  // Including IE < Edge missing SVGElement.classList
+  if (!("classList" in document.createElement("_")) || document.createElementNS && !("classList" in document.createElementNS("http://www.w3.org/2000/svg", "g"))) {
+
+    (function (view) {
+
+      "use strict";
+
+      if (!('Element' in view)) return;
+
+      var classListProp = "classList",
+          protoProp = "prototype",
+          elemCtrProto = view.Element[protoProp],
+          objCtr = Object,
+          strTrim = String[protoProp].trim || function () {
+        return this.replace(/^\s+|\s+$/g, "");
+      },
+          arrIndexOf = Array[protoProp].indexOf || function (item) {
+        var i = 0,
+            len = this.length;
+        for (; i < len; i++) {
+          if (i in this && this[i] === item) {
+            return i;
+          }
+        }
+        return -1;
+      }
+      // Vendors: please allow content code to instantiate DOMExceptions
+      ,
+          DOMEx = function DOMEx(type, message) {
+        this.name = type;
+        this.code = DOMException[type];
+        this.message = message;
+      },
+          checkTokenAndGetIndex = function checkTokenAndGetIndex(classList, token) {
+        if (token === "") {
+          throw new DOMEx("SYNTAX_ERR", "The token must not be empty.");
+        }
+        if (/\s/.test(token)) {
+          throw new DOMEx("INVALID_CHARACTER_ERR", "The token must not contain space characters.");
+        }
+        return arrIndexOf.call(classList, token);
+      },
+          ClassList = function ClassList(elem) {
+        var trimmedClasses = strTrim.call(elem.getAttribute("class") || ""),
+            classes = trimmedClasses ? trimmedClasses.split(/\s+/) : [],
+            i = 0,
+            len = classes.length;
+        for (; i < len; i++) {
+          this.push(classes[i]);
+        }
+        this._updateClassName = function () {
+          elem.setAttribute("class", this.toString());
+        };
+      },
+          classListProto = ClassList[protoProp] = [],
+          classListGetter = function classListGetter() {
+        return new ClassList(this);
+      };
+      // Most DOMException implementations don't allow calling DOMException's toString()
+      // on non-DOMExceptions. Error's toString() is sufficient here.
+      DOMEx[protoProp] = Error[protoProp];
+      classListProto.item = function (i) {
+        return this[i] || null;
+      };
+      classListProto.contains = function (token) {
+        return ~checkTokenAndGetIndex(this, token + "");
+      };
+      classListProto.add = function () {
+        var tokens = arguments,
+            i = 0,
+            l = tokens.length,
+            token,
+            updated = false;
+        do {
+          token = tokens[i] + "";
+          if (!~checkTokenAndGetIndex(this, token)) {
+            this.push(token);
+            updated = true;
+          }
+        } while (++i < l);
+
+        if (updated) {
+          this._updateClassName();
+        }
+      };
+      classListProto.remove = function () {
+        var tokens = arguments,
+            i = 0,
+            l = tokens.length,
+            token,
+            updated = false,
+            index;
+        do {
+          token = tokens[i] + "";
+          index = checkTokenAndGetIndex(this, token);
+          while (~index) {
+            this.splice(index, 1);
+            updated = true;
+            index = checkTokenAndGetIndex(this, token);
+          }
+        } while (++i < l);
+
+        if (updated) {
+          this._updateClassName();
+        }
+      };
+      classListProto.toggle = function (token, force) {
+        var result = this.contains(token),
+            method = result ? force !== true && "remove" : force !== false && "add";
+
+        if (method) {
+          this[method](token);
+        }
+
+        if (force === true || force === false) {
+          return force;
+        } else {
+          return !result;
+        }
+      };
+      classListProto.replace = function (token, replacement_token) {
+        var index = checkTokenAndGetIndex(token + "");
+        if (~index) {
+          this.splice(index, 1, replacement_token);
+          this._updateClassName();
+        }
+      };
+      classListProto.toString = function () {
+        return this.join(" ");
+      };
+
+      if (objCtr.defineProperty) {
+        var classListPropDesc = {
+          get: classListGetter,
+          enumerable: true,
+          configurable: true
+        };
+        try {
+          objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
+        } catch (ex) {
+          // IE 8 doesn't support enumerable:true
+          // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36
+          // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected
+          if (ex.number === undefined || ex.number === -0x7FF5EC54) {
+            classListPropDesc.enumerable = false;
+            objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
+          }
+        }
+      } else if (objCtr[protoProp].__defineGetter__) {
+        elemCtrProto.__defineGetter__(classListProp, classListGetter);
+      }
+    })(self);
+  }
+
+  // There is full or partial native classList support, so just check if we need
+  // to normalize the add/remove and toggle APIs.
+
+  (function () {
+    "use strict";
+
+    var testElement = document.createElement("_");
+
+    testElement.classList.add("c1", "c2");
+
+    // Polyfill for IE 10/11 and Firefox <26, where classList.add and
+    // classList.remove exist but support only one argument at a time.
+    if (!testElement.classList.contains("c2")) {
+      var createMethod = function createMethod(method) {
+        var original = DOMTokenList.prototype[method];
+
+        DOMTokenList.prototype[method] = function (token) {
+          var i,
+              len = arguments.length;
+
+          for (i = 0; i < len; i++) {
+            token = arguments[i];
+            original.call(this, token);
+          }
+        };
+      };
+      createMethod('add');
+      createMethod('remove');
+    }
+
+    testElement.classList.toggle("c3", false);
+
+    // Polyfill for IE 10 and Firefox <24, where classList.toggle does not
+    // support the second argument.
+    if (testElement.classList.contains("c3")) {
+      var _toggle = DOMTokenList.prototype.toggle;
+
+      DOMTokenList.prototype.toggle = function (token, force) {
+        if (1 in arguments && !this.contains(token) === !force) {
+          return force;
+        } else {
+          return _toggle.call(this, token);
+        }
+      };
+    }
+
+    // replace() polyfill
+    if (!("replace" in document.createElement("_").classList)) {
+      DOMTokenList.prototype.replace = function (token, replacement_token) {
+        var tokens = this.toString().split(" "),
+            index = tokens.indexOf(token + "");
+        if (~index) {
+          tokens = tokens.slice(index);
+          this.remove.apply(this, tokens);
+          this.add(replacement_token);
+          this.add.apply(this, tokens.slice(1));
+        }
+      };
+    }
+
+    testElement = null;
+  })();
+}
+
+/***/ }),
+/* 68 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/**
+* Detect Element Resize
+*
+* https://github.com/sdecima/javascript-detect-element-resize
+* Sebastian Decima
+*
+* version: 0.5.3
+**/
+
+(function () {
+  var stylesCreated = false;
+
+  function resetTriggers(element) {
+    var triggers = element.__resizeTriggers__,
+        expand = triggers.firstElementChild,
+        contract = triggers.lastElementChild,
+        expandChild = expand.firstElementChild;
+    contract.scrollLeft = contract.scrollWidth;
+    contract.scrollTop = contract.scrollHeight;
+    expandChild.style.width = expand.offsetWidth + 1 + 'px';
+    expandChild.style.height = expand.offsetHeight + 1 + 'px';
+    expand.scrollLeft = expand.scrollWidth;
+    expand.scrollTop = expand.scrollHeight;
+  }
+
+  function checkTriggers(element) {
+    return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;
+  }
+
+  function scrollListener(e) {
+    var element = this;
+    resetTriggers(this);
+    if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__);
+    this.__resizeRAF__ = requestFrame(function () {
+      if (checkTriggers(element)) {
+        element.__resizeLast__.width = element.offsetWidth;
+        element.__resizeLast__.height = element.offsetHeight;
+        element.__resizeListeners__.forEach(function (fn) {
+          fn.call(e);
+        });
+      }
+    });
+  }
+
+  function createStyles() {
+    if (!stylesCreated) {
+      // opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
+      var css = (animationKeyframes || '') + '.resize-triggers { ' + (animationStyle || '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
+          head = document.head || document.getElementsByTagName('head')[0],
+          style = document.createElement('style');
+
+      style.type = 'text/css';
+      if (style.styleSheet) {
+        style.styleSheet.cssText = css;
+      } else {
+        style.appendChild(document.createTextNode(css));
+      }
+
+      head.appendChild(style);
+      stylesCreated = true;
+    }
+  }
+
+  var requestFrame = function () {
+    var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (fn) {
+      return window.setTimeout(fn, 20);
+    };
+    return function (fn) {
+      return raf(fn);
+    };
+  }();
+
+  var cancelFrame = function () {
+    var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;
+    return function (id) {
+      return cancel(id);
+    };
+  }();
+
+  /* Detect CSS Animations support to detect element display/re-attach */
+  var animation = false,
+      keyframeprefix = '',
+      animationstartevent = 'animationstart',
+      domPrefixes = 'Webkit Moz O ms'.split(' '),
+      startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),
+      pfx = '';
+  {
+    var elm = document.createElement('fakeelement');
+    if (elm.style.animationName !== undefined) {
+      animation = true;
+    }
+
+    if (animation === false) {
+      for (var i = 0; i < domPrefixes.length; i++) {
+        if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
+          pfx = domPrefixes[i];
+          keyframeprefix = '-' + pfx.toLowerCase() + '-';
+          animationstartevent = startEvents[i];
+          break;
+        }
+      }
+    }
+  }
+
+  var animationName = 'resizeanim';
+  var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';
+  var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';
+
+  window.addResizeListener = function (element, fn) {
+    if (!element.__resizeTriggers__) {
+      if (getComputedStyle(element).position == 'static') element.style.position = 'relative';
+      createStyles();
+      element.__resizeLast__ = {};
+      element.__resizeListeners__ = [];
+      (element.__resizeTriggers__ = document.createElement('div')).className = 'resize-triggers';
+      element.__resizeTriggers__.innerHTML = '<div class="expand-trigger"><div></div></div>' + '<div class="contract-trigger"></div>';
+      element.appendChild(element.__resizeTriggers__);
+      resetTriggers(element);
+      element.addEventListener('scroll', scrollListener, true);
+
+      /* Listen for a css animation to detect element display/re-attach */
+      animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function (e) {
+        if (e.animationName == animationName) {
+          resetTriggers(element);
+        }
+      });
+    }
+    element.__resizeListeners__.push(fn);
+  };
+
+  window.removeResizeListener = function (element, fn) {
+    if (element) {
+      element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
+      if (!element.__resizeListeners__.length) {
+        element.removeEventListener('scroll', scrollListener);
+        element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
+      }
+    }
+  };
+})();
+
+/***/ }),
+/* 69 */
+/***/ (function(module, exports, __webpack_require__) {
+
+exports = module.exports = __webpack_require__(32)(false);
+// imports
+
+
+// module
+exports.push([module.i, ".apexcharts-canvas {\n  position: relative;\n  user-select: none;\n  /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */\n}\n\n/* scrollbar is not visible by default for legend, hence forcing the visibility */\n.apexcharts-canvas ::-webkit-scrollbar {\n  -webkit-appearance: none;\n  width: 6px;\n}\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n  border-radius: 4px;\n  background-color: rgba(0,0,0,.5);\n  box-shadow: 0 0 1px rgba(255,255,255,.5);\n  -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5);\n}\n.apexcharts-canvas.dark {\n  background: #343F57;\n}\n\n.apexcharts-inner {\n  position: relative;\n}\n\n.legend-mouseover-inactive {\n  transition: 0.15s ease all;\n  opacity: 0.20;\n}\n\n.apexcharts-series-collapsed {\n  opacity: 0;\n}\n\n.apexcharts-gridline, .apexcharts-text {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip {\n  border-radius: 5px;\n  box-shadow: 2px 2px 6px -4px #999;\n  cursor: default;\n  font-size: 14px;\n  left: 62px;\n  opacity: 0;\n  pointer-events: none;\n  position: absolute;\n  top: 20px;\n  overflow: hidden;\n  white-space: nowrap;\n  z-index: 12;\n  transition: 0.15s ease all;\n}\n.apexcharts-tooltip.light {\n  border: 1px solid #e3e3e3;\n  background: rgba(255, 255, 255, 0.96);\n}\n.apexcharts-tooltip.dark {\n  color: #fff;\n  background: rgba(30,30,30, 0.8);\n}\n.apexcharts-tooltip * {\n  font-family: inherit;\n}\n\n.apexcharts-tooltip .apexcharts-marker,\n.apexcharts-area-series .apexcharts-area,\n.apexcharts-line {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-tooltip-title {\n  padding: 6px;\n  font-size: 15px;\n  margin-bottom: 4px;\n}\n.apexcharts-tooltip.light .apexcharts-tooltip-title {\n  background: #ECEFF1;\n  border-bottom: 1px solid #ddd;\n}\n.apexcharts-tooltip.dark .apexcharts-tooltip-title {\n  background: rgba(0, 0, 0, 0.7);\n  border-bottom: 1px solid #333;\n}\n\n.apexcharts-tooltip-text-value,\n.apexcharts-tooltip-text-z-value {\n  display: inline-block;\n  font-weight: 600;\n  margin-left: 5px;\n}\n\n.apexcharts-tooltip-text-z-label:empty,\n.apexcharts-tooltip-text-z-value:empty {\n  display: none;\n}\n\n.apexcharts-tooltip-text-value, \n.apexcharts-tooltip-text-z-value {\n  font-weight: 600;\n}\n\n.apexcharts-tooltip-marker {\n  width: 12px;\n  height: 12px;\n  position: relative;\n  top: 0px;\n  margin-right: 10px;\n  border-radius: 50%;\n}\n\n.apexcharts-tooltip-series-group {\n  padding: 0 10px;\n  display: none;\n  text-align: left;\n  justify-content: left;\n  align-items: center;\n}\n\n.apexcharts-tooltip-series-group.active .apexcharts-tooltip-marker {\n  opacity: 1;\n}\n.apexcharts-tooltip-series-group.active, .apexcharts-tooltip-series-group:last-child {\n  padding-bottom: 4px;\n}\n.apexcharts-tooltip-series-group-hidden {\n  opacity: 0;\n  height: 0;\n  line-height: 0;\n  padding: 0 !important;\n}\n.apexcharts-tooltip-y-group {\n  padding: 6px 0 5px;\n}\n.apexcharts-tooltip-candlestick {\n  padding: 4px 8px;\n}\n.apexcharts-tooltip-candlestick > div {\n  margin: 4px 0;\n}\n.apexcharts-tooltip-candlestick span.value {\n  font-weight: bold;\n}\n\n.apexcharts-tooltip-rangebar {\n  padding: 5px 8px;\n}\n\n.apexcharts-tooltip-rangebar .category {\n  font-weight: 600;\n  color: #777;\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n  font-weight: bold;\n  display: block;\n  margin-bottom: 5px;\n}\n\n.apexcharts-xaxistooltip {\n  opacity: 0;\n  padding: 9px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-xaxistooltip:after, .apexcharts-xaxistooltip:before {\n\tleft: 50%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n\n.apexcharts-xaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-left: -6px;\n}\n.apexcharts-xaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-left: -7px;\n}\n\n.apexcharts-xaxistooltip-bottom:after, .apexcharts-xaxistooltip-bottom:before {\n  bottom: 100%;\n}\n\n.apexcharts-xaxistooltip-top:after, .apexcharts-xaxistooltip-top:before {\n  top: 100%;\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n  border-bottom-color: #ECEFF1;\n}\n.apexcharts-xaxistooltip-bottom:before {\n  border-bottom-color: #90A4AE;\n}\n\n.apexcharts-xaxistooltip-bottom.dark:after {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-bottom.dark:before {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-top:after {\n  border-top-color:#ECEFF1\n}\n.apexcharts-xaxistooltip-top:before {\n  border-top-color: #90A4AE;\n}\n.apexcharts-xaxistooltip-top.dark:after {\n  border-top-color:rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-top.dark:before {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n\n\n.apexcharts-xaxistooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-yaxistooltip {\n  opacity: 0;\n  padding: 4px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n}\n\n.apexcharts-yaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-yaxistooltip:after, .apexcharts-yaxistooltip:before {\n\ttop: 50%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n.apexcharts-yaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-top: -6px;\n}\n.apexcharts-yaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-top: -7px;\n}\n\n.apexcharts-yaxistooltip-left:after, .apexcharts-yaxistooltip-left:before {\n  left: 100%;\n}\n\n.apexcharts-yaxistooltip-right:after, .apexcharts-yaxistooltip-right:before {\n  right: 100%;\n}\n\n.apexcharts-yaxistooltip-left:after {\n  border-left-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-left:before {\n  border-left-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-left.dark:after {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-left.dark:before {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-right:after {\n  border-right-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-right:before {\n  border-right-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-right.dark:after {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-right.dark:before {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip.active {\n  opacity: 1;\n}\n\n.apexcharts-xcrosshairs, .apexcharts-ycrosshairs {\n  pointer-events: none;\n  opacity: 0;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xcrosshairs.active, .apexcharts-ycrosshairs.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-ycrosshairs-hidden {\n  opacity: 0;\n}\n\n.apexcharts-zoom-rect {\n  pointer-events: none;\n}\n.apexcharts-selection-rect {\n  cursor: move;\n}\n\n.svg_select_points, .svg_select_points_rot {\n  opacity: 0;\n  visibility: hidden;\n}\n.svg_select_points_l, .svg_select_points_r {\n  cursor: ew-resize;\n  opacity: 1;\n  visibility: visible;\n  fill: #888;\n}\n.apexcharts-canvas.zoomable .hovering-zoom {\n  cursor: crosshair\n}\n.apexcharts-canvas.zoomable .hovering-pan {\n  cursor: move\n}\n\n.apexcharts-xaxis,\n.apexcharts-yaxis {\n  pointer-events: none;\n}\n\n.apexcharts-zoom-icon, \n.apexcharts-zoom-in-icon,\n.apexcharts-zoom-out-icon,\n.apexcharts-reset-zoom-icon, \n.apexcharts-pan-icon, \n.apexcharts-selection-icon,\n.apexcharts-menu-icon, \n.apexcharts-toolbar-custom-icon {\n  cursor: pointer;\n  width: 20px;\n  height: 20px;\n  line-height: 24px;\n  color: #6E8192;\n  text-align: center;\n}\n\n\n.apexcharts-zoom-icon svg, \n.apexcharts-zoom-in-icon svg,\n.apexcharts-zoom-out-icon svg,\n.apexcharts-reset-zoom-icon svg,\n.apexcharts-menu-icon svg {\n  fill: #6E8192;\n}\n.apexcharts-selection-icon svg {\n  fill: #444;\n  transform: scale(0.76)\n}\n\n.dark .apexcharts-zoom-icon svg, \n.dark .apexcharts-zoom-in-icon svg,\n.dark .apexcharts-zoom-out-icon svg,\n.dark .apexcharts-reset-zoom-icon svg, \n.dark .apexcharts-pan-icon svg, \n.dark .apexcharts-selection-icon svg,\n.dark .apexcharts-menu-icon svg, \n.dark .apexcharts-toolbar-custom-icon svg{\n  fill: #f3f4f5;\n}\n\n.apexcharts-canvas .apexcharts-zoom-icon.selected svg, \n.apexcharts-canvas .apexcharts-selection-icon.selected svg, \n.apexcharts-canvas .apexcharts-reset-zoom-icon.selected svg {\n  fill: #008FFB;\n}\n.light .apexcharts-selection-icon:not(.selected):hover svg,\n.light .apexcharts-zoom-icon:not(.selected):hover svg, \n.light .apexcharts-zoom-in-icon:hover svg, \n.light .apexcharts-zoom-out-icon:hover svg, \n.light .apexcharts-reset-zoom-icon:hover svg, \n.light .apexcharts-menu-icon:hover svg {\n  fill: #333;\n}\n\n.apexcharts-selection-icon, .apexcharts-menu-icon {\n  position: relative;\n}\n.apexcharts-reset-zoom-icon {\n  margin-left: 5px;\n}\n.apexcharts-zoom-icon, .apexcharts-reset-zoom-icon, .apexcharts-menu-icon {\n  transform: scale(0.85);\n}\n\n.apexcharts-zoom-in-icon, .apexcharts-zoom-out-icon {\n  transform: scale(0.7)\n}\n\n.apexcharts-zoom-out-icon {\n  margin-right: 3px;\n}\n\n.apexcharts-pan-icon {\n  transform: scale(0.62);\n  position: relative;\n  left: 1px;\n  top: 0px;\n}\n.apexcharts-pan-icon svg {\n  fill: #fff;\n  stroke: #6E8192;\n  stroke-width: 2;\n}\n.apexcharts-pan-icon.selected svg {\n  stroke: #008FFB;\n}\n.apexcharts-pan-icon:not(.selected):hover svg {\n  stroke: #333;\n}\n\n.apexcharts-toolbar {\n  position: absolute;\n  z-index: 11;\n  top: 0px;\n  right: 3px;\n  max-width: 176px;\n  text-align: right;\n  border-radius: 3px;\n  padding: 0px 6px 2px 6px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center; \n}\n\n.apexcharts-toolbar svg {\n  pointer-events: none;\n}\n\n.apexcharts-menu {\n  background: #fff;\n  position: absolute;\n  top: 100%;\n  border: 1px solid #ddd;\n  border-radius: 3px;\n  padding: 3px;\n  right: 10px;\n  opacity: 0;\n  min-width: 110px;\n  transition: 0.15s ease all;\n  pointer-events: none;\n}\n\n.apexcharts-menu.open {\n  opacity: 1;\n  pointer-events: all;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-menu-item {\n  padding: 6px 7px;\n  font-size: 12px;\n  cursor: pointer;\n}\n.light .apexcharts-menu-item:hover {\n  background: #eee;\n}\n.dark .apexcharts-menu {\n  background: rgba(0, 0, 0, 0.7);\n  color: #fff;\n}\n\n@media screen and (min-width: 768px) {\n  .apexcharts-toolbar {\n    /*opacity: 0;*/\n  }\n\n  .apexcharts-canvas:hover .apexcharts-toolbar {\n    opacity: 1;\n  } \n}\n\n.apexcharts-datalabel.hidden {\n  opacity: 0;\n}\n\n.apexcharts-pie-label,\n.apexcharts-datalabel, .apexcharts-datalabel-label, .apexcharts-datalabel-value {\n  cursor: default;\n  pointer-events: none;\n}\n\n.apexcharts-pie-label-delay {\n  opacity: 0;\n  animation-name: opaque;\n  animation-duration: 0.3s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease;\n}\n\n.apexcharts-canvas .hidden {\n  opacity: 0;\n}\n\n.apexcharts-hide .apexcharts-series-points {\n  opacity: 0;\n}\n\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, .apexcharts-radar-series path, .apexcharts-radar-series polygon {\n  pointer-events: none;\n}\n\n/* markers */\n\n.apexcharts-marker {\n  transition: 0.15s ease all;\n}\n\n@keyframes opaque {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}", ""]);
+
+// exports
+
+
+/***/ }),
+/* 70 */
+/***/ (function(module, exports, __webpack_require__) {
+
+
+var content = __webpack_require__(69);
+
+if(typeof content === 'string') content = [[module.i, content, '']];
+
+var transform;
+var insertInto;
+
+
+
+var options = {"hmr":true}
+
+options.transform = transform
+options.insertInto = undefined;
+
+var update = __webpack_require__(71)(content, options);
+
+if(content.locals) module.exports = content.locals;
+
+if(false) {
+	module.hot.accept("!!../../node_modules/css-loader/index.js!./apexcharts.css", function() {
+		var newContent = require("!!../../node_modules/css-loader/index.js!./apexcharts.css");
+
+		if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
+
+		var locals = (function(a, b) {
+			var key, idx = 0;
+
+			for(key in a) {
+				if(!b || a[key] !== b[key]) return false;
+				idx++;
+			}
+
+			for(key in b) idx--;
+
+			return idx === 0;
+		}(content.locals, newContent.locals));
+
+		if(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');
+
+		update(newContent);
+	});
+
+	module.hot.dispose(function() { update(); });
+}
+
+/***/ }),
+/* 71 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/*
+	MIT License http://www.opensource.org/licenses/mit-license.php
+	Author Tobias Koppers @sokra
+*/
+
+var stylesInDom = {};
+
+var	memoize = function (fn) {
+	var memo;
+
+	return function () {
+		if (typeof memo === "undefined") memo = fn.apply(this, arguments);
+		return memo;
+	};
+};
+
+var isOldIE = memoize(function () {
+	// Test for IE <= 9 as proposed by Browserhacks
+	// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
+	// Tests for existence of standard globals is to allow style-loader
+	// to operate correctly into non-standard environments
+	// @see https://github.com/webpack-contrib/style-loader/issues/177
+	return window && document && document.all && !window.atob;
+});
+
+var getTarget = function (target, parent) {
+  if (parent){
+    return parent.querySelector(target);
+  }
+  return document.querySelector(target);
+};
+
+var getElement = (function (fn) {
+	var memo = {};
+
+	return function(target, parent) {
+                // If passing function in options, then use it for resolve "head" element.
+                // Useful for Shadow Root style i.e
+                // {
+                //   insertInto: function () { return document.querySelector("#foo").shadowRoot }
+                // }
+                if (typeof target === 'function') {
+                        return target();
+                }
+                if (typeof memo[target] === "undefined") {
+			var styleTarget = getTarget.call(this, target, parent);
+			// Special case to return head of iframe instead of iframe itself
+			if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
+				try {
+					// This will throw an exception if access to iframe is blocked
+					// due to cross-origin restrictions
+					styleTarget = styleTarget.contentDocument.head;
+				} catch(e) {
+					styleTarget = null;
+				}
+			}
+			memo[target] = styleTarget;
+		}
+		return memo[target]
+	};
+})();
+
+var singleton = null;
+var	singletonCounter = 0;
+var	stylesInsertedAtTop = [];
+
+var	fixUrls = __webpack_require__(59);
+
+module.exports = function(list, options) {
+	if (typeof DEBUG !== "undefined" && DEBUG) {
+		if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
+	}
+
+	options = options || {};
+
+	options.attrs = typeof options.attrs === "object" ? options.attrs : {};
+
+	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
+	// tags it will allow on a page
+	if (!options.singleton && typeof options.singleton !== "boolean") options.singleton = isOldIE();
+
+	// By default, add <style> tags to the <head> element
+        if (!options.insertInto) options.insertInto = "head";
+
+	// By default, add <style> tags to the bottom of the target
+	if (!options.insertAt) options.insertAt = "bottom";
+
+	var styles = listToStyles(list, options);
+
+	addStylesToDom(styles, options);
+
+	return function update (newList) {
+		var mayRemove = [];
+
+		for (var i = 0; i < styles.length; i++) {
+			var item = styles[i];
+			var domStyle = stylesInDom[item.id];
+
+			domStyle.refs--;
+			mayRemove.push(domStyle);
+		}
+
+		if(newList) {
+			var newStyles = listToStyles(newList, options);
+			addStylesToDom(newStyles, options);
+		}
+
+		for (var i = 0; i < mayRemove.length; i++) {
+			var domStyle = mayRemove[i];
+
+			if(domStyle.refs === 0) {
+				for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();
+
+				delete stylesInDom[domStyle.id];
+			}
+		}
+	};
+};
+
+function addStylesToDom (styles, options) {
+	for (var i = 0; i < styles.length; i++) {
+		var item = styles[i];
+		var domStyle = stylesInDom[item.id];
+
+		if(domStyle) {
+			domStyle.refs++;
+
+			for(var j = 0; j < domStyle.parts.length; j++) {
+				domStyle.parts[j](item.parts[j]);
+			}
+
+			for(; j < item.parts.length; j++) {
+				domStyle.parts.push(addStyle(item.parts[j], options));
+			}
+		} else {
+			var parts = [];
+
+			for(var j = 0; j < item.parts.length; j++) {
+				parts.push(addStyle(item.parts[j], options));
+			}
+
+			stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
+		}
+	}
+}
+
+function listToStyles (list, options) {
+	var styles = [];
+	var newStyles = {};
+
+	for (var i = 0; i < list.length; i++) {
+		var item = list[i];
+		var id = options.base ? item[0] + options.base : item[0];
+		var css = item[1];
+		var media = item[2];
+		var sourceMap = item[3];
+		var part = {css: css, media: media, sourceMap: sourceMap};
+
+		if(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});
+		else newStyles[id].parts.push(part);
+	}
+
+	return styles;
+}
+
+function insertStyleElement (options, style) {
+	var target = getElement(options.insertInto)
+
+	if (!target) {
+		throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");
+	}
+
+	var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];
+
+	if (options.insertAt === "top") {
+		if (!lastStyleElementInsertedAtTop) {
+			target.insertBefore(style, target.firstChild);
+		} else if (lastStyleElementInsertedAtTop.nextSibling) {
+			target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);
+		} else {
+			target.appendChild(style);
+		}
+		stylesInsertedAtTop.push(style);
+	} else if (options.insertAt === "bottom") {
+		target.appendChild(style);
+	} else if (typeof options.insertAt === "object" && options.insertAt.before) {
+		var nextSibling = getElement(options.insertAt.before, target);
+		target.insertBefore(style, nextSibling);
+	} else {
+		throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");
+	}
+}
+
+function removeStyleElement (style) {
+	if (style.parentNode === null) return false;
+	style.parentNode.removeChild(style);
+
+	var idx = stylesInsertedAtTop.indexOf(style);
+	if(idx >= 0) {
+		stylesInsertedAtTop.splice(idx, 1);
+	}
+}
+
+function createStyleElement (options) {
+	var style = document.createElement("style");
+
+	if(options.attrs.type === undefined) {
+		options.attrs.type = "text/css";
+	}
+
+	if(options.attrs.nonce === undefined) {
+		var nonce = getNonce();
+		if (nonce) {
+			options.attrs.nonce = nonce;
+		}
+	}
+
+	addAttrs(style, options.attrs);
+	insertStyleElement(options, style);
+
+	return style;
+}
+
+function createLinkElement (options) {
+	var link = document.createElement("link");
+
+	if(options.attrs.type === undefined) {
+		options.attrs.type = "text/css";
+	}
+	options.attrs.rel = "stylesheet";
+
+	addAttrs(link, options.attrs);
+	insertStyleElement(options, link);
+
+	return link;
+}
+
+function addAttrs (el, attrs) {
+	Object.keys(attrs).forEach(function (key) {
+		el.setAttribute(key, attrs[key]);
+	});
+}
+
+function getNonce() {
+	if (false) {
+		return null;
+	}
+
+	return __webpack_require__.nc;
+}
+
+function addStyle (obj, options) {
+	var style, update, remove, result;
+
+	// If a transform function was defined, run it on the css
+	if (options.transform && obj.css) {
+	    result = typeof options.transform === 'function'
+		 ? options.transform(obj.css) 
+		 : options.transform.default(obj.css);
+
+	    if (result) {
+	    	// If transform returns a value, use that instead of the original css.
+	    	// This allows running runtime transformations on the css.
+	    	obj.css = result;
+	    } else {
+	    	// If the transform function returns a falsy value, don't add this css.
+	    	// This allows conditional loading of css
+	    	return function() {
+	    		// noop
+	    	};
+	    }
+	}
+
+	if (options.singleton) {
+		var styleIndex = singletonCounter++;
+
+		style = singleton || (singleton = createStyleElement(options));
+
+		update = applyToSingletonTag.bind(null, style, styleIndex, false);
+		remove = applyToSingletonTag.bind(null, style, styleIndex, true);
+
+	} else if (
+		obj.sourceMap &&
+		typeof URL === "function" &&
+		typeof URL.createObjectURL === "function" &&
+		typeof URL.revokeObjectURL === "function" &&
+		typeof Blob === "function" &&
+		typeof btoa === "function"
+	) {
+		style = createLinkElement(options);
+		update = updateLink.bind(null, style, options);
+		remove = function () {
+			removeStyleElement(style);
+
+			if(style.href) URL.revokeObjectURL(style.href);
+		};
+	} else {
+		style = createStyleElement(options);
+		update = applyToTag.bind(null, style);
+		remove = function () {
+			removeStyleElement(style);
+		};
+	}
+
+	update(obj);
+
+	return function updateStyle (newObj) {
+		if (newObj) {
+			if (
+				newObj.css === obj.css &&
+				newObj.media === obj.media &&
+				newObj.sourceMap === obj.sourceMap
+			) {
+				return;
+			}
+
+			update(obj = newObj);
+		} else {
+			remove();
+		}
+	};
+}
+
+var replaceText = (function () {
+	var textStore = [];
+
+	return function (index, replacement) {
+		textStore[index] = replacement;
+
+		return textStore.filter(Boolean).join('\n');
+	};
+})();
+
+function applyToSingletonTag (style, index, remove, obj) {
+	var css = remove ? "" : obj.css;
+
+	if (style.styleSheet) {
+		style.styleSheet.cssText = replaceText(index, css);
+	} else {
+		var cssNode = document.createTextNode(css);
+		var childNodes = style.childNodes;
+
+		if (childNodes[index]) style.removeChild(childNodes[index]);
+
+		if (childNodes.length) {
+			style.insertBefore(cssNode, childNodes[index]);
+		} else {
+			style.appendChild(cssNode);
+		}
+	}
+}
+
+function applyToTag (style, obj) {
+	var css = obj.css;
+	var media = obj.media;
+
+	if(media) {
+		style.setAttribute("media", media)
+	}
+
+	if(style.styleSheet) {
+		style.styleSheet.cssText = css;
+	} else {
+		while(style.firstChild) {
+			style.removeChild(style.firstChild);
+		}
+
+		style.appendChild(document.createTextNode(css));
+	}
+}
+
+function updateLink (link, options, obj) {
+	var css = obj.css;
+	var sourceMap = obj.sourceMap;
+
+	/*
+		If convertToAbsoluteUrls isn't defined, but sourcemaps are enabled
+		and there is no publicPath defined then lets turn convertToAbsoluteUrls
+		on by default.  Otherwise default to the convertToAbsoluteUrls option
+		directly
+	*/
+	var autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;
+
+	if (options.convertToAbsoluteUrls || autoFixUrls) {
+		css = fixUrls(css);
+	}
+
+	if (sourceMap) {
+		// http://stackoverflow.com/a/26603875
+		css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
+	}
+
+	var blob = new Blob([css], { type: "text/css" });
+
+	var oldSrc = link.href;
+
+	link.href = URL.createObjectURL(blob);
+
+	if(oldSrc) URL.revokeObjectURL(oldSrc);
+}
+
+
+/***/ }),
+/* 72 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg fill=\"#000000\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"></path><path d=\"M0 0h24v24H0z\" fill=\"none\"></path></svg>"
+
+/***/ }),
+/* 73 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path><path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"></path></svg>"
+
+/***/ }),
+/* 74 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"></path></svg>"
+
+/***/ }),
+/* 75 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"#000000\" viewBox=\"0 0 24 24\"><defs><path d=\"M0 0h24v24H0z\" id=\"a\"></path></defs><clipPath id=\"b\"><use overflow=\"visible\" xlink:href=\"#a\"></use></clipPath><path clip-path=\"url(#b)\" d=\"M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z\"></path></svg>"
+
+/***/ }),
+/* 76 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"></path></svg>"
+
+/***/ }),
+/* 77 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg fill=\"#6E8192\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2z\"></path></svg>"
+
+/***/ }),
+/* 78 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"#000000\" viewBox=\"0 0 24 24\"><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"></path><path d=\"M0 0h24v24H0V0z\" fill=\"none\"></path><path d=\"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\"></path></svg>"
+
+/***/ }),
+/* 79 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(31);
+
+
+/***/ })
+/******/ ])});;
Index: public/vendors/charts/apex/apexcharts.common.js
===================================================================
--- public/vendors/charts/apex/apexcharts.common.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/apexcharts.common.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,28683 @@
+/*!
+ * ApexCharts v3.6.12
+ * (c) 2018-2019 Juned Chhipa
+ * Released under the MIT License.
+ */
+'use strict';
+
+function _typeof(obj) {
+  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+    _typeof = function (obj) {
+      return typeof obj;
+    };
+  } else {
+    _typeof = function (obj) {
+      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+    };
+  }
+
+  return _typeof(obj);
+}
+
+function _classCallCheck(instance, Constructor) {
+  if (!(instance instanceof Constructor)) {
+    throw new TypeError("Cannot call a class as a function");
+  }
+}
+
+function _defineProperties(target, props) {
+  for (var i = 0; i < props.length; i++) {
+    var descriptor = props[i];
+    descriptor.enumerable = descriptor.enumerable || false;
+    descriptor.configurable = true;
+    if ("value" in descriptor) descriptor.writable = true;
+    Object.defineProperty(target, descriptor.key, descriptor);
+  }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+  if (staticProps) _defineProperties(Constructor, staticProps);
+  return Constructor;
+}
+
+function _defineProperty(obj, key, value) {
+  if (key in obj) {
+    Object.defineProperty(obj, key, {
+      value: value,
+      enumerable: true,
+      configurable: true,
+      writable: true
+    });
+  } else {
+    obj[key] = value;
+  }
+
+  return obj;
+}
+
+function _objectSpread(target) {
+  for (var i = 1; i < arguments.length; i++) {
+    var source = arguments[i] != null ? arguments[i] : {};
+    var ownKeys = Object.keys(source);
+
+    if (typeof Object.getOwnPropertySymbols === 'function') {
+      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
+        return Object.getOwnPropertyDescriptor(source, sym).enumerable;
+      }));
+    }
+
+    ownKeys.forEach(function (key) {
+      _defineProperty(target, key, source[key]);
+    });
+  }
+
+  return target;
+}
+
+function _inherits(subClass, superClass) {
+  if (typeof superClass !== "function" && superClass !== null) {
+    throw new TypeError("Super expression must either be null or a function");
+  }
+
+  subClass.prototype = Object.create(superClass && superClass.prototype, {
+    constructor: {
+      value: subClass,
+      writable: true,
+      configurable: true
+    }
+  });
+  if (superClass) _setPrototypeOf(subClass, superClass);
+}
+
+function _getPrototypeOf(o) {
+  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
+    return o.__proto__ || Object.getPrototypeOf(o);
+  };
+  return _getPrototypeOf(o);
+}
+
+function _setPrototypeOf(o, p) {
+  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+    o.__proto__ = p;
+    return o;
+  };
+
+  return _setPrototypeOf(o, p);
+}
+
+function _assertThisInitialized(self) {
+  if (self === void 0) {
+    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+  }
+
+  return self;
+}
+
+function _possibleConstructorReturn(self, call) {
+  if (call && (typeof call === "object" || typeof call === "function")) {
+    return call;
+  }
+
+  return _assertThisInitialized(self);
+}
+
+function _toConsumableArray(arr) {
+  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
+}
+
+function _arrayWithoutHoles(arr) {
+  if (Array.isArray(arr)) {
+    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+    return arr2;
+  }
+}
+
+function _iterableToArray(iter) {
+  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+}
+
+function _nonIterableSpread() {
+  throw new TypeError("Invalid attempt to spread non-iterable instance");
+}
+
+/*
+ ** Generic functions which are not dependent on ApexCharts
+ */
+var Utils =
+/*#__PURE__*/
+function () {
+  function Utils() {
+    _classCallCheck(this, Utils);
+  }
+
+  _createClass(Utils, [{
+    key: "shadeRGBColor",
+    value: function shadeRGBColor(percent, color) {
+      var f = color.split(','),
+          t = percent < 0 ? 0 : 255,
+          p = percent < 0 ? percent * -1 : percent,
+          R = parseInt(f[0].slice(4)),
+          G = parseInt(f[1]),
+          B = parseInt(f[2]);
+      return 'rgb(' + (Math.round((t - R) * p) + R) + ',' + (Math.round((t - G) * p) + G) + ',' + (Math.round((t - B) * p) + B) + ')';
+    }
+  }, {
+    key: "shadeHexColor",
+    value: function shadeHexColor(percent, color) {
+      var f = parseInt(color.slice(1), 16),
+          t = percent < 0 ? 0 : 255,
+          p = percent < 0 ? percent * -1 : percent,
+          R = f >> 16,
+          G = f >> 8 & 0x00ff,
+          B = f & 0x0000ff;
+      return '#' + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1);
+    } // beautiful color shading blending code
+    // http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors
+
+  }, {
+    key: "shadeColor",
+    value: function shadeColor(p, color) {
+      if (color.length > 7) return this.shadeRGBColor(p, color);else return this.shadeHexColor(p, color);
+    }
+  }], [{
+    key: "bind",
+    value: function bind(fn, me) {
+      return function () {
+        return fn.apply(me, arguments);
+      };
+    }
+  }, {
+    key: "isObject",
+    value: function isObject(item) {
+      return item && _typeof(item) === 'object' && !Array.isArray(item) && item != null;
+    }
+  }, {
+    key: "listToArray",
+    value: function listToArray(list) {
+      var i,
+          array = [];
+
+      for (i = 0; i < list.length; i++) {
+        array[i] = list[i];
+      }
+
+      return array;
+    } // to extend defaults with user options
+    // credit: http://stackoverflow.com/questions/27936772/deep-object-merging-in-es6-es7#answer-34749873
+
+  }, {
+    key: "extend",
+    value: function extend(target, source) {
+      var _this = this;
+
+      if (typeof Object.assign !== 'function') {
+
+        (function () {
+          Object.assign = function (target) {
+
+            if (target === undefined || target === null) {
+              throw new TypeError('Cannot convert undefined or null to object');
+            }
+
+            var output = Object(target);
+
+            for (var index = 1; index < arguments.length; index++) {
+              var _source = arguments[index];
+
+              if (_source !== undefined && _source !== null) {
+                for (var nextKey in _source) {
+                  if (_source.hasOwnProperty(nextKey)) {
+                    output[nextKey] = _source[nextKey];
+                  }
+                }
+              }
+            }
+
+            return output;
+          };
+        })();
+      }
+
+      var output = Object.assign({}, target);
+
+      if (this.isObject(target) && this.isObject(source)) {
+        Object.keys(source).forEach(function (key) {
+          if (_this.isObject(source[key])) {
+            if (!(key in target)) {
+              Object.assign(output, _defineProperty({}, key, source[key]));
+            } else {
+              output[key] = _this.extend(target[key], source[key]);
+            }
+          } else {
+            Object.assign(output, _defineProperty({}, key, source[key]));
+          }
+        });
+      }
+
+      return output;
+    }
+  }, {
+    key: "extendArray",
+    value: function extendArray(arrToExtend, resultArr) {
+      var extendedArr = [];
+      arrToExtend.map(function (item) {
+        extendedArr.push(Utils.extend(resultArr, item));
+      });
+      arrToExtend = extendedArr;
+      return arrToExtend;
+    } // If month counter exceeds 12, it starts again from 1
+
+  }, {
+    key: "monthMod",
+    value: function monthMod(month) {
+      return month % 12;
+    }
+  }, {
+    key: "addProps",
+    value: function addProps(obj, arr, val) {
+      if (typeof arr === 'string') {
+        arr = arr.split('.');
+      }
+
+      obj[arr[0]] = obj[arr[0]] || {};
+      var tmpObj = obj[arr[0]];
+
+      if (arr.length > 1) {
+        arr.shift();
+        this.addProps(tmpObj, arr, val);
+      } else {
+        obj[arr[0]] = val;
+      }
+
+      return obj;
+    }
+  }, {
+    key: "clone",
+    value: function clone(source) {
+      if (Object.prototype.toString.call(source) === '[object Array]') {
+        var cloneResult = [];
+
+        for (var i = 0; i < source.length; i++) {
+          cloneResult[i] = this.clone(source[i]);
+        }
+
+        return cloneResult;
+      } else if (_typeof(source) === 'object') {
+        var _cloneResult = {};
+
+        for (var prop in source) {
+          if (source.hasOwnProperty(prop)) {
+            _cloneResult[prop] = this.clone(source[prop]);
+          }
+        }
+
+        return _cloneResult;
+      } else {
+        return source;
+      }
+    }
+  }, {
+    key: "log10",
+    value: function log10(x) {
+      return Math.log(x) / Math.LN10;
+    }
+  }, {
+    key: "roundToBase10",
+    value: function roundToBase10(x) {
+      return Math.pow(10, Math.floor(Math.log10(x)));
+    }
+  }, {
+    key: "roundToBase",
+    value: function roundToBase(x, base) {
+      return Math.pow(base, Math.floor(Math.log(x) / Math.log(base)));
+    }
+  }, {
+    key: "parseNumber",
+    value: function parseNumber(val) {
+      if (val === null) return val;
+      return parseFloat(val);
+    }
+  }, {
+    key: "noExponents",
+    value: function noExponents(val) {
+      var data = String(val).split(/[eE]/);
+      if (data.length == 1) return data[0];
+      var z = '',
+          sign = val < 0 ? '-' : '',
+          str = data[0].replace('.', ''),
+          mag = Number(data[1]) + 1;
+
+      if (mag < 0) {
+        z = sign + '0.';
+
+        while (mag++) {
+          z += '0';
+        }
+
+        return z + str.replace(/^\-/, '');
+      }
+
+      mag -= str.length;
+
+      while (mag--) {
+        z += '0';
+      }
+
+      return str + z;
+    }
+  }, {
+    key: "getDimensions",
+    value: function getDimensions(el) {
+      var computedStyle = getComputedStyle(el);
+      var ret = [];
+      var elementHeight = el.clientHeight;
+      var elementWidth = el.clientWidth;
+      elementHeight -= parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom);
+      elementWidth -= parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);
+      ret.push(elementWidth);
+      ret.push(elementHeight);
+      return ret;
+    }
+  }, {
+    key: "getBoundingClientRect",
+    value: function getBoundingClientRect(element) {
+      var rect = element.getBoundingClientRect();
+      return {
+        top: rect.top,
+        right: rect.right,
+        bottom: rect.bottom,
+        left: rect.left,
+        width: rect.width,
+        height: rect.height,
+        x: rect.x,
+        y: rect.y
+      };
+    } // http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-12342275
+
+  }, {
+    key: "hexToRgba",
+    value: function hexToRgba() {
+      var hex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '#999999';
+      var opacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.6;
+
+      if (hex.substring(0, 1) !== '#') {
+        hex = '#999999';
+      }
+
+      var h = hex.replace('#', '');
+      h = h.match(new RegExp('(.{' + h.length / 3 + '})', 'g'));
+
+      for (var i = 0; i < h.length; i++) {
+        h[i] = parseInt(h[i].length === 1 ? h[i] + h[i] : h[i], 16);
+      }
+
+      if (typeof opacity !== 'undefined') h.push(opacity);
+      return 'rgba(' + h.join(',') + ')';
+    }
+  }, {
+    key: "getOpacityFromRGBA",
+    value: function getOpacityFromRGBA(rgba) {
+      rgba = rgba.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
+      return rgba[3];
+    }
+  }, {
+    key: "rgb2hex",
+    value: function rgb2hex(rgb) {
+      rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
+      return rgb && rgb.length === 4 ? '#' + ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';
+    }
+  }, {
+    key: "isColorHex",
+    value: function isColorHex(color) {
+      return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(color);
+    }
+  }, {
+    key: "polarToCartesian",
+    value: function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
+      var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;
+      return {
+        x: centerX + radius * Math.cos(angleInRadians),
+        y: centerY + radius * Math.sin(angleInRadians)
+      };
+    }
+  }, {
+    key: "escapeString",
+    value: function escapeString(str) {
+      var escapeWith = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';
+      var newStr = str.toString().slice();
+      newStr = newStr.replace(/[` ~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, escapeWith);
+      return newStr;
+    }
+  }, {
+    key: "negToZero",
+    value: function negToZero(val) {
+      return val < 0 ? 0 : val;
+    }
+  }, {
+    key: "moveIndexInArray",
+    value: function moveIndexInArray(arr, old_index, new_index) {
+      if (new_index >= arr.length) {
+        var k = new_index - arr.length + 1;
+
+        while (k--) {
+          arr.push(undefined);
+        }
+      }
+
+      arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);
+      return arr;
+    }
+  }, {
+    key: "extractNumber",
+    value: function extractNumber(s) {
+      return parseFloat(s.replace(/[^\d\.]*/g, ''));
+    }
+  }, {
+    key: "randomString",
+    value: function randomString(len) {
+      var text = '';
+      var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+
+      for (var i = 0; i < len; i++) {
+        text += possible.charAt(Math.floor(Math.random() * possible.length));
+      }
+
+      return text;
+    }
+  }, {
+    key: "findAncestor",
+    value: function findAncestor(el, cls) {
+      while ((el = el.parentElement) && !el.classList.contains(cls)) {
+      }
+
+      return el;
+    }
+  }, {
+    key: "setELstyles",
+    value: function setELstyles(el, styles) {
+      for (var key in styles) {
+        if (styles.hasOwnProperty(key)) {
+          el.style.key = styles[key];
+        }
+      }
+    }
+  }, {
+    key: "isNumber",
+    value: function isNumber(value) {
+      return !isNaN(value) && parseFloat(Number(value)) === value && !isNaN(parseInt(value, 10));
+    }
+  }, {
+    key: "isFloat",
+    value: function isFloat(n) {
+      return Number(n) === n && n % 1 !== 0;
+    }
+  }, {
+    key: "isSafari",
+    value: function isSafari() {
+      return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
+    }
+  }, {
+    key: "isFirefox",
+    value: function isFirefox() {
+      return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
+    }
+  }, {
+    key: "isIE11",
+    value: function isIE11() {
+      if (window.navigator.userAgent.indexOf('MSIE') !== -1 || window.navigator.appVersion.indexOf('Trident/') > -1) {
+        return true;
+      }
+    }
+  }, {
+    key: "isIE",
+    value: function isIE() {
+      var ua = window.navigator.userAgent;
+      var msie = ua.indexOf('MSIE ');
+
+      if (msie > 0) {
+        // IE 10 or older => return version number
+        return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
+      }
+
+      var trident = ua.indexOf('Trident/');
+
+      if (trident > 0) {
+        // IE 11 => return version number
+        var rv = ua.indexOf('rv:');
+        return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
+      }
+
+      var edge = ua.indexOf('Edge/');
+
+      if (edge > 0) {
+        // Edge (IE 12+) => return version number
+        return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
+      } // other browser
+
+
+      return false;
+    }
+  }]);
+
+  return Utils;
+}();
+
+/**
+ * ApexCharts Filters Class for setting hover/active states on the paths.
+ *
+ * @module Formatters
+ **/
+
+var Filters =
+/*#__PURE__*/
+function () {
+  function Filters(ctx) {
+    _classCallCheck(this, Filters);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  } // create a re-usable filter which can be appended other filter effects and applied to multiple elements
+
+
+  _createClass(Filters, [{
+    key: "getDefaultFilter",
+    value: function getDefaultFilter(el, i) {
+      var w = this.w;
+      el.unfilter(true);
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+
+      if (w.config.states.normal.filter !== 'none') {
+        this.applyFilter(el, i, w.config.states.normal.filter.type, w.config.states.normal.filter.value);
+      } else {
+        if (w.config.chart.dropShadow.enabled) {
+          this.dropShadow(el, w.config.chart.dropShadow, i);
+        }
+      }
+    }
+  }, {
+    key: "addNormalFilter",
+    value: function addNormalFilter(el, i) {
+      var w = this.w;
+
+      if (w.config.chart.dropShadow.enabled) {
+        this.dropShadow(el, w.config.chart.dropShadow, i);
+      }
+    } // appends dropShadow to the filter object which can be chained with other filter effects
+
+  }, {
+    key: "addLightenFilter",
+    value: function addLightenFilter(el, i, attrs) {
+      var _this = this;
+
+      var w = this.w;
+      var intensity = attrs.intensity;
+
+      if (Utils.isFirefox()) {
+        return;
+      }
+
+      el.unfilter(true);
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+      el.filter(function (add) {
+        var shadowAttr = w.config.chart.dropShadow;
+
+        if (shadowAttr.enabled) {
+          filter = _this.addShadow(add, i, shadowAttr);
+        } else {
+          filter = add;
+        }
+
+        filter.componentTransfer({
+          rgb: {
+            type: 'linear',
+            slope: 1.5,
+            intercept: intensity
+          }
+        });
+      });
+      el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+    } // appends dropShadow to the filter object which can be chained with other filter effects
+
+  }, {
+    key: "addDarkenFilter",
+    value: function addDarkenFilter(el, i, attrs) {
+      var _this2 = this;
+
+      var w = this.w;
+      var intensity = attrs.intensity;
+
+      if (Utils.isFirefox()) {
+        return;
+      }
+
+      el.unfilter(true);
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+      el.filter(function (add) {
+        var shadowAttr = w.config.chart.dropShadow;
+
+        if (shadowAttr.enabled) {
+          filter = _this2.addShadow(add, i, shadowAttr);
+        } else {
+          filter = add;
+        }
+
+        filter.componentTransfer({
+          rgb: {
+            type: 'linear',
+            slope: intensity
+          }
+        });
+      });
+      el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+    }
+  }, {
+    key: "applyFilter",
+    value: function applyFilter(el, i, filter) {
+      var intensity = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.5;
+
+      switch (filter) {
+        case 'none':
+          {
+            this.addNormalFilter(el, i);
+            break;
+          }
+
+        case 'lighten':
+          {
+            this.addLightenFilter(el, i, {
+              intensity: intensity
+            });
+            break;
+          }
+
+        case 'darken':
+          {
+            this.addDarkenFilter(el, i, {
+              intensity: intensity
+            });
+            break;
+          }
+
+        default:
+          // do nothing
+          break;
+      }
+    } // appends dropShadow to the filter object which can be chained with other filter effects
+
+  }, {
+    key: "addShadow",
+    value: function addShadow(add, i, attrs) {
+      var blur = attrs.blur,
+          top = attrs.top,
+          left = attrs.left,
+          color = attrs.color,
+          opacity = attrs.opacity;
+      var shadowBlur = add.flood(Array.isArray(color) ? color[i] : color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source);
+      return add.blend(add.source, shadowBlur);
+    } // directly adds dropShadow to the element and returns the same element.
+    // the only way it is different from the addShadow() function is that addShadow is chainable to other filters, while this function discards all filters and add dropShadow
+
+  }, {
+    key: "dropShadow",
+    value: function dropShadow(el, attrs) {
+      var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+      var top = attrs.top,
+          left = attrs.left,
+          blur = attrs.blur,
+          color = attrs.color,
+          opacity = attrs.opacity,
+          noUserSpaceOnUse = attrs.noUserSpaceOnUse;
+      el.unfilter(true);
+      color = Array.isArray(color) ? color[i] : color;
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+      el.filter(function (add) {
+        var shadowBlur = null;
+
+        if (Utils.isSafari() || Utils.isFirefox() || Utils.isIE()) {
+          // safari/firefox has some alternative way to use this filter
+          shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur);
+        } else {
+          shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source);
+        }
+
+        add.blend(add.source, shadowBlur);
+      });
+
+      if (!noUserSpaceOnUse) {
+        el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+      }
+
+      return el;
+    }
+  }, {
+    key: "setSelectionFilter",
+    value: function setSelectionFilter(el, realIndex, dataPointIndex) {
+      var w = this.w;
+
+      if (typeof w.globals.selectedDataPoints[realIndex] !== 'undefined') {
+        if (w.globals.selectedDataPoints[realIndex].indexOf(dataPointIndex) > -1) {
+          el.node.setAttribute('selected', true);
+          var activeFilter = w.config.states.active.filter;
+
+          if (activeFilter !== 'none') {
+            this.applyFilter(el, realIndex, activeFilter.type, activeFilter.value);
+          }
+        }
+      }
+    }
+  }]);
+
+  return Filters;
+}();
+
+/**
+ * ApexCharts Animation Class.
+ *
+ * @module Animations
+ **/
+
+var Animations =
+/*#__PURE__*/
+function () {
+  function Animations(ctx) {
+    _classCallCheck(this, Animations);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.setEasingFunctions();
+  }
+
+  _createClass(Animations, [{
+    key: "setEasingFunctions",
+    value: function setEasingFunctions() {
+      var easing;
+      var userDefinedEasing = this.w.config.chart.animations.easing;
+
+      switch (userDefinedEasing) {
+        case 'linear':
+          {
+            easing = '-';
+            break;
+          }
+
+        case 'easein':
+          {
+            easing = '<';
+            break;
+          }
+
+        case 'easeout':
+          {
+            easing = '>';
+            break;
+          }
+
+        case 'easeinout':
+          {
+            easing = '<>';
+            break;
+          }
+
+        case 'swing':
+          {
+            easing = function easing(pos) {
+              var s = 1.70158;
+              return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
+            };
+
+            break;
+          }
+
+        case 'bounce':
+          {
+            easing = function easing(pos) {
+              if (pos < 1 / 2.75) {
+                return 7.5625 * pos * pos;
+              } else if (pos < 2 / 2.75) {
+                return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
+              } else if (pos < 2.5 / 2.75) {
+                return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
+              } else {
+                return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
+              }
+            };
+
+            break;
+          }
+
+        case 'elastic':
+          {
+            easing = function easing(pos) {
+              if (pos === !!pos) return pos;
+              return Math.pow(2, -10 * pos) * Math.sin((pos - 0.075) * (2 * Math.PI) / 0.3) + 1;
+            };
+
+            break;
+          }
+
+        default:
+          {
+            easing = '<>';
+          }
+      }
+
+      this.w.globals.easing = easing;
+    }
+  }, {
+    key: "animateLine",
+    value: function animateLine(el, from, to, speed) {
+      el.attr(from).animate(speed).attr(to);
+    }
+    /*
+     ** Animate radius of a circle element
+     */
+
+  }, {
+    key: "animateCircleRadius",
+    value: function animateCircleRadius(el, from, to, speed, easing) {
+      if (!from) from = 0;
+      el.attr({
+        r: from
+      }).animate(speed, easing).attr({
+        r: to
+      });
+    }
+    /*
+     ** Animate radius and position of a circle element
+     */
+
+  }, {
+    key: "animateCircle",
+    value: function animateCircle(el, from, to, speed, easing) {
+      el.attr({
+        r: from.r,
+        cx: from.cx,
+        cy: from.cy
+      }).animate(speed, easing).attr({
+        r: to.r,
+        cx: to.cx,
+        cy: to.cy
+      });
+    }
+    /*
+     ** Animate rect properties
+     */
+
+  }, {
+    key: "animateRect",
+    value: function animateRect(el, from, to, speed, fn) {
+      el.attr(from).animate(speed).attr(to).afterAll(function () {
+        fn();
+      });
+    }
+  }, {
+    key: "animatePathsGradually",
+    value: function animatePathsGradually(params) {
+      var el = params.el,
+          j = params.j,
+          pathFrom = params.pathFrom,
+          pathTo = params.pathTo,
+          speed = params.speed,
+          delay = params.delay,
+          strokeWidth = params.strokeWidth;
+      var me = this;
+      var w = this.w;
+      var delayFactor = 0;
+
+      if (w.config.chart.animations.animateGradually.enabled) {
+        delayFactor = w.config.chart.animations.animateGradually.delay;
+      }
+
+      if (w.config.chart.animations.dynamicAnimation.enabled && w.globals.dataChanged) {
+        delayFactor = 0;
+      }
+
+      me.morphSVG(el, j, pathFrom, pathTo, speed, strokeWidth, delay * delayFactor);
+    }
+  }, {
+    key: "showDelayedElements",
+    value: function showDelayedElements() {
+      this.w.globals.delayedElements.forEach(function (d) {
+        var ele = d.el;
+        ele.classList.remove('hidden');
+      });
+    } // SVG.js animation for morphing one path to another
+
+  }, {
+    key: "morphSVG",
+    value: function morphSVG(el, j, pathFrom, pathTo, speed, strokeWidth, delay) {
+      var _this = this;
+
+      var w = this.w;
+
+      if (!pathFrom) {
+        pathFrom = el.attr('pathFrom');
+      }
+
+      if (!pathTo) {
+        pathTo = el.attr('pathTo');
+      }
+
+      if (!pathFrom || pathFrom.indexOf('undefined') > -1 || pathFrom.indexOf('NaN') > -1) {
+        pathFrom = "M 0 ".concat(w.globals.gridHeight);
+        speed = 1;
+      }
+
+      if (pathTo.indexOf('undefined') > -1 || pathTo.indexOf('NaN') > -1) {
+        pathTo = "M 0 ".concat(w.globals.gridHeight);
+        speed = 1;
+      }
+
+      if (!w.globals.shouldAnimate) {
+        speed = 1;
+      }
+
+      el.plot(pathFrom).animate(1, w.globals.easing, delay).plot(pathFrom).animate(speed, w.globals.easing, delay).plot(pathTo).afterAll(function () {
+        // a flag to indicate that the original mount function can return true now as animation finished here
+        if (Utils.isNumber(j)) {
+          if (j === w.globals.series[w.globals.maxValsInArrayIndex].length - 2 && w.globals.shouldAnimate) {
+            w.globals.animationEnded = true;
+          }
+        } else if (w.globals.shouldAnimate) {
+          w.globals.animationEnded = true;
+
+          if (typeof w.config.chart.events.animationEnd === 'function') {
+            w.config.chart.events.animationEnd(_this.ctx, w);
+          }
+        }
+
+        _this.showDelayedElements();
+      });
+    }
+  }]);
+
+  return Animations;
+}();
+
+/**
+ * ApexCharts Graphics Class for all drawing operations.
+ *
+ * @module Graphics
+ **/
+
+var Graphics =
+/*#__PURE__*/
+function () {
+  function Graphics(ctx) {
+    _classCallCheck(this, Graphics);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Graphics, [{
+    key: "drawLine",
+    value: function drawLine(x1, y1, x2, y2) {
+      var lineColor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '#a8a8a8';
+      var dashArray = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
+      var strokeWidth = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
+      var w = this.w;
+      var line = w.globals.dom.Paper.line().attr({
+        x1: x1,
+        y1: y1,
+        x2: x2,
+        y2: y2,
+        stroke: lineColor,
+        'stroke-dasharray': dashArray,
+        'stroke-width': strokeWidth
+      });
+      return line;
+    }
+  }, {
+    key: "drawRect",
+    value: function drawRect() {
+      var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+      var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+      var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+      var radius = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+      var color = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '#fefefe';
+      var opacity = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1;
+      var strokeWidth = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
+      var strokeColor = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null;
+      var strokeDashArray = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 0;
+      var w = this.w;
+      var rect = w.globals.dom.Paper.rect();
+      rect.attr({
+        x: x1,
+        y: y1,
+        width: x2 > 0 ? x2 : 0,
+        height: y2 > 0 ? y2 : 0,
+        rx: radius,
+        ry: radius,
+        fill: color,
+        opacity: opacity,
+        'stroke-width': strokeWidth !== null ? strokeWidth : 0,
+        stroke: strokeColor !== null ? strokeColor : 'none',
+        'stroke-dasharray': strokeDashArray
+      });
+      return rect;
+    }
+  }, {
+    key: "drawPolygon",
+    value: function drawPolygon(polygonString) {
+      var stroke = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#e1e1e1';
+      var fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none';
+      var w = this.w;
+      var polygon = w.globals.dom.Paper.polygon(polygonString).attr({
+        fill: fill,
+        stroke: stroke
+      });
+      return polygon;
+    }
+  }, {
+    key: "drawCircle",
+    value: function drawCircle(radius) {
+      var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+      var w = this.w;
+      var c = w.globals.dom.Paper.circle(radius * 2);
+
+      if (attrs !== null) {
+        c.attr(attrs);
+      }
+
+      return c;
+    }
+  }, {
+    key: "drawPath",
+    value: function drawPath(_ref) {
+      var _ref$d = _ref.d,
+          d = _ref$d === void 0 ? '' : _ref$d,
+          _ref$stroke = _ref.stroke,
+          stroke = _ref$stroke === void 0 ? '#a8a8a8' : _ref$stroke,
+          _ref$strokeWidth = _ref.strokeWidth,
+          strokeWidth = _ref$strokeWidth === void 0 ? 1 : _ref$strokeWidth,
+          fill = _ref.fill,
+          _ref$fillOpacity = _ref.fillOpacity,
+          fillOpacity = _ref$fillOpacity === void 0 ? 1 : _ref$fillOpacity,
+          _ref$strokeOpacity = _ref.strokeOpacity,
+          strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,
+          classes = _ref.classes,
+          _ref$strokeLinecap = _ref.strokeLinecap,
+          strokeLinecap = _ref$strokeLinecap === void 0 ? null : _ref$strokeLinecap,
+          _ref$strokeDashArray = _ref.strokeDashArray,
+          strokeDashArray = _ref$strokeDashArray === void 0 ? 0 : _ref$strokeDashArray;
+      var w = this.w;
+
+      if (strokeLinecap === null) {
+        strokeLinecap = w.config.stroke.lineCap;
+      }
+
+      if (d.indexOf('undefined') > -1 || d.indexOf('NaN') > -1) {
+        d = "M 0 ".concat(w.globals.gridHeight);
+      }
+
+      var p = w.globals.dom.Paper.path(d).attr({
+        fill: fill,
+        'fill-opacity': fillOpacity,
+        stroke: stroke,
+        'stroke-opacity': strokeOpacity,
+        'stroke-linecap': strokeLinecap,
+        'stroke-width': strokeWidth,
+        'stroke-dasharray': strokeDashArray,
+        class: classes
+      });
+      return p;
+    }
+  }, {
+    key: "group",
+    value: function group() {
+      var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+      var w = this.w;
+      var g = w.globals.dom.Paper.group();
+
+      if (attrs !== null) {
+        g.attr(attrs);
+      }
+
+      return g;
+    }
+  }, {
+    key: "move",
+    value: function move(x, y) {
+      var move = ['M', x, y].join(' ');
+      return move;
+    }
+  }, {
+    key: "line",
+    value: function line(x, y) {
+      var hORv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+      var line = null;
+
+      if (hORv === null) {
+        line = ['L', x, y].join(' ');
+      } else if (hORv === 'H') {
+        line = ['H', x].join(' ');
+      } else if (hORv === 'V') {
+        line = ['V', y].join(' ');
+      }
+
+      return line;
+    }
+  }, {
+    key: "curve",
+    value: function curve(x1, y1, x2, y2, x, y) {
+      var curve = ['C', x1, y1, x2, y2, x, y].join(' ');
+      return curve;
+    }
+  }, {
+    key: "quadraticCurve",
+    value: function quadraticCurve(x1, y1, x, y) {
+      var curve = ['Q', x1, y1, x, y].join(' ');
+      return curve;
+    }
+  }, {
+    key: "arc",
+    value: function arc(rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y) {
+      var relative = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;
+      var coord = 'A';
+      if (relative) coord = 'a';
+      var arc = [coord, rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y].join(' ');
+      return arc;
+    }
+    /**
+     * @memberof Graphics
+     * @param {object}
+     *  i = series's index
+     *  realIndex = realIndex is series's actual index when it was drawn time. After several redraws, the iterating "i" may change in loops, but realIndex doesn't
+     *  pathFrom = existing pathFrom to animateTo
+     *  pathTo = new Path to which d attr will be animated from pathFrom to pathTo
+     *  stroke = line Color
+     *  strokeWidth = width of path Line
+     *  fill = it can be gradient, single color, pattern or image
+     *  animationDelay = how much to delay when starting animation (in milliseconds)
+     *  dataChangeSpeed = for dynamic animations, when data changes
+     *  className = class attribute to add
+     * @return {object} svg.js path object
+     **/
+
+  }, {
+    key: "renderPaths",
+    value: function renderPaths(_ref2) {
+      var i = _ref2.i,
+          j = _ref2.j,
+          realIndex = _ref2.realIndex,
+          pathFrom = _ref2.pathFrom,
+          pathTo = _ref2.pathTo,
+          stroke = _ref2.stroke,
+          strokeWidth = _ref2.strokeWidth,
+          strokeLinecap = _ref2.strokeLinecap,
+          fill = _ref2.fill,
+          animationDelay = _ref2.animationDelay,
+          initialSpeed = _ref2.initialSpeed,
+          dataChangeSpeed = _ref2.dataChangeSpeed,
+          className = _ref2.className,
+          id = _ref2.id,
+          _ref2$shouldClipToGri = _ref2.shouldClipToGrid,
+          shouldClipToGrid = _ref2$shouldClipToGri === void 0 ? true : _ref2$shouldClipToGri,
+          _ref2$bindEventsOnPat = _ref2.bindEventsOnPaths,
+          bindEventsOnPaths = _ref2$bindEventsOnPat === void 0 ? true : _ref2$bindEventsOnPat,
+          _ref2$drawShadow = _ref2.drawShadow,
+          drawShadow = _ref2$drawShadow === void 0 ? true : _ref2$drawShadow;
+      var w = this.w;
+      var filters = new Filters(this.ctx);
+      var anim = new Animations(this.ctx);
+      var initialAnim = this.w.config.chart.animations.enabled;
+      var dynamicAnim = initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+      var d;
+      var shouldAnimate = !!(initialAnim && !w.globals.resized || dynamicAnim && w.globals.dataChanged && w.globals.shouldAnimate);
+
+      if (shouldAnimate) {
+        d = pathFrom;
+      } else {
+        d = pathTo;
+        this.w.globals.animationEnded = true;
+      }
+
+      var strokeDashArrayOpt = w.config.stroke.dashArray;
+      var strokeDashArray = 0;
+
+      if (Array.isArray(strokeDashArrayOpt)) {
+        strokeDashArray = strokeDashArrayOpt[realIndex];
+      } else {
+        strokeDashArray = w.config.stroke.dashArray;
+      }
+
+      var el = this.drawPath({
+        d: d,
+        stroke: stroke,
+        strokeWidth: strokeWidth,
+        fill: fill,
+        fillOpacity: 1,
+        classes: className,
+        strokeLinecap: strokeLinecap,
+        strokeDashArray: strokeDashArray
+      });
+      el.attr('id', "".concat(id, "-").concat(i));
+      el.attr('index', realIndex);
+
+      if (shouldClipToGrid) {
+        el.attr({
+          'clip-path': "url(#gridRectMask".concat(w.globals.cuid, ")")
+        });
+      } // const defaultFilter = el.filterer
+
+
+      if (w.config.states.normal.filter.type !== 'none') {
+        filters.getDefaultFilter(el, realIndex);
+      } else {
+        if (w.config.chart.dropShadow.enabled && drawShadow) {
+          if (!w.config.chart.dropShadow.enabledSeries || w.config.chart.dropShadow.enabledSeries && w.config.chart.dropShadow.enabledSeries.indexOf(realIndex) !== -1) {
+            var shadow = w.config.chart.dropShadow;
+            filters.dropShadow(el, shadow, realIndex);
+          }
+        }
+      }
+
+      if (bindEventsOnPaths) {
+        el.node.addEventListener('mouseenter', this.pathMouseEnter.bind(this, el));
+        el.node.addEventListener('mouseleave', this.pathMouseLeave.bind(this, el));
+        el.node.addEventListener('mousedown', this.pathMouseDown.bind(this, el));
+      }
+
+      el.attr({
+        pathTo: pathTo,
+        pathFrom: pathFrom
+      });
+      var defaultAnimateOpts = {
+        el: el,
+        j: j,
+        pathFrom: pathFrom,
+        pathTo: pathTo,
+        strokeWidth: strokeWidth
+      };
+
+      if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+        anim.animatePathsGradually(_objectSpread({}, defaultAnimateOpts, {
+          speed: initialSpeed,
+          delay: animationDelay
+        }));
+      } else {
+        if (w.globals.resized || !w.globals.dataChanged) {
+          anim.showDelayedElements();
+        }
+      }
+
+      if (w.globals.dataChanged && dynamicAnim && shouldAnimate) {
+        anim.animatePathsGradually(_objectSpread({}, defaultAnimateOpts, {
+          speed: dataChangeSpeed
+        }));
+      }
+
+      return el;
+    }
+  }, {
+    key: "drawPattern",
+    value: function drawPattern(style, width, height) {
+      var stroke = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '#a8a8a8';
+      var strokeWidth = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+      var w = this.w;
+      var p = w.globals.dom.Paper.pattern(width, height, function (add) {
+        if (style === 'horizontalLines') {
+          add.line(0, 0, height, 0).stroke({
+            color: stroke,
+            width: strokeWidth + 1
+          });
+        } else if (style === 'verticalLines') {
+          add.line(0, 0, 0, width).stroke({
+            color: stroke,
+            width: strokeWidth + 1
+          });
+        } else if (style === 'slantedLines') {
+          add.line(0, 0, width, height).stroke({
+            color: stroke,
+            width: strokeWidth
+          });
+        } else if (style === 'squares') {
+          add.rect(width, height).fill('none').stroke({
+            color: stroke,
+            width: strokeWidth
+          });
+        } else if (style === 'circles') {
+          add.circle(width).fill('none').stroke({
+            color: stroke,
+            width: strokeWidth
+          });
+        }
+      });
+      return p;
+    }
+  }, {
+    key: "drawGradient",
+    value: function drawGradient(style, gfrom, gto, opacityFrom, opacityTo) {
+      var size = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
+      var stops = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
+      var colorStops = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
+      var i = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0;
+      var w = this.w;
+      var g;
+      gfrom = Utils.hexToRgba(gfrom, opacityFrom);
+      gto = Utils.hexToRgba(gto, opacityTo);
+      var stop1 = 0;
+      var stop2 = 1;
+      var stop3 = 1;
+      var stop4 = null;
+
+      if (stops !== null) {
+        stop1 = typeof stops[0] !== 'undefined' ? stops[0] / 100 : 0;
+        stop2 = typeof stops[1] !== 'undefined' ? stops[1] / 100 : 1;
+        stop3 = typeof stops[2] !== 'undefined' ? stops[2] / 100 : 1;
+        stop4 = typeof stops[3] !== 'undefined' ? stops[3] / 100 : null;
+      }
+
+      var radial = !!(w.config.chart.type === 'donut' || w.config.chart.type === 'pie' || w.config.chart.type === 'bubble');
+
+      if (colorStops === null || colorStops.length === 0) {
+        g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) {
+          stop.at(stop1, gfrom, opacityFrom);
+          stop.at(stop2, gto, opacityTo);
+          stop.at(stop3, gto, opacityTo);
+
+          if (stop4 !== null) {
+            stop.at(stop4, gfrom, opacityFrom);
+          }
+        });
+      } else {
+        g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) {
+          var stops = Array.isArray(colorStops[i]) ? colorStops[i] : colorStops;
+          stops.forEach(function (s) {
+            stop.at(s.offset / 100, s.color, s.opacity);
+          });
+        });
+      }
+
+      if (!radial) {
+        if (style === 'vertical') {
+          g.from(0, 0).to(0, 1);
+        } else if (style === 'diagonal') {
+          g.from(0, 0).to(1, 1);
+        } else if (style === 'horizontal') {
+          g.from(0, 1).to(1, 1);
+        } else if (style === 'diagonal2') {
+          g.from(0, 1).to(2, 2);
+        }
+      } else {
+        var offx = w.globals.gridWidth / 2;
+        var offy = w.globals.gridHeight / 2;
+
+        if (w.config.chart.type !== 'bubble') {
+          g.attr({
+            gradientUnits: 'userSpaceOnUse',
+            cx: offx,
+            cy: offy,
+            r: size
+          });
+        } else {
+          g.attr({
+            cx: 0.5,
+            cy: 0.5,
+            r: 0.8,
+            fx: 0.2,
+            fy: 0.2
+          });
+        }
+      }
+
+      return g;
+    }
+  }, {
+    key: "drawText",
+    value: function drawText(opts) {
+      var w = this.w;
+      var x = opts.x,
+          y = opts.y,
+          text = opts.text,
+          textAnchor = opts.textAnchor,
+          fontSize = opts.fontSize,
+          fontFamily = opts.fontFamily,
+          foreColor = opts.foreColor,
+          opacity = opts.opacity;
+      if (typeof text === 'undefined') text = '';
+
+      if (!textAnchor) {
+        textAnchor = 'start';
+      }
+
+      if (!foreColor) {
+        foreColor = w.config.chart.foreColor;
+      }
+
+      fontFamily = fontFamily || w.config.chart.fontFamily;
+      var elText;
+
+      if (Array.isArray(text)) {
+        elText = w.globals.dom.Paper.text(function (add) {
+          for (var i = 0; i < text.length; i++) {
+            add.tspan(text[i]);
+          }
+        });
+      } else {
+        elText = w.globals.dom.Paper.plain(text);
+      }
+
+      elText.attr({
+        x: x,
+        y: y,
+        'text-anchor': textAnchor,
+        'dominant-baseline': 'auto',
+        'font-size': fontSize,
+        'font-family': fontFamily,
+        fill: foreColor,
+        class: 'apexcharts-text ' + opts.cssClass ? opts.cssClass : ''
+      });
+      elText.node.style.fontFamily = fontFamily;
+      elText.node.style.opacity = opacity;
+      return elText;
+    }
+  }, {
+    key: "addTspan",
+    value: function addTspan(textEl, text, fontFamily) {
+      var tspan = textEl.tspan(text);
+
+      if (!fontFamily) {
+        fontFamily = this.w.config.chart.fontFamily;
+      }
+
+      tspan.node.style.fontFamily = fontFamily;
+    }
+  }, {
+    key: "drawMarker",
+    value: function drawMarker(x, y, opts) {
+      x = x || 0;
+      var size = opts.pSize || 0;
+      var elPoint = null;
+
+      if (opts.shape === 'square') {
+        var radius = opts.pRadius === undefined ? size / 2 : opts.pRadius;
+
+        if (y === null) {
+          size = 0;
+          radius = 0;
+        }
+
+        var nSize = size * 1.2 + radius;
+        var p = this.drawRect(nSize, nSize, nSize, nSize, radius);
+        p.attr({
+          x: x - nSize / 2,
+          y: y - nSize / 2,
+          cx: x,
+          cy: y,
+          class: opts.class ? opts.class : '',
+          fill: opts.pointFillColor,
+          'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1,
+          stroke: opts.pointStrokeColor,
+          'stroke-width': opts.pWidth ? opts.pWidth : 0,
+          'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1
+        });
+        elPoint = p;
+      } else if (opts.shape === 'circle') {
+        if (!Utils.isNumber(y)) {
+          size = 0;
+          y = 0;
+        } // let nSize = size - opts.pRadius / 2 < 0 ? 0 : size - opts.pRadius / 2
+
+
+        elPoint = this.drawCircle(size, {
+          cx: x,
+          cy: y,
+          class: opts.class ? opts.class : '',
+          stroke: opts.pointStrokeColor,
+          fill: opts.pointFillColor,
+          'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1,
+          'stroke-width': opts.pWidth ? opts.pWidth : 0,
+          'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1
+        });
+      }
+
+      return elPoint;
+    }
+  }, {
+    key: "pathMouseEnter",
+    value: function pathMouseEnter(path, e) {
+      var w = this.w;
+      var filters = new Filters(this.ctx);
+      var i = parseInt(path.node.getAttribute('index'));
+      var j = parseInt(path.node.getAttribute('j'));
+
+      if (typeof w.config.chart.events.dataPointMouseEnter === 'function') {
+        w.config.chart.events.dataPointMouseEnter(e, this.ctx, {
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+      }
+
+      this.ctx.fireEvent('dataPointMouseEnter', [e, this.ctx, {
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      }]);
+
+      if (w.config.states.active.filter.type !== 'none') {
+        if (path.node.getAttribute('selected') === 'true') {
+          return;
+        }
+      }
+
+      if (w.config.states.hover.filter.type !== 'none') {
+        if (w.config.states.active.filter.type !== 'none' && !w.globals.isTouchDevice) {
+          var hoverFilter = w.config.states.hover.filter;
+          filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value);
+        }
+      }
+    }
+  }, {
+    key: "pathMouseLeave",
+    value: function pathMouseLeave(path, e) {
+      var w = this.w;
+      var filters = new Filters(this.ctx);
+      var i = parseInt(path.node.getAttribute('index'));
+      var j = parseInt(path.node.getAttribute('j'));
+
+      if (typeof w.config.chart.events.dataPointMouseLeave === 'function') {
+        w.config.chart.events.dataPointMouseLeave(e, this.ctx, {
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+      }
+
+      this.ctx.fireEvent('dataPointMouseLeave', [e, this.ctx, {
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      }]);
+
+      if (w.config.states.active.filter.type !== 'none') {
+        if (path.node.getAttribute('selected') === 'true') {
+          return;
+        }
+      }
+
+      if (w.config.states.hover.filter.type !== 'none') {
+        filters.getDefaultFilter(path, i);
+      }
+    }
+  }, {
+    key: "pathMouseDown",
+    value: function pathMouseDown(path, e) {
+      var w = this.w;
+      var filters = new Filters(this.ctx);
+      var i = parseInt(path.node.getAttribute('index'));
+      var j = parseInt(path.node.getAttribute('j'));
+      var selected = 'false';
+
+      if (path.node.getAttribute('selected') === 'true') {
+        path.node.setAttribute('selected', 'false');
+
+        if (w.globals.selectedDataPoints[i].indexOf(j) > -1) {
+          var index = w.globals.selectedDataPoints[i].indexOf(j);
+          w.globals.selectedDataPoints[i].splice(index, 1);
+        }
+      } else {
+        if (!w.config.states.active.allowMultipleDataPointsSelection && w.globals.selectedDataPoints.length > 0) {
+          w.globals.selectedDataPoints = [];
+          var elPaths = w.globals.dom.Paper.select('.apexcharts-series path').members;
+          var elCircles = w.globals.dom.Paper.select('.apexcharts-series circle, .apexcharts-series rect').members;
+          elPaths.forEach(function (elPath) {
+            elPath.node.setAttribute('selected', 'false');
+            filters.getDefaultFilter(elPath, i);
+          });
+          elCircles.forEach(function (circle) {
+            circle.node.setAttribute('selected', 'false');
+            filters.getDefaultFilter(circle, i);
+          });
+        }
+
+        path.node.setAttribute('selected', 'true');
+        selected = 'true';
+
+        if (typeof w.globals.selectedDataPoints[i] === 'undefined') {
+          w.globals.selectedDataPoints[i] = [];
+        }
+
+        w.globals.selectedDataPoints[i].push(j);
+      }
+
+      if (selected === 'true') {
+        var activeFilter = w.config.states.active.filter;
+
+        if (activeFilter !== 'none') {
+          filters.applyFilter(path, i, activeFilter.type, activeFilter.value);
+        }
+      } else {
+        if (w.config.states.active.filter.type !== 'none') {
+          filters.getDefaultFilter(path, i);
+        }
+      }
+
+      if (typeof w.config.chart.events.dataPointSelection === 'function') {
+        w.config.chart.events.dataPointSelection(e, this.ctx, {
+          selectedDataPoints: w.globals.selectedDataPoints,
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+      }
+
+      this.ctx.fireEvent('dataPointSelection', [e, this.ctx, {
+        selectedDataPoints: w.globals.selectedDataPoints,
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      }]); // if (this.w.config.chart.selection.selectedPoints !== undefined) {
+      //   this.w.config.chart.selection.selectedPoints(w.globals.selectedDataPoints)
+      // }
+    }
+  }, {
+    key: "rotateAroundCenter",
+    value: function rotateAroundCenter(el) {
+      var coord = el.getBBox();
+      var x = coord.x + coord.width / 2;
+      var y = coord.y + coord.height / 2;
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "getTextRects",
+    value: function getTextRects(text, fontSize, fontFamily, transform) {
+      var useBBox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
+      var w = this.w;
+      var virtualText = this.drawText({
+        x: -200,
+        y: -200,
+        text: text,
+        textAnchor: 'start',
+        fontSize: fontSize,
+        fontFamily: fontFamily,
+        foreColor: '#fff',
+        opacity: 0
+      });
+
+      if (transform) {
+        virtualText.attr('transform', transform);
+      }
+
+      w.globals.dom.Paper.add(virtualText);
+      var rect = virtualText.bbox();
+
+      if (!useBBox) {
+        rect = virtualText.node.getBoundingClientRect();
+      }
+
+      virtualText.remove();
+      return {
+        width: rect.width,
+        height: rect.height
+      };
+    }
+    /**
+     * append ... to long text
+     * http://stackoverflow.com/questions/9241315/trimming-text-to-a-given-pixel-width-in-svg
+     * @memberof Graphics
+     **/
+
+  }, {
+    key: "placeTextWithEllipsis",
+    value: function placeTextWithEllipsis(textObj, textString, width) {
+      textObj.textContent = textString;
+
+      if (textString.length > 0) {
+        // ellipsis is needed
+        if (textObj.getSubStringLength(0, textString.length) >= width) {
+          for (var x = textString.length - 3; x > 0; x -= 3) {
+            if (textObj.getSubStringLength(0, x) <= width) {
+              textObj.textContent = textString.substring(0, x) + '...';
+              return;
+            }
+          }
+
+          textObj.textContent = '...'; // can't place at all
+        }
+      }
+    }
+  }], [{
+    key: "setAttrs",
+    value: function setAttrs(el, attrs) {
+      for (var key in attrs) {
+        if (attrs.hasOwnProperty(key)) {
+          el.setAttribute(key, attrs[key]);
+        }
+      }
+    }
+  }]);
+
+  return Graphics;
+}();
+
+const name = "en";
+const options = {
+	months: [
+		"January",
+		"February",
+		"March",
+		"April",
+		"May",
+		"June",
+		"July",
+		"August",
+		"September",
+		"October",
+		"November",
+		"December"
+	],
+	shortMonths: [
+		"Jan",
+		"Feb",
+		"Mar",
+		"Apr",
+		"May",
+		"Jun",
+		"Jul",
+		"Aug",
+		"Sep",
+		"Oct",
+		"Nov",
+		"Dec"
+	],
+	days: [
+		"Sunday",
+		"Monday",
+		"Tuesday",
+		"Wednesday",
+		"Thursday",
+		"Friday",
+		"Saturday"
+	],
+	shortDays: [
+		"Sun",
+		"Mon",
+		"Tue",
+		"Wed",
+		"Thu",
+		"Fri",
+		"Sat"
+	],
+	toolbar: {
+		exportToSVG: "Download SVG",
+		exportToPNG: "Download PNG",
+		menu: "Menu",
+		selection: "Selection",
+		selectionZoom: "Selection Zoom",
+		zoomIn: "Zoom In",
+		zoomOut: "Zoom Out",
+		pan: "Panning",
+		reset: "Reset Zoom"
+	}
+};
+var en = {
+	name: name,
+	options: options
+};
+
+var Options =
+/*#__PURE__*/
+function () {
+  function Options() {
+    _classCallCheck(this, Options);
+
+    this.yAxis = {
+      show: true,
+      showAlways: false,
+      seriesName: undefined,
+      opposite: false,
+      reversed: false,
+      logarithmic: false,
+      tickAmount: undefined,
+      forceNiceScale: false,
+      max: undefined,
+      min: undefined,
+      floating: false,
+      decimalsInFloat: undefined,
+      labels: {
+        show: true,
+        minWidth: 0,
+        maxWidth: 160,
+        offsetX: 0,
+        offsetY: 0,
+        align: undefined,
+        rotate: 0,
+        padding: 20,
+        style: {
+          colors: [],
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: ''
+        },
+        formatter: undefined
+      },
+      axisBorder: {
+        show: false,
+        color: '#78909C',
+        offsetX: 0,
+        offsetY: 0
+      },
+      axisTicks: {
+        show: false,
+        color: '#78909C',
+        width: 6,
+        offsetX: 0,
+        offsetY: 0
+      },
+      title: {
+        text: undefined,
+        rotate: 90,
+        offsetY: 0,
+        offsetX: 0,
+        style: {
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: ''
+        }
+      },
+      tooltip: {
+        enabled: false,
+        offsetX: 0
+      },
+      crosshairs: {
+        show: true,
+        position: 'front',
+        stroke: {
+          color: '#b6b6b6',
+          width: 1,
+          dashArray: 0
+        }
+      }
+    };
+    this.xAxisAnnotation = {
+      x: 0,
+      x2: null,
+      strokeDashArray: 1,
+      fillColor: '#c2c2c2',
+      borderColor: '#c2c2c2',
+      opacity: 0.3,
+      offsetX: 0,
+      offsetY: 0,
+      label: {
+        borderColor: '#c2c2c2',
+        borderWidth: 1,
+        text: undefined,
+        textAnchor: 'middle',
+        orientation: 'vertical',
+        position: 'top',
+        offsetX: 0,
+        offsetY: 0,
+        style: {
+          background: '#fff',
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: '',
+          padding: {
+            left: 5,
+            right: 5,
+            top: 2,
+            bottom: 2
+          }
+        }
+      }
+    };
+    this.yAxisAnnotation = {
+      y: 0,
+      y2: null,
+      strokeDashArray: 1,
+      fillColor: '#c2c2c2',
+      borderColor: '#c2c2c2',
+      opacity: 0.3,
+      offsetX: 0,
+      offsetY: 0,
+      yAxisIndex: 0,
+      label: {
+        borderColor: '#c2c2c2',
+        borderWidth: 1,
+        text: undefined,
+        textAnchor: 'end',
+        position: 'right',
+        offsetX: 0,
+        offsetY: -3,
+        style: {
+          background: '#fff',
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: '',
+          padding: {
+            left: 5,
+            right: 5,
+            top: 0,
+            bottom: 2
+          }
+        }
+      }
+    };
+    this.pointAnnotation = {
+      x: 0,
+      y: null,
+      yAxisIndex: 0,
+      seriesIndex: 0,
+      marker: {
+        size: 0,
+        fillColor: '#fff',
+        strokeWidth: 2,
+        strokeColor: '#333',
+        shape: 'circle',
+        offsetX: 0,
+        offsetY: 0,
+        radius: 2,
+        cssClass: ''
+      },
+      label: {
+        borderColor: '#c2c2c2',
+        borderWidth: 1,
+        text: undefined,
+        textAnchor: 'middle',
+        offsetX: 0,
+        offsetY: -15,
+        style: {
+          background: '#fff',
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: '',
+          padding: {
+            left: 5,
+            right: 5,
+            top: 0,
+            bottom: 2
+          }
+        }
+      },
+      customSVG: {
+        SVG: undefined,
+        cssClass: undefined,
+        offsetX: 0,
+        offsetY: 0
+      }
+    };
+  }
+
+  _createClass(Options, [{
+    key: "init",
+    value: function init() {
+      return {
+        annotations: {
+          position: 'front',
+          yaxis: [this.yAxisAnnotation],
+          xaxis: [this.xAxisAnnotation],
+          points: [this.pointAnnotation]
+        },
+        chart: {
+          animations: {
+            enabled: true,
+            easing: 'easeinout',
+            // linear, easeout, easein, easeinout, swing, bounce, elastic
+            speed: 800,
+            animateGradually: {
+              delay: 150,
+              enabled: true
+            },
+            dynamicAnimation: {
+              enabled: true,
+              speed: 350
+            }
+          },
+          background: 'transparent',
+          locales: [en],
+          defaultLocale: 'en',
+          dropShadow: {
+            enabled: false,
+            enabledSeries: undefined,
+            top: 2,
+            left: 2,
+            blur: 4,
+            color: '#000',
+            opacity: 0.35
+          },
+          events: {
+            animationEnd: undefined,
+            beforeMount: undefined,
+            mounted: undefined,
+            updated: undefined,
+            click: undefined,
+            legendClick: undefined,
+            markerClick: undefined,
+            selection: undefined,
+            dataPointSelection: undefined,
+            dataPointMouseEnter: undefined,
+            dataPointMouseLeave: undefined,
+            beforeZoom: undefined,
+            zoomed: undefined,
+            scrolled: undefined
+          },
+          foreColor: '#373d3f',
+          fontFamily: 'Helvetica, Arial, sans-serif',
+          height: 'auto',
+          parentHeightOffset: 15,
+          id: undefined,
+          group: undefined,
+          offsetX: 0,
+          offsetY: 0,
+          selection: {
+            enabled: false,
+            type: 'x',
+            // selectedPoints: undefined, // default datapoints that should be selected automatically
+            fill: {
+              color: '#24292e',
+              opacity: 0.1
+            },
+            stroke: {
+              width: 1,
+              color: '#24292e',
+              opacity: 0.4,
+              dashArray: 3
+            },
+            xaxis: {
+              min: undefined,
+              max: undefined
+            },
+            yaxis: {
+              min: undefined,
+              max: undefined
+            }
+          },
+          sparkline: {
+            enabled: false
+          },
+          brush: {
+            enabled: false,
+            autoScaleYaxis: false,
+            target: undefined
+          },
+          stacked: false,
+          stackType: 'normal',
+          toolbar: {
+            show: true,
+            tools: {
+              download: true,
+              selection: true,
+              zoom: true,
+              zoomin: true,
+              zoomout: true,
+              pan: true,
+              reset: true,
+              customIcons: []
+            },
+            autoSelected: 'zoom' // accepts -> zoom, pan, selection
+
+          },
+          type: 'line',
+          width: '100%',
+          zoom: {
+            enabled: true,
+            type: 'x',
+            // autoScaleYaxis: false, // TODO: rewrite the autoScaleY function
+            zoomedArea: {
+              fill: {
+                color: '#90CAF9',
+                opacity: 0.4
+              },
+              stroke: {
+                color: '#0D47A1',
+                opacity: 0.4,
+                width: 1
+              }
+            }
+          }
+        },
+        plotOptions: {
+          bar: {
+            horizontal: false,
+            columnWidth: '70%',
+            // should be in percent 0 - 100
+            barHeight: '70%',
+            // should be in percent 0 - 100
+            distributed: false,
+            endingShape: 'flat',
+            colors: {
+              ranges: [],
+              backgroundBarColors: [],
+              backgroundBarOpacity: 1
+            },
+            dataLabels: {
+              maxItems: 100,
+              hideOverflowingLabels: true,
+              position: 'top' // top, center, bottom
+              // TODO: provide stackedLabels for stacked charts which gives additions of values
+
+            }
+          },
+          candlestick: {
+            colors: {
+              upward: '#00B746',
+              downward: '#EF403C'
+            },
+            wick: {
+              useFillColor: true
+            }
+          },
+          heatmap: {
+            radius: 2,
+            enableShades: true,
+            shadeIntensity: 0.5,
+            reverseNegativeShade: true,
+            distributed: false,
+            colorScale: {
+              inverse: false,
+              ranges: [],
+              min: undefined,
+              max: undefined
+            }
+          },
+          radialBar: {
+            size: undefined,
+            inverseOrder: false,
+            startAngle: 0,
+            endAngle: 360,
+            offsetX: 0,
+            offsetY: 0,
+            hollow: {
+              margin: 5,
+              size: '50%',
+              background: 'transparent',
+              image: undefined,
+              imageWidth: 150,
+              imageHeight: 150,
+              imageOffsetX: 0,
+              imageOffsetY: 0,
+              imageClipped: true,
+              position: 'front',
+              dropShadow: {
+                enabled: false,
+                top: 0,
+                left: 0,
+                blur: 3,
+                color: '#000',
+                opacity: 0.5
+              }
+            },
+            track: {
+              show: true,
+              startAngle: undefined,
+              endAngle: undefined,
+              background: '#f2f2f2',
+              strokeWidth: '97%',
+              opacity: 1,
+              margin: 5,
+              // margin is in pixels
+              dropShadow: {
+                enabled: false,
+                top: 0,
+                left: 0,
+                blur: 3,
+                color: '#000',
+                opacity: 0.5
+              }
+            },
+            dataLabels: {
+              show: true,
+              name: {
+                show: true,
+                fontSize: '16px',
+                fontFamily: undefined,
+                color: undefined,
+                offsetY: 0
+              },
+              value: {
+                show: true,
+                fontSize: '14px',
+                fontFamily: undefined,
+                color: undefined,
+                offsetY: 16,
+                formatter: function formatter(val) {
+                  return val + '%';
+                }
+              },
+              total: {
+                show: false,
+                label: 'Total',
+                color: undefined,
+                formatter: function formatter(w) {
+                  return w.globals.seriesTotals.reduce(function (a, b) {
+                    return a + b;
+                  }, 0) / w.globals.series.length + '%';
+                }
+              }
+            }
+          },
+          rangeBar: {},
+          pie: {
+            size: undefined,
+            customScale: 1,
+            offsetX: 0,
+            offsetY: 0,
+            expandOnClick: true,
+            dataLabels: {
+              // These are the percentage values which are displayed on slice
+              offset: 0,
+              // offset by which labels will move outside
+              minAngleToShowLabel: 10
+            },
+            donut: {
+              size: '65%',
+              background: 'transparent',
+              labels: {
+                // These are the inner labels appearing inside donut
+                show: false,
+                name: {
+                  show: true,
+                  fontSize: '16px',
+                  fontFamily: undefined,
+                  color: undefined,
+                  offsetY: -10
+                },
+                value: {
+                  show: true,
+                  fontSize: '20px',
+                  fontFamily: undefined,
+                  color: undefined,
+                  offsetY: 10,
+                  formatter: function formatter(val) {
+                    return val;
+                  }
+                },
+                total: {
+                  show: false,
+                  label: 'Total',
+                  color: undefined,
+                  formatter: function formatter(w) {
+                    return w.globals.seriesTotals.reduce(function (a, b) {
+                      return a + b;
+                    }, 0);
+                  }
+                }
+              }
+            }
+          },
+          radar: {
+            size: undefined,
+            offsetX: 0,
+            offsetY: 0,
+            polygons: {
+              // strokeColor: '#e8e8e8', // should be deprecated in the minor version i.e 3.2
+              strokeColors: '#e8e8e8',
+              connectorColors: '#e8e8e8',
+              fill: {
+                colors: undefined
+              }
+            }
+          }
+        },
+        colors: undefined,
+        dataLabels: {
+          enabled: true,
+          enabledOnSeries: undefined,
+          formatter: function formatter(val) {
+            return val;
+          },
+          textAnchor: 'middle',
+          offsetX: 0,
+          offsetY: 0,
+          style: {
+            fontSize: '12px',
+            fontFamily: undefined,
+            colors: undefined
+          },
+          dropShadow: {
+            enabled: false,
+            top: 1,
+            left: 1,
+            blur: 1,
+            color: '#000',
+            opacity: 0.45
+          }
+        },
+        fill: {
+          type: 'solid',
+          colors: undefined,
+          // array of colors
+          opacity: 0.85,
+          gradient: {
+            shade: 'dark',
+            type: 'horizontal',
+            shadeIntensity: 0.5,
+            gradientToColors: undefined,
+            inverseColors: true,
+            opacityFrom: 1,
+            opacityTo: 1,
+            stops: [0, 50, 100],
+            colorStops: []
+          },
+          image: {
+            src: [],
+            width: undefined,
+            // optional
+            height: undefined // optional
+
+          },
+          pattern: {
+            style: 'sqaures',
+            // String | Array of Strings
+            width: 6,
+            height: 6,
+            strokeWidth: 2
+          }
+        },
+        grid: {
+          show: true,
+          borderColor: '#e0e0e0',
+          strokeDashArray: 0,
+          position: 'back',
+          xaxis: {
+            lines: {
+              show: false,
+              animate: false
+            }
+          },
+          yaxis: {
+            lines: {
+              show: true,
+              animate: false
+            }
+          },
+          row: {
+            colors: undefined,
+            // takes as array which will be repeated on rows
+            opacity: 0.5
+          },
+          column: {
+            colors: undefined,
+            // takes an array which will be repeated on columns
+            opacity: 0.5
+          },
+          padding: {
+            top: 0,
+            right: 10,
+            bottom: 0,
+            left: 12
+          }
+        },
+        labels: [],
+        legend: {
+          show: true,
+          showForSingleSeries: false,
+          showForNullSeries: true,
+          showForZeroSeries: true,
+          floating: false,
+          position: 'bottom',
+          // whether to position legends in 1 of 4
+          // direction - top, bottom, left, right
+          horizontalAlign: 'center',
+          // when position top/bottom, you can specify whether to align legends left, right or center
+          fontSize: '12px',
+          fontFamily: undefined,
+          width: undefined,
+          height: undefined,
+          formatter: undefined,
+          offsetX: -20,
+          offsetY: 0,
+          labels: {
+            colors: undefined,
+            useSeriesColors: false
+          },
+          markers: {
+            width: 12,
+            height: 12,
+            strokeWidth: 0,
+            strokeColor: '#fff',
+            radius: 12,
+            customHTML: undefined,
+            offsetX: 0,
+            offsetY: 0,
+            onClick: undefined
+          },
+          itemMargin: {
+            horizontal: 0,
+            vertical: 5
+          },
+          onItemClick: {
+            toggleDataSeries: true
+          },
+          onItemHover: {
+            highlightDataSeries: true
+          }
+        },
+        markers: {
+          discrete: [],
+          size: 0,
+          colors: undefined,
+          //strokeColor: '#fff', // TODO: deprecate in major version 4.0
+          strokeColors: '#fff',
+          strokeWidth: 2,
+          strokeOpacity: 0.9,
+          fillOpacity: 1,
+          shape: 'circle',
+          radius: 2,
+          offsetX: 0,
+          offsetY: 0,
+          hover: {
+            size: undefined,
+            sizeOffset: 3
+          }
+        },
+        noData: {
+          text: undefined,
+          align: 'center',
+          verticalAlign: 'middle',
+          offsetX: 0,
+          offsetY: 0,
+          style: {
+            color: undefined,
+            fontSize: '14px',
+            fontFamily: undefined
+          }
+        },
+        responsive: [],
+        // breakpoints should follow ascending order 400, then 700, then 1000
+        series: undefined,
+        states: {
+          normal: {
+            filter: {
+              type: 'none',
+              value: 0
+            }
+          },
+          hover: {
+            filter: {
+              type: 'lighten',
+              value: 0.15
+            }
+          },
+          active: {
+            allowMultipleDataPointsSelection: false,
+            filter: {
+              type: 'darken',
+              value: 0.65
+            }
+          }
+        },
+        title: {
+          text: undefined,
+          align: 'left',
+          margin: 10,
+          offsetX: 0,
+          offsetY: 0,
+          floating: false,
+          style: {
+            fontSize: '14px',
+            fontFamily: undefined,
+            color: undefined
+          }
+        },
+        subtitle: {
+          text: undefined,
+          align: 'left',
+          margin: 10,
+          offsetX: 0,
+          offsetY: 30,
+          floating: false,
+          style: {
+            fontSize: '12px',
+            fontFamily: undefined,
+            color: undefined
+          }
+        },
+        stroke: {
+          show: true,
+          curve: 'smooth',
+          // "smooth" / "straight" / "stepline"
+          lineCap: 'butt',
+          // round, butt , square
+          width: 2,
+          colors: undefined,
+          // array of colors
+          dashArray: 0 // single value or array of values
+
+        },
+        tooltip: {
+          enabled: true,
+          enabledOnSeries: undefined,
+          shared: true,
+          followCursor: false,
+          // when disabled, the tooltip will show on top of the series instead of mouse position
+          intersect: false,
+          // when enabled, tooltip will only show when user directly hovers over point
+          inverseOrder: false,
+          custom: undefined,
+          fillSeriesColor: false,
+          theme: 'light',
+          style: {
+            fontSize: '12px',
+            fontFamily: undefined
+          },
+          onDatasetHover: {
+            highlightDataSeries: false
+          },
+          x: {
+            // x value
+            show: true,
+            format: 'dd MMM',
+            // dd/MM, dd MMM yy, dd MMM yyyy
+            formatter: undefined // a custom user supplied formatter function
+
+          },
+          y: {
+            formatter: undefined,
+            title: {
+              formatter: function formatter(seriesName) {
+                return seriesName;
+              }
+            }
+          },
+          z: {
+            formatter: undefined,
+            title: 'Size: '
+          },
+          marker: {
+            show: true
+          },
+          items: {
+            display: 'flex'
+          },
+          fixed: {
+            enabled: false,
+            position: 'topRight',
+            // topRight, topLeft, bottomRight, bottomLeft
+            offsetX: 0,
+            offsetY: 0
+          }
+        },
+        xaxis: {
+          type: 'category',
+          categories: [],
+          offsetX: 0,
+          offsetY: 0,
+          labels: {
+            show: true,
+            rotate: -45,
+            rotateAlways: false,
+            hideOverlappingLabels: true,
+            trim: true,
+            minHeight: undefined,
+            maxHeight: 120,
+            showDuplicates: true,
+            style: {
+              colors: [],
+              fontSize: '12px',
+              fontFamily: undefined,
+              cssClass: ''
+            },
+            offsetX: 0,
+            offsetY: 0,
+            format: undefined,
+            formatter: undefined,
+            // custom formatter function which will override format
+            datetimeFormatter: {
+              year: 'yyyy',
+              month: "MMM 'yy",
+              day: 'dd MMM',
+              hour: 'HH:mm',
+              minute: 'HH:mm:ss'
+            }
+          },
+          axisBorder: {
+            show: true,
+            color: '#78909C',
+            width: '100%',
+            height: 1,
+            offsetX: 0,
+            offsetY: 0
+          },
+          axisTicks: {
+            show: true,
+            color: '#78909C',
+            height: 6,
+            offsetX: 0,
+            offsetY: 0
+          },
+          tickAmount: undefined,
+          tickPlacement: 'on',
+          min: undefined,
+          max: undefined,
+          range: undefined,
+          floating: false,
+          position: 'bottom',
+          title: {
+            text: undefined,
+            offsetX: 0,
+            offsetY: 0,
+            style: {
+              color: undefined,
+              fontSize: '12px',
+              fontFamily: undefined,
+              cssClass: ''
+            }
+          },
+          crosshairs: {
+            show: true,
+            width: 1,
+            // tickWidth/barWidth or an integer
+            position: 'back',
+            opacity: 0.9,
+            stroke: {
+              color: '#b6b6b6',
+              width: 1,
+              dashArray: 3
+            },
+            fill: {
+              type: 'solid',
+              // solid, gradient
+              color: '#B1B9C4',
+              gradient: {
+                colorFrom: '#D8E3F0',
+                colorTo: '#BED1E6',
+                stops: [0, 100],
+                opacityFrom: 0.4,
+                opacityTo: 0.5
+              }
+            },
+            dropShadow: {
+              enabled: false,
+              left: 0,
+              top: 0,
+              blur: 1,
+              opacity: 0.4
+            }
+          },
+          tooltip: {
+            enabled: true,
+            offsetY: 0,
+            formatter: undefined,
+            style: {
+              fontSize: '12px',
+              fontFamily: undefined
+            }
+          }
+        },
+        yaxis: this.yAxis,
+        theme: {
+          mode: 'light',
+          palette: 'palette1',
+          // If defined, it will overwrite globals.colors variable
+          monochrome: {
+            // monochrome allows you to select just 1 color and fill out the rest with light/dark shade (intensity can be selected)
+            enabled: false,
+            color: '#008FFB',
+            shadeTo: 'light',
+            shadeIntensity: 0.65
+          }
+        }
+      };
+    }
+  }]);
+
+  return Options;
+}();
+
+/**
+ * ApexCharts Annotations Class for drawing lines/rects on both xaxis and yaxis.
+ *
+ * @module Annotations
+ **/
+
+var Annotations =
+/*#__PURE__*/
+function () {
+  function Annotations(ctx) {
+    _classCallCheck(this, Annotations);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.graphics = new Graphics(this.ctx);
+
+    if (this.w.globals.isBarHorizontal) {
+      this.invertAxis = true;
+    }
+
+    this.xDivision = this.w.globals.gridWidth / this.w.globals.dataPoints;
+  }
+
+  _createClass(Annotations, [{
+    key: "drawAnnotations",
+    value: function drawAnnotations() {
+      var w = this.w;
+
+      if (w.globals.axisCharts) {
+        var yAnnotations = this.drawYAxisAnnotations();
+        var xAnnotations = this.drawXAxisAnnotations();
+        var pointAnnotations = this.drawPointAnnotations();
+        var initialAnim = w.config.chart.animations.enabled;
+        var annoArray = [yAnnotations, xAnnotations, pointAnnotations];
+        var annoElArray = [xAnnotations.node, yAnnotations.node, pointAnnotations.node];
+
+        for (var i = 0; i < 3; i++) {
+          w.globals.dom.elGraphical.add(annoArray[i]);
+
+          if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+            annoElArray[i].classList.add('hidden');
+          }
+
+          w.globals.delayedElements.push({
+            el: annoElArray[i],
+            index: 0
+          });
+        } // background sizes needs to be calculated after text is drawn, so calling them last
+
+
+        this.annotationsBackground();
+      }
+    }
+  }, {
+    key: "addXaxisAnnotation",
+    value: function addXaxisAnnotation(anno, parent, index) {
+      var w = this.w;
+      var min = this.invertAxis ? w.globals.minY : w.globals.minX;
+      var range = this.invertAxis ? w.globals.yRange[0] : w.globals.xRange;
+      var x1 = (anno.x - min) / (range / w.globals.gridWidth);
+      var text = anno.label.text;
+
+      if (w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) {
+        var catIndex = w.globals.labels.indexOf(anno.x);
+        var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+
+        if (xLabel) {
+          x1 = parseFloat(xLabel.getAttribute('x'));
+        }
+      }
+
+      var strokeDashArray = anno.strokeDashArray;
+      if (x1 < 0 || x1 > w.globals.gridWidth) return;
+
+      if (anno.x2 === null) {
+        var line = this.graphics.drawLine(x1 + anno.offsetX, // x1
+        0 + anno.offsetY, // y1
+        x1 + anno.offsetX, // x2
+        w.globals.gridHeight + anno.offsetY, // y2
+        anno.borderColor, // lineColor
+        strokeDashArray //dashArray
+        );
+        parent.appendChild(line.node);
+      } else {
+        var x2 = (anno.x2 - min) / (range / w.globals.gridWidth);
+
+        if (x2 < x1) {
+          var temp = x1;
+          x1 = x2;
+          x2 = temp;
+        }
+
+        if (text) {
+          var rect = this.graphics.drawRect(x1 + anno.offsetX, // x1
+          0 + anno.offsetY, // y1
+          x2 - x1, // x2
+          w.globals.gridHeight + anno.offsetY, // y2
+          0, // radius
+          anno.fillColor, // color
+          anno.opacity, // opacity,
+          1, // strokeWidth
+          anno.borderColor, // strokeColor
+          strokeDashArray // stokeDashArray
+          );
+          parent.appendChild(rect.node);
+        }
+      }
+
+      var textY = anno.label.position === 'top' ? -3 : w.globals.gridHeight;
+      var elText = this.graphics.drawText({
+        x: x1 + anno.label.offsetX,
+        y: textY + anno.label.offsetY,
+        text: text,
+        textAnchor: anno.label.textAnchor,
+        fontSize: anno.label.style.fontSize,
+        fontFamily: anno.label.style.fontFamily,
+        foreColor: anno.label.style.color,
+        cssClass: 'apexcharts-xaxis-annotation-label ' + anno.label.style.cssClass
+      });
+      elText.attr({
+        rel: index
+      });
+      parent.appendChild(elText.node); // after placing the annotations on svg, set any vertically placed annotations
+
+      this.setOrientations(anno, index);
+    }
+  }, {
+    key: "drawXAxisAnnotations",
+    value: function drawXAxisAnnotations() {
+      var _this = this;
+
+      var w = this.w;
+      var elg = this.graphics.group({
+        class: 'apexcharts-xaxis-annotations'
+      });
+      w.config.annotations.xaxis.map(function (anno, index) {
+        _this.addXaxisAnnotation(anno, elg.node, index);
+      });
+      return elg;
+    }
+  }, {
+    key: "addYaxisAnnotation",
+    value: function addYaxisAnnotation(anno, parent, index) {
+      var w = this.w;
+      var strokeDashArray = anno.strokeDashArray;
+      var y1;
+      var y2;
+
+      if (this.invertAxis) {
+        var catIndex = w.globals.labels.indexOf(anno.y);
+        var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+
+        if (xLabel) {
+          y1 = parseFloat(xLabel.getAttribute('y'));
+        }
+      } else {
+        y1 = w.globals.gridHeight - (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+        if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+          y1 = (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+        }
+      }
+
+      var text = anno.label.text;
+
+      if (anno.y2 === null) {
+        var line = this.graphics.drawLine(0 + anno.offsetX, // x1
+        y1 + anno.offsetY, // y1
+        w.globals.gridWidth + anno.offsetX, // x2
+        y1 + anno.offsetY, // y2
+        anno.borderColor, // lineColor
+        strokeDashArray // dashArray
+        );
+        parent.appendChild(line.node);
+      } else {
+        if (this.invertAxis) {
+          var _catIndex = w.globals.labels.indexOf(anno.y2);
+
+          var _xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis-texts-g text:nth-child(' + (_catIndex + 1) + ')');
+
+          if (_xLabel) {
+            y2 = parseFloat(_xLabel.getAttribute('y'));
+          }
+        } else {
+          y2 = w.globals.gridHeight - (anno.y2 - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+          if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+            y2 = (anno.y2 - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+          }
+        }
+
+        if (y2 > y1) {
+          var temp = y1;
+          y1 = y2;
+          y2 = temp;
+        }
+
+        if (text) {
+          var rect = this.graphics.drawRect(0 + anno.offsetX, // x1
+          y2 + anno.offsetY, // y1
+          w.globals.gridWidth + anno.offsetX, // x2
+          y1 - y2, // y2
+          0, // radius
+          anno.fillColor, // color
+          anno.opacity, // opacity,
+          1, // strokeWidth
+          anno.borderColor, // strokeColor
+          strokeDashArray // stokeDashArray
+          );
+          parent.appendChild(rect.node);
+        }
+      }
+
+      var textX = anno.label.position === 'right' ? w.globals.gridWidth : 0;
+      var elText = this.graphics.drawText({
+        x: textX + anno.label.offsetX,
+        y: (y2 || y1) + anno.label.offsetY - 3,
+        text: text,
+        textAnchor: anno.label.textAnchor,
+        fontSize: anno.label.style.fontSize,
+        fontFamily: anno.label.style.fontFamily,
+        foreColor: anno.label.style.color,
+        cssClass: 'apexcharts-yaxis-annotation-label ' + anno.label.style.cssClass
+      });
+      elText.attr({
+        rel: index
+      });
+      parent.appendChild(elText.node);
+    }
+  }, {
+    key: "drawYAxisAnnotations",
+    value: function drawYAxisAnnotations() {
+      var _this2 = this;
+
+      var w = this.w;
+      var elg = this.graphics.group({
+        class: 'apexcharts-yaxis-annotations'
+      });
+      w.config.annotations.yaxis.map(function (anno, index) {
+        _this2.addYaxisAnnotation(anno, elg.node, index);
+      });
+      return elg;
+    }
+  }, {
+    key: "clearAnnotations",
+    value: function clearAnnotations(ctx) {
+      var w = ctx.w;
+      var annos = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations');
+      annos = Utils.listToArray(annos);
+      annos.forEach(function (a) {
+        while (a.firstChild) {
+          a.removeChild(a.firstChild);
+        }
+      });
+    }
+  }, {
+    key: "addPointAnnotation",
+    value: function addPointAnnotation(anno, parent, index) {
+      var w = this.w;
+      var x = 0;
+      var y = 0;
+      var pointY = 0;
+
+      if (this.invertAxis) {
+        console.warn('Point annotation is not supported in horizontal bar charts.');
+      }
+
+      if (typeof anno.x === 'string') {
+        var catIndex = w.globals.labels.indexOf(anno.x);
+        var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+        var xPos = parseFloat(xLabel.getAttribute('x'));
+        x = xPos;
+        var annoY = anno.y;
+
+        if (anno.y === null) {
+          annoY = w.globals.series[anno.seriesIndex][catIndex];
+        }
+
+        y = w.globals.gridHeight - (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+        pointY = w.globals.gridHeight - (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+        if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+          y = (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) + parseInt(anno.label.style.fontSize) + anno.marker.size;
+          pointY = (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+        }
+      } else {
+        x = (anno.x - w.globals.minX) / (w.globals.xRange / w.globals.gridWidth);
+        y = w.globals.gridHeight - (parseFloat(anno.y) - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+        pointY = w.globals.gridHeight - (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+        if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+          y = (parseFloat(anno.y) - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+          pointY = (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+        }
+      }
+
+      if (x < 0 || x > w.globals.gridWidth) return;
+      var optsPoints = {
+        pSize: anno.marker.size,
+        pWidth: anno.marker.strokeWidth,
+        pointFillColor: anno.marker.fillColor,
+        pointStrokeColor: anno.marker.strokeColor,
+        shape: anno.marker.shape,
+        radius: anno.marker.radius,
+        class: 'apexcharts-point-annotation-marker ' + anno.marker.cssClass
+      };
+      var point = this.graphics.drawMarker(x + anno.marker.offsetX, pointY + anno.marker.offsetY, optsPoints);
+      parent.appendChild(point.node);
+      var text = anno.label.text ? anno.label.text : '';
+      var elText = this.graphics.drawText({
+        x: x + anno.label.offsetX,
+        y: y + anno.label.offsetY,
+        text: text,
+        textAnchor: anno.label.textAnchor,
+        fontSize: anno.label.style.fontSize,
+        fontFamily: anno.label.style.fontFamily,
+        foreColor: anno.label.style.color,
+        cssClass: 'apexcharts-point-annotation-label ' + anno.label.style.cssClass
+      });
+      elText.attr({
+        rel: index
+      });
+      parent.appendChild(elText.node);
+
+      if (anno.customSVG.SVG) {
+        var g = this.graphics.group({
+          class: 'apexcharts-point-annotations-custom-svg ' + anno.customSVG.cssClass
+        });
+        g.attr({
+          transform: "translate(".concat(x + anno.customSVG.offsetX, ", ").concat(y + anno.customSVG.offsetY, ")")
+        });
+        g.node.innerHTML = anno.customSVG.SVG;
+        parent.appendChild(g.node);
+      }
+    }
+  }, {
+    key: "drawPointAnnotations",
+    value: function drawPointAnnotations() {
+      var _this3 = this;
+
+      var w = this.w;
+      var elg = this.graphics.group({
+        class: 'apexcharts-point-annotations'
+      });
+      w.config.annotations.points.map(function (anno, index) {
+        _this3.addPointAnnotation(anno, elg.node, index);
+      });
+      return elg;
+    }
+  }, {
+    key: "setOrientations",
+    value: function setOrientations(anno) {
+      var annoIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+      var w = this.w;
+
+      if (anno.label.orientation === 'vertical') {
+        var i = annoIndex !== null ? annoIndex : 0;
+        var xAnno = w.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(i, "']"));
+
+        if (xAnno !== null) {
+          var xAnnoCoord = xAnno.getBoundingClientRect();
+          xAnno.setAttribute('x', parseFloat(xAnno.getAttribute('x')) - xAnnoCoord.height + 4);
+
+          if (anno.label.position === 'top') {
+            xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) + xAnnoCoord.width);
+          } else {
+            xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) - xAnnoCoord.width);
+          }
+
+          var annoRotatingCenter = this.graphics.rotateAroundCenter(xAnno);
+          var x = annoRotatingCenter.x;
+          var y = annoRotatingCenter.y;
+          xAnno.setAttribute('transform', "rotate(-90 ".concat(x, " ").concat(y, ")"));
+        }
+      }
+    }
+  }, {
+    key: "addBackgroundToAnno",
+    value: function addBackgroundToAnno(annoEl, anno) {
+      var w = this.w;
+      if (!anno.label.text) return null;
+      var elGridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid').getBoundingClientRect();
+      var coords = annoEl.getBoundingClientRect();
+      var pleft = anno.label.style.padding.left;
+      var pright = anno.label.style.padding.right;
+      var ptop = anno.label.style.padding.top;
+      var pbottom = anno.label.style.padding.bottom;
+
+      if (anno.label.orientation === 'vertical') {
+        ptop = anno.label.style.padding.left;
+        pbottom = anno.label.style.padding.right;
+        pleft = anno.label.style.padding.top;
+        pright = anno.label.style.padding.bottom;
+      }
+
+      var x1 = coords.left - elGridRect.left - pleft;
+      var y1 = coords.top - elGridRect.top - ptop;
+      var elRect = this.graphics.drawRect(x1, y1, coords.width + pleft + pright, coords.height + ptop + pbottom, 0, anno.label.style.background, 1, anno.label.borderWidth, anno.label.borderColor, 0);
+      return elRect;
+    }
+  }, {
+    key: "annotationsBackground",
+    value: function annotationsBackground() {
+      var _this4 = this;
+
+      var w = this.w;
+
+      var add = function add(anno, i, type) {
+        var annoLabel = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations .apexcharts-").concat(type, "-annotation-label[rel='").concat(i, "']"));
+
+        if (annoLabel) {
+          var parent = annoLabel.parentNode;
+
+          var elRect = _this4.addBackgroundToAnno(annoLabel, anno);
+
+          if (elRect) {
+            parent.insertBefore(elRect.node, annoLabel);
+          }
+        }
+      };
+
+      w.config.annotations.xaxis.map(function (anno, i) {
+        add(anno, i, 'xaxis');
+      });
+      w.config.annotations.yaxis.map(function (anno, i) {
+        add(anno, i, 'yaxis');
+      });
+      w.config.annotations.points.map(function (anno, i) {
+        add(anno, i, 'point');
+      });
+    }
+  }, {
+    key: "addText",
+    value: function addText(params, pushToMemory, context) {
+      var x = params.x,
+          y = params.y,
+          text = params.text,
+          textAnchor = params.textAnchor,
+          _params$appendTo = params.appendTo,
+          appendTo = _params$appendTo === void 0 ? '.apexcharts-inner' : _params$appendTo,
+          foreColor = params.foreColor,
+          fontSize = params.fontSize,
+          fontFamily = params.fontFamily,
+          cssClass = params.cssClass,
+          backgroundColor = params.backgroundColor,
+          borderWidth = params.borderWidth,
+          strokeDashArray = params.strokeDashArray,
+          radius = params.radius,
+          borderColor = params.borderColor,
+          _params$paddingLeft = params.paddingLeft,
+          paddingLeft = _params$paddingLeft === void 0 ? 4 : _params$paddingLeft,
+          _params$paddingRight = params.paddingRight,
+          paddingRight = _params$paddingRight === void 0 ? 4 : _params$paddingRight,
+          _params$paddingBottom = params.paddingBottom,
+          paddingBottom = _params$paddingBottom === void 0 ? 2 : _params$paddingBottom,
+          _params$paddingTop = params.paddingTop,
+          paddingTop = _params$paddingTop === void 0 ? 2 : _params$paddingTop;
+      var me = context;
+      var w = me.w;
+      var parentNode = w.globals.dom.baseEl.querySelector(appendTo);
+      var elText = this.graphics.drawText({
+        x: x,
+        y: y,
+        text: text,
+        textAnchor: textAnchor || 'start',
+        fontSize: fontSize || '12px',
+        fontFamily: fontFamily || w.config.chart.fontFamily,
+        foreColor: foreColor || w.config.chart.foreColor,
+        cssClass: 'apexcharts-text ' + cssClass ? cssClass : ''
+      });
+      parentNode.appendChild(elText.node);
+      var textRect = elText.bbox();
+
+      if (text) {
+        var elRect = this.graphics.drawRect(textRect.x - paddingLeft, textRect.y - paddingTop, textRect.width + paddingLeft + paddingRight, textRect.height + paddingBottom + paddingTop, radius, backgroundColor, 1, borderWidth, borderColor, strokeDashArray);
+        elText.before(elRect);
+      }
+
+      if (pushToMemory) {
+        w.globals.memory.methodsToExec.push({
+          context: me,
+          method: me.addText,
+          params: {
+            x: x,
+            y: y,
+            text: text,
+            textAnchor: textAnchor,
+            appendTo: appendTo,
+            foreColor: foreColor,
+            fontSize: fontSize,
+            cssClass: cssClass,
+            backgroundColor: backgroundColor,
+            borderWidth: borderWidth,
+            strokeDashArray: strokeDashArray,
+            radius: radius,
+            borderColor: borderColor,
+            paddingLeft: paddingLeft,
+            paddingRight: paddingRight,
+            paddingBottom: paddingBottom,
+            paddingTop: paddingTop
+          }
+        });
+      }
+
+      return context;
+    }
+  }, {
+    key: "addPointAnnotationExternal",
+    value: function addPointAnnotationExternal(params, pushToMemory, context) {
+      if (typeof this.invertAxis === 'undefined') {
+        this.invertAxis = context.w.globals.isBarHorizontal;
+      }
+
+      this.addAnnotationExternal({
+        params: params,
+        pushToMemory: pushToMemory,
+        context: context,
+        type: 'point',
+        contextMethod: context.addPointAnnotation
+      });
+      return context;
+    }
+  }, {
+    key: "addYaxisAnnotationExternal",
+    value: function addYaxisAnnotationExternal(params, pushToMemory, context) {
+      this.addAnnotationExternal({
+        params: params,
+        pushToMemory: pushToMemory,
+        context: context,
+        type: 'yaxis',
+        contextMethod: context.addYaxisAnnotation
+      });
+      return context;
+    } // The addXaxisAnnotation method requires a parent class, and user calling this method externally on the chart instance may not specify parent, hence a different method
+
+  }, {
+    key: "addXaxisAnnotationExternal",
+    value: function addXaxisAnnotationExternal(params, pushToMemory, context) {
+      this.addAnnotationExternal({
+        params: params,
+        pushToMemory: pushToMemory,
+        context: context,
+        type: 'xaxis',
+        contextMethod: context.addXaxisAnnotation
+      });
+      return context;
+    }
+  }, {
+    key: "addAnnotationExternal",
+    value: function addAnnotationExternal(_ref) {
+      var params = _ref.params,
+          pushToMemory = _ref.pushToMemory,
+          context = _ref.context,
+          type = _ref.type,
+          contextMethod = _ref.contextMethod;
+      var me = context;
+      var w = me.w;
+      var parent = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations"));
+      var index = parent.childNodes.length + 1;
+      var opt = new Options();
+      var axesAnno = Object.assign({}, type === 'xaxis' ? opt.xAxisAnnotation : type === 'yaxis' ? opt.yAxisAnnotation : opt.pointAnnotation);
+      var anno = Utils.extend(axesAnno, params);
+
+      switch (type) {
+        case 'xaxis':
+          this.addXaxisAnnotation(anno, parent, index);
+          break;
+
+        case 'yaxis':
+          this.addYaxisAnnotation(anno, parent, index);
+          break;
+
+        case 'point':
+          this.addPointAnnotation(anno, parent, index);
+          break;
+      } // add background
+
+
+      var axesAnnoLabel = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations .apexcharts-").concat(type, "-annotation-label[rel='").concat(index, "']"));
+      var elRect = this.addBackgroundToAnno(axesAnnoLabel, anno);
+
+      if (elRect) {
+        parent.insertBefore(elRect.node, axesAnnoLabel);
+      }
+
+      if (pushToMemory) {
+        w.globals.memory.methodsToExec.push({
+          context: me,
+          method: contextMethod,
+          params: params
+        });
+      }
+
+      return context;
+    }
+  }]);
+
+  return Annotations;
+}();
+
+/**
+ * DateTime Class to manipulate datetime values.
+ *
+ * @module DateTime
+ **/
+
+var DateTime =
+/*#__PURE__*/
+function () {
+  function DateTime(ctx) {
+    _classCallCheck(this, DateTime);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.months31 = [1, 3, 5, 7, 8, 10, 12];
+    this.months30 = [2, 4, 6, 9, 11];
+    this.daysCntOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
+  }
+
+  _createClass(DateTime, [{
+    key: "isValidDate",
+    value: function isValidDate(date) {
+      return !isNaN(this.parseDate(date));
+    }
+  }, {
+    key: "getUTCTimeStamp",
+    value: function getUTCTimeStamp(dateStr) {
+      if (!Date.parse(dateStr)) {
+        return dateStr;
+      }
+
+      return new Date(new Date(dateStr).toISOString().substr(0, 25)).getTime();
+    }
+  }, {
+    key: "parseDate",
+    value: function parseDate(dateStr) {
+      var parsed = Date.parse(dateStr);
+
+      if (!isNaN(parsed)) {
+        return this.getUTCTimeStamp(dateStr);
+      }
+
+      var output = Date.parse(dateStr.replace(/-/g, '/').replace(/[a-z]+/gi, ' '));
+      output = this.getUTCTimeStamp(output);
+      return output;
+    } // https://stackoverflow.com/a/11252167/6495043
+
+  }, {
+    key: "treatAsUtc",
+    value: function treatAsUtc(dateStr) {
+      var result = new Date(dateStr);
+      result.setMinutes(result.getMinutes() - result.getTimezoneOffset());
+      return result;
+    } // http://stackoverflow.com/questions/14638018/current-time-formatting-with-javascript#answer-14638191
+
+  }, {
+    key: "formatDate",
+    value: function formatDate(date, format) {
+      var utc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      var convertToUTC = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
+      var locale = this.w.globals.locale;
+      var MMMM = ['\x00'].concat(_toConsumableArray(locale.months));
+      var MMM = ['\x01'].concat(_toConsumableArray(locale.shortMonths));
+      var dddd = ['\x02'].concat(_toConsumableArray(locale.days));
+      var ddd = ['\x03'].concat(_toConsumableArray(locale.shortDays));
+
+      function ii(i, len) {
+        var s = i + '';
+        len = len || 2;
+
+        while (s.length < len) {
+          s = '0' + s;
+        }
+
+        return s;
+      }
+
+      if (convertToUTC) {
+        date = this.treatAsUtc(date);
+      }
+
+      var y = utc ? date.getUTCFullYear() : date.getFullYear();
+      format = format.replace(/(^|[^\\])yyyy+/g, '$1' + y);
+      format = format.replace(/(^|[^\\])yy/g, '$1' + y.toString().substr(2, 2));
+      format = format.replace(/(^|[^\\])y/g, '$1' + y);
+      var M = (utc ? date.getUTCMonth() : date.getMonth()) + 1;
+      format = format.replace(/(^|[^\\])MMMM+/g, '$1' + MMMM[0]);
+      format = format.replace(/(^|[^\\])MMM/g, '$1' + MMM[0]);
+      format = format.replace(/(^|[^\\])MM/g, '$1' + ii(M));
+      format = format.replace(/(^|[^\\])M/g, '$1' + M);
+      var d = utc ? date.getUTCDate() : date.getDate();
+      format = format.replace(/(^|[^\\])dddd+/g, '$1' + dddd[0]);
+      format = format.replace(/(^|[^\\])ddd/g, '$1' + ddd[0]);
+      format = format.replace(/(^|[^\\])dd/g, '$1' + ii(d));
+      format = format.replace(/(^|[^\\])d/g, '$1' + d);
+      var H = utc ? date.getUTCHours() : date.getHours();
+      format = format.replace(/(^|[^\\])HH+/g, '$1' + ii(H));
+      format = format.replace(/(^|[^\\])H/g, '$1' + H);
+      var h = H > 12 ? H - 12 : H === 0 ? 12 : H;
+      format = format.replace(/(^|[^\\])hh+/g, '$1' + ii(h));
+      format = format.replace(/(^|[^\\])h/g, '$1' + h);
+      var m = utc ? date.getUTCMinutes() : date.getMinutes();
+      format = format.replace(/(^|[^\\])mm+/g, '$1' + ii(m));
+      format = format.replace(/(^|[^\\])m/g, '$1' + m);
+      var s = utc ? date.getUTCSeconds() : date.getSeconds();
+      format = format.replace(/(^|[^\\])ss+/g, '$1' + ii(s));
+      format = format.replace(/(^|[^\\])s/g, '$1' + s);
+      var f = utc ? date.getUTCMilliseconds() : date.getMilliseconds();
+      format = format.replace(/(^|[^\\])fff+/g, '$1' + ii(f, 3));
+      f = Math.round(f / 10);
+      format = format.replace(/(^|[^\\])ff/g, '$1' + ii(f));
+      f = Math.round(f / 10);
+      format = format.replace(/(^|[^\\])f/g, '$1' + f);
+      var T = H < 12 ? 'AM' : 'PM';
+      format = format.replace(/(^|[^\\])TT+/g, '$1' + T);
+      format = format.replace(/(^|[^\\])T/g, '$1' + T.charAt(0));
+      var t = T.toLowerCase();
+      format = format.replace(/(^|[^\\])tt+/g, '$1' + t);
+      format = format.replace(/(^|[^\\])t/g, '$1' + t.charAt(0));
+      var tz = -date.getTimezoneOffset();
+      var K = utc || !tz ? 'Z' : tz > 0 ? '+' : '-';
+
+      if (!utc) {
+        tz = Math.abs(tz);
+        var tzHrs = Math.floor(tz / 60);
+        var tzMin = tz % 60;
+        K += ii(tzHrs) + ':' + ii(tzMin);
+      }
+
+      format = format.replace(/(^|[^\\])K/g, '$1' + K);
+      var day = (utc ? date.getUTCDay() : date.getDay()) + 1;
+      format = format.replace(new RegExp(dddd[0], 'g'), dddd[day]);
+      format = format.replace(new RegExp(ddd[0], 'g'), ddd[day]);
+      format = format.replace(new RegExp(MMMM[0], 'g'), MMMM[M]);
+      format = format.replace(new RegExp(MMM[0], 'g'), MMM[M]);
+      format = format.replace(/\\(.)/g, '$1');
+      return format;
+    }
+  }, {
+    key: "getTimeUnitsfromTimestamp",
+    value: function getTimeUnitsfromTimestamp(minX, maxX) {
+      var w = this.w;
+
+      if (w.config.xaxis.min !== undefined) {
+        minX = w.config.xaxis.min;
+      }
+
+      if (w.config.xaxis.max !== undefined) {
+        maxX = w.config.xaxis.max;
+      }
+
+      var minYear = new Date(minX).getFullYear();
+      var maxYear = new Date(maxX).getFullYear();
+      var minMonth = new Date(minX).getMonth();
+      var maxMonth = new Date(maxX).getMonth();
+      var minDate = new Date(minX).getDate();
+      var maxDate = new Date(maxX).getDate();
+      var minHour = new Date(minX).getHours();
+      var maxHour = new Date(maxX).getHours();
+      var minMinute = new Date(minX).getMinutes();
+      var maxMinute = new Date(maxX).getMinutes();
+      return {
+        minMinute: minMinute,
+        maxMinute: maxMinute,
+        minHour: minHour,
+        maxHour: maxHour,
+        minDate: minDate,
+        maxDate: maxDate,
+        minMonth: minMonth,
+        maxMonth: maxMonth,
+        minYear: minYear,
+        maxYear: maxYear
+      };
+    }
+  }, {
+    key: "isLeapYear",
+    value: function isLeapYear(year) {
+      return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
+    }
+  }, {
+    key: "calculcateLastDaysOfMonth",
+    value: function calculcateLastDaysOfMonth(month, year, subtract) {
+      var days = this.determineDaysOfMonths(month, year); // whatever days we get, subtract the number of days asked
+
+      return days - subtract;
+    }
+  }, {
+    key: "determineDaysOfYear",
+    value: function determineDaysOfYear(year) {
+      var days = 365;
+
+      if (this.isLeapYear(year)) {
+        days = 366;
+      }
+
+      return days;
+    }
+  }, {
+    key: "determineRemainingDaysOfYear",
+    value: function determineRemainingDaysOfYear(year, month, date) {
+      var dayOfYear = this.daysCntOfYear[month] + date;
+      if (month > 1 && this.isLeapYear()) dayOfYear++;
+      return dayOfYear;
+    }
+  }, {
+    key: "determineDaysOfMonths",
+    value: function determineDaysOfMonths(month, year) {
+      var days = 30;
+      month = Utils.monthMod(month);
+
+      switch (true) {
+        case this.months30.indexOf(month) > -1:
+          if (month === 2) {
+            if (this.isLeapYear(year)) {
+              days = 29;
+            } else {
+              days = 28;
+            }
+          }
+
+          break;
+
+        case this.months31.indexOf(month) > -1:
+          days = 31;
+          break;
+
+        default:
+          days = 31;
+          break;
+      }
+
+      return days;
+    }
+  }]);
+
+  return DateTime;
+}();
+
+/**
+ * ApexCharts Default Class for setting default options for all chart types.
+ *
+ * @module Defaults
+ **/
+
+var Defaults =
+/*#__PURE__*/
+function () {
+  function Defaults(opts) {
+    _classCallCheck(this, Defaults);
+
+    this.opts = opts;
+  }
+
+  _createClass(Defaults, [{
+    key: "line",
+    value: function line() {
+      return {
+        chart: {
+          animations: {
+            easing: 'swing'
+          }
+        },
+        dataLabels: {
+          enabled: false
+        },
+        stroke: {
+          width: 5,
+          curve: 'straight'
+        },
+        markers: {
+          size: 0,
+          hover: {
+            sizeOffset: 6
+          }
+        },
+        xaxis: {
+          crosshairs: {
+            width: 1
+          }
+        }
+      };
+    }
+  }, {
+    key: "sparkline",
+    value: function sparkline(defaults) {
+      this.opts.yaxis[0].labels.show = false;
+      this.opts.yaxis[0].floating = true;
+      var ret = {
+        grid: {
+          show: false,
+          padding: {
+            left: 0,
+            right: 0,
+            top: 0,
+            bottom: 0
+          }
+        },
+        legend: {
+          show: false
+        },
+        xaxis: {
+          labels: {
+            show: false
+          },
+          tooltip: {
+            enabled: false
+          },
+          axisBorder: {
+            show: false
+          }
+        },
+        chart: {
+          toolbar: {
+            show: false
+          },
+          zoom: {
+            enabled: false
+          }
+        },
+        dataLabels: {
+          enabled: false
+        }
+      };
+      return Utils.extend(defaults, ret);
+    }
+  }, {
+    key: "bar",
+    value: function bar() {
+      return {
+        chart: {
+          stacked: false,
+          animations: {
+            easing: 'swing'
+          }
+        },
+        plotOptions: {
+          bar: {
+            dataLabels: {
+              position: 'center'
+            }
+          }
+        },
+        dataLabels: {
+          style: {
+            colors: ['#fff']
+          }
+        },
+        stroke: {
+          width: 0
+        },
+        fill: {
+          opacity: 0.85
+        },
+        legend: {
+          markers: {
+            shape: 'square',
+            radius: 2,
+            size: 8
+          }
+        },
+        tooltip: {
+          shared: false
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          },
+          crosshairs: {
+            width: 'barWidth',
+            position: 'back',
+            fill: {
+              type: 'gradient'
+            },
+            dropShadow: {
+              enabled: false
+            },
+            stroke: {
+              width: 0
+            }
+          }
+        }
+      };
+    }
+  }, {
+    key: "candlestick",
+    value: function candlestick() {
+      return {
+        stroke: {
+          width: 1,
+          colors: ['#333']
+        },
+        dataLabels: {
+          enabled: false
+        },
+        tooltip: {
+          shared: true,
+          custom: function custom(_ref) {
+            var seriesIndex = _ref.seriesIndex,
+                dataPointIndex = _ref.dataPointIndex,
+                w = _ref.w;
+            var o = w.globals.seriesCandleO[seriesIndex][dataPointIndex];
+            var h = w.globals.seriesCandleH[seriesIndex][dataPointIndex];
+            var l = w.globals.seriesCandleL[seriesIndex][dataPointIndex];
+            var c = w.globals.seriesCandleC[seriesIndex][dataPointIndex];
+            return '<div class="apexcharts-tooltip-candlestick">' + '<div>Open: <span class="value">' + o + '</span></div>' + '<div>High: <span class="value">' + h + '</span></div>' + '<div>Low: <span class="value">' + l + '</span></div>' + '<div>Close: <span class="value">' + c + '</span></div>' + '</div>';
+          }
+        },
+        states: {
+          active: {
+            filter: {
+              type: 'none'
+            }
+          }
+        },
+        xaxis: {
+          crosshairs: {
+            width: 1
+          }
+        }
+      };
+    }
+  }, {
+    key: "rangeBar",
+    value: function rangeBar() {
+      return {
+        stroke: {
+          width: 0
+        },
+        plotOptions: {
+          bar: {
+            dataLabels: {
+              position: 'center'
+            }
+          }
+        },
+        dataLabels: {
+          enabled: false,
+          formatter: function formatter(val, _ref2) {
+            var ctx = _ref2.ctx,
+                seriesIndex = _ref2.seriesIndex,
+                dataPointIndex = _ref2.dataPointIndex,
+                w = _ref2.w;
+            var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex];
+            var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex];
+            return end - start;
+          },
+          style: {
+            colors: ['#fff']
+          }
+        },
+        tooltip: {
+          shared: false,
+          followCursor: true,
+          custom: function custom(_ref3) {
+            var ctx = _ref3.ctx,
+                seriesIndex = _ref3.seriesIndex,
+                dataPointIndex = _ref3.dataPointIndex,
+                w = _ref3.w;
+            var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex];
+            var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex];
+            var startVal = '';
+            var endVal = '';
+            var color = w.globals.colors[seriesIndex];
+
+            if (w.config.tooltip.x.formatter === undefined) {
+              if (w.config.xaxis.type === 'datetime') {
+                var datetimeObj = new DateTime(ctx);
+                startVal = datetimeObj.formatDate(new Date(start), w.config.tooltip.x.format, true, true);
+                endVal = datetimeObj.formatDate(new Date(end), w.config.tooltip.x.format, true, true);
+              } else {
+                startVal = start;
+                endVal = end;
+              }
+            } else {
+              startVal = w.config.tooltip.x.formatter(start);
+              endVal = w.config.tooltip.x.formatter(end);
+            }
+
+            var ylabel = w.globals.labels[dataPointIndex];
+            return '<div class="apexcharts-tooltip-rangebar">' + '<div> <span class="series-name" style="color: ' + color + '">' + (w.config.series[seriesIndex].name ? w.config.series[seriesIndex].name : '') + '</span></div>' + '<div> <span class="category">' + ylabel + ': </span> <span class="value start-value">' + startVal + '</span> <span class="separator">-</span> <span class="value end-value">' + endVal + '</span></div>' + '</div>';
+          }
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          },
+          crosshairs: {
+            stroke: {
+              width: 0
+            }
+          }
+        }
+      };
+    }
+  }, {
+    key: "area",
+    value: function area() {
+      return {
+        stroke: {
+          width: 4
+        },
+        fill: {
+          type: 'gradient',
+          gradient: {
+            inverseColors: false,
+            shade: 'light',
+            type: 'vertical',
+            opacityFrom: 0.65,
+            opacityTo: 0.5,
+            stops: [0, 100, 100]
+          }
+        },
+        markers: {
+          size: 0,
+          hover: {
+            sizeOffset: 6
+          }
+        },
+        tooltip: {
+          followCursor: false
+        }
+      };
+    }
+  }, {
+    key: "brush",
+    value: function brush(defaults) {
+      var ret = {
+        chart: {
+          toolbar: {
+            autoSelected: 'selection',
+            show: false
+          },
+          zoom: {
+            enabled: false
+          }
+        },
+        dataLabels: {
+          enabled: false
+        },
+        stroke: {
+          width: 1
+        },
+        tooltip: {
+          enabled: false
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          }
+        }
+      };
+      return Utils.extend(defaults, ret);
+    }
+  }, {
+    key: "stacked100",
+    value: function stacked100() {
+      var _this = this;
+
+      this.opts.dataLabels = this.opts.dataLabels || {};
+      this.opts.dataLabels.formatter = this.opts.dataLabels.formatter || undefined;
+      var existingDataLabelFormatter = this.opts.dataLabels.formatter;
+      this.opts.yaxis.forEach(function (yaxe, index) {
+        _this.opts.yaxis[index].min = 0;
+        _this.opts.yaxis[index].max = 100;
+      });
+      var isBar = this.opts.chart.type === 'bar';
+
+      if (isBar) {
+        this.opts.dataLabels.formatter = existingDataLabelFormatter || function (val) {
+          if (typeof val === 'number') {
+            return val ? val.toFixed(0) + '%' : val;
+          }
+
+          return val;
+        };
+      }
+    } // This function removes the left and right spacing in chart for line/area/scatter if xaxis type = category for those charts by converting xaxis = numeric. Numeric/Datetime xaxis prevents the unnecessary spacing in the left/right of the chart area
+
+  }, {
+    key: "bubble",
+    value: function bubble() {
+      return {
+        dataLabels: {
+          style: {
+            colors: ['#fff']
+          }
+        },
+        tooltip: {
+          shared: false,
+          intersect: true
+        },
+        xaxis: {
+          crosshairs: {
+            width: 0
+          }
+        },
+        fill: {
+          type: 'solid',
+          gradient: {
+            shade: 'light',
+            inverse: true,
+            shadeIntensity: 0.55,
+            opacityFrom: 0.4,
+            opacityTo: 0.8
+          }
+        }
+      };
+    }
+  }, {
+    key: "scatter",
+    value: function scatter() {
+      return {
+        dataLabels: {
+          enabled: false
+        },
+        tooltip: {
+          shared: false,
+          intersect: true
+        },
+        markers: {
+          size: 6,
+          strokeWidth: 2,
+          hover: {
+            sizeOffset: 2
+          }
+        }
+      };
+    }
+  }, {
+    key: "heatmap",
+    value: function heatmap() {
+      return {
+        chart: {
+          stacked: false,
+          zoom: {
+            enabled: false
+          }
+        },
+        fill: {
+          opacity: 1
+        },
+        dataLabels: {
+          style: {
+            colors: ['#fff']
+          }
+        },
+        stroke: {
+          colors: ['#fff']
+        },
+        tooltip: {
+          followCursor: true,
+          marker: {
+            show: false
+          },
+          x: {
+            show: false
+          }
+        },
+        legend: {
+          position: 'top',
+          markers: {
+            shape: 'square',
+            size: 10,
+            offsetY: 2
+          }
+        },
+        grid: {
+          padding: {
+            right: 20
+          }
+        }
+      };
+    }
+  }, {
+    key: "pie",
+    value: function pie() {
+      return {
+        chart: {
+          toolbar: {
+            show: false
+          }
+        },
+        plotOptions: {
+          pie: {
+            donut: {
+              labels: {
+                show: false
+              }
+            }
+          }
+        },
+        dataLabels: {
+          formatter: function formatter(val) {
+            return val.toFixed(1) + '%';
+          },
+          style: {
+            colors: ['#fff']
+          },
+          dropShadow: {
+            enabled: true
+          }
+        },
+        stroke: {
+          colors: ['#fff']
+        },
+        fill: {
+          opacity: 1,
+          gradient: {
+            shade: 'dark',
+            shadeIntensity: 0.35,
+            inverseColors: false,
+            stops: [0, 100, 100]
+          }
+        },
+        padding: {
+          right: 0,
+          left: 0
+        },
+        tooltip: {
+          theme: 'dark',
+          fillSeriesColor: true
+        },
+        legend: {
+          position: 'right'
+        }
+      };
+    }
+  }, {
+    key: "donut",
+    value: function donut() {
+      return {
+        chart: {
+          toolbar: {
+            show: false
+          }
+        },
+        dataLabels: {
+          formatter: function formatter(val) {
+            return val.toFixed(1) + '%';
+          },
+          style: {
+            colors: ['#fff']
+          },
+          dropShadow: {
+            enabled: true
+          }
+        },
+        stroke: {
+          colors: ['#fff']
+        },
+        fill: {
+          opacity: 1,
+          gradient: {
+            shade: 'dark',
+            shadeIntensity: 0.4,
+            inverseColors: false,
+            type: 'vertical',
+            opacityFrom: 1,
+            opacityTo: 1,
+            stops: [70, 98, 100]
+          }
+        },
+        padding: {
+          right: 0,
+          left: 0
+        },
+        tooltip: {
+          theme: 'dark',
+          fillSeriesColor: true
+        },
+        legend: {
+          position: 'right'
+        }
+      };
+    }
+  }, {
+    key: "radar",
+    value: function radar() {
+      this.opts.yaxis[0].labels.style.fontSize = '13px';
+      this.opts.yaxis[0].labels.offsetY = 6;
+      return {
+        dataLabels: {
+          enabled: true,
+          style: {
+            colors: ['#a8a8a8'],
+            fontSize: '11px'
+          }
+        },
+        stroke: {
+          width: 2
+        },
+        markers: {
+          size: 3,
+          strokeWidth: 1,
+          strokeOpacity: 1
+        },
+        fill: {
+          opacity: 0.2
+        },
+        tooltip: {
+          shared: false,
+          intersect: true,
+          followCursor: true
+        },
+        grid: {
+          show: false
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          },
+          crosshairs: {
+            show: false
+          }
+        }
+      };
+    }
+  }, {
+    key: "radialBar",
+    value: function radialBar() {
+      return {
+        chart: {
+          animations: {
+            dynamicAnimation: {
+              enabled: true,
+              speed: 800
+            }
+          },
+          toolbar: {
+            show: false
+          }
+        },
+        fill: {
+          gradient: {
+            shade: 'dark',
+            shadeIntensity: 0.4,
+            inverseColors: false,
+            type: 'diagonal2',
+            opacityFrom: 1,
+            opacityTo: 1,
+            stops: [70, 98, 100]
+          }
+        },
+        padding: {
+          right: 0,
+          left: 0
+        },
+        legend: {
+          show: false,
+          position: 'right'
+        },
+        tooltip: {
+          enabled: false,
+          fillSeriesColor: true
+        }
+      };
+    }
+  }], [{
+    key: "convertCatToNumeric",
+    value: function convertCatToNumeric(opts) {
+      opts.xaxis.type = 'numeric';
+      opts.xaxis.convertedCatToNumeric = true;
+      opts.xaxis.labels = opts.xaxis.labels || {};
+
+      opts.xaxis.labels.formatter = opts.xaxis.labels.formatter || function (val) {
+        return val;
+      };
+
+      opts.chart = opts.chart || {};
+      opts.chart.zoom = opts.chart.zoom || window.Apex.chart && window.Apex.chart.zoom || {};
+      var defaultFormatter = opts.xaxis.labels.formatter;
+      var labels = opts.xaxis.categories && opts.xaxis.categories.length ? opts.xaxis.categories : opts.labels;
+
+      if (labels && labels.length) {
+        opts.xaxis.labels.formatter = function (val) {
+          return defaultFormatter(labels[val - 1]);
+        };
+      }
+
+      opts.xaxis.categories = [];
+      opts.labels = [];
+      opts.chart.zoom.enabled = opts.chart.zoom.enabled || false;
+      return opts;
+    }
+  }]);
+
+  return Defaults;
+}();
+
+/*
+ ** Util functions which are dependent on ApexCharts instance
+ */
+var CoreUtils =
+/*#__PURE__*/
+function () {
+  function CoreUtils(ctx) {
+    _classCallCheck(this, CoreUtils);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(CoreUtils, [{
+    key: "getStackedSeriesTotals",
+
+    /**
+     * @memberof CoreUtils
+     * returns the sum of all individual values in a multiple stacked series
+     * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]]
+     *  @return [34,36,48,13]
+     **/
+    value: function getStackedSeriesTotals() {
+      var w = this.w;
+      var total = [];
+
+      for (var i = 0; i < w.globals.series[w.globals.maxValsInArrayIndex].length; i++) {
+        var t = 0;
+
+        for (var j = 0; j < w.globals.series.length; j++) {
+          t += w.globals.series[j][i];
+        }
+
+        total.push(t);
+      }
+
+      w.globals.stackedSeriesTotals = total;
+      return total;
+    } // get total of the all values inside all series
+
+  }, {
+    key: "getSeriesTotalByIndex",
+    value: function getSeriesTotalByIndex() {
+      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+
+      if (index === null) {
+        // non-plot chart types - pie / donut / circle
+        return this.w.config.series.reduce(function (acc, cur) {
+          return acc + cur;
+        }, 0);
+      } else {
+        // axis charts - supporting multiple series
+        return this.w.globals.series[index].reduce(function (acc, cur) {
+          return acc + cur;
+        }, 0);
+      }
+    }
+  }, {
+    key: "isSeriesNull",
+    value: function isSeriesNull() {
+      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+      var r = [];
+
+      if (index === null) {
+        // non-plot chart types - pie / donut / circle
+        r = this.w.config.series.filter(function (d) {
+          return d !== null;
+        });
+      } else {
+        // axis charts - supporting multiple series
+        r = this.w.globals.series[index].filter(function (d) {
+          return d !== null;
+        });
+      }
+
+      return r.length === 0;
+    }
+  }, {
+    key: "seriesHaveSameValues",
+    value: function seriesHaveSameValues(index) {
+      return this.w.globals.series[index].every(function (val, i, arr) {
+        return val === arr[0];
+      });
+    } // maxValsInArrayIndex is the index of series[] which has the largest number of items
+
+  }, {
+    key: "getLargestSeries",
+    value: function getLargestSeries() {
+      var w = this.w;
+      w.globals.maxValsInArrayIndex = w.globals.series.map(function (a) {
+        return a.length;
+      }).indexOf(Math.max.apply(Math, w.globals.series.map(function (a) {
+        return a.length;
+      })));
+    }
+  }, {
+    key: "getLargestMarkerSize",
+    value: function getLargestMarkerSize() {
+      var w = this.w;
+      var size = 0;
+      w.globals.markers.size.forEach(function (m) {
+        size = Math.max(size, m);
+      });
+      w.globals.markers.largestSize = size;
+      return size;
+    }
+    /**
+     * @memberof Core
+     * returns the sum of all values in a series
+     * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]]
+     *  @return [120, 11]
+     **/
+
+  }, {
+    key: "getSeriesTotals",
+    value: function getSeriesTotals() {
+      var w = this.w;
+      w.globals.seriesTotals = w.globals.series.map(function (ser, index) {
+        var total = 0;
+
+        if (Array.isArray(ser)) {
+          for (var j = 0; j < ser.length; j++) {
+            total += ser[j];
+          }
+        } else {
+          // for pie/donuts/gauges
+          total += ser;
+        }
+
+        return total;
+      });
+    }
+  }, {
+    key: "getSeriesTotalsXRange",
+    value: function getSeriesTotalsXRange(minX, maxX) {
+      var w = this.w;
+      var seriesTotalsXRange = w.globals.series.map(function (ser, index) {
+        var total = 0;
+
+        for (var j = 0; j < ser.length; j++) {
+          if (w.globals.seriesX[index][j] > minX && w.globals.seriesX[index][j] < maxX) {
+            total += ser[j];
+          }
+        }
+
+        return total;
+      });
+      return seriesTotalsXRange;
+    }
+    /**
+     * @memberof CoreUtils
+     * returns the percentage value of all individual values which can be used in a 100% stacked series
+     * Eg. w.globals.series = [[32, 33, 43, 12], [2, 3, 5, 1]]
+     *  @return [[94.11, 91.66, 89.58, 92.30], [5.88, 8.33, 10.41, 7.7]]
+     **/
+
+  }, {
+    key: "getPercentSeries",
+    value: function getPercentSeries() {
+      var w = this.w;
+      w.globals.seriesPercent = w.globals.series.map(function (ser, index) {
+        var seriesPercent = [];
+
+        if (Array.isArray(ser)) {
+          for (var j = 0; j < ser.length; j++) {
+            var total = w.globals.stackedSeriesTotals[j];
+            var percent = 100 * ser[j] / total;
+            seriesPercent.push(percent);
+          }
+        } else {
+          var _total = w.globals.seriesTotals.reduce(function (acc, val) {
+            return acc + val;
+          }, 0);
+
+          var _percent = 100 * ser / _total;
+
+          seriesPercent.push(_percent);
+        }
+
+        return seriesPercent;
+      });
+    }
+  }, {
+    key: "getCalculatedRatios",
+    value: function getCalculatedRatios() {
+      var gl = this.w.globals;
+      var yRatio = [];
+      var invertedYRatio = 0;
+      var xRatio = 0;
+      var initialXRatio = 0;
+      var invertedXRatio = 0;
+      var zRatio = 0;
+      var baseLineY = [];
+      var baseLineInvertedY = 0.1;
+      var baseLineX = 0;
+      gl.yRange = [];
+
+      if (gl.isMultipleYAxis) {
+        for (var i = 0; i < gl.minYArr.length; i++) {
+          gl.yRange.push(Math.abs(gl.minYArr[i] - gl.maxYArr[i]));
+          baseLineY.push(0);
+        }
+      } else {
+        gl.yRange.push(Math.abs(gl.minY - gl.maxY));
+      }
+
+      gl.xRange = Math.abs(gl.maxX - gl.minX);
+      gl.zRange = Math.abs(gl.maxZ - gl.minZ); // multiple y axis
+
+      for (var _i = 0; _i < gl.yRange.length; _i++) {
+        yRatio.push(gl.yRange[_i] / gl.gridHeight);
+      }
+
+      xRatio = gl.xRange / gl.gridWidth;
+      initialXRatio = Math.abs(gl.initialmaxX - gl.initialminX) / gl.gridWidth;
+      invertedYRatio = gl.yRange / gl.gridWidth;
+      invertedXRatio = gl.xRange / gl.gridHeight;
+      zRatio = gl.zRange / gl.gridHeight * 16;
+
+      if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) {
+        // Negative numbers present in series
+        gl.hasNegs = true;
+      }
+
+      if (gl.isMultipleYAxis) {
+        baseLineY = []; // baseline variables is the 0 of the yaxis which will be needed when there are negatives
+
+        for (var _i2 = 0; _i2 < yRatio.length; _i2++) {
+          baseLineY.push(-gl.minYArr[_i2] / yRatio[_i2]);
+        }
+      } else {
+        baseLineY.push(-gl.minY / yRatio[0]);
+
+        if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) {
+          baseLineInvertedY = -gl.minY / invertedYRatio; // this is for bar chart
+
+          baseLineX = gl.minX / xRatio;
+        }
+      }
+
+      return {
+        yRatio: yRatio,
+        invertedYRatio: invertedYRatio,
+        zRatio: zRatio,
+        xRatio: xRatio,
+        initialXRatio: initialXRatio,
+        invertedXRatio: invertedXRatio,
+        baseLineInvertedY: baseLineInvertedY,
+        baseLineY: baseLineY,
+        baseLineX: baseLineX
+      };
+    }
+  }, {
+    key: "getLogSeries",
+    value: function getLogSeries(series) {
+      var w = this.w;
+      w.globals.seriesLog = series.map(function (s, i) {
+        if (w.config.yaxis[i] && w.config.yaxis[i].logarithmic) {
+          return s.map(function (d) {
+            if (d === null) return null;
+            var logVal = (Math.log(d) - Math.log(w.globals.minYArr[i])) / (Math.log(w.globals.maxYArr[i]) - Math.log(w.globals.minYArr[i]));
+            return logVal;
+          });
+        } else {
+          return s;
+        }
+      });
+      return w.globals.seriesLog;
+    }
+  }, {
+    key: "getLogYRatios",
+    value: function getLogYRatios(yRatio) {
+      var _this = this;
+
+      var w = this.w;
+      var gl = this.w.globals;
+      gl.yLogRatio = yRatio.slice();
+      gl.logYRange = gl.yRange.map(function (yRange, i) {
+        if (w.config.yaxis[i] && _this.w.config.yaxis[i].logarithmic) {
+          var maxY = -Number.MAX_VALUE;
+          var minY = Number.MIN_VALUE;
+          var range = 1;
+          gl.seriesLog.forEach(function (s, si) {
+            s.forEach(function (v) {
+              if (w.config.yaxis[si] && w.config.yaxis[si].logarithmic) {
+                maxY = Math.max(v, maxY);
+                minY = Math.min(v, minY);
+              }
+            });
+          });
+          range = Math.pow(gl.yRange[i], Math.abs(minY - maxY) / gl.yRange[i]);
+          gl.yLogRatio[i] = range / gl.gridHeight;
+          return range;
+        }
+      });
+      return gl.yLogRatio;
+    } // Some config objects can be array - and we need to extend them correctly
+
+  }], [{
+    key: "checkComboSeries",
+    value: function checkComboSeries(series) {
+      var comboCharts = false;
+      var comboChartsHasBars = false; // if user specified a type in series too, turn on comboCharts flag
+
+      if (series.length && typeof series[0].type !== 'undefined') {
+        comboCharts = true;
+        series.forEach(function (s) {
+          if (s.type === 'bar' || s.type === 'column') {
+            comboChartsHasBars = true;
+          }
+        });
+      }
+
+      return {
+        comboCharts: comboCharts,
+        comboChartsHasBars: comboChartsHasBars
+      };
+    }
+  }, {
+    key: "extendArrayProps",
+    value: function extendArrayProps(configInstance, options) {
+      if (options.yaxis) {
+        options = configInstance.extendYAxis(options);
+      }
+
+      if (options.annotations) {
+        if (options.annotations.yaxis) {
+          options = configInstance.extendYAxisAnnotations(options);
+        }
+
+        if (options.annotations.xaxis) {
+          options = configInstance.extendXAxisAnnotations(options);
+        }
+
+        if (options.annotations.points) {
+          options = configInstance.extendPointAnnotations(options);
+        }
+      }
+
+      return options;
+    }
+  }]);
+
+  return CoreUtils;
+}();
+
+/**
+ * ApexCharts Config Class for extending user options with pre-defined ApexCharts config.
+ *
+ * @module Config
+ **/
+
+var Config =
+/*#__PURE__*/
+function () {
+  function Config(opts) {
+    _classCallCheck(this, Config);
+
+    this.opts = opts;
+  }
+
+  _createClass(Config, [{
+    key: "init",
+    value: function init() {
+      var opts = this.opts;
+      var options = new Options();
+      var defaults = new Defaults(opts);
+      this.chartType = opts.chart.type;
+
+      if (this.chartType === 'histogram') {
+        // technically, a histogram can be drawn by a column chart with no spaces in between
+        opts.chart.type = 'bar';
+        opts = Utils.extend({
+          plotOptions: {
+            bar: {
+              columnWidth: '99.99%'
+            }
+          }
+        }, opts);
+      }
+
+      opts.series = this.checkEmptySeries(opts.series);
+      opts = this.extendYAxis(opts);
+      opts = this.extendAnnotations(opts);
+      var config = options.init();
+      var newDefaults = {};
+
+      if (opts && _typeof(opts) === 'object') {
+        var chartDefaults = {};
+
+        switch (this.chartType) {
+          case 'line':
+            chartDefaults = defaults.line();
+            break;
+
+          case 'area':
+            chartDefaults = defaults.area();
+            break;
+
+          case 'bar':
+            chartDefaults = defaults.bar();
+            break;
+
+          case 'candlestick':
+            chartDefaults = defaults.candlestick();
+            break;
+
+          case 'rangeBar':
+            chartDefaults = defaults.rangeBar();
+            break;
+
+          case 'histogram':
+            chartDefaults = defaults.bar();
+            break;
+
+          case 'bubble':
+            chartDefaults = defaults.bubble();
+            break;
+
+          case 'scatter':
+            chartDefaults = defaults.scatter();
+            break;
+
+          case 'heatmap':
+            chartDefaults = defaults.heatmap();
+            break;
+
+          case 'pie':
+            chartDefaults = defaults.pie();
+            break;
+
+          case 'donut':
+            chartDefaults = defaults.donut();
+            break;
+
+          case 'radar':
+            chartDefaults = defaults.radar();
+            break;
+
+          case 'radialBar':
+            chartDefaults = defaults.radialBar();
+            break;
+
+          default:
+            chartDefaults = defaults.line();
+        }
+
+        if (opts.chart.brush && opts.chart.brush.enabled) {
+          chartDefaults = defaults.brush(chartDefaults);
+        }
+
+        if (opts.chart.stacked && opts.chart.stackType === '100%') {
+          defaults.stacked100();
+        } // If user has specified a dark theme, make the tooltip dark too
+
+
+        this.checkForDarkTheme(window.Apex); // check global window Apex options
+
+        this.checkForDarkTheme(opts); // check locally passed options
+
+        opts.xaxis = opts.xaxis || window.Apex.xaxis || {};
+        var combo = CoreUtils.checkComboSeries(opts.series);
+
+        if ((opts.chart.type === 'line' || opts.chart.type === 'area' || opts.chart.type === 'scatter') && !combo.comboChartsHasBars && opts.xaxis.type !== 'datetime' && opts.xaxis.type !== 'numeric' && opts.xaxis.tickPlacement !== 'between') {
+          opts = Defaults.convertCatToNumeric(opts);
+        }
+
+        if (opts.chart.sparkline && opts.chart.sparkline.enabled || window.Apex.chart && window.Apex.chart.sparkline && window.Apex.chart.sparkline.enabled) {
+          chartDefaults = defaults.sparkline(chartDefaults);
+        }
+
+        newDefaults = Utils.extend(config, chartDefaults);
+      } // config should cascade in this fashion
+      // default-config < global-apex-variable-config < user-defined-config
+      // get GLOBALLY defined options and merge with the default config
+
+
+      var mergedWithDefaultConfig = Utils.extend(newDefaults, window.Apex); // get the merged config and extend with user defined config
+
+      config = Utils.extend(mergedWithDefaultConfig, opts); // some features are not supported. those mismatches should be handled
+
+      config = this.handleUserInputErrors(config);
+      return config;
+    }
+  }, {
+    key: "extendYAxis",
+    value: function extendYAxis(opts) {
+      var options = new Options();
+
+      if (typeof opts.yaxis === 'undefined') {
+        opts.yaxis = {};
+      } // extend global yaxis config (only if object is provided / not an array)
+
+
+      if (opts.yaxis.constructor !== Array && window.Apex.yaxis && window.Apex.yaxis.constructor !== Array) {
+        opts.yaxis = Utils.extend(opts.yaxis, window.Apex.yaxis);
+      } // as we can't extend nested object's array with extend, we need to do it first
+      // user can provide either an array or object in yaxis config
+
+
+      if (opts.yaxis.constructor !== Array) {
+        // convert the yaxis to array if user supplied object
+        opts.yaxis = [Utils.extend(options.yAxis, opts.yaxis)];
+      } else {
+        opts.yaxis = Utils.extendArray(opts.yaxis, options.yAxis);
+      }
+
+      return opts;
+    } // annotations also accepts array, so we need to extend them manually
+
+  }, {
+    key: "extendAnnotations",
+    value: function extendAnnotations(opts) {
+      if (typeof opts.annotations === 'undefined') {
+        opts.annotations = {};
+        opts.annotations.yaxis = [];
+        opts.annotations.xaxis = [];
+        opts.annotations.points = [];
+      }
+
+      opts = this.extendYAxisAnnotations(opts);
+      opts = this.extendXAxisAnnotations(opts);
+      opts = this.extendPointAnnotations(opts);
+      return opts;
+    }
+  }, {
+    key: "extendYAxisAnnotations",
+    value: function extendYAxisAnnotations(opts) {
+      var options = new Options();
+      opts.annotations.yaxis = Utils.extendArray(typeof opts.annotations.yaxis !== 'undefined' ? opts.annotations.yaxis : [], options.yAxisAnnotation);
+      return opts;
+    }
+  }, {
+    key: "extendXAxisAnnotations",
+    value: function extendXAxisAnnotations(opts) {
+      var options = new Options();
+      opts.annotations.xaxis = Utils.extendArray(typeof opts.annotations.xaxis !== 'undefined' ? opts.annotations.xaxis : [], options.xAxisAnnotation);
+      return opts;
+    }
+  }, {
+    key: "extendPointAnnotations",
+    value: function extendPointAnnotations(opts) {
+      var options = new Options();
+      opts.annotations.points = Utils.extendArray(typeof opts.annotations.points !== 'undefined' ? opts.annotations.points : [], options.pointAnnotation);
+      return opts;
+    }
+  }, {
+    key: "checkForDarkTheme",
+    value: function checkForDarkTheme(opts) {
+      if (opts.theme && opts.theme.mode === 'dark') {
+        if (!opts.tooltip) {
+          opts.tooltip = {};
+        }
+
+        if (opts.tooltip.theme !== 'light') {
+          opts.tooltip.theme = 'dark';
+        }
+
+        if (!opts.chart.foreColor) {
+          opts.chart.foreColor = '#f6f7f8';
+        }
+
+        if (!opts.theme.palette) {
+          opts.theme.palette = 'palette4';
+        }
+      }
+    }
+  }, {
+    key: "checkEmptySeries",
+    value: function checkEmptySeries(ser) {
+      if (ser.length === 0) {
+        return [{
+          data: []
+        }];
+      }
+
+      return ser;
+    }
+  }, {
+    key: "handleUserInputErrors",
+    value: function handleUserInputErrors(opts) {
+      var config = opts; // conflicting tooltip option. intersect makes sure to focus on 1 point at a time. Shared cannot be used along with it
+
+      if (config.tooltip.shared && config.tooltip.intersect) {
+        throw new Error('tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.');
+      }
+
+      if (config.chart.scroller) {
+        console.warn('Scroller has been deprecated since v2.0.0. Please remove the configuration for chart.scroller');
+      }
+
+      if ((config.chart.type === 'bar' || config.chart.type === 'rangeBar') && config.plotOptions.bar.horizontal) {
+        // No multiple yaxis for bars
+        if (config.yaxis.length > 1) {
+          throw new Error('Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false');
+        } // if yaxis is reversed in horizontal bar chart, you should draw the y-axis on right side
+
+
+        if (config.yaxis[0].reversed) {
+          config.yaxis[0].opposite = true;
+        }
+
+        config.xaxis.tooltip.enabled = false; // no xaxis tooltip for horizontal bar
+
+        config.yaxis[0].tooltip.enabled = false; // no xaxis tooltip for horizontal bar
+
+        config.chart.zoom.enabled = false; // no zooming for horz bars
+      }
+
+      if (config.chart.type === 'bar' || config.chart.type === 'rangeBar') {
+        if (config.tooltip.shared) {
+          if (config.xaxis.crosshairs.width === 'barWidth' && config.series.length > 1) {
+            console.warn('crosshairs.width = "barWidth" is only supported in single series, not in a multi-series barChart.');
+            config.xaxis.crosshairs.width = 'tickWidth';
+          }
+
+          if (config.plotOptions.bar.horizontal) {
+            config.states.hover.type = 'none';
+            config.tooltip.shared = false;
+          }
+
+          if (!config.tooltip.followCursor) {
+            console.warn('followCursor option in shared columns cannot be turned off. Please set %ctooltip.followCursor: true', 'color: blue;');
+            config.tooltip.followCursor = true;
+          }
+        }
+      }
+
+      if (config.chart.type === 'candlestick') {
+        if (config.yaxis[0].reversed) {
+          console.warn('Reversed y-axis in candlestick chart is not supported.');
+          config.yaxis[0].reversed = false;
+        }
+      }
+
+      if (config.chart.group && config.yaxis[0].labels.minWidth === 0) {
+        console.warn('It looks like you have multiple charts in synchronization. You must provide yaxis.labels.minWidth which must be EQUAL for all grouped charts to prevent incorrect behaviour.');
+      } // if user supplied array for stroke width, it will only be applicable to line/area charts, for any other charts, revert back to Number
+
+
+      if (Array.isArray(config.stroke.width)) {
+        if (config.chart.type !== 'line' && config.chart.type !== 'area') {
+          console.warn('stroke.width option accepts array only for line and area charts. Reverted back to Number');
+          config.stroke.width = config.stroke.width[0];
+        }
+      }
+
+      return config;
+    }
+  }]);
+
+  return Config;
+}();
+
+var Globals =
+/*#__PURE__*/
+function () {
+  function Globals() {
+    _classCallCheck(this, Globals);
+  }
+
+  _createClass(Globals, [{
+    key: "globalVars",
+    value: function globalVars(config) {
+      return {
+        chartID: null,
+        // chart ID - apexcharts-cuid
+        cuid: null,
+        // chart ID - random numbers excluding "apexcharts" part
+        events: {
+          beforeMount: [],
+          mounted: [],
+          updated: [],
+          clicked: [],
+          selection: [],
+          dataPointSelection: [],
+          zoomed: [],
+          scrolled: []
+        },
+        colors: [],
+        clientX: null,
+        clientY: null,
+        fill: {
+          colors: []
+        },
+        stroke: {
+          colors: []
+        },
+        dataLabels: {
+          style: {
+            colors: []
+          }
+        },
+        radarPolygons: {
+          fill: {
+            colors: []
+          }
+        },
+        markers: {
+          colors: [],
+          size: config.markers.size,
+          largestSize: 0
+        },
+        animationEnded: false,
+        isTouchDevice: 'ontouchstart' in window || navigator.msMaxTouchPoints,
+        isDirty: false,
+        // chart has been updated after the initial render. This is different than dataChanged property. isDirty means user manually called some method to update
+        initialConfig: null,
+        // we will store the first config user has set to go back when user finishes interactions like zooming and come out of it
+        lastXAxis: [],
+        lastYAxis: [],
+        series: [],
+        // the MAIN series array (y values)
+        seriesRangeStart: [],
+        // the clone of series becomes the start in range
+        seriesRangeEnd: [],
+        // the end values in range chart
+        seriesPercent: [],
+        // the percentage values of the given series
+        seriesTotals: [],
+        stackedSeriesTotals: [],
+        seriesX: [],
+        // store the numeric x values in this array (x values)
+        seriesZ: [],
+        // The 3rd "Z" dimension for bubbles chart (z values)
+        labels: [],
+        // store the text to draw on x axis
+        // Don't mutate the labels, many things including tooltips depends on it!
+        timelineLabels: [],
+        // store the timeline Labels in another variable
+        invertedTimelineLabels: [],
+        // for rangebar timeline
+        seriesNames: [],
+        // same as labels, used in non axis charts
+        noLabelsProvided: false,
+        // if user didn't provide any categories/labels or x values, fallback to 1,2,3,4...
+        allSeriesCollapsed: false,
+        collapsedSeries: [],
+        // when user collapses a series, it goes into this array
+        collapsedSeriesIndices: [],
+        // this stores the index of the collapsedSeries instead of whole object for quick access
+        ancillaryCollapsedSeries: [],
+        // when user collapses an "alwaysVisible" series, it goes into this array
+        ancillaryCollapsedSeriesIndices: [],
+        // this stores the index of the ancillaryCollapsedSeries whose y-axis is always visible
+        risingSeries: [],
+        // when user re-opens a collapsed series, it goes here
+        dataFormatXNumeric: false,
+        // boolean value to indicate user has passed numeric x values
+        selectedDataPoints: [],
+        ignoreYAxisIndexes: [],
+        // when series are being collapsed in multiple y axes, ignore certain index
+        padHorizontal: 0,
+        maxValsInArrayIndex: 0,
+        zoomEnabled: config.chart.toolbar.autoSelected === 'zoom' && config.chart.toolbar.tools.zoom && config.chart.zoom.enabled,
+        panEnabled: config.chart.toolbar.autoSelected === 'pan' && config.chart.toolbar.tools.pan,
+        selectionEnabled: config.chart.toolbar.autoSelected === 'selection' && config.chart.toolbar.tools.selection,
+        yaxis: null,
+        minY: Number.MIN_VALUE,
+        //  is 5e-324, i.e. the smallest positive number
+        // NOTE: If there are multiple y axis, the first yaxis array element will be considered for all y values calculations. Rest all will be calculated based on that
+        maxY: -Number.MAX_VALUE,
+        // is -1.7976931348623157e+308
+        // NOTE: The above note for minY applies here as well
+        minYArr: [],
+        maxYArr: [],
+        maxX: -Number.MAX_VALUE,
+        // is -1.7976931348623157e+308
+        initialmaxX: -Number.MAX_VALUE,
+        minX: Number.MIN_VALUE,
+        //  is 5e-324, i.e. the smallest positive number
+        initialminX: Number.MIN_VALUE,
+        minZ: Number.MIN_VALUE,
+        // Max Z value in charts with Z axis
+        maxZ: -Number.MAX_VALUE,
+        // Max Z value in charts with Z axis
+        minXDiff: Number.MAX_VALUE,
+        mousedown: false,
+        lastClientPosition: {},
+        // don't reset this variable this the chart is destroyed. It is used to detect right or left mousemove in panning
+        visibleXRange: undefined,
+        yRange: [],
+        // this property is the absolute sum of positive and negative values [eg (-100 + 200 = 300)] - yAxis
+        zRange: 0,
+        // zAxis Range (for bubble charts)
+        xRange: 0,
+        // xAxis range
+        yValueDecimal: 0,
+        // are there floating numbers in the series. If yes, this represent the len of the decimals
+        total: 0,
+        SVGNS: 'http://www.w3.org/2000/svg',
+        // svg namespace
+        svgWidth: 0,
+        // the whole svg width
+        svgHeight: 0,
+        // the whole svg height
+        noData: false,
+        // whether there is any data to display or not
+        locale: {},
+        // the current locale values will be preserved here for global access
+        dom: {},
+        // for storing all dom nodes in this particular property
+        // elWrap: null, // the element that wraps everything
+        // elGraphical: null, // this contains lines/areas/bars/pies
+        // elGridRect: null, // paths going outside this area will be clipped
+        // elGridRectMask: null, // clipping will happen with this mask
+        // elGridRectMarkerMask: null, // clipping will happen with this mask
+        // elLegendWrap: null, // the whole legend area
+        // elDefs: null, // [defs] element
+        memory: {
+          methodsToExec: []
+        },
+        shouldAnimate: true,
+        skipLastTimelinelabel: false,
+        // when last label is cropped, skip drawing it
+        delayedElements: [],
+        // element which appear after animation has finished
+        axisCharts: true,
+        // chart type = line or area or bar
+        // (refer them also as plot charts in the code)
+        isXNumeric: false,
+        // bool: data was provided in a {[x,y], [x,y]} pattern
+        isDataXYZ: false,
+        // bool: data was provided in a {[x,y,z]} pattern
+        resized: false,
+        // bool: user has resized
+        resizeTimer: null,
+        // timeout function to make a small delay before
+        // drawing when user resized
+        comboCharts: false,
+        // bool: whether it's a combination of line/column
+        comboChartsHasBars: false,
+        // bool: whether it's a combination of line/column
+        dataChanged: false,
+        // bool: has data changed dynamically
+        previousPaths: [],
+        // array: when data is changed, it will animate from
+        // previous paths
+        seriesXvalues: [],
+        // we will need this in tooltip (it's x position)
+        // when we will have unequal x values, we will need
+        // some way to get x value depending on mouse pointer
+        seriesYvalues: [],
+        // we will need this when deciding which series
+        // user hovered on
+        seriesCandleO: [],
+        // candle stick open values
+        seriesCandleH: [],
+        // candle stick high values
+        seriesCandleL: [],
+        // candle stick low values
+        seriesCandleC: [],
+        // candle stick close values
+        allSeriesHasEqualX: true,
+        dataPoints: 0,
+        // the longest series length
+        pointsArray: [],
+        // store the points positions here to draw later on hover
+        // format is - [[x,y],[x,y]... [x,y]]
+        dataLabelsRects: [],
+        // store the positions of datalabels to prevent collision
+        lastDrawnDataLabelsIndexes: [],
+        hasNullValues: false,
+        // bool: whether series contains null values
+        easing: null,
+        // function: animation effect to apply
+        zoomed: false,
+        // whether user has zoomed or not
+        gridWidth: 0,
+        // drawable width of actual graphs (series paths)
+        gridHeight: 0,
+        // drawable height of actual graphs (series paths)
+        yAxisScale: [],
+        xAxisScale: null,
+        xAxisTicksPositions: [],
+        timescaleTicks: [],
+        rotateXLabels: false,
+        defaultLabels: false,
+        xLabelFormatter: undefined,
+        // formatter for x axis labels
+        yLabelFormatters: [],
+        xaxisTooltipFormatter: undefined,
+        // formatter for x axis tooltip
+        ttKeyFormatter: undefined,
+        ttVal: undefined,
+        ttZFormatter: undefined,
+        LINE_HEIGHT_RATIO: 1.618,
+        xAxisLabelsHeight: 0,
+        yAxisLabelsWidth: 0,
+        scaleX: 1,
+        scaleY: 1,
+        translateX: 0,
+        translateY: 0,
+        translateYAxisX: [],
+        yLabelsCoords: [],
+        yTitleCoords: [],
+        yAxisWidths: [],
+        translateXAxisY: 0,
+        translateXAxisX: 0,
+        tooltip: null,
+        tooltipOpts: null
+      };
+    }
+  }, {
+    key: "init",
+    value: function init(config) {
+      var globals = this.globalVars(config);
+      globals.initialConfig = Utils.extend({}, config);
+      globals.initialSeries = JSON.parse(JSON.stringify(globals.initialConfig.series));
+      globals.lastXAxis = JSON.parse(JSON.stringify(globals.initialConfig.xaxis));
+      globals.lastYAxis = JSON.parse(JSON.stringify(globals.initialConfig.yaxis));
+      return globals;
+    }
+  }]);
+
+  return Globals;
+}();
+
+/**
+ * ApexCharts Base Class for extending user options with pre-defined ApexCharts config.
+ *
+ * @module Base
+ **/
+
+var Base =
+/*#__PURE__*/
+function () {
+  function Base(opts) {
+    _classCallCheck(this, Base);
+
+    this.opts = opts;
+  }
+
+  _createClass(Base, [{
+    key: "init",
+    value: function init() {
+      var config = new Config(this.opts).init();
+      var globals = new Globals().init(config);
+      var w = {
+        config: config,
+        globals: globals
+      };
+      return w;
+    }
+  }]);
+
+  return Base;
+}();
+
+/**
+ * ApexCharts Fill Class for setting fill options of the paths.
+ *
+ * @module Fill
+ **/
+
+var Fill =
+/*#__PURE__*/
+function () {
+  function Fill(ctx) {
+    _classCallCheck(this, Fill);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.opts = null;
+    this.seriesIndex = 0;
+  }
+
+  _createClass(Fill, [{
+    key: "clippedImgArea",
+    value: function clippedImgArea(params) {
+      var w = this.w;
+      var cnf = w.config;
+      var svgW = parseInt(w.globals.gridWidth);
+      var svgH = parseInt(w.globals.gridHeight);
+      var size = svgW > svgH ? svgW : svgH;
+      var fillImg = params.image;
+      var imgWidth = 0;
+      var imgHeight = 0;
+
+      if (typeof params.width === 'undefined' && typeof params.height === 'undefined') {
+        if (cnf.fill.image.width !== undefined && cnf.fill.image.height !== undefined) {
+          imgWidth = cnf.fill.image.width + 1;
+          imgHeight = cnf.fill.image.height;
+        } else {
+          imgWidth = size + 1;
+          imgHeight = size;
+        }
+      } else {
+        imgWidth = params.width;
+        imgHeight = params.height;
+      }
+
+      var elPattern = document.createElementNS(w.globals.SVGNS, 'pattern');
+      Graphics.setAttrs(elPattern, {
+        id: params.patternID,
+        patternUnits: params.patternUnits ? params.patternUnits : 'userSpaceOnUse',
+        width: imgWidth + 'px',
+        height: imgHeight + 'px'
+      });
+      var elImage = document.createElementNS(w.globals.SVGNS, 'image');
+      elPattern.appendChild(elImage);
+      elImage.setAttributeNS('http://www.w3.org/1999/xlink', 'href', fillImg);
+      Graphics.setAttrs(elImage, {
+        x: 0,
+        y: 0,
+        preserveAspectRatio: 'none',
+        width: imgWidth + 'px',
+        height: imgHeight + 'px'
+      });
+      elImage.style.opacity = params.opacity;
+      w.globals.dom.elDefs.node.appendChild(elPattern);
+    }
+  }, {
+    key: "getSeriesIndex",
+    value: function getSeriesIndex(opts) {
+      var w = this.w;
+
+      if (w.config.chart.type === 'bar' && w.config.plotOptions.bar.distributed || w.config.chart.type === 'heatmap') {
+        this.seriesIndex = opts.seriesNumber;
+      } else {
+        this.seriesIndex = opts.seriesNumber % w.globals.series.length;
+      }
+
+      return this.seriesIndex;
+    }
+  }, {
+    key: "fillPath",
+    value: function fillPath(opts) {
+      var w = this.w;
+      this.opts = opts;
+      var cnf = this.w.config;
+      var pathFill;
+      var patternFill, gradientFill;
+      this.seriesIndex = this.getSeriesIndex(opts);
+      var fillColors = this.getFillColors();
+      var fillColor = fillColors[this.seriesIndex];
+
+      if (typeof fillColor === 'function') {
+        fillColor = fillColor({
+          seriesIndex: this.seriesIndex,
+          value: opts.value,
+          w: w
+        });
+      }
+
+      var fillType = this.getFillType(this.seriesIndex);
+      var fillOpacity = Array.isArray(cnf.fill.opacity) ? cnf.fill.opacity[this.seriesIndex] : cnf.fill.opacity;
+      var defaultColor = fillColor;
+
+      if (opts.color) {
+        fillColor = opts.color;
+      }
+
+      if (fillColor.indexOf('rgb') === -1) {
+        defaultColor = Utils.hexToRgba(fillColor, fillOpacity);
+      } else {
+        if (fillColor.indexOf('rgba') > -1) {
+          fillOpacity = 0 + '.' + Utils.getOpacityFromRGBA(fillColors[this.seriesIndex]);
+        }
+      }
+
+      if (fillType === 'pattern') {
+        patternFill = this.handlePatternFill(patternFill, fillColor, fillOpacity, defaultColor);
+      }
+
+      if (fillType === 'gradient') {
+        gradientFill = this.handleGradientFill(gradientFill, fillColor, fillOpacity, this.seriesIndex);
+      }
+
+      if (cnf.fill.image.src.length > 0 && fillType === 'image') {
+        if (opts.seriesNumber < cnf.fill.image.src.length) {
+          this.clippedImgArea({
+            opacity: fillOpacity,
+            image: cnf.fill.image.src[opts.seriesNumber],
+            patternUnits: opts.patternUnits,
+            patternID: "pattern".concat(w.globals.cuid).concat(opts.seriesNumber + 1)
+          });
+          pathFill = "url(#pattern".concat(w.globals.cuid).concat(opts.seriesNumber + 1, ")");
+        } else {
+          pathFill = defaultColor;
+        }
+      } else if (fillType === 'gradient') {
+        pathFill = gradientFill;
+      } else if (fillType === 'pattern') {
+        pathFill = patternFill;
+      } else {
+        pathFill = defaultColor;
+      } // override pattern/gradient if opts.solid is true
+
+
+      if (opts.solid) {
+        pathFill = defaultColor;
+      }
+
+      return pathFill;
+    }
+  }, {
+    key: "getFillType",
+    value: function getFillType(seriesIndex) {
+      var w = this.w;
+
+      if (Array.isArray(w.config.fill.type)) {
+        return w.config.fill.type[seriesIndex];
+      } else {
+        return w.config.fill.type;
+      }
+    }
+  }, {
+    key: "getFillColors",
+    value: function getFillColors() {
+      var w = this.w;
+      var cnf = w.config;
+      var opts = this.opts;
+      var fillColors = [];
+
+      if (w.globals.comboCharts) {
+        if (w.config.series[this.seriesIndex].type === 'line') {
+          if (w.globals.stroke.colors instanceof Array) {
+            fillColors = w.globals.stroke.colors;
+          } else {
+            fillColors.push(w.globals.stroke.colors);
+          }
+        } else {
+          if (w.globals.fill.colors instanceof Array) {
+            fillColors = w.globals.fill.colors;
+          } else {
+            fillColors.push(w.globals.fill.colors);
+          }
+        }
+      } else {
+        if (cnf.chart.type === 'line') {
+          if (w.globals.stroke.colors instanceof Array) {
+            fillColors = w.globals.stroke.colors;
+          } else {
+            fillColors.push(w.globals.stroke.colors);
+          }
+        } else {
+          if (w.globals.fill.colors instanceof Array) {
+            fillColors = w.globals.fill.colors;
+          } else {
+            fillColors.push(w.globals.fill.colors);
+          }
+        }
+      } // colors passed in arguments
+
+
+      if (typeof opts.fillColors !== 'undefined') {
+        fillColors = [];
+
+        if (opts.fillColors instanceof Array) {
+          fillColors = opts.fillColors.slice();
+        } else {
+          fillColors.push(opts.fillColors);
+        }
+      }
+
+      return fillColors;
+    }
+  }, {
+    key: "handlePatternFill",
+    value: function handlePatternFill(patternFill, fillColor, fillOpacity, defaultColor) {
+      var cnf = this.w.config;
+      var opts = this.opts;
+      var graphics = new Graphics(this.ctx);
+      var patternStrokeWidth = cnf.fill.pattern.strokeWidth === undefined ? Array.isArray(cnf.stroke.width) ? cnf.stroke.width[this.seriesIndex] : cnf.stroke.width : Array.isArray(cnf.fill.pattern.strokeWidth) ? cnf.fill.pattern.strokeWidth[this.seriesIndex] : cnf.fill.pattern.strokeWidth;
+      var patternLineColor = fillColor;
+
+      if (cnf.fill.pattern.style instanceof Array) {
+        if (typeof cnf.fill.pattern.style[opts.seriesNumber] !== 'undefined') {
+          var pf = graphics.drawPattern(cnf.fill.pattern.style[opts.seriesNumber], cnf.fill.pattern.width, cnf.fill.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity);
+          patternFill = pf;
+        } else {
+          patternFill = defaultColor;
+        }
+      } else {
+        patternFill = graphics.drawPattern(cnf.fill.pattern.style, cnf.fill.pattern.width, cnf.fill.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity);
+      }
+
+      return patternFill;
+    }
+  }, {
+    key: "handleGradientFill",
+    value: function handleGradientFill(gradientFill, fillColor, fillOpacity, i) {
+      var cnf = this.w.config;
+      var opts = this.opts;
+      var graphics = new Graphics(this.ctx);
+      var utils = new Utils();
+      var type = cnf.fill.gradient.type;
+      var gradientFrom, gradientTo;
+      var opacityFrom = cnf.fill.gradient.opacityFrom === undefined ? fillOpacity : Array.isArray(cnf.fill.gradient.opacityFrom) ? cnf.fill.gradient.opacityFrom[i] : cnf.fill.gradient.opacityFrom;
+      var opacityTo = cnf.fill.gradient.opacityTo === undefined ? fillOpacity : Array.isArray(cnf.fill.gradient.opacityTo) ? cnf.fill.gradient.opacityTo[i] : cnf.fill.gradient.opacityTo;
+      gradientFrom = fillColor;
+
+      if (cnf.fill.gradient.gradientToColors === undefined || cnf.fill.gradient.gradientToColors.length === 0) {
+        if (cnf.fill.gradient.shade === 'dark') {
+          gradientTo = utils.shadeColor(parseFloat(cnf.fill.gradient.shadeIntensity) * -1, fillColor);
+        } else {
+          gradientTo = utils.shadeColor(parseFloat(cnf.fill.gradient.shadeIntensity), fillColor);
+        }
+      } else {
+        gradientTo = cnf.fill.gradient.gradientToColors[opts.seriesNumber];
+      }
+
+      if (cnf.fill.gradient.inverseColors) {
+        var t = gradientFrom;
+        gradientFrom = gradientTo;
+        gradientTo = t;
+      }
+
+      gradientFill = graphics.drawGradient(type, gradientFrom, gradientTo, opacityFrom, opacityTo, opts.size, cnf.fill.gradient.stops, cnf.fill.gradient.colorStops, i);
+      return gradientFill;
+    }
+  }]);
+
+  return Fill;
+}();
+
+/**
+ * ApexCharts Markers Class for drawing points on y values in axes charts.
+ *
+ * @module Markers
+ **/
+
+var Markers =
+/*#__PURE__*/
+function () {
+  function Markers(ctx, opts) {
+    _classCallCheck(this, Markers);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Markers, [{
+    key: "setGlobalMarkerSize",
+    value: function setGlobalMarkerSize() {
+      var w = this.w;
+      w.globals.markers.size = Array.isArray(w.config.markers.size) ? w.config.markers.size : [w.config.markers.size];
+
+      if (w.globals.markers.size.length > 0) {
+        if (w.globals.markers.size.length < w.globals.series.length + 1) {
+          for (var i = 0; i <= w.globals.series.length; i++) {
+            if (typeof w.globals.markers.size[i] === 'undefined') {
+              w.globals.markers.size.push(w.globals.markers.size[0]);
+            }
+          }
+        }
+      } else {
+        w.globals.markers.size = w.config.series.map(function (s) {
+          return w.config.markers.size;
+        });
+      }
+    }
+  }, {
+    key: "plotChartMarkers",
+    value: function plotChartMarkers(pointsPos, seriesIndex, j) {
+      var _this = this;
+
+      var w = this.w;
+      var i = seriesIndex;
+      var p = pointsPos;
+      var elPointsWrap = null;
+      var graphics = new Graphics(this.ctx);
+      var point;
+
+      if (w.globals.markers.size[seriesIndex] > 0) {
+        elPointsWrap = graphics.group({
+          class: 'apexcharts-series-markers'
+        });
+        elPointsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")"));
+      }
+
+      if (p.x instanceof Array) {
+        var _loop = function _loop(q) {
+          var dataPointIndex = j; // a small hack as we have 2 points for the first val to connect it
+
+          if (j === 1 && q === 0) dataPointIndex = 0;
+          if (j === 1 && q === 1) dataPointIndex = 1;
+          var PointClasses = 'apexcharts-marker';
+
+          if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) {
+            PointClasses += ' no-pointer-events';
+          }
+
+          var shouldMarkerDraw = Array.isArray(w.config.markers.size) ? w.globals.markers.size[seriesIndex] > 0 : w.config.markers.size > 0;
+
+          if (shouldMarkerDraw) {
+            if (Utils.isNumber(p.y[q])) {
+              PointClasses += " w".concat((Math.random() + 1).toString(36).substring(4));
+            } else {
+              PointClasses = 'apexcharts-nullpoint';
+            }
+
+            var opts = _this.getMarkerConfig(PointClasses, seriesIndex); // discrete markers is an option where user can specify a particular marker with different size and color
+
+
+            w.config.markers.discrete.map(function (marker) {
+              if (marker.seriesIndex === seriesIndex && marker.dataPointIndex === dataPointIndex) {
+                opts.pointStrokeColor = marker.strokeColor;
+                opts.pointFillColor = marker.fillColor;
+                opts.pSize = marker.size;
+              }
+            });
+
+            if (w.config.series[i].data[j]) {
+              if (w.config.series[i].data[j].fillColor) {
+                opts.pointFillColor = w.config.series[i].data[j].fillColor;
+              }
+
+              if (w.config.series[i].data[j].strokeColor) {
+                opts.pointStrokeColor = w.config.series[i].data[j].strokeColor;
+              }
+            }
+
+            point = graphics.drawMarker(p.x[q], p.y[q], opts);
+            point.attr('rel', dataPointIndex);
+            point.attr('j', dataPointIndex);
+            point.attr('index', seriesIndex);
+            point.node.setAttribute('default-marker-size', opts.pSize);
+            var filters = new Filters(_this.ctx);
+            filters.setSelectionFilter(point, seriesIndex, dataPointIndex);
+
+            _this.addEvents(point);
+
+            if (elPointsWrap) {
+              elPointsWrap.add(point);
+            }
+          } else {
+            // dynamic array creation - multidimensional
+            if (typeof w.globals.pointsArray[seriesIndex] === 'undefined') w.globals.pointsArray[seriesIndex] = [];
+            w.globals.pointsArray[seriesIndex].push([p.x[q], p.y[q]]);
+          }
+        };
+
+        for (var q = 0; q < p.x.length; q++) {
+          _loop(q);
+        }
+      }
+
+      return elPointsWrap;
+    }
+  }, {
+    key: "getMarkerConfig",
+    value: function getMarkerConfig(cssClass, seriesIndex) {
+      var w = this.w;
+      var pStyle = this.getMarkerStyle(seriesIndex);
+      var pSize = w.globals.markers.size[seriesIndex];
+      return {
+        pSize: pSize,
+        pRadius: w.config.markers.radius,
+        pWidth: w.config.markers.strokeWidth,
+        pointStrokeColor: pStyle.pointStrokeColor,
+        pointFillColor: pStyle.pointFillColor,
+        shape: w.config.markers.shape instanceof Array ? w.config.markers.shape[seriesIndex] : w.config.markers.shape,
+        class: cssClass,
+        pointStrokeOpacity: w.config.markers.strokeOpacity,
+        pointFillOpacity: w.config.markers.fillOpacity,
+        seriesIndex: seriesIndex
+      };
+    }
+  }, {
+    key: "addEvents",
+    value: function addEvents(circle) {
+      var graphics = new Graphics(this.ctx);
+      circle.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this.ctx, circle));
+      circle.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this.ctx, circle));
+      circle.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this.ctx, circle));
+      circle.node.addEventListener('touchstart', graphics.pathMouseDown.bind(this.ctx, circle), {
+        passive: true
+      });
+    }
+  }, {
+    key: "getMarkerStyle",
+    value: function getMarkerStyle(seriesIndex) {
+      var w = this.w;
+      var colors = w.globals.markers.colors;
+      var strokeColors = w.config.markers.strokeColor || w.config.markers.strokeColors;
+      var pointStrokeColor = strokeColors instanceof Array ? strokeColors[seriesIndex] : strokeColors;
+      var pointFillColor = colors instanceof Array ? colors[seriesIndex] : colors;
+      return {
+        pointStrokeColor: pointStrokeColor,
+        pointFillColor: pointFillColor
+      };
+    }
+  }]);
+
+  return Markers;
+}();
+
+/**
+ * ApexCharts Scatter Class.
+ * This Class also handles bubbles chart as currently there is no major difference in drawing them,
+ * @module Scatter
+ **/
+
+var Scatter =
+/*#__PURE__*/
+function () {
+  function Scatter(ctx) {
+    _classCallCheck(this, Scatter);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.initialAnim = this.w.config.chart.animations.enabled;
+    this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; // this array will help in centering the label in bubbles
+
+    this.radiusSizes = [];
+  }
+
+  _createClass(Scatter, [{
+    key: "draw",
+    value: function draw(elSeries, j, opts) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var realIndex = opts.realIndex;
+      var pointsPos = opts.pointsPos;
+      var zRatio = opts.zRatio;
+      var elPointsMain = opts.elParent;
+      var elPointsWrap = graphics.group({
+        class: "apexcharts-series-markers apexcharts-series-".concat(w.config.chart.type)
+      });
+      elPointsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")"));
+
+      if (pointsPos.x instanceof Array) {
+        for (var q = 0; q < pointsPos.x.length; q++) {
+          var dataPointIndex = j + 1;
+          var shouldDraw = true; // a small hack as we have 2 points for the first val to connect it
+
+          if (j === 0 && q === 0) dataPointIndex = 0;
+          if (j === 0 && q === 1) dataPointIndex = 1;
+          var radius = 0;
+          var finishRadius = w.globals.markers.size[realIndex];
+
+          if (zRatio !== Infinity) {
+            // means we have a bubble
+            finishRadius = w.globals.seriesZ[realIndex][dataPointIndex] / zRatio;
+
+            if (typeof this.radiusSizes[realIndex] === 'undefined') {
+              this.radiusSizes.push([]);
+            }
+
+            this.radiusSizes[realIndex].push(finishRadius);
+          }
+
+          if (!w.config.chart.animations.enabled) {
+            radius = finishRadius;
+          }
+
+          var x = pointsPos.x[q];
+          var y = pointsPos.y[q];
+          radius = radius || 0;
+
+          if (x === 0 && y === 0 || y === null || typeof w.globals.series[realIndex][dataPointIndex] === 'undefined') {
+            shouldDraw = false;
+          }
+
+          if (shouldDraw) {
+            var circle = this.drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j);
+            elPointsWrap.add(circle);
+          }
+
+          elPointsMain.add(elPointsWrap);
+        }
+      }
+    }
+  }, {
+    key: "drawPoint",
+    value: function drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j) {
+      var w = this.w;
+      var i = realIndex;
+      var anim = new Animations(this.ctx);
+      var filters = new Filters(this.ctx);
+      var fill = new Fill(this.ctx);
+      var markers = new Markers(this.ctx);
+      var graphics = new Graphics(this.ctx);
+      var markerConfig = markers.getMarkerConfig('apexcharts-marker', i);
+      var pathFillCircle = fill.fillPath({
+        seriesNumber: realIndex,
+        patternUnits: 'objectBoundingBox',
+        value: w.globals.series[realIndex][j]
+      });
+      var circle = graphics.drawCircle(radius);
+
+      if (w.config.series[i].data[dataPointIndex]) {
+        if (w.config.series[i].data[dataPointIndex].fillColor) {
+          pathFillCircle = w.config.series[i].data[dataPointIndex].fillColor;
+        }
+      }
+
+      circle.attr({
+        cx: x,
+        cy: y,
+        fill: pathFillCircle,
+        stroke: markerConfig.pointStrokeColor,
+        strokeWidth: markerConfig.pWidth
+      });
+
+      if (w.config.chart.dropShadow.enabled) {
+        var dropShadow = w.config.chart.dropShadow;
+        filters.dropShadow(circle, dropShadow, realIndex);
+      }
+
+      if (this.initialAnim && !w.globals.dataChanged) {
+        var speed = 1;
+
+        if (!w.globals.resized) {
+          speed = w.config.chart.animations.speed;
+        }
+
+        anim.animateCircleRadius(circle, 0, finishRadius, speed, w.globals.easing);
+      }
+
+      if (w.globals.dataChanged) {
+        if (this.dynamicAnim) {
+          var _speed = w.config.chart.animations.dynamicAnimation.speed;
+          var prevX, prevY, prevR;
+          var prevPathJ = null;
+          prevPathJ = w.globals.previousPaths[realIndex] && w.globals.previousPaths[realIndex][j];
+
+          if (typeof prevPathJ !== 'undefined' && prevPathJ !== null) {
+            // series containing less elements will ignore these values and revert to 0
+            prevX = prevPathJ.x;
+            prevY = prevPathJ.y;
+            prevR = typeof prevPathJ.r !== 'undefined' ? prevPathJ.r : finishRadius;
+          }
+
+          for (var cs = 0; cs < w.globals.collapsedSeries.length; cs++) {
+            if (w.globals.collapsedSeries[cs].index === realIndex) {
+              _speed = 1;
+              finishRadius = 0;
+            }
+          }
+
+          if (x === 0 && y === 0) finishRadius = 0;
+          anim.animateCircle(circle, {
+            cx: prevX,
+            cy: prevY,
+            r: prevR
+          }, {
+            cx: x,
+            cy: y,
+            r: finishRadius
+          }, _speed, w.globals.easing);
+        } else {
+          circle.attr({
+            r: finishRadius
+          });
+        }
+      }
+
+      circle.attr({
+        rel: dataPointIndex,
+        j: dataPointIndex,
+        index: realIndex,
+        'default-marker-size': finishRadius
+      });
+      filters.setSelectionFilter(circle, realIndex, dataPointIndex);
+      markers.addEvents(circle);
+      circle.node.classList.add('apexcharts-marker');
+      return circle;
+    }
+  }, {
+    key: "centerTextInBubble",
+    value: function centerTextInBubble(y) {
+      var w = this.w;
+      y = y + parseInt(w.config.dataLabels.style.fontSize) / 4;
+      return {
+        y: y
+      };
+    }
+  }]);
+
+  return Scatter;
+}();
+
+/**
+ * ApexCharts DataLabels Class for drawing dataLabels on Axes based Charts.
+ *
+ * @module DataLabels
+ **/
+
+var DataLabels =
+/*#__PURE__*/
+function () {
+  function DataLabels(ctx) {
+    _classCallCheck(this, DataLabels);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  } // When there are many datalabels to be printed, and some of them overlaps each other in the same series, this method will take care of that
+  // Also, when datalabels exceeds the drawable area and get clipped off, we need to adjust and move some pixels to make them visible again
+
+
+  _createClass(DataLabels, [{
+    key: "dataLabelsCorrection",
+    value: function dataLabelsCorrection(x, y, val, i, dataPointIndex, alwaysDrawDataLabel, fontSize) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var drawnextLabel = false; //
+
+      var textRects = graphics.getTextRects(val, fontSize);
+      var width = textRects.width;
+      var height = textRects.height; // first value in series, so push an empty array
+
+      if (typeof w.globals.dataLabelsRects[i] === 'undefined') w.globals.dataLabelsRects[i] = []; // then start pushing actual rects in that sub-array
+
+      w.globals.dataLabelsRects[i].push({
+        x: x,
+        y: y,
+        width: width,
+        height: height
+      });
+      var len = w.globals.dataLabelsRects[i].length - 2;
+      var lastDrawnIndex = typeof w.globals.lastDrawnDataLabelsIndexes[i] !== 'undefined' ? w.globals.lastDrawnDataLabelsIndexes[i][w.globals.lastDrawnDataLabelsIndexes[i].length - 1] : 0;
+
+      if (typeof w.globals.dataLabelsRects[i][len] !== 'undefined') {
+        var lastDataLabelRect = w.globals.dataLabelsRects[i][lastDrawnIndex];
+
+        if ( // next label forward and x not intersecting
+        x > lastDataLabelRect.x + lastDataLabelRect.width + 2 || y > lastDataLabelRect.y + lastDataLabelRect.height + 2 || x + width < lastDataLabelRect.x // next label is going to be drawn backwards
+        ) {
+            // the 2 indexes don't override, so OK to draw next label
+            drawnextLabel = true;
+          }
+      }
+
+      if (dataPointIndex === 0 || alwaysDrawDataLabel) {
+        drawnextLabel = true;
+      }
+
+      return {
+        x: x,
+        y: y,
+        drawnextLabel: drawnextLabel
+      };
+    }
+  }, {
+    key: "drawDataLabel",
+    value: function drawDataLabel(pos, i, j) {
+      var align = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'top';
+      // this method handles line, area, bubble, scatter charts as those charts contains markers/points which have pre-defined x/y positions
+      // all other charts like bars / heatmaps will define their own drawDataLabel routine
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var dataLabelsConfig = w.config.dataLabels;
+      var x = 0;
+      var y = 0;
+      var dataPointIndex = j;
+      var elDataLabelsWrap = null;
+
+      if (!dataLabelsConfig.enabled || pos.x instanceof Array !== true) {
+        return elDataLabelsWrap;
+      }
+
+      elDataLabelsWrap = graphics.group({
+        class: 'apexcharts-data-labels'
+      });
+      elDataLabelsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")"));
+
+      for (var q = 0; q < pos.x.length; q++) {
+        x = pos.x[q] + dataLabelsConfig.offsetX;
+        y = pos.y[q] + dataLabelsConfig.offsetY - w.globals.markers.size[i] - 5;
+
+        if (align === 'bottom') {
+          y = y + w.globals.markers.size[i] * 2 + parseInt(dataLabelsConfig.style.fontSize) * 1.4;
+        }
+
+        if (!isNaN(x)) {
+          // a small hack as we have 2 points for the first val to connect it
+          if (j === 1 && q === 0) dataPointIndex = 0;
+          if (j === 1 && q === 1) dataPointIndex = 1;
+          var val = w.globals.series[i][dataPointIndex];
+          var text = '';
+
+          if (w.config.chart.type === 'bubble') {
+            text = w.globals.seriesZ[i][dataPointIndex];
+            y = pos.y[q] + w.config.dataLabels.offsetY;
+            var scatter = new Scatter(this.ctx);
+            var centerTextInBubbleCoords = scatter.centerTextInBubble(y, i, dataPointIndex);
+            y = centerTextInBubbleCoords.y;
+          } else {
+            if (typeof val !== 'undefined' && val !== null) {
+              text = w.config.dataLabels.formatter(val, {
+                ctx: this.ctx,
+                seriesIndex: i,
+                dataPointIndex: dataPointIndex,
+                w: w
+              });
+            }
+          }
+
+          this.plotDataLabelsText({
+            x: x,
+            y: y,
+            text: text,
+            i: i,
+            j: dataPointIndex,
+            parent: elDataLabelsWrap,
+            offsetCorrection: true,
+            dataLabelsConfig: w.config.dataLabels
+          });
+        }
+      }
+
+      return elDataLabelsWrap;
+    }
+  }, {
+    key: "plotDataLabelsText",
+    value: function plotDataLabelsText(opts) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var x = opts.x,
+          y = opts.y,
+          i = opts.i,
+          j = opts.j,
+          text = opts.text,
+          textAnchor = opts.textAnchor,
+          parent = opts.parent,
+          dataLabelsConfig = opts.dataLabelsConfig,
+          alwaysDrawDataLabel = opts.alwaysDrawDataLabel,
+          offsetCorrection = opts.offsetCorrection;
+
+      if (Array.isArray(w.config.dataLabels.enabledOnSeries)) {
+        if (w.config.dataLabels.enabledOnSeries.indexOf(i) > -1) {
+          return;
+        }
+      }
+
+      var correctedLabels = {
+        x: x,
+        y: y,
+        drawnextLabel: true
+      };
+
+      if (offsetCorrection) {
+        correctedLabels = this.dataLabelsCorrection(x, y, text, i, j, alwaysDrawDataLabel, parseInt(dataLabelsConfig.style.fontSize));
+      } // when zoomed, we don't need to correct labels offsets,
+      // but if normally, labels get cropped, correct them
+
+
+      if (!w.globals.zoomed) {
+        x = correctedLabels.x;
+        y = correctedLabels.y;
+      }
+
+      if (correctedLabels.drawnextLabel) {
+        var dataLabelText = graphics.drawText({
+          width: 100,
+          height: parseInt(dataLabelsConfig.style.fontSize),
+          x: x,
+          y: y,
+          foreColor: w.globals.dataLabels.style.colors[i],
+          textAnchor: textAnchor || dataLabelsConfig.textAnchor,
+          text: text,
+          fontSize: dataLabelsConfig.style.fontSize,
+          fontFamily: dataLabelsConfig.style.fontFamily
+        });
+        dataLabelText.attr({
+          class: 'apexcharts-datalabel',
+          cx: x,
+          cy: y
+        });
+
+        if (dataLabelsConfig.dropShadow.enabled) {
+          var textShadow = dataLabelsConfig.dropShadow;
+          var filters = new Filters(this.ctx);
+          filters.dropShadow(dataLabelText, textShadow);
+        }
+
+        parent.add(dataLabelText);
+
+        if (typeof w.globals.lastDrawnDataLabelsIndexes[i] === 'undefined') {
+          w.globals.lastDrawnDataLabelsIndexes[i] = [];
+        }
+
+        w.globals.lastDrawnDataLabelsIndexes[i].push(j);
+      }
+    }
+  }]);
+
+  return DataLabels;
+}();
+
+/**
+ * ApexCharts Bar Class responsible for drawing both Columns and Bars.
+ *
+ * @module Bar
+ **/
+
+var Bar =
+/*#__PURE__*/
+function () {
+  function Bar(ctx, xyRatios) {
+    _classCallCheck(this, Bar);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+    this.barOptions = w.config.plotOptions.bar;
+    this.isHorizontal = this.barOptions.horizontal;
+    this.strokeWidth = w.config.stroke.width;
+    this.isNullValue = false;
+    this.xyRatios = xyRatios;
+
+    if (this.xyRatios !== null) {
+      this.xRatio = xyRatios.xRatio;
+      this.yRatio = xyRatios.yRatio;
+      this.invertedXRatio = xyRatios.invertedXRatio;
+      this.invertedYRatio = xyRatios.invertedYRatio;
+      this.baseLineY = xyRatios.baseLineY;
+      this.baseLineInvertedY = xyRatios.baseLineInvertedY;
+    }
+
+    this.yaxisIndex = 0;
+    this.seriesLen = 0;
+  }
+  /** primary draw method which is called on bar object
+   * @memberof Bar
+   * @param {array} series - user supplied series values
+   * @param {int} seriesIndex - the index by which series will be drawn on the svg
+   * @return {node} element which is supplied to parent chart draw method for appending
+   **/
+
+
+  _createClass(Bar, [{
+    key: "draw",
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var coreUtils = new CoreUtils(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+      this.series = series;
+      this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+      this.initVariables(series);
+      var ret = graphics.group({
+        class: 'apexcharts-bar-series apexcharts-plot-series'
+      });
+
+      if (w.config.dataLabels.enabled) {
+        if (this.totalItems > w.config.plotOptions.bar.dataLabels.maxItems) {
+          console.warn('WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.');
+        }
+      }
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var x = void 0,
+            y = void 0,
+            xDivision = void 0,
+            // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+        yDivision = void 0,
+            // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+        zeroH = void 0,
+            // zeroH is the baseline where 0 meets y axis
+        zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+        var yArrj = []; // hold y values of current iterating series
+
+        var xArrj = []; // hold x values of current iterating series
+
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn
+
+        var elSeries = graphics.group({
+          class: "apexcharts-series",
+          rel: i + 1,
+          seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+          'data:realIndex': realIndex
+        });
+        this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex);
+
+        if (series[i].length > 0) {
+          this.visibleI = this.visibleI + 1;
+        }
+
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;
+        var initPositions = this.initialPositions();
+        y = initPositions.y;
+        barHeight = initPositions.barHeight;
+        yDivision = initPositions.yDivision;
+        zeroW = initPositions.zeroW;
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+
+        if (!this.horizontal) {
+          xArrj.push(x + barWidth / 2);
+        } // eldatalabels
+
+
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+
+        for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+          if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+            this.isNullValue = true;
+          } else {
+            this.isNullValue = false;
+          }
+
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var paths = null;
+
+          if (this.isHorizontal) {
+            paths = this.drawBarPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              barHeight: barHeight,
+              strokeWidth: strokeWidth,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              zeroW: zeroW,
+              x: x,
+              y: y,
+              yDivision: yDivision,
+              elSeries: elSeries
+            });
+            barWidth = this.series[i][j] / this.invertedYRatio;
+          } else {
+            paths = this.drawColumnPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              x: x,
+              y: y,
+              xDivision: xDivision,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              barWidth: barWidth,
+              zeroH: zeroH,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries
+            });
+            barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+          }
+
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x; // push current X
+
+          if (j > 0) {
+            xArrj.push(x + barWidth / 2);
+          }
+
+          yArrj.push(y);
+          var pathFill = this.getPathFillColor(series, i, j, realIndex);
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            visibleSeries: this.visibleI,
+            type: 'bar'
+          });
+        } // push all x val arrays into main xArr
+
+
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj;
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: "getPathFillColor",
+    value: function getPathFillColor(series, i, j, realIndex) {
+      var w = this.w;
+      var fill = new Fill(this.ctx);
+      var fillColor = null;
+      var seriesNumber = this.barOptions.distributed ? j : i;
+
+      if (this.barOptions.colors.ranges.length > 0) {
+        var colorRange = this.barOptions.colors.ranges;
+        colorRange.map(function (range) {
+          if (series[i][j] >= range.from && series[i][j] <= range.to) {
+            fillColor = range.color;
+          }
+        });
+      }
+
+      if (w.config.series[i].data[j] && w.config.series[i].data[j].fillColor) {
+        fillColor = w.config.series[i].data[j].fillColor;
+      }
+
+      var pathFill = fill.fillPath({
+        seriesNumber: this.barOptions.distributed ? seriesNumber : realIndex,
+        color: fillColor,
+        value: series[i][j]
+      });
+      return pathFill;
+    }
+  }, {
+    key: "renderSeries",
+    value: function renderSeries(_ref) {
+      var realIndex = _ref.realIndex,
+          pathFill = _ref.pathFill,
+          lineFill = _ref.lineFill,
+          j = _ref.j,
+          i = _ref.i,
+          pathFrom = _ref.pathFrom,
+          pathTo = _ref.pathTo,
+          strokeWidth = _ref.strokeWidth,
+          elSeries = _ref.elSeries,
+          x = _ref.x,
+          y = _ref.y,
+          series = _ref.series,
+          barHeight = _ref.barHeight,
+          barWidth = _ref.barWidth,
+          elDataLabelsWrap = _ref.elDataLabelsWrap,
+          visibleSeries = _ref.visibleSeries,
+          type = _ref.type;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+
+      if (!lineFill) {
+        /* fix apexcharts#341 */
+        lineFill = this.barOptions.distributed ? w.globals.stroke.colors[j] : w.globals.stroke.colors[realIndex];
+      }
+
+      if (w.config.series[i].data[j] && w.config.series[i].data[j].strokeColor) {
+        lineFill = w.config.series[i].data[j].strokeColor;
+      }
+
+      if (this.isNullValue) {
+        pathFill = 'none';
+      }
+
+      var delay = j / w.config.chart.animations.animateGradually.delay * (w.config.chart.animations.speed / w.globals.dataPoints) / 2.4;
+      var renderedPath = graphics.renderPaths({
+        i: i,
+        j: j,
+        realIndex: realIndex,
+        pathFrom: pathFrom,
+        pathTo: pathTo,
+        stroke: lineFill,
+        strokeWidth: strokeWidth,
+        strokeLineCap: w.config.stroke.lineCap,
+        fill: pathFill,
+        animationDelay: delay,
+        initialSpeed: w.config.chart.animations.speed,
+        dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+        className: "apexcharts-".concat(type, "-area"),
+        id: "apexcharts-".concat(type, "-area")
+      });
+      renderedPath.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")"));
+      var filters = new Filters(this.ctx);
+      filters.setSelectionFilter(renderedPath, realIndex, j);
+      elSeries.add(renderedPath);
+      var dataLabels = this.calculateDataLabelsPos({
+        x: x,
+        y: y,
+        i: i,
+        j: j,
+        series: series,
+        realIndex: realIndex,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        renderedPath: renderedPath,
+        visibleSeries: visibleSeries
+      });
+
+      if (dataLabels !== null) {
+        elDataLabelsWrap.add(dataLabels);
+      }
+
+      elSeries.add(elDataLabelsWrap);
+      return elSeries;
+    }
+  }, {
+    key: "initVariables",
+    value: function initVariables(series) {
+      var w = this.w;
+      this.series = series;
+      this.totalItems = 0;
+      this.seriesLen = 0;
+      this.visibleI = -1;
+      this.visibleItems = 1; // number of visible bars after user zoomed in/out
+
+      for (var sl = 0; sl < series.length; sl++) {
+        if (series[sl].length > 0) {
+          this.seriesLen = this.seriesLen + 1;
+          this.totalItems += series[sl].length;
+        }
+
+        if (w.globals.isXNumeric) {
+          // get max visible items
+          for (var j = 0; j < series[sl].length; j++) {
+            if (w.globals.seriesX[sl][j] > w.globals.minX && w.globals.seriesX[sl][j] < w.globals.maxX) {
+              this.visibleItems++;
+            }
+          }
+        } else {
+          this.visibleItems = w.globals.dataPoints;
+        }
+      }
+
+      if (this.seriesLen === 0) {
+        // A small adjustment when combo charts are used
+        this.seriesLen = 1;
+      }
+    }
+  }, {
+    key: "initialPositions",
+    value: function initialPositions() {
+      var w = this.w;
+      var x, y, yDivision, xDivision, barHeight, barWidth, zeroH, zeroW;
+
+      if (this.isHorizontal) {
+        // height divided into equal parts
+        yDivision = w.globals.gridHeight / w.globals.dataPoints;
+        barHeight = yDivision / this.seriesLen;
+
+        if (w.globals.isXNumeric) {
+          yDivision = w.globals.gridHeight / this.totalItems;
+          barHeight = yDivision / this.seriesLen;
+        }
+
+        barHeight = barHeight * parseInt(this.barOptions.barHeight) / 100;
+        zeroW = this.baseLineInvertedY + w.globals.padHorizontal + (this.isReversed ? w.globals.gridWidth : 0) - (this.isReversed ? this.baseLineInvertedY * 2 : 0);
+        y = (yDivision - barHeight * this.seriesLen) / 2;
+      } else {
+        // width divided into equal parts
+        xDivision = w.globals.gridWidth / this.visibleItems;
+        barWidth = xDivision / this.seriesLen * parseInt(this.barOptions.columnWidth) / 100;
+
+        if (w.globals.isXNumeric) {
+          // max barwidth should be equal to minXDiff to avoid overlap
+          xDivision = w.globals.minXDiff / this.xRatio;
+          barWidth = xDivision / this.seriesLen * parseInt(this.barOptions.columnWidth) / 100;
+        }
+
+        zeroH = w.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0);
+        x = w.globals.padHorizontal + (xDivision - barWidth * this.seriesLen) / 2;
+      }
+
+      return {
+        x: x,
+        y: y,
+        yDivision: yDivision,
+        xDivision: xDivision,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        zeroH: zeroH,
+        zeroW: zeroW
+      };
+    }
+  }, {
+    key: "drawBarPaths",
+    value: function drawBarPaths(_ref2) {
+      var indexes = _ref2.indexes,
+          barHeight = _ref2.barHeight,
+          strokeWidth = _ref2.strokeWidth,
+          pathTo = _ref2.pathTo,
+          pathFrom = _ref2.pathFrom,
+          zeroW = _ref2.zeroW,
+          x = _ref2.x,
+          y = _ref2.y,
+          yDivision = _ref2.yDivision,
+          elSeries = _ref2.elSeries;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+
+      if (w.globals.isXNumeric) {
+        y = (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - barHeight;
+      }
+
+      var barYPosition = y + barHeight * this.visibleI;
+      pathTo = graphics.move(zeroW, barYPosition);
+      pathFrom = graphics.move(zeroW, barYPosition);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j);
+      }
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        x = zeroW;
+      } else {
+        x = zeroW + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2;
+      }
+
+      var endingShapeOpts = {
+        barHeight: barHeight,
+        strokeWidth: strokeWidth,
+        barYPosition: barYPosition,
+        x: x,
+        zeroW: zeroW
+      };
+      var endingShape = this.barEndingShape(w, endingShapeOpts, this.series, i, j);
+      pathTo = pathTo + graphics.line(endingShape.newX, barYPosition) + endingShape.path + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition);
+      pathFrom = pathFrom + graphics.line(zeroW, barYPosition) + endingShape.ending_p_from + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition);
+
+      if (!w.globals.isXNumeric) {
+        y = y + yDivision;
+      }
+
+      if (this.barOptions.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= this.barOptions.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+
+        var bcolor = this.barOptions.colors.backgroundBarColors[bc];
+        var rect = graphics.drawRect(0, barYPosition - barHeight * this.visibleI, w.globals.gridWidth, barHeight * this.seriesLen, 0, bcolor, this.barOptions.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y,
+        barYPosition: barYPosition
+      };
+    }
+  }, {
+    key: "drawColumnPaths",
+    value: function drawColumnPaths(_ref3) {
+      var indexes = _ref3.indexes,
+          x = _ref3.x,
+          y = _ref3.y,
+          xDivision = _ref3.xDivision,
+          pathTo = _ref3.pathTo,
+          pathFrom = _ref3.pathFrom,
+          barWidth = _ref3.barWidth,
+          zeroH = _ref3.zeroH,
+          strokeWidth = _ref3.strokeWidth,
+          elSeries = _ref3.elSeries;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+
+      if (w.globals.isXNumeric) {
+        x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x + barWidth * this.visibleI;
+      pathTo = graphics.move(barXPosition, zeroH);
+      pathFrom = graphics.move(barXPosition, zeroH);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j);
+      }
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        y = zeroH;
+      } else {
+        y = zeroH - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2;
+      }
+
+      var endingShapeOpts = {
+        barWidth: barWidth,
+        strokeWidth: strokeWidth,
+        barXPosition: barXPosition,
+        y: y,
+        zeroH: zeroH
+      };
+      var endingShape = this.barEndingShape(w, endingShapeOpts, this.series, i, j);
+      pathTo = pathTo + graphics.line(barXPosition, endingShape.newY) + endingShape.path + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition - strokeWidth / 2, zeroH);
+      pathFrom = pathFrom + graphics.line(barXPosition, zeroH) + endingShape.ending_p_from + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition - strokeWidth / 2, zeroH);
+
+      if (!w.globals.isXNumeric) {
+        x = x + xDivision;
+      }
+
+      if (this.barOptions.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= this.barOptions.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+
+        var bcolor = this.barOptions.colors.backgroundBarColors[bc];
+        var rect = graphics.drawRect(barXPosition - barWidth * this.visibleI, 0, barWidth * this.seriesLen, w.globals.gridHeight, 0, bcolor, this.barOptions.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y,
+        barXPosition: barXPosition
+      };
+    }
+    /** getPathFrom is a common function for bars/columns which is used to get previous paths when data changes.
+     * @memberof Bar
+     * @param {int} realIndex - current iterating i
+     * @param {int} j - current iterating series's j index
+     * @return {string} pathFrom is the string which will be appended in animations
+     **/
+
+  }, {
+    key: "getPathFrom",
+    value: function getPathFrom(realIndex, j) {
+      var w = this.w;
+      var pathFrom;
+
+      for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+        var gpp = w.globals.previousPaths[pp];
+
+        if (gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+          if (typeof w.globals.previousPaths[pp].paths[j] !== 'undefined') {
+            pathFrom = w.globals.previousPaths[pp].paths[j].d;
+          }
+        }
+      }
+
+      return pathFrom;
+    }
+    /** calculateBarDataLabels is used to calculate the positions for the data-labels
+     * It also sets the element's data attr for bars and calls drawCalculatedBarDataLabels()
+     * @memberof Bar
+     * @param {object} {barProps} most of the bar properties used throughout the bar
+     * drawing function
+     * @return {object} dataLabels node-element which you can append later
+     **/
+
+  }, {
+    key: "calculateDataLabelsPos",
+    value: function calculateDataLabelsPos(_ref4) {
+      var x = _ref4.x,
+          y = _ref4.y,
+          i = _ref4.i,
+          j = _ref4.j,
+          realIndex = _ref4.realIndex,
+          series = _ref4.series,
+          barHeight = _ref4.barHeight,
+          barWidth = _ref4.barWidth,
+          visibleSeries = _ref4.visibleSeries,
+          renderedPath = _ref4.renderedPath;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+      var bcx = x + parseFloat(barWidth * visibleSeries);
+      var bcy = y + parseFloat(barHeight * visibleSeries);
+
+      if (w.globals.isXNumeric && !w.globals.isBarHorizontal) {
+        bcx = x + parseFloat(barWidth * (visibleSeries + 1)) - strokeWidth;
+        bcy = y + parseFloat(barHeight * (visibleSeries + 1)) - strokeWidth;
+      }
+
+      var dataLabels = null;
+      var dataLabelsX = x;
+      var dataLabelsY = y;
+      var dataLabelsPos = {};
+      var dataLabelsConfig = w.config.dataLabels;
+      var barDataLabelsConfig = this.barOptions.dataLabels;
+      var offX = dataLabelsConfig.offsetX;
+      var offY = dataLabelsConfig.offsetY;
+      var textRects = {
+        width: 0,
+        height: 0
+      };
+
+      if (w.config.dataLabels.enabled) {
+        textRects = graphics.getTextRects(w.globals.yLabelFormatters[0](w.globals.maxY), parseInt(dataLabelsConfig.style.fontSize));
+      }
+
+      if (this.isHorizontal) {
+        dataLabelsPos = this.calculateBarsDataLabelsPosition({
+          x: x,
+          y: y,
+          i: i,
+          j: j,
+          renderedPath: renderedPath,
+          bcy: bcy,
+          barHeight: barHeight,
+          barWidth: barWidth,
+          textRects: textRects,
+          strokeWidth: strokeWidth,
+          dataLabelsX: dataLabelsX,
+          dataLabelsY: dataLabelsY,
+          barDataLabelsConfig: barDataLabelsConfig,
+          offX: offX,
+          offY: offY
+        });
+      } else {
+        dataLabelsPos = this.calculateColumnsDataLabelsPosition({
+          x: x,
+          y: y,
+          i: i,
+          j: j,
+          renderedPath: renderedPath,
+          realIndex: realIndex,
+          bcx: bcx,
+          bcy: bcy,
+          barHeight: barHeight,
+          barWidth: barWidth,
+          textRects: textRects,
+          strokeWidth: strokeWidth,
+          dataLabelsY: dataLabelsY,
+          barDataLabelsConfig: barDataLabelsConfig,
+          offX: offX,
+          offY: offY
+        });
+      }
+
+      renderedPath.attr({
+        cy: dataLabelsPos.bcy,
+        cx: dataLabelsPos.bcx,
+        j: j,
+        val: series[i][j],
+        barHeight: barHeight,
+        barWidth: barWidth
+      });
+      dataLabels = this.drawCalculatedDataLabels({
+        x: dataLabelsPos.dataLabelsX,
+        y: dataLabelsPos.dataLabelsY,
+        val: series[i][j],
+        i: realIndex,
+        j: j,
+        barWidth: barWidth,
+        barHeight: barHeight,
+        textRects: textRects,
+        dataLabelsConfig: dataLabelsConfig
+      });
+      return dataLabels;
+    }
+  }, {
+    key: "calculateColumnsDataLabelsPosition",
+    value: function calculateColumnsDataLabelsPosition(opts) {
+      var w = this.w;
+      var i = opts.i,
+          j = opts.j,
+          y = opts.y,
+          bcx = opts.bcx,
+          barWidth = opts.barWidth,
+          barHeight = opts.barHeight,
+          textRects = opts.textRects,
+          dataLabelsY = opts.dataLabelsY,
+          barDataLabelsConfig = opts.barDataLabelsConfig,
+          strokeWidth = opts.strokeWidth,
+          offX = opts.offX,
+          offY = opts.offY;
+      var dataLabelsX;
+      var dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints;
+      bcx = bcx - strokeWidth / 2;
+
+      if (w.globals.isXNumeric) {
+        dataLabelsX = bcx - barWidth / 2 + offX;
+      } else {
+        dataLabelsX = bcx - dataPointsDividedWidth + barWidth / 2 + offX;
+      }
+
+      var valIsNegative = this.series[i][j] <= 0;
+
+      if (this.isReversed) {
+        y = y - barHeight;
+      }
+
+      switch (barDataLabelsConfig.position) {
+        case 'center':
+          if (valIsNegative) {
+            dataLabelsY = y + barHeight / 2 + textRects.height / 2 + offY;
+          } else {
+            dataLabelsY = y + barHeight / 2 + textRects.height / 2 - offY;
+          }
+
+          break;
+
+        case 'bottom':
+          if (valIsNegative) {
+            dataLabelsY = y + barHeight + textRects.height + strokeWidth + offY;
+          } else {
+            dataLabelsY = y + barHeight - textRects.height / 2 + strokeWidth - offY;
+          }
+
+          break;
+
+        case 'top':
+          if (valIsNegative) {
+            dataLabelsY = y - textRects.height / 2 - offY;
+          } else {
+            dataLabelsY = y + textRects.height + offY;
+          }
+
+          break;
+      }
+
+      if (!w.config.chart.stacked) {
+        if (dataLabelsY < 0) {
+          dataLabelsY = 0 + strokeWidth;
+        } else if (dataLabelsY + textRects.height / 3 > w.globals.gridHeight) {
+          dataLabelsY = w.globals.gridHeight - strokeWidth;
+        }
+      }
+
+      return {
+        bcx: bcx,
+        bcy: y,
+        dataLabelsX: dataLabelsX,
+        dataLabelsY: dataLabelsY
+      };
+    }
+  }, {
+    key: "calculateBarsDataLabelsPosition",
+    value: function calculateBarsDataLabelsPosition(opts) {
+      var w = this.w;
+      var x = opts.x,
+          i = opts.i,
+          j = opts.j,
+          bcy = opts.bcy,
+          barHeight = opts.barHeight,
+          barWidth = opts.barWidth,
+          textRects = opts.textRects,
+          dataLabelsX = opts.dataLabelsX,
+          strokeWidth = opts.strokeWidth,
+          barDataLabelsConfig = opts.barDataLabelsConfig,
+          offX = opts.offX,
+          offY = opts.offY;
+      var dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints;
+      var dataLabelsY = bcy - dataPointsDividedHeight + barHeight / 2 + textRects.height / 2 + offY - 3;
+      var valIsNegative = this.series[i][j] <= 0;
+
+      if (this.isReversed) {
+        x = x + barWidth;
+      }
+
+      switch (barDataLabelsConfig.position) {
+        case 'center':
+          if (valIsNegative) {
+            dataLabelsX = x - barWidth / 2 - offX;
+          } else {
+            dataLabelsX = x - barWidth / 2 + offX;
+          }
+
+          break;
+
+        case 'bottom':
+          if (valIsNegative) {
+            dataLabelsX = x - barWidth - strokeWidth - Math.round(textRects.width / 2) - offX;
+          } else {
+            dataLabelsX = x - barWidth + strokeWidth + Math.round(textRects.width / 2) + offX;
+          }
+
+          break;
+
+        case 'top':
+          if (valIsNegative) {
+            dataLabelsX = x - strokeWidth + Math.round(textRects.width / 2) - offX;
+          } else {
+            dataLabelsX = x - strokeWidth - Math.round(textRects.width / 2) + offX;
+          }
+
+          break;
+      }
+
+      if (!w.config.chart.stacked) {
+        if (dataLabelsX < 0) {
+          dataLabelsX = dataLabelsX + textRects.width + strokeWidth;
+        } else if (dataLabelsX + textRects.width / 2 > w.globals.gridWidth) {
+          dataLabelsX = w.globals.gridWidth - textRects.width - strokeWidth;
+        }
+      }
+
+      return {
+        bcx: x,
+        bcy: bcy,
+        dataLabelsX: dataLabelsX,
+        dataLabelsY: dataLabelsY
+      };
+    }
+  }, {
+    key: "drawCalculatedDataLabels",
+    value: function drawCalculatedDataLabels(_ref5) {
+      var x = _ref5.x,
+          y = _ref5.y,
+          val = _ref5.val,
+          i = _ref5.i,
+          j = _ref5.j,
+          textRects = _ref5.textRects,
+          barHeight = _ref5.barHeight,
+          barWidth = _ref5.barWidth,
+          dataLabelsConfig = _ref5.dataLabelsConfig;
+      var w = this.w;
+      var dataLabels = new DataLabels(this.ctx);
+      var graphics = new Graphics(this.ctx);
+      var formatter = dataLabelsConfig.formatter;
+      var elDataLabelsWrap = null;
+      var isSeriesNotCollapsed = w.globals.collapsedSeriesIndices.indexOf(i) > -1;
+
+      if (dataLabelsConfig.enabled && !isSeriesNotCollapsed) {
+        elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-data-labels'
+        });
+        var text = '';
+
+        if (typeof val !== 'undefined' && val !== null) {
+          text = formatter(val, {
+            seriesIndex: i,
+            dataPointIndex: j,
+            w: w
+          });
+        }
+
+        if (val === 0 && w.config.chart.stacked) {
+          // in a stacked bar/column chart, 0 value should be neglected as it will overlap on the next element
+          text = '';
+        }
+
+        if (w.config.chart.stacked && this.barOptions.dataLabels.hideOverflowingLabels) {
+          // if there is not enough space to draw the label in the bar/column rect, check hideOverflowingLabels property to prevent overflowing on wrong rect
+          // Note: This issue is only seen in stacked charts
+          if (this.isHorizontal) {
+            barWidth = this.series[i][j] / this.yRatio[this.yaxisIndex];
+
+            if (textRects.width / 1.6 > barWidth) {
+              text = '';
+            }
+          } else {
+            barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+
+            if (textRects.height / 1.6 > barHeight) {
+              text = '';
+            }
+          }
+        }
+
+        dataLabels.plotDataLabelsText({
+          x: x,
+          y: y,
+          text: text,
+          i: i,
+          j: j,
+          parent: elDataLabelsWrap,
+          dataLabelsConfig: dataLabelsConfig,
+          alwaysDrawDataLabel: true,
+          offsetCorrection: true
+        });
+      }
+
+      return elDataLabelsWrap;
+    }
+    /** barEndingShape draws the various shapes on top of bars/columns
+     * @memberof Bar
+     * @param {object} w - chart context
+     * @param {object} opts - consists several properties like barHeight/barWidth
+     * @param {array} series - global primary series
+     * @param {int} i - current iterating series's index
+     * @param {int} j - series's j of i
+     * @return {object} path - ending shape whether round/arrow
+     *         ending_p_from - similar to pathFrom
+     *         newY - which is calculated from existing y and new shape's top
+     **/
+
+  }, {
+    key: "barEndingShape",
+    value: function barEndingShape(w, opts, series, i, j) {
+      var graphics = new Graphics(this.ctx);
+
+      if (this.isHorizontal) {
+        var endingShape = null;
+        var endingShapeFrom = '';
+        var x = opts.x;
+
+        if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) {
+          var inverse = series[i][j] < 0;
+          var eX = opts.barHeight / 2 - opts.strokeWidth;
+          if (inverse) eX = -opts.barHeight / 2 - opts.strokeWidth;
+
+          if (!w.config.chart.stacked) {
+            if (this.barOptions.endingShape === 'rounded') {
+              x = opts.x - eX / 2;
+            }
+          }
+
+          switch (this.barOptions.endingShape) {
+            case 'flat':
+              endingShape = graphics.line(x, opts.barYPosition + opts.barHeight - opts.strokeWidth);
+              break;
+
+            case 'rounded':
+              endingShape = graphics.quadraticCurve(x + eX, opts.barYPosition + (opts.barHeight - opts.strokeWidth) / 2, x, opts.barYPosition + opts.barHeight - opts.strokeWidth);
+              break;
+          }
+        }
+
+        return {
+          path: endingShape,
+          ending_p_from: endingShapeFrom,
+          newX: x
+        };
+      } else {
+        var _endingShape = null;
+        var _endingShapeFrom = '';
+        var y = opts.y;
+
+        if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) {
+          var _inverse = series[i][j] < 0;
+
+          var eY = opts.barWidth / 2 - opts.strokeWidth;
+          if (_inverse) eY = -opts.barWidth / 2 - opts.strokeWidth;
+
+          if (!w.config.chart.stacked) {
+            // the shape exceeds the chart height, hence reduce y
+            if (this.barOptions.endingShape === 'rounded') {
+              y = y + eY / 2;
+            }
+          }
+
+          switch (this.barOptions.endingShape) {
+            case 'flat':
+              _endingShape = graphics.line(opts.barXPosition + opts.barWidth - opts.strokeWidth, y);
+              break;
+
+            case 'rounded':
+              _endingShape = graphics.quadraticCurve(opts.barXPosition + (opts.barWidth - opts.strokeWidth) / 2, y - eY, opts.barXPosition + opts.barWidth - opts.strokeWidth, y);
+              break;
+          }
+        }
+
+        return {
+          path: _endingShape,
+          ending_p_from: _endingShapeFrom,
+          newY: y
+        };
+      }
+    }
+  }]);
+
+  return Bar;
+}();
+
+/**
+ * ApexCharts BarStacked Class responsible for drawing both Stacked Columns and Bars.
+ *
+ * @module BarStacked
+ * The whole calculation for stacked bar/column is different from normal bar/column,
+ * hence it makes sense to derive a new class for it extending most of the props of Parent Bar
+ **/
+
+var BarStacked =
+/*#__PURE__*/
+function (_Bar) {
+  _inherits(BarStacked, _Bar);
+
+  function BarStacked() {
+    _classCallCheck(this, BarStacked);
+
+    return _possibleConstructorReturn(this, _getPrototypeOf(BarStacked).apply(this, arguments));
+  }
+
+  _createClass(BarStacked, [{
+    key: "draw",
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      this.graphics = new Graphics(this.ctx);
+      this.fill = new Fill(this.ctx);
+      this.bar = new Bar(this.ctx, this.xyRatios);
+      var coreUtils = new CoreUtils(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+      this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+      this.initVariables(series);
+
+      if (w.config.chart.stackType === '100%') {
+        series = w.globals.seriesPercent.slice();
+      }
+
+      this.series = series;
+      this.totalItems = 0;
+      this.prevY = []; // y position on chart
+
+      this.prevX = []; // x position on chart
+
+      this.prevYF = []; // y position including shapes on chart
+
+      this.prevXF = []; // x position including shapes on chart
+
+      this.prevYVal = []; // y values (series[i][j]) in columns
+
+      this.prevXVal = []; // x values (series[i][j]) in bars
+
+      this.xArrj = []; // xj indicates x position on graph in bars
+
+      this.xArrjF = []; // xjF indicates bar's x position + endingshape's positions in bars
+
+      this.xArrjVal = []; // x val means the actual series's y values in horizontal/bars
+
+      this.yArrj = []; // yj indicates y position on graph in columns
+
+      this.yArrjF = []; // yjF indicates bar's y position + endingshape's positions in columns
+
+      this.yArrjVal = []; // y val means the actual series's y values in columns
+
+      for (var sl = 0; sl < series.length; sl++) {
+        if (series[sl].length > 0) {
+          this.totalItems += series[sl].length;
+        }
+      }
+
+      var ret = this.graphics.group({
+        class: 'apexcharts-bar-series apexcharts-plot-series'
+      });
+      var x = 0;
+      var y = 0;
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var xDivision = void 0; // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+
+        var yDivision = void 0; // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+
+        var zeroH = void 0; // zeroH is the baseline where 0 meets y axis
+
+        var zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+        var xArrValues = [];
+        var yArrValues = [];
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed; // el to which series will be drawn
+
+        var elSeries = this.graphics.group({
+          class: "apexcharts-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+          rel: i + 1,
+          'data:realIndex': realIndex
+        }); // eldatalabels
+
+        var elDataLabelsWrap = this.graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+        var initPositions = this.initialPositions(x, y, xDivision, yDivision, zeroH, zeroW);
+        y = initPositions.y;
+        barHeight = initPositions.barHeight;
+        yDivision = initPositions.yDivision;
+        zeroW = initPositions.zeroW;
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+        this.yArrj = [];
+        this.yArrjF = [];
+        this.yArrjVal = [];
+        this.xArrj = [];
+        this.xArrjF = [];
+        this.xArrjVal = []; // if (!this.horizontal) {
+        // this.xArrj.push(x + barWidth / 2)
+        // }
+
+        for (var j = 0; j < w.globals.dataPoints; j++) {
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var paths = null;
+
+          if (this.isHorizontal) {
+            paths = this.drawBarPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              barHeight: barHeight,
+              strokeWidth: strokeWidth,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              zeroW: zeroW,
+              x: x,
+              y: y,
+              yDivision: yDivision,
+              elSeries: elSeries
+            });
+            barWidth = this.series[i][j] / this.invertedYRatio;
+          } else {
+            paths = this.drawColumnPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              x: x,
+              y: y,
+              xDivision: xDivision,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              barWidth: barWidth,
+              zeroH: zeroH,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries
+            });
+            barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+          }
+
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x;
+          xArrValues.push(x);
+          yArrValues.push(y);
+          var pathFill = this.bar.getPathFillColor(series, i, j, realIndex);
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            type: 'bar',
+            visibleSeries: 0
+          });
+        } // push all x val arrays into main xArr
+
+
+        w.globals.seriesXvalues[realIndex] = xArrValues;
+        w.globals.seriesYvalues[realIndex] = yArrValues; // push all current y values array to main PrevY Array
+
+        this.prevY.push(this.yArrj);
+        this.prevYF.push(this.yArrjF);
+        this.prevYVal.push(this.yArrjVal);
+        this.prevX.push(this.xArrj);
+        this.prevXF.push(this.xArrjF);
+        this.prevXVal.push(this.xArrjVal);
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: "initialPositions",
+    value: function initialPositions(x, y, xDivision, yDivision, zeroH, zeroW) {
+      var w = this.w;
+      var barHeight, barWidth;
+
+      if (this.isHorizontal) {
+        // height divided into equal parts
+        yDivision = w.globals.gridHeight / w.globals.dataPoints;
+        barHeight = yDivision;
+        barHeight = barHeight * parseInt(w.config.plotOptions.bar.barHeight) / 100;
+        zeroW = this.baseLineInvertedY + w.globals.padHorizontal + (this.isReversed ? w.globals.gridWidth : 0) - (this.isReversed ? this.baseLineInvertedY * 2 : 0); // initial y position is half of barHeight * half of number of Bars
+
+        y = (yDivision - barHeight) / 2;
+      } else {
+        // width divided into equal parts
+        xDivision = w.globals.gridWidth / w.globals.dataPoints;
+        barWidth = xDivision;
+
+        if (w.globals.isXNumeric) {
+          xDivision = w.globals.minXDiff / this.xRatio;
+          barWidth = xDivision * parseInt(this.barOptions.columnWidth) / 100;
+        } else {
+          barWidth = barWidth * parseInt(w.config.plotOptions.bar.columnWidth) / 100;
+        }
+
+        zeroH = this.baseLineY[this.yaxisIndex] + (this.isReversed ? w.globals.gridHeight : 0) - (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0); // initial x position is one third of barWidth
+
+        x = w.globals.padHorizontal + (xDivision - barWidth) / 2;
+      }
+
+      return {
+        x: x,
+        y: y,
+        yDivision: yDivision,
+        xDivision: xDivision,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        zeroH: zeroH,
+        zeroW: zeroW
+      };
+    }
+  }, {
+    key: "drawBarPaths",
+    value: function drawBarPaths(_ref) {
+      var indexes = _ref.indexes,
+          barHeight = _ref.barHeight,
+          strokeWidth = _ref.strokeWidth,
+          pathTo = _ref.pathTo,
+          pathFrom = _ref.pathFrom,
+          zeroW = _ref.zeroW,
+          x = _ref.x,
+          y = _ref.y,
+          yDivision = _ref.yDivision,
+          elSeries = _ref.elSeries;
+      var w = this.w;
+      var barYPosition = y;
+      var barXPosition;
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+      var prevBarW = 0;
+
+      for (var k = 0; k < this.prevXF.length; k++) {
+        prevBarW = prevBarW + this.prevXF[k][j];
+      }
+
+      if (i > 0) {
+        var bXP = zeroW;
+
+        if (this.prevXVal[i - 1][j] < 0) {
+          if (this.series[i][j] >= 0) {
+            bXP = this.prevX[i - 1][j] + prevBarW - (this.isReversed ? prevBarW : 0) * 2;
+          } else {
+            bXP = this.prevX[i - 1][j];
+          }
+        } else if (this.prevXVal[i - 1][j] >= 0) {
+          if (this.series[i][j] >= 0) {
+            bXP = this.prevX[i - 1][j];
+          } else {
+            bXP = this.prevX[i - 1][j] - prevBarW + (this.isReversed ? prevBarW : 0) * 2;
+          }
+        }
+
+        barXPosition = bXP;
+      } else {
+        // the first series will not have prevX values
+        barXPosition = zeroW;
+      }
+
+      if (this.series[i][j] === null) {
+        x = barXPosition;
+      } else {
+        x = barXPosition + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2;
+      }
+
+      var endingShapeOpts = {
+        barHeight: barHeight,
+        strokeWidth: strokeWidth,
+        invertedYRatio: this.invertedYRatio,
+        barYPosition: barYPosition,
+        x: x
+      };
+      var endingShape = this.bar.barEndingShape(w, endingShapeOpts, this.series, i, j);
+
+      if (this.series.length > 1 && i !== this.endingShapeOnSeriesNumber) {
+        // revert back to flat shape if not last series
+        endingShape.path = this.graphics.line(endingShape.newX, barYPosition + barHeight - strokeWidth);
+      }
+
+      this.xArrj.push(endingShape.newX);
+      this.xArrjF.push(Math.abs(barXPosition - endingShape.newX));
+      this.xArrjVal.push(this.series[i][j]);
+      pathTo = this.graphics.move(barXPosition, barYPosition);
+      pathFrom = this.graphics.move(barXPosition, barYPosition);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.bar.getPathFrom(realIndex, j, false);
+      }
+
+      pathTo = pathTo + this.graphics.line(endingShape.newX, barYPosition) + endingShape.path + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition);
+      pathFrom = pathFrom + this.graphics.line(barXPosition, barYPosition) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition);
+
+      if (w.config.plotOptions.bar.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= w.config.plotOptions.bar.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+
+        var bcolor = w.config.plotOptions.bar.colors.backgroundBarColors[bc];
+        var rect = this.graphics.drawRect(0, barYPosition, w.globals.gridWidth, barHeight, 0, bcolor, w.config.plotOptions.bar.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+
+      y = y + yDivision;
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "drawColumnPaths",
+    value: function drawColumnPaths(_ref2) {
+      var indexes = _ref2.indexes,
+          x = _ref2.x,
+          y = _ref2.y,
+          xDivision = _ref2.xDivision,
+          pathTo = _ref2.pathTo,
+          pathFrom = _ref2.pathFrom,
+          barWidth = _ref2.barWidth,
+          zeroH = _ref2.zeroH,
+          strokeWidth = _ref2.strokeWidth,
+          elSeries = _ref2.elSeries;
+      var w = this.w;
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+
+      if (w.globals.isXNumeric) {
+        var seriesVal = w.globals.seriesX[i][j];
+        if (!seriesVal) seriesVal = 0;
+        x = (seriesVal - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x;
+      var barYPosition;
+      var prevBarH = 0;
+
+      for (var k = 0; k < this.prevYF.length; k++) {
+        prevBarH = prevBarH + this.prevYF[k][j];
+      }
+
+      if (i > 0 && !w.globals.isXNumeric || i > 0 && w.globals.isXNumeric && w.globals.seriesX[i - 1][j] === w.globals.seriesX[i][j]) {
+        var bYP;
+        var prevYValue = this.prevY[i - 1][j];
+
+        if (this.prevYVal[i - 1][j] < 0) {
+          if (this.series[i][j] >= 0) {
+            bYP = prevYValue - prevBarH + (this.isReversed ? prevBarH : 0) * 2;
+          } else {
+            bYP = prevYValue;
+          }
+        } else {
+          if (this.series[i][j] >= 0) {
+            bYP = prevYValue;
+          } else {
+            bYP = prevYValue + prevBarH - (this.isReversed ? prevBarH : 0) * 2;
+          }
+        }
+
+        barYPosition = bYP;
+      } else {
+        // the first series will not have prevY values, also if the prev index's series X doesn't matches the current index's series X, then start from zero
+        barYPosition = w.globals.gridHeight - zeroH;
+      }
+
+      y = barYPosition - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2;
+      var endingShapeOpts = {
+        barWidth: barWidth,
+        strokeWidth: strokeWidth,
+        yRatio: this.yRatio[this.yaxisIndex],
+        barXPosition: barXPosition,
+        y: y
+      };
+      var endingShape = this.bar.barEndingShape(w, endingShapeOpts, this.series, i, j);
+      this.yArrj.push(endingShape.newY);
+      this.yArrjF.push(Math.abs(barYPosition - endingShape.newY));
+      this.yArrjVal.push(this.series[i][j]);
+      pathTo = this.graphics.move(barXPosition, barYPosition);
+      pathFrom = this.graphics.move(barXPosition, barYPosition);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.bar.getPathFrom(realIndex, j, false);
+      }
+
+      pathTo = pathTo + this.graphics.line(barXPosition, endingShape.newY) + endingShape.path + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition - strokeWidth / 2, barYPosition);
+      pathFrom = pathFrom + this.graphics.line(barXPosition, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition - strokeWidth / 2, barYPosition);
+
+      if (w.config.plotOptions.bar.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= w.config.plotOptions.bar.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+
+        var bcolor = w.config.plotOptions.bar.colors.backgroundBarColors[bc];
+        var rect = this.graphics.drawRect(barXPosition, 0, barWidth, w.globals.gridHeight, 0, bcolor, w.config.plotOptions.bar.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+
+      x = x + xDivision;
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: w.globals.isXNumeric ? x - xDivision : x,
+        y: y
+      };
+    }
+    /*
+     * When user clicks on legends, the collapsed series will be filled with [0,0,0,...,0]
+     * We need to make sure, that the last series is not [0,0,0,...,0]
+     * as we need to draw shapes on the last series (for stacked bars/columns only)
+     * Hence, we are collecting all inner arrays in series which has [0,0,0...,0]
+     **/
+
+  }, {
+    key: "checkZeroSeries",
+    value: function checkZeroSeries(_ref3) {
+      var series = _ref3.series;
+      var w = this.w;
+
+      for (var zs = 0; zs < series.length; zs++) {
+        var total = 0;
+
+        for (var zsj = 0; zsj < series[w.globals.maxValsInArrayIndex].length; zsj++) {
+          total += series[zs][zsj];
+        }
+
+        if (total === 0) {
+          this.zeroSerieses.push(zs);
+        }
+      } // After getting all zeroserieses, we need to ensure whether endingshapeonSeries is not in that zeroseries array
+
+
+      for (var s = series.length - 1; s >= 0; s--) {
+        if (this.zeroSerieses.indexOf(s) > -1 && s === this.endingShapeOnSeriesNumber) {
+          this.endingShapeOnSeriesNumber -= 1;
+        }
+      }
+    }
+  }]);
+
+  return BarStacked;
+}(Bar);
+
+/**
+ * ApexCharts CandleStick Class responsible for drawing both Stacked Columns and Bars.
+ *
+ * @module CandleStick
+ **/
+
+var CandleStick =
+/*#__PURE__*/
+function (_Bar) {
+  _inherits(CandleStick, _Bar);
+
+  function CandleStick() {
+    _classCallCheck(this, CandleStick);
+
+    return _possibleConstructorReturn(this, _getPrototypeOf(CandleStick).apply(this, arguments));
+  }
+
+  _createClass(CandleStick, [{
+    key: "draw",
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var fill = new Fill(this.ctx);
+      this.candlestickOptions = this.w.config.plotOptions.candlestick;
+      var coreUtils = new CoreUtils(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+      this.series = series;
+      this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+      this.initVariables(series);
+      var ret = graphics.group({
+        class: 'apexcharts-candlestick-series apexcharts-plot-series'
+      });
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var x = void 0,
+            y = void 0,
+            xDivision = void 0,
+            // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+        zeroH = void 0; // zeroH is the baseline where 0 meets y axis
+
+        var yArrj = []; // hold y values of current iterating series
+
+        var xArrj = []; // hold x values of current iterating series
+
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn
+
+        var elSeries = graphics.group({
+          class: "apexcharts-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+          rel: i + 1,
+          'data:realIndex': realIndex
+        });
+
+        if (series[i].length > 0) {
+          this.visibleI = this.visibleI + 1;
+        }
+
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        var initPositions = this.initialPositions();
+        y = initPositions.y;
+        barHeight = initPositions.barHeight;
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+        xArrj.push(x + barWidth / 2); // eldatalabels
+
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+
+        for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+          if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+            this.isNullValue = true;
+          } else {
+            this.isNullValue = false;
+          }
+
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var color = void 0;
+          var paths = this.drawCandleStickPaths({
+            indexes: {
+              i: i,
+              j: j,
+              realIndex: realIndex,
+              bc: bc
+            },
+            x: x,
+            y: y,
+            xDivision: xDivision,
+            pathTo: pathTo,
+            pathFrom: pathFrom,
+            barWidth: barWidth,
+            zeroH: zeroH,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries
+          });
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x;
+          color = paths.color; // push current X
+
+          if (j > 0) {
+            xArrj.push(x + barWidth / 2);
+          }
+
+          yArrj.push(y);
+          var pathFill = fill.fillPath({
+            seriesNumber: realIndex,
+            color: color,
+            value: series[i][j]
+          });
+          var lineFill = this.candlestickOptions.wick.useFillColor ? color : undefined;
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            lineFill: lineFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            visibleSeries: this.visibleI,
+            type: 'candlestick'
+          });
+        } // push all x val arrays into main xArr
+
+
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj;
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: "drawCandleStickPaths",
+    value: function drawCandleStickPaths(_ref) {
+      var indexes = _ref.indexes,
+          x = _ref.x,
+          y = _ref.y,
+          xDivision = _ref.xDivision,
+          pathTo = _ref.pathTo,
+          pathFrom = _ref.pathFrom,
+          barWidth = _ref.barWidth,
+          zeroH = _ref.zeroH,
+          strokeWidth = _ref.strokeWidth;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var i = indexes.i;
+      var j = indexes.j;
+      var isPositive = true;
+      var colorPos = w.config.plotOptions.candlestick.colors.upward;
+      var colorNeg = w.config.plotOptions.candlestick.colors.downward;
+      var yRatio = this.yRatio[this.yaxisIndex];
+      var realIndex = indexes.realIndex;
+      var ohlc = this.getOHLCValue(realIndex, j);
+      var l1 = zeroH;
+      var l2 = zeroH;
+
+      if (ohlc.o > ohlc.c) {
+        isPositive = false;
+      }
+
+      var y1 = Math.min(ohlc.o, ohlc.c);
+      var y2 = Math.max(ohlc.o, ohlc.c);
+
+      if (w.globals.isXNumeric) {
+        x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x + barWidth * this.visibleI;
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        y1 = zeroH;
+      } else {
+        y1 = zeroH - y1 / yRatio;
+        y2 = zeroH - y2 / yRatio;
+        l1 = zeroH - ohlc.h / yRatio;
+        l2 = zeroH - ohlc.l / yRatio;
+      }
+
+      pathTo = graphics.move(barXPosition, zeroH);
+      pathFrom = graphics.move(barXPosition, y1);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j, true);
+      }
+
+      pathTo = graphics.move(barXPosition, y2) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth / 2, l1) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition + barWidth / 2, l2) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition, y1) + graphics.line(barXPosition, y2 - strokeWidth / 2);
+      pathFrom = pathFrom + graphics.move(barXPosition, y1);
+
+      if (!w.globals.isXNumeric) {
+        x = x + xDivision;
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y2,
+        barXPosition: barXPosition,
+        color: isPositive ? colorPos : colorNeg
+      };
+    }
+  }, {
+    key: "getOHLCValue",
+    value: function getOHLCValue(i, j) {
+      var w = this.w;
+      return {
+        o: w.globals.seriesCandleO[i][j],
+        h: w.globals.seriesCandleH[i][j],
+        l: w.globals.seriesCandleL[i][j],
+        c: w.globals.seriesCandleC[i][j]
+      };
+    }
+  }]);
+
+  return CandleStick;
+}(Bar);
+
+var Crosshairs =
+/*#__PURE__*/
+function () {
+  function Crosshairs(ctx) {
+    _classCallCheck(this, Crosshairs);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Crosshairs, [{
+    key: "drawXCrosshairs",
+    value: function drawXCrosshairs() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var filters = new Filters(this.ctx);
+      var crosshairGradient = w.config.xaxis.crosshairs.fill.gradient;
+      var crosshairShadow = w.config.xaxis.crosshairs.dropShadow;
+      var fillType = w.config.xaxis.crosshairs.fill.type;
+      var gradientFrom = crosshairGradient.colorFrom;
+      var gradientTo = crosshairGradient.colorTo;
+      var opacityFrom = crosshairGradient.opacityFrom;
+      var opacityTo = crosshairGradient.opacityTo;
+      var stops = crosshairGradient.stops;
+      var shadow = 'none';
+      var dropShadow = crosshairShadow.enabled;
+      var shadowLeft = crosshairShadow.left;
+      var shadowTop = crosshairShadow.top;
+      var shadowBlur = crosshairShadow.blur;
+      var shadowColor = crosshairShadow.color;
+      var shadowOpacity = crosshairShadow.opacity;
+      var xcrosshairsFill = w.config.xaxis.crosshairs.fill.color;
+
+      if (w.config.xaxis.crosshairs.show) {
+        if (fillType === 'gradient') {
+          xcrosshairsFill = graphics.drawGradient('vertical', gradientFrom, gradientTo, opacityFrom, opacityTo, null, stops, null);
+        }
+
+        var xcrosshairs = graphics.drawRect();
+
+        if (w.config.xaxis.crosshairs.width === 1) {
+          // to prevent drawing 2 lines, convert rect to line
+          xcrosshairs = graphics.drawLine();
+        }
+
+        xcrosshairs.attr({
+          class: 'apexcharts-xcrosshairs',
+          x: 0,
+          y: 0,
+          y2: w.globals.gridHeight,
+          width: Utils.isNumber(w.config.xaxis.crosshairs.width) ? w.config.xaxis.crosshairs.width : 0,
+          height: w.globals.gridHeight,
+          fill: xcrosshairsFill,
+          filter: shadow,
+          'fill-opacity': w.config.xaxis.crosshairs.opacity,
+          stroke: w.config.xaxis.crosshairs.stroke.color,
+          'stroke-width': w.config.xaxis.crosshairs.stroke.width,
+          'stroke-dasharray': w.config.xaxis.crosshairs.stroke.dashArray
+        });
+
+        if (dropShadow) {
+          xcrosshairs = filters.dropShadow(xcrosshairs, {
+            left: shadowLeft,
+            top: shadowTop,
+            blur: shadowBlur,
+            color: shadowColor,
+            opacity: shadowOpacity
+          });
+        }
+
+        w.globals.dom.elGraphical.add(xcrosshairs);
+      }
+    }
+  }, {
+    key: "drawYCrosshairs",
+    value: function drawYCrosshairs() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var crosshair = w.config.yaxis[0].crosshairs;
+
+      if (w.config.yaxis[0].crosshairs.show) {
+        var ycrosshairs = graphics.drawLine(0, 0, w.globals.gridWidth, 0, crosshair.stroke.color, crosshair.stroke.dashArray, crosshair.stroke.width);
+        ycrosshairs.attr({
+          class: 'apexcharts-ycrosshairs'
+        });
+        w.globals.dom.elGraphical.add(ycrosshairs);
+      } // draw an invisible crosshair to help in positioning the yaxis tooltip
+
+
+      var ycrosshairsHidden = graphics.drawLine(0, 0, w.globals.gridWidth, 0, crosshair.stroke.color, 0, 0);
+      ycrosshairsHidden.attr({
+        class: 'apexcharts-ycrosshairs-hidden'
+      });
+      w.globals.dom.elGraphical.add(ycrosshairsHidden);
+    }
+  }]);
+
+  return Crosshairs;
+}();
+
+/**
+ * ApexCharts HeatMap Class.
+ * @module HeatMap
+ **/
+
+var HeatMap =
+/*#__PURE__*/
+function () {
+  function HeatMap(ctx, xyRatios) {
+    _classCallCheck(this, HeatMap);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.xRatio = xyRatios.xRatio;
+    this.yRatio = xyRatios.yRatio;
+    this.negRange = false;
+    this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation;
+    this.rectRadius = this.w.config.plotOptions.heatmap.radius;
+    this.strokeWidth = this.w.config.stroke.width;
+  }
+
+  _createClass(HeatMap, [{
+    key: "draw",
+    value: function draw(series) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var ret = graphics.group({
+        class: 'apexcharts-heatmap'
+      });
+      ret.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); // width divided into equal parts
+
+      var xDivision = w.globals.gridWidth / w.globals.dataPoints;
+      var yDivision = w.globals.gridHeight / w.globals.series.length;
+      var y1 = 0;
+      var rev = false;
+      this.checkColorRange();
+      var heatSeries = series.slice();
+
+      if (w.config.yaxis[0].reversed) {
+        rev = true;
+        heatSeries.reverse();
+      }
+
+      for (var i = rev ? 0 : heatSeries.length - 1; rev ? i < heatSeries.length : i >= 0; rev ? i++ : i--) {
+        // el to which series will be drawn
+        var elSeries = graphics.group({
+          class: "apexcharts-series apexcharts-heatmap-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[i]),
+          rel: i + 1,
+          'data:realIndex': i
+        });
+
+        if (w.config.chart.dropShadow.enabled) {
+          var shadow = w.config.chart.dropShadow;
+          var filters = new Filters(this.ctx);
+          filters.dropShadow(elSeries, shadow, i);
+        }
+
+        var x1 = 0;
+
+        for (var j = 0; j < heatSeries[i].length; j++) {
+          var colorShadePercent = 1;
+          var heatColorProps = this.determineHeatColor(i, j);
+
+          if (w.globals.hasNegs || this.negRange) {
+            var shadeIntensity = w.config.plotOptions.heatmap.shadeIntensity;
+
+            if (w.config.plotOptions.heatmap.reverseNegativeShade) {
+              if (heatColorProps.percent < 0) {
+                colorShadePercent = heatColorProps.percent / 100 * (shadeIntensity * 1.25);
+              } else {
+                colorShadePercent = (1 - heatColorProps.percent / 100) * (shadeIntensity * 1.25);
+              }
+            } else {
+              if (heatColorProps.percent < 0) {
+                colorShadePercent = 1 - (1 + heatColorProps.percent / 100) * shadeIntensity;
+              } else {
+                colorShadePercent = (1 - heatColorProps.percent / 100) * shadeIntensity;
+              }
+            }
+          } else {
+            colorShadePercent = 1 - heatColorProps.percent / 100;
+          }
+
+          var color = heatColorProps.color;
+
+          if (w.config.plotOptions.heatmap.enableShades) {
+            var utils = new Utils();
+            color = Utils.hexToRgba(utils.shadeColor(colorShadePercent, heatColorProps.color), w.config.fill.opacity);
+          }
+
+          var radius = this.rectRadius;
+          var rect = graphics.drawRect(x1, y1, xDivision, yDivision, radius);
+          rect.attr({
+            cx: x1,
+            cy: y1
+          });
+          rect.node.classList.add('apexcharts-heatmap-rect');
+          elSeries.add(rect);
+          rect.attr({
+            fill: color,
+            i: i,
+            index: i,
+            j: j,
+            val: heatSeries[i][j],
+            'stroke-width': this.strokeWidth,
+            stroke: w.globals.stroke.colors[0],
+            color: color
+          });
+          rect.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, rect));
+          rect.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, rect));
+          rect.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, rect));
+
+          if (w.config.chart.animations.enabled && !w.globals.dataChanged) {
+            var speed = 1;
+
+            if (!w.globals.resized) {
+              speed = w.config.chart.animations.speed;
+            }
+
+            this.animateHeatMap(rect, x1, y1, xDivision, yDivision, speed);
+          }
+
+          if (w.globals.dataChanged) {
+            var _speed = 1;
+
+            if (this.dynamicAnim.enabled && w.globals.shouldAnimate) {
+              _speed = this.dynamicAnim.speed;
+              var colorFrom = w.globals.previousPaths[i] && w.globals.previousPaths[i][j] && w.globals.previousPaths[i][j].color;
+              if (!colorFrom) colorFrom = 'rgba(255, 255, 255, 0)';
+              this.animateHeatColor(rect, Utils.isColorHex(colorFrom) ? colorFrom : Utils.rgb2hex(colorFrom), Utils.isColorHex(color) ? color : Utils.rgb2hex(color), _speed);
+            }
+          }
+
+          var dataLabels = this.calculateHeatmapDataLabels({
+            x: x1,
+            y: y1,
+            i: i,
+            j: j,
+            series: heatSeries,
+            rectHeight: yDivision,
+            rectWidth: xDivision
+          });
+
+          if (dataLabels !== null) {
+            elSeries.add(dataLabels);
+          }
+
+          x1 = x1 + xDivision;
+        }
+
+        y1 = y1 + yDivision;
+        ret.add(elSeries);
+      } // adjust yaxis labels for heatmap
+
+
+      var yAxisScale = w.globals.yAxisScale[0].result.slice();
+
+      if (w.config.yaxis[0].reversed) {
+        yAxisScale.unshift('');
+      } else {
+        yAxisScale.push('');
+      }
+
+      w.globals.yAxisScale[0].result = yAxisScale;
+      var divisor = w.globals.gridHeight / w.globals.series.length;
+      w.config.yaxis[0].labels.offsetY = -(divisor / 2);
+      return ret;
+    }
+  }, {
+    key: "checkColorRange",
+    value: function checkColorRange() {
+      var _this = this;
+
+      var w = this.w;
+      var heatmap = w.config.plotOptions.heatmap;
+
+      if (heatmap.colorScale.ranges.length > 0) {
+        heatmap.colorScale.ranges.map(function (range, index) {
+          if (range.from < 0) {
+            _this.negRange = true;
+          }
+        });
+      }
+    }
+  }, {
+    key: "determineHeatColor",
+    value: function determineHeatColor(i, j) {
+      var w = this.w;
+      var val = w.globals.series[i][j];
+      var heatmap = w.config.plotOptions.heatmap;
+      var seriesNumber = heatmap.colorScale.inverse ? j : i;
+      var color = w.globals.colors[seriesNumber];
+      var min = Math.min.apply(Math, _toConsumableArray(w.globals.series[i]));
+      var max = Math.max.apply(Math, _toConsumableArray(w.globals.series[i]));
+
+      if (!heatmap.distributed) {
+        min = w.globals.minY;
+        max = w.globals.maxY;
+      }
+
+      if (typeof heatmap.colorScale.min !== 'undefined') {
+        min = heatmap.colorScale.min < w.globals.minY ? heatmap.colorScale.min : w.globals.minY;
+        max = heatmap.colorScale.max > w.globals.maxY ? heatmap.colorScale.max : w.globals.maxY;
+      }
+
+      var total = Math.abs(max) + Math.abs(min);
+      var percent = 100 * val / (total === 0 ? total - 0.000001 : total);
+
+      if (heatmap.colorScale.ranges.length > 0) {
+        var colorRange = heatmap.colorScale.ranges;
+        colorRange.map(function (range, index) {
+          if (val >= range.from && val <= range.to) {
+            color = range.color;
+            min = range.from;
+            max = range.to;
+
+            var _total = Math.abs(max) + Math.abs(min);
+
+            percent = 100 * val / (_total === 0 ? _total - 0.000001 : _total);
+          }
+        });
+      }
+
+      return {
+        color: color,
+        percent: percent
+      };
+    }
+  }, {
+    key: "calculateHeatmapDataLabels",
+    value: function calculateHeatmapDataLabels(_ref) {
+      var x = _ref.x,
+          y = _ref.y,
+          i = _ref.i,
+          j = _ref.j,
+          series = _ref.series,
+          rectHeight = _ref.rectHeight,
+          rectWidth = _ref.rectWidth;
+      var w = this.w; // let graphics = new Graphics(this.ctx)
+
+      var dataLabelsConfig = w.config.dataLabels;
+      var graphics = new Graphics(this.ctx);
+      var dataLabels = new DataLabels(this.ctx);
+      var formatter = dataLabelsConfig.formatter;
+      var elDataLabelsWrap = null;
+
+      if (dataLabelsConfig.enabled) {
+        elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-data-labels'
+        });
+        var offX = dataLabelsConfig.offsetX;
+        var offY = dataLabelsConfig.offsetY;
+        var dataLabelsX = x + rectWidth / 2 + offX;
+        var dataLabelsY = y + rectHeight / 2 + parseInt(dataLabelsConfig.style.fontSize) / 3 + offY;
+        var text = formatter(w.globals.series[i][j], {
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+        dataLabels.plotDataLabelsText({
+          x: dataLabelsX,
+          y: dataLabelsY,
+          text: text,
+          i: i,
+          j: j,
+          parent: elDataLabelsWrap,
+          dataLabelsConfig: dataLabelsConfig
+        });
+      }
+
+      return elDataLabelsWrap;
+    }
+  }, {
+    key: "animateHeatMap",
+    value: function animateHeatMap(el, x, y, width, height, speed) {
+      var _this2 = this;
+
+      var animations = new Animations(this.ctx);
+      animations.animateRect(el, {
+        x: x + width / 2,
+        y: y + height / 2,
+        width: 0,
+        height: 0
+      }, {
+        x: x,
+        y: y,
+        width: width,
+        height: height
+      }, speed, function () {
+        _this2.w.globals.animationEnded = true;
+      });
+    }
+  }, {
+    key: "animateHeatColor",
+    value: function animateHeatColor(el, colorFrom, colorTo, speed) {
+      el.attr({
+        fill: colorFrom
+      }).animate(speed).attr({
+        fill: colorTo
+      });
+    }
+  }]);
+
+  return HeatMap;
+}();
+
+/**
+ * ApexCharts Pie Class for drawing Pie / Donut Charts.
+ * @module Pie
+ **/
+
+var Pie =
+/*#__PURE__*/
+function () {
+  function Pie(ctx) {
+    _classCallCheck(this, Pie);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.chartType = this.w.config.chart.type;
+    this.initialAnim = this.w.config.chart.animations.enabled;
+    this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+    this.animBeginArr = [0];
+    this.animDur = 0;
+    this.donutDataLabels = this.w.config.plotOptions.pie.donut.labels;
+    var w = this.w;
+    this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors;
+    this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.svgHeight - 35 : w.globals.gridWidth;
+    this.centerY = this.defaultSize / 2;
+    this.centerX = w.globals.gridWidth / 2;
+    this.fullAngle = 360;
+    this.size = 0;
+    this.donutSize = 0;
+    this.sliceLabels = [];
+    this.prevSectorAngleArr = []; // for dynamic animations
+  }
+
+  _createClass(Pie, [{
+    key: "draw",
+    value: function draw(series) {
+      var self = this;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var ret = graphics.group({
+        class: 'apexcharts-pie'
+      });
+      var total = 0;
+
+      for (var k = 0; k < series.length; k++) {
+        // CALCULATE THE TOTAL
+        total += Utils.negToZero(series[k]);
+      }
+
+      var sectorAngleArr = []; // el to which series will be drawn
+
+      var elSeries = graphics.group(); // prevent division by zero error if there is no data
+
+      if (total === 0) {
+        total = 0.00001;
+      }
+
+      for (var i = 0; i < series.length; i++) {
+        // CALCULATE THE ANGLES
+        var angle = this.fullAngle * Utils.negToZero(series[i]) / total;
+        sectorAngleArr.push(angle);
+      }
+
+      if (w.globals.dataChanged) {
+        var prevTotal = 0;
+
+        for (var _k = 0; _k < w.globals.previousPaths.length; _k++) {
+          // CALCULATE THE PREV TOTAL
+          prevTotal += Utils.negToZero(w.globals.previousPaths[_k]);
+        }
+
+        var previousAngle;
+
+        for (var _i = 0; _i < w.globals.previousPaths.length; _i++) {
+          // CALCULATE THE PREVIOUS ANGLES
+          previousAngle = this.fullAngle * Utils.negToZero(w.globals.previousPaths[_i]) / prevTotal;
+          this.prevSectorAngleArr.push(previousAngle);
+        }
+      }
+
+      this.size = this.defaultSize / 2.05 - w.config.stroke.width - w.config.chart.dropShadow.blur;
+
+      if (w.config.plotOptions.pie.size !== undefined) {
+        this.size = w.config.plotOptions.pie.size;
+      }
+
+      this.donutSize = this.size * parseInt(w.config.plotOptions.pie.donut.size) / 100;
+      var scaleSize = w.config.plotOptions.pie.customScale;
+      var halfW = w.globals.gridWidth / 2;
+      var halfH = w.globals.gridHeight / 2;
+      var translateX = halfW - w.globals.gridWidth / 2 * scaleSize;
+      var translateY = halfH - w.globals.gridHeight / 2 * scaleSize;
+
+      if (this.donutDataLabels.show) {
+        var dataLabels = this.renderInnerDataLabels(this.donutDataLabels, {
+          hollowSize: this.donutSize,
+          centerX: this.centerX,
+          centerY: this.centerY,
+          opacity: this.donutDataLabels.show,
+          translateX: translateX,
+          translateY: translateY
+        });
+        ret.add(dataLabels);
+      }
+
+      if (w.config.chart.type === 'donut') {
+        // draw the inner circle and add some text to it
+        var circle = graphics.drawCircle(this.donutSize);
+        circle.attr({
+          cx: this.centerX,
+          cy: this.centerY,
+          fill: w.config.plotOptions.pie.donut.background
+        });
+        elSeries.add(circle);
+      }
+
+      var elG = self.drawArcs(sectorAngleArr, series); // add slice dataLabels at the end
+
+      this.sliceLabels.forEach(function (s) {
+        elG.add(s);
+      });
+      elSeries.attr({
+        transform: "translate(".concat(translateX, ", ").concat(translateY - 5, ") scale(").concat(scaleSize, ")")
+      });
+      ret.attr({
+        'data:innerTranslateX': translateX,
+        'data:innerTranslateY': translateY - 25
+      });
+      elSeries.add(elG);
+      ret.add(elSeries);
+      return ret;
+    } // core function for drawing pie arcs
+
+  }, {
+    key: "drawArcs",
+    value: function drawArcs(sectorAngleArr, series) {
+      var w = this.w;
+      var filters = new Filters(this.ctx);
+      var graphics = new Graphics(this.ctx);
+      var fill = new Fill(this.ctx);
+      var g = graphics.group();
+      var startAngle = 0;
+      var prevStartAngle = 0;
+      var endAngle = 0;
+      var prevEndAngle = 0;
+      this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0;
+
+      for (var i = 0; i < sectorAngleArr.length; i++) {
+        // if(sectorAngleArr[i]>0) {
+        var elPieArc = graphics.group({
+          class: "apexcharts-series apexcharts-pie-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[i]),
+          id: 'apexcharts-series-' + i,
+          rel: i + 1
+        });
+        g.add(elPieArc);
+        startAngle = endAngle;
+        prevStartAngle = prevEndAngle;
+        endAngle = startAngle + sectorAngleArr[i];
+        prevEndAngle = prevStartAngle + this.prevSectorAngleArr[i];
+        var angle = endAngle - startAngle;
+        var pathFill = fill.fillPath({
+          seriesNumber: i,
+          size: this.size,
+          value: series[i]
+        }); // additionaly, pass size for gradient drawing in the fillPath function
+
+        var path = this.getChangedPath(prevStartAngle, prevEndAngle);
+        var elPath = graphics.drawPath({
+          d: path,
+          stroke: this.lineColorArr instanceof Array ? this.lineColorArr[i] : this.lineColorArr,
+          strokeWidth: this.strokeWidth,
+          fill: pathFill,
+          fillOpacity: w.config.fill.opacity,
+          classes: 'apexcharts-pie-area'
+        });
+        elPath.attr({
+          id: "apexcharts-".concat(w.config.chart.type, "-slice-").concat(i),
+          index: 0,
+          j: i
+        });
+
+        if (w.config.chart.dropShadow.enabled) {
+          var shadow = w.config.chart.dropShadow;
+          filters.dropShadow(elPath, shadow, i);
+        }
+
+        this.addListeners(elPath, this.donutDataLabels);
+        Graphics.setAttrs(elPath.node, {
+          'data:angle': angle,
+          'data:startAngle': startAngle,
+          'data:strokeWidth': this.strokeWidth,
+          'data:value': series[i]
+        });
+        var labelPosition = {
+          x: 0,
+          y: 0
+        };
+
+        if (w.config.chart.type === 'pie') {
+          labelPosition = Utils.polarToCartesian(this.centerX, this.centerY, this.size / 1.25 + w.config.plotOptions.pie.dataLabels.offset, startAngle + (endAngle - startAngle) / 2);
+        } else if (w.config.chart.type === 'donut') {
+          labelPosition = Utils.polarToCartesian(this.centerX, this.centerY, (this.size + this.donutSize) / 2 + w.config.plotOptions.pie.dataLabels.offset, startAngle + (endAngle - startAngle) / 2);
+        }
+
+        elPieArc.add(elPath); // Animation code starts
+
+        var dur = 0;
+
+        if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+          dur = (endAngle - startAngle) / this.fullAngle * w.config.chart.animations.speed;
+          this.animDur = dur + this.animDur;
+          this.animBeginArr.push(this.animDur);
+        } else {
+          this.animBeginArr.push(0);
+        }
+
+        if (this.dynamicAnim && w.globals.dataChanged) {
+          this.animatePaths(elPath, {
+            endAngle: endAngle,
+            startAngle: startAngle,
+            prevStartAngle: prevStartAngle,
+            prevEndAngle: prevEndAngle,
+            animateStartingPos: true,
+            i: i,
+            animBeginArr: this.animBeginArr,
+            dur: w.config.chart.animations.dynamicAnimation.speed
+          });
+        } else {
+          this.animatePaths(elPath, {
+            endAngle: endAngle,
+            startAngle: startAngle,
+            i: i,
+            totalItems: sectorAngleArr.length - 1,
+            animBeginArr: this.animBeginArr,
+            dur: dur
+          });
+        } // animation code ends
+
+
+        if (w.config.plotOptions.pie.expandOnClick) {
+          elPath.click(this.pieClicked.bind(this, i));
+        }
+
+        if (w.config.dataLabels.enabled) {
+          var xPos = labelPosition.x;
+          var yPos = labelPosition.y;
+          var text = 100 * (endAngle - startAngle) / 360 + '%';
+
+          if (angle !== 0 && w.config.plotOptions.pie.dataLabels.minAngleToShowLabel < sectorAngleArr[i]) {
+            var formatter = w.config.dataLabels.formatter;
+
+            if (formatter !== undefined) {
+              text = formatter(w.globals.seriesPercent[i][0], {
+                seriesIndex: i,
+                w: w
+              });
+            }
+
+            var foreColor = w.globals.dataLabels.style.colors[i];
+            var elPieLabel = graphics.drawText({
+              x: xPos,
+              y: yPos,
+              text: text,
+              textAnchor: 'middle',
+              fontSize: w.config.dataLabels.style.fontSize,
+              fontFamily: w.config.dataLabels.style.fontFamily,
+              foreColor: foreColor
+            });
+
+            if (w.config.dataLabels.dropShadow.enabled) {
+              var textShadow = w.config.dataLabels.dropShadow;
+
+              var _filters = new Filters(this.ctx);
+
+              _filters.dropShadow(elPieLabel, textShadow);
+            }
+
+            elPieLabel.node.classList.add('apexcharts-pie-label');
+
+            if (w.config.chart.animations.animate && w.globals.resized === false) {
+              elPieLabel.node.classList.add('apexcharts-pie-label-delay');
+              elPieLabel.node.style.animationDelay = w.config.chart.animations.speed / 940 + 's';
+            }
+
+            this.sliceLabels.push(elPieLabel);
+          }
+        } // }
+
+      }
+
+      return g;
+    }
+  }, {
+    key: "addListeners",
+    value: function addListeners(elPath, dataLabels) {
+      var graphics = new Graphics(this.ctx); // append filters on mouseenter and mouseleave
+
+      elPath.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, elPath));
+      elPath.node.addEventListener('mouseenter', this.printDataLabelsInner.bind(this, elPath.node, dataLabels));
+      elPath.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, elPath));
+      elPath.node.addEventListener('mouseleave', this.revertDataLabelsInner.bind(this, elPath.node, dataLabels));
+      elPath.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, elPath));
+      elPath.node.addEventListener('mousedown', this.printDataLabelsInner.bind(this, elPath.node, dataLabels));
+    } // This function can be used for other circle charts too
+
+  }, {
+    key: "animatePaths",
+    value: function animatePaths(el, opts) {
+      var w = this.w;
+      var me = this;
+      var angle = opts.endAngle - opts.startAngle;
+      var prevAngle = angle;
+      var fromStartAngle = opts.startAngle;
+      var toStartAngle = opts.startAngle;
+
+      if (opts.prevStartAngle !== undefined && opts.prevEndAngle !== undefined) {
+        fromStartAngle = opts.prevEndAngle;
+        prevAngle = opts.prevEndAngle - opts.prevStartAngle;
+      }
+
+      if (opts.i === w.config.series.length - 1) {
+        // some adjustments for the last overlapping paths
+        if (angle + toStartAngle > this.fullAngle) {
+          opts.endAngle = opts.endAngle - (angle + toStartAngle);
+        } else if (angle + toStartAngle < this.fullAngle) {
+          opts.endAngle = opts.endAngle + (this.fullAngle - (angle + toStartAngle));
+        }
+      }
+
+      if (angle === this.fullAngle) angle = this.fullAngle - 0.01;
+      me.animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts);
+    }
+  }, {
+    key: "animateArc",
+    value: function animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts) {
+      var me = this;
+      var w = this.w;
+      var size = me.size;
+
+      if (!size) {
+        size = opts.size;
+      }
+
+      var path;
+
+      if (isNaN(fromStartAngle) || isNaN(prevAngle)) {
+        fromStartAngle = toStartAngle;
+        prevAngle = angle;
+        opts.dur = 0;
+      }
+
+      var currAngle = angle;
+      var startAngle = toStartAngle;
+      var fromAngle = fromStartAngle - toStartAngle;
+
+      if (w.globals.dataChanged && opts.shouldSetPrevPaths) {
+        // to avoid flickering, set prev path first and then we will animate from there
+        path = me.getPiePath({
+          me: me,
+          startAngle: startAngle,
+          angle: prevAngle,
+          size: size
+        });
+        el.attr({
+          d: path
+        });
+      }
+
+      if (opts.dur !== 0) {
+        el.animate(opts.dur, w.globals.easing, opts.animBeginArr[opts.i]).afterAll(function () {
+          if (w.config.chart.type === 'pie' || w.config.chart.type === 'donut') {
+            this.animate(300).attr({
+              'stroke-width': w.config.stroke.width
+            });
+          }
+
+          w.globals.animationEnded = true;
+        }).during(function (pos) {
+          currAngle = fromAngle + (angle - fromAngle) * pos;
+
+          if (opts.animateStartingPos) {
+            currAngle = prevAngle + (angle - prevAngle) * pos;
+            startAngle = fromStartAngle - prevAngle + (toStartAngle - (fromStartAngle - prevAngle)) * pos;
+          }
+
+          path = me.getPiePath({
+            me: me,
+            startAngle: startAngle,
+            angle: currAngle,
+            size: size
+          });
+          el.node.setAttribute('data:pathOrig', path);
+          el.attr({
+            d: path
+          });
+        });
+      } else {
+        path = me.getPiePath({
+          me: me,
+          startAngle: startAngle,
+          angle: angle,
+          size: size
+        });
+
+        if (!opts.isTrack) {
+          w.globals.animationEnded = true;
+        }
+
+        el.node.setAttribute('data:pathOrig', path);
+        el.attr({
+          d: path
+        });
+      }
+    }
+  }, {
+    key: "pieClicked",
+    value: function pieClicked(i) {
+      var w = this.w;
+      var me = this;
+      var path;
+      var size = me.size + 4;
+      var elPath = w.globals.dom.Paper.select("#apexcharts-".concat(w.config.chart.type.toLowerCase(), "-slice-").concat(i)).members[0];
+      var pathFrom = elPath.attr('d');
+
+      if (elPath.attr('data:pieClicked') === 'true') {
+        elPath.attr({
+          'data:pieClicked': 'false'
+        });
+        this.revertDataLabelsInner(elPath.node, this.donutDataLabels);
+        var origPath = elPath.attr('data:pathOrig');
+        elPath.attr({
+          d: origPath
+        });
+        return;
+      } else {
+        // reset all elems
+        var allEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-pie-area');
+        Array.prototype.forEach.call(allEls, function (pieSlice) {
+          pieSlice.setAttribute('data:pieClicked', 'false');
+          var origPath = pieSlice.getAttribute('data:pathOrig');
+          pieSlice.setAttribute('d', origPath);
+        });
+        elPath.attr('data:pieClicked', 'true');
+      }
+
+      var startAngle = parseInt(elPath.attr('data:startAngle'));
+      var angle = parseInt(elPath.attr('data:angle'));
+      path = me.getPiePath({
+        me: me,
+        startAngle: startAngle,
+        angle: angle,
+        size: size
+      });
+      if (angle === 360) return;
+      elPath.plot(path).animate(1).plot(pathFrom).animate(100).plot(path);
+    }
+  }, {
+    key: "getChangedPath",
+    value: function getChangedPath(prevStartAngle, prevEndAngle) {
+      var path = '';
+
+      if (this.dynamicAnim && this.w.globals.dataChanged) {
+        path = this.getPiePath({
+          me: this,
+          startAngle: prevStartAngle,
+          angle: prevEndAngle - prevStartAngle,
+          size: this.size
+        });
+      }
+
+      return path;
+    }
+  }, {
+    key: "getPiePath",
+    value: function getPiePath(_ref) {
+      var me = _ref.me,
+          startAngle = _ref.startAngle,
+          angle = _ref.angle,
+          size = _ref.size;
+      var w = this.w;
+      var path;
+      var startDeg = startAngle;
+      var startRadians = Math.PI * (startDeg - 90) / 180;
+      var endDeg = angle + startAngle;
+      if (Math.ceil(endDeg) >= 360) endDeg = 359.99;
+      var endRadians = Math.PI * (endDeg - 90) / 180;
+      var x1 = me.centerX + size * Math.cos(startRadians);
+      var y1 = me.centerY + size * Math.sin(startRadians);
+      var x2 = me.centerX + size * Math.cos(endRadians);
+      var y2 = me.centerY + size * Math.sin(endRadians);
+      var startInner = Utils.polarToCartesian(me.centerX, me.centerY, me.donutSize, endDeg);
+      var endInner = Utils.polarToCartesian(me.centerX, me.centerY, me.donutSize, startDeg);
+      var largeArc = angle > 180 ? 1 : 0;
+
+      if (w.config.chart.type === 'donut') {
+        path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2, 'L', startInner.x, startInner.y, 'A', me.donutSize, me.donutSize, 0, largeArc, 0, endInner.x, endInner.y, 'L', x1, y1, 'z'].join(' ');
+      } else if (w.config.chart.type === 'pie') {
+        path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2, 'L', me.centerX, me.centerY, 'L', x1, y1].join(' ');
+      } else {
+        path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2].join(' ');
+      }
+
+      return path;
+    }
+  }, {
+    key: "renderInnerDataLabels",
+    value: function renderInnerDataLabels(dataLabelsConfig, opts) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var g = graphics.group({
+        class: 'apexcharts-datalabels-group',
+        transform: "translate(".concat(opts.translateX ? opts.translateX : 0, ", ").concat(opts.translateY ? opts.translateY : 0, ")")
+      });
+      var showTotal = dataLabelsConfig.total.show;
+      g.node.style.opacity = opts.opacity;
+      var x = opts.centerX;
+      var y = opts.centerY;
+      var labelColor, valueColor;
+
+      if (dataLabelsConfig.name.color === undefined) {
+        labelColor = w.globals.colors[0];
+      } else {
+        labelColor = dataLabelsConfig.name.color;
+      }
+
+      if (dataLabelsConfig.value.color === undefined) {
+        valueColor = w.config.chart.foreColor;
+      } else {
+        valueColor = dataLabelsConfig.value.color;
+      }
+
+      var lbFormatter = dataLabelsConfig.value.formatter;
+      var val = '';
+      var name = '';
+
+      if (showTotal) {
+        labelColor = dataLabelsConfig.total.color;
+        name = dataLabelsConfig.total.label;
+        val = dataLabelsConfig.total.formatter(w);
+      } else {
+        if (w.globals.series.length === 1) {
+          val = lbFormatter(w.globals.series[0], w);
+          name = w.globals.seriesNames[0];
+        }
+      }
+
+      if (dataLabelsConfig.name.show) {
+        var elLabel = graphics.drawText({
+          x: x,
+          y: y + parseInt(dataLabelsConfig.name.offsetY),
+          text: name,
+          textAnchor: 'middle',
+          foreColor: labelColor,
+          fontSize: dataLabelsConfig.name.fontSize,
+          fontFamily: dataLabelsConfig.name.fontFamily
+        });
+        elLabel.node.classList.add('apexcharts-datalabel-label');
+        g.add(elLabel);
+      }
+
+      if (dataLabelsConfig.value.show) {
+        var valOffset = dataLabelsConfig.name.show ? parseInt(dataLabelsConfig.value.offsetY) + 16 : dataLabelsConfig.value.offsetY;
+        var elValue = graphics.drawText({
+          x: x,
+          y: y + valOffset,
+          text: val,
+          textAnchor: 'middle',
+          foreColor: valueColor,
+          fontSize: dataLabelsConfig.value.fontSize,
+          fontFamily: dataLabelsConfig.value.fontFamily
+        });
+        elValue.node.classList.add('apexcharts-datalabel-value');
+        g.add(elValue);
+      } // for a multi-series circle chart, we need to show total value instead of first series labels
+
+
+      return g;
+    }
+    /**
+     *
+     * @param {string} name - The name of the series
+     * @param {string} val - The value of that series
+     * @param {object} el - Optional el (indicates which series was hovered/clicked). If this param is not present, means we need to show total
+     */
+
+  }, {
+    key: "printInnerLabels",
+    value: function printInnerLabels(labelsConfig, name, val, el) {
+      var w = this.w;
+      var labelColor;
+
+      if (el) {
+        if (labelsConfig.name.color === undefined) {
+          labelColor = w.globals.colors[parseInt(el.parentNode.getAttribute('rel')) - 1];
+        } else {
+          labelColor = labelsConfig.name.color;
+        }
+      } else {
+        if (w.globals.series.length > 1 && labelsConfig.total.show) {
+          labelColor = labelsConfig.total.color;
+        }
+      }
+
+      var elLabel = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-label');
+      var elValue = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-value');
+      var lbFormatter = labelsConfig.value.formatter;
+      val = lbFormatter(val, w); // we need to show Total Val - so get the formatter of it
+
+      if (!el && typeof labelsConfig.total.formatter === 'function') {
+        val = labelsConfig.total.formatter(w);
+      }
+
+      if (elLabel !== null) {
+        elLabel.textContent = name;
+      }
+
+      if (elValue !== null) {
+        elValue.textContent = val;
+      }
+
+      if (elLabel !== null) {
+        elLabel.style.fill = labelColor;
+      }
+    }
+  }, {
+    key: "printDataLabelsInner",
+    value: function printDataLabelsInner(el, dataLabelsConfig) {
+      var w = this.w;
+      var val = el.getAttribute('data:value');
+      var name = w.globals.seriesNames[parseInt(el.parentNode.getAttribute('rel')) - 1];
+
+      if (w.globals.series.length > 1) {
+        this.printInnerLabels(dataLabelsConfig, name, val, el);
+      }
+
+      var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group');
+
+      if (dataLabelsGroup !== null) {
+        dataLabelsGroup.style.opacity = 1;
+      }
+    }
+  }, {
+    key: "revertDataLabelsInner",
+    value: function revertDataLabelsInner(el, dataLabelsConfig, event) {
+      var _this = this;
+
+      var w = this.w;
+      var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group');
+
+      if (dataLabelsConfig.total.show && w.globals.series.length > 1) {
+        var pie = new Pie(this.ctx);
+        pie.printInnerLabels(dataLabelsConfig, dataLabelsConfig.total.label, dataLabelsConfig.total.formatter(w));
+      } else {
+        var slices = document.querySelectorAll(".apexcharts-pie-area");
+        var sliceOut = false;
+        slices.forEach(function (s) {
+          if (s.getAttribute('data:pieClicked') === 'true') {
+            sliceOut = true;
+
+            _this.printDataLabelsInner(s, dataLabelsConfig);
+          }
+        });
+
+        if (!sliceOut) {
+          if (w.globals.selectedDataPoints.length && w.globals.series.length > 1) {
+            if (w.globals.selectedDataPoints[0].length > 0) {
+              var index = w.globals.selectedDataPoints[0];
+
+              var _el = w.globals.dom.baseEl.querySelector("#apexcharts-".concat(w.config.chart.type.toLowerCase(), "-slice-").concat(index));
+
+              this.printDataLabelsInner(_el, dataLabelsConfig);
+            } else if (dataLabelsGroup && w.globals.selectedDataPoints.length && w.globals.selectedDataPoints[0].length === 0) {
+              dataLabelsGroup.style.opacity = 0;
+            }
+          } else {
+            if (dataLabelsGroup && w.globals.series.length > 1) {
+              dataLabelsGroup.style.opacity = 0;
+            }
+          }
+        }
+      }
+    }
+  }]);
+
+  return Pie;
+}();
+
+/**
+ * ApexCharts Radar Class for Spider/Radar Charts.
+ * @module Radar
+ **/
+
+var Radar =
+/*#__PURE__*/
+function () {
+  function Radar(ctx) {
+    _classCallCheck(this, Radar);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.chartType = this.w.config.chart.type;
+    this.initialAnim = this.w.config.chart.animations.enabled;
+    this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+    this.animDur = 0;
+    var w = this.w;
+    this.graphics = new Graphics(this.ctx);
+    this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors;
+    this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.svgHeight - 35 : w.globals.gridWidth;
+    this.maxValue = this.w.globals.maxY;
+    this.polygons = w.config.plotOptions.radar.polygons;
+    this.maxLabelWidth = 20;
+    var longestLabel = w.globals.labels.slice().sort(function (a, b) {
+      return b.length - a.length;
+    })[0];
+    var labelWidth = this.graphics.getTextRects(longestLabel, w.config.dataLabels.style.fontSize);
+    this.size = this.defaultSize / 2.1 - w.config.stroke.width - w.config.chart.dropShadow.blur - labelWidth.width / 1.75;
+
+    if (w.config.plotOptions.radar.size !== undefined) {
+      this.size = w.config.plotOptions.radar.size;
+    }
+
+    this.dataRadiusOfPercent = [];
+    this.dataRadius = [];
+    this.angleArr = [];
+    this.yaxisLabelsTextsPos = [];
+  }
+
+  _createClass(Radar, [{
+    key: "draw",
+    value: function draw(series) {
+      var _this = this;
+
+      var w = this.w;
+      var fill = new Fill(this.ctx);
+      var allSeries = [];
+      this.dataPointsLen = series[w.globals.maxValsInArrayIndex].length;
+      this.disAngle = Math.PI * 2 / this.dataPointsLen;
+      var halfW = w.globals.gridWidth / 2;
+      var halfH = w.globals.gridHeight / 2;
+      var translateX = halfW;
+      var translateY = halfH;
+      var ret = this.graphics.group({
+        class: 'apexcharts-radar-series',
+        'data:innerTranslateX': translateX,
+        'data:innerTranslateY': translateY - 25,
+        transform: "translate(".concat(translateX || 0, ", ").concat(translateY || 0, ")")
+      });
+      var dataPointsPos = [];
+      var elPointsMain = null;
+      this.yaxisLabels = this.graphics.group({
+        class: 'apexcharts-yaxis'
+      });
+      series.forEach(function (s, i) {
+        // el to which series will be drawn
+        var elSeries = _this.graphics.group().attr({
+          class: "apexcharts-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[i]),
+          rel: i + 1,
+          'data:realIndex': i
+        });
+
+        _this.dataRadiusOfPercent[i] = [];
+        _this.dataRadius[i] = [];
+        _this.angleArr[i] = [];
+        s.forEach(function (dv, j) {
+          _this.dataRadiusOfPercent[i][j] = dv / _this.maxValue;
+          _this.dataRadius[i][j] = _this.dataRadiusOfPercent[i][j] * _this.size;
+          _this.angleArr[i][j] = j * _this.disAngle;
+        });
+        dataPointsPos = _this.getDataPointsPos(_this.dataRadius[i], _this.angleArr[i]);
+
+        var paths = _this.createPaths(dataPointsPos, {
+          x: 0,
+          y: 0
+        }); // points
+
+
+        elPointsMain = _this.graphics.group({
+          class: 'apexcharts-series-markers-wrap hidden'
+        });
+        w.globals.delayedElements.push({
+          el: elPointsMain.node,
+          index: i
+        });
+        var defaultRenderedPathOptions = {
+          i: i,
+          realIndex: i,
+          animationDelay: i,
+          initialSpeed: w.config.chart.animations.speed,
+          dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+          className: "apexcharts-radar",
+          id: "apexcharts-radar",
+          shouldClipToGrid: false,
+          bindEventsOnPaths: false,
+          stroke: w.globals.stroke.colors[i],
+          strokeLineCap: w.config.stroke.lineCap
+        };
+        var pathFrom = null;
+
+        if (w.globals.previousPaths.length > 0) {
+          pathFrom = _this.getPathFrom(i);
+        }
+
+        for (var p = 0; p < paths.linePathsTo.length; p++) {
+          var renderedLinePath = _this.graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+            pathFrom: pathFrom === null ? paths.linePathsFrom[p] : pathFrom,
+            pathTo: paths.linePathsTo[p],
+            strokeWidth: Array.isArray(w.config.stroke.width) ? w.config.stroke.width[i] : w.config.stroke.width,
+            fill: 'none',
+            drawShadow: false
+          }));
+
+          elSeries.add(renderedLinePath);
+          var pathFill = fill.fillPath({
+            seriesNumber: i
+          });
+
+          var renderedAreaPath = _this.graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+            pathFrom: pathFrom === null ? paths.areaPathsFrom[p] : pathFrom,
+            pathTo: paths.areaPathsTo[p],
+            strokeWidth: 0,
+            fill: pathFill,
+            drawShadow: false
+          }));
+
+          if (w.config.chart.dropShadow.enabled) {
+            var filters = new Filters(_this.ctx);
+            var shadow = w.config.chart.dropShadow;
+            filters.dropShadow(renderedAreaPath, Object.assign({}, shadow, {
+              noUserSpaceOnUse: true
+            }), i);
+          }
+
+          elSeries.add(renderedAreaPath);
+        }
+
+        s.forEach(function (sj, j) {
+          var markers = new Markers(_this.ctx);
+          var opts = markers.getMarkerConfig('apexcharts-marker', i);
+
+          var point = _this.graphics.drawMarker(dataPointsPos[j].x, dataPointsPos[j].y, opts);
+
+          point.attr('rel', j);
+          point.attr('j', j);
+          point.attr('index', i);
+          point.node.setAttribute('default-marker-size', opts.pSize);
+
+          var elPointsWrap = _this.graphics.group({
+            class: 'apexcharts-series-markers'
+          });
+
+          if (elPointsWrap) {
+            elPointsWrap.add(point);
+          }
+
+          elPointsMain.add(elPointsWrap);
+          elSeries.add(elPointsMain);
+        });
+        allSeries.push(elSeries);
+      });
+      this.drawPolygons({
+        parent: ret
+      });
+
+      if (w.config.dataLabels.enabled) {
+        var dataLabels = this.drawLabels();
+        ret.add(dataLabels);
+      }
+
+      ret.add(this.yaxisLabels);
+      allSeries.forEach(function (elS) {
+        ret.add(elS);
+      });
+      return ret;
+    }
+  }, {
+    key: "drawPolygons",
+    value: function drawPolygons(opts) {
+      var _this2 = this;
+
+      var w = this.w;
+      var parent = opts.parent;
+      var yaxisTexts = w.globals.yAxisScale[0].result.reverse();
+      var layers = yaxisTexts.length;
+      var radiusSizes = [];
+      var layerDis = this.size / (layers - 1);
+
+      for (var i = 0; i < layers; i++) {
+        radiusSizes[i] = layerDis * i;
+      }
+
+      radiusSizes.reverse();
+      var polygonStrings = [];
+      var lines = [];
+      radiusSizes.forEach(function (radiusSize, r) {
+        var polygon = _this2.getPolygonPos(radiusSize);
+
+        var string = '';
+        polygon.forEach(function (p, i) {
+          if (r === 0) {
+            var line = _this2.graphics.drawLine(p.x, p.y, 0, 0, Array.isArray(_this2.polygons.connectorColors) ? _this2.polygons.connectorColors[i] : _this2.polygons.connectorColors);
+
+            lines.push(line);
+          }
+
+          if (i === 0) {
+            _this2.yaxisLabelsTextsPos.push({
+              x: p.x,
+              y: p.y
+            });
+          }
+
+          string += p.x + ',' + p.y + ' ';
+        });
+        polygonStrings.push(string);
+      });
+      polygonStrings.forEach(function (p, i) {
+        var strokeColors = _this2.polygons.strokeColors;
+
+        var polygon = _this2.graphics.drawPolygon(p, Array.isArray(strokeColors) ? strokeColors[i] : strokeColors, w.globals.radarPolygons.fill.colors[i]);
+
+        parent.add(polygon);
+      });
+      lines.forEach(function (l) {
+        parent.add(l);
+      });
+
+      if (w.config.yaxis[0].show) {
+        this.yaxisLabelsTextsPos.forEach(function (p, i) {
+          var yText = _this2.drawYAxisText(p.x, p.y, i, yaxisTexts[i]);
+
+          _this2.yaxisLabels.add(yText);
+        });
+      }
+    }
+  }, {
+    key: "drawYAxisText",
+    value: function drawYAxisText(x, y, i, text) {
+      var w = this.w;
+      var yaxisConfig = w.config.yaxis[0];
+      var formatter = w.globals.yLabelFormatters[0];
+      var yaxisLabel = this.graphics.drawText({
+        x: x + yaxisConfig.labels.offsetX,
+        y: y + yaxisConfig.labels.offsetY,
+        text: formatter(text, i),
+        textAnchor: 'middle',
+        fontSize: yaxisConfig.labels.style.fontSize,
+        fontFamily: yaxisConfig.labels.style.fontFamily,
+        foreColor: yaxisConfig.labels.style.color
+      });
+      return yaxisLabel;
+    }
+  }, {
+    key: "drawLabels",
+    value: function drawLabels() {
+      var _this3 = this;
+
+      var w = this.w;
+      var limit = 10;
+      var textAnchor = 'middle';
+      var dataLabelsConfig = w.config.dataLabels;
+      var elDataLabelsWrap = this.graphics.group({
+        class: 'apexcharts-datalabels'
+      });
+      var polygonPos = this.getPolygonPos(this.size);
+      var currPosX = 0;
+      var currPosY = 0;
+      w.globals.labels.forEach(function (label, i) {
+        var formatter = dataLabelsConfig.formatter;
+        var dataLabels = new DataLabels(_this3.ctx);
+
+        if (polygonPos[i]) {
+          currPosX = polygonPos[i].x;
+          currPosY = polygonPos[i].y;
+
+          if (Math.abs(polygonPos[i].x) >= limit) {
+            if (polygonPos[i].x > 0) {
+              textAnchor = 'start';
+              currPosX += 10;
+            } else if (polygonPos[i].x < 0) {
+              textAnchor = 'end';
+              currPosX -= 10;
+            }
+          } else {
+            textAnchor = 'middle';
+          }
+
+          if (Math.abs(polygonPos[i].y) >= _this3.size - limit) {
+            if (polygonPos[i].y < 0) {
+              currPosY -= 10;
+            } else if (polygonPos[i].y > 0) {
+              currPosY += 10;
+            }
+          }
+
+          var text = formatter(label, {
+            seriesIndex: -1,
+            dataPointIndex: i,
+            w: w
+          });
+          dataLabels.plotDataLabelsText({
+            x: currPosX,
+            y: currPosY,
+            text: text,
+            textAnchor: textAnchor,
+            i: i,
+            j: i,
+            parent: elDataLabelsWrap,
+            dataLabelsConfig: dataLabelsConfig,
+            offsetCorrection: false
+          });
+        }
+      });
+      return elDataLabelsWrap;
+    }
+  }, {
+    key: "createPaths",
+    value: function createPaths(pos, origin) {
+      var _this4 = this;
+
+      var linePathsTo = [];
+      var linePathsFrom = [];
+      var areaPathsTo = [];
+      var areaPathsFrom = [];
+
+      if (pos.length) {
+        linePathsFrom = [this.graphics.move(origin.x, origin.y)];
+        areaPathsFrom = [this.graphics.move(origin.x, origin.y)];
+        var linePathTo = this.graphics.move(pos[0].x, pos[0].y);
+        var areaPathTo = this.graphics.move(pos[0].x, pos[0].y);
+        pos.forEach(function (p, i) {
+          linePathTo += _this4.graphics.line(p.x, p.y);
+          areaPathTo += _this4.graphics.line(p.x, p.y);
+
+          if (i === pos.length - 1) {
+            linePathTo += 'Z';
+            areaPathTo += 'Z';
+          }
+        });
+        linePathsTo.push(linePathTo);
+        areaPathsTo.push(areaPathTo);
+      }
+
+      return {
+        linePathsFrom: linePathsFrom,
+        linePathsTo: linePathsTo,
+        areaPathsFrom: areaPathsFrom,
+        areaPathsTo: areaPathsTo
+      };
+    }
+  }, {
+    key: "getPathFrom",
+    value: function getPathFrom(realIndex) {
+      var w = this.w;
+      var pathFrom = null;
+
+      for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+        var gpp = w.globals.previousPaths[pp];
+
+        if (gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+          if (typeof w.globals.previousPaths[pp].paths[0] !== 'undefined') {
+            pathFrom = w.globals.previousPaths[pp].paths[0].d;
+          }
+        }
+      }
+
+      return pathFrom;
+    }
+  }, {
+    key: "getDataPointsPos",
+    value: function getDataPointsPos(dataRadiusArr, angleArr) {
+      var dataPointsLen = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.dataPointsLen;
+      dataRadiusArr = dataRadiusArr || [];
+      angleArr = angleArr || [];
+      var dataPointsPosArray = [];
+
+      for (var j = 0; j < dataPointsLen; j++) {
+        var curPointPos = {};
+        curPointPos.x = dataRadiusArr[j] * Math.sin(angleArr[j]);
+        curPointPos.y = -dataRadiusArr[j] * Math.cos(angleArr[j]);
+        dataPointsPosArray.push(curPointPos);
+      }
+
+      return dataPointsPosArray;
+    }
+  }, {
+    key: "getPolygonPos",
+    value: function getPolygonPos(size) {
+      var dotsArray = [];
+      var angle = Math.PI * 2 / this.dataPointsLen;
+
+      for (var i = 0; i < this.dataPointsLen; i++) {
+        var curPos = {};
+        curPos.x = size * Math.sin(i * angle);
+        curPos.y = -size * Math.cos(i * angle);
+        dotsArray.push(curPos);
+      }
+
+      return dotsArray;
+    }
+  }]);
+
+  return Radar;
+}();
+
+/**
+ * ApexCharts Radial Class for drawing Circle / Semi Circle Charts.
+ * @module Radial
+ **/
+
+var Radial =
+/*#__PURE__*/
+function (_Pie) {
+  _inherits(Radial, _Pie);
+
+  function Radial(ctx) {
+    var _this;
+
+    _classCallCheck(this, Radial);
+
+    _this = _possibleConstructorReturn(this, _getPrototypeOf(Radial).call(this, ctx));
+    _this.ctx = ctx;
+    _this.w = ctx.w;
+    _this.animBeginArr = [0];
+    _this.animDur = 0;
+    var w = _this.w;
+    _this.startAngle = w.config.plotOptions.radialBar.startAngle;
+    _this.endAngle = w.config.plotOptions.radialBar.endAngle;
+    _this.trackStartAngle = w.config.plotOptions.radialBar.track.startAngle;
+    _this.trackEndAngle = w.config.plotOptions.radialBar.track.endAngle;
+    _this.radialDataLabels = w.config.plotOptions.radialBar.dataLabels;
+    if (!_this.trackStartAngle) _this.trackStartAngle = _this.startAngle;
+    if (!_this.trackEndAngle) _this.trackEndAngle = _this.endAngle;
+    if (_this.endAngle === 360) _this.endAngle = 359.99;
+    _this.fullAngle = 360 - w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle;
+    _this.margin = parseInt(w.config.plotOptions.radialBar.track.margin);
+    return _this;
+  }
+
+  _createClass(Radial, [{
+    key: "draw",
+    value: function draw(series) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var ret = graphics.group({
+        class: 'apexcharts-radialbar'
+      });
+      var elSeries = graphics.group();
+      var centerY = this.defaultSize / 2;
+      var centerX = w.globals.gridWidth / 2;
+      var size = this.defaultSize / 2.05 - w.config.stroke.width - w.config.chart.dropShadow.blur;
+
+      if (w.config.plotOptions.radialBar.size !== undefined) {
+        size = w.config.plotOptions.radialBar.size;
+      }
+
+      var colorArr = w.globals.fill.colors;
+
+      if (w.config.plotOptions.radialBar.track.show) {
+        var elTracks = this.drawTracks({
+          size: size,
+          centerX: centerX,
+          centerY: centerY,
+          colorArr: colorArr,
+          series: series
+        });
+        elSeries.add(elTracks);
+      }
+
+      var elG = this.drawArcs({
+        size: size,
+        centerX: centerX,
+        centerY: centerY,
+        colorArr: colorArr,
+        series: series
+      });
+      elSeries.add(elG.g);
+
+      if (w.config.plotOptions.radialBar.hollow.position === 'front') {
+        elG.g.add(elG.elHollow);
+
+        if (elG.dataLabels) {
+          elG.g.add(elG.dataLabels);
+        }
+      }
+
+      ret.add(elSeries);
+      return ret;
+    }
+  }, {
+    key: "drawTracks",
+    value: function drawTracks(opts) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var g = graphics.group();
+      var filters = new Filters(this.ctx);
+      var fill = new Fill(this.ctx);
+      var strokeWidth = this.getStrokeWidth(opts);
+      opts.size = opts.size - strokeWidth / 2;
+
+      for (var i = 0; i < opts.series.length; i++) {
+        var elRadialBarTrack = graphics.group({
+          class: 'apexcharts-radialbar-track apexcharts-track'
+        });
+        g.add(elRadialBarTrack);
+        elRadialBarTrack.attr({
+          id: 'apexcharts-track-' + i,
+          rel: i + 1
+        });
+        opts.size = opts.size - strokeWidth - this.margin;
+        var trackConfig = w.config.plotOptions.radialBar.track;
+        var pathFill = fill.fillPath({
+          seriesNumber: 0,
+          size: opts.size,
+          fillColors: Array.isArray(trackConfig.background) ? trackConfig.background[i] : trackConfig.background,
+          solid: true
+        });
+        var startAngle = this.trackStartAngle;
+        var endAngle = this.trackEndAngle;
+        if (Math.abs(endAngle) + Math.abs(startAngle) >= 360) endAngle = 360 - Math.abs(this.startAngle) - 0.1;
+        var elPath = graphics.drawPath({
+          d: '',
+          stroke: pathFill,
+          strokeWidth: strokeWidth * parseInt(trackConfig.strokeWidth) / 100,
+          fill: 'none',
+          strokeOpacity: trackConfig.opacity,
+          classes: 'apexcharts-radialbar-area'
+        });
+
+        if (trackConfig.dropShadow.enabled) {
+          var shadow = trackConfig.dropShadow;
+          filters.dropShadow(elPath, shadow);
+        }
+
+        elRadialBarTrack.add(elPath);
+        elPath.attr('id', 'apexcharts-radialbarTrack-' + i);
+        var pie = new Pie(this.ctx);
+        pie.animatePaths(elPath, {
+          centerX: opts.centerX,
+          centerY: opts.centerY,
+          endAngle: endAngle,
+          startAngle: startAngle,
+          size: opts.size,
+          i: i,
+          totalItems: 2,
+          animBeginArr: 0,
+          dur: 0,
+          isTrack: true,
+          easing: w.globals.easing
+        });
+      }
+
+      return g;
+    }
+  }, {
+    key: "drawArcs",
+    value: function drawArcs(opts) {
+      var w = this.w; // size, donutSize, centerX, centerY, colorArr, lineColorArr, sectorAngleArr, series
+
+      var graphics = new Graphics(this.ctx);
+      var fill = new Fill(this.ctx);
+      var filters = new Filters(this.ctx);
+      var g = graphics.group();
+      var strokeWidth = this.getStrokeWidth(opts);
+      opts.size = opts.size - strokeWidth / 2;
+      var hollowFillID = w.config.plotOptions.radialBar.hollow.background;
+      var hollowSize = opts.size - strokeWidth * opts.series.length - this.margin * opts.series.length - strokeWidth * parseInt(w.config.plotOptions.radialBar.track.strokeWidth) / 100 / 2;
+      var hollowRadius = hollowSize - w.config.plotOptions.radialBar.hollow.margin;
+
+      if (w.config.plotOptions.radialBar.hollow.image !== undefined) {
+        hollowFillID = this.drawHollowImage(opts, g, hollowSize, hollowFillID);
+      }
+
+      var elHollow = this.drawHollow({
+        size: hollowRadius,
+        centerX: opts.centerX,
+        centerY: opts.centerY,
+        fill: hollowFillID
+      });
+
+      if (w.config.plotOptions.radialBar.hollow.dropShadow.enabled) {
+        var shadow = w.config.plotOptions.radialBar.hollow.dropShadow;
+        filters.dropShadow(elHollow, shadow);
+      }
+
+      var shown = 1;
+
+      if (!this.radialDataLabels.total.show && w.globals.series.length > 1) {
+        shown = 0;
+      }
+
+      var pie = new Pie(this.ctx);
+      var dataLabels = null;
+
+      if (this.radialDataLabels.show) {
+        dataLabels = pie.renderInnerDataLabels(this.radialDataLabels, {
+          hollowSize: hollowSize,
+          centerX: opts.centerX,
+          centerY: opts.centerY,
+          opacity: shown
+        });
+      }
+
+      if (w.config.plotOptions.radialBar.hollow.position === 'back') {
+        g.add(elHollow);
+
+        if (dataLabels) {
+          g.add(dataLabels);
+        }
+      }
+
+      var reverseLoop = false;
+
+      if (w.config.plotOptions.radialBar.inverseOrder) {
+        reverseLoop = true;
+      }
+
+      for (var i = reverseLoop ? opts.series.length - 1 : 0; reverseLoop ? i >= 0 : i < opts.series.length; reverseLoop ? i-- : i++) {
+        var elRadialBarArc = graphics.group({
+          class: "apexcharts-series apexcharts-radial-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[i])
+        });
+        g.add(elRadialBarArc);
+        elRadialBarArc.attr({
+          id: 'apexcharts-series-' + i,
+          rel: i + 1
+        });
+        this.ctx.series.addCollapsedClassToSeries(elRadialBarArc, i);
+        opts.size = opts.size - strokeWidth - this.margin;
+        var pathFill = fill.fillPath({
+          seriesNumber: i,
+          size: opts.size,
+          value: opts.series[i]
+        });
+        var startAngle = this.startAngle;
+        var prevStartAngle = void 0;
+        var totalAngle = Math.abs(w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle); // if data exceeds 100, make it 100
+
+        var dataValue = Utils.negToZero(opts.series[i] > 100 ? 100 : opts.series[i]) / 100;
+        var endAngle = Math.round(totalAngle * dataValue) + this.startAngle;
+        var prevEndAngle = void 0;
+
+        if (w.globals.dataChanged) {
+          prevStartAngle = this.startAngle;
+          prevEndAngle = Math.round(totalAngle * Utils.negToZero(w.globals.previousPaths[i]) / 100) + prevStartAngle;
+        }
+
+        var currFullAngle = Math.abs(endAngle) + Math.abs(startAngle);
+
+        if (currFullAngle >= 360) {
+          endAngle = endAngle - 0.01;
+        }
+
+        var prevFullAngle = Math.abs(prevEndAngle) + Math.abs(prevStartAngle);
+
+        if (prevFullAngle >= 360) {
+          prevEndAngle = prevEndAngle - 0.01;
+        }
+
+        var angle = endAngle - startAngle;
+        var dashArray = Array.isArray(w.config.stroke.dashArray) ? w.config.stroke.dashArray[i] : w.config.stroke.dashArray;
+        var elPath = graphics.drawPath({
+          d: '',
+          stroke: pathFill,
+          strokeWidth: strokeWidth,
+          fill: 'none',
+          fillOpacity: w.config.fill.opacity,
+          classes: 'apexcharts-radialbar-area',
+          strokeDashArray: dashArray
+        });
+        Graphics.setAttrs(elPath.node, {
+          'data:angle': angle,
+          'data:value': opts.series[i]
+        });
+
+        if (w.config.chart.dropShadow.enabled) {
+          var _shadow = w.config.chart.dropShadow;
+          filters.dropShadow(elPath, _shadow, i);
+        }
+
+        this.addListeners(elPath, this.radialDataLabels);
+
+        var _pie = new Pie(this.ctx);
+
+        elRadialBarArc.add(elPath);
+        elPath.attr({
+          id: 'apexcharts-radialbar-slice-' + i,
+          index: 0,
+          j: i
+        });
+        var dur = 0;
+
+        if (_pie.initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+          dur = (endAngle - startAngle) / 360 * w.config.chart.animations.speed;
+          this.animDur = dur / (opts.series.length * 1.2) + this.animDur;
+          this.animBeginArr.push(this.animDur);
+        }
+
+        if (w.globals.dataChanged) {
+          dur = (endAngle - startAngle) / 360 * w.config.chart.animations.dynamicAnimation.speed;
+          this.animDur = dur / (opts.series.length * 1.2) + this.animDur;
+          this.animBeginArr.push(this.animDur);
+        }
+
+        _pie.animatePaths(elPath, {
+          centerX: opts.centerX,
+          centerY: opts.centerY,
+          endAngle: endAngle,
+          startAngle: startAngle,
+          prevEndAngle: prevEndAngle,
+          prevStartAngle: prevStartAngle,
+          size: opts.size,
+          i: i,
+          totalItems: 2,
+          animBeginArr: this.animBeginArr,
+          dur: dur,
+          shouldSetPrevPaths: true,
+          easing: w.globals.easing
+        });
+      }
+
+      return {
+        g: g,
+        elHollow: elHollow,
+        dataLabels: dataLabels
+      };
+    }
+  }, {
+    key: "drawHollow",
+    value: function drawHollow(opts) {
+      var graphics = new Graphics(this.ctx);
+      var circle = graphics.drawCircle(opts.size * 2);
+      circle.attr({
+        class: 'apexcharts-radialbar-hollow',
+        cx: opts.centerX,
+        cy: opts.centerY,
+        r: opts.size,
+        fill: opts.fill
+      });
+      return circle;
+    }
+  }, {
+    key: "drawHollowImage",
+    value: function drawHollowImage(opts, g, hollowSize, hollowFillID) {
+      var w = this.w;
+      var fill = new Fill(this.ctx);
+      var randID = (Math.random() + 1).toString(36).substring(4);
+      var hollowFillImg = w.config.plotOptions.radialBar.hollow.image;
+
+      if (w.config.plotOptions.radialBar.hollow.imageClipped) {
+        fill.clippedImgArea({
+          width: hollowSize,
+          height: hollowSize,
+          image: hollowFillImg,
+          patternID: "pattern".concat(w.globals.cuid).concat(randID)
+        });
+        hollowFillID = "url(#pattern".concat(w.globals.cuid).concat(randID, ")");
+      } else {
+        var imgWidth = w.config.plotOptions.radialBar.hollow.imageWidth;
+        var imgHeight = w.config.plotOptions.radialBar.hollow.imageHeight;
+
+        if (imgWidth === undefined && imgHeight === undefined) {
+          var image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) {
+            this.move(opts.centerX - loader.width / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - loader.height / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY);
+          });
+          g.add(image);
+        } else {
+          var _image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) {
+            this.move(opts.centerX - imgWidth / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - imgHeight / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY);
+            this.size(imgWidth, imgHeight);
+          });
+
+          g.add(_image);
+        }
+      }
+
+      return hollowFillID;
+    }
+  }, {
+    key: "getStrokeWidth",
+    value: function getStrokeWidth(opts) {
+      var w = this.w;
+      return opts.size * (100 - parseInt(w.config.plotOptions.radialBar.hollow.size)) / 100 / (opts.series.length + 1) - this.margin;
+    }
+  }]);
+
+  return Radial;
+}(Pie);
+
+/**
+ * ApexCharts RangeBar Class responsible for drawing Range/Timeline Bars.
+ *
+ * @module RangeBar
+ **/
+
+var RangeBar =
+/*#__PURE__*/
+function (_Bar) {
+  _inherits(RangeBar, _Bar);
+
+  function RangeBar() {
+    _classCallCheck(this, RangeBar);
+
+    return _possibleConstructorReturn(this, _getPrototypeOf(RangeBar).apply(this, arguments));
+  }
+
+  _createClass(RangeBar, [{
+    key: "draw",
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var fill = new Fill(this.ctx);
+      this.rangeBarOptions = this.w.config.plotOptions.rangeBar;
+      this.series = series;
+      this.seriesRangeStart = w.globals.seriesRangeStart;
+      this.seriesRangeEnd = w.globals.seriesRangeEnd;
+      this.initVariables(series);
+      var ret = graphics.group({
+        class: 'apexcharts-rangebar-series apexcharts-plot-series'
+      });
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var x = void 0,
+            y = void 0,
+            xDivision = void 0,
+            // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+        yDivision = void 0,
+            // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+        zeroH = void 0,
+            // zeroH is the baseline where 0 meets y axis
+        zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+        var yArrj = []; // hold y values of current iterating series
+
+        var xArrj = []; // hold x values of current iterating series
+
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn
+
+        var elSeries = graphics.group({
+          class: "apexcharts-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+          rel: i + 1,
+          'data:realIndex': realIndex
+        });
+
+        if (series[i].length > 0) {
+          this.visibleI = this.visibleI + 1;
+        }
+
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        var initPositions = this.initialPositions();
+        y = initPositions.y;
+        yDivision = initPositions.yDivision;
+        barHeight = initPositions.barHeight;
+        zeroW = initPositions.zeroW;
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+        xArrj.push(x + barWidth / 2); // eldatalabels
+
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+
+        for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+          if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+            this.isNullValue = true;
+          } else {
+            this.isNullValue = false;
+          }
+
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var paths = null;
+
+          if (this.isHorizontal) {
+            paths = this.drawRangeBarPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              barHeight: barHeight,
+              strokeWidth: strokeWidth,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              zeroW: zeroW,
+              x: x,
+              y: y,
+              yDivision: yDivision,
+              elSeries: elSeries
+            });
+            barWidth = paths.barWidth;
+          } else {
+            paths = this.drawRangeColumnPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              x: x,
+              y: y,
+              xDivision: xDivision,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              barWidth: barWidth,
+              zeroH: zeroH,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries
+            });
+            barHeight = paths.barHeight;
+          }
+
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x; // push current X
+
+          if (j > 0) {
+            xArrj.push(x + barWidth / 2);
+          }
+
+          yArrj.push(y);
+          var pathFill = fill.fillPath({
+            seriesNumber: realIndex
+          });
+          var lineFill = w.globals.stroke.colors[realIndex];
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            lineFill: lineFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            visibleSeries: this.visibleI,
+            type: 'rangebar'
+          });
+        } // push all x val arrays into main xArr
+
+
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj;
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: "drawRangeColumnPaths",
+    value: function drawRangeColumnPaths(_ref) {
+      var indexes = _ref.indexes,
+          x = _ref.x,
+          y = _ref.y,
+          strokeWidth = _ref.strokeWidth,
+          xDivision = _ref.xDivision,
+          pathTo = _ref.pathTo,
+          pathFrom = _ref.pathFrom,
+          barWidth = _ref.barWidth,
+          zeroH = _ref.zeroH;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var i = indexes.i;
+      var j = indexes.j;
+      var yRatio = this.yRatio[this.yaxisIndex];
+      var realIndex = indexes.realIndex;
+      var range = this.getRangeValue(realIndex, j);
+      var y1 = Math.min(range.start, range.end);
+      var y2 = Math.max(range.start, range.end);
+
+      if (w.globals.isXNumeric) {
+        x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x + barWidth * this.visibleI;
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        y1 = zeroH;
+      } else {
+        y1 = zeroH - y1 / yRatio;
+        y2 = zeroH - y2 / yRatio;
+      }
+
+      var barHeight = Math.abs(y2 - y1);
+      pathTo = graphics.move(barXPosition, zeroH);
+      pathFrom = graphics.move(barXPosition, y1);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j, true);
+      }
+
+      pathTo = graphics.move(barXPosition, y2) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition, y1) + graphics.line(barXPosition, y2 - strokeWidth / 2);
+      pathFrom = pathFrom + graphics.move(barXPosition, y1) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition, y1);
+
+      if (!w.globals.isXNumeric) {
+        x = x + xDivision;
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        barHeight: barHeight,
+        x: x,
+        y: y2,
+        barXPosition: barXPosition
+      };
+    }
+  }, {
+    key: "drawRangeBarPaths",
+    value: function drawRangeBarPaths(_ref2) {
+      var indexes = _ref2.indexes,
+          x = _ref2.x,
+          y = _ref2.y,
+          yDivision = _ref2.yDivision,
+          pathTo = _ref2.pathTo,
+          pathFrom = _ref2.pathFrom,
+          barHeight = _ref2.barHeight,
+          zeroW = _ref2.zeroW;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var x1 = zeroW;
+      var x2 = zeroW;
+
+      if (w.globals.isXNumeric) {
+        y = (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - barHeight;
+      }
+
+      var barYPosition = y + barHeight * this.visibleI;
+
+      if (typeof this.series[i][j] !== 'undefined' && this.series[i][j] !== null) {
+        x1 = zeroW + this.seriesRangeStart[i][j] / this.invertedYRatio;
+        x2 = zeroW + this.seriesRangeEnd[i][j] / this.invertedYRatio;
+      }
+
+      pathTo = graphics.move(zeroW, barYPosition);
+      pathFrom = graphics.move(zeroW, barYPosition);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j);
+      }
+
+      var barWidth = Math.abs(x2 - x1);
+      pathTo = graphics.move(x1, barYPosition) + graphics.line(x2, barYPosition) + graphics.line(x2, barYPosition + barHeight) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition);
+      pathFrom = pathFrom + graphics.line(x1, barYPosition) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition);
+
+      if (!w.globals.isXNumeric) {
+        y = y + yDivision;
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        barWidth: barWidth,
+        x: x2,
+        y: y,
+        barYPosition: barYPosition
+      };
+    }
+  }, {
+    key: "getRangeValue",
+    value: function getRangeValue(i, j) {
+      var w = this.w;
+      return {
+        start: w.globals.seriesRangeStart[i][j],
+        end: w.globals.seriesRangeEnd[i][j]
+      };
+    }
+  }]);
+
+  return RangeBar;
+}(Bar);
+
+/**
+ * ApexCharts Line Class responsible for drawing Line / Area Charts.
+ * This class is also responsible for generating values for Bubble/Scatter charts, so need to rename it to Axis Charts to avoid confusions
+ * @module Line
+ **/
+
+var Line =
+/*#__PURE__*/
+function () {
+  function Line(ctx, xyRatios, isPointsChart) {
+    _classCallCheck(this, Line);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.xyRatios = xyRatios;
+    this.pointsChart = !(this.w.config.chart.type !== 'bubble' && this.w.config.chart.type !== 'scatter') || isPointsChart;
+    this.scatter = new Scatter(this.ctx);
+    this.noNegatives = this.w.globals.minX === Number.MAX_VALUE;
+    this.yaxisIndex = 0;
+  }
+
+  _createClass(Line, [{
+    key: "draw",
+    value: function draw(series, ptype, seriesIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var fill = new Fill(this.ctx);
+      var type = w.globals.comboCharts ? ptype : w.config.chart.type;
+      var ret = graphics.group({
+        class: "apexcharts-".concat(type, "-series apexcharts-plot-series")
+      });
+      var coreUtils = new CoreUtils(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+      var yRatio = this.xyRatios.yRatio;
+      yRatio = coreUtils.getLogYRatios(yRatio);
+      var zRatio = this.xyRatios.zRatio;
+      var xRatio = this.xyRatios.xRatio;
+      var baseLineY = this.xyRatios.baseLineY; // push all series in an array, so we can draw in reverse order (for stacked charts)
+
+      var allSeries = [];
+      var prevSeriesY = [];
+      var categoryAxisCorrection = 0;
+
+      for (var i = 0; i < series.length; i++) {
+        // width divided into equal parts
+        if (type === 'line' && (w.config.fill.type === 'gradient' || w.config.fill.type[i] === 'gradient')) {
+          // a small adjustment to allow gradient line to draw correctly for all same values
+
+          /* #fix https://github.com/apexcharts/apexcharts.js/issues/358 */
+          if (coreUtils.seriesHaveSameValues(i)) {
+            var gSeries = series[i].slice();
+            gSeries[gSeries.length - 1] = gSeries[gSeries.length - 1] + 0.000001;
+            series[i] = gSeries;
+          }
+        }
+
+        var xDivision = w.globals.gridWidth / w.globals.dataPoints;
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;
+
+        if (yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;
+        var yArrj = []; // hold y values of current iterating series
+
+        var xArrj = []; // hold x values of current iterating series
+        // zeroY is the 0 value in y series which can be used in negative charts
+
+        var zeroY = w.globals.gridHeight - baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? baseLineY[this.yaxisIndex] * 2 : 0);
+        var areaBottomY = zeroY;
+
+        if (zeroY > w.globals.gridHeight) {
+          areaBottomY = w.globals.gridHeight;
+        }
+
+        categoryAxisCorrection = xDivision / 2;
+        var x = w.globals.padHorizontal + categoryAxisCorrection;
+        var y = 1;
+
+        if (w.globals.isXNumeric && w.globals.seriesX.length > 0) {
+          x = (w.globals.seriesX[realIndex][0] - w.globals.minX) / xRatio;
+        }
+
+        xArrj.push(x);
+        var linePath = void 0,
+            areaPath = void 0,
+            pathFromLine = void 0,
+            pathFromArea = void 0;
+        var linePaths = [];
+        var areaPaths = []; // el to which series will be drawn
+
+        var elSeries = graphics.group({
+          class: "apexcharts-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[realIndex])
+        }); // points
+
+        var elPointsMain = graphics.group({
+          class: 'apexcharts-series-markers-wrap'
+        }); // eldatalabels
+
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+        this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex);
+        var longestSeries = series[i].length === w.globals.dataPoints;
+        elSeries.attr({
+          'data:longestSeries': longestSeries,
+          rel: i + 1,
+          'data:realIndex': realIndex
+        });
+        this.appendPathFrom = true;
+        var pX = x;
+        var pY = void 0;
+        var prevX = pX;
+        var prevY = zeroY; // w.globals.svgHeight;
+
+        var lineYPosition = 0; // the first value in the current series is not null or undefined
+
+        var firstPrevY = this.determineFirstPrevY({
+          i: i,
+          series: series,
+          yRatio: yRatio[this.yaxisIndex],
+          zeroY: zeroY,
+          prevY: prevY,
+          prevSeriesY: prevSeriesY,
+          lineYPosition: lineYPosition
+        });
+        prevY = firstPrevY.prevY;
+        yArrj.push(prevY);
+        pY = prevY;
+
+        if (series[i][0] === null) {
+          // when the first value itself is null, we need to move the pointer to a location where a null value is not found
+          for (var s = 0; s < series[i].length; s++) {
+            if (series[i][s] !== null) {
+              prevX = xDivision * s;
+              prevY = zeroY - series[i][s] / yRatio[this.yaxisIndex];
+              linePath = graphics.move(prevX, prevY);
+              areaPath = graphics.move(prevX, areaBottomY);
+              break;
+            }
+          }
+        } else {
+          linePath = graphics.move(prevX, prevY);
+          areaPath = graphics.move(prevX, areaBottomY) + graphics.line(prevX, prevY);
+        }
+
+        pathFromLine = graphics.move(-1, zeroY) + graphics.line(-1, zeroY);
+        pathFromArea = graphics.move(-1, zeroY) + graphics.line(-1, zeroY);
+
+        if (w.globals.previousPaths.length > 0) {
+          var pathFrom = this.checkPreviousPaths({
+            pathFromLine: pathFromLine,
+            pathFromArea: pathFromArea,
+            realIndex: realIndex
+          });
+          pathFromLine = pathFrom.pathFromLine;
+          pathFromArea = pathFrom.pathFromArea;
+        }
+
+        var iterations = w.globals.dataPoints > 1 ? w.globals.dataPoints - 1 : w.globals.dataPoints;
+
+        for (var j = 0; j < iterations; j++) {
+          if (w.globals.isXNumeric) {
+            var sX = w.globals.seriesX[realIndex][j + 1];
+
+            if (typeof w.globals.seriesX[realIndex][j + 1] === 'undefined') {
+              /* fix #374 */
+              sX = w.globals.seriesX[realIndex][iterations - 1];
+            }
+
+            x = (sX - w.globals.minX) / xRatio;
+          } else {
+            x = x + xDivision;
+          }
+
+          var minY = Utils.isNumber(w.globals.minYArr[realIndex]) ? w.globals.minYArr[realIndex] : w.globals.minY;
+
+          if (w.config.chart.stacked) {
+            if (i > 0 && w.globals.collapsedSeries.length < w.config.series.length - 1) {
+              lineYPosition = prevSeriesY[i - 1][j + 1];
+            } else {
+              // the first series will not have prevY values
+              lineYPosition = zeroY;
+            }
+
+            if (typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null) {
+              y = lineYPosition - minY / yRatio[this.yaxisIndex] + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2;
+            } else {
+              y = lineYPosition - series[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2;
+            }
+          } else {
+            if (typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null) {
+              y = zeroY - minY / yRatio[this.yaxisIndex] + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2;
+            } else {
+              y = zeroY - series[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2;
+            }
+          } // push current X
+
+
+          xArrj.push(x); // push current Y that will be used as next series's bottom position
+
+          yArrj.push(y);
+          var calculatedPaths = this.createPaths({
+            series: series,
+            i: i,
+            j: j,
+            x: x,
+            y: y,
+            xDivision: xDivision,
+            pX: pX,
+            pY: pY,
+            areaBottomY: areaBottomY,
+            linePath: linePath,
+            areaPath: areaPath,
+            linePaths: linePaths,
+            areaPaths: areaPaths,
+            seriesIndex: seriesIndex
+          });
+          areaPaths = calculatedPaths.areaPaths;
+          linePaths = calculatedPaths.linePaths;
+          pX = calculatedPaths.pX;
+          pY = calculatedPaths.pY;
+          areaPath = calculatedPaths.areaPath;
+          linePath = calculatedPaths.linePath;
+
+          if (this.appendPathFrom) {
+            pathFromLine = pathFromLine + graphics.line(x, zeroY);
+            pathFromArea = pathFromArea + graphics.line(x, zeroY);
+          }
+
+          var pointsPos = this.calculatePoints({
+            series: series,
+            x: x,
+            y: y,
+            realIndex: realIndex,
+            i: i,
+            j: j,
+            prevY: prevY,
+            categoryAxisCorrection: categoryAxisCorrection,
+            xRatio: xRatio
+          });
+
+          if (!this.pointsChart) {
+            var markers = new Markers(this.ctx);
+
+            if (w.globals.dataPoints > 1) {
+              elPointsMain.node.classList.add('hidden');
+            }
+
+            var elPointsWrap = markers.plotChartMarkers(pointsPos, realIndex, j + 1);
+
+            if (elPointsWrap !== null) {
+              elPointsMain.add(elPointsWrap);
+            }
+          } else {
+            // scatter / bubble chart points creation
+            this.scatter.draw(elSeries, j, {
+              realIndex: realIndex,
+              pointsPos: pointsPos,
+              zRatio: zRatio,
+              elParent: elPointsMain
+            });
+          }
+
+          var dataLabelAlign = !series[i][j + 1] || series[i][j + 1] > series[i][j] ? 'top' : 'bottom';
+          var dataLabels = new DataLabels(this.ctx);
+          var drawnLabels = dataLabels.drawDataLabel(pointsPos, realIndex, j + 1, null, dataLabelAlign);
+
+          if (drawnLabels !== null) {
+            elDataLabelsWrap.add(drawnLabels);
+          }
+        } // push all current y values array to main PrevY Array
+
+
+        prevSeriesY.push(yArrj); // push all x val arrays into main xArr
+
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj; // these elements will be shown after area path animation completes
+
+        if (!this.pointsChart) {
+          w.globals.delayedElements.push({
+            el: elPointsMain.node,
+            index: realIndex
+          });
+        }
+
+        var defaultRenderedPathOptions = {
+          i: i,
+          realIndex: realIndex,
+          animationDelay: i,
+          initialSpeed: w.config.chart.animations.speed,
+          dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+          className: "apexcharts-".concat(type),
+          id: "apexcharts-".concat(type)
+        };
+
+        if (type === 'area') {
+          var pathFill = fill.fillPath({
+            seriesNumber: realIndex
+          });
+
+          for (var p = 0; p < areaPaths.length; p++) {
+            var renderedPath = graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+              pathFrom: pathFromArea,
+              pathTo: areaPaths[p],
+              stroke: 'none',
+              strokeWidth: 0,
+              strokeLineCap: null,
+              fill: pathFill
+            }));
+            elSeries.add(renderedPath);
+          }
+        }
+
+        if (w.config.stroke.show && !this.pointsChart) {
+          var lineFill = null;
+
+          if (type === 'line') {
+            // fillable lines only for lineChart
+            lineFill = fill.fillPath({
+              seriesNumber: realIndex,
+              i: i
+            });
+          } else {
+            lineFill = w.globals.stroke.colors[realIndex];
+          }
+
+          for (var _p = 0; _p < linePaths.length; _p++) {
+            var _renderedPath = graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+              pathFrom: pathFromLine,
+              pathTo: linePaths[_p],
+              stroke: lineFill,
+              strokeWidth: Array.isArray(w.config.stroke.width) ? w.config.stroke.width[realIndex] : w.config.stroke.width,
+              strokeLineCap: w.config.stroke.lineCap,
+              fill: 'none'
+            }));
+
+            elSeries.add(_renderedPath);
+          }
+        }
+
+        elSeries.add(elPointsMain);
+        elSeries.add(elDataLabelsWrap);
+        allSeries.push(elSeries);
+      }
+
+      for (var _s = allSeries.length; _s > 0; _s--) {
+        ret.add(allSeries[_s - 1]);
+      }
+
+      return ret;
+    }
+  }, {
+    key: "createPaths",
+    value: function createPaths(_ref) {
+      var series = _ref.series,
+          i = _ref.i,
+          j = _ref.j,
+          x = _ref.x,
+          y = _ref.y,
+          pX = _ref.pX,
+          pY = _ref.pY,
+          xDivision = _ref.xDivision,
+          areaBottomY = _ref.areaBottomY,
+          linePath = _ref.linePath,
+          areaPath = _ref.areaPath,
+          linePaths = _ref.linePaths,
+          areaPaths = _ref.areaPaths,
+          seriesIndex = _ref.seriesIndex;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var curve = w.config.stroke.curve;
+
+      if (Array.isArray(w.config.stroke.curve)) {
+        if (Array.isArray(seriesIndex)) {
+          curve = w.config.stroke.curve[seriesIndex[i]];
+        } else {
+          curve = w.config.stroke.curve[i];
+        }
+      } // logic of smooth curve derived from chartist
+      // CREDITS: https://gionkunz.github.io/chartist-js/
+
+
+      if (curve === 'smooth') {
+        var length = (x - pX) * 0.35;
+
+        if (w.globals.hasNullValues) {
+          if (series[i][j] !== null) {
+            if (series[i][j + 1] !== null) {
+              linePath = graphics.move(pX, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y);
+              areaPath = graphics.move(pX + 1, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y) + graphics.line(x, areaBottomY) + graphics.line(pX, areaBottomY) + 'z';
+            } else {
+              linePath = graphics.move(pX, pY);
+              areaPath = graphics.move(pX, pY) + 'z';
+            }
+          }
+
+          linePaths.push(linePath);
+          areaPaths.push(areaPath);
+        } else {
+          linePath = linePath + graphics.curve(pX + length, pY, x - length, y, x, y);
+          areaPath = areaPath + graphics.curve(pX + length, pY, x - length, y, x, y);
+        }
+
+        pX = x;
+        pY = y;
+
+        if (j === series[i].length - 2) {
+          // last loop, close path
+          areaPath = areaPath + graphics.curve(pX, pY, x, y, x, areaBottomY) + graphics.move(x, y) + 'z';
+
+          if (!w.globals.hasNullValues) {
+            linePaths.push(linePath);
+            areaPaths.push(areaPath);
+          }
+        }
+      } else {
+        if (series[i][j + 1] === null) {
+          linePath = linePath + graphics.move(x, y);
+          areaPath = areaPath + graphics.line(x - xDivision, areaBottomY) + graphics.move(x, y);
+        }
+
+        if (series[i][j] === null) {
+          linePath = linePath + graphics.move(x, y);
+          areaPath = areaPath + graphics.move(x, areaBottomY);
+        }
+
+        if (curve === 'stepline') {
+          linePath = linePath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V');
+          areaPath = areaPath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V');
+        } else if (curve === 'straight') {
+          linePath = linePath + graphics.line(x, y);
+          areaPath = areaPath + graphics.line(x, y);
+        }
+
+        if (j === series[i].length - 2) {
+          // last loop, close path
+          areaPath = areaPath + graphics.line(x, areaBottomY) + graphics.move(x, y) + 'z';
+          linePaths.push(linePath);
+          areaPaths.push(areaPath);
+        }
+      }
+
+      return {
+        linePaths: linePaths,
+        areaPaths: areaPaths,
+        pX: pX,
+        pY: pY,
+        linePath: linePath,
+        areaPath: areaPath
+      };
+    }
+  }, {
+    key: "calculatePoints",
+    value: function calculatePoints(_ref2) {
+      var series = _ref2.series,
+          realIndex = _ref2.realIndex,
+          x = _ref2.x,
+          y = _ref2.y,
+          i = _ref2.i,
+          j = _ref2.j,
+          prevY = _ref2.prevY,
+          categoryAxisCorrection = _ref2.categoryAxisCorrection,
+          xRatio = _ref2.xRatio;
+      var w = this.w;
+      var ptX = [];
+      var ptY = [];
+
+      if (j === 0) {
+        var xPT1st = categoryAxisCorrection + w.config.markers.offsetX; // the first point for line series
+        // we need to check whether it's not a time series, because a time series may
+        // start from the middle of the x axis
+
+        if (w.globals.isXNumeric) {
+          xPT1st = (w.globals.seriesX[realIndex][0] - w.globals.minX) / xRatio + w.config.markers.offsetX;
+        } // push 2 points for the first data values
+
+
+        ptX.push(xPT1st);
+        ptY.push(Utils.isNumber(series[i][0]) ? prevY + w.config.markers.offsetY : null);
+        ptX.push(x + w.config.markers.offsetX);
+        ptY.push(Utils.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null);
+      } else {
+        ptX.push(x + w.config.markers.offsetX);
+        ptY.push(Utils.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null);
+      }
+
+      var pointsPos = {
+        x: ptX,
+        y: ptY
+      };
+      return pointsPos;
+    }
+  }, {
+    key: "checkPreviousPaths",
+    value: function checkPreviousPaths(_ref3) {
+      var pathFromLine = _ref3.pathFromLine,
+          pathFromArea = _ref3.pathFromArea,
+          realIndex = _ref3.realIndex;
+      var w = this.w;
+
+      for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+        var gpp = w.globals.previousPaths[pp];
+
+        if ((gpp.type === 'line' || gpp.type === 'area') && gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+          if (gpp.type === 'line') {
+            this.appendPathFrom = false;
+            pathFromLine = w.globals.previousPaths[pp].paths[0].d;
+          } else if (gpp.type === 'area') {
+            this.appendPathFrom = false;
+            pathFromArea = w.globals.previousPaths[pp].paths[0].d;
+
+            if (w.config.stroke.show) {
+              pathFromLine = w.globals.previousPaths[pp].paths[1].d;
+            }
+          }
+        }
+      }
+
+      return {
+        pathFromLine: pathFromLine,
+        pathFromArea: pathFromArea
+      };
+    }
+  }, {
+    key: "determineFirstPrevY",
+    value: function determineFirstPrevY(_ref4) {
+      var i = _ref4.i,
+          series = _ref4.series,
+          yRatio = _ref4.yRatio,
+          zeroY = _ref4.zeroY,
+          prevY = _ref4.prevY,
+          prevSeriesY = _ref4.prevSeriesY,
+          lineYPosition = _ref4.lineYPosition;
+      var w = this.w;
+
+      if (typeof series[i][0] !== 'undefined') {
+        if (w.config.chart.stacked) {
+          if (i > 0) {
+            // 1st y value of previous series
+            lineYPosition = prevSeriesY[i - 1][0];
+          } else {
+            // the first series will not have prevY values
+            lineYPosition = zeroY;
+          }
+
+          prevY = lineYPosition - series[i][0] / yRatio + (this.isReversed ? series[i][0] / yRatio : 0) * 2;
+        } else {
+          prevY = zeroY - series[i][0] / yRatio + (this.isReversed ? series[i][0] / yRatio : 0) * 2;
+        }
+      } else {
+        // the first value in the current series is null
+        if (w.config.chart.stacked && i > 0 && typeof series[i][0] === 'undefined') {
+          // check for undefined value (undefined value will occur when we clear the series while user clicks on legend to hide serieses)
+          for (var s = i - 1; s >= 0; s--) {
+            // for loop to get to 1st previous value until we get it
+            if (series[s][0] !== null && typeof series[s][0] !== 'undefined') {
+              lineYPosition = prevSeriesY[s][0];
+              prevY = lineYPosition;
+              break;
+            }
+          }
+        }
+      }
+
+      return {
+        prevY: prevY,
+        lineYPosition: lineYPosition
+      };
+    }
+  }]);
+
+  return Line;
+}();
+
+/**
+ * ApexCharts Formatter Class for setting value formatters for axes as well as tooltips.
+ *
+ * @module Formatters
+ **/
+
+var Formatters =
+/*#__PURE__*/
+function () {
+  function Formatters(ctx) {
+    _classCallCheck(this, Formatters);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.tooltipKeyFormat = 'dd MMM';
+  }
+
+  _createClass(Formatters, [{
+    key: "xLabelFormat",
+    value: function xLabelFormat(fn, val) {
+      var w = this.w;
+
+      if (w.config.xaxis.type === 'datetime') {
+        // if user has not specified a custom formatter, use the default tooltip.x.format
+        if (w.config.tooltip.x.formatter === undefined) {
+          var datetimeObj = new DateTime(this.ctx);
+          return datetimeObj.formatDate(new Date(val), w.config.tooltip.x.format, true, true);
+        }
+      }
+
+      return fn(val);
+    }
+  }, {
+    key: "setLabelFormatters",
+    value: function setLabelFormatters() {
+      var w = this.w;
+
+      w.globals.xLabelFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.xaxisTooltipFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.ttKeyFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.ttZFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.legendFormatter = function (val) {
+        return val;
+      };
+
+      if (typeof w.config.tooltip.x.formatter === 'function') {
+        w.globals.ttKeyFormatter = w.config.tooltip.x.formatter;
+      }
+
+      if (typeof w.config.xaxis.tooltip.formatter === 'function') {
+        w.globals.xaxisTooltipFormatter = w.config.xaxis.tooltip.formatter;
+      }
+
+      if (Array.isArray(w.config.tooltip.y)) {
+        w.globals.ttVal = w.config.tooltip.y;
+      } else {
+        if (w.config.tooltip.y.formatter !== undefined) {
+          w.globals.ttVal = w.config.tooltip.y;
+        }
+      }
+
+      if (w.config.tooltip.z.formatter !== undefined) {
+        w.globals.ttZFormatter = w.config.tooltip.z.formatter;
+      } // legend formatter - if user wants to append any global values of series to legend text
+
+
+      if (w.config.legend.formatter !== undefined) {
+        w.globals.legendFormatter = w.config.legend.formatter;
+      } // formatter function will always overwrite format property
+
+
+      if (w.config.xaxis.labels.formatter !== undefined) {
+        w.globals.xLabelFormatter = w.config.xaxis.labels.formatter;
+      } else {
+        w.globals.xLabelFormatter = function (val) {
+          if (Utils.isNumber(val)) {
+            // numeric xaxis may have smaller range, so defaulting to 1 decimal
+            if (w.config.xaxis.type === 'numeric' && w.globals.dataPoints < 50) {
+              return val.toFixed(1);
+            }
+
+            return val.toFixed(0);
+          }
+
+          return val;
+        };
+      } // formatter function will always overwrite format property
+
+
+      w.config.yaxis.forEach(function (yaxe, i) {
+        if (yaxe.labels.formatter !== undefined) {
+          w.globals.yLabelFormatters[i] = yaxe.labels.formatter;
+        } else {
+          w.globals.yLabelFormatters[i] = function (val) {
+            if (Utils.isNumber(val)) {
+              if (w.globals.yValueDecimal !== 0) {
+                return val.toFixed(yaxe.decimalsInFloat !== undefined ? yaxe.decimalsInFloat : w.globals.yValueDecimal);
+              } else if (w.globals.maxY - w.globals.minY < 5) {
+                return val.toFixed(1);
+              } else {
+                return val.toFixed(0);
+              }
+            }
+
+            return val;
+          };
+        }
+      });
+      return w.globals;
+    }
+  }, {
+    key: "heatmapLabelFormatters",
+    value: function heatmapLabelFormatters() {
+      var w = this.w;
+
+      if (w.config.chart.type === 'heatmap') {
+        w.globals.yAxisScale[0].result = w.globals.seriesNames.slice(); //  get the longest string from the labels array and also apply label formatter to it
+
+        var longest = w.globals.seriesNames.reduce(function (a, b) {
+          return a.length > b.length ? a : b;
+        }, 0);
+        w.globals.yAxisScale[0].niceMax = longest;
+        w.globals.yAxisScale[0].niceMin = longest;
+      }
+    }
+  }]);
+
+  return Formatters;
+}();
+
+var AxesUtils =
+/*#__PURE__*/
+function () {
+  function AxesUtils(ctx) {
+    _classCallCheck(this, AxesUtils);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  } // Based on the formatter function, get the label text and position
+
+
+  _createClass(AxesUtils, [{
+    key: "getLabel",
+    value: function getLabel(labels, timelineLabels, x, i) {
+      var drawnLabels = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
+      var w = this.w;
+      var rawLabel = typeof labels[i] === 'undefined' ? '' : labels[i];
+      var label;
+      var xlbFormatter = w.globals.xLabelFormatter;
+      var customFormatter = w.config.xaxis.labels.formatter;
+      var xFormat = new Formatters(this.ctx);
+      label = xFormat.xLabelFormat(xlbFormatter, rawLabel);
+
+      if (customFormatter !== undefined) {
+        label = customFormatter(rawLabel, labels[i], i);
+      }
+
+      if (timelineLabels.length > 0) {
+        x = timelineLabels[i].position;
+        label = timelineLabels[i].value;
+      } else {
+        if (w.config.xaxis.type === 'datetime' && customFormatter === undefined) {
+          label = '';
+        }
+      }
+
+      if (typeof label === 'undefined') label = '';
+      label = label.toString();
+
+      if (label.indexOf('NaN') === 0 || label.toLowerCase().indexOf('invalid') === 0 || label.toLowerCase().indexOf('infinity') >= 0 || drawnLabels.indexOf(label) >= 0 && !w.config.xaxis.labels.showDuplicates) {
+        label = '';
+      }
+
+      return {
+        x: x,
+        text: label
+      };
+    }
+  }, {
+    key: "drawYAxisTicks",
+    value: function drawYAxisTicks(x, tickAmount, axisBorder, axisTicks, realIndex, labelsDivider, elYaxis) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx); // initial label position = 0;
+
+      var t = w.globals.translateY;
+
+      if (axisTicks.show) {
+        if (w.config.yaxis[realIndex].opposite === true) x = x + axisTicks.width;
+
+        for (var i = tickAmount; i >= 0; i--) {
+          var tY = t + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY - 1;
+
+          if (w.globals.isBarHorizontal) {
+            tY = labelsDivider * i;
+          }
+
+          var elTick = graphics.drawLine(x + axisBorder.offsetX - axisTicks.width + axisTicks.offsetX, tY + axisTicks.offsetY, x + axisBorder.offsetX + axisTicks.offsetX, tY + axisTicks.offsetY, axisBorder.color);
+          elYaxis.add(elTick);
+          t = t + labelsDivider;
+        }
+      }
+    }
+  }]);
+
+  return AxesUtils;
+}();
+
+/**
+ * ApexCharts XAxis Class for drawing X-Axis.
+ *
+ * @module XAxis
+ **/
+
+var XAxis =
+/*#__PURE__*/
+function () {
+  function XAxis(ctx) {
+    _classCallCheck(this, XAxis);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+    this.xaxisLabels = w.globals.labels.slice();
+
+    if (w.globals.timelineLabels.length > 0) {
+      //  timeline labels are there
+      this.xaxisLabels = w.globals.timelineLabels.slice();
+    }
+
+    this.drawnLabels = [];
+
+    if (w.config.xaxis.position === 'top') {
+      this.offY = 0;
+    } else {
+      this.offY = w.globals.gridHeight + 1;
+    }
+
+    this.offY = this.offY + w.config.xaxis.axisBorder.offsetY;
+    this.xaxisFontSize = w.config.xaxis.labels.style.fontSize;
+    this.xaxisFontFamily = w.config.xaxis.labels.style.fontFamily;
+    this.xaxisForeColors = w.config.xaxis.labels.style.colors;
+    this.xaxisBorderWidth = w.config.xaxis.axisBorder.width;
+
+    if (this.xaxisBorderWidth.indexOf('%') > -1) {
+      this.xaxisBorderWidth = w.globals.gridWidth * parseInt(this.xaxisBorderWidth) / 100;
+    } else {
+      this.xaxisBorderWidth = parseInt(this.xaxisBorderWidth);
+    }
+
+    this.xaxisBorderHeight = w.config.xaxis.axisBorder.height; // For bars, we will only consider single y xais,
+    // as we are not providing multiple yaxis for bar charts
+
+    this.yaxis = w.config.yaxis[0];
+    this.axesUtils = new AxesUtils(ctx);
+  }
+
+  _createClass(XAxis, [{
+    key: "drawXaxis",
+    value: function drawXaxis() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var elXaxis = graphics.group({
+        class: 'apexcharts-xaxis',
+        transform: "translate(".concat(w.config.xaxis.offsetX, ", ").concat(w.config.xaxis.offsetY, ")")
+      });
+      var elXaxisTexts = graphics.group({
+        class: 'apexcharts-xaxis-texts-g',
+        transform: "translate(".concat(w.globals.translateXAxisX, ", ").concat(w.globals.translateXAxisY, ")")
+      });
+      elXaxis.add(elXaxisTexts);
+      var colWidth; // initial x Position (keep adding column width in the loop)
+
+      var xPos = w.globals.padHorizontal;
+      var labels = [];
+
+      for (var i = 0; i < this.xaxisLabels.length; i++) {
+        labels.push(this.xaxisLabels[i]);
+      }
+
+      if (w.globals.isXNumeric) {
+        colWidth = w.globals.gridWidth / (labels.length - 1);
+        xPos = xPos + colWidth / 2 + w.config.xaxis.labels.offsetX;
+      } else {
+        colWidth = w.globals.gridWidth / labels.length;
+        xPos = xPos + colWidth + w.config.xaxis.labels.offsetX;
+      }
+
+      var labelsLen = labels.length;
+
+      if (w.config.xaxis.labels.show) {
+        for (var _i = 0; _i <= labelsLen - 1; _i++) {
+          var x = xPos - colWidth / 2 + w.config.xaxis.labels.offsetX;
+          var label = this.axesUtils.getLabel(labels, w.globals.timelineLabels, x, _i, this.drawnLabels);
+          this.drawnLabels.push(label.text);
+          var offsetYCorrection = 28;
+
+          if (w.globals.rotateXLabels) {
+            offsetYCorrection = 22;
+          }
+
+          var elTick = graphics.drawText({
+            x: label.x,
+            y: this.offY + w.config.xaxis.labels.offsetY + offsetYCorrection,
+            text: '',
+            textAnchor: 'middle',
+            fontSize: this.xaxisFontSize,
+            fontFamily: this.xaxisFontFamily,
+            foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[_i] : this.xaxisForeColors,
+            cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass
+          });
+
+          if (_i === labelsLen - 1) {
+            if (w.globals.skipLastTimelinelabel) {
+              label.text = '';
+            }
+          }
+
+          elXaxisTexts.add(elTick);
+          graphics.addTspan(elTick, label.text, this.xaxisFontFamily);
+          var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title');
+          elTooltipTitle.textContent = label.text;
+          elTick.node.appendChild(elTooltipTitle);
+          xPos = xPos + colWidth;
+        }
+      }
+
+      if (w.config.xaxis.title.text !== undefined) {
+        var elXaxisTitle = graphics.group({
+          class: 'apexcharts-xaxis-title'
+        });
+        var elXAxisTitleText = graphics.drawText({
+          x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX,
+          y: this.offY - parseInt(this.xaxisFontSize) + w.globals.xAxisLabelsHeight + w.config.xaxis.title.offsetY,
+          text: w.config.xaxis.title.text,
+          textAnchor: 'middle',
+          fontSize: w.config.xaxis.title.style.fontSize,
+          fontFamily: w.config.xaxis.title.style.fontFamily,
+          foreColor: w.config.xaxis.title.style.color,
+          cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass
+        });
+        elXaxisTitle.add(elXAxisTitleText);
+        elXaxis.add(elXaxisTitle);
+      }
+
+      if (w.config.xaxis.axisBorder.show) {
+        var lineCorrection = 0;
+
+        if (w.config.chart.type === 'bar' && w.globals.isXNumeric) {
+          lineCorrection = lineCorrection - 15;
+        }
+
+        var elHorzLine = graphics.drawLine(w.globals.padHorizontal + lineCorrection + w.config.xaxis.axisBorder.offsetX, this.offY, this.xaxisBorderWidth, this.offY, w.config.xaxis.axisBorder.color, 0, this.xaxisBorderHeight);
+        elXaxis.add(elHorzLine);
+      }
+
+      return elXaxis;
+    } // this actually becomes the vertical axis (for bar charts)
+
+  }, {
+    key: "drawXaxisInversed",
+    value: function drawXaxisInversed(realIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var translateYAxisX = w.config.yaxis[0].opposite ? w.globals.translateYAxisX[realIndex] : 0;
+      var elYaxis = graphics.group({
+        class: 'apexcharts-yaxis apexcharts-xaxis-inversed',
+        rel: realIndex
+      });
+      var elYaxisTexts = graphics.group({
+        class: 'apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g',
+        transform: 'translate(' + translateYAxisX + ', 0)'
+      });
+      elYaxis.add(elYaxisTexts);
+      var colHeight; // initial x Position (keep adding column width in the loop)
+
+      var yPos;
+      var labels = [];
+
+      for (var i = 0; i < this.xaxisLabels.length; i++) {
+        labels.push(this.xaxisLabels[i]);
+      }
+
+      colHeight = w.globals.gridHeight / labels.length;
+      yPos = -(colHeight / 2.2);
+      var lbFormatter = w.globals.yLabelFormatters[0];
+      var ylabels = w.config.yaxis[0].labels;
+
+      if (ylabels.show) {
+        for (var _i2 = 0; _i2 <= labels.length - 1; _i2++) {
+          var label = typeof labels[_i2] === 'undefined' ? '' : labels[_i2];
+          label = lbFormatter(label);
+          var elLabel = graphics.drawText({
+            x: ylabels.offsetX - 15,
+            y: yPos + colHeight + ylabels.offsetY,
+            text: label,
+            textAnchor: this.yaxis.opposite ? 'start' : 'end',
+            foreColor: ylabels.style.color ? ylabels.style.color : ylabels.style.colors[_i2],
+            fontSize: ylabels.style.fontSize,
+            fontFamily: ylabels.style.fontFamily,
+            cssClass: 'apexcharts-yaxis-label ' + ylabels.style.cssClass
+          });
+          elYaxisTexts.add(elLabel);
+
+          if (w.config.yaxis[realIndex].labels.rotate !== 0) {
+            var labelRotatingCenter = graphics.rotateAroundCenter(elLabel.node);
+            elLabel.node.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].labels.rotate, " ").concat(labelRotatingCenter.x, " ").concat(labelRotatingCenter.y, ")"));
+          }
+
+          yPos = yPos + colHeight;
+        }
+      }
+
+      if (w.config.yaxis[0].title.text !== undefined) {
+        var elXaxisTitle = graphics.group({
+          class: 'apexcharts-yaxis-title apexcharts-xaxis-title-inversed',
+          transform: 'translate(' + translateYAxisX + ', 0)'
+        });
+        var elXAxisTitleText = graphics.drawText({
+          x: 0,
+          y: w.globals.gridHeight / 2,
+          text: w.config.yaxis[0].title.text,
+          textAnchor: 'middle',
+          foreColor: w.config.yaxis[0].title.style.color,
+          fontSize: w.config.yaxis[0].title.style.fontSize,
+          fontFamily: w.config.yaxis[0].title.style.fontFamily,
+          cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[0].title.style.cssClass
+        });
+        elXaxisTitle.add(elXAxisTitleText);
+        elYaxis.add(elXaxisTitle);
+      }
+
+      if (w.config.xaxis.axisBorder.show) {
+        var elHorzLine = graphics.drawLine(w.globals.padHorizontal + w.config.xaxis.axisBorder.offsetX, this.offY, this.xaxisBorderWidth, this.offY, this.yaxis.axisBorder.color, 0, this.xaxisBorderHeight);
+        elYaxis.add(elHorzLine);
+        this.axesUtils.drawYAxisTicks(0, labels.length, w.config.yaxis[0].axisBorder, w.config.yaxis[0].axisTicks, 0, colHeight, elYaxis);
+      }
+
+      return elYaxis;
+    }
+  }, {
+    key: "drawXaxisTicks",
+    value: function drawXaxisTicks(x1, appendToElement) {
+      var w = this.w;
+      var x2 = x1;
+      if (x1 < 0 || x1 > w.globals.gridWidth) return;
+      var y1 = this.offY + w.config.xaxis.axisTicks.offsetY;
+      var y2 = y1 + w.config.xaxis.axisTicks.height;
+
+      if (w.config.xaxis.axisTicks.show) {
+        var graphics = new Graphics(this.ctx);
+        var line = graphics.drawLine(x1 + w.config.xaxis.axisTicks.offsetX, y1 + w.config.xaxis.offsetY, x2 + w.config.xaxis.axisTicks.offsetX, y2 + w.config.xaxis.offsetY, w.config.xaxis.axisTicks.color); // we are not returning anything, but appending directly to the element pased in param
+
+        appendToElement.add(line);
+        line.node.classList.add('apexcharts-xaxis-tick');
+      }
+    }
+  }, {
+    key: "getXAxisTicksPositions",
+    value: function getXAxisTicksPositions() {
+      var w = this.w;
+      var xAxisTicksPositions = [];
+      var xCount = this.xaxisLabels.length;
+      var x1 = w.globals.padHorizontal;
+
+      if (w.globals.timelineLabels.length > 0) {
+        for (var i = 0; i < xCount; i++) {
+          x1 = this.xaxisLabels[i].position;
+          xAxisTicksPositions.push(x1);
+        }
+      } else {
+        var xCountForCategoryCharts = xCount;
+
+        for (var _i3 = 0; _i3 < xCountForCategoryCharts; _i3++) {
+          var x1Count = xCountForCategoryCharts;
+
+          if (w.globals.isXNumeric && w.config.chart.type !== 'bar') {
+            x1Count -= 1;
+          }
+
+          x1 = x1 + w.globals.gridWidth / x1Count;
+          xAxisTicksPositions.push(x1);
+        }
+      }
+
+      return xAxisTicksPositions;
+    } // to rotate x-axis labels or to put ... for longer text in xaxis
+
+  }, {
+    key: "xAxisLabelCorrections",
+    value: function xAxisLabelCorrections() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var xAxis = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g');
+      var xAxisTexts = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-texts-g text');
+      var yAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-inversed text');
+      var xAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-inversed-texts-g text');
+
+      if (w.globals.rotateXLabels || w.config.xaxis.labels.rotateAlways) {
+        for (var xat = 0; xat < xAxisTexts.length; xat++) {
+          var textRotatingCenter = graphics.rotateAroundCenter(xAxisTexts[xat]);
+          textRotatingCenter.y = textRotatingCenter.y - 1; // + tickWidth/4;
+
+          textRotatingCenter.x = textRotatingCenter.x + 1;
+          xAxisTexts[xat].setAttribute('transform', "rotate(".concat(w.config.xaxis.labels.rotate, " ").concat(textRotatingCenter.x, " ").concat(textRotatingCenter.y, ")"));
+          xAxisTexts[xat].setAttribute('text-anchor', "end");
+          var offsetHeight = 10;
+          xAxis.setAttribute('transform', "translate(0, ".concat(-offsetHeight, ")"));
+          var tSpan = xAxisTexts[xat].childNodes;
+
+          if (w.config.xaxis.labels.trim) {
+            graphics.placeTextWithEllipsis(tSpan[0], tSpan[0].textContent, w.config.xaxis.labels.maxHeight - 40);
+          }
+        }
+      } else {
+        var width = w.globals.gridWidth / w.globals.labels.length;
+
+        for (var _xat = 0; _xat < xAxisTexts.length; _xat++) {
+          var _tSpan = xAxisTexts[_xat].childNodes;
+
+          if (w.config.xaxis.labels.trim && w.config.xaxis.type !== 'datetime') {
+            graphics.placeTextWithEllipsis(_tSpan[0], _tSpan[0].textContent, width);
+          }
+        }
+      }
+
+      if (yAxisTextsInversed.length > 0) {
+        // truncate rotated y axis in bar chart (x axis)
+        var firstLabelPosX = yAxisTextsInversed[yAxisTextsInversed.length - 1].getBBox();
+        var lastLabelPosX = yAxisTextsInversed[0].getBBox();
+
+        if (firstLabelPosX.x < -20) {
+          yAxisTextsInversed[yAxisTextsInversed.length - 1].parentNode.removeChild(yAxisTextsInversed[yAxisTextsInversed.length - 1]);
+        }
+
+        if (lastLabelPosX.x + lastLabelPosX.width > w.globals.gridWidth) {
+          yAxisTextsInversed[0].parentNode.removeChild(yAxisTextsInversed[0]);
+        } // truncate rotated x axis in bar chart (y axis)
+
+
+        for (var _xat2 = 0; _xat2 < xAxisTextsInversed.length; _xat2++) {
+          graphics.placeTextWithEllipsis(xAxisTextsInversed[_xat2], xAxisTextsInversed[_xat2].textContent, w.config.yaxis[0].labels.maxWidth - parseInt(w.config.yaxis[0].title.style.fontSize) * 2 - 20);
+        }
+      }
+    } // renderXAxisBands() {
+    //   let w = this.w;
+    //   let plotBand = document.createElementNS(w.globals.SVGNS, 'rect')
+    //   w.globals.dom.elGraphical.add(plotBand)
+    // }
+
+  }]);
+
+  return XAxis;
+}();
+
+/**
+ * ApexCharts YAxis Class for drawing Y-Axis.
+ *
+ * @module YAxis
+ **/
+
+var YAxis =
+/*#__PURE__*/
+function () {
+  function YAxis(ctx) {
+    _classCallCheck(this, YAxis);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+    this.xaxisFontSize = w.config.xaxis.labels.style.fontSize;
+    this.axisFontFamily = w.config.xaxis.labels.style.fontFamily;
+    this.xaxisForeColors = w.config.xaxis.labels.style.colors;
+    this.xAxisoffX = 0;
+
+    if (w.config.xaxis.position === 'bottom') {
+      this.xAxisoffX = w.globals.gridHeight;
+    }
+
+    this.drawnLabels = [];
+    this.axesUtils = new AxesUtils(ctx);
+  }
+
+  _createClass(YAxis, [{
+    key: "drawYaxis",
+    value: function drawYaxis(realIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var yaxisFontSize = w.config.yaxis[realIndex].labels.style.fontSize;
+      var yaxisFontFamily = w.config.yaxis[realIndex].labels.style.fontFamily;
+      var elYaxis = graphics.group({
+        class: 'apexcharts-yaxis',
+        rel: realIndex,
+        transform: 'translate(' + w.globals.translateYAxisX[realIndex] + ', 0)'
+      });
+
+      if (!w.config.yaxis[realIndex].show) {
+        return elYaxis;
+      }
+
+      var elYaxisTexts = graphics.group({
+        class: 'apexcharts-yaxis-texts-g'
+      });
+      elYaxis.add(elYaxisTexts);
+      var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg height/number of ticks
+
+      var labelsDivider = w.globals.gridHeight / tickAmount + 0.1; // initial label position = 0;
+
+      var l = w.globals.translateY;
+      var lbFormatter = w.globals.yLabelFormatters[realIndex];
+      var labels = w.globals.yAxisScale[realIndex].result.slice();
+
+      if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].reversed) {
+        labels.reverse();
+      }
+
+      if (w.config.yaxis[realIndex].labels.show) {
+        for (var i = tickAmount; i >= 0; i--) {
+          var val = labels[i];
+          val = lbFormatter(val, i);
+          var xPad = w.config.yaxis[realIndex].labels.padding;
+
+          if (w.config.yaxis[realIndex].opposite && w.config.yaxis.length !== 0) {
+            xPad = xPad * -1;
+          }
+
+          var label = graphics.drawText({
+            x: xPad,
+            y: l + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY + 1,
+            text: val,
+            textAnchor: w.config.yaxis[realIndex].opposite ? 'start' : 'end',
+            fontSize: yaxisFontSize,
+            fontFamily: yaxisFontFamily,
+            foreColor: w.config.yaxis[realIndex].labels.style.color,
+            cssClass: 'apexcharts-yaxis-label ' + w.config.yaxis[realIndex].labels.style.cssClass
+          });
+          elYaxisTexts.add(label);
+          var labelRotatingCenter = graphics.rotateAroundCenter(label.node);
+
+          if (w.config.yaxis[realIndex].labels.rotate !== 0) {
+            label.node.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].labels.rotate, " ").concat(labelRotatingCenter.x, " ").concat(labelRotatingCenter.y, ")"));
+          }
+
+          l = l + labelsDivider;
+        }
+      }
+
+      if (w.config.yaxis[realIndex].title.text !== undefined) {
+        var elYaxisTitle = graphics.group({
+          class: 'apexcharts-yaxis-title'
+        });
+        var x = 0;
+
+        if (w.config.yaxis[realIndex].opposite) {
+          x = w.globals.translateYAxisX[realIndex];
+        }
+
+        var elYAxisTitleText = graphics.drawText({
+          x: x,
+          y: w.globals.gridHeight / 2 + w.globals.translateY,
+          text: w.config.yaxis[realIndex].title.text,
+          textAnchor: 'end',
+          foreColor: w.config.yaxis[realIndex].title.style.color,
+          fontSize: w.config.yaxis[realIndex].title.style.fontSize,
+          fontFamily: w.config.yaxis[realIndex].title.style.fontFamily,
+          cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[realIndex].title.style.cssClass
+        });
+        elYaxisTitle.add(elYAxisTitleText);
+        elYaxis.add(elYaxisTitle);
+      }
+
+      var axisBorder = w.config.yaxis[realIndex].axisBorder;
+
+      if (axisBorder.show) {
+        var _x = 31 + axisBorder.offsetX;
+
+        if (w.config.yaxis[realIndex].opposite) {
+          _x = -31 - axisBorder.offsetX;
+        }
+
+        var elVerticalLine = graphics.drawLine(_x, w.globals.translateY + axisBorder.offsetY - 2, _x, w.globals.gridHeight + w.globals.translateY + axisBorder.offsetY + 2, axisBorder.color);
+        elYaxis.add(elVerticalLine);
+        this.axesUtils.drawYAxisTicks(_x, tickAmount, axisBorder, w.config.yaxis[realIndex].axisTicks, realIndex, labelsDivider, elYaxis);
+      }
+
+      return elYaxis;
+    } // This actually becomes horizonal axis (for bar charts)
+
+  }, {
+    key: "drawYaxisInversed",
+    value: function drawYaxisInversed(realIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var elXaxis = graphics.group({
+        class: 'apexcharts-xaxis apexcharts-yaxis-inversed'
+      });
+      var elXaxisTexts = graphics.group({
+        class: 'apexcharts-xaxis-texts-g',
+        transform: "translate(".concat(w.globals.translateXAxisX, ", ").concat(w.globals.translateXAxisY, ")")
+      });
+      elXaxis.add(elXaxisTexts);
+      var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg width/number of ticks
+
+      var labelsDivider = w.globals.gridWidth / tickAmount + 0.1; // initial label position;
+
+      var l = labelsDivider + w.config.xaxis.labels.offsetX;
+      var lbFormatter = w.globals.xLabelFormatter;
+      var labels = w.globals.yAxisScale[realIndex].result.slice();
+      var timelineLabels = w.globals.invertedTimelineLabels;
+
+      if (timelineLabels.length > 0) {
+        this.xaxisLabels = timelineLabels.slice();
+        labels = timelineLabels.slice();
+        tickAmount = labels.length;
+      }
+
+      if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].reversed) {
+        labels.reverse();
+      }
+
+      var tl = timelineLabels.length;
+
+      if (w.config.xaxis.labels.show) {
+        for (var i = tl ? 0 : tickAmount; tl ? i < tl - 1 : i >= 0; tl ? i++ : i--) {
+          var val = labels[i];
+          val = lbFormatter(val, i);
+          var x = w.globals.gridWidth + w.globals.padHorizontal - (l - labelsDivider + w.config.xaxis.labels.offsetX);
+
+          if (timelineLabels.length) {
+            var label = this.axesUtils.getLabel(labels, timelineLabels, x, i, this.drawnLabels);
+            x = label.x;
+            val = label.text;
+            this.drawnLabels.push(label.text);
+          }
+
+          var elTick = graphics.drawText({
+            x: x,
+            y: this.xAxisoffX + w.config.xaxis.labels.offsetY + 30,
+            text: '',
+            textAnchor: 'middle',
+            foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[realIndex] : this.xaxisForeColors,
+            fontSize: this.xaxisFontSize,
+            fontFamily: this.xaxisFontFamily,
+            cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass
+          });
+          elXaxisTexts.add(elTick);
+          elTick.tspan(val);
+          var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title');
+          elTooltipTitle.textContent = val;
+          elTick.node.appendChild(elTooltipTitle);
+          l = l + labelsDivider;
+        }
+      }
+
+      if (w.config.xaxis.title.text !== undefined) {
+        var elYaxisTitle = graphics.group({
+          class: 'apexcharts-xaxis-title apexcharts-yaxis-title-inversed'
+        });
+        var elYAxisTitleText = graphics.drawText({
+          x: w.globals.gridWidth / 2,
+          y: this.xAxisoffX + parseInt(this.xaxisFontSize) + parseInt(w.config.xaxis.title.style.fontSize) + 20,
+          text: w.config.xaxis.title.text,
+          textAnchor: 'middle',
+          fontSize: w.config.xaxis.title.style.fontSize,
+          fontFamily: w.config.xaxis.title.style.fontFamily,
+          cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass
+        });
+        elYaxisTitle.add(elYAxisTitleText);
+        elXaxis.add(elYaxisTitle);
+      }
+
+      var axisBorder = w.config.yaxis[realIndex].axisBorder;
+
+      if (axisBorder.show) {
+        var elVerticalLine = graphics.drawLine(w.globals.padHorizontal + axisBorder.offsetX, 1 + axisBorder.offsetY, w.globals.padHorizontal + axisBorder.offsetX, w.globals.gridHeight + axisBorder.offsetY, axisBorder.color);
+        elXaxis.add(elVerticalLine);
+      }
+
+      return elXaxis;
+    }
+  }, {
+    key: "yAxisTitleRotate",
+    value: function yAxisTitleRotate(realIndex, yAxisOpposite) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var yAxisLabelsCoord = {
+        width: 0,
+        height: 0
+      };
+      var yAxisTitleCoord = {
+        width: 0,
+        height: 0
+      };
+      var elYAxisLabelsWrap = w.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(realIndex, "'] .apexcharts-yaxis-texts-g"));
+
+      if (elYAxisLabelsWrap !== null) {
+        yAxisLabelsCoord = elYAxisLabelsWrap.getBoundingClientRect();
+      }
+
+      var yAxisTitle = w.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(realIndex, "'] .apexcharts-yaxis-title text"));
+
+      if (yAxisTitle !== null) {
+        yAxisTitleCoord = yAxisTitle.getBoundingClientRect();
+      }
+
+      if (yAxisTitle !== null) {
+        var x = this.xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite);
+        yAxisTitle.setAttribute('x', x.xPos - (yAxisOpposite ? 10 : 0));
+      }
+
+      if (yAxisTitle !== null) {
+        var titleRotatingCenter = graphics.rotateAroundCenter(yAxisTitle);
+
+        if (!yAxisOpposite) {
+          yAxisTitle.setAttribute('transform', "rotate(-".concat(w.config.yaxis[realIndex].title.rotate, " ").concat(titleRotatingCenter.x, " ").concat(titleRotatingCenter.y, ")"));
+        } else {
+          yAxisTitle.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].title.rotate, " ").concat(titleRotatingCenter.x, " ").concat(titleRotatingCenter.y, ")"));
+        }
+      }
+    }
+  }, {
+    key: "xPaddingForYAxisTitle",
+    value: function xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite) {
+      var w = this.w;
+      var oppositeAxisCount = 0;
+      var x = 0;
+      var padd = 10;
+
+      if (w.config.yaxis[realIndex].title.text === undefined || realIndex < 0) {
+        return {
+          xPos: x,
+          padd: 0
+        };
+      }
+
+      if (yAxisOpposite) {
+        x = yAxisLabelsCoord.width + w.config.yaxis[realIndex].title.offsetX + yAxisTitleCoord.width / 2 + padd / 2;
+        oppositeAxisCount += 1;
+
+        if (oppositeAxisCount === 0) {
+          x = x - padd / 2;
+        }
+      } else {
+        x = yAxisLabelsCoord.width * -1 + w.config.yaxis[realIndex].title.offsetX + padd / 2 + yAxisTitleCoord.width / 2;
+
+        if (w.globals.isBarHorizontal) {
+          padd = 25;
+          x = yAxisLabelsCoord.width * -1 - w.config.yaxis[realIndex].title.offsetX - padd;
+        }
+      }
+
+      return {
+        xPos: x,
+        padd: padd
+      };
+    } // sets the x position of the y-axis by counting the labels width, title width and any offset
+
+  }, {
+    key: "setYAxisXPosition",
+    value: function setYAxisXPosition(yaxisLabelCoords, yTitleCoords) {
+      var w = this.w;
+      var xLeft = 0;
+      var xRight = 0;
+      var leftOffsetX = 21;
+      var rightOffsetX = 1;
+
+      if (w.config.yaxis.length > 1) {
+        this.multipleYs = true;
+      }
+
+      w.config.yaxis.map(function (yaxe, index) {
+        var shouldNotDrawAxis = w.globals.ignoreYAxisIndexes.indexOf(index) > -1 || !yaxe.show || yaxe.floating || yaxisLabelCoords[index].width === 0;
+        var axisWidth = yaxisLabelCoords[index].width + yTitleCoords[index].width;
+
+        if (!yaxe.opposite) {
+          xLeft = w.globals.translateX - leftOffsetX;
+
+          if (!shouldNotDrawAxis) {
+            leftOffsetX = leftOffsetX + axisWidth + 20;
+          }
+
+          w.globals.translateYAxisX[index] = xLeft + yaxe.labels.offsetX;
+        } else {
+          if (w.globals.isBarHorizontal) {
+            xRight = w.globals.gridWidth + w.globals.translateX - 1;
+            w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX;
+          } else {
+            xRight = w.globals.gridWidth + w.globals.translateX + rightOffsetX;
+
+            if (!shouldNotDrawAxis) {
+              rightOffsetX = rightOffsetX + axisWidth + 20;
+            }
+
+            w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX + 20;
+          }
+        }
+      });
+    }
+  }, {
+    key: "setYAxisTextAlignments",
+    value: function setYAxisTextAlignments() {
+      var w = this.w;
+      var yaxis = w.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis");
+      yaxis = Utils.listToArray(yaxis);
+      yaxis.forEach(function (y, index) {
+        var yaxe = w.config.yaxis[index]; // proceed only if user has specified alignment
+
+        if (yaxe.labels.align !== undefined) {
+          var yAxisInner = w.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(index, "'] .apexcharts-yaxis-texts-g"));
+          var yAxisTexts = w.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(index, "'] .apexcharts-yaxis-label"));
+          yAxisTexts = Utils.listToArray(yAxisTexts);
+          var rect = yAxisInner.getBoundingClientRect();
+
+          if (yaxe.labels.align === 'left') {
+            yAxisTexts.forEach(function (label, lI) {
+              label.setAttribute('text-anchor', 'start');
+            });
+
+            if (!yaxe.opposite) {
+              yAxisInner.setAttribute('transform', "translate(-".concat(rect.width, ", 0)"));
+            }
+          } else if (yaxe.labels.align === 'center') {
+            yAxisTexts.forEach(function (label, lI) {
+              label.setAttribute('text-anchor', 'middle');
+            });
+            yAxisInner.setAttribute('transform', "translate(".concat(rect.width / 2 * (!yaxe.opposite ? -1 : 1), ", 0)"));
+          } else if (yaxe.labels.align === 'right') {
+            yAxisTexts.forEach(function (label, lI) {
+              label.setAttribute('text-anchor', 'end');
+            });
+
+            if (yaxe.opposite) {
+              yAxisInner.setAttribute('transform', "translate(".concat(rect.width, ", 0)"));
+            }
+          }
+        }
+      });
+    }
+  }]);
+
+  return YAxis;
+}();
+
+var Range =
+/*#__PURE__*/
+function () {
+  function Range(ctx) {
+    _classCallCheck(this, Range);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  } // http://stackoverflow.com/questions/326679/choosing-an-attractive-linear-scale-for-a-graphs-y-axiss
+  // This routine creates the Y axis values for a graph.
+
+
+  _createClass(Range, [{
+    key: "niceScale",
+    value: function niceScale(yMin, yMax, diff) {
+      var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+      var ticks = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 10;
+      var w = this.w;
+      var NO_MIN_MAX_PROVIDED = this.w.config.yaxis[index].max === undefined && this.w.config.yaxis[index].min === undefined || this.w.config.yaxis[index].forceNiceScale;
+
+      if (yMin === Number.MIN_VALUE && yMax === 0 || !Utils.isNumber(yMin) && !Utils.isNumber(yMax) || yMin === Number.MIN_VALUE && yMax === -Number.MAX_VALUE) {
+        // when all values are 0
+        yMin = 0;
+        yMax = ticks;
+        var linearScale = this.linearScale(yMin, yMax, ticks);
+        return linearScale;
+      }
+
+      if (yMin > yMax) {
+        // if somehow due to some wrong config, user sent max less than min,
+        // adjust the min/max again
+        console.warn('yaxis.min cannot be greater than yaxis.max');
+        yMax = yMin + 0.1;
+      } else if (yMin === yMax) {
+        // If yMin and yMax are identical, then
+        // adjust the yMin and yMax values to actually
+        // make a graph. Also avoids division by zero errors.
+        yMin = yMin === 0 ? 0 : yMin - 0.5; // some small value
+
+        yMax = yMax === 0 ? 2 : yMax + 0.5; // some small value
+      } // Calculate Min amd Max graphical labels and graph
+      // increments.  The number of ticks defaults to
+      // 10 which is the SUGGESTED value.  Any tick value
+      // entered is used as a suggested value which is
+      // adjusted to be a 'pretty' value.
+      //
+      // Output will be an array of the Y axis values that
+      // encompass the Y values.
+
+
+      var result = []; // Determine Range
+
+      var range = Math.abs(yMax - yMin);
+
+      if (range < 1 && NO_MIN_MAX_PROVIDED && (w.config.chart.type === 'candlestick' || w.config.series[index].type === 'candlestick' || w.globals.isRangeData)) {
+        /* fix https://github.com/apexcharts/apexcharts.js/issues/430 */
+        yMax = yMax * 1.01;
+      } // for extremely small values - #fix #553
+
+
+      if (range < 0.00001 && NO_MIN_MAX_PROVIDED && yMax < 10) {
+        yMax = yMax * 1.05;
+      } else if (diff > 0.1 && diff < 3 && NO_MIN_MAX_PROVIDED) {
+        /* fix https://github.com/apexcharts/apexcharts.js/issues/576 */
+
+        /* fix https://github.com/apexcharts/apexcharts.js/issues/588 */
+        yMax = yMax + diff / 3;
+      }
+
+      var tiks = ticks + 1; // Adjust ticks if needed
+
+      if (tiks < 2) {
+        tiks = 2;
+      } else if (tiks > 2) {
+        tiks -= 2;
+      } // Get raw step value
+
+
+      var tempStep = range / tiks; // Calculate pretty step value
+
+      var mag = Math.floor(Utils.log10(tempStep));
+      var magPow = Math.pow(10, mag);
+      var magMsd = parseInt(tempStep / magPow);
+      var stepSize = magMsd * magPow; // build Y label array.
+      // Lower and upper bounds calculations
+
+      var lb = stepSize * Math.floor(yMin / stepSize);
+      var ub = stepSize * Math.ceil(yMax / stepSize); // Build array
+
+      var val = lb;
+
+      while (1) {
+        result.push(val);
+        val += stepSize;
+
+        if (val > ub) {
+          break;
+        }
+      }
+
+      if (NO_MIN_MAX_PROVIDED) {
+        return {
+          result: result,
+          niceMin: result[0],
+          niceMax: result[result.length - 1]
+        };
+      } else {
+        result = [];
+        var v = yMin;
+        result.push(v);
+        var valuesDivider = Math.abs(yMax - yMin) / ticks;
+
+        for (var i = 0; i <= ticks - 1; i++) {
+          v = v + valuesDivider;
+          result.push(v);
+        }
+
+        return {
+          result: result,
+          niceMin: result[0],
+          niceMax: result[result.length - 1]
+        };
+      }
+    }
+  }, {
+    key: "linearScale",
+    value: function linearScale(yMin, yMax) {
+      var ticks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
+      var range = Math.abs(yMax - yMin);
+      var step = range / ticks;
+
+      if (ticks === Number.MAX_VALUE) {
+        ticks = 10;
+        step = 1;
+      }
+
+      var result = [];
+      var v = yMin;
+
+      while (ticks >= 0) {
+        result.push(v);
+        v = v + step;
+        ticks -= 1;
+      }
+
+      return {
+        result: result,
+        niceMin: result[0],
+        niceMax: result[result.length - 1]
+      };
+    }
+  }, {
+    key: "logarithmicScale",
+    value: function logarithmicScale(index, yMin, yMax, ticks) {
+      if (yMin < 0 || yMin === Number.MIN_VALUE) yMin = 0.01;
+      var base = 10;
+      var min = Math.log(yMin) / Math.log(base);
+      var max = Math.log(yMax) / Math.log(base);
+      var range = Math.abs(yMax - yMin);
+      var step = range / ticks;
+      var result = [];
+      var v = yMin;
+
+      while (ticks >= 0) {
+        result.push(v);
+        v = v + step;
+        ticks -= 1;
+      }
+
+      var logs = result.map(function (niceNumber, i) {
+        if (niceNumber <= 0) {
+          niceNumber = 0.01;
+        } // calculate adjustment factor
+
+
+        var scale = (max - min) / (yMax - yMin);
+        var logVal = Math.pow(base, min + scale * (niceNumber - min));
+        return Math.round(logVal / Utils.roundToBase(logVal, base)) * Utils.roundToBase(logVal, base);
+      }); // Math.floor may have rounded the value to 0, revert back to 1
+
+      if (logs[0] === 0) logs[0] = 1;
+      return {
+        result: logs,
+        niceMin: logs[0],
+        niceMax: logs[logs.length - 1]
+      };
+    }
+  }, {
+    key: "setYScaleForIndex",
+    value: function setYScaleForIndex(index, minY, maxY) {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      var y = gl.isBarHorizontal ? cnf.xaxis : cnf.yaxis[index];
+
+      if (typeof gl.yAxisScale[index] === 'undefined') {
+        gl.yAxisScale[index] = [];
+      }
+
+      if (y.logarithmic) {
+        gl.allSeriesCollapsed = false;
+        gl.yAxisScale[index] = this.logarithmicScale(index, minY, maxY, y.tickAmount ? y.tickAmount : Math.floor(Math.log10(maxY)));
+      } else {
+        if (maxY === -Number.MAX_VALUE || !Utils.isNumber(maxY)) {
+          // no data in the chart. Either all series collapsed or user passed a blank array
+          gl.yAxisScale[index] = this.linearScale(0, 5, 5);
+        } else {
+          // there is some data. Turn off the allSeriesCollapsed flag
+          gl.allSeriesCollapsed = false;
+
+          if ((y.min !== undefined || y.max !== undefined) && !y.forceNiceScale) {
+            // fix https://github.com/apexcharts/apexcharts.js/issues/492
+            gl.yAxisScale[index] = this.linearScale(minY, maxY, y.tickAmount);
+          } else {
+            var diff = Math.abs(maxY - minY);
+            gl.yAxisScale[index] = this.niceScale(minY, maxY, diff, index, // fix https://github.com/apexcharts/apexcharts.js/issues/397
+            y.tickAmount ? y.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5);
+          }
+        }
+      }
+    }
+  }, {
+    key: "setMultipleYScales",
+    value: function setMultipleYScales() {
+      var _this = this;
+
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      var minYArr = gl.minYArr.concat([]);
+      var maxYArr = gl.maxYArr.concat([]);
+      var scalesIndices = []; // here, we loop through the yaxis array and find the item which has "seriesName" property
+
+      cnf.yaxis.forEach(function (yaxe, i) {
+        var index = i;
+        cnf.series.forEach(function (s, si) {
+          // if seriesName matches and that series is not collapsed, we use that scale
+          if (s.name === yaxe.seriesName && gl.collapsedSeriesIndices.indexOf(si) === -1) {
+            index = si;
+
+            if (i !== si) {
+              scalesIndices.push({
+                index: si,
+                similarIndex: i,
+                alreadyExists: true
+              });
+            } else {
+              scalesIndices.push({
+                index: si
+              });
+            }
+          }
+        });
+        var minY = minYArr[index];
+        var maxY = maxYArr[index];
+
+        _this.setYScaleForIndex(i, minY, maxY);
+      });
+      this.sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices);
+    }
+  }, {
+    key: "sameScaleInMultipleAxes",
+    value: function sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices) {
+      var _this2 = this;
+
+      var cnf = this.w.config;
+      var gl = this.w.globals; // we got the scalesIndices array in the above code, but we need to filter out the items which doesn't have same scales
+
+      var similarIndices = [];
+      scalesIndices.forEach(function (scale) {
+        if (scale.alreadyExists) {
+          if (typeof similarIndices[scale.index] === 'undefined') {
+            similarIndices[scale.index] = [];
+          }
+
+          similarIndices[scale.index].push(scale.index);
+          similarIndices[scale.index].push(scale.similarIndex);
+        }
+      });
+
+      function intersect(a, b) {
+        return a.filter(function (value) {
+          return b.indexOf(value) !== -1;
+        });
+      }
+
+      similarIndices.forEach(function (si, i) {
+        similarIndices.forEach(function (sj, j) {
+          if (i !== j) {
+            if (intersect(si, sj).length > 0) {
+              similarIndices[i] = similarIndices[i].concat(similarIndices[j]);
+            }
+          }
+        });
+      }); // then, we remove duplicates from the similarScale array
+
+      var uniqueSimilarIndices = similarIndices.map(function (item) {
+        return item.filter(function (i, pos) {
+          return item.indexOf(i) === pos;
+        });
+      }); // sort further to remove whole duplicate arrays later
+
+      var sortedIndices = uniqueSimilarIndices.map(function (s) {
+        return s.sort();
+      }); // remove undefined items
+
+      similarIndices = similarIndices.filter(function (s) {
+        return !!s;
+      });
+      var indices = sortedIndices.slice();
+      var stringIndices = indices.map(function (ind) {
+        return JSON.stringify(ind);
+      });
+      indices = indices.filter(function (ind, p) {
+        return stringIndices.indexOf(JSON.stringify(ind)) === p;
+      });
+      var sameScaleMinYArr = [];
+      var sameScaleMaxYArr = [];
+      minYArr.forEach(function (minYValue, yi) {
+        indices.forEach(function (scale, i) {
+          // we compare only the yIndex which exists in the indices array
+          if (scale.indexOf(yi) > -1) {
+            if (typeof sameScaleMinYArr[i] === 'undefined') {
+              sameScaleMinYArr[i] = [];
+              sameScaleMaxYArr[i] = [];
+            }
+
+            sameScaleMinYArr[i].push({
+              key: yi,
+              value: minYValue
+            });
+            sameScaleMaxYArr[i].push({
+              key: yi,
+              value: maxYArr[yi]
+            });
+          }
+        });
+      });
+      var sameScaleMin = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, Number.MIN_VALUE);
+      var sameScaleMax = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, -Number.MAX_VALUE);
+      sameScaleMinYArr.forEach(function (s, i) {
+        s.forEach(function (sc, j) {
+          sameScaleMin[i] = Math.min(sc.value, sameScaleMin[i]);
+        });
+      });
+      sameScaleMaxYArr.forEach(function (s, i) {
+        s.forEach(function (sc, j) {
+          sameScaleMax[i] = Math.max(sc.value, sameScaleMax[i]);
+        });
+      });
+      minYArr.forEach(function (min, i) {
+        sameScaleMaxYArr.forEach(function (s, si) {
+          var minY = sameScaleMin[si];
+          var maxY = sameScaleMax[si];
+          s.forEach(function (ind, k) {
+            if (s[k].key === i) {
+              if (cnf.yaxis[i].min !== undefined) {
+                if (typeof cnf.yaxis[i].min === 'function') {
+                  minY = cnf.yaxis[i].min(gl.minY);
+                } else {
+                  minY = cnf.yaxis[i].min;
+                }
+              }
+
+              if (cnf.yaxis[i].max !== undefined) {
+                if (typeof cnf.yaxis[i].max === 'function') {
+                  maxY = cnf.yaxis[i].max(gl.maxY);
+                } else {
+                  maxY = cnf.yaxis[i].max;
+                }
+              }
+
+              _this2.setYScaleForIndex(i, minY, maxY);
+            }
+          });
+        });
+      });
+    }
+  }, {
+    key: "autoScaleY",
+    value: function autoScaleY(ctx, e) {
+      if (!ctx) {
+        ctx = this;
+      }
+
+      var ret = [];
+      ctx.w.config.series.forEach(function (serie) {
+        var min, max;
+        var first = serie.data.find(function (x) {
+          return x[0] >= e.xaxis.min;
+        });
+        var firstValue = first[1];
+        max = min = firstValue;
+        serie.data.forEach(function (data) {
+          if (data[0] <= e.xaxis.max && data[0] >= e.xaxis.min) {
+            if (data[1] > max && data[1] !== null) max = data[1];
+            if (data[1] < min && data[1] !== null) min = data[1];
+          }
+        });
+        min *= 0.95;
+        max *= 1.05;
+        ret.push({
+          min: min,
+          max: max
+        });
+      });
+      return ret;
+    }
+  }]);
+
+  return Range;
+}();
+
+/**
+ * Range is used to generates values between min and max.
+ *
+ * @module Range
+ **/
+
+var Range$1 =
+/*#__PURE__*/
+function () {
+  function Range$$1(ctx) {
+    _classCallCheck(this, Range$$1);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.scales = new Range(ctx);
+  }
+
+  _createClass(Range$$1, [{
+    key: "init",
+    value: function init() {
+      this.setYRange();
+      this.setXRange();
+      this.setZRange();
+    }
+  }, {
+    key: "getMinYMaxY",
+    value: function getMinYMaxY(startingIndex) {
+      var lowestY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;
+      var highestY = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -Number.MAX_VALUE;
+      var len = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
+      var gl = this.w.globals;
+      var maxY = -Number.MAX_VALUE;
+      var minY = Number.MIN_VALUE;
+
+      if (len === null) {
+        len = startingIndex + 1;
+      }
+
+      var series = gl.series;
+      var seriesMin = series;
+      var seriesMax = series;
+
+      if (this.w.config.chart.type === 'candlestick') {
+        seriesMin = gl.seriesCandleL;
+        seriesMax = gl.seriesCandleH;
+      } else if (gl.isRangeData) {
+        seriesMin = gl.seriesRangeStart;
+        seriesMax = gl.seriesRangeEnd;
+      }
+
+      for (var i = startingIndex; i < len; i++) {
+        gl.dataPoints = Math.max(gl.dataPoints, series[i].length);
+
+        for (var j = 0; j < gl.series[i].length; j++) {
+          var val = series[i][j];
+
+          if (val !== null && Utils.isNumber(val)) {
+            maxY = Math.max(maxY, seriesMax[i][j]);
+            lowestY = Math.min(lowestY, seriesMin[i][j]);
+            highestY = Math.max(highestY, seriesMin[i][j]);
+
+            if (this.w.config.chart.type === 'candlestick') {
+              maxY = Math.max(maxY, gl.seriesCandleO[i][j]);
+              maxY = Math.max(maxY, gl.seriesCandleH[i][j]);
+              maxY = Math.max(maxY, gl.seriesCandleL[i][j]);
+              maxY = Math.max(maxY, gl.seriesCandleC[i][j]);
+              highestY = maxY;
+            }
+
+            if (Utils.isFloat(val)) {
+              val = Utils.noExponents(val);
+              gl.yValueDecimal = Math.max(gl.yValueDecimal, val.toString().split('.')[1].length);
+            }
+
+            if (minY > seriesMin[i][j] && seriesMin[i][j] < 0) {
+              minY = seriesMin[i][j];
+            }
+          } else {
+            gl.hasNullValues = true;
+          }
+        }
+      }
+
+      return {
+        minY: minY,
+        maxY: maxY,
+        lowestY: lowestY,
+        highestY: highestY
+      };
+    }
+  }, {
+    key: "setYRange",
+    value: function setYRange() {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      gl.maxY = -Number.MAX_VALUE;
+      gl.minY = Number.MIN_VALUE;
+      var lowestYInAllSeries = Number.MAX_VALUE;
+
+      if (gl.isMultipleYAxis) {
+        // we need to get minY and maxY for multiple y axis
+        for (var i = 0; i < gl.series.length; i++) {
+          var minYMaxYArr = this.getMinYMaxY(i, lowestYInAllSeries, null, i + 1);
+          gl.minYArr.push(minYMaxYArr.minY);
+          gl.maxYArr.push(minYMaxYArr.maxY);
+          lowestYInAllSeries = minYMaxYArr.lowestY;
+        }
+      } // and then, get the minY and maxY from all series
+
+
+      var minYMaxY = this.getMinYMaxY(0, lowestYInAllSeries, null, gl.series.length);
+      gl.minY = minYMaxY.minY;
+      gl.maxY = minYMaxY.maxY;
+      lowestYInAllSeries = minYMaxY.lowestY;
+
+      if (cnf.chart.stacked) {
+        // for stacked charts, we calculate each series's parallel values. i.e, series[0][j] + series[1][j] .... [series[i.length][j]] and get the max out of it
+        var stackedPoss = [];
+        var stackedNegs = [];
+
+        for (var j = 0; j < gl.series[gl.maxValsInArrayIndex].length; j++) {
+          var poss = 0;
+          var negs = 0;
+
+          for (var _i = 0; _i < gl.series.length; _i++) {
+            if (gl.series[_i][j] !== null && Utils.isNumber(gl.series[_i][j])) {
+              if (gl.series[_i][j] > 0) {
+                // 0.0001 fixes #185 when values are very small
+                poss = poss + parseFloat(gl.series[_i][j]) + 0.0001;
+              } else {
+                negs = negs + parseFloat(gl.series[_i][j]);
+              }
+            }
+
+            if (_i === gl.series.length - 1) {
+              // push all the totals to the array for future use
+              stackedPoss.push(poss);
+              stackedNegs.push(negs);
+            }
+          }
+        } // get the max/min out of the added parallel values
+
+
+        for (var z = 0; z < stackedPoss.length; z++) {
+          gl.maxY = Math.max(gl.maxY, stackedPoss[z]);
+          gl.minY = Math.min(gl.minY, stackedNegs[z]);
+        }
+      } // if the numbers are too big, reduce the range
+      // for eg, if number is between 100000-110000, putting 0 as the lowest value is not so good idea. So change the gl.minY for line/area/candlesticks
+
+
+      if (cnf.chart.type === 'line' || cnf.chart.type === 'area' || cnf.chart.type === 'candlestick') {
+        if (gl.minY === Number.MIN_VALUE && lowestYInAllSeries !== -Number.MAX_VALUE && lowestYInAllSeries !== gl.maxY // single value possibility
+        ) {
+            var diff = gl.maxY - lowestYInAllSeries;
+
+            if (lowestYInAllSeries >= 0 && lowestYInAllSeries <= 10) {
+              // if minY is already 0/low value, we don't want to go negatives here - so this check is essential.
+              diff = 0;
+            }
+
+            gl.minY = lowestYInAllSeries - diff * 5 / 100;
+            /* fix https://github.com/apexcharts/apexcharts.js/issues/426 */
+
+            gl.maxY = gl.maxY + diff * 5 / 100;
+          }
+      }
+
+      cnf.yaxis.map(function (yaxe, index) {
+        // override all min/max values by user defined values (y axis)
+        if (yaxe.max !== undefined) {
+          if (typeof yaxe.max === 'number') {
+            gl.maxYArr[index] = yaxe.max;
+          } else if (typeof yaxe.max === 'function') {
+            gl.maxYArr[index] = yaxe.max(gl.maxY);
+          } // gl.maxY is for single y-axis chart, it will be ignored in multi-yaxis
+
+
+          gl.maxY = gl.maxYArr[index];
+        }
+
+        if (yaxe.min !== undefined) {
+          if (typeof yaxe.min === 'number') {
+            gl.minYArr[index] = yaxe.min;
+          } else if (typeof yaxe.min === 'function') {
+            gl.minYArr[index] = yaxe.min(gl.minY);
+          } // gl.minY is for single y-axis chart, it will be ignored in multi-yaxis
+
+
+          gl.minY = gl.minYArr[index];
+        }
+      }); // for horizontal bar charts, we need to check xaxis min/max as user may have specified there
+
+      if (gl.isBarHorizontal) {
+        if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') {
+          gl.minY = cnf.xaxis.min;
+        }
+
+        if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') {
+          gl.maxY = cnf.xaxis.max;
+        }
+      } // for multi y-axis we need different scales for each
+
+
+      if (gl.isMultipleYAxis) {
+        this.scales.setMultipleYScales();
+        gl.minY = lowestYInAllSeries;
+        gl.yAxisScale.forEach(function (scale, i) {
+          gl.minYArr[i] = scale.niceMin;
+          gl.maxYArr[i] = scale.niceMax;
+        });
+      } else {
+        this.scales.setYScaleForIndex(0, gl.minY, gl.maxY);
+        gl.minY = gl.yAxisScale[0].niceMin;
+        gl.maxY = gl.yAxisScale[0].niceMax;
+        gl.minYArr[0] = gl.yAxisScale[0].niceMin;
+        gl.maxYArr[0] = gl.yAxisScale[0].niceMax;
+      }
+
+      return {
+        minY: gl.minY,
+        maxY: gl.maxY,
+        minYArr: gl.minYArr,
+        maxYArr: gl.maxYArr
+      };
+    }
+  }, {
+    key: "setXRange",
+    value: function setXRange() {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      var isXNumeric = cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'datetime' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided || gl.noLabelsProvided || gl.isXNumeric; // minX maxX starts here
+
+      if (gl.isXNumeric) {
+        for (var i = 0; i < gl.series.length; i++) {
+          if (gl.labels[i]) {
+            for (var j = 0; j < gl.labels[i].length; j++) {
+              if (gl.labels[i][j] !== null && Utils.isNumber(gl.labels[i][j])) {
+                gl.maxX = Math.max(gl.maxX, gl.labels[i][j]);
+                gl.initialmaxX = Math.max(gl.maxX, gl.labels[i][j]);
+                gl.minX = Math.min(gl.minX, gl.labels[i][j]);
+                gl.initialminX = Math.min(gl.minX, gl.labels[i][j]);
+              }
+            }
+          }
+        }
+      }
+
+      if (gl.noLabelsProvided) {
+        if (cnf.xaxis.categories.length === 0) {
+          gl.maxX = gl.labels[gl.labels.length - 1];
+          gl.initialmaxX = gl.labels[gl.labels.length - 1];
+          gl.minX = 1;
+          gl.initialminX = 1;
+        }
+      } // for numeric xaxis, we need to adjust some padding left and right for bar charts
+
+
+      if (gl.comboChartsHasBars || cnf.chart.type === 'candlestick' || cnf.chart.type === 'bar' && gl.isXNumeric) {
+        if (cnf.xaxis.type !== 'category' || gl.isXNumeric) {
+          var minX = gl.minX - gl.svgWidth / gl.dataPoints * (Math.abs(gl.maxX - gl.minX) / gl.svgWidth) / 2;
+          gl.minX = minX;
+          gl.initialminX = minX;
+          var maxX = gl.maxX + gl.svgWidth / gl.dataPoints * (Math.abs(gl.maxX - gl.minX) / gl.svgWidth) / 2;
+          gl.maxX = maxX;
+          gl.initialmaxX = maxX;
+        }
+      }
+
+      if ((gl.isXNumeric || gl.noLabelsProvided) && (!cnf.xaxis.convertedCatToNumeric || gl.dataFormatXNumeric)) {
+        var ticks;
+
+        if (cnf.xaxis.tickAmount === undefined) {
+          ticks = Math.round(gl.svgWidth / 150); // no labels provided and total number of dataPoints is less than 20
+
+          if (cnf.xaxis.type === 'numeric' && gl.dataPoints < 20) {
+            ticks = gl.dataPoints - 1;
+          } // this check is for when ticks exceeds total datapoints and that would result in duplicate labels
+
+
+          if (ticks > gl.dataPoints && gl.dataPoints !== 0) {
+            ticks = gl.dataPoints - 1;
+          }
+        } else if (cnf.xaxis.tickAmount === 'dataPoints') {
+          ticks = gl.series[gl.maxValsInArrayIndex].length - 1;
+        } else {
+          ticks = cnf.xaxis.tickAmount;
+        } // override all min/max values by user defined values (x axis)
+
+
+        if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') {
+          gl.maxX = cnf.xaxis.max;
+        }
+
+        if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') {
+          gl.minX = cnf.xaxis.min;
+        } // if range is provided, adjust the new minX
+
+
+        if (cnf.xaxis.range !== undefined) {
+          gl.minX = gl.maxX - cnf.xaxis.range;
+        }
+
+        if (gl.minX !== Number.MAX_VALUE && gl.maxX !== -Number.MAX_VALUE) {
+          gl.xAxisScale = this.scales.linearScale(gl.minX, gl.maxX, ticks);
+        } else {
+          gl.xAxisScale = this.scales.linearScale(1, ticks, ticks);
+
+          if (gl.noLabelsProvided && gl.labels.length > 0) {
+            gl.xAxisScale = this.scales.linearScale(1, gl.labels.length, ticks - 1); // this is the only place seriesX is again mutated
+
+            gl.seriesX = gl.labels.slice();
+          }
+        } // we will still store these labels as the count for this will be different (to draw grid and labels placement)
+
+
+        if (isXNumeric) {
+          gl.labels = gl.xAxisScale.result.slice();
+        }
+      }
+
+      if (gl.minX === gl.maxX) {
+        // single dataPoint
+        if (cnf.xaxis.type === 'datetime') {
+          var newMinX = new Date(gl.minX);
+          newMinX.setDate(newMinX.getDate() - 2);
+          gl.minX = new Date(newMinX).getTime();
+          var newMaxX = new Date(gl.maxX);
+          newMaxX.setDate(newMaxX.getDate() + 2);
+          gl.maxX = new Date(newMaxX).getTime();
+        } else if (cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided) {
+          gl.minX = gl.minX - 2;
+          gl.maxX = gl.maxX + 2;
+        }
+      }
+
+      if (gl.isXNumeric) {
+        // get the least x diff if numeric x axis is present
+        gl.seriesX.forEach(function (sX, i) {
+          sX.forEach(function (s, j) {
+            if (j > 0) {
+              var xDiff = s - gl.seriesX[i][j - 1];
+              gl.minXDiff = Math.min(xDiff, gl.minXDiff);
+            }
+          });
+        });
+        this.calcMinXDiffForTinySeries();
+      }
+
+      return {
+        minX: gl.minX,
+        maxX: gl.maxX
+      };
+    }
+  }, {
+    key: "calcMinXDiffForTinySeries",
+    value: function calcMinXDiffForTinySeries() {
+      var w = this.w;
+      var len = w.globals.labels.length;
+
+      if (w.globals.labels.length === 1) {
+        w.globals.minXDiff = (w.globals.maxX - w.globals.minX) / len / 3;
+      } else {
+        if (w.globals.minXDiff === Number.MAX_VALUE) {
+          // possibly a single dataPoint (fixes react-apexcharts/issue#34)
+          if (w.globals.timelineLabels.length > 0) {
+            len = w.globals.timelineLabels.length;
+          }
+
+          if (len < 3) {
+            len = 3;
+          }
+
+          w.globals.minXDiff = (w.globals.maxX - w.globals.minX) / len;
+        }
+      }
+
+      return w.globals.minXDiff;
+    }
+  }, {
+    key: "setZRange",
+    value: function setZRange() {
+      var gl = this.w.globals; // minZ, maxZ starts here
+
+      if (gl.isDataXYZ) {
+        for (var i = 0; i < gl.series.length; i++) {
+          if (typeof gl.seriesZ[i] !== 'undefined') {
+            for (var j = 0; j < gl.seriesZ[i].length; j++) {
+              if (gl.seriesZ[i][j] !== null && Utils.isNumber(gl.seriesZ[i][j])) {
+                gl.maxZ = Math.max(gl.maxZ, gl.seriesZ[i][j]);
+                gl.minZ = Math.min(gl.minZ, gl.seriesZ[i][j]);
+              }
+            }
+          }
+        }
+      }
+    }
+  }]);
+
+  return Range$$1;
+}();
+
+/**
+ * ApexCharts Series Class for interation with the Series of the chart.
+ *
+ * @module Series
+ **/
+
+var Series =
+/*#__PURE__*/
+function () {
+  function Series(ctx) {
+    _classCallCheck(this, Series);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Series, [{
+    key: "getAllSeriesEls",
+    value: function getAllSeriesEls() {
+      return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series");
+    }
+  }, {
+    key: "getSeriesByName",
+    value: function getSeriesByName(seriesName) {
+      return this.w.globals.dom.baseEl.querySelector("[seriesName='".concat(Utils.escapeString(seriesName), "']"));
+    }
+  }, {
+    key: "addCollapsedClassToSeries",
+    value: function addCollapsedClassToSeries(elSeries, index) {
+      var w = this.w;
+
+      function iterateOnAllCollapsedSeries(series) {
+        for (var cs = 0; cs < series.length; cs++) {
+          if (series[cs].index === index) {
+            elSeries.node.classList.add('apexcharts-series-collapsed');
+          }
+        }
+      }
+
+      iterateOnAllCollapsedSeries(w.globals.collapsedSeries);
+      iterateOnAllCollapsedSeries(w.globals.ancillaryCollapsedSeries);
+    }
+  }, {
+    key: "toggleSeriesOnHover",
+    value: function toggleSeriesOnHover(e, targetElement) {
+      var w = this.w;
+      var allSeriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series");
+
+      if (e.type === 'mousemove') {
+        var seriesCnt = parseInt(targetElement.getAttribute('rel')) - 1;
+        var seriesEl = null;
+
+        if (w.globals.axisCharts || w.config.chart.type === 'radialBar') {
+          if (w.globals.axisCharts) {
+            seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesCnt, "']"));
+          } else {
+            seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "']"));
+          }
+        } else {
+          seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "'] path"));
+        }
+
+        for (var se = 0; se < allSeriesEls.length; se++) {
+          allSeriesEls[se].classList.add('legend-mouseover-inactive');
+        }
+
+        if (seriesEl !== null) {
+          if (!w.globals.axisCharts) {
+            seriesEl.parentNode.classList.remove('legend-mouseover-inactive');
+          }
+
+          seriesEl.classList.remove('legend-mouseover-inactive');
+        }
+      } else if (e.type === 'mouseout') {
+        for (var _se = 0; _se < allSeriesEls.length; _se++) {
+          allSeriesEls[_se].classList.remove('legend-mouseover-inactive');
+        }
+      }
+    }
+  }, {
+    key: "highlightRangeInSeries",
+    value: function highlightRangeInSeries(e, targetElement) {
+      var w = this.w;
+      var allHeatMapElements = w.globals.dom.baseEl.querySelectorAll('.apexcharts-heatmap-rect');
+
+      var allActive = function allActive() {
+        for (var i = 0; i < allHeatMapElements.length; i++) {
+          allHeatMapElements[i].classList.remove('legend-mouseover-inactive');
+        }
+      };
+
+      var allInactive = function allInactive() {
+        for (var i = 0; i < allHeatMapElements.length; i++) {
+          allHeatMapElements[i].classList.add('legend-mouseover-inactive');
+        }
+      };
+
+      var selectedActive = function selectedActive(range) {
+        for (var i = 0; i < allHeatMapElements.length; i++) {
+          var val = parseInt(allHeatMapElements[i].getAttribute('val'));
+
+          if (val >= range.from && val <= range.to) {
+            allHeatMapElements[i].classList.remove('legend-mouseover-inactive');
+          }
+        }
+      };
+
+      if (e.type === 'mousemove') {
+        var seriesCnt = parseInt(targetElement.getAttribute('rel')) - 1;
+        allActive();
+        allInactive();
+        var range = w.config.plotOptions.heatmap.colorScale.ranges[seriesCnt];
+        selectedActive(range);
+      } else if (e.type === 'mouseout') {
+        allActive();
+      }
+    }
+  }, {
+    key: "getActiveSeriesIndex",
+    value: function getActiveSeriesIndex() {
+      var w = this.w;
+      var activeIndex = 0;
+
+      if (w.globals.series.length > 1) {
+        // active series flag is required to know if user has not deactivated via legend click
+        var firstActiveSeriesIndex = w.globals.series.map(function (series, index) {
+          if (series.length > 0 && w.config.series[index].type !== 'bar' && w.config.series[index].type !== 'column') {
+            return index;
+          } else {
+            return -1;
+          }
+        });
+
+        for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+          if (firstActiveSeriesIndex[a] !== -1) {
+            activeIndex = firstActiveSeriesIndex[a];
+            break;
+          }
+        }
+      }
+
+      return activeIndex;
+    }
+  }, {
+    key: "getActiveConfigSeriesIndex",
+    value: function getActiveConfigSeriesIndex() {
+      var w = this.w;
+      var activeIndex = 0;
+
+      if (w.config.series.length > 1) {
+        // active series flag is required to know if user has not deactivated via legend click
+        var firstActiveSeriesIndex = w.config.series.map(function (series, index) {
+          if (series.data && series.data.length > 0) {
+            return index;
+          } else {
+            return -1;
+          }
+        });
+
+        for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+          if (firstActiveSeriesIndex[a] !== -1) {
+            activeIndex = firstActiveSeriesIndex[a];
+            break;
+          }
+        }
+      }
+
+      return activeIndex;
+    }
+  }, {
+    key: "getPreviousPaths",
+    value: function getPreviousPaths() {
+      var w = this.w;
+      w.globals.previousPaths = [];
+
+      function pushPaths(seriesEls, i, type) {
+        var paths = seriesEls[i].childNodes;
+        var dArr = {
+          type: type,
+          paths: [],
+          realIndex: seriesEls[i].getAttribute('data:realIndex')
+        };
+
+        for (var j = 0; j < paths.length; j++) {
+          if (paths[j].hasAttribute('pathTo')) {
+            var d = paths[j].getAttribute('pathTo');
+            dArr.paths.push({
+              d: d
+            });
+          }
+        }
+
+        w.globals.previousPaths.push(dArr);
+      }
+
+      var linePaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-line-series .apexcharts-series');
+
+      if (linePaths.length > 0) {
+        for (var p = linePaths.length - 1; p >= 0; p--) {
+          pushPaths(linePaths, p, 'line');
+        }
+      }
+
+      var areapaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-area-series .apexcharts-series');
+
+      if (areapaths.length > 0) {
+        for (var i = areapaths.length - 1; i >= 0; i--) {
+          pushPaths(areapaths, i, 'area');
+        }
+      }
+
+      var barPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-series .apexcharts-series');
+
+      if (barPaths.length > 0) {
+        for (var _p = 0; _p < barPaths.length; _p++) {
+          pushPaths(barPaths, _p, 'bar');
+        }
+      }
+
+      var candlestickPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-candlestick-series .apexcharts-series');
+
+      if (candlestickPaths.length > 0) {
+        for (var _p2 = 0; _p2 < candlestickPaths.length; _p2++) {
+          pushPaths(candlestickPaths, _p2, 'candlestick');
+        }
+      }
+
+      var radarPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-radar-series .apexcharts-series');
+
+      if (radarPaths.length > 0) {
+        for (var _p3 = 0; _p3 < radarPaths.length; _p3++) {
+          pushPaths(radarPaths, _p3, 'radar');
+        }
+      }
+
+      var bubblepaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bubble-series .apexcharts-series');
+
+      if (bubblepaths.length > 0) {
+        for (var s = 0; s < bubblepaths.length; s++) {
+          var seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-bubble-series .apexcharts-series[data\\:realIndex='".concat(s, "'] circle"));
+          var dArr = [];
+
+          for (var _i = 0; _i < seriesEls.length; _i++) {
+            dArr.push({
+              x: seriesEls[_i].getAttribute('cx'),
+              y: seriesEls[_i].getAttribute('cy'),
+              r: seriesEls[_i].getAttribute('r')
+            });
+          }
+
+          w.globals.previousPaths.push(dArr);
+        }
+      }
+
+      var scatterpaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-scatter-series .apexcharts-series');
+
+      if (scatterpaths.length > 0) {
+        for (var _s = 0; _s < scatterpaths.length; _s++) {
+          var _seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-scatter-series .apexcharts-series[data\\:realIndex='".concat(_s, "'] circle"));
+
+          var _dArr = [];
+
+          for (var _i2 = 0; _i2 < _seriesEls.length; _i2++) {
+            _dArr.push({
+              x: _seriesEls[_i2].getAttribute('cx'),
+              y: _seriesEls[_i2].getAttribute('cy'),
+              r: _seriesEls[_i2].getAttribute('r')
+            });
+          }
+
+          w.globals.previousPaths.push(_dArr);
+        }
+      }
+
+      var heatmapColors = w.globals.dom.baseEl.querySelectorAll('.apexcharts-heatmap .apexcharts-series');
+
+      if (heatmapColors.length > 0) {
+        for (var h = 0; h < heatmapColors.length; h++) {
+          var _seriesEls2 = w.globals.dom.baseEl.querySelectorAll(".apexcharts-heatmap .apexcharts-series[data\\:realIndex='".concat(h, "'] rect"));
+
+          var _dArr2 = [];
+
+          for (var _i3 = 0; _i3 < _seriesEls2.length; _i3++) {
+            _dArr2.push({
+              color: _seriesEls2[_i3].getAttribute('color')
+            });
+          }
+
+          w.globals.previousPaths.push(_dArr2);
+        }
+      }
+
+      if (!w.globals.axisCharts) {
+        // for non-axis charts (i.e., circular charts, pathFrom is not usable. We need whole series)
+        w.globals.previousPaths = w.globals.series;
+      }
+    }
+  }, {
+    key: "handleNoData",
+    value: function handleNoData() {
+      var w = this.w;
+      var me = this;
+      var noDataOpts = w.config.noData;
+      var graphics = new Graphics(me.ctx);
+      var x = w.globals.svgWidth / 2;
+      var y = w.globals.svgHeight / 2;
+      var textAnchor = 'middle';
+      w.globals.noData = true;
+      w.globals.animationEnded = true;
+
+      if (noDataOpts.align === 'left') {
+        x = 10;
+        textAnchor = 'start';
+      } else if (noDataOpts.align === 'right') {
+        x = w.globals.svgWidth - 10;
+        textAnchor = 'end';
+      }
+
+      if (noDataOpts.verticalAlign === 'top') {
+        y = 50;
+      } else if (noDataOpts.verticalAlign === 'bottom') {
+        y = w.globals.svgHeight - 50;
+      }
+
+      x = x + noDataOpts.offsetX;
+      y = y + parseInt(noDataOpts.style.fontSize) + 2;
+
+      if (noDataOpts.text !== undefined && noDataOpts.text !== '') {
+        var titleText = graphics.drawText({
+          x: x,
+          y: y,
+          text: noDataOpts.text,
+          textAnchor: textAnchor,
+          fontSize: noDataOpts.style.fontSize,
+          fontFamily: noDataOpts.style.fontFamily,
+          foreColor: noDataOpts.style.color,
+          opacity: 1,
+          class: 'apexcharts-text-nodata'
+        });
+        titleText.node.setAttribute('class', 'apexcharts-title-text');
+        w.globals.dom.Paper.add(titleText);
+      }
+    } // When user clicks on legends, the collapsed series is filled with [0,0,0,...,0]
+    // This is because we don't want to alter the series' length as it is used at many places
+
+  }, {
+    key: "setNullSeriesToZeroValues",
+    value: function setNullSeriesToZeroValues(series) {
+      var w = this.w;
+
+      for (var sl = 0; sl < series.length; sl++) {
+        if (series[sl].length === 0) {
+          for (var j = 0; j < series[w.globals.maxValsInArrayIndex].length; j++) {
+            series[sl].push(0);
+          }
+        }
+      }
+
+      return series;
+    }
+  }, {
+    key: "hasAllSeriesEqualX",
+    value: function hasAllSeriesEqualX() {
+      var equalLen = true;
+      var w = this.w;
+      var filteredSerX = this.filteredSeriesX();
+
+      for (var i = 0; i < filteredSerX.length - 1; i++) {
+        if (filteredSerX[i][0] !== filteredSerX[i + 1][0]) {
+          equalLen = false;
+          break;
+        }
+      }
+
+      w.globals.allSeriesHasEqualX = equalLen;
+      return equalLen;
+    }
+  }, {
+    key: "filteredSeriesX",
+    value: function filteredSeriesX() {
+      var w = this.w;
+      var filteredSeriesX = w.globals.seriesX.map(function (ser, index) {
+        if (ser.length > 0) {
+          return ser;
+        } else {
+          return [];
+        }
+      });
+      return filteredSeriesX;
+    }
+  }]);
+
+  return Series;
+}();
+
+/**
+ * ApexCharts Dimensions Class for calculating rects of all elements that are drawn and will be drawn.
+ *
+ * @module Dimensions
+ **/
+
+var Dimensions =
+/*#__PURE__*/
+function () {
+  function Dimensions(ctx) {
+    _classCallCheck(this, Dimensions);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.lgRect = {};
+    this.yAxisWidth = 0;
+    this.xAxisHeight = 0;
+    this.isSparkline = this.w.config.chart.sparkline.enabled;
+    this.xPadRight = 0;
+    this.xPadLeft = 0;
+  }
+  /**
+   * @memberof Dimensions
+   * @param {object} w - chart context
+   **/
+
+
+  _createClass(Dimensions, [{
+    key: "plotCoords",
+    value: function plotCoords() {
+      var w = this.w;
+      var gl = w.globals;
+      var lgRect = this.getLegendsRect();
+
+      if (gl.axisCharts) {
+        // for line / area / scatter / column
+        this.setGridCoordsForAxisCharts(lgRect);
+      } else {
+        // for pie / donuts / circle
+        this.setGridCoordsForNonAxisCharts(lgRect);
+      }
+
+      this.titleSubtitleOffset(); // after calculating everything, apply padding set by user
+
+      gl.gridHeight = gl.gridHeight - w.config.grid.padding.top - w.config.grid.padding.bottom;
+      gl.gridWidth = gl.gridWidth - w.config.grid.padding.left - w.config.grid.padding.right - this.xPadRight - this.xPadLeft;
+      gl.translateX = gl.translateX + w.config.grid.padding.left + this.xPadLeft;
+      gl.translateY = gl.translateY + w.config.grid.padding.top;
+    }
+  }, {
+    key: "conditionalChecksForAxisCoords",
+    value: function conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords) {
+      var w = this.w;
+      this.xAxisHeight = (xaxisLabelCoords.height + xtitleCoords.height) * w.globals.LINE_HEIGHT_RATIO + 15;
+      this.xAxisWidth = xaxisLabelCoords.width;
+
+      if (this.xAxisHeight - xtitleCoords.height > w.config.xaxis.labels.maxHeight) {
+        this.xAxisHeight = w.config.xaxis.labels.maxHeight;
+      }
+
+      if (w.config.xaxis.labels.minHeight && this.xAxisHeight < w.config.xaxis.labels.minHeight) {
+        this.xAxisHeight = w.config.xaxis.labels.minHeight;
+      }
+
+      if (w.config.xaxis.floating) {
+        this.xAxisHeight = 0;
+      }
+
+      if (!w.globals.isBarHorizontal) {
+        this.yAxisWidth = this.getTotalYAxisWidth();
+      } else {
+        this.yAxisWidth = w.globals.yLabelsCoords[0].width + w.globals.yTitleCoords[0].width + 15;
+      }
+
+      var minYAxisWidth = 0;
+      var maxYAxisWidth = 0;
+      w.config.yaxis.forEach(function (y) {
+        minYAxisWidth += y.labels.minWidth;
+        maxYAxisWidth += y.labels.maxWidth;
+      });
+
+      if (this.yAxisWidth < minYAxisWidth) {
+        this.yAxisWidth = minYAxisWidth;
+      }
+
+      if (this.yAxisWidth > maxYAxisWidth) {
+        this.yAxisWidth = maxYAxisWidth;
+      }
+    }
+  }, {
+    key: "setGridCoordsForAxisCharts",
+    value: function setGridCoordsForAxisCharts(lgRect) {
+      var w = this.w;
+      var gl = w.globals;
+      var yaxisLabelCoords = this.getyAxisLabelsCoords();
+      var xaxisLabelCoords = this.getxAxisLabelsCoords();
+      var yTitleCoords = this.getyAxisTitleCoords();
+      var xtitleCoords = this.getxAxisTitleCoords();
+      w.globals.yLabelsCoords = [];
+      w.globals.yTitleCoords = [];
+      w.config.yaxis.map(function (yaxe, index) {
+        // store the labels and titles coords in global vars
+        w.globals.yLabelsCoords.push({
+          width: yaxisLabelCoords[index].width,
+          index: index
+        });
+        w.globals.yTitleCoords.push({
+          width: yTitleCoords[index].width,
+          index: index
+        });
+      });
+      this.conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords);
+      gl.translateXAxisY = w.globals.rotateXLabels ? this.xAxisHeight / 8 : -4;
+      gl.translateXAxisX = w.globals.rotateXLabels && w.globals.isXNumeric && w.config.xaxis.labels.rotate <= -45 ? -this.xAxisWidth / 4 : 0;
+
+      if (w.globals.isBarHorizontal) {
+        gl.rotateXLabels = false;
+        gl.translateXAxisY = -1 * (parseInt(w.config.xaxis.labels.style.fontSize) / 1.5);
+      }
+
+      gl.translateXAxisY = gl.translateXAxisY + w.config.xaxis.labels.offsetY;
+      gl.translateXAxisX = gl.translateXAxisX + w.config.xaxis.labels.offsetX;
+      var yAxisWidth = this.yAxisWidth;
+      var xAxisHeight = this.xAxisHeight;
+      gl.xAxisLabelsHeight = this.xAxisHeight;
+      gl.xAxisHeight = this.xAxisHeight;
+      var translateY = 10;
+
+      if (!w.config.grid.show || w.config.chart.type === 'radar') {
+        yAxisWidth = 0;
+        xAxisHeight = 35;
+      }
+
+      if (this.isSparkline) {
+        lgRect = {
+          height: 0,
+          width: 0
+        };
+        xAxisHeight = 0;
+        yAxisWidth = 0;
+        translateY = 0;
+      }
+
+      this.additionalPaddingXLabels(xaxisLabelCoords);
+
+      switch (w.config.legend.position) {
+        case 'bottom':
+          gl.translateY = translateY;
+          gl.translateX = yAxisWidth;
+          gl.gridHeight = gl.svgHeight - lgRect.height - xAxisHeight - (!this.isSparkline ? w.globals.rotateXLabels ? 10 : 15 : 0);
+          gl.gridWidth = gl.svgWidth - yAxisWidth;
+          break;
+
+        case 'top':
+          gl.translateY = lgRect.height + translateY;
+          gl.translateX = yAxisWidth;
+          gl.gridHeight = gl.svgHeight - lgRect.height - xAxisHeight - (!this.isSparkline ? w.globals.rotateXLabels ? 10 : 15 : 0);
+          gl.gridWidth = gl.svgWidth - yAxisWidth;
+          break;
+
+        case 'left':
+          gl.translateY = translateY;
+          gl.translateX = lgRect.width + yAxisWidth;
+          gl.gridHeight = gl.svgHeight - xAxisHeight - 12;
+          gl.gridWidth = gl.svgWidth - lgRect.width - yAxisWidth;
+          break;
+
+        case 'right':
+          gl.translateY = translateY;
+          gl.translateX = yAxisWidth;
+          gl.gridHeight = gl.svgHeight - xAxisHeight - 12;
+          gl.gridWidth = gl.svgWidth - lgRect.width - yAxisWidth - 5;
+          break;
+
+        default:
+          throw new Error('Legend position not supported');
+      }
+
+      this.setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords); // after drawing everything, set the Y axis positions
+
+      var objyAxis = new YAxis(this.ctx);
+      objyAxis.setYAxisXPosition(yaxisLabelCoords, yTitleCoords);
+    }
+  }, {
+    key: "setGridCoordsForNonAxisCharts",
+    value: function setGridCoordsForNonAxisCharts(lgRect) {
+      var w = this.w;
+      var gl = w.globals;
+      var xPad = 0;
+
+      if (w.config.legend.show && !w.config.legend.floating) {
+        xPad = 20;
+      }
+
+      var offY = 10;
+      var offX = 0;
+
+      if (w.config.chart.type === 'pie' || w.config.chart.type === 'donut') {
+        offY = offY + w.config.plotOptions.pie.offsetY;
+        offX = offX + w.config.plotOptions.pie.offsetX;
+      } else if (w.config.chart.type === 'radialBar') {
+        offY = offY + w.config.plotOptions.radialBar.offsetY;
+        offX = offX + w.config.plotOptions.radialBar.offsetX;
+      }
+
+      if (!w.config.legend.show) {
+        gl.gridHeight = gl.svgHeight - 35;
+        gl.gridWidth = gl.gridHeight;
+        gl.translateY = offY - 10;
+        gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+        return;
+      }
+
+      switch (w.config.legend.position) {
+        case 'bottom':
+          gl.gridHeight = gl.svgHeight - lgRect.height - 35;
+          gl.gridWidth = gl.gridHeight;
+          gl.translateY = offY - 20;
+          gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+          break;
+
+        case 'top':
+          gl.gridHeight = gl.svgHeight - lgRect.height - 35;
+          gl.gridWidth = gl.gridHeight;
+          gl.translateY = lgRect.height + offY;
+          gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+          break;
+
+        case 'left':
+          gl.gridWidth = gl.svgWidth - lgRect.width - xPad;
+          gl.gridHeight = gl.gridWidth;
+          gl.translateY = offY;
+          gl.translateX = offX + lgRect.width + xPad;
+          break;
+
+        case 'right':
+          gl.gridWidth = gl.svgWidth - lgRect.width - xPad - 5;
+          gl.gridHeight = gl.gridWidth;
+          gl.translateY = offY;
+          gl.translateX = offX + 10;
+          break;
+
+        default:
+          throw new Error('Legend position not supported');
+      }
+    }
+  }, {
+    key: "setGridXPosForDualYAxis",
+    value: function setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords) {
+      var w = this.w;
+      w.config.yaxis.map(function (yaxe, index) {
+        if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1 && !w.config.yaxis[index].floating && w.config.yaxis[index].show) {
+          if (yaxe.opposite) {
+            w.globals.translateX = w.globals.translateX - (yaxisLabelCoords[index].width + yTitleCoords[index].width) - parseInt(w.config.yaxis[index].labels.style.fontSize) / 1.2 - 12;
+          }
+        }
+      });
+    } // Sometimes, the last labels gets cropped in category/numeric xaxis.
+    // Hence, we add some additional padding based on the label length to avoid the last label being cropped.
+    // NOTE: datetime x-axis won't have any effect with this as we don't know the label length there due to many constraints.
+
+  }, {
+    key: "additionalPaddingXLabels",
+    value: function additionalPaddingXLabels(xaxisLabelCoords) {
+      var _this = this;
+
+      var w = this.w;
+
+      if (w.config.xaxis.type === 'category' && w.globals.isBarHorizontal || w.config.xaxis.type === 'numeric' || w.config.xaxis.type === 'datetime') {
+        var rightPad = function rightPad(labels) {
+          if (_this.timescaleLabels) {
+            // for timeline labels, we take the last label and check if it exceeds gridWidth
+            var lastTimescaleLabel = _this.timescaleLabels[_this.timescaleLabels.length - 1];
+            var labelPosition = lastTimescaleLabel.position + labels.width;
+
+            if (labelPosition > w.globals.gridWidth) {
+              w.globals.skipLastTimelinelabel = true;
+            } else {
+              // we have to make it false again in case of zooming/panning
+              w.globals.skipLastTimelinelabel = false;
+            }
+          } else if (w.config.xaxis.type !== 'datetime') {
+            if (w.config.grid.padding.right < labels.width) {
+              _this.xPadRight = labels.width / 2 + 1;
+            }
+          }
+        };
+
+        var leftPad = function leftPad(labels) {
+          if (w.config.grid.padding.left < labels.width) {
+            _this.xPadLeft = labels.width / 2 + 1;
+          }
+        };
+
+        var isXNumeric = w.globals.isXNumeric;
+        w.config.yaxis.forEach(function (yaxe, i) {
+          var shouldPad = !yaxe.show || yaxe.floating || w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || isXNumeric || yaxe.opposite && w.globals.isBarHorizontal;
+
+          if (shouldPad) {
+            if (isXNumeric && w.globals.isMultipleYAxis && w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || w.globals.isBarHorizontal && yaxe.opposite) {
+              leftPad(xaxisLabelCoords);
+            }
+
+            if (!w.globals.isBarHorizontal && yaxe.opposite && w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || isXNumeric && !w.globals.isMultipleYAxis) {
+              rightPad(xaxisLabelCoords);
+            }
+          }
+        });
+      }
+    }
+  }, {
+    key: "titleSubtitleOffset",
+    value: function titleSubtitleOffset() {
+      var w = this.w;
+      var gl = w.globals;
+      var gridShrinkOffset = this.isSparkline || !w.globals.axisCharts ? 0 : 10;
+
+      if (w.config.title.text !== undefined) {
+        gridShrinkOffset += w.config.title.margin;
+      } else {
+        gridShrinkOffset += this.isSparkline || !w.globals.axisCharts ? 0 : 5;
+      }
+
+      if (w.config.subtitle.text !== undefined) {
+        gridShrinkOffset += w.config.subtitle.margin;
+      } else {
+        gridShrinkOffset += this.isSparkline || !w.globals.axisCharts ? 0 : 5;
+      }
+
+      if (w.config.legend.show && w.config.legend.position === 'bottom' && !w.config.legend.floating && w.config.series.length > 1) {
+        gridShrinkOffset += 10;
+      }
+
+      var titleCoords = this.getTitleSubtitleCoords('title');
+      var subtitleCoords = this.getTitleSubtitleCoords('subtitle');
+      gl.gridHeight = gl.gridHeight - titleCoords.height - subtitleCoords.height - gridShrinkOffset;
+      gl.translateY = gl.translateY + titleCoords.height + subtitleCoords.height + gridShrinkOffset;
+    }
+  }, {
+    key: "getTotalYAxisWidth",
+    value: function getTotalYAxisWidth() {
+      var w = this.w;
+      var yAxisWidth = 0;
+      var padding = 10;
+
+      var isHiddenYAxis = function isHiddenYAxis(index) {
+        return w.globals.ignoreYAxisIndexes.indexOf(index) > -1;
+      };
+
+      w.globals.yLabelsCoords.map(function (yLabelCoord, index) {
+        var floating = w.config.yaxis[index].floating;
+
+        if (yLabelCoord.width > 0 && !floating) {
+          yAxisWidth = yAxisWidth + yLabelCoord.width + padding;
+
+          if (isHiddenYAxis(index)) {
+            yAxisWidth = yAxisWidth - yLabelCoord.width - padding;
+          }
+        } else {
+          yAxisWidth = yAxisWidth + (floating || !w.config.yaxis[index].show ? 0 : 5);
+        }
+      });
+      w.globals.yTitleCoords.map(function (yTitleCoord, index) {
+        var floating = w.config.yaxis[index].floating;
+        padding = parseInt(w.config.yaxis[index].title.style.fontSize);
+
+        if (yTitleCoord.width > 0 && !floating) {
+          yAxisWidth = yAxisWidth + yTitleCoord.width + padding;
+
+          if (isHiddenYAxis(index)) {
+            yAxisWidth = yAxisWidth - yTitleCoord.width - padding;
+          }
+        } else {
+          yAxisWidth = yAxisWidth + (floating || !w.config.yaxis[index].show ? 0 : 5);
+        }
+      });
+      return yAxisWidth;
+    }
+  }, {
+    key: "getxAxisTimeScaleLabelsCoords",
+    value: function getxAxisTimeScaleLabelsCoords() {
+      var w = this.w;
+      var rect;
+      this.timescaleLabels = w.globals.timelineLabels.slice();
+
+      if (w.globals.isBarHorizontal && w.config.xaxis.type === 'datetime') {
+        this.timescaleLabels = w.globals.invertedTimelineLabels.slice();
+      }
+
+      var labels = this.timescaleLabels.map(function (label) {
+        return label.value;
+      }); //  get the longest string from the labels array and also apply label formatter to it
+
+      var val = labels.reduce(function (a, b) {
+        // if undefined, maybe user didn't pass the datetime(x) values
+        if (typeof a === 'undefined') {
+          console.error('You have possibly supplied invalid Date format. Please supply a valid JavaScript Date');
+          return 0;
+        } else {
+          return a.length > b.length ? a : b;
+        }
+      }, 0);
+      var graphics = new Graphics(this.ctx);
+      rect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize);
+      var totalWidthRotated = rect.width * 1.05 * labels.length;
+
+      if (totalWidthRotated > w.globals.gridWidth && w.config.xaxis.labels.rotate !== 0) {
+        w.globals.overlappingXLabels = true;
+      }
+
+      return rect;
+    }
+    /**
+     * Get X Axis Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: "getxAxisLabelsCoords",
+    value: function getxAxisLabelsCoords() {
+      var w = this.w;
+      var xaxisLabels = w.globals.labels.slice();
+      var rect;
+
+      if (w.globals.timelineLabels.length > 0) {
+        var coords = this.getxAxisTimeScaleLabelsCoords();
+        rect = {
+          width: coords.width,
+          height: coords.height
+        };
+      } else {
+        var lgWidthForSideLegends = w.config.legend.position === 'left' && w.config.legend.position === 'right' && !w.config.legend.floating ? this.lgRect.width : 0; // get the longest string from the labels array and also apply label formatter
+
+        var xlbFormatter = w.globals.xLabelFormatter; // prevent changing xaxisLabels to avoid issues in multi-yaxies - fix #522
+
+        var val = xaxisLabels.reduce(function (a, b) {
+          return a.length > b.length ? a : b;
+        }, 0); // the labels gets changed for bar charts
+
+        if (w.globals.isBarHorizontal) {
+          val = w.globals.yAxisScale[0].result.reduce(function (a, b) {
+            return a.length > b.length ? a : b;
+          }, 0);
+        }
+
+        var xFormat = new Formatters(this.ctx);
+        val = xFormat.xLabelFormat(xlbFormatter, val);
+        var graphics = new Graphics(this.ctx);
+        var xLabelrect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize);
+        rect = {
+          width: xLabelrect.width,
+          height: xLabelrect.height
+        };
+
+        if (rect.width * xaxisLabels.length > w.globals.svgWidth - lgWidthForSideLegends - this.yAxisWidth && w.config.xaxis.labels.rotate !== 0) {
+          if (!w.globals.isBarHorizontal) {
+            w.globals.rotateXLabels = true;
+            xLabelrect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize, w.config.xaxis.labels.style.fontFamily, "rotate(".concat(w.config.xaxis.labels.rotate, " 0 0)"), false);
+            rect.height = xLabelrect.height / 1.66;
+          }
+        } else {
+          w.globals.rotateXLabels = false;
+        }
+      }
+
+      if (!w.config.xaxis.labels.show) {
+        rect = {
+          width: 0,
+          height: 0
+        };
+      }
+
+      return {
+        width: rect.width,
+        height: rect.height
+      };
+    }
+    /**
+     * Get Y Axis Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: "getyAxisLabelsCoords",
+    value: function getyAxisLabelsCoords() {
+      var _this2 = this;
+
+      var w = this.w;
+      var width = 0;
+      var height = 0;
+      var ret = [];
+      var labelPad = 10;
+      w.config.yaxis.map(function (yaxe, index) {
+        if (yaxe.show && yaxe.labels.show && w.globals.yAxisScale[index].result.length) {
+          var lbFormatter = w.globals.yLabelFormatters[index]; // the second parameter -1 is the index of tick which user can use in the formatter
+
+          var val = lbFormatter(w.globals.yAxisScale[index].niceMax, -1); // if user has specified a custom formatter, and the result is null or empty, we need to discard the formatter and take the value as it is.
+
+          if (typeof val === 'undefined' || val.length === 0) {
+            val = w.globals.yAxisScale[index].niceMax;
+          }
+
+          if (w.globals.isBarHorizontal) {
+            labelPad = 0;
+            var barYaxisLabels = w.globals.labels.slice(); //  get the longest string from the labels array and also apply label formatter to it
+
+            val = barYaxisLabels.reduce(function (a, b) {
+              return a.length > b.length ? a : b;
+            }, 0);
+            val = lbFormatter(val, -1);
+          }
+
+          var graphics = new Graphics(_this2.ctx);
+          var rect = graphics.getTextRects(val, yaxe.labels.style.fontSize);
+          ret.push({
+            width: rect.width + labelPad,
+            height: rect.height
+          });
+        } else {
+          ret.push({
+            width: width,
+            height: height
+          });
+        }
+      });
+      return ret;
+    }
+    /**
+     * Get X Axis Title Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: "getxAxisTitleCoords",
+    value: function getxAxisTitleCoords() {
+      var w = this.w;
+      var width = 0;
+      var height = 0;
+
+      if (w.config.xaxis.title.text !== undefined) {
+        var graphics = new Graphics(this.ctx);
+        var rect = graphics.getTextRects(w.config.xaxis.title.text, w.config.xaxis.title.style.fontSize);
+        width = rect.width;
+        height = rect.height;
+      }
+
+      return {
+        width: width,
+        height: height
+      };
+    }
+    /**
+     * Get Y Axis Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: "getyAxisTitleCoords",
+    value: function getyAxisTitleCoords() {
+      var _this3 = this;
+
+      var w = this.w;
+      var ret = [];
+      w.config.yaxis.map(function (yaxe, index) {
+        if (yaxe.show && yaxe.title.text !== undefined) {
+          var graphics = new Graphics(_this3.ctx);
+          var rect = graphics.getTextRects(yaxe.title.text, yaxe.title.style.fontSize, yaxe.title.style.fontFamily, 'rotate(-90 0 0)', false);
+          ret.push({
+            width: rect.width,
+            height: rect.height
+          });
+        } else {
+          ret.push({
+            width: 0,
+            height: 0
+          });
+        }
+      });
+      return ret;
+    }
+    /**
+     * Get Chart Title/Subtitle Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: "getTitleSubtitleCoords",
+    value: function getTitleSubtitleCoords(type) {
+      var w = this.w;
+      var width = 0;
+      var height = 0;
+      var floating = type === 'title' ? w.config.title.floating : w.config.subtitle.floating;
+      var el = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-text"));
+
+      if (el !== null && !floating) {
+        var coord = el.getBoundingClientRect();
+        width = coord.width;
+        height = w.globals.axisCharts ? coord.height + 5 : coord.height;
+      }
+
+      return {
+        width: width,
+        height: height
+      };
+    }
+  }, {
+    key: "getLegendsRect",
+    value: function getLegendsRect() {
+      var w = this.w;
+      var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+      var lgRect = Object.assign({}, Utils.getBoundingClientRect(elLegendWrap));
+
+      if (elLegendWrap !== null && !w.config.legend.floating && w.config.legend.show) {
+        this.lgRect = {
+          x: lgRect.x,
+          y: lgRect.y,
+          height: lgRect.height,
+          width: lgRect.height === 0 ? 0 : lgRect.width
+        };
+      } else {
+        this.lgRect = {
+          x: 0,
+          y: 0,
+          height: 0,
+          width: 0
+        };
+      }
+
+      return this.lgRect;
+    }
+  }]);
+
+  return Dimensions;
+}();
+
+/**
+ * ApexCharts TimeScale Class for generating time ticks for x-axis.
+ *
+ * @module TimeScale
+ **/
+
+var TimeScale =
+/*#__PURE__*/
+function () {
+  function TimeScale(ctx) {
+    _classCallCheck(this, TimeScale);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.timeScaleArray = [];
+  }
+
+  _createClass(TimeScale, [{
+    key: "calculateTimeScaleTicks",
+    value: function calculateTimeScaleTicks(minX, maxX) {
+      var _this = this;
+
+      var w = this.w; // null check when no series to show
+
+      if (w.globals.allSeriesCollapsed) {
+        w.globals.labels = [];
+        w.globals.timelineLabels = [];
+        return [];
+      }
+
+      var dt = new DateTime(this.ctx);
+      var daysDiff = (maxX - minX) / (1000 * 60 * 60 * 24);
+      this.determineInterval(daysDiff);
+      w.globals.disableZoomIn = false;
+      w.globals.disableZoomOut = false;
+
+      if (daysDiff < 0.005) {
+        w.globals.disableZoomIn = true;
+      } else if (daysDiff > 50000) {
+        w.globals.disableZoomOut = true;
+      }
+
+      var timeIntervals = dt.getTimeUnitsfromTimestamp(minX, maxX);
+      var daysWidthOnXAxis = w.globals.gridWidth / daysDiff;
+      var hoursWidthOnXAxis = daysWidthOnXAxis / 24;
+      var minutesWidthOnXAxis = hoursWidthOnXAxis / 60;
+      var numberOfHours = Math.floor(daysDiff * 24);
+      var numberOfMinutes = Math.floor(daysDiff * 24 * 60);
+      var numberOfDays = Math.floor(daysDiff);
+      var numberOfMonths = Math.floor(daysDiff / 30);
+      var numberOfYears = Math.floor(daysDiff / 365);
+      var firstVal = {
+        minMinute: timeIntervals.minMinute,
+        minHour: timeIntervals.minHour,
+        minDate: timeIntervals.minDate,
+        minMonth: timeIntervals.minMonth,
+        minYear: timeIntervals.minYear
+      };
+      var currentMinute = firstVal.minMinute;
+      var currentHour = firstVal.minHour;
+      var currentMonthDate = firstVal.minDate;
+      var currentDate = firstVal.minDate;
+      var currentMonth = firstVal.minMonth;
+      var currentYear = firstVal.minYear;
+      var params = {
+        firstVal: firstVal,
+        currentMinute: currentMinute,
+        currentHour: currentHour,
+        currentMonthDate: currentMonthDate,
+        currentDate: currentDate,
+        currentMonth: currentMonth,
+        currentYear: currentYear,
+        daysWidthOnXAxis: daysWidthOnXAxis,
+        hoursWidthOnXAxis: hoursWidthOnXAxis,
+        minutesWidthOnXAxis: minutesWidthOnXAxis,
+        numberOfMinutes: numberOfMinutes,
+        numberOfHours: numberOfHours,
+        numberOfDays: numberOfDays,
+        numberOfMonths: numberOfMonths,
+        numberOfYears: numberOfYears
+      };
+
+      switch (this.tickInterval) {
+        case 'years':
+          {
+            this.generateYearScale(params);
+            break;
+          }
+
+        case 'months':
+        case 'half_year':
+          {
+            this.generateMonthScale(params);
+            break;
+          }
+
+        case 'months_days':
+        case 'months_fortnight':
+        case 'days':
+        case 'week_days':
+          {
+            this.generateDayScale(params);
+            break;
+          }
+
+        case 'hours':
+          {
+            this.generateHourScale(params);
+            break;
+          }
+
+        case 'minutes':
+          this.generateMinuteScale(params);
+          break;
+      } // first, we will adjust the month values index
+      // as in the upper function, it is starting from 0
+      // we will start them from 1
+
+
+      var adjustedMonthInTimeScaleArray = this.timeScaleArray.map(function (ts) {
+        var defaultReturn = {
+          position: ts.position,
+          unit: ts.unit,
+          year: ts.year,
+          day: ts.day ? ts.day : 1,
+          hour: ts.hour ? ts.hour : 0,
+          month: ts.month + 1
+        };
+
+        if (ts.unit === 'month') {
+          return _objectSpread({}, defaultReturn, {
+            value: ts.value + 1
+          });
+        } else if (ts.unit === 'day' || ts.unit === 'hour') {
+          return _objectSpread({}, defaultReturn, {
+            value: ts.value
+          });
+        } else if (ts.unit === 'minute') {
+          return _objectSpread({}, defaultReturn, {
+            value: ts.value,
+            minute: ts.value
+          });
+        }
+
+        return ts;
+      });
+      var filteredTimeScale = adjustedMonthInTimeScaleArray.filter(function (ts) {
+        var modulo = 1;
+        var ticks = Math.ceil(w.globals.gridWidth / 120);
+        var value = ts.value;
+
+        if (w.config.xaxis.tickAmount !== undefined) {
+          ticks = w.config.xaxis.tickAmount;
+        }
+
+        if (adjustedMonthInTimeScaleArray.length > ticks) {
+          modulo = Math.floor(adjustedMonthInTimeScaleArray.length / ticks);
+        }
+
+        var shouldNotSkipUnit = false; // there is a big change in unit i.e days to months
+
+        var shouldNotPrint = false; // should skip these values
+
+        switch (_this.tickInterval) {
+          case 'half_year':
+            modulo = 7;
+
+            if (ts.unit === 'year') {
+              shouldNotSkipUnit = true;
+            }
+
+            break;
+
+          case 'months':
+            modulo = 1;
+
+            if (ts.unit === 'year') {
+              shouldNotSkipUnit = true;
+            }
+
+            break;
+
+          case 'months_fortnight':
+            modulo = 15;
+
+            if (ts.unit === 'year' || ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+
+            if (value === 30) {
+              shouldNotPrint = true;
+            }
+
+            break;
+
+          case 'months_days':
+            modulo = 10;
+
+            if (ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+
+            if (value === 30) {
+              shouldNotPrint = true;
+            }
+
+            break;
+
+          case 'week_days':
+            modulo = 8;
+
+            if (ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+
+            break;
+
+          case 'days':
+            modulo = 1;
+
+            if (ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+
+            break;
+
+          case 'hours':
+            if (ts.unit === 'day') {
+              shouldNotSkipUnit = true;
+            }
+
+            break;
+
+          case 'minutes':
+            if (value % 5 !== 0) {
+              shouldNotPrint = true;
+            }
+
+            break;
+        }
+
+        if (_this.tickInterval === 'minutes' || _this.tickInterval === 'hours') {
+          if (!shouldNotPrint) {
+            return true;
+          }
+        } else {
+          if ((value % modulo === 0 || shouldNotSkipUnit) && !shouldNotPrint) {
+            return true;
+          }
+        }
+      });
+      return filteredTimeScale;
+    }
+  }, {
+    key: "recalcDimensionsBasedOnFormat",
+    value: function recalcDimensionsBasedOnFormat(filteredTimeScale, inverted) {
+      var w = this.w;
+      var reformattedTimescaleArray = this.formatDates(filteredTimeScale);
+      var removedOverlappingTS = this.removeOverlappingTS(reformattedTimescaleArray);
+
+      if (!inverted) {
+        w.globals.timelineLabels = removedOverlappingTS.slice();
+      } else {
+        w.globals.invertedTimelineLabels = removedOverlappingTS.slice();
+      } // at this stage, we need to re-calculate coords of the grid as timeline labels may have altered the xaxis labels coords
+      // The reason we can't do this prior to this stage is because timeline labels depends on gridWidth, and as the ticks are calculated based on available gridWidth, there can be unknown number of ticks generated for different minX and maxX
+      // Dependency on Dimensions(), need to refactor correctly
+      // TODO - find an alternate way to avoid calling this Heavy method twice
+
+
+      var dimensions = new Dimensions(this.ctx);
+      dimensions.plotCoords();
+    }
+  }, {
+    key: "determineInterval",
+    value: function determineInterval(daysDiff) {
+      switch (true) {
+        case daysDiff > 1825:
+          // difference is more than 5 years
+          this.tickInterval = 'years';
+          break;
+
+        case daysDiff > 800 && daysDiff <= 1825:
+          this.tickInterval = 'half_year';
+          break;
+
+        case daysDiff > 180 && daysDiff <= 800:
+          this.tickInterval = 'months';
+          break;
+
+        case daysDiff > 90 && daysDiff <= 180:
+          this.tickInterval = 'months_fortnight';
+          break;
+
+        case daysDiff > 60 && daysDiff <= 90:
+          this.tickInterval = 'months_days';
+          break;
+
+        case daysDiff > 30 && daysDiff <= 60:
+          this.tickInterval = 'week_days';
+          break;
+
+        case daysDiff > 2 && daysDiff <= 30:
+          this.tickInterval = 'days';
+          break;
+
+        case daysDiff > 0.1 && daysDiff <= 2:
+          // less than  2 days
+          this.tickInterval = 'hours';
+          break;
+
+        case daysDiff < 0.1:
+          this.tickInterval = 'minutes';
+          break;
+
+        default:
+          this.tickInterval = 'days';
+          break;
+      }
+    }
+  }, {
+    key: "generateYearScale",
+    value: function generateYearScale(params) {
+      var firstVal = params.firstVal,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          daysWidthOnXAxis = params.daysWidthOnXAxis,
+          numberOfYears = params.numberOfYears;
+      var firstTickValue = firstVal.minYear;
+      var firstTickPosition = 0;
+      var dt = new DateTime(this.ctx);
+      var unit = 'year';
+
+      if (firstVal.minDate > 1 && firstVal.minMonth > 0) {
+        var remainingDays = dt.determineRemainingDaysOfYear(firstVal.minYear, firstVal.minMonth, firstVal.minDate); // remainingDaysofFirstMonth is used to reacht the 2nd tick position
+
+        var remainingDaysOfFirstYear = dt.determineDaysOfYear(firstVal.minYear) - remainingDays + 1; // calculate the first tick position
+
+        firstTickPosition = remainingDaysOfFirstYear * daysWidthOnXAxis;
+        firstTickValue = firstVal.minYear + 1; // push the first tick in the array
+
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: firstTickValue,
+          unit: unit,
+          year: firstTickValue,
+          month: Utils.monthMod(currentMonth + 1)
+        });
+      } else if (firstVal.minDate === 1 && firstVal.minMonth === 0) {
+        // push the first tick in the array
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: firstTickValue,
+          unit: unit,
+          year: currentYear,
+          month: Utils.monthMod(currentMonth + 1)
+        });
+      }
+
+      var year = firstTickValue;
+      var pos = firstTickPosition; // keep drawing rest of the ticks
+
+      for (var i = 0; i < numberOfYears; i++) {
+        year++;
+        pos = dt.determineDaysOfYear(year - 1) * daysWidthOnXAxis + pos;
+        this.timeScaleArray.push({
+          position: pos,
+          value: year,
+          unit: unit,
+          year: year,
+          month: 1
+        });
+      }
+    }
+  }, {
+    key: "generateMonthScale",
+    value: function generateMonthScale(params) {
+      var firstVal = params.firstVal,
+          currentMonthDate = params.currentMonthDate,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          daysWidthOnXAxis = params.daysWidthOnXAxis,
+          numberOfMonths = params.numberOfMonths;
+      var firstTickValue = currentMonth;
+      var firstTickPosition = 0;
+      var dt = new DateTime(this.ctx);
+      var unit = 'month';
+      var yrCounter = 0;
+
+      if (firstVal.minDate > 1) {
+        // remainingDaysofFirstMonth is used to reacht the 2nd tick position
+        var remainingDaysOfFirstMonth = dt.determineDaysOfMonths(currentMonth + 1, firstVal.minYear) - currentMonthDate + 1; // calculate the first tick position
+
+        firstTickPosition = remainingDaysOfFirstMonth * daysWidthOnXAxis;
+        firstTickValue = Utils.monthMod(currentMonth + 1);
+        var year = currentYear + yrCounter;
+
+        var _month = Utils.monthMod(firstTickValue);
+
+        var value = firstTickValue; // it's Jan, so update the year
+
+        if (firstTickValue === 0) {
+          unit = 'year';
+          value = year;
+          _month = 1;
+          yrCounter += 1;
+          year = year + yrCounter;
+        } // push the first tick in the array
+
+
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: value,
+          unit: unit,
+          year: year,
+          month: _month
+        });
+      } else {
+        // push the first tick in the array
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: firstTickValue,
+          unit: unit,
+          year: currentYear,
+          month: Utils.monthMod(currentMonth)
+        });
+      }
+
+      var month = firstTickValue + 1;
+      var pos = firstTickPosition; // keep drawing rest of the ticks
+
+      for (var i = 0, j = 1; i < numberOfMonths; i++, j++) {
+        month = Utils.monthMod(month);
+
+        if (month === 0) {
+          unit = 'year';
+          yrCounter += 1;
+        } else {
+          unit = 'month';
+        }
+
+        var _year = currentYear + Math.floor(month / 12) + yrCounter;
+
+        pos = dt.determineDaysOfMonths(month, _year) * daysWidthOnXAxis + pos;
+        var monthVal = month === 0 ? _year : month;
+        this.timeScaleArray.push({
+          position: pos,
+          value: monthVal,
+          unit: unit,
+          year: _year,
+          month: month === 0 ? 1 : month
+        });
+        month++;
+      }
+    }
+  }, {
+    key: "generateDayScale",
+    value: function generateDayScale(params) {
+      var firstVal = params.firstVal,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          hoursWidthOnXAxis = params.hoursWidthOnXAxis,
+          numberOfDays = params.numberOfDays;
+      var dt = new DateTime(this.ctx);
+      var unit = 'day';
+      var remainingHours = 24 - firstVal.minHour;
+      var yrCounter = 0; // calculate the first tick position
+
+      var firstTickPosition = remainingHours * hoursWidthOnXAxis;
+      var firstTickValue = firstVal.minDate + 1;
+      var val = firstTickValue;
+
+      var changeMonth = function changeMonth(dateVal, month, year) {
+        var monthdays = dt.determineDaysOfMonths(month + 1, year);
+
+        if (dateVal > monthdays) {
+          month = month + 1;
+          date = 1;
+          unit = 'month';
+          val = month;
+          return month;
+        }
+
+        return month;
+      };
+
+      var date = firstTickValue;
+      var month = changeMonth(date, currentMonth, currentYear); // push the first tick in the array
+
+      this.timeScaleArray.push({
+        position: firstTickPosition,
+        value: val,
+        unit: unit,
+        year: currentYear,
+        month: Utils.monthMod(month),
+        day: date
+      });
+      var pos = firstTickPosition; // keep drawing rest of the ticks
+
+      for (var i = 0; i < numberOfDays; i++) {
+        date += 1;
+        unit = 'day';
+        month = changeMonth(date, month, currentYear + Math.floor(month / 12) + yrCounter);
+        var year = currentYear + Math.floor(month / 12) + yrCounter;
+        pos = 24 * hoursWidthOnXAxis + pos;
+
+        var _val = date === 1 ? Utils.monthMod(month) : date;
+
+        this.timeScaleArray.push({
+          position: pos,
+          value: _val,
+          unit: unit,
+          year: year,
+          month: Utils.monthMod(month),
+          day: _val
+        });
+      }
+    }
+  }, {
+    key: "generateHourScale",
+    value: function generateHourScale(params) {
+      var firstVal = params.firstVal,
+          currentDate = params.currentDate,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          minutesWidthOnXAxis = params.minutesWidthOnXAxis,
+          numberOfHours = params.numberOfHours;
+      var dt = new DateTime(this.ctx);
+      var yrCounter = 0;
+      var unit = 'hour';
+
+      var changeDate = function changeDate(dateVal, month) {
+        var monthdays = dt.determineDaysOfMonths(month + 1, currentYear);
+
+        if (dateVal > monthdays) {
+          date = 1;
+          month = month + 1;
+        }
+
+        return {
+          month: month,
+          date: date
+        };
+      };
+
+      var changeMonth = function changeMonth(dateVal, month) {
+        var monthdays = dt.determineDaysOfMonths(month + 1, currentYear);
+
+        if (dateVal > monthdays) {
+          month = month + 1;
+          return month;
+        }
+
+        return month;
+      };
+
+      var remainingMins = 60 - firstVal.minMinute;
+      var firstTickPosition = remainingMins * minutesWidthOnXAxis;
+      var firstTickValue = firstVal.minHour + 1;
+      var hour = firstTickValue + 1;
+
+      if (remainingMins === 60) {
+        firstTickPosition = 0;
+        firstTickValue = firstVal.minHour;
+        hour = firstTickValue + 1;
+      }
+
+      var date = currentDate;
+      var month = changeMonth(date, currentMonth); // push the first tick in the array
+
+      this.timeScaleArray.push({
+        position: firstTickPosition,
+        value: firstTickValue,
+        unit: unit,
+        day: date,
+        hour: hour,
+        year: currentYear,
+        month: Utils.monthMod(month)
+      });
+      var pos = firstTickPosition; // keep drawing rest of the ticks
+
+      for (var i = 0; i < numberOfHours; i++) {
+        unit = 'hour';
+
+        if (hour >= 24) {
+          hour = 0;
+          date += 1;
+          unit = 'day';
+          var checkNextMonth = changeDate(date, month);
+          month = checkNextMonth.month;
+          month = changeMonth(date, month);
+        }
+
+        var year = currentYear + Math.floor(month / 12) + yrCounter;
+        pos = hour === 0 && i === 0 ? remainingMins * minutesWidthOnXAxis : 60 * minutesWidthOnXAxis + pos;
+        var val = hour === 0 ? date : hour;
+        this.timeScaleArray.push({
+          position: pos,
+          value: val,
+          unit: unit,
+          hour: hour,
+          day: date,
+          year: year,
+          month: Utils.monthMod(month)
+        });
+        hour++;
+      }
+    }
+  }, {
+    key: "generateMinuteScale",
+    value: function generateMinuteScale(params) {
+      var firstVal = params.firstVal,
+          currentMinute = params.currentMinute,
+          currentHour = params.currentHour,
+          currentDate = params.currentDate,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          minutesWidthOnXAxis = params.minutesWidthOnXAxis,
+          numberOfMinutes = params.numberOfMinutes;
+      var yrCounter = 0;
+      var unit = 'minute';
+      var remainingMins = currentMinute - firstVal.minMinute;
+      var firstTickPosition = minutesWidthOnXAxis - remainingMins;
+      var firstTickValue = firstVal.minMinute + 1;
+      var minute = firstTickValue + 1;
+      var date = currentDate;
+      var month = currentMonth;
+      var year = currentYear;
+      var hour = currentHour; // push the first tick in the array
+
+      this.timeScaleArray.push({
+        position: firstTickPosition,
+        value: firstTickValue,
+        unit: unit,
+        day: date,
+        hour: hour,
+        minute: minute,
+        year: year,
+        month: Utils.monthMod(month)
+      });
+      var pos = firstTickPosition; // keep drawing rest of the ticks
+
+      for (var i = 0; i < numberOfMinutes; i++) {
+        if (minute >= 60) {
+          minute = 0;
+          hour += 1;
+
+          if (hour === 24) {
+            hour = 0;
+          }
+        }
+
+        var _year2 = currentYear + Math.floor(month / 12) + yrCounter;
+
+        pos = minutesWidthOnXAxis + pos;
+        var val = minute;
+        this.timeScaleArray.push({
+          position: pos,
+          value: val,
+          unit: unit,
+          hour: hour,
+          minute: minute,
+          day: date,
+          year: _year2,
+          month: Utils.monthMod(month)
+        });
+        minute++;
+      }
+    }
+  }, {
+    key: "createRawDateString",
+    value: function createRawDateString(ts, value) {
+      var raw = ts.year;
+      raw += '-' + ('0' + ts.month.toString()).slice(-2); // unit is day
+
+      if (ts.unit === 'day') {
+        raw += ts.unit === 'day' ? '-' + ('0' + value).slice(-2) : '-01';
+      } else {
+        raw += '-' + ('0' + (ts.day ? ts.day : '1')).slice(-2);
+      } // unit is hour
+
+
+      if (ts.unit === 'hour') {
+        raw += ts.unit === 'hour' ? 'T' + ('0' + value).slice(-2) : 'T00';
+      } else {
+        raw += 'T' + ('0' + (ts.hour ? ts.hour : '0')).slice(-2);
+      } // unit is minute
+
+
+      raw += ts.unit === 'minute' ? ':' + ('0' + value).slice(-2) + ':00.000Z' : ':00:00.000Z';
+      return raw;
+    }
+  }, {
+    key: "formatDates",
+    value: function formatDates(filteredTimeScale) {
+      var _this2 = this;
+
+      var w = this.w;
+      var reformattedTimescaleArray = filteredTimeScale.map(function (ts) {
+        var value = ts.value.toString();
+        var dt = new DateTime(_this2.ctx);
+
+        var raw = _this2.createRawDateString(ts, value); // parse the whole ISO datestring
+
+
+        var dateString = new Date(Date.parse(raw));
+
+        if (w.config.xaxis.labels.format === undefined) {
+          var customFormat = 'dd MMM';
+          var dtFormatter = w.config.xaxis.labels.datetimeFormatter;
+          if (ts.unit === 'year') customFormat = dtFormatter.year;
+          if (ts.unit === 'month') customFormat = dtFormatter.month;
+          if (ts.unit === 'day') customFormat = dtFormatter.day;
+          if (ts.unit === 'hour') customFormat = dtFormatter.hour;
+          if (ts.unit === 'minute') customFormat = dtFormatter.minute;
+          value = dt.formatDate(dateString, customFormat, true, false);
+        } else {
+          value = dt.formatDate(dateString, w.config.xaxis.labels.format);
+        }
+
+        return {
+          dateString: raw,
+          position: ts.position,
+          value: value,
+          unit: ts.unit,
+          year: ts.year,
+          month: ts.month
+        };
+      });
+      return reformattedTimescaleArray;
+    }
+  }, {
+    key: "removeOverlappingTS",
+    value: function removeOverlappingTS(arr) {
+      var _this3 = this;
+
+      var graphics = new Graphics(this.ctx);
+      var lastDrawnIndex = 0;
+      var filteredArray = arr.map(function (item, index) {
+        if (index > 0 && _this3.w.config.xaxis.labels.hideOverlappingLabels) {
+          var prevLabelWidth = graphics.getTextRects(arr[lastDrawnIndex].value).width;
+          var prevPos = arr[lastDrawnIndex].position;
+          var pos = item.position;
+
+          if (pos > prevPos + prevLabelWidth + 10) {
+            lastDrawnIndex = index;
+            return item;
+          } else {
+            return null;
+          }
+        } else {
+          return item;
+        }
+      });
+      filteredArray = filteredArray.filter(function (f) {
+        return f !== null;
+      });
+      return filteredArray;
+    }
+  }]);
+
+  return TimeScale;
+}();
+
+/**
+ * ApexCharts Core Class responsible for major calculations and creating elements.
+ *
+ * @module Core
+ **/
+
+var Core =
+/*#__PURE__*/
+function () {
+  function Core(el, ctx) {
+    _classCallCheck(this, Core);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.el = el;
+    this.coreUtils = new CoreUtils(this.ctx);
+    this.twoDSeries = [];
+    this.threeDSeries = [];
+    this.twoDSeriesX = [];
+  } // get data and store into appropriate vars
+
+
+  _createClass(Core, [{
+    key: "setupElements",
+    value: function setupElements() {
+      var gl = this.w.globals;
+      var cnf = this.w.config; // const graphics = new Graphics(this.ctx)
+
+      var ct = cnf.chart.type;
+      var axisChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', // 'rangeArea',
+      'candlestick', 'radar', 'scatter', 'bubble', 'heatmap'];
+      var xyChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', // 'rangeArea',
+      'candlestick', 'scatter', 'bubble'];
+      gl.axisCharts = axisChartsArrTypes.indexOf(ct) > -1;
+      gl.xyCharts = xyChartsArrTypes.indexOf(ct) > -1;
+      gl.isBarHorizontal = (cnf.chart.type === 'bar' || cnf.chart.type === 'rangeBar') && cnf.plotOptions.bar.horizontal;
+      gl.chartClass = '.apexcharts' + gl.cuid;
+      gl.dom.baseEl = this.el;
+      gl.dom.elWrap = document.createElement('div');
+      Graphics.setAttrs(gl.dom.elWrap, {
+        id: gl.chartClass.substring(1),
+        class: 'apexcharts-canvas ' + gl.chartClass.substring(1)
+      });
+      this.el.appendChild(gl.dom.elWrap);
+      gl.dom.Paper = new window.SVG.Doc(gl.dom.elWrap);
+      gl.dom.Paper.attr({
+        class: 'apexcharts-svg',
+        'xmlns:data': 'ApexChartsNS',
+        transform: "translate(".concat(cnf.chart.offsetX, ", ").concat(cnf.chart.offsetY, ")")
+      });
+      gl.dom.Paper.node.style.background = cnf.chart.background;
+      this.setSVGDimensions();
+      gl.dom.elGraphical = gl.dom.Paper.group().attr({
+        class: 'apexcharts-inner apexcharts-graphical'
+      });
+      gl.dom.elDefs = gl.dom.Paper.defs();
+      gl.dom.elLegendWrap = document.createElement('div');
+      gl.dom.elLegendWrap.classList.add('apexcharts-legend');
+      gl.dom.elWrap.appendChild(gl.dom.elLegendWrap); // gl.dom.Paper.add(gl.dom.elLegendWrap)
+
+      gl.dom.Paper.add(gl.dom.elGraphical);
+      gl.dom.elGraphical.add(gl.dom.elDefs);
+    }
+  }, {
+    key: "plotChartType",
+    value: function plotChartType(ser, xyRatios) {
+      var w = this.w;
+      var cnf = w.config;
+      var gl = w.globals;
+      var lineSeries = {
+        series: [],
+        i: []
+      };
+      var areaSeries = {
+        series: [],
+        i: []
+      };
+      var scatterSeries = {
+        series: [],
+        i: []
+      };
+      var columnSeries = {
+        series: [],
+        i: []
+      };
+      var candlestickSeries = {
+        series: [],
+        i: []
+      };
+      gl.series.map(function (series, st) {
+        // if user has specified a particular type for particular series
+        if (typeof ser[st].type !== 'undefined') {
+          if (ser[st].type === 'column' || ser[st].type === 'bar') {
+            w.config.plotOptions.bar.horizontal = false; // horizontal bars not supported in mixed charts, hence forcefully set to false
+
+            columnSeries.series.push(series);
+            columnSeries.i.push(st);
+          } else if (ser[st].type === 'area') {
+            areaSeries.series.push(series);
+            areaSeries.i.push(st);
+          } else if (ser[st].type === 'line') {
+            lineSeries.series.push(series);
+            lineSeries.i.push(st);
+          } else if (ser[st].type === 'scatter') {
+            scatterSeries.series.push(series);
+            scatterSeries.i.push(st);
+          } else if (ser[st].type === 'bubble') ; else if (ser[st].type === 'candlestick') {
+            candlestickSeries.series.push(series);
+            candlestickSeries.i.push(st);
+          } else {
+            // user has specified type, but it is not valid (other than line/area/column)
+            console.warn('You have specified an unrecognized chart type. Available types for this propery are line/area/column/bar/scatter/bubble');
+          }
+
+          gl.comboCharts = true;
+        } else {
+          lineSeries.series.push(series);
+          lineSeries.i.push(st);
+        }
+      });
+      var line = new Line(this.ctx, xyRatios);
+      var candlestick = new CandleStick(this.ctx, xyRatios);
+      var pie = new Pie(this.ctx);
+      var radialBar = new Radial(this.ctx);
+      var rangeBar = new RangeBar(this.ctx, xyRatios);
+      var radar = new Radar(this.ctx);
+      var elGraph = [];
+
+      if (gl.comboCharts) {
+        if (areaSeries.series.length > 0) {
+          elGraph.push(line.draw(areaSeries.series, 'area', areaSeries.i));
+        }
+
+        if (columnSeries.series.length > 0) {
+          if (w.config.chart.stacked) {
+            var barStacked = new BarStacked(this.ctx, xyRatios);
+            elGraph.push(barStacked.draw(columnSeries.series, columnSeries.i));
+          } else {
+            var bar = new Bar(this.ctx, xyRatios);
+            elGraph.push(bar.draw(columnSeries.series, columnSeries.i));
+          }
+        }
+
+        if (lineSeries.series.length > 0) {
+          elGraph.push(line.draw(lineSeries.series, 'line', lineSeries.i));
+        }
+
+        if (candlestickSeries.series.length > 0) {
+          elGraph.push(candlestick.draw(candlestickSeries.series, candlestickSeries.i));
+        }
+
+        if (scatterSeries.series.length > 0) {
+          var scatterLine = new Line(this.ctx, xyRatios, true);
+          elGraph.push(scatterLine.draw(scatterSeries.series, 'scatter', scatterSeries.i));
+        } // TODO: allow bubble series in a combo chart
+        // if (bubbleSeries.series.length > 0) {
+        //   const bubbleLine = new Line(this.ctx, xyRatios, true)
+        //   elGraph.push(
+        //     bubbleLine.draw(bubbleSeries.series, 'bubble', bubbleSeries.i)
+        //   )
+        // }
+
+      } else {
+        switch (cnf.chart.type) {
+          case 'line':
+            elGraph = line.draw(gl.series, 'line');
+            break;
+
+          case 'area':
+            elGraph = line.draw(gl.series, 'area');
+            break;
+
+          case 'bar':
+            if (cnf.chart.stacked) {
+              var _barStacked = new BarStacked(this.ctx, xyRatios);
+
+              elGraph = _barStacked.draw(gl.series);
+            } else {
+              var _bar = new Bar(this.ctx, xyRatios);
+
+              elGraph = _bar.draw(gl.series);
+            }
+
+            break;
+
+          case 'candlestick':
+            var candleStick = new CandleStick(this.ctx, xyRatios);
+            elGraph = candleStick.draw(gl.series);
+            break;
+
+          case 'rangeBar':
+            elGraph = rangeBar.draw(gl.series);
+            break;
+
+          case 'heatmap':
+            var heatmap = new HeatMap(this.ctx, xyRatios);
+            elGraph = heatmap.draw(gl.series);
+            break;
+
+          case 'pie':
+          case 'donut':
+            elGraph = pie.draw(gl.series);
+            break;
+
+          case 'radialBar':
+            elGraph = radialBar.draw(gl.series);
+            break;
+
+          case 'radar':
+            elGraph = radar.draw(gl.series);
+            break;
+
+          default:
+            elGraph = line.draw(gl.series);
+        }
+      }
+
+      return elGraph;
+    }
+  }, {
+    key: "setSVGDimensions",
+    value: function setSVGDimensions() {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      gl.svgWidth = cnf.chart.width;
+      gl.svgHeight = cnf.chart.height;
+      var elDim = Utils.getDimensions(this.el);
+      var widthUnit = cnf.chart.width.toString().split(/[0-9]+/g).pop();
+
+      if (widthUnit === '%') {
+        if (Utils.isNumber(elDim[0])) {
+          if (elDim[0].width === 0) {
+            elDim = Utils.getDimensions(this.el.parentNode);
+          }
+
+          gl.svgWidth = elDim[0] * parseInt(cnf.chart.width) / 100;
+        }
+      } else if (widthUnit === 'px' || widthUnit === '') {
+        gl.svgWidth = parseInt(cnf.chart.width);
+      }
+
+      if (gl.svgHeight !== 'auto' && gl.svgHeight !== '') {
+        var heightUnit = cnf.chart.height.toString().split(/[0-9]+/g).pop();
+
+        if (heightUnit === '%') {
+          var elParentDim = Utils.getDimensions(this.el.parentNode);
+          gl.svgHeight = elParentDim[1] * parseInt(cnf.chart.height) / 100;
+        } else {
+          gl.svgHeight = parseInt(cnf.chart.height);
+        }
+      } else {
+        if (gl.axisCharts) {
+          gl.svgHeight = gl.svgWidth / 1.61;
+        } else {
+          gl.svgHeight = gl.svgWidth;
+        }
+      }
+
+      Graphics.setAttrs(gl.dom.Paper.node, {
+        width: gl.svgWidth,
+        height: gl.svgHeight
+      }); // gl.dom.Paper.node.parentNode.parentNode.style.minWidth = gl.svgWidth + "px";
+
+      var offsetY = cnf.chart.sparkline.enabled ? 0 : gl.axisCharts ? cnf.chart.parentHeightOffset : 0;
+      gl.dom.Paper.node.parentNode.parentNode.style.minHeight = gl.svgHeight + offsetY + 'px';
+      gl.dom.elWrap.style.width = gl.svgWidth + 'px';
+      gl.dom.elWrap.style.height = gl.svgHeight + 'px';
+    }
+  }, {
+    key: "shiftGraphPosition",
+    value: function shiftGraphPosition() {
+      var gl = this.w.globals;
+      var tY = gl.translateY;
+      var tX = gl.translateX;
+      var scalingAttrs = {
+        transform: 'translate(' + tX + ', ' + tY + ')'
+      };
+      Graphics.setAttrs(gl.dom.elGraphical.node, scalingAttrs);
+    }
+    /*
+     ** All the calculations for setting range in charts will be done here
+     */
+
+  }, {
+    key: "coreCalculations",
+    value: function coreCalculations() {
+      var range = new Range$1(this.ctx);
+      range.init();
+    }
+  }, {
+    key: "resetGlobals",
+    value: function resetGlobals() {
+      var _this = this;
+
+      var gl = this.w.globals;
+      gl.series = [];
+      gl.seriesCandleO = [];
+      gl.seriesCandleH = [];
+      gl.seriesCandleL = [];
+      gl.seriesCandleC = [];
+      gl.seriesRangeStart = [];
+      gl.seriesRangeEnd = [];
+      gl.seriesPercent = [];
+      gl.seriesX = [];
+      gl.seriesZ = [];
+      gl.seriesNames = [];
+      gl.seriesTotals = [];
+      gl.stackedSeriesTotals = [];
+      gl.labels = [];
+      gl.timelineLabels = [];
+      gl.noLabelsProvided = false;
+      gl.timescaleTicks = [];
+      gl.resizeTimer = null;
+      gl.selectionResizeTimer = null;
+
+      gl.seriesXvalues = function () {
+        return _this.w.config.series.map(function (s) {
+          return [];
+        });
+      }();
+
+      gl.seriesYvalues = function () {
+        return _this.w.config.series.map(function (s) {
+          return [];
+        });
+      }();
+
+      gl.delayedElements = [];
+      gl.pointsArray = [];
+      gl.dataLabelsRects = [];
+      gl.isXNumeric = false;
+      gl.isDataXYZ = false;
+      gl.maxY = -Number.MAX_VALUE;
+      gl.minY = Number.MIN_VALUE;
+      gl.minYArr = [];
+      gl.maxYArr = [];
+      gl.maxX = -Number.MAX_VALUE;
+      gl.minX = Number.MAX_VALUE;
+      gl.initialmaxX = -Number.MAX_VALUE;
+      gl.initialminX = Number.MAX_VALUE;
+      gl.maxDate = 0;
+      gl.minDate = Number.MAX_VALUE;
+      gl.minZ = Number.MAX_VALUE;
+      gl.maxZ = -Number.MAX_VALUE;
+      gl.minXDiff = Number.MAX_VALUE;
+      gl.yAxisScale = [];
+      gl.xAxisScale = null;
+      gl.xAxisTicksPositions = [];
+      gl.yLabelsCoords = [];
+      gl.yTitleCoords = [];
+      gl.xRange = 0;
+      gl.yRange = [];
+      gl.zRange = 0;
+      gl.dataPoints = 0;
+    }
+  }, {
+    key: "isMultipleY",
+    value: function isMultipleY() {
+      // user has supplied an array in yaxis property. So, turn on multipleYAxis flag
+      if (this.w.config.yaxis.constructor === Array && this.w.config.yaxis.length > 1) {
+        // first, turn off stacking if multiple y axis
+        this.w.config.chart.stacked = false;
+        this.w.globals.isMultipleYAxis = true;
+        return true;
+      }
+    }
+  }, {
+    key: "excludeCollapsedSeriesInYAxis",
+    value: function excludeCollapsedSeriesInYAxis() {
+      var _this2 = this;
+
+      var w = this.w;
+      w.globals.ignoreYAxisIndexes = w.globals.collapsedSeries.map(function (collapsed, i) {
+        if (_this2.w.globals.isMultipleYAxis) {
+          return collapsed.index;
+        }
+      });
+    }
+  }, {
+    key: "isMultiFormat",
+    value: function isMultiFormat() {
+      return this.isFormatXY() || this.isFormat2DArray();
+    } // given format is [{x, y}, {x, y}]
+
+  }, {
+    key: "isFormatXY",
+    value: function isFormatXY() {
+      var series = this.w.config.series.slice();
+      var sr = new Series(this.ctx);
+      this.activeSeriesIndex = sr.getActiveConfigSeriesIndex();
+
+      if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && series[this.activeSeriesIndex].data[0] !== null && typeof series[this.activeSeriesIndex].data[0].x !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null) {
+        return true;
+      }
+    } // given format is [[x, y], [x, y]]
+
+  }, {
+    key: "isFormat2DArray",
+    value: function isFormat2DArray() {
+      var series = this.w.config.series.slice();
+      var sr = new Series(this.ctx);
+      this.activeSeriesIndex = sr.getActiveConfigSeriesIndex();
+
+      if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && typeof series[this.activeSeriesIndex].data[0] !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null && series[this.activeSeriesIndex].data[0].constructor === Array) {
+        return true;
+      }
+    }
+  }, {
+    key: "handleFormat2DArray",
+    value: function handleFormat2DArray(ser, i) {
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+
+      for (var j = 0; j < ser[i].data.length; j++) {
+        if (typeof ser[i].data[j][1] !== 'undefined') {
+          if (Array.isArray(ser[i].data[j][1]) && ser[i].data[j][1].length === 4) {
+            this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][1][3]));
+          } else {
+            this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][1]));
+          }
+
+          gl.dataFormatXNumeric = true;
+        }
+
+        if (cnf.xaxis.type === 'datetime') {
+          // if timestamps are provided and xaxis type is datettime,
+          var ts = new Date(ser[i].data[j][0]);
+          ts = new Date(ts).getTime();
+          this.twoDSeriesX.push(ts);
+        } else {
+          this.twoDSeriesX.push(ser[i].data[j][0]);
+        }
+      }
+
+      for (var _j = 0; _j < ser[i].data.length; _j++) {
+        if (typeof ser[i].data[_j][2] !== 'undefined') {
+          this.threeDSeries.push(ser[i].data[_j][2]);
+          gl.isDataXYZ = true;
+        }
+      }
+    }
+  }, {
+    key: "handleFormatXY",
+    value: function handleFormatXY(ser, i) {
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+      var dt = new DateTime(this.ctx);
+      var activeI = i;
+
+      if (gl.collapsedSeriesIndices.indexOf(i) > -1) {
+        // fix #368
+        activeI = this.activeSeriesIndex;
+      } // get series
+
+
+      for (var j = 0; j < ser[i].data.length; j++) {
+        if (typeof ser[i].data[j].y !== 'undefined') {
+          if (Array.isArray(ser[i].data[j].y)) {
+            this.twoDSeries.push(Utils.parseNumber(ser[i].data[j].y[ser[i].data[j].y.length - 1]));
+          } else {
+            this.twoDSeries.push(Utils.parseNumber(ser[i].data[j].y));
+          }
+        }
+      } // get seriesX
+
+
+      for (var _j2 = 0; _j2 < ser[activeI].data.length; _j2++) {
+        var isXString = typeof ser[activeI].data[_j2].x === 'string';
+        var isXDate = !!dt.isValidDate(ser[activeI].data[_j2].x.toString());
+
+        if (isXString || isXDate) {
+          // user supplied '01/01/2017' or a date string (a JS date object is not supported)
+          if (isXString) {
+            if (cnf.xaxis.type === 'datetime' && !gl.isRangeData) {
+              this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x));
+            } else {
+              // a category and not a numeric x value
+              this.fallbackToCategory = true;
+              this.twoDSeriesX.push(ser[activeI].data[_j2].x);
+            }
+          } else {
+            if (cnf.xaxis.type === 'datetime') {
+              this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x.toString()));
+            } else {
+              gl.dataFormatXNumeric = true;
+              gl.isXNumeric = true;
+              this.twoDSeriesX.push(parseFloat(ser[activeI].data[_j2].x));
+            }
+          }
+        } else {
+          // a numeric value in x property
+          gl.isXNumeric = true;
+          gl.dataFormatXNumeric = true;
+          this.twoDSeriesX.push(ser[activeI].data[_j2].x);
+        }
+      }
+
+      if (ser[i].data[0] && typeof ser[i].data[0].z !== 'undefined') {
+        for (var t = 0; t < ser[i].data.length; t++) {
+          this.threeDSeries.push(ser[i].data[t].z);
+        }
+
+        gl.isDataXYZ = true;
+      }
+    }
+  }, {
+    key: "handleRangeData",
+    value: function handleRangeData(ser, i) {
+      var gl = this.w.globals;
+      var range = {};
+
+      if (this.isFormat2DArray()) {
+        range = this.handleRangeDataFormat('array', ser, i);
+      } else if (this.isFormatXY()) {
+        range = this.handleRangeDataFormat('xy', ser, i);
+      }
+
+      gl.seriesRangeStart.push(range.start);
+      gl.seriesRangeEnd.push(range.end);
+      return range;
+    }
+  }, {
+    key: "handleCandleStickData",
+    value: function handleCandleStickData(ser, i) {
+      var gl = this.w.globals;
+      var ohlc = {};
+
+      if (this.isFormat2DArray()) {
+        ohlc = this.handleCandleStickDataFormat('array', ser, i);
+      } else if (this.isFormatXY()) {
+        ohlc = this.handleCandleStickDataFormat('xy', ser, i);
+      }
+
+      gl.seriesCandleO.push(ohlc.o);
+      gl.seriesCandleH.push(ohlc.h);
+      gl.seriesCandleL.push(ohlc.l);
+      gl.seriesCandleC.push(ohlc.c);
+      return ohlc;
+    }
+  }, {
+    key: "handleRangeDataFormat",
+    value: function handleRangeDataFormat(format, ser, i) {
+      var rangeStart = [];
+      var rangeEnd = [];
+      var err = 'Please provide [Start, End] values in valid format. Read more https://apexcharts.com/docs/series/#rangecharts';
+      var serObj = new Series(this.ctx);
+      var activeIndex = serObj.getActiveConfigSeriesIndex();
+
+      if (format === 'array') {
+        if (ser[activeIndex].data[0][1].length !== 2) {
+          throw new Error(err);
+        }
+
+        for (var j = 0; j < ser[i].data.length; j++) {
+          rangeStart.push(ser[i].data[j][1][0]);
+          rangeEnd.push(ser[i].data[j][1][1]);
+        }
+      } else if (format === 'xy') {
+        if (ser[activeIndex].data[0].y.length !== 2) {
+          throw new Error(err);
+        }
+
+        for (var _j3 = 0; _j3 < ser[i].data.length; _j3++) {
+          rangeStart.push(ser[i].data[_j3].y[0]);
+          rangeEnd.push(ser[i].data[_j3].y[1]);
+        }
+      }
+
+      return {
+        start: rangeStart,
+        end: rangeEnd
+      };
+    }
+  }, {
+    key: "handleCandleStickDataFormat",
+    value: function handleCandleStickDataFormat(format, ser, i) {
+      var serO = [];
+      var serH = [];
+      var serL = [];
+      var serC = [];
+      var err = 'Please provide [Open, High, Low and Close] values in valid format. Read more https://apexcharts.com/docs/series/#candlestick';
+
+      if (format === 'array') {
+        if (ser[i].data[0][1].length !== 4) {
+          throw new Error(err);
+        }
+
+        for (var j = 0; j < ser[i].data.length; j++) {
+          serO.push(ser[i].data[j][1][0]);
+          serH.push(ser[i].data[j][1][1]);
+          serL.push(ser[i].data[j][1][2]);
+          serC.push(ser[i].data[j][1][3]);
+        }
+      } else if (format === 'xy') {
+        if (ser[i].data[0].y.length !== 4) {
+          throw new Error(err);
+        }
+
+        for (var _j4 = 0; _j4 < ser[i].data.length; _j4++) {
+          serO.push(ser[i].data[_j4].y[0]);
+          serH.push(ser[i].data[_j4].y[1]);
+          serL.push(ser[i].data[_j4].y[2]);
+          serC.push(ser[i].data[_j4].y[3]);
+        }
+      }
+
+      return {
+        o: serO,
+        h: serH,
+        l: serL,
+        c: serC
+      };
+    }
+  }, {
+    key: "parseDataAxisCharts",
+    value: function parseDataAxisCharts(ser) {
+      var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.ctx;
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+      var dt = new DateTime(ctx);
+
+      for (var i = 0; i < ser.length; i++) {
+        this.twoDSeries = [];
+        this.twoDSeriesX = [];
+        this.threeDSeries = [];
+
+        if (typeof ser[i].data === 'undefined') {
+          console.error("It is a possibility that you may have not included 'data' property in series.");
+          return;
+        }
+
+        if (cnf.chart.type === 'rangeBar' || cnf.chart.type === 'rangeArea' || ser[i].type === 'rangeBar' || ser[i].type === 'rangeArea') {
+          gl.isRangeData = true;
+          this.handleRangeData(ser, i);
+        }
+
+        if (this.isMultiFormat()) {
+          if (this.isFormat2DArray()) {
+            this.handleFormat2DArray(ser, i);
+          } else if (this.isFormatXY()) {
+            this.handleFormatXY(ser, i);
+          }
+
+          if (cnf.chart.type === 'candlestick' || ser[i].type === 'candlestick') {
+            this.handleCandleStickData(ser, i);
+          }
+
+          gl.series.push(this.twoDSeries);
+          gl.labels.push(this.twoDSeriesX);
+          gl.seriesX.push(this.twoDSeriesX);
+
+          if (!this.fallbackToCategory) {
+            gl.isXNumeric = true;
+          }
+        } else {
+          if (cnf.xaxis.type === 'datetime') {
+            // user didn't supplied [{x,y}] or [[x,y]], but single array in data.
+            // Also labels/categories were supplied differently
+            gl.isXNumeric = true;
+            var dates = cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice();
+
+            for (var j = 0; j < dates.length; j++) {
+              if (typeof dates[j] === 'string') {
+                var isDate = dt.isValidDate(dates[j]);
+
+                if (isDate) {
+                  this.twoDSeriesX.push(dt.parseDate(dates[j]));
+                } else {
+                  throw new Error('You have provided invalid Date format. Please provide a valid JavaScript Date');
+                }
+              }
+            }
+
+            gl.seriesX.push(this.twoDSeriesX);
+          } else if (cnf.xaxis.type === 'numeric') {
+            gl.isXNumeric = true;
+            var x = cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice();
+
+            if (x.length > 0) {
+              this.twoDSeriesX = x;
+              gl.seriesX.push(this.twoDSeriesX);
+            }
+          }
+
+          gl.labels.push(this.twoDSeriesX);
+          var singleArray = ser[i].data.map(function (d) {
+            return Utils.parseNumber(d);
+          });
+          gl.series.push(singleArray);
+        }
+
+        gl.seriesZ.push(this.threeDSeries);
+
+        if (ser[i].name !== undefined) {
+          gl.seriesNames.push(ser[i].name);
+        } else {
+          gl.seriesNames.push('series-' + parseInt(i + 1));
+        }
+      }
+
+      return this.w;
+    }
+  }, {
+    key: "parseDataNonAxisCharts",
+    value: function parseDataNonAxisCharts(ser) {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      gl.series = ser.slice();
+      gl.seriesNames = cnf.labels.slice();
+
+      for (var i = 0; i < gl.series.length; i++) {
+        if (gl.seriesNames[i] === undefined) {
+          gl.seriesNames.push('series-' + (i + 1));
+        }
+      }
+
+      return this.w;
+    }
+    /** User possibly set string categories in xaxis.categories or labels prop
+     * Or didn't set xaxis labels at all - in which case we manually do it.
+     * If user passed series data as [[3, 2], [4, 5]] or [{ x: 3, y: 55 }],
+     * this shouldn't be called
+     * @param {array} ser - the series which user passed to the config
+     */
+
+  }, {
+    key: "handleExternalLabelsData",
+    value: function handleExternalLabelsData(ser) {
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+
+      if (cnf.xaxis.categories.length > 0) {
+        // user provided labels in xaxis.category prop
+        gl.labels = cnf.xaxis.categories;
+      } else if (cnf.labels.length > 0) {
+        // user provided labels in labels props
+        gl.labels = cnf.labels.slice();
+      } else if (this.fallbackToCategory) {
+        // user provided labels in x prop in [{ x: 3, y: 55 }] data, and those labels are already stored in gl.labels[0], so just re-arrange the gl.labels array
+        gl.labels = gl.labels[0];
+      } else {
+        // user didn't provided any labels, fallback to 1-2-3-4-5
+        var labelArr = [];
+
+        if (gl.axisCharts) {
+          // for axis charts, we get the longest series and create labels from it
+          for (var i = 0; i < gl.series[gl.maxValsInArrayIndex].length; i++) {
+            labelArr.push(i + 1);
+          } // create gl.seriesX as it will be used in calculations of x positions
+
+
+          for (var _i = 0; _i < ser.length; _i++) {
+            gl.seriesX.push(labelArr);
+          } // turn on the isXNumeric flag to allow minX and maxX to function properly
+
+
+          gl.isXNumeric = true;
+        } // no series to pull labels from, put a 0-10 series
+        // possibly, user collapsed all series. Hence we can't work with above calc
+
+
+        if (labelArr.length === 0) {
+          labelArr = [0, 10];
+
+          for (var _i2 = 0; _i2 < ser.length; _i2++) {
+            gl.seriesX.push(labelArr);
+          }
+        } // Finally, pass the labelArr in gl.labels which will be printed on x-axis
+
+
+        gl.labels = labelArr; // Turn on this global flag to indicate no labels were provided by user
+
+        gl.noLabelsProvided = true;
+      }
+    } // Segregate user provided data into appropriate vars
+
+  }, {
+    key: "parseData",
+    value: function parseData(ser) {
+      var w = this.w;
+      var cnf = w.config;
+      var gl = w.globals;
+      this.excludeCollapsedSeriesInYAxis(); // If we detected string in X prop of series, we fallback to category x-axis
+
+      this.fallbackToCategory = false;
+      this.resetGlobals();
+      this.isMultipleY();
+
+      if (gl.axisCharts) {
+        // axisCharts includes line / area / column / scatter
+        this.parseDataAxisCharts(ser);
+      } else {
+        // non-axis charts are pie / donut
+        this.parseDataNonAxisCharts(ser);
+      }
+
+      this.coreUtils.getLargestSeries(); // set Null values to 0 in all series when user hides/shows some series
+
+      if (cnf.chart.type === 'bar' && cnf.chart.stacked) {
+        var series = new Series(this.ctx);
+        gl.series = series.setNullSeriesToZeroValues(gl.series);
+      }
+
+      this.coreUtils.getSeriesTotals();
+
+      if (gl.axisCharts) {
+        this.coreUtils.getStackedSeriesTotals();
+      }
+
+      this.coreUtils.getPercentSeries();
+
+      if (!gl.dataFormatXNumeric && (!gl.isXNumeric || cnf.xaxis.type === 'numeric' && cnf.labels.length === 0 && cnf.xaxis.categories.length === 0)) {
+        // x-axis labels couldn't be detected; hence try searching every option in config
+        this.handleExternalLabelsData(ser);
+      }
+    }
+  }, {
+    key: "xySettings",
+    value: function xySettings() {
+      var xyRatios = null;
+      var w = this.w;
+
+      if (w.globals.axisCharts) {
+        if (w.config.xaxis.crosshairs.position === 'back') {
+          var crosshairs = new Crosshairs(this.ctx);
+          crosshairs.drawXCrosshairs();
+        }
+
+        if (w.config.yaxis[0].crosshairs.position === 'back') {
+          var _crosshairs = new Crosshairs(this.ctx);
+
+          _crosshairs.drawYCrosshairs();
+        }
+
+        xyRatios = this.coreUtils.getCalculatedRatios();
+
+        if (w.config.xaxis.type === 'datetime' && w.config.xaxis.labels.formatter === undefined) {
+          var ts = new TimeScale(this.ctx);
+          var formattedTimeScale;
+
+          if (isFinite(w.globals.minX) && isFinite(w.globals.maxX) && !w.globals.isBarHorizontal) {
+            formattedTimeScale = ts.calculateTimeScaleTicks(w.globals.minX, w.globals.maxX);
+            ts.recalcDimensionsBasedOnFormat(formattedTimeScale, false);
+          } else if (w.globals.isBarHorizontal) {
+            formattedTimeScale = ts.calculateTimeScaleTicks(w.globals.minY, w.globals.maxY);
+            ts.recalcDimensionsBasedOnFormat(formattedTimeScale, true);
+          }
+        }
+      }
+
+      return xyRatios;
+    }
+  }, {
+    key: "drawAxis",
+    value: function drawAxis(type, xyRatios) {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      var xAxis = new XAxis(this.ctx);
+      var yAxis = new YAxis(this.ctx);
+
+      if (gl.axisCharts && type !== 'radar') {
+        var elXaxis, elYaxis;
+
+        if (gl.isBarHorizontal) {
+          elYaxis = yAxis.drawYaxisInversed(0);
+          elXaxis = xAxis.drawXaxisInversed(0);
+          gl.dom.elGraphical.add(elXaxis);
+          gl.dom.elGraphical.add(elYaxis);
+        } else {
+          elXaxis = xAxis.drawXaxis();
+          gl.dom.elGraphical.add(elXaxis);
+          cnf.yaxis.map(function (yaxe, index) {
+            if (gl.ignoreYAxisIndexes.indexOf(index) === -1) {
+              elYaxis = yAxis.drawYaxis(index);
+              gl.dom.Paper.add(elYaxis);
+            }
+          });
+        }
+      }
+
+      cnf.yaxis.map(function (yaxe, index) {
+        if (gl.ignoreYAxisIndexes.indexOf(index) === -1) {
+          yAxis.yAxisTitleRotate(index, yaxe.opposite);
+        }
+      });
+    }
+  }, {
+    key: "setupBrushHandler",
+    value: function setupBrushHandler() {
+      var _this3 = this;
+
+      var w = this.w; // only for brush charts
+
+      if (!w.config.chart.brush.enabled) {
+        return;
+      } // if user has not defined a custom function for selection - we handle the brush chart
+      // otherwise we leave it to the user to define the functionality for selection
+
+
+      if (typeof w.config.chart.events.selection !== 'function') {
+        var targets = w.config.chart.brush.targets || [w.config.chart.brush.target]; // retro compatibility with single target option
+
+        targets.forEach(function (target) {
+          var targetChart = ApexCharts.getChartByID(target);
+          targetChart.w.globals.brushSource = _this3.ctx;
+
+          var updateSourceChart = function updateSourceChart() {
+            _this3.ctx._updateOptions({
+              chart: {
+                selection: {
+                  xaxis: {
+                    min: targetChart.w.globals.minX,
+                    max: targetChart.w.globals.maxX
+                  }
+                }
+              }
+            }, false, false);
+          };
+
+          if (typeof targetChart.w.config.chart.events.zoomed !== 'function') {
+            targetChart.w.config.chart.events.zoomed = function () {
+              updateSourceChart();
+            };
+          }
+
+          if (typeof targetChart.w.config.chart.events.scrolled !== 'function') {
+            targetChart.w.config.chart.events.scrolled = function () {
+              updateSourceChart();
+            };
+          }
+
+          w.config.chart.events.selection = function (chart, e) {
+            var yaxis = Utils.clone(w.config.yaxis);
+
+            if (w.config.chart.brush.autoScaleYaxis) {
+              var scale = new Range(targetChart);
+              yaxis = scale.autoScaleY(targetChart, e);
+            }
+
+            targetChart._updateOptions({
+              xaxis: {
+                min: e.xaxis.min,
+                max: e.xaxis.max
+              },
+              yaxis: yaxis
+            }, false, false, false);
+          };
+        });
+      }
+    }
+  }]);
+
+  return Core;
+}();
+
+/**
+ * @this {Promise}
+ */
+function finallyConstructor(callback) {
+  var constructor = this.constructor;
+  return this.then(
+    function(value) {
+      return constructor.resolve(callback()).then(function() {
+        return value;
+      });
+    },
+    function(reason) {
+      return constructor.resolve(callback()).then(function() {
+        return constructor.reject(reason);
+      });
+    }
+  );
+}
+
+// Store setTimeout reference so promise-polyfill will be unaffected by
+// other code modifying setTimeout (like sinon.useFakeTimers())
+var setTimeoutFunc = setTimeout;
+
+function noop() {}
+
+// Polyfill for Function.prototype.bind
+function bind(fn, thisArg) {
+  return function() {
+    fn.apply(thisArg, arguments);
+  };
+}
+
+/**
+ * @constructor
+ * @param {Function} fn
+ */
+function Promise$1(fn) {
+  if (!(this instanceof Promise$1))
+    throw new TypeError('Promises must be constructed via new');
+  if (typeof fn !== 'function') throw new TypeError('not a function');
+  /** @type {!number} */
+  this._state = 0;
+  /** @type {!boolean} */
+  this._handled = false;
+  /** @type {Promise|undefined} */
+  this._value = undefined;
+  /** @type {!Array<!Function>} */
+  this._deferreds = [];
+
+  doResolve(fn, this);
+}
+
+function handle(self, deferred) {
+  while (self._state === 3) {
+    self = self._value;
+  }
+  if (self._state === 0) {
+    self._deferreds.push(deferred);
+    return;
+  }
+  self._handled = true;
+  Promise$1._immediateFn(function() {
+    var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
+    if (cb === null) {
+      (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
+      return;
+    }
+    var ret;
+    try {
+      ret = cb(self._value);
+    } catch (e) {
+      reject(deferred.promise, e);
+      return;
+    }
+    resolve(deferred.promise, ret);
+  });
+}
+
+function resolve(self, newValue) {
+  try {
+    // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
+    if (newValue === self)
+      throw new TypeError('A promise cannot be resolved with itself.');
+    if (
+      newValue &&
+      (typeof newValue === 'object' || typeof newValue === 'function')
+    ) {
+      var then = newValue.then;
+      if (newValue instanceof Promise$1) {
+        self._state = 3;
+        self._value = newValue;
+        finale(self);
+        return;
+      } else if (typeof then === 'function') {
+        doResolve(bind(then, newValue), self);
+        return;
+      }
+    }
+    self._state = 1;
+    self._value = newValue;
+    finale(self);
+  } catch (e) {
+    reject(self, e);
+  }
+}
+
+function reject(self, newValue) {
+  self._state = 2;
+  self._value = newValue;
+  finale(self);
+}
+
+function finale(self) {
+  if (self._state === 2 && self._deferreds.length === 0) {
+    Promise$1._immediateFn(function() {
+      if (!self._handled) {
+        Promise$1._unhandledRejectionFn(self._value);
+      }
+    });
+  }
+
+  for (var i = 0, len = self._deferreds.length; i < len; i++) {
+    handle(self, self._deferreds[i]);
+  }
+  self._deferreds = null;
+}
+
+/**
+ * @constructor
+ */
+function Handler(onFulfilled, onRejected, promise) {
+  this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
+  this.onRejected = typeof onRejected === 'function' ? onRejected : null;
+  this.promise = promise;
+}
+
+/**
+ * Take a potentially misbehaving resolver function and make sure
+ * onFulfilled and onRejected are only called once.
+ *
+ * Makes no guarantees about asynchrony.
+ */
+function doResolve(fn, self) {
+  var done = false;
+  try {
+    fn(
+      function(value) {
+        if (done) return;
+        done = true;
+        resolve(self, value);
+      },
+      function(reason) {
+        if (done) return;
+        done = true;
+        reject(self, reason);
+      }
+    );
+  } catch (ex) {
+    if (done) return;
+    done = true;
+    reject(self, ex);
+  }
+}
+
+Promise$1.prototype['catch'] = function(onRejected) {
+  return this.then(null, onRejected);
+};
+
+Promise$1.prototype.then = function(onFulfilled, onRejected) {
+  // @ts-ignore
+  var prom = new this.constructor(noop);
+
+  handle(this, new Handler(onFulfilled, onRejected, prom));
+  return prom;
+};
+
+Promise$1.prototype['finally'] = finallyConstructor;
+
+Promise$1.all = function(arr) {
+  return new Promise$1(function(resolve, reject) {
+    if (!arr || typeof arr.length === 'undefined')
+      throw new TypeError('Promise.all accepts an array');
+    var args = Array.prototype.slice.call(arr);
+    if (args.length === 0) return resolve([]);
+    var remaining = args.length;
+
+    function res(i, val) {
+      try {
+        if (val && (typeof val === 'object' || typeof val === 'function')) {
+          var then = val.then;
+          if (typeof then === 'function') {
+            then.call(
+              val,
+              function(val) {
+                res(i, val);
+              },
+              reject
+            );
+            return;
+          }
+        }
+        args[i] = val;
+        if (--remaining === 0) {
+          resolve(args);
+        }
+      } catch (ex) {
+        reject(ex);
+      }
+    }
+
+    for (var i = 0; i < args.length; i++) {
+      res(i, args[i]);
+    }
+  });
+};
+
+Promise$1.resolve = function(value) {
+  if (value && typeof value === 'object' && value.constructor === Promise$1) {
+    return value;
+  }
+
+  return new Promise$1(function(resolve) {
+    resolve(value);
+  });
+};
+
+Promise$1.reject = function(value) {
+  return new Promise$1(function(resolve, reject) {
+    reject(value);
+  });
+};
+
+Promise$1.race = function(values) {
+  return new Promise$1(function(resolve, reject) {
+    for (var i = 0, len = values.length; i < len; i++) {
+      values[i].then(resolve, reject);
+    }
+  });
+};
+
+// Use polyfill for setImmediate for performance gains
+Promise$1._immediateFn =
+  (typeof setImmediate === 'function' &&
+    function(fn) {
+      setImmediate(fn);
+    }) ||
+  function(fn) {
+    setTimeoutFunc(fn, 0);
+  };
+
+Promise$1._unhandledRejectionFn = function _unhandledRejectionFn(err) {
+  if (typeof console !== 'undefined' && console) {
+    console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
+  }
+};
+
+var Exports =
+/*#__PURE__*/
+function () {
+  function Exports(ctx) {
+    _classCallCheck(this, Exports);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Exports, [{
+    key: "getSvgString",
+    value: function getSvgString() {
+      return this.w.globals.dom.Paper.svg();
+    }
+  }, {
+    key: "cleanup",
+    value: function cleanup() {
+      var w = this.w; // hide some elements to avoid printing them on exported svg
+
+      var xcrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs');
+      var ycrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs');
+
+      if (xcrosshairs) {
+        xcrosshairs.setAttribute('x', -500);
+      }
+
+      if (ycrosshairs) {
+        ycrosshairs.setAttribute('y1', -100);
+        ycrosshairs.setAttribute('y2', -100);
+      }
+    }
+  }, {
+    key: "svgUrl",
+    value: function svgUrl() {
+      this.cleanup();
+      var svgData = this.getSvgString();
+      var svgBlob = new Blob([svgData], {
+        type: 'image/svg+xml;charset=utf-8'
+      });
+      return URL.createObjectURL(svgBlob);
+    }
+  }, {
+    key: "dataURI",
+    value: function dataURI() {
+      var _this = this;
+
+      return new Promise$1(function (resolve) {
+        var w = _this.w;
+
+        _this.cleanup();
+
+        var canvas = document.createElement('canvas');
+        canvas.width = w.globals.svgWidth;
+        canvas.height = w.globals.svgHeight;
+        var canvasBg = w.config.chart.background === 'transparent' ? '#fff' : w.config.chart.background;
+        var ctx = canvas.getContext('2d');
+        ctx.fillStyle = canvasBg;
+        ctx.fillRect(0, 0, canvas.width, canvas.height);
+        var DOMURL = window.URL || window.webkitURL || window;
+        var img = new Image();
+        img.crossOrigin = 'anonymous';
+
+        var svgData = _this.getSvgString();
+
+        var svgUrl = 'data:image/svg+xml,' + encodeURIComponent(svgData);
+
+        img.onload = function () {
+          ctx.drawImage(img, 0, 0);
+          DOMURL.revokeObjectURL(svgUrl);
+          var imgURI = canvas.toDataURL('image/png');
+          resolve(imgURI);
+        };
+
+        img.src = svgUrl;
+      });
+    }
+  }, {
+    key: "exportToSVG",
+    value: function exportToSVG() {
+      this.triggerDownload(this.svgUrl(), '.svg');
+    }
+  }, {
+    key: "exportToPng",
+    value: function exportToPng() {
+      var _this2 = this;
+
+      this.dataURI().then(function (imgURI) {
+        _this2.triggerDownload(imgURI, '.png');
+      });
+    }
+  }, {
+    key: "triggerDownload",
+    value: function triggerDownload(href, ext) {
+      var downloadLink = document.createElement('a');
+      downloadLink.href = href;
+      downloadLink.download = this.w.globals.chartID + ext;
+      document.body.appendChild(downloadLink);
+      downloadLink.click();
+      document.body.removeChild(downloadLink);
+    }
+  }]);
+
+  return Exports;
+}();
+
+/**
+ * ApexCharts Grid Class for drawing Cartesian Grid.
+ *
+ * @module Grid
+ **/
+
+var Grid =
+/*#__PURE__*/
+function () {
+  function Grid(ctx) {
+    _classCallCheck(this, Grid);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+    this.anim = new Animations(this.ctx);
+    this.xaxisLabels = w.globals.labels.slice();
+    this.animX = w.config.grid.xaxis.lines.animate && w.config.chart.animations.enabled;
+    this.animY = w.config.grid.yaxis.lines.animate && w.config.chart.animations.enabled;
+
+    if (w.globals.timelineLabels.length > 0) {
+      //  timeline labels are there
+      this.xaxisLabels = w.globals.timelineLabels.slice();
+    }
+  } // .when using sparklines or when showing no grid, we need to have a grid area which is reused at many places for other calculations as well
+
+
+  _createClass(Grid, [{
+    key: "drawGridArea",
+    value: function drawGridArea() {
+      var elGrid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+
+      if (elGrid === null) {
+        elGrid = graphics.group({
+          class: 'apexcharts-grid'
+        });
+      }
+
+      var elVerticalLine = graphics.drawLine(w.globals.padHorizontal, 1, w.globals.padHorizontal, w.globals.gridHeight, 'transparent');
+      var elHorzLine = graphics.drawLine(w.globals.padHorizontal, w.globals.gridHeight, w.globals.gridWidth, w.globals.gridHeight, 'transparent');
+      elGrid.add(elHorzLine);
+      elGrid.add(elVerticalLine);
+      return elGrid;
+    }
+  }, {
+    key: "drawGrid",
+    value: function drawGrid() {
+      var w = this.w;
+      var xAxis = new XAxis(this.ctx);
+      var yaxis = new YAxis(this.ctx);
+      var gl = this.w.globals;
+      var elgrid = null;
+
+      if (gl.axisCharts) {
+        if (w.config.grid.show) {
+          // grid is drawn after xaxis and yaxis are drawn
+          elgrid = this.renderGrid();
+          gl.dom.elGraphical.add(elgrid.el);
+          this.drawGridArea(elgrid.el);
+        } else {
+          var elgridArea = this.drawGridArea();
+          gl.dom.elGraphical.add(elgridArea);
+        }
+
+        if (elgrid !== null) {
+          xAxis.xAxisLabelCorrections(elgrid.xAxisTickWidth);
+        }
+
+        yaxis.setYAxisTextAlignments();
+      }
+    } // This mask will clip off overflowing graphics from the drawable area
+
+  }, {
+    key: "createGridMask",
+    value: function createGridMask() {
+      var w = this.w;
+      var gl = w.globals;
+      var graphics = new Graphics(this.ctx);
+      var strokeSize = Array.isArray(w.config.stroke.width) ? 0 : w.config.stroke.width;
+
+      if (Array.isArray(w.config.stroke.width)) {
+        var strokeMaxSize = 0;
+        w.config.stroke.width.forEach(function (m) {
+          strokeMaxSize = Math.max(strokeMaxSize, m);
+        });
+        strokeSize = strokeMaxSize;
+      }
+
+      gl.dom.elGridRectMask = document.createElementNS(gl.SVGNS, 'clipPath');
+      gl.dom.elGridRectMask.setAttribute('id', "gridRectMask".concat(gl.cuid));
+      gl.dom.elGridRectMarkerMask = document.createElementNS(gl.SVGNS, 'clipPath');
+      gl.dom.elGridRectMarkerMask.setAttribute('id', "gridRectMarkerMask".concat(gl.cuid));
+      gl.dom.elGridRect = graphics.drawRect(-strokeSize / 2, -strokeSize / 2, gl.gridWidth + strokeSize, gl.gridHeight + strokeSize, 0, '#fff');
+      var coreUtils = new CoreUtils(this);
+      coreUtils.getLargestMarkerSize();
+      var markerSize = w.globals.markers.largestSize + 1;
+      gl.dom.elGridRectMarker = graphics.drawRect(-markerSize, -markerSize, gl.gridWidth + markerSize * 2, gl.gridHeight + markerSize * 2, 0, '#fff');
+      gl.dom.elGridRectMask.appendChild(gl.dom.elGridRect.node);
+      gl.dom.elGridRectMarkerMask.appendChild(gl.dom.elGridRectMarker.node);
+      var defs = gl.dom.baseEl.querySelector('defs');
+      defs.appendChild(gl.dom.elGridRectMask);
+      defs.appendChild(gl.dom.elGridRectMarkerMask);
+    } // actual grid rendering
+
+  }, {
+    key: "renderGrid",
+    value: function renderGrid() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var strokeDashArray = w.config.grid.strokeDashArray;
+      var elg = graphics.group({
+        class: 'apexcharts-grid'
+      });
+      var elgridLinesH = graphics.group({
+        class: 'apexcharts-gridlines-horizontal'
+      });
+      var elgridLinesV = graphics.group({
+        class: 'apexcharts-gridlines-vertical'
+      });
+      elg.add(elgridLinesH);
+      elg.add(elgridLinesV);
+      var tickAmount = 8;
+
+      for (var i = 0; i < w.globals.series.length; i++) {
+        if (typeof w.globals.yAxisScale[i] !== 'undefined') {
+          tickAmount = w.globals.yAxisScale[i].result.length - 1;
+        }
+
+        if (tickAmount > 2) break;
+      }
+
+      var xCount;
+
+      if (!w.globals.isBarHorizontal) {
+        xCount = this.xaxisLabels.length; // draw vertical lines
+
+        if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) {
+          var x1 = w.globals.padHorizontal;
+          var y1 = 0;
+          var x2;
+          var y2 = w.globals.gridHeight;
+
+          if (w.globals.timelineLabels.length > 0) {
+            for (var _i = 0; _i < xCount; _i++) {
+              x1 = this.xaxisLabels[_i].position;
+              x2 = this.xaxisLabels[_i].position;
+
+              if (w.config.grid.xaxis.lines.show && x1 > 0 && x1 < w.globals.gridWidth) {
+                var line = graphics.drawLine(x1, y1, x2, y2, w.config.grid.borderColor, strokeDashArray);
+                line.node.classList.add('apexcharts-gridline');
+                elgridLinesV.add(line);
+
+                if (this.animX) {
+                  this.animateLine(line, {
+                    x1: 0,
+                    x2: 0
+                  }, {
+                    x1: x1,
+                    x2: x2
+                  });
+                }
+              }
+
+              var xAxis = new XAxis(this.ctx);
+
+              if (_i === xCount - 1) {
+                if (!w.globals.skipLastTimelinelabel) {
+                  // skip drawing last label here
+                  xAxis.drawXaxisTicks(x1, elg);
+                }
+              } else {
+                xAxis.drawXaxisTicks(x1, elg);
+              }
+            }
+          } else {
+            var xCountForCategoryCharts = xCount;
+
+            for (var _i2 = 0; _i2 < xCountForCategoryCharts; _i2++) {
+              var x1Count = xCountForCategoryCharts;
+
+              if (w.globals.isXNumeric && w.config.chart.type !== 'bar') {
+                x1Count -= 1;
+              }
+
+              x1 = x1 + w.globals.gridWidth / x1Count;
+              x2 = x1; // skip the last line
+
+              if (_i2 === x1Count - 1) break;
+
+              if (w.config.grid.xaxis.lines.show) {
+                var _line = graphics.drawLine(x1, y1, x2, y2, w.config.grid.borderColor, strokeDashArray);
+
+                _line.node.classList.add('apexcharts-gridline');
+
+                elgridLinesV.add(_line);
+
+                if (this.animX) {
+                  this.animateLine(_line, {
+                    x1: 0,
+                    x2: 0
+                  }, {
+                    x1: x1,
+                    x2: x2
+                  });
+                }
+              }
+
+              var _xAxis = new XAxis(this.ctx);
+
+              _xAxis.drawXaxisTicks(x1, elg);
+            }
+          }
+        } // draw horizontal lines
+
+
+        if (w.config.grid.yaxis.lines.show) {
+          var _x = 0;
+          var _y = 0;
+          var _y2 = 0;
+          var _x2 = w.globals.gridWidth;
+
+          for (var _i3 = 0; _i3 < tickAmount + 1; _i3++) {
+            var _line2 = graphics.drawLine(_x, _y, _x2, _y2, w.config.grid.borderColor, strokeDashArray);
+
+            elgridLinesH.add(_line2);
+
+            _line2.node.classList.add('apexcharts-gridline');
+
+            if (this.animY) {
+              this.animateLine(_line2, {
+                y1: _y + 20,
+                y2: _y2 + 20
+              }, {
+                y1: _y,
+                y2: _y2
+              });
+            }
+
+            _y = _y + w.globals.gridHeight / tickAmount;
+            _y2 = _y;
+          }
+        }
+      } else {
+        xCount = tickAmount; // draw vertical lines
+
+        if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) {
+          var _x3 = w.globals.padHorizontal;
+          var _y3 = 0;
+
+          var _x4;
+
+          var _y4 = w.globals.gridHeight;
+
+          for (var _i4 = 0; _i4 < xCount + 1; _i4++) {
+            _x3 = _x3 + w.globals.gridWidth / xCount + 0.3;
+            _x4 = _x3; // skip the last vertical line
+
+            if (_i4 === xCount - 1) break;
+
+            if (w.config.grid.xaxis.lines.show) {
+              var _line3 = graphics.drawLine(_x3, _y3, _x4, _y4, w.config.grid.borderColor, strokeDashArray);
+
+              _line3.node.classList.add('apexcharts-gridline');
+
+              elgridLinesV.add(_line3);
+
+              if (this.animX) {
+                this.animateLine(_line3, {
+                  x1: 0,
+                  x2: 0
+                }, {
+                  x1: _x3,
+                  x2: _x4
+                });
+              }
+            } // skip the first vertical line
+
+
+            var _xAxis2 = new XAxis(this.ctx);
+
+            _xAxis2.drawXaxisTicks(_x3, elg);
+          }
+        } // draw horizontal lines
+
+
+        if (w.config.grid.yaxis.lines.show) {
+          var _x5 = 0;
+          var _y5 = 0;
+          var _y6 = 0;
+          var _x6 = w.globals.gridWidth;
+
+          for (var _i5 = 0; _i5 < w.globals.dataPoints + 1; _i5++) {
+            var _line4 = graphics.drawLine(_x5, _y5, _x6, _y6, w.config.grid.borderColor, strokeDashArray);
+
+            elgridLinesH.add(_line4);
+
+            _line4.node.classList.add('apexcharts-gridline');
+
+            if (this.animY) {
+              this.animateLine(_line4, {
+                y1: _y5 + 20,
+                y2: _y6 + 20
+              }, {
+                y1: _y5,
+                y2: _y6
+              });
+            }
+
+            _y5 = _y5 + w.globals.gridHeight / w.globals.dataPoints;
+            _y6 = _y5;
+          }
+        }
+      }
+
+      this.drawGridBands(elg, xCount, tickAmount);
+      return {
+        el: elg,
+        xAxisTickWidth: w.globals.gridWidth / xCount
+      };
+    }
+  }, {
+    key: "drawGridBands",
+    value: function drawGridBands(elg, xCount, tickAmount) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx); // rows background bands
+
+      if (w.config.grid.row.colors !== undefined && w.config.grid.row.colors.length > 0) {
+        var x1 = 0;
+        var y1 = 0;
+        var y2 = w.globals.gridHeight / tickAmount;
+        var x2 = w.globals.gridWidth;
+
+        for (var i = 0, c = 0; i < tickAmount; i++, c++) {
+          if (c >= w.config.grid.row.colors.length) {
+            c = 0;
+          }
+
+          var color = w.config.grid.row.colors[c];
+          var rect = graphics.drawRect(x1, y1, x2, y2, 0, color, w.config.grid.row.opacity);
+          elg.add(rect);
+          rect.node.classList.add('apexcharts-gridRow');
+          y1 = y1 + w.globals.gridHeight / tickAmount;
+        }
+      } // columns background bands
+
+
+      if (w.config.grid.column.colors !== undefined && w.config.grid.column.colors.length > 0) {
+        var _x7 = w.globals.padHorizontal;
+        var _y7 = 0;
+
+        var _x8 = w.globals.padHorizontal + w.globals.gridWidth / xCount;
+
+        var _y8 = w.globals.gridHeight;
+
+        for (var _i6 = 0, _c = 0; _i6 < xCount; _i6++, _c++) {
+          if (_c >= w.config.grid.column.colors.length) {
+            _c = 0;
+          }
+
+          var _color = w.config.grid.column.colors[_c];
+
+          var _rect = graphics.drawRect(_x7, _y7, _x8, _y8, 0, _color, w.config.grid.column.opacity);
+
+          _rect.node.classList.add('apexcharts-gridColumn');
+
+          elg.add(_rect);
+          _x7 = _x7 + w.globals.gridWidth / xCount;
+        }
+      }
+    }
+  }, {
+    key: "animateLine",
+    value: function animateLine(line, from, to) {
+      var w = this.w;
+      var initialAnim = w.config.chart.animations;
+
+      if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+        var speed = initialAnim.speed;
+        this.anim.animateLine(line, from, to, speed);
+      }
+    }
+  }]);
+
+  return Grid;
+}();
+
+/**
+ * ApexCharts Legend Class to draw legend.
+ *
+ * @module Legend
+ **/
+
+var Legend =
+/*#__PURE__*/
+function () {
+  function Legend(ctx, opts) {
+    _classCallCheck(this, Legend);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.onLegendClick = this.onLegendClick.bind(this);
+    this.onLegendHovered = this.onLegendHovered.bind(this);
+  }
+
+  _createClass(Legend, [{
+    key: "init",
+    value: function init() {
+      var w = this.w;
+      var gl = w.globals;
+      var cnf = w.config;
+      var showLegendAlways = cnf.legend.showForSingleSeries && gl.series.length === 1 || gl.series.length > 1;
+
+      if ((showLegendAlways || !gl.axisCharts) && cnf.legend.show) {
+        while (gl.dom.elLegendWrap.firstChild) {
+          gl.dom.elLegendWrap.removeChild(gl.dom.elLegendWrap.firstChild);
+        }
+
+        this.drawLegends();
+
+        if (!Utils.isIE11()) {
+          this.appendToForeignObject();
+        } else {
+          // IE11 doesn't supports foreignObject, hence append it to <head>
+          document.getElementsByTagName('head')[0].appendChild(this.getLegendStyles());
+        }
+
+        if (cnf.legend.position === 'bottom' || cnf.legend.position === 'top') {
+          this.legendAlignHorizontal();
+        } else if (cnf.legend.position === 'right' || cnf.legend.position === 'left') {
+          this.legendAlignVertical();
+        }
+      }
+    }
+  }, {
+    key: "appendToForeignObject",
+    value: function appendToForeignObject() {
+      var gl = this.w.globals;
+      var elForeign = document.createElementNS(gl.SVGNS, 'foreignObject');
+      elForeign.setAttribute('x', 0);
+      elForeign.setAttribute('y', 0);
+      elForeign.setAttribute('width', gl.svgWidth);
+      elForeign.setAttribute('height', gl.svgHeight);
+      gl.dom.elLegendWrap.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
+      elForeign.appendChild(gl.dom.elLegendWrap);
+      elForeign.appendChild(this.getLegendStyles());
+      gl.dom.Paper.node.insertBefore(elForeign, gl.dom.elGraphical.node);
+    }
+  }, {
+    key: "drawLegends",
+    value: function drawLegends() {
+      var self = this;
+      var w = this.w;
+      var fontFamily = w.config.legend.fontFamily;
+      var legendNames = w.globals.seriesNames;
+      var fillcolor = w.globals.colors.slice();
+
+      if (w.config.chart.type === 'heatmap') {
+        var ranges = w.config.plotOptions.heatmap.colorScale.ranges;
+        legendNames = ranges.map(function (colorScale) {
+          return colorScale.name ? colorScale.name : colorScale.from + ' - ' + colorScale.to;
+        });
+        fillcolor = ranges.map(function (color) {
+          return color.color;
+        });
+      }
+
+      var legendFormatter = w.globals.legendFormatter;
+
+      for (var i = 0; i <= legendNames.length - 1; i++) {
+        var text = legendFormatter(legendNames[i], {
+          seriesIndex: i,
+          w: w
+        });
+        var collapsedSeries = false;
+        var ancillaryCollapsedSeries = false;
+
+        if (w.globals.collapsedSeries.length > 0) {
+          for (var c = 0; c < w.globals.collapsedSeries.length; c++) {
+            if (w.globals.collapsedSeries[c].index === i) {
+              collapsedSeries = true;
+            }
+          }
+        }
+
+        if (w.globals.ancillaryCollapsedSeriesIndices.length > 0) {
+          for (var _c = 0; _c < w.globals.ancillaryCollapsedSeriesIndices.length; _c++) {
+            if (w.globals.ancillaryCollapsedSeriesIndices[_c] === i) {
+              ancillaryCollapsedSeries = true;
+            }
+          }
+        }
+
+        var elMarker = document.createElement('span');
+        elMarker.classList.add('apexcharts-legend-marker');
+        var mOffsetX = w.config.legend.markers.offsetX;
+        var mOffsetY = w.config.legend.markers.offsetY;
+        var mHeight = w.config.legend.markers.height;
+        var mWidth = w.config.legend.markers.width;
+        var mBorderWidth = w.config.legend.markers.strokeWidth;
+        var mBorderColor = w.config.legend.markers.strokeColor;
+        var mBorderRadius = w.config.legend.markers.radius;
+        var mStyle = elMarker.style;
+        mStyle.background = fillcolor[i];
+        mStyle.color = fillcolor[i];
+        mStyle.height = Array.isArray(mHeight) ? parseFloat(mHeight[i]) + 'px' : parseFloat(mHeight) + 'px';
+        mStyle.width = Array.isArray(mWidth) ? parseFloat(mWidth[i]) + 'px' : parseFloat(mWidth) + 'px';
+        mStyle.left = Array.isArray(mOffsetX) ? mOffsetX[i] : mOffsetX;
+        mStyle.top = Array.isArray(mOffsetY) ? mOffsetY[i] : mOffsetY;
+        mStyle.borderWidth = Array.isArray(mBorderWidth) ? mBorderWidth[i] : mBorderWidth;
+        mStyle.borderColor = Array.isArray(mBorderColor) ? mBorderColor[i] : mBorderColor;
+        mStyle.borderRadius = Array.isArray(mBorderRadius) ? parseFloat(mBorderRadius[i]) + 'px' : parseFloat(mBorderRadius) + 'px';
+
+        if (w.config.legend.markers.customHTML) {
+          if (Array.isArray(w.config.legend.markers.customHTML)) {
+            elMarker.innerHTML = w.config.legend.markers.customHTML[i]();
+          } else {
+            elMarker.innerHTML = w.config.legend.markers.customHTML();
+          }
+        }
+
+        Graphics.setAttrs(elMarker, {
+          rel: i + 1,
+          'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+        });
+
+        if (collapsedSeries || ancillaryCollapsedSeries) {
+          elMarker.classList.add('inactive-legend');
+        }
+
+        var elLegend = document.createElement('div');
+        var elLegendText = document.createElement('span');
+        elLegendText.classList.add('apexcharts-legend-text');
+        elLegendText.innerHTML = text;
+        var textColor = w.config.legend.labels.useSeriesColors ? w.globals.colors[i] : w.config.legend.labels.colors;
+
+        if (!textColor) {
+          textColor = w.config.chart.foreColor;
+        }
+
+        elLegendText.style.color = textColor;
+        elLegendText.style.fontSize = parseFloat(w.config.legend.fontSize) + 'px';
+        elLegendText.style.fontFamily = fontFamily || w.config.chart.fontFamily;
+        Graphics.setAttrs(elLegendText, {
+          rel: i + 1,
+          'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+        });
+        elLegend.appendChild(elMarker);
+        elLegend.appendChild(elLegendText);
+        var coreUtils = new CoreUtils(this.ctx);
+
+        if (!w.config.legend.showForZeroSeries) {
+          var total = coreUtils.getSeriesTotalByIndex(i);
+
+          if (total === 0 && coreUtils.seriesHaveSameValues(i) && !coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) {
+            elLegend.classList.add('apexcharts-hidden-zero-series');
+          }
+        }
+
+        if (!w.config.legend.showForNullSeries) {
+          if (coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) {
+            elLegend.classList.add('apexcharts-hidden-null-series');
+          }
+        }
+
+        w.globals.dom.elLegendWrap.appendChild(elLegend);
+        w.globals.dom.elLegendWrap.classList.add(w.config.legend.horizontalAlign); // w.globals.dom.elLegendWrap.classList.add(w.config.legend.verticalAlign)
+
+        w.globals.dom.elLegendWrap.classList.add('position-' + w.config.legend.position);
+        elLegend.classList.add('apexcharts-legend-series');
+        elLegend.style.margin = "".concat(w.config.legend.itemMargin.horizontal, "px ").concat(w.config.legend.itemMargin.vertical, "px");
+        w.globals.dom.elLegendWrap.style.width = w.config.legend.width ? w.config.legend.width + 'px' : '';
+        w.globals.dom.elLegendWrap.style.height = w.config.legend.height ? w.config.legend.height + 'px' : '';
+        Graphics.setAttrs(elLegend, {
+          rel: i + 1,
+          'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+        });
+
+        if (collapsedSeries || ancillaryCollapsedSeries) {
+          elLegend.classList.add('inactive-legend');
+        }
+
+        if (!w.config.legend.onItemClick.toggleDataSeries) {
+          elLegend.classList.add('no-click');
+        }
+      } // for now - just prevent click on heatmap legend - and allow hover only
+
+
+      var clickAllowed = w.config.chart.type !== 'heatmap';
+
+      if (clickAllowed && w.config.legend.onItemClick.toggleDataSeries) {
+        w.globals.dom.elWrap.addEventListener('click', self.onLegendClick, true);
+      }
+
+      if (w.config.legend.onItemHover.highlightDataSeries) {
+        w.globals.dom.elWrap.addEventListener('mousemove', self.onLegendHovered, true);
+        w.globals.dom.elWrap.addEventListener('mouseout', self.onLegendHovered, true);
+      }
+    }
+  }, {
+    key: "getLegendBBox",
+    value: function getLegendBBox() {
+      var w = this.w;
+      var currLegendsWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+      var currLegendsWrapRect = currLegendsWrap.getBoundingClientRect();
+      var currLegendsWrapWidth = currLegendsWrapRect.width;
+      var currLegendsWrapHeight = currLegendsWrapRect.height;
+      return {
+        clwh: currLegendsWrapHeight,
+        clww: currLegendsWrapWidth
+      };
+    }
+  }, {
+    key: "setLegendWrapXY",
+    value: function setLegendWrapXY(offsetX, offsetY) {
+      var w = this.w;
+      var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+      var legendRect = elLegendWrap.getBoundingClientRect();
+      var x = 0;
+      var y = 0;
+
+      if (w.config.legend.position === 'bottom') {
+        y = y + (w.globals.svgHeight - legendRect.height / 2);
+      } else if (w.config.legend.position === 'top') {
+        var dim = new Dimensions(this.ctx);
+        var titleH = dim.getTitleSubtitleCoords('title').height;
+        var subtitleH = dim.getTitleSubtitleCoords('subtitle').height;
+        y = y + (titleH > 0 ? titleH - 10 : 0) + (subtitleH > 0 ? subtitleH - 10 : 0);
+      }
+
+      elLegendWrap.style.position = 'absolute';
+      x = x + offsetX + w.config.legend.offsetX;
+      y = y + offsetY + w.config.legend.offsetY;
+      elLegendWrap.style.left = x + 'px';
+      elLegendWrap.style.top = y + 'px';
+
+      if (w.config.legend.position === 'bottom') {
+        elLegendWrap.style.top = 'auto';
+        elLegendWrap.style.bottom = 10 + w.config.legend.offsetY + 'px';
+      } else if (w.config.legend.position === 'right') {
+        elLegendWrap.style.left = 'auto';
+        elLegendWrap.style.right = 25 + w.config.legend.offsetX + 'px';
+      }
+
+      if (elLegendWrap.style.width) {
+        elLegendWrap.style.width = parseInt(w.config.legend.width) + 'px';
+      }
+
+      if (elLegendWrap.style.height) {
+        elLegendWrap.style.height = parseInt(w.config.legend.height) + 'px';
+      }
+    }
+  }, {
+    key: "legendAlignHorizontal",
+    value: function legendAlignHorizontal() {
+      var w = this.w;
+      var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+      elLegendWrap.style.right = 0;
+      var lRect = this.getLegendBBox();
+      var dimensions = new Dimensions(this.ctx);
+      var titleRect = dimensions.getTitleSubtitleCoords('title');
+      var subtitleRect = dimensions.getTitleSubtitleCoords('subtitle');
+      var offsetX = 20;
+      var offsetY = 0; // the whole legend box is set to bottom
+
+      if (w.config.legend.position === 'bottom') {
+        offsetY = -lRect.clwh / 1.8;
+      } else if (w.config.legend.position === 'top') {
+        offsetY = titleRect.height + subtitleRect.height + w.config.title.margin + w.config.subtitle.margin - 15;
+      }
+
+      this.setLegendWrapXY(offsetX, offsetY);
+    }
+  }, {
+    key: "legendAlignVertical",
+    value: function legendAlignVertical() {
+      var w = this.w;
+      var lRect = this.getLegendBBox();
+      var offsetY = 20;
+      var offsetX = 0;
+
+      if (w.config.legend.position === 'left') {
+        offsetX = 20;
+      }
+
+      if (w.config.legend.position === 'right') {
+        offsetX = w.globals.svgWidth - lRect.clww - 10;
+      }
+
+      this.setLegendWrapXY(offsetX, offsetY);
+    }
+  }, {
+    key: "onLegendHovered",
+    value: function onLegendHovered(e) {
+      var w = this.w;
+      var hoverOverLegend = e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker');
+
+      if (w.config.chart.type !== 'heatmap') {
+        if (!e.target.classList.contains('inactive-legend') && hoverOverLegend) {
+          var series = new Series(this.ctx);
+          series.toggleSeriesOnHover(e, e.target);
+        }
+      } else {
+        // for heatmap handling
+        if (hoverOverLegend) {
+          var seriesCnt = parseInt(e.target.getAttribute('rel')) - 1;
+          this.ctx.fireEvent('legendHover', [this.ctx, seriesCnt, this.w]);
+
+          var _series = new Series(this.ctx);
+
+          _series.highlightRangeInSeries(e, e.target);
+        }
+      }
+    }
+  }, {
+    key: "onLegendClick",
+    value: function onLegendClick(e) {
+      if (e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker')) {
+        var seriesCnt = parseInt(e.target.getAttribute('rel')) - 1;
+        var isHidden = e.target.getAttribute('data:collapsed') === 'true';
+        var legendClick = this.w.config.chart.events.legendClick;
+
+        if (typeof legendClick === 'function') {
+          legendClick(this.ctx, seriesCnt, this.w);
+        }
+
+        this.ctx.fireEvent('legendClick', [this.ctx, seriesCnt, this.w]);
+        var markerClick = this.w.config.legend.markers.onClick;
+
+        if (typeof markerClick === 'function' && e.target.classList.contains('apexcharts-legend-marker')) {
+          markerClick(this.ctx, seriesCnt, this.w);
+          this.ctx.fireEvent('legendMarkerClick', [this.ctx, seriesCnt, this.w]);
+        }
+
+        this.toggleDataSeries(seriesCnt, isHidden);
+      }
+    }
+  }, {
+    key: "getLegendStyles",
+    value: function getLegendStyles() {
+      var stylesheet = document.createElement('style');
+      stylesheet.setAttribute('type', 'text/css');
+      var text = "\n    \n      .apexcharts-legend {\n        display: flex;\n        overflow: auto;\n        padding: 0 10px;\n      }\n\n      .apexcharts-legend.position-bottom, .apexcharts-legend.position-top {\n        flex-wrap: wrap\n      }\n      .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n        flex-direction: column;\n        bottom: 0;\n      }\n\n      .apexcharts-legend.position-bottom.left, .apexcharts-legend.position-top.left, .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n        justify-content: flex-start;\n      }\n\n      .apexcharts-legend.position-bottom.center, .apexcharts-legend.position-top.center {\n        justify-content: center;  \n      }\n\n      .apexcharts-legend.position-bottom.right, .apexcharts-legend.position-top.right {\n        justify-content: flex-end;\n      }\n\n      .apexcharts-legend-series {\n        cursor: pointer;\n        line-height: normal;\n      }\n\n      .apexcharts-legend.position-bottom .apexcharts-legend-series, .apexcharts-legend.position-top .apexcharts-legend-series{\n        display: flex;\n        align-items: center;\n      }\n\n      .apexcharts-legend-text {\n        position: relative;\n        font-size: 14px;\n      }\n\n      .apexcharts-legend-text *, .apexcharts-legend-marker * {\n        pointer-events: none;\n      }\n\n      .apexcharts-legend-marker {\n        position: relative;\n        display: inline-block;\n        cursor: pointer;\n        margin-right: 3px;\n      }\n      \n      .apexcharts-legend.right .apexcharts-legend-series, .apexcharts-legend.left .apexcharts-legend-series{\n        display: inline-block;\n      }\n\n      .apexcharts-legend-series.no-click {\n        cursor: auto;\n      }\n\n      .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\n        display: none !important;\n      }\n\n      .inactive-legend {\n        opacity: 0.45;\n      }";
+      var rules = document.createTextNode(text);
+      stylesheet.appendChild(rules);
+      return stylesheet;
+    }
+  }, {
+    key: "resetToggleDataSeries",
+    value: function resetToggleDataSeries() {
+      var w = this.w;
+      var seriesEls = null;
+      var realIndexes = [];
+
+      if (w.globals.axisCharts) {
+        seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:realIndex]");
+        seriesEls = Utils.listToArray(seriesEls);
+        seriesEls.forEach(function (v) {
+          realIndexes.push(parseInt(v.getAttribute('data:realIndex')));
+        });
+      } else {
+        seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[rel]");
+        seriesEls = Utils.listToArray(seriesEls);
+        seriesEls.forEach(function (v) {
+          realIndexes.push(parseInt(v.getAttribute('rel')) - 1);
+        });
+      }
+
+      realIndexes.sort();
+
+      if (w.globals.collapsedSeries.length > 0) {
+        var risingSeries = w.globals.risingSeries.slice();
+        var series = w.config.series.slice();
+
+        for (var c = 0; c < w.globals.collapsedSeries.length; c++) {
+          var index = realIndexes.indexOf(w.globals.collapsedSeries[c].index);
+
+          if (index !== -1) {
+            if (w.globals.axisCharts) {
+              series[index].data = w.globals.collapsedSeries.slice()[c].data.slice();
+            } else {
+              series[index] = w.globals.collapsedSeries.slice()[c].data;
+            }
+
+            risingSeries.push(index);
+          }
+        }
+
+        w.globals.collapsedSeries = [];
+        w.globals.ancillaryCollapsedSeries = [];
+        w.globals.collapsedSeriesIndices = [];
+        w.globals.ancillaryCollapsedSeriesIndices = [];
+        w.globals.risingSeries = risingSeries;
+        w.config.series = series;
+
+        this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+      }
+    }
+  }, {
+    key: "toggleDataSeries",
+    value: function toggleDataSeries(seriesCnt, isHidden) {
+      var w = this.w;
+
+      if (w.globals.axisCharts || w.config.chart.type === 'radialBar') {
+        w.globals.resized = true; // we don't want initial animations again
+
+        var seriesEl = null;
+        var realIndex = null; // yes, make it null. 1 series will rise at a time
+
+        w.globals.risingSeries = [];
+
+        if (w.globals.axisCharts) {
+          seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesCnt, "']"));
+          realIndex = parseInt(seriesEl.getAttribute('data:realIndex'));
+        } else {
+          seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "']"));
+          realIndex = parseInt(seriesEl.getAttribute('rel')) - 1;
+        }
+
+        if (isHidden) {
+          this.riseCollapsedSeries(w.globals.collapsedSeries, w.globals.collapsedSeriesIndices, realIndex);
+          this.riseCollapsedSeries(w.globals.ancillaryCollapsedSeries, w.globals.ancillaryCollapsedSeriesIndices, realIndex);
+        } else {
+          if (w.globals.axisCharts) {
+            var shouldNotHideYAxis = false;
+
+            if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].show && w.config.yaxis[realIndex].showAlways) {
+              shouldNotHideYAxis = true;
+
+              if (w.globals.ancillaryCollapsedSeriesIndices.indexOf(realIndex) < 0) {
+                w.globals.ancillaryCollapsedSeries.push({
+                  index: realIndex,
+                  data: w.config.series[realIndex].data.slice(),
+                  type: seriesEl.parentNode.className.baseVal.split('-')[1]
+                });
+                w.globals.ancillaryCollapsedSeriesIndices.push(realIndex);
+              }
+            }
+
+            if (!shouldNotHideYAxis) {
+              w.globals.collapsedSeries.push({
+                index: realIndex,
+                data: w.config.series[realIndex].data.slice(),
+                type: seriesEl.parentNode.className.baseVal.split('-')[1]
+              });
+              w.globals.collapsedSeriesIndices.push(realIndex);
+              var removeIndexOfRising = w.globals.risingSeries.indexOf(realIndex);
+              w.globals.risingSeries.splice(removeIndexOfRising, 1);
+            } // TODO: AVOID mutating the user's config object below
+
+
+            w.config.series[realIndex].data = [];
+          } else {
+            w.globals.collapsedSeries.push({
+              index: realIndex,
+              data: w.config.series[realIndex]
+            });
+            w.globals.collapsedSeriesIndices.push(realIndex);
+            w.config.series[realIndex] = 0;
+          }
+
+          var seriesChildren = seriesEl.childNodes;
+
+          for (var sc = 0; sc < seriesChildren.length; sc++) {
+            if (seriesChildren[sc].classList.contains('apexcharts-series-markers-wrap')) {
+              if (seriesChildren[sc].classList.contains('apexcharts-hide')) {
+                seriesChildren[sc].classList.remove('apexcharts-hide');
+              } else {
+                seriesChildren[sc].classList.add('apexcharts-hide');
+              }
+            }
+          }
+
+          w.globals.allSeriesCollapsed = w.globals.collapsedSeries.length === w.globals.series.length;
+
+          this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+        }
+      } else {
+        // for non-axis charts i.e pie / donuts
+        var _seriesEl = w.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(seriesCnt + 1, "'] path"));
+
+        var type = w.config.chart.type;
+
+        if (type === 'pie' || type === 'donut') {
+          var dataLabels = w.config.plotOptions.pie.donut.labels;
+          var graphics = new Graphics(this.ctx);
+          var pie = new Pie(this.ctx);
+          graphics.pathMouseDown(_seriesEl.members[0], null);
+          pie.printDataLabelsInner(_seriesEl.members[0].node, dataLabels);
+        }
+
+        _seriesEl.fire('click');
+      }
+    }
+  }, {
+    key: "riseCollapsedSeries",
+    value: function riseCollapsedSeries(series, seriesIndices, realIndex) {
+      var w = this.w;
+
+      if (series.length > 0) {
+        for (var c = 0; c < series.length; c++) {
+          if (series[c].index === realIndex) {
+            if (w.globals.axisCharts) {
+              w.config.series[realIndex].data = series[c].data.slice();
+              series.splice(c, 1);
+              seriesIndices.splice(c, 1);
+              w.globals.risingSeries.push(realIndex);
+            } else {
+              w.config.series[realIndex] = series[c].data;
+              series.splice(c, 1);
+              seriesIndices.splice(c, 1);
+              w.globals.risingSeries.push(realIndex);
+            }
+
+            this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+          }
+        }
+      }
+    }
+  }]);
+
+  return Legend;
+}();
+
+/**
+ * ApexCharts Responsive Class to override options for different screen sizes.
+ *
+ * @module Responsive
+ **/
+
+var Responsive =
+/*#__PURE__*/
+function () {
+  function Responsive(ctx) {
+    _classCallCheck(this, Responsive);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  } // the opts parameter if not null has to be set overriding everything
+  // as the opts is set by user externally
+
+
+  _createClass(Responsive, [{
+    key: "checkResponsiveConfig",
+    value: function checkResponsiveConfig(opts) {
+      var _this = this;
+
+      var w = this.w;
+      var cnf = w.config; // check if responsive config exists
+
+      if (cnf.responsive.length === 0) return;
+      var res = cnf.responsive.slice();
+      res.sort(function (a, b) {
+        return a.breakpoint > b.breakpoint ? 1 : b.breakpoint > a.breakpoint ? -1 : 0;
+      }).reverse();
+      var config = new Config({});
+
+      var iterateResponsiveOptions = function iterateResponsiveOptions() {
+        var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+        var largestBreakpoint = res[0].breakpoint;
+        var width = window.innerWidth > 0 ? window.innerWidth : screen.width;
+
+        if (width > largestBreakpoint) {
+          var options = CoreUtils.extendArrayProps(config, w.globals.initialConfig);
+          newOptions = Utils.extend(options, newOptions);
+          newOptions = Utils.extend(w.config, newOptions);
+
+          _this.overrideResponsiveOptions(newOptions);
+        } else {
+          for (var i = 0; i < res.length; i++) {
+            if (width < res[i].breakpoint) {
+              newOptions = CoreUtils.extendArrayProps(config, res[i].options);
+              newOptions = Utils.extend(w.config, newOptions);
+
+              _this.overrideResponsiveOptions(newOptions);
+            }
+          }
+        }
+      };
+
+      if (opts) {
+        var options = CoreUtils.extendArrayProps(config, opts);
+        options = Utils.extend(w.config, options);
+        options = Utils.extend(options, opts);
+        iterateResponsiveOptions(options);
+      } else {
+        iterateResponsiveOptions({});
+      }
+    }
+  }, {
+    key: "overrideResponsiveOptions",
+    value: function overrideResponsiveOptions(newOptions) {
+      var newConfig = new Config(newOptions).init();
+      this.w.config = newConfig;
+    }
+  }]);
+
+  return Responsive;
+}();
+
+/**
+ * ApexCharts Theme Class for setting the colors and palettes.
+ *
+ * @module Theme
+ **/
+
+var Theme =
+/*#__PURE__*/
+function () {
+  function Theme(ctx) {
+    _classCallCheck(this, Theme);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.colors = [];
+  }
+
+  _createClass(Theme, [{
+    key: "init",
+    value: function init() {
+      this.setDefaultColors();
+    }
+  }, {
+    key: "setDefaultColors",
+    value: function setDefaultColors() {
+      var w = this.w;
+      var utils = new Utils();
+      w.globals.dom.elWrap.classList.add(w.config.theme.mode);
+
+      if (w.config.colors === undefined) {
+        w.globals.colors = this.predefined();
+      } else {
+        w.globals.colors = w.config.colors;
+      }
+
+      if (w.config.theme.monochrome.enabled) {
+        var monoArr = [];
+        var glsCnt = w.globals.series.length;
+
+        if (w.config.plotOptions.bar.distributed && w.config.chart.type === 'bar') {
+          glsCnt = w.globals.series[0].length * w.globals.series.length;
+        }
+
+        var mainColor = w.config.theme.monochrome.color;
+        var part = 1 / (glsCnt / w.config.theme.monochrome.shadeIntensity);
+        var shade = w.config.theme.monochrome.shadeTo;
+        var percent = 0;
+
+        for (var gsl = 0; gsl < glsCnt; gsl++) {
+          var newColor = void 0;
+
+          if (shade === 'dark') {
+            newColor = utils.shadeColor(percent * -1, mainColor);
+            percent = percent + part;
+          } else {
+            newColor = utils.shadeColor(percent, mainColor);
+            percent = percent + part;
+          }
+
+          monoArr.push(newColor);
+        }
+
+        w.globals.colors = monoArr.slice();
+      }
+
+      var defaultColors = w.globals.colors.slice(); // if user specfied less colors than no. of series, push the same colors again
+
+      this.pushExtraColors(w.globals.colors); // The Border colors
+
+      if (w.config.stroke.colors === undefined) {
+        w.globals.stroke.colors = defaultColors;
+      } else {
+        w.globals.stroke.colors = w.config.stroke.colors;
+      }
+
+      this.pushExtraColors(w.globals.stroke.colors); // The FILL colors
+
+      if (w.config.fill.colors === undefined) {
+        w.globals.fill.colors = defaultColors;
+      } else {
+        w.globals.fill.colors = w.config.fill.colors;
+      }
+
+      this.pushExtraColors(w.globals.fill.colors);
+
+      if (w.config.dataLabels.style.colors === undefined) {
+        w.globals.dataLabels.style.colors = defaultColors;
+      } else {
+        w.globals.dataLabels.style.colors = w.config.dataLabels.style.colors;
+      }
+
+      this.pushExtraColors(w.globals.dataLabels.style.colors, 50);
+
+      if (w.config.plotOptions.radar.polygons.fill.colors === undefined) {
+        w.globals.radarPolygons.fill.colors = [w.config.theme.mode === 'dark' ? '#202D48' : '#fff'];
+      } else {
+        w.globals.radarPolygons.fill.colors = w.config.plotOptions.radar.polygons.fill.colors;
+      }
+
+      this.pushExtraColors(w.globals.radarPolygons.fill.colors, 20); // The point colors
+
+      if (w.config.markers.colors === undefined) {
+        w.globals.markers.colors = defaultColors;
+      } else {
+        w.globals.markers.colors = w.config.markers.colors;
+      }
+
+      this.pushExtraColors(w.globals.markers.colors);
+    } // When the number of colors provided is less than the number of series, this method
+    // will push same colors to the list
+    // params:
+    // distributed is only valid for distributed column/bar charts
+
+  }, {
+    key: "pushExtraColors",
+    value: function pushExtraColors(colorSeries, length) {
+      var distributed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+      var w = this.w;
+      var len = length || w.globals.series.length;
+
+      if (distributed === null) {
+        distributed = w.config.chart.type === 'bar' && w.config.plotOptions.bar.distributed || w.config.chart.type === 'heatmap' && w.config.plotOptions.heatmap.colorScale.inverse;
+      }
+
+      if (distributed) {
+        len = w.globals.series[0].length * w.globals.series.length;
+      }
+
+      if (colorSeries.length < len) {
+        var diff = len - colorSeries.length;
+
+        for (var i = 0; i < diff; i++) {
+          colorSeries.push(colorSeries[i]);
+        }
+      }
+    }
+  }, {
+    key: "updateThemeOptions",
+    value: function updateThemeOptions(options) {
+      options.chart = options.chart || {};
+      options.tooltip = options.tooltip || {};
+      var mode = options.theme.mode || 'light';
+      var palette = options.theme.palette ? options.theme.palette : mode === 'dark' ? 'palette4' : 'palette1';
+      var foreColor = options.chart.foreColor ? options.chart.foreColor : mode === 'dark' ? '#f6f7f8' : '#373d3f';
+      options.tooltip.theme = mode;
+      options.chart.foreColor = foreColor;
+      options.theme.palette = palette;
+      return options;
+    }
+  }, {
+    key: "predefined",
+    value: function predefined() {
+      var palette = this.w.config.theme.palette; // D6E3F8, FCEFEF, DCE0D9, A5978B, EDDDD4, D6E3F8, FEF5EF
+
+      switch (palette) {
+        case 'palette1':
+          this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'];
+          break;
+
+        case 'palette2':
+          this.colors = ['#3f51b5', '#03a9f4', '#4caf50', '#f9ce1d', '#FF9800'];
+          break;
+
+        case 'palette3':
+          this.colors = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B'];
+          break;
+
+        case 'palette4':
+          this.colors = ['#4ecdc4', '#c7f464', '#81D4FA', '#fd6a6a', '#546E7A'];
+          break;
+
+        case 'palette5':
+          this.colors = ['#2b908f', '#f9a3a4', '#90ee7e', '#fa4443', '#69d2e7'];
+          break;
+
+        case 'palette6':
+          this.colors = ['#449DD1', '#F86624', '#EA3546', '#662E9B', '#C5D86D'];
+          break;
+
+        case 'palette7':
+          this.colors = ['#D7263D', '#1B998B', '#2E294E', '#F46036', '#E2C044'];
+          break;
+
+        case 'palette8':
+          this.colors = ['#662E9B', '#F86624', '#F9C80E', '#EA3546', '#43BCCD'];
+          break;
+
+        case 'palette9':
+          this.colors = ['#5C4742', '#A5978B', '#8D5B4C', '#5A2A27', '#C4BBAF'];
+          break;
+
+        case 'palette10':
+          this.colors = ['#A300D6', '#7D02EB', '#5653FE', '#2983FF', '#00B1F2'];
+          break;
+
+        default:
+          this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'];
+          break;
+      }
+
+      return this.colors;
+    }
+  }]);
+
+  return Theme;
+}();
+
+var Utils$1 =
+/*#__PURE__*/
+function () {
+  function Utils(tooltipContext) {
+    _classCallCheck(this, Utils);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+    this.ctx = tooltipContext.ctx;
+  }
+  /**
+   ** When hovering over series, you need to capture which series is being hovered on.
+   ** This function will return both capturedseries index as well as inner index of that series
+   * @memberof Utils
+   * @param {object}
+   * - hoverArea = the rect on which user hovers
+   * - elGrid = dimensions of the hover rect (it can be different than hoverarea)
+   */
+
+
+  _createClass(Utils, [{
+    key: "getNearestValues",
+    value: function getNearestValues(_ref) {
+      var hoverArea = _ref.hoverArea,
+          elGrid = _ref.elGrid,
+          clientX = _ref.clientX,
+          clientY = _ref.clientY,
+          hasBars = _ref.hasBars;
+      var w = this.w;
+      var hoverWidth = w.globals.gridWidth;
+      var xDivisor = hoverWidth / (w.globals.dataPoints - 1);
+      var seriesBound = elGrid.getBoundingClientRect();
+
+      if (hasBars && w.globals.comboCharts || hasBars) {
+        xDivisor = hoverWidth / w.globals.dataPoints;
+      }
+
+      var hoverX = clientX - seriesBound.left;
+      var hoverY = clientY - seriesBound.top;
+      var inRect = hoverX < 0 || hoverY < 0 || hoverX > w.globals.gridWidth || hoverY > w.globals.gridHeight;
+
+      if (inRect) {
+        hoverArea.classList.remove('hovering-zoom');
+        hoverArea.classList.remove('hovering-pan');
+      } else {
+        if (w.globals.zoomEnabled) {
+          hoverArea.classList.remove('hovering-pan');
+          hoverArea.classList.add('hovering-zoom');
+        } else if (w.globals.panEnabled) {
+          hoverArea.classList.remove('hovering-zoom');
+          hoverArea.classList.add('hovering-pan');
+        }
+      }
+
+      var j = Math.round(hoverX / xDivisor);
+
+      if (hasBars) {
+        j = Math.ceil(hoverX / xDivisor);
+        j = j - 1;
+      }
+
+      var capturedSeries = null;
+      var closest = null;
+      var seriesXValArr = [];
+      var seriesYValArr = [];
+
+      for (var s = 0; s < w.globals.seriesXvalues.length; s++) {
+        seriesXValArr.push([w.globals.seriesXvalues[s][0] - 0.000001].concat(w.globals.seriesXvalues[s]));
+      }
+
+      seriesXValArr = seriesXValArr.map(function (seriesXVal) {
+        return seriesXVal.filter(function (s) {
+          return s;
+        });
+      });
+      seriesYValArr = w.globals.seriesYvalues.map(function (seriesYVal) {
+        return seriesYVal.filter(function (s) {
+          return s;
+        });
+      }); // if X axis type is not category and tooltip is not shared, then we need to find the cursor position and get the nearest value
+
+      if (w.globals.isXNumeric) {
+        closest = this.closestInMultiArray(hoverX, hoverY, seriesXValArr, seriesYValArr);
+        capturedSeries = closest.index;
+        j = closest.j;
+
+        if (capturedSeries !== null) {
+          // initial push, it should be a little smaller than the 1st val
+          seriesXValArr = w.globals.seriesXvalues[capturedSeries];
+          closest = this.closestInArray(hoverX, seriesXValArr);
+          j = closest.index;
+        }
+      }
+
+      if (!j || j < 1) j = 0;
+      return {
+        capturedSeries: capturedSeries,
+        j: j,
+        hoverX: hoverX,
+        hoverY: hoverY
+      };
+    }
+  }, {
+    key: "closestInMultiArray",
+    value: function closestInMultiArray(hoverX, hoverY, Xarrays, Yarrays) {
+      var w = this.w;
+      var activeIndex = 0;
+      var currIndex = null;
+      var j = -1;
+
+      if (w.globals.series.length > 1) {
+        activeIndex = this.getFirstActiveXArray(Xarrays);
+      } else {
+        currIndex = 0;
+      }
+
+      var currY = Yarrays[activeIndex][0];
+      var currX = Xarrays[activeIndex][0];
+      var diffX = Math.abs(hoverX - currX);
+      var diffY = Math.abs(hoverY - currY);
+      var diff = diffY + diffX;
+      Yarrays.map(function (arrY, arrIndex) {
+        arrY.map(function (y, innerKey) {
+          var newdiffY = Math.abs(hoverY - Yarrays[arrIndex][innerKey]);
+          var newdiffX = Math.abs(hoverX - Xarrays[arrIndex][innerKey]);
+          var newdiff = newdiffX + newdiffY;
+
+          if (newdiff < diff) {
+            diff = newdiff;
+            diffX = newdiffX;
+            diffY = newdiffY;
+            currIndex = arrIndex;
+            j = innerKey;
+          }
+        });
+      });
+      return {
+        index: currIndex,
+        j: j
+      };
+    }
+  }, {
+    key: "getFirstActiveXArray",
+    value: function getFirstActiveXArray(Xarrays) {
+      var activeIndex = 0;
+      var coreUtils = new CoreUtils(this.ctx);
+      var firstActiveSeriesIndex = Xarrays.map(function (xarr, index) {
+        if (xarr.length > 0) {
+          return index;
+        } else {
+          return -1;
+        }
+      });
+
+      for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+        var total = coreUtils.getSeriesTotalByIndex(a);
+
+        if (firstActiveSeriesIndex[a] !== -1 && total !== 0 && !coreUtils.seriesHaveSameValues(a)) {
+          activeIndex = firstActiveSeriesIndex[a];
+          break;
+        }
+      }
+
+      return activeIndex;
+    }
+  }, {
+    key: "closestInArray",
+    value: function closestInArray(val, arr) {
+      var curr = arr[0];
+      var currIndex = null;
+      var diff = Math.abs(val - curr);
+
+      for (var i = 0; i < arr.length; i++) {
+        var newdiff = Math.abs(val - arr[i]);
+
+        if (newdiff < diff) {
+          diff = newdiff;
+          curr = arr[i];
+          currIndex = i;
+        }
+      }
+
+      return {
+        index: currIndex
+      };
+    }
+    /**
+     * When there are multiple series, it is possible to have different x values for each series.
+     * But it may be possible in those multiple series, that there is same x value for 2 or more
+     * series.
+     * @memberof Utils
+     * @param {int}
+     * - j = is the inner index of series -> (series[i][j])
+     * @return {bool}
+     */
+
+  }, {
+    key: "isXoverlap",
+    value: function isXoverlap(j) {
+      var w = this.w;
+      var xSameForAllSeriesJArr = [];
+      var seriesX = w.globals.seriesX.filter(function (s) {
+        return typeof s[0] !== 'undefined';
+      });
+
+      if (seriesX.length > 0) {
+        for (var i = 0; i < seriesX.length - 1; i++) {
+          if (typeof seriesX[i][j] !== 'undefined' && typeof seriesX[i + 1][j] !== 'undefined') {
+            if (seriesX[i][j] !== seriesX[i + 1][j]) {
+              xSameForAllSeriesJArr.push('unEqual');
+            }
+          }
+        }
+      }
+
+      if (xSameForAllSeriesJArr.length === 0) {
+        return true;
+      }
+
+      return false;
+    }
+  }, {
+    key: "isinitialSeriesSameLen",
+    value: function isinitialSeriesSameLen() {
+      var sameLen = true;
+      var initialSeries = this.w.globals.initialSeries;
+
+      for (var i = 0; i < initialSeries.length - 1; i++) {
+        if (initialSeries[i].data.length !== initialSeries[i + 1].data.length) {
+          sameLen = false;
+          break;
+        }
+      }
+
+      return sameLen;
+    }
+  }, {
+    key: "getBarsHeight",
+    value: function getBarsHeight(allbars) {
+      var bars = _toConsumableArray(allbars);
+
+      var totalHeight = bars.reduce(function (acc, bar) {
+        return acc + bar.getBBox().height;
+      }, 0);
+      return totalHeight;
+    }
+  }, {
+    key: "toggleAllTooltipSeriesGroups",
+    value: function toggleAllTooltipSeriesGroups(state) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.allTooltipSeriesGroups.length === 0) {
+        ttCtx.allTooltipSeriesGroups = w.globals.dom.baseEl.querySelectorAll('.apexcharts-tooltip-series-group');
+      }
+
+      var allTooltipSeriesGroups = ttCtx.allTooltipSeriesGroups;
+
+      for (var i = 0; i < allTooltipSeriesGroups.length; i++) {
+        if (state === 'enable') {
+          allTooltipSeriesGroups[i].classList.add('active');
+          allTooltipSeriesGroups[i].style.display = w.config.tooltip.items.display;
+        } else {
+          allTooltipSeriesGroups[i].classList.remove('active');
+          allTooltipSeriesGroups[i].style.display = 'none';
+        }
+      }
+    }
+  }]);
+
+  return Utils;
+}();
+
+/**
+ * ApexCharts Tooltip.Labels Class to draw texts on the tooltip.
+ *
+ * @module Tooltip.Labels
+ **/
+
+var Labels =
+/*#__PURE__*/
+function () {
+  function Labels(tooltipContext) {
+    _classCallCheck(this, Labels);
+
+    this.w = tooltipContext.w;
+    this.ctx = tooltipContext.ctx;
+    this.ttCtx = tooltipContext;
+    this.tooltipUtil = new Utils$1(tooltipContext);
+  }
+
+  _createClass(Labels, [{
+    key: "drawSeriesTexts",
+    value: function drawSeriesTexts(_ref) {
+      var _ref$shared = _ref.shared,
+          shared = _ref$shared === void 0 ? true : _ref$shared,
+          ttItems = _ref.ttItems,
+          _ref$i = _ref.i,
+          i = _ref$i === void 0 ? 0 : _ref$i,
+          _ref$j = _ref.j,
+          j = _ref$j === void 0 ? null : _ref$j;
+      var w = this.w;
+
+      if (w.config.tooltip.custom !== undefined) {
+        this.handleCustomTooltip({
+          i: i,
+          j: j
+        });
+      } else {
+        this.toggleActiveInactiveSeries(shared);
+      }
+
+      var values = this.getValuesToPrint({
+        i: i,
+        j: j
+      });
+      this.printLabels({
+        i: i,
+        j: j,
+        values: values,
+        ttItems: ttItems,
+        shared: shared
+      }); // Re-calculate tooltip dimensions now that we have drawn the text
+
+      var tooltipEl = this.ttCtx.getElTooltip();
+      this.ttCtx.tooltipRect.ttWidth = tooltipEl.getBoundingClientRect().width;
+      this.ttCtx.tooltipRect.ttHeight = tooltipEl.getBoundingClientRect().height;
+    }
+  }, {
+    key: "printLabels",
+    value: function printLabels(_ref2) {
+      var i = _ref2.i,
+          j = _ref2.j,
+          values = _ref2.values,
+          ttItems = _ref2.ttItems,
+          shared = _ref2.shared;
+      var w = this.w;
+      var val;
+      var xVal = values.xVal,
+          zVal = values.zVal,
+          xAxisTTVal = values.xAxisTTVal;
+      var seriesName = '';
+      var pColor = w.globals.colors[i];
+
+      if (j !== null && w.config.plotOptions.bar.distributed) {
+        pColor = w.globals.colors[j];
+      }
+
+      for (var t = 0, inverset = w.globals.series.length - 1; t < w.globals.series.length; t++, inverset--) {
+        var f = this.getFormatters(i);
+        seriesName = this.getSeriesName({
+          fn: f.yLbTitleFormatter,
+          index: i,
+          seriesIndex: i,
+          j: j
+        });
+
+        if (shared) {
+          var tIndex = w.config.tooltip.inverseOrder ? inverset : t;
+          f = this.getFormatters(tIndex);
+          seriesName = this.getSeriesName({
+            fn: f.yLbTitleFormatter,
+            index: tIndex,
+            seriesIndex: i,
+            j: j
+          });
+          pColor = w.globals.colors[tIndex]; // for plot charts, not for pie/donuts
+
+          val = f.yLbFormatter(w.globals.series[tIndex][j], {
+            series: w.globals.series,
+            seriesIndex: tIndex,
+            dataPointIndex: j,
+            w: w
+          }); // discard 0 values in BARS
+
+          if (this.ttCtx.hasBars() && w.config.chart.stacked && w.globals.series[tIndex][j] === 0 || typeof w.globals.series[tIndex][j] === 'undefined') {
+            val = undefined;
+          }
+        } else {
+          val = f.yLbFormatter(w.globals.series[i][j], {
+            series: w.globals.series,
+            seriesIndex: i,
+            dataPointIndex: j,
+            w: w
+          });
+        } // for pie / donuts
+
+
+        if (j === null) {
+          val = f.yLbFormatter(w.globals.series[i], w);
+        }
+
+        this.DOMHandling({
+          t: t,
+          ttItems: ttItems,
+          values: {
+            val: val,
+            xVal: xVal,
+            xAxisTTVal: xAxisTTVal,
+            zVal: zVal
+          },
+          seriesName: seriesName,
+          shared: shared,
+          pColor: pColor
+        });
+      }
+    }
+  }, {
+    key: "getFormatters",
+    value: function getFormatters(i) {
+      var w = this.w;
+      var yLbFormatter = w.globals.yLabelFormatters[i];
+      var yLbTitleFormatter;
+
+      if (w.globals.ttVal !== undefined) {
+        if (Array.isArray(w.globals.ttVal)) {
+          yLbFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].formatter;
+          yLbTitleFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].title && w.globals.ttVal[i].title.formatter;
+        } else {
+          yLbFormatter = w.globals.ttVal.formatter;
+
+          if (typeof w.globals.ttVal.title.formatter === 'function') {
+            yLbTitleFormatter = w.globals.ttVal.title.formatter;
+          }
+        }
+      } else {
+        yLbTitleFormatter = w.config.tooltip.y.title.formatter;
+      }
+
+      if (typeof yLbFormatter !== 'function') {
+        if (w.globals.yLabelFormatters[0]) {
+          yLbFormatter = w.globals.yLabelFormatters[0];
+        } else {
+          yLbFormatter = function yLbFormatter(label) {
+            return label;
+          };
+        }
+      }
+
+      if (typeof yLbTitleFormatter !== 'function') {
+        yLbTitleFormatter = function yLbTitleFormatter(label) {
+          return label;
+        };
+      }
+
+      return {
+        yLbFormatter: yLbFormatter,
+        yLbTitleFormatter: yLbTitleFormatter
+      };
+    }
+  }, {
+    key: "getSeriesName",
+    value: function getSeriesName(_ref3) {
+      var fn = _ref3.fn,
+          index = _ref3.index,
+          seriesIndex = _ref3.seriesIndex,
+          j = _ref3.j;
+      var w = this.w;
+      return fn(String(w.globals.seriesNames[index]), {
+        series: w.globals.series,
+        seriesIndex: seriesIndex,
+        dataPointIndex: j,
+        w: w
+      });
+    }
+  }, {
+    key: "DOMHandling",
+    value: function DOMHandling(_ref4) {
+      var t = _ref4.t,
+          ttItems = _ref4.ttItems,
+          values = _ref4.values,
+          seriesName = _ref4.seriesName,
+          shared = _ref4.shared,
+          pColor = _ref4.pColor;
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var val = values.val,
+          xVal = values.xVal,
+          xAxisTTVal = values.xAxisTTVal,
+          zVal = values.zVal;
+      var ttItemsChildren = null;
+      ttItemsChildren = ttItems[t].children;
+
+      if (w.config.tooltip.fillSeriesColor) {
+        //  elTooltip.style.backgroundColor = pColor
+        ttItems[t].style.backgroundColor = pColor;
+        ttItemsChildren[0].style.display = 'none';
+      }
+
+      if (ttCtx.showTooltipTitle) {
+        if (ttCtx.tooltipTitle === null) {
+          // get it once if null, and store it in class property
+          ttCtx.tooltipTitle = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-title');
+        }
+
+        ttCtx.tooltipTitle.innerHTML = xVal;
+      } // if xaxis tooltip is constructed, we need to replace the innerHTML
+
+
+      if (ttCtx.blxaxisTooltip) {
+        ttCtx.xaxisTooltipText.innerHTML = xAxisTTVal !== '' ? xAxisTTVal : xVal;
+      }
+
+      var ttYLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-label');
+
+      if (ttYLabel) {
+        ttYLabel.innerHTML = seriesName ? seriesName + ': ' : '';
+      }
+
+      var ttYVal = ttItems[t].querySelector('.apexcharts-tooltip-text-value');
+
+      if (ttYVal) {
+        ttYVal.innerHTML = val;
+      }
+
+      if (ttItemsChildren[0] && ttItemsChildren[0].classList.contains('apexcharts-tooltip-marker')) {
+        ttItemsChildren[0].style.backgroundColor = pColor;
+      }
+
+      if (!w.config.tooltip.marker.show) {
+        ttItemsChildren[0].style.display = 'none';
+      }
+
+      if (zVal !== null) {
+        var ttZLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-z-label');
+        ttZLabel.innerHTML = w.config.tooltip.z.title;
+        var ttZVal = ttItems[t].querySelector('.apexcharts-tooltip-text-z-value');
+        ttZVal.innerHTML = zVal;
+      }
+
+      if (shared && ttItemsChildren[0]) {
+        // hide when no Val or series collapsed
+        if (typeof val === 'undefined' || val === null || w.globals.collapsedSeriesIndices.indexOf(t) > -1) {
+          ttItemsChildren[0].parentNode.style.display = 'none';
+        } else {
+          ttItemsChildren[0].parentNode.style.display = w.config.tooltip.items.display;
+        }
+      }
+    }
+  }, {
+    key: "toggleActiveInactiveSeries",
+    value: function toggleActiveInactiveSeries(shared) {
+      var w = this.w;
+
+      if (shared) {
+        // make all tooltips active
+        this.tooltipUtil.toggleAllTooltipSeriesGroups('enable');
+      } else {
+        // disable all tooltip text groups
+        this.tooltipUtil.toggleAllTooltipSeriesGroups('disable'); // enable the first tooltip text group
+
+        var firstTooltipSeriesGroup = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-series-group');
+
+        if (firstTooltipSeriesGroup) {
+          firstTooltipSeriesGroup.classList.add('active');
+          firstTooltipSeriesGroup.style.display = w.config.tooltip.items.display;
+        }
+      }
+    }
+  }, {
+    key: "getValuesToPrint",
+    value: function getValuesToPrint(_ref5) {
+      var i = _ref5.i,
+          j = _ref5.j;
+      var w = this.w;
+      var filteredSeriesX = this.ctx.series.filteredSeriesX();
+      var xVal = '';
+      var xAxisTTVal = '';
+      var zVal = null;
+      var val = null;
+      var customFormatterOpts = {
+        series: w.globals.series,
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      };
+      var zFormatter = w.globals.ttZFormatter;
+
+      if (j === null) {
+        val = w.globals.series[i];
+      } else {
+        if (w.globals.isXNumeric) {
+          xVal = filteredSeriesX[i][j];
+
+          if (filteredSeriesX[i].length === 0) {
+            // a series (possibly the first one) might be collapsed, so get the next active index
+            var firstActiveSeriesIndex = this.tooltipUtil.getFirstActiveXArray(filteredSeriesX);
+            xVal = filteredSeriesX[firstActiveSeriesIndex][j];
+          }
+        } else {
+          xVal = typeof w.globals.labels[j] !== 'undefined' ? w.globals.labels[j] : '';
+        }
+      }
+
+      var bufferXVal = xVal;
+
+      if (w.globals.isXNumeric && w.config.xaxis.type === 'datetime') {
+        var xFormat = new Formatters(this.ctx);
+        xVal = xFormat.xLabelFormat(w.globals.ttKeyFormatter, bufferXVal);
+      } else {
+        xVal = w.globals.xLabelFormatter(bufferXVal, customFormatterOpts);
+      } // override default x-axis formatter with tooltip formatter
+
+
+      if (w.config.tooltip.x.formatter !== undefined) {
+        xVal = w.globals.ttKeyFormatter(bufferXVal, customFormatterOpts);
+      }
+
+      if (w.globals.seriesZ.length > 0 && w.globals.seriesZ[0].length > 0) {
+        zVal = zFormatter(w.globals.seriesZ[i][j], w);
+      }
+
+      if (typeof w.config.xaxis.tooltip.formatter === 'function') {
+        xAxisTTVal = w.globals.xaxisTooltipFormatter(bufferXVal, customFormatterOpts);
+      } else {
+        xAxisTTVal = xVal;
+      }
+
+      return {
+        val: val,
+        xVal: xVal,
+        xAxisTTVal: xAxisTTVal,
+        zVal: zVal
+      };
+    }
+  }, {
+    key: "handleCustomTooltip",
+    value: function handleCustomTooltip(_ref6) {
+      var i = _ref6.i,
+          j = _ref6.j;
+      var w = this.w;
+      var tooltipEl = this.ttCtx.getElTooltip(); // override everything with a custom html tooltip and replace it
+
+      tooltipEl.innerHTML = w.config.tooltip.custom({
+        ctx: this.ctx,
+        series: w.globals.series,
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      });
+    }
+  }]);
+
+  return Labels;
+}();
+
+/**
+ * ApexCharts Tooltip.Position Class to move the tooltip based on x and y position.
+ *
+ * @module Tooltip.Position
+ **/
+
+var Position =
+/*#__PURE__*/
+function () {
+  function Position(tooltipContext) {
+    _classCallCheck(this, Position);
+
+    this.ttCtx = tooltipContext;
+    this.ctx = tooltipContext.ctx;
+    this.w = tooltipContext.w;
+  }
+  /**
+   * This will move the crosshair (the vertical/horz line that moves along with mouse)
+   * Along with this, this function also calls the xaxisMove function
+   * @memberof Position
+   * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair
+   */
+
+
+  _createClass(Position, [{
+    key: "moveXCrosshairs",
+    value: function moveXCrosshairs(cx) {
+      var j = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+      var ttCtx = this.ttCtx;
+      var w = this.w;
+      var xcrosshairs = ttCtx.getElXCrosshairs();
+      var x = cx - ttCtx.xcrosshairsWidth / 2;
+      var tickAmount = w.globals.labels.slice().length;
+
+      if (j !== null) {
+        x = w.globals.gridWidth / tickAmount * j;
+      }
+
+      if (w.config.xaxis.crosshairs.width === 'tickWidth' || w.config.xaxis.crosshairs.width === 'barWidth') {
+        if (x + ttCtx.xcrosshairsWidth > w.globals.gridWidth) {
+          x = w.globals.gridWidth - ttCtx.xcrosshairsWidth;
+        }
+      } else {
+        if (j !== null) {
+          x = x + w.globals.gridWidth / tickAmount / 2;
+        }
+      }
+
+      if (x < 0) {
+        x = 0;
+      }
+
+      if (x > w.globals.gridWidth) {
+        x = w.globals.gridWidth;
+      }
+
+      if (xcrosshairs !== null) {
+        xcrosshairs.setAttribute('x', x);
+        xcrosshairs.setAttribute('x1', x);
+        xcrosshairs.setAttribute('x2', x);
+        xcrosshairs.setAttribute('y2', w.globals.gridHeight);
+        xcrosshairs.classList.add('active');
+      }
+
+      if (ttCtx.blxaxisTooltip) {
+        var tx = x;
+
+        if (w.config.xaxis.crosshairs.width === 'tickWidth' || w.config.xaxis.crosshairs.width === 'barWidth') {
+          tx = x + ttCtx.xcrosshairsWidth / 2;
+        }
+
+        this.moveXAxisTooltip(tx);
+      }
+    }
+    /**
+     * This will move the crosshair (the vertical/horz line that moves along with mouse)
+     * Along with this, this function also calls the xaxisMove function
+     * @memberof Position
+     * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair
+     */
+
+  }, {
+    key: "moveYCrosshairs",
+    value: function moveYCrosshairs(cy) {
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.ycrosshairs !== null) {
+        Graphics.setAttrs(ttCtx.ycrosshairs, {
+          y1: cy,
+          y2: cy
+        });
+        Graphics.setAttrs(ttCtx.ycrosshairsHidden, {
+          y1: cy,
+          y2: cy
+        });
+      }
+    }
+    /**
+     ** AxisTooltip is the small rectangle which appears on x axis with x value, when user moves
+     * @memberof Position
+     * @param {int} - cx = point's x position, wherever point's x is, you need to move
+     */
+
+  }, {
+    key: "moveXAxisTooltip",
+    value: function moveXAxisTooltip(cx) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.xaxisTooltip !== null) {
+        ttCtx.xaxisTooltip.classList.add('active');
+        var cy = ttCtx.xaxisOffY + w.config.xaxis.tooltip.offsetY + w.globals.translateY + 1 + w.config.xaxis.offsetY;
+        var xaxisTTText = ttCtx.xaxisTooltip.getBoundingClientRect();
+        var xaxisTTTextWidth = xaxisTTText.width;
+        cx = cx - xaxisTTTextWidth / 2;
+
+        if (!isNaN(cx)) {
+          cx = cx + w.globals.translateX;
+          var textRect = 0;
+          var graphics = new Graphics(this.ctx);
+          textRect = graphics.getTextRects(ttCtx.xaxisTooltipText.innerHTML);
+          ttCtx.xaxisTooltipText.style.minWidth = textRect.width + 'px';
+          ttCtx.xaxisTooltip.style.left = cx + 'px';
+          ttCtx.xaxisTooltip.style.top = cy + 'px';
+        }
+      }
+    }
+  }, {
+    key: "moveYAxisTooltip",
+    value: function moveYAxisTooltip(index) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.yaxisTTEls === null) {
+        ttCtx.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip');
+      }
+
+      var ycrosshairsHiddenRectY1 = parseInt(ttCtx.ycrosshairsHidden.getAttribute('y1'));
+      var cy = w.globals.translateY + ycrosshairsHiddenRectY1;
+      var yAxisTTRect = ttCtx.yaxisTTEls[index].getBoundingClientRect();
+      var yAxisTTHeight = yAxisTTRect.height;
+      var cx = w.globals.translateYAxisX[index] - 2;
+
+      if (w.config.yaxis[index].opposite) {
+        cx = cx - 26;
+      }
+
+      cy = cy - yAxisTTHeight / 2;
+
+      if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1) {
+        ttCtx.yaxisTTEls[index].classList.add('active');
+        ttCtx.yaxisTTEls[index].style.top = cy + 'px';
+        ttCtx.yaxisTTEls[index].style.left = cx + w.config.yaxis[index].tooltip.offsetX + 'px';
+      } else {
+        ttCtx.yaxisTTEls[index].classList.remove('active');
+      }
+    }
+    /**
+     ** moves the whole tooltip by changing x, y attrs
+     * @memberof Position
+     * @param {int} - cx = point's x position, wherever point's x is, you need to move tooltip
+     * @param {int} - cy = point's y position, wherever point's y is, you need to move tooltip
+     * @param {int} - r = point's radius
+     */
+
+  }, {
+    key: "moveTooltip",
+    value: function moveTooltip(cx, cy) {
+      var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var tooltipEl = ttCtx.getElTooltip();
+      var tooltipRect = ttCtx.tooltipRect;
+      var pointR = r !== null ? parseInt(r) : 1;
+      var x = parseInt(cx) + pointR + 5;
+      var y = parseInt(cy) + pointR / 2; // - tooltipRect.ttHeight / 2
+
+      if (x > w.globals.gridWidth / 2) {
+        x = x - tooltipRect.ttWidth - pointR - 15;
+      }
+
+      if (x > w.globals.gridWidth - tooltipRect.ttWidth - 10) {
+        x = w.globals.gridWidth - tooltipRect.ttWidth;
+      }
+
+      if (x < -20) {
+        x = -20;
+      }
+
+      if (w.config.tooltip.followCursor) {
+        var elGrid = ttCtx.getElGrid();
+        var seriesBound = elGrid.getBoundingClientRect();
+        y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top - tooltipRect.ttHeight / 2;
+      }
+
+      var newPositions = this.positionChecks(tooltipRect, x, y);
+      x = newPositions.x;
+      y = newPositions.y;
+
+      if (!isNaN(x)) {
+        x = x + w.globals.translateX;
+        tooltipEl.style.left = x + 'px';
+        tooltipEl.style.top = y + 'px';
+      }
+    }
+  }, {
+    key: "positionChecks",
+    value: function positionChecks(tooltipRect, x, y) {
+      var w = this.w;
+
+      if (tooltipRect.ttHeight + y > w.globals.gridHeight) {
+        y = w.globals.gridHeight - tooltipRect.ttHeight + w.globals.translateY;
+      }
+
+      if (y < 0) {
+        y = 0;
+      }
+
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "moveMarkers",
+    value: function moveMarkers(i, j) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (w.globals.markers.size[i] > 0) {
+        var allPoints = w.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(i, "'] .apexcharts-marker"));
+
+        for (var p = 0; p < allPoints.length; p++) {
+          if (parseInt(allPoints[p].getAttribute('rel')) === j) {
+            ttCtx.marker.resetPointsSize();
+            ttCtx.marker.enlargeCurrentPoint(j, allPoints[p]);
+          }
+        }
+      } else {
+        ttCtx.marker.resetPointsSize();
+        this.moveDynamicPointOnHover(j, i);
+      }
+    } // This function is used when you need to show markers/points only on hover -
+    // DIFFERENT X VALUES in multiple series
+
+  }, {
+    key: "moveDynamicPointOnHover",
+    value: function moveDynamicPointOnHover(j, capturedSeries) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var cx = 0;
+      var cy = 0;
+      var pointsArr = w.globals.pointsArray;
+      var hoverSize = w.config.markers.hover.size;
+
+      if (hoverSize === undefined) {
+        hoverSize = w.globals.markers.size[capturedSeries] + w.config.markers.hover.sizeOffset;
+      }
+
+      cx = pointsArr[capturedSeries][j][0];
+      cy = pointsArr[capturedSeries][j][1] ? pointsArr[capturedSeries][j][1] : 0;
+      var point = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(capturedSeries, "'] .apexcharts-series-markers circle"));
+
+      if (point) {
+        point.setAttribute('r', hoverSize);
+        point.setAttribute('cx', cx);
+        point.setAttribute('cy', cy);
+      } // point.style.opacity = w.config.markers.hover.opacity
+
+
+      this.moveXCrosshairs(cx);
+
+      if (!ttCtx.fixedTooltip) {
+        this.moveTooltip(cx, cy, hoverSize);
+      }
+    } // This function is used when you need to show markers/points only on hover -
+    // SAME X VALUES in multiple series
+
+  }, {
+    key: "moveDynamicPointsOnHover",
+    value: function moveDynamicPointsOnHover(j) {
+      var ttCtx = this.ttCtx;
+      var w = ttCtx.w;
+      var cx = 0;
+      var cy = 0;
+      var activeSeries = 0;
+      var pointsArr = w.globals.pointsArray;
+      var series = new Series(this.ctx);
+      activeSeries = series.getActiveSeriesIndex();
+      var hoverSize = w.config.markers.hover.size;
+
+      if (hoverSize === undefined) {
+        hoverSize = w.globals.markers.size[activeSeries] + w.config.markers.hover.sizeOffset;
+      }
+
+      if (pointsArr[activeSeries]) {
+        cx = pointsArr[activeSeries][j][0];
+        cy = pointsArr[activeSeries][j][1];
+      }
+
+      var points = null;
+      var allPoints = ttCtx.getAllMarkers();
+
+      if (allPoints !== null) {
+        points = allPoints;
+      } else {
+        points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers circle');
+      }
+
+      if (points !== null) {
+        for (var p = 0; p < points.length; p++) {
+          var pointArr = pointsArr[p];
+
+          if (pointArr && pointArr.length) {
+            var pcy = pointsArr[p][j][1];
+            points[p].setAttribute('cx', cx);
+            var realIndex = parseInt(points[p].parentNode.parentNode.parentNode.getAttribute('data:realIndex'));
+
+            if (pcy !== null) {
+              points[realIndex] && points[realIndex].setAttribute('r', hoverSize);
+              points[realIndex] && points[realIndex].setAttribute('cy', pcy);
+            } else {
+              points[realIndex] && points[realIndex].setAttribute('r', 0);
+            }
+          }
+        }
+      }
+
+      this.moveXCrosshairs(cx);
+
+      if (!ttCtx.fixedTooltip) {
+        var tcy = cy || w.globals.gridHeight;
+        this.moveTooltip(cx, tcy, hoverSize);
+      }
+    }
+  }, {
+    key: "moveStickyTooltipOverBars",
+    value: function moveStickyTooltipOverBars(j) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var jBar = w.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='1'] path[j='".concat(j, "'], .apexcharts-candlestick-series .apexcharts-series[rel='1'] path[j='").concat(j, "'], .apexcharts-rangebar-series .apexcharts-series[rel='1'] path[j='").concat(j, "']"));
+      var bcx = jBar ? parseFloat(jBar.getAttribute('cx')) : 0;
+      var bcy = 0;
+      var bw = jBar ? parseFloat(jBar.getAttribute('barWidth')) : 0;
+
+      if (w.globals.isXNumeric) {
+        bcx = bcx - bw / 2;
+      } else {
+        bcx = ttCtx.xAxisTicksPositions[j - 1] + ttCtx.dataPointsDividedWidth / 2;
+
+        if (isNaN(bcx)) {
+          bcx = ttCtx.xAxisTicksPositions[j] - ttCtx.dataPointsDividedWidth / 2;
+        }
+      } // tooltip will move vertically along with mouse as it is a shared tooltip
+
+
+      var elGrid = ttCtx.getElGrid();
+      var seriesBound = elGrid.getBoundingClientRect();
+      bcy = ttCtx.e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2;
+      this.moveXCrosshairs(bcx);
+
+      if (!ttCtx.fixedTooltip) {
+        var tcy = bcy || w.globals.gridHeight;
+        this.moveTooltip(bcx, tcy);
+      }
+    }
+  }]);
+
+  return Position;
+}();
+
+/**
+ * ApexCharts Tooltip.Marker Class to draw texts on the tooltip.
+ *
+ * @module Tooltip.Marker
+ **/
+
+var Marker =
+/*#__PURE__*/
+function () {
+  function Marker(tooltipContext) {
+    _classCallCheck(this, Marker);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+    this.ctx = tooltipContext.ctx;
+    this.tooltipPosition = new Position(tooltipContext);
+  }
+
+  _createClass(Marker, [{
+    key: "drawDynamicPoints",
+    value: function drawDynamicPoints() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var marker = new Markers(this.ctx);
+      var elsSeries = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');
+
+      for (var i = 0; i < elsSeries.length; i++) {
+        var seriesIndex = parseInt(elsSeries[i].getAttribute('data:realIndex'));
+        var pointsMain = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesIndex, "'] .apexcharts-series-markers-wrap"));
+
+        if (pointsMain !== null) {
+          // it can be null as we have tooltips in donut/bar charts
+          var point = void 0;
+          var PointClasses = "apexcharts-marker w".concat((Math.random() + 1).toString(36).substring(4));
+
+          if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) {
+            PointClasses += ' no-pointer-events';
+          }
+
+          var elPointOptions = marker.getMarkerConfig(PointClasses, seriesIndex);
+          point = graphics.drawMarker(0, 0, elPointOptions);
+          point.node.setAttribute('default-marker-size', 0);
+          var elPointsG = document.createElementNS(w.globals.SVGNS, 'g');
+          elPointsG.classList.add('apexcharts-series-markers');
+          elPointsG.appendChild(point.node);
+          pointsMain.appendChild(elPointsG);
+        }
+      }
+    }
+  }, {
+    key: "enlargeCurrentPoint",
+    value: function enlargeCurrentPoint(rel, point) {
+      var x = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+      var y = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
+      var w = this.w;
+
+      if (w.config.chart.type !== 'bubble') {
+        this.newPointSize(rel, point);
+      }
+
+      var cx = point.getAttribute('cx');
+      var cy = point.getAttribute('cy');
+
+      if (x !== null && y !== null) {
+        cx = x;
+        cy = y;
+      }
+
+      this.tooltipPosition.moveXCrosshairs(cx);
+
+      if (!this.fixedTooltip) {
+        if (w.config.chart.type === 'radar') {
+          var elGrid = this.ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect();
+          cx = this.ttCtx.e.clientX - seriesBound.left;
+        }
+
+        this.tooltipPosition.moveTooltip(cx, cy, w.config.markers.hover.size);
+      }
+    }
+  }, {
+    key: "enlargePoints",
+    value: function enlargePoints(j) {
+      var w = this.w;
+      var me = this;
+      var ttCtx = this.ttCtx;
+      var col = j;
+      var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker');
+      var newSize = w.config.markers.hover.size;
+
+      for (var p = 0; p < points.length; p++) {
+        var rel = points[p].getAttribute('rel');
+        var index = points[p].getAttribute('index');
+
+        if (newSize === undefined) {
+          newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset;
+        }
+
+        if (col === parseInt(rel)) {
+          me.newPointSize(col, points[p]);
+          var cx = points[p].getAttribute('cx');
+          var cy = points[p].getAttribute('cy');
+          me.tooltipPosition.moveXCrosshairs(cx);
+
+          if (!ttCtx.fixedTooltip) {
+            me.tooltipPosition.moveTooltip(cx, cy, newSize);
+          }
+        } else {
+          me.oldPointSize(points[p]);
+        }
+      }
+    }
+  }, {
+    key: "newPointSize",
+    value: function newPointSize(rel, point) {
+      var w = this.w;
+      var newSize = w.config.markers.hover.size;
+      var elPoint = null;
+
+      if (rel === 0) {
+        elPoint = point.parentNode.firstChild;
+      } else {
+        elPoint = point.parentNode.lastChild;
+      }
+
+      var index = parseInt(elPoint.getAttribute('index'));
+
+      if (newSize === undefined) {
+        newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset;
+      }
+
+      elPoint.setAttribute('r', newSize);
+    }
+  }, {
+    key: "oldPointSize",
+    value: function oldPointSize(point) {
+      var size = parseInt(point.getAttribute('default-marker-size'));
+      point.setAttribute('r', size);
+    }
+  }, {
+    key: "resetPointsSize",
+    value: function resetPointsSize() {
+      var w = this.w;
+      var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker');
+
+      for (var p = 0; p < points.length; p++) {
+        var size = parseInt(points[p].getAttribute('default-marker-size'));
+
+        if (Utils.isNumber(size)) {
+          points[p].setAttribute('r', size);
+        } else {
+          points[p].setAttribute('r', 0);
+        }
+      }
+    }
+  }]);
+
+  return Marker;
+}();
+
+/**
+ * ApexCharts Tooltip.Intersect Class.
+ *
+ * @module Tooltip.Intersect
+ **/
+
+var Intersect =
+/*#__PURE__*/
+function () {
+  function Intersect(tooltipContext) {
+    _classCallCheck(this, Intersect);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+  }
+
+  _createClass(Intersect, [{
+    key: "getAttr",
+    value: function getAttr(e, attr) {
+      return parseFloat(e.target.getAttribute(attr));
+    }
+  }, {
+    key: "handleHeatTooltip",
+    value: function handleHeatTooltip(_ref) {
+      var e = _ref.e,
+          opt = _ref.opt,
+          x = _ref.x,
+          y = _ref.y;
+      var ttCtx = this.ttCtx;
+      var w = this.w;
+
+      if (e.target.classList.contains('apexcharts-heatmap-rect')) {
+        var i = this.getAttr(e, 'i');
+        var j = this.getAttr(e, 'j');
+        var cx = this.getAttr(e, 'cx');
+        var cy = this.getAttr(e, 'cy');
+        var width = this.getAttr(e, 'width');
+        var height = this.getAttr(e, 'height');
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: i,
+          j: j,
+          shared: false
+        });
+        x = cx + ttCtx.tooltipRect.ttWidth / 2 + width;
+        y = cy + ttCtx.tooltipRect.ttHeight / 2 - height / 2;
+        ttCtx.tooltipPosition.moveXCrosshairs(cx + width / 2);
+
+        if (x > w.globals.gridWidth / 2) {
+          x = cx - ttCtx.tooltipRect.ttWidth / 2 + width;
+        }
+
+        if (ttCtx.w.config.tooltip.followCursor) {
+          var elGrid = ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect(); // x = ttCtx.e.clientX - seriesBound.left
+
+          y = ttCtx.e.clientY - seriesBound.top + w.globals.translateY / 2 - 10;
+        }
+      }
+
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "handleMarkerTooltip",
+    value: function handleMarkerTooltip(_ref2) {
+      var e = _ref2.e,
+          opt = _ref2.opt,
+          x = _ref2.x,
+          y = _ref2.y;
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var i;
+      var j;
+
+      if (e.target.classList.contains('apexcharts-marker')) {
+        var cx = parseInt(opt.paths.getAttribute('cx'));
+        var cy = parseInt(opt.paths.getAttribute('cy'));
+        var val = parseFloat(opt.paths.getAttribute('val'));
+        j = parseInt(opt.paths.getAttribute('rel'));
+        i = parseInt(opt.paths.parentNode.parentNode.parentNode.getAttribute('rel')) - 1;
+
+        if (ttCtx.intersect) {
+          var el = Utils.findAncestor(opt.paths, 'apexcharts-series');
+
+          if (el) {
+            i = parseInt(el.getAttribute('data:realIndex'));
+          }
+        }
+
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: i,
+          j: j,
+          shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared
+        });
+
+        if (e.type === 'mouseup') {
+          ttCtx.markerClick(e, i, j);
+        }
+
+        x = cx;
+        y = cy + w.globals.translateY - ttCtx.tooltipRect.ttHeight * 1.4;
+
+        if (ttCtx.w.config.tooltip.followCursor) {
+          var elGrid = ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect();
+          y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top;
+        }
+
+        if (val < 0) {
+          y = cy;
+        }
+
+        ttCtx.marker.enlargeCurrentPoint(j, opt.paths, x, y);
+      }
+
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "handleBarTooltip",
+    value: function handleBarTooltip(_ref3) {
+      var e = _ref3.e,
+          opt = _ref3.opt;
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var tooltipEl = ttCtx.getElTooltip();
+      var bx = 0;
+      var x = 0;
+      var y = 0; // let bW = 0
+
+      var i = 0;
+      var strokeWidth;
+      var barXY = this.getBarTooltipXY({
+        e: e,
+        opt: opt
+      });
+      i = barXY.i;
+      var barHeight = barXY.barHeight;
+      var j = barXY.j;
+
+      if (w.globals.isBarHorizontal && ttCtx.hasBars() || !w.config.tooltip.shared) {
+        x = barXY.x;
+        y = barXY.y;
+        strokeWidth = Array.isArray(w.config.stroke.width) ? w.config.stroke.width[i] : w.config.stroke.width; // bW = barXY.barWidth
+
+        bx = x;
+      } else {
+        if (!w.globals.comboCharts && !w.config.tooltip.shared) {
+          bx = bx / 2;
+        }
+      } // y is NaN, make it touch the bottom of grid area
+
+
+      if (isNaN(y)) {
+        y = w.globals.svgHeight - ttCtx.tooltipRect.ttHeight;
+      } // x exceeds gridWidth
+
+
+      if (x + ttCtx.tooltipRect.ttWidth > w.globals.gridWidth) {
+        x = x - ttCtx.tooltipRect.ttWidth;
+      } else if (x < 0) {
+        x = x + ttCtx.tooltipRect.ttWidth;
+      }
+
+      if (ttCtx.w.config.tooltip.followCursor) {
+        var elGrid = ttCtx.getElGrid();
+        var seriesBound = elGrid.getBoundingClientRect();
+        y = ttCtx.e.clientY - seriesBound.top;
+      } // if tooltip is still null, querySelector
+
+
+      if (ttCtx.tooltip === null) {
+        ttCtx.tooltip = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip');
+      }
+
+      if (!w.config.tooltip.shared) {
+        if (w.globals.comboChartsHasBars) {
+          ttCtx.tooltipPosition.moveXCrosshairs(bx + strokeWidth / 2);
+        } else {
+          ttCtx.tooltipPosition.moveXCrosshairs(bx);
+        }
+      } // move tooltip here
+
+
+      if (!ttCtx.fixedTooltip && (!w.config.tooltip.shared || w.globals.isBarHorizontal && ttCtx.hasBars())) {
+        if (isReversed) {
+          x = w.globals.gridWidth - x;
+        }
+
+        tooltipEl.style.left = x + w.globals.translateX + 'px';
+        var seriesIndex = parseInt(opt.paths.parentNode.getAttribute('data:realIndex'));
+        var isReversed = w.globals.isMultipleYAxis ? w.config.yaxis[seriesIndex] && w.config.yaxis[seriesIndex].reversed : w.config.yaxis[0].reversed;
+
+        if (isReversed && !(w.globals.isBarHorizontal && ttCtx.hasBars())) {
+          y = y + barHeight - (w.globals.series[i][j] < 0 ? barHeight : 0) * 2;
+        }
+
+        if (ttCtx.tooltipRect.ttHeight + y > w.globals.gridHeight) {
+          y = w.globals.gridHeight - ttCtx.tooltipRect.ttHeight + w.globals.translateY;
+          tooltipEl.style.top = y + 'px';
+        } else {
+          tooltipEl.style.top = y + w.globals.translateY - ttCtx.tooltipRect.ttHeight / 2 + 'px';
+        }
+      }
+    }
+  }, {
+    key: "getBarTooltipXY",
+    value: function getBarTooltipXY(_ref4) {
+      var e = _ref4.e,
+          opt = _ref4.opt;
+      var w = this.w;
+      var j = null;
+      var ttCtx = this.ttCtx;
+      var i = 0;
+      var x = 0;
+      var y = 0;
+      var barWidth = 0;
+      var barHeight = 0;
+      var cl = e.target.classList;
+
+      if (cl.contains('apexcharts-bar-area') || cl.contains('apexcharts-candlestick-area') || cl.contains('apexcharts-rangebar-area')) {
+        var bar = e.target;
+        var barRect = bar.getBoundingClientRect();
+        var seriesBound = opt.elGrid.getBoundingClientRect();
+        var bh = barRect.height;
+        barHeight = barRect.height;
+        var bw = barRect.width;
+        var cx = parseInt(bar.getAttribute('cx'));
+        var cy = parseInt(bar.getAttribute('cy'));
+        barWidth = parseFloat(bar.getAttribute('barWidth'));
+        var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+        j = parseInt(bar.getAttribute('j'));
+        i = parseInt(bar.parentNode.getAttribute('rel')) - 1;
+
+        if (w.globals.comboCharts) {
+          i = parseInt(bar.parentNode.getAttribute('data:realIndex'));
+        } // if (w.config.tooltip.shared) {
+        // this check not needed  at the moment
+        //   const yDivisor = w.globals.gridHeight / (w.globals.series.length)
+        //   const hoverY = ttCtx.clientY - ttCtx.seriesBound.top
+        //   j = Math.ceil(hoverY / yDivisor)
+        // }
+
+
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: i,
+          j: j,
+          shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared
+        });
+
+        if (w.config.tooltip.followCursor) {
+          if (w.globals.isBarHorizontal) {
+            x = clientX - seriesBound.left + 15;
+            y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2;
+          } else {
+            if (w.globals.isXNumeric) {
+              x = cx - bw / 2;
+            } else {
+              x = cx - ttCtx.dataPointsDividedWidth + bw / 2;
+            }
+
+            y = e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2 - 15;
+          }
+        } else {
+          if (w.globals.isBarHorizontal) {
+            x = cx;
+
+            if (x < ttCtx.xyRatios.baseLineInvertedY) {
+              x = cx - ttCtx.tooltipRect.ttWidth;
+            }
+
+            y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2;
+          } else {
+            // if columns
+            if (w.globals.isXNumeric) {
+              x = cx - bw / 2;
+            } else {
+              x = cx - ttCtx.dataPointsDividedWidth + bw / 2;
+            }
+
+            y = cy; // - ttCtx.tooltipRect.ttHeight / 2 + 10
+          }
+        }
+      }
+
+      return {
+        x: x,
+        y: y,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        i: i,
+        j: j
+      };
+    }
+  }]);
+
+  return Intersect;
+}();
+
+/**
+ * ApexCharts Tooltip.AxesTooltip Class.
+ *
+ * @module Tooltip.AxesTooltip
+ **/
+var AxesTooltip =
+/*#__PURE__*/
+function () {
+  function AxesTooltip(tooltipContext) {
+    _classCallCheck(this, AxesTooltip);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+  }
+  /**
+   * This method adds the secondary tooltip which appears below x axis
+   * @memberof Tooltip
+   **/
+
+
+  _createClass(AxesTooltip, [{
+    key: "drawXaxisTooltip",
+    value: function drawXaxisTooltip() {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var isBottom = w.config.xaxis.position === 'bottom';
+      ttCtx.xaxisOffY = isBottom ? w.globals.gridHeight + 1 : 1;
+      var tooltipCssClass = isBottom ? 'apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom' : 'apexcharts-xaxistooltip apexcharts-xaxistooltip-top';
+      var renderTo = w.globals.dom.elWrap;
+
+      if (ttCtx.blxaxisTooltip) {
+        var xaxisTooltip = w.globals.dom.baseEl.querySelector('.apexcharts-xaxistooltip');
+
+        if (xaxisTooltip === null) {
+          ttCtx.xaxisTooltip = document.createElement('div');
+          ttCtx.xaxisTooltip.setAttribute('class', tooltipCssClass + ' ' + w.config.tooltip.theme);
+          renderTo.appendChild(ttCtx.xaxisTooltip);
+          ttCtx.xaxisTooltipText = document.createElement('div');
+          ttCtx.xaxisTooltipText.classList.add('apexcharts-xaxistooltip-text');
+          ttCtx.xaxisTooltipText.style.fontFamily = w.config.xaxis.tooltip.style.fontFamily || w.config.chart.fontFamily;
+          ttCtx.xaxisTooltipText.style.fontSize = w.config.xaxis.tooltip.style.fontSize;
+          ttCtx.xaxisTooltip.appendChild(ttCtx.xaxisTooltipText);
+        }
+      }
+    }
+    /**
+     * This method adds the secondary tooltip which appears below x axis
+     * @memberof Tooltip
+     **/
+
+  }, {
+    key: "drawYaxisTooltip",
+    value: function drawYaxisTooltip() {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      for (var i = 0; i < w.config.yaxis.length; i++) {
+        var isRight = w.config.yaxis[i].opposite || w.config.yaxis[i].crosshairs.opposite;
+        ttCtx.yaxisOffX = isRight ? w.globals.gridWidth + 1 : 1;
+        var tooltipCssClass = isRight ? "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i, " apexcharts-yaxistooltip-right") : "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i, " apexcharts-yaxistooltip-left");
+        var renderTo = w.globals.dom.elWrap;
+
+        if (ttCtx.blyaxisTooltip) {
+          var yaxisTooltip = w.globals.dom.baseEl.querySelector(".apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i));
+
+          if (yaxisTooltip === null) {
+            ttCtx.yaxisTooltip = document.createElement('div');
+            ttCtx.yaxisTooltip.setAttribute('class', tooltipCssClass + ' ' + w.config.tooltip.theme);
+            renderTo.appendChild(ttCtx.yaxisTooltip);
+            if (i === 0) ttCtx.yaxisTooltipText = [];
+            ttCtx.yaxisTooltipText.push(document.createElement('div'));
+            ttCtx.yaxisTooltipText[i].classList.add('apexcharts-yaxistooltip-text');
+            ttCtx.yaxisTooltip.appendChild(ttCtx.yaxisTooltipText[i]);
+          }
+        }
+      }
+    }
+    /**
+     * @memberof Tooltip
+     **/
+
+  }, {
+    key: "setXCrosshairWidth",
+    value: function setXCrosshairWidth() {
+      var w = this.w;
+      var ttCtx = this.ttCtx; // set xcrosshairs width
+
+      var xcrosshairs = ttCtx.getElXCrosshairs();
+      ttCtx.xcrosshairsWidth = parseInt(w.config.xaxis.crosshairs.width);
+
+      if (!w.globals.comboCharts) {
+        if (w.config.xaxis.crosshairs.width === 'tickWidth') {
+          var count = w.globals.labels.length;
+          ttCtx.xcrosshairsWidth = w.globals.gridWidth / count;
+        } else if (w.config.xaxis.crosshairs.width === 'barWidth') {
+          var bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area');
+
+          if (bar !== null) {
+            var barWidth = parseFloat(bar.getAttribute('barWidth'));
+            ttCtx.xcrosshairsWidth = barWidth;
+          } else {
+            ttCtx.xcrosshairsWidth = 1;
+          }
+        }
+      } else {
+        var _bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area');
+
+        if (_bar !== null && w.config.xaxis.crosshairs.width === 'barWidth') {
+          var _barWidth = parseFloat(_bar.getAttribute('barWidth'));
+
+          ttCtx.xcrosshairsWidth = _barWidth;
+        } else {
+          if (w.config.xaxis.crosshairs.width === 'tickWidth') {
+            var _count = w.globals.labels.length;
+            ttCtx.xcrosshairsWidth = w.globals.gridWidth / _count;
+          }
+        }
+      }
+
+      if (w.globals.isBarHorizontal) {
+        ttCtx.xcrosshairsWidth = 0;
+      }
+
+      if (xcrosshairs !== null && ttCtx.xcrosshairsWidth > 0) {
+        xcrosshairs.setAttribute('width', ttCtx.xcrosshairsWidth);
+      }
+    }
+  }, {
+    key: "handleYCrosshair",
+    value: function handleYCrosshair() {
+      var w = this.w;
+      var ttCtx = this.ttCtx; // set ycrosshairs height
+
+      ttCtx.ycrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs');
+      ttCtx.ycrosshairsHidden = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs-hidden');
+    }
+  }, {
+    key: "drawYaxisTooltipText",
+    value: function drawYaxisTooltipText(index, clientY, xyRatios) {
+      var ttCtx = this.ttCtx;
+      var w = this.w;
+      var lbFormatter = w.globals.yLabelFormatters[index];
+
+      if (ttCtx.blyaxisTooltip) {
+        var elGrid = ttCtx.getElGrid();
+        var seriesBound = elGrid.getBoundingClientRect();
+        var hoverY = (clientY - seriesBound.top) * xyRatios.yRatio[index];
+        var height = w.globals.maxYArr[index] - w.globals.minYArr[index];
+        var val = w.globals.minYArr[index] + (height - hoverY);
+        ttCtx.tooltipPosition.moveYCrosshairs(clientY - seriesBound.top);
+        ttCtx.yaxisTooltipText[index].innerHTML = lbFormatter(val);
+        ttCtx.tooltipPosition.moveYAxisTooltip(index);
+      }
+    }
+  }]);
+
+  return AxesTooltip;
+}();
+
+/**
+ * ApexCharts Core Tooltip Class to handle the tooltip generation.
+ *
+ * @module Tooltip
+ **/
+
+var Tooltip =
+/*#__PURE__*/
+function () {
+  function Tooltip(ctx) {
+    _classCallCheck(this, Tooltip);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+    this.tConfig = w.config.tooltip;
+    this.tooltipUtil = new Utils$1(this);
+    this.tooltipLabels = new Labels(this);
+    this.tooltipPosition = new Position(this);
+    this.marker = new Marker(this);
+    this.intersect = new Intersect(this);
+    this.axesTooltip = new AxesTooltip(this);
+    this.showOnIntersect = this.tConfig.intersect;
+    this.showTooltipTitle = this.tConfig.x.show;
+    this.fixedTooltip = this.tConfig.fixed.enabled;
+    this.xaxisTooltip = null;
+    this.yaxisTTEls = null;
+    this.isBarShared = !w.globals.isBarHorizontal && this.tConfig.shared;
+  }
+
+  _createClass(Tooltip, [{
+    key: "getElTooltip",
+    value: function getElTooltip(ctx) {
+      if (!ctx) ctx = this;
+      return ctx.w.globals.dom.baseEl.querySelector('.apexcharts-tooltip');
+    }
+  }, {
+    key: "getElXCrosshairs",
+    value: function getElXCrosshairs() {
+      return this.w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs');
+    }
+  }, {
+    key: "getElGrid",
+    value: function getElGrid() {
+      return this.w.globals.dom.baseEl.querySelector('.apexcharts-grid');
+    }
+  }, {
+    key: "drawTooltip",
+    value: function drawTooltip(xyRatios) {
+      var w = this.w;
+      this.xyRatios = xyRatios;
+      this.blxaxisTooltip = w.config.xaxis.tooltip.enabled && w.globals.axisCharts;
+      this.blyaxisTooltip = w.config.yaxis[0].tooltip.enabled && w.globals.axisCharts;
+      this.allTooltipSeriesGroups = [];
+
+      if (!w.globals.axisCharts) {
+        this.showTooltipTitle = false;
+      }
+
+      var tooltipEl = document.createElement('div');
+      tooltipEl.classList.add('apexcharts-tooltip');
+      tooltipEl.classList.add(this.tConfig.theme);
+      w.globals.dom.elWrap.appendChild(tooltipEl);
+
+      if (w.globals.axisCharts) {
+        this.axesTooltip.drawXaxisTooltip();
+        this.axesTooltip.drawYaxisTooltip();
+        this.axesTooltip.setXCrosshairWidth();
+        this.axesTooltip.handleYCrosshair();
+        var xAxis = new XAxis(this.ctx);
+        this.xAxisTicksPositions = xAxis.getXAxisTicksPositions();
+      } // we forcefully set intersect true for these conditions
+
+
+      if (w.globals.comboCharts && !this.tConfig.shared || this.tConfig.intersect && !this.tConfig.shared || (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && !this.tConfig.shared) {
+        this.showOnIntersect = true;
+      }
+
+      if (w.config.markers.size === 0 || w.globals.markers.largestSize === 0) {
+        // when user don't want to show points all the time, but only on when hovering on series
+        this.marker.drawDynamicPoints(this);
+      } // no visible series, exit
+
+
+      if (w.globals.collapsedSeries.length === w.globals.series.length) return;
+      this.dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints;
+      this.dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints;
+
+      if (this.showTooltipTitle) {
+        this.tooltipTitle = document.createElement('div');
+        this.tooltipTitle.classList.add('apexcharts-tooltip-title');
+        this.tooltipTitle.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily;
+        this.tooltipTitle.style.fontSize = this.tConfig.style.fontSize;
+        tooltipEl.appendChild(this.tooltipTitle);
+      }
+
+      var ttItemsCnt = w.globals.series.length; // whether shared or not, default is shared
+
+      if ((w.globals.xyCharts || w.globals.comboCharts) && this.tConfig.shared) {
+        if (!this.showOnIntersect) {
+          ttItemsCnt = w.globals.series.length;
+        } else {
+          ttItemsCnt = 1;
+        }
+      }
+
+      this.ttItems = this.createTTElements(ttItemsCnt);
+      this.addSVGEvents();
+    }
+  }, {
+    key: "createTTElements",
+    value: function createTTElements(ttItemsCnt) {
+      var w = this.w;
+      var ttItems = [];
+      var tooltipEl = this.getElTooltip();
+
+      for (var i = 0; i < ttItemsCnt; i++) {
+        var gTxt = document.createElement('div');
+        gTxt.classList.add('apexcharts-tooltip-series-group');
+
+        if (this.tConfig.shared && this.tConfig.enabledOnSeries && Array.isArray(this.tConfig.enabledOnSeries)) {
+          if (this.tConfig.enabledOnSeries.indexOf(i) < 0) {
+            gTxt.classList.add('apexcharts-tooltip-series-group-hidden');
+          }
+        }
+
+        var point = document.createElement('span');
+        point.classList.add('apexcharts-tooltip-marker');
+        point.style.backgroundColor = w.globals.colors[i];
+        gTxt.appendChild(point);
+        var gYZ = document.createElement('div');
+        gYZ.classList.add('apexcharts-tooltip-text');
+        gYZ.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily;
+        gYZ.style.fontSize = this.tConfig.style.fontSize; // y values group
+
+        var gYValText = document.createElement('div');
+        gYValText.classList.add('apexcharts-tooltip-y-group');
+        var txtLabel = document.createElement('span');
+        txtLabel.classList.add('apexcharts-tooltip-text-label');
+        gYValText.appendChild(txtLabel);
+        var txtValue = document.createElement('span');
+        txtValue.classList.add('apexcharts-tooltip-text-value');
+        gYValText.appendChild(txtValue); // z values group
+
+        var gZValText = document.createElement('div');
+        gZValText.classList.add('apexcharts-tooltip-z-group');
+        var txtZLabel = document.createElement('span');
+        txtZLabel.classList.add('apexcharts-tooltip-text-z-label');
+        gZValText.appendChild(txtZLabel);
+        var txtZValue = document.createElement('span');
+        txtZValue.classList.add('apexcharts-tooltip-text-z-value');
+        gZValText.appendChild(txtZValue);
+        gYZ.appendChild(gYValText);
+        gYZ.appendChild(gZValText);
+        gTxt.appendChild(gYZ);
+        tooltipEl.appendChild(gTxt);
+        ttItems.push(gTxt);
+      }
+
+      return ttItems;
+    }
+  }, {
+    key: "addSVGEvents",
+    value: function addSVGEvents() {
+      var w = this.w;
+      var type = w.config.chart.type;
+      var tooltipEl = this.getElTooltip();
+      var commonBar = !!(type === 'bar' || type === 'candlestick' || type === 'rangeBar');
+      var hoverArea = w.globals.dom.Paper.node;
+      var elGrid = this.getElGrid();
+
+      if (elGrid) {
+        this.seriesBound = elGrid.getBoundingClientRect();
+      }
+
+      var tooltipY = [];
+      var tooltipX = [];
+      var seriesHoverParams = {
+        hoverArea: hoverArea,
+        elGrid: elGrid,
+        tooltipEl: tooltipEl,
+        tooltipY: tooltipY,
+        tooltipX: tooltipX,
+        ttItems: this.ttItems
+      };
+      var points;
+
+      if (w.globals.axisCharts) {
+        if (type === 'area' || type === 'line' || type === 'scatter' || type === 'bubble') {
+          points = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker");
+        } else if (commonBar) {
+          points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-rangebar-area');
+        } else if (type === 'heatmap') {
+          points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-heatmap');
+        } else if (type === 'radar') {
+          points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-marker');
+        }
+
+        if (points && points.length) {
+          for (var p = 0; p < points.length; p++) {
+            tooltipY.push(points[p].getAttribute('cy'));
+            tooltipX.push(points[p].getAttribute('cx'));
+          }
+        }
+      }
+
+      var validSharedChartTypes = w.globals.xyCharts && !this.showOnIntersect || w.globals.comboCharts && !this.showOnIntersect || commonBar && this.hasBars() && this.tConfig.shared;
+
+      if (validSharedChartTypes) {
+        this.addPathsEventListeners([hoverArea], seriesHoverParams);
+      } else if (commonBar && !w.globals.comboCharts) {
+        this.addBarsEventListeners(seriesHoverParams);
+      } else if (type === 'bubble' || type === 'scatter' || type === 'radar' || this.showOnIntersect && (type === 'area' || type === 'line')) {
+        this.addPointsEventsListeners(seriesHoverParams);
+      } else if (!w.globals.axisCharts || type === 'heatmap') {
+        var seriesAll = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');
+        this.addPathsEventListeners(seriesAll, seriesHoverParams);
+      }
+
+      if (this.showOnIntersect) {
+        var linePoints = w.globals.dom.baseEl.querySelectorAll('.apexcharts-line-series .apexcharts-marker');
+
+        if (linePoints.length > 0) {
+          // if we find any lineSeries, addEventListeners for them
+          this.addPathsEventListeners(linePoints, seriesHoverParams);
+        }
+
+        var areaPoints = w.globals.dom.baseEl.querySelectorAll('.apexcharts-area-series .apexcharts-marker');
+
+        if (areaPoints.length > 0) {
+          // if we find any areaSeries, addEventListeners for them
+          this.addPathsEventListeners(areaPoints, seriesHoverParams);
+        } // combo charts may have bars, so add event listeners here too
+
+
+        if (this.hasBars() && !this.tConfig.shared) {
+          this.addBarsEventListeners(seriesHoverParams);
+        }
+      }
+    }
+  }, {
+    key: "drawFixedTooltipRect",
+    value: function drawFixedTooltipRect() {
+      var w = this.w;
+      var tooltipEl = this.getElTooltip();
+      var tooltipRect = tooltipEl.getBoundingClientRect();
+      var ttWidth = tooltipRect.width + 10;
+      var ttHeight = tooltipRect.height + 10;
+      var x = this.tConfig.fixed.offsetX;
+      var y = this.tConfig.fixed.offsetY;
+
+      if (this.tConfig.fixed.position.toLowerCase().indexOf('right') > -1) {
+        x = x + w.globals.svgWidth - ttWidth + 10;
+      }
+
+      if (this.tConfig.fixed.position.toLowerCase().indexOf('bottom') > -1) {
+        y = y + w.globals.svgHeight - ttHeight - 10;
+      }
+
+      tooltipEl.style.left = x + 'px';
+      tooltipEl.style.top = y + 'px';
+      return {
+        x: x,
+        y: y,
+        ttWidth: ttWidth,
+        ttHeight: ttHeight
+      };
+    }
+  }, {
+    key: "addPointsEventsListeners",
+    value: function addPointsEventsListeners(seriesHoverParams) {
+      var w = this.w;
+      var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers .apexcharts-marker');
+      this.addPathsEventListeners(points, seriesHoverParams);
+    }
+  }, {
+    key: "addBarsEventListeners",
+    value: function addBarsEventListeners(seriesHoverParams) {
+      var w = this.w;
+      var bars = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-rangebar-area');
+      this.addPathsEventListeners(bars, seriesHoverParams);
+    }
+  }, {
+    key: "addPathsEventListeners",
+    value: function addPathsEventListeners(paths, opts) {
+      var _this = this;
+
+      var self = this;
+
+      var _loop = function _loop(p) {
+        var extendedOpts = {
+          paths: paths[p],
+          tooltipEl: opts.tooltipEl,
+          tooltipY: opts.tooltipY,
+          tooltipX: opts.tooltipX,
+          elGrid: opts.elGrid,
+          hoverArea: opts.hoverArea,
+          ttItems: opts.ttItems
+        };
+        _this.w.globals.tooltipOpts = extendedOpts;
+        var events = ['mousemove', 'mouseup', 'touchmove', 'mouseout', 'touchend'];
+        events.map(function (ev) {
+          return paths[p].addEventListener(ev, self.seriesHover.bind(self, extendedOpts), {
+            capture: false,
+            passive: true
+          });
+        });
+      };
+
+      for (var p = 0; p < paths.length; p++) {
+        _loop(p);
+      }
+    }
+    /*
+     ** The actual series hover function
+     */
+
+  }, {
+    key: "seriesHover",
+    value: function seriesHover(opt, e) {
+      var _this2 = this;
+
+      var chartGroups = [];
+      var w = this.w; // if user has more than one charts in group, we need to sync
+
+      if (w.config.chart.group) {
+        chartGroups = this.ctx.getGroupedCharts();
+      }
+
+      if (w.globals.axisCharts && (w.globals.minX === -Infinity && w.globals.maxX === Infinity || w.globals.dataPoints === 0)) {
+        return;
+      }
+
+      if (chartGroups.length) {
+        chartGroups.forEach(function (ch) {
+          var tooltipEl = _this2.getElTooltip(ch);
+
+          var newOpts = {
+            paths: opt.paths,
+            tooltipEl: tooltipEl,
+            tooltipY: opt.tooltipY,
+            tooltipX: opt.tooltipX,
+            elGrid: opt.elGrid,
+            hoverArea: opt.hoverArea,
+            ttItems: ch.w.globals.tooltip.ttItems // all the charts should have the same minX and maxX (same xaxis) for multiple tooltips to work correctly
+
+          };
+
+          if (ch.w.globals.minX === _this2.w.globals.minX && ch.w.globals.maxX === _this2.w.globals.maxX) {
+            ch.w.globals.tooltip.seriesHoverByContext({
+              chartCtx: ch,
+              ttCtx: ch.w.globals.tooltip,
+              opt: newOpts,
+              e: e
+            });
+          }
+        });
+      } else {
+        this.seriesHoverByContext({
+          chartCtx: this.ctx,
+          ttCtx: this.w.globals.tooltip,
+          opt: opt,
+          e: e
+        });
+      }
+    }
+  }, {
+    key: "seriesHoverByContext",
+    value: function seriesHoverByContext(_ref) {
+      var chartCtx = _ref.chartCtx,
+          ttCtx = _ref.ttCtx,
+          opt = _ref.opt,
+          e = _ref.e;
+      var w = chartCtx.w;
+      var tooltipEl = this.getElTooltip(); // tooltipRect is calculated on every mousemove, because the text is dynamic
+
+      ttCtx.tooltipRect = {
+        x: 0,
+        y: 0,
+        ttWidth: tooltipEl.getBoundingClientRect().width,
+        ttHeight: tooltipEl.getBoundingClientRect().height
+      };
+      ttCtx.e = e; // highlight the current hovered bars
+
+      if (ttCtx.hasBars() && !w.globals.comboCharts && !ttCtx.isBarShared) {
+        if (this.tConfig.onDatasetHover.highlightDataSeries) {
+          var series = new Series(chartCtx);
+          series.toggleSeriesOnHover(e, e.target.parentNode);
+        }
+      }
+
+      if (ttCtx.fixedTooltip) {
+        ttCtx.drawFixedTooltipRect();
+      }
+
+      if (w.globals.axisCharts) {
+        ttCtx.axisChartsTooltips({
+          e: e,
+          opt: opt,
+          tooltipRect: ttCtx.tooltipRect
+        });
+      } else {
+        // non-plot charts i.e pie/donut/circle
+        ttCtx.nonAxisChartsTooltips({
+          e: e,
+          opt: opt,
+          tooltipRect: ttCtx.tooltipRect
+        });
+      }
+    } // tooltip handling for line/area/bar/columns/scatter
+
+  }, {
+    key: "axisChartsTooltips",
+    value: function axisChartsTooltips(_ref2) {
+      var e = _ref2.e,
+          opt = _ref2.opt;
+      var w = this.w;
+      var j, x, y;
+      var self = this;
+      var capj = null;
+      var seriesBound = opt.elGrid.getBoundingClientRect();
+      var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+      var clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY;
+      this.clientY = clientY;
+      this.clientX = clientX;
+
+      if (clientY < seriesBound.top || clientY > seriesBound.top + seriesBound.height) {
+        self.handleMouseOut(opt);
+        return;
+      }
+
+      if (Array.isArray(this.tConfig.enabledOnSeries)) {
+        var index = parseInt(opt.paths.getAttribute('index'));
+
+        if (this.tConfig.enabledOnSeries.indexOf(index) < 0) {
+          self.handleMouseOut(opt);
+          return;
+        }
+      }
+
+      var tooltipEl = this.getElTooltip();
+      var xcrosshairs = this.getElXCrosshairs();
+      var isStickyTooltip = w.globals.xyCharts || w.config.chart.type === 'bar' && !w.globals.isBarHorizontal && this.hasBars() && this.tConfig.shared || w.globals.comboCharts && this.hasBars;
+
+      if (w.globals.isBarHorizontal && this.hasBars()) {
+        isStickyTooltip = false;
+      }
+
+      if (e.type === 'mousemove' || e.type === 'touchmove' || e.type === 'mouseup') {
+        if (xcrosshairs !== null) {
+          xcrosshairs.classList.add('active');
+        }
+
+        if (self.ycrosshairs !== null && self.blyaxisTooltip) {
+          self.ycrosshairs.classList.add('active');
+        }
+
+        if (isStickyTooltip && !self.showOnIntersect) {
+          capj = self.tooltipUtil.getNearestValues({
+            context: self,
+            hoverArea: opt.hoverArea,
+            elGrid: opt.elGrid,
+            clientX: clientX,
+            clientY: clientY,
+            hasBars: self.hasBars
+          });
+          j = capj.j;
+          var capturedSeries = capj.capturedSeries;
+
+          if (capj.hoverX < 0 || capj.hoverX > w.globals.gridWidth) {
+            self.handleMouseOut(opt);
+            return;
+          }
+
+          if (capturedSeries !== null) {
+            var ignoreNull = w.globals.series[capturedSeries][j] === null;
+
+            if (ignoreNull) {
+              opt.tooltipEl.classList.remove('active');
+              return;
+            }
+
+            if (typeof w.globals.series[capturedSeries][j] !== 'undefined') {
+              if (this.tConfig.shared && this.tooltipUtil.isXoverlap(j) && this.tooltipUtil.isinitialSeriesSameLen()) {
+                this.create(e, self, capturedSeries, j, opt.ttItems);
+              } else {
+                this.create(e, self, capturedSeries, j, opt.ttItems, false);
+              }
+            } else {
+              if (this.tooltipUtil.isXoverlap(j)) {
+                self.create(e, self, 0, j, opt.ttItems);
+              }
+            }
+          } else {
+            // couldn't capture any series. check if shared X is same,
+            // if yes, draw a grouped tooltip
+            if (this.tooltipUtil.isXoverlap(j)) {
+              self.create(e, self, 0, j, opt.ttItems);
+            }
+          }
+        } else {
+          if (w.config.chart.type === 'heatmap') {
+            var markerXY = this.intersect.handleHeatTooltip({
+              e: e,
+              opt: opt,
+              x: x,
+              y: y
+            });
+            x = markerXY.x;
+            y = markerXY.y;
+            tooltipEl.style.left = x + 'px';
+            tooltipEl.style.top = y + 'px';
+          } else {
+            if (this.hasBars) {
+              this.intersect.handleBarTooltip({
+                e: e,
+                opt: opt
+              });
+            }
+
+            if (this.hasMarkers) {
+              // intersect - line/area/scatter/bubble
+              this.intersect.handleMarkerTooltip({
+                e: e,
+                opt: opt,
+                x: x,
+                y: y
+              });
+            }
+          }
+        }
+
+        if (this.blyaxisTooltip) {
+          for (var yt = 0; yt < w.config.yaxis.length; yt++) {
+            self.axesTooltip.drawYaxisTooltipText(yt, clientY, self.xyRatios);
+          }
+        }
+
+        opt.tooltipEl.classList.add('active');
+      } else if (e.type === 'mouseout' || e.type === 'touchend') {
+        this.handleMouseOut(opt);
+      }
+    } // tooltip handling for pie/donuts
+
+  }, {
+    key: "nonAxisChartsTooltips",
+    value: function nonAxisChartsTooltips(_ref3) {
+      var e = _ref3.e,
+          opt = _ref3.opt,
+          tooltipRect = _ref3.tooltipRect;
+      var w = this.w;
+      var rel = opt.paths.getAttribute('rel');
+      var tooltipEl = this.getElTooltip();
+      var seriesBound = w.globals.dom.elWrap.getBoundingClientRect();
+
+      if (e.type === 'mousemove' || e.type === 'touchmove') {
+        tooltipEl.classList.add('active');
+        this.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: parseInt(rel) - 1,
+          shared: false
+        });
+        var x = w.globals.clientX - seriesBound.left - tooltipRect.ttWidth / 2;
+        var y = w.globals.clientY - seriesBound.top - tooltipRect.ttHeight - 10;
+        tooltipEl.style.left = x + 'px';
+        tooltipEl.style.top = y + 'px';
+      } else if (e.type === 'mouseout' || e.type === 'touchend') {
+        tooltipEl.classList.remove('active');
+      }
+    }
+  }, {
+    key: "deactivateHoverFilter",
+    value: function deactivateHoverFilter() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var allPaths = w.globals.dom.Paper.select(".apexcharts-bar-area");
+
+      for (var b = 0; b < allPaths.length; b++) {
+        graphics.pathMouseLeave(allPaths[b]);
+      }
+    }
+  }, {
+    key: "handleMouseOut",
+    value: function handleMouseOut(opt) {
+      var w = this.w;
+      var xcrosshairs = this.getElXCrosshairs();
+      opt.tooltipEl.classList.remove('active');
+      this.deactivateHoverFilter();
+
+      if (w.config.chart.type !== 'bubble') {
+        this.marker.resetPointsSize();
+      }
+
+      if (xcrosshairs !== null) {
+        xcrosshairs.classList.remove('active');
+      }
+
+      if (this.ycrosshairs !== null) {
+        this.ycrosshairs.classList.remove('active');
+      }
+
+      if (this.blxaxisTooltip) {
+        this.xaxisTooltip.classList.remove('active');
+      }
+
+      if (this.blyaxisTooltip) {
+        if (this.yaxisTTEls === null) {
+          this.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip');
+        }
+
+        for (var i = 0; i < this.yaxisTTEls.length; i++) {
+          this.yaxisTTEls[i].classList.remove('active');
+        }
+      }
+    }
+  }, {
+    key: "getElMarkers",
+    value: function getElMarkers() {
+      return this.w.globals.dom.baseEl.querySelectorAll(' .apexcharts-series-markers');
+    }
+  }, {
+    key: "getAllMarkers",
+    value: function getAllMarkers() {
+      return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers .apexcharts-marker');
+    }
+  }, {
+    key: "hasMarkers",
+    value: function hasMarkers() {
+      var markers = this.getElMarkers();
+      return markers.length > 0;
+    }
+  }, {
+    key: "getElBars",
+    value: function getElBars() {
+      return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-series,  .apexcharts-candlestick-series, .apexcharts-rangebar-series');
+    }
+  }, {
+    key: "hasBars",
+    value: function hasBars() {
+      var bars = this.getElBars();
+      return bars.length > 0;
+    }
+  }, {
+    key: "markerClick",
+    value: function markerClick(e, seriesIndex, dataPointIndex) {
+      var w = this.w;
+
+      if (typeof w.config.chart.events.markerClick === 'function') {
+        w.config.chart.events.markerClick(e, this.ctx, {
+          seriesIndex: seriesIndex,
+          dataPointIndex: dataPointIndex,
+          w: w
+        });
+      }
+
+      this.ctx.fireEvent('markerClick', [e, this.ctx, {
+        seriesIndex: seriesIndex,
+        dataPointIndex: dataPointIndex,
+        w: w
+      }]);
+    }
+  }, {
+    key: "create",
+    value: function create(e, context, capturedSeries, j, ttItems) {
+      var shared = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
+      var w = this.w;
+      var ttCtx = context;
+
+      if (e.type === 'mouseup') {
+        this.markerClick(e, capturedSeries, j);
+      }
+
+      if (shared === null) shared = this.tConfig.shared;
+      var hasMarkers = this.hasMarkers();
+      var bars = this.getElBars();
+
+      if (shared) {
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: ttItems,
+          i: capturedSeries,
+          j: j,
+          shared: this.showOnIntersect ? false : this.tConfig.shared
+        });
+
+        if (hasMarkers) {
+          if (w.globals.markers.largestSize > 0) {
+            ttCtx.marker.enlargePoints(j);
+          } else {
+            ttCtx.tooltipPosition.moveDynamicPointsOnHover(j);
+          }
+        }
+
+        if (this.hasBars()) {
+          this.barSeriesHeight = this.tooltipUtil.getBarsHeight(bars);
+
+          if (this.barSeriesHeight > 0) {
+            // hover state, activate snap filter
+            var graphics = new Graphics(this.ctx);
+            var paths = w.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(j, "']")); // de-activate first
+
+            this.deactivateHoverFilter();
+            this.tooltipPosition.moveStickyTooltipOverBars(j);
+
+            for (var b = 0; b < paths.length; b++) {
+              graphics.pathMouseEnter(paths[b]);
+            }
+          }
+        }
+      } else {
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          shared: false,
+          ttItems: ttItems,
+          i: capturedSeries,
+          j: j
+        });
+
+        if (this.hasBars()) {
+          ttCtx.tooltipPosition.moveStickyTooltipOverBars(j);
+        }
+
+        if (hasMarkers) {
+          ttCtx.tooltipPosition.moveMarkers(capturedSeries, j);
+        }
+      }
+    }
+  }]);
+
+  return Tooltip;
+}();
+
+var icoPan = "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\n    <defs>\n        <path d=\"M0 0h24v24H0z\" id=\"a\"/>\n    </defs>\n    <clipPath id=\"b\">\n        <use overflow=\"visible\" xlink:href=\"#a\"/>\n    </clipPath>\n    <path clip-path=\"url(#b)\" d=\"M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z\"/>\n</svg>";
+
+var icoZoom = "<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\n    <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/>\n    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n    <path d=\"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\"/>\n</svg>";
+
+var icoReset = "<svg fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"/>\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n</svg>";
+
+var icoZoomIn = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n    <path d=\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\n</svg>\n";
+
+var icoZoomOut = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n    <path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\n</svg>\n";
+
+var icoSelect = "<svg fill=\"#6E8192\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n    <path d=\"M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2z\"/>\n</svg>";
+
+var icoMenu = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"/></svg>";
+
+/**
+ * ApexCharts Toolbar Class for creating toolbar in axis based charts.
+ *
+ * @module Toolbar
+ **/
+
+var Toolbar =
+/*#__PURE__*/
+function () {
+  function Toolbar(ctx) {
+    _classCallCheck(this, Toolbar);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.ev = this.w.config.chart.events;
+    this.localeValues = this.w.globals.locale.toolbar;
+  }
+
+  _createClass(Toolbar, [{
+    key: "createToolbar",
+    value: function createToolbar() {
+      var w = this.w;
+      var elToolbarWrap = document.createElement('div');
+      elToolbarWrap.setAttribute('class', 'apexcharts-toolbar');
+      w.globals.dom.elWrap.appendChild(elToolbarWrap);
+      this.elZoom = document.createElement('div');
+      this.elZoomIn = document.createElement('div');
+      this.elZoomOut = document.createElement('div');
+      this.elPan = document.createElement('div');
+      this.elSelection = document.createElement('div');
+      this.elZoomReset = document.createElement('div');
+      this.elMenuIcon = document.createElement('div');
+      this.elMenu = document.createElement('div');
+      this.elCustomIcons = [];
+      this.t = w.config.chart.toolbar.tools;
+
+      if (Array.isArray(this.t.customIcons)) {
+        for (var i = 0; i < this.t.customIcons.length; i++) {
+          this.elCustomIcons.push(document.createElement('div'));
+        }
+      }
+
+      this.elMenuItems = [];
+      var toolbarControls = [];
+
+      if (this.t.zoomin && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoomIn,
+          icon: typeof this.t.zoomin === 'string' ? this.t.zoomin : icoZoomIn,
+          title: this.localeValues.zoomIn,
+          class: 'apexcharts-zoom-in-icon'
+        });
+      }
+
+      if (this.t.zoomout && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoomOut,
+          icon: typeof this.t.zoomout === 'string' ? this.t.zoomout : icoZoomOut,
+          title: this.localeValues.zoomOut,
+          class: 'apexcharts-zoom-out-icon'
+        });
+      }
+
+      if (this.t.zoom && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoom,
+          icon: typeof this.t.zoom === 'string' ? this.t.zoom : icoZoom,
+          title: this.localeValues.selectionZoom,
+          class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-zoom-icon'
+        });
+      }
+
+      if (this.t.selection && w.config.chart.selection.enabled) {
+        toolbarControls.push({
+          el: this.elSelection,
+          icon: typeof this.t.selection === 'string' ? this.t.selection : icoSelect,
+          title: this.localeValues.selection,
+          class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-selection-icon'
+        });
+      }
+
+      if (this.t.pan && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elPan,
+          icon: typeof this.t.pan === 'string' ? this.t.pan : icoPan,
+          title: this.localeValues.pan,
+          class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-pan-icon'
+        });
+      }
+
+      if (this.t.reset && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoomReset,
+          icon: typeof this.t.reset === 'string' ? this.t.reset : icoReset,
+          title: this.localeValues.reset,
+          class: 'apexcharts-reset-zoom-icon'
+        });
+      }
+
+      if (this.t.download) {
+        toolbarControls.push({
+          el: this.elMenuIcon,
+          icon: typeof this.t.download === 'string' ? this.t.download : icoMenu,
+          title: this.localeValues.menu,
+          class: 'apexcharts-menu-icon'
+        });
+      }
+
+      for (var _i = 0; _i < this.elCustomIcons.length; _i++) {
+        toolbarControls.push({
+          el: this.elCustomIcons[_i],
+          icon: this.t.customIcons[_i].icon,
+          title: this.t.customIcons[_i].title,
+          index: this.t.customIcons[_i].index,
+          class: 'apexcharts-toolbar-custom-icon ' + this.t.customIcons[_i].class
+        });
+      }
+
+      toolbarControls.forEach(function (t, index) {
+        if (t.index) {
+          Utils.moveIndexInArray(toolbarControls, index, t.index);
+        }
+      });
+
+      for (var _i2 = 0; _i2 < toolbarControls.length; _i2++) {
+        Graphics.setAttrs(toolbarControls[_i2].el, {
+          class: toolbarControls[_i2].class,
+          title: toolbarControls[_i2].title
+        });
+        toolbarControls[_i2].el.innerHTML = toolbarControls[_i2].icon;
+        elToolbarWrap.appendChild(toolbarControls[_i2].el);
+      }
+
+      elToolbarWrap.appendChild(this.elMenu);
+      Graphics.setAttrs(this.elMenu, {
+        class: 'apexcharts-menu'
+      });
+      var menuItems = [{
+        name: 'exportSVG',
+        title: this.localeValues.exportToSVG
+      }, {
+        name: 'exportPNG',
+        title: this.localeValues.exportToPNG
+      }];
+
+      for (var _i3 = 0; _i3 < menuItems.length; _i3++) {
+        this.elMenuItems.push(document.createElement('div'));
+        this.elMenuItems[_i3].innerHTML = menuItems[_i3].title;
+        Graphics.setAttrs(this.elMenuItems[_i3], {
+          class: "apexcharts-menu-item ".concat(menuItems[_i3].name),
+          title: menuItems[_i3].title
+        });
+        this.elMenu.appendChild(this.elMenuItems[_i3]);
+      }
+
+      if (w.globals.zoomEnabled) {
+        this.elZoom.classList.add('selected');
+      } else if (w.globals.panEnabled) {
+        this.elPan.classList.add('selected');
+      } else if (w.globals.selectionEnabled) {
+        this.elSelection.classList.add('selected');
+      }
+
+      this.addToolbarEventListeners();
+    }
+  }, {
+    key: "addToolbarEventListeners",
+    value: function addToolbarEventListeners() {
+      var _this = this;
+
+      this.elZoomReset.addEventListener('click', this.handleZoomReset.bind(this));
+      this.elSelection.addEventListener('click', this.toggleSelection.bind(this));
+      this.elZoom.addEventListener('click', this.toggleZooming.bind(this));
+      this.elZoomIn.addEventListener('click', this.handleZoomIn.bind(this));
+      this.elZoomOut.addEventListener('click', this.handleZoomOut.bind(this));
+      this.elPan.addEventListener('click', this.togglePanning.bind(this));
+      this.elMenuIcon.addEventListener('click', this.toggleMenu.bind(this));
+      this.elMenuItems.forEach(function (m) {
+        if (m.classList.contains('exportSVG')) {
+          m.addEventListener('click', _this.downloadSVG.bind(_this));
+        } else if (m.classList.contains('exportPNG')) {
+          m.addEventListener('click', _this.downloadPNG.bind(_this));
+        }
+      });
+
+      for (var i = 0; i < this.t.customIcons.length; i++) {
+        this.elCustomIcons[i].addEventListener('click', this.t.customIcons[i].click);
+      }
+    }
+  }, {
+    key: "toggleSelection",
+    value: function toggleSelection() {
+      this.toggleOtherControls();
+      this.w.globals.selectionEnabled = !this.w.globals.selectionEnabled;
+
+      if (!this.elSelection.classList.contains('selected')) {
+        this.elSelection.classList.add('selected');
+      } else {
+        this.elSelection.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "toggleZooming",
+    value: function toggleZooming() {
+      this.toggleOtherControls();
+      this.w.globals.zoomEnabled = !this.w.globals.zoomEnabled;
+
+      if (!this.elZoom.classList.contains('selected')) {
+        this.elZoom.classList.add('selected');
+      } else {
+        this.elZoom.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "getToolbarIconsReference",
+    value: function getToolbarIconsReference() {
+      var w = this.w;
+
+      if (!this.elZoom) {
+        this.elZoom = w.globals.dom.baseEl.querySelector('.apexcharts-zoom-icon');
+      }
+
+      if (!this.elPan) {
+        this.elPan = w.globals.dom.baseEl.querySelector('.apexcharts-pan-icon');
+      }
+
+      if (!this.elSelection) {
+        this.elSelection = w.globals.dom.baseEl.querySelector('.apexcharts-selection-icon');
+      }
+    }
+  }, {
+    key: "enableZooming",
+    value: function enableZooming() {
+      this.toggleOtherControls();
+      this.w.globals.zoomEnabled = true;
+
+      if (this.elZoom) {
+        this.elZoom.classList.add('selected');
+      }
+
+      if (this.elPan) {
+        this.elPan.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "enablePanning",
+    value: function enablePanning() {
+      this.toggleOtherControls();
+      this.w.globals.panEnabled = true;
+
+      if (this.elPan) {
+        this.elPan.classList.add('selected');
+      }
+
+      if (this.elZoom) {
+        this.elZoom.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "togglePanning",
+    value: function togglePanning() {
+      this.toggleOtherControls();
+      this.w.globals.panEnabled = !this.w.globals.panEnabled;
+
+      if (!this.elPan.classList.contains('selected')) {
+        this.elPan.classList.add('selected');
+      } else {
+        this.elPan.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "toggleOtherControls",
+    value: function toggleOtherControls() {
+      var w = this.w;
+      w.globals.panEnabled = false;
+      w.globals.zoomEnabled = false;
+      w.globals.selectionEnabled = false;
+      this.getToolbarIconsReference();
+
+      if (this.elPan) {
+        this.elPan.classList.remove('selected');
+      }
+
+      if (this.elSelection) {
+        this.elSelection.classList.remove('selected');
+      }
+
+      if (this.elZoom) {
+        this.elZoom.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "handleZoomIn",
+    value: function handleZoomIn() {
+      var w = this.w;
+      var centerX = (w.globals.minX + w.globals.maxX) / 2;
+      var newMinX = (w.globals.minX + centerX) / 2;
+      var newMaxX = (w.globals.maxX + centerX) / 2;
+
+      if (!w.globals.disableZoomIn) {
+        this.zoomUpdateOptions(newMinX, newMaxX);
+      }
+    }
+  }, {
+    key: "handleZoomOut",
+    value: function handleZoomOut() {
+      var w = this.w; // avoid zooming out beyond 1000 which may result in NaN values being printed on x-axis
+
+      if (w.config.xaxis.type === 'datetime' && new Date(w.globals.minX).getUTCFullYear() < 1000) {
+        return;
+      }
+
+      var centerX = (w.globals.minX + w.globals.maxX) / 2;
+      var newMinX = w.globals.minX - (centerX - w.globals.minX);
+      var newMaxX = w.globals.maxX - (centerX - w.globals.maxX);
+
+      if (!w.globals.disableZoomOut) {
+        this.zoomUpdateOptions(newMinX, newMaxX);
+      }
+    }
+  }, {
+    key: "zoomUpdateOptions",
+    value: function zoomUpdateOptions(newMinX, newMaxX) {
+      var xaxis = {
+        min: newMinX,
+        max: newMaxX
+      };
+      var beforeZoomRange = this.getBeforeZoomRange(xaxis);
+
+      if (beforeZoomRange) {
+        xaxis = beforeZoomRange.xaxis;
+      }
+
+      this.w.globals.zoomed = true;
+
+      this.ctx._updateOptions({
+        xaxis: xaxis
+      }, false, this.w.config.chart.animations.dynamicAnimation.enabled);
+
+      this.zoomCallback(xaxis);
+    }
+  }, {
+    key: "zoomCallback",
+    value: function zoomCallback(xaxis, yaxis) {
+      if (typeof this.ev.zoomed === 'function') {
+        this.ev.zoomed(this.ctx, {
+          xaxis: xaxis,
+          yaxis: yaxis
+        });
+      }
+    }
+  }, {
+    key: "getBeforeZoomRange",
+    value: function getBeforeZoomRange(xaxis, yaxis) {
+      var newRange = null;
+
+      if (typeof this.ev.beforeZoom === 'function') {
+        newRange = this.ev.beforeZoom(this, {
+          xaxis: xaxis,
+          yaxis: yaxis
+        });
+      }
+
+      return newRange;
+    }
+  }, {
+    key: "toggleMenu",
+    value: function toggleMenu() {
+      if (this.elMenu.classList.contains('open')) {
+        this.elMenu.classList.remove('open');
+      } else {
+        this.elMenu.classList.add('open');
+      }
+    }
+  }, {
+    key: "downloadPNG",
+    value: function downloadPNG() {
+      var downloadPNG = new Exports(this.ctx);
+      downloadPNG.exportToPng(this.ctx);
+      this.toggleMenu();
+    }
+  }, {
+    key: "downloadSVG",
+    value: function downloadSVG() {
+      var downloadSVG = new Exports(this.ctx);
+      downloadSVG.exportToSVG();
+      this.toggleMenu();
+    }
+  }, {
+    key: "handleZoomReset",
+    value: function handleZoomReset(e) {
+      var _this2 = this;
+
+      var charts = this.ctx.getSyncedCharts();
+      charts.forEach(function (ch) {
+        var w = ch.w;
+
+        if (w.globals.minX !== w.globals.initialminX && w.globals.maxX !== w.globals.initialmaxX) {
+          ch.revertDefaultAxisMinMax();
+
+          if (typeof w.config.chart.events.zoomed === 'function') {
+            _this2.zoomCallback({
+              min: w.config.xaxis.min,
+              max: w.config.xaxis.max
+            });
+          }
+
+          w.globals.zoomed = false;
+
+          ch._updateSeries(w.globals.initialSeries, w.config.chart.animations.dynamicAnimation.enabled);
+        }
+      });
+    }
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      if (this.elZoomReset) {
+        this.elZoomReset.removeEventListener('click', this.handleZoomReset.bind(this));
+        this.elSelection.removeEventListener('click', this.toggleSelection.bind(this));
+        this.elZoom.removeEventListener('click', this.toggleZooming.bind(this));
+        this.elZoomIn.removeEventListener('click', this.handleZoomIn.bind(this));
+        this.elZoomOut.removeEventListener('click', this.handleZoomOut.bind(this));
+        this.elPan.removeEventListener('click', this.togglePanning.bind(this));
+        this.elMenuIcon.removeEventListener('click', this.toggleMenu.bind(this));
+      }
+
+      this.elZoom = null;
+      this.elZoomIn = null;
+      this.elZoomOut = null;
+      this.elPan = null;
+      this.elSelection = null;
+      this.elZoomReset = null;
+      this.elMenuIcon = null;
+    }
+  }]);
+
+  return Toolbar;
+}();
+
+/**
+ * ApexCharts Zoom Class for handling zooming and panning on axes based charts.
+ *
+ * @module ZoomPanSelection
+ **/
+
+var ZoomPanSelection =
+/*#__PURE__*/
+function (_Toolbar) {
+  _inherits(ZoomPanSelection, _Toolbar);
+
+  function ZoomPanSelection(ctx) {
+    var _this;
+
+    _classCallCheck(this, ZoomPanSelection);
+
+    _this = _possibleConstructorReturn(this, _getPrototypeOf(ZoomPanSelection).call(this, ctx));
+    _this.ctx = ctx;
+    _this.w = ctx.w;
+    _this.dragged = false;
+    _this.graphics = new Graphics(_this.ctx);
+    _this.eventList = ['mousedown', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend'];
+    _this.clientX = 0;
+    _this.clientY = 0;
+    _this.startX = 0;
+    _this.endX = 0;
+    _this.dragX = 0;
+    _this.startY = 0;
+    _this.endY = 0;
+    _this.dragY = 0;
+    return _this;
+  }
+
+  _createClass(ZoomPanSelection, [{
+    key: "init",
+    value: function init(_ref) {
+      var _this2 = this;
+
+      var xyRatios = _ref.xyRatios;
+      var w = this.w;
+      var me = this;
+      this.xyRatios = xyRatios;
+      this.zoomRect = this.graphics.drawRect(0, 0, 0, 0);
+      this.selectionRect = this.graphics.drawRect(0, 0, 0, 0);
+      this.gridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid');
+      this.zoomRect.node.classList.add('apexcharts-zoom-rect');
+      this.selectionRect.node.classList.add('apexcharts-selection-rect');
+      w.globals.dom.elGraphical.add(this.zoomRect);
+      w.globals.dom.elGraphical.add(this.selectionRect);
+
+      if (w.config.chart.selection.type === 'x') {
+        this.slDraggableRect = this.selectionRect.draggable({
+          minX: 0,
+          minY: 0,
+          maxX: w.globals.gridWidth,
+          maxY: w.globals.gridHeight
+        }).on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+      } else if (w.config.chart.selection.type === 'y') {
+        this.slDraggableRect = this.selectionRect.draggable({
+          minX: 0,
+          maxX: w.globals.gridWidth
+        }).on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+      } else {
+        this.slDraggableRect = this.selectionRect.draggable().on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+      }
+
+      this.preselectedSelection();
+      this.hoverArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass);
+      this.hoverArea.classList.add('zoomable');
+      this.eventList.forEach(function (event) {
+        _this2.hoverArea.addEventListener(event, me.svgMouseEvents.bind(me, xyRatios), {
+          capture: false,
+          passive: true
+        });
+      });
+    } // remove the event listeners which were previously added on hover area
+
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      var _this3 = this;
+
+      var me = this;
+      this.eventList.forEach(function (event) {
+        if (_this3.hoverArea) {
+          _this3.hoverArea.removeEventListener(event, me.svgMouseEvents.bind(me, me.xyRatios), {
+            capture: false,
+            passive: true
+          });
+        }
+      });
+
+      if (this.slDraggableRect) {
+        this.slDraggableRect.draggable(false);
+        this.slDraggableRect.off();
+        this.selectionRect.off();
+      }
+
+      this.selectionRect = null;
+      this.zoomRect = null;
+      this.gridRect = null;
+    }
+  }, {
+    key: "svgMouseEvents",
+    value: function svgMouseEvents(xyRatios, e) {
+      var w = this.w;
+      var me = this;
+      var toolbar = this.ctx.toolbar;
+      var zoomtype = w.globals.zoomEnabled ? w.config.chart.zoom.type : w.config.chart.selection.type;
+
+      if (e.shiftKey) {
+        this.shiftWasPressed = true;
+        toolbar.enablePanning();
+      } else {
+        if (this.shiftWasPressed) {
+          toolbar.enableZooming();
+          this.shiftWasPressed = false;
+        }
+      }
+
+      var falsePositives = e.target.classList.contains('apexcharts-selection-rect') || e.target.parentNode.classList.contains('apexcharts-toolbar');
+      if (falsePositives) return;
+      me.clientX = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientX : e.type === 'touchend' ? e.changedTouches[0].clientX : e.clientX;
+      me.clientY = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientY : e.type === 'touchend' ? e.changedTouches[0].clientY : e.clientY;
+
+      if (e.type === 'mousedown' && e.which === 1) {
+        var gridRectDim = me.gridRect.getBoundingClientRect();
+        me.startX = me.clientX - gridRectDim.left;
+        me.startY = me.clientY - gridRectDim.top;
+        me.dragged = false;
+        me.w.globals.mousedown = true;
+      }
+
+      if (e.type === 'mousemove' && e.which === 1 || e.type === 'touchmove') {
+        me.dragged = true;
+
+        if (w.globals.panEnabled) {
+          w.globals.selection = null;
+
+          if (me.w.globals.mousedown) {
+            me.panDragging({
+              context: me,
+              zoomtype: zoomtype,
+              xyRatios: xyRatios
+            });
+          }
+        } else {
+          if (me.w.globals.mousedown && w.globals.zoomEnabled || me.w.globals.mousedown && w.globals.selectionEnabled) {
+            me.selection = me.selectionDrawing({
+              context: me,
+              zoomtype: zoomtype
+            });
+          }
+        }
+      }
+
+      if (e.type === 'mouseup' || e.type === 'touchend') {
+        // we will be calling getBoundingClientRect on each mousedown/mousemove/mouseup
+        var _gridRectDim = me.gridRect.getBoundingClientRect();
+
+        if (me.w.globals.mousedown) {
+          // user released the drag, now do all the calculations
+          me.endX = me.clientX - _gridRectDim.left;
+          me.endY = me.clientY - _gridRectDim.top;
+          me.dragX = Math.abs(me.endX - me.startX);
+          me.dragY = Math.abs(me.endY - me.startY);
+
+          if (w.globals.zoomEnabled || w.globals.selectionEnabled) {
+            me.selectionDrawn({
+              context: me,
+              zoomtype: zoomtype
+            });
+          }
+        }
+
+        if (w.globals.zoomEnabled) {
+          me.hideSelectionRect(this.selectionRect);
+        }
+
+        me.dragged = false;
+        me.w.globals.mousedown = false;
+      }
+
+      this.makeSelectionRectDraggable();
+    }
+  }, {
+    key: "makeSelectionRectDraggable",
+    value: function makeSelectionRectDraggable() {
+      var w = this.w;
+      if (!this.selectionRect) return;
+      var rectDim = this.selectionRect.node.getBoundingClientRect();
+
+      if (rectDim.width > 0 && rectDim.height > 0) {
+        this.slDraggableRect.selectize().resize({
+          constraint: {
+            minX: 0,
+            minY: 0,
+            maxX: w.globals.gridWidth,
+            maxY: w.globals.gridHeight
+          }
+        }).on('resizing', this.selectionDragging.bind(this, 'resizing'));
+      }
+    }
+  }, {
+    key: "preselectedSelection",
+    value: function preselectedSelection() {
+      var w = this.w;
+      var xyRatios = this.xyRatios;
+
+      if (!w.globals.zoomEnabled) {
+        if (typeof w.globals.selection !== 'undefined' && w.globals.selection !== null) {
+          this.drawSelectionRect(w.globals.selection);
+        } else {
+          if (w.config.chart.selection.xaxis.min !== undefined && w.config.chart.selection.xaxis.max !== undefined) {
+            var x = (w.config.chart.selection.xaxis.min - w.globals.minX) / xyRatios.xRatio;
+            var width = w.globals.gridWidth - (w.globals.maxX - w.config.chart.selection.xaxis.max) / xyRatios.xRatio - x;
+            var selectionRect = {
+              x: x,
+              y: 0,
+              width: width,
+              height: w.globals.gridHeight,
+              translateX: 0,
+              translateY: 0,
+              selectionEnabled: true
+            };
+            this.drawSelectionRect(selectionRect);
+            this.makeSelectionRectDraggable();
+
+            if (typeof w.config.chart.events.selection === 'function') {
+              w.config.chart.events.selection(this.ctx, {
+                xaxis: {
+                  min: w.config.chart.selection.xaxis.min,
+                  max: w.config.chart.selection.xaxis.max
+                },
+                yaxis: {}
+              });
+            }
+          }
+        }
+      }
+    }
+  }, {
+    key: "drawSelectionRect",
+    value: function drawSelectionRect(_ref2) {
+      var x = _ref2.x,
+          y = _ref2.y,
+          width = _ref2.width,
+          height = _ref2.height,
+          translateX = _ref2.translateX,
+          translateY = _ref2.translateY;
+      var w = this.w;
+      var zoomRect = this.zoomRect;
+      var selectionRect = this.selectionRect;
+
+      if (this.dragged || w.globals.selection !== null) {
+        var scalingAttrs = {
+          transform: 'translate(' + translateX + ', ' + translateY + ')' // change styles based on zoom or selection
+          // zoom is Enabled and user has dragged, so draw blue rect
+
+        };
+
+        if (w.globals.zoomEnabled && this.dragged) {
+          zoomRect.attr({
+            x: x,
+            y: y,
+            width: width,
+            height: height,
+            fill: w.config.chart.zoom.zoomedArea.fill.color,
+            'fill-opacity': w.config.chart.zoom.zoomedArea.fill.opacity,
+            stroke: w.config.chart.zoom.zoomedArea.stroke.color,
+            'stroke-width': w.config.chart.zoom.zoomedArea.stroke.width,
+            'stroke-opacity': w.config.chart.zoom.zoomedArea.stroke.opacity
+          });
+          Graphics.setAttrs(zoomRect.node, scalingAttrs);
+        } // selection is enabled
+
+
+        if (w.globals.selectionEnabled) {
+          selectionRect.attr({
+            x: x,
+            y: y,
+            width: width > 0 ? width : 0,
+            height: height > 0 ? height : 0,
+            fill: w.config.chart.selection.fill.color,
+            'fill-opacity': w.config.chart.selection.fill.opacity,
+            stroke: w.config.chart.selection.stroke.color,
+            'stroke-width': w.config.chart.selection.stroke.width,
+            'stroke-dasharray': w.config.chart.selection.stroke.dashArray,
+            'stroke-opacity': w.config.chart.selection.stroke.opacity
+          });
+          Graphics.setAttrs(selectionRect.node, scalingAttrs);
+        }
+      }
+    }
+  }, {
+    key: "hideSelectionRect",
+    value: function hideSelectionRect(rect) {
+      if (rect) {
+        rect.attr({
+          x: 0,
+          y: 0,
+          width: 0,
+          height: 0
+        });
+      }
+    }
+  }, {
+    key: "selectionDrawing",
+    value: function selectionDrawing(_ref3) {
+      var context = _ref3.context,
+          zoomtype = _ref3.zoomtype;
+      var w = this.w;
+      var me = context;
+      var gridRectDim = this.gridRect.getBoundingClientRect();
+      var startX = me.startX - 1;
+      var startY = me.startY;
+      var selectionWidth = me.clientX - gridRectDim.left - startX;
+      var selectionHeight = me.clientY - gridRectDim.top - startY;
+      var translateX = 0;
+      var translateY = 0;
+      var selectionRect = {};
+
+      if (Math.abs(selectionWidth + startX) > w.globals.gridWidth || me.clientX - gridRectDim.left < 0) {
+        // user dragged the mouse outside drawing area
+        // TODO: test the selectionRect and make sure it doesn't crosses drawing area
+        me.hideSelectionRect(this.zoomRect);
+        me.dragged = false;
+        me.w.globals.mousedown = false;
+      } // inverse selection X
+
+
+      if (startX > me.clientX - gridRectDim.left) {
+        selectionWidth = Math.abs(selectionWidth);
+        translateX = -selectionWidth;
+      } // inverse selection Y
+
+
+      if (startY > me.clientY - gridRectDim.top) {
+        selectionHeight = Math.abs(selectionHeight);
+        translateY = -selectionHeight;
+      }
+
+      if (zoomtype === 'x') {
+        selectionRect = {
+          x: startX,
+          y: 0,
+          width: selectionWidth,
+          height: w.globals.gridHeight,
+          translateX: translateX,
+          translateY: 0
+        };
+      } else if (zoomtype === 'y') {
+        selectionRect = {
+          x: 0,
+          y: startY,
+          width: w.globals.gridWidth,
+          height: selectionHeight,
+          translateX: 0,
+          translateY: translateY
+        };
+      } else {
+        selectionRect = {
+          x: startX,
+          y: startY,
+          width: selectionWidth,
+          height: selectionHeight,
+          translateX: translateX,
+          translateY: translateY
+        };
+      }
+
+      me.drawSelectionRect(selectionRect);
+      me.selectionDragging('resizing');
+      return selectionRect;
+    }
+  }, {
+    key: "selectionDragging",
+    value: function selectionDragging(type, e) {
+      var _this4 = this;
+
+      var w = this.w;
+      var xyRatios = this.xyRatios;
+      var selRect = this.selectionRect;
+      var timerInterval = 0;
+
+      if (type === 'resizing') {
+        timerInterval = 30;
+      }
+
+      if (typeof w.config.chart.events.selection === 'function' && w.globals.selectionEnabled) {
+        // a small debouncer is required when resizing to avoid freezing the chart
+        clearTimeout(this.w.globals.selectionResizeTimer);
+        this.w.globals.selectionResizeTimer = window.setTimeout(function () {
+          var gridRectDim = _this4.gridRect.getBoundingClientRect();
+
+          var selectionRect = selRect.node.getBoundingClientRect();
+          var minX = w.globals.xAxisScale.niceMin + (selectionRect.left - gridRectDim.left) * xyRatios.xRatio;
+          var maxX = w.globals.xAxisScale.niceMin + (selectionRect.right - gridRectDim.left) * xyRatios.xRatio;
+          var minY = w.globals.yAxisScale[0].niceMin + (gridRectDim.bottom - selectionRect.bottom) * xyRatios.yRatio[0];
+          var maxY = w.globals.yAxisScale[0].niceMax - (selectionRect.top - gridRectDim.top) * xyRatios.yRatio[0];
+          w.config.chart.events.selection(_this4.ctx, {
+            xaxis: {
+              min: minX,
+              max: maxX
+            },
+            yaxis: {
+              min: minY,
+              max: maxY
+            }
+          });
+        }, timerInterval);
+      }
+    }
+  }, {
+    key: "selectionDrawn",
+    value: function selectionDrawn(_ref4) {
+      var context = _ref4.context,
+          zoomtype = _ref4.zoomtype;
+      var w = this.w;
+      var me = context;
+      var xyRatios = this.xyRatios;
+      var toolbar = this.ctx.toolbar;
+
+      if (me.startX > me.endX) {
+        var tempX = me.startX;
+        me.startX = me.endX;
+        me.endX = tempX;
+      }
+
+      if (me.startY > me.endY) {
+        var tempY = me.startY;
+        me.startY = me.endY;
+        me.endY = tempY;
+      }
+
+      var xLowestValue = w.globals.xAxisScale.niceMin + me.startX * xyRatios.xRatio;
+      var xHighestValue = w.globals.xAxisScale.niceMin + me.endX * xyRatios.xRatio; // TODO: we will consider the 1st y axis values here for getting highest and lowest y
+
+      var yHighestValue = [];
+      var yLowestValue = [];
+      w.config.yaxis.forEach(function (yaxe, index) {
+        yHighestValue.push(Math.floor(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.startY));
+        yLowestValue.push(Math.floor(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.endY));
+      });
+
+      if (me.dragged && (me.dragX > 10 || me.dragY > 10) && xLowestValue !== xHighestValue) {
+        if (w.globals.zoomEnabled) {
+          var yaxis = Utils.clone(w.config.yaxis); // before zooming in/out, store the last yaxis and xaxis range, so that when user hits the RESET button, we get the original range
+          // also - make sure user is not already zoomed in/out - otherwise we will store zoomed values in lastAxis
+
+          if (!w.globals.zoomed) {
+            w.globals.lastXAxis = Utils.clone(w.config.xaxis);
+            w.globals.lastYAxis = Utils.clone(w.config.yaxis);
+          }
+
+          var xaxis = {
+            min: xLowestValue,
+            max: xHighestValue
+          };
+
+          if (zoomtype === 'xy' || zoomtype === 'y') {
+            yaxis.forEach(function (yaxe, index) {
+              yaxis[index].min = yLowestValue[index];
+              yaxis[index].max = yHighestValue[index];
+            });
+          }
+
+          if (w.config.chart.zoom.autoScaleYaxis) {
+            var scale = new Range(me.ctx);
+            yaxis = scale.autoScaleY(me.ctx, {
+              xaxis: xaxis
+            });
+          }
+
+          if (toolbar) {
+            var beforeZoomRange = toolbar.getBeforeZoomRange(xaxis, yaxis);
+
+            if (beforeZoomRange) {
+              xaxis = beforeZoomRange.xaxis ? beforeZoomRange.xaxis : xaxis;
+              yaxis = beforeZoomRange.yaxis ? beforeZoomRange.yaxe : yaxis;
+            }
+          }
+
+          me.ctx._updateOptions({
+            xaxis: xaxis,
+            yaxis: yaxis
+          }, false, me.w.config.chart.animations.dynamicAnimation.enabled);
+
+          if (typeof w.config.chart.events.zoomed === 'function') {
+            toolbar.zoomCallback(xaxis, yaxis);
+          }
+
+          w.globals.zoomed = true;
+        } else if (w.globals.selectionEnabled) {
+          var _yaxis = null;
+          var _xaxis = null;
+          _xaxis = {
+            min: xLowestValue,
+            max: xHighestValue
+          };
+
+          if (zoomtype === 'xy' || zoomtype === 'y') {
+            _yaxis = Utils.clone(w.config.yaxis);
+
+            _yaxis.forEach(function (yaxe, index) {
+              _yaxis[index].min = yLowestValue[index];
+              _yaxis[index].max = yHighestValue[index];
+            });
+          }
+
+          w.globals.selection = me.selection;
+
+          if (typeof w.config.chart.events.selection === 'function') {
+            w.config.chart.events.selection(me.ctx, {
+              xaxis: _xaxis,
+              yaxis: _yaxis
+            });
+          }
+        }
+      }
+    }
+  }, {
+    key: "panDragging",
+    value: function panDragging(_ref5) {
+      var context = _ref5.context,
+          zoomtype = _ref5.zoomtype;
+      var w = this.w;
+      var me = context;
+      var moveDirection; // check to make sure there is data to compare against
+
+      if (typeof w.globals.lastClientPosition.x !== 'undefined') {
+        // get the change from last position to this position
+        var deltaX = w.globals.lastClientPosition.x - me.clientX;
+        var deltaY = w.globals.lastClientPosition.y - me.clientY; // check which direction had the highest amplitude and then figure out direction by checking if the value is greater or less than zero
+
+        if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0) {
+          moveDirection = 'left';
+        } else if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX < 0) {
+          moveDirection = 'right';
+        } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY > 0) {
+          moveDirection = 'up';
+        } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY < 0) {
+          moveDirection = 'down';
+        }
+      } // set the new last position to the current for next time (to get the position of drag)
+
+
+      w.globals.lastClientPosition = {
+        x: me.clientX,
+        y: me.clientY
+      };
+      var xLowestValue = w.globals.minX;
+      var xHighestValue = w.globals.maxX;
+      this.panScrolled(moveDirection, xLowestValue, xHighestValue);
+    }
+  }, {
+    key: "panScrolled",
+    value: function panScrolled(moveDirection, xLowestValue, xHighestValue) {
+      var w = this.w;
+      var xyRatios = this.xyRatios;
+      var yaxis = Utils.clone(w.config.yaxis);
+
+      if (moveDirection === 'left') {
+        xLowestValue = w.globals.minX + w.globals.gridWidth / 15 * xyRatios.xRatio;
+        xHighestValue = w.globals.maxX + w.globals.gridWidth / 15 * xyRatios.xRatio;
+      } else if (moveDirection === 'right') {
+        xLowestValue = w.globals.minX - w.globals.gridWidth / 15 * xyRatios.xRatio;
+        xHighestValue = w.globals.maxX - w.globals.gridWidth / 15 * xyRatios.xRatio;
+      }
+
+      if (xLowestValue < w.globals.initialminX || xHighestValue > w.globals.initialmaxX) {
+        xLowestValue = w.globals.minX;
+        xHighestValue = w.globals.maxX;
+      }
+
+      var xaxis = {
+        min: xLowestValue,
+        max: xHighestValue
+      };
+
+      if (w.config.chart.zoom.autoScaleYaxis) {
+        var scale = new Range(me.ctx);
+        yaxis = scale.autoScaleY(me.ctx, {
+          xaxis: xaxis
+        });
+      }
+
+      this.ctx._updateOptions({
+        xaxis: {
+          min: xLowestValue,
+          max: xHighestValue
+        },
+        yaxis: yaxis
+      }, false, false);
+
+      if (typeof w.config.chart.events.scrolled === 'function') {
+        w.config.chart.events.scrolled(this.ctx, {
+          xaxis: {
+            min: xLowestValue,
+            max: xHighestValue
+          }
+        });
+      }
+    }
+  }]);
+
+  return ZoomPanSelection;
+}(Toolbar);
+
+var TitleSubtitle =
+/*#__PURE__*/
+function () {
+  function TitleSubtitle(ctx) {
+    _classCallCheck(this, TitleSubtitle);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(TitleSubtitle, [{
+    key: "draw",
+    value: function draw() {
+      this.drawTitleSubtitle('title');
+      this.drawTitleSubtitle('subtitle');
+    }
+  }, {
+    key: "drawTitleSubtitle",
+    value: function drawTitleSubtitle(type) {
+      var w = this.w;
+      var tsConfig = type === 'title' ? w.config.title : w.config.subtitle;
+      var x = w.globals.svgWidth / 2;
+      var y = tsConfig.offsetY;
+      var textAnchor = 'middle';
+
+      if (tsConfig.align === 'left') {
+        x = 10;
+        textAnchor = 'start';
+      } else if (tsConfig.align === 'right') {
+        x = w.globals.svgWidth - 10;
+        textAnchor = 'end';
+      }
+
+      x = x + tsConfig.offsetX;
+      y = y + parseInt(tsConfig.style.fontSize) + 2;
+
+      if (tsConfig.text !== undefined) {
+        var graphics = new Graphics(this.ctx);
+        var titleText = graphics.drawText({
+          x: x,
+          y: y,
+          text: tsConfig.text,
+          textAnchor: textAnchor,
+          fontSize: tsConfig.style.fontSize,
+          fontFamily: tsConfig.style.fontFamily,
+          foreColor: tsConfig.style.color,
+          opacity: 1
+        });
+        titleText.node.setAttribute('class', "apexcharts-".concat(type, "-text"));
+        w.globals.dom.Paper.add(titleText);
+      }
+    }
+  }]);
+
+  return TitleSubtitle;
+}();
+
+(function (root, factory) {
+  /* istanbul ignore next */
+  if (typeof define === 'function' && define.amd) {
+    define(function () {
+      return factory(root, root.document);
+    });
+    /* below check fixes #412 */
+  } else if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof module !== 'undefined') {
+    module.exports = root.document ? factory(root, root.document) : function (w) {
+      return factory(w, w.document);
+    };
+  } else {
+    root.SVG = factory(root, root.document);
+  }
+})(typeof window !== 'undefined' ? window : undefined, function (window, document) {
+  // Find global reference - uses 'this' by default when available,
+  // falls back to 'window' otherwise (for bundlers like Webpack)
+  var globalRef = typeof this !== 'undefined' ? this : window; // The main wrapping element
+
+  var SVG = globalRef.SVG = function (element) {
+    if (SVG.supported) {
+      element = new SVG.Doc(element);
+
+      if (!SVG.parser.draw) {
+        SVG.prepare();
+      }
+
+      return element;
+    }
+  }; // Default namespaces
+
+
+  SVG.ns = 'http://www.w3.org/2000/svg';
+  SVG.xmlns = 'http://www.w3.org/2000/xmlns/';
+  SVG.xlink = 'http://www.w3.org/1999/xlink';
+  SVG.svgjs = 'http://svgjs.com/svgjs'; // Svg support test
+
+  SVG.supported = function () {
+    return true; // !!document.createElementNS &&
+    //     !! document.createElementNS(SVG.ns,'svg').createSVGRect
+  }(); // Don't bother to continue if SVG is not supported
+
+
+  if (!SVG.supported) return false; // Element id sequence
+
+  SVG.did = 1000; // Get next named element id
+
+  SVG.eid = function (name) {
+    return 'Svgjs' + capitalize(name) + SVG.did++;
+  }; // Method for element creation
+
+
+  SVG.create = function (name) {
+    // create element
+    var element = document.createElementNS(this.ns, name); // apply unique id
+
+    element.setAttribute('id', this.eid(name));
+    return element;
+  }; // Method for extending objects
+
+
+  SVG.extend = function () {
+    var modules, methods, key, i; // Get list of modules
+
+    modules = [].slice.call(arguments); // Get object with extensions
+
+    methods = modules.pop();
+
+    for (i = modules.length - 1; i >= 0; i--) {
+      if (modules[i]) {
+        for (key in methods) {
+          modules[i].prototype[key] = methods[key];
+        }
+      }
+    } // Make sure SVG.Set inherits any newly added methods
+
+
+    if (SVG.Set && SVG.Set.inherit) {
+      SVG.Set.inherit();
+    }
+  }; // Invent new element
+
+
+  SVG.invent = function (config) {
+    // Create element initializer
+    var initializer = typeof config.create === 'function' ? config.create : function () {
+      this.constructor.call(this, SVG.create(config.create));
+    }; // Inherit prototype
+
+    if (config.inherit) {
+      initializer.prototype = new config.inherit();
+    } // Extend with methods
+
+
+    if (config.extend) {
+      SVG.extend(initializer, config.extend);
+    } // Attach construct method to parent
+
+
+    if (config.construct) {
+      SVG.extend(config.parent || SVG.Container, config.construct);
+    }
+
+    return initializer;
+  }; // Adopt existing svg elements
+
+
+  SVG.adopt = function (node) {
+    // check for presence of node
+    if (!node) return null; // make sure a node isn't already adopted
+
+    if (node.instance) return node.instance; // initialize variables
+
+    var element; // adopt with element-specific settings
+
+    if (node.nodeName == 'svg') {
+      element = node.parentNode instanceof window.SVGElement ? new SVG.Nested() : new SVG.Doc();
+    } else if (node.nodeName == 'linearGradient') {
+      element = new SVG.Gradient('linear');
+    } else if (node.nodeName == 'radialGradient') {
+      element = new SVG.Gradient('radial');
+    } else if (SVG[capitalize(node.nodeName)]) {
+      element = new SVG[capitalize(node.nodeName)]();
+    } else {
+      element = new SVG.Element(node);
+    } // ensure references
+
+
+    element.type = node.nodeName;
+    element.node = node;
+    node.instance = element; // SVG.Class specific preparations
+
+    if (element instanceof SVG.Doc) {
+      element.namespace().defs();
+    } // pull svgjs data from the dom (getAttributeNS doesn't work in html5)
+
+
+    element.setData(JSON.parse(node.getAttribute('svgjs:data')) || {});
+    return element;
+  }; // Initialize parsing element
+
+
+  SVG.prepare = function () {
+    // Select document body and create invisible svg element
+    var body = document.getElementsByTagName('body')[0],
+        draw = (body ? new SVG.Doc(body) : SVG.adopt(document.documentElement).nested()).size(2, 0); // Create parser object
+
+    SVG.parser = {
+      body: body || document.documentElement,
+      draw: draw.style('opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden').node,
+      poly: draw.polyline().node,
+      path: draw.path().node,
+      native: SVG.create('svg')
+    };
+  };
+
+  SVG.parser = {
+    native: SVG.create('svg')
+  };
+  document.addEventListener('DOMContentLoaded', function () {
+    if (!SVG.parser.draw) {
+      SVG.prepare();
+    }
+  }, false); // Storage for regular expressions
+
+  SVG.regex = {
+    // Parse unit value
+    numberAndUnit: /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,
+    // Parse hex value
+    hex: /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,
+    // Parse rgb value
+    rgb: /rgb\((\d+),(\d+),(\d+)\)/,
+    // Parse reference id
+    reference: /#([a-z0-9\-_]+)/i,
+    // splits a transformation chain
+    transforms: /\)\s*,?\s*/,
+    // Whitespace
+    whitespace: /\s/g,
+    // Test hex value
+    isHex: /^#[a-f0-9]{3,6}$/i,
+    // Test rgb value
+    isRgb: /^rgb\(/,
+    // Test css declaration
+    isCss: /[^:]+:[^;]+;?/,
+    // Test for blank string
+    isBlank: /^(\s+)?$/,
+    // Test for numeric string
+    isNumber: /^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,
+    // Test for percent value
+    isPercent: /^-?[\d\.]+%$/,
+    // Test for image url
+    isImage: /\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,
+    // split at whitespace and comma
+    delimiter: /[\s,]+/,
+    // The following regex are used to parse the d attribute of a path
+    // Matches all hyphens which are not after an exponent
+    hyphen: /([^e])\-/gi,
+    // Replaces and tests for all path letters
+    pathLetters: /[MLHVCSQTAZ]/gi,
+    // yes we need this one, too
+    isPathLetter: /[MLHVCSQTAZ]/i,
+    // matches 0.154.23.45
+    numbersWithDots: /((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,
+    // matches .
+    dots: /\./g
+  };
+  SVG.utils = {
+    // Map function
+    map: function map(array, block) {
+      var i,
+          il = array.length,
+          result = [];
+
+      for (i = 0; i < il; i++) {
+        result.push(block(array[i]));
+      }
+
+      return result;
+    },
+    // Filter function
+    filter: function filter(array, block) {
+      var i,
+          il = array.length,
+          result = [];
+
+      for (i = 0; i < il; i++) {
+        if (block(array[i])) {
+          result.push(array[i]);
+        }
+      }
+
+      return result;
+    },
+    // Degrees to radians
+    radians: function radians(d) {
+      return d % 360 * Math.PI / 180;
+    },
+    // Radians to degrees
+    degrees: function degrees(r) {
+      return r * 180 / Math.PI % 360;
+    },
+    filterSVGElements: function filterSVGElements(nodes) {
+      return this.filter(nodes, function (el) {
+        return el instanceof window.SVGElement;
+      });
+    }
+  };
+  SVG.defaults = {
+    // Default attribute values
+    attrs: {
+      // fill and stroke
+      'fill-opacity': 1,
+      'stroke-opacity': 1,
+      'stroke-width': 0,
+      'stroke-linejoin': 'miter',
+      'stroke-linecap': 'butt',
+      fill: '#000000',
+      stroke: '#000000',
+      opacity: 1,
+      // position
+      x: 0,
+      y: 0,
+      cx: 0,
+      cy: 0,
+      // size
+      width: 0,
+      height: 0,
+      // radius
+      r: 0,
+      rx: 0,
+      ry: 0,
+      // gradient
+      offset: 0,
+      'stop-opacity': 1,
+      'stop-color': '#000000',
+      // text
+      'font-size': 16,
+      'font-family': 'Helvetica, Arial, sans-serif',
+      'text-anchor': 'start'
+    } // Module for color convertions
+
+  };
+
+  SVG.Color = function (color) {
+    var match; // initialize defaults
+
+    this.r = 0;
+    this.g = 0;
+    this.b = 0;
+    if (!color) return; // parse color
+
+    if (typeof color === 'string') {
+      if (SVG.regex.isRgb.test(color)) {
+        // get rgb values
+        match = SVG.regex.rgb.exec(color.replace(SVG.regex.whitespace, '')); // parse numeric values
+
+        this.r = parseInt(match[1]);
+        this.g = parseInt(match[2]);
+        this.b = parseInt(match[3]);
+      } else if (SVG.regex.isHex.test(color)) {
+        // get hex values
+        match = SVG.regex.hex.exec(fullHex(color)); // parse numeric values
+
+        this.r = parseInt(match[1], 16);
+        this.g = parseInt(match[2], 16);
+        this.b = parseInt(match[3], 16);
+      }
+    } else if (_typeof(color) === 'object') {
+      this.r = color.r;
+      this.g = color.g;
+      this.b = color.b;
+    }
+  };
+
+  SVG.extend(SVG.Color, {
+    // Default to hex conversion
+    toString: function toString() {
+      return this.toHex();
+    },
+    // Build hex value
+    toHex: function toHex() {
+      return '#' + compToHex(this.r) + compToHex(this.g) + compToHex(this.b);
+    },
+    // Build rgb value
+    toRgb: function toRgb() {
+      return 'rgb(' + [this.r, this.g, this.b].join() + ')';
+    },
+    // Calculate true brightness
+    brightness: function brightness() {
+      return this.r / 255 * 0.30 + this.g / 255 * 0.59 + this.b / 255 * 0.11;
+    },
+    // Make color morphable
+    morph: function morph(color) {
+      this.destination = new SVG.Color(color);
+      return this;
+    },
+    // Get morphed color at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this; // normalise pos
+
+      pos = pos < 0 ? 0 : pos > 1 ? 1 : pos; // generate morphed color
+
+      return new SVG.Color({
+        r: ~~(this.r + (this.destination.r - this.r) * pos),
+        g: ~~(this.g + (this.destination.g - this.g) * pos),
+        b: ~~(this.b + (this.destination.b - this.b) * pos)
+      });
+    }
+  }); // Testers
+  // Test if given value is a color string
+
+  SVG.Color.test = function (color) {
+    color += '';
+    return SVG.regex.isHex.test(color) || SVG.regex.isRgb.test(color);
+  }; // Test if given value is a rgb object
+
+
+  SVG.Color.isRgb = function (color) {
+    return color && typeof color.r === 'number' && typeof color.g === 'number' && typeof color.b === 'number';
+  }; // Test if given value is a color
+
+
+  SVG.Color.isColor = function (color) {
+    return SVG.Color.isRgb(color) || SVG.Color.test(color);
+  }; // Module for array conversion
+
+
+  SVG.Array = function (array, fallback) {
+    array = (array || []).valueOf(); // if array is empty and fallback is provided, use fallback
+
+    if (array.length == 0 && fallback) {
+      array = fallback.valueOf();
+    } // parse array
+
+
+    this.value = this.parse(array);
+  };
+
+  SVG.extend(SVG.Array, {
+    // Make array morphable
+    morph: function morph(array) {
+      this.destination = this.parse(array); // normalize length of arrays
+
+      if (this.value.length != this.destination.length) {
+        var lastValue = this.value[this.value.length - 1],
+            lastDestination = this.destination[this.destination.length - 1];
+
+        while (this.value.length > this.destination.length) {
+          this.destination.push(lastDestination);
+        }
+
+        while (this.value.length < this.destination.length) {
+          this.value.push(lastValue);
+        }
+      }
+
+      return this;
+    },
+    // Clean up any duplicate points
+    settle: function settle() {
+      // find all unique values
+      for (var i = 0, il = this.value.length, seen = []; i < il; i++) {
+        if (seen.indexOf(this.value[i]) == -1) {
+          seen.push(this.value[i]);
+        }
+      } // set new value
+
+
+      return this.value = seen;
+    },
+    // Get morphed array at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this; // generate morphed array
+
+      for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+        array.push(this.value[i] + (this.destination[i] - this.value[i]) * pos);
+      }
+
+      return new SVG.Array(array);
+    },
+    // Convert array to string
+    toString: function toString() {
+      return this.value.join(' ');
+    },
+    // Real value
+    valueOf: function valueOf() {
+      return this.value;
+    },
+    // Parse whitespace separated string
+    parse: function parse(array) {
+      array = array.valueOf(); // if already is an array, no need to parse it
+
+      if (Array.isArray(array)) return array;
+      return this.split(array);
+    },
+    // Strip unnecessary whitespace
+    split: function split(string) {
+      return string.trim().split(SVG.regex.delimiter).map(parseFloat);
+    },
+    // Reverse array
+    reverse: function reverse() {
+      this.value.reverse();
+      return this;
+    },
+    clone: function clone() {
+      var clone = new this.constructor();
+      clone.value = array_clone(this.value);
+      return clone;
+    }
+  }); // Poly points array
+
+  SVG.PointArray = function (array, fallback) {
+    SVG.Array.call(this, array, fallback || [[0, 0]]);
+  }; // Inherit from SVG.Array
+
+
+  SVG.PointArray.prototype = new SVG.Array();
+  SVG.PointArray.prototype.constructor = SVG.PointArray;
+  SVG.extend(SVG.PointArray, {
+    // Convert array to string
+    toString: function toString() {
+      // convert to a poly point string
+      for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+        array.push(this.value[i].join(','));
+      }
+
+      return array.join(' ');
+    },
+    // Convert array to line object
+    toLine: function toLine() {
+      return {
+        x1: this.value[0][0],
+        y1: this.value[0][1],
+        x2: this.value[1][0],
+        y2: this.value[1][1]
+      };
+    },
+    // Get morphed array at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this; // generate morphed point string
+
+      for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+        array.push([this.value[i][0] + (this.destination[i][0] - this.value[i][0]) * pos, this.value[i][1] + (this.destination[i][1] - this.value[i][1]) * pos]);
+      }
+
+      return new SVG.PointArray(array);
+    },
+    // Parse point string and flat array
+    parse: function parse(array) {
+      var points = [];
+      array = array.valueOf(); // if it is an array
+
+      if (Array.isArray(array)) {
+        // and it is not flat, there is no need to parse it
+        if (Array.isArray(array[0])) {
+          // make sure to use a clone
+          return array.map(function (el) {
+            return el.slice();
+          });
+        } else if (array[0].x != null) {
+          // allow point objects to be passed
+          return array.map(function (el) {
+            return [el.x, el.y];
+          });
+        }
+      } else {
+        // Else, it is considered as a string
+        // parse points
+        array = array.trim().split(SVG.regex.delimiter).map(parseFloat);
+      } // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints
+      // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.
+
+
+      if (array.length % 2 !== 0) array.pop(); // wrap points in two-tuples and parse points as floats
+
+      for (var i = 0, len = array.length; i < len; i = i + 2) {
+        points.push([array[i], array[i + 1]]);
+      }
+
+      return points;
+    },
+    // Move point string
+    move: function move(x, y) {
+      var box = this.bbox(); // get relative offset
+
+      x -= box.x;
+      y -= box.y; // move every point
+
+      if (!isNaN(x) && !isNaN(y)) {
+        for (var i = this.value.length - 1; i >= 0; i--) {
+          this.value[i] = [this.value[i][0] + x, this.value[i][1] + y];
+        }
+      }
+
+      return this;
+    },
+    // Resize poly string
+    size: function size(width, height) {
+      var i,
+          box = this.bbox(); // recalculate position of all points according to new size
+
+      for (i = this.value.length - 1; i >= 0; i--) {
+        if (box.width) this.value[i][0] = (this.value[i][0] - box.x) * width / box.width + box.x;
+        if (box.height) this.value[i][1] = (this.value[i][1] - box.y) * height / box.height + box.y;
+      }
+
+      return this;
+    },
+    // Get bounding box of points
+    bbox: function bbox() {
+      if (!SVG.parser.draw) {
+        SVG.prepare();
+      }
+
+      SVG.parser.poly.setAttribute('points', this.toString());
+      return SVG.parser.poly.getBBox();
+    }
+  });
+  var pathHandlers = {
+    M: function M(c, p, p0) {
+      p.x = p0.x = c[0];
+      p.y = p0.y = c[1];
+      return ['M', p.x, p.y];
+    },
+    L: function L(c, p) {
+      p.x = c[0];
+      p.y = c[1];
+      return ['L', c[0], c[1]];
+    },
+    H: function H(c, p) {
+      p.x = c[0];
+      return ['H', c[0]];
+    },
+    V: function V(c, p) {
+      p.y = c[0];
+      return ['V', c[0]];
+    },
+    C: function C(c, p) {
+      p.x = c[4];
+      p.y = c[5];
+      return ['C', c[0], c[1], c[2], c[3], c[4], c[5]];
+    },
+    S: function S(c, p) {
+      p.x = c[2];
+      p.y = c[3];
+      return ['S', c[0], c[1], c[2], c[3]];
+    },
+    Q: function Q(c, p) {
+      p.x = c[2];
+      p.y = c[3];
+      return ['Q', c[0], c[1], c[2], c[3]];
+    },
+    T: function T(c, p) {
+      p.x = c[0];
+      p.y = c[1];
+      return ['T', c[0], c[1]];
+    },
+    Z: function Z(c, p, p0) {
+      p.x = p0.x;
+      p.y = p0.y;
+      return ['Z'];
+    },
+    A: function A(c, p) {
+      p.x = c[5];
+      p.y = c[6];
+      return ['A', c[0], c[1], c[2], c[3], c[4], c[5], c[6]];
+    }
+  };
+  var mlhvqtcsa = 'mlhvqtcsaz'.split('');
+
+  for (var i = 0, il = mlhvqtcsa.length; i < il; ++i) {
+    pathHandlers[mlhvqtcsa[i]] = function (i) {
+      return function (c, p, p0) {
+        if (i == 'H') c[0] = c[0] + p.x;else if (i == 'V') c[0] = c[0] + p.y;else if (i == 'A') {
+          c[5] = c[5] + p.x, c[6] = c[6] + p.y;
+        } else {
+          for (var j = 0, jl = c.length; j < jl; ++j) {
+            c[j] = c[j] + (j % 2 ? p.y : p.x);
+          }
+        }
+        return pathHandlers[i](c, p, p0);
+      };
+    }(mlhvqtcsa[i].toUpperCase());
+  } // Path points array
+
+
+  SVG.PathArray = function (array, fallback) {
+    SVG.Array.call(this, array, fallback || [['M', 0, 0]]);
+  }; // Inherit from SVG.Array
+
+
+  SVG.PathArray.prototype = new SVG.Array();
+  SVG.PathArray.prototype.constructor = SVG.PathArray;
+  SVG.extend(SVG.PathArray, {
+    // Convert array to string
+    toString: function toString() {
+      return arrayToString(this.value);
+    },
+    // Move path string
+    move: function move(x, y) {
+      // get bounding box of current situation
+      var box = this.bbox(); // get relative offset
+
+      x -= box.x;
+      y -= box.y;
+
+      if (!isNaN(x) && !isNaN(y)) {
+        // move every point
+        for (var l, i = this.value.length - 1; i >= 0; i--) {
+          l = this.value[i][0];
+
+          if (l == 'M' || l == 'L' || l == 'T') {
+            this.value[i][1] += x;
+            this.value[i][2] += y;
+          } else if (l == 'H') {
+            this.value[i][1] += x;
+          } else if (l == 'V') {
+            this.value[i][1] += y;
+          } else if (l == 'C' || l == 'S' || l == 'Q') {
+            this.value[i][1] += x;
+            this.value[i][2] += y;
+            this.value[i][3] += x;
+            this.value[i][4] += y;
+
+            if (l == 'C') {
+              this.value[i][5] += x;
+              this.value[i][6] += y;
+            }
+          } else if (l == 'A') {
+            this.value[i][6] += x;
+            this.value[i][7] += y;
+          }
+        }
+      }
+
+      return this;
+    },
+    // Resize path string
+    size: function size(width, height) {
+      // get bounding box of current situation
+      var i,
+          l,
+          box = this.bbox(); // recalculate position of all points according to new size
+
+      for (i = this.value.length - 1; i >= 0; i--) {
+        l = this.value[i][0];
+
+        if (l == 'M' || l == 'L' || l == 'T') {
+          this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+          this.value[i][2] = (this.value[i][2] - box.y) * height / box.height + box.y;
+        } else if (l == 'H') {
+          this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+        } else if (l == 'V') {
+          this.value[i][1] = (this.value[i][1] - box.y) * height / box.height + box.y;
+        } else if (l == 'C' || l == 'S' || l == 'Q') {
+          this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+          this.value[i][2] = (this.value[i][2] - box.y) * height / box.height + box.y;
+          this.value[i][3] = (this.value[i][3] - box.x) * width / box.width + box.x;
+          this.value[i][4] = (this.value[i][4] - box.y) * height / box.height + box.y;
+
+          if (l == 'C') {
+            this.value[i][5] = (this.value[i][5] - box.x) * width / box.width + box.x;
+            this.value[i][6] = (this.value[i][6] - box.y) * height / box.height + box.y;
+          }
+        } else if (l == 'A') {
+          // resize radii
+          this.value[i][1] = this.value[i][1] * width / box.width;
+          this.value[i][2] = this.value[i][2] * height / box.height; // move position values
+
+          this.value[i][6] = (this.value[i][6] - box.x) * width / box.width + box.x;
+          this.value[i][7] = (this.value[i][7] - box.y) * height / box.height + box.y;
+        }
+      }
+
+      return this;
+    },
+    // Test if the passed path array use the same path data commands as this path array
+    equalCommands: function equalCommands(pathArray) {
+      var i, il, equalCommands;
+      pathArray = new SVG.PathArray(pathArray);
+      equalCommands = this.value.length === pathArray.value.length;
+
+      for (i = 0, il = this.value.length; equalCommands && i < il; i++) {
+        equalCommands = this.value[i][0] === pathArray.value[i][0];
+      }
+
+      return equalCommands;
+    },
+    // Make path array morphable
+    morph: function morph(pathArray) {
+      pathArray = new SVG.PathArray(pathArray);
+
+      if (this.equalCommands(pathArray)) {
+        this.destination = pathArray;
+      } else {
+        this.destination = null;
+      }
+
+      return this;
+    },
+    // Get morphed path array at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this;
+      var sourceArray = this.value,
+          destinationArray = this.destination.value,
+          array = [],
+          pathArray = new SVG.PathArray(),
+          i,
+          il,
+          j,
+          jl; // Animate has specified in the SVG spec
+      // See: https://www.w3.org/TR/SVG11/paths.html#PathElement
+
+      for (i = 0, il = sourceArray.length; i < il; i++) {
+        array[i] = [sourceArray[i][0]];
+
+        for (j = 1, jl = sourceArray[i].length; j < jl; j++) {
+          array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos;
+        } // For the two flags of the elliptical arc command, the SVG spec say:
+        // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true
+        // Elliptical arc command as an array followed by corresponding indexes:
+        // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]
+        //   0    1   2        3                 4             5      6  7
+
+
+        if (array[i][0] === 'A') {
+          array[i][4] = +(array[i][4] != 0);
+          array[i][5] = +(array[i][5] != 0);
+        }
+      } // Directly modify the value of a path array, this is done this way for performance
+
+
+      pathArray.value = array;
+      return pathArray;
+    },
+    // Absolutize and parse path to array
+    parse: function parse(array) {
+      // if it's already a patharray, no need to parse it
+      if (array instanceof SVG.PathArray) return array.valueOf(); // prepare for parsing
+
+      var s,
+          arr,
+          paramCnt = {
+        'M': 2,
+        'L': 2,
+        'H': 1,
+        'V': 1,
+        'C': 6,
+        'S': 4,
+        'Q': 4,
+        'T': 2,
+        'A': 7,
+        'Z': 0
+      };
+
+      if (typeof array === 'string') {
+        array = array.replace(SVG.regex.numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123
+        .replace(SVG.regex.pathLetters, ' $& ') // put some room between letters and numbers
+        .replace(SVG.regex.hyphen, '$1 -') // add space before hyphen
+        .trim() // trim
+        .split(SVG.regex.delimiter); // split into array
+      } else {
+        array = array.reduce(function (prev, curr) {
+          return [].concat.call(prev, curr);
+        }, []);
+      } // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...]
+
+
+      var arr = [],
+          p = new SVG.Point(),
+          p0 = new SVG.Point(),
+          index = 0,
+          len = array.length;
+
+      do {
+        // Test if we have a path letter
+        if (SVG.regex.isPathLetter.test(array[index])) {
+          s = array[index];
+          ++index; // If last letter was a move command and we got no new, it defaults to [L]ine
+        } else if (s == 'M') {
+          s = 'L';
+        } else if (s == 'm') {
+          s = 'l';
+        }
+
+        arr.push(pathHandlers[s].call(null, array.slice(index, index = index + paramCnt[s.toUpperCase()]).map(parseFloat), p, p0));
+      } while (len > index);
+
+      return arr;
+    },
+    // Get bounding box of path
+    bbox: function bbox() {
+      if (!SVG.parser.draw) {
+        SVG.prepare();
+      }
+
+      SVG.parser.path.setAttribute('d', this.toString());
+      return SVG.parser.path.getBBox();
+    }
+  }); // Module for unit convertions
+
+  SVG.Number = SVG.invent({
+    // Initialize
+    create: function create(value, unit) {
+      // initialize defaults
+      this.value = 0;
+      this.unit = unit || ''; // parse value
+
+      if (typeof value === 'number') {
+        // ensure a valid numeric value
+        this.value = isNaN(value) ? 0 : !isFinite(value) ? value < 0 ? -3.4e+38 : +3.4e+38 : value;
+      } else if (typeof value === 'string') {
+        unit = value.match(SVG.regex.numberAndUnit);
+
+        if (unit) {
+          // make value numeric
+          this.value = parseFloat(unit[1]); // normalize
+
+          if (unit[5] == '%') {
+            this.value /= 100;
+          } else if (unit[5] == 's') {
+            this.value *= 1000;
+          } // store unit
+
+
+          this.unit = unit[5];
+        }
+      } else {
+        if (value instanceof SVG.Number) {
+          this.value = value.valueOf();
+          this.unit = value.unit;
+        }
+      }
+    },
+    // Add methods
+    extend: {
+      // Stringalize
+      toString: function toString() {
+        return (this.unit == '%' ? ~~(this.value * 1e8) / 1e6 : this.unit == 's' ? this.value / 1e3 : this.value) + this.unit;
+      },
+      toJSON: function toJSON() {
+        return this.toString();
+      },
+      // Convert to primitive
+      valueOf: function valueOf() {
+        return this.value;
+      },
+      // Add number
+      plus: function plus(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this + number, this.unit || number.unit);
+      },
+      // Subtract number
+      minus: function minus(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this - number, this.unit || number.unit);
+      },
+      // Multiply number
+      times: function times(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this * number, this.unit || number.unit);
+      },
+      // Divide number
+      divide: function divide(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this / number, this.unit || number.unit);
+      },
+      // Convert to different unit
+      to: function to(unit) {
+        var number = new SVG.Number(this);
+
+        if (typeof unit === 'string') {
+          number.unit = unit;
+        }
+
+        return number;
+      },
+      // Make number morphable
+      morph: function morph(number) {
+        this.destination = new SVG.Number(number);
+
+        if (number.relative) {
+          this.destination.value += this.value;
+        }
+
+        return this;
+      },
+      // Get morphed number at given position
+      at: function at(pos) {
+        // Make sure a destination is defined
+        if (!this.destination) return this; // Generate new morphed number
+
+        return new SVG.Number(this.destination).minus(this).times(pos).plus(this);
+      }
+    }
+  });
+  SVG.Element = SVG.invent({
+    // Initialize node
+    create: function create(node) {
+      // make stroke value accessible dynamically
+      this._stroke = SVG.defaults.attrs.stroke;
+      this._event = null; // initialize data object
+
+      this.dom = {}; // create circular reference
+
+      if (this.node = node) {
+        this.type = node.nodeName;
+        this.node.instance = this; // store current attribute value
+
+        this._stroke = node.getAttribute('stroke') || this._stroke;
+      }
+    },
+    // Add class methods
+    extend: {
+      // Move over x-axis
+      x: function x(_x) {
+        return this.attr('x', _x);
+      },
+      // Move over y-axis
+      y: function y(_y) {
+        return this.attr('y', _y);
+      },
+      // Move by center over x-axis
+      cx: function cx(x) {
+        return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2);
+      },
+      // Move by center over y-axis
+      cy: function cy(y) {
+        return y == null ? this.y() + this.height() / 2 : this.y(y - this.height() / 2);
+      },
+      // Move element to given x and y values
+      move: function move(x, y) {
+        return this.x(x).y(y);
+      },
+      // Move element by its center
+      center: function center(x, y) {
+        return this.cx(x).cy(y);
+      },
+      // Set width of element
+      width: function width(_width) {
+        return this.attr('width', _width);
+      },
+      // Set height of element
+      height: function height(_height) {
+        return this.attr('height', _height);
+      },
+      // Set element size to given width and height
+      size: function size(width, height) {
+        var p = proportionalSize(this, width, height);
+        return this.width(new SVG.Number(p.width)).height(new SVG.Number(p.height));
+      },
+      // Clone element
+      clone: function clone(parent) {
+        // write dom data to the dom so the clone can pickup the data
+        this.writeDataToDom(); // clone element and assign new id
+
+        var clone = assignNewId(this.node.cloneNode(true)); // insert the clone in the given parent or after myself
+
+        if (parent) parent.add(clone);else this.after(clone);
+        return clone;
+      },
+      // Remove element
+      remove: function remove() {
+        if (this.parent()) {
+          this.parent().removeElement(this);
+        }
+
+        return this;
+      },
+      // Replace element
+      replace: function replace(element) {
+        this.after(element).remove();
+        return element;
+      },
+      // Add element to given container and return self
+      addTo: function addTo(parent) {
+        return parent.put(this);
+      },
+      // Add element to given container and return container
+      putIn: function putIn(parent) {
+        return parent.add(this);
+      },
+      // Get / set id
+      id: function id(_id) {
+        return this.attr('id', _id);
+      },
+      // Checks whether the given point inside the bounding box of the element
+      inside: function inside(x, y) {
+        var box = this.bbox();
+        return x > box.x && y > box.y && x < box.x + box.width && y < box.y + box.height;
+      },
+      // Show element
+      show: function show() {
+        return this.style('display', '');
+      },
+      // Hide element
+      hide: function hide() {
+        return this.style('display', 'none');
+      },
+      // Is element visible?
+      visible: function visible() {
+        return this.style('display') != 'none';
+      },
+      // Return id on string conversion
+      toString: function toString() {
+        return this.attr('id');
+      },
+      // Return array of classes on the node
+      classes: function classes() {
+        var attr = this.attr('class');
+        return attr == null ? [] : attr.trim().split(SVG.regex.delimiter);
+      },
+      // Return true if class exists on the node, false otherwise
+      hasClass: function hasClass(name) {
+        return this.classes().indexOf(name) != -1;
+      },
+      // Add class to the node
+      addClass: function addClass(name) {
+        if (!this.hasClass(name)) {
+          var array = this.classes();
+          array.push(name);
+          this.attr('class', array.join(' '));
+        }
+
+        return this;
+      },
+      // Remove class from the node
+      removeClass: function removeClass(name) {
+        if (this.hasClass(name)) {
+          this.attr('class', this.classes().filter(function (c) {
+            return c != name;
+          }).join(' '));
+        }
+
+        return this;
+      },
+      // Toggle the presence of a class on the node
+      toggleClass: function toggleClass(name) {
+        return this.hasClass(name) ? this.removeClass(name) : this.addClass(name);
+      },
+      // Get referenced element form attribute value
+      reference: function reference(attr) {
+        return SVG.get(this.attr(attr));
+      },
+      // Returns the parent element instance
+      parent: function parent(type) {
+        var parent = this; // check for parent
+
+        if (!parent.node.parentNode) return null; // get parent element
+
+        parent = SVG.adopt(parent.node.parentNode);
+        if (!type) return parent; // loop trough ancestors if type is given
+
+        while (parent && parent.node instanceof window.SVGElement) {
+          if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent;
+          if (!parent.node.parentNode || parent.node.parentNode.nodeName == '#document') return null; // #759, #720
+
+          parent = SVG.adopt(parent.node.parentNode);
+        }
+      },
+      // Get parent document
+      doc: function doc() {
+        return this instanceof SVG.Doc ? this : this.parent(SVG.Doc);
+      },
+      // return array of all ancestors of given type up to the root svg
+      parents: function parents(type) {
+        var parents = [],
+            parent = this;
+
+        do {
+          parent = parent.parent(type);
+          if (!parent || !parent.node) break;
+          parents.push(parent);
+        } while (parent.parent);
+
+        return parents;
+      },
+      // matches the element vs a css selector
+      matches: function matches(selector) {
+        return _matches(this.node, selector);
+      },
+      // Returns the svg node to call native svg methods on it
+      native: function native() {
+        return this.node;
+      },
+      // Import raw svg
+      svg: function svg(_svg) {
+        // create temporary holder
+        var well = document.createElement('svg'); // act as a setter if svg is given
+
+        if (_svg && this instanceof SVG.Parent) {
+          // dump raw svg
+          well.innerHTML = '<svg>' + _svg.replace(/\n/, '').replace(/<([\w:-]+)([^<]+?)\/>/g, '<$1$2></$1>') + '</svg>'; // transplant nodes
+
+          for (var i = 0, il = well.firstChild.childNodes.length; i < il; i++) {
+            this.node.appendChild(well.firstChild.firstChild);
+          } // otherwise act as a getter
+
+        } else {
+          // create a wrapping svg element in case of partial content
+          well.appendChild(_svg = document.createElement('svg')); // write svgjs data to the dom
+
+          this.writeDataToDom(); // insert a copy of this node
+
+          _svg.appendChild(this.node.cloneNode(true)); // return target element
+
+
+          return well.innerHTML.replace(/^<svg>/, '').replace(/<\/svg>$/, '');
+        }
+
+        return this;
+      },
+      // write svgjs data to the dom
+      writeDataToDom: function writeDataToDom() {
+        // dump variables recursively
+        if (this.each || this.lines) {
+          var fn = this.each ? this : this.lines();
+          fn.each(function () {
+            this.writeDataToDom();
+          });
+        } // remove previously set data
+
+
+        this.node.removeAttribute('svgjs:data');
+
+        if (Object.keys(this.dom).length) {
+          this.node.setAttribute('svgjs:data', JSON.stringify(this.dom));
+        } // see #428
+
+
+        return this;
+      },
+      // set given data to the elements data property
+      setData: function setData(o) {
+        this.dom = o;
+        return this;
+      },
+      is: function is(obj) {
+        return _is(this, obj);
+      }
+    }
+  });
+  SVG.easing = {
+    '-': function _(pos) {
+      return pos;
+    },
+    '<>': function _(pos) {
+      return -Math.cos(pos * Math.PI) / 2 + 0.5;
+    },
+    '>': function _(pos) {
+      return Math.sin(pos * Math.PI / 2);
+    },
+    '<': function _(pos) {
+      return -Math.cos(pos * Math.PI / 2) + 1;
+    }
+  };
+
+  SVG.morph = function (pos) {
+    return function (from, to) {
+      return new SVG.MorphObj(from, to).at(pos);
+    };
+  };
+
+  SVG.Situation = SVG.invent({
+    create: function create(o) {
+      this.init = false;
+      this.reversed = false;
+      this.reversing = false;
+      this.duration = new SVG.Number(o.duration).valueOf();
+      this.delay = new SVG.Number(o.delay).valueOf();
+      this.start = +new Date() + this.delay;
+      this.finish = this.start + this.duration;
+      this.ease = o.ease; // this.loop is incremented from 0 to this.loops
+      // it is also incremented when in an infinite loop (when this.loops is true)
+
+      this.loop = 0;
+      this.loops = false;
+      this.animations = {// functionToCall: [list of morphable objects]
+        // e.g. move: [SVG.Number, SVG.Number]
+      };
+      this.attrs = {// holds all attributes which are not represented from a function svg.js provides
+        // e.g. someAttr: SVG.Number
+      };
+      this.styles = {// holds all styles which should be animated
+        // e.g. fill-color: SVG.Color
+      };
+      this.transforms = [// holds all transformations as transformation objects
+        // e.g. [SVG.Rotate, SVG.Translate, SVG.Matrix]
+      ];
+      this.once = {// functions to fire at a specific position
+        // e.g. "0.5": function foo(){}
+      };
+    }
+  });
+  SVG.FX = SVG.invent({
+    create: function create(element) {
+      this._target = element;
+      this.situations = [];
+      this.active = false;
+      this.situation = null;
+      this.paused = false;
+      this.lastPos = 0;
+      this.pos = 0; // The absolute position of an animation is its position in the context of its complete duration (including delay and loops)
+      // When performing a delay, absPos is below 0 and when performing a loop, its value is above 1
+
+      this.absPos = 0;
+      this._speed = 1;
+    },
+    extend: {
+      /**
+       * sets or returns the target of this animation
+       * @param o object || number In case of Object it holds all parameters. In case of number its the duration of the animation
+       * @param ease function || string Function which should be used for easing or easing keyword
+       * @param delay Number indicating the delay before the animation starts
+       * @return target || this
+       */
+      animate: function animate(o, ease, delay) {
+        if (_typeof(o) === 'object') {
+          ease = o.ease;
+          delay = o.delay;
+          o = o.duration;
+        }
+
+        var situation = new SVG.Situation({
+          duration: o || 1000,
+          delay: delay || 0,
+          ease: SVG.easing[ease || '-'] || ease
+        });
+        this.queue(situation);
+        return this;
+      },
+
+      /**
+      * sets a delay before the next element of the queue is called
+      * @param delay Duration of delay in milliseconds
+      * @return this.target()
+      */
+      delay: function delay(_delay) {
+        // The delay is performed by an empty situation with its duration
+        // attribute set to the duration of the delay
+        var situation = new SVG.Situation({
+          duration: _delay,
+          delay: 0,
+          ease: SVG.easing['-']
+        });
+        return this.queue(situation);
+      },
+
+      /**
+      * sets or returns the target of this animation
+      * @param null || target SVG.Element which should be set as new target
+      * @return target || this
+      */
+      target: function target(_target) {
+        if (_target && _target instanceof SVG.Element) {
+          this._target = _target;
+          return this;
+        }
+
+        return this._target;
+      },
+      // returns the absolute position at a given time
+      timeToAbsPos: function timeToAbsPos(timestamp) {
+        return (timestamp - this.situation.start) / (this.situation.duration / this._speed);
+      },
+      // returns the timestamp from a given absolute positon
+      absPosToTime: function absPosToTime(absPos) {
+        return this.situation.duration / this._speed * absPos + this.situation.start;
+      },
+      // starts the animationloop
+      startAnimFrame: function startAnimFrame() {
+        this.stopAnimFrame();
+        this.animationFrame = window.requestAnimationFrame(function () {
+          this.step();
+        }.bind(this));
+      },
+      // cancels the animationframe
+      stopAnimFrame: function stopAnimFrame() {
+        window.cancelAnimationFrame(this.animationFrame);
+      },
+      // kicks off the animation - only does something when the queue is currently not active and at least one situation is set
+      start: function start() {
+        // dont start if already started
+        if (!this.active && this.situation) {
+          this.active = true;
+          this.startCurrent();
+        }
+
+        return this;
+      },
+      // start the current situation
+      startCurrent: function startCurrent() {
+        this.situation.start = +new Date() + this.situation.delay / this._speed;
+        this.situation.finish = this.situation.start + this.situation.duration / this._speed;
+        return this.initAnimations().step();
+      },
+
+      /**
+      * adds a function / Situation to the animation queue
+      * @param fn function / situation to add
+      * @return this
+      */
+      queue: function queue(fn) {
+        if (typeof fn === 'function' || fn instanceof SVG.Situation) {
+          this.situations.push(fn);
+        }
+
+        if (!this.situation) this.situation = this.situations.shift();
+        return this;
+      },
+
+      /**
+      * pulls next element from the queue and execute it
+      * @return this
+      */
+      dequeue: function dequeue() {
+        // stop current animation
+        this.stop(); // get next animation from queue
+
+        this.situation = this.situations.shift();
+
+        if (this.situation) {
+          if (this.situation instanceof SVG.Situation) {
+            this.start();
+          } else {
+            // If it is not a SVG.Situation, then it is a function, we execute it
+            this.situation.call(this);
+          }
+        }
+
+        return this;
+      },
+      // updates all animations to the current state of the element
+      // this is important when one property could be changed from another property
+      initAnimations: function initAnimations() {
+        var i, j, source;
+        var s = this.situation;
+        if (s.init) return this;
+
+        for (i in s.animations) {
+          source = this.target()[i]();
+
+          if (!Array.isArray(source)) {
+            source = [source];
+          }
+
+          if (!Array.isArray(s.animations[i])) {
+            s.animations[i] = [s.animations[i]];
+          } // if(s.animations[i].length > source.length) {
+          //  source.concat = source.concat(s.animations[i].slice(source.length, s.animations[i].length))
+          // }
+
+
+          for (j = source.length; j--;) {
+            // The condition is because some methods return a normal number instead
+            // of a SVG.Number
+            if (s.animations[i][j] instanceof SVG.Number) {
+              source[j] = new SVG.Number(source[j]);
+            }
+
+            s.animations[i][j] = source[j].morph(s.animations[i][j]);
+          }
+        }
+
+        for (i in s.attrs) {
+          s.attrs[i] = new SVG.MorphObj(this.target().attr(i), s.attrs[i]);
+        }
+
+        for (i in s.styles) {
+          s.styles[i] = new SVG.MorphObj(this.target().style(i), s.styles[i]);
+        }
+
+        s.initialTransformation = this.target().matrixify();
+        s.init = true;
+        return this;
+      },
+      clearQueue: function clearQueue() {
+        this.situations = [];
+        return this;
+      },
+      clearCurrent: function clearCurrent() {
+        this.situation = null;
+        return this;
+      },
+
+      /** stops the animation immediately
+      * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately.
+      * @param clearQueue A Boolean indicating whether to remove queued animation as well.
+      * @return this
+      */
+      stop: function stop(jumpToEnd, clearQueue) {
+        var active = this.active;
+        this.active = false;
+
+        if (clearQueue) {
+          this.clearQueue();
+        }
+
+        if (jumpToEnd && this.situation) {
+          // initialize the situation if it was not
+          !active && this.startCurrent();
+          this.atEnd();
+        }
+
+        this.stopAnimFrame();
+        return this.clearCurrent();
+      },
+
+      /** resets the element to the state where the current element has started
+      * @return this
+      */
+      reset: function reset() {
+        if (this.situation) {
+          var temp = this.situation;
+          this.stop();
+          this.situation = temp;
+          this.atStart();
+        }
+
+        return this;
+      },
+      // Stop the currently-running animation, remove all queued animations, and complete all animations for the element.
+      finish: function finish() {
+        this.stop(true, false);
+
+        while (this.dequeue().situation && this.stop(true, false)) {
+        }
+
+        this.clearQueue().clearCurrent();
+        return this;
+      },
+      // set the internal animation pointer at the start position, before any loops, and updates the visualisation
+      atStart: function atStart() {
+        return this.at(0, true);
+      },
+      // set the internal animation pointer at the end position, after all the loops, and updates the visualisation
+      atEnd: function atEnd() {
+        if (this.situation.loops === true) {
+          // If in a infinite loop, we end the current iteration
+          this.situation.loops = this.situation.loop + 1;
+        }
+
+        if (typeof this.situation.loops === 'number') {
+          // If performing a finite number of loops, we go after all the loops
+          return this.at(this.situation.loops, true);
+        } else {
+          // If no loops, we just go at the end
+          return this.at(1, true);
+        }
+      },
+      // set the internal animation pointer to the specified position and updates the visualisation
+      // if isAbsPos is true, pos is treated as an absolute position
+      at: function at(pos, isAbsPos) {
+        var durDivSpd = this.situation.duration / this._speed;
+        this.absPos = pos; // If pos is not an absolute position, we convert it into one
+
+        if (!isAbsPos) {
+          if (this.situation.reversed) this.absPos = 1 - this.absPos;
+          this.absPos += this.situation.loop;
+        }
+
+        this.situation.start = +new Date() - this.absPos * durDivSpd;
+        this.situation.finish = this.situation.start + durDivSpd;
+        return this.step(true);
+      },
+
+      /**
+      * sets or returns the speed of the animations
+      * @param speed null || Number The new speed of the animations
+      * @return Number || this
+      */
+      speed: function speed(_speed) {
+        if (_speed === 0) return this.pause();
+
+        if (_speed) {
+          this._speed = _speed; // We use an absolute position here so that speed can affect the delay before the animation
+
+          return this.at(this.absPos, true);
+        } else return this._speed;
+      },
+      // Make loopable
+      loop: function loop(times, reverse) {
+        var c = this.last(); // store total loops
+
+        c.loops = times != null ? times : true;
+        c.loop = 0;
+        if (reverse) c.reversing = true;
+        return this;
+      },
+      // pauses the animation
+      pause: function pause() {
+        this.paused = true;
+        this.stopAnimFrame();
+        return this;
+      },
+      // unpause the animation
+      play: function play() {
+        if (!this.paused) return this;
+        this.paused = false; // We use an absolute position here so that the delay before the animation can be paused
+
+        return this.at(this.absPos, true);
+      },
+
+      /**
+      * toggle or set the direction of the animation
+      * true sets direction to backwards while false sets it to forwards
+      * @param reversed Boolean indicating whether to reverse the animation or not (default: toggle the reverse status)
+      * @return this
+      */
+      reverse: function reverse(reversed) {
+        var c = this.last();
+        if (typeof reversed === 'undefined') c.reversed = !c.reversed;else c.reversed = reversed;
+        return this;
+      },
+
+      /**
+      * returns a float from 0-1 indicating the progress of the current animation
+      * @param eased Boolean indicating whether the returned position should be eased or not
+      * @return number
+      */
+      progress: function progress(easeIt) {
+        return easeIt ? this.situation.ease(this.pos) : this.pos;
+      },
+
+      /**
+      * adds a callback function which is called when the current animation is finished
+      * @param fn Function which should be executed as callback
+      * @return number
+      */
+      after: function after(fn) {
+        var c = this.last(),
+            wrapper = function wrapper(e) {
+          if (e.detail.situation == c) {
+            fn.call(this, c);
+            this.off('finished.fx', wrapper); // prevent memory leak
+          }
+        };
+
+        this.target().on('finished.fx', wrapper);
+        return this._callStart();
+      },
+      // adds a callback which is called whenever one animation step is performed
+      during: function during(fn) {
+        var c = this.last(),
+            wrapper = function wrapper(e) {
+          if (e.detail.situation == c) {
+            fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, c);
+          }
+        }; // see above
+
+
+        this.target().off('during.fx', wrapper).on('during.fx', wrapper);
+        this.after(function () {
+          this.off('during.fx', wrapper);
+        });
+        return this._callStart();
+      },
+      // calls after ALL animations in the queue are finished
+      afterAll: function afterAll(fn) {
+        var wrapper = function wrapper(e) {
+          fn.call(this);
+          this.off('allfinished.fx', wrapper);
+        }; // see above
+
+
+        this.target().off('allfinished.fx', wrapper).on('allfinished.fx', wrapper);
+        return this._callStart();
+      },
+      // calls on every animation step for all animations
+      duringAll: function duringAll(fn) {
+        var wrapper = function wrapper(e) {
+          fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, e.detail.situation);
+        };
+
+        this.target().off('during.fx', wrapper).on('during.fx', wrapper);
+        this.afterAll(function () {
+          this.off('during.fx', wrapper);
+        });
+        return this._callStart();
+      },
+      last: function last() {
+        return this.situations.length ? this.situations[this.situations.length - 1] : this.situation;
+      },
+      // adds one property to the animations
+      add: function add(method, args, type) {
+        this.last()[type || 'animations'][method] = args;
+        return this._callStart();
+      },
+
+      /** perform one step of the animation
+      *  @param ignoreTime Boolean indicating whether to ignore time and use position directly or recalculate position based on time
+      *  @return this
+      */
+      step: function step(ignoreTime) {
+        // convert current time to an absolute position
+        if (!ignoreTime) this.absPos = this.timeToAbsPos(+new Date()); // This part convert an absolute position to a position
+
+        if (this.situation.loops !== false) {
+          var absPos, absPosInt, lastLoop; // If the absolute position is below 0, we just treat it as if it was 0
+
+          absPos = Math.max(this.absPos, 0);
+          absPosInt = Math.floor(absPos);
+
+          if (this.situation.loops === true || absPosInt < this.situation.loops) {
+            this.pos = absPos - absPosInt;
+            lastLoop = this.situation.loop;
+            this.situation.loop = absPosInt;
+          } else {
+            this.absPos = this.situation.loops;
+            this.pos = 1; // The -1 here is because we don't want to toggle reversed when all the loops have been completed
+
+            lastLoop = this.situation.loop - 1;
+            this.situation.loop = this.situation.loops;
+          }
+
+          if (this.situation.reversing) {
+            // Toggle reversed if an odd number of loops as occured since the last call of step
+            this.situation.reversed = this.situation.reversed != Boolean((this.situation.loop - lastLoop) % 2);
+          }
+        } else {
+          // If there are no loop, the absolute position must not be above 1
+          this.absPos = Math.min(this.absPos, 1);
+          this.pos = this.absPos;
+        } // while the absolute position can be below 0, the position must not be below 0
+
+
+        if (this.pos < 0) this.pos = 0;
+        if (this.situation.reversed) this.pos = 1 - this.pos; // apply easing
+
+        var eased = this.situation.ease(this.pos); // call once-callbacks
+
+        for (var i in this.situation.once) {
+          if (i > this.lastPos && i <= eased) {
+            this.situation.once[i].call(this.target(), this.pos, eased);
+            delete this.situation.once[i];
+          }
+        } // fire during callback with position, eased position and current situation as parameter
+
+
+        if (this.active) this.target().fire('during', {
+          pos: this.pos,
+          eased: eased,
+          fx: this,
+          situation: this.situation
+        }); // the user may call stop or finish in the during callback
+        // so make sure that we still have a valid situation
+
+        if (!this.situation) {
+          return this;
+        } // apply the actual animation to every property
+
+
+        this.eachAt(); // do final code when situation is finished
+
+        if (this.pos == 1 && !this.situation.reversed || this.situation.reversed && this.pos == 0) {
+          // stop animation callback
+          this.stopAnimFrame(); // fire finished callback with current situation as parameter
+
+          this.target().fire('finished', {
+            fx: this,
+            situation: this.situation
+          });
+
+          if (!this.situations.length) {
+            this.target().fire('allfinished'); // Recheck the length since the user may call animate in the afterAll callback
+
+            if (!this.situations.length) {
+              this.target().off('.fx'); // there shouldnt be any binding left, but to make sure...
+
+              this.active = false;
+            }
+          } // start next animation
+
+
+          if (this.active) this.dequeue();else this.clearCurrent();
+        } else if (!this.paused && this.active) {
+          // we continue animating when we are not at the end
+          this.startAnimFrame();
+        } // save last eased position for once callback triggering
+
+
+        this.lastPos = eased;
+        return this;
+      },
+      // calculates the step for every property and calls block with it
+      eachAt: function eachAt() {
+        var i,
+            len,
+            at,
+            self = this,
+            target = this.target(),
+            s = this.situation; // apply animations which can be called trough a method
+
+        for (i in s.animations) {
+          at = [].concat(s.animations[i]).map(function (el) {
+            return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+          });
+          target[i].apply(target, at);
+        } // apply animation which has to be applied with attr()
+
+
+        for (i in s.attrs) {
+          at = [i].concat(s.attrs[i]).map(function (el) {
+            return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+          });
+          target.attr.apply(target, at);
+        } // apply animation which has to be applied with style()
+
+
+        for (i in s.styles) {
+          at = [i].concat(s.styles[i]).map(function (el) {
+            return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+          });
+          target.style.apply(target, at);
+        } // animate initialTransformation which has to be chained
+
+
+        if (s.transforms.length) {
+          // get initial initialTransformation
+          at = s.initialTransformation;
+
+          for (i = 0, len = s.transforms.length; i < len; i++) {
+            // get next transformation in chain
+            var a = s.transforms[i]; // multiply matrix directly
+
+            if (a instanceof SVG.Matrix) {
+              if (a.relative) {
+                at = at.multiply(new SVG.Matrix().morph(a).at(s.ease(this.pos)));
+              } else {
+                at = at.morph(a).at(s.ease(this.pos));
+              }
+
+              continue;
+            } // when transformation is absolute we have to reset the needed transformation first
+
+
+            if (!a.relative) {
+              a.undo(at.extract());
+            } // and reapply it after
+
+
+            at = at.multiply(a.at(s.ease(this.pos)));
+          } // set new matrix on element
+
+
+          target.matrix(at);
+        }
+
+        return this;
+      },
+      // adds an once-callback which is called at a specific position and never again
+      once: function once(pos, fn, isEased) {
+        var c = this.last();
+        if (!isEased) pos = c.ease(pos);
+        c.once[pos] = fn;
+        return this;
+      },
+      _callStart: function _callStart() {
+        setTimeout(function () {
+          this.start();
+        }.bind(this), 0);
+        return this;
+      }
+    },
+    parent: SVG.Element,
+    // Add method to parent elements
+    construct: {
+      // Get fx module or create a new one, then animate with given duration and ease
+      animate: function animate(o, ease, delay) {
+        return (this.fx || (this.fx = new SVG.FX(this))).animate(o, ease, delay);
+      },
+      delay: function delay(_delay2) {
+        return (this.fx || (this.fx = new SVG.FX(this))).delay(_delay2);
+      },
+      stop: function stop(jumpToEnd, clearQueue) {
+        if (this.fx) {
+          this.fx.stop(jumpToEnd, clearQueue);
+        }
+
+        return this;
+      },
+      finish: function finish() {
+        if (this.fx) {
+          this.fx.finish();
+        }
+
+        return this;
+      },
+      // Pause current animation
+      pause: function pause() {
+        if (this.fx) {
+          this.fx.pause();
+        }
+
+        return this;
+      },
+      // Play paused current animation
+      play: function play() {
+        if (this.fx) {
+          this.fx.play();
+        }
+
+        return this;
+      },
+      // Set/Get the speed of the animations
+      speed: function speed(_speed2) {
+        if (this.fx) {
+          if (_speed2 == null) {
+            return this.fx.speed();
+          } else {
+            this.fx.speed(_speed2);
+          }
+        }
+
+        return this;
+      }
+    }
+  }); // MorphObj is used whenever no morphable object is given
+
+  SVG.MorphObj = SVG.invent({
+    create: function create(from, to) {
+      // prepare color for morphing
+      if (SVG.Color.isColor(to)) return new SVG.Color(from).morph(to); // check if we have a list of values
+
+      if (SVG.regex.delimiter.test(from)) {
+        // prepare path for morphing
+        if (SVG.regex.pathLetters.test(from)) return new SVG.PathArray(from).morph(to); // prepare value list for morphing
+        else return new SVG.Array(from).morph(to);
+      } // prepare number for morphing
+
+
+      if (SVG.regex.numberAndUnit.test(to)) return new SVG.Number(from).morph(to); // prepare for plain morphing
+
+      this.value = from;
+      this.destination = to;
+    },
+    extend: {
+      at: function at(pos, real) {
+        return real < 1 ? this.value : this.destination;
+      },
+      valueOf: function valueOf() {
+        return this.value;
+      }
+    }
+  });
+  SVG.extend(SVG.FX, {
+    // Add animatable attributes
+    attr: function attr(a, v, relative) {
+      // apply attributes individually
+      if (_typeof(a) === 'object') {
+        for (var key in a) {
+          this.attr(key, a[key]);
+        }
+      } else {
+        this.add(a, v, 'attrs');
+      }
+
+      return this;
+    },
+    // Add animatable styles
+    style: function style(s, v) {
+      if (_typeof(s) === 'object') {
+        for (var key in s) {
+          this.style(key, s[key]);
+        }
+      } else {
+        this.add(s, v, 'styles');
+      }
+
+      return this;
+    },
+    // Animatable x-axis
+    x: function x(_x2, relative) {
+      if (this.target() instanceof SVG.G) {
+        this.transform({
+          x: _x2
+        }, relative);
+        return this;
+      }
+
+      var num = new SVG.Number(_x2);
+      num.relative = relative;
+      return this.add('x', num);
+    },
+    // Animatable y-axis
+    y: function y(_y2, relative) {
+      if (this.target() instanceof SVG.G) {
+        this.transform({
+          y: _y2
+        }, relative);
+        return this;
+      }
+
+      var num = new SVG.Number(_y2);
+      num.relative = relative;
+      return this.add('y', num);
+    },
+    // Animatable center x-axis
+    cx: function cx(x) {
+      return this.add('cx', new SVG.Number(x));
+    },
+    // Animatable center y-axis
+    cy: function cy(y) {
+      return this.add('cy', new SVG.Number(y));
+    },
+    // Add animatable move
+    move: function move(x, y) {
+      return this.x(x).y(y);
+    },
+    // Add animatable center
+    center: function center(x, y) {
+      return this.cx(x).cy(y);
+    },
+    // Add animatable size
+    size: function size(width, height) {
+      if (this.target() instanceof SVG.Text) {
+        // animate font size for Text elements
+        this.attr('font-size', width);
+      } else {
+        // animate bbox based size for all other elements
+        var box;
+
+        if (!width || !height) {
+          box = this.target().bbox();
+        }
+
+        if (!width) {
+          width = box.width / box.height * height;
+        }
+
+        if (!height) {
+          height = box.height / box.width * width;
+        }
+
+        this.add('width', new SVG.Number(width)).add('height', new SVG.Number(height));
+      }
+
+      return this;
+    },
+    // Add animatable width
+    width: function width(_width2) {
+      return this.add('width', new SVG.Number(_width2));
+    },
+    // Add animatable height
+    height: function height(_height2) {
+      return this.add('height', new SVG.Number(_height2));
+    },
+    // Add animatable plot
+    plot: function plot(a, b, c, d) {
+      // Lines can be plotted with 4 arguments
+      if (arguments.length == 4) {
+        return this.plot([a, b, c, d]);
+      }
+
+      return this.add('plot', new (this.target().morphArray)(a));
+    },
+    // Add leading method
+    leading: function leading(value) {
+      return this.target().leading ? this.add('leading', new SVG.Number(value)) : this;
+    },
+    // Add animatable viewbox
+    viewbox: function viewbox(x, y, width, height) {
+      if (this.target() instanceof SVG.Container) {
+        this.add('viewbox', new SVG.ViewBox(x, y, width, height));
+      }
+
+      return this;
+    },
+    update: function update(o) {
+      if (this.target() instanceof SVG.Stop) {
+        if (typeof o === 'number' || o instanceof SVG.Number) {
+          return this.update({
+            offset: arguments[0],
+            color: arguments[1],
+            opacity: arguments[2]
+          });
+        }
+
+        if (o.opacity != null) this.attr('stop-opacity', o.opacity);
+        if (o.color != null) this.attr('stop-color', o.color);
+        if (o.offset != null) this.attr('offset', o.offset);
+      }
+
+      return this;
+    }
+  });
+  SVG.Box = SVG.invent({
+    create: function create(x, y, width, height) {
+      if (_typeof(x) === 'object' && !(x instanceof SVG.Element)) {
+        // chromes getBoundingClientRect has no x and y property
+        return SVG.Box.call(this, x.left != null ? x.left : x.x, x.top != null ? x.top : x.y, x.width, x.height);
+      } else if (arguments.length == 4) {
+        this.x = x;
+        this.y = y;
+        this.width = width;
+        this.height = height;
+      } // add center, right, bottom...
+
+
+      fullBox(this);
+    },
+    extend: {
+      // Merge rect box with another, return a new instance
+      merge: function merge(box) {
+        var b = new this.constructor(); // merge boxes
+
+        b.x = Math.min(this.x, box.x);
+        b.y = Math.min(this.y, box.y);
+        b.width = Math.max(this.x + this.width, box.x + box.width) - b.x;
+        b.height = Math.max(this.y + this.height, box.y + box.height) - b.y;
+        return fullBox(b);
+      },
+      transform: function transform(m) {
+        var xMin = Infinity,
+            xMax = -Infinity,
+            yMin = Infinity,
+            yMax = -Infinity,
+            bbox;
+        var pts = [new SVG.Point(this.x, this.y), new SVG.Point(this.x2, this.y), new SVG.Point(this.x, this.y2), new SVG.Point(this.x2, this.y2)];
+        pts.forEach(function (p) {
+          p = p.transform(m);
+          xMin = Math.min(xMin, p.x);
+          xMax = Math.max(xMax, p.x);
+          yMin = Math.min(yMin, p.y);
+          yMax = Math.max(yMax, p.y);
+        });
+        bbox = new this.constructor();
+        bbox.x = xMin;
+        bbox.width = xMax - xMin;
+        bbox.y = yMin;
+        bbox.height = yMax - yMin;
+        fullBox(bbox);
+        return bbox;
+      }
+    }
+  });
+  SVG.BBox = SVG.invent({
+    // Initialize
+    create: function create(element) {
+      SVG.Box.apply(this, [].slice.call(arguments)); // get values if element is given
+
+      if (element instanceof SVG.Element) {
+        var box; // yes this is ugly, but Firefox can be a pain when it comes to elements that are not yet rendered
+
+        try {
+          if (!document.documentElement.contains) {
+            // This is IE - it does not support contains() for top-level SVGs
+            var topParent = element.node;
+
+            while (topParent.parentNode) {
+              topParent = topParent.parentNode;
+            }
+
+            if (topParent != document) throw new Error('Element not in the dom');
+          } // the element is NOT in the dom, throw error
+          // disabling the check below which fixes issue #76
+          // if (!document.documentElement.contains(element.node)) throw new Exception('Element not in the dom')
+          // find native bbox
+
+
+          box = element.node.getBBox();
+        } catch (e) {
+          if (element instanceof SVG.Shape) {
+            if (!SVG.parser.draw) {
+              // fixes apexcharts/vue-apexcharts #14
+              SVG.prepare();
+            }
+
+            var clone = element.clone(SVG.parser.draw.instance).show();
+            box = clone.node.getBBox();
+            clone.remove();
+          } else {
+            box = {
+              x: element.node.clientLeft,
+              y: element.node.clientTop,
+              width: element.node.clientWidth,
+              height: element.node.clientHeight
+            };
+          }
+        }
+
+        SVG.Box.call(this, box);
+      }
+    },
+    // Define ancestor
+    inherit: SVG.Box,
+    // Define Parent
+    parent: SVG.Element,
+    // Constructor
+    construct: {
+      // Get bounding box
+      bbox: function bbox() {
+        return new SVG.BBox(this);
+      }
+    }
+  });
+  SVG.BBox.prototype.constructor = SVG.BBox;
+  SVG.extend(SVG.Element, {
+    tbox: function tbox() {
+      console.warn('Use of TBox is deprecated and mapped to RBox. Use .rbox() instead.');
+      return this.rbox(this.doc());
+    }
+  });
+  SVG.RBox = SVG.invent({
+    // Initialize
+    create: function create(element) {
+      SVG.Box.apply(this, [].slice.call(arguments));
+
+      if (element instanceof SVG.Element) {
+        SVG.Box.call(this, element.node.getBoundingClientRect());
+      }
+    },
+    inherit: SVG.Box,
+    // define Parent
+    parent: SVG.Element,
+    extend: {
+      addOffset: function addOffset() {
+        // offset by window scroll position, because getBoundingClientRect changes when window is scrolled
+        this.x += window.pageXOffset;
+        this.y += window.pageYOffset;
+        return this;
+      }
+    },
+    // Constructor
+    construct: {
+      // Get rect box
+      rbox: function rbox(el) {
+        if (el) return new SVG.RBox(this).transform(el.screenCTM().inverse());
+        return new SVG.RBox(this).addOffset();
+      }
+    }
+  });
+  SVG.RBox.prototype.constructor = SVG.RBox;
+  SVG.Matrix = SVG.invent({
+    // Initialize
+    create: function create(source) {
+      var i,
+          base = arrayToMatrix([1, 0, 0, 1, 0, 0]); // ensure source as object
+
+      source = source instanceof SVG.Element ? source.matrixify() : typeof source === 'string' ? arrayToMatrix(source.split(SVG.regex.delimiter).map(parseFloat)) : arguments.length == 6 ? arrayToMatrix([].slice.call(arguments)) : Array.isArray(source) ? arrayToMatrix(source) : _typeof(source) === 'object' ? source : base; // merge source
+
+      for (i = abcdef.length - 1; i >= 0; --i) {
+        this[abcdef[i]] = source[abcdef[i]] != null ? source[abcdef[i]] : base[abcdef[i]];
+      }
+    },
+    // Add methods
+    extend: {
+      // Extract individual transformations
+      extract: function extract() {
+        // find delta transform points
+        var px = deltaTransformPoint(this, 0, 1),
+            py = deltaTransformPoint(this, 1, 0),
+            skewX = 180 / Math.PI * Math.atan2(px.y, px.x) - 90;
+        return {
+          // translation
+          x: this.e,
+          y: this.f,
+          transformedX: (this.e * Math.cos(skewX * Math.PI / 180) + this.f * Math.sin(skewX * Math.PI / 180)) / Math.sqrt(this.a * this.a + this.b * this.b),
+          transformedY: (this.f * Math.cos(skewX * Math.PI / 180) + this.e * Math.sin(-skewX * Math.PI / 180)) / Math.sqrt(this.c * this.c + this.d * this.d),
+          // skew
+          skewX: -skewX,
+          skewY: 180 / Math.PI * Math.atan2(py.y, py.x),
+          // scale
+          scaleX: Math.sqrt(this.a * this.a + this.b * this.b),
+          scaleY: Math.sqrt(this.c * this.c + this.d * this.d),
+          // rotation
+          rotation: skewX,
+          a: this.a,
+          b: this.b,
+          c: this.c,
+          d: this.d,
+          e: this.e,
+          f: this.f,
+          matrix: new SVG.Matrix(this)
+        };
+      },
+      // Clone matrix
+      clone: function clone() {
+        return new SVG.Matrix(this);
+      },
+      // Morph one matrix into another
+      morph: function morph(matrix) {
+        // store new destination
+        this.destination = new SVG.Matrix(matrix);
+        return this;
+      },
+      // Get morphed matrix at a given position
+      at: function at(pos) {
+        // make sure a destination is defined
+        if (!this.destination) return this; // calculate morphed matrix at a given position
+
+        var matrix = new SVG.Matrix({
+          a: this.a + (this.destination.a - this.a) * pos,
+          b: this.b + (this.destination.b - this.b) * pos,
+          c: this.c + (this.destination.c - this.c) * pos,
+          d: this.d + (this.destination.d - this.d) * pos,
+          e: this.e + (this.destination.e - this.e) * pos,
+          f: this.f + (this.destination.f - this.f) * pos
+        });
+        return matrix;
+      },
+      // Multiplies by given matrix
+      multiply: function multiply(matrix) {
+        return new SVG.Matrix(this.native().multiply(parseMatrix(matrix).native()));
+      },
+      // Inverses matrix
+      inverse: function inverse() {
+        return new SVG.Matrix(this.native().inverse());
+      },
+      // Translate matrix
+      translate: function translate(x, y) {
+        return new SVG.Matrix(this.native().translate(x || 0, y || 0));
+      },
+      // Scale matrix
+      scale: function scale(x, y, cx, cy) {
+        // support uniformal scale
+        if (arguments.length == 1) {
+          y = x;
+        } else if (arguments.length == 3) {
+          cy = cx;
+          cx = y;
+          y = x;
+        }
+
+        return this.around(cx, cy, new SVG.Matrix(x, 0, 0, y, 0, 0));
+      },
+      // Rotate matrix
+      rotate: function rotate(r, cx, cy) {
+        // convert degrees to radians
+        r = SVG.utils.radians(r);
+        return this.around(cx, cy, new SVG.Matrix(Math.cos(r), Math.sin(r), -Math.sin(r), Math.cos(r), 0, 0));
+      },
+      // Flip matrix on x or y, at a given offset
+      flip: function flip(a, o) {
+        return a == 'x' ? this.scale(-1, 1, o, 0) : a == 'y' ? this.scale(1, -1, 0, o) : this.scale(-1, -1, a, o != null ? o : a);
+      },
+      // Skew
+      skew: function skew(x, y, cx, cy) {
+        // support uniformal skew
+        if (arguments.length == 1) {
+          y = x;
+        } else if (arguments.length == 3) {
+          cy = cx;
+          cx = y;
+          y = x;
+        } // convert degrees to radians
+
+
+        x = SVG.utils.radians(x);
+        y = SVG.utils.radians(y);
+        return this.around(cx, cy, new SVG.Matrix(1, Math.tan(y), Math.tan(x), 1, 0, 0));
+      },
+      // SkewX
+      skewX: function skewX(x, cx, cy) {
+        return this.skew(x, 0, cx, cy);
+      },
+      // SkewY
+      skewY: function skewY(y, cx, cy) {
+        return this.skew(0, y, cx, cy);
+      },
+      // Transform around a center point
+      around: function around(cx, cy, matrix) {
+        return this.multiply(new SVG.Matrix(1, 0, 0, 1, cx || 0, cy || 0)).multiply(matrix).multiply(new SVG.Matrix(1, 0, 0, 1, -cx || 0, -cy || 0));
+      },
+      // Convert to native SVGMatrix
+      native: function native() {
+        // create new matrix
+        var matrix = SVG.parser.native.createSVGMatrix(); // update with current values
+
+        for (var i = abcdef.length - 1; i >= 0; i--) {
+          matrix[abcdef[i]] = this[abcdef[i]];
+        }
+
+        return matrix;
+      },
+      // Convert matrix to string
+      toString: function toString() {
+        // Construct the matrix directly, avoid values that are too small
+        return 'matrix(' + float32String(this.a) + ',' + float32String(this.b) + ',' + float32String(this.c) + ',' + float32String(this.d) + ',' + float32String(this.e) + ',' + float32String(this.f) + ')';
+      }
+    },
+    // Define parent
+    parent: SVG.Element,
+    // Add parent method
+    construct: {
+      // Get current matrix
+      ctm: function ctm() {
+        return new SVG.Matrix(this.node.getCTM());
+      },
+      // Get current screen matrix
+      screenCTM: function screenCTM() {
+        /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537
+           This is needed because FF does not return the transformation matrix
+           for the inner coordinate system when getScreenCTM() is called on nested svgs.
+           However all other Browsers do that */
+        if (this instanceof SVG.Nested) {
+          var rect = this.rect(1, 1);
+          var m = rect.node.getScreenCTM();
+          rect.remove();
+          return new SVG.Matrix(m);
+        }
+
+        return new SVG.Matrix(this.node.getScreenCTM());
+      }
+    }
+  });
+  SVG.Point = SVG.invent({
+    // Initialize
+    create: function create(x, y) {
+      var source,
+          base = {
+        x: 0,
+        y: 0 // ensure source as object
+
+      };
+      source = Array.isArray(x) ? {
+        x: x[0],
+        y: x[1]
+      } : _typeof(x) === 'object' ? {
+        x: x.x,
+        y: x.y
+      } : x != null ? {
+        x: x,
+        y: y != null ? y : x
+      } : base; // If y has no value, then x is used has its value
+      // merge source
+
+      this.x = source.x;
+      this.y = source.y;
+    },
+    // Add methods
+    extend: {
+      // Clone point
+      clone: function clone() {
+        return new SVG.Point(this);
+      },
+      // Morph one point into another
+      morph: function morph(x, y) {
+        // store new destination
+        this.destination = new SVG.Point(x, y);
+        return this;
+      },
+      // Get morphed point at a given position
+      at: function at(pos) {
+        // make sure a destination is defined
+        if (!this.destination) return this; // calculate morphed matrix at a given position
+
+        var point = new SVG.Point({
+          x: this.x + (this.destination.x - this.x) * pos,
+          y: this.y + (this.destination.y - this.y) * pos
+        });
+        return point;
+      },
+      // Convert to native SVGPoint
+      native: function native() {
+        // create new point
+        var point = SVG.parser.native.createSVGPoint(); // update with current values
+
+        point.x = this.x;
+        point.y = this.y;
+        return point;
+      },
+      // transform point with matrix
+      transform: function transform(matrix) {
+        return new SVG.Point(this.native().matrixTransform(matrix.native()));
+      }
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Get point
+    point: function point(x, y) {
+      return new SVG.Point(x, y).transform(this.screenCTM().inverse());
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Set svg element attribute
+    attr: function attr(a, v, n) {
+      // act as full getter
+      if (a == null) {
+        // get an object of attributes
+        a = {};
+        v = this.node.attributes;
+
+        for (n = v.length - 1; n >= 0; n--) {
+          a[v[n].nodeName] = SVG.regex.isNumber.test(v[n].nodeValue) ? parseFloat(v[n].nodeValue) : v[n].nodeValue;
+        }
+
+        return a;
+      } else if (_typeof(a) === 'object') {
+        // apply every attribute individually if an object is passed
+        for (v in a) {
+          this.attr(v, a[v]);
+        }
+      } else if (v === null) {
+        // remove value
+        this.node.removeAttribute(a);
+      } else if (v == null) {
+        // act as a getter if the first and only argument is not an object
+        v = this.node.getAttribute(a);
+        return v == null ? SVG.defaults.attrs[a] : SVG.regex.isNumber.test(v) ? parseFloat(v) : v;
+      } else {
+        // BUG FIX: some browsers will render a stroke if a color is given even though stroke width is 0
+        if (a == 'stroke-width') {
+          this.attr('stroke', parseFloat(v) > 0 ? this._stroke : null);
+        } else if (a == 'stroke') {
+          this._stroke = v;
+        } // convert image fill and stroke to patterns
+
+
+        if (a == 'fill' || a == 'stroke') {
+          if (SVG.regex.isImage.test(v)) {
+            v = this.doc().defs().image(v, 0, 0);
+          }
+
+          if (v instanceof SVG.Image) {
+            v = this.doc().defs().pattern(0, 0, function () {
+              this.add(v);
+            });
+          }
+        } // ensure correct numeric values (also accepts NaN and Infinity)
+
+
+        if (typeof v === 'number') {
+          v = new SVG.Number(v);
+        } // ensure full hex color
+        else if (SVG.Color.isColor(v)) {
+            v = new SVG.Color(v);
+          } // parse array values
+          else if (Array.isArray(v)) {
+              v = new SVG.Array(v);
+            } // if the passed attribute is leading...
+
+
+        if (a == 'leading') {
+          // ... call the leading method instead
+          if (this.leading) {
+            this.leading(v);
+          }
+        } else {
+          // set given attribute on node
+          typeof n === 'string' ? this.node.setAttributeNS(n, a, v.toString()) : this.node.setAttribute(a, v.toString());
+        } // rebuild if required
+
+
+        if (this.rebuild && (a == 'font-size' || a == 'x')) {
+          this.rebuild(a, v);
+        }
+      }
+
+      return this;
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Add transformations
+    transform: function transform(o, relative) {
+      // get target in case of the fx module, otherwise reference this
+      var target = this,
+          matrix,
+          bbox; // act as a getter
+
+      if (_typeof(o) !== 'object') {
+        // get current matrix
+        matrix = new SVG.Matrix(target).extract();
+        return typeof o === 'string' ? matrix[o] : matrix;
+      } // get current matrix
+
+
+      matrix = new SVG.Matrix(target); // ensure relative flag
+
+      relative = !!relative || !!o.relative; // act on matrix
+
+      if (o.a != null) {
+        matrix = relative // relative
+        ? matrix.multiply(new SVG.Matrix(o)) // absolute
+        : new SVG.Matrix(o); // act on rotation
+      } else if (o.rotation != null) {
+        // ensure centre point
+        ensureCentre(o, target); // apply transformation
+
+        matrix = relative // relative
+        ? matrix.rotate(o.rotation, o.cx, o.cy) // absolute
+        : matrix.rotate(o.rotation - matrix.extract().rotation, o.cx, o.cy); // act on scale
+      } else if (o.scale != null || o.scaleX != null || o.scaleY != null) {
+        // ensure centre point
+        ensureCentre(o, target); // ensure scale values on both axes
+
+        o.scaleX = o.scale != null ? o.scale : o.scaleX != null ? o.scaleX : 1;
+        o.scaleY = o.scale != null ? o.scale : o.scaleY != null ? o.scaleY : 1;
+
+        if (!relative) {
+          // absolute; multiply inversed values
+          var e = matrix.extract();
+          o.scaleX = o.scaleX * 1 / e.scaleX;
+          o.scaleY = o.scaleY * 1 / e.scaleY;
+        }
+
+        matrix = matrix.scale(o.scaleX, o.scaleY, o.cx, o.cy); // act on skew
+      } else if (o.skew != null || o.skewX != null || o.skewY != null) {
+        // ensure centre point
+        ensureCentre(o, target); // ensure skew values on both axes
+
+        o.skewX = o.skew != null ? o.skew : o.skewX != null ? o.skewX : 0;
+        o.skewY = o.skew != null ? o.skew : o.skewY != null ? o.skewY : 0;
+
+        if (!relative) {
+          // absolute; reset skew values
+          var e = matrix.extract();
+          matrix = matrix.multiply(new SVG.Matrix().skew(e.skewX, e.skewY, o.cx, o.cy).inverse());
+        }
+
+        matrix = matrix.skew(o.skewX, o.skewY, o.cx, o.cy); // act on flip
+      } else if (o.flip) {
+        if (o.flip == 'x' || o.flip == 'y') {
+          o.offset = o.offset == null ? target.bbox()['c' + o.flip] : o.offset;
+        } else {
+          if (o.offset == null) {
+            bbox = target.bbox();
+            o.flip = bbox.cx;
+            o.offset = bbox.cy;
+          } else {
+            o.flip = o.offset;
+          }
+        }
+
+        matrix = new SVG.Matrix().flip(o.flip, o.offset); // act on translate
+      } else if (o.x != null || o.y != null) {
+        if (relative) {
+          // relative
+          matrix = matrix.translate(o.x, o.y);
+        } else {
+          // absolute
+          if (o.x != null) matrix.e = o.x;
+          if (o.y != null) matrix.f = o.y;
+        }
+      }
+
+      return this.attr('transform', matrix);
+    }
+  });
+  SVG.extend(SVG.FX, {
+    transform: function transform(o, relative) {
+      // get target in case of the fx module, otherwise reference this
+      var target = this.target(),
+          matrix,
+          bbox; // act as a getter
+
+      if (_typeof(o) !== 'object') {
+        // get current matrix
+        matrix = new SVG.Matrix(target).extract();
+        return typeof o === 'string' ? matrix[o] : matrix;
+      } // ensure relative flag
+
+
+      relative = !!relative || !!o.relative; // act on matrix
+
+      if (o.a != null) {
+        matrix = new SVG.Matrix(o); // act on rotation
+      } else if (o.rotation != null) {
+        // ensure centre point
+        ensureCentre(o, target); // apply transformation
+
+        matrix = new SVG.Rotate(o.rotation, o.cx, o.cy); // act on scale
+      } else if (o.scale != null || o.scaleX != null || o.scaleY != null) {
+        // ensure centre point
+        ensureCentre(o, target); // ensure scale values on both axes
+
+        o.scaleX = o.scale != null ? o.scale : o.scaleX != null ? o.scaleX : 1;
+        o.scaleY = o.scale != null ? o.scale : o.scaleY != null ? o.scaleY : 1;
+        matrix = new SVG.Scale(o.scaleX, o.scaleY, o.cx, o.cy); // act on skew
+      } else if (o.skewX != null || o.skewY != null) {
+        // ensure centre point
+        ensureCentre(o, target); // ensure skew values on both axes
+
+        o.skewX = o.skewX != null ? o.skewX : 0;
+        o.skewY = o.skewY != null ? o.skewY : 0;
+        matrix = new SVG.Skew(o.skewX, o.skewY, o.cx, o.cy); // act on flip
+      } else if (o.flip) {
+        if (o.flip == 'x' || o.flip == 'y') {
+          o.offset = o.offset == null ? target.bbox()['c' + o.flip] : o.offset;
+        } else {
+          if (o.offset == null) {
+            bbox = target.bbox();
+            o.flip = bbox.cx;
+            o.offset = bbox.cy;
+          } else {
+            o.flip = o.offset;
+          }
+        }
+
+        matrix = new SVG.Matrix().flip(o.flip, o.offset); // act on translate
+      } else if (o.x != null || o.y != null) {
+        matrix = new SVG.Translate(o.x, o.y);
+      }
+
+      if (!matrix) return this;
+      matrix.relative = relative;
+      this.last().transforms.push(matrix);
+      return this._callStart();
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Reset all transformations
+    untransform: function untransform() {
+      return this.attr('transform', null);
+    },
+    // merge the whole transformation chain into one matrix and returns it
+    matrixify: function matrixify() {
+      var matrix = (this.attr('transform') || ''). // split transformations
+      split(SVG.regex.transforms).slice(0, -1).map(function (str) {
+        // generate key => value pairs
+        var kv = str.trim().split('(');
+        return [kv[0], kv[1].split(SVG.regex.delimiter).map(function (str) {
+          return parseFloat(str);
+        })];
+      }) // merge every transformation into one matrix
+      .reduce(function (matrix, transform) {
+        if (transform[0] == 'matrix') return matrix.multiply(arrayToMatrix(transform[1]));
+        return matrix[transform[0]].apply(matrix, transform[1]);
+      }, new SVG.Matrix());
+      return matrix;
+    },
+    // add an element to another parent without changing the visual representation on the screen
+    toParent: function toParent(parent) {
+      if (this == parent) return this;
+      var ctm = this.screenCTM();
+      var pCtm = parent.screenCTM().inverse();
+      this.addTo(parent).untransform().transform(pCtm.multiply(ctm));
+      return this;
+    },
+    // same as above with parent equals root-svg
+    toDoc: function toDoc() {
+      return this.toParent(this.doc());
+    }
+  });
+  SVG.Transformation = SVG.invent({
+    create: function create(source, inversed) {
+      if (arguments.length > 1 && typeof inversed !== 'boolean') {
+        return this.constructor.call(this, [].slice.call(arguments));
+      }
+
+      if (Array.isArray(source)) {
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          this[this.arguments[i]] = source[i];
+        }
+      } else if (_typeof(source) === 'object') {
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          this[this.arguments[i]] = source[this.arguments[i]];
+        }
+      }
+
+      this.inversed = false;
+
+      if (inversed === true) {
+        this.inversed = true;
+      }
+    },
+    extend: {
+      arguments: [],
+      method: '',
+      at: function at(pos) {
+        var params = [];
+
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          params.push(this[this.arguments[i]]);
+        }
+
+        var m = this._undo || new SVG.Matrix();
+        m = new SVG.Matrix().morph(SVG.Matrix.prototype[this.method].apply(m, params)).at(pos);
+        return this.inversed ? m.inverse() : m;
+      },
+      undo: function undo(o) {
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          o[this.arguments[i]] = typeof this[this.arguments[i]] === 'undefined' ? 0 : o[this.arguments[i]];
+        } // The method SVG.Matrix.extract which was used before calling this
+        // method to obtain a value for the parameter o doesn't return a cx and
+        // a cy so we use the ones that were provided to this object at its creation
+
+
+        o.cx = this.cx;
+        o.cy = this.cy;
+        this._undo = new SVG[capitalize(this.method)](o, true).at(1);
+        return this;
+      }
+    }
+  });
+  SVG.Translate = SVG.invent({
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+    extend: {
+      arguments: ['transformedX', 'transformedY'],
+      method: 'translate'
+    }
+  });
+  SVG.Rotate = SVG.invent({
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+    extend: {
+      arguments: ['rotation', 'cx', 'cy'],
+      method: 'rotate',
+      at: function at(pos) {
+        var m = new SVG.Matrix().rotate(new SVG.Number().morph(this.rotation - (this._undo ? this._undo.rotation : 0)).at(pos), this.cx, this.cy);
+        return this.inversed ? m.inverse() : m;
+      },
+      undo: function undo(o) {
+        this._undo = o;
+        return this;
+      }
+    }
+  });
+  SVG.Scale = SVG.invent({
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+    extend: {
+      arguments: ['scaleX', 'scaleY', 'cx', 'cy'],
+      method: 'scale'
+    }
+  });
+  SVG.Skew = SVG.invent({
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+    extend: {
+      arguments: ['skewX', 'skewY', 'cx', 'cy'],
+      method: 'skew'
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Dynamic style generator
+    style: function style(s, v) {
+      if (arguments.length == 0) {
+        // get full style
+        return this.node.style.cssText || '';
+      } else if (arguments.length < 2) {
+        // apply every style individually if an object is passed
+        if (_typeof(s) === 'object') {
+          for (v in s) {
+            this.style(v, s[v]);
+          }
+        } else if (SVG.regex.isCss.test(s)) {
+          // parse css string
+          s = s.split(/\s*;\s*/) // filter out suffix ; and stuff like ;;
+          .filter(function (e) {
+            return !!e;
+          }).map(function (e) {
+            return e.split(/\s*:\s*/);
+          }); // apply every definition individually
+
+          while (v = s.pop()) {
+            this.style(v[0], v[1]);
+          }
+        } else {
+          // act as a getter if the first and only argument is not an object
+          return this.node.style[camelCase(s)];
+        }
+      } else {
+        this.node.style[camelCase(s)] = v === null || SVG.regex.isBlank.test(v) ? '' : v;
+      }
+
+      return this;
+    }
+  });
+  SVG.Parent = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      this.constructor.call(this, element);
+    },
+    // Inherit from
+    inherit: SVG.Element,
+    // Add class methods
+    extend: {
+      // Returns all child elements
+      children: function children() {
+        return SVG.utils.map(SVG.utils.filterSVGElements(this.node.childNodes), function (node) {
+          return SVG.adopt(node);
+        });
+      },
+      // Add given element at a position
+      add: function add(element, i) {
+        if (i == null) {
+          this.node.appendChild(element.node);
+        } else if (element.node != this.node.childNodes[i]) {
+          this.node.insertBefore(element.node, this.node.childNodes[i]);
+        }
+
+        return this;
+      },
+      // Basically does the same as `add()` but returns the added element instead
+      put: function put(element, i) {
+        this.add(element, i);
+        return element;
+      },
+      // Checks if the given element is a child
+      has: function has(element) {
+        return this.index(element) >= 0;
+      },
+      // Gets index of given element
+      index: function index(element) {
+        return [].slice.call(this.node.childNodes).indexOf(element.node);
+      },
+      // Get a element at the given index
+      get: function get(i) {
+        return SVG.adopt(this.node.childNodes[i]);
+      },
+      // Get first child
+      first: function first() {
+        return this.get(0);
+      },
+      // Get the last child
+      last: function last() {
+        return this.get(this.node.childNodes.length - 1);
+      },
+      // Iterates over all children and invokes a given block
+      each: function each(block, deep) {
+        var i,
+            il,
+            children = this.children();
+
+        for (i = 0, il = children.length; i < il; i++) {
+          if (children[i] instanceof SVG.Element) {
+            block.apply(children[i], [i, children]);
+          }
+
+          if (deep && children[i] instanceof SVG.Container) {
+            children[i].each(block, deep);
+          }
+        }
+
+        return this;
+      },
+      // Remove a given child
+      removeElement: function removeElement(element) {
+        this.node.removeChild(element.node);
+        return this;
+      },
+      // Remove all elements in this container
+      clear: function clear() {
+        // remove children
+        while (this.node.hasChildNodes()) {
+          this.node.removeChild(this.node.lastChild);
+        } // remove defs reference
+
+
+        delete this._defs;
+        return this;
+      },
+      // Get defs
+      defs: function defs() {
+        return this.doc().defs();
+      }
+    }
+  });
+  SVG.extend(SVG.Parent, {
+    ungroup: function ungroup(parent, depth) {
+      if (depth === 0 || this instanceof SVG.Defs || this.node == SVG.parser.draw) return this;
+      parent = parent || (this instanceof SVG.Doc ? this : this.parent(SVG.Parent));
+      depth = depth || Infinity;
+      this.each(function () {
+        if (this instanceof SVG.Defs) return this;
+        if (this instanceof SVG.Parent) return this.ungroup(parent, depth - 1);
+        return this.toParent(parent);
+      });
+      this.node.firstChild || this.remove();
+      return this;
+    },
+    flatten: function flatten(parent, depth) {
+      return this.ungroup(parent, depth);
+    }
+  });
+  SVG.Container = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      this.constructor.call(this, element);
+    },
+    // Inherit from
+    inherit: SVG.Parent
+  });
+  SVG.ViewBox = SVG.invent({
+    create: function create(source) {
+      var base = [0, 0, 0, 0];
+      var x,
+          y,
+          width,
+          height,
+          box,
+          view,
+          we,
+          he,
+          wm = 1,
+          // width multiplier
+      hm = 1,
+          // height multiplier
+      reg = /[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/gi;
+
+      if (source instanceof SVG.Element) {
+        we = source;
+        he = source;
+        view = (source.attr('viewBox') || '').match(reg);
+        box = source.bbox; // get dimensions of current node
+
+        width = new SVG.Number(source.width());
+        height = new SVG.Number(source.height()); // find nearest non-percentual dimensions
+
+        while (width.unit == '%') {
+          wm *= width.value;
+          width = new SVG.Number(we instanceof SVG.Doc ? we.parent().offsetWidth : we.parent().width());
+          we = we.parent();
+        }
+
+        while (height.unit == '%') {
+          hm *= height.value;
+          height = new SVG.Number(he instanceof SVG.Doc ? he.parent().offsetHeight : he.parent().height());
+          he = he.parent();
+        } // ensure defaults
+
+
+        this.x = 0;
+        this.y = 0;
+        this.width = width * wm;
+        this.height = height * hm;
+        this.zoom = 1;
+
+        if (view) {
+          // get width and height from viewbox
+          x = parseFloat(view[0]);
+          y = parseFloat(view[1]);
+          width = parseFloat(view[2]);
+          height = parseFloat(view[3]); // calculate zoom accoring to viewbox
+
+          this.zoom = this.width / this.height > width / height ? this.height / height : this.width / width; // calculate real pixel dimensions on parent SVG.Doc element
+
+          this.x = x;
+          this.y = y;
+          this.width = width;
+          this.height = height;
+        }
+      } else {
+        // ensure source as object
+        source = typeof source === 'string' ? source.match(reg).map(function (el) {
+          return parseFloat(el);
+        }) : Array.isArray(source) ? source : _typeof(source) === 'object' ? [source.x, source.y, source.width, source.height] : arguments.length == 4 ? [].slice.call(arguments) : base;
+        this.x = source[0];
+        this.y = source[1];
+        this.width = source[2];
+        this.height = source[3];
+      }
+    },
+    extend: {
+      toString: function toString() {
+        return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height;
+      },
+      morph: function morph(x, y, width, height) {
+        this.destination = new SVG.ViewBox(x, y, width, height);
+        return this;
+      },
+      at: function at(pos) {
+        if (!this.destination) return this;
+        return new SVG.ViewBox([this.x + (this.destination.x - this.x) * pos, this.y + (this.destination.y - this.y) * pos, this.width + (this.destination.width - this.width) * pos, this.height + (this.destination.height - this.height) * pos]);
+      }
+    },
+    // Define parent
+    parent: SVG.Container,
+    // Add parent method
+    construct: {
+      // get/set viewbox
+      viewbox: function viewbox(x, y, width, height) {
+        if (arguments.length == 0) // act as a getter if there are no arguments
+          {
+            return new SVG.ViewBox(this);
+          } // otherwise act as a setter
+
+
+        return this.attr('viewBox', new SVG.ViewBox(x, y, width, height));
+      }
+    }
+  }) // Add events to elements
+  ;
+  ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'mousemove', // , 'mouseenter' -> not supported by IE
+  // , 'mouseleave' -> not supported by IE
+  'touchstart', 'touchmove', 'touchleave', 'touchend', 'touchcancel'].forEach(function (event) {
+    // add event to SVG.Element
+    SVG.Element.prototype[event] = function (f) {
+      // bind event to element rather than element node
+      SVG.on(this.node, event, f);
+      return this;
+    };
+  }); // Initialize listeners stack
+
+  SVG.listeners = [];
+  SVG.handlerMap = [];
+  SVG.listenerId = 0; // Add event binder in the SVG namespace
+
+  SVG.on = function (node, event, listener, binding, options) {
+    // create listener, get object-index
+    var l = listener.bind(binding || node.instance || node),
+        index = (SVG.handlerMap.indexOf(node) + 1 || SVG.handlerMap.push(node)) - 1,
+        ev = event.split('.')[0],
+        ns = event.split('.')[1] || '*'; // ensure valid object
+
+    SVG.listeners[index] = SVG.listeners[index] || {};
+    SVG.listeners[index][ev] = SVG.listeners[index][ev] || {};
+    SVG.listeners[index][ev][ns] = SVG.listeners[index][ev][ns] || {};
+
+    if (!listener._svgjsListenerId) {
+      listener._svgjsListenerId = ++SVG.listenerId;
+    } // reference listener
+
+
+    SVG.listeners[index][ev][ns][listener._svgjsListenerId] = l; // add listener
+
+    node.addEventListener(ev, l, options || false);
+  }; // Add event unbinder in the SVG namespace
+
+
+  SVG.off = function (node, event, listener) {
+    var index = SVG.handlerMap.indexOf(node),
+        ev = event && event.split('.')[0],
+        ns = event && event.split('.')[1],
+        namespace = '';
+    if (index == -1) return;
+
+    if (listener) {
+      if (typeof listener === 'function') listener = listener._svgjsListenerId;
+      if (!listener) return; // remove listener reference
+
+      if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns || '*']) {
+        // remove listener
+        node.removeEventListener(ev, SVG.listeners[index][ev][ns || '*'][listener], false);
+        delete SVG.listeners[index][ev][ns || '*'][listener];
+      }
+    } else if (ns && ev) {
+      // remove all listeners for a namespaced event
+      if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns]) {
+        for (listener in SVG.listeners[index][ev][ns]) {
+          SVG.off(node, [ev, ns].join('.'), listener);
+        }
+
+        delete SVG.listeners[index][ev][ns];
+      }
+    } else if (ns) {
+      // remove all listeners for a specific namespace
+      for (event in SVG.listeners[index]) {
+        for (namespace in SVG.listeners[index][event]) {
+          if (ns === namespace) {
+            SVG.off(node, [event, ns].join('.'));
+          }
+        }
+      }
+    } else if (ev) {
+      // remove all listeners for the event
+      if (SVG.listeners[index][ev]) {
+        for (namespace in SVG.listeners[index][ev]) {
+          SVG.off(node, [ev, namespace].join('.'));
+        }
+
+        delete SVG.listeners[index][ev];
+      }
+    } else {
+      // remove all listeners on a given node
+      for (event in SVG.listeners[index]) {
+        SVG.off(node, event);
+      }
+
+      delete SVG.listeners[index];
+      delete SVG.handlerMap[index];
+    }
+  }; //
+
+
+  SVG.extend(SVG.Element, {
+    // Bind given event to listener
+    on: function on(event, listener, binding, options) {
+      SVG.on(this.node, event, listener, binding, options);
+      return this;
+    },
+    // Unbind event from listener
+    off: function off(event, listener) {
+      SVG.off(this.node, event, listener);
+      return this;
+    },
+    // Fire given event
+    fire: function fire(event, data) {
+      // Dispatch event
+      if (event instanceof window.Event) {
+        this.node.dispatchEvent(event);
+      } else {
+        this.node.dispatchEvent(event = new SVG.CustomEvent(event, {
+          detail: data,
+          cancelable: true
+        }));
+      }
+
+      this._event = event;
+      return this;
+    },
+    event: function event() {
+      return this._event;
+    }
+  });
+  SVG.Defs = SVG.invent({
+    // Initialize node
+    create: 'defs',
+    // Inherit from
+    inherit: SVG.Container
+  });
+  SVG.G = SVG.invent({
+    // Initialize node
+    create: 'g',
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Move over x-axis
+      x: function x(_x3) {
+        return _x3 == null ? this.transform('x') : this.transform({
+          x: _x3 - this.x()
+        }, true);
+      },
+      // Move over y-axis
+      y: function y(_y3) {
+        return _y3 == null ? this.transform('y') : this.transform({
+          y: _y3 - this.y()
+        }, true);
+      },
+      // Move by center over x-axis
+      cx: function cx(x) {
+        return x == null ? this.gbox().cx : this.x(x - this.gbox().width / 2);
+      },
+      // Move by center over y-axis
+      cy: function cy(y) {
+        return y == null ? this.gbox().cy : this.y(y - this.gbox().height / 2);
+      },
+      gbox: function gbox() {
+        var bbox = this.bbox(),
+            trans = this.transform();
+        bbox.x += trans.x;
+        bbox.x2 += trans.x;
+        bbox.cx += trans.x;
+        bbox.y += trans.y;
+        bbox.y2 += trans.y;
+        bbox.cy += trans.y;
+        return bbox;
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a group element
+      group: function group() {
+        return this.put(new SVG.G());
+      }
+    }
+  });
+  SVG.Doc = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      if (element) {
+        // ensure the presence of a dom element
+        element = typeof element === 'string' ? document.getElementById(element) : element; // If the target is an svg element, use that element as the main wrapper.
+        // This allows svg.js to work with svg documents as well.
+
+        if (element.nodeName == 'svg') {
+          this.constructor.call(this, element);
+        } else {
+          this.constructor.call(this, SVG.create('svg'));
+          element.appendChild(this.node);
+          this.size('100%', '100%');
+        } // set svg element attributes and ensure defs node
+
+
+        this.namespace().defs();
+      }
+    },
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Add namespaces
+      namespace: function namespace() {
+        return this.attr({
+          xmlns: SVG.ns,
+          version: '1.1'
+        }).attr('xmlns:xlink', SVG.xlink, SVG.xmlns).attr('xmlns:svgjs', SVG.svgjs, SVG.xmlns);
+      },
+      // Creates and returns defs element
+      defs: function defs() {
+        if (!this._defs) {
+          var defs; // Find or create a defs element in this instance
+
+          if (defs = this.node.getElementsByTagName('defs')[0]) {
+            this._defs = SVG.adopt(defs);
+          } else {
+            this._defs = new SVG.Defs();
+          } // Make sure the defs node is at the end of the stack
+
+
+          this.node.appendChild(this._defs.node);
+        }
+
+        return this._defs;
+      },
+      // custom parent method
+      parent: function parent() {
+        if (!this.node.parentNode || this.node.parentNode.nodeName == '#document') return null;
+        return this.node.parentNode;
+      },
+      // Fix for possible sub-pixel offset. See:
+      // https://bugzilla.mozilla.org/show_bug.cgi?id=608812
+      spof: function spof() {
+        var pos = this.node.getScreenCTM();
+
+        if (pos) {
+          this.style('left', -pos.e % 1 + 'px').style('top', -pos.f % 1 + 'px');
+        }
+
+        return this;
+      },
+      // Removes the doc from the DOM
+      remove: function remove() {
+        if (this.parent()) {
+          this.parent().removeChild(this.node);
+        }
+
+        return this;
+      },
+      clear: function clear() {
+        // remove children
+        while (this.node.hasChildNodes()) {
+          this.node.removeChild(this.node.lastChild);
+        } // remove defs reference
+
+
+        delete this._defs; // add back parser
+
+        if (SVG.parser.draw && !SVG.parser.draw.parentNode) {
+          this.node.appendChild(SVG.parser.draw);
+        }
+
+        return this;
+      },
+      clone: function clone(parent) {
+        // write dom data to the dom so the clone can pickup the data
+        this.writeDataToDom(); // get reference to node
+
+        var node = this.node; // clone element and assign new id
+
+        var clone = assignNewId(node.cloneNode(true)); // insert the clone in the given parent or after myself
+
+        if (parent) {
+          (parent.node || parent).appendChild(clone.node);
+        } else {
+          node.parentNode.insertBefore(clone.node, node.nextSibling);
+        }
+
+        return clone;
+      }
+    }
+  }); // ### This module adds backward / forward functionality to elements.
+  //
+
+  SVG.extend(SVG.Element, {
+    // Get all siblings, including myself
+    siblings: function siblings() {
+      return this.parent().children();
+    },
+    // Get the curent position siblings
+    position: function position() {
+      return this.parent().index(this);
+    },
+    // Get the next element (will return null if there is none)
+    next: function next() {
+      return this.siblings()[this.position() + 1];
+    },
+    // Get the next element (will return null if there is none)
+    previous: function previous() {
+      return this.siblings()[this.position() - 1];
+    },
+    // Send given element one step forward
+    forward: function forward() {
+      var i = this.position() + 1,
+          p = this.parent(); // move node one step forward
+
+      p.removeElement(this).add(this, i); // make sure defs node is always at the top
+
+      if (p instanceof SVG.Doc) {
+        p.node.appendChild(p.defs().node);
+      }
+
+      return this;
+    },
+    // Send given element one step backward
+    backward: function backward() {
+      var i = this.position();
+
+      if (i > 0) {
+        this.parent().removeElement(this).add(this, i - 1);
+      }
+
+      return this;
+    },
+    // Send given element all the way to the front
+    front: function front() {
+      var p = this.parent(); // Move node forward
+
+      p.node.appendChild(this.node); // Make sure defs node is always at the top
+
+      if (p instanceof SVG.Doc) {
+        p.node.appendChild(p.defs().node);
+      }
+
+      return this;
+    },
+    // Send given element all the way to the back
+    back: function back() {
+      if (this.position() > 0) {
+        this.parent().removeElement(this).add(this, 0);
+      }
+
+      return this;
+    },
+    // Inserts a given element before the targeted element
+    before: function before(element) {
+      element.remove();
+      var i = this.position();
+      this.parent().add(element, i);
+      return this;
+    },
+    // Insters a given element after the targeted element
+    after: function after(element) {
+      element.remove();
+      var i = this.position();
+      this.parent().add(element, i + 1);
+      return this;
+    }
+  });
+  SVG.Mask = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('mask')); // keep references to masked elements
+
+      this.targets = [];
+    },
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Unmask all masked elements and remove itself
+      remove: function remove() {
+        // unmask all targets
+        for (var i = this.targets.length - 1; i >= 0; i--) {
+          if (this.targets[i]) {
+            this.targets[i].unmask();
+          }
+        }
+
+        this.targets = []; // remove mask from parent
+
+        SVG.Element.prototype.remove.call(this);
+        return this;
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create masking element
+      mask: function mask() {
+        return this.defs().put(new SVG.Mask());
+      }
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Distribute mask to svg element
+    maskWith: function maskWith(element) {
+      // use given mask or create a new one
+      this.masker = element instanceof SVG.Mask ? element : this.parent().mask().add(element); // store reverence on self in mask
+
+      this.masker.targets.push(this); // apply mask
+
+      return this.attr('mask', 'url("#' + this.masker.attr('id') + '")');
+    },
+    // Unmask element
+    unmask: function unmask() {
+      delete this.masker;
+      return this.attr('mask', null);
+    }
+  });
+  SVG.ClipPath = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('clipPath')); // keep references to clipped elements
+
+      this.targets = [];
+    },
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Unclip all clipped elements and remove itself
+      remove: function remove() {
+        // unclip all targets
+        for (var i = this.targets.length - 1; i >= 0; i--) {
+          if (this.targets[i]) {
+            this.targets[i].unclip();
+          }
+        }
+
+        this.targets = []; // remove clipPath from parent
+
+        this.parent().removeElement(this);
+        return this;
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create clipping element
+      clip: function clip() {
+        return this.defs().put(new SVG.ClipPath());
+      }
+    }
+  }); //
+
+  SVG.extend(SVG.Element, {
+    // Distribute clipPath to svg element
+    clipWith: function clipWith(element) {
+      // use given clip or create a new one
+      this.clipper = element instanceof SVG.ClipPath ? element : this.parent().clip().add(element); // store reverence on self in mask
+
+      this.clipper.targets.push(this); // apply mask
+
+      return this.attr('clip-path', 'url("#' + this.clipper.attr('id') + '")');
+    },
+    // Unclip element
+    unclip: function unclip() {
+      delete this.clipper;
+      return this.attr('clip-path', null);
+    }
+  });
+  SVG.Gradient = SVG.invent({
+    // Initialize node
+    create: function create(type) {
+      this.constructor.call(this, SVG.create(type + 'Gradient')); // store type
+
+      this.type = type;
+    },
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Add a color stop
+      at: function at(offset, color, opacity) {
+        return this.put(new SVG.Stop()).update(offset, color, opacity);
+      },
+      // Update gradient
+      update: function update(block) {
+        // remove all stops
+        this.clear(); // invoke passed block
+
+        if (typeof block === 'function') {
+          block.call(this, this);
+        }
+
+        return this;
+      },
+      // Return the fill id
+      fill: function fill() {
+        return 'url(#' + this.id() + ')';
+      },
+      // Alias string convertion to fill
+      toString: function toString() {
+        return this.fill();
+      },
+      // custom attr to handle transform
+      attr: function attr(a, b, c) {
+        if (a == 'transform') a = 'gradientTransform';
+        return SVG.Container.prototype.attr.call(this, a, b, c);
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create gradient element in defs
+      gradient: function gradient(type, block) {
+        return this.defs().gradient(type, block);
+      }
+    }
+  }); // Add animatable methods to both gradient and fx module
+
+  SVG.extend(SVG.Gradient, SVG.FX, {
+    // From position
+    from: function from(x, y) {
+      return (this._target || this).type == 'radial' ? this.attr({
+        fx: new SVG.Number(x),
+        fy: new SVG.Number(y)
+      }) : this.attr({
+        x1: new SVG.Number(x),
+        y1: new SVG.Number(y)
+      });
+    },
+    // To position
+    to: function to(x, y) {
+      return (this._target || this).type == 'radial' ? this.attr({
+        cx: new SVG.Number(x),
+        cy: new SVG.Number(y)
+      }) : this.attr({
+        x2: new SVG.Number(x),
+        y2: new SVG.Number(y)
+      });
+    }
+  }); // Base gradient generation
+
+  SVG.extend(SVG.Defs, {
+    // define gradient
+    gradient: function gradient(type, block) {
+      return this.put(new SVG.Gradient(type)).update(block);
+    }
+  });
+  SVG.Stop = SVG.invent({
+    // Initialize node
+    create: 'stop',
+    // Inherit from
+    inherit: SVG.Element,
+    // Add class methods
+    extend: {
+      // add color stops
+      update: function update(o) {
+        if (typeof o === 'number' || o instanceof SVG.Number) {
+          o = {
+            offset: arguments[0],
+            color: arguments[1],
+            opacity: arguments[2]
+          };
+        } // set attributes
+
+
+        if (o.opacity != null) this.attr('stop-opacity', o.opacity);
+        if (o.color != null) this.attr('stop-color', o.color);
+        if (o.offset != null) this.attr('offset', new SVG.Number(o.offset));
+        return this;
+      }
+    }
+  });
+  SVG.Pattern = SVG.invent({
+    // Initialize node
+    create: 'pattern',
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Return the fill id
+      fill: function fill() {
+        return 'url(#' + this.id() + ')';
+      },
+      // Update pattern by rebuilding
+      update: function update(block) {
+        // remove content
+        this.clear(); // invoke passed block
+
+        if (typeof block === 'function') {
+          block.call(this, this);
+        }
+
+        return this;
+      },
+      // Alias string convertion to fill
+      toString: function toString() {
+        return this.fill();
+      },
+      // custom attr to handle transform
+      attr: function attr(a, b, c) {
+        if (a == 'transform') a = 'patternTransform';
+        return SVG.Container.prototype.attr.call(this, a, b, c);
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create pattern element in defs
+      pattern: function pattern(width, height, block) {
+        return this.defs().pattern(width, height, block);
+      }
+    }
+  });
+  SVG.extend(SVG.Defs, {
+    // Define gradient
+    pattern: function pattern(width, height, block) {
+      return this.put(new SVG.Pattern()).update(block).attr({
+        x: 0,
+        y: 0,
+        width: width,
+        height: height,
+        patternUnits: 'userSpaceOnUse'
+      });
+    }
+  });
+  SVG.Shape = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      this.constructor.call(this, element);
+    },
+    // Inherit from
+    inherit: SVG.Element
+  });
+  SVG.Bare = SVG.invent({
+    // Initialize
+    create: function create(element, inherit) {
+      // construct element
+      this.constructor.call(this, SVG.create(element)); // inherit custom methods
+
+      if (inherit) {
+        for (var method in inherit.prototype) {
+          if (typeof inherit.prototype[method] === 'function') {
+            this[method] = inherit.prototype[method];
+          }
+        }
+      }
+    },
+    // Inherit from
+    inherit: SVG.Element,
+    // Add methods
+    extend: {
+      // Insert some plain text
+      words: function words(text) {
+        // remove contents
+        while (this.node.hasChildNodes()) {
+          this.node.removeChild(this.node.lastChild);
+        } // create text node
+
+
+        this.node.appendChild(document.createTextNode(text));
+        return this;
+      }
+    }
+  });
+  SVG.extend(SVG.Parent, {
+    // Create an element that is not described by SVG.js
+    element: function element(_element, inherit) {
+      return this.put(new SVG.Bare(_element, inherit));
+    }
+  });
+  SVG.Symbol = SVG.invent({
+    // Initialize node
+    create: 'symbol',
+    // Inherit from
+    inherit: SVG.Container,
+    construct: {
+      // create symbol
+      symbol: function symbol() {
+        return this.put(new SVG.Symbol());
+      }
+    }
+  });
+  SVG.Use = SVG.invent({
+    // Initialize node
+    create: 'use',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // Use element as a reference
+      element: function element(_element2, file) {
+        // Set lined element
+        return this.attr('href', (file || '') + '#' + _element2, SVG.xlink);
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a use element
+      use: function use(element, file) {
+        return this.put(new SVG.Use()).element(element, file);
+      }
+    }
+  });
+  SVG.Rect = SVG.invent({
+    // Initialize node
+    create: 'rect',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add parent method
+    construct: {
+      // Create a rect element
+      rect: function rect(width, height) {
+        return this.put(new SVG.Rect()).size(width, height);
+      }
+    }
+  });
+  SVG.Circle = SVG.invent({
+    // Initialize node
+    create: 'circle',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add parent method
+    construct: {
+      // Create circle element, based on ellipse
+      circle: function circle(size) {
+        return this.put(new SVG.Circle()).rx(new SVG.Number(size).divide(2)).move(0, 0);
+      }
+    }
+  });
+  SVG.extend(SVG.Circle, SVG.FX, {
+    // Radius x value
+    rx: function rx(_rx) {
+      return this.attr('r', _rx);
+    },
+    // Alias radius x value
+    ry: function ry(_ry) {
+      return this.rx(_ry);
+    }
+  });
+  SVG.Ellipse = SVG.invent({
+    // Initialize node
+    create: 'ellipse',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add parent method
+    construct: {
+      // Create an ellipse
+      ellipse: function ellipse(width, height) {
+        return this.put(new SVG.Ellipse()).size(width, height).move(0, 0);
+      }
+    }
+  });
+  SVG.extend(SVG.Ellipse, SVG.Rect, SVG.FX, {
+    // Radius x value
+    rx: function rx(_rx2) {
+      return this.attr('rx', _rx2);
+    },
+    // Radius y value
+    ry: function ry(_ry2) {
+      return this.attr('ry', _ry2);
+    }
+  }); // Add common method
+
+  SVG.extend(SVG.Circle, SVG.Ellipse, {
+    // Move over x-axis
+    x: function x(_x4) {
+      return _x4 == null ? this.cx() - this.rx() : this.cx(_x4 + this.rx());
+    },
+    // Move over y-axis
+    y: function y(_y4) {
+      return _y4 == null ? this.cy() - this.ry() : this.cy(_y4 + this.ry());
+    },
+    // Move by center over x-axis
+    cx: function cx(x) {
+      return x == null ? this.attr('cx') : this.attr('cx', x);
+    },
+    // Move by center over y-axis
+    cy: function cy(y) {
+      return y == null ? this.attr('cy') : this.attr('cy', y);
+    },
+    // Set width of element
+    width: function width(_width3) {
+      return _width3 == null ? this.rx() * 2 : this.rx(new SVG.Number(_width3).divide(2));
+    },
+    // Set height of element
+    height: function height(_height3) {
+      return _height3 == null ? this.ry() * 2 : this.ry(new SVG.Number(_height3).divide(2));
+    },
+    // Custom size function
+    size: function size(width, height) {
+      var p = proportionalSize(this, width, height);
+      return this.rx(new SVG.Number(p.width).divide(2)).ry(new SVG.Number(p.height).divide(2));
+    }
+  });
+  SVG.Line = SVG.invent({
+    // Initialize node
+    create: 'line',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // Get array
+      array: function array() {
+        return new SVG.PointArray([[this.attr('x1'), this.attr('y1')], [this.attr('x2'), this.attr('y2')]]);
+      },
+      // Overwrite native plot() method
+      plot: function plot(x1, y1, x2, y2) {
+        if (x1 == null) {
+          return this.array();
+        } else if (typeof y1 !== 'undefined') {
+          x1 = {
+            x1: x1,
+            y1: y1,
+            x2: x2,
+            y2: y2
+          };
+        } else {
+          x1 = new SVG.PointArray(x1).toLine();
+        }
+
+        return this.attr(x1);
+      },
+      // Move by left top corner
+      move: function move(x, y) {
+        return this.attr(this.array().move(x, y).toLine());
+      },
+      // Set element size to given width and height
+      size: function size(width, height) {
+        var p = proportionalSize(this, width, height);
+        return this.attr(this.array().size(p.width, p.height).toLine());
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a line element
+      line: function line(x1, y1, x2, y2) {
+        // make sure plot is called as a setter
+        // x1 is not necessarily a number, it can also be an array, a string and a SVG.PointArray
+        return SVG.Line.prototype.plot.apply(this.put(new SVG.Line()), x1 != null ? [x1, y1, x2, y2] : [0, 0, 0, 0]);
+      }
+    }
+  });
+  SVG.Polyline = SVG.invent({
+    // Initialize node
+    create: 'polyline',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add parent method
+    construct: {
+      // Create a wrapped polyline element
+      polyline: function polyline(p) {
+        // make sure plot is called as a setter
+        return this.put(new SVG.Polyline()).plot(p || new SVG.PointArray());
+      }
+    }
+  });
+  SVG.Polygon = SVG.invent({
+    // Initialize node
+    create: 'polygon',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add parent method
+    construct: {
+      // Create a wrapped polygon element
+      polygon: function polygon(p) {
+        // make sure plot is called as a setter
+        return this.put(new SVG.Polygon()).plot(p || new SVG.PointArray());
+      }
+    }
+  }); // Add polygon-specific functions
+
+  SVG.extend(SVG.Polyline, SVG.Polygon, {
+    // Get array
+    array: function array() {
+      return this._array || (this._array = new SVG.PointArray(this.attr('points')));
+    },
+    // Plot new path
+    plot: function plot(p) {
+      return p == null ? this.array() : this.clear().attr('points', typeof p === 'string' ? p : this._array = new SVG.PointArray(p));
+    },
+    // Clear array cache
+    clear: function clear() {
+      delete this._array;
+      return this;
+    },
+    // Move by left top corner
+    move: function move(x, y) {
+      return this.attr('points', this.array().move(x, y));
+    },
+    // Set element size to given width and height
+    size: function size(width, height) {
+      var p = proportionalSize(this, width, height);
+      return this.attr('points', this.array().size(p.width, p.height));
+    }
+  }); // unify all point to point elements
+
+  SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, {
+    // Define morphable array
+    morphArray: SVG.PointArray,
+    // Move by left top corner over x-axis
+    x: function x(_x5) {
+      return _x5 == null ? this.bbox().x : this.move(_x5, this.bbox().y);
+    },
+    // Move by left top corner over y-axis
+    y: function y(_y5) {
+      return _y5 == null ? this.bbox().y : this.move(this.bbox().x, _y5);
+    },
+    // Set width of element
+    width: function width(_width4) {
+      var b = this.bbox();
+      return _width4 == null ? b.width : this.size(_width4, b.height);
+    },
+    // Set height of element
+    height: function height(_height4) {
+      var b = this.bbox();
+      return _height4 == null ? b.height : this.size(b.width, _height4);
+    }
+  });
+  SVG.Path = SVG.invent({
+    // Initialize node
+    create: 'path',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // Define morphable array
+      morphArray: SVG.PathArray,
+      // Get array
+      array: function array() {
+        return this._array || (this._array = new SVG.PathArray(this.attr('d')));
+      },
+      // Plot new path
+      plot: function plot(d) {
+        return d == null ? this.array() : this.clear().attr('d', typeof d === 'string' ? d : this._array = new SVG.PathArray(d));
+      },
+      // Clear array cache
+      clear: function clear() {
+        delete this._array;
+        return this;
+      },
+      // Move by left top corner
+      move: function move(x, y) {
+        return this.attr('d', this.array().move(x, y));
+      },
+      // Move by left top corner over x-axis
+      x: function x(_x6) {
+        return _x6 == null ? this.bbox().x : this.move(_x6, this.bbox().y);
+      },
+      // Move by left top corner over y-axis
+      y: function y(_y6) {
+        return _y6 == null ? this.bbox().y : this.move(this.bbox().x, _y6);
+      },
+      // Set element size to given width and height
+      size: function size(width, height) {
+        var p = proportionalSize(this, width, height);
+        return this.attr('d', this.array().size(p.width, p.height));
+      },
+      // Set width of element
+      width: function width(_width5) {
+        return _width5 == null ? this.bbox().width : this.size(_width5, this.bbox().height);
+      },
+      // Set height of element
+      height: function height(_height5) {
+        return _height5 == null ? this.bbox().height : this.size(this.bbox().width, _height5);
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a wrapped path element
+      path: function path(d) {
+        // make sure plot is called as a setter
+        return this.put(new SVG.Path()).plot(d || new SVG.PathArray());
+      }
+    }
+  });
+  SVG.Image = SVG.invent({
+    // Initialize node
+    create: 'image',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // (re)load image
+      load: function load(url) {
+        if (!url) return this;
+        var self = this,
+            img = new window.Image(); // preload image
+
+        SVG.on(img, 'load', function () {
+          SVG.off(img);
+          var p = self.parent(SVG.Pattern);
+          if (p === null) return; // ensure image size
+
+          if (self.width() == 0 && self.height() == 0) {
+            self.size(img.width, img.height);
+          } // ensure pattern size if not set
+
+
+          if (p && p.width() == 0 && p.height() == 0) {
+            p.size(self.width(), self.height());
+          } // callback
+
+
+          if (typeof self._loaded === 'function') {
+            self._loaded.call(self, {
+              width: img.width,
+              height: img.height,
+              ratio: img.width / img.height,
+              url: url
+            });
+          }
+        });
+        SVG.on(img, 'error', function (e) {
+          SVG.off(img);
+
+          if (typeof self._error === 'function') {
+            self._error.call(self, e);
+          }
+        });
+        return this.attr('href', img.src = this.src = url, SVG.xlink);
+      },
+      // Add loaded callback
+      loaded: function loaded(_loaded) {
+        this._loaded = _loaded;
+        return this;
+      },
+      error: function error(_error) {
+        this._error = _error;
+        return this;
+      }
+    },
+    // Add parent method
+    construct: {
+      // create image element, load image and set its size
+      image: function image(source, width, height) {
+        return this.put(new SVG.Image()).load(source).size(width || 0, height || width || 0);
+      }
+    }
+  });
+  SVG.Text = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('text'));
+      this.dom.leading = new SVG.Number(1.3); // store leading value for rebuilding
+
+      this._rebuild = true; // enable automatic updating of dy values
+
+      this._build = false; // disable build mode for adding multiple lines
+      // set default font
+
+      this.attr('font-family', SVG.defaults.attrs['font-family']);
+    },
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // Move over x-axis
+      x: function x(_x7) {
+        // act as getter
+        if (_x7 == null) {
+          return this.attr('x');
+        }
+
+        return this.attr('x', _x7);
+      },
+      // Move over y-axis
+      y: function y(_y7) {
+        var oy = this.attr('y'),
+            o = typeof oy === 'number' ? oy - this.bbox().y : 0; // act as getter
+
+        if (_y7 == null) {
+          return typeof oy === 'number' ? oy - o : oy;
+        }
+
+        return this.attr('y', typeof _y7.valueOf() === 'number' ? _y7 + o : _y7);
+      },
+      // Move center over x-axis
+      cx: function cx(x) {
+        return x == null ? this.bbox().cx : this.x(x - this.bbox().width / 2);
+      },
+      // Move center over y-axis
+      cy: function cy(y) {
+        return y == null ? this.bbox().cy : this.y(y - this.bbox().height / 2);
+      },
+      // Set the text content
+      text: function text(_text) {
+        // act as getter
+        if (typeof _text === 'undefined') {
+          var _text = '';
+          var children = this.node.childNodes;
+
+          for (var i = 0, len = children.length; i < len; ++i) {
+            // add newline if its not the first child and newLined is set to true
+            if (i != 0 && children[i].nodeType != 3 && SVG.adopt(children[i]).dom.newLined == true) {
+              _text += '\n';
+            } // add content of this node
+
+
+            _text += children[i].textContent;
+          }
+
+          return _text;
+        } // remove existing content
+
+
+        this.clear().build(true);
+
+        if (typeof _text === 'function') {
+          // call block
+          _text.call(this, this);
+        } else {
+          // store text and make sure text is not blank
+          _text = _text.split('\n'); // build new lines
+
+          for (var i = 0, il = _text.length; i < il; i++) {
+            this.tspan(_text[i]).newLine();
+          }
+        } // disable build mode and rebuild lines
+
+
+        return this.build(false).rebuild();
+      },
+      // Set font size
+      size: function size(_size) {
+        return this.attr('font-size', _size).rebuild();
+      },
+      // Set / get leading
+      leading: function leading(value) {
+        // act as getter
+        if (value == null) {
+          return this.dom.leading;
+        } // act as setter
+
+
+        this.dom.leading = new SVG.Number(value);
+        return this.rebuild();
+      },
+      // Get all the first level lines
+      lines: function lines() {
+        var node = (this.textPath && this.textPath() || this).node; // filter tspans and map them to SVG.js instances
+
+        var lines = SVG.utils.map(SVG.utils.filterSVGElements(node.childNodes), function (el) {
+          return SVG.adopt(el);
+        }); // return an instance of SVG.set
+
+        return new SVG.Set(lines);
+      },
+      // Rebuild appearance type
+      rebuild: function rebuild(_rebuild) {
+        // store new rebuild flag if given
+        if (typeof _rebuild === 'boolean') {
+          this._rebuild = _rebuild;
+        } // define position of all lines
+
+
+        if (this._rebuild) {
+          var self = this,
+              blankLineOffset = 0,
+              dy = this.dom.leading * new SVG.Number(this.attr('font-size'));
+          this.lines().each(function () {
+            if (this.dom.newLined) {
+              if (!self.textPath()) {
+                this.attr('x', self.attr('x'));
+              }
+
+              if (this.text() == '\n') {
+                blankLineOffset += dy;
+              } else {
+                this.attr('dy', dy + blankLineOffset);
+                blankLineOffset = 0;
+              }
+            }
+          });
+          this.fire('rebuild');
+        }
+
+        return this;
+      },
+      // Enable / disable build mode
+      build: function build(_build) {
+        this._build = !!_build;
+        return this;
+      },
+      // overwrite method from parent to set data properly
+      setData: function setData(o) {
+        this.dom = o;
+        this.dom.leading = new SVG.Number(o.leading || 1.3);
+        return this;
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create text element
+      text: function text(_text2) {
+        return this.put(new SVG.Text()).text(_text2);
+      },
+      // Create plain text element
+      plain: function plain(text) {
+        return this.put(new SVG.Text()).plain(text);
+      }
+    }
+  });
+  SVG.Tspan = SVG.invent({
+    // Initialize node
+    create: 'tspan',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // Set text content
+      text: function text(_text3) {
+        if (_text3 == null) return this.node.textContent + (this.dom.newLined ? '\n' : '');
+        typeof _text3 === 'function' ? _text3.call(this, this) : this.plain(_text3);
+        return this;
+      },
+      // Shortcut dx
+      dx: function dx(_dx) {
+        return this.attr('dx', _dx);
+      },
+      // Shortcut dy
+      dy: function dy(_dy) {
+        return this.attr('dy', _dy);
+      },
+      // Create new line
+      newLine: function newLine() {
+        // fetch text parent
+        var t = this.parent(SVG.Text); // mark new line
+
+        this.dom.newLined = true; // apply new hy¡n
+
+        return this.dy(t.dom.leading * t.attr('font-size')).attr('x', t.x());
+      }
+    }
+  });
+  SVG.extend(SVG.Text, SVG.Tspan, {
+    // Create plain text node
+    plain: function plain(text) {
+      // clear if build mode is disabled
+      if (this._build === false) {
+        this.clear();
+      } // create text node
+
+
+      this.node.appendChild(document.createTextNode(text));
+      return this;
+    },
+    // Create a tspan
+    tspan: function tspan(text) {
+      var node = (this.textPath && this.textPath() || this).node,
+          tspan = new SVG.Tspan(); // clear if build mode is disabled
+
+      if (this._build === false) {
+        this.clear();
+      } // add new tspan
+
+
+      node.appendChild(tspan.node);
+      return tspan.text(text);
+    },
+    // Clear all lines
+    clear: function clear() {
+      var node = (this.textPath && this.textPath() || this).node; // remove existing child nodes
+
+      while (node.hasChildNodes()) {
+        node.removeChild(node.lastChild);
+      }
+
+      return this;
+    },
+    // Get length of text element
+    length: function length() {
+      return this.node.getComputedTextLength();
+    }
+  });
+  SVG.TextPath = SVG.invent({
+    // Initialize node
+    create: 'textPath',
+    // Inherit from
+    inherit: SVG.Parent,
+    // Define parent class
+    parent: SVG.Text,
+    // Add parent method
+    construct: {
+      morphArray: SVG.PathArray,
+      // Create path for text to run on
+      path: function path(d) {
+        // create textPath element
+        var path = new SVG.TextPath(),
+            track = this.doc().defs().path(d); // move lines to textpath
+
+        while (this.node.hasChildNodes()) {
+          path.node.appendChild(this.node.firstChild);
+        } // add textPath element as child node
+
+
+        this.node.appendChild(path.node); // link textPath to path and add content
+
+        path.attr('href', '#' + track, SVG.xlink);
+        return this;
+      },
+      // return the array of the path track element
+      array: function array() {
+        var track = this.track();
+        return track ? track.array() : null;
+      },
+      // Plot path if any
+      plot: function plot(d) {
+        var track = this.track(),
+            pathArray = null;
+
+        if (track) {
+          pathArray = track.plot(d);
+        }
+
+        return d == null ? pathArray : this;
+      },
+      // Get the path track element
+      track: function track() {
+        var path = this.textPath();
+
+        if (path) {
+          return path.reference('href');
+        }
+      },
+      // Get the textPath child
+      textPath: function textPath() {
+        if (this.node.firstChild && this.node.firstChild.nodeName == 'textPath') {
+          return SVG.adopt(this.node.firstChild);
+        }
+      }
+    }
+  });
+  SVG.Nested = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('svg'));
+      this.style('overflow', 'visible');
+    },
+    // Inherit from
+    inherit: SVG.Container,
+    // Add parent method
+    construct: {
+      // Create nested svg document
+      nested: function nested() {
+        return this.put(new SVG.Nested());
+      }
+    }
+  });
+  SVG.A = SVG.invent({
+    // Initialize node
+    create: 'a',
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Link url
+      to: function to(url) {
+        return this.attr('href', url, SVG.xlink);
+      },
+      // Link show attribute
+      show: function show(target) {
+        return this.attr('show', target, SVG.xlink);
+      },
+      // Link target attribute
+      target: function target(_target2) {
+        return this.attr('target', _target2);
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a hyperlink element
+      link: function link(url) {
+        return this.put(new SVG.A()).to(url);
+      }
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Create a hyperlink element
+    linkTo: function linkTo(url) {
+      var link = new SVG.A();
+
+      if (typeof url === 'function') {
+        url.call(link, link);
+      } else {
+        link.to(url);
+      }
+
+      return this.parent().put(link).put(this);
+    }
+  });
+  SVG.Marker = SVG.invent({
+    // Initialize node
+    create: 'marker',
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Set width of element
+      width: function width(_width6) {
+        return this.attr('markerWidth', _width6);
+      },
+      // Set height of element
+      height: function height(_height6) {
+        return this.attr('markerHeight', _height6);
+      },
+      // Set marker refX and refY
+      ref: function ref(x, y) {
+        return this.attr('refX', x).attr('refY', y);
+      },
+      // Update marker
+      update: function update(block) {
+        // remove all content
+        this.clear(); // invoke passed block
+
+        if (typeof block === 'function') {
+          block.call(this, this);
+        }
+
+        return this;
+      },
+      // Return the fill id
+      toString: function toString() {
+        return 'url(#' + this.id() + ')';
+      }
+    },
+    // Add parent method
+    construct: {
+      marker: function marker(width, height, block) {
+        // Create marker element in defs
+        return this.defs().marker(width, height, block);
+      }
+    }
+  });
+  SVG.extend(SVG.Defs, {
+    // Create marker
+    marker: function marker(width, height, block) {
+      // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto
+      return this.put(new SVG.Marker()).size(width, height).ref(width / 2, height / 2).viewbox(0, 0, width, height).attr('orient', 'auto').update(block);
+    }
+  });
+  SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, SVG.Path, {
+    // Create and attach markers
+    marker: function marker(_marker, width, height, block) {
+      var attr = ['marker']; // Build attribute name
+
+      if (_marker != 'all') attr.push(_marker);
+      attr = attr.join('-'); // Set marker attribute
+
+      _marker = arguments[1] instanceof SVG.Marker ? arguments[1] : this.doc().marker(width, height, block);
+      return this.attr(attr, _marker);
+    }
+  }); // Define list of available attributes for stroke and fill
+
+  var sugar = {
+    stroke: ['color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset'],
+    fill: ['color', 'opacity', 'rule'],
+    prefix: function prefix(t, a) {
+      return a == 'color' ? t : t + '-' + a;
+    } // Add sugar for fill and stroke
+
+  };
+  ['fill', 'stroke'].forEach(function (m) {
+    var i,
+        extension = {};
+
+    extension[m] = function (o) {
+      if (typeof o === 'undefined') {
+        return this;
+      }
+
+      if (typeof o === 'string' || SVG.Color.isRgb(o) || o && typeof o.fill === 'function') {
+        this.attr(m, o);
+      } else // set all attributes from sugar.fill and sugar.stroke list
+        {
+          for (i = sugar[m].length - 1; i >= 0; i--) {
+            if (o[sugar[m][i]] != null) {
+              this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]]);
+            }
+          }
+        }
+
+      return this;
+    };
+
+    SVG.extend(SVG.Element, SVG.FX, extension);
+  });
+  SVG.extend(SVG.Element, SVG.FX, {
+    // Map rotation to transform
+    rotate: function rotate(d, cx, cy) {
+      return this.transform({
+        rotation: d,
+        cx: cx,
+        cy: cy
+      });
+    },
+    // Map skew to transform
+    skew: function skew(x, y, cx, cy) {
+      return arguments.length == 1 || arguments.length == 3 ? this.transform({
+        skew: x,
+        cx: y,
+        cy: cx
+      }) : this.transform({
+        skewX: x,
+        skewY: y,
+        cx: cx,
+        cy: cy
+      });
+    },
+    // Map scale to transform
+    scale: function scale(x, y, cx, cy) {
+      return arguments.length == 1 || arguments.length == 3 ? this.transform({
+        scale: x,
+        cx: y,
+        cy: cx
+      }) : this.transform({
+        scaleX: x,
+        scaleY: y,
+        cx: cx,
+        cy: cy
+      });
+    },
+    // Map translate to transform
+    translate: function translate(x, y) {
+      return this.transform({
+        x: x,
+        y: y
+      });
+    },
+    // Map flip to transform
+    flip: function flip(a, o) {
+      o = typeof a === 'number' ? a : o;
+      return this.transform({
+        flip: a || 'both',
+        offset: o
+      });
+    },
+    // Map matrix to transform
+    matrix: function matrix(m) {
+      return this.attr('transform', new SVG.Matrix(arguments.length == 6 ? [].slice.call(arguments) : m));
+    },
+    // Opacity
+    opacity: function opacity(value) {
+      return this.attr('opacity', value);
+    },
+    // Relative move over x axis
+    dx: function dx(x) {
+      return this.x(new SVG.Number(x).plus(this instanceof SVG.FX ? 0 : this.x()), true);
+    },
+    // Relative move over y axis
+    dy: function dy(y) {
+      return this.y(new SVG.Number(y).plus(this instanceof SVG.FX ? 0 : this.y()), true);
+    },
+    // Relative move over x and y axes
+    dmove: function dmove(x, y) {
+      return this.dx(x).dy(y);
+    }
+  });
+  SVG.extend(SVG.Rect, SVG.Ellipse, SVG.Circle, SVG.Gradient, SVG.FX, {
+    // Add x and y radius
+    radius: function radius(x, y) {
+      var type = (this._target || this).type;
+      return type == 'radial' || type == 'circle' ? this.attr('r', new SVG.Number(x)) : this.rx(x).ry(y == null ? x : y);
+    }
+  });
+  SVG.extend(SVG.Path, {
+    // Get path length
+    length: function length() {
+      return this.node.getTotalLength();
+    },
+    // Get point at length
+    pointAt: function pointAt(length) {
+      return this.node.getPointAtLength(length);
+    }
+  });
+  SVG.extend(SVG.Parent, SVG.Text, SVG.Tspan, SVG.FX, {
+    // Set font
+    font: function font(a, v) {
+      if (_typeof(a) === 'object') {
+        for (v in a) {
+          this.font(v, a[v]);
+        }
+      }
+
+      return a == 'leading' ? this.leading(v) : a == 'anchor' ? this.attr('text-anchor', v) : a == 'size' || a == 'family' || a == 'weight' || a == 'stretch' || a == 'variant' || a == 'style' ? this.attr('font-' + a, v) : this.attr(a, v);
+    }
+  });
+  SVG.Set = SVG.invent({
+    // Initialize
+    create: function create(members) {
+      // Set initial state
+      Array.isArray(members) ? this.members = members : this.clear();
+    },
+    // Add class methods
+    extend: {
+      // Add element to set
+      add: function add() {
+        var i,
+            il,
+            elements = [].slice.call(arguments);
+
+        for (i = 0, il = elements.length; i < il; i++) {
+          this.members.push(elements[i]);
+        }
+
+        return this;
+      },
+      // Remove element from set
+      remove: function remove(element) {
+        var i = this.index(element); // remove given child
+
+        if (i > -1) {
+          this.members.splice(i, 1);
+        }
+
+        return this;
+      },
+      // Iterate over all members
+      each: function each(block) {
+        for (var i = 0, il = this.members.length; i < il; i++) {
+          block.apply(this.members[i], [i, this.members]);
+        }
+
+        return this;
+      },
+      // Restore to defaults
+      clear: function clear() {
+        // initialize store
+        this.members = [];
+        return this;
+      },
+      // Get the length of a set
+      length: function length() {
+        return this.members.length;
+      },
+      // Checks if a given element is present in set
+      has: function has(element) {
+        return this.index(element) >= 0;
+      },
+      // retuns index of given element in set
+      index: function index(element) {
+        return this.members.indexOf(element);
+      },
+      // Get member at given index
+      get: function get(i) {
+        return this.members[i];
+      },
+      // Get first member
+      first: function first() {
+        return this.get(0);
+      },
+      // Get last member
+      last: function last() {
+        return this.get(this.members.length - 1);
+      },
+      // Default value
+      valueOf: function valueOf() {
+        return this.members;
+      },
+      // Get the bounding box of all members included or empty box if set has no items
+      bbox: function bbox() {
+        // return an empty box of there are no members
+        if (this.members.length == 0) {
+          return new SVG.RBox();
+        } // get the first rbox and update the target bbox
+
+
+        var rbox = this.members[0].rbox(this.members[0].doc());
+        this.each(function () {
+          // user rbox for correct position and visual representation
+          rbox = rbox.merge(this.rbox(this.doc()));
+        });
+        return rbox;
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a new set
+      set: function set(members) {
+        return new SVG.Set(members);
+      }
+    }
+  });
+  SVG.FX.Set = SVG.invent({
+    // Initialize node
+    create: function create(set) {
+      // store reference to set
+      this.set = set;
+    }
+  }); // Alias methods
+
+  SVG.Set.inherit = function () {
+    var m,
+        methods = []; // gather shape methods
+
+    for (var m in SVG.Shape.prototype) {
+      if (typeof SVG.Shape.prototype[m] === 'function' && typeof SVG.Set.prototype[m] !== 'function') {
+        methods.push(m);
+      }
+    } // apply shape aliasses
+
+
+    methods.forEach(function (method) {
+      SVG.Set.prototype[method] = function () {
+        for (var i = 0, il = this.members.length; i < il; i++) {
+          if (this.members[i] && typeof this.members[i][method] === 'function') {
+            this.members[i][method].apply(this.members[i], arguments);
+          }
+        }
+
+        return method == 'animate' ? this.fx || (this.fx = new SVG.FX.Set(this)) : this;
+      };
+    }); // clear methods for the next round
+
+    methods = []; // gather fx methods
+
+    for (var m in SVG.FX.prototype) {
+      if (typeof SVG.FX.prototype[m] === 'function' && typeof SVG.FX.Set.prototype[m] !== 'function') {
+        methods.push(m);
+      }
+    } // apply fx aliasses
+
+
+    methods.forEach(function (method) {
+      SVG.FX.Set.prototype[method] = function () {
+        for (var i = 0, il = this.set.members.length; i < il; i++) {
+          this.set.members[i].fx[method].apply(this.set.members[i].fx, arguments);
+        }
+
+        return this;
+      };
+    });
+  };
+
+  SVG.extend(SVG.Element, {
+    // Store data values on svg nodes
+    data: function data(a, v, r) {
+      if (_typeof(a) === 'object') {
+        for (v in a) {
+          this.data(v, a[v]);
+        }
+      } else if (arguments.length < 2) {
+        try {
+          return JSON.parse(this.attr('data-' + a));
+        } catch (e) {
+          return this.attr('data-' + a);
+        }
+      } else {
+        this.attr('data-' + a, v === null ? null : r === true || typeof v === 'string' || typeof v === 'number' ? v : JSON.stringify(v));
+      }
+
+      return this;
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Remember arbitrary data
+    remember: function remember(k, v) {
+      // remember every item in an object individually
+      if (_typeof(arguments[0]) === 'object') {
+        for (var v in k) {
+          this.remember(v, k[v]);
+        }
+      } // retrieve memory
+      else if (arguments.length == 1) {
+          return this.memory()[k];
+        } // store memory
+        else {
+            this.memory()[k] = v;
+          }
+
+      return this;
+    },
+    // Erase a given memory
+    forget: function forget() {
+      if (arguments.length == 0) {
+        this._memory = {};
+      } else {
+        for (var i = arguments.length - 1; i >= 0; i--) {
+          delete this.memory()[arguments[i]];
+        }
+      }
+
+      return this;
+    },
+    // Initialize or return local memory object
+    memory: function memory() {
+      return this._memory || (this._memory = {});
+    }
+  }); // Method for getting an element by id
+
+  SVG.get = function (id) {
+    var node = document.getElementById(idFromReference(id) || id);
+    return SVG.adopt(node);
+  }; // Select elements by query string
+
+
+  SVG.select = function (query, parent) {
+    return new SVG.Set(SVG.utils.map((parent || document).querySelectorAll(query), function (node) {
+      return SVG.adopt(node);
+    }));
+  };
+
+  SVG.extend(SVG.Parent, {
+    // Scoped select method
+    select: function select(query) {
+      return SVG.select(query, this.node);
+    }
+  });
+
+  function pathRegReplace(a, b, c, d) {
+    return c + d.replace(SVG.regex.dots, ' .');
+  } // creates deep clone of array
+
+
+  function array_clone(arr) {
+    var clone = arr.slice(0);
+
+    for (var i = clone.length; i--;) {
+      if (Array.isArray(clone[i])) {
+        clone[i] = array_clone(clone[i]);
+      }
+    }
+
+    return clone;
+  } // tests if a given element is instance of an object
+
+
+  function _is(el, obj) {
+    return el instanceof obj;
+  } // tests if a given selector matches an element
+
+
+  function _matches(el, selector) {
+    return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector);
+  } // Convert dash-separated-string to camelCase
+
+
+  function camelCase(s) {
+    return s.toLowerCase().replace(/-(.)/g, function (m, g) {
+      return g.toUpperCase();
+    });
+  } // Capitalize first letter of a string
+
+
+  function capitalize(s) {
+    return s.charAt(0).toUpperCase() + s.slice(1);
+  } // Ensure to six-based hex
+
+
+  function fullHex(hex) {
+    return hex.length == 4 ? ['#', hex.substring(1, 2), hex.substring(1, 2), hex.substring(2, 3), hex.substring(2, 3), hex.substring(3, 4), hex.substring(3, 4)].join('') : hex;
+  } // Component to hex value
+
+
+  function compToHex(comp) {
+    var hex = comp.toString(16);
+    return hex.length == 1 ? '0' + hex : hex;
+  } // Calculate proportional width and height values when necessary
+
+
+  function proportionalSize(element, width, height) {
+    if (width == null || height == null) {
+      var box = element.bbox();
+
+      if (width == null) {
+        width = box.width / box.height * height;
+      } else if (height == null) {
+        height = box.height / box.width * width;
+      }
+    }
+
+    return {
+      width: width,
+      height: height
+    };
+  } // Delta transform point
+
+
+  function deltaTransformPoint(matrix, x, y) {
+    return {
+      x: x * matrix.a + y * matrix.c + 0,
+      y: x * matrix.b + y * matrix.d + 0
+    };
+  } // Map matrix array to object
+
+
+  function arrayToMatrix(a) {
+    return {
+      a: a[0],
+      b: a[1],
+      c: a[2],
+      d: a[3],
+      e: a[4],
+      f: a[5]
+    };
+  } // Parse matrix if required
+
+
+  function parseMatrix(matrix) {
+    if (!(matrix instanceof SVG.Matrix)) {
+      matrix = new SVG.Matrix(matrix);
+    }
+
+    return matrix;
+  } // Add centre point to transform object
+
+
+  function ensureCentre(o, target) {
+    o.cx = o.cx == null ? target.bbox().cx : o.cx;
+    o.cy = o.cy == null ? target.bbox().cy : o.cy;
+  } // PathArray Helpers
+
+
+  function arrayToString(a) {
+    for (var i = 0, il = a.length, s = ''; i < il; i++) {
+      s += a[i][0];
+
+      if (a[i][1] != null) {
+        s += a[i][1];
+
+        if (a[i][2] != null) {
+          s += ' ';
+          s += a[i][2];
+
+          if (a[i][3] != null) {
+            s += ' ';
+            s += a[i][3];
+            s += ' ';
+            s += a[i][4];
+
+            if (a[i][5] != null) {
+              s += ' ';
+              s += a[i][5];
+              s += ' ';
+              s += a[i][6];
+
+              if (a[i][7] != null) {
+                s += ' ';
+                s += a[i][7];
+              }
+            }
+          }
+        }
+      }
+    }
+
+    return s + ' ';
+  } // Deep new id assignment
+
+
+  function assignNewId(node) {
+    // do the same for SVG child nodes as well
+    for (var i = node.childNodes.length - 1; i >= 0; i--) {
+      if (node.childNodes[i] instanceof window.SVGElement) {
+        assignNewId(node.childNodes[i]);
+      }
+    }
+
+    return SVG.adopt(node).id(SVG.eid(node.nodeName));
+  } // Add more bounding box properties
+
+
+  function fullBox(b) {
+    if (b.x == null) {
+      b.x = 0;
+      b.y = 0;
+      b.width = 0;
+      b.height = 0;
+    }
+
+    b.w = b.width;
+    b.h = b.height;
+    b.x2 = b.x + b.width;
+    b.y2 = b.y + b.height;
+    b.cx = b.x + b.width / 2;
+    b.cy = b.y + b.height / 2;
+    return b;
+  } // Get id from reference string
+
+
+  function idFromReference(url) {
+    var m = (url || '').toString().match(SVG.regex.reference);
+    if (m) return m[1];
+  } // If values like 1e-88 are passed, this is not a valid 32 bit float,
+  // but in those cases, we are so close to 0 that 0 works well!
+
+
+  function float32String(v) {
+    return Math.abs(v) > 1e-37 ? v : 0;
+  } // Create matrix array for looping
+
+
+  var abcdef = 'abcdef'.split(''); // Add CustomEvent to IE9 and IE10
+
+  if (typeof window.CustomEvent !== 'function') {
+    // Code from: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent
+    var CustomEventPoly = function CustomEventPoly(event, options) {
+      options = options || {
+        bubbles: false,
+        cancelable: false,
+        detail: undefined
+      };
+      var e = document.createEvent('CustomEvent');
+      e.initCustomEvent(event, options.bubbles, options.cancelable, options.detail);
+      return e;
+    };
+
+    CustomEventPoly.prototype = window.Event.prototype;
+    SVG.CustomEvent = CustomEventPoly;
+  } else {
+    SVG.CustomEvent = window.CustomEvent;
+  } // requestAnimationFrame / cancelAnimationFrame Polyfill with fallback based on Paul Irish
+
+
+  (function (w) {
+    var lastTime = 0;
+    var vendors = ['moz', 'webkit'];
+
+    for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+      w.requestAnimationFrame = w[vendors[x] + 'RequestAnimationFrame'];
+      w.cancelAnimationFrame = w[vendors[x] + 'CancelAnimationFrame'] || w[vendors[x] + 'CancelRequestAnimationFrame'];
+    }
+
+    w.requestAnimationFrame = w.requestAnimationFrame || function (callback) {
+      var currTime = new Date().getTime();
+      var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+      var id = w.setTimeout(function () {
+        callback(currTime + timeToCall);
+      }, timeToCall);
+      lastTime = currTime + timeToCall;
+      return id;
+    };
+
+    w.cancelAnimationFrame = w.cancelAnimationFrame || w.clearTimeout;
+  })(window);
+
+  return SVG;
+});
+
+/*! svg.filter.js - v2.0.2 - 2016-02-24
+* https://github.com/wout/svg.filter.js
+* Copyright (c) 2016 Wout Fierens; Licensed MIT */
+(function() {
+
+  // Main filter class
+  SVG.Filter = SVG.invent({
+    create: 'filter',
+    inherit: SVG.Parent,
+    extend: {
+      // Static strings
+      source:           'SourceGraphic',
+      sourceAlpha:      'SourceAlpha',
+      background:       'BackgroundImage',
+      backgroundAlpha:  'BackgroundAlpha',
+      fill:             'FillPaint',
+      stroke:           'StrokePaint',
+
+      autoSetIn: true,
+      // Custom put method for leaner code
+      put: function(element, i) {
+        this.add(element, i);
+
+        if(!element.attr('in') && this.autoSetIn){
+          element.attr('in',this.source);
+        }
+        if(!element.attr('result')){
+          element.attr('result',element);
+        }
+
+        return element
+      },
+      // Blend effect
+      blend: function(in1, in2, mode) {
+        return this.put(new SVG.BlendEffect(in1, in2, mode))
+      },
+      // ColorMatrix effect
+      colorMatrix: function(type, values) {
+        return this.put(new SVG.ColorMatrixEffect(type, values))
+      },
+      // ConvolveMatrix effect
+      convolveMatrix: function(matrix) {
+        return this.put(new SVG.ConvolveMatrixEffect(matrix))
+      },
+      // ComponentTransfer effect
+      componentTransfer: function(components) {
+        return this.put(new SVG.ComponentTransferEffect(components))
+      },
+      // Composite effect
+      composite: function(in1, in2, operator) {
+        return this.put(new SVG.CompositeEffect(in1, in2, operator))
+      },
+      // Flood effect
+      flood: function(color, opacity) {
+        return this.put(new SVG.FloodEffect(color, opacity))
+      },
+      // Offset effect
+      offset: function(x, y) {
+        return this.put(new SVG.OffsetEffect(x,y))
+      },
+      // Image effect
+      image: function(src) {
+        return this.put(new SVG.ImageEffect(src))
+      },
+      // Merge effect
+      merge: function() {
+        //pass the array of arguments to the constructor because we dont know if the user gave us an array as the first arguemnt or wether they listed the effects in the arguments
+        var args = [undefined];
+        for(var i in arguments) args.push(arguments[i]);
+        return this.put(new (SVG.MergeEffect.bind.apply(SVG.MergeEffect,args)))
+      },
+      // Gaussian Blur effect
+      gaussianBlur: function(x,y) {
+        return this.put(new SVG.GaussianBlurEffect(x,y))
+      },
+      // Morphology effect
+      morphology: function(operator,radius){
+        return this.put(new SVG.MorphologyEffect(operator,radius))
+      },
+      // DiffuseLighting effect
+      diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){
+        return this.put(new SVG.DiffuseLightingEffect(surfaceScale,diffuseConstant,kernelUnitLength))
+      },
+      // DisplacementMap effect
+      displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){
+        return this.put(new SVG.DisplacementMapEffect(in1,in2,scale,xChannelSelector,yChannelSelector))
+      },
+      // SpecularLighting effect
+      specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){
+        return this.put(new SVG.SpecularLightingEffect(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength))
+      },
+      // Tile effect
+      tile: function(){
+        return this.put(new SVG.TileEffect());
+      },
+      // Turbulence effect
+      turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){
+        return this.put(new SVG.TurbulenceEffect(baseFrequency,numOctaves,seed,stitchTiles,type))
+      },
+      // Default string value
+      toString: function() {
+        return 'url(#' + this.attr('id') + ')'
+      }
+    }
+  });
+
+  //add .filter function
+  SVG.extend(SVG.Defs, {
+    // Define filter
+    filter: function(block) {
+      var filter = this.put(new SVG.Filter);
+
+      /* invoke passed block */
+      if (typeof block === 'function')
+        block.call(filter, filter);
+
+      return filter
+    }
+  });
+  SVG.extend(SVG.Container, {
+    // Define filter on defs
+    filter: function(block) {
+      return this.defs().filter(block)
+    }
+  });
+  SVG.extend(SVG.Element, SVG.G, SVG.Nested, {
+    // Create filter element in defs and store reference
+    filter: function(block) {
+      this.filterer = block instanceof SVG.Element ?
+        block : this.doc().filter(block);
+
+      if(this.doc() && this.filterer.doc() !== this.doc()){
+        this.doc().defs().add(this.filterer);
+      }
+
+      this.attr('filter', this.filterer);
+
+      return this.filterer
+    },
+    // Remove filter
+    unfilter: function(remove) {
+      /* also remove the filter node */
+      if (this.filterer && remove === true)
+        this.filterer.remove();
+
+      /* delete reference to filterer */
+      delete this.filterer;
+
+      /* remove filter attribute */
+      return this.attr('filter', null)
+    }
+  });
+
+  // Create SVG.Effect class
+  SVG.Effect = SVG.invent({
+    create: function(){
+      this.constructor.call(this);
+    },
+    inherit: SVG.Element,
+    extend: {
+      // Set in attribute
+      in: function(effect) {
+        return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in')+'"]').get(0) || this.attr('in') : this.attr('in', effect)
+      },
+      // Named result
+      result: function(result) {
+        return result == null? this.attr('result') : this.attr('result',result)
+      },
+      // Stringification
+      toString: function() {
+        return this.result()
+      }
+    }
+  });
+
+  // create class for parent effects like merge
+  // Inherit from SVG.Parent
+  SVG.ParentEffect = SVG.invent({
+    create: function(){
+      this.constructor.call(this);
+    },
+    inherit: SVG.Parent,
+    extend: {
+      // Set in attribute
+      in: function(effect) {
+        return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in')+'"]').get(0) || this.attr('in') : this.attr('in', effect)
+      },
+      // Named result
+      result: function(result) {
+        return result == null? this.attr('result') : this.attr('result',result)
+      },
+      // Stringification
+      toString: function() {
+        return this.result()
+      }
+    }
+  });
+
+  //chaining
+  var chainingEffects = {
+    // Blend effect
+    blend: function(in2, mode) {
+      return this.parent() && this.parent().blend(this, in2, mode) //pass this as the first input
+    },
+    // ColorMatrix effect
+    colorMatrix: function(type, values) {
+      return this.parent() && this.parent().colorMatrix(type, values).in(this)
+    },
+    // ConvolveMatrix effect
+    convolveMatrix: function(matrix) {
+      return this.parent() && this.parent().convolveMatrix(matrix).in(this)
+    },
+    // ComponentTransfer effect
+    componentTransfer: function(components) {
+      return this.parent() && this.parent().componentTransfer(components).in(this)
+    },
+    // Composite effect
+    composite: function(in2, operator) {
+      return this.parent() && this.parent().composite(this, in2, operator) //pass this as the first input
+    },
+    // Flood effect
+    flood: function(color, opacity) {
+      return this.parent() && this.parent().flood(color, opacity) //this effect dont have inputs
+    },
+    // Offset effect
+    offset: function(x, y) {
+      return this.parent() && this.parent().offset(x,y).in(this)
+    },
+    // Image effect
+    image: function(src) {
+      return this.parent() && this.parent().image(src) //this effect dont have inputs
+    },
+    // Merge effect
+    merge: function() {
+      return this.parent() && this.parent().merge.apply(this.parent(),[this].concat(arguments)) //pass this as the first argument
+    },
+    // Gaussian Blur effect
+    gaussianBlur: function(x,y) {
+      return this.parent() && this.parent().gaussianBlur(x,y).in(this)
+    },
+    // Morphology effect
+    morphology: function(operator,radius){
+      return this.parent() && this.parent().morphology(operator,radius).in(this)
+    },
+    // DiffuseLighting effect
+    diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){
+      return this.parent() && this.parent().diffuseLighting(surfaceScale,diffuseConstant,kernelUnitLength).in(this)
+    },
+    // DisplacementMap effect
+    displacementMap: function(in2,scale,xChannelSelector,yChannelSelector){
+      return this.parent() && this.parent().displacementMap(this,in2,scale,xChannelSelector,yChannelSelector) //pass this as the first input
+    },
+    // SpecularLighting effect
+    specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){
+      return this.parent() && this.parent().specularLighting(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength).in(this)
+    },
+    // Tile effect
+    tile: function(){
+      return this.parent() && this.parent().tile().in(this)
+    },
+    // Turbulence effect
+    turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){
+      return this.parent() && this.parent().turbulence(baseFrequency,numOctaves,seed,stitchTiles,type).in(this)
+    }
+  };
+  SVG.extend(SVG.Effect,chainingEffects);
+  SVG.extend(SVG.ParentEffect,chainingEffects);
+
+  //crea class for child effects, like MergeNode, FuncR and lights
+  SVG.ChildEffect = SVG.invent({
+    create: function(){
+      this.constructor.call(this);
+    },
+    inherit: SVG.Element,
+    extend: {
+    in: function(effect){
+      this.attr('in',effect);
+    }
+    //dont include any "result" functions because these types of nodes dont have them
+    }
+  });
+
+  // Create all different effects
+  var effects = {
+    blend: function(in1,in2,mode){
+      this.attr({
+        in: in1,
+        in2: in2,
+        mode: mode || 'normal'
+      });
+    },
+    colorMatrix: function(type,values){
+      if (type == 'matrix')
+        values = normaliseMatrix(values);
+
+      this.attr({
+        type:   type
+      , values: typeof values == 'undefined' ? null : values
+      });
+    },
+    convolveMatrix: function(matrix){
+      matrix = normaliseMatrix(matrix);
+
+      this.attr({
+        order:        Math.sqrt(matrix.split(' ').length)
+      , kernelMatrix: matrix
+      });
+    },
+    composite: function(in1, in2, operator){
+      this.attr({
+        in: in1,
+        in2: in2,
+        operator: operator
+      });
+    },
+    flood: function(color,opacity){
+      this.attr('flood-color',color);
+      if(opacity != null) this.attr('flood-opacity',opacity);
+    },
+    offset: function(x,y){
+      this.attr({
+        dx: x,
+        dy: y
+      });
+    },
+    image: function(src){
+      this.attr('href', src, SVG.xlink);
+    },
+    displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){
+      this.attr({
+        in: in1,
+        in2: in2,
+        scale: scale,
+        xChannelSelector: xChannelSelector,
+        yChannelSelector: yChannelSelector
+      });
+    },
+    gaussianBlur: function(x,y){
+      if(x != null || y != null)
+        this.attr('stdDeviation', listString(Array.prototype.slice.call(arguments)));
+      else
+        this.attr('stdDeviation', '0 0');
+    },
+    morphology: function(operator,radius){
+      this.attr({
+        operator: operator,
+        radius: radius
+      });
+    },
+    tile: function(){
+
+    },
+    turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){
+      this.attr({
+        numOctaves: numOctaves,
+        seed: seed,
+        stitchTiles: stitchTiles,
+        baseFrequency: baseFrequency,
+        type: type
+      });
+    }
+  };
+
+  // Create all parent effects
+  var parentEffects = {
+    merge: function(){
+      var children;
+
+      //test to see if we have a set
+      if(arguments[0] instanceof SVG.Set){
+        var that = this;
+        arguments[0].each(function(i){
+          if(this instanceof SVG.MergeNode)
+            that.put(this);
+          else if(this instanceof SVG.Effect || this instanceof SVG.ParentEffect)
+            that.put(new SVG.MergeNode(this));
+        });
+      }
+      else{
+        //if the first argument is an array use it
+        if(Array.isArray(arguments[0]))
+          children = arguments[0];
+        else
+          children = arguments;
+
+        for(var i = 0; i < children.length; i++){
+          if(children[i] instanceof SVG.MergeNode){
+            this.put(children[i]);
+          }
+          else this.put(new SVG.MergeNode(children[i]));
+        }
+      }
+    },
+    componentTransfer: function(compontents){
+      /* create rgb set */
+      this.rgb = new SVG.Set
+
+      /* create components */
+      ;(['r', 'g', 'b', 'a']).forEach(function(c) {
+        /* create component */
+        this[c] = new SVG['Func' + c.toUpperCase()]('identity');
+
+        /* store component in set */
+        this.rgb.add(this[c]);
+
+        /* add component node */
+        this.node.appendChild(this[c].node);
+      }.bind(this)); //lost context in foreach
+
+      /* set components */
+      if (compontents) {
+        if (compontents.rgb) {
+(['r', 'g', 'b']).forEach(function(c) {
+            this[c].attr(compontents.rgb);
+          }.bind(this));
+
+          delete compontents.rgb;
+        }
+
+        /* set individual components */
+        for (var c in compontents)
+          this[c].attr(compontents[c]);
+      }
+    },
+    diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){
+      this.attr({
+        surfaceScale: surfaceScale,
+        diffuseConstant: diffuseConstant,
+        kernelUnitLength: kernelUnitLength
+      });
+    },
+    specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){
+      this.attr({
+        surfaceScale: surfaceScale,
+        diffuseConstant: diffuseConstant,
+        specularExponent: specularExponent,
+        kernelUnitLength: kernelUnitLength
+      });
+    },
+  };
+
+  // Create child effects like PointLight and MergeNode
+  var childEffects = {
+    distantLight: function(azimuth, elevation){
+      this.attr({
+        azimuth: azimuth,
+        elevation: elevation
+      });
+    },
+    pointLight: function(x,y,z){
+      this.attr({
+        x: x,
+        y: y,
+        z: z
+      });
+    },
+    spotLight: function(x,y,z,pointsAtX,pointsAtY,pointsAtZ){
+      this.attr({
+        x: x,
+        y: y,
+        z: z,
+        pointsAtX: pointsAtX,
+        pointsAtY: pointsAtY,
+        pointsAtZ: pointsAtZ
+      });
+    },
+    mergeNode: function(in1){
+      this.attr('in',in1);
+    }
+  }
+
+  // Create compontent functions
+  ;(['r', 'g', 'b', 'a']).forEach(function(c) {
+    /* create class */
+    childEffects['Func' + c.toUpperCase()] = function(type) {
+      this.attr('type',type);
+
+      // take diffent arguments based on the type
+      switch(type){
+        case 'table':
+          this.attr('tableValues',arguments[1]);
+          break
+        case 'linear':
+          this.attr('slope',arguments[1]);
+          this.attr('intercept',arguments[2]);
+          break
+        case 'gamma':
+          this.attr('amplitude',arguments[1]);
+          this.attr('exponent',arguments[2]);
+          this.attr('offset',arguments[2]);
+          break
+      }
+    };
+  });
+
+  //create effects
+  foreach(effects,function(effect,i){
+
+    /* capitalize name */
+    var name = i.charAt(0).toUpperCase() + i.slice(1);
+    var proto = {};
+
+    /* create class */
+    SVG[name + 'Effect'] = SVG.invent({
+      create: function() {
+        //call super
+        this.constructor.call(this, SVG.create('fe' + name));
+
+        //call constructor for this effect
+        effect.apply(this,arguments);
+
+        //set the result
+        this.result(this.attr('id') + 'Out');
+      },
+      inherit: SVG.Effect,
+      extend: proto
+    });
+  });
+
+  //create parent effects
+  foreach(parentEffects,function(effect,i){
+
+    /* capitalize name */
+    var name = i.charAt(0).toUpperCase() + i.slice(1);
+    var proto = {};
+
+    /* create class */
+    SVG[name + 'Effect'] = SVG.invent({
+      create: function() {
+        //call super
+        this.constructor.call(this, SVG.create('fe' + name));
+
+        //call constructor for this effect
+        effect.apply(this,arguments);
+
+        //set the result
+        this.result(this.attr('id') + 'Out');
+      },
+      inherit: SVG.ParentEffect,
+      extend: proto
+    });
+  });
+
+  //create child effects
+  foreach(childEffects,function(effect,i){
+
+    /* capitalize name */
+    var name = i.charAt(0).toUpperCase() + i.slice(1);
+    var proto = {};
+
+    /* create class */
+    SVG[name] = SVG.invent({
+      create: function() {
+        //call super
+        this.constructor.call(this, SVG.create('fe' + name));
+
+        //call constructor for this effect
+        effect.apply(this,arguments);
+      },
+      inherit: SVG.ChildEffect,
+      extend: proto
+    });
+  });
+
+  // Effect-specific extensions
+  SVG.extend(SVG.MergeEffect,{
+    in: function(effect){
+      if(effect instanceof SVG.MergeNode)
+        this.add(effect,0);
+      else
+        this.add(new SVG.MergeNode(effect),0);
+
+      return this
+    }
+  });
+  SVG.extend(SVG.CompositeEffect,SVG.BlendEffect,SVG.DisplacementMapEffect,{
+    in2: function(effect){
+        return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in2')+'"]').get(0) || this.attr('in2') : this.attr('in2', effect)
+    }
+  });
+
+  // Presets
+  SVG.filter = {
+    sepiatone:  [ .343, .669, .119, 0, 0
+                , .249, .626, .130, 0, 0
+                , .172, .334, .111, 0, 0
+                , .000, .000, .000, 1, 0 ]
+  };
+
+  // Helpers
+  function normaliseMatrix(matrix) {
+    /* convert possible array value to string */
+    if (Array.isArray(matrix))
+      matrix = new SVG.Array(matrix);
+
+    /* ensure there are no leading, tailing or double spaces */
+    return matrix.toString().replace(/^\s+/, '').replace(/\s+$/, '').replace(/\s+/g, ' ')
+  }
+
+  function listString(list) {
+    if (!Array.isArray(list))
+      return list
+
+    for (var i = 0, l = list.length, s = []; i < l; i++)
+      s.push(list[i]);
+
+    return s.join(' ')
+  }
+
+  function foreach(){ //loops through mutiple objects
+    var fn = function(){};
+    if(typeof arguments[arguments.length-1] == 'function'){
+      fn = arguments[arguments.length-1];
+      Array.prototype.splice.call(arguments,arguments.length-1,1);
+    }
+    for(var k in arguments){
+      for(var i in arguments[k]){
+        fn(arguments[k][i],i,arguments[k]);
+      }
+    }
+  }
+
+}).call(undefined);
+
+(function() {
+
+SVG.extend(SVG.PathArray, {
+  morph: function(array) {
+
+    var startArr = this.value
+      ,  destArr = this.parse(array);
+
+    var startOffsetM = 0
+      ,  destOffsetM = 0;
+
+    var startOffsetNextM = false
+      ,  destOffsetNextM = false;
+
+    while(true){
+      // stop if there is no M anymore
+      if(startOffsetM === false && destOffsetM === false) break
+
+      // find the next M in path array
+      startOffsetNextM = findNextM(startArr, startOffsetM === false ? false : startOffsetM+1);
+       destOffsetNextM = findNextM( destArr,  destOffsetM === false ? false :  destOffsetM+1);
+
+      // We have to add one M to the startArray
+      if(startOffsetM === false){
+        var bbox = new SVG.PathArray(result.start).bbox();
+
+        // when the last block had no bounding box we simply take the first M we got
+        if(bbox.height == 0 || bbox.width == 0){
+          startOffsetM =  startArr.push(startArr[0]) - 1;
+        }else{
+          // we take the middle of the bbox instead when we got one
+          startOffsetM = startArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1;
+        }
+      }
+
+      // We have to add one M to the destArray
+      if( destOffsetM === false){
+        var bbox = new SVG.PathArray(result.dest).bbox();
+
+        if(bbox.height == 0 || bbox.width == 0){
+          destOffsetM =  destArr.push(destArr[0]) - 1;
+        }else{
+          destOffsetM =  destArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1;
+        }
+      }
+
+      // handle block from M to next M
+      var result = handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM);
+
+      // update the arrays to their new values
+      startArr = startArr.slice(0, startOffsetM).concat(result.start, startOffsetNextM === false ? [] : startArr.slice(startOffsetNextM));
+       destArr =  destArr.slice(0,  destOffsetM).concat(result.dest ,  destOffsetNextM === false ? [] :  destArr.slice( destOffsetNextM));
+
+      // update offsets
+      startOffsetM = startOffsetNextM === false ? false : startOffsetM + result.start.length;
+       destOffsetM =  destOffsetNextM === false ? false :  destOffsetM + result.dest.length;
+
+    }
+
+    // copy back arrays
+    this.value = startArr;
+    this.destination = new SVG.PathArray();
+    this.destination.value = destArr;
+
+    return this
+  }
+});
+
+
+
+// sorry for the long declaration
+// slices out one block (from M to M) and syncronize it so the types and length match
+function handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM, undefined){
+
+  // slice out the block we need
+  var startArrTemp = startArr.slice(startOffsetM, startOffsetNextM || undefined)
+    ,  destArrTemp =  destArr.slice( destOffsetM,  destOffsetNextM || undefined);
+
+  var i = 0
+    , posStart = {pos:[0,0], start:[0,0]}
+    , posDest  = {pos:[0,0], start:[0,0]};
+
+  do{
+
+    // convert shorthand types to long form
+    startArrTemp[i] = simplyfy.call(posStart, startArrTemp[i]);
+     destArrTemp[i] = simplyfy.call(posDest ,  destArrTemp[i]);
+
+    // check if both shape types match
+    // 2 elliptical arc curve commands ('A'), are considered different if the
+    // flags (large-arc-flag, sweep-flag) don't match
+    if(startArrTemp[i][0] != destArrTemp[i][0] || startArrTemp[i][0] == 'M' ||
+        (startArrTemp[i][0] == 'A' &&
+          (startArrTemp[i][4] != destArrTemp[i][4] || startArrTemp[i][5] != destArrTemp[i][5])
+        )
+      ) {
+
+      // if not, convert shapes to beziere
+      Array.prototype.splice.apply(startArrTemp, [i, 1].concat(toBeziere.call(posStart, startArrTemp[i])));
+       Array.prototype.splice.apply(destArrTemp, [i, 1].concat(toBeziere.call(posDest, destArrTemp[i])));
+
+    } else {
+
+      // only update positions otherwise
+      startArrTemp[i] = setPosAndReflection.call(posStart, startArrTemp[i]);
+       destArrTemp[i] = setPosAndReflection.call(posDest ,  destArrTemp[i]);
+
+    }
+
+    // we are at the end at both arrays. stop here
+    if(++i == startArrTemp.length && i == destArrTemp.length) break
+
+    // destArray is longer. Add one element
+    if(i == startArrTemp.length){
+      startArrTemp.push([
+        'C',
+        posStart.pos[0],
+        posStart.pos[1],
+        posStart.pos[0],
+        posStart.pos[1],
+        posStart.pos[0],
+        posStart.pos[1],
+      ]);
+    }
+
+    // startArr is longer. Add one element
+    if(i == destArrTemp.length){
+      destArrTemp.push([
+        'C',
+        posDest.pos[0],
+        posDest.pos[1],
+        posDest.pos[0],
+        posDest.pos[1],
+        posDest.pos[0],
+        posDest.pos[1]
+      ]);
+    }
+
+
+  }while(true)
+
+  // return the updated block
+  return {start:startArrTemp, dest:destArrTemp}
+}
+
+// converts shorthand types to long form
+function simplyfy(val){
+
+  switch(val[0]){
+    case 'z': // shorthand line to start
+    case 'Z':
+      val[0] = 'L';
+      val[1] = this.start[0];
+      val[2] = this.start[1];
+      break
+    case 'H': // shorthand horizontal line
+      val[0] = 'L';
+      val[2] = this.pos[1];
+      break
+    case 'V': // shorthand vertical line
+      val[0] = 'L';
+      val[2] = val[1];
+      val[1] = this.pos[0];
+      break
+    case 'T': // shorthand quadratic beziere
+      val[0] = 'Q';
+      val[3] = val[1];
+      val[4] = val[2];
+      val[1] = this.reflection[1];
+      val[2] = this.reflection[0];
+      break
+    case 'S': // shorthand cubic beziere
+      val[0] = 'C';
+      val[6] = val[4];
+      val[5] = val[3];
+      val[4] = val[2];
+      val[3] = val[1];
+      val[2] = this.reflection[1];
+      val[1] = this.reflection[0];
+      break
+  }
+
+  return val
+
+}
+
+// updates reflection point and current position
+function setPosAndReflection(val){
+
+  var len = val.length;
+
+  this.pos = [ val[len-2], val[len-1] ];
+
+  if('SCQT'.indexOf(val[0]) != -1)
+    this.reflection = [ 2 * this.pos[0] - val[len-4], 2 * this.pos[1] - val[len-3] ];
+
+  return val
+}
+
+// converts all types to cubic beziere
+function toBeziere(val){
+  var retVal = [val];
+
+  switch(val[0]){
+    case 'M': // special handling for M
+      this.pos = this.start = [val[1], val[2]];
+      return retVal
+    case 'L':
+      val[5] = val[3] = val[1];
+      val[6] = val[4] = val[2];
+      val[1] = this.pos[0];
+      val[2] = this.pos[1];
+      break
+    case 'Q':
+      val[6] = val[4];
+      val[5] = val[3];
+      val[4] = val[4] * 1/3 + val[2] * 2/3;
+      val[3] = val[3] * 1/3 + val[1] * 2/3;
+      val[2] = this.pos[1] * 1/3 + val[2] * 2/3;
+      val[1] = this.pos[0] * 1/3 + val[1] * 2/3;
+      break
+    case 'A':
+      retVal = arcToBeziere(this.pos, val);
+      val = retVal[0];
+      break
+  }
+
+  val[0] = 'C';
+  this.pos = [val[5], val[6]];
+  this.reflection = [2 * val[5] - val[3], 2 * val[6] - val[4]];
+
+  return retVal
+
+}
+
+// finds the next position of type M
+function findNextM(arr, offset){
+
+  if(offset === false) return false
+
+  for(var i = offset, len = arr.length;i < len;++i){
+
+    if(arr[i][0] == 'M') return i
+
+  }
+
+  return false
+}
+
+
+
+// Convert an arc segment into equivalent cubic Bezier curves
+// Depending on the arc, up to 4 curves might be used to represent it since a
+// curve gives a good approximation for only a quarter of an ellipse
+// The curves are returned as an array of SVG curve commands:
+// [ ['C', x1, y1, x2, y2, x, y] ... ]
+function arcToBeziere(pos, val) {
+    // Parameters extraction, handle out-of-range parameters as specified in the SVG spec
+    // See: https://www.w3.org/TR/SVG11/implnote.html#ArcOutOfRangeParameters
+    var rx = Math.abs(val[1]), ry = Math.abs(val[2]), xAxisRotation = val[3] % 360
+      , largeArcFlag = val[4], sweepFlag = val[5], x = val[6], y = val[7]
+      , A = new SVG.Point(pos), B = new SVG.Point(x, y)
+      , primedCoord, lambda, mat, k, c, cSquare, t, O, OA, OB, tetaStart, tetaEnd
+      , deltaTeta, nbSectors, f, arcSegPoints, angle, sinAngle, cosAngle, pt, i, il
+      , retVal = [], x1, y1, x2, y2;
+
+    // Ensure radii are non-zero
+    if(rx === 0 || ry === 0 || (A.x === B.x && A.y === B.y)) {
+      // treat this arc as a straight line segment
+      return [['C', A.x, A.y, B.x, B.y, B.x, B.y]]
+    }
+
+    // Ensure radii are large enough using the algorithm provided in the SVG spec
+    // See: https://www.w3.org/TR/SVG11/implnote.html#ArcCorrectionOutOfRangeRadii
+    primedCoord = new SVG.Point((A.x-B.x)/2, (A.y-B.y)/2).transform(new SVG.Matrix().rotate(xAxisRotation));
+    lambda = (primedCoord.x * primedCoord.x) / (rx * rx) + (primedCoord.y * primedCoord.y) / (ry * ry);
+    if(lambda > 1) {
+      lambda = Math.sqrt(lambda);
+      rx = lambda*rx;
+      ry = lambda*ry;
+    }
+
+    // To simplify calculations, we make the arc part of a unit circle (rayon is 1) instead of an ellipse
+    mat = new SVG.Matrix().rotate(xAxisRotation).scale(1/rx, 1/ry).rotate(-xAxisRotation);
+    A = A.transform(mat);
+    B = B.transform(mat);
+
+    // Calculate the horizontal and vertical distance between the initial and final point of the arc
+    k = [B.x-A.x, B.y-A.y];
+
+    // Find the length of the chord formed by A and B
+    cSquare = k[0]*k[0] + k[1]*k[1];
+    c = Math.sqrt(cSquare);
+
+    // Calculate the ratios of the horizontal and vertical distance on the length of the chord
+    k[0] /= c;
+    k[1] /= c;
+
+    // Calculate the distance between the circle center and the chord midpoint
+    // using this formula: t = sqrt(r^2 - c^2 / 4)
+    // where t is the distance between the cirle center and the chord midpoint,
+    //       r is the rayon of the circle and c is the chord length
+    // From: http://www.ajdesigner.com/phpcircle/circle_segment_chord_t.php
+    // Because of the imprecision of floating point numbers, cSquare might end
+    // up being slightly above 4 which would result in a negative radicand
+    // To prevent that, a test is made before computing the square root
+    t = (cSquare < 4) ? Math.sqrt(1 - cSquare/4) : 0;
+
+    // For most situations, there are actually two different ellipses that
+    // satisfy the constraints imposed by the points A and B, the radii rx and ry,
+    // and the xAxisRotation
+    // When the flags largeArcFlag and sweepFlag are equal, it means that the
+    // second ellipse is used as a solution
+    // See: https://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands
+    if(largeArcFlag === sweepFlag) {
+        t *= -1;
+    }
+
+    // Calculate the coordinates of the center of the circle from the midpoint of the chord
+    // This is done by multiplying the ratios calculated previously by the distance between
+    // the circle center and the chord midpoint and using these values to go from the midpoint
+    // to the center of the circle
+    // The negative of the vertical distance ratio is used to modify the x coordinate while
+    // the horizontal distance ratio is used to modify the y coordinate
+    // That is because the center of the circle is perpendicular to the chord and perpendicular
+    // lines are negative reciprocals
+    O = new SVG.Point((B.x+A.x)/2 + t*-k[1], (B.y+A.y)/2 + t*k[0]);
+    // Move the center of the circle at the origin
+    OA = new SVG.Point(A.x-O.x, A.y-O.y);
+    OB = new SVG.Point(B.x-O.x, B.y-O.y);
+
+    // Calculate the start and end angle
+    tetaStart = Math.acos(OA.x/Math.sqrt(OA.x*OA.x + OA.y*OA.y));
+    if (OA.y < 0) {
+      tetaStart *= -1;
+    }
+    tetaEnd = Math.acos(OB.x/Math.sqrt(OB.x*OB.x + OB.y*OB.y));
+    if (OB.y < 0) {
+      tetaEnd *= -1;
+    }
+
+    // If sweep-flag is '1', then the arc will be drawn in a "positive-angle" direction,
+    // make sure that the end angle is above the start angle
+    if (sweepFlag && tetaStart > tetaEnd) {
+      tetaEnd += 2*Math.PI;
+    }
+    // If sweep-flag is '0', then the arc will be drawn in a "negative-angle" direction,
+    // make sure that the end angle is below the start angle
+    if (!sweepFlag && tetaStart < tetaEnd) {
+      tetaEnd -= 2*Math.PI;
+    }
+
+    // Find the number of Bezier curves that are required to represent the arc
+    // A cubic Bezier curve gives a good enough approximation when representing at most a quarter of a circle
+    nbSectors = Math.ceil(Math.abs(tetaStart-tetaEnd) * 2/Math.PI);
+
+    // Calculate the coordinates of the points of all the Bezier curves required to represent the arc
+    // For an in-depth explanation of this part see: http://pomax.github.io/bezierinfo/#circles_cubic
+    arcSegPoints = [];
+    angle = tetaStart;
+    deltaTeta = (tetaEnd-tetaStart)/nbSectors;
+    f = 4*Math.tan(deltaTeta/4)/3;
+    for (i = 0; i <= nbSectors; i++) { // The <= is because a Bezier curve have a start and a endpoint
+      cosAngle = Math.cos(angle);
+      sinAngle = Math.sin(angle);
+
+      pt = new SVG.Point(O.x+cosAngle, O.y+sinAngle);
+      arcSegPoints[i] = [new SVG.Point(pt.x+f*sinAngle, pt.y-f*cosAngle), pt, new SVG.Point(pt.x-f*sinAngle, pt.y+f*cosAngle)];
+
+      angle += deltaTeta;
+    }
+
+    // Remove the first control point of the first segment point and remove the second control point of the last segment point
+    // These two control points are not used in the approximation of the arc, that is why they are removed
+    arcSegPoints[0][0] = arcSegPoints[0][1].clone();
+    arcSegPoints[arcSegPoints.length-1][2] = arcSegPoints[arcSegPoints.length-1][1].clone();
+
+    // Revert the transformation that was applied to make the arc part of a unit circle instead of an ellipse
+    mat = new SVG.Matrix().rotate(xAxisRotation).scale(rx, ry).rotate(-xAxisRotation);
+    for (i = 0, il = arcSegPoints.length; i < il; i++) {
+      arcSegPoints[i][0] = arcSegPoints[i][0].transform(mat);
+      arcSegPoints[i][1] = arcSegPoints[i][1].transform(mat);
+      arcSegPoints[i][2] = arcSegPoints[i][2].transform(mat);
+    }
+
+
+    // Convert the segments points to SVG curve commands
+    for (i = 1, il = arcSegPoints.length; i < il; i++) {
+      pt = arcSegPoints[i-1][2];
+      x1 = pt.x;
+      y1 = pt.y;
+
+      pt = arcSegPoints[i][0];
+      x2 = pt.x;
+      y2 = pt.y;
+
+      pt = arcSegPoints[i][1];
+      x = pt.x;
+      y = pt.y;
+
+      retVal.push(['C', x1, y1, x2, y2, x, y]);
+    }
+
+    return retVal
+}
+}());
+
+/*! svg.draggable.js - v2.2.1 - 2016-08-25
+* https://github.com/wout/svg.draggable.js
+* Copyright (c) 2016 Wout Fierens; Licensed MIT */
+(function() {
+
+  // creates handler, saves it
+  function DragHandler(el){
+    el.remember('_draggable', this);
+    this.el = el;
+  }
+
+
+  // Sets new parameter, starts dragging
+  DragHandler.prototype.init = function(constraint, val){
+    var _this = this;
+    this.constraint = constraint;
+    this.value = val;
+    this.el.on('mousedown.drag', function(e){ _this.start(e); });
+    this.el.on('touchstart.drag', function(e){ _this.start(e); });
+  };
+
+  // transforms one point from screen to user coords
+  DragHandler.prototype.transformPoint = function(event, offset){
+      event = event || window.event;
+      var touches = event.changedTouches && event.changedTouches[0] || event;
+      this.p.x = touches.pageX - (offset || 0);
+      this.p.y = touches.pageY;
+      return this.p.matrixTransform(this.m)
+  };
+  
+  // gets elements bounding box with special handling of groups, nested and use
+  DragHandler.prototype.getBBox = function(){
+
+    var box = this.el.bbox();
+
+    if(this.el instanceof SVG.Nested) box = this.el.rbox();
+    
+    if (this.el instanceof SVG.G || this.el instanceof SVG.Use || this.el instanceof SVG.Nested) {
+      box.x = this.el.x();
+      box.y = this.el.y();
+    }
+
+    return box
+  };
+
+  // start dragging
+  DragHandler.prototype.start = function(e){
+
+    // check for left button
+    if(e.type == 'click'|| e.type == 'mousedown' || e.type == 'mousemove'){
+      if((e.which || e.buttons) != 1){
+          return
+      }
+    }
+  
+    var _this = this;
+
+    // fire beforedrag event
+    this.el.fire('beforedrag', { event: e, handler: this });
+
+    // search for parent on the fly to make sure we can call
+    // draggable() even when element is not in the dom currently
+    this.parent = this.parent || this.el.parent(SVG.Nested) || this.el.parent(SVG.Doc);
+    this.p = this.parent.node.createSVGPoint();
+
+    // save current transformation matrix
+    this.m = this.el.node.getScreenCTM().inverse();
+
+    var box = this.getBBox();
+    
+    var anchorOffset;
+    
+    // fix text-anchor in text-element (#37)
+    if(this.el instanceof SVG.Text){
+      anchorOffset = this.el.node.getComputedTextLength();
+        
+      switch(this.el.attr('text-anchor')){
+        case 'middle':
+          anchorOffset /= 2;
+          break
+        case 'start':
+          anchorOffset = 0;
+          break;
+      }
+    }
+    
+    this.startPoints = {
+      // We take absolute coordinates since we are just using a delta here
+      point: this.transformPoint(e, anchorOffset),
+      box:   box,
+      transform: this.el.transform()
+    };
+    
+    // add drag and end events to window
+    SVG.on(window, 'mousemove.drag', function(e){ _this.drag(e); });
+    SVG.on(window, 'touchmove.drag', function(e){ _this.drag(e); });
+    SVG.on(window, 'mouseup.drag', function(e){ _this.end(e); });
+    SVG.on(window, 'touchend.drag', function(e){ _this.end(e); });
+
+    // fire dragstart event
+    this.el.fire('dragstart', {event: e, p: this.startPoints.point, m: this.m, handler: this});
+
+    // prevent browser drag behavior
+    e.preventDefault();
+
+    // prevent propagation to a parent that might also have dragging enabled
+    e.stopPropagation();
+  };
+
+  // while dragging
+  DragHandler.prototype.drag = function(e){
+
+    var box = this.getBBox()
+      , p   = this.transformPoint(e)
+      , x   = this.startPoints.box.x + p.x - this.startPoints.point.x
+      , y   = this.startPoints.box.y + p.y - this.startPoints.point.y
+      , c   = this.constraint
+      , gx  = p.x - this.startPoints.point.x
+      , gy  = p.y - this.startPoints.point.y;
+      
+    var event = new CustomEvent('dragmove', {
+        detail: {
+            event: e
+          , p: p
+          , m: this.m
+          , handler: this
+        }
+      , cancelable: true
+    });
+      
+    this.el.fire(event);
+    
+    if(event.defaultPrevented) return p
+
+    // move the element to its new position, if possible by constraint
+    if (typeof c == 'function') {
+
+      var coord = c.call(this.el, x, y, this.m);
+
+      // bool, just show us if movement is allowed or not
+      if (typeof coord == 'boolean') {
+        coord = {
+          x: coord,
+          y: coord
+        };
+      }
+
+      // if true, we just move. If !false its a number and we move it there
+      if (coord.x === true) {
+        this.el.x(x);
+      } else if (coord.x !== false) {
+        this.el.x(coord.x);
+      }
+
+      if (coord.y === true) {
+        this.el.y(y);
+      } else if (coord.y !== false) {
+        this.el.y(coord.y);
+      }
+
+    } else if (typeof c == 'object') {
+
+      // keep element within constrained box
+      if (c.minX != null && x < c.minX)
+        x = c.minX;
+      else if (c.maxX != null && x > c.maxX - box.width){
+        x = c.maxX - box.width;
+      }if (c.minY != null && y < c.minY)
+        y = c.minY;
+      else if (c.maxY != null && y > c.maxY - box.height)
+        y = c.maxY - box.height;
+        
+      if(this.el instanceof SVG.G)
+        this.el.matrix(this.startPoints.transform).transform({x:gx, y: gy}, true);
+      else
+        this.el.move(x, y);
+    }
+    
+    // so we can use it in the end-method, too
+    return p
+  };
+
+  DragHandler.prototype.end = function(e){
+
+    // final drag
+    var p = this.drag(e);
+
+    // fire dragend event
+    this.el.fire('dragend', { event: e, p: p, m: this.m, handler: this });
+
+    // unbind events
+    SVG.off(window, 'mousemove.drag');
+    SVG.off(window, 'touchmove.drag');
+    SVG.off(window, 'mouseup.drag');
+    SVG.off(window, 'touchend.drag');
+
+  };
+
+  SVG.extend(SVG.Element, {
+    // Make element draggable
+    // Constraint might be an object (as described in readme.md) or a function in the form "function (x, y)" that gets called before every move.
+    // The function can return a boolean or an object of the form {x, y}, to which the element will be moved. "False" skips moving, true moves to raw x, y.
+    draggable: function(value, constraint) {
+
+      // Check the parameters and reassign if needed
+      if (typeof value == 'function' || typeof value == 'object') {
+        constraint = value;
+        value = true;
+      }
+
+      var dragHandler = this.remember('_draggable') || new DragHandler(this);
+
+      // When no parameter is given, value is true
+      value = typeof value === 'undefined' ? true : value;
+
+      if(value) dragHandler.init(constraint || {}, value);
+      else {
+        this.off('mousedown.drag');
+        this.off('touchstart.drag');
+      }
+
+      return this
+    }
+
+  });
+
+}).call(undefined);
+
+(function() {
+
+function SelectHandler(el) {
+
+    this.el = el;
+    el.remember('_selectHandler', this);
+    this.pointSelection = {isSelected: false};
+    this.rectSelection = {isSelected: false};
+
+}
+
+SelectHandler.prototype.init = function (value, options) {
+
+    var bbox = this.el.bbox();
+    this.options = {};
+
+    // Merging the defaults and the options-object together
+    for (var i in this.el.selectize.defaults) {
+        this.options[i] = this.el.selectize.defaults[i];
+        if (options[i] !== undefined) {
+            this.options[i] = options[i];
+        }
+    }
+
+    this.parent = this.el.parent();
+    this.nested = (this.nested || this.parent.group());
+    this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y));
+
+    // When deepSelect is enabled and the element is a line/polyline/polygon, draw only points for moving
+    if (this.options.deepSelect && ['line', 'polyline', 'polygon'].indexOf(this.el.type) !== -1) {
+        this.selectPoints(value);
+    } else {
+        this.selectRect(value);
+    }
+
+    this.observe();
+    this.cleanup();
+
+};
+
+SelectHandler.prototype.selectPoints = function (value) {
+
+    this.pointSelection.isSelected = value;
+
+    // When set is already there we dont have to create one
+    if (this.pointSelection.set) {
+        return this;
+    }
+
+    // Create our set of elements
+    this.pointSelection.set = this.parent.set();
+    // draw the circles and mark the element as selected
+    this.drawCircles();
+
+    return this;
+
+};
+
+// create the point-array which contains the 2 points of a line or simply the points-array of polyline/polygon
+SelectHandler.prototype.getPointArray = function () {
+    var bbox = this.el.bbox();
+
+    return this.el.array().valueOf().map(function (el) {
+        return [el[0] - bbox.x, el[1] - bbox.y];
+    });
+};
+
+// The function to draw the circles
+SelectHandler.prototype.drawCircles = function () {
+
+    var _this = this, array = this.getPointArray();
+
+    // go through the array of points
+    for (var i = 0, len = array.length; i < len; ++i) {
+
+        var curriedEvent = (function (k) {
+            return function (ev) {
+                ev = ev || window.event;
+                ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+                ev.stopPropagation();
+
+                var x = ev.pageX || ev.touches[0].pageX;
+                var y = ev.pageY || ev.touches[0].pageY;
+                _this.el.fire('point', {x: x, y: y, i: k, event: ev});
+            };
+        })(i);
+
+        // add every point to the set
+        this.pointSelection.set.add(
+            // a circle with our css-classes and a touchstart-event which fires our event for moving points
+            this.nested.circle(this.options.radius)
+                .center(array[i][0], array[i][1])
+                .addClass(this.options.classPoints)
+                .addClass(this.options.classPoints + '_point')
+                .on('touchstart', curriedEvent)
+                .on('mousedown', curriedEvent)
+        );
+    }
+
+};
+
+// every time a circle is moved, we have to update the positions of our circle
+SelectHandler.prototype.updatePointSelection = function () {
+    var array = this.getPointArray();
+
+    this.pointSelection.set.each(function (i) {
+        if (this.cx() === array[i][0] && this.cy() === array[i][1]) {
+            return;
+        }
+        this.center(array[i][0], array[i][1]);
+    });
+};
+
+SelectHandler.prototype.updateRectSelection = function () {
+    var bbox = this.el.bbox();
+
+    this.rectSelection.set.get(0).attr({
+        width: bbox.width,
+        height: bbox.height
+    });
+
+    // set.get(1) is always in the upper left corner. no need to move it
+    if (this.options.points) {
+        this.rectSelection.set.get(2).center(bbox.width, 0);
+        this.rectSelection.set.get(3).center(bbox.width, bbox.height);
+        this.rectSelection.set.get(4).center(0, bbox.height);
+
+        this.rectSelection.set.get(5).center(bbox.width / 2, 0);
+        this.rectSelection.set.get(6).center(bbox.width, bbox.height / 2);
+        this.rectSelection.set.get(7).center(bbox.width / 2, bbox.height);
+        this.rectSelection.set.get(8).center(0, bbox.height / 2);
+    }
+
+    if (this.options.rotationPoint) {
+        if (this.options.points) {
+            this.rectSelection.set.get(9).center(bbox.width / 2, 20);
+        } else {
+            this.rectSelection.set.get(1).center(bbox.width / 2, 20);
+        }
+    }
+};
+
+SelectHandler.prototype.selectRect = function (value) {
+
+    var _this = this, bbox = this.el.bbox();
+
+    this.rectSelection.isSelected = value;
+
+    // when set is already p
+    this.rectSelection.set = this.rectSelection.set || this.parent.set();
+
+    // helperFunction to create a mouse-down function which triggers the event specified in `eventName`
+    function getMoseDownFunc(eventName) {
+        return function (ev) {
+            ev = ev || window.event;
+            ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+            ev.stopPropagation();
+
+            var x = ev.pageX || ev.touches[0].pageX;
+            var y = ev.pageY || ev.touches[0].pageY;
+            _this.el.fire(eventName, {x: x, y: y, event: ev});
+        };
+    }
+
+    // create the selection-rectangle and add the css-class
+    if (!this.rectSelection.set.get(0)) {
+        this.rectSelection.set.add(this.nested.rect(bbox.width, bbox.height).addClass(this.options.classRect));
+    }
+
+    // Draw Points at the edges, if enabled
+    if (this.options.points && !this.rectSelection.set.get(1)) {
+        var ename ="touchstart", mname = "mousedown";
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, 0).attr('class', this.options.classPoints + '_lt').on(mname, getMoseDownFunc('lt')).on(ename, getMoseDownFunc('lt')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, 0).attr('class', this.options.classPoints + '_rt').on(mname, getMoseDownFunc('rt')).on(ename, getMoseDownFunc('rt')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, bbox.height).attr('class', this.options.classPoints + '_rb').on(mname, getMoseDownFunc('rb')).on(ename, getMoseDownFunc('rb')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, bbox.height).attr('class', this.options.classPoints + '_lb').on(mname, getMoseDownFunc('lb')).on(ename, getMoseDownFunc('lb')));
+
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, 0).attr('class', this.options.classPoints + '_t').on(mname, getMoseDownFunc('t')).on(ename, getMoseDownFunc('t')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, bbox.height / 2).attr('class', this.options.classPoints + '_r').on(mname, getMoseDownFunc('r')).on(ename, getMoseDownFunc('r')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, bbox.height).attr('class', this.options.classPoints + '_b').on(mname, getMoseDownFunc('b')).on(ename, getMoseDownFunc('b')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, bbox.height / 2).attr('class', this.options.classPoints + '_l').on(mname, getMoseDownFunc('l')).on(ename, getMoseDownFunc('l')));
+
+        this.rectSelection.set.each(function () {
+            this.addClass(_this.options.classPoints);
+        });
+    }
+
+    // draw rotationPint, if enabled
+    if (this.options.rotationPoint && ((this.options.points && !this.rectSelection.set.get(9)) || (!this.options.points && !this.rectSelection.set.get(1)))) {
+
+        var curriedEvent = function (ev) {
+            ev = ev || window.event;
+            ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+            ev.stopPropagation();
+
+            var x = ev.pageX || ev.touches[0].pageX;
+            var y = ev.pageY || ev.touches[0].pageY;
+            _this.el.fire('rot', {x: x, y: y, event: ev});
+        };
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, 20).attr('class', this.options.classPoints + '_rot')
+            .on("touchstart", curriedEvent).on("mousedown", curriedEvent));
+
+    }
+
+};
+
+SelectHandler.prototype.handler = function () {
+
+    var bbox = this.el.bbox();
+    this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y));
+
+    if (this.rectSelection.isSelected) {
+        this.updateRectSelection();
+    }
+
+    if (this.pointSelection.isSelected) {
+        this.updatePointSelection();
+    }
+
+};
+
+SelectHandler.prototype.observe = function () {
+    var _this = this;
+
+    if (MutationObserver) {
+        if (this.rectSelection.isSelected || this.pointSelection.isSelected) {
+            this.observerInst = this.observerInst || new MutationObserver(function () {
+                _this.handler();
+            });
+            this.observerInst.observe(this.el.node, {attributes: true});
+        } else {
+            try {
+                this.observerInst.disconnect();
+                delete this.observerInst;
+            } catch (e) {
+            }
+        }
+    } else {
+        this.el.off('DOMAttrModified.select');
+
+        if (this.rectSelection.isSelected || this.pointSelection.isSelected) {
+            this.el.on('DOMAttrModified.select', function () {
+                _this.handler();
+            });
+        }
+    }
+};
+
+SelectHandler.prototype.cleanup = function () {
+
+    //var _this = this;
+
+    if (!this.rectSelection.isSelected && this.rectSelection.set) {
+        // stop watching the element, remove the selection
+        this.rectSelection.set.each(function () {
+            this.remove();
+        });
+
+        this.rectSelection.set.clear();
+        delete this.rectSelection.set;
+    }
+
+    if (!this.pointSelection.isSelected && this.pointSelection.set) {
+        // Remove all points, clear the set, stop watching the element
+        this.pointSelection.set.each(function () {
+            this.remove();
+        });
+
+        this.pointSelection.set.clear();
+        delete this.pointSelection.set;
+    }
+
+    if (!this.pointSelection.isSelected && !this.rectSelection.isSelected) {
+        this.nested.remove();
+        delete this.nested;
+
+    }
+};
+
+
+SVG.extend(SVG.Element, {
+    // Select element with mouse
+    selectize: function (value, options) {
+
+        // Check the parameters and reassign if needed
+        if (typeof value === 'object') {
+            options = value;
+            value = true;
+        }
+
+        var selectHandler = this.remember('_selectHandler') || new SelectHandler(this);
+
+        selectHandler.init(value === undefined ? true : value, options || {});
+
+        return this;
+
+    }
+});
+
+SVG.Element.prototype.selectize.defaults = {
+    points: true,                            // If true, points at the edges are drawn. Needed for resize!
+    classRect: 'svg_select_boundingRect',    // Css-class added to the rect
+    classPoints: 'svg_select_points',        // Css-class added to the points
+    radius: 7,                               // radius of the points
+    rotationPoint: true,                     // If true, rotation point is drawn. Needed for rotation!
+    deepSelect: false                        // If true, moving of single points is possible (only line, polyline, polyon)
+};
+}());
+
+(function() {
+(function () {
+
+    function ResizeHandler(el) {
+
+        el.remember('_resizeHandler', this);
+
+        this.el = el;
+        this.parameters = {};
+        this.lastUpdateCall = null;
+        this.p = el.doc().node.createSVGPoint();
+    }
+
+    ResizeHandler.prototype.transformPoint = function(x, y, m){
+
+        this.p.x = x - (this.offset.x - window.pageXOffset);
+        this.p.y = y - (this.offset.y - window.pageYOffset);
+
+        return this.p.matrixTransform(m || this.m);
+
+    };
+
+    ResizeHandler.prototype._extractPosition = function(event) {
+        // Extract a position from a mouse/touch event.
+        // Returns { x: .., y: .. }
+        return {
+            x: event.clientX != null ? event.clientX : event.touches[0].clientX,
+            y: event.clientY != null ? event.clientY : event.touches[0].clientY
+        }
+    };
+
+    ResizeHandler.prototype.init = function (options) {
+
+        var _this = this;
+
+        this.stop();
+
+        if (options === 'stop') {
+            return;
+        }
+
+        this.options = {};
+
+        // Merge options and defaults
+        for (var i in this.el.resize.defaults) {
+            this.options[i] = this.el.resize.defaults[i];
+            if (typeof options[i] !== 'undefined') {
+                this.options[i] = options[i];
+            }
+        }
+
+        // We listen to all these events which are specifying different edges
+        this.el.on('lt.resize', function(e){ _this.resize(e || window.event); });  // Left-Top
+        this.el.on('rt.resize', function(e){ _this.resize(e || window.event); });  // Right-Top
+        this.el.on('rb.resize', function(e){ _this.resize(e || window.event); });  // Right-Bottom
+        this.el.on('lb.resize', function(e){ _this.resize(e || window.event); });  // Left-Bottom
+
+        this.el.on('t.resize', function(e){ _this.resize(e || window.event); });   // Top
+        this.el.on('r.resize', function(e){ _this.resize(e || window.event); });   // Right
+        this.el.on('b.resize', function(e){ _this.resize(e || window.event); });   // Bottom
+        this.el.on('l.resize', function(e){ _this.resize(e || window.event); });   // Left
+
+        this.el.on('rot.resize', function(e){ _this.resize(e || window.event); }); // Rotation
+
+        this.el.on('point.resize', function(e){ _this.resize(e || window.event); }); // Point-Moving
+
+        // This call ensures, that the plugin reacts to a change of snapToGrid immediately
+        this.update();
+
+    };
+
+    ResizeHandler.prototype.stop = function(){
+        this.el.off('lt.resize');
+        this.el.off('rt.resize');
+        this.el.off('rb.resize');
+        this.el.off('lb.resize');
+
+        this.el.off('t.resize');
+        this.el.off('r.resize');
+        this.el.off('b.resize');
+        this.el.off('l.resize');
+
+        this.el.off('rot.resize');
+
+        this.el.off('point.resize');
+
+        return this;
+    };
+
+    ResizeHandler.prototype.resize = function (event) {
+
+        var _this = this;
+
+        this.m = this.el.node.getScreenCTM().inverse();
+        this.offset = { x: window.pageXOffset, y: window.pageYOffset };
+
+        var txPt = this._extractPosition(event.detail.event);
+        this.parameters = {
+            type: this.el.type, // the type of element
+            p: this.transformPoint(txPt.x, txPt.y),
+            x: event.detail.x,      // x-position of the mouse when resizing started
+            y: event.detail.y,      // y-position of the mouse when resizing started
+            box: this.el.bbox(),    // The bounding-box of the element
+            rotation: this.el.transform().rotation  // The current rotation of the element
+        };
+
+        // Add font-size parameter if the element type is text
+        if (this.el.type === "text") {
+            this.parameters.fontSize = this.el.attr()["font-size"];
+        }
+
+        // the i-param in the event holds the index of the point which is moved, when using `deepSelect`
+        if (event.detail.i !== undefined) {
+
+            // get the point array
+            var array = this.el.array().valueOf();
+
+            // Save the index and the point which is moved
+            this.parameters.i = event.detail.i;
+            this.parameters.pointCoords = [array[event.detail.i][0], array[event.detail.i][1]];
+        }
+
+        // Lets check which edge of the bounding-box was clicked and resize the this.el according to this
+        switch (event.type) {
+
+            // Left-Top-Edge
+            case 'lt':
+                // We build a calculating function for every case which gives us the new position of the this.el
+                this.calc = function (diffX, diffY) {
+                    // The procedure is always the same
+                    // First we snap the edge to the given grid (snapping to 1px grid is normal resizing)
+                    var snap = this.snapToGrid(diffX, diffY);
+
+                    // Now we check if the new height and width still valid (> 0)
+                    if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height - snap[1] > 0) {
+                        // ...if valid, we resize the this.el (which can include moving because the coord-system starts at the left-top and this edge is moving sometimes when resized)
+
+                        /*
+                         * but first check if the element is text box, so we can change the font size instead of
+                         * the width and height
+                         */
+
+                        if (this.parameters.type === "text") {
+                            this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y);
+                            this.el.attr("font-size", this.parameters.fontSize - snap[0]);
+                            return;
+                        }
+
+                        snap = this.checkAspectRatio(snap);
+
+                        this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y + snap[1]).size(this.parameters.box.width - snap[0], this.parameters.box.height - snap[1]);
+                    }
+                };
+                break;
+
+            // Right-Top
+            case 'rt':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 1 << 1);
+                    if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height - snap[1] > 0) {
+                        if (this.parameters.type === "text") {
+                            this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y);
+                            this.el.attr("font-size", this.parameters.fontSize + snap[0]);
+                            return;
+                        }
+
+                        snap = this.checkAspectRatio(snap);
+
+                        this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).size(this.parameters.box.width + snap[0], this.parameters.box.height - snap[1]);
+                    }
+                };
+                break;
+
+            // Right-Bottom
+            case 'rb':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 0);
+                    if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height + snap[1] > 0) {
+                        if (this.parameters.type === "text") {
+                            this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y);
+                            this.el.attr("font-size", this.parameters.fontSize + snap[0]);
+                            return;
+                        }
+
+                        snap = this.checkAspectRatio(snap);
+
+                        this.el.move(this.parameters.box.x, this.parameters.box.y).size(this.parameters.box.width + snap[0], this.parameters.box.height + snap[1]);
+                    }
+                };
+                break;
+
+            // Left-Bottom
+            case 'lb':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 1);
+                    if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height + snap[1] > 0) {
+                        if (this.parameters.type === "text") {
+                            this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y);
+                            this.el.attr("font-size", this.parameters.fontSize - snap[0]);
+                            return;
+                        }
+
+                        snap = this.checkAspectRatio(snap);
+
+                        this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).size(this.parameters.box.width - snap[0], this.parameters.box.height + snap[1]);
+                    }
+                };
+                break;
+
+            // Top
+            case 't':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 1 << 1);
+                    if (this.parameters.box.height - snap[1] > 0) {
+                        // Disable the font-resizing if it is not from the corner of bounding-box
+                        if (this.parameters.type === "text") {
+                            return;
+                        }
+
+                        this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).height(this.parameters.box.height - snap[1]);
+                    }
+                };
+                break;
+
+            // Right
+            case 'r':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 0);
+                    if (this.parameters.box.width + snap[0] > 0) {
+                        if (this.parameters.type === "text") {
+                            return;
+                        }
+
+                        this.el.move(this.parameters.box.x, this.parameters.box.y).width(this.parameters.box.width + snap[0]);
+                    }
+                };
+                break;
+
+            // Bottom
+            case 'b':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 0);
+                    if (this.parameters.box.height + snap[1] > 0) {
+                        if (this.parameters.type === "text") {
+                            return;
+                        }
+
+                        this.el.move(this.parameters.box.x, this.parameters.box.y).height(this.parameters.box.height + snap[1]);
+                    }
+                };
+                break;
+
+            // Left
+            case 'l':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 1);
+                    if (this.parameters.box.width - snap[0] > 0) {
+                        if (this.parameters.type === "text") {
+                            return;
+                        }
+
+                        this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).width(this.parameters.box.width - snap[0]);
+                    }
+                };
+                break;
+
+            // Rotation
+            case 'rot':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+
+                    // yes this is kinda stupid but we need the mouse coords back...
+                    var current = {x: diffX + this.parameters.p.x, y: diffY + this.parameters.p.y};
+
+                    // start minus middle
+                    var sAngle = Math.atan2((this.parameters.p.y - this.parameters.box.y - this.parameters.box.height / 2), (this.parameters.p.x - this.parameters.box.x - this.parameters.box.width / 2));
+
+                    // end minus middle
+                    var pAngle = Math.atan2((current.y - this.parameters.box.y - this.parameters.box.height / 2), (current.x - this.parameters.box.x - this.parameters.box.width / 2));
+
+                    var angle = (pAngle - sAngle) * 180 / Math.PI;
+
+                    // We have to move the element to the center of the box first and change the rotation afterwards
+                    // because rotation always works around a rotation-center, which is changed when moving the element
+                    // We also set the new rotation center to the center of the box.
+                    this.el.center(this.parameters.box.cx, this.parameters.box.cy).rotate(this.parameters.rotation + angle - angle % this.options.snapToAngle, this.parameters.box.cx, this.parameters.box.cy);
+                };
+                break;
+
+            // Moving one single Point (needed when an element is deepSelected which means you can move every single point of the object)
+            case 'point':
+                this.calc = function (diffX, diffY) {
+
+                    // Snapping the point to the grid
+                    var snap = this.snapToGrid(diffX, diffY, this.parameters.pointCoords[0], this.parameters.pointCoords[1]);
+
+                    // Get the point array
+                    var array = this.el.array().valueOf();
+
+                    // Changing the moved point in the array
+                    array[this.parameters.i][0] = this.parameters.pointCoords[0] + snap[0];
+                    array[this.parameters.i][1] = this.parameters.pointCoords[1] + snap[1];
+
+                    // And plot the new this.el
+                    this.el.plot(array);
+                };
+        }
+
+        this.el.fire('resizestart', {dx: this.parameters.x, dy: this.parameters.y, event: event});
+        // When resizing started, we have to register events for...
+        // Touches.
+        SVG.on(window, 'touchmove.resize', function(e) {
+            _this.update(e || window.event);
+        });
+        SVG.on(window, 'touchend.resize', function() {
+            _this.done();
+        });
+        // Mouse.
+        SVG.on(window, 'mousemove.resize', function (e) {
+            _this.update(e || window.event);
+        });
+        SVG.on(window, 'mouseup.resize', function () {
+            _this.done();
+        });
+
+    };
+
+    // The update-function redraws the element every time the mouse is moving
+    ResizeHandler.prototype.update = function (event) {
+
+        if (!event) {
+            if (this.lastUpdateCall) {
+                this.calc(this.lastUpdateCall[0], this.lastUpdateCall[1]);
+            }
+            return;
+        }
+
+        // Calculate the difference between the mouseposition at start and now
+        var txPt = this._extractPosition(event);
+        var p = this.transformPoint(txPt.x, txPt.y);
+
+        var diffX = p.x - this.parameters.p.x,
+            diffY = p.y - this.parameters.p.y;
+
+        this.lastUpdateCall = [diffX, diffY];
+
+        // Calculate the new position and height / width of the element
+        this.calc(diffX, diffY);
+
+       // Emit an event to say we have changed.
+        this.el.fire('resizing', {dx: diffX, dy: diffY, event: event});
+    };
+
+    // Is called on mouseup.
+    // Removes the update-function from the mousemove event
+    ResizeHandler.prototype.done = function () {
+        this.lastUpdateCall = null;
+        SVG.off(window, 'mousemove.resize');
+        SVG.off(window, 'mouseup.resize');
+        SVG.off(window, 'touchmove.resize');
+        SVG.off(window, 'touchend.resize');
+        this.el.fire('resizedone');
+    };
+
+    // The flag is used to determine whether the resizing is used with a left-Point (first bit) and top-point (second bit)
+    // In this cases the temp-values are calculated differently
+    ResizeHandler.prototype.snapToGrid = function (diffX, diffY, flag, pointCoordsY) {
+
+        var temp;
+
+        // If `pointCoordsY` is given, a single Point has to be snapped (deepSelect). That's why we need a different temp-value
+        if (typeof pointCoordsY !== 'undefined') {
+            // Note that flag = pointCoordsX in this case
+            temp = [(flag + diffX) % this.options.snapToGrid, (pointCoordsY + diffY) % this.options.snapToGrid];
+        } else {
+            // We check if the flag is set and if not we set a default-value (both bits set - which means upper-left-edge)
+            flag = flag == null ? 1 | 1 << 1 : flag;
+            temp = [(this.parameters.box.x + diffX + (flag & 1 ? 0 : this.parameters.box.width)) % this.options.snapToGrid, (this.parameters.box.y + diffY + (flag & (1 << 1) ? 0 : this.parameters.box.height)) % this.options.snapToGrid];
+        }
+
+
+        diffX -= (Math.abs(temp[0]) < this.options.snapToGrid / 2 ?
+                  temp[0] :
+                  temp[0] - (diffX < 0 ? -this.options.snapToGrid : this.options.snapToGrid));
+        diffY -= (Math.abs(temp[1]) < this.options.snapToGrid / 2 ?
+                  temp[1] :
+                  temp[1] - (diffY < 0 ? -this.options.snapToGrid : this.options.snapToGrid));
+
+        return this.constraintToBox(diffX, diffY, flag, pointCoordsY);
+
+    };
+
+    // keep element within constrained box
+    ResizeHandler.prototype.constraintToBox = function (diffX, diffY, flag, pointCoordsY) {
+        //return [diffX, diffY]
+        var c = this.options.constraint || {};
+        var orgX, orgY;
+
+        if (typeof pointCoordsY !== 'undefined') {
+          orgX = flag;
+          orgY = pointCoordsY;
+        } else {
+          orgX = this.parameters.box.x + (flag & 1 ? 0 : this.parameters.box.width);
+          orgY = this.parameters.box.y + (flag & (1<<1) ? 0 : this.parameters.box.height);
+        }
+
+        if (typeof c.minX !== 'undefined' && orgX + diffX < c.minX) {
+          diffX = c.minX - orgX;
+        }
+
+        if (typeof c.maxX !== 'undefined' && orgX + diffX > c.maxX) {
+          diffX = c.maxX - orgX;
+        }
+
+        if (typeof c.minY !== 'undefined' && orgY + diffY < c.minY) {
+          diffY = c.minY - orgY;
+        }
+
+        if (typeof c.maxY !== 'undefined' && orgY + diffY > c.maxY) {
+          diffY = c.maxY - orgY;
+        }
+
+        return [diffX, diffY];
+    };
+
+    ResizeHandler.prototype.checkAspectRatio = function (snap) {
+        if (!this.options.saveAspectRatio) {
+            return snap;
+        }
+
+        var updatedSnap = snap.slice();
+        var aspectRatio = this.parameters.box.width / this.parameters.box.height;
+        var newW = this.parameters.box.width + snap[0];
+        var newH = this.parameters.box.height - snap[1];
+        var newAspectRatio = newW / newH;
+
+        if (newAspectRatio < aspectRatio) {
+            // Height is too big. Adapt it
+            updatedSnap[1] = newW / aspectRatio - this.parameters.box.height;
+        } else if (newAspectRatio > aspectRatio) {
+            // Width is too big. Adapt it
+            updatedSnap[0] = this.parameters.box.width - newH * aspectRatio;
+        }
+
+        return updatedSnap;
+
+    };
+
+    SVG.extend(SVG.Element, {
+        // Resize element with mouse
+        resize: function (options) {
+
+            (this.remember('_resizeHandler') || new ResizeHandler(this)).init(options || {});
+
+            return this;
+
+        }
+
+    });
+
+    SVG.Element.prototype.resize.defaults = {
+        snapToAngle: 0.1,       // Specifies the speed the rotation is happening when moving the mouse
+        snapToGrid: 1,          // Snaps to a grid of `snapToGrid` Pixels
+        constraint: {},         // keep element within constrained box
+        saveAspectRatio: false  // Save aspect ratio when resizing using lt, rt, rb or lb points
+    };
+
+}).call(this);
+}());
+
+function styleInject(css, ref) {
+  if ( ref === void 0 ) ref = {};
+  var insertAt = ref.insertAt;
+
+  if (!css || typeof document === 'undefined') { return; }
+
+  var head = document.head || document.getElementsByTagName('head')[0];
+  var style = document.createElement('style');
+  style.type = 'text/css';
+
+  if (insertAt === 'top') {
+    if (head.firstChild) {
+      head.insertBefore(style, head.firstChild);
+    } else {
+      head.appendChild(style);
+    }
+  } else {
+    head.appendChild(style);
+  }
+
+  if (style.styleSheet) {
+    style.styleSheet.cssText = css;
+  } else {
+    style.appendChild(document.createTextNode(css));
+  }
+}
+
+var css = ".apexcharts-canvas {\n  position: relative;\n  user-select: none;\n  /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */\n}\n\n/* scrollbar is not visible by default for legend, hence forcing the visibility */\n.apexcharts-canvas ::-webkit-scrollbar {\n  -webkit-appearance: none;\n  width: 6px;\n}\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n  border-radius: 4px;\n  background-color: rgba(0,0,0,.5);\n  box-shadow: 0 0 1px rgba(255,255,255,.5);\n  -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5);\n}\n.apexcharts-canvas.dark {\n  background: #343F57;\n}\n\n.apexcharts-inner {\n  position: relative;\n}\n\n.legend-mouseover-inactive {\n  transition: 0.15s ease all;\n  opacity: 0.20;\n}\n\n.apexcharts-series-collapsed {\n  opacity: 0;\n}\n\n.apexcharts-gridline, .apexcharts-text {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip {\n  border-radius: 5px;\n  box-shadow: 2px 2px 6px -4px #999;\n  cursor: default;\n  font-size: 14px;\n  left: 62px;\n  opacity: 0;\n  pointer-events: none;\n  position: absolute;\n  top: 20px;\n  overflow: hidden;\n  white-space: nowrap;\n  z-index: 12;\n  transition: 0.15s ease all;\n}\n.apexcharts-tooltip.light {\n  border: 1px solid #e3e3e3;\n  background: rgba(255, 255, 255, 0.96);\n}\n.apexcharts-tooltip.dark {\n  color: #fff;\n  background: rgba(30,30,30, 0.8);\n}\n.apexcharts-tooltip * {\n  font-family: inherit;\n}\n\n.apexcharts-tooltip .apexcharts-marker,\n.apexcharts-area-series .apexcharts-area,\n.apexcharts-line {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-tooltip-title {\n  padding: 6px;\n  font-size: 15px;\n  margin-bottom: 4px;\n}\n.apexcharts-tooltip.light .apexcharts-tooltip-title {\n  background: #ECEFF1;\n  border-bottom: 1px solid #ddd;\n}\n.apexcharts-tooltip.dark .apexcharts-tooltip-title {\n  background: rgba(0, 0, 0, 0.7);\n  border-bottom: 1px solid #333;\n}\n\n.apexcharts-tooltip-text-value,\n.apexcharts-tooltip-text-z-value {\n  display: inline-block;\n  font-weight: 600;\n  margin-left: 5px;\n}\n\n.apexcharts-tooltip-text-z-label:empty,\n.apexcharts-tooltip-text-z-value:empty {\n  display: none;\n}\n\n.apexcharts-tooltip-text-value, \n.apexcharts-tooltip-text-z-value {\n  font-weight: 600;\n}\n\n.apexcharts-tooltip-marker {\n  width: 12px;\n  height: 12px;\n  position: relative;\n  top: 0px;\n  margin-right: 10px;\n  border-radius: 50%;\n}\n\n.apexcharts-tooltip-series-group {\n  padding: 0 10px;\n  display: none;\n  text-align: left;\n  justify-content: left;\n  align-items: center;\n}\n\n.apexcharts-tooltip-series-group.active .apexcharts-tooltip-marker {\n  opacity: 1;\n}\n.apexcharts-tooltip-series-group.active, .apexcharts-tooltip-series-group:last-child {\n  padding-bottom: 4px;\n}\n.apexcharts-tooltip-series-group-hidden {\n  opacity: 0;\n  height: 0;\n  line-height: 0;\n  padding: 0 !important;\n}\n.apexcharts-tooltip-y-group {\n  padding: 6px 0 5px;\n}\n.apexcharts-tooltip-candlestick {\n  padding: 4px 8px;\n}\n.apexcharts-tooltip-candlestick > div {\n  margin: 4px 0;\n}\n.apexcharts-tooltip-candlestick span.value {\n  font-weight: bold;\n}\n\n.apexcharts-tooltip-rangebar {\n  padding: 5px 8px;\n}\n\n.apexcharts-tooltip-rangebar .category {\n  font-weight: 600;\n  color: #777;\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n  font-weight: bold;\n  display: block;\n  margin-bottom: 5px;\n}\n\n.apexcharts-xaxistooltip {\n  opacity: 0;\n  padding: 9px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-xaxistooltip:after, .apexcharts-xaxistooltip:before {\n\tleft: 50%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n\n.apexcharts-xaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-left: -6px;\n}\n.apexcharts-xaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-left: -7px;\n}\n\n.apexcharts-xaxistooltip-bottom:after, .apexcharts-xaxistooltip-bottom:before {\n  bottom: 100%;\n}\n\n.apexcharts-xaxistooltip-top:after, .apexcharts-xaxistooltip-top:before {\n  top: 100%;\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n  border-bottom-color: #ECEFF1;\n}\n.apexcharts-xaxistooltip-bottom:before {\n  border-bottom-color: #90A4AE;\n}\n\n.apexcharts-xaxistooltip-bottom.dark:after {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-bottom.dark:before {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-top:after {\n  border-top-color:#ECEFF1\n}\n.apexcharts-xaxistooltip-top:before {\n  border-top-color: #90A4AE;\n}\n.apexcharts-xaxistooltip-top.dark:after {\n  border-top-color:rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-top.dark:before {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n\n\n.apexcharts-xaxistooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-yaxistooltip {\n  opacity: 0;\n  padding: 4px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n}\n\n.apexcharts-yaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-yaxistooltip:after, .apexcharts-yaxistooltip:before {\n\ttop: 50%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n.apexcharts-yaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-top: -6px;\n}\n.apexcharts-yaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-top: -7px;\n}\n\n.apexcharts-yaxistooltip-left:after, .apexcharts-yaxistooltip-left:before {\n  left: 100%;\n}\n\n.apexcharts-yaxistooltip-right:after, .apexcharts-yaxistooltip-right:before {\n  right: 100%;\n}\n\n.apexcharts-yaxistooltip-left:after {\n  border-left-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-left:before {\n  border-left-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-left.dark:after {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-left.dark:before {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-right:after {\n  border-right-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-right:before {\n  border-right-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-right.dark:after {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-right.dark:before {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip.active {\n  opacity: 1;\n}\n\n.apexcharts-xcrosshairs, .apexcharts-ycrosshairs {\n  pointer-events: none;\n  opacity: 0;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xcrosshairs.active, .apexcharts-ycrosshairs.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-ycrosshairs-hidden {\n  opacity: 0;\n}\n\n.apexcharts-zoom-rect {\n  pointer-events: none;\n}\n.apexcharts-selection-rect {\n  cursor: move;\n}\n\n.svg_select_points, .svg_select_points_rot {\n  opacity: 0;\n  visibility: hidden;\n}\n.svg_select_points_l, .svg_select_points_r {\n  cursor: ew-resize;\n  opacity: 1;\n  visibility: visible;\n  fill: #888;\n}\n.apexcharts-canvas.zoomable .hovering-zoom {\n  cursor: crosshair\n}\n.apexcharts-canvas.zoomable .hovering-pan {\n  cursor: move\n}\n\n.apexcharts-xaxis,\n.apexcharts-yaxis {\n  pointer-events: none;\n}\n\n.apexcharts-zoom-icon, \n.apexcharts-zoom-in-icon,\n.apexcharts-zoom-out-icon,\n.apexcharts-reset-zoom-icon, \n.apexcharts-pan-icon, \n.apexcharts-selection-icon,\n.apexcharts-menu-icon, \n.apexcharts-toolbar-custom-icon {\n  cursor: pointer;\n  width: 20px;\n  height: 20px;\n  line-height: 24px;\n  color: #6E8192;\n  text-align: center;\n}\n\n\n.apexcharts-zoom-icon svg, \n.apexcharts-zoom-in-icon svg,\n.apexcharts-zoom-out-icon svg,\n.apexcharts-reset-zoom-icon svg,\n.apexcharts-menu-icon svg {\n  fill: #6E8192;\n}\n.apexcharts-selection-icon svg {\n  fill: #444;\n  transform: scale(0.76)\n}\n\n.dark .apexcharts-zoom-icon svg, \n.dark .apexcharts-zoom-in-icon svg,\n.dark .apexcharts-zoom-out-icon svg,\n.dark .apexcharts-reset-zoom-icon svg, \n.dark .apexcharts-pan-icon svg, \n.dark .apexcharts-selection-icon svg,\n.dark .apexcharts-menu-icon svg, \n.dark .apexcharts-toolbar-custom-icon svg{\n  fill: #f3f4f5;\n}\n\n.apexcharts-canvas .apexcharts-zoom-icon.selected svg, \n.apexcharts-canvas .apexcharts-selection-icon.selected svg, \n.apexcharts-canvas .apexcharts-reset-zoom-icon.selected svg {\n  fill: #008FFB;\n}\n.light .apexcharts-selection-icon:not(.selected):hover svg,\n.light .apexcharts-zoom-icon:not(.selected):hover svg, \n.light .apexcharts-zoom-in-icon:hover svg, \n.light .apexcharts-zoom-out-icon:hover svg, \n.light .apexcharts-reset-zoom-icon:hover svg, \n.light .apexcharts-menu-icon:hover svg {\n  fill: #333;\n}\n\n.apexcharts-selection-icon, .apexcharts-menu-icon {\n  position: relative;\n}\n.apexcharts-reset-zoom-icon {\n  margin-left: 5px;\n}\n.apexcharts-zoom-icon, .apexcharts-reset-zoom-icon, .apexcharts-menu-icon {\n  transform: scale(0.85);\n}\n\n.apexcharts-zoom-in-icon, .apexcharts-zoom-out-icon {\n  transform: scale(0.7)\n}\n\n.apexcharts-zoom-out-icon {\n  margin-right: 3px;\n}\n\n.apexcharts-pan-icon {\n  transform: scale(0.62);\n  position: relative;\n  left: 1px;\n  top: 0px;\n}\n.apexcharts-pan-icon svg {\n  fill: #fff;\n  stroke: #6E8192;\n  stroke-width: 2;\n}\n.apexcharts-pan-icon.selected svg {\n  stroke: #008FFB;\n}\n.apexcharts-pan-icon:not(.selected):hover svg {\n  stroke: #333;\n}\n\n.apexcharts-toolbar {\n  position: absolute;\n  z-index: 11;\n  top: 0px;\n  right: 3px;\n  max-width: 176px;\n  text-align: right;\n  border-radius: 3px;\n  padding: 0px 6px 2px 6px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center; \n}\n\n.apexcharts-toolbar svg {\n  pointer-events: none;\n}\n\n.apexcharts-menu {\n  background: #fff;\n  position: absolute;\n  top: 100%;\n  border: 1px solid #ddd;\n  border-radius: 3px;\n  padding: 3px;\n  right: 10px;\n  opacity: 0;\n  min-width: 110px;\n  transition: 0.15s ease all;\n  pointer-events: none;\n}\n\n.apexcharts-menu.open {\n  opacity: 1;\n  pointer-events: all;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-menu-item {\n  padding: 6px 7px;\n  font-size: 12px;\n  cursor: pointer;\n}\n.light .apexcharts-menu-item:hover {\n  background: #eee;\n}\n.dark .apexcharts-menu {\n  background: rgba(0, 0, 0, 0.7);\n  color: #fff;\n}\n\n@media screen and (min-width: 768px) {\n  .apexcharts-toolbar {\n    /*opacity: 0;*/\n  }\n\n  .apexcharts-canvas:hover .apexcharts-toolbar {\n    opacity: 1;\n  } \n}\n\n.apexcharts-datalabel.hidden {\n  opacity: 0;\n}\n\n.apexcharts-pie-label,\n.apexcharts-datalabel, .apexcharts-datalabel-label, .apexcharts-datalabel-value {\n  cursor: default;\n  pointer-events: none;\n}\n\n.apexcharts-pie-label-delay {\n  opacity: 0;\n  animation-name: opaque;\n  animation-duration: 0.3s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease;\n}\n\n.apexcharts-canvas .hidden {\n  opacity: 0;\n}\n\n.apexcharts-hide .apexcharts-series-points {\n  opacity: 0;\n}\n\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, .apexcharts-radar-series path, .apexcharts-radar-series polygon {\n  pointer-events: none;\n}\n\n/* markers */\n\n.apexcharts-marker {\n  transition: 0.15s ease all;\n}\n\n@keyframes opaque {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}";
+styleInject(css);
+
+/*
+ * classList.js: Cross-browser full element.classList implementation.
+ * 1.2.20171210
+ *
+ * By Eli Grey, http://eligrey.com
+ * License: Dedicated to the public domain.
+ *   See https://github.com/eligrey/classList.js/blob/master/LICENSE.md
+ */
+
+/*global self, document, DOMException */
+
+/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */
+if ("document" in self) {
+  // Full polyfill for browsers with no classList support
+  // Including IE < Edge missing SVGElement.classList
+  if (!("classList" in document.createElement("_")) || document.createElementNS && !("classList" in document.createElementNS("http://www.w3.org/2000/svg", "g"))) {
+    (function (view) {
+
+      if (!('Element' in view)) return;
+
+      var classListProp = "classList",
+          protoProp = "prototype",
+          elemCtrProto = view.Element[protoProp],
+          objCtr = Object,
+          strTrim = String[protoProp].trim || function () {
+        return this.replace(/^\s+|\s+$/g, "");
+      },
+          arrIndexOf = Array[protoProp].indexOf || function (item) {
+        var i = 0,
+            len = this.length;
+
+        for (; i < len; i++) {
+          if (i in this && this[i] === item) {
+            return i;
+          }
+        }
+
+        return -1;
+      } // Vendors: please allow content code to instantiate DOMExceptions
+      ,
+          DOMEx = function DOMEx(type, message) {
+        this.name = type;
+        this.code = DOMException[type];
+        this.message = message;
+      },
+          checkTokenAndGetIndex = function checkTokenAndGetIndex(classList, token) {
+        if (token === "") {
+          throw new DOMEx("SYNTAX_ERR", "The token must not be empty.");
+        }
+
+        if (/\s/.test(token)) {
+          throw new DOMEx("INVALID_CHARACTER_ERR", "The token must not contain space characters.");
+        }
+
+        return arrIndexOf.call(classList, token);
+      },
+          ClassList = function ClassList(elem) {
+        var trimmedClasses = strTrim.call(elem.getAttribute("class") || ""),
+            classes = trimmedClasses ? trimmedClasses.split(/\s+/) : [],
+            i = 0,
+            len = classes.length;
+
+        for (; i < len; i++) {
+          this.push(classes[i]);
+        }
+
+        this._updateClassName = function () {
+          elem.setAttribute("class", this.toString());
+        };
+      },
+          classListProto = ClassList[protoProp] = [],
+          classListGetter = function classListGetter() {
+        return new ClassList(this);
+      }; // Most DOMException implementations don't allow calling DOMException's toString()
+      // on non-DOMExceptions. Error's toString() is sufficient here.
+
+
+      DOMEx[protoProp] = Error[protoProp];
+
+      classListProto.item = function (i) {
+        return this[i] || null;
+      };
+
+      classListProto.contains = function (token) {
+        return ~checkTokenAndGetIndex(this, token + "");
+      };
+
+      classListProto.add = function () {
+        var tokens = arguments,
+            i = 0,
+            l = tokens.length,
+            token,
+            updated = false;
+
+        do {
+          token = tokens[i] + "";
+
+          if (!~checkTokenAndGetIndex(this, token)) {
+            this.push(token);
+            updated = true;
+          }
+        } while (++i < l);
+
+        if (updated) {
+          this._updateClassName();
+        }
+      };
+
+      classListProto.remove = function () {
+        var tokens = arguments,
+            i = 0,
+            l = tokens.length,
+            token,
+            updated = false,
+            index;
+
+        do {
+          token = tokens[i] + "";
+          index = checkTokenAndGetIndex(this, token);
+
+          while (~index) {
+            this.splice(index, 1);
+            updated = true;
+            index = checkTokenAndGetIndex(this, token);
+          }
+        } while (++i < l);
+
+        if (updated) {
+          this._updateClassName();
+        }
+      };
+
+      classListProto.toggle = function (token, force) {
+        var result = this.contains(token),
+            method = result ? force !== true && "remove" : force !== false && "add";
+
+        if (method) {
+          this[method](token);
+        }
+
+        if (force === true || force === false) {
+          return force;
+        } else {
+          return !result;
+        }
+      };
+
+      classListProto.replace = function (token, replacement_token) {
+        var index = checkTokenAndGetIndex(token + "");
+
+        if (~index) {
+          this.splice(index, 1, replacement_token);
+
+          this._updateClassName();
+        }
+      };
+
+      classListProto.toString = function () {
+        return this.join(" ");
+      };
+
+      if (objCtr.defineProperty) {
+        var classListPropDesc = {
+          get: classListGetter,
+          enumerable: true,
+          configurable: true
+        };
+
+        try {
+          objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
+        } catch (ex) {
+          // IE 8 doesn't support enumerable:true
+          // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36
+          // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected
+          if (ex.number === undefined || ex.number === -0x7FF5EC54) {
+            classListPropDesc.enumerable = false;
+            objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
+          }
+        }
+      } else if (objCtr[protoProp].__defineGetter__) {
+        elemCtrProto.__defineGetter__(classListProp, classListGetter);
+      }
+    })(self);
+  } // There is full or partial native classList support, so just check if we need
+  // to normalize the add/remove and toggle APIs.
+
+
+  (function () {
+
+    var testElement = document.createElement("_");
+    testElement.classList.add("c1", "c2"); // Polyfill for IE 10/11 and Firefox <26, where classList.add and
+    // classList.remove exist but support only one argument at a time.
+
+    if (!testElement.classList.contains("c2")) {
+      var createMethod = function createMethod(method) {
+        var original = DOMTokenList.prototype[method];
+
+        DOMTokenList.prototype[method] = function (token) {
+          var i,
+              len = arguments.length;
+
+          for (i = 0; i < len; i++) {
+            token = arguments[i];
+            original.call(this, token);
+          }
+        };
+      };
+
+      createMethod('add');
+      createMethod('remove');
+    }
+
+    testElement.classList.toggle("c3", false); // Polyfill for IE 10 and Firefox <24, where classList.toggle does not
+    // support the second argument.
+
+    if (testElement.classList.contains("c3")) {
+      var _toggle = DOMTokenList.prototype.toggle;
+
+      DOMTokenList.prototype.toggle = function (token, force) {
+        if (1 in arguments && !this.contains(token) === !force) {
+          return force;
+        } else {
+          return _toggle.call(this, token);
+        }
+      };
+    } // replace() polyfill
+
+
+    if (!("replace" in document.createElement("_").classList)) {
+      DOMTokenList.prototype.replace = function (token, replacement_token) {
+        var tokens = this.toString().split(" "),
+            index = tokens.indexOf(token + "");
+
+        if (~index) {
+          tokens = tokens.slice(index);
+          this.remove.apply(this, tokens);
+          this.add(replacement_token);
+          this.add.apply(this, tokens.slice(1));
+        }
+      };
+    }
+
+    testElement = null;
+  })();
+}
+
+/**
+* Detect Element Resize
+*
+* https://github.com/sdecima/javascript-detect-element-resize
+* Sebastian Decima
+*
+* version: 0.5.3
+**/
+(function () {
+  var stylesCreated = false;
+
+  function resetTriggers(element) {
+    var triggers = element.__resizeTriggers__,
+        expand = triggers.firstElementChild,
+        contract = triggers.lastElementChild,
+        expandChild = expand.firstElementChild;
+    contract.scrollLeft = contract.scrollWidth;
+    contract.scrollTop = contract.scrollHeight;
+    expandChild.style.width = expand.offsetWidth + 1 + 'px';
+    expandChild.style.height = expand.offsetHeight + 1 + 'px';
+    expand.scrollLeft = expand.scrollWidth;
+    expand.scrollTop = expand.scrollHeight;
+  }
+
+  function checkTriggers(element) {
+    return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;
+  }
+
+  function scrollListener(e) {
+    var element = this;
+    resetTriggers(this);
+    if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__);
+    this.__resizeRAF__ = requestFrame(function () {
+      if (checkTriggers(element)) {
+        element.__resizeLast__.width = element.offsetWidth;
+        element.__resizeLast__.height = element.offsetHeight;
+
+        element.__resizeListeners__.forEach(function (fn) {
+          fn.call(e);
+        });
+      }
+    });
+  }
+
+  function createStyles() {
+    if (!stylesCreated) {
+      // opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
+      var css = (animationKeyframes || '') + '.resize-triggers { ' + (animationStyle || '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
+          head = document.head || document.getElementsByTagName('head')[0],
+          style = document.createElement('style');
+      style.type = 'text/css';
+
+      if (style.styleSheet) {
+        style.styleSheet.cssText = css;
+      } else {
+        style.appendChild(document.createTextNode(css));
+      }
+
+      head.appendChild(style);
+      stylesCreated = true;
+    }
+  }
+
+  var requestFrame = function () {
+    var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (fn) {
+      return window.setTimeout(fn, 20);
+    };
+
+    return function (fn) {
+      return raf(fn);
+    };
+  }();
+
+  var cancelFrame = function () {
+    var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;
+    return function (id) {
+      return cancel(id);
+    };
+  }();
+  /* Detect CSS Animations support to detect element display/re-attach */
+
+
+  var animation = false,
+      keyframeprefix = '',
+      animationstartevent = 'animationstart',
+      domPrefixes = 'Webkit Moz O ms'.split(' '),
+      startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),
+      pfx = '';
+  {
+    var elm = document.createElement('fakeelement');
+
+    if (elm.style.animationName !== undefined) {
+      animation = true;
+    }
+
+    if (animation === false) {
+      for (var i = 0; i < domPrefixes.length; i++) {
+        if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
+          pfx = domPrefixes[i];
+          keyframeprefix = '-' + pfx.toLowerCase() + '-';
+          animationstartevent = startEvents[i];
+          break;
+        }
+      }
+    }
+  }
+  var animationName = 'resizeanim';
+  var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';
+  var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';
+
+  window.addResizeListener = function (element, fn) {
+    if (!element.__resizeTriggers__) {
+      if (getComputedStyle(element).position == 'static') element.style.position = 'relative';
+      createStyles();
+      element.__resizeLast__ = {};
+      element.__resizeListeners__ = [];
+      (element.__resizeTriggers__ = document.createElement('div')).className = 'resize-triggers';
+      element.__resizeTriggers__.innerHTML = '<div class="expand-trigger"><div></div></div>' + '<div class="contract-trigger"></div>';
+      element.appendChild(element.__resizeTriggers__);
+      resetTriggers(element);
+      element.addEventListener('scroll', scrollListener, true);
+      /* Listen for a css animation to detect element display/re-attach */
+
+      animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function (e) {
+        if (e.animationName == animationName) {
+          resetTriggers(element);
+        }
+      });
+    }
+
+    element.__resizeListeners__.push(fn);
+  };
+
+  window.removeResizeListener = function (element, fn) {
+    if (element) {
+      element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
+
+      if (!element.__resizeListeners__.length) {
+        element.removeEventListener('scroll', scrollListener);
+        element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
+      }
+    }
+  };
+})();
+
+window.Apex = {};
+/**
+ *
+ * @module ApexCharts
+ **/
+
+var ApexCharts$1 =
+/*#__PURE__*/
+function () {
+  function ApexCharts(el, opts) {
+    _classCallCheck(this, ApexCharts);
+
+    this.opts = opts;
+    this.ctx = this; // Pass the user supplied options to the Base Class where these options will be extended with defaults. The returned object from Base Class will become the config object in the entire codebase.
+
+    this.w = new Base(opts).init();
+    this.el = el;
+    this.w.globals.cuid = (Math.random() + 1).toString(36).substring(4);
+    this.w.globals.chartID = this.w.config.chart.id ? this.w.config.chart.id : this.w.globals.cuid;
+    this.initModules();
+    this.create = Utils.bind(this.create, this);
+    this.windowResizeHandler = this.windowResize.bind(this);
+  }
+  /**
+   * The primary method user will call to render the chart.
+   */
+
+
+  _createClass(ApexCharts, [{
+    key: "render",
+    value: function render() {
+      var _this = this;
+
+      // main method
+      return new Promise$1(function (resolve, reject) {
+        // only draw chart, if element found
+        if (_this.el !== null) {
+          if (typeof Apex._chartInstances === 'undefined') {
+            Apex._chartInstances = [];
+          }
+
+          if (_this.w.config.chart.id) {
+            Apex._chartInstances.push({
+              id: _this.w.globals.chartID,
+              group: _this.w.config.chart.group,
+              chart: _this
+            });
+          } // set the locale here
+
+
+          _this.setLocale(_this.w.config.chart.defaultLocale);
+
+          var beforeMount = _this.w.config.chart.events.beforeMount;
+
+          if (typeof beforeMount === 'function') {
+            beforeMount(_this, _this.w);
+          }
+
+          _this.fireEvent('beforeMount', [_this, _this.w]);
+
+          window.addEventListener('resize', _this.windowResizeHandler);
+          window.addResizeListener(_this.el.parentNode, _this.parentResizeCallback.bind(_this));
+
+          var graphData = _this.create(_this.w.config.series, {});
+
+          if (!graphData) return resolve(_this);
+
+          _this.mount(graphData).then(function () {
+            resolve(graphData);
+
+            if (typeof _this.w.config.chart.events.mounted === 'function') {
+              _this.w.config.chart.events.mounted(_this, _this.w);
+            }
+
+            _this.fireEvent('mounted', [_this, _this.w]);
+          }).catch(function (e) {
+            reject(e); // handle error in case no data or element not found
+          });
+        } else {
+          reject(new Error('Element not found'));
+        }
+      });
+    }
+  }, {
+    key: "initModules",
+    value: function initModules() {
+      this.animations = new Animations(this);
+      this.core = new Core(this.el, this);
+      this.grid = new Grid(this);
+      this.coreUtils = new CoreUtils(this);
+      this.config = new Config({});
+      this.crosshairs = new Crosshairs(this);
+      this.options = new Options();
+      this.responsive = new Responsive(this);
+      this.series = new Series(this);
+      this.theme = new Theme(this);
+      this.formatters = new Formatters(this);
+      this.titleSubtitle = new TitleSubtitle(this);
+      this.legend = new Legend(this);
+      this.toolbar = new Toolbar(this);
+      this.dimensions = new Dimensions(this);
+      this.zoomPanSelection = new ZoomPanSelection(this);
+      this.w.globals.tooltip = new Tooltip(this);
+    }
+  }, {
+    key: "addEventListener",
+    value: function addEventListener(name$$1, handler) {
+      var w = this.w;
+
+      if (w.globals.events.hasOwnProperty(name$$1)) {
+        w.globals.events[name$$1].push(handler);
+      } else {
+        w.globals.events[name$$1] = [handler];
+      }
+    }
+  }, {
+    key: "removeEventListener",
+    value: function removeEventListener(name$$1, handler) {
+      var w = this.w;
+
+      if (!w.globals.events.hasOwnProperty(name$$1)) {
+        return;
+      }
+
+      var index = w.globals.events[name$$1].indexOf(handler);
+
+      if (index !== -1) {
+        w.globals.events[name$$1].splice(index, 1);
+      }
+    }
+  }, {
+    key: "fireEvent",
+    value: function fireEvent(name$$1, args) {
+      var w = this.w;
+
+      if (!w.globals.events.hasOwnProperty(name$$1)) {
+        return;
+      }
+
+      if (!args || !args.length) {
+        args = [];
+      }
+
+      var evs = w.globals.events[name$$1];
+      var l = evs.length;
+
+      for (var i = 0; i < l; i++) {
+        evs[i].apply(null, args);
+      }
+    }
+  }, {
+    key: "create",
+    value: function create(ser, opts) {
+      var w = this.w;
+      this.initModules();
+      var gl = this.w.globals;
+      gl.noData = false;
+      gl.animationEnded = false;
+      this.responsive.checkResponsiveConfig(opts);
+
+      if (this.el === null) {
+        gl.animationEnded = true;
+        return null;
+      }
+
+      this.core.setupElements();
+
+      if (gl.svgWidth === 0) {
+        // if the element is hidden, skip drawing
+        gl.animationEnded = true;
+        return null;
+      }
+
+      var combo = CoreUtils.checkComboSeries(ser);
+      gl.comboCharts = combo.comboCharts;
+      gl.comboChartsHasBars = combo.comboChartsHasBars;
+
+      if (ser.length === 0 || ser.length === 1 && ser[0].data && ser[0].data.length === 0) {
+        this.series.handleNoData();
+      }
+
+      this.setupEventHandlers(); // Handle the data inputted by user and set some of the global variables (for eg, if data is datetime / numeric / category). Don't calculate the range / min / max at this time
+
+      this.core.parseData(ser); // this is a good time to set theme colors first
+
+      this.theme.init(); // as markers accepts array, we need to setup global markers for easier access
+
+      var markers = new Markers(this);
+      markers.setGlobalMarkerSize(); // labelFormatters should be called before dimensions as in dimensions we need text labels width
+
+      this.formatters.setLabelFormatters();
+      this.titleSubtitle.draw(); // legend is calculated here before coreCalculations because it affects the plottable area
+
+      this.legend.init(); // check whether in multiple series, all series share the same X
+
+      this.series.hasAllSeriesEqualX(); // coreCalculations will give the min/max range and yaxis/axis values. It should be called here to set series variable from config to globals
+
+      if (gl.axisCharts) {
+        this.core.coreCalculations();
+
+        if (w.config.xaxis.type !== 'category') {
+          // as we have minX and maxX values, determine the default DateTimeFormat for time series
+          this.formatters.setLabelFormatters();
+        }
+      } // we need to generate yaxis for heatmap separately as we are not showing numerics there, but seriesNames. There are some tweaks which are required for heatmap to align labels correctly which are done in below function
+      // Also we need to do this before calcuting Dimentions plotCoords() method of Dimensions
+
+
+      this.formatters.heatmapLabelFormatters(); // We got plottable area here, next task would be to calculate axis areas
+
+      this.dimensions.plotCoords();
+      var xyRatios = this.core.xySettings();
+      this.grid.createGridMask();
+      var elGraph = this.core.plotChartType(ser, xyRatios); // after all the drawing calculations, shift the graphical area (actual charts/bars) excluding legends
+
+      this.core.shiftGraphPosition();
+      var dim = {
+        plot: {
+          left: w.globals.translateX,
+          top: w.globals.translateY,
+          width: w.globals.gridWidth,
+          height: w.globals.gridHeight
+        }
+      };
+      return {
+        elGraph: elGraph,
+        xyRatios: xyRatios,
+        elInner: w.globals.dom.elGraphical,
+        dimensions: dim
+      };
+    }
+  }, {
+    key: "mount",
+    value: function mount() {
+      var graphData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+      var me = this;
+      var w = me.w;
+      return new Promise$1(function (resolve, reject) {
+        // no data to display
+        if (me.el === null) {
+          return reject(new Error('Not enough data to display or target element not found'));
+        } else if (graphData === null || w.globals.allSeriesCollapsed) {
+          me.series.handleNoData();
+        }
+
+        me.annotations = new Annotations(me);
+        me.core.drawAxis(w.config.chart.type, graphData.xyRatios);
+        me.grid = new Grid(me);
+
+        if (w.config.grid.position === 'back') {
+          me.grid.drawGrid();
+        }
+
+        if (w.config.annotations.position === 'back') {
+          me.annotations.drawAnnotations();
+        }
+
+        if (graphData.elGraph instanceof Array) {
+          for (var g = 0; g < graphData.elGraph.length; g++) {
+            w.globals.dom.elGraphical.add(graphData.elGraph[g]);
+          }
+        } else {
+          w.globals.dom.elGraphical.add(graphData.elGraph);
+        }
+
+        if (w.config.grid.position === 'front') {
+          me.grid.drawGrid();
+        }
+
+        if (w.config.xaxis.crosshairs.position === 'front') {
+          me.crosshairs.drawXCrosshairs();
+        }
+
+        if (w.config.yaxis[0].crosshairs.position === 'front') {
+          me.crosshairs.drawYCrosshairs();
+        }
+
+        if (w.config.annotations.position === 'front') {
+          me.annotations.drawAnnotations();
+        }
+
+        if (!w.globals.noData) {
+          // draw tooltips at the end
+          if (w.config.tooltip.enabled && !w.globals.noData) {
+            me.w.globals.tooltip.drawTooltip(graphData.xyRatios);
+          }
+
+          if (w.globals.axisCharts && w.globals.isXNumeric) {
+            if (w.config.chart.zoom.enabled || w.config.chart.selection && w.config.chart.selection.enabled || w.config.chart.pan && w.config.chart.pan.enabled) {
+              me.zoomPanSelection.init({
+                xyRatios: graphData.xyRatios
+              });
+            }
+          } else {
+            var tools = w.config.chart.toolbar.tools;
+            tools.zoom = false;
+            tools.zoomin = false;
+            tools.zoomout = false;
+            tools.selection = false;
+            tools.pan = false;
+            tools.reset = false;
+          }
+
+          if (w.config.chart.toolbar.show && !w.globals.allSeriesCollapsed) {
+            me.toolbar.createToolbar();
+          }
+        }
+
+        if (w.globals.memory.methodsToExec.length > 0) {
+          w.globals.memory.methodsToExec.forEach(function (fn) {
+            fn.method(fn.params, false, fn.context);
+          });
+        }
+
+        resolve(me);
+      });
+    }
+  }, {
+    key: "clearPreviousPaths",
+    value: function clearPreviousPaths() {
+      var w = this.w;
+      w.globals.previousPaths = [];
+      w.globals.allSeriesCollapsed = false;
+      w.globals.collapsedSeries = [];
+      w.globals.collapsedSeriesIndices = [];
+    }
+    /**
+     * Allows users to update Options after the chart has rendered.
+     *
+     * @param {object} options - A new config object can be passed which will be merged with the existing config object
+     * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there
+     * @param {boolean} animate - should animate or not on updating Options
+     */
+
+  }, {
+    key: "updateOptions",
+    value: function updateOptions(options$$1) {
+      var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+      var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      var overwriteInitialConfig = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
+      var w = this.w;
+
+      if (options$$1.series) {
+        if (options$$1.series[0].data) {
+          options$$1.series = options$$1.series.map(function (s, i) {
+            return _objectSpread({}, w.config.series[i], {
+              name: s.name ? s.name : w.config.series[i] && w.config.series[i].name,
+              type: s.type ? s.type : w.config.series[i] && w.config.series[i].type,
+              data: s.data ? s.data : w.config.series[i] && w.config.series[i].data
+            });
+          });
+        } // user updated the series via updateOptions() function.
+        // Hence, we need to reset axis min/max to avoid zooming issues
+
+
+        this.revertDefaultAxisMinMax();
+      } // user has set x-axis min/max externally - hence we need to forcefully set the xaxis min/max
+
+
+      if (options$$1.xaxis) {
+        if (options$$1.xaxis.min || options$$1.xaxis.max) {
+          this.forceXAxisUpdate(options$$1);
+        }
+        /* fixes apexcharts.js#369 and react-apexcharts#46 */
+
+
+        if (options$$1.xaxis.categories && options$$1.xaxis.categories.length && w.config.xaxis.convertedCatToNumeric) {
+          options$$1 = Defaults.convertCatToNumeric(options$$1);
+        }
+      }
+
+      if (w.globals.collapsedSeriesIndices.length > 0) {
+        this.clearPreviousPaths();
+      }
+      /* update theme mode#459 */
+
+
+      if (options$$1.theme) {
+        options$$1 = this.theme.updateThemeOptions(options$$1);
+      }
+
+      return this._updateOptions(options$$1, redraw, animate, overwriteInitialConfig);
+    }
+    /**
+     * private method to update Options.
+     *
+     * @param {object} options - A new config object can be passed which will be merged with the existing config object
+     * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there
+     * @param {boolean} animate - should animate or not on updating Options
+     * @param {boolean} overwriteInitialConfig - should update the initial config or not
+     */
+
+  }, {
+    key: "_updateOptions",
+    value: function _updateOptions(options$$1) {
+      var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+      var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      var overwriteInitialConfig = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
+      var charts = this.getSyncedCharts();
+      charts.forEach(function (ch) {
+        var w = ch.w;
+        w.globals.shouldAnimate = animate;
+
+        if (!redraw) {
+          w.globals.resized = true;
+          w.globals.dataChanged = true;
+
+          if (animate) {
+            ch.series.getPreviousPaths();
+          }
+        }
+
+        if (options$$1 && _typeof(options$$1) === 'object') {
+          ch.config = new Config(options$$1);
+          options$$1 = CoreUtils.extendArrayProps(ch.config, options$$1);
+          w.config = Utils.extend(w.config, options$$1);
+
+          if (overwriteInitialConfig) {
+            // we need to forget the lastXAxis and lastYAxis is user forcefully overwriteInitialConfig. If we do not do this, and next time when user zooms the chart after setting yaxis.min/max or xaxis.min/max - the stored lastXAxis will never allow the chart to use the updated min/max by user.
+            w.globals.lastXAxis = [];
+            w.globals.lastYAxis = []; // After forgetting lastAxes, we need to restore the new config in initialConfig/initialSeries
+
+            w.globals.initialConfig = Utils.extend({}, w.config);
+            w.globals.initialSeries = JSON.parse(JSON.stringify(w.config.series));
+          }
+        }
+
+        return ch.update(options$$1);
+      });
+    }
+    /**
+     * Allows users to update Series after the chart has rendered.
+     *
+     * @param {array} series - New series which will override the existing
+     */
+
+  }, {
+    key: "updateSeries",
+    value: function updateSeries() {
+      var newSeries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+      var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      this.revertDefaultAxisMinMax();
+      return this._updateSeries(newSeries, animate, overwriteInitialSeries);
+    }
+    /**
+     * Allows users to append a new series after the chart has rendered.
+     *
+     * @param {array} newSerie - New serie which will be appended to the existing series
+     */
+
+  }, {
+    key: "appendSeries",
+    value: function appendSeries(newSerie) {
+      var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      var newSeries = this.w.config.series.slice();
+      newSeries.push(newSerie);
+      this.revertDefaultAxisMinMax();
+      return this._updateSeries(newSeries, animate, overwriteInitialSeries);
+    }
+    /**
+     * Private method to update Series.
+     *
+     * @param {array} series - New series which will override the existing
+     */
+
+  }, {
+    key: "_updateSeries",
+    value: function _updateSeries(newSeries, animate) {
+      var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+      var w = this.w;
+      this.w.globals.shouldAnimate = animate;
+      w.globals.dataChanged = true; // if user has collapsed some series with legend, we need to clear those
+
+      if (w.globals.allSeriesCollapsed) {
+        w.globals.allSeriesCollapsed = false;
+      }
+
+      if (animate) {
+        this.series.getPreviousPaths();
+      }
+
+      var existingSeries; // axis charts
+
+      if (w.globals.axisCharts) {
+        existingSeries = newSeries.map(function (s, i) {
+          return _objectSpread({}, w.config.series[i], {
+            name: s.name ? s.name : w.config.series[i] && w.config.series[i].name,
+            type: s.type ? s.type : w.config.series[i] && w.config.series[i].type,
+            data: s.data ? s.data : w.config.series[i] && w.config.series[i].data
+          });
+        });
+
+        if (existingSeries.length === 0) {
+          existingSeries = [{
+            data: []
+          }];
+        }
+
+        w.config.series = existingSeries;
+      } else {
+        // non-axis chart (pie/radialbar)
+        w.config.series = newSeries.slice();
+      }
+
+      if (overwriteInitialSeries) {
+        w.globals.initialConfig.series = JSON.parse(JSON.stringify(w.config.series));
+        w.globals.initialSeries = JSON.parse(JSON.stringify(w.config.series));
+      }
+
+      return this.update();
+    }
+    /**
+     * Get all charts in the same "group" (including the instance which is called upon) to sync them when user zooms in/out or pan.
+     */
+
+  }, {
+    key: "getSyncedCharts",
+    value: function getSyncedCharts() {
+      var chartGroups = this.getGroupedCharts();
+      var allCharts = [this];
+
+      if (chartGroups.length) {
+        allCharts = [];
+        chartGroups.forEach(function (ch) {
+          allCharts.push(ch);
+        });
+      }
+
+      return allCharts;
+    }
+    /**
+     * Get charts in the same "group" (excluding the instance which is called upon) to perform operations on the other charts of the same group (eg., tooltip hovering)
+     */
+
+  }, {
+    key: "getGroupedCharts",
+    value: function getGroupedCharts() {
+      var _this2 = this;
+
+      return Apex._chartInstances.filter(function (ch) {
+        if (ch.group) {
+          return true;
+        }
+      }).map(function (ch) {
+        return _this2.w.config.chart.group === ch.group ? ch.chart : _this2;
+      });
+    }
+    /**
+     * Allows users to append Data to series.
+     *
+     * @param {array} newData - New data in the same format as series
+     */
+
+  }, {
+    key: "appendData",
+    value: function appendData(newData) {
+      var overwriteInitialSeries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var me = this;
+      me.w.globals.dataChanged = true;
+      me.series.getPreviousPaths();
+      var newSeries = me.w.config.series.slice();
+
+      for (var i = 0; i < newSeries.length; i++) {
+        if (typeof newData[i] !== 'undefined') {
+          for (var j = 0; j < newData[i].data.length; j++) {
+            newSeries[i].data.push(newData[i].data[j]);
+          }
+        }
+      }
+
+      me.w.config.series = newSeries;
+
+      if (overwriteInitialSeries) {
+        me.w.globals.initialSeries = JSON.parse(JSON.stringify(me.w.config.series));
+      }
+
+      return this.update();
+    }
+  }, {
+    key: "update",
+    value: function update(options$$1) {
+      var _this3 = this;
+
+      return new Promise$1(function (resolve, reject) {
+        _this3.clear();
+
+        var graphData = _this3.create(_this3.w.config.series, options$$1);
+
+        if (!graphData) return resolve(_this3);
+
+        _this3.mount(graphData).then(function () {
+          if (typeof _this3.w.config.chart.events.updated === 'function') {
+            _this3.w.config.chart.events.updated(_this3, _this3.w);
+          }
+
+          _this3.fireEvent('updated', [_this3, _this3.w]);
+
+          _this3.w.globals.isDirty = true;
+          resolve(_this3);
+        }).catch(function (e) {
+          reject(e);
+        });
+      });
+    }
+  }, {
+    key: "forceXAxisUpdate",
+    value: function forceXAxisUpdate(options$$1) {
+      var w = this.w;
+
+      if (typeof options$$1.xaxis.min !== 'undefined') {
+        w.config.xaxis.min = options$$1.xaxis.min;
+        w.globals.lastXAxis.min = options$$1.xaxis.min;
+      }
+
+      if (typeof options$$1.xaxis.max !== 'undefined') {
+        w.config.xaxis.max = options$$1.xaxis.max;
+        w.globals.lastXAxis.max = options$$1.xaxis.max;
+      }
+    }
+    /**
+     * This function reverts the yaxis and xaxis min/max values to what it was when the chart was defined.
+     * This function fixes an important bug where a user might load a new series after zooming in/out of previous series which resulted in wrong min/max
+     * Also, this should never be called internally on zoom/pan - the reset should only happen when user calls the updateSeries() function externally
+     */
+
+  }, {
+    key: "revertDefaultAxisMinMax",
+    value: function revertDefaultAxisMinMax() {
+      var w = this.w;
+      w.config.xaxis.min = w.globals.lastXAxis.min;
+      w.config.xaxis.max = w.globals.lastXAxis.max;
+      w.config.yaxis.map(function (yaxe, index) {
+        if (w.globals.zoomed) {
+          // if user has zoomed, and this function is called
+          // then we need to get the lastAxis min and max
+          if (typeof w.globals.lastYAxis[index] !== 'undefined') {
+            yaxe.min = w.globals.lastYAxis[index].min;
+            yaxe.max = w.globals.lastYAxis[index].max;
+          }
+        }
+      });
+    }
+  }, {
+    key: "clear",
+    value: function clear() {
+      if (this.zoomPanSelection) {
+        this.zoomPanSelection.destroy();
+      }
+
+      if (this.toolbar) {
+        this.toolbar.destroy();
+      }
+
+      this.animations = null;
+      this.annotations = null;
+      this.core = null;
+      this.grid = null;
+      this.series = null;
+      this.responsive = null;
+      this.theme = null;
+      this.formatters = null;
+      this.titleSubtitle = null;
+      this.legend = null;
+      this.dimensions = null;
+      this.options = null;
+      this.crosshairs = null;
+      this.zoomPanSelection = null;
+      this.toolbar = null;
+      this.w.globals.tooltip = null;
+      this.clearDomElements();
+    }
+  }, {
+    key: "killSVG",
+    value: function killSVG(draw) {
+      return new Promise$1(function (resolve, reject) {
+        draw.each(function (i, children) {
+          this.removeClass('*');
+          this.off();
+          this.stop();
+        }, true);
+        draw.ungroup();
+        draw.clear();
+        resolve('done');
+      });
+    }
+  }, {
+    key: "clearDomElements",
+    value: function clearDomElements() {
+      var domEls = this.w.globals.dom;
+
+      if (this.el !== null) {
+        // remove all child elements - resetting the whole chart
+        while (this.el.firstChild) {
+          this.el.removeChild(this.el.firstChild);
+        }
+      }
+
+      this.killSVG(domEls.Paper);
+      domEls.Paper.remove();
+      domEls.elWrap = null;
+      domEls.elGraphical = null;
+      domEls.elLegendWrap = null;
+      domEls.baseEl = null;
+      domEls.elGridRect = null;
+      domEls.elGridRectMask = null;
+      domEls.elGridRectMarkerMask = null;
+      domEls.elDefs = null;
+    }
+    /**
+     * Destroy the chart instance by removing all elements which also clean up event listeners on those elements.
+     */
+
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      this.clear(); // remove the chart's instance from the global Apex._chartInstances
+
+      var chartID = this.w.config.chart.id;
+
+      if (chartID) {
+        Apex._chartInstances.forEach(function (c, i) {
+          if (c.id === chartID) {
+            Apex._chartInstances.splice(i, 1);
+          }
+        });
+      }
+
+      window.removeEventListener('resize', this.windowResizeHandler);
+      window.removeResizeListener(this.el.parentNode, this.parentResizeCallback.bind(this));
+    }
+    /**
+     * Allows the user to provide data attrs in the element and the chart will render automatically when this method is called by searching for the elements containing 'data-apexcharts' attribute
+     */
+
+  }, {
+    key: "toggleSeries",
+    value: function toggleSeries(seriesName) {
+      var targetElement = this.series.getSeriesByName(seriesName);
+      var seriesCnt = parseInt(targetElement.getAttribute('data:realIndex'));
+      var isHidden = targetElement.classList.contains('apexcharts-series-collapsed');
+      this.legend.toggleDataSeries(seriesCnt, isHidden);
+    }
+  }, {
+    key: "resetToggleSeries",
+    value: function resetToggleSeries() {
+      this.legend.resetToggleDataSeries();
+    }
+  }, {
+    key: "setupEventHandlers",
+    value: function setupEventHandlers() {
+      var w = this.w;
+      var me = this;
+      var clickableArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass);
+      var eventList = ['mousedown', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend'];
+      eventList.forEach(function (event) {
+        clickableArea.addEventListener(event, function (e) {
+          if (e.type === 'mousedown' && e.which === 1) ; else if (e.type === 'mouseup' && e.which === 1 || e.type === 'touchend') {
+            if (typeof w.config.chart.events.click === 'function') {
+              w.config.chart.events.click(e, me, w);
+            }
+
+            me.fireEvent('click', [e, me, w]);
+          }
+        }, {
+          capture: false,
+          passive: true
+        });
+      });
+      eventList.forEach(function (event) {
+        document.addEventListener(event, function (e) {
+          w.globals.clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+          w.globals.clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY;
+        });
+      });
+      this.core.setupBrushHandler();
+    }
+  }, {
+    key: "addXaxisAnnotation",
+    value: function addXaxisAnnotation(opts) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+      var me = this;
+
+      if (context) {
+        me = context;
+      }
+
+      me.annotations.addXaxisAnnotationExternal(opts, pushToMemory, me);
+    }
+  }, {
+    key: "addYaxisAnnotation",
+    value: function addYaxisAnnotation(opts) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+      var me = this;
+
+      if (context) {
+        me = context;
+      }
+
+      me.annotations.addYaxisAnnotationExternal(opts, pushToMemory, me);
+    }
+  }, {
+    key: "addPointAnnotation",
+    value: function addPointAnnotation(opts) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+      var me = this;
+
+      if (context) {
+        me = context;
+      }
+
+      me.annotations.addPointAnnotationExternal(opts, pushToMemory, me);
+    }
+  }, {
+    key: "clearAnnotations",
+    value: function clearAnnotations() {
+      var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+      var me = this;
+
+      if (context) {
+        me = context;
+      }
+
+      me.annotations.clearAnnotations(me);
+    } // This method is never used internally and will be only called externally on the chart instance.
+    // Hence, we need to keep all these elements in memory when the chart gets updated and redraw again
+
+  }, {
+    key: "addText",
+    value: function addText(options$$1) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+      var me = this;
+
+      if (context) {
+        me = context;
+      }
+
+      me.annotations.addText(options$$1, pushToMemory, me);
+    }
+  }, {
+    key: "getChartArea",
+    value: function getChartArea() {
+      var el = this.w.globals.dom.baseEl.querySelector('.apexcharts-inner');
+      return el;
+    }
+  }, {
+    key: "getSeriesTotalXRange",
+    value: function getSeriesTotalXRange(minX, maxX) {
+      return this.coreUtils.getSeriesTotalsXRange(minX, maxX);
+    }
+  }, {
+    key: "getHighestValueInSeries",
+    value: function getHighestValueInSeries() {
+      var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      var range = new Range$1(this.ctx);
+      var minYmaxY = range.getMinYMaxY(seriesIndex);
+      return minYmaxY.highestY;
+    }
+  }, {
+    key: "getLowestValueInSeries",
+    value: function getLowestValueInSeries() {
+      var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      var range = new Range$1(this.ctx);
+      var minYmaxY = range.getMinYMaxY(seriesIndex);
+      return minYmaxY.lowestY;
+    }
+  }, {
+    key: "getSeriesTotal",
+    value: function getSeriesTotal() {
+      return this.w.globals.seriesTotals;
+    }
+  }, {
+    key: "setLocale",
+    value: function setLocale(localeName) {
+      this.setCurrentLocaleValues(localeName);
+    }
+  }, {
+    key: "setCurrentLocaleValues",
+    value: function setCurrentLocaleValues(localeName) {
+      var locales = this.w.config.chart.locales; // check if user has specified locales in global Apex variable
+      // if yes - then extend those with local chart's locale
+
+      if (window.Apex.chart && window.Apex.chart.locales && window.Apex.chart.locales.length > 0) {
+        locales = this.w.config.chart.locales.concat(window.Apex.chart.locales);
+      } // find the locale from the array of locales which user has set (either by chart.defaultLocale or by calling setLocale() method.)
+
+
+      var selectedLocale = locales.filter(function (c) {
+        return c.name === localeName;
+      })[0];
+
+      if (selectedLocale) {
+        // create a complete locale object by extending defaults so you don't get undefined errors.
+        var ret = Utils.extend(en, selectedLocale); // store these locale options in global var for ease access
+
+        this.w.globals.locale = ret.options;
+      } else {
+        throw new Error('Wrong locale name provided. Please make sure you set the correct locale name in options');
+      }
+    }
+  }, {
+    key: "dataURI",
+    value: function dataURI() {
+      var exp = new Exports(this.ctx);
+      return exp.dataURI();
+    }
+  }, {
+    key: "paper",
+    value: function paper() {
+      return this.w.globals.dom.Paper;
+    }
+  }, {
+    key: "parentResizeCallback",
+    value: function parentResizeCallback() {
+      if (this.w.globals.animationEnded) {
+        this.windowResize();
+      }
+    }
+    /**
+     * Handle window resize and re-draw the whole chart.
+     */
+
+  }, {
+    key: "windowResize",
+    value: function windowResize() {
+      var _this4 = this;
+
+      clearTimeout(this.w.globals.resizeTimer);
+      this.w.globals.resizeTimer = window.setTimeout(function () {
+        _this4.w.globals.resized = true;
+        _this4.w.globals.dataChanged = false; // we need to redraw the whole chart on window resize (with a small delay).
+
+        _this4.update();
+      }, 150);
+    }
+  }], [{
+    key: "initOnLoad",
+    value: function initOnLoad() {
+      var els = document.querySelectorAll('[data-apexcharts]');
+
+      for (var i = 0; i < els.length; i++) {
+        var el = els[i];
+        var options$$1 = JSON.parse(els[i].getAttribute('data-options'));
+        var apexChart = new ApexCharts(el, options$$1);
+        apexChart.render();
+      }
+    }
+    /**
+     * This static method allows users to call chart methods without necessarily from the
+     * instance of the chart in case user has assigned chartID to the targetted chart.
+     * The chartID is used for mapping the instance stored in Apex._chartInstances global variable
+     *
+     * This is helpful in cases when you don't have reference of the chart instance
+     * easily and need to call the method from anywhere.
+     * For eg, in React/Vue applications when you have many parent/child components,
+     * and need easy reference to other charts for performing dynamic operations
+     *
+     * @param {string} chartID - The unique identifier which will be used to call methods
+     * on that chart instance
+     * @param {function} fn - The method name to call
+     * @param {object} opts - The parameters which are accepted in the original method will be passed here in the same order.
+     */
+
+  }, {
+    key: "exec",
+    value: function exec(chartID, fn) {
+      var chart = this.getChartByID(chartID);
+      if (!chart) return;
+
+      for (var _len = arguments.length, opts = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
+        opts[_key - 2] = arguments[_key];
+      }
+
+      switch (fn) {
+        case 'updateOptions':
+          {
+            return chart.updateOptions.apply(chart, opts);
+          }
+
+        case 'updateSeries':
+          {
+            return chart.updateSeries.apply(chart, opts);
+          }
+
+        case 'appendData':
+          {
+            return chart.appendData.apply(chart, opts);
+          }
+
+        case 'appendSeries':
+          {
+            return chart.appendSeries.apply(chart, opts);
+          }
+
+        case 'toggleSeries':
+          {
+            return chart.toggleSeries.apply(chart, opts);
+          }
+
+        case 'dataURI':
+          {
+            return chart.dataURI.apply(chart, opts);
+          }
+
+        case 'addXaxisAnnotation':
+          {
+            return chart.addXaxisAnnotation.apply(chart, opts);
+          }
+
+        case 'addYaxisAnnotation':
+          {
+            return chart.addYaxisAnnotation.apply(chart, opts);
+          }
+
+        case 'addPointAnnotation':
+          {
+            return chart.addPointAnnotation.apply(chart, opts);
+          }
+
+        case 'addText':
+          {
+            return chart.addText.apply(chart, opts);
+          }
+
+        case 'clearAnnotations':
+          {
+            return chart.clearAnnotations.apply(chart, opts);
+          }
+
+        case 'paper':
+          {
+            return chart.paper.apply(chart, opts);
+          }
+
+        case 'destroy':
+          {
+            return chart.destroy();
+          }
+      }
+    }
+  }, {
+    key: "merge",
+    value: function merge(target, source) {
+      return Utils.extend(target, source);
+    }
+  }, {
+    key: "getChartByID",
+    value: function getChartByID(chartID) {
+      var c = Apex._chartInstances.filter(function (ch) {
+        return ch.id === chartID;
+      })[0];
+
+      return c.chart;
+    }
+  }]);
+
+  return ApexCharts;
+}();
+
+module.exports = ApexCharts$1;
Index: public/vendors/charts/apex/apexcharts.css
===================================================================
--- public/vendors/charts/apex/apexcharts.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/apexcharts.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,565 @@
+.apexcharts-canvas {
+  position: relative;
+  user-select: none;
+  /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */
+}
+
+/* scrollbar is not visible by default for legend, hence forcing the visibility */
+.apexcharts-canvas ::-webkit-scrollbar {
+  -webkit-appearance: none;
+  width: 6px;
+}
+.apexcharts-canvas ::-webkit-scrollbar-thumb {
+  border-radius: 4px;
+  background-color: rgba(0,0,0,.5);
+  box-shadow: 0 0 1px rgba(255,255,255,.5);
+  -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5);
+}
+.apexcharts-canvas.dark {
+  background: #343F57;
+}
+
+.apexcharts-inner {
+  position: relative;
+}
+
+.legend-mouseover-inactive {
+  transition: 0.15s ease all;
+  opacity: 0.20;
+}
+
+.apexcharts-series-collapsed {
+  opacity: 0;
+}
+
+.apexcharts-gridline, .apexcharts-text {
+  pointer-events: none;
+}
+
+.apexcharts-tooltip {
+  border-radius: 5px;
+  box-shadow: 2px 2px 6px -4px #999;
+  cursor: default;
+  font-size: 14px;
+  left: 62px;
+  opacity: 0;
+  pointer-events: none;
+  position: absolute;
+  top: 20px;
+  overflow: hidden;
+  white-space: nowrap;
+  z-index: 12;
+  transition: 0.15s ease all;
+}
+.apexcharts-tooltip.light {
+  border: 1px solid #e3e3e3;
+  background: rgba(255, 255, 255, 0.96);
+}
+.apexcharts-tooltip.dark {
+  color: #fff;
+  background: rgba(30,30,30, 0.8);
+}
+.apexcharts-tooltip * {
+  font-family: inherit;
+}
+
+.apexcharts-tooltip .apexcharts-marker,
+.apexcharts-area-series .apexcharts-area,
+.apexcharts-line {
+  pointer-events: none;
+}
+
+.apexcharts-tooltip.active {
+  opacity: 1;
+  transition: 0.15s ease all;
+}
+
+.apexcharts-tooltip-title {
+  padding: 6px;
+  font-size: 15px;
+  margin-bottom: 4px;
+}
+.apexcharts-tooltip.light .apexcharts-tooltip-title {
+  background: #ECEFF1;
+  border-bottom: 1px solid #ddd;
+}
+.apexcharts-tooltip.dark .apexcharts-tooltip-title {
+  background: rgba(0, 0, 0, 0.7);
+  border-bottom: 1px solid #333;
+}
+
+.apexcharts-tooltip-text-value,
+.apexcharts-tooltip-text-z-value {
+  display: inline-block;
+  font-weight: 600;
+  margin-left: 5px;
+}
+
+.apexcharts-tooltip-text-z-label:empty,
+.apexcharts-tooltip-text-z-value:empty {
+  display: none;
+}
+
+.apexcharts-tooltip-text-value, 
+.apexcharts-tooltip-text-z-value {
+  font-weight: 600;
+}
+
+.apexcharts-tooltip-marker {
+  width: 12px;
+  height: 12px;
+  position: relative;
+  top: 0px;
+  margin-right: 10px;
+  border-radius: 50%;
+}
+
+.apexcharts-tooltip-series-group {
+  padding: 0 10px;
+  display: none;
+  text-align: left;
+  justify-content: left;
+  align-items: center;
+}
+
+.apexcharts-tooltip-series-group.active .apexcharts-tooltip-marker {
+  opacity: 1;
+}
+.apexcharts-tooltip-series-group.active, .apexcharts-tooltip-series-group:last-child {
+  padding-bottom: 4px;
+}
+.apexcharts-tooltip-series-group-hidden {
+  opacity: 0;
+  height: 0;
+  line-height: 0;
+  padding: 0 !important;
+}
+.apexcharts-tooltip-y-group {
+  padding: 6px 0 5px;
+}
+.apexcharts-tooltip-candlestick {
+  padding: 4px 8px;
+}
+.apexcharts-tooltip-candlestick > div {
+  margin: 4px 0;
+}
+.apexcharts-tooltip-candlestick span.value {
+  font-weight: bold;
+}
+
+.apexcharts-tooltip-rangebar {
+  padding: 5px 8px;
+}
+
+.apexcharts-tooltip-rangebar .category {
+  font-weight: 600;
+  color: #777;
+}
+
+.apexcharts-tooltip-rangebar .series-name {
+  font-weight: bold;
+  display: block;
+  margin-bottom: 5px;
+}
+
+.apexcharts-xaxistooltip {
+  opacity: 0;
+  padding: 9px 10px;
+  pointer-events: none;
+  color: #373d3f;
+  font-size: 13px;
+  text-align: center;
+  border-radius: 2px;
+  position: absolute;
+  z-index: 10;
+	background: #ECEFF1;
+  border: 1px solid #90A4AE;
+  transition: 0.15s ease all;
+}
+
+.apexcharts-xaxistooltip.dark {
+  background: rgba(0, 0, 0, 0.7);
+  border: 1px solid rgba(0, 0, 0, 0.5);
+  color: #fff;
+}
+
+.apexcharts-xaxistooltip:after, .apexcharts-xaxistooltip:before {
+	left: 50%;
+	border: solid transparent;
+	content: " ";
+	height: 0;
+	width: 0;
+	position: absolute;
+	pointer-events: none;
+}
+
+.apexcharts-xaxistooltip:after {
+	border-color: rgba(236, 239, 241, 0);
+	border-width: 6px;
+	margin-left: -6px;
+}
+.apexcharts-xaxistooltip:before {
+	border-color: rgba(144, 164, 174, 0);
+	border-width: 7px;
+	margin-left: -7px;
+}
+
+.apexcharts-xaxistooltip-bottom:after, .apexcharts-xaxistooltip-bottom:before {
+  bottom: 100%;
+}
+
+.apexcharts-xaxistooltip-top:after, .apexcharts-xaxistooltip-top:before {
+  top: 100%;
+}
+
+.apexcharts-xaxistooltip-bottom:after {
+  border-bottom-color: #ECEFF1;
+}
+.apexcharts-xaxistooltip-bottom:before {
+  border-bottom-color: #90A4AE;
+}
+
+.apexcharts-xaxistooltip-bottom.dark:after {
+  border-bottom-color: rgba(0, 0, 0, 0.5);
+}
+.apexcharts-xaxistooltip-bottom.dark:before {
+  border-bottom-color: rgba(0, 0, 0, 0.5);
+}
+
+.apexcharts-xaxistooltip-top:after {
+  border-top-color:#ECEFF1
+}
+.apexcharts-xaxistooltip-top:before {
+  border-top-color: #90A4AE;
+}
+.apexcharts-xaxistooltip-top.dark:after {
+  border-top-color:rgba(0, 0, 0, 0.5);
+}
+.apexcharts-xaxistooltip-top.dark:before {
+  border-top-color: rgba(0, 0, 0, 0.5);
+}
+
+
+.apexcharts-xaxistooltip.active {
+  opacity: 1;
+  transition: 0.15s ease all;
+}
+
+.apexcharts-yaxistooltip {
+  opacity: 0;
+  padding: 4px 10px;
+  pointer-events: none;
+  color: #373d3f;
+  font-size: 13px;
+  text-align: center;
+  border-radius: 2px;
+  position: absolute;
+  z-index: 10;
+	background: #ECEFF1;
+  border: 1px solid #90A4AE;
+}
+
+.apexcharts-yaxistooltip.dark {
+  background: rgba(0, 0, 0, 0.7);
+  border: 1px solid rgba(0, 0, 0, 0.5);
+  color: #fff;
+}
+
+.apexcharts-yaxistooltip:after, .apexcharts-yaxistooltip:before {
+	top: 50%;
+	border: solid transparent;
+	content: " ";
+	height: 0;
+	width: 0;
+	position: absolute;
+	pointer-events: none;
+}
+.apexcharts-yaxistooltip:after {
+	border-color: rgba(236, 239, 241, 0);
+	border-width: 6px;
+	margin-top: -6px;
+}
+.apexcharts-yaxistooltip:before {
+	border-color: rgba(144, 164, 174, 0);
+	border-width: 7px;
+	margin-top: -7px;
+}
+
+.apexcharts-yaxistooltip-left:after, .apexcharts-yaxistooltip-left:before {
+  left: 100%;
+}
+
+.apexcharts-yaxistooltip-right:after, .apexcharts-yaxistooltip-right:before {
+  right: 100%;
+}
+
+.apexcharts-yaxistooltip-left:after {
+  border-left-color: #ECEFF1;
+}
+.apexcharts-yaxistooltip-left:before {
+  border-left-color: #90A4AE;
+}
+.apexcharts-yaxistooltip-left.dark:after {
+  border-left-color: rgba(0, 0, 0, 0.5);
+}
+.apexcharts-yaxistooltip-left.dark:before {
+  border-left-color: rgba(0, 0, 0, 0.5);
+}
+
+.apexcharts-yaxistooltip-right:after {
+  border-right-color: #ECEFF1;
+}
+.apexcharts-yaxistooltip-right:before {
+  border-right-color: #90A4AE;
+}
+.apexcharts-yaxistooltip-right.dark:after {
+  border-right-color: rgba(0, 0, 0, 0.5);
+}
+.apexcharts-yaxistooltip-right.dark:before {
+  border-right-color: rgba(0, 0, 0, 0.5);
+}
+
+.apexcharts-yaxistooltip.active {
+  opacity: 1;
+}
+
+.apexcharts-xcrosshairs, .apexcharts-ycrosshairs {
+  pointer-events: none;
+  opacity: 0;
+  transition: 0.15s ease all;
+}
+
+.apexcharts-xcrosshairs.active, .apexcharts-ycrosshairs.active {
+  opacity: 1;
+  transition: 0.15s ease all;
+}
+
+.apexcharts-ycrosshairs-hidden {
+  opacity: 0;
+}
+
+.apexcharts-zoom-rect {
+  pointer-events: none;
+}
+.apexcharts-selection-rect {
+  cursor: move;
+}
+
+.svg_select_points, .svg_select_points_rot {
+  opacity: 0;
+  visibility: hidden;
+}
+.svg_select_points_l, .svg_select_points_r {
+  cursor: ew-resize;
+  opacity: 1;
+  visibility: visible;
+  fill: #888;
+}
+.apexcharts-canvas.zoomable .hovering-zoom {
+  cursor: crosshair
+}
+.apexcharts-canvas.zoomable .hovering-pan {
+  cursor: move
+}
+
+.apexcharts-xaxis,
+.apexcharts-yaxis {
+  pointer-events: none;
+}
+
+.apexcharts-zoom-icon, 
+.apexcharts-zoom-in-icon,
+.apexcharts-zoom-out-icon,
+.apexcharts-reset-zoom-icon, 
+.apexcharts-pan-icon, 
+.apexcharts-selection-icon,
+.apexcharts-menu-icon, 
+.apexcharts-toolbar-custom-icon {
+  cursor: pointer;
+  width: 20px;
+  height: 20px;
+  line-height: 24px;
+  color: #6E8192;
+  text-align: center;
+}
+
+
+.apexcharts-zoom-icon svg, 
+.apexcharts-zoom-in-icon svg,
+.apexcharts-zoom-out-icon svg,
+.apexcharts-reset-zoom-icon svg,
+.apexcharts-menu-icon svg {
+  fill: #6E8192;
+}
+.apexcharts-selection-icon svg {
+  fill: #444;
+  transform: scale(0.76)
+}
+
+.dark .apexcharts-zoom-icon svg, 
+.dark .apexcharts-zoom-in-icon svg,
+.dark .apexcharts-zoom-out-icon svg,
+.dark .apexcharts-reset-zoom-icon svg, 
+.dark .apexcharts-pan-icon svg, 
+.dark .apexcharts-selection-icon svg,
+.dark .apexcharts-menu-icon svg, 
+.dark .apexcharts-toolbar-custom-icon svg{
+  fill: #f3f4f5;
+}
+
+.apexcharts-canvas .apexcharts-zoom-icon.selected svg, 
+.apexcharts-canvas .apexcharts-selection-icon.selected svg, 
+.apexcharts-canvas .apexcharts-reset-zoom-icon.selected svg {
+  fill: #008FFB;
+}
+.light .apexcharts-selection-icon:not(.selected):hover svg,
+.light .apexcharts-zoom-icon:not(.selected):hover svg, 
+.light .apexcharts-zoom-in-icon:hover svg, 
+.light .apexcharts-zoom-out-icon:hover svg, 
+.light .apexcharts-reset-zoom-icon:hover svg, 
+.light .apexcharts-menu-icon:hover svg {
+  fill: #333;
+}
+
+.apexcharts-selection-icon, .apexcharts-menu-icon {
+  position: relative;
+}
+.apexcharts-reset-zoom-icon {
+  margin-left: 5px;
+}
+.apexcharts-zoom-icon, .apexcharts-reset-zoom-icon, .apexcharts-menu-icon {
+  transform: scale(0.85);
+}
+
+.apexcharts-zoom-in-icon, .apexcharts-zoom-out-icon {
+  transform: scale(0.7)
+}
+
+.apexcharts-zoom-out-icon {
+  margin-right: 3px;
+}
+
+.apexcharts-pan-icon {
+  transform: scale(0.62);
+  position: relative;
+  left: 1px;
+  top: 0px;
+}
+.apexcharts-pan-icon svg {
+  fill: #fff;
+  stroke: #6E8192;
+  stroke-width: 2;
+}
+.apexcharts-pan-icon.selected svg {
+  stroke: #008FFB;
+}
+.apexcharts-pan-icon:not(.selected):hover svg {
+  stroke: #333;
+}
+
+.apexcharts-toolbar {
+  position: absolute;
+  z-index: 11;
+  top: 0px;
+  right: 3px;
+  max-width: 176px;
+  text-align: right;
+  border-radius: 3px;
+  padding: 0px 6px 2px 6px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center; 
+}
+
+.apexcharts-toolbar svg {
+  pointer-events: none;
+}
+
+.apexcharts-menu {
+  background: #fff;
+  position: absolute;
+  top: 100%;
+  border: 1px solid #ddd;
+  border-radius: 3px;
+  padding: 3px;
+  right: 10px;
+  opacity: 0;
+  min-width: 110px;
+  transition: 0.15s ease all;
+  pointer-events: none;
+}
+
+.apexcharts-menu.open {
+  opacity: 1;
+  pointer-events: all;
+  transition: 0.15s ease all;
+}
+
+.apexcharts-menu-item {
+  padding: 6px 7px;
+  font-size: 12px;
+  cursor: pointer;
+}
+.light .apexcharts-menu-item:hover {
+  background: #eee;
+}
+.dark .apexcharts-menu {
+  background: rgba(0, 0, 0, 0.7);
+  color: #fff;
+}
+
+@media screen and (min-width: 768px) {
+  .apexcharts-toolbar {
+    /*opacity: 0;*/
+  }
+
+  .apexcharts-canvas:hover .apexcharts-toolbar {
+    opacity: 1;
+  } 
+}
+
+.apexcharts-datalabel.hidden {
+  opacity: 0;
+}
+
+.apexcharts-pie-label,
+.apexcharts-datalabel, .apexcharts-datalabel-label, .apexcharts-datalabel-value {
+  cursor: default;
+  pointer-events: none;
+}
+
+.apexcharts-pie-label-delay {
+  opacity: 0;
+  animation-name: opaque;
+  animation-duration: 0.3s;
+  animation-fill-mode: forwards;
+  animation-timing-function: ease;
+}
+
+.apexcharts-canvas .hidden {
+  opacity: 0;
+}
+
+.apexcharts-hide .apexcharts-series-points {
+  opacity: 0;
+}
+
+.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,
+.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, .apexcharts-radar-series path, .apexcharts-radar-series polygon {
+  pointer-events: none;
+}
+
+/* markers */
+
+.apexcharts-marker {
+  transition: 0.15s ease all;
+}
+
+@keyframes opaque {
+  0% {
+    opacity: 0;
+  }
+  100% {
+    opacity: 1;
+  }
+}
Index: public/vendors/charts/apex/apexcharts.esm.js
===================================================================
--- public/vendors/charts/apex/apexcharts.esm.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/apexcharts.esm.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,28681 @@
+/*!
+ * ApexCharts v3.6.12
+ * (c) 2018-2019 Juned Chhipa
+ * Released under the MIT License.
+ */
+function _typeof(obj) {
+  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+    _typeof = function (obj) {
+      return typeof obj;
+    };
+  } else {
+    _typeof = function (obj) {
+      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+    };
+  }
+
+  return _typeof(obj);
+}
+
+function _classCallCheck(instance, Constructor) {
+  if (!(instance instanceof Constructor)) {
+    throw new TypeError("Cannot call a class as a function");
+  }
+}
+
+function _defineProperties(target, props) {
+  for (var i = 0; i < props.length; i++) {
+    var descriptor = props[i];
+    descriptor.enumerable = descriptor.enumerable || false;
+    descriptor.configurable = true;
+    if ("value" in descriptor) descriptor.writable = true;
+    Object.defineProperty(target, descriptor.key, descriptor);
+  }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+  if (staticProps) _defineProperties(Constructor, staticProps);
+  return Constructor;
+}
+
+function _defineProperty(obj, key, value) {
+  if (key in obj) {
+    Object.defineProperty(obj, key, {
+      value: value,
+      enumerable: true,
+      configurable: true,
+      writable: true
+    });
+  } else {
+    obj[key] = value;
+  }
+
+  return obj;
+}
+
+function _objectSpread(target) {
+  for (var i = 1; i < arguments.length; i++) {
+    var source = arguments[i] != null ? arguments[i] : {};
+    var ownKeys = Object.keys(source);
+
+    if (typeof Object.getOwnPropertySymbols === 'function') {
+      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
+        return Object.getOwnPropertyDescriptor(source, sym).enumerable;
+      }));
+    }
+
+    ownKeys.forEach(function (key) {
+      _defineProperty(target, key, source[key]);
+    });
+  }
+
+  return target;
+}
+
+function _inherits(subClass, superClass) {
+  if (typeof superClass !== "function" && superClass !== null) {
+    throw new TypeError("Super expression must either be null or a function");
+  }
+
+  subClass.prototype = Object.create(superClass && superClass.prototype, {
+    constructor: {
+      value: subClass,
+      writable: true,
+      configurable: true
+    }
+  });
+  if (superClass) _setPrototypeOf(subClass, superClass);
+}
+
+function _getPrototypeOf(o) {
+  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
+    return o.__proto__ || Object.getPrototypeOf(o);
+  };
+  return _getPrototypeOf(o);
+}
+
+function _setPrototypeOf(o, p) {
+  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+    o.__proto__ = p;
+    return o;
+  };
+
+  return _setPrototypeOf(o, p);
+}
+
+function _assertThisInitialized(self) {
+  if (self === void 0) {
+    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+  }
+
+  return self;
+}
+
+function _possibleConstructorReturn(self, call) {
+  if (call && (typeof call === "object" || typeof call === "function")) {
+    return call;
+  }
+
+  return _assertThisInitialized(self);
+}
+
+function _toConsumableArray(arr) {
+  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
+}
+
+function _arrayWithoutHoles(arr) {
+  if (Array.isArray(arr)) {
+    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+    return arr2;
+  }
+}
+
+function _iterableToArray(iter) {
+  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+}
+
+function _nonIterableSpread() {
+  throw new TypeError("Invalid attempt to spread non-iterable instance");
+}
+
+/*
+ ** Generic functions which are not dependent on ApexCharts
+ */
+var Utils =
+/*#__PURE__*/
+function () {
+  function Utils() {
+    _classCallCheck(this, Utils);
+  }
+
+  _createClass(Utils, [{
+    key: "shadeRGBColor",
+    value: function shadeRGBColor(percent, color) {
+      var f = color.split(','),
+          t = percent < 0 ? 0 : 255,
+          p = percent < 0 ? percent * -1 : percent,
+          R = parseInt(f[0].slice(4)),
+          G = parseInt(f[1]),
+          B = parseInt(f[2]);
+      return 'rgb(' + (Math.round((t - R) * p) + R) + ',' + (Math.round((t - G) * p) + G) + ',' + (Math.round((t - B) * p) + B) + ')';
+    }
+  }, {
+    key: "shadeHexColor",
+    value: function shadeHexColor(percent, color) {
+      var f = parseInt(color.slice(1), 16),
+          t = percent < 0 ? 0 : 255,
+          p = percent < 0 ? percent * -1 : percent,
+          R = f >> 16,
+          G = f >> 8 & 0x00ff,
+          B = f & 0x0000ff;
+      return '#' + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1);
+    } // beautiful color shading blending code
+    // http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors
+
+  }, {
+    key: "shadeColor",
+    value: function shadeColor(p, color) {
+      if (color.length > 7) return this.shadeRGBColor(p, color);else return this.shadeHexColor(p, color);
+    }
+  }], [{
+    key: "bind",
+    value: function bind(fn, me) {
+      return function () {
+        return fn.apply(me, arguments);
+      };
+    }
+  }, {
+    key: "isObject",
+    value: function isObject(item) {
+      return item && _typeof(item) === 'object' && !Array.isArray(item) && item != null;
+    }
+  }, {
+    key: "listToArray",
+    value: function listToArray(list) {
+      var i,
+          array = [];
+
+      for (i = 0; i < list.length; i++) {
+        array[i] = list[i];
+      }
+
+      return array;
+    } // to extend defaults with user options
+    // credit: http://stackoverflow.com/questions/27936772/deep-object-merging-in-es6-es7#answer-34749873
+
+  }, {
+    key: "extend",
+    value: function extend(target, source) {
+      var _this = this;
+
+      if (typeof Object.assign !== 'function') {
+
+        (function () {
+          Object.assign = function (target) {
+
+            if (target === undefined || target === null) {
+              throw new TypeError('Cannot convert undefined or null to object');
+            }
+
+            var output = Object(target);
+
+            for (var index = 1; index < arguments.length; index++) {
+              var _source = arguments[index];
+
+              if (_source !== undefined && _source !== null) {
+                for (var nextKey in _source) {
+                  if (_source.hasOwnProperty(nextKey)) {
+                    output[nextKey] = _source[nextKey];
+                  }
+                }
+              }
+            }
+
+            return output;
+          };
+        })();
+      }
+
+      var output = Object.assign({}, target);
+
+      if (this.isObject(target) && this.isObject(source)) {
+        Object.keys(source).forEach(function (key) {
+          if (_this.isObject(source[key])) {
+            if (!(key in target)) {
+              Object.assign(output, _defineProperty({}, key, source[key]));
+            } else {
+              output[key] = _this.extend(target[key], source[key]);
+            }
+          } else {
+            Object.assign(output, _defineProperty({}, key, source[key]));
+          }
+        });
+      }
+
+      return output;
+    }
+  }, {
+    key: "extendArray",
+    value: function extendArray(arrToExtend, resultArr) {
+      var extendedArr = [];
+      arrToExtend.map(function (item) {
+        extendedArr.push(Utils.extend(resultArr, item));
+      });
+      arrToExtend = extendedArr;
+      return arrToExtend;
+    } // If month counter exceeds 12, it starts again from 1
+
+  }, {
+    key: "monthMod",
+    value: function monthMod(month) {
+      return month % 12;
+    }
+  }, {
+    key: "addProps",
+    value: function addProps(obj, arr, val) {
+      if (typeof arr === 'string') {
+        arr = arr.split('.');
+      }
+
+      obj[arr[0]] = obj[arr[0]] || {};
+      var tmpObj = obj[arr[0]];
+
+      if (arr.length > 1) {
+        arr.shift();
+        this.addProps(tmpObj, arr, val);
+      } else {
+        obj[arr[0]] = val;
+      }
+
+      return obj;
+    }
+  }, {
+    key: "clone",
+    value: function clone(source) {
+      if (Object.prototype.toString.call(source) === '[object Array]') {
+        var cloneResult = [];
+
+        for (var i = 0; i < source.length; i++) {
+          cloneResult[i] = this.clone(source[i]);
+        }
+
+        return cloneResult;
+      } else if (_typeof(source) === 'object') {
+        var _cloneResult = {};
+
+        for (var prop in source) {
+          if (source.hasOwnProperty(prop)) {
+            _cloneResult[prop] = this.clone(source[prop]);
+          }
+        }
+
+        return _cloneResult;
+      } else {
+        return source;
+      }
+    }
+  }, {
+    key: "log10",
+    value: function log10(x) {
+      return Math.log(x) / Math.LN10;
+    }
+  }, {
+    key: "roundToBase10",
+    value: function roundToBase10(x) {
+      return Math.pow(10, Math.floor(Math.log10(x)));
+    }
+  }, {
+    key: "roundToBase",
+    value: function roundToBase(x, base) {
+      return Math.pow(base, Math.floor(Math.log(x) / Math.log(base)));
+    }
+  }, {
+    key: "parseNumber",
+    value: function parseNumber(val) {
+      if (val === null) return val;
+      return parseFloat(val);
+    }
+  }, {
+    key: "noExponents",
+    value: function noExponents(val) {
+      var data = String(val).split(/[eE]/);
+      if (data.length == 1) return data[0];
+      var z = '',
+          sign = val < 0 ? '-' : '',
+          str = data[0].replace('.', ''),
+          mag = Number(data[1]) + 1;
+
+      if (mag < 0) {
+        z = sign + '0.';
+
+        while (mag++) {
+          z += '0';
+        }
+
+        return z + str.replace(/^\-/, '');
+      }
+
+      mag -= str.length;
+
+      while (mag--) {
+        z += '0';
+      }
+
+      return str + z;
+    }
+  }, {
+    key: "getDimensions",
+    value: function getDimensions(el) {
+      var computedStyle = getComputedStyle(el);
+      var ret = [];
+      var elementHeight = el.clientHeight;
+      var elementWidth = el.clientWidth;
+      elementHeight -= parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom);
+      elementWidth -= parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);
+      ret.push(elementWidth);
+      ret.push(elementHeight);
+      return ret;
+    }
+  }, {
+    key: "getBoundingClientRect",
+    value: function getBoundingClientRect(element) {
+      var rect = element.getBoundingClientRect();
+      return {
+        top: rect.top,
+        right: rect.right,
+        bottom: rect.bottom,
+        left: rect.left,
+        width: rect.width,
+        height: rect.height,
+        x: rect.x,
+        y: rect.y
+      };
+    } // http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-12342275
+
+  }, {
+    key: "hexToRgba",
+    value: function hexToRgba() {
+      var hex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '#999999';
+      var opacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.6;
+
+      if (hex.substring(0, 1) !== '#') {
+        hex = '#999999';
+      }
+
+      var h = hex.replace('#', '');
+      h = h.match(new RegExp('(.{' + h.length / 3 + '})', 'g'));
+
+      for (var i = 0; i < h.length; i++) {
+        h[i] = parseInt(h[i].length === 1 ? h[i] + h[i] : h[i], 16);
+      }
+
+      if (typeof opacity !== 'undefined') h.push(opacity);
+      return 'rgba(' + h.join(',') + ')';
+    }
+  }, {
+    key: "getOpacityFromRGBA",
+    value: function getOpacityFromRGBA(rgba) {
+      rgba = rgba.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
+      return rgba[3];
+    }
+  }, {
+    key: "rgb2hex",
+    value: function rgb2hex(rgb) {
+      rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
+      return rgb && rgb.length === 4 ? '#' + ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';
+    }
+  }, {
+    key: "isColorHex",
+    value: function isColorHex(color) {
+      return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(color);
+    }
+  }, {
+    key: "polarToCartesian",
+    value: function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
+      var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;
+      return {
+        x: centerX + radius * Math.cos(angleInRadians),
+        y: centerY + radius * Math.sin(angleInRadians)
+      };
+    }
+  }, {
+    key: "escapeString",
+    value: function escapeString(str) {
+      var escapeWith = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';
+      var newStr = str.toString().slice();
+      newStr = newStr.replace(/[` ~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, escapeWith);
+      return newStr;
+    }
+  }, {
+    key: "negToZero",
+    value: function negToZero(val) {
+      return val < 0 ? 0 : val;
+    }
+  }, {
+    key: "moveIndexInArray",
+    value: function moveIndexInArray(arr, old_index, new_index) {
+      if (new_index >= arr.length) {
+        var k = new_index - arr.length + 1;
+
+        while (k--) {
+          arr.push(undefined);
+        }
+      }
+
+      arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);
+      return arr;
+    }
+  }, {
+    key: "extractNumber",
+    value: function extractNumber(s) {
+      return parseFloat(s.replace(/[^\d\.]*/g, ''));
+    }
+  }, {
+    key: "randomString",
+    value: function randomString(len) {
+      var text = '';
+      var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+
+      for (var i = 0; i < len; i++) {
+        text += possible.charAt(Math.floor(Math.random() * possible.length));
+      }
+
+      return text;
+    }
+  }, {
+    key: "findAncestor",
+    value: function findAncestor(el, cls) {
+      while ((el = el.parentElement) && !el.classList.contains(cls)) {
+      }
+
+      return el;
+    }
+  }, {
+    key: "setELstyles",
+    value: function setELstyles(el, styles) {
+      for (var key in styles) {
+        if (styles.hasOwnProperty(key)) {
+          el.style.key = styles[key];
+        }
+      }
+    }
+  }, {
+    key: "isNumber",
+    value: function isNumber(value) {
+      return !isNaN(value) && parseFloat(Number(value)) === value && !isNaN(parseInt(value, 10));
+    }
+  }, {
+    key: "isFloat",
+    value: function isFloat(n) {
+      return Number(n) === n && n % 1 !== 0;
+    }
+  }, {
+    key: "isSafari",
+    value: function isSafari() {
+      return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
+    }
+  }, {
+    key: "isFirefox",
+    value: function isFirefox() {
+      return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
+    }
+  }, {
+    key: "isIE11",
+    value: function isIE11() {
+      if (window.navigator.userAgent.indexOf('MSIE') !== -1 || window.navigator.appVersion.indexOf('Trident/') > -1) {
+        return true;
+      }
+    }
+  }, {
+    key: "isIE",
+    value: function isIE() {
+      var ua = window.navigator.userAgent;
+      var msie = ua.indexOf('MSIE ');
+
+      if (msie > 0) {
+        // IE 10 or older => return version number
+        return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
+      }
+
+      var trident = ua.indexOf('Trident/');
+
+      if (trident > 0) {
+        // IE 11 => return version number
+        var rv = ua.indexOf('rv:');
+        return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
+      }
+
+      var edge = ua.indexOf('Edge/');
+
+      if (edge > 0) {
+        // Edge (IE 12+) => return version number
+        return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
+      } // other browser
+
+
+      return false;
+    }
+  }]);
+
+  return Utils;
+}();
+
+/**
+ * ApexCharts Filters Class for setting hover/active states on the paths.
+ *
+ * @module Formatters
+ **/
+
+var Filters =
+/*#__PURE__*/
+function () {
+  function Filters(ctx) {
+    _classCallCheck(this, Filters);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  } // create a re-usable filter which can be appended other filter effects and applied to multiple elements
+
+
+  _createClass(Filters, [{
+    key: "getDefaultFilter",
+    value: function getDefaultFilter(el, i) {
+      var w = this.w;
+      el.unfilter(true);
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+
+      if (w.config.states.normal.filter !== 'none') {
+        this.applyFilter(el, i, w.config.states.normal.filter.type, w.config.states.normal.filter.value);
+      } else {
+        if (w.config.chart.dropShadow.enabled) {
+          this.dropShadow(el, w.config.chart.dropShadow, i);
+        }
+      }
+    }
+  }, {
+    key: "addNormalFilter",
+    value: function addNormalFilter(el, i) {
+      var w = this.w;
+
+      if (w.config.chart.dropShadow.enabled) {
+        this.dropShadow(el, w.config.chart.dropShadow, i);
+      }
+    } // appends dropShadow to the filter object which can be chained with other filter effects
+
+  }, {
+    key: "addLightenFilter",
+    value: function addLightenFilter(el, i, attrs) {
+      var _this = this;
+
+      var w = this.w;
+      var intensity = attrs.intensity;
+
+      if (Utils.isFirefox()) {
+        return;
+      }
+
+      el.unfilter(true);
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+      el.filter(function (add) {
+        var shadowAttr = w.config.chart.dropShadow;
+
+        if (shadowAttr.enabled) {
+          filter = _this.addShadow(add, i, shadowAttr);
+        } else {
+          filter = add;
+        }
+
+        filter.componentTransfer({
+          rgb: {
+            type: 'linear',
+            slope: 1.5,
+            intercept: intensity
+          }
+        });
+      });
+      el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+    } // appends dropShadow to the filter object which can be chained with other filter effects
+
+  }, {
+    key: "addDarkenFilter",
+    value: function addDarkenFilter(el, i, attrs) {
+      var _this2 = this;
+
+      var w = this.w;
+      var intensity = attrs.intensity;
+
+      if (Utils.isFirefox()) {
+        return;
+      }
+
+      el.unfilter(true);
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+      el.filter(function (add) {
+        var shadowAttr = w.config.chart.dropShadow;
+
+        if (shadowAttr.enabled) {
+          filter = _this2.addShadow(add, i, shadowAttr);
+        } else {
+          filter = add;
+        }
+
+        filter.componentTransfer({
+          rgb: {
+            type: 'linear',
+            slope: intensity
+          }
+        });
+      });
+      el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+    }
+  }, {
+    key: "applyFilter",
+    value: function applyFilter(el, i, filter) {
+      var intensity = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.5;
+
+      switch (filter) {
+        case 'none':
+          {
+            this.addNormalFilter(el, i);
+            break;
+          }
+
+        case 'lighten':
+          {
+            this.addLightenFilter(el, i, {
+              intensity: intensity
+            });
+            break;
+          }
+
+        case 'darken':
+          {
+            this.addDarkenFilter(el, i, {
+              intensity: intensity
+            });
+            break;
+          }
+
+        default:
+          // do nothing
+          break;
+      }
+    } // appends dropShadow to the filter object which can be chained with other filter effects
+
+  }, {
+    key: "addShadow",
+    value: function addShadow(add, i, attrs) {
+      var blur = attrs.blur,
+          top = attrs.top,
+          left = attrs.left,
+          color = attrs.color,
+          opacity = attrs.opacity;
+      var shadowBlur = add.flood(Array.isArray(color) ? color[i] : color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source);
+      return add.blend(add.source, shadowBlur);
+    } // directly adds dropShadow to the element and returns the same element.
+    // the only way it is different from the addShadow() function is that addShadow is chainable to other filters, while this function discards all filters and add dropShadow
+
+  }, {
+    key: "dropShadow",
+    value: function dropShadow(el, attrs) {
+      var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+      var top = attrs.top,
+          left = attrs.left,
+          blur = attrs.blur,
+          color = attrs.color,
+          opacity = attrs.opacity,
+          noUserSpaceOnUse = attrs.noUserSpaceOnUse;
+      el.unfilter(true);
+      color = Array.isArray(color) ? color[i] : color;
+      var filter = new window.SVG.Filter();
+      filter.size('120%', '180%', '-5%', '-40%');
+      el.filter(function (add) {
+        var shadowBlur = null;
+
+        if (Utils.isSafari() || Utils.isFirefox() || Utils.isIE()) {
+          // safari/firefox has some alternative way to use this filter
+          shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur);
+        } else {
+          shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source);
+        }
+
+        add.blend(add.source, shadowBlur);
+      });
+
+      if (!noUserSpaceOnUse) {
+        el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+      }
+
+      return el;
+    }
+  }, {
+    key: "setSelectionFilter",
+    value: function setSelectionFilter(el, realIndex, dataPointIndex) {
+      var w = this.w;
+
+      if (typeof w.globals.selectedDataPoints[realIndex] !== 'undefined') {
+        if (w.globals.selectedDataPoints[realIndex].indexOf(dataPointIndex) > -1) {
+          el.node.setAttribute('selected', true);
+          var activeFilter = w.config.states.active.filter;
+
+          if (activeFilter !== 'none') {
+            this.applyFilter(el, realIndex, activeFilter.type, activeFilter.value);
+          }
+        }
+      }
+    }
+  }]);
+
+  return Filters;
+}();
+
+/**
+ * ApexCharts Animation Class.
+ *
+ * @module Animations
+ **/
+
+var Animations =
+/*#__PURE__*/
+function () {
+  function Animations(ctx) {
+    _classCallCheck(this, Animations);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.setEasingFunctions();
+  }
+
+  _createClass(Animations, [{
+    key: "setEasingFunctions",
+    value: function setEasingFunctions() {
+      var easing;
+      var userDefinedEasing = this.w.config.chart.animations.easing;
+
+      switch (userDefinedEasing) {
+        case 'linear':
+          {
+            easing = '-';
+            break;
+          }
+
+        case 'easein':
+          {
+            easing = '<';
+            break;
+          }
+
+        case 'easeout':
+          {
+            easing = '>';
+            break;
+          }
+
+        case 'easeinout':
+          {
+            easing = '<>';
+            break;
+          }
+
+        case 'swing':
+          {
+            easing = function easing(pos) {
+              var s = 1.70158;
+              return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
+            };
+
+            break;
+          }
+
+        case 'bounce':
+          {
+            easing = function easing(pos) {
+              if (pos < 1 / 2.75) {
+                return 7.5625 * pos * pos;
+              } else if (pos < 2 / 2.75) {
+                return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
+              } else if (pos < 2.5 / 2.75) {
+                return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
+              } else {
+                return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
+              }
+            };
+
+            break;
+          }
+
+        case 'elastic':
+          {
+            easing = function easing(pos) {
+              if (pos === !!pos) return pos;
+              return Math.pow(2, -10 * pos) * Math.sin((pos - 0.075) * (2 * Math.PI) / 0.3) + 1;
+            };
+
+            break;
+          }
+
+        default:
+          {
+            easing = '<>';
+          }
+      }
+
+      this.w.globals.easing = easing;
+    }
+  }, {
+    key: "animateLine",
+    value: function animateLine(el, from, to, speed) {
+      el.attr(from).animate(speed).attr(to);
+    }
+    /*
+     ** Animate radius of a circle element
+     */
+
+  }, {
+    key: "animateCircleRadius",
+    value: function animateCircleRadius(el, from, to, speed, easing) {
+      if (!from) from = 0;
+      el.attr({
+        r: from
+      }).animate(speed, easing).attr({
+        r: to
+      });
+    }
+    /*
+     ** Animate radius and position of a circle element
+     */
+
+  }, {
+    key: "animateCircle",
+    value: function animateCircle(el, from, to, speed, easing) {
+      el.attr({
+        r: from.r,
+        cx: from.cx,
+        cy: from.cy
+      }).animate(speed, easing).attr({
+        r: to.r,
+        cx: to.cx,
+        cy: to.cy
+      });
+    }
+    /*
+     ** Animate rect properties
+     */
+
+  }, {
+    key: "animateRect",
+    value: function animateRect(el, from, to, speed, fn) {
+      el.attr(from).animate(speed).attr(to).afterAll(function () {
+        fn();
+      });
+    }
+  }, {
+    key: "animatePathsGradually",
+    value: function animatePathsGradually(params) {
+      var el = params.el,
+          j = params.j,
+          pathFrom = params.pathFrom,
+          pathTo = params.pathTo,
+          speed = params.speed,
+          delay = params.delay,
+          strokeWidth = params.strokeWidth;
+      var me = this;
+      var w = this.w;
+      var delayFactor = 0;
+
+      if (w.config.chart.animations.animateGradually.enabled) {
+        delayFactor = w.config.chart.animations.animateGradually.delay;
+      }
+
+      if (w.config.chart.animations.dynamicAnimation.enabled && w.globals.dataChanged) {
+        delayFactor = 0;
+      }
+
+      me.morphSVG(el, j, pathFrom, pathTo, speed, strokeWidth, delay * delayFactor);
+    }
+  }, {
+    key: "showDelayedElements",
+    value: function showDelayedElements() {
+      this.w.globals.delayedElements.forEach(function (d) {
+        var ele = d.el;
+        ele.classList.remove('hidden');
+      });
+    } // SVG.js animation for morphing one path to another
+
+  }, {
+    key: "morphSVG",
+    value: function morphSVG(el, j, pathFrom, pathTo, speed, strokeWidth, delay) {
+      var _this = this;
+
+      var w = this.w;
+
+      if (!pathFrom) {
+        pathFrom = el.attr('pathFrom');
+      }
+
+      if (!pathTo) {
+        pathTo = el.attr('pathTo');
+      }
+
+      if (!pathFrom || pathFrom.indexOf('undefined') > -1 || pathFrom.indexOf('NaN') > -1) {
+        pathFrom = "M 0 ".concat(w.globals.gridHeight);
+        speed = 1;
+      }
+
+      if (pathTo.indexOf('undefined') > -1 || pathTo.indexOf('NaN') > -1) {
+        pathTo = "M 0 ".concat(w.globals.gridHeight);
+        speed = 1;
+      }
+
+      if (!w.globals.shouldAnimate) {
+        speed = 1;
+      }
+
+      el.plot(pathFrom).animate(1, w.globals.easing, delay).plot(pathFrom).animate(speed, w.globals.easing, delay).plot(pathTo).afterAll(function () {
+        // a flag to indicate that the original mount function can return true now as animation finished here
+        if (Utils.isNumber(j)) {
+          if (j === w.globals.series[w.globals.maxValsInArrayIndex].length - 2 && w.globals.shouldAnimate) {
+            w.globals.animationEnded = true;
+          }
+        } else if (w.globals.shouldAnimate) {
+          w.globals.animationEnded = true;
+
+          if (typeof w.config.chart.events.animationEnd === 'function') {
+            w.config.chart.events.animationEnd(_this.ctx, w);
+          }
+        }
+
+        _this.showDelayedElements();
+      });
+    }
+  }]);
+
+  return Animations;
+}();
+
+/**
+ * ApexCharts Graphics Class for all drawing operations.
+ *
+ * @module Graphics
+ **/
+
+var Graphics =
+/*#__PURE__*/
+function () {
+  function Graphics(ctx) {
+    _classCallCheck(this, Graphics);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Graphics, [{
+    key: "drawLine",
+    value: function drawLine(x1, y1, x2, y2) {
+      var lineColor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '#a8a8a8';
+      var dashArray = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
+      var strokeWidth = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
+      var w = this.w;
+      var line = w.globals.dom.Paper.line().attr({
+        x1: x1,
+        y1: y1,
+        x2: x2,
+        y2: y2,
+        stroke: lineColor,
+        'stroke-dasharray': dashArray,
+        'stroke-width': strokeWidth
+      });
+      return line;
+    }
+  }, {
+    key: "drawRect",
+    value: function drawRect() {
+      var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+      var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+      var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+      var radius = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+      var color = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '#fefefe';
+      var opacity = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1;
+      var strokeWidth = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
+      var strokeColor = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null;
+      var strokeDashArray = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 0;
+      var w = this.w;
+      var rect = w.globals.dom.Paper.rect();
+      rect.attr({
+        x: x1,
+        y: y1,
+        width: x2 > 0 ? x2 : 0,
+        height: y2 > 0 ? y2 : 0,
+        rx: radius,
+        ry: radius,
+        fill: color,
+        opacity: opacity,
+        'stroke-width': strokeWidth !== null ? strokeWidth : 0,
+        stroke: strokeColor !== null ? strokeColor : 'none',
+        'stroke-dasharray': strokeDashArray
+      });
+      return rect;
+    }
+  }, {
+    key: "drawPolygon",
+    value: function drawPolygon(polygonString) {
+      var stroke = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#e1e1e1';
+      var fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none';
+      var w = this.w;
+      var polygon = w.globals.dom.Paper.polygon(polygonString).attr({
+        fill: fill,
+        stroke: stroke
+      });
+      return polygon;
+    }
+  }, {
+    key: "drawCircle",
+    value: function drawCircle(radius) {
+      var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+      var w = this.w;
+      var c = w.globals.dom.Paper.circle(radius * 2);
+
+      if (attrs !== null) {
+        c.attr(attrs);
+      }
+
+      return c;
+    }
+  }, {
+    key: "drawPath",
+    value: function drawPath(_ref) {
+      var _ref$d = _ref.d,
+          d = _ref$d === void 0 ? '' : _ref$d,
+          _ref$stroke = _ref.stroke,
+          stroke = _ref$stroke === void 0 ? '#a8a8a8' : _ref$stroke,
+          _ref$strokeWidth = _ref.strokeWidth,
+          strokeWidth = _ref$strokeWidth === void 0 ? 1 : _ref$strokeWidth,
+          fill = _ref.fill,
+          _ref$fillOpacity = _ref.fillOpacity,
+          fillOpacity = _ref$fillOpacity === void 0 ? 1 : _ref$fillOpacity,
+          _ref$strokeOpacity = _ref.strokeOpacity,
+          strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,
+          classes = _ref.classes,
+          _ref$strokeLinecap = _ref.strokeLinecap,
+          strokeLinecap = _ref$strokeLinecap === void 0 ? null : _ref$strokeLinecap,
+          _ref$strokeDashArray = _ref.strokeDashArray,
+          strokeDashArray = _ref$strokeDashArray === void 0 ? 0 : _ref$strokeDashArray;
+      var w = this.w;
+
+      if (strokeLinecap === null) {
+        strokeLinecap = w.config.stroke.lineCap;
+      }
+
+      if (d.indexOf('undefined') > -1 || d.indexOf('NaN') > -1) {
+        d = "M 0 ".concat(w.globals.gridHeight);
+      }
+
+      var p = w.globals.dom.Paper.path(d).attr({
+        fill: fill,
+        'fill-opacity': fillOpacity,
+        stroke: stroke,
+        'stroke-opacity': strokeOpacity,
+        'stroke-linecap': strokeLinecap,
+        'stroke-width': strokeWidth,
+        'stroke-dasharray': strokeDashArray,
+        class: classes
+      });
+      return p;
+    }
+  }, {
+    key: "group",
+    value: function group() {
+      var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+      var w = this.w;
+      var g = w.globals.dom.Paper.group();
+
+      if (attrs !== null) {
+        g.attr(attrs);
+      }
+
+      return g;
+    }
+  }, {
+    key: "move",
+    value: function move(x, y) {
+      var move = ['M', x, y].join(' ');
+      return move;
+    }
+  }, {
+    key: "line",
+    value: function line(x, y) {
+      var hORv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+      var line = null;
+
+      if (hORv === null) {
+        line = ['L', x, y].join(' ');
+      } else if (hORv === 'H') {
+        line = ['H', x].join(' ');
+      } else if (hORv === 'V') {
+        line = ['V', y].join(' ');
+      }
+
+      return line;
+    }
+  }, {
+    key: "curve",
+    value: function curve(x1, y1, x2, y2, x, y) {
+      var curve = ['C', x1, y1, x2, y2, x, y].join(' ');
+      return curve;
+    }
+  }, {
+    key: "quadraticCurve",
+    value: function quadraticCurve(x1, y1, x, y) {
+      var curve = ['Q', x1, y1, x, y].join(' ');
+      return curve;
+    }
+  }, {
+    key: "arc",
+    value: function arc(rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y) {
+      var relative = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;
+      var coord = 'A';
+      if (relative) coord = 'a';
+      var arc = [coord, rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y].join(' ');
+      return arc;
+    }
+    /**
+     * @memberof Graphics
+     * @param {object}
+     *  i = series's index
+     *  realIndex = realIndex is series's actual index when it was drawn time. After several redraws, the iterating "i" may change in loops, but realIndex doesn't
+     *  pathFrom = existing pathFrom to animateTo
+     *  pathTo = new Path to which d attr will be animated from pathFrom to pathTo
+     *  stroke = line Color
+     *  strokeWidth = width of path Line
+     *  fill = it can be gradient, single color, pattern or image
+     *  animationDelay = how much to delay when starting animation (in milliseconds)
+     *  dataChangeSpeed = for dynamic animations, when data changes
+     *  className = class attribute to add
+     * @return {object} svg.js path object
+     **/
+
+  }, {
+    key: "renderPaths",
+    value: function renderPaths(_ref2) {
+      var i = _ref2.i,
+          j = _ref2.j,
+          realIndex = _ref2.realIndex,
+          pathFrom = _ref2.pathFrom,
+          pathTo = _ref2.pathTo,
+          stroke = _ref2.stroke,
+          strokeWidth = _ref2.strokeWidth,
+          strokeLinecap = _ref2.strokeLinecap,
+          fill = _ref2.fill,
+          animationDelay = _ref2.animationDelay,
+          initialSpeed = _ref2.initialSpeed,
+          dataChangeSpeed = _ref2.dataChangeSpeed,
+          className = _ref2.className,
+          id = _ref2.id,
+          _ref2$shouldClipToGri = _ref2.shouldClipToGrid,
+          shouldClipToGrid = _ref2$shouldClipToGri === void 0 ? true : _ref2$shouldClipToGri,
+          _ref2$bindEventsOnPat = _ref2.bindEventsOnPaths,
+          bindEventsOnPaths = _ref2$bindEventsOnPat === void 0 ? true : _ref2$bindEventsOnPat,
+          _ref2$drawShadow = _ref2.drawShadow,
+          drawShadow = _ref2$drawShadow === void 0 ? true : _ref2$drawShadow;
+      var w = this.w;
+      var filters = new Filters(this.ctx);
+      var anim = new Animations(this.ctx);
+      var initialAnim = this.w.config.chart.animations.enabled;
+      var dynamicAnim = initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+      var d;
+      var shouldAnimate = !!(initialAnim && !w.globals.resized || dynamicAnim && w.globals.dataChanged && w.globals.shouldAnimate);
+
+      if (shouldAnimate) {
+        d = pathFrom;
+      } else {
+        d = pathTo;
+        this.w.globals.animationEnded = true;
+      }
+
+      var strokeDashArrayOpt = w.config.stroke.dashArray;
+      var strokeDashArray = 0;
+
+      if (Array.isArray(strokeDashArrayOpt)) {
+        strokeDashArray = strokeDashArrayOpt[realIndex];
+      } else {
+        strokeDashArray = w.config.stroke.dashArray;
+      }
+
+      var el = this.drawPath({
+        d: d,
+        stroke: stroke,
+        strokeWidth: strokeWidth,
+        fill: fill,
+        fillOpacity: 1,
+        classes: className,
+        strokeLinecap: strokeLinecap,
+        strokeDashArray: strokeDashArray
+      });
+      el.attr('id', "".concat(id, "-").concat(i));
+      el.attr('index', realIndex);
+
+      if (shouldClipToGrid) {
+        el.attr({
+          'clip-path': "url(#gridRectMask".concat(w.globals.cuid, ")")
+        });
+      } // const defaultFilter = el.filterer
+
+
+      if (w.config.states.normal.filter.type !== 'none') {
+        filters.getDefaultFilter(el, realIndex);
+      } else {
+        if (w.config.chart.dropShadow.enabled && drawShadow) {
+          if (!w.config.chart.dropShadow.enabledSeries || w.config.chart.dropShadow.enabledSeries && w.config.chart.dropShadow.enabledSeries.indexOf(realIndex) !== -1) {
+            var shadow = w.config.chart.dropShadow;
+            filters.dropShadow(el, shadow, realIndex);
+          }
+        }
+      }
+
+      if (bindEventsOnPaths) {
+        el.node.addEventListener('mouseenter', this.pathMouseEnter.bind(this, el));
+        el.node.addEventListener('mouseleave', this.pathMouseLeave.bind(this, el));
+        el.node.addEventListener('mousedown', this.pathMouseDown.bind(this, el));
+      }
+
+      el.attr({
+        pathTo: pathTo,
+        pathFrom: pathFrom
+      });
+      var defaultAnimateOpts = {
+        el: el,
+        j: j,
+        pathFrom: pathFrom,
+        pathTo: pathTo,
+        strokeWidth: strokeWidth
+      };
+
+      if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+        anim.animatePathsGradually(_objectSpread({}, defaultAnimateOpts, {
+          speed: initialSpeed,
+          delay: animationDelay
+        }));
+      } else {
+        if (w.globals.resized || !w.globals.dataChanged) {
+          anim.showDelayedElements();
+        }
+      }
+
+      if (w.globals.dataChanged && dynamicAnim && shouldAnimate) {
+        anim.animatePathsGradually(_objectSpread({}, defaultAnimateOpts, {
+          speed: dataChangeSpeed
+        }));
+      }
+
+      return el;
+    }
+  }, {
+    key: "drawPattern",
+    value: function drawPattern(style, width, height) {
+      var stroke = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '#a8a8a8';
+      var strokeWidth = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+      var w = this.w;
+      var p = w.globals.dom.Paper.pattern(width, height, function (add) {
+        if (style === 'horizontalLines') {
+          add.line(0, 0, height, 0).stroke({
+            color: stroke,
+            width: strokeWidth + 1
+          });
+        } else if (style === 'verticalLines') {
+          add.line(0, 0, 0, width).stroke({
+            color: stroke,
+            width: strokeWidth + 1
+          });
+        } else if (style === 'slantedLines') {
+          add.line(0, 0, width, height).stroke({
+            color: stroke,
+            width: strokeWidth
+          });
+        } else if (style === 'squares') {
+          add.rect(width, height).fill('none').stroke({
+            color: stroke,
+            width: strokeWidth
+          });
+        } else if (style === 'circles') {
+          add.circle(width).fill('none').stroke({
+            color: stroke,
+            width: strokeWidth
+          });
+        }
+      });
+      return p;
+    }
+  }, {
+    key: "drawGradient",
+    value: function drawGradient(style, gfrom, gto, opacityFrom, opacityTo) {
+      var size = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
+      var stops = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
+      var colorStops = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
+      var i = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0;
+      var w = this.w;
+      var g;
+      gfrom = Utils.hexToRgba(gfrom, opacityFrom);
+      gto = Utils.hexToRgba(gto, opacityTo);
+      var stop1 = 0;
+      var stop2 = 1;
+      var stop3 = 1;
+      var stop4 = null;
+
+      if (stops !== null) {
+        stop1 = typeof stops[0] !== 'undefined' ? stops[0] / 100 : 0;
+        stop2 = typeof stops[1] !== 'undefined' ? stops[1] / 100 : 1;
+        stop3 = typeof stops[2] !== 'undefined' ? stops[2] / 100 : 1;
+        stop4 = typeof stops[3] !== 'undefined' ? stops[3] / 100 : null;
+      }
+
+      var radial = !!(w.config.chart.type === 'donut' || w.config.chart.type === 'pie' || w.config.chart.type === 'bubble');
+
+      if (colorStops === null || colorStops.length === 0) {
+        g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) {
+          stop.at(stop1, gfrom, opacityFrom);
+          stop.at(stop2, gto, opacityTo);
+          stop.at(stop3, gto, opacityTo);
+
+          if (stop4 !== null) {
+            stop.at(stop4, gfrom, opacityFrom);
+          }
+        });
+      } else {
+        g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) {
+          var stops = Array.isArray(colorStops[i]) ? colorStops[i] : colorStops;
+          stops.forEach(function (s) {
+            stop.at(s.offset / 100, s.color, s.opacity);
+          });
+        });
+      }
+
+      if (!radial) {
+        if (style === 'vertical') {
+          g.from(0, 0).to(0, 1);
+        } else if (style === 'diagonal') {
+          g.from(0, 0).to(1, 1);
+        } else if (style === 'horizontal') {
+          g.from(0, 1).to(1, 1);
+        } else if (style === 'diagonal2') {
+          g.from(0, 1).to(2, 2);
+        }
+      } else {
+        var offx = w.globals.gridWidth / 2;
+        var offy = w.globals.gridHeight / 2;
+
+        if (w.config.chart.type !== 'bubble') {
+          g.attr({
+            gradientUnits: 'userSpaceOnUse',
+            cx: offx,
+            cy: offy,
+            r: size
+          });
+        } else {
+          g.attr({
+            cx: 0.5,
+            cy: 0.5,
+            r: 0.8,
+            fx: 0.2,
+            fy: 0.2
+          });
+        }
+      }
+
+      return g;
+    }
+  }, {
+    key: "drawText",
+    value: function drawText(opts) {
+      var w = this.w;
+      var x = opts.x,
+          y = opts.y,
+          text = opts.text,
+          textAnchor = opts.textAnchor,
+          fontSize = opts.fontSize,
+          fontFamily = opts.fontFamily,
+          foreColor = opts.foreColor,
+          opacity = opts.opacity;
+      if (typeof text === 'undefined') text = '';
+
+      if (!textAnchor) {
+        textAnchor = 'start';
+      }
+
+      if (!foreColor) {
+        foreColor = w.config.chart.foreColor;
+      }
+
+      fontFamily = fontFamily || w.config.chart.fontFamily;
+      var elText;
+
+      if (Array.isArray(text)) {
+        elText = w.globals.dom.Paper.text(function (add) {
+          for (var i = 0; i < text.length; i++) {
+            add.tspan(text[i]);
+          }
+        });
+      } else {
+        elText = w.globals.dom.Paper.plain(text);
+      }
+
+      elText.attr({
+        x: x,
+        y: y,
+        'text-anchor': textAnchor,
+        'dominant-baseline': 'auto',
+        'font-size': fontSize,
+        'font-family': fontFamily,
+        fill: foreColor,
+        class: 'apexcharts-text ' + opts.cssClass ? opts.cssClass : ''
+      });
+      elText.node.style.fontFamily = fontFamily;
+      elText.node.style.opacity = opacity;
+      return elText;
+    }
+  }, {
+    key: "addTspan",
+    value: function addTspan(textEl, text, fontFamily) {
+      var tspan = textEl.tspan(text);
+
+      if (!fontFamily) {
+        fontFamily = this.w.config.chart.fontFamily;
+      }
+
+      tspan.node.style.fontFamily = fontFamily;
+    }
+  }, {
+    key: "drawMarker",
+    value: function drawMarker(x, y, opts) {
+      x = x || 0;
+      var size = opts.pSize || 0;
+      var elPoint = null;
+
+      if (opts.shape === 'square') {
+        var radius = opts.pRadius === undefined ? size / 2 : opts.pRadius;
+
+        if (y === null) {
+          size = 0;
+          radius = 0;
+        }
+
+        var nSize = size * 1.2 + radius;
+        var p = this.drawRect(nSize, nSize, nSize, nSize, radius);
+        p.attr({
+          x: x - nSize / 2,
+          y: y - nSize / 2,
+          cx: x,
+          cy: y,
+          class: opts.class ? opts.class : '',
+          fill: opts.pointFillColor,
+          'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1,
+          stroke: opts.pointStrokeColor,
+          'stroke-width': opts.pWidth ? opts.pWidth : 0,
+          'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1
+        });
+        elPoint = p;
+      } else if (opts.shape === 'circle') {
+        if (!Utils.isNumber(y)) {
+          size = 0;
+          y = 0;
+        } // let nSize = size - opts.pRadius / 2 < 0 ? 0 : size - opts.pRadius / 2
+
+
+        elPoint = this.drawCircle(size, {
+          cx: x,
+          cy: y,
+          class: opts.class ? opts.class : '',
+          stroke: opts.pointStrokeColor,
+          fill: opts.pointFillColor,
+          'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1,
+          'stroke-width': opts.pWidth ? opts.pWidth : 0,
+          'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1
+        });
+      }
+
+      return elPoint;
+    }
+  }, {
+    key: "pathMouseEnter",
+    value: function pathMouseEnter(path, e) {
+      var w = this.w;
+      var filters = new Filters(this.ctx);
+      var i = parseInt(path.node.getAttribute('index'));
+      var j = parseInt(path.node.getAttribute('j'));
+
+      if (typeof w.config.chart.events.dataPointMouseEnter === 'function') {
+        w.config.chart.events.dataPointMouseEnter(e, this.ctx, {
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+      }
+
+      this.ctx.fireEvent('dataPointMouseEnter', [e, this.ctx, {
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      }]);
+
+      if (w.config.states.active.filter.type !== 'none') {
+        if (path.node.getAttribute('selected') === 'true') {
+          return;
+        }
+      }
+
+      if (w.config.states.hover.filter.type !== 'none') {
+        if (w.config.states.active.filter.type !== 'none' && !w.globals.isTouchDevice) {
+          var hoverFilter = w.config.states.hover.filter;
+          filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value);
+        }
+      }
+    }
+  }, {
+    key: "pathMouseLeave",
+    value: function pathMouseLeave(path, e) {
+      var w = this.w;
+      var filters = new Filters(this.ctx);
+      var i = parseInt(path.node.getAttribute('index'));
+      var j = parseInt(path.node.getAttribute('j'));
+
+      if (typeof w.config.chart.events.dataPointMouseLeave === 'function') {
+        w.config.chart.events.dataPointMouseLeave(e, this.ctx, {
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+      }
+
+      this.ctx.fireEvent('dataPointMouseLeave', [e, this.ctx, {
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      }]);
+
+      if (w.config.states.active.filter.type !== 'none') {
+        if (path.node.getAttribute('selected') === 'true') {
+          return;
+        }
+      }
+
+      if (w.config.states.hover.filter.type !== 'none') {
+        filters.getDefaultFilter(path, i);
+      }
+    }
+  }, {
+    key: "pathMouseDown",
+    value: function pathMouseDown(path, e) {
+      var w = this.w;
+      var filters = new Filters(this.ctx);
+      var i = parseInt(path.node.getAttribute('index'));
+      var j = parseInt(path.node.getAttribute('j'));
+      var selected = 'false';
+
+      if (path.node.getAttribute('selected') === 'true') {
+        path.node.setAttribute('selected', 'false');
+
+        if (w.globals.selectedDataPoints[i].indexOf(j) > -1) {
+          var index = w.globals.selectedDataPoints[i].indexOf(j);
+          w.globals.selectedDataPoints[i].splice(index, 1);
+        }
+      } else {
+        if (!w.config.states.active.allowMultipleDataPointsSelection && w.globals.selectedDataPoints.length > 0) {
+          w.globals.selectedDataPoints = [];
+          var elPaths = w.globals.dom.Paper.select('.apexcharts-series path').members;
+          var elCircles = w.globals.dom.Paper.select('.apexcharts-series circle, .apexcharts-series rect').members;
+          elPaths.forEach(function (elPath) {
+            elPath.node.setAttribute('selected', 'false');
+            filters.getDefaultFilter(elPath, i);
+          });
+          elCircles.forEach(function (circle) {
+            circle.node.setAttribute('selected', 'false');
+            filters.getDefaultFilter(circle, i);
+          });
+        }
+
+        path.node.setAttribute('selected', 'true');
+        selected = 'true';
+
+        if (typeof w.globals.selectedDataPoints[i] === 'undefined') {
+          w.globals.selectedDataPoints[i] = [];
+        }
+
+        w.globals.selectedDataPoints[i].push(j);
+      }
+
+      if (selected === 'true') {
+        var activeFilter = w.config.states.active.filter;
+
+        if (activeFilter !== 'none') {
+          filters.applyFilter(path, i, activeFilter.type, activeFilter.value);
+        }
+      } else {
+        if (w.config.states.active.filter.type !== 'none') {
+          filters.getDefaultFilter(path, i);
+        }
+      }
+
+      if (typeof w.config.chart.events.dataPointSelection === 'function') {
+        w.config.chart.events.dataPointSelection(e, this.ctx, {
+          selectedDataPoints: w.globals.selectedDataPoints,
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+      }
+
+      this.ctx.fireEvent('dataPointSelection', [e, this.ctx, {
+        selectedDataPoints: w.globals.selectedDataPoints,
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      }]); // if (this.w.config.chart.selection.selectedPoints !== undefined) {
+      //   this.w.config.chart.selection.selectedPoints(w.globals.selectedDataPoints)
+      // }
+    }
+  }, {
+    key: "rotateAroundCenter",
+    value: function rotateAroundCenter(el) {
+      var coord = el.getBBox();
+      var x = coord.x + coord.width / 2;
+      var y = coord.y + coord.height / 2;
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "getTextRects",
+    value: function getTextRects(text, fontSize, fontFamily, transform) {
+      var useBBox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
+      var w = this.w;
+      var virtualText = this.drawText({
+        x: -200,
+        y: -200,
+        text: text,
+        textAnchor: 'start',
+        fontSize: fontSize,
+        fontFamily: fontFamily,
+        foreColor: '#fff',
+        opacity: 0
+      });
+
+      if (transform) {
+        virtualText.attr('transform', transform);
+      }
+
+      w.globals.dom.Paper.add(virtualText);
+      var rect = virtualText.bbox();
+
+      if (!useBBox) {
+        rect = virtualText.node.getBoundingClientRect();
+      }
+
+      virtualText.remove();
+      return {
+        width: rect.width,
+        height: rect.height
+      };
+    }
+    /**
+     * append ... to long text
+     * http://stackoverflow.com/questions/9241315/trimming-text-to-a-given-pixel-width-in-svg
+     * @memberof Graphics
+     **/
+
+  }, {
+    key: "placeTextWithEllipsis",
+    value: function placeTextWithEllipsis(textObj, textString, width) {
+      textObj.textContent = textString;
+
+      if (textString.length > 0) {
+        // ellipsis is needed
+        if (textObj.getSubStringLength(0, textString.length) >= width) {
+          for (var x = textString.length - 3; x > 0; x -= 3) {
+            if (textObj.getSubStringLength(0, x) <= width) {
+              textObj.textContent = textString.substring(0, x) + '...';
+              return;
+            }
+          }
+
+          textObj.textContent = '...'; // can't place at all
+        }
+      }
+    }
+  }], [{
+    key: "setAttrs",
+    value: function setAttrs(el, attrs) {
+      for (var key in attrs) {
+        if (attrs.hasOwnProperty(key)) {
+          el.setAttribute(key, attrs[key]);
+        }
+      }
+    }
+  }]);
+
+  return Graphics;
+}();
+
+const name = "en";
+const options = {
+	months: [
+		"January",
+		"February",
+		"March",
+		"April",
+		"May",
+		"June",
+		"July",
+		"August",
+		"September",
+		"October",
+		"November",
+		"December"
+	],
+	shortMonths: [
+		"Jan",
+		"Feb",
+		"Mar",
+		"Apr",
+		"May",
+		"Jun",
+		"Jul",
+		"Aug",
+		"Sep",
+		"Oct",
+		"Nov",
+		"Dec"
+	],
+	days: [
+		"Sunday",
+		"Monday",
+		"Tuesday",
+		"Wednesday",
+		"Thursday",
+		"Friday",
+		"Saturday"
+	],
+	shortDays: [
+		"Sun",
+		"Mon",
+		"Tue",
+		"Wed",
+		"Thu",
+		"Fri",
+		"Sat"
+	],
+	toolbar: {
+		exportToSVG: "Download SVG",
+		exportToPNG: "Download PNG",
+		menu: "Menu",
+		selection: "Selection",
+		selectionZoom: "Selection Zoom",
+		zoomIn: "Zoom In",
+		zoomOut: "Zoom Out",
+		pan: "Panning",
+		reset: "Reset Zoom"
+	}
+};
+var en = {
+	name: name,
+	options: options
+};
+
+var Options =
+/*#__PURE__*/
+function () {
+  function Options() {
+    _classCallCheck(this, Options);
+
+    this.yAxis = {
+      show: true,
+      showAlways: false,
+      seriesName: undefined,
+      opposite: false,
+      reversed: false,
+      logarithmic: false,
+      tickAmount: undefined,
+      forceNiceScale: false,
+      max: undefined,
+      min: undefined,
+      floating: false,
+      decimalsInFloat: undefined,
+      labels: {
+        show: true,
+        minWidth: 0,
+        maxWidth: 160,
+        offsetX: 0,
+        offsetY: 0,
+        align: undefined,
+        rotate: 0,
+        padding: 20,
+        style: {
+          colors: [],
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: ''
+        },
+        formatter: undefined
+      },
+      axisBorder: {
+        show: false,
+        color: '#78909C',
+        offsetX: 0,
+        offsetY: 0
+      },
+      axisTicks: {
+        show: false,
+        color: '#78909C',
+        width: 6,
+        offsetX: 0,
+        offsetY: 0
+      },
+      title: {
+        text: undefined,
+        rotate: 90,
+        offsetY: 0,
+        offsetX: 0,
+        style: {
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: ''
+        }
+      },
+      tooltip: {
+        enabled: false,
+        offsetX: 0
+      },
+      crosshairs: {
+        show: true,
+        position: 'front',
+        stroke: {
+          color: '#b6b6b6',
+          width: 1,
+          dashArray: 0
+        }
+      }
+    };
+    this.xAxisAnnotation = {
+      x: 0,
+      x2: null,
+      strokeDashArray: 1,
+      fillColor: '#c2c2c2',
+      borderColor: '#c2c2c2',
+      opacity: 0.3,
+      offsetX: 0,
+      offsetY: 0,
+      label: {
+        borderColor: '#c2c2c2',
+        borderWidth: 1,
+        text: undefined,
+        textAnchor: 'middle',
+        orientation: 'vertical',
+        position: 'top',
+        offsetX: 0,
+        offsetY: 0,
+        style: {
+          background: '#fff',
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: '',
+          padding: {
+            left: 5,
+            right: 5,
+            top: 2,
+            bottom: 2
+          }
+        }
+      }
+    };
+    this.yAxisAnnotation = {
+      y: 0,
+      y2: null,
+      strokeDashArray: 1,
+      fillColor: '#c2c2c2',
+      borderColor: '#c2c2c2',
+      opacity: 0.3,
+      offsetX: 0,
+      offsetY: 0,
+      yAxisIndex: 0,
+      label: {
+        borderColor: '#c2c2c2',
+        borderWidth: 1,
+        text: undefined,
+        textAnchor: 'end',
+        position: 'right',
+        offsetX: 0,
+        offsetY: -3,
+        style: {
+          background: '#fff',
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: '',
+          padding: {
+            left: 5,
+            right: 5,
+            top: 0,
+            bottom: 2
+          }
+        }
+      }
+    };
+    this.pointAnnotation = {
+      x: 0,
+      y: null,
+      yAxisIndex: 0,
+      seriesIndex: 0,
+      marker: {
+        size: 0,
+        fillColor: '#fff',
+        strokeWidth: 2,
+        strokeColor: '#333',
+        shape: 'circle',
+        offsetX: 0,
+        offsetY: 0,
+        radius: 2,
+        cssClass: ''
+      },
+      label: {
+        borderColor: '#c2c2c2',
+        borderWidth: 1,
+        text: undefined,
+        textAnchor: 'middle',
+        offsetX: 0,
+        offsetY: -15,
+        style: {
+          background: '#fff',
+          color: undefined,
+          fontSize: '11px',
+          fontFamily: undefined,
+          cssClass: '',
+          padding: {
+            left: 5,
+            right: 5,
+            top: 0,
+            bottom: 2
+          }
+        }
+      },
+      customSVG: {
+        SVG: undefined,
+        cssClass: undefined,
+        offsetX: 0,
+        offsetY: 0
+      }
+    };
+  }
+
+  _createClass(Options, [{
+    key: "init",
+    value: function init() {
+      return {
+        annotations: {
+          position: 'front',
+          yaxis: [this.yAxisAnnotation],
+          xaxis: [this.xAxisAnnotation],
+          points: [this.pointAnnotation]
+        },
+        chart: {
+          animations: {
+            enabled: true,
+            easing: 'easeinout',
+            // linear, easeout, easein, easeinout, swing, bounce, elastic
+            speed: 800,
+            animateGradually: {
+              delay: 150,
+              enabled: true
+            },
+            dynamicAnimation: {
+              enabled: true,
+              speed: 350
+            }
+          },
+          background: 'transparent',
+          locales: [en],
+          defaultLocale: 'en',
+          dropShadow: {
+            enabled: false,
+            enabledSeries: undefined,
+            top: 2,
+            left: 2,
+            blur: 4,
+            color: '#000',
+            opacity: 0.35
+          },
+          events: {
+            animationEnd: undefined,
+            beforeMount: undefined,
+            mounted: undefined,
+            updated: undefined,
+            click: undefined,
+            legendClick: undefined,
+            markerClick: undefined,
+            selection: undefined,
+            dataPointSelection: undefined,
+            dataPointMouseEnter: undefined,
+            dataPointMouseLeave: undefined,
+            beforeZoom: undefined,
+            zoomed: undefined,
+            scrolled: undefined
+          },
+          foreColor: '#373d3f',
+          fontFamily: 'Helvetica, Arial, sans-serif',
+          height: 'auto',
+          parentHeightOffset: 15,
+          id: undefined,
+          group: undefined,
+          offsetX: 0,
+          offsetY: 0,
+          selection: {
+            enabled: false,
+            type: 'x',
+            // selectedPoints: undefined, // default datapoints that should be selected automatically
+            fill: {
+              color: '#24292e',
+              opacity: 0.1
+            },
+            stroke: {
+              width: 1,
+              color: '#24292e',
+              opacity: 0.4,
+              dashArray: 3
+            },
+            xaxis: {
+              min: undefined,
+              max: undefined
+            },
+            yaxis: {
+              min: undefined,
+              max: undefined
+            }
+          },
+          sparkline: {
+            enabled: false
+          },
+          brush: {
+            enabled: false,
+            autoScaleYaxis: false,
+            target: undefined
+          },
+          stacked: false,
+          stackType: 'normal',
+          toolbar: {
+            show: true,
+            tools: {
+              download: true,
+              selection: true,
+              zoom: true,
+              zoomin: true,
+              zoomout: true,
+              pan: true,
+              reset: true,
+              customIcons: []
+            },
+            autoSelected: 'zoom' // accepts -> zoom, pan, selection
+
+          },
+          type: 'line',
+          width: '100%',
+          zoom: {
+            enabled: true,
+            type: 'x',
+            // autoScaleYaxis: false, // TODO: rewrite the autoScaleY function
+            zoomedArea: {
+              fill: {
+                color: '#90CAF9',
+                opacity: 0.4
+              },
+              stroke: {
+                color: '#0D47A1',
+                opacity: 0.4,
+                width: 1
+              }
+            }
+          }
+        },
+        plotOptions: {
+          bar: {
+            horizontal: false,
+            columnWidth: '70%',
+            // should be in percent 0 - 100
+            barHeight: '70%',
+            // should be in percent 0 - 100
+            distributed: false,
+            endingShape: 'flat',
+            colors: {
+              ranges: [],
+              backgroundBarColors: [],
+              backgroundBarOpacity: 1
+            },
+            dataLabels: {
+              maxItems: 100,
+              hideOverflowingLabels: true,
+              position: 'top' // top, center, bottom
+              // TODO: provide stackedLabels for stacked charts which gives additions of values
+
+            }
+          },
+          candlestick: {
+            colors: {
+              upward: '#00B746',
+              downward: '#EF403C'
+            },
+            wick: {
+              useFillColor: true
+            }
+          },
+          heatmap: {
+            radius: 2,
+            enableShades: true,
+            shadeIntensity: 0.5,
+            reverseNegativeShade: true,
+            distributed: false,
+            colorScale: {
+              inverse: false,
+              ranges: [],
+              min: undefined,
+              max: undefined
+            }
+          },
+          radialBar: {
+            size: undefined,
+            inverseOrder: false,
+            startAngle: 0,
+            endAngle: 360,
+            offsetX: 0,
+            offsetY: 0,
+            hollow: {
+              margin: 5,
+              size: '50%',
+              background: 'transparent',
+              image: undefined,
+              imageWidth: 150,
+              imageHeight: 150,
+              imageOffsetX: 0,
+              imageOffsetY: 0,
+              imageClipped: true,
+              position: 'front',
+              dropShadow: {
+                enabled: false,
+                top: 0,
+                left: 0,
+                blur: 3,
+                color: '#000',
+                opacity: 0.5
+              }
+            },
+            track: {
+              show: true,
+              startAngle: undefined,
+              endAngle: undefined,
+              background: '#f2f2f2',
+              strokeWidth: '97%',
+              opacity: 1,
+              margin: 5,
+              // margin is in pixels
+              dropShadow: {
+                enabled: false,
+                top: 0,
+                left: 0,
+                blur: 3,
+                color: '#000',
+                opacity: 0.5
+              }
+            },
+            dataLabels: {
+              show: true,
+              name: {
+                show: true,
+                fontSize: '16px',
+                fontFamily: undefined,
+                color: undefined,
+                offsetY: 0
+              },
+              value: {
+                show: true,
+                fontSize: '14px',
+                fontFamily: undefined,
+                color: undefined,
+                offsetY: 16,
+                formatter: function formatter(val) {
+                  return val + '%';
+                }
+              },
+              total: {
+                show: false,
+                label: 'Total',
+                color: undefined,
+                formatter: function formatter(w) {
+                  return w.globals.seriesTotals.reduce(function (a, b) {
+                    return a + b;
+                  }, 0) / w.globals.series.length + '%';
+                }
+              }
+            }
+          },
+          rangeBar: {},
+          pie: {
+            size: undefined,
+            customScale: 1,
+            offsetX: 0,
+            offsetY: 0,
+            expandOnClick: true,
+            dataLabels: {
+              // These are the percentage values which are displayed on slice
+              offset: 0,
+              // offset by which labels will move outside
+              minAngleToShowLabel: 10
+            },
+            donut: {
+              size: '65%',
+              background: 'transparent',
+              labels: {
+                // These are the inner labels appearing inside donut
+                show: false,
+                name: {
+                  show: true,
+                  fontSize: '16px',
+                  fontFamily: undefined,
+                  color: undefined,
+                  offsetY: -10
+                },
+                value: {
+                  show: true,
+                  fontSize: '20px',
+                  fontFamily: undefined,
+                  color: undefined,
+                  offsetY: 10,
+                  formatter: function formatter(val) {
+                    return val;
+                  }
+                },
+                total: {
+                  show: false,
+                  label: 'Total',
+                  color: undefined,
+                  formatter: function formatter(w) {
+                    return w.globals.seriesTotals.reduce(function (a, b) {
+                      return a + b;
+                    }, 0);
+                  }
+                }
+              }
+            }
+          },
+          radar: {
+            size: undefined,
+            offsetX: 0,
+            offsetY: 0,
+            polygons: {
+              // strokeColor: '#e8e8e8', // should be deprecated in the minor version i.e 3.2
+              strokeColors: '#e8e8e8',
+              connectorColors: '#e8e8e8',
+              fill: {
+                colors: undefined
+              }
+            }
+          }
+        },
+        colors: undefined,
+        dataLabels: {
+          enabled: true,
+          enabledOnSeries: undefined,
+          formatter: function formatter(val) {
+            return val;
+          },
+          textAnchor: 'middle',
+          offsetX: 0,
+          offsetY: 0,
+          style: {
+            fontSize: '12px',
+            fontFamily: undefined,
+            colors: undefined
+          },
+          dropShadow: {
+            enabled: false,
+            top: 1,
+            left: 1,
+            blur: 1,
+            color: '#000',
+            opacity: 0.45
+          }
+        },
+        fill: {
+          type: 'solid',
+          colors: undefined,
+          // array of colors
+          opacity: 0.85,
+          gradient: {
+            shade: 'dark',
+            type: 'horizontal',
+            shadeIntensity: 0.5,
+            gradientToColors: undefined,
+            inverseColors: true,
+            opacityFrom: 1,
+            opacityTo: 1,
+            stops: [0, 50, 100],
+            colorStops: []
+          },
+          image: {
+            src: [],
+            width: undefined,
+            // optional
+            height: undefined // optional
+
+          },
+          pattern: {
+            style: 'sqaures',
+            // String | Array of Strings
+            width: 6,
+            height: 6,
+            strokeWidth: 2
+          }
+        },
+        grid: {
+          show: true,
+          borderColor: '#e0e0e0',
+          strokeDashArray: 0,
+          position: 'back',
+          xaxis: {
+            lines: {
+              show: false,
+              animate: false
+            }
+          },
+          yaxis: {
+            lines: {
+              show: true,
+              animate: false
+            }
+          },
+          row: {
+            colors: undefined,
+            // takes as array which will be repeated on rows
+            opacity: 0.5
+          },
+          column: {
+            colors: undefined,
+            // takes an array which will be repeated on columns
+            opacity: 0.5
+          },
+          padding: {
+            top: 0,
+            right: 10,
+            bottom: 0,
+            left: 12
+          }
+        },
+        labels: [],
+        legend: {
+          show: true,
+          showForSingleSeries: false,
+          showForNullSeries: true,
+          showForZeroSeries: true,
+          floating: false,
+          position: 'bottom',
+          // whether to position legends in 1 of 4
+          // direction - top, bottom, left, right
+          horizontalAlign: 'center',
+          // when position top/bottom, you can specify whether to align legends left, right or center
+          fontSize: '12px',
+          fontFamily: undefined,
+          width: undefined,
+          height: undefined,
+          formatter: undefined,
+          offsetX: -20,
+          offsetY: 0,
+          labels: {
+            colors: undefined,
+            useSeriesColors: false
+          },
+          markers: {
+            width: 12,
+            height: 12,
+            strokeWidth: 0,
+            strokeColor: '#fff',
+            radius: 12,
+            customHTML: undefined,
+            offsetX: 0,
+            offsetY: 0,
+            onClick: undefined
+          },
+          itemMargin: {
+            horizontal: 0,
+            vertical: 5
+          },
+          onItemClick: {
+            toggleDataSeries: true
+          },
+          onItemHover: {
+            highlightDataSeries: true
+          }
+        },
+        markers: {
+          discrete: [],
+          size: 0,
+          colors: undefined,
+          //strokeColor: '#fff', // TODO: deprecate in major version 4.0
+          strokeColors: '#fff',
+          strokeWidth: 2,
+          strokeOpacity: 0.9,
+          fillOpacity: 1,
+          shape: 'circle',
+          radius: 2,
+          offsetX: 0,
+          offsetY: 0,
+          hover: {
+            size: undefined,
+            sizeOffset: 3
+          }
+        },
+        noData: {
+          text: undefined,
+          align: 'center',
+          verticalAlign: 'middle',
+          offsetX: 0,
+          offsetY: 0,
+          style: {
+            color: undefined,
+            fontSize: '14px',
+            fontFamily: undefined
+          }
+        },
+        responsive: [],
+        // breakpoints should follow ascending order 400, then 700, then 1000
+        series: undefined,
+        states: {
+          normal: {
+            filter: {
+              type: 'none',
+              value: 0
+            }
+          },
+          hover: {
+            filter: {
+              type: 'lighten',
+              value: 0.15
+            }
+          },
+          active: {
+            allowMultipleDataPointsSelection: false,
+            filter: {
+              type: 'darken',
+              value: 0.65
+            }
+          }
+        },
+        title: {
+          text: undefined,
+          align: 'left',
+          margin: 10,
+          offsetX: 0,
+          offsetY: 0,
+          floating: false,
+          style: {
+            fontSize: '14px',
+            fontFamily: undefined,
+            color: undefined
+          }
+        },
+        subtitle: {
+          text: undefined,
+          align: 'left',
+          margin: 10,
+          offsetX: 0,
+          offsetY: 30,
+          floating: false,
+          style: {
+            fontSize: '12px',
+            fontFamily: undefined,
+            color: undefined
+          }
+        },
+        stroke: {
+          show: true,
+          curve: 'smooth',
+          // "smooth" / "straight" / "stepline"
+          lineCap: 'butt',
+          // round, butt , square
+          width: 2,
+          colors: undefined,
+          // array of colors
+          dashArray: 0 // single value or array of values
+
+        },
+        tooltip: {
+          enabled: true,
+          enabledOnSeries: undefined,
+          shared: true,
+          followCursor: false,
+          // when disabled, the tooltip will show on top of the series instead of mouse position
+          intersect: false,
+          // when enabled, tooltip will only show when user directly hovers over point
+          inverseOrder: false,
+          custom: undefined,
+          fillSeriesColor: false,
+          theme: 'light',
+          style: {
+            fontSize: '12px',
+            fontFamily: undefined
+          },
+          onDatasetHover: {
+            highlightDataSeries: false
+          },
+          x: {
+            // x value
+            show: true,
+            format: 'dd MMM',
+            // dd/MM, dd MMM yy, dd MMM yyyy
+            formatter: undefined // a custom user supplied formatter function
+
+          },
+          y: {
+            formatter: undefined,
+            title: {
+              formatter: function formatter(seriesName) {
+                return seriesName;
+              }
+            }
+          },
+          z: {
+            formatter: undefined,
+            title: 'Size: '
+          },
+          marker: {
+            show: true
+          },
+          items: {
+            display: 'flex'
+          },
+          fixed: {
+            enabled: false,
+            position: 'topRight',
+            // topRight, topLeft, bottomRight, bottomLeft
+            offsetX: 0,
+            offsetY: 0
+          }
+        },
+        xaxis: {
+          type: 'category',
+          categories: [],
+          offsetX: 0,
+          offsetY: 0,
+          labels: {
+            show: true,
+            rotate: -45,
+            rotateAlways: false,
+            hideOverlappingLabels: true,
+            trim: true,
+            minHeight: undefined,
+            maxHeight: 120,
+            showDuplicates: true,
+            style: {
+              colors: [],
+              fontSize: '12px',
+              fontFamily: undefined,
+              cssClass: ''
+            },
+            offsetX: 0,
+            offsetY: 0,
+            format: undefined,
+            formatter: undefined,
+            // custom formatter function which will override format
+            datetimeFormatter: {
+              year: 'yyyy',
+              month: "MMM 'yy",
+              day: 'dd MMM',
+              hour: 'HH:mm',
+              minute: 'HH:mm:ss'
+            }
+          },
+          axisBorder: {
+            show: true,
+            color: '#78909C',
+            width: '100%',
+            height: 1,
+            offsetX: 0,
+            offsetY: 0
+          },
+          axisTicks: {
+            show: true,
+            color: '#78909C',
+            height: 6,
+            offsetX: 0,
+            offsetY: 0
+          },
+          tickAmount: undefined,
+          tickPlacement: 'on',
+          min: undefined,
+          max: undefined,
+          range: undefined,
+          floating: false,
+          position: 'bottom',
+          title: {
+            text: undefined,
+            offsetX: 0,
+            offsetY: 0,
+            style: {
+              color: undefined,
+              fontSize: '12px',
+              fontFamily: undefined,
+              cssClass: ''
+            }
+          },
+          crosshairs: {
+            show: true,
+            width: 1,
+            // tickWidth/barWidth or an integer
+            position: 'back',
+            opacity: 0.9,
+            stroke: {
+              color: '#b6b6b6',
+              width: 1,
+              dashArray: 3
+            },
+            fill: {
+              type: 'solid',
+              // solid, gradient
+              color: '#B1B9C4',
+              gradient: {
+                colorFrom: '#D8E3F0',
+                colorTo: '#BED1E6',
+                stops: [0, 100],
+                opacityFrom: 0.4,
+                opacityTo: 0.5
+              }
+            },
+            dropShadow: {
+              enabled: false,
+              left: 0,
+              top: 0,
+              blur: 1,
+              opacity: 0.4
+            }
+          },
+          tooltip: {
+            enabled: true,
+            offsetY: 0,
+            formatter: undefined,
+            style: {
+              fontSize: '12px',
+              fontFamily: undefined
+            }
+          }
+        },
+        yaxis: this.yAxis,
+        theme: {
+          mode: 'light',
+          palette: 'palette1',
+          // If defined, it will overwrite globals.colors variable
+          monochrome: {
+            // monochrome allows you to select just 1 color and fill out the rest with light/dark shade (intensity can be selected)
+            enabled: false,
+            color: '#008FFB',
+            shadeTo: 'light',
+            shadeIntensity: 0.65
+          }
+        }
+      };
+    }
+  }]);
+
+  return Options;
+}();
+
+/**
+ * ApexCharts Annotations Class for drawing lines/rects on both xaxis and yaxis.
+ *
+ * @module Annotations
+ **/
+
+var Annotations =
+/*#__PURE__*/
+function () {
+  function Annotations(ctx) {
+    _classCallCheck(this, Annotations);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.graphics = new Graphics(this.ctx);
+
+    if (this.w.globals.isBarHorizontal) {
+      this.invertAxis = true;
+    }
+
+    this.xDivision = this.w.globals.gridWidth / this.w.globals.dataPoints;
+  }
+
+  _createClass(Annotations, [{
+    key: "drawAnnotations",
+    value: function drawAnnotations() {
+      var w = this.w;
+
+      if (w.globals.axisCharts) {
+        var yAnnotations = this.drawYAxisAnnotations();
+        var xAnnotations = this.drawXAxisAnnotations();
+        var pointAnnotations = this.drawPointAnnotations();
+        var initialAnim = w.config.chart.animations.enabled;
+        var annoArray = [yAnnotations, xAnnotations, pointAnnotations];
+        var annoElArray = [xAnnotations.node, yAnnotations.node, pointAnnotations.node];
+
+        for (var i = 0; i < 3; i++) {
+          w.globals.dom.elGraphical.add(annoArray[i]);
+
+          if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+            annoElArray[i].classList.add('hidden');
+          }
+
+          w.globals.delayedElements.push({
+            el: annoElArray[i],
+            index: 0
+          });
+        } // background sizes needs to be calculated after text is drawn, so calling them last
+
+
+        this.annotationsBackground();
+      }
+    }
+  }, {
+    key: "addXaxisAnnotation",
+    value: function addXaxisAnnotation(anno, parent, index) {
+      var w = this.w;
+      var min = this.invertAxis ? w.globals.minY : w.globals.minX;
+      var range = this.invertAxis ? w.globals.yRange[0] : w.globals.xRange;
+      var x1 = (anno.x - min) / (range / w.globals.gridWidth);
+      var text = anno.label.text;
+
+      if (w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) {
+        var catIndex = w.globals.labels.indexOf(anno.x);
+        var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+
+        if (xLabel) {
+          x1 = parseFloat(xLabel.getAttribute('x'));
+        }
+      }
+
+      var strokeDashArray = anno.strokeDashArray;
+      if (x1 < 0 || x1 > w.globals.gridWidth) return;
+
+      if (anno.x2 === null) {
+        var line = this.graphics.drawLine(x1 + anno.offsetX, // x1
+        0 + anno.offsetY, // y1
+        x1 + anno.offsetX, // x2
+        w.globals.gridHeight + anno.offsetY, // y2
+        anno.borderColor, // lineColor
+        strokeDashArray //dashArray
+        );
+        parent.appendChild(line.node);
+      } else {
+        var x2 = (anno.x2 - min) / (range / w.globals.gridWidth);
+
+        if (x2 < x1) {
+          var temp = x1;
+          x1 = x2;
+          x2 = temp;
+        }
+
+        if (text) {
+          var rect = this.graphics.drawRect(x1 + anno.offsetX, // x1
+          0 + anno.offsetY, // y1
+          x2 - x1, // x2
+          w.globals.gridHeight + anno.offsetY, // y2
+          0, // radius
+          anno.fillColor, // color
+          anno.opacity, // opacity,
+          1, // strokeWidth
+          anno.borderColor, // strokeColor
+          strokeDashArray // stokeDashArray
+          );
+          parent.appendChild(rect.node);
+        }
+      }
+
+      var textY = anno.label.position === 'top' ? -3 : w.globals.gridHeight;
+      var elText = this.graphics.drawText({
+        x: x1 + anno.label.offsetX,
+        y: textY + anno.label.offsetY,
+        text: text,
+        textAnchor: anno.label.textAnchor,
+        fontSize: anno.label.style.fontSize,
+        fontFamily: anno.label.style.fontFamily,
+        foreColor: anno.label.style.color,
+        cssClass: 'apexcharts-xaxis-annotation-label ' + anno.label.style.cssClass
+      });
+      elText.attr({
+        rel: index
+      });
+      parent.appendChild(elText.node); // after placing the annotations on svg, set any vertically placed annotations
+
+      this.setOrientations(anno, index);
+    }
+  }, {
+    key: "drawXAxisAnnotations",
+    value: function drawXAxisAnnotations() {
+      var _this = this;
+
+      var w = this.w;
+      var elg = this.graphics.group({
+        class: 'apexcharts-xaxis-annotations'
+      });
+      w.config.annotations.xaxis.map(function (anno, index) {
+        _this.addXaxisAnnotation(anno, elg.node, index);
+      });
+      return elg;
+    }
+  }, {
+    key: "addYaxisAnnotation",
+    value: function addYaxisAnnotation(anno, parent, index) {
+      var w = this.w;
+      var strokeDashArray = anno.strokeDashArray;
+      var y1;
+      var y2;
+
+      if (this.invertAxis) {
+        var catIndex = w.globals.labels.indexOf(anno.y);
+        var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+
+        if (xLabel) {
+          y1 = parseFloat(xLabel.getAttribute('y'));
+        }
+      } else {
+        y1 = w.globals.gridHeight - (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+        if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+          y1 = (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+        }
+      }
+
+      var text = anno.label.text;
+
+      if (anno.y2 === null) {
+        var line = this.graphics.drawLine(0 + anno.offsetX, // x1
+        y1 + anno.offsetY, // y1
+        w.globals.gridWidth + anno.offsetX, // x2
+        y1 + anno.offsetY, // y2
+        anno.borderColor, // lineColor
+        strokeDashArray // dashArray
+        );
+        parent.appendChild(line.node);
+      } else {
+        if (this.invertAxis) {
+          var _catIndex = w.globals.labels.indexOf(anno.y2);
+
+          var _xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis-texts-g text:nth-child(' + (_catIndex + 1) + ')');
+
+          if (_xLabel) {
+            y2 = parseFloat(_xLabel.getAttribute('y'));
+          }
+        } else {
+          y2 = w.globals.gridHeight - (anno.y2 - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+          if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+            y2 = (anno.y2 - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+          }
+        }
+
+        if (y2 > y1) {
+          var temp = y1;
+          y1 = y2;
+          y2 = temp;
+        }
+
+        if (text) {
+          var rect = this.graphics.drawRect(0 + anno.offsetX, // x1
+          y2 + anno.offsetY, // y1
+          w.globals.gridWidth + anno.offsetX, // x2
+          y1 - y2, // y2
+          0, // radius
+          anno.fillColor, // color
+          anno.opacity, // opacity,
+          1, // strokeWidth
+          anno.borderColor, // strokeColor
+          strokeDashArray // stokeDashArray
+          );
+          parent.appendChild(rect.node);
+        }
+      }
+
+      var textX = anno.label.position === 'right' ? w.globals.gridWidth : 0;
+      var elText = this.graphics.drawText({
+        x: textX + anno.label.offsetX,
+        y: (y2 || y1) + anno.label.offsetY - 3,
+        text: text,
+        textAnchor: anno.label.textAnchor,
+        fontSize: anno.label.style.fontSize,
+        fontFamily: anno.label.style.fontFamily,
+        foreColor: anno.label.style.color,
+        cssClass: 'apexcharts-yaxis-annotation-label ' + anno.label.style.cssClass
+      });
+      elText.attr({
+        rel: index
+      });
+      parent.appendChild(elText.node);
+    }
+  }, {
+    key: "drawYAxisAnnotations",
+    value: function drawYAxisAnnotations() {
+      var _this2 = this;
+
+      var w = this.w;
+      var elg = this.graphics.group({
+        class: 'apexcharts-yaxis-annotations'
+      });
+      w.config.annotations.yaxis.map(function (anno, index) {
+        _this2.addYaxisAnnotation(anno, elg.node, index);
+      });
+      return elg;
+    }
+  }, {
+    key: "clearAnnotations",
+    value: function clearAnnotations(ctx) {
+      var w = ctx.w;
+      var annos = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations');
+      annos = Utils.listToArray(annos);
+      annos.forEach(function (a) {
+        while (a.firstChild) {
+          a.removeChild(a.firstChild);
+        }
+      });
+    }
+  }, {
+    key: "addPointAnnotation",
+    value: function addPointAnnotation(anno, parent, index) {
+      var w = this.w;
+      var x = 0;
+      var y = 0;
+      var pointY = 0;
+
+      if (this.invertAxis) {
+        console.warn('Point annotation is not supported in horizontal bar charts.');
+      }
+
+      if (typeof anno.x === 'string') {
+        var catIndex = w.globals.labels.indexOf(anno.x);
+        var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+        var xPos = parseFloat(xLabel.getAttribute('x'));
+        x = xPos;
+        var annoY = anno.y;
+
+        if (anno.y === null) {
+          annoY = w.globals.series[anno.seriesIndex][catIndex];
+        }
+
+        y = w.globals.gridHeight - (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+        pointY = w.globals.gridHeight - (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+        if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+          y = (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) + parseInt(anno.label.style.fontSize) + anno.marker.size;
+          pointY = (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+        }
+      } else {
+        x = (anno.x - w.globals.minX) / (w.globals.xRange / w.globals.gridWidth);
+        y = w.globals.gridHeight - (parseFloat(anno.y) - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+        pointY = w.globals.gridHeight - (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+        if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+          y = (parseFloat(anno.y) - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+          pointY = (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+        }
+      }
+
+      if (x < 0 || x > w.globals.gridWidth) return;
+      var optsPoints = {
+        pSize: anno.marker.size,
+        pWidth: anno.marker.strokeWidth,
+        pointFillColor: anno.marker.fillColor,
+        pointStrokeColor: anno.marker.strokeColor,
+        shape: anno.marker.shape,
+        radius: anno.marker.radius,
+        class: 'apexcharts-point-annotation-marker ' + anno.marker.cssClass
+      };
+      var point = this.graphics.drawMarker(x + anno.marker.offsetX, pointY + anno.marker.offsetY, optsPoints);
+      parent.appendChild(point.node);
+      var text = anno.label.text ? anno.label.text : '';
+      var elText = this.graphics.drawText({
+        x: x + anno.label.offsetX,
+        y: y + anno.label.offsetY,
+        text: text,
+        textAnchor: anno.label.textAnchor,
+        fontSize: anno.label.style.fontSize,
+        fontFamily: anno.label.style.fontFamily,
+        foreColor: anno.label.style.color,
+        cssClass: 'apexcharts-point-annotation-label ' + anno.label.style.cssClass
+      });
+      elText.attr({
+        rel: index
+      });
+      parent.appendChild(elText.node);
+
+      if (anno.customSVG.SVG) {
+        var g = this.graphics.group({
+          class: 'apexcharts-point-annotations-custom-svg ' + anno.customSVG.cssClass
+        });
+        g.attr({
+          transform: "translate(".concat(x + anno.customSVG.offsetX, ", ").concat(y + anno.customSVG.offsetY, ")")
+        });
+        g.node.innerHTML = anno.customSVG.SVG;
+        parent.appendChild(g.node);
+      }
+    }
+  }, {
+    key: "drawPointAnnotations",
+    value: function drawPointAnnotations() {
+      var _this3 = this;
+
+      var w = this.w;
+      var elg = this.graphics.group({
+        class: 'apexcharts-point-annotations'
+      });
+      w.config.annotations.points.map(function (anno, index) {
+        _this3.addPointAnnotation(anno, elg.node, index);
+      });
+      return elg;
+    }
+  }, {
+    key: "setOrientations",
+    value: function setOrientations(anno) {
+      var annoIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+      var w = this.w;
+
+      if (anno.label.orientation === 'vertical') {
+        var i = annoIndex !== null ? annoIndex : 0;
+        var xAnno = w.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(i, "']"));
+
+        if (xAnno !== null) {
+          var xAnnoCoord = xAnno.getBoundingClientRect();
+          xAnno.setAttribute('x', parseFloat(xAnno.getAttribute('x')) - xAnnoCoord.height + 4);
+
+          if (anno.label.position === 'top') {
+            xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) + xAnnoCoord.width);
+          } else {
+            xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) - xAnnoCoord.width);
+          }
+
+          var annoRotatingCenter = this.graphics.rotateAroundCenter(xAnno);
+          var x = annoRotatingCenter.x;
+          var y = annoRotatingCenter.y;
+          xAnno.setAttribute('transform', "rotate(-90 ".concat(x, " ").concat(y, ")"));
+        }
+      }
+    }
+  }, {
+    key: "addBackgroundToAnno",
+    value: function addBackgroundToAnno(annoEl, anno) {
+      var w = this.w;
+      if (!anno.label.text) return null;
+      var elGridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid').getBoundingClientRect();
+      var coords = annoEl.getBoundingClientRect();
+      var pleft = anno.label.style.padding.left;
+      var pright = anno.label.style.padding.right;
+      var ptop = anno.label.style.padding.top;
+      var pbottom = anno.label.style.padding.bottom;
+
+      if (anno.label.orientation === 'vertical') {
+        ptop = anno.label.style.padding.left;
+        pbottom = anno.label.style.padding.right;
+        pleft = anno.label.style.padding.top;
+        pright = anno.label.style.padding.bottom;
+      }
+
+      var x1 = coords.left - elGridRect.left - pleft;
+      var y1 = coords.top - elGridRect.top - ptop;
+      var elRect = this.graphics.drawRect(x1, y1, coords.width + pleft + pright, coords.height + ptop + pbottom, 0, anno.label.style.background, 1, anno.label.borderWidth, anno.label.borderColor, 0);
+      return elRect;
+    }
+  }, {
+    key: "annotationsBackground",
+    value: function annotationsBackground() {
+      var _this4 = this;
+
+      var w = this.w;
+
+      var add = function add(anno, i, type) {
+        var annoLabel = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations .apexcharts-").concat(type, "-annotation-label[rel='").concat(i, "']"));
+
+        if (annoLabel) {
+          var parent = annoLabel.parentNode;
+
+          var elRect = _this4.addBackgroundToAnno(annoLabel, anno);
+
+          if (elRect) {
+            parent.insertBefore(elRect.node, annoLabel);
+          }
+        }
+      };
+
+      w.config.annotations.xaxis.map(function (anno, i) {
+        add(anno, i, 'xaxis');
+      });
+      w.config.annotations.yaxis.map(function (anno, i) {
+        add(anno, i, 'yaxis');
+      });
+      w.config.annotations.points.map(function (anno, i) {
+        add(anno, i, 'point');
+      });
+    }
+  }, {
+    key: "addText",
+    value: function addText(params, pushToMemory, context) {
+      var x = params.x,
+          y = params.y,
+          text = params.text,
+          textAnchor = params.textAnchor,
+          _params$appendTo = params.appendTo,
+          appendTo = _params$appendTo === void 0 ? '.apexcharts-inner' : _params$appendTo,
+          foreColor = params.foreColor,
+          fontSize = params.fontSize,
+          fontFamily = params.fontFamily,
+          cssClass = params.cssClass,
+          backgroundColor = params.backgroundColor,
+          borderWidth = params.borderWidth,
+          strokeDashArray = params.strokeDashArray,
+          radius = params.radius,
+          borderColor = params.borderColor,
+          _params$paddingLeft = params.paddingLeft,
+          paddingLeft = _params$paddingLeft === void 0 ? 4 : _params$paddingLeft,
+          _params$paddingRight = params.paddingRight,
+          paddingRight = _params$paddingRight === void 0 ? 4 : _params$paddingRight,
+          _params$paddingBottom = params.paddingBottom,
+          paddingBottom = _params$paddingBottom === void 0 ? 2 : _params$paddingBottom,
+          _params$paddingTop = params.paddingTop,
+          paddingTop = _params$paddingTop === void 0 ? 2 : _params$paddingTop;
+      var me = context;
+      var w = me.w;
+      var parentNode = w.globals.dom.baseEl.querySelector(appendTo);
+      var elText = this.graphics.drawText({
+        x: x,
+        y: y,
+        text: text,
+        textAnchor: textAnchor || 'start',
+        fontSize: fontSize || '12px',
+        fontFamily: fontFamily || w.config.chart.fontFamily,
+        foreColor: foreColor || w.config.chart.foreColor,
+        cssClass: 'apexcharts-text ' + cssClass ? cssClass : ''
+      });
+      parentNode.appendChild(elText.node);
+      var textRect = elText.bbox();
+
+      if (text) {
+        var elRect = this.graphics.drawRect(textRect.x - paddingLeft, textRect.y - paddingTop, textRect.width + paddingLeft + paddingRight, textRect.height + paddingBottom + paddingTop, radius, backgroundColor, 1, borderWidth, borderColor, strokeDashArray);
+        elText.before(elRect);
+      }
+
+      if (pushToMemory) {
+        w.globals.memory.methodsToExec.push({
+          context: me,
+          method: me.addText,
+          params: {
+            x: x,
+            y: y,
+            text: text,
+            textAnchor: textAnchor,
+            appendTo: appendTo,
+            foreColor: foreColor,
+            fontSize: fontSize,
+            cssClass: cssClass,
+            backgroundColor: backgroundColor,
+            borderWidth: borderWidth,
+            strokeDashArray: strokeDashArray,
+            radius: radius,
+            borderColor: borderColor,
+            paddingLeft: paddingLeft,
+            paddingRight: paddingRight,
+            paddingBottom: paddingBottom,
+            paddingTop: paddingTop
+          }
+        });
+      }
+
+      return context;
+    }
+  }, {
+    key: "addPointAnnotationExternal",
+    value: function addPointAnnotationExternal(params, pushToMemory, context) {
+      if (typeof this.invertAxis === 'undefined') {
+        this.invertAxis = context.w.globals.isBarHorizontal;
+      }
+
+      this.addAnnotationExternal({
+        params: params,
+        pushToMemory: pushToMemory,
+        context: context,
+        type: 'point',
+        contextMethod: context.addPointAnnotation
+      });
+      return context;
+    }
+  }, {
+    key: "addYaxisAnnotationExternal",
+    value: function addYaxisAnnotationExternal(params, pushToMemory, context) {
+      this.addAnnotationExternal({
+        params: params,
+        pushToMemory: pushToMemory,
+        context: context,
+        type: 'yaxis',
+        contextMethod: context.addYaxisAnnotation
+      });
+      return context;
+    } // The addXaxisAnnotation method requires a parent class, and user calling this method externally on the chart instance may not specify parent, hence a different method
+
+  }, {
+    key: "addXaxisAnnotationExternal",
+    value: function addXaxisAnnotationExternal(params, pushToMemory, context) {
+      this.addAnnotationExternal({
+        params: params,
+        pushToMemory: pushToMemory,
+        context: context,
+        type: 'xaxis',
+        contextMethod: context.addXaxisAnnotation
+      });
+      return context;
+    }
+  }, {
+    key: "addAnnotationExternal",
+    value: function addAnnotationExternal(_ref) {
+      var params = _ref.params,
+          pushToMemory = _ref.pushToMemory,
+          context = _ref.context,
+          type = _ref.type,
+          contextMethod = _ref.contextMethod;
+      var me = context;
+      var w = me.w;
+      var parent = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations"));
+      var index = parent.childNodes.length + 1;
+      var opt = new Options();
+      var axesAnno = Object.assign({}, type === 'xaxis' ? opt.xAxisAnnotation : type === 'yaxis' ? opt.yAxisAnnotation : opt.pointAnnotation);
+      var anno = Utils.extend(axesAnno, params);
+
+      switch (type) {
+        case 'xaxis':
+          this.addXaxisAnnotation(anno, parent, index);
+          break;
+
+        case 'yaxis':
+          this.addYaxisAnnotation(anno, parent, index);
+          break;
+
+        case 'point':
+          this.addPointAnnotation(anno, parent, index);
+          break;
+      } // add background
+
+
+      var axesAnnoLabel = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations .apexcharts-").concat(type, "-annotation-label[rel='").concat(index, "']"));
+      var elRect = this.addBackgroundToAnno(axesAnnoLabel, anno);
+
+      if (elRect) {
+        parent.insertBefore(elRect.node, axesAnnoLabel);
+      }
+
+      if (pushToMemory) {
+        w.globals.memory.methodsToExec.push({
+          context: me,
+          method: contextMethod,
+          params: params
+        });
+      }
+
+      return context;
+    }
+  }]);
+
+  return Annotations;
+}();
+
+/**
+ * DateTime Class to manipulate datetime values.
+ *
+ * @module DateTime
+ **/
+
+var DateTime =
+/*#__PURE__*/
+function () {
+  function DateTime(ctx) {
+    _classCallCheck(this, DateTime);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.months31 = [1, 3, 5, 7, 8, 10, 12];
+    this.months30 = [2, 4, 6, 9, 11];
+    this.daysCntOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
+  }
+
+  _createClass(DateTime, [{
+    key: "isValidDate",
+    value: function isValidDate(date) {
+      return !isNaN(this.parseDate(date));
+    }
+  }, {
+    key: "getUTCTimeStamp",
+    value: function getUTCTimeStamp(dateStr) {
+      if (!Date.parse(dateStr)) {
+        return dateStr;
+      }
+
+      return new Date(new Date(dateStr).toISOString().substr(0, 25)).getTime();
+    }
+  }, {
+    key: "parseDate",
+    value: function parseDate(dateStr) {
+      var parsed = Date.parse(dateStr);
+
+      if (!isNaN(parsed)) {
+        return this.getUTCTimeStamp(dateStr);
+      }
+
+      var output = Date.parse(dateStr.replace(/-/g, '/').replace(/[a-z]+/gi, ' '));
+      output = this.getUTCTimeStamp(output);
+      return output;
+    } // https://stackoverflow.com/a/11252167/6495043
+
+  }, {
+    key: "treatAsUtc",
+    value: function treatAsUtc(dateStr) {
+      var result = new Date(dateStr);
+      result.setMinutes(result.getMinutes() - result.getTimezoneOffset());
+      return result;
+    } // http://stackoverflow.com/questions/14638018/current-time-formatting-with-javascript#answer-14638191
+
+  }, {
+    key: "formatDate",
+    value: function formatDate(date, format) {
+      var utc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      var convertToUTC = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
+      var locale = this.w.globals.locale;
+      var MMMM = ['\x00'].concat(_toConsumableArray(locale.months));
+      var MMM = ['\x01'].concat(_toConsumableArray(locale.shortMonths));
+      var dddd = ['\x02'].concat(_toConsumableArray(locale.days));
+      var ddd = ['\x03'].concat(_toConsumableArray(locale.shortDays));
+
+      function ii(i, len) {
+        var s = i + '';
+        len = len || 2;
+
+        while (s.length < len) {
+          s = '0' + s;
+        }
+
+        return s;
+      }
+
+      if (convertToUTC) {
+        date = this.treatAsUtc(date);
+      }
+
+      var y = utc ? date.getUTCFullYear() : date.getFullYear();
+      format = format.replace(/(^|[^\\])yyyy+/g, '$1' + y);
+      format = format.replace(/(^|[^\\])yy/g, '$1' + y.toString().substr(2, 2));
+      format = format.replace(/(^|[^\\])y/g, '$1' + y);
+      var M = (utc ? date.getUTCMonth() : date.getMonth()) + 1;
+      format = format.replace(/(^|[^\\])MMMM+/g, '$1' + MMMM[0]);
+      format = format.replace(/(^|[^\\])MMM/g, '$1' + MMM[0]);
+      format = format.replace(/(^|[^\\])MM/g, '$1' + ii(M));
+      format = format.replace(/(^|[^\\])M/g, '$1' + M);
+      var d = utc ? date.getUTCDate() : date.getDate();
+      format = format.replace(/(^|[^\\])dddd+/g, '$1' + dddd[0]);
+      format = format.replace(/(^|[^\\])ddd/g, '$1' + ddd[0]);
+      format = format.replace(/(^|[^\\])dd/g, '$1' + ii(d));
+      format = format.replace(/(^|[^\\])d/g, '$1' + d);
+      var H = utc ? date.getUTCHours() : date.getHours();
+      format = format.replace(/(^|[^\\])HH+/g, '$1' + ii(H));
+      format = format.replace(/(^|[^\\])H/g, '$1' + H);
+      var h = H > 12 ? H - 12 : H === 0 ? 12 : H;
+      format = format.replace(/(^|[^\\])hh+/g, '$1' + ii(h));
+      format = format.replace(/(^|[^\\])h/g, '$1' + h);
+      var m = utc ? date.getUTCMinutes() : date.getMinutes();
+      format = format.replace(/(^|[^\\])mm+/g, '$1' + ii(m));
+      format = format.replace(/(^|[^\\])m/g, '$1' + m);
+      var s = utc ? date.getUTCSeconds() : date.getSeconds();
+      format = format.replace(/(^|[^\\])ss+/g, '$1' + ii(s));
+      format = format.replace(/(^|[^\\])s/g, '$1' + s);
+      var f = utc ? date.getUTCMilliseconds() : date.getMilliseconds();
+      format = format.replace(/(^|[^\\])fff+/g, '$1' + ii(f, 3));
+      f = Math.round(f / 10);
+      format = format.replace(/(^|[^\\])ff/g, '$1' + ii(f));
+      f = Math.round(f / 10);
+      format = format.replace(/(^|[^\\])f/g, '$1' + f);
+      var T = H < 12 ? 'AM' : 'PM';
+      format = format.replace(/(^|[^\\])TT+/g, '$1' + T);
+      format = format.replace(/(^|[^\\])T/g, '$1' + T.charAt(0));
+      var t = T.toLowerCase();
+      format = format.replace(/(^|[^\\])tt+/g, '$1' + t);
+      format = format.replace(/(^|[^\\])t/g, '$1' + t.charAt(0));
+      var tz = -date.getTimezoneOffset();
+      var K = utc || !tz ? 'Z' : tz > 0 ? '+' : '-';
+
+      if (!utc) {
+        tz = Math.abs(tz);
+        var tzHrs = Math.floor(tz / 60);
+        var tzMin = tz % 60;
+        K += ii(tzHrs) + ':' + ii(tzMin);
+      }
+
+      format = format.replace(/(^|[^\\])K/g, '$1' + K);
+      var day = (utc ? date.getUTCDay() : date.getDay()) + 1;
+      format = format.replace(new RegExp(dddd[0], 'g'), dddd[day]);
+      format = format.replace(new RegExp(ddd[0], 'g'), ddd[day]);
+      format = format.replace(new RegExp(MMMM[0], 'g'), MMMM[M]);
+      format = format.replace(new RegExp(MMM[0], 'g'), MMM[M]);
+      format = format.replace(/\\(.)/g, '$1');
+      return format;
+    }
+  }, {
+    key: "getTimeUnitsfromTimestamp",
+    value: function getTimeUnitsfromTimestamp(minX, maxX) {
+      var w = this.w;
+
+      if (w.config.xaxis.min !== undefined) {
+        minX = w.config.xaxis.min;
+      }
+
+      if (w.config.xaxis.max !== undefined) {
+        maxX = w.config.xaxis.max;
+      }
+
+      var minYear = new Date(minX).getFullYear();
+      var maxYear = new Date(maxX).getFullYear();
+      var minMonth = new Date(minX).getMonth();
+      var maxMonth = new Date(maxX).getMonth();
+      var minDate = new Date(minX).getDate();
+      var maxDate = new Date(maxX).getDate();
+      var minHour = new Date(minX).getHours();
+      var maxHour = new Date(maxX).getHours();
+      var minMinute = new Date(minX).getMinutes();
+      var maxMinute = new Date(maxX).getMinutes();
+      return {
+        minMinute: minMinute,
+        maxMinute: maxMinute,
+        minHour: minHour,
+        maxHour: maxHour,
+        minDate: minDate,
+        maxDate: maxDate,
+        minMonth: minMonth,
+        maxMonth: maxMonth,
+        minYear: minYear,
+        maxYear: maxYear
+      };
+    }
+  }, {
+    key: "isLeapYear",
+    value: function isLeapYear(year) {
+      return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
+    }
+  }, {
+    key: "calculcateLastDaysOfMonth",
+    value: function calculcateLastDaysOfMonth(month, year, subtract) {
+      var days = this.determineDaysOfMonths(month, year); // whatever days we get, subtract the number of days asked
+
+      return days - subtract;
+    }
+  }, {
+    key: "determineDaysOfYear",
+    value: function determineDaysOfYear(year) {
+      var days = 365;
+
+      if (this.isLeapYear(year)) {
+        days = 366;
+      }
+
+      return days;
+    }
+  }, {
+    key: "determineRemainingDaysOfYear",
+    value: function determineRemainingDaysOfYear(year, month, date) {
+      var dayOfYear = this.daysCntOfYear[month] + date;
+      if (month > 1 && this.isLeapYear()) dayOfYear++;
+      return dayOfYear;
+    }
+  }, {
+    key: "determineDaysOfMonths",
+    value: function determineDaysOfMonths(month, year) {
+      var days = 30;
+      month = Utils.monthMod(month);
+
+      switch (true) {
+        case this.months30.indexOf(month) > -1:
+          if (month === 2) {
+            if (this.isLeapYear(year)) {
+              days = 29;
+            } else {
+              days = 28;
+            }
+          }
+
+          break;
+
+        case this.months31.indexOf(month) > -1:
+          days = 31;
+          break;
+
+        default:
+          days = 31;
+          break;
+      }
+
+      return days;
+    }
+  }]);
+
+  return DateTime;
+}();
+
+/**
+ * ApexCharts Default Class for setting default options for all chart types.
+ *
+ * @module Defaults
+ **/
+
+var Defaults =
+/*#__PURE__*/
+function () {
+  function Defaults(opts) {
+    _classCallCheck(this, Defaults);
+
+    this.opts = opts;
+  }
+
+  _createClass(Defaults, [{
+    key: "line",
+    value: function line() {
+      return {
+        chart: {
+          animations: {
+            easing: 'swing'
+          }
+        },
+        dataLabels: {
+          enabled: false
+        },
+        stroke: {
+          width: 5,
+          curve: 'straight'
+        },
+        markers: {
+          size: 0,
+          hover: {
+            sizeOffset: 6
+          }
+        },
+        xaxis: {
+          crosshairs: {
+            width: 1
+          }
+        }
+      };
+    }
+  }, {
+    key: "sparkline",
+    value: function sparkline(defaults) {
+      this.opts.yaxis[0].labels.show = false;
+      this.opts.yaxis[0].floating = true;
+      var ret = {
+        grid: {
+          show: false,
+          padding: {
+            left: 0,
+            right: 0,
+            top: 0,
+            bottom: 0
+          }
+        },
+        legend: {
+          show: false
+        },
+        xaxis: {
+          labels: {
+            show: false
+          },
+          tooltip: {
+            enabled: false
+          },
+          axisBorder: {
+            show: false
+          }
+        },
+        chart: {
+          toolbar: {
+            show: false
+          },
+          zoom: {
+            enabled: false
+          }
+        },
+        dataLabels: {
+          enabled: false
+        }
+      };
+      return Utils.extend(defaults, ret);
+    }
+  }, {
+    key: "bar",
+    value: function bar() {
+      return {
+        chart: {
+          stacked: false,
+          animations: {
+            easing: 'swing'
+          }
+        },
+        plotOptions: {
+          bar: {
+            dataLabels: {
+              position: 'center'
+            }
+          }
+        },
+        dataLabels: {
+          style: {
+            colors: ['#fff']
+          }
+        },
+        stroke: {
+          width: 0
+        },
+        fill: {
+          opacity: 0.85
+        },
+        legend: {
+          markers: {
+            shape: 'square',
+            radius: 2,
+            size: 8
+          }
+        },
+        tooltip: {
+          shared: false
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          },
+          crosshairs: {
+            width: 'barWidth',
+            position: 'back',
+            fill: {
+              type: 'gradient'
+            },
+            dropShadow: {
+              enabled: false
+            },
+            stroke: {
+              width: 0
+            }
+          }
+        }
+      };
+    }
+  }, {
+    key: "candlestick",
+    value: function candlestick() {
+      return {
+        stroke: {
+          width: 1,
+          colors: ['#333']
+        },
+        dataLabels: {
+          enabled: false
+        },
+        tooltip: {
+          shared: true,
+          custom: function custom(_ref) {
+            var seriesIndex = _ref.seriesIndex,
+                dataPointIndex = _ref.dataPointIndex,
+                w = _ref.w;
+            var o = w.globals.seriesCandleO[seriesIndex][dataPointIndex];
+            var h = w.globals.seriesCandleH[seriesIndex][dataPointIndex];
+            var l = w.globals.seriesCandleL[seriesIndex][dataPointIndex];
+            var c = w.globals.seriesCandleC[seriesIndex][dataPointIndex];
+            return '<div class="apexcharts-tooltip-candlestick">' + '<div>Open: <span class="value">' + o + '</span></div>' + '<div>High: <span class="value">' + h + '</span></div>' + '<div>Low: <span class="value">' + l + '</span></div>' + '<div>Close: <span class="value">' + c + '</span></div>' + '</div>';
+          }
+        },
+        states: {
+          active: {
+            filter: {
+              type: 'none'
+            }
+          }
+        },
+        xaxis: {
+          crosshairs: {
+            width: 1
+          }
+        }
+      };
+    }
+  }, {
+    key: "rangeBar",
+    value: function rangeBar() {
+      return {
+        stroke: {
+          width: 0
+        },
+        plotOptions: {
+          bar: {
+            dataLabels: {
+              position: 'center'
+            }
+          }
+        },
+        dataLabels: {
+          enabled: false,
+          formatter: function formatter(val, _ref2) {
+            var ctx = _ref2.ctx,
+                seriesIndex = _ref2.seriesIndex,
+                dataPointIndex = _ref2.dataPointIndex,
+                w = _ref2.w;
+            var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex];
+            var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex];
+            return end - start;
+          },
+          style: {
+            colors: ['#fff']
+          }
+        },
+        tooltip: {
+          shared: false,
+          followCursor: true,
+          custom: function custom(_ref3) {
+            var ctx = _ref3.ctx,
+                seriesIndex = _ref3.seriesIndex,
+                dataPointIndex = _ref3.dataPointIndex,
+                w = _ref3.w;
+            var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex];
+            var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex];
+            var startVal = '';
+            var endVal = '';
+            var color = w.globals.colors[seriesIndex];
+
+            if (w.config.tooltip.x.formatter === undefined) {
+              if (w.config.xaxis.type === 'datetime') {
+                var datetimeObj = new DateTime(ctx);
+                startVal = datetimeObj.formatDate(new Date(start), w.config.tooltip.x.format, true, true);
+                endVal = datetimeObj.formatDate(new Date(end), w.config.tooltip.x.format, true, true);
+              } else {
+                startVal = start;
+                endVal = end;
+              }
+            } else {
+              startVal = w.config.tooltip.x.formatter(start);
+              endVal = w.config.tooltip.x.formatter(end);
+            }
+
+            var ylabel = w.globals.labels[dataPointIndex];
+            return '<div class="apexcharts-tooltip-rangebar">' + '<div> <span class="series-name" style="color: ' + color + '">' + (w.config.series[seriesIndex].name ? w.config.series[seriesIndex].name : '') + '</span></div>' + '<div> <span class="category">' + ylabel + ': </span> <span class="value start-value">' + startVal + '</span> <span class="separator">-</span> <span class="value end-value">' + endVal + '</span></div>' + '</div>';
+          }
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          },
+          crosshairs: {
+            stroke: {
+              width: 0
+            }
+          }
+        }
+      };
+    }
+  }, {
+    key: "area",
+    value: function area() {
+      return {
+        stroke: {
+          width: 4
+        },
+        fill: {
+          type: 'gradient',
+          gradient: {
+            inverseColors: false,
+            shade: 'light',
+            type: 'vertical',
+            opacityFrom: 0.65,
+            opacityTo: 0.5,
+            stops: [0, 100, 100]
+          }
+        },
+        markers: {
+          size: 0,
+          hover: {
+            sizeOffset: 6
+          }
+        },
+        tooltip: {
+          followCursor: false
+        }
+      };
+    }
+  }, {
+    key: "brush",
+    value: function brush(defaults) {
+      var ret = {
+        chart: {
+          toolbar: {
+            autoSelected: 'selection',
+            show: false
+          },
+          zoom: {
+            enabled: false
+          }
+        },
+        dataLabels: {
+          enabled: false
+        },
+        stroke: {
+          width: 1
+        },
+        tooltip: {
+          enabled: false
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          }
+        }
+      };
+      return Utils.extend(defaults, ret);
+    }
+  }, {
+    key: "stacked100",
+    value: function stacked100() {
+      var _this = this;
+
+      this.opts.dataLabels = this.opts.dataLabels || {};
+      this.opts.dataLabels.formatter = this.opts.dataLabels.formatter || undefined;
+      var existingDataLabelFormatter = this.opts.dataLabels.formatter;
+      this.opts.yaxis.forEach(function (yaxe, index) {
+        _this.opts.yaxis[index].min = 0;
+        _this.opts.yaxis[index].max = 100;
+      });
+      var isBar = this.opts.chart.type === 'bar';
+
+      if (isBar) {
+        this.opts.dataLabels.formatter = existingDataLabelFormatter || function (val) {
+          if (typeof val === 'number') {
+            return val ? val.toFixed(0) + '%' : val;
+          }
+
+          return val;
+        };
+      }
+    } // This function removes the left and right spacing in chart for line/area/scatter if xaxis type = category for those charts by converting xaxis = numeric. Numeric/Datetime xaxis prevents the unnecessary spacing in the left/right of the chart area
+
+  }, {
+    key: "bubble",
+    value: function bubble() {
+      return {
+        dataLabels: {
+          style: {
+            colors: ['#fff']
+          }
+        },
+        tooltip: {
+          shared: false,
+          intersect: true
+        },
+        xaxis: {
+          crosshairs: {
+            width: 0
+          }
+        },
+        fill: {
+          type: 'solid',
+          gradient: {
+            shade: 'light',
+            inverse: true,
+            shadeIntensity: 0.55,
+            opacityFrom: 0.4,
+            opacityTo: 0.8
+          }
+        }
+      };
+    }
+  }, {
+    key: "scatter",
+    value: function scatter() {
+      return {
+        dataLabels: {
+          enabled: false
+        },
+        tooltip: {
+          shared: false,
+          intersect: true
+        },
+        markers: {
+          size: 6,
+          strokeWidth: 2,
+          hover: {
+            sizeOffset: 2
+          }
+        }
+      };
+    }
+  }, {
+    key: "heatmap",
+    value: function heatmap() {
+      return {
+        chart: {
+          stacked: false,
+          zoom: {
+            enabled: false
+          }
+        },
+        fill: {
+          opacity: 1
+        },
+        dataLabels: {
+          style: {
+            colors: ['#fff']
+          }
+        },
+        stroke: {
+          colors: ['#fff']
+        },
+        tooltip: {
+          followCursor: true,
+          marker: {
+            show: false
+          },
+          x: {
+            show: false
+          }
+        },
+        legend: {
+          position: 'top',
+          markers: {
+            shape: 'square',
+            size: 10,
+            offsetY: 2
+          }
+        },
+        grid: {
+          padding: {
+            right: 20
+          }
+        }
+      };
+    }
+  }, {
+    key: "pie",
+    value: function pie() {
+      return {
+        chart: {
+          toolbar: {
+            show: false
+          }
+        },
+        plotOptions: {
+          pie: {
+            donut: {
+              labels: {
+                show: false
+              }
+            }
+          }
+        },
+        dataLabels: {
+          formatter: function formatter(val) {
+            return val.toFixed(1) + '%';
+          },
+          style: {
+            colors: ['#fff']
+          },
+          dropShadow: {
+            enabled: true
+          }
+        },
+        stroke: {
+          colors: ['#fff']
+        },
+        fill: {
+          opacity: 1,
+          gradient: {
+            shade: 'dark',
+            shadeIntensity: 0.35,
+            inverseColors: false,
+            stops: [0, 100, 100]
+          }
+        },
+        padding: {
+          right: 0,
+          left: 0
+        },
+        tooltip: {
+          theme: 'dark',
+          fillSeriesColor: true
+        },
+        legend: {
+          position: 'right'
+        }
+      };
+    }
+  }, {
+    key: "donut",
+    value: function donut() {
+      return {
+        chart: {
+          toolbar: {
+            show: false
+          }
+        },
+        dataLabels: {
+          formatter: function formatter(val) {
+            return val.toFixed(1) + '%';
+          },
+          style: {
+            colors: ['#fff']
+          },
+          dropShadow: {
+            enabled: true
+          }
+        },
+        stroke: {
+          colors: ['#fff']
+        },
+        fill: {
+          opacity: 1,
+          gradient: {
+            shade: 'dark',
+            shadeIntensity: 0.4,
+            inverseColors: false,
+            type: 'vertical',
+            opacityFrom: 1,
+            opacityTo: 1,
+            stops: [70, 98, 100]
+          }
+        },
+        padding: {
+          right: 0,
+          left: 0
+        },
+        tooltip: {
+          theme: 'dark',
+          fillSeriesColor: true
+        },
+        legend: {
+          position: 'right'
+        }
+      };
+    }
+  }, {
+    key: "radar",
+    value: function radar() {
+      this.opts.yaxis[0].labels.style.fontSize = '13px';
+      this.opts.yaxis[0].labels.offsetY = 6;
+      return {
+        dataLabels: {
+          enabled: true,
+          style: {
+            colors: ['#a8a8a8'],
+            fontSize: '11px'
+          }
+        },
+        stroke: {
+          width: 2
+        },
+        markers: {
+          size: 3,
+          strokeWidth: 1,
+          strokeOpacity: 1
+        },
+        fill: {
+          opacity: 0.2
+        },
+        tooltip: {
+          shared: false,
+          intersect: true,
+          followCursor: true
+        },
+        grid: {
+          show: false
+        },
+        xaxis: {
+          tooltip: {
+            enabled: false
+          },
+          crosshairs: {
+            show: false
+          }
+        }
+      };
+    }
+  }, {
+    key: "radialBar",
+    value: function radialBar() {
+      return {
+        chart: {
+          animations: {
+            dynamicAnimation: {
+              enabled: true,
+              speed: 800
+            }
+          },
+          toolbar: {
+            show: false
+          }
+        },
+        fill: {
+          gradient: {
+            shade: 'dark',
+            shadeIntensity: 0.4,
+            inverseColors: false,
+            type: 'diagonal2',
+            opacityFrom: 1,
+            opacityTo: 1,
+            stops: [70, 98, 100]
+          }
+        },
+        padding: {
+          right: 0,
+          left: 0
+        },
+        legend: {
+          show: false,
+          position: 'right'
+        },
+        tooltip: {
+          enabled: false,
+          fillSeriesColor: true
+        }
+      };
+    }
+  }], [{
+    key: "convertCatToNumeric",
+    value: function convertCatToNumeric(opts) {
+      opts.xaxis.type = 'numeric';
+      opts.xaxis.convertedCatToNumeric = true;
+      opts.xaxis.labels = opts.xaxis.labels || {};
+
+      opts.xaxis.labels.formatter = opts.xaxis.labels.formatter || function (val) {
+        return val;
+      };
+
+      opts.chart = opts.chart || {};
+      opts.chart.zoom = opts.chart.zoom || window.Apex.chart && window.Apex.chart.zoom || {};
+      var defaultFormatter = opts.xaxis.labels.formatter;
+      var labels = opts.xaxis.categories && opts.xaxis.categories.length ? opts.xaxis.categories : opts.labels;
+
+      if (labels && labels.length) {
+        opts.xaxis.labels.formatter = function (val) {
+          return defaultFormatter(labels[val - 1]);
+        };
+      }
+
+      opts.xaxis.categories = [];
+      opts.labels = [];
+      opts.chart.zoom.enabled = opts.chart.zoom.enabled || false;
+      return opts;
+    }
+  }]);
+
+  return Defaults;
+}();
+
+/*
+ ** Util functions which are dependent on ApexCharts instance
+ */
+var CoreUtils =
+/*#__PURE__*/
+function () {
+  function CoreUtils(ctx) {
+    _classCallCheck(this, CoreUtils);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(CoreUtils, [{
+    key: "getStackedSeriesTotals",
+
+    /**
+     * @memberof CoreUtils
+     * returns the sum of all individual values in a multiple stacked series
+     * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]]
+     *  @return [34,36,48,13]
+     **/
+    value: function getStackedSeriesTotals() {
+      var w = this.w;
+      var total = [];
+
+      for (var i = 0; i < w.globals.series[w.globals.maxValsInArrayIndex].length; i++) {
+        var t = 0;
+
+        for (var j = 0; j < w.globals.series.length; j++) {
+          t += w.globals.series[j][i];
+        }
+
+        total.push(t);
+      }
+
+      w.globals.stackedSeriesTotals = total;
+      return total;
+    } // get total of the all values inside all series
+
+  }, {
+    key: "getSeriesTotalByIndex",
+    value: function getSeriesTotalByIndex() {
+      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+
+      if (index === null) {
+        // non-plot chart types - pie / donut / circle
+        return this.w.config.series.reduce(function (acc, cur) {
+          return acc + cur;
+        }, 0);
+      } else {
+        // axis charts - supporting multiple series
+        return this.w.globals.series[index].reduce(function (acc, cur) {
+          return acc + cur;
+        }, 0);
+      }
+    }
+  }, {
+    key: "isSeriesNull",
+    value: function isSeriesNull() {
+      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+      var r = [];
+
+      if (index === null) {
+        // non-plot chart types - pie / donut / circle
+        r = this.w.config.series.filter(function (d) {
+          return d !== null;
+        });
+      } else {
+        // axis charts - supporting multiple series
+        r = this.w.globals.series[index].filter(function (d) {
+          return d !== null;
+        });
+      }
+
+      return r.length === 0;
+    }
+  }, {
+    key: "seriesHaveSameValues",
+    value: function seriesHaveSameValues(index) {
+      return this.w.globals.series[index].every(function (val, i, arr) {
+        return val === arr[0];
+      });
+    } // maxValsInArrayIndex is the index of series[] which has the largest number of items
+
+  }, {
+    key: "getLargestSeries",
+    value: function getLargestSeries() {
+      var w = this.w;
+      w.globals.maxValsInArrayIndex = w.globals.series.map(function (a) {
+        return a.length;
+      }).indexOf(Math.max.apply(Math, w.globals.series.map(function (a) {
+        return a.length;
+      })));
+    }
+  }, {
+    key: "getLargestMarkerSize",
+    value: function getLargestMarkerSize() {
+      var w = this.w;
+      var size = 0;
+      w.globals.markers.size.forEach(function (m) {
+        size = Math.max(size, m);
+      });
+      w.globals.markers.largestSize = size;
+      return size;
+    }
+    /**
+     * @memberof Core
+     * returns the sum of all values in a series
+     * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]]
+     *  @return [120, 11]
+     **/
+
+  }, {
+    key: "getSeriesTotals",
+    value: function getSeriesTotals() {
+      var w = this.w;
+      w.globals.seriesTotals = w.globals.series.map(function (ser, index) {
+        var total = 0;
+
+        if (Array.isArray(ser)) {
+          for (var j = 0; j < ser.length; j++) {
+            total += ser[j];
+          }
+        } else {
+          // for pie/donuts/gauges
+          total += ser;
+        }
+
+        return total;
+      });
+    }
+  }, {
+    key: "getSeriesTotalsXRange",
+    value: function getSeriesTotalsXRange(minX, maxX) {
+      var w = this.w;
+      var seriesTotalsXRange = w.globals.series.map(function (ser, index) {
+        var total = 0;
+
+        for (var j = 0; j < ser.length; j++) {
+          if (w.globals.seriesX[index][j] > minX && w.globals.seriesX[index][j] < maxX) {
+            total += ser[j];
+          }
+        }
+
+        return total;
+      });
+      return seriesTotalsXRange;
+    }
+    /**
+     * @memberof CoreUtils
+     * returns the percentage value of all individual values which can be used in a 100% stacked series
+     * Eg. w.globals.series = [[32, 33, 43, 12], [2, 3, 5, 1]]
+     *  @return [[94.11, 91.66, 89.58, 92.30], [5.88, 8.33, 10.41, 7.7]]
+     **/
+
+  }, {
+    key: "getPercentSeries",
+    value: function getPercentSeries() {
+      var w = this.w;
+      w.globals.seriesPercent = w.globals.series.map(function (ser, index) {
+        var seriesPercent = [];
+
+        if (Array.isArray(ser)) {
+          for (var j = 0; j < ser.length; j++) {
+            var total = w.globals.stackedSeriesTotals[j];
+            var percent = 100 * ser[j] / total;
+            seriesPercent.push(percent);
+          }
+        } else {
+          var _total = w.globals.seriesTotals.reduce(function (acc, val) {
+            return acc + val;
+          }, 0);
+
+          var _percent = 100 * ser / _total;
+
+          seriesPercent.push(_percent);
+        }
+
+        return seriesPercent;
+      });
+    }
+  }, {
+    key: "getCalculatedRatios",
+    value: function getCalculatedRatios() {
+      var gl = this.w.globals;
+      var yRatio = [];
+      var invertedYRatio = 0;
+      var xRatio = 0;
+      var initialXRatio = 0;
+      var invertedXRatio = 0;
+      var zRatio = 0;
+      var baseLineY = [];
+      var baseLineInvertedY = 0.1;
+      var baseLineX = 0;
+      gl.yRange = [];
+
+      if (gl.isMultipleYAxis) {
+        for (var i = 0; i < gl.minYArr.length; i++) {
+          gl.yRange.push(Math.abs(gl.minYArr[i] - gl.maxYArr[i]));
+          baseLineY.push(0);
+        }
+      } else {
+        gl.yRange.push(Math.abs(gl.minY - gl.maxY));
+      }
+
+      gl.xRange = Math.abs(gl.maxX - gl.minX);
+      gl.zRange = Math.abs(gl.maxZ - gl.minZ); // multiple y axis
+
+      for (var _i = 0; _i < gl.yRange.length; _i++) {
+        yRatio.push(gl.yRange[_i] / gl.gridHeight);
+      }
+
+      xRatio = gl.xRange / gl.gridWidth;
+      initialXRatio = Math.abs(gl.initialmaxX - gl.initialminX) / gl.gridWidth;
+      invertedYRatio = gl.yRange / gl.gridWidth;
+      invertedXRatio = gl.xRange / gl.gridHeight;
+      zRatio = gl.zRange / gl.gridHeight * 16;
+
+      if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) {
+        // Negative numbers present in series
+        gl.hasNegs = true;
+      }
+
+      if (gl.isMultipleYAxis) {
+        baseLineY = []; // baseline variables is the 0 of the yaxis which will be needed when there are negatives
+
+        for (var _i2 = 0; _i2 < yRatio.length; _i2++) {
+          baseLineY.push(-gl.minYArr[_i2] / yRatio[_i2]);
+        }
+      } else {
+        baseLineY.push(-gl.minY / yRatio[0]);
+
+        if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) {
+          baseLineInvertedY = -gl.minY / invertedYRatio; // this is for bar chart
+
+          baseLineX = gl.minX / xRatio;
+        }
+      }
+
+      return {
+        yRatio: yRatio,
+        invertedYRatio: invertedYRatio,
+        zRatio: zRatio,
+        xRatio: xRatio,
+        initialXRatio: initialXRatio,
+        invertedXRatio: invertedXRatio,
+        baseLineInvertedY: baseLineInvertedY,
+        baseLineY: baseLineY,
+        baseLineX: baseLineX
+      };
+    }
+  }, {
+    key: "getLogSeries",
+    value: function getLogSeries(series) {
+      var w = this.w;
+      w.globals.seriesLog = series.map(function (s, i) {
+        if (w.config.yaxis[i] && w.config.yaxis[i].logarithmic) {
+          return s.map(function (d) {
+            if (d === null) return null;
+            var logVal = (Math.log(d) - Math.log(w.globals.minYArr[i])) / (Math.log(w.globals.maxYArr[i]) - Math.log(w.globals.minYArr[i]));
+            return logVal;
+          });
+        } else {
+          return s;
+        }
+      });
+      return w.globals.seriesLog;
+    }
+  }, {
+    key: "getLogYRatios",
+    value: function getLogYRatios(yRatio) {
+      var _this = this;
+
+      var w = this.w;
+      var gl = this.w.globals;
+      gl.yLogRatio = yRatio.slice();
+      gl.logYRange = gl.yRange.map(function (yRange, i) {
+        if (w.config.yaxis[i] && _this.w.config.yaxis[i].logarithmic) {
+          var maxY = -Number.MAX_VALUE;
+          var minY = Number.MIN_VALUE;
+          var range = 1;
+          gl.seriesLog.forEach(function (s, si) {
+            s.forEach(function (v) {
+              if (w.config.yaxis[si] && w.config.yaxis[si].logarithmic) {
+                maxY = Math.max(v, maxY);
+                minY = Math.min(v, minY);
+              }
+            });
+          });
+          range = Math.pow(gl.yRange[i], Math.abs(minY - maxY) / gl.yRange[i]);
+          gl.yLogRatio[i] = range / gl.gridHeight;
+          return range;
+        }
+      });
+      return gl.yLogRatio;
+    } // Some config objects can be array - and we need to extend them correctly
+
+  }], [{
+    key: "checkComboSeries",
+    value: function checkComboSeries(series) {
+      var comboCharts = false;
+      var comboChartsHasBars = false; // if user specified a type in series too, turn on comboCharts flag
+
+      if (series.length && typeof series[0].type !== 'undefined') {
+        comboCharts = true;
+        series.forEach(function (s) {
+          if (s.type === 'bar' || s.type === 'column') {
+            comboChartsHasBars = true;
+          }
+        });
+      }
+
+      return {
+        comboCharts: comboCharts,
+        comboChartsHasBars: comboChartsHasBars
+      };
+    }
+  }, {
+    key: "extendArrayProps",
+    value: function extendArrayProps(configInstance, options) {
+      if (options.yaxis) {
+        options = configInstance.extendYAxis(options);
+      }
+
+      if (options.annotations) {
+        if (options.annotations.yaxis) {
+          options = configInstance.extendYAxisAnnotations(options);
+        }
+
+        if (options.annotations.xaxis) {
+          options = configInstance.extendXAxisAnnotations(options);
+        }
+
+        if (options.annotations.points) {
+          options = configInstance.extendPointAnnotations(options);
+        }
+      }
+
+      return options;
+    }
+  }]);
+
+  return CoreUtils;
+}();
+
+/**
+ * ApexCharts Config Class for extending user options with pre-defined ApexCharts config.
+ *
+ * @module Config
+ **/
+
+var Config =
+/*#__PURE__*/
+function () {
+  function Config(opts) {
+    _classCallCheck(this, Config);
+
+    this.opts = opts;
+  }
+
+  _createClass(Config, [{
+    key: "init",
+    value: function init() {
+      var opts = this.opts;
+      var options = new Options();
+      var defaults = new Defaults(opts);
+      this.chartType = opts.chart.type;
+
+      if (this.chartType === 'histogram') {
+        // technically, a histogram can be drawn by a column chart with no spaces in between
+        opts.chart.type = 'bar';
+        opts = Utils.extend({
+          plotOptions: {
+            bar: {
+              columnWidth: '99.99%'
+            }
+          }
+        }, opts);
+      }
+
+      opts.series = this.checkEmptySeries(opts.series);
+      opts = this.extendYAxis(opts);
+      opts = this.extendAnnotations(opts);
+      var config = options.init();
+      var newDefaults = {};
+
+      if (opts && _typeof(opts) === 'object') {
+        var chartDefaults = {};
+
+        switch (this.chartType) {
+          case 'line':
+            chartDefaults = defaults.line();
+            break;
+
+          case 'area':
+            chartDefaults = defaults.area();
+            break;
+
+          case 'bar':
+            chartDefaults = defaults.bar();
+            break;
+
+          case 'candlestick':
+            chartDefaults = defaults.candlestick();
+            break;
+
+          case 'rangeBar':
+            chartDefaults = defaults.rangeBar();
+            break;
+
+          case 'histogram':
+            chartDefaults = defaults.bar();
+            break;
+
+          case 'bubble':
+            chartDefaults = defaults.bubble();
+            break;
+
+          case 'scatter':
+            chartDefaults = defaults.scatter();
+            break;
+
+          case 'heatmap':
+            chartDefaults = defaults.heatmap();
+            break;
+
+          case 'pie':
+            chartDefaults = defaults.pie();
+            break;
+
+          case 'donut':
+            chartDefaults = defaults.donut();
+            break;
+
+          case 'radar':
+            chartDefaults = defaults.radar();
+            break;
+
+          case 'radialBar':
+            chartDefaults = defaults.radialBar();
+            break;
+
+          default:
+            chartDefaults = defaults.line();
+        }
+
+        if (opts.chart.brush && opts.chart.brush.enabled) {
+          chartDefaults = defaults.brush(chartDefaults);
+        }
+
+        if (opts.chart.stacked && opts.chart.stackType === '100%') {
+          defaults.stacked100();
+        } // If user has specified a dark theme, make the tooltip dark too
+
+
+        this.checkForDarkTheme(window.Apex); // check global window Apex options
+
+        this.checkForDarkTheme(opts); // check locally passed options
+
+        opts.xaxis = opts.xaxis || window.Apex.xaxis || {};
+        var combo = CoreUtils.checkComboSeries(opts.series);
+
+        if ((opts.chart.type === 'line' || opts.chart.type === 'area' || opts.chart.type === 'scatter') && !combo.comboChartsHasBars && opts.xaxis.type !== 'datetime' && opts.xaxis.type !== 'numeric' && opts.xaxis.tickPlacement !== 'between') {
+          opts = Defaults.convertCatToNumeric(opts);
+        }
+
+        if (opts.chart.sparkline && opts.chart.sparkline.enabled || window.Apex.chart && window.Apex.chart.sparkline && window.Apex.chart.sparkline.enabled) {
+          chartDefaults = defaults.sparkline(chartDefaults);
+        }
+
+        newDefaults = Utils.extend(config, chartDefaults);
+      } // config should cascade in this fashion
+      // default-config < global-apex-variable-config < user-defined-config
+      // get GLOBALLY defined options and merge with the default config
+
+
+      var mergedWithDefaultConfig = Utils.extend(newDefaults, window.Apex); // get the merged config and extend with user defined config
+
+      config = Utils.extend(mergedWithDefaultConfig, opts); // some features are not supported. those mismatches should be handled
+
+      config = this.handleUserInputErrors(config);
+      return config;
+    }
+  }, {
+    key: "extendYAxis",
+    value: function extendYAxis(opts) {
+      var options = new Options();
+
+      if (typeof opts.yaxis === 'undefined') {
+        opts.yaxis = {};
+      } // extend global yaxis config (only if object is provided / not an array)
+
+
+      if (opts.yaxis.constructor !== Array && window.Apex.yaxis && window.Apex.yaxis.constructor !== Array) {
+        opts.yaxis = Utils.extend(opts.yaxis, window.Apex.yaxis);
+      } // as we can't extend nested object's array with extend, we need to do it first
+      // user can provide either an array or object in yaxis config
+
+
+      if (opts.yaxis.constructor !== Array) {
+        // convert the yaxis to array if user supplied object
+        opts.yaxis = [Utils.extend(options.yAxis, opts.yaxis)];
+      } else {
+        opts.yaxis = Utils.extendArray(opts.yaxis, options.yAxis);
+      }
+
+      return opts;
+    } // annotations also accepts array, so we need to extend them manually
+
+  }, {
+    key: "extendAnnotations",
+    value: function extendAnnotations(opts) {
+      if (typeof opts.annotations === 'undefined') {
+        opts.annotations = {};
+        opts.annotations.yaxis = [];
+        opts.annotations.xaxis = [];
+        opts.annotations.points = [];
+      }
+
+      opts = this.extendYAxisAnnotations(opts);
+      opts = this.extendXAxisAnnotations(opts);
+      opts = this.extendPointAnnotations(opts);
+      return opts;
+    }
+  }, {
+    key: "extendYAxisAnnotations",
+    value: function extendYAxisAnnotations(opts) {
+      var options = new Options();
+      opts.annotations.yaxis = Utils.extendArray(typeof opts.annotations.yaxis !== 'undefined' ? opts.annotations.yaxis : [], options.yAxisAnnotation);
+      return opts;
+    }
+  }, {
+    key: "extendXAxisAnnotations",
+    value: function extendXAxisAnnotations(opts) {
+      var options = new Options();
+      opts.annotations.xaxis = Utils.extendArray(typeof opts.annotations.xaxis !== 'undefined' ? opts.annotations.xaxis : [], options.xAxisAnnotation);
+      return opts;
+    }
+  }, {
+    key: "extendPointAnnotations",
+    value: function extendPointAnnotations(opts) {
+      var options = new Options();
+      opts.annotations.points = Utils.extendArray(typeof opts.annotations.points !== 'undefined' ? opts.annotations.points : [], options.pointAnnotation);
+      return opts;
+    }
+  }, {
+    key: "checkForDarkTheme",
+    value: function checkForDarkTheme(opts) {
+      if (opts.theme && opts.theme.mode === 'dark') {
+        if (!opts.tooltip) {
+          opts.tooltip = {};
+        }
+
+        if (opts.tooltip.theme !== 'light') {
+          opts.tooltip.theme = 'dark';
+        }
+
+        if (!opts.chart.foreColor) {
+          opts.chart.foreColor = '#f6f7f8';
+        }
+
+        if (!opts.theme.palette) {
+          opts.theme.palette = 'palette4';
+        }
+      }
+    }
+  }, {
+    key: "checkEmptySeries",
+    value: function checkEmptySeries(ser) {
+      if (ser.length === 0) {
+        return [{
+          data: []
+        }];
+      }
+
+      return ser;
+    }
+  }, {
+    key: "handleUserInputErrors",
+    value: function handleUserInputErrors(opts) {
+      var config = opts; // conflicting tooltip option. intersect makes sure to focus on 1 point at a time. Shared cannot be used along with it
+
+      if (config.tooltip.shared && config.tooltip.intersect) {
+        throw new Error('tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.');
+      }
+
+      if (config.chart.scroller) {
+        console.warn('Scroller has been deprecated since v2.0.0. Please remove the configuration for chart.scroller');
+      }
+
+      if ((config.chart.type === 'bar' || config.chart.type === 'rangeBar') && config.plotOptions.bar.horizontal) {
+        // No multiple yaxis for bars
+        if (config.yaxis.length > 1) {
+          throw new Error('Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false');
+        } // if yaxis is reversed in horizontal bar chart, you should draw the y-axis on right side
+
+
+        if (config.yaxis[0].reversed) {
+          config.yaxis[0].opposite = true;
+        }
+
+        config.xaxis.tooltip.enabled = false; // no xaxis tooltip for horizontal bar
+
+        config.yaxis[0].tooltip.enabled = false; // no xaxis tooltip for horizontal bar
+
+        config.chart.zoom.enabled = false; // no zooming for horz bars
+      }
+
+      if (config.chart.type === 'bar' || config.chart.type === 'rangeBar') {
+        if (config.tooltip.shared) {
+          if (config.xaxis.crosshairs.width === 'barWidth' && config.series.length > 1) {
+            console.warn('crosshairs.width = "barWidth" is only supported in single series, not in a multi-series barChart.');
+            config.xaxis.crosshairs.width = 'tickWidth';
+          }
+
+          if (config.plotOptions.bar.horizontal) {
+            config.states.hover.type = 'none';
+            config.tooltip.shared = false;
+          }
+
+          if (!config.tooltip.followCursor) {
+            console.warn('followCursor option in shared columns cannot be turned off. Please set %ctooltip.followCursor: true', 'color: blue;');
+            config.tooltip.followCursor = true;
+          }
+        }
+      }
+
+      if (config.chart.type === 'candlestick') {
+        if (config.yaxis[0].reversed) {
+          console.warn('Reversed y-axis in candlestick chart is not supported.');
+          config.yaxis[0].reversed = false;
+        }
+      }
+
+      if (config.chart.group && config.yaxis[0].labels.minWidth === 0) {
+        console.warn('It looks like you have multiple charts in synchronization. You must provide yaxis.labels.minWidth which must be EQUAL for all grouped charts to prevent incorrect behaviour.');
+      } // if user supplied array for stroke width, it will only be applicable to line/area charts, for any other charts, revert back to Number
+
+
+      if (Array.isArray(config.stroke.width)) {
+        if (config.chart.type !== 'line' && config.chart.type !== 'area') {
+          console.warn('stroke.width option accepts array only for line and area charts. Reverted back to Number');
+          config.stroke.width = config.stroke.width[0];
+        }
+      }
+
+      return config;
+    }
+  }]);
+
+  return Config;
+}();
+
+var Globals =
+/*#__PURE__*/
+function () {
+  function Globals() {
+    _classCallCheck(this, Globals);
+  }
+
+  _createClass(Globals, [{
+    key: "globalVars",
+    value: function globalVars(config) {
+      return {
+        chartID: null,
+        // chart ID - apexcharts-cuid
+        cuid: null,
+        // chart ID - random numbers excluding "apexcharts" part
+        events: {
+          beforeMount: [],
+          mounted: [],
+          updated: [],
+          clicked: [],
+          selection: [],
+          dataPointSelection: [],
+          zoomed: [],
+          scrolled: []
+        },
+        colors: [],
+        clientX: null,
+        clientY: null,
+        fill: {
+          colors: []
+        },
+        stroke: {
+          colors: []
+        },
+        dataLabels: {
+          style: {
+            colors: []
+          }
+        },
+        radarPolygons: {
+          fill: {
+            colors: []
+          }
+        },
+        markers: {
+          colors: [],
+          size: config.markers.size,
+          largestSize: 0
+        },
+        animationEnded: false,
+        isTouchDevice: 'ontouchstart' in window || navigator.msMaxTouchPoints,
+        isDirty: false,
+        // chart has been updated after the initial render. This is different than dataChanged property. isDirty means user manually called some method to update
+        initialConfig: null,
+        // we will store the first config user has set to go back when user finishes interactions like zooming and come out of it
+        lastXAxis: [],
+        lastYAxis: [],
+        series: [],
+        // the MAIN series array (y values)
+        seriesRangeStart: [],
+        // the clone of series becomes the start in range
+        seriesRangeEnd: [],
+        // the end values in range chart
+        seriesPercent: [],
+        // the percentage values of the given series
+        seriesTotals: [],
+        stackedSeriesTotals: [],
+        seriesX: [],
+        // store the numeric x values in this array (x values)
+        seriesZ: [],
+        // The 3rd "Z" dimension for bubbles chart (z values)
+        labels: [],
+        // store the text to draw on x axis
+        // Don't mutate the labels, many things including tooltips depends on it!
+        timelineLabels: [],
+        // store the timeline Labels in another variable
+        invertedTimelineLabels: [],
+        // for rangebar timeline
+        seriesNames: [],
+        // same as labels, used in non axis charts
+        noLabelsProvided: false,
+        // if user didn't provide any categories/labels or x values, fallback to 1,2,3,4...
+        allSeriesCollapsed: false,
+        collapsedSeries: [],
+        // when user collapses a series, it goes into this array
+        collapsedSeriesIndices: [],
+        // this stores the index of the collapsedSeries instead of whole object for quick access
+        ancillaryCollapsedSeries: [],
+        // when user collapses an "alwaysVisible" series, it goes into this array
+        ancillaryCollapsedSeriesIndices: [],
+        // this stores the index of the ancillaryCollapsedSeries whose y-axis is always visible
+        risingSeries: [],
+        // when user re-opens a collapsed series, it goes here
+        dataFormatXNumeric: false,
+        // boolean value to indicate user has passed numeric x values
+        selectedDataPoints: [],
+        ignoreYAxisIndexes: [],
+        // when series are being collapsed in multiple y axes, ignore certain index
+        padHorizontal: 0,
+        maxValsInArrayIndex: 0,
+        zoomEnabled: config.chart.toolbar.autoSelected === 'zoom' && config.chart.toolbar.tools.zoom && config.chart.zoom.enabled,
+        panEnabled: config.chart.toolbar.autoSelected === 'pan' && config.chart.toolbar.tools.pan,
+        selectionEnabled: config.chart.toolbar.autoSelected === 'selection' && config.chart.toolbar.tools.selection,
+        yaxis: null,
+        minY: Number.MIN_VALUE,
+        //  is 5e-324, i.e. the smallest positive number
+        // NOTE: If there are multiple y axis, the first yaxis array element will be considered for all y values calculations. Rest all will be calculated based on that
+        maxY: -Number.MAX_VALUE,
+        // is -1.7976931348623157e+308
+        // NOTE: The above note for minY applies here as well
+        minYArr: [],
+        maxYArr: [],
+        maxX: -Number.MAX_VALUE,
+        // is -1.7976931348623157e+308
+        initialmaxX: -Number.MAX_VALUE,
+        minX: Number.MIN_VALUE,
+        //  is 5e-324, i.e. the smallest positive number
+        initialminX: Number.MIN_VALUE,
+        minZ: Number.MIN_VALUE,
+        // Max Z value in charts with Z axis
+        maxZ: -Number.MAX_VALUE,
+        // Max Z value in charts with Z axis
+        minXDiff: Number.MAX_VALUE,
+        mousedown: false,
+        lastClientPosition: {},
+        // don't reset this variable this the chart is destroyed. It is used to detect right or left mousemove in panning
+        visibleXRange: undefined,
+        yRange: [],
+        // this property is the absolute sum of positive and negative values [eg (-100 + 200 = 300)] - yAxis
+        zRange: 0,
+        // zAxis Range (for bubble charts)
+        xRange: 0,
+        // xAxis range
+        yValueDecimal: 0,
+        // are there floating numbers in the series. If yes, this represent the len of the decimals
+        total: 0,
+        SVGNS: 'http://www.w3.org/2000/svg',
+        // svg namespace
+        svgWidth: 0,
+        // the whole svg width
+        svgHeight: 0,
+        // the whole svg height
+        noData: false,
+        // whether there is any data to display or not
+        locale: {},
+        // the current locale values will be preserved here for global access
+        dom: {},
+        // for storing all dom nodes in this particular property
+        // elWrap: null, // the element that wraps everything
+        // elGraphical: null, // this contains lines/areas/bars/pies
+        // elGridRect: null, // paths going outside this area will be clipped
+        // elGridRectMask: null, // clipping will happen with this mask
+        // elGridRectMarkerMask: null, // clipping will happen with this mask
+        // elLegendWrap: null, // the whole legend area
+        // elDefs: null, // [defs] element
+        memory: {
+          methodsToExec: []
+        },
+        shouldAnimate: true,
+        skipLastTimelinelabel: false,
+        // when last label is cropped, skip drawing it
+        delayedElements: [],
+        // element which appear after animation has finished
+        axisCharts: true,
+        // chart type = line or area or bar
+        // (refer them also as plot charts in the code)
+        isXNumeric: false,
+        // bool: data was provided in a {[x,y], [x,y]} pattern
+        isDataXYZ: false,
+        // bool: data was provided in a {[x,y,z]} pattern
+        resized: false,
+        // bool: user has resized
+        resizeTimer: null,
+        // timeout function to make a small delay before
+        // drawing when user resized
+        comboCharts: false,
+        // bool: whether it's a combination of line/column
+        comboChartsHasBars: false,
+        // bool: whether it's a combination of line/column
+        dataChanged: false,
+        // bool: has data changed dynamically
+        previousPaths: [],
+        // array: when data is changed, it will animate from
+        // previous paths
+        seriesXvalues: [],
+        // we will need this in tooltip (it's x position)
+        // when we will have unequal x values, we will need
+        // some way to get x value depending on mouse pointer
+        seriesYvalues: [],
+        // we will need this when deciding which series
+        // user hovered on
+        seriesCandleO: [],
+        // candle stick open values
+        seriesCandleH: [],
+        // candle stick high values
+        seriesCandleL: [],
+        // candle stick low values
+        seriesCandleC: [],
+        // candle stick close values
+        allSeriesHasEqualX: true,
+        dataPoints: 0,
+        // the longest series length
+        pointsArray: [],
+        // store the points positions here to draw later on hover
+        // format is - [[x,y],[x,y]... [x,y]]
+        dataLabelsRects: [],
+        // store the positions of datalabels to prevent collision
+        lastDrawnDataLabelsIndexes: [],
+        hasNullValues: false,
+        // bool: whether series contains null values
+        easing: null,
+        // function: animation effect to apply
+        zoomed: false,
+        // whether user has zoomed or not
+        gridWidth: 0,
+        // drawable width of actual graphs (series paths)
+        gridHeight: 0,
+        // drawable height of actual graphs (series paths)
+        yAxisScale: [],
+        xAxisScale: null,
+        xAxisTicksPositions: [],
+        timescaleTicks: [],
+        rotateXLabels: false,
+        defaultLabels: false,
+        xLabelFormatter: undefined,
+        // formatter for x axis labels
+        yLabelFormatters: [],
+        xaxisTooltipFormatter: undefined,
+        // formatter for x axis tooltip
+        ttKeyFormatter: undefined,
+        ttVal: undefined,
+        ttZFormatter: undefined,
+        LINE_HEIGHT_RATIO: 1.618,
+        xAxisLabelsHeight: 0,
+        yAxisLabelsWidth: 0,
+        scaleX: 1,
+        scaleY: 1,
+        translateX: 0,
+        translateY: 0,
+        translateYAxisX: [],
+        yLabelsCoords: [],
+        yTitleCoords: [],
+        yAxisWidths: [],
+        translateXAxisY: 0,
+        translateXAxisX: 0,
+        tooltip: null,
+        tooltipOpts: null
+      };
+    }
+  }, {
+    key: "init",
+    value: function init(config) {
+      var globals = this.globalVars(config);
+      globals.initialConfig = Utils.extend({}, config);
+      globals.initialSeries = JSON.parse(JSON.stringify(globals.initialConfig.series));
+      globals.lastXAxis = JSON.parse(JSON.stringify(globals.initialConfig.xaxis));
+      globals.lastYAxis = JSON.parse(JSON.stringify(globals.initialConfig.yaxis));
+      return globals;
+    }
+  }]);
+
+  return Globals;
+}();
+
+/**
+ * ApexCharts Base Class for extending user options with pre-defined ApexCharts config.
+ *
+ * @module Base
+ **/
+
+var Base =
+/*#__PURE__*/
+function () {
+  function Base(opts) {
+    _classCallCheck(this, Base);
+
+    this.opts = opts;
+  }
+
+  _createClass(Base, [{
+    key: "init",
+    value: function init() {
+      var config = new Config(this.opts).init();
+      var globals = new Globals().init(config);
+      var w = {
+        config: config,
+        globals: globals
+      };
+      return w;
+    }
+  }]);
+
+  return Base;
+}();
+
+/**
+ * ApexCharts Fill Class for setting fill options of the paths.
+ *
+ * @module Fill
+ **/
+
+var Fill =
+/*#__PURE__*/
+function () {
+  function Fill(ctx) {
+    _classCallCheck(this, Fill);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.opts = null;
+    this.seriesIndex = 0;
+  }
+
+  _createClass(Fill, [{
+    key: "clippedImgArea",
+    value: function clippedImgArea(params) {
+      var w = this.w;
+      var cnf = w.config;
+      var svgW = parseInt(w.globals.gridWidth);
+      var svgH = parseInt(w.globals.gridHeight);
+      var size = svgW > svgH ? svgW : svgH;
+      var fillImg = params.image;
+      var imgWidth = 0;
+      var imgHeight = 0;
+
+      if (typeof params.width === 'undefined' && typeof params.height === 'undefined') {
+        if (cnf.fill.image.width !== undefined && cnf.fill.image.height !== undefined) {
+          imgWidth = cnf.fill.image.width + 1;
+          imgHeight = cnf.fill.image.height;
+        } else {
+          imgWidth = size + 1;
+          imgHeight = size;
+        }
+      } else {
+        imgWidth = params.width;
+        imgHeight = params.height;
+      }
+
+      var elPattern = document.createElementNS(w.globals.SVGNS, 'pattern');
+      Graphics.setAttrs(elPattern, {
+        id: params.patternID,
+        patternUnits: params.patternUnits ? params.patternUnits : 'userSpaceOnUse',
+        width: imgWidth + 'px',
+        height: imgHeight + 'px'
+      });
+      var elImage = document.createElementNS(w.globals.SVGNS, 'image');
+      elPattern.appendChild(elImage);
+      elImage.setAttributeNS('http://www.w3.org/1999/xlink', 'href', fillImg);
+      Graphics.setAttrs(elImage, {
+        x: 0,
+        y: 0,
+        preserveAspectRatio: 'none',
+        width: imgWidth + 'px',
+        height: imgHeight + 'px'
+      });
+      elImage.style.opacity = params.opacity;
+      w.globals.dom.elDefs.node.appendChild(elPattern);
+    }
+  }, {
+    key: "getSeriesIndex",
+    value: function getSeriesIndex(opts) {
+      var w = this.w;
+
+      if (w.config.chart.type === 'bar' && w.config.plotOptions.bar.distributed || w.config.chart.type === 'heatmap') {
+        this.seriesIndex = opts.seriesNumber;
+      } else {
+        this.seriesIndex = opts.seriesNumber % w.globals.series.length;
+      }
+
+      return this.seriesIndex;
+    }
+  }, {
+    key: "fillPath",
+    value: function fillPath(opts) {
+      var w = this.w;
+      this.opts = opts;
+      var cnf = this.w.config;
+      var pathFill;
+      var patternFill, gradientFill;
+      this.seriesIndex = this.getSeriesIndex(opts);
+      var fillColors = this.getFillColors();
+      var fillColor = fillColors[this.seriesIndex];
+
+      if (typeof fillColor === 'function') {
+        fillColor = fillColor({
+          seriesIndex: this.seriesIndex,
+          value: opts.value,
+          w: w
+        });
+      }
+
+      var fillType = this.getFillType(this.seriesIndex);
+      var fillOpacity = Array.isArray(cnf.fill.opacity) ? cnf.fill.opacity[this.seriesIndex] : cnf.fill.opacity;
+      var defaultColor = fillColor;
+
+      if (opts.color) {
+        fillColor = opts.color;
+      }
+
+      if (fillColor.indexOf('rgb') === -1) {
+        defaultColor = Utils.hexToRgba(fillColor, fillOpacity);
+      } else {
+        if (fillColor.indexOf('rgba') > -1) {
+          fillOpacity = 0 + '.' + Utils.getOpacityFromRGBA(fillColors[this.seriesIndex]);
+        }
+      }
+
+      if (fillType === 'pattern') {
+        patternFill = this.handlePatternFill(patternFill, fillColor, fillOpacity, defaultColor);
+      }
+
+      if (fillType === 'gradient') {
+        gradientFill = this.handleGradientFill(gradientFill, fillColor, fillOpacity, this.seriesIndex);
+      }
+
+      if (cnf.fill.image.src.length > 0 && fillType === 'image') {
+        if (opts.seriesNumber < cnf.fill.image.src.length) {
+          this.clippedImgArea({
+            opacity: fillOpacity,
+            image: cnf.fill.image.src[opts.seriesNumber],
+            patternUnits: opts.patternUnits,
+            patternID: "pattern".concat(w.globals.cuid).concat(opts.seriesNumber + 1)
+          });
+          pathFill = "url(#pattern".concat(w.globals.cuid).concat(opts.seriesNumber + 1, ")");
+        } else {
+          pathFill = defaultColor;
+        }
+      } else if (fillType === 'gradient') {
+        pathFill = gradientFill;
+      } else if (fillType === 'pattern') {
+        pathFill = patternFill;
+      } else {
+        pathFill = defaultColor;
+      } // override pattern/gradient if opts.solid is true
+
+
+      if (opts.solid) {
+        pathFill = defaultColor;
+      }
+
+      return pathFill;
+    }
+  }, {
+    key: "getFillType",
+    value: function getFillType(seriesIndex) {
+      var w = this.w;
+
+      if (Array.isArray(w.config.fill.type)) {
+        return w.config.fill.type[seriesIndex];
+      } else {
+        return w.config.fill.type;
+      }
+    }
+  }, {
+    key: "getFillColors",
+    value: function getFillColors() {
+      var w = this.w;
+      var cnf = w.config;
+      var opts = this.opts;
+      var fillColors = [];
+
+      if (w.globals.comboCharts) {
+        if (w.config.series[this.seriesIndex].type === 'line') {
+          if (w.globals.stroke.colors instanceof Array) {
+            fillColors = w.globals.stroke.colors;
+          } else {
+            fillColors.push(w.globals.stroke.colors);
+          }
+        } else {
+          if (w.globals.fill.colors instanceof Array) {
+            fillColors = w.globals.fill.colors;
+          } else {
+            fillColors.push(w.globals.fill.colors);
+          }
+        }
+      } else {
+        if (cnf.chart.type === 'line') {
+          if (w.globals.stroke.colors instanceof Array) {
+            fillColors = w.globals.stroke.colors;
+          } else {
+            fillColors.push(w.globals.stroke.colors);
+          }
+        } else {
+          if (w.globals.fill.colors instanceof Array) {
+            fillColors = w.globals.fill.colors;
+          } else {
+            fillColors.push(w.globals.fill.colors);
+          }
+        }
+      } // colors passed in arguments
+
+
+      if (typeof opts.fillColors !== 'undefined') {
+        fillColors = [];
+
+        if (opts.fillColors instanceof Array) {
+          fillColors = opts.fillColors.slice();
+        } else {
+          fillColors.push(opts.fillColors);
+        }
+      }
+
+      return fillColors;
+    }
+  }, {
+    key: "handlePatternFill",
+    value: function handlePatternFill(patternFill, fillColor, fillOpacity, defaultColor) {
+      var cnf = this.w.config;
+      var opts = this.opts;
+      var graphics = new Graphics(this.ctx);
+      var patternStrokeWidth = cnf.fill.pattern.strokeWidth === undefined ? Array.isArray(cnf.stroke.width) ? cnf.stroke.width[this.seriesIndex] : cnf.stroke.width : Array.isArray(cnf.fill.pattern.strokeWidth) ? cnf.fill.pattern.strokeWidth[this.seriesIndex] : cnf.fill.pattern.strokeWidth;
+      var patternLineColor = fillColor;
+
+      if (cnf.fill.pattern.style instanceof Array) {
+        if (typeof cnf.fill.pattern.style[opts.seriesNumber] !== 'undefined') {
+          var pf = graphics.drawPattern(cnf.fill.pattern.style[opts.seriesNumber], cnf.fill.pattern.width, cnf.fill.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity);
+          patternFill = pf;
+        } else {
+          patternFill = defaultColor;
+        }
+      } else {
+        patternFill = graphics.drawPattern(cnf.fill.pattern.style, cnf.fill.pattern.width, cnf.fill.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity);
+      }
+
+      return patternFill;
+    }
+  }, {
+    key: "handleGradientFill",
+    value: function handleGradientFill(gradientFill, fillColor, fillOpacity, i) {
+      var cnf = this.w.config;
+      var opts = this.opts;
+      var graphics = new Graphics(this.ctx);
+      var utils = new Utils();
+      var type = cnf.fill.gradient.type;
+      var gradientFrom, gradientTo;
+      var opacityFrom = cnf.fill.gradient.opacityFrom === undefined ? fillOpacity : Array.isArray(cnf.fill.gradient.opacityFrom) ? cnf.fill.gradient.opacityFrom[i] : cnf.fill.gradient.opacityFrom;
+      var opacityTo = cnf.fill.gradient.opacityTo === undefined ? fillOpacity : Array.isArray(cnf.fill.gradient.opacityTo) ? cnf.fill.gradient.opacityTo[i] : cnf.fill.gradient.opacityTo;
+      gradientFrom = fillColor;
+
+      if (cnf.fill.gradient.gradientToColors === undefined || cnf.fill.gradient.gradientToColors.length === 0) {
+        if (cnf.fill.gradient.shade === 'dark') {
+          gradientTo = utils.shadeColor(parseFloat(cnf.fill.gradient.shadeIntensity) * -1, fillColor);
+        } else {
+          gradientTo = utils.shadeColor(parseFloat(cnf.fill.gradient.shadeIntensity), fillColor);
+        }
+      } else {
+        gradientTo = cnf.fill.gradient.gradientToColors[opts.seriesNumber];
+      }
+
+      if (cnf.fill.gradient.inverseColors) {
+        var t = gradientFrom;
+        gradientFrom = gradientTo;
+        gradientTo = t;
+      }
+
+      gradientFill = graphics.drawGradient(type, gradientFrom, gradientTo, opacityFrom, opacityTo, opts.size, cnf.fill.gradient.stops, cnf.fill.gradient.colorStops, i);
+      return gradientFill;
+    }
+  }]);
+
+  return Fill;
+}();
+
+/**
+ * ApexCharts Markers Class for drawing points on y values in axes charts.
+ *
+ * @module Markers
+ **/
+
+var Markers =
+/*#__PURE__*/
+function () {
+  function Markers(ctx, opts) {
+    _classCallCheck(this, Markers);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Markers, [{
+    key: "setGlobalMarkerSize",
+    value: function setGlobalMarkerSize() {
+      var w = this.w;
+      w.globals.markers.size = Array.isArray(w.config.markers.size) ? w.config.markers.size : [w.config.markers.size];
+
+      if (w.globals.markers.size.length > 0) {
+        if (w.globals.markers.size.length < w.globals.series.length + 1) {
+          for (var i = 0; i <= w.globals.series.length; i++) {
+            if (typeof w.globals.markers.size[i] === 'undefined') {
+              w.globals.markers.size.push(w.globals.markers.size[0]);
+            }
+          }
+        }
+      } else {
+        w.globals.markers.size = w.config.series.map(function (s) {
+          return w.config.markers.size;
+        });
+      }
+    }
+  }, {
+    key: "plotChartMarkers",
+    value: function plotChartMarkers(pointsPos, seriesIndex, j) {
+      var _this = this;
+
+      var w = this.w;
+      var i = seriesIndex;
+      var p = pointsPos;
+      var elPointsWrap = null;
+      var graphics = new Graphics(this.ctx);
+      var point;
+
+      if (w.globals.markers.size[seriesIndex] > 0) {
+        elPointsWrap = graphics.group({
+          class: 'apexcharts-series-markers'
+        });
+        elPointsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")"));
+      }
+
+      if (p.x instanceof Array) {
+        var _loop = function _loop(q) {
+          var dataPointIndex = j; // a small hack as we have 2 points for the first val to connect it
+
+          if (j === 1 && q === 0) dataPointIndex = 0;
+          if (j === 1 && q === 1) dataPointIndex = 1;
+          var PointClasses = 'apexcharts-marker';
+
+          if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) {
+            PointClasses += ' no-pointer-events';
+          }
+
+          var shouldMarkerDraw = Array.isArray(w.config.markers.size) ? w.globals.markers.size[seriesIndex] > 0 : w.config.markers.size > 0;
+
+          if (shouldMarkerDraw) {
+            if (Utils.isNumber(p.y[q])) {
+              PointClasses += " w".concat((Math.random() + 1).toString(36).substring(4));
+            } else {
+              PointClasses = 'apexcharts-nullpoint';
+            }
+
+            var opts = _this.getMarkerConfig(PointClasses, seriesIndex); // discrete markers is an option where user can specify a particular marker with different size and color
+
+
+            w.config.markers.discrete.map(function (marker) {
+              if (marker.seriesIndex === seriesIndex && marker.dataPointIndex === dataPointIndex) {
+                opts.pointStrokeColor = marker.strokeColor;
+                opts.pointFillColor = marker.fillColor;
+                opts.pSize = marker.size;
+              }
+            });
+
+            if (w.config.series[i].data[j]) {
+              if (w.config.series[i].data[j].fillColor) {
+                opts.pointFillColor = w.config.series[i].data[j].fillColor;
+              }
+
+              if (w.config.series[i].data[j].strokeColor) {
+                opts.pointStrokeColor = w.config.series[i].data[j].strokeColor;
+              }
+            }
+
+            point = graphics.drawMarker(p.x[q], p.y[q], opts);
+            point.attr('rel', dataPointIndex);
+            point.attr('j', dataPointIndex);
+            point.attr('index', seriesIndex);
+            point.node.setAttribute('default-marker-size', opts.pSize);
+            var filters = new Filters(_this.ctx);
+            filters.setSelectionFilter(point, seriesIndex, dataPointIndex);
+
+            _this.addEvents(point);
+
+            if (elPointsWrap) {
+              elPointsWrap.add(point);
+            }
+          } else {
+            // dynamic array creation - multidimensional
+            if (typeof w.globals.pointsArray[seriesIndex] === 'undefined') w.globals.pointsArray[seriesIndex] = [];
+            w.globals.pointsArray[seriesIndex].push([p.x[q], p.y[q]]);
+          }
+        };
+
+        for (var q = 0; q < p.x.length; q++) {
+          _loop(q);
+        }
+      }
+
+      return elPointsWrap;
+    }
+  }, {
+    key: "getMarkerConfig",
+    value: function getMarkerConfig(cssClass, seriesIndex) {
+      var w = this.w;
+      var pStyle = this.getMarkerStyle(seriesIndex);
+      var pSize = w.globals.markers.size[seriesIndex];
+      return {
+        pSize: pSize,
+        pRadius: w.config.markers.radius,
+        pWidth: w.config.markers.strokeWidth,
+        pointStrokeColor: pStyle.pointStrokeColor,
+        pointFillColor: pStyle.pointFillColor,
+        shape: w.config.markers.shape instanceof Array ? w.config.markers.shape[seriesIndex] : w.config.markers.shape,
+        class: cssClass,
+        pointStrokeOpacity: w.config.markers.strokeOpacity,
+        pointFillOpacity: w.config.markers.fillOpacity,
+        seriesIndex: seriesIndex
+      };
+    }
+  }, {
+    key: "addEvents",
+    value: function addEvents(circle) {
+      var graphics = new Graphics(this.ctx);
+      circle.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this.ctx, circle));
+      circle.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this.ctx, circle));
+      circle.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this.ctx, circle));
+      circle.node.addEventListener('touchstart', graphics.pathMouseDown.bind(this.ctx, circle), {
+        passive: true
+      });
+    }
+  }, {
+    key: "getMarkerStyle",
+    value: function getMarkerStyle(seriesIndex) {
+      var w = this.w;
+      var colors = w.globals.markers.colors;
+      var strokeColors = w.config.markers.strokeColor || w.config.markers.strokeColors;
+      var pointStrokeColor = strokeColors instanceof Array ? strokeColors[seriesIndex] : strokeColors;
+      var pointFillColor = colors instanceof Array ? colors[seriesIndex] : colors;
+      return {
+        pointStrokeColor: pointStrokeColor,
+        pointFillColor: pointFillColor
+      };
+    }
+  }]);
+
+  return Markers;
+}();
+
+/**
+ * ApexCharts Scatter Class.
+ * This Class also handles bubbles chart as currently there is no major difference in drawing them,
+ * @module Scatter
+ **/
+
+var Scatter =
+/*#__PURE__*/
+function () {
+  function Scatter(ctx) {
+    _classCallCheck(this, Scatter);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.initialAnim = this.w.config.chart.animations.enabled;
+    this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; // this array will help in centering the label in bubbles
+
+    this.radiusSizes = [];
+  }
+
+  _createClass(Scatter, [{
+    key: "draw",
+    value: function draw(elSeries, j, opts) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var realIndex = opts.realIndex;
+      var pointsPos = opts.pointsPos;
+      var zRatio = opts.zRatio;
+      var elPointsMain = opts.elParent;
+      var elPointsWrap = graphics.group({
+        class: "apexcharts-series-markers apexcharts-series-".concat(w.config.chart.type)
+      });
+      elPointsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")"));
+
+      if (pointsPos.x instanceof Array) {
+        for (var q = 0; q < pointsPos.x.length; q++) {
+          var dataPointIndex = j + 1;
+          var shouldDraw = true; // a small hack as we have 2 points for the first val to connect it
+
+          if (j === 0 && q === 0) dataPointIndex = 0;
+          if (j === 0 && q === 1) dataPointIndex = 1;
+          var radius = 0;
+          var finishRadius = w.globals.markers.size[realIndex];
+
+          if (zRatio !== Infinity) {
+            // means we have a bubble
+            finishRadius = w.globals.seriesZ[realIndex][dataPointIndex] / zRatio;
+
+            if (typeof this.radiusSizes[realIndex] === 'undefined') {
+              this.radiusSizes.push([]);
+            }
+
+            this.radiusSizes[realIndex].push(finishRadius);
+          }
+
+          if (!w.config.chart.animations.enabled) {
+            radius = finishRadius;
+          }
+
+          var x = pointsPos.x[q];
+          var y = pointsPos.y[q];
+          radius = radius || 0;
+
+          if (x === 0 && y === 0 || y === null || typeof w.globals.series[realIndex][dataPointIndex] === 'undefined') {
+            shouldDraw = false;
+          }
+
+          if (shouldDraw) {
+            var circle = this.drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j);
+            elPointsWrap.add(circle);
+          }
+
+          elPointsMain.add(elPointsWrap);
+        }
+      }
+    }
+  }, {
+    key: "drawPoint",
+    value: function drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j) {
+      var w = this.w;
+      var i = realIndex;
+      var anim = new Animations(this.ctx);
+      var filters = new Filters(this.ctx);
+      var fill = new Fill(this.ctx);
+      var markers = new Markers(this.ctx);
+      var graphics = new Graphics(this.ctx);
+      var markerConfig = markers.getMarkerConfig('apexcharts-marker', i);
+      var pathFillCircle = fill.fillPath({
+        seriesNumber: realIndex,
+        patternUnits: 'objectBoundingBox',
+        value: w.globals.series[realIndex][j]
+      });
+      var circle = graphics.drawCircle(radius);
+
+      if (w.config.series[i].data[dataPointIndex]) {
+        if (w.config.series[i].data[dataPointIndex].fillColor) {
+          pathFillCircle = w.config.series[i].data[dataPointIndex].fillColor;
+        }
+      }
+
+      circle.attr({
+        cx: x,
+        cy: y,
+        fill: pathFillCircle,
+        stroke: markerConfig.pointStrokeColor,
+        strokeWidth: markerConfig.pWidth
+      });
+
+      if (w.config.chart.dropShadow.enabled) {
+        var dropShadow = w.config.chart.dropShadow;
+        filters.dropShadow(circle, dropShadow, realIndex);
+      }
+
+      if (this.initialAnim && !w.globals.dataChanged) {
+        var speed = 1;
+
+        if (!w.globals.resized) {
+          speed = w.config.chart.animations.speed;
+        }
+
+        anim.animateCircleRadius(circle, 0, finishRadius, speed, w.globals.easing);
+      }
+
+      if (w.globals.dataChanged) {
+        if (this.dynamicAnim) {
+          var _speed = w.config.chart.animations.dynamicAnimation.speed;
+          var prevX, prevY, prevR;
+          var prevPathJ = null;
+          prevPathJ = w.globals.previousPaths[realIndex] && w.globals.previousPaths[realIndex][j];
+
+          if (typeof prevPathJ !== 'undefined' && prevPathJ !== null) {
+            // series containing less elements will ignore these values and revert to 0
+            prevX = prevPathJ.x;
+            prevY = prevPathJ.y;
+            prevR = typeof prevPathJ.r !== 'undefined' ? prevPathJ.r : finishRadius;
+          }
+
+          for (var cs = 0; cs < w.globals.collapsedSeries.length; cs++) {
+            if (w.globals.collapsedSeries[cs].index === realIndex) {
+              _speed = 1;
+              finishRadius = 0;
+            }
+          }
+
+          if (x === 0 && y === 0) finishRadius = 0;
+          anim.animateCircle(circle, {
+            cx: prevX,
+            cy: prevY,
+            r: prevR
+          }, {
+            cx: x,
+            cy: y,
+            r: finishRadius
+          }, _speed, w.globals.easing);
+        } else {
+          circle.attr({
+            r: finishRadius
+          });
+        }
+      }
+
+      circle.attr({
+        rel: dataPointIndex,
+        j: dataPointIndex,
+        index: realIndex,
+        'default-marker-size': finishRadius
+      });
+      filters.setSelectionFilter(circle, realIndex, dataPointIndex);
+      markers.addEvents(circle);
+      circle.node.classList.add('apexcharts-marker');
+      return circle;
+    }
+  }, {
+    key: "centerTextInBubble",
+    value: function centerTextInBubble(y) {
+      var w = this.w;
+      y = y + parseInt(w.config.dataLabels.style.fontSize) / 4;
+      return {
+        y: y
+      };
+    }
+  }]);
+
+  return Scatter;
+}();
+
+/**
+ * ApexCharts DataLabels Class for drawing dataLabels on Axes based Charts.
+ *
+ * @module DataLabels
+ **/
+
+var DataLabels =
+/*#__PURE__*/
+function () {
+  function DataLabels(ctx) {
+    _classCallCheck(this, DataLabels);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  } // When there are many datalabels to be printed, and some of them overlaps each other in the same series, this method will take care of that
+  // Also, when datalabels exceeds the drawable area and get clipped off, we need to adjust and move some pixels to make them visible again
+
+
+  _createClass(DataLabels, [{
+    key: "dataLabelsCorrection",
+    value: function dataLabelsCorrection(x, y, val, i, dataPointIndex, alwaysDrawDataLabel, fontSize) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var drawnextLabel = false; //
+
+      var textRects = graphics.getTextRects(val, fontSize);
+      var width = textRects.width;
+      var height = textRects.height; // first value in series, so push an empty array
+
+      if (typeof w.globals.dataLabelsRects[i] === 'undefined') w.globals.dataLabelsRects[i] = []; // then start pushing actual rects in that sub-array
+
+      w.globals.dataLabelsRects[i].push({
+        x: x,
+        y: y,
+        width: width,
+        height: height
+      });
+      var len = w.globals.dataLabelsRects[i].length - 2;
+      var lastDrawnIndex = typeof w.globals.lastDrawnDataLabelsIndexes[i] !== 'undefined' ? w.globals.lastDrawnDataLabelsIndexes[i][w.globals.lastDrawnDataLabelsIndexes[i].length - 1] : 0;
+
+      if (typeof w.globals.dataLabelsRects[i][len] !== 'undefined') {
+        var lastDataLabelRect = w.globals.dataLabelsRects[i][lastDrawnIndex];
+
+        if ( // next label forward and x not intersecting
+        x > lastDataLabelRect.x + lastDataLabelRect.width + 2 || y > lastDataLabelRect.y + lastDataLabelRect.height + 2 || x + width < lastDataLabelRect.x // next label is going to be drawn backwards
+        ) {
+            // the 2 indexes don't override, so OK to draw next label
+            drawnextLabel = true;
+          }
+      }
+
+      if (dataPointIndex === 0 || alwaysDrawDataLabel) {
+        drawnextLabel = true;
+      }
+
+      return {
+        x: x,
+        y: y,
+        drawnextLabel: drawnextLabel
+      };
+    }
+  }, {
+    key: "drawDataLabel",
+    value: function drawDataLabel(pos, i, j) {
+      var align = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'top';
+      // this method handles line, area, bubble, scatter charts as those charts contains markers/points which have pre-defined x/y positions
+      // all other charts like bars / heatmaps will define their own drawDataLabel routine
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var dataLabelsConfig = w.config.dataLabels;
+      var x = 0;
+      var y = 0;
+      var dataPointIndex = j;
+      var elDataLabelsWrap = null;
+
+      if (!dataLabelsConfig.enabled || pos.x instanceof Array !== true) {
+        return elDataLabelsWrap;
+      }
+
+      elDataLabelsWrap = graphics.group({
+        class: 'apexcharts-data-labels'
+      });
+      elDataLabelsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")"));
+
+      for (var q = 0; q < pos.x.length; q++) {
+        x = pos.x[q] + dataLabelsConfig.offsetX;
+        y = pos.y[q] + dataLabelsConfig.offsetY - w.globals.markers.size[i] - 5;
+
+        if (align === 'bottom') {
+          y = y + w.globals.markers.size[i] * 2 + parseInt(dataLabelsConfig.style.fontSize) * 1.4;
+        }
+
+        if (!isNaN(x)) {
+          // a small hack as we have 2 points for the first val to connect it
+          if (j === 1 && q === 0) dataPointIndex = 0;
+          if (j === 1 && q === 1) dataPointIndex = 1;
+          var val = w.globals.series[i][dataPointIndex];
+          var text = '';
+
+          if (w.config.chart.type === 'bubble') {
+            text = w.globals.seriesZ[i][dataPointIndex];
+            y = pos.y[q] + w.config.dataLabels.offsetY;
+            var scatter = new Scatter(this.ctx);
+            var centerTextInBubbleCoords = scatter.centerTextInBubble(y, i, dataPointIndex);
+            y = centerTextInBubbleCoords.y;
+          } else {
+            if (typeof val !== 'undefined' && val !== null) {
+              text = w.config.dataLabels.formatter(val, {
+                ctx: this.ctx,
+                seriesIndex: i,
+                dataPointIndex: dataPointIndex,
+                w: w
+              });
+            }
+          }
+
+          this.plotDataLabelsText({
+            x: x,
+            y: y,
+            text: text,
+            i: i,
+            j: dataPointIndex,
+            parent: elDataLabelsWrap,
+            offsetCorrection: true,
+            dataLabelsConfig: w.config.dataLabels
+          });
+        }
+      }
+
+      return elDataLabelsWrap;
+    }
+  }, {
+    key: "plotDataLabelsText",
+    value: function plotDataLabelsText(opts) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var x = opts.x,
+          y = opts.y,
+          i = opts.i,
+          j = opts.j,
+          text = opts.text,
+          textAnchor = opts.textAnchor,
+          parent = opts.parent,
+          dataLabelsConfig = opts.dataLabelsConfig,
+          alwaysDrawDataLabel = opts.alwaysDrawDataLabel,
+          offsetCorrection = opts.offsetCorrection;
+
+      if (Array.isArray(w.config.dataLabels.enabledOnSeries)) {
+        if (w.config.dataLabels.enabledOnSeries.indexOf(i) > -1) {
+          return;
+        }
+      }
+
+      var correctedLabels = {
+        x: x,
+        y: y,
+        drawnextLabel: true
+      };
+
+      if (offsetCorrection) {
+        correctedLabels = this.dataLabelsCorrection(x, y, text, i, j, alwaysDrawDataLabel, parseInt(dataLabelsConfig.style.fontSize));
+      } // when zoomed, we don't need to correct labels offsets,
+      // but if normally, labels get cropped, correct them
+
+
+      if (!w.globals.zoomed) {
+        x = correctedLabels.x;
+        y = correctedLabels.y;
+      }
+
+      if (correctedLabels.drawnextLabel) {
+        var dataLabelText = graphics.drawText({
+          width: 100,
+          height: parseInt(dataLabelsConfig.style.fontSize),
+          x: x,
+          y: y,
+          foreColor: w.globals.dataLabels.style.colors[i],
+          textAnchor: textAnchor || dataLabelsConfig.textAnchor,
+          text: text,
+          fontSize: dataLabelsConfig.style.fontSize,
+          fontFamily: dataLabelsConfig.style.fontFamily
+        });
+        dataLabelText.attr({
+          class: 'apexcharts-datalabel',
+          cx: x,
+          cy: y
+        });
+
+        if (dataLabelsConfig.dropShadow.enabled) {
+          var textShadow = dataLabelsConfig.dropShadow;
+          var filters = new Filters(this.ctx);
+          filters.dropShadow(dataLabelText, textShadow);
+        }
+
+        parent.add(dataLabelText);
+
+        if (typeof w.globals.lastDrawnDataLabelsIndexes[i] === 'undefined') {
+          w.globals.lastDrawnDataLabelsIndexes[i] = [];
+        }
+
+        w.globals.lastDrawnDataLabelsIndexes[i].push(j);
+      }
+    }
+  }]);
+
+  return DataLabels;
+}();
+
+/**
+ * ApexCharts Bar Class responsible for drawing both Columns and Bars.
+ *
+ * @module Bar
+ **/
+
+var Bar =
+/*#__PURE__*/
+function () {
+  function Bar(ctx, xyRatios) {
+    _classCallCheck(this, Bar);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+    this.barOptions = w.config.plotOptions.bar;
+    this.isHorizontal = this.barOptions.horizontal;
+    this.strokeWidth = w.config.stroke.width;
+    this.isNullValue = false;
+    this.xyRatios = xyRatios;
+
+    if (this.xyRatios !== null) {
+      this.xRatio = xyRatios.xRatio;
+      this.yRatio = xyRatios.yRatio;
+      this.invertedXRatio = xyRatios.invertedXRatio;
+      this.invertedYRatio = xyRatios.invertedYRatio;
+      this.baseLineY = xyRatios.baseLineY;
+      this.baseLineInvertedY = xyRatios.baseLineInvertedY;
+    }
+
+    this.yaxisIndex = 0;
+    this.seriesLen = 0;
+  }
+  /** primary draw method which is called on bar object
+   * @memberof Bar
+   * @param {array} series - user supplied series values
+   * @param {int} seriesIndex - the index by which series will be drawn on the svg
+   * @return {node} element which is supplied to parent chart draw method for appending
+   **/
+
+
+  _createClass(Bar, [{
+    key: "draw",
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var coreUtils = new CoreUtils(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+      this.series = series;
+      this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+      this.initVariables(series);
+      var ret = graphics.group({
+        class: 'apexcharts-bar-series apexcharts-plot-series'
+      });
+
+      if (w.config.dataLabels.enabled) {
+        if (this.totalItems > w.config.plotOptions.bar.dataLabels.maxItems) {
+          console.warn('WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.');
+        }
+      }
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var x = void 0,
+            y = void 0,
+            xDivision = void 0,
+            // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+        yDivision = void 0,
+            // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+        zeroH = void 0,
+            // zeroH is the baseline where 0 meets y axis
+        zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+        var yArrj = []; // hold y values of current iterating series
+
+        var xArrj = []; // hold x values of current iterating series
+
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn
+
+        var elSeries = graphics.group({
+          class: "apexcharts-series",
+          rel: i + 1,
+          seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+          'data:realIndex': realIndex
+        });
+        this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex);
+
+        if (series[i].length > 0) {
+          this.visibleI = this.visibleI + 1;
+        }
+
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;
+        var initPositions = this.initialPositions();
+        y = initPositions.y;
+        barHeight = initPositions.barHeight;
+        yDivision = initPositions.yDivision;
+        zeroW = initPositions.zeroW;
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+
+        if (!this.horizontal) {
+          xArrj.push(x + barWidth / 2);
+        } // eldatalabels
+
+
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+
+        for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+          if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+            this.isNullValue = true;
+          } else {
+            this.isNullValue = false;
+          }
+
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var paths = null;
+
+          if (this.isHorizontal) {
+            paths = this.drawBarPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              barHeight: barHeight,
+              strokeWidth: strokeWidth,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              zeroW: zeroW,
+              x: x,
+              y: y,
+              yDivision: yDivision,
+              elSeries: elSeries
+            });
+            barWidth = this.series[i][j] / this.invertedYRatio;
+          } else {
+            paths = this.drawColumnPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              x: x,
+              y: y,
+              xDivision: xDivision,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              barWidth: barWidth,
+              zeroH: zeroH,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries
+            });
+            barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+          }
+
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x; // push current X
+
+          if (j > 0) {
+            xArrj.push(x + barWidth / 2);
+          }
+
+          yArrj.push(y);
+          var pathFill = this.getPathFillColor(series, i, j, realIndex);
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            visibleSeries: this.visibleI,
+            type: 'bar'
+          });
+        } // push all x val arrays into main xArr
+
+
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj;
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: "getPathFillColor",
+    value: function getPathFillColor(series, i, j, realIndex) {
+      var w = this.w;
+      var fill = new Fill(this.ctx);
+      var fillColor = null;
+      var seriesNumber = this.barOptions.distributed ? j : i;
+
+      if (this.barOptions.colors.ranges.length > 0) {
+        var colorRange = this.barOptions.colors.ranges;
+        colorRange.map(function (range) {
+          if (series[i][j] >= range.from && series[i][j] <= range.to) {
+            fillColor = range.color;
+          }
+        });
+      }
+
+      if (w.config.series[i].data[j] && w.config.series[i].data[j].fillColor) {
+        fillColor = w.config.series[i].data[j].fillColor;
+      }
+
+      var pathFill = fill.fillPath({
+        seriesNumber: this.barOptions.distributed ? seriesNumber : realIndex,
+        color: fillColor,
+        value: series[i][j]
+      });
+      return pathFill;
+    }
+  }, {
+    key: "renderSeries",
+    value: function renderSeries(_ref) {
+      var realIndex = _ref.realIndex,
+          pathFill = _ref.pathFill,
+          lineFill = _ref.lineFill,
+          j = _ref.j,
+          i = _ref.i,
+          pathFrom = _ref.pathFrom,
+          pathTo = _ref.pathTo,
+          strokeWidth = _ref.strokeWidth,
+          elSeries = _ref.elSeries,
+          x = _ref.x,
+          y = _ref.y,
+          series = _ref.series,
+          barHeight = _ref.barHeight,
+          barWidth = _ref.barWidth,
+          elDataLabelsWrap = _ref.elDataLabelsWrap,
+          visibleSeries = _ref.visibleSeries,
+          type = _ref.type;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+
+      if (!lineFill) {
+        /* fix apexcharts#341 */
+        lineFill = this.barOptions.distributed ? w.globals.stroke.colors[j] : w.globals.stroke.colors[realIndex];
+      }
+
+      if (w.config.series[i].data[j] && w.config.series[i].data[j].strokeColor) {
+        lineFill = w.config.series[i].data[j].strokeColor;
+      }
+
+      if (this.isNullValue) {
+        pathFill = 'none';
+      }
+
+      var delay = j / w.config.chart.animations.animateGradually.delay * (w.config.chart.animations.speed / w.globals.dataPoints) / 2.4;
+      var renderedPath = graphics.renderPaths({
+        i: i,
+        j: j,
+        realIndex: realIndex,
+        pathFrom: pathFrom,
+        pathTo: pathTo,
+        stroke: lineFill,
+        strokeWidth: strokeWidth,
+        strokeLineCap: w.config.stroke.lineCap,
+        fill: pathFill,
+        animationDelay: delay,
+        initialSpeed: w.config.chart.animations.speed,
+        dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+        className: "apexcharts-".concat(type, "-area"),
+        id: "apexcharts-".concat(type, "-area")
+      });
+      renderedPath.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")"));
+      var filters = new Filters(this.ctx);
+      filters.setSelectionFilter(renderedPath, realIndex, j);
+      elSeries.add(renderedPath);
+      var dataLabels = this.calculateDataLabelsPos({
+        x: x,
+        y: y,
+        i: i,
+        j: j,
+        series: series,
+        realIndex: realIndex,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        renderedPath: renderedPath,
+        visibleSeries: visibleSeries
+      });
+
+      if (dataLabels !== null) {
+        elDataLabelsWrap.add(dataLabels);
+      }
+
+      elSeries.add(elDataLabelsWrap);
+      return elSeries;
+    }
+  }, {
+    key: "initVariables",
+    value: function initVariables(series) {
+      var w = this.w;
+      this.series = series;
+      this.totalItems = 0;
+      this.seriesLen = 0;
+      this.visibleI = -1;
+      this.visibleItems = 1; // number of visible bars after user zoomed in/out
+
+      for (var sl = 0; sl < series.length; sl++) {
+        if (series[sl].length > 0) {
+          this.seriesLen = this.seriesLen + 1;
+          this.totalItems += series[sl].length;
+        }
+
+        if (w.globals.isXNumeric) {
+          // get max visible items
+          for (var j = 0; j < series[sl].length; j++) {
+            if (w.globals.seriesX[sl][j] > w.globals.minX && w.globals.seriesX[sl][j] < w.globals.maxX) {
+              this.visibleItems++;
+            }
+          }
+        } else {
+          this.visibleItems = w.globals.dataPoints;
+        }
+      }
+
+      if (this.seriesLen === 0) {
+        // A small adjustment when combo charts are used
+        this.seriesLen = 1;
+      }
+    }
+  }, {
+    key: "initialPositions",
+    value: function initialPositions() {
+      var w = this.w;
+      var x, y, yDivision, xDivision, barHeight, barWidth, zeroH, zeroW;
+
+      if (this.isHorizontal) {
+        // height divided into equal parts
+        yDivision = w.globals.gridHeight / w.globals.dataPoints;
+        barHeight = yDivision / this.seriesLen;
+
+        if (w.globals.isXNumeric) {
+          yDivision = w.globals.gridHeight / this.totalItems;
+          barHeight = yDivision / this.seriesLen;
+        }
+
+        barHeight = barHeight * parseInt(this.barOptions.barHeight) / 100;
+        zeroW = this.baseLineInvertedY + w.globals.padHorizontal + (this.isReversed ? w.globals.gridWidth : 0) - (this.isReversed ? this.baseLineInvertedY * 2 : 0);
+        y = (yDivision - barHeight * this.seriesLen) / 2;
+      } else {
+        // width divided into equal parts
+        xDivision = w.globals.gridWidth / this.visibleItems;
+        barWidth = xDivision / this.seriesLen * parseInt(this.barOptions.columnWidth) / 100;
+
+        if (w.globals.isXNumeric) {
+          // max barwidth should be equal to minXDiff to avoid overlap
+          xDivision = w.globals.minXDiff / this.xRatio;
+          barWidth = xDivision / this.seriesLen * parseInt(this.barOptions.columnWidth) / 100;
+        }
+
+        zeroH = w.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0);
+        x = w.globals.padHorizontal + (xDivision - barWidth * this.seriesLen) / 2;
+      }
+
+      return {
+        x: x,
+        y: y,
+        yDivision: yDivision,
+        xDivision: xDivision,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        zeroH: zeroH,
+        zeroW: zeroW
+      };
+    }
+  }, {
+    key: "drawBarPaths",
+    value: function drawBarPaths(_ref2) {
+      var indexes = _ref2.indexes,
+          barHeight = _ref2.barHeight,
+          strokeWidth = _ref2.strokeWidth,
+          pathTo = _ref2.pathTo,
+          pathFrom = _ref2.pathFrom,
+          zeroW = _ref2.zeroW,
+          x = _ref2.x,
+          y = _ref2.y,
+          yDivision = _ref2.yDivision,
+          elSeries = _ref2.elSeries;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+
+      if (w.globals.isXNumeric) {
+        y = (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - barHeight;
+      }
+
+      var barYPosition = y + barHeight * this.visibleI;
+      pathTo = graphics.move(zeroW, barYPosition);
+      pathFrom = graphics.move(zeroW, barYPosition);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j);
+      }
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        x = zeroW;
+      } else {
+        x = zeroW + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2;
+      }
+
+      var endingShapeOpts = {
+        barHeight: barHeight,
+        strokeWidth: strokeWidth,
+        barYPosition: barYPosition,
+        x: x,
+        zeroW: zeroW
+      };
+      var endingShape = this.barEndingShape(w, endingShapeOpts, this.series, i, j);
+      pathTo = pathTo + graphics.line(endingShape.newX, barYPosition) + endingShape.path + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition);
+      pathFrom = pathFrom + graphics.line(zeroW, barYPosition) + endingShape.ending_p_from + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition);
+
+      if (!w.globals.isXNumeric) {
+        y = y + yDivision;
+      }
+
+      if (this.barOptions.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= this.barOptions.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+
+        var bcolor = this.barOptions.colors.backgroundBarColors[bc];
+        var rect = graphics.drawRect(0, barYPosition - barHeight * this.visibleI, w.globals.gridWidth, barHeight * this.seriesLen, 0, bcolor, this.barOptions.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y,
+        barYPosition: barYPosition
+      };
+    }
+  }, {
+    key: "drawColumnPaths",
+    value: function drawColumnPaths(_ref3) {
+      var indexes = _ref3.indexes,
+          x = _ref3.x,
+          y = _ref3.y,
+          xDivision = _ref3.xDivision,
+          pathTo = _ref3.pathTo,
+          pathFrom = _ref3.pathFrom,
+          barWidth = _ref3.barWidth,
+          zeroH = _ref3.zeroH,
+          strokeWidth = _ref3.strokeWidth,
+          elSeries = _ref3.elSeries;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+
+      if (w.globals.isXNumeric) {
+        x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x + barWidth * this.visibleI;
+      pathTo = graphics.move(barXPosition, zeroH);
+      pathFrom = graphics.move(barXPosition, zeroH);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j);
+      }
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        y = zeroH;
+      } else {
+        y = zeroH - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2;
+      }
+
+      var endingShapeOpts = {
+        barWidth: barWidth,
+        strokeWidth: strokeWidth,
+        barXPosition: barXPosition,
+        y: y,
+        zeroH: zeroH
+      };
+      var endingShape = this.barEndingShape(w, endingShapeOpts, this.series, i, j);
+      pathTo = pathTo + graphics.line(barXPosition, endingShape.newY) + endingShape.path + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition - strokeWidth / 2, zeroH);
+      pathFrom = pathFrom + graphics.line(barXPosition, zeroH) + endingShape.ending_p_from + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition - strokeWidth / 2, zeroH);
+
+      if (!w.globals.isXNumeric) {
+        x = x + xDivision;
+      }
+
+      if (this.barOptions.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= this.barOptions.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+
+        var bcolor = this.barOptions.colors.backgroundBarColors[bc];
+        var rect = graphics.drawRect(barXPosition - barWidth * this.visibleI, 0, barWidth * this.seriesLen, w.globals.gridHeight, 0, bcolor, this.barOptions.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y,
+        barXPosition: barXPosition
+      };
+    }
+    /** getPathFrom is a common function for bars/columns which is used to get previous paths when data changes.
+     * @memberof Bar
+     * @param {int} realIndex - current iterating i
+     * @param {int} j - current iterating series's j index
+     * @return {string} pathFrom is the string which will be appended in animations
+     **/
+
+  }, {
+    key: "getPathFrom",
+    value: function getPathFrom(realIndex, j) {
+      var w = this.w;
+      var pathFrom;
+
+      for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+        var gpp = w.globals.previousPaths[pp];
+
+        if (gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+          if (typeof w.globals.previousPaths[pp].paths[j] !== 'undefined') {
+            pathFrom = w.globals.previousPaths[pp].paths[j].d;
+          }
+        }
+      }
+
+      return pathFrom;
+    }
+    /** calculateBarDataLabels is used to calculate the positions for the data-labels
+     * It also sets the element's data attr for bars and calls drawCalculatedBarDataLabels()
+     * @memberof Bar
+     * @param {object} {barProps} most of the bar properties used throughout the bar
+     * drawing function
+     * @return {object} dataLabels node-element which you can append later
+     **/
+
+  }, {
+    key: "calculateDataLabelsPos",
+    value: function calculateDataLabelsPos(_ref4) {
+      var x = _ref4.x,
+          y = _ref4.y,
+          i = _ref4.i,
+          j = _ref4.j,
+          realIndex = _ref4.realIndex,
+          series = _ref4.series,
+          barHeight = _ref4.barHeight,
+          barWidth = _ref4.barWidth,
+          visibleSeries = _ref4.visibleSeries,
+          renderedPath = _ref4.renderedPath;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+      var bcx = x + parseFloat(barWidth * visibleSeries);
+      var bcy = y + parseFloat(barHeight * visibleSeries);
+
+      if (w.globals.isXNumeric && !w.globals.isBarHorizontal) {
+        bcx = x + parseFloat(barWidth * (visibleSeries + 1)) - strokeWidth;
+        bcy = y + parseFloat(barHeight * (visibleSeries + 1)) - strokeWidth;
+      }
+
+      var dataLabels = null;
+      var dataLabelsX = x;
+      var dataLabelsY = y;
+      var dataLabelsPos = {};
+      var dataLabelsConfig = w.config.dataLabels;
+      var barDataLabelsConfig = this.barOptions.dataLabels;
+      var offX = dataLabelsConfig.offsetX;
+      var offY = dataLabelsConfig.offsetY;
+      var textRects = {
+        width: 0,
+        height: 0
+      };
+
+      if (w.config.dataLabels.enabled) {
+        textRects = graphics.getTextRects(w.globals.yLabelFormatters[0](w.globals.maxY), parseInt(dataLabelsConfig.style.fontSize));
+      }
+
+      if (this.isHorizontal) {
+        dataLabelsPos = this.calculateBarsDataLabelsPosition({
+          x: x,
+          y: y,
+          i: i,
+          j: j,
+          renderedPath: renderedPath,
+          bcy: bcy,
+          barHeight: barHeight,
+          barWidth: barWidth,
+          textRects: textRects,
+          strokeWidth: strokeWidth,
+          dataLabelsX: dataLabelsX,
+          dataLabelsY: dataLabelsY,
+          barDataLabelsConfig: barDataLabelsConfig,
+          offX: offX,
+          offY: offY
+        });
+      } else {
+        dataLabelsPos = this.calculateColumnsDataLabelsPosition({
+          x: x,
+          y: y,
+          i: i,
+          j: j,
+          renderedPath: renderedPath,
+          realIndex: realIndex,
+          bcx: bcx,
+          bcy: bcy,
+          barHeight: barHeight,
+          barWidth: barWidth,
+          textRects: textRects,
+          strokeWidth: strokeWidth,
+          dataLabelsY: dataLabelsY,
+          barDataLabelsConfig: barDataLabelsConfig,
+          offX: offX,
+          offY: offY
+        });
+      }
+
+      renderedPath.attr({
+        cy: dataLabelsPos.bcy,
+        cx: dataLabelsPos.bcx,
+        j: j,
+        val: series[i][j],
+        barHeight: barHeight,
+        barWidth: barWidth
+      });
+      dataLabels = this.drawCalculatedDataLabels({
+        x: dataLabelsPos.dataLabelsX,
+        y: dataLabelsPos.dataLabelsY,
+        val: series[i][j],
+        i: realIndex,
+        j: j,
+        barWidth: barWidth,
+        barHeight: barHeight,
+        textRects: textRects,
+        dataLabelsConfig: dataLabelsConfig
+      });
+      return dataLabels;
+    }
+  }, {
+    key: "calculateColumnsDataLabelsPosition",
+    value: function calculateColumnsDataLabelsPosition(opts) {
+      var w = this.w;
+      var i = opts.i,
+          j = opts.j,
+          y = opts.y,
+          bcx = opts.bcx,
+          barWidth = opts.barWidth,
+          barHeight = opts.barHeight,
+          textRects = opts.textRects,
+          dataLabelsY = opts.dataLabelsY,
+          barDataLabelsConfig = opts.barDataLabelsConfig,
+          strokeWidth = opts.strokeWidth,
+          offX = opts.offX,
+          offY = opts.offY;
+      var dataLabelsX;
+      var dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints;
+      bcx = bcx - strokeWidth / 2;
+
+      if (w.globals.isXNumeric) {
+        dataLabelsX = bcx - barWidth / 2 + offX;
+      } else {
+        dataLabelsX = bcx - dataPointsDividedWidth + barWidth / 2 + offX;
+      }
+
+      var valIsNegative = this.series[i][j] <= 0;
+
+      if (this.isReversed) {
+        y = y - barHeight;
+      }
+
+      switch (barDataLabelsConfig.position) {
+        case 'center':
+          if (valIsNegative) {
+            dataLabelsY = y + barHeight / 2 + textRects.height / 2 + offY;
+          } else {
+            dataLabelsY = y + barHeight / 2 + textRects.height / 2 - offY;
+          }
+
+          break;
+
+        case 'bottom':
+          if (valIsNegative) {
+            dataLabelsY = y + barHeight + textRects.height + strokeWidth + offY;
+          } else {
+            dataLabelsY = y + barHeight - textRects.height / 2 + strokeWidth - offY;
+          }
+
+          break;
+
+        case 'top':
+          if (valIsNegative) {
+            dataLabelsY = y - textRects.height / 2 - offY;
+          } else {
+            dataLabelsY = y + textRects.height + offY;
+          }
+
+          break;
+      }
+
+      if (!w.config.chart.stacked) {
+        if (dataLabelsY < 0) {
+          dataLabelsY = 0 + strokeWidth;
+        } else if (dataLabelsY + textRects.height / 3 > w.globals.gridHeight) {
+          dataLabelsY = w.globals.gridHeight - strokeWidth;
+        }
+      }
+
+      return {
+        bcx: bcx,
+        bcy: y,
+        dataLabelsX: dataLabelsX,
+        dataLabelsY: dataLabelsY
+      };
+    }
+  }, {
+    key: "calculateBarsDataLabelsPosition",
+    value: function calculateBarsDataLabelsPosition(opts) {
+      var w = this.w;
+      var x = opts.x,
+          i = opts.i,
+          j = opts.j,
+          bcy = opts.bcy,
+          barHeight = opts.barHeight,
+          barWidth = opts.barWidth,
+          textRects = opts.textRects,
+          dataLabelsX = opts.dataLabelsX,
+          strokeWidth = opts.strokeWidth,
+          barDataLabelsConfig = opts.barDataLabelsConfig,
+          offX = opts.offX,
+          offY = opts.offY;
+      var dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints;
+      var dataLabelsY = bcy - dataPointsDividedHeight + barHeight / 2 + textRects.height / 2 + offY - 3;
+      var valIsNegative = this.series[i][j] <= 0;
+
+      if (this.isReversed) {
+        x = x + barWidth;
+      }
+
+      switch (barDataLabelsConfig.position) {
+        case 'center':
+          if (valIsNegative) {
+            dataLabelsX = x - barWidth / 2 - offX;
+          } else {
+            dataLabelsX = x - barWidth / 2 + offX;
+          }
+
+          break;
+
+        case 'bottom':
+          if (valIsNegative) {
+            dataLabelsX = x - barWidth - strokeWidth - Math.round(textRects.width / 2) - offX;
+          } else {
+            dataLabelsX = x - barWidth + strokeWidth + Math.round(textRects.width / 2) + offX;
+          }
+
+          break;
+
+        case 'top':
+          if (valIsNegative) {
+            dataLabelsX = x - strokeWidth + Math.round(textRects.width / 2) - offX;
+          } else {
+            dataLabelsX = x - strokeWidth - Math.round(textRects.width / 2) + offX;
+          }
+
+          break;
+      }
+
+      if (!w.config.chart.stacked) {
+        if (dataLabelsX < 0) {
+          dataLabelsX = dataLabelsX + textRects.width + strokeWidth;
+        } else if (dataLabelsX + textRects.width / 2 > w.globals.gridWidth) {
+          dataLabelsX = w.globals.gridWidth - textRects.width - strokeWidth;
+        }
+      }
+
+      return {
+        bcx: x,
+        bcy: bcy,
+        dataLabelsX: dataLabelsX,
+        dataLabelsY: dataLabelsY
+      };
+    }
+  }, {
+    key: "drawCalculatedDataLabels",
+    value: function drawCalculatedDataLabels(_ref5) {
+      var x = _ref5.x,
+          y = _ref5.y,
+          val = _ref5.val,
+          i = _ref5.i,
+          j = _ref5.j,
+          textRects = _ref5.textRects,
+          barHeight = _ref5.barHeight,
+          barWidth = _ref5.barWidth,
+          dataLabelsConfig = _ref5.dataLabelsConfig;
+      var w = this.w;
+      var dataLabels = new DataLabels(this.ctx);
+      var graphics = new Graphics(this.ctx);
+      var formatter = dataLabelsConfig.formatter;
+      var elDataLabelsWrap = null;
+      var isSeriesNotCollapsed = w.globals.collapsedSeriesIndices.indexOf(i) > -1;
+
+      if (dataLabelsConfig.enabled && !isSeriesNotCollapsed) {
+        elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-data-labels'
+        });
+        var text = '';
+
+        if (typeof val !== 'undefined' && val !== null) {
+          text = formatter(val, {
+            seriesIndex: i,
+            dataPointIndex: j,
+            w: w
+          });
+        }
+
+        if (val === 0 && w.config.chart.stacked) {
+          // in a stacked bar/column chart, 0 value should be neglected as it will overlap on the next element
+          text = '';
+        }
+
+        if (w.config.chart.stacked && this.barOptions.dataLabels.hideOverflowingLabels) {
+          // if there is not enough space to draw the label in the bar/column rect, check hideOverflowingLabels property to prevent overflowing on wrong rect
+          // Note: This issue is only seen in stacked charts
+          if (this.isHorizontal) {
+            barWidth = this.series[i][j] / this.yRatio[this.yaxisIndex];
+
+            if (textRects.width / 1.6 > barWidth) {
+              text = '';
+            }
+          } else {
+            barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+
+            if (textRects.height / 1.6 > barHeight) {
+              text = '';
+            }
+          }
+        }
+
+        dataLabels.plotDataLabelsText({
+          x: x,
+          y: y,
+          text: text,
+          i: i,
+          j: j,
+          parent: elDataLabelsWrap,
+          dataLabelsConfig: dataLabelsConfig,
+          alwaysDrawDataLabel: true,
+          offsetCorrection: true
+        });
+      }
+
+      return elDataLabelsWrap;
+    }
+    /** barEndingShape draws the various shapes on top of bars/columns
+     * @memberof Bar
+     * @param {object} w - chart context
+     * @param {object} opts - consists several properties like barHeight/barWidth
+     * @param {array} series - global primary series
+     * @param {int} i - current iterating series's index
+     * @param {int} j - series's j of i
+     * @return {object} path - ending shape whether round/arrow
+     *         ending_p_from - similar to pathFrom
+     *         newY - which is calculated from existing y and new shape's top
+     **/
+
+  }, {
+    key: "barEndingShape",
+    value: function barEndingShape(w, opts, series, i, j) {
+      var graphics = new Graphics(this.ctx);
+
+      if (this.isHorizontal) {
+        var endingShape = null;
+        var endingShapeFrom = '';
+        var x = opts.x;
+
+        if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) {
+          var inverse = series[i][j] < 0;
+          var eX = opts.barHeight / 2 - opts.strokeWidth;
+          if (inverse) eX = -opts.barHeight / 2 - opts.strokeWidth;
+
+          if (!w.config.chart.stacked) {
+            if (this.barOptions.endingShape === 'rounded') {
+              x = opts.x - eX / 2;
+            }
+          }
+
+          switch (this.barOptions.endingShape) {
+            case 'flat':
+              endingShape = graphics.line(x, opts.barYPosition + opts.barHeight - opts.strokeWidth);
+              break;
+
+            case 'rounded':
+              endingShape = graphics.quadraticCurve(x + eX, opts.barYPosition + (opts.barHeight - opts.strokeWidth) / 2, x, opts.barYPosition + opts.barHeight - opts.strokeWidth);
+              break;
+          }
+        }
+
+        return {
+          path: endingShape,
+          ending_p_from: endingShapeFrom,
+          newX: x
+        };
+      } else {
+        var _endingShape = null;
+        var _endingShapeFrom = '';
+        var y = opts.y;
+
+        if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) {
+          var _inverse = series[i][j] < 0;
+
+          var eY = opts.barWidth / 2 - opts.strokeWidth;
+          if (_inverse) eY = -opts.barWidth / 2 - opts.strokeWidth;
+
+          if (!w.config.chart.stacked) {
+            // the shape exceeds the chart height, hence reduce y
+            if (this.barOptions.endingShape === 'rounded') {
+              y = y + eY / 2;
+            }
+          }
+
+          switch (this.barOptions.endingShape) {
+            case 'flat':
+              _endingShape = graphics.line(opts.barXPosition + opts.barWidth - opts.strokeWidth, y);
+              break;
+
+            case 'rounded':
+              _endingShape = graphics.quadraticCurve(opts.barXPosition + (opts.barWidth - opts.strokeWidth) / 2, y - eY, opts.barXPosition + opts.barWidth - opts.strokeWidth, y);
+              break;
+          }
+        }
+
+        return {
+          path: _endingShape,
+          ending_p_from: _endingShapeFrom,
+          newY: y
+        };
+      }
+    }
+  }]);
+
+  return Bar;
+}();
+
+/**
+ * ApexCharts BarStacked Class responsible for drawing both Stacked Columns and Bars.
+ *
+ * @module BarStacked
+ * The whole calculation for stacked bar/column is different from normal bar/column,
+ * hence it makes sense to derive a new class for it extending most of the props of Parent Bar
+ **/
+
+var BarStacked =
+/*#__PURE__*/
+function (_Bar) {
+  _inherits(BarStacked, _Bar);
+
+  function BarStacked() {
+    _classCallCheck(this, BarStacked);
+
+    return _possibleConstructorReturn(this, _getPrototypeOf(BarStacked).apply(this, arguments));
+  }
+
+  _createClass(BarStacked, [{
+    key: "draw",
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      this.graphics = new Graphics(this.ctx);
+      this.fill = new Fill(this.ctx);
+      this.bar = new Bar(this.ctx, this.xyRatios);
+      var coreUtils = new CoreUtils(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+      this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+      this.initVariables(series);
+
+      if (w.config.chart.stackType === '100%') {
+        series = w.globals.seriesPercent.slice();
+      }
+
+      this.series = series;
+      this.totalItems = 0;
+      this.prevY = []; // y position on chart
+
+      this.prevX = []; // x position on chart
+
+      this.prevYF = []; // y position including shapes on chart
+
+      this.prevXF = []; // x position including shapes on chart
+
+      this.prevYVal = []; // y values (series[i][j]) in columns
+
+      this.prevXVal = []; // x values (series[i][j]) in bars
+
+      this.xArrj = []; // xj indicates x position on graph in bars
+
+      this.xArrjF = []; // xjF indicates bar's x position + endingshape's positions in bars
+
+      this.xArrjVal = []; // x val means the actual series's y values in horizontal/bars
+
+      this.yArrj = []; // yj indicates y position on graph in columns
+
+      this.yArrjF = []; // yjF indicates bar's y position + endingshape's positions in columns
+
+      this.yArrjVal = []; // y val means the actual series's y values in columns
+
+      for (var sl = 0; sl < series.length; sl++) {
+        if (series[sl].length > 0) {
+          this.totalItems += series[sl].length;
+        }
+      }
+
+      var ret = this.graphics.group({
+        class: 'apexcharts-bar-series apexcharts-plot-series'
+      });
+      var x = 0;
+      var y = 0;
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var xDivision = void 0; // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+
+        var yDivision = void 0; // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+
+        var zeroH = void 0; // zeroH is the baseline where 0 meets y axis
+
+        var zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+        var xArrValues = [];
+        var yArrValues = [];
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed; // el to which series will be drawn
+
+        var elSeries = this.graphics.group({
+          class: "apexcharts-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+          rel: i + 1,
+          'data:realIndex': realIndex
+        }); // eldatalabels
+
+        var elDataLabelsWrap = this.graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+        var initPositions = this.initialPositions(x, y, xDivision, yDivision, zeroH, zeroW);
+        y = initPositions.y;
+        barHeight = initPositions.barHeight;
+        yDivision = initPositions.yDivision;
+        zeroW = initPositions.zeroW;
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+        this.yArrj = [];
+        this.yArrjF = [];
+        this.yArrjVal = [];
+        this.xArrj = [];
+        this.xArrjF = [];
+        this.xArrjVal = []; // if (!this.horizontal) {
+        // this.xArrj.push(x + barWidth / 2)
+        // }
+
+        for (var j = 0; j < w.globals.dataPoints; j++) {
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var paths = null;
+
+          if (this.isHorizontal) {
+            paths = this.drawBarPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              barHeight: barHeight,
+              strokeWidth: strokeWidth,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              zeroW: zeroW,
+              x: x,
+              y: y,
+              yDivision: yDivision,
+              elSeries: elSeries
+            });
+            barWidth = this.series[i][j] / this.invertedYRatio;
+          } else {
+            paths = this.drawColumnPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              x: x,
+              y: y,
+              xDivision: xDivision,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              barWidth: barWidth,
+              zeroH: zeroH,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries
+            });
+            barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+          }
+
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x;
+          xArrValues.push(x);
+          yArrValues.push(y);
+          var pathFill = this.bar.getPathFillColor(series, i, j, realIndex);
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            type: 'bar',
+            visibleSeries: 0
+          });
+        } // push all x val arrays into main xArr
+
+
+        w.globals.seriesXvalues[realIndex] = xArrValues;
+        w.globals.seriesYvalues[realIndex] = yArrValues; // push all current y values array to main PrevY Array
+
+        this.prevY.push(this.yArrj);
+        this.prevYF.push(this.yArrjF);
+        this.prevYVal.push(this.yArrjVal);
+        this.prevX.push(this.xArrj);
+        this.prevXF.push(this.xArrjF);
+        this.prevXVal.push(this.xArrjVal);
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: "initialPositions",
+    value: function initialPositions(x, y, xDivision, yDivision, zeroH, zeroW) {
+      var w = this.w;
+      var barHeight, barWidth;
+
+      if (this.isHorizontal) {
+        // height divided into equal parts
+        yDivision = w.globals.gridHeight / w.globals.dataPoints;
+        barHeight = yDivision;
+        barHeight = barHeight * parseInt(w.config.plotOptions.bar.barHeight) / 100;
+        zeroW = this.baseLineInvertedY + w.globals.padHorizontal + (this.isReversed ? w.globals.gridWidth : 0) - (this.isReversed ? this.baseLineInvertedY * 2 : 0); // initial y position is half of barHeight * half of number of Bars
+
+        y = (yDivision - barHeight) / 2;
+      } else {
+        // width divided into equal parts
+        xDivision = w.globals.gridWidth / w.globals.dataPoints;
+        barWidth = xDivision;
+
+        if (w.globals.isXNumeric) {
+          xDivision = w.globals.minXDiff / this.xRatio;
+          barWidth = xDivision * parseInt(this.barOptions.columnWidth) / 100;
+        } else {
+          barWidth = barWidth * parseInt(w.config.plotOptions.bar.columnWidth) / 100;
+        }
+
+        zeroH = this.baseLineY[this.yaxisIndex] + (this.isReversed ? w.globals.gridHeight : 0) - (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0); // initial x position is one third of barWidth
+
+        x = w.globals.padHorizontal + (xDivision - barWidth) / 2;
+      }
+
+      return {
+        x: x,
+        y: y,
+        yDivision: yDivision,
+        xDivision: xDivision,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        zeroH: zeroH,
+        zeroW: zeroW
+      };
+    }
+  }, {
+    key: "drawBarPaths",
+    value: function drawBarPaths(_ref) {
+      var indexes = _ref.indexes,
+          barHeight = _ref.barHeight,
+          strokeWidth = _ref.strokeWidth,
+          pathTo = _ref.pathTo,
+          pathFrom = _ref.pathFrom,
+          zeroW = _ref.zeroW,
+          x = _ref.x,
+          y = _ref.y,
+          yDivision = _ref.yDivision,
+          elSeries = _ref.elSeries;
+      var w = this.w;
+      var barYPosition = y;
+      var barXPosition;
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+      var prevBarW = 0;
+
+      for (var k = 0; k < this.prevXF.length; k++) {
+        prevBarW = prevBarW + this.prevXF[k][j];
+      }
+
+      if (i > 0) {
+        var bXP = zeroW;
+
+        if (this.prevXVal[i - 1][j] < 0) {
+          if (this.series[i][j] >= 0) {
+            bXP = this.prevX[i - 1][j] + prevBarW - (this.isReversed ? prevBarW : 0) * 2;
+          } else {
+            bXP = this.prevX[i - 1][j];
+          }
+        } else if (this.prevXVal[i - 1][j] >= 0) {
+          if (this.series[i][j] >= 0) {
+            bXP = this.prevX[i - 1][j];
+          } else {
+            bXP = this.prevX[i - 1][j] - prevBarW + (this.isReversed ? prevBarW : 0) * 2;
+          }
+        }
+
+        barXPosition = bXP;
+      } else {
+        // the first series will not have prevX values
+        barXPosition = zeroW;
+      }
+
+      if (this.series[i][j] === null) {
+        x = barXPosition;
+      } else {
+        x = barXPosition + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2;
+      }
+
+      var endingShapeOpts = {
+        barHeight: barHeight,
+        strokeWidth: strokeWidth,
+        invertedYRatio: this.invertedYRatio,
+        barYPosition: barYPosition,
+        x: x
+      };
+      var endingShape = this.bar.barEndingShape(w, endingShapeOpts, this.series, i, j);
+
+      if (this.series.length > 1 && i !== this.endingShapeOnSeriesNumber) {
+        // revert back to flat shape if not last series
+        endingShape.path = this.graphics.line(endingShape.newX, barYPosition + barHeight - strokeWidth);
+      }
+
+      this.xArrj.push(endingShape.newX);
+      this.xArrjF.push(Math.abs(barXPosition - endingShape.newX));
+      this.xArrjVal.push(this.series[i][j]);
+      pathTo = this.graphics.move(barXPosition, barYPosition);
+      pathFrom = this.graphics.move(barXPosition, barYPosition);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.bar.getPathFrom(realIndex, j, false);
+      }
+
+      pathTo = pathTo + this.graphics.line(endingShape.newX, barYPosition) + endingShape.path + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition);
+      pathFrom = pathFrom + this.graphics.line(barXPosition, barYPosition) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition);
+
+      if (w.config.plotOptions.bar.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= w.config.plotOptions.bar.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+
+        var bcolor = w.config.plotOptions.bar.colors.backgroundBarColors[bc];
+        var rect = this.graphics.drawRect(0, barYPosition, w.globals.gridWidth, barHeight, 0, bcolor, w.config.plotOptions.bar.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+
+      y = y + yDivision;
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "drawColumnPaths",
+    value: function drawColumnPaths(_ref2) {
+      var indexes = _ref2.indexes,
+          x = _ref2.x,
+          y = _ref2.y,
+          xDivision = _ref2.xDivision,
+          pathTo = _ref2.pathTo,
+          pathFrom = _ref2.pathFrom,
+          barWidth = _ref2.barWidth,
+          zeroH = _ref2.zeroH,
+          strokeWidth = _ref2.strokeWidth,
+          elSeries = _ref2.elSeries;
+      var w = this.w;
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var bc = indexes.bc;
+
+      if (w.globals.isXNumeric) {
+        var seriesVal = w.globals.seriesX[i][j];
+        if (!seriesVal) seriesVal = 0;
+        x = (seriesVal - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x;
+      var barYPosition;
+      var prevBarH = 0;
+
+      for (var k = 0; k < this.prevYF.length; k++) {
+        prevBarH = prevBarH + this.prevYF[k][j];
+      }
+
+      if (i > 0 && !w.globals.isXNumeric || i > 0 && w.globals.isXNumeric && w.globals.seriesX[i - 1][j] === w.globals.seriesX[i][j]) {
+        var bYP;
+        var prevYValue = this.prevY[i - 1][j];
+
+        if (this.prevYVal[i - 1][j] < 0) {
+          if (this.series[i][j] >= 0) {
+            bYP = prevYValue - prevBarH + (this.isReversed ? prevBarH : 0) * 2;
+          } else {
+            bYP = prevYValue;
+          }
+        } else {
+          if (this.series[i][j] >= 0) {
+            bYP = prevYValue;
+          } else {
+            bYP = prevYValue + prevBarH - (this.isReversed ? prevBarH : 0) * 2;
+          }
+        }
+
+        barYPosition = bYP;
+      } else {
+        // the first series will not have prevY values, also if the prev index's series X doesn't matches the current index's series X, then start from zero
+        barYPosition = w.globals.gridHeight - zeroH;
+      }
+
+      y = barYPosition - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2;
+      var endingShapeOpts = {
+        barWidth: barWidth,
+        strokeWidth: strokeWidth,
+        yRatio: this.yRatio[this.yaxisIndex],
+        barXPosition: barXPosition,
+        y: y
+      };
+      var endingShape = this.bar.barEndingShape(w, endingShapeOpts, this.series, i, j);
+      this.yArrj.push(endingShape.newY);
+      this.yArrjF.push(Math.abs(barYPosition - endingShape.newY));
+      this.yArrjVal.push(this.series[i][j]);
+      pathTo = this.graphics.move(barXPosition, barYPosition);
+      pathFrom = this.graphics.move(barXPosition, barYPosition);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.bar.getPathFrom(realIndex, j, false);
+      }
+
+      pathTo = pathTo + this.graphics.line(barXPosition, endingShape.newY) + endingShape.path + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition - strokeWidth / 2, barYPosition);
+      pathFrom = pathFrom + this.graphics.line(barXPosition, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition - strokeWidth / 2, barYPosition);
+
+      if (w.config.plotOptions.bar.colors.backgroundBarColors.length > 0 && i === 0) {
+        if (bc >= w.config.plotOptions.bar.colors.backgroundBarColors.length) {
+          bc = 0;
+        }
+
+        var bcolor = w.config.plotOptions.bar.colors.backgroundBarColors[bc];
+        var rect = this.graphics.drawRect(barXPosition, 0, barWidth, w.globals.gridHeight, 0, bcolor, w.config.plotOptions.bar.colors.backgroundBarOpacity);
+        elSeries.add(rect);
+        rect.node.classList.add('apexcharts-backgroundBar');
+      }
+
+      x = x + xDivision;
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: w.globals.isXNumeric ? x - xDivision : x,
+        y: y
+      };
+    }
+    /*
+     * When user clicks on legends, the collapsed series will be filled with [0,0,0,...,0]
+     * We need to make sure, that the last series is not [0,0,0,...,0]
+     * as we need to draw shapes on the last series (for stacked bars/columns only)
+     * Hence, we are collecting all inner arrays in series which has [0,0,0...,0]
+     **/
+
+  }, {
+    key: "checkZeroSeries",
+    value: function checkZeroSeries(_ref3) {
+      var series = _ref3.series;
+      var w = this.w;
+
+      for (var zs = 0; zs < series.length; zs++) {
+        var total = 0;
+
+        for (var zsj = 0; zsj < series[w.globals.maxValsInArrayIndex].length; zsj++) {
+          total += series[zs][zsj];
+        }
+
+        if (total === 0) {
+          this.zeroSerieses.push(zs);
+        }
+      } // After getting all zeroserieses, we need to ensure whether endingshapeonSeries is not in that zeroseries array
+
+
+      for (var s = series.length - 1; s >= 0; s--) {
+        if (this.zeroSerieses.indexOf(s) > -1 && s === this.endingShapeOnSeriesNumber) {
+          this.endingShapeOnSeriesNumber -= 1;
+        }
+      }
+    }
+  }]);
+
+  return BarStacked;
+}(Bar);
+
+/**
+ * ApexCharts CandleStick Class responsible for drawing both Stacked Columns and Bars.
+ *
+ * @module CandleStick
+ **/
+
+var CandleStick =
+/*#__PURE__*/
+function (_Bar) {
+  _inherits(CandleStick, _Bar);
+
+  function CandleStick() {
+    _classCallCheck(this, CandleStick);
+
+    return _possibleConstructorReturn(this, _getPrototypeOf(CandleStick).apply(this, arguments));
+  }
+
+  _createClass(CandleStick, [{
+    key: "draw",
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var fill = new Fill(this.ctx);
+      this.candlestickOptions = this.w.config.plotOptions.candlestick;
+      var coreUtils = new CoreUtils(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+      this.series = series;
+      this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+      this.initVariables(series);
+      var ret = graphics.group({
+        class: 'apexcharts-candlestick-series apexcharts-plot-series'
+      });
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var x = void 0,
+            y = void 0,
+            xDivision = void 0,
+            // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+        zeroH = void 0; // zeroH is the baseline where 0 meets y axis
+
+        var yArrj = []; // hold y values of current iterating series
+
+        var xArrj = []; // hold x values of current iterating series
+
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn
+
+        var elSeries = graphics.group({
+          class: "apexcharts-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+          rel: i + 1,
+          'data:realIndex': realIndex
+        });
+
+        if (series[i].length > 0) {
+          this.visibleI = this.visibleI + 1;
+        }
+
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        var initPositions = this.initialPositions();
+        y = initPositions.y;
+        barHeight = initPositions.barHeight;
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+        xArrj.push(x + barWidth / 2); // eldatalabels
+
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+
+        for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+          if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+            this.isNullValue = true;
+          } else {
+            this.isNullValue = false;
+          }
+
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var color = void 0;
+          var paths = this.drawCandleStickPaths({
+            indexes: {
+              i: i,
+              j: j,
+              realIndex: realIndex,
+              bc: bc
+            },
+            x: x,
+            y: y,
+            xDivision: xDivision,
+            pathTo: pathTo,
+            pathFrom: pathFrom,
+            barWidth: barWidth,
+            zeroH: zeroH,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries
+          });
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x;
+          color = paths.color; // push current X
+
+          if (j > 0) {
+            xArrj.push(x + barWidth / 2);
+          }
+
+          yArrj.push(y);
+          var pathFill = fill.fillPath({
+            seriesNumber: realIndex,
+            color: color,
+            value: series[i][j]
+          });
+          var lineFill = this.candlestickOptions.wick.useFillColor ? color : undefined;
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            lineFill: lineFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            visibleSeries: this.visibleI,
+            type: 'candlestick'
+          });
+        } // push all x val arrays into main xArr
+
+
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj;
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: "drawCandleStickPaths",
+    value: function drawCandleStickPaths(_ref) {
+      var indexes = _ref.indexes,
+          x = _ref.x,
+          y = _ref.y,
+          xDivision = _ref.xDivision,
+          pathTo = _ref.pathTo,
+          pathFrom = _ref.pathFrom,
+          barWidth = _ref.barWidth,
+          zeroH = _ref.zeroH,
+          strokeWidth = _ref.strokeWidth;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var i = indexes.i;
+      var j = indexes.j;
+      var isPositive = true;
+      var colorPos = w.config.plotOptions.candlestick.colors.upward;
+      var colorNeg = w.config.plotOptions.candlestick.colors.downward;
+      var yRatio = this.yRatio[this.yaxisIndex];
+      var realIndex = indexes.realIndex;
+      var ohlc = this.getOHLCValue(realIndex, j);
+      var l1 = zeroH;
+      var l2 = zeroH;
+
+      if (ohlc.o > ohlc.c) {
+        isPositive = false;
+      }
+
+      var y1 = Math.min(ohlc.o, ohlc.c);
+      var y2 = Math.max(ohlc.o, ohlc.c);
+
+      if (w.globals.isXNumeric) {
+        x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x + barWidth * this.visibleI;
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        y1 = zeroH;
+      } else {
+        y1 = zeroH - y1 / yRatio;
+        y2 = zeroH - y2 / yRatio;
+        l1 = zeroH - ohlc.h / yRatio;
+        l2 = zeroH - ohlc.l / yRatio;
+      }
+
+      pathTo = graphics.move(barXPosition, zeroH);
+      pathFrom = graphics.move(barXPosition, y1);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j, true);
+      }
+
+      pathTo = graphics.move(barXPosition, y2) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth / 2, l1) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition + barWidth / 2, l2) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition, y1) + graphics.line(barXPosition, y2 - strokeWidth / 2);
+      pathFrom = pathFrom + graphics.move(barXPosition, y1);
+
+      if (!w.globals.isXNumeric) {
+        x = x + xDivision;
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        x: x,
+        y: y2,
+        barXPosition: barXPosition,
+        color: isPositive ? colorPos : colorNeg
+      };
+    }
+  }, {
+    key: "getOHLCValue",
+    value: function getOHLCValue(i, j) {
+      var w = this.w;
+      return {
+        o: w.globals.seriesCandleO[i][j],
+        h: w.globals.seriesCandleH[i][j],
+        l: w.globals.seriesCandleL[i][j],
+        c: w.globals.seriesCandleC[i][j]
+      };
+    }
+  }]);
+
+  return CandleStick;
+}(Bar);
+
+var Crosshairs =
+/*#__PURE__*/
+function () {
+  function Crosshairs(ctx) {
+    _classCallCheck(this, Crosshairs);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Crosshairs, [{
+    key: "drawXCrosshairs",
+    value: function drawXCrosshairs() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var filters = new Filters(this.ctx);
+      var crosshairGradient = w.config.xaxis.crosshairs.fill.gradient;
+      var crosshairShadow = w.config.xaxis.crosshairs.dropShadow;
+      var fillType = w.config.xaxis.crosshairs.fill.type;
+      var gradientFrom = crosshairGradient.colorFrom;
+      var gradientTo = crosshairGradient.colorTo;
+      var opacityFrom = crosshairGradient.opacityFrom;
+      var opacityTo = crosshairGradient.opacityTo;
+      var stops = crosshairGradient.stops;
+      var shadow = 'none';
+      var dropShadow = crosshairShadow.enabled;
+      var shadowLeft = crosshairShadow.left;
+      var shadowTop = crosshairShadow.top;
+      var shadowBlur = crosshairShadow.blur;
+      var shadowColor = crosshairShadow.color;
+      var shadowOpacity = crosshairShadow.opacity;
+      var xcrosshairsFill = w.config.xaxis.crosshairs.fill.color;
+
+      if (w.config.xaxis.crosshairs.show) {
+        if (fillType === 'gradient') {
+          xcrosshairsFill = graphics.drawGradient('vertical', gradientFrom, gradientTo, opacityFrom, opacityTo, null, stops, null);
+        }
+
+        var xcrosshairs = graphics.drawRect();
+
+        if (w.config.xaxis.crosshairs.width === 1) {
+          // to prevent drawing 2 lines, convert rect to line
+          xcrosshairs = graphics.drawLine();
+        }
+
+        xcrosshairs.attr({
+          class: 'apexcharts-xcrosshairs',
+          x: 0,
+          y: 0,
+          y2: w.globals.gridHeight,
+          width: Utils.isNumber(w.config.xaxis.crosshairs.width) ? w.config.xaxis.crosshairs.width : 0,
+          height: w.globals.gridHeight,
+          fill: xcrosshairsFill,
+          filter: shadow,
+          'fill-opacity': w.config.xaxis.crosshairs.opacity,
+          stroke: w.config.xaxis.crosshairs.stroke.color,
+          'stroke-width': w.config.xaxis.crosshairs.stroke.width,
+          'stroke-dasharray': w.config.xaxis.crosshairs.stroke.dashArray
+        });
+
+        if (dropShadow) {
+          xcrosshairs = filters.dropShadow(xcrosshairs, {
+            left: shadowLeft,
+            top: shadowTop,
+            blur: shadowBlur,
+            color: shadowColor,
+            opacity: shadowOpacity
+          });
+        }
+
+        w.globals.dom.elGraphical.add(xcrosshairs);
+      }
+    }
+  }, {
+    key: "drawYCrosshairs",
+    value: function drawYCrosshairs() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var crosshair = w.config.yaxis[0].crosshairs;
+
+      if (w.config.yaxis[0].crosshairs.show) {
+        var ycrosshairs = graphics.drawLine(0, 0, w.globals.gridWidth, 0, crosshair.stroke.color, crosshair.stroke.dashArray, crosshair.stroke.width);
+        ycrosshairs.attr({
+          class: 'apexcharts-ycrosshairs'
+        });
+        w.globals.dom.elGraphical.add(ycrosshairs);
+      } // draw an invisible crosshair to help in positioning the yaxis tooltip
+
+
+      var ycrosshairsHidden = graphics.drawLine(0, 0, w.globals.gridWidth, 0, crosshair.stroke.color, 0, 0);
+      ycrosshairsHidden.attr({
+        class: 'apexcharts-ycrosshairs-hidden'
+      });
+      w.globals.dom.elGraphical.add(ycrosshairsHidden);
+    }
+  }]);
+
+  return Crosshairs;
+}();
+
+/**
+ * ApexCharts HeatMap Class.
+ * @module HeatMap
+ **/
+
+var HeatMap =
+/*#__PURE__*/
+function () {
+  function HeatMap(ctx, xyRatios) {
+    _classCallCheck(this, HeatMap);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.xRatio = xyRatios.xRatio;
+    this.yRatio = xyRatios.yRatio;
+    this.negRange = false;
+    this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation;
+    this.rectRadius = this.w.config.plotOptions.heatmap.radius;
+    this.strokeWidth = this.w.config.stroke.width;
+  }
+
+  _createClass(HeatMap, [{
+    key: "draw",
+    value: function draw(series) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var ret = graphics.group({
+        class: 'apexcharts-heatmap'
+      });
+      ret.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); // width divided into equal parts
+
+      var xDivision = w.globals.gridWidth / w.globals.dataPoints;
+      var yDivision = w.globals.gridHeight / w.globals.series.length;
+      var y1 = 0;
+      var rev = false;
+      this.checkColorRange();
+      var heatSeries = series.slice();
+
+      if (w.config.yaxis[0].reversed) {
+        rev = true;
+        heatSeries.reverse();
+      }
+
+      for (var i = rev ? 0 : heatSeries.length - 1; rev ? i < heatSeries.length : i >= 0; rev ? i++ : i--) {
+        // el to which series will be drawn
+        var elSeries = graphics.group({
+          class: "apexcharts-series apexcharts-heatmap-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[i]),
+          rel: i + 1,
+          'data:realIndex': i
+        });
+
+        if (w.config.chart.dropShadow.enabled) {
+          var shadow = w.config.chart.dropShadow;
+          var filters = new Filters(this.ctx);
+          filters.dropShadow(elSeries, shadow, i);
+        }
+
+        var x1 = 0;
+
+        for (var j = 0; j < heatSeries[i].length; j++) {
+          var colorShadePercent = 1;
+          var heatColorProps = this.determineHeatColor(i, j);
+
+          if (w.globals.hasNegs || this.negRange) {
+            var shadeIntensity = w.config.plotOptions.heatmap.shadeIntensity;
+
+            if (w.config.plotOptions.heatmap.reverseNegativeShade) {
+              if (heatColorProps.percent < 0) {
+                colorShadePercent = heatColorProps.percent / 100 * (shadeIntensity * 1.25);
+              } else {
+                colorShadePercent = (1 - heatColorProps.percent / 100) * (shadeIntensity * 1.25);
+              }
+            } else {
+              if (heatColorProps.percent < 0) {
+                colorShadePercent = 1 - (1 + heatColorProps.percent / 100) * shadeIntensity;
+              } else {
+                colorShadePercent = (1 - heatColorProps.percent / 100) * shadeIntensity;
+              }
+            }
+          } else {
+            colorShadePercent = 1 - heatColorProps.percent / 100;
+          }
+
+          var color = heatColorProps.color;
+
+          if (w.config.plotOptions.heatmap.enableShades) {
+            var utils = new Utils();
+            color = Utils.hexToRgba(utils.shadeColor(colorShadePercent, heatColorProps.color), w.config.fill.opacity);
+          }
+
+          var radius = this.rectRadius;
+          var rect = graphics.drawRect(x1, y1, xDivision, yDivision, radius);
+          rect.attr({
+            cx: x1,
+            cy: y1
+          });
+          rect.node.classList.add('apexcharts-heatmap-rect');
+          elSeries.add(rect);
+          rect.attr({
+            fill: color,
+            i: i,
+            index: i,
+            j: j,
+            val: heatSeries[i][j],
+            'stroke-width': this.strokeWidth,
+            stroke: w.globals.stroke.colors[0],
+            color: color
+          });
+          rect.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, rect));
+          rect.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, rect));
+          rect.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, rect));
+
+          if (w.config.chart.animations.enabled && !w.globals.dataChanged) {
+            var speed = 1;
+
+            if (!w.globals.resized) {
+              speed = w.config.chart.animations.speed;
+            }
+
+            this.animateHeatMap(rect, x1, y1, xDivision, yDivision, speed);
+          }
+
+          if (w.globals.dataChanged) {
+            var _speed = 1;
+
+            if (this.dynamicAnim.enabled && w.globals.shouldAnimate) {
+              _speed = this.dynamicAnim.speed;
+              var colorFrom = w.globals.previousPaths[i] && w.globals.previousPaths[i][j] && w.globals.previousPaths[i][j].color;
+              if (!colorFrom) colorFrom = 'rgba(255, 255, 255, 0)';
+              this.animateHeatColor(rect, Utils.isColorHex(colorFrom) ? colorFrom : Utils.rgb2hex(colorFrom), Utils.isColorHex(color) ? color : Utils.rgb2hex(color), _speed);
+            }
+          }
+
+          var dataLabels = this.calculateHeatmapDataLabels({
+            x: x1,
+            y: y1,
+            i: i,
+            j: j,
+            series: heatSeries,
+            rectHeight: yDivision,
+            rectWidth: xDivision
+          });
+
+          if (dataLabels !== null) {
+            elSeries.add(dataLabels);
+          }
+
+          x1 = x1 + xDivision;
+        }
+
+        y1 = y1 + yDivision;
+        ret.add(elSeries);
+      } // adjust yaxis labels for heatmap
+
+
+      var yAxisScale = w.globals.yAxisScale[0].result.slice();
+
+      if (w.config.yaxis[0].reversed) {
+        yAxisScale.unshift('');
+      } else {
+        yAxisScale.push('');
+      }
+
+      w.globals.yAxisScale[0].result = yAxisScale;
+      var divisor = w.globals.gridHeight / w.globals.series.length;
+      w.config.yaxis[0].labels.offsetY = -(divisor / 2);
+      return ret;
+    }
+  }, {
+    key: "checkColorRange",
+    value: function checkColorRange() {
+      var _this = this;
+
+      var w = this.w;
+      var heatmap = w.config.plotOptions.heatmap;
+
+      if (heatmap.colorScale.ranges.length > 0) {
+        heatmap.colorScale.ranges.map(function (range, index) {
+          if (range.from < 0) {
+            _this.negRange = true;
+          }
+        });
+      }
+    }
+  }, {
+    key: "determineHeatColor",
+    value: function determineHeatColor(i, j) {
+      var w = this.w;
+      var val = w.globals.series[i][j];
+      var heatmap = w.config.plotOptions.heatmap;
+      var seriesNumber = heatmap.colorScale.inverse ? j : i;
+      var color = w.globals.colors[seriesNumber];
+      var min = Math.min.apply(Math, _toConsumableArray(w.globals.series[i]));
+      var max = Math.max.apply(Math, _toConsumableArray(w.globals.series[i]));
+
+      if (!heatmap.distributed) {
+        min = w.globals.minY;
+        max = w.globals.maxY;
+      }
+
+      if (typeof heatmap.colorScale.min !== 'undefined') {
+        min = heatmap.colorScale.min < w.globals.minY ? heatmap.colorScale.min : w.globals.minY;
+        max = heatmap.colorScale.max > w.globals.maxY ? heatmap.colorScale.max : w.globals.maxY;
+      }
+
+      var total = Math.abs(max) + Math.abs(min);
+      var percent = 100 * val / (total === 0 ? total - 0.000001 : total);
+
+      if (heatmap.colorScale.ranges.length > 0) {
+        var colorRange = heatmap.colorScale.ranges;
+        colorRange.map(function (range, index) {
+          if (val >= range.from && val <= range.to) {
+            color = range.color;
+            min = range.from;
+            max = range.to;
+
+            var _total = Math.abs(max) + Math.abs(min);
+
+            percent = 100 * val / (_total === 0 ? _total - 0.000001 : _total);
+          }
+        });
+      }
+
+      return {
+        color: color,
+        percent: percent
+      };
+    }
+  }, {
+    key: "calculateHeatmapDataLabels",
+    value: function calculateHeatmapDataLabels(_ref) {
+      var x = _ref.x,
+          y = _ref.y,
+          i = _ref.i,
+          j = _ref.j,
+          series = _ref.series,
+          rectHeight = _ref.rectHeight,
+          rectWidth = _ref.rectWidth;
+      var w = this.w; // let graphics = new Graphics(this.ctx)
+
+      var dataLabelsConfig = w.config.dataLabels;
+      var graphics = new Graphics(this.ctx);
+      var dataLabels = new DataLabels(this.ctx);
+      var formatter = dataLabelsConfig.formatter;
+      var elDataLabelsWrap = null;
+
+      if (dataLabelsConfig.enabled) {
+        elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-data-labels'
+        });
+        var offX = dataLabelsConfig.offsetX;
+        var offY = dataLabelsConfig.offsetY;
+        var dataLabelsX = x + rectWidth / 2 + offX;
+        var dataLabelsY = y + rectHeight / 2 + parseInt(dataLabelsConfig.style.fontSize) / 3 + offY;
+        var text = formatter(w.globals.series[i][j], {
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+        dataLabels.plotDataLabelsText({
+          x: dataLabelsX,
+          y: dataLabelsY,
+          text: text,
+          i: i,
+          j: j,
+          parent: elDataLabelsWrap,
+          dataLabelsConfig: dataLabelsConfig
+        });
+      }
+
+      return elDataLabelsWrap;
+    }
+  }, {
+    key: "animateHeatMap",
+    value: function animateHeatMap(el, x, y, width, height, speed) {
+      var _this2 = this;
+
+      var animations = new Animations(this.ctx);
+      animations.animateRect(el, {
+        x: x + width / 2,
+        y: y + height / 2,
+        width: 0,
+        height: 0
+      }, {
+        x: x,
+        y: y,
+        width: width,
+        height: height
+      }, speed, function () {
+        _this2.w.globals.animationEnded = true;
+      });
+    }
+  }, {
+    key: "animateHeatColor",
+    value: function animateHeatColor(el, colorFrom, colorTo, speed) {
+      el.attr({
+        fill: colorFrom
+      }).animate(speed).attr({
+        fill: colorTo
+      });
+    }
+  }]);
+
+  return HeatMap;
+}();
+
+/**
+ * ApexCharts Pie Class for drawing Pie / Donut Charts.
+ * @module Pie
+ **/
+
+var Pie =
+/*#__PURE__*/
+function () {
+  function Pie(ctx) {
+    _classCallCheck(this, Pie);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.chartType = this.w.config.chart.type;
+    this.initialAnim = this.w.config.chart.animations.enabled;
+    this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+    this.animBeginArr = [0];
+    this.animDur = 0;
+    this.donutDataLabels = this.w.config.plotOptions.pie.donut.labels;
+    var w = this.w;
+    this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors;
+    this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.svgHeight - 35 : w.globals.gridWidth;
+    this.centerY = this.defaultSize / 2;
+    this.centerX = w.globals.gridWidth / 2;
+    this.fullAngle = 360;
+    this.size = 0;
+    this.donutSize = 0;
+    this.sliceLabels = [];
+    this.prevSectorAngleArr = []; // for dynamic animations
+  }
+
+  _createClass(Pie, [{
+    key: "draw",
+    value: function draw(series) {
+      var self = this;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var ret = graphics.group({
+        class: 'apexcharts-pie'
+      });
+      var total = 0;
+
+      for (var k = 0; k < series.length; k++) {
+        // CALCULATE THE TOTAL
+        total += Utils.negToZero(series[k]);
+      }
+
+      var sectorAngleArr = []; // el to which series will be drawn
+
+      var elSeries = graphics.group(); // prevent division by zero error if there is no data
+
+      if (total === 0) {
+        total = 0.00001;
+      }
+
+      for (var i = 0; i < series.length; i++) {
+        // CALCULATE THE ANGLES
+        var angle = this.fullAngle * Utils.negToZero(series[i]) / total;
+        sectorAngleArr.push(angle);
+      }
+
+      if (w.globals.dataChanged) {
+        var prevTotal = 0;
+
+        for (var _k = 0; _k < w.globals.previousPaths.length; _k++) {
+          // CALCULATE THE PREV TOTAL
+          prevTotal += Utils.negToZero(w.globals.previousPaths[_k]);
+        }
+
+        var previousAngle;
+
+        for (var _i = 0; _i < w.globals.previousPaths.length; _i++) {
+          // CALCULATE THE PREVIOUS ANGLES
+          previousAngle = this.fullAngle * Utils.negToZero(w.globals.previousPaths[_i]) / prevTotal;
+          this.prevSectorAngleArr.push(previousAngle);
+        }
+      }
+
+      this.size = this.defaultSize / 2.05 - w.config.stroke.width - w.config.chart.dropShadow.blur;
+
+      if (w.config.plotOptions.pie.size !== undefined) {
+        this.size = w.config.plotOptions.pie.size;
+      }
+
+      this.donutSize = this.size * parseInt(w.config.plotOptions.pie.donut.size) / 100;
+      var scaleSize = w.config.plotOptions.pie.customScale;
+      var halfW = w.globals.gridWidth / 2;
+      var halfH = w.globals.gridHeight / 2;
+      var translateX = halfW - w.globals.gridWidth / 2 * scaleSize;
+      var translateY = halfH - w.globals.gridHeight / 2 * scaleSize;
+
+      if (this.donutDataLabels.show) {
+        var dataLabels = this.renderInnerDataLabels(this.donutDataLabels, {
+          hollowSize: this.donutSize,
+          centerX: this.centerX,
+          centerY: this.centerY,
+          opacity: this.donutDataLabels.show,
+          translateX: translateX,
+          translateY: translateY
+        });
+        ret.add(dataLabels);
+      }
+
+      if (w.config.chart.type === 'donut') {
+        // draw the inner circle and add some text to it
+        var circle = graphics.drawCircle(this.donutSize);
+        circle.attr({
+          cx: this.centerX,
+          cy: this.centerY,
+          fill: w.config.plotOptions.pie.donut.background
+        });
+        elSeries.add(circle);
+      }
+
+      var elG = self.drawArcs(sectorAngleArr, series); // add slice dataLabels at the end
+
+      this.sliceLabels.forEach(function (s) {
+        elG.add(s);
+      });
+      elSeries.attr({
+        transform: "translate(".concat(translateX, ", ").concat(translateY - 5, ") scale(").concat(scaleSize, ")")
+      });
+      ret.attr({
+        'data:innerTranslateX': translateX,
+        'data:innerTranslateY': translateY - 25
+      });
+      elSeries.add(elG);
+      ret.add(elSeries);
+      return ret;
+    } // core function for drawing pie arcs
+
+  }, {
+    key: "drawArcs",
+    value: function drawArcs(sectorAngleArr, series) {
+      var w = this.w;
+      var filters = new Filters(this.ctx);
+      var graphics = new Graphics(this.ctx);
+      var fill = new Fill(this.ctx);
+      var g = graphics.group();
+      var startAngle = 0;
+      var prevStartAngle = 0;
+      var endAngle = 0;
+      var prevEndAngle = 0;
+      this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0;
+
+      for (var i = 0; i < sectorAngleArr.length; i++) {
+        // if(sectorAngleArr[i]>0) {
+        var elPieArc = graphics.group({
+          class: "apexcharts-series apexcharts-pie-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[i]),
+          id: 'apexcharts-series-' + i,
+          rel: i + 1
+        });
+        g.add(elPieArc);
+        startAngle = endAngle;
+        prevStartAngle = prevEndAngle;
+        endAngle = startAngle + sectorAngleArr[i];
+        prevEndAngle = prevStartAngle + this.prevSectorAngleArr[i];
+        var angle = endAngle - startAngle;
+        var pathFill = fill.fillPath({
+          seriesNumber: i,
+          size: this.size,
+          value: series[i]
+        }); // additionaly, pass size for gradient drawing in the fillPath function
+
+        var path = this.getChangedPath(prevStartAngle, prevEndAngle);
+        var elPath = graphics.drawPath({
+          d: path,
+          stroke: this.lineColorArr instanceof Array ? this.lineColorArr[i] : this.lineColorArr,
+          strokeWidth: this.strokeWidth,
+          fill: pathFill,
+          fillOpacity: w.config.fill.opacity,
+          classes: 'apexcharts-pie-area'
+        });
+        elPath.attr({
+          id: "apexcharts-".concat(w.config.chart.type, "-slice-").concat(i),
+          index: 0,
+          j: i
+        });
+
+        if (w.config.chart.dropShadow.enabled) {
+          var shadow = w.config.chart.dropShadow;
+          filters.dropShadow(elPath, shadow, i);
+        }
+
+        this.addListeners(elPath, this.donutDataLabels);
+        Graphics.setAttrs(elPath.node, {
+          'data:angle': angle,
+          'data:startAngle': startAngle,
+          'data:strokeWidth': this.strokeWidth,
+          'data:value': series[i]
+        });
+        var labelPosition = {
+          x: 0,
+          y: 0
+        };
+
+        if (w.config.chart.type === 'pie') {
+          labelPosition = Utils.polarToCartesian(this.centerX, this.centerY, this.size / 1.25 + w.config.plotOptions.pie.dataLabels.offset, startAngle + (endAngle - startAngle) / 2);
+        } else if (w.config.chart.type === 'donut') {
+          labelPosition = Utils.polarToCartesian(this.centerX, this.centerY, (this.size + this.donutSize) / 2 + w.config.plotOptions.pie.dataLabels.offset, startAngle + (endAngle - startAngle) / 2);
+        }
+
+        elPieArc.add(elPath); // Animation code starts
+
+        var dur = 0;
+
+        if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+          dur = (endAngle - startAngle) / this.fullAngle * w.config.chart.animations.speed;
+          this.animDur = dur + this.animDur;
+          this.animBeginArr.push(this.animDur);
+        } else {
+          this.animBeginArr.push(0);
+        }
+
+        if (this.dynamicAnim && w.globals.dataChanged) {
+          this.animatePaths(elPath, {
+            endAngle: endAngle,
+            startAngle: startAngle,
+            prevStartAngle: prevStartAngle,
+            prevEndAngle: prevEndAngle,
+            animateStartingPos: true,
+            i: i,
+            animBeginArr: this.animBeginArr,
+            dur: w.config.chart.animations.dynamicAnimation.speed
+          });
+        } else {
+          this.animatePaths(elPath, {
+            endAngle: endAngle,
+            startAngle: startAngle,
+            i: i,
+            totalItems: sectorAngleArr.length - 1,
+            animBeginArr: this.animBeginArr,
+            dur: dur
+          });
+        } // animation code ends
+
+
+        if (w.config.plotOptions.pie.expandOnClick) {
+          elPath.click(this.pieClicked.bind(this, i));
+        }
+
+        if (w.config.dataLabels.enabled) {
+          var xPos = labelPosition.x;
+          var yPos = labelPosition.y;
+          var text = 100 * (endAngle - startAngle) / 360 + '%';
+
+          if (angle !== 0 && w.config.plotOptions.pie.dataLabels.minAngleToShowLabel < sectorAngleArr[i]) {
+            var formatter = w.config.dataLabels.formatter;
+
+            if (formatter !== undefined) {
+              text = formatter(w.globals.seriesPercent[i][0], {
+                seriesIndex: i,
+                w: w
+              });
+            }
+
+            var foreColor = w.globals.dataLabels.style.colors[i];
+            var elPieLabel = graphics.drawText({
+              x: xPos,
+              y: yPos,
+              text: text,
+              textAnchor: 'middle',
+              fontSize: w.config.dataLabels.style.fontSize,
+              fontFamily: w.config.dataLabels.style.fontFamily,
+              foreColor: foreColor
+            });
+
+            if (w.config.dataLabels.dropShadow.enabled) {
+              var textShadow = w.config.dataLabels.dropShadow;
+
+              var _filters = new Filters(this.ctx);
+
+              _filters.dropShadow(elPieLabel, textShadow);
+            }
+
+            elPieLabel.node.classList.add('apexcharts-pie-label');
+
+            if (w.config.chart.animations.animate && w.globals.resized === false) {
+              elPieLabel.node.classList.add('apexcharts-pie-label-delay');
+              elPieLabel.node.style.animationDelay = w.config.chart.animations.speed / 940 + 's';
+            }
+
+            this.sliceLabels.push(elPieLabel);
+          }
+        } // }
+
+      }
+
+      return g;
+    }
+  }, {
+    key: "addListeners",
+    value: function addListeners(elPath, dataLabels) {
+      var graphics = new Graphics(this.ctx); // append filters on mouseenter and mouseleave
+
+      elPath.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, elPath));
+      elPath.node.addEventListener('mouseenter', this.printDataLabelsInner.bind(this, elPath.node, dataLabels));
+      elPath.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, elPath));
+      elPath.node.addEventListener('mouseleave', this.revertDataLabelsInner.bind(this, elPath.node, dataLabels));
+      elPath.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, elPath));
+      elPath.node.addEventListener('mousedown', this.printDataLabelsInner.bind(this, elPath.node, dataLabels));
+    } // This function can be used for other circle charts too
+
+  }, {
+    key: "animatePaths",
+    value: function animatePaths(el, opts) {
+      var w = this.w;
+      var me = this;
+      var angle = opts.endAngle - opts.startAngle;
+      var prevAngle = angle;
+      var fromStartAngle = opts.startAngle;
+      var toStartAngle = opts.startAngle;
+
+      if (opts.prevStartAngle !== undefined && opts.prevEndAngle !== undefined) {
+        fromStartAngle = opts.prevEndAngle;
+        prevAngle = opts.prevEndAngle - opts.prevStartAngle;
+      }
+
+      if (opts.i === w.config.series.length - 1) {
+        // some adjustments for the last overlapping paths
+        if (angle + toStartAngle > this.fullAngle) {
+          opts.endAngle = opts.endAngle - (angle + toStartAngle);
+        } else if (angle + toStartAngle < this.fullAngle) {
+          opts.endAngle = opts.endAngle + (this.fullAngle - (angle + toStartAngle));
+        }
+      }
+
+      if (angle === this.fullAngle) angle = this.fullAngle - 0.01;
+      me.animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts);
+    }
+  }, {
+    key: "animateArc",
+    value: function animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts) {
+      var me = this;
+      var w = this.w;
+      var size = me.size;
+
+      if (!size) {
+        size = opts.size;
+      }
+
+      var path;
+
+      if (isNaN(fromStartAngle) || isNaN(prevAngle)) {
+        fromStartAngle = toStartAngle;
+        prevAngle = angle;
+        opts.dur = 0;
+      }
+
+      var currAngle = angle;
+      var startAngle = toStartAngle;
+      var fromAngle = fromStartAngle - toStartAngle;
+
+      if (w.globals.dataChanged && opts.shouldSetPrevPaths) {
+        // to avoid flickering, set prev path first and then we will animate from there
+        path = me.getPiePath({
+          me: me,
+          startAngle: startAngle,
+          angle: prevAngle,
+          size: size
+        });
+        el.attr({
+          d: path
+        });
+      }
+
+      if (opts.dur !== 0) {
+        el.animate(opts.dur, w.globals.easing, opts.animBeginArr[opts.i]).afterAll(function () {
+          if (w.config.chart.type === 'pie' || w.config.chart.type === 'donut') {
+            this.animate(300).attr({
+              'stroke-width': w.config.stroke.width
+            });
+          }
+
+          w.globals.animationEnded = true;
+        }).during(function (pos) {
+          currAngle = fromAngle + (angle - fromAngle) * pos;
+
+          if (opts.animateStartingPos) {
+            currAngle = prevAngle + (angle - prevAngle) * pos;
+            startAngle = fromStartAngle - prevAngle + (toStartAngle - (fromStartAngle - prevAngle)) * pos;
+          }
+
+          path = me.getPiePath({
+            me: me,
+            startAngle: startAngle,
+            angle: currAngle,
+            size: size
+          });
+          el.node.setAttribute('data:pathOrig', path);
+          el.attr({
+            d: path
+          });
+        });
+      } else {
+        path = me.getPiePath({
+          me: me,
+          startAngle: startAngle,
+          angle: angle,
+          size: size
+        });
+
+        if (!opts.isTrack) {
+          w.globals.animationEnded = true;
+        }
+
+        el.node.setAttribute('data:pathOrig', path);
+        el.attr({
+          d: path
+        });
+      }
+    }
+  }, {
+    key: "pieClicked",
+    value: function pieClicked(i) {
+      var w = this.w;
+      var me = this;
+      var path;
+      var size = me.size + 4;
+      var elPath = w.globals.dom.Paper.select("#apexcharts-".concat(w.config.chart.type.toLowerCase(), "-slice-").concat(i)).members[0];
+      var pathFrom = elPath.attr('d');
+
+      if (elPath.attr('data:pieClicked') === 'true') {
+        elPath.attr({
+          'data:pieClicked': 'false'
+        });
+        this.revertDataLabelsInner(elPath.node, this.donutDataLabels);
+        var origPath = elPath.attr('data:pathOrig');
+        elPath.attr({
+          d: origPath
+        });
+        return;
+      } else {
+        // reset all elems
+        var allEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-pie-area');
+        Array.prototype.forEach.call(allEls, function (pieSlice) {
+          pieSlice.setAttribute('data:pieClicked', 'false');
+          var origPath = pieSlice.getAttribute('data:pathOrig');
+          pieSlice.setAttribute('d', origPath);
+        });
+        elPath.attr('data:pieClicked', 'true');
+      }
+
+      var startAngle = parseInt(elPath.attr('data:startAngle'));
+      var angle = parseInt(elPath.attr('data:angle'));
+      path = me.getPiePath({
+        me: me,
+        startAngle: startAngle,
+        angle: angle,
+        size: size
+      });
+      if (angle === 360) return;
+      elPath.plot(path).animate(1).plot(pathFrom).animate(100).plot(path);
+    }
+  }, {
+    key: "getChangedPath",
+    value: function getChangedPath(prevStartAngle, prevEndAngle) {
+      var path = '';
+
+      if (this.dynamicAnim && this.w.globals.dataChanged) {
+        path = this.getPiePath({
+          me: this,
+          startAngle: prevStartAngle,
+          angle: prevEndAngle - prevStartAngle,
+          size: this.size
+        });
+      }
+
+      return path;
+    }
+  }, {
+    key: "getPiePath",
+    value: function getPiePath(_ref) {
+      var me = _ref.me,
+          startAngle = _ref.startAngle,
+          angle = _ref.angle,
+          size = _ref.size;
+      var w = this.w;
+      var path;
+      var startDeg = startAngle;
+      var startRadians = Math.PI * (startDeg - 90) / 180;
+      var endDeg = angle + startAngle;
+      if (Math.ceil(endDeg) >= 360) endDeg = 359.99;
+      var endRadians = Math.PI * (endDeg - 90) / 180;
+      var x1 = me.centerX + size * Math.cos(startRadians);
+      var y1 = me.centerY + size * Math.sin(startRadians);
+      var x2 = me.centerX + size * Math.cos(endRadians);
+      var y2 = me.centerY + size * Math.sin(endRadians);
+      var startInner = Utils.polarToCartesian(me.centerX, me.centerY, me.donutSize, endDeg);
+      var endInner = Utils.polarToCartesian(me.centerX, me.centerY, me.donutSize, startDeg);
+      var largeArc = angle > 180 ? 1 : 0;
+
+      if (w.config.chart.type === 'donut') {
+        path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2, 'L', startInner.x, startInner.y, 'A', me.donutSize, me.donutSize, 0, largeArc, 0, endInner.x, endInner.y, 'L', x1, y1, 'z'].join(' ');
+      } else if (w.config.chart.type === 'pie') {
+        path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2, 'L', me.centerX, me.centerY, 'L', x1, y1].join(' ');
+      } else {
+        path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2].join(' ');
+      }
+
+      return path;
+    }
+  }, {
+    key: "renderInnerDataLabels",
+    value: function renderInnerDataLabels(dataLabelsConfig, opts) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var g = graphics.group({
+        class: 'apexcharts-datalabels-group',
+        transform: "translate(".concat(opts.translateX ? opts.translateX : 0, ", ").concat(opts.translateY ? opts.translateY : 0, ")")
+      });
+      var showTotal = dataLabelsConfig.total.show;
+      g.node.style.opacity = opts.opacity;
+      var x = opts.centerX;
+      var y = opts.centerY;
+      var labelColor, valueColor;
+
+      if (dataLabelsConfig.name.color === undefined) {
+        labelColor = w.globals.colors[0];
+      } else {
+        labelColor = dataLabelsConfig.name.color;
+      }
+
+      if (dataLabelsConfig.value.color === undefined) {
+        valueColor = w.config.chart.foreColor;
+      } else {
+        valueColor = dataLabelsConfig.value.color;
+      }
+
+      var lbFormatter = dataLabelsConfig.value.formatter;
+      var val = '';
+      var name = '';
+
+      if (showTotal) {
+        labelColor = dataLabelsConfig.total.color;
+        name = dataLabelsConfig.total.label;
+        val = dataLabelsConfig.total.formatter(w);
+      } else {
+        if (w.globals.series.length === 1) {
+          val = lbFormatter(w.globals.series[0], w);
+          name = w.globals.seriesNames[0];
+        }
+      }
+
+      if (dataLabelsConfig.name.show) {
+        var elLabel = graphics.drawText({
+          x: x,
+          y: y + parseInt(dataLabelsConfig.name.offsetY),
+          text: name,
+          textAnchor: 'middle',
+          foreColor: labelColor,
+          fontSize: dataLabelsConfig.name.fontSize,
+          fontFamily: dataLabelsConfig.name.fontFamily
+        });
+        elLabel.node.classList.add('apexcharts-datalabel-label');
+        g.add(elLabel);
+      }
+
+      if (dataLabelsConfig.value.show) {
+        var valOffset = dataLabelsConfig.name.show ? parseInt(dataLabelsConfig.value.offsetY) + 16 : dataLabelsConfig.value.offsetY;
+        var elValue = graphics.drawText({
+          x: x,
+          y: y + valOffset,
+          text: val,
+          textAnchor: 'middle',
+          foreColor: valueColor,
+          fontSize: dataLabelsConfig.value.fontSize,
+          fontFamily: dataLabelsConfig.value.fontFamily
+        });
+        elValue.node.classList.add('apexcharts-datalabel-value');
+        g.add(elValue);
+      } // for a multi-series circle chart, we need to show total value instead of first series labels
+
+
+      return g;
+    }
+    /**
+     *
+     * @param {string} name - The name of the series
+     * @param {string} val - The value of that series
+     * @param {object} el - Optional el (indicates which series was hovered/clicked). If this param is not present, means we need to show total
+     */
+
+  }, {
+    key: "printInnerLabels",
+    value: function printInnerLabels(labelsConfig, name, val, el) {
+      var w = this.w;
+      var labelColor;
+
+      if (el) {
+        if (labelsConfig.name.color === undefined) {
+          labelColor = w.globals.colors[parseInt(el.parentNode.getAttribute('rel')) - 1];
+        } else {
+          labelColor = labelsConfig.name.color;
+        }
+      } else {
+        if (w.globals.series.length > 1 && labelsConfig.total.show) {
+          labelColor = labelsConfig.total.color;
+        }
+      }
+
+      var elLabel = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-label');
+      var elValue = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-value');
+      var lbFormatter = labelsConfig.value.formatter;
+      val = lbFormatter(val, w); // we need to show Total Val - so get the formatter of it
+
+      if (!el && typeof labelsConfig.total.formatter === 'function') {
+        val = labelsConfig.total.formatter(w);
+      }
+
+      if (elLabel !== null) {
+        elLabel.textContent = name;
+      }
+
+      if (elValue !== null) {
+        elValue.textContent = val;
+      }
+
+      if (elLabel !== null) {
+        elLabel.style.fill = labelColor;
+      }
+    }
+  }, {
+    key: "printDataLabelsInner",
+    value: function printDataLabelsInner(el, dataLabelsConfig) {
+      var w = this.w;
+      var val = el.getAttribute('data:value');
+      var name = w.globals.seriesNames[parseInt(el.parentNode.getAttribute('rel')) - 1];
+
+      if (w.globals.series.length > 1) {
+        this.printInnerLabels(dataLabelsConfig, name, val, el);
+      }
+
+      var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group');
+
+      if (dataLabelsGroup !== null) {
+        dataLabelsGroup.style.opacity = 1;
+      }
+    }
+  }, {
+    key: "revertDataLabelsInner",
+    value: function revertDataLabelsInner(el, dataLabelsConfig, event) {
+      var _this = this;
+
+      var w = this.w;
+      var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group');
+
+      if (dataLabelsConfig.total.show && w.globals.series.length > 1) {
+        var pie = new Pie(this.ctx);
+        pie.printInnerLabels(dataLabelsConfig, dataLabelsConfig.total.label, dataLabelsConfig.total.formatter(w));
+      } else {
+        var slices = document.querySelectorAll(".apexcharts-pie-area");
+        var sliceOut = false;
+        slices.forEach(function (s) {
+          if (s.getAttribute('data:pieClicked') === 'true') {
+            sliceOut = true;
+
+            _this.printDataLabelsInner(s, dataLabelsConfig);
+          }
+        });
+
+        if (!sliceOut) {
+          if (w.globals.selectedDataPoints.length && w.globals.series.length > 1) {
+            if (w.globals.selectedDataPoints[0].length > 0) {
+              var index = w.globals.selectedDataPoints[0];
+
+              var _el = w.globals.dom.baseEl.querySelector("#apexcharts-".concat(w.config.chart.type.toLowerCase(), "-slice-").concat(index));
+
+              this.printDataLabelsInner(_el, dataLabelsConfig);
+            } else if (dataLabelsGroup && w.globals.selectedDataPoints.length && w.globals.selectedDataPoints[0].length === 0) {
+              dataLabelsGroup.style.opacity = 0;
+            }
+          } else {
+            if (dataLabelsGroup && w.globals.series.length > 1) {
+              dataLabelsGroup.style.opacity = 0;
+            }
+          }
+        }
+      }
+    }
+  }]);
+
+  return Pie;
+}();
+
+/**
+ * ApexCharts Radar Class for Spider/Radar Charts.
+ * @module Radar
+ **/
+
+var Radar =
+/*#__PURE__*/
+function () {
+  function Radar(ctx) {
+    _classCallCheck(this, Radar);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.chartType = this.w.config.chart.type;
+    this.initialAnim = this.w.config.chart.animations.enabled;
+    this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+    this.animDur = 0;
+    var w = this.w;
+    this.graphics = new Graphics(this.ctx);
+    this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors;
+    this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.svgHeight - 35 : w.globals.gridWidth;
+    this.maxValue = this.w.globals.maxY;
+    this.polygons = w.config.plotOptions.radar.polygons;
+    this.maxLabelWidth = 20;
+    var longestLabel = w.globals.labels.slice().sort(function (a, b) {
+      return b.length - a.length;
+    })[0];
+    var labelWidth = this.graphics.getTextRects(longestLabel, w.config.dataLabels.style.fontSize);
+    this.size = this.defaultSize / 2.1 - w.config.stroke.width - w.config.chart.dropShadow.blur - labelWidth.width / 1.75;
+
+    if (w.config.plotOptions.radar.size !== undefined) {
+      this.size = w.config.plotOptions.radar.size;
+    }
+
+    this.dataRadiusOfPercent = [];
+    this.dataRadius = [];
+    this.angleArr = [];
+    this.yaxisLabelsTextsPos = [];
+  }
+
+  _createClass(Radar, [{
+    key: "draw",
+    value: function draw(series) {
+      var _this = this;
+
+      var w = this.w;
+      var fill = new Fill(this.ctx);
+      var allSeries = [];
+      this.dataPointsLen = series[w.globals.maxValsInArrayIndex].length;
+      this.disAngle = Math.PI * 2 / this.dataPointsLen;
+      var halfW = w.globals.gridWidth / 2;
+      var halfH = w.globals.gridHeight / 2;
+      var translateX = halfW;
+      var translateY = halfH;
+      var ret = this.graphics.group({
+        class: 'apexcharts-radar-series',
+        'data:innerTranslateX': translateX,
+        'data:innerTranslateY': translateY - 25,
+        transform: "translate(".concat(translateX || 0, ", ").concat(translateY || 0, ")")
+      });
+      var dataPointsPos = [];
+      var elPointsMain = null;
+      this.yaxisLabels = this.graphics.group({
+        class: 'apexcharts-yaxis'
+      });
+      series.forEach(function (s, i) {
+        // el to which series will be drawn
+        var elSeries = _this.graphics.group().attr({
+          class: "apexcharts-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[i]),
+          rel: i + 1,
+          'data:realIndex': i
+        });
+
+        _this.dataRadiusOfPercent[i] = [];
+        _this.dataRadius[i] = [];
+        _this.angleArr[i] = [];
+        s.forEach(function (dv, j) {
+          _this.dataRadiusOfPercent[i][j] = dv / _this.maxValue;
+          _this.dataRadius[i][j] = _this.dataRadiusOfPercent[i][j] * _this.size;
+          _this.angleArr[i][j] = j * _this.disAngle;
+        });
+        dataPointsPos = _this.getDataPointsPos(_this.dataRadius[i], _this.angleArr[i]);
+
+        var paths = _this.createPaths(dataPointsPos, {
+          x: 0,
+          y: 0
+        }); // points
+
+
+        elPointsMain = _this.graphics.group({
+          class: 'apexcharts-series-markers-wrap hidden'
+        });
+        w.globals.delayedElements.push({
+          el: elPointsMain.node,
+          index: i
+        });
+        var defaultRenderedPathOptions = {
+          i: i,
+          realIndex: i,
+          animationDelay: i,
+          initialSpeed: w.config.chart.animations.speed,
+          dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+          className: "apexcharts-radar",
+          id: "apexcharts-radar",
+          shouldClipToGrid: false,
+          bindEventsOnPaths: false,
+          stroke: w.globals.stroke.colors[i],
+          strokeLineCap: w.config.stroke.lineCap
+        };
+        var pathFrom = null;
+
+        if (w.globals.previousPaths.length > 0) {
+          pathFrom = _this.getPathFrom(i);
+        }
+
+        for (var p = 0; p < paths.linePathsTo.length; p++) {
+          var renderedLinePath = _this.graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+            pathFrom: pathFrom === null ? paths.linePathsFrom[p] : pathFrom,
+            pathTo: paths.linePathsTo[p],
+            strokeWidth: Array.isArray(w.config.stroke.width) ? w.config.stroke.width[i] : w.config.stroke.width,
+            fill: 'none',
+            drawShadow: false
+          }));
+
+          elSeries.add(renderedLinePath);
+          var pathFill = fill.fillPath({
+            seriesNumber: i
+          });
+
+          var renderedAreaPath = _this.graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+            pathFrom: pathFrom === null ? paths.areaPathsFrom[p] : pathFrom,
+            pathTo: paths.areaPathsTo[p],
+            strokeWidth: 0,
+            fill: pathFill,
+            drawShadow: false
+          }));
+
+          if (w.config.chart.dropShadow.enabled) {
+            var filters = new Filters(_this.ctx);
+            var shadow = w.config.chart.dropShadow;
+            filters.dropShadow(renderedAreaPath, Object.assign({}, shadow, {
+              noUserSpaceOnUse: true
+            }), i);
+          }
+
+          elSeries.add(renderedAreaPath);
+        }
+
+        s.forEach(function (sj, j) {
+          var markers = new Markers(_this.ctx);
+          var opts = markers.getMarkerConfig('apexcharts-marker', i);
+
+          var point = _this.graphics.drawMarker(dataPointsPos[j].x, dataPointsPos[j].y, opts);
+
+          point.attr('rel', j);
+          point.attr('j', j);
+          point.attr('index', i);
+          point.node.setAttribute('default-marker-size', opts.pSize);
+
+          var elPointsWrap = _this.graphics.group({
+            class: 'apexcharts-series-markers'
+          });
+
+          if (elPointsWrap) {
+            elPointsWrap.add(point);
+          }
+
+          elPointsMain.add(elPointsWrap);
+          elSeries.add(elPointsMain);
+        });
+        allSeries.push(elSeries);
+      });
+      this.drawPolygons({
+        parent: ret
+      });
+
+      if (w.config.dataLabels.enabled) {
+        var dataLabels = this.drawLabels();
+        ret.add(dataLabels);
+      }
+
+      ret.add(this.yaxisLabels);
+      allSeries.forEach(function (elS) {
+        ret.add(elS);
+      });
+      return ret;
+    }
+  }, {
+    key: "drawPolygons",
+    value: function drawPolygons(opts) {
+      var _this2 = this;
+
+      var w = this.w;
+      var parent = opts.parent;
+      var yaxisTexts = w.globals.yAxisScale[0].result.reverse();
+      var layers = yaxisTexts.length;
+      var radiusSizes = [];
+      var layerDis = this.size / (layers - 1);
+
+      for (var i = 0; i < layers; i++) {
+        radiusSizes[i] = layerDis * i;
+      }
+
+      radiusSizes.reverse();
+      var polygonStrings = [];
+      var lines = [];
+      radiusSizes.forEach(function (radiusSize, r) {
+        var polygon = _this2.getPolygonPos(radiusSize);
+
+        var string = '';
+        polygon.forEach(function (p, i) {
+          if (r === 0) {
+            var line = _this2.graphics.drawLine(p.x, p.y, 0, 0, Array.isArray(_this2.polygons.connectorColors) ? _this2.polygons.connectorColors[i] : _this2.polygons.connectorColors);
+
+            lines.push(line);
+          }
+
+          if (i === 0) {
+            _this2.yaxisLabelsTextsPos.push({
+              x: p.x,
+              y: p.y
+            });
+          }
+
+          string += p.x + ',' + p.y + ' ';
+        });
+        polygonStrings.push(string);
+      });
+      polygonStrings.forEach(function (p, i) {
+        var strokeColors = _this2.polygons.strokeColors;
+
+        var polygon = _this2.graphics.drawPolygon(p, Array.isArray(strokeColors) ? strokeColors[i] : strokeColors, w.globals.radarPolygons.fill.colors[i]);
+
+        parent.add(polygon);
+      });
+      lines.forEach(function (l) {
+        parent.add(l);
+      });
+
+      if (w.config.yaxis[0].show) {
+        this.yaxisLabelsTextsPos.forEach(function (p, i) {
+          var yText = _this2.drawYAxisText(p.x, p.y, i, yaxisTexts[i]);
+
+          _this2.yaxisLabels.add(yText);
+        });
+      }
+    }
+  }, {
+    key: "drawYAxisText",
+    value: function drawYAxisText(x, y, i, text) {
+      var w = this.w;
+      var yaxisConfig = w.config.yaxis[0];
+      var formatter = w.globals.yLabelFormatters[0];
+      var yaxisLabel = this.graphics.drawText({
+        x: x + yaxisConfig.labels.offsetX,
+        y: y + yaxisConfig.labels.offsetY,
+        text: formatter(text, i),
+        textAnchor: 'middle',
+        fontSize: yaxisConfig.labels.style.fontSize,
+        fontFamily: yaxisConfig.labels.style.fontFamily,
+        foreColor: yaxisConfig.labels.style.color
+      });
+      return yaxisLabel;
+    }
+  }, {
+    key: "drawLabels",
+    value: function drawLabels() {
+      var _this3 = this;
+
+      var w = this.w;
+      var limit = 10;
+      var textAnchor = 'middle';
+      var dataLabelsConfig = w.config.dataLabels;
+      var elDataLabelsWrap = this.graphics.group({
+        class: 'apexcharts-datalabels'
+      });
+      var polygonPos = this.getPolygonPos(this.size);
+      var currPosX = 0;
+      var currPosY = 0;
+      w.globals.labels.forEach(function (label, i) {
+        var formatter = dataLabelsConfig.formatter;
+        var dataLabels = new DataLabels(_this3.ctx);
+
+        if (polygonPos[i]) {
+          currPosX = polygonPos[i].x;
+          currPosY = polygonPos[i].y;
+
+          if (Math.abs(polygonPos[i].x) >= limit) {
+            if (polygonPos[i].x > 0) {
+              textAnchor = 'start';
+              currPosX += 10;
+            } else if (polygonPos[i].x < 0) {
+              textAnchor = 'end';
+              currPosX -= 10;
+            }
+          } else {
+            textAnchor = 'middle';
+          }
+
+          if (Math.abs(polygonPos[i].y) >= _this3.size - limit) {
+            if (polygonPos[i].y < 0) {
+              currPosY -= 10;
+            } else if (polygonPos[i].y > 0) {
+              currPosY += 10;
+            }
+          }
+
+          var text = formatter(label, {
+            seriesIndex: -1,
+            dataPointIndex: i,
+            w: w
+          });
+          dataLabels.plotDataLabelsText({
+            x: currPosX,
+            y: currPosY,
+            text: text,
+            textAnchor: textAnchor,
+            i: i,
+            j: i,
+            parent: elDataLabelsWrap,
+            dataLabelsConfig: dataLabelsConfig,
+            offsetCorrection: false
+          });
+        }
+      });
+      return elDataLabelsWrap;
+    }
+  }, {
+    key: "createPaths",
+    value: function createPaths(pos, origin) {
+      var _this4 = this;
+
+      var linePathsTo = [];
+      var linePathsFrom = [];
+      var areaPathsTo = [];
+      var areaPathsFrom = [];
+
+      if (pos.length) {
+        linePathsFrom = [this.graphics.move(origin.x, origin.y)];
+        areaPathsFrom = [this.graphics.move(origin.x, origin.y)];
+        var linePathTo = this.graphics.move(pos[0].x, pos[0].y);
+        var areaPathTo = this.graphics.move(pos[0].x, pos[0].y);
+        pos.forEach(function (p, i) {
+          linePathTo += _this4.graphics.line(p.x, p.y);
+          areaPathTo += _this4.graphics.line(p.x, p.y);
+
+          if (i === pos.length - 1) {
+            linePathTo += 'Z';
+            areaPathTo += 'Z';
+          }
+        });
+        linePathsTo.push(linePathTo);
+        areaPathsTo.push(areaPathTo);
+      }
+
+      return {
+        linePathsFrom: linePathsFrom,
+        linePathsTo: linePathsTo,
+        areaPathsFrom: areaPathsFrom,
+        areaPathsTo: areaPathsTo
+      };
+    }
+  }, {
+    key: "getPathFrom",
+    value: function getPathFrom(realIndex) {
+      var w = this.w;
+      var pathFrom = null;
+
+      for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+        var gpp = w.globals.previousPaths[pp];
+
+        if (gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+          if (typeof w.globals.previousPaths[pp].paths[0] !== 'undefined') {
+            pathFrom = w.globals.previousPaths[pp].paths[0].d;
+          }
+        }
+      }
+
+      return pathFrom;
+    }
+  }, {
+    key: "getDataPointsPos",
+    value: function getDataPointsPos(dataRadiusArr, angleArr) {
+      var dataPointsLen = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.dataPointsLen;
+      dataRadiusArr = dataRadiusArr || [];
+      angleArr = angleArr || [];
+      var dataPointsPosArray = [];
+
+      for (var j = 0; j < dataPointsLen; j++) {
+        var curPointPos = {};
+        curPointPos.x = dataRadiusArr[j] * Math.sin(angleArr[j]);
+        curPointPos.y = -dataRadiusArr[j] * Math.cos(angleArr[j]);
+        dataPointsPosArray.push(curPointPos);
+      }
+
+      return dataPointsPosArray;
+    }
+  }, {
+    key: "getPolygonPos",
+    value: function getPolygonPos(size) {
+      var dotsArray = [];
+      var angle = Math.PI * 2 / this.dataPointsLen;
+
+      for (var i = 0; i < this.dataPointsLen; i++) {
+        var curPos = {};
+        curPos.x = size * Math.sin(i * angle);
+        curPos.y = -size * Math.cos(i * angle);
+        dotsArray.push(curPos);
+      }
+
+      return dotsArray;
+    }
+  }]);
+
+  return Radar;
+}();
+
+/**
+ * ApexCharts Radial Class for drawing Circle / Semi Circle Charts.
+ * @module Radial
+ **/
+
+var Radial =
+/*#__PURE__*/
+function (_Pie) {
+  _inherits(Radial, _Pie);
+
+  function Radial(ctx) {
+    var _this;
+
+    _classCallCheck(this, Radial);
+
+    _this = _possibleConstructorReturn(this, _getPrototypeOf(Radial).call(this, ctx));
+    _this.ctx = ctx;
+    _this.w = ctx.w;
+    _this.animBeginArr = [0];
+    _this.animDur = 0;
+    var w = _this.w;
+    _this.startAngle = w.config.plotOptions.radialBar.startAngle;
+    _this.endAngle = w.config.plotOptions.radialBar.endAngle;
+    _this.trackStartAngle = w.config.plotOptions.radialBar.track.startAngle;
+    _this.trackEndAngle = w.config.plotOptions.radialBar.track.endAngle;
+    _this.radialDataLabels = w.config.plotOptions.radialBar.dataLabels;
+    if (!_this.trackStartAngle) _this.trackStartAngle = _this.startAngle;
+    if (!_this.trackEndAngle) _this.trackEndAngle = _this.endAngle;
+    if (_this.endAngle === 360) _this.endAngle = 359.99;
+    _this.fullAngle = 360 - w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle;
+    _this.margin = parseInt(w.config.plotOptions.radialBar.track.margin);
+    return _this;
+  }
+
+  _createClass(Radial, [{
+    key: "draw",
+    value: function draw(series) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var ret = graphics.group({
+        class: 'apexcharts-radialbar'
+      });
+      var elSeries = graphics.group();
+      var centerY = this.defaultSize / 2;
+      var centerX = w.globals.gridWidth / 2;
+      var size = this.defaultSize / 2.05 - w.config.stroke.width - w.config.chart.dropShadow.blur;
+
+      if (w.config.plotOptions.radialBar.size !== undefined) {
+        size = w.config.plotOptions.radialBar.size;
+      }
+
+      var colorArr = w.globals.fill.colors;
+
+      if (w.config.plotOptions.radialBar.track.show) {
+        var elTracks = this.drawTracks({
+          size: size,
+          centerX: centerX,
+          centerY: centerY,
+          colorArr: colorArr,
+          series: series
+        });
+        elSeries.add(elTracks);
+      }
+
+      var elG = this.drawArcs({
+        size: size,
+        centerX: centerX,
+        centerY: centerY,
+        colorArr: colorArr,
+        series: series
+      });
+      elSeries.add(elG.g);
+
+      if (w.config.plotOptions.radialBar.hollow.position === 'front') {
+        elG.g.add(elG.elHollow);
+
+        if (elG.dataLabels) {
+          elG.g.add(elG.dataLabels);
+        }
+      }
+
+      ret.add(elSeries);
+      return ret;
+    }
+  }, {
+    key: "drawTracks",
+    value: function drawTracks(opts) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var g = graphics.group();
+      var filters = new Filters(this.ctx);
+      var fill = new Fill(this.ctx);
+      var strokeWidth = this.getStrokeWidth(opts);
+      opts.size = opts.size - strokeWidth / 2;
+
+      for (var i = 0; i < opts.series.length; i++) {
+        var elRadialBarTrack = graphics.group({
+          class: 'apexcharts-radialbar-track apexcharts-track'
+        });
+        g.add(elRadialBarTrack);
+        elRadialBarTrack.attr({
+          id: 'apexcharts-track-' + i,
+          rel: i + 1
+        });
+        opts.size = opts.size - strokeWidth - this.margin;
+        var trackConfig = w.config.plotOptions.radialBar.track;
+        var pathFill = fill.fillPath({
+          seriesNumber: 0,
+          size: opts.size,
+          fillColors: Array.isArray(trackConfig.background) ? trackConfig.background[i] : trackConfig.background,
+          solid: true
+        });
+        var startAngle = this.trackStartAngle;
+        var endAngle = this.trackEndAngle;
+        if (Math.abs(endAngle) + Math.abs(startAngle) >= 360) endAngle = 360 - Math.abs(this.startAngle) - 0.1;
+        var elPath = graphics.drawPath({
+          d: '',
+          stroke: pathFill,
+          strokeWidth: strokeWidth * parseInt(trackConfig.strokeWidth) / 100,
+          fill: 'none',
+          strokeOpacity: trackConfig.opacity,
+          classes: 'apexcharts-radialbar-area'
+        });
+
+        if (trackConfig.dropShadow.enabled) {
+          var shadow = trackConfig.dropShadow;
+          filters.dropShadow(elPath, shadow);
+        }
+
+        elRadialBarTrack.add(elPath);
+        elPath.attr('id', 'apexcharts-radialbarTrack-' + i);
+        var pie = new Pie(this.ctx);
+        pie.animatePaths(elPath, {
+          centerX: opts.centerX,
+          centerY: opts.centerY,
+          endAngle: endAngle,
+          startAngle: startAngle,
+          size: opts.size,
+          i: i,
+          totalItems: 2,
+          animBeginArr: 0,
+          dur: 0,
+          isTrack: true,
+          easing: w.globals.easing
+        });
+      }
+
+      return g;
+    }
+  }, {
+    key: "drawArcs",
+    value: function drawArcs(opts) {
+      var w = this.w; // size, donutSize, centerX, centerY, colorArr, lineColorArr, sectorAngleArr, series
+
+      var graphics = new Graphics(this.ctx);
+      var fill = new Fill(this.ctx);
+      var filters = new Filters(this.ctx);
+      var g = graphics.group();
+      var strokeWidth = this.getStrokeWidth(opts);
+      opts.size = opts.size - strokeWidth / 2;
+      var hollowFillID = w.config.plotOptions.radialBar.hollow.background;
+      var hollowSize = opts.size - strokeWidth * opts.series.length - this.margin * opts.series.length - strokeWidth * parseInt(w.config.plotOptions.radialBar.track.strokeWidth) / 100 / 2;
+      var hollowRadius = hollowSize - w.config.plotOptions.radialBar.hollow.margin;
+
+      if (w.config.plotOptions.radialBar.hollow.image !== undefined) {
+        hollowFillID = this.drawHollowImage(opts, g, hollowSize, hollowFillID);
+      }
+
+      var elHollow = this.drawHollow({
+        size: hollowRadius,
+        centerX: opts.centerX,
+        centerY: opts.centerY,
+        fill: hollowFillID
+      });
+
+      if (w.config.plotOptions.radialBar.hollow.dropShadow.enabled) {
+        var shadow = w.config.plotOptions.radialBar.hollow.dropShadow;
+        filters.dropShadow(elHollow, shadow);
+      }
+
+      var shown = 1;
+
+      if (!this.radialDataLabels.total.show && w.globals.series.length > 1) {
+        shown = 0;
+      }
+
+      var pie = new Pie(this.ctx);
+      var dataLabels = null;
+
+      if (this.radialDataLabels.show) {
+        dataLabels = pie.renderInnerDataLabels(this.radialDataLabels, {
+          hollowSize: hollowSize,
+          centerX: opts.centerX,
+          centerY: opts.centerY,
+          opacity: shown
+        });
+      }
+
+      if (w.config.plotOptions.radialBar.hollow.position === 'back') {
+        g.add(elHollow);
+
+        if (dataLabels) {
+          g.add(dataLabels);
+        }
+      }
+
+      var reverseLoop = false;
+
+      if (w.config.plotOptions.radialBar.inverseOrder) {
+        reverseLoop = true;
+      }
+
+      for (var i = reverseLoop ? opts.series.length - 1 : 0; reverseLoop ? i >= 0 : i < opts.series.length; reverseLoop ? i-- : i++) {
+        var elRadialBarArc = graphics.group({
+          class: "apexcharts-series apexcharts-radial-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[i])
+        });
+        g.add(elRadialBarArc);
+        elRadialBarArc.attr({
+          id: 'apexcharts-series-' + i,
+          rel: i + 1
+        });
+        this.ctx.series.addCollapsedClassToSeries(elRadialBarArc, i);
+        opts.size = opts.size - strokeWidth - this.margin;
+        var pathFill = fill.fillPath({
+          seriesNumber: i,
+          size: opts.size,
+          value: opts.series[i]
+        });
+        var startAngle = this.startAngle;
+        var prevStartAngle = void 0;
+        var totalAngle = Math.abs(w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle); // if data exceeds 100, make it 100
+
+        var dataValue = Utils.negToZero(opts.series[i] > 100 ? 100 : opts.series[i]) / 100;
+        var endAngle = Math.round(totalAngle * dataValue) + this.startAngle;
+        var prevEndAngle = void 0;
+
+        if (w.globals.dataChanged) {
+          prevStartAngle = this.startAngle;
+          prevEndAngle = Math.round(totalAngle * Utils.negToZero(w.globals.previousPaths[i]) / 100) + prevStartAngle;
+        }
+
+        var currFullAngle = Math.abs(endAngle) + Math.abs(startAngle);
+
+        if (currFullAngle >= 360) {
+          endAngle = endAngle - 0.01;
+        }
+
+        var prevFullAngle = Math.abs(prevEndAngle) + Math.abs(prevStartAngle);
+
+        if (prevFullAngle >= 360) {
+          prevEndAngle = prevEndAngle - 0.01;
+        }
+
+        var angle = endAngle - startAngle;
+        var dashArray = Array.isArray(w.config.stroke.dashArray) ? w.config.stroke.dashArray[i] : w.config.stroke.dashArray;
+        var elPath = graphics.drawPath({
+          d: '',
+          stroke: pathFill,
+          strokeWidth: strokeWidth,
+          fill: 'none',
+          fillOpacity: w.config.fill.opacity,
+          classes: 'apexcharts-radialbar-area',
+          strokeDashArray: dashArray
+        });
+        Graphics.setAttrs(elPath.node, {
+          'data:angle': angle,
+          'data:value': opts.series[i]
+        });
+
+        if (w.config.chart.dropShadow.enabled) {
+          var _shadow = w.config.chart.dropShadow;
+          filters.dropShadow(elPath, _shadow, i);
+        }
+
+        this.addListeners(elPath, this.radialDataLabels);
+
+        var _pie = new Pie(this.ctx);
+
+        elRadialBarArc.add(elPath);
+        elPath.attr({
+          id: 'apexcharts-radialbar-slice-' + i,
+          index: 0,
+          j: i
+        });
+        var dur = 0;
+
+        if (_pie.initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+          dur = (endAngle - startAngle) / 360 * w.config.chart.animations.speed;
+          this.animDur = dur / (opts.series.length * 1.2) + this.animDur;
+          this.animBeginArr.push(this.animDur);
+        }
+
+        if (w.globals.dataChanged) {
+          dur = (endAngle - startAngle) / 360 * w.config.chart.animations.dynamicAnimation.speed;
+          this.animDur = dur / (opts.series.length * 1.2) + this.animDur;
+          this.animBeginArr.push(this.animDur);
+        }
+
+        _pie.animatePaths(elPath, {
+          centerX: opts.centerX,
+          centerY: opts.centerY,
+          endAngle: endAngle,
+          startAngle: startAngle,
+          prevEndAngle: prevEndAngle,
+          prevStartAngle: prevStartAngle,
+          size: opts.size,
+          i: i,
+          totalItems: 2,
+          animBeginArr: this.animBeginArr,
+          dur: dur,
+          shouldSetPrevPaths: true,
+          easing: w.globals.easing
+        });
+      }
+
+      return {
+        g: g,
+        elHollow: elHollow,
+        dataLabels: dataLabels
+      };
+    }
+  }, {
+    key: "drawHollow",
+    value: function drawHollow(opts) {
+      var graphics = new Graphics(this.ctx);
+      var circle = graphics.drawCircle(opts.size * 2);
+      circle.attr({
+        class: 'apexcharts-radialbar-hollow',
+        cx: opts.centerX,
+        cy: opts.centerY,
+        r: opts.size,
+        fill: opts.fill
+      });
+      return circle;
+    }
+  }, {
+    key: "drawHollowImage",
+    value: function drawHollowImage(opts, g, hollowSize, hollowFillID) {
+      var w = this.w;
+      var fill = new Fill(this.ctx);
+      var randID = (Math.random() + 1).toString(36).substring(4);
+      var hollowFillImg = w.config.plotOptions.radialBar.hollow.image;
+
+      if (w.config.plotOptions.radialBar.hollow.imageClipped) {
+        fill.clippedImgArea({
+          width: hollowSize,
+          height: hollowSize,
+          image: hollowFillImg,
+          patternID: "pattern".concat(w.globals.cuid).concat(randID)
+        });
+        hollowFillID = "url(#pattern".concat(w.globals.cuid).concat(randID, ")");
+      } else {
+        var imgWidth = w.config.plotOptions.radialBar.hollow.imageWidth;
+        var imgHeight = w.config.plotOptions.radialBar.hollow.imageHeight;
+
+        if (imgWidth === undefined && imgHeight === undefined) {
+          var image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) {
+            this.move(opts.centerX - loader.width / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - loader.height / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY);
+          });
+          g.add(image);
+        } else {
+          var _image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) {
+            this.move(opts.centerX - imgWidth / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - imgHeight / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY);
+            this.size(imgWidth, imgHeight);
+          });
+
+          g.add(_image);
+        }
+      }
+
+      return hollowFillID;
+    }
+  }, {
+    key: "getStrokeWidth",
+    value: function getStrokeWidth(opts) {
+      var w = this.w;
+      return opts.size * (100 - parseInt(w.config.plotOptions.radialBar.hollow.size)) / 100 / (opts.series.length + 1) - this.margin;
+    }
+  }]);
+
+  return Radial;
+}(Pie);
+
+/**
+ * ApexCharts RangeBar Class responsible for drawing Range/Timeline Bars.
+ *
+ * @module RangeBar
+ **/
+
+var RangeBar =
+/*#__PURE__*/
+function (_Bar) {
+  _inherits(RangeBar, _Bar);
+
+  function RangeBar() {
+    _classCallCheck(this, RangeBar);
+
+    return _possibleConstructorReturn(this, _getPrototypeOf(RangeBar).apply(this, arguments));
+  }
+
+  _createClass(RangeBar, [{
+    key: "draw",
+    value: function draw(series, seriesIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var fill = new Fill(this.ctx);
+      this.rangeBarOptions = this.w.config.plotOptions.rangeBar;
+      this.series = series;
+      this.seriesRangeStart = w.globals.seriesRangeStart;
+      this.seriesRangeEnd = w.globals.seriesRangeEnd;
+      this.initVariables(series);
+      var ret = graphics.group({
+        class: 'apexcharts-rangebar-series apexcharts-plot-series'
+      });
+
+      for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+        var pathTo = void 0,
+            pathFrom = void 0;
+        var x = void 0,
+            y = void 0,
+            xDivision = void 0,
+            // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+        yDivision = void 0,
+            // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+        zeroH = void 0,
+            // zeroH is the baseline where 0 meets y axis
+        zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+        var yArrj = []; // hold y values of current iterating series
+
+        var xArrj = []; // hold x values of current iterating series
+
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn
+
+        var elSeries = graphics.group({
+          class: "apexcharts-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+          rel: i + 1,
+          'data:realIndex': realIndex
+        });
+
+        if (series[i].length > 0) {
+          this.visibleI = this.visibleI + 1;
+        }
+
+        var strokeWidth = 0;
+        var barHeight = 0;
+        var barWidth = 0;
+
+        if (this.yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        var initPositions = this.initialPositions();
+        y = initPositions.y;
+        yDivision = initPositions.yDivision;
+        barHeight = initPositions.barHeight;
+        zeroW = initPositions.zeroW;
+        x = initPositions.x;
+        barWidth = initPositions.barWidth;
+        xDivision = initPositions.xDivision;
+        zeroH = initPositions.zeroH;
+        xArrj.push(x + barWidth / 2); // eldatalabels
+
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+
+        for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+          if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+            this.isNullValue = true;
+          } else {
+            this.isNullValue = false;
+          }
+
+          if (w.config.stroke.show) {
+            if (this.isNullValue) {
+              strokeWidth = 0;
+            } else {
+              strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+            }
+          }
+
+          var paths = null;
+
+          if (this.isHorizontal) {
+            paths = this.drawRangeBarPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              barHeight: barHeight,
+              strokeWidth: strokeWidth,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              zeroW: zeroW,
+              x: x,
+              y: y,
+              yDivision: yDivision,
+              elSeries: elSeries
+            });
+            barWidth = paths.barWidth;
+          } else {
+            paths = this.drawRangeColumnPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              x: x,
+              y: y,
+              xDivision: xDivision,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              barWidth: barWidth,
+              zeroH: zeroH,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries
+            });
+            barHeight = paths.barHeight;
+          }
+
+          pathTo = paths.pathTo;
+          pathFrom = paths.pathFrom;
+          y = paths.y;
+          x = paths.x; // push current X
+
+          if (j > 0) {
+            xArrj.push(x + barWidth / 2);
+          }
+
+          yArrj.push(y);
+          var pathFill = fill.fillPath({
+            seriesNumber: realIndex
+          });
+          var lineFill = w.globals.stroke.colors[realIndex];
+          elSeries = this.renderSeries({
+            realIndex: realIndex,
+            pathFill: pathFill,
+            lineFill: lineFill,
+            j: j,
+            i: i,
+            pathFrom: pathFrom,
+            pathTo: pathTo,
+            strokeWidth: strokeWidth,
+            elSeries: elSeries,
+            x: x,
+            y: y,
+            series: series,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            elDataLabelsWrap: elDataLabelsWrap,
+            visibleSeries: this.visibleI,
+            type: 'rangebar'
+          });
+        } // push all x val arrays into main xArr
+
+
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj;
+        ret.add(elSeries);
+      }
+
+      return ret;
+    }
+  }, {
+    key: "drawRangeColumnPaths",
+    value: function drawRangeColumnPaths(_ref) {
+      var indexes = _ref.indexes,
+          x = _ref.x,
+          y = _ref.y,
+          strokeWidth = _ref.strokeWidth,
+          xDivision = _ref.xDivision,
+          pathTo = _ref.pathTo,
+          pathFrom = _ref.pathFrom,
+          barWidth = _ref.barWidth,
+          zeroH = _ref.zeroH;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var i = indexes.i;
+      var j = indexes.j;
+      var yRatio = this.yRatio[this.yaxisIndex];
+      var realIndex = indexes.realIndex;
+      var range = this.getRangeValue(realIndex, j);
+      var y1 = Math.min(range.start, range.end);
+      var y2 = Math.max(range.start, range.end);
+
+      if (w.globals.isXNumeric) {
+        x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+      }
+
+      var barXPosition = x + barWidth * this.visibleI;
+
+      if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+        y1 = zeroH;
+      } else {
+        y1 = zeroH - y1 / yRatio;
+        y2 = zeroH - y2 / yRatio;
+      }
+
+      var barHeight = Math.abs(y2 - y1);
+      pathTo = graphics.move(barXPosition, zeroH);
+      pathFrom = graphics.move(barXPosition, y1);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j, true);
+      }
+
+      pathTo = graphics.move(barXPosition, y2) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition, y1) + graphics.line(barXPosition, y2 - strokeWidth / 2);
+      pathFrom = pathFrom + graphics.move(barXPosition, y1) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition, y1);
+
+      if (!w.globals.isXNumeric) {
+        x = x + xDivision;
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        barHeight: barHeight,
+        x: x,
+        y: y2,
+        barXPosition: barXPosition
+      };
+    }
+  }, {
+    key: "drawRangeBarPaths",
+    value: function drawRangeBarPaths(_ref2) {
+      var indexes = _ref2.indexes,
+          x = _ref2.x,
+          y = _ref2.y,
+          yDivision = _ref2.yDivision,
+          pathTo = _ref2.pathTo,
+          pathFrom = _ref2.pathFrom,
+          barHeight = _ref2.barHeight,
+          zeroW = _ref2.zeroW;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var i = indexes.i;
+      var j = indexes.j;
+      var realIndex = indexes.realIndex;
+      var x1 = zeroW;
+      var x2 = zeroW;
+
+      if (w.globals.isXNumeric) {
+        y = (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - barHeight;
+      }
+
+      var barYPosition = y + barHeight * this.visibleI;
+
+      if (typeof this.series[i][j] !== 'undefined' && this.series[i][j] !== null) {
+        x1 = zeroW + this.seriesRangeStart[i][j] / this.invertedYRatio;
+        x2 = zeroW + this.seriesRangeEnd[i][j] / this.invertedYRatio;
+      }
+
+      pathTo = graphics.move(zeroW, barYPosition);
+      pathFrom = graphics.move(zeroW, barYPosition);
+
+      if (w.globals.previousPaths.length > 0) {
+        pathFrom = this.getPathFrom(realIndex, j);
+      }
+
+      var barWidth = Math.abs(x2 - x1);
+      pathTo = graphics.move(x1, barYPosition) + graphics.line(x2, barYPosition) + graphics.line(x2, barYPosition + barHeight) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition);
+      pathFrom = pathFrom + graphics.line(x1, barYPosition) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition);
+
+      if (!w.globals.isXNumeric) {
+        y = y + yDivision;
+      }
+
+      return {
+        pathTo: pathTo,
+        pathFrom: pathFrom,
+        barWidth: barWidth,
+        x: x2,
+        y: y,
+        barYPosition: barYPosition
+      };
+    }
+  }, {
+    key: "getRangeValue",
+    value: function getRangeValue(i, j) {
+      var w = this.w;
+      return {
+        start: w.globals.seriesRangeStart[i][j],
+        end: w.globals.seriesRangeEnd[i][j]
+      };
+    }
+  }]);
+
+  return RangeBar;
+}(Bar);
+
+/**
+ * ApexCharts Line Class responsible for drawing Line / Area Charts.
+ * This class is also responsible for generating values for Bubble/Scatter charts, so need to rename it to Axis Charts to avoid confusions
+ * @module Line
+ **/
+
+var Line =
+/*#__PURE__*/
+function () {
+  function Line(ctx, xyRatios, isPointsChart) {
+    _classCallCheck(this, Line);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.xyRatios = xyRatios;
+    this.pointsChart = !(this.w.config.chart.type !== 'bubble' && this.w.config.chart.type !== 'scatter') || isPointsChart;
+    this.scatter = new Scatter(this.ctx);
+    this.noNegatives = this.w.globals.minX === Number.MAX_VALUE;
+    this.yaxisIndex = 0;
+  }
+
+  _createClass(Line, [{
+    key: "draw",
+    value: function draw(series, ptype, seriesIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var fill = new Fill(this.ctx);
+      var type = w.globals.comboCharts ? ptype : w.config.chart.type;
+      var ret = graphics.group({
+        class: "apexcharts-".concat(type, "-series apexcharts-plot-series")
+      });
+      var coreUtils = new CoreUtils(this.ctx, w);
+      series = coreUtils.getLogSeries(series);
+      var yRatio = this.xyRatios.yRatio;
+      yRatio = coreUtils.getLogYRatios(yRatio);
+      var zRatio = this.xyRatios.zRatio;
+      var xRatio = this.xyRatios.xRatio;
+      var baseLineY = this.xyRatios.baseLineY; // push all series in an array, so we can draw in reverse order (for stacked charts)
+
+      var allSeries = [];
+      var prevSeriesY = [];
+      var categoryAxisCorrection = 0;
+
+      for (var i = 0; i < series.length; i++) {
+        // width divided into equal parts
+        if (type === 'line' && (w.config.fill.type === 'gradient' || w.config.fill.type[i] === 'gradient')) {
+          // a small adjustment to allow gradient line to draw correctly for all same values
+
+          /* #fix https://github.com/apexcharts/apexcharts.js/issues/358 */
+          if (coreUtils.seriesHaveSameValues(i)) {
+            var gSeries = series[i].slice();
+            gSeries[gSeries.length - 1] = gSeries[gSeries.length - 1] + 0.000001;
+            series[i] = gSeries;
+          }
+        }
+
+        var xDivision = w.globals.gridWidth / w.globals.dataPoints;
+        var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;
+
+        if (yRatio.length > 1) {
+          this.yaxisIndex = realIndex;
+        }
+
+        this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;
+        var yArrj = []; // hold y values of current iterating series
+
+        var xArrj = []; // hold x values of current iterating series
+        // zeroY is the 0 value in y series which can be used in negative charts
+
+        var zeroY = w.globals.gridHeight - baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? baseLineY[this.yaxisIndex] * 2 : 0);
+        var areaBottomY = zeroY;
+
+        if (zeroY > w.globals.gridHeight) {
+          areaBottomY = w.globals.gridHeight;
+        }
+
+        categoryAxisCorrection = xDivision / 2;
+        var x = w.globals.padHorizontal + categoryAxisCorrection;
+        var y = 1;
+
+        if (w.globals.isXNumeric && w.globals.seriesX.length > 0) {
+          x = (w.globals.seriesX[realIndex][0] - w.globals.minX) / xRatio;
+        }
+
+        xArrj.push(x);
+        var linePath = void 0,
+            areaPath = void 0,
+            pathFromLine = void 0,
+            pathFromArea = void 0;
+        var linePaths = [];
+        var areaPaths = []; // el to which series will be drawn
+
+        var elSeries = graphics.group({
+          class: "apexcharts-series",
+          seriesName: Utils.escapeString(w.globals.seriesNames[realIndex])
+        }); // points
+
+        var elPointsMain = graphics.group({
+          class: 'apexcharts-series-markers-wrap'
+        }); // eldatalabels
+
+        var elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+        this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex);
+        var longestSeries = series[i].length === w.globals.dataPoints;
+        elSeries.attr({
+          'data:longestSeries': longestSeries,
+          rel: i + 1,
+          'data:realIndex': realIndex
+        });
+        this.appendPathFrom = true;
+        var pX = x;
+        var pY = void 0;
+        var prevX = pX;
+        var prevY = zeroY; // w.globals.svgHeight;
+
+        var lineYPosition = 0; // the first value in the current series is not null or undefined
+
+        var firstPrevY = this.determineFirstPrevY({
+          i: i,
+          series: series,
+          yRatio: yRatio[this.yaxisIndex],
+          zeroY: zeroY,
+          prevY: prevY,
+          prevSeriesY: prevSeriesY,
+          lineYPosition: lineYPosition
+        });
+        prevY = firstPrevY.prevY;
+        yArrj.push(prevY);
+        pY = prevY;
+
+        if (series[i][0] === null) {
+          // when the first value itself is null, we need to move the pointer to a location where a null value is not found
+          for (var s = 0; s < series[i].length; s++) {
+            if (series[i][s] !== null) {
+              prevX = xDivision * s;
+              prevY = zeroY - series[i][s] / yRatio[this.yaxisIndex];
+              linePath = graphics.move(prevX, prevY);
+              areaPath = graphics.move(prevX, areaBottomY);
+              break;
+            }
+          }
+        } else {
+          linePath = graphics.move(prevX, prevY);
+          areaPath = graphics.move(prevX, areaBottomY) + graphics.line(prevX, prevY);
+        }
+
+        pathFromLine = graphics.move(-1, zeroY) + graphics.line(-1, zeroY);
+        pathFromArea = graphics.move(-1, zeroY) + graphics.line(-1, zeroY);
+
+        if (w.globals.previousPaths.length > 0) {
+          var pathFrom = this.checkPreviousPaths({
+            pathFromLine: pathFromLine,
+            pathFromArea: pathFromArea,
+            realIndex: realIndex
+          });
+          pathFromLine = pathFrom.pathFromLine;
+          pathFromArea = pathFrom.pathFromArea;
+        }
+
+        var iterations = w.globals.dataPoints > 1 ? w.globals.dataPoints - 1 : w.globals.dataPoints;
+
+        for (var j = 0; j < iterations; j++) {
+          if (w.globals.isXNumeric) {
+            var sX = w.globals.seriesX[realIndex][j + 1];
+
+            if (typeof w.globals.seriesX[realIndex][j + 1] === 'undefined') {
+              /* fix #374 */
+              sX = w.globals.seriesX[realIndex][iterations - 1];
+            }
+
+            x = (sX - w.globals.minX) / xRatio;
+          } else {
+            x = x + xDivision;
+          }
+
+          var minY = Utils.isNumber(w.globals.minYArr[realIndex]) ? w.globals.minYArr[realIndex] : w.globals.minY;
+
+          if (w.config.chart.stacked) {
+            if (i > 0 && w.globals.collapsedSeries.length < w.config.series.length - 1) {
+              lineYPosition = prevSeriesY[i - 1][j + 1];
+            } else {
+              // the first series will not have prevY values
+              lineYPosition = zeroY;
+            }
+
+            if (typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null) {
+              y = lineYPosition - minY / yRatio[this.yaxisIndex] + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2;
+            } else {
+              y = lineYPosition - series[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2;
+            }
+          } else {
+            if (typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null) {
+              y = zeroY - minY / yRatio[this.yaxisIndex] + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2;
+            } else {
+              y = zeroY - series[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2;
+            }
+          } // push current X
+
+
+          xArrj.push(x); // push current Y that will be used as next series's bottom position
+
+          yArrj.push(y);
+          var calculatedPaths = this.createPaths({
+            series: series,
+            i: i,
+            j: j,
+            x: x,
+            y: y,
+            xDivision: xDivision,
+            pX: pX,
+            pY: pY,
+            areaBottomY: areaBottomY,
+            linePath: linePath,
+            areaPath: areaPath,
+            linePaths: linePaths,
+            areaPaths: areaPaths,
+            seriesIndex: seriesIndex
+          });
+          areaPaths = calculatedPaths.areaPaths;
+          linePaths = calculatedPaths.linePaths;
+          pX = calculatedPaths.pX;
+          pY = calculatedPaths.pY;
+          areaPath = calculatedPaths.areaPath;
+          linePath = calculatedPaths.linePath;
+
+          if (this.appendPathFrom) {
+            pathFromLine = pathFromLine + graphics.line(x, zeroY);
+            pathFromArea = pathFromArea + graphics.line(x, zeroY);
+          }
+
+          var pointsPos = this.calculatePoints({
+            series: series,
+            x: x,
+            y: y,
+            realIndex: realIndex,
+            i: i,
+            j: j,
+            prevY: prevY,
+            categoryAxisCorrection: categoryAxisCorrection,
+            xRatio: xRatio
+          });
+
+          if (!this.pointsChart) {
+            var markers = new Markers(this.ctx);
+
+            if (w.globals.dataPoints > 1) {
+              elPointsMain.node.classList.add('hidden');
+            }
+
+            var elPointsWrap = markers.plotChartMarkers(pointsPos, realIndex, j + 1);
+
+            if (elPointsWrap !== null) {
+              elPointsMain.add(elPointsWrap);
+            }
+          } else {
+            // scatter / bubble chart points creation
+            this.scatter.draw(elSeries, j, {
+              realIndex: realIndex,
+              pointsPos: pointsPos,
+              zRatio: zRatio,
+              elParent: elPointsMain
+            });
+          }
+
+          var dataLabelAlign = !series[i][j + 1] || series[i][j + 1] > series[i][j] ? 'top' : 'bottom';
+          var dataLabels = new DataLabels(this.ctx);
+          var drawnLabels = dataLabels.drawDataLabel(pointsPos, realIndex, j + 1, null, dataLabelAlign);
+
+          if (drawnLabels !== null) {
+            elDataLabelsWrap.add(drawnLabels);
+          }
+        } // push all current y values array to main PrevY Array
+
+
+        prevSeriesY.push(yArrj); // push all x val arrays into main xArr
+
+        w.globals.seriesXvalues[realIndex] = xArrj;
+        w.globals.seriesYvalues[realIndex] = yArrj; // these elements will be shown after area path animation completes
+
+        if (!this.pointsChart) {
+          w.globals.delayedElements.push({
+            el: elPointsMain.node,
+            index: realIndex
+          });
+        }
+
+        var defaultRenderedPathOptions = {
+          i: i,
+          realIndex: realIndex,
+          animationDelay: i,
+          initialSpeed: w.config.chart.animations.speed,
+          dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+          className: "apexcharts-".concat(type),
+          id: "apexcharts-".concat(type)
+        };
+
+        if (type === 'area') {
+          var pathFill = fill.fillPath({
+            seriesNumber: realIndex
+          });
+
+          for (var p = 0; p < areaPaths.length; p++) {
+            var renderedPath = graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+              pathFrom: pathFromArea,
+              pathTo: areaPaths[p],
+              stroke: 'none',
+              strokeWidth: 0,
+              strokeLineCap: null,
+              fill: pathFill
+            }));
+            elSeries.add(renderedPath);
+          }
+        }
+
+        if (w.config.stroke.show && !this.pointsChart) {
+          var lineFill = null;
+
+          if (type === 'line') {
+            // fillable lines only for lineChart
+            lineFill = fill.fillPath({
+              seriesNumber: realIndex,
+              i: i
+            });
+          } else {
+            lineFill = w.globals.stroke.colors[realIndex];
+          }
+
+          for (var _p = 0; _p < linePaths.length; _p++) {
+            var _renderedPath = graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+              pathFrom: pathFromLine,
+              pathTo: linePaths[_p],
+              stroke: lineFill,
+              strokeWidth: Array.isArray(w.config.stroke.width) ? w.config.stroke.width[realIndex] : w.config.stroke.width,
+              strokeLineCap: w.config.stroke.lineCap,
+              fill: 'none'
+            }));
+
+            elSeries.add(_renderedPath);
+          }
+        }
+
+        elSeries.add(elPointsMain);
+        elSeries.add(elDataLabelsWrap);
+        allSeries.push(elSeries);
+      }
+
+      for (var _s = allSeries.length; _s > 0; _s--) {
+        ret.add(allSeries[_s - 1]);
+      }
+
+      return ret;
+    }
+  }, {
+    key: "createPaths",
+    value: function createPaths(_ref) {
+      var series = _ref.series,
+          i = _ref.i,
+          j = _ref.j,
+          x = _ref.x,
+          y = _ref.y,
+          pX = _ref.pX,
+          pY = _ref.pY,
+          xDivision = _ref.xDivision,
+          areaBottomY = _ref.areaBottomY,
+          linePath = _ref.linePath,
+          areaPath = _ref.areaPath,
+          linePaths = _ref.linePaths,
+          areaPaths = _ref.areaPaths,
+          seriesIndex = _ref.seriesIndex;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var curve = w.config.stroke.curve;
+
+      if (Array.isArray(w.config.stroke.curve)) {
+        if (Array.isArray(seriesIndex)) {
+          curve = w.config.stroke.curve[seriesIndex[i]];
+        } else {
+          curve = w.config.stroke.curve[i];
+        }
+      } // logic of smooth curve derived from chartist
+      // CREDITS: https://gionkunz.github.io/chartist-js/
+
+
+      if (curve === 'smooth') {
+        var length = (x - pX) * 0.35;
+
+        if (w.globals.hasNullValues) {
+          if (series[i][j] !== null) {
+            if (series[i][j + 1] !== null) {
+              linePath = graphics.move(pX, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y);
+              areaPath = graphics.move(pX + 1, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y) + graphics.line(x, areaBottomY) + graphics.line(pX, areaBottomY) + 'z';
+            } else {
+              linePath = graphics.move(pX, pY);
+              areaPath = graphics.move(pX, pY) + 'z';
+            }
+          }
+
+          linePaths.push(linePath);
+          areaPaths.push(areaPath);
+        } else {
+          linePath = linePath + graphics.curve(pX + length, pY, x - length, y, x, y);
+          areaPath = areaPath + graphics.curve(pX + length, pY, x - length, y, x, y);
+        }
+
+        pX = x;
+        pY = y;
+
+        if (j === series[i].length - 2) {
+          // last loop, close path
+          areaPath = areaPath + graphics.curve(pX, pY, x, y, x, areaBottomY) + graphics.move(x, y) + 'z';
+
+          if (!w.globals.hasNullValues) {
+            linePaths.push(linePath);
+            areaPaths.push(areaPath);
+          }
+        }
+      } else {
+        if (series[i][j + 1] === null) {
+          linePath = linePath + graphics.move(x, y);
+          areaPath = areaPath + graphics.line(x - xDivision, areaBottomY) + graphics.move(x, y);
+        }
+
+        if (series[i][j] === null) {
+          linePath = linePath + graphics.move(x, y);
+          areaPath = areaPath + graphics.move(x, areaBottomY);
+        }
+
+        if (curve === 'stepline') {
+          linePath = linePath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V');
+          areaPath = areaPath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V');
+        } else if (curve === 'straight') {
+          linePath = linePath + graphics.line(x, y);
+          areaPath = areaPath + graphics.line(x, y);
+        }
+
+        if (j === series[i].length - 2) {
+          // last loop, close path
+          areaPath = areaPath + graphics.line(x, areaBottomY) + graphics.move(x, y) + 'z';
+          linePaths.push(linePath);
+          areaPaths.push(areaPath);
+        }
+      }
+
+      return {
+        linePaths: linePaths,
+        areaPaths: areaPaths,
+        pX: pX,
+        pY: pY,
+        linePath: linePath,
+        areaPath: areaPath
+      };
+    }
+  }, {
+    key: "calculatePoints",
+    value: function calculatePoints(_ref2) {
+      var series = _ref2.series,
+          realIndex = _ref2.realIndex,
+          x = _ref2.x,
+          y = _ref2.y,
+          i = _ref2.i,
+          j = _ref2.j,
+          prevY = _ref2.prevY,
+          categoryAxisCorrection = _ref2.categoryAxisCorrection,
+          xRatio = _ref2.xRatio;
+      var w = this.w;
+      var ptX = [];
+      var ptY = [];
+
+      if (j === 0) {
+        var xPT1st = categoryAxisCorrection + w.config.markers.offsetX; // the first point for line series
+        // we need to check whether it's not a time series, because a time series may
+        // start from the middle of the x axis
+
+        if (w.globals.isXNumeric) {
+          xPT1st = (w.globals.seriesX[realIndex][0] - w.globals.minX) / xRatio + w.config.markers.offsetX;
+        } // push 2 points for the first data values
+
+
+        ptX.push(xPT1st);
+        ptY.push(Utils.isNumber(series[i][0]) ? prevY + w.config.markers.offsetY : null);
+        ptX.push(x + w.config.markers.offsetX);
+        ptY.push(Utils.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null);
+      } else {
+        ptX.push(x + w.config.markers.offsetX);
+        ptY.push(Utils.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null);
+      }
+
+      var pointsPos = {
+        x: ptX,
+        y: ptY
+      };
+      return pointsPos;
+    }
+  }, {
+    key: "checkPreviousPaths",
+    value: function checkPreviousPaths(_ref3) {
+      var pathFromLine = _ref3.pathFromLine,
+          pathFromArea = _ref3.pathFromArea,
+          realIndex = _ref3.realIndex;
+      var w = this.w;
+
+      for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+        var gpp = w.globals.previousPaths[pp];
+
+        if ((gpp.type === 'line' || gpp.type === 'area') && gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+          if (gpp.type === 'line') {
+            this.appendPathFrom = false;
+            pathFromLine = w.globals.previousPaths[pp].paths[0].d;
+          } else if (gpp.type === 'area') {
+            this.appendPathFrom = false;
+            pathFromArea = w.globals.previousPaths[pp].paths[0].d;
+
+            if (w.config.stroke.show) {
+              pathFromLine = w.globals.previousPaths[pp].paths[1].d;
+            }
+          }
+        }
+      }
+
+      return {
+        pathFromLine: pathFromLine,
+        pathFromArea: pathFromArea
+      };
+    }
+  }, {
+    key: "determineFirstPrevY",
+    value: function determineFirstPrevY(_ref4) {
+      var i = _ref4.i,
+          series = _ref4.series,
+          yRatio = _ref4.yRatio,
+          zeroY = _ref4.zeroY,
+          prevY = _ref4.prevY,
+          prevSeriesY = _ref4.prevSeriesY,
+          lineYPosition = _ref4.lineYPosition;
+      var w = this.w;
+
+      if (typeof series[i][0] !== 'undefined') {
+        if (w.config.chart.stacked) {
+          if (i > 0) {
+            // 1st y value of previous series
+            lineYPosition = prevSeriesY[i - 1][0];
+          } else {
+            // the first series will not have prevY values
+            lineYPosition = zeroY;
+          }
+
+          prevY = lineYPosition - series[i][0] / yRatio + (this.isReversed ? series[i][0] / yRatio : 0) * 2;
+        } else {
+          prevY = zeroY - series[i][0] / yRatio + (this.isReversed ? series[i][0] / yRatio : 0) * 2;
+        }
+      } else {
+        // the first value in the current series is null
+        if (w.config.chart.stacked && i > 0 && typeof series[i][0] === 'undefined') {
+          // check for undefined value (undefined value will occur when we clear the series while user clicks on legend to hide serieses)
+          for (var s = i - 1; s >= 0; s--) {
+            // for loop to get to 1st previous value until we get it
+            if (series[s][0] !== null && typeof series[s][0] !== 'undefined') {
+              lineYPosition = prevSeriesY[s][0];
+              prevY = lineYPosition;
+              break;
+            }
+          }
+        }
+      }
+
+      return {
+        prevY: prevY,
+        lineYPosition: lineYPosition
+      };
+    }
+  }]);
+
+  return Line;
+}();
+
+/**
+ * ApexCharts Formatter Class for setting value formatters for axes as well as tooltips.
+ *
+ * @module Formatters
+ **/
+
+var Formatters =
+/*#__PURE__*/
+function () {
+  function Formatters(ctx) {
+    _classCallCheck(this, Formatters);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.tooltipKeyFormat = 'dd MMM';
+  }
+
+  _createClass(Formatters, [{
+    key: "xLabelFormat",
+    value: function xLabelFormat(fn, val) {
+      var w = this.w;
+
+      if (w.config.xaxis.type === 'datetime') {
+        // if user has not specified a custom formatter, use the default tooltip.x.format
+        if (w.config.tooltip.x.formatter === undefined) {
+          var datetimeObj = new DateTime(this.ctx);
+          return datetimeObj.formatDate(new Date(val), w.config.tooltip.x.format, true, true);
+        }
+      }
+
+      return fn(val);
+    }
+  }, {
+    key: "setLabelFormatters",
+    value: function setLabelFormatters() {
+      var w = this.w;
+
+      w.globals.xLabelFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.xaxisTooltipFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.ttKeyFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.ttZFormatter = function (val) {
+        return val;
+      };
+
+      w.globals.legendFormatter = function (val) {
+        return val;
+      };
+
+      if (typeof w.config.tooltip.x.formatter === 'function') {
+        w.globals.ttKeyFormatter = w.config.tooltip.x.formatter;
+      }
+
+      if (typeof w.config.xaxis.tooltip.formatter === 'function') {
+        w.globals.xaxisTooltipFormatter = w.config.xaxis.tooltip.formatter;
+      }
+
+      if (Array.isArray(w.config.tooltip.y)) {
+        w.globals.ttVal = w.config.tooltip.y;
+      } else {
+        if (w.config.tooltip.y.formatter !== undefined) {
+          w.globals.ttVal = w.config.tooltip.y;
+        }
+      }
+
+      if (w.config.tooltip.z.formatter !== undefined) {
+        w.globals.ttZFormatter = w.config.tooltip.z.formatter;
+      } // legend formatter - if user wants to append any global values of series to legend text
+
+
+      if (w.config.legend.formatter !== undefined) {
+        w.globals.legendFormatter = w.config.legend.formatter;
+      } // formatter function will always overwrite format property
+
+
+      if (w.config.xaxis.labels.formatter !== undefined) {
+        w.globals.xLabelFormatter = w.config.xaxis.labels.formatter;
+      } else {
+        w.globals.xLabelFormatter = function (val) {
+          if (Utils.isNumber(val)) {
+            // numeric xaxis may have smaller range, so defaulting to 1 decimal
+            if (w.config.xaxis.type === 'numeric' && w.globals.dataPoints < 50) {
+              return val.toFixed(1);
+            }
+
+            return val.toFixed(0);
+          }
+
+          return val;
+        };
+      } // formatter function will always overwrite format property
+
+
+      w.config.yaxis.forEach(function (yaxe, i) {
+        if (yaxe.labels.formatter !== undefined) {
+          w.globals.yLabelFormatters[i] = yaxe.labels.formatter;
+        } else {
+          w.globals.yLabelFormatters[i] = function (val) {
+            if (Utils.isNumber(val)) {
+              if (w.globals.yValueDecimal !== 0) {
+                return val.toFixed(yaxe.decimalsInFloat !== undefined ? yaxe.decimalsInFloat : w.globals.yValueDecimal);
+              } else if (w.globals.maxY - w.globals.minY < 5) {
+                return val.toFixed(1);
+              } else {
+                return val.toFixed(0);
+              }
+            }
+
+            return val;
+          };
+        }
+      });
+      return w.globals;
+    }
+  }, {
+    key: "heatmapLabelFormatters",
+    value: function heatmapLabelFormatters() {
+      var w = this.w;
+
+      if (w.config.chart.type === 'heatmap') {
+        w.globals.yAxisScale[0].result = w.globals.seriesNames.slice(); //  get the longest string from the labels array and also apply label formatter to it
+
+        var longest = w.globals.seriesNames.reduce(function (a, b) {
+          return a.length > b.length ? a : b;
+        }, 0);
+        w.globals.yAxisScale[0].niceMax = longest;
+        w.globals.yAxisScale[0].niceMin = longest;
+      }
+    }
+  }]);
+
+  return Formatters;
+}();
+
+var AxesUtils =
+/*#__PURE__*/
+function () {
+  function AxesUtils(ctx) {
+    _classCallCheck(this, AxesUtils);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  } // Based on the formatter function, get the label text and position
+
+
+  _createClass(AxesUtils, [{
+    key: "getLabel",
+    value: function getLabel(labels, timelineLabels, x, i) {
+      var drawnLabels = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
+      var w = this.w;
+      var rawLabel = typeof labels[i] === 'undefined' ? '' : labels[i];
+      var label;
+      var xlbFormatter = w.globals.xLabelFormatter;
+      var customFormatter = w.config.xaxis.labels.formatter;
+      var xFormat = new Formatters(this.ctx);
+      label = xFormat.xLabelFormat(xlbFormatter, rawLabel);
+
+      if (customFormatter !== undefined) {
+        label = customFormatter(rawLabel, labels[i], i);
+      }
+
+      if (timelineLabels.length > 0) {
+        x = timelineLabels[i].position;
+        label = timelineLabels[i].value;
+      } else {
+        if (w.config.xaxis.type === 'datetime' && customFormatter === undefined) {
+          label = '';
+        }
+      }
+
+      if (typeof label === 'undefined') label = '';
+      label = label.toString();
+
+      if (label.indexOf('NaN') === 0 || label.toLowerCase().indexOf('invalid') === 0 || label.toLowerCase().indexOf('infinity') >= 0 || drawnLabels.indexOf(label) >= 0 && !w.config.xaxis.labels.showDuplicates) {
+        label = '';
+      }
+
+      return {
+        x: x,
+        text: label
+      };
+    }
+  }, {
+    key: "drawYAxisTicks",
+    value: function drawYAxisTicks(x, tickAmount, axisBorder, axisTicks, realIndex, labelsDivider, elYaxis) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx); // initial label position = 0;
+
+      var t = w.globals.translateY;
+
+      if (axisTicks.show) {
+        if (w.config.yaxis[realIndex].opposite === true) x = x + axisTicks.width;
+
+        for (var i = tickAmount; i >= 0; i--) {
+          var tY = t + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY - 1;
+
+          if (w.globals.isBarHorizontal) {
+            tY = labelsDivider * i;
+          }
+
+          var elTick = graphics.drawLine(x + axisBorder.offsetX - axisTicks.width + axisTicks.offsetX, tY + axisTicks.offsetY, x + axisBorder.offsetX + axisTicks.offsetX, tY + axisTicks.offsetY, axisBorder.color);
+          elYaxis.add(elTick);
+          t = t + labelsDivider;
+        }
+      }
+    }
+  }]);
+
+  return AxesUtils;
+}();
+
+/**
+ * ApexCharts XAxis Class for drawing X-Axis.
+ *
+ * @module XAxis
+ **/
+
+var XAxis =
+/*#__PURE__*/
+function () {
+  function XAxis(ctx) {
+    _classCallCheck(this, XAxis);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+    this.xaxisLabels = w.globals.labels.slice();
+
+    if (w.globals.timelineLabels.length > 0) {
+      //  timeline labels are there
+      this.xaxisLabels = w.globals.timelineLabels.slice();
+    }
+
+    this.drawnLabels = [];
+
+    if (w.config.xaxis.position === 'top') {
+      this.offY = 0;
+    } else {
+      this.offY = w.globals.gridHeight + 1;
+    }
+
+    this.offY = this.offY + w.config.xaxis.axisBorder.offsetY;
+    this.xaxisFontSize = w.config.xaxis.labels.style.fontSize;
+    this.xaxisFontFamily = w.config.xaxis.labels.style.fontFamily;
+    this.xaxisForeColors = w.config.xaxis.labels.style.colors;
+    this.xaxisBorderWidth = w.config.xaxis.axisBorder.width;
+
+    if (this.xaxisBorderWidth.indexOf('%') > -1) {
+      this.xaxisBorderWidth = w.globals.gridWidth * parseInt(this.xaxisBorderWidth) / 100;
+    } else {
+      this.xaxisBorderWidth = parseInt(this.xaxisBorderWidth);
+    }
+
+    this.xaxisBorderHeight = w.config.xaxis.axisBorder.height; // For bars, we will only consider single y xais,
+    // as we are not providing multiple yaxis for bar charts
+
+    this.yaxis = w.config.yaxis[0];
+    this.axesUtils = new AxesUtils(ctx);
+  }
+
+  _createClass(XAxis, [{
+    key: "drawXaxis",
+    value: function drawXaxis() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var elXaxis = graphics.group({
+        class: 'apexcharts-xaxis',
+        transform: "translate(".concat(w.config.xaxis.offsetX, ", ").concat(w.config.xaxis.offsetY, ")")
+      });
+      var elXaxisTexts = graphics.group({
+        class: 'apexcharts-xaxis-texts-g',
+        transform: "translate(".concat(w.globals.translateXAxisX, ", ").concat(w.globals.translateXAxisY, ")")
+      });
+      elXaxis.add(elXaxisTexts);
+      var colWidth; // initial x Position (keep adding column width in the loop)
+
+      var xPos = w.globals.padHorizontal;
+      var labels = [];
+
+      for (var i = 0; i < this.xaxisLabels.length; i++) {
+        labels.push(this.xaxisLabels[i]);
+      }
+
+      if (w.globals.isXNumeric) {
+        colWidth = w.globals.gridWidth / (labels.length - 1);
+        xPos = xPos + colWidth / 2 + w.config.xaxis.labels.offsetX;
+      } else {
+        colWidth = w.globals.gridWidth / labels.length;
+        xPos = xPos + colWidth + w.config.xaxis.labels.offsetX;
+      }
+
+      var labelsLen = labels.length;
+
+      if (w.config.xaxis.labels.show) {
+        for (var _i = 0; _i <= labelsLen - 1; _i++) {
+          var x = xPos - colWidth / 2 + w.config.xaxis.labels.offsetX;
+          var label = this.axesUtils.getLabel(labels, w.globals.timelineLabels, x, _i, this.drawnLabels);
+          this.drawnLabels.push(label.text);
+          var offsetYCorrection = 28;
+
+          if (w.globals.rotateXLabels) {
+            offsetYCorrection = 22;
+          }
+
+          var elTick = graphics.drawText({
+            x: label.x,
+            y: this.offY + w.config.xaxis.labels.offsetY + offsetYCorrection,
+            text: '',
+            textAnchor: 'middle',
+            fontSize: this.xaxisFontSize,
+            fontFamily: this.xaxisFontFamily,
+            foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[_i] : this.xaxisForeColors,
+            cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass
+          });
+
+          if (_i === labelsLen - 1) {
+            if (w.globals.skipLastTimelinelabel) {
+              label.text = '';
+            }
+          }
+
+          elXaxisTexts.add(elTick);
+          graphics.addTspan(elTick, label.text, this.xaxisFontFamily);
+          var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title');
+          elTooltipTitle.textContent = label.text;
+          elTick.node.appendChild(elTooltipTitle);
+          xPos = xPos + colWidth;
+        }
+      }
+
+      if (w.config.xaxis.title.text !== undefined) {
+        var elXaxisTitle = graphics.group({
+          class: 'apexcharts-xaxis-title'
+        });
+        var elXAxisTitleText = graphics.drawText({
+          x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX,
+          y: this.offY - parseInt(this.xaxisFontSize) + w.globals.xAxisLabelsHeight + w.config.xaxis.title.offsetY,
+          text: w.config.xaxis.title.text,
+          textAnchor: 'middle',
+          fontSize: w.config.xaxis.title.style.fontSize,
+          fontFamily: w.config.xaxis.title.style.fontFamily,
+          foreColor: w.config.xaxis.title.style.color,
+          cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass
+        });
+        elXaxisTitle.add(elXAxisTitleText);
+        elXaxis.add(elXaxisTitle);
+      }
+
+      if (w.config.xaxis.axisBorder.show) {
+        var lineCorrection = 0;
+
+        if (w.config.chart.type === 'bar' && w.globals.isXNumeric) {
+          lineCorrection = lineCorrection - 15;
+        }
+
+        var elHorzLine = graphics.drawLine(w.globals.padHorizontal + lineCorrection + w.config.xaxis.axisBorder.offsetX, this.offY, this.xaxisBorderWidth, this.offY, w.config.xaxis.axisBorder.color, 0, this.xaxisBorderHeight);
+        elXaxis.add(elHorzLine);
+      }
+
+      return elXaxis;
+    } // this actually becomes the vertical axis (for bar charts)
+
+  }, {
+    key: "drawXaxisInversed",
+    value: function drawXaxisInversed(realIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var translateYAxisX = w.config.yaxis[0].opposite ? w.globals.translateYAxisX[realIndex] : 0;
+      var elYaxis = graphics.group({
+        class: 'apexcharts-yaxis apexcharts-xaxis-inversed',
+        rel: realIndex
+      });
+      var elYaxisTexts = graphics.group({
+        class: 'apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g',
+        transform: 'translate(' + translateYAxisX + ', 0)'
+      });
+      elYaxis.add(elYaxisTexts);
+      var colHeight; // initial x Position (keep adding column width in the loop)
+
+      var yPos;
+      var labels = [];
+
+      for (var i = 0; i < this.xaxisLabels.length; i++) {
+        labels.push(this.xaxisLabels[i]);
+      }
+
+      colHeight = w.globals.gridHeight / labels.length;
+      yPos = -(colHeight / 2.2);
+      var lbFormatter = w.globals.yLabelFormatters[0];
+      var ylabels = w.config.yaxis[0].labels;
+
+      if (ylabels.show) {
+        for (var _i2 = 0; _i2 <= labels.length - 1; _i2++) {
+          var label = typeof labels[_i2] === 'undefined' ? '' : labels[_i2];
+          label = lbFormatter(label);
+          var elLabel = graphics.drawText({
+            x: ylabels.offsetX - 15,
+            y: yPos + colHeight + ylabels.offsetY,
+            text: label,
+            textAnchor: this.yaxis.opposite ? 'start' : 'end',
+            foreColor: ylabels.style.color ? ylabels.style.color : ylabels.style.colors[_i2],
+            fontSize: ylabels.style.fontSize,
+            fontFamily: ylabels.style.fontFamily,
+            cssClass: 'apexcharts-yaxis-label ' + ylabels.style.cssClass
+          });
+          elYaxisTexts.add(elLabel);
+
+          if (w.config.yaxis[realIndex].labels.rotate !== 0) {
+            var labelRotatingCenter = graphics.rotateAroundCenter(elLabel.node);
+            elLabel.node.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].labels.rotate, " ").concat(labelRotatingCenter.x, " ").concat(labelRotatingCenter.y, ")"));
+          }
+
+          yPos = yPos + colHeight;
+        }
+      }
+
+      if (w.config.yaxis[0].title.text !== undefined) {
+        var elXaxisTitle = graphics.group({
+          class: 'apexcharts-yaxis-title apexcharts-xaxis-title-inversed',
+          transform: 'translate(' + translateYAxisX + ', 0)'
+        });
+        var elXAxisTitleText = graphics.drawText({
+          x: 0,
+          y: w.globals.gridHeight / 2,
+          text: w.config.yaxis[0].title.text,
+          textAnchor: 'middle',
+          foreColor: w.config.yaxis[0].title.style.color,
+          fontSize: w.config.yaxis[0].title.style.fontSize,
+          fontFamily: w.config.yaxis[0].title.style.fontFamily,
+          cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[0].title.style.cssClass
+        });
+        elXaxisTitle.add(elXAxisTitleText);
+        elYaxis.add(elXaxisTitle);
+      }
+
+      if (w.config.xaxis.axisBorder.show) {
+        var elHorzLine = graphics.drawLine(w.globals.padHorizontal + w.config.xaxis.axisBorder.offsetX, this.offY, this.xaxisBorderWidth, this.offY, this.yaxis.axisBorder.color, 0, this.xaxisBorderHeight);
+        elYaxis.add(elHorzLine);
+        this.axesUtils.drawYAxisTicks(0, labels.length, w.config.yaxis[0].axisBorder, w.config.yaxis[0].axisTicks, 0, colHeight, elYaxis);
+      }
+
+      return elYaxis;
+    }
+  }, {
+    key: "drawXaxisTicks",
+    value: function drawXaxisTicks(x1, appendToElement) {
+      var w = this.w;
+      var x2 = x1;
+      if (x1 < 0 || x1 > w.globals.gridWidth) return;
+      var y1 = this.offY + w.config.xaxis.axisTicks.offsetY;
+      var y2 = y1 + w.config.xaxis.axisTicks.height;
+
+      if (w.config.xaxis.axisTicks.show) {
+        var graphics = new Graphics(this.ctx);
+        var line = graphics.drawLine(x1 + w.config.xaxis.axisTicks.offsetX, y1 + w.config.xaxis.offsetY, x2 + w.config.xaxis.axisTicks.offsetX, y2 + w.config.xaxis.offsetY, w.config.xaxis.axisTicks.color); // we are not returning anything, but appending directly to the element pased in param
+
+        appendToElement.add(line);
+        line.node.classList.add('apexcharts-xaxis-tick');
+      }
+    }
+  }, {
+    key: "getXAxisTicksPositions",
+    value: function getXAxisTicksPositions() {
+      var w = this.w;
+      var xAxisTicksPositions = [];
+      var xCount = this.xaxisLabels.length;
+      var x1 = w.globals.padHorizontal;
+
+      if (w.globals.timelineLabels.length > 0) {
+        for (var i = 0; i < xCount; i++) {
+          x1 = this.xaxisLabels[i].position;
+          xAxisTicksPositions.push(x1);
+        }
+      } else {
+        var xCountForCategoryCharts = xCount;
+
+        for (var _i3 = 0; _i3 < xCountForCategoryCharts; _i3++) {
+          var x1Count = xCountForCategoryCharts;
+
+          if (w.globals.isXNumeric && w.config.chart.type !== 'bar') {
+            x1Count -= 1;
+          }
+
+          x1 = x1 + w.globals.gridWidth / x1Count;
+          xAxisTicksPositions.push(x1);
+        }
+      }
+
+      return xAxisTicksPositions;
+    } // to rotate x-axis labels or to put ... for longer text in xaxis
+
+  }, {
+    key: "xAxisLabelCorrections",
+    value: function xAxisLabelCorrections() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var xAxis = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g');
+      var xAxisTexts = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-texts-g text');
+      var yAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-inversed text');
+      var xAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-inversed-texts-g text');
+
+      if (w.globals.rotateXLabels || w.config.xaxis.labels.rotateAlways) {
+        for (var xat = 0; xat < xAxisTexts.length; xat++) {
+          var textRotatingCenter = graphics.rotateAroundCenter(xAxisTexts[xat]);
+          textRotatingCenter.y = textRotatingCenter.y - 1; // + tickWidth/4;
+
+          textRotatingCenter.x = textRotatingCenter.x + 1;
+          xAxisTexts[xat].setAttribute('transform', "rotate(".concat(w.config.xaxis.labels.rotate, " ").concat(textRotatingCenter.x, " ").concat(textRotatingCenter.y, ")"));
+          xAxisTexts[xat].setAttribute('text-anchor', "end");
+          var offsetHeight = 10;
+          xAxis.setAttribute('transform', "translate(0, ".concat(-offsetHeight, ")"));
+          var tSpan = xAxisTexts[xat].childNodes;
+
+          if (w.config.xaxis.labels.trim) {
+            graphics.placeTextWithEllipsis(tSpan[0], tSpan[0].textContent, w.config.xaxis.labels.maxHeight - 40);
+          }
+        }
+      } else {
+        var width = w.globals.gridWidth / w.globals.labels.length;
+
+        for (var _xat = 0; _xat < xAxisTexts.length; _xat++) {
+          var _tSpan = xAxisTexts[_xat].childNodes;
+
+          if (w.config.xaxis.labels.trim && w.config.xaxis.type !== 'datetime') {
+            graphics.placeTextWithEllipsis(_tSpan[0], _tSpan[0].textContent, width);
+          }
+        }
+      }
+
+      if (yAxisTextsInversed.length > 0) {
+        // truncate rotated y axis in bar chart (x axis)
+        var firstLabelPosX = yAxisTextsInversed[yAxisTextsInversed.length - 1].getBBox();
+        var lastLabelPosX = yAxisTextsInversed[0].getBBox();
+
+        if (firstLabelPosX.x < -20) {
+          yAxisTextsInversed[yAxisTextsInversed.length - 1].parentNode.removeChild(yAxisTextsInversed[yAxisTextsInversed.length - 1]);
+        }
+
+        if (lastLabelPosX.x + lastLabelPosX.width > w.globals.gridWidth) {
+          yAxisTextsInversed[0].parentNode.removeChild(yAxisTextsInversed[0]);
+        } // truncate rotated x axis in bar chart (y axis)
+
+
+        for (var _xat2 = 0; _xat2 < xAxisTextsInversed.length; _xat2++) {
+          graphics.placeTextWithEllipsis(xAxisTextsInversed[_xat2], xAxisTextsInversed[_xat2].textContent, w.config.yaxis[0].labels.maxWidth - parseInt(w.config.yaxis[0].title.style.fontSize) * 2 - 20);
+        }
+      }
+    } // renderXAxisBands() {
+    //   let w = this.w;
+    //   let plotBand = document.createElementNS(w.globals.SVGNS, 'rect')
+    //   w.globals.dom.elGraphical.add(plotBand)
+    // }
+
+  }]);
+
+  return XAxis;
+}();
+
+/**
+ * ApexCharts YAxis Class for drawing Y-Axis.
+ *
+ * @module YAxis
+ **/
+
+var YAxis =
+/*#__PURE__*/
+function () {
+  function YAxis(ctx) {
+    _classCallCheck(this, YAxis);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+    this.xaxisFontSize = w.config.xaxis.labels.style.fontSize;
+    this.axisFontFamily = w.config.xaxis.labels.style.fontFamily;
+    this.xaxisForeColors = w.config.xaxis.labels.style.colors;
+    this.xAxisoffX = 0;
+
+    if (w.config.xaxis.position === 'bottom') {
+      this.xAxisoffX = w.globals.gridHeight;
+    }
+
+    this.drawnLabels = [];
+    this.axesUtils = new AxesUtils(ctx);
+  }
+
+  _createClass(YAxis, [{
+    key: "drawYaxis",
+    value: function drawYaxis(realIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var yaxisFontSize = w.config.yaxis[realIndex].labels.style.fontSize;
+      var yaxisFontFamily = w.config.yaxis[realIndex].labels.style.fontFamily;
+      var elYaxis = graphics.group({
+        class: 'apexcharts-yaxis',
+        rel: realIndex,
+        transform: 'translate(' + w.globals.translateYAxisX[realIndex] + ', 0)'
+      });
+
+      if (!w.config.yaxis[realIndex].show) {
+        return elYaxis;
+      }
+
+      var elYaxisTexts = graphics.group({
+        class: 'apexcharts-yaxis-texts-g'
+      });
+      elYaxis.add(elYaxisTexts);
+      var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg height/number of ticks
+
+      var labelsDivider = w.globals.gridHeight / tickAmount + 0.1; // initial label position = 0;
+
+      var l = w.globals.translateY;
+      var lbFormatter = w.globals.yLabelFormatters[realIndex];
+      var labels = w.globals.yAxisScale[realIndex].result.slice();
+
+      if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].reversed) {
+        labels.reverse();
+      }
+
+      if (w.config.yaxis[realIndex].labels.show) {
+        for (var i = tickAmount; i >= 0; i--) {
+          var val = labels[i];
+          val = lbFormatter(val, i);
+          var xPad = w.config.yaxis[realIndex].labels.padding;
+
+          if (w.config.yaxis[realIndex].opposite && w.config.yaxis.length !== 0) {
+            xPad = xPad * -1;
+          }
+
+          var label = graphics.drawText({
+            x: xPad,
+            y: l + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY + 1,
+            text: val,
+            textAnchor: w.config.yaxis[realIndex].opposite ? 'start' : 'end',
+            fontSize: yaxisFontSize,
+            fontFamily: yaxisFontFamily,
+            foreColor: w.config.yaxis[realIndex].labels.style.color,
+            cssClass: 'apexcharts-yaxis-label ' + w.config.yaxis[realIndex].labels.style.cssClass
+          });
+          elYaxisTexts.add(label);
+          var labelRotatingCenter = graphics.rotateAroundCenter(label.node);
+
+          if (w.config.yaxis[realIndex].labels.rotate !== 0) {
+            label.node.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].labels.rotate, " ").concat(labelRotatingCenter.x, " ").concat(labelRotatingCenter.y, ")"));
+          }
+
+          l = l + labelsDivider;
+        }
+      }
+
+      if (w.config.yaxis[realIndex].title.text !== undefined) {
+        var elYaxisTitle = graphics.group({
+          class: 'apexcharts-yaxis-title'
+        });
+        var x = 0;
+
+        if (w.config.yaxis[realIndex].opposite) {
+          x = w.globals.translateYAxisX[realIndex];
+        }
+
+        var elYAxisTitleText = graphics.drawText({
+          x: x,
+          y: w.globals.gridHeight / 2 + w.globals.translateY,
+          text: w.config.yaxis[realIndex].title.text,
+          textAnchor: 'end',
+          foreColor: w.config.yaxis[realIndex].title.style.color,
+          fontSize: w.config.yaxis[realIndex].title.style.fontSize,
+          fontFamily: w.config.yaxis[realIndex].title.style.fontFamily,
+          cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[realIndex].title.style.cssClass
+        });
+        elYaxisTitle.add(elYAxisTitleText);
+        elYaxis.add(elYaxisTitle);
+      }
+
+      var axisBorder = w.config.yaxis[realIndex].axisBorder;
+
+      if (axisBorder.show) {
+        var _x = 31 + axisBorder.offsetX;
+
+        if (w.config.yaxis[realIndex].opposite) {
+          _x = -31 - axisBorder.offsetX;
+        }
+
+        var elVerticalLine = graphics.drawLine(_x, w.globals.translateY + axisBorder.offsetY - 2, _x, w.globals.gridHeight + w.globals.translateY + axisBorder.offsetY + 2, axisBorder.color);
+        elYaxis.add(elVerticalLine);
+        this.axesUtils.drawYAxisTicks(_x, tickAmount, axisBorder, w.config.yaxis[realIndex].axisTicks, realIndex, labelsDivider, elYaxis);
+      }
+
+      return elYaxis;
+    } // This actually becomes horizonal axis (for bar charts)
+
+  }, {
+    key: "drawYaxisInversed",
+    value: function drawYaxisInversed(realIndex) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var elXaxis = graphics.group({
+        class: 'apexcharts-xaxis apexcharts-yaxis-inversed'
+      });
+      var elXaxisTexts = graphics.group({
+        class: 'apexcharts-xaxis-texts-g',
+        transform: "translate(".concat(w.globals.translateXAxisX, ", ").concat(w.globals.translateXAxisY, ")")
+      });
+      elXaxis.add(elXaxisTexts);
+      var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg width/number of ticks
+
+      var labelsDivider = w.globals.gridWidth / tickAmount + 0.1; // initial label position;
+
+      var l = labelsDivider + w.config.xaxis.labels.offsetX;
+      var lbFormatter = w.globals.xLabelFormatter;
+      var labels = w.globals.yAxisScale[realIndex].result.slice();
+      var timelineLabels = w.globals.invertedTimelineLabels;
+
+      if (timelineLabels.length > 0) {
+        this.xaxisLabels = timelineLabels.slice();
+        labels = timelineLabels.slice();
+        tickAmount = labels.length;
+      }
+
+      if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].reversed) {
+        labels.reverse();
+      }
+
+      var tl = timelineLabels.length;
+
+      if (w.config.xaxis.labels.show) {
+        for (var i = tl ? 0 : tickAmount; tl ? i < tl - 1 : i >= 0; tl ? i++ : i--) {
+          var val = labels[i];
+          val = lbFormatter(val, i);
+          var x = w.globals.gridWidth + w.globals.padHorizontal - (l - labelsDivider + w.config.xaxis.labels.offsetX);
+
+          if (timelineLabels.length) {
+            var label = this.axesUtils.getLabel(labels, timelineLabels, x, i, this.drawnLabels);
+            x = label.x;
+            val = label.text;
+            this.drawnLabels.push(label.text);
+          }
+
+          var elTick = graphics.drawText({
+            x: x,
+            y: this.xAxisoffX + w.config.xaxis.labels.offsetY + 30,
+            text: '',
+            textAnchor: 'middle',
+            foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[realIndex] : this.xaxisForeColors,
+            fontSize: this.xaxisFontSize,
+            fontFamily: this.xaxisFontFamily,
+            cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass
+          });
+          elXaxisTexts.add(elTick);
+          elTick.tspan(val);
+          var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title');
+          elTooltipTitle.textContent = val;
+          elTick.node.appendChild(elTooltipTitle);
+          l = l + labelsDivider;
+        }
+      }
+
+      if (w.config.xaxis.title.text !== undefined) {
+        var elYaxisTitle = graphics.group({
+          class: 'apexcharts-xaxis-title apexcharts-yaxis-title-inversed'
+        });
+        var elYAxisTitleText = graphics.drawText({
+          x: w.globals.gridWidth / 2,
+          y: this.xAxisoffX + parseInt(this.xaxisFontSize) + parseInt(w.config.xaxis.title.style.fontSize) + 20,
+          text: w.config.xaxis.title.text,
+          textAnchor: 'middle',
+          fontSize: w.config.xaxis.title.style.fontSize,
+          fontFamily: w.config.xaxis.title.style.fontFamily,
+          cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass
+        });
+        elYaxisTitle.add(elYAxisTitleText);
+        elXaxis.add(elYaxisTitle);
+      }
+
+      var axisBorder = w.config.yaxis[realIndex].axisBorder;
+
+      if (axisBorder.show) {
+        var elVerticalLine = graphics.drawLine(w.globals.padHorizontal + axisBorder.offsetX, 1 + axisBorder.offsetY, w.globals.padHorizontal + axisBorder.offsetX, w.globals.gridHeight + axisBorder.offsetY, axisBorder.color);
+        elXaxis.add(elVerticalLine);
+      }
+
+      return elXaxis;
+    }
+  }, {
+    key: "yAxisTitleRotate",
+    value: function yAxisTitleRotate(realIndex, yAxisOpposite) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var yAxisLabelsCoord = {
+        width: 0,
+        height: 0
+      };
+      var yAxisTitleCoord = {
+        width: 0,
+        height: 0
+      };
+      var elYAxisLabelsWrap = w.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(realIndex, "'] .apexcharts-yaxis-texts-g"));
+
+      if (elYAxisLabelsWrap !== null) {
+        yAxisLabelsCoord = elYAxisLabelsWrap.getBoundingClientRect();
+      }
+
+      var yAxisTitle = w.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(realIndex, "'] .apexcharts-yaxis-title text"));
+
+      if (yAxisTitle !== null) {
+        yAxisTitleCoord = yAxisTitle.getBoundingClientRect();
+      }
+
+      if (yAxisTitle !== null) {
+        var x = this.xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite);
+        yAxisTitle.setAttribute('x', x.xPos - (yAxisOpposite ? 10 : 0));
+      }
+
+      if (yAxisTitle !== null) {
+        var titleRotatingCenter = graphics.rotateAroundCenter(yAxisTitle);
+
+        if (!yAxisOpposite) {
+          yAxisTitle.setAttribute('transform', "rotate(-".concat(w.config.yaxis[realIndex].title.rotate, " ").concat(titleRotatingCenter.x, " ").concat(titleRotatingCenter.y, ")"));
+        } else {
+          yAxisTitle.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].title.rotate, " ").concat(titleRotatingCenter.x, " ").concat(titleRotatingCenter.y, ")"));
+        }
+      }
+    }
+  }, {
+    key: "xPaddingForYAxisTitle",
+    value: function xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite) {
+      var w = this.w;
+      var oppositeAxisCount = 0;
+      var x = 0;
+      var padd = 10;
+
+      if (w.config.yaxis[realIndex].title.text === undefined || realIndex < 0) {
+        return {
+          xPos: x,
+          padd: 0
+        };
+      }
+
+      if (yAxisOpposite) {
+        x = yAxisLabelsCoord.width + w.config.yaxis[realIndex].title.offsetX + yAxisTitleCoord.width / 2 + padd / 2;
+        oppositeAxisCount += 1;
+
+        if (oppositeAxisCount === 0) {
+          x = x - padd / 2;
+        }
+      } else {
+        x = yAxisLabelsCoord.width * -1 + w.config.yaxis[realIndex].title.offsetX + padd / 2 + yAxisTitleCoord.width / 2;
+
+        if (w.globals.isBarHorizontal) {
+          padd = 25;
+          x = yAxisLabelsCoord.width * -1 - w.config.yaxis[realIndex].title.offsetX - padd;
+        }
+      }
+
+      return {
+        xPos: x,
+        padd: padd
+      };
+    } // sets the x position of the y-axis by counting the labels width, title width and any offset
+
+  }, {
+    key: "setYAxisXPosition",
+    value: function setYAxisXPosition(yaxisLabelCoords, yTitleCoords) {
+      var w = this.w;
+      var xLeft = 0;
+      var xRight = 0;
+      var leftOffsetX = 21;
+      var rightOffsetX = 1;
+
+      if (w.config.yaxis.length > 1) {
+        this.multipleYs = true;
+      }
+
+      w.config.yaxis.map(function (yaxe, index) {
+        var shouldNotDrawAxis = w.globals.ignoreYAxisIndexes.indexOf(index) > -1 || !yaxe.show || yaxe.floating || yaxisLabelCoords[index].width === 0;
+        var axisWidth = yaxisLabelCoords[index].width + yTitleCoords[index].width;
+
+        if (!yaxe.opposite) {
+          xLeft = w.globals.translateX - leftOffsetX;
+
+          if (!shouldNotDrawAxis) {
+            leftOffsetX = leftOffsetX + axisWidth + 20;
+          }
+
+          w.globals.translateYAxisX[index] = xLeft + yaxe.labels.offsetX;
+        } else {
+          if (w.globals.isBarHorizontal) {
+            xRight = w.globals.gridWidth + w.globals.translateX - 1;
+            w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX;
+          } else {
+            xRight = w.globals.gridWidth + w.globals.translateX + rightOffsetX;
+
+            if (!shouldNotDrawAxis) {
+              rightOffsetX = rightOffsetX + axisWidth + 20;
+            }
+
+            w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX + 20;
+          }
+        }
+      });
+    }
+  }, {
+    key: "setYAxisTextAlignments",
+    value: function setYAxisTextAlignments() {
+      var w = this.w;
+      var yaxis = w.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis");
+      yaxis = Utils.listToArray(yaxis);
+      yaxis.forEach(function (y, index) {
+        var yaxe = w.config.yaxis[index]; // proceed only if user has specified alignment
+
+        if (yaxe.labels.align !== undefined) {
+          var yAxisInner = w.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(index, "'] .apexcharts-yaxis-texts-g"));
+          var yAxisTexts = w.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(index, "'] .apexcharts-yaxis-label"));
+          yAxisTexts = Utils.listToArray(yAxisTexts);
+          var rect = yAxisInner.getBoundingClientRect();
+
+          if (yaxe.labels.align === 'left') {
+            yAxisTexts.forEach(function (label, lI) {
+              label.setAttribute('text-anchor', 'start');
+            });
+
+            if (!yaxe.opposite) {
+              yAxisInner.setAttribute('transform', "translate(-".concat(rect.width, ", 0)"));
+            }
+          } else if (yaxe.labels.align === 'center') {
+            yAxisTexts.forEach(function (label, lI) {
+              label.setAttribute('text-anchor', 'middle');
+            });
+            yAxisInner.setAttribute('transform', "translate(".concat(rect.width / 2 * (!yaxe.opposite ? -1 : 1), ", 0)"));
+          } else if (yaxe.labels.align === 'right') {
+            yAxisTexts.forEach(function (label, lI) {
+              label.setAttribute('text-anchor', 'end');
+            });
+
+            if (yaxe.opposite) {
+              yAxisInner.setAttribute('transform', "translate(".concat(rect.width, ", 0)"));
+            }
+          }
+        }
+      });
+    }
+  }]);
+
+  return YAxis;
+}();
+
+var Range =
+/*#__PURE__*/
+function () {
+  function Range(ctx) {
+    _classCallCheck(this, Range);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  } // http://stackoverflow.com/questions/326679/choosing-an-attractive-linear-scale-for-a-graphs-y-axiss
+  // This routine creates the Y axis values for a graph.
+
+
+  _createClass(Range, [{
+    key: "niceScale",
+    value: function niceScale(yMin, yMax, diff) {
+      var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+      var ticks = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 10;
+      var w = this.w;
+      var NO_MIN_MAX_PROVIDED = this.w.config.yaxis[index].max === undefined && this.w.config.yaxis[index].min === undefined || this.w.config.yaxis[index].forceNiceScale;
+
+      if (yMin === Number.MIN_VALUE && yMax === 0 || !Utils.isNumber(yMin) && !Utils.isNumber(yMax) || yMin === Number.MIN_VALUE && yMax === -Number.MAX_VALUE) {
+        // when all values are 0
+        yMin = 0;
+        yMax = ticks;
+        var linearScale = this.linearScale(yMin, yMax, ticks);
+        return linearScale;
+      }
+
+      if (yMin > yMax) {
+        // if somehow due to some wrong config, user sent max less than min,
+        // adjust the min/max again
+        console.warn('yaxis.min cannot be greater than yaxis.max');
+        yMax = yMin + 0.1;
+      } else if (yMin === yMax) {
+        // If yMin and yMax are identical, then
+        // adjust the yMin and yMax values to actually
+        // make a graph. Also avoids division by zero errors.
+        yMin = yMin === 0 ? 0 : yMin - 0.5; // some small value
+
+        yMax = yMax === 0 ? 2 : yMax + 0.5; // some small value
+      } // Calculate Min amd Max graphical labels and graph
+      // increments.  The number of ticks defaults to
+      // 10 which is the SUGGESTED value.  Any tick value
+      // entered is used as a suggested value which is
+      // adjusted to be a 'pretty' value.
+      //
+      // Output will be an array of the Y axis values that
+      // encompass the Y values.
+
+
+      var result = []; // Determine Range
+
+      var range = Math.abs(yMax - yMin);
+
+      if (range < 1 && NO_MIN_MAX_PROVIDED && (w.config.chart.type === 'candlestick' || w.config.series[index].type === 'candlestick' || w.globals.isRangeData)) {
+        /* fix https://github.com/apexcharts/apexcharts.js/issues/430 */
+        yMax = yMax * 1.01;
+      } // for extremely small values - #fix #553
+
+
+      if (range < 0.00001 && NO_MIN_MAX_PROVIDED && yMax < 10) {
+        yMax = yMax * 1.05;
+      } else if (diff > 0.1 && diff < 3 && NO_MIN_MAX_PROVIDED) {
+        /* fix https://github.com/apexcharts/apexcharts.js/issues/576 */
+
+        /* fix https://github.com/apexcharts/apexcharts.js/issues/588 */
+        yMax = yMax + diff / 3;
+      }
+
+      var tiks = ticks + 1; // Adjust ticks if needed
+
+      if (tiks < 2) {
+        tiks = 2;
+      } else if (tiks > 2) {
+        tiks -= 2;
+      } // Get raw step value
+
+
+      var tempStep = range / tiks; // Calculate pretty step value
+
+      var mag = Math.floor(Utils.log10(tempStep));
+      var magPow = Math.pow(10, mag);
+      var magMsd = parseInt(tempStep / magPow);
+      var stepSize = magMsd * magPow; // build Y label array.
+      // Lower and upper bounds calculations
+
+      var lb = stepSize * Math.floor(yMin / stepSize);
+      var ub = stepSize * Math.ceil(yMax / stepSize); // Build array
+
+      var val = lb;
+
+      while (1) {
+        result.push(val);
+        val += stepSize;
+
+        if (val > ub) {
+          break;
+        }
+      }
+
+      if (NO_MIN_MAX_PROVIDED) {
+        return {
+          result: result,
+          niceMin: result[0],
+          niceMax: result[result.length - 1]
+        };
+      } else {
+        result = [];
+        var v = yMin;
+        result.push(v);
+        var valuesDivider = Math.abs(yMax - yMin) / ticks;
+
+        for (var i = 0; i <= ticks - 1; i++) {
+          v = v + valuesDivider;
+          result.push(v);
+        }
+
+        return {
+          result: result,
+          niceMin: result[0],
+          niceMax: result[result.length - 1]
+        };
+      }
+    }
+  }, {
+    key: "linearScale",
+    value: function linearScale(yMin, yMax) {
+      var ticks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
+      var range = Math.abs(yMax - yMin);
+      var step = range / ticks;
+
+      if (ticks === Number.MAX_VALUE) {
+        ticks = 10;
+        step = 1;
+      }
+
+      var result = [];
+      var v = yMin;
+
+      while (ticks >= 0) {
+        result.push(v);
+        v = v + step;
+        ticks -= 1;
+      }
+
+      return {
+        result: result,
+        niceMin: result[0],
+        niceMax: result[result.length - 1]
+      };
+    }
+  }, {
+    key: "logarithmicScale",
+    value: function logarithmicScale(index, yMin, yMax, ticks) {
+      if (yMin < 0 || yMin === Number.MIN_VALUE) yMin = 0.01;
+      var base = 10;
+      var min = Math.log(yMin) / Math.log(base);
+      var max = Math.log(yMax) / Math.log(base);
+      var range = Math.abs(yMax - yMin);
+      var step = range / ticks;
+      var result = [];
+      var v = yMin;
+
+      while (ticks >= 0) {
+        result.push(v);
+        v = v + step;
+        ticks -= 1;
+      }
+
+      var logs = result.map(function (niceNumber, i) {
+        if (niceNumber <= 0) {
+          niceNumber = 0.01;
+        } // calculate adjustment factor
+
+
+        var scale = (max - min) / (yMax - yMin);
+        var logVal = Math.pow(base, min + scale * (niceNumber - min));
+        return Math.round(logVal / Utils.roundToBase(logVal, base)) * Utils.roundToBase(logVal, base);
+      }); // Math.floor may have rounded the value to 0, revert back to 1
+
+      if (logs[0] === 0) logs[0] = 1;
+      return {
+        result: logs,
+        niceMin: logs[0],
+        niceMax: logs[logs.length - 1]
+      };
+    }
+  }, {
+    key: "setYScaleForIndex",
+    value: function setYScaleForIndex(index, minY, maxY) {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      var y = gl.isBarHorizontal ? cnf.xaxis : cnf.yaxis[index];
+
+      if (typeof gl.yAxisScale[index] === 'undefined') {
+        gl.yAxisScale[index] = [];
+      }
+
+      if (y.logarithmic) {
+        gl.allSeriesCollapsed = false;
+        gl.yAxisScale[index] = this.logarithmicScale(index, minY, maxY, y.tickAmount ? y.tickAmount : Math.floor(Math.log10(maxY)));
+      } else {
+        if (maxY === -Number.MAX_VALUE || !Utils.isNumber(maxY)) {
+          // no data in the chart. Either all series collapsed or user passed a blank array
+          gl.yAxisScale[index] = this.linearScale(0, 5, 5);
+        } else {
+          // there is some data. Turn off the allSeriesCollapsed flag
+          gl.allSeriesCollapsed = false;
+
+          if ((y.min !== undefined || y.max !== undefined) && !y.forceNiceScale) {
+            // fix https://github.com/apexcharts/apexcharts.js/issues/492
+            gl.yAxisScale[index] = this.linearScale(minY, maxY, y.tickAmount);
+          } else {
+            var diff = Math.abs(maxY - minY);
+            gl.yAxisScale[index] = this.niceScale(minY, maxY, diff, index, // fix https://github.com/apexcharts/apexcharts.js/issues/397
+            y.tickAmount ? y.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5);
+          }
+        }
+      }
+    }
+  }, {
+    key: "setMultipleYScales",
+    value: function setMultipleYScales() {
+      var _this = this;
+
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      var minYArr = gl.minYArr.concat([]);
+      var maxYArr = gl.maxYArr.concat([]);
+      var scalesIndices = []; // here, we loop through the yaxis array and find the item which has "seriesName" property
+
+      cnf.yaxis.forEach(function (yaxe, i) {
+        var index = i;
+        cnf.series.forEach(function (s, si) {
+          // if seriesName matches and that series is not collapsed, we use that scale
+          if (s.name === yaxe.seriesName && gl.collapsedSeriesIndices.indexOf(si) === -1) {
+            index = si;
+
+            if (i !== si) {
+              scalesIndices.push({
+                index: si,
+                similarIndex: i,
+                alreadyExists: true
+              });
+            } else {
+              scalesIndices.push({
+                index: si
+              });
+            }
+          }
+        });
+        var minY = minYArr[index];
+        var maxY = maxYArr[index];
+
+        _this.setYScaleForIndex(i, minY, maxY);
+      });
+      this.sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices);
+    }
+  }, {
+    key: "sameScaleInMultipleAxes",
+    value: function sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices) {
+      var _this2 = this;
+
+      var cnf = this.w.config;
+      var gl = this.w.globals; // we got the scalesIndices array in the above code, but we need to filter out the items which doesn't have same scales
+
+      var similarIndices = [];
+      scalesIndices.forEach(function (scale) {
+        if (scale.alreadyExists) {
+          if (typeof similarIndices[scale.index] === 'undefined') {
+            similarIndices[scale.index] = [];
+          }
+
+          similarIndices[scale.index].push(scale.index);
+          similarIndices[scale.index].push(scale.similarIndex);
+        }
+      });
+
+      function intersect(a, b) {
+        return a.filter(function (value) {
+          return b.indexOf(value) !== -1;
+        });
+      }
+
+      similarIndices.forEach(function (si, i) {
+        similarIndices.forEach(function (sj, j) {
+          if (i !== j) {
+            if (intersect(si, sj).length > 0) {
+              similarIndices[i] = similarIndices[i].concat(similarIndices[j]);
+            }
+          }
+        });
+      }); // then, we remove duplicates from the similarScale array
+
+      var uniqueSimilarIndices = similarIndices.map(function (item) {
+        return item.filter(function (i, pos) {
+          return item.indexOf(i) === pos;
+        });
+      }); // sort further to remove whole duplicate arrays later
+
+      var sortedIndices = uniqueSimilarIndices.map(function (s) {
+        return s.sort();
+      }); // remove undefined items
+
+      similarIndices = similarIndices.filter(function (s) {
+        return !!s;
+      });
+      var indices = sortedIndices.slice();
+      var stringIndices = indices.map(function (ind) {
+        return JSON.stringify(ind);
+      });
+      indices = indices.filter(function (ind, p) {
+        return stringIndices.indexOf(JSON.stringify(ind)) === p;
+      });
+      var sameScaleMinYArr = [];
+      var sameScaleMaxYArr = [];
+      minYArr.forEach(function (minYValue, yi) {
+        indices.forEach(function (scale, i) {
+          // we compare only the yIndex which exists in the indices array
+          if (scale.indexOf(yi) > -1) {
+            if (typeof sameScaleMinYArr[i] === 'undefined') {
+              sameScaleMinYArr[i] = [];
+              sameScaleMaxYArr[i] = [];
+            }
+
+            sameScaleMinYArr[i].push({
+              key: yi,
+              value: minYValue
+            });
+            sameScaleMaxYArr[i].push({
+              key: yi,
+              value: maxYArr[yi]
+            });
+          }
+        });
+      });
+      var sameScaleMin = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, Number.MIN_VALUE);
+      var sameScaleMax = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, -Number.MAX_VALUE);
+      sameScaleMinYArr.forEach(function (s, i) {
+        s.forEach(function (sc, j) {
+          sameScaleMin[i] = Math.min(sc.value, sameScaleMin[i]);
+        });
+      });
+      sameScaleMaxYArr.forEach(function (s, i) {
+        s.forEach(function (sc, j) {
+          sameScaleMax[i] = Math.max(sc.value, sameScaleMax[i]);
+        });
+      });
+      minYArr.forEach(function (min, i) {
+        sameScaleMaxYArr.forEach(function (s, si) {
+          var minY = sameScaleMin[si];
+          var maxY = sameScaleMax[si];
+          s.forEach(function (ind, k) {
+            if (s[k].key === i) {
+              if (cnf.yaxis[i].min !== undefined) {
+                if (typeof cnf.yaxis[i].min === 'function') {
+                  minY = cnf.yaxis[i].min(gl.minY);
+                } else {
+                  minY = cnf.yaxis[i].min;
+                }
+              }
+
+              if (cnf.yaxis[i].max !== undefined) {
+                if (typeof cnf.yaxis[i].max === 'function') {
+                  maxY = cnf.yaxis[i].max(gl.maxY);
+                } else {
+                  maxY = cnf.yaxis[i].max;
+                }
+              }
+
+              _this2.setYScaleForIndex(i, minY, maxY);
+            }
+          });
+        });
+      });
+    }
+  }, {
+    key: "autoScaleY",
+    value: function autoScaleY(ctx, e) {
+      if (!ctx) {
+        ctx = this;
+      }
+
+      var ret = [];
+      ctx.w.config.series.forEach(function (serie) {
+        var min, max;
+        var first = serie.data.find(function (x) {
+          return x[0] >= e.xaxis.min;
+        });
+        var firstValue = first[1];
+        max = min = firstValue;
+        serie.data.forEach(function (data) {
+          if (data[0] <= e.xaxis.max && data[0] >= e.xaxis.min) {
+            if (data[1] > max && data[1] !== null) max = data[1];
+            if (data[1] < min && data[1] !== null) min = data[1];
+          }
+        });
+        min *= 0.95;
+        max *= 1.05;
+        ret.push({
+          min: min,
+          max: max
+        });
+      });
+      return ret;
+    }
+  }]);
+
+  return Range;
+}();
+
+/**
+ * Range is used to generates values between min and max.
+ *
+ * @module Range
+ **/
+
+var Range$1 =
+/*#__PURE__*/
+function () {
+  function Range$$1(ctx) {
+    _classCallCheck(this, Range$$1);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.scales = new Range(ctx);
+  }
+
+  _createClass(Range$$1, [{
+    key: "init",
+    value: function init() {
+      this.setYRange();
+      this.setXRange();
+      this.setZRange();
+    }
+  }, {
+    key: "getMinYMaxY",
+    value: function getMinYMaxY(startingIndex) {
+      var lowestY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;
+      var highestY = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -Number.MAX_VALUE;
+      var len = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
+      var gl = this.w.globals;
+      var maxY = -Number.MAX_VALUE;
+      var minY = Number.MIN_VALUE;
+
+      if (len === null) {
+        len = startingIndex + 1;
+      }
+
+      var series = gl.series;
+      var seriesMin = series;
+      var seriesMax = series;
+
+      if (this.w.config.chart.type === 'candlestick') {
+        seriesMin = gl.seriesCandleL;
+        seriesMax = gl.seriesCandleH;
+      } else if (gl.isRangeData) {
+        seriesMin = gl.seriesRangeStart;
+        seriesMax = gl.seriesRangeEnd;
+      }
+
+      for (var i = startingIndex; i < len; i++) {
+        gl.dataPoints = Math.max(gl.dataPoints, series[i].length);
+
+        for (var j = 0; j < gl.series[i].length; j++) {
+          var val = series[i][j];
+
+          if (val !== null && Utils.isNumber(val)) {
+            maxY = Math.max(maxY, seriesMax[i][j]);
+            lowestY = Math.min(lowestY, seriesMin[i][j]);
+            highestY = Math.max(highestY, seriesMin[i][j]);
+
+            if (this.w.config.chart.type === 'candlestick') {
+              maxY = Math.max(maxY, gl.seriesCandleO[i][j]);
+              maxY = Math.max(maxY, gl.seriesCandleH[i][j]);
+              maxY = Math.max(maxY, gl.seriesCandleL[i][j]);
+              maxY = Math.max(maxY, gl.seriesCandleC[i][j]);
+              highestY = maxY;
+            }
+
+            if (Utils.isFloat(val)) {
+              val = Utils.noExponents(val);
+              gl.yValueDecimal = Math.max(gl.yValueDecimal, val.toString().split('.')[1].length);
+            }
+
+            if (minY > seriesMin[i][j] && seriesMin[i][j] < 0) {
+              minY = seriesMin[i][j];
+            }
+          } else {
+            gl.hasNullValues = true;
+          }
+        }
+      }
+
+      return {
+        minY: minY,
+        maxY: maxY,
+        lowestY: lowestY,
+        highestY: highestY
+      };
+    }
+  }, {
+    key: "setYRange",
+    value: function setYRange() {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      gl.maxY = -Number.MAX_VALUE;
+      gl.minY = Number.MIN_VALUE;
+      var lowestYInAllSeries = Number.MAX_VALUE;
+
+      if (gl.isMultipleYAxis) {
+        // we need to get minY and maxY for multiple y axis
+        for (var i = 0; i < gl.series.length; i++) {
+          var minYMaxYArr = this.getMinYMaxY(i, lowestYInAllSeries, null, i + 1);
+          gl.minYArr.push(minYMaxYArr.minY);
+          gl.maxYArr.push(minYMaxYArr.maxY);
+          lowestYInAllSeries = minYMaxYArr.lowestY;
+        }
+      } // and then, get the minY and maxY from all series
+
+
+      var minYMaxY = this.getMinYMaxY(0, lowestYInAllSeries, null, gl.series.length);
+      gl.minY = minYMaxY.minY;
+      gl.maxY = minYMaxY.maxY;
+      lowestYInAllSeries = minYMaxY.lowestY;
+
+      if (cnf.chart.stacked) {
+        // for stacked charts, we calculate each series's parallel values. i.e, series[0][j] + series[1][j] .... [series[i.length][j]] and get the max out of it
+        var stackedPoss = [];
+        var stackedNegs = [];
+
+        for (var j = 0; j < gl.series[gl.maxValsInArrayIndex].length; j++) {
+          var poss = 0;
+          var negs = 0;
+
+          for (var _i = 0; _i < gl.series.length; _i++) {
+            if (gl.series[_i][j] !== null && Utils.isNumber(gl.series[_i][j])) {
+              if (gl.series[_i][j] > 0) {
+                // 0.0001 fixes #185 when values are very small
+                poss = poss + parseFloat(gl.series[_i][j]) + 0.0001;
+              } else {
+                negs = negs + parseFloat(gl.series[_i][j]);
+              }
+            }
+
+            if (_i === gl.series.length - 1) {
+              // push all the totals to the array for future use
+              stackedPoss.push(poss);
+              stackedNegs.push(negs);
+            }
+          }
+        } // get the max/min out of the added parallel values
+
+
+        for (var z = 0; z < stackedPoss.length; z++) {
+          gl.maxY = Math.max(gl.maxY, stackedPoss[z]);
+          gl.minY = Math.min(gl.minY, stackedNegs[z]);
+        }
+      } // if the numbers are too big, reduce the range
+      // for eg, if number is between 100000-110000, putting 0 as the lowest value is not so good idea. So change the gl.minY for line/area/candlesticks
+
+
+      if (cnf.chart.type === 'line' || cnf.chart.type === 'area' || cnf.chart.type === 'candlestick') {
+        if (gl.minY === Number.MIN_VALUE && lowestYInAllSeries !== -Number.MAX_VALUE && lowestYInAllSeries !== gl.maxY // single value possibility
+        ) {
+            var diff = gl.maxY - lowestYInAllSeries;
+
+            if (lowestYInAllSeries >= 0 && lowestYInAllSeries <= 10) {
+              // if minY is already 0/low value, we don't want to go negatives here - so this check is essential.
+              diff = 0;
+            }
+
+            gl.minY = lowestYInAllSeries - diff * 5 / 100;
+            /* fix https://github.com/apexcharts/apexcharts.js/issues/426 */
+
+            gl.maxY = gl.maxY + diff * 5 / 100;
+          }
+      }
+
+      cnf.yaxis.map(function (yaxe, index) {
+        // override all min/max values by user defined values (y axis)
+        if (yaxe.max !== undefined) {
+          if (typeof yaxe.max === 'number') {
+            gl.maxYArr[index] = yaxe.max;
+          } else if (typeof yaxe.max === 'function') {
+            gl.maxYArr[index] = yaxe.max(gl.maxY);
+          } // gl.maxY is for single y-axis chart, it will be ignored in multi-yaxis
+
+
+          gl.maxY = gl.maxYArr[index];
+        }
+
+        if (yaxe.min !== undefined) {
+          if (typeof yaxe.min === 'number') {
+            gl.minYArr[index] = yaxe.min;
+          } else if (typeof yaxe.min === 'function') {
+            gl.minYArr[index] = yaxe.min(gl.minY);
+          } // gl.minY is for single y-axis chart, it will be ignored in multi-yaxis
+
+
+          gl.minY = gl.minYArr[index];
+        }
+      }); // for horizontal bar charts, we need to check xaxis min/max as user may have specified there
+
+      if (gl.isBarHorizontal) {
+        if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') {
+          gl.minY = cnf.xaxis.min;
+        }
+
+        if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') {
+          gl.maxY = cnf.xaxis.max;
+        }
+      } // for multi y-axis we need different scales for each
+
+
+      if (gl.isMultipleYAxis) {
+        this.scales.setMultipleYScales();
+        gl.minY = lowestYInAllSeries;
+        gl.yAxisScale.forEach(function (scale, i) {
+          gl.minYArr[i] = scale.niceMin;
+          gl.maxYArr[i] = scale.niceMax;
+        });
+      } else {
+        this.scales.setYScaleForIndex(0, gl.minY, gl.maxY);
+        gl.minY = gl.yAxisScale[0].niceMin;
+        gl.maxY = gl.yAxisScale[0].niceMax;
+        gl.minYArr[0] = gl.yAxisScale[0].niceMin;
+        gl.maxYArr[0] = gl.yAxisScale[0].niceMax;
+      }
+
+      return {
+        minY: gl.minY,
+        maxY: gl.maxY,
+        minYArr: gl.minYArr,
+        maxYArr: gl.maxYArr
+      };
+    }
+  }, {
+    key: "setXRange",
+    value: function setXRange() {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      var isXNumeric = cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'datetime' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided || gl.noLabelsProvided || gl.isXNumeric; // minX maxX starts here
+
+      if (gl.isXNumeric) {
+        for (var i = 0; i < gl.series.length; i++) {
+          if (gl.labels[i]) {
+            for (var j = 0; j < gl.labels[i].length; j++) {
+              if (gl.labels[i][j] !== null && Utils.isNumber(gl.labels[i][j])) {
+                gl.maxX = Math.max(gl.maxX, gl.labels[i][j]);
+                gl.initialmaxX = Math.max(gl.maxX, gl.labels[i][j]);
+                gl.minX = Math.min(gl.minX, gl.labels[i][j]);
+                gl.initialminX = Math.min(gl.minX, gl.labels[i][j]);
+              }
+            }
+          }
+        }
+      }
+
+      if (gl.noLabelsProvided) {
+        if (cnf.xaxis.categories.length === 0) {
+          gl.maxX = gl.labels[gl.labels.length - 1];
+          gl.initialmaxX = gl.labels[gl.labels.length - 1];
+          gl.minX = 1;
+          gl.initialminX = 1;
+        }
+      } // for numeric xaxis, we need to adjust some padding left and right for bar charts
+
+
+      if (gl.comboChartsHasBars || cnf.chart.type === 'candlestick' || cnf.chart.type === 'bar' && gl.isXNumeric) {
+        if (cnf.xaxis.type !== 'category' || gl.isXNumeric) {
+          var minX = gl.minX - gl.svgWidth / gl.dataPoints * (Math.abs(gl.maxX - gl.minX) / gl.svgWidth) / 2;
+          gl.minX = minX;
+          gl.initialminX = minX;
+          var maxX = gl.maxX + gl.svgWidth / gl.dataPoints * (Math.abs(gl.maxX - gl.minX) / gl.svgWidth) / 2;
+          gl.maxX = maxX;
+          gl.initialmaxX = maxX;
+        }
+      }
+
+      if ((gl.isXNumeric || gl.noLabelsProvided) && (!cnf.xaxis.convertedCatToNumeric || gl.dataFormatXNumeric)) {
+        var ticks;
+
+        if (cnf.xaxis.tickAmount === undefined) {
+          ticks = Math.round(gl.svgWidth / 150); // no labels provided and total number of dataPoints is less than 20
+
+          if (cnf.xaxis.type === 'numeric' && gl.dataPoints < 20) {
+            ticks = gl.dataPoints - 1;
+          } // this check is for when ticks exceeds total datapoints and that would result in duplicate labels
+
+
+          if (ticks > gl.dataPoints && gl.dataPoints !== 0) {
+            ticks = gl.dataPoints - 1;
+          }
+        } else if (cnf.xaxis.tickAmount === 'dataPoints') {
+          ticks = gl.series[gl.maxValsInArrayIndex].length - 1;
+        } else {
+          ticks = cnf.xaxis.tickAmount;
+        } // override all min/max values by user defined values (x axis)
+
+
+        if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') {
+          gl.maxX = cnf.xaxis.max;
+        }
+
+        if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') {
+          gl.minX = cnf.xaxis.min;
+        } // if range is provided, adjust the new minX
+
+
+        if (cnf.xaxis.range !== undefined) {
+          gl.minX = gl.maxX - cnf.xaxis.range;
+        }
+
+        if (gl.minX !== Number.MAX_VALUE && gl.maxX !== -Number.MAX_VALUE) {
+          gl.xAxisScale = this.scales.linearScale(gl.minX, gl.maxX, ticks);
+        } else {
+          gl.xAxisScale = this.scales.linearScale(1, ticks, ticks);
+
+          if (gl.noLabelsProvided && gl.labels.length > 0) {
+            gl.xAxisScale = this.scales.linearScale(1, gl.labels.length, ticks - 1); // this is the only place seriesX is again mutated
+
+            gl.seriesX = gl.labels.slice();
+          }
+        } // we will still store these labels as the count for this will be different (to draw grid and labels placement)
+
+
+        if (isXNumeric) {
+          gl.labels = gl.xAxisScale.result.slice();
+        }
+      }
+
+      if (gl.minX === gl.maxX) {
+        // single dataPoint
+        if (cnf.xaxis.type === 'datetime') {
+          var newMinX = new Date(gl.minX);
+          newMinX.setDate(newMinX.getDate() - 2);
+          gl.minX = new Date(newMinX).getTime();
+          var newMaxX = new Date(gl.maxX);
+          newMaxX.setDate(newMaxX.getDate() + 2);
+          gl.maxX = new Date(newMaxX).getTime();
+        } else if (cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided) {
+          gl.minX = gl.minX - 2;
+          gl.maxX = gl.maxX + 2;
+        }
+      }
+
+      if (gl.isXNumeric) {
+        // get the least x diff if numeric x axis is present
+        gl.seriesX.forEach(function (sX, i) {
+          sX.forEach(function (s, j) {
+            if (j > 0) {
+              var xDiff = s - gl.seriesX[i][j - 1];
+              gl.minXDiff = Math.min(xDiff, gl.minXDiff);
+            }
+          });
+        });
+        this.calcMinXDiffForTinySeries();
+      }
+
+      return {
+        minX: gl.minX,
+        maxX: gl.maxX
+      };
+    }
+  }, {
+    key: "calcMinXDiffForTinySeries",
+    value: function calcMinXDiffForTinySeries() {
+      var w = this.w;
+      var len = w.globals.labels.length;
+
+      if (w.globals.labels.length === 1) {
+        w.globals.minXDiff = (w.globals.maxX - w.globals.minX) / len / 3;
+      } else {
+        if (w.globals.minXDiff === Number.MAX_VALUE) {
+          // possibly a single dataPoint (fixes react-apexcharts/issue#34)
+          if (w.globals.timelineLabels.length > 0) {
+            len = w.globals.timelineLabels.length;
+          }
+
+          if (len < 3) {
+            len = 3;
+          }
+
+          w.globals.minXDiff = (w.globals.maxX - w.globals.minX) / len;
+        }
+      }
+
+      return w.globals.minXDiff;
+    }
+  }, {
+    key: "setZRange",
+    value: function setZRange() {
+      var gl = this.w.globals; // minZ, maxZ starts here
+
+      if (gl.isDataXYZ) {
+        for (var i = 0; i < gl.series.length; i++) {
+          if (typeof gl.seriesZ[i] !== 'undefined') {
+            for (var j = 0; j < gl.seriesZ[i].length; j++) {
+              if (gl.seriesZ[i][j] !== null && Utils.isNumber(gl.seriesZ[i][j])) {
+                gl.maxZ = Math.max(gl.maxZ, gl.seriesZ[i][j]);
+                gl.minZ = Math.min(gl.minZ, gl.seriesZ[i][j]);
+              }
+            }
+          }
+        }
+      }
+    }
+  }]);
+
+  return Range$$1;
+}();
+
+/**
+ * ApexCharts Series Class for interation with the Series of the chart.
+ *
+ * @module Series
+ **/
+
+var Series =
+/*#__PURE__*/
+function () {
+  function Series(ctx) {
+    _classCallCheck(this, Series);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Series, [{
+    key: "getAllSeriesEls",
+    value: function getAllSeriesEls() {
+      return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series");
+    }
+  }, {
+    key: "getSeriesByName",
+    value: function getSeriesByName(seriesName) {
+      return this.w.globals.dom.baseEl.querySelector("[seriesName='".concat(Utils.escapeString(seriesName), "']"));
+    }
+  }, {
+    key: "addCollapsedClassToSeries",
+    value: function addCollapsedClassToSeries(elSeries, index) {
+      var w = this.w;
+
+      function iterateOnAllCollapsedSeries(series) {
+        for (var cs = 0; cs < series.length; cs++) {
+          if (series[cs].index === index) {
+            elSeries.node.classList.add('apexcharts-series-collapsed');
+          }
+        }
+      }
+
+      iterateOnAllCollapsedSeries(w.globals.collapsedSeries);
+      iterateOnAllCollapsedSeries(w.globals.ancillaryCollapsedSeries);
+    }
+  }, {
+    key: "toggleSeriesOnHover",
+    value: function toggleSeriesOnHover(e, targetElement) {
+      var w = this.w;
+      var allSeriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series");
+
+      if (e.type === 'mousemove') {
+        var seriesCnt = parseInt(targetElement.getAttribute('rel')) - 1;
+        var seriesEl = null;
+
+        if (w.globals.axisCharts || w.config.chart.type === 'radialBar') {
+          if (w.globals.axisCharts) {
+            seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesCnt, "']"));
+          } else {
+            seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "']"));
+          }
+        } else {
+          seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "'] path"));
+        }
+
+        for (var se = 0; se < allSeriesEls.length; se++) {
+          allSeriesEls[se].classList.add('legend-mouseover-inactive');
+        }
+
+        if (seriesEl !== null) {
+          if (!w.globals.axisCharts) {
+            seriesEl.parentNode.classList.remove('legend-mouseover-inactive');
+          }
+
+          seriesEl.classList.remove('legend-mouseover-inactive');
+        }
+      } else if (e.type === 'mouseout') {
+        for (var _se = 0; _se < allSeriesEls.length; _se++) {
+          allSeriesEls[_se].classList.remove('legend-mouseover-inactive');
+        }
+      }
+    }
+  }, {
+    key: "highlightRangeInSeries",
+    value: function highlightRangeInSeries(e, targetElement) {
+      var w = this.w;
+      var allHeatMapElements = w.globals.dom.baseEl.querySelectorAll('.apexcharts-heatmap-rect');
+
+      var allActive = function allActive() {
+        for (var i = 0; i < allHeatMapElements.length; i++) {
+          allHeatMapElements[i].classList.remove('legend-mouseover-inactive');
+        }
+      };
+
+      var allInactive = function allInactive() {
+        for (var i = 0; i < allHeatMapElements.length; i++) {
+          allHeatMapElements[i].classList.add('legend-mouseover-inactive');
+        }
+      };
+
+      var selectedActive = function selectedActive(range) {
+        for (var i = 0; i < allHeatMapElements.length; i++) {
+          var val = parseInt(allHeatMapElements[i].getAttribute('val'));
+
+          if (val >= range.from && val <= range.to) {
+            allHeatMapElements[i].classList.remove('legend-mouseover-inactive');
+          }
+        }
+      };
+
+      if (e.type === 'mousemove') {
+        var seriesCnt = parseInt(targetElement.getAttribute('rel')) - 1;
+        allActive();
+        allInactive();
+        var range = w.config.plotOptions.heatmap.colorScale.ranges[seriesCnt];
+        selectedActive(range);
+      } else if (e.type === 'mouseout') {
+        allActive();
+      }
+    }
+  }, {
+    key: "getActiveSeriesIndex",
+    value: function getActiveSeriesIndex() {
+      var w = this.w;
+      var activeIndex = 0;
+
+      if (w.globals.series.length > 1) {
+        // active series flag is required to know if user has not deactivated via legend click
+        var firstActiveSeriesIndex = w.globals.series.map(function (series, index) {
+          if (series.length > 0 && w.config.series[index].type !== 'bar' && w.config.series[index].type !== 'column') {
+            return index;
+          } else {
+            return -1;
+          }
+        });
+
+        for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+          if (firstActiveSeriesIndex[a] !== -1) {
+            activeIndex = firstActiveSeriesIndex[a];
+            break;
+          }
+        }
+      }
+
+      return activeIndex;
+    }
+  }, {
+    key: "getActiveConfigSeriesIndex",
+    value: function getActiveConfigSeriesIndex() {
+      var w = this.w;
+      var activeIndex = 0;
+
+      if (w.config.series.length > 1) {
+        // active series flag is required to know if user has not deactivated via legend click
+        var firstActiveSeriesIndex = w.config.series.map(function (series, index) {
+          if (series.data && series.data.length > 0) {
+            return index;
+          } else {
+            return -1;
+          }
+        });
+
+        for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+          if (firstActiveSeriesIndex[a] !== -1) {
+            activeIndex = firstActiveSeriesIndex[a];
+            break;
+          }
+        }
+      }
+
+      return activeIndex;
+    }
+  }, {
+    key: "getPreviousPaths",
+    value: function getPreviousPaths() {
+      var w = this.w;
+      w.globals.previousPaths = [];
+
+      function pushPaths(seriesEls, i, type) {
+        var paths = seriesEls[i].childNodes;
+        var dArr = {
+          type: type,
+          paths: [],
+          realIndex: seriesEls[i].getAttribute('data:realIndex')
+        };
+
+        for (var j = 0; j < paths.length; j++) {
+          if (paths[j].hasAttribute('pathTo')) {
+            var d = paths[j].getAttribute('pathTo');
+            dArr.paths.push({
+              d: d
+            });
+          }
+        }
+
+        w.globals.previousPaths.push(dArr);
+      }
+
+      var linePaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-line-series .apexcharts-series');
+
+      if (linePaths.length > 0) {
+        for (var p = linePaths.length - 1; p >= 0; p--) {
+          pushPaths(linePaths, p, 'line');
+        }
+      }
+
+      var areapaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-area-series .apexcharts-series');
+
+      if (areapaths.length > 0) {
+        for (var i = areapaths.length - 1; i >= 0; i--) {
+          pushPaths(areapaths, i, 'area');
+        }
+      }
+
+      var barPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-series .apexcharts-series');
+
+      if (barPaths.length > 0) {
+        for (var _p = 0; _p < barPaths.length; _p++) {
+          pushPaths(barPaths, _p, 'bar');
+        }
+      }
+
+      var candlestickPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-candlestick-series .apexcharts-series');
+
+      if (candlestickPaths.length > 0) {
+        for (var _p2 = 0; _p2 < candlestickPaths.length; _p2++) {
+          pushPaths(candlestickPaths, _p2, 'candlestick');
+        }
+      }
+
+      var radarPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-radar-series .apexcharts-series');
+
+      if (radarPaths.length > 0) {
+        for (var _p3 = 0; _p3 < radarPaths.length; _p3++) {
+          pushPaths(radarPaths, _p3, 'radar');
+        }
+      }
+
+      var bubblepaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bubble-series .apexcharts-series');
+
+      if (bubblepaths.length > 0) {
+        for (var s = 0; s < bubblepaths.length; s++) {
+          var seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-bubble-series .apexcharts-series[data\\:realIndex='".concat(s, "'] circle"));
+          var dArr = [];
+
+          for (var _i = 0; _i < seriesEls.length; _i++) {
+            dArr.push({
+              x: seriesEls[_i].getAttribute('cx'),
+              y: seriesEls[_i].getAttribute('cy'),
+              r: seriesEls[_i].getAttribute('r')
+            });
+          }
+
+          w.globals.previousPaths.push(dArr);
+        }
+      }
+
+      var scatterpaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-scatter-series .apexcharts-series');
+
+      if (scatterpaths.length > 0) {
+        for (var _s = 0; _s < scatterpaths.length; _s++) {
+          var _seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-scatter-series .apexcharts-series[data\\:realIndex='".concat(_s, "'] circle"));
+
+          var _dArr = [];
+
+          for (var _i2 = 0; _i2 < _seriesEls.length; _i2++) {
+            _dArr.push({
+              x: _seriesEls[_i2].getAttribute('cx'),
+              y: _seriesEls[_i2].getAttribute('cy'),
+              r: _seriesEls[_i2].getAttribute('r')
+            });
+          }
+
+          w.globals.previousPaths.push(_dArr);
+        }
+      }
+
+      var heatmapColors = w.globals.dom.baseEl.querySelectorAll('.apexcharts-heatmap .apexcharts-series');
+
+      if (heatmapColors.length > 0) {
+        for (var h = 0; h < heatmapColors.length; h++) {
+          var _seriesEls2 = w.globals.dom.baseEl.querySelectorAll(".apexcharts-heatmap .apexcharts-series[data\\:realIndex='".concat(h, "'] rect"));
+
+          var _dArr2 = [];
+
+          for (var _i3 = 0; _i3 < _seriesEls2.length; _i3++) {
+            _dArr2.push({
+              color: _seriesEls2[_i3].getAttribute('color')
+            });
+          }
+
+          w.globals.previousPaths.push(_dArr2);
+        }
+      }
+
+      if (!w.globals.axisCharts) {
+        // for non-axis charts (i.e., circular charts, pathFrom is not usable. We need whole series)
+        w.globals.previousPaths = w.globals.series;
+      }
+    }
+  }, {
+    key: "handleNoData",
+    value: function handleNoData() {
+      var w = this.w;
+      var me = this;
+      var noDataOpts = w.config.noData;
+      var graphics = new Graphics(me.ctx);
+      var x = w.globals.svgWidth / 2;
+      var y = w.globals.svgHeight / 2;
+      var textAnchor = 'middle';
+      w.globals.noData = true;
+      w.globals.animationEnded = true;
+
+      if (noDataOpts.align === 'left') {
+        x = 10;
+        textAnchor = 'start';
+      } else if (noDataOpts.align === 'right') {
+        x = w.globals.svgWidth - 10;
+        textAnchor = 'end';
+      }
+
+      if (noDataOpts.verticalAlign === 'top') {
+        y = 50;
+      } else if (noDataOpts.verticalAlign === 'bottom') {
+        y = w.globals.svgHeight - 50;
+      }
+
+      x = x + noDataOpts.offsetX;
+      y = y + parseInt(noDataOpts.style.fontSize) + 2;
+
+      if (noDataOpts.text !== undefined && noDataOpts.text !== '') {
+        var titleText = graphics.drawText({
+          x: x,
+          y: y,
+          text: noDataOpts.text,
+          textAnchor: textAnchor,
+          fontSize: noDataOpts.style.fontSize,
+          fontFamily: noDataOpts.style.fontFamily,
+          foreColor: noDataOpts.style.color,
+          opacity: 1,
+          class: 'apexcharts-text-nodata'
+        });
+        titleText.node.setAttribute('class', 'apexcharts-title-text');
+        w.globals.dom.Paper.add(titleText);
+      }
+    } // When user clicks on legends, the collapsed series is filled with [0,0,0,...,0]
+    // This is because we don't want to alter the series' length as it is used at many places
+
+  }, {
+    key: "setNullSeriesToZeroValues",
+    value: function setNullSeriesToZeroValues(series) {
+      var w = this.w;
+
+      for (var sl = 0; sl < series.length; sl++) {
+        if (series[sl].length === 0) {
+          for (var j = 0; j < series[w.globals.maxValsInArrayIndex].length; j++) {
+            series[sl].push(0);
+          }
+        }
+      }
+
+      return series;
+    }
+  }, {
+    key: "hasAllSeriesEqualX",
+    value: function hasAllSeriesEqualX() {
+      var equalLen = true;
+      var w = this.w;
+      var filteredSerX = this.filteredSeriesX();
+
+      for (var i = 0; i < filteredSerX.length - 1; i++) {
+        if (filteredSerX[i][0] !== filteredSerX[i + 1][0]) {
+          equalLen = false;
+          break;
+        }
+      }
+
+      w.globals.allSeriesHasEqualX = equalLen;
+      return equalLen;
+    }
+  }, {
+    key: "filteredSeriesX",
+    value: function filteredSeriesX() {
+      var w = this.w;
+      var filteredSeriesX = w.globals.seriesX.map(function (ser, index) {
+        if (ser.length > 0) {
+          return ser;
+        } else {
+          return [];
+        }
+      });
+      return filteredSeriesX;
+    }
+  }]);
+
+  return Series;
+}();
+
+/**
+ * ApexCharts Dimensions Class for calculating rects of all elements that are drawn and will be drawn.
+ *
+ * @module Dimensions
+ **/
+
+var Dimensions =
+/*#__PURE__*/
+function () {
+  function Dimensions(ctx) {
+    _classCallCheck(this, Dimensions);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.lgRect = {};
+    this.yAxisWidth = 0;
+    this.xAxisHeight = 0;
+    this.isSparkline = this.w.config.chart.sparkline.enabled;
+    this.xPadRight = 0;
+    this.xPadLeft = 0;
+  }
+  /**
+   * @memberof Dimensions
+   * @param {object} w - chart context
+   **/
+
+
+  _createClass(Dimensions, [{
+    key: "plotCoords",
+    value: function plotCoords() {
+      var w = this.w;
+      var gl = w.globals;
+      var lgRect = this.getLegendsRect();
+
+      if (gl.axisCharts) {
+        // for line / area / scatter / column
+        this.setGridCoordsForAxisCharts(lgRect);
+      } else {
+        // for pie / donuts / circle
+        this.setGridCoordsForNonAxisCharts(lgRect);
+      }
+
+      this.titleSubtitleOffset(); // after calculating everything, apply padding set by user
+
+      gl.gridHeight = gl.gridHeight - w.config.grid.padding.top - w.config.grid.padding.bottom;
+      gl.gridWidth = gl.gridWidth - w.config.grid.padding.left - w.config.grid.padding.right - this.xPadRight - this.xPadLeft;
+      gl.translateX = gl.translateX + w.config.grid.padding.left + this.xPadLeft;
+      gl.translateY = gl.translateY + w.config.grid.padding.top;
+    }
+  }, {
+    key: "conditionalChecksForAxisCoords",
+    value: function conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords) {
+      var w = this.w;
+      this.xAxisHeight = (xaxisLabelCoords.height + xtitleCoords.height) * w.globals.LINE_HEIGHT_RATIO + 15;
+      this.xAxisWidth = xaxisLabelCoords.width;
+
+      if (this.xAxisHeight - xtitleCoords.height > w.config.xaxis.labels.maxHeight) {
+        this.xAxisHeight = w.config.xaxis.labels.maxHeight;
+      }
+
+      if (w.config.xaxis.labels.minHeight && this.xAxisHeight < w.config.xaxis.labels.minHeight) {
+        this.xAxisHeight = w.config.xaxis.labels.minHeight;
+      }
+
+      if (w.config.xaxis.floating) {
+        this.xAxisHeight = 0;
+      }
+
+      if (!w.globals.isBarHorizontal) {
+        this.yAxisWidth = this.getTotalYAxisWidth();
+      } else {
+        this.yAxisWidth = w.globals.yLabelsCoords[0].width + w.globals.yTitleCoords[0].width + 15;
+      }
+
+      var minYAxisWidth = 0;
+      var maxYAxisWidth = 0;
+      w.config.yaxis.forEach(function (y) {
+        minYAxisWidth += y.labels.minWidth;
+        maxYAxisWidth += y.labels.maxWidth;
+      });
+
+      if (this.yAxisWidth < minYAxisWidth) {
+        this.yAxisWidth = minYAxisWidth;
+      }
+
+      if (this.yAxisWidth > maxYAxisWidth) {
+        this.yAxisWidth = maxYAxisWidth;
+      }
+    }
+  }, {
+    key: "setGridCoordsForAxisCharts",
+    value: function setGridCoordsForAxisCharts(lgRect) {
+      var w = this.w;
+      var gl = w.globals;
+      var yaxisLabelCoords = this.getyAxisLabelsCoords();
+      var xaxisLabelCoords = this.getxAxisLabelsCoords();
+      var yTitleCoords = this.getyAxisTitleCoords();
+      var xtitleCoords = this.getxAxisTitleCoords();
+      w.globals.yLabelsCoords = [];
+      w.globals.yTitleCoords = [];
+      w.config.yaxis.map(function (yaxe, index) {
+        // store the labels and titles coords in global vars
+        w.globals.yLabelsCoords.push({
+          width: yaxisLabelCoords[index].width,
+          index: index
+        });
+        w.globals.yTitleCoords.push({
+          width: yTitleCoords[index].width,
+          index: index
+        });
+      });
+      this.conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords);
+      gl.translateXAxisY = w.globals.rotateXLabels ? this.xAxisHeight / 8 : -4;
+      gl.translateXAxisX = w.globals.rotateXLabels && w.globals.isXNumeric && w.config.xaxis.labels.rotate <= -45 ? -this.xAxisWidth / 4 : 0;
+
+      if (w.globals.isBarHorizontal) {
+        gl.rotateXLabels = false;
+        gl.translateXAxisY = -1 * (parseInt(w.config.xaxis.labels.style.fontSize) / 1.5);
+      }
+
+      gl.translateXAxisY = gl.translateXAxisY + w.config.xaxis.labels.offsetY;
+      gl.translateXAxisX = gl.translateXAxisX + w.config.xaxis.labels.offsetX;
+      var yAxisWidth = this.yAxisWidth;
+      var xAxisHeight = this.xAxisHeight;
+      gl.xAxisLabelsHeight = this.xAxisHeight;
+      gl.xAxisHeight = this.xAxisHeight;
+      var translateY = 10;
+
+      if (!w.config.grid.show || w.config.chart.type === 'radar') {
+        yAxisWidth = 0;
+        xAxisHeight = 35;
+      }
+
+      if (this.isSparkline) {
+        lgRect = {
+          height: 0,
+          width: 0
+        };
+        xAxisHeight = 0;
+        yAxisWidth = 0;
+        translateY = 0;
+      }
+
+      this.additionalPaddingXLabels(xaxisLabelCoords);
+
+      switch (w.config.legend.position) {
+        case 'bottom':
+          gl.translateY = translateY;
+          gl.translateX = yAxisWidth;
+          gl.gridHeight = gl.svgHeight - lgRect.height - xAxisHeight - (!this.isSparkline ? w.globals.rotateXLabels ? 10 : 15 : 0);
+          gl.gridWidth = gl.svgWidth - yAxisWidth;
+          break;
+
+        case 'top':
+          gl.translateY = lgRect.height + translateY;
+          gl.translateX = yAxisWidth;
+          gl.gridHeight = gl.svgHeight - lgRect.height - xAxisHeight - (!this.isSparkline ? w.globals.rotateXLabels ? 10 : 15 : 0);
+          gl.gridWidth = gl.svgWidth - yAxisWidth;
+          break;
+
+        case 'left':
+          gl.translateY = translateY;
+          gl.translateX = lgRect.width + yAxisWidth;
+          gl.gridHeight = gl.svgHeight - xAxisHeight - 12;
+          gl.gridWidth = gl.svgWidth - lgRect.width - yAxisWidth;
+          break;
+
+        case 'right':
+          gl.translateY = translateY;
+          gl.translateX = yAxisWidth;
+          gl.gridHeight = gl.svgHeight - xAxisHeight - 12;
+          gl.gridWidth = gl.svgWidth - lgRect.width - yAxisWidth - 5;
+          break;
+
+        default:
+          throw new Error('Legend position not supported');
+      }
+
+      this.setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords); // after drawing everything, set the Y axis positions
+
+      var objyAxis = new YAxis(this.ctx);
+      objyAxis.setYAxisXPosition(yaxisLabelCoords, yTitleCoords);
+    }
+  }, {
+    key: "setGridCoordsForNonAxisCharts",
+    value: function setGridCoordsForNonAxisCharts(lgRect) {
+      var w = this.w;
+      var gl = w.globals;
+      var xPad = 0;
+
+      if (w.config.legend.show && !w.config.legend.floating) {
+        xPad = 20;
+      }
+
+      var offY = 10;
+      var offX = 0;
+
+      if (w.config.chart.type === 'pie' || w.config.chart.type === 'donut') {
+        offY = offY + w.config.plotOptions.pie.offsetY;
+        offX = offX + w.config.plotOptions.pie.offsetX;
+      } else if (w.config.chart.type === 'radialBar') {
+        offY = offY + w.config.plotOptions.radialBar.offsetY;
+        offX = offX + w.config.plotOptions.radialBar.offsetX;
+      }
+
+      if (!w.config.legend.show) {
+        gl.gridHeight = gl.svgHeight - 35;
+        gl.gridWidth = gl.gridHeight;
+        gl.translateY = offY - 10;
+        gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+        return;
+      }
+
+      switch (w.config.legend.position) {
+        case 'bottom':
+          gl.gridHeight = gl.svgHeight - lgRect.height - 35;
+          gl.gridWidth = gl.gridHeight;
+          gl.translateY = offY - 20;
+          gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+          break;
+
+        case 'top':
+          gl.gridHeight = gl.svgHeight - lgRect.height - 35;
+          gl.gridWidth = gl.gridHeight;
+          gl.translateY = lgRect.height + offY;
+          gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+          break;
+
+        case 'left':
+          gl.gridWidth = gl.svgWidth - lgRect.width - xPad;
+          gl.gridHeight = gl.gridWidth;
+          gl.translateY = offY;
+          gl.translateX = offX + lgRect.width + xPad;
+          break;
+
+        case 'right':
+          gl.gridWidth = gl.svgWidth - lgRect.width - xPad - 5;
+          gl.gridHeight = gl.gridWidth;
+          gl.translateY = offY;
+          gl.translateX = offX + 10;
+          break;
+
+        default:
+          throw new Error('Legend position not supported');
+      }
+    }
+  }, {
+    key: "setGridXPosForDualYAxis",
+    value: function setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords) {
+      var w = this.w;
+      w.config.yaxis.map(function (yaxe, index) {
+        if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1 && !w.config.yaxis[index].floating && w.config.yaxis[index].show) {
+          if (yaxe.opposite) {
+            w.globals.translateX = w.globals.translateX - (yaxisLabelCoords[index].width + yTitleCoords[index].width) - parseInt(w.config.yaxis[index].labels.style.fontSize) / 1.2 - 12;
+          }
+        }
+      });
+    } // Sometimes, the last labels gets cropped in category/numeric xaxis.
+    // Hence, we add some additional padding based on the label length to avoid the last label being cropped.
+    // NOTE: datetime x-axis won't have any effect with this as we don't know the label length there due to many constraints.
+
+  }, {
+    key: "additionalPaddingXLabels",
+    value: function additionalPaddingXLabels(xaxisLabelCoords) {
+      var _this = this;
+
+      var w = this.w;
+
+      if (w.config.xaxis.type === 'category' && w.globals.isBarHorizontal || w.config.xaxis.type === 'numeric' || w.config.xaxis.type === 'datetime') {
+        var rightPad = function rightPad(labels) {
+          if (_this.timescaleLabels) {
+            // for timeline labels, we take the last label and check if it exceeds gridWidth
+            var lastTimescaleLabel = _this.timescaleLabels[_this.timescaleLabels.length - 1];
+            var labelPosition = lastTimescaleLabel.position + labels.width;
+
+            if (labelPosition > w.globals.gridWidth) {
+              w.globals.skipLastTimelinelabel = true;
+            } else {
+              // we have to make it false again in case of zooming/panning
+              w.globals.skipLastTimelinelabel = false;
+            }
+          } else if (w.config.xaxis.type !== 'datetime') {
+            if (w.config.grid.padding.right < labels.width) {
+              _this.xPadRight = labels.width / 2 + 1;
+            }
+          }
+        };
+
+        var leftPad = function leftPad(labels) {
+          if (w.config.grid.padding.left < labels.width) {
+            _this.xPadLeft = labels.width / 2 + 1;
+          }
+        };
+
+        var isXNumeric = w.globals.isXNumeric;
+        w.config.yaxis.forEach(function (yaxe, i) {
+          var shouldPad = !yaxe.show || yaxe.floating || w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || isXNumeric || yaxe.opposite && w.globals.isBarHorizontal;
+
+          if (shouldPad) {
+            if (isXNumeric && w.globals.isMultipleYAxis && w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || w.globals.isBarHorizontal && yaxe.opposite) {
+              leftPad(xaxisLabelCoords);
+            }
+
+            if (!w.globals.isBarHorizontal && yaxe.opposite && w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || isXNumeric && !w.globals.isMultipleYAxis) {
+              rightPad(xaxisLabelCoords);
+            }
+          }
+        });
+      }
+    }
+  }, {
+    key: "titleSubtitleOffset",
+    value: function titleSubtitleOffset() {
+      var w = this.w;
+      var gl = w.globals;
+      var gridShrinkOffset = this.isSparkline || !w.globals.axisCharts ? 0 : 10;
+
+      if (w.config.title.text !== undefined) {
+        gridShrinkOffset += w.config.title.margin;
+      } else {
+        gridShrinkOffset += this.isSparkline || !w.globals.axisCharts ? 0 : 5;
+      }
+
+      if (w.config.subtitle.text !== undefined) {
+        gridShrinkOffset += w.config.subtitle.margin;
+      } else {
+        gridShrinkOffset += this.isSparkline || !w.globals.axisCharts ? 0 : 5;
+      }
+
+      if (w.config.legend.show && w.config.legend.position === 'bottom' && !w.config.legend.floating && w.config.series.length > 1) {
+        gridShrinkOffset += 10;
+      }
+
+      var titleCoords = this.getTitleSubtitleCoords('title');
+      var subtitleCoords = this.getTitleSubtitleCoords('subtitle');
+      gl.gridHeight = gl.gridHeight - titleCoords.height - subtitleCoords.height - gridShrinkOffset;
+      gl.translateY = gl.translateY + titleCoords.height + subtitleCoords.height + gridShrinkOffset;
+    }
+  }, {
+    key: "getTotalYAxisWidth",
+    value: function getTotalYAxisWidth() {
+      var w = this.w;
+      var yAxisWidth = 0;
+      var padding = 10;
+
+      var isHiddenYAxis = function isHiddenYAxis(index) {
+        return w.globals.ignoreYAxisIndexes.indexOf(index) > -1;
+      };
+
+      w.globals.yLabelsCoords.map(function (yLabelCoord, index) {
+        var floating = w.config.yaxis[index].floating;
+
+        if (yLabelCoord.width > 0 && !floating) {
+          yAxisWidth = yAxisWidth + yLabelCoord.width + padding;
+
+          if (isHiddenYAxis(index)) {
+            yAxisWidth = yAxisWidth - yLabelCoord.width - padding;
+          }
+        } else {
+          yAxisWidth = yAxisWidth + (floating || !w.config.yaxis[index].show ? 0 : 5);
+        }
+      });
+      w.globals.yTitleCoords.map(function (yTitleCoord, index) {
+        var floating = w.config.yaxis[index].floating;
+        padding = parseInt(w.config.yaxis[index].title.style.fontSize);
+
+        if (yTitleCoord.width > 0 && !floating) {
+          yAxisWidth = yAxisWidth + yTitleCoord.width + padding;
+
+          if (isHiddenYAxis(index)) {
+            yAxisWidth = yAxisWidth - yTitleCoord.width - padding;
+          }
+        } else {
+          yAxisWidth = yAxisWidth + (floating || !w.config.yaxis[index].show ? 0 : 5);
+        }
+      });
+      return yAxisWidth;
+    }
+  }, {
+    key: "getxAxisTimeScaleLabelsCoords",
+    value: function getxAxisTimeScaleLabelsCoords() {
+      var w = this.w;
+      var rect;
+      this.timescaleLabels = w.globals.timelineLabels.slice();
+
+      if (w.globals.isBarHorizontal && w.config.xaxis.type === 'datetime') {
+        this.timescaleLabels = w.globals.invertedTimelineLabels.slice();
+      }
+
+      var labels = this.timescaleLabels.map(function (label) {
+        return label.value;
+      }); //  get the longest string from the labels array and also apply label formatter to it
+
+      var val = labels.reduce(function (a, b) {
+        // if undefined, maybe user didn't pass the datetime(x) values
+        if (typeof a === 'undefined') {
+          console.error('You have possibly supplied invalid Date format. Please supply a valid JavaScript Date');
+          return 0;
+        } else {
+          return a.length > b.length ? a : b;
+        }
+      }, 0);
+      var graphics = new Graphics(this.ctx);
+      rect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize);
+      var totalWidthRotated = rect.width * 1.05 * labels.length;
+
+      if (totalWidthRotated > w.globals.gridWidth && w.config.xaxis.labels.rotate !== 0) {
+        w.globals.overlappingXLabels = true;
+      }
+
+      return rect;
+    }
+    /**
+     * Get X Axis Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: "getxAxisLabelsCoords",
+    value: function getxAxisLabelsCoords() {
+      var w = this.w;
+      var xaxisLabels = w.globals.labels.slice();
+      var rect;
+
+      if (w.globals.timelineLabels.length > 0) {
+        var coords = this.getxAxisTimeScaleLabelsCoords();
+        rect = {
+          width: coords.width,
+          height: coords.height
+        };
+      } else {
+        var lgWidthForSideLegends = w.config.legend.position === 'left' && w.config.legend.position === 'right' && !w.config.legend.floating ? this.lgRect.width : 0; // get the longest string from the labels array and also apply label formatter
+
+        var xlbFormatter = w.globals.xLabelFormatter; // prevent changing xaxisLabels to avoid issues in multi-yaxies - fix #522
+
+        var val = xaxisLabels.reduce(function (a, b) {
+          return a.length > b.length ? a : b;
+        }, 0); // the labels gets changed for bar charts
+
+        if (w.globals.isBarHorizontal) {
+          val = w.globals.yAxisScale[0].result.reduce(function (a, b) {
+            return a.length > b.length ? a : b;
+          }, 0);
+        }
+
+        var xFormat = new Formatters(this.ctx);
+        val = xFormat.xLabelFormat(xlbFormatter, val);
+        var graphics = new Graphics(this.ctx);
+        var xLabelrect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize);
+        rect = {
+          width: xLabelrect.width,
+          height: xLabelrect.height
+        };
+
+        if (rect.width * xaxisLabels.length > w.globals.svgWidth - lgWidthForSideLegends - this.yAxisWidth && w.config.xaxis.labels.rotate !== 0) {
+          if (!w.globals.isBarHorizontal) {
+            w.globals.rotateXLabels = true;
+            xLabelrect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize, w.config.xaxis.labels.style.fontFamily, "rotate(".concat(w.config.xaxis.labels.rotate, " 0 0)"), false);
+            rect.height = xLabelrect.height / 1.66;
+          }
+        } else {
+          w.globals.rotateXLabels = false;
+        }
+      }
+
+      if (!w.config.xaxis.labels.show) {
+        rect = {
+          width: 0,
+          height: 0
+        };
+      }
+
+      return {
+        width: rect.width,
+        height: rect.height
+      };
+    }
+    /**
+     * Get Y Axis Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: "getyAxisLabelsCoords",
+    value: function getyAxisLabelsCoords() {
+      var _this2 = this;
+
+      var w = this.w;
+      var width = 0;
+      var height = 0;
+      var ret = [];
+      var labelPad = 10;
+      w.config.yaxis.map(function (yaxe, index) {
+        if (yaxe.show && yaxe.labels.show && w.globals.yAxisScale[index].result.length) {
+          var lbFormatter = w.globals.yLabelFormatters[index]; // the second parameter -1 is the index of tick which user can use in the formatter
+
+          var val = lbFormatter(w.globals.yAxisScale[index].niceMax, -1); // if user has specified a custom formatter, and the result is null or empty, we need to discard the formatter and take the value as it is.
+
+          if (typeof val === 'undefined' || val.length === 0) {
+            val = w.globals.yAxisScale[index].niceMax;
+          }
+
+          if (w.globals.isBarHorizontal) {
+            labelPad = 0;
+            var barYaxisLabels = w.globals.labels.slice(); //  get the longest string from the labels array and also apply label formatter to it
+
+            val = barYaxisLabels.reduce(function (a, b) {
+              return a.length > b.length ? a : b;
+            }, 0);
+            val = lbFormatter(val, -1);
+          }
+
+          var graphics = new Graphics(_this2.ctx);
+          var rect = graphics.getTextRects(val, yaxe.labels.style.fontSize);
+          ret.push({
+            width: rect.width + labelPad,
+            height: rect.height
+          });
+        } else {
+          ret.push({
+            width: width,
+            height: height
+          });
+        }
+      });
+      return ret;
+    }
+    /**
+     * Get X Axis Title Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: "getxAxisTitleCoords",
+    value: function getxAxisTitleCoords() {
+      var w = this.w;
+      var width = 0;
+      var height = 0;
+
+      if (w.config.xaxis.title.text !== undefined) {
+        var graphics = new Graphics(this.ctx);
+        var rect = graphics.getTextRects(w.config.xaxis.title.text, w.config.xaxis.title.style.fontSize);
+        width = rect.width;
+        height = rect.height;
+      }
+
+      return {
+        width: width,
+        height: height
+      };
+    }
+    /**
+     * Get Y Axis Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: "getyAxisTitleCoords",
+    value: function getyAxisTitleCoords() {
+      var _this3 = this;
+
+      var w = this.w;
+      var ret = [];
+      w.config.yaxis.map(function (yaxe, index) {
+        if (yaxe.show && yaxe.title.text !== undefined) {
+          var graphics = new Graphics(_this3.ctx);
+          var rect = graphics.getTextRects(yaxe.title.text, yaxe.title.style.fontSize, yaxe.title.style.fontFamily, 'rotate(-90 0 0)', false);
+          ret.push({
+            width: rect.width,
+            height: rect.height
+          });
+        } else {
+          ret.push({
+            width: 0,
+            height: 0
+          });
+        }
+      });
+      return ret;
+    }
+    /**
+     * Get Chart Title/Subtitle Dimensions
+     * @memberof Dimensions
+     * @return {{width, height}}
+     **/
+
+  }, {
+    key: "getTitleSubtitleCoords",
+    value: function getTitleSubtitleCoords(type) {
+      var w = this.w;
+      var width = 0;
+      var height = 0;
+      var floating = type === 'title' ? w.config.title.floating : w.config.subtitle.floating;
+      var el = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-text"));
+
+      if (el !== null && !floating) {
+        var coord = el.getBoundingClientRect();
+        width = coord.width;
+        height = w.globals.axisCharts ? coord.height + 5 : coord.height;
+      }
+
+      return {
+        width: width,
+        height: height
+      };
+    }
+  }, {
+    key: "getLegendsRect",
+    value: function getLegendsRect() {
+      var w = this.w;
+      var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+      var lgRect = Object.assign({}, Utils.getBoundingClientRect(elLegendWrap));
+
+      if (elLegendWrap !== null && !w.config.legend.floating && w.config.legend.show) {
+        this.lgRect = {
+          x: lgRect.x,
+          y: lgRect.y,
+          height: lgRect.height,
+          width: lgRect.height === 0 ? 0 : lgRect.width
+        };
+      } else {
+        this.lgRect = {
+          x: 0,
+          y: 0,
+          height: 0,
+          width: 0
+        };
+      }
+
+      return this.lgRect;
+    }
+  }]);
+
+  return Dimensions;
+}();
+
+/**
+ * ApexCharts TimeScale Class for generating time ticks for x-axis.
+ *
+ * @module TimeScale
+ **/
+
+var TimeScale =
+/*#__PURE__*/
+function () {
+  function TimeScale(ctx) {
+    _classCallCheck(this, TimeScale);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.timeScaleArray = [];
+  }
+
+  _createClass(TimeScale, [{
+    key: "calculateTimeScaleTicks",
+    value: function calculateTimeScaleTicks(minX, maxX) {
+      var _this = this;
+
+      var w = this.w; // null check when no series to show
+
+      if (w.globals.allSeriesCollapsed) {
+        w.globals.labels = [];
+        w.globals.timelineLabels = [];
+        return [];
+      }
+
+      var dt = new DateTime(this.ctx);
+      var daysDiff = (maxX - minX) / (1000 * 60 * 60 * 24);
+      this.determineInterval(daysDiff);
+      w.globals.disableZoomIn = false;
+      w.globals.disableZoomOut = false;
+
+      if (daysDiff < 0.005) {
+        w.globals.disableZoomIn = true;
+      } else if (daysDiff > 50000) {
+        w.globals.disableZoomOut = true;
+      }
+
+      var timeIntervals = dt.getTimeUnitsfromTimestamp(minX, maxX);
+      var daysWidthOnXAxis = w.globals.gridWidth / daysDiff;
+      var hoursWidthOnXAxis = daysWidthOnXAxis / 24;
+      var minutesWidthOnXAxis = hoursWidthOnXAxis / 60;
+      var numberOfHours = Math.floor(daysDiff * 24);
+      var numberOfMinutes = Math.floor(daysDiff * 24 * 60);
+      var numberOfDays = Math.floor(daysDiff);
+      var numberOfMonths = Math.floor(daysDiff / 30);
+      var numberOfYears = Math.floor(daysDiff / 365);
+      var firstVal = {
+        minMinute: timeIntervals.minMinute,
+        minHour: timeIntervals.minHour,
+        minDate: timeIntervals.minDate,
+        minMonth: timeIntervals.minMonth,
+        minYear: timeIntervals.minYear
+      };
+      var currentMinute = firstVal.minMinute;
+      var currentHour = firstVal.minHour;
+      var currentMonthDate = firstVal.minDate;
+      var currentDate = firstVal.minDate;
+      var currentMonth = firstVal.minMonth;
+      var currentYear = firstVal.minYear;
+      var params = {
+        firstVal: firstVal,
+        currentMinute: currentMinute,
+        currentHour: currentHour,
+        currentMonthDate: currentMonthDate,
+        currentDate: currentDate,
+        currentMonth: currentMonth,
+        currentYear: currentYear,
+        daysWidthOnXAxis: daysWidthOnXAxis,
+        hoursWidthOnXAxis: hoursWidthOnXAxis,
+        minutesWidthOnXAxis: minutesWidthOnXAxis,
+        numberOfMinutes: numberOfMinutes,
+        numberOfHours: numberOfHours,
+        numberOfDays: numberOfDays,
+        numberOfMonths: numberOfMonths,
+        numberOfYears: numberOfYears
+      };
+
+      switch (this.tickInterval) {
+        case 'years':
+          {
+            this.generateYearScale(params);
+            break;
+          }
+
+        case 'months':
+        case 'half_year':
+          {
+            this.generateMonthScale(params);
+            break;
+          }
+
+        case 'months_days':
+        case 'months_fortnight':
+        case 'days':
+        case 'week_days':
+          {
+            this.generateDayScale(params);
+            break;
+          }
+
+        case 'hours':
+          {
+            this.generateHourScale(params);
+            break;
+          }
+
+        case 'minutes':
+          this.generateMinuteScale(params);
+          break;
+      } // first, we will adjust the month values index
+      // as in the upper function, it is starting from 0
+      // we will start them from 1
+
+
+      var adjustedMonthInTimeScaleArray = this.timeScaleArray.map(function (ts) {
+        var defaultReturn = {
+          position: ts.position,
+          unit: ts.unit,
+          year: ts.year,
+          day: ts.day ? ts.day : 1,
+          hour: ts.hour ? ts.hour : 0,
+          month: ts.month + 1
+        };
+
+        if (ts.unit === 'month') {
+          return _objectSpread({}, defaultReturn, {
+            value: ts.value + 1
+          });
+        } else if (ts.unit === 'day' || ts.unit === 'hour') {
+          return _objectSpread({}, defaultReturn, {
+            value: ts.value
+          });
+        } else if (ts.unit === 'minute') {
+          return _objectSpread({}, defaultReturn, {
+            value: ts.value,
+            minute: ts.value
+          });
+        }
+
+        return ts;
+      });
+      var filteredTimeScale = adjustedMonthInTimeScaleArray.filter(function (ts) {
+        var modulo = 1;
+        var ticks = Math.ceil(w.globals.gridWidth / 120);
+        var value = ts.value;
+
+        if (w.config.xaxis.tickAmount !== undefined) {
+          ticks = w.config.xaxis.tickAmount;
+        }
+
+        if (adjustedMonthInTimeScaleArray.length > ticks) {
+          modulo = Math.floor(adjustedMonthInTimeScaleArray.length / ticks);
+        }
+
+        var shouldNotSkipUnit = false; // there is a big change in unit i.e days to months
+
+        var shouldNotPrint = false; // should skip these values
+
+        switch (_this.tickInterval) {
+          case 'half_year':
+            modulo = 7;
+
+            if (ts.unit === 'year') {
+              shouldNotSkipUnit = true;
+            }
+
+            break;
+
+          case 'months':
+            modulo = 1;
+
+            if (ts.unit === 'year') {
+              shouldNotSkipUnit = true;
+            }
+
+            break;
+
+          case 'months_fortnight':
+            modulo = 15;
+
+            if (ts.unit === 'year' || ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+
+            if (value === 30) {
+              shouldNotPrint = true;
+            }
+
+            break;
+
+          case 'months_days':
+            modulo = 10;
+
+            if (ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+
+            if (value === 30) {
+              shouldNotPrint = true;
+            }
+
+            break;
+
+          case 'week_days':
+            modulo = 8;
+
+            if (ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+
+            break;
+
+          case 'days':
+            modulo = 1;
+
+            if (ts.unit === 'month') {
+              shouldNotSkipUnit = true;
+            }
+
+            break;
+
+          case 'hours':
+            if (ts.unit === 'day') {
+              shouldNotSkipUnit = true;
+            }
+
+            break;
+
+          case 'minutes':
+            if (value % 5 !== 0) {
+              shouldNotPrint = true;
+            }
+
+            break;
+        }
+
+        if (_this.tickInterval === 'minutes' || _this.tickInterval === 'hours') {
+          if (!shouldNotPrint) {
+            return true;
+          }
+        } else {
+          if ((value % modulo === 0 || shouldNotSkipUnit) && !shouldNotPrint) {
+            return true;
+          }
+        }
+      });
+      return filteredTimeScale;
+    }
+  }, {
+    key: "recalcDimensionsBasedOnFormat",
+    value: function recalcDimensionsBasedOnFormat(filteredTimeScale, inverted) {
+      var w = this.w;
+      var reformattedTimescaleArray = this.formatDates(filteredTimeScale);
+      var removedOverlappingTS = this.removeOverlappingTS(reformattedTimescaleArray);
+
+      if (!inverted) {
+        w.globals.timelineLabels = removedOverlappingTS.slice();
+      } else {
+        w.globals.invertedTimelineLabels = removedOverlappingTS.slice();
+      } // at this stage, we need to re-calculate coords of the grid as timeline labels may have altered the xaxis labels coords
+      // The reason we can't do this prior to this stage is because timeline labels depends on gridWidth, and as the ticks are calculated based on available gridWidth, there can be unknown number of ticks generated for different minX and maxX
+      // Dependency on Dimensions(), need to refactor correctly
+      // TODO - find an alternate way to avoid calling this Heavy method twice
+
+
+      var dimensions = new Dimensions(this.ctx);
+      dimensions.plotCoords();
+    }
+  }, {
+    key: "determineInterval",
+    value: function determineInterval(daysDiff) {
+      switch (true) {
+        case daysDiff > 1825:
+          // difference is more than 5 years
+          this.tickInterval = 'years';
+          break;
+
+        case daysDiff > 800 && daysDiff <= 1825:
+          this.tickInterval = 'half_year';
+          break;
+
+        case daysDiff > 180 && daysDiff <= 800:
+          this.tickInterval = 'months';
+          break;
+
+        case daysDiff > 90 && daysDiff <= 180:
+          this.tickInterval = 'months_fortnight';
+          break;
+
+        case daysDiff > 60 && daysDiff <= 90:
+          this.tickInterval = 'months_days';
+          break;
+
+        case daysDiff > 30 && daysDiff <= 60:
+          this.tickInterval = 'week_days';
+          break;
+
+        case daysDiff > 2 && daysDiff <= 30:
+          this.tickInterval = 'days';
+          break;
+
+        case daysDiff > 0.1 && daysDiff <= 2:
+          // less than  2 days
+          this.tickInterval = 'hours';
+          break;
+
+        case daysDiff < 0.1:
+          this.tickInterval = 'minutes';
+          break;
+
+        default:
+          this.tickInterval = 'days';
+          break;
+      }
+    }
+  }, {
+    key: "generateYearScale",
+    value: function generateYearScale(params) {
+      var firstVal = params.firstVal,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          daysWidthOnXAxis = params.daysWidthOnXAxis,
+          numberOfYears = params.numberOfYears;
+      var firstTickValue = firstVal.minYear;
+      var firstTickPosition = 0;
+      var dt = new DateTime(this.ctx);
+      var unit = 'year';
+
+      if (firstVal.minDate > 1 && firstVal.minMonth > 0) {
+        var remainingDays = dt.determineRemainingDaysOfYear(firstVal.minYear, firstVal.minMonth, firstVal.minDate); // remainingDaysofFirstMonth is used to reacht the 2nd tick position
+
+        var remainingDaysOfFirstYear = dt.determineDaysOfYear(firstVal.minYear) - remainingDays + 1; // calculate the first tick position
+
+        firstTickPosition = remainingDaysOfFirstYear * daysWidthOnXAxis;
+        firstTickValue = firstVal.minYear + 1; // push the first tick in the array
+
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: firstTickValue,
+          unit: unit,
+          year: firstTickValue,
+          month: Utils.monthMod(currentMonth + 1)
+        });
+      } else if (firstVal.minDate === 1 && firstVal.minMonth === 0) {
+        // push the first tick in the array
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: firstTickValue,
+          unit: unit,
+          year: currentYear,
+          month: Utils.monthMod(currentMonth + 1)
+        });
+      }
+
+      var year = firstTickValue;
+      var pos = firstTickPosition; // keep drawing rest of the ticks
+
+      for (var i = 0; i < numberOfYears; i++) {
+        year++;
+        pos = dt.determineDaysOfYear(year - 1) * daysWidthOnXAxis + pos;
+        this.timeScaleArray.push({
+          position: pos,
+          value: year,
+          unit: unit,
+          year: year,
+          month: 1
+        });
+      }
+    }
+  }, {
+    key: "generateMonthScale",
+    value: function generateMonthScale(params) {
+      var firstVal = params.firstVal,
+          currentMonthDate = params.currentMonthDate,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          daysWidthOnXAxis = params.daysWidthOnXAxis,
+          numberOfMonths = params.numberOfMonths;
+      var firstTickValue = currentMonth;
+      var firstTickPosition = 0;
+      var dt = new DateTime(this.ctx);
+      var unit = 'month';
+      var yrCounter = 0;
+
+      if (firstVal.minDate > 1) {
+        // remainingDaysofFirstMonth is used to reacht the 2nd tick position
+        var remainingDaysOfFirstMonth = dt.determineDaysOfMonths(currentMonth + 1, firstVal.minYear) - currentMonthDate + 1; // calculate the first tick position
+
+        firstTickPosition = remainingDaysOfFirstMonth * daysWidthOnXAxis;
+        firstTickValue = Utils.monthMod(currentMonth + 1);
+        var year = currentYear + yrCounter;
+
+        var _month = Utils.monthMod(firstTickValue);
+
+        var value = firstTickValue; // it's Jan, so update the year
+
+        if (firstTickValue === 0) {
+          unit = 'year';
+          value = year;
+          _month = 1;
+          yrCounter += 1;
+          year = year + yrCounter;
+        } // push the first tick in the array
+
+
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: value,
+          unit: unit,
+          year: year,
+          month: _month
+        });
+      } else {
+        // push the first tick in the array
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: firstTickValue,
+          unit: unit,
+          year: currentYear,
+          month: Utils.monthMod(currentMonth)
+        });
+      }
+
+      var month = firstTickValue + 1;
+      var pos = firstTickPosition; // keep drawing rest of the ticks
+
+      for (var i = 0, j = 1; i < numberOfMonths; i++, j++) {
+        month = Utils.monthMod(month);
+
+        if (month === 0) {
+          unit = 'year';
+          yrCounter += 1;
+        } else {
+          unit = 'month';
+        }
+
+        var _year = currentYear + Math.floor(month / 12) + yrCounter;
+
+        pos = dt.determineDaysOfMonths(month, _year) * daysWidthOnXAxis + pos;
+        var monthVal = month === 0 ? _year : month;
+        this.timeScaleArray.push({
+          position: pos,
+          value: monthVal,
+          unit: unit,
+          year: _year,
+          month: month === 0 ? 1 : month
+        });
+        month++;
+      }
+    }
+  }, {
+    key: "generateDayScale",
+    value: function generateDayScale(params) {
+      var firstVal = params.firstVal,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          hoursWidthOnXAxis = params.hoursWidthOnXAxis,
+          numberOfDays = params.numberOfDays;
+      var dt = new DateTime(this.ctx);
+      var unit = 'day';
+      var remainingHours = 24 - firstVal.minHour;
+      var yrCounter = 0; // calculate the first tick position
+
+      var firstTickPosition = remainingHours * hoursWidthOnXAxis;
+      var firstTickValue = firstVal.minDate + 1;
+      var val = firstTickValue;
+
+      var changeMonth = function changeMonth(dateVal, month, year) {
+        var monthdays = dt.determineDaysOfMonths(month + 1, year);
+
+        if (dateVal > monthdays) {
+          month = month + 1;
+          date = 1;
+          unit = 'month';
+          val = month;
+          return month;
+        }
+
+        return month;
+      };
+
+      var date = firstTickValue;
+      var month = changeMonth(date, currentMonth, currentYear); // push the first tick in the array
+
+      this.timeScaleArray.push({
+        position: firstTickPosition,
+        value: val,
+        unit: unit,
+        year: currentYear,
+        month: Utils.monthMod(month),
+        day: date
+      });
+      var pos = firstTickPosition; // keep drawing rest of the ticks
+
+      for (var i = 0; i < numberOfDays; i++) {
+        date += 1;
+        unit = 'day';
+        month = changeMonth(date, month, currentYear + Math.floor(month / 12) + yrCounter);
+        var year = currentYear + Math.floor(month / 12) + yrCounter;
+        pos = 24 * hoursWidthOnXAxis + pos;
+
+        var _val = date === 1 ? Utils.monthMod(month) : date;
+
+        this.timeScaleArray.push({
+          position: pos,
+          value: _val,
+          unit: unit,
+          year: year,
+          month: Utils.monthMod(month),
+          day: _val
+        });
+      }
+    }
+  }, {
+    key: "generateHourScale",
+    value: function generateHourScale(params) {
+      var firstVal = params.firstVal,
+          currentDate = params.currentDate,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          minutesWidthOnXAxis = params.minutesWidthOnXAxis,
+          numberOfHours = params.numberOfHours;
+      var dt = new DateTime(this.ctx);
+      var yrCounter = 0;
+      var unit = 'hour';
+
+      var changeDate = function changeDate(dateVal, month) {
+        var monthdays = dt.determineDaysOfMonths(month + 1, currentYear);
+
+        if (dateVal > monthdays) {
+          date = 1;
+          month = month + 1;
+        }
+
+        return {
+          month: month,
+          date: date
+        };
+      };
+
+      var changeMonth = function changeMonth(dateVal, month) {
+        var monthdays = dt.determineDaysOfMonths(month + 1, currentYear);
+
+        if (dateVal > monthdays) {
+          month = month + 1;
+          return month;
+        }
+
+        return month;
+      };
+
+      var remainingMins = 60 - firstVal.minMinute;
+      var firstTickPosition = remainingMins * minutesWidthOnXAxis;
+      var firstTickValue = firstVal.minHour + 1;
+      var hour = firstTickValue + 1;
+
+      if (remainingMins === 60) {
+        firstTickPosition = 0;
+        firstTickValue = firstVal.minHour;
+        hour = firstTickValue + 1;
+      }
+
+      var date = currentDate;
+      var month = changeMonth(date, currentMonth); // push the first tick in the array
+
+      this.timeScaleArray.push({
+        position: firstTickPosition,
+        value: firstTickValue,
+        unit: unit,
+        day: date,
+        hour: hour,
+        year: currentYear,
+        month: Utils.monthMod(month)
+      });
+      var pos = firstTickPosition; // keep drawing rest of the ticks
+
+      for (var i = 0; i < numberOfHours; i++) {
+        unit = 'hour';
+
+        if (hour >= 24) {
+          hour = 0;
+          date += 1;
+          unit = 'day';
+          var checkNextMonth = changeDate(date, month);
+          month = checkNextMonth.month;
+          month = changeMonth(date, month);
+        }
+
+        var year = currentYear + Math.floor(month / 12) + yrCounter;
+        pos = hour === 0 && i === 0 ? remainingMins * minutesWidthOnXAxis : 60 * minutesWidthOnXAxis + pos;
+        var val = hour === 0 ? date : hour;
+        this.timeScaleArray.push({
+          position: pos,
+          value: val,
+          unit: unit,
+          hour: hour,
+          day: date,
+          year: year,
+          month: Utils.monthMod(month)
+        });
+        hour++;
+      }
+    }
+  }, {
+    key: "generateMinuteScale",
+    value: function generateMinuteScale(params) {
+      var firstVal = params.firstVal,
+          currentMinute = params.currentMinute,
+          currentHour = params.currentHour,
+          currentDate = params.currentDate,
+          currentMonth = params.currentMonth,
+          currentYear = params.currentYear,
+          minutesWidthOnXAxis = params.minutesWidthOnXAxis,
+          numberOfMinutes = params.numberOfMinutes;
+      var yrCounter = 0;
+      var unit = 'minute';
+      var remainingMins = currentMinute - firstVal.minMinute;
+      var firstTickPosition = minutesWidthOnXAxis - remainingMins;
+      var firstTickValue = firstVal.minMinute + 1;
+      var minute = firstTickValue + 1;
+      var date = currentDate;
+      var month = currentMonth;
+      var year = currentYear;
+      var hour = currentHour; // push the first tick in the array
+
+      this.timeScaleArray.push({
+        position: firstTickPosition,
+        value: firstTickValue,
+        unit: unit,
+        day: date,
+        hour: hour,
+        minute: minute,
+        year: year,
+        month: Utils.monthMod(month)
+      });
+      var pos = firstTickPosition; // keep drawing rest of the ticks
+
+      for (var i = 0; i < numberOfMinutes; i++) {
+        if (minute >= 60) {
+          minute = 0;
+          hour += 1;
+
+          if (hour === 24) {
+            hour = 0;
+          }
+        }
+
+        var _year2 = currentYear + Math.floor(month / 12) + yrCounter;
+
+        pos = minutesWidthOnXAxis + pos;
+        var val = minute;
+        this.timeScaleArray.push({
+          position: pos,
+          value: val,
+          unit: unit,
+          hour: hour,
+          minute: minute,
+          day: date,
+          year: _year2,
+          month: Utils.monthMod(month)
+        });
+        minute++;
+      }
+    }
+  }, {
+    key: "createRawDateString",
+    value: function createRawDateString(ts, value) {
+      var raw = ts.year;
+      raw += '-' + ('0' + ts.month.toString()).slice(-2); // unit is day
+
+      if (ts.unit === 'day') {
+        raw += ts.unit === 'day' ? '-' + ('0' + value).slice(-2) : '-01';
+      } else {
+        raw += '-' + ('0' + (ts.day ? ts.day : '1')).slice(-2);
+      } // unit is hour
+
+
+      if (ts.unit === 'hour') {
+        raw += ts.unit === 'hour' ? 'T' + ('0' + value).slice(-2) : 'T00';
+      } else {
+        raw += 'T' + ('0' + (ts.hour ? ts.hour : '0')).slice(-2);
+      } // unit is minute
+
+
+      raw += ts.unit === 'minute' ? ':' + ('0' + value).slice(-2) + ':00.000Z' : ':00:00.000Z';
+      return raw;
+    }
+  }, {
+    key: "formatDates",
+    value: function formatDates(filteredTimeScale) {
+      var _this2 = this;
+
+      var w = this.w;
+      var reformattedTimescaleArray = filteredTimeScale.map(function (ts) {
+        var value = ts.value.toString();
+        var dt = new DateTime(_this2.ctx);
+
+        var raw = _this2.createRawDateString(ts, value); // parse the whole ISO datestring
+
+
+        var dateString = new Date(Date.parse(raw));
+
+        if (w.config.xaxis.labels.format === undefined) {
+          var customFormat = 'dd MMM';
+          var dtFormatter = w.config.xaxis.labels.datetimeFormatter;
+          if (ts.unit === 'year') customFormat = dtFormatter.year;
+          if (ts.unit === 'month') customFormat = dtFormatter.month;
+          if (ts.unit === 'day') customFormat = dtFormatter.day;
+          if (ts.unit === 'hour') customFormat = dtFormatter.hour;
+          if (ts.unit === 'minute') customFormat = dtFormatter.minute;
+          value = dt.formatDate(dateString, customFormat, true, false);
+        } else {
+          value = dt.formatDate(dateString, w.config.xaxis.labels.format);
+        }
+
+        return {
+          dateString: raw,
+          position: ts.position,
+          value: value,
+          unit: ts.unit,
+          year: ts.year,
+          month: ts.month
+        };
+      });
+      return reformattedTimescaleArray;
+    }
+  }, {
+    key: "removeOverlappingTS",
+    value: function removeOverlappingTS(arr) {
+      var _this3 = this;
+
+      var graphics = new Graphics(this.ctx);
+      var lastDrawnIndex = 0;
+      var filteredArray = arr.map(function (item, index) {
+        if (index > 0 && _this3.w.config.xaxis.labels.hideOverlappingLabels) {
+          var prevLabelWidth = graphics.getTextRects(arr[lastDrawnIndex].value).width;
+          var prevPos = arr[lastDrawnIndex].position;
+          var pos = item.position;
+
+          if (pos > prevPos + prevLabelWidth + 10) {
+            lastDrawnIndex = index;
+            return item;
+          } else {
+            return null;
+          }
+        } else {
+          return item;
+        }
+      });
+      filteredArray = filteredArray.filter(function (f) {
+        return f !== null;
+      });
+      return filteredArray;
+    }
+  }]);
+
+  return TimeScale;
+}();
+
+/**
+ * ApexCharts Core Class responsible for major calculations and creating elements.
+ *
+ * @module Core
+ **/
+
+var Core =
+/*#__PURE__*/
+function () {
+  function Core(el, ctx) {
+    _classCallCheck(this, Core);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.el = el;
+    this.coreUtils = new CoreUtils(this.ctx);
+    this.twoDSeries = [];
+    this.threeDSeries = [];
+    this.twoDSeriesX = [];
+  } // get data and store into appropriate vars
+
+
+  _createClass(Core, [{
+    key: "setupElements",
+    value: function setupElements() {
+      var gl = this.w.globals;
+      var cnf = this.w.config; // const graphics = new Graphics(this.ctx)
+
+      var ct = cnf.chart.type;
+      var axisChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', // 'rangeArea',
+      'candlestick', 'radar', 'scatter', 'bubble', 'heatmap'];
+      var xyChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', // 'rangeArea',
+      'candlestick', 'scatter', 'bubble'];
+      gl.axisCharts = axisChartsArrTypes.indexOf(ct) > -1;
+      gl.xyCharts = xyChartsArrTypes.indexOf(ct) > -1;
+      gl.isBarHorizontal = (cnf.chart.type === 'bar' || cnf.chart.type === 'rangeBar') && cnf.plotOptions.bar.horizontal;
+      gl.chartClass = '.apexcharts' + gl.cuid;
+      gl.dom.baseEl = this.el;
+      gl.dom.elWrap = document.createElement('div');
+      Graphics.setAttrs(gl.dom.elWrap, {
+        id: gl.chartClass.substring(1),
+        class: 'apexcharts-canvas ' + gl.chartClass.substring(1)
+      });
+      this.el.appendChild(gl.dom.elWrap);
+      gl.dom.Paper = new window.SVG.Doc(gl.dom.elWrap);
+      gl.dom.Paper.attr({
+        class: 'apexcharts-svg',
+        'xmlns:data': 'ApexChartsNS',
+        transform: "translate(".concat(cnf.chart.offsetX, ", ").concat(cnf.chart.offsetY, ")")
+      });
+      gl.dom.Paper.node.style.background = cnf.chart.background;
+      this.setSVGDimensions();
+      gl.dom.elGraphical = gl.dom.Paper.group().attr({
+        class: 'apexcharts-inner apexcharts-graphical'
+      });
+      gl.dom.elDefs = gl.dom.Paper.defs();
+      gl.dom.elLegendWrap = document.createElement('div');
+      gl.dom.elLegendWrap.classList.add('apexcharts-legend');
+      gl.dom.elWrap.appendChild(gl.dom.elLegendWrap); // gl.dom.Paper.add(gl.dom.elLegendWrap)
+
+      gl.dom.Paper.add(gl.dom.elGraphical);
+      gl.dom.elGraphical.add(gl.dom.elDefs);
+    }
+  }, {
+    key: "plotChartType",
+    value: function plotChartType(ser, xyRatios) {
+      var w = this.w;
+      var cnf = w.config;
+      var gl = w.globals;
+      var lineSeries = {
+        series: [],
+        i: []
+      };
+      var areaSeries = {
+        series: [],
+        i: []
+      };
+      var scatterSeries = {
+        series: [],
+        i: []
+      };
+      var columnSeries = {
+        series: [],
+        i: []
+      };
+      var candlestickSeries = {
+        series: [],
+        i: []
+      };
+      gl.series.map(function (series, st) {
+        // if user has specified a particular type for particular series
+        if (typeof ser[st].type !== 'undefined') {
+          if (ser[st].type === 'column' || ser[st].type === 'bar') {
+            w.config.plotOptions.bar.horizontal = false; // horizontal bars not supported in mixed charts, hence forcefully set to false
+
+            columnSeries.series.push(series);
+            columnSeries.i.push(st);
+          } else if (ser[st].type === 'area') {
+            areaSeries.series.push(series);
+            areaSeries.i.push(st);
+          } else if (ser[st].type === 'line') {
+            lineSeries.series.push(series);
+            lineSeries.i.push(st);
+          } else if (ser[st].type === 'scatter') {
+            scatterSeries.series.push(series);
+            scatterSeries.i.push(st);
+          } else if (ser[st].type === 'bubble') ; else if (ser[st].type === 'candlestick') {
+            candlestickSeries.series.push(series);
+            candlestickSeries.i.push(st);
+          } else {
+            // user has specified type, but it is not valid (other than line/area/column)
+            console.warn('You have specified an unrecognized chart type. Available types for this propery are line/area/column/bar/scatter/bubble');
+          }
+
+          gl.comboCharts = true;
+        } else {
+          lineSeries.series.push(series);
+          lineSeries.i.push(st);
+        }
+      });
+      var line = new Line(this.ctx, xyRatios);
+      var candlestick = new CandleStick(this.ctx, xyRatios);
+      var pie = new Pie(this.ctx);
+      var radialBar = new Radial(this.ctx);
+      var rangeBar = new RangeBar(this.ctx, xyRatios);
+      var radar = new Radar(this.ctx);
+      var elGraph = [];
+
+      if (gl.comboCharts) {
+        if (areaSeries.series.length > 0) {
+          elGraph.push(line.draw(areaSeries.series, 'area', areaSeries.i));
+        }
+
+        if (columnSeries.series.length > 0) {
+          if (w.config.chart.stacked) {
+            var barStacked = new BarStacked(this.ctx, xyRatios);
+            elGraph.push(barStacked.draw(columnSeries.series, columnSeries.i));
+          } else {
+            var bar = new Bar(this.ctx, xyRatios);
+            elGraph.push(bar.draw(columnSeries.series, columnSeries.i));
+          }
+        }
+
+        if (lineSeries.series.length > 0) {
+          elGraph.push(line.draw(lineSeries.series, 'line', lineSeries.i));
+        }
+
+        if (candlestickSeries.series.length > 0) {
+          elGraph.push(candlestick.draw(candlestickSeries.series, candlestickSeries.i));
+        }
+
+        if (scatterSeries.series.length > 0) {
+          var scatterLine = new Line(this.ctx, xyRatios, true);
+          elGraph.push(scatterLine.draw(scatterSeries.series, 'scatter', scatterSeries.i));
+        } // TODO: allow bubble series in a combo chart
+        // if (bubbleSeries.series.length > 0) {
+        //   const bubbleLine = new Line(this.ctx, xyRatios, true)
+        //   elGraph.push(
+        //     bubbleLine.draw(bubbleSeries.series, 'bubble', bubbleSeries.i)
+        //   )
+        // }
+
+      } else {
+        switch (cnf.chart.type) {
+          case 'line':
+            elGraph = line.draw(gl.series, 'line');
+            break;
+
+          case 'area':
+            elGraph = line.draw(gl.series, 'area');
+            break;
+
+          case 'bar':
+            if (cnf.chart.stacked) {
+              var _barStacked = new BarStacked(this.ctx, xyRatios);
+
+              elGraph = _barStacked.draw(gl.series);
+            } else {
+              var _bar = new Bar(this.ctx, xyRatios);
+
+              elGraph = _bar.draw(gl.series);
+            }
+
+            break;
+
+          case 'candlestick':
+            var candleStick = new CandleStick(this.ctx, xyRatios);
+            elGraph = candleStick.draw(gl.series);
+            break;
+
+          case 'rangeBar':
+            elGraph = rangeBar.draw(gl.series);
+            break;
+
+          case 'heatmap':
+            var heatmap = new HeatMap(this.ctx, xyRatios);
+            elGraph = heatmap.draw(gl.series);
+            break;
+
+          case 'pie':
+          case 'donut':
+            elGraph = pie.draw(gl.series);
+            break;
+
+          case 'radialBar':
+            elGraph = radialBar.draw(gl.series);
+            break;
+
+          case 'radar':
+            elGraph = radar.draw(gl.series);
+            break;
+
+          default:
+            elGraph = line.draw(gl.series);
+        }
+      }
+
+      return elGraph;
+    }
+  }, {
+    key: "setSVGDimensions",
+    value: function setSVGDimensions() {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      gl.svgWidth = cnf.chart.width;
+      gl.svgHeight = cnf.chart.height;
+      var elDim = Utils.getDimensions(this.el);
+      var widthUnit = cnf.chart.width.toString().split(/[0-9]+/g).pop();
+
+      if (widthUnit === '%') {
+        if (Utils.isNumber(elDim[0])) {
+          if (elDim[0].width === 0) {
+            elDim = Utils.getDimensions(this.el.parentNode);
+          }
+
+          gl.svgWidth = elDim[0] * parseInt(cnf.chart.width) / 100;
+        }
+      } else if (widthUnit === 'px' || widthUnit === '') {
+        gl.svgWidth = parseInt(cnf.chart.width);
+      }
+
+      if (gl.svgHeight !== 'auto' && gl.svgHeight !== '') {
+        var heightUnit = cnf.chart.height.toString().split(/[0-9]+/g).pop();
+
+        if (heightUnit === '%') {
+          var elParentDim = Utils.getDimensions(this.el.parentNode);
+          gl.svgHeight = elParentDim[1] * parseInt(cnf.chart.height) / 100;
+        } else {
+          gl.svgHeight = parseInt(cnf.chart.height);
+        }
+      } else {
+        if (gl.axisCharts) {
+          gl.svgHeight = gl.svgWidth / 1.61;
+        } else {
+          gl.svgHeight = gl.svgWidth;
+        }
+      }
+
+      Graphics.setAttrs(gl.dom.Paper.node, {
+        width: gl.svgWidth,
+        height: gl.svgHeight
+      }); // gl.dom.Paper.node.parentNode.parentNode.style.minWidth = gl.svgWidth + "px";
+
+      var offsetY = cnf.chart.sparkline.enabled ? 0 : gl.axisCharts ? cnf.chart.parentHeightOffset : 0;
+      gl.dom.Paper.node.parentNode.parentNode.style.minHeight = gl.svgHeight + offsetY + 'px';
+      gl.dom.elWrap.style.width = gl.svgWidth + 'px';
+      gl.dom.elWrap.style.height = gl.svgHeight + 'px';
+    }
+  }, {
+    key: "shiftGraphPosition",
+    value: function shiftGraphPosition() {
+      var gl = this.w.globals;
+      var tY = gl.translateY;
+      var tX = gl.translateX;
+      var scalingAttrs = {
+        transform: 'translate(' + tX + ', ' + tY + ')'
+      };
+      Graphics.setAttrs(gl.dom.elGraphical.node, scalingAttrs);
+    }
+    /*
+     ** All the calculations for setting range in charts will be done here
+     */
+
+  }, {
+    key: "coreCalculations",
+    value: function coreCalculations() {
+      var range = new Range$1(this.ctx);
+      range.init();
+    }
+  }, {
+    key: "resetGlobals",
+    value: function resetGlobals() {
+      var _this = this;
+
+      var gl = this.w.globals;
+      gl.series = [];
+      gl.seriesCandleO = [];
+      gl.seriesCandleH = [];
+      gl.seriesCandleL = [];
+      gl.seriesCandleC = [];
+      gl.seriesRangeStart = [];
+      gl.seriesRangeEnd = [];
+      gl.seriesPercent = [];
+      gl.seriesX = [];
+      gl.seriesZ = [];
+      gl.seriesNames = [];
+      gl.seriesTotals = [];
+      gl.stackedSeriesTotals = [];
+      gl.labels = [];
+      gl.timelineLabels = [];
+      gl.noLabelsProvided = false;
+      gl.timescaleTicks = [];
+      gl.resizeTimer = null;
+      gl.selectionResizeTimer = null;
+
+      gl.seriesXvalues = function () {
+        return _this.w.config.series.map(function (s) {
+          return [];
+        });
+      }();
+
+      gl.seriesYvalues = function () {
+        return _this.w.config.series.map(function (s) {
+          return [];
+        });
+      }();
+
+      gl.delayedElements = [];
+      gl.pointsArray = [];
+      gl.dataLabelsRects = [];
+      gl.isXNumeric = false;
+      gl.isDataXYZ = false;
+      gl.maxY = -Number.MAX_VALUE;
+      gl.minY = Number.MIN_VALUE;
+      gl.minYArr = [];
+      gl.maxYArr = [];
+      gl.maxX = -Number.MAX_VALUE;
+      gl.minX = Number.MAX_VALUE;
+      gl.initialmaxX = -Number.MAX_VALUE;
+      gl.initialminX = Number.MAX_VALUE;
+      gl.maxDate = 0;
+      gl.minDate = Number.MAX_VALUE;
+      gl.minZ = Number.MAX_VALUE;
+      gl.maxZ = -Number.MAX_VALUE;
+      gl.minXDiff = Number.MAX_VALUE;
+      gl.yAxisScale = [];
+      gl.xAxisScale = null;
+      gl.xAxisTicksPositions = [];
+      gl.yLabelsCoords = [];
+      gl.yTitleCoords = [];
+      gl.xRange = 0;
+      gl.yRange = [];
+      gl.zRange = 0;
+      gl.dataPoints = 0;
+    }
+  }, {
+    key: "isMultipleY",
+    value: function isMultipleY() {
+      // user has supplied an array in yaxis property. So, turn on multipleYAxis flag
+      if (this.w.config.yaxis.constructor === Array && this.w.config.yaxis.length > 1) {
+        // first, turn off stacking if multiple y axis
+        this.w.config.chart.stacked = false;
+        this.w.globals.isMultipleYAxis = true;
+        return true;
+      }
+    }
+  }, {
+    key: "excludeCollapsedSeriesInYAxis",
+    value: function excludeCollapsedSeriesInYAxis() {
+      var _this2 = this;
+
+      var w = this.w;
+      w.globals.ignoreYAxisIndexes = w.globals.collapsedSeries.map(function (collapsed, i) {
+        if (_this2.w.globals.isMultipleYAxis) {
+          return collapsed.index;
+        }
+      });
+    }
+  }, {
+    key: "isMultiFormat",
+    value: function isMultiFormat() {
+      return this.isFormatXY() || this.isFormat2DArray();
+    } // given format is [{x, y}, {x, y}]
+
+  }, {
+    key: "isFormatXY",
+    value: function isFormatXY() {
+      var series = this.w.config.series.slice();
+      var sr = new Series(this.ctx);
+      this.activeSeriesIndex = sr.getActiveConfigSeriesIndex();
+
+      if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && series[this.activeSeriesIndex].data[0] !== null && typeof series[this.activeSeriesIndex].data[0].x !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null) {
+        return true;
+      }
+    } // given format is [[x, y], [x, y]]
+
+  }, {
+    key: "isFormat2DArray",
+    value: function isFormat2DArray() {
+      var series = this.w.config.series.slice();
+      var sr = new Series(this.ctx);
+      this.activeSeriesIndex = sr.getActiveConfigSeriesIndex();
+
+      if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && typeof series[this.activeSeriesIndex].data[0] !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null && series[this.activeSeriesIndex].data[0].constructor === Array) {
+        return true;
+      }
+    }
+  }, {
+    key: "handleFormat2DArray",
+    value: function handleFormat2DArray(ser, i) {
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+
+      for (var j = 0; j < ser[i].data.length; j++) {
+        if (typeof ser[i].data[j][1] !== 'undefined') {
+          if (Array.isArray(ser[i].data[j][1]) && ser[i].data[j][1].length === 4) {
+            this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][1][3]));
+          } else {
+            this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][1]));
+          }
+
+          gl.dataFormatXNumeric = true;
+        }
+
+        if (cnf.xaxis.type === 'datetime') {
+          // if timestamps are provided and xaxis type is datettime,
+          var ts = new Date(ser[i].data[j][0]);
+          ts = new Date(ts).getTime();
+          this.twoDSeriesX.push(ts);
+        } else {
+          this.twoDSeriesX.push(ser[i].data[j][0]);
+        }
+      }
+
+      for (var _j = 0; _j < ser[i].data.length; _j++) {
+        if (typeof ser[i].data[_j][2] !== 'undefined') {
+          this.threeDSeries.push(ser[i].data[_j][2]);
+          gl.isDataXYZ = true;
+        }
+      }
+    }
+  }, {
+    key: "handleFormatXY",
+    value: function handleFormatXY(ser, i) {
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+      var dt = new DateTime(this.ctx);
+      var activeI = i;
+
+      if (gl.collapsedSeriesIndices.indexOf(i) > -1) {
+        // fix #368
+        activeI = this.activeSeriesIndex;
+      } // get series
+
+
+      for (var j = 0; j < ser[i].data.length; j++) {
+        if (typeof ser[i].data[j].y !== 'undefined') {
+          if (Array.isArray(ser[i].data[j].y)) {
+            this.twoDSeries.push(Utils.parseNumber(ser[i].data[j].y[ser[i].data[j].y.length - 1]));
+          } else {
+            this.twoDSeries.push(Utils.parseNumber(ser[i].data[j].y));
+          }
+        }
+      } // get seriesX
+
+
+      for (var _j2 = 0; _j2 < ser[activeI].data.length; _j2++) {
+        var isXString = typeof ser[activeI].data[_j2].x === 'string';
+        var isXDate = !!dt.isValidDate(ser[activeI].data[_j2].x.toString());
+
+        if (isXString || isXDate) {
+          // user supplied '01/01/2017' or a date string (a JS date object is not supported)
+          if (isXString) {
+            if (cnf.xaxis.type === 'datetime' && !gl.isRangeData) {
+              this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x));
+            } else {
+              // a category and not a numeric x value
+              this.fallbackToCategory = true;
+              this.twoDSeriesX.push(ser[activeI].data[_j2].x);
+            }
+          } else {
+            if (cnf.xaxis.type === 'datetime') {
+              this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x.toString()));
+            } else {
+              gl.dataFormatXNumeric = true;
+              gl.isXNumeric = true;
+              this.twoDSeriesX.push(parseFloat(ser[activeI].data[_j2].x));
+            }
+          }
+        } else {
+          // a numeric value in x property
+          gl.isXNumeric = true;
+          gl.dataFormatXNumeric = true;
+          this.twoDSeriesX.push(ser[activeI].data[_j2].x);
+        }
+      }
+
+      if (ser[i].data[0] && typeof ser[i].data[0].z !== 'undefined') {
+        for (var t = 0; t < ser[i].data.length; t++) {
+          this.threeDSeries.push(ser[i].data[t].z);
+        }
+
+        gl.isDataXYZ = true;
+      }
+    }
+  }, {
+    key: "handleRangeData",
+    value: function handleRangeData(ser, i) {
+      var gl = this.w.globals;
+      var range = {};
+
+      if (this.isFormat2DArray()) {
+        range = this.handleRangeDataFormat('array', ser, i);
+      } else if (this.isFormatXY()) {
+        range = this.handleRangeDataFormat('xy', ser, i);
+      }
+
+      gl.seriesRangeStart.push(range.start);
+      gl.seriesRangeEnd.push(range.end);
+      return range;
+    }
+  }, {
+    key: "handleCandleStickData",
+    value: function handleCandleStickData(ser, i) {
+      var gl = this.w.globals;
+      var ohlc = {};
+
+      if (this.isFormat2DArray()) {
+        ohlc = this.handleCandleStickDataFormat('array', ser, i);
+      } else if (this.isFormatXY()) {
+        ohlc = this.handleCandleStickDataFormat('xy', ser, i);
+      }
+
+      gl.seriesCandleO.push(ohlc.o);
+      gl.seriesCandleH.push(ohlc.h);
+      gl.seriesCandleL.push(ohlc.l);
+      gl.seriesCandleC.push(ohlc.c);
+      return ohlc;
+    }
+  }, {
+    key: "handleRangeDataFormat",
+    value: function handleRangeDataFormat(format, ser, i) {
+      var rangeStart = [];
+      var rangeEnd = [];
+      var err = 'Please provide [Start, End] values in valid format. Read more https://apexcharts.com/docs/series/#rangecharts';
+      var serObj = new Series(this.ctx);
+      var activeIndex = serObj.getActiveConfigSeriesIndex();
+
+      if (format === 'array') {
+        if (ser[activeIndex].data[0][1].length !== 2) {
+          throw new Error(err);
+        }
+
+        for (var j = 0; j < ser[i].data.length; j++) {
+          rangeStart.push(ser[i].data[j][1][0]);
+          rangeEnd.push(ser[i].data[j][1][1]);
+        }
+      } else if (format === 'xy') {
+        if (ser[activeIndex].data[0].y.length !== 2) {
+          throw new Error(err);
+        }
+
+        for (var _j3 = 0; _j3 < ser[i].data.length; _j3++) {
+          rangeStart.push(ser[i].data[_j3].y[0]);
+          rangeEnd.push(ser[i].data[_j3].y[1]);
+        }
+      }
+
+      return {
+        start: rangeStart,
+        end: rangeEnd
+      };
+    }
+  }, {
+    key: "handleCandleStickDataFormat",
+    value: function handleCandleStickDataFormat(format, ser, i) {
+      var serO = [];
+      var serH = [];
+      var serL = [];
+      var serC = [];
+      var err = 'Please provide [Open, High, Low and Close] values in valid format. Read more https://apexcharts.com/docs/series/#candlestick';
+
+      if (format === 'array') {
+        if (ser[i].data[0][1].length !== 4) {
+          throw new Error(err);
+        }
+
+        for (var j = 0; j < ser[i].data.length; j++) {
+          serO.push(ser[i].data[j][1][0]);
+          serH.push(ser[i].data[j][1][1]);
+          serL.push(ser[i].data[j][1][2]);
+          serC.push(ser[i].data[j][1][3]);
+        }
+      } else if (format === 'xy') {
+        if (ser[i].data[0].y.length !== 4) {
+          throw new Error(err);
+        }
+
+        for (var _j4 = 0; _j4 < ser[i].data.length; _j4++) {
+          serO.push(ser[i].data[_j4].y[0]);
+          serH.push(ser[i].data[_j4].y[1]);
+          serL.push(ser[i].data[_j4].y[2]);
+          serC.push(ser[i].data[_j4].y[3]);
+        }
+      }
+
+      return {
+        o: serO,
+        h: serH,
+        l: serL,
+        c: serC
+      };
+    }
+  }, {
+    key: "parseDataAxisCharts",
+    value: function parseDataAxisCharts(ser) {
+      var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.ctx;
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+      var dt = new DateTime(ctx);
+
+      for (var i = 0; i < ser.length; i++) {
+        this.twoDSeries = [];
+        this.twoDSeriesX = [];
+        this.threeDSeries = [];
+
+        if (typeof ser[i].data === 'undefined') {
+          console.error("It is a possibility that you may have not included 'data' property in series.");
+          return;
+        }
+
+        if (cnf.chart.type === 'rangeBar' || cnf.chart.type === 'rangeArea' || ser[i].type === 'rangeBar' || ser[i].type === 'rangeArea') {
+          gl.isRangeData = true;
+          this.handleRangeData(ser, i);
+        }
+
+        if (this.isMultiFormat()) {
+          if (this.isFormat2DArray()) {
+            this.handleFormat2DArray(ser, i);
+          } else if (this.isFormatXY()) {
+            this.handleFormatXY(ser, i);
+          }
+
+          if (cnf.chart.type === 'candlestick' || ser[i].type === 'candlestick') {
+            this.handleCandleStickData(ser, i);
+          }
+
+          gl.series.push(this.twoDSeries);
+          gl.labels.push(this.twoDSeriesX);
+          gl.seriesX.push(this.twoDSeriesX);
+
+          if (!this.fallbackToCategory) {
+            gl.isXNumeric = true;
+          }
+        } else {
+          if (cnf.xaxis.type === 'datetime') {
+            // user didn't supplied [{x,y}] or [[x,y]], but single array in data.
+            // Also labels/categories were supplied differently
+            gl.isXNumeric = true;
+            var dates = cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice();
+
+            for (var j = 0; j < dates.length; j++) {
+              if (typeof dates[j] === 'string') {
+                var isDate = dt.isValidDate(dates[j]);
+
+                if (isDate) {
+                  this.twoDSeriesX.push(dt.parseDate(dates[j]));
+                } else {
+                  throw new Error('You have provided invalid Date format. Please provide a valid JavaScript Date');
+                }
+              }
+            }
+
+            gl.seriesX.push(this.twoDSeriesX);
+          } else if (cnf.xaxis.type === 'numeric') {
+            gl.isXNumeric = true;
+            var x = cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice();
+
+            if (x.length > 0) {
+              this.twoDSeriesX = x;
+              gl.seriesX.push(this.twoDSeriesX);
+            }
+          }
+
+          gl.labels.push(this.twoDSeriesX);
+          var singleArray = ser[i].data.map(function (d) {
+            return Utils.parseNumber(d);
+          });
+          gl.series.push(singleArray);
+        }
+
+        gl.seriesZ.push(this.threeDSeries);
+
+        if (ser[i].name !== undefined) {
+          gl.seriesNames.push(ser[i].name);
+        } else {
+          gl.seriesNames.push('series-' + parseInt(i + 1));
+        }
+      }
+
+      return this.w;
+    }
+  }, {
+    key: "parseDataNonAxisCharts",
+    value: function parseDataNonAxisCharts(ser) {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      gl.series = ser.slice();
+      gl.seriesNames = cnf.labels.slice();
+
+      for (var i = 0; i < gl.series.length; i++) {
+        if (gl.seriesNames[i] === undefined) {
+          gl.seriesNames.push('series-' + (i + 1));
+        }
+      }
+
+      return this.w;
+    }
+    /** User possibly set string categories in xaxis.categories or labels prop
+     * Or didn't set xaxis labels at all - in which case we manually do it.
+     * If user passed series data as [[3, 2], [4, 5]] or [{ x: 3, y: 55 }],
+     * this shouldn't be called
+     * @param {array} ser - the series which user passed to the config
+     */
+
+  }, {
+    key: "handleExternalLabelsData",
+    value: function handleExternalLabelsData(ser) {
+      var cnf = this.w.config;
+      var gl = this.w.globals;
+
+      if (cnf.xaxis.categories.length > 0) {
+        // user provided labels in xaxis.category prop
+        gl.labels = cnf.xaxis.categories;
+      } else if (cnf.labels.length > 0) {
+        // user provided labels in labels props
+        gl.labels = cnf.labels.slice();
+      } else if (this.fallbackToCategory) {
+        // user provided labels in x prop in [{ x: 3, y: 55 }] data, and those labels are already stored in gl.labels[0], so just re-arrange the gl.labels array
+        gl.labels = gl.labels[0];
+      } else {
+        // user didn't provided any labels, fallback to 1-2-3-4-5
+        var labelArr = [];
+
+        if (gl.axisCharts) {
+          // for axis charts, we get the longest series and create labels from it
+          for (var i = 0; i < gl.series[gl.maxValsInArrayIndex].length; i++) {
+            labelArr.push(i + 1);
+          } // create gl.seriesX as it will be used in calculations of x positions
+
+
+          for (var _i = 0; _i < ser.length; _i++) {
+            gl.seriesX.push(labelArr);
+          } // turn on the isXNumeric flag to allow minX and maxX to function properly
+
+
+          gl.isXNumeric = true;
+        } // no series to pull labels from, put a 0-10 series
+        // possibly, user collapsed all series. Hence we can't work with above calc
+
+
+        if (labelArr.length === 0) {
+          labelArr = [0, 10];
+
+          for (var _i2 = 0; _i2 < ser.length; _i2++) {
+            gl.seriesX.push(labelArr);
+          }
+        } // Finally, pass the labelArr in gl.labels which will be printed on x-axis
+
+
+        gl.labels = labelArr; // Turn on this global flag to indicate no labels were provided by user
+
+        gl.noLabelsProvided = true;
+      }
+    } // Segregate user provided data into appropriate vars
+
+  }, {
+    key: "parseData",
+    value: function parseData(ser) {
+      var w = this.w;
+      var cnf = w.config;
+      var gl = w.globals;
+      this.excludeCollapsedSeriesInYAxis(); // If we detected string in X prop of series, we fallback to category x-axis
+
+      this.fallbackToCategory = false;
+      this.resetGlobals();
+      this.isMultipleY();
+
+      if (gl.axisCharts) {
+        // axisCharts includes line / area / column / scatter
+        this.parseDataAxisCharts(ser);
+      } else {
+        // non-axis charts are pie / donut
+        this.parseDataNonAxisCharts(ser);
+      }
+
+      this.coreUtils.getLargestSeries(); // set Null values to 0 in all series when user hides/shows some series
+
+      if (cnf.chart.type === 'bar' && cnf.chart.stacked) {
+        var series = new Series(this.ctx);
+        gl.series = series.setNullSeriesToZeroValues(gl.series);
+      }
+
+      this.coreUtils.getSeriesTotals();
+
+      if (gl.axisCharts) {
+        this.coreUtils.getStackedSeriesTotals();
+      }
+
+      this.coreUtils.getPercentSeries();
+
+      if (!gl.dataFormatXNumeric && (!gl.isXNumeric || cnf.xaxis.type === 'numeric' && cnf.labels.length === 0 && cnf.xaxis.categories.length === 0)) {
+        // x-axis labels couldn't be detected; hence try searching every option in config
+        this.handleExternalLabelsData(ser);
+      }
+    }
+  }, {
+    key: "xySettings",
+    value: function xySettings() {
+      var xyRatios = null;
+      var w = this.w;
+
+      if (w.globals.axisCharts) {
+        if (w.config.xaxis.crosshairs.position === 'back') {
+          var crosshairs = new Crosshairs(this.ctx);
+          crosshairs.drawXCrosshairs();
+        }
+
+        if (w.config.yaxis[0].crosshairs.position === 'back') {
+          var _crosshairs = new Crosshairs(this.ctx);
+
+          _crosshairs.drawYCrosshairs();
+        }
+
+        xyRatios = this.coreUtils.getCalculatedRatios();
+
+        if (w.config.xaxis.type === 'datetime' && w.config.xaxis.labels.formatter === undefined) {
+          var ts = new TimeScale(this.ctx);
+          var formattedTimeScale;
+
+          if (isFinite(w.globals.minX) && isFinite(w.globals.maxX) && !w.globals.isBarHorizontal) {
+            formattedTimeScale = ts.calculateTimeScaleTicks(w.globals.minX, w.globals.maxX);
+            ts.recalcDimensionsBasedOnFormat(formattedTimeScale, false);
+          } else if (w.globals.isBarHorizontal) {
+            formattedTimeScale = ts.calculateTimeScaleTicks(w.globals.minY, w.globals.maxY);
+            ts.recalcDimensionsBasedOnFormat(formattedTimeScale, true);
+          }
+        }
+      }
+
+      return xyRatios;
+    }
+  }, {
+    key: "drawAxis",
+    value: function drawAxis(type, xyRatios) {
+      var gl = this.w.globals;
+      var cnf = this.w.config;
+      var xAxis = new XAxis(this.ctx);
+      var yAxis = new YAxis(this.ctx);
+
+      if (gl.axisCharts && type !== 'radar') {
+        var elXaxis, elYaxis;
+
+        if (gl.isBarHorizontal) {
+          elYaxis = yAxis.drawYaxisInversed(0);
+          elXaxis = xAxis.drawXaxisInversed(0);
+          gl.dom.elGraphical.add(elXaxis);
+          gl.dom.elGraphical.add(elYaxis);
+        } else {
+          elXaxis = xAxis.drawXaxis();
+          gl.dom.elGraphical.add(elXaxis);
+          cnf.yaxis.map(function (yaxe, index) {
+            if (gl.ignoreYAxisIndexes.indexOf(index) === -1) {
+              elYaxis = yAxis.drawYaxis(index);
+              gl.dom.Paper.add(elYaxis);
+            }
+          });
+        }
+      }
+
+      cnf.yaxis.map(function (yaxe, index) {
+        if (gl.ignoreYAxisIndexes.indexOf(index) === -1) {
+          yAxis.yAxisTitleRotate(index, yaxe.opposite);
+        }
+      });
+    }
+  }, {
+    key: "setupBrushHandler",
+    value: function setupBrushHandler() {
+      var _this3 = this;
+
+      var w = this.w; // only for brush charts
+
+      if (!w.config.chart.brush.enabled) {
+        return;
+      } // if user has not defined a custom function for selection - we handle the brush chart
+      // otherwise we leave it to the user to define the functionality for selection
+
+
+      if (typeof w.config.chart.events.selection !== 'function') {
+        var targets = w.config.chart.brush.targets || [w.config.chart.brush.target]; // retro compatibility with single target option
+
+        targets.forEach(function (target) {
+          var targetChart = ApexCharts.getChartByID(target);
+          targetChart.w.globals.brushSource = _this3.ctx;
+
+          var updateSourceChart = function updateSourceChart() {
+            _this3.ctx._updateOptions({
+              chart: {
+                selection: {
+                  xaxis: {
+                    min: targetChart.w.globals.minX,
+                    max: targetChart.w.globals.maxX
+                  }
+                }
+              }
+            }, false, false);
+          };
+
+          if (typeof targetChart.w.config.chart.events.zoomed !== 'function') {
+            targetChart.w.config.chart.events.zoomed = function () {
+              updateSourceChart();
+            };
+          }
+
+          if (typeof targetChart.w.config.chart.events.scrolled !== 'function') {
+            targetChart.w.config.chart.events.scrolled = function () {
+              updateSourceChart();
+            };
+          }
+
+          w.config.chart.events.selection = function (chart, e) {
+            var yaxis = Utils.clone(w.config.yaxis);
+
+            if (w.config.chart.brush.autoScaleYaxis) {
+              var scale = new Range(targetChart);
+              yaxis = scale.autoScaleY(targetChart, e);
+            }
+
+            targetChart._updateOptions({
+              xaxis: {
+                min: e.xaxis.min,
+                max: e.xaxis.max
+              },
+              yaxis: yaxis
+            }, false, false, false);
+          };
+        });
+      }
+    }
+  }]);
+
+  return Core;
+}();
+
+/**
+ * @this {Promise}
+ */
+function finallyConstructor(callback) {
+  var constructor = this.constructor;
+  return this.then(
+    function(value) {
+      return constructor.resolve(callback()).then(function() {
+        return value;
+      });
+    },
+    function(reason) {
+      return constructor.resolve(callback()).then(function() {
+        return constructor.reject(reason);
+      });
+    }
+  );
+}
+
+// Store setTimeout reference so promise-polyfill will be unaffected by
+// other code modifying setTimeout (like sinon.useFakeTimers())
+var setTimeoutFunc = setTimeout;
+
+function noop() {}
+
+// Polyfill for Function.prototype.bind
+function bind(fn, thisArg) {
+  return function() {
+    fn.apply(thisArg, arguments);
+  };
+}
+
+/**
+ * @constructor
+ * @param {Function} fn
+ */
+function Promise$1(fn) {
+  if (!(this instanceof Promise$1))
+    throw new TypeError('Promises must be constructed via new');
+  if (typeof fn !== 'function') throw new TypeError('not a function');
+  /** @type {!number} */
+  this._state = 0;
+  /** @type {!boolean} */
+  this._handled = false;
+  /** @type {Promise|undefined} */
+  this._value = undefined;
+  /** @type {!Array<!Function>} */
+  this._deferreds = [];
+
+  doResolve(fn, this);
+}
+
+function handle(self, deferred) {
+  while (self._state === 3) {
+    self = self._value;
+  }
+  if (self._state === 0) {
+    self._deferreds.push(deferred);
+    return;
+  }
+  self._handled = true;
+  Promise$1._immediateFn(function() {
+    var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
+    if (cb === null) {
+      (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
+      return;
+    }
+    var ret;
+    try {
+      ret = cb(self._value);
+    } catch (e) {
+      reject(deferred.promise, e);
+      return;
+    }
+    resolve(deferred.promise, ret);
+  });
+}
+
+function resolve(self, newValue) {
+  try {
+    // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
+    if (newValue === self)
+      throw new TypeError('A promise cannot be resolved with itself.');
+    if (
+      newValue &&
+      (typeof newValue === 'object' || typeof newValue === 'function')
+    ) {
+      var then = newValue.then;
+      if (newValue instanceof Promise$1) {
+        self._state = 3;
+        self._value = newValue;
+        finale(self);
+        return;
+      } else if (typeof then === 'function') {
+        doResolve(bind(then, newValue), self);
+        return;
+      }
+    }
+    self._state = 1;
+    self._value = newValue;
+    finale(self);
+  } catch (e) {
+    reject(self, e);
+  }
+}
+
+function reject(self, newValue) {
+  self._state = 2;
+  self._value = newValue;
+  finale(self);
+}
+
+function finale(self) {
+  if (self._state === 2 && self._deferreds.length === 0) {
+    Promise$1._immediateFn(function() {
+      if (!self._handled) {
+        Promise$1._unhandledRejectionFn(self._value);
+      }
+    });
+  }
+
+  for (var i = 0, len = self._deferreds.length; i < len; i++) {
+    handle(self, self._deferreds[i]);
+  }
+  self._deferreds = null;
+}
+
+/**
+ * @constructor
+ */
+function Handler(onFulfilled, onRejected, promise) {
+  this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
+  this.onRejected = typeof onRejected === 'function' ? onRejected : null;
+  this.promise = promise;
+}
+
+/**
+ * Take a potentially misbehaving resolver function and make sure
+ * onFulfilled and onRejected are only called once.
+ *
+ * Makes no guarantees about asynchrony.
+ */
+function doResolve(fn, self) {
+  var done = false;
+  try {
+    fn(
+      function(value) {
+        if (done) return;
+        done = true;
+        resolve(self, value);
+      },
+      function(reason) {
+        if (done) return;
+        done = true;
+        reject(self, reason);
+      }
+    );
+  } catch (ex) {
+    if (done) return;
+    done = true;
+    reject(self, ex);
+  }
+}
+
+Promise$1.prototype['catch'] = function(onRejected) {
+  return this.then(null, onRejected);
+};
+
+Promise$1.prototype.then = function(onFulfilled, onRejected) {
+  // @ts-ignore
+  var prom = new this.constructor(noop);
+
+  handle(this, new Handler(onFulfilled, onRejected, prom));
+  return prom;
+};
+
+Promise$1.prototype['finally'] = finallyConstructor;
+
+Promise$1.all = function(arr) {
+  return new Promise$1(function(resolve, reject) {
+    if (!arr || typeof arr.length === 'undefined')
+      throw new TypeError('Promise.all accepts an array');
+    var args = Array.prototype.slice.call(arr);
+    if (args.length === 0) return resolve([]);
+    var remaining = args.length;
+
+    function res(i, val) {
+      try {
+        if (val && (typeof val === 'object' || typeof val === 'function')) {
+          var then = val.then;
+          if (typeof then === 'function') {
+            then.call(
+              val,
+              function(val) {
+                res(i, val);
+              },
+              reject
+            );
+            return;
+          }
+        }
+        args[i] = val;
+        if (--remaining === 0) {
+          resolve(args);
+        }
+      } catch (ex) {
+        reject(ex);
+      }
+    }
+
+    for (var i = 0; i < args.length; i++) {
+      res(i, args[i]);
+    }
+  });
+};
+
+Promise$1.resolve = function(value) {
+  if (value && typeof value === 'object' && value.constructor === Promise$1) {
+    return value;
+  }
+
+  return new Promise$1(function(resolve) {
+    resolve(value);
+  });
+};
+
+Promise$1.reject = function(value) {
+  return new Promise$1(function(resolve, reject) {
+    reject(value);
+  });
+};
+
+Promise$1.race = function(values) {
+  return new Promise$1(function(resolve, reject) {
+    for (var i = 0, len = values.length; i < len; i++) {
+      values[i].then(resolve, reject);
+    }
+  });
+};
+
+// Use polyfill for setImmediate for performance gains
+Promise$1._immediateFn =
+  (typeof setImmediate === 'function' &&
+    function(fn) {
+      setImmediate(fn);
+    }) ||
+  function(fn) {
+    setTimeoutFunc(fn, 0);
+  };
+
+Promise$1._unhandledRejectionFn = function _unhandledRejectionFn(err) {
+  if (typeof console !== 'undefined' && console) {
+    console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
+  }
+};
+
+var Exports =
+/*#__PURE__*/
+function () {
+  function Exports(ctx) {
+    _classCallCheck(this, Exports);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(Exports, [{
+    key: "getSvgString",
+    value: function getSvgString() {
+      return this.w.globals.dom.Paper.svg();
+    }
+  }, {
+    key: "cleanup",
+    value: function cleanup() {
+      var w = this.w; // hide some elements to avoid printing them on exported svg
+
+      var xcrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs');
+      var ycrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs');
+
+      if (xcrosshairs) {
+        xcrosshairs.setAttribute('x', -500);
+      }
+
+      if (ycrosshairs) {
+        ycrosshairs.setAttribute('y1', -100);
+        ycrosshairs.setAttribute('y2', -100);
+      }
+    }
+  }, {
+    key: "svgUrl",
+    value: function svgUrl() {
+      this.cleanup();
+      var svgData = this.getSvgString();
+      var svgBlob = new Blob([svgData], {
+        type: 'image/svg+xml;charset=utf-8'
+      });
+      return URL.createObjectURL(svgBlob);
+    }
+  }, {
+    key: "dataURI",
+    value: function dataURI() {
+      var _this = this;
+
+      return new Promise$1(function (resolve) {
+        var w = _this.w;
+
+        _this.cleanup();
+
+        var canvas = document.createElement('canvas');
+        canvas.width = w.globals.svgWidth;
+        canvas.height = w.globals.svgHeight;
+        var canvasBg = w.config.chart.background === 'transparent' ? '#fff' : w.config.chart.background;
+        var ctx = canvas.getContext('2d');
+        ctx.fillStyle = canvasBg;
+        ctx.fillRect(0, 0, canvas.width, canvas.height);
+        var DOMURL = window.URL || window.webkitURL || window;
+        var img = new Image();
+        img.crossOrigin = 'anonymous';
+
+        var svgData = _this.getSvgString();
+
+        var svgUrl = 'data:image/svg+xml,' + encodeURIComponent(svgData);
+
+        img.onload = function () {
+          ctx.drawImage(img, 0, 0);
+          DOMURL.revokeObjectURL(svgUrl);
+          var imgURI = canvas.toDataURL('image/png');
+          resolve(imgURI);
+        };
+
+        img.src = svgUrl;
+      });
+    }
+  }, {
+    key: "exportToSVG",
+    value: function exportToSVG() {
+      this.triggerDownload(this.svgUrl(), '.svg');
+    }
+  }, {
+    key: "exportToPng",
+    value: function exportToPng() {
+      var _this2 = this;
+
+      this.dataURI().then(function (imgURI) {
+        _this2.triggerDownload(imgURI, '.png');
+      });
+    }
+  }, {
+    key: "triggerDownload",
+    value: function triggerDownload(href, ext) {
+      var downloadLink = document.createElement('a');
+      downloadLink.href = href;
+      downloadLink.download = this.w.globals.chartID + ext;
+      document.body.appendChild(downloadLink);
+      downloadLink.click();
+      document.body.removeChild(downloadLink);
+    }
+  }]);
+
+  return Exports;
+}();
+
+/**
+ * ApexCharts Grid Class for drawing Cartesian Grid.
+ *
+ * @module Grid
+ **/
+
+var Grid =
+/*#__PURE__*/
+function () {
+  function Grid(ctx) {
+    _classCallCheck(this, Grid);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+    this.anim = new Animations(this.ctx);
+    this.xaxisLabels = w.globals.labels.slice();
+    this.animX = w.config.grid.xaxis.lines.animate && w.config.chart.animations.enabled;
+    this.animY = w.config.grid.yaxis.lines.animate && w.config.chart.animations.enabled;
+
+    if (w.globals.timelineLabels.length > 0) {
+      //  timeline labels are there
+      this.xaxisLabels = w.globals.timelineLabels.slice();
+    }
+  } // .when using sparklines or when showing no grid, we need to have a grid area which is reused at many places for other calculations as well
+
+
+  _createClass(Grid, [{
+    key: "drawGridArea",
+    value: function drawGridArea() {
+      var elGrid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+
+      if (elGrid === null) {
+        elGrid = graphics.group({
+          class: 'apexcharts-grid'
+        });
+      }
+
+      var elVerticalLine = graphics.drawLine(w.globals.padHorizontal, 1, w.globals.padHorizontal, w.globals.gridHeight, 'transparent');
+      var elHorzLine = graphics.drawLine(w.globals.padHorizontal, w.globals.gridHeight, w.globals.gridWidth, w.globals.gridHeight, 'transparent');
+      elGrid.add(elHorzLine);
+      elGrid.add(elVerticalLine);
+      return elGrid;
+    }
+  }, {
+    key: "drawGrid",
+    value: function drawGrid() {
+      var w = this.w;
+      var xAxis = new XAxis(this.ctx);
+      var yaxis = new YAxis(this.ctx);
+      var gl = this.w.globals;
+      var elgrid = null;
+
+      if (gl.axisCharts) {
+        if (w.config.grid.show) {
+          // grid is drawn after xaxis and yaxis are drawn
+          elgrid = this.renderGrid();
+          gl.dom.elGraphical.add(elgrid.el);
+          this.drawGridArea(elgrid.el);
+        } else {
+          var elgridArea = this.drawGridArea();
+          gl.dom.elGraphical.add(elgridArea);
+        }
+
+        if (elgrid !== null) {
+          xAxis.xAxisLabelCorrections(elgrid.xAxisTickWidth);
+        }
+
+        yaxis.setYAxisTextAlignments();
+      }
+    } // This mask will clip off overflowing graphics from the drawable area
+
+  }, {
+    key: "createGridMask",
+    value: function createGridMask() {
+      var w = this.w;
+      var gl = w.globals;
+      var graphics = new Graphics(this.ctx);
+      var strokeSize = Array.isArray(w.config.stroke.width) ? 0 : w.config.stroke.width;
+
+      if (Array.isArray(w.config.stroke.width)) {
+        var strokeMaxSize = 0;
+        w.config.stroke.width.forEach(function (m) {
+          strokeMaxSize = Math.max(strokeMaxSize, m);
+        });
+        strokeSize = strokeMaxSize;
+      }
+
+      gl.dom.elGridRectMask = document.createElementNS(gl.SVGNS, 'clipPath');
+      gl.dom.elGridRectMask.setAttribute('id', "gridRectMask".concat(gl.cuid));
+      gl.dom.elGridRectMarkerMask = document.createElementNS(gl.SVGNS, 'clipPath');
+      gl.dom.elGridRectMarkerMask.setAttribute('id', "gridRectMarkerMask".concat(gl.cuid));
+      gl.dom.elGridRect = graphics.drawRect(-strokeSize / 2, -strokeSize / 2, gl.gridWidth + strokeSize, gl.gridHeight + strokeSize, 0, '#fff');
+      var coreUtils = new CoreUtils(this);
+      coreUtils.getLargestMarkerSize();
+      var markerSize = w.globals.markers.largestSize + 1;
+      gl.dom.elGridRectMarker = graphics.drawRect(-markerSize, -markerSize, gl.gridWidth + markerSize * 2, gl.gridHeight + markerSize * 2, 0, '#fff');
+      gl.dom.elGridRectMask.appendChild(gl.dom.elGridRect.node);
+      gl.dom.elGridRectMarkerMask.appendChild(gl.dom.elGridRectMarker.node);
+      var defs = gl.dom.baseEl.querySelector('defs');
+      defs.appendChild(gl.dom.elGridRectMask);
+      defs.appendChild(gl.dom.elGridRectMarkerMask);
+    } // actual grid rendering
+
+  }, {
+    key: "renderGrid",
+    value: function renderGrid() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var strokeDashArray = w.config.grid.strokeDashArray;
+      var elg = graphics.group({
+        class: 'apexcharts-grid'
+      });
+      var elgridLinesH = graphics.group({
+        class: 'apexcharts-gridlines-horizontal'
+      });
+      var elgridLinesV = graphics.group({
+        class: 'apexcharts-gridlines-vertical'
+      });
+      elg.add(elgridLinesH);
+      elg.add(elgridLinesV);
+      var tickAmount = 8;
+
+      for (var i = 0; i < w.globals.series.length; i++) {
+        if (typeof w.globals.yAxisScale[i] !== 'undefined') {
+          tickAmount = w.globals.yAxisScale[i].result.length - 1;
+        }
+
+        if (tickAmount > 2) break;
+      }
+
+      var xCount;
+
+      if (!w.globals.isBarHorizontal) {
+        xCount = this.xaxisLabels.length; // draw vertical lines
+
+        if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) {
+          var x1 = w.globals.padHorizontal;
+          var y1 = 0;
+          var x2;
+          var y2 = w.globals.gridHeight;
+
+          if (w.globals.timelineLabels.length > 0) {
+            for (var _i = 0; _i < xCount; _i++) {
+              x1 = this.xaxisLabels[_i].position;
+              x2 = this.xaxisLabels[_i].position;
+
+              if (w.config.grid.xaxis.lines.show && x1 > 0 && x1 < w.globals.gridWidth) {
+                var line = graphics.drawLine(x1, y1, x2, y2, w.config.grid.borderColor, strokeDashArray);
+                line.node.classList.add('apexcharts-gridline');
+                elgridLinesV.add(line);
+
+                if (this.animX) {
+                  this.animateLine(line, {
+                    x1: 0,
+                    x2: 0
+                  }, {
+                    x1: x1,
+                    x2: x2
+                  });
+                }
+              }
+
+              var xAxis = new XAxis(this.ctx);
+
+              if (_i === xCount - 1) {
+                if (!w.globals.skipLastTimelinelabel) {
+                  // skip drawing last label here
+                  xAxis.drawXaxisTicks(x1, elg);
+                }
+              } else {
+                xAxis.drawXaxisTicks(x1, elg);
+              }
+            }
+          } else {
+            var xCountForCategoryCharts = xCount;
+
+            for (var _i2 = 0; _i2 < xCountForCategoryCharts; _i2++) {
+              var x1Count = xCountForCategoryCharts;
+
+              if (w.globals.isXNumeric && w.config.chart.type !== 'bar') {
+                x1Count -= 1;
+              }
+
+              x1 = x1 + w.globals.gridWidth / x1Count;
+              x2 = x1; // skip the last line
+
+              if (_i2 === x1Count - 1) break;
+
+              if (w.config.grid.xaxis.lines.show) {
+                var _line = graphics.drawLine(x1, y1, x2, y2, w.config.grid.borderColor, strokeDashArray);
+
+                _line.node.classList.add('apexcharts-gridline');
+
+                elgridLinesV.add(_line);
+
+                if (this.animX) {
+                  this.animateLine(_line, {
+                    x1: 0,
+                    x2: 0
+                  }, {
+                    x1: x1,
+                    x2: x2
+                  });
+                }
+              }
+
+              var _xAxis = new XAxis(this.ctx);
+
+              _xAxis.drawXaxisTicks(x1, elg);
+            }
+          }
+        } // draw horizontal lines
+
+
+        if (w.config.grid.yaxis.lines.show) {
+          var _x = 0;
+          var _y = 0;
+          var _y2 = 0;
+          var _x2 = w.globals.gridWidth;
+
+          for (var _i3 = 0; _i3 < tickAmount + 1; _i3++) {
+            var _line2 = graphics.drawLine(_x, _y, _x2, _y2, w.config.grid.borderColor, strokeDashArray);
+
+            elgridLinesH.add(_line2);
+
+            _line2.node.classList.add('apexcharts-gridline');
+
+            if (this.animY) {
+              this.animateLine(_line2, {
+                y1: _y + 20,
+                y2: _y2 + 20
+              }, {
+                y1: _y,
+                y2: _y2
+              });
+            }
+
+            _y = _y + w.globals.gridHeight / tickAmount;
+            _y2 = _y;
+          }
+        }
+      } else {
+        xCount = tickAmount; // draw vertical lines
+
+        if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) {
+          var _x3 = w.globals.padHorizontal;
+          var _y3 = 0;
+
+          var _x4;
+
+          var _y4 = w.globals.gridHeight;
+
+          for (var _i4 = 0; _i4 < xCount + 1; _i4++) {
+            _x3 = _x3 + w.globals.gridWidth / xCount + 0.3;
+            _x4 = _x3; // skip the last vertical line
+
+            if (_i4 === xCount - 1) break;
+
+            if (w.config.grid.xaxis.lines.show) {
+              var _line3 = graphics.drawLine(_x3, _y3, _x4, _y4, w.config.grid.borderColor, strokeDashArray);
+
+              _line3.node.classList.add('apexcharts-gridline');
+
+              elgridLinesV.add(_line3);
+
+              if (this.animX) {
+                this.animateLine(_line3, {
+                  x1: 0,
+                  x2: 0
+                }, {
+                  x1: _x3,
+                  x2: _x4
+                });
+              }
+            } // skip the first vertical line
+
+
+            var _xAxis2 = new XAxis(this.ctx);
+
+            _xAxis2.drawXaxisTicks(_x3, elg);
+          }
+        } // draw horizontal lines
+
+
+        if (w.config.grid.yaxis.lines.show) {
+          var _x5 = 0;
+          var _y5 = 0;
+          var _y6 = 0;
+          var _x6 = w.globals.gridWidth;
+
+          for (var _i5 = 0; _i5 < w.globals.dataPoints + 1; _i5++) {
+            var _line4 = graphics.drawLine(_x5, _y5, _x6, _y6, w.config.grid.borderColor, strokeDashArray);
+
+            elgridLinesH.add(_line4);
+
+            _line4.node.classList.add('apexcharts-gridline');
+
+            if (this.animY) {
+              this.animateLine(_line4, {
+                y1: _y5 + 20,
+                y2: _y6 + 20
+              }, {
+                y1: _y5,
+                y2: _y6
+              });
+            }
+
+            _y5 = _y5 + w.globals.gridHeight / w.globals.dataPoints;
+            _y6 = _y5;
+          }
+        }
+      }
+
+      this.drawGridBands(elg, xCount, tickAmount);
+      return {
+        el: elg,
+        xAxisTickWidth: w.globals.gridWidth / xCount
+      };
+    }
+  }, {
+    key: "drawGridBands",
+    value: function drawGridBands(elg, xCount, tickAmount) {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx); // rows background bands
+
+      if (w.config.grid.row.colors !== undefined && w.config.grid.row.colors.length > 0) {
+        var x1 = 0;
+        var y1 = 0;
+        var y2 = w.globals.gridHeight / tickAmount;
+        var x2 = w.globals.gridWidth;
+
+        for (var i = 0, c = 0; i < tickAmount; i++, c++) {
+          if (c >= w.config.grid.row.colors.length) {
+            c = 0;
+          }
+
+          var color = w.config.grid.row.colors[c];
+          var rect = graphics.drawRect(x1, y1, x2, y2, 0, color, w.config.grid.row.opacity);
+          elg.add(rect);
+          rect.node.classList.add('apexcharts-gridRow');
+          y1 = y1 + w.globals.gridHeight / tickAmount;
+        }
+      } // columns background bands
+
+
+      if (w.config.grid.column.colors !== undefined && w.config.grid.column.colors.length > 0) {
+        var _x7 = w.globals.padHorizontal;
+        var _y7 = 0;
+
+        var _x8 = w.globals.padHorizontal + w.globals.gridWidth / xCount;
+
+        var _y8 = w.globals.gridHeight;
+
+        for (var _i6 = 0, _c = 0; _i6 < xCount; _i6++, _c++) {
+          if (_c >= w.config.grid.column.colors.length) {
+            _c = 0;
+          }
+
+          var _color = w.config.grid.column.colors[_c];
+
+          var _rect = graphics.drawRect(_x7, _y7, _x8, _y8, 0, _color, w.config.grid.column.opacity);
+
+          _rect.node.classList.add('apexcharts-gridColumn');
+
+          elg.add(_rect);
+          _x7 = _x7 + w.globals.gridWidth / xCount;
+        }
+      }
+    }
+  }, {
+    key: "animateLine",
+    value: function animateLine(line, from, to) {
+      var w = this.w;
+      var initialAnim = w.config.chart.animations;
+
+      if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+        var speed = initialAnim.speed;
+        this.anim.animateLine(line, from, to, speed);
+      }
+    }
+  }]);
+
+  return Grid;
+}();
+
+/**
+ * ApexCharts Legend Class to draw legend.
+ *
+ * @module Legend
+ **/
+
+var Legend =
+/*#__PURE__*/
+function () {
+  function Legend(ctx, opts) {
+    _classCallCheck(this, Legend);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.onLegendClick = this.onLegendClick.bind(this);
+    this.onLegendHovered = this.onLegendHovered.bind(this);
+  }
+
+  _createClass(Legend, [{
+    key: "init",
+    value: function init() {
+      var w = this.w;
+      var gl = w.globals;
+      var cnf = w.config;
+      var showLegendAlways = cnf.legend.showForSingleSeries && gl.series.length === 1 || gl.series.length > 1;
+
+      if ((showLegendAlways || !gl.axisCharts) && cnf.legend.show) {
+        while (gl.dom.elLegendWrap.firstChild) {
+          gl.dom.elLegendWrap.removeChild(gl.dom.elLegendWrap.firstChild);
+        }
+
+        this.drawLegends();
+
+        if (!Utils.isIE11()) {
+          this.appendToForeignObject();
+        } else {
+          // IE11 doesn't supports foreignObject, hence append it to <head>
+          document.getElementsByTagName('head')[0].appendChild(this.getLegendStyles());
+        }
+
+        if (cnf.legend.position === 'bottom' || cnf.legend.position === 'top') {
+          this.legendAlignHorizontal();
+        } else if (cnf.legend.position === 'right' || cnf.legend.position === 'left') {
+          this.legendAlignVertical();
+        }
+      }
+    }
+  }, {
+    key: "appendToForeignObject",
+    value: function appendToForeignObject() {
+      var gl = this.w.globals;
+      var elForeign = document.createElementNS(gl.SVGNS, 'foreignObject');
+      elForeign.setAttribute('x', 0);
+      elForeign.setAttribute('y', 0);
+      elForeign.setAttribute('width', gl.svgWidth);
+      elForeign.setAttribute('height', gl.svgHeight);
+      gl.dom.elLegendWrap.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
+      elForeign.appendChild(gl.dom.elLegendWrap);
+      elForeign.appendChild(this.getLegendStyles());
+      gl.dom.Paper.node.insertBefore(elForeign, gl.dom.elGraphical.node);
+    }
+  }, {
+    key: "drawLegends",
+    value: function drawLegends() {
+      var self = this;
+      var w = this.w;
+      var fontFamily = w.config.legend.fontFamily;
+      var legendNames = w.globals.seriesNames;
+      var fillcolor = w.globals.colors.slice();
+
+      if (w.config.chart.type === 'heatmap') {
+        var ranges = w.config.plotOptions.heatmap.colorScale.ranges;
+        legendNames = ranges.map(function (colorScale) {
+          return colorScale.name ? colorScale.name : colorScale.from + ' - ' + colorScale.to;
+        });
+        fillcolor = ranges.map(function (color) {
+          return color.color;
+        });
+      }
+
+      var legendFormatter = w.globals.legendFormatter;
+
+      for (var i = 0; i <= legendNames.length - 1; i++) {
+        var text = legendFormatter(legendNames[i], {
+          seriesIndex: i,
+          w: w
+        });
+        var collapsedSeries = false;
+        var ancillaryCollapsedSeries = false;
+
+        if (w.globals.collapsedSeries.length > 0) {
+          for (var c = 0; c < w.globals.collapsedSeries.length; c++) {
+            if (w.globals.collapsedSeries[c].index === i) {
+              collapsedSeries = true;
+            }
+          }
+        }
+
+        if (w.globals.ancillaryCollapsedSeriesIndices.length > 0) {
+          for (var _c = 0; _c < w.globals.ancillaryCollapsedSeriesIndices.length; _c++) {
+            if (w.globals.ancillaryCollapsedSeriesIndices[_c] === i) {
+              ancillaryCollapsedSeries = true;
+            }
+          }
+        }
+
+        var elMarker = document.createElement('span');
+        elMarker.classList.add('apexcharts-legend-marker');
+        var mOffsetX = w.config.legend.markers.offsetX;
+        var mOffsetY = w.config.legend.markers.offsetY;
+        var mHeight = w.config.legend.markers.height;
+        var mWidth = w.config.legend.markers.width;
+        var mBorderWidth = w.config.legend.markers.strokeWidth;
+        var mBorderColor = w.config.legend.markers.strokeColor;
+        var mBorderRadius = w.config.legend.markers.radius;
+        var mStyle = elMarker.style;
+        mStyle.background = fillcolor[i];
+        mStyle.color = fillcolor[i];
+        mStyle.height = Array.isArray(mHeight) ? parseFloat(mHeight[i]) + 'px' : parseFloat(mHeight) + 'px';
+        mStyle.width = Array.isArray(mWidth) ? parseFloat(mWidth[i]) + 'px' : parseFloat(mWidth) + 'px';
+        mStyle.left = Array.isArray(mOffsetX) ? mOffsetX[i] : mOffsetX;
+        mStyle.top = Array.isArray(mOffsetY) ? mOffsetY[i] : mOffsetY;
+        mStyle.borderWidth = Array.isArray(mBorderWidth) ? mBorderWidth[i] : mBorderWidth;
+        mStyle.borderColor = Array.isArray(mBorderColor) ? mBorderColor[i] : mBorderColor;
+        mStyle.borderRadius = Array.isArray(mBorderRadius) ? parseFloat(mBorderRadius[i]) + 'px' : parseFloat(mBorderRadius) + 'px';
+
+        if (w.config.legend.markers.customHTML) {
+          if (Array.isArray(w.config.legend.markers.customHTML)) {
+            elMarker.innerHTML = w.config.legend.markers.customHTML[i]();
+          } else {
+            elMarker.innerHTML = w.config.legend.markers.customHTML();
+          }
+        }
+
+        Graphics.setAttrs(elMarker, {
+          rel: i + 1,
+          'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+        });
+
+        if (collapsedSeries || ancillaryCollapsedSeries) {
+          elMarker.classList.add('inactive-legend');
+        }
+
+        var elLegend = document.createElement('div');
+        var elLegendText = document.createElement('span');
+        elLegendText.classList.add('apexcharts-legend-text');
+        elLegendText.innerHTML = text;
+        var textColor = w.config.legend.labels.useSeriesColors ? w.globals.colors[i] : w.config.legend.labels.colors;
+
+        if (!textColor) {
+          textColor = w.config.chart.foreColor;
+        }
+
+        elLegendText.style.color = textColor;
+        elLegendText.style.fontSize = parseFloat(w.config.legend.fontSize) + 'px';
+        elLegendText.style.fontFamily = fontFamily || w.config.chart.fontFamily;
+        Graphics.setAttrs(elLegendText, {
+          rel: i + 1,
+          'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+        });
+        elLegend.appendChild(elMarker);
+        elLegend.appendChild(elLegendText);
+        var coreUtils = new CoreUtils(this.ctx);
+
+        if (!w.config.legend.showForZeroSeries) {
+          var total = coreUtils.getSeriesTotalByIndex(i);
+
+          if (total === 0 && coreUtils.seriesHaveSameValues(i) && !coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) {
+            elLegend.classList.add('apexcharts-hidden-zero-series');
+          }
+        }
+
+        if (!w.config.legend.showForNullSeries) {
+          if (coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) {
+            elLegend.classList.add('apexcharts-hidden-null-series');
+          }
+        }
+
+        w.globals.dom.elLegendWrap.appendChild(elLegend);
+        w.globals.dom.elLegendWrap.classList.add(w.config.legend.horizontalAlign); // w.globals.dom.elLegendWrap.classList.add(w.config.legend.verticalAlign)
+
+        w.globals.dom.elLegendWrap.classList.add('position-' + w.config.legend.position);
+        elLegend.classList.add('apexcharts-legend-series');
+        elLegend.style.margin = "".concat(w.config.legend.itemMargin.horizontal, "px ").concat(w.config.legend.itemMargin.vertical, "px");
+        w.globals.dom.elLegendWrap.style.width = w.config.legend.width ? w.config.legend.width + 'px' : '';
+        w.globals.dom.elLegendWrap.style.height = w.config.legend.height ? w.config.legend.height + 'px' : '';
+        Graphics.setAttrs(elLegend, {
+          rel: i + 1,
+          'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+        });
+
+        if (collapsedSeries || ancillaryCollapsedSeries) {
+          elLegend.classList.add('inactive-legend');
+        }
+
+        if (!w.config.legend.onItemClick.toggleDataSeries) {
+          elLegend.classList.add('no-click');
+        }
+      } // for now - just prevent click on heatmap legend - and allow hover only
+
+
+      var clickAllowed = w.config.chart.type !== 'heatmap';
+
+      if (clickAllowed && w.config.legend.onItemClick.toggleDataSeries) {
+        w.globals.dom.elWrap.addEventListener('click', self.onLegendClick, true);
+      }
+
+      if (w.config.legend.onItemHover.highlightDataSeries) {
+        w.globals.dom.elWrap.addEventListener('mousemove', self.onLegendHovered, true);
+        w.globals.dom.elWrap.addEventListener('mouseout', self.onLegendHovered, true);
+      }
+    }
+  }, {
+    key: "getLegendBBox",
+    value: function getLegendBBox() {
+      var w = this.w;
+      var currLegendsWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+      var currLegendsWrapRect = currLegendsWrap.getBoundingClientRect();
+      var currLegendsWrapWidth = currLegendsWrapRect.width;
+      var currLegendsWrapHeight = currLegendsWrapRect.height;
+      return {
+        clwh: currLegendsWrapHeight,
+        clww: currLegendsWrapWidth
+      };
+    }
+  }, {
+    key: "setLegendWrapXY",
+    value: function setLegendWrapXY(offsetX, offsetY) {
+      var w = this.w;
+      var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+      var legendRect = elLegendWrap.getBoundingClientRect();
+      var x = 0;
+      var y = 0;
+
+      if (w.config.legend.position === 'bottom') {
+        y = y + (w.globals.svgHeight - legendRect.height / 2);
+      } else if (w.config.legend.position === 'top') {
+        var dim = new Dimensions(this.ctx);
+        var titleH = dim.getTitleSubtitleCoords('title').height;
+        var subtitleH = dim.getTitleSubtitleCoords('subtitle').height;
+        y = y + (titleH > 0 ? titleH - 10 : 0) + (subtitleH > 0 ? subtitleH - 10 : 0);
+      }
+
+      elLegendWrap.style.position = 'absolute';
+      x = x + offsetX + w.config.legend.offsetX;
+      y = y + offsetY + w.config.legend.offsetY;
+      elLegendWrap.style.left = x + 'px';
+      elLegendWrap.style.top = y + 'px';
+
+      if (w.config.legend.position === 'bottom') {
+        elLegendWrap.style.top = 'auto';
+        elLegendWrap.style.bottom = 10 + w.config.legend.offsetY + 'px';
+      } else if (w.config.legend.position === 'right') {
+        elLegendWrap.style.left = 'auto';
+        elLegendWrap.style.right = 25 + w.config.legend.offsetX + 'px';
+      }
+
+      if (elLegendWrap.style.width) {
+        elLegendWrap.style.width = parseInt(w.config.legend.width) + 'px';
+      }
+
+      if (elLegendWrap.style.height) {
+        elLegendWrap.style.height = parseInt(w.config.legend.height) + 'px';
+      }
+    }
+  }, {
+    key: "legendAlignHorizontal",
+    value: function legendAlignHorizontal() {
+      var w = this.w;
+      var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+      elLegendWrap.style.right = 0;
+      var lRect = this.getLegendBBox();
+      var dimensions = new Dimensions(this.ctx);
+      var titleRect = dimensions.getTitleSubtitleCoords('title');
+      var subtitleRect = dimensions.getTitleSubtitleCoords('subtitle');
+      var offsetX = 20;
+      var offsetY = 0; // the whole legend box is set to bottom
+
+      if (w.config.legend.position === 'bottom') {
+        offsetY = -lRect.clwh / 1.8;
+      } else if (w.config.legend.position === 'top') {
+        offsetY = titleRect.height + subtitleRect.height + w.config.title.margin + w.config.subtitle.margin - 15;
+      }
+
+      this.setLegendWrapXY(offsetX, offsetY);
+    }
+  }, {
+    key: "legendAlignVertical",
+    value: function legendAlignVertical() {
+      var w = this.w;
+      var lRect = this.getLegendBBox();
+      var offsetY = 20;
+      var offsetX = 0;
+
+      if (w.config.legend.position === 'left') {
+        offsetX = 20;
+      }
+
+      if (w.config.legend.position === 'right') {
+        offsetX = w.globals.svgWidth - lRect.clww - 10;
+      }
+
+      this.setLegendWrapXY(offsetX, offsetY);
+    }
+  }, {
+    key: "onLegendHovered",
+    value: function onLegendHovered(e) {
+      var w = this.w;
+      var hoverOverLegend = e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker');
+
+      if (w.config.chart.type !== 'heatmap') {
+        if (!e.target.classList.contains('inactive-legend') && hoverOverLegend) {
+          var series = new Series(this.ctx);
+          series.toggleSeriesOnHover(e, e.target);
+        }
+      } else {
+        // for heatmap handling
+        if (hoverOverLegend) {
+          var seriesCnt = parseInt(e.target.getAttribute('rel')) - 1;
+          this.ctx.fireEvent('legendHover', [this.ctx, seriesCnt, this.w]);
+
+          var _series = new Series(this.ctx);
+
+          _series.highlightRangeInSeries(e, e.target);
+        }
+      }
+    }
+  }, {
+    key: "onLegendClick",
+    value: function onLegendClick(e) {
+      if (e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker')) {
+        var seriesCnt = parseInt(e.target.getAttribute('rel')) - 1;
+        var isHidden = e.target.getAttribute('data:collapsed') === 'true';
+        var legendClick = this.w.config.chart.events.legendClick;
+
+        if (typeof legendClick === 'function') {
+          legendClick(this.ctx, seriesCnt, this.w);
+        }
+
+        this.ctx.fireEvent('legendClick', [this.ctx, seriesCnt, this.w]);
+        var markerClick = this.w.config.legend.markers.onClick;
+
+        if (typeof markerClick === 'function' && e.target.classList.contains('apexcharts-legend-marker')) {
+          markerClick(this.ctx, seriesCnt, this.w);
+          this.ctx.fireEvent('legendMarkerClick', [this.ctx, seriesCnt, this.w]);
+        }
+
+        this.toggleDataSeries(seriesCnt, isHidden);
+      }
+    }
+  }, {
+    key: "getLegendStyles",
+    value: function getLegendStyles() {
+      var stylesheet = document.createElement('style');
+      stylesheet.setAttribute('type', 'text/css');
+      var text = "\n    \n      .apexcharts-legend {\n        display: flex;\n        overflow: auto;\n        padding: 0 10px;\n      }\n\n      .apexcharts-legend.position-bottom, .apexcharts-legend.position-top {\n        flex-wrap: wrap\n      }\n      .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n        flex-direction: column;\n        bottom: 0;\n      }\n\n      .apexcharts-legend.position-bottom.left, .apexcharts-legend.position-top.left, .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n        justify-content: flex-start;\n      }\n\n      .apexcharts-legend.position-bottom.center, .apexcharts-legend.position-top.center {\n        justify-content: center;  \n      }\n\n      .apexcharts-legend.position-bottom.right, .apexcharts-legend.position-top.right {\n        justify-content: flex-end;\n      }\n\n      .apexcharts-legend-series {\n        cursor: pointer;\n        line-height: normal;\n      }\n\n      .apexcharts-legend.position-bottom .apexcharts-legend-series, .apexcharts-legend.position-top .apexcharts-legend-series{\n        display: flex;\n        align-items: center;\n      }\n\n      .apexcharts-legend-text {\n        position: relative;\n        font-size: 14px;\n      }\n\n      .apexcharts-legend-text *, .apexcharts-legend-marker * {\n        pointer-events: none;\n      }\n\n      .apexcharts-legend-marker {\n        position: relative;\n        display: inline-block;\n        cursor: pointer;\n        margin-right: 3px;\n      }\n      \n      .apexcharts-legend.right .apexcharts-legend-series, .apexcharts-legend.left .apexcharts-legend-series{\n        display: inline-block;\n      }\n\n      .apexcharts-legend-series.no-click {\n        cursor: auto;\n      }\n\n      .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\n        display: none !important;\n      }\n\n      .inactive-legend {\n        opacity: 0.45;\n      }";
+      var rules = document.createTextNode(text);
+      stylesheet.appendChild(rules);
+      return stylesheet;
+    }
+  }, {
+    key: "resetToggleDataSeries",
+    value: function resetToggleDataSeries() {
+      var w = this.w;
+      var seriesEls = null;
+      var realIndexes = [];
+
+      if (w.globals.axisCharts) {
+        seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:realIndex]");
+        seriesEls = Utils.listToArray(seriesEls);
+        seriesEls.forEach(function (v) {
+          realIndexes.push(parseInt(v.getAttribute('data:realIndex')));
+        });
+      } else {
+        seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[rel]");
+        seriesEls = Utils.listToArray(seriesEls);
+        seriesEls.forEach(function (v) {
+          realIndexes.push(parseInt(v.getAttribute('rel')) - 1);
+        });
+      }
+
+      realIndexes.sort();
+
+      if (w.globals.collapsedSeries.length > 0) {
+        var risingSeries = w.globals.risingSeries.slice();
+        var series = w.config.series.slice();
+
+        for (var c = 0; c < w.globals.collapsedSeries.length; c++) {
+          var index = realIndexes.indexOf(w.globals.collapsedSeries[c].index);
+
+          if (index !== -1) {
+            if (w.globals.axisCharts) {
+              series[index].data = w.globals.collapsedSeries.slice()[c].data.slice();
+            } else {
+              series[index] = w.globals.collapsedSeries.slice()[c].data;
+            }
+
+            risingSeries.push(index);
+          }
+        }
+
+        w.globals.collapsedSeries = [];
+        w.globals.ancillaryCollapsedSeries = [];
+        w.globals.collapsedSeriesIndices = [];
+        w.globals.ancillaryCollapsedSeriesIndices = [];
+        w.globals.risingSeries = risingSeries;
+        w.config.series = series;
+
+        this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+      }
+    }
+  }, {
+    key: "toggleDataSeries",
+    value: function toggleDataSeries(seriesCnt, isHidden) {
+      var w = this.w;
+
+      if (w.globals.axisCharts || w.config.chart.type === 'radialBar') {
+        w.globals.resized = true; // we don't want initial animations again
+
+        var seriesEl = null;
+        var realIndex = null; // yes, make it null. 1 series will rise at a time
+
+        w.globals.risingSeries = [];
+
+        if (w.globals.axisCharts) {
+          seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesCnt, "']"));
+          realIndex = parseInt(seriesEl.getAttribute('data:realIndex'));
+        } else {
+          seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "']"));
+          realIndex = parseInt(seriesEl.getAttribute('rel')) - 1;
+        }
+
+        if (isHidden) {
+          this.riseCollapsedSeries(w.globals.collapsedSeries, w.globals.collapsedSeriesIndices, realIndex);
+          this.riseCollapsedSeries(w.globals.ancillaryCollapsedSeries, w.globals.ancillaryCollapsedSeriesIndices, realIndex);
+        } else {
+          if (w.globals.axisCharts) {
+            var shouldNotHideYAxis = false;
+
+            if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].show && w.config.yaxis[realIndex].showAlways) {
+              shouldNotHideYAxis = true;
+
+              if (w.globals.ancillaryCollapsedSeriesIndices.indexOf(realIndex) < 0) {
+                w.globals.ancillaryCollapsedSeries.push({
+                  index: realIndex,
+                  data: w.config.series[realIndex].data.slice(),
+                  type: seriesEl.parentNode.className.baseVal.split('-')[1]
+                });
+                w.globals.ancillaryCollapsedSeriesIndices.push(realIndex);
+              }
+            }
+
+            if (!shouldNotHideYAxis) {
+              w.globals.collapsedSeries.push({
+                index: realIndex,
+                data: w.config.series[realIndex].data.slice(),
+                type: seriesEl.parentNode.className.baseVal.split('-')[1]
+              });
+              w.globals.collapsedSeriesIndices.push(realIndex);
+              var removeIndexOfRising = w.globals.risingSeries.indexOf(realIndex);
+              w.globals.risingSeries.splice(removeIndexOfRising, 1);
+            } // TODO: AVOID mutating the user's config object below
+
+
+            w.config.series[realIndex].data = [];
+          } else {
+            w.globals.collapsedSeries.push({
+              index: realIndex,
+              data: w.config.series[realIndex]
+            });
+            w.globals.collapsedSeriesIndices.push(realIndex);
+            w.config.series[realIndex] = 0;
+          }
+
+          var seriesChildren = seriesEl.childNodes;
+
+          for (var sc = 0; sc < seriesChildren.length; sc++) {
+            if (seriesChildren[sc].classList.contains('apexcharts-series-markers-wrap')) {
+              if (seriesChildren[sc].classList.contains('apexcharts-hide')) {
+                seriesChildren[sc].classList.remove('apexcharts-hide');
+              } else {
+                seriesChildren[sc].classList.add('apexcharts-hide');
+              }
+            }
+          }
+
+          w.globals.allSeriesCollapsed = w.globals.collapsedSeries.length === w.globals.series.length;
+
+          this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+        }
+      } else {
+        // for non-axis charts i.e pie / donuts
+        var _seriesEl = w.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(seriesCnt + 1, "'] path"));
+
+        var type = w.config.chart.type;
+
+        if (type === 'pie' || type === 'donut') {
+          var dataLabels = w.config.plotOptions.pie.donut.labels;
+          var graphics = new Graphics(this.ctx);
+          var pie = new Pie(this.ctx);
+          graphics.pathMouseDown(_seriesEl.members[0], null);
+          pie.printDataLabelsInner(_seriesEl.members[0].node, dataLabels);
+        }
+
+        _seriesEl.fire('click');
+      }
+    }
+  }, {
+    key: "riseCollapsedSeries",
+    value: function riseCollapsedSeries(series, seriesIndices, realIndex) {
+      var w = this.w;
+
+      if (series.length > 0) {
+        for (var c = 0; c < series.length; c++) {
+          if (series[c].index === realIndex) {
+            if (w.globals.axisCharts) {
+              w.config.series[realIndex].data = series[c].data.slice();
+              series.splice(c, 1);
+              seriesIndices.splice(c, 1);
+              w.globals.risingSeries.push(realIndex);
+            } else {
+              w.config.series[realIndex] = series[c].data;
+              series.splice(c, 1);
+              seriesIndices.splice(c, 1);
+              w.globals.risingSeries.push(realIndex);
+            }
+
+            this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+          }
+        }
+      }
+    }
+  }]);
+
+  return Legend;
+}();
+
+/**
+ * ApexCharts Responsive Class to override options for different screen sizes.
+ *
+ * @module Responsive
+ **/
+
+var Responsive =
+/*#__PURE__*/
+function () {
+  function Responsive(ctx) {
+    _classCallCheck(this, Responsive);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  } // the opts parameter if not null has to be set overriding everything
+  // as the opts is set by user externally
+
+
+  _createClass(Responsive, [{
+    key: "checkResponsiveConfig",
+    value: function checkResponsiveConfig(opts) {
+      var _this = this;
+
+      var w = this.w;
+      var cnf = w.config; // check if responsive config exists
+
+      if (cnf.responsive.length === 0) return;
+      var res = cnf.responsive.slice();
+      res.sort(function (a, b) {
+        return a.breakpoint > b.breakpoint ? 1 : b.breakpoint > a.breakpoint ? -1 : 0;
+      }).reverse();
+      var config = new Config({});
+
+      var iterateResponsiveOptions = function iterateResponsiveOptions() {
+        var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+        var largestBreakpoint = res[0].breakpoint;
+        var width = window.innerWidth > 0 ? window.innerWidth : screen.width;
+
+        if (width > largestBreakpoint) {
+          var options = CoreUtils.extendArrayProps(config, w.globals.initialConfig);
+          newOptions = Utils.extend(options, newOptions);
+          newOptions = Utils.extend(w.config, newOptions);
+
+          _this.overrideResponsiveOptions(newOptions);
+        } else {
+          for (var i = 0; i < res.length; i++) {
+            if (width < res[i].breakpoint) {
+              newOptions = CoreUtils.extendArrayProps(config, res[i].options);
+              newOptions = Utils.extend(w.config, newOptions);
+
+              _this.overrideResponsiveOptions(newOptions);
+            }
+          }
+        }
+      };
+
+      if (opts) {
+        var options = CoreUtils.extendArrayProps(config, opts);
+        options = Utils.extend(w.config, options);
+        options = Utils.extend(options, opts);
+        iterateResponsiveOptions(options);
+      } else {
+        iterateResponsiveOptions({});
+      }
+    }
+  }, {
+    key: "overrideResponsiveOptions",
+    value: function overrideResponsiveOptions(newOptions) {
+      var newConfig = new Config(newOptions).init();
+      this.w.config = newConfig;
+    }
+  }]);
+
+  return Responsive;
+}();
+
+/**
+ * ApexCharts Theme Class for setting the colors and palettes.
+ *
+ * @module Theme
+ **/
+
+var Theme =
+/*#__PURE__*/
+function () {
+  function Theme(ctx) {
+    _classCallCheck(this, Theme);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.colors = [];
+  }
+
+  _createClass(Theme, [{
+    key: "init",
+    value: function init() {
+      this.setDefaultColors();
+    }
+  }, {
+    key: "setDefaultColors",
+    value: function setDefaultColors() {
+      var w = this.w;
+      var utils = new Utils();
+      w.globals.dom.elWrap.classList.add(w.config.theme.mode);
+
+      if (w.config.colors === undefined) {
+        w.globals.colors = this.predefined();
+      } else {
+        w.globals.colors = w.config.colors;
+      }
+
+      if (w.config.theme.monochrome.enabled) {
+        var monoArr = [];
+        var glsCnt = w.globals.series.length;
+
+        if (w.config.plotOptions.bar.distributed && w.config.chart.type === 'bar') {
+          glsCnt = w.globals.series[0].length * w.globals.series.length;
+        }
+
+        var mainColor = w.config.theme.monochrome.color;
+        var part = 1 / (glsCnt / w.config.theme.monochrome.shadeIntensity);
+        var shade = w.config.theme.monochrome.shadeTo;
+        var percent = 0;
+
+        for (var gsl = 0; gsl < glsCnt; gsl++) {
+          var newColor = void 0;
+
+          if (shade === 'dark') {
+            newColor = utils.shadeColor(percent * -1, mainColor);
+            percent = percent + part;
+          } else {
+            newColor = utils.shadeColor(percent, mainColor);
+            percent = percent + part;
+          }
+
+          monoArr.push(newColor);
+        }
+
+        w.globals.colors = monoArr.slice();
+      }
+
+      var defaultColors = w.globals.colors.slice(); // if user specfied less colors than no. of series, push the same colors again
+
+      this.pushExtraColors(w.globals.colors); // The Border colors
+
+      if (w.config.stroke.colors === undefined) {
+        w.globals.stroke.colors = defaultColors;
+      } else {
+        w.globals.stroke.colors = w.config.stroke.colors;
+      }
+
+      this.pushExtraColors(w.globals.stroke.colors); // The FILL colors
+
+      if (w.config.fill.colors === undefined) {
+        w.globals.fill.colors = defaultColors;
+      } else {
+        w.globals.fill.colors = w.config.fill.colors;
+      }
+
+      this.pushExtraColors(w.globals.fill.colors);
+
+      if (w.config.dataLabels.style.colors === undefined) {
+        w.globals.dataLabels.style.colors = defaultColors;
+      } else {
+        w.globals.dataLabels.style.colors = w.config.dataLabels.style.colors;
+      }
+
+      this.pushExtraColors(w.globals.dataLabels.style.colors, 50);
+
+      if (w.config.plotOptions.radar.polygons.fill.colors === undefined) {
+        w.globals.radarPolygons.fill.colors = [w.config.theme.mode === 'dark' ? '#202D48' : '#fff'];
+      } else {
+        w.globals.radarPolygons.fill.colors = w.config.plotOptions.radar.polygons.fill.colors;
+      }
+
+      this.pushExtraColors(w.globals.radarPolygons.fill.colors, 20); // The point colors
+
+      if (w.config.markers.colors === undefined) {
+        w.globals.markers.colors = defaultColors;
+      } else {
+        w.globals.markers.colors = w.config.markers.colors;
+      }
+
+      this.pushExtraColors(w.globals.markers.colors);
+    } // When the number of colors provided is less than the number of series, this method
+    // will push same colors to the list
+    // params:
+    // distributed is only valid for distributed column/bar charts
+
+  }, {
+    key: "pushExtraColors",
+    value: function pushExtraColors(colorSeries, length) {
+      var distributed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+      var w = this.w;
+      var len = length || w.globals.series.length;
+
+      if (distributed === null) {
+        distributed = w.config.chart.type === 'bar' && w.config.plotOptions.bar.distributed || w.config.chart.type === 'heatmap' && w.config.plotOptions.heatmap.colorScale.inverse;
+      }
+
+      if (distributed) {
+        len = w.globals.series[0].length * w.globals.series.length;
+      }
+
+      if (colorSeries.length < len) {
+        var diff = len - colorSeries.length;
+
+        for (var i = 0; i < diff; i++) {
+          colorSeries.push(colorSeries[i]);
+        }
+      }
+    }
+  }, {
+    key: "updateThemeOptions",
+    value: function updateThemeOptions(options) {
+      options.chart = options.chart || {};
+      options.tooltip = options.tooltip || {};
+      var mode = options.theme.mode || 'light';
+      var palette = options.theme.palette ? options.theme.palette : mode === 'dark' ? 'palette4' : 'palette1';
+      var foreColor = options.chart.foreColor ? options.chart.foreColor : mode === 'dark' ? '#f6f7f8' : '#373d3f';
+      options.tooltip.theme = mode;
+      options.chart.foreColor = foreColor;
+      options.theme.palette = palette;
+      return options;
+    }
+  }, {
+    key: "predefined",
+    value: function predefined() {
+      var palette = this.w.config.theme.palette; // D6E3F8, FCEFEF, DCE0D9, A5978B, EDDDD4, D6E3F8, FEF5EF
+
+      switch (palette) {
+        case 'palette1':
+          this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'];
+          break;
+
+        case 'palette2':
+          this.colors = ['#3f51b5', '#03a9f4', '#4caf50', '#f9ce1d', '#FF9800'];
+          break;
+
+        case 'palette3':
+          this.colors = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B'];
+          break;
+
+        case 'palette4':
+          this.colors = ['#4ecdc4', '#c7f464', '#81D4FA', '#fd6a6a', '#546E7A'];
+          break;
+
+        case 'palette5':
+          this.colors = ['#2b908f', '#f9a3a4', '#90ee7e', '#fa4443', '#69d2e7'];
+          break;
+
+        case 'palette6':
+          this.colors = ['#449DD1', '#F86624', '#EA3546', '#662E9B', '#C5D86D'];
+          break;
+
+        case 'palette7':
+          this.colors = ['#D7263D', '#1B998B', '#2E294E', '#F46036', '#E2C044'];
+          break;
+
+        case 'palette8':
+          this.colors = ['#662E9B', '#F86624', '#F9C80E', '#EA3546', '#43BCCD'];
+          break;
+
+        case 'palette9':
+          this.colors = ['#5C4742', '#A5978B', '#8D5B4C', '#5A2A27', '#C4BBAF'];
+          break;
+
+        case 'palette10':
+          this.colors = ['#A300D6', '#7D02EB', '#5653FE', '#2983FF', '#00B1F2'];
+          break;
+
+        default:
+          this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'];
+          break;
+      }
+
+      return this.colors;
+    }
+  }]);
+
+  return Theme;
+}();
+
+var Utils$1 =
+/*#__PURE__*/
+function () {
+  function Utils(tooltipContext) {
+    _classCallCheck(this, Utils);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+    this.ctx = tooltipContext.ctx;
+  }
+  /**
+   ** When hovering over series, you need to capture which series is being hovered on.
+   ** This function will return both capturedseries index as well as inner index of that series
+   * @memberof Utils
+   * @param {object}
+   * - hoverArea = the rect on which user hovers
+   * - elGrid = dimensions of the hover rect (it can be different than hoverarea)
+   */
+
+
+  _createClass(Utils, [{
+    key: "getNearestValues",
+    value: function getNearestValues(_ref) {
+      var hoverArea = _ref.hoverArea,
+          elGrid = _ref.elGrid,
+          clientX = _ref.clientX,
+          clientY = _ref.clientY,
+          hasBars = _ref.hasBars;
+      var w = this.w;
+      var hoverWidth = w.globals.gridWidth;
+      var xDivisor = hoverWidth / (w.globals.dataPoints - 1);
+      var seriesBound = elGrid.getBoundingClientRect();
+
+      if (hasBars && w.globals.comboCharts || hasBars) {
+        xDivisor = hoverWidth / w.globals.dataPoints;
+      }
+
+      var hoverX = clientX - seriesBound.left;
+      var hoverY = clientY - seriesBound.top;
+      var inRect = hoverX < 0 || hoverY < 0 || hoverX > w.globals.gridWidth || hoverY > w.globals.gridHeight;
+
+      if (inRect) {
+        hoverArea.classList.remove('hovering-zoom');
+        hoverArea.classList.remove('hovering-pan');
+      } else {
+        if (w.globals.zoomEnabled) {
+          hoverArea.classList.remove('hovering-pan');
+          hoverArea.classList.add('hovering-zoom');
+        } else if (w.globals.panEnabled) {
+          hoverArea.classList.remove('hovering-zoom');
+          hoverArea.classList.add('hovering-pan');
+        }
+      }
+
+      var j = Math.round(hoverX / xDivisor);
+
+      if (hasBars) {
+        j = Math.ceil(hoverX / xDivisor);
+        j = j - 1;
+      }
+
+      var capturedSeries = null;
+      var closest = null;
+      var seriesXValArr = [];
+      var seriesYValArr = [];
+
+      for (var s = 0; s < w.globals.seriesXvalues.length; s++) {
+        seriesXValArr.push([w.globals.seriesXvalues[s][0] - 0.000001].concat(w.globals.seriesXvalues[s]));
+      }
+
+      seriesXValArr = seriesXValArr.map(function (seriesXVal) {
+        return seriesXVal.filter(function (s) {
+          return s;
+        });
+      });
+      seriesYValArr = w.globals.seriesYvalues.map(function (seriesYVal) {
+        return seriesYVal.filter(function (s) {
+          return s;
+        });
+      }); // if X axis type is not category and tooltip is not shared, then we need to find the cursor position and get the nearest value
+
+      if (w.globals.isXNumeric) {
+        closest = this.closestInMultiArray(hoverX, hoverY, seriesXValArr, seriesYValArr);
+        capturedSeries = closest.index;
+        j = closest.j;
+
+        if (capturedSeries !== null) {
+          // initial push, it should be a little smaller than the 1st val
+          seriesXValArr = w.globals.seriesXvalues[capturedSeries];
+          closest = this.closestInArray(hoverX, seriesXValArr);
+          j = closest.index;
+        }
+      }
+
+      if (!j || j < 1) j = 0;
+      return {
+        capturedSeries: capturedSeries,
+        j: j,
+        hoverX: hoverX,
+        hoverY: hoverY
+      };
+    }
+  }, {
+    key: "closestInMultiArray",
+    value: function closestInMultiArray(hoverX, hoverY, Xarrays, Yarrays) {
+      var w = this.w;
+      var activeIndex = 0;
+      var currIndex = null;
+      var j = -1;
+
+      if (w.globals.series.length > 1) {
+        activeIndex = this.getFirstActiveXArray(Xarrays);
+      } else {
+        currIndex = 0;
+      }
+
+      var currY = Yarrays[activeIndex][0];
+      var currX = Xarrays[activeIndex][0];
+      var diffX = Math.abs(hoverX - currX);
+      var diffY = Math.abs(hoverY - currY);
+      var diff = diffY + diffX;
+      Yarrays.map(function (arrY, arrIndex) {
+        arrY.map(function (y, innerKey) {
+          var newdiffY = Math.abs(hoverY - Yarrays[arrIndex][innerKey]);
+          var newdiffX = Math.abs(hoverX - Xarrays[arrIndex][innerKey]);
+          var newdiff = newdiffX + newdiffY;
+
+          if (newdiff < diff) {
+            diff = newdiff;
+            diffX = newdiffX;
+            diffY = newdiffY;
+            currIndex = arrIndex;
+            j = innerKey;
+          }
+        });
+      });
+      return {
+        index: currIndex,
+        j: j
+      };
+    }
+  }, {
+    key: "getFirstActiveXArray",
+    value: function getFirstActiveXArray(Xarrays) {
+      var activeIndex = 0;
+      var coreUtils = new CoreUtils(this.ctx);
+      var firstActiveSeriesIndex = Xarrays.map(function (xarr, index) {
+        if (xarr.length > 0) {
+          return index;
+        } else {
+          return -1;
+        }
+      });
+
+      for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+        var total = coreUtils.getSeriesTotalByIndex(a);
+
+        if (firstActiveSeriesIndex[a] !== -1 && total !== 0 && !coreUtils.seriesHaveSameValues(a)) {
+          activeIndex = firstActiveSeriesIndex[a];
+          break;
+        }
+      }
+
+      return activeIndex;
+    }
+  }, {
+    key: "closestInArray",
+    value: function closestInArray(val, arr) {
+      var curr = arr[0];
+      var currIndex = null;
+      var diff = Math.abs(val - curr);
+
+      for (var i = 0; i < arr.length; i++) {
+        var newdiff = Math.abs(val - arr[i]);
+
+        if (newdiff < diff) {
+          diff = newdiff;
+          curr = arr[i];
+          currIndex = i;
+        }
+      }
+
+      return {
+        index: currIndex
+      };
+    }
+    /**
+     * When there are multiple series, it is possible to have different x values for each series.
+     * But it may be possible in those multiple series, that there is same x value for 2 or more
+     * series.
+     * @memberof Utils
+     * @param {int}
+     * - j = is the inner index of series -> (series[i][j])
+     * @return {bool}
+     */
+
+  }, {
+    key: "isXoverlap",
+    value: function isXoverlap(j) {
+      var w = this.w;
+      var xSameForAllSeriesJArr = [];
+      var seriesX = w.globals.seriesX.filter(function (s) {
+        return typeof s[0] !== 'undefined';
+      });
+
+      if (seriesX.length > 0) {
+        for (var i = 0; i < seriesX.length - 1; i++) {
+          if (typeof seriesX[i][j] !== 'undefined' && typeof seriesX[i + 1][j] !== 'undefined') {
+            if (seriesX[i][j] !== seriesX[i + 1][j]) {
+              xSameForAllSeriesJArr.push('unEqual');
+            }
+          }
+        }
+      }
+
+      if (xSameForAllSeriesJArr.length === 0) {
+        return true;
+      }
+
+      return false;
+    }
+  }, {
+    key: "isinitialSeriesSameLen",
+    value: function isinitialSeriesSameLen() {
+      var sameLen = true;
+      var initialSeries = this.w.globals.initialSeries;
+
+      for (var i = 0; i < initialSeries.length - 1; i++) {
+        if (initialSeries[i].data.length !== initialSeries[i + 1].data.length) {
+          sameLen = false;
+          break;
+        }
+      }
+
+      return sameLen;
+    }
+  }, {
+    key: "getBarsHeight",
+    value: function getBarsHeight(allbars) {
+      var bars = _toConsumableArray(allbars);
+
+      var totalHeight = bars.reduce(function (acc, bar) {
+        return acc + bar.getBBox().height;
+      }, 0);
+      return totalHeight;
+    }
+  }, {
+    key: "toggleAllTooltipSeriesGroups",
+    value: function toggleAllTooltipSeriesGroups(state) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.allTooltipSeriesGroups.length === 0) {
+        ttCtx.allTooltipSeriesGroups = w.globals.dom.baseEl.querySelectorAll('.apexcharts-tooltip-series-group');
+      }
+
+      var allTooltipSeriesGroups = ttCtx.allTooltipSeriesGroups;
+
+      for (var i = 0; i < allTooltipSeriesGroups.length; i++) {
+        if (state === 'enable') {
+          allTooltipSeriesGroups[i].classList.add('active');
+          allTooltipSeriesGroups[i].style.display = w.config.tooltip.items.display;
+        } else {
+          allTooltipSeriesGroups[i].classList.remove('active');
+          allTooltipSeriesGroups[i].style.display = 'none';
+        }
+      }
+    }
+  }]);
+
+  return Utils;
+}();
+
+/**
+ * ApexCharts Tooltip.Labels Class to draw texts on the tooltip.
+ *
+ * @module Tooltip.Labels
+ **/
+
+var Labels =
+/*#__PURE__*/
+function () {
+  function Labels(tooltipContext) {
+    _classCallCheck(this, Labels);
+
+    this.w = tooltipContext.w;
+    this.ctx = tooltipContext.ctx;
+    this.ttCtx = tooltipContext;
+    this.tooltipUtil = new Utils$1(tooltipContext);
+  }
+
+  _createClass(Labels, [{
+    key: "drawSeriesTexts",
+    value: function drawSeriesTexts(_ref) {
+      var _ref$shared = _ref.shared,
+          shared = _ref$shared === void 0 ? true : _ref$shared,
+          ttItems = _ref.ttItems,
+          _ref$i = _ref.i,
+          i = _ref$i === void 0 ? 0 : _ref$i,
+          _ref$j = _ref.j,
+          j = _ref$j === void 0 ? null : _ref$j;
+      var w = this.w;
+
+      if (w.config.tooltip.custom !== undefined) {
+        this.handleCustomTooltip({
+          i: i,
+          j: j
+        });
+      } else {
+        this.toggleActiveInactiveSeries(shared);
+      }
+
+      var values = this.getValuesToPrint({
+        i: i,
+        j: j
+      });
+      this.printLabels({
+        i: i,
+        j: j,
+        values: values,
+        ttItems: ttItems,
+        shared: shared
+      }); // Re-calculate tooltip dimensions now that we have drawn the text
+
+      var tooltipEl = this.ttCtx.getElTooltip();
+      this.ttCtx.tooltipRect.ttWidth = tooltipEl.getBoundingClientRect().width;
+      this.ttCtx.tooltipRect.ttHeight = tooltipEl.getBoundingClientRect().height;
+    }
+  }, {
+    key: "printLabels",
+    value: function printLabels(_ref2) {
+      var i = _ref2.i,
+          j = _ref2.j,
+          values = _ref2.values,
+          ttItems = _ref2.ttItems,
+          shared = _ref2.shared;
+      var w = this.w;
+      var val;
+      var xVal = values.xVal,
+          zVal = values.zVal,
+          xAxisTTVal = values.xAxisTTVal;
+      var seriesName = '';
+      var pColor = w.globals.colors[i];
+
+      if (j !== null && w.config.plotOptions.bar.distributed) {
+        pColor = w.globals.colors[j];
+      }
+
+      for (var t = 0, inverset = w.globals.series.length - 1; t < w.globals.series.length; t++, inverset--) {
+        var f = this.getFormatters(i);
+        seriesName = this.getSeriesName({
+          fn: f.yLbTitleFormatter,
+          index: i,
+          seriesIndex: i,
+          j: j
+        });
+
+        if (shared) {
+          var tIndex = w.config.tooltip.inverseOrder ? inverset : t;
+          f = this.getFormatters(tIndex);
+          seriesName = this.getSeriesName({
+            fn: f.yLbTitleFormatter,
+            index: tIndex,
+            seriesIndex: i,
+            j: j
+          });
+          pColor = w.globals.colors[tIndex]; // for plot charts, not for pie/donuts
+
+          val = f.yLbFormatter(w.globals.series[tIndex][j], {
+            series: w.globals.series,
+            seriesIndex: tIndex,
+            dataPointIndex: j,
+            w: w
+          }); // discard 0 values in BARS
+
+          if (this.ttCtx.hasBars() && w.config.chart.stacked && w.globals.series[tIndex][j] === 0 || typeof w.globals.series[tIndex][j] === 'undefined') {
+            val = undefined;
+          }
+        } else {
+          val = f.yLbFormatter(w.globals.series[i][j], {
+            series: w.globals.series,
+            seriesIndex: i,
+            dataPointIndex: j,
+            w: w
+          });
+        } // for pie / donuts
+
+
+        if (j === null) {
+          val = f.yLbFormatter(w.globals.series[i], w);
+        }
+
+        this.DOMHandling({
+          t: t,
+          ttItems: ttItems,
+          values: {
+            val: val,
+            xVal: xVal,
+            xAxisTTVal: xAxisTTVal,
+            zVal: zVal
+          },
+          seriesName: seriesName,
+          shared: shared,
+          pColor: pColor
+        });
+      }
+    }
+  }, {
+    key: "getFormatters",
+    value: function getFormatters(i) {
+      var w = this.w;
+      var yLbFormatter = w.globals.yLabelFormatters[i];
+      var yLbTitleFormatter;
+
+      if (w.globals.ttVal !== undefined) {
+        if (Array.isArray(w.globals.ttVal)) {
+          yLbFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].formatter;
+          yLbTitleFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].title && w.globals.ttVal[i].title.formatter;
+        } else {
+          yLbFormatter = w.globals.ttVal.formatter;
+
+          if (typeof w.globals.ttVal.title.formatter === 'function') {
+            yLbTitleFormatter = w.globals.ttVal.title.formatter;
+          }
+        }
+      } else {
+        yLbTitleFormatter = w.config.tooltip.y.title.formatter;
+      }
+
+      if (typeof yLbFormatter !== 'function') {
+        if (w.globals.yLabelFormatters[0]) {
+          yLbFormatter = w.globals.yLabelFormatters[0];
+        } else {
+          yLbFormatter = function yLbFormatter(label) {
+            return label;
+          };
+        }
+      }
+
+      if (typeof yLbTitleFormatter !== 'function') {
+        yLbTitleFormatter = function yLbTitleFormatter(label) {
+          return label;
+        };
+      }
+
+      return {
+        yLbFormatter: yLbFormatter,
+        yLbTitleFormatter: yLbTitleFormatter
+      };
+    }
+  }, {
+    key: "getSeriesName",
+    value: function getSeriesName(_ref3) {
+      var fn = _ref3.fn,
+          index = _ref3.index,
+          seriesIndex = _ref3.seriesIndex,
+          j = _ref3.j;
+      var w = this.w;
+      return fn(String(w.globals.seriesNames[index]), {
+        series: w.globals.series,
+        seriesIndex: seriesIndex,
+        dataPointIndex: j,
+        w: w
+      });
+    }
+  }, {
+    key: "DOMHandling",
+    value: function DOMHandling(_ref4) {
+      var t = _ref4.t,
+          ttItems = _ref4.ttItems,
+          values = _ref4.values,
+          seriesName = _ref4.seriesName,
+          shared = _ref4.shared,
+          pColor = _ref4.pColor;
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var val = values.val,
+          xVal = values.xVal,
+          xAxisTTVal = values.xAxisTTVal,
+          zVal = values.zVal;
+      var ttItemsChildren = null;
+      ttItemsChildren = ttItems[t].children;
+
+      if (w.config.tooltip.fillSeriesColor) {
+        //  elTooltip.style.backgroundColor = pColor
+        ttItems[t].style.backgroundColor = pColor;
+        ttItemsChildren[0].style.display = 'none';
+      }
+
+      if (ttCtx.showTooltipTitle) {
+        if (ttCtx.tooltipTitle === null) {
+          // get it once if null, and store it in class property
+          ttCtx.tooltipTitle = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-title');
+        }
+
+        ttCtx.tooltipTitle.innerHTML = xVal;
+      } // if xaxis tooltip is constructed, we need to replace the innerHTML
+
+
+      if (ttCtx.blxaxisTooltip) {
+        ttCtx.xaxisTooltipText.innerHTML = xAxisTTVal !== '' ? xAxisTTVal : xVal;
+      }
+
+      var ttYLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-label');
+
+      if (ttYLabel) {
+        ttYLabel.innerHTML = seriesName ? seriesName + ': ' : '';
+      }
+
+      var ttYVal = ttItems[t].querySelector('.apexcharts-tooltip-text-value');
+
+      if (ttYVal) {
+        ttYVal.innerHTML = val;
+      }
+
+      if (ttItemsChildren[0] && ttItemsChildren[0].classList.contains('apexcharts-tooltip-marker')) {
+        ttItemsChildren[0].style.backgroundColor = pColor;
+      }
+
+      if (!w.config.tooltip.marker.show) {
+        ttItemsChildren[0].style.display = 'none';
+      }
+
+      if (zVal !== null) {
+        var ttZLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-z-label');
+        ttZLabel.innerHTML = w.config.tooltip.z.title;
+        var ttZVal = ttItems[t].querySelector('.apexcharts-tooltip-text-z-value');
+        ttZVal.innerHTML = zVal;
+      }
+
+      if (shared && ttItemsChildren[0]) {
+        // hide when no Val or series collapsed
+        if (typeof val === 'undefined' || val === null || w.globals.collapsedSeriesIndices.indexOf(t) > -1) {
+          ttItemsChildren[0].parentNode.style.display = 'none';
+        } else {
+          ttItemsChildren[0].parentNode.style.display = w.config.tooltip.items.display;
+        }
+      }
+    }
+  }, {
+    key: "toggleActiveInactiveSeries",
+    value: function toggleActiveInactiveSeries(shared) {
+      var w = this.w;
+
+      if (shared) {
+        // make all tooltips active
+        this.tooltipUtil.toggleAllTooltipSeriesGroups('enable');
+      } else {
+        // disable all tooltip text groups
+        this.tooltipUtil.toggleAllTooltipSeriesGroups('disable'); // enable the first tooltip text group
+
+        var firstTooltipSeriesGroup = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-series-group');
+
+        if (firstTooltipSeriesGroup) {
+          firstTooltipSeriesGroup.classList.add('active');
+          firstTooltipSeriesGroup.style.display = w.config.tooltip.items.display;
+        }
+      }
+    }
+  }, {
+    key: "getValuesToPrint",
+    value: function getValuesToPrint(_ref5) {
+      var i = _ref5.i,
+          j = _ref5.j;
+      var w = this.w;
+      var filteredSeriesX = this.ctx.series.filteredSeriesX();
+      var xVal = '';
+      var xAxisTTVal = '';
+      var zVal = null;
+      var val = null;
+      var customFormatterOpts = {
+        series: w.globals.series,
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      };
+      var zFormatter = w.globals.ttZFormatter;
+
+      if (j === null) {
+        val = w.globals.series[i];
+      } else {
+        if (w.globals.isXNumeric) {
+          xVal = filteredSeriesX[i][j];
+
+          if (filteredSeriesX[i].length === 0) {
+            // a series (possibly the first one) might be collapsed, so get the next active index
+            var firstActiveSeriesIndex = this.tooltipUtil.getFirstActiveXArray(filteredSeriesX);
+            xVal = filteredSeriesX[firstActiveSeriesIndex][j];
+          }
+        } else {
+          xVal = typeof w.globals.labels[j] !== 'undefined' ? w.globals.labels[j] : '';
+        }
+      }
+
+      var bufferXVal = xVal;
+
+      if (w.globals.isXNumeric && w.config.xaxis.type === 'datetime') {
+        var xFormat = new Formatters(this.ctx);
+        xVal = xFormat.xLabelFormat(w.globals.ttKeyFormatter, bufferXVal);
+      } else {
+        xVal = w.globals.xLabelFormatter(bufferXVal, customFormatterOpts);
+      } // override default x-axis formatter with tooltip formatter
+
+
+      if (w.config.tooltip.x.formatter !== undefined) {
+        xVal = w.globals.ttKeyFormatter(bufferXVal, customFormatterOpts);
+      }
+
+      if (w.globals.seriesZ.length > 0 && w.globals.seriesZ[0].length > 0) {
+        zVal = zFormatter(w.globals.seriesZ[i][j], w);
+      }
+
+      if (typeof w.config.xaxis.tooltip.formatter === 'function') {
+        xAxisTTVal = w.globals.xaxisTooltipFormatter(bufferXVal, customFormatterOpts);
+      } else {
+        xAxisTTVal = xVal;
+      }
+
+      return {
+        val: val,
+        xVal: xVal,
+        xAxisTTVal: xAxisTTVal,
+        zVal: zVal
+      };
+    }
+  }, {
+    key: "handleCustomTooltip",
+    value: function handleCustomTooltip(_ref6) {
+      var i = _ref6.i,
+          j = _ref6.j;
+      var w = this.w;
+      var tooltipEl = this.ttCtx.getElTooltip(); // override everything with a custom html tooltip and replace it
+
+      tooltipEl.innerHTML = w.config.tooltip.custom({
+        ctx: this.ctx,
+        series: w.globals.series,
+        seriesIndex: i,
+        dataPointIndex: j,
+        w: w
+      });
+    }
+  }]);
+
+  return Labels;
+}();
+
+/**
+ * ApexCharts Tooltip.Position Class to move the tooltip based on x and y position.
+ *
+ * @module Tooltip.Position
+ **/
+
+var Position =
+/*#__PURE__*/
+function () {
+  function Position(tooltipContext) {
+    _classCallCheck(this, Position);
+
+    this.ttCtx = tooltipContext;
+    this.ctx = tooltipContext.ctx;
+    this.w = tooltipContext.w;
+  }
+  /**
+   * This will move the crosshair (the vertical/horz line that moves along with mouse)
+   * Along with this, this function also calls the xaxisMove function
+   * @memberof Position
+   * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair
+   */
+
+
+  _createClass(Position, [{
+    key: "moveXCrosshairs",
+    value: function moveXCrosshairs(cx) {
+      var j = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+      var ttCtx = this.ttCtx;
+      var w = this.w;
+      var xcrosshairs = ttCtx.getElXCrosshairs();
+      var x = cx - ttCtx.xcrosshairsWidth / 2;
+      var tickAmount = w.globals.labels.slice().length;
+
+      if (j !== null) {
+        x = w.globals.gridWidth / tickAmount * j;
+      }
+
+      if (w.config.xaxis.crosshairs.width === 'tickWidth' || w.config.xaxis.crosshairs.width === 'barWidth') {
+        if (x + ttCtx.xcrosshairsWidth > w.globals.gridWidth) {
+          x = w.globals.gridWidth - ttCtx.xcrosshairsWidth;
+        }
+      } else {
+        if (j !== null) {
+          x = x + w.globals.gridWidth / tickAmount / 2;
+        }
+      }
+
+      if (x < 0) {
+        x = 0;
+      }
+
+      if (x > w.globals.gridWidth) {
+        x = w.globals.gridWidth;
+      }
+
+      if (xcrosshairs !== null) {
+        xcrosshairs.setAttribute('x', x);
+        xcrosshairs.setAttribute('x1', x);
+        xcrosshairs.setAttribute('x2', x);
+        xcrosshairs.setAttribute('y2', w.globals.gridHeight);
+        xcrosshairs.classList.add('active');
+      }
+
+      if (ttCtx.blxaxisTooltip) {
+        var tx = x;
+
+        if (w.config.xaxis.crosshairs.width === 'tickWidth' || w.config.xaxis.crosshairs.width === 'barWidth') {
+          tx = x + ttCtx.xcrosshairsWidth / 2;
+        }
+
+        this.moveXAxisTooltip(tx);
+      }
+    }
+    /**
+     * This will move the crosshair (the vertical/horz line that moves along with mouse)
+     * Along with this, this function also calls the xaxisMove function
+     * @memberof Position
+     * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair
+     */
+
+  }, {
+    key: "moveYCrosshairs",
+    value: function moveYCrosshairs(cy) {
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.ycrosshairs !== null) {
+        Graphics.setAttrs(ttCtx.ycrosshairs, {
+          y1: cy,
+          y2: cy
+        });
+        Graphics.setAttrs(ttCtx.ycrosshairsHidden, {
+          y1: cy,
+          y2: cy
+        });
+      }
+    }
+    /**
+     ** AxisTooltip is the small rectangle which appears on x axis with x value, when user moves
+     * @memberof Position
+     * @param {int} - cx = point's x position, wherever point's x is, you need to move
+     */
+
+  }, {
+    key: "moveXAxisTooltip",
+    value: function moveXAxisTooltip(cx) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.xaxisTooltip !== null) {
+        ttCtx.xaxisTooltip.classList.add('active');
+        var cy = ttCtx.xaxisOffY + w.config.xaxis.tooltip.offsetY + w.globals.translateY + 1 + w.config.xaxis.offsetY;
+        var xaxisTTText = ttCtx.xaxisTooltip.getBoundingClientRect();
+        var xaxisTTTextWidth = xaxisTTText.width;
+        cx = cx - xaxisTTTextWidth / 2;
+
+        if (!isNaN(cx)) {
+          cx = cx + w.globals.translateX;
+          var textRect = 0;
+          var graphics = new Graphics(this.ctx);
+          textRect = graphics.getTextRects(ttCtx.xaxisTooltipText.innerHTML);
+          ttCtx.xaxisTooltipText.style.minWidth = textRect.width + 'px';
+          ttCtx.xaxisTooltip.style.left = cx + 'px';
+          ttCtx.xaxisTooltip.style.top = cy + 'px';
+        }
+      }
+    }
+  }, {
+    key: "moveYAxisTooltip",
+    value: function moveYAxisTooltip(index) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (ttCtx.yaxisTTEls === null) {
+        ttCtx.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip');
+      }
+
+      var ycrosshairsHiddenRectY1 = parseInt(ttCtx.ycrosshairsHidden.getAttribute('y1'));
+      var cy = w.globals.translateY + ycrosshairsHiddenRectY1;
+      var yAxisTTRect = ttCtx.yaxisTTEls[index].getBoundingClientRect();
+      var yAxisTTHeight = yAxisTTRect.height;
+      var cx = w.globals.translateYAxisX[index] - 2;
+
+      if (w.config.yaxis[index].opposite) {
+        cx = cx - 26;
+      }
+
+      cy = cy - yAxisTTHeight / 2;
+
+      if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1) {
+        ttCtx.yaxisTTEls[index].classList.add('active');
+        ttCtx.yaxisTTEls[index].style.top = cy + 'px';
+        ttCtx.yaxisTTEls[index].style.left = cx + w.config.yaxis[index].tooltip.offsetX + 'px';
+      } else {
+        ttCtx.yaxisTTEls[index].classList.remove('active');
+      }
+    }
+    /**
+     ** moves the whole tooltip by changing x, y attrs
+     * @memberof Position
+     * @param {int} - cx = point's x position, wherever point's x is, you need to move tooltip
+     * @param {int} - cy = point's y position, wherever point's y is, you need to move tooltip
+     * @param {int} - r = point's radius
+     */
+
+  }, {
+    key: "moveTooltip",
+    value: function moveTooltip(cx, cy) {
+      var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var tooltipEl = ttCtx.getElTooltip();
+      var tooltipRect = ttCtx.tooltipRect;
+      var pointR = r !== null ? parseInt(r) : 1;
+      var x = parseInt(cx) + pointR + 5;
+      var y = parseInt(cy) + pointR / 2; // - tooltipRect.ttHeight / 2
+
+      if (x > w.globals.gridWidth / 2) {
+        x = x - tooltipRect.ttWidth - pointR - 15;
+      }
+
+      if (x > w.globals.gridWidth - tooltipRect.ttWidth - 10) {
+        x = w.globals.gridWidth - tooltipRect.ttWidth;
+      }
+
+      if (x < -20) {
+        x = -20;
+      }
+
+      if (w.config.tooltip.followCursor) {
+        var elGrid = ttCtx.getElGrid();
+        var seriesBound = elGrid.getBoundingClientRect();
+        y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top - tooltipRect.ttHeight / 2;
+      }
+
+      var newPositions = this.positionChecks(tooltipRect, x, y);
+      x = newPositions.x;
+      y = newPositions.y;
+
+      if (!isNaN(x)) {
+        x = x + w.globals.translateX;
+        tooltipEl.style.left = x + 'px';
+        tooltipEl.style.top = y + 'px';
+      }
+    }
+  }, {
+    key: "positionChecks",
+    value: function positionChecks(tooltipRect, x, y) {
+      var w = this.w;
+
+      if (tooltipRect.ttHeight + y > w.globals.gridHeight) {
+        y = w.globals.gridHeight - tooltipRect.ttHeight + w.globals.translateY;
+      }
+
+      if (y < 0) {
+        y = 0;
+      }
+
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "moveMarkers",
+    value: function moveMarkers(i, j) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      if (w.globals.markers.size[i] > 0) {
+        var allPoints = w.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(i, "'] .apexcharts-marker"));
+
+        for (var p = 0; p < allPoints.length; p++) {
+          if (parseInt(allPoints[p].getAttribute('rel')) === j) {
+            ttCtx.marker.resetPointsSize();
+            ttCtx.marker.enlargeCurrentPoint(j, allPoints[p]);
+          }
+        }
+      } else {
+        ttCtx.marker.resetPointsSize();
+        this.moveDynamicPointOnHover(j, i);
+      }
+    } // This function is used when you need to show markers/points only on hover -
+    // DIFFERENT X VALUES in multiple series
+
+  }, {
+    key: "moveDynamicPointOnHover",
+    value: function moveDynamicPointOnHover(j, capturedSeries) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var cx = 0;
+      var cy = 0;
+      var pointsArr = w.globals.pointsArray;
+      var hoverSize = w.config.markers.hover.size;
+
+      if (hoverSize === undefined) {
+        hoverSize = w.globals.markers.size[capturedSeries] + w.config.markers.hover.sizeOffset;
+      }
+
+      cx = pointsArr[capturedSeries][j][0];
+      cy = pointsArr[capturedSeries][j][1] ? pointsArr[capturedSeries][j][1] : 0;
+      var point = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(capturedSeries, "'] .apexcharts-series-markers circle"));
+
+      if (point) {
+        point.setAttribute('r', hoverSize);
+        point.setAttribute('cx', cx);
+        point.setAttribute('cy', cy);
+      } // point.style.opacity = w.config.markers.hover.opacity
+
+
+      this.moveXCrosshairs(cx);
+
+      if (!ttCtx.fixedTooltip) {
+        this.moveTooltip(cx, cy, hoverSize);
+      }
+    } // This function is used when you need to show markers/points only on hover -
+    // SAME X VALUES in multiple series
+
+  }, {
+    key: "moveDynamicPointsOnHover",
+    value: function moveDynamicPointsOnHover(j) {
+      var ttCtx = this.ttCtx;
+      var w = ttCtx.w;
+      var cx = 0;
+      var cy = 0;
+      var activeSeries = 0;
+      var pointsArr = w.globals.pointsArray;
+      var series = new Series(this.ctx);
+      activeSeries = series.getActiveSeriesIndex();
+      var hoverSize = w.config.markers.hover.size;
+
+      if (hoverSize === undefined) {
+        hoverSize = w.globals.markers.size[activeSeries] + w.config.markers.hover.sizeOffset;
+      }
+
+      if (pointsArr[activeSeries]) {
+        cx = pointsArr[activeSeries][j][0];
+        cy = pointsArr[activeSeries][j][1];
+      }
+
+      var points = null;
+      var allPoints = ttCtx.getAllMarkers();
+
+      if (allPoints !== null) {
+        points = allPoints;
+      } else {
+        points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers circle');
+      }
+
+      if (points !== null) {
+        for (var p = 0; p < points.length; p++) {
+          var pointArr = pointsArr[p];
+
+          if (pointArr && pointArr.length) {
+            var pcy = pointsArr[p][j][1];
+            points[p].setAttribute('cx', cx);
+            var realIndex = parseInt(points[p].parentNode.parentNode.parentNode.getAttribute('data:realIndex'));
+
+            if (pcy !== null) {
+              points[realIndex] && points[realIndex].setAttribute('r', hoverSize);
+              points[realIndex] && points[realIndex].setAttribute('cy', pcy);
+            } else {
+              points[realIndex] && points[realIndex].setAttribute('r', 0);
+            }
+          }
+        }
+      }
+
+      this.moveXCrosshairs(cx);
+
+      if (!ttCtx.fixedTooltip) {
+        var tcy = cy || w.globals.gridHeight;
+        this.moveTooltip(cx, tcy, hoverSize);
+      }
+    }
+  }, {
+    key: "moveStickyTooltipOverBars",
+    value: function moveStickyTooltipOverBars(j) {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var jBar = w.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='1'] path[j='".concat(j, "'], .apexcharts-candlestick-series .apexcharts-series[rel='1'] path[j='").concat(j, "'], .apexcharts-rangebar-series .apexcharts-series[rel='1'] path[j='").concat(j, "']"));
+      var bcx = jBar ? parseFloat(jBar.getAttribute('cx')) : 0;
+      var bcy = 0;
+      var bw = jBar ? parseFloat(jBar.getAttribute('barWidth')) : 0;
+
+      if (w.globals.isXNumeric) {
+        bcx = bcx - bw / 2;
+      } else {
+        bcx = ttCtx.xAxisTicksPositions[j - 1] + ttCtx.dataPointsDividedWidth / 2;
+
+        if (isNaN(bcx)) {
+          bcx = ttCtx.xAxisTicksPositions[j] - ttCtx.dataPointsDividedWidth / 2;
+        }
+      } // tooltip will move vertically along with mouse as it is a shared tooltip
+
+
+      var elGrid = ttCtx.getElGrid();
+      var seriesBound = elGrid.getBoundingClientRect();
+      bcy = ttCtx.e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2;
+      this.moveXCrosshairs(bcx);
+
+      if (!ttCtx.fixedTooltip) {
+        var tcy = bcy || w.globals.gridHeight;
+        this.moveTooltip(bcx, tcy);
+      }
+    }
+  }]);
+
+  return Position;
+}();
+
+/**
+ * ApexCharts Tooltip.Marker Class to draw texts on the tooltip.
+ *
+ * @module Tooltip.Marker
+ **/
+
+var Marker =
+/*#__PURE__*/
+function () {
+  function Marker(tooltipContext) {
+    _classCallCheck(this, Marker);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+    this.ctx = tooltipContext.ctx;
+    this.tooltipPosition = new Position(tooltipContext);
+  }
+
+  _createClass(Marker, [{
+    key: "drawDynamicPoints",
+    value: function drawDynamicPoints() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var marker = new Markers(this.ctx);
+      var elsSeries = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');
+
+      for (var i = 0; i < elsSeries.length; i++) {
+        var seriesIndex = parseInt(elsSeries[i].getAttribute('data:realIndex'));
+        var pointsMain = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesIndex, "'] .apexcharts-series-markers-wrap"));
+
+        if (pointsMain !== null) {
+          // it can be null as we have tooltips in donut/bar charts
+          var point = void 0;
+          var PointClasses = "apexcharts-marker w".concat((Math.random() + 1).toString(36).substring(4));
+
+          if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) {
+            PointClasses += ' no-pointer-events';
+          }
+
+          var elPointOptions = marker.getMarkerConfig(PointClasses, seriesIndex);
+          point = graphics.drawMarker(0, 0, elPointOptions);
+          point.node.setAttribute('default-marker-size', 0);
+          var elPointsG = document.createElementNS(w.globals.SVGNS, 'g');
+          elPointsG.classList.add('apexcharts-series-markers');
+          elPointsG.appendChild(point.node);
+          pointsMain.appendChild(elPointsG);
+        }
+      }
+    }
+  }, {
+    key: "enlargeCurrentPoint",
+    value: function enlargeCurrentPoint(rel, point) {
+      var x = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+      var y = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
+      var w = this.w;
+
+      if (w.config.chart.type !== 'bubble') {
+        this.newPointSize(rel, point);
+      }
+
+      var cx = point.getAttribute('cx');
+      var cy = point.getAttribute('cy');
+
+      if (x !== null && y !== null) {
+        cx = x;
+        cy = y;
+      }
+
+      this.tooltipPosition.moveXCrosshairs(cx);
+
+      if (!this.fixedTooltip) {
+        if (w.config.chart.type === 'radar') {
+          var elGrid = this.ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect();
+          cx = this.ttCtx.e.clientX - seriesBound.left;
+        }
+
+        this.tooltipPosition.moveTooltip(cx, cy, w.config.markers.hover.size);
+      }
+    }
+  }, {
+    key: "enlargePoints",
+    value: function enlargePoints(j) {
+      var w = this.w;
+      var me = this;
+      var ttCtx = this.ttCtx;
+      var col = j;
+      var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker');
+      var newSize = w.config.markers.hover.size;
+
+      for (var p = 0; p < points.length; p++) {
+        var rel = points[p].getAttribute('rel');
+        var index = points[p].getAttribute('index');
+
+        if (newSize === undefined) {
+          newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset;
+        }
+
+        if (col === parseInt(rel)) {
+          me.newPointSize(col, points[p]);
+          var cx = points[p].getAttribute('cx');
+          var cy = points[p].getAttribute('cy');
+          me.tooltipPosition.moveXCrosshairs(cx);
+
+          if (!ttCtx.fixedTooltip) {
+            me.tooltipPosition.moveTooltip(cx, cy, newSize);
+          }
+        } else {
+          me.oldPointSize(points[p]);
+        }
+      }
+    }
+  }, {
+    key: "newPointSize",
+    value: function newPointSize(rel, point) {
+      var w = this.w;
+      var newSize = w.config.markers.hover.size;
+      var elPoint = null;
+
+      if (rel === 0) {
+        elPoint = point.parentNode.firstChild;
+      } else {
+        elPoint = point.parentNode.lastChild;
+      }
+
+      var index = parseInt(elPoint.getAttribute('index'));
+
+      if (newSize === undefined) {
+        newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset;
+      }
+
+      elPoint.setAttribute('r', newSize);
+    }
+  }, {
+    key: "oldPointSize",
+    value: function oldPointSize(point) {
+      var size = parseInt(point.getAttribute('default-marker-size'));
+      point.setAttribute('r', size);
+    }
+  }, {
+    key: "resetPointsSize",
+    value: function resetPointsSize() {
+      var w = this.w;
+      var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker');
+
+      for (var p = 0; p < points.length; p++) {
+        var size = parseInt(points[p].getAttribute('default-marker-size'));
+
+        if (Utils.isNumber(size)) {
+          points[p].setAttribute('r', size);
+        } else {
+          points[p].setAttribute('r', 0);
+        }
+      }
+    }
+  }]);
+
+  return Marker;
+}();
+
+/**
+ * ApexCharts Tooltip.Intersect Class.
+ *
+ * @module Tooltip.Intersect
+ **/
+
+var Intersect =
+/*#__PURE__*/
+function () {
+  function Intersect(tooltipContext) {
+    _classCallCheck(this, Intersect);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+  }
+
+  _createClass(Intersect, [{
+    key: "getAttr",
+    value: function getAttr(e, attr) {
+      return parseFloat(e.target.getAttribute(attr));
+    }
+  }, {
+    key: "handleHeatTooltip",
+    value: function handleHeatTooltip(_ref) {
+      var e = _ref.e,
+          opt = _ref.opt,
+          x = _ref.x,
+          y = _ref.y;
+      var ttCtx = this.ttCtx;
+      var w = this.w;
+
+      if (e.target.classList.contains('apexcharts-heatmap-rect')) {
+        var i = this.getAttr(e, 'i');
+        var j = this.getAttr(e, 'j');
+        var cx = this.getAttr(e, 'cx');
+        var cy = this.getAttr(e, 'cy');
+        var width = this.getAttr(e, 'width');
+        var height = this.getAttr(e, 'height');
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: i,
+          j: j,
+          shared: false
+        });
+        x = cx + ttCtx.tooltipRect.ttWidth / 2 + width;
+        y = cy + ttCtx.tooltipRect.ttHeight / 2 - height / 2;
+        ttCtx.tooltipPosition.moveXCrosshairs(cx + width / 2);
+
+        if (x > w.globals.gridWidth / 2) {
+          x = cx - ttCtx.tooltipRect.ttWidth / 2 + width;
+        }
+
+        if (ttCtx.w.config.tooltip.followCursor) {
+          var elGrid = ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect(); // x = ttCtx.e.clientX - seriesBound.left
+
+          y = ttCtx.e.clientY - seriesBound.top + w.globals.translateY / 2 - 10;
+        }
+      }
+
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "handleMarkerTooltip",
+    value: function handleMarkerTooltip(_ref2) {
+      var e = _ref2.e,
+          opt = _ref2.opt,
+          x = _ref2.x,
+          y = _ref2.y;
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var i;
+      var j;
+
+      if (e.target.classList.contains('apexcharts-marker')) {
+        var cx = parseInt(opt.paths.getAttribute('cx'));
+        var cy = parseInt(opt.paths.getAttribute('cy'));
+        var val = parseFloat(opt.paths.getAttribute('val'));
+        j = parseInt(opt.paths.getAttribute('rel'));
+        i = parseInt(opt.paths.parentNode.parentNode.parentNode.getAttribute('rel')) - 1;
+
+        if (ttCtx.intersect) {
+          var el = Utils.findAncestor(opt.paths, 'apexcharts-series');
+
+          if (el) {
+            i = parseInt(el.getAttribute('data:realIndex'));
+          }
+        }
+
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: i,
+          j: j,
+          shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared
+        });
+
+        if (e.type === 'mouseup') {
+          ttCtx.markerClick(e, i, j);
+        }
+
+        x = cx;
+        y = cy + w.globals.translateY - ttCtx.tooltipRect.ttHeight * 1.4;
+
+        if (ttCtx.w.config.tooltip.followCursor) {
+          var elGrid = ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect();
+          y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top;
+        }
+
+        if (val < 0) {
+          y = cy;
+        }
+
+        ttCtx.marker.enlargeCurrentPoint(j, opt.paths, x, y);
+      }
+
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "handleBarTooltip",
+    value: function handleBarTooltip(_ref3) {
+      var e = _ref3.e,
+          opt = _ref3.opt;
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var tooltipEl = ttCtx.getElTooltip();
+      var bx = 0;
+      var x = 0;
+      var y = 0; // let bW = 0
+
+      var i = 0;
+      var strokeWidth;
+      var barXY = this.getBarTooltipXY({
+        e: e,
+        opt: opt
+      });
+      i = barXY.i;
+      var barHeight = barXY.barHeight;
+      var j = barXY.j;
+
+      if (w.globals.isBarHorizontal && ttCtx.hasBars() || !w.config.tooltip.shared) {
+        x = barXY.x;
+        y = barXY.y;
+        strokeWidth = Array.isArray(w.config.stroke.width) ? w.config.stroke.width[i] : w.config.stroke.width; // bW = barXY.barWidth
+
+        bx = x;
+      } else {
+        if (!w.globals.comboCharts && !w.config.tooltip.shared) {
+          bx = bx / 2;
+        }
+      } // y is NaN, make it touch the bottom of grid area
+
+
+      if (isNaN(y)) {
+        y = w.globals.svgHeight - ttCtx.tooltipRect.ttHeight;
+      } // x exceeds gridWidth
+
+
+      if (x + ttCtx.tooltipRect.ttWidth > w.globals.gridWidth) {
+        x = x - ttCtx.tooltipRect.ttWidth;
+      } else if (x < 0) {
+        x = x + ttCtx.tooltipRect.ttWidth;
+      }
+
+      if (ttCtx.w.config.tooltip.followCursor) {
+        var elGrid = ttCtx.getElGrid();
+        var seriesBound = elGrid.getBoundingClientRect();
+        y = ttCtx.e.clientY - seriesBound.top;
+      } // if tooltip is still null, querySelector
+
+
+      if (ttCtx.tooltip === null) {
+        ttCtx.tooltip = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip');
+      }
+
+      if (!w.config.tooltip.shared) {
+        if (w.globals.comboChartsHasBars) {
+          ttCtx.tooltipPosition.moveXCrosshairs(bx + strokeWidth / 2);
+        } else {
+          ttCtx.tooltipPosition.moveXCrosshairs(bx);
+        }
+      } // move tooltip here
+
+
+      if (!ttCtx.fixedTooltip && (!w.config.tooltip.shared || w.globals.isBarHorizontal && ttCtx.hasBars())) {
+        if (isReversed) {
+          x = w.globals.gridWidth - x;
+        }
+
+        tooltipEl.style.left = x + w.globals.translateX + 'px';
+        var seriesIndex = parseInt(opt.paths.parentNode.getAttribute('data:realIndex'));
+        var isReversed = w.globals.isMultipleYAxis ? w.config.yaxis[seriesIndex] && w.config.yaxis[seriesIndex].reversed : w.config.yaxis[0].reversed;
+
+        if (isReversed && !(w.globals.isBarHorizontal && ttCtx.hasBars())) {
+          y = y + barHeight - (w.globals.series[i][j] < 0 ? barHeight : 0) * 2;
+        }
+
+        if (ttCtx.tooltipRect.ttHeight + y > w.globals.gridHeight) {
+          y = w.globals.gridHeight - ttCtx.tooltipRect.ttHeight + w.globals.translateY;
+          tooltipEl.style.top = y + 'px';
+        } else {
+          tooltipEl.style.top = y + w.globals.translateY - ttCtx.tooltipRect.ttHeight / 2 + 'px';
+        }
+      }
+    }
+  }, {
+    key: "getBarTooltipXY",
+    value: function getBarTooltipXY(_ref4) {
+      var e = _ref4.e,
+          opt = _ref4.opt;
+      var w = this.w;
+      var j = null;
+      var ttCtx = this.ttCtx;
+      var i = 0;
+      var x = 0;
+      var y = 0;
+      var barWidth = 0;
+      var barHeight = 0;
+      var cl = e.target.classList;
+
+      if (cl.contains('apexcharts-bar-area') || cl.contains('apexcharts-candlestick-area') || cl.contains('apexcharts-rangebar-area')) {
+        var bar = e.target;
+        var barRect = bar.getBoundingClientRect();
+        var seriesBound = opt.elGrid.getBoundingClientRect();
+        var bh = barRect.height;
+        barHeight = barRect.height;
+        var bw = barRect.width;
+        var cx = parseInt(bar.getAttribute('cx'));
+        var cy = parseInt(bar.getAttribute('cy'));
+        barWidth = parseFloat(bar.getAttribute('barWidth'));
+        var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+        j = parseInt(bar.getAttribute('j'));
+        i = parseInt(bar.parentNode.getAttribute('rel')) - 1;
+
+        if (w.globals.comboCharts) {
+          i = parseInt(bar.parentNode.getAttribute('data:realIndex'));
+        } // if (w.config.tooltip.shared) {
+        // this check not needed  at the moment
+        //   const yDivisor = w.globals.gridHeight / (w.globals.series.length)
+        //   const hoverY = ttCtx.clientY - ttCtx.seriesBound.top
+        //   j = Math.ceil(hoverY / yDivisor)
+        // }
+
+
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: i,
+          j: j,
+          shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared
+        });
+
+        if (w.config.tooltip.followCursor) {
+          if (w.globals.isBarHorizontal) {
+            x = clientX - seriesBound.left + 15;
+            y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2;
+          } else {
+            if (w.globals.isXNumeric) {
+              x = cx - bw / 2;
+            } else {
+              x = cx - ttCtx.dataPointsDividedWidth + bw / 2;
+            }
+
+            y = e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2 - 15;
+          }
+        } else {
+          if (w.globals.isBarHorizontal) {
+            x = cx;
+
+            if (x < ttCtx.xyRatios.baseLineInvertedY) {
+              x = cx - ttCtx.tooltipRect.ttWidth;
+            }
+
+            y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2;
+          } else {
+            // if columns
+            if (w.globals.isXNumeric) {
+              x = cx - bw / 2;
+            } else {
+              x = cx - ttCtx.dataPointsDividedWidth + bw / 2;
+            }
+
+            y = cy; // - ttCtx.tooltipRect.ttHeight / 2 + 10
+          }
+        }
+      }
+
+      return {
+        x: x,
+        y: y,
+        barHeight: barHeight,
+        barWidth: barWidth,
+        i: i,
+        j: j
+      };
+    }
+  }]);
+
+  return Intersect;
+}();
+
+/**
+ * ApexCharts Tooltip.AxesTooltip Class.
+ *
+ * @module Tooltip.AxesTooltip
+ **/
+var AxesTooltip =
+/*#__PURE__*/
+function () {
+  function AxesTooltip(tooltipContext) {
+    _classCallCheck(this, AxesTooltip);
+
+    this.w = tooltipContext.w;
+    this.ttCtx = tooltipContext;
+  }
+  /**
+   * This method adds the secondary tooltip which appears below x axis
+   * @memberof Tooltip
+   **/
+
+
+  _createClass(AxesTooltip, [{
+    key: "drawXaxisTooltip",
+    value: function drawXaxisTooltip() {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+      var isBottom = w.config.xaxis.position === 'bottom';
+      ttCtx.xaxisOffY = isBottom ? w.globals.gridHeight + 1 : 1;
+      var tooltipCssClass = isBottom ? 'apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom' : 'apexcharts-xaxistooltip apexcharts-xaxistooltip-top';
+      var renderTo = w.globals.dom.elWrap;
+
+      if (ttCtx.blxaxisTooltip) {
+        var xaxisTooltip = w.globals.dom.baseEl.querySelector('.apexcharts-xaxistooltip');
+
+        if (xaxisTooltip === null) {
+          ttCtx.xaxisTooltip = document.createElement('div');
+          ttCtx.xaxisTooltip.setAttribute('class', tooltipCssClass + ' ' + w.config.tooltip.theme);
+          renderTo.appendChild(ttCtx.xaxisTooltip);
+          ttCtx.xaxisTooltipText = document.createElement('div');
+          ttCtx.xaxisTooltipText.classList.add('apexcharts-xaxistooltip-text');
+          ttCtx.xaxisTooltipText.style.fontFamily = w.config.xaxis.tooltip.style.fontFamily || w.config.chart.fontFamily;
+          ttCtx.xaxisTooltipText.style.fontSize = w.config.xaxis.tooltip.style.fontSize;
+          ttCtx.xaxisTooltip.appendChild(ttCtx.xaxisTooltipText);
+        }
+      }
+    }
+    /**
+     * This method adds the secondary tooltip which appears below x axis
+     * @memberof Tooltip
+     **/
+
+  }, {
+    key: "drawYaxisTooltip",
+    value: function drawYaxisTooltip() {
+      var w = this.w;
+      var ttCtx = this.ttCtx;
+
+      for (var i = 0; i < w.config.yaxis.length; i++) {
+        var isRight = w.config.yaxis[i].opposite || w.config.yaxis[i].crosshairs.opposite;
+        ttCtx.yaxisOffX = isRight ? w.globals.gridWidth + 1 : 1;
+        var tooltipCssClass = isRight ? "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i, " apexcharts-yaxistooltip-right") : "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i, " apexcharts-yaxistooltip-left");
+        var renderTo = w.globals.dom.elWrap;
+
+        if (ttCtx.blyaxisTooltip) {
+          var yaxisTooltip = w.globals.dom.baseEl.querySelector(".apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i));
+
+          if (yaxisTooltip === null) {
+            ttCtx.yaxisTooltip = document.createElement('div');
+            ttCtx.yaxisTooltip.setAttribute('class', tooltipCssClass + ' ' + w.config.tooltip.theme);
+            renderTo.appendChild(ttCtx.yaxisTooltip);
+            if (i === 0) ttCtx.yaxisTooltipText = [];
+            ttCtx.yaxisTooltipText.push(document.createElement('div'));
+            ttCtx.yaxisTooltipText[i].classList.add('apexcharts-yaxistooltip-text');
+            ttCtx.yaxisTooltip.appendChild(ttCtx.yaxisTooltipText[i]);
+          }
+        }
+      }
+    }
+    /**
+     * @memberof Tooltip
+     **/
+
+  }, {
+    key: "setXCrosshairWidth",
+    value: function setXCrosshairWidth() {
+      var w = this.w;
+      var ttCtx = this.ttCtx; // set xcrosshairs width
+
+      var xcrosshairs = ttCtx.getElXCrosshairs();
+      ttCtx.xcrosshairsWidth = parseInt(w.config.xaxis.crosshairs.width);
+
+      if (!w.globals.comboCharts) {
+        if (w.config.xaxis.crosshairs.width === 'tickWidth') {
+          var count = w.globals.labels.length;
+          ttCtx.xcrosshairsWidth = w.globals.gridWidth / count;
+        } else if (w.config.xaxis.crosshairs.width === 'barWidth') {
+          var bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area');
+
+          if (bar !== null) {
+            var barWidth = parseFloat(bar.getAttribute('barWidth'));
+            ttCtx.xcrosshairsWidth = barWidth;
+          } else {
+            ttCtx.xcrosshairsWidth = 1;
+          }
+        }
+      } else {
+        var _bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area');
+
+        if (_bar !== null && w.config.xaxis.crosshairs.width === 'barWidth') {
+          var _barWidth = parseFloat(_bar.getAttribute('barWidth'));
+
+          ttCtx.xcrosshairsWidth = _barWidth;
+        } else {
+          if (w.config.xaxis.crosshairs.width === 'tickWidth') {
+            var _count = w.globals.labels.length;
+            ttCtx.xcrosshairsWidth = w.globals.gridWidth / _count;
+          }
+        }
+      }
+
+      if (w.globals.isBarHorizontal) {
+        ttCtx.xcrosshairsWidth = 0;
+      }
+
+      if (xcrosshairs !== null && ttCtx.xcrosshairsWidth > 0) {
+        xcrosshairs.setAttribute('width', ttCtx.xcrosshairsWidth);
+      }
+    }
+  }, {
+    key: "handleYCrosshair",
+    value: function handleYCrosshair() {
+      var w = this.w;
+      var ttCtx = this.ttCtx; // set ycrosshairs height
+
+      ttCtx.ycrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs');
+      ttCtx.ycrosshairsHidden = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs-hidden');
+    }
+  }, {
+    key: "drawYaxisTooltipText",
+    value: function drawYaxisTooltipText(index, clientY, xyRatios) {
+      var ttCtx = this.ttCtx;
+      var w = this.w;
+      var lbFormatter = w.globals.yLabelFormatters[index];
+
+      if (ttCtx.blyaxisTooltip) {
+        var elGrid = ttCtx.getElGrid();
+        var seriesBound = elGrid.getBoundingClientRect();
+        var hoverY = (clientY - seriesBound.top) * xyRatios.yRatio[index];
+        var height = w.globals.maxYArr[index] - w.globals.minYArr[index];
+        var val = w.globals.minYArr[index] + (height - hoverY);
+        ttCtx.tooltipPosition.moveYCrosshairs(clientY - seriesBound.top);
+        ttCtx.yaxisTooltipText[index].innerHTML = lbFormatter(val);
+        ttCtx.tooltipPosition.moveYAxisTooltip(index);
+      }
+    }
+  }]);
+
+  return AxesTooltip;
+}();
+
+/**
+ * ApexCharts Core Tooltip Class to handle the tooltip generation.
+ *
+ * @module Tooltip
+ **/
+
+var Tooltip =
+/*#__PURE__*/
+function () {
+  function Tooltip(ctx) {
+    _classCallCheck(this, Tooltip);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    var w = this.w;
+    this.tConfig = w.config.tooltip;
+    this.tooltipUtil = new Utils$1(this);
+    this.tooltipLabels = new Labels(this);
+    this.tooltipPosition = new Position(this);
+    this.marker = new Marker(this);
+    this.intersect = new Intersect(this);
+    this.axesTooltip = new AxesTooltip(this);
+    this.showOnIntersect = this.tConfig.intersect;
+    this.showTooltipTitle = this.tConfig.x.show;
+    this.fixedTooltip = this.tConfig.fixed.enabled;
+    this.xaxisTooltip = null;
+    this.yaxisTTEls = null;
+    this.isBarShared = !w.globals.isBarHorizontal && this.tConfig.shared;
+  }
+
+  _createClass(Tooltip, [{
+    key: "getElTooltip",
+    value: function getElTooltip(ctx) {
+      if (!ctx) ctx = this;
+      return ctx.w.globals.dom.baseEl.querySelector('.apexcharts-tooltip');
+    }
+  }, {
+    key: "getElXCrosshairs",
+    value: function getElXCrosshairs() {
+      return this.w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs');
+    }
+  }, {
+    key: "getElGrid",
+    value: function getElGrid() {
+      return this.w.globals.dom.baseEl.querySelector('.apexcharts-grid');
+    }
+  }, {
+    key: "drawTooltip",
+    value: function drawTooltip(xyRatios) {
+      var w = this.w;
+      this.xyRatios = xyRatios;
+      this.blxaxisTooltip = w.config.xaxis.tooltip.enabled && w.globals.axisCharts;
+      this.blyaxisTooltip = w.config.yaxis[0].tooltip.enabled && w.globals.axisCharts;
+      this.allTooltipSeriesGroups = [];
+
+      if (!w.globals.axisCharts) {
+        this.showTooltipTitle = false;
+      }
+
+      var tooltipEl = document.createElement('div');
+      tooltipEl.classList.add('apexcharts-tooltip');
+      tooltipEl.classList.add(this.tConfig.theme);
+      w.globals.dom.elWrap.appendChild(tooltipEl);
+
+      if (w.globals.axisCharts) {
+        this.axesTooltip.drawXaxisTooltip();
+        this.axesTooltip.drawYaxisTooltip();
+        this.axesTooltip.setXCrosshairWidth();
+        this.axesTooltip.handleYCrosshair();
+        var xAxis = new XAxis(this.ctx);
+        this.xAxisTicksPositions = xAxis.getXAxisTicksPositions();
+      } // we forcefully set intersect true for these conditions
+
+
+      if (w.globals.comboCharts && !this.tConfig.shared || this.tConfig.intersect && !this.tConfig.shared || (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && !this.tConfig.shared) {
+        this.showOnIntersect = true;
+      }
+
+      if (w.config.markers.size === 0 || w.globals.markers.largestSize === 0) {
+        // when user don't want to show points all the time, but only on when hovering on series
+        this.marker.drawDynamicPoints(this);
+      } // no visible series, exit
+
+
+      if (w.globals.collapsedSeries.length === w.globals.series.length) return;
+      this.dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints;
+      this.dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints;
+
+      if (this.showTooltipTitle) {
+        this.tooltipTitle = document.createElement('div');
+        this.tooltipTitle.classList.add('apexcharts-tooltip-title');
+        this.tooltipTitle.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily;
+        this.tooltipTitle.style.fontSize = this.tConfig.style.fontSize;
+        tooltipEl.appendChild(this.tooltipTitle);
+      }
+
+      var ttItemsCnt = w.globals.series.length; // whether shared or not, default is shared
+
+      if ((w.globals.xyCharts || w.globals.comboCharts) && this.tConfig.shared) {
+        if (!this.showOnIntersect) {
+          ttItemsCnt = w.globals.series.length;
+        } else {
+          ttItemsCnt = 1;
+        }
+      }
+
+      this.ttItems = this.createTTElements(ttItemsCnt);
+      this.addSVGEvents();
+    }
+  }, {
+    key: "createTTElements",
+    value: function createTTElements(ttItemsCnt) {
+      var w = this.w;
+      var ttItems = [];
+      var tooltipEl = this.getElTooltip();
+
+      for (var i = 0; i < ttItemsCnt; i++) {
+        var gTxt = document.createElement('div');
+        gTxt.classList.add('apexcharts-tooltip-series-group');
+
+        if (this.tConfig.shared && this.tConfig.enabledOnSeries && Array.isArray(this.tConfig.enabledOnSeries)) {
+          if (this.tConfig.enabledOnSeries.indexOf(i) < 0) {
+            gTxt.classList.add('apexcharts-tooltip-series-group-hidden');
+          }
+        }
+
+        var point = document.createElement('span');
+        point.classList.add('apexcharts-tooltip-marker');
+        point.style.backgroundColor = w.globals.colors[i];
+        gTxt.appendChild(point);
+        var gYZ = document.createElement('div');
+        gYZ.classList.add('apexcharts-tooltip-text');
+        gYZ.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily;
+        gYZ.style.fontSize = this.tConfig.style.fontSize; // y values group
+
+        var gYValText = document.createElement('div');
+        gYValText.classList.add('apexcharts-tooltip-y-group');
+        var txtLabel = document.createElement('span');
+        txtLabel.classList.add('apexcharts-tooltip-text-label');
+        gYValText.appendChild(txtLabel);
+        var txtValue = document.createElement('span');
+        txtValue.classList.add('apexcharts-tooltip-text-value');
+        gYValText.appendChild(txtValue); // z values group
+
+        var gZValText = document.createElement('div');
+        gZValText.classList.add('apexcharts-tooltip-z-group');
+        var txtZLabel = document.createElement('span');
+        txtZLabel.classList.add('apexcharts-tooltip-text-z-label');
+        gZValText.appendChild(txtZLabel);
+        var txtZValue = document.createElement('span');
+        txtZValue.classList.add('apexcharts-tooltip-text-z-value');
+        gZValText.appendChild(txtZValue);
+        gYZ.appendChild(gYValText);
+        gYZ.appendChild(gZValText);
+        gTxt.appendChild(gYZ);
+        tooltipEl.appendChild(gTxt);
+        ttItems.push(gTxt);
+      }
+
+      return ttItems;
+    }
+  }, {
+    key: "addSVGEvents",
+    value: function addSVGEvents() {
+      var w = this.w;
+      var type = w.config.chart.type;
+      var tooltipEl = this.getElTooltip();
+      var commonBar = !!(type === 'bar' || type === 'candlestick' || type === 'rangeBar');
+      var hoverArea = w.globals.dom.Paper.node;
+      var elGrid = this.getElGrid();
+
+      if (elGrid) {
+        this.seriesBound = elGrid.getBoundingClientRect();
+      }
+
+      var tooltipY = [];
+      var tooltipX = [];
+      var seriesHoverParams = {
+        hoverArea: hoverArea,
+        elGrid: elGrid,
+        tooltipEl: tooltipEl,
+        tooltipY: tooltipY,
+        tooltipX: tooltipX,
+        ttItems: this.ttItems
+      };
+      var points;
+
+      if (w.globals.axisCharts) {
+        if (type === 'area' || type === 'line' || type === 'scatter' || type === 'bubble') {
+          points = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker");
+        } else if (commonBar) {
+          points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-rangebar-area');
+        } else if (type === 'heatmap') {
+          points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-heatmap');
+        } else if (type === 'radar') {
+          points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-marker');
+        }
+
+        if (points && points.length) {
+          for (var p = 0; p < points.length; p++) {
+            tooltipY.push(points[p].getAttribute('cy'));
+            tooltipX.push(points[p].getAttribute('cx'));
+          }
+        }
+      }
+
+      var validSharedChartTypes = w.globals.xyCharts && !this.showOnIntersect || w.globals.comboCharts && !this.showOnIntersect || commonBar && this.hasBars() && this.tConfig.shared;
+
+      if (validSharedChartTypes) {
+        this.addPathsEventListeners([hoverArea], seriesHoverParams);
+      } else if (commonBar && !w.globals.comboCharts) {
+        this.addBarsEventListeners(seriesHoverParams);
+      } else if (type === 'bubble' || type === 'scatter' || type === 'radar' || this.showOnIntersect && (type === 'area' || type === 'line')) {
+        this.addPointsEventsListeners(seriesHoverParams);
+      } else if (!w.globals.axisCharts || type === 'heatmap') {
+        var seriesAll = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');
+        this.addPathsEventListeners(seriesAll, seriesHoverParams);
+      }
+
+      if (this.showOnIntersect) {
+        var linePoints = w.globals.dom.baseEl.querySelectorAll('.apexcharts-line-series .apexcharts-marker');
+
+        if (linePoints.length > 0) {
+          // if we find any lineSeries, addEventListeners for them
+          this.addPathsEventListeners(linePoints, seriesHoverParams);
+        }
+
+        var areaPoints = w.globals.dom.baseEl.querySelectorAll('.apexcharts-area-series .apexcharts-marker');
+
+        if (areaPoints.length > 0) {
+          // if we find any areaSeries, addEventListeners for them
+          this.addPathsEventListeners(areaPoints, seriesHoverParams);
+        } // combo charts may have bars, so add event listeners here too
+
+
+        if (this.hasBars() && !this.tConfig.shared) {
+          this.addBarsEventListeners(seriesHoverParams);
+        }
+      }
+    }
+  }, {
+    key: "drawFixedTooltipRect",
+    value: function drawFixedTooltipRect() {
+      var w = this.w;
+      var tooltipEl = this.getElTooltip();
+      var tooltipRect = tooltipEl.getBoundingClientRect();
+      var ttWidth = tooltipRect.width + 10;
+      var ttHeight = tooltipRect.height + 10;
+      var x = this.tConfig.fixed.offsetX;
+      var y = this.tConfig.fixed.offsetY;
+
+      if (this.tConfig.fixed.position.toLowerCase().indexOf('right') > -1) {
+        x = x + w.globals.svgWidth - ttWidth + 10;
+      }
+
+      if (this.tConfig.fixed.position.toLowerCase().indexOf('bottom') > -1) {
+        y = y + w.globals.svgHeight - ttHeight - 10;
+      }
+
+      tooltipEl.style.left = x + 'px';
+      tooltipEl.style.top = y + 'px';
+      return {
+        x: x,
+        y: y,
+        ttWidth: ttWidth,
+        ttHeight: ttHeight
+      };
+    }
+  }, {
+    key: "addPointsEventsListeners",
+    value: function addPointsEventsListeners(seriesHoverParams) {
+      var w = this.w;
+      var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers .apexcharts-marker');
+      this.addPathsEventListeners(points, seriesHoverParams);
+    }
+  }, {
+    key: "addBarsEventListeners",
+    value: function addBarsEventListeners(seriesHoverParams) {
+      var w = this.w;
+      var bars = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-rangebar-area');
+      this.addPathsEventListeners(bars, seriesHoverParams);
+    }
+  }, {
+    key: "addPathsEventListeners",
+    value: function addPathsEventListeners(paths, opts) {
+      var _this = this;
+
+      var self = this;
+
+      var _loop = function _loop(p) {
+        var extendedOpts = {
+          paths: paths[p],
+          tooltipEl: opts.tooltipEl,
+          tooltipY: opts.tooltipY,
+          tooltipX: opts.tooltipX,
+          elGrid: opts.elGrid,
+          hoverArea: opts.hoverArea,
+          ttItems: opts.ttItems
+        };
+        _this.w.globals.tooltipOpts = extendedOpts;
+        var events = ['mousemove', 'mouseup', 'touchmove', 'mouseout', 'touchend'];
+        events.map(function (ev) {
+          return paths[p].addEventListener(ev, self.seriesHover.bind(self, extendedOpts), {
+            capture: false,
+            passive: true
+          });
+        });
+      };
+
+      for (var p = 0; p < paths.length; p++) {
+        _loop(p);
+      }
+    }
+    /*
+     ** The actual series hover function
+     */
+
+  }, {
+    key: "seriesHover",
+    value: function seriesHover(opt, e) {
+      var _this2 = this;
+
+      var chartGroups = [];
+      var w = this.w; // if user has more than one charts in group, we need to sync
+
+      if (w.config.chart.group) {
+        chartGroups = this.ctx.getGroupedCharts();
+      }
+
+      if (w.globals.axisCharts && (w.globals.minX === -Infinity && w.globals.maxX === Infinity || w.globals.dataPoints === 0)) {
+        return;
+      }
+
+      if (chartGroups.length) {
+        chartGroups.forEach(function (ch) {
+          var tooltipEl = _this2.getElTooltip(ch);
+
+          var newOpts = {
+            paths: opt.paths,
+            tooltipEl: tooltipEl,
+            tooltipY: opt.tooltipY,
+            tooltipX: opt.tooltipX,
+            elGrid: opt.elGrid,
+            hoverArea: opt.hoverArea,
+            ttItems: ch.w.globals.tooltip.ttItems // all the charts should have the same minX and maxX (same xaxis) for multiple tooltips to work correctly
+
+          };
+
+          if (ch.w.globals.minX === _this2.w.globals.minX && ch.w.globals.maxX === _this2.w.globals.maxX) {
+            ch.w.globals.tooltip.seriesHoverByContext({
+              chartCtx: ch,
+              ttCtx: ch.w.globals.tooltip,
+              opt: newOpts,
+              e: e
+            });
+          }
+        });
+      } else {
+        this.seriesHoverByContext({
+          chartCtx: this.ctx,
+          ttCtx: this.w.globals.tooltip,
+          opt: opt,
+          e: e
+        });
+      }
+    }
+  }, {
+    key: "seriesHoverByContext",
+    value: function seriesHoverByContext(_ref) {
+      var chartCtx = _ref.chartCtx,
+          ttCtx = _ref.ttCtx,
+          opt = _ref.opt,
+          e = _ref.e;
+      var w = chartCtx.w;
+      var tooltipEl = this.getElTooltip(); // tooltipRect is calculated on every mousemove, because the text is dynamic
+
+      ttCtx.tooltipRect = {
+        x: 0,
+        y: 0,
+        ttWidth: tooltipEl.getBoundingClientRect().width,
+        ttHeight: tooltipEl.getBoundingClientRect().height
+      };
+      ttCtx.e = e; // highlight the current hovered bars
+
+      if (ttCtx.hasBars() && !w.globals.comboCharts && !ttCtx.isBarShared) {
+        if (this.tConfig.onDatasetHover.highlightDataSeries) {
+          var series = new Series(chartCtx);
+          series.toggleSeriesOnHover(e, e.target.parentNode);
+        }
+      }
+
+      if (ttCtx.fixedTooltip) {
+        ttCtx.drawFixedTooltipRect();
+      }
+
+      if (w.globals.axisCharts) {
+        ttCtx.axisChartsTooltips({
+          e: e,
+          opt: opt,
+          tooltipRect: ttCtx.tooltipRect
+        });
+      } else {
+        // non-plot charts i.e pie/donut/circle
+        ttCtx.nonAxisChartsTooltips({
+          e: e,
+          opt: opt,
+          tooltipRect: ttCtx.tooltipRect
+        });
+      }
+    } // tooltip handling for line/area/bar/columns/scatter
+
+  }, {
+    key: "axisChartsTooltips",
+    value: function axisChartsTooltips(_ref2) {
+      var e = _ref2.e,
+          opt = _ref2.opt;
+      var w = this.w;
+      var j, x, y;
+      var self = this;
+      var capj = null;
+      var seriesBound = opt.elGrid.getBoundingClientRect();
+      var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+      var clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY;
+      this.clientY = clientY;
+      this.clientX = clientX;
+
+      if (clientY < seriesBound.top || clientY > seriesBound.top + seriesBound.height) {
+        self.handleMouseOut(opt);
+        return;
+      }
+
+      if (Array.isArray(this.tConfig.enabledOnSeries)) {
+        var index = parseInt(opt.paths.getAttribute('index'));
+
+        if (this.tConfig.enabledOnSeries.indexOf(index) < 0) {
+          self.handleMouseOut(opt);
+          return;
+        }
+      }
+
+      var tooltipEl = this.getElTooltip();
+      var xcrosshairs = this.getElXCrosshairs();
+      var isStickyTooltip = w.globals.xyCharts || w.config.chart.type === 'bar' && !w.globals.isBarHorizontal && this.hasBars() && this.tConfig.shared || w.globals.comboCharts && this.hasBars;
+
+      if (w.globals.isBarHorizontal && this.hasBars()) {
+        isStickyTooltip = false;
+      }
+
+      if (e.type === 'mousemove' || e.type === 'touchmove' || e.type === 'mouseup') {
+        if (xcrosshairs !== null) {
+          xcrosshairs.classList.add('active');
+        }
+
+        if (self.ycrosshairs !== null && self.blyaxisTooltip) {
+          self.ycrosshairs.classList.add('active');
+        }
+
+        if (isStickyTooltip && !self.showOnIntersect) {
+          capj = self.tooltipUtil.getNearestValues({
+            context: self,
+            hoverArea: opt.hoverArea,
+            elGrid: opt.elGrid,
+            clientX: clientX,
+            clientY: clientY,
+            hasBars: self.hasBars
+          });
+          j = capj.j;
+          var capturedSeries = capj.capturedSeries;
+
+          if (capj.hoverX < 0 || capj.hoverX > w.globals.gridWidth) {
+            self.handleMouseOut(opt);
+            return;
+          }
+
+          if (capturedSeries !== null) {
+            var ignoreNull = w.globals.series[capturedSeries][j] === null;
+
+            if (ignoreNull) {
+              opt.tooltipEl.classList.remove('active');
+              return;
+            }
+
+            if (typeof w.globals.series[capturedSeries][j] !== 'undefined') {
+              if (this.tConfig.shared && this.tooltipUtil.isXoverlap(j) && this.tooltipUtil.isinitialSeriesSameLen()) {
+                this.create(e, self, capturedSeries, j, opt.ttItems);
+              } else {
+                this.create(e, self, capturedSeries, j, opt.ttItems, false);
+              }
+            } else {
+              if (this.tooltipUtil.isXoverlap(j)) {
+                self.create(e, self, 0, j, opt.ttItems);
+              }
+            }
+          } else {
+            // couldn't capture any series. check if shared X is same,
+            // if yes, draw a grouped tooltip
+            if (this.tooltipUtil.isXoverlap(j)) {
+              self.create(e, self, 0, j, opt.ttItems);
+            }
+          }
+        } else {
+          if (w.config.chart.type === 'heatmap') {
+            var markerXY = this.intersect.handleHeatTooltip({
+              e: e,
+              opt: opt,
+              x: x,
+              y: y
+            });
+            x = markerXY.x;
+            y = markerXY.y;
+            tooltipEl.style.left = x + 'px';
+            tooltipEl.style.top = y + 'px';
+          } else {
+            if (this.hasBars) {
+              this.intersect.handleBarTooltip({
+                e: e,
+                opt: opt
+              });
+            }
+
+            if (this.hasMarkers) {
+              // intersect - line/area/scatter/bubble
+              this.intersect.handleMarkerTooltip({
+                e: e,
+                opt: opt,
+                x: x,
+                y: y
+              });
+            }
+          }
+        }
+
+        if (this.blyaxisTooltip) {
+          for (var yt = 0; yt < w.config.yaxis.length; yt++) {
+            self.axesTooltip.drawYaxisTooltipText(yt, clientY, self.xyRatios);
+          }
+        }
+
+        opt.tooltipEl.classList.add('active');
+      } else if (e.type === 'mouseout' || e.type === 'touchend') {
+        this.handleMouseOut(opt);
+      }
+    } // tooltip handling for pie/donuts
+
+  }, {
+    key: "nonAxisChartsTooltips",
+    value: function nonAxisChartsTooltips(_ref3) {
+      var e = _ref3.e,
+          opt = _ref3.opt,
+          tooltipRect = _ref3.tooltipRect;
+      var w = this.w;
+      var rel = opt.paths.getAttribute('rel');
+      var tooltipEl = this.getElTooltip();
+      var seriesBound = w.globals.dom.elWrap.getBoundingClientRect();
+
+      if (e.type === 'mousemove' || e.type === 'touchmove') {
+        tooltipEl.classList.add('active');
+        this.tooltipLabels.drawSeriesTexts({
+          ttItems: opt.ttItems,
+          i: parseInt(rel) - 1,
+          shared: false
+        });
+        var x = w.globals.clientX - seriesBound.left - tooltipRect.ttWidth / 2;
+        var y = w.globals.clientY - seriesBound.top - tooltipRect.ttHeight - 10;
+        tooltipEl.style.left = x + 'px';
+        tooltipEl.style.top = y + 'px';
+      } else if (e.type === 'mouseout' || e.type === 'touchend') {
+        tooltipEl.classList.remove('active');
+      }
+    }
+  }, {
+    key: "deactivateHoverFilter",
+    value: function deactivateHoverFilter() {
+      var w = this.w;
+      var graphics = new Graphics(this.ctx);
+      var allPaths = w.globals.dom.Paper.select(".apexcharts-bar-area");
+
+      for (var b = 0; b < allPaths.length; b++) {
+        graphics.pathMouseLeave(allPaths[b]);
+      }
+    }
+  }, {
+    key: "handleMouseOut",
+    value: function handleMouseOut(opt) {
+      var w = this.w;
+      var xcrosshairs = this.getElXCrosshairs();
+      opt.tooltipEl.classList.remove('active');
+      this.deactivateHoverFilter();
+
+      if (w.config.chart.type !== 'bubble') {
+        this.marker.resetPointsSize();
+      }
+
+      if (xcrosshairs !== null) {
+        xcrosshairs.classList.remove('active');
+      }
+
+      if (this.ycrosshairs !== null) {
+        this.ycrosshairs.classList.remove('active');
+      }
+
+      if (this.blxaxisTooltip) {
+        this.xaxisTooltip.classList.remove('active');
+      }
+
+      if (this.blyaxisTooltip) {
+        if (this.yaxisTTEls === null) {
+          this.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip');
+        }
+
+        for (var i = 0; i < this.yaxisTTEls.length; i++) {
+          this.yaxisTTEls[i].classList.remove('active');
+        }
+      }
+    }
+  }, {
+    key: "getElMarkers",
+    value: function getElMarkers() {
+      return this.w.globals.dom.baseEl.querySelectorAll(' .apexcharts-series-markers');
+    }
+  }, {
+    key: "getAllMarkers",
+    value: function getAllMarkers() {
+      return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers .apexcharts-marker');
+    }
+  }, {
+    key: "hasMarkers",
+    value: function hasMarkers() {
+      var markers = this.getElMarkers();
+      return markers.length > 0;
+    }
+  }, {
+    key: "getElBars",
+    value: function getElBars() {
+      return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-series,  .apexcharts-candlestick-series, .apexcharts-rangebar-series');
+    }
+  }, {
+    key: "hasBars",
+    value: function hasBars() {
+      var bars = this.getElBars();
+      return bars.length > 0;
+    }
+  }, {
+    key: "markerClick",
+    value: function markerClick(e, seriesIndex, dataPointIndex) {
+      var w = this.w;
+
+      if (typeof w.config.chart.events.markerClick === 'function') {
+        w.config.chart.events.markerClick(e, this.ctx, {
+          seriesIndex: seriesIndex,
+          dataPointIndex: dataPointIndex,
+          w: w
+        });
+      }
+
+      this.ctx.fireEvent('markerClick', [e, this.ctx, {
+        seriesIndex: seriesIndex,
+        dataPointIndex: dataPointIndex,
+        w: w
+      }]);
+    }
+  }, {
+    key: "create",
+    value: function create(e, context, capturedSeries, j, ttItems) {
+      var shared = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
+      var w = this.w;
+      var ttCtx = context;
+
+      if (e.type === 'mouseup') {
+        this.markerClick(e, capturedSeries, j);
+      }
+
+      if (shared === null) shared = this.tConfig.shared;
+      var hasMarkers = this.hasMarkers();
+      var bars = this.getElBars();
+
+      if (shared) {
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          ttItems: ttItems,
+          i: capturedSeries,
+          j: j,
+          shared: this.showOnIntersect ? false : this.tConfig.shared
+        });
+
+        if (hasMarkers) {
+          if (w.globals.markers.largestSize > 0) {
+            ttCtx.marker.enlargePoints(j);
+          } else {
+            ttCtx.tooltipPosition.moveDynamicPointsOnHover(j);
+          }
+        }
+
+        if (this.hasBars()) {
+          this.barSeriesHeight = this.tooltipUtil.getBarsHeight(bars);
+
+          if (this.barSeriesHeight > 0) {
+            // hover state, activate snap filter
+            var graphics = new Graphics(this.ctx);
+            var paths = w.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(j, "']")); // de-activate first
+
+            this.deactivateHoverFilter();
+            this.tooltipPosition.moveStickyTooltipOverBars(j);
+
+            for (var b = 0; b < paths.length; b++) {
+              graphics.pathMouseEnter(paths[b]);
+            }
+          }
+        }
+      } else {
+        ttCtx.tooltipLabels.drawSeriesTexts({
+          shared: false,
+          ttItems: ttItems,
+          i: capturedSeries,
+          j: j
+        });
+
+        if (this.hasBars()) {
+          ttCtx.tooltipPosition.moveStickyTooltipOverBars(j);
+        }
+
+        if (hasMarkers) {
+          ttCtx.tooltipPosition.moveMarkers(capturedSeries, j);
+        }
+      }
+    }
+  }]);
+
+  return Tooltip;
+}();
+
+var icoPan = "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\n    <defs>\n        <path d=\"M0 0h24v24H0z\" id=\"a\"/>\n    </defs>\n    <clipPath id=\"b\">\n        <use overflow=\"visible\" xlink:href=\"#a\"/>\n    </clipPath>\n    <path clip-path=\"url(#b)\" d=\"M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z\"/>\n</svg>";
+
+var icoZoom = "<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\n    <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/>\n    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n    <path d=\"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\"/>\n</svg>";
+
+var icoReset = "<svg fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"/>\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n</svg>";
+
+var icoZoomIn = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n    <path d=\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\n</svg>\n";
+
+var icoZoomOut = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n    <path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\n</svg>\n";
+
+var icoSelect = "<svg fill=\"#6E8192\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n    <path d=\"M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2z\"/>\n</svg>";
+
+var icoMenu = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"/></svg>";
+
+/**
+ * ApexCharts Toolbar Class for creating toolbar in axis based charts.
+ *
+ * @module Toolbar
+ **/
+
+var Toolbar =
+/*#__PURE__*/
+function () {
+  function Toolbar(ctx) {
+    _classCallCheck(this, Toolbar);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+    this.ev = this.w.config.chart.events;
+    this.localeValues = this.w.globals.locale.toolbar;
+  }
+
+  _createClass(Toolbar, [{
+    key: "createToolbar",
+    value: function createToolbar() {
+      var w = this.w;
+      var elToolbarWrap = document.createElement('div');
+      elToolbarWrap.setAttribute('class', 'apexcharts-toolbar');
+      w.globals.dom.elWrap.appendChild(elToolbarWrap);
+      this.elZoom = document.createElement('div');
+      this.elZoomIn = document.createElement('div');
+      this.elZoomOut = document.createElement('div');
+      this.elPan = document.createElement('div');
+      this.elSelection = document.createElement('div');
+      this.elZoomReset = document.createElement('div');
+      this.elMenuIcon = document.createElement('div');
+      this.elMenu = document.createElement('div');
+      this.elCustomIcons = [];
+      this.t = w.config.chart.toolbar.tools;
+
+      if (Array.isArray(this.t.customIcons)) {
+        for (var i = 0; i < this.t.customIcons.length; i++) {
+          this.elCustomIcons.push(document.createElement('div'));
+        }
+      }
+
+      this.elMenuItems = [];
+      var toolbarControls = [];
+
+      if (this.t.zoomin && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoomIn,
+          icon: typeof this.t.zoomin === 'string' ? this.t.zoomin : icoZoomIn,
+          title: this.localeValues.zoomIn,
+          class: 'apexcharts-zoom-in-icon'
+        });
+      }
+
+      if (this.t.zoomout && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoomOut,
+          icon: typeof this.t.zoomout === 'string' ? this.t.zoomout : icoZoomOut,
+          title: this.localeValues.zoomOut,
+          class: 'apexcharts-zoom-out-icon'
+        });
+      }
+
+      if (this.t.zoom && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoom,
+          icon: typeof this.t.zoom === 'string' ? this.t.zoom : icoZoom,
+          title: this.localeValues.selectionZoom,
+          class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-zoom-icon'
+        });
+      }
+
+      if (this.t.selection && w.config.chart.selection.enabled) {
+        toolbarControls.push({
+          el: this.elSelection,
+          icon: typeof this.t.selection === 'string' ? this.t.selection : icoSelect,
+          title: this.localeValues.selection,
+          class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-selection-icon'
+        });
+      }
+
+      if (this.t.pan && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elPan,
+          icon: typeof this.t.pan === 'string' ? this.t.pan : icoPan,
+          title: this.localeValues.pan,
+          class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-pan-icon'
+        });
+      }
+
+      if (this.t.reset && w.config.chart.zoom.enabled) {
+        toolbarControls.push({
+          el: this.elZoomReset,
+          icon: typeof this.t.reset === 'string' ? this.t.reset : icoReset,
+          title: this.localeValues.reset,
+          class: 'apexcharts-reset-zoom-icon'
+        });
+      }
+
+      if (this.t.download) {
+        toolbarControls.push({
+          el: this.elMenuIcon,
+          icon: typeof this.t.download === 'string' ? this.t.download : icoMenu,
+          title: this.localeValues.menu,
+          class: 'apexcharts-menu-icon'
+        });
+      }
+
+      for (var _i = 0; _i < this.elCustomIcons.length; _i++) {
+        toolbarControls.push({
+          el: this.elCustomIcons[_i],
+          icon: this.t.customIcons[_i].icon,
+          title: this.t.customIcons[_i].title,
+          index: this.t.customIcons[_i].index,
+          class: 'apexcharts-toolbar-custom-icon ' + this.t.customIcons[_i].class
+        });
+      }
+
+      toolbarControls.forEach(function (t, index) {
+        if (t.index) {
+          Utils.moveIndexInArray(toolbarControls, index, t.index);
+        }
+      });
+
+      for (var _i2 = 0; _i2 < toolbarControls.length; _i2++) {
+        Graphics.setAttrs(toolbarControls[_i2].el, {
+          class: toolbarControls[_i2].class,
+          title: toolbarControls[_i2].title
+        });
+        toolbarControls[_i2].el.innerHTML = toolbarControls[_i2].icon;
+        elToolbarWrap.appendChild(toolbarControls[_i2].el);
+      }
+
+      elToolbarWrap.appendChild(this.elMenu);
+      Graphics.setAttrs(this.elMenu, {
+        class: 'apexcharts-menu'
+      });
+      var menuItems = [{
+        name: 'exportSVG',
+        title: this.localeValues.exportToSVG
+      }, {
+        name: 'exportPNG',
+        title: this.localeValues.exportToPNG
+      }];
+
+      for (var _i3 = 0; _i3 < menuItems.length; _i3++) {
+        this.elMenuItems.push(document.createElement('div'));
+        this.elMenuItems[_i3].innerHTML = menuItems[_i3].title;
+        Graphics.setAttrs(this.elMenuItems[_i3], {
+          class: "apexcharts-menu-item ".concat(menuItems[_i3].name),
+          title: menuItems[_i3].title
+        });
+        this.elMenu.appendChild(this.elMenuItems[_i3]);
+      }
+
+      if (w.globals.zoomEnabled) {
+        this.elZoom.classList.add('selected');
+      } else if (w.globals.panEnabled) {
+        this.elPan.classList.add('selected');
+      } else if (w.globals.selectionEnabled) {
+        this.elSelection.classList.add('selected');
+      }
+
+      this.addToolbarEventListeners();
+    }
+  }, {
+    key: "addToolbarEventListeners",
+    value: function addToolbarEventListeners() {
+      var _this = this;
+
+      this.elZoomReset.addEventListener('click', this.handleZoomReset.bind(this));
+      this.elSelection.addEventListener('click', this.toggleSelection.bind(this));
+      this.elZoom.addEventListener('click', this.toggleZooming.bind(this));
+      this.elZoomIn.addEventListener('click', this.handleZoomIn.bind(this));
+      this.elZoomOut.addEventListener('click', this.handleZoomOut.bind(this));
+      this.elPan.addEventListener('click', this.togglePanning.bind(this));
+      this.elMenuIcon.addEventListener('click', this.toggleMenu.bind(this));
+      this.elMenuItems.forEach(function (m) {
+        if (m.classList.contains('exportSVG')) {
+          m.addEventListener('click', _this.downloadSVG.bind(_this));
+        } else if (m.classList.contains('exportPNG')) {
+          m.addEventListener('click', _this.downloadPNG.bind(_this));
+        }
+      });
+
+      for (var i = 0; i < this.t.customIcons.length; i++) {
+        this.elCustomIcons[i].addEventListener('click', this.t.customIcons[i].click);
+      }
+    }
+  }, {
+    key: "toggleSelection",
+    value: function toggleSelection() {
+      this.toggleOtherControls();
+      this.w.globals.selectionEnabled = !this.w.globals.selectionEnabled;
+
+      if (!this.elSelection.classList.contains('selected')) {
+        this.elSelection.classList.add('selected');
+      } else {
+        this.elSelection.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "toggleZooming",
+    value: function toggleZooming() {
+      this.toggleOtherControls();
+      this.w.globals.zoomEnabled = !this.w.globals.zoomEnabled;
+
+      if (!this.elZoom.classList.contains('selected')) {
+        this.elZoom.classList.add('selected');
+      } else {
+        this.elZoom.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "getToolbarIconsReference",
+    value: function getToolbarIconsReference() {
+      var w = this.w;
+
+      if (!this.elZoom) {
+        this.elZoom = w.globals.dom.baseEl.querySelector('.apexcharts-zoom-icon');
+      }
+
+      if (!this.elPan) {
+        this.elPan = w.globals.dom.baseEl.querySelector('.apexcharts-pan-icon');
+      }
+
+      if (!this.elSelection) {
+        this.elSelection = w.globals.dom.baseEl.querySelector('.apexcharts-selection-icon');
+      }
+    }
+  }, {
+    key: "enableZooming",
+    value: function enableZooming() {
+      this.toggleOtherControls();
+      this.w.globals.zoomEnabled = true;
+
+      if (this.elZoom) {
+        this.elZoom.classList.add('selected');
+      }
+
+      if (this.elPan) {
+        this.elPan.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "enablePanning",
+    value: function enablePanning() {
+      this.toggleOtherControls();
+      this.w.globals.panEnabled = true;
+
+      if (this.elPan) {
+        this.elPan.classList.add('selected');
+      }
+
+      if (this.elZoom) {
+        this.elZoom.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "togglePanning",
+    value: function togglePanning() {
+      this.toggleOtherControls();
+      this.w.globals.panEnabled = !this.w.globals.panEnabled;
+
+      if (!this.elPan.classList.contains('selected')) {
+        this.elPan.classList.add('selected');
+      } else {
+        this.elPan.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "toggleOtherControls",
+    value: function toggleOtherControls() {
+      var w = this.w;
+      w.globals.panEnabled = false;
+      w.globals.zoomEnabled = false;
+      w.globals.selectionEnabled = false;
+      this.getToolbarIconsReference();
+
+      if (this.elPan) {
+        this.elPan.classList.remove('selected');
+      }
+
+      if (this.elSelection) {
+        this.elSelection.classList.remove('selected');
+      }
+
+      if (this.elZoom) {
+        this.elZoom.classList.remove('selected');
+      }
+    }
+  }, {
+    key: "handleZoomIn",
+    value: function handleZoomIn() {
+      var w = this.w;
+      var centerX = (w.globals.minX + w.globals.maxX) / 2;
+      var newMinX = (w.globals.minX + centerX) / 2;
+      var newMaxX = (w.globals.maxX + centerX) / 2;
+
+      if (!w.globals.disableZoomIn) {
+        this.zoomUpdateOptions(newMinX, newMaxX);
+      }
+    }
+  }, {
+    key: "handleZoomOut",
+    value: function handleZoomOut() {
+      var w = this.w; // avoid zooming out beyond 1000 which may result in NaN values being printed on x-axis
+
+      if (w.config.xaxis.type === 'datetime' && new Date(w.globals.minX).getUTCFullYear() < 1000) {
+        return;
+      }
+
+      var centerX = (w.globals.minX + w.globals.maxX) / 2;
+      var newMinX = w.globals.minX - (centerX - w.globals.minX);
+      var newMaxX = w.globals.maxX - (centerX - w.globals.maxX);
+
+      if (!w.globals.disableZoomOut) {
+        this.zoomUpdateOptions(newMinX, newMaxX);
+      }
+    }
+  }, {
+    key: "zoomUpdateOptions",
+    value: function zoomUpdateOptions(newMinX, newMaxX) {
+      var xaxis = {
+        min: newMinX,
+        max: newMaxX
+      };
+      var beforeZoomRange = this.getBeforeZoomRange(xaxis);
+
+      if (beforeZoomRange) {
+        xaxis = beforeZoomRange.xaxis;
+      }
+
+      this.w.globals.zoomed = true;
+
+      this.ctx._updateOptions({
+        xaxis: xaxis
+      }, false, this.w.config.chart.animations.dynamicAnimation.enabled);
+
+      this.zoomCallback(xaxis);
+    }
+  }, {
+    key: "zoomCallback",
+    value: function zoomCallback(xaxis, yaxis) {
+      if (typeof this.ev.zoomed === 'function') {
+        this.ev.zoomed(this.ctx, {
+          xaxis: xaxis,
+          yaxis: yaxis
+        });
+      }
+    }
+  }, {
+    key: "getBeforeZoomRange",
+    value: function getBeforeZoomRange(xaxis, yaxis) {
+      var newRange = null;
+
+      if (typeof this.ev.beforeZoom === 'function') {
+        newRange = this.ev.beforeZoom(this, {
+          xaxis: xaxis,
+          yaxis: yaxis
+        });
+      }
+
+      return newRange;
+    }
+  }, {
+    key: "toggleMenu",
+    value: function toggleMenu() {
+      if (this.elMenu.classList.contains('open')) {
+        this.elMenu.classList.remove('open');
+      } else {
+        this.elMenu.classList.add('open');
+      }
+    }
+  }, {
+    key: "downloadPNG",
+    value: function downloadPNG() {
+      var downloadPNG = new Exports(this.ctx);
+      downloadPNG.exportToPng(this.ctx);
+      this.toggleMenu();
+    }
+  }, {
+    key: "downloadSVG",
+    value: function downloadSVG() {
+      var downloadSVG = new Exports(this.ctx);
+      downloadSVG.exportToSVG();
+      this.toggleMenu();
+    }
+  }, {
+    key: "handleZoomReset",
+    value: function handleZoomReset(e) {
+      var _this2 = this;
+
+      var charts = this.ctx.getSyncedCharts();
+      charts.forEach(function (ch) {
+        var w = ch.w;
+
+        if (w.globals.minX !== w.globals.initialminX && w.globals.maxX !== w.globals.initialmaxX) {
+          ch.revertDefaultAxisMinMax();
+
+          if (typeof w.config.chart.events.zoomed === 'function') {
+            _this2.zoomCallback({
+              min: w.config.xaxis.min,
+              max: w.config.xaxis.max
+            });
+          }
+
+          w.globals.zoomed = false;
+
+          ch._updateSeries(w.globals.initialSeries, w.config.chart.animations.dynamicAnimation.enabled);
+        }
+      });
+    }
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      if (this.elZoomReset) {
+        this.elZoomReset.removeEventListener('click', this.handleZoomReset.bind(this));
+        this.elSelection.removeEventListener('click', this.toggleSelection.bind(this));
+        this.elZoom.removeEventListener('click', this.toggleZooming.bind(this));
+        this.elZoomIn.removeEventListener('click', this.handleZoomIn.bind(this));
+        this.elZoomOut.removeEventListener('click', this.handleZoomOut.bind(this));
+        this.elPan.removeEventListener('click', this.togglePanning.bind(this));
+        this.elMenuIcon.removeEventListener('click', this.toggleMenu.bind(this));
+      }
+
+      this.elZoom = null;
+      this.elZoomIn = null;
+      this.elZoomOut = null;
+      this.elPan = null;
+      this.elSelection = null;
+      this.elZoomReset = null;
+      this.elMenuIcon = null;
+    }
+  }]);
+
+  return Toolbar;
+}();
+
+/**
+ * ApexCharts Zoom Class for handling zooming and panning on axes based charts.
+ *
+ * @module ZoomPanSelection
+ **/
+
+var ZoomPanSelection =
+/*#__PURE__*/
+function (_Toolbar) {
+  _inherits(ZoomPanSelection, _Toolbar);
+
+  function ZoomPanSelection(ctx) {
+    var _this;
+
+    _classCallCheck(this, ZoomPanSelection);
+
+    _this = _possibleConstructorReturn(this, _getPrototypeOf(ZoomPanSelection).call(this, ctx));
+    _this.ctx = ctx;
+    _this.w = ctx.w;
+    _this.dragged = false;
+    _this.graphics = new Graphics(_this.ctx);
+    _this.eventList = ['mousedown', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend'];
+    _this.clientX = 0;
+    _this.clientY = 0;
+    _this.startX = 0;
+    _this.endX = 0;
+    _this.dragX = 0;
+    _this.startY = 0;
+    _this.endY = 0;
+    _this.dragY = 0;
+    return _this;
+  }
+
+  _createClass(ZoomPanSelection, [{
+    key: "init",
+    value: function init(_ref) {
+      var _this2 = this;
+
+      var xyRatios = _ref.xyRatios;
+      var w = this.w;
+      var me = this;
+      this.xyRatios = xyRatios;
+      this.zoomRect = this.graphics.drawRect(0, 0, 0, 0);
+      this.selectionRect = this.graphics.drawRect(0, 0, 0, 0);
+      this.gridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid');
+      this.zoomRect.node.classList.add('apexcharts-zoom-rect');
+      this.selectionRect.node.classList.add('apexcharts-selection-rect');
+      w.globals.dom.elGraphical.add(this.zoomRect);
+      w.globals.dom.elGraphical.add(this.selectionRect);
+
+      if (w.config.chart.selection.type === 'x') {
+        this.slDraggableRect = this.selectionRect.draggable({
+          minX: 0,
+          minY: 0,
+          maxX: w.globals.gridWidth,
+          maxY: w.globals.gridHeight
+        }).on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+      } else if (w.config.chart.selection.type === 'y') {
+        this.slDraggableRect = this.selectionRect.draggable({
+          minX: 0,
+          maxX: w.globals.gridWidth
+        }).on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+      } else {
+        this.slDraggableRect = this.selectionRect.draggable().on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+      }
+
+      this.preselectedSelection();
+      this.hoverArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass);
+      this.hoverArea.classList.add('zoomable');
+      this.eventList.forEach(function (event) {
+        _this2.hoverArea.addEventListener(event, me.svgMouseEvents.bind(me, xyRatios), {
+          capture: false,
+          passive: true
+        });
+      });
+    } // remove the event listeners which were previously added on hover area
+
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      var _this3 = this;
+
+      var me = this;
+      this.eventList.forEach(function (event) {
+        if (_this3.hoverArea) {
+          _this3.hoverArea.removeEventListener(event, me.svgMouseEvents.bind(me, me.xyRatios), {
+            capture: false,
+            passive: true
+          });
+        }
+      });
+
+      if (this.slDraggableRect) {
+        this.slDraggableRect.draggable(false);
+        this.slDraggableRect.off();
+        this.selectionRect.off();
+      }
+
+      this.selectionRect = null;
+      this.zoomRect = null;
+      this.gridRect = null;
+    }
+  }, {
+    key: "svgMouseEvents",
+    value: function svgMouseEvents(xyRatios, e) {
+      var w = this.w;
+      var me = this;
+      var toolbar = this.ctx.toolbar;
+      var zoomtype = w.globals.zoomEnabled ? w.config.chart.zoom.type : w.config.chart.selection.type;
+
+      if (e.shiftKey) {
+        this.shiftWasPressed = true;
+        toolbar.enablePanning();
+      } else {
+        if (this.shiftWasPressed) {
+          toolbar.enableZooming();
+          this.shiftWasPressed = false;
+        }
+      }
+
+      var falsePositives = e.target.classList.contains('apexcharts-selection-rect') || e.target.parentNode.classList.contains('apexcharts-toolbar');
+      if (falsePositives) return;
+      me.clientX = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientX : e.type === 'touchend' ? e.changedTouches[0].clientX : e.clientX;
+      me.clientY = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientY : e.type === 'touchend' ? e.changedTouches[0].clientY : e.clientY;
+
+      if (e.type === 'mousedown' && e.which === 1) {
+        var gridRectDim = me.gridRect.getBoundingClientRect();
+        me.startX = me.clientX - gridRectDim.left;
+        me.startY = me.clientY - gridRectDim.top;
+        me.dragged = false;
+        me.w.globals.mousedown = true;
+      }
+
+      if (e.type === 'mousemove' && e.which === 1 || e.type === 'touchmove') {
+        me.dragged = true;
+
+        if (w.globals.panEnabled) {
+          w.globals.selection = null;
+
+          if (me.w.globals.mousedown) {
+            me.panDragging({
+              context: me,
+              zoomtype: zoomtype,
+              xyRatios: xyRatios
+            });
+          }
+        } else {
+          if (me.w.globals.mousedown && w.globals.zoomEnabled || me.w.globals.mousedown && w.globals.selectionEnabled) {
+            me.selection = me.selectionDrawing({
+              context: me,
+              zoomtype: zoomtype
+            });
+          }
+        }
+      }
+
+      if (e.type === 'mouseup' || e.type === 'touchend') {
+        // we will be calling getBoundingClientRect on each mousedown/mousemove/mouseup
+        var _gridRectDim = me.gridRect.getBoundingClientRect();
+
+        if (me.w.globals.mousedown) {
+          // user released the drag, now do all the calculations
+          me.endX = me.clientX - _gridRectDim.left;
+          me.endY = me.clientY - _gridRectDim.top;
+          me.dragX = Math.abs(me.endX - me.startX);
+          me.dragY = Math.abs(me.endY - me.startY);
+
+          if (w.globals.zoomEnabled || w.globals.selectionEnabled) {
+            me.selectionDrawn({
+              context: me,
+              zoomtype: zoomtype
+            });
+          }
+        }
+
+        if (w.globals.zoomEnabled) {
+          me.hideSelectionRect(this.selectionRect);
+        }
+
+        me.dragged = false;
+        me.w.globals.mousedown = false;
+      }
+
+      this.makeSelectionRectDraggable();
+    }
+  }, {
+    key: "makeSelectionRectDraggable",
+    value: function makeSelectionRectDraggable() {
+      var w = this.w;
+      if (!this.selectionRect) return;
+      var rectDim = this.selectionRect.node.getBoundingClientRect();
+
+      if (rectDim.width > 0 && rectDim.height > 0) {
+        this.slDraggableRect.selectize().resize({
+          constraint: {
+            minX: 0,
+            minY: 0,
+            maxX: w.globals.gridWidth,
+            maxY: w.globals.gridHeight
+          }
+        }).on('resizing', this.selectionDragging.bind(this, 'resizing'));
+      }
+    }
+  }, {
+    key: "preselectedSelection",
+    value: function preselectedSelection() {
+      var w = this.w;
+      var xyRatios = this.xyRatios;
+
+      if (!w.globals.zoomEnabled) {
+        if (typeof w.globals.selection !== 'undefined' && w.globals.selection !== null) {
+          this.drawSelectionRect(w.globals.selection);
+        } else {
+          if (w.config.chart.selection.xaxis.min !== undefined && w.config.chart.selection.xaxis.max !== undefined) {
+            var x = (w.config.chart.selection.xaxis.min - w.globals.minX) / xyRatios.xRatio;
+            var width = w.globals.gridWidth - (w.globals.maxX - w.config.chart.selection.xaxis.max) / xyRatios.xRatio - x;
+            var selectionRect = {
+              x: x,
+              y: 0,
+              width: width,
+              height: w.globals.gridHeight,
+              translateX: 0,
+              translateY: 0,
+              selectionEnabled: true
+            };
+            this.drawSelectionRect(selectionRect);
+            this.makeSelectionRectDraggable();
+
+            if (typeof w.config.chart.events.selection === 'function') {
+              w.config.chart.events.selection(this.ctx, {
+                xaxis: {
+                  min: w.config.chart.selection.xaxis.min,
+                  max: w.config.chart.selection.xaxis.max
+                },
+                yaxis: {}
+              });
+            }
+          }
+        }
+      }
+    }
+  }, {
+    key: "drawSelectionRect",
+    value: function drawSelectionRect(_ref2) {
+      var x = _ref2.x,
+          y = _ref2.y,
+          width = _ref2.width,
+          height = _ref2.height,
+          translateX = _ref2.translateX,
+          translateY = _ref2.translateY;
+      var w = this.w;
+      var zoomRect = this.zoomRect;
+      var selectionRect = this.selectionRect;
+
+      if (this.dragged || w.globals.selection !== null) {
+        var scalingAttrs = {
+          transform: 'translate(' + translateX + ', ' + translateY + ')' // change styles based on zoom or selection
+          // zoom is Enabled and user has dragged, so draw blue rect
+
+        };
+
+        if (w.globals.zoomEnabled && this.dragged) {
+          zoomRect.attr({
+            x: x,
+            y: y,
+            width: width,
+            height: height,
+            fill: w.config.chart.zoom.zoomedArea.fill.color,
+            'fill-opacity': w.config.chart.zoom.zoomedArea.fill.opacity,
+            stroke: w.config.chart.zoom.zoomedArea.stroke.color,
+            'stroke-width': w.config.chart.zoom.zoomedArea.stroke.width,
+            'stroke-opacity': w.config.chart.zoom.zoomedArea.stroke.opacity
+          });
+          Graphics.setAttrs(zoomRect.node, scalingAttrs);
+        } // selection is enabled
+
+
+        if (w.globals.selectionEnabled) {
+          selectionRect.attr({
+            x: x,
+            y: y,
+            width: width > 0 ? width : 0,
+            height: height > 0 ? height : 0,
+            fill: w.config.chart.selection.fill.color,
+            'fill-opacity': w.config.chart.selection.fill.opacity,
+            stroke: w.config.chart.selection.stroke.color,
+            'stroke-width': w.config.chart.selection.stroke.width,
+            'stroke-dasharray': w.config.chart.selection.stroke.dashArray,
+            'stroke-opacity': w.config.chart.selection.stroke.opacity
+          });
+          Graphics.setAttrs(selectionRect.node, scalingAttrs);
+        }
+      }
+    }
+  }, {
+    key: "hideSelectionRect",
+    value: function hideSelectionRect(rect) {
+      if (rect) {
+        rect.attr({
+          x: 0,
+          y: 0,
+          width: 0,
+          height: 0
+        });
+      }
+    }
+  }, {
+    key: "selectionDrawing",
+    value: function selectionDrawing(_ref3) {
+      var context = _ref3.context,
+          zoomtype = _ref3.zoomtype;
+      var w = this.w;
+      var me = context;
+      var gridRectDim = this.gridRect.getBoundingClientRect();
+      var startX = me.startX - 1;
+      var startY = me.startY;
+      var selectionWidth = me.clientX - gridRectDim.left - startX;
+      var selectionHeight = me.clientY - gridRectDim.top - startY;
+      var translateX = 0;
+      var translateY = 0;
+      var selectionRect = {};
+
+      if (Math.abs(selectionWidth + startX) > w.globals.gridWidth || me.clientX - gridRectDim.left < 0) {
+        // user dragged the mouse outside drawing area
+        // TODO: test the selectionRect and make sure it doesn't crosses drawing area
+        me.hideSelectionRect(this.zoomRect);
+        me.dragged = false;
+        me.w.globals.mousedown = false;
+      } // inverse selection X
+
+
+      if (startX > me.clientX - gridRectDim.left) {
+        selectionWidth = Math.abs(selectionWidth);
+        translateX = -selectionWidth;
+      } // inverse selection Y
+
+
+      if (startY > me.clientY - gridRectDim.top) {
+        selectionHeight = Math.abs(selectionHeight);
+        translateY = -selectionHeight;
+      }
+
+      if (zoomtype === 'x') {
+        selectionRect = {
+          x: startX,
+          y: 0,
+          width: selectionWidth,
+          height: w.globals.gridHeight,
+          translateX: translateX,
+          translateY: 0
+        };
+      } else if (zoomtype === 'y') {
+        selectionRect = {
+          x: 0,
+          y: startY,
+          width: w.globals.gridWidth,
+          height: selectionHeight,
+          translateX: 0,
+          translateY: translateY
+        };
+      } else {
+        selectionRect = {
+          x: startX,
+          y: startY,
+          width: selectionWidth,
+          height: selectionHeight,
+          translateX: translateX,
+          translateY: translateY
+        };
+      }
+
+      me.drawSelectionRect(selectionRect);
+      me.selectionDragging('resizing');
+      return selectionRect;
+    }
+  }, {
+    key: "selectionDragging",
+    value: function selectionDragging(type, e) {
+      var _this4 = this;
+
+      var w = this.w;
+      var xyRatios = this.xyRatios;
+      var selRect = this.selectionRect;
+      var timerInterval = 0;
+
+      if (type === 'resizing') {
+        timerInterval = 30;
+      }
+
+      if (typeof w.config.chart.events.selection === 'function' && w.globals.selectionEnabled) {
+        // a small debouncer is required when resizing to avoid freezing the chart
+        clearTimeout(this.w.globals.selectionResizeTimer);
+        this.w.globals.selectionResizeTimer = window.setTimeout(function () {
+          var gridRectDim = _this4.gridRect.getBoundingClientRect();
+
+          var selectionRect = selRect.node.getBoundingClientRect();
+          var minX = w.globals.xAxisScale.niceMin + (selectionRect.left - gridRectDim.left) * xyRatios.xRatio;
+          var maxX = w.globals.xAxisScale.niceMin + (selectionRect.right - gridRectDim.left) * xyRatios.xRatio;
+          var minY = w.globals.yAxisScale[0].niceMin + (gridRectDim.bottom - selectionRect.bottom) * xyRatios.yRatio[0];
+          var maxY = w.globals.yAxisScale[0].niceMax - (selectionRect.top - gridRectDim.top) * xyRatios.yRatio[0];
+          w.config.chart.events.selection(_this4.ctx, {
+            xaxis: {
+              min: minX,
+              max: maxX
+            },
+            yaxis: {
+              min: minY,
+              max: maxY
+            }
+          });
+        }, timerInterval);
+      }
+    }
+  }, {
+    key: "selectionDrawn",
+    value: function selectionDrawn(_ref4) {
+      var context = _ref4.context,
+          zoomtype = _ref4.zoomtype;
+      var w = this.w;
+      var me = context;
+      var xyRatios = this.xyRatios;
+      var toolbar = this.ctx.toolbar;
+
+      if (me.startX > me.endX) {
+        var tempX = me.startX;
+        me.startX = me.endX;
+        me.endX = tempX;
+      }
+
+      if (me.startY > me.endY) {
+        var tempY = me.startY;
+        me.startY = me.endY;
+        me.endY = tempY;
+      }
+
+      var xLowestValue = w.globals.xAxisScale.niceMin + me.startX * xyRatios.xRatio;
+      var xHighestValue = w.globals.xAxisScale.niceMin + me.endX * xyRatios.xRatio; // TODO: we will consider the 1st y axis values here for getting highest and lowest y
+
+      var yHighestValue = [];
+      var yLowestValue = [];
+      w.config.yaxis.forEach(function (yaxe, index) {
+        yHighestValue.push(Math.floor(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.startY));
+        yLowestValue.push(Math.floor(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.endY));
+      });
+
+      if (me.dragged && (me.dragX > 10 || me.dragY > 10) && xLowestValue !== xHighestValue) {
+        if (w.globals.zoomEnabled) {
+          var yaxis = Utils.clone(w.config.yaxis); // before zooming in/out, store the last yaxis and xaxis range, so that when user hits the RESET button, we get the original range
+          // also - make sure user is not already zoomed in/out - otherwise we will store zoomed values in lastAxis
+
+          if (!w.globals.zoomed) {
+            w.globals.lastXAxis = Utils.clone(w.config.xaxis);
+            w.globals.lastYAxis = Utils.clone(w.config.yaxis);
+          }
+
+          var xaxis = {
+            min: xLowestValue,
+            max: xHighestValue
+          };
+
+          if (zoomtype === 'xy' || zoomtype === 'y') {
+            yaxis.forEach(function (yaxe, index) {
+              yaxis[index].min = yLowestValue[index];
+              yaxis[index].max = yHighestValue[index];
+            });
+          }
+
+          if (w.config.chart.zoom.autoScaleYaxis) {
+            var scale = new Range(me.ctx);
+            yaxis = scale.autoScaleY(me.ctx, {
+              xaxis: xaxis
+            });
+          }
+
+          if (toolbar) {
+            var beforeZoomRange = toolbar.getBeforeZoomRange(xaxis, yaxis);
+
+            if (beforeZoomRange) {
+              xaxis = beforeZoomRange.xaxis ? beforeZoomRange.xaxis : xaxis;
+              yaxis = beforeZoomRange.yaxis ? beforeZoomRange.yaxe : yaxis;
+            }
+          }
+
+          me.ctx._updateOptions({
+            xaxis: xaxis,
+            yaxis: yaxis
+          }, false, me.w.config.chart.animations.dynamicAnimation.enabled);
+
+          if (typeof w.config.chart.events.zoomed === 'function') {
+            toolbar.zoomCallback(xaxis, yaxis);
+          }
+
+          w.globals.zoomed = true;
+        } else if (w.globals.selectionEnabled) {
+          var _yaxis = null;
+          var _xaxis = null;
+          _xaxis = {
+            min: xLowestValue,
+            max: xHighestValue
+          };
+
+          if (zoomtype === 'xy' || zoomtype === 'y') {
+            _yaxis = Utils.clone(w.config.yaxis);
+
+            _yaxis.forEach(function (yaxe, index) {
+              _yaxis[index].min = yLowestValue[index];
+              _yaxis[index].max = yHighestValue[index];
+            });
+          }
+
+          w.globals.selection = me.selection;
+
+          if (typeof w.config.chart.events.selection === 'function') {
+            w.config.chart.events.selection(me.ctx, {
+              xaxis: _xaxis,
+              yaxis: _yaxis
+            });
+          }
+        }
+      }
+    }
+  }, {
+    key: "panDragging",
+    value: function panDragging(_ref5) {
+      var context = _ref5.context,
+          zoomtype = _ref5.zoomtype;
+      var w = this.w;
+      var me = context;
+      var moveDirection; // check to make sure there is data to compare against
+
+      if (typeof w.globals.lastClientPosition.x !== 'undefined') {
+        // get the change from last position to this position
+        var deltaX = w.globals.lastClientPosition.x - me.clientX;
+        var deltaY = w.globals.lastClientPosition.y - me.clientY; // check which direction had the highest amplitude and then figure out direction by checking if the value is greater or less than zero
+
+        if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0) {
+          moveDirection = 'left';
+        } else if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX < 0) {
+          moveDirection = 'right';
+        } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY > 0) {
+          moveDirection = 'up';
+        } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY < 0) {
+          moveDirection = 'down';
+        }
+      } // set the new last position to the current for next time (to get the position of drag)
+
+
+      w.globals.lastClientPosition = {
+        x: me.clientX,
+        y: me.clientY
+      };
+      var xLowestValue = w.globals.minX;
+      var xHighestValue = w.globals.maxX;
+      this.panScrolled(moveDirection, xLowestValue, xHighestValue);
+    }
+  }, {
+    key: "panScrolled",
+    value: function panScrolled(moveDirection, xLowestValue, xHighestValue) {
+      var w = this.w;
+      var xyRatios = this.xyRatios;
+      var yaxis = Utils.clone(w.config.yaxis);
+
+      if (moveDirection === 'left') {
+        xLowestValue = w.globals.minX + w.globals.gridWidth / 15 * xyRatios.xRatio;
+        xHighestValue = w.globals.maxX + w.globals.gridWidth / 15 * xyRatios.xRatio;
+      } else if (moveDirection === 'right') {
+        xLowestValue = w.globals.minX - w.globals.gridWidth / 15 * xyRatios.xRatio;
+        xHighestValue = w.globals.maxX - w.globals.gridWidth / 15 * xyRatios.xRatio;
+      }
+
+      if (xLowestValue < w.globals.initialminX || xHighestValue > w.globals.initialmaxX) {
+        xLowestValue = w.globals.minX;
+        xHighestValue = w.globals.maxX;
+      }
+
+      var xaxis = {
+        min: xLowestValue,
+        max: xHighestValue
+      };
+
+      if (w.config.chart.zoom.autoScaleYaxis) {
+        var scale = new Range(me.ctx);
+        yaxis = scale.autoScaleY(me.ctx, {
+          xaxis: xaxis
+        });
+      }
+
+      this.ctx._updateOptions({
+        xaxis: {
+          min: xLowestValue,
+          max: xHighestValue
+        },
+        yaxis: yaxis
+      }, false, false);
+
+      if (typeof w.config.chart.events.scrolled === 'function') {
+        w.config.chart.events.scrolled(this.ctx, {
+          xaxis: {
+            min: xLowestValue,
+            max: xHighestValue
+          }
+        });
+      }
+    }
+  }]);
+
+  return ZoomPanSelection;
+}(Toolbar);
+
+var TitleSubtitle =
+/*#__PURE__*/
+function () {
+  function TitleSubtitle(ctx) {
+    _classCallCheck(this, TitleSubtitle);
+
+    this.ctx = ctx;
+    this.w = ctx.w;
+  }
+
+  _createClass(TitleSubtitle, [{
+    key: "draw",
+    value: function draw() {
+      this.drawTitleSubtitle('title');
+      this.drawTitleSubtitle('subtitle');
+    }
+  }, {
+    key: "drawTitleSubtitle",
+    value: function drawTitleSubtitle(type) {
+      var w = this.w;
+      var tsConfig = type === 'title' ? w.config.title : w.config.subtitle;
+      var x = w.globals.svgWidth / 2;
+      var y = tsConfig.offsetY;
+      var textAnchor = 'middle';
+
+      if (tsConfig.align === 'left') {
+        x = 10;
+        textAnchor = 'start';
+      } else if (tsConfig.align === 'right') {
+        x = w.globals.svgWidth - 10;
+        textAnchor = 'end';
+      }
+
+      x = x + tsConfig.offsetX;
+      y = y + parseInt(tsConfig.style.fontSize) + 2;
+
+      if (tsConfig.text !== undefined) {
+        var graphics = new Graphics(this.ctx);
+        var titleText = graphics.drawText({
+          x: x,
+          y: y,
+          text: tsConfig.text,
+          textAnchor: textAnchor,
+          fontSize: tsConfig.style.fontSize,
+          fontFamily: tsConfig.style.fontFamily,
+          foreColor: tsConfig.style.color,
+          opacity: 1
+        });
+        titleText.node.setAttribute('class', "apexcharts-".concat(type, "-text"));
+        w.globals.dom.Paper.add(titleText);
+      }
+    }
+  }]);
+
+  return TitleSubtitle;
+}();
+
+(function (root, factory) {
+  /* istanbul ignore next */
+  if (typeof define === 'function' && define.amd) {
+    define(function () {
+      return factory(root, root.document);
+    });
+    /* below check fixes #412 */
+  } else if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof module !== 'undefined') {
+    module.exports = root.document ? factory(root, root.document) : function (w) {
+      return factory(w, w.document);
+    };
+  } else {
+    root.SVG = factory(root, root.document);
+  }
+})(typeof window !== 'undefined' ? window : undefined, function (window, document) {
+  // Find global reference - uses 'this' by default when available,
+  // falls back to 'window' otherwise (for bundlers like Webpack)
+  var globalRef = typeof this !== 'undefined' ? this : window; // The main wrapping element
+
+  var SVG = globalRef.SVG = function (element) {
+    if (SVG.supported) {
+      element = new SVG.Doc(element);
+
+      if (!SVG.parser.draw) {
+        SVG.prepare();
+      }
+
+      return element;
+    }
+  }; // Default namespaces
+
+
+  SVG.ns = 'http://www.w3.org/2000/svg';
+  SVG.xmlns = 'http://www.w3.org/2000/xmlns/';
+  SVG.xlink = 'http://www.w3.org/1999/xlink';
+  SVG.svgjs = 'http://svgjs.com/svgjs'; // Svg support test
+
+  SVG.supported = function () {
+    return true; // !!document.createElementNS &&
+    //     !! document.createElementNS(SVG.ns,'svg').createSVGRect
+  }(); // Don't bother to continue if SVG is not supported
+
+
+  if (!SVG.supported) return false; // Element id sequence
+
+  SVG.did = 1000; // Get next named element id
+
+  SVG.eid = function (name) {
+    return 'Svgjs' + capitalize(name) + SVG.did++;
+  }; // Method for element creation
+
+
+  SVG.create = function (name) {
+    // create element
+    var element = document.createElementNS(this.ns, name); // apply unique id
+
+    element.setAttribute('id', this.eid(name));
+    return element;
+  }; // Method for extending objects
+
+
+  SVG.extend = function () {
+    var modules, methods, key, i; // Get list of modules
+
+    modules = [].slice.call(arguments); // Get object with extensions
+
+    methods = modules.pop();
+
+    for (i = modules.length - 1; i >= 0; i--) {
+      if (modules[i]) {
+        for (key in methods) {
+          modules[i].prototype[key] = methods[key];
+        }
+      }
+    } // Make sure SVG.Set inherits any newly added methods
+
+
+    if (SVG.Set && SVG.Set.inherit) {
+      SVG.Set.inherit();
+    }
+  }; // Invent new element
+
+
+  SVG.invent = function (config) {
+    // Create element initializer
+    var initializer = typeof config.create === 'function' ? config.create : function () {
+      this.constructor.call(this, SVG.create(config.create));
+    }; // Inherit prototype
+
+    if (config.inherit) {
+      initializer.prototype = new config.inherit();
+    } // Extend with methods
+
+
+    if (config.extend) {
+      SVG.extend(initializer, config.extend);
+    } // Attach construct method to parent
+
+
+    if (config.construct) {
+      SVG.extend(config.parent || SVG.Container, config.construct);
+    }
+
+    return initializer;
+  }; // Adopt existing svg elements
+
+
+  SVG.adopt = function (node) {
+    // check for presence of node
+    if (!node) return null; // make sure a node isn't already adopted
+
+    if (node.instance) return node.instance; // initialize variables
+
+    var element; // adopt with element-specific settings
+
+    if (node.nodeName == 'svg') {
+      element = node.parentNode instanceof window.SVGElement ? new SVG.Nested() : new SVG.Doc();
+    } else if (node.nodeName == 'linearGradient') {
+      element = new SVG.Gradient('linear');
+    } else if (node.nodeName == 'radialGradient') {
+      element = new SVG.Gradient('radial');
+    } else if (SVG[capitalize(node.nodeName)]) {
+      element = new SVG[capitalize(node.nodeName)]();
+    } else {
+      element = new SVG.Element(node);
+    } // ensure references
+
+
+    element.type = node.nodeName;
+    element.node = node;
+    node.instance = element; // SVG.Class specific preparations
+
+    if (element instanceof SVG.Doc) {
+      element.namespace().defs();
+    } // pull svgjs data from the dom (getAttributeNS doesn't work in html5)
+
+
+    element.setData(JSON.parse(node.getAttribute('svgjs:data')) || {});
+    return element;
+  }; // Initialize parsing element
+
+
+  SVG.prepare = function () {
+    // Select document body and create invisible svg element
+    var body = document.getElementsByTagName('body')[0],
+        draw = (body ? new SVG.Doc(body) : SVG.adopt(document.documentElement).nested()).size(2, 0); // Create parser object
+
+    SVG.parser = {
+      body: body || document.documentElement,
+      draw: draw.style('opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden').node,
+      poly: draw.polyline().node,
+      path: draw.path().node,
+      native: SVG.create('svg')
+    };
+  };
+
+  SVG.parser = {
+    native: SVG.create('svg')
+  };
+  document.addEventListener('DOMContentLoaded', function () {
+    if (!SVG.parser.draw) {
+      SVG.prepare();
+    }
+  }, false); // Storage for regular expressions
+
+  SVG.regex = {
+    // Parse unit value
+    numberAndUnit: /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,
+    // Parse hex value
+    hex: /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,
+    // Parse rgb value
+    rgb: /rgb\((\d+),(\d+),(\d+)\)/,
+    // Parse reference id
+    reference: /#([a-z0-9\-_]+)/i,
+    // splits a transformation chain
+    transforms: /\)\s*,?\s*/,
+    // Whitespace
+    whitespace: /\s/g,
+    // Test hex value
+    isHex: /^#[a-f0-9]{3,6}$/i,
+    // Test rgb value
+    isRgb: /^rgb\(/,
+    // Test css declaration
+    isCss: /[^:]+:[^;]+;?/,
+    // Test for blank string
+    isBlank: /^(\s+)?$/,
+    // Test for numeric string
+    isNumber: /^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,
+    // Test for percent value
+    isPercent: /^-?[\d\.]+%$/,
+    // Test for image url
+    isImage: /\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,
+    // split at whitespace and comma
+    delimiter: /[\s,]+/,
+    // The following regex are used to parse the d attribute of a path
+    // Matches all hyphens which are not after an exponent
+    hyphen: /([^e])\-/gi,
+    // Replaces and tests for all path letters
+    pathLetters: /[MLHVCSQTAZ]/gi,
+    // yes we need this one, too
+    isPathLetter: /[MLHVCSQTAZ]/i,
+    // matches 0.154.23.45
+    numbersWithDots: /((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,
+    // matches .
+    dots: /\./g
+  };
+  SVG.utils = {
+    // Map function
+    map: function map(array, block) {
+      var i,
+          il = array.length,
+          result = [];
+
+      for (i = 0; i < il; i++) {
+        result.push(block(array[i]));
+      }
+
+      return result;
+    },
+    // Filter function
+    filter: function filter(array, block) {
+      var i,
+          il = array.length,
+          result = [];
+
+      for (i = 0; i < il; i++) {
+        if (block(array[i])) {
+          result.push(array[i]);
+        }
+      }
+
+      return result;
+    },
+    // Degrees to radians
+    radians: function radians(d) {
+      return d % 360 * Math.PI / 180;
+    },
+    // Radians to degrees
+    degrees: function degrees(r) {
+      return r * 180 / Math.PI % 360;
+    },
+    filterSVGElements: function filterSVGElements(nodes) {
+      return this.filter(nodes, function (el) {
+        return el instanceof window.SVGElement;
+      });
+    }
+  };
+  SVG.defaults = {
+    // Default attribute values
+    attrs: {
+      // fill and stroke
+      'fill-opacity': 1,
+      'stroke-opacity': 1,
+      'stroke-width': 0,
+      'stroke-linejoin': 'miter',
+      'stroke-linecap': 'butt',
+      fill: '#000000',
+      stroke: '#000000',
+      opacity: 1,
+      // position
+      x: 0,
+      y: 0,
+      cx: 0,
+      cy: 0,
+      // size
+      width: 0,
+      height: 0,
+      // radius
+      r: 0,
+      rx: 0,
+      ry: 0,
+      // gradient
+      offset: 0,
+      'stop-opacity': 1,
+      'stop-color': '#000000',
+      // text
+      'font-size': 16,
+      'font-family': 'Helvetica, Arial, sans-serif',
+      'text-anchor': 'start'
+    } // Module for color convertions
+
+  };
+
+  SVG.Color = function (color) {
+    var match; // initialize defaults
+
+    this.r = 0;
+    this.g = 0;
+    this.b = 0;
+    if (!color) return; // parse color
+
+    if (typeof color === 'string') {
+      if (SVG.regex.isRgb.test(color)) {
+        // get rgb values
+        match = SVG.regex.rgb.exec(color.replace(SVG.regex.whitespace, '')); // parse numeric values
+
+        this.r = parseInt(match[1]);
+        this.g = parseInt(match[2]);
+        this.b = parseInt(match[3]);
+      } else if (SVG.regex.isHex.test(color)) {
+        // get hex values
+        match = SVG.regex.hex.exec(fullHex(color)); // parse numeric values
+
+        this.r = parseInt(match[1], 16);
+        this.g = parseInt(match[2], 16);
+        this.b = parseInt(match[3], 16);
+      }
+    } else if (_typeof(color) === 'object') {
+      this.r = color.r;
+      this.g = color.g;
+      this.b = color.b;
+    }
+  };
+
+  SVG.extend(SVG.Color, {
+    // Default to hex conversion
+    toString: function toString() {
+      return this.toHex();
+    },
+    // Build hex value
+    toHex: function toHex() {
+      return '#' + compToHex(this.r) + compToHex(this.g) + compToHex(this.b);
+    },
+    // Build rgb value
+    toRgb: function toRgb() {
+      return 'rgb(' + [this.r, this.g, this.b].join() + ')';
+    },
+    // Calculate true brightness
+    brightness: function brightness() {
+      return this.r / 255 * 0.30 + this.g / 255 * 0.59 + this.b / 255 * 0.11;
+    },
+    // Make color morphable
+    morph: function morph(color) {
+      this.destination = new SVG.Color(color);
+      return this;
+    },
+    // Get morphed color at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this; // normalise pos
+
+      pos = pos < 0 ? 0 : pos > 1 ? 1 : pos; // generate morphed color
+
+      return new SVG.Color({
+        r: ~~(this.r + (this.destination.r - this.r) * pos),
+        g: ~~(this.g + (this.destination.g - this.g) * pos),
+        b: ~~(this.b + (this.destination.b - this.b) * pos)
+      });
+    }
+  }); // Testers
+  // Test if given value is a color string
+
+  SVG.Color.test = function (color) {
+    color += '';
+    return SVG.regex.isHex.test(color) || SVG.regex.isRgb.test(color);
+  }; // Test if given value is a rgb object
+
+
+  SVG.Color.isRgb = function (color) {
+    return color && typeof color.r === 'number' && typeof color.g === 'number' && typeof color.b === 'number';
+  }; // Test if given value is a color
+
+
+  SVG.Color.isColor = function (color) {
+    return SVG.Color.isRgb(color) || SVG.Color.test(color);
+  }; // Module for array conversion
+
+
+  SVG.Array = function (array, fallback) {
+    array = (array || []).valueOf(); // if array is empty and fallback is provided, use fallback
+
+    if (array.length == 0 && fallback) {
+      array = fallback.valueOf();
+    } // parse array
+
+
+    this.value = this.parse(array);
+  };
+
+  SVG.extend(SVG.Array, {
+    // Make array morphable
+    morph: function morph(array) {
+      this.destination = this.parse(array); // normalize length of arrays
+
+      if (this.value.length != this.destination.length) {
+        var lastValue = this.value[this.value.length - 1],
+            lastDestination = this.destination[this.destination.length - 1];
+
+        while (this.value.length > this.destination.length) {
+          this.destination.push(lastDestination);
+        }
+
+        while (this.value.length < this.destination.length) {
+          this.value.push(lastValue);
+        }
+      }
+
+      return this;
+    },
+    // Clean up any duplicate points
+    settle: function settle() {
+      // find all unique values
+      for (var i = 0, il = this.value.length, seen = []; i < il; i++) {
+        if (seen.indexOf(this.value[i]) == -1) {
+          seen.push(this.value[i]);
+        }
+      } // set new value
+
+
+      return this.value = seen;
+    },
+    // Get morphed array at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this; // generate morphed array
+
+      for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+        array.push(this.value[i] + (this.destination[i] - this.value[i]) * pos);
+      }
+
+      return new SVG.Array(array);
+    },
+    // Convert array to string
+    toString: function toString() {
+      return this.value.join(' ');
+    },
+    // Real value
+    valueOf: function valueOf() {
+      return this.value;
+    },
+    // Parse whitespace separated string
+    parse: function parse(array) {
+      array = array.valueOf(); // if already is an array, no need to parse it
+
+      if (Array.isArray(array)) return array;
+      return this.split(array);
+    },
+    // Strip unnecessary whitespace
+    split: function split(string) {
+      return string.trim().split(SVG.regex.delimiter).map(parseFloat);
+    },
+    // Reverse array
+    reverse: function reverse() {
+      this.value.reverse();
+      return this;
+    },
+    clone: function clone() {
+      var clone = new this.constructor();
+      clone.value = array_clone(this.value);
+      return clone;
+    }
+  }); // Poly points array
+
+  SVG.PointArray = function (array, fallback) {
+    SVG.Array.call(this, array, fallback || [[0, 0]]);
+  }; // Inherit from SVG.Array
+
+
+  SVG.PointArray.prototype = new SVG.Array();
+  SVG.PointArray.prototype.constructor = SVG.PointArray;
+  SVG.extend(SVG.PointArray, {
+    // Convert array to string
+    toString: function toString() {
+      // convert to a poly point string
+      for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+        array.push(this.value[i].join(','));
+      }
+
+      return array.join(' ');
+    },
+    // Convert array to line object
+    toLine: function toLine() {
+      return {
+        x1: this.value[0][0],
+        y1: this.value[0][1],
+        x2: this.value[1][0],
+        y2: this.value[1][1]
+      };
+    },
+    // Get morphed array at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this; // generate morphed point string
+
+      for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+        array.push([this.value[i][0] + (this.destination[i][0] - this.value[i][0]) * pos, this.value[i][1] + (this.destination[i][1] - this.value[i][1]) * pos]);
+      }
+
+      return new SVG.PointArray(array);
+    },
+    // Parse point string and flat array
+    parse: function parse(array) {
+      var points = [];
+      array = array.valueOf(); // if it is an array
+
+      if (Array.isArray(array)) {
+        // and it is not flat, there is no need to parse it
+        if (Array.isArray(array[0])) {
+          // make sure to use a clone
+          return array.map(function (el) {
+            return el.slice();
+          });
+        } else if (array[0].x != null) {
+          // allow point objects to be passed
+          return array.map(function (el) {
+            return [el.x, el.y];
+          });
+        }
+      } else {
+        // Else, it is considered as a string
+        // parse points
+        array = array.trim().split(SVG.regex.delimiter).map(parseFloat);
+      } // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints
+      // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.
+
+
+      if (array.length % 2 !== 0) array.pop(); // wrap points in two-tuples and parse points as floats
+
+      for (var i = 0, len = array.length; i < len; i = i + 2) {
+        points.push([array[i], array[i + 1]]);
+      }
+
+      return points;
+    },
+    // Move point string
+    move: function move(x, y) {
+      var box = this.bbox(); // get relative offset
+
+      x -= box.x;
+      y -= box.y; // move every point
+
+      if (!isNaN(x) && !isNaN(y)) {
+        for (var i = this.value.length - 1; i >= 0; i--) {
+          this.value[i] = [this.value[i][0] + x, this.value[i][1] + y];
+        }
+      }
+
+      return this;
+    },
+    // Resize poly string
+    size: function size(width, height) {
+      var i,
+          box = this.bbox(); // recalculate position of all points according to new size
+
+      for (i = this.value.length - 1; i >= 0; i--) {
+        if (box.width) this.value[i][0] = (this.value[i][0] - box.x) * width / box.width + box.x;
+        if (box.height) this.value[i][1] = (this.value[i][1] - box.y) * height / box.height + box.y;
+      }
+
+      return this;
+    },
+    // Get bounding box of points
+    bbox: function bbox() {
+      if (!SVG.parser.draw) {
+        SVG.prepare();
+      }
+
+      SVG.parser.poly.setAttribute('points', this.toString());
+      return SVG.parser.poly.getBBox();
+    }
+  });
+  var pathHandlers = {
+    M: function M(c, p, p0) {
+      p.x = p0.x = c[0];
+      p.y = p0.y = c[1];
+      return ['M', p.x, p.y];
+    },
+    L: function L(c, p) {
+      p.x = c[0];
+      p.y = c[1];
+      return ['L', c[0], c[1]];
+    },
+    H: function H(c, p) {
+      p.x = c[0];
+      return ['H', c[0]];
+    },
+    V: function V(c, p) {
+      p.y = c[0];
+      return ['V', c[0]];
+    },
+    C: function C(c, p) {
+      p.x = c[4];
+      p.y = c[5];
+      return ['C', c[0], c[1], c[2], c[3], c[4], c[5]];
+    },
+    S: function S(c, p) {
+      p.x = c[2];
+      p.y = c[3];
+      return ['S', c[0], c[1], c[2], c[3]];
+    },
+    Q: function Q(c, p) {
+      p.x = c[2];
+      p.y = c[3];
+      return ['Q', c[0], c[1], c[2], c[3]];
+    },
+    T: function T(c, p) {
+      p.x = c[0];
+      p.y = c[1];
+      return ['T', c[0], c[1]];
+    },
+    Z: function Z(c, p, p0) {
+      p.x = p0.x;
+      p.y = p0.y;
+      return ['Z'];
+    },
+    A: function A(c, p) {
+      p.x = c[5];
+      p.y = c[6];
+      return ['A', c[0], c[1], c[2], c[3], c[4], c[5], c[6]];
+    }
+  };
+  var mlhvqtcsa = 'mlhvqtcsaz'.split('');
+
+  for (var i = 0, il = mlhvqtcsa.length; i < il; ++i) {
+    pathHandlers[mlhvqtcsa[i]] = function (i) {
+      return function (c, p, p0) {
+        if (i == 'H') c[0] = c[0] + p.x;else if (i == 'V') c[0] = c[0] + p.y;else if (i == 'A') {
+          c[5] = c[5] + p.x, c[6] = c[6] + p.y;
+        } else {
+          for (var j = 0, jl = c.length; j < jl; ++j) {
+            c[j] = c[j] + (j % 2 ? p.y : p.x);
+          }
+        }
+        return pathHandlers[i](c, p, p0);
+      };
+    }(mlhvqtcsa[i].toUpperCase());
+  } // Path points array
+
+
+  SVG.PathArray = function (array, fallback) {
+    SVG.Array.call(this, array, fallback || [['M', 0, 0]]);
+  }; // Inherit from SVG.Array
+
+
+  SVG.PathArray.prototype = new SVG.Array();
+  SVG.PathArray.prototype.constructor = SVG.PathArray;
+  SVG.extend(SVG.PathArray, {
+    // Convert array to string
+    toString: function toString() {
+      return arrayToString(this.value);
+    },
+    // Move path string
+    move: function move(x, y) {
+      // get bounding box of current situation
+      var box = this.bbox(); // get relative offset
+
+      x -= box.x;
+      y -= box.y;
+
+      if (!isNaN(x) && !isNaN(y)) {
+        // move every point
+        for (var l, i = this.value.length - 1; i >= 0; i--) {
+          l = this.value[i][0];
+
+          if (l == 'M' || l == 'L' || l == 'T') {
+            this.value[i][1] += x;
+            this.value[i][2] += y;
+          } else if (l == 'H') {
+            this.value[i][1] += x;
+          } else if (l == 'V') {
+            this.value[i][1] += y;
+          } else if (l == 'C' || l == 'S' || l == 'Q') {
+            this.value[i][1] += x;
+            this.value[i][2] += y;
+            this.value[i][3] += x;
+            this.value[i][4] += y;
+
+            if (l == 'C') {
+              this.value[i][5] += x;
+              this.value[i][6] += y;
+            }
+          } else if (l == 'A') {
+            this.value[i][6] += x;
+            this.value[i][7] += y;
+          }
+        }
+      }
+
+      return this;
+    },
+    // Resize path string
+    size: function size(width, height) {
+      // get bounding box of current situation
+      var i,
+          l,
+          box = this.bbox(); // recalculate position of all points according to new size
+
+      for (i = this.value.length - 1; i >= 0; i--) {
+        l = this.value[i][0];
+
+        if (l == 'M' || l == 'L' || l == 'T') {
+          this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+          this.value[i][2] = (this.value[i][2] - box.y) * height / box.height + box.y;
+        } else if (l == 'H') {
+          this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+        } else if (l == 'V') {
+          this.value[i][1] = (this.value[i][1] - box.y) * height / box.height + box.y;
+        } else if (l == 'C' || l == 'S' || l == 'Q') {
+          this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+          this.value[i][2] = (this.value[i][2] - box.y) * height / box.height + box.y;
+          this.value[i][3] = (this.value[i][3] - box.x) * width / box.width + box.x;
+          this.value[i][4] = (this.value[i][4] - box.y) * height / box.height + box.y;
+
+          if (l == 'C') {
+            this.value[i][5] = (this.value[i][5] - box.x) * width / box.width + box.x;
+            this.value[i][6] = (this.value[i][6] - box.y) * height / box.height + box.y;
+          }
+        } else if (l == 'A') {
+          // resize radii
+          this.value[i][1] = this.value[i][1] * width / box.width;
+          this.value[i][2] = this.value[i][2] * height / box.height; // move position values
+
+          this.value[i][6] = (this.value[i][6] - box.x) * width / box.width + box.x;
+          this.value[i][7] = (this.value[i][7] - box.y) * height / box.height + box.y;
+        }
+      }
+
+      return this;
+    },
+    // Test if the passed path array use the same path data commands as this path array
+    equalCommands: function equalCommands(pathArray) {
+      var i, il, equalCommands;
+      pathArray = new SVG.PathArray(pathArray);
+      equalCommands = this.value.length === pathArray.value.length;
+
+      for (i = 0, il = this.value.length; equalCommands && i < il; i++) {
+        equalCommands = this.value[i][0] === pathArray.value[i][0];
+      }
+
+      return equalCommands;
+    },
+    // Make path array morphable
+    morph: function morph(pathArray) {
+      pathArray = new SVG.PathArray(pathArray);
+
+      if (this.equalCommands(pathArray)) {
+        this.destination = pathArray;
+      } else {
+        this.destination = null;
+      }
+
+      return this;
+    },
+    // Get morphed path array at given position
+    at: function at(pos) {
+      // make sure a destination is defined
+      if (!this.destination) return this;
+      var sourceArray = this.value,
+          destinationArray = this.destination.value,
+          array = [],
+          pathArray = new SVG.PathArray(),
+          i,
+          il,
+          j,
+          jl; // Animate has specified in the SVG spec
+      // See: https://www.w3.org/TR/SVG11/paths.html#PathElement
+
+      for (i = 0, il = sourceArray.length; i < il; i++) {
+        array[i] = [sourceArray[i][0]];
+
+        for (j = 1, jl = sourceArray[i].length; j < jl; j++) {
+          array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos;
+        } // For the two flags of the elliptical arc command, the SVG spec say:
+        // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true
+        // Elliptical arc command as an array followed by corresponding indexes:
+        // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]
+        //   0    1   2        3                 4             5      6  7
+
+
+        if (array[i][0] === 'A') {
+          array[i][4] = +(array[i][4] != 0);
+          array[i][5] = +(array[i][5] != 0);
+        }
+      } // Directly modify the value of a path array, this is done this way for performance
+
+
+      pathArray.value = array;
+      return pathArray;
+    },
+    // Absolutize and parse path to array
+    parse: function parse(array) {
+      // if it's already a patharray, no need to parse it
+      if (array instanceof SVG.PathArray) return array.valueOf(); // prepare for parsing
+
+      var s,
+          arr,
+          paramCnt = {
+        'M': 2,
+        'L': 2,
+        'H': 1,
+        'V': 1,
+        'C': 6,
+        'S': 4,
+        'Q': 4,
+        'T': 2,
+        'A': 7,
+        'Z': 0
+      };
+
+      if (typeof array === 'string') {
+        array = array.replace(SVG.regex.numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123
+        .replace(SVG.regex.pathLetters, ' $& ') // put some room between letters and numbers
+        .replace(SVG.regex.hyphen, '$1 -') // add space before hyphen
+        .trim() // trim
+        .split(SVG.regex.delimiter); // split into array
+      } else {
+        array = array.reduce(function (prev, curr) {
+          return [].concat.call(prev, curr);
+        }, []);
+      } // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...]
+
+
+      var arr = [],
+          p = new SVG.Point(),
+          p0 = new SVG.Point(),
+          index = 0,
+          len = array.length;
+
+      do {
+        // Test if we have a path letter
+        if (SVG.regex.isPathLetter.test(array[index])) {
+          s = array[index];
+          ++index; // If last letter was a move command and we got no new, it defaults to [L]ine
+        } else if (s == 'M') {
+          s = 'L';
+        } else if (s == 'm') {
+          s = 'l';
+        }
+
+        arr.push(pathHandlers[s].call(null, array.slice(index, index = index + paramCnt[s.toUpperCase()]).map(parseFloat), p, p0));
+      } while (len > index);
+
+      return arr;
+    },
+    // Get bounding box of path
+    bbox: function bbox() {
+      if (!SVG.parser.draw) {
+        SVG.prepare();
+      }
+
+      SVG.parser.path.setAttribute('d', this.toString());
+      return SVG.parser.path.getBBox();
+    }
+  }); // Module for unit convertions
+
+  SVG.Number = SVG.invent({
+    // Initialize
+    create: function create(value, unit) {
+      // initialize defaults
+      this.value = 0;
+      this.unit = unit || ''; // parse value
+
+      if (typeof value === 'number') {
+        // ensure a valid numeric value
+        this.value = isNaN(value) ? 0 : !isFinite(value) ? value < 0 ? -3.4e+38 : +3.4e+38 : value;
+      } else if (typeof value === 'string') {
+        unit = value.match(SVG.regex.numberAndUnit);
+
+        if (unit) {
+          // make value numeric
+          this.value = parseFloat(unit[1]); // normalize
+
+          if (unit[5] == '%') {
+            this.value /= 100;
+          } else if (unit[5] == 's') {
+            this.value *= 1000;
+          } // store unit
+
+
+          this.unit = unit[5];
+        }
+      } else {
+        if (value instanceof SVG.Number) {
+          this.value = value.valueOf();
+          this.unit = value.unit;
+        }
+      }
+    },
+    // Add methods
+    extend: {
+      // Stringalize
+      toString: function toString() {
+        return (this.unit == '%' ? ~~(this.value * 1e8) / 1e6 : this.unit == 's' ? this.value / 1e3 : this.value) + this.unit;
+      },
+      toJSON: function toJSON() {
+        return this.toString();
+      },
+      // Convert to primitive
+      valueOf: function valueOf() {
+        return this.value;
+      },
+      // Add number
+      plus: function plus(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this + number, this.unit || number.unit);
+      },
+      // Subtract number
+      minus: function minus(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this - number, this.unit || number.unit);
+      },
+      // Multiply number
+      times: function times(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this * number, this.unit || number.unit);
+      },
+      // Divide number
+      divide: function divide(number) {
+        number = new SVG.Number(number);
+        return new SVG.Number(this / number, this.unit || number.unit);
+      },
+      // Convert to different unit
+      to: function to(unit) {
+        var number = new SVG.Number(this);
+
+        if (typeof unit === 'string') {
+          number.unit = unit;
+        }
+
+        return number;
+      },
+      // Make number morphable
+      morph: function morph(number) {
+        this.destination = new SVG.Number(number);
+
+        if (number.relative) {
+          this.destination.value += this.value;
+        }
+
+        return this;
+      },
+      // Get morphed number at given position
+      at: function at(pos) {
+        // Make sure a destination is defined
+        if (!this.destination) return this; // Generate new morphed number
+
+        return new SVG.Number(this.destination).minus(this).times(pos).plus(this);
+      }
+    }
+  });
+  SVG.Element = SVG.invent({
+    // Initialize node
+    create: function create(node) {
+      // make stroke value accessible dynamically
+      this._stroke = SVG.defaults.attrs.stroke;
+      this._event = null; // initialize data object
+
+      this.dom = {}; // create circular reference
+
+      if (this.node = node) {
+        this.type = node.nodeName;
+        this.node.instance = this; // store current attribute value
+
+        this._stroke = node.getAttribute('stroke') || this._stroke;
+      }
+    },
+    // Add class methods
+    extend: {
+      // Move over x-axis
+      x: function x(_x) {
+        return this.attr('x', _x);
+      },
+      // Move over y-axis
+      y: function y(_y) {
+        return this.attr('y', _y);
+      },
+      // Move by center over x-axis
+      cx: function cx(x) {
+        return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2);
+      },
+      // Move by center over y-axis
+      cy: function cy(y) {
+        return y == null ? this.y() + this.height() / 2 : this.y(y - this.height() / 2);
+      },
+      // Move element to given x and y values
+      move: function move(x, y) {
+        return this.x(x).y(y);
+      },
+      // Move element by its center
+      center: function center(x, y) {
+        return this.cx(x).cy(y);
+      },
+      // Set width of element
+      width: function width(_width) {
+        return this.attr('width', _width);
+      },
+      // Set height of element
+      height: function height(_height) {
+        return this.attr('height', _height);
+      },
+      // Set element size to given width and height
+      size: function size(width, height) {
+        var p = proportionalSize(this, width, height);
+        return this.width(new SVG.Number(p.width)).height(new SVG.Number(p.height));
+      },
+      // Clone element
+      clone: function clone(parent) {
+        // write dom data to the dom so the clone can pickup the data
+        this.writeDataToDom(); // clone element and assign new id
+
+        var clone = assignNewId(this.node.cloneNode(true)); // insert the clone in the given parent or after myself
+
+        if (parent) parent.add(clone);else this.after(clone);
+        return clone;
+      },
+      // Remove element
+      remove: function remove() {
+        if (this.parent()) {
+          this.parent().removeElement(this);
+        }
+
+        return this;
+      },
+      // Replace element
+      replace: function replace(element) {
+        this.after(element).remove();
+        return element;
+      },
+      // Add element to given container and return self
+      addTo: function addTo(parent) {
+        return parent.put(this);
+      },
+      // Add element to given container and return container
+      putIn: function putIn(parent) {
+        return parent.add(this);
+      },
+      // Get / set id
+      id: function id(_id) {
+        return this.attr('id', _id);
+      },
+      // Checks whether the given point inside the bounding box of the element
+      inside: function inside(x, y) {
+        var box = this.bbox();
+        return x > box.x && y > box.y && x < box.x + box.width && y < box.y + box.height;
+      },
+      // Show element
+      show: function show() {
+        return this.style('display', '');
+      },
+      // Hide element
+      hide: function hide() {
+        return this.style('display', 'none');
+      },
+      // Is element visible?
+      visible: function visible() {
+        return this.style('display') != 'none';
+      },
+      // Return id on string conversion
+      toString: function toString() {
+        return this.attr('id');
+      },
+      // Return array of classes on the node
+      classes: function classes() {
+        var attr = this.attr('class');
+        return attr == null ? [] : attr.trim().split(SVG.regex.delimiter);
+      },
+      // Return true if class exists on the node, false otherwise
+      hasClass: function hasClass(name) {
+        return this.classes().indexOf(name) != -1;
+      },
+      // Add class to the node
+      addClass: function addClass(name) {
+        if (!this.hasClass(name)) {
+          var array = this.classes();
+          array.push(name);
+          this.attr('class', array.join(' '));
+        }
+
+        return this;
+      },
+      // Remove class from the node
+      removeClass: function removeClass(name) {
+        if (this.hasClass(name)) {
+          this.attr('class', this.classes().filter(function (c) {
+            return c != name;
+          }).join(' '));
+        }
+
+        return this;
+      },
+      // Toggle the presence of a class on the node
+      toggleClass: function toggleClass(name) {
+        return this.hasClass(name) ? this.removeClass(name) : this.addClass(name);
+      },
+      // Get referenced element form attribute value
+      reference: function reference(attr) {
+        return SVG.get(this.attr(attr));
+      },
+      // Returns the parent element instance
+      parent: function parent(type) {
+        var parent = this; // check for parent
+
+        if (!parent.node.parentNode) return null; // get parent element
+
+        parent = SVG.adopt(parent.node.parentNode);
+        if (!type) return parent; // loop trough ancestors if type is given
+
+        while (parent && parent.node instanceof window.SVGElement) {
+          if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent;
+          if (!parent.node.parentNode || parent.node.parentNode.nodeName == '#document') return null; // #759, #720
+
+          parent = SVG.adopt(parent.node.parentNode);
+        }
+      },
+      // Get parent document
+      doc: function doc() {
+        return this instanceof SVG.Doc ? this : this.parent(SVG.Doc);
+      },
+      // return array of all ancestors of given type up to the root svg
+      parents: function parents(type) {
+        var parents = [],
+            parent = this;
+
+        do {
+          parent = parent.parent(type);
+          if (!parent || !parent.node) break;
+          parents.push(parent);
+        } while (parent.parent);
+
+        return parents;
+      },
+      // matches the element vs a css selector
+      matches: function matches(selector) {
+        return _matches(this.node, selector);
+      },
+      // Returns the svg node to call native svg methods on it
+      native: function native() {
+        return this.node;
+      },
+      // Import raw svg
+      svg: function svg(_svg) {
+        // create temporary holder
+        var well = document.createElement('svg'); // act as a setter if svg is given
+
+        if (_svg && this instanceof SVG.Parent) {
+          // dump raw svg
+          well.innerHTML = '<svg>' + _svg.replace(/\n/, '').replace(/<([\w:-]+)([^<]+?)\/>/g, '<$1$2></$1>') + '</svg>'; // transplant nodes
+
+          for (var i = 0, il = well.firstChild.childNodes.length; i < il; i++) {
+            this.node.appendChild(well.firstChild.firstChild);
+          } // otherwise act as a getter
+
+        } else {
+          // create a wrapping svg element in case of partial content
+          well.appendChild(_svg = document.createElement('svg')); // write svgjs data to the dom
+
+          this.writeDataToDom(); // insert a copy of this node
+
+          _svg.appendChild(this.node.cloneNode(true)); // return target element
+
+
+          return well.innerHTML.replace(/^<svg>/, '').replace(/<\/svg>$/, '');
+        }
+
+        return this;
+      },
+      // write svgjs data to the dom
+      writeDataToDom: function writeDataToDom() {
+        // dump variables recursively
+        if (this.each || this.lines) {
+          var fn = this.each ? this : this.lines();
+          fn.each(function () {
+            this.writeDataToDom();
+          });
+        } // remove previously set data
+
+
+        this.node.removeAttribute('svgjs:data');
+
+        if (Object.keys(this.dom).length) {
+          this.node.setAttribute('svgjs:data', JSON.stringify(this.dom));
+        } // see #428
+
+
+        return this;
+      },
+      // set given data to the elements data property
+      setData: function setData(o) {
+        this.dom = o;
+        return this;
+      },
+      is: function is(obj) {
+        return _is(this, obj);
+      }
+    }
+  });
+  SVG.easing = {
+    '-': function _(pos) {
+      return pos;
+    },
+    '<>': function _(pos) {
+      return -Math.cos(pos * Math.PI) / 2 + 0.5;
+    },
+    '>': function _(pos) {
+      return Math.sin(pos * Math.PI / 2);
+    },
+    '<': function _(pos) {
+      return -Math.cos(pos * Math.PI / 2) + 1;
+    }
+  };
+
+  SVG.morph = function (pos) {
+    return function (from, to) {
+      return new SVG.MorphObj(from, to).at(pos);
+    };
+  };
+
+  SVG.Situation = SVG.invent({
+    create: function create(o) {
+      this.init = false;
+      this.reversed = false;
+      this.reversing = false;
+      this.duration = new SVG.Number(o.duration).valueOf();
+      this.delay = new SVG.Number(o.delay).valueOf();
+      this.start = +new Date() + this.delay;
+      this.finish = this.start + this.duration;
+      this.ease = o.ease; // this.loop is incremented from 0 to this.loops
+      // it is also incremented when in an infinite loop (when this.loops is true)
+
+      this.loop = 0;
+      this.loops = false;
+      this.animations = {// functionToCall: [list of morphable objects]
+        // e.g. move: [SVG.Number, SVG.Number]
+      };
+      this.attrs = {// holds all attributes which are not represented from a function svg.js provides
+        // e.g. someAttr: SVG.Number
+      };
+      this.styles = {// holds all styles which should be animated
+        // e.g. fill-color: SVG.Color
+      };
+      this.transforms = [// holds all transformations as transformation objects
+        // e.g. [SVG.Rotate, SVG.Translate, SVG.Matrix]
+      ];
+      this.once = {// functions to fire at a specific position
+        // e.g. "0.5": function foo(){}
+      };
+    }
+  });
+  SVG.FX = SVG.invent({
+    create: function create(element) {
+      this._target = element;
+      this.situations = [];
+      this.active = false;
+      this.situation = null;
+      this.paused = false;
+      this.lastPos = 0;
+      this.pos = 0; // The absolute position of an animation is its position in the context of its complete duration (including delay and loops)
+      // When performing a delay, absPos is below 0 and when performing a loop, its value is above 1
+
+      this.absPos = 0;
+      this._speed = 1;
+    },
+    extend: {
+      /**
+       * sets or returns the target of this animation
+       * @param o object || number In case of Object it holds all parameters. In case of number its the duration of the animation
+       * @param ease function || string Function which should be used for easing or easing keyword
+       * @param delay Number indicating the delay before the animation starts
+       * @return target || this
+       */
+      animate: function animate(o, ease, delay) {
+        if (_typeof(o) === 'object') {
+          ease = o.ease;
+          delay = o.delay;
+          o = o.duration;
+        }
+
+        var situation = new SVG.Situation({
+          duration: o || 1000,
+          delay: delay || 0,
+          ease: SVG.easing[ease || '-'] || ease
+        });
+        this.queue(situation);
+        return this;
+      },
+
+      /**
+      * sets a delay before the next element of the queue is called
+      * @param delay Duration of delay in milliseconds
+      * @return this.target()
+      */
+      delay: function delay(_delay) {
+        // The delay is performed by an empty situation with its duration
+        // attribute set to the duration of the delay
+        var situation = new SVG.Situation({
+          duration: _delay,
+          delay: 0,
+          ease: SVG.easing['-']
+        });
+        return this.queue(situation);
+      },
+
+      /**
+      * sets or returns the target of this animation
+      * @param null || target SVG.Element which should be set as new target
+      * @return target || this
+      */
+      target: function target(_target) {
+        if (_target && _target instanceof SVG.Element) {
+          this._target = _target;
+          return this;
+        }
+
+        return this._target;
+      },
+      // returns the absolute position at a given time
+      timeToAbsPos: function timeToAbsPos(timestamp) {
+        return (timestamp - this.situation.start) / (this.situation.duration / this._speed);
+      },
+      // returns the timestamp from a given absolute positon
+      absPosToTime: function absPosToTime(absPos) {
+        return this.situation.duration / this._speed * absPos + this.situation.start;
+      },
+      // starts the animationloop
+      startAnimFrame: function startAnimFrame() {
+        this.stopAnimFrame();
+        this.animationFrame = window.requestAnimationFrame(function () {
+          this.step();
+        }.bind(this));
+      },
+      // cancels the animationframe
+      stopAnimFrame: function stopAnimFrame() {
+        window.cancelAnimationFrame(this.animationFrame);
+      },
+      // kicks off the animation - only does something when the queue is currently not active and at least one situation is set
+      start: function start() {
+        // dont start if already started
+        if (!this.active && this.situation) {
+          this.active = true;
+          this.startCurrent();
+        }
+
+        return this;
+      },
+      // start the current situation
+      startCurrent: function startCurrent() {
+        this.situation.start = +new Date() + this.situation.delay / this._speed;
+        this.situation.finish = this.situation.start + this.situation.duration / this._speed;
+        return this.initAnimations().step();
+      },
+
+      /**
+      * adds a function / Situation to the animation queue
+      * @param fn function / situation to add
+      * @return this
+      */
+      queue: function queue(fn) {
+        if (typeof fn === 'function' || fn instanceof SVG.Situation) {
+          this.situations.push(fn);
+        }
+
+        if (!this.situation) this.situation = this.situations.shift();
+        return this;
+      },
+
+      /**
+      * pulls next element from the queue and execute it
+      * @return this
+      */
+      dequeue: function dequeue() {
+        // stop current animation
+        this.stop(); // get next animation from queue
+
+        this.situation = this.situations.shift();
+
+        if (this.situation) {
+          if (this.situation instanceof SVG.Situation) {
+            this.start();
+          } else {
+            // If it is not a SVG.Situation, then it is a function, we execute it
+            this.situation.call(this);
+          }
+        }
+
+        return this;
+      },
+      // updates all animations to the current state of the element
+      // this is important when one property could be changed from another property
+      initAnimations: function initAnimations() {
+        var i, j, source;
+        var s = this.situation;
+        if (s.init) return this;
+
+        for (i in s.animations) {
+          source = this.target()[i]();
+
+          if (!Array.isArray(source)) {
+            source = [source];
+          }
+
+          if (!Array.isArray(s.animations[i])) {
+            s.animations[i] = [s.animations[i]];
+          } // if(s.animations[i].length > source.length) {
+          //  source.concat = source.concat(s.animations[i].slice(source.length, s.animations[i].length))
+          // }
+
+
+          for (j = source.length; j--;) {
+            // The condition is because some methods return a normal number instead
+            // of a SVG.Number
+            if (s.animations[i][j] instanceof SVG.Number) {
+              source[j] = new SVG.Number(source[j]);
+            }
+
+            s.animations[i][j] = source[j].morph(s.animations[i][j]);
+          }
+        }
+
+        for (i in s.attrs) {
+          s.attrs[i] = new SVG.MorphObj(this.target().attr(i), s.attrs[i]);
+        }
+
+        for (i in s.styles) {
+          s.styles[i] = new SVG.MorphObj(this.target().style(i), s.styles[i]);
+        }
+
+        s.initialTransformation = this.target().matrixify();
+        s.init = true;
+        return this;
+      },
+      clearQueue: function clearQueue() {
+        this.situations = [];
+        return this;
+      },
+      clearCurrent: function clearCurrent() {
+        this.situation = null;
+        return this;
+      },
+
+      /** stops the animation immediately
+      * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately.
+      * @param clearQueue A Boolean indicating whether to remove queued animation as well.
+      * @return this
+      */
+      stop: function stop(jumpToEnd, clearQueue) {
+        var active = this.active;
+        this.active = false;
+
+        if (clearQueue) {
+          this.clearQueue();
+        }
+
+        if (jumpToEnd && this.situation) {
+          // initialize the situation if it was not
+          !active && this.startCurrent();
+          this.atEnd();
+        }
+
+        this.stopAnimFrame();
+        return this.clearCurrent();
+      },
+
+      /** resets the element to the state where the current element has started
+      * @return this
+      */
+      reset: function reset() {
+        if (this.situation) {
+          var temp = this.situation;
+          this.stop();
+          this.situation = temp;
+          this.atStart();
+        }
+
+        return this;
+      },
+      // Stop the currently-running animation, remove all queued animations, and complete all animations for the element.
+      finish: function finish() {
+        this.stop(true, false);
+
+        while (this.dequeue().situation && this.stop(true, false)) {
+        }
+
+        this.clearQueue().clearCurrent();
+        return this;
+      },
+      // set the internal animation pointer at the start position, before any loops, and updates the visualisation
+      atStart: function atStart() {
+        return this.at(0, true);
+      },
+      // set the internal animation pointer at the end position, after all the loops, and updates the visualisation
+      atEnd: function atEnd() {
+        if (this.situation.loops === true) {
+          // If in a infinite loop, we end the current iteration
+          this.situation.loops = this.situation.loop + 1;
+        }
+
+        if (typeof this.situation.loops === 'number') {
+          // If performing a finite number of loops, we go after all the loops
+          return this.at(this.situation.loops, true);
+        } else {
+          // If no loops, we just go at the end
+          return this.at(1, true);
+        }
+      },
+      // set the internal animation pointer to the specified position and updates the visualisation
+      // if isAbsPos is true, pos is treated as an absolute position
+      at: function at(pos, isAbsPos) {
+        var durDivSpd = this.situation.duration / this._speed;
+        this.absPos = pos; // If pos is not an absolute position, we convert it into one
+
+        if (!isAbsPos) {
+          if (this.situation.reversed) this.absPos = 1 - this.absPos;
+          this.absPos += this.situation.loop;
+        }
+
+        this.situation.start = +new Date() - this.absPos * durDivSpd;
+        this.situation.finish = this.situation.start + durDivSpd;
+        return this.step(true);
+      },
+
+      /**
+      * sets or returns the speed of the animations
+      * @param speed null || Number The new speed of the animations
+      * @return Number || this
+      */
+      speed: function speed(_speed) {
+        if (_speed === 0) return this.pause();
+
+        if (_speed) {
+          this._speed = _speed; // We use an absolute position here so that speed can affect the delay before the animation
+
+          return this.at(this.absPos, true);
+        } else return this._speed;
+      },
+      // Make loopable
+      loop: function loop(times, reverse) {
+        var c = this.last(); // store total loops
+
+        c.loops = times != null ? times : true;
+        c.loop = 0;
+        if (reverse) c.reversing = true;
+        return this;
+      },
+      // pauses the animation
+      pause: function pause() {
+        this.paused = true;
+        this.stopAnimFrame();
+        return this;
+      },
+      // unpause the animation
+      play: function play() {
+        if (!this.paused) return this;
+        this.paused = false; // We use an absolute position here so that the delay before the animation can be paused
+
+        return this.at(this.absPos, true);
+      },
+
+      /**
+      * toggle or set the direction of the animation
+      * true sets direction to backwards while false sets it to forwards
+      * @param reversed Boolean indicating whether to reverse the animation or not (default: toggle the reverse status)
+      * @return this
+      */
+      reverse: function reverse(reversed) {
+        var c = this.last();
+        if (typeof reversed === 'undefined') c.reversed = !c.reversed;else c.reversed = reversed;
+        return this;
+      },
+
+      /**
+      * returns a float from 0-1 indicating the progress of the current animation
+      * @param eased Boolean indicating whether the returned position should be eased or not
+      * @return number
+      */
+      progress: function progress(easeIt) {
+        return easeIt ? this.situation.ease(this.pos) : this.pos;
+      },
+
+      /**
+      * adds a callback function which is called when the current animation is finished
+      * @param fn Function which should be executed as callback
+      * @return number
+      */
+      after: function after(fn) {
+        var c = this.last(),
+            wrapper = function wrapper(e) {
+          if (e.detail.situation == c) {
+            fn.call(this, c);
+            this.off('finished.fx', wrapper); // prevent memory leak
+          }
+        };
+
+        this.target().on('finished.fx', wrapper);
+        return this._callStart();
+      },
+      // adds a callback which is called whenever one animation step is performed
+      during: function during(fn) {
+        var c = this.last(),
+            wrapper = function wrapper(e) {
+          if (e.detail.situation == c) {
+            fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, c);
+          }
+        }; // see above
+
+
+        this.target().off('during.fx', wrapper).on('during.fx', wrapper);
+        this.after(function () {
+          this.off('during.fx', wrapper);
+        });
+        return this._callStart();
+      },
+      // calls after ALL animations in the queue are finished
+      afterAll: function afterAll(fn) {
+        var wrapper = function wrapper(e) {
+          fn.call(this);
+          this.off('allfinished.fx', wrapper);
+        }; // see above
+
+
+        this.target().off('allfinished.fx', wrapper).on('allfinished.fx', wrapper);
+        return this._callStart();
+      },
+      // calls on every animation step for all animations
+      duringAll: function duringAll(fn) {
+        var wrapper = function wrapper(e) {
+          fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, e.detail.situation);
+        };
+
+        this.target().off('during.fx', wrapper).on('during.fx', wrapper);
+        this.afterAll(function () {
+          this.off('during.fx', wrapper);
+        });
+        return this._callStart();
+      },
+      last: function last() {
+        return this.situations.length ? this.situations[this.situations.length - 1] : this.situation;
+      },
+      // adds one property to the animations
+      add: function add(method, args, type) {
+        this.last()[type || 'animations'][method] = args;
+        return this._callStart();
+      },
+
+      /** perform one step of the animation
+      *  @param ignoreTime Boolean indicating whether to ignore time and use position directly or recalculate position based on time
+      *  @return this
+      */
+      step: function step(ignoreTime) {
+        // convert current time to an absolute position
+        if (!ignoreTime) this.absPos = this.timeToAbsPos(+new Date()); // This part convert an absolute position to a position
+
+        if (this.situation.loops !== false) {
+          var absPos, absPosInt, lastLoop; // If the absolute position is below 0, we just treat it as if it was 0
+
+          absPos = Math.max(this.absPos, 0);
+          absPosInt = Math.floor(absPos);
+
+          if (this.situation.loops === true || absPosInt < this.situation.loops) {
+            this.pos = absPos - absPosInt;
+            lastLoop = this.situation.loop;
+            this.situation.loop = absPosInt;
+          } else {
+            this.absPos = this.situation.loops;
+            this.pos = 1; // The -1 here is because we don't want to toggle reversed when all the loops have been completed
+
+            lastLoop = this.situation.loop - 1;
+            this.situation.loop = this.situation.loops;
+          }
+
+          if (this.situation.reversing) {
+            // Toggle reversed if an odd number of loops as occured since the last call of step
+            this.situation.reversed = this.situation.reversed != Boolean((this.situation.loop - lastLoop) % 2);
+          }
+        } else {
+          // If there are no loop, the absolute position must not be above 1
+          this.absPos = Math.min(this.absPos, 1);
+          this.pos = this.absPos;
+        } // while the absolute position can be below 0, the position must not be below 0
+
+
+        if (this.pos < 0) this.pos = 0;
+        if (this.situation.reversed) this.pos = 1 - this.pos; // apply easing
+
+        var eased = this.situation.ease(this.pos); // call once-callbacks
+
+        for (var i in this.situation.once) {
+          if (i > this.lastPos && i <= eased) {
+            this.situation.once[i].call(this.target(), this.pos, eased);
+            delete this.situation.once[i];
+          }
+        } // fire during callback with position, eased position and current situation as parameter
+
+
+        if (this.active) this.target().fire('during', {
+          pos: this.pos,
+          eased: eased,
+          fx: this,
+          situation: this.situation
+        }); // the user may call stop or finish in the during callback
+        // so make sure that we still have a valid situation
+
+        if (!this.situation) {
+          return this;
+        } // apply the actual animation to every property
+
+
+        this.eachAt(); // do final code when situation is finished
+
+        if (this.pos == 1 && !this.situation.reversed || this.situation.reversed && this.pos == 0) {
+          // stop animation callback
+          this.stopAnimFrame(); // fire finished callback with current situation as parameter
+
+          this.target().fire('finished', {
+            fx: this,
+            situation: this.situation
+          });
+
+          if (!this.situations.length) {
+            this.target().fire('allfinished'); // Recheck the length since the user may call animate in the afterAll callback
+
+            if (!this.situations.length) {
+              this.target().off('.fx'); // there shouldnt be any binding left, but to make sure...
+
+              this.active = false;
+            }
+          } // start next animation
+
+
+          if (this.active) this.dequeue();else this.clearCurrent();
+        } else if (!this.paused && this.active) {
+          // we continue animating when we are not at the end
+          this.startAnimFrame();
+        } // save last eased position for once callback triggering
+
+
+        this.lastPos = eased;
+        return this;
+      },
+      // calculates the step for every property and calls block with it
+      eachAt: function eachAt() {
+        var i,
+            len,
+            at,
+            self = this,
+            target = this.target(),
+            s = this.situation; // apply animations which can be called trough a method
+
+        for (i in s.animations) {
+          at = [].concat(s.animations[i]).map(function (el) {
+            return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+          });
+          target[i].apply(target, at);
+        } // apply animation which has to be applied with attr()
+
+
+        for (i in s.attrs) {
+          at = [i].concat(s.attrs[i]).map(function (el) {
+            return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+          });
+          target.attr.apply(target, at);
+        } // apply animation which has to be applied with style()
+
+
+        for (i in s.styles) {
+          at = [i].concat(s.styles[i]).map(function (el) {
+            return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+          });
+          target.style.apply(target, at);
+        } // animate initialTransformation which has to be chained
+
+
+        if (s.transforms.length) {
+          // get initial initialTransformation
+          at = s.initialTransformation;
+
+          for (i = 0, len = s.transforms.length; i < len; i++) {
+            // get next transformation in chain
+            var a = s.transforms[i]; // multiply matrix directly
+
+            if (a instanceof SVG.Matrix) {
+              if (a.relative) {
+                at = at.multiply(new SVG.Matrix().morph(a).at(s.ease(this.pos)));
+              } else {
+                at = at.morph(a).at(s.ease(this.pos));
+              }
+
+              continue;
+            } // when transformation is absolute we have to reset the needed transformation first
+
+
+            if (!a.relative) {
+              a.undo(at.extract());
+            } // and reapply it after
+
+
+            at = at.multiply(a.at(s.ease(this.pos)));
+          } // set new matrix on element
+
+
+          target.matrix(at);
+        }
+
+        return this;
+      },
+      // adds an once-callback which is called at a specific position and never again
+      once: function once(pos, fn, isEased) {
+        var c = this.last();
+        if (!isEased) pos = c.ease(pos);
+        c.once[pos] = fn;
+        return this;
+      },
+      _callStart: function _callStart() {
+        setTimeout(function () {
+          this.start();
+        }.bind(this), 0);
+        return this;
+      }
+    },
+    parent: SVG.Element,
+    // Add method to parent elements
+    construct: {
+      // Get fx module or create a new one, then animate with given duration and ease
+      animate: function animate(o, ease, delay) {
+        return (this.fx || (this.fx = new SVG.FX(this))).animate(o, ease, delay);
+      },
+      delay: function delay(_delay2) {
+        return (this.fx || (this.fx = new SVG.FX(this))).delay(_delay2);
+      },
+      stop: function stop(jumpToEnd, clearQueue) {
+        if (this.fx) {
+          this.fx.stop(jumpToEnd, clearQueue);
+        }
+
+        return this;
+      },
+      finish: function finish() {
+        if (this.fx) {
+          this.fx.finish();
+        }
+
+        return this;
+      },
+      // Pause current animation
+      pause: function pause() {
+        if (this.fx) {
+          this.fx.pause();
+        }
+
+        return this;
+      },
+      // Play paused current animation
+      play: function play() {
+        if (this.fx) {
+          this.fx.play();
+        }
+
+        return this;
+      },
+      // Set/Get the speed of the animations
+      speed: function speed(_speed2) {
+        if (this.fx) {
+          if (_speed2 == null) {
+            return this.fx.speed();
+          } else {
+            this.fx.speed(_speed2);
+          }
+        }
+
+        return this;
+      }
+    }
+  }); // MorphObj is used whenever no morphable object is given
+
+  SVG.MorphObj = SVG.invent({
+    create: function create(from, to) {
+      // prepare color for morphing
+      if (SVG.Color.isColor(to)) return new SVG.Color(from).morph(to); // check if we have a list of values
+
+      if (SVG.regex.delimiter.test(from)) {
+        // prepare path for morphing
+        if (SVG.regex.pathLetters.test(from)) return new SVG.PathArray(from).morph(to); // prepare value list for morphing
+        else return new SVG.Array(from).morph(to);
+      } // prepare number for morphing
+
+
+      if (SVG.regex.numberAndUnit.test(to)) return new SVG.Number(from).morph(to); // prepare for plain morphing
+
+      this.value = from;
+      this.destination = to;
+    },
+    extend: {
+      at: function at(pos, real) {
+        return real < 1 ? this.value : this.destination;
+      },
+      valueOf: function valueOf() {
+        return this.value;
+      }
+    }
+  });
+  SVG.extend(SVG.FX, {
+    // Add animatable attributes
+    attr: function attr(a, v, relative) {
+      // apply attributes individually
+      if (_typeof(a) === 'object') {
+        for (var key in a) {
+          this.attr(key, a[key]);
+        }
+      } else {
+        this.add(a, v, 'attrs');
+      }
+
+      return this;
+    },
+    // Add animatable styles
+    style: function style(s, v) {
+      if (_typeof(s) === 'object') {
+        for (var key in s) {
+          this.style(key, s[key]);
+        }
+      } else {
+        this.add(s, v, 'styles');
+      }
+
+      return this;
+    },
+    // Animatable x-axis
+    x: function x(_x2, relative) {
+      if (this.target() instanceof SVG.G) {
+        this.transform({
+          x: _x2
+        }, relative);
+        return this;
+      }
+
+      var num = new SVG.Number(_x2);
+      num.relative = relative;
+      return this.add('x', num);
+    },
+    // Animatable y-axis
+    y: function y(_y2, relative) {
+      if (this.target() instanceof SVG.G) {
+        this.transform({
+          y: _y2
+        }, relative);
+        return this;
+      }
+
+      var num = new SVG.Number(_y2);
+      num.relative = relative;
+      return this.add('y', num);
+    },
+    // Animatable center x-axis
+    cx: function cx(x) {
+      return this.add('cx', new SVG.Number(x));
+    },
+    // Animatable center y-axis
+    cy: function cy(y) {
+      return this.add('cy', new SVG.Number(y));
+    },
+    // Add animatable move
+    move: function move(x, y) {
+      return this.x(x).y(y);
+    },
+    // Add animatable center
+    center: function center(x, y) {
+      return this.cx(x).cy(y);
+    },
+    // Add animatable size
+    size: function size(width, height) {
+      if (this.target() instanceof SVG.Text) {
+        // animate font size for Text elements
+        this.attr('font-size', width);
+      } else {
+        // animate bbox based size for all other elements
+        var box;
+
+        if (!width || !height) {
+          box = this.target().bbox();
+        }
+
+        if (!width) {
+          width = box.width / box.height * height;
+        }
+
+        if (!height) {
+          height = box.height / box.width * width;
+        }
+
+        this.add('width', new SVG.Number(width)).add('height', new SVG.Number(height));
+      }
+
+      return this;
+    },
+    // Add animatable width
+    width: function width(_width2) {
+      return this.add('width', new SVG.Number(_width2));
+    },
+    // Add animatable height
+    height: function height(_height2) {
+      return this.add('height', new SVG.Number(_height2));
+    },
+    // Add animatable plot
+    plot: function plot(a, b, c, d) {
+      // Lines can be plotted with 4 arguments
+      if (arguments.length == 4) {
+        return this.plot([a, b, c, d]);
+      }
+
+      return this.add('plot', new (this.target().morphArray)(a));
+    },
+    // Add leading method
+    leading: function leading(value) {
+      return this.target().leading ? this.add('leading', new SVG.Number(value)) : this;
+    },
+    // Add animatable viewbox
+    viewbox: function viewbox(x, y, width, height) {
+      if (this.target() instanceof SVG.Container) {
+        this.add('viewbox', new SVG.ViewBox(x, y, width, height));
+      }
+
+      return this;
+    },
+    update: function update(o) {
+      if (this.target() instanceof SVG.Stop) {
+        if (typeof o === 'number' || o instanceof SVG.Number) {
+          return this.update({
+            offset: arguments[0],
+            color: arguments[1],
+            opacity: arguments[2]
+          });
+        }
+
+        if (o.opacity != null) this.attr('stop-opacity', o.opacity);
+        if (o.color != null) this.attr('stop-color', o.color);
+        if (o.offset != null) this.attr('offset', o.offset);
+      }
+
+      return this;
+    }
+  });
+  SVG.Box = SVG.invent({
+    create: function create(x, y, width, height) {
+      if (_typeof(x) === 'object' && !(x instanceof SVG.Element)) {
+        // chromes getBoundingClientRect has no x and y property
+        return SVG.Box.call(this, x.left != null ? x.left : x.x, x.top != null ? x.top : x.y, x.width, x.height);
+      } else if (arguments.length == 4) {
+        this.x = x;
+        this.y = y;
+        this.width = width;
+        this.height = height;
+      } // add center, right, bottom...
+
+
+      fullBox(this);
+    },
+    extend: {
+      // Merge rect box with another, return a new instance
+      merge: function merge(box) {
+        var b = new this.constructor(); // merge boxes
+
+        b.x = Math.min(this.x, box.x);
+        b.y = Math.min(this.y, box.y);
+        b.width = Math.max(this.x + this.width, box.x + box.width) - b.x;
+        b.height = Math.max(this.y + this.height, box.y + box.height) - b.y;
+        return fullBox(b);
+      },
+      transform: function transform(m) {
+        var xMin = Infinity,
+            xMax = -Infinity,
+            yMin = Infinity,
+            yMax = -Infinity,
+            bbox;
+        var pts = [new SVG.Point(this.x, this.y), new SVG.Point(this.x2, this.y), new SVG.Point(this.x, this.y2), new SVG.Point(this.x2, this.y2)];
+        pts.forEach(function (p) {
+          p = p.transform(m);
+          xMin = Math.min(xMin, p.x);
+          xMax = Math.max(xMax, p.x);
+          yMin = Math.min(yMin, p.y);
+          yMax = Math.max(yMax, p.y);
+        });
+        bbox = new this.constructor();
+        bbox.x = xMin;
+        bbox.width = xMax - xMin;
+        bbox.y = yMin;
+        bbox.height = yMax - yMin;
+        fullBox(bbox);
+        return bbox;
+      }
+    }
+  });
+  SVG.BBox = SVG.invent({
+    // Initialize
+    create: function create(element) {
+      SVG.Box.apply(this, [].slice.call(arguments)); // get values if element is given
+
+      if (element instanceof SVG.Element) {
+        var box; // yes this is ugly, but Firefox can be a pain when it comes to elements that are not yet rendered
+
+        try {
+          if (!document.documentElement.contains) {
+            // This is IE - it does not support contains() for top-level SVGs
+            var topParent = element.node;
+
+            while (topParent.parentNode) {
+              topParent = topParent.parentNode;
+            }
+
+            if (topParent != document) throw new Error('Element not in the dom');
+          } // the element is NOT in the dom, throw error
+          // disabling the check below which fixes issue #76
+          // if (!document.documentElement.contains(element.node)) throw new Exception('Element not in the dom')
+          // find native bbox
+
+
+          box = element.node.getBBox();
+        } catch (e) {
+          if (element instanceof SVG.Shape) {
+            if (!SVG.parser.draw) {
+              // fixes apexcharts/vue-apexcharts #14
+              SVG.prepare();
+            }
+
+            var clone = element.clone(SVG.parser.draw.instance).show();
+            box = clone.node.getBBox();
+            clone.remove();
+          } else {
+            box = {
+              x: element.node.clientLeft,
+              y: element.node.clientTop,
+              width: element.node.clientWidth,
+              height: element.node.clientHeight
+            };
+          }
+        }
+
+        SVG.Box.call(this, box);
+      }
+    },
+    // Define ancestor
+    inherit: SVG.Box,
+    // Define Parent
+    parent: SVG.Element,
+    // Constructor
+    construct: {
+      // Get bounding box
+      bbox: function bbox() {
+        return new SVG.BBox(this);
+      }
+    }
+  });
+  SVG.BBox.prototype.constructor = SVG.BBox;
+  SVG.extend(SVG.Element, {
+    tbox: function tbox() {
+      console.warn('Use of TBox is deprecated and mapped to RBox. Use .rbox() instead.');
+      return this.rbox(this.doc());
+    }
+  });
+  SVG.RBox = SVG.invent({
+    // Initialize
+    create: function create(element) {
+      SVG.Box.apply(this, [].slice.call(arguments));
+
+      if (element instanceof SVG.Element) {
+        SVG.Box.call(this, element.node.getBoundingClientRect());
+      }
+    },
+    inherit: SVG.Box,
+    // define Parent
+    parent: SVG.Element,
+    extend: {
+      addOffset: function addOffset() {
+        // offset by window scroll position, because getBoundingClientRect changes when window is scrolled
+        this.x += window.pageXOffset;
+        this.y += window.pageYOffset;
+        return this;
+      }
+    },
+    // Constructor
+    construct: {
+      // Get rect box
+      rbox: function rbox(el) {
+        if (el) return new SVG.RBox(this).transform(el.screenCTM().inverse());
+        return new SVG.RBox(this).addOffset();
+      }
+    }
+  });
+  SVG.RBox.prototype.constructor = SVG.RBox;
+  SVG.Matrix = SVG.invent({
+    // Initialize
+    create: function create(source) {
+      var i,
+          base = arrayToMatrix([1, 0, 0, 1, 0, 0]); // ensure source as object
+
+      source = source instanceof SVG.Element ? source.matrixify() : typeof source === 'string' ? arrayToMatrix(source.split(SVG.regex.delimiter).map(parseFloat)) : arguments.length == 6 ? arrayToMatrix([].slice.call(arguments)) : Array.isArray(source) ? arrayToMatrix(source) : _typeof(source) === 'object' ? source : base; // merge source
+
+      for (i = abcdef.length - 1; i >= 0; --i) {
+        this[abcdef[i]] = source[abcdef[i]] != null ? source[abcdef[i]] : base[abcdef[i]];
+      }
+    },
+    // Add methods
+    extend: {
+      // Extract individual transformations
+      extract: function extract() {
+        // find delta transform points
+        var px = deltaTransformPoint(this, 0, 1),
+            py = deltaTransformPoint(this, 1, 0),
+            skewX = 180 / Math.PI * Math.atan2(px.y, px.x) - 90;
+        return {
+          // translation
+          x: this.e,
+          y: this.f,
+          transformedX: (this.e * Math.cos(skewX * Math.PI / 180) + this.f * Math.sin(skewX * Math.PI / 180)) / Math.sqrt(this.a * this.a + this.b * this.b),
+          transformedY: (this.f * Math.cos(skewX * Math.PI / 180) + this.e * Math.sin(-skewX * Math.PI / 180)) / Math.sqrt(this.c * this.c + this.d * this.d),
+          // skew
+          skewX: -skewX,
+          skewY: 180 / Math.PI * Math.atan2(py.y, py.x),
+          // scale
+          scaleX: Math.sqrt(this.a * this.a + this.b * this.b),
+          scaleY: Math.sqrt(this.c * this.c + this.d * this.d),
+          // rotation
+          rotation: skewX,
+          a: this.a,
+          b: this.b,
+          c: this.c,
+          d: this.d,
+          e: this.e,
+          f: this.f,
+          matrix: new SVG.Matrix(this)
+        };
+      },
+      // Clone matrix
+      clone: function clone() {
+        return new SVG.Matrix(this);
+      },
+      // Morph one matrix into another
+      morph: function morph(matrix) {
+        // store new destination
+        this.destination = new SVG.Matrix(matrix);
+        return this;
+      },
+      // Get morphed matrix at a given position
+      at: function at(pos) {
+        // make sure a destination is defined
+        if (!this.destination) return this; // calculate morphed matrix at a given position
+
+        var matrix = new SVG.Matrix({
+          a: this.a + (this.destination.a - this.a) * pos,
+          b: this.b + (this.destination.b - this.b) * pos,
+          c: this.c + (this.destination.c - this.c) * pos,
+          d: this.d + (this.destination.d - this.d) * pos,
+          e: this.e + (this.destination.e - this.e) * pos,
+          f: this.f + (this.destination.f - this.f) * pos
+        });
+        return matrix;
+      },
+      // Multiplies by given matrix
+      multiply: function multiply(matrix) {
+        return new SVG.Matrix(this.native().multiply(parseMatrix(matrix).native()));
+      },
+      // Inverses matrix
+      inverse: function inverse() {
+        return new SVG.Matrix(this.native().inverse());
+      },
+      // Translate matrix
+      translate: function translate(x, y) {
+        return new SVG.Matrix(this.native().translate(x || 0, y || 0));
+      },
+      // Scale matrix
+      scale: function scale(x, y, cx, cy) {
+        // support uniformal scale
+        if (arguments.length == 1) {
+          y = x;
+        } else if (arguments.length == 3) {
+          cy = cx;
+          cx = y;
+          y = x;
+        }
+
+        return this.around(cx, cy, new SVG.Matrix(x, 0, 0, y, 0, 0));
+      },
+      // Rotate matrix
+      rotate: function rotate(r, cx, cy) {
+        // convert degrees to radians
+        r = SVG.utils.radians(r);
+        return this.around(cx, cy, new SVG.Matrix(Math.cos(r), Math.sin(r), -Math.sin(r), Math.cos(r), 0, 0));
+      },
+      // Flip matrix on x or y, at a given offset
+      flip: function flip(a, o) {
+        return a == 'x' ? this.scale(-1, 1, o, 0) : a == 'y' ? this.scale(1, -1, 0, o) : this.scale(-1, -1, a, o != null ? o : a);
+      },
+      // Skew
+      skew: function skew(x, y, cx, cy) {
+        // support uniformal skew
+        if (arguments.length == 1) {
+          y = x;
+        } else if (arguments.length == 3) {
+          cy = cx;
+          cx = y;
+          y = x;
+        } // convert degrees to radians
+
+
+        x = SVG.utils.radians(x);
+        y = SVG.utils.radians(y);
+        return this.around(cx, cy, new SVG.Matrix(1, Math.tan(y), Math.tan(x), 1, 0, 0));
+      },
+      // SkewX
+      skewX: function skewX(x, cx, cy) {
+        return this.skew(x, 0, cx, cy);
+      },
+      // SkewY
+      skewY: function skewY(y, cx, cy) {
+        return this.skew(0, y, cx, cy);
+      },
+      // Transform around a center point
+      around: function around(cx, cy, matrix) {
+        return this.multiply(new SVG.Matrix(1, 0, 0, 1, cx || 0, cy || 0)).multiply(matrix).multiply(new SVG.Matrix(1, 0, 0, 1, -cx || 0, -cy || 0));
+      },
+      // Convert to native SVGMatrix
+      native: function native() {
+        // create new matrix
+        var matrix = SVG.parser.native.createSVGMatrix(); // update with current values
+
+        for (var i = abcdef.length - 1; i >= 0; i--) {
+          matrix[abcdef[i]] = this[abcdef[i]];
+        }
+
+        return matrix;
+      },
+      // Convert matrix to string
+      toString: function toString() {
+        // Construct the matrix directly, avoid values that are too small
+        return 'matrix(' + float32String(this.a) + ',' + float32String(this.b) + ',' + float32String(this.c) + ',' + float32String(this.d) + ',' + float32String(this.e) + ',' + float32String(this.f) + ')';
+      }
+    },
+    // Define parent
+    parent: SVG.Element,
+    // Add parent method
+    construct: {
+      // Get current matrix
+      ctm: function ctm() {
+        return new SVG.Matrix(this.node.getCTM());
+      },
+      // Get current screen matrix
+      screenCTM: function screenCTM() {
+        /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537
+           This is needed because FF does not return the transformation matrix
+           for the inner coordinate system when getScreenCTM() is called on nested svgs.
+           However all other Browsers do that */
+        if (this instanceof SVG.Nested) {
+          var rect = this.rect(1, 1);
+          var m = rect.node.getScreenCTM();
+          rect.remove();
+          return new SVG.Matrix(m);
+        }
+
+        return new SVG.Matrix(this.node.getScreenCTM());
+      }
+    }
+  });
+  SVG.Point = SVG.invent({
+    // Initialize
+    create: function create(x, y) {
+      var source,
+          base = {
+        x: 0,
+        y: 0 // ensure source as object
+
+      };
+      source = Array.isArray(x) ? {
+        x: x[0],
+        y: x[1]
+      } : _typeof(x) === 'object' ? {
+        x: x.x,
+        y: x.y
+      } : x != null ? {
+        x: x,
+        y: y != null ? y : x
+      } : base; // If y has no value, then x is used has its value
+      // merge source
+
+      this.x = source.x;
+      this.y = source.y;
+    },
+    // Add methods
+    extend: {
+      // Clone point
+      clone: function clone() {
+        return new SVG.Point(this);
+      },
+      // Morph one point into another
+      morph: function morph(x, y) {
+        // store new destination
+        this.destination = new SVG.Point(x, y);
+        return this;
+      },
+      // Get morphed point at a given position
+      at: function at(pos) {
+        // make sure a destination is defined
+        if (!this.destination) return this; // calculate morphed matrix at a given position
+
+        var point = new SVG.Point({
+          x: this.x + (this.destination.x - this.x) * pos,
+          y: this.y + (this.destination.y - this.y) * pos
+        });
+        return point;
+      },
+      // Convert to native SVGPoint
+      native: function native() {
+        // create new point
+        var point = SVG.parser.native.createSVGPoint(); // update with current values
+
+        point.x = this.x;
+        point.y = this.y;
+        return point;
+      },
+      // transform point with matrix
+      transform: function transform(matrix) {
+        return new SVG.Point(this.native().matrixTransform(matrix.native()));
+      }
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Get point
+    point: function point(x, y) {
+      return new SVG.Point(x, y).transform(this.screenCTM().inverse());
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Set svg element attribute
+    attr: function attr(a, v, n) {
+      // act as full getter
+      if (a == null) {
+        // get an object of attributes
+        a = {};
+        v = this.node.attributes;
+
+        for (n = v.length - 1; n >= 0; n--) {
+          a[v[n].nodeName] = SVG.regex.isNumber.test(v[n].nodeValue) ? parseFloat(v[n].nodeValue) : v[n].nodeValue;
+        }
+
+        return a;
+      } else if (_typeof(a) === 'object') {
+        // apply every attribute individually if an object is passed
+        for (v in a) {
+          this.attr(v, a[v]);
+        }
+      } else if (v === null) {
+        // remove value
+        this.node.removeAttribute(a);
+      } else if (v == null) {
+        // act as a getter if the first and only argument is not an object
+        v = this.node.getAttribute(a);
+        return v == null ? SVG.defaults.attrs[a] : SVG.regex.isNumber.test(v) ? parseFloat(v) : v;
+      } else {
+        // BUG FIX: some browsers will render a stroke if a color is given even though stroke width is 0
+        if (a == 'stroke-width') {
+          this.attr('stroke', parseFloat(v) > 0 ? this._stroke : null);
+        } else if (a == 'stroke') {
+          this._stroke = v;
+        } // convert image fill and stroke to patterns
+
+
+        if (a == 'fill' || a == 'stroke') {
+          if (SVG.regex.isImage.test(v)) {
+            v = this.doc().defs().image(v, 0, 0);
+          }
+
+          if (v instanceof SVG.Image) {
+            v = this.doc().defs().pattern(0, 0, function () {
+              this.add(v);
+            });
+          }
+        } // ensure correct numeric values (also accepts NaN and Infinity)
+
+
+        if (typeof v === 'number') {
+          v = new SVG.Number(v);
+        } // ensure full hex color
+        else if (SVG.Color.isColor(v)) {
+            v = new SVG.Color(v);
+          } // parse array values
+          else if (Array.isArray(v)) {
+              v = new SVG.Array(v);
+            } // if the passed attribute is leading...
+
+
+        if (a == 'leading') {
+          // ... call the leading method instead
+          if (this.leading) {
+            this.leading(v);
+          }
+        } else {
+          // set given attribute on node
+          typeof n === 'string' ? this.node.setAttributeNS(n, a, v.toString()) : this.node.setAttribute(a, v.toString());
+        } // rebuild if required
+
+
+        if (this.rebuild && (a == 'font-size' || a == 'x')) {
+          this.rebuild(a, v);
+        }
+      }
+
+      return this;
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Add transformations
+    transform: function transform(o, relative) {
+      // get target in case of the fx module, otherwise reference this
+      var target = this,
+          matrix,
+          bbox; // act as a getter
+
+      if (_typeof(o) !== 'object') {
+        // get current matrix
+        matrix = new SVG.Matrix(target).extract();
+        return typeof o === 'string' ? matrix[o] : matrix;
+      } // get current matrix
+
+
+      matrix = new SVG.Matrix(target); // ensure relative flag
+
+      relative = !!relative || !!o.relative; // act on matrix
+
+      if (o.a != null) {
+        matrix = relative // relative
+        ? matrix.multiply(new SVG.Matrix(o)) // absolute
+        : new SVG.Matrix(o); // act on rotation
+      } else if (o.rotation != null) {
+        // ensure centre point
+        ensureCentre(o, target); // apply transformation
+
+        matrix = relative // relative
+        ? matrix.rotate(o.rotation, o.cx, o.cy) // absolute
+        : matrix.rotate(o.rotation - matrix.extract().rotation, o.cx, o.cy); // act on scale
+      } else if (o.scale != null || o.scaleX != null || o.scaleY != null) {
+        // ensure centre point
+        ensureCentre(o, target); // ensure scale values on both axes
+
+        o.scaleX = o.scale != null ? o.scale : o.scaleX != null ? o.scaleX : 1;
+        o.scaleY = o.scale != null ? o.scale : o.scaleY != null ? o.scaleY : 1;
+
+        if (!relative) {
+          // absolute; multiply inversed values
+          var e = matrix.extract();
+          o.scaleX = o.scaleX * 1 / e.scaleX;
+          o.scaleY = o.scaleY * 1 / e.scaleY;
+        }
+
+        matrix = matrix.scale(o.scaleX, o.scaleY, o.cx, o.cy); // act on skew
+      } else if (o.skew != null || o.skewX != null || o.skewY != null) {
+        // ensure centre point
+        ensureCentre(o, target); // ensure skew values on both axes
+
+        o.skewX = o.skew != null ? o.skew : o.skewX != null ? o.skewX : 0;
+        o.skewY = o.skew != null ? o.skew : o.skewY != null ? o.skewY : 0;
+
+        if (!relative) {
+          // absolute; reset skew values
+          var e = matrix.extract();
+          matrix = matrix.multiply(new SVG.Matrix().skew(e.skewX, e.skewY, o.cx, o.cy).inverse());
+        }
+
+        matrix = matrix.skew(o.skewX, o.skewY, o.cx, o.cy); // act on flip
+      } else if (o.flip) {
+        if (o.flip == 'x' || o.flip == 'y') {
+          o.offset = o.offset == null ? target.bbox()['c' + o.flip] : o.offset;
+        } else {
+          if (o.offset == null) {
+            bbox = target.bbox();
+            o.flip = bbox.cx;
+            o.offset = bbox.cy;
+          } else {
+            o.flip = o.offset;
+          }
+        }
+
+        matrix = new SVG.Matrix().flip(o.flip, o.offset); // act on translate
+      } else if (o.x != null || o.y != null) {
+        if (relative) {
+          // relative
+          matrix = matrix.translate(o.x, o.y);
+        } else {
+          // absolute
+          if (o.x != null) matrix.e = o.x;
+          if (o.y != null) matrix.f = o.y;
+        }
+      }
+
+      return this.attr('transform', matrix);
+    }
+  });
+  SVG.extend(SVG.FX, {
+    transform: function transform(o, relative) {
+      // get target in case of the fx module, otherwise reference this
+      var target = this.target(),
+          matrix,
+          bbox; // act as a getter
+
+      if (_typeof(o) !== 'object') {
+        // get current matrix
+        matrix = new SVG.Matrix(target).extract();
+        return typeof o === 'string' ? matrix[o] : matrix;
+      } // ensure relative flag
+
+
+      relative = !!relative || !!o.relative; // act on matrix
+
+      if (o.a != null) {
+        matrix = new SVG.Matrix(o); // act on rotation
+      } else if (o.rotation != null) {
+        // ensure centre point
+        ensureCentre(o, target); // apply transformation
+
+        matrix = new SVG.Rotate(o.rotation, o.cx, o.cy); // act on scale
+      } else if (o.scale != null || o.scaleX != null || o.scaleY != null) {
+        // ensure centre point
+        ensureCentre(o, target); // ensure scale values on both axes
+
+        o.scaleX = o.scale != null ? o.scale : o.scaleX != null ? o.scaleX : 1;
+        o.scaleY = o.scale != null ? o.scale : o.scaleY != null ? o.scaleY : 1;
+        matrix = new SVG.Scale(o.scaleX, o.scaleY, o.cx, o.cy); // act on skew
+      } else if (o.skewX != null || o.skewY != null) {
+        // ensure centre point
+        ensureCentre(o, target); // ensure skew values on both axes
+
+        o.skewX = o.skewX != null ? o.skewX : 0;
+        o.skewY = o.skewY != null ? o.skewY : 0;
+        matrix = new SVG.Skew(o.skewX, o.skewY, o.cx, o.cy); // act on flip
+      } else if (o.flip) {
+        if (o.flip == 'x' || o.flip == 'y') {
+          o.offset = o.offset == null ? target.bbox()['c' + o.flip] : o.offset;
+        } else {
+          if (o.offset == null) {
+            bbox = target.bbox();
+            o.flip = bbox.cx;
+            o.offset = bbox.cy;
+          } else {
+            o.flip = o.offset;
+          }
+        }
+
+        matrix = new SVG.Matrix().flip(o.flip, o.offset); // act on translate
+      } else if (o.x != null || o.y != null) {
+        matrix = new SVG.Translate(o.x, o.y);
+      }
+
+      if (!matrix) return this;
+      matrix.relative = relative;
+      this.last().transforms.push(matrix);
+      return this._callStart();
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Reset all transformations
+    untransform: function untransform() {
+      return this.attr('transform', null);
+    },
+    // merge the whole transformation chain into one matrix and returns it
+    matrixify: function matrixify() {
+      var matrix = (this.attr('transform') || ''). // split transformations
+      split(SVG.regex.transforms).slice(0, -1).map(function (str) {
+        // generate key => value pairs
+        var kv = str.trim().split('(');
+        return [kv[0], kv[1].split(SVG.regex.delimiter).map(function (str) {
+          return parseFloat(str);
+        })];
+      }) // merge every transformation into one matrix
+      .reduce(function (matrix, transform) {
+        if (transform[0] == 'matrix') return matrix.multiply(arrayToMatrix(transform[1]));
+        return matrix[transform[0]].apply(matrix, transform[1]);
+      }, new SVG.Matrix());
+      return matrix;
+    },
+    // add an element to another parent without changing the visual representation on the screen
+    toParent: function toParent(parent) {
+      if (this == parent) return this;
+      var ctm = this.screenCTM();
+      var pCtm = parent.screenCTM().inverse();
+      this.addTo(parent).untransform().transform(pCtm.multiply(ctm));
+      return this;
+    },
+    // same as above with parent equals root-svg
+    toDoc: function toDoc() {
+      return this.toParent(this.doc());
+    }
+  });
+  SVG.Transformation = SVG.invent({
+    create: function create(source, inversed) {
+      if (arguments.length > 1 && typeof inversed !== 'boolean') {
+        return this.constructor.call(this, [].slice.call(arguments));
+      }
+
+      if (Array.isArray(source)) {
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          this[this.arguments[i]] = source[i];
+        }
+      } else if (_typeof(source) === 'object') {
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          this[this.arguments[i]] = source[this.arguments[i]];
+        }
+      }
+
+      this.inversed = false;
+
+      if (inversed === true) {
+        this.inversed = true;
+      }
+    },
+    extend: {
+      arguments: [],
+      method: '',
+      at: function at(pos) {
+        var params = [];
+
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          params.push(this[this.arguments[i]]);
+        }
+
+        var m = this._undo || new SVG.Matrix();
+        m = new SVG.Matrix().morph(SVG.Matrix.prototype[this.method].apply(m, params)).at(pos);
+        return this.inversed ? m.inverse() : m;
+      },
+      undo: function undo(o) {
+        for (var i = 0, len = this.arguments.length; i < len; ++i) {
+          o[this.arguments[i]] = typeof this[this.arguments[i]] === 'undefined' ? 0 : o[this.arguments[i]];
+        } // The method SVG.Matrix.extract which was used before calling this
+        // method to obtain a value for the parameter o doesn't return a cx and
+        // a cy so we use the ones that were provided to this object at its creation
+
+
+        o.cx = this.cx;
+        o.cy = this.cy;
+        this._undo = new SVG[capitalize(this.method)](o, true).at(1);
+        return this;
+      }
+    }
+  });
+  SVG.Translate = SVG.invent({
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+    extend: {
+      arguments: ['transformedX', 'transformedY'],
+      method: 'translate'
+    }
+  });
+  SVG.Rotate = SVG.invent({
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+    extend: {
+      arguments: ['rotation', 'cx', 'cy'],
+      method: 'rotate',
+      at: function at(pos) {
+        var m = new SVG.Matrix().rotate(new SVG.Number().morph(this.rotation - (this._undo ? this._undo.rotation : 0)).at(pos), this.cx, this.cy);
+        return this.inversed ? m.inverse() : m;
+      },
+      undo: function undo(o) {
+        this._undo = o;
+        return this;
+      }
+    }
+  });
+  SVG.Scale = SVG.invent({
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+    extend: {
+      arguments: ['scaleX', 'scaleY', 'cx', 'cy'],
+      method: 'scale'
+    }
+  });
+  SVG.Skew = SVG.invent({
+    parent: SVG.Matrix,
+    inherit: SVG.Transformation,
+    create: function create(source, inversed) {
+      this.constructor.apply(this, [].slice.call(arguments));
+    },
+    extend: {
+      arguments: ['skewX', 'skewY', 'cx', 'cy'],
+      method: 'skew'
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Dynamic style generator
+    style: function style(s, v) {
+      if (arguments.length == 0) {
+        // get full style
+        return this.node.style.cssText || '';
+      } else if (arguments.length < 2) {
+        // apply every style individually if an object is passed
+        if (_typeof(s) === 'object') {
+          for (v in s) {
+            this.style(v, s[v]);
+          }
+        } else if (SVG.regex.isCss.test(s)) {
+          // parse css string
+          s = s.split(/\s*;\s*/) // filter out suffix ; and stuff like ;;
+          .filter(function (e) {
+            return !!e;
+          }).map(function (e) {
+            return e.split(/\s*:\s*/);
+          }); // apply every definition individually
+
+          while (v = s.pop()) {
+            this.style(v[0], v[1]);
+          }
+        } else {
+          // act as a getter if the first and only argument is not an object
+          return this.node.style[camelCase(s)];
+        }
+      } else {
+        this.node.style[camelCase(s)] = v === null || SVG.regex.isBlank.test(v) ? '' : v;
+      }
+
+      return this;
+    }
+  });
+  SVG.Parent = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      this.constructor.call(this, element);
+    },
+    // Inherit from
+    inherit: SVG.Element,
+    // Add class methods
+    extend: {
+      // Returns all child elements
+      children: function children() {
+        return SVG.utils.map(SVG.utils.filterSVGElements(this.node.childNodes), function (node) {
+          return SVG.adopt(node);
+        });
+      },
+      // Add given element at a position
+      add: function add(element, i) {
+        if (i == null) {
+          this.node.appendChild(element.node);
+        } else if (element.node != this.node.childNodes[i]) {
+          this.node.insertBefore(element.node, this.node.childNodes[i]);
+        }
+
+        return this;
+      },
+      // Basically does the same as `add()` but returns the added element instead
+      put: function put(element, i) {
+        this.add(element, i);
+        return element;
+      },
+      // Checks if the given element is a child
+      has: function has(element) {
+        return this.index(element) >= 0;
+      },
+      // Gets index of given element
+      index: function index(element) {
+        return [].slice.call(this.node.childNodes).indexOf(element.node);
+      },
+      // Get a element at the given index
+      get: function get(i) {
+        return SVG.adopt(this.node.childNodes[i]);
+      },
+      // Get first child
+      first: function first() {
+        return this.get(0);
+      },
+      // Get the last child
+      last: function last() {
+        return this.get(this.node.childNodes.length - 1);
+      },
+      // Iterates over all children and invokes a given block
+      each: function each(block, deep) {
+        var i,
+            il,
+            children = this.children();
+
+        for (i = 0, il = children.length; i < il; i++) {
+          if (children[i] instanceof SVG.Element) {
+            block.apply(children[i], [i, children]);
+          }
+
+          if (deep && children[i] instanceof SVG.Container) {
+            children[i].each(block, deep);
+          }
+        }
+
+        return this;
+      },
+      // Remove a given child
+      removeElement: function removeElement(element) {
+        this.node.removeChild(element.node);
+        return this;
+      },
+      // Remove all elements in this container
+      clear: function clear() {
+        // remove children
+        while (this.node.hasChildNodes()) {
+          this.node.removeChild(this.node.lastChild);
+        } // remove defs reference
+
+
+        delete this._defs;
+        return this;
+      },
+      // Get defs
+      defs: function defs() {
+        return this.doc().defs();
+      }
+    }
+  });
+  SVG.extend(SVG.Parent, {
+    ungroup: function ungroup(parent, depth) {
+      if (depth === 0 || this instanceof SVG.Defs || this.node == SVG.parser.draw) return this;
+      parent = parent || (this instanceof SVG.Doc ? this : this.parent(SVG.Parent));
+      depth = depth || Infinity;
+      this.each(function () {
+        if (this instanceof SVG.Defs) return this;
+        if (this instanceof SVG.Parent) return this.ungroup(parent, depth - 1);
+        return this.toParent(parent);
+      });
+      this.node.firstChild || this.remove();
+      return this;
+    },
+    flatten: function flatten(parent, depth) {
+      return this.ungroup(parent, depth);
+    }
+  });
+  SVG.Container = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      this.constructor.call(this, element);
+    },
+    // Inherit from
+    inherit: SVG.Parent
+  });
+  SVG.ViewBox = SVG.invent({
+    create: function create(source) {
+      var base = [0, 0, 0, 0];
+      var x,
+          y,
+          width,
+          height,
+          box,
+          view,
+          we,
+          he,
+          wm = 1,
+          // width multiplier
+      hm = 1,
+          // height multiplier
+      reg = /[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/gi;
+
+      if (source instanceof SVG.Element) {
+        we = source;
+        he = source;
+        view = (source.attr('viewBox') || '').match(reg);
+        box = source.bbox; // get dimensions of current node
+
+        width = new SVG.Number(source.width());
+        height = new SVG.Number(source.height()); // find nearest non-percentual dimensions
+
+        while (width.unit == '%') {
+          wm *= width.value;
+          width = new SVG.Number(we instanceof SVG.Doc ? we.parent().offsetWidth : we.parent().width());
+          we = we.parent();
+        }
+
+        while (height.unit == '%') {
+          hm *= height.value;
+          height = new SVG.Number(he instanceof SVG.Doc ? he.parent().offsetHeight : he.parent().height());
+          he = he.parent();
+        } // ensure defaults
+
+
+        this.x = 0;
+        this.y = 0;
+        this.width = width * wm;
+        this.height = height * hm;
+        this.zoom = 1;
+
+        if (view) {
+          // get width and height from viewbox
+          x = parseFloat(view[0]);
+          y = parseFloat(view[1]);
+          width = parseFloat(view[2]);
+          height = parseFloat(view[3]); // calculate zoom accoring to viewbox
+
+          this.zoom = this.width / this.height > width / height ? this.height / height : this.width / width; // calculate real pixel dimensions on parent SVG.Doc element
+
+          this.x = x;
+          this.y = y;
+          this.width = width;
+          this.height = height;
+        }
+      } else {
+        // ensure source as object
+        source = typeof source === 'string' ? source.match(reg).map(function (el) {
+          return parseFloat(el);
+        }) : Array.isArray(source) ? source : _typeof(source) === 'object' ? [source.x, source.y, source.width, source.height] : arguments.length == 4 ? [].slice.call(arguments) : base;
+        this.x = source[0];
+        this.y = source[1];
+        this.width = source[2];
+        this.height = source[3];
+      }
+    },
+    extend: {
+      toString: function toString() {
+        return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height;
+      },
+      morph: function morph(x, y, width, height) {
+        this.destination = new SVG.ViewBox(x, y, width, height);
+        return this;
+      },
+      at: function at(pos) {
+        if (!this.destination) return this;
+        return new SVG.ViewBox([this.x + (this.destination.x - this.x) * pos, this.y + (this.destination.y - this.y) * pos, this.width + (this.destination.width - this.width) * pos, this.height + (this.destination.height - this.height) * pos]);
+      }
+    },
+    // Define parent
+    parent: SVG.Container,
+    // Add parent method
+    construct: {
+      // get/set viewbox
+      viewbox: function viewbox(x, y, width, height) {
+        if (arguments.length == 0) // act as a getter if there are no arguments
+          {
+            return new SVG.ViewBox(this);
+          } // otherwise act as a setter
+
+
+        return this.attr('viewBox', new SVG.ViewBox(x, y, width, height));
+      }
+    }
+  }) // Add events to elements
+  ;
+  ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'mousemove', // , 'mouseenter' -> not supported by IE
+  // , 'mouseleave' -> not supported by IE
+  'touchstart', 'touchmove', 'touchleave', 'touchend', 'touchcancel'].forEach(function (event) {
+    // add event to SVG.Element
+    SVG.Element.prototype[event] = function (f) {
+      // bind event to element rather than element node
+      SVG.on(this.node, event, f);
+      return this;
+    };
+  }); // Initialize listeners stack
+
+  SVG.listeners = [];
+  SVG.handlerMap = [];
+  SVG.listenerId = 0; // Add event binder in the SVG namespace
+
+  SVG.on = function (node, event, listener, binding, options) {
+    // create listener, get object-index
+    var l = listener.bind(binding || node.instance || node),
+        index = (SVG.handlerMap.indexOf(node) + 1 || SVG.handlerMap.push(node)) - 1,
+        ev = event.split('.')[0],
+        ns = event.split('.')[1] || '*'; // ensure valid object
+
+    SVG.listeners[index] = SVG.listeners[index] || {};
+    SVG.listeners[index][ev] = SVG.listeners[index][ev] || {};
+    SVG.listeners[index][ev][ns] = SVG.listeners[index][ev][ns] || {};
+
+    if (!listener._svgjsListenerId) {
+      listener._svgjsListenerId = ++SVG.listenerId;
+    } // reference listener
+
+
+    SVG.listeners[index][ev][ns][listener._svgjsListenerId] = l; // add listener
+
+    node.addEventListener(ev, l, options || false);
+  }; // Add event unbinder in the SVG namespace
+
+
+  SVG.off = function (node, event, listener) {
+    var index = SVG.handlerMap.indexOf(node),
+        ev = event && event.split('.')[0],
+        ns = event && event.split('.')[1],
+        namespace = '';
+    if (index == -1) return;
+
+    if (listener) {
+      if (typeof listener === 'function') listener = listener._svgjsListenerId;
+      if (!listener) return; // remove listener reference
+
+      if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns || '*']) {
+        // remove listener
+        node.removeEventListener(ev, SVG.listeners[index][ev][ns || '*'][listener], false);
+        delete SVG.listeners[index][ev][ns || '*'][listener];
+      }
+    } else if (ns && ev) {
+      // remove all listeners for a namespaced event
+      if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns]) {
+        for (listener in SVG.listeners[index][ev][ns]) {
+          SVG.off(node, [ev, ns].join('.'), listener);
+        }
+
+        delete SVG.listeners[index][ev][ns];
+      }
+    } else if (ns) {
+      // remove all listeners for a specific namespace
+      for (event in SVG.listeners[index]) {
+        for (namespace in SVG.listeners[index][event]) {
+          if (ns === namespace) {
+            SVG.off(node, [event, ns].join('.'));
+          }
+        }
+      }
+    } else if (ev) {
+      // remove all listeners for the event
+      if (SVG.listeners[index][ev]) {
+        for (namespace in SVG.listeners[index][ev]) {
+          SVG.off(node, [ev, namespace].join('.'));
+        }
+
+        delete SVG.listeners[index][ev];
+      }
+    } else {
+      // remove all listeners on a given node
+      for (event in SVG.listeners[index]) {
+        SVG.off(node, event);
+      }
+
+      delete SVG.listeners[index];
+      delete SVG.handlerMap[index];
+    }
+  }; //
+
+
+  SVG.extend(SVG.Element, {
+    // Bind given event to listener
+    on: function on(event, listener, binding, options) {
+      SVG.on(this.node, event, listener, binding, options);
+      return this;
+    },
+    // Unbind event from listener
+    off: function off(event, listener) {
+      SVG.off(this.node, event, listener);
+      return this;
+    },
+    // Fire given event
+    fire: function fire(event, data) {
+      // Dispatch event
+      if (event instanceof window.Event) {
+        this.node.dispatchEvent(event);
+      } else {
+        this.node.dispatchEvent(event = new SVG.CustomEvent(event, {
+          detail: data,
+          cancelable: true
+        }));
+      }
+
+      this._event = event;
+      return this;
+    },
+    event: function event() {
+      return this._event;
+    }
+  });
+  SVG.Defs = SVG.invent({
+    // Initialize node
+    create: 'defs',
+    // Inherit from
+    inherit: SVG.Container
+  });
+  SVG.G = SVG.invent({
+    // Initialize node
+    create: 'g',
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Move over x-axis
+      x: function x(_x3) {
+        return _x3 == null ? this.transform('x') : this.transform({
+          x: _x3 - this.x()
+        }, true);
+      },
+      // Move over y-axis
+      y: function y(_y3) {
+        return _y3 == null ? this.transform('y') : this.transform({
+          y: _y3 - this.y()
+        }, true);
+      },
+      // Move by center over x-axis
+      cx: function cx(x) {
+        return x == null ? this.gbox().cx : this.x(x - this.gbox().width / 2);
+      },
+      // Move by center over y-axis
+      cy: function cy(y) {
+        return y == null ? this.gbox().cy : this.y(y - this.gbox().height / 2);
+      },
+      gbox: function gbox() {
+        var bbox = this.bbox(),
+            trans = this.transform();
+        bbox.x += trans.x;
+        bbox.x2 += trans.x;
+        bbox.cx += trans.x;
+        bbox.y += trans.y;
+        bbox.y2 += trans.y;
+        bbox.cy += trans.y;
+        return bbox;
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a group element
+      group: function group() {
+        return this.put(new SVG.G());
+      }
+    }
+  });
+  SVG.Doc = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      if (element) {
+        // ensure the presence of a dom element
+        element = typeof element === 'string' ? document.getElementById(element) : element; // If the target is an svg element, use that element as the main wrapper.
+        // This allows svg.js to work with svg documents as well.
+
+        if (element.nodeName == 'svg') {
+          this.constructor.call(this, element);
+        } else {
+          this.constructor.call(this, SVG.create('svg'));
+          element.appendChild(this.node);
+          this.size('100%', '100%');
+        } // set svg element attributes and ensure defs node
+
+
+        this.namespace().defs();
+      }
+    },
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Add namespaces
+      namespace: function namespace() {
+        return this.attr({
+          xmlns: SVG.ns,
+          version: '1.1'
+        }).attr('xmlns:xlink', SVG.xlink, SVG.xmlns).attr('xmlns:svgjs', SVG.svgjs, SVG.xmlns);
+      },
+      // Creates and returns defs element
+      defs: function defs() {
+        if (!this._defs) {
+          var defs; // Find or create a defs element in this instance
+
+          if (defs = this.node.getElementsByTagName('defs')[0]) {
+            this._defs = SVG.adopt(defs);
+          } else {
+            this._defs = new SVG.Defs();
+          } // Make sure the defs node is at the end of the stack
+
+
+          this.node.appendChild(this._defs.node);
+        }
+
+        return this._defs;
+      },
+      // custom parent method
+      parent: function parent() {
+        if (!this.node.parentNode || this.node.parentNode.nodeName == '#document') return null;
+        return this.node.parentNode;
+      },
+      // Fix for possible sub-pixel offset. See:
+      // https://bugzilla.mozilla.org/show_bug.cgi?id=608812
+      spof: function spof() {
+        var pos = this.node.getScreenCTM();
+
+        if (pos) {
+          this.style('left', -pos.e % 1 + 'px').style('top', -pos.f % 1 + 'px');
+        }
+
+        return this;
+      },
+      // Removes the doc from the DOM
+      remove: function remove() {
+        if (this.parent()) {
+          this.parent().removeChild(this.node);
+        }
+
+        return this;
+      },
+      clear: function clear() {
+        // remove children
+        while (this.node.hasChildNodes()) {
+          this.node.removeChild(this.node.lastChild);
+        } // remove defs reference
+
+
+        delete this._defs; // add back parser
+
+        if (SVG.parser.draw && !SVG.parser.draw.parentNode) {
+          this.node.appendChild(SVG.parser.draw);
+        }
+
+        return this;
+      },
+      clone: function clone(parent) {
+        // write dom data to the dom so the clone can pickup the data
+        this.writeDataToDom(); // get reference to node
+
+        var node = this.node; // clone element and assign new id
+
+        var clone = assignNewId(node.cloneNode(true)); // insert the clone in the given parent or after myself
+
+        if (parent) {
+          (parent.node || parent).appendChild(clone.node);
+        } else {
+          node.parentNode.insertBefore(clone.node, node.nextSibling);
+        }
+
+        return clone;
+      }
+    }
+  }); // ### This module adds backward / forward functionality to elements.
+  //
+
+  SVG.extend(SVG.Element, {
+    // Get all siblings, including myself
+    siblings: function siblings() {
+      return this.parent().children();
+    },
+    // Get the curent position siblings
+    position: function position() {
+      return this.parent().index(this);
+    },
+    // Get the next element (will return null if there is none)
+    next: function next() {
+      return this.siblings()[this.position() + 1];
+    },
+    // Get the next element (will return null if there is none)
+    previous: function previous() {
+      return this.siblings()[this.position() - 1];
+    },
+    // Send given element one step forward
+    forward: function forward() {
+      var i = this.position() + 1,
+          p = this.parent(); // move node one step forward
+
+      p.removeElement(this).add(this, i); // make sure defs node is always at the top
+
+      if (p instanceof SVG.Doc) {
+        p.node.appendChild(p.defs().node);
+      }
+
+      return this;
+    },
+    // Send given element one step backward
+    backward: function backward() {
+      var i = this.position();
+
+      if (i > 0) {
+        this.parent().removeElement(this).add(this, i - 1);
+      }
+
+      return this;
+    },
+    // Send given element all the way to the front
+    front: function front() {
+      var p = this.parent(); // Move node forward
+
+      p.node.appendChild(this.node); // Make sure defs node is always at the top
+
+      if (p instanceof SVG.Doc) {
+        p.node.appendChild(p.defs().node);
+      }
+
+      return this;
+    },
+    // Send given element all the way to the back
+    back: function back() {
+      if (this.position() > 0) {
+        this.parent().removeElement(this).add(this, 0);
+      }
+
+      return this;
+    },
+    // Inserts a given element before the targeted element
+    before: function before(element) {
+      element.remove();
+      var i = this.position();
+      this.parent().add(element, i);
+      return this;
+    },
+    // Insters a given element after the targeted element
+    after: function after(element) {
+      element.remove();
+      var i = this.position();
+      this.parent().add(element, i + 1);
+      return this;
+    }
+  });
+  SVG.Mask = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('mask')); // keep references to masked elements
+
+      this.targets = [];
+    },
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Unmask all masked elements and remove itself
+      remove: function remove() {
+        // unmask all targets
+        for (var i = this.targets.length - 1; i >= 0; i--) {
+          if (this.targets[i]) {
+            this.targets[i].unmask();
+          }
+        }
+
+        this.targets = []; // remove mask from parent
+
+        SVG.Element.prototype.remove.call(this);
+        return this;
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create masking element
+      mask: function mask() {
+        return this.defs().put(new SVG.Mask());
+      }
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Distribute mask to svg element
+    maskWith: function maskWith(element) {
+      // use given mask or create a new one
+      this.masker = element instanceof SVG.Mask ? element : this.parent().mask().add(element); // store reverence on self in mask
+
+      this.masker.targets.push(this); // apply mask
+
+      return this.attr('mask', 'url("#' + this.masker.attr('id') + '")');
+    },
+    // Unmask element
+    unmask: function unmask() {
+      delete this.masker;
+      return this.attr('mask', null);
+    }
+  });
+  SVG.ClipPath = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('clipPath')); // keep references to clipped elements
+
+      this.targets = [];
+    },
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Unclip all clipped elements and remove itself
+      remove: function remove() {
+        // unclip all targets
+        for (var i = this.targets.length - 1; i >= 0; i--) {
+          if (this.targets[i]) {
+            this.targets[i].unclip();
+          }
+        }
+
+        this.targets = []; // remove clipPath from parent
+
+        this.parent().removeElement(this);
+        return this;
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create clipping element
+      clip: function clip() {
+        return this.defs().put(new SVG.ClipPath());
+      }
+    }
+  }); //
+
+  SVG.extend(SVG.Element, {
+    // Distribute clipPath to svg element
+    clipWith: function clipWith(element) {
+      // use given clip or create a new one
+      this.clipper = element instanceof SVG.ClipPath ? element : this.parent().clip().add(element); // store reverence on self in mask
+
+      this.clipper.targets.push(this); // apply mask
+
+      return this.attr('clip-path', 'url("#' + this.clipper.attr('id') + '")');
+    },
+    // Unclip element
+    unclip: function unclip() {
+      delete this.clipper;
+      return this.attr('clip-path', null);
+    }
+  });
+  SVG.Gradient = SVG.invent({
+    // Initialize node
+    create: function create(type) {
+      this.constructor.call(this, SVG.create(type + 'Gradient')); // store type
+
+      this.type = type;
+    },
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Add a color stop
+      at: function at(offset, color, opacity) {
+        return this.put(new SVG.Stop()).update(offset, color, opacity);
+      },
+      // Update gradient
+      update: function update(block) {
+        // remove all stops
+        this.clear(); // invoke passed block
+
+        if (typeof block === 'function') {
+          block.call(this, this);
+        }
+
+        return this;
+      },
+      // Return the fill id
+      fill: function fill() {
+        return 'url(#' + this.id() + ')';
+      },
+      // Alias string convertion to fill
+      toString: function toString() {
+        return this.fill();
+      },
+      // custom attr to handle transform
+      attr: function attr(a, b, c) {
+        if (a == 'transform') a = 'gradientTransform';
+        return SVG.Container.prototype.attr.call(this, a, b, c);
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create gradient element in defs
+      gradient: function gradient(type, block) {
+        return this.defs().gradient(type, block);
+      }
+    }
+  }); // Add animatable methods to both gradient and fx module
+
+  SVG.extend(SVG.Gradient, SVG.FX, {
+    // From position
+    from: function from(x, y) {
+      return (this._target || this).type == 'radial' ? this.attr({
+        fx: new SVG.Number(x),
+        fy: new SVG.Number(y)
+      }) : this.attr({
+        x1: new SVG.Number(x),
+        y1: new SVG.Number(y)
+      });
+    },
+    // To position
+    to: function to(x, y) {
+      return (this._target || this).type == 'radial' ? this.attr({
+        cx: new SVG.Number(x),
+        cy: new SVG.Number(y)
+      }) : this.attr({
+        x2: new SVG.Number(x),
+        y2: new SVG.Number(y)
+      });
+    }
+  }); // Base gradient generation
+
+  SVG.extend(SVG.Defs, {
+    // define gradient
+    gradient: function gradient(type, block) {
+      return this.put(new SVG.Gradient(type)).update(block);
+    }
+  });
+  SVG.Stop = SVG.invent({
+    // Initialize node
+    create: 'stop',
+    // Inherit from
+    inherit: SVG.Element,
+    // Add class methods
+    extend: {
+      // add color stops
+      update: function update(o) {
+        if (typeof o === 'number' || o instanceof SVG.Number) {
+          o = {
+            offset: arguments[0],
+            color: arguments[1],
+            opacity: arguments[2]
+          };
+        } // set attributes
+
+
+        if (o.opacity != null) this.attr('stop-opacity', o.opacity);
+        if (o.color != null) this.attr('stop-color', o.color);
+        if (o.offset != null) this.attr('offset', new SVG.Number(o.offset));
+        return this;
+      }
+    }
+  });
+  SVG.Pattern = SVG.invent({
+    // Initialize node
+    create: 'pattern',
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Return the fill id
+      fill: function fill() {
+        return 'url(#' + this.id() + ')';
+      },
+      // Update pattern by rebuilding
+      update: function update(block) {
+        // remove content
+        this.clear(); // invoke passed block
+
+        if (typeof block === 'function') {
+          block.call(this, this);
+        }
+
+        return this;
+      },
+      // Alias string convertion to fill
+      toString: function toString() {
+        return this.fill();
+      },
+      // custom attr to handle transform
+      attr: function attr(a, b, c) {
+        if (a == 'transform') a = 'patternTransform';
+        return SVG.Container.prototype.attr.call(this, a, b, c);
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create pattern element in defs
+      pattern: function pattern(width, height, block) {
+        return this.defs().pattern(width, height, block);
+      }
+    }
+  });
+  SVG.extend(SVG.Defs, {
+    // Define gradient
+    pattern: function pattern(width, height, block) {
+      return this.put(new SVG.Pattern()).update(block).attr({
+        x: 0,
+        y: 0,
+        width: width,
+        height: height,
+        patternUnits: 'userSpaceOnUse'
+      });
+    }
+  });
+  SVG.Shape = SVG.invent({
+    // Initialize node
+    create: function create(element) {
+      this.constructor.call(this, element);
+    },
+    // Inherit from
+    inherit: SVG.Element
+  });
+  SVG.Bare = SVG.invent({
+    // Initialize
+    create: function create(element, inherit) {
+      // construct element
+      this.constructor.call(this, SVG.create(element)); // inherit custom methods
+
+      if (inherit) {
+        for (var method in inherit.prototype) {
+          if (typeof inherit.prototype[method] === 'function') {
+            this[method] = inherit.prototype[method];
+          }
+        }
+      }
+    },
+    // Inherit from
+    inherit: SVG.Element,
+    // Add methods
+    extend: {
+      // Insert some plain text
+      words: function words(text) {
+        // remove contents
+        while (this.node.hasChildNodes()) {
+          this.node.removeChild(this.node.lastChild);
+        } // create text node
+
+
+        this.node.appendChild(document.createTextNode(text));
+        return this;
+      }
+    }
+  });
+  SVG.extend(SVG.Parent, {
+    // Create an element that is not described by SVG.js
+    element: function element(_element, inherit) {
+      return this.put(new SVG.Bare(_element, inherit));
+    }
+  });
+  SVG.Symbol = SVG.invent({
+    // Initialize node
+    create: 'symbol',
+    // Inherit from
+    inherit: SVG.Container,
+    construct: {
+      // create symbol
+      symbol: function symbol() {
+        return this.put(new SVG.Symbol());
+      }
+    }
+  });
+  SVG.Use = SVG.invent({
+    // Initialize node
+    create: 'use',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // Use element as a reference
+      element: function element(_element2, file) {
+        // Set lined element
+        return this.attr('href', (file || '') + '#' + _element2, SVG.xlink);
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a use element
+      use: function use(element, file) {
+        return this.put(new SVG.Use()).element(element, file);
+      }
+    }
+  });
+  SVG.Rect = SVG.invent({
+    // Initialize node
+    create: 'rect',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add parent method
+    construct: {
+      // Create a rect element
+      rect: function rect(width, height) {
+        return this.put(new SVG.Rect()).size(width, height);
+      }
+    }
+  });
+  SVG.Circle = SVG.invent({
+    // Initialize node
+    create: 'circle',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add parent method
+    construct: {
+      // Create circle element, based on ellipse
+      circle: function circle(size) {
+        return this.put(new SVG.Circle()).rx(new SVG.Number(size).divide(2)).move(0, 0);
+      }
+    }
+  });
+  SVG.extend(SVG.Circle, SVG.FX, {
+    // Radius x value
+    rx: function rx(_rx) {
+      return this.attr('r', _rx);
+    },
+    // Alias radius x value
+    ry: function ry(_ry) {
+      return this.rx(_ry);
+    }
+  });
+  SVG.Ellipse = SVG.invent({
+    // Initialize node
+    create: 'ellipse',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add parent method
+    construct: {
+      // Create an ellipse
+      ellipse: function ellipse(width, height) {
+        return this.put(new SVG.Ellipse()).size(width, height).move(0, 0);
+      }
+    }
+  });
+  SVG.extend(SVG.Ellipse, SVG.Rect, SVG.FX, {
+    // Radius x value
+    rx: function rx(_rx2) {
+      return this.attr('rx', _rx2);
+    },
+    // Radius y value
+    ry: function ry(_ry2) {
+      return this.attr('ry', _ry2);
+    }
+  }); // Add common method
+
+  SVG.extend(SVG.Circle, SVG.Ellipse, {
+    // Move over x-axis
+    x: function x(_x4) {
+      return _x4 == null ? this.cx() - this.rx() : this.cx(_x4 + this.rx());
+    },
+    // Move over y-axis
+    y: function y(_y4) {
+      return _y4 == null ? this.cy() - this.ry() : this.cy(_y4 + this.ry());
+    },
+    // Move by center over x-axis
+    cx: function cx(x) {
+      return x == null ? this.attr('cx') : this.attr('cx', x);
+    },
+    // Move by center over y-axis
+    cy: function cy(y) {
+      return y == null ? this.attr('cy') : this.attr('cy', y);
+    },
+    // Set width of element
+    width: function width(_width3) {
+      return _width3 == null ? this.rx() * 2 : this.rx(new SVG.Number(_width3).divide(2));
+    },
+    // Set height of element
+    height: function height(_height3) {
+      return _height3 == null ? this.ry() * 2 : this.ry(new SVG.Number(_height3).divide(2));
+    },
+    // Custom size function
+    size: function size(width, height) {
+      var p = proportionalSize(this, width, height);
+      return this.rx(new SVG.Number(p.width).divide(2)).ry(new SVG.Number(p.height).divide(2));
+    }
+  });
+  SVG.Line = SVG.invent({
+    // Initialize node
+    create: 'line',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // Get array
+      array: function array() {
+        return new SVG.PointArray([[this.attr('x1'), this.attr('y1')], [this.attr('x2'), this.attr('y2')]]);
+      },
+      // Overwrite native plot() method
+      plot: function plot(x1, y1, x2, y2) {
+        if (x1 == null) {
+          return this.array();
+        } else if (typeof y1 !== 'undefined') {
+          x1 = {
+            x1: x1,
+            y1: y1,
+            x2: x2,
+            y2: y2
+          };
+        } else {
+          x1 = new SVG.PointArray(x1).toLine();
+        }
+
+        return this.attr(x1);
+      },
+      // Move by left top corner
+      move: function move(x, y) {
+        return this.attr(this.array().move(x, y).toLine());
+      },
+      // Set element size to given width and height
+      size: function size(width, height) {
+        var p = proportionalSize(this, width, height);
+        return this.attr(this.array().size(p.width, p.height).toLine());
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a line element
+      line: function line(x1, y1, x2, y2) {
+        // make sure plot is called as a setter
+        // x1 is not necessarily a number, it can also be an array, a string and a SVG.PointArray
+        return SVG.Line.prototype.plot.apply(this.put(new SVG.Line()), x1 != null ? [x1, y1, x2, y2] : [0, 0, 0, 0]);
+      }
+    }
+  });
+  SVG.Polyline = SVG.invent({
+    // Initialize node
+    create: 'polyline',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add parent method
+    construct: {
+      // Create a wrapped polyline element
+      polyline: function polyline(p) {
+        // make sure plot is called as a setter
+        return this.put(new SVG.Polyline()).plot(p || new SVG.PointArray());
+      }
+    }
+  });
+  SVG.Polygon = SVG.invent({
+    // Initialize node
+    create: 'polygon',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add parent method
+    construct: {
+      // Create a wrapped polygon element
+      polygon: function polygon(p) {
+        // make sure plot is called as a setter
+        return this.put(new SVG.Polygon()).plot(p || new SVG.PointArray());
+      }
+    }
+  }); // Add polygon-specific functions
+
+  SVG.extend(SVG.Polyline, SVG.Polygon, {
+    // Get array
+    array: function array() {
+      return this._array || (this._array = new SVG.PointArray(this.attr('points')));
+    },
+    // Plot new path
+    plot: function plot(p) {
+      return p == null ? this.array() : this.clear().attr('points', typeof p === 'string' ? p : this._array = new SVG.PointArray(p));
+    },
+    // Clear array cache
+    clear: function clear() {
+      delete this._array;
+      return this;
+    },
+    // Move by left top corner
+    move: function move(x, y) {
+      return this.attr('points', this.array().move(x, y));
+    },
+    // Set element size to given width and height
+    size: function size(width, height) {
+      var p = proportionalSize(this, width, height);
+      return this.attr('points', this.array().size(p.width, p.height));
+    }
+  }); // unify all point to point elements
+
+  SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, {
+    // Define morphable array
+    morphArray: SVG.PointArray,
+    // Move by left top corner over x-axis
+    x: function x(_x5) {
+      return _x5 == null ? this.bbox().x : this.move(_x5, this.bbox().y);
+    },
+    // Move by left top corner over y-axis
+    y: function y(_y5) {
+      return _y5 == null ? this.bbox().y : this.move(this.bbox().x, _y5);
+    },
+    // Set width of element
+    width: function width(_width4) {
+      var b = this.bbox();
+      return _width4 == null ? b.width : this.size(_width4, b.height);
+    },
+    // Set height of element
+    height: function height(_height4) {
+      var b = this.bbox();
+      return _height4 == null ? b.height : this.size(b.width, _height4);
+    }
+  });
+  SVG.Path = SVG.invent({
+    // Initialize node
+    create: 'path',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // Define morphable array
+      morphArray: SVG.PathArray,
+      // Get array
+      array: function array() {
+        return this._array || (this._array = new SVG.PathArray(this.attr('d')));
+      },
+      // Plot new path
+      plot: function plot(d) {
+        return d == null ? this.array() : this.clear().attr('d', typeof d === 'string' ? d : this._array = new SVG.PathArray(d));
+      },
+      // Clear array cache
+      clear: function clear() {
+        delete this._array;
+        return this;
+      },
+      // Move by left top corner
+      move: function move(x, y) {
+        return this.attr('d', this.array().move(x, y));
+      },
+      // Move by left top corner over x-axis
+      x: function x(_x6) {
+        return _x6 == null ? this.bbox().x : this.move(_x6, this.bbox().y);
+      },
+      // Move by left top corner over y-axis
+      y: function y(_y6) {
+        return _y6 == null ? this.bbox().y : this.move(this.bbox().x, _y6);
+      },
+      // Set element size to given width and height
+      size: function size(width, height) {
+        var p = proportionalSize(this, width, height);
+        return this.attr('d', this.array().size(p.width, p.height));
+      },
+      // Set width of element
+      width: function width(_width5) {
+        return _width5 == null ? this.bbox().width : this.size(_width5, this.bbox().height);
+      },
+      // Set height of element
+      height: function height(_height5) {
+        return _height5 == null ? this.bbox().height : this.size(this.bbox().width, _height5);
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a wrapped path element
+      path: function path(d) {
+        // make sure plot is called as a setter
+        return this.put(new SVG.Path()).plot(d || new SVG.PathArray());
+      }
+    }
+  });
+  SVG.Image = SVG.invent({
+    // Initialize node
+    create: 'image',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // (re)load image
+      load: function load(url) {
+        if (!url) return this;
+        var self = this,
+            img = new window.Image(); // preload image
+
+        SVG.on(img, 'load', function () {
+          SVG.off(img);
+          var p = self.parent(SVG.Pattern);
+          if (p === null) return; // ensure image size
+
+          if (self.width() == 0 && self.height() == 0) {
+            self.size(img.width, img.height);
+          } // ensure pattern size if not set
+
+
+          if (p && p.width() == 0 && p.height() == 0) {
+            p.size(self.width(), self.height());
+          } // callback
+
+
+          if (typeof self._loaded === 'function') {
+            self._loaded.call(self, {
+              width: img.width,
+              height: img.height,
+              ratio: img.width / img.height,
+              url: url
+            });
+          }
+        });
+        SVG.on(img, 'error', function (e) {
+          SVG.off(img);
+
+          if (typeof self._error === 'function') {
+            self._error.call(self, e);
+          }
+        });
+        return this.attr('href', img.src = this.src = url, SVG.xlink);
+      },
+      // Add loaded callback
+      loaded: function loaded(_loaded) {
+        this._loaded = _loaded;
+        return this;
+      },
+      error: function error(_error) {
+        this._error = _error;
+        return this;
+      }
+    },
+    // Add parent method
+    construct: {
+      // create image element, load image and set its size
+      image: function image(source, width, height) {
+        return this.put(new SVG.Image()).load(source).size(width || 0, height || width || 0);
+      }
+    }
+  });
+  SVG.Text = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('text'));
+      this.dom.leading = new SVG.Number(1.3); // store leading value for rebuilding
+
+      this._rebuild = true; // enable automatic updating of dy values
+
+      this._build = false; // disable build mode for adding multiple lines
+      // set default font
+
+      this.attr('font-family', SVG.defaults.attrs['font-family']);
+    },
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // Move over x-axis
+      x: function x(_x7) {
+        // act as getter
+        if (_x7 == null) {
+          return this.attr('x');
+        }
+
+        return this.attr('x', _x7);
+      },
+      // Move over y-axis
+      y: function y(_y7) {
+        var oy = this.attr('y'),
+            o = typeof oy === 'number' ? oy - this.bbox().y : 0; // act as getter
+
+        if (_y7 == null) {
+          return typeof oy === 'number' ? oy - o : oy;
+        }
+
+        return this.attr('y', typeof _y7.valueOf() === 'number' ? _y7 + o : _y7);
+      },
+      // Move center over x-axis
+      cx: function cx(x) {
+        return x == null ? this.bbox().cx : this.x(x - this.bbox().width / 2);
+      },
+      // Move center over y-axis
+      cy: function cy(y) {
+        return y == null ? this.bbox().cy : this.y(y - this.bbox().height / 2);
+      },
+      // Set the text content
+      text: function text(_text) {
+        // act as getter
+        if (typeof _text === 'undefined') {
+          var _text = '';
+          var children = this.node.childNodes;
+
+          for (var i = 0, len = children.length; i < len; ++i) {
+            // add newline if its not the first child and newLined is set to true
+            if (i != 0 && children[i].nodeType != 3 && SVG.adopt(children[i]).dom.newLined == true) {
+              _text += '\n';
+            } // add content of this node
+
+
+            _text += children[i].textContent;
+          }
+
+          return _text;
+        } // remove existing content
+
+
+        this.clear().build(true);
+
+        if (typeof _text === 'function') {
+          // call block
+          _text.call(this, this);
+        } else {
+          // store text and make sure text is not blank
+          _text = _text.split('\n'); // build new lines
+
+          for (var i = 0, il = _text.length; i < il; i++) {
+            this.tspan(_text[i]).newLine();
+          }
+        } // disable build mode and rebuild lines
+
+
+        return this.build(false).rebuild();
+      },
+      // Set font size
+      size: function size(_size) {
+        return this.attr('font-size', _size).rebuild();
+      },
+      // Set / get leading
+      leading: function leading(value) {
+        // act as getter
+        if (value == null) {
+          return this.dom.leading;
+        } // act as setter
+
+
+        this.dom.leading = new SVG.Number(value);
+        return this.rebuild();
+      },
+      // Get all the first level lines
+      lines: function lines() {
+        var node = (this.textPath && this.textPath() || this).node; // filter tspans and map them to SVG.js instances
+
+        var lines = SVG.utils.map(SVG.utils.filterSVGElements(node.childNodes), function (el) {
+          return SVG.adopt(el);
+        }); // return an instance of SVG.set
+
+        return new SVG.Set(lines);
+      },
+      // Rebuild appearance type
+      rebuild: function rebuild(_rebuild) {
+        // store new rebuild flag if given
+        if (typeof _rebuild === 'boolean') {
+          this._rebuild = _rebuild;
+        } // define position of all lines
+
+
+        if (this._rebuild) {
+          var self = this,
+              blankLineOffset = 0,
+              dy = this.dom.leading * new SVG.Number(this.attr('font-size'));
+          this.lines().each(function () {
+            if (this.dom.newLined) {
+              if (!self.textPath()) {
+                this.attr('x', self.attr('x'));
+              }
+
+              if (this.text() == '\n') {
+                blankLineOffset += dy;
+              } else {
+                this.attr('dy', dy + blankLineOffset);
+                blankLineOffset = 0;
+              }
+            }
+          });
+          this.fire('rebuild');
+        }
+
+        return this;
+      },
+      // Enable / disable build mode
+      build: function build(_build) {
+        this._build = !!_build;
+        return this;
+      },
+      // overwrite method from parent to set data properly
+      setData: function setData(o) {
+        this.dom = o;
+        this.dom.leading = new SVG.Number(o.leading || 1.3);
+        return this;
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create text element
+      text: function text(_text2) {
+        return this.put(new SVG.Text()).text(_text2);
+      },
+      // Create plain text element
+      plain: function plain(text) {
+        return this.put(new SVG.Text()).plain(text);
+      }
+    }
+  });
+  SVG.Tspan = SVG.invent({
+    // Initialize node
+    create: 'tspan',
+    // Inherit from
+    inherit: SVG.Shape,
+    // Add class methods
+    extend: {
+      // Set text content
+      text: function text(_text3) {
+        if (_text3 == null) return this.node.textContent + (this.dom.newLined ? '\n' : '');
+        typeof _text3 === 'function' ? _text3.call(this, this) : this.plain(_text3);
+        return this;
+      },
+      // Shortcut dx
+      dx: function dx(_dx) {
+        return this.attr('dx', _dx);
+      },
+      // Shortcut dy
+      dy: function dy(_dy) {
+        return this.attr('dy', _dy);
+      },
+      // Create new line
+      newLine: function newLine() {
+        // fetch text parent
+        var t = this.parent(SVG.Text); // mark new line
+
+        this.dom.newLined = true; // apply new hy¡n
+
+        return this.dy(t.dom.leading * t.attr('font-size')).attr('x', t.x());
+      }
+    }
+  });
+  SVG.extend(SVG.Text, SVG.Tspan, {
+    // Create plain text node
+    plain: function plain(text) {
+      // clear if build mode is disabled
+      if (this._build === false) {
+        this.clear();
+      } // create text node
+
+
+      this.node.appendChild(document.createTextNode(text));
+      return this;
+    },
+    // Create a tspan
+    tspan: function tspan(text) {
+      var node = (this.textPath && this.textPath() || this).node,
+          tspan = new SVG.Tspan(); // clear if build mode is disabled
+
+      if (this._build === false) {
+        this.clear();
+      } // add new tspan
+
+
+      node.appendChild(tspan.node);
+      return tspan.text(text);
+    },
+    // Clear all lines
+    clear: function clear() {
+      var node = (this.textPath && this.textPath() || this).node; // remove existing child nodes
+
+      while (node.hasChildNodes()) {
+        node.removeChild(node.lastChild);
+      }
+
+      return this;
+    },
+    // Get length of text element
+    length: function length() {
+      return this.node.getComputedTextLength();
+    }
+  });
+  SVG.TextPath = SVG.invent({
+    // Initialize node
+    create: 'textPath',
+    // Inherit from
+    inherit: SVG.Parent,
+    // Define parent class
+    parent: SVG.Text,
+    // Add parent method
+    construct: {
+      morphArray: SVG.PathArray,
+      // Create path for text to run on
+      path: function path(d) {
+        // create textPath element
+        var path = new SVG.TextPath(),
+            track = this.doc().defs().path(d); // move lines to textpath
+
+        while (this.node.hasChildNodes()) {
+          path.node.appendChild(this.node.firstChild);
+        } // add textPath element as child node
+
+
+        this.node.appendChild(path.node); // link textPath to path and add content
+
+        path.attr('href', '#' + track, SVG.xlink);
+        return this;
+      },
+      // return the array of the path track element
+      array: function array() {
+        var track = this.track();
+        return track ? track.array() : null;
+      },
+      // Plot path if any
+      plot: function plot(d) {
+        var track = this.track(),
+            pathArray = null;
+
+        if (track) {
+          pathArray = track.plot(d);
+        }
+
+        return d == null ? pathArray : this;
+      },
+      // Get the path track element
+      track: function track() {
+        var path = this.textPath();
+
+        if (path) {
+          return path.reference('href');
+        }
+      },
+      // Get the textPath child
+      textPath: function textPath() {
+        if (this.node.firstChild && this.node.firstChild.nodeName == 'textPath') {
+          return SVG.adopt(this.node.firstChild);
+        }
+      }
+    }
+  });
+  SVG.Nested = SVG.invent({
+    // Initialize node
+    create: function create() {
+      this.constructor.call(this, SVG.create('svg'));
+      this.style('overflow', 'visible');
+    },
+    // Inherit from
+    inherit: SVG.Container,
+    // Add parent method
+    construct: {
+      // Create nested svg document
+      nested: function nested() {
+        return this.put(new SVG.Nested());
+      }
+    }
+  });
+  SVG.A = SVG.invent({
+    // Initialize node
+    create: 'a',
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Link url
+      to: function to(url) {
+        return this.attr('href', url, SVG.xlink);
+      },
+      // Link show attribute
+      show: function show(target) {
+        return this.attr('show', target, SVG.xlink);
+      },
+      // Link target attribute
+      target: function target(_target2) {
+        return this.attr('target', _target2);
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a hyperlink element
+      link: function link(url) {
+        return this.put(new SVG.A()).to(url);
+      }
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Create a hyperlink element
+    linkTo: function linkTo(url) {
+      var link = new SVG.A();
+
+      if (typeof url === 'function') {
+        url.call(link, link);
+      } else {
+        link.to(url);
+      }
+
+      return this.parent().put(link).put(this);
+    }
+  });
+  SVG.Marker = SVG.invent({
+    // Initialize node
+    create: 'marker',
+    // Inherit from
+    inherit: SVG.Container,
+    // Add class methods
+    extend: {
+      // Set width of element
+      width: function width(_width6) {
+        return this.attr('markerWidth', _width6);
+      },
+      // Set height of element
+      height: function height(_height6) {
+        return this.attr('markerHeight', _height6);
+      },
+      // Set marker refX and refY
+      ref: function ref(x, y) {
+        return this.attr('refX', x).attr('refY', y);
+      },
+      // Update marker
+      update: function update(block) {
+        // remove all content
+        this.clear(); // invoke passed block
+
+        if (typeof block === 'function') {
+          block.call(this, this);
+        }
+
+        return this;
+      },
+      // Return the fill id
+      toString: function toString() {
+        return 'url(#' + this.id() + ')';
+      }
+    },
+    // Add parent method
+    construct: {
+      marker: function marker(width, height, block) {
+        // Create marker element in defs
+        return this.defs().marker(width, height, block);
+      }
+    }
+  });
+  SVG.extend(SVG.Defs, {
+    // Create marker
+    marker: function marker(width, height, block) {
+      // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto
+      return this.put(new SVG.Marker()).size(width, height).ref(width / 2, height / 2).viewbox(0, 0, width, height).attr('orient', 'auto').update(block);
+    }
+  });
+  SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, SVG.Path, {
+    // Create and attach markers
+    marker: function marker(_marker, width, height, block) {
+      var attr = ['marker']; // Build attribute name
+
+      if (_marker != 'all') attr.push(_marker);
+      attr = attr.join('-'); // Set marker attribute
+
+      _marker = arguments[1] instanceof SVG.Marker ? arguments[1] : this.doc().marker(width, height, block);
+      return this.attr(attr, _marker);
+    }
+  }); // Define list of available attributes for stroke and fill
+
+  var sugar = {
+    stroke: ['color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset'],
+    fill: ['color', 'opacity', 'rule'],
+    prefix: function prefix(t, a) {
+      return a == 'color' ? t : t + '-' + a;
+    } // Add sugar for fill and stroke
+
+  };
+  ['fill', 'stroke'].forEach(function (m) {
+    var i,
+        extension = {};
+
+    extension[m] = function (o) {
+      if (typeof o === 'undefined') {
+        return this;
+      }
+
+      if (typeof o === 'string' || SVG.Color.isRgb(o) || o && typeof o.fill === 'function') {
+        this.attr(m, o);
+      } else // set all attributes from sugar.fill and sugar.stroke list
+        {
+          for (i = sugar[m].length - 1; i >= 0; i--) {
+            if (o[sugar[m][i]] != null) {
+              this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]]);
+            }
+          }
+        }
+
+      return this;
+    };
+
+    SVG.extend(SVG.Element, SVG.FX, extension);
+  });
+  SVG.extend(SVG.Element, SVG.FX, {
+    // Map rotation to transform
+    rotate: function rotate(d, cx, cy) {
+      return this.transform({
+        rotation: d,
+        cx: cx,
+        cy: cy
+      });
+    },
+    // Map skew to transform
+    skew: function skew(x, y, cx, cy) {
+      return arguments.length == 1 || arguments.length == 3 ? this.transform({
+        skew: x,
+        cx: y,
+        cy: cx
+      }) : this.transform({
+        skewX: x,
+        skewY: y,
+        cx: cx,
+        cy: cy
+      });
+    },
+    // Map scale to transform
+    scale: function scale(x, y, cx, cy) {
+      return arguments.length == 1 || arguments.length == 3 ? this.transform({
+        scale: x,
+        cx: y,
+        cy: cx
+      }) : this.transform({
+        scaleX: x,
+        scaleY: y,
+        cx: cx,
+        cy: cy
+      });
+    },
+    // Map translate to transform
+    translate: function translate(x, y) {
+      return this.transform({
+        x: x,
+        y: y
+      });
+    },
+    // Map flip to transform
+    flip: function flip(a, o) {
+      o = typeof a === 'number' ? a : o;
+      return this.transform({
+        flip: a || 'both',
+        offset: o
+      });
+    },
+    // Map matrix to transform
+    matrix: function matrix(m) {
+      return this.attr('transform', new SVG.Matrix(arguments.length == 6 ? [].slice.call(arguments) : m));
+    },
+    // Opacity
+    opacity: function opacity(value) {
+      return this.attr('opacity', value);
+    },
+    // Relative move over x axis
+    dx: function dx(x) {
+      return this.x(new SVG.Number(x).plus(this instanceof SVG.FX ? 0 : this.x()), true);
+    },
+    // Relative move over y axis
+    dy: function dy(y) {
+      return this.y(new SVG.Number(y).plus(this instanceof SVG.FX ? 0 : this.y()), true);
+    },
+    // Relative move over x and y axes
+    dmove: function dmove(x, y) {
+      return this.dx(x).dy(y);
+    }
+  });
+  SVG.extend(SVG.Rect, SVG.Ellipse, SVG.Circle, SVG.Gradient, SVG.FX, {
+    // Add x and y radius
+    radius: function radius(x, y) {
+      var type = (this._target || this).type;
+      return type == 'radial' || type == 'circle' ? this.attr('r', new SVG.Number(x)) : this.rx(x).ry(y == null ? x : y);
+    }
+  });
+  SVG.extend(SVG.Path, {
+    // Get path length
+    length: function length() {
+      return this.node.getTotalLength();
+    },
+    // Get point at length
+    pointAt: function pointAt(length) {
+      return this.node.getPointAtLength(length);
+    }
+  });
+  SVG.extend(SVG.Parent, SVG.Text, SVG.Tspan, SVG.FX, {
+    // Set font
+    font: function font(a, v) {
+      if (_typeof(a) === 'object') {
+        for (v in a) {
+          this.font(v, a[v]);
+        }
+      }
+
+      return a == 'leading' ? this.leading(v) : a == 'anchor' ? this.attr('text-anchor', v) : a == 'size' || a == 'family' || a == 'weight' || a == 'stretch' || a == 'variant' || a == 'style' ? this.attr('font-' + a, v) : this.attr(a, v);
+    }
+  });
+  SVG.Set = SVG.invent({
+    // Initialize
+    create: function create(members) {
+      // Set initial state
+      Array.isArray(members) ? this.members = members : this.clear();
+    },
+    // Add class methods
+    extend: {
+      // Add element to set
+      add: function add() {
+        var i,
+            il,
+            elements = [].slice.call(arguments);
+
+        for (i = 0, il = elements.length; i < il; i++) {
+          this.members.push(elements[i]);
+        }
+
+        return this;
+      },
+      // Remove element from set
+      remove: function remove(element) {
+        var i = this.index(element); // remove given child
+
+        if (i > -1) {
+          this.members.splice(i, 1);
+        }
+
+        return this;
+      },
+      // Iterate over all members
+      each: function each(block) {
+        for (var i = 0, il = this.members.length; i < il; i++) {
+          block.apply(this.members[i], [i, this.members]);
+        }
+
+        return this;
+      },
+      // Restore to defaults
+      clear: function clear() {
+        // initialize store
+        this.members = [];
+        return this;
+      },
+      // Get the length of a set
+      length: function length() {
+        return this.members.length;
+      },
+      // Checks if a given element is present in set
+      has: function has(element) {
+        return this.index(element) >= 0;
+      },
+      // retuns index of given element in set
+      index: function index(element) {
+        return this.members.indexOf(element);
+      },
+      // Get member at given index
+      get: function get(i) {
+        return this.members[i];
+      },
+      // Get first member
+      first: function first() {
+        return this.get(0);
+      },
+      // Get last member
+      last: function last() {
+        return this.get(this.members.length - 1);
+      },
+      // Default value
+      valueOf: function valueOf() {
+        return this.members;
+      },
+      // Get the bounding box of all members included or empty box if set has no items
+      bbox: function bbox() {
+        // return an empty box of there are no members
+        if (this.members.length == 0) {
+          return new SVG.RBox();
+        } // get the first rbox and update the target bbox
+
+
+        var rbox = this.members[0].rbox(this.members[0].doc());
+        this.each(function () {
+          // user rbox for correct position and visual representation
+          rbox = rbox.merge(this.rbox(this.doc()));
+        });
+        return rbox;
+      }
+    },
+    // Add parent method
+    construct: {
+      // Create a new set
+      set: function set(members) {
+        return new SVG.Set(members);
+      }
+    }
+  });
+  SVG.FX.Set = SVG.invent({
+    // Initialize node
+    create: function create(set) {
+      // store reference to set
+      this.set = set;
+    }
+  }); // Alias methods
+
+  SVG.Set.inherit = function () {
+    var m,
+        methods = []; // gather shape methods
+
+    for (var m in SVG.Shape.prototype) {
+      if (typeof SVG.Shape.prototype[m] === 'function' && typeof SVG.Set.prototype[m] !== 'function') {
+        methods.push(m);
+      }
+    } // apply shape aliasses
+
+
+    methods.forEach(function (method) {
+      SVG.Set.prototype[method] = function () {
+        for (var i = 0, il = this.members.length; i < il; i++) {
+          if (this.members[i] && typeof this.members[i][method] === 'function') {
+            this.members[i][method].apply(this.members[i], arguments);
+          }
+        }
+
+        return method == 'animate' ? this.fx || (this.fx = new SVG.FX.Set(this)) : this;
+      };
+    }); // clear methods for the next round
+
+    methods = []; // gather fx methods
+
+    for (var m in SVG.FX.prototype) {
+      if (typeof SVG.FX.prototype[m] === 'function' && typeof SVG.FX.Set.prototype[m] !== 'function') {
+        methods.push(m);
+      }
+    } // apply fx aliasses
+
+
+    methods.forEach(function (method) {
+      SVG.FX.Set.prototype[method] = function () {
+        for (var i = 0, il = this.set.members.length; i < il; i++) {
+          this.set.members[i].fx[method].apply(this.set.members[i].fx, arguments);
+        }
+
+        return this;
+      };
+    });
+  };
+
+  SVG.extend(SVG.Element, {
+    // Store data values on svg nodes
+    data: function data(a, v, r) {
+      if (_typeof(a) === 'object') {
+        for (v in a) {
+          this.data(v, a[v]);
+        }
+      } else if (arguments.length < 2) {
+        try {
+          return JSON.parse(this.attr('data-' + a));
+        } catch (e) {
+          return this.attr('data-' + a);
+        }
+      } else {
+        this.attr('data-' + a, v === null ? null : r === true || typeof v === 'string' || typeof v === 'number' ? v : JSON.stringify(v));
+      }
+
+      return this;
+    }
+  });
+  SVG.extend(SVG.Element, {
+    // Remember arbitrary data
+    remember: function remember(k, v) {
+      // remember every item in an object individually
+      if (_typeof(arguments[0]) === 'object') {
+        for (var v in k) {
+          this.remember(v, k[v]);
+        }
+      } // retrieve memory
+      else if (arguments.length == 1) {
+          return this.memory()[k];
+        } // store memory
+        else {
+            this.memory()[k] = v;
+          }
+
+      return this;
+    },
+    // Erase a given memory
+    forget: function forget() {
+      if (arguments.length == 0) {
+        this._memory = {};
+      } else {
+        for (var i = arguments.length - 1; i >= 0; i--) {
+          delete this.memory()[arguments[i]];
+        }
+      }
+
+      return this;
+    },
+    // Initialize or return local memory object
+    memory: function memory() {
+      return this._memory || (this._memory = {});
+    }
+  }); // Method for getting an element by id
+
+  SVG.get = function (id) {
+    var node = document.getElementById(idFromReference(id) || id);
+    return SVG.adopt(node);
+  }; // Select elements by query string
+
+
+  SVG.select = function (query, parent) {
+    return new SVG.Set(SVG.utils.map((parent || document).querySelectorAll(query), function (node) {
+      return SVG.adopt(node);
+    }));
+  };
+
+  SVG.extend(SVG.Parent, {
+    // Scoped select method
+    select: function select(query) {
+      return SVG.select(query, this.node);
+    }
+  });
+
+  function pathRegReplace(a, b, c, d) {
+    return c + d.replace(SVG.regex.dots, ' .');
+  } // creates deep clone of array
+
+
+  function array_clone(arr) {
+    var clone = arr.slice(0);
+
+    for (var i = clone.length; i--;) {
+      if (Array.isArray(clone[i])) {
+        clone[i] = array_clone(clone[i]);
+      }
+    }
+
+    return clone;
+  } // tests if a given element is instance of an object
+
+
+  function _is(el, obj) {
+    return el instanceof obj;
+  } // tests if a given selector matches an element
+
+
+  function _matches(el, selector) {
+    return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector);
+  } // Convert dash-separated-string to camelCase
+
+
+  function camelCase(s) {
+    return s.toLowerCase().replace(/-(.)/g, function (m, g) {
+      return g.toUpperCase();
+    });
+  } // Capitalize first letter of a string
+
+
+  function capitalize(s) {
+    return s.charAt(0).toUpperCase() + s.slice(1);
+  } // Ensure to six-based hex
+
+
+  function fullHex(hex) {
+    return hex.length == 4 ? ['#', hex.substring(1, 2), hex.substring(1, 2), hex.substring(2, 3), hex.substring(2, 3), hex.substring(3, 4), hex.substring(3, 4)].join('') : hex;
+  } // Component to hex value
+
+
+  function compToHex(comp) {
+    var hex = comp.toString(16);
+    return hex.length == 1 ? '0' + hex : hex;
+  } // Calculate proportional width and height values when necessary
+
+
+  function proportionalSize(element, width, height) {
+    if (width == null || height == null) {
+      var box = element.bbox();
+
+      if (width == null) {
+        width = box.width / box.height * height;
+      } else if (height == null) {
+        height = box.height / box.width * width;
+      }
+    }
+
+    return {
+      width: width,
+      height: height
+    };
+  } // Delta transform point
+
+
+  function deltaTransformPoint(matrix, x, y) {
+    return {
+      x: x * matrix.a + y * matrix.c + 0,
+      y: x * matrix.b + y * matrix.d + 0
+    };
+  } // Map matrix array to object
+
+
+  function arrayToMatrix(a) {
+    return {
+      a: a[0],
+      b: a[1],
+      c: a[2],
+      d: a[3],
+      e: a[4],
+      f: a[5]
+    };
+  } // Parse matrix if required
+
+
+  function parseMatrix(matrix) {
+    if (!(matrix instanceof SVG.Matrix)) {
+      matrix = new SVG.Matrix(matrix);
+    }
+
+    return matrix;
+  } // Add centre point to transform object
+
+
+  function ensureCentre(o, target) {
+    o.cx = o.cx == null ? target.bbox().cx : o.cx;
+    o.cy = o.cy == null ? target.bbox().cy : o.cy;
+  } // PathArray Helpers
+
+
+  function arrayToString(a) {
+    for (var i = 0, il = a.length, s = ''; i < il; i++) {
+      s += a[i][0];
+
+      if (a[i][1] != null) {
+        s += a[i][1];
+
+        if (a[i][2] != null) {
+          s += ' ';
+          s += a[i][2];
+
+          if (a[i][3] != null) {
+            s += ' ';
+            s += a[i][3];
+            s += ' ';
+            s += a[i][4];
+
+            if (a[i][5] != null) {
+              s += ' ';
+              s += a[i][5];
+              s += ' ';
+              s += a[i][6];
+
+              if (a[i][7] != null) {
+                s += ' ';
+                s += a[i][7];
+              }
+            }
+          }
+        }
+      }
+    }
+
+    return s + ' ';
+  } // Deep new id assignment
+
+
+  function assignNewId(node) {
+    // do the same for SVG child nodes as well
+    for (var i = node.childNodes.length - 1; i >= 0; i--) {
+      if (node.childNodes[i] instanceof window.SVGElement) {
+        assignNewId(node.childNodes[i]);
+      }
+    }
+
+    return SVG.adopt(node).id(SVG.eid(node.nodeName));
+  } // Add more bounding box properties
+
+
+  function fullBox(b) {
+    if (b.x == null) {
+      b.x = 0;
+      b.y = 0;
+      b.width = 0;
+      b.height = 0;
+    }
+
+    b.w = b.width;
+    b.h = b.height;
+    b.x2 = b.x + b.width;
+    b.y2 = b.y + b.height;
+    b.cx = b.x + b.width / 2;
+    b.cy = b.y + b.height / 2;
+    return b;
+  } // Get id from reference string
+
+
+  function idFromReference(url) {
+    var m = (url || '').toString().match(SVG.regex.reference);
+    if (m) return m[1];
+  } // If values like 1e-88 are passed, this is not a valid 32 bit float,
+  // but in those cases, we are so close to 0 that 0 works well!
+
+
+  function float32String(v) {
+    return Math.abs(v) > 1e-37 ? v : 0;
+  } // Create matrix array for looping
+
+
+  var abcdef = 'abcdef'.split(''); // Add CustomEvent to IE9 and IE10
+
+  if (typeof window.CustomEvent !== 'function') {
+    // Code from: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent
+    var CustomEventPoly = function CustomEventPoly(event, options) {
+      options = options || {
+        bubbles: false,
+        cancelable: false,
+        detail: undefined
+      };
+      var e = document.createEvent('CustomEvent');
+      e.initCustomEvent(event, options.bubbles, options.cancelable, options.detail);
+      return e;
+    };
+
+    CustomEventPoly.prototype = window.Event.prototype;
+    SVG.CustomEvent = CustomEventPoly;
+  } else {
+    SVG.CustomEvent = window.CustomEvent;
+  } // requestAnimationFrame / cancelAnimationFrame Polyfill with fallback based on Paul Irish
+
+
+  (function (w) {
+    var lastTime = 0;
+    var vendors = ['moz', 'webkit'];
+
+    for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+      w.requestAnimationFrame = w[vendors[x] + 'RequestAnimationFrame'];
+      w.cancelAnimationFrame = w[vendors[x] + 'CancelAnimationFrame'] || w[vendors[x] + 'CancelRequestAnimationFrame'];
+    }
+
+    w.requestAnimationFrame = w.requestAnimationFrame || function (callback) {
+      var currTime = new Date().getTime();
+      var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+      var id = w.setTimeout(function () {
+        callback(currTime + timeToCall);
+      }, timeToCall);
+      lastTime = currTime + timeToCall;
+      return id;
+    };
+
+    w.cancelAnimationFrame = w.cancelAnimationFrame || w.clearTimeout;
+  })(window);
+
+  return SVG;
+});
+
+/*! svg.filter.js - v2.0.2 - 2016-02-24
+* https://github.com/wout/svg.filter.js
+* Copyright (c) 2016 Wout Fierens; Licensed MIT */
+(function() {
+
+  // Main filter class
+  SVG.Filter = SVG.invent({
+    create: 'filter',
+    inherit: SVG.Parent,
+    extend: {
+      // Static strings
+      source:           'SourceGraphic',
+      sourceAlpha:      'SourceAlpha',
+      background:       'BackgroundImage',
+      backgroundAlpha:  'BackgroundAlpha',
+      fill:             'FillPaint',
+      stroke:           'StrokePaint',
+
+      autoSetIn: true,
+      // Custom put method for leaner code
+      put: function(element, i) {
+        this.add(element, i);
+
+        if(!element.attr('in') && this.autoSetIn){
+          element.attr('in',this.source);
+        }
+        if(!element.attr('result')){
+          element.attr('result',element);
+        }
+
+        return element
+      },
+      // Blend effect
+      blend: function(in1, in2, mode) {
+        return this.put(new SVG.BlendEffect(in1, in2, mode))
+      },
+      // ColorMatrix effect
+      colorMatrix: function(type, values) {
+        return this.put(new SVG.ColorMatrixEffect(type, values))
+      },
+      // ConvolveMatrix effect
+      convolveMatrix: function(matrix) {
+        return this.put(new SVG.ConvolveMatrixEffect(matrix))
+      },
+      // ComponentTransfer effect
+      componentTransfer: function(components) {
+        return this.put(new SVG.ComponentTransferEffect(components))
+      },
+      // Composite effect
+      composite: function(in1, in2, operator) {
+        return this.put(new SVG.CompositeEffect(in1, in2, operator))
+      },
+      // Flood effect
+      flood: function(color, opacity) {
+        return this.put(new SVG.FloodEffect(color, opacity))
+      },
+      // Offset effect
+      offset: function(x, y) {
+        return this.put(new SVG.OffsetEffect(x,y))
+      },
+      // Image effect
+      image: function(src) {
+        return this.put(new SVG.ImageEffect(src))
+      },
+      // Merge effect
+      merge: function() {
+        //pass the array of arguments to the constructor because we dont know if the user gave us an array as the first arguemnt or wether they listed the effects in the arguments
+        var args = [undefined];
+        for(var i in arguments) args.push(arguments[i]);
+        return this.put(new (SVG.MergeEffect.bind.apply(SVG.MergeEffect,args)))
+      },
+      // Gaussian Blur effect
+      gaussianBlur: function(x,y) {
+        return this.put(new SVG.GaussianBlurEffect(x,y))
+      },
+      // Morphology effect
+      morphology: function(operator,radius){
+        return this.put(new SVG.MorphologyEffect(operator,radius))
+      },
+      // DiffuseLighting effect
+      diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){
+        return this.put(new SVG.DiffuseLightingEffect(surfaceScale,diffuseConstant,kernelUnitLength))
+      },
+      // DisplacementMap effect
+      displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){
+        return this.put(new SVG.DisplacementMapEffect(in1,in2,scale,xChannelSelector,yChannelSelector))
+      },
+      // SpecularLighting effect
+      specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){
+        return this.put(new SVG.SpecularLightingEffect(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength))
+      },
+      // Tile effect
+      tile: function(){
+        return this.put(new SVG.TileEffect());
+      },
+      // Turbulence effect
+      turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){
+        return this.put(new SVG.TurbulenceEffect(baseFrequency,numOctaves,seed,stitchTiles,type))
+      },
+      // Default string value
+      toString: function() {
+        return 'url(#' + this.attr('id') + ')'
+      }
+    }
+  });
+
+  //add .filter function
+  SVG.extend(SVG.Defs, {
+    // Define filter
+    filter: function(block) {
+      var filter = this.put(new SVG.Filter);
+
+      /* invoke passed block */
+      if (typeof block === 'function')
+        block.call(filter, filter);
+
+      return filter
+    }
+  });
+  SVG.extend(SVG.Container, {
+    // Define filter on defs
+    filter: function(block) {
+      return this.defs().filter(block)
+    }
+  });
+  SVG.extend(SVG.Element, SVG.G, SVG.Nested, {
+    // Create filter element in defs and store reference
+    filter: function(block) {
+      this.filterer = block instanceof SVG.Element ?
+        block : this.doc().filter(block);
+
+      if(this.doc() && this.filterer.doc() !== this.doc()){
+        this.doc().defs().add(this.filterer);
+      }
+
+      this.attr('filter', this.filterer);
+
+      return this.filterer
+    },
+    // Remove filter
+    unfilter: function(remove) {
+      /* also remove the filter node */
+      if (this.filterer && remove === true)
+        this.filterer.remove();
+
+      /* delete reference to filterer */
+      delete this.filterer;
+
+      /* remove filter attribute */
+      return this.attr('filter', null)
+    }
+  });
+
+  // Create SVG.Effect class
+  SVG.Effect = SVG.invent({
+    create: function(){
+      this.constructor.call(this);
+    },
+    inherit: SVG.Element,
+    extend: {
+      // Set in attribute
+      in: function(effect) {
+        return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in')+'"]').get(0) || this.attr('in') : this.attr('in', effect)
+      },
+      // Named result
+      result: function(result) {
+        return result == null? this.attr('result') : this.attr('result',result)
+      },
+      // Stringification
+      toString: function() {
+        return this.result()
+      }
+    }
+  });
+
+  // create class for parent effects like merge
+  // Inherit from SVG.Parent
+  SVG.ParentEffect = SVG.invent({
+    create: function(){
+      this.constructor.call(this);
+    },
+    inherit: SVG.Parent,
+    extend: {
+      // Set in attribute
+      in: function(effect) {
+        return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in')+'"]').get(0) || this.attr('in') : this.attr('in', effect)
+      },
+      // Named result
+      result: function(result) {
+        return result == null? this.attr('result') : this.attr('result',result)
+      },
+      // Stringification
+      toString: function() {
+        return this.result()
+      }
+    }
+  });
+
+  //chaining
+  var chainingEffects = {
+    // Blend effect
+    blend: function(in2, mode) {
+      return this.parent() && this.parent().blend(this, in2, mode) //pass this as the first input
+    },
+    // ColorMatrix effect
+    colorMatrix: function(type, values) {
+      return this.parent() && this.parent().colorMatrix(type, values).in(this)
+    },
+    // ConvolveMatrix effect
+    convolveMatrix: function(matrix) {
+      return this.parent() && this.parent().convolveMatrix(matrix).in(this)
+    },
+    // ComponentTransfer effect
+    componentTransfer: function(components) {
+      return this.parent() && this.parent().componentTransfer(components).in(this)
+    },
+    // Composite effect
+    composite: function(in2, operator) {
+      return this.parent() && this.parent().composite(this, in2, operator) //pass this as the first input
+    },
+    // Flood effect
+    flood: function(color, opacity) {
+      return this.parent() && this.parent().flood(color, opacity) //this effect dont have inputs
+    },
+    // Offset effect
+    offset: function(x, y) {
+      return this.parent() && this.parent().offset(x,y).in(this)
+    },
+    // Image effect
+    image: function(src) {
+      return this.parent() && this.parent().image(src) //this effect dont have inputs
+    },
+    // Merge effect
+    merge: function() {
+      return this.parent() && this.parent().merge.apply(this.parent(),[this].concat(arguments)) //pass this as the first argument
+    },
+    // Gaussian Blur effect
+    gaussianBlur: function(x,y) {
+      return this.parent() && this.parent().gaussianBlur(x,y).in(this)
+    },
+    // Morphology effect
+    morphology: function(operator,radius){
+      return this.parent() && this.parent().morphology(operator,radius).in(this)
+    },
+    // DiffuseLighting effect
+    diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){
+      return this.parent() && this.parent().diffuseLighting(surfaceScale,diffuseConstant,kernelUnitLength).in(this)
+    },
+    // DisplacementMap effect
+    displacementMap: function(in2,scale,xChannelSelector,yChannelSelector){
+      return this.parent() && this.parent().displacementMap(this,in2,scale,xChannelSelector,yChannelSelector) //pass this as the first input
+    },
+    // SpecularLighting effect
+    specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){
+      return this.parent() && this.parent().specularLighting(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength).in(this)
+    },
+    // Tile effect
+    tile: function(){
+      return this.parent() && this.parent().tile().in(this)
+    },
+    // Turbulence effect
+    turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){
+      return this.parent() && this.parent().turbulence(baseFrequency,numOctaves,seed,stitchTiles,type).in(this)
+    }
+  };
+  SVG.extend(SVG.Effect,chainingEffects);
+  SVG.extend(SVG.ParentEffect,chainingEffects);
+
+  //crea class for child effects, like MergeNode, FuncR and lights
+  SVG.ChildEffect = SVG.invent({
+    create: function(){
+      this.constructor.call(this);
+    },
+    inherit: SVG.Element,
+    extend: {
+    in: function(effect){
+      this.attr('in',effect);
+    }
+    //dont include any "result" functions because these types of nodes dont have them
+    }
+  });
+
+  // Create all different effects
+  var effects = {
+    blend: function(in1,in2,mode){
+      this.attr({
+        in: in1,
+        in2: in2,
+        mode: mode || 'normal'
+      });
+    },
+    colorMatrix: function(type,values){
+      if (type == 'matrix')
+        values = normaliseMatrix(values);
+
+      this.attr({
+        type:   type
+      , values: typeof values == 'undefined' ? null : values
+      });
+    },
+    convolveMatrix: function(matrix){
+      matrix = normaliseMatrix(matrix);
+
+      this.attr({
+        order:        Math.sqrt(matrix.split(' ').length)
+      , kernelMatrix: matrix
+      });
+    },
+    composite: function(in1, in2, operator){
+      this.attr({
+        in: in1,
+        in2: in2,
+        operator: operator
+      });
+    },
+    flood: function(color,opacity){
+      this.attr('flood-color',color);
+      if(opacity != null) this.attr('flood-opacity',opacity);
+    },
+    offset: function(x,y){
+      this.attr({
+        dx: x,
+        dy: y
+      });
+    },
+    image: function(src){
+      this.attr('href', src, SVG.xlink);
+    },
+    displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){
+      this.attr({
+        in: in1,
+        in2: in2,
+        scale: scale,
+        xChannelSelector: xChannelSelector,
+        yChannelSelector: yChannelSelector
+      });
+    },
+    gaussianBlur: function(x,y){
+      if(x != null || y != null)
+        this.attr('stdDeviation', listString(Array.prototype.slice.call(arguments)));
+      else
+        this.attr('stdDeviation', '0 0');
+    },
+    morphology: function(operator,radius){
+      this.attr({
+        operator: operator,
+        radius: radius
+      });
+    },
+    tile: function(){
+
+    },
+    turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){
+      this.attr({
+        numOctaves: numOctaves,
+        seed: seed,
+        stitchTiles: stitchTiles,
+        baseFrequency: baseFrequency,
+        type: type
+      });
+    }
+  };
+
+  // Create all parent effects
+  var parentEffects = {
+    merge: function(){
+      var children;
+
+      //test to see if we have a set
+      if(arguments[0] instanceof SVG.Set){
+        var that = this;
+        arguments[0].each(function(i){
+          if(this instanceof SVG.MergeNode)
+            that.put(this);
+          else if(this instanceof SVG.Effect || this instanceof SVG.ParentEffect)
+            that.put(new SVG.MergeNode(this));
+        });
+      }
+      else{
+        //if the first argument is an array use it
+        if(Array.isArray(arguments[0]))
+          children = arguments[0];
+        else
+          children = arguments;
+
+        for(var i = 0; i < children.length; i++){
+          if(children[i] instanceof SVG.MergeNode){
+            this.put(children[i]);
+          }
+          else this.put(new SVG.MergeNode(children[i]));
+        }
+      }
+    },
+    componentTransfer: function(compontents){
+      /* create rgb set */
+      this.rgb = new SVG.Set
+
+      /* create components */
+      ;(['r', 'g', 'b', 'a']).forEach(function(c) {
+        /* create component */
+        this[c] = new SVG['Func' + c.toUpperCase()]('identity');
+
+        /* store component in set */
+        this.rgb.add(this[c]);
+
+        /* add component node */
+        this.node.appendChild(this[c].node);
+      }.bind(this)); //lost context in foreach
+
+      /* set components */
+      if (compontents) {
+        if (compontents.rgb) {
+(['r', 'g', 'b']).forEach(function(c) {
+            this[c].attr(compontents.rgb);
+          }.bind(this));
+
+          delete compontents.rgb;
+        }
+
+        /* set individual components */
+        for (var c in compontents)
+          this[c].attr(compontents[c]);
+      }
+    },
+    diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){
+      this.attr({
+        surfaceScale: surfaceScale,
+        diffuseConstant: diffuseConstant,
+        kernelUnitLength: kernelUnitLength
+      });
+    },
+    specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){
+      this.attr({
+        surfaceScale: surfaceScale,
+        diffuseConstant: diffuseConstant,
+        specularExponent: specularExponent,
+        kernelUnitLength: kernelUnitLength
+      });
+    },
+  };
+
+  // Create child effects like PointLight and MergeNode
+  var childEffects = {
+    distantLight: function(azimuth, elevation){
+      this.attr({
+        azimuth: azimuth,
+        elevation: elevation
+      });
+    },
+    pointLight: function(x,y,z){
+      this.attr({
+        x: x,
+        y: y,
+        z: z
+      });
+    },
+    spotLight: function(x,y,z,pointsAtX,pointsAtY,pointsAtZ){
+      this.attr({
+        x: x,
+        y: y,
+        z: z,
+        pointsAtX: pointsAtX,
+        pointsAtY: pointsAtY,
+        pointsAtZ: pointsAtZ
+      });
+    },
+    mergeNode: function(in1){
+      this.attr('in',in1);
+    }
+  }
+
+  // Create compontent functions
+  ;(['r', 'g', 'b', 'a']).forEach(function(c) {
+    /* create class */
+    childEffects['Func' + c.toUpperCase()] = function(type) {
+      this.attr('type',type);
+
+      // take diffent arguments based on the type
+      switch(type){
+        case 'table':
+          this.attr('tableValues',arguments[1]);
+          break
+        case 'linear':
+          this.attr('slope',arguments[1]);
+          this.attr('intercept',arguments[2]);
+          break
+        case 'gamma':
+          this.attr('amplitude',arguments[1]);
+          this.attr('exponent',arguments[2]);
+          this.attr('offset',arguments[2]);
+          break
+      }
+    };
+  });
+
+  //create effects
+  foreach(effects,function(effect,i){
+
+    /* capitalize name */
+    var name = i.charAt(0).toUpperCase() + i.slice(1);
+    var proto = {};
+
+    /* create class */
+    SVG[name + 'Effect'] = SVG.invent({
+      create: function() {
+        //call super
+        this.constructor.call(this, SVG.create('fe' + name));
+
+        //call constructor for this effect
+        effect.apply(this,arguments);
+
+        //set the result
+        this.result(this.attr('id') + 'Out');
+      },
+      inherit: SVG.Effect,
+      extend: proto
+    });
+  });
+
+  //create parent effects
+  foreach(parentEffects,function(effect,i){
+
+    /* capitalize name */
+    var name = i.charAt(0).toUpperCase() + i.slice(1);
+    var proto = {};
+
+    /* create class */
+    SVG[name + 'Effect'] = SVG.invent({
+      create: function() {
+        //call super
+        this.constructor.call(this, SVG.create('fe' + name));
+
+        //call constructor for this effect
+        effect.apply(this,arguments);
+
+        //set the result
+        this.result(this.attr('id') + 'Out');
+      },
+      inherit: SVG.ParentEffect,
+      extend: proto
+    });
+  });
+
+  //create child effects
+  foreach(childEffects,function(effect,i){
+
+    /* capitalize name */
+    var name = i.charAt(0).toUpperCase() + i.slice(1);
+    var proto = {};
+
+    /* create class */
+    SVG[name] = SVG.invent({
+      create: function() {
+        //call super
+        this.constructor.call(this, SVG.create('fe' + name));
+
+        //call constructor for this effect
+        effect.apply(this,arguments);
+      },
+      inherit: SVG.ChildEffect,
+      extend: proto
+    });
+  });
+
+  // Effect-specific extensions
+  SVG.extend(SVG.MergeEffect,{
+    in: function(effect){
+      if(effect instanceof SVG.MergeNode)
+        this.add(effect,0);
+      else
+        this.add(new SVG.MergeNode(effect),0);
+
+      return this
+    }
+  });
+  SVG.extend(SVG.CompositeEffect,SVG.BlendEffect,SVG.DisplacementMapEffect,{
+    in2: function(effect){
+        return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in2')+'"]').get(0) || this.attr('in2') : this.attr('in2', effect)
+    }
+  });
+
+  // Presets
+  SVG.filter = {
+    sepiatone:  [ .343, .669, .119, 0, 0
+                , .249, .626, .130, 0, 0
+                , .172, .334, .111, 0, 0
+                , .000, .000, .000, 1, 0 ]
+  };
+
+  // Helpers
+  function normaliseMatrix(matrix) {
+    /* convert possible array value to string */
+    if (Array.isArray(matrix))
+      matrix = new SVG.Array(matrix);
+
+    /* ensure there are no leading, tailing or double spaces */
+    return matrix.toString().replace(/^\s+/, '').replace(/\s+$/, '').replace(/\s+/g, ' ')
+  }
+
+  function listString(list) {
+    if (!Array.isArray(list))
+      return list
+
+    for (var i = 0, l = list.length, s = []; i < l; i++)
+      s.push(list[i]);
+
+    return s.join(' ')
+  }
+
+  function foreach(){ //loops through mutiple objects
+    var fn = function(){};
+    if(typeof arguments[arguments.length-1] == 'function'){
+      fn = arguments[arguments.length-1];
+      Array.prototype.splice.call(arguments,arguments.length-1,1);
+    }
+    for(var k in arguments){
+      for(var i in arguments[k]){
+        fn(arguments[k][i],i,arguments[k]);
+      }
+    }
+  }
+
+}).call(undefined);
+
+(function() {
+
+SVG.extend(SVG.PathArray, {
+  morph: function(array) {
+
+    var startArr = this.value
+      ,  destArr = this.parse(array);
+
+    var startOffsetM = 0
+      ,  destOffsetM = 0;
+
+    var startOffsetNextM = false
+      ,  destOffsetNextM = false;
+
+    while(true){
+      // stop if there is no M anymore
+      if(startOffsetM === false && destOffsetM === false) break
+
+      // find the next M in path array
+      startOffsetNextM = findNextM(startArr, startOffsetM === false ? false : startOffsetM+1);
+       destOffsetNextM = findNextM( destArr,  destOffsetM === false ? false :  destOffsetM+1);
+
+      // We have to add one M to the startArray
+      if(startOffsetM === false){
+        var bbox = new SVG.PathArray(result.start).bbox();
+
+        // when the last block had no bounding box we simply take the first M we got
+        if(bbox.height == 0 || bbox.width == 0){
+          startOffsetM =  startArr.push(startArr[0]) - 1;
+        }else{
+          // we take the middle of the bbox instead when we got one
+          startOffsetM = startArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1;
+        }
+      }
+
+      // We have to add one M to the destArray
+      if( destOffsetM === false){
+        var bbox = new SVG.PathArray(result.dest).bbox();
+
+        if(bbox.height == 0 || bbox.width == 0){
+          destOffsetM =  destArr.push(destArr[0]) - 1;
+        }else{
+          destOffsetM =  destArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1;
+        }
+      }
+
+      // handle block from M to next M
+      var result = handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM);
+
+      // update the arrays to their new values
+      startArr = startArr.slice(0, startOffsetM).concat(result.start, startOffsetNextM === false ? [] : startArr.slice(startOffsetNextM));
+       destArr =  destArr.slice(0,  destOffsetM).concat(result.dest ,  destOffsetNextM === false ? [] :  destArr.slice( destOffsetNextM));
+
+      // update offsets
+      startOffsetM = startOffsetNextM === false ? false : startOffsetM + result.start.length;
+       destOffsetM =  destOffsetNextM === false ? false :  destOffsetM + result.dest.length;
+
+    }
+
+    // copy back arrays
+    this.value = startArr;
+    this.destination = new SVG.PathArray();
+    this.destination.value = destArr;
+
+    return this
+  }
+});
+
+
+
+// sorry for the long declaration
+// slices out one block (from M to M) and syncronize it so the types and length match
+function handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM, undefined){
+
+  // slice out the block we need
+  var startArrTemp = startArr.slice(startOffsetM, startOffsetNextM || undefined)
+    ,  destArrTemp =  destArr.slice( destOffsetM,  destOffsetNextM || undefined);
+
+  var i = 0
+    , posStart = {pos:[0,0], start:[0,0]}
+    , posDest  = {pos:[0,0], start:[0,0]};
+
+  do{
+
+    // convert shorthand types to long form
+    startArrTemp[i] = simplyfy.call(posStart, startArrTemp[i]);
+     destArrTemp[i] = simplyfy.call(posDest ,  destArrTemp[i]);
+
+    // check if both shape types match
+    // 2 elliptical arc curve commands ('A'), are considered different if the
+    // flags (large-arc-flag, sweep-flag) don't match
+    if(startArrTemp[i][0] != destArrTemp[i][0] || startArrTemp[i][0] == 'M' ||
+        (startArrTemp[i][0] == 'A' &&
+          (startArrTemp[i][4] != destArrTemp[i][4] || startArrTemp[i][5] != destArrTemp[i][5])
+        )
+      ) {
+
+      // if not, convert shapes to beziere
+      Array.prototype.splice.apply(startArrTemp, [i, 1].concat(toBeziere.call(posStart, startArrTemp[i])));
+       Array.prototype.splice.apply(destArrTemp, [i, 1].concat(toBeziere.call(posDest, destArrTemp[i])));
+
+    } else {
+
+      // only update positions otherwise
+      startArrTemp[i] = setPosAndReflection.call(posStart, startArrTemp[i]);
+       destArrTemp[i] = setPosAndReflection.call(posDest ,  destArrTemp[i]);
+
+    }
+
+    // we are at the end at both arrays. stop here
+    if(++i == startArrTemp.length && i == destArrTemp.length) break
+
+    // destArray is longer. Add one element
+    if(i == startArrTemp.length){
+      startArrTemp.push([
+        'C',
+        posStart.pos[0],
+        posStart.pos[1],
+        posStart.pos[0],
+        posStart.pos[1],
+        posStart.pos[0],
+        posStart.pos[1],
+      ]);
+    }
+
+    // startArr is longer. Add one element
+    if(i == destArrTemp.length){
+      destArrTemp.push([
+        'C',
+        posDest.pos[0],
+        posDest.pos[1],
+        posDest.pos[0],
+        posDest.pos[1],
+        posDest.pos[0],
+        posDest.pos[1]
+      ]);
+    }
+
+
+  }while(true)
+
+  // return the updated block
+  return {start:startArrTemp, dest:destArrTemp}
+}
+
+// converts shorthand types to long form
+function simplyfy(val){
+
+  switch(val[0]){
+    case 'z': // shorthand line to start
+    case 'Z':
+      val[0] = 'L';
+      val[1] = this.start[0];
+      val[2] = this.start[1];
+      break
+    case 'H': // shorthand horizontal line
+      val[0] = 'L';
+      val[2] = this.pos[1];
+      break
+    case 'V': // shorthand vertical line
+      val[0] = 'L';
+      val[2] = val[1];
+      val[1] = this.pos[0];
+      break
+    case 'T': // shorthand quadratic beziere
+      val[0] = 'Q';
+      val[3] = val[1];
+      val[4] = val[2];
+      val[1] = this.reflection[1];
+      val[2] = this.reflection[0];
+      break
+    case 'S': // shorthand cubic beziere
+      val[0] = 'C';
+      val[6] = val[4];
+      val[5] = val[3];
+      val[4] = val[2];
+      val[3] = val[1];
+      val[2] = this.reflection[1];
+      val[1] = this.reflection[0];
+      break
+  }
+
+  return val
+
+}
+
+// updates reflection point and current position
+function setPosAndReflection(val){
+
+  var len = val.length;
+
+  this.pos = [ val[len-2], val[len-1] ];
+
+  if('SCQT'.indexOf(val[0]) != -1)
+    this.reflection = [ 2 * this.pos[0] - val[len-4], 2 * this.pos[1] - val[len-3] ];
+
+  return val
+}
+
+// converts all types to cubic beziere
+function toBeziere(val){
+  var retVal = [val];
+
+  switch(val[0]){
+    case 'M': // special handling for M
+      this.pos = this.start = [val[1], val[2]];
+      return retVal
+    case 'L':
+      val[5] = val[3] = val[1];
+      val[6] = val[4] = val[2];
+      val[1] = this.pos[0];
+      val[2] = this.pos[1];
+      break
+    case 'Q':
+      val[6] = val[4];
+      val[5] = val[3];
+      val[4] = val[4] * 1/3 + val[2] * 2/3;
+      val[3] = val[3] * 1/3 + val[1] * 2/3;
+      val[2] = this.pos[1] * 1/3 + val[2] * 2/3;
+      val[1] = this.pos[0] * 1/3 + val[1] * 2/3;
+      break
+    case 'A':
+      retVal = arcToBeziere(this.pos, val);
+      val = retVal[0];
+      break
+  }
+
+  val[0] = 'C';
+  this.pos = [val[5], val[6]];
+  this.reflection = [2 * val[5] - val[3], 2 * val[6] - val[4]];
+
+  return retVal
+
+}
+
+// finds the next position of type M
+function findNextM(arr, offset){
+
+  if(offset === false) return false
+
+  for(var i = offset, len = arr.length;i < len;++i){
+
+    if(arr[i][0] == 'M') return i
+
+  }
+
+  return false
+}
+
+
+
+// Convert an arc segment into equivalent cubic Bezier curves
+// Depending on the arc, up to 4 curves might be used to represent it since a
+// curve gives a good approximation for only a quarter of an ellipse
+// The curves are returned as an array of SVG curve commands:
+// [ ['C', x1, y1, x2, y2, x, y] ... ]
+function arcToBeziere(pos, val) {
+    // Parameters extraction, handle out-of-range parameters as specified in the SVG spec
+    // See: https://www.w3.org/TR/SVG11/implnote.html#ArcOutOfRangeParameters
+    var rx = Math.abs(val[1]), ry = Math.abs(val[2]), xAxisRotation = val[3] % 360
+      , largeArcFlag = val[4], sweepFlag = val[5], x = val[6], y = val[7]
+      , A = new SVG.Point(pos), B = new SVG.Point(x, y)
+      , primedCoord, lambda, mat, k, c, cSquare, t, O, OA, OB, tetaStart, tetaEnd
+      , deltaTeta, nbSectors, f, arcSegPoints, angle, sinAngle, cosAngle, pt, i, il
+      , retVal = [], x1, y1, x2, y2;
+
+    // Ensure radii are non-zero
+    if(rx === 0 || ry === 0 || (A.x === B.x && A.y === B.y)) {
+      // treat this arc as a straight line segment
+      return [['C', A.x, A.y, B.x, B.y, B.x, B.y]]
+    }
+
+    // Ensure radii are large enough using the algorithm provided in the SVG spec
+    // See: https://www.w3.org/TR/SVG11/implnote.html#ArcCorrectionOutOfRangeRadii
+    primedCoord = new SVG.Point((A.x-B.x)/2, (A.y-B.y)/2).transform(new SVG.Matrix().rotate(xAxisRotation));
+    lambda = (primedCoord.x * primedCoord.x) / (rx * rx) + (primedCoord.y * primedCoord.y) / (ry * ry);
+    if(lambda > 1) {
+      lambda = Math.sqrt(lambda);
+      rx = lambda*rx;
+      ry = lambda*ry;
+    }
+
+    // To simplify calculations, we make the arc part of a unit circle (rayon is 1) instead of an ellipse
+    mat = new SVG.Matrix().rotate(xAxisRotation).scale(1/rx, 1/ry).rotate(-xAxisRotation);
+    A = A.transform(mat);
+    B = B.transform(mat);
+
+    // Calculate the horizontal and vertical distance between the initial and final point of the arc
+    k = [B.x-A.x, B.y-A.y];
+
+    // Find the length of the chord formed by A and B
+    cSquare = k[0]*k[0] + k[1]*k[1];
+    c = Math.sqrt(cSquare);
+
+    // Calculate the ratios of the horizontal and vertical distance on the length of the chord
+    k[0] /= c;
+    k[1] /= c;
+
+    // Calculate the distance between the circle center and the chord midpoint
+    // using this formula: t = sqrt(r^2 - c^2 / 4)
+    // where t is the distance between the cirle center and the chord midpoint,
+    //       r is the rayon of the circle and c is the chord length
+    // From: http://www.ajdesigner.com/phpcircle/circle_segment_chord_t.php
+    // Because of the imprecision of floating point numbers, cSquare might end
+    // up being slightly above 4 which would result in a negative radicand
+    // To prevent that, a test is made before computing the square root
+    t = (cSquare < 4) ? Math.sqrt(1 - cSquare/4) : 0;
+
+    // For most situations, there are actually two different ellipses that
+    // satisfy the constraints imposed by the points A and B, the radii rx and ry,
+    // and the xAxisRotation
+    // When the flags largeArcFlag and sweepFlag are equal, it means that the
+    // second ellipse is used as a solution
+    // See: https://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands
+    if(largeArcFlag === sweepFlag) {
+        t *= -1;
+    }
+
+    // Calculate the coordinates of the center of the circle from the midpoint of the chord
+    // This is done by multiplying the ratios calculated previously by the distance between
+    // the circle center and the chord midpoint and using these values to go from the midpoint
+    // to the center of the circle
+    // The negative of the vertical distance ratio is used to modify the x coordinate while
+    // the horizontal distance ratio is used to modify the y coordinate
+    // That is because the center of the circle is perpendicular to the chord and perpendicular
+    // lines are negative reciprocals
+    O = new SVG.Point((B.x+A.x)/2 + t*-k[1], (B.y+A.y)/2 + t*k[0]);
+    // Move the center of the circle at the origin
+    OA = new SVG.Point(A.x-O.x, A.y-O.y);
+    OB = new SVG.Point(B.x-O.x, B.y-O.y);
+
+    // Calculate the start and end angle
+    tetaStart = Math.acos(OA.x/Math.sqrt(OA.x*OA.x + OA.y*OA.y));
+    if (OA.y < 0) {
+      tetaStart *= -1;
+    }
+    tetaEnd = Math.acos(OB.x/Math.sqrt(OB.x*OB.x + OB.y*OB.y));
+    if (OB.y < 0) {
+      tetaEnd *= -1;
+    }
+
+    // If sweep-flag is '1', then the arc will be drawn in a "positive-angle" direction,
+    // make sure that the end angle is above the start angle
+    if (sweepFlag && tetaStart > tetaEnd) {
+      tetaEnd += 2*Math.PI;
+    }
+    // If sweep-flag is '0', then the arc will be drawn in a "negative-angle" direction,
+    // make sure that the end angle is below the start angle
+    if (!sweepFlag && tetaStart < tetaEnd) {
+      tetaEnd -= 2*Math.PI;
+    }
+
+    // Find the number of Bezier curves that are required to represent the arc
+    // A cubic Bezier curve gives a good enough approximation when representing at most a quarter of a circle
+    nbSectors = Math.ceil(Math.abs(tetaStart-tetaEnd) * 2/Math.PI);
+
+    // Calculate the coordinates of the points of all the Bezier curves required to represent the arc
+    // For an in-depth explanation of this part see: http://pomax.github.io/bezierinfo/#circles_cubic
+    arcSegPoints = [];
+    angle = tetaStart;
+    deltaTeta = (tetaEnd-tetaStart)/nbSectors;
+    f = 4*Math.tan(deltaTeta/4)/3;
+    for (i = 0; i <= nbSectors; i++) { // The <= is because a Bezier curve have a start and a endpoint
+      cosAngle = Math.cos(angle);
+      sinAngle = Math.sin(angle);
+
+      pt = new SVG.Point(O.x+cosAngle, O.y+sinAngle);
+      arcSegPoints[i] = [new SVG.Point(pt.x+f*sinAngle, pt.y-f*cosAngle), pt, new SVG.Point(pt.x-f*sinAngle, pt.y+f*cosAngle)];
+
+      angle += deltaTeta;
+    }
+
+    // Remove the first control point of the first segment point and remove the second control point of the last segment point
+    // These two control points are not used in the approximation of the arc, that is why they are removed
+    arcSegPoints[0][0] = arcSegPoints[0][1].clone();
+    arcSegPoints[arcSegPoints.length-1][2] = arcSegPoints[arcSegPoints.length-1][1].clone();
+
+    // Revert the transformation that was applied to make the arc part of a unit circle instead of an ellipse
+    mat = new SVG.Matrix().rotate(xAxisRotation).scale(rx, ry).rotate(-xAxisRotation);
+    for (i = 0, il = arcSegPoints.length; i < il; i++) {
+      arcSegPoints[i][0] = arcSegPoints[i][0].transform(mat);
+      arcSegPoints[i][1] = arcSegPoints[i][1].transform(mat);
+      arcSegPoints[i][2] = arcSegPoints[i][2].transform(mat);
+    }
+
+
+    // Convert the segments points to SVG curve commands
+    for (i = 1, il = arcSegPoints.length; i < il; i++) {
+      pt = arcSegPoints[i-1][2];
+      x1 = pt.x;
+      y1 = pt.y;
+
+      pt = arcSegPoints[i][0];
+      x2 = pt.x;
+      y2 = pt.y;
+
+      pt = arcSegPoints[i][1];
+      x = pt.x;
+      y = pt.y;
+
+      retVal.push(['C', x1, y1, x2, y2, x, y]);
+    }
+
+    return retVal
+}
+}());
+
+/*! svg.draggable.js - v2.2.1 - 2016-08-25
+* https://github.com/wout/svg.draggable.js
+* Copyright (c) 2016 Wout Fierens; Licensed MIT */
+(function() {
+
+  // creates handler, saves it
+  function DragHandler(el){
+    el.remember('_draggable', this);
+    this.el = el;
+  }
+
+
+  // Sets new parameter, starts dragging
+  DragHandler.prototype.init = function(constraint, val){
+    var _this = this;
+    this.constraint = constraint;
+    this.value = val;
+    this.el.on('mousedown.drag', function(e){ _this.start(e); });
+    this.el.on('touchstart.drag', function(e){ _this.start(e); });
+  };
+
+  // transforms one point from screen to user coords
+  DragHandler.prototype.transformPoint = function(event, offset){
+      event = event || window.event;
+      var touches = event.changedTouches && event.changedTouches[0] || event;
+      this.p.x = touches.pageX - (offset || 0);
+      this.p.y = touches.pageY;
+      return this.p.matrixTransform(this.m)
+  };
+  
+  // gets elements bounding box with special handling of groups, nested and use
+  DragHandler.prototype.getBBox = function(){
+
+    var box = this.el.bbox();
+
+    if(this.el instanceof SVG.Nested) box = this.el.rbox();
+    
+    if (this.el instanceof SVG.G || this.el instanceof SVG.Use || this.el instanceof SVG.Nested) {
+      box.x = this.el.x();
+      box.y = this.el.y();
+    }
+
+    return box
+  };
+
+  // start dragging
+  DragHandler.prototype.start = function(e){
+
+    // check for left button
+    if(e.type == 'click'|| e.type == 'mousedown' || e.type == 'mousemove'){
+      if((e.which || e.buttons) != 1){
+          return
+      }
+    }
+  
+    var _this = this;
+
+    // fire beforedrag event
+    this.el.fire('beforedrag', { event: e, handler: this });
+
+    // search for parent on the fly to make sure we can call
+    // draggable() even when element is not in the dom currently
+    this.parent = this.parent || this.el.parent(SVG.Nested) || this.el.parent(SVG.Doc);
+    this.p = this.parent.node.createSVGPoint();
+
+    // save current transformation matrix
+    this.m = this.el.node.getScreenCTM().inverse();
+
+    var box = this.getBBox();
+    
+    var anchorOffset;
+    
+    // fix text-anchor in text-element (#37)
+    if(this.el instanceof SVG.Text){
+      anchorOffset = this.el.node.getComputedTextLength();
+        
+      switch(this.el.attr('text-anchor')){
+        case 'middle':
+          anchorOffset /= 2;
+          break
+        case 'start':
+          anchorOffset = 0;
+          break;
+      }
+    }
+    
+    this.startPoints = {
+      // We take absolute coordinates since we are just using a delta here
+      point: this.transformPoint(e, anchorOffset),
+      box:   box,
+      transform: this.el.transform()
+    };
+    
+    // add drag and end events to window
+    SVG.on(window, 'mousemove.drag', function(e){ _this.drag(e); });
+    SVG.on(window, 'touchmove.drag', function(e){ _this.drag(e); });
+    SVG.on(window, 'mouseup.drag', function(e){ _this.end(e); });
+    SVG.on(window, 'touchend.drag', function(e){ _this.end(e); });
+
+    // fire dragstart event
+    this.el.fire('dragstart', {event: e, p: this.startPoints.point, m: this.m, handler: this});
+
+    // prevent browser drag behavior
+    e.preventDefault();
+
+    // prevent propagation to a parent that might also have dragging enabled
+    e.stopPropagation();
+  };
+
+  // while dragging
+  DragHandler.prototype.drag = function(e){
+
+    var box = this.getBBox()
+      , p   = this.transformPoint(e)
+      , x   = this.startPoints.box.x + p.x - this.startPoints.point.x
+      , y   = this.startPoints.box.y + p.y - this.startPoints.point.y
+      , c   = this.constraint
+      , gx  = p.x - this.startPoints.point.x
+      , gy  = p.y - this.startPoints.point.y;
+      
+    var event = new CustomEvent('dragmove', {
+        detail: {
+            event: e
+          , p: p
+          , m: this.m
+          , handler: this
+        }
+      , cancelable: true
+    });
+      
+    this.el.fire(event);
+    
+    if(event.defaultPrevented) return p
+
+    // move the element to its new position, if possible by constraint
+    if (typeof c == 'function') {
+
+      var coord = c.call(this.el, x, y, this.m);
+
+      // bool, just show us if movement is allowed or not
+      if (typeof coord == 'boolean') {
+        coord = {
+          x: coord,
+          y: coord
+        };
+      }
+
+      // if true, we just move. If !false its a number and we move it there
+      if (coord.x === true) {
+        this.el.x(x);
+      } else if (coord.x !== false) {
+        this.el.x(coord.x);
+      }
+
+      if (coord.y === true) {
+        this.el.y(y);
+      } else if (coord.y !== false) {
+        this.el.y(coord.y);
+      }
+
+    } else if (typeof c == 'object') {
+
+      // keep element within constrained box
+      if (c.minX != null && x < c.minX)
+        x = c.minX;
+      else if (c.maxX != null && x > c.maxX - box.width){
+        x = c.maxX - box.width;
+      }if (c.minY != null && y < c.minY)
+        y = c.minY;
+      else if (c.maxY != null && y > c.maxY - box.height)
+        y = c.maxY - box.height;
+        
+      if(this.el instanceof SVG.G)
+        this.el.matrix(this.startPoints.transform).transform({x:gx, y: gy}, true);
+      else
+        this.el.move(x, y);
+    }
+    
+    // so we can use it in the end-method, too
+    return p
+  };
+
+  DragHandler.prototype.end = function(e){
+
+    // final drag
+    var p = this.drag(e);
+
+    // fire dragend event
+    this.el.fire('dragend', { event: e, p: p, m: this.m, handler: this });
+
+    // unbind events
+    SVG.off(window, 'mousemove.drag');
+    SVG.off(window, 'touchmove.drag');
+    SVG.off(window, 'mouseup.drag');
+    SVG.off(window, 'touchend.drag');
+
+  };
+
+  SVG.extend(SVG.Element, {
+    // Make element draggable
+    // Constraint might be an object (as described in readme.md) or a function in the form "function (x, y)" that gets called before every move.
+    // The function can return a boolean or an object of the form {x, y}, to which the element will be moved. "False" skips moving, true moves to raw x, y.
+    draggable: function(value, constraint) {
+
+      // Check the parameters and reassign if needed
+      if (typeof value == 'function' || typeof value == 'object') {
+        constraint = value;
+        value = true;
+      }
+
+      var dragHandler = this.remember('_draggable') || new DragHandler(this);
+
+      // When no parameter is given, value is true
+      value = typeof value === 'undefined' ? true : value;
+
+      if(value) dragHandler.init(constraint || {}, value);
+      else {
+        this.off('mousedown.drag');
+        this.off('touchstart.drag');
+      }
+
+      return this
+    }
+
+  });
+
+}).call(undefined);
+
+(function() {
+
+function SelectHandler(el) {
+
+    this.el = el;
+    el.remember('_selectHandler', this);
+    this.pointSelection = {isSelected: false};
+    this.rectSelection = {isSelected: false};
+
+}
+
+SelectHandler.prototype.init = function (value, options) {
+
+    var bbox = this.el.bbox();
+    this.options = {};
+
+    // Merging the defaults and the options-object together
+    for (var i in this.el.selectize.defaults) {
+        this.options[i] = this.el.selectize.defaults[i];
+        if (options[i] !== undefined) {
+            this.options[i] = options[i];
+        }
+    }
+
+    this.parent = this.el.parent();
+    this.nested = (this.nested || this.parent.group());
+    this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y));
+
+    // When deepSelect is enabled and the element is a line/polyline/polygon, draw only points for moving
+    if (this.options.deepSelect && ['line', 'polyline', 'polygon'].indexOf(this.el.type) !== -1) {
+        this.selectPoints(value);
+    } else {
+        this.selectRect(value);
+    }
+
+    this.observe();
+    this.cleanup();
+
+};
+
+SelectHandler.prototype.selectPoints = function (value) {
+
+    this.pointSelection.isSelected = value;
+
+    // When set is already there we dont have to create one
+    if (this.pointSelection.set) {
+        return this;
+    }
+
+    // Create our set of elements
+    this.pointSelection.set = this.parent.set();
+    // draw the circles and mark the element as selected
+    this.drawCircles();
+
+    return this;
+
+};
+
+// create the point-array which contains the 2 points of a line or simply the points-array of polyline/polygon
+SelectHandler.prototype.getPointArray = function () {
+    var bbox = this.el.bbox();
+
+    return this.el.array().valueOf().map(function (el) {
+        return [el[0] - bbox.x, el[1] - bbox.y];
+    });
+};
+
+// The function to draw the circles
+SelectHandler.prototype.drawCircles = function () {
+
+    var _this = this, array = this.getPointArray();
+
+    // go through the array of points
+    for (var i = 0, len = array.length; i < len; ++i) {
+
+        var curriedEvent = (function (k) {
+            return function (ev) {
+                ev = ev || window.event;
+                ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+                ev.stopPropagation();
+
+                var x = ev.pageX || ev.touches[0].pageX;
+                var y = ev.pageY || ev.touches[0].pageY;
+                _this.el.fire('point', {x: x, y: y, i: k, event: ev});
+            };
+        })(i);
+
+        // add every point to the set
+        this.pointSelection.set.add(
+            // a circle with our css-classes and a touchstart-event which fires our event for moving points
+            this.nested.circle(this.options.radius)
+                .center(array[i][0], array[i][1])
+                .addClass(this.options.classPoints)
+                .addClass(this.options.classPoints + '_point')
+                .on('touchstart', curriedEvent)
+                .on('mousedown', curriedEvent)
+        );
+    }
+
+};
+
+// every time a circle is moved, we have to update the positions of our circle
+SelectHandler.prototype.updatePointSelection = function () {
+    var array = this.getPointArray();
+
+    this.pointSelection.set.each(function (i) {
+        if (this.cx() === array[i][0] && this.cy() === array[i][1]) {
+            return;
+        }
+        this.center(array[i][0], array[i][1]);
+    });
+};
+
+SelectHandler.prototype.updateRectSelection = function () {
+    var bbox = this.el.bbox();
+
+    this.rectSelection.set.get(0).attr({
+        width: bbox.width,
+        height: bbox.height
+    });
+
+    // set.get(1) is always in the upper left corner. no need to move it
+    if (this.options.points) {
+        this.rectSelection.set.get(2).center(bbox.width, 0);
+        this.rectSelection.set.get(3).center(bbox.width, bbox.height);
+        this.rectSelection.set.get(4).center(0, bbox.height);
+
+        this.rectSelection.set.get(5).center(bbox.width / 2, 0);
+        this.rectSelection.set.get(6).center(bbox.width, bbox.height / 2);
+        this.rectSelection.set.get(7).center(bbox.width / 2, bbox.height);
+        this.rectSelection.set.get(8).center(0, bbox.height / 2);
+    }
+
+    if (this.options.rotationPoint) {
+        if (this.options.points) {
+            this.rectSelection.set.get(9).center(bbox.width / 2, 20);
+        } else {
+            this.rectSelection.set.get(1).center(bbox.width / 2, 20);
+        }
+    }
+};
+
+SelectHandler.prototype.selectRect = function (value) {
+
+    var _this = this, bbox = this.el.bbox();
+
+    this.rectSelection.isSelected = value;
+
+    // when set is already p
+    this.rectSelection.set = this.rectSelection.set || this.parent.set();
+
+    // helperFunction to create a mouse-down function which triggers the event specified in `eventName`
+    function getMoseDownFunc(eventName) {
+        return function (ev) {
+            ev = ev || window.event;
+            ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+            ev.stopPropagation();
+
+            var x = ev.pageX || ev.touches[0].pageX;
+            var y = ev.pageY || ev.touches[0].pageY;
+            _this.el.fire(eventName, {x: x, y: y, event: ev});
+        };
+    }
+
+    // create the selection-rectangle and add the css-class
+    if (!this.rectSelection.set.get(0)) {
+        this.rectSelection.set.add(this.nested.rect(bbox.width, bbox.height).addClass(this.options.classRect));
+    }
+
+    // Draw Points at the edges, if enabled
+    if (this.options.points && !this.rectSelection.set.get(1)) {
+        var ename ="touchstart", mname = "mousedown";
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, 0).attr('class', this.options.classPoints + '_lt').on(mname, getMoseDownFunc('lt')).on(ename, getMoseDownFunc('lt')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, 0).attr('class', this.options.classPoints + '_rt').on(mname, getMoseDownFunc('rt')).on(ename, getMoseDownFunc('rt')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, bbox.height).attr('class', this.options.classPoints + '_rb').on(mname, getMoseDownFunc('rb')).on(ename, getMoseDownFunc('rb')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, bbox.height).attr('class', this.options.classPoints + '_lb').on(mname, getMoseDownFunc('lb')).on(ename, getMoseDownFunc('lb')));
+
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, 0).attr('class', this.options.classPoints + '_t').on(mname, getMoseDownFunc('t')).on(ename, getMoseDownFunc('t')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, bbox.height / 2).attr('class', this.options.classPoints + '_r').on(mname, getMoseDownFunc('r')).on(ename, getMoseDownFunc('r')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, bbox.height).attr('class', this.options.classPoints + '_b').on(mname, getMoseDownFunc('b')).on(ename, getMoseDownFunc('b')));
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, bbox.height / 2).attr('class', this.options.classPoints + '_l').on(mname, getMoseDownFunc('l')).on(ename, getMoseDownFunc('l')));
+
+        this.rectSelection.set.each(function () {
+            this.addClass(_this.options.classPoints);
+        });
+    }
+
+    // draw rotationPint, if enabled
+    if (this.options.rotationPoint && ((this.options.points && !this.rectSelection.set.get(9)) || (!this.options.points && !this.rectSelection.set.get(1)))) {
+
+        var curriedEvent = function (ev) {
+            ev = ev || window.event;
+            ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+            ev.stopPropagation();
+
+            var x = ev.pageX || ev.touches[0].pageX;
+            var y = ev.pageY || ev.touches[0].pageY;
+            _this.el.fire('rot', {x: x, y: y, event: ev});
+        };
+        this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, 20).attr('class', this.options.classPoints + '_rot')
+            .on("touchstart", curriedEvent).on("mousedown", curriedEvent));
+
+    }
+
+};
+
+SelectHandler.prototype.handler = function () {
+
+    var bbox = this.el.bbox();
+    this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y));
+
+    if (this.rectSelection.isSelected) {
+        this.updateRectSelection();
+    }
+
+    if (this.pointSelection.isSelected) {
+        this.updatePointSelection();
+    }
+
+};
+
+SelectHandler.prototype.observe = function () {
+    var _this = this;
+
+    if (MutationObserver) {
+        if (this.rectSelection.isSelected || this.pointSelection.isSelected) {
+            this.observerInst = this.observerInst || new MutationObserver(function () {
+                _this.handler();
+            });
+            this.observerInst.observe(this.el.node, {attributes: true});
+        } else {
+            try {
+                this.observerInst.disconnect();
+                delete this.observerInst;
+            } catch (e) {
+            }
+        }
+    } else {
+        this.el.off('DOMAttrModified.select');
+
+        if (this.rectSelection.isSelected || this.pointSelection.isSelected) {
+            this.el.on('DOMAttrModified.select', function () {
+                _this.handler();
+            });
+        }
+    }
+};
+
+SelectHandler.prototype.cleanup = function () {
+
+    //var _this = this;
+
+    if (!this.rectSelection.isSelected && this.rectSelection.set) {
+        // stop watching the element, remove the selection
+        this.rectSelection.set.each(function () {
+            this.remove();
+        });
+
+        this.rectSelection.set.clear();
+        delete this.rectSelection.set;
+    }
+
+    if (!this.pointSelection.isSelected && this.pointSelection.set) {
+        // Remove all points, clear the set, stop watching the element
+        this.pointSelection.set.each(function () {
+            this.remove();
+        });
+
+        this.pointSelection.set.clear();
+        delete this.pointSelection.set;
+    }
+
+    if (!this.pointSelection.isSelected && !this.rectSelection.isSelected) {
+        this.nested.remove();
+        delete this.nested;
+
+    }
+};
+
+
+SVG.extend(SVG.Element, {
+    // Select element with mouse
+    selectize: function (value, options) {
+
+        // Check the parameters and reassign if needed
+        if (typeof value === 'object') {
+            options = value;
+            value = true;
+        }
+
+        var selectHandler = this.remember('_selectHandler') || new SelectHandler(this);
+
+        selectHandler.init(value === undefined ? true : value, options || {});
+
+        return this;
+
+    }
+});
+
+SVG.Element.prototype.selectize.defaults = {
+    points: true,                            // If true, points at the edges are drawn. Needed for resize!
+    classRect: 'svg_select_boundingRect',    // Css-class added to the rect
+    classPoints: 'svg_select_points',        // Css-class added to the points
+    radius: 7,                               // radius of the points
+    rotationPoint: true,                     // If true, rotation point is drawn. Needed for rotation!
+    deepSelect: false                        // If true, moving of single points is possible (only line, polyline, polyon)
+};
+}());
+
+(function() {
+(function () {
+
+    function ResizeHandler(el) {
+
+        el.remember('_resizeHandler', this);
+
+        this.el = el;
+        this.parameters = {};
+        this.lastUpdateCall = null;
+        this.p = el.doc().node.createSVGPoint();
+    }
+
+    ResizeHandler.prototype.transformPoint = function(x, y, m){
+
+        this.p.x = x - (this.offset.x - window.pageXOffset);
+        this.p.y = y - (this.offset.y - window.pageYOffset);
+
+        return this.p.matrixTransform(m || this.m);
+
+    };
+
+    ResizeHandler.prototype._extractPosition = function(event) {
+        // Extract a position from a mouse/touch event.
+        // Returns { x: .., y: .. }
+        return {
+            x: event.clientX != null ? event.clientX : event.touches[0].clientX,
+            y: event.clientY != null ? event.clientY : event.touches[0].clientY
+        }
+    };
+
+    ResizeHandler.prototype.init = function (options) {
+
+        var _this = this;
+
+        this.stop();
+
+        if (options === 'stop') {
+            return;
+        }
+
+        this.options = {};
+
+        // Merge options and defaults
+        for (var i in this.el.resize.defaults) {
+            this.options[i] = this.el.resize.defaults[i];
+            if (typeof options[i] !== 'undefined') {
+                this.options[i] = options[i];
+            }
+        }
+
+        // We listen to all these events which are specifying different edges
+        this.el.on('lt.resize', function(e){ _this.resize(e || window.event); });  // Left-Top
+        this.el.on('rt.resize', function(e){ _this.resize(e || window.event); });  // Right-Top
+        this.el.on('rb.resize', function(e){ _this.resize(e || window.event); });  // Right-Bottom
+        this.el.on('lb.resize', function(e){ _this.resize(e || window.event); });  // Left-Bottom
+
+        this.el.on('t.resize', function(e){ _this.resize(e || window.event); });   // Top
+        this.el.on('r.resize', function(e){ _this.resize(e || window.event); });   // Right
+        this.el.on('b.resize', function(e){ _this.resize(e || window.event); });   // Bottom
+        this.el.on('l.resize', function(e){ _this.resize(e || window.event); });   // Left
+
+        this.el.on('rot.resize', function(e){ _this.resize(e || window.event); }); // Rotation
+
+        this.el.on('point.resize', function(e){ _this.resize(e || window.event); }); // Point-Moving
+
+        // This call ensures, that the plugin reacts to a change of snapToGrid immediately
+        this.update();
+
+    };
+
+    ResizeHandler.prototype.stop = function(){
+        this.el.off('lt.resize');
+        this.el.off('rt.resize');
+        this.el.off('rb.resize');
+        this.el.off('lb.resize');
+
+        this.el.off('t.resize');
+        this.el.off('r.resize');
+        this.el.off('b.resize');
+        this.el.off('l.resize');
+
+        this.el.off('rot.resize');
+
+        this.el.off('point.resize');
+
+        return this;
+    };
+
+    ResizeHandler.prototype.resize = function (event) {
+
+        var _this = this;
+
+        this.m = this.el.node.getScreenCTM().inverse();
+        this.offset = { x: window.pageXOffset, y: window.pageYOffset };
+
+        var txPt = this._extractPosition(event.detail.event);
+        this.parameters = {
+            type: this.el.type, // the type of element
+            p: this.transformPoint(txPt.x, txPt.y),
+            x: event.detail.x,      // x-position of the mouse when resizing started
+            y: event.detail.y,      // y-position of the mouse when resizing started
+            box: this.el.bbox(),    // The bounding-box of the element
+            rotation: this.el.transform().rotation  // The current rotation of the element
+        };
+
+        // Add font-size parameter if the element type is text
+        if (this.el.type === "text") {
+            this.parameters.fontSize = this.el.attr()["font-size"];
+        }
+
+        // the i-param in the event holds the index of the point which is moved, when using `deepSelect`
+        if (event.detail.i !== undefined) {
+
+            // get the point array
+            var array = this.el.array().valueOf();
+
+            // Save the index and the point which is moved
+            this.parameters.i = event.detail.i;
+            this.parameters.pointCoords = [array[event.detail.i][0], array[event.detail.i][1]];
+        }
+
+        // Lets check which edge of the bounding-box was clicked and resize the this.el according to this
+        switch (event.type) {
+
+            // Left-Top-Edge
+            case 'lt':
+                // We build a calculating function for every case which gives us the new position of the this.el
+                this.calc = function (diffX, diffY) {
+                    // The procedure is always the same
+                    // First we snap the edge to the given grid (snapping to 1px grid is normal resizing)
+                    var snap = this.snapToGrid(diffX, diffY);
+
+                    // Now we check if the new height and width still valid (> 0)
+                    if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height - snap[1] > 0) {
+                        // ...if valid, we resize the this.el (which can include moving because the coord-system starts at the left-top and this edge is moving sometimes when resized)
+
+                        /*
+                         * but first check if the element is text box, so we can change the font size instead of
+                         * the width and height
+                         */
+
+                        if (this.parameters.type === "text") {
+                            this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y);
+                            this.el.attr("font-size", this.parameters.fontSize - snap[0]);
+                            return;
+                        }
+
+                        snap = this.checkAspectRatio(snap);
+
+                        this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y + snap[1]).size(this.parameters.box.width - snap[0], this.parameters.box.height - snap[1]);
+                    }
+                };
+                break;
+
+            // Right-Top
+            case 'rt':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 1 << 1);
+                    if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height - snap[1] > 0) {
+                        if (this.parameters.type === "text") {
+                            this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y);
+                            this.el.attr("font-size", this.parameters.fontSize + snap[0]);
+                            return;
+                        }
+
+                        snap = this.checkAspectRatio(snap);
+
+                        this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).size(this.parameters.box.width + snap[0], this.parameters.box.height - snap[1]);
+                    }
+                };
+                break;
+
+            // Right-Bottom
+            case 'rb':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 0);
+                    if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height + snap[1] > 0) {
+                        if (this.parameters.type === "text") {
+                            this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y);
+                            this.el.attr("font-size", this.parameters.fontSize + snap[0]);
+                            return;
+                        }
+
+                        snap = this.checkAspectRatio(snap);
+
+                        this.el.move(this.parameters.box.x, this.parameters.box.y).size(this.parameters.box.width + snap[0], this.parameters.box.height + snap[1]);
+                    }
+                };
+                break;
+
+            // Left-Bottom
+            case 'lb':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 1);
+                    if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height + snap[1] > 0) {
+                        if (this.parameters.type === "text") {
+                            this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y);
+                            this.el.attr("font-size", this.parameters.fontSize - snap[0]);
+                            return;
+                        }
+
+                        snap = this.checkAspectRatio(snap);
+
+                        this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).size(this.parameters.box.width - snap[0], this.parameters.box.height + snap[1]);
+                    }
+                };
+                break;
+
+            // Top
+            case 't':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 1 << 1);
+                    if (this.parameters.box.height - snap[1] > 0) {
+                        // Disable the font-resizing if it is not from the corner of bounding-box
+                        if (this.parameters.type === "text") {
+                            return;
+                        }
+
+                        this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).height(this.parameters.box.height - snap[1]);
+                    }
+                };
+                break;
+
+            // Right
+            case 'r':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 0);
+                    if (this.parameters.box.width + snap[0] > 0) {
+                        if (this.parameters.type === "text") {
+                            return;
+                        }
+
+                        this.el.move(this.parameters.box.x, this.parameters.box.y).width(this.parameters.box.width + snap[0]);
+                    }
+                };
+                break;
+
+            // Bottom
+            case 'b':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 0);
+                    if (this.parameters.box.height + snap[1] > 0) {
+                        if (this.parameters.type === "text") {
+                            return;
+                        }
+
+                        this.el.move(this.parameters.box.x, this.parameters.box.y).height(this.parameters.box.height + snap[1]);
+                    }
+                };
+                break;
+
+            // Left
+            case 'l':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+                    var snap = this.snapToGrid(diffX, diffY, 1);
+                    if (this.parameters.box.width - snap[0] > 0) {
+                        if (this.parameters.type === "text") {
+                            return;
+                        }
+
+                        this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).width(this.parameters.box.width - snap[0]);
+                    }
+                };
+                break;
+
+            // Rotation
+            case 'rot':
+                // s.a.
+                this.calc = function (diffX, diffY) {
+
+                    // yes this is kinda stupid but we need the mouse coords back...
+                    var current = {x: diffX + this.parameters.p.x, y: diffY + this.parameters.p.y};
+
+                    // start minus middle
+                    var sAngle = Math.atan2((this.parameters.p.y - this.parameters.box.y - this.parameters.box.height / 2), (this.parameters.p.x - this.parameters.box.x - this.parameters.box.width / 2));
+
+                    // end minus middle
+                    var pAngle = Math.atan2((current.y - this.parameters.box.y - this.parameters.box.height / 2), (current.x - this.parameters.box.x - this.parameters.box.width / 2));
+
+                    var angle = (pAngle - sAngle) * 180 / Math.PI;
+
+                    // We have to move the element to the center of the box first and change the rotation afterwards
+                    // because rotation always works around a rotation-center, which is changed when moving the element
+                    // We also set the new rotation center to the center of the box.
+                    this.el.center(this.parameters.box.cx, this.parameters.box.cy).rotate(this.parameters.rotation + angle - angle % this.options.snapToAngle, this.parameters.box.cx, this.parameters.box.cy);
+                };
+                break;
+
+            // Moving one single Point (needed when an element is deepSelected which means you can move every single point of the object)
+            case 'point':
+                this.calc = function (diffX, diffY) {
+
+                    // Snapping the point to the grid
+                    var snap = this.snapToGrid(diffX, diffY, this.parameters.pointCoords[0], this.parameters.pointCoords[1]);
+
+                    // Get the point array
+                    var array = this.el.array().valueOf();
+
+                    // Changing the moved point in the array
+                    array[this.parameters.i][0] = this.parameters.pointCoords[0] + snap[0];
+                    array[this.parameters.i][1] = this.parameters.pointCoords[1] + snap[1];
+
+                    // And plot the new this.el
+                    this.el.plot(array);
+                };
+        }
+
+        this.el.fire('resizestart', {dx: this.parameters.x, dy: this.parameters.y, event: event});
+        // When resizing started, we have to register events for...
+        // Touches.
+        SVG.on(window, 'touchmove.resize', function(e) {
+            _this.update(e || window.event);
+        });
+        SVG.on(window, 'touchend.resize', function() {
+            _this.done();
+        });
+        // Mouse.
+        SVG.on(window, 'mousemove.resize', function (e) {
+            _this.update(e || window.event);
+        });
+        SVG.on(window, 'mouseup.resize', function () {
+            _this.done();
+        });
+
+    };
+
+    // The update-function redraws the element every time the mouse is moving
+    ResizeHandler.prototype.update = function (event) {
+
+        if (!event) {
+            if (this.lastUpdateCall) {
+                this.calc(this.lastUpdateCall[0], this.lastUpdateCall[1]);
+            }
+            return;
+        }
+
+        // Calculate the difference between the mouseposition at start and now
+        var txPt = this._extractPosition(event);
+        var p = this.transformPoint(txPt.x, txPt.y);
+
+        var diffX = p.x - this.parameters.p.x,
+            diffY = p.y - this.parameters.p.y;
+
+        this.lastUpdateCall = [diffX, diffY];
+
+        // Calculate the new position and height / width of the element
+        this.calc(diffX, diffY);
+
+       // Emit an event to say we have changed.
+        this.el.fire('resizing', {dx: diffX, dy: diffY, event: event});
+    };
+
+    // Is called on mouseup.
+    // Removes the update-function from the mousemove event
+    ResizeHandler.prototype.done = function () {
+        this.lastUpdateCall = null;
+        SVG.off(window, 'mousemove.resize');
+        SVG.off(window, 'mouseup.resize');
+        SVG.off(window, 'touchmove.resize');
+        SVG.off(window, 'touchend.resize');
+        this.el.fire('resizedone');
+    };
+
+    // The flag is used to determine whether the resizing is used with a left-Point (first bit) and top-point (second bit)
+    // In this cases the temp-values are calculated differently
+    ResizeHandler.prototype.snapToGrid = function (diffX, diffY, flag, pointCoordsY) {
+
+        var temp;
+
+        // If `pointCoordsY` is given, a single Point has to be snapped (deepSelect). That's why we need a different temp-value
+        if (typeof pointCoordsY !== 'undefined') {
+            // Note that flag = pointCoordsX in this case
+            temp = [(flag + diffX) % this.options.snapToGrid, (pointCoordsY + diffY) % this.options.snapToGrid];
+        } else {
+            // We check if the flag is set and if not we set a default-value (both bits set - which means upper-left-edge)
+            flag = flag == null ? 1 | 1 << 1 : flag;
+            temp = [(this.parameters.box.x + diffX + (flag & 1 ? 0 : this.parameters.box.width)) % this.options.snapToGrid, (this.parameters.box.y + diffY + (flag & (1 << 1) ? 0 : this.parameters.box.height)) % this.options.snapToGrid];
+        }
+
+
+        diffX -= (Math.abs(temp[0]) < this.options.snapToGrid / 2 ?
+                  temp[0] :
+                  temp[0] - (diffX < 0 ? -this.options.snapToGrid : this.options.snapToGrid));
+        diffY -= (Math.abs(temp[1]) < this.options.snapToGrid / 2 ?
+                  temp[1] :
+                  temp[1] - (diffY < 0 ? -this.options.snapToGrid : this.options.snapToGrid));
+
+        return this.constraintToBox(diffX, diffY, flag, pointCoordsY);
+
+    };
+
+    // keep element within constrained box
+    ResizeHandler.prototype.constraintToBox = function (diffX, diffY, flag, pointCoordsY) {
+        //return [diffX, diffY]
+        var c = this.options.constraint || {};
+        var orgX, orgY;
+
+        if (typeof pointCoordsY !== 'undefined') {
+          orgX = flag;
+          orgY = pointCoordsY;
+        } else {
+          orgX = this.parameters.box.x + (flag & 1 ? 0 : this.parameters.box.width);
+          orgY = this.parameters.box.y + (flag & (1<<1) ? 0 : this.parameters.box.height);
+        }
+
+        if (typeof c.minX !== 'undefined' && orgX + diffX < c.minX) {
+          diffX = c.minX - orgX;
+        }
+
+        if (typeof c.maxX !== 'undefined' && orgX + diffX > c.maxX) {
+          diffX = c.maxX - orgX;
+        }
+
+        if (typeof c.minY !== 'undefined' && orgY + diffY < c.minY) {
+          diffY = c.minY - orgY;
+        }
+
+        if (typeof c.maxY !== 'undefined' && orgY + diffY > c.maxY) {
+          diffY = c.maxY - orgY;
+        }
+
+        return [diffX, diffY];
+    };
+
+    ResizeHandler.prototype.checkAspectRatio = function (snap) {
+        if (!this.options.saveAspectRatio) {
+            return snap;
+        }
+
+        var updatedSnap = snap.slice();
+        var aspectRatio = this.parameters.box.width / this.parameters.box.height;
+        var newW = this.parameters.box.width + snap[0];
+        var newH = this.parameters.box.height - snap[1];
+        var newAspectRatio = newW / newH;
+
+        if (newAspectRatio < aspectRatio) {
+            // Height is too big. Adapt it
+            updatedSnap[1] = newW / aspectRatio - this.parameters.box.height;
+        } else if (newAspectRatio > aspectRatio) {
+            // Width is too big. Adapt it
+            updatedSnap[0] = this.parameters.box.width - newH * aspectRatio;
+        }
+
+        return updatedSnap;
+
+    };
+
+    SVG.extend(SVG.Element, {
+        // Resize element with mouse
+        resize: function (options) {
+
+            (this.remember('_resizeHandler') || new ResizeHandler(this)).init(options || {});
+
+            return this;
+
+        }
+
+    });
+
+    SVG.Element.prototype.resize.defaults = {
+        snapToAngle: 0.1,       // Specifies the speed the rotation is happening when moving the mouse
+        snapToGrid: 1,          // Snaps to a grid of `snapToGrid` Pixels
+        constraint: {},         // keep element within constrained box
+        saveAspectRatio: false  // Save aspect ratio when resizing using lt, rt, rb or lb points
+    };
+
+}).call(this);
+}());
+
+function styleInject(css, ref) {
+  if ( ref === void 0 ) ref = {};
+  var insertAt = ref.insertAt;
+
+  if (!css || typeof document === 'undefined') { return; }
+
+  var head = document.head || document.getElementsByTagName('head')[0];
+  var style = document.createElement('style');
+  style.type = 'text/css';
+
+  if (insertAt === 'top') {
+    if (head.firstChild) {
+      head.insertBefore(style, head.firstChild);
+    } else {
+      head.appendChild(style);
+    }
+  } else {
+    head.appendChild(style);
+  }
+
+  if (style.styleSheet) {
+    style.styleSheet.cssText = css;
+  } else {
+    style.appendChild(document.createTextNode(css));
+  }
+}
+
+var css = ".apexcharts-canvas {\n  position: relative;\n  user-select: none;\n  /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */\n}\n\n/* scrollbar is not visible by default for legend, hence forcing the visibility */\n.apexcharts-canvas ::-webkit-scrollbar {\n  -webkit-appearance: none;\n  width: 6px;\n}\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n  border-radius: 4px;\n  background-color: rgba(0,0,0,.5);\n  box-shadow: 0 0 1px rgba(255,255,255,.5);\n  -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5);\n}\n.apexcharts-canvas.dark {\n  background: #343F57;\n}\n\n.apexcharts-inner {\n  position: relative;\n}\n\n.legend-mouseover-inactive {\n  transition: 0.15s ease all;\n  opacity: 0.20;\n}\n\n.apexcharts-series-collapsed {\n  opacity: 0;\n}\n\n.apexcharts-gridline, .apexcharts-text {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip {\n  border-radius: 5px;\n  box-shadow: 2px 2px 6px -4px #999;\n  cursor: default;\n  font-size: 14px;\n  left: 62px;\n  opacity: 0;\n  pointer-events: none;\n  position: absolute;\n  top: 20px;\n  overflow: hidden;\n  white-space: nowrap;\n  z-index: 12;\n  transition: 0.15s ease all;\n}\n.apexcharts-tooltip.light {\n  border: 1px solid #e3e3e3;\n  background: rgba(255, 255, 255, 0.96);\n}\n.apexcharts-tooltip.dark {\n  color: #fff;\n  background: rgba(30,30,30, 0.8);\n}\n.apexcharts-tooltip * {\n  font-family: inherit;\n}\n\n.apexcharts-tooltip .apexcharts-marker,\n.apexcharts-area-series .apexcharts-area,\n.apexcharts-line {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-tooltip-title {\n  padding: 6px;\n  font-size: 15px;\n  margin-bottom: 4px;\n}\n.apexcharts-tooltip.light .apexcharts-tooltip-title {\n  background: #ECEFF1;\n  border-bottom: 1px solid #ddd;\n}\n.apexcharts-tooltip.dark .apexcharts-tooltip-title {\n  background: rgba(0, 0, 0, 0.7);\n  border-bottom: 1px solid #333;\n}\n\n.apexcharts-tooltip-text-value,\n.apexcharts-tooltip-text-z-value {\n  display: inline-block;\n  font-weight: 600;\n  margin-left: 5px;\n}\n\n.apexcharts-tooltip-text-z-label:empty,\n.apexcharts-tooltip-text-z-value:empty {\n  display: none;\n}\n\n.apexcharts-tooltip-text-value, \n.apexcharts-tooltip-text-z-value {\n  font-weight: 600;\n}\n\n.apexcharts-tooltip-marker {\n  width: 12px;\n  height: 12px;\n  position: relative;\n  top: 0px;\n  margin-right: 10px;\n  border-radius: 50%;\n}\n\n.apexcharts-tooltip-series-group {\n  padding: 0 10px;\n  display: none;\n  text-align: left;\n  justify-content: left;\n  align-items: center;\n}\n\n.apexcharts-tooltip-series-group.active .apexcharts-tooltip-marker {\n  opacity: 1;\n}\n.apexcharts-tooltip-series-group.active, .apexcharts-tooltip-series-group:last-child {\n  padding-bottom: 4px;\n}\n.apexcharts-tooltip-series-group-hidden {\n  opacity: 0;\n  height: 0;\n  line-height: 0;\n  padding: 0 !important;\n}\n.apexcharts-tooltip-y-group {\n  padding: 6px 0 5px;\n}\n.apexcharts-tooltip-candlestick {\n  padding: 4px 8px;\n}\n.apexcharts-tooltip-candlestick > div {\n  margin: 4px 0;\n}\n.apexcharts-tooltip-candlestick span.value {\n  font-weight: bold;\n}\n\n.apexcharts-tooltip-rangebar {\n  padding: 5px 8px;\n}\n\n.apexcharts-tooltip-rangebar .category {\n  font-weight: 600;\n  color: #777;\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n  font-weight: bold;\n  display: block;\n  margin-bottom: 5px;\n}\n\n.apexcharts-xaxistooltip {\n  opacity: 0;\n  padding: 9px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-xaxistooltip:after, .apexcharts-xaxistooltip:before {\n\tleft: 50%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n\n.apexcharts-xaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-left: -6px;\n}\n.apexcharts-xaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-left: -7px;\n}\n\n.apexcharts-xaxistooltip-bottom:after, .apexcharts-xaxistooltip-bottom:before {\n  bottom: 100%;\n}\n\n.apexcharts-xaxistooltip-top:after, .apexcharts-xaxistooltip-top:before {\n  top: 100%;\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n  border-bottom-color: #ECEFF1;\n}\n.apexcharts-xaxistooltip-bottom:before {\n  border-bottom-color: #90A4AE;\n}\n\n.apexcharts-xaxistooltip-bottom.dark:after {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-bottom.dark:before {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-top:after {\n  border-top-color:#ECEFF1\n}\n.apexcharts-xaxistooltip-top:before {\n  border-top-color: #90A4AE;\n}\n.apexcharts-xaxistooltip-top.dark:after {\n  border-top-color:rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-top.dark:before {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n\n\n.apexcharts-xaxistooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-yaxistooltip {\n  opacity: 0;\n  padding: 4px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n}\n\n.apexcharts-yaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-yaxistooltip:after, .apexcharts-yaxistooltip:before {\n\ttop: 50%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n.apexcharts-yaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-top: -6px;\n}\n.apexcharts-yaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-top: -7px;\n}\n\n.apexcharts-yaxistooltip-left:after, .apexcharts-yaxistooltip-left:before {\n  left: 100%;\n}\n\n.apexcharts-yaxistooltip-right:after, .apexcharts-yaxistooltip-right:before {\n  right: 100%;\n}\n\n.apexcharts-yaxistooltip-left:after {\n  border-left-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-left:before {\n  border-left-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-left.dark:after {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-left.dark:before {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-right:after {\n  border-right-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-right:before {\n  border-right-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-right.dark:after {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-right.dark:before {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip.active {\n  opacity: 1;\n}\n\n.apexcharts-xcrosshairs, .apexcharts-ycrosshairs {\n  pointer-events: none;\n  opacity: 0;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xcrosshairs.active, .apexcharts-ycrosshairs.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-ycrosshairs-hidden {\n  opacity: 0;\n}\n\n.apexcharts-zoom-rect {\n  pointer-events: none;\n}\n.apexcharts-selection-rect {\n  cursor: move;\n}\n\n.svg_select_points, .svg_select_points_rot {\n  opacity: 0;\n  visibility: hidden;\n}\n.svg_select_points_l, .svg_select_points_r {\n  cursor: ew-resize;\n  opacity: 1;\n  visibility: visible;\n  fill: #888;\n}\n.apexcharts-canvas.zoomable .hovering-zoom {\n  cursor: crosshair\n}\n.apexcharts-canvas.zoomable .hovering-pan {\n  cursor: move\n}\n\n.apexcharts-xaxis,\n.apexcharts-yaxis {\n  pointer-events: none;\n}\n\n.apexcharts-zoom-icon, \n.apexcharts-zoom-in-icon,\n.apexcharts-zoom-out-icon,\n.apexcharts-reset-zoom-icon, \n.apexcharts-pan-icon, \n.apexcharts-selection-icon,\n.apexcharts-menu-icon, \n.apexcharts-toolbar-custom-icon {\n  cursor: pointer;\n  width: 20px;\n  height: 20px;\n  line-height: 24px;\n  color: #6E8192;\n  text-align: center;\n}\n\n\n.apexcharts-zoom-icon svg, \n.apexcharts-zoom-in-icon svg,\n.apexcharts-zoom-out-icon svg,\n.apexcharts-reset-zoom-icon svg,\n.apexcharts-menu-icon svg {\n  fill: #6E8192;\n}\n.apexcharts-selection-icon svg {\n  fill: #444;\n  transform: scale(0.76)\n}\n\n.dark .apexcharts-zoom-icon svg, \n.dark .apexcharts-zoom-in-icon svg,\n.dark .apexcharts-zoom-out-icon svg,\n.dark .apexcharts-reset-zoom-icon svg, \n.dark .apexcharts-pan-icon svg, \n.dark .apexcharts-selection-icon svg,\n.dark .apexcharts-menu-icon svg, \n.dark .apexcharts-toolbar-custom-icon svg{\n  fill: #f3f4f5;\n}\n\n.apexcharts-canvas .apexcharts-zoom-icon.selected svg, \n.apexcharts-canvas .apexcharts-selection-icon.selected svg, \n.apexcharts-canvas .apexcharts-reset-zoom-icon.selected svg {\n  fill: #008FFB;\n}\n.light .apexcharts-selection-icon:not(.selected):hover svg,\n.light .apexcharts-zoom-icon:not(.selected):hover svg, \n.light .apexcharts-zoom-in-icon:hover svg, \n.light .apexcharts-zoom-out-icon:hover svg, \n.light .apexcharts-reset-zoom-icon:hover svg, \n.light .apexcharts-menu-icon:hover svg {\n  fill: #333;\n}\n\n.apexcharts-selection-icon, .apexcharts-menu-icon {\n  position: relative;\n}\n.apexcharts-reset-zoom-icon {\n  margin-left: 5px;\n}\n.apexcharts-zoom-icon, .apexcharts-reset-zoom-icon, .apexcharts-menu-icon {\n  transform: scale(0.85);\n}\n\n.apexcharts-zoom-in-icon, .apexcharts-zoom-out-icon {\n  transform: scale(0.7)\n}\n\n.apexcharts-zoom-out-icon {\n  margin-right: 3px;\n}\n\n.apexcharts-pan-icon {\n  transform: scale(0.62);\n  position: relative;\n  left: 1px;\n  top: 0px;\n}\n.apexcharts-pan-icon svg {\n  fill: #fff;\n  stroke: #6E8192;\n  stroke-width: 2;\n}\n.apexcharts-pan-icon.selected svg {\n  stroke: #008FFB;\n}\n.apexcharts-pan-icon:not(.selected):hover svg {\n  stroke: #333;\n}\n\n.apexcharts-toolbar {\n  position: absolute;\n  z-index: 11;\n  top: 0px;\n  right: 3px;\n  max-width: 176px;\n  text-align: right;\n  border-radius: 3px;\n  padding: 0px 6px 2px 6px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center; \n}\n\n.apexcharts-toolbar svg {\n  pointer-events: none;\n}\n\n.apexcharts-menu {\n  background: #fff;\n  position: absolute;\n  top: 100%;\n  border: 1px solid #ddd;\n  border-radius: 3px;\n  padding: 3px;\n  right: 10px;\n  opacity: 0;\n  min-width: 110px;\n  transition: 0.15s ease all;\n  pointer-events: none;\n}\n\n.apexcharts-menu.open {\n  opacity: 1;\n  pointer-events: all;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-menu-item {\n  padding: 6px 7px;\n  font-size: 12px;\n  cursor: pointer;\n}\n.light .apexcharts-menu-item:hover {\n  background: #eee;\n}\n.dark .apexcharts-menu {\n  background: rgba(0, 0, 0, 0.7);\n  color: #fff;\n}\n\n@media screen and (min-width: 768px) {\n  .apexcharts-toolbar {\n    /*opacity: 0;*/\n  }\n\n  .apexcharts-canvas:hover .apexcharts-toolbar {\n    opacity: 1;\n  } \n}\n\n.apexcharts-datalabel.hidden {\n  opacity: 0;\n}\n\n.apexcharts-pie-label,\n.apexcharts-datalabel, .apexcharts-datalabel-label, .apexcharts-datalabel-value {\n  cursor: default;\n  pointer-events: none;\n}\n\n.apexcharts-pie-label-delay {\n  opacity: 0;\n  animation-name: opaque;\n  animation-duration: 0.3s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease;\n}\n\n.apexcharts-canvas .hidden {\n  opacity: 0;\n}\n\n.apexcharts-hide .apexcharts-series-points {\n  opacity: 0;\n}\n\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, .apexcharts-radar-series path, .apexcharts-radar-series polygon {\n  pointer-events: none;\n}\n\n/* markers */\n\n.apexcharts-marker {\n  transition: 0.15s ease all;\n}\n\n@keyframes opaque {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}";
+styleInject(css);
+
+/*
+ * classList.js: Cross-browser full element.classList implementation.
+ * 1.2.20171210
+ *
+ * By Eli Grey, http://eligrey.com
+ * License: Dedicated to the public domain.
+ *   See https://github.com/eligrey/classList.js/blob/master/LICENSE.md
+ */
+
+/*global self, document, DOMException */
+
+/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */
+if ("document" in self) {
+  // Full polyfill for browsers with no classList support
+  // Including IE < Edge missing SVGElement.classList
+  if (!("classList" in document.createElement("_")) || document.createElementNS && !("classList" in document.createElementNS("http://www.w3.org/2000/svg", "g"))) {
+    (function (view) {
+
+      if (!('Element' in view)) return;
+
+      var classListProp = "classList",
+          protoProp = "prototype",
+          elemCtrProto = view.Element[protoProp],
+          objCtr = Object,
+          strTrim = String[protoProp].trim || function () {
+        return this.replace(/^\s+|\s+$/g, "");
+      },
+          arrIndexOf = Array[protoProp].indexOf || function (item) {
+        var i = 0,
+            len = this.length;
+
+        for (; i < len; i++) {
+          if (i in this && this[i] === item) {
+            return i;
+          }
+        }
+
+        return -1;
+      } // Vendors: please allow content code to instantiate DOMExceptions
+      ,
+          DOMEx = function DOMEx(type, message) {
+        this.name = type;
+        this.code = DOMException[type];
+        this.message = message;
+      },
+          checkTokenAndGetIndex = function checkTokenAndGetIndex(classList, token) {
+        if (token === "") {
+          throw new DOMEx("SYNTAX_ERR", "The token must not be empty.");
+        }
+
+        if (/\s/.test(token)) {
+          throw new DOMEx("INVALID_CHARACTER_ERR", "The token must not contain space characters.");
+        }
+
+        return arrIndexOf.call(classList, token);
+      },
+          ClassList = function ClassList(elem) {
+        var trimmedClasses = strTrim.call(elem.getAttribute("class") || ""),
+            classes = trimmedClasses ? trimmedClasses.split(/\s+/) : [],
+            i = 0,
+            len = classes.length;
+
+        for (; i < len; i++) {
+          this.push(classes[i]);
+        }
+
+        this._updateClassName = function () {
+          elem.setAttribute("class", this.toString());
+        };
+      },
+          classListProto = ClassList[protoProp] = [],
+          classListGetter = function classListGetter() {
+        return new ClassList(this);
+      }; // Most DOMException implementations don't allow calling DOMException's toString()
+      // on non-DOMExceptions. Error's toString() is sufficient here.
+
+
+      DOMEx[protoProp] = Error[protoProp];
+
+      classListProto.item = function (i) {
+        return this[i] || null;
+      };
+
+      classListProto.contains = function (token) {
+        return ~checkTokenAndGetIndex(this, token + "");
+      };
+
+      classListProto.add = function () {
+        var tokens = arguments,
+            i = 0,
+            l = tokens.length,
+            token,
+            updated = false;
+
+        do {
+          token = tokens[i] + "";
+
+          if (!~checkTokenAndGetIndex(this, token)) {
+            this.push(token);
+            updated = true;
+          }
+        } while (++i < l);
+
+        if (updated) {
+          this._updateClassName();
+        }
+      };
+
+      classListProto.remove = function () {
+        var tokens = arguments,
+            i = 0,
+            l = tokens.length,
+            token,
+            updated = false,
+            index;
+
+        do {
+          token = tokens[i] + "";
+          index = checkTokenAndGetIndex(this, token);
+
+          while (~index) {
+            this.splice(index, 1);
+            updated = true;
+            index = checkTokenAndGetIndex(this, token);
+          }
+        } while (++i < l);
+
+        if (updated) {
+          this._updateClassName();
+        }
+      };
+
+      classListProto.toggle = function (token, force) {
+        var result = this.contains(token),
+            method = result ? force !== true && "remove" : force !== false && "add";
+
+        if (method) {
+          this[method](token);
+        }
+
+        if (force === true || force === false) {
+          return force;
+        } else {
+          return !result;
+        }
+      };
+
+      classListProto.replace = function (token, replacement_token) {
+        var index = checkTokenAndGetIndex(token + "");
+
+        if (~index) {
+          this.splice(index, 1, replacement_token);
+
+          this._updateClassName();
+        }
+      };
+
+      classListProto.toString = function () {
+        return this.join(" ");
+      };
+
+      if (objCtr.defineProperty) {
+        var classListPropDesc = {
+          get: classListGetter,
+          enumerable: true,
+          configurable: true
+        };
+
+        try {
+          objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
+        } catch (ex) {
+          // IE 8 doesn't support enumerable:true
+          // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36
+          // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected
+          if (ex.number === undefined || ex.number === -0x7FF5EC54) {
+            classListPropDesc.enumerable = false;
+            objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
+          }
+        }
+      } else if (objCtr[protoProp].__defineGetter__) {
+        elemCtrProto.__defineGetter__(classListProp, classListGetter);
+      }
+    })(self);
+  } // There is full or partial native classList support, so just check if we need
+  // to normalize the add/remove and toggle APIs.
+
+
+  (function () {
+
+    var testElement = document.createElement("_");
+    testElement.classList.add("c1", "c2"); // Polyfill for IE 10/11 and Firefox <26, where classList.add and
+    // classList.remove exist but support only one argument at a time.
+
+    if (!testElement.classList.contains("c2")) {
+      var createMethod = function createMethod(method) {
+        var original = DOMTokenList.prototype[method];
+
+        DOMTokenList.prototype[method] = function (token) {
+          var i,
+              len = arguments.length;
+
+          for (i = 0; i < len; i++) {
+            token = arguments[i];
+            original.call(this, token);
+          }
+        };
+      };
+
+      createMethod('add');
+      createMethod('remove');
+    }
+
+    testElement.classList.toggle("c3", false); // Polyfill for IE 10 and Firefox <24, where classList.toggle does not
+    // support the second argument.
+
+    if (testElement.classList.contains("c3")) {
+      var _toggle = DOMTokenList.prototype.toggle;
+
+      DOMTokenList.prototype.toggle = function (token, force) {
+        if (1 in arguments && !this.contains(token) === !force) {
+          return force;
+        } else {
+          return _toggle.call(this, token);
+        }
+      };
+    } // replace() polyfill
+
+
+    if (!("replace" in document.createElement("_").classList)) {
+      DOMTokenList.prototype.replace = function (token, replacement_token) {
+        var tokens = this.toString().split(" "),
+            index = tokens.indexOf(token + "");
+
+        if (~index) {
+          tokens = tokens.slice(index);
+          this.remove.apply(this, tokens);
+          this.add(replacement_token);
+          this.add.apply(this, tokens.slice(1));
+        }
+      };
+    }
+
+    testElement = null;
+  })();
+}
+
+/**
+* Detect Element Resize
+*
+* https://github.com/sdecima/javascript-detect-element-resize
+* Sebastian Decima
+*
+* version: 0.5.3
+**/
+(function () {
+  var stylesCreated = false;
+
+  function resetTriggers(element) {
+    var triggers = element.__resizeTriggers__,
+        expand = triggers.firstElementChild,
+        contract = triggers.lastElementChild,
+        expandChild = expand.firstElementChild;
+    contract.scrollLeft = contract.scrollWidth;
+    contract.scrollTop = contract.scrollHeight;
+    expandChild.style.width = expand.offsetWidth + 1 + 'px';
+    expandChild.style.height = expand.offsetHeight + 1 + 'px';
+    expand.scrollLeft = expand.scrollWidth;
+    expand.scrollTop = expand.scrollHeight;
+  }
+
+  function checkTriggers(element) {
+    return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;
+  }
+
+  function scrollListener(e) {
+    var element = this;
+    resetTriggers(this);
+    if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__);
+    this.__resizeRAF__ = requestFrame(function () {
+      if (checkTriggers(element)) {
+        element.__resizeLast__.width = element.offsetWidth;
+        element.__resizeLast__.height = element.offsetHeight;
+
+        element.__resizeListeners__.forEach(function (fn) {
+          fn.call(e);
+        });
+      }
+    });
+  }
+
+  function createStyles() {
+    if (!stylesCreated) {
+      // opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
+      var css = (animationKeyframes || '') + '.resize-triggers { ' + (animationStyle || '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
+          head = document.head || document.getElementsByTagName('head')[0],
+          style = document.createElement('style');
+      style.type = 'text/css';
+
+      if (style.styleSheet) {
+        style.styleSheet.cssText = css;
+      } else {
+        style.appendChild(document.createTextNode(css));
+      }
+
+      head.appendChild(style);
+      stylesCreated = true;
+    }
+  }
+
+  var requestFrame = function () {
+    var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (fn) {
+      return window.setTimeout(fn, 20);
+    };
+
+    return function (fn) {
+      return raf(fn);
+    };
+  }();
+
+  var cancelFrame = function () {
+    var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;
+    return function (id) {
+      return cancel(id);
+    };
+  }();
+  /* Detect CSS Animations support to detect element display/re-attach */
+
+
+  var animation = false,
+      keyframeprefix = '',
+      animationstartevent = 'animationstart',
+      domPrefixes = 'Webkit Moz O ms'.split(' '),
+      startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),
+      pfx = '';
+  {
+    var elm = document.createElement('fakeelement');
+
+    if (elm.style.animationName !== undefined) {
+      animation = true;
+    }
+
+    if (animation === false) {
+      for (var i = 0; i < domPrefixes.length; i++) {
+        if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
+          pfx = domPrefixes[i];
+          keyframeprefix = '-' + pfx.toLowerCase() + '-';
+          animationstartevent = startEvents[i];
+          break;
+        }
+      }
+    }
+  }
+  var animationName = 'resizeanim';
+  var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';
+  var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';
+
+  window.addResizeListener = function (element, fn) {
+    if (!element.__resizeTriggers__) {
+      if (getComputedStyle(element).position == 'static') element.style.position = 'relative';
+      createStyles();
+      element.__resizeLast__ = {};
+      element.__resizeListeners__ = [];
+      (element.__resizeTriggers__ = document.createElement('div')).className = 'resize-triggers';
+      element.__resizeTriggers__.innerHTML = '<div class="expand-trigger"><div></div></div>' + '<div class="contract-trigger"></div>';
+      element.appendChild(element.__resizeTriggers__);
+      resetTriggers(element);
+      element.addEventListener('scroll', scrollListener, true);
+      /* Listen for a css animation to detect element display/re-attach */
+
+      animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function (e) {
+        if (e.animationName == animationName) {
+          resetTriggers(element);
+        }
+      });
+    }
+
+    element.__resizeListeners__.push(fn);
+  };
+
+  window.removeResizeListener = function (element, fn) {
+    if (element) {
+      element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
+
+      if (!element.__resizeListeners__.length) {
+        element.removeEventListener('scroll', scrollListener);
+        element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
+      }
+    }
+  };
+})();
+
+window.Apex = {};
+/**
+ *
+ * @module ApexCharts
+ **/
+
+var ApexCharts$1 =
+/*#__PURE__*/
+function () {
+  function ApexCharts(el, opts) {
+    _classCallCheck(this, ApexCharts);
+
+    this.opts = opts;
+    this.ctx = this; // Pass the user supplied options to the Base Class where these options will be extended with defaults. The returned object from Base Class will become the config object in the entire codebase.
+
+    this.w = new Base(opts).init();
+    this.el = el;
+    this.w.globals.cuid = (Math.random() + 1).toString(36).substring(4);
+    this.w.globals.chartID = this.w.config.chart.id ? this.w.config.chart.id : this.w.globals.cuid;
+    this.initModules();
+    this.create = Utils.bind(this.create, this);
+    this.windowResizeHandler = this.windowResize.bind(this);
+  }
+  /**
+   * The primary method user will call to render the chart.
+   */
+
+
+  _createClass(ApexCharts, [{
+    key: "render",
+    value: function render() {
+      var _this = this;
+
+      // main method
+      return new Promise$1(function (resolve, reject) {
+        // only draw chart, if element found
+        if (_this.el !== null) {
+          if (typeof Apex._chartInstances === 'undefined') {
+            Apex._chartInstances = [];
+          }
+
+          if (_this.w.config.chart.id) {
+            Apex._chartInstances.push({
+              id: _this.w.globals.chartID,
+              group: _this.w.config.chart.group,
+              chart: _this
+            });
+          } // set the locale here
+
+
+          _this.setLocale(_this.w.config.chart.defaultLocale);
+
+          var beforeMount = _this.w.config.chart.events.beforeMount;
+
+          if (typeof beforeMount === 'function') {
+            beforeMount(_this, _this.w);
+          }
+
+          _this.fireEvent('beforeMount', [_this, _this.w]);
+
+          window.addEventListener('resize', _this.windowResizeHandler);
+          window.addResizeListener(_this.el.parentNode, _this.parentResizeCallback.bind(_this));
+
+          var graphData = _this.create(_this.w.config.series, {});
+
+          if (!graphData) return resolve(_this);
+
+          _this.mount(graphData).then(function () {
+            resolve(graphData);
+
+            if (typeof _this.w.config.chart.events.mounted === 'function') {
+              _this.w.config.chart.events.mounted(_this, _this.w);
+            }
+
+            _this.fireEvent('mounted', [_this, _this.w]);
+          }).catch(function (e) {
+            reject(e); // handle error in case no data or element not found
+          });
+        } else {
+          reject(new Error('Element not found'));
+        }
+      });
+    }
+  }, {
+    key: "initModules",
+    value: function initModules() {
+      this.animations = new Animations(this);
+      this.core = new Core(this.el, this);
+      this.grid = new Grid(this);
+      this.coreUtils = new CoreUtils(this);
+      this.config = new Config({});
+      this.crosshairs = new Crosshairs(this);
+      this.options = new Options();
+      this.responsive = new Responsive(this);
+      this.series = new Series(this);
+      this.theme = new Theme(this);
+      this.formatters = new Formatters(this);
+      this.titleSubtitle = new TitleSubtitle(this);
+      this.legend = new Legend(this);
+      this.toolbar = new Toolbar(this);
+      this.dimensions = new Dimensions(this);
+      this.zoomPanSelection = new ZoomPanSelection(this);
+      this.w.globals.tooltip = new Tooltip(this);
+    }
+  }, {
+    key: "addEventListener",
+    value: function addEventListener(name$$1, handler) {
+      var w = this.w;
+
+      if (w.globals.events.hasOwnProperty(name$$1)) {
+        w.globals.events[name$$1].push(handler);
+      } else {
+        w.globals.events[name$$1] = [handler];
+      }
+    }
+  }, {
+    key: "removeEventListener",
+    value: function removeEventListener(name$$1, handler) {
+      var w = this.w;
+
+      if (!w.globals.events.hasOwnProperty(name$$1)) {
+        return;
+      }
+
+      var index = w.globals.events[name$$1].indexOf(handler);
+
+      if (index !== -1) {
+        w.globals.events[name$$1].splice(index, 1);
+      }
+    }
+  }, {
+    key: "fireEvent",
+    value: function fireEvent(name$$1, args) {
+      var w = this.w;
+
+      if (!w.globals.events.hasOwnProperty(name$$1)) {
+        return;
+      }
+
+      if (!args || !args.length) {
+        args = [];
+      }
+
+      var evs = w.globals.events[name$$1];
+      var l = evs.length;
+
+      for (var i = 0; i < l; i++) {
+        evs[i].apply(null, args);
+      }
+    }
+  }, {
+    key: "create",
+    value: function create(ser, opts) {
+      var w = this.w;
+      this.initModules();
+      var gl = this.w.globals;
+      gl.noData = false;
+      gl.animationEnded = false;
+      this.responsive.checkResponsiveConfig(opts);
+
+      if (this.el === null) {
+        gl.animationEnded = true;
+        return null;
+      }
+
+      this.core.setupElements();
+
+      if (gl.svgWidth === 0) {
+        // if the element is hidden, skip drawing
+        gl.animationEnded = true;
+        return null;
+      }
+
+      var combo = CoreUtils.checkComboSeries(ser);
+      gl.comboCharts = combo.comboCharts;
+      gl.comboChartsHasBars = combo.comboChartsHasBars;
+
+      if (ser.length === 0 || ser.length === 1 && ser[0].data && ser[0].data.length === 0) {
+        this.series.handleNoData();
+      }
+
+      this.setupEventHandlers(); // Handle the data inputted by user and set some of the global variables (for eg, if data is datetime / numeric / category). Don't calculate the range / min / max at this time
+
+      this.core.parseData(ser); // this is a good time to set theme colors first
+
+      this.theme.init(); // as markers accepts array, we need to setup global markers for easier access
+
+      var markers = new Markers(this);
+      markers.setGlobalMarkerSize(); // labelFormatters should be called before dimensions as in dimensions we need text labels width
+
+      this.formatters.setLabelFormatters();
+      this.titleSubtitle.draw(); // legend is calculated here before coreCalculations because it affects the plottable area
+
+      this.legend.init(); // check whether in multiple series, all series share the same X
+
+      this.series.hasAllSeriesEqualX(); // coreCalculations will give the min/max range and yaxis/axis values. It should be called here to set series variable from config to globals
+
+      if (gl.axisCharts) {
+        this.core.coreCalculations();
+
+        if (w.config.xaxis.type !== 'category') {
+          // as we have minX and maxX values, determine the default DateTimeFormat for time series
+          this.formatters.setLabelFormatters();
+        }
+      } // we need to generate yaxis for heatmap separately as we are not showing numerics there, but seriesNames. There are some tweaks which are required for heatmap to align labels correctly which are done in below function
+      // Also we need to do this before calcuting Dimentions plotCoords() method of Dimensions
+
+
+      this.formatters.heatmapLabelFormatters(); // We got plottable area here, next task would be to calculate axis areas
+
+      this.dimensions.plotCoords();
+      var xyRatios = this.core.xySettings();
+      this.grid.createGridMask();
+      var elGraph = this.core.plotChartType(ser, xyRatios); // after all the drawing calculations, shift the graphical area (actual charts/bars) excluding legends
+
+      this.core.shiftGraphPosition();
+      var dim = {
+        plot: {
+          left: w.globals.translateX,
+          top: w.globals.translateY,
+          width: w.globals.gridWidth,
+          height: w.globals.gridHeight
+        }
+      };
+      return {
+        elGraph: elGraph,
+        xyRatios: xyRatios,
+        elInner: w.globals.dom.elGraphical,
+        dimensions: dim
+      };
+    }
+  }, {
+    key: "mount",
+    value: function mount() {
+      var graphData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+      var me = this;
+      var w = me.w;
+      return new Promise$1(function (resolve, reject) {
+        // no data to display
+        if (me.el === null) {
+          return reject(new Error('Not enough data to display or target element not found'));
+        } else if (graphData === null || w.globals.allSeriesCollapsed) {
+          me.series.handleNoData();
+        }
+
+        me.annotations = new Annotations(me);
+        me.core.drawAxis(w.config.chart.type, graphData.xyRatios);
+        me.grid = new Grid(me);
+
+        if (w.config.grid.position === 'back') {
+          me.grid.drawGrid();
+        }
+
+        if (w.config.annotations.position === 'back') {
+          me.annotations.drawAnnotations();
+        }
+
+        if (graphData.elGraph instanceof Array) {
+          for (var g = 0; g < graphData.elGraph.length; g++) {
+            w.globals.dom.elGraphical.add(graphData.elGraph[g]);
+          }
+        } else {
+          w.globals.dom.elGraphical.add(graphData.elGraph);
+        }
+
+        if (w.config.grid.position === 'front') {
+          me.grid.drawGrid();
+        }
+
+        if (w.config.xaxis.crosshairs.position === 'front') {
+          me.crosshairs.drawXCrosshairs();
+        }
+
+        if (w.config.yaxis[0].crosshairs.position === 'front') {
+          me.crosshairs.drawYCrosshairs();
+        }
+
+        if (w.config.annotations.position === 'front') {
+          me.annotations.drawAnnotations();
+        }
+
+        if (!w.globals.noData) {
+          // draw tooltips at the end
+          if (w.config.tooltip.enabled && !w.globals.noData) {
+            me.w.globals.tooltip.drawTooltip(graphData.xyRatios);
+          }
+
+          if (w.globals.axisCharts && w.globals.isXNumeric) {
+            if (w.config.chart.zoom.enabled || w.config.chart.selection && w.config.chart.selection.enabled || w.config.chart.pan && w.config.chart.pan.enabled) {
+              me.zoomPanSelection.init({
+                xyRatios: graphData.xyRatios
+              });
+            }
+          } else {
+            var tools = w.config.chart.toolbar.tools;
+            tools.zoom = false;
+            tools.zoomin = false;
+            tools.zoomout = false;
+            tools.selection = false;
+            tools.pan = false;
+            tools.reset = false;
+          }
+
+          if (w.config.chart.toolbar.show && !w.globals.allSeriesCollapsed) {
+            me.toolbar.createToolbar();
+          }
+        }
+
+        if (w.globals.memory.methodsToExec.length > 0) {
+          w.globals.memory.methodsToExec.forEach(function (fn) {
+            fn.method(fn.params, false, fn.context);
+          });
+        }
+
+        resolve(me);
+      });
+    }
+  }, {
+    key: "clearPreviousPaths",
+    value: function clearPreviousPaths() {
+      var w = this.w;
+      w.globals.previousPaths = [];
+      w.globals.allSeriesCollapsed = false;
+      w.globals.collapsedSeries = [];
+      w.globals.collapsedSeriesIndices = [];
+    }
+    /**
+     * Allows users to update Options after the chart has rendered.
+     *
+     * @param {object} options - A new config object can be passed which will be merged with the existing config object
+     * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there
+     * @param {boolean} animate - should animate or not on updating Options
+     */
+
+  }, {
+    key: "updateOptions",
+    value: function updateOptions(options$$1) {
+      var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+      var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      var overwriteInitialConfig = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
+      var w = this.w;
+
+      if (options$$1.series) {
+        if (options$$1.series[0].data) {
+          options$$1.series = options$$1.series.map(function (s, i) {
+            return _objectSpread({}, w.config.series[i], {
+              name: s.name ? s.name : w.config.series[i] && w.config.series[i].name,
+              type: s.type ? s.type : w.config.series[i] && w.config.series[i].type,
+              data: s.data ? s.data : w.config.series[i] && w.config.series[i].data
+            });
+          });
+        } // user updated the series via updateOptions() function.
+        // Hence, we need to reset axis min/max to avoid zooming issues
+
+
+        this.revertDefaultAxisMinMax();
+      } // user has set x-axis min/max externally - hence we need to forcefully set the xaxis min/max
+
+
+      if (options$$1.xaxis) {
+        if (options$$1.xaxis.min || options$$1.xaxis.max) {
+          this.forceXAxisUpdate(options$$1);
+        }
+        /* fixes apexcharts.js#369 and react-apexcharts#46 */
+
+
+        if (options$$1.xaxis.categories && options$$1.xaxis.categories.length && w.config.xaxis.convertedCatToNumeric) {
+          options$$1 = Defaults.convertCatToNumeric(options$$1);
+        }
+      }
+
+      if (w.globals.collapsedSeriesIndices.length > 0) {
+        this.clearPreviousPaths();
+      }
+      /* update theme mode#459 */
+
+
+      if (options$$1.theme) {
+        options$$1 = this.theme.updateThemeOptions(options$$1);
+      }
+
+      return this._updateOptions(options$$1, redraw, animate, overwriteInitialConfig);
+    }
+    /**
+     * private method to update Options.
+     *
+     * @param {object} options - A new config object can be passed which will be merged with the existing config object
+     * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there
+     * @param {boolean} animate - should animate or not on updating Options
+     * @param {boolean} overwriteInitialConfig - should update the initial config or not
+     */
+
+  }, {
+    key: "_updateOptions",
+    value: function _updateOptions(options$$1) {
+      var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+      var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      var overwriteInitialConfig = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
+      var charts = this.getSyncedCharts();
+      charts.forEach(function (ch) {
+        var w = ch.w;
+        w.globals.shouldAnimate = animate;
+
+        if (!redraw) {
+          w.globals.resized = true;
+          w.globals.dataChanged = true;
+
+          if (animate) {
+            ch.series.getPreviousPaths();
+          }
+        }
+
+        if (options$$1 && _typeof(options$$1) === 'object') {
+          ch.config = new Config(options$$1);
+          options$$1 = CoreUtils.extendArrayProps(ch.config, options$$1);
+          w.config = Utils.extend(w.config, options$$1);
+
+          if (overwriteInitialConfig) {
+            // we need to forget the lastXAxis and lastYAxis is user forcefully overwriteInitialConfig. If we do not do this, and next time when user zooms the chart after setting yaxis.min/max or xaxis.min/max - the stored lastXAxis will never allow the chart to use the updated min/max by user.
+            w.globals.lastXAxis = [];
+            w.globals.lastYAxis = []; // After forgetting lastAxes, we need to restore the new config in initialConfig/initialSeries
+
+            w.globals.initialConfig = Utils.extend({}, w.config);
+            w.globals.initialSeries = JSON.parse(JSON.stringify(w.config.series));
+          }
+        }
+
+        return ch.update(options$$1);
+      });
+    }
+    /**
+     * Allows users to update Series after the chart has rendered.
+     *
+     * @param {array} series - New series which will override the existing
+     */
+
+  }, {
+    key: "updateSeries",
+    value: function updateSeries() {
+      var newSeries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+      var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      this.revertDefaultAxisMinMax();
+      return this._updateSeries(newSeries, animate, overwriteInitialSeries);
+    }
+    /**
+     * Allows users to append a new series after the chart has rendered.
+     *
+     * @param {array} newSerie - New serie which will be appended to the existing series
+     */
+
+  }, {
+    key: "appendSeries",
+    value: function appendSeries(newSerie) {
+      var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+      var newSeries = this.w.config.series.slice();
+      newSeries.push(newSerie);
+      this.revertDefaultAxisMinMax();
+      return this._updateSeries(newSeries, animate, overwriteInitialSeries);
+    }
+    /**
+     * Private method to update Series.
+     *
+     * @param {array} series - New series which will override the existing
+     */
+
+  }, {
+    key: "_updateSeries",
+    value: function _updateSeries(newSeries, animate) {
+      var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+      var w = this.w;
+      this.w.globals.shouldAnimate = animate;
+      w.globals.dataChanged = true; // if user has collapsed some series with legend, we need to clear those
+
+      if (w.globals.allSeriesCollapsed) {
+        w.globals.allSeriesCollapsed = false;
+      }
+
+      if (animate) {
+        this.series.getPreviousPaths();
+      }
+
+      var existingSeries; // axis charts
+
+      if (w.globals.axisCharts) {
+        existingSeries = newSeries.map(function (s, i) {
+          return _objectSpread({}, w.config.series[i], {
+            name: s.name ? s.name : w.config.series[i] && w.config.series[i].name,
+            type: s.type ? s.type : w.config.series[i] && w.config.series[i].type,
+            data: s.data ? s.data : w.config.series[i] && w.config.series[i].data
+          });
+        });
+
+        if (existingSeries.length === 0) {
+          existingSeries = [{
+            data: []
+          }];
+        }
+
+        w.config.series = existingSeries;
+      } else {
+        // non-axis chart (pie/radialbar)
+        w.config.series = newSeries.slice();
+      }
+
+      if (overwriteInitialSeries) {
+        w.globals.initialConfig.series = JSON.parse(JSON.stringify(w.config.series));
+        w.globals.initialSeries = JSON.parse(JSON.stringify(w.config.series));
+      }
+
+      return this.update();
+    }
+    /**
+     * Get all charts in the same "group" (including the instance which is called upon) to sync them when user zooms in/out or pan.
+     */
+
+  }, {
+    key: "getSyncedCharts",
+    value: function getSyncedCharts() {
+      var chartGroups = this.getGroupedCharts();
+      var allCharts = [this];
+
+      if (chartGroups.length) {
+        allCharts = [];
+        chartGroups.forEach(function (ch) {
+          allCharts.push(ch);
+        });
+      }
+
+      return allCharts;
+    }
+    /**
+     * Get charts in the same "group" (excluding the instance which is called upon) to perform operations on the other charts of the same group (eg., tooltip hovering)
+     */
+
+  }, {
+    key: "getGroupedCharts",
+    value: function getGroupedCharts() {
+      var _this2 = this;
+
+      return Apex._chartInstances.filter(function (ch) {
+        if (ch.group) {
+          return true;
+        }
+      }).map(function (ch) {
+        return _this2.w.config.chart.group === ch.group ? ch.chart : _this2;
+      });
+    }
+    /**
+     * Allows users to append Data to series.
+     *
+     * @param {array} newData - New data in the same format as series
+     */
+
+  }, {
+    key: "appendData",
+    value: function appendData(newData) {
+      var overwriteInitialSeries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var me = this;
+      me.w.globals.dataChanged = true;
+      me.series.getPreviousPaths();
+      var newSeries = me.w.config.series.slice();
+
+      for (var i = 0; i < newSeries.length; i++) {
+        if (typeof newData[i] !== 'undefined') {
+          for (var j = 0; j < newData[i].data.length; j++) {
+            newSeries[i].data.push(newData[i].data[j]);
+          }
+        }
+      }
+
+      me.w.config.series = newSeries;
+
+      if (overwriteInitialSeries) {
+        me.w.globals.initialSeries = JSON.parse(JSON.stringify(me.w.config.series));
+      }
+
+      return this.update();
+    }
+  }, {
+    key: "update",
+    value: function update(options$$1) {
+      var _this3 = this;
+
+      return new Promise$1(function (resolve, reject) {
+        _this3.clear();
+
+        var graphData = _this3.create(_this3.w.config.series, options$$1);
+
+        if (!graphData) return resolve(_this3);
+
+        _this3.mount(graphData).then(function () {
+          if (typeof _this3.w.config.chart.events.updated === 'function') {
+            _this3.w.config.chart.events.updated(_this3, _this3.w);
+          }
+
+          _this3.fireEvent('updated', [_this3, _this3.w]);
+
+          _this3.w.globals.isDirty = true;
+          resolve(_this3);
+        }).catch(function (e) {
+          reject(e);
+        });
+      });
+    }
+  }, {
+    key: "forceXAxisUpdate",
+    value: function forceXAxisUpdate(options$$1) {
+      var w = this.w;
+
+      if (typeof options$$1.xaxis.min !== 'undefined') {
+        w.config.xaxis.min = options$$1.xaxis.min;
+        w.globals.lastXAxis.min = options$$1.xaxis.min;
+      }
+
+      if (typeof options$$1.xaxis.max !== 'undefined') {
+        w.config.xaxis.max = options$$1.xaxis.max;
+        w.globals.lastXAxis.max = options$$1.xaxis.max;
+      }
+    }
+    /**
+     * This function reverts the yaxis and xaxis min/max values to what it was when the chart was defined.
+     * This function fixes an important bug where a user might load a new series after zooming in/out of previous series which resulted in wrong min/max
+     * Also, this should never be called internally on zoom/pan - the reset should only happen when user calls the updateSeries() function externally
+     */
+
+  }, {
+    key: "revertDefaultAxisMinMax",
+    value: function revertDefaultAxisMinMax() {
+      var w = this.w;
+      w.config.xaxis.min = w.globals.lastXAxis.min;
+      w.config.xaxis.max = w.globals.lastXAxis.max;
+      w.config.yaxis.map(function (yaxe, index) {
+        if (w.globals.zoomed) {
+          // if user has zoomed, and this function is called
+          // then we need to get the lastAxis min and max
+          if (typeof w.globals.lastYAxis[index] !== 'undefined') {
+            yaxe.min = w.globals.lastYAxis[index].min;
+            yaxe.max = w.globals.lastYAxis[index].max;
+          }
+        }
+      });
+    }
+  }, {
+    key: "clear",
+    value: function clear() {
+      if (this.zoomPanSelection) {
+        this.zoomPanSelection.destroy();
+      }
+
+      if (this.toolbar) {
+        this.toolbar.destroy();
+      }
+
+      this.animations = null;
+      this.annotations = null;
+      this.core = null;
+      this.grid = null;
+      this.series = null;
+      this.responsive = null;
+      this.theme = null;
+      this.formatters = null;
+      this.titleSubtitle = null;
+      this.legend = null;
+      this.dimensions = null;
+      this.options = null;
+      this.crosshairs = null;
+      this.zoomPanSelection = null;
+      this.toolbar = null;
+      this.w.globals.tooltip = null;
+      this.clearDomElements();
+    }
+  }, {
+    key: "killSVG",
+    value: function killSVG(draw) {
+      return new Promise$1(function (resolve, reject) {
+        draw.each(function (i, children) {
+          this.removeClass('*');
+          this.off();
+          this.stop();
+        }, true);
+        draw.ungroup();
+        draw.clear();
+        resolve('done');
+      });
+    }
+  }, {
+    key: "clearDomElements",
+    value: function clearDomElements() {
+      var domEls = this.w.globals.dom;
+
+      if (this.el !== null) {
+        // remove all child elements - resetting the whole chart
+        while (this.el.firstChild) {
+          this.el.removeChild(this.el.firstChild);
+        }
+      }
+
+      this.killSVG(domEls.Paper);
+      domEls.Paper.remove();
+      domEls.elWrap = null;
+      domEls.elGraphical = null;
+      domEls.elLegendWrap = null;
+      domEls.baseEl = null;
+      domEls.elGridRect = null;
+      domEls.elGridRectMask = null;
+      domEls.elGridRectMarkerMask = null;
+      domEls.elDefs = null;
+    }
+    /**
+     * Destroy the chart instance by removing all elements which also clean up event listeners on those elements.
+     */
+
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      this.clear(); // remove the chart's instance from the global Apex._chartInstances
+
+      var chartID = this.w.config.chart.id;
+
+      if (chartID) {
+        Apex._chartInstances.forEach(function (c, i) {
+          if (c.id === chartID) {
+            Apex._chartInstances.splice(i, 1);
+          }
+        });
+      }
+
+      window.removeEventListener('resize', this.windowResizeHandler);
+      window.removeResizeListener(this.el.parentNode, this.parentResizeCallback.bind(this));
+    }
+    /**
+     * Allows the user to provide data attrs in the element and the chart will render automatically when this method is called by searching for the elements containing 'data-apexcharts' attribute
+     */
+
+  }, {
+    key: "toggleSeries",
+    value: function toggleSeries(seriesName) {
+      var targetElement = this.series.getSeriesByName(seriesName);
+      var seriesCnt = parseInt(targetElement.getAttribute('data:realIndex'));
+      var isHidden = targetElement.classList.contains('apexcharts-series-collapsed');
+      this.legend.toggleDataSeries(seriesCnt, isHidden);
+    }
+  }, {
+    key: "resetToggleSeries",
+    value: function resetToggleSeries() {
+      this.legend.resetToggleDataSeries();
+    }
+  }, {
+    key: "setupEventHandlers",
+    value: function setupEventHandlers() {
+      var w = this.w;
+      var me = this;
+      var clickableArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass);
+      var eventList = ['mousedown', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend'];
+      eventList.forEach(function (event) {
+        clickableArea.addEventListener(event, function (e) {
+          if (e.type === 'mousedown' && e.which === 1) ; else if (e.type === 'mouseup' && e.which === 1 || e.type === 'touchend') {
+            if (typeof w.config.chart.events.click === 'function') {
+              w.config.chart.events.click(e, me, w);
+            }
+
+            me.fireEvent('click', [e, me, w]);
+          }
+        }, {
+          capture: false,
+          passive: true
+        });
+      });
+      eventList.forEach(function (event) {
+        document.addEventListener(event, function (e) {
+          w.globals.clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+          w.globals.clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY;
+        });
+      });
+      this.core.setupBrushHandler();
+    }
+  }, {
+    key: "addXaxisAnnotation",
+    value: function addXaxisAnnotation(opts) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+      var me = this;
+
+      if (context) {
+        me = context;
+      }
+
+      me.annotations.addXaxisAnnotationExternal(opts, pushToMemory, me);
+    }
+  }, {
+    key: "addYaxisAnnotation",
+    value: function addYaxisAnnotation(opts) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+      var me = this;
+
+      if (context) {
+        me = context;
+      }
+
+      me.annotations.addYaxisAnnotationExternal(opts, pushToMemory, me);
+    }
+  }, {
+    key: "addPointAnnotation",
+    value: function addPointAnnotation(opts) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+      var me = this;
+
+      if (context) {
+        me = context;
+      }
+
+      me.annotations.addPointAnnotationExternal(opts, pushToMemory, me);
+    }
+  }, {
+    key: "clearAnnotations",
+    value: function clearAnnotations() {
+      var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+      var me = this;
+
+      if (context) {
+        me = context;
+      }
+
+      me.annotations.clearAnnotations(me);
+    } // This method is never used internally and will be only called externally on the chart instance.
+    // Hence, we need to keep all these elements in memory when the chart gets updated and redraw again
+
+  }, {
+    key: "addText",
+    value: function addText(options$$1) {
+      var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+      var me = this;
+
+      if (context) {
+        me = context;
+      }
+
+      me.annotations.addText(options$$1, pushToMemory, me);
+    }
+  }, {
+    key: "getChartArea",
+    value: function getChartArea() {
+      var el = this.w.globals.dom.baseEl.querySelector('.apexcharts-inner');
+      return el;
+    }
+  }, {
+    key: "getSeriesTotalXRange",
+    value: function getSeriesTotalXRange(minX, maxX) {
+      return this.coreUtils.getSeriesTotalsXRange(minX, maxX);
+    }
+  }, {
+    key: "getHighestValueInSeries",
+    value: function getHighestValueInSeries() {
+      var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      var range = new Range$1(this.ctx);
+      var minYmaxY = range.getMinYMaxY(seriesIndex);
+      return minYmaxY.highestY;
+    }
+  }, {
+    key: "getLowestValueInSeries",
+    value: function getLowestValueInSeries() {
+      var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      var range = new Range$1(this.ctx);
+      var minYmaxY = range.getMinYMaxY(seriesIndex);
+      return minYmaxY.lowestY;
+    }
+  }, {
+    key: "getSeriesTotal",
+    value: function getSeriesTotal() {
+      return this.w.globals.seriesTotals;
+    }
+  }, {
+    key: "setLocale",
+    value: function setLocale(localeName) {
+      this.setCurrentLocaleValues(localeName);
+    }
+  }, {
+    key: "setCurrentLocaleValues",
+    value: function setCurrentLocaleValues(localeName) {
+      var locales = this.w.config.chart.locales; // check if user has specified locales in global Apex variable
+      // if yes - then extend those with local chart's locale
+
+      if (window.Apex.chart && window.Apex.chart.locales && window.Apex.chart.locales.length > 0) {
+        locales = this.w.config.chart.locales.concat(window.Apex.chart.locales);
+      } // find the locale from the array of locales which user has set (either by chart.defaultLocale or by calling setLocale() method.)
+
+
+      var selectedLocale = locales.filter(function (c) {
+        return c.name === localeName;
+      })[0];
+
+      if (selectedLocale) {
+        // create a complete locale object by extending defaults so you don't get undefined errors.
+        var ret = Utils.extend(en, selectedLocale); // store these locale options in global var for ease access
+
+        this.w.globals.locale = ret.options;
+      } else {
+        throw new Error('Wrong locale name provided. Please make sure you set the correct locale name in options');
+      }
+    }
+  }, {
+    key: "dataURI",
+    value: function dataURI() {
+      var exp = new Exports(this.ctx);
+      return exp.dataURI();
+    }
+  }, {
+    key: "paper",
+    value: function paper() {
+      return this.w.globals.dom.Paper;
+    }
+  }, {
+    key: "parentResizeCallback",
+    value: function parentResizeCallback() {
+      if (this.w.globals.animationEnded) {
+        this.windowResize();
+      }
+    }
+    /**
+     * Handle window resize and re-draw the whole chart.
+     */
+
+  }, {
+    key: "windowResize",
+    value: function windowResize() {
+      var _this4 = this;
+
+      clearTimeout(this.w.globals.resizeTimer);
+      this.w.globals.resizeTimer = window.setTimeout(function () {
+        _this4.w.globals.resized = true;
+        _this4.w.globals.dataChanged = false; // we need to redraw the whole chart on window resize (with a small delay).
+
+        _this4.update();
+      }, 150);
+    }
+  }], [{
+    key: "initOnLoad",
+    value: function initOnLoad() {
+      var els = document.querySelectorAll('[data-apexcharts]');
+
+      for (var i = 0; i < els.length; i++) {
+        var el = els[i];
+        var options$$1 = JSON.parse(els[i].getAttribute('data-options'));
+        var apexChart = new ApexCharts(el, options$$1);
+        apexChart.render();
+      }
+    }
+    /**
+     * This static method allows users to call chart methods without necessarily from the
+     * instance of the chart in case user has assigned chartID to the targetted chart.
+     * The chartID is used for mapping the instance stored in Apex._chartInstances global variable
+     *
+     * This is helpful in cases when you don't have reference of the chart instance
+     * easily and need to call the method from anywhere.
+     * For eg, in React/Vue applications when you have many parent/child components,
+     * and need easy reference to other charts for performing dynamic operations
+     *
+     * @param {string} chartID - The unique identifier which will be used to call methods
+     * on that chart instance
+     * @param {function} fn - The method name to call
+     * @param {object} opts - The parameters which are accepted in the original method will be passed here in the same order.
+     */
+
+  }, {
+    key: "exec",
+    value: function exec(chartID, fn) {
+      var chart = this.getChartByID(chartID);
+      if (!chart) return;
+
+      for (var _len = arguments.length, opts = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
+        opts[_key - 2] = arguments[_key];
+      }
+
+      switch (fn) {
+        case 'updateOptions':
+          {
+            return chart.updateOptions.apply(chart, opts);
+          }
+
+        case 'updateSeries':
+          {
+            return chart.updateSeries.apply(chart, opts);
+          }
+
+        case 'appendData':
+          {
+            return chart.appendData.apply(chart, opts);
+          }
+
+        case 'appendSeries':
+          {
+            return chart.appendSeries.apply(chart, opts);
+          }
+
+        case 'toggleSeries':
+          {
+            return chart.toggleSeries.apply(chart, opts);
+          }
+
+        case 'dataURI':
+          {
+            return chart.dataURI.apply(chart, opts);
+          }
+
+        case 'addXaxisAnnotation':
+          {
+            return chart.addXaxisAnnotation.apply(chart, opts);
+          }
+
+        case 'addYaxisAnnotation':
+          {
+            return chart.addYaxisAnnotation.apply(chart, opts);
+          }
+
+        case 'addPointAnnotation':
+          {
+            return chart.addPointAnnotation.apply(chart, opts);
+          }
+
+        case 'addText':
+          {
+            return chart.addText.apply(chart, opts);
+          }
+
+        case 'clearAnnotations':
+          {
+            return chart.clearAnnotations.apply(chart, opts);
+          }
+
+        case 'paper':
+          {
+            return chart.paper.apply(chart, opts);
+          }
+
+        case 'destroy':
+          {
+            return chart.destroy();
+          }
+      }
+    }
+  }, {
+    key: "merge",
+    value: function merge(target, source) {
+      return Utils.extend(target, source);
+    }
+  }, {
+    key: "getChartByID",
+    value: function getChartByID(chartID) {
+      var c = Apex._chartInstances.filter(function (ch) {
+        return ch.id === chartID;
+      })[0];
+
+      return c.chart;
+    }
+  }]);
+
+  return ApexCharts;
+}();
+
+export default ApexCharts$1;
Index: public/vendors/charts/apex/apexcharts.js
===================================================================
--- public/vendors/charts/apex/apexcharts.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/apexcharts.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,28689 @@
+/*!
+ * ApexCharts v3.6.12
+ * (c) 2018-2019 Juned Chhipa
+ * Released under the MIT License.
+ */
+(function (global, factory) {
+  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+  typeof define === 'function' && define.amd ? define(factory) :
+  (global = global || self, global.ApexCharts = factory());
+}(this, function () { 'use strict';
+
+  function _typeof(obj) {
+    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+      _typeof = function (obj) {
+        return typeof obj;
+      };
+    } else {
+      _typeof = function (obj) {
+        return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+      };
+    }
+
+    return _typeof(obj);
+  }
+
+  function _classCallCheck(instance, Constructor) {
+    if (!(instance instanceof Constructor)) {
+      throw new TypeError("Cannot call a class as a function");
+    }
+  }
+
+  function _defineProperties(target, props) {
+    for (var i = 0; i < props.length; i++) {
+      var descriptor = props[i];
+      descriptor.enumerable = descriptor.enumerable || false;
+      descriptor.configurable = true;
+      if ("value" in descriptor) descriptor.writable = true;
+      Object.defineProperty(target, descriptor.key, descriptor);
+    }
+  }
+
+  function _createClass(Constructor, protoProps, staticProps) {
+    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+    if (staticProps) _defineProperties(Constructor, staticProps);
+    return Constructor;
+  }
+
+  function _defineProperty(obj, key, value) {
+    if (key in obj) {
+      Object.defineProperty(obj, key, {
+        value: value,
+        enumerable: true,
+        configurable: true,
+        writable: true
+      });
+    } else {
+      obj[key] = value;
+    }
+
+    return obj;
+  }
+
+  function _objectSpread(target) {
+    for (var i = 1; i < arguments.length; i++) {
+      var source = arguments[i] != null ? arguments[i] : {};
+      var ownKeys = Object.keys(source);
+
+      if (typeof Object.getOwnPropertySymbols === 'function') {
+        ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
+          return Object.getOwnPropertyDescriptor(source, sym).enumerable;
+        }));
+      }
+
+      ownKeys.forEach(function (key) {
+        _defineProperty(target, key, source[key]);
+      });
+    }
+
+    return target;
+  }
+
+  function _inherits(subClass, superClass) {
+    if (typeof superClass !== "function" && superClass !== null) {
+      throw new TypeError("Super expression must either be null or a function");
+    }
+
+    subClass.prototype = Object.create(superClass && superClass.prototype, {
+      constructor: {
+        value: subClass,
+        writable: true,
+        configurable: true
+      }
+    });
+    if (superClass) _setPrototypeOf(subClass, superClass);
+  }
+
+  function _getPrototypeOf(o) {
+    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
+      return o.__proto__ || Object.getPrototypeOf(o);
+    };
+    return _getPrototypeOf(o);
+  }
+
+  function _setPrototypeOf(o, p) {
+    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+      o.__proto__ = p;
+      return o;
+    };
+
+    return _setPrototypeOf(o, p);
+  }
+
+  function _assertThisInitialized(self) {
+    if (self === void 0) {
+      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+    }
+
+    return self;
+  }
+
+  function _possibleConstructorReturn(self, call) {
+    if (call && (typeof call === "object" || typeof call === "function")) {
+      return call;
+    }
+
+    return _assertThisInitialized(self);
+  }
+
+  function _toConsumableArray(arr) {
+    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
+  }
+
+  function _arrayWithoutHoles(arr) {
+    if (Array.isArray(arr)) {
+      for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+      return arr2;
+    }
+  }
+
+  function _iterableToArray(iter) {
+    if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+  }
+
+  function _nonIterableSpread() {
+    throw new TypeError("Invalid attempt to spread non-iterable instance");
+  }
+
+  /*
+   ** Generic functions which are not dependent on ApexCharts
+   */
+  var Utils =
+  /*#__PURE__*/
+  function () {
+    function Utils() {
+      _classCallCheck(this, Utils);
+    }
+
+    _createClass(Utils, [{
+      key: "shadeRGBColor",
+      value: function shadeRGBColor(percent, color) {
+        var f = color.split(','),
+            t = percent < 0 ? 0 : 255,
+            p = percent < 0 ? percent * -1 : percent,
+            R = parseInt(f[0].slice(4)),
+            G = parseInt(f[1]),
+            B = parseInt(f[2]);
+        return 'rgb(' + (Math.round((t - R) * p) + R) + ',' + (Math.round((t - G) * p) + G) + ',' + (Math.round((t - B) * p) + B) + ')';
+      }
+    }, {
+      key: "shadeHexColor",
+      value: function shadeHexColor(percent, color) {
+        var f = parseInt(color.slice(1), 16),
+            t = percent < 0 ? 0 : 255,
+            p = percent < 0 ? percent * -1 : percent,
+            R = f >> 16,
+            G = f >> 8 & 0x00ff,
+            B = f & 0x0000ff;
+        return '#' + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1);
+      } // beautiful color shading blending code
+      // http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors
+
+    }, {
+      key: "shadeColor",
+      value: function shadeColor(p, color) {
+        if (color.length > 7) return this.shadeRGBColor(p, color);else return this.shadeHexColor(p, color);
+      }
+    }], [{
+      key: "bind",
+      value: function bind(fn, me) {
+        return function () {
+          return fn.apply(me, arguments);
+        };
+      }
+    }, {
+      key: "isObject",
+      value: function isObject(item) {
+        return item && _typeof(item) === 'object' && !Array.isArray(item) && item != null;
+      }
+    }, {
+      key: "listToArray",
+      value: function listToArray(list) {
+        var i,
+            array = [];
+
+        for (i = 0; i < list.length; i++) {
+          array[i] = list[i];
+        }
+
+        return array;
+      } // to extend defaults with user options
+      // credit: http://stackoverflow.com/questions/27936772/deep-object-merging-in-es6-es7#answer-34749873
+
+    }, {
+      key: "extend",
+      value: function extend(target, source) {
+        var _this = this;
+
+        if (typeof Object.assign !== 'function') {
+
+          (function () {
+            Object.assign = function (target) {
+
+              if (target === undefined || target === null) {
+                throw new TypeError('Cannot convert undefined or null to object');
+              }
+
+              var output = Object(target);
+
+              for (var index = 1; index < arguments.length; index++) {
+                var _source = arguments[index];
+
+                if (_source !== undefined && _source !== null) {
+                  for (var nextKey in _source) {
+                    if (_source.hasOwnProperty(nextKey)) {
+                      output[nextKey] = _source[nextKey];
+                    }
+                  }
+                }
+              }
+
+              return output;
+            };
+          })();
+        }
+
+        var output = Object.assign({}, target);
+
+        if (this.isObject(target) && this.isObject(source)) {
+          Object.keys(source).forEach(function (key) {
+            if (_this.isObject(source[key])) {
+              if (!(key in target)) {
+                Object.assign(output, _defineProperty({}, key, source[key]));
+              } else {
+                output[key] = _this.extend(target[key], source[key]);
+              }
+            } else {
+              Object.assign(output, _defineProperty({}, key, source[key]));
+            }
+          });
+        }
+
+        return output;
+      }
+    }, {
+      key: "extendArray",
+      value: function extendArray(arrToExtend, resultArr) {
+        var extendedArr = [];
+        arrToExtend.map(function (item) {
+          extendedArr.push(Utils.extend(resultArr, item));
+        });
+        arrToExtend = extendedArr;
+        return arrToExtend;
+      } // If month counter exceeds 12, it starts again from 1
+
+    }, {
+      key: "monthMod",
+      value: function monthMod(month) {
+        return month % 12;
+      }
+    }, {
+      key: "addProps",
+      value: function addProps(obj, arr, val) {
+        if (typeof arr === 'string') {
+          arr = arr.split('.');
+        }
+
+        obj[arr[0]] = obj[arr[0]] || {};
+        var tmpObj = obj[arr[0]];
+
+        if (arr.length > 1) {
+          arr.shift();
+          this.addProps(tmpObj, arr, val);
+        } else {
+          obj[arr[0]] = val;
+        }
+
+        return obj;
+      }
+    }, {
+      key: "clone",
+      value: function clone(source) {
+        if (Object.prototype.toString.call(source) === '[object Array]') {
+          var cloneResult = [];
+
+          for (var i = 0; i < source.length; i++) {
+            cloneResult[i] = this.clone(source[i]);
+          }
+
+          return cloneResult;
+        } else if (_typeof(source) === 'object') {
+          var _cloneResult = {};
+
+          for (var prop in source) {
+            if (source.hasOwnProperty(prop)) {
+              _cloneResult[prop] = this.clone(source[prop]);
+            }
+          }
+
+          return _cloneResult;
+        } else {
+          return source;
+        }
+      }
+    }, {
+      key: "log10",
+      value: function log10(x) {
+        return Math.log(x) / Math.LN10;
+      }
+    }, {
+      key: "roundToBase10",
+      value: function roundToBase10(x) {
+        return Math.pow(10, Math.floor(Math.log10(x)));
+      }
+    }, {
+      key: "roundToBase",
+      value: function roundToBase(x, base) {
+        return Math.pow(base, Math.floor(Math.log(x) / Math.log(base)));
+      }
+    }, {
+      key: "parseNumber",
+      value: function parseNumber(val) {
+        if (val === null) return val;
+        return parseFloat(val);
+      }
+    }, {
+      key: "noExponents",
+      value: function noExponents(val) {
+        var data = String(val).split(/[eE]/);
+        if (data.length == 1) return data[0];
+        var z = '',
+            sign = val < 0 ? '-' : '',
+            str = data[0].replace('.', ''),
+            mag = Number(data[1]) + 1;
+
+        if (mag < 0) {
+          z = sign + '0.';
+
+          while (mag++) {
+            z += '0';
+          }
+
+          return z + str.replace(/^\-/, '');
+        }
+
+        mag -= str.length;
+
+        while (mag--) {
+          z += '0';
+        }
+
+        return str + z;
+      }
+    }, {
+      key: "getDimensions",
+      value: function getDimensions(el) {
+        var computedStyle = getComputedStyle(el);
+        var ret = [];
+        var elementHeight = el.clientHeight;
+        var elementWidth = el.clientWidth;
+        elementHeight -= parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom);
+        elementWidth -= parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);
+        ret.push(elementWidth);
+        ret.push(elementHeight);
+        return ret;
+      }
+    }, {
+      key: "getBoundingClientRect",
+      value: function getBoundingClientRect(element) {
+        var rect = element.getBoundingClientRect();
+        return {
+          top: rect.top,
+          right: rect.right,
+          bottom: rect.bottom,
+          left: rect.left,
+          width: rect.width,
+          height: rect.height,
+          x: rect.x,
+          y: rect.y
+        };
+      } // http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-12342275
+
+    }, {
+      key: "hexToRgba",
+      value: function hexToRgba() {
+        var hex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '#999999';
+        var opacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.6;
+
+        if (hex.substring(0, 1) !== '#') {
+          hex = '#999999';
+        }
+
+        var h = hex.replace('#', '');
+        h = h.match(new RegExp('(.{' + h.length / 3 + '})', 'g'));
+
+        for (var i = 0; i < h.length; i++) {
+          h[i] = parseInt(h[i].length === 1 ? h[i] + h[i] : h[i], 16);
+        }
+
+        if (typeof opacity !== 'undefined') h.push(opacity);
+        return 'rgba(' + h.join(',') + ')';
+      }
+    }, {
+      key: "getOpacityFromRGBA",
+      value: function getOpacityFromRGBA(rgba) {
+        rgba = rgba.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
+        return rgba[3];
+      }
+    }, {
+      key: "rgb2hex",
+      value: function rgb2hex(rgb) {
+        rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
+        return rgb && rgb.length === 4 ? '#' + ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';
+      }
+    }, {
+      key: "isColorHex",
+      value: function isColorHex(color) {
+        return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(color);
+      }
+    }, {
+      key: "polarToCartesian",
+      value: function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
+        var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;
+        return {
+          x: centerX + radius * Math.cos(angleInRadians),
+          y: centerY + radius * Math.sin(angleInRadians)
+        };
+      }
+    }, {
+      key: "escapeString",
+      value: function escapeString(str) {
+        var escapeWith = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';
+        var newStr = str.toString().slice();
+        newStr = newStr.replace(/[` ~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, escapeWith);
+        return newStr;
+      }
+    }, {
+      key: "negToZero",
+      value: function negToZero(val) {
+        return val < 0 ? 0 : val;
+      }
+    }, {
+      key: "moveIndexInArray",
+      value: function moveIndexInArray(arr, old_index, new_index) {
+        if (new_index >= arr.length) {
+          var k = new_index - arr.length + 1;
+
+          while (k--) {
+            arr.push(undefined);
+          }
+        }
+
+        arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);
+        return arr;
+      }
+    }, {
+      key: "extractNumber",
+      value: function extractNumber(s) {
+        return parseFloat(s.replace(/[^\d\.]*/g, ''));
+      }
+    }, {
+      key: "randomString",
+      value: function randomString(len) {
+        var text = '';
+        var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+
+        for (var i = 0; i < len; i++) {
+          text += possible.charAt(Math.floor(Math.random() * possible.length));
+        }
+
+        return text;
+      }
+    }, {
+      key: "findAncestor",
+      value: function findAncestor(el, cls) {
+        while ((el = el.parentElement) && !el.classList.contains(cls)) {
+        }
+
+        return el;
+      }
+    }, {
+      key: "setELstyles",
+      value: function setELstyles(el, styles) {
+        for (var key in styles) {
+          if (styles.hasOwnProperty(key)) {
+            el.style.key = styles[key];
+          }
+        }
+      }
+    }, {
+      key: "isNumber",
+      value: function isNumber(value) {
+        return !isNaN(value) && parseFloat(Number(value)) === value && !isNaN(parseInt(value, 10));
+      }
+    }, {
+      key: "isFloat",
+      value: function isFloat(n) {
+        return Number(n) === n && n % 1 !== 0;
+      }
+    }, {
+      key: "isSafari",
+      value: function isSafari() {
+        return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
+      }
+    }, {
+      key: "isFirefox",
+      value: function isFirefox() {
+        return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
+      }
+    }, {
+      key: "isIE11",
+      value: function isIE11() {
+        if (window.navigator.userAgent.indexOf('MSIE') !== -1 || window.navigator.appVersion.indexOf('Trident/') > -1) {
+          return true;
+        }
+      }
+    }, {
+      key: "isIE",
+      value: function isIE() {
+        var ua = window.navigator.userAgent;
+        var msie = ua.indexOf('MSIE ');
+
+        if (msie > 0) {
+          // IE 10 or older => return version number
+          return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
+        }
+
+        var trident = ua.indexOf('Trident/');
+
+        if (trident > 0) {
+          // IE 11 => return version number
+          var rv = ua.indexOf('rv:');
+          return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
+        }
+
+        var edge = ua.indexOf('Edge/');
+
+        if (edge > 0) {
+          // Edge (IE 12+) => return version number
+          return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
+        } // other browser
+
+
+        return false;
+      }
+    }]);
+
+    return Utils;
+  }();
+
+  /**
+   * ApexCharts Filters Class for setting hover/active states on the paths.
+   *
+   * @module Formatters
+   **/
+
+  var Filters =
+  /*#__PURE__*/
+  function () {
+    function Filters(ctx) {
+      _classCallCheck(this, Filters);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    } // create a re-usable filter which can be appended other filter effects and applied to multiple elements
+
+
+    _createClass(Filters, [{
+      key: "getDefaultFilter",
+      value: function getDefaultFilter(el, i) {
+        var w = this.w;
+        el.unfilter(true);
+        var filter = new window.SVG.Filter();
+        filter.size('120%', '180%', '-5%', '-40%');
+
+        if (w.config.states.normal.filter !== 'none') {
+          this.applyFilter(el, i, w.config.states.normal.filter.type, w.config.states.normal.filter.value);
+        } else {
+          if (w.config.chart.dropShadow.enabled) {
+            this.dropShadow(el, w.config.chart.dropShadow, i);
+          }
+        }
+      }
+    }, {
+      key: "addNormalFilter",
+      value: function addNormalFilter(el, i) {
+        var w = this.w;
+
+        if (w.config.chart.dropShadow.enabled) {
+          this.dropShadow(el, w.config.chart.dropShadow, i);
+        }
+      } // appends dropShadow to the filter object which can be chained with other filter effects
+
+    }, {
+      key: "addLightenFilter",
+      value: function addLightenFilter(el, i, attrs) {
+        var _this = this;
+
+        var w = this.w;
+        var intensity = attrs.intensity;
+
+        if (Utils.isFirefox()) {
+          return;
+        }
+
+        el.unfilter(true);
+        var filter = new window.SVG.Filter();
+        filter.size('120%', '180%', '-5%', '-40%');
+        el.filter(function (add) {
+          var shadowAttr = w.config.chart.dropShadow;
+
+          if (shadowAttr.enabled) {
+            filter = _this.addShadow(add, i, shadowAttr);
+          } else {
+            filter = add;
+          }
+
+          filter.componentTransfer({
+            rgb: {
+              type: 'linear',
+              slope: 1.5,
+              intercept: intensity
+            }
+          });
+        });
+        el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+      } // appends dropShadow to the filter object which can be chained with other filter effects
+
+    }, {
+      key: "addDarkenFilter",
+      value: function addDarkenFilter(el, i, attrs) {
+        var _this2 = this;
+
+        var w = this.w;
+        var intensity = attrs.intensity;
+
+        if (Utils.isFirefox()) {
+          return;
+        }
+
+        el.unfilter(true);
+        var filter = new window.SVG.Filter();
+        filter.size('120%', '180%', '-5%', '-40%');
+        el.filter(function (add) {
+          var shadowAttr = w.config.chart.dropShadow;
+
+          if (shadowAttr.enabled) {
+            filter = _this2.addShadow(add, i, shadowAttr);
+          } else {
+            filter = add;
+          }
+
+          filter.componentTransfer({
+            rgb: {
+              type: 'linear',
+              slope: intensity
+            }
+          });
+        });
+        el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+      }
+    }, {
+      key: "applyFilter",
+      value: function applyFilter(el, i, filter) {
+        var intensity = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.5;
+
+        switch (filter) {
+          case 'none':
+            {
+              this.addNormalFilter(el, i);
+              break;
+            }
+
+          case 'lighten':
+            {
+              this.addLightenFilter(el, i, {
+                intensity: intensity
+              });
+              break;
+            }
+
+          case 'darken':
+            {
+              this.addDarkenFilter(el, i, {
+                intensity: intensity
+              });
+              break;
+            }
+
+          default:
+            // do nothing
+            break;
+        }
+      } // appends dropShadow to the filter object which can be chained with other filter effects
+
+    }, {
+      key: "addShadow",
+      value: function addShadow(add, i, attrs) {
+        var blur = attrs.blur,
+            top = attrs.top,
+            left = attrs.left,
+            color = attrs.color,
+            opacity = attrs.opacity;
+        var shadowBlur = add.flood(Array.isArray(color) ? color[i] : color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source);
+        return add.blend(add.source, shadowBlur);
+      } // directly adds dropShadow to the element and returns the same element.
+      // the only way it is different from the addShadow() function is that addShadow is chainable to other filters, while this function discards all filters and add dropShadow
+
+    }, {
+      key: "dropShadow",
+      value: function dropShadow(el, attrs) {
+        var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+        var top = attrs.top,
+            left = attrs.left,
+            blur = attrs.blur,
+            color = attrs.color,
+            opacity = attrs.opacity,
+            noUserSpaceOnUse = attrs.noUserSpaceOnUse;
+        el.unfilter(true);
+        color = Array.isArray(color) ? color[i] : color;
+        var filter = new window.SVG.Filter();
+        filter.size('120%', '180%', '-5%', '-40%');
+        el.filter(function (add) {
+          var shadowBlur = null;
+
+          if (Utils.isSafari() || Utils.isFirefox() || Utils.isIE()) {
+            // safari/firefox has some alternative way to use this filter
+            shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur);
+          } else {
+            shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source);
+          }
+
+          add.blend(add.source, shadowBlur);
+        });
+
+        if (!noUserSpaceOnUse) {
+          el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');
+        }
+
+        return el;
+      }
+    }, {
+      key: "setSelectionFilter",
+      value: function setSelectionFilter(el, realIndex, dataPointIndex) {
+        var w = this.w;
+
+        if (typeof w.globals.selectedDataPoints[realIndex] !== 'undefined') {
+          if (w.globals.selectedDataPoints[realIndex].indexOf(dataPointIndex) > -1) {
+            el.node.setAttribute('selected', true);
+            var activeFilter = w.config.states.active.filter;
+
+            if (activeFilter !== 'none') {
+              this.applyFilter(el, realIndex, activeFilter.type, activeFilter.value);
+            }
+          }
+        }
+      }
+    }]);
+
+    return Filters;
+  }();
+
+  /**
+   * ApexCharts Animation Class.
+   *
+   * @module Animations
+   **/
+
+  var Animations =
+  /*#__PURE__*/
+  function () {
+    function Animations(ctx) {
+      _classCallCheck(this, Animations);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.setEasingFunctions();
+    }
+
+    _createClass(Animations, [{
+      key: "setEasingFunctions",
+      value: function setEasingFunctions() {
+        var easing;
+        var userDefinedEasing = this.w.config.chart.animations.easing;
+
+        switch (userDefinedEasing) {
+          case 'linear':
+            {
+              easing = '-';
+              break;
+            }
+
+          case 'easein':
+            {
+              easing = '<';
+              break;
+            }
+
+          case 'easeout':
+            {
+              easing = '>';
+              break;
+            }
+
+          case 'easeinout':
+            {
+              easing = '<>';
+              break;
+            }
+
+          case 'swing':
+            {
+              easing = function easing(pos) {
+                var s = 1.70158;
+                return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
+              };
+
+              break;
+            }
+
+          case 'bounce':
+            {
+              easing = function easing(pos) {
+                if (pos < 1 / 2.75) {
+                  return 7.5625 * pos * pos;
+                } else if (pos < 2 / 2.75) {
+                  return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
+                } else if (pos < 2.5 / 2.75) {
+                  return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
+                } else {
+                  return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
+                }
+              };
+
+              break;
+            }
+
+          case 'elastic':
+            {
+              easing = function easing(pos) {
+                if (pos === !!pos) return pos;
+                return Math.pow(2, -10 * pos) * Math.sin((pos - 0.075) * (2 * Math.PI) / 0.3) + 1;
+              };
+
+              break;
+            }
+
+          default:
+            {
+              easing = '<>';
+            }
+        }
+
+        this.w.globals.easing = easing;
+      }
+    }, {
+      key: "animateLine",
+      value: function animateLine(el, from, to, speed) {
+        el.attr(from).animate(speed).attr(to);
+      }
+      /*
+       ** Animate radius of a circle element
+       */
+
+    }, {
+      key: "animateCircleRadius",
+      value: function animateCircleRadius(el, from, to, speed, easing) {
+        if (!from) from = 0;
+        el.attr({
+          r: from
+        }).animate(speed, easing).attr({
+          r: to
+        });
+      }
+      /*
+       ** Animate radius and position of a circle element
+       */
+
+    }, {
+      key: "animateCircle",
+      value: function animateCircle(el, from, to, speed, easing) {
+        el.attr({
+          r: from.r,
+          cx: from.cx,
+          cy: from.cy
+        }).animate(speed, easing).attr({
+          r: to.r,
+          cx: to.cx,
+          cy: to.cy
+        });
+      }
+      /*
+       ** Animate rect properties
+       */
+
+    }, {
+      key: "animateRect",
+      value: function animateRect(el, from, to, speed, fn) {
+        el.attr(from).animate(speed).attr(to).afterAll(function () {
+          fn();
+        });
+      }
+    }, {
+      key: "animatePathsGradually",
+      value: function animatePathsGradually(params) {
+        var el = params.el,
+            j = params.j,
+            pathFrom = params.pathFrom,
+            pathTo = params.pathTo,
+            speed = params.speed,
+            delay = params.delay,
+            strokeWidth = params.strokeWidth;
+        var me = this;
+        var w = this.w;
+        var delayFactor = 0;
+
+        if (w.config.chart.animations.animateGradually.enabled) {
+          delayFactor = w.config.chart.animations.animateGradually.delay;
+        }
+
+        if (w.config.chart.animations.dynamicAnimation.enabled && w.globals.dataChanged) {
+          delayFactor = 0;
+        }
+
+        me.morphSVG(el, j, pathFrom, pathTo, speed, strokeWidth, delay * delayFactor);
+      }
+    }, {
+      key: "showDelayedElements",
+      value: function showDelayedElements() {
+        this.w.globals.delayedElements.forEach(function (d) {
+          var ele = d.el;
+          ele.classList.remove('hidden');
+        });
+      } // SVG.js animation for morphing one path to another
+
+    }, {
+      key: "morphSVG",
+      value: function morphSVG(el, j, pathFrom, pathTo, speed, strokeWidth, delay) {
+        var _this = this;
+
+        var w = this.w;
+
+        if (!pathFrom) {
+          pathFrom = el.attr('pathFrom');
+        }
+
+        if (!pathTo) {
+          pathTo = el.attr('pathTo');
+        }
+
+        if (!pathFrom || pathFrom.indexOf('undefined') > -1 || pathFrom.indexOf('NaN') > -1) {
+          pathFrom = "M 0 ".concat(w.globals.gridHeight);
+          speed = 1;
+        }
+
+        if (pathTo.indexOf('undefined') > -1 || pathTo.indexOf('NaN') > -1) {
+          pathTo = "M 0 ".concat(w.globals.gridHeight);
+          speed = 1;
+        }
+
+        if (!w.globals.shouldAnimate) {
+          speed = 1;
+        }
+
+        el.plot(pathFrom).animate(1, w.globals.easing, delay).plot(pathFrom).animate(speed, w.globals.easing, delay).plot(pathTo).afterAll(function () {
+          // a flag to indicate that the original mount function can return true now as animation finished here
+          if (Utils.isNumber(j)) {
+            if (j === w.globals.series[w.globals.maxValsInArrayIndex].length - 2 && w.globals.shouldAnimate) {
+              w.globals.animationEnded = true;
+            }
+          } else if (w.globals.shouldAnimate) {
+            w.globals.animationEnded = true;
+
+            if (typeof w.config.chart.events.animationEnd === 'function') {
+              w.config.chart.events.animationEnd(_this.ctx, w);
+            }
+          }
+
+          _this.showDelayedElements();
+        });
+      }
+    }]);
+
+    return Animations;
+  }();
+
+  /**
+   * ApexCharts Graphics Class for all drawing operations.
+   *
+   * @module Graphics
+   **/
+
+  var Graphics =
+  /*#__PURE__*/
+  function () {
+    function Graphics(ctx) {
+      _classCallCheck(this, Graphics);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    }
+
+    _createClass(Graphics, [{
+      key: "drawLine",
+      value: function drawLine(x1, y1, x2, y2) {
+        var lineColor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '#a8a8a8';
+        var dashArray = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
+        var strokeWidth = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
+        var w = this.w;
+        var line = w.globals.dom.Paper.line().attr({
+          x1: x1,
+          y1: y1,
+          x2: x2,
+          y2: y2,
+          stroke: lineColor,
+          'stroke-dasharray': dashArray,
+          'stroke-width': strokeWidth
+        });
+        return line;
+      }
+    }, {
+      key: "drawRect",
+      value: function drawRect() {
+        var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+        var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+        var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+        var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+        var radius = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+        var color = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '#fefefe';
+        var opacity = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1;
+        var strokeWidth = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
+        var strokeColor = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null;
+        var strokeDashArray = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 0;
+        var w = this.w;
+        var rect = w.globals.dom.Paper.rect();
+        rect.attr({
+          x: x1,
+          y: y1,
+          width: x2 > 0 ? x2 : 0,
+          height: y2 > 0 ? y2 : 0,
+          rx: radius,
+          ry: radius,
+          fill: color,
+          opacity: opacity,
+          'stroke-width': strokeWidth !== null ? strokeWidth : 0,
+          stroke: strokeColor !== null ? strokeColor : 'none',
+          'stroke-dasharray': strokeDashArray
+        });
+        return rect;
+      }
+    }, {
+      key: "drawPolygon",
+      value: function drawPolygon(polygonString) {
+        var stroke = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#e1e1e1';
+        var fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none';
+        var w = this.w;
+        var polygon = w.globals.dom.Paper.polygon(polygonString).attr({
+          fill: fill,
+          stroke: stroke
+        });
+        return polygon;
+      }
+    }, {
+      key: "drawCircle",
+      value: function drawCircle(radius) {
+        var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+        var w = this.w;
+        var c = w.globals.dom.Paper.circle(radius * 2);
+
+        if (attrs !== null) {
+          c.attr(attrs);
+        }
+
+        return c;
+      }
+    }, {
+      key: "drawPath",
+      value: function drawPath(_ref) {
+        var _ref$d = _ref.d,
+            d = _ref$d === void 0 ? '' : _ref$d,
+            _ref$stroke = _ref.stroke,
+            stroke = _ref$stroke === void 0 ? '#a8a8a8' : _ref$stroke,
+            _ref$strokeWidth = _ref.strokeWidth,
+            strokeWidth = _ref$strokeWidth === void 0 ? 1 : _ref$strokeWidth,
+            fill = _ref.fill,
+            _ref$fillOpacity = _ref.fillOpacity,
+            fillOpacity = _ref$fillOpacity === void 0 ? 1 : _ref$fillOpacity,
+            _ref$strokeOpacity = _ref.strokeOpacity,
+            strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,
+            classes = _ref.classes,
+            _ref$strokeLinecap = _ref.strokeLinecap,
+            strokeLinecap = _ref$strokeLinecap === void 0 ? null : _ref$strokeLinecap,
+            _ref$strokeDashArray = _ref.strokeDashArray,
+            strokeDashArray = _ref$strokeDashArray === void 0 ? 0 : _ref$strokeDashArray;
+        var w = this.w;
+
+        if (strokeLinecap === null) {
+          strokeLinecap = w.config.stroke.lineCap;
+        }
+
+        if (d.indexOf('undefined') > -1 || d.indexOf('NaN') > -1) {
+          d = "M 0 ".concat(w.globals.gridHeight);
+        }
+
+        var p = w.globals.dom.Paper.path(d).attr({
+          fill: fill,
+          'fill-opacity': fillOpacity,
+          stroke: stroke,
+          'stroke-opacity': strokeOpacity,
+          'stroke-linecap': strokeLinecap,
+          'stroke-width': strokeWidth,
+          'stroke-dasharray': strokeDashArray,
+          class: classes
+        });
+        return p;
+      }
+    }, {
+      key: "group",
+      value: function group() {
+        var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+        var w = this.w;
+        var g = w.globals.dom.Paper.group();
+
+        if (attrs !== null) {
+          g.attr(attrs);
+        }
+
+        return g;
+      }
+    }, {
+      key: "move",
+      value: function move(x, y) {
+        var move = ['M', x, y].join(' ');
+        return move;
+      }
+    }, {
+      key: "line",
+      value: function line(x, y) {
+        var hORv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+        var line = null;
+
+        if (hORv === null) {
+          line = ['L', x, y].join(' ');
+        } else if (hORv === 'H') {
+          line = ['H', x].join(' ');
+        } else if (hORv === 'V') {
+          line = ['V', y].join(' ');
+        }
+
+        return line;
+      }
+    }, {
+      key: "curve",
+      value: function curve(x1, y1, x2, y2, x, y) {
+        var curve = ['C', x1, y1, x2, y2, x, y].join(' ');
+        return curve;
+      }
+    }, {
+      key: "quadraticCurve",
+      value: function quadraticCurve(x1, y1, x, y) {
+        var curve = ['Q', x1, y1, x, y].join(' ');
+        return curve;
+      }
+    }, {
+      key: "arc",
+      value: function arc(rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y) {
+        var relative = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;
+        var coord = 'A';
+        if (relative) coord = 'a';
+        var arc = [coord, rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y].join(' ');
+        return arc;
+      }
+      /**
+       * @memberof Graphics
+       * @param {object}
+       *  i = series's index
+       *  realIndex = realIndex is series's actual index when it was drawn time. After several redraws, the iterating "i" may change in loops, but realIndex doesn't
+       *  pathFrom = existing pathFrom to animateTo
+       *  pathTo = new Path to which d attr will be animated from pathFrom to pathTo
+       *  stroke = line Color
+       *  strokeWidth = width of path Line
+       *  fill = it can be gradient, single color, pattern or image
+       *  animationDelay = how much to delay when starting animation (in milliseconds)
+       *  dataChangeSpeed = for dynamic animations, when data changes
+       *  className = class attribute to add
+       * @return {object} svg.js path object
+       **/
+
+    }, {
+      key: "renderPaths",
+      value: function renderPaths(_ref2) {
+        var i = _ref2.i,
+            j = _ref2.j,
+            realIndex = _ref2.realIndex,
+            pathFrom = _ref2.pathFrom,
+            pathTo = _ref2.pathTo,
+            stroke = _ref2.stroke,
+            strokeWidth = _ref2.strokeWidth,
+            strokeLinecap = _ref2.strokeLinecap,
+            fill = _ref2.fill,
+            animationDelay = _ref2.animationDelay,
+            initialSpeed = _ref2.initialSpeed,
+            dataChangeSpeed = _ref2.dataChangeSpeed,
+            className = _ref2.className,
+            id = _ref2.id,
+            _ref2$shouldClipToGri = _ref2.shouldClipToGrid,
+            shouldClipToGrid = _ref2$shouldClipToGri === void 0 ? true : _ref2$shouldClipToGri,
+            _ref2$bindEventsOnPat = _ref2.bindEventsOnPaths,
+            bindEventsOnPaths = _ref2$bindEventsOnPat === void 0 ? true : _ref2$bindEventsOnPat,
+            _ref2$drawShadow = _ref2.drawShadow,
+            drawShadow = _ref2$drawShadow === void 0 ? true : _ref2$drawShadow;
+        var w = this.w;
+        var filters = new Filters(this.ctx);
+        var anim = new Animations(this.ctx);
+        var initialAnim = this.w.config.chart.animations.enabled;
+        var dynamicAnim = initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+        var d;
+        var shouldAnimate = !!(initialAnim && !w.globals.resized || dynamicAnim && w.globals.dataChanged && w.globals.shouldAnimate);
+
+        if (shouldAnimate) {
+          d = pathFrom;
+        } else {
+          d = pathTo;
+          this.w.globals.animationEnded = true;
+        }
+
+        var strokeDashArrayOpt = w.config.stroke.dashArray;
+        var strokeDashArray = 0;
+
+        if (Array.isArray(strokeDashArrayOpt)) {
+          strokeDashArray = strokeDashArrayOpt[realIndex];
+        } else {
+          strokeDashArray = w.config.stroke.dashArray;
+        }
+
+        var el = this.drawPath({
+          d: d,
+          stroke: stroke,
+          strokeWidth: strokeWidth,
+          fill: fill,
+          fillOpacity: 1,
+          classes: className,
+          strokeLinecap: strokeLinecap,
+          strokeDashArray: strokeDashArray
+        });
+        el.attr('id', "".concat(id, "-").concat(i));
+        el.attr('index', realIndex);
+
+        if (shouldClipToGrid) {
+          el.attr({
+            'clip-path': "url(#gridRectMask".concat(w.globals.cuid, ")")
+          });
+        } // const defaultFilter = el.filterer
+
+
+        if (w.config.states.normal.filter.type !== 'none') {
+          filters.getDefaultFilter(el, realIndex);
+        } else {
+          if (w.config.chart.dropShadow.enabled && drawShadow) {
+            if (!w.config.chart.dropShadow.enabledSeries || w.config.chart.dropShadow.enabledSeries && w.config.chart.dropShadow.enabledSeries.indexOf(realIndex) !== -1) {
+              var shadow = w.config.chart.dropShadow;
+              filters.dropShadow(el, shadow, realIndex);
+            }
+          }
+        }
+
+        if (bindEventsOnPaths) {
+          el.node.addEventListener('mouseenter', this.pathMouseEnter.bind(this, el));
+          el.node.addEventListener('mouseleave', this.pathMouseLeave.bind(this, el));
+          el.node.addEventListener('mousedown', this.pathMouseDown.bind(this, el));
+        }
+
+        el.attr({
+          pathTo: pathTo,
+          pathFrom: pathFrom
+        });
+        var defaultAnimateOpts = {
+          el: el,
+          j: j,
+          pathFrom: pathFrom,
+          pathTo: pathTo,
+          strokeWidth: strokeWidth
+        };
+
+        if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+          anim.animatePathsGradually(_objectSpread({}, defaultAnimateOpts, {
+            speed: initialSpeed,
+            delay: animationDelay
+          }));
+        } else {
+          if (w.globals.resized || !w.globals.dataChanged) {
+            anim.showDelayedElements();
+          }
+        }
+
+        if (w.globals.dataChanged && dynamicAnim && shouldAnimate) {
+          anim.animatePathsGradually(_objectSpread({}, defaultAnimateOpts, {
+            speed: dataChangeSpeed
+          }));
+        }
+
+        return el;
+      }
+    }, {
+      key: "drawPattern",
+      value: function drawPattern(style, width, height) {
+        var stroke = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '#a8a8a8';
+        var strokeWidth = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+        var w = this.w;
+        var p = w.globals.dom.Paper.pattern(width, height, function (add) {
+          if (style === 'horizontalLines') {
+            add.line(0, 0, height, 0).stroke({
+              color: stroke,
+              width: strokeWidth + 1
+            });
+          } else if (style === 'verticalLines') {
+            add.line(0, 0, 0, width).stroke({
+              color: stroke,
+              width: strokeWidth + 1
+            });
+          } else if (style === 'slantedLines') {
+            add.line(0, 0, width, height).stroke({
+              color: stroke,
+              width: strokeWidth
+            });
+          } else if (style === 'squares') {
+            add.rect(width, height).fill('none').stroke({
+              color: stroke,
+              width: strokeWidth
+            });
+          } else if (style === 'circles') {
+            add.circle(width).fill('none').stroke({
+              color: stroke,
+              width: strokeWidth
+            });
+          }
+        });
+        return p;
+      }
+    }, {
+      key: "drawGradient",
+      value: function drawGradient(style, gfrom, gto, opacityFrom, opacityTo) {
+        var size = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
+        var stops = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
+        var colorStops = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
+        var i = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0;
+        var w = this.w;
+        var g;
+        gfrom = Utils.hexToRgba(gfrom, opacityFrom);
+        gto = Utils.hexToRgba(gto, opacityTo);
+        var stop1 = 0;
+        var stop2 = 1;
+        var stop3 = 1;
+        var stop4 = null;
+
+        if (stops !== null) {
+          stop1 = typeof stops[0] !== 'undefined' ? stops[0] / 100 : 0;
+          stop2 = typeof stops[1] !== 'undefined' ? stops[1] / 100 : 1;
+          stop3 = typeof stops[2] !== 'undefined' ? stops[2] / 100 : 1;
+          stop4 = typeof stops[3] !== 'undefined' ? stops[3] / 100 : null;
+        }
+
+        var radial = !!(w.config.chart.type === 'donut' || w.config.chart.type === 'pie' || w.config.chart.type === 'bubble');
+
+        if (colorStops === null || colorStops.length === 0) {
+          g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) {
+            stop.at(stop1, gfrom, opacityFrom);
+            stop.at(stop2, gto, opacityTo);
+            stop.at(stop3, gto, opacityTo);
+
+            if (stop4 !== null) {
+              stop.at(stop4, gfrom, opacityFrom);
+            }
+          });
+        } else {
+          g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) {
+            var stops = Array.isArray(colorStops[i]) ? colorStops[i] : colorStops;
+            stops.forEach(function (s) {
+              stop.at(s.offset / 100, s.color, s.opacity);
+            });
+          });
+        }
+
+        if (!radial) {
+          if (style === 'vertical') {
+            g.from(0, 0).to(0, 1);
+          } else if (style === 'diagonal') {
+            g.from(0, 0).to(1, 1);
+          } else if (style === 'horizontal') {
+            g.from(0, 1).to(1, 1);
+          } else if (style === 'diagonal2') {
+            g.from(0, 1).to(2, 2);
+          }
+        } else {
+          var offx = w.globals.gridWidth / 2;
+          var offy = w.globals.gridHeight / 2;
+
+          if (w.config.chart.type !== 'bubble') {
+            g.attr({
+              gradientUnits: 'userSpaceOnUse',
+              cx: offx,
+              cy: offy,
+              r: size
+            });
+          } else {
+            g.attr({
+              cx: 0.5,
+              cy: 0.5,
+              r: 0.8,
+              fx: 0.2,
+              fy: 0.2
+            });
+          }
+        }
+
+        return g;
+      }
+    }, {
+      key: "drawText",
+      value: function drawText(opts) {
+        var w = this.w;
+        var x = opts.x,
+            y = opts.y,
+            text = opts.text,
+            textAnchor = opts.textAnchor,
+            fontSize = opts.fontSize,
+            fontFamily = opts.fontFamily,
+            foreColor = opts.foreColor,
+            opacity = opts.opacity;
+        if (typeof text === 'undefined') text = '';
+
+        if (!textAnchor) {
+          textAnchor = 'start';
+        }
+
+        if (!foreColor) {
+          foreColor = w.config.chart.foreColor;
+        }
+
+        fontFamily = fontFamily || w.config.chart.fontFamily;
+        var elText;
+
+        if (Array.isArray(text)) {
+          elText = w.globals.dom.Paper.text(function (add) {
+            for (var i = 0; i < text.length; i++) {
+              add.tspan(text[i]);
+            }
+          });
+        } else {
+          elText = w.globals.dom.Paper.plain(text);
+        }
+
+        elText.attr({
+          x: x,
+          y: y,
+          'text-anchor': textAnchor,
+          'dominant-baseline': 'auto',
+          'font-size': fontSize,
+          'font-family': fontFamily,
+          fill: foreColor,
+          class: 'apexcharts-text ' + opts.cssClass ? opts.cssClass : ''
+        });
+        elText.node.style.fontFamily = fontFamily;
+        elText.node.style.opacity = opacity;
+        return elText;
+      }
+    }, {
+      key: "addTspan",
+      value: function addTspan(textEl, text, fontFamily) {
+        var tspan = textEl.tspan(text);
+
+        if (!fontFamily) {
+          fontFamily = this.w.config.chart.fontFamily;
+        }
+
+        tspan.node.style.fontFamily = fontFamily;
+      }
+    }, {
+      key: "drawMarker",
+      value: function drawMarker(x, y, opts) {
+        x = x || 0;
+        var size = opts.pSize || 0;
+        var elPoint = null;
+
+        if (opts.shape === 'square') {
+          var radius = opts.pRadius === undefined ? size / 2 : opts.pRadius;
+
+          if (y === null) {
+            size = 0;
+            radius = 0;
+          }
+
+          var nSize = size * 1.2 + radius;
+          var p = this.drawRect(nSize, nSize, nSize, nSize, radius);
+          p.attr({
+            x: x - nSize / 2,
+            y: y - nSize / 2,
+            cx: x,
+            cy: y,
+            class: opts.class ? opts.class : '',
+            fill: opts.pointFillColor,
+            'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1,
+            stroke: opts.pointStrokeColor,
+            'stroke-width': opts.pWidth ? opts.pWidth : 0,
+            'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1
+          });
+          elPoint = p;
+        } else if (opts.shape === 'circle') {
+          if (!Utils.isNumber(y)) {
+            size = 0;
+            y = 0;
+          } // let nSize = size - opts.pRadius / 2 < 0 ? 0 : size - opts.pRadius / 2
+
+
+          elPoint = this.drawCircle(size, {
+            cx: x,
+            cy: y,
+            class: opts.class ? opts.class : '',
+            stroke: opts.pointStrokeColor,
+            fill: opts.pointFillColor,
+            'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1,
+            'stroke-width': opts.pWidth ? opts.pWidth : 0,
+            'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1
+          });
+        }
+
+        return elPoint;
+      }
+    }, {
+      key: "pathMouseEnter",
+      value: function pathMouseEnter(path, e) {
+        var w = this.w;
+        var filters = new Filters(this.ctx);
+        var i = parseInt(path.node.getAttribute('index'));
+        var j = parseInt(path.node.getAttribute('j'));
+
+        if (typeof w.config.chart.events.dataPointMouseEnter === 'function') {
+          w.config.chart.events.dataPointMouseEnter(e, this.ctx, {
+            seriesIndex: i,
+            dataPointIndex: j,
+            w: w
+          });
+        }
+
+        this.ctx.fireEvent('dataPointMouseEnter', [e, this.ctx, {
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        }]);
+
+        if (w.config.states.active.filter.type !== 'none') {
+          if (path.node.getAttribute('selected') === 'true') {
+            return;
+          }
+        }
+
+        if (w.config.states.hover.filter.type !== 'none') {
+          if (w.config.states.active.filter.type !== 'none' && !w.globals.isTouchDevice) {
+            var hoverFilter = w.config.states.hover.filter;
+            filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value);
+          }
+        }
+      }
+    }, {
+      key: "pathMouseLeave",
+      value: function pathMouseLeave(path, e) {
+        var w = this.w;
+        var filters = new Filters(this.ctx);
+        var i = parseInt(path.node.getAttribute('index'));
+        var j = parseInt(path.node.getAttribute('j'));
+
+        if (typeof w.config.chart.events.dataPointMouseLeave === 'function') {
+          w.config.chart.events.dataPointMouseLeave(e, this.ctx, {
+            seriesIndex: i,
+            dataPointIndex: j,
+            w: w
+          });
+        }
+
+        this.ctx.fireEvent('dataPointMouseLeave', [e, this.ctx, {
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        }]);
+
+        if (w.config.states.active.filter.type !== 'none') {
+          if (path.node.getAttribute('selected') === 'true') {
+            return;
+          }
+        }
+
+        if (w.config.states.hover.filter.type !== 'none') {
+          filters.getDefaultFilter(path, i);
+        }
+      }
+    }, {
+      key: "pathMouseDown",
+      value: function pathMouseDown(path, e) {
+        var w = this.w;
+        var filters = new Filters(this.ctx);
+        var i = parseInt(path.node.getAttribute('index'));
+        var j = parseInt(path.node.getAttribute('j'));
+        var selected = 'false';
+
+        if (path.node.getAttribute('selected') === 'true') {
+          path.node.setAttribute('selected', 'false');
+
+          if (w.globals.selectedDataPoints[i].indexOf(j) > -1) {
+            var index = w.globals.selectedDataPoints[i].indexOf(j);
+            w.globals.selectedDataPoints[i].splice(index, 1);
+          }
+        } else {
+          if (!w.config.states.active.allowMultipleDataPointsSelection && w.globals.selectedDataPoints.length > 0) {
+            w.globals.selectedDataPoints = [];
+            var elPaths = w.globals.dom.Paper.select('.apexcharts-series path').members;
+            var elCircles = w.globals.dom.Paper.select('.apexcharts-series circle, .apexcharts-series rect').members;
+            elPaths.forEach(function (elPath) {
+              elPath.node.setAttribute('selected', 'false');
+              filters.getDefaultFilter(elPath, i);
+            });
+            elCircles.forEach(function (circle) {
+              circle.node.setAttribute('selected', 'false');
+              filters.getDefaultFilter(circle, i);
+            });
+          }
+
+          path.node.setAttribute('selected', 'true');
+          selected = 'true';
+
+          if (typeof w.globals.selectedDataPoints[i] === 'undefined') {
+            w.globals.selectedDataPoints[i] = [];
+          }
+
+          w.globals.selectedDataPoints[i].push(j);
+        }
+
+        if (selected === 'true') {
+          var activeFilter = w.config.states.active.filter;
+
+          if (activeFilter !== 'none') {
+            filters.applyFilter(path, i, activeFilter.type, activeFilter.value);
+          }
+        } else {
+          if (w.config.states.active.filter.type !== 'none') {
+            filters.getDefaultFilter(path, i);
+          }
+        }
+
+        if (typeof w.config.chart.events.dataPointSelection === 'function') {
+          w.config.chart.events.dataPointSelection(e, this.ctx, {
+            selectedDataPoints: w.globals.selectedDataPoints,
+            seriesIndex: i,
+            dataPointIndex: j,
+            w: w
+          });
+        }
+
+        this.ctx.fireEvent('dataPointSelection', [e, this.ctx, {
+          selectedDataPoints: w.globals.selectedDataPoints,
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        }]); // if (this.w.config.chart.selection.selectedPoints !== undefined) {
+        //   this.w.config.chart.selection.selectedPoints(w.globals.selectedDataPoints)
+        // }
+      }
+    }, {
+      key: "rotateAroundCenter",
+      value: function rotateAroundCenter(el) {
+        var coord = el.getBBox();
+        var x = coord.x + coord.width / 2;
+        var y = coord.y + coord.height / 2;
+        return {
+          x: x,
+          y: y
+        };
+      }
+    }, {
+      key: "getTextRects",
+      value: function getTextRects(text, fontSize, fontFamily, transform) {
+        var useBBox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
+        var w = this.w;
+        var virtualText = this.drawText({
+          x: -200,
+          y: -200,
+          text: text,
+          textAnchor: 'start',
+          fontSize: fontSize,
+          fontFamily: fontFamily,
+          foreColor: '#fff',
+          opacity: 0
+        });
+
+        if (transform) {
+          virtualText.attr('transform', transform);
+        }
+
+        w.globals.dom.Paper.add(virtualText);
+        var rect = virtualText.bbox();
+
+        if (!useBBox) {
+          rect = virtualText.node.getBoundingClientRect();
+        }
+
+        virtualText.remove();
+        return {
+          width: rect.width,
+          height: rect.height
+        };
+      }
+      /**
+       * append ... to long text
+       * http://stackoverflow.com/questions/9241315/trimming-text-to-a-given-pixel-width-in-svg
+       * @memberof Graphics
+       **/
+
+    }, {
+      key: "placeTextWithEllipsis",
+      value: function placeTextWithEllipsis(textObj, textString, width) {
+        textObj.textContent = textString;
+
+        if (textString.length > 0) {
+          // ellipsis is needed
+          if (textObj.getSubStringLength(0, textString.length) >= width) {
+            for (var x = textString.length - 3; x > 0; x -= 3) {
+              if (textObj.getSubStringLength(0, x) <= width) {
+                textObj.textContent = textString.substring(0, x) + '...';
+                return;
+              }
+            }
+
+            textObj.textContent = '...'; // can't place at all
+          }
+        }
+      }
+    }], [{
+      key: "setAttrs",
+      value: function setAttrs(el, attrs) {
+        for (var key in attrs) {
+          if (attrs.hasOwnProperty(key)) {
+            el.setAttribute(key, attrs[key]);
+          }
+        }
+      }
+    }]);
+
+    return Graphics;
+  }();
+
+  const name = "en";
+  const options = {
+  	months: [
+  		"January",
+  		"February",
+  		"March",
+  		"April",
+  		"May",
+  		"June",
+  		"July",
+  		"August",
+  		"September",
+  		"October",
+  		"November",
+  		"December"
+  	],
+  	shortMonths: [
+  		"Jan",
+  		"Feb",
+  		"Mar",
+  		"Apr",
+  		"May",
+  		"Jun",
+  		"Jul",
+  		"Aug",
+  		"Sep",
+  		"Oct",
+  		"Nov",
+  		"Dec"
+  	],
+  	days: [
+  		"Sunday",
+  		"Monday",
+  		"Tuesday",
+  		"Wednesday",
+  		"Thursday",
+  		"Friday",
+  		"Saturday"
+  	],
+  	shortDays: [
+  		"Sun",
+  		"Mon",
+  		"Tue",
+  		"Wed",
+  		"Thu",
+  		"Fri",
+  		"Sat"
+  	],
+  	toolbar: {
+  		exportToSVG: "Download SVG",
+  		exportToPNG: "Download PNG",
+  		menu: "Menu",
+  		selection: "Selection",
+  		selectionZoom: "Selection Zoom",
+  		zoomIn: "Zoom In",
+  		zoomOut: "Zoom Out",
+  		pan: "Panning",
+  		reset: "Reset Zoom"
+  	}
+  };
+  var en = {
+  	name: name,
+  	options: options
+  };
+
+  var Options =
+  /*#__PURE__*/
+  function () {
+    function Options() {
+      _classCallCheck(this, Options);
+
+      this.yAxis = {
+        show: true,
+        showAlways: false,
+        seriesName: undefined,
+        opposite: false,
+        reversed: false,
+        logarithmic: false,
+        tickAmount: undefined,
+        forceNiceScale: false,
+        max: undefined,
+        min: undefined,
+        floating: false,
+        decimalsInFloat: undefined,
+        labels: {
+          show: true,
+          minWidth: 0,
+          maxWidth: 160,
+          offsetX: 0,
+          offsetY: 0,
+          align: undefined,
+          rotate: 0,
+          padding: 20,
+          style: {
+            colors: [],
+            fontSize: '11px',
+            fontFamily: undefined,
+            cssClass: ''
+          },
+          formatter: undefined
+        },
+        axisBorder: {
+          show: false,
+          color: '#78909C',
+          offsetX: 0,
+          offsetY: 0
+        },
+        axisTicks: {
+          show: false,
+          color: '#78909C',
+          width: 6,
+          offsetX: 0,
+          offsetY: 0
+        },
+        title: {
+          text: undefined,
+          rotate: 90,
+          offsetY: 0,
+          offsetX: 0,
+          style: {
+            color: undefined,
+            fontSize: '11px',
+            fontFamily: undefined,
+            cssClass: ''
+          }
+        },
+        tooltip: {
+          enabled: false,
+          offsetX: 0
+        },
+        crosshairs: {
+          show: true,
+          position: 'front',
+          stroke: {
+            color: '#b6b6b6',
+            width: 1,
+            dashArray: 0
+          }
+        }
+      };
+      this.xAxisAnnotation = {
+        x: 0,
+        x2: null,
+        strokeDashArray: 1,
+        fillColor: '#c2c2c2',
+        borderColor: '#c2c2c2',
+        opacity: 0.3,
+        offsetX: 0,
+        offsetY: 0,
+        label: {
+          borderColor: '#c2c2c2',
+          borderWidth: 1,
+          text: undefined,
+          textAnchor: 'middle',
+          orientation: 'vertical',
+          position: 'top',
+          offsetX: 0,
+          offsetY: 0,
+          style: {
+            background: '#fff',
+            color: undefined,
+            fontSize: '11px',
+            fontFamily: undefined,
+            cssClass: '',
+            padding: {
+              left: 5,
+              right: 5,
+              top: 2,
+              bottom: 2
+            }
+          }
+        }
+      };
+      this.yAxisAnnotation = {
+        y: 0,
+        y2: null,
+        strokeDashArray: 1,
+        fillColor: '#c2c2c2',
+        borderColor: '#c2c2c2',
+        opacity: 0.3,
+        offsetX: 0,
+        offsetY: 0,
+        yAxisIndex: 0,
+        label: {
+          borderColor: '#c2c2c2',
+          borderWidth: 1,
+          text: undefined,
+          textAnchor: 'end',
+          position: 'right',
+          offsetX: 0,
+          offsetY: -3,
+          style: {
+            background: '#fff',
+            color: undefined,
+            fontSize: '11px',
+            fontFamily: undefined,
+            cssClass: '',
+            padding: {
+              left: 5,
+              right: 5,
+              top: 0,
+              bottom: 2
+            }
+          }
+        }
+      };
+      this.pointAnnotation = {
+        x: 0,
+        y: null,
+        yAxisIndex: 0,
+        seriesIndex: 0,
+        marker: {
+          size: 0,
+          fillColor: '#fff',
+          strokeWidth: 2,
+          strokeColor: '#333',
+          shape: 'circle',
+          offsetX: 0,
+          offsetY: 0,
+          radius: 2,
+          cssClass: ''
+        },
+        label: {
+          borderColor: '#c2c2c2',
+          borderWidth: 1,
+          text: undefined,
+          textAnchor: 'middle',
+          offsetX: 0,
+          offsetY: -15,
+          style: {
+            background: '#fff',
+            color: undefined,
+            fontSize: '11px',
+            fontFamily: undefined,
+            cssClass: '',
+            padding: {
+              left: 5,
+              right: 5,
+              top: 0,
+              bottom: 2
+            }
+          }
+        },
+        customSVG: {
+          SVG: undefined,
+          cssClass: undefined,
+          offsetX: 0,
+          offsetY: 0
+        }
+      };
+    }
+
+    _createClass(Options, [{
+      key: "init",
+      value: function init() {
+        return {
+          annotations: {
+            position: 'front',
+            yaxis: [this.yAxisAnnotation],
+            xaxis: [this.xAxisAnnotation],
+            points: [this.pointAnnotation]
+          },
+          chart: {
+            animations: {
+              enabled: true,
+              easing: 'easeinout',
+              // linear, easeout, easein, easeinout, swing, bounce, elastic
+              speed: 800,
+              animateGradually: {
+                delay: 150,
+                enabled: true
+              },
+              dynamicAnimation: {
+                enabled: true,
+                speed: 350
+              }
+            },
+            background: 'transparent',
+            locales: [en],
+            defaultLocale: 'en',
+            dropShadow: {
+              enabled: false,
+              enabledSeries: undefined,
+              top: 2,
+              left: 2,
+              blur: 4,
+              color: '#000',
+              opacity: 0.35
+            },
+            events: {
+              animationEnd: undefined,
+              beforeMount: undefined,
+              mounted: undefined,
+              updated: undefined,
+              click: undefined,
+              legendClick: undefined,
+              markerClick: undefined,
+              selection: undefined,
+              dataPointSelection: undefined,
+              dataPointMouseEnter: undefined,
+              dataPointMouseLeave: undefined,
+              beforeZoom: undefined,
+              zoomed: undefined,
+              scrolled: undefined
+            },
+            foreColor: '#373d3f',
+            fontFamily: 'Helvetica, Arial, sans-serif',
+            height: 'auto',
+            parentHeightOffset: 15,
+            id: undefined,
+            group: undefined,
+            offsetX: 0,
+            offsetY: 0,
+            selection: {
+              enabled: false,
+              type: 'x',
+              // selectedPoints: undefined, // default datapoints that should be selected automatically
+              fill: {
+                color: '#24292e',
+                opacity: 0.1
+              },
+              stroke: {
+                width: 1,
+                color: '#24292e',
+                opacity: 0.4,
+                dashArray: 3
+              },
+              xaxis: {
+                min: undefined,
+                max: undefined
+              },
+              yaxis: {
+                min: undefined,
+                max: undefined
+              }
+            },
+            sparkline: {
+              enabled: false
+            },
+            brush: {
+              enabled: false,
+              autoScaleYaxis: false,
+              target: undefined
+            },
+            stacked: false,
+            stackType: 'normal',
+            toolbar: {
+              show: true,
+              tools: {
+                download: true,
+                selection: true,
+                zoom: true,
+                zoomin: true,
+                zoomout: true,
+                pan: true,
+                reset: true,
+                customIcons: []
+              },
+              autoSelected: 'zoom' // accepts -> zoom, pan, selection
+
+            },
+            type: 'line',
+            width: '100%',
+            zoom: {
+              enabled: true,
+              type: 'x',
+              // autoScaleYaxis: false, // TODO: rewrite the autoScaleY function
+              zoomedArea: {
+                fill: {
+                  color: '#90CAF9',
+                  opacity: 0.4
+                },
+                stroke: {
+                  color: '#0D47A1',
+                  opacity: 0.4,
+                  width: 1
+                }
+              }
+            }
+          },
+          plotOptions: {
+            bar: {
+              horizontal: false,
+              columnWidth: '70%',
+              // should be in percent 0 - 100
+              barHeight: '70%',
+              // should be in percent 0 - 100
+              distributed: false,
+              endingShape: 'flat',
+              colors: {
+                ranges: [],
+                backgroundBarColors: [],
+                backgroundBarOpacity: 1
+              },
+              dataLabels: {
+                maxItems: 100,
+                hideOverflowingLabels: true,
+                position: 'top' // top, center, bottom
+                // TODO: provide stackedLabels for stacked charts which gives additions of values
+
+              }
+            },
+            candlestick: {
+              colors: {
+                upward: '#00B746',
+                downward: '#EF403C'
+              },
+              wick: {
+                useFillColor: true
+              }
+            },
+            heatmap: {
+              radius: 2,
+              enableShades: true,
+              shadeIntensity: 0.5,
+              reverseNegativeShade: true,
+              distributed: false,
+              colorScale: {
+                inverse: false,
+                ranges: [],
+                min: undefined,
+                max: undefined
+              }
+            },
+            radialBar: {
+              size: undefined,
+              inverseOrder: false,
+              startAngle: 0,
+              endAngle: 360,
+              offsetX: 0,
+              offsetY: 0,
+              hollow: {
+                margin: 5,
+                size: '50%',
+                background: 'transparent',
+                image: undefined,
+                imageWidth: 150,
+                imageHeight: 150,
+                imageOffsetX: 0,
+                imageOffsetY: 0,
+                imageClipped: true,
+                position: 'front',
+                dropShadow: {
+                  enabled: false,
+                  top: 0,
+                  left: 0,
+                  blur: 3,
+                  color: '#000',
+                  opacity: 0.5
+                }
+              },
+              track: {
+                show: true,
+                startAngle: undefined,
+                endAngle: undefined,
+                background: '#f2f2f2',
+                strokeWidth: '97%',
+                opacity: 1,
+                margin: 5,
+                // margin is in pixels
+                dropShadow: {
+                  enabled: false,
+                  top: 0,
+                  left: 0,
+                  blur: 3,
+                  color: '#000',
+                  opacity: 0.5
+                }
+              },
+              dataLabels: {
+                show: true,
+                name: {
+                  show: true,
+                  fontSize: '16px',
+                  fontFamily: undefined,
+                  color: undefined,
+                  offsetY: 0
+                },
+                value: {
+                  show: true,
+                  fontSize: '14px',
+                  fontFamily: undefined,
+                  color: undefined,
+                  offsetY: 16,
+                  formatter: function formatter(val) {
+                    return val + '%';
+                  }
+                },
+                total: {
+                  show: false,
+                  label: 'Total',
+                  color: undefined,
+                  formatter: function formatter(w) {
+                    return w.globals.seriesTotals.reduce(function (a, b) {
+                      return a + b;
+                    }, 0) / w.globals.series.length + '%';
+                  }
+                }
+              }
+            },
+            rangeBar: {},
+            pie: {
+              size: undefined,
+              customScale: 1,
+              offsetX: 0,
+              offsetY: 0,
+              expandOnClick: true,
+              dataLabels: {
+                // These are the percentage values which are displayed on slice
+                offset: 0,
+                // offset by which labels will move outside
+                minAngleToShowLabel: 10
+              },
+              donut: {
+                size: '65%',
+                background: 'transparent',
+                labels: {
+                  // These are the inner labels appearing inside donut
+                  show: false,
+                  name: {
+                    show: true,
+                    fontSize: '16px',
+                    fontFamily: undefined,
+                    color: undefined,
+                    offsetY: -10
+                  },
+                  value: {
+                    show: true,
+                    fontSize: '20px',
+                    fontFamily: undefined,
+                    color: undefined,
+                    offsetY: 10,
+                    formatter: function formatter(val) {
+                      return val;
+                    }
+                  },
+                  total: {
+                    show: false,
+                    label: 'Total',
+                    color: undefined,
+                    formatter: function formatter(w) {
+                      return w.globals.seriesTotals.reduce(function (a, b) {
+                        return a + b;
+                      }, 0);
+                    }
+                  }
+                }
+              }
+            },
+            radar: {
+              size: undefined,
+              offsetX: 0,
+              offsetY: 0,
+              polygons: {
+                // strokeColor: '#e8e8e8', // should be deprecated in the minor version i.e 3.2
+                strokeColors: '#e8e8e8',
+                connectorColors: '#e8e8e8',
+                fill: {
+                  colors: undefined
+                }
+              }
+            }
+          },
+          colors: undefined,
+          dataLabels: {
+            enabled: true,
+            enabledOnSeries: undefined,
+            formatter: function formatter(val) {
+              return val;
+            },
+            textAnchor: 'middle',
+            offsetX: 0,
+            offsetY: 0,
+            style: {
+              fontSize: '12px',
+              fontFamily: undefined,
+              colors: undefined
+            },
+            dropShadow: {
+              enabled: false,
+              top: 1,
+              left: 1,
+              blur: 1,
+              color: '#000',
+              opacity: 0.45
+            }
+          },
+          fill: {
+            type: 'solid',
+            colors: undefined,
+            // array of colors
+            opacity: 0.85,
+            gradient: {
+              shade: 'dark',
+              type: 'horizontal',
+              shadeIntensity: 0.5,
+              gradientToColors: undefined,
+              inverseColors: true,
+              opacityFrom: 1,
+              opacityTo: 1,
+              stops: [0, 50, 100],
+              colorStops: []
+            },
+            image: {
+              src: [],
+              width: undefined,
+              // optional
+              height: undefined // optional
+
+            },
+            pattern: {
+              style: 'sqaures',
+              // String | Array of Strings
+              width: 6,
+              height: 6,
+              strokeWidth: 2
+            }
+          },
+          grid: {
+            show: true,
+            borderColor: '#e0e0e0',
+            strokeDashArray: 0,
+            position: 'back',
+            xaxis: {
+              lines: {
+                show: false,
+                animate: false
+              }
+            },
+            yaxis: {
+              lines: {
+                show: true,
+                animate: false
+              }
+            },
+            row: {
+              colors: undefined,
+              // takes as array which will be repeated on rows
+              opacity: 0.5
+            },
+            column: {
+              colors: undefined,
+              // takes an array which will be repeated on columns
+              opacity: 0.5
+            },
+            padding: {
+              top: 0,
+              right: 10,
+              bottom: 0,
+              left: 12
+            }
+          },
+          labels: [],
+          legend: {
+            show: true,
+            showForSingleSeries: false,
+            showForNullSeries: true,
+            showForZeroSeries: true,
+            floating: false,
+            position: 'bottom',
+            // whether to position legends in 1 of 4
+            // direction - top, bottom, left, right
+            horizontalAlign: 'center',
+            // when position top/bottom, you can specify whether to align legends left, right or center
+            fontSize: '12px',
+            fontFamily: undefined,
+            width: undefined,
+            height: undefined,
+            formatter: undefined,
+            offsetX: -20,
+            offsetY: 0,
+            labels: {
+              colors: undefined,
+              useSeriesColors: false
+            },
+            markers: {
+              width: 12,
+              height: 12,
+              strokeWidth: 0,
+              strokeColor: '#fff',
+              radius: 12,
+              customHTML: undefined,
+              offsetX: 0,
+              offsetY: 0,
+              onClick: undefined
+            },
+            itemMargin: {
+              horizontal: 0,
+              vertical: 5
+            },
+            onItemClick: {
+              toggleDataSeries: true
+            },
+            onItemHover: {
+              highlightDataSeries: true
+            }
+          },
+          markers: {
+            discrete: [],
+            size: 0,
+            colors: undefined,
+            //strokeColor: '#fff', // TODO: deprecate in major version 4.0
+            strokeColors: '#fff',
+            strokeWidth: 2,
+            strokeOpacity: 0.9,
+            fillOpacity: 1,
+            shape: 'circle',
+            radius: 2,
+            offsetX: 0,
+            offsetY: 0,
+            hover: {
+              size: undefined,
+              sizeOffset: 3
+            }
+          },
+          noData: {
+            text: undefined,
+            align: 'center',
+            verticalAlign: 'middle',
+            offsetX: 0,
+            offsetY: 0,
+            style: {
+              color: undefined,
+              fontSize: '14px',
+              fontFamily: undefined
+            }
+          },
+          responsive: [],
+          // breakpoints should follow ascending order 400, then 700, then 1000
+          series: undefined,
+          states: {
+            normal: {
+              filter: {
+                type: 'none',
+                value: 0
+              }
+            },
+            hover: {
+              filter: {
+                type: 'lighten',
+                value: 0.15
+              }
+            },
+            active: {
+              allowMultipleDataPointsSelection: false,
+              filter: {
+                type: 'darken',
+                value: 0.65
+              }
+            }
+          },
+          title: {
+            text: undefined,
+            align: 'left',
+            margin: 10,
+            offsetX: 0,
+            offsetY: 0,
+            floating: false,
+            style: {
+              fontSize: '14px',
+              fontFamily: undefined,
+              color: undefined
+            }
+          },
+          subtitle: {
+            text: undefined,
+            align: 'left',
+            margin: 10,
+            offsetX: 0,
+            offsetY: 30,
+            floating: false,
+            style: {
+              fontSize: '12px',
+              fontFamily: undefined,
+              color: undefined
+            }
+          },
+          stroke: {
+            show: true,
+            curve: 'smooth',
+            // "smooth" / "straight" / "stepline"
+            lineCap: 'butt',
+            // round, butt , square
+            width: 2,
+            colors: undefined,
+            // array of colors
+            dashArray: 0 // single value or array of values
+
+          },
+          tooltip: {
+            enabled: true,
+            enabledOnSeries: undefined,
+            shared: true,
+            followCursor: false,
+            // when disabled, the tooltip will show on top of the series instead of mouse position
+            intersect: false,
+            // when enabled, tooltip will only show when user directly hovers over point
+            inverseOrder: false,
+            custom: undefined,
+            fillSeriesColor: false,
+            theme: 'light',
+            style: {
+              fontSize: '12px',
+              fontFamily: undefined
+            },
+            onDatasetHover: {
+              highlightDataSeries: false
+            },
+            x: {
+              // x value
+              show: true,
+              format: 'dd MMM',
+              // dd/MM, dd MMM yy, dd MMM yyyy
+              formatter: undefined // a custom user supplied formatter function
+
+            },
+            y: {
+              formatter: undefined,
+              title: {
+                formatter: function formatter(seriesName) {
+                  return seriesName;
+                }
+              }
+            },
+            z: {
+              formatter: undefined,
+              title: 'Size: '
+            },
+            marker: {
+              show: true
+            },
+            items: {
+              display: 'flex'
+            },
+            fixed: {
+              enabled: false,
+              position: 'topRight',
+              // topRight, topLeft, bottomRight, bottomLeft
+              offsetX: 0,
+              offsetY: 0
+            }
+          },
+          xaxis: {
+            type: 'category',
+            categories: [],
+            offsetX: 0,
+            offsetY: 0,
+            labels: {
+              show: true,
+              rotate: -45,
+              rotateAlways: false,
+              hideOverlappingLabels: true,
+              trim: true,
+              minHeight: undefined,
+              maxHeight: 120,
+              showDuplicates: true,
+              style: {
+                colors: [],
+                fontSize: '12px',
+                fontFamily: undefined,
+                cssClass: ''
+              },
+              offsetX: 0,
+              offsetY: 0,
+              format: undefined,
+              formatter: undefined,
+              // custom formatter function which will override format
+              datetimeFormatter: {
+                year: 'yyyy',
+                month: "MMM 'yy",
+                day: 'dd MMM',
+                hour: 'HH:mm',
+                minute: 'HH:mm:ss'
+              }
+            },
+            axisBorder: {
+              show: true,
+              color: '#78909C',
+              width: '100%',
+              height: 1,
+              offsetX: 0,
+              offsetY: 0
+            },
+            axisTicks: {
+              show: true,
+              color: '#78909C',
+              height: 6,
+              offsetX: 0,
+              offsetY: 0
+            },
+            tickAmount: undefined,
+            tickPlacement: 'on',
+            min: undefined,
+            max: undefined,
+            range: undefined,
+            floating: false,
+            position: 'bottom',
+            title: {
+              text: undefined,
+              offsetX: 0,
+              offsetY: 0,
+              style: {
+                color: undefined,
+                fontSize: '12px',
+                fontFamily: undefined,
+                cssClass: ''
+              }
+            },
+            crosshairs: {
+              show: true,
+              width: 1,
+              // tickWidth/barWidth or an integer
+              position: 'back',
+              opacity: 0.9,
+              stroke: {
+                color: '#b6b6b6',
+                width: 1,
+                dashArray: 3
+              },
+              fill: {
+                type: 'solid',
+                // solid, gradient
+                color: '#B1B9C4',
+                gradient: {
+                  colorFrom: '#D8E3F0',
+                  colorTo: '#BED1E6',
+                  stops: [0, 100],
+                  opacityFrom: 0.4,
+                  opacityTo: 0.5
+                }
+              },
+              dropShadow: {
+                enabled: false,
+                left: 0,
+                top: 0,
+                blur: 1,
+                opacity: 0.4
+              }
+            },
+            tooltip: {
+              enabled: true,
+              offsetY: 0,
+              formatter: undefined,
+              style: {
+                fontSize: '12px',
+                fontFamily: undefined
+              }
+            }
+          },
+          yaxis: this.yAxis,
+          theme: {
+            mode: 'light',
+            palette: 'palette1',
+            // If defined, it will overwrite globals.colors variable
+            monochrome: {
+              // monochrome allows you to select just 1 color and fill out the rest with light/dark shade (intensity can be selected)
+              enabled: false,
+              color: '#008FFB',
+              shadeTo: 'light',
+              shadeIntensity: 0.65
+            }
+          }
+        };
+      }
+    }]);
+
+    return Options;
+  }();
+
+  /**
+   * ApexCharts Annotations Class for drawing lines/rects on both xaxis and yaxis.
+   *
+   * @module Annotations
+   **/
+
+  var Annotations =
+  /*#__PURE__*/
+  function () {
+    function Annotations(ctx) {
+      _classCallCheck(this, Annotations);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.graphics = new Graphics(this.ctx);
+
+      if (this.w.globals.isBarHorizontal) {
+        this.invertAxis = true;
+      }
+
+      this.xDivision = this.w.globals.gridWidth / this.w.globals.dataPoints;
+    }
+
+    _createClass(Annotations, [{
+      key: "drawAnnotations",
+      value: function drawAnnotations() {
+        var w = this.w;
+
+        if (w.globals.axisCharts) {
+          var yAnnotations = this.drawYAxisAnnotations();
+          var xAnnotations = this.drawXAxisAnnotations();
+          var pointAnnotations = this.drawPointAnnotations();
+          var initialAnim = w.config.chart.animations.enabled;
+          var annoArray = [yAnnotations, xAnnotations, pointAnnotations];
+          var annoElArray = [xAnnotations.node, yAnnotations.node, pointAnnotations.node];
+
+          for (var i = 0; i < 3; i++) {
+            w.globals.dom.elGraphical.add(annoArray[i]);
+
+            if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+              annoElArray[i].classList.add('hidden');
+            }
+
+            w.globals.delayedElements.push({
+              el: annoElArray[i],
+              index: 0
+            });
+          } // background sizes needs to be calculated after text is drawn, so calling them last
+
+
+          this.annotationsBackground();
+        }
+      }
+    }, {
+      key: "addXaxisAnnotation",
+      value: function addXaxisAnnotation(anno, parent, index) {
+        var w = this.w;
+        var min = this.invertAxis ? w.globals.minY : w.globals.minX;
+        var range = this.invertAxis ? w.globals.yRange[0] : w.globals.xRange;
+        var x1 = (anno.x - min) / (range / w.globals.gridWidth);
+        var text = anno.label.text;
+
+        if (w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) {
+          var catIndex = w.globals.labels.indexOf(anno.x);
+          var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+
+          if (xLabel) {
+            x1 = parseFloat(xLabel.getAttribute('x'));
+          }
+        }
+
+        var strokeDashArray = anno.strokeDashArray;
+        if (x1 < 0 || x1 > w.globals.gridWidth) return;
+
+        if (anno.x2 === null) {
+          var line = this.graphics.drawLine(x1 + anno.offsetX, // x1
+          0 + anno.offsetY, // y1
+          x1 + anno.offsetX, // x2
+          w.globals.gridHeight + anno.offsetY, // y2
+          anno.borderColor, // lineColor
+          strokeDashArray //dashArray
+          );
+          parent.appendChild(line.node);
+        } else {
+          var x2 = (anno.x2 - min) / (range / w.globals.gridWidth);
+
+          if (x2 < x1) {
+            var temp = x1;
+            x1 = x2;
+            x2 = temp;
+          }
+
+          if (text) {
+            var rect = this.graphics.drawRect(x1 + anno.offsetX, // x1
+            0 + anno.offsetY, // y1
+            x2 - x1, // x2
+            w.globals.gridHeight + anno.offsetY, // y2
+            0, // radius
+            anno.fillColor, // color
+            anno.opacity, // opacity,
+            1, // strokeWidth
+            anno.borderColor, // strokeColor
+            strokeDashArray // stokeDashArray
+            );
+            parent.appendChild(rect.node);
+          }
+        }
+
+        var textY = anno.label.position === 'top' ? -3 : w.globals.gridHeight;
+        var elText = this.graphics.drawText({
+          x: x1 + anno.label.offsetX,
+          y: textY + anno.label.offsetY,
+          text: text,
+          textAnchor: anno.label.textAnchor,
+          fontSize: anno.label.style.fontSize,
+          fontFamily: anno.label.style.fontFamily,
+          foreColor: anno.label.style.color,
+          cssClass: 'apexcharts-xaxis-annotation-label ' + anno.label.style.cssClass
+        });
+        elText.attr({
+          rel: index
+        });
+        parent.appendChild(elText.node); // after placing the annotations on svg, set any vertically placed annotations
+
+        this.setOrientations(anno, index);
+      }
+    }, {
+      key: "drawXAxisAnnotations",
+      value: function drawXAxisAnnotations() {
+        var _this = this;
+
+        var w = this.w;
+        var elg = this.graphics.group({
+          class: 'apexcharts-xaxis-annotations'
+        });
+        w.config.annotations.xaxis.map(function (anno, index) {
+          _this.addXaxisAnnotation(anno, elg.node, index);
+        });
+        return elg;
+      }
+    }, {
+      key: "addYaxisAnnotation",
+      value: function addYaxisAnnotation(anno, parent, index) {
+        var w = this.w;
+        var strokeDashArray = anno.strokeDashArray;
+        var y1;
+        var y2;
+
+        if (this.invertAxis) {
+          var catIndex = w.globals.labels.indexOf(anno.y);
+          var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+
+          if (xLabel) {
+            y1 = parseFloat(xLabel.getAttribute('y'));
+          }
+        } else {
+          y1 = w.globals.gridHeight - (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+          if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+            y1 = (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+          }
+        }
+
+        var text = anno.label.text;
+
+        if (anno.y2 === null) {
+          var line = this.graphics.drawLine(0 + anno.offsetX, // x1
+          y1 + anno.offsetY, // y1
+          w.globals.gridWidth + anno.offsetX, // x2
+          y1 + anno.offsetY, // y2
+          anno.borderColor, // lineColor
+          strokeDashArray // dashArray
+          );
+          parent.appendChild(line.node);
+        } else {
+          if (this.invertAxis) {
+            var _catIndex = w.globals.labels.indexOf(anno.y2);
+
+            var _xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis-texts-g text:nth-child(' + (_catIndex + 1) + ')');
+
+            if (_xLabel) {
+              y2 = parseFloat(_xLabel.getAttribute('y'));
+            }
+          } else {
+            y2 = w.globals.gridHeight - (anno.y2 - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+            if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+              y2 = (anno.y2 - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+            }
+          }
+
+          if (y2 > y1) {
+            var temp = y1;
+            y1 = y2;
+            y2 = temp;
+          }
+
+          if (text) {
+            var rect = this.graphics.drawRect(0 + anno.offsetX, // x1
+            y2 + anno.offsetY, // y1
+            w.globals.gridWidth + anno.offsetX, // x2
+            y1 - y2, // y2
+            0, // radius
+            anno.fillColor, // color
+            anno.opacity, // opacity,
+            1, // strokeWidth
+            anno.borderColor, // strokeColor
+            strokeDashArray // stokeDashArray
+            );
+            parent.appendChild(rect.node);
+          }
+        }
+
+        var textX = anno.label.position === 'right' ? w.globals.gridWidth : 0;
+        var elText = this.graphics.drawText({
+          x: textX + anno.label.offsetX,
+          y: (y2 || y1) + anno.label.offsetY - 3,
+          text: text,
+          textAnchor: anno.label.textAnchor,
+          fontSize: anno.label.style.fontSize,
+          fontFamily: anno.label.style.fontFamily,
+          foreColor: anno.label.style.color,
+          cssClass: 'apexcharts-yaxis-annotation-label ' + anno.label.style.cssClass
+        });
+        elText.attr({
+          rel: index
+        });
+        parent.appendChild(elText.node);
+      }
+    }, {
+      key: "drawYAxisAnnotations",
+      value: function drawYAxisAnnotations() {
+        var _this2 = this;
+
+        var w = this.w;
+        var elg = this.graphics.group({
+          class: 'apexcharts-yaxis-annotations'
+        });
+        w.config.annotations.yaxis.map(function (anno, index) {
+          _this2.addYaxisAnnotation(anno, elg.node, index);
+        });
+        return elg;
+      }
+    }, {
+      key: "clearAnnotations",
+      value: function clearAnnotations(ctx) {
+        var w = ctx.w;
+        var annos = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations');
+        annos = Utils.listToArray(annos);
+        annos.forEach(function (a) {
+          while (a.firstChild) {
+            a.removeChild(a.firstChild);
+          }
+        });
+      }
+    }, {
+      key: "addPointAnnotation",
+      value: function addPointAnnotation(anno, parent, index) {
+        var w = this.w;
+        var x = 0;
+        var y = 0;
+        var pointY = 0;
+
+        if (this.invertAxis) {
+          console.warn('Point annotation is not supported in horizontal bar charts.');
+        }
+
+        if (typeof anno.x === 'string') {
+          var catIndex = w.globals.labels.indexOf(anno.x);
+          var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');
+          var xPos = parseFloat(xLabel.getAttribute('x'));
+          x = xPos;
+          var annoY = anno.y;
+
+          if (anno.y === null) {
+            annoY = w.globals.series[anno.seriesIndex][catIndex];
+          }
+
+          y = w.globals.gridHeight - (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+          pointY = w.globals.gridHeight - (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+          if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+            y = (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) + parseInt(anno.label.style.fontSize) + anno.marker.size;
+            pointY = (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+          }
+        } else {
+          x = (anno.x - w.globals.minX) / (w.globals.xRange / w.globals.gridWidth);
+          y = w.globals.gridHeight - (parseFloat(anno.y) - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+          pointY = w.globals.gridHeight - (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+
+          if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {
+            y = (parseFloat(anno.y) - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseInt(anno.label.style.fontSize) - anno.marker.size;
+            pointY = (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);
+          }
+        }
+
+        if (x < 0 || x > w.globals.gridWidth) return;
+        var optsPoints = {
+          pSize: anno.marker.size,
+          pWidth: anno.marker.strokeWidth,
+          pointFillColor: anno.marker.fillColor,
+          pointStrokeColor: anno.marker.strokeColor,
+          shape: anno.marker.shape,
+          radius: anno.marker.radius,
+          class: 'apexcharts-point-annotation-marker ' + anno.marker.cssClass
+        };
+        var point = this.graphics.drawMarker(x + anno.marker.offsetX, pointY + anno.marker.offsetY, optsPoints);
+        parent.appendChild(point.node);
+        var text = anno.label.text ? anno.label.text : '';
+        var elText = this.graphics.drawText({
+          x: x + anno.label.offsetX,
+          y: y + anno.label.offsetY,
+          text: text,
+          textAnchor: anno.label.textAnchor,
+          fontSize: anno.label.style.fontSize,
+          fontFamily: anno.label.style.fontFamily,
+          foreColor: anno.label.style.color,
+          cssClass: 'apexcharts-point-annotation-label ' + anno.label.style.cssClass
+        });
+        elText.attr({
+          rel: index
+        });
+        parent.appendChild(elText.node);
+
+        if (anno.customSVG.SVG) {
+          var g = this.graphics.group({
+            class: 'apexcharts-point-annotations-custom-svg ' + anno.customSVG.cssClass
+          });
+          g.attr({
+            transform: "translate(".concat(x + anno.customSVG.offsetX, ", ").concat(y + anno.customSVG.offsetY, ")")
+          });
+          g.node.innerHTML = anno.customSVG.SVG;
+          parent.appendChild(g.node);
+        }
+      }
+    }, {
+      key: "drawPointAnnotations",
+      value: function drawPointAnnotations() {
+        var _this3 = this;
+
+        var w = this.w;
+        var elg = this.graphics.group({
+          class: 'apexcharts-point-annotations'
+        });
+        w.config.annotations.points.map(function (anno, index) {
+          _this3.addPointAnnotation(anno, elg.node, index);
+        });
+        return elg;
+      }
+    }, {
+      key: "setOrientations",
+      value: function setOrientations(anno) {
+        var annoIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+        var w = this.w;
+
+        if (anno.label.orientation === 'vertical') {
+          var i = annoIndex !== null ? annoIndex : 0;
+          var xAnno = w.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(i, "']"));
+
+          if (xAnno !== null) {
+            var xAnnoCoord = xAnno.getBoundingClientRect();
+            xAnno.setAttribute('x', parseFloat(xAnno.getAttribute('x')) - xAnnoCoord.height + 4);
+
+            if (anno.label.position === 'top') {
+              xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) + xAnnoCoord.width);
+            } else {
+              xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) - xAnnoCoord.width);
+            }
+
+            var annoRotatingCenter = this.graphics.rotateAroundCenter(xAnno);
+            var x = annoRotatingCenter.x;
+            var y = annoRotatingCenter.y;
+            xAnno.setAttribute('transform', "rotate(-90 ".concat(x, " ").concat(y, ")"));
+          }
+        }
+      }
+    }, {
+      key: "addBackgroundToAnno",
+      value: function addBackgroundToAnno(annoEl, anno) {
+        var w = this.w;
+        if (!anno.label.text) return null;
+        var elGridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid').getBoundingClientRect();
+        var coords = annoEl.getBoundingClientRect();
+        var pleft = anno.label.style.padding.left;
+        var pright = anno.label.style.padding.right;
+        var ptop = anno.label.style.padding.top;
+        var pbottom = anno.label.style.padding.bottom;
+
+        if (anno.label.orientation === 'vertical') {
+          ptop = anno.label.style.padding.left;
+          pbottom = anno.label.style.padding.right;
+          pleft = anno.label.style.padding.top;
+          pright = anno.label.style.padding.bottom;
+        }
+
+        var x1 = coords.left - elGridRect.left - pleft;
+        var y1 = coords.top - elGridRect.top - ptop;
+        var elRect = this.graphics.drawRect(x1, y1, coords.width + pleft + pright, coords.height + ptop + pbottom, 0, anno.label.style.background, 1, anno.label.borderWidth, anno.label.borderColor, 0);
+        return elRect;
+      }
+    }, {
+      key: "annotationsBackground",
+      value: function annotationsBackground() {
+        var _this4 = this;
+
+        var w = this.w;
+
+        var add = function add(anno, i, type) {
+          var annoLabel = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations .apexcharts-").concat(type, "-annotation-label[rel='").concat(i, "']"));
+
+          if (annoLabel) {
+            var parent = annoLabel.parentNode;
+
+            var elRect = _this4.addBackgroundToAnno(annoLabel, anno);
+
+            if (elRect) {
+              parent.insertBefore(elRect.node, annoLabel);
+            }
+          }
+        };
+
+        w.config.annotations.xaxis.map(function (anno, i) {
+          add(anno, i, 'xaxis');
+        });
+        w.config.annotations.yaxis.map(function (anno, i) {
+          add(anno, i, 'yaxis');
+        });
+        w.config.annotations.points.map(function (anno, i) {
+          add(anno, i, 'point');
+        });
+      }
+    }, {
+      key: "addText",
+      value: function addText(params, pushToMemory, context) {
+        var x = params.x,
+            y = params.y,
+            text = params.text,
+            textAnchor = params.textAnchor,
+            _params$appendTo = params.appendTo,
+            appendTo = _params$appendTo === void 0 ? '.apexcharts-inner' : _params$appendTo,
+            foreColor = params.foreColor,
+            fontSize = params.fontSize,
+            fontFamily = params.fontFamily,
+            cssClass = params.cssClass,
+            backgroundColor = params.backgroundColor,
+            borderWidth = params.borderWidth,
+            strokeDashArray = params.strokeDashArray,
+            radius = params.radius,
+            borderColor = params.borderColor,
+            _params$paddingLeft = params.paddingLeft,
+            paddingLeft = _params$paddingLeft === void 0 ? 4 : _params$paddingLeft,
+            _params$paddingRight = params.paddingRight,
+            paddingRight = _params$paddingRight === void 0 ? 4 : _params$paddingRight,
+            _params$paddingBottom = params.paddingBottom,
+            paddingBottom = _params$paddingBottom === void 0 ? 2 : _params$paddingBottom,
+            _params$paddingTop = params.paddingTop,
+            paddingTop = _params$paddingTop === void 0 ? 2 : _params$paddingTop;
+        var me = context;
+        var w = me.w;
+        var parentNode = w.globals.dom.baseEl.querySelector(appendTo);
+        var elText = this.graphics.drawText({
+          x: x,
+          y: y,
+          text: text,
+          textAnchor: textAnchor || 'start',
+          fontSize: fontSize || '12px',
+          fontFamily: fontFamily || w.config.chart.fontFamily,
+          foreColor: foreColor || w.config.chart.foreColor,
+          cssClass: 'apexcharts-text ' + cssClass ? cssClass : ''
+        });
+        parentNode.appendChild(elText.node);
+        var textRect = elText.bbox();
+
+        if (text) {
+          var elRect = this.graphics.drawRect(textRect.x - paddingLeft, textRect.y - paddingTop, textRect.width + paddingLeft + paddingRight, textRect.height + paddingBottom + paddingTop, radius, backgroundColor, 1, borderWidth, borderColor, strokeDashArray);
+          elText.before(elRect);
+        }
+
+        if (pushToMemory) {
+          w.globals.memory.methodsToExec.push({
+            context: me,
+            method: me.addText,
+            params: {
+              x: x,
+              y: y,
+              text: text,
+              textAnchor: textAnchor,
+              appendTo: appendTo,
+              foreColor: foreColor,
+              fontSize: fontSize,
+              cssClass: cssClass,
+              backgroundColor: backgroundColor,
+              borderWidth: borderWidth,
+              strokeDashArray: strokeDashArray,
+              radius: radius,
+              borderColor: borderColor,
+              paddingLeft: paddingLeft,
+              paddingRight: paddingRight,
+              paddingBottom: paddingBottom,
+              paddingTop: paddingTop
+            }
+          });
+        }
+
+        return context;
+      }
+    }, {
+      key: "addPointAnnotationExternal",
+      value: function addPointAnnotationExternal(params, pushToMemory, context) {
+        if (typeof this.invertAxis === 'undefined') {
+          this.invertAxis = context.w.globals.isBarHorizontal;
+        }
+
+        this.addAnnotationExternal({
+          params: params,
+          pushToMemory: pushToMemory,
+          context: context,
+          type: 'point',
+          contextMethod: context.addPointAnnotation
+        });
+        return context;
+      }
+    }, {
+      key: "addYaxisAnnotationExternal",
+      value: function addYaxisAnnotationExternal(params, pushToMemory, context) {
+        this.addAnnotationExternal({
+          params: params,
+          pushToMemory: pushToMemory,
+          context: context,
+          type: 'yaxis',
+          contextMethod: context.addYaxisAnnotation
+        });
+        return context;
+      } // The addXaxisAnnotation method requires a parent class, and user calling this method externally on the chart instance may not specify parent, hence a different method
+
+    }, {
+      key: "addXaxisAnnotationExternal",
+      value: function addXaxisAnnotationExternal(params, pushToMemory, context) {
+        this.addAnnotationExternal({
+          params: params,
+          pushToMemory: pushToMemory,
+          context: context,
+          type: 'xaxis',
+          contextMethod: context.addXaxisAnnotation
+        });
+        return context;
+      }
+    }, {
+      key: "addAnnotationExternal",
+      value: function addAnnotationExternal(_ref) {
+        var params = _ref.params,
+            pushToMemory = _ref.pushToMemory,
+            context = _ref.context,
+            type = _ref.type,
+            contextMethod = _ref.contextMethod;
+        var me = context;
+        var w = me.w;
+        var parent = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations"));
+        var index = parent.childNodes.length + 1;
+        var opt = new Options();
+        var axesAnno = Object.assign({}, type === 'xaxis' ? opt.xAxisAnnotation : type === 'yaxis' ? opt.yAxisAnnotation : opt.pointAnnotation);
+        var anno = Utils.extend(axesAnno, params);
+
+        switch (type) {
+          case 'xaxis':
+            this.addXaxisAnnotation(anno, parent, index);
+            break;
+
+          case 'yaxis':
+            this.addYaxisAnnotation(anno, parent, index);
+            break;
+
+          case 'point':
+            this.addPointAnnotation(anno, parent, index);
+            break;
+        } // add background
+
+
+        var axesAnnoLabel = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations .apexcharts-").concat(type, "-annotation-label[rel='").concat(index, "']"));
+        var elRect = this.addBackgroundToAnno(axesAnnoLabel, anno);
+
+        if (elRect) {
+          parent.insertBefore(elRect.node, axesAnnoLabel);
+        }
+
+        if (pushToMemory) {
+          w.globals.memory.methodsToExec.push({
+            context: me,
+            method: contextMethod,
+            params: params
+          });
+        }
+
+        return context;
+      }
+    }]);
+
+    return Annotations;
+  }();
+
+  /**
+   * DateTime Class to manipulate datetime values.
+   *
+   * @module DateTime
+   **/
+
+  var DateTime =
+  /*#__PURE__*/
+  function () {
+    function DateTime(ctx) {
+      _classCallCheck(this, DateTime);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.months31 = [1, 3, 5, 7, 8, 10, 12];
+      this.months30 = [2, 4, 6, 9, 11];
+      this.daysCntOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
+    }
+
+    _createClass(DateTime, [{
+      key: "isValidDate",
+      value: function isValidDate(date) {
+        return !isNaN(this.parseDate(date));
+      }
+    }, {
+      key: "getUTCTimeStamp",
+      value: function getUTCTimeStamp(dateStr) {
+        if (!Date.parse(dateStr)) {
+          return dateStr;
+        }
+
+        return new Date(new Date(dateStr).toISOString().substr(0, 25)).getTime();
+      }
+    }, {
+      key: "parseDate",
+      value: function parseDate(dateStr) {
+        var parsed = Date.parse(dateStr);
+
+        if (!isNaN(parsed)) {
+          return this.getUTCTimeStamp(dateStr);
+        }
+
+        var output = Date.parse(dateStr.replace(/-/g, '/').replace(/[a-z]+/gi, ' '));
+        output = this.getUTCTimeStamp(output);
+        return output;
+      } // https://stackoverflow.com/a/11252167/6495043
+
+    }, {
+      key: "treatAsUtc",
+      value: function treatAsUtc(dateStr) {
+        var result = new Date(dateStr);
+        result.setMinutes(result.getMinutes() - result.getTimezoneOffset());
+        return result;
+      } // http://stackoverflow.com/questions/14638018/current-time-formatting-with-javascript#answer-14638191
+
+    }, {
+      key: "formatDate",
+      value: function formatDate(date, format) {
+        var utc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+        var convertToUTC = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
+        var locale = this.w.globals.locale;
+        var MMMM = ['\x00'].concat(_toConsumableArray(locale.months));
+        var MMM = ['\x01'].concat(_toConsumableArray(locale.shortMonths));
+        var dddd = ['\x02'].concat(_toConsumableArray(locale.days));
+        var ddd = ['\x03'].concat(_toConsumableArray(locale.shortDays));
+
+        function ii(i, len) {
+          var s = i + '';
+          len = len || 2;
+
+          while (s.length < len) {
+            s = '0' + s;
+          }
+
+          return s;
+        }
+
+        if (convertToUTC) {
+          date = this.treatAsUtc(date);
+        }
+
+        var y = utc ? date.getUTCFullYear() : date.getFullYear();
+        format = format.replace(/(^|[^\\])yyyy+/g, '$1' + y);
+        format = format.replace(/(^|[^\\])yy/g, '$1' + y.toString().substr(2, 2));
+        format = format.replace(/(^|[^\\])y/g, '$1' + y);
+        var M = (utc ? date.getUTCMonth() : date.getMonth()) + 1;
+        format = format.replace(/(^|[^\\])MMMM+/g, '$1' + MMMM[0]);
+        format = format.replace(/(^|[^\\])MMM/g, '$1' + MMM[0]);
+        format = format.replace(/(^|[^\\])MM/g, '$1' + ii(M));
+        format = format.replace(/(^|[^\\])M/g, '$1' + M);
+        var d = utc ? date.getUTCDate() : date.getDate();
+        format = format.replace(/(^|[^\\])dddd+/g, '$1' + dddd[0]);
+        format = format.replace(/(^|[^\\])ddd/g, '$1' + ddd[0]);
+        format = format.replace(/(^|[^\\])dd/g, '$1' + ii(d));
+        format = format.replace(/(^|[^\\])d/g, '$1' + d);
+        var H = utc ? date.getUTCHours() : date.getHours();
+        format = format.replace(/(^|[^\\])HH+/g, '$1' + ii(H));
+        format = format.replace(/(^|[^\\])H/g, '$1' + H);
+        var h = H > 12 ? H - 12 : H === 0 ? 12 : H;
+        format = format.replace(/(^|[^\\])hh+/g, '$1' + ii(h));
+        format = format.replace(/(^|[^\\])h/g, '$1' + h);
+        var m = utc ? date.getUTCMinutes() : date.getMinutes();
+        format = format.replace(/(^|[^\\])mm+/g, '$1' + ii(m));
+        format = format.replace(/(^|[^\\])m/g, '$1' + m);
+        var s = utc ? date.getUTCSeconds() : date.getSeconds();
+        format = format.replace(/(^|[^\\])ss+/g, '$1' + ii(s));
+        format = format.replace(/(^|[^\\])s/g, '$1' + s);
+        var f = utc ? date.getUTCMilliseconds() : date.getMilliseconds();
+        format = format.replace(/(^|[^\\])fff+/g, '$1' + ii(f, 3));
+        f = Math.round(f / 10);
+        format = format.replace(/(^|[^\\])ff/g, '$1' + ii(f));
+        f = Math.round(f / 10);
+        format = format.replace(/(^|[^\\])f/g, '$1' + f);
+        var T = H < 12 ? 'AM' : 'PM';
+        format = format.replace(/(^|[^\\])TT+/g, '$1' + T);
+        format = format.replace(/(^|[^\\])T/g, '$1' + T.charAt(0));
+        var t = T.toLowerCase();
+        format = format.replace(/(^|[^\\])tt+/g, '$1' + t);
+        format = format.replace(/(^|[^\\])t/g, '$1' + t.charAt(0));
+        var tz = -date.getTimezoneOffset();
+        var K = utc || !tz ? 'Z' : tz > 0 ? '+' : '-';
+
+        if (!utc) {
+          tz = Math.abs(tz);
+          var tzHrs = Math.floor(tz / 60);
+          var tzMin = tz % 60;
+          K += ii(tzHrs) + ':' + ii(tzMin);
+        }
+
+        format = format.replace(/(^|[^\\])K/g, '$1' + K);
+        var day = (utc ? date.getUTCDay() : date.getDay()) + 1;
+        format = format.replace(new RegExp(dddd[0], 'g'), dddd[day]);
+        format = format.replace(new RegExp(ddd[0], 'g'), ddd[day]);
+        format = format.replace(new RegExp(MMMM[0], 'g'), MMMM[M]);
+        format = format.replace(new RegExp(MMM[0], 'g'), MMM[M]);
+        format = format.replace(/\\(.)/g, '$1');
+        return format;
+      }
+    }, {
+      key: "getTimeUnitsfromTimestamp",
+      value: function getTimeUnitsfromTimestamp(minX, maxX) {
+        var w = this.w;
+
+        if (w.config.xaxis.min !== undefined) {
+          minX = w.config.xaxis.min;
+        }
+
+        if (w.config.xaxis.max !== undefined) {
+          maxX = w.config.xaxis.max;
+        }
+
+        var minYear = new Date(minX).getFullYear();
+        var maxYear = new Date(maxX).getFullYear();
+        var minMonth = new Date(minX).getMonth();
+        var maxMonth = new Date(maxX).getMonth();
+        var minDate = new Date(minX).getDate();
+        var maxDate = new Date(maxX).getDate();
+        var minHour = new Date(minX).getHours();
+        var maxHour = new Date(maxX).getHours();
+        var minMinute = new Date(minX).getMinutes();
+        var maxMinute = new Date(maxX).getMinutes();
+        return {
+          minMinute: minMinute,
+          maxMinute: maxMinute,
+          minHour: minHour,
+          maxHour: maxHour,
+          minDate: minDate,
+          maxDate: maxDate,
+          minMonth: minMonth,
+          maxMonth: maxMonth,
+          minYear: minYear,
+          maxYear: maxYear
+        };
+      }
+    }, {
+      key: "isLeapYear",
+      value: function isLeapYear(year) {
+        return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
+      }
+    }, {
+      key: "calculcateLastDaysOfMonth",
+      value: function calculcateLastDaysOfMonth(month, year, subtract) {
+        var days = this.determineDaysOfMonths(month, year); // whatever days we get, subtract the number of days asked
+
+        return days - subtract;
+      }
+    }, {
+      key: "determineDaysOfYear",
+      value: function determineDaysOfYear(year) {
+        var days = 365;
+
+        if (this.isLeapYear(year)) {
+          days = 366;
+        }
+
+        return days;
+      }
+    }, {
+      key: "determineRemainingDaysOfYear",
+      value: function determineRemainingDaysOfYear(year, month, date) {
+        var dayOfYear = this.daysCntOfYear[month] + date;
+        if (month > 1 && this.isLeapYear()) dayOfYear++;
+        return dayOfYear;
+      }
+    }, {
+      key: "determineDaysOfMonths",
+      value: function determineDaysOfMonths(month, year) {
+        var days = 30;
+        month = Utils.monthMod(month);
+
+        switch (true) {
+          case this.months30.indexOf(month) > -1:
+            if (month === 2) {
+              if (this.isLeapYear(year)) {
+                days = 29;
+              } else {
+                days = 28;
+              }
+            }
+
+            break;
+
+          case this.months31.indexOf(month) > -1:
+            days = 31;
+            break;
+
+          default:
+            days = 31;
+            break;
+        }
+
+        return days;
+      }
+    }]);
+
+    return DateTime;
+  }();
+
+  /**
+   * ApexCharts Default Class for setting default options for all chart types.
+   *
+   * @module Defaults
+   **/
+
+  var Defaults =
+  /*#__PURE__*/
+  function () {
+    function Defaults(opts) {
+      _classCallCheck(this, Defaults);
+
+      this.opts = opts;
+    }
+
+    _createClass(Defaults, [{
+      key: "line",
+      value: function line() {
+        return {
+          chart: {
+            animations: {
+              easing: 'swing'
+            }
+          },
+          dataLabels: {
+            enabled: false
+          },
+          stroke: {
+            width: 5,
+            curve: 'straight'
+          },
+          markers: {
+            size: 0,
+            hover: {
+              sizeOffset: 6
+            }
+          },
+          xaxis: {
+            crosshairs: {
+              width: 1
+            }
+          }
+        };
+      }
+    }, {
+      key: "sparkline",
+      value: function sparkline(defaults) {
+        this.opts.yaxis[0].labels.show = false;
+        this.opts.yaxis[0].floating = true;
+        var ret = {
+          grid: {
+            show: false,
+            padding: {
+              left: 0,
+              right: 0,
+              top: 0,
+              bottom: 0
+            }
+          },
+          legend: {
+            show: false
+          },
+          xaxis: {
+            labels: {
+              show: false
+            },
+            tooltip: {
+              enabled: false
+            },
+            axisBorder: {
+              show: false
+            }
+          },
+          chart: {
+            toolbar: {
+              show: false
+            },
+            zoom: {
+              enabled: false
+            }
+          },
+          dataLabels: {
+            enabled: false
+          }
+        };
+        return Utils.extend(defaults, ret);
+      }
+    }, {
+      key: "bar",
+      value: function bar() {
+        return {
+          chart: {
+            stacked: false,
+            animations: {
+              easing: 'swing'
+            }
+          },
+          plotOptions: {
+            bar: {
+              dataLabels: {
+                position: 'center'
+              }
+            }
+          },
+          dataLabels: {
+            style: {
+              colors: ['#fff']
+            }
+          },
+          stroke: {
+            width: 0
+          },
+          fill: {
+            opacity: 0.85
+          },
+          legend: {
+            markers: {
+              shape: 'square',
+              radius: 2,
+              size: 8
+            }
+          },
+          tooltip: {
+            shared: false
+          },
+          xaxis: {
+            tooltip: {
+              enabled: false
+            },
+            crosshairs: {
+              width: 'barWidth',
+              position: 'back',
+              fill: {
+                type: 'gradient'
+              },
+              dropShadow: {
+                enabled: false
+              },
+              stroke: {
+                width: 0
+              }
+            }
+          }
+        };
+      }
+    }, {
+      key: "candlestick",
+      value: function candlestick() {
+        return {
+          stroke: {
+            width: 1,
+            colors: ['#333']
+          },
+          dataLabels: {
+            enabled: false
+          },
+          tooltip: {
+            shared: true,
+            custom: function custom(_ref) {
+              var seriesIndex = _ref.seriesIndex,
+                  dataPointIndex = _ref.dataPointIndex,
+                  w = _ref.w;
+              var o = w.globals.seriesCandleO[seriesIndex][dataPointIndex];
+              var h = w.globals.seriesCandleH[seriesIndex][dataPointIndex];
+              var l = w.globals.seriesCandleL[seriesIndex][dataPointIndex];
+              var c = w.globals.seriesCandleC[seriesIndex][dataPointIndex];
+              return '<div class="apexcharts-tooltip-candlestick">' + '<div>Open: <span class="value">' + o + '</span></div>' + '<div>High: <span class="value">' + h + '</span></div>' + '<div>Low: <span class="value">' + l + '</span></div>' + '<div>Close: <span class="value">' + c + '</span></div>' + '</div>';
+            }
+          },
+          states: {
+            active: {
+              filter: {
+                type: 'none'
+              }
+            }
+          },
+          xaxis: {
+            crosshairs: {
+              width: 1
+            }
+          }
+        };
+      }
+    }, {
+      key: "rangeBar",
+      value: function rangeBar() {
+        return {
+          stroke: {
+            width: 0
+          },
+          plotOptions: {
+            bar: {
+              dataLabels: {
+                position: 'center'
+              }
+            }
+          },
+          dataLabels: {
+            enabled: false,
+            formatter: function formatter(val, _ref2) {
+              var ctx = _ref2.ctx,
+                  seriesIndex = _ref2.seriesIndex,
+                  dataPointIndex = _ref2.dataPointIndex,
+                  w = _ref2.w;
+              var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex];
+              var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex];
+              return end - start;
+            },
+            style: {
+              colors: ['#fff']
+            }
+          },
+          tooltip: {
+            shared: false,
+            followCursor: true,
+            custom: function custom(_ref3) {
+              var ctx = _ref3.ctx,
+                  seriesIndex = _ref3.seriesIndex,
+                  dataPointIndex = _ref3.dataPointIndex,
+                  w = _ref3.w;
+              var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex];
+              var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex];
+              var startVal = '';
+              var endVal = '';
+              var color = w.globals.colors[seriesIndex];
+
+              if (w.config.tooltip.x.formatter === undefined) {
+                if (w.config.xaxis.type === 'datetime') {
+                  var datetimeObj = new DateTime(ctx);
+                  startVal = datetimeObj.formatDate(new Date(start), w.config.tooltip.x.format, true, true);
+                  endVal = datetimeObj.formatDate(new Date(end), w.config.tooltip.x.format, true, true);
+                } else {
+                  startVal = start;
+                  endVal = end;
+                }
+              } else {
+                startVal = w.config.tooltip.x.formatter(start);
+                endVal = w.config.tooltip.x.formatter(end);
+              }
+
+              var ylabel = w.globals.labels[dataPointIndex];
+              return '<div class="apexcharts-tooltip-rangebar">' + '<div> <span class="series-name" style="color: ' + color + '">' + (w.config.series[seriesIndex].name ? w.config.series[seriesIndex].name : '') + '</span></div>' + '<div> <span class="category">' + ylabel + ': </span> <span class="value start-value">' + startVal + '</span> <span class="separator">-</span> <span class="value end-value">' + endVal + '</span></div>' + '</div>';
+            }
+          },
+          xaxis: {
+            tooltip: {
+              enabled: false
+            },
+            crosshairs: {
+              stroke: {
+                width: 0
+              }
+            }
+          }
+        };
+      }
+    }, {
+      key: "area",
+      value: function area() {
+        return {
+          stroke: {
+            width: 4
+          },
+          fill: {
+            type: 'gradient',
+            gradient: {
+              inverseColors: false,
+              shade: 'light',
+              type: 'vertical',
+              opacityFrom: 0.65,
+              opacityTo: 0.5,
+              stops: [0, 100, 100]
+            }
+          },
+          markers: {
+            size: 0,
+            hover: {
+              sizeOffset: 6
+            }
+          },
+          tooltip: {
+            followCursor: false
+          }
+        };
+      }
+    }, {
+      key: "brush",
+      value: function brush(defaults) {
+        var ret = {
+          chart: {
+            toolbar: {
+              autoSelected: 'selection',
+              show: false
+            },
+            zoom: {
+              enabled: false
+            }
+          },
+          dataLabels: {
+            enabled: false
+          },
+          stroke: {
+            width: 1
+          },
+          tooltip: {
+            enabled: false
+          },
+          xaxis: {
+            tooltip: {
+              enabled: false
+            }
+          }
+        };
+        return Utils.extend(defaults, ret);
+      }
+    }, {
+      key: "stacked100",
+      value: function stacked100() {
+        var _this = this;
+
+        this.opts.dataLabels = this.opts.dataLabels || {};
+        this.opts.dataLabels.formatter = this.opts.dataLabels.formatter || undefined;
+        var existingDataLabelFormatter = this.opts.dataLabels.formatter;
+        this.opts.yaxis.forEach(function (yaxe, index) {
+          _this.opts.yaxis[index].min = 0;
+          _this.opts.yaxis[index].max = 100;
+        });
+        var isBar = this.opts.chart.type === 'bar';
+
+        if (isBar) {
+          this.opts.dataLabels.formatter = existingDataLabelFormatter || function (val) {
+            if (typeof val === 'number') {
+              return val ? val.toFixed(0) + '%' : val;
+            }
+
+            return val;
+          };
+        }
+      } // This function removes the left and right spacing in chart for line/area/scatter if xaxis type = category for those charts by converting xaxis = numeric. Numeric/Datetime xaxis prevents the unnecessary spacing in the left/right of the chart area
+
+    }, {
+      key: "bubble",
+      value: function bubble() {
+        return {
+          dataLabels: {
+            style: {
+              colors: ['#fff']
+            }
+          },
+          tooltip: {
+            shared: false,
+            intersect: true
+          },
+          xaxis: {
+            crosshairs: {
+              width: 0
+            }
+          },
+          fill: {
+            type: 'solid',
+            gradient: {
+              shade: 'light',
+              inverse: true,
+              shadeIntensity: 0.55,
+              opacityFrom: 0.4,
+              opacityTo: 0.8
+            }
+          }
+        };
+      }
+    }, {
+      key: "scatter",
+      value: function scatter() {
+        return {
+          dataLabels: {
+            enabled: false
+          },
+          tooltip: {
+            shared: false,
+            intersect: true
+          },
+          markers: {
+            size: 6,
+            strokeWidth: 2,
+            hover: {
+              sizeOffset: 2
+            }
+          }
+        };
+      }
+    }, {
+      key: "heatmap",
+      value: function heatmap() {
+        return {
+          chart: {
+            stacked: false,
+            zoom: {
+              enabled: false
+            }
+          },
+          fill: {
+            opacity: 1
+          },
+          dataLabels: {
+            style: {
+              colors: ['#fff']
+            }
+          },
+          stroke: {
+            colors: ['#fff']
+          },
+          tooltip: {
+            followCursor: true,
+            marker: {
+              show: false
+            },
+            x: {
+              show: false
+            }
+          },
+          legend: {
+            position: 'top',
+            markers: {
+              shape: 'square',
+              size: 10,
+              offsetY: 2
+            }
+          },
+          grid: {
+            padding: {
+              right: 20
+            }
+          }
+        };
+      }
+    }, {
+      key: "pie",
+      value: function pie() {
+        return {
+          chart: {
+            toolbar: {
+              show: false
+            }
+          },
+          plotOptions: {
+            pie: {
+              donut: {
+                labels: {
+                  show: false
+                }
+              }
+            }
+          },
+          dataLabels: {
+            formatter: function formatter(val) {
+              return val.toFixed(1) + '%';
+            },
+            style: {
+              colors: ['#fff']
+            },
+            dropShadow: {
+              enabled: true
+            }
+          },
+          stroke: {
+            colors: ['#fff']
+          },
+          fill: {
+            opacity: 1,
+            gradient: {
+              shade: 'dark',
+              shadeIntensity: 0.35,
+              inverseColors: false,
+              stops: [0, 100, 100]
+            }
+          },
+          padding: {
+            right: 0,
+            left: 0
+          },
+          tooltip: {
+            theme: 'dark',
+            fillSeriesColor: true
+          },
+          legend: {
+            position: 'right'
+          }
+        };
+      }
+    }, {
+      key: "donut",
+      value: function donut() {
+        return {
+          chart: {
+            toolbar: {
+              show: false
+            }
+          },
+          dataLabels: {
+            formatter: function formatter(val) {
+              return val.toFixed(1) + '%';
+            },
+            style: {
+              colors: ['#fff']
+            },
+            dropShadow: {
+              enabled: true
+            }
+          },
+          stroke: {
+            colors: ['#fff']
+          },
+          fill: {
+            opacity: 1,
+            gradient: {
+              shade: 'dark',
+              shadeIntensity: 0.4,
+              inverseColors: false,
+              type: 'vertical',
+              opacityFrom: 1,
+              opacityTo: 1,
+              stops: [70, 98, 100]
+            }
+          },
+          padding: {
+            right: 0,
+            left: 0
+          },
+          tooltip: {
+            theme: 'dark',
+            fillSeriesColor: true
+          },
+          legend: {
+            position: 'right'
+          }
+        };
+      }
+    }, {
+      key: "radar",
+      value: function radar() {
+        this.opts.yaxis[0].labels.style.fontSize = '13px';
+        this.opts.yaxis[0].labels.offsetY = 6;
+        return {
+          dataLabels: {
+            enabled: true,
+            style: {
+              colors: ['#a8a8a8'],
+              fontSize: '11px'
+            }
+          },
+          stroke: {
+            width: 2
+          },
+          markers: {
+            size: 3,
+            strokeWidth: 1,
+            strokeOpacity: 1
+          },
+          fill: {
+            opacity: 0.2
+          },
+          tooltip: {
+            shared: false,
+            intersect: true,
+            followCursor: true
+          },
+          grid: {
+            show: false
+          },
+          xaxis: {
+            tooltip: {
+              enabled: false
+            },
+            crosshairs: {
+              show: false
+            }
+          }
+        };
+      }
+    }, {
+      key: "radialBar",
+      value: function radialBar() {
+        return {
+          chart: {
+            animations: {
+              dynamicAnimation: {
+                enabled: true,
+                speed: 800
+              }
+            },
+            toolbar: {
+              show: false
+            }
+          },
+          fill: {
+            gradient: {
+              shade: 'dark',
+              shadeIntensity: 0.4,
+              inverseColors: false,
+              type: 'diagonal2',
+              opacityFrom: 1,
+              opacityTo: 1,
+              stops: [70, 98, 100]
+            }
+          },
+          padding: {
+            right: 0,
+            left: 0
+          },
+          legend: {
+            show: false,
+            position: 'right'
+          },
+          tooltip: {
+            enabled: false,
+            fillSeriesColor: true
+          }
+        };
+      }
+    }], [{
+      key: "convertCatToNumeric",
+      value: function convertCatToNumeric(opts) {
+        opts.xaxis.type = 'numeric';
+        opts.xaxis.convertedCatToNumeric = true;
+        opts.xaxis.labels = opts.xaxis.labels || {};
+
+        opts.xaxis.labels.formatter = opts.xaxis.labels.formatter || function (val) {
+          return val;
+        };
+
+        opts.chart = opts.chart || {};
+        opts.chart.zoom = opts.chart.zoom || window.Apex.chart && window.Apex.chart.zoom || {};
+        var defaultFormatter = opts.xaxis.labels.formatter;
+        var labels = opts.xaxis.categories && opts.xaxis.categories.length ? opts.xaxis.categories : opts.labels;
+
+        if (labels && labels.length) {
+          opts.xaxis.labels.formatter = function (val) {
+            return defaultFormatter(labels[val - 1]);
+          };
+        }
+
+        opts.xaxis.categories = [];
+        opts.labels = [];
+        opts.chart.zoom.enabled = opts.chart.zoom.enabled || false;
+        return opts;
+      }
+    }]);
+
+    return Defaults;
+  }();
+
+  /*
+   ** Util functions which are dependent on ApexCharts instance
+   */
+  var CoreUtils =
+  /*#__PURE__*/
+  function () {
+    function CoreUtils(ctx) {
+      _classCallCheck(this, CoreUtils);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    }
+
+    _createClass(CoreUtils, [{
+      key: "getStackedSeriesTotals",
+
+      /**
+       * @memberof CoreUtils
+       * returns the sum of all individual values in a multiple stacked series
+       * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]]
+       *  @return [34,36,48,13]
+       **/
+      value: function getStackedSeriesTotals() {
+        var w = this.w;
+        var total = [];
+
+        for (var i = 0; i < w.globals.series[w.globals.maxValsInArrayIndex].length; i++) {
+          var t = 0;
+
+          for (var j = 0; j < w.globals.series.length; j++) {
+            t += w.globals.series[j][i];
+          }
+
+          total.push(t);
+        }
+
+        w.globals.stackedSeriesTotals = total;
+        return total;
+      } // get total of the all values inside all series
+
+    }, {
+      key: "getSeriesTotalByIndex",
+      value: function getSeriesTotalByIndex() {
+        var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+
+        if (index === null) {
+          // non-plot chart types - pie / donut / circle
+          return this.w.config.series.reduce(function (acc, cur) {
+            return acc + cur;
+          }, 0);
+        } else {
+          // axis charts - supporting multiple series
+          return this.w.globals.series[index].reduce(function (acc, cur) {
+            return acc + cur;
+          }, 0);
+        }
+      }
+    }, {
+      key: "isSeriesNull",
+      value: function isSeriesNull() {
+        var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+        var r = [];
+
+        if (index === null) {
+          // non-plot chart types - pie / donut / circle
+          r = this.w.config.series.filter(function (d) {
+            return d !== null;
+          });
+        } else {
+          // axis charts - supporting multiple series
+          r = this.w.globals.series[index].filter(function (d) {
+            return d !== null;
+          });
+        }
+
+        return r.length === 0;
+      }
+    }, {
+      key: "seriesHaveSameValues",
+      value: function seriesHaveSameValues(index) {
+        return this.w.globals.series[index].every(function (val, i, arr) {
+          return val === arr[0];
+        });
+      } // maxValsInArrayIndex is the index of series[] which has the largest number of items
+
+    }, {
+      key: "getLargestSeries",
+      value: function getLargestSeries() {
+        var w = this.w;
+        w.globals.maxValsInArrayIndex = w.globals.series.map(function (a) {
+          return a.length;
+        }).indexOf(Math.max.apply(Math, w.globals.series.map(function (a) {
+          return a.length;
+        })));
+      }
+    }, {
+      key: "getLargestMarkerSize",
+      value: function getLargestMarkerSize() {
+        var w = this.w;
+        var size = 0;
+        w.globals.markers.size.forEach(function (m) {
+          size = Math.max(size, m);
+        });
+        w.globals.markers.largestSize = size;
+        return size;
+      }
+      /**
+       * @memberof Core
+       * returns the sum of all values in a series
+       * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]]
+       *  @return [120, 11]
+       **/
+
+    }, {
+      key: "getSeriesTotals",
+      value: function getSeriesTotals() {
+        var w = this.w;
+        w.globals.seriesTotals = w.globals.series.map(function (ser, index) {
+          var total = 0;
+
+          if (Array.isArray(ser)) {
+            for (var j = 0; j < ser.length; j++) {
+              total += ser[j];
+            }
+          } else {
+            // for pie/donuts/gauges
+            total += ser;
+          }
+
+          return total;
+        });
+      }
+    }, {
+      key: "getSeriesTotalsXRange",
+      value: function getSeriesTotalsXRange(minX, maxX) {
+        var w = this.w;
+        var seriesTotalsXRange = w.globals.series.map(function (ser, index) {
+          var total = 0;
+
+          for (var j = 0; j < ser.length; j++) {
+            if (w.globals.seriesX[index][j] > minX && w.globals.seriesX[index][j] < maxX) {
+              total += ser[j];
+            }
+          }
+
+          return total;
+        });
+        return seriesTotalsXRange;
+      }
+      /**
+       * @memberof CoreUtils
+       * returns the percentage value of all individual values which can be used in a 100% stacked series
+       * Eg. w.globals.series = [[32, 33, 43, 12], [2, 3, 5, 1]]
+       *  @return [[94.11, 91.66, 89.58, 92.30], [5.88, 8.33, 10.41, 7.7]]
+       **/
+
+    }, {
+      key: "getPercentSeries",
+      value: function getPercentSeries() {
+        var w = this.w;
+        w.globals.seriesPercent = w.globals.series.map(function (ser, index) {
+          var seriesPercent = [];
+
+          if (Array.isArray(ser)) {
+            for (var j = 0; j < ser.length; j++) {
+              var total = w.globals.stackedSeriesTotals[j];
+              var percent = 100 * ser[j] / total;
+              seriesPercent.push(percent);
+            }
+          } else {
+            var _total = w.globals.seriesTotals.reduce(function (acc, val) {
+              return acc + val;
+            }, 0);
+
+            var _percent = 100 * ser / _total;
+
+            seriesPercent.push(_percent);
+          }
+
+          return seriesPercent;
+        });
+      }
+    }, {
+      key: "getCalculatedRatios",
+      value: function getCalculatedRatios() {
+        var gl = this.w.globals;
+        var yRatio = [];
+        var invertedYRatio = 0;
+        var xRatio = 0;
+        var initialXRatio = 0;
+        var invertedXRatio = 0;
+        var zRatio = 0;
+        var baseLineY = [];
+        var baseLineInvertedY = 0.1;
+        var baseLineX = 0;
+        gl.yRange = [];
+
+        if (gl.isMultipleYAxis) {
+          for (var i = 0; i < gl.minYArr.length; i++) {
+            gl.yRange.push(Math.abs(gl.minYArr[i] - gl.maxYArr[i]));
+            baseLineY.push(0);
+          }
+        } else {
+          gl.yRange.push(Math.abs(gl.minY - gl.maxY));
+        }
+
+        gl.xRange = Math.abs(gl.maxX - gl.minX);
+        gl.zRange = Math.abs(gl.maxZ - gl.minZ); // multiple y axis
+
+        for (var _i = 0; _i < gl.yRange.length; _i++) {
+          yRatio.push(gl.yRange[_i] / gl.gridHeight);
+        }
+
+        xRatio = gl.xRange / gl.gridWidth;
+        initialXRatio = Math.abs(gl.initialmaxX - gl.initialminX) / gl.gridWidth;
+        invertedYRatio = gl.yRange / gl.gridWidth;
+        invertedXRatio = gl.xRange / gl.gridHeight;
+        zRatio = gl.zRange / gl.gridHeight * 16;
+
+        if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) {
+          // Negative numbers present in series
+          gl.hasNegs = true;
+        }
+
+        if (gl.isMultipleYAxis) {
+          baseLineY = []; // baseline variables is the 0 of the yaxis which will be needed when there are negatives
+
+          for (var _i2 = 0; _i2 < yRatio.length; _i2++) {
+            baseLineY.push(-gl.minYArr[_i2] / yRatio[_i2]);
+          }
+        } else {
+          baseLineY.push(-gl.minY / yRatio[0]);
+
+          if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) {
+            baseLineInvertedY = -gl.minY / invertedYRatio; // this is for bar chart
+
+            baseLineX = gl.minX / xRatio;
+          }
+        }
+
+        return {
+          yRatio: yRatio,
+          invertedYRatio: invertedYRatio,
+          zRatio: zRatio,
+          xRatio: xRatio,
+          initialXRatio: initialXRatio,
+          invertedXRatio: invertedXRatio,
+          baseLineInvertedY: baseLineInvertedY,
+          baseLineY: baseLineY,
+          baseLineX: baseLineX
+        };
+      }
+    }, {
+      key: "getLogSeries",
+      value: function getLogSeries(series) {
+        var w = this.w;
+        w.globals.seriesLog = series.map(function (s, i) {
+          if (w.config.yaxis[i] && w.config.yaxis[i].logarithmic) {
+            return s.map(function (d) {
+              if (d === null) return null;
+              var logVal = (Math.log(d) - Math.log(w.globals.minYArr[i])) / (Math.log(w.globals.maxYArr[i]) - Math.log(w.globals.minYArr[i]));
+              return logVal;
+            });
+          } else {
+            return s;
+          }
+        });
+        return w.globals.seriesLog;
+      }
+    }, {
+      key: "getLogYRatios",
+      value: function getLogYRatios(yRatio) {
+        var _this = this;
+
+        var w = this.w;
+        var gl = this.w.globals;
+        gl.yLogRatio = yRatio.slice();
+        gl.logYRange = gl.yRange.map(function (yRange, i) {
+          if (w.config.yaxis[i] && _this.w.config.yaxis[i].logarithmic) {
+            var maxY = -Number.MAX_VALUE;
+            var minY = Number.MIN_VALUE;
+            var range = 1;
+            gl.seriesLog.forEach(function (s, si) {
+              s.forEach(function (v) {
+                if (w.config.yaxis[si] && w.config.yaxis[si].logarithmic) {
+                  maxY = Math.max(v, maxY);
+                  minY = Math.min(v, minY);
+                }
+              });
+            });
+            range = Math.pow(gl.yRange[i], Math.abs(minY - maxY) / gl.yRange[i]);
+            gl.yLogRatio[i] = range / gl.gridHeight;
+            return range;
+          }
+        });
+        return gl.yLogRatio;
+      } // Some config objects can be array - and we need to extend them correctly
+
+    }], [{
+      key: "checkComboSeries",
+      value: function checkComboSeries(series) {
+        var comboCharts = false;
+        var comboChartsHasBars = false; // if user specified a type in series too, turn on comboCharts flag
+
+        if (series.length && typeof series[0].type !== 'undefined') {
+          comboCharts = true;
+          series.forEach(function (s) {
+            if (s.type === 'bar' || s.type === 'column') {
+              comboChartsHasBars = true;
+            }
+          });
+        }
+
+        return {
+          comboCharts: comboCharts,
+          comboChartsHasBars: comboChartsHasBars
+        };
+      }
+    }, {
+      key: "extendArrayProps",
+      value: function extendArrayProps(configInstance, options) {
+        if (options.yaxis) {
+          options = configInstance.extendYAxis(options);
+        }
+
+        if (options.annotations) {
+          if (options.annotations.yaxis) {
+            options = configInstance.extendYAxisAnnotations(options);
+          }
+
+          if (options.annotations.xaxis) {
+            options = configInstance.extendXAxisAnnotations(options);
+          }
+
+          if (options.annotations.points) {
+            options = configInstance.extendPointAnnotations(options);
+          }
+        }
+
+        return options;
+      }
+    }]);
+
+    return CoreUtils;
+  }();
+
+  /**
+   * ApexCharts Config Class for extending user options with pre-defined ApexCharts config.
+   *
+   * @module Config
+   **/
+
+  var Config =
+  /*#__PURE__*/
+  function () {
+    function Config(opts) {
+      _classCallCheck(this, Config);
+
+      this.opts = opts;
+    }
+
+    _createClass(Config, [{
+      key: "init",
+      value: function init() {
+        var opts = this.opts;
+        var options = new Options();
+        var defaults = new Defaults(opts);
+        this.chartType = opts.chart.type;
+
+        if (this.chartType === 'histogram') {
+          // technically, a histogram can be drawn by a column chart with no spaces in between
+          opts.chart.type = 'bar';
+          opts = Utils.extend({
+            plotOptions: {
+              bar: {
+                columnWidth: '99.99%'
+              }
+            }
+          }, opts);
+        }
+
+        opts.series = this.checkEmptySeries(opts.series);
+        opts = this.extendYAxis(opts);
+        opts = this.extendAnnotations(opts);
+        var config = options.init();
+        var newDefaults = {};
+
+        if (opts && _typeof(opts) === 'object') {
+          var chartDefaults = {};
+
+          switch (this.chartType) {
+            case 'line':
+              chartDefaults = defaults.line();
+              break;
+
+            case 'area':
+              chartDefaults = defaults.area();
+              break;
+
+            case 'bar':
+              chartDefaults = defaults.bar();
+              break;
+
+            case 'candlestick':
+              chartDefaults = defaults.candlestick();
+              break;
+
+            case 'rangeBar':
+              chartDefaults = defaults.rangeBar();
+              break;
+
+            case 'histogram':
+              chartDefaults = defaults.bar();
+              break;
+
+            case 'bubble':
+              chartDefaults = defaults.bubble();
+              break;
+
+            case 'scatter':
+              chartDefaults = defaults.scatter();
+              break;
+
+            case 'heatmap':
+              chartDefaults = defaults.heatmap();
+              break;
+
+            case 'pie':
+              chartDefaults = defaults.pie();
+              break;
+
+            case 'donut':
+              chartDefaults = defaults.donut();
+              break;
+
+            case 'radar':
+              chartDefaults = defaults.radar();
+              break;
+
+            case 'radialBar':
+              chartDefaults = defaults.radialBar();
+              break;
+
+            default:
+              chartDefaults = defaults.line();
+          }
+
+          if (opts.chart.brush && opts.chart.brush.enabled) {
+            chartDefaults = defaults.brush(chartDefaults);
+          }
+
+          if (opts.chart.stacked && opts.chart.stackType === '100%') {
+            defaults.stacked100();
+          } // If user has specified a dark theme, make the tooltip dark too
+
+
+          this.checkForDarkTheme(window.Apex); // check global window Apex options
+
+          this.checkForDarkTheme(opts); // check locally passed options
+
+          opts.xaxis = opts.xaxis || window.Apex.xaxis || {};
+          var combo = CoreUtils.checkComboSeries(opts.series);
+
+          if ((opts.chart.type === 'line' || opts.chart.type === 'area' || opts.chart.type === 'scatter') && !combo.comboChartsHasBars && opts.xaxis.type !== 'datetime' && opts.xaxis.type !== 'numeric' && opts.xaxis.tickPlacement !== 'between') {
+            opts = Defaults.convertCatToNumeric(opts);
+          }
+
+          if (opts.chart.sparkline && opts.chart.sparkline.enabled || window.Apex.chart && window.Apex.chart.sparkline && window.Apex.chart.sparkline.enabled) {
+            chartDefaults = defaults.sparkline(chartDefaults);
+          }
+
+          newDefaults = Utils.extend(config, chartDefaults);
+        } // config should cascade in this fashion
+        // default-config < global-apex-variable-config < user-defined-config
+        // get GLOBALLY defined options and merge with the default config
+
+
+        var mergedWithDefaultConfig = Utils.extend(newDefaults, window.Apex); // get the merged config and extend with user defined config
+
+        config = Utils.extend(mergedWithDefaultConfig, opts); // some features are not supported. those mismatches should be handled
+
+        config = this.handleUserInputErrors(config);
+        return config;
+      }
+    }, {
+      key: "extendYAxis",
+      value: function extendYAxis(opts) {
+        var options = new Options();
+
+        if (typeof opts.yaxis === 'undefined') {
+          opts.yaxis = {};
+        } // extend global yaxis config (only if object is provided / not an array)
+
+
+        if (opts.yaxis.constructor !== Array && window.Apex.yaxis && window.Apex.yaxis.constructor !== Array) {
+          opts.yaxis = Utils.extend(opts.yaxis, window.Apex.yaxis);
+        } // as we can't extend nested object's array with extend, we need to do it first
+        // user can provide either an array or object in yaxis config
+
+
+        if (opts.yaxis.constructor !== Array) {
+          // convert the yaxis to array if user supplied object
+          opts.yaxis = [Utils.extend(options.yAxis, opts.yaxis)];
+        } else {
+          opts.yaxis = Utils.extendArray(opts.yaxis, options.yAxis);
+        }
+
+        return opts;
+      } // annotations also accepts array, so we need to extend them manually
+
+    }, {
+      key: "extendAnnotations",
+      value: function extendAnnotations(opts) {
+        if (typeof opts.annotations === 'undefined') {
+          opts.annotations = {};
+          opts.annotations.yaxis = [];
+          opts.annotations.xaxis = [];
+          opts.annotations.points = [];
+        }
+
+        opts = this.extendYAxisAnnotations(opts);
+        opts = this.extendXAxisAnnotations(opts);
+        opts = this.extendPointAnnotations(opts);
+        return opts;
+      }
+    }, {
+      key: "extendYAxisAnnotations",
+      value: function extendYAxisAnnotations(opts) {
+        var options = new Options();
+        opts.annotations.yaxis = Utils.extendArray(typeof opts.annotations.yaxis !== 'undefined' ? opts.annotations.yaxis : [], options.yAxisAnnotation);
+        return opts;
+      }
+    }, {
+      key: "extendXAxisAnnotations",
+      value: function extendXAxisAnnotations(opts) {
+        var options = new Options();
+        opts.annotations.xaxis = Utils.extendArray(typeof opts.annotations.xaxis !== 'undefined' ? opts.annotations.xaxis : [], options.xAxisAnnotation);
+        return opts;
+      }
+    }, {
+      key: "extendPointAnnotations",
+      value: function extendPointAnnotations(opts) {
+        var options = new Options();
+        opts.annotations.points = Utils.extendArray(typeof opts.annotations.points !== 'undefined' ? opts.annotations.points : [], options.pointAnnotation);
+        return opts;
+      }
+    }, {
+      key: "checkForDarkTheme",
+      value: function checkForDarkTheme(opts) {
+        if (opts.theme && opts.theme.mode === 'dark') {
+          if (!opts.tooltip) {
+            opts.tooltip = {};
+          }
+
+          if (opts.tooltip.theme !== 'light') {
+            opts.tooltip.theme = 'dark';
+          }
+
+          if (!opts.chart.foreColor) {
+            opts.chart.foreColor = '#f6f7f8';
+          }
+
+          if (!opts.theme.palette) {
+            opts.theme.palette = 'palette4';
+          }
+        }
+      }
+    }, {
+      key: "checkEmptySeries",
+      value: function checkEmptySeries(ser) {
+        if (ser.length === 0) {
+          return [{
+            data: []
+          }];
+        }
+
+        return ser;
+      }
+    }, {
+      key: "handleUserInputErrors",
+      value: function handleUserInputErrors(opts) {
+        var config = opts; // conflicting tooltip option. intersect makes sure to focus on 1 point at a time. Shared cannot be used along with it
+
+        if (config.tooltip.shared && config.tooltip.intersect) {
+          throw new Error('tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.');
+        }
+
+        if (config.chart.scroller) {
+          console.warn('Scroller has been deprecated since v2.0.0. Please remove the configuration for chart.scroller');
+        }
+
+        if ((config.chart.type === 'bar' || config.chart.type === 'rangeBar') && config.plotOptions.bar.horizontal) {
+          // No multiple yaxis for bars
+          if (config.yaxis.length > 1) {
+            throw new Error('Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false');
+          } // if yaxis is reversed in horizontal bar chart, you should draw the y-axis on right side
+
+
+          if (config.yaxis[0].reversed) {
+            config.yaxis[0].opposite = true;
+          }
+
+          config.xaxis.tooltip.enabled = false; // no xaxis tooltip for horizontal bar
+
+          config.yaxis[0].tooltip.enabled = false; // no xaxis tooltip for horizontal bar
+
+          config.chart.zoom.enabled = false; // no zooming for horz bars
+        }
+
+        if (config.chart.type === 'bar' || config.chart.type === 'rangeBar') {
+          if (config.tooltip.shared) {
+            if (config.xaxis.crosshairs.width === 'barWidth' && config.series.length > 1) {
+              console.warn('crosshairs.width = "barWidth" is only supported in single series, not in a multi-series barChart.');
+              config.xaxis.crosshairs.width = 'tickWidth';
+            }
+
+            if (config.plotOptions.bar.horizontal) {
+              config.states.hover.type = 'none';
+              config.tooltip.shared = false;
+            }
+
+            if (!config.tooltip.followCursor) {
+              console.warn('followCursor option in shared columns cannot be turned off. Please set %ctooltip.followCursor: true', 'color: blue;');
+              config.tooltip.followCursor = true;
+            }
+          }
+        }
+
+        if (config.chart.type === 'candlestick') {
+          if (config.yaxis[0].reversed) {
+            console.warn('Reversed y-axis in candlestick chart is not supported.');
+            config.yaxis[0].reversed = false;
+          }
+        }
+
+        if (config.chart.group && config.yaxis[0].labels.minWidth === 0) {
+          console.warn('It looks like you have multiple charts in synchronization. You must provide yaxis.labels.minWidth which must be EQUAL for all grouped charts to prevent incorrect behaviour.');
+        } // if user supplied array for stroke width, it will only be applicable to line/area charts, for any other charts, revert back to Number
+
+
+        if (Array.isArray(config.stroke.width)) {
+          if (config.chart.type !== 'line' && config.chart.type !== 'area') {
+            console.warn('stroke.width option accepts array only for line and area charts. Reverted back to Number');
+            config.stroke.width = config.stroke.width[0];
+          }
+        }
+
+        return config;
+      }
+    }]);
+
+    return Config;
+  }();
+
+  var Globals =
+  /*#__PURE__*/
+  function () {
+    function Globals() {
+      _classCallCheck(this, Globals);
+    }
+
+    _createClass(Globals, [{
+      key: "globalVars",
+      value: function globalVars(config) {
+        return {
+          chartID: null,
+          // chart ID - apexcharts-cuid
+          cuid: null,
+          // chart ID - random numbers excluding "apexcharts" part
+          events: {
+            beforeMount: [],
+            mounted: [],
+            updated: [],
+            clicked: [],
+            selection: [],
+            dataPointSelection: [],
+            zoomed: [],
+            scrolled: []
+          },
+          colors: [],
+          clientX: null,
+          clientY: null,
+          fill: {
+            colors: []
+          },
+          stroke: {
+            colors: []
+          },
+          dataLabels: {
+            style: {
+              colors: []
+            }
+          },
+          radarPolygons: {
+            fill: {
+              colors: []
+            }
+          },
+          markers: {
+            colors: [],
+            size: config.markers.size,
+            largestSize: 0
+          },
+          animationEnded: false,
+          isTouchDevice: 'ontouchstart' in window || navigator.msMaxTouchPoints,
+          isDirty: false,
+          // chart has been updated after the initial render. This is different than dataChanged property. isDirty means user manually called some method to update
+          initialConfig: null,
+          // we will store the first config user has set to go back when user finishes interactions like zooming and come out of it
+          lastXAxis: [],
+          lastYAxis: [],
+          series: [],
+          // the MAIN series array (y values)
+          seriesRangeStart: [],
+          // the clone of series becomes the start in range
+          seriesRangeEnd: [],
+          // the end values in range chart
+          seriesPercent: [],
+          // the percentage values of the given series
+          seriesTotals: [],
+          stackedSeriesTotals: [],
+          seriesX: [],
+          // store the numeric x values in this array (x values)
+          seriesZ: [],
+          // The 3rd "Z" dimension for bubbles chart (z values)
+          labels: [],
+          // store the text to draw on x axis
+          // Don't mutate the labels, many things including tooltips depends on it!
+          timelineLabels: [],
+          // store the timeline Labels in another variable
+          invertedTimelineLabels: [],
+          // for rangebar timeline
+          seriesNames: [],
+          // same as labels, used in non axis charts
+          noLabelsProvided: false,
+          // if user didn't provide any categories/labels or x values, fallback to 1,2,3,4...
+          allSeriesCollapsed: false,
+          collapsedSeries: [],
+          // when user collapses a series, it goes into this array
+          collapsedSeriesIndices: [],
+          // this stores the index of the collapsedSeries instead of whole object for quick access
+          ancillaryCollapsedSeries: [],
+          // when user collapses an "alwaysVisible" series, it goes into this array
+          ancillaryCollapsedSeriesIndices: [],
+          // this stores the index of the ancillaryCollapsedSeries whose y-axis is always visible
+          risingSeries: [],
+          // when user re-opens a collapsed series, it goes here
+          dataFormatXNumeric: false,
+          // boolean value to indicate user has passed numeric x values
+          selectedDataPoints: [],
+          ignoreYAxisIndexes: [],
+          // when series are being collapsed in multiple y axes, ignore certain index
+          padHorizontal: 0,
+          maxValsInArrayIndex: 0,
+          zoomEnabled: config.chart.toolbar.autoSelected === 'zoom' && config.chart.toolbar.tools.zoom && config.chart.zoom.enabled,
+          panEnabled: config.chart.toolbar.autoSelected === 'pan' && config.chart.toolbar.tools.pan,
+          selectionEnabled: config.chart.toolbar.autoSelected === 'selection' && config.chart.toolbar.tools.selection,
+          yaxis: null,
+          minY: Number.MIN_VALUE,
+          //  is 5e-324, i.e. the smallest positive number
+          // NOTE: If there are multiple y axis, the first yaxis array element will be considered for all y values calculations. Rest all will be calculated based on that
+          maxY: -Number.MAX_VALUE,
+          // is -1.7976931348623157e+308
+          // NOTE: The above note for minY applies here as well
+          minYArr: [],
+          maxYArr: [],
+          maxX: -Number.MAX_VALUE,
+          // is -1.7976931348623157e+308
+          initialmaxX: -Number.MAX_VALUE,
+          minX: Number.MIN_VALUE,
+          //  is 5e-324, i.e. the smallest positive number
+          initialminX: Number.MIN_VALUE,
+          minZ: Number.MIN_VALUE,
+          // Max Z value in charts with Z axis
+          maxZ: -Number.MAX_VALUE,
+          // Max Z value in charts with Z axis
+          minXDiff: Number.MAX_VALUE,
+          mousedown: false,
+          lastClientPosition: {},
+          // don't reset this variable this the chart is destroyed. It is used to detect right or left mousemove in panning
+          visibleXRange: undefined,
+          yRange: [],
+          // this property is the absolute sum of positive and negative values [eg (-100 + 200 = 300)] - yAxis
+          zRange: 0,
+          // zAxis Range (for bubble charts)
+          xRange: 0,
+          // xAxis range
+          yValueDecimal: 0,
+          // are there floating numbers in the series. If yes, this represent the len of the decimals
+          total: 0,
+          SVGNS: 'http://www.w3.org/2000/svg',
+          // svg namespace
+          svgWidth: 0,
+          // the whole svg width
+          svgHeight: 0,
+          // the whole svg height
+          noData: false,
+          // whether there is any data to display or not
+          locale: {},
+          // the current locale values will be preserved here for global access
+          dom: {},
+          // for storing all dom nodes in this particular property
+          // elWrap: null, // the element that wraps everything
+          // elGraphical: null, // this contains lines/areas/bars/pies
+          // elGridRect: null, // paths going outside this area will be clipped
+          // elGridRectMask: null, // clipping will happen with this mask
+          // elGridRectMarkerMask: null, // clipping will happen with this mask
+          // elLegendWrap: null, // the whole legend area
+          // elDefs: null, // [defs] element
+          memory: {
+            methodsToExec: []
+          },
+          shouldAnimate: true,
+          skipLastTimelinelabel: false,
+          // when last label is cropped, skip drawing it
+          delayedElements: [],
+          // element which appear after animation has finished
+          axisCharts: true,
+          // chart type = line or area or bar
+          // (refer them also as plot charts in the code)
+          isXNumeric: false,
+          // bool: data was provided in a {[x,y], [x,y]} pattern
+          isDataXYZ: false,
+          // bool: data was provided in a {[x,y,z]} pattern
+          resized: false,
+          // bool: user has resized
+          resizeTimer: null,
+          // timeout function to make a small delay before
+          // drawing when user resized
+          comboCharts: false,
+          // bool: whether it's a combination of line/column
+          comboChartsHasBars: false,
+          // bool: whether it's a combination of line/column
+          dataChanged: false,
+          // bool: has data changed dynamically
+          previousPaths: [],
+          // array: when data is changed, it will animate from
+          // previous paths
+          seriesXvalues: [],
+          // we will need this in tooltip (it's x position)
+          // when we will have unequal x values, we will need
+          // some way to get x value depending on mouse pointer
+          seriesYvalues: [],
+          // we will need this when deciding which series
+          // user hovered on
+          seriesCandleO: [],
+          // candle stick open values
+          seriesCandleH: [],
+          // candle stick high values
+          seriesCandleL: [],
+          // candle stick low values
+          seriesCandleC: [],
+          // candle stick close values
+          allSeriesHasEqualX: true,
+          dataPoints: 0,
+          // the longest series length
+          pointsArray: [],
+          // store the points positions here to draw later on hover
+          // format is - [[x,y],[x,y]... [x,y]]
+          dataLabelsRects: [],
+          // store the positions of datalabels to prevent collision
+          lastDrawnDataLabelsIndexes: [],
+          hasNullValues: false,
+          // bool: whether series contains null values
+          easing: null,
+          // function: animation effect to apply
+          zoomed: false,
+          // whether user has zoomed or not
+          gridWidth: 0,
+          // drawable width of actual graphs (series paths)
+          gridHeight: 0,
+          // drawable height of actual graphs (series paths)
+          yAxisScale: [],
+          xAxisScale: null,
+          xAxisTicksPositions: [],
+          timescaleTicks: [],
+          rotateXLabels: false,
+          defaultLabels: false,
+          xLabelFormatter: undefined,
+          // formatter for x axis labels
+          yLabelFormatters: [],
+          xaxisTooltipFormatter: undefined,
+          // formatter for x axis tooltip
+          ttKeyFormatter: undefined,
+          ttVal: undefined,
+          ttZFormatter: undefined,
+          LINE_HEIGHT_RATIO: 1.618,
+          xAxisLabelsHeight: 0,
+          yAxisLabelsWidth: 0,
+          scaleX: 1,
+          scaleY: 1,
+          translateX: 0,
+          translateY: 0,
+          translateYAxisX: [],
+          yLabelsCoords: [],
+          yTitleCoords: [],
+          yAxisWidths: [],
+          translateXAxisY: 0,
+          translateXAxisX: 0,
+          tooltip: null,
+          tooltipOpts: null
+        };
+      }
+    }, {
+      key: "init",
+      value: function init(config) {
+        var globals = this.globalVars(config);
+        globals.initialConfig = Utils.extend({}, config);
+        globals.initialSeries = JSON.parse(JSON.stringify(globals.initialConfig.series));
+        globals.lastXAxis = JSON.parse(JSON.stringify(globals.initialConfig.xaxis));
+        globals.lastYAxis = JSON.parse(JSON.stringify(globals.initialConfig.yaxis));
+        return globals;
+      }
+    }]);
+
+    return Globals;
+  }();
+
+  /**
+   * ApexCharts Base Class for extending user options with pre-defined ApexCharts config.
+   *
+   * @module Base
+   **/
+
+  var Base =
+  /*#__PURE__*/
+  function () {
+    function Base(opts) {
+      _classCallCheck(this, Base);
+
+      this.opts = opts;
+    }
+
+    _createClass(Base, [{
+      key: "init",
+      value: function init() {
+        var config = new Config(this.opts).init();
+        var globals = new Globals().init(config);
+        var w = {
+          config: config,
+          globals: globals
+        };
+        return w;
+      }
+    }]);
+
+    return Base;
+  }();
+
+  /**
+   * ApexCharts Fill Class for setting fill options of the paths.
+   *
+   * @module Fill
+   **/
+
+  var Fill =
+  /*#__PURE__*/
+  function () {
+    function Fill(ctx) {
+      _classCallCheck(this, Fill);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.opts = null;
+      this.seriesIndex = 0;
+    }
+
+    _createClass(Fill, [{
+      key: "clippedImgArea",
+      value: function clippedImgArea(params) {
+        var w = this.w;
+        var cnf = w.config;
+        var svgW = parseInt(w.globals.gridWidth);
+        var svgH = parseInt(w.globals.gridHeight);
+        var size = svgW > svgH ? svgW : svgH;
+        var fillImg = params.image;
+        var imgWidth = 0;
+        var imgHeight = 0;
+
+        if (typeof params.width === 'undefined' && typeof params.height === 'undefined') {
+          if (cnf.fill.image.width !== undefined && cnf.fill.image.height !== undefined) {
+            imgWidth = cnf.fill.image.width + 1;
+            imgHeight = cnf.fill.image.height;
+          } else {
+            imgWidth = size + 1;
+            imgHeight = size;
+          }
+        } else {
+          imgWidth = params.width;
+          imgHeight = params.height;
+        }
+
+        var elPattern = document.createElementNS(w.globals.SVGNS, 'pattern');
+        Graphics.setAttrs(elPattern, {
+          id: params.patternID,
+          patternUnits: params.patternUnits ? params.patternUnits : 'userSpaceOnUse',
+          width: imgWidth + 'px',
+          height: imgHeight + 'px'
+        });
+        var elImage = document.createElementNS(w.globals.SVGNS, 'image');
+        elPattern.appendChild(elImage);
+        elImage.setAttributeNS('http://www.w3.org/1999/xlink', 'href', fillImg);
+        Graphics.setAttrs(elImage, {
+          x: 0,
+          y: 0,
+          preserveAspectRatio: 'none',
+          width: imgWidth + 'px',
+          height: imgHeight + 'px'
+        });
+        elImage.style.opacity = params.opacity;
+        w.globals.dom.elDefs.node.appendChild(elPattern);
+      }
+    }, {
+      key: "getSeriesIndex",
+      value: function getSeriesIndex(opts) {
+        var w = this.w;
+
+        if (w.config.chart.type === 'bar' && w.config.plotOptions.bar.distributed || w.config.chart.type === 'heatmap') {
+          this.seriesIndex = opts.seriesNumber;
+        } else {
+          this.seriesIndex = opts.seriesNumber % w.globals.series.length;
+        }
+
+        return this.seriesIndex;
+      }
+    }, {
+      key: "fillPath",
+      value: function fillPath(opts) {
+        var w = this.w;
+        this.opts = opts;
+        var cnf = this.w.config;
+        var pathFill;
+        var patternFill, gradientFill;
+        this.seriesIndex = this.getSeriesIndex(opts);
+        var fillColors = this.getFillColors();
+        var fillColor = fillColors[this.seriesIndex];
+
+        if (typeof fillColor === 'function') {
+          fillColor = fillColor({
+            seriesIndex: this.seriesIndex,
+            value: opts.value,
+            w: w
+          });
+        }
+
+        var fillType = this.getFillType(this.seriesIndex);
+        var fillOpacity = Array.isArray(cnf.fill.opacity) ? cnf.fill.opacity[this.seriesIndex] : cnf.fill.opacity;
+        var defaultColor = fillColor;
+
+        if (opts.color) {
+          fillColor = opts.color;
+        }
+
+        if (fillColor.indexOf('rgb') === -1) {
+          defaultColor = Utils.hexToRgba(fillColor, fillOpacity);
+        } else {
+          if (fillColor.indexOf('rgba') > -1) {
+            fillOpacity = 0 + '.' + Utils.getOpacityFromRGBA(fillColors[this.seriesIndex]);
+          }
+        }
+
+        if (fillType === 'pattern') {
+          patternFill = this.handlePatternFill(patternFill, fillColor, fillOpacity, defaultColor);
+        }
+
+        if (fillType === 'gradient') {
+          gradientFill = this.handleGradientFill(gradientFill, fillColor, fillOpacity, this.seriesIndex);
+        }
+
+        if (cnf.fill.image.src.length > 0 && fillType === 'image') {
+          if (opts.seriesNumber < cnf.fill.image.src.length) {
+            this.clippedImgArea({
+              opacity: fillOpacity,
+              image: cnf.fill.image.src[opts.seriesNumber],
+              patternUnits: opts.patternUnits,
+              patternID: "pattern".concat(w.globals.cuid).concat(opts.seriesNumber + 1)
+            });
+            pathFill = "url(#pattern".concat(w.globals.cuid).concat(opts.seriesNumber + 1, ")");
+          } else {
+            pathFill = defaultColor;
+          }
+        } else if (fillType === 'gradient') {
+          pathFill = gradientFill;
+        } else if (fillType === 'pattern') {
+          pathFill = patternFill;
+        } else {
+          pathFill = defaultColor;
+        } // override pattern/gradient if opts.solid is true
+
+
+        if (opts.solid) {
+          pathFill = defaultColor;
+        }
+
+        return pathFill;
+      }
+    }, {
+      key: "getFillType",
+      value: function getFillType(seriesIndex) {
+        var w = this.w;
+
+        if (Array.isArray(w.config.fill.type)) {
+          return w.config.fill.type[seriesIndex];
+        } else {
+          return w.config.fill.type;
+        }
+      }
+    }, {
+      key: "getFillColors",
+      value: function getFillColors() {
+        var w = this.w;
+        var cnf = w.config;
+        var opts = this.opts;
+        var fillColors = [];
+
+        if (w.globals.comboCharts) {
+          if (w.config.series[this.seriesIndex].type === 'line') {
+            if (w.globals.stroke.colors instanceof Array) {
+              fillColors = w.globals.stroke.colors;
+            } else {
+              fillColors.push(w.globals.stroke.colors);
+            }
+          } else {
+            if (w.globals.fill.colors instanceof Array) {
+              fillColors = w.globals.fill.colors;
+            } else {
+              fillColors.push(w.globals.fill.colors);
+            }
+          }
+        } else {
+          if (cnf.chart.type === 'line') {
+            if (w.globals.stroke.colors instanceof Array) {
+              fillColors = w.globals.stroke.colors;
+            } else {
+              fillColors.push(w.globals.stroke.colors);
+            }
+          } else {
+            if (w.globals.fill.colors instanceof Array) {
+              fillColors = w.globals.fill.colors;
+            } else {
+              fillColors.push(w.globals.fill.colors);
+            }
+          }
+        } // colors passed in arguments
+
+
+        if (typeof opts.fillColors !== 'undefined') {
+          fillColors = [];
+
+          if (opts.fillColors instanceof Array) {
+            fillColors = opts.fillColors.slice();
+          } else {
+            fillColors.push(opts.fillColors);
+          }
+        }
+
+        return fillColors;
+      }
+    }, {
+      key: "handlePatternFill",
+      value: function handlePatternFill(patternFill, fillColor, fillOpacity, defaultColor) {
+        var cnf = this.w.config;
+        var opts = this.opts;
+        var graphics = new Graphics(this.ctx);
+        var patternStrokeWidth = cnf.fill.pattern.strokeWidth === undefined ? Array.isArray(cnf.stroke.width) ? cnf.stroke.width[this.seriesIndex] : cnf.stroke.width : Array.isArray(cnf.fill.pattern.strokeWidth) ? cnf.fill.pattern.strokeWidth[this.seriesIndex] : cnf.fill.pattern.strokeWidth;
+        var patternLineColor = fillColor;
+
+        if (cnf.fill.pattern.style instanceof Array) {
+          if (typeof cnf.fill.pattern.style[opts.seriesNumber] !== 'undefined') {
+            var pf = graphics.drawPattern(cnf.fill.pattern.style[opts.seriesNumber], cnf.fill.pattern.width, cnf.fill.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity);
+            patternFill = pf;
+          } else {
+            patternFill = defaultColor;
+          }
+        } else {
+          patternFill = graphics.drawPattern(cnf.fill.pattern.style, cnf.fill.pattern.width, cnf.fill.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity);
+        }
+
+        return patternFill;
+      }
+    }, {
+      key: "handleGradientFill",
+      value: function handleGradientFill(gradientFill, fillColor, fillOpacity, i) {
+        var cnf = this.w.config;
+        var opts = this.opts;
+        var graphics = new Graphics(this.ctx);
+        var utils = new Utils();
+        var type = cnf.fill.gradient.type;
+        var gradientFrom, gradientTo;
+        var opacityFrom = cnf.fill.gradient.opacityFrom === undefined ? fillOpacity : Array.isArray(cnf.fill.gradient.opacityFrom) ? cnf.fill.gradient.opacityFrom[i] : cnf.fill.gradient.opacityFrom;
+        var opacityTo = cnf.fill.gradient.opacityTo === undefined ? fillOpacity : Array.isArray(cnf.fill.gradient.opacityTo) ? cnf.fill.gradient.opacityTo[i] : cnf.fill.gradient.opacityTo;
+        gradientFrom = fillColor;
+
+        if (cnf.fill.gradient.gradientToColors === undefined || cnf.fill.gradient.gradientToColors.length === 0) {
+          if (cnf.fill.gradient.shade === 'dark') {
+            gradientTo = utils.shadeColor(parseFloat(cnf.fill.gradient.shadeIntensity) * -1, fillColor);
+          } else {
+            gradientTo = utils.shadeColor(parseFloat(cnf.fill.gradient.shadeIntensity), fillColor);
+          }
+        } else {
+          gradientTo = cnf.fill.gradient.gradientToColors[opts.seriesNumber];
+        }
+
+        if (cnf.fill.gradient.inverseColors) {
+          var t = gradientFrom;
+          gradientFrom = gradientTo;
+          gradientTo = t;
+        }
+
+        gradientFill = graphics.drawGradient(type, gradientFrom, gradientTo, opacityFrom, opacityTo, opts.size, cnf.fill.gradient.stops, cnf.fill.gradient.colorStops, i);
+        return gradientFill;
+      }
+    }]);
+
+    return Fill;
+  }();
+
+  /**
+   * ApexCharts Markers Class for drawing points on y values in axes charts.
+   *
+   * @module Markers
+   **/
+
+  var Markers =
+  /*#__PURE__*/
+  function () {
+    function Markers(ctx, opts) {
+      _classCallCheck(this, Markers);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    }
+
+    _createClass(Markers, [{
+      key: "setGlobalMarkerSize",
+      value: function setGlobalMarkerSize() {
+        var w = this.w;
+        w.globals.markers.size = Array.isArray(w.config.markers.size) ? w.config.markers.size : [w.config.markers.size];
+
+        if (w.globals.markers.size.length > 0) {
+          if (w.globals.markers.size.length < w.globals.series.length + 1) {
+            for (var i = 0; i <= w.globals.series.length; i++) {
+              if (typeof w.globals.markers.size[i] === 'undefined') {
+                w.globals.markers.size.push(w.globals.markers.size[0]);
+              }
+            }
+          }
+        } else {
+          w.globals.markers.size = w.config.series.map(function (s) {
+            return w.config.markers.size;
+          });
+        }
+      }
+    }, {
+      key: "plotChartMarkers",
+      value: function plotChartMarkers(pointsPos, seriesIndex, j) {
+        var _this = this;
+
+        var w = this.w;
+        var i = seriesIndex;
+        var p = pointsPos;
+        var elPointsWrap = null;
+        var graphics = new Graphics(this.ctx);
+        var point;
+
+        if (w.globals.markers.size[seriesIndex] > 0) {
+          elPointsWrap = graphics.group({
+            class: 'apexcharts-series-markers'
+          });
+          elPointsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")"));
+        }
+
+        if (p.x instanceof Array) {
+          var _loop = function _loop(q) {
+            var dataPointIndex = j; // a small hack as we have 2 points for the first val to connect it
+
+            if (j === 1 && q === 0) dataPointIndex = 0;
+            if (j === 1 && q === 1) dataPointIndex = 1;
+            var PointClasses = 'apexcharts-marker';
+
+            if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) {
+              PointClasses += ' no-pointer-events';
+            }
+
+            var shouldMarkerDraw = Array.isArray(w.config.markers.size) ? w.globals.markers.size[seriesIndex] > 0 : w.config.markers.size > 0;
+
+            if (shouldMarkerDraw) {
+              if (Utils.isNumber(p.y[q])) {
+                PointClasses += " w".concat((Math.random() + 1).toString(36).substring(4));
+              } else {
+                PointClasses = 'apexcharts-nullpoint';
+              }
+
+              var opts = _this.getMarkerConfig(PointClasses, seriesIndex); // discrete markers is an option where user can specify a particular marker with different size and color
+
+
+              w.config.markers.discrete.map(function (marker) {
+                if (marker.seriesIndex === seriesIndex && marker.dataPointIndex === dataPointIndex) {
+                  opts.pointStrokeColor = marker.strokeColor;
+                  opts.pointFillColor = marker.fillColor;
+                  opts.pSize = marker.size;
+                }
+              });
+
+              if (w.config.series[i].data[j]) {
+                if (w.config.series[i].data[j].fillColor) {
+                  opts.pointFillColor = w.config.series[i].data[j].fillColor;
+                }
+
+                if (w.config.series[i].data[j].strokeColor) {
+                  opts.pointStrokeColor = w.config.series[i].data[j].strokeColor;
+                }
+              }
+
+              point = graphics.drawMarker(p.x[q], p.y[q], opts);
+              point.attr('rel', dataPointIndex);
+              point.attr('j', dataPointIndex);
+              point.attr('index', seriesIndex);
+              point.node.setAttribute('default-marker-size', opts.pSize);
+              var filters = new Filters(_this.ctx);
+              filters.setSelectionFilter(point, seriesIndex, dataPointIndex);
+
+              _this.addEvents(point);
+
+              if (elPointsWrap) {
+                elPointsWrap.add(point);
+              }
+            } else {
+              // dynamic array creation - multidimensional
+              if (typeof w.globals.pointsArray[seriesIndex] === 'undefined') w.globals.pointsArray[seriesIndex] = [];
+              w.globals.pointsArray[seriesIndex].push([p.x[q], p.y[q]]);
+            }
+          };
+
+          for (var q = 0; q < p.x.length; q++) {
+            _loop(q);
+          }
+        }
+
+        return elPointsWrap;
+      }
+    }, {
+      key: "getMarkerConfig",
+      value: function getMarkerConfig(cssClass, seriesIndex) {
+        var w = this.w;
+        var pStyle = this.getMarkerStyle(seriesIndex);
+        var pSize = w.globals.markers.size[seriesIndex];
+        return {
+          pSize: pSize,
+          pRadius: w.config.markers.radius,
+          pWidth: w.config.markers.strokeWidth,
+          pointStrokeColor: pStyle.pointStrokeColor,
+          pointFillColor: pStyle.pointFillColor,
+          shape: w.config.markers.shape instanceof Array ? w.config.markers.shape[seriesIndex] : w.config.markers.shape,
+          class: cssClass,
+          pointStrokeOpacity: w.config.markers.strokeOpacity,
+          pointFillOpacity: w.config.markers.fillOpacity,
+          seriesIndex: seriesIndex
+        };
+      }
+    }, {
+      key: "addEvents",
+      value: function addEvents(circle) {
+        var graphics = new Graphics(this.ctx);
+        circle.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this.ctx, circle));
+        circle.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this.ctx, circle));
+        circle.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this.ctx, circle));
+        circle.node.addEventListener('touchstart', graphics.pathMouseDown.bind(this.ctx, circle), {
+          passive: true
+        });
+      }
+    }, {
+      key: "getMarkerStyle",
+      value: function getMarkerStyle(seriesIndex) {
+        var w = this.w;
+        var colors = w.globals.markers.colors;
+        var strokeColors = w.config.markers.strokeColor || w.config.markers.strokeColors;
+        var pointStrokeColor = strokeColors instanceof Array ? strokeColors[seriesIndex] : strokeColors;
+        var pointFillColor = colors instanceof Array ? colors[seriesIndex] : colors;
+        return {
+          pointStrokeColor: pointStrokeColor,
+          pointFillColor: pointFillColor
+        };
+      }
+    }]);
+
+    return Markers;
+  }();
+
+  /**
+   * ApexCharts Scatter Class.
+   * This Class also handles bubbles chart as currently there is no major difference in drawing them,
+   * @module Scatter
+   **/
+
+  var Scatter =
+  /*#__PURE__*/
+  function () {
+    function Scatter(ctx) {
+      _classCallCheck(this, Scatter);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.initialAnim = this.w.config.chart.animations.enabled;
+      this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; // this array will help in centering the label in bubbles
+
+      this.radiusSizes = [];
+    }
+
+    _createClass(Scatter, [{
+      key: "draw",
+      value: function draw(elSeries, j, opts) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var realIndex = opts.realIndex;
+        var pointsPos = opts.pointsPos;
+        var zRatio = opts.zRatio;
+        var elPointsMain = opts.elParent;
+        var elPointsWrap = graphics.group({
+          class: "apexcharts-series-markers apexcharts-series-".concat(w.config.chart.type)
+        });
+        elPointsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")"));
+
+        if (pointsPos.x instanceof Array) {
+          for (var q = 0; q < pointsPos.x.length; q++) {
+            var dataPointIndex = j + 1;
+            var shouldDraw = true; // a small hack as we have 2 points for the first val to connect it
+
+            if (j === 0 && q === 0) dataPointIndex = 0;
+            if (j === 0 && q === 1) dataPointIndex = 1;
+            var radius = 0;
+            var finishRadius = w.globals.markers.size[realIndex];
+
+            if (zRatio !== Infinity) {
+              // means we have a bubble
+              finishRadius = w.globals.seriesZ[realIndex][dataPointIndex] / zRatio;
+
+              if (typeof this.radiusSizes[realIndex] === 'undefined') {
+                this.radiusSizes.push([]);
+              }
+
+              this.radiusSizes[realIndex].push(finishRadius);
+            }
+
+            if (!w.config.chart.animations.enabled) {
+              radius = finishRadius;
+            }
+
+            var x = pointsPos.x[q];
+            var y = pointsPos.y[q];
+            radius = radius || 0;
+
+            if (x === 0 && y === 0 || y === null || typeof w.globals.series[realIndex][dataPointIndex] === 'undefined') {
+              shouldDraw = false;
+            }
+
+            if (shouldDraw) {
+              var circle = this.drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j);
+              elPointsWrap.add(circle);
+            }
+
+            elPointsMain.add(elPointsWrap);
+          }
+        }
+      }
+    }, {
+      key: "drawPoint",
+      value: function drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j) {
+        var w = this.w;
+        var i = realIndex;
+        var anim = new Animations(this.ctx);
+        var filters = new Filters(this.ctx);
+        var fill = new Fill(this.ctx);
+        var markers = new Markers(this.ctx);
+        var graphics = new Graphics(this.ctx);
+        var markerConfig = markers.getMarkerConfig('apexcharts-marker', i);
+        var pathFillCircle = fill.fillPath({
+          seriesNumber: realIndex,
+          patternUnits: 'objectBoundingBox',
+          value: w.globals.series[realIndex][j]
+        });
+        var circle = graphics.drawCircle(radius);
+
+        if (w.config.series[i].data[dataPointIndex]) {
+          if (w.config.series[i].data[dataPointIndex].fillColor) {
+            pathFillCircle = w.config.series[i].data[dataPointIndex].fillColor;
+          }
+        }
+
+        circle.attr({
+          cx: x,
+          cy: y,
+          fill: pathFillCircle,
+          stroke: markerConfig.pointStrokeColor,
+          strokeWidth: markerConfig.pWidth
+        });
+
+        if (w.config.chart.dropShadow.enabled) {
+          var dropShadow = w.config.chart.dropShadow;
+          filters.dropShadow(circle, dropShadow, realIndex);
+        }
+
+        if (this.initialAnim && !w.globals.dataChanged) {
+          var speed = 1;
+
+          if (!w.globals.resized) {
+            speed = w.config.chart.animations.speed;
+          }
+
+          anim.animateCircleRadius(circle, 0, finishRadius, speed, w.globals.easing);
+        }
+
+        if (w.globals.dataChanged) {
+          if (this.dynamicAnim) {
+            var _speed = w.config.chart.animations.dynamicAnimation.speed;
+            var prevX, prevY, prevR;
+            var prevPathJ = null;
+            prevPathJ = w.globals.previousPaths[realIndex] && w.globals.previousPaths[realIndex][j];
+
+            if (typeof prevPathJ !== 'undefined' && prevPathJ !== null) {
+              // series containing less elements will ignore these values and revert to 0
+              prevX = prevPathJ.x;
+              prevY = prevPathJ.y;
+              prevR = typeof prevPathJ.r !== 'undefined' ? prevPathJ.r : finishRadius;
+            }
+
+            for (var cs = 0; cs < w.globals.collapsedSeries.length; cs++) {
+              if (w.globals.collapsedSeries[cs].index === realIndex) {
+                _speed = 1;
+                finishRadius = 0;
+              }
+            }
+
+            if (x === 0 && y === 0) finishRadius = 0;
+            anim.animateCircle(circle, {
+              cx: prevX,
+              cy: prevY,
+              r: prevR
+            }, {
+              cx: x,
+              cy: y,
+              r: finishRadius
+            }, _speed, w.globals.easing);
+          } else {
+            circle.attr({
+              r: finishRadius
+            });
+          }
+        }
+
+        circle.attr({
+          rel: dataPointIndex,
+          j: dataPointIndex,
+          index: realIndex,
+          'default-marker-size': finishRadius
+        });
+        filters.setSelectionFilter(circle, realIndex, dataPointIndex);
+        markers.addEvents(circle);
+        circle.node.classList.add('apexcharts-marker');
+        return circle;
+      }
+    }, {
+      key: "centerTextInBubble",
+      value: function centerTextInBubble(y) {
+        var w = this.w;
+        y = y + parseInt(w.config.dataLabels.style.fontSize) / 4;
+        return {
+          y: y
+        };
+      }
+    }]);
+
+    return Scatter;
+  }();
+
+  /**
+   * ApexCharts DataLabels Class for drawing dataLabels on Axes based Charts.
+   *
+   * @module DataLabels
+   **/
+
+  var DataLabels =
+  /*#__PURE__*/
+  function () {
+    function DataLabels(ctx) {
+      _classCallCheck(this, DataLabels);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    } // When there are many datalabels to be printed, and some of them overlaps each other in the same series, this method will take care of that
+    // Also, when datalabels exceeds the drawable area and get clipped off, we need to adjust and move some pixels to make them visible again
+
+
+    _createClass(DataLabels, [{
+      key: "dataLabelsCorrection",
+      value: function dataLabelsCorrection(x, y, val, i, dataPointIndex, alwaysDrawDataLabel, fontSize) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var drawnextLabel = false; //
+
+        var textRects = graphics.getTextRects(val, fontSize);
+        var width = textRects.width;
+        var height = textRects.height; // first value in series, so push an empty array
+
+        if (typeof w.globals.dataLabelsRects[i] === 'undefined') w.globals.dataLabelsRects[i] = []; // then start pushing actual rects in that sub-array
+
+        w.globals.dataLabelsRects[i].push({
+          x: x,
+          y: y,
+          width: width,
+          height: height
+        });
+        var len = w.globals.dataLabelsRects[i].length - 2;
+        var lastDrawnIndex = typeof w.globals.lastDrawnDataLabelsIndexes[i] !== 'undefined' ? w.globals.lastDrawnDataLabelsIndexes[i][w.globals.lastDrawnDataLabelsIndexes[i].length - 1] : 0;
+
+        if (typeof w.globals.dataLabelsRects[i][len] !== 'undefined') {
+          var lastDataLabelRect = w.globals.dataLabelsRects[i][lastDrawnIndex];
+
+          if ( // next label forward and x not intersecting
+          x > lastDataLabelRect.x + lastDataLabelRect.width + 2 || y > lastDataLabelRect.y + lastDataLabelRect.height + 2 || x + width < lastDataLabelRect.x // next label is going to be drawn backwards
+          ) {
+              // the 2 indexes don't override, so OK to draw next label
+              drawnextLabel = true;
+            }
+        }
+
+        if (dataPointIndex === 0 || alwaysDrawDataLabel) {
+          drawnextLabel = true;
+        }
+
+        return {
+          x: x,
+          y: y,
+          drawnextLabel: drawnextLabel
+        };
+      }
+    }, {
+      key: "drawDataLabel",
+      value: function drawDataLabel(pos, i, j) {
+        var align = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'top';
+        // this method handles line, area, bubble, scatter charts as those charts contains markers/points which have pre-defined x/y positions
+        // all other charts like bars / heatmaps will define their own drawDataLabel routine
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var dataLabelsConfig = w.config.dataLabels;
+        var x = 0;
+        var y = 0;
+        var dataPointIndex = j;
+        var elDataLabelsWrap = null;
+
+        if (!dataLabelsConfig.enabled || pos.x instanceof Array !== true) {
+          return elDataLabelsWrap;
+        }
+
+        elDataLabelsWrap = graphics.group({
+          class: 'apexcharts-data-labels'
+        });
+        elDataLabelsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")"));
+
+        for (var q = 0; q < pos.x.length; q++) {
+          x = pos.x[q] + dataLabelsConfig.offsetX;
+          y = pos.y[q] + dataLabelsConfig.offsetY - w.globals.markers.size[i] - 5;
+
+          if (align === 'bottom') {
+            y = y + w.globals.markers.size[i] * 2 + parseInt(dataLabelsConfig.style.fontSize) * 1.4;
+          }
+
+          if (!isNaN(x)) {
+            // a small hack as we have 2 points for the first val to connect it
+            if (j === 1 && q === 0) dataPointIndex = 0;
+            if (j === 1 && q === 1) dataPointIndex = 1;
+            var val = w.globals.series[i][dataPointIndex];
+            var text = '';
+
+            if (w.config.chart.type === 'bubble') {
+              text = w.globals.seriesZ[i][dataPointIndex];
+              y = pos.y[q] + w.config.dataLabels.offsetY;
+              var scatter = new Scatter(this.ctx);
+              var centerTextInBubbleCoords = scatter.centerTextInBubble(y, i, dataPointIndex);
+              y = centerTextInBubbleCoords.y;
+            } else {
+              if (typeof val !== 'undefined' && val !== null) {
+                text = w.config.dataLabels.formatter(val, {
+                  ctx: this.ctx,
+                  seriesIndex: i,
+                  dataPointIndex: dataPointIndex,
+                  w: w
+                });
+              }
+            }
+
+            this.plotDataLabelsText({
+              x: x,
+              y: y,
+              text: text,
+              i: i,
+              j: dataPointIndex,
+              parent: elDataLabelsWrap,
+              offsetCorrection: true,
+              dataLabelsConfig: w.config.dataLabels
+            });
+          }
+        }
+
+        return elDataLabelsWrap;
+      }
+    }, {
+      key: "plotDataLabelsText",
+      value: function plotDataLabelsText(opts) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var x = opts.x,
+            y = opts.y,
+            i = opts.i,
+            j = opts.j,
+            text = opts.text,
+            textAnchor = opts.textAnchor,
+            parent = opts.parent,
+            dataLabelsConfig = opts.dataLabelsConfig,
+            alwaysDrawDataLabel = opts.alwaysDrawDataLabel,
+            offsetCorrection = opts.offsetCorrection;
+
+        if (Array.isArray(w.config.dataLabels.enabledOnSeries)) {
+          if (w.config.dataLabels.enabledOnSeries.indexOf(i) > -1) {
+            return;
+          }
+        }
+
+        var correctedLabels = {
+          x: x,
+          y: y,
+          drawnextLabel: true
+        };
+
+        if (offsetCorrection) {
+          correctedLabels = this.dataLabelsCorrection(x, y, text, i, j, alwaysDrawDataLabel, parseInt(dataLabelsConfig.style.fontSize));
+        } // when zoomed, we don't need to correct labels offsets,
+        // but if normally, labels get cropped, correct them
+
+
+        if (!w.globals.zoomed) {
+          x = correctedLabels.x;
+          y = correctedLabels.y;
+        }
+
+        if (correctedLabels.drawnextLabel) {
+          var dataLabelText = graphics.drawText({
+            width: 100,
+            height: parseInt(dataLabelsConfig.style.fontSize),
+            x: x,
+            y: y,
+            foreColor: w.globals.dataLabels.style.colors[i],
+            textAnchor: textAnchor || dataLabelsConfig.textAnchor,
+            text: text,
+            fontSize: dataLabelsConfig.style.fontSize,
+            fontFamily: dataLabelsConfig.style.fontFamily
+          });
+          dataLabelText.attr({
+            class: 'apexcharts-datalabel',
+            cx: x,
+            cy: y
+          });
+
+          if (dataLabelsConfig.dropShadow.enabled) {
+            var textShadow = dataLabelsConfig.dropShadow;
+            var filters = new Filters(this.ctx);
+            filters.dropShadow(dataLabelText, textShadow);
+          }
+
+          parent.add(dataLabelText);
+
+          if (typeof w.globals.lastDrawnDataLabelsIndexes[i] === 'undefined') {
+            w.globals.lastDrawnDataLabelsIndexes[i] = [];
+          }
+
+          w.globals.lastDrawnDataLabelsIndexes[i].push(j);
+        }
+      }
+    }]);
+
+    return DataLabels;
+  }();
+
+  /**
+   * ApexCharts Bar Class responsible for drawing both Columns and Bars.
+   *
+   * @module Bar
+   **/
+
+  var Bar =
+  /*#__PURE__*/
+  function () {
+    function Bar(ctx, xyRatios) {
+      _classCallCheck(this, Bar);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      var w = this.w;
+      this.barOptions = w.config.plotOptions.bar;
+      this.isHorizontal = this.barOptions.horizontal;
+      this.strokeWidth = w.config.stroke.width;
+      this.isNullValue = false;
+      this.xyRatios = xyRatios;
+
+      if (this.xyRatios !== null) {
+        this.xRatio = xyRatios.xRatio;
+        this.yRatio = xyRatios.yRatio;
+        this.invertedXRatio = xyRatios.invertedXRatio;
+        this.invertedYRatio = xyRatios.invertedYRatio;
+        this.baseLineY = xyRatios.baseLineY;
+        this.baseLineInvertedY = xyRatios.baseLineInvertedY;
+      }
+
+      this.yaxisIndex = 0;
+      this.seriesLen = 0;
+    }
+    /** primary draw method which is called on bar object
+     * @memberof Bar
+     * @param {array} series - user supplied series values
+     * @param {int} seriesIndex - the index by which series will be drawn on the svg
+     * @return {node} element which is supplied to parent chart draw method for appending
+     **/
+
+
+    _createClass(Bar, [{
+      key: "draw",
+      value: function draw(series, seriesIndex) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var coreUtils = new CoreUtils(this.ctx, w);
+        series = coreUtils.getLogSeries(series);
+        this.series = series;
+        this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+        this.initVariables(series);
+        var ret = graphics.group({
+          class: 'apexcharts-bar-series apexcharts-plot-series'
+        });
+
+        if (w.config.dataLabels.enabled) {
+          if (this.totalItems > w.config.plotOptions.bar.dataLabels.maxItems) {
+            console.warn('WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.');
+          }
+        }
+
+        for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+          var pathTo = void 0,
+              pathFrom = void 0;
+          var x = void 0,
+              y = void 0,
+              xDivision = void 0,
+              // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+          yDivision = void 0,
+              // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+          zeroH = void 0,
+              // zeroH is the baseline where 0 meets y axis
+          zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+          var yArrj = []; // hold y values of current iterating series
+
+          var xArrj = []; // hold x values of current iterating series
+
+          var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn
+
+          var elSeries = graphics.group({
+            class: "apexcharts-series",
+            rel: i + 1,
+            seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+            'data:realIndex': realIndex
+          });
+          this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex);
+
+          if (series[i].length > 0) {
+            this.visibleI = this.visibleI + 1;
+          }
+
+          var strokeWidth = 0;
+          var barHeight = 0;
+          var barWidth = 0;
+
+          if (this.yRatio.length > 1) {
+            this.yaxisIndex = realIndex;
+          }
+
+          this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;
+          var initPositions = this.initialPositions();
+          y = initPositions.y;
+          barHeight = initPositions.barHeight;
+          yDivision = initPositions.yDivision;
+          zeroW = initPositions.zeroW;
+          x = initPositions.x;
+          barWidth = initPositions.barWidth;
+          xDivision = initPositions.xDivision;
+          zeroH = initPositions.zeroH;
+
+          if (!this.horizontal) {
+            xArrj.push(x + barWidth / 2);
+          } // eldatalabels
+
+
+          var elDataLabelsWrap = graphics.group({
+            class: 'apexcharts-datalabels'
+          });
+
+          for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+            if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+              this.isNullValue = true;
+            } else {
+              this.isNullValue = false;
+            }
+
+            if (w.config.stroke.show) {
+              if (this.isNullValue) {
+                strokeWidth = 0;
+              } else {
+                strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+              }
+            }
+
+            var paths = null;
+
+            if (this.isHorizontal) {
+              paths = this.drawBarPaths({
+                indexes: {
+                  i: i,
+                  j: j,
+                  realIndex: realIndex,
+                  bc: bc
+                },
+                barHeight: barHeight,
+                strokeWidth: strokeWidth,
+                pathTo: pathTo,
+                pathFrom: pathFrom,
+                zeroW: zeroW,
+                x: x,
+                y: y,
+                yDivision: yDivision,
+                elSeries: elSeries
+              });
+              barWidth = this.series[i][j] / this.invertedYRatio;
+            } else {
+              paths = this.drawColumnPaths({
+                indexes: {
+                  i: i,
+                  j: j,
+                  realIndex: realIndex,
+                  bc: bc
+                },
+                x: x,
+                y: y,
+                xDivision: xDivision,
+                pathTo: pathTo,
+                pathFrom: pathFrom,
+                barWidth: barWidth,
+                zeroH: zeroH,
+                strokeWidth: strokeWidth,
+                elSeries: elSeries
+              });
+              barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+            }
+
+            pathTo = paths.pathTo;
+            pathFrom = paths.pathFrom;
+            y = paths.y;
+            x = paths.x; // push current X
+
+            if (j > 0) {
+              xArrj.push(x + barWidth / 2);
+            }
+
+            yArrj.push(y);
+            var pathFill = this.getPathFillColor(series, i, j, realIndex);
+            elSeries = this.renderSeries({
+              realIndex: realIndex,
+              pathFill: pathFill,
+              j: j,
+              i: i,
+              pathFrom: pathFrom,
+              pathTo: pathTo,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries,
+              x: x,
+              y: y,
+              series: series,
+              barHeight: barHeight,
+              barWidth: barWidth,
+              elDataLabelsWrap: elDataLabelsWrap,
+              visibleSeries: this.visibleI,
+              type: 'bar'
+            });
+          } // push all x val arrays into main xArr
+
+
+          w.globals.seriesXvalues[realIndex] = xArrj;
+          w.globals.seriesYvalues[realIndex] = yArrj;
+          ret.add(elSeries);
+        }
+
+        return ret;
+      }
+    }, {
+      key: "getPathFillColor",
+      value: function getPathFillColor(series, i, j, realIndex) {
+        var w = this.w;
+        var fill = new Fill(this.ctx);
+        var fillColor = null;
+        var seriesNumber = this.barOptions.distributed ? j : i;
+
+        if (this.barOptions.colors.ranges.length > 0) {
+          var colorRange = this.barOptions.colors.ranges;
+          colorRange.map(function (range) {
+            if (series[i][j] >= range.from && series[i][j] <= range.to) {
+              fillColor = range.color;
+            }
+          });
+        }
+
+        if (w.config.series[i].data[j] && w.config.series[i].data[j].fillColor) {
+          fillColor = w.config.series[i].data[j].fillColor;
+        }
+
+        var pathFill = fill.fillPath({
+          seriesNumber: this.barOptions.distributed ? seriesNumber : realIndex,
+          color: fillColor,
+          value: series[i][j]
+        });
+        return pathFill;
+      }
+    }, {
+      key: "renderSeries",
+      value: function renderSeries(_ref) {
+        var realIndex = _ref.realIndex,
+            pathFill = _ref.pathFill,
+            lineFill = _ref.lineFill,
+            j = _ref.j,
+            i = _ref.i,
+            pathFrom = _ref.pathFrom,
+            pathTo = _ref.pathTo,
+            strokeWidth = _ref.strokeWidth,
+            elSeries = _ref.elSeries,
+            x = _ref.x,
+            y = _ref.y,
+            series = _ref.series,
+            barHeight = _ref.barHeight,
+            barWidth = _ref.barWidth,
+            elDataLabelsWrap = _ref.elDataLabelsWrap,
+            visibleSeries = _ref.visibleSeries,
+            type = _ref.type;
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+
+        if (!lineFill) {
+          /* fix apexcharts#341 */
+          lineFill = this.barOptions.distributed ? w.globals.stroke.colors[j] : w.globals.stroke.colors[realIndex];
+        }
+
+        if (w.config.series[i].data[j] && w.config.series[i].data[j].strokeColor) {
+          lineFill = w.config.series[i].data[j].strokeColor;
+        }
+
+        if (this.isNullValue) {
+          pathFill = 'none';
+        }
+
+        var delay = j / w.config.chart.animations.animateGradually.delay * (w.config.chart.animations.speed / w.globals.dataPoints) / 2.4;
+        var renderedPath = graphics.renderPaths({
+          i: i,
+          j: j,
+          realIndex: realIndex,
+          pathFrom: pathFrom,
+          pathTo: pathTo,
+          stroke: lineFill,
+          strokeWidth: strokeWidth,
+          strokeLineCap: w.config.stroke.lineCap,
+          fill: pathFill,
+          animationDelay: delay,
+          initialSpeed: w.config.chart.animations.speed,
+          dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+          className: "apexcharts-".concat(type, "-area"),
+          id: "apexcharts-".concat(type, "-area")
+        });
+        renderedPath.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")"));
+        var filters = new Filters(this.ctx);
+        filters.setSelectionFilter(renderedPath, realIndex, j);
+        elSeries.add(renderedPath);
+        var dataLabels = this.calculateDataLabelsPos({
+          x: x,
+          y: y,
+          i: i,
+          j: j,
+          series: series,
+          realIndex: realIndex,
+          barHeight: barHeight,
+          barWidth: barWidth,
+          renderedPath: renderedPath,
+          visibleSeries: visibleSeries
+        });
+
+        if (dataLabels !== null) {
+          elDataLabelsWrap.add(dataLabels);
+        }
+
+        elSeries.add(elDataLabelsWrap);
+        return elSeries;
+      }
+    }, {
+      key: "initVariables",
+      value: function initVariables(series) {
+        var w = this.w;
+        this.series = series;
+        this.totalItems = 0;
+        this.seriesLen = 0;
+        this.visibleI = -1;
+        this.visibleItems = 1; // number of visible bars after user zoomed in/out
+
+        for (var sl = 0; sl < series.length; sl++) {
+          if (series[sl].length > 0) {
+            this.seriesLen = this.seriesLen + 1;
+            this.totalItems += series[sl].length;
+          }
+
+          if (w.globals.isXNumeric) {
+            // get max visible items
+            for (var j = 0; j < series[sl].length; j++) {
+              if (w.globals.seriesX[sl][j] > w.globals.minX && w.globals.seriesX[sl][j] < w.globals.maxX) {
+                this.visibleItems++;
+              }
+            }
+          } else {
+            this.visibleItems = w.globals.dataPoints;
+          }
+        }
+
+        if (this.seriesLen === 0) {
+          // A small adjustment when combo charts are used
+          this.seriesLen = 1;
+        }
+      }
+    }, {
+      key: "initialPositions",
+      value: function initialPositions() {
+        var w = this.w;
+        var x, y, yDivision, xDivision, barHeight, barWidth, zeroH, zeroW;
+
+        if (this.isHorizontal) {
+          // height divided into equal parts
+          yDivision = w.globals.gridHeight / w.globals.dataPoints;
+          barHeight = yDivision / this.seriesLen;
+
+          if (w.globals.isXNumeric) {
+            yDivision = w.globals.gridHeight / this.totalItems;
+            barHeight = yDivision / this.seriesLen;
+          }
+
+          barHeight = barHeight * parseInt(this.barOptions.barHeight) / 100;
+          zeroW = this.baseLineInvertedY + w.globals.padHorizontal + (this.isReversed ? w.globals.gridWidth : 0) - (this.isReversed ? this.baseLineInvertedY * 2 : 0);
+          y = (yDivision - barHeight * this.seriesLen) / 2;
+        } else {
+          // width divided into equal parts
+          xDivision = w.globals.gridWidth / this.visibleItems;
+          barWidth = xDivision / this.seriesLen * parseInt(this.barOptions.columnWidth) / 100;
+
+          if (w.globals.isXNumeric) {
+            // max barwidth should be equal to minXDiff to avoid overlap
+            xDivision = w.globals.minXDiff / this.xRatio;
+            barWidth = xDivision / this.seriesLen * parseInt(this.barOptions.columnWidth) / 100;
+          }
+
+          zeroH = w.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0);
+          x = w.globals.padHorizontal + (xDivision - barWidth * this.seriesLen) / 2;
+        }
+
+        return {
+          x: x,
+          y: y,
+          yDivision: yDivision,
+          xDivision: xDivision,
+          barHeight: barHeight,
+          barWidth: barWidth,
+          zeroH: zeroH,
+          zeroW: zeroW
+        };
+      }
+    }, {
+      key: "drawBarPaths",
+      value: function drawBarPaths(_ref2) {
+        var indexes = _ref2.indexes,
+            barHeight = _ref2.barHeight,
+            strokeWidth = _ref2.strokeWidth,
+            pathTo = _ref2.pathTo,
+            pathFrom = _ref2.pathFrom,
+            zeroW = _ref2.zeroW,
+            x = _ref2.x,
+            y = _ref2.y,
+            yDivision = _ref2.yDivision,
+            elSeries = _ref2.elSeries;
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var i = indexes.i;
+        var j = indexes.j;
+        var realIndex = indexes.realIndex;
+        var bc = indexes.bc;
+
+        if (w.globals.isXNumeric) {
+          y = (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - barHeight;
+        }
+
+        var barYPosition = y + barHeight * this.visibleI;
+        pathTo = graphics.move(zeroW, barYPosition);
+        pathFrom = graphics.move(zeroW, barYPosition);
+
+        if (w.globals.previousPaths.length > 0) {
+          pathFrom = this.getPathFrom(realIndex, j);
+        }
+
+        if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+          x = zeroW;
+        } else {
+          x = zeroW + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2;
+        }
+
+        var endingShapeOpts = {
+          barHeight: barHeight,
+          strokeWidth: strokeWidth,
+          barYPosition: barYPosition,
+          x: x,
+          zeroW: zeroW
+        };
+        var endingShape = this.barEndingShape(w, endingShapeOpts, this.series, i, j);
+        pathTo = pathTo + graphics.line(endingShape.newX, barYPosition) + endingShape.path + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition);
+        pathFrom = pathFrom + graphics.line(zeroW, barYPosition) + endingShape.ending_p_from + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition + barHeight - strokeWidth) + graphics.line(zeroW, barYPosition);
+
+        if (!w.globals.isXNumeric) {
+          y = y + yDivision;
+        }
+
+        if (this.barOptions.colors.backgroundBarColors.length > 0 && i === 0) {
+          if (bc >= this.barOptions.colors.backgroundBarColors.length) {
+            bc = 0;
+          }
+
+          var bcolor = this.barOptions.colors.backgroundBarColors[bc];
+          var rect = graphics.drawRect(0, barYPosition - barHeight * this.visibleI, w.globals.gridWidth, barHeight * this.seriesLen, 0, bcolor, this.barOptions.colors.backgroundBarOpacity);
+          elSeries.add(rect);
+          rect.node.classList.add('apexcharts-backgroundBar');
+        }
+
+        return {
+          pathTo: pathTo,
+          pathFrom: pathFrom,
+          x: x,
+          y: y,
+          barYPosition: barYPosition
+        };
+      }
+    }, {
+      key: "drawColumnPaths",
+      value: function drawColumnPaths(_ref3) {
+        var indexes = _ref3.indexes,
+            x = _ref3.x,
+            y = _ref3.y,
+            xDivision = _ref3.xDivision,
+            pathTo = _ref3.pathTo,
+            pathFrom = _ref3.pathFrom,
+            barWidth = _ref3.barWidth,
+            zeroH = _ref3.zeroH,
+            strokeWidth = _ref3.strokeWidth,
+            elSeries = _ref3.elSeries;
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var i = indexes.i;
+        var j = indexes.j;
+        var realIndex = indexes.realIndex;
+        var bc = indexes.bc;
+
+        if (w.globals.isXNumeric) {
+          x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+        }
+
+        var barXPosition = x + barWidth * this.visibleI;
+        pathTo = graphics.move(barXPosition, zeroH);
+        pathFrom = graphics.move(barXPosition, zeroH);
+
+        if (w.globals.previousPaths.length > 0) {
+          pathFrom = this.getPathFrom(realIndex, j);
+        }
+
+        if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+          y = zeroH;
+        } else {
+          y = zeroH - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2;
+        }
+
+        var endingShapeOpts = {
+          barWidth: barWidth,
+          strokeWidth: strokeWidth,
+          barXPosition: barXPosition,
+          y: y,
+          zeroH: zeroH
+        };
+        var endingShape = this.barEndingShape(w, endingShapeOpts, this.series, i, j);
+        pathTo = pathTo + graphics.line(barXPosition, endingShape.newY) + endingShape.path + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition - strokeWidth / 2, zeroH);
+        pathFrom = pathFrom + graphics.line(barXPosition, zeroH) + endingShape.ending_p_from + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition + barWidth - strokeWidth, zeroH) + graphics.line(barXPosition - strokeWidth / 2, zeroH);
+
+        if (!w.globals.isXNumeric) {
+          x = x + xDivision;
+        }
+
+        if (this.barOptions.colors.backgroundBarColors.length > 0 && i === 0) {
+          if (bc >= this.barOptions.colors.backgroundBarColors.length) {
+            bc = 0;
+          }
+
+          var bcolor = this.barOptions.colors.backgroundBarColors[bc];
+          var rect = graphics.drawRect(barXPosition - barWidth * this.visibleI, 0, barWidth * this.seriesLen, w.globals.gridHeight, 0, bcolor, this.barOptions.colors.backgroundBarOpacity);
+          elSeries.add(rect);
+          rect.node.classList.add('apexcharts-backgroundBar');
+        }
+
+        return {
+          pathTo: pathTo,
+          pathFrom: pathFrom,
+          x: x,
+          y: y,
+          barXPosition: barXPosition
+        };
+      }
+      /** getPathFrom is a common function for bars/columns which is used to get previous paths when data changes.
+       * @memberof Bar
+       * @param {int} realIndex - current iterating i
+       * @param {int} j - current iterating series's j index
+       * @return {string} pathFrom is the string which will be appended in animations
+       **/
+
+    }, {
+      key: "getPathFrom",
+      value: function getPathFrom(realIndex, j) {
+        var w = this.w;
+        var pathFrom;
+
+        for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+          var gpp = w.globals.previousPaths[pp];
+
+          if (gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+            if (typeof w.globals.previousPaths[pp].paths[j] !== 'undefined') {
+              pathFrom = w.globals.previousPaths[pp].paths[j].d;
+            }
+          }
+        }
+
+        return pathFrom;
+      }
+      /** calculateBarDataLabels is used to calculate the positions for the data-labels
+       * It also sets the element's data attr for bars and calls drawCalculatedBarDataLabels()
+       * @memberof Bar
+       * @param {object} {barProps} most of the bar properties used throughout the bar
+       * drawing function
+       * @return {object} dataLabels node-element which you can append later
+       **/
+
+    }, {
+      key: "calculateDataLabelsPos",
+      value: function calculateDataLabelsPos(_ref4) {
+        var x = _ref4.x,
+            y = _ref4.y,
+            i = _ref4.i,
+            j = _ref4.j,
+            realIndex = _ref4.realIndex,
+            series = _ref4.series,
+            barHeight = _ref4.barHeight,
+            barWidth = _ref4.barWidth,
+            visibleSeries = _ref4.visibleSeries,
+            renderedPath = _ref4.renderedPath;
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+        var bcx = x + parseFloat(barWidth * visibleSeries);
+        var bcy = y + parseFloat(barHeight * visibleSeries);
+
+        if (w.globals.isXNumeric && !w.globals.isBarHorizontal) {
+          bcx = x + parseFloat(barWidth * (visibleSeries + 1)) - strokeWidth;
+          bcy = y + parseFloat(barHeight * (visibleSeries + 1)) - strokeWidth;
+        }
+
+        var dataLabels = null;
+        var dataLabelsX = x;
+        var dataLabelsY = y;
+        var dataLabelsPos = {};
+        var dataLabelsConfig = w.config.dataLabels;
+        var barDataLabelsConfig = this.barOptions.dataLabels;
+        var offX = dataLabelsConfig.offsetX;
+        var offY = dataLabelsConfig.offsetY;
+        var textRects = {
+          width: 0,
+          height: 0
+        };
+
+        if (w.config.dataLabels.enabled) {
+          textRects = graphics.getTextRects(w.globals.yLabelFormatters[0](w.globals.maxY), parseInt(dataLabelsConfig.style.fontSize));
+        }
+
+        if (this.isHorizontal) {
+          dataLabelsPos = this.calculateBarsDataLabelsPosition({
+            x: x,
+            y: y,
+            i: i,
+            j: j,
+            renderedPath: renderedPath,
+            bcy: bcy,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            textRects: textRects,
+            strokeWidth: strokeWidth,
+            dataLabelsX: dataLabelsX,
+            dataLabelsY: dataLabelsY,
+            barDataLabelsConfig: barDataLabelsConfig,
+            offX: offX,
+            offY: offY
+          });
+        } else {
+          dataLabelsPos = this.calculateColumnsDataLabelsPosition({
+            x: x,
+            y: y,
+            i: i,
+            j: j,
+            renderedPath: renderedPath,
+            realIndex: realIndex,
+            bcx: bcx,
+            bcy: bcy,
+            barHeight: barHeight,
+            barWidth: barWidth,
+            textRects: textRects,
+            strokeWidth: strokeWidth,
+            dataLabelsY: dataLabelsY,
+            barDataLabelsConfig: barDataLabelsConfig,
+            offX: offX,
+            offY: offY
+          });
+        }
+
+        renderedPath.attr({
+          cy: dataLabelsPos.bcy,
+          cx: dataLabelsPos.bcx,
+          j: j,
+          val: series[i][j],
+          barHeight: barHeight,
+          barWidth: barWidth
+        });
+        dataLabels = this.drawCalculatedDataLabels({
+          x: dataLabelsPos.dataLabelsX,
+          y: dataLabelsPos.dataLabelsY,
+          val: series[i][j],
+          i: realIndex,
+          j: j,
+          barWidth: barWidth,
+          barHeight: barHeight,
+          textRects: textRects,
+          dataLabelsConfig: dataLabelsConfig
+        });
+        return dataLabels;
+      }
+    }, {
+      key: "calculateColumnsDataLabelsPosition",
+      value: function calculateColumnsDataLabelsPosition(opts) {
+        var w = this.w;
+        var i = opts.i,
+            j = opts.j,
+            y = opts.y,
+            bcx = opts.bcx,
+            barWidth = opts.barWidth,
+            barHeight = opts.barHeight,
+            textRects = opts.textRects,
+            dataLabelsY = opts.dataLabelsY,
+            barDataLabelsConfig = opts.barDataLabelsConfig,
+            strokeWidth = opts.strokeWidth,
+            offX = opts.offX,
+            offY = opts.offY;
+        var dataLabelsX;
+        var dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints;
+        bcx = bcx - strokeWidth / 2;
+
+        if (w.globals.isXNumeric) {
+          dataLabelsX = bcx - barWidth / 2 + offX;
+        } else {
+          dataLabelsX = bcx - dataPointsDividedWidth + barWidth / 2 + offX;
+        }
+
+        var valIsNegative = this.series[i][j] <= 0;
+
+        if (this.isReversed) {
+          y = y - barHeight;
+        }
+
+        switch (barDataLabelsConfig.position) {
+          case 'center':
+            if (valIsNegative) {
+              dataLabelsY = y + barHeight / 2 + textRects.height / 2 + offY;
+            } else {
+              dataLabelsY = y + barHeight / 2 + textRects.height / 2 - offY;
+            }
+
+            break;
+
+          case 'bottom':
+            if (valIsNegative) {
+              dataLabelsY = y + barHeight + textRects.height + strokeWidth + offY;
+            } else {
+              dataLabelsY = y + barHeight - textRects.height / 2 + strokeWidth - offY;
+            }
+
+            break;
+
+          case 'top':
+            if (valIsNegative) {
+              dataLabelsY = y - textRects.height / 2 - offY;
+            } else {
+              dataLabelsY = y + textRects.height + offY;
+            }
+
+            break;
+        }
+
+        if (!w.config.chart.stacked) {
+          if (dataLabelsY < 0) {
+            dataLabelsY = 0 + strokeWidth;
+          } else if (dataLabelsY + textRects.height / 3 > w.globals.gridHeight) {
+            dataLabelsY = w.globals.gridHeight - strokeWidth;
+          }
+        }
+
+        return {
+          bcx: bcx,
+          bcy: y,
+          dataLabelsX: dataLabelsX,
+          dataLabelsY: dataLabelsY
+        };
+      }
+    }, {
+      key: "calculateBarsDataLabelsPosition",
+      value: function calculateBarsDataLabelsPosition(opts) {
+        var w = this.w;
+        var x = opts.x,
+            i = opts.i,
+            j = opts.j,
+            bcy = opts.bcy,
+            barHeight = opts.barHeight,
+            barWidth = opts.barWidth,
+            textRects = opts.textRects,
+            dataLabelsX = opts.dataLabelsX,
+            strokeWidth = opts.strokeWidth,
+            barDataLabelsConfig = opts.barDataLabelsConfig,
+            offX = opts.offX,
+            offY = opts.offY;
+        var dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints;
+        var dataLabelsY = bcy - dataPointsDividedHeight + barHeight / 2 + textRects.height / 2 + offY - 3;
+        var valIsNegative = this.series[i][j] <= 0;
+
+        if (this.isReversed) {
+          x = x + barWidth;
+        }
+
+        switch (barDataLabelsConfig.position) {
+          case 'center':
+            if (valIsNegative) {
+              dataLabelsX = x - barWidth / 2 - offX;
+            } else {
+              dataLabelsX = x - barWidth / 2 + offX;
+            }
+
+            break;
+
+          case 'bottom':
+            if (valIsNegative) {
+              dataLabelsX = x - barWidth - strokeWidth - Math.round(textRects.width / 2) - offX;
+            } else {
+              dataLabelsX = x - barWidth + strokeWidth + Math.round(textRects.width / 2) + offX;
+            }
+
+            break;
+
+          case 'top':
+            if (valIsNegative) {
+              dataLabelsX = x - strokeWidth + Math.round(textRects.width / 2) - offX;
+            } else {
+              dataLabelsX = x - strokeWidth - Math.round(textRects.width / 2) + offX;
+            }
+
+            break;
+        }
+
+        if (!w.config.chart.stacked) {
+          if (dataLabelsX < 0) {
+            dataLabelsX = dataLabelsX + textRects.width + strokeWidth;
+          } else if (dataLabelsX + textRects.width / 2 > w.globals.gridWidth) {
+            dataLabelsX = w.globals.gridWidth - textRects.width - strokeWidth;
+          }
+        }
+
+        return {
+          bcx: x,
+          bcy: bcy,
+          dataLabelsX: dataLabelsX,
+          dataLabelsY: dataLabelsY
+        };
+      }
+    }, {
+      key: "drawCalculatedDataLabels",
+      value: function drawCalculatedDataLabels(_ref5) {
+        var x = _ref5.x,
+            y = _ref5.y,
+            val = _ref5.val,
+            i = _ref5.i,
+            j = _ref5.j,
+            textRects = _ref5.textRects,
+            barHeight = _ref5.barHeight,
+            barWidth = _ref5.barWidth,
+            dataLabelsConfig = _ref5.dataLabelsConfig;
+        var w = this.w;
+        var dataLabels = new DataLabels(this.ctx);
+        var graphics = new Graphics(this.ctx);
+        var formatter = dataLabelsConfig.formatter;
+        var elDataLabelsWrap = null;
+        var isSeriesNotCollapsed = w.globals.collapsedSeriesIndices.indexOf(i) > -1;
+
+        if (dataLabelsConfig.enabled && !isSeriesNotCollapsed) {
+          elDataLabelsWrap = graphics.group({
+            class: 'apexcharts-data-labels'
+          });
+          var text = '';
+
+          if (typeof val !== 'undefined' && val !== null) {
+            text = formatter(val, {
+              seriesIndex: i,
+              dataPointIndex: j,
+              w: w
+            });
+          }
+
+          if (val === 0 && w.config.chart.stacked) {
+            // in a stacked bar/column chart, 0 value should be neglected as it will overlap on the next element
+            text = '';
+          }
+
+          if (w.config.chart.stacked && this.barOptions.dataLabels.hideOverflowingLabels) {
+            // if there is not enough space to draw the label in the bar/column rect, check hideOverflowingLabels property to prevent overflowing on wrong rect
+            // Note: This issue is only seen in stacked charts
+            if (this.isHorizontal) {
+              barWidth = this.series[i][j] / this.yRatio[this.yaxisIndex];
+
+              if (textRects.width / 1.6 > barWidth) {
+                text = '';
+              }
+            } else {
+              barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+
+              if (textRects.height / 1.6 > barHeight) {
+                text = '';
+              }
+            }
+          }
+
+          dataLabels.plotDataLabelsText({
+            x: x,
+            y: y,
+            text: text,
+            i: i,
+            j: j,
+            parent: elDataLabelsWrap,
+            dataLabelsConfig: dataLabelsConfig,
+            alwaysDrawDataLabel: true,
+            offsetCorrection: true
+          });
+        }
+
+        return elDataLabelsWrap;
+      }
+      /** barEndingShape draws the various shapes on top of bars/columns
+       * @memberof Bar
+       * @param {object} w - chart context
+       * @param {object} opts - consists several properties like barHeight/barWidth
+       * @param {array} series - global primary series
+       * @param {int} i - current iterating series's index
+       * @param {int} j - series's j of i
+       * @return {object} path - ending shape whether round/arrow
+       *         ending_p_from - similar to pathFrom
+       *         newY - which is calculated from existing y and new shape's top
+       **/
+
+    }, {
+      key: "barEndingShape",
+      value: function barEndingShape(w, opts, series, i, j) {
+        var graphics = new Graphics(this.ctx);
+
+        if (this.isHorizontal) {
+          var endingShape = null;
+          var endingShapeFrom = '';
+          var x = opts.x;
+
+          if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) {
+            var inverse = series[i][j] < 0;
+            var eX = opts.barHeight / 2 - opts.strokeWidth;
+            if (inverse) eX = -opts.barHeight / 2 - opts.strokeWidth;
+
+            if (!w.config.chart.stacked) {
+              if (this.barOptions.endingShape === 'rounded') {
+                x = opts.x - eX / 2;
+              }
+            }
+
+            switch (this.barOptions.endingShape) {
+              case 'flat':
+                endingShape = graphics.line(x, opts.barYPosition + opts.barHeight - opts.strokeWidth);
+                break;
+
+              case 'rounded':
+                endingShape = graphics.quadraticCurve(x + eX, opts.barYPosition + (opts.barHeight - opts.strokeWidth) / 2, x, opts.barYPosition + opts.barHeight - opts.strokeWidth);
+                break;
+            }
+          }
+
+          return {
+            path: endingShape,
+            ending_p_from: endingShapeFrom,
+            newX: x
+          };
+        } else {
+          var _endingShape = null;
+          var _endingShapeFrom = '';
+          var y = opts.y;
+
+          if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) {
+            var _inverse = series[i][j] < 0;
+
+            var eY = opts.barWidth / 2 - opts.strokeWidth;
+            if (_inverse) eY = -opts.barWidth / 2 - opts.strokeWidth;
+
+            if (!w.config.chart.stacked) {
+              // the shape exceeds the chart height, hence reduce y
+              if (this.barOptions.endingShape === 'rounded') {
+                y = y + eY / 2;
+              }
+            }
+
+            switch (this.barOptions.endingShape) {
+              case 'flat':
+                _endingShape = graphics.line(opts.barXPosition + opts.barWidth - opts.strokeWidth, y);
+                break;
+
+              case 'rounded':
+                _endingShape = graphics.quadraticCurve(opts.barXPosition + (opts.barWidth - opts.strokeWidth) / 2, y - eY, opts.barXPosition + opts.barWidth - opts.strokeWidth, y);
+                break;
+            }
+          }
+
+          return {
+            path: _endingShape,
+            ending_p_from: _endingShapeFrom,
+            newY: y
+          };
+        }
+      }
+    }]);
+
+    return Bar;
+  }();
+
+  /**
+   * ApexCharts BarStacked Class responsible for drawing both Stacked Columns and Bars.
+   *
+   * @module BarStacked
+   * The whole calculation for stacked bar/column is different from normal bar/column,
+   * hence it makes sense to derive a new class for it extending most of the props of Parent Bar
+   **/
+
+  var BarStacked =
+  /*#__PURE__*/
+  function (_Bar) {
+    _inherits(BarStacked, _Bar);
+
+    function BarStacked() {
+      _classCallCheck(this, BarStacked);
+
+      return _possibleConstructorReturn(this, _getPrototypeOf(BarStacked).apply(this, arguments));
+    }
+
+    _createClass(BarStacked, [{
+      key: "draw",
+      value: function draw(series, seriesIndex) {
+        var w = this.w;
+        this.graphics = new Graphics(this.ctx);
+        this.fill = new Fill(this.ctx);
+        this.bar = new Bar(this.ctx, this.xyRatios);
+        var coreUtils = new CoreUtils(this.ctx, w);
+        series = coreUtils.getLogSeries(series);
+        this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+        this.initVariables(series);
+
+        if (w.config.chart.stackType === '100%') {
+          series = w.globals.seriesPercent.slice();
+        }
+
+        this.series = series;
+        this.totalItems = 0;
+        this.prevY = []; // y position on chart
+
+        this.prevX = []; // x position on chart
+
+        this.prevYF = []; // y position including shapes on chart
+
+        this.prevXF = []; // x position including shapes on chart
+
+        this.prevYVal = []; // y values (series[i][j]) in columns
+
+        this.prevXVal = []; // x values (series[i][j]) in bars
+
+        this.xArrj = []; // xj indicates x position on graph in bars
+
+        this.xArrjF = []; // xjF indicates bar's x position + endingshape's positions in bars
+
+        this.xArrjVal = []; // x val means the actual series's y values in horizontal/bars
+
+        this.yArrj = []; // yj indicates y position on graph in columns
+
+        this.yArrjF = []; // yjF indicates bar's y position + endingshape's positions in columns
+
+        this.yArrjVal = []; // y val means the actual series's y values in columns
+
+        for (var sl = 0; sl < series.length; sl++) {
+          if (series[sl].length > 0) {
+            this.totalItems += series[sl].length;
+          }
+        }
+
+        var ret = this.graphics.group({
+          class: 'apexcharts-bar-series apexcharts-plot-series'
+        });
+        var x = 0;
+        var y = 0;
+
+        for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+          var pathTo = void 0,
+              pathFrom = void 0;
+          var xDivision = void 0; // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+
+          var yDivision = void 0; // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+
+          var zeroH = void 0; // zeroH is the baseline where 0 meets y axis
+
+          var zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+          var xArrValues = [];
+          var yArrValues = [];
+          var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;
+
+          if (this.yRatio.length > 1) {
+            this.yaxisIndex = realIndex;
+          }
+
+          this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed; // el to which series will be drawn
+
+          var elSeries = this.graphics.group({
+            class: "apexcharts-series",
+            seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+            rel: i + 1,
+            'data:realIndex': realIndex
+          }); // eldatalabels
+
+          var elDataLabelsWrap = this.graphics.group({
+            class: 'apexcharts-datalabels'
+          });
+          var strokeWidth = 0;
+          var barHeight = 0;
+          var barWidth = 0;
+          var initPositions = this.initialPositions(x, y, xDivision, yDivision, zeroH, zeroW);
+          y = initPositions.y;
+          barHeight = initPositions.barHeight;
+          yDivision = initPositions.yDivision;
+          zeroW = initPositions.zeroW;
+          x = initPositions.x;
+          barWidth = initPositions.barWidth;
+          xDivision = initPositions.xDivision;
+          zeroH = initPositions.zeroH;
+          this.yArrj = [];
+          this.yArrjF = [];
+          this.yArrjVal = [];
+          this.xArrj = [];
+          this.xArrjF = [];
+          this.xArrjVal = []; // if (!this.horizontal) {
+          // this.xArrj.push(x + barWidth / 2)
+          // }
+
+          for (var j = 0; j < w.globals.dataPoints; j++) {
+            if (w.config.stroke.show) {
+              if (this.isNullValue) {
+                strokeWidth = 0;
+              } else {
+                strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+              }
+            }
+
+            var paths = null;
+
+            if (this.isHorizontal) {
+              paths = this.drawBarPaths({
+                indexes: {
+                  i: i,
+                  j: j,
+                  realIndex: realIndex,
+                  bc: bc
+                },
+                barHeight: barHeight,
+                strokeWidth: strokeWidth,
+                pathTo: pathTo,
+                pathFrom: pathFrom,
+                zeroW: zeroW,
+                x: x,
+                y: y,
+                yDivision: yDivision,
+                elSeries: elSeries
+              });
+              barWidth = this.series[i][j] / this.invertedYRatio;
+            } else {
+              paths = this.drawColumnPaths({
+                indexes: {
+                  i: i,
+                  j: j,
+                  realIndex: realIndex,
+                  bc: bc
+                },
+                x: x,
+                y: y,
+                xDivision: xDivision,
+                pathTo: pathTo,
+                pathFrom: pathFrom,
+                barWidth: barWidth,
+                zeroH: zeroH,
+                strokeWidth: strokeWidth,
+                elSeries: elSeries
+              });
+              barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];
+            }
+
+            pathTo = paths.pathTo;
+            pathFrom = paths.pathFrom;
+            y = paths.y;
+            x = paths.x;
+            xArrValues.push(x);
+            yArrValues.push(y);
+            var pathFill = this.bar.getPathFillColor(series, i, j, realIndex);
+            elSeries = this.renderSeries({
+              realIndex: realIndex,
+              pathFill: pathFill,
+              j: j,
+              i: i,
+              pathFrom: pathFrom,
+              pathTo: pathTo,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries,
+              x: x,
+              y: y,
+              series: series,
+              barHeight: barHeight,
+              barWidth: barWidth,
+              elDataLabelsWrap: elDataLabelsWrap,
+              type: 'bar',
+              visibleSeries: 0
+            });
+          } // push all x val arrays into main xArr
+
+
+          w.globals.seriesXvalues[realIndex] = xArrValues;
+          w.globals.seriesYvalues[realIndex] = yArrValues; // push all current y values array to main PrevY Array
+
+          this.prevY.push(this.yArrj);
+          this.prevYF.push(this.yArrjF);
+          this.prevYVal.push(this.yArrjVal);
+          this.prevX.push(this.xArrj);
+          this.prevXF.push(this.xArrjF);
+          this.prevXVal.push(this.xArrjVal);
+          ret.add(elSeries);
+        }
+
+        return ret;
+      }
+    }, {
+      key: "initialPositions",
+      value: function initialPositions(x, y, xDivision, yDivision, zeroH, zeroW) {
+        var w = this.w;
+        var barHeight, barWidth;
+
+        if (this.isHorizontal) {
+          // height divided into equal parts
+          yDivision = w.globals.gridHeight / w.globals.dataPoints;
+          barHeight = yDivision;
+          barHeight = barHeight * parseInt(w.config.plotOptions.bar.barHeight) / 100;
+          zeroW = this.baseLineInvertedY + w.globals.padHorizontal + (this.isReversed ? w.globals.gridWidth : 0) - (this.isReversed ? this.baseLineInvertedY * 2 : 0); // initial y position is half of barHeight * half of number of Bars
+
+          y = (yDivision - barHeight) / 2;
+        } else {
+          // width divided into equal parts
+          xDivision = w.globals.gridWidth / w.globals.dataPoints;
+          barWidth = xDivision;
+
+          if (w.globals.isXNumeric) {
+            xDivision = w.globals.minXDiff / this.xRatio;
+            barWidth = xDivision * parseInt(this.barOptions.columnWidth) / 100;
+          } else {
+            barWidth = barWidth * parseInt(w.config.plotOptions.bar.columnWidth) / 100;
+          }
+
+          zeroH = this.baseLineY[this.yaxisIndex] + (this.isReversed ? w.globals.gridHeight : 0) - (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0); // initial x position is one third of barWidth
+
+          x = w.globals.padHorizontal + (xDivision - barWidth) / 2;
+        }
+
+        return {
+          x: x,
+          y: y,
+          yDivision: yDivision,
+          xDivision: xDivision,
+          barHeight: barHeight,
+          barWidth: barWidth,
+          zeroH: zeroH,
+          zeroW: zeroW
+        };
+      }
+    }, {
+      key: "drawBarPaths",
+      value: function drawBarPaths(_ref) {
+        var indexes = _ref.indexes,
+            barHeight = _ref.barHeight,
+            strokeWidth = _ref.strokeWidth,
+            pathTo = _ref.pathTo,
+            pathFrom = _ref.pathFrom,
+            zeroW = _ref.zeroW,
+            x = _ref.x,
+            y = _ref.y,
+            yDivision = _ref.yDivision,
+            elSeries = _ref.elSeries;
+        var w = this.w;
+        var barYPosition = y;
+        var barXPosition;
+        var i = indexes.i;
+        var j = indexes.j;
+        var realIndex = indexes.realIndex;
+        var bc = indexes.bc;
+        var prevBarW = 0;
+
+        for (var k = 0; k < this.prevXF.length; k++) {
+          prevBarW = prevBarW + this.prevXF[k][j];
+        }
+
+        if (i > 0) {
+          var bXP = zeroW;
+
+          if (this.prevXVal[i - 1][j] < 0) {
+            if (this.series[i][j] >= 0) {
+              bXP = this.prevX[i - 1][j] + prevBarW - (this.isReversed ? prevBarW : 0) * 2;
+            } else {
+              bXP = this.prevX[i - 1][j];
+            }
+          } else if (this.prevXVal[i - 1][j] >= 0) {
+            if (this.series[i][j] >= 0) {
+              bXP = this.prevX[i - 1][j];
+            } else {
+              bXP = this.prevX[i - 1][j] - prevBarW + (this.isReversed ? prevBarW : 0) * 2;
+            }
+          }
+
+          barXPosition = bXP;
+        } else {
+          // the first series will not have prevX values
+          barXPosition = zeroW;
+        }
+
+        if (this.series[i][j] === null) {
+          x = barXPosition;
+        } else {
+          x = barXPosition + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2;
+        }
+
+        var endingShapeOpts = {
+          barHeight: barHeight,
+          strokeWidth: strokeWidth,
+          invertedYRatio: this.invertedYRatio,
+          barYPosition: barYPosition,
+          x: x
+        };
+        var endingShape = this.bar.barEndingShape(w, endingShapeOpts, this.series, i, j);
+
+        if (this.series.length > 1 && i !== this.endingShapeOnSeriesNumber) {
+          // revert back to flat shape if not last series
+          endingShape.path = this.graphics.line(endingShape.newX, barYPosition + barHeight - strokeWidth);
+        }
+
+        this.xArrj.push(endingShape.newX);
+        this.xArrjF.push(Math.abs(barXPosition - endingShape.newX));
+        this.xArrjVal.push(this.series[i][j]);
+        pathTo = this.graphics.move(barXPosition, barYPosition);
+        pathFrom = this.graphics.move(barXPosition, barYPosition);
+
+        if (w.globals.previousPaths.length > 0) {
+          pathFrom = this.bar.getPathFrom(realIndex, j, false);
+        }
+
+        pathTo = pathTo + this.graphics.line(endingShape.newX, barYPosition) + endingShape.path + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition);
+        pathFrom = pathFrom + this.graphics.line(barXPosition, barYPosition) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition + barHeight - strokeWidth) + this.graphics.line(barXPosition, barYPosition);
+
+        if (w.config.plotOptions.bar.colors.backgroundBarColors.length > 0 && i === 0) {
+          if (bc >= w.config.plotOptions.bar.colors.backgroundBarColors.length) {
+            bc = 0;
+          }
+
+          var bcolor = w.config.plotOptions.bar.colors.backgroundBarColors[bc];
+          var rect = this.graphics.drawRect(0, barYPosition, w.globals.gridWidth, barHeight, 0, bcolor, w.config.plotOptions.bar.colors.backgroundBarOpacity);
+          elSeries.add(rect);
+          rect.node.classList.add('apexcharts-backgroundBar');
+        }
+
+        y = y + yDivision;
+        return {
+          pathTo: pathTo,
+          pathFrom: pathFrom,
+          x: x,
+          y: y
+        };
+      }
+    }, {
+      key: "drawColumnPaths",
+      value: function drawColumnPaths(_ref2) {
+        var indexes = _ref2.indexes,
+            x = _ref2.x,
+            y = _ref2.y,
+            xDivision = _ref2.xDivision,
+            pathTo = _ref2.pathTo,
+            pathFrom = _ref2.pathFrom,
+            barWidth = _ref2.barWidth,
+            zeroH = _ref2.zeroH,
+            strokeWidth = _ref2.strokeWidth,
+            elSeries = _ref2.elSeries;
+        var w = this.w;
+        var i = indexes.i;
+        var j = indexes.j;
+        var realIndex = indexes.realIndex;
+        var bc = indexes.bc;
+
+        if (w.globals.isXNumeric) {
+          var seriesVal = w.globals.seriesX[i][j];
+          if (!seriesVal) seriesVal = 0;
+          x = (seriesVal - w.globals.minX) / this.xRatio - barWidth / 2;
+        }
+
+        var barXPosition = x;
+        var barYPosition;
+        var prevBarH = 0;
+
+        for (var k = 0; k < this.prevYF.length; k++) {
+          prevBarH = prevBarH + this.prevYF[k][j];
+        }
+
+        if (i > 0 && !w.globals.isXNumeric || i > 0 && w.globals.isXNumeric && w.globals.seriesX[i - 1][j] === w.globals.seriesX[i][j]) {
+          var bYP;
+          var prevYValue = this.prevY[i - 1][j];
+
+          if (this.prevYVal[i - 1][j] < 0) {
+            if (this.series[i][j] >= 0) {
+              bYP = prevYValue - prevBarH + (this.isReversed ? prevBarH : 0) * 2;
+            } else {
+              bYP = prevYValue;
+            }
+          } else {
+            if (this.series[i][j] >= 0) {
+              bYP = prevYValue;
+            } else {
+              bYP = prevYValue + prevBarH - (this.isReversed ? prevBarH : 0) * 2;
+            }
+          }
+
+          barYPosition = bYP;
+        } else {
+          // the first series will not have prevY values, also if the prev index's series X doesn't matches the current index's series X, then start from zero
+          barYPosition = w.globals.gridHeight - zeroH;
+        }
+
+        y = barYPosition - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2;
+        var endingShapeOpts = {
+          barWidth: barWidth,
+          strokeWidth: strokeWidth,
+          yRatio: this.yRatio[this.yaxisIndex],
+          barXPosition: barXPosition,
+          y: y
+        };
+        var endingShape = this.bar.barEndingShape(w, endingShapeOpts, this.series, i, j);
+        this.yArrj.push(endingShape.newY);
+        this.yArrjF.push(Math.abs(barYPosition - endingShape.newY));
+        this.yArrjVal.push(this.series[i][j]);
+        pathTo = this.graphics.move(barXPosition, barYPosition);
+        pathFrom = this.graphics.move(barXPosition, barYPosition);
+
+        if (w.globals.previousPaths.length > 0) {
+          pathFrom = this.bar.getPathFrom(realIndex, j, false);
+        }
+
+        pathTo = pathTo + this.graphics.line(barXPosition, endingShape.newY) + endingShape.path + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition - strokeWidth / 2, barYPosition);
+        pathFrom = pathFrom + this.graphics.line(barXPosition, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition + barWidth - strokeWidth, barYPosition) + this.graphics.line(barXPosition - strokeWidth / 2, barYPosition);
+
+        if (w.config.plotOptions.bar.colors.backgroundBarColors.length > 0 && i === 0) {
+          if (bc >= w.config.plotOptions.bar.colors.backgroundBarColors.length) {
+            bc = 0;
+          }
+
+          var bcolor = w.config.plotOptions.bar.colors.backgroundBarColors[bc];
+          var rect = this.graphics.drawRect(barXPosition, 0, barWidth, w.globals.gridHeight, 0, bcolor, w.config.plotOptions.bar.colors.backgroundBarOpacity);
+          elSeries.add(rect);
+          rect.node.classList.add('apexcharts-backgroundBar');
+        }
+
+        x = x + xDivision;
+        return {
+          pathTo: pathTo,
+          pathFrom: pathFrom,
+          x: w.globals.isXNumeric ? x - xDivision : x,
+          y: y
+        };
+      }
+      /*
+       * When user clicks on legends, the collapsed series will be filled with [0,0,0,...,0]
+       * We need to make sure, that the last series is not [0,0,0,...,0]
+       * as we need to draw shapes on the last series (for stacked bars/columns only)
+       * Hence, we are collecting all inner arrays in series which has [0,0,0...,0]
+       **/
+
+    }, {
+      key: "checkZeroSeries",
+      value: function checkZeroSeries(_ref3) {
+        var series = _ref3.series;
+        var w = this.w;
+
+        for (var zs = 0; zs < series.length; zs++) {
+          var total = 0;
+
+          for (var zsj = 0; zsj < series[w.globals.maxValsInArrayIndex].length; zsj++) {
+            total += series[zs][zsj];
+          }
+
+          if (total === 0) {
+            this.zeroSerieses.push(zs);
+          }
+        } // After getting all zeroserieses, we need to ensure whether endingshapeonSeries is not in that zeroseries array
+
+
+        for (var s = series.length - 1; s >= 0; s--) {
+          if (this.zeroSerieses.indexOf(s) > -1 && s === this.endingShapeOnSeriesNumber) {
+            this.endingShapeOnSeriesNumber -= 1;
+          }
+        }
+      }
+    }]);
+
+    return BarStacked;
+  }(Bar);
+
+  /**
+   * ApexCharts CandleStick Class responsible for drawing both Stacked Columns and Bars.
+   *
+   * @module CandleStick
+   **/
+
+  var CandleStick =
+  /*#__PURE__*/
+  function (_Bar) {
+    _inherits(CandleStick, _Bar);
+
+    function CandleStick() {
+      _classCallCheck(this, CandleStick);
+
+      return _possibleConstructorReturn(this, _getPrototypeOf(CandleStick).apply(this, arguments));
+    }
+
+    _createClass(CandleStick, [{
+      key: "draw",
+      value: function draw(series, seriesIndex) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var fill = new Fill(this.ctx);
+        this.candlestickOptions = this.w.config.plotOptions.candlestick;
+        var coreUtils = new CoreUtils(this.ctx, w);
+        series = coreUtils.getLogSeries(series);
+        this.series = series;
+        this.yRatio = coreUtils.getLogYRatios(this.yRatio);
+        this.initVariables(series);
+        var ret = graphics.group({
+          class: 'apexcharts-candlestick-series apexcharts-plot-series'
+        });
+
+        for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+          var pathTo = void 0,
+              pathFrom = void 0;
+          var x = void 0,
+              y = void 0,
+              xDivision = void 0,
+              // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+          zeroH = void 0; // zeroH is the baseline where 0 meets y axis
+
+          var yArrj = []; // hold y values of current iterating series
+
+          var xArrj = []; // hold x values of current iterating series
+
+          var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn
+
+          var elSeries = graphics.group({
+            class: "apexcharts-series",
+            seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+            rel: i + 1,
+            'data:realIndex': realIndex
+          });
+
+          if (series[i].length > 0) {
+            this.visibleI = this.visibleI + 1;
+          }
+
+          var strokeWidth = 0;
+          var barHeight = 0;
+          var barWidth = 0;
+
+          if (this.yRatio.length > 1) {
+            this.yaxisIndex = realIndex;
+          }
+
+          var initPositions = this.initialPositions();
+          y = initPositions.y;
+          barHeight = initPositions.barHeight;
+          x = initPositions.x;
+          barWidth = initPositions.barWidth;
+          xDivision = initPositions.xDivision;
+          zeroH = initPositions.zeroH;
+          xArrj.push(x + barWidth / 2); // eldatalabels
+
+          var elDataLabelsWrap = graphics.group({
+            class: 'apexcharts-datalabels'
+          });
+
+          for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+            if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+              this.isNullValue = true;
+            } else {
+              this.isNullValue = false;
+            }
+
+            if (w.config.stroke.show) {
+              if (this.isNullValue) {
+                strokeWidth = 0;
+              } else {
+                strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+              }
+            }
+
+            var color = void 0;
+            var paths = this.drawCandleStickPaths({
+              indexes: {
+                i: i,
+                j: j,
+                realIndex: realIndex,
+                bc: bc
+              },
+              x: x,
+              y: y,
+              xDivision: xDivision,
+              pathTo: pathTo,
+              pathFrom: pathFrom,
+              barWidth: barWidth,
+              zeroH: zeroH,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries
+            });
+            pathTo = paths.pathTo;
+            pathFrom = paths.pathFrom;
+            y = paths.y;
+            x = paths.x;
+            color = paths.color; // push current X
+
+            if (j > 0) {
+              xArrj.push(x + barWidth / 2);
+            }
+
+            yArrj.push(y);
+            var pathFill = fill.fillPath({
+              seriesNumber: realIndex,
+              color: color,
+              value: series[i][j]
+            });
+            var lineFill = this.candlestickOptions.wick.useFillColor ? color : undefined;
+            elSeries = this.renderSeries({
+              realIndex: realIndex,
+              pathFill: pathFill,
+              lineFill: lineFill,
+              j: j,
+              i: i,
+              pathFrom: pathFrom,
+              pathTo: pathTo,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries,
+              x: x,
+              y: y,
+              series: series,
+              barHeight: barHeight,
+              barWidth: barWidth,
+              elDataLabelsWrap: elDataLabelsWrap,
+              visibleSeries: this.visibleI,
+              type: 'candlestick'
+            });
+          } // push all x val arrays into main xArr
+
+
+          w.globals.seriesXvalues[realIndex] = xArrj;
+          w.globals.seriesYvalues[realIndex] = yArrj;
+          ret.add(elSeries);
+        }
+
+        return ret;
+      }
+    }, {
+      key: "drawCandleStickPaths",
+      value: function drawCandleStickPaths(_ref) {
+        var indexes = _ref.indexes,
+            x = _ref.x,
+            y = _ref.y,
+            xDivision = _ref.xDivision,
+            pathTo = _ref.pathTo,
+            pathFrom = _ref.pathFrom,
+            barWidth = _ref.barWidth,
+            zeroH = _ref.zeroH,
+            strokeWidth = _ref.strokeWidth;
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var i = indexes.i;
+        var j = indexes.j;
+        var isPositive = true;
+        var colorPos = w.config.plotOptions.candlestick.colors.upward;
+        var colorNeg = w.config.plotOptions.candlestick.colors.downward;
+        var yRatio = this.yRatio[this.yaxisIndex];
+        var realIndex = indexes.realIndex;
+        var ohlc = this.getOHLCValue(realIndex, j);
+        var l1 = zeroH;
+        var l2 = zeroH;
+
+        if (ohlc.o > ohlc.c) {
+          isPositive = false;
+        }
+
+        var y1 = Math.min(ohlc.o, ohlc.c);
+        var y2 = Math.max(ohlc.o, ohlc.c);
+
+        if (w.globals.isXNumeric) {
+          x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+        }
+
+        var barXPosition = x + barWidth * this.visibleI;
+
+        if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+          y1 = zeroH;
+        } else {
+          y1 = zeroH - y1 / yRatio;
+          y2 = zeroH - y2 / yRatio;
+          l1 = zeroH - ohlc.h / yRatio;
+          l2 = zeroH - ohlc.l / yRatio;
+        }
+
+        pathTo = graphics.move(barXPosition, zeroH);
+        pathFrom = graphics.move(barXPosition, y1);
+
+        if (w.globals.previousPaths.length > 0) {
+          pathFrom = this.getPathFrom(realIndex, j, true);
+        }
+
+        pathTo = graphics.move(barXPosition, y2) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth / 2, l1) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition + barWidth / 2, l2) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition, y1) + graphics.line(barXPosition, y2 - strokeWidth / 2);
+        pathFrom = pathFrom + graphics.move(barXPosition, y1);
+
+        if (!w.globals.isXNumeric) {
+          x = x + xDivision;
+        }
+
+        return {
+          pathTo: pathTo,
+          pathFrom: pathFrom,
+          x: x,
+          y: y2,
+          barXPosition: barXPosition,
+          color: isPositive ? colorPos : colorNeg
+        };
+      }
+    }, {
+      key: "getOHLCValue",
+      value: function getOHLCValue(i, j) {
+        var w = this.w;
+        return {
+          o: w.globals.seriesCandleO[i][j],
+          h: w.globals.seriesCandleH[i][j],
+          l: w.globals.seriesCandleL[i][j],
+          c: w.globals.seriesCandleC[i][j]
+        };
+      }
+    }]);
+
+    return CandleStick;
+  }(Bar);
+
+  var Crosshairs =
+  /*#__PURE__*/
+  function () {
+    function Crosshairs(ctx) {
+      _classCallCheck(this, Crosshairs);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    }
+
+    _createClass(Crosshairs, [{
+      key: "drawXCrosshairs",
+      value: function drawXCrosshairs() {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var filters = new Filters(this.ctx);
+        var crosshairGradient = w.config.xaxis.crosshairs.fill.gradient;
+        var crosshairShadow = w.config.xaxis.crosshairs.dropShadow;
+        var fillType = w.config.xaxis.crosshairs.fill.type;
+        var gradientFrom = crosshairGradient.colorFrom;
+        var gradientTo = crosshairGradient.colorTo;
+        var opacityFrom = crosshairGradient.opacityFrom;
+        var opacityTo = crosshairGradient.opacityTo;
+        var stops = crosshairGradient.stops;
+        var shadow = 'none';
+        var dropShadow = crosshairShadow.enabled;
+        var shadowLeft = crosshairShadow.left;
+        var shadowTop = crosshairShadow.top;
+        var shadowBlur = crosshairShadow.blur;
+        var shadowColor = crosshairShadow.color;
+        var shadowOpacity = crosshairShadow.opacity;
+        var xcrosshairsFill = w.config.xaxis.crosshairs.fill.color;
+
+        if (w.config.xaxis.crosshairs.show) {
+          if (fillType === 'gradient') {
+            xcrosshairsFill = graphics.drawGradient('vertical', gradientFrom, gradientTo, opacityFrom, opacityTo, null, stops, null);
+          }
+
+          var xcrosshairs = graphics.drawRect();
+
+          if (w.config.xaxis.crosshairs.width === 1) {
+            // to prevent drawing 2 lines, convert rect to line
+            xcrosshairs = graphics.drawLine();
+          }
+
+          xcrosshairs.attr({
+            class: 'apexcharts-xcrosshairs',
+            x: 0,
+            y: 0,
+            y2: w.globals.gridHeight,
+            width: Utils.isNumber(w.config.xaxis.crosshairs.width) ? w.config.xaxis.crosshairs.width : 0,
+            height: w.globals.gridHeight,
+            fill: xcrosshairsFill,
+            filter: shadow,
+            'fill-opacity': w.config.xaxis.crosshairs.opacity,
+            stroke: w.config.xaxis.crosshairs.stroke.color,
+            'stroke-width': w.config.xaxis.crosshairs.stroke.width,
+            'stroke-dasharray': w.config.xaxis.crosshairs.stroke.dashArray
+          });
+
+          if (dropShadow) {
+            xcrosshairs = filters.dropShadow(xcrosshairs, {
+              left: shadowLeft,
+              top: shadowTop,
+              blur: shadowBlur,
+              color: shadowColor,
+              opacity: shadowOpacity
+            });
+          }
+
+          w.globals.dom.elGraphical.add(xcrosshairs);
+        }
+      }
+    }, {
+      key: "drawYCrosshairs",
+      value: function drawYCrosshairs() {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var crosshair = w.config.yaxis[0].crosshairs;
+
+        if (w.config.yaxis[0].crosshairs.show) {
+          var ycrosshairs = graphics.drawLine(0, 0, w.globals.gridWidth, 0, crosshair.stroke.color, crosshair.stroke.dashArray, crosshair.stroke.width);
+          ycrosshairs.attr({
+            class: 'apexcharts-ycrosshairs'
+          });
+          w.globals.dom.elGraphical.add(ycrosshairs);
+        } // draw an invisible crosshair to help in positioning the yaxis tooltip
+
+
+        var ycrosshairsHidden = graphics.drawLine(0, 0, w.globals.gridWidth, 0, crosshair.stroke.color, 0, 0);
+        ycrosshairsHidden.attr({
+          class: 'apexcharts-ycrosshairs-hidden'
+        });
+        w.globals.dom.elGraphical.add(ycrosshairsHidden);
+      }
+    }]);
+
+    return Crosshairs;
+  }();
+
+  /**
+   * ApexCharts HeatMap Class.
+   * @module HeatMap
+   **/
+
+  var HeatMap =
+  /*#__PURE__*/
+  function () {
+    function HeatMap(ctx, xyRatios) {
+      _classCallCheck(this, HeatMap);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.xRatio = xyRatios.xRatio;
+      this.yRatio = xyRatios.yRatio;
+      this.negRange = false;
+      this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation;
+      this.rectRadius = this.w.config.plotOptions.heatmap.radius;
+      this.strokeWidth = this.w.config.stroke.width;
+    }
+
+    _createClass(HeatMap, [{
+      key: "draw",
+      value: function draw(series) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var ret = graphics.group({
+          class: 'apexcharts-heatmap'
+        });
+        ret.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); // width divided into equal parts
+
+        var xDivision = w.globals.gridWidth / w.globals.dataPoints;
+        var yDivision = w.globals.gridHeight / w.globals.series.length;
+        var y1 = 0;
+        var rev = false;
+        this.checkColorRange();
+        var heatSeries = series.slice();
+
+        if (w.config.yaxis[0].reversed) {
+          rev = true;
+          heatSeries.reverse();
+        }
+
+        for (var i = rev ? 0 : heatSeries.length - 1; rev ? i < heatSeries.length : i >= 0; rev ? i++ : i--) {
+          // el to which series will be drawn
+          var elSeries = graphics.group({
+            class: "apexcharts-series apexcharts-heatmap-series",
+            seriesName: Utils.escapeString(w.globals.seriesNames[i]),
+            rel: i + 1,
+            'data:realIndex': i
+          });
+
+          if (w.config.chart.dropShadow.enabled) {
+            var shadow = w.config.chart.dropShadow;
+            var filters = new Filters(this.ctx);
+            filters.dropShadow(elSeries, shadow, i);
+          }
+
+          var x1 = 0;
+
+          for (var j = 0; j < heatSeries[i].length; j++) {
+            var colorShadePercent = 1;
+            var heatColorProps = this.determineHeatColor(i, j);
+
+            if (w.globals.hasNegs || this.negRange) {
+              var shadeIntensity = w.config.plotOptions.heatmap.shadeIntensity;
+
+              if (w.config.plotOptions.heatmap.reverseNegativeShade) {
+                if (heatColorProps.percent < 0) {
+                  colorShadePercent = heatColorProps.percent / 100 * (shadeIntensity * 1.25);
+                } else {
+                  colorShadePercent = (1 - heatColorProps.percent / 100) * (shadeIntensity * 1.25);
+                }
+              } else {
+                if (heatColorProps.percent < 0) {
+                  colorShadePercent = 1 - (1 + heatColorProps.percent / 100) * shadeIntensity;
+                } else {
+                  colorShadePercent = (1 - heatColorProps.percent / 100) * shadeIntensity;
+                }
+              }
+            } else {
+              colorShadePercent = 1 - heatColorProps.percent / 100;
+            }
+
+            var color = heatColorProps.color;
+
+            if (w.config.plotOptions.heatmap.enableShades) {
+              var utils = new Utils();
+              color = Utils.hexToRgba(utils.shadeColor(colorShadePercent, heatColorProps.color), w.config.fill.opacity);
+            }
+
+            var radius = this.rectRadius;
+            var rect = graphics.drawRect(x1, y1, xDivision, yDivision, radius);
+            rect.attr({
+              cx: x1,
+              cy: y1
+            });
+            rect.node.classList.add('apexcharts-heatmap-rect');
+            elSeries.add(rect);
+            rect.attr({
+              fill: color,
+              i: i,
+              index: i,
+              j: j,
+              val: heatSeries[i][j],
+              'stroke-width': this.strokeWidth,
+              stroke: w.globals.stroke.colors[0],
+              color: color
+            });
+            rect.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, rect));
+            rect.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, rect));
+            rect.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, rect));
+
+            if (w.config.chart.animations.enabled && !w.globals.dataChanged) {
+              var speed = 1;
+
+              if (!w.globals.resized) {
+                speed = w.config.chart.animations.speed;
+              }
+
+              this.animateHeatMap(rect, x1, y1, xDivision, yDivision, speed);
+            }
+
+            if (w.globals.dataChanged) {
+              var _speed = 1;
+
+              if (this.dynamicAnim.enabled && w.globals.shouldAnimate) {
+                _speed = this.dynamicAnim.speed;
+                var colorFrom = w.globals.previousPaths[i] && w.globals.previousPaths[i][j] && w.globals.previousPaths[i][j].color;
+                if (!colorFrom) colorFrom = 'rgba(255, 255, 255, 0)';
+                this.animateHeatColor(rect, Utils.isColorHex(colorFrom) ? colorFrom : Utils.rgb2hex(colorFrom), Utils.isColorHex(color) ? color : Utils.rgb2hex(color), _speed);
+              }
+            }
+
+            var dataLabels = this.calculateHeatmapDataLabels({
+              x: x1,
+              y: y1,
+              i: i,
+              j: j,
+              series: heatSeries,
+              rectHeight: yDivision,
+              rectWidth: xDivision
+            });
+
+            if (dataLabels !== null) {
+              elSeries.add(dataLabels);
+            }
+
+            x1 = x1 + xDivision;
+          }
+
+          y1 = y1 + yDivision;
+          ret.add(elSeries);
+        } // adjust yaxis labels for heatmap
+
+
+        var yAxisScale = w.globals.yAxisScale[0].result.slice();
+
+        if (w.config.yaxis[0].reversed) {
+          yAxisScale.unshift('');
+        } else {
+          yAxisScale.push('');
+        }
+
+        w.globals.yAxisScale[0].result = yAxisScale;
+        var divisor = w.globals.gridHeight / w.globals.series.length;
+        w.config.yaxis[0].labels.offsetY = -(divisor / 2);
+        return ret;
+      }
+    }, {
+      key: "checkColorRange",
+      value: function checkColorRange() {
+        var _this = this;
+
+        var w = this.w;
+        var heatmap = w.config.plotOptions.heatmap;
+
+        if (heatmap.colorScale.ranges.length > 0) {
+          heatmap.colorScale.ranges.map(function (range, index) {
+            if (range.from < 0) {
+              _this.negRange = true;
+            }
+          });
+        }
+      }
+    }, {
+      key: "determineHeatColor",
+      value: function determineHeatColor(i, j) {
+        var w = this.w;
+        var val = w.globals.series[i][j];
+        var heatmap = w.config.plotOptions.heatmap;
+        var seriesNumber = heatmap.colorScale.inverse ? j : i;
+        var color = w.globals.colors[seriesNumber];
+        var min = Math.min.apply(Math, _toConsumableArray(w.globals.series[i]));
+        var max = Math.max.apply(Math, _toConsumableArray(w.globals.series[i]));
+
+        if (!heatmap.distributed) {
+          min = w.globals.minY;
+          max = w.globals.maxY;
+        }
+
+        if (typeof heatmap.colorScale.min !== 'undefined') {
+          min = heatmap.colorScale.min < w.globals.minY ? heatmap.colorScale.min : w.globals.minY;
+          max = heatmap.colorScale.max > w.globals.maxY ? heatmap.colorScale.max : w.globals.maxY;
+        }
+
+        var total = Math.abs(max) + Math.abs(min);
+        var percent = 100 * val / (total === 0 ? total - 0.000001 : total);
+
+        if (heatmap.colorScale.ranges.length > 0) {
+          var colorRange = heatmap.colorScale.ranges;
+          colorRange.map(function (range, index) {
+            if (val >= range.from && val <= range.to) {
+              color = range.color;
+              min = range.from;
+              max = range.to;
+
+              var _total = Math.abs(max) + Math.abs(min);
+
+              percent = 100 * val / (_total === 0 ? _total - 0.000001 : _total);
+            }
+          });
+        }
+
+        return {
+          color: color,
+          percent: percent
+        };
+      }
+    }, {
+      key: "calculateHeatmapDataLabels",
+      value: function calculateHeatmapDataLabels(_ref) {
+        var x = _ref.x,
+            y = _ref.y,
+            i = _ref.i,
+            j = _ref.j,
+            series = _ref.series,
+            rectHeight = _ref.rectHeight,
+            rectWidth = _ref.rectWidth;
+        var w = this.w; // let graphics = new Graphics(this.ctx)
+
+        var dataLabelsConfig = w.config.dataLabels;
+        var graphics = new Graphics(this.ctx);
+        var dataLabels = new DataLabels(this.ctx);
+        var formatter = dataLabelsConfig.formatter;
+        var elDataLabelsWrap = null;
+
+        if (dataLabelsConfig.enabled) {
+          elDataLabelsWrap = graphics.group({
+            class: 'apexcharts-data-labels'
+          });
+          var offX = dataLabelsConfig.offsetX;
+          var offY = dataLabelsConfig.offsetY;
+          var dataLabelsX = x + rectWidth / 2 + offX;
+          var dataLabelsY = y + rectHeight / 2 + parseInt(dataLabelsConfig.style.fontSize) / 3 + offY;
+          var text = formatter(w.globals.series[i][j], {
+            seriesIndex: i,
+            dataPointIndex: j,
+            w: w
+          });
+          dataLabels.plotDataLabelsText({
+            x: dataLabelsX,
+            y: dataLabelsY,
+            text: text,
+            i: i,
+            j: j,
+            parent: elDataLabelsWrap,
+            dataLabelsConfig: dataLabelsConfig
+          });
+        }
+
+        return elDataLabelsWrap;
+      }
+    }, {
+      key: "animateHeatMap",
+      value: function animateHeatMap(el, x, y, width, height, speed) {
+        var _this2 = this;
+
+        var animations = new Animations(this.ctx);
+        animations.animateRect(el, {
+          x: x + width / 2,
+          y: y + height / 2,
+          width: 0,
+          height: 0
+        }, {
+          x: x,
+          y: y,
+          width: width,
+          height: height
+        }, speed, function () {
+          _this2.w.globals.animationEnded = true;
+        });
+      }
+    }, {
+      key: "animateHeatColor",
+      value: function animateHeatColor(el, colorFrom, colorTo, speed) {
+        el.attr({
+          fill: colorFrom
+        }).animate(speed).attr({
+          fill: colorTo
+        });
+      }
+    }]);
+
+    return HeatMap;
+  }();
+
+  /**
+   * ApexCharts Pie Class for drawing Pie / Donut Charts.
+   * @module Pie
+   **/
+
+  var Pie =
+  /*#__PURE__*/
+  function () {
+    function Pie(ctx) {
+      _classCallCheck(this, Pie);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.chartType = this.w.config.chart.type;
+      this.initialAnim = this.w.config.chart.animations.enabled;
+      this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+      this.animBeginArr = [0];
+      this.animDur = 0;
+      this.donutDataLabels = this.w.config.plotOptions.pie.donut.labels;
+      var w = this.w;
+      this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors;
+      this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.svgHeight - 35 : w.globals.gridWidth;
+      this.centerY = this.defaultSize / 2;
+      this.centerX = w.globals.gridWidth / 2;
+      this.fullAngle = 360;
+      this.size = 0;
+      this.donutSize = 0;
+      this.sliceLabels = [];
+      this.prevSectorAngleArr = []; // for dynamic animations
+    }
+
+    _createClass(Pie, [{
+      key: "draw",
+      value: function draw(series) {
+        var self = this;
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var ret = graphics.group({
+          class: 'apexcharts-pie'
+        });
+        var total = 0;
+
+        for (var k = 0; k < series.length; k++) {
+          // CALCULATE THE TOTAL
+          total += Utils.negToZero(series[k]);
+        }
+
+        var sectorAngleArr = []; // el to which series will be drawn
+
+        var elSeries = graphics.group(); // prevent division by zero error if there is no data
+
+        if (total === 0) {
+          total = 0.00001;
+        }
+
+        for (var i = 0; i < series.length; i++) {
+          // CALCULATE THE ANGLES
+          var angle = this.fullAngle * Utils.negToZero(series[i]) / total;
+          sectorAngleArr.push(angle);
+        }
+
+        if (w.globals.dataChanged) {
+          var prevTotal = 0;
+
+          for (var _k = 0; _k < w.globals.previousPaths.length; _k++) {
+            // CALCULATE THE PREV TOTAL
+            prevTotal += Utils.negToZero(w.globals.previousPaths[_k]);
+          }
+
+          var previousAngle;
+
+          for (var _i = 0; _i < w.globals.previousPaths.length; _i++) {
+            // CALCULATE THE PREVIOUS ANGLES
+            previousAngle = this.fullAngle * Utils.negToZero(w.globals.previousPaths[_i]) / prevTotal;
+            this.prevSectorAngleArr.push(previousAngle);
+          }
+        }
+
+        this.size = this.defaultSize / 2.05 - w.config.stroke.width - w.config.chart.dropShadow.blur;
+
+        if (w.config.plotOptions.pie.size !== undefined) {
+          this.size = w.config.plotOptions.pie.size;
+        }
+
+        this.donutSize = this.size * parseInt(w.config.plotOptions.pie.donut.size) / 100;
+        var scaleSize = w.config.plotOptions.pie.customScale;
+        var halfW = w.globals.gridWidth / 2;
+        var halfH = w.globals.gridHeight / 2;
+        var translateX = halfW - w.globals.gridWidth / 2 * scaleSize;
+        var translateY = halfH - w.globals.gridHeight / 2 * scaleSize;
+
+        if (this.donutDataLabels.show) {
+          var dataLabels = this.renderInnerDataLabels(this.donutDataLabels, {
+            hollowSize: this.donutSize,
+            centerX: this.centerX,
+            centerY: this.centerY,
+            opacity: this.donutDataLabels.show,
+            translateX: translateX,
+            translateY: translateY
+          });
+          ret.add(dataLabels);
+        }
+
+        if (w.config.chart.type === 'donut') {
+          // draw the inner circle and add some text to it
+          var circle = graphics.drawCircle(this.donutSize);
+          circle.attr({
+            cx: this.centerX,
+            cy: this.centerY,
+            fill: w.config.plotOptions.pie.donut.background
+          });
+          elSeries.add(circle);
+        }
+
+        var elG = self.drawArcs(sectorAngleArr, series); // add slice dataLabels at the end
+
+        this.sliceLabels.forEach(function (s) {
+          elG.add(s);
+        });
+        elSeries.attr({
+          transform: "translate(".concat(translateX, ", ").concat(translateY - 5, ") scale(").concat(scaleSize, ")")
+        });
+        ret.attr({
+          'data:innerTranslateX': translateX,
+          'data:innerTranslateY': translateY - 25
+        });
+        elSeries.add(elG);
+        ret.add(elSeries);
+        return ret;
+      } // core function for drawing pie arcs
+
+    }, {
+      key: "drawArcs",
+      value: function drawArcs(sectorAngleArr, series) {
+        var w = this.w;
+        var filters = new Filters(this.ctx);
+        var graphics = new Graphics(this.ctx);
+        var fill = new Fill(this.ctx);
+        var g = graphics.group();
+        var startAngle = 0;
+        var prevStartAngle = 0;
+        var endAngle = 0;
+        var prevEndAngle = 0;
+        this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0;
+
+        for (var i = 0; i < sectorAngleArr.length; i++) {
+          // if(sectorAngleArr[i]>0) {
+          var elPieArc = graphics.group({
+            class: "apexcharts-series apexcharts-pie-series",
+            seriesName: Utils.escapeString(w.globals.seriesNames[i]),
+            id: 'apexcharts-series-' + i,
+            rel: i + 1
+          });
+          g.add(elPieArc);
+          startAngle = endAngle;
+          prevStartAngle = prevEndAngle;
+          endAngle = startAngle + sectorAngleArr[i];
+          prevEndAngle = prevStartAngle + this.prevSectorAngleArr[i];
+          var angle = endAngle - startAngle;
+          var pathFill = fill.fillPath({
+            seriesNumber: i,
+            size: this.size,
+            value: series[i]
+          }); // additionaly, pass size for gradient drawing in the fillPath function
+
+          var path = this.getChangedPath(prevStartAngle, prevEndAngle);
+          var elPath = graphics.drawPath({
+            d: path,
+            stroke: this.lineColorArr instanceof Array ? this.lineColorArr[i] : this.lineColorArr,
+            strokeWidth: this.strokeWidth,
+            fill: pathFill,
+            fillOpacity: w.config.fill.opacity,
+            classes: 'apexcharts-pie-area'
+          });
+          elPath.attr({
+            id: "apexcharts-".concat(w.config.chart.type, "-slice-").concat(i),
+            index: 0,
+            j: i
+          });
+
+          if (w.config.chart.dropShadow.enabled) {
+            var shadow = w.config.chart.dropShadow;
+            filters.dropShadow(elPath, shadow, i);
+          }
+
+          this.addListeners(elPath, this.donutDataLabels);
+          Graphics.setAttrs(elPath.node, {
+            'data:angle': angle,
+            'data:startAngle': startAngle,
+            'data:strokeWidth': this.strokeWidth,
+            'data:value': series[i]
+          });
+          var labelPosition = {
+            x: 0,
+            y: 0
+          };
+
+          if (w.config.chart.type === 'pie') {
+            labelPosition = Utils.polarToCartesian(this.centerX, this.centerY, this.size / 1.25 + w.config.plotOptions.pie.dataLabels.offset, startAngle + (endAngle - startAngle) / 2);
+          } else if (w.config.chart.type === 'donut') {
+            labelPosition = Utils.polarToCartesian(this.centerX, this.centerY, (this.size + this.donutSize) / 2 + w.config.plotOptions.pie.dataLabels.offset, startAngle + (endAngle - startAngle) / 2);
+          }
+
+          elPieArc.add(elPath); // Animation code starts
+
+          var dur = 0;
+
+          if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+            dur = (endAngle - startAngle) / this.fullAngle * w.config.chart.animations.speed;
+            this.animDur = dur + this.animDur;
+            this.animBeginArr.push(this.animDur);
+          } else {
+            this.animBeginArr.push(0);
+          }
+
+          if (this.dynamicAnim && w.globals.dataChanged) {
+            this.animatePaths(elPath, {
+              endAngle: endAngle,
+              startAngle: startAngle,
+              prevStartAngle: prevStartAngle,
+              prevEndAngle: prevEndAngle,
+              animateStartingPos: true,
+              i: i,
+              animBeginArr: this.animBeginArr,
+              dur: w.config.chart.animations.dynamicAnimation.speed
+            });
+          } else {
+            this.animatePaths(elPath, {
+              endAngle: endAngle,
+              startAngle: startAngle,
+              i: i,
+              totalItems: sectorAngleArr.length - 1,
+              animBeginArr: this.animBeginArr,
+              dur: dur
+            });
+          } // animation code ends
+
+
+          if (w.config.plotOptions.pie.expandOnClick) {
+            elPath.click(this.pieClicked.bind(this, i));
+          }
+
+          if (w.config.dataLabels.enabled) {
+            var xPos = labelPosition.x;
+            var yPos = labelPosition.y;
+            var text = 100 * (endAngle - startAngle) / 360 + '%';
+
+            if (angle !== 0 && w.config.plotOptions.pie.dataLabels.minAngleToShowLabel < sectorAngleArr[i]) {
+              var formatter = w.config.dataLabels.formatter;
+
+              if (formatter !== undefined) {
+                text = formatter(w.globals.seriesPercent[i][0], {
+                  seriesIndex: i,
+                  w: w
+                });
+              }
+
+              var foreColor = w.globals.dataLabels.style.colors[i];
+              var elPieLabel = graphics.drawText({
+                x: xPos,
+                y: yPos,
+                text: text,
+                textAnchor: 'middle',
+                fontSize: w.config.dataLabels.style.fontSize,
+                fontFamily: w.config.dataLabels.style.fontFamily,
+                foreColor: foreColor
+              });
+
+              if (w.config.dataLabels.dropShadow.enabled) {
+                var textShadow = w.config.dataLabels.dropShadow;
+
+                var _filters = new Filters(this.ctx);
+
+                _filters.dropShadow(elPieLabel, textShadow);
+              }
+
+              elPieLabel.node.classList.add('apexcharts-pie-label');
+
+              if (w.config.chart.animations.animate && w.globals.resized === false) {
+                elPieLabel.node.classList.add('apexcharts-pie-label-delay');
+                elPieLabel.node.style.animationDelay = w.config.chart.animations.speed / 940 + 's';
+              }
+
+              this.sliceLabels.push(elPieLabel);
+            }
+          } // }
+
+        }
+
+        return g;
+      }
+    }, {
+      key: "addListeners",
+      value: function addListeners(elPath, dataLabels) {
+        var graphics = new Graphics(this.ctx); // append filters on mouseenter and mouseleave
+
+        elPath.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, elPath));
+        elPath.node.addEventListener('mouseenter', this.printDataLabelsInner.bind(this, elPath.node, dataLabels));
+        elPath.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, elPath));
+        elPath.node.addEventListener('mouseleave', this.revertDataLabelsInner.bind(this, elPath.node, dataLabels));
+        elPath.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, elPath));
+        elPath.node.addEventListener('mousedown', this.printDataLabelsInner.bind(this, elPath.node, dataLabels));
+      } // This function can be used for other circle charts too
+
+    }, {
+      key: "animatePaths",
+      value: function animatePaths(el, opts) {
+        var w = this.w;
+        var me = this;
+        var angle = opts.endAngle - opts.startAngle;
+        var prevAngle = angle;
+        var fromStartAngle = opts.startAngle;
+        var toStartAngle = opts.startAngle;
+
+        if (opts.prevStartAngle !== undefined && opts.prevEndAngle !== undefined) {
+          fromStartAngle = opts.prevEndAngle;
+          prevAngle = opts.prevEndAngle - opts.prevStartAngle;
+        }
+
+        if (opts.i === w.config.series.length - 1) {
+          // some adjustments for the last overlapping paths
+          if (angle + toStartAngle > this.fullAngle) {
+            opts.endAngle = opts.endAngle - (angle + toStartAngle);
+          } else if (angle + toStartAngle < this.fullAngle) {
+            opts.endAngle = opts.endAngle + (this.fullAngle - (angle + toStartAngle));
+          }
+        }
+
+        if (angle === this.fullAngle) angle = this.fullAngle - 0.01;
+        me.animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts);
+      }
+    }, {
+      key: "animateArc",
+      value: function animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts) {
+        var me = this;
+        var w = this.w;
+        var size = me.size;
+
+        if (!size) {
+          size = opts.size;
+        }
+
+        var path;
+
+        if (isNaN(fromStartAngle) || isNaN(prevAngle)) {
+          fromStartAngle = toStartAngle;
+          prevAngle = angle;
+          opts.dur = 0;
+        }
+
+        var currAngle = angle;
+        var startAngle = toStartAngle;
+        var fromAngle = fromStartAngle - toStartAngle;
+
+        if (w.globals.dataChanged && opts.shouldSetPrevPaths) {
+          // to avoid flickering, set prev path first and then we will animate from there
+          path = me.getPiePath({
+            me: me,
+            startAngle: startAngle,
+            angle: prevAngle,
+            size: size
+          });
+          el.attr({
+            d: path
+          });
+        }
+
+        if (opts.dur !== 0) {
+          el.animate(opts.dur, w.globals.easing, opts.animBeginArr[opts.i]).afterAll(function () {
+            if (w.config.chart.type === 'pie' || w.config.chart.type === 'donut') {
+              this.animate(300).attr({
+                'stroke-width': w.config.stroke.width
+              });
+            }
+
+            w.globals.animationEnded = true;
+          }).during(function (pos) {
+            currAngle = fromAngle + (angle - fromAngle) * pos;
+
+            if (opts.animateStartingPos) {
+              currAngle = prevAngle + (angle - prevAngle) * pos;
+              startAngle = fromStartAngle - prevAngle + (toStartAngle - (fromStartAngle - prevAngle)) * pos;
+            }
+
+            path = me.getPiePath({
+              me: me,
+              startAngle: startAngle,
+              angle: currAngle,
+              size: size
+            });
+            el.node.setAttribute('data:pathOrig', path);
+            el.attr({
+              d: path
+            });
+          });
+        } else {
+          path = me.getPiePath({
+            me: me,
+            startAngle: startAngle,
+            angle: angle,
+            size: size
+          });
+
+          if (!opts.isTrack) {
+            w.globals.animationEnded = true;
+          }
+
+          el.node.setAttribute('data:pathOrig', path);
+          el.attr({
+            d: path
+          });
+        }
+      }
+    }, {
+      key: "pieClicked",
+      value: function pieClicked(i) {
+        var w = this.w;
+        var me = this;
+        var path;
+        var size = me.size + 4;
+        var elPath = w.globals.dom.Paper.select("#apexcharts-".concat(w.config.chart.type.toLowerCase(), "-slice-").concat(i)).members[0];
+        var pathFrom = elPath.attr('d');
+
+        if (elPath.attr('data:pieClicked') === 'true') {
+          elPath.attr({
+            'data:pieClicked': 'false'
+          });
+          this.revertDataLabelsInner(elPath.node, this.donutDataLabels);
+          var origPath = elPath.attr('data:pathOrig');
+          elPath.attr({
+            d: origPath
+          });
+          return;
+        } else {
+          // reset all elems
+          var allEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-pie-area');
+          Array.prototype.forEach.call(allEls, function (pieSlice) {
+            pieSlice.setAttribute('data:pieClicked', 'false');
+            var origPath = pieSlice.getAttribute('data:pathOrig');
+            pieSlice.setAttribute('d', origPath);
+          });
+          elPath.attr('data:pieClicked', 'true');
+        }
+
+        var startAngle = parseInt(elPath.attr('data:startAngle'));
+        var angle = parseInt(elPath.attr('data:angle'));
+        path = me.getPiePath({
+          me: me,
+          startAngle: startAngle,
+          angle: angle,
+          size: size
+        });
+        if (angle === 360) return;
+        elPath.plot(path).animate(1).plot(pathFrom).animate(100).plot(path);
+      }
+    }, {
+      key: "getChangedPath",
+      value: function getChangedPath(prevStartAngle, prevEndAngle) {
+        var path = '';
+
+        if (this.dynamicAnim && this.w.globals.dataChanged) {
+          path = this.getPiePath({
+            me: this,
+            startAngle: prevStartAngle,
+            angle: prevEndAngle - prevStartAngle,
+            size: this.size
+          });
+        }
+
+        return path;
+      }
+    }, {
+      key: "getPiePath",
+      value: function getPiePath(_ref) {
+        var me = _ref.me,
+            startAngle = _ref.startAngle,
+            angle = _ref.angle,
+            size = _ref.size;
+        var w = this.w;
+        var path;
+        var startDeg = startAngle;
+        var startRadians = Math.PI * (startDeg - 90) / 180;
+        var endDeg = angle + startAngle;
+        if (Math.ceil(endDeg) >= 360) endDeg = 359.99;
+        var endRadians = Math.PI * (endDeg - 90) / 180;
+        var x1 = me.centerX + size * Math.cos(startRadians);
+        var y1 = me.centerY + size * Math.sin(startRadians);
+        var x2 = me.centerX + size * Math.cos(endRadians);
+        var y2 = me.centerY + size * Math.sin(endRadians);
+        var startInner = Utils.polarToCartesian(me.centerX, me.centerY, me.donutSize, endDeg);
+        var endInner = Utils.polarToCartesian(me.centerX, me.centerY, me.donutSize, startDeg);
+        var largeArc = angle > 180 ? 1 : 0;
+
+        if (w.config.chart.type === 'donut') {
+          path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2, 'L', startInner.x, startInner.y, 'A', me.donutSize, me.donutSize, 0, largeArc, 0, endInner.x, endInner.y, 'L', x1, y1, 'z'].join(' ');
+        } else if (w.config.chart.type === 'pie') {
+          path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2, 'L', me.centerX, me.centerY, 'L', x1, y1].join(' ');
+        } else {
+          path = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2].join(' ');
+        }
+
+        return path;
+      }
+    }, {
+      key: "renderInnerDataLabels",
+      value: function renderInnerDataLabels(dataLabelsConfig, opts) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var g = graphics.group({
+          class: 'apexcharts-datalabels-group',
+          transform: "translate(".concat(opts.translateX ? opts.translateX : 0, ", ").concat(opts.translateY ? opts.translateY : 0, ")")
+        });
+        var showTotal = dataLabelsConfig.total.show;
+        g.node.style.opacity = opts.opacity;
+        var x = opts.centerX;
+        var y = opts.centerY;
+        var labelColor, valueColor;
+
+        if (dataLabelsConfig.name.color === undefined) {
+          labelColor = w.globals.colors[0];
+        } else {
+          labelColor = dataLabelsConfig.name.color;
+        }
+
+        if (dataLabelsConfig.value.color === undefined) {
+          valueColor = w.config.chart.foreColor;
+        } else {
+          valueColor = dataLabelsConfig.value.color;
+        }
+
+        var lbFormatter = dataLabelsConfig.value.formatter;
+        var val = '';
+        var name = '';
+
+        if (showTotal) {
+          labelColor = dataLabelsConfig.total.color;
+          name = dataLabelsConfig.total.label;
+          val = dataLabelsConfig.total.formatter(w);
+        } else {
+          if (w.globals.series.length === 1) {
+            val = lbFormatter(w.globals.series[0], w);
+            name = w.globals.seriesNames[0];
+          }
+        }
+
+        if (dataLabelsConfig.name.show) {
+          var elLabel = graphics.drawText({
+            x: x,
+            y: y + parseInt(dataLabelsConfig.name.offsetY),
+            text: name,
+            textAnchor: 'middle',
+            foreColor: labelColor,
+            fontSize: dataLabelsConfig.name.fontSize,
+            fontFamily: dataLabelsConfig.name.fontFamily
+          });
+          elLabel.node.classList.add('apexcharts-datalabel-label');
+          g.add(elLabel);
+        }
+
+        if (dataLabelsConfig.value.show) {
+          var valOffset = dataLabelsConfig.name.show ? parseInt(dataLabelsConfig.value.offsetY) + 16 : dataLabelsConfig.value.offsetY;
+          var elValue = graphics.drawText({
+            x: x,
+            y: y + valOffset,
+            text: val,
+            textAnchor: 'middle',
+            foreColor: valueColor,
+            fontSize: dataLabelsConfig.value.fontSize,
+            fontFamily: dataLabelsConfig.value.fontFamily
+          });
+          elValue.node.classList.add('apexcharts-datalabel-value');
+          g.add(elValue);
+        } // for a multi-series circle chart, we need to show total value instead of first series labels
+
+
+        return g;
+      }
+      /**
+       *
+       * @param {string} name - The name of the series
+       * @param {string} val - The value of that series
+       * @param {object} el - Optional el (indicates which series was hovered/clicked). If this param is not present, means we need to show total
+       */
+
+    }, {
+      key: "printInnerLabels",
+      value: function printInnerLabels(labelsConfig, name, val, el) {
+        var w = this.w;
+        var labelColor;
+
+        if (el) {
+          if (labelsConfig.name.color === undefined) {
+            labelColor = w.globals.colors[parseInt(el.parentNode.getAttribute('rel')) - 1];
+          } else {
+            labelColor = labelsConfig.name.color;
+          }
+        } else {
+          if (w.globals.series.length > 1 && labelsConfig.total.show) {
+            labelColor = labelsConfig.total.color;
+          }
+        }
+
+        var elLabel = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-label');
+        var elValue = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-value');
+        var lbFormatter = labelsConfig.value.formatter;
+        val = lbFormatter(val, w); // we need to show Total Val - so get the formatter of it
+
+        if (!el && typeof labelsConfig.total.formatter === 'function') {
+          val = labelsConfig.total.formatter(w);
+        }
+
+        if (elLabel !== null) {
+          elLabel.textContent = name;
+        }
+
+        if (elValue !== null) {
+          elValue.textContent = val;
+        }
+
+        if (elLabel !== null) {
+          elLabel.style.fill = labelColor;
+        }
+      }
+    }, {
+      key: "printDataLabelsInner",
+      value: function printDataLabelsInner(el, dataLabelsConfig) {
+        var w = this.w;
+        var val = el.getAttribute('data:value');
+        var name = w.globals.seriesNames[parseInt(el.parentNode.getAttribute('rel')) - 1];
+
+        if (w.globals.series.length > 1) {
+          this.printInnerLabels(dataLabelsConfig, name, val, el);
+        }
+
+        var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group');
+
+        if (dataLabelsGroup !== null) {
+          dataLabelsGroup.style.opacity = 1;
+        }
+      }
+    }, {
+      key: "revertDataLabelsInner",
+      value: function revertDataLabelsInner(el, dataLabelsConfig, event) {
+        var _this = this;
+
+        var w = this.w;
+        var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group');
+
+        if (dataLabelsConfig.total.show && w.globals.series.length > 1) {
+          var pie = new Pie(this.ctx);
+          pie.printInnerLabels(dataLabelsConfig, dataLabelsConfig.total.label, dataLabelsConfig.total.formatter(w));
+        } else {
+          var slices = document.querySelectorAll(".apexcharts-pie-area");
+          var sliceOut = false;
+          slices.forEach(function (s) {
+            if (s.getAttribute('data:pieClicked') === 'true') {
+              sliceOut = true;
+
+              _this.printDataLabelsInner(s, dataLabelsConfig);
+            }
+          });
+
+          if (!sliceOut) {
+            if (w.globals.selectedDataPoints.length && w.globals.series.length > 1) {
+              if (w.globals.selectedDataPoints[0].length > 0) {
+                var index = w.globals.selectedDataPoints[0];
+
+                var _el = w.globals.dom.baseEl.querySelector("#apexcharts-".concat(w.config.chart.type.toLowerCase(), "-slice-").concat(index));
+
+                this.printDataLabelsInner(_el, dataLabelsConfig);
+              } else if (dataLabelsGroup && w.globals.selectedDataPoints.length && w.globals.selectedDataPoints[0].length === 0) {
+                dataLabelsGroup.style.opacity = 0;
+              }
+            } else {
+              if (dataLabelsGroup && w.globals.series.length > 1) {
+                dataLabelsGroup.style.opacity = 0;
+              }
+            }
+          }
+        }
+      }
+    }]);
+
+    return Pie;
+  }();
+
+  /**
+   * ApexCharts Radar Class for Spider/Radar Charts.
+   * @module Radar
+   **/
+
+  var Radar =
+  /*#__PURE__*/
+  function () {
+    function Radar(ctx) {
+      _classCallCheck(this, Radar);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.chartType = this.w.config.chart.type;
+      this.initialAnim = this.w.config.chart.animations.enabled;
+      this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;
+      this.animDur = 0;
+      var w = this.w;
+      this.graphics = new Graphics(this.ctx);
+      this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors;
+      this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.svgHeight - 35 : w.globals.gridWidth;
+      this.maxValue = this.w.globals.maxY;
+      this.polygons = w.config.plotOptions.radar.polygons;
+      this.maxLabelWidth = 20;
+      var longestLabel = w.globals.labels.slice().sort(function (a, b) {
+        return b.length - a.length;
+      })[0];
+      var labelWidth = this.graphics.getTextRects(longestLabel, w.config.dataLabels.style.fontSize);
+      this.size = this.defaultSize / 2.1 - w.config.stroke.width - w.config.chart.dropShadow.blur - labelWidth.width / 1.75;
+
+      if (w.config.plotOptions.radar.size !== undefined) {
+        this.size = w.config.plotOptions.radar.size;
+      }
+
+      this.dataRadiusOfPercent = [];
+      this.dataRadius = [];
+      this.angleArr = [];
+      this.yaxisLabelsTextsPos = [];
+    }
+
+    _createClass(Radar, [{
+      key: "draw",
+      value: function draw(series) {
+        var _this = this;
+
+        var w = this.w;
+        var fill = new Fill(this.ctx);
+        var allSeries = [];
+        this.dataPointsLen = series[w.globals.maxValsInArrayIndex].length;
+        this.disAngle = Math.PI * 2 / this.dataPointsLen;
+        var halfW = w.globals.gridWidth / 2;
+        var halfH = w.globals.gridHeight / 2;
+        var translateX = halfW;
+        var translateY = halfH;
+        var ret = this.graphics.group({
+          class: 'apexcharts-radar-series',
+          'data:innerTranslateX': translateX,
+          'data:innerTranslateY': translateY - 25,
+          transform: "translate(".concat(translateX || 0, ", ").concat(translateY || 0, ")")
+        });
+        var dataPointsPos = [];
+        var elPointsMain = null;
+        this.yaxisLabels = this.graphics.group({
+          class: 'apexcharts-yaxis'
+        });
+        series.forEach(function (s, i) {
+          // el to which series will be drawn
+          var elSeries = _this.graphics.group().attr({
+            class: "apexcharts-series",
+            seriesName: Utils.escapeString(w.globals.seriesNames[i]),
+            rel: i + 1,
+            'data:realIndex': i
+          });
+
+          _this.dataRadiusOfPercent[i] = [];
+          _this.dataRadius[i] = [];
+          _this.angleArr[i] = [];
+          s.forEach(function (dv, j) {
+            _this.dataRadiusOfPercent[i][j] = dv / _this.maxValue;
+            _this.dataRadius[i][j] = _this.dataRadiusOfPercent[i][j] * _this.size;
+            _this.angleArr[i][j] = j * _this.disAngle;
+          });
+          dataPointsPos = _this.getDataPointsPos(_this.dataRadius[i], _this.angleArr[i]);
+
+          var paths = _this.createPaths(dataPointsPos, {
+            x: 0,
+            y: 0
+          }); // points
+
+
+          elPointsMain = _this.graphics.group({
+            class: 'apexcharts-series-markers-wrap hidden'
+          });
+          w.globals.delayedElements.push({
+            el: elPointsMain.node,
+            index: i
+          });
+          var defaultRenderedPathOptions = {
+            i: i,
+            realIndex: i,
+            animationDelay: i,
+            initialSpeed: w.config.chart.animations.speed,
+            dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+            className: "apexcharts-radar",
+            id: "apexcharts-radar",
+            shouldClipToGrid: false,
+            bindEventsOnPaths: false,
+            stroke: w.globals.stroke.colors[i],
+            strokeLineCap: w.config.stroke.lineCap
+          };
+          var pathFrom = null;
+
+          if (w.globals.previousPaths.length > 0) {
+            pathFrom = _this.getPathFrom(i);
+          }
+
+          for (var p = 0; p < paths.linePathsTo.length; p++) {
+            var renderedLinePath = _this.graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+              pathFrom: pathFrom === null ? paths.linePathsFrom[p] : pathFrom,
+              pathTo: paths.linePathsTo[p],
+              strokeWidth: Array.isArray(w.config.stroke.width) ? w.config.stroke.width[i] : w.config.stroke.width,
+              fill: 'none',
+              drawShadow: false
+            }));
+
+            elSeries.add(renderedLinePath);
+            var pathFill = fill.fillPath({
+              seriesNumber: i
+            });
+
+            var renderedAreaPath = _this.graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+              pathFrom: pathFrom === null ? paths.areaPathsFrom[p] : pathFrom,
+              pathTo: paths.areaPathsTo[p],
+              strokeWidth: 0,
+              fill: pathFill,
+              drawShadow: false
+            }));
+
+            if (w.config.chart.dropShadow.enabled) {
+              var filters = new Filters(_this.ctx);
+              var shadow = w.config.chart.dropShadow;
+              filters.dropShadow(renderedAreaPath, Object.assign({}, shadow, {
+                noUserSpaceOnUse: true
+              }), i);
+            }
+
+            elSeries.add(renderedAreaPath);
+          }
+
+          s.forEach(function (sj, j) {
+            var markers = new Markers(_this.ctx);
+            var opts = markers.getMarkerConfig('apexcharts-marker', i);
+
+            var point = _this.graphics.drawMarker(dataPointsPos[j].x, dataPointsPos[j].y, opts);
+
+            point.attr('rel', j);
+            point.attr('j', j);
+            point.attr('index', i);
+            point.node.setAttribute('default-marker-size', opts.pSize);
+
+            var elPointsWrap = _this.graphics.group({
+              class: 'apexcharts-series-markers'
+            });
+
+            if (elPointsWrap) {
+              elPointsWrap.add(point);
+            }
+
+            elPointsMain.add(elPointsWrap);
+            elSeries.add(elPointsMain);
+          });
+          allSeries.push(elSeries);
+        });
+        this.drawPolygons({
+          parent: ret
+        });
+
+        if (w.config.dataLabels.enabled) {
+          var dataLabels = this.drawLabels();
+          ret.add(dataLabels);
+        }
+
+        ret.add(this.yaxisLabels);
+        allSeries.forEach(function (elS) {
+          ret.add(elS);
+        });
+        return ret;
+      }
+    }, {
+      key: "drawPolygons",
+      value: function drawPolygons(opts) {
+        var _this2 = this;
+
+        var w = this.w;
+        var parent = opts.parent;
+        var yaxisTexts = w.globals.yAxisScale[0].result.reverse();
+        var layers = yaxisTexts.length;
+        var radiusSizes = [];
+        var layerDis = this.size / (layers - 1);
+
+        for (var i = 0; i < layers; i++) {
+          radiusSizes[i] = layerDis * i;
+        }
+
+        radiusSizes.reverse();
+        var polygonStrings = [];
+        var lines = [];
+        radiusSizes.forEach(function (radiusSize, r) {
+          var polygon = _this2.getPolygonPos(radiusSize);
+
+          var string = '';
+          polygon.forEach(function (p, i) {
+            if (r === 0) {
+              var line = _this2.graphics.drawLine(p.x, p.y, 0, 0, Array.isArray(_this2.polygons.connectorColors) ? _this2.polygons.connectorColors[i] : _this2.polygons.connectorColors);
+
+              lines.push(line);
+            }
+
+            if (i === 0) {
+              _this2.yaxisLabelsTextsPos.push({
+                x: p.x,
+                y: p.y
+              });
+            }
+
+            string += p.x + ',' + p.y + ' ';
+          });
+          polygonStrings.push(string);
+        });
+        polygonStrings.forEach(function (p, i) {
+          var strokeColors = _this2.polygons.strokeColors;
+
+          var polygon = _this2.graphics.drawPolygon(p, Array.isArray(strokeColors) ? strokeColors[i] : strokeColors, w.globals.radarPolygons.fill.colors[i]);
+
+          parent.add(polygon);
+        });
+        lines.forEach(function (l) {
+          parent.add(l);
+        });
+
+        if (w.config.yaxis[0].show) {
+          this.yaxisLabelsTextsPos.forEach(function (p, i) {
+            var yText = _this2.drawYAxisText(p.x, p.y, i, yaxisTexts[i]);
+
+            _this2.yaxisLabels.add(yText);
+          });
+        }
+      }
+    }, {
+      key: "drawYAxisText",
+      value: function drawYAxisText(x, y, i, text) {
+        var w = this.w;
+        var yaxisConfig = w.config.yaxis[0];
+        var formatter = w.globals.yLabelFormatters[0];
+        var yaxisLabel = this.graphics.drawText({
+          x: x + yaxisConfig.labels.offsetX,
+          y: y + yaxisConfig.labels.offsetY,
+          text: formatter(text, i),
+          textAnchor: 'middle',
+          fontSize: yaxisConfig.labels.style.fontSize,
+          fontFamily: yaxisConfig.labels.style.fontFamily,
+          foreColor: yaxisConfig.labels.style.color
+        });
+        return yaxisLabel;
+      }
+    }, {
+      key: "drawLabels",
+      value: function drawLabels() {
+        var _this3 = this;
+
+        var w = this.w;
+        var limit = 10;
+        var textAnchor = 'middle';
+        var dataLabelsConfig = w.config.dataLabels;
+        var elDataLabelsWrap = this.graphics.group({
+          class: 'apexcharts-datalabels'
+        });
+        var polygonPos = this.getPolygonPos(this.size);
+        var currPosX = 0;
+        var currPosY = 0;
+        w.globals.labels.forEach(function (label, i) {
+          var formatter = dataLabelsConfig.formatter;
+          var dataLabels = new DataLabels(_this3.ctx);
+
+          if (polygonPos[i]) {
+            currPosX = polygonPos[i].x;
+            currPosY = polygonPos[i].y;
+
+            if (Math.abs(polygonPos[i].x) >= limit) {
+              if (polygonPos[i].x > 0) {
+                textAnchor = 'start';
+                currPosX += 10;
+              } else if (polygonPos[i].x < 0) {
+                textAnchor = 'end';
+                currPosX -= 10;
+              }
+            } else {
+              textAnchor = 'middle';
+            }
+
+            if (Math.abs(polygonPos[i].y) >= _this3.size - limit) {
+              if (polygonPos[i].y < 0) {
+                currPosY -= 10;
+              } else if (polygonPos[i].y > 0) {
+                currPosY += 10;
+              }
+            }
+
+            var text = formatter(label, {
+              seriesIndex: -1,
+              dataPointIndex: i,
+              w: w
+            });
+            dataLabels.plotDataLabelsText({
+              x: currPosX,
+              y: currPosY,
+              text: text,
+              textAnchor: textAnchor,
+              i: i,
+              j: i,
+              parent: elDataLabelsWrap,
+              dataLabelsConfig: dataLabelsConfig,
+              offsetCorrection: false
+            });
+          }
+        });
+        return elDataLabelsWrap;
+      }
+    }, {
+      key: "createPaths",
+      value: function createPaths(pos, origin) {
+        var _this4 = this;
+
+        var linePathsTo = [];
+        var linePathsFrom = [];
+        var areaPathsTo = [];
+        var areaPathsFrom = [];
+
+        if (pos.length) {
+          linePathsFrom = [this.graphics.move(origin.x, origin.y)];
+          areaPathsFrom = [this.graphics.move(origin.x, origin.y)];
+          var linePathTo = this.graphics.move(pos[0].x, pos[0].y);
+          var areaPathTo = this.graphics.move(pos[0].x, pos[0].y);
+          pos.forEach(function (p, i) {
+            linePathTo += _this4.graphics.line(p.x, p.y);
+            areaPathTo += _this4.graphics.line(p.x, p.y);
+
+            if (i === pos.length - 1) {
+              linePathTo += 'Z';
+              areaPathTo += 'Z';
+            }
+          });
+          linePathsTo.push(linePathTo);
+          areaPathsTo.push(areaPathTo);
+        }
+
+        return {
+          linePathsFrom: linePathsFrom,
+          linePathsTo: linePathsTo,
+          areaPathsFrom: areaPathsFrom,
+          areaPathsTo: areaPathsTo
+        };
+      }
+    }, {
+      key: "getPathFrom",
+      value: function getPathFrom(realIndex) {
+        var w = this.w;
+        var pathFrom = null;
+
+        for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+          var gpp = w.globals.previousPaths[pp];
+
+          if (gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+            if (typeof w.globals.previousPaths[pp].paths[0] !== 'undefined') {
+              pathFrom = w.globals.previousPaths[pp].paths[0].d;
+            }
+          }
+        }
+
+        return pathFrom;
+      }
+    }, {
+      key: "getDataPointsPos",
+      value: function getDataPointsPos(dataRadiusArr, angleArr) {
+        var dataPointsLen = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.dataPointsLen;
+        dataRadiusArr = dataRadiusArr || [];
+        angleArr = angleArr || [];
+        var dataPointsPosArray = [];
+
+        for (var j = 0; j < dataPointsLen; j++) {
+          var curPointPos = {};
+          curPointPos.x = dataRadiusArr[j] * Math.sin(angleArr[j]);
+          curPointPos.y = -dataRadiusArr[j] * Math.cos(angleArr[j]);
+          dataPointsPosArray.push(curPointPos);
+        }
+
+        return dataPointsPosArray;
+      }
+    }, {
+      key: "getPolygonPos",
+      value: function getPolygonPos(size) {
+        var dotsArray = [];
+        var angle = Math.PI * 2 / this.dataPointsLen;
+
+        for (var i = 0; i < this.dataPointsLen; i++) {
+          var curPos = {};
+          curPos.x = size * Math.sin(i * angle);
+          curPos.y = -size * Math.cos(i * angle);
+          dotsArray.push(curPos);
+        }
+
+        return dotsArray;
+      }
+    }]);
+
+    return Radar;
+  }();
+
+  /**
+   * ApexCharts Radial Class for drawing Circle / Semi Circle Charts.
+   * @module Radial
+   **/
+
+  var Radial =
+  /*#__PURE__*/
+  function (_Pie) {
+    _inherits(Radial, _Pie);
+
+    function Radial(ctx) {
+      var _this;
+
+      _classCallCheck(this, Radial);
+
+      _this = _possibleConstructorReturn(this, _getPrototypeOf(Radial).call(this, ctx));
+      _this.ctx = ctx;
+      _this.w = ctx.w;
+      _this.animBeginArr = [0];
+      _this.animDur = 0;
+      var w = _this.w;
+      _this.startAngle = w.config.plotOptions.radialBar.startAngle;
+      _this.endAngle = w.config.plotOptions.radialBar.endAngle;
+      _this.trackStartAngle = w.config.plotOptions.radialBar.track.startAngle;
+      _this.trackEndAngle = w.config.plotOptions.radialBar.track.endAngle;
+      _this.radialDataLabels = w.config.plotOptions.radialBar.dataLabels;
+      if (!_this.trackStartAngle) _this.trackStartAngle = _this.startAngle;
+      if (!_this.trackEndAngle) _this.trackEndAngle = _this.endAngle;
+      if (_this.endAngle === 360) _this.endAngle = 359.99;
+      _this.fullAngle = 360 - w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle;
+      _this.margin = parseInt(w.config.plotOptions.radialBar.track.margin);
+      return _this;
+    }
+
+    _createClass(Radial, [{
+      key: "draw",
+      value: function draw(series) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var ret = graphics.group({
+          class: 'apexcharts-radialbar'
+        });
+        var elSeries = graphics.group();
+        var centerY = this.defaultSize / 2;
+        var centerX = w.globals.gridWidth / 2;
+        var size = this.defaultSize / 2.05 - w.config.stroke.width - w.config.chart.dropShadow.blur;
+
+        if (w.config.plotOptions.radialBar.size !== undefined) {
+          size = w.config.plotOptions.radialBar.size;
+        }
+
+        var colorArr = w.globals.fill.colors;
+
+        if (w.config.plotOptions.radialBar.track.show) {
+          var elTracks = this.drawTracks({
+            size: size,
+            centerX: centerX,
+            centerY: centerY,
+            colorArr: colorArr,
+            series: series
+          });
+          elSeries.add(elTracks);
+        }
+
+        var elG = this.drawArcs({
+          size: size,
+          centerX: centerX,
+          centerY: centerY,
+          colorArr: colorArr,
+          series: series
+        });
+        elSeries.add(elG.g);
+
+        if (w.config.plotOptions.radialBar.hollow.position === 'front') {
+          elG.g.add(elG.elHollow);
+
+          if (elG.dataLabels) {
+            elG.g.add(elG.dataLabels);
+          }
+        }
+
+        ret.add(elSeries);
+        return ret;
+      }
+    }, {
+      key: "drawTracks",
+      value: function drawTracks(opts) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var g = graphics.group();
+        var filters = new Filters(this.ctx);
+        var fill = new Fill(this.ctx);
+        var strokeWidth = this.getStrokeWidth(opts);
+        opts.size = opts.size - strokeWidth / 2;
+
+        for (var i = 0; i < opts.series.length; i++) {
+          var elRadialBarTrack = graphics.group({
+            class: 'apexcharts-radialbar-track apexcharts-track'
+          });
+          g.add(elRadialBarTrack);
+          elRadialBarTrack.attr({
+            id: 'apexcharts-track-' + i,
+            rel: i + 1
+          });
+          opts.size = opts.size - strokeWidth - this.margin;
+          var trackConfig = w.config.plotOptions.radialBar.track;
+          var pathFill = fill.fillPath({
+            seriesNumber: 0,
+            size: opts.size,
+            fillColors: Array.isArray(trackConfig.background) ? trackConfig.background[i] : trackConfig.background,
+            solid: true
+          });
+          var startAngle = this.trackStartAngle;
+          var endAngle = this.trackEndAngle;
+          if (Math.abs(endAngle) + Math.abs(startAngle) >= 360) endAngle = 360 - Math.abs(this.startAngle) - 0.1;
+          var elPath = graphics.drawPath({
+            d: '',
+            stroke: pathFill,
+            strokeWidth: strokeWidth * parseInt(trackConfig.strokeWidth) / 100,
+            fill: 'none',
+            strokeOpacity: trackConfig.opacity,
+            classes: 'apexcharts-radialbar-area'
+          });
+
+          if (trackConfig.dropShadow.enabled) {
+            var shadow = trackConfig.dropShadow;
+            filters.dropShadow(elPath, shadow);
+          }
+
+          elRadialBarTrack.add(elPath);
+          elPath.attr('id', 'apexcharts-radialbarTrack-' + i);
+          var pie = new Pie(this.ctx);
+          pie.animatePaths(elPath, {
+            centerX: opts.centerX,
+            centerY: opts.centerY,
+            endAngle: endAngle,
+            startAngle: startAngle,
+            size: opts.size,
+            i: i,
+            totalItems: 2,
+            animBeginArr: 0,
+            dur: 0,
+            isTrack: true,
+            easing: w.globals.easing
+          });
+        }
+
+        return g;
+      }
+    }, {
+      key: "drawArcs",
+      value: function drawArcs(opts) {
+        var w = this.w; // size, donutSize, centerX, centerY, colorArr, lineColorArr, sectorAngleArr, series
+
+        var graphics = new Graphics(this.ctx);
+        var fill = new Fill(this.ctx);
+        var filters = new Filters(this.ctx);
+        var g = graphics.group();
+        var strokeWidth = this.getStrokeWidth(opts);
+        opts.size = opts.size - strokeWidth / 2;
+        var hollowFillID = w.config.plotOptions.radialBar.hollow.background;
+        var hollowSize = opts.size - strokeWidth * opts.series.length - this.margin * opts.series.length - strokeWidth * parseInt(w.config.plotOptions.radialBar.track.strokeWidth) / 100 / 2;
+        var hollowRadius = hollowSize - w.config.plotOptions.radialBar.hollow.margin;
+
+        if (w.config.plotOptions.radialBar.hollow.image !== undefined) {
+          hollowFillID = this.drawHollowImage(opts, g, hollowSize, hollowFillID);
+        }
+
+        var elHollow = this.drawHollow({
+          size: hollowRadius,
+          centerX: opts.centerX,
+          centerY: opts.centerY,
+          fill: hollowFillID
+        });
+
+        if (w.config.plotOptions.radialBar.hollow.dropShadow.enabled) {
+          var shadow = w.config.plotOptions.radialBar.hollow.dropShadow;
+          filters.dropShadow(elHollow, shadow);
+        }
+
+        var shown = 1;
+
+        if (!this.radialDataLabels.total.show && w.globals.series.length > 1) {
+          shown = 0;
+        }
+
+        var pie = new Pie(this.ctx);
+        var dataLabels = null;
+
+        if (this.radialDataLabels.show) {
+          dataLabels = pie.renderInnerDataLabels(this.radialDataLabels, {
+            hollowSize: hollowSize,
+            centerX: opts.centerX,
+            centerY: opts.centerY,
+            opacity: shown
+          });
+        }
+
+        if (w.config.plotOptions.radialBar.hollow.position === 'back') {
+          g.add(elHollow);
+
+          if (dataLabels) {
+            g.add(dataLabels);
+          }
+        }
+
+        var reverseLoop = false;
+
+        if (w.config.plotOptions.radialBar.inverseOrder) {
+          reverseLoop = true;
+        }
+
+        for (var i = reverseLoop ? opts.series.length - 1 : 0; reverseLoop ? i >= 0 : i < opts.series.length; reverseLoop ? i-- : i++) {
+          var elRadialBarArc = graphics.group({
+            class: "apexcharts-series apexcharts-radial-series",
+            seriesName: Utils.escapeString(w.globals.seriesNames[i])
+          });
+          g.add(elRadialBarArc);
+          elRadialBarArc.attr({
+            id: 'apexcharts-series-' + i,
+            rel: i + 1
+          });
+          this.ctx.series.addCollapsedClassToSeries(elRadialBarArc, i);
+          opts.size = opts.size - strokeWidth - this.margin;
+          var pathFill = fill.fillPath({
+            seriesNumber: i,
+            size: opts.size,
+            value: opts.series[i]
+          });
+          var startAngle = this.startAngle;
+          var prevStartAngle = void 0;
+          var totalAngle = Math.abs(w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle); // if data exceeds 100, make it 100
+
+          var dataValue = Utils.negToZero(opts.series[i] > 100 ? 100 : opts.series[i]) / 100;
+          var endAngle = Math.round(totalAngle * dataValue) + this.startAngle;
+          var prevEndAngle = void 0;
+
+          if (w.globals.dataChanged) {
+            prevStartAngle = this.startAngle;
+            prevEndAngle = Math.round(totalAngle * Utils.negToZero(w.globals.previousPaths[i]) / 100) + prevStartAngle;
+          }
+
+          var currFullAngle = Math.abs(endAngle) + Math.abs(startAngle);
+
+          if (currFullAngle >= 360) {
+            endAngle = endAngle - 0.01;
+          }
+
+          var prevFullAngle = Math.abs(prevEndAngle) + Math.abs(prevStartAngle);
+
+          if (prevFullAngle >= 360) {
+            prevEndAngle = prevEndAngle - 0.01;
+          }
+
+          var angle = endAngle - startAngle;
+          var dashArray = Array.isArray(w.config.stroke.dashArray) ? w.config.stroke.dashArray[i] : w.config.stroke.dashArray;
+          var elPath = graphics.drawPath({
+            d: '',
+            stroke: pathFill,
+            strokeWidth: strokeWidth,
+            fill: 'none',
+            fillOpacity: w.config.fill.opacity,
+            classes: 'apexcharts-radialbar-area',
+            strokeDashArray: dashArray
+          });
+          Graphics.setAttrs(elPath.node, {
+            'data:angle': angle,
+            'data:value': opts.series[i]
+          });
+
+          if (w.config.chart.dropShadow.enabled) {
+            var _shadow = w.config.chart.dropShadow;
+            filters.dropShadow(elPath, _shadow, i);
+          }
+
+          this.addListeners(elPath, this.radialDataLabels);
+
+          var _pie = new Pie(this.ctx);
+
+          elRadialBarArc.add(elPath);
+          elPath.attr({
+            id: 'apexcharts-radialbar-slice-' + i,
+            index: 0,
+            j: i
+          });
+          var dur = 0;
+
+          if (_pie.initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+            dur = (endAngle - startAngle) / 360 * w.config.chart.animations.speed;
+            this.animDur = dur / (opts.series.length * 1.2) + this.animDur;
+            this.animBeginArr.push(this.animDur);
+          }
+
+          if (w.globals.dataChanged) {
+            dur = (endAngle - startAngle) / 360 * w.config.chart.animations.dynamicAnimation.speed;
+            this.animDur = dur / (opts.series.length * 1.2) + this.animDur;
+            this.animBeginArr.push(this.animDur);
+          }
+
+          _pie.animatePaths(elPath, {
+            centerX: opts.centerX,
+            centerY: opts.centerY,
+            endAngle: endAngle,
+            startAngle: startAngle,
+            prevEndAngle: prevEndAngle,
+            prevStartAngle: prevStartAngle,
+            size: opts.size,
+            i: i,
+            totalItems: 2,
+            animBeginArr: this.animBeginArr,
+            dur: dur,
+            shouldSetPrevPaths: true,
+            easing: w.globals.easing
+          });
+        }
+
+        return {
+          g: g,
+          elHollow: elHollow,
+          dataLabels: dataLabels
+        };
+      }
+    }, {
+      key: "drawHollow",
+      value: function drawHollow(opts) {
+        var graphics = new Graphics(this.ctx);
+        var circle = graphics.drawCircle(opts.size * 2);
+        circle.attr({
+          class: 'apexcharts-radialbar-hollow',
+          cx: opts.centerX,
+          cy: opts.centerY,
+          r: opts.size,
+          fill: opts.fill
+        });
+        return circle;
+      }
+    }, {
+      key: "drawHollowImage",
+      value: function drawHollowImage(opts, g, hollowSize, hollowFillID) {
+        var w = this.w;
+        var fill = new Fill(this.ctx);
+        var randID = (Math.random() + 1).toString(36).substring(4);
+        var hollowFillImg = w.config.plotOptions.radialBar.hollow.image;
+
+        if (w.config.plotOptions.radialBar.hollow.imageClipped) {
+          fill.clippedImgArea({
+            width: hollowSize,
+            height: hollowSize,
+            image: hollowFillImg,
+            patternID: "pattern".concat(w.globals.cuid).concat(randID)
+          });
+          hollowFillID = "url(#pattern".concat(w.globals.cuid).concat(randID, ")");
+        } else {
+          var imgWidth = w.config.plotOptions.radialBar.hollow.imageWidth;
+          var imgHeight = w.config.plotOptions.radialBar.hollow.imageHeight;
+
+          if (imgWidth === undefined && imgHeight === undefined) {
+            var image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) {
+              this.move(opts.centerX - loader.width / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - loader.height / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY);
+            });
+            g.add(image);
+          } else {
+            var _image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) {
+              this.move(opts.centerX - imgWidth / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - imgHeight / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY);
+              this.size(imgWidth, imgHeight);
+            });
+
+            g.add(_image);
+          }
+        }
+
+        return hollowFillID;
+      }
+    }, {
+      key: "getStrokeWidth",
+      value: function getStrokeWidth(opts) {
+        var w = this.w;
+        return opts.size * (100 - parseInt(w.config.plotOptions.radialBar.hollow.size)) / 100 / (opts.series.length + 1) - this.margin;
+      }
+    }]);
+
+    return Radial;
+  }(Pie);
+
+  /**
+   * ApexCharts RangeBar Class responsible for drawing Range/Timeline Bars.
+   *
+   * @module RangeBar
+   **/
+
+  var RangeBar =
+  /*#__PURE__*/
+  function (_Bar) {
+    _inherits(RangeBar, _Bar);
+
+    function RangeBar() {
+      _classCallCheck(this, RangeBar);
+
+      return _possibleConstructorReturn(this, _getPrototypeOf(RangeBar).apply(this, arguments));
+    }
+
+    _createClass(RangeBar, [{
+      key: "draw",
+      value: function draw(series, seriesIndex) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var fill = new Fill(this.ctx);
+        this.rangeBarOptions = this.w.config.plotOptions.rangeBar;
+        this.series = series;
+        this.seriesRangeStart = w.globals.seriesRangeStart;
+        this.seriesRangeEnd = w.globals.seriesRangeEnd;
+        this.initVariables(series);
+        var ret = graphics.group({
+          class: 'apexcharts-rangebar-series apexcharts-plot-series'
+        });
+
+        for (var i = 0, bc = 0; i < series.length; i++, bc++) {
+          var pathTo = void 0,
+              pathFrom = void 0;
+          var x = void 0,
+              y = void 0,
+              xDivision = void 0,
+              // xDivision is the GRIDWIDTH divided by number of datapoints (columns)
+          yDivision = void 0,
+              // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)
+          zeroH = void 0,
+              // zeroH is the baseline where 0 meets y axis
+          zeroW = void 0; // zeroW is the baseline where 0 meets x axis
+
+          var yArrj = []; // hold y values of current iterating series
+
+          var xArrj = []; // hold x values of current iterating series
+
+          var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn
+
+          var elSeries = graphics.group({
+            class: "apexcharts-series",
+            seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),
+            rel: i + 1,
+            'data:realIndex': realIndex
+          });
+
+          if (series[i].length > 0) {
+            this.visibleI = this.visibleI + 1;
+          }
+
+          var strokeWidth = 0;
+          var barHeight = 0;
+          var barWidth = 0;
+
+          if (this.yRatio.length > 1) {
+            this.yaxisIndex = realIndex;
+          }
+
+          var initPositions = this.initialPositions();
+          y = initPositions.y;
+          yDivision = initPositions.yDivision;
+          barHeight = initPositions.barHeight;
+          zeroW = initPositions.zeroW;
+          x = initPositions.x;
+          barWidth = initPositions.barWidth;
+          xDivision = initPositions.xDivision;
+          zeroH = initPositions.zeroH;
+          xArrj.push(x + barWidth / 2); // eldatalabels
+
+          var elDataLabelsWrap = graphics.group({
+            class: 'apexcharts-datalabels'
+          });
+
+          for (var j = 0, tj = w.globals.dataPoints; j < w.globals.dataPoints; j++, tj--) {
+            if (typeof this.series[i][j] === 'undefined' || series[i][j] === null) {
+              this.isNullValue = true;
+            } else {
+              this.isNullValue = false;
+            }
+
+            if (w.config.stroke.show) {
+              if (this.isNullValue) {
+                strokeWidth = 0;
+              } else {
+                strokeWidth = Array.isArray(this.strokeWidth) ? this.strokeWidth[realIndex] : this.strokeWidth;
+              }
+            }
+
+            var paths = null;
+
+            if (this.isHorizontal) {
+              paths = this.drawRangeBarPaths({
+                indexes: {
+                  i: i,
+                  j: j,
+                  realIndex: realIndex,
+                  bc: bc
+                },
+                barHeight: barHeight,
+                strokeWidth: strokeWidth,
+                pathTo: pathTo,
+                pathFrom: pathFrom,
+                zeroW: zeroW,
+                x: x,
+                y: y,
+                yDivision: yDivision,
+                elSeries: elSeries
+              });
+              barWidth = paths.barWidth;
+            } else {
+              paths = this.drawRangeColumnPaths({
+                indexes: {
+                  i: i,
+                  j: j,
+                  realIndex: realIndex,
+                  bc: bc
+                },
+                x: x,
+                y: y,
+                xDivision: xDivision,
+                pathTo: pathTo,
+                pathFrom: pathFrom,
+                barWidth: barWidth,
+                zeroH: zeroH,
+                strokeWidth: strokeWidth,
+                elSeries: elSeries
+              });
+              barHeight = paths.barHeight;
+            }
+
+            pathTo = paths.pathTo;
+            pathFrom = paths.pathFrom;
+            y = paths.y;
+            x = paths.x; // push current X
+
+            if (j > 0) {
+              xArrj.push(x + barWidth / 2);
+            }
+
+            yArrj.push(y);
+            var pathFill = fill.fillPath({
+              seriesNumber: realIndex
+            });
+            var lineFill = w.globals.stroke.colors[realIndex];
+            elSeries = this.renderSeries({
+              realIndex: realIndex,
+              pathFill: pathFill,
+              lineFill: lineFill,
+              j: j,
+              i: i,
+              pathFrom: pathFrom,
+              pathTo: pathTo,
+              strokeWidth: strokeWidth,
+              elSeries: elSeries,
+              x: x,
+              y: y,
+              series: series,
+              barHeight: barHeight,
+              barWidth: barWidth,
+              elDataLabelsWrap: elDataLabelsWrap,
+              visibleSeries: this.visibleI,
+              type: 'rangebar'
+            });
+          } // push all x val arrays into main xArr
+
+
+          w.globals.seriesXvalues[realIndex] = xArrj;
+          w.globals.seriesYvalues[realIndex] = yArrj;
+          ret.add(elSeries);
+        }
+
+        return ret;
+      }
+    }, {
+      key: "drawRangeColumnPaths",
+      value: function drawRangeColumnPaths(_ref) {
+        var indexes = _ref.indexes,
+            x = _ref.x,
+            y = _ref.y,
+            strokeWidth = _ref.strokeWidth,
+            xDivision = _ref.xDivision,
+            pathTo = _ref.pathTo,
+            pathFrom = _ref.pathFrom,
+            barWidth = _ref.barWidth,
+            zeroH = _ref.zeroH;
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var i = indexes.i;
+        var j = indexes.j;
+        var yRatio = this.yRatio[this.yaxisIndex];
+        var realIndex = indexes.realIndex;
+        var range = this.getRangeValue(realIndex, j);
+        var y1 = Math.min(range.start, range.end);
+        var y2 = Math.max(range.start, range.end);
+
+        if (w.globals.isXNumeric) {
+          x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;
+        }
+
+        var barXPosition = x + barWidth * this.visibleI;
+
+        if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {
+          y1 = zeroH;
+        } else {
+          y1 = zeroH - y1 / yRatio;
+          y2 = zeroH - y2 / yRatio;
+        }
+
+        var barHeight = Math.abs(y2 - y1);
+        pathTo = graphics.move(barXPosition, zeroH);
+        pathFrom = graphics.move(barXPosition, y1);
+
+        if (w.globals.previousPaths.length > 0) {
+          pathFrom = this.getPathFrom(realIndex, j, true);
+        }
+
+        pathTo = graphics.move(barXPosition, y2) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition, y1) + graphics.line(barXPosition, y2 - strokeWidth / 2);
+        pathFrom = pathFrom + graphics.move(barXPosition, y1) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition, y1);
+
+        if (!w.globals.isXNumeric) {
+          x = x + xDivision;
+        }
+
+        return {
+          pathTo: pathTo,
+          pathFrom: pathFrom,
+          barHeight: barHeight,
+          x: x,
+          y: y2,
+          barXPosition: barXPosition
+        };
+      }
+    }, {
+      key: "drawRangeBarPaths",
+      value: function drawRangeBarPaths(_ref2) {
+        var indexes = _ref2.indexes,
+            x = _ref2.x,
+            y = _ref2.y,
+            yDivision = _ref2.yDivision,
+            pathTo = _ref2.pathTo,
+            pathFrom = _ref2.pathFrom,
+            barHeight = _ref2.barHeight,
+            zeroW = _ref2.zeroW;
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var i = indexes.i;
+        var j = indexes.j;
+        var realIndex = indexes.realIndex;
+        var x1 = zeroW;
+        var x2 = zeroW;
+
+        if (w.globals.isXNumeric) {
+          y = (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - barHeight;
+        }
+
+        var barYPosition = y + barHeight * this.visibleI;
+
+        if (typeof this.series[i][j] !== 'undefined' && this.series[i][j] !== null) {
+          x1 = zeroW + this.seriesRangeStart[i][j] / this.invertedYRatio;
+          x2 = zeroW + this.seriesRangeEnd[i][j] / this.invertedYRatio;
+        }
+
+        pathTo = graphics.move(zeroW, barYPosition);
+        pathFrom = graphics.move(zeroW, barYPosition);
+
+        if (w.globals.previousPaths.length > 0) {
+          pathFrom = this.getPathFrom(realIndex, j);
+        }
+
+        var barWidth = Math.abs(x2 - x1);
+        pathTo = graphics.move(x1, barYPosition) + graphics.line(x2, barYPosition) + graphics.line(x2, barYPosition + barHeight) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition);
+        pathFrom = pathFrom + graphics.line(x1, barYPosition) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition + barHeight) + graphics.line(x1, barYPosition);
+
+        if (!w.globals.isXNumeric) {
+          y = y + yDivision;
+        }
+
+        return {
+          pathTo: pathTo,
+          pathFrom: pathFrom,
+          barWidth: barWidth,
+          x: x2,
+          y: y,
+          barYPosition: barYPosition
+        };
+      }
+    }, {
+      key: "getRangeValue",
+      value: function getRangeValue(i, j) {
+        var w = this.w;
+        return {
+          start: w.globals.seriesRangeStart[i][j],
+          end: w.globals.seriesRangeEnd[i][j]
+        };
+      }
+    }]);
+
+    return RangeBar;
+  }(Bar);
+
+  /**
+   * ApexCharts Line Class responsible for drawing Line / Area Charts.
+   * This class is also responsible for generating values for Bubble/Scatter charts, so need to rename it to Axis Charts to avoid confusions
+   * @module Line
+   **/
+
+  var Line =
+  /*#__PURE__*/
+  function () {
+    function Line(ctx, xyRatios, isPointsChart) {
+      _classCallCheck(this, Line);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.xyRatios = xyRatios;
+      this.pointsChart = !(this.w.config.chart.type !== 'bubble' && this.w.config.chart.type !== 'scatter') || isPointsChart;
+      this.scatter = new Scatter(this.ctx);
+      this.noNegatives = this.w.globals.minX === Number.MAX_VALUE;
+      this.yaxisIndex = 0;
+    }
+
+    _createClass(Line, [{
+      key: "draw",
+      value: function draw(series, ptype, seriesIndex) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var fill = new Fill(this.ctx);
+        var type = w.globals.comboCharts ? ptype : w.config.chart.type;
+        var ret = graphics.group({
+          class: "apexcharts-".concat(type, "-series apexcharts-plot-series")
+        });
+        var coreUtils = new CoreUtils(this.ctx, w);
+        series = coreUtils.getLogSeries(series);
+        var yRatio = this.xyRatios.yRatio;
+        yRatio = coreUtils.getLogYRatios(yRatio);
+        var zRatio = this.xyRatios.zRatio;
+        var xRatio = this.xyRatios.xRatio;
+        var baseLineY = this.xyRatios.baseLineY; // push all series in an array, so we can draw in reverse order (for stacked charts)
+
+        var allSeries = [];
+        var prevSeriesY = [];
+        var categoryAxisCorrection = 0;
+
+        for (var i = 0; i < series.length; i++) {
+          // width divided into equal parts
+          if (type === 'line' && (w.config.fill.type === 'gradient' || w.config.fill.type[i] === 'gradient')) {
+            // a small adjustment to allow gradient line to draw correctly for all same values
+
+            /* #fix https://github.com/apexcharts/apexcharts.js/issues/358 */
+            if (coreUtils.seriesHaveSameValues(i)) {
+              var gSeries = series[i].slice();
+              gSeries[gSeries.length - 1] = gSeries[gSeries.length - 1] + 0.000001;
+              series[i] = gSeries;
+            }
+          }
+
+          var xDivision = w.globals.gridWidth / w.globals.dataPoints;
+          var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;
+
+          if (yRatio.length > 1) {
+            this.yaxisIndex = realIndex;
+          }
+
+          this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;
+          var yArrj = []; // hold y values of current iterating series
+
+          var xArrj = []; // hold x values of current iterating series
+          // zeroY is the 0 value in y series which can be used in negative charts
+
+          var zeroY = w.globals.gridHeight - baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? baseLineY[this.yaxisIndex] * 2 : 0);
+          var areaBottomY = zeroY;
+
+          if (zeroY > w.globals.gridHeight) {
+            areaBottomY = w.globals.gridHeight;
+          }
+
+          categoryAxisCorrection = xDivision / 2;
+          var x = w.globals.padHorizontal + categoryAxisCorrection;
+          var y = 1;
+
+          if (w.globals.isXNumeric && w.globals.seriesX.length > 0) {
+            x = (w.globals.seriesX[realIndex][0] - w.globals.minX) / xRatio;
+          }
+
+          xArrj.push(x);
+          var linePath = void 0,
+              areaPath = void 0,
+              pathFromLine = void 0,
+              pathFromArea = void 0;
+          var linePaths = [];
+          var areaPaths = []; // el to which series will be drawn
+
+          var elSeries = graphics.group({
+            class: "apexcharts-series",
+            seriesName: Utils.escapeString(w.globals.seriesNames[realIndex])
+          }); // points
+
+          var elPointsMain = graphics.group({
+            class: 'apexcharts-series-markers-wrap'
+          }); // eldatalabels
+
+          var elDataLabelsWrap = graphics.group({
+            class: 'apexcharts-datalabels'
+          });
+          this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex);
+          var longestSeries = series[i].length === w.globals.dataPoints;
+          elSeries.attr({
+            'data:longestSeries': longestSeries,
+            rel: i + 1,
+            'data:realIndex': realIndex
+          });
+          this.appendPathFrom = true;
+          var pX = x;
+          var pY = void 0;
+          var prevX = pX;
+          var prevY = zeroY; // w.globals.svgHeight;
+
+          var lineYPosition = 0; // the first value in the current series is not null or undefined
+
+          var firstPrevY = this.determineFirstPrevY({
+            i: i,
+            series: series,
+            yRatio: yRatio[this.yaxisIndex],
+            zeroY: zeroY,
+            prevY: prevY,
+            prevSeriesY: prevSeriesY,
+            lineYPosition: lineYPosition
+          });
+          prevY = firstPrevY.prevY;
+          yArrj.push(prevY);
+          pY = prevY;
+
+          if (series[i][0] === null) {
+            // when the first value itself is null, we need to move the pointer to a location where a null value is not found
+            for (var s = 0; s < series[i].length; s++) {
+              if (series[i][s] !== null) {
+                prevX = xDivision * s;
+                prevY = zeroY - series[i][s] / yRatio[this.yaxisIndex];
+                linePath = graphics.move(prevX, prevY);
+                areaPath = graphics.move(prevX, areaBottomY);
+                break;
+              }
+            }
+          } else {
+            linePath = graphics.move(prevX, prevY);
+            areaPath = graphics.move(prevX, areaBottomY) + graphics.line(prevX, prevY);
+          }
+
+          pathFromLine = graphics.move(-1, zeroY) + graphics.line(-1, zeroY);
+          pathFromArea = graphics.move(-1, zeroY) + graphics.line(-1, zeroY);
+
+          if (w.globals.previousPaths.length > 0) {
+            var pathFrom = this.checkPreviousPaths({
+              pathFromLine: pathFromLine,
+              pathFromArea: pathFromArea,
+              realIndex: realIndex
+            });
+            pathFromLine = pathFrom.pathFromLine;
+            pathFromArea = pathFrom.pathFromArea;
+          }
+
+          var iterations = w.globals.dataPoints > 1 ? w.globals.dataPoints - 1 : w.globals.dataPoints;
+
+          for (var j = 0; j < iterations; j++) {
+            if (w.globals.isXNumeric) {
+              var sX = w.globals.seriesX[realIndex][j + 1];
+
+              if (typeof w.globals.seriesX[realIndex][j + 1] === 'undefined') {
+                /* fix #374 */
+                sX = w.globals.seriesX[realIndex][iterations - 1];
+              }
+
+              x = (sX - w.globals.minX) / xRatio;
+            } else {
+              x = x + xDivision;
+            }
+
+            var minY = Utils.isNumber(w.globals.minYArr[realIndex]) ? w.globals.minYArr[realIndex] : w.globals.minY;
+
+            if (w.config.chart.stacked) {
+              if (i > 0 && w.globals.collapsedSeries.length < w.config.series.length - 1) {
+                lineYPosition = prevSeriesY[i - 1][j + 1];
+              } else {
+                // the first series will not have prevY values
+                lineYPosition = zeroY;
+              }
+
+              if (typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null) {
+                y = lineYPosition - minY / yRatio[this.yaxisIndex] + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2;
+              } else {
+                y = lineYPosition - series[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2;
+              }
+            } else {
+              if (typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null) {
+                y = zeroY - minY / yRatio[this.yaxisIndex] + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2;
+              } else {
+                y = zeroY - series[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2;
+              }
+            } // push current X
+
+
+            xArrj.push(x); // push current Y that will be used as next series's bottom position
+
+            yArrj.push(y);
+            var calculatedPaths = this.createPaths({
+              series: series,
+              i: i,
+              j: j,
+              x: x,
+              y: y,
+              xDivision: xDivision,
+              pX: pX,
+              pY: pY,
+              areaBottomY: areaBottomY,
+              linePath: linePath,
+              areaPath: areaPath,
+              linePaths: linePaths,
+              areaPaths: areaPaths,
+              seriesIndex: seriesIndex
+            });
+            areaPaths = calculatedPaths.areaPaths;
+            linePaths = calculatedPaths.linePaths;
+            pX = calculatedPaths.pX;
+            pY = calculatedPaths.pY;
+            areaPath = calculatedPaths.areaPath;
+            linePath = calculatedPaths.linePath;
+
+            if (this.appendPathFrom) {
+              pathFromLine = pathFromLine + graphics.line(x, zeroY);
+              pathFromArea = pathFromArea + graphics.line(x, zeroY);
+            }
+
+            var pointsPos = this.calculatePoints({
+              series: series,
+              x: x,
+              y: y,
+              realIndex: realIndex,
+              i: i,
+              j: j,
+              prevY: prevY,
+              categoryAxisCorrection: categoryAxisCorrection,
+              xRatio: xRatio
+            });
+
+            if (!this.pointsChart) {
+              var markers = new Markers(this.ctx);
+
+              if (w.globals.dataPoints > 1) {
+                elPointsMain.node.classList.add('hidden');
+              }
+
+              var elPointsWrap = markers.plotChartMarkers(pointsPos, realIndex, j + 1);
+
+              if (elPointsWrap !== null) {
+                elPointsMain.add(elPointsWrap);
+              }
+            } else {
+              // scatter / bubble chart points creation
+              this.scatter.draw(elSeries, j, {
+                realIndex: realIndex,
+                pointsPos: pointsPos,
+                zRatio: zRatio,
+                elParent: elPointsMain
+              });
+            }
+
+            var dataLabelAlign = !series[i][j + 1] || series[i][j + 1] > series[i][j] ? 'top' : 'bottom';
+            var dataLabels = new DataLabels(this.ctx);
+            var drawnLabels = dataLabels.drawDataLabel(pointsPos, realIndex, j + 1, null, dataLabelAlign);
+
+            if (drawnLabels !== null) {
+              elDataLabelsWrap.add(drawnLabels);
+            }
+          } // push all current y values array to main PrevY Array
+
+
+          prevSeriesY.push(yArrj); // push all x val arrays into main xArr
+
+          w.globals.seriesXvalues[realIndex] = xArrj;
+          w.globals.seriesYvalues[realIndex] = yArrj; // these elements will be shown after area path animation completes
+
+          if (!this.pointsChart) {
+            w.globals.delayedElements.push({
+              el: elPointsMain.node,
+              index: realIndex
+            });
+          }
+
+          var defaultRenderedPathOptions = {
+            i: i,
+            realIndex: realIndex,
+            animationDelay: i,
+            initialSpeed: w.config.chart.animations.speed,
+            dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,
+            className: "apexcharts-".concat(type),
+            id: "apexcharts-".concat(type)
+          };
+
+          if (type === 'area') {
+            var pathFill = fill.fillPath({
+              seriesNumber: realIndex
+            });
+
+            for (var p = 0; p < areaPaths.length; p++) {
+              var renderedPath = graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+                pathFrom: pathFromArea,
+                pathTo: areaPaths[p],
+                stroke: 'none',
+                strokeWidth: 0,
+                strokeLineCap: null,
+                fill: pathFill
+              }));
+              elSeries.add(renderedPath);
+            }
+          }
+
+          if (w.config.stroke.show && !this.pointsChart) {
+            var lineFill = null;
+
+            if (type === 'line') {
+              // fillable lines only for lineChart
+              lineFill = fill.fillPath({
+                seriesNumber: realIndex,
+                i: i
+              });
+            } else {
+              lineFill = w.globals.stroke.colors[realIndex];
+            }
+
+            for (var _p = 0; _p < linePaths.length; _p++) {
+              var _renderedPath = graphics.renderPaths(_objectSpread({}, defaultRenderedPathOptions, {
+                pathFrom: pathFromLine,
+                pathTo: linePaths[_p],
+                stroke: lineFill,
+                strokeWidth: Array.isArray(w.config.stroke.width) ? w.config.stroke.width[realIndex] : w.config.stroke.width,
+                strokeLineCap: w.config.stroke.lineCap,
+                fill: 'none'
+              }));
+
+              elSeries.add(_renderedPath);
+            }
+          }
+
+          elSeries.add(elPointsMain);
+          elSeries.add(elDataLabelsWrap);
+          allSeries.push(elSeries);
+        }
+
+        for (var _s = allSeries.length; _s > 0; _s--) {
+          ret.add(allSeries[_s - 1]);
+        }
+
+        return ret;
+      }
+    }, {
+      key: "createPaths",
+      value: function createPaths(_ref) {
+        var series = _ref.series,
+            i = _ref.i,
+            j = _ref.j,
+            x = _ref.x,
+            y = _ref.y,
+            pX = _ref.pX,
+            pY = _ref.pY,
+            xDivision = _ref.xDivision,
+            areaBottomY = _ref.areaBottomY,
+            linePath = _ref.linePath,
+            areaPath = _ref.areaPath,
+            linePaths = _ref.linePaths,
+            areaPaths = _ref.areaPaths,
+            seriesIndex = _ref.seriesIndex;
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var curve = w.config.stroke.curve;
+
+        if (Array.isArray(w.config.stroke.curve)) {
+          if (Array.isArray(seriesIndex)) {
+            curve = w.config.stroke.curve[seriesIndex[i]];
+          } else {
+            curve = w.config.stroke.curve[i];
+          }
+        } // logic of smooth curve derived from chartist
+        // CREDITS: https://gionkunz.github.io/chartist-js/
+
+
+        if (curve === 'smooth') {
+          var length = (x - pX) * 0.35;
+
+          if (w.globals.hasNullValues) {
+            if (series[i][j] !== null) {
+              if (series[i][j + 1] !== null) {
+                linePath = graphics.move(pX, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y);
+                areaPath = graphics.move(pX + 1, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y) + graphics.line(x, areaBottomY) + graphics.line(pX, areaBottomY) + 'z';
+              } else {
+                linePath = graphics.move(pX, pY);
+                areaPath = graphics.move(pX, pY) + 'z';
+              }
+            }
+
+            linePaths.push(linePath);
+            areaPaths.push(areaPath);
+          } else {
+            linePath = linePath + graphics.curve(pX + length, pY, x - length, y, x, y);
+            areaPath = areaPath + graphics.curve(pX + length, pY, x - length, y, x, y);
+          }
+
+          pX = x;
+          pY = y;
+
+          if (j === series[i].length - 2) {
+            // last loop, close path
+            areaPath = areaPath + graphics.curve(pX, pY, x, y, x, areaBottomY) + graphics.move(x, y) + 'z';
+
+            if (!w.globals.hasNullValues) {
+              linePaths.push(linePath);
+              areaPaths.push(areaPath);
+            }
+          }
+        } else {
+          if (series[i][j + 1] === null) {
+            linePath = linePath + graphics.move(x, y);
+            areaPath = areaPath + graphics.line(x - xDivision, areaBottomY) + graphics.move(x, y);
+          }
+
+          if (series[i][j] === null) {
+            linePath = linePath + graphics.move(x, y);
+            areaPath = areaPath + graphics.move(x, areaBottomY);
+          }
+
+          if (curve === 'stepline') {
+            linePath = linePath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V');
+            areaPath = areaPath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V');
+          } else if (curve === 'straight') {
+            linePath = linePath + graphics.line(x, y);
+            areaPath = areaPath + graphics.line(x, y);
+          }
+
+          if (j === series[i].length - 2) {
+            // last loop, close path
+            areaPath = areaPath + graphics.line(x, areaBottomY) + graphics.move(x, y) + 'z';
+            linePaths.push(linePath);
+            areaPaths.push(areaPath);
+          }
+        }
+
+        return {
+          linePaths: linePaths,
+          areaPaths: areaPaths,
+          pX: pX,
+          pY: pY,
+          linePath: linePath,
+          areaPath: areaPath
+        };
+      }
+    }, {
+      key: "calculatePoints",
+      value: function calculatePoints(_ref2) {
+        var series = _ref2.series,
+            realIndex = _ref2.realIndex,
+            x = _ref2.x,
+            y = _ref2.y,
+            i = _ref2.i,
+            j = _ref2.j,
+            prevY = _ref2.prevY,
+            categoryAxisCorrection = _ref2.categoryAxisCorrection,
+            xRatio = _ref2.xRatio;
+        var w = this.w;
+        var ptX = [];
+        var ptY = [];
+
+        if (j === 0) {
+          var xPT1st = categoryAxisCorrection + w.config.markers.offsetX; // the first point for line series
+          // we need to check whether it's not a time series, because a time series may
+          // start from the middle of the x axis
+
+          if (w.globals.isXNumeric) {
+            xPT1st = (w.globals.seriesX[realIndex][0] - w.globals.minX) / xRatio + w.config.markers.offsetX;
+          } // push 2 points for the first data values
+
+
+          ptX.push(xPT1st);
+          ptY.push(Utils.isNumber(series[i][0]) ? prevY + w.config.markers.offsetY : null);
+          ptX.push(x + w.config.markers.offsetX);
+          ptY.push(Utils.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null);
+        } else {
+          ptX.push(x + w.config.markers.offsetX);
+          ptY.push(Utils.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null);
+        }
+
+        var pointsPos = {
+          x: ptX,
+          y: ptY
+        };
+        return pointsPos;
+      }
+    }, {
+      key: "checkPreviousPaths",
+      value: function checkPreviousPaths(_ref3) {
+        var pathFromLine = _ref3.pathFromLine,
+            pathFromArea = _ref3.pathFromArea,
+            realIndex = _ref3.realIndex;
+        var w = this.w;
+
+        for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {
+          var gpp = w.globals.previousPaths[pp];
+
+          if ((gpp.type === 'line' || gpp.type === 'area') && gpp.paths.length > 0 && parseInt(gpp.realIndex) === parseInt(realIndex)) {
+            if (gpp.type === 'line') {
+              this.appendPathFrom = false;
+              pathFromLine = w.globals.previousPaths[pp].paths[0].d;
+            } else if (gpp.type === 'area') {
+              this.appendPathFrom = false;
+              pathFromArea = w.globals.previousPaths[pp].paths[0].d;
+
+              if (w.config.stroke.show) {
+                pathFromLine = w.globals.previousPaths[pp].paths[1].d;
+              }
+            }
+          }
+        }
+
+        return {
+          pathFromLine: pathFromLine,
+          pathFromArea: pathFromArea
+        };
+      }
+    }, {
+      key: "determineFirstPrevY",
+      value: function determineFirstPrevY(_ref4) {
+        var i = _ref4.i,
+            series = _ref4.series,
+            yRatio = _ref4.yRatio,
+            zeroY = _ref4.zeroY,
+            prevY = _ref4.prevY,
+            prevSeriesY = _ref4.prevSeriesY,
+            lineYPosition = _ref4.lineYPosition;
+        var w = this.w;
+
+        if (typeof series[i][0] !== 'undefined') {
+          if (w.config.chart.stacked) {
+            if (i > 0) {
+              // 1st y value of previous series
+              lineYPosition = prevSeriesY[i - 1][0];
+            } else {
+              // the first series will not have prevY values
+              lineYPosition = zeroY;
+            }
+
+            prevY = lineYPosition - series[i][0] / yRatio + (this.isReversed ? series[i][0] / yRatio : 0) * 2;
+          } else {
+            prevY = zeroY - series[i][0] / yRatio + (this.isReversed ? series[i][0] / yRatio : 0) * 2;
+          }
+        } else {
+          // the first value in the current series is null
+          if (w.config.chart.stacked && i > 0 && typeof series[i][0] === 'undefined') {
+            // check for undefined value (undefined value will occur when we clear the series while user clicks on legend to hide serieses)
+            for (var s = i - 1; s >= 0; s--) {
+              // for loop to get to 1st previous value until we get it
+              if (series[s][0] !== null && typeof series[s][0] !== 'undefined') {
+                lineYPosition = prevSeriesY[s][0];
+                prevY = lineYPosition;
+                break;
+              }
+            }
+          }
+        }
+
+        return {
+          prevY: prevY,
+          lineYPosition: lineYPosition
+        };
+      }
+    }]);
+
+    return Line;
+  }();
+
+  /**
+   * ApexCharts Formatter Class for setting value formatters for axes as well as tooltips.
+   *
+   * @module Formatters
+   **/
+
+  var Formatters =
+  /*#__PURE__*/
+  function () {
+    function Formatters(ctx) {
+      _classCallCheck(this, Formatters);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.tooltipKeyFormat = 'dd MMM';
+    }
+
+    _createClass(Formatters, [{
+      key: "xLabelFormat",
+      value: function xLabelFormat(fn, val) {
+        var w = this.w;
+
+        if (w.config.xaxis.type === 'datetime') {
+          // if user has not specified a custom formatter, use the default tooltip.x.format
+          if (w.config.tooltip.x.formatter === undefined) {
+            var datetimeObj = new DateTime(this.ctx);
+            return datetimeObj.formatDate(new Date(val), w.config.tooltip.x.format, true, true);
+          }
+        }
+
+        return fn(val);
+      }
+    }, {
+      key: "setLabelFormatters",
+      value: function setLabelFormatters() {
+        var w = this.w;
+
+        w.globals.xLabelFormatter = function (val) {
+          return val;
+        };
+
+        w.globals.xaxisTooltipFormatter = function (val) {
+          return val;
+        };
+
+        w.globals.ttKeyFormatter = function (val) {
+          return val;
+        };
+
+        w.globals.ttZFormatter = function (val) {
+          return val;
+        };
+
+        w.globals.legendFormatter = function (val) {
+          return val;
+        };
+
+        if (typeof w.config.tooltip.x.formatter === 'function') {
+          w.globals.ttKeyFormatter = w.config.tooltip.x.formatter;
+        }
+
+        if (typeof w.config.xaxis.tooltip.formatter === 'function') {
+          w.globals.xaxisTooltipFormatter = w.config.xaxis.tooltip.formatter;
+        }
+
+        if (Array.isArray(w.config.tooltip.y)) {
+          w.globals.ttVal = w.config.tooltip.y;
+        } else {
+          if (w.config.tooltip.y.formatter !== undefined) {
+            w.globals.ttVal = w.config.tooltip.y;
+          }
+        }
+
+        if (w.config.tooltip.z.formatter !== undefined) {
+          w.globals.ttZFormatter = w.config.tooltip.z.formatter;
+        } // legend formatter - if user wants to append any global values of series to legend text
+
+
+        if (w.config.legend.formatter !== undefined) {
+          w.globals.legendFormatter = w.config.legend.formatter;
+        } // formatter function will always overwrite format property
+
+
+        if (w.config.xaxis.labels.formatter !== undefined) {
+          w.globals.xLabelFormatter = w.config.xaxis.labels.formatter;
+        } else {
+          w.globals.xLabelFormatter = function (val) {
+            if (Utils.isNumber(val)) {
+              // numeric xaxis may have smaller range, so defaulting to 1 decimal
+              if (w.config.xaxis.type === 'numeric' && w.globals.dataPoints < 50) {
+                return val.toFixed(1);
+              }
+
+              return val.toFixed(0);
+            }
+
+            return val;
+          };
+        } // formatter function will always overwrite format property
+
+
+        w.config.yaxis.forEach(function (yaxe, i) {
+          if (yaxe.labels.formatter !== undefined) {
+            w.globals.yLabelFormatters[i] = yaxe.labels.formatter;
+          } else {
+            w.globals.yLabelFormatters[i] = function (val) {
+              if (Utils.isNumber(val)) {
+                if (w.globals.yValueDecimal !== 0) {
+                  return val.toFixed(yaxe.decimalsInFloat !== undefined ? yaxe.decimalsInFloat : w.globals.yValueDecimal);
+                } else if (w.globals.maxY - w.globals.minY < 5) {
+                  return val.toFixed(1);
+                } else {
+                  return val.toFixed(0);
+                }
+              }
+
+              return val;
+            };
+          }
+        });
+        return w.globals;
+      }
+    }, {
+      key: "heatmapLabelFormatters",
+      value: function heatmapLabelFormatters() {
+        var w = this.w;
+
+        if (w.config.chart.type === 'heatmap') {
+          w.globals.yAxisScale[0].result = w.globals.seriesNames.slice(); //  get the longest string from the labels array and also apply label formatter to it
+
+          var longest = w.globals.seriesNames.reduce(function (a, b) {
+            return a.length > b.length ? a : b;
+          }, 0);
+          w.globals.yAxisScale[0].niceMax = longest;
+          w.globals.yAxisScale[0].niceMin = longest;
+        }
+      }
+    }]);
+
+    return Formatters;
+  }();
+
+  var AxesUtils =
+  /*#__PURE__*/
+  function () {
+    function AxesUtils(ctx) {
+      _classCallCheck(this, AxesUtils);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    } // Based on the formatter function, get the label text and position
+
+
+    _createClass(AxesUtils, [{
+      key: "getLabel",
+      value: function getLabel(labels, timelineLabels, x, i) {
+        var drawnLabels = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
+        var w = this.w;
+        var rawLabel = typeof labels[i] === 'undefined' ? '' : labels[i];
+        var label;
+        var xlbFormatter = w.globals.xLabelFormatter;
+        var customFormatter = w.config.xaxis.labels.formatter;
+        var xFormat = new Formatters(this.ctx);
+        label = xFormat.xLabelFormat(xlbFormatter, rawLabel);
+
+        if (customFormatter !== undefined) {
+          label = customFormatter(rawLabel, labels[i], i);
+        }
+
+        if (timelineLabels.length > 0) {
+          x = timelineLabels[i].position;
+          label = timelineLabels[i].value;
+        } else {
+          if (w.config.xaxis.type === 'datetime' && customFormatter === undefined) {
+            label = '';
+          }
+        }
+
+        if (typeof label === 'undefined') label = '';
+        label = label.toString();
+
+        if (label.indexOf('NaN') === 0 || label.toLowerCase().indexOf('invalid') === 0 || label.toLowerCase().indexOf('infinity') >= 0 || drawnLabels.indexOf(label) >= 0 && !w.config.xaxis.labels.showDuplicates) {
+          label = '';
+        }
+
+        return {
+          x: x,
+          text: label
+        };
+      }
+    }, {
+      key: "drawYAxisTicks",
+      value: function drawYAxisTicks(x, tickAmount, axisBorder, axisTicks, realIndex, labelsDivider, elYaxis) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx); // initial label position = 0;
+
+        var t = w.globals.translateY;
+
+        if (axisTicks.show) {
+          if (w.config.yaxis[realIndex].opposite === true) x = x + axisTicks.width;
+
+          for (var i = tickAmount; i >= 0; i--) {
+            var tY = t + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY - 1;
+
+            if (w.globals.isBarHorizontal) {
+              tY = labelsDivider * i;
+            }
+
+            var elTick = graphics.drawLine(x + axisBorder.offsetX - axisTicks.width + axisTicks.offsetX, tY + axisTicks.offsetY, x + axisBorder.offsetX + axisTicks.offsetX, tY + axisTicks.offsetY, axisBorder.color);
+            elYaxis.add(elTick);
+            t = t + labelsDivider;
+          }
+        }
+      }
+    }]);
+
+    return AxesUtils;
+  }();
+
+  /**
+   * ApexCharts XAxis Class for drawing X-Axis.
+   *
+   * @module XAxis
+   **/
+
+  var XAxis =
+  /*#__PURE__*/
+  function () {
+    function XAxis(ctx) {
+      _classCallCheck(this, XAxis);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      var w = this.w;
+      this.xaxisLabels = w.globals.labels.slice();
+
+      if (w.globals.timelineLabels.length > 0) {
+        //  timeline labels are there
+        this.xaxisLabels = w.globals.timelineLabels.slice();
+      }
+
+      this.drawnLabels = [];
+
+      if (w.config.xaxis.position === 'top') {
+        this.offY = 0;
+      } else {
+        this.offY = w.globals.gridHeight + 1;
+      }
+
+      this.offY = this.offY + w.config.xaxis.axisBorder.offsetY;
+      this.xaxisFontSize = w.config.xaxis.labels.style.fontSize;
+      this.xaxisFontFamily = w.config.xaxis.labels.style.fontFamily;
+      this.xaxisForeColors = w.config.xaxis.labels.style.colors;
+      this.xaxisBorderWidth = w.config.xaxis.axisBorder.width;
+
+      if (this.xaxisBorderWidth.indexOf('%') > -1) {
+        this.xaxisBorderWidth = w.globals.gridWidth * parseInt(this.xaxisBorderWidth) / 100;
+      } else {
+        this.xaxisBorderWidth = parseInt(this.xaxisBorderWidth);
+      }
+
+      this.xaxisBorderHeight = w.config.xaxis.axisBorder.height; // For bars, we will only consider single y xais,
+      // as we are not providing multiple yaxis for bar charts
+
+      this.yaxis = w.config.yaxis[0];
+      this.axesUtils = new AxesUtils(ctx);
+    }
+
+    _createClass(XAxis, [{
+      key: "drawXaxis",
+      value: function drawXaxis() {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var elXaxis = graphics.group({
+          class: 'apexcharts-xaxis',
+          transform: "translate(".concat(w.config.xaxis.offsetX, ", ").concat(w.config.xaxis.offsetY, ")")
+        });
+        var elXaxisTexts = graphics.group({
+          class: 'apexcharts-xaxis-texts-g',
+          transform: "translate(".concat(w.globals.translateXAxisX, ", ").concat(w.globals.translateXAxisY, ")")
+        });
+        elXaxis.add(elXaxisTexts);
+        var colWidth; // initial x Position (keep adding column width in the loop)
+
+        var xPos = w.globals.padHorizontal;
+        var labels = [];
+
+        for (var i = 0; i < this.xaxisLabels.length; i++) {
+          labels.push(this.xaxisLabels[i]);
+        }
+
+        if (w.globals.isXNumeric) {
+          colWidth = w.globals.gridWidth / (labels.length - 1);
+          xPos = xPos + colWidth / 2 + w.config.xaxis.labels.offsetX;
+        } else {
+          colWidth = w.globals.gridWidth / labels.length;
+          xPos = xPos + colWidth + w.config.xaxis.labels.offsetX;
+        }
+
+        var labelsLen = labels.length;
+
+        if (w.config.xaxis.labels.show) {
+          for (var _i = 0; _i <= labelsLen - 1; _i++) {
+            var x = xPos - colWidth / 2 + w.config.xaxis.labels.offsetX;
+            var label = this.axesUtils.getLabel(labels, w.globals.timelineLabels, x, _i, this.drawnLabels);
+            this.drawnLabels.push(label.text);
+            var offsetYCorrection = 28;
+
+            if (w.globals.rotateXLabels) {
+              offsetYCorrection = 22;
+            }
+
+            var elTick = graphics.drawText({
+              x: label.x,
+              y: this.offY + w.config.xaxis.labels.offsetY + offsetYCorrection,
+              text: '',
+              textAnchor: 'middle',
+              fontSize: this.xaxisFontSize,
+              fontFamily: this.xaxisFontFamily,
+              foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[_i] : this.xaxisForeColors,
+              cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass
+            });
+
+            if (_i === labelsLen - 1) {
+              if (w.globals.skipLastTimelinelabel) {
+                label.text = '';
+              }
+            }
+
+            elXaxisTexts.add(elTick);
+            graphics.addTspan(elTick, label.text, this.xaxisFontFamily);
+            var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title');
+            elTooltipTitle.textContent = label.text;
+            elTick.node.appendChild(elTooltipTitle);
+            xPos = xPos + colWidth;
+          }
+        }
+
+        if (w.config.xaxis.title.text !== undefined) {
+          var elXaxisTitle = graphics.group({
+            class: 'apexcharts-xaxis-title'
+          });
+          var elXAxisTitleText = graphics.drawText({
+            x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX,
+            y: this.offY - parseInt(this.xaxisFontSize) + w.globals.xAxisLabelsHeight + w.config.xaxis.title.offsetY,
+            text: w.config.xaxis.title.text,
+            textAnchor: 'middle',
+            fontSize: w.config.xaxis.title.style.fontSize,
+            fontFamily: w.config.xaxis.title.style.fontFamily,
+            foreColor: w.config.xaxis.title.style.color,
+            cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass
+          });
+          elXaxisTitle.add(elXAxisTitleText);
+          elXaxis.add(elXaxisTitle);
+        }
+
+        if (w.config.xaxis.axisBorder.show) {
+          var lineCorrection = 0;
+
+          if (w.config.chart.type === 'bar' && w.globals.isXNumeric) {
+            lineCorrection = lineCorrection - 15;
+          }
+
+          var elHorzLine = graphics.drawLine(w.globals.padHorizontal + lineCorrection + w.config.xaxis.axisBorder.offsetX, this.offY, this.xaxisBorderWidth, this.offY, w.config.xaxis.axisBorder.color, 0, this.xaxisBorderHeight);
+          elXaxis.add(elHorzLine);
+        }
+
+        return elXaxis;
+      } // this actually becomes the vertical axis (for bar charts)
+
+    }, {
+      key: "drawXaxisInversed",
+      value: function drawXaxisInversed(realIndex) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var translateYAxisX = w.config.yaxis[0].opposite ? w.globals.translateYAxisX[realIndex] : 0;
+        var elYaxis = graphics.group({
+          class: 'apexcharts-yaxis apexcharts-xaxis-inversed',
+          rel: realIndex
+        });
+        var elYaxisTexts = graphics.group({
+          class: 'apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g',
+          transform: 'translate(' + translateYAxisX + ', 0)'
+        });
+        elYaxis.add(elYaxisTexts);
+        var colHeight; // initial x Position (keep adding column width in the loop)
+
+        var yPos;
+        var labels = [];
+
+        for (var i = 0; i < this.xaxisLabels.length; i++) {
+          labels.push(this.xaxisLabels[i]);
+        }
+
+        colHeight = w.globals.gridHeight / labels.length;
+        yPos = -(colHeight / 2.2);
+        var lbFormatter = w.globals.yLabelFormatters[0];
+        var ylabels = w.config.yaxis[0].labels;
+
+        if (ylabels.show) {
+          for (var _i2 = 0; _i2 <= labels.length - 1; _i2++) {
+            var label = typeof labels[_i2] === 'undefined' ? '' : labels[_i2];
+            label = lbFormatter(label);
+            var elLabel = graphics.drawText({
+              x: ylabels.offsetX - 15,
+              y: yPos + colHeight + ylabels.offsetY,
+              text: label,
+              textAnchor: this.yaxis.opposite ? 'start' : 'end',
+              foreColor: ylabels.style.color ? ylabels.style.color : ylabels.style.colors[_i2],
+              fontSize: ylabels.style.fontSize,
+              fontFamily: ylabels.style.fontFamily,
+              cssClass: 'apexcharts-yaxis-label ' + ylabels.style.cssClass
+            });
+            elYaxisTexts.add(elLabel);
+
+            if (w.config.yaxis[realIndex].labels.rotate !== 0) {
+              var labelRotatingCenter = graphics.rotateAroundCenter(elLabel.node);
+              elLabel.node.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].labels.rotate, " ").concat(labelRotatingCenter.x, " ").concat(labelRotatingCenter.y, ")"));
+            }
+
+            yPos = yPos + colHeight;
+          }
+        }
+
+        if (w.config.yaxis[0].title.text !== undefined) {
+          var elXaxisTitle = graphics.group({
+            class: 'apexcharts-yaxis-title apexcharts-xaxis-title-inversed',
+            transform: 'translate(' + translateYAxisX + ', 0)'
+          });
+          var elXAxisTitleText = graphics.drawText({
+            x: 0,
+            y: w.globals.gridHeight / 2,
+            text: w.config.yaxis[0].title.text,
+            textAnchor: 'middle',
+            foreColor: w.config.yaxis[0].title.style.color,
+            fontSize: w.config.yaxis[0].title.style.fontSize,
+            fontFamily: w.config.yaxis[0].title.style.fontFamily,
+            cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[0].title.style.cssClass
+          });
+          elXaxisTitle.add(elXAxisTitleText);
+          elYaxis.add(elXaxisTitle);
+        }
+
+        if (w.config.xaxis.axisBorder.show) {
+          var elHorzLine = graphics.drawLine(w.globals.padHorizontal + w.config.xaxis.axisBorder.offsetX, this.offY, this.xaxisBorderWidth, this.offY, this.yaxis.axisBorder.color, 0, this.xaxisBorderHeight);
+          elYaxis.add(elHorzLine);
+          this.axesUtils.drawYAxisTicks(0, labels.length, w.config.yaxis[0].axisBorder, w.config.yaxis[0].axisTicks, 0, colHeight, elYaxis);
+        }
+
+        return elYaxis;
+      }
+    }, {
+      key: "drawXaxisTicks",
+      value: function drawXaxisTicks(x1, appendToElement) {
+        var w = this.w;
+        var x2 = x1;
+        if (x1 < 0 || x1 > w.globals.gridWidth) return;
+        var y1 = this.offY + w.config.xaxis.axisTicks.offsetY;
+        var y2 = y1 + w.config.xaxis.axisTicks.height;
+
+        if (w.config.xaxis.axisTicks.show) {
+          var graphics = new Graphics(this.ctx);
+          var line = graphics.drawLine(x1 + w.config.xaxis.axisTicks.offsetX, y1 + w.config.xaxis.offsetY, x2 + w.config.xaxis.axisTicks.offsetX, y2 + w.config.xaxis.offsetY, w.config.xaxis.axisTicks.color); // we are not returning anything, but appending directly to the element pased in param
+
+          appendToElement.add(line);
+          line.node.classList.add('apexcharts-xaxis-tick');
+        }
+      }
+    }, {
+      key: "getXAxisTicksPositions",
+      value: function getXAxisTicksPositions() {
+        var w = this.w;
+        var xAxisTicksPositions = [];
+        var xCount = this.xaxisLabels.length;
+        var x1 = w.globals.padHorizontal;
+
+        if (w.globals.timelineLabels.length > 0) {
+          for (var i = 0; i < xCount; i++) {
+            x1 = this.xaxisLabels[i].position;
+            xAxisTicksPositions.push(x1);
+          }
+        } else {
+          var xCountForCategoryCharts = xCount;
+
+          for (var _i3 = 0; _i3 < xCountForCategoryCharts; _i3++) {
+            var x1Count = xCountForCategoryCharts;
+
+            if (w.globals.isXNumeric && w.config.chart.type !== 'bar') {
+              x1Count -= 1;
+            }
+
+            x1 = x1 + w.globals.gridWidth / x1Count;
+            xAxisTicksPositions.push(x1);
+          }
+        }
+
+        return xAxisTicksPositions;
+      } // to rotate x-axis labels or to put ... for longer text in xaxis
+
+    }, {
+      key: "xAxisLabelCorrections",
+      value: function xAxisLabelCorrections() {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var xAxis = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g');
+        var xAxisTexts = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-texts-g text');
+        var yAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-inversed text');
+        var xAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-inversed-texts-g text');
+
+        if (w.globals.rotateXLabels || w.config.xaxis.labels.rotateAlways) {
+          for (var xat = 0; xat < xAxisTexts.length; xat++) {
+            var textRotatingCenter = graphics.rotateAroundCenter(xAxisTexts[xat]);
+            textRotatingCenter.y = textRotatingCenter.y - 1; // + tickWidth/4;
+
+            textRotatingCenter.x = textRotatingCenter.x + 1;
+            xAxisTexts[xat].setAttribute('transform', "rotate(".concat(w.config.xaxis.labels.rotate, " ").concat(textRotatingCenter.x, " ").concat(textRotatingCenter.y, ")"));
+            xAxisTexts[xat].setAttribute('text-anchor', "end");
+            var offsetHeight = 10;
+            xAxis.setAttribute('transform', "translate(0, ".concat(-offsetHeight, ")"));
+            var tSpan = xAxisTexts[xat].childNodes;
+
+            if (w.config.xaxis.labels.trim) {
+              graphics.placeTextWithEllipsis(tSpan[0], tSpan[0].textContent, w.config.xaxis.labels.maxHeight - 40);
+            }
+          }
+        } else {
+          var width = w.globals.gridWidth / w.globals.labels.length;
+
+          for (var _xat = 0; _xat < xAxisTexts.length; _xat++) {
+            var _tSpan = xAxisTexts[_xat].childNodes;
+
+            if (w.config.xaxis.labels.trim && w.config.xaxis.type !== 'datetime') {
+              graphics.placeTextWithEllipsis(_tSpan[0], _tSpan[0].textContent, width);
+            }
+          }
+        }
+
+        if (yAxisTextsInversed.length > 0) {
+          // truncate rotated y axis in bar chart (x axis)
+          var firstLabelPosX = yAxisTextsInversed[yAxisTextsInversed.length - 1].getBBox();
+          var lastLabelPosX = yAxisTextsInversed[0].getBBox();
+
+          if (firstLabelPosX.x < -20) {
+            yAxisTextsInversed[yAxisTextsInversed.length - 1].parentNode.removeChild(yAxisTextsInversed[yAxisTextsInversed.length - 1]);
+          }
+
+          if (lastLabelPosX.x + lastLabelPosX.width > w.globals.gridWidth) {
+            yAxisTextsInversed[0].parentNode.removeChild(yAxisTextsInversed[0]);
+          } // truncate rotated x axis in bar chart (y axis)
+
+
+          for (var _xat2 = 0; _xat2 < xAxisTextsInversed.length; _xat2++) {
+            graphics.placeTextWithEllipsis(xAxisTextsInversed[_xat2], xAxisTextsInversed[_xat2].textContent, w.config.yaxis[0].labels.maxWidth - parseInt(w.config.yaxis[0].title.style.fontSize) * 2 - 20);
+          }
+        }
+      } // renderXAxisBands() {
+      //   let w = this.w;
+      //   let plotBand = document.createElementNS(w.globals.SVGNS, 'rect')
+      //   w.globals.dom.elGraphical.add(plotBand)
+      // }
+
+    }]);
+
+    return XAxis;
+  }();
+
+  /**
+   * ApexCharts YAxis Class for drawing Y-Axis.
+   *
+   * @module YAxis
+   **/
+
+  var YAxis =
+  /*#__PURE__*/
+  function () {
+    function YAxis(ctx) {
+      _classCallCheck(this, YAxis);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      var w = this.w;
+      this.xaxisFontSize = w.config.xaxis.labels.style.fontSize;
+      this.axisFontFamily = w.config.xaxis.labels.style.fontFamily;
+      this.xaxisForeColors = w.config.xaxis.labels.style.colors;
+      this.xAxisoffX = 0;
+
+      if (w.config.xaxis.position === 'bottom') {
+        this.xAxisoffX = w.globals.gridHeight;
+      }
+
+      this.drawnLabels = [];
+      this.axesUtils = new AxesUtils(ctx);
+    }
+
+    _createClass(YAxis, [{
+      key: "drawYaxis",
+      value: function drawYaxis(realIndex) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var yaxisFontSize = w.config.yaxis[realIndex].labels.style.fontSize;
+        var yaxisFontFamily = w.config.yaxis[realIndex].labels.style.fontFamily;
+        var elYaxis = graphics.group({
+          class: 'apexcharts-yaxis',
+          rel: realIndex,
+          transform: 'translate(' + w.globals.translateYAxisX[realIndex] + ', 0)'
+        });
+
+        if (!w.config.yaxis[realIndex].show) {
+          return elYaxis;
+        }
+
+        var elYaxisTexts = graphics.group({
+          class: 'apexcharts-yaxis-texts-g'
+        });
+        elYaxis.add(elYaxisTexts);
+        var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg height/number of ticks
+
+        var labelsDivider = w.globals.gridHeight / tickAmount + 0.1; // initial label position = 0;
+
+        var l = w.globals.translateY;
+        var lbFormatter = w.globals.yLabelFormatters[realIndex];
+        var labels = w.globals.yAxisScale[realIndex].result.slice();
+
+        if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].reversed) {
+          labels.reverse();
+        }
+
+        if (w.config.yaxis[realIndex].labels.show) {
+          for (var i = tickAmount; i >= 0; i--) {
+            var val = labels[i];
+            val = lbFormatter(val, i);
+            var xPad = w.config.yaxis[realIndex].labels.padding;
+
+            if (w.config.yaxis[realIndex].opposite && w.config.yaxis.length !== 0) {
+              xPad = xPad * -1;
+            }
+
+            var label = graphics.drawText({
+              x: xPad,
+              y: l + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY + 1,
+              text: val,
+              textAnchor: w.config.yaxis[realIndex].opposite ? 'start' : 'end',
+              fontSize: yaxisFontSize,
+              fontFamily: yaxisFontFamily,
+              foreColor: w.config.yaxis[realIndex].labels.style.color,
+              cssClass: 'apexcharts-yaxis-label ' + w.config.yaxis[realIndex].labels.style.cssClass
+            });
+            elYaxisTexts.add(label);
+            var labelRotatingCenter = graphics.rotateAroundCenter(label.node);
+
+            if (w.config.yaxis[realIndex].labels.rotate !== 0) {
+              label.node.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].labels.rotate, " ").concat(labelRotatingCenter.x, " ").concat(labelRotatingCenter.y, ")"));
+            }
+
+            l = l + labelsDivider;
+          }
+        }
+
+        if (w.config.yaxis[realIndex].title.text !== undefined) {
+          var elYaxisTitle = graphics.group({
+            class: 'apexcharts-yaxis-title'
+          });
+          var x = 0;
+
+          if (w.config.yaxis[realIndex].opposite) {
+            x = w.globals.translateYAxisX[realIndex];
+          }
+
+          var elYAxisTitleText = graphics.drawText({
+            x: x,
+            y: w.globals.gridHeight / 2 + w.globals.translateY,
+            text: w.config.yaxis[realIndex].title.text,
+            textAnchor: 'end',
+            foreColor: w.config.yaxis[realIndex].title.style.color,
+            fontSize: w.config.yaxis[realIndex].title.style.fontSize,
+            fontFamily: w.config.yaxis[realIndex].title.style.fontFamily,
+            cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[realIndex].title.style.cssClass
+          });
+          elYaxisTitle.add(elYAxisTitleText);
+          elYaxis.add(elYaxisTitle);
+        }
+
+        var axisBorder = w.config.yaxis[realIndex].axisBorder;
+
+        if (axisBorder.show) {
+          var _x = 31 + axisBorder.offsetX;
+
+          if (w.config.yaxis[realIndex].opposite) {
+            _x = -31 - axisBorder.offsetX;
+          }
+
+          var elVerticalLine = graphics.drawLine(_x, w.globals.translateY + axisBorder.offsetY - 2, _x, w.globals.gridHeight + w.globals.translateY + axisBorder.offsetY + 2, axisBorder.color);
+          elYaxis.add(elVerticalLine);
+          this.axesUtils.drawYAxisTicks(_x, tickAmount, axisBorder, w.config.yaxis[realIndex].axisTicks, realIndex, labelsDivider, elYaxis);
+        }
+
+        return elYaxis;
+      } // This actually becomes horizonal axis (for bar charts)
+
+    }, {
+      key: "drawYaxisInversed",
+      value: function drawYaxisInversed(realIndex) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var elXaxis = graphics.group({
+          class: 'apexcharts-xaxis apexcharts-yaxis-inversed'
+        });
+        var elXaxisTexts = graphics.group({
+          class: 'apexcharts-xaxis-texts-g',
+          transform: "translate(".concat(w.globals.translateXAxisX, ", ").concat(w.globals.translateXAxisY, ")")
+        });
+        elXaxis.add(elXaxisTexts);
+        var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg width/number of ticks
+
+        var labelsDivider = w.globals.gridWidth / tickAmount + 0.1; // initial label position;
+
+        var l = labelsDivider + w.config.xaxis.labels.offsetX;
+        var lbFormatter = w.globals.xLabelFormatter;
+        var labels = w.globals.yAxisScale[realIndex].result.slice();
+        var timelineLabels = w.globals.invertedTimelineLabels;
+
+        if (timelineLabels.length > 0) {
+          this.xaxisLabels = timelineLabels.slice();
+          labels = timelineLabels.slice();
+          tickAmount = labels.length;
+        }
+
+        if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].reversed) {
+          labels.reverse();
+        }
+
+        var tl = timelineLabels.length;
+
+        if (w.config.xaxis.labels.show) {
+          for (var i = tl ? 0 : tickAmount; tl ? i < tl - 1 : i >= 0; tl ? i++ : i--) {
+            var val = labels[i];
+            val = lbFormatter(val, i);
+            var x = w.globals.gridWidth + w.globals.padHorizontal - (l - labelsDivider + w.config.xaxis.labels.offsetX);
+
+            if (timelineLabels.length) {
+              var label = this.axesUtils.getLabel(labels, timelineLabels, x, i, this.drawnLabels);
+              x = label.x;
+              val = label.text;
+              this.drawnLabels.push(label.text);
+            }
+
+            var elTick = graphics.drawText({
+              x: x,
+              y: this.xAxisoffX + w.config.xaxis.labels.offsetY + 30,
+              text: '',
+              textAnchor: 'middle',
+              foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[realIndex] : this.xaxisForeColors,
+              fontSize: this.xaxisFontSize,
+              fontFamily: this.xaxisFontFamily,
+              cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass
+            });
+            elXaxisTexts.add(elTick);
+            elTick.tspan(val);
+            var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title');
+            elTooltipTitle.textContent = val;
+            elTick.node.appendChild(elTooltipTitle);
+            l = l + labelsDivider;
+          }
+        }
+
+        if (w.config.xaxis.title.text !== undefined) {
+          var elYaxisTitle = graphics.group({
+            class: 'apexcharts-xaxis-title apexcharts-yaxis-title-inversed'
+          });
+          var elYAxisTitleText = graphics.drawText({
+            x: w.globals.gridWidth / 2,
+            y: this.xAxisoffX + parseInt(this.xaxisFontSize) + parseInt(w.config.xaxis.title.style.fontSize) + 20,
+            text: w.config.xaxis.title.text,
+            textAnchor: 'middle',
+            fontSize: w.config.xaxis.title.style.fontSize,
+            fontFamily: w.config.xaxis.title.style.fontFamily,
+            cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass
+          });
+          elYaxisTitle.add(elYAxisTitleText);
+          elXaxis.add(elYaxisTitle);
+        }
+
+        var axisBorder = w.config.yaxis[realIndex].axisBorder;
+
+        if (axisBorder.show) {
+          var elVerticalLine = graphics.drawLine(w.globals.padHorizontal + axisBorder.offsetX, 1 + axisBorder.offsetY, w.globals.padHorizontal + axisBorder.offsetX, w.globals.gridHeight + axisBorder.offsetY, axisBorder.color);
+          elXaxis.add(elVerticalLine);
+        }
+
+        return elXaxis;
+      }
+    }, {
+      key: "yAxisTitleRotate",
+      value: function yAxisTitleRotate(realIndex, yAxisOpposite) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var yAxisLabelsCoord = {
+          width: 0,
+          height: 0
+        };
+        var yAxisTitleCoord = {
+          width: 0,
+          height: 0
+        };
+        var elYAxisLabelsWrap = w.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(realIndex, "'] .apexcharts-yaxis-texts-g"));
+
+        if (elYAxisLabelsWrap !== null) {
+          yAxisLabelsCoord = elYAxisLabelsWrap.getBoundingClientRect();
+        }
+
+        var yAxisTitle = w.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(realIndex, "'] .apexcharts-yaxis-title text"));
+
+        if (yAxisTitle !== null) {
+          yAxisTitleCoord = yAxisTitle.getBoundingClientRect();
+        }
+
+        if (yAxisTitle !== null) {
+          var x = this.xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite);
+          yAxisTitle.setAttribute('x', x.xPos - (yAxisOpposite ? 10 : 0));
+        }
+
+        if (yAxisTitle !== null) {
+          var titleRotatingCenter = graphics.rotateAroundCenter(yAxisTitle);
+
+          if (!yAxisOpposite) {
+            yAxisTitle.setAttribute('transform', "rotate(-".concat(w.config.yaxis[realIndex].title.rotate, " ").concat(titleRotatingCenter.x, " ").concat(titleRotatingCenter.y, ")"));
+          } else {
+            yAxisTitle.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].title.rotate, " ").concat(titleRotatingCenter.x, " ").concat(titleRotatingCenter.y, ")"));
+          }
+        }
+      }
+    }, {
+      key: "xPaddingForYAxisTitle",
+      value: function xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite) {
+        var w = this.w;
+        var oppositeAxisCount = 0;
+        var x = 0;
+        var padd = 10;
+
+        if (w.config.yaxis[realIndex].title.text === undefined || realIndex < 0) {
+          return {
+            xPos: x,
+            padd: 0
+          };
+        }
+
+        if (yAxisOpposite) {
+          x = yAxisLabelsCoord.width + w.config.yaxis[realIndex].title.offsetX + yAxisTitleCoord.width / 2 + padd / 2;
+          oppositeAxisCount += 1;
+
+          if (oppositeAxisCount === 0) {
+            x = x - padd / 2;
+          }
+        } else {
+          x = yAxisLabelsCoord.width * -1 + w.config.yaxis[realIndex].title.offsetX + padd / 2 + yAxisTitleCoord.width / 2;
+
+          if (w.globals.isBarHorizontal) {
+            padd = 25;
+            x = yAxisLabelsCoord.width * -1 - w.config.yaxis[realIndex].title.offsetX - padd;
+          }
+        }
+
+        return {
+          xPos: x,
+          padd: padd
+        };
+      } // sets the x position of the y-axis by counting the labels width, title width and any offset
+
+    }, {
+      key: "setYAxisXPosition",
+      value: function setYAxisXPosition(yaxisLabelCoords, yTitleCoords) {
+        var w = this.w;
+        var xLeft = 0;
+        var xRight = 0;
+        var leftOffsetX = 21;
+        var rightOffsetX = 1;
+
+        if (w.config.yaxis.length > 1) {
+          this.multipleYs = true;
+        }
+
+        w.config.yaxis.map(function (yaxe, index) {
+          var shouldNotDrawAxis = w.globals.ignoreYAxisIndexes.indexOf(index) > -1 || !yaxe.show || yaxe.floating || yaxisLabelCoords[index].width === 0;
+          var axisWidth = yaxisLabelCoords[index].width + yTitleCoords[index].width;
+
+          if (!yaxe.opposite) {
+            xLeft = w.globals.translateX - leftOffsetX;
+
+            if (!shouldNotDrawAxis) {
+              leftOffsetX = leftOffsetX + axisWidth + 20;
+            }
+
+            w.globals.translateYAxisX[index] = xLeft + yaxe.labels.offsetX;
+          } else {
+            if (w.globals.isBarHorizontal) {
+              xRight = w.globals.gridWidth + w.globals.translateX - 1;
+              w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX;
+            } else {
+              xRight = w.globals.gridWidth + w.globals.translateX + rightOffsetX;
+
+              if (!shouldNotDrawAxis) {
+                rightOffsetX = rightOffsetX + axisWidth + 20;
+              }
+
+              w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX + 20;
+            }
+          }
+        });
+      }
+    }, {
+      key: "setYAxisTextAlignments",
+      value: function setYAxisTextAlignments() {
+        var w = this.w;
+        var yaxis = w.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis");
+        yaxis = Utils.listToArray(yaxis);
+        yaxis.forEach(function (y, index) {
+          var yaxe = w.config.yaxis[index]; // proceed only if user has specified alignment
+
+          if (yaxe.labels.align !== undefined) {
+            var yAxisInner = w.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(index, "'] .apexcharts-yaxis-texts-g"));
+            var yAxisTexts = w.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(index, "'] .apexcharts-yaxis-label"));
+            yAxisTexts = Utils.listToArray(yAxisTexts);
+            var rect = yAxisInner.getBoundingClientRect();
+
+            if (yaxe.labels.align === 'left') {
+              yAxisTexts.forEach(function (label, lI) {
+                label.setAttribute('text-anchor', 'start');
+              });
+
+              if (!yaxe.opposite) {
+                yAxisInner.setAttribute('transform', "translate(-".concat(rect.width, ", 0)"));
+              }
+            } else if (yaxe.labels.align === 'center') {
+              yAxisTexts.forEach(function (label, lI) {
+                label.setAttribute('text-anchor', 'middle');
+              });
+              yAxisInner.setAttribute('transform', "translate(".concat(rect.width / 2 * (!yaxe.opposite ? -1 : 1), ", 0)"));
+            } else if (yaxe.labels.align === 'right') {
+              yAxisTexts.forEach(function (label, lI) {
+                label.setAttribute('text-anchor', 'end');
+              });
+
+              if (yaxe.opposite) {
+                yAxisInner.setAttribute('transform', "translate(".concat(rect.width, ", 0)"));
+              }
+            }
+          }
+        });
+      }
+    }]);
+
+    return YAxis;
+  }();
+
+  var Range =
+  /*#__PURE__*/
+  function () {
+    function Range(ctx) {
+      _classCallCheck(this, Range);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    } // http://stackoverflow.com/questions/326679/choosing-an-attractive-linear-scale-for-a-graphs-y-axiss
+    // This routine creates the Y axis values for a graph.
+
+
+    _createClass(Range, [{
+      key: "niceScale",
+      value: function niceScale(yMin, yMax, diff) {
+        var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+        var ticks = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 10;
+        var w = this.w;
+        var NO_MIN_MAX_PROVIDED = this.w.config.yaxis[index].max === undefined && this.w.config.yaxis[index].min === undefined || this.w.config.yaxis[index].forceNiceScale;
+
+        if (yMin === Number.MIN_VALUE && yMax === 0 || !Utils.isNumber(yMin) && !Utils.isNumber(yMax) || yMin === Number.MIN_VALUE && yMax === -Number.MAX_VALUE) {
+          // when all values are 0
+          yMin = 0;
+          yMax = ticks;
+          var linearScale = this.linearScale(yMin, yMax, ticks);
+          return linearScale;
+        }
+
+        if (yMin > yMax) {
+          // if somehow due to some wrong config, user sent max less than min,
+          // adjust the min/max again
+          console.warn('yaxis.min cannot be greater than yaxis.max');
+          yMax = yMin + 0.1;
+        } else if (yMin === yMax) {
+          // If yMin and yMax are identical, then
+          // adjust the yMin and yMax values to actually
+          // make a graph. Also avoids division by zero errors.
+          yMin = yMin === 0 ? 0 : yMin - 0.5; // some small value
+
+          yMax = yMax === 0 ? 2 : yMax + 0.5; // some small value
+        } // Calculate Min amd Max graphical labels and graph
+        // increments.  The number of ticks defaults to
+        // 10 which is the SUGGESTED value.  Any tick value
+        // entered is used as a suggested value which is
+        // adjusted to be a 'pretty' value.
+        //
+        // Output will be an array of the Y axis values that
+        // encompass the Y values.
+
+
+        var result = []; // Determine Range
+
+        var range = Math.abs(yMax - yMin);
+
+        if (range < 1 && NO_MIN_MAX_PROVIDED && (w.config.chart.type === 'candlestick' || w.config.series[index].type === 'candlestick' || w.globals.isRangeData)) {
+          /* fix https://github.com/apexcharts/apexcharts.js/issues/430 */
+          yMax = yMax * 1.01;
+        } // for extremely small values - #fix #553
+
+
+        if (range < 0.00001 && NO_MIN_MAX_PROVIDED && yMax < 10) {
+          yMax = yMax * 1.05;
+        } else if (diff > 0.1 && diff < 3 && NO_MIN_MAX_PROVIDED) {
+          /* fix https://github.com/apexcharts/apexcharts.js/issues/576 */
+
+          /* fix https://github.com/apexcharts/apexcharts.js/issues/588 */
+          yMax = yMax + diff / 3;
+        }
+
+        var tiks = ticks + 1; // Adjust ticks if needed
+
+        if (tiks < 2) {
+          tiks = 2;
+        } else if (tiks > 2) {
+          tiks -= 2;
+        } // Get raw step value
+
+
+        var tempStep = range / tiks; // Calculate pretty step value
+
+        var mag = Math.floor(Utils.log10(tempStep));
+        var magPow = Math.pow(10, mag);
+        var magMsd = parseInt(tempStep / magPow);
+        var stepSize = magMsd * magPow; // build Y label array.
+        // Lower and upper bounds calculations
+
+        var lb = stepSize * Math.floor(yMin / stepSize);
+        var ub = stepSize * Math.ceil(yMax / stepSize); // Build array
+
+        var val = lb;
+
+        while (1) {
+          result.push(val);
+          val += stepSize;
+
+          if (val > ub) {
+            break;
+          }
+        }
+
+        if (NO_MIN_MAX_PROVIDED) {
+          return {
+            result: result,
+            niceMin: result[0],
+            niceMax: result[result.length - 1]
+          };
+        } else {
+          result = [];
+          var v = yMin;
+          result.push(v);
+          var valuesDivider = Math.abs(yMax - yMin) / ticks;
+
+          for (var i = 0; i <= ticks - 1; i++) {
+            v = v + valuesDivider;
+            result.push(v);
+          }
+
+          return {
+            result: result,
+            niceMin: result[0],
+            niceMax: result[result.length - 1]
+          };
+        }
+      }
+    }, {
+      key: "linearScale",
+      value: function linearScale(yMin, yMax) {
+        var ticks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
+        var range = Math.abs(yMax - yMin);
+        var step = range / ticks;
+
+        if (ticks === Number.MAX_VALUE) {
+          ticks = 10;
+          step = 1;
+        }
+
+        var result = [];
+        var v = yMin;
+
+        while (ticks >= 0) {
+          result.push(v);
+          v = v + step;
+          ticks -= 1;
+        }
+
+        return {
+          result: result,
+          niceMin: result[0],
+          niceMax: result[result.length - 1]
+        };
+      }
+    }, {
+      key: "logarithmicScale",
+      value: function logarithmicScale(index, yMin, yMax, ticks) {
+        if (yMin < 0 || yMin === Number.MIN_VALUE) yMin = 0.01;
+        var base = 10;
+        var min = Math.log(yMin) / Math.log(base);
+        var max = Math.log(yMax) / Math.log(base);
+        var range = Math.abs(yMax - yMin);
+        var step = range / ticks;
+        var result = [];
+        var v = yMin;
+
+        while (ticks >= 0) {
+          result.push(v);
+          v = v + step;
+          ticks -= 1;
+        }
+
+        var logs = result.map(function (niceNumber, i) {
+          if (niceNumber <= 0) {
+            niceNumber = 0.01;
+          } // calculate adjustment factor
+
+
+          var scale = (max - min) / (yMax - yMin);
+          var logVal = Math.pow(base, min + scale * (niceNumber - min));
+          return Math.round(logVal / Utils.roundToBase(logVal, base)) * Utils.roundToBase(logVal, base);
+        }); // Math.floor may have rounded the value to 0, revert back to 1
+
+        if (logs[0] === 0) logs[0] = 1;
+        return {
+          result: logs,
+          niceMin: logs[0],
+          niceMax: logs[logs.length - 1]
+        };
+      }
+    }, {
+      key: "setYScaleForIndex",
+      value: function setYScaleForIndex(index, minY, maxY) {
+        var gl = this.w.globals;
+        var cnf = this.w.config;
+        var y = gl.isBarHorizontal ? cnf.xaxis : cnf.yaxis[index];
+
+        if (typeof gl.yAxisScale[index] === 'undefined') {
+          gl.yAxisScale[index] = [];
+        }
+
+        if (y.logarithmic) {
+          gl.allSeriesCollapsed = false;
+          gl.yAxisScale[index] = this.logarithmicScale(index, minY, maxY, y.tickAmount ? y.tickAmount : Math.floor(Math.log10(maxY)));
+        } else {
+          if (maxY === -Number.MAX_VALUE || !Utils.isNumber(maxY)) {
+            // no data in the chart. Either all series collapsed or user passed a blank array
+            gl.yAxisScale[index] = this.linearScale(0, 5, 5);
+          } else {
+            // there is some data. Turn off the allSeriesCollapsed flag
+            gl.allSeriesCollapsed = false;
+
+            if ((y.min !== undefined || y.max !== undefined) && !y.forceNiceScale) {
+              // fix https://github.com/apexcharts/apexcharts.js/issues/492
+              gl.yAxisScale[index] = this.linearScale(minY, maxY, y.tickAmount);
+            } else {
+              var diff = Math.abs(maxY - minY);
+              gl.yAxisScale[index] = this.niceScale(minY, maxY, diff, index, // fix https://github.com/apexcharts/apexcharts.js/issues/397
+              y.tickAmount ? y.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5);
+            }
+          }
+        }
+      }
+    }, {
+      key: "setMultipleYScales",
+      value: function setMultipleYScales() {
+        var _this = this;
+
+        var gl = this.w.globals;
+        var cnf = this.w.config;
+        var minYArr = gl.minYArr.concat([]);
+        var maxYArr = gl.maxYArr.concat([]);
+        var scalesIndices = []; // here, we loop through the yaxis array and find the item which has "seriesName" property
+
+        cnf.yaxis.forEach(function (yaxe, i) {
+          var index = i;
+          cnf.series.forEach(function (s, si) {
+            // if seriesName matches and that series is not collapsed, we use that scale
+            if (s.name === yaxe.seriesName && gl.collapsedSeriesIndices.indexOf(si) === -1) {
+              index = si;
+
+              if (i !== si) {
+                scalesIndices.push({
+                  index: si,
+                  similarIndex: i,
+                  alreadyExists: true
+                });
+              } else {
+                scalesIndices.push({
+                  index: si
+                });
+              }
+            }
+          });
+          var minY = minYArr[index];
+          var maxY = maxYArr[index];
+
+          _this.setYScaleForIndex(i, minY, maxY);
+        });
+        this.sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices);
+      }
+    }, {
+      key: "sameScaleInMultipleAxes",
+      value: function sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices) {
+        var _this2 = this;
+
+        var cnf = this.w.config;
+        var gl = this.w.globals; // we got the scalesIndices array in the above code, but we need to filter out the items which doesn't have same scales
+
+        var similarIndices = [];
+        scalesIndices.forEach(function (scale) {
+          if (scale.alreadyExists) {
+            if (typeof similarIndices[scale.index] === 'undefined') {
+              similarIndices[scale.index] = [];
+            }
+
+            similarIndices[scale.index].push(scale.index);
+            similarIndices[scale.index].push(scale.similarIndex);
+          }
+        });
+
+        function intersect(a, b) {
+          return a.filter(function (value) {
+            return b.indexOf(value) !== -1;
+          });
+        }
+
+        similarIndices.forEach(function (si, i) {
+          similarIndices.forEach(function (sj, j) {
+            if (i !== j) {
+              if (intersect(si, sj).length > 0) {
+                similarIndices[i] = similarIndices[i].concat(similarIndices[j]);
+              }
+            }
+          });
+        }); // then, we remove duplicates from the similarScale array
+
+        var uniqueSimilarIndices = similarIndices.map(function (item) {
+          return item.filter(function (i, pos) {
+            return item.indexOf(i) === pos;
+          });
+        }); // sort further to remove whole duplicate arrays later
+
+        var sortedIndices = uniqueSimilarIndices.map(function (s) {
+          return s.sort();
+        }); // remove undefined items
+
+        similarIndices = similarIndices.filter(function (s) {
+          return !!s;
+        });
+        var indices = sortedIndices.slice();
+        var stringIndices = indices.map(function (ind) {
+          return JSON.stringify(ind);
+        });
+        indices = indices.filter(function (ind, p) {
+          return stringIndices.indexOf(JSON.stringify(ind)) === p;
+        });
+        var sameScaleMinYArr = [];
+        var sameScaleMaxYArr = [];
+        minYArr.forEach(function (minYValue, yi) {
+          indices.forEach(function (scale, i) {
+            // we compare only the yIndex which exists in the indices array
+            if (scale.indexOf(yi) > -1) {
+              if (typeof sameScaleMinYArr[i] === 'undefined') {
+                sameScaleMinYArr[i] = [];
+                sameScaleMaxYArr[i] = [];
+              }
+
+              sameScaleMinYArr[i].push({
+                key: yi,
+                value: minYValue
+              });
+              sameScaleMaxYArr[i].push({
+                key: yi,
+                value: maxYArr[yi]
+              });
+            }
+          });
+        });
+        var sameScaleMin = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, Number.MIN_VALUE);
+        var sameScaleMax = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, -Number.MAX_VALUE);
+        sameScaleMinYArr.forEach(function (s, i) {
+          s.forEach(function (sc, j) {
+            sameScaleMin[i] = Math.min(sc.value, sameScaleMin[i]);
+          });
+        });
+        sameScaleMaxYArr.forEach(function (s, i) {
+          s.forEach(function (sc, j) {
+            sameScaleMax[i] = Math.max(sc.value, sameScaleMax[i]);
+          });
+        });
+        minYArr.forEach(function (min, i) {
+          sameScaleMaxYArr.forEach(function (s, si) {
+            var minY = sameScaleMin[si];
+            var maxY = sameScaleMax[si];
+            s.forEach(function (ind, k) {
+              if (s[k].key === i) {
+                if (cnf.yaxis[i].min !== undefined) {
+                  if (typeof cnf.yaxis[i].min === 'function') {
+                    minY = cnf.yaxis[i].min(gl.minY);
+                  } else {
+                    minY = cnf.yaxis[i].min;
+                  }
+                }
+
+                if (cnf.yaxis[i].max !== undefined) {
+                  if (typeof cnf.yaxis[i].max === 'function') {
+                    maxY = cnf.yaxis[i].max(gl.maxY);
+                  } else {
+                    maxY = cnf.yaxis[i].max;
+                  }
+                }
+
+                _this2.setYScaleForIndex(i, minY, maxY);
+              }
+            });
+          });
+        });
+      }
+    }, {
+      key: "autoScaleY",
+      value: function autoScaleY(ctx, e) {
+        if (!ctx) {
+          ctx = this;
+        }
+
+        var ret = [];
+        ctx.w.config.series.forEach(function (serie) {
+          var min, max;
+          var first = serie.data.find(function (x) {
+            return x[0] >= e.xaxis.min;
+          });
+          var firstValue = first[1];
+          max = min = firstValue;
+          serie.data.forEach(function (data) {
+            if (data[0] <= e.xaxis.max && data[0] >= e.xaxis.min) {
+              if (data[1] > max && data[1] !== null) max = data[1];
+              if (data[1] < min && data[1] !== null) min = data[1];
+            }
+          });
+          min *= 0.95;
+          max *= 1.05;
+          ret.push({
+            min: min,
+            max: max
+          });
+        });
+        return ret;
+      }
+    }]);
+
+    return Range;
+  }();
+
+  /**
+   * Range is used to generates values between min and max.
+   *
+   * @module Range
+   **/
+
+  var Range$1 =
+  /*#__PURE__*/
+  function () {
+    function Range$$1(ctx) {
+      _classCallCheck(this, Range$$1);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.scales = new Range(ctx);
+    }
+
+    _createClass(Range$$1, [{
+      key: "init",
+      value: function init() {
+        this.setYRange();
+        this.setXRange();
+        this.setZRange();
+      }
+    }, {
+      key: "getMinYMaxY",
+      value: function getMinYMaxY(startingIndex) {
+        var lowestY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;
+        var highestY = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -Number.MAX_VALUE;
+        var len = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
+        var gl = this.w.globals;
+        var maxY = -Number.MAX_VALUE;
+        var minY = Number.MIN_VALUE;
+
+        if (len === null) {
+          len = startingIndex + 1;
+        }
+
+        var series = gl.series;
+        var seriesMin = series;
+        var seriesMax = series;
+
+        if (this.w.config.chart.type === 'candlestick') {
+          seriesMin = gl.seriesCandleL;
+          seriesMax = gl.seriesCandleH;
+        } else if (gl.isRangeData) {
+          seriesMin = gl.seriesRangeStart;
+          seriesMax = gl.seriesRangeEnd;
+        }
+
+        for (var i = startingIndex; i < len; i++) {
+          gl.dataPoints = Math.max(gl.dataPoints, series[i].length);
+
+          for (var j = 0; j < gl.series[i].length; j++) {
+            var val = series[i][j];
+
+            if (val !== null && Utils.isNumber(val)) {
+              maxY = Math.max(maxY, seriesMax[i][j]);
+              lowestY = Math.min(lowestY, seriesMin[i][j]);
+              highestY = Math.max(highestY, seriesMin[i][j]);
+
+              if (this.w.config.chart.type === 'candlestick') {
+                maxY = Math.max(maxY, gl.seriesCandleO[i][j]);
+                maxY = Math.max(maxY, gl.seriesCandleH[i][j]);
+                maxY = Math.max(maxY, gl.seriesCandleL[i][j]);
+                maxY = Math.max(maxY, gl.seriesCandleC[i][j]);
+                highestY = maxY;
+              }
+
+              if (Utils.isFloat(val)) {
+                val = Utils.noExponents(val);
+                gl.yValueDecimal = Math.max(gl.yValueDecimal, val.toString().split('.')[1].length);
+              }
+
+              if (minY > seriesMin[i][j] && seriesMin[i][j] < 0) {
+                minY = seriesMin[i][j];
+              }
+            } else {
+              gl.hasNullValues = true;
+            }
+          }
+        }
+
+        return {
+          minY: minY,
+          maxY: maxY,
+          lowestY: lowestY,
+          highestY: highestY
+        };
+      }
+    }, {
+      key: "setYRange",
+      value: function setYRange() {
+        var gl = this.w.globals;
+        var cnf = this.w.config;
+        gl.maxY = -Number.MAX_VALUE;
+        gl.minY = Number.MIN_VALUE;
+        var lowestYInAllSeries = Number.MAX_VALUE;
+
+        if (gl.isMultipleYAxis) {
+          // we need to get minY and maxY for multiple y axis
+          for (var i = 0; i < gl.series.length; i++) {
+            var minYMaxYArr = this.getMinYMaxY(i, lowestYInAllSeries, null, i + 1);
+            gl.minYArr.push(minYMaxYArr.minY);
+            gl.maxYArr.push(minYMaxYArr.maxY);
+            lowestYInAllSeries = minYMaxYArr.lowestY;
+          }
+        } // and then, get the minY and maxY from all series
+
+
+        var minYMaxY = this.getMinYMaxY(0, lowestYInAllSeries, null, gl.series.length);
+        gl.minY = minYMaxY.minY;
+        gl.maxY = minYMaxY.maxY;
+        lowestYInAllSeries = minYMaxY.lowestY;
+
+        if (cnf.chart.stacked) {
+          // for stacked charts, we calculate each series's parallel values. i.e, series[0][j] + series[1][j] .... [series[i.length][j]] and get the max out of it
+          var stackedPoss = [];
+          var stackedNegs = [];
+
+          for (var j = 0; j < gl.series[gl.maxValsInArrayIndex].length; j++) {
+            var poss = 0;
+            var negs = 0;
+
+            for (var _i = 0; _i < gl.series.length; _i++) {
+              if (gl.series[_i][j] !== null && Utils.isNumber(gl.series[_i][j])) {
+                if (gl.series[_i][j] > 0) {
+                  // 0.0001 fixes #185 when values are very small
+                  poss = poss + parseFloat(gl.series[_i][j]) + 0.0001;
+                } else {
+                  negs = negs + parseFloat(gl.series[_i][j]);
+                }
+              }
+
+              if (_i === gl.series.length - 1) {
+                // push all the totals to the array for future use
+                stackedPoss.push(poss);
+                stackedNegs.push(negs);
+              }
+            }
+          } // get the max/min out of the added parallel values
+
+
+          for (var z = 0; z < stackedPoss.length; z++) {
+            gl.maxY = Math.max(gl.maxY, stackedPoss[z]);
+            gl.minY = Math.min(gl.minY, stackedNegs[z]);
+          }
+        } // if the numbers are too big, reduce the range
+        // for eg, if number is between 100000-110000, putting 0 as the lowest value is not so good idea. So change the gl.minY for line/area/candlesticks
+
+
+        if (cnf.chart.type === 'line' || cnf.chart.type === 'area' || cnf.chart.type === 'candlestick') {
+          if (gl.minY === Number.MIN_VALUE && lowestYInAllSeries !== -Number.MAX_VALUE && lowestYInAllSeries !== gl.maxY // single value possibility
+          ) {
+              var diff = gl.maxY - lowestYInAllSeries;
+
+              if (lowestYInAllSeries >= 0 && lowestYInAllSeries <= 10) {
+                // if minY is already 0/low value, we don't want to go negatives here - so this check is essential.
+                diff = 0;
+              }
+
+              gl.minY = lowestYInAllSeries - diff * 5 / 100;
+              /* fix https://github.com/apexcharts/apexcharts.js/issues/426 */
+
+              gl.maxY = gl.maxY + diff * 5 / 100;
+            }
+        }
+
+        cnf.yaxis.map(function (yaxe, index) {
+          // override all min/max values by user defined values (y axis)
+          if (yaxe.max !== undefined) {
+            if (typeof yaxe.max === 'number') {
+              gl.maxYArr[index] = yaxe.max;
+            } else if (typeof yaxe.max === 'function') {
+              gl.maxYArr[index] = yaxe.max(gl.maxY);
+            } // gl.maxY is for single y-axis chart, it will be ignored in multi-yaxis
+
+
+            gl.maxY = gl.maxYArr[index];
+          }
+
+          if (yaxe.min !== undefined) {
+            if (typeof yaxe.min === 'number') {
+              gl.minYArr[index] = yaxe.min;
+            } else if (typeof yaxe.min === 'function') {
+              gl.minYArr[index] = yaxe.min(gl.minY);
+            } // gl.minY is for single y-axis chart, it will be ignored in multi-yaxis
+
+
+            gl.minY = gl.minYArr[index];
+          }
+        }); // for horizontal bar charts, we need to check xaxis min/max as user may have specified there
+
+        if (gl.isBarHorizontal) {
+          if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') {
+            gl.minY = cnf.xaxis.min;
+          }
+
+          if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') {
+            gl.maxY = cnf.xaxis.max;
+          }
+        } // for multi y-axis we need different scales for each
+
+
+        if (gl.isMultipleYAxis) {
+          this.scales.setMultipleYScales();
+          gl.minY = lowestYInAllSeries;
+          gl.yAxisScale.forEach(function (scale, i) {
+            gl.minYArr[i] = scale.niceMin;
+            gl.maxYArr[i] = scale.niceMax;
+          });
+        } else {
+          this.scales.setYScaleForIndex(0, gl.minY, gl.maxY);
+          gl.minY = gl.yAxisScale[0].niceMin;
+          gl.maxY = gl.yAxisScale[0].niceMax;
+          gl.minYArr[0] = gl.yAxisScale[0].niceMin;
+          gl.maxYArr[0] = gl.yAxisScale[0].niceMax;
+        }
+
+        return {
+          minY: gl.minY,
+          maxY: gl.maxY,
+          minYArr: gl.minYArr,
+          maxYArr: gl.maxYArr
+        };
+      }
+    }, {
+      key: "setXRange",
+      value: function setXRange() {
+        var gl = this.w.globals;
+        var cnf = this.w.config;
+        var isXNumeric = cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'datetime' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided || gl.noLabelsProvided || gl.isXNumeric; // minX maxX starts here
+
+        if (gl.isXNumeric) {
+          for (var i = 0; i < gl.series.length; i++) {
+            if (gl.labels[i]) {
+              for (var j = 0; j < gl.labels[i].length; j++) {
+                if (gl.labels[i][j] !== null && Utils.isNumber(gl.labels[i][j])) {
+                  gl.maxX = Math.max(gl.maxX, gl.labels[i][j]);
+                  gl.initialmaxX = Math.max(gl.maxX, gl.labels[i][j]);
+                  gl.minX = Math.min(gl.minX, gl.labels[i][j]);
+                  gl.initialminX = Math.min(gl.minX, gl.labels[i][j]);
+                }
+              }
+            }
+          }
+        }
+
+        if (gl.noLabelsProvided) {
+          if (cnf.xaxis.categories.length === 0) {
+            gl.maxX = gl.labels[gl.labels.length - 1];
+            gl.initialmaxX = gl.labels[gl.labels.length - 1];
+            gl.minX = 1;
+            gl.initialminX = 1;
+          }
+        } // for numeric xaxis, we need to adjust some padding left and right for bar charts
+
+
+        if (gl.comboChartsHasBars || cnf.chart.type === 'candlestick' || cnf.chart.type === 'bar' && gl.isXNumeric) {
+          if (cnf.xaxis.type !== 'category' || gl.isXNumeric) {
+            var minX = gl.minX - gl.svgWidth / gl.dataPoints * (Math.abs(gl.maxX - gl.minX) / gl.svgWidth) / 2;
+            gl.minX = minX;
+            gl.initialminX = minX;
+            var maxX = gl.maxX + gl.svgWidth / gl.dataPoints * (Math.abs(gl.maxX - gl.minX) / gl.svgWidth) / 2;
+            gl.maxX = maxX;
+            gl.initialmaxX = maxX;
+          }
+        }
+
+        if ((gl.isXNumeric || gl.noLabelsProvided) && (!cnf.xaxis.convertedCatToNumeric || gl.dataFormatXNumeric)) {
+          var ticks;
+
+          if (cnf.xaxis.tickAmount === undefined) {
+            ticks = Math.round(gl.svgWidth / 150); // no labels provided and total number of dataPoints is less than 20
+
+            if (cnf.xaxis.type === 'numeric' && gl.dataPoints < 20) {
+              ticks = gl.dataPoints - 1;
+            } // this check is for when ticks exceeds total datapoints and that would result in duplicate labels
+
+
+            if (ticks > gl.dataPoints && gl.dataPoints !== 0) {
+              ticks = gl.dataPoints - 1;
+            }
+          } else if (cnf.xaxis.tickAmount === 'dataPoints') {
+            ticks = gl.series[gl.maxValsInArrayIndex].length - 1;
+          } else {
+            ticks = cnf.xaxis.tickAmount;
+          } // override all min/max values by user defined values (x axis)
+
+
+          if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') {
+            gl.maxX = cnf.xaxis.max;
+          }
+
+          if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') {
+            gl.minX = cnf.xaxis.min;
+          } // if range is provided, adjust the new minX
+
+
+          if (cnf.xaxis.range !== undefined) {
+            gl.minX = gl.maxX - cnf.xaxis.range;
+          }
+
+          if (gl.minX !== Number.MAX_VALUE && gl.maxX !== -Number.MAX_VALUE) {
+            gl.xAxisScale = this.scales.linearScale(gl.minX, gl.maxX, ticks);
+          } else {
+            gl.xAxisScale = this.scales.linearScale(1, ticks, ticks);
+
+            if (gl.noLabelsProvided && gl.labels.length > 0) {
+              gl.xAxisScale = this.scales.linearScale(1, gl.labels.length, ticks - 1); // this is the only place seriesX is again mutated
+
+              gl.seriesX = gl.labels.slice();
+            }
+          } // we will still store these labels as the count for this will be different (to draw grid and labels placement)
+
+
+          if (isXNumeric) {
+            gl.labels = gl.xAxisScale.result.slice();
+          }
+        }
+
+        if (gl.minX === gl.maxX) {
+          // single dataPoint
+          if (cnf.xaxis.type === 'datetime') {
+            var newMinX = new Date(gl.minX);
+            newMinX.setDate(newMinX.getDate() - 2);
+            gl.minX = new Date(newMinX).getTime();
+            var newMaxX = new Date(gl.maxX);
+            newMaxX.setDate(newMaxX.getDate() + 2);
+            gl.maxX = new Date(newMaxX).getTime();
+          } else if (cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided) {
+            gl.minX = gl.minX - 2;
+            gl.maxX = gl.maxX + 2;
+          }
+        }
+
+        if (gl.isXNumeric) {
+          // get the least x diff if numeric x axis is present
+          gl.seriesX.forEach(function (sX, i) {
+            sX.forEach(function (s, j) {
+              if (j > 0) {
+                var xDiff = s - gl.seriesX[i][j - 1];
+                gl.minXDiff = Math.min(xDiff, gl.minXDiff);
+              }
+            });
+          });
+          this.calcMinXDiffForTinySeries();
+        }
+
+        return {
+          minX: gl.minX,
+          maxX: gl.maxX
+        };
+      }
+    }, {
+      key: "calcMinXDiffForTinySeries",
+      value: function calcMinXDiffForTinySeries() {
+        var w = this.w;
+        var len = w.globals.labels.length;
+
+        if (w.globals.labels.length === 1) {
+          w.globals.minXDiff = (w.globals.maxX - w.globals.minX) / len / 3;
+        } else {
+          if (w.globals.minXDiff === Number.MAX_VALUE) {
+            // possibly a single dataPoint (fixes react-apexcharts/issue#34)
+            if (w.globals.timelineLabels.length > 0) {
+              len = w.globals.timelineLabels.length;
+            }
+
+            if (len < 3) {
+              len = 3;
+            }
+
+            w.globals.minXDiff = (w.globals.maxX - w.globals.minX) / len;
+          }
+        }
+
+        return w.globals.minXDiff;
+      }
+    }, {
+      key: "setZRange",
+      value: function setZRange() {
+        var gl = this.w.globals; // minZ, maxZ starts here
+
+        if (gl.isDataXYZ) {
+          for (var i = 0; i < gl.series.length; i++) {
+            if (typeof gl.seriesZ[i] !== 'undefined') {
+              for (var j = 0; j < gl.seriesZ[i].length; j++) {
+                if (gl.seriesZ[i][j] !== null && Utils.isNumber(gl.seriesZ[i][j])) {
+                  gl.maxZ = Math.max(gl.maxZ, gl.seriesZ[i][j]);
+                  gl.minZ = Math.min(gl.minZ, gl.seriesZ[i][j]);
+                }
+              }
+            }
+          }
+        }
+      }
+    }]);
+
+    return Range$$1;
+  }();
+
+  /**
+   * ApexCharts Series Class for interation with the Series of the chart.
+   *
+   * @module Series
+   **/
+
+  var Series =
+  /*#__PURE__*/
+  function () {
+    function Series(ctx) {
+      _classCallCheck(this, Series);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    }
+
+    _createClass(Series, [{
+      key: "getAllSeriesEls",
+      value: function getAllSeriesEls() {
+        return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series");
+      }
+    }, {
+      key: "getSeriesByName",
+      value: function getSeriesByName(seriesName) {
+        return this.w.globals.dom.baseEl.querySelector("[seriesName='".concat(Utils.escapeString(seriesName), "']"));
+      }
+    }, {
+      key: "addCollapsedClassToSeries",
+      value: function addCollapsedClassToSeries(elSeries, index) {
+        var w = this.w;
+
+        function iterateOnAllCollapsedSeries(series) {
+          for (var cs = 0; cs < series.length; cs++) {
+            if (series[cs].index === index) {
+              elSeries.node.classList.add('apexcharts-series-collapsed');
+            }
+          }
+        }
+
+        iterateOnAllCollapsedSeries(w.globals.collapsedSeries);
+        iterateOnAllCollapsedSeries(w.globals.ancillaryCollapsedSeries);
+      }
+    }, {
+      key: "toggleSeriesOnHover",
+      value: function toggleSeriesOnHover(e, targetElement) {
+        var w = this.w;
+        var allSeriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series");
+
+        if (e.type === 'mousemove') {
+          var seriesCnt = parseInt(targetElement.getAttribute('rel')) - 1;
+          var seriesEl = null;
+
+          if (w.globals.axisCharts || w.config.chart.type === 'radialBar') {
+            if (w.globals.axisCharts) {
+              seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesCnt, "']"));
+            } else {
+              seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "']"));
+            }
+          } else {
+            seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "'] path"));
+          }
+
+          for (var se = 0; se < allSeriesEls.length; se++) {
+            allSeriesEls[se].classList.add('legend-mouseover-inactive');
+          }
+
+          if (seriesEl !== null) {
+            if (!w.globals.axisCharts) {
+              seriesEl.parentNode.classList.remove('legend-mouseover-inactive');
+            }
+
+            seriesEl.classList.remove('legend-mouseover-inactive');
+          }
+        } else if (e.type === 'mouseout') {
+          for (var _se = 0; _se < allSeriesEls.length; _se++) {
+            allSeriesEls[_se].classList.remove('legend-mouseover-inactive');
+          }
+        }
+      }
+    }, {
+      key: "highlightRangeInSeries",
+      value: function highlightRangeInSeries(e, targetElement) {
+        var w = this.w;
+        var allHeatMapElements = w.globals.dom.baseEl.querySelectorAll('.apexcharts-heatmap-rect');
+
+        var allActive = function allActive() {
+          for (var i = 0; i < allHeatMapElements.length; i++) {
+            allHeatMapElements[i].classList.remove('legend-mouseover-inactive');
+          }
+        };
+
+        var allInactive = function allInactive() {
+          for (var i = 0; i < allHeatMapElements.length; i++) {
+            allHeatMapElements[i].classList.add('legend-mouseover-inactive');
+          }
+        };
+
+        var selectedActive = function selectedActive(range) {
+          for (var i = 0; i < allHeatMapElements.length; i++) {
+            var val = parseInt(allHeatMapElements[i].getAttribute('val'));
+
+            if (val >= range.from && val <= range.to) {
+              allHeatMapElements[i].classList.remove('legend-mouseover-inactive');
+            }
+          }
+        };
+
+        if (e.type === 'mousemove') {
+          var seriesCnt = parseInt(targetElement.getAttribute('rel')) - 1;
+          allActive();
+          allInactive();
+          var range = w.config.plotOptions.heatmap.colorScale.ranges[seriesCnt];
+          selectedActive(range);
+        } else if (e.type === 'mouseout') {
+          allActive();
+        }
+      }
+    }, {
+      key: "getActiveSeriesIndex",
+      value: function getActiveSeriesIndex() {
+        var w = this.w;
+        var activeIndex = 0;
+
+        if (w.globals.series.length > 1) {
+          // active series flag is required to know if user has not deactivated via legend click
+          var firstActiveSeriesIndex = w.globals.series.map(function (series, index) {
+            if (series.length > 0 && w.config.series[index].type !== 'bar' && w.config.series[index].type !== 'column') {
+              return index;
+            } else {
+              return -1;
+            }
+          });
+
+          for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+            if (firstActiveSeriesIndex[a] !== -1) {
+              activeIndex = firstActiveSeriesIndex[a];
+              break;
+            }
+          }
+        }
+
+        return activeIndex;
+      }
+    }, {
+      key: "getActiveConfigSeriesIndex",
+      value: function getActiveConfigSeriesIndex() {
+        var w = this.w;
+        var activeIndex = 0;
+
+        if (w.config.series.length > 1) {
+          // active series flag is required to know if user has not deactivated via legend click
+          var firstActiveSeriesIndex = w.config.series.map(function (series, index) {
+            if (series.data && series.data.length > 0) {
+              return index;
+            } else {
+              return -1;
+            }
+          });
+
+          for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+            if (firstActiveSeriesIndex[a] !== -1) {
+              activeIndex = firstActiveSeriesIndex[a];
+              break;
+            }
+          }
+        }
+
+        return activeIndex;
+      }
+    }, {
+      key: "getPreviousPaths",
+      value: function getPreviousPaths() {
+        var w = this.w;
+        w.globals.previousPaths = [];
+
+        function pushPaths(seriesEls, i, type) {
+          var paths = seriesEls[i].childNodes;
+          var dArr = {
+            type: type,
+            paths: [],
+            realIndex: seriesEls[i].getAttribute('data:realIndex')
+          };
+
+          for (var j = 0; j < paths.length; j++) {
+            if (paths[j].hasAttribute('pathTo')) {
+              var d = paths[j].getAttribute('pathTo');
+              dArr.paths.push({
+                d: d
+              });
+            }
+          }
+
+          w.globals.previousPaths.push(dArr);
+        }
+
+        var linePaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-line-series .apexcharts-series');
+
+        if (linePaths.length > 0) {
+          for (var p = linePaths.length - 1; p >= 0; p--) {
+            pushPaths(linePaths, p, 'line');
+          }
+        }
+
+        var areapaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-area-series .apexcharts-series');
+
+        if (areapaths.length > 0) {
+          for (var i = areapaths.length - 1; i >= 0; i--) {
+            pushPaths(areapaths, i, 'area');
+          }
+        }
+
+        var barPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-series .apexcharts-series');
+
+        if (barPaths.length > 0) {
+          for (var _p = 0; _p < barPaths.length; _p++) {
+            pushPaths(barPaths, _p, 'bar');
+          }
+        }
+
+        var candlestickPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-candlestick-series .apexcharts-series');
+
+        if (candlestickPaths.length > 0) {
+          for (var _p2 = 0; _p2 < candlestickPaths.length; _p2++) {
+            pushPaths(candlestickPaths, _p2, 'candlestick');
+          }
+        }
+
+        var radarPaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-radar-series .apexcharts-series');
+
+        if (radarPaths.length > 0) {
+          for (var _p3 = 0; _p3 < radarPaths.length; _p3++) {
+            pushPaths(radarPaths, _p3, 'radar');
+          }
+        }
+
+        var bubblepaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bubble-series .apexcharts-series');
+
+        if (bubblepaths.length > 0) {
+          for (var s = 0; s < bubblepaths.length; s++) {
+            var seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-bubble-series .apexcharts-series[data\\:realIndex='".concat(s, "'] circle"));
+            var dArr = [];
+
+            for (var _i = 0; _i < seriesEls.length; _i++) {
+              dArr.push({
+                x: seriesEls[_i].getAttribute('cx'),
+                y: seriesEls[_i].getAttribute('cy'),
+                r: seriesEls[_i].getAttribute('r')
+              });
+            }
+
+            w.globals.previousPaths.push(dArr);
+          }
+        }
+
+        var scatterpaths = w.globals.dom.baseEl.querySelectorAll('.apexcharts-scatter-series .apexcharts-series');
+
+        if (scatterpaths.length > 0) {
+          for (var _s = 0; _s < scatterpaths.length; _s++) {
+            var _seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-scatter-series .apexcharts-series[data\\:realIndex='".concat(_s, "'] circle"));
+
+            var _dArr = [];
+
+            for (var _i2 = 0; _i2 < _seriesEls.length; _i2++) {
+              _dArr.push({
+                x: _seriesEls[_i2].getAttribute('cx'),
+                y: _seriesEls[_i2].getAttribute('cy'),
+                r: _seriesEls[_i2].getAttribute('r')
+              });
+            }
+
+            w.globals.previousPaths.push(_dArr);
+          }
+        }
+
+        var heatmapColors = w.globals.dom.baseEl.querySelectorAll('.apexcharts-heatmap .apexcharts-series');
+
+        if (heatmapColors.length > 0) {
+          for (var h = 0; h < heatmapColors.length; h++) {
+            var _seriesEls2 = w.globals.dom.baseEl.querySelectorAll(".apexcharts-heatmap .apexcharts-series[data\\:realIndex='".concat(h, "'] rect"));
+
+            var _dArr2 = [];
+
+            for (var _i3 = 0; _i3 < _seriesEls2.length; _i3++) {
+              _dArr2.push({
+                color: _seriesEls2[_i3].getAttribute('color')
+              });
+            }
+
+            w.globals.previousPaths.push(_dArr2);
+          }
+        }
+
+        if (!w.globals.axisCharts) {
+          // for non-axis charts (i.e., circular charts, pathFrom is not usable. We need whole series)
+          w.globals.previousPaths = w.globals.series;
+        }
+      }
+    }, {
+      key: "handleNoData",
+      value: function handleNoData() {
+        var w = this.w;
+        var me = this;
+        var noDataOpts = w.config.noData;
+        var graphics = new Graphics(me.ctx);
+        var x = w.globals.svgWidth / 2;
+        var y = w.globals.svgHeight / 2;
+        var textAnchor = 'middle';
+        w.globals.noData = true;
+        w.globals.animationEnded = true;
+
+        if (noDataOpts.align === 'left') {
+          x = 10;
+          textAnchor = 'start';
+        } else if (noDataOpts.align === 'right') {
+          x = w.globals.svgWidth - 10;
+          textAnchor = 'end';
+        }
+
+        if (noDataOpts.verticalAlign === 'top') {
+          y = 50;
+        } else if (noDataOpts.verticalAlign === 'bottom') {
+          y = w.globals.svgHeight - 50;
+        }
+
+        x = x + noDataOpts.offsetX;
+        y = y + parseInt(noDataOpts.style.fontSize) + 2;
+
+        if (noDataOpts.text !== undefined && noDataOpts.text !== '') {
+          var titleText = graphics.drawText({
+            x: x,
+            y: y,
+            text: noDataOpts.text,
+            textAnchor: textAnchor,
+            fontSize: noDataOpts.style.fontSize,
+            fontFamily: noDataOpts.style.fontFamily,
+            foreColor: noDataOpts.style.color,
+            opacity: 1,
+            class: 'apexcharts-text-nodata'
+          });
+          titleText.node.setAttribute('class', 'apexcharts-title-text');
+          w.globals.dom.Paper.add(titleText);
+        }
+      } // When user clicks on legends, the collapsed series is filled with [0,0,0,...,0]
+      // This is because we don't want to alter the series' length as it is used at many places
+
+    }, {
+      key: "setNullSeriesToZeroValues",
+      value: function setNullSeriesToZeroValues(series) {
+        var w = this.w;
+
+        for (var sl = 0; sl < series.length; sl++) {
+          if (series[sl].length === 0) {
+            for (var j = 0; j < series[w.globals.maxValsInArrayIndex].length; j++) {
+              series[sl].push(0);
+            }
+          }
+        }
+
+        return series;
+      }
+    }, {
+      key: "hasAllSeriesEqualX",
+      value: function hasAllSeriesEqualX() {
+        var equalLen = true;
+        var w = this.w;
+        var filteredSerX = this.filteredSeriesX();
+
+        for (var i = 0; i < filteredSerX.length - 1; i++) {
+          if (filteredSerX[i][0] !== filteredSerX[i + 1][0]) {
+            equalLen = false;
+            break;
+          }
+        }
+
+        w.globals.allSeriesHasEqualX = equalLen;
+        return equalLen;
+      }
+    }, {
+      key: "filteredSeriesX",
+      value: function filteredSeriesX() {
+        var w = this.w;
+        var filteredSeriesX = w.globals.seriesX.map(function (ser, index) {
+          if (ser.length > 0) {
+            return ser;
+          } else {
+            return [];
+          }
+        });
+        return filteredSeriesX;
+      }
+    }]);
+
+    return Series;
+  }();
+
+  /**
+   * ApexCharts Dimensions Class for calculating rects of all elements that are drawn and will be drawn.
+   *
+   * @module Dimensions
+   **/
+
+  var Dimensions =
+  /*#__PURE__*/
+  function () {
+    function Dimensions(ctx) {
+      _classCallCheck(this, Dimensions);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.lgRect = {};
+      this.yAxisWidth = 0;
+      this.xAxisHeight = 0;
+      this.isSparkline = this.w.config.chart.sparkline.enabled;
+      this.xPadRight = 0;
+      this.xPadLeft = 0;
+    }
+    /**
+     * @memberof Dimensions
+     * @param {object} w - chart context
+     **/
+
+
+    _createClass(Dimensions, [{
+      key: "plotCoords",
+      value: function plotCoords() {
+        var w = this.w;
+        var gl = w.globals;
+        var lgRect = this.getLegendsRect();
+
+        if (gl.axisCharts) {
+          // for line / area / scatter / column
+          this.setGridCoordsForAxisCharts(lgRect);
+        } else {
+          // for pie / donuts / circle
+          this.setGridCoordsForNonAxisCharts(lgRect);
+        }
+
+        this.titleSubtitleOffset(); // after calculating everything, apply padding set by user
+
+        gl.gridHeight = gl.gridHeight - w.config.grid.padding.top - w.config.grid.padding.bottom;
+        gl.gridWidth = gl.gridWidth - w.config.grid.padding.left - w.config.grid.padding.right - this.xPadRight - this.xPadLeft;
+        gl.translateX = gl.translateX + w.config.grid.padding.left + this.xPadLeft;
+        gl.translateY = gl.translateY + w.config.grid.padding.top;
+      }
+    }, {
+      key: "conditionalChecksForAxisCoords",
+      value: function conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords) {
+        var w = this.w;
+        this.xAxisHeight = (xaxisLabelCoords.height + xtitleCoords.height) * w.globals.LINE_HEIGHT_RATIO + 15;
+        this.xAxisWidth = xaxisLabelCoords.width;
+
+        if (this.xAxisHeight - xtitleCoords.height > w.config.xaxis.labels.maxHeight) {
+          this.xAxisHeight = w.config.xaxis.labels.maxHeight;
+        }
+
+        if (w.config.xaxis.labels.minHeight && this.xAxisHeight < w.config.xaxis.labels.minHeight) {
+          this.xAxisHeight = w.config.xaxis.labels.minHeight;
+        }
+
+        if (w.config.xaxis.floating) {
+          this.xAxisHeight = 0;
+        }
+
+        if (!w.globals.isBarHorizontal) {
+          this.yAxisWidth = this.getTotalYAxisWidth();
+        } else {
+          this.yAxisWidth = w.globals.yLabelsCoords[0].width + w.globals.yTitleCoords[0].width + 15;
+        }
+
+        var minYAxisWidth = 0;
+        var maxYAxisWidth = 0;
+        w.config.yaxis.forEach(function (y) {
+          minYAxisWidth += y.labels.minWidth;
+          maxYAxisWidth += y.labels.maxWidth;
+        });
+
+        if (this.yAxisWidth < minYAxisWidth) {
+          this.yAxisWidth = minYAxisWidth;
+        }
+
+        if (this.yAxisWidth > maxYAxisWidth) {
+          this.yAxisWidth = maxYAxisWidth;
+        }
+      }
+    }, {
+      key: "setGridCoordsForAxisCharts",
+      value: function setGridCoordsForAxisCharts(lgRect) {
+        var w = this.w;
+        var gl = w.globals;
+        var yaxisLabelCoords = this.getyAxisLabelsCoords();
+        var xaxisLabelCoords = this.getxAxisLabelsCoords();
+        var yTitleCoords = this.getyAxisTitleCoords();
+        var xtitleCoords = this.getxAxisTitleCoords();
+        w.globals.yLabelsCoords = [];
+        w.globals.yTitleCoords = [];
+        w.config.yaxis.map(function (yaxe, index) {
+          // store the labels and titles coords in global vars
+          w.globals.yLabelsCoords.push({
+            width: yaxisLabelCoords[index].width,
+            index: index
+          });
+          w.globals.yTitleCoords.push({
+            width: yTitleCoords[index].width,
+            index: index
+          });
+        });
+        this.conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords);
+        gl.translateXAxisY = w.globals.rotateXLabels ? this.xAxisHeight / 8 : -4;
+        gl.translateXAxisX = w.globals.rotateXLabels && w.globals.isXNumeric && w.config.xaxis.labels.rotate <= -45 ? -this.xAxisWidth / 4 : 0;
+
+        if (w.globals.isBarHorizontal) {
+          gl.rotateXLabels = false;
+          gl.translateXAxisY = -1 * (parseInt(w.config.xaxis.labels.style.fontSize) / 1.5);
+        }
+
+        gl.translateXAxisY = gl.translateXAxisY + w.config.xaxis.labels.offsetY;
+        gl.translateXAxisX = gl.translateXAxisX + w.config.xaxis.labels.offsetX;
+        var yAxisWidth = this.yAxisWidth;
+        var xAxisHeight = this.xAxisHeight;
+        gl.xAxisLabelsHeight = this.xAxisHeight;
+        gl.xAxisHeight = this.xAxisHeight;
+        var translateY = 10;
+
+        if (!w.config.grid.show || w.config.chart.type === 'radar') {
+          yAxisWidth = 0;
+          xAxisHeight = 35;
+        }
+
+        if (this.isSparkline) {
+          lgRect = {
+            height: 0,
+            width: 0
+          };
+          xAxisHeight = 0;
+          yAxisWidth = 0;
+          translateY = 0;
+        }
+
+        this.additionalPaddingXLabels(xaxisLabelCoords);
+
+        switch (w.config.legend.position) {
+          case 'bottom':
+            gl.translateY = translateY;
+            gl.translateX = yAxisWidth;
+            gl.gridHeight = gl.svgHeight - lgRect.height - xAxisHeight - (!this.isSparkline ? w.globals.rotateXLabels ? 10 : 15 : 0);
+            gl.gridWidth = gl.svgWidth - yAxisWidth;
+            break;
+
+          case 'top':
+            gl.translateY = lgRect.height + translateY;
+            gl.translateX = yAxisWidth;
+            gl.gridHeight = gl.svgHeight - lgRect.height - xAxisHeight - (!this.isSparkline ? w.globals.rotateXLabels ? 10 : 15 : 0);
+            gl.gridWidth = gl.svgWidth - yAxisWidth;
+            break;
+
+          case 'left':
+            gl.translateY = translateY;
+            gl.translateX = lgRect.width + yAxisWidth;
+            gl.gridHeight = gl.svgHeight - xAxisHeight - 12;
+            gl.gridWidth = gl.svgWidth - lgRect.width - yAxisWidth;
+            break;
+
+          case 'right':
+            gl.translateY = translateY;
+            gl.translateX = yAxisWidth;
+            gl.gridHeight = gl.svgHeight - xAxisHeight - 12;
+            gl.gridWidth = gl.svgWidth - lgRect.width - yAxisWidth - 5;
+            break;
+
+          default:
+            throw new Error('Legend position not supported');
+        }
+
+        this.setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords); // after drawing everything, set the Y axis positions
+
+        var objyAxis = new YAxis(this.ctx);
+        objyAxis.setYAxisXPosition(yaxisLabelCoords, yTitleCoords);
+      }
+    }, {
+      key: "setGridCoordsForNonAxisCharts",
+      value: function setGridCoordsForNonAxisCharts(lgRect) {
+        var w = this.w;
+        var gl = w.globals;
+        var xPad = 0;
+
+        if (w.config.legend.show && !w.config.legend.floating) {
+          xPad = 20;
+        }
+
+        var offY = 10;
+        var offX = 0;
+
+        if (w.config.chart.type === 'pie' || w.config.chart.type === 'donut') {
+          offY = offY + w.config.plotOptions.pie.offsetY;
+          offX = offX + w.config.plotOptions.pie.offsetX;
+        } else if (w.config.chart.type === 'radialBar') {
+          offY = offY + w.config.plotOptions.radialBar.offsetY;
+          offX = offX + w.config.plotOptions.radialBar.offsetX;
+        }
+
+        if (!w.config.legend.show) {
+          gl.gridHeight = gl.svgHeight - 35;
+          gl.gridWidth = gl.gridHeight;
+          gl.translateY = offY - 10;
+          gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+          return;
+        }
+
+        switch (w.config.legend.position) {
+          case 'bottom':
+            gl.gridHeight = gl.svgHeight - lgRect.height - 35;
+            gl.gridWidth = gl.gridHeight;
+            gl.translateY = offY - 20;
+            gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+            break;
+
+          case 'top':
+            gl.gridHeight = gl.svgHeight - lgRect.height - 35;
+            gl.gridWidth = gl.gridHeight;
+            gl.translateY = lgRect.height + offY;
+            gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;
+            break;
+
+          case 'left':
+            gl.gridWidth = gl.svgWidth - lgRect.width - xPad;
+            gl.gridHeight = gl.gridWidth;
+            gl.translateY = offY;
+            gl.translateX = offX + lgRect.width + xPad;
+            break;
+
+          case 'right':
+            gl.gridWidth = gl.svgWidth - lgRect.width - xPad - 5;
+            gl.gridHeight = gl.gridWidth;
+            gl.translateY = offY;
+            gl.translateX = offX + 10;
+            break;
+
+          default:
+            throw new Error('Legend position not supported');
+        }
+      }
+    }, {
+      key: "setGridXPosForDualYAxis",
+      value: function setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords) {
+        var w = this.w;
+        w.config.yaxis.map(function (yaxe, index) {
+          if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1 && !w.config.yaxis[index].floating && w.config.yaxis[index].show) {
+            if (yaxe.opposite) {
+              w.globals.translateX = w.globals.translateX - (yaxisLabelCoords[index].width + yTitleCoords[index].width) - parseInt(w.config.yaxis[index].labels.style.fontSize) / 1.2 - 12;
+            }
+          }
+        });
+      } // Sometimes, the last labels gets cropped in category/numeric xaxis.
+      // Hence, we add some additional padding based on the label length to avoid the last label being cropped.
+      // NOTE: datetime x-axis won't have any effect with this as we don't know the label length there due to many constraints.
+
+    }, {
+      key: "additionalPaddingXLabels",
+      value: function additionalPaddingXLabels(xaxisLabelCoords) {
+        var _this = this;
+
+        var w = this.w;
+
+        if (w.config.xaxis.type === 'category' && w.globals.isBarHorizontal || w.config.xaxis.type === 'numeric' || w.config.xaxis.type === 'datetime') {
+          var rightPad = function rightPad(labels) {
+            if (_this.timescaleLabels) {
+              // for timeline labels, we take the last label and check if it exceeds gridWidth
+              var lastTimescaleLabel = _this.timescaleLabels[_this.timescaleLabels.length - 1];
+              var labelPosition = lastTimescaleLabel.position + labels.width;
+
+              if (labelPosition > w.globals.gridWidth) {
+                w.globals.skipLastTimelinelabel = true;
+              } else {
+                // we have to make it false again in case of zooming/panning
+                w.globals.skipLastTimelinelabel = false;
+              }
+            } else if (w.config.xaxis.type !== 'datetime') {
+              if (w.config.grid.padding.right < labels.width) {
+                _this.xPadRight = labels.width / 2 + 1;
+              }
+            }
+          };
+
+          var leftPad = function leftPad(labels) {
+            if (w.config.grid.padding.left < labels.width) {
+              _this.xPadLeft = labels.width / 2 + 1;
+            }
+          };
+
+          var isXNumeric = w.globals.isXNumeric;
+          w.config.yaxis.forEach(function (yaxe, i) {
+            var shouldPad = !yaxe.show || yaxe.floating || w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || isXNumeric || yaxe.opposite && w.globals.isBarHorizontal;
+
+            if (shouldPad) {
+              if (isXNumeric && w.globals.isMultipleYAxis && w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || w.globals.isBarHorizontal && yaxe.opposite) {
+                leftPad(xaxisLabelCoords);
+              }
+
+              if (!w.globals.isBarHorizontal && yaxe.opposite && w.globals.collapsedSeriesIndices.indexOf(i) !== -1 || isXNumeric && !w.globals.isMultipleYAxis) {
+                rightPad(xaxisLabelCoords);
+              }
+            }
+          });
+        }
+      }
+    }, {
+      key: "titleSubtitleOffset",
+      value: function titleSubtitleOffset() {
+        var w = this.w;
+        var gl = w.globals;
+        var gridShrinkOffset = this.isSparkline || !w.globals.axisCharts ? 0 : 10;
+
+        if (w.config.title.text !== undefined) {
+          gridShrinkOffset += w.config.title.margin;
+        } else {
+          gridShrinkOffset += this.isSparkline || !w.globals.axisCharts ? 0 : 5;
+        }
+
+        if (w.config.subtitle.text !== undefined) {
+          gridShrinkOffset += w.config.subtitle.margin;
+        } else {
+          gridShrinkOffset += this.isSparkline || !w.globals.axisCharts ? 0 : 5;
+        }
+
+        if (w.config.legend.show && w.config.legend.position === 'bottom' && !w.config.legend.floating && w.config.series.length > 1) {
+          gridShrinkOffset += 10;
+        }
+
+        var titleCoords = this.getTitleSubtitleCoords('title');
+        var subtitleCoords = this.getTitleSubtitleCoords('subtitle');
+        gl.gridHeight = gl.gridHeight - titleCoords.height - subtitleCoords.height - gridShrinkOffset;
+        gl.translateY = gl.translateY + titleCoords.height + subtitleCoords.height + gridShrinkOffset;
+      }
+    }, {
+      key: "getTotalYAxisWidth",
+      value: function getTotalYAxisWidth() {
+        var w = this.w;
+        var yAxisWidth = 0;
+        var padding = 10;
+
+        var isHiddenYAxis = function isHiddenYAxis(index) {
+          return w.globals.ignoreYAxisIndexes.indexOf(index) > -1;
+        };
+
+        w.globals.yLabelsCoords.map(function (yLabelCoord, index) {
+          var floating = w.config.yaxis[index].floating;
+
+          if (yLabelCoord.width > 0 && !floating) {
+            yAxisWidth = yAxisWidth + yLabelCoord.width + padding;
+
+            if (isHiddenYAxis(index)) {
+              yAxisWidth = yAxisWidth - yLabelCoord.width - padding;
+            }
+          } else {
+            yAxisWidth = yAxisWidth + (floating || !w.config.yaxis[index].show ? 0 : 5);
+          }
+        });
+        w.globals.yTitleCoords.map(function (yTitleCoord, index) {
+          var floating = w.config.yaxis[index].floating;
+          padding = parseInt(w.config.yaxis[index].title.style.fontSize);
+
+          if (yTitleCoord.width > 0 && !floating) {
+            yAxisWidth = yAxisWidth + yTitleCoord.width + padding;
+
+            if (isHiddenYAxis(index)) {
+              yAxisWidth = yAxisWidth - yTitleCoord.width - padding;
+            }
+          } else {
+            yAxisWidth = yAxisWidth + (floating || !w.config.yaxis[index].show ? 0 : 5);
+          }
+        });
+        return yAxisWidth;
+      }
+    }, {
+      key: "getxAxisTimeScaleLabelsCoords",
+      value: function getxAxisTimeScaleLabelsCoords() {
+        var w = this.w;
+        var rect;
+        this.timescaleLabels = w.globals.timelineLabels.slice();
+
+        if (w.globals.isBarHorizontal && w.config.xaxis.type === 'datetime') {
+          this.timescaleLabels = w.globals.invertedTimelineLabels.slice();
+        }
+
+        var labels = this.timescaleLabels.map(function (label) {
+          return label.value;
+        }); //  get the longest string from the labels array and also apply label formatter to it
+
+        var val = labels.reduce(function (a, b) {
+          // if undefined, maybe user didn't pass the datetime(x) values
+          if (typeof a === 'undefined') {
+            console.error('You have possibly supplied invalid Date format. Please supply a valid JavaScript Date');
+            return 0;
+          } else {
+            return a.length > b.length ? a : b;
+          }
+        }, 0);
+        var graphics = new Graphics(this.ctx);
+        rect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize);
+        var totalWidthRotated = rect.width * 1.05 * labels.length;
+
+        if (totalWidthRotated > w.globals.gridWidth && w.config.xaxis.labels.rotate !== 0) {
+          w.globals.overlappingXLabels = true;
+        }
+
+        return rect;
+      }
+      /**
+       * Get X Axis Dimensions
+       * @memberof Dimensions
+       * @return {{width, height}}
+       **/
+
+    }, {
+      key: "getxAxisLabelsCoords",
+      value: function getxAxisLabelsCoords() {
+        var w = this.w;
+        var xaxisLabels = w.globals.labels.slice();
+        var rect;
+
+        if (w.globals.timelineLabels.length > 0) {
+          var coords = this.getxAxisTimeScaleLabelsCoords();
+          rect = {
+            width: coords.width,
+            height: coords.height
+          };
+        } else {
+          var lgWidthForSideLegends = w.config.legend.position === 'left' && w.config.legend.position === 'right' && !w.config.legend.floating ? this.lgRect.width : 0; // get the longest string from the labels array and also apply label formatter
+
+          var xlbFormatter = w.globals.xLabelFormatter; // prevent changing xaxisLabels to avoid issues in multi-yaxies - fix #522
+
+          var val = xaxisLabels.reduce(function (a, b) {
+            return a.length > b.length ? a : b;
+          }, 0); // the labels gets changed for bar charts
+
+          if (w.globals.isBarHorizontal) {
+            val = w.globals.yAxisScale[0].result.reduce(function (a, b) {
+              return a.length > b.length ? a : b;
+            }, 0);
+          }
+
+          var xFormat = new Formatters(this.ctx);
+          val = xFormat.xLabelFormat(xlbFormatter, val);
+          var graphics = new Graphics(this.ctx);
+          var xLabelrect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize);
+          rect = {
+            width: xLabelrect.width,
+            height: xLabelrect.height
+          };
+
+          if (rect.width * xaxisLabels.length > w.globals.svgWidth - lgWidthForSideLegends - this.yAxisWidth && w.config.xaxis.labels.rotate !== 0) {
+            if (!w.globals.isBarHorizontal) {
+              w.globals.rotateXLabels = true;
+              xLabelrect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize, w.config.xaxis.labels.style.fontFamily, "rotate(".concat(w.config.xaxis.labels.rotate, " 0 0)"), false);
+              rect.height = xLabelrect.height / 1.66;
+            }
+          } else {
+            w.globals.rotateXLabels = false;
+          }
+        }
+
+        if (!w.config.xaxis.labels.show) {
+          rect = {
+            width: 0,
+            height: 0
+          };
+        }
+
+        return {
+          width: rect.width,
+          height: rect.height
+        };
+      }
+      /**
+       * Get Y Axis Dimensions
+       * @memberof Dimensions
+       * @return {{width, height}}
+       **/
+
+    }, {
+      key: "getyAxisLabelsCoords",
+      value: function getyAxisLabelsCoords() {
+        var _this2 = this;
+
+        var w = this.w;
+        var width = 0;
+        var height = 0;
+        var ret = [];
+        var labelPad = 10;
+        w.config.yaxis.map(function (yaxe, index) {
+          if (yaxe.show && yaxe.labels.show && w.globals.yAxisScale[index].result.length) {
+            var lbFormatter = w.globals.yLabelFormatters[index]; // the second parameter -1 is the index of tick which user can use in the formatter
+
+            var val = lbFormatter(w.globals.yAxisScale[index].niceMax, -1); // if user has specified a custom formatter, and the result is null or empty, we need to discard the formatter and take the value as it is.
+
+            if (typeof val === 'undefined' || val.length === 0) {
+              val = w.globals.yAxisScale[index].niceMax;
+            }
+
+            if (w.globals.isBarHorizontal) {
+              labelPad = 0;
+              var barYaxisLabels = w.globals.labels.slice(); //  get the longest string from the labels array and also apply label formatter to it
+
+              val = barYaxisLabels.reduce(function (a, b) {
+                return a.length > b.length ? a : b;
+              }, 0);
+              val = lbFormatter(val, -1);
+            }
+
+            var graphics = new Graphics(_this2.ctx);
+            var rect = graphics.getTextRects(val, yaxe.labels.style.fontSize);
+            ret.push({
+              width: rect.width + labelPad,
+              height: rect.height
+            });
+          } else {
+            ret.push({
+              width: width,
+              height: height
+            });
+          }
+        });
+        return ret;
+      }
+      /**
+       * Get X Axis Title Dimensions
+       * @memberof Dimensions
+       * @return {{width, height}}
+       **/
+
+    }, {
+      key: "getxAxisTitleCoords",
+      value: function getxAxisTitleCoords() {
+        var w = this.w;
+        var width = 0;
+        var height = 0;
+
+        if (w.config.xaxis.title.text !== undefined) {
+          var graphics = new Graphics(this.ctx);
+          var rect = graphics.getTextRects(w.config.xaxis.title.text, w.config.xaxis.title.style.fontSize);
+          width = rect.width;
+          height = rect.height;
+        }
+
+        return {
+          width: width,
+          height: height
+        };
+      }
+      /**
+       * Get Y Axis Dimensions
+       * @memberof Dimensions
+       * @return {{width, height}}
+       **/
+
+    }, {
+      key: "getyAxisTitleCoords",
+      value: function getyAxisTitleCoords() {
+        var _this3 = this;
+
+        var w = this.w;
+        var ret = [];
+        w.config.yaxis.map(function (yaxe, index) {
+          if (yaxe.show && yaxe.title.text !== undefined) {
+            var graphics = new Graphics(_this3.ctx);
+            var rect = graphics.getTextRects(yaxe.title.text, yaxe.title.style.fontSize, yaxe.title.style.fontFamily, 'rotate(-90 0 0)', false);
+            ret.push({
+              width: rect.width,
+              height: rect.height
+            });
+          } else {
+            ret.push({
+              width: 0,
+              height: 0
+            });
+          }
+        });
+        return ret;
+      }
+      /**
+       * Get Chart Title/Subtitle Dimensions
+       * @memberof Dimensions
+       * @return {{width, height}}
+       **/
+
+    }, {
+      key: "getTitleSubtitleCoords",
+      value: function getTitleSubtitleCoords(type) {
+        var w = this.w;
+        var width = 0;
+        var height = 0;
+        var floating = type === 'title' ? w.config.title.floating : w.config.subtitle.floating;
+        var el = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-text"));
+
+        if (el !== null && !floating) {
+          var coord = el.getBoundingClientRect();
+          width = coord.width;
+          height = w.globals.axisCharts ? coord.height + 5 : coord.height;
+        }
+
+        return {
+          width: width,
+          height: height
+        };
+      }
+    }, {
+      key: "getLegendsRect",
+      value: function getLegendsRect() {
+        var w = this.w;
+        var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+        var lgRect = Object.assign({}, Utils.getBoundingClientRect(elLegendWrap));
+
+        if (elLegendWrap !== null && !w.config.legend.floating && w.config.legend.show) {
+          this.lgRect = {
+            x: lgRect.x,
+            y: lgRect.y,
+            height: lgRect.height,
+            width: lgRect.height === 0 ? 0 : lgRect.width
+          };
+        } else {
+          this.lgRect = {
+            x: 0,
+            y: 0,
+            height: 0,
+            width: 0
+          };
+        }
+
+        return this.lgRect;
+      }
+    }]);
+
+    return Dimensions;
+  }();
+
+  /**
+   * ApexCharts TimeScale Class for generating time ticks for x-axis.
+   *
+   * @module TimeScale
+   **/
+
+  var TimeScale =
+  /*#__PURE__*/
+  function () {
+    function TimeScale(ctx) {
+      _classCallCheck(this, TimeScale);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.timeScaleArray = [];
+    }
+
+    _createClass(TimeScale, [{
+      key: "calculateTimeScaleTicks",
+      value: function calculateTimeScaleTicks(minX, maxX) {
+        var _this = this;
+
+        var w = this.w; // null check when no series to show
+
+        if (w.globals.allSeriesCollapsed) {
+          w.globals.labels = [];
+          w.globals.timelineLabels = [];
+          return [];
+        }
+
+        var dt = new DateTime(this.ctx);
+        var daysDiff = (maxX - minX) / (1000 * 60 * 60 * 24);
+        this.determineInterval(daysDiff);
+        w.globals.disableZoomIn = false;
+        w.globals.disableZoomOut = false;
+
+        if (daysDiff < 0.005) {
+          w.globals.disableZoomIn = true;
+        } else if (daysDiff > 50000) {
+          w.globals.disableZoomOut = true;
+        }
+
+        var timeIntervals = dt.getTimeUnitsfromTimestamp(minX, maxX);
+        var daysWidthOnXAxis = w.globals.gridWidth / daysDiff;
+        var hoursWidthOnXAxis = daysWidthOnXAxis / 24;
+        var minutesWidthOnXAxis = hoursWidthOnXAxis / 60;
+        var numberOfHours = Math.floor(daysDiff * 24);
+        var numberOfMinutes = Math.floor(daysDiff * 24 * 60);
+        var numberOfDays = Math.floor(daysDiff);
+        var numberOfMonths = Math.floor(daysDiff / 30);
+        var numberOfYears = Math.floor(daysDiff / 365);
+        var firstVal = {
+          minMinute: timeIntervals.minMinute,
+          minHour: timeIntervals.minHour,
+          minDate: timeIntervals.minDate,
+          minMonth: timeIntervals.minMonth,
+          minYear: timeIntervals.minYear
+        };
+        var currentMinute = firstVal.minMinute;
+        var currentHour = firstVal.minHour;
+        var currentMonthDate = firstVal.minDate;
+        var currentDate = firstVal.minDate;
+        var currentMonth = firstVal.minMonth;
+        var currentYear = firstVal.minYear;
+        var params = {
+          firstVal: firstVal,
+          currentMinute: currentMinute,
+          currentHour: currentHour,
+          currentMonthDate: currentMonthDate,
+          currentDate: currentDate,
+          currentMonth: currentMonth,
+          currentYear: currentYear,
+          daysWidthOnXAxis: daysWidthOnXAxis,
+          hoursWidthOnXAxis: hoursWidthOnXAxis,
+          minutesWidthOnXAxis: minutesWidthOnXAxis,
+          numberOfMinutes: numberOfMinutes,
+          numberOfHours: numberOfHours,
+          numberOfDays: numberOfDays,
+          numberOfMonths: numberOfMonths,
+          numberOfYears: numberOfYears
+        };
+
+        switch (this.tickInterval) {
+          case 'years':
+            {
+              this.generateYearScale(params);
+              break;
+            }
+
+          case 'months':
+          case 'half_year':
+            {
+              this.generateMonthScale(params);
+              break;
+            }
+
+          case 'months_days':
+          case 'months_fortnight':
+          case 'days':
+          case 'week_days':
+            {
+              this.generateDayScale(params);
+              break;
+            }
+
+          case 'hours':
+            {
+              this.generateHourScale(params);
+              break;
+            }
+
+          case 'minutes':
+            this.generateMinuteScale(params);
+            break;
+        } // first, we will adjust the month values index
+        // as in the upper function, it is starting from 0
+        // we will start them from 1
+
+
+        var adjustedMonthInTimeScaleArray = this.timeScaleArray.map(function (ts) {
+          var defaultReturn = {
+            position: ts.position,
+            unit: ts.unit,
+            year: ts.year,
+            day: ts.day ? ts.day : 1,
+            hour: ts.hour ? ts.hour : 0,
+            month: ts.month + 1
+          };
+
+          if (ts.unit === 'month') {
+            return _objectSpread({}, defaultReturn, {
+              value: ts.value + 1
+            });
+          } else if (ts.unit === 'day' || ts.unit === 'hour') {
+            return _objectSpread({}, defaultReturn, {
+              value: ts.value
+            });
+          } else if (ts.unit === 'minute') {
+            return _objectSpread({}, defaultReturn, {
+              value: ts.value,
+              minute: ts.value
+            });
+          }
+
+          return ts;
+        });
+        var filteredTimeScale = adjustedMonthInTimeScaleArray.filter(function (ts) {
+          var modulo = 1;
+          var ticks = Math.ceil(w.globals.gridWidth / 120);
+          var value = ts.value;
+
+          if (w.config.xaxis.tickAmount !== undefined) {
+            ticks = w.config.xaxis.tickAmount;
+          }
+
+          if (adjustedMonthInTimeScaleArray.length > ticks) {
+            modulo = Math.floor(adjustedMonthInTimeScaleArray.length / ticks);
+          }
+
+          var shouldNotSkipUnit = false; // there is a big change in unit i.e days to months
+
+          var shouldNotPrint = false; // should skip these values
+
+          switch (_this.tickInterval) {
+            case 'half_year':
+              modulo = 7;
+
+              if (ts.unit === 'year') {
+                shouldNotSkipUnit = true;
+              }
+
+              break;
+
+            case 'months':
+              modulo = 1;
+
+              if (ts.unit === 'year') {
+                shouldNotSkipUnit = true;
+              }
+
+              break;
+
+            case 'months_fortnight':
+              modulo = 15;
+
+              if (ts.unit === 'year' || ts.unit === 'month') {
+                shouldNotSkipUnit = true;
+              }
+
+              if (value === 30) {
+                shouldNotPrint = true;
+              }
+
+              break;
+
+            case 'months_days':
+              modulo = 10;
+
+              if (ts.unit === 'month') {
+                shouldNotSkipUnit = true;
+              }
+
+              if (value === 30) {
+                shouldNotPrint = true;
+              }
+
+              break;
+
+            case 'week_days':
+              modulo = 8;
+
+              if (ts.unit === 'month') {
+                shouldNotSkipUnit = true;
+              }
+
+              break;
+
+            case 'days':
+              modulo = 1;
+
+              if (ts.unit === 'month') {
+                shouldNotSkipUnit = true;
+              }
+
+              break;
+
+            case 'hours':
+              if (ts.unit === 'day') {
+                shouldNotSkipUnit = true;
+              }
+
+              break;
+
+            case 'minutes':
+              if (value % 5 !== 0) {
+                shouldNotPrint = true;
+              }
+
+              break;
+          }
+
+          if (_this.tickInterval === 'minutes' || _this.tickInterval === 'hours') {
+            if (!shouldNotPrint) {
+              return true;
+            }
+          } else {
+            if ((value % modulo === 0 || shouldNotSkipUnit) && !shouldNotPrint) {
+              return true;
+            }
+          }
+        });
+        return filteredTimeScale;
+      }
+    }, {
+      key: "recalcDimensionsBasedOnFormat",
+      value: function recalcDimensionsBasedOnFormat(filteredTimeScale, inverted) {
+        var w = this.w;
+        var reformattedTimescaleArray = this.formatDates(filteredTimeScale);
+        var removedOverlappingTS = this.removeOverlappingTS(reformattedTimescaleArray);
+
+        if (!inverted) {
+          w.globals.timelineLabels = removedOverlappingTS.slice();
+        } else {
+          w.globals.invertedTimelineLabels = removedOverlappingTS.slice();
+        } // at this stage, we need to re-calculate coords of the grid as timeline labels may have altered the xaxis labels coords
+        // The reason we can't do this prior to this stage is because timeline labels depends on gridWidth, and as the ticks are calculated based on available gridWidth, there can be unknown number of ticks generated for different minX and maxX
+        // Dependency on Dimensions(), need to refactor correctly
+        // TODO - find an alternate way to avoid calling this Heavy method twice
+
+
+        var dimensions = new Dimensions(this.ctx);
+        dimensions.plotCoords();
+      }
+    }, {
+      key: "determineInterval",
+      value: function determineInterval(daysDiff) {
+        switch (true) {
+          case daysDiff > 1825:
+            // difference is more than 5 years
+            this.tickInterval = 'years';
+            break;
+
+          case daysDiff > 800 && daysDiff <= 1825:
+            this.tickInterval = 'half_year';
+            break;
+
+          case daysDiff > 180 && daysDiff <= 800:
+            this.tickInterval = 'months';
+            break;
+
+          case daysDiff > 90 && daysDiff <= 180:
+            this.tickInterval = 'months_fortnight';
+            break;
+
+          case daysDiff > 60 && daysDiff <= 90:
+            this.tickInterval = 'months_days';
+            break;
+
+          case daysDiff > 30 && daysDiff <= 60:
+            this.tickInterval = 'week_days';
+            break;
+
+          case daysDiff > 2 && daysDiff <= 30:
+            this.tickInterval = 'days';
+            break;
+
+          case daysDiff > 0.1 && daysDiff <= 2:
+            // less than  2 days
+            this.tickInterval = 'hours';
+            break;
+
+          case daysDiff < 0.1:
+            this.tickInterval = 'minutes';
+            break;
+
+          default:
+            this.tickInterval = 'days';
+            break;
+        }
+      }
+    }, {
+      key: "generateYearScale",
+      value: function generateYearScale(params) {
+        var firstVal = params.firstVal,
+            currentMonth = params.currentMonth,
+            currentYear = params.currentYear,
+            daysWidthOnXAxis = params.daysWidthOnXAxis,
+            numberOfYears = params.numberOfYears;
+        var firstTickValue = firstVal.minYear;
+        var firstTickPosition = 0;
+        var dt = new DateTime(this.ctx);
+        var unit = 'year';
+
+        if (firstVal.minDate > 1 && firstVal.minMonth > 0) {
+          var remainingDays = dt.determineRemainingDaysOfYear(firstVal.minYear, firstVal.minMonth, firstVal.minDate); // remainingDaysofFirstMonth is used to reacht the 2nd tick position
+
+          var remainingDaysOfFirstYear = dt.determineDaysOfYear(firstVal.minYear) - remainingDays + 1; // calculate the first tick position
+
+          firstTickPosition = remainingDaysOfFirstYear * daysWidthOnXAxis;
+          firstTickValue = firstVal.minYear + 1; // push the first tick in the array
+
+          this.timeScaleArray.push({
+            position: firstTickPosition,
+            value: firstTickValue,
+            unit: unit,
+            year: firstTickValue,
+            month: Utils.monthMod(currentMonth + 1)
+          });
+        } else if (firstVal.minDate === 1 && firstVal.minMonth === 0) {
+          // push the first tick in the array
+          this.timeScaleArray.push({
+            position: firstTickPosition,
+            value: firstTickValue,
+            unit: unit,
+            year: currentYear,
+            month: Utils.monthMod(currentMonth + 1)
+          });
+        }
+
+        var year = firstTickValue;
+        var pos = firstTickPosition; // keep drawing rest of the ticks
+
+        for (var i = 0; i < numberOfYears; i++) {
+          year++;
+          pos = dt.determineDaysOfYear(year - 1) * daysWidthOnXAxis + pos;
+          this.timeScaleArray.push({
+            position: pos,
+            value: year,
+            unit: unit,
+            year: year,
+            month: 1
+          });
+        }
+      }
+    }, {
+      key: "generateMonthScale",
+      value: function generateMonthScale(params) {
+        var firstVal = params.firstVal,
+            currentMonthDate = params.currentMonthDate,
+            currentMonth = params.currentMonth,
+            currentYear = params.currentYear,
+            daysWidthOnXAxis = params.daysWidthOnXAxis,
+            numberOfMonths = params.numberOfMonths;
+        var firstTickValue = currentMonth;
+        var firstTickPosition = 0;
+        var dt = new DateTime(this.ctx);
+        var unit = 'month';
+        var yrCounter = 0;
+
+        if (firstVal.minDate > 1) {
+          // remainingDaysofFirstMonth is used to reacht the 2nd tick position
+          var remainingDaysOfFirstMonth = dt.determineDaysOfMonths(currentMonth + 1, firstVal.minYear) - currentMonthDate + 1; // calculate the first tick position
+
+          firstTickPosition = remainingDaysOfFirstMonth * daysWidthOnXAxis;
+          firstTickValue = Utils.monthMod(currentMonth + 1);
+          var year = currentYear + yrCounter;
+
+          var _month = Utils.monthMod(firstTickValue);
+
+          var value = firstTickValue; // it's Jan, so update the year
+
+          if (firstTickValue === 0) {
+            unit = 'year';
+            value = year;
+            _month = 1;
+            yrCounter += 1;
+            year = year + yrCounter;
+          } // push the first tick in the array
+
+
+          this.timeScaleArray.push({
+            position: firstTickPosition,
+            value: value,
+            unit: unit,
+            year: year,
+            month: _month
+          });
+        } else {
+          // push the first tick in the array
+          this.timeScaleArray.push({
+            position: firstTickPosition,
+            value: firstTickValue,
+            unit: unit,
+            year: currentYear,
+            month: Utils.monthMod(currentMonth)
+          });
+        }
+
+        var month = firstTickValue + 1;
+        var pos = firstTickPosition; // keep drawing rest of the ticks
+
+        for (var i = 0, j = 1; i < numberOfMonths; i++, j++) {
+          month = Utils.monthMod(month);
+
+          if (month === 0) {
+            unit = 'year';
+            yrCounter += 1;
+          } else {
+            unit = 'month';
+          }
+
+          var _year = currentYear + Math.floor(month / 12) + yrCounter;
+
+          pos = dt.determineDaysOfMonths(month, _year) * daysWidthOnXAxis + pos;
+          var monthVal = month === 0 ? _year : month;
+          this.timeScaleArray.push({
+            position: pos,
+            value: monthVal,
+            unit: unit,
+            year: _year,
+            month: month === 0 ? 1 : month
+          });
+          month++;
+        }
+      }
+    }, {
+      key: "generateDayScale",
+      value: function generateDayScale(params) {
+        var firstVal = params.firstVal,
+            currentMonth = params.currentMonth,
+            currentYear = params.currentYear,
+            hoursWidthOnXAxis = params.hoursWidthOnXAxis,
+            numberOfDays = params.numberOfDays;
+        var dt = new DateTime(this.ctx);
+        var unit = 'day';
+        var remainingHours = 24 - firstVal.minHour;
+        var yrCounter = 0; // calculate the first tick position
+
+        var firstTickPosition = remainingHours * hoursWidthOnXAxis;
+        var firstTickValue = firstVal.minDate + 1;
+        var val = firstTickValue;
+
+        var changeMonth = function changeMonth(dateVal, month, year) {
+          var monthdays = dt.determineDaysOfMonths(month + 1, year);
+
+          if (dateVal > monthdays) {
+            month = month + 1;
+            date = 1;
+            unit = 'month';
+            val = month;
+            return month;
+          }
+
+          return month;
+        };
+
+        var date = firstTickValue;
+        var month = changeMonth(date, currentMonth, currentYear); // push the first tick in the array
+
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: val,
+          unit: unit,
+          year: currentYear,
+          month: Utils.monthMod(month),
+          day: date
+        });
+        var pos = firstTickPosition; // keep drawing rest of the ticks
+
+        for (var i = 0; i < numberOfDays; i++) {
+          date += 1;
+          unit = 'day';
+          month = changeMonth(date, month, currentYear + Math.floor(month / 12) + yrCounter);
+          var year = currentYear + Math.floor(month / 12) + yrCounter;
+          pos = 24 * hoursWidthOnXAxis + pos;
+
+          var _val = date === 1 ? Utils.monthMod(month) : date;
+
+          this.timeScaleArray.push({
+            position: pos,
+            value: _val,
+            unit: unit,
+            year: year,
+            month: Utils.monthMod(month),
+            day: _val
+          });
+        }
+      }
+    }, {
+      key: "generateHourScale",
+      value: function generateHourScale(params) {
+        var firstVal = params.firstVal,
+            currentDate = params.currentDate,
+            currentMonth = params.currentMonth,
+            currentYear = params.currentYear,
+            minutesWidthOnXAxis = params.minutesWidthOnXAxis,
+            numberOfHours = params.numberOfHours;
+        var dt = new DateTime(this.ctx);
+        var yrCounter = 0;
+        var unit = 'hour';
+
+        var changeDate = function changeDate(dateVal, month) {
+          var monthdays = dt.determineDaysOfMonths(month + 1, currentYear);
+
+          if (dateVal > monthdays) {
+            date = 1;
+            month = month + 1;
+          }
+
+          return {
+            month: month,
+            date: date
+          };
+        };
+
+        var changeMonth = function changeMonth(dateVal, month) {
+          var monthdays = dt.determineDaysOfMonths(month + 1, currentYear);
+
+          if (dateVal > monthdays) {
+            month = month + 1;
+            return month;
+          }
+
+          return month;
+        };
+
+        var remainingMins = 60 - firstVal.minMinute;
+        var firstTickPosition = remainingMins * minutesWidthOnXAxis;
+        var firstTickValue = firstVal.minHour + 1;
+        var hour = firstTickValue + 1;
+
+        if (remainingMins === 60) {
+          firstTickPosition = 0;
+          firstTickValue = firstVal.minHour;
+          hour = firstTickValue + 1;
+        }
+
+        var date = currentDate;
+        var month = changeMonth(date, currentMonth); // push the first tick in the array
+
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: firstTickValue,
+          unit: unit,
+          day: date,
+          hour: hour,
+          year: currentYear,
+          month: Utils.monthMod(month)
+        });
+        var pos = firstTickPosition; // keep drawing rest of the ticks
+
+        for (var i = 0; i < numberOfHours; i++) {
+          unit = 'hour';
+
+          if (hour >= 24) {
+            hour = 0;
+            date += 1;
+            unit = 'day';
+            var checkNextMonth = changeDate(date, month);
+            month = checkNextMonth.month;
+            month = changeMonth(date, month);
+          }
+
+          var year = currentYear + Math.floor(month / 12) + yrCounter;
+          pos = hour === 0 && i === 0 ? remainingMins * minutesWidthOnXAxis : 60 * minutesWidthOnXAxis + pos;
+          var val = hour === 0 ? date : hour;
+          this.timeScaleArray.push({
+            position: pos,
+            value: val,
+            unit: unit,
+            hour: hour,
+            day: date,
+            year: year,
+            month: Utils.monthMod(month)
+          });
+          hour++;
+        }
+      }
+    }, {
+      key: "generateMinuteScale",
+      value: function generateMinuteScale(params) {
+        var firstVal = params.firstVal,
+            currentMinute = params.currentMinute,
+            currentHour = params.currentHour,
+            currentDate = params.currentDate,
+            currentMonth = params.currentMonth,
+            currentYear = params.currentYear,
+            minutesWidthOnXAxis = params.minutesWidthOnXAxis,
+            numberOfMinutes = params.numberOfMinutes;
+        var yrCounter = 0;
+        var unit = 'minute';
+        var remainingMins = currentMinute - firstVal.minMinute;
+        var firstTickPosition = minutesWidthOnXAxis - remainingMins;
+        var firstTickValue = firstVal.minMinute + 1;
+        var minute = firstTickValue + 1;
+        var date = currentDate;
+        var month = currentMonth;
+        var year = currentYear;
+        var hour = currentHour; // push the first tick in the array
+
+        this.timeScaleArray.push({
+          position: firstTickPosition,
+          value: firstTickValue,
+          unit: unit,
+          day: date,
+          hour: hour,
+          minute: minute,
+          year: year,
+          month: Utils.monthMod(month)
+        });
+        var pos = firstTickPosition; // keep drawing rest of the ticks
+
+        for (var i = 0; i < numberOfMinutes; i++) {
+          if (minute >= 60) {
+            minute = 0;
+            hour += 1;
+
+            if (hour === 24) {
+              hour = 0;
+            }
+          }
+
+          var _year2 = currentYear + Math.floor(month / 12) + yrCounter;
+
+          pos = minutesWidthOnXAxis + pos;
+          var val = minute;
+          this.timeScaleArray.push({
+            position: pos,
+            value: val,
+            unit: unit,
+            hour: hour,
+            minute: minute,
+            day: date,
+            year: _year2,
+            month: Utils.monthMod(month)
+          });
+          minute++;
+        }
+      }
+    }, {
+      key: "createRawDateString",
+      value: function createRawDateString(ts, value) {
+        var raw = ts.year;
+        raw += '-' + ('0' + ts.month.toString()).slice(-2); // unit is day
+
+        if (ts.unit === 'day') {
+          raw += ts.unit === 'day' ? '-' + ('0' + value).slice(-2) : '-01';
+        } else {
+          raw += '-' + ('0' + (ts.day ? ts.day : '1')).slice(-2);
+        } // unit is hour
+
+
+        if (ts.unit === 'hour') {
+          raw += ts.unit === 'hour' ? 'T' + ('0' + value).slice(-2) : 'T00';
+        } else {
+          raw += 'T' + ('0' + (ts.hour ? ts.hour : '0')).slice(-2);
+        } // unit is minute
+
+
+        raw += ts.unit === 'minute' ? ':' + ('0' + value).slice(-2) + ':00.000Z' : ':00:00.000Z';
+        return raw;
+      }
+    }, {
+      key: "formatDates",
+      value: function formatDates(filteredTimeScale) {
+        var _this2 = this;
+
+        var w = this.w;
+        var reformattedTimescaleArray = filteredTimeScale.map(function (ts) {
+          var value = ts.value.toString();
+          var dt = new DateTime(_this2.ctx);
+
+          var raw = _this2.createRawDateString(ts, value); // parse the whole ISO datestring
+
+
+          var dateString = new Date(Date.parse(raw));
+
+          if (w.config.xaxis.labels.format === undefined) {
+            var customFormat = 'dd MMM';
+            var dtFormatter = w.config.xaxis.labels.datetimeFormatter;
+            if (ts.unit === 'year') customFormat = dtFormatter.year;
+            if (ts.unit === 'month') customFormat = dtFormatter.month;
+            if (ts.unit === 'day') customFormat = dtFormatter.day;
+            if (ts.unit === 'hour') customFormat = dtFormatter.hour;
+            if (ts.unit === 'minute') customFormat = dtFormatter.minute;
+            value = dt.formatDate(dateString, customFormat, true, false);
+          } else {
+            value = dt.formatDate(dateString, w.config.xaxis.labels.format);
+          }
+
+          return {
+            dateString: raw,
+            position: ts.position,
+            value: value,
+            unit: ts.unit,
+            year: ts.year,
+            month: ts.month
+          };
+        });
+        return reformattedTimescaleArray;
+      }
+    }, {
+      key: "removeOverlappingTS",
+      value: function removeOverlappingTS(arr) {
+        var _this3 = this;
+
+        var graphics = new Graphics(this.ctx);
+        var lastDrawnIndex = 0;
+        var filteredArray = arr.map(function (item, index) {
+          if (index > 0 && _this3.w.config.xaxis.labels.hideOverlappingLabels) {
+            var prevLabelWidth = graphics.getTextRects(arr[lastDrawnIndex].value).width;
+            var prevPos = arr[lastDrawnIndex].position;
+            var pos = item.position;
+
+            if (pos > prevPos + prevLabelWidth + 10) {
+              lastDrawnIndex = index;
+              return item;
+            } else {
+              return null;
+            }
+          } else {
+            return item;
+          }
+        });
+        filteredArray = filteredArray.filter(function (f) {
+          return f !== null;
+        });
+        return filteredArray;
+      }
+    }]);
+
+    return TimeScale;
+  }();
+
+  /**
+   * ApexCharts Core Class responsible for major calculations and creating elements.
+   *
+   * @module Core
+   **/
+
+  var Core =
+  /*#__PURE__*/
+  function () {
+    function Core(el, ctx) {
+      _classCallCheck(this, Core);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.el = el;
+      this.coreUtils = new CoreUtils(this.ctx);
+      this.twoDSeries = [];
+      this.threeDSeries = [];
+      this.twoDSeriesX = [];
+    } // get data and store into appropriate vars
+
+
+    _createClass(Core, [{
+      key: "setupElements",
+      value: function setupElements() {
+        var gl = this.w.globals;
+        var cnf = this.w.config; // const graphics = new Graphics(this.ctx)
+
+        var ct = cnf.chart.type;
+        var axisChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', // 'rangeArea',
+        'candlestick', 'radar', 'scatter', 'bubble', 'heatmap'];
+        var xyChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', // 'rangeArea',
+        'candlestick', 'scatter', 'bubble'];
+        gl.axisCharts = axisChartsArrTypes.indexOf(ct) > -1;
+        gl.xyCharts = xyChartsArrTypes.indexOf(ct) > -1;
+        gl.isBarHorizontal = (cnf.chart.type === 'bar' || cnf.chart.type === 'rangeBar') && cnf.plotOptions.bar.horizontal;
+        gl.chartClass = '.apexcharts' + gl.cuid;
+        gl.dom.baseEl = this.el;
+        gl.dom.elWrap = document.createElement('div');
+        Graphics.setAttrs(gl.dom.elWrap, {
+          id: gl.chartClass.substring(1),
+          class: 'apexcharts-canvas ' + gl.chartClass.substring(1)
+        });
+        this.el.appendChild(gl.dom.elWrap);
+        gl.dom.Paper = new window.SVG.Doc(gl.dom.elWrap);
+        gl.dom.Paper.attr({
+          class: 'apexcharts-svg',
+          'xmlns:data': 'ApexChartsNS',
+          transform: "translate(".concat(cnf.chart.offsetX, ", ").concat(cnf.chart.offsetY, ")")
+        });
+        gl.dom.Paper.node.style.background = cnf.chart.background;
+        this.setSVGDimensions();
+        gl.dom.elGraphical = gl.dom.Paper.group().attr({
+          class: 'apexcharts-inner apexcharts-graphical'
+        });
+        gl.dom.elDefs = gl.dom.Paper.defs();
+        gl.dom.elLegendWrap = document.createElement('div');
+        gl.dom.elLegendWrap.classList.add('apexcharts-legend');
+        gl.dom.elWrap.appendChild(gl.dom.elLegendWrap); // gl.dom.Paper.add(gl.dom.elLegendWrap)
+
+        gl.dom.Paper.add(gl.dom.elGraphical);
+        gl.dom.elGraphical.add(gl.dom.elDefs);
+      }
+    }, {
+      key: "plotChartType",
+      value: function plotChartType(ser, xyRatios) {
+        var w = this.w;
+        var cnf = w.config;
+        var gl = w.globals;
+        var lineSeries = {
+          series: [],
+          i: []
+        };
+        var areaSeries = {
+          series: [],
+          i: []
+        };
+        var scatterSeries = {
+          series: [],
+          i: []
+        };
+        var columnSeries = {
+          series: [],
+          i: []
+        };
+        var candlestickSeries = {
+          series: [],
+          i: []
+        };
+        gl.series.map(function (series, st) {
+          // if user has specified a particular type for particular series
+          if (typeof ser[st].type !== 'undefined') {
+            if (ser[st].type === 'column' || ser[st].type === 'bar') {
+              w.config.plotOptions.bar.horizontal = false; // horizontal bars not supported in mixed charts, hence forcefully set to false
+
+              columnSeries.series.push(series);
+              columnSeries.i.push(st);
+            } else if (ser[st].type === 'area') {
+              areaSeries.series.push(series);
+              areaSeries.i.push(st);
+            } else if (ser[st].type === 'line') {
+              lineSeries.series.push(series);
+              lineSeries.i.push(st);
+            } else if (ser[st].type === 'scatter') {
+              scatterSeries.series.push(series);
+              scatterSeries.i.push(st);
+            } else if (ser[st].type === 'bubble') ; else if (ser[st].type === 'candlestick') {
+              candlestickSeries.series.push(series);
+              candlestickSeries.i.push(st);
+            } else {
+              // user has specified type, but it is not valid (other than line/area/column)
+              console.warn('You have specified an unrecognized chart type. Available types for this propery are line/area/column/bar/scatter/bubble');
+            }
+
+            gl.comboCharts = true;
+          } else {
+            lineSeries.series.push(series);
+            lineSeries.i.push(st);
+          }
+        });
+        var line = new Line(this.ctx, xyRatios);
+        var candlestick = new CandleStick(this.ctx, xyRatios);
+        var pie = new Pie(this.ctx);
+        var radialBar = new Radial(this.ctx);
+        var rangeBar = new RangeBar(this.ctx, xyRatios);
+        var radar = new Radar(this.ctx);
+        var elGraph = [];
+
+        if (gl.comboCharts) {
+          if (areaSeries.series.length > 0) {
+            elGraph.push(line.draw(areaSeries.series, 'area', areaSeries.i));
+          }
+
+          if (columnSeries.series.length > 0) {
+            if (w.config.chart.stacked) {
+              var barStacked = new BarStacked(this.ctx, xyRatios);
+              elGraph.push(barStacked.draw(columnSeries.series, columnSeries.i));
+            } else {
+              var bar = new Bar(this.ctx, xyRatios);
+              elGraph.push(bar.draw(columnSeries.series, columnSeries.i));
+            }
+          }
+
+          if (lineSeries.series.length > 0) {
+            elGraph.push(line.draw(lineSeries.series, 'line', lineSeries.i));
+          }
+
+          if (candlestickSeries.series.length > 0) {
+            elGraph.push(candlestick.draw(candlestickSeries.series, candlestickSeries.i));
+          }
+
+          if (scatterSeries.series.length > 0) {
+            var scatterLine = new Line(this.ctx, xyRatios, true);
+            elGraph.push(scatterLine.draw(scatterSeries.series, 'scatter', scatterSeries.i));
+          } // TODO: allow bubble series in a combo chart
+          // if (bubbleSeries.series.length > 0) {
+          //   const bubbleLine = new Line(this.ctx, xyRatios, true)
+          //   elGraph.push(
+          //     bubbleLine.draw(bubbleSeries.series, 'bubble', bubbleSeries.i)
+          //   )
+          // }
+
+        } else {
+          switch (cnf.chart.type) {
+            case 'line':
+              elGraph = line.draw(gl.series, 'line');
+              break;
+
+            case 'area':
+              elGraph = line.draw(gl.series, 'area');
+              break;
+
+            case 'bar':
+              if (cnf.chart.stacked) {
+                var _barStacked = new BarStacked(this.ctx, xyRatios);
+
+                elGraph = _barStacked.draw(gl.series);
+              } else {
+                var _bar = new Bar(this.ctx, xyRatios);
+
+                elGraph = _bar.draw(gl.series);
+              }
+
+              break;
+
+            case 'candlestick':
+              var candleStick = new CandleStick(this.ctx, xyRatios);
+              elGraph = candleStick.draw(gl.series);
+              break;
+
+            case 'rangeBar':
+              elGraph = rangeBar.draw(gl.series);
+              break;
+
+            case 'heatmap':
+              var heatmap = new HeatMap(this.ctx, xyRatios);
+              elGraph = heatmap.draw(gl.series);
+              break;
+
+            case 'pie':
+            case 'donut':
+              elGraph = pie.draw(gl.series);
+              break;
+
+            case 'radialBar':
+              elGraph = radialBar.draw(gl.series);
+              break;
+
+            case 'radar':
+              elGraph = radar.draw(gl.series);
+              break;
+
+            default:
+              elGraph = line.draw(gl.series);
+          }
+        }
+
+        return elGraph;
+      }
+    }, {
+      key: "setSVGDimensions",
+      value: function setSVGDimensions() {
+        var gl = this.w.globals;
+        var cnf = this.w.config;
+        gl.svgWidth = cnf.chart.width;
+        gl.svgHeight = cnf.chart.height;
+        var elDim = Utils.getDimensions(this.el);
+        var widthUnit = cnf.chart.width.toString().split(/[0-9]+/g).pop();
+
+        if (widthUnit === '%') {
+          if (Utils.isNumber(elDim[0])) {
+            if (elDim[0].width === 0) {
+              elDim = Utils.getDimensions(this.el.parentNode);
+            }
+
+            gl.svgWidth = elDim[0] * parseInt(cnf.chart.width) / 100;
+          }
+        } else if (widthUnit === 'px' || widthUnit === '') {
+          gl.svgWidth = parseInt(cnf.chart.width);
+        }
+
+        if (gl.svgHeight !== 'auto' && gl.svgHeight !== '') {
+          var heightUnit = cnf.chart.height.toString().split(/[0-9]+/g).pop();
+
+          if (heightUnit === '%') {
+            var elParentDim = Utils.getDimensions(this.el.parentNode);
+            gl.svgHeight = elParentDim[1] * parseInt(cnf.chart.height) / 100;
+          } else {
+            gl.svgHeight = parseInt(cnf.chart.height);
+          }
+        } else {
+          if (gl.axisCharts) {
+            gl.svgHeight = gl.svgWidth / 1.61;
+          } else {
+            gl.svgHeight = gl.svgWidth;
+          }
+        }
+
+        Graphics.setAttrs(gl.dom.Paper.node, {
+          width: gl.svgWidth,
+          height: gl.svgHeight
+        }); // gl.dom.Paper.node.parentNode.parentNode.style.minWidth = gl.svgWidth + "px";
+
+        var offsetY = cnf.chart.sparkline.enabled ? 0 : gl.axisCharts ? cnf.chart.parentHeightOffset : 0;
+        gl.dom.Paper.node.parentNode.parentNode.style.minHeight = gl.svgHeight + offsetY + 'px';
+        gl.dom.elWrap.style.width = gl.svgWidth + 'px';
+        gl.dom.elWrap.style.height = gl.svgHeight + 'px';
+      }
+    }, {
+      key: "shiftGraphPosition",
+      value: function shiftGraphPosition() {
+        var gl = this.w.globals;
+        var tY = gl.translateY;
+        var tX = gl.translateX;
+        var scalingAttrs = {
+          transform: 'translate(' + tX + ', ' + tY + ')'
+        };
+        Graphics.setAttrs(gl.dom.elGraphical.node, scalingAttrs);
+      }
+      /*
+       ** All the calculations for setting range in charts will be done here
+       */
+
+    }, {
+      key: "coreCalculations",
+      value: function coreCalculations() {
+        var range = new Range$1(this.ctx);
+        range.init();
+      }
+    }, {
+      key: "resetGlobals",
+      value: function resetGlobals() {
+        var _this = this;
+
+        var gl = this.w.globals;
+        gl.series = [];
+        gl.seriesCandleO = [];
+        gl.seriesCandleH = [];
+        gl.seriesCandleL = [];
+        gl.seriesCandleC = [];
+        gl.seriesRangeStart = [];
+        gl.seriesRangeEnd = [];
+        gl.seriesPercent = [];
+        gl.seriesX = [];
+        gl.seriesZ = [];
+        gl.seriesNames = [];
+        gl.seriesTotals = [];
+        gl.stackedSeriesTotals = [];
+        gl.labels = [];
+        gl.timelineLabels = [];
+        gl.noLabelsProvided = false;
+        gl.timescaleTicks = [];
+        gl.resizeTimer = null;
+        gl.selectionResizeTimer = null;
+
+        gl.seriesXvalues = function () {
+          return _this.w.config.series.map(function (s) {
+            return [];
+          });
+        }();
+
+        gl.seriesYvalues = function () {
+          return _this.w.config.series.map(function (s) {
+            return [];
+          });
+        }();
+
+        gl.delayedElements = [];
+        gl.pointsArray = [];
+        gl.dataLabelsRects = [];
+        gl.isXNumeric = false;
+        gl.isDataXYZ = false;
+        gl.maxY = -Number.MAX_VALUE;
+        gl.minY = Number.MIN_VALUE;
+        gl.minYArr = [];
+        gl.maxYArr = [];
+        gl.maxX = -Number.MAX_VALUE;
+        gl.minX = Number.MAX_VALUE;
+        gl.initialmaxX = -Number.MAX_VALUE;
+        gl.initialminX = Number.MAX_VALUE;
+        gl.maxDate = 0;
+        gl.minDate = Number.MAX_VALUE;
+        gl.minZ = Number.MAX_VALUE;
+        gl.maxZ = -Number.MAX_VALUE;
+        gl.minXDiff = Number.MAX_VALUE;
+        gl.yAxisScale = [];
+        gl.xAxisScale = null;
+        gl.xAxisTicksPositions = [];
+        gl.yLabelsCoords = [];
+        gl.yTitleCoords = [];
+        gl.xRange = 0;
+        gl.yRange = [];
+        gl.zRange = 0;
+        gl.dataPoints = 0;
+      }
+    }, {
+      key: "isMultipleY",
+      value: function isMultipleY() {
+        // user has supplied an array in yaxis property. So, turn on multipleYAxis flag
+        if (this.w.config.yaxis.constructor === Array && this.w.config.yaxis.length > 1) {
+          // first, turn off stacking if multiple y axis
+          this.w.config.chart.stacked = false;
+          this.w.globals.isMultipleYAxis = true;
+          return true;
+        }
+      }
+    }, {
+      key: "excludeCollapsedSeriesInYAxis",
+      value: function excludeCollapsedSeriesInYAxis() {
+        var _this2 = this;
+
+        var w = this.w;
+        w.globals.ignoreYAxisIndexes = w.globals.collapsedSeries.map(function (collapsed, i) {
+          if (_this2.w.globals.isMultipleYAxis) {
+            return collapsed.index;
+          }
+        });
+      }
+    }, {
+      key: "isMultiFormat",
+      value: function isMultiFormat() {
+        return this.isFormatXY() || this.isFormat2DArray();
+      } // given format is [{x, y}, {x, y}]
+
+    }, {
+      key: "isFormatXY",
+      value: function isFormatXY() {
+        var series = this.w.config.series.slice();
+        var sr = new Series(this.ctx);
+        this.activeSeriesIndex = sr.getActiveConfigSeriesIndex();
+
+        if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && series[this.activeSeriesIndex].data[0] !== null && typeof series[this.activeSeriesIndex].data[0].x !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null) {
+          return true;
+        }
+      } // given format is [[x, y], [x, y]]
+
+    }, {
+      key: "isFormat2DArray",
+      value: function isFormat2DArray() {
+        var series = this.w.config.series.slice();
+        var sr = new Series(this.ctx);
+        this.activeSeriesIndex = sr.getActiveConfigSeriesIndex();
+
+        if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && typeof series[this.activeSeriesIndex].data[0] !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null && series[this.activeSeriesIndex].data[0].constructor === Array) {
+          return true;
+        }
+      }
+    }, {
+      key: "handleFormat2DArray",
+      value: function handleFormat2DArray(ser, i) {
+        var cnf = this.w.config;
+        var gl = this.w.globals;
+
+        for (var j = 0; j < ser[i].data.length; j++) {
+          if (typeof ser[i].data[j][1] !== 'undefined') {
+            if (Array.isArray(ser[i].data[j][1]) && ser[i].data[j][1].length === 4) {
+              this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][1][3]));
+            } else {
+              this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][1]));
+            }
+
+            gl.dataFormatXNumeric = true;
+          }
+
+          if (cnf.xaxis.type === 'datetime') {
+            // if timestamps are provided and xaxis type is datettime,
+            var ts = new Date(ser[i].data[j][0]);
+            ts = new Date(ts).getTime();
+            this.twoDSeriesX.push(ts);
+          } else {
+            this.twoDSeriesX.push(ser[i].data[j][0]);
+          }
+        }
+
+        for (var _j = 0; _j < ser[i].data.length; _j++) {
+          if (typeof ser[i].data[_j][2] !== 'undefined') {
+            this.threeDSeries.push(ser[i].data[_j][2]);
+            gl.isDataXYZ = true;
+          }
+        }
+      }
+    }, {
+      key: "handleFormatXY",
+      value: function handleFormatXY(ser, i) {
+        var cnf = this.w.config;
+        var gl = this.w.globals;
+        var dt = new DateTime(this.ctx);
+        var activeI = i;
+
+        if (gl.collapsedSeriesIndices.indexOf(i) > -1) {
+          // fix #368
+          activeI = this.activeSeriesIndex;
+        } // get series
+
+
+        for (var j = 0; j < ser[i].data.length; j++) {
+          if (typeof ser[i].data[j].y !== 'undefined') {
+            if (Array.isArray(ser[i].data[j].y)) {
+              this.twoDSeries.push(Utils.parseNumber(ser[i].data[j].y[ser[i].data[j].y.length - 1]));
+            } else {
+              this.twoDSeries.push(Utils.parseNumber(ser[i].data[j].y));
+            }
+          }
+        } // get seriesX
+
+
+        for (var _j2 = 0; _j2 < ser[activeI].data.length; _j2++) {
+          var isXString = typeof ser[activeI].data[_j2].x === 'string';
+          var isXDate = !!dt.isValidDate(ser[activeI].data[_j2].x.toString());
+
+          if (isXString || isXDate) {
+            // user supplied '01/01/2017' or a date string (a JS date object is not supported)
+            if (isXString) {
+              if (cnf.xaxis.type === 'datetime' && !gl.isRangeData) {
+                this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x));
+              } else {
+                // a category and not a numeric x value
+                this.fallbackToCategory = true;
+                this.twoDSeriesX.push(ser[activeI].data[_j2].x);
+              }
+            } else {
+              if (cnf.xaxis.type === 'datetime') {
+                this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x.toString()));
+              } else {
+                gl.dataFormatXNumeric = true;
+                gl.isXNumeric = true;
+                this.twoDSeriesX.push(parseFloat(ser[activeI].data[_j2].x));
+              }
+            }
+          } else {
+            // a numeric value in x property
+            gl.isXNumeric = true;
+            gl.dataFormatXNumeric = true;
+            this.twoDSeriesX.push(ser[activeI].data[_j2].x);
+          }
+        }
+
+        if (ser[i].data[0] && typeof ser[i].data[0].z !== 'undefined') {
+          for (var t = 0; t < ser[i].data.length; t++) {
+            this.threeDSeries.push(ser[i].data[t].z);
+          }
+
+          gl.isDataXYZ = true;
+        }
+      }
+    }, {
+      key: "handleRangeData",
+      value: function handleRangeData(ser, i) {
+        var gl = this.w.globals;
+        var range = {};
+
+        if (this.isFormat2DArray()) {
+          range = this.handleRangeDataFormat('array', ser, i);
+        } else if (this.isFormatXY()) {
+          range = this.handleRangeDataFormat('xy', ser, i);
+        }
+
+        gl.seriesRangeStart.push(range.start);
+        gl.seriesRangeEnd.push(range.end);
+        return range;
+      }
+    }, {
+      key: "handleCandleStickData",
+      value: function handleCandleStickData(ser, i) {
+        var gl = this.w.globals;
+        var ohlc = {};
+
+        if (this.isFormat2DArray()) {
+          ohlc = this.handleCandleStickDataFormat('array', ser, i);
+        } else if (this.isFormatXY()) {
+          ohlc = this.handleCandleStickDataFormat('xy', ser, i);
+        }
+
+        gl.seriesCandleO.push(ohlc.o);
+        gl.seriesCandleH.push(ohlc.h);
+        gl.seriesCandleL.push(ohlc.l);
+        gl.seriesCandleC.push(ohlc.c);
+        return ohlc;
+      }
+    }, {
+      key: "handleRangeDataFormat",
+      value: function handleRangeDataFormat(format, ser, i) {
+        var rangeStart = [];
+        var rangeEnd = [];
+        var err = 'Please provide [Start, End] values in valid format. Read more https://apexcharts.com/docs/series/#rangecharts';
+        var serObj = new Series(this.ctx);
+        var activeIndex = serObj.getActiveConfigSeriesIndex();
+
+        if (format === 'array') {
+          if (ser[activeIndex].data[0][1].length !== 2) {
+            throw new Error(err);
+          }
+
+          for (var j = 0; j < ser[i].data.length; j++) {
+            rangeStart.push(ser[i].data[j][1][0]);
+            rangeEnd.push(ser[i].data[j][1][1]);
+          }
+        } else if (format === 'xy') {
+          if (ser[activeIndex].data[0].y.length !== 2) {
+            throw new Error(err);
+          }
+
+          for (var _j3 = 0; _j3 < ser[i].data.length; _j3++) {
+            rangeStart.push(ser[i].data[_j3].y[0]);
+            rangeEnd.push(ser[i].data[_j3].y[1]);
+          }
+        }
+
+        return {
+          start: rangeStart,
+          end: rangeEnd
+        };
+      }
+    }, {
+      key: "handleCandleStickDataFormat",
+      value: function handleCandleStickDataFormat(format, ser, i) {
+        var serO = [];
+        var serH = [];
+        var serL = [];
+        var serC = [];
+        var err = 'Please provide [Open, High, Low and Close] values in valid format. Read more https://apexcharts.com/docs/series/#candlestick';
+
+        if (format === 'array') {
+          if (ser[i].data[0][1].length !== 4) {
+            throw new Error(err);
+          }
+
+          for (var j = 0; j < ser[i].data.length; j++) {
+            serO.push(ser[i].data[j][1][0]);
+            serH.push(ser[i].data[j][1][1]);
+            serL.push(ser[i].data[j][1][2]);
+            serC.push(ser[i].data[j][1][3]);
+          }
+        } else if (format === 'xy') {
+          if (ser[i].data[0].y.length !== 4) {
+            throw new Error(err);
+          }
+
+          for (var _j4 = 0; _j4 < ser[i].data.length; _j4++) {
+            serO.push(ser[i].data[_j4].y[0]);
+            serH.push(ser[i].data[_j4].y[1]);
+            serL.push(ser[i].data[_j4].y[2]);
+            serC.push(ser[i].data[_j4].y[3]);
+          }
+        }
+
+        return {
+          o: serO,
+          h: serH,
+          l: serL,
+          c: serC
+        };
+      }
+    }, {
+      key: "parseDataAxisCharts",
+      value: function parseDataAxisCharts(ser) {
+        var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.ctx;
+        var cnf = this.w.config;
+        var gl = this.w.globals;
+        var dt = new DateTime(ctx);
+
+        for (var i = 0; i < ser.length; i++) {
+          this.twoDSeries = [];
+          this.twoDSeriesX = [];
+          this.threeDSeries = [];
+
+          if (typeof ser[i].data === 'undefined') {
+            console.error("It is a possibility that you may have not included 'data' property in series.");
+            return;
+          }
+
+          if (cnf.chart.type === 'rangeBar' || cnf.chart.type === 'rangeArea' || ser[i].type === 'rangeBar' || ser[i].type === 'rangeArea') {
+            gl.isRangeData = true;
+            this.handleRangeData(ser, i);
+          }
+
+          if (this.isMultiFormat()) {
+            if (this.isFormat2DArray()) {
+              this.handleFormat2DArray(ser, i);
+            } else if (this.isFormatXY()) {
+              this.handleFormatXY(ser, i);
+            }
+
+            if (cnf.chart.type === 'candlestick' || ser[i].type === 'candlestick') {
+              this.handleCandleStickData(ser, i);
+            }
+
+            gl.series.push(this.twoDSeries);
+            gl.labels.push(this.twoDSeriesX);
+            gl.seriesX.push(this.twoDSeriesX);
+
+            if (!this.fallbackToCategory) {
+              gl.isXNumeric = true;
+            }
+          } else {
+            if (cnf.xaxis.type === 'datetime') {
+              // user didn't supplied [{x,y}] or [[x,y]], but single array in data.
+              // Also labels/categories were supplied differently
+              gl.isXNumeric = true;
+              var dates = cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice();
+
+              for (var j = 0; j < dates.length; j++) {
+                if (typeof dates[j] === 'string') {
+                  var isDate = dt.isValidDate(dates[j]);
+
+                  if (isDate) {
+                    this.twoDSeriesX.push(dt.parseDate(dates[j]));
+                  } else {
+                    throw new Error('You have provided invalid Date format. Please provide a valid JavaScript Date');
+                  }
+                }
+              }
+
+              gl.seriesX.push(this.twoDSeriesX);
+            } else if (cnf.xaxis.type === 'numeric') {
+              gl.isXNumeric = true;
+              var x = cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice();
+
+              if (x.length > 0) {
+                this.twoDSeriesX = x;
+                gl.seriesX.push(this.twoDSeriesX);
+              }
+            }
+
+            gl.labels.push(this.twoDSeriesX);
+            var singleArray = ser[i].data.map(function (d) {
+              return Utils.parseNumber(d);
+            });
+            gl.series.push(singleArray);
+          }
+
+          gl.seriesZ.push(this.threeDSeries);
+
+          if (ser[i].name !== undefined) {
+            gl.seriesNames.push(ser[i].name);
+          } else {
+            gl.seriesNames.push('series-' + parseInt(i + 1));
+          }
+        }
+
+        return this.w;
+      }
+    }, {
+      key: "parseDataNonAxisCharts",
+      value: function parseDataNonAxisCharts(ser) {
+        var gl = this.w.globals;
+        var cnf = this.w.config;
+        gl.series = ser.slice();
+        gl.seriesNames = cnf.labels.slice();
+
+        for (var i = 0; i < gl.series.length; i++) {
+          if (gl.seriesNames[i] === undefined) {
+            gl.seriesNames.push('series-' + (i + 1));
+          }
+        }
+
+        return this.w;
+      }
+      /** User possibly set string categories in xaxis.categories or labels prop
+       * Or didn't set xaxis labels at all - in which case we manually do it.
+       * If user passed series data as [[3, 2], [4, 5]] or [{ x: 3, y: 55 }],
+       * this shouldn't be called
+       * @param {array} ser - the series which user passed to the config
+       */
+
+    }, {
+      key: "handleExternalLabelsData",
+      value: function handleExternalLabelsData(ser) {
+        var cnf = this.w.config;
+        var gl = this.w.globals;
+
+        if (cnf.xaxis.categories.length > 0) {
+          // user provided labels in xaxis.category prop
+          gl.labels = cnf.xaxis.categories;
+        } else if (cnf.labels.length > 0) {
+          // user provided labels in labels props
+          gl.labels = cnf.labels.slice();
+        } else if (this.fallbackToCategory) {
+          // user provided labels in x prop in [{ x: 3, y: 55 }] data, and those labels are already stored in gl.labels[0], so just re-arrange the gl.labels array
+          gl.labels = gl.labels[0];
+        } else {
+          // user didn't provided any labels, fallback to 1-2-3-4-5
+          var labelArr = [];
+
+          if (gl.axisCharts) {
+            // for axis charts, we get the longest series and create labels from it
+            for (var i = 0; i < gl.series[gl.maxValsInArrayIndex].length; i++) {
+              labelArr.push(i + 1);
+            } // create gl.seriesX as it will be used in calculations of x positions
+
+
+            for (var _i = 0; _i < ser.length; _i++) {
+              gl.seriesX.push(labelArr);
+            } // turn on the isXNumeric flag to allow minX and maxX to function properly
+
+
+            gl.isXNumeric = true;
+          } // no series to pull labels from, put a 0-10 series
+          // possibly, user collapsed all series. Hence we can't work with above calc
+
+
+          if (labelArr.length === 0) {
+            labelArr = [0, 10];
+
+            for (var _i2 = 0; _i2 < ser.length; _i2++) {
+              gl.seriesX.push(labelArr);
+            }
+          } // Finally, pass the labelArr in gl.labels which will be printed on x-axis
+
+
+          gl.labels = labelArr; // Turn on this global flag to indicate no labels were provided by user
+
+          gl.noLabelsProvided = true;
+        }
+      } // Segregate user provided data into appropriate vars
+
+    }, {
+      key: "parseData",
+      value: function parseData(ser) {
+        var w = this.w;
+        var cnf = w.config;
+        var gl = w.globals;
+        this.excludeCollapsedSeriesInYAxis(); // If we detected string in X prop of series, we fallback to category x-axis
+
+        this.fallbackToCategory = false;
+        this.resetGlobals();
+        this.isMultipleY();
+
+        if (gl.axisCharts) {
+          // axisCharts includes line / area / column / scatter
+          this.parseDataAxisCharts(ser);
+        } else {
+          // non-axis charts are pie / donut
+          this.parseDataNonAxisCharts(ser);
+        }
+
+        this.coreUtils.getLargestSeries(); // set Null values to 0 in all series when user hides/shows some series
+
+        if (cnf.chart.type === 'bar' && cnf.chart.stacked) {
+          var series = new Series(this.ctx);
+          gl.series = series.setNullSeriesToZeroValues(gl.series);
+        }
+
+        this.coreUtils.getSeriesTotals();
+
+        if (gl.axisCharts) {
+          this.coreUtils.getStackedSeriesTotals();
+        }
+
+        this.coreUtils.getPercentSeries();
+
+        if (!gl.dataFormatXNumeric && (!gl.isXNumeric || cnf.xaxis.type === 'numeric' && cnf.labels.length === 0 && cnf.xaxis.categories.length === 0)) {
+          // x-axis labels couldn't be detected; hence try searching every option in config
+          this.handleExternalLabelsData(ser);
+        }
+      }
+    }, {
+      key: "xySettings",
+      value: function xySettings() {
+        var xyRatios = null;
+        var w = this.w;
+
+        if (w.globals.axisCharts) {
+          if (w.config.xaxis.crosshairs.position === 'back') {
+            var crosshairs = new Crosshairs(this.ctx);
+            crosshairs.drawXCrosshairs();
+          }
+
+          if (w.config.yaxis[0].crosshairs.position === 'back') {
+            var _crosshairs = new Crosshairs(this.ctx);
+
+            _crosshairs.drawYCrosshairs();
+          }
+
+          xyRatios = this.coreUtils.getCalculatedRatios();
+
+          if (w.config.xaxis.type === 'datetime' && w.config.xaxis.labels.formatter === undefined) {
+            var ts = new TimeScale(this.ctx);
+            var formattedTimeScale;
+
+            if (isFinite(w.globals.minX) && isFinite(w.globals.maxX) && !w.globals.isBarHorizontal) {
+              formattedTimeScale = ts.calculateTimeScaleTicks(w.globals.minX, w.globals.maxX);
+              ts.recalcDimensionsBasedOnFormat(formattedTimeScale, false);
+            } else if (w.globals.isBarHorizontal) {
+              formattedTimeScale = ts.calculateTimeScaleTicks(w.globals.minY, w.globals.maxY);
+              ts.recalcDimensionsBasedOnFormat(formattedTimeScale, true);
+            }
+          }
+        }
+
+        return xyRatios;
+      }
+    }, {
+      key: "drawAxis",
+      value: function drawAxis(type, xyRatios) {
+        var gl = this.w.globals;
+        var cnf = this.w.config;
+        var xAxis = new XAxis(this.ctx);
+        var yAxis = new YAxis(this.ctx);
+
+        if (gl.axisCharts && type !== 'radar') {
+          var elXaxis, elYaxis;
+
+          if (gl.isBarHorizontal) {
+            elYaxis = yAxis.drawYaxisInversed(0);
+            elXaxis = xAxis.drawXaxisInversed(0);
+            gl.dom.elGraphical.add(elXaxis);
+            gl.dom.elGraphical.add(elYaxis);
+          } else {
+            elXaxis = xAxis.drawXaxis();
+            gl.dom.elGraphical.add(elXaxis);
+            cnf.yaxis.map(function (yaxe, index) {
+              if (gl.ignoreYAxisIndexes.indexOf(index) === -1) {
+                elYaxis = yAxis.drawYaxis(index);
+                gl.dom.Paper.add(elYaxis);
+              }
+            });
+          }
+        }
+
+        cnf.yaxis.map(function (yaxe, index) {
+          if (gl.ignoreYAxisIndexes.indexOf(index) === -1) {
+            yAxis.yAxisTitleRotate(index, yaxe.opposite);
+          }
+        });
+      }
+    }, {
+      key: "setupBrushHandler",
+      value: function setupBrushHandler() {
+        var _this3 = this;
+
+        var w = this.w; // only for brush charts
+
+        if (!w.config.chart.brush.enabled) {
+          return;
+        } // if user has not defined a custom function for selection - we handle the brush chart
+        // otherwise we leave it to the user to define the functionality for selection
+
+
+        if (typeof w.config.chart.events.selection !== 'function') {
+          var targets = w.config.chart.brush.targets || [w.config.chart.brush.target]; // retro compatibility with single target option
+
+          targets.forEach(function (target) {
+            var targetChart = ApexCharts.getChartByID(target);
+            targetChart.w.globals.brushSource = _this3.ctx;
+
+            var updateSourceChart = function updateSourceChart() {
+              _this3.ctx._updateOptions({
+                chart: {
+                  selection: {
+                    xaxis: {
+                      min: targetChart.w.globals.minX,
+                      max: targetChart.w.globals.maxX
+                    }
+                  }
+                }
+              }, false, false);
+            };
+
+            if (typeof targetChart.w.config.chart.events.zoomed !== 'function') {
+              targetChart.w.config.chart.events.zoomed = function () {
+                updateSourceChart();
+              };
+            }
+
+            if (typeof targetChart.w.config.chart.events.scrolled !== 'function') {
+              targetChart.w.config.chart.events.scrolled = function () {
+                updateSourceChart();
+              };
+            }
+
+            w.config.chart.events.selection = function (chart, e) {
+              var yaxis = Utils.clone(w.config.yaxis);
+
+              if (w.config.chart.brush.autoScaleYaxis) {
+                var scale = new Range(targetChart);
+                yaxis = scale.autoScaleY(targetChart, e);
+              }
+
+              targetChart._updateOptions({
+                xaxis: {
+                  min: e.xaxis.min,
+                  max: e.xaxis.max
+                },
+                yaxis: yaxis
+              }, false, false, false);
+            };
+          });
+        }
+      }
+    }]);
+
+    return Core;
+  }();
+
+  /**
+   * @this {Promise}
+   */
+  function finallyConstructor(callback) {
+    var constructor = this.constructor;
+    return this.then(
+      function(value) {
+        return constructor.resolve(callback()).then(function() {
+          return value;
+        });
+      },
+      function(reason) {
+        return constructor.resolve(callback()).then(function() {
+          return constructor.reject(reason);
+        });
+      }
+    );
+  }
+
+  // Store setTimeout reference so promise-polyfill will be unaffected by
+  // other code modifying setTimeout (like sinon.useFakeTimers())
+  var setTimeoutFunc = setTimeout;
+
+  function noop() {}
+
+  // Polyfill for Function.prototype.bind
+  function bind(fn, thisArg) {
+    return function() {
+      fn.apply(thisArg, arguments);
+    };
+  }
+
+  /**
+   * @constructor
+   * @param {Function} fn
+   */
+  function Promise$1(fn) {
+    if (!(this instanceof Promise$1))
+      throw new TypeError('Promises must be constructed via new');
+    if (typeof fn !== 'function') throw new TypeError('not a function');
+    /** @type {!number} */
+    this._state = 0;
+    /** @type {!boolean} */
+    this._handled = false;
+    /** @type {Promise|undefined} */
+    this._value = undefined;
+    /** @type {!Array<!Function>} */
+    this._deferreds = [];
+
+    doResolve(fn, this);
+  }
+
+  function handle(self, deferred) {
+    while (self._state === 3) {
+      self = self._value;
+    }
+    if (self._state === 0) {
+      self._deferreds.push(deferred);
+      return;
+    }
+    self._handled = true;
+    Promise$1._immediateFn(function() {
+      var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
+      if (cb === null) {
+        (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
+        return;
+      }
+      var ret;
+      try {
+        ret = cb(self._value);
+      } catch (e) {
+        reject(deferred.promise, e);
+        return;
+      }
+      resolve(deferred.promise, ret);
+    });
+  }
+
+  function resolve(self, newValue) {
+    try {
+      // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
+      if (newValue === self)
+        throw new TypeError('A promise cannot be resolved with itself.');
+      if (
+        newValue &&
+        (typeof newValue === 'object' || typeof newValue === 'function')
+      ) {
+        var then = newValue.then;
+        if (newValue instanceof Promise$1) {
+          self._state = 3;
+          self._value = newValue;
+          finale(self);
+          return;
+        } else if (typeof then === 'function') {
+          doResolve(bind(then, newValue), self);
+          return;
+        }
+      }
+      self._state = 1;
+      self._value = newValue;
+      finale(self);
+    } catch (e) {
+      reject(self, e);
+    }
+  }
+
+  function reject(self, newValue) {
+    self._state = 2;
+    self._value = newValue;
+    finale(self);
+  }
+
+  function finale(self) {
+    if (self._state === 2 && self._deferreds.length === 0) {
+      Promise$1._immediateFn(function() {
+        if (!self._handled) {
+          Promise$1._unhandledRejectionFn(self._value);
+        }
+      });
+    }
+
+    for (var i = 0, len = self._deferreds.length; i < len; i++) {
+      handle(self, self._deferreds[i]);
+    }
+    self._deferreds = null;
+  }
+
+  /**
+   * @constructor
+   */
+  function Handler(onFulfilled, onRejected, promise) {
+    this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
+    this.onRejected = typeof onRejected === 'function' ? onRejected : null;
+    this.promise = promise;
+  }
+
+  /**
+   * Take a potentially misbehaving resolver function and make sure
+   * onFulfilled and onRejected are only called once.
+   *
+   * Makes no guarantees about asynchrony.
+   */
+  function doResolve(fn, self) {
+    var done = false;
+    try {
+      fn(
+        function(value) {
+          if (done) return;
+          done = true;
+          resolve(self, value);
+        },
+        function(reason) {
+          if (done) return;
+          done = true;
+          reject(self, reason);
+        }
+      );
+    } catch (ex) {
+      if (done) return;
+      done = true;
+      reject(self, ex);
+    }
+  }
+
+  Promise$1.prototype['catch'] = function(onRejected) {
+    return this.then(null, onRejected);
+  };
+
+  Promise$1.prototype.then = function(onFulfilled, onRejected) {
+    // @ts-ignore
+    var prom = new this.constructor(noop);
+
+    handle(this, new Handler(onFulfilled, onRejected, prom));
+    return prom;
+  };
+
+  Promise$1.prototype['finally'] = finallyConstructor;
+
+  Promise$1.all = function(arr) {
+    return new Promise$1(function(resolve, reject) {
+      if (!arr || typeof arr.length === 'undefined')
+        throw new TypeError('Promise.all accepts an array');
+      var args = Array.prototype.slice.call(arr);
+      if (args.length === 0) return resolve([]);
+      var remaining = args.length;
+
+      function res(i, val) {
+        try {
+          if (val && (typeof val === 'object' || typeof val === 'function')) {
+            var then = val.then;
+            if (typeof then === 'function') {
+              then.call(
+                val,
+                function(val) {
+                  res(i, val);
+                },
+                reject
+              );
+              return;
+            }
+          }
+          args[i] = val;
+          if (--remaining === 0) {
+            resolve(args);
+          }
+        } catch (ex) {
+          reject(ex);
+        }
+      }
+
+      for (var i = 0; i < args.length; i++) {
+        res(i, args[i]);
+      }
+    });
+  };
+
+  Promise$1.resolve = function(value) {
+    if (value && typeof value === 'object' && value.constructor === Promise$1) {
+      return value;
+    }
+
+    return new Promise$1(function(resolve) {
+      resolve(value);
+    });
+  };
+
+  Promise$1.reject = function(value) {
+    return new Promise$1(function(resolve, reject) {
+      reject(value);
+    });
+  };
+
+  Promise$1.race = function(values) {
+    return new Promise$1(function(resolve, reject) {
+      for (var i = 0, len = values.length; i < len; i++) {
+        values[i].then(resolve, reject);
+      }
+    });
+  };
+
+  // Use polyfill for setImmediate for performance gains
+  Promise$1._immediateFn =
+    (typeof setImmediate === 'function' &&
+      function(fn) {
+        setImmediate(fn);
+      }) ||
+    function(fn) {
+      setTimeoutFunc(fn, 0);
+    };
+
+  Promise$1._unhandledRejectionFn = function _unhandledRejectionFn(err) {
+    if (typeof console !== 'undefined' && console) {
+      console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
+    }
+  };
+
+  var Exports =
+  /*#__PURE__*/
+  function () {
+    function Exports(ctx) {
+      _classCallCheck(this, Exports);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    }
+
+    _createClass(Exports, [{
+      key: "getSvgString",
+      value: function getSvgString() {
+        return this.w.globals.dom.Paper.svg();
+      }
+    }, {
+      key: "cleanup",
+      value: function cleanup() {
+        var w = this.w; // hide some elements to avoid printing them on exported svg
+
+        var xcrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs');
+        var ycrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs');
+
+        if (xcrosshairs) {
+          xcrosshairs.setAttribute('x', -500);
+        }
+
+        if (ycrosshairs) {
+          ycrosshairs.setAttribute('y1', -100);
+          ycrosshairs.setAttribute('y2', -100);
+        }
+      }
+    }, {
+      key: "svgUrl",
+      value: function svgUrl() {
+        this.cleanup();
+        var svgData = this.getSvgString();
+        var svgBlob = new Blob([svgData], {
+          type: 'image/svg+xml;charset=utf-8'
+        });
+        return URL.createObjectURL(svgBlob);
+      }
+    }, {
+      key: "dataURI",
+      value: function dataURI() {
+        var _this = this;
+
+        return new Promise$1(function (resolve) {
+          var w = _this.w;
+
+          _this.cleanup();
+
+          var canvas = document.createElement('canvas');
+          canvas.width = w.globals.svgWidth;
+          canvas.height = w.globals.svgHeight;
+          var canvasBg = w.config.chart.background === 'transparent' ? '#fff' : w.config.chart.background;
+          var ctx = canvas.getContext('2d');
+          ctx.fillStyle = canvasBg;
+          ctx.fillRect(0, 0, canvas.width, canvas.height);
+          var DOMURL = window.URL || window.webkitURL || window;
+          var img = new Image();
+          img.crossOrigin = 'anonymous';
+
+          var svgData = _this.getSvgString();
+
+          var svgUrl = 'data:image/svg+xml,' + encodeURIComponent(svgData);
+
+          img.onload = function () {
+            ctx.drawImage(img, 0, 0);
+            DOMURL.revokeObjectURL(svgUrl);
+            var imgURI = canvas.toDataURL('image/png');
+            resolve(imgURI);
+          };
+
+          img.src = svgUrl;
+        });
+      }
+    }, {
+      key: "exportToSVG",
+      value: function exportToSVG() {
+        this.triggerDownload(this.svgUrl(), '.svg');
+      }
+    }, {
+      key: "exportToPng",
+      value: function exportToPng() {
+        var _this2 = this;
+
+        this.dataURI().then(function (imgURI) {
+          _this2.triggerDownload(imgURI, '.png');
+        });
+      }
+    }, {
+      key: "triggerDownload",
+      value: function triggerDownload(href, ext) {
+        var downloadLink = document.createElement('a');
+        downloadLink.href = href;
+        downloadLink.download = this.w.globals.chartID + ext;
+        document.body.appendChild(downloadLink);
+        downloadLink.click();
+        document.body.removeChild(downloadLink);
+      }
+    }]);
+
+    return Exports;
+  }();
+
+  /**
+   * ApexCharts Grid Class for drawing Cartesian Grid.
+   *
+   * @module Grid
+   **/
+
+  var Grid =
+  /*#__PURE__*/
+  function () {
+    function Grid(ctx) {
+      _classCallCheck(this, Grid);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      var w = this.w;
+      this.anim = new Animations(this.ctx);
+      this.xaxisLabels = w.globals.labels.slice();
+      this.animX = w.config.grid.xaxis.lines.animate && w.config.chart.animations.enabled;
+      this.animY = w.config.grid.yaxis.lines.animate && w.config.chart.animations.enabled;
+
+      if (w.globals.timelineLabels.length > 0) {
+        //  timeline labels are there
+        this.xaxisLabels = w.globals.timelineLabels.slice();
+      }
+    } // .when using sparklines or when showing no grid, we need to have a grid area which is reused at many places for other calculations as well
+
+
+    _createClass(Grid, [{
+      key: "drawGridArea",
+      value: function drawGridArea() {
+        var elGrid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+
+        if (elGrid === null) {
+          elGrid = graphics.group({
+            class: 'apexcharts-grid'
+          });
+        }
+
+        var elVerticalLine = graphics.drawLine(w.globals.padHorizontal, 1, w.globals.padHorizontal, w.globals.gridHeight, 'transparent');
+        var elHorzLine = graphics.drawLine(w.globals.padHorizontal, w.globals.gridHeight, w.globals.gridWidth, w.globals.gridHeight, 'transparent');
+        elGrid.add(elHorzLine);
+        elGrid.add(elVerticalLine);
+        return elGrid;
+      }
+    }, {
+      key: "drawGrid",
+      value: function drawGrid() {
+        var w = this.w;
+        var xAxis = new XAxis(this.ctx);
+        var yaxis = new YAxis(this.ctx);
+        var gl = this.w.globals;
+        var elgrid = null;
+
+        if (gl.axisCharts) {
+          if (w.config.grid.show) {
+            // grid is drawn after xaxis and yaxis are drawn
+            elgrid = this.renderGrid();
+            gl.dom.elGraphical.add(elgrid.el);
+            this.drawGridArea(elgrid.el);
+          } else {
+            var elgridArea = this.drawGridArea();
+            gl.dom.elGraphical.add(elgridArea);
+          }
+
+          if (elgrid !== null) {
+            xAxis.xAxisLabelCorrections(elgrid.xAxisTickWidth);
+          }
+
+          yaxis.setYAxisTextAlignments();
+        }
+      } // This mask will clip off overflowing graphics from the drawable area
+
+    }, {
+      key: "createGridMask",
+      value: function createGridMask() {
+        var w = this.w;
+        var gl = w.globals;
+        var graphics = new Graphics(this.ctx);
+        var strokeSize = Array.isArray(w.config.stroke.width) ? 0 : w.config.stroke.width;
+
+        if (Array.isArray(w.config.stroke.width)) {
+          var strokeMaxSize = 0;
+          w.config.stroke.width.forEach(function (m) {
+            strokeMaxSize = Math.max(strokeMaxSize, m);
+          });
+          strokeSize = strokeMaxSize;
+        }
+
+        gl.dom.elGridRectMask = document.createElementNS(gl.SVGNS, 'clipPath');
+        gl.dom.elGridRectMask.setAttribute('id', "gridRectMask".concat(gl.cuid));
+        gl.dom.elGridRectMarkerMask = document.createElementNS(gl.SVGNS, 'clipPath');
+        gl.dom.elGridRectMarkerMask.setAttribute('id', "gridRectMarkerMask".concat(gl.cuid));
+        gl.dom.elGridRect = graphics.drawRect(-strokeSize / 2, -strokeSize / 2, gl.gridWidth + strokeSize, gl.gridHeight + strokeSize, 0, '#fff');
+        var coreUtils = new CoreUtils(this);
+        coreUtils.getLargestMarkerSize();
+        var markerSize = w.globals.markers.largestSize + 1;
+        gl.dom.elGridRectMarker = graphics.drawRect(-markerSize, -markerSize, gl.gridWidth + markerSize * 2, gl.gridHeight + markerSize * 2, 0, '#fff');
+        gl.dom.elGridRectMask.appendChild(gl.dom.elGridRect.node);
+        gl.dom.elGridRectMarkerMask.appendChild(gl.dom.elGridRectMarker.node);
+        var defs = gl.dom.baseEl.querySelector('defs');
+        defs.appendChild(gl.dom.elGridRectMask);
+        defs.appendChild(gl.dom.elGridRectMarkerMask);
+      } // actual grid rendering
+
+    }, {
+      key: "renderGrid",
+      value: function renderGrid() {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var strokeDashArray = w.config.grid.strokeDashArray;
+        var elg = graphics.group({
+          class: 'apexcharts-grid'
+        });
+        var elgridLinesH = graphics.group({
+          class: 'apexcharts-gridlines-horizontal'
+        });
+        var elgridLinesV = graphics.group({
+          class: 'apexcharts-gridlines-vertical'
+        });
+        elg.add(elgridLinesH);
+        elg.add(elgridLinesV);
+        var tickAmount = 8;
+
+        for (var i = 0; i < w.globals.series.length; i++) {
+          if (typeof w.globals.yAxisScale[i] !== 'undefined') {
+            tickAmount = w.globals.yAxisScale[i].result.length - 1;
+          }
+
+          if (tickAmount > 2) break;
+        }
+
+        var xCount;
+
+        if (!w.globals.isBarHorizontal) {
+          xCount = this.xaxisLabels.length; // draw vertical lines
+
+          if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) {
+            var x1 = w.globals.padHorizontal;
+            var y1 = 0;
+            var x2;
+            var y2 = w.globals.gridHeight;
+
+            if (w.globals.timelineLabels.length > 0) {
+              for (var _i = 0; _i < xCount; _i++) {
+                x1 = this.xaxisLabels[_i].position;
+                x2 = this.xaxisLabels[_i].position;
+
+                if (w.config.grid.xaxis.lines.show && x1 > 0 && x1 < w.globals.gridWidth) {
+                  var line = graphics.drawLine(x1, y1, x2, y2, w.config.grid.borderColor, strokeDashArray);
+                  line.node.classList.add('apexcharts-gridline');
+                  elgridLinesV.add(line);
+
+                  if (this.animX) {
+                    this.animateLine(line, {
+                      x1: 0,
+                      x2: 0
+                    }, {
+                      x1: x1,
+                      x2: x2
+                    });
+                  }
+                }
+
+                var xAxis = new XAxis(this.ctx);
+
+                if (_i === xCount - 1) {
+                  if (!w.globals.skipLastTimelinelabel) {
+                    // skip drawing last label here
+                    xAxis.drawXaxisTicks(x1, elg);
+                  }
+                } else {
+                  xAxis.drawXaxisTicks(x1, elg);
+                }
+              }
+            } else {
+              var xCountForCategoryCharts = xCount;
+
+              for (var _i2 = 0; _i2 < xCountForCategoryCharts; _i2++) {
+                var x1Count = xCountForCategoryCharts;
+
+                if (w.globals.isXNumeric && w.config.chart.type !== 'bar') {
+                  x1Count -= 1;
+                }
+
+                x1 = x1 + w.globals.gridWidth / x1Count;
+                x2 = x1; // skip the last line
+
+                if (_i2 === x1Count - 1) break;
+
+                if (w.config.grid.xaxis.lines.show) {
+                  var _line = graphics.drawLine(x1, y1, x2, y2, w.config.grid.borderColor, strokeDashArray);
+
+                  _line.node.classList.add('apexcharts-gridline');
+
+                  elgridLinesV.add(_line);
+
+                  if (this.animX) {
+                    this.animateLine(_line, {
+                      x1: 0,
+                      x2: 0
+                    }, {
+                      x1: x1,
+                      x2: x2
+                    });
+                  }
+                }
+
+                var _xAxis = new XAxis(this.ctx);
+
+                _xAxis.drawXaxisTicks(x1, elg);
+              }
+            }
+          } // draw horizontal lines
+
+
+          if (w.config.grid.yaxis.lines.show) {
+            var _x = 0;
+            var _y = 0;
+            var _y2 = 0;
+            var _x2 = w.globals.gridWidth;
+
+            for (var _i3 = 0; _i3 < tickAmount + 1; _i3++) {
+              var _line2 = graphics.drawLine(_x, _y, _x2, _y2, w.config.grid.borderColor, strokeDashArray);
+
+              elgridLinesH.add(_line2);
+
+              _line2.node.classList.add('apexcharts-gridline');
+
+              if (this.animY) {
+                this.animateLine(_line2, {
+                  y1: _y + 20,
+                  y2: _y2 + 20
+                }, {
+                  y1: _y,
+                  y2: _y2
+                });
+              }
+
+              _y = _y + w.globals.gridHeight / tickAmount;
+              _y2 = _y;
+            }
+          }
+        } else {
+          xCount = tickAmount; // draw vertical lines
+
+          if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) {
+            var _x3 = w.globals.padHorizontal;
+            var _y3 = 0;
+
+            var _x4;
+
+            var _y4 = w.globals.gridHeight;
+
+            for (var _i4 = 0; _i4 < xCount + 1; _i4++) {
+              _x3 = _x3 + w.globals.gridWidth / xCount + 0.3;
+              _x4 = _x3; // skip the last vertical line
+
+              if (_i4 === xCount - 1) break;
+
+              if (w.config.grid.xaxis.lines.show) {
+                var _line3 = graphics.drawLine(_x3, _y3, _x4, _y4, w.config.grid.borderColor, strokeDashArray);
+
+                _line3.node.classList.add('apexcharts-gridline');
+
+                elgridLinesV.add(_line3);
+
+                if (this.animX) {
+                  this.animateLine(_line3, {
+                    x1: 0,
+                    x2: 0
+                  }, {
+                    x1: _x3,
+                    x2: _x4
+                  });
+                }
+              } // skip the first vertical line
+
+
+              var _xAxis2 = new XAxis(this.ctx);
+
+              _xAxis2.drawXaxisTicks(_x3, elg);
+            }
+          } // draw horizontal lines
+
+
+          if (w.config.grid.yaxis.lines.show) {
+            var _x5 = 0;
+            var _y5 = 0;
+            var _y6 = 0;
+            var _x6 = w.globals.gridWidth;
+
+            for (var _i5 = 0; _i5 < w.globals.dataPoints + 1; _i5++) {
+              var _line4 = graphics.drawLine(_x5, _y5, _x6, _y6, w.config.grid.borderColor, strokeDashArray);
+
+              elgridLinesH.add(_line4);
+
+              _line4.node.classList.add('apexcharts-gridline');
+
+              if (this.animY) {
+                this.animateLine(_line4, {
+                  y1: _y5 + 20,
+                  y2: _y6 + 20
+                }, {
+                  y1: _y5,
+                  y2: _y6
+                });
+              }
+
+              _y5 = _y5 + w.globals.gridHeight / w.globals.dataPoints;
+              _y6 = _y5;
+            }
+          }
+        }
+
+        this.drawGridBands(elg, xCount, tickAmount);
+        return {
+          el: elg,
+          xAxisTickWidth: w.globals.gridWidth / xCount
+        };
+      }
+    }, {
+      key: "drawGridBands",
+      value: function drawGridBands(elg, xCount, tickAmount) {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx); // rows background bands
+
+        if (w.config.grid.row.colors !== undefined && w.config.grid.row.colors.length > 0) {
+          var x1 = 0;
+          var y1 = 0;
+          var y2 = w.globals.gridHeight / tickAmount;
+          var x2 = w.globals.gridWidth;
+
+          for (var i = 0, c = 0; i < tickAmount; i++, c++) {
+            if (c >= w.config.grid.row.colors.length) {
+              c = 0;
+            }
+
+            var color = w.config.grid.row.colors[c];
+            var rect = graphics.drawRect(x1, y1, x2, y2, 0, color, w.config.grid.row.opacity);
+            elg.add(rect);
+            rect.node.classList.add('apexcharts-gridRow');
+            y1 = y1 + w.globals.gridHeight / tickAmount;
+          }
+        } // columns background bands
+
+
+        if (w.config.grid.column.colors !== undefined && w.config.grid.column.colors.length > 0) {
+          var _x7 = w.globals.padHorizontal;
+          var _y7 = 0;
+
+          var _x8 = w.globals.padHorizontal + w.globals.gridWidth / xCount;
+
+          var _y8 = w.globals.gridHeight;
+
+          for (var _i6 = 0, _c = 0; _i6 < xCount; _i6++, _c++) {
+            if (_c >= w.config.grid.column.colors.length) {
+              _c = 0;
+            }
+
+            var _color = w.config.grid.column.colors[_c];
+
+            var _rect = graphics.drawRect(_x7, _y7, _x8, _y8, 0, _color, w.config.grid.column.opacity);
+
+            _rect.node.classList.add('apexcharts-gridColumn');
+
+            elg.add(_rect);
+            _x7 = _x7 + w.globals.gridWidth / xCount;
+          }
+        }
+      }
+    }, {
+      key: "animateLine",
+      value: function animateLine(line, from, to) {
+        var w = this.w;
+        var initialAnim = w.config.chart.animations;
+
+        if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {
+          var speed = initialAnim.speed;
+          this.anim.animateLine(line, from, to, speed);
+        }
+      }
+    }]);
+
+    return Grid;
+  }();
+
+  /**
+   * ApexCharts Legend Class to draw legend.
+   *
+   * @module Legend
+   **/
+
+  var Legend =
+  /*#__PURE__*/
+  function () {
+    function Legend(ctx, opts) {
+      _classCallCheck(this, Legend);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.onLegendClick = this.onLegendClick.bind(this);
+      this.onLegendHovered = this.onLegendHovered.bind(this);
+    }
+
+    _createClass(Legend, [{
+      key: "init",
+      value: function init() {
+        var w = this.w;
+        var gl = w.globals;
+        var cnf = w.config;
+        var showLegendAlways = cnf.legend.showForSingleSeries && gl.series.length === 1 || gl.series.length > 1;
+
+        if ((showLegendAlways || !gl.axisCharts) && cnf.legend.show) {
+          while (gl.dom.elLegendWrap.firstChild) {
+            gl.dom.elLegendWrap.removeChild(gl.dom.elLegendWrap.firstChild);
+          }
+
+          this.drawLegends();
+
+          if (!Utils.isIE11()) {
+            this.appendToForeignObject();
+          } else {
+            // IE11 doesn't supports foreignObject, hence append it to <head>
+            document.getElementsByTagName('head')[0].appendChild(this.getLegendStyles());
+          }
+
+          if (cnf.legend.position === 'bottom' || cnf.legend.position === 'top') {
+            this.legendAlignHorizontal();
+          } else if (cnf.legend.position === 'right' || cnf.legend.position === 'left') {
+            this.legendAlignVertical();
+          }
+        }
+      }
+    }, {
+      key: "appendToForeignObject",
+      value: function appendToForeignObject() {
+        var gl = this.w.globals;
+        var elForeign = document.createElementNS(gl.SVGNS, 'foreignObject');
+        elForeign.setAttribute('x', 0);
+        elForeign.setAttribute('y', 0);
+        elForeign.setAttribute('width', gl.svgWidth);
+        elForeign.setAttribute('height', gl.svgHeight);
+        gl.dom.elLegendWrap.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
+        elForeign.appendChild(gl.dom.elLegendWrap);
+        elForeign.appendChild(this.getLegendStyles());
+        gl.dom.Paper.node.insertBefore(elForeign, gl.dom.elGraphical.node);
+      }
+    }, {
+      key: "drawLegends",
+      value: function drawLegends() {
+        var self = this;
+        var w = this.w;
+        var fontFamily = w.config.legend.fontFamily;
+        var legendNames = w.globals.seriesNames;
+        var fillcolor = w.globals.colors.slice();
+
+        if (w.config.chart.type === 'heatmap') {
+          var ranges = w.config.plotOptions.heatmap.colorScale.ranges;
+          legendNames = ranges.map(function (colorScale) {
+            return colorScale.name ? colorScale.name : colorScale.from + ' - ' + colorScale.to;
+          });
+          fillcolor = ranges.map(function (color) {
+            return color.color;
+          });
+        }
+
+        var legendFormatter = w.globals.legendFormatter;
+
+        for (var i = 0; i <= legendNames.length - 1; i++) {
+          var text = legendFormatter(legendNames[i], {
+            seriesIndex: i,
+            w: w
+          });
+          var collapsedSeries = false;
+          var ancillaryCollapsedSeries = false;
+
+          if (w.globals.collapsedSeries.length > 0) {
+            for (var c = 0; c < w.globals.collapsedSeries.length; c++) {
+              if (w.globals.collapsedSeries[c].index === i) {
+                collapsedSeries = true;
+              }
+            }
+          }
+
+          if (w.globals.ancillaryCollapsedSeriesIndices.length > 0) {
+            for (var _c = 0; _c < w.globals.ancillaryCollapsedSeriesIndices.length; _c++) {
+              if (w.globals.ancillaryCollapsedSeriesIndices[_c] === i) {
+                ancillaryCollapsedSeries = true;
+              }
+            }
+          }
+
+          var elMarker = document.createElement('span');
+          elMarker.classList.add('apexcharts-legend-marker');
+          var mOffsetX = w.config.legend.markers.offsetX;
+          var mOffsetY = w.config.legend.markers.offsetY;
+          var mHeight = w.config.legend.markers.height;
+          var mWidth = w.config.legend.markers.width;
+          var mBorderWidth = w.config.legend.markers.strokeWidth;
+          var mBorderColor = w.config.legend.markers.strokeColor;
+          var mBorderRadius = w.config.legend.markers.radius;
+          var mStyle = elMarker.style;
+          mStyle.background = fillcolor[i];
+          mStyle.color = fillcolor[i];
+          mStyle.height = Array.isArray(mHeight) ? parseFloat(mHeight[i]) + 'px' : parseFloat(mHeight) + 'px';
+          mStyle.width = Array.isArray(mWidth) ? parseFloat(mWidth[i]) + 'px' : parseFloat(mWidth) + 'px';
+          mStyle.left = Array.isArray(mOffsetX) ? mOffsetX[i] : mOffsetX;
+          mStyle.top = Array.isArray(mOffsetY) ? mOffsetY[i] : mOffsetY;
+          mStyle.borderWidth = Array.isArray(mBorderWidth) ? mBorderWidth[i] : mBorderWidth;
+          mStyle.borderColor = Array.isArray(mBorderColor) ? mBorderColor[i] : mBorderColor;
+          mStyle.borderRadius = Array.isArray(mBorderRadius) ? parseFloat(mBorderRadius[i]) + 'px' : parseFloat(mBorderRadius) + 'px';
+
+          if (w.config.legend.markers.customHTML) {
+            if (Array.isArray(w.config.legend.markers.customHTML)) {
+              elMarker.innerHTML = w.config.legend.markers.customHTML[i]();
+            } else {
+              elMarker.innerHTML = w.config.legend.markers.customHTML();
+            }
+          }
+
+          Graphics.setAttrs(elMarker, {
+            rel: i + 1,
+            'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+          });
+
+          if (collapsedSeries || ancillaryCollapsedSeries) {
+            elMarker.classList.add('inactive-legend');
+          }
+
+          var elLegend = document.createElement('div');
+          var elLegendText = document.createElement('span');
+          elLegendText.classList.add('apexcharts-legend-text');
+          elLegendText.innerHTML = text;
+          var textColor = w.config.legend.labels.useSeriesColors ? w.globals.colors[i] : w.config.legend.labels.colors;
+
+          if (!textColor) {
+            textColor = w.config.chart.foreColor;
+          }
+
+          elLegendText.style.color = textColor;
+          elLegendText.style.fontSize = parseFloat(w.config.legend.fontSize) + 'px';
+          elLegendText.style.fontFamily = fontFamily || w.config.chart.fontFamily;
+          Graphics.setAttrs(elLegendText, {
+            rel: i + 1,
+            'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+          });
+          elLegend.appendChild(elMarker);
+          elLegend.appendChild(elLegendText);
+          var coreUtils = new CoreUtils(this.ctx);
+
+          if (!w.config.legend.showForZeroSeries) {
+            var total = coreUtils.getSeriesTotalByIndex(i);
+
+            if (total === 0 && coreUtils.seriesHaveSameValues(i) && !coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) {
+              elLegend.classList.add('apexcharts-hidden-zero-series');
+            }
+          }
+
+          if (!w.config.legend.showForNullSeries) {
+            if (coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) {
+              elLegend.classList.add('apexcharts-hidden-null-series');
+            }
+          }
+
+          w.globals.dom.elLegendWrap.appendChild(elLegend);
+          w.globals.dom.elLegendWrap.classList.add(w.config.legend.horizontalAlign); // w.globals.dom.elLegendWrap.classList.add(w.config.legend.verticalAlign)
+
+          w.globals.dom.elLegendWrap.classList.add('position-' + w.config.legend.position);
+          elLegend.classList.add('apexcharts-legend-series');
+          elLegend.style.margin = "".concat(w.config.legend.itemMargin.horizontal, "px ").concat(w.config.legend.itemMargin.vertical, "px");
+          w.globals.dom.elLegendWrap.style.width = w.config.legend.width ? w.config.legend.width + 'px' : '';
+          w.globals.dom.elLegendWrap.style.height = w.config.legend.height ? w.config.legend.height + 'px' : '';
+          Graphics.setAttrs(elLegend, {
+            rel: i + 1,
+            'data:collapsed': collapsedSeries || ancillaryCollapsedSeries
+          });
+
+          if (collapsedSeries || ancillaryCollapsedSeries) {
+            elLegend.classList.add('inactive-legend');
+          }
+
+          if (!w.config.legend.onItemClick.toggleDataSeries) {
+            elLegend.classList.add('no-click');
+          }
+        } // for now - just prevent click on heatmap legend - and allow hover only
+
+
+        var clickAllowed = w.config.chart.type !== 'heatmap';
+
+        if (clickAllowed && w.config.legend.onItemClick.toggleDataSeries) {
+          w.globals.dom.elWrap.addEventListener('click', self.onLegendClick, true);
+        }
+
+        if (w.config.legend.onItemHover.highlightDataSeries) {
+          w.globals.dom.elWrap.addEventListener('mousemove', self.onLegendHovered, true);
+          w.globals.dom.elWrap.addEventListener('mouseout', self.onLegendHovered, true);
+        }
+      }
+    }, {
+      key: "getLegendBBox",
+      value: function getLegendBBox() {
+        var w = this.w;
+        var currLegendsWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+        var currLegendsWrapRect = currLegendsWrap.getBoundingClientRect();
+        var currLegendsWrapWidth = currLegendsWrapRect.width;
+        var currLegendsWrapHeight = currLegendsWrapRect.height;
+        return {
+          clwh: currLegendsWrapHeight,
+          clww: currLegendsWrapWidth
+        };
+      }
+    }, {
+      key: "setLegendWrapXY",
+      value: function setLegendWrapXY(offsetX, offsetY) {
+        var w = this.w;
+        var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+        var legendRect = elLegendWrap.getBoundingClientRect();
+        var x = 0;
+        var y = 0;
+
+        if (w.config.legend.position === 'bottom') {
+          y = y + (w.globals.svgHeight - legendRect.height / 2);
+        } else if (w.config.legend.position === 'top') {
+          var dim = new Dimensions(this.ctx);
+          var titleH = dim.getTitleSubtitleCoords('title').height;
+          var subtitleH = dim.getTitleSubtitleCoords('subtitle').height;
+          y = y + (titleH > 0 ? titleH - 10 : 0) + (subtitleH > 0 ? subtitleH - 10 : 0);
+        }
+
+        elLegendWrap.style.position = 'absolute';
+        x = x + offsetX + w.config.legend.offsetX;
+        y = y + offsetY + w.config.legend.offsetY;
+        elLegendWrap.style.left = x + 'px';
+        elLegendWrap.style.top = y + 'px';
+
+        if (w.config.legend.position === 'bottom') {
+          elLegendWrap.style.top = 'auto';
+          elLegendWrap.style.bottom = 10 + w.config.legend.offsetY + 'px';
+        } else if (w.config.legend.position === 'right') {
+          elLegendWrap.style.left = 'auto';
+          elLegendWrap.style.right = 25 + w.config.legend.offsetX + 'px';
+        }
+
+        if (elLegendWrap.style.width) {
+          elLegendWrap.style.width = parseInt(w.config.legend.width) + 'px';
+        }
+
+        if (elLegendWrap.style.height) {
+          elLegendWrap.style.height = parseInt(w.config.legend.height) + 'px';
+        }
+      }
+    }, {
+      key: "legendAlignHorizontal",
+      value: function legendAlignHorizontal() {
+        var w = this.w;
+        var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');
+        elLegendWrap.style.right = 0;
+        var lRect = this.getLegendBBox();
+        var dimensions = new Dimensions(this.ctx);
+        var titleRect = dimensions.getTitleSubtitleCoords('title');
+        var subtitleRect = dimensions.getTitleSubtitleCoords('subtitle');
+        var offsetX = 20;
+        var offsetY = 0; // the whole legend box is set to bottom
+
+        if (w.config.legend.position === 'bottom') {
+          offsetY = -lRect.clwh / 1.8;
+        } else if (w.config.legend.position === 'top') {
+          offsetY = titleRect.height + subtitleRect.height + w.config.title.margin + w.config.subtitle.margin - 15;
+        }
+
+        this.setLegendWrapXY(offsetX, offsetY);
+      }
+    }, {
+      key: "legendAlignVertical",
+      value: function legendAlignVertical() {
+        var w = this.w;
+        var lRect = this.getLegendBBox();
+        var offsetY = 20;
+        var offsetX = 0;
+
+        if (w.config.legend.position === 'left') {
+          offsetX = 20;
+        }
+
+        if (w.config.legend.position === 'right') {
+          offsetX = w.globals.svgWidth - lRect.clww - 10;
+        }
+
+        this.setLegendWrapXY(offsetX, offsetY);
+      }
+    }, {
+      key: "onLegendHovered",
+      value: function onLegendHovered(e) {
+        var w = this.w;
+        var hoverOverLegend = e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker');
+
+        if (w.config.chart.type !== 'heatmap') {
+          if (!e.target.classList.contains('inactive-legend') && hoverOverLegend) {
+            var series = new Series(this.ctx);
+            series.toggleSeriesOnHover(e, e.target);
+          }
+        } else {
+          // for heatmap handling
+          if (hoverOverLegend) {
+            var seriesCnt = parseInt(e.target.getAttribute('rel')) - 1;
+            this.ctx.fireEvent('legendHover', [this.ctx, seriesCnt, this.w]);
+
+            var _series = new Series(this.ctx);
+
+            _series.highlightRangeInSeries(e, e.target);
+          }
+        }
+      }
+    }, {
+      key: "onLegendClick",
+      value: function onLegendClick(e) {
+        if (e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker')) {
+          var seriesCnt = parseInt(e.target.getAttribute('rel')) - 1;
+          var isHidden = e.target.getAttribute('data:collapsed') === 'true';
+          var legendClick = this.w.config.chart.events.legendClick;
+
+          if (typeof legendClick === 'function') {
+            legendClick(this.ctx, seriesCnt, this.w);
+          }
+
+          this.ctx.fireEvent('legendClick', [this.ctx, seriesCnt, this.w]);
+          var markerClick = this.w.config.legend.markers.onClick;
+
+          if (typeof markerClick === 'function' && e.target.classList.contains('apexcharts-legend-marker')) {
+            markerClick(this.ctx, seriesCnt, this.w);
+            this.ctx.fireEvent('legendMarkerClick', [this.ctx, seriesCnt, this.w]);
+          }
+
+          this.toggleDataSeries(seriesCnt, isHidden);
+        }
+      }
+    }, {
+      key: "getLegendStyles",
+      value: function getLegendStyles() {
+        var stylesheet = document.createElement('style');
+        stylesheet.setAttribute('type', 'text/css');
+        var text = "\n    \n      .apexcharts-legend {\n        display: flex;\n        overflow: auto;\n        padding: 0 10px;\n      }\n\n      .apexcharts-legend.position-bottom, .apexcharts-legend.position-top {\n        flex-wrap: wrap\n      }\n      .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n        flex-direction: column;\n        bottom: 0;\n      }\n\n      .apexcharts-legend.position-bottom.left, .apexcharts-legend.position-top.left, .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n        justify-content: flex-start;\n      }\n\n      .apexcharts-legend.position-bottom.center, .apexcharts-legend.position-top.center {\n        justify-content: center;  \n      }\n\n      .apexcharts-legend.position-bottom.right, .apexcharts-legend.position-top.right {\n        justify-content: flex-end;\n      }\n\n      .apexcharts-legend-series {\n        cursor: pointer;\n        line-height: normal;\n      }\n\n      .apexcharts-legend.position-bottom .apexcharts-legend-series, .apexcharts-legend.position-top .apexcharts-legend-series{\n        display: flex;\n        align-items: center;\n      }\n\n      .apexcharts-legend-text {\n        position: relative;\n        font-size: 14px;\n      }\n\n      .apexcharts-legend-text *, .apexcharts-legend-marker * {\n        pointer-events: none;\n      }\n\n      .apexcharts-legend-marker {\n        position: relative;\n        display: inline-block;\n        cursor: pointer;\n        margin-right: 3px;\n      }\n      \n      .apexcharts-legend.right .apexcharts-legend-series, .apexcharts-legend.left .apexcharts-legend-series{\n        display: inline-block;\n      }\n\n      .apexcharts-legend-series.no-click {\n        cursor: auto;\n      }\n\n      .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\n        display: none !important;\n      }\n\n      .inactive-legend {\n        opacity: 0.45;\n      }";
+        var rules = document.createTextNode(text);
+        stylesheet.appendChild(rules);
+        return stylesheet;
+      }
+    }, {
+      key: "resetToggleDataSeries",
+      value: function resetToggleDataSeries() {
+        var w = this.w;
+        var seriesEls = null;
+        var realIndexes = [];
+
+        if (w.globals.axisCharts) {
+          seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:realIndex]");
+          seriesEls = Utils.listToArray(seriesEls);
+          seriesEls.forEach(function (v) {
+            realIndexes.push(parseInt(v.getAttribute('data:realIndex')));
+          });
+        } else {
+          seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[rel]");
+          seriesEls = Utils.listToArray(seriesEls);
+          seriesEls.forEach(function (v) {
+            realIndexes.push(parseInt(v.getAttribute('rel')) - 1);
+          });
+        }
+
+        realIndexes.sort();
+
+        if (w.globals.collapsedSeries.length > 0) {
+          var risingSeries = w.globals.risingSeries.slice();
+          var series = w.config.series.slice();
+
+          for (var c = 0; c < w.globals.collapsedSeries.length; c++) {
+            var index = realIndexes.indexOf(w.globals.collapsedSeries[c].index);
+
+            if (index !== -1) {
+              if (w.globals.axisCharts) {
+                series[index].data = w.globals.collapsedSeries.slice()[c].data.slice();
+              } else {
+                series[index] = w.globals.collapsedSeries.slice()[c].data;
+              }
+
+              risingSeries.push(index);
+            }
+          }
+
+          w.globals.collapsedSeries = [];
+          w.globals.ancillaryCollapsedSeries = [];
+          w.globals.collapsedSeriesIndices = [];
+          w.globals.ancillaryCollapsedSeriesIndices = [];
+          w.globals.risingSeries = risingSeries;
+          w.config.series = series;
+
+          this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+        }
+      }
+    }, {
+      key: "toggleDataSeries",
+      value: function toggleDataSeries(seriesCnt, isHidden) {
+        var w = this.w;
+
+        if (w.globals.axisCharts || w.config.chart.type === 'radialBar') {
+          w.globals.resized = true; // we don't want initial animations again
+
+          var seriesEl = null;
+          var realIndex = null; // yes, make it null. 1 series will rise at a time
+
+          w.globals.risingSeries = [];
+
+          if (w.globals.axisCharts) {
+            seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesCnt, "']"));
+            realIndex = parseInt(seriesEl.getAttribute('data:realIndex'));
+          } else {
+            seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "']"));
+            realIndex = parseInt(seriesEl.getAttribute('rel')) - 1;
+          }
+
+          if (isHidden) {
+            this.riseCollapsedSeries(w.globals.collapsedSeries, w.globals.collapsedSeriesIndices, realIndex);
+            this.riseCollapsedSeries(w.globals.ancillaryCollapsedSeries, w.globals.ancillaryCollapsedSeriesIndices, realIndex);
+          } else {
+            if (w.globals.axisCharts) {
+              var shouldNotHideYAxis = false;
+
+              if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].show && w.config.yaxis[realIndex].showAlways) {
+                shouldNotHideYAxis = true;
+
+                if (w.globals.ancillaryCollapsedSeriesIndices.indexOf(realIndex) < 0) {
+                  w.globals.ancillaryCollapsedSeries.push({
+                    index: realIndex,
+                    data: w.config.series[realIndex].data.slice(),
+                    type: seriesEl.parentNode.className.baseVal.split('-')[1]
+                  });
+                  w.globals.ancillaryCollapsedSeriesIndices.push(realIndex);
+                }
+              }
+
+              if (!shouldNotHideYAxis) {
+                w.globals.collapsedSeries.push({
+                  index: realIndex,
+                  data: w.config.series[realIndex].data.slice(),
+                  type: seriesEl.parentNode.className.baseVal.split('-')[1]
+                });
+                w.globals.collapsedSeriesIndices.push(realIndex);
+                var removeIndexOfRising = w.globals.risingSeries.indexOf(realIndex);
+                w.globals.risingSeries.splice(removeIndexOfRising, 1);
+              } // TODO: AVOID mutating the user's config object below
+
+
+              w.config.series[realIndex].data = [];
+            } else {
+              w.globals.collapsedSeries.push({
+                index: realIndex,
+                data: w.config.series[realIndex]
+              });
+              w.globals.collapsedSeriesIndices.push(realIndex);
+              w.config.series[realIndex] = 0;
+            }
+
+            var seriesChildren = seriesEl.childNodes;
+
+            for (var sc = 0; sc < seriesChildren.length; sc++) {
+              if (seriesChildren[sc].classList.contains('apexcharts-series-markers-wrap')) {
+                if (seriesChildren[sc].classList.contains('apexcharts-hide')) {
+                  seriesChildren[sc].classList.remove('apexcharts-hide');
+                } else {
+                  seriesChildren[sc].classList.add('apexcharts-hide');
+                }
+              }
+            }
+
+            w.globals.allSeriesCollapsed = w.globals.collapsedSeries.length === w.globals.series.length;
+
+            this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+          }
+        } else {
+          // for non-axis charts i.e pie / donuts
+          var _seriesEl = w.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(seriesCnt + 1, "'] path"));
+
+          var type = w.config.chart.type;
+
+          if (type === 'pie' || type === 'donut') {
+            var dataLabels = w.config.plotOptions.pie.donut.labels;
+            var graphics = new Graphics(this.ctx);
+            var pie = new Pie(this.ctx);
+            graphics.pathMouseDown(_seriesEl.members[0], null);
+            pie.printDataLabelsInner(_seriesEl.members[0].node, dataLabels);
+          }
+
+          _seriesEl.fire('click');
+        }
+      }
+    }, {
+      key: "riseCollapsedSeries",
+      value: function riseCollapsedSeries(series, seriesIndices, realIndex) {
+        var w = this.w;
+
+        if (series.length > 0) {
+          for (var c = 0; c < series.length; c++) {
+            if (series[c].index === realIndex) {
+              if (w.globals.axisCharts) {
+                w.config.series[realIndex].data = series[c].data.slice();
+                series.splice(c, 1);
+                seriesIndices.splice(c, 1);
+                w.globals.risingSeries.push(realIndex);
+              } else {
+                w.config.series[realIndex] = series[c].data;
+                series.splice(c, 1);
+                seriesIndices.splice(c, 1);
+                w.globals.risingSeries.push(realIndex);
+              }
+
+              this.ctx._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);
+            }
+          }
+        }
+      }
+    }]);
+
+    return Legend;
+  }();
+
+  /**
+   * ApexCharts Responsive Class to override options for different screen sizes.
+   *
+   * @module Responsive
+   **/
+
+  var Responsive =
+  /*#__PURE__*/
+  function () {
+    function Responsive(ctx) {
+      _classCallCheck(this, Responsive);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    } // the opts parameter if not null has to be set overriding everything
+    // as the opts is set by user externally
+
+
+    _createClass(Responsive, [{
+      key: "checkResponsiveConfig",
+      value: function checkResponsiveConfig(opts) {
+        var _this = this;
+
+        var w = this.w;
+        var cnf = w.config; // check if responsive config exists
+
+        if (cnf.responsive.length === 0) return;
+        var res = cnf.responsive.slice();
+        res.sort(function (a, b) {
+          return a.breakpoint > b.breakpoint ? 1 : b.breakpoint > a.breakpoint ? -1 : 0;
+        }).reverse();
+        var config = new Config({});
+
+        var iterateResponsiveOptions = function iterateResponsiveOptions() {
+          var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+          var largestBreakpoint = res[0].breakpoint;
+          var width = window.innerWidth > 0 ? window.innerWidth : screen.width;
+
+          if (width > largestBreakpoint) {
+            var options = CoreUtils.extendArrayProps(config, w.globals.initialConfig);
+            newOptions = Utils.extend(options, newOptions);
+            newOptions = Utils.extend(w.config, newOptions);
+
+            _this.overrideResponsiveOptions(newOptions);
+          } else {
+            for (var i = 0; i < res.length; i++) {
+              if (width < res[i].breakpoint) {
+                newOptions = CoreUtils.extendArrayProps(config, res[i].options);
+                newOptions = Utils.extend(w.config, newOptions);
+
+                _this.overrideResponsiveOptions(newOptions);
+              }
+            }
+          }
+        };
+
+        if (opts) {
+          var options = CoreUtils.extendArrayProps(config, opts);
+          options = Utils.extend(w.config, options);
+          options = Utils.extend(options, opts);
+          iterateResponsiveOptions(options);
+        } else {
+          iterateResponsiveOptions({});
+        }
+      }
+    }, {
+      key: "overrideResponsiveOptions",
+      value: function overrideResponsiveOptions(newOptions) {
+        var newConfig = new Config(newOptions).init();
+        this.w.config = newConfig;
+      }
+    }]);
+
+    return Responsive;
+  }();
+
+  /**
+   * ApexCharts Theme Class for setting the colors and palettes.
+   *
+   * @module Theme
+   **/
+
+  var Theme =
+  /*#__PURE__*/
+  function () {
+    function Theme(ctx) {
+      _classCallCheck(this, Theme);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.colors = [];
+    }
+
+    _createClass(Theme, [{
+      key: "init",
+      value: function init() {
+        this.setDefaultColors();
+      }
+    }, {
+      key: "setDefaultColors",
+      value: function setDefaultColors() {
+        var w = this.w;
+        var utils = new Utils();
+        w.globals.dom.elWrap.classList.add(w.config.theme.mode);
+
+        if (w.config.colors === undefined) {
+          w.globals.colors = this.predefined();
+        } else {
+          w.globals.colors = w.config.colors;
+        }
+
+        if (w.config.theme.monochrome.enabled) {
+          var monoArr = [];
+          var glsCnt = w.globals.series.length;
+
+          if (w.config.plotOptions.bar.distributed && w.config.chart.type === 'bar') {
+            glsCnt = w.globals.series[0].length * w.globals.series.length;
+          }
+
+          var mainColor = w.config.theme.monochrome.color;
+          var part = 1 / (glsCnt / w.config.theme.monochrome.shadeIntensity);
+          var shade = w.config.theme.monochrome.shadeTo;
+          var percent = 0;
+
+          for (var gsl = 0; gsl < glsCnt; gsl++) {
+            var newColor = void 0;
+
+            if (shade === 'dark') {
+              newColor = utils.shadeColor(percent * -1, mainColor);
+              percent = percent + part;
+            } else {
+              newColor = utils.shadeColor(percent, mainColor);
+              percent = percent + part;
+            }
+
+            monoArr.push(newColor);
+          }
+
+          w.globals.colors = monoArr.slice();
+        }
+
+        var defaultColors = w.globals.colors.slice(); // if user specfied less colors than no. of series, push the same colors again
+
+        this.pushExtraColors(w.globals.colors); // The Border colors
+
+        if (w.config.stroke.colors === undefined) {
+          w.globals.stroke.colors = defaultColors;
+        } else {
+          w.globals.stroke.colors = w.config.stroke.colors;
+        }
+
+        this.pushExtraColors(w.globals.stroke.colors); // The FILL colors
+
+        if (w.config.fill.colors === undefined) {
+          w.globals.fill.colors = defaultColors;
+        } else {
+          w.globals.fill.colors = w.config.fill.colors;
+        }
+
+        this.pushExtraColors(w.globals.fill.colors);
+
+        if (w.config.dataLabels.style.colors === undefined) {
+          w.globals.dataLabels.style.colors = defaultColors;
+        } else {
+          w.globals.dataLabels.style.colors = w.config.dataLabels.style.colors;
+        }
+
+        this.pushExtraColors(w.globals.dataLabels.style.colors, 50);
+
+        if (w.config.plotOptions.radar.polygons.fill.colors === undefined) {
+          w.globals.radarPolygons.fill.colors = [w.config.theme.mode === 'dark' ? '#202D48' : '#fff'];
+        } else {
+          w.globals.radarPolygons.fill.colors = w.config.plotOptions.radar.polygons.fill.colors;
+        }
+
+        this.pushExtraColors(w.globals.radarPolygons.fill.colors, 20); // The point colors
+
+        if (w.config.markers.colors === undefined) {
+          w.globals.markers.colors = defaultColors;
+        } else {
+          w.globals.markers.colors = w.config.markers.colors;
+        }
+
+        this.pushExtraColors(w.globals.markers.colors);
+      } // When the number of colors provided is less than the number of series, this method
+      // will push same colors to the list
+      // params:
+      // distributed is only valid for distributed column/bar charts
+
+    }, {
+      key: "pushExtraColors",
+      value: function pushExtraColors(colorSeries, length) {
+        var distributed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+        var w = this.w;
+        var len = length || w.globals.series.length;
+
+        if (distributed === null) {
+          distributed = w.config.chart.type === 'bar' && w.config.plotOptions.bar.distributed || w.config.chart.type === 'heatmap' && w.config.plotOptions.heatmap.colorScale.inverse;
+        }
+
+        if (distributed) {
+          len = w.globals.series[0].length * w.globals.series.length;
+        }
+
+        if (colorSeries.length < len) {
+          var diff = len - colorSeries.length;
+
+          for (var i = 0; i < diff; i++) {
+            colorSeries.push(colorSeries[i]);
+          }
+        }
+      }
+    }, {
+      key: "updateThemeOptions",
+      value: function updateThemeOptions(options) {
+        options.chart = options.chart || {};
+        options.tooltip = options.tooltip || {};
+        var mode = options.theme.mode || 'light';
+        var palette = options.theme.palette ? options.theme.palette : mode === 'dark' ? 'palette4' : 'palette1';
+        var foreColor = options.chart.foreColor ? options.chart.foreColor : mode === 'dark' ? '#f6f7f8' : '#373d3f';
+        options.tooltip.theme = mode;
+        options.chart.foreColor = foreColor;
+        options.theme.palette = palette;
+        return options;
+      }
+    }, {
+      key: "predefined",
+      value: function predefined() {
+        var palette = this.w.config.theme.palette; // D6E3F8, FCEFEF, DCE0D9, A5978B, EDDDD4, D6E3F8, FEF5EF
+
+        switch (palette) {
+          case 'palette1':
+            this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'];
+            break;
+
+          case 'palette2':
+            this.colors = ['#3f51b5', '#03a9f4', '#4caf50', '#f9ce1d', '#FF9800'];
+            break;
+
+          case 'palette3':
+            this.colors = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B'];
+            break;
+
+          case 'palette4':
+            this.colors = ['#4ecdc4', '#c7f464', '#81D4FA', '#fd6a6a', '#546E7A'];
+            break;
+
+          case 'palette5':
+            this.colors = ['#2b908f', '#f9a3a4', '#90ee7e', '#fa4443', '#69d2e7'];
+            break;
+
+          case 'palette6':
+            this.colors = ['#449DD1', '#F86624', '#EA3546', '#662E9B', '#C5D86D'];
+            break;
+
+          case 'palette7':
+            this.colors = ['#D7263D', '#1B998B', '#2E294E', '#F46036', '#E2C044'];
+            break;
+
+          case 'palette8':
+            this.colors = ['#662E9B', '#F86624', '#F9C80E', '#EA3546', '#43BCCD'];
+            break;
+
+          case 'palette9':
+            this.colors = ['#5C4742', '#A5978B', '#8D5B4C', '#5A2A27', '#C4BBAF'];
+            break;
+
+          case 'palette10':
+            this.colors = ['#A300D6', '#7D02EB', '#5653FE', '#2983FF', '#00B1F2'];
+            break;
+
+          default:
+            this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'];
+            break;
+        }
+
+        return this.colors;
+      }
+    }]);
+
+    return Theme;
+  }();
+
+  var Utils$1 =
+  /*#__PURE__*/
+  function () {
+    function Utils(tooltipContext) {
+      _classCallCheck(this, Utils);
+
+      this.w = tooltipContext.w;
+      this.ttCtx = tooltipContext;
+      this.ctx = tooltipContext.ctx;
+    }
+    /**
+     ** When hovering over series, you need to capture which series is being hovered on.
+     ** This function will return both capturedseries index as well as inner index of that series
+     * @memberof Utils
+     * @param {object}
+     * - hoverArea = the rect on which user hovers
+     * - elGrid = dimensions of the hover rect (it can be different than hoverarea)
+     */
+
+
+    _createClass(Utils, [{
+      key: "getNearestValues",
+      value: function getNearestValues(_ref) {
+        var hoverArea = _ref.hoverArea,
+            elGrid = _ref.elGrid,
+            clientX = _ref.clientX,
+            clientY = _ref.clientY,
+            hasBars = _ref.hasBars;
+        var w = this.w;
+        var hoverWidth = w.globals.gridWidth;
+        var xDivisor = hoverWidth / (w.globals.dataPoints - 1);
+        var seriesBound = elGrid.getBoundingClientRect();
+
+        if (hasBars && w.globals.comboCharts || hasBars) {
+          xDivisor = hoverWidth / w.globals.dataPoints;
+        }
+
+        var hoverX = clientX - seriesBound.left;
+        var hoverY = clientY - seriesBound.top;
+        var inRect = hoverX < 0 || hoverY < 0 || hoverX > w.globals.gridWidth || hoverY > w.globals.gridHeight;
+
+        if (inRect) {
+          hoverArea.classList.remove('hovering-zoom');
+          hoverArea.classList.remove('hovering-pan');
+        } else {
+          if (w.globals.zoomEnabled) {
+            hoverArea.classList.remove('hovering-pan');
+            hoverArea.classList.add('hovering-zoom');
+          } else if (w.globals.panEnabled) {
+            hoverArea.classList.remove('hovering-zoom');
+            hoverArea.classList.add('hovering-pan');
+          }
+        }
+
+        var j = Math.round(hoverX / xDivisor);
+
+        if (hasBars) {
+          j = Math.ceil(hoverX / xDivisor);
+          j = j - 1;
+        }
+
+        var capturedSeries = null;
+        var closest = null;
+        var seriesXValArr = [];
+        var seriesYValArr = [];
+
+        for (var s = 0; s < w.globals.seriesXvalues.length; s++) {
+          seriesXValArr.push([w.globals.seriesXvalues[s][0] - 0.000001].concat(w.globals.seriesXvalues[s]));
+        }
+
+        seriesXValArr = seriesXValArr.map(function (seriesXVal) {
+          return seriesXVal.filter(function (s) {
+            return s;
+          });
+        });
+        seriesYValArr = w.globals.seriesYvalues.map(function (seriesYVal) {
+          return seriesYVal.filter(function (s) {
+            return s;
+          });
+        }); // if X axis type is not category and tooltip is not shared, then we need to find the cursor position and get the nearest value
+
+        if (w.globals.isXNumeric) {
+          closest = this.closestInMultiArray(hoverX, hoverY, seriesXValArr, seriesYValArr);
+          capturedSeries = closest.index;
+          j = closest.j;
+
+          if (capturedSeries !== null) {
+            // initial push, it should be a little smaller than the 1st val
+            seriesXValArr = w.globals.seriesXvalues[capturedSeries];
+            closest = this.closestInArray(hoverX, seriesXValArr);
+            j = closest.index;
+          }
+        }
+
+        if (!j || j < 1) j = 0;
+        return {
+          capturedSeries: capturedSeries,
+          j: j,
+          hoverX: hoverX,
+          hoverY: hoverY
+        };
+      }
+    }, {
+      key: "closestInMultiArray",
+      value: function closestInMultiArray(hoverX, hoverY, Xarrays, Yarrays) {
+        var w = this.w;
+        var activeIndex = 0;
+        var currIndex = null;
+        var j = -1;
+
+        if (w.globals.series.length > 1) {
+          activeIndex = this.getFirstActiveXArray(Xarrays);
+        } else {
+          currIndex = 0;
+        }
+
+        var currY = Yarrays[activeIndex][0];
+        var currX = Xarrays[activeIndex][0];
+        var diffX = Math.abs(hoverX - currX);
+        var diffY = Math.abs(hoverY - currY);
+        var diff = diffY + diffX;
+        Yarrays.map(function (arrY, arrIndex) {
+          arrY.map(function (y, innerKey) {
+            var newdiffY = Math.abs(hoverY - Yarrays[arrIndex][innerKey]);
+            var newdiffX = Math.abs(hoverX - Xarrays[arrIndex][innerKey]);
+            var newdiff = newdiffX + newdiffY;
+
+            if (newdiff < diff) {
+              diff = newdiff;
+              diffX = newdiffX;
+              diffY = newdiffY;
+              currIndex = arrIndex;
+              j = innerKey;
+            }
+          });
+        });
+        return {
+          index: currIndex,
+          j: j
+        };
+      }
+    }, {
+      key: "getFirstActiveXArray",
+      value: function getFirstActiveXArray(Xarrays) {
+        var activeIndex = 0;
+        var coreUtils = new CoreUtils(this.ctx);
+        var firstActiveSeriesIndex = Xarrays.map(function (xarr, index) {
+          if (xarr.length > 0) {
+            return index;
+          } else {
+            return -1;
+          }
+        });
+
+        for (var a = 0; a < firstActiveSeriesIndex.length; a++) {
+          var total = coreUtils.getSeriesTotalByIndex(a);
+
+          if (firstActiveSeriesIndex[a] !== -1 && total !== 0 && !coreUtils.seriesHaveSameValues(a)) {
+            activeIndex = firstActiveSeriesIndex[a];
+            break;
+          }
+        }
+
+        return activeIndex;
+      }
+    }, {
+      key: "closestInArray",
+      value: function closestInArray(val, arr) {
+        var curr = arr[0];
+        var currIndex = null;
+        var diff = Math.abs(val - curr);
+
+        for (var i = 0; i < arr.length; i++) {
+          var newdiff = Math.abs(val - arr[i]);
+
+          if (newdiff < diff) {
+            diff = newdiff;
+            curr = arr[i];
+            currIndex = i;
+          }
+        }
+
+        return {
+          index: currIndex
+        };
+      }
+      /**
+       * When there are multiple series, it is possible to have different x values for each series.
+       * But it may be possible in those multiple series, that there is same x value for 2 or more
+       * series.
+       * @memberof Utils
+       * @param {int}
+       * - j = is the inner index of series -> (series[i][j])
+       * @return {bool}
+       */
+
+    }, {
+      key: "isXoverlap",
+      value: function isXoverlap(j) {
+        var w = this.w;
+        var xSameForAllSeriesJArr = [];
+        var seriesX = w.globals.seriesX.filter(function (s) {
+          return typeof s[0] !== 'undefined';
+        });
+
+        if (seriesX.length > 0) {
+          for (var i = 0; i < seriesX.length - 1; i++) {
+            if (typeof seriesX[i][j] !== 'undefined' && typeof seriesX[i + 1][j] !== 'undefined') {
+              if (seriesX[i][j] !== seriesX[i + 1][j]) {
+                xSameForAllSeriesJArr.push('unEqual');
+              }
+            }
+          }
+        }
+
+        if (xSameForAllSeriesJArr.length === 0) {
+          return true;
+        }
+
+        return false;
+      }
+    }, {
+      key: "isinitialSeriesSameLen",
+      value: function isinitialSeriesSameLen() {
+        var sameLen = true;
+        var initialSeries = this.w.globals.initialSeries;
+
+        for (var i = 0; i < initialSeries.length - 1; i++) {
+          if (initialSeries[i].data.length !== initialSeries[i + 1].data.length) {
+            sameLen = false;
+            break;
+          }
+        }
+
+        return sameLen;
+      }
+    }, {
+      key: "getBarsHeight",
+      value: function getBarsHeight(allbars) {
+        var bars = _toConsumableArray(allbars);
+
+        var totalHeight = bars.reduce(function (acc, bar) {
+          return acc + bar.getBBox().height;
+        }, 0);
+        return totalHeight;
+      }
+    }, {
+      key: "toggleAllTooltipSeriesGroups",
+      value: function toggleAllTooltipSeriesGroups(state) {
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+
+        if (ttCtx.allTooltipSeriesGroups.length === 0) {
+          ttCtx.allTooltipSeriesGroups = w.globals.dom.baseEl.querySelectorAll('.apexcharts-tooltip-series-group');
+        }
+
+        var allTooltipSeriesGroups = ttCtx.allTooltipSeriesGroups;
+
+        for (var i = 0; i < allTooltipSeriesGroups.length; i++) {
+          if (state === 'enable') {
+            allTooltipSeriesGroups[i].classList.add('active');
+            allTooltipSeriesGroups[i].style.display = w.config.tooltip.items.display;
+          } else {
+            allTooltipSeriesGroups[i].classList.remove('active');
+            allTooltipSeriesGroups[i].style.display = 'none';
+          }
+        }
+      }
+    }]);
+
+    return Utils;
+  }();
+
+  /**
+   * ApexCharts Tooltip.Labels Class to draw texts on the tooltip.
+   *
+   * @module Tooltip.Labels
+   **/
+
+  var Labels =
+  /*#__PURE__*/
+  function () {
+    function Labels(tooltipContext) {
+      _classCallCheck(this, Labels);
+
+      this.w = tooltipContext.w;
+      this.ctx = tooltipContext.ctx;
+      this.ttCtx = tooltipContext;
+      this.tooltipUtil = new Utils$1(tooltipContext);
+    }
+
+    _createClass(Labels, [{
+      key: "drawSeriesTexts",
+      value: function drawSeriesTexts(_ref) {
+        var _ref$shared = _ref.shared,
+            shared = _ref$shared === void 0 ? true : _ref$shared,
+            ttItems = _ref.ttItems,
+            _ref$i = _ref.i,
+            i = _ref$i === void 0 ? 0 : _ref$i,
+            _ref$j = _ref.j,
+            j = _ref$j === void 0 ? null : _ref$j;
+        var w = this.w;
+
+        if (w.config.tooltip.custom !== undefined) {
+          this.handleCustomTooltip({
+            i: i,
+            j: j
+          });
+        } else {
+          this.toggleActiveInactiveSeries(shared);
+        }
+
+        var values = this.getValuesToPrint({
+          i: i,
+          j: j
+        });
+        this.printLabels({
+          i: i,
+          j: j,
+          values: values,
+          ttItems: ttItems,
+          shared: shared
+        }); // Re-calculate tooltip dimensions now that we have drawn the text
+
+        var tooltipEl = this.ttCtx.getElTooltip();
+        this.ttCtx.tooltipRect.ttWidth = tooltipEl.getBoundingClientRect().width;
+        this.ttCtx.tooltipRect.ttHeight = tooltipEl.getBoundingClientRect().height;
+      }
+    }, {
+      key: "printLabels",
+      value: function printLabels(_ref2) {
+        var i = _ref2.i,
+            j = _ref2.j,
+            values = _ref2.values,
+            ttItems = _ref2.ttItems,
+            shared = _ref2.shared;
+        var w = this.w;
+        var val;
+        var xVal = values.xVal,
+            zVal = values.zVal,
+            xAxisTTVal = values.xAxisTTVal;
+        var seriesName = '';
+        var pColor = w.globals.colors[i];
+
+        if (j !== null && w.config.plotOptions.bar.distributed) {
+          pColor = w.globals.colors[j];
+        }
+
+        for (var t = 0, inverset = w.globals.series.length - 1; t < w.globals.series.length; t++, inverset--) {
+          var f = this.getFormatters(i);
+          seriesName = this.getSeriesName({
+            fn: f.yLbTitleFormatter,
+            index: i,
+            seriesIndex: i,
+            j: j
+          });
+
+          if (shared) {
+            var tIndex = w.config.tooltip.inverseOrder ? inverset : t;
+            f = this.getFormatters(tIndex);
+            seriesName = this.getSeriesName({
+              fn: f.yLbTitleFormatter,
+              index: tIndex,
+              seriesIndex: i,
+              j: j
+            });
+            pColor = w.globals.colors[tIndex]; // for plot charts, not for pie/donuts
+
+            val = f.yLbFormatter(w.globals.series[tIndex][j], {
+              series: w.globals.series,
+              seriesIndex: tIndex,
+              dataPointIndex: j,
+              w: w
+            }); // discard 0 values in BARS
+
+            if (this.ttCtx.hasBars() && w.config.chart.stacked && w.globals.series[tIndex][j] === 0 || typeof w.globals.series[tIndex][j] === 'undefined') {
+              val = undefined;
+            }
+          } else {
+            val = f.yLbFormatter(w.globals.series[i][j], {
+              series: w.globals.series,
+              seriesIndex: i,
+              dataPointIndex: j,
+              w: w
+            });
+          } // for pie / donuts
+
+
+          if (j === null) {
+            val = f.yLbFormatter(w.globals.series[i], w);
+          }
+
+          this.DOMHandling({
+            t: t,
+            ttItems: ttItems,
+            values: {
+              val: val,
+              xVal: xVal,
+              xAxisTTVal: xAxisTTVal,
+              zVal: zVal
+            },
+            seriesName: seriesName,
+            shared: shared,
+            pColor: pColor
+          });
+        }
+      }
+    }, {
+      key: "getFormatters",
+      value: function getFormatters(i) {
+        var w = this.w;
+        var yLbFormatter = w.globals.yLabelFormatters[i];
+        var yLbTitleFormatter;
+
+        if (w.globals.ttVal !== undefined) {
+          if (Array.isArray(w.globals.ttVal)) {
+            yLbFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].formatter;
+            yLbTitleFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].title && w.globals.ttVal[i].title.formatter;
+          } else {
+            yLbFormatter = w.globals.ttVal.formatter;
+
+            if (typeof w.globals.ttVal.title.formatter === 'function') {
+              yLbTitleFormatter = w.globals.ttVal.title.formatter;
+            }
+          }
+        } else {
+          yLbTitleFormatter = w.config.tooltip.y.title.formatter;
+        }
+
+        if (typeof yLbFormatter !== 'function') {
+          if (w.globals.yLabelFormatters[0]) {
+            yLbFormatter = w.globals.yLabelFormatters[0];
+          } else {
+            yLbFormatter = function yLbFormatter(label) {
+              return label;
+            };
+          }
+        }
+
+        if (typeof yLbTitleFormatter !== 'function') {
+          yLbTitleFormatter = function yLbTitleFormatter(label) {
+            return label;
+          };
+        }
+
+        return {
+          yLbFormatter: yLbFormatter,
+          yLbTitleFormatter: yLbTitleFormatter
+        };
+      }
+    }, {
+      key: "getSeriesName",
+      value: function getSeriesName(_ref3) {
+        var fn = _ref3.fn,
+            index = _ref3.index,
+            seriesIndex = _ref3.seriesIndex,
+            j = _ref3.j;
+        var w = this.w;
+        return fn(String(w.globals.seriesNames[index]), {
+          series: w.globals.series,
+          seriesIndex: seriesIndex,
+          dataPointIndex: j,
+          w: w
+        });
+      }
+    }, {
+      key: "DOMHandling",
+      value: function DOMHandling(_ref4) {
+        var t = _ref4.t,
+            ttItems = _ref4.ttItems,
+            values = _ref4.values,
+            seriesName = _ref4.seriesName,
+            shared = _ref4.shared,
+            pColor = _ref4.pColor;
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+        var val = values.val,
+            xVal = values.xVal,
+            xAxisTTVal = values.xAxisTTVal,
+            zVal = values.zVal;
+        var ttItemsChildren = null;
+        ttItemsChildren = ttItems[t].children;
+
+        if (w.config.tooltip.fillSeriesColor) {
+          //  elTooltip.style.backgroundColor = pColor
+          ttItems[t].style.backgroundColor = pColor;
+          ttItemsChildren[0].style.display = 'none';
+        }
+
+        if (ttCtx.showTooltipTitle) {
+          if (ttCtx.tooltipTitle === null) {
+            // get it once if null, and store it in class property
+            ttCtx.tooltipTitle = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-title');
+          }
+
+          ttCtx.tooltipTitle.innerHTML = xVal;
+        } // if xaxis tooltip is constructed, we need to replace the innerHTML
+
+
+        if (ttCtx.blxaxisTooltip) {
+          ttCtx.xaxisTooltipText.innerHTML = xAxisTTVal !== '' ? xAxisTTVal : xVal;
+        }
+
+        var ttYLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-label');
+
+        if (ttYLabel) {
+          ttYLabel.innerHTML = seriesName ? seriesName + ': ' : '';
+        }
+
+        var ttYVal = ttItems[t].querySelector('.apexcharts-tooltip-text-value');
+
+        if (ttYVal) {
+          ttYVal.innerHTML = val;
+        }
+
+        if (ttItemsChildren[0] && ttItemsChildren[0].classList.contains('apexcharts-tooltip-marker')) {
+          ttItemsChildren[0].style.backgroundColor = pColor;
+        }
+
+        if (!w.config.tooltip.marker.show) {
+          ttItemsChildren[0].style.display = 'none';
+        }
+
+        if (zVal !== null) {
+          var ttZLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-z-label');
+          ttZLabel.innerHTML = w.config.tooltip.z.title;
+          var ttZVal = ttItems[t].querySelector('.apexcharts-tooltip-text-z-value');
+          ttZVal.innerHTML = zVal;
+        }
+
+        if (shared && ttItemsChildren[0]) {
+          // hide when no Val or series collapsed
+          if (typeof val === 'undefined' || val === null || w.globals.collapsedSeriesIndices.indexOf(t) > -1) {
+            ttItemsChildren[0].parentNode.style.display = 'none';
+          } else {
+            ttItemsChildren[0].parentNode.style.display = w.config.tooltip.items.display;
+          }
+        }
+      }
+    }, {
+      key: "toggleActiveInactiveSeries",
+      value: function toggleActiveInactiveSeries(shared) {
+        var w = this.w;
+
+        if (shared) {
+          // make all tooltips active
+          this.tooltipUtil.toggleAllTooltipSeriesGroups('enable');
+        } else {
+          // disable all tooltip text groups
+          this.tooltipUtil.toggleAllTooltipSeriesGroups('disable'); // enable the first tooltip text group
+
+          var firstTooltipSeriesGroup = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-series-group');
+
+          if (firstTooltipSeriesGroup) {
+            firstTooltipSeriesGroup.classList.add('active');
+            firstTooltipSeriesGroup.style.display = w.config.tooltip.items.display;
+          }
+        }
+      }
+    }, {
+      key: "getValuesToPrint",
+      value: function getValuesToPrint(_ref5) {
+        var i = _ref5.i,
+            j = _ref5.j;
+        var w = this.w;
+        var filteredSeriesX = this.ctx.series.filteredSeriesX();
+        var xVal = '';
+        var xAxisTTVal = '';
+        var zVal = null;
+        var val = null;
+        var customFormatterOpts = {
+          series: w.globals.series,
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        };
+        var zFormatter = w.globals.ttZFormatter;
+
+        if (j === null) {
+          val = w.globals.series[i];
+        } else {
+          if (w.globals.isXNumeric) {
+            xVal = filteredSeriesX[i][j];
+
+            if (filteredSeriesX[i].length === 0) {
+              // a series (possibly the first one) might be collapsed, so get the next active index
+              var firstActiveSeriesIndex = this.tooltipUtil.getFirstActiveXArray(filteredSeriesX);
+              xVal = filteredSeriesX[firstActiveSeriesIndex][j];
+            }
+          } else {
+            xVal = typeof w.globals.labels[j] !== 'undefined' ? w.globals.labels[j] : '';
+          }
+        }
+
+        var bufferXVal = xVal;
+
+        if (w.globals.isXNumeric && w.config.xaxis.type === 'datetime') {
+          var xFormat = new Formatters(this.ctx);
+          xVal = xFormat.xLabelFormat(w.globals.ttKeyFormatter, bufferXVal);
+        } else {
+          xVal = w.globals.xLabelFormatter(bufferXVal, customFormatterOpts);
+        } // override default x-axis formatter with tooltip formatter
+
+
+        if (w.config.tooltip.x.formatter !== undefined) {
+          xVal = w.globals.ttKeyFormatter(bufferXVal, customFormatterOpts);
+        }
+
+        if (w.globals.seriesZ.length > 0 && w.globals.seriesZ[0].length > 0) {
+          zVal = zFormatter(w.globals.seriesZ[i][j], w);
+        }
+
+        if (typeof w.config.xaxis.tooltip.formatter === 'function') {
+          xAxisTTVal = w.globals.xaxisTooltipFormatter(bufferXVal, customFormatterOpts);
+        } else {
+          xAxisTTVal = xVal;
+        }
+
+        return {
+          val: val,
+          xVal: xVal,
+          xAxisTTVal: xAxisTTVal,
+          zVal: zVal
+        };
+      }
+    }, {
+      key: "handleCustomTooltip",
+      value: function handleCustomTooltip(_ref6) {
+        var i = _ref6.i,
+            j = _ref6.j;
+        var w = this.w;
+        var tooltipEl = this.ttCtx.getElTooltip(); // override everything with a custom html tooltip and replace it
+
+        tooltipEl.innerHTML = w.config.tooltip.custom({
+          ctx: this.ctx,
+          series: w.globals.series,
+          seriesIndex: i,
+          dataPointIndex: j,
+          w: w
+        });
+      }
+    }]);
+
+    return Labels;
+  }();
+
+  /**
+   * ApexCharts Tooltip.Position Class to move the tooltip based on x and y position.
+   *
+   * @module Tooltip.Position
+   **/
+
+  var Position =
+  /*#__PURE__*/
+  function () {
+    function Position(tooltipContext) {
+      _classCallCheck(this, Position);
+
+      this.ttCtx = tooltipContext;
+      this.ctx = tooltipContext.ctx;
+      this.w = tooltipContext.w;
+    }
+    /**
+     * This will move the crosshair (the vertical/horz line that moves along with mouse)
+     * Along with this, this function also calls the xaxisMove function
+     * @memberof Position
+     * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair
+     */
+
+
+    _createClass(Position, [{
+      key: "moveXCrosshairs",
+      value: function moveXCrosshairs(cx) {
+        var j = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+        var ttCtx = this.ttCtx;
+        var w = this.w;
+        var xcrosshairs = ttCtx.getElXCrosshairs();
+        var x = cx - ttCtx.xcrosshairsWidth / 2;
+        var tickAmount = w.globals.labels.slice().length;
+
+        if (j !== null) {
+          x = w.globals.gridWidth / tickAmount * j;
+        }
+
+        if (w.config.xaxis.crosshairs.width === 'tickWidth' || w.config.xaxis.crosshairs.width === 'barWidth') {
+          if (x + ttCtx.xcrosshairsWidth > w.globals.gridWidth) {
+            x = w.globals.gridWidth - ttCtx.xcrosshairsWidth;
+          }
+        } else {
+          if (j !== null) {
+            x = x + w.globals.gridWidth / tickAmount / 2;
+          }
+        }
+
+        if (x < 0) {
+          x = 0;
+        }
+
+        if (x > w.globals.gridWidth) {
+          x = w.globals.gridWidth;
+        }
+
+        if (xcrosshairs !== null) {
+          xcrosshairs.setAttribute('x', x);
+          xcrosshairs.setAttribute('x1', x);
+          xcrosshairs.setAttribute('x2', x);
+          xcrosshairs.setAttribute('y2', w.globals.gridHeight);
+          xcrosshairs.classList.add('active');
+        }
+
+        if (ttCtx.blxaxisTooltip) {
+          var tx = x;
+
+          if (w.config.xaxis.crosshairs.width === 'tickWidth' || w.config.xaxis.crosshairs.width === 'barWidth') {
+            tx = x + ttCtx.xcrosshairsWidth / 2;
+          }
+
+          this.moveXAxisTooltip(tx);
+        }
+      }
+      /**
+       * This will move the crosshair (the vertical/horz line that moves along with mouse)
+       * Along with this, this function also calls the xaxisMove function
+       * @memberof Position
+       * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair
+       */
+
+    }, {
+      key: "moveYCrosshairs",
+      value: function moveYCrosshairs(cy) {
+        var ttCtx = this.ttCtx;
+
+        if (ttCtx.ycrosshairs !== null) {
+          Graphics.setAttrs(ttCtx.ycrosshairs, {
+            y1: cy,
+            y2: cy
+          });
+          Graphics.setAttrs(ttCtx.ycrosshairsHidden, {
+            y1: cy,
+            y2: cy
+          });
+        }
+      }
+      /**
+       ** AxisTooltip is the small rectangle which appears on x axis with x value, when user moves
+       * @memberof Position
+       * @param {int} - cx = point's x position, wherever point's x is, you need to move
+       */
+
+    }, {
+      key: "moveXAxisTooltip",
+      value: function moveXAxisTooltip(cx) {
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+
+        if (ttCtx.xaxisTooltip !== null) {
+          ttCtx.xaxisTooltip.classList.add('active');
+          var cy = ttCtx.xaxisOffY + w.config.xaxis.tooltip.offsetY + w.globals.translateY + 1 + w.config.xaxis.offsetY;
+          var xaxisTTText = ttCtx.xaxisTooltip.getBoundingClientRect();
+          var xaxisTTTextWidth = xaxisTTText.width;
+          cx = cx - xaxisTTTextWidth / 2;
+
+          if (!isNaN(cx)) {
+            cx = cx + w.globals.translateX;
+            var textRect = 0;
+            var graphics = new Graphics(this.ctx);
+            textRect = graphics.getTextRects(ttCtx.xaxisTooltipText.innerHTML);
+            ttCtx.xaxisTooltipText.style.minWidth = textRect.width + 'px';
+            ttCtx.xaxisTooltip.style.left = cx + 'px';
+            ttCtx.xaxisTooltip.style.top = cy + 'px';
+          }
+        }
+      }
+    }, {
+      key: "moveYAxisTooltip",
+      value: function moveYAxisTooltip(index) {
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+
+        if (ttCtx.yaxisTTEls === null) {
+          ttCtx.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip');
+        }
+
+        var ycrosshairsHiddenRectY1 = parseInt(ttCtx.ycrosshairsHidden.getAttribute('y1'));
+        var cy = w.globals.translateY + ycrosshairsHiddenRectY1;
+        var yAxisTTRect = ttCtx.yaxisTTEls[index].getBoundingClientRect();
+        var yAxisTTHeight = yAxisTTRect.height;
+        var cx = w.globals.translateYAxisX[index] - 2;
+
+        if (w.config.yaxis[index].opposite) {
+          cx = cx - 26;
+        }
+
+        cy = cy - yAxisTTHeight / 2;
+
+        if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1) {
+          ttCtx.yaxisTTEls[index].classList.add('active');
+          ttCtx.yaxisTTEls[index].style.top = cy + 'px';
+          ttCtx.yaxisTTEls[index].style.left = cx + w.config.yaxis[index].tooltip.offsetX + 'px';
+        } else {
+          ttCtx.yaxisTTEls[index].classList.remove('active');
+        }
+      }
+      /**
+       ** moves the whole tooltip by changing x, y attrs
+       * @memberof Position
+       * @param {int} - cx = point's x position, wherever point's x is, you need to move tooltip
+       * @param {int} - cy = point's y position, wherever point's y is, you need to move tooltip
+       * @param {int} - r = point's radius
+       */
+
+    }, {
+      key: "moveTooltip",
+      value: function moveTooltip(cx, cy) {
+        var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+        var tooltipEl = ttCtx.getElTooltip();
+        var tooltipRect = ttCtx.tooltipRect;
+        var pointR = r !== null ? parseInt(r) : 1;
+        var x = parseInt(cx) + pointR + 5;
+        var y = parseInt(cy) + pointR / 2; // - tooltipRect.ttHeight / 2
+
+        if (x > w.globals.gridWidth / 2) {
+          x = x - tooltipRect.ttWidth - pointR - 15;
+        }
+
+        if (x > w.globals.gridWidth - tooltipRect.ttWidth - 10) {
+          x = w.globals.gridWidth - tooltipRect.ttWidth;
+        }
+
+        if (x < -20) {
+          x = -20;
+        }
+
+        if (w.config.tooltip.followCursor) {
+          var elGrid = ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect();
+          y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top - tooltipRect.ttHeight / 2;
+        }
+
+        var newPositions = this.positionChecks(tooltipRect, x, y);
+        x = newPositions.x;
+        y = newPositions.y;
+
+        if (!isNaN(x)) {
+          x = x + w.globals.translateX;
+          tooltipEl.style.left = x + 'px';
+          tooltipEl.style.top = y + 'px';
+        }
+      }
+    }, {
+      key: "positionChecks",
+      value: function positionChecks(tooltipRect, x, y) {
+        var w = this.w;
+
+        if (tooltipRect.ttHeight + y > w.globals.gridHeight) {
+          y = w.globals.gridHeight - tooltipRect.ttHeight + w.globals.translateY;
+        }
+
+        if (y < 0) {
+          y = 0;
+        }
+
+        return {
+          x: x,
+          y: y
+        };
+      }
+    }, {
+      key: "moveMarkers",
+      value: function moveMarkers(i, j) {
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+
+        if (w.globals.markers.size[i] > 0) {
+          var allPoints = w.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(i, "'] .apexcharts-marker"));
+
+          for (var p = 0; p < allPoints.length; p++) {
+            if (parseInt(allPoints[p].getAttribute('rel')) === j) {
+              ttCtx.marker.resetPointsSize();
+              ttCtx.marker.enlargeCurrentPoint(j, allPoints[p]);
+            }
+          }
+        } else {
+          ttCtx.marker.resetPointsSize();
+          this.moveDynamicPointOnHover(j, i);
+        }
+      } // This function is used when you need to show markers/points only on hover -
+      // DIFFERENT X VALUES in multiple series
+
+    }, {
+      key: "moveDynamicPointOnHover",
+      value: function moveDynamicPointOnHover(j, capturedSeries) {
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+        var cx = 0;
+        var cy = 0;
+        var pointsArr = w.globals.pointsArray;
+        var hoverSize = w.config.markers.hover.size;
+
+        if (hoverSize === undefined) {
+          hoverSize = w.globals.markers.size[capturedSeries] + w.config.markers.hover.sizeOffset;
+        }
+
+        cx = pointsArr[capturedSeries][j][0];
+        cy = pointsArr[capturedSeries][j][1] ? pointsArr[capturedSeries][j][1] : 0;
+        var point = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(capturedSeries, "'] .apexcharts-series-markers circle"));
+
+        if (point) {
+          point.setAttribute('r', hoverSize);
+          point.setAttribute('cx', cx);
+          point.setAttribute('cy', cy);
+        } // point.style.opacity = w.config.markers.hover.opacity
+
+
+        this.moveXCrosshairs(cx);
+
+        if (!ttCtx.fixedTooltip) {
+          this.moveTooltip(cx, cy, hoverSize);
+        }
+      } // This function is used when you need to show markers/points only on hover -
+      // SAME X VALUES in multiple series
+
+    }, {
+      key: "moveDynamicPointsOnHover",
+      value: function moveDynamicPointsOnHover(j) {
+        var ttCtx = this.ttCtx;
+        var w = ttCtx.w;
+        var cx = 0;
+        var cy = 0;
+        var activeSeries = 0;
+        var pointsArr = w.globals.pointsArray;
+        var series = new Series(this.ctx);
+        activeSeries = series.getActiveSeriesIndex();
+        var hoverSize = w.config.markers.hover.size;
+
+        if (hoverSize === undefined) {
+          hoverSize = w.globals.markers.size[activeSeries] + w.config.markers.hover.sizeOffset;
+        }
+
+        if (pointsArr[activeSeries]) {
+          cx = pointsArr[activeSeries][j][0];
+          cy = pointsArr[activeSeries][j][1];
+        }
+
+        var points = null;
+        var allPoints = ttCtx.getAllMarkers();
+
+        if (allPoints !== null) {
+          points = allPoints;
+        } else {
+          points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers circle');
+        }
+
+        if (points !== null) {
+          for (var p = 0; p < points.length; p++) {
+            var pointArr = pointsArr[p];
+
+            if (pointArr && pointArr.length) {
+              var pcy = pointsArr[p][j][1];
+              points[p].setAttribute('cx', cx);
+              var realIndex = parseInt(points[p].parentNode.parentNode.parentNode.getAttribute('data:realIndex'));
+
+              if (pcy !== null) {
+                points[realIndex] && points[realIndex].setAttribute('r', hoverSize);
+                points[realIndex] && points[realIndex].setAttribute('cy', pcy);
+              } else {
+                points[realIndex] && points[realIndex].setAttribute('r', 0);
+              }
+            }
+          }
+        }
+
+        this.moveXCrosshairs(cx);
+
+        if (!ttCtx.fixedTooltip) {
+          var tcy = cy || w.globals.gridHeight;
+          this.moveTooltip(cx, tcy, hoverSize);
+        }
+      }
+    }, {
+      key: "moveStickyTooltipOverBars",
+      value: function moveStickyTooltipOverBars(j) {
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+        var jBar = w.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='1'] path[j='".concat(j, "'], .apexcharts-candlestick-series .apexcharts-series[rel='1'] path[j='").concat(j, "'], .apexcharts-rangebar-series .apexcharts-series[rel='1'] path[j='").concat(j, "']"));
+        var bcx = jBar ? parseFloat(jBar.getAttribute('cx')) : 0;
+        var bcy = 0;
+        var bw = jBar ? parseFloat(jBar.getAttribute('barWidth')) : 0;
+
+        if (w.globals.isXNumeric) {
+          bcx = bcx - bw / 2;
+        } else {
+          bcx = ttCtx.xAxisTicksPositions[j - 1] + ttCtx.dataPointsDividedWidth / 2;
+
+          if (isNaN(bcx)) {
+            bcx = ttCtx.xAxisTicksPositions[j] - ttCtx.dataPointsDividedWidth / 2;
+          }
+        } // tooltip will move vertically along with mouse as it is a shared tooltip
+
+
+        var elGrid = ttCtx.getElGrid();
+        var seriesBound = elGrid.getBoundingClientRect();
+        bcy = ttCtx.e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2;
+        this.moveXCrosshairs(bcx);
+
+        if (!ttCtx.fixedTooltip) {
+          var tcy = bcy || w.globals.gridHeight;
+          this.moveTooltip(bcx, tcy);
+        }
+      }
+    }]);
+
+    return Position;
+  }();
+
+  /**
+   * ApexCharts Tooltip.Marker Class to draw texts on the tooltip.
+   *
+   * @module Tooltip.Marker
+   **/
+
+  var Marker =
+  /*#__PURE__*/
+  function () {
+    function Marker(tooltipContext) {
+      _classCallCheck(this, Marker);
+
+      this.w = tooltipContext.w;
+      this.ttCtx = tooltipContext;
+      this.ctx = tooltipContext.ctx;
+      this.tooltipPosition = new Position(tooltipContext);
+    }
+
+    _createClass(Marker, [{
+      key: "drawDynamicPoints",
+      value: function drawDynamicPoints() {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var marker = new Markers(this.ctx);
+        var elsSeries = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');
+
+        for (var i = 0; i < elsSeries.length; i++) {
+          var seriesIndex = parseInt(elsSeries[i].getAttribute('data:realIndex'));
+          var pointsMain = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesIndex, "'] .apexcharts-series-markers-wrap"));
+
+          if (pointsMain !== null) {
+            // it can be null as we have tooltips in donut/bar charts
+            var point = void 0;
+            var PointClasses = "apexcharts-marker w".concat((Math.random() + 1).toString(36).substring(4));
+
+            if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) {
+              PointClasses += ' no-pointer-events';
+            }
+
+            var elPointOptions = marker.getMarkerConfig(PointClasses, seriesIndex);
+            point = graphics.drawMarker(0, 0, elPointOptions);
+            point.node.setAttribute('default-marker-size', 0);
+            var elPointsG = document.createElementNS(w.globals.SVGNS, 'g');
+            elPointsG.classList.add('apexcharts-series-markers');
+            elPointsG.appendChild(point.node);
+            pointsMain.appendChild(elPointsG);
+          }
+        }
+      }
+    }, {
+      key: "enlargeCurrentPoint",
+      value: function enlargeCurrentPoint(rel, point) {
+        var x = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+        var y = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
+        var w = this.w;
+
+        if (w.config.chart.type !== 'bubble') {
+          this.newPointSize(rel, point);
+        }
+
+        var cx = point.getAttribute('cx');
+        var cy = point.getAttribute('cy');
+
+        if (x !== null && y !== null) {
+          cx = x;
+          cy = y;
+        }
+
+        this.tooltipPosition.moveXCrosshairs(cx);
+
+        if (!this.fixedTooltip) {
+          if (w.config.chart.type === 'radar') {
+            var elGrid = this.ttCtx.getElGrid();
+            var seriesBound = elGrid.getBoundingClientRect();
+            cx = this.ttCtx.e.clientX - seriesBound.left;
+          }
+
+          this.tooltipPosition.moveTooltip(cx, cy, w.config.markers.hover.size);
+        }
+      }
+    }, {
+      key: "enlargePoints",
+      value: function enlargePoints(j) {
+        var w = this.w;
+        var me = this;
+        var ttCtx = this.ttCtx;
+        var col = j;
+        var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker');
+        var newSize = w.config.markers.hover.size;
+
+        for (var p = 0; p < points.length; p++) {
+          var rel = points[p].getAttribute('rel');
+          var index = points[p].getAttribute('index');
+
+          if (newSize === undefined) {
+            newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset;
+          }
+
+          if (col === parseInt(rel)) {
+            me.newPointSize(col, points[p]);
+            var cx = points[p].getAttribute('cx');
+            var cy = points[p].getAttribute('cy');
+            me.tooltipPosition.moveXCrosshairs(cx);
+
+            if (!ttCtx.fixedTooltip) {
+              me.tooltipPosition.moveTooltip(cx, cy, newSize);
+            }
+          } else {
+            me.oldPointSize(points[p]);
+          }
+        }
+      }
+    }, {
+      key: "newPointSize",
+      value: function newPointSize(rel, point) {
+        var w = this.w;
+        var newSize = w.config.markers.hover.size;
+        var elPoint = null;
+
+        if (rel === 0) {
+          elPoint = point.parentNode.firstChild;
+        } else {
+          elPoint = point.parentNode.lastChild;
+        }
+
+        var index = parseInt(elPoint.getAttribute('index'));
+
+        if (newSize === undefined) {
+          newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset;
+        }
+
+        elPoint.setAttribute('r', newSize);
+      }
+    }, {
+      key: "oldPointSize",
+      value: function oldPointSize(point) {
+        var size = parseInt(point.getAttribute('default-marker-size'));
+        point.setAttribute('r', size);
+      }
+    }, {
+      key: "resetPointsSize",
+      value: function resetPointsSize() {
+        var w = this.w;
+        var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker');
+
+        for (var p = 0; p < points.length; p++) {
+          var size = parseInt(points[p].getAttribute('default-marker-size'));
+
+          if (Utils.isNumber(size)) {
+            points[p].setAttribute('r', size);
+          } else {
+            points[p].setAttribute('r', 0);
+          }
+        }
+      }
+    }]);
+
+    return Marker;
+  }();
+
+  /**
+   * ApexCharts Tooltip.Intersect Class.
+   *
+   * @module Tooltip.Intersect
+   **/
+
+  var Intersect =
+  /*#__PURE__*/
+  function () {
+    function Intersect(tooltipContext) {
+      _classCallCheck(this, Intersect);
+
+      this.w = tooltipContext.w;
+      this.ttCtx = tooltipContext;
+    }
+
+    _createClass(Intersect, [{
+      key: "getAttr",
+      value: function getAttr(e, attr) {
+        return parseFloat(e.target.getAttribute(attr));
+      }
+    }, {
+      key: "handleHeatTooltip",
+      value: function handleHeatTooltip(_ref) {
+        var e = _ref.e,
+            opt = _ref.opt,
+            x = _ref.x,
+            y = _ref.y;
+        var ttCtx = this.ttCtx;
+        var w = this.w;
+
+        if (e.target.classList.contains('apexcharts-heatmap-rect')) {
+          var i = this.getAttr(e, 'i');
+          var j = this.getAttr(e, 'j');
+          var cx = this.getAttr(e, 'cx');
+          var cy = this.getAttr(e, 'cy');
+          var width = this.getAttr(e, 'width');
+          var height = this.getAttr(e, 'height');
+          ttCtx.tooltipLabels.drawSeriesTexts({
+            ttItems: opt.ttItems,
+            i: i,
+            j: j,
+            shared: false
+          });
+          x = cx + ttCtx.tooltipRect.ttWidth / 2 + width;
+          y = cy + ttCtx.tooltipRect.ttHeight / 2 - height / 2;
+          ttCtx.tooltipPosition.moveXCrosshairs(cx + width / 2);
+
+          if (x > w.globals.gridWidth / 2) {
+            x = cx - ttCtx.tooltipRect.ttWidth / 2 + width;
+          }
+
+          if (ttCtx.w.config.tooltip.followCursor) {
+            var elGrid = ttCtx.getElGrid();
+            var seriesBound = elGrid.getBoundingClientRect(); // x = ttCtx.e.clientX - seriesBound.left
+
+            y = ttCtx.e.clientY - seriesBound.top + w.globals.translateY / 2 - 10;
+          }
+        }
+
+        return {
+          x: x,
+          y: y
+        };
+      }
+    }, {
+      key: "handleMarkerTooltip",
+      value: function handleMarkerTooltip(_ref2) {
+        var e = _ref2.e,
+            opt = _ref2.opt,
+            x = _ref2.x,
+            y = _ref2.y;
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+        var i;
+        var j;
+
+        if (e.target.classList.contains('apexcharts-marker')) {
+          var cx = parseInt(opt.paths.getAttribute('cx'));
+          var cy = parseInt(opt.paths.getAttribute('cy'));
+          var val = parseFloat(opt.paths.getAttribute('val'));
+          j = parseInt(opt.paths.getAttribute('rel'));
+          i = parseInt(opt.paths.parentNode.parentNode.parentNode.getAttribute('rel')) - 1;
+
+          if (ttCtx.intersect) {
+            var el = Utils.findAncestor(opt.paths, 'apexcharts-series');
+
+            if (el) {
+              i = parseInt(el.getAttribute('data:realIndex'));
+            }
+          }
+
+          ttCtx.tooltipLabels.drawSeriesTexts({
+            ttItems: opt.ttItems,
+            i: i,
+            j: j,
+            shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared
+          });
+
+          if (e.type === 'mouseup') {
+            ttCtx.markerClick(e, i, j);
+          }
+
+          x = cx;
+          y = cy + w.globals.translateY - ttCtx.tooltipRect.ttHeight * 1.4;
+
+          if (ttCtx.w.config.tooltip.followCursor) {
+            var elGrid = ttCtx.getElGrid();
+            var seriesBound = elGrid.getBoundingClientRect();
+            y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top;
+          }
+
+          if (val < 0) {
+            y = cy;
+          }
+
+          ttCtx.marker.enlargeCurrentPoint(j, opt.paths, x, y);
+        }
+
+        return {
+          x: x,
+          y: y
+        };
+      }
+    }, {
+      key: "handleBarTooltip",
+      value: function handleBarTooltip(_ref3) {
+        var e = _ref3.e,
+            opt = _ref3.opt;
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+        var tooltipEl = ttCtx.getElTooltip();
+        var bx = 0;
+        var x = 0;
+        var y = 0; // let bW = 0
+
+        var i = 0;
+        var strokeWidth;
+        var barXY = this.getBarTooltipXY({
+          e: e,
+          opt: opt
+        });
+        i = barXY.i;
+        var barHeight = barXY.barHeight;
+        var j = barXY.j;
+
+        if (w.globals.isBarHorizontal && ttCtx.hasBars() || !w.config.tooltip.shared) {
+          x = barXY.x;
+          y = barXY.y;
+          strokeWidth = Array.isArray(w.config.stroke.width) ? w.config.stroke.width[i] : w.config.stroke.width; // bW = barXY.barWidth
+
+          bx = x;
+        } else {
+          if (!w.globals.comboCharts && !w.config.tooltip.shared) {
+            bx = bx / 2;
+          }
+        } // y is NaN, make it touch the bottom of grid area
+
+
+        if (isNaN(y)) {
+          y = w.globals.svgHeight - ttCtx.tooltipRect.ttHeight;
+        } // x exceeds gridWidth
+
+
+        if (x + ttCtx.tooltipRect.ttWidth > w.globals.gridWidth) {
+          x = x - ttCtx.tooltipRect.ttWidth;
+        } else if (x < 0) {
+          x = x + ttCtx.tooltipRect.ttWidth;
+        }
+
+        if (ttCtx.w.config.tooltip.followCursor) {
+          var elGrid = ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect();
+          y = ttCtx.e.clientY - seriesBound.top;
+        } // if tooltip is still null, querySelector
+
+
+        if (ttCtx.tooltip === null) {
+          ttCtx.tooltip = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip');
+        }
+
+        if (!w.config.tooltip.shared) {
+          if (w.globals.comboChartsHasBars) {
+            ttCtx.tooltipPosition.moveXCrosshairs(bx + strokeWidth / 2);
+          } else {
+            ttCtx.tooltipPosition.moveXCrosshairs(bx);
+          }
+        } // move tooltip here
+
+
+        if (!ttCtx.fixedTooltip && (!w.config.tooltip.shared || w.globals.isBarHorizontal && ttCtx.hasBars())) {
+          if (isReversed) {
+            x = w.globals.gridWidth - x;
+          }
+
+          tooltipEl.style.left = x + w.globals.translateX + 'px';
+          var seriesIndex = parseInt(opt.paths.parentNode.getAttribute('data:realIndex'));
+          var isReversed = w.globals.isMultipleYAxis ? w.config.yaxis[seriesIndex] && w.config.yaxis[seriesIndex].reversed : w.config.yaxis[0].reversed;
+
+          if (isReversed && !(w.globals.isBarHorizontal && ttCtx.hasBars())) {
+            y = y + barHeight - (w.globals.series[i][j] < 0 ? barHeight : 0) * 2;
+          }
+
+          if (ttCtx.tooltipRect.ttHeight + y > w.globals.gridHeight) {
+            y = w.globals.gridHeight - ttCtx.tooltipRect.ttHeight + w.globals.translateY;
+            tooltipEl.style.top = y + 'px';
+          } else {
+            tooltipEl.style.top = y + w.globals.translateY - ttCtx.tooltipRect.ttHeight / 2 + 'px';
+          }
+        }
+      }
+    }, {
+      key: "getBarTooltipXY",
+      value: function getBarTooltipXY(_ref4) {
+        var e = _ref4.e,
+            opt = _ref4.opt;
+        var w = this.w;
+        var j = null;
+        var ttCtx = this.ttCtx;
+        var i = 0;
+        var x = 0;
+        var y = 0;
+        var barWidth = 0;
+        var barHeight = 0;
+        var cl = e.target.classList;
+
+        if (cl.contains('apexcharts-bar-area') || cl.contains('apexcharts-candlestick-area') || cl.contains('apexcharts-rangebar-area')) {
+          var bar = e.target;
+          var barRect = bar.getBoundingClientRect();
+          var seriesBound = opt.elGrid.getBoundingClientRect();
+          var bh = barRect.height;
+          barHeight = barRect.height;
+          var bw = barRect.width;
+          var cx = parseInt(bar.getAttribute('cx'));
+          var cy = parseInt(bar.getAttribute('cy'));
+          barWidth = parseFloat(bar.getAttribute('barWidth'));
+          var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+          j = parseInt(bar.getAttribute('j'));
+          i = parseInt(bar.parentNode.getAttribute('rel')) - 1;
+
+          if (w.globals.comboCharts) {
+            i = parseInt(bar.parentNode.getAttribute('data:realIndex'));
+          } // if (w.config.tooltip.shared) {
+          // this check not needed  at the moment
+          //   const yDivisor = w.globals.gridHeight / (w.globals.series.length)
+          //   const hoverY = ttCtx.clientY - ttCtx.seriesBound.top
+          //   j = Math.ceil(hoverY / yDivisor)
+          // }
+
+
+          ttCtx.tooltipLabels.drawSeriesTexts({
+            ttItems: opt.ttItems,
+            i: i,
+            j: j,
+            shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared
+          });
+
+          if (w.config.tooltip.followCursor) {
+            if (w.globals.isBarHorizontal) {
+              x = clientX - seriesBound.left + 15;
+              y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2;
+            } else {
+              if (w.globals.isXNumeric) {
+                x = cx - bw / 2;
+              } else {
+                x = cx - ttCtx.dataPointsDividedWidth + bw / 2;
+              }
+
+              y = e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2 - 15;
+            }
+          } else {
+            if (w.globals.isBarHorizontal) {
+              x = cx;
+
+              if (x < ttCtx.xyRatios.baseLineInvertedY) {
+                x = cx - ttCtx.tooltipRect.ttWidth;
+              }
+
+              y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2;
+            } else {
+              // if columns
+              if (w.globals.isXNumeric) {
+                x = cx - bw / 2;
+              } else {
+                x = cx - ttCtx.dataPointsDividedWidth + bw / 2;
+              }
+
+              y = cy; // - ttCtx.tooltipRect.ttHeight / 2 + 10
+            }
+          }
+        }
+
+        return {
+          x: x,
+          y: y,
+          barHeight: barHeight,
+          barWidth: barWidth,
+          i: i,
+          j: j
+        };
+      }
+    }]);
+
+    return Intersect;
+  }();
+
+  /**
+   * ApexCharts Tooltip.AxesTooltip Class.
+   *
+   * @module Tooltip.AxesTooltip
+   **/
+  var AxesTooltip =
+  /*#__PURE__*/
+  function () {
+    function AxesTooltip(tooltipContext) {
+      _classCallCheck(this, AxesTooltip);
+
+      this.w = tooltipContext.w;
+      this.ttCtx = tooltipContext;
+    }
+    /**
+     * This method adds the secondary tooltip which appears below x axis
+     * @memberof Tooltip
+     **/
+
+
+    _createClass(AxesTooltip, [{
+      key: "drawXaxisTooltip",
+      value: function drawXaxisTooltip() {
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+        var isBottom = w.config.xaxis.position === 'bottom';
+        ttCtx.xaxisOffY = isBottom ? w.globals.gridHeight + 1 : 1;
+        var tooltipCssClass = isBottom ? 'apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom' : 'apexcharts-xaxistooltip apexcharts-xaxistooltip-top';
+        var renderTo = w.globals.dom.elWrap;
+
+        if (ttCtx.blxaxisTooltip) {
+          var xaxisTooltip = w.globals.dom.baseEl.querySelector('.apexcharts-xaxistooltip');
+
+          if (xaxisTooltip === null) {
+            ttCtx.xaxisTooltip = document.createElement('div');
+            ttCtx.xaxisTooltip.setAttribute('class', tooltipCssClass + ' ' + w.config.tooltip.theme);
+            renderTo.appendChild(ttCtx.xaxisTooltip);
+            ttCtx.xaxisTooltipText = document.createElement('div');
+            ttCtx.xaxisTooltipText.classList.add('apexcharts-xaxistooltip-text');
+            ttCtx.xaxisTooltipText.style.fontFamily = w.config.xaxis.tooltip.style.fontFamily || w.config.chart.fontFamily;
+            ttCtx.xaxisTooltipText.style.fontSize = w.config.xaxis.tooltip.style.fontSize;
+            ttCtx.xaxisTooltip.appendChild(ttCtx.xaxisTooltipText);
+          }
+        }
+      }
+      /**
+       * This method adds the secondary tooltip which appears below x axis
+       * @memberof Tooltip
+       **/
+
+    }, {
+      key: "drawYaxisTooltip",
+      value: function drawYaxisTooltip() {
+        var w = this.w;
+        var ttCtx = this.ttCtx;
+
+        for (var i = 0; i < w.config.yaxis.length; i++) {
+          var isRight = w.config.yaxis[i].opposite || w.config.yaxis[i].crosshairs.opposite;
+          ttCtx.yaxisOffX = isRight ? w.globals.gridWidth + 1 : 1;
+          var tooltipCssClass = isRight ? "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i, " apexcharts-yaxistooltip-right") : "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i, " apexcharts-yaxistooltip-left");
+          var renderTo = w.globals.dom.elWrap;
+
+          if (ttCtx.blyaxisTooltip) {
+            var yaxisTooltip = w.globals.dom.baseEl.querySelector(".apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i));
+
+            if (yaxisTooltip === null) {
+              ttCtx.yaxisTooltip = document.createElement('div');
+              ttCtx.yaxisTooltip.setAttribute('class', tooltipCssClass + ' ' + w.config.tooltip.theme);
+              renderTo.appendChild(ttCtx.yaxisTooltip);
+              if (i === 0) ttCtx.yaxisTooltipText = [];
+              ttCtx.yaxisTooltipText.push(document.createElement('div'));
+              ttCtx.yaxisTooltipText[i].classList.add('apexcharts-yaxistooltip-text');
+              ttCtx.yaxisTooltip.appendChild(ttCtx.yaxisTooltipText[i]);
+            }
+          }
+        }
+      }
+      /**
+       * @memberof Tooltip
+       **/
+
+    }, {
+      key: "setXCrosshairWidth",
+      value: function setXCrosshairWidth() {
+        var w = this.w;
+        var ttCtx = this.ttCtx; // set xcrosshairs width
+
+        var xcrosshairs = ttCtx.getElXCrosshairs();
+        ttCtx.xcrosshairsWidth = parseInt(w.config.xaxis.crosshairs.width);
+
+        if (!w.globals.comboCharts) {
+          if (w.config.xaxis.crosshairs.width === 'tickWidth') {
+            var count = w.globals.labels.length;
+            ttCtx.xcrosshairsWidth = w.globals.gridWidth / count;
+          } else if (w.config.xaxis.crosshairs.width === 'barWidth') {
+            var bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area');
+
+            if (bar !== null) {
+              var barWidth = parseFloat(bar.getAttribute('barWidth'));
+              ttCtx.xcrosshairsWidth = barWidth;
+            } else {
+              ttCtx.xcrosshairsWidth = 1;
+            }
+          }
+        } else {
+          var _bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area');
+
+          if (_bar !== null && w.config.xaxis.crosshairs.width === 'barWidth') {
+            var _barWidth = parseFloat(_bar.getAttribute('barWidth'));
+
+            ttCtx.xcrosshairsWidth = _barWidth;
+          } else {
+            if (w.config.xaxis.crosshairs.width === 'tickWidth') {
+              var _count = w.globals.labels.length;
+              ttCtx.xcrosshairsWidth = w.globals.gridWidth / _count;
+            }
+          }
+        }
+
+        if (w.globals.isBarHorizontal) {
+          ttCtx.xcrosshairsWidth = 0;
+        }
+
+        if (xcrosshairs !== null && ttCtx.xcrosshairsWidth > 0) {
+          xcrosshairs.setAttribute('width', ttCtx.xcrosshairsWidth);
+        }
+      }
+    }, {
+      key: "handleYCrosshair",
+      value: function handleYCrosshair() {
+        var w = this.w;
+        var ttCtx = this.ttCtx; // set ycrosshairs height
+
+        ttCtx.ycrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs');
+        ttCtx.ycrosshairsHidden = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs-hidden');
+      }
+    }, {
+      key: "drawYaxisTooltipText",
+      value: function drawYaxisTooltipText(index, clientY, xyRatios) {
+        var ttCtx = this.ttCtx;
+        var w = this.w;
+        var lbFormatter = w.globals.yLabelFormatters[index];
+
+        if (ttCtx.blyaxisTooltip) {
+          var elGrid = ttCtx.getElGrid();
+          var seriesBound = elGrid.getBoundingClientRect();
+          var hoverY = (clientY - seriesBound.top) * xyRatios.yRatio[index];
+          var height = w.globals.maxYArr[index] - w.globals.minYArr[index];
+          var val = w.globals.minYArr[index] + (height - hoverY);
+          ttCtx.tooltipPosition.moveYCrosshairs(clientY - seriesBound.top);
+          ttCtx.yaxisTooltipText[index].innerHTML = lbFormatter(val);
+          ttCtx.tooltipPosition.moveYAxisTooltip(index);
+        }
+      }
+    }]);
+
+    return AxesTooltip;
+  }();
+
+  /**
+   * ApexCharts Core Tooltip Class to handle the tooltip generation.
+   *
+   * @module Tooltip
+   **/
+
+  var Tooltip =
+  /*#__PURE__*/
+  function () {
+    function Tooltip(ctx) {
+      _classCallCheck(this, Tooltip);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      var w = this.w;
+      this.tConfig = w.config.tooltip;
+      this.tooltipUtil = new Utils$1(this);
+      this.tooltipLabels = new Labels(this);
+      this.tooltipPosition = new Position(this);
+      this.marker = new Marker(this);
+      this.intersect = new Intersect(this);
+      this.axesTooltip = new AxesTooltip(this);
+      this.showOnIntersect = this.tConfig.intersect;
+      this.showTooltipTitle = this.tConfig.x.show;
+      this.fixedTooltip = this.tConfig.fixed.enabled;
+      this.xaxisTooltip = null;
+      this.yaxisTTEls = null;
+      this.isBarShared = !w.globals.isBarHorizontal && this.tConfig.shared;
+    }
+
+    _createClass(Tooltip, [{
+      key: "getElTooltip",
+      value: function getElTooltip(ctx) {
+        if (!ctx) ctx = this;
+        return ctx.w.globals.dom.baseEl.querySelector('.apexcharts-tooltip');
+      }
+    }, {
+      key: "getElXCrosshairs",
+      value: function getElXCrosshairs() {
+        return this.w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs');
+      }
+    }, {
+      key: "getElGrid",
+      value: function getElGrid() {
+        return this.w.globals.dom.baseEl.querySelector('.apexcharts-grid');
+      }
+    }, {
+      key: "drawTooltip",
+      value: function drawTooltip(xyRatios) {
+        var w = this.w;
+        this.xyRatios = xyRatios;
+        this.blxaxisTooltip = w.config.xaxis.tooltip.enabled && w.globals.axisCharts;
+        this.blyaxisTooltip = w.config.yaxis[0].tooltip.enabled && w.globals.axisCharts;
+        this.allTooltipSeriesGroups = [];
+
+        if (!w.globals.axisCharts) {
+          this.showTooltipTitle = false;
+        }
+
+        var tooltipEl = document.createElement('div');
+        tooltipEl.classList.add('apexcharts-tooltip');
+        tooltipEl.classList.add(this.tConfig.theme);
+        w.globals.dom.elWrap.appendChild(tooltipEl);
+
+        if (w.globals.axisCharts) {
+          this.axesTooltip.drawXaxisTooltip();
+          this.axesTooltip.drawYaxisTooltip();
+          this.axesTooltip.setXCrosshairWidth();
+          this.axesTooltip.handleYCrosshair();
+          var xAxis = new XAxis(this.ctx);
+          this.xAxisTicksPositions = xAxis.getXAxisTicksPositions();
+        } // we forcefully set intersect true for these conditions
+
+
+        if (w.globals.comboCharts && !this.tConfig.shared || this.tConfig.intersect && !this.tConfig.shared || (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && !this.tConfig.shared) {
+          this.showOnIntersect = true;
+        }
+
+        if (w.config.markers.size === 0 || w.globals.markers.largestSize === 0) {
+          // when user don't want to show points all the time, but only on when hovering on series
+          this.marker.drawDynamicPoints(this);
+        } // no visible series, exit
+
+
+        if (w.globals.collapsedSeries.length === w.globals.series.length) return;
+        this.dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints;
+        this.dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints;
+
+        if (this.showTooltipTitle) {
+          this.tooltipTitle = document.createElement('div');
+          this.tooltipTitle.classList.add('apexcharts-tooltip-title');
+          this.tooltipTitle.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily;
+          this.tooltipTitle.style.fontSize = this.tConfig.style.fontSize;
+          tooltipEl.appendChild(this.tooltipTitle);
+        }
+
+        var ttItemsCnt = w.globals.series.length; // whether shared or not, default is shared
+
+        if ((w.globals.xyCharts || w.globals.comboCharts) && this.tConfig.shared) {
+          if (!this.showOnIntersect) {
+            ttItemsCnt = w.globals.series.length;
+          } else {
+            ttItemsCnt = 1;
+          }
+        }
+
+        this.ttItems = this.createTTElements(ttItemsCnt);
+        this.addSVGEvents();
+      }
+    }, {
+      key: "createTTElements",
+      value: function createTTElements(ttItemsCnt) {
+        var w = this.w;
+        var ttItems = [];
+        var tooltipEl = this.getElTooltip();
+
+        for (var i = 0; i < ttItemsCnt; i++) {
+          var gTxt = document.createElement('div');
+          gTxt.classList.add('apexcharts-tooltip-series-group');
+
+          if (this.tConfig.shared && this.tConfig.enabledOnSeries && Array.isArray(this.tConfig.enabledOnSeries)) {
+            if (this.tConfig.enabledOnSeries.indexOf(i) < 0) {
+              gTxt.classList.add('apexcharts-tooltip-series-group-hidden');
+            }
+          }
+
+          var point = document.createElement('span');
+          point.classList.add('apexcharts-tooltip-marker');
+          point.style.backgroundColor = w.globals.colors[i];
+          gTxt.appendChild(point);
+          var gYZ = document.createElement('div');
+          gYZ.classList.add('apexcharts-tooltip-text');
+          gYZ.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily;
+          gYZ.style.fontSize = this.tConfig.style.fontSize; // y values group
+
+          var gYValText = document.createElement('div');
+          gYValText.classList.add('apexcharts-tooltip-y-group');
+          var txtLabel = document.createElement('span');
+          txtLabel.classList.add('apexcharts-tooltip-text-label');
+          gYValText.appendChild(txtLabel);
+          var txtValue = document.createElement('span');
+          txtValue.classList.add('apexcharts-tooltip-text-value');
+          gYValText.appendChild(txtValue); // z values group
+
+          var gZValText = document.createElement('div');
+          gZValText.classList.add('apexcharts-tooltip-z-group');
+          var txtZLabel = document.createElement('span');
+          txtZLabel.classList.add('apexcharts-tooltip-text-z-label');
+          gZValText.appendChild(txtZLabel);
+          var txtZValue = document.createElement('span');
+          txtZValue.classList.add('apexcharts-tooltip-text-z-value');
+          gZValText.appendChild(txtZValue);
+          gYZ.appendChild(gYValText);
+          gYZ.appendChild(gZValText);
+          gTxt.appendChild(gYZ);
+          tooltipEl.appendChild(gTxt);
+          ttItems.push(gTxt);
+        }
+
+        return ttItems;
+      }
+    }, {
+      key: "addSVGEvents",
+      value: function addSVGEvents() {
+        var w = this.w;
+        var type = w.config.chart.type;
+        var tooltipEl = this.getElTooltip();
+        var commonBar = !!(type === 'bar' || type === 'candlestick' || type === 'rangeBar');
+        var hoverArea = w.globals.dom.Paper.node;
+        var elGrid = this.getElGrid();
+
+        if (elGrid) {
+          this.seriesBound = elGrid.getBoundingClientRect();
+        }
+
+        var tooltipY = [];
+        var tooltipX = [];
+        var seriesHoverParams = {
+          hoverArea: hoverArea,
+          elGrid: elGrid,
+          tooltipEl: tooltipEl,
+          tooltipY: tooltipY,
+          tooltipX: tooltipX,
+          ttItems: this.ttItems
+        };
+        var points;
+
+        if (w.globals.axisCharts) {
+          if (type === 'area' || type === 'line' || type === 'scatter' || type === 'bubble') {
+            points = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker");
+          } else if (commonBar) {
+            points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-rangebar-area');
+          } else if (type === 'heatmap') {
+            points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-heatmap');
+          } else if (type === 'radar') {
+            points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-marker');
+          }
+
+          if (points && points.length) {
+            for (var p = 0; p < points.length; p++) {
+              tooltipY.push(points[p].getAttribute('cy'));
+              tooltipX.push(points[p].getAttribute('cx'));
+            }
+          }
+        }
+
+        var validSharedChartTypes = w.globals.xyCharts && !this.showOnIntersect || w.globals.comboCharts && !this.showOnIntersect || commonBar && this.hasBars() && this.tConfig.shared;
+
+        if (validSharedChartTypes) {
+          this.addPathsEventListeners([hoverArea], seriesHoverParams);
+        } else if (commonBar && !w.globals.comboCharts) {
+          this.addBarsEventListeners(seriesHoverParams);
+        } else if (type === 'bubble' || type === 'scatter' || type === 'radar' || this.showOnIntersect && (type === 'area' || type === 'line')) {
+          this.addPointsEventsListeners(seriesHoverParams);
+        } else if (!w.globals.axisCharts || type === 'heatmap') {
+          var seriesAll = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');
+          this.addPathsEventListeners(seriesAll, seriesHoverParams);
+        }
+
+        if (this.showOnIntersect) {
+          var linePoints = w.globals.dom.baseEl.querySelectorAll('.apexcharts-line-series .apexcharts-marker');
+
+          if (linePoints.length > 0) {
+            // if we find any lineSeries, addEventListeners for them
+            this.addPathsEventListeners(linePoints, seriesHoverParams);
+          }
+
+          var areaPoints = w.globals.dom.baseEl.querySelectorAll('.apexcharts-area-series .apexcharts-marker');
+
+          if (areaPoints.length > 0) {
+            // if we find any areaSeries, addEventListeners for them
+            this.addPathsEventListeners(areaPoints, seriesHoverParams);
+          } // combo charts may have bars, so add event listeners here too
+
+
+          if (this.hasBars() && !this.tConfig.shared) {
+            this.addBarsEventListeners(seriesHoverParams);
+          }
+        }
+      }
+    }, {
+      key: "drawFixedTooltipRect",
+      value: function drawFixedTooltipRect() {
+        var w = this.w;
+        var tooltipEl = this.getElTooltip();
+        var tooltipRect = tooltipEl.getBoundingClientRect();
+        var ttWidth = tooltipRect.width + 10;
+        var ttHeight = tooltipRect.height + 10;
+        var x = this.tConfig.fixed.offsetX;
+        var y = this.tConfig.fixed.offsetY;
+
+        if (this.tConfig.fixed.position.toLowerCase().indexOf('right') > -1) {
+          x = x + w.globals.svgWidth - ttWidth + 10;
+        }
+
+        if (this.tConfig.fixed.position.toLowerCase().indexOf('bottom') > -1) {
+          y = y + w.globals.svgHeight - ttHeight - 10;
+        }
+
+        tooltipEl.style.left = x + 'px';
+        tooltipEl.style.top = y + 'px';
+        return {
+          x: x,
+          y: y,
+          ttWidth: ttWidth,
+          ttHeight: ttHeight
+        };
+      }
+    }, {
+      key: "addPointsEventsListeners",
+      value: function addPointsEventsListeners(seriesHoverParams) {
+        var w = this.w;
+        var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers .apexcharts-marker');
+        this.addPathsEventListeners(points, seriesHoverParams);
+      }
+    }, {
+      key: "addBarsEventListeners",
+      value: function addBarsEventListeners(seriesHoverParams) {
+        var w = this.w;
+        var bars = w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-rangebar-area');
+        this.addPathsEventListeners(bars, seriesHoverParams);
+      }
+    }, {
+      key: "addPathsEventListeners",
+      value: function addPathsEventListeners(paths, opts) {
+        var _this = this;
+
+        var self = this;
+
+        var _loop = function _loop(p) {
+          var extendedOpts = {
+            paths: paths[p],
+            tooltipEl: opts.tooltipEl,
+            tooltipY: opts.tooltipY,
+            tooltipX: opts.tooltipX,
+            elGrid: opts.elGrid,
+            hoverArea: opts.hoverArea,
+            ttItems: opts.ttItems
+          };
+          _this.w.globals.tooltipOpts = extendedOpts;
+          var events = ['mousemove', 'mouseup', 'touchmove', 'mouseout', 'touchend'];
+          events.map(function (ev) {
+            return paths[p].addEventListener(ev, self.seriesHover.bind(self, extendedOpts), {
+              capture: false,
+              passive: true
+            });
+          });
+        };
+
+        for (var p = 0; p < paths.length; p++) {
+          _loop(p);
+        }
+      }
+      /*
+       ** The actual series hover function
+       */
+
+    }, {
+      key: "seriesHover",
+      value: function seriesHover(opt, e) {
+        var _this2 = this;
+
+        var chartGroups = [];
+        var w = this.w; // if user has more than one charts in group, we need to sync
+
+        if (w.config.chart.group) {
+          chartGroups = this.ctx.getGroupedCharts();
+        }
+
+        if (w.globals.axisCharts && (w.globals.minX === -Infinity && w.globals.maxX === Infinity || w.globals.dataPoints === 0)) {
+          return;
+        }
+
+        if (chartGroups.length) {
+          chartGroups.forEach(function (ch) {
+            var tooltipEl = _this2.getElTooltip(ch);
+
+            var newOpts = {
+              paths: opt.paths,
+              tooltipEl: tooltipEl,
+              tooltipY: opt.tooltipY,
+              tooltipX: opt.tooltipX,
+              elGrid: opt.elGrid,
+              hoverArea: opt.hoverArea,
+              ttItems: ch.w.globals.tooltip.ttItems // all the charts should have the same minX and maxX (same xaxis) for multiple tooltips to work correctly
+
+            };
+
+            if (ch.w.globals.minX === _this2.w.globals.minX && ch.w.globals.maxX === _this2.w.globals.maxX) {
+              ch.w.globals.tooltip.seriesHoverByContext({
+                chartCtx: ch,
+                ttCtx: ch.w.globals.tooltip,
+                opt: newOpts,
+                e: e
+              });
+            }
+          });
+        } else {
+          this.seriesHoverByContext({
+            chartCtx: this.ctx,
+            ttCtx: this.w.globals.tooltip,
+            opt: opt,
+            e: e
+          });
+        }
+      }
+    }, {
+      key: "seriesHoverByContext",
+      value: function seriesHoverByContext(_ref) {
+        var chartCtx = _ref.chartCtx,
+            ttCtx = _ref.ttCtx,
+            opt = _ref.opt,
+            e = _ref.e;
+        var w = chartCtx.w;
+        var tooltipEl = this.getElTooltip(); // tooltipRect is calculated on every mousemove, because the text is dynamic
+
+        ttCtx.tooltipRect = {
+          x: 0,
+          y: 0,
+          ttWidth: tooltipEl.getBoundingClientRect().width,
+          ttHeight: tooltipEl.getBoundingClientRect().height
+        };
+        ttCtx.e = e; // highlight the current hovered bars
+
+        if (ttCtx.hasBars() && !w.globals.comboCharts && !ttCtx.isBarShared) {
+          if (this.tConfig.onDatasetHover.highlightDataSeries) {
+            var series = new Series(chartCtx);
+            series.toggleSeriesOnHover(e, e.target.parentNode);
+          }
+        }
+
+        if (ttCtx.fixedTooltip) {
+          ttCtx.drawFixedTooltipRect();
+        }
+
+        if (w.globals.axisCharts) {
+          ttCtx.axisChartsTooltips({
+            e: e,
+            opt: opt,
+            tooltipRect: ttCtx.tooltipRect
+          });
+        } else {
+          // non-plot charts i.e pie/donut/circle
+          ttCtx.nonAxisChartsTooltips({
+            e: e,
+            opt: opt,
+            tooltipRect: ttCtx.tooltipRect
+          });
+        }
+      } // tooltip handling for line/area/bar/columns/scatter
+
+    }, {
+      key: "axisChartsTooltips",
+      value: function axisChartsTooltips(_ref2) {
+        var e = _ref2.e,
+            opt = _ref2.opt;
+        var w = this.w;
+        var j, x, y;
+        var self = this;
+        var capj = null;
+        var seriesBound = opt.elGrid.getBoundingClientRect();
+        var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+        var clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY;
+        this.clientY = clientY;
+        this.clientX = clientX;
+
+        if (clientY < seriesBound.top || clientY > seriesBound.top + seriesBound.height) {
+          self.handleMouseOut(opt);
+          return;
+        }
+
+        if (Array.isArray(this.tConfig.enabledOnSeries)) {
+          var index = parseInt(opt.paths.getAttribute('index'));
+
+          if (this.tConfig.enabledOnSeries.indexOf(index) < 0) {
+            self.handleMouseOut(opt);
+            return;
+          }
+        }
+
+        var tooltipEl = this.getElTooltip();
+        var xcrosshairs = this.getElXCrosshairs();
+        var isStickyTooltip = w.globals.xyCharts || w.config.chart.type === 'bar' && !w.globals.isBarHorizontal && this.hasBars() && this.tConfig.shared || w.globals.comboCharts && this.hasBars;
+
+        if (w.globals.isBarHorizontal && this.hasBars()) {
+          isStickyTooltip = false;
+        }
+
+        if (e.type === 'mousemove' || e.type === 'touchmove' || e.type === 'mouseup') {
+          if (xcrosshairs !== null) {
+            xcrosshairs.classList.add('active');
+          }
+
+          if (self.ycrosshairs !== null && self.blyaxisTooltip) {
+            self.ycrosshairs.classList.add('active');
+          }
+
+          if (isStickyTooltip && !self.showOnIntersect) {
+            capj = self.tooltipUtil.getNearestValues({
+              context: self,
+              hoverArea: opt.hoverArea,
+              elGrid: opt.elGrid,
+              clientX: clientX,
+              clientY: clientY,
+              hasBars: self.hasBars
+            });
+            j = capj.j;
+            var capturedSeries = capj.capturedSeries;
+
+            if (capj.hoverX < 0 || capj.hoverX > w.globals.gridWidth) {
+              self.handleMouseOut(opt);
+              return;
+            }
+
+            if (capturedSeries !== null) {
+              var ignoreNull = w.globals.series[capturedSeries][j] === null;
+
+              if (ignoreNull) {
+                opt.tooltipEl.classList.remove('active');
+                return;
+              }
+
+              if (typeof w.globals.series[capturedSeries][j] !== 'undefined') {
+                if (this.tConfig.shared && this.tooltipUtil.isXoverlap(j) && this.tooltipUtil.isinitialSeriesSameLen()) {
+                  this.create(e, self, capturedSeries, j, opt.ttItems);
+                } else {
+                  this.create(e, self, capturedSeries, j, opt.ttItems, false);
+                }
+              } else {
+                if (this.tooltipUtil.isXoverlap(j)) {
+                  self.create(e, self, 0, j, opt.ttItems);
+                }
+              }
+            } else {
+              // couldn't capture any series. check if shared X is same,
+              // if yes, draw a grouped tooltip
+              if (this.tooltipUtil.isXoverlap(j)) {
+                self.create(e, self, 0, j, opt.ttItems);
+              }
+            }
+          } else {
+            if (w.config.chart.type === 'heatmap') {
+              var markerXY = this.intersect.handleHeatTooltip({
+                e: e,
+                opt: opt,
+                x: x,
+                y: y
+              });
+              x = markerXY.x;
+              y = markerXY.y;
+              tooltipEl.style.left = x + 'px';
+              tooltipEl.style.top = y + 'px';
+            } else {
+              if (this.hasBars) {
+                this.intersect.handleBarTooltip({
+                  e: e,
+                  opt: opt
+                });
+              }
+
+              if (this.hasMarkers) {
+                // intersect - line/area/scatter/bubble
+                this.intersect.handleMarkerTooltip({
+                  e: e,
+                  opt: opt,
+                  x: x,
+                  y: y
+                });
+              }
+            }
+          }
+
+          if (this.blyaxisTooltip) {
+            for (var yt = 0; yt < w.config.yaxis.length; yt++) {
+              self.axesTooltip.drawYaxisTooltipText(yt, clientY, self.xyRatios);
+            }
+          }
+
+          opt.tooltipEl.classList.add('active');
+        } else if (e.type === 'mouseout' || e.type === 'touchend') {
+          this.handleMouseOut(opt);
+        }
+      } // tooltip handling for pie/donuts
+
+    }, {
+      key: "nonAxisChartsTooltips",
+      value: function nonAxisChartsTooltips(_ref3) {
+        var e = _ref3.e,
+            opt = _ref3.opt,
+            tooltipRect = _ref3.tooltipRect;
+        var w = this.w;
+        var rel = opt.paths.getAttribute('rel');
+        var tooltipEl = this.getElTooltip();
+        var seriesBound = w.globals.dom.elWrap.getBoundingClientRect();
+
+        if (e.type === 'mousemove' || e.type === 'touchmove') {
+          tooltipEl.classList.add('active');
+          this.tooltipLabels.drawSeriesTexts({
+            ttItems: opt.ttItems,
+            i: parseInt(rel) - 1,
+            shared: false
+          });
+          var x = w.globals.clientX - seriesBound.left - tooltipRect.ttWidth / 2;
+          var y = w.globals.clientY - seriesBound.top - tooltipRect.ttHeight - 10;
+          tooltipEl.style.left = x + 'px';
+          tooltipEl.style.top = y + 'px';
+        } else if (e.type === 'mouseout' || e.type === 'touchend') {
+          tooltipEl.classList.remove('active');
+        }
+      }
+    }, {
+      key: "deactivateHoverFilter",
+      value: function deactivateHoverFilter() {
+        var w = this.w;
+        var graphics = new Graphics(this.ctx);
+        var allPaths = w.globals.dom.Paper.select(".apexcharts-bar-area");
+
+        for (var b = 0; b < allPaths.length; b++) {
+          graphics.pathMouseLeave(allPaths[b]);
+        }
+      }
+    }, {
+      key: "handleMouseOut",
+      value: function handleMouseOut(opt) {
+        var w = this.w;
+        var xcrosshairs = this.getElXCrosshairs();
+        opt.tooltipEl.classList.remove('active');
+        this.deactivateHoverFilter();
+
+        if (w.config.chart.type !== 'bubble') {
+          this.marker.resetPointsSize();
+        }
+
+        if (xcrosshairs !== null) {
+          xcrosshairs.classList.remove('active');
+        }
+
+        if (this.ycrosshairs !== null) {
+          this.ycrosshairs.classList.remove('active');
+        }
+
+        if (this.blxaxisTooltip) {
+          this.xaxisTooltip.classList.remove('active');
+        }
+
+        if (this.blyaxisTooltip) {
+          if (this.yaxisTTEls === null) {
+            this.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip');
+          }
+
+          for (var i = 0; i < this.yaxisTTEls.length; i++) {
+            this.yaxisTTEls[i].classList.remove('active');
+          }
+        }
+      }
+    }, {
+      key: "getElMarkers",
+      value: function getElMarkers() {
+        return this.w.globals.dom.baseEl.querySelectorAll(' .apexcharts-series-markers');
+      }
+    }, {
+      key: "getAllMarkers",
+      value: function getAllMarkers() {
+        return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers .apexcharts-marker');
+      }
+    }, {
+      key: "hasMarkers",
+      value: function hasMarkers() {
+        var markers = this.getElMarkers();
+        return markers.length > 0;
+      }
+    }, {
+      key: "getElBars",
+      value: function getElBars() {
+        return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-series,  .apexcharts-candlestick-series, .apexcharts-rangebar-series');
+      }
+    }, {
+      key: "hasBars",
+      value: function hasBars() {
+        var bars = this.getElBars();
+        return bars.length > 0;
+      }
+    }, {
+      key: "markerClick",
+      value: function markerClick(e, seriesIndex, dataPointIndex) {
+        var w = this.w;
+
+        if (typeof w.config.chart.events.markerClick === 'function') {
+          w.config.chart.events.markerClick(e, this.ctx, {
+            seriesIndex: seriesIndex,
+            dataPointIndex: dataPointIndex,
+            w: w
+          });
+        }
+
+        this.ctx.fireEvent('markerClick', [e, this.ctx, {
+          seriesIndex: seriesIndex,
+          dataPointIndex: dataPointIndex,
+          w: w
+        }]);
+      }
+    }, {
+      key: "create",
+      value: function create(e, context, capturedSeries, j, ttItems) {
+        var shared = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
+        var w = this.w;
+        var ttCtx = context;
+
+        if (e.type === 'mouseup') {
+          this.markerClick(e, capturedSeries, j);
+        }
+
+        if (shared === null) shared = this.tConfig.shared;
+        var hasMarkers = this.hasMarkers();
+        var bars = this.getElBars();
+
+        if (shared) {
+          ttCtx.tooltipLabels.drawSeriesTexts({
+            ttItems: ttItems,
+            i: capturedSeries,
+            j: j,
+            shared: this.showOnIntersect ? false : this.tConfig.shared
+          });
+
+          if (hasMarkers) {
+            if (w.globals.markers.largestSize > 0) {
+              ttCtx.marker.enlargePoints(j);
+            } else {
+              ttCtx.tooltipPosition.moveDynamicPointsOnHover(j);
+            }
+          }
+
+          if (this.hasBars()) {
+            this.barSeriesHeight = this.tooltipUtil.getBarsHeight(bars);
+
+            if (this.barSeriesHeight > 0) {
+              // hover state, activate snap filter
+              var graphics = new Graphics(this.ctx);
+              var paths = w.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(j, "']")); // de-activate first
+
+              this.deactivateHoverFilter();
+              this.tooltipPosition.moveStickyTooltipOverBars(j);
+
+              for (var b = 0; b < paths.length; b++) {
+                graphics.pathMouseEnter(paths[b]);
+              }
+            }
+          }
+        } else {
+          ttCtx.tooltipLabels.drawSeriesTexts({
+            shared: false,
+            ttItems: ttItems,
+            i: capturedSeries,
+            j: j
+          });
+
+          if (this.hasBars()) {
+            ttCtx.tooltipPosition.moveStickyTooltipOverBars(j);
+          }
+
+          if (hasMarkers) {
+            ttCtx.tooltipPosition.moveMarkers(capturedSeries, j);
+          }
+        }
+      }
+    }]);
+
+    return Tooltip;
+  }();
+
+  var icoPan = "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\n    <defs>\n        <path d=\"M0 0h24v24H0z\" id=\"a\"/>\n    </defs>\n    <clipPath id=\"b\">\n        <use overflow=\"visible\" xlink:href=\"#a\"/>\n    </clipPath>\n    <path clip-path=\"url(#b)\" d=\"M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z\"/>\n</svg>";
+
+  var icoZoom = "<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\n    <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/>\n    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n    <path d=\"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\"/>\n</svg>";
+
+  var icoReset = "<svg fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"/>\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n</svg>";
+
+  var icoZoomIn = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n    <path d=\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\n</svg>\n";
+
+  var icoZoomOut = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n    <path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\n</svg>\n";
+
+  var icoSelect = "<svg fill=\"#6E8192\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n    <path d=\"M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2z\"/>\n</svg>";
+
+  var icoMenu = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"/></svg>";
+
+  /**
+   * ApexCharts Toolbar Class for creating toolbar in axis based charts.
+   *
+   * @module Toolbar
+   **/
+
+  var Toolbar =
+  /*#__PURE__*/
+  function () {
+    function Toolbar(ctx) {
+      _classCallCheck(this, Toolbar);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+      this.ev = this.w.config.chart.events;
+      this.localeValues = this.w.globals.locale.toolbar;
+    }
+
+    _createClass(Toolbar, [{
+      key: "createToolbar",
+      value: function createToolbar() {
+        var w = this.w;
+        var elToolbarWrap = document.createElement('div');
+        elToolbarWrap.setAttribute('class', 'apexcharts-toolbar');
+        w.globals.dom.elWrap.appendChild(elToolbarWrap);
+        this.elZoom = document.createElement('div');
+        this.elZoomIn = document.createElement('div');
+        this.elZoomOut = document.createElement('div');
+        this.elPan = document.createElement('div');
+        this.elSelection = document.createElement('div');
+        this.elZoomReset = document.createElement('div');
+        this.elMenuIcon = document.createElement('div');
+        this.elMenu = document.createElement('div');
+        this.elCustomIcons = [];
+        this.t = w.config.chart.toolbar.tools;
+
+        if (Array.isArray(this.t.customIcons)) {
+          for (var i = 0; i < this.t.customIcons.length; i++) {
+            this.elCustomIcons.push(document.createElement('div'));
+          }
+        }
+
+        this.elMenuItems = [];
+        var toolbarControls = [];
+
+        if (this.t.zoomin && w.config.chart.zoom.enabled) {
+          toolbarControls.push({
+            el: this.elZoomIn,
+            icon: typeof this.t.zoomin === 'string' ? this.t.zoomin : icoZoomIn,
+            title: this.localeValues.zoomIn,
+            class: 'apexcharts-zoom-in-icon'
+          });
+        }
+
+        if (this.t.zoomout && w.config.chart.zoom.enabled) {
+          toolbarControls.push({
+            el: this.elZoomOut,
+            icon: typeof this.t.zoomout === 'string' ? this.t.zoomout : icoZoomOut,
+            title: this.localeValues.zoomOut,
+            class: 'apexcharts-zoom-out-icon'
+          });
+        }
+
+        if (this.t.zoom && w.config.chart.zoom.enabled) {
+          toolbarControls.push({
+            el: this.elZoom,
+            icon: typeof this.t.zoom === 'string' ? this.t.zoom : icoZoom,
+            title: this.localeValues.selectionZoom,
+            class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-zoom-icon'
+          });
+        }
+
+        if (this.t.selection && w.config.chart.selection.enabled) {
+          toolbarControls.push({
+            el: this.elSelection,
+            icon: typeof this.t.selection === 'string' ? this.t.selection : icoSelect,
+            title: this.localeValues.selection,
+            class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-selection-icon'
+          });
+        }
+
+        if (this.t.pan && w.config.chart.zoom.enabled) {
+          toolbarControls.push({
+            el: this.elPan,
+            icon: typeof this.t.pan === 'string' ? this.t.pan : icoPan,
+            title: this.localeValues.pan,
+            class: w.globals.isTouchDevice ? 'hidden' : 'apexcharts-pan-icon'
+          });
+        }
+
+        if (this.t.reset && w.config.chart.zoom.enabled) {
+          toolbarControls.push({
+            el: this.elZoomReset,
+            icon: typeof this.t.reset === 'string' ? this.t.reset : icoReset,
+            title: this.localeValues.reset,
+            class: 'apexcharts-reset-zoom-icon'
+          });
+        }
+
+        if (this.t.download) {
+          toolbarControls.push({
+            el: this.elMenuIcon,
+            icon: typeof this.t.download === 'string' ? this.t.download : icoMenu,
+            title: this.localeValues.menu,
+            class: 'apexcharts-menu-icon'
+          });
+        }
+
+        for (var _i = 0; _i < this.elCustomIcons.length; _i++) {
+          toolbarControls.push({
+            el: this.elCustomIcons[_i],
+            icon: this.t.customIcons[_i].icon,
+            title: this.t.customIcons[_i].title,
+            index: this.t.customIcons[_i].index,
+            class: 'apexcharts-toolbar-custom-icon ' + this.t.customIcons[_i].class
+          });
+        }
+
+        toolbarControls.forEach(function (t, index) {
+          if (t.index) {
+            Utils.moveIndexInArray(toolbarControls, index, t.index);
+          }
+        });
+
+        for (var _i2 = 0; _i2 < toolbarControls.length; _i2++) {
+          Graphics.setAttrs(toolbarControls[_i2].el, {
+            class: toolbarControls[_i2].class,
+            title: toolbarControls[_i2].title
+          });
+          toolbarControls[_i2].el.innerHTML = toolbarControls[_i2].icon;
+          elToolbarWrap.appendChild(toolbarControls[_i2].el);
+        }
+
+        elToolbarWrap.appendChild(this.elMenu);
+        Graphics.setAttrs(this.elMenu, {
+          class: 'apexcharts-menu'
+        });
+        var menuItems = [{
+          name: 'exportSVG',
+          title: this.localeValues.exportToSVG
+        }, {
+          name: 'exportPNG',
+          title: this.localeValues.exportToPNG
+        }];
+
+        for (var _i3 = 0; _i3 < menuItems.length; _i3++) {
+          this.elMenuItems.push(document.createElement('div'));
+          this.elMenuItems[_i3].innerHTML = menuItems[_i3].title;
+          Graphics.setAttrs(this.elMenuItems[_i3], {
+            class: "apexcharts-menu-item ".concat(menuItems[_i3].name),
+            title: menuItems[_i3].title
+          });
+          this.elMenu.appendChild(this.elMenuItems[_i3]);
+        }
+
+        if (w.globals.zoomEnabled) {
+          this.elZoom.classList.add('selected');
+        } else if (w.globals.panEnabled) {
+          this.elPan.classList.add('selected');
+        } else if (w.globals.selectionEnabled) {
+          this.elSelection.classList.add('selected');
+        }
+
+        this.addToolbarEventListeners();
+      }
+    }, {
+      key: "addToolbarEventListeners",
+      value: function addToolbarEventListeners() {
+        var _this = this;
+
+        this.elZoomReset.addEventListener('click', this.handleZoomReset.bind(this));
+        this.elSelection.addEventListener('click', this.toggleSelection.bind(this));
+        this.elZoom.addEventListener('click', this.toggleZooming.bind(this));
+        this.elZoomIn.addEventListener('click', this.handleZoomIn.bind(this));
+        this.elZoomOut.addEventListener('click', this.handleZoomOut.bind(this));
+        this.elPan.addEventListener('click', this.togglePanning.bind(this));
+        this.elMenuIcon.addEventListener('click', this.toggleMenu.bind(this));
+        this.elMenuItems.forEach(function (m) {
+          if (m.classList.contains('exportSVG')) {
+            m.addEventListener('click', _this.downloadSVG.bind(_this));
+          } else if (m.classList.contains('exportPNG')) {
+            m.addEventListener('click', _this.downloadPNG.bind(_this));
+          }
+        });
+
+        for (var i = 0; i < this.t.customIcons.length; i++) {
+          this.elCustomIcons[i].addEventListener('click', this.t.customIcons[i].click);
+        }
+      }
+    }, {
+      key: "toggleSelection",
+      value: function toggleSelection() {
+        this.toggleOtherControls();
+        this.w.globals.selectionEnabled = !this.w.globals.selectionEnabled;
+
+        if (!this.elSelection.classList.contains('selected')) {
+          this.elSelection.classList.add('selected');
+        } else {
+          this.elSelection.classList.remove('selected');
+        }
+      }
+    }, {
+      key: "toggleZooming",
+      value: function toggleZooming() {
+        this.toggleOtherControls();
+        this.w.globals.zoomEnabled = !this.w.globals.zoomEnabled;
+
+        if (!this.elZoom.classList.contains('selected')) {
+          this.elZoom.classList.add('selected');
+        } else {
+          this.elZoom.classList.remove('selected');
+        }
+      }
+    }, {
+      key: "getToolbarIconsReference",
+      value: function getToolbarIconsReference() {
+        var w = this.w;
+
+        if (!this.elZoom) {
+          this.elZoom = w.globals.dom.baseEl.querySelector('.apexcharts-zoom-icon');
+        }
+
+        if (!this.elPan) {
+          this.elPan = w.globals.dom.baseEl.querySelector('.apexcharts-pan-icon');
+        }
+
+        if (!this.elSelection) {
+          this.elSelection = w.globals.dom.baseEl.querySelector('.apexcharts-selection-icon');
+        }
+      }
+    }, {
+      key: "enableZooming",
+      value: function enableZooming() {
+        this.toggleOtherControls();
+        this.w.globals.zoomEnabled = true;
+
+        if (this.elZoom) {
+          this.elZoom.classList.add('selected');
+        }
+
+        if (this.elPan) {
+          this.elPan.classList.remove('selected');
+        }
+      }
+    }, {
+      key: "enablePanning",
+      value: function enablePanning() {
+        this.toggleOtherControls();
+        this.w.globals.panEnabled = true;
+
+        if (this.elPan) {
+          this.elPan.classList.add('selected');
+        }
+
+        if (this.elZoom) {
+          this.elZoom.classList.remove('selected');
+        }
+      }
+    }, {
+      key: "togglePanning",
+      value: function togglePanning() {
+        this.toggleOtherControls();
+        this.w.globals.panEnabled = !this.w.globals.panEnabled;
+
+        if (!this.elPan.classList.contains('selected')) {
+          this.elPan.classList.add('selected');
+        } else {
+          this.elPan.classList.remove('selected');
+        }
+      }
+    }, {
+      key: "toggleOtherControls",
+      value: function toggleOtherControls() {
+        var w = this.w;
+        w.globals.panEnabled = false;
+        w.globals.zoomEnabled = false;
+        w.globals.selectionEnabled = false;
+        this.getToolbarIconsReference();
+
+        if (this.elPan) {
+          this.elPan.classList.remove('selected');
+        }
+
+        if (this.elSelection) {
+          this.elSelection.classList.remove('selected');
+        }
+
+        if (this.elZoom) {
+          this.elZoom.classList.remove('selected');
+        }
+      }
+    }, {
+      key: "handleZoomIn",
+      value: function handleZoomIn() {
+        var w = this.w;
+        var centerX = (w.globals.minX + w.globals.maxX) / 2;
+        var newMinX = (w.globals.minX + centerX) / 2;
+        var newMaxX = (w.globals.maxX + centerX) / 2;
+
+        if (!w.globals.disableZoomIn) {
+          this.zoomUpdateOptions(newMinX, newMaxX);
+        }
+      }
+    }, {
+      key: "handleZoomOut",
+      value: function handleZoomOut() {
+        var w = this.w; // avoid zooming out beyond 1000 which may result in NaN values being printed on x-axis
+
+        if (w.config.xaxis.type === 'datetime' && new Date(w.globals.minX).getUTCFullYear() < 1000) {
+          return;
+        }
+
+        var centerX = (w.globals.minX + w.globals.maxX) / 2;
+        var newMinX = w.globals.minX - (centerX - w.globals.minX);
+        var newMaxX = w.globals.maxX - (centerX - w.globals.maxX);
+
+        if (!w.globals.disableZoomOut) {
+          this.zoomUpdateOptions(newMinX, newMaxX);
+        }
+      }
+    }, {
+      key: "zoomUpdateOptions",
+      value: function zoomUpdateOptions(newMinX, newMaxX) {
+        var xaxis = {
+          min: newMinX,
+          max: newMaxX
+        };
+        var beforeZoomRange = this.getBeforeZoomRange(xaxis);
+
+        if (beforeZoomRange) {
+          xaxis = beforeZoomRange.xaxis;
+        }
+
+        this.w.globals.zoomed = true;
+
+        this.ctx._updateOptions({
+          xaxis: xaxis
+        }, false, this.w.config.chart.animations.dynamicAnimation.enabled);
+
+        this.zoomCallback(xaxis);
+      }
+    }, {
+      key: "zoomCallback",
+      value: function zoomCallback(xaxis, yaxis) {
+        if (typeof this.ev.zoomed === 'function') {
+          this.ev.zoomed(this.ctx, {
+            xaxis: xaxis,
+            yaxis: yaxis
+          });
+        }
+      }
+    }, {
+      key: "getBeforeZoomRange",
+      value: function getBeforeZoomRange(xaxis, yaxis) {
+        var newRange = null;
+
+        if (typeof this.ev.beforeZoom === 'function') {
+          newRange = this.ev.beforeZoom(this, {
+            xaxis: xaxis,
+            yaxis: yaxis
+          });
+        }
+
+        return newRange;
+      }
+    }, {
+      key: "toggleMenu",
+      value: function toggleMenu() {
+        if (this.elMenu.classList.contains('open')) {
+          this.elMenu.classList.remove('open');
+        } else {
+          this.elMenu.classList.add('open');
+        }
+      }
+    }, {
+      key: "downloadPNG",
+      value: function downloadPNG() {
+        var downloadPNG = new Exports(this.ctx);
+        downloadPNG.exportToPng(this.ctx);
+        this.toggleMenu();
+      }
+    }, {
+      key: "downloadSVG",
+      value: function downloadSVG() {
+        var downloadSVG = new Exports(this.ctx);
+        downloadSVG.exportToSVG();
+        this.toggleMenu();
+      }
+    }, {
+      key: "handleZoomReset",
+      value: function handleZoomReset(e) {
+        var _this2 = this;
+
+        var charts = this.ctx.getSyncedCharts();
+        charts.forEach(function (ch) {
+          var w = ch.w;
+
+          if (w.globals.minX !== w.globals.initialminX && w.globals.maxX !== w.globals.initialmaxX) {
+            ch.revertDefaultAxisMinMax();
+
+            if (typeof w.config.chart.events.zoomed === 'function') {
+              _this2.zoomCallback({
+                min: w.config.xaxis.min,
+                max: w.config.xaxis.max
+              });
+            }
+
+            w.globals.zoomed = false;
+
+            ch._updateSeries(w.globals.initialSeries, w.config.chart.animations.dynamicAnimation.enabled);
+          }
+        });
+      }
+    }, {
+      key: "destroy",
+      value: function destroy() {
+        if (this.elZoomReset) {
+          this.elZoomReset.removeEventListener('click', this.handleZoomReset.bind(this));
+          this.elSelection.removeEventListener('click', this.toggleSelection.bind(this));
+          this.elZoom.removeEventListener('click', this.toggleZooming.bind(this));
+          this.elZoomIn.removeEventListener('click', this.handleZoomIn.bind(this));
+          this.elZoomOut.removeEventListener('click', this.handleZoomOut.bind(this));
+          this.elPan.removeEventListener('click', this.togglePanning.bind(this));
+          this.elMenuIcon.removeEventListener('click', this.toggleMenu.bind(this));
+        }
+
+        this.elZoom = null;
+        this.elZoomIn = null;
+        this.elZoomOut = null;
+        this.elPan = null;
+        this.elSelection = null;
+        this.elZoomReset = null;
+        this.elMenuIcon = null;
+      }
+    }]);
+
+    return Toolbar;
+  }();
+
+  /**
+   * ApexCharts Zoom Class for handling zooming and panning on axes based charts.
+   *
+   * @module ZoomPanSelection
+   **/
+
+  var ZoomPanSelection =
+  /*#__PURE__*/
+  function (_Toolbar) {
+    _inherits(ZoomPanSelection, _Toolbar);
+
+    function ZoomPanSelection(ctx) {
+      var _this;
+
+      _classCallCheck(this, ZoomPanSelection);
+
+      _this = _possibleConstructorReturn(this, _getPrototypeOf(ZoomPanSelection).call(this, ctx));
+      _this.ctx = ctx;
+      _this.w = ctx.w;
+      _this.dragged = false;
+      _this.graphics = new Graphics(_this.ctx);
+      _this.eventList = ['mousedown', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend'];
+      _this.clientX = 0;
+      _this.clientY = 0;
+      _this.startX = 0;
+      _this.endX = 0;
+      _this.dragX = 0;
+      _this.startY = 0;
+      _this.endY = 0;
+      _this.dragY = 0;
+      return _this;
+    }
+
+    _createClass(ZoomPanSelection, [{
+      key: "init",
+      value: function init(_ref) {
+        var _this2 = this;
+
+        var xyRatios = _ref.xyRatios;
+        var w = this.w;
+        var me = this;
+        this.xyRatios = xyRatios;
+        this.zoomRect = this.graphics.drawRect(0, 0, 0, 0);
+        this.selectionRect = this.graphics.drawRect(0, 0, 0, 0);
+        this.gridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid');
+        this.zoomRect.node.classList.add('apexcharts-zoom-rect');
+        this.selectionRect.node.classList.add('apexcharts-selection-rect');
+        w.globals.dom.elGraphical.add(this.zoomRect);
+        w.globals.dom.elGraphical.add(this.selectionRect);
+
+        if (w.config.chart.selection.type === 'x') {
+          this.slDraggableRect = this.selectionRect.draggable({
+            minX: 0,
+            minY: 0,
+            maxX: w.globals.gridWidth,
+            maxY: w.globals.gridHeight
+          }).on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+        } else if (w.config.chart.selection.type === 'y') {
+          this.slDraggableRect = this.selectionRect.draggable({
+            minX: 0,
+            maxX: w.globals.gridWidth
+          }).on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+        } else {
+          this.slDraggableRect = this.selectionRect.draggable().on('dragmove', this.selectionDragging.bind(this, 'dragging'));
+        }
+
+        this.preselectedSelection();
+        this.hoverArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass);
+        this.hoverArea.classList.add('zoomable');
+        this.eventList.forEach(function (event) {
+          _this2.hoverArea.addEventListener(event, me.svgMouseEvents.bind(me, xyRatios), {
+            capture: false,
+            passive: true
+          });
+        });
+      } // remove the event listeners which were previously added on hover area
+
+    }, {
+      key: "destroy",
+      value: function destroy() {
+        var _this3 = this;
+
+        var me = this;
+        this.eventList.forEach(function (event) {
+          if (_this3.hoverArea) {
+            _this3.hoverArea.removeEventListener(event, me.svgMouseEvents.bind(me, me.xyRatios), {
+              capture: false,
+              passive: true
+            });
+          }
+        });
+
+        if (this.slDraggableRect) {
+          this.slDraggableRect.draggable(false);
+          this.slDraggableRect.off();
+          this.selectionRect.off();
+        }
+
+        this.selectionRect = null;
+        this.zoomRect = null;
+        this.gridRect = null;
+      }
+    }, {
+      key: "svgMouseEvents",
+      value: function svgMouseEvents(xyRatios, e) {
+        var w = this.w;
+        var me = this;
+        var toolbar = this.ctx.toolbar;
+        var zoomtype = w.globals.zoomEnabled ? w.config.chart.zoom.type : w.config.chart.selection.type;
+
+        if (e.shiftKey) {
+          this.shiftWasPressed = true;
+          toolbar.enablePanning();
+        } else {
+          if (this.shiftWasPressed) {
+            toolbar.enableZooming();
+            this.shiftWasPressed = false;
+          }
+        }
+
+        var falsePositives = e.target.classList.contains('apexcharts-selection-rect') || e.target.parentNode.classList.contains('apexcharts-toolbar');
+        if (falsePositives) return;
+        me.clientX = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientX : e.type === 'touchend' ? e.changedTouches[0].clientX : e.clientX;
+        me.clientY = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientY : e.type === 'touchend' ? e.changedTouches[0].clientY : e.clientY;
+
+        if (e.type === 'mousedown' && e.which === 1) {
+          var gridRectDim = me.gridRect.getBoundingClientRect();
+          me.startX = me.clientX - gridRectDim.left;
+          me.startY = me.clientY - gridRectDim.top;
+          me.dragged = false;
+          me.w.globals.mousedown = true;
+        }
+
+        if (e.type === 'mousemove' && e.which === 1 || e.type === 'touchmove') {
+          me.dragged = true;
+
+          if (w.globals.panEnabled) {
+            w.globals.selection = null;
+
+            if (me.w.globals.mousedown) {
+              me.panDragging({
+                context: me,
+                zoomtype: zoomtype,
+                xyRatios: xyRatios
+              });
+            }
+          } else {
+            if (me.w.globals.mousedown && w.globals.zoomEnabled || me.w.globals.mousedown && w.globals.selectionEnabled) {
+              me.selection = me.selectionDrawing({
+                context: me,
+                zoomtype: zoomtype
+              });
+            }
+          }
+        }
+
+        if (e.type === 'mouseup' || e.type === 'touchend') {
+          // we will be calling getBoundingClientRect on each mousedown/mousemove/mouseup
+          var _gridRectDim = me.gridRect.getBoundingClientRect();
+
+          if (me.w.globals.mousedown) {
+            // user released the drag, now do all the calculations
+            me.endX = me.clientX - _gridRectDim.left;
+            me.endY = me.clientY - _gridRectDim.top;
+            me.dragX = Math.abs(me.endX - me.startX);
+            me.dragY = Math.abs(me.endY - me.startY);
+
+            if (w.globals.zoomEnabled || w.globals.selectionEnabled) {
+              me.selectionDrawn({
+                context: me,
+                zoomtype: zoomtype
+              });
+            }
+          }
+
+          if (w.globals.zoomEnabled) {
+            me.hideSelectionRect(this.selectionRect);
+          }
+
+          me.dragged = false;
+          me.w.globals.mousedown = false;
+        }
+
+        this.makeSelectionRectDraggable();
+      }
+    }, {
+      key: "makeSelectionRectDraggable",
+      value: function makeSelectionRectDraggable() {
+        var w = this.w;
+        if (!this.selectionRect) return;
+        var rectDim = this.selectionRect.node.getBoundingClientRect();
+
+        if (rectDim.width > 0 && rectDim.height > 0) {
+          this.slDraggableRect.selectize().resize({
+            constraint: {
+              minX: 0,
+              minY: 0,
+              maxX: w.globals.gridWidth,
+              maxY: w.globals.gridHeight
+            }
+          }).on('resizing', this.selectionDragging.bind(this, 'resizing'));
+        }
+      }
+    }, {
+      key: "preselectedSelection",
+      value: function preselectedSelection() {
+        var w = this.w;
+        var xyRatios = this.xyRatios;
+
+        if (!w.globals.zoomEnabled) {
+          if (typeof w.globals.selection !== 'undefined' && w.globals.selection !== null) {
+            this.drawSelectionRect(w.globals.selection);
+          } else {
+            if (w.config.chart.selection.xaxis.min !== undefined && w.config.chart.selection.xaxis.max !== undefined) {
+              var x = (w.config.chart.selection.xaxis.min - w.globals.minX) / xyRatios.xRatio;
+              var width = w.globals.gridWidth - (w.globals.maxX - w.config.chart.selection.xaxis.max) / xyRatios.xRatio - x;
+              var selectionRect = {
+                x: x,
+                y: 0,
+                width: width,
+                height: w.globals.gridHeight,
+                translateX: 0,
+                translateY: 0,
+                selectionEnabled: true
+              };
+              this.drawSelectionRect(selectionRect);
+              this.makeSelectionRectDraggable();
+
+              if (typeof w.config.chart.events.selection === 'function') {
+                w.config.chart.events.selection(this.ctx, {
+                  xaxis: {
+                    min: w.config.chart.selection.xaxis.min,
+                    max: w.config.chart.selection.xaxis.max
+                  },
+                  yaxis: {}
+                });
+              }
+            }
+          }
+        }
+      }
+    }, {
+      key: "drawSelectionRect",
+      value: function drawSelectionRect(_ref2) {
+        var x = _ref2.x,
+            y = _ref2.y,
+            width = _ref2.width,
+            height = _ref2.height,
+            translateX = _ref2.translateX,
+            translateY = _ref2.translateY;
+        var w = this.w;
+        var zoomRect = this.zoomRect;
+        var selectionRect = this.selectionRect;
+
+        if (this.dragged || w.globals.selection !== null) {
+          var scalingAttrs = {
+            transform: 'translate(' + translateX + ', ' + translateY + ')' // change styles based on zoom or selection
+            // zoom is Enabled and user has dragged, so draw blue rect
+
+          };
+
+          if (w.globals.zoomEnabled && this.dragged) {
+            zoomRect.attr({
+              x: x,
+              y: y,
+              width: width,
+              height: height,
+              fill: w.config.chart.zoom.zoomedArea.fill.color,
+              'fill-opacity': w.config.chart.zoom.zoomedArea.fill.opacity,
+              stroke: w.config.chart.zoom.zoomedArea.stroke.color,
+              'stroke-width': w.config.chart.zoom.zoomedArea.stroke.width,
+              'stroke-opacity': w.config.chart.zoom.zoomedArea.stroke.opacity
+            });
+            Graphics.setAttrs(zoomRect.node, scalingAttrs);
+          } // selection is enabled
+
+
+          if (w.globals.selectionEnabled) {
+            selectionRect.attr({
+              x: x,
+              y: y,
+              width: width > 0 ? width : 0,
+              height: height > 0 ? height : 0,
+              fill: w.config.chart.selection.fill.color,
+              'fill-opacity': w.config.chart.selection.fill.opacity,
+              stroke: w.config.chart.selection.stroke.color,
+              'stroke-width': w.config.chart.selection.stroke.width,
+              'stroke-dasharray': w.config.chart.selection.stroke.dashArray,
+              'stroke-opacity': w.config.chart.selection.stroke.opacity
+            });
+            Graphics.setAttrs(selectionRect.node, scalingAttrs);
+          }
+        }
+      }
+    }, {
+      key: "hideSelectionRect",
+      value: function hideSelectionRect(rect) {
+        if (rect) {
+          rect.attr({
+            x: 0,
+            y: 0,
+            width: 0,
+            height: 0
+          });
+        }
+      }
+    }, {
+      key: "selectionDrawing",
+      value: function selectionDrawing(_ref3) {
+        var context = _ref3.context,
+            zoomtype = _ref3.zoomtype;
+        var w = this.w;
+        var me = context;
+        var gridRectDim = this.gridRect.getBoundingClientRect();
+        var startX = me.startX - 1;
+        var startY = me.startY;
+        var selectionWidth = me.clientX - gridRectDim.left - startX;
+        var selectionHeight = me.clientY - gridRectDim.top - startY;
+        var translateX = 0;
+        var translateY = 0;
+        var selectionRect = {};
+
+        if (Math.abs(selectionWidth + startX) > w.globals.gridWidth || me.clientX - gridRectDim.left < 0) {
+          // user dragged the mouse outside drawing area
+          // TODO: test the selectionRect and make sure it doesn't crosses drawing area
+          me.hideSelectionRect(this.zoomRect);
+          me.dragged = false;
+          me.w.globals.mousedown = false;
+        } // inverse selection X
+
+
+        if (startX > me.clientX - gridRectDim.left) {
+          selectionWidth = Math.abs(selectionWidth);
+          translateX = -selectionWidth;
+        } // inverse selection Y
+
+
+        if (startY > me.clientY - gridRectDim.top) {
+          selectionHeight = Math.abs(selectionHeight);
+          translateY = -selectionHeight;
+        }
+
+        if (zoomtype === 'x') {
+          selectionRect = {
+            x: startX,
+            y: 0,
+            width: selectionWidth,
+            height: w.globals.gridHeight,
+            translateX: translateX,
+            translateY: 0
+          };
+        } else if (zoomtype === 'y') {
+          selectionRect = {
+            x: 0,
+            y: startY,
+            width: w.globals.gridWidth,
+            height: selectionHeight,
+            translateX: 0,
+            translateY: translateY
+          };
+        } else {
+          selectionRect = {
+            x: startX,
+            y: startY,
+            width: selectionWidth,
+            height: selectionHeight,
+            translateX: translateX,
+            translateY: translateY
+          };
+        }
+
+        me.drawSelectionRect(selectionRect);
+        me.selectionDragging('resizing');
+        return selectionRect;
+      }
+    }, {
+      key: "selectionDragging",
+      value: function selectionDragging(type, e) {
+        var _this4 = this;
+
+        var w = this.w;
+        var xyRatios = this.xyRatios;
+        var selRect = this.selectionRect;
+        var timerInterval = 0;
+
+        if (type === 'resizing') {
+          timerInterval = 30;
+        }
+
+        if (typeof w.config.chart.events.selection === 'function' && w.globals.selectionEnabled) {
+          // a small debouncer is required when resizing to avoid freezing the chart
+          clearTimeout(this.w.globals.selectionResizeTimer);
+          this.w.globals.selectionResizeTimer = window.setTimeout(function () {
+            var gridRectDim = _this4.gridRect.getBoundingClientRect();
+
+            var selectionRect = selRect.node.getBoundingClientRect();
+            var minX = w.globals.xAxisScale.niceMin + (selectionRect.left - gridRectDim.left) * xyRatios.xRatio;
+            var maxX = w.globals.xAxisScale.niceMin + (selectionRect.right - gridRectDim.left) * xyRatios.xRatio;
+            var minY = w.globals.yAxisScale[0].niceMin + (gridRectDim.bottom - selectionRect.bottom) * xyRatios.yRatio[0];
+            var maxY = w.globals.yAxisScale[0].niceMax - (selectionRect.top - gridRectDim.top) * xyRatios.yRatio[0];
+            w.config.chart.events.selection(_this4.ctx, {
+              xaxis: {
+                min: minX,
+                max: maxX
+              },
+              yaxis: {
+                min: minY,
+                max: maxY
+              }
+            });
+          }, timerInterval);
+        }
+      }
+    }, {
+      key: "selectionDrawn",
+      value: function selectionDrawn(_ref4) {
+        var context = _ref4.context,
+            zoomtype = _ref4.zoomtype;
+        var w = this.w;
+        var me = context;
+        var xyRatios = this.xyRatios;
+        var toolbar = this.ctx.toolbar;
+
+        if (me.startX > me.endX) {
+          var tempX = me.startX;
+          me.startX = me.endX;
+          me.endX = tempX;
+        }
+
+        if (me.startY > me.endY) {
+          var tempY = me.startY;
+          me.startY = me.endY;
+          me.endY = tempY;
+        }
+
+        var xLowestValue = w.globals.xAxisScale.niceMin + me.startX * xyRatios.xRatio;
+        var xHighestValue = w.globals.xAxisScale.niceMin + me.endX * xyRatios.xRatio; // TODO: we will consider the 1st y axis values here for getting highest and lowest y
+
+        var yHighestValue = [];
+        var yLowestValue = [];
+        w.config.yaxis.forEach(function (yaxe, index) {
+          yHighestValue.push(Math.floor(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.startY));
+          yLowestValue.push(Math.floor(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.endY));
+        });
+
+        if (me.dragged && (me.dragX > 10 || me.dragY > 10) && xLowestValue !== xHighestValue) {
+          if (w.globals.zoomEnabled) {
+            var yaxis = Utils.clone(w.config.yaxis); // before zooming in/out, store the last yaxis and xaxis range, so that when user hits the RESET button, we get the original range
+            // also - make sure user is not already zoomed in/out - otherwise we will store zoomed values in lastAxis
+
+            if (!w.globals.zoomed) {
+              w.globals.lastXAxis = Utils.clone(w.config.xaxis);
+              w.globals.lastYAxis = Utils.clone(w.config.yaxis);
+            }
+
+            var xaxis = {
+              min: xLowestValue,
+              max: xHighestValue
+            };
+
+            if (zoomtype === 'xy' || zoomtype === 'y') {
+              yaxis.forEach(function (yaxe, index) {
+                yaxis[index].min = yLowestValue[index];
+                yaxis[index].max = yHighestValue[index];
+              });
+            }
+
+            if (w.config.chart.zoom.autoScaleYaxis) {
+              var scale = new Range(me.ctx);
+              yaxis = scale.autoScaleY(me.ctx, {
+                xaxis: xaxis
+              });
+            }
+
+            if (toolbar) {
+              var beforeZoomRange = toolbar.getBeforeZoomRange(xaxis, yaxis);
+
+              if (beforeZoomRange) {
+                xaxis = beforeZoomRange.xaxis ? beforeZoomRange.xaxis : xaxis;
+                yaxis = beforeZoomRange.yaxis ? beforeZoomRange.yaxe : yaxis;
+              }
+            }
+
+            me.ctx._updateOptions({
+              xaxis: xaxis,
+              yaxis: yaxis
+            }, false, me.w.config.chart.animations.dynamicAnimation.enabled);
+
+            if (typeof w.config.chart.events.zoomed === 'function') {
+              toolbar.zoomCallback(xaxis, yaxis);
+            }
+
+            w.globals.zoomed = true;
+          } else if (w.globals.selectionEnabled) {
+            var _yaxis = null;
+            var _xaxis = null;
+            _xaxis = {
+              min: xLowestValue,
+              max: xHighestValue
+            };
+
+            if (zoomtype === 'xy' || zoomtype === 'y') {
+              _yaxis = Utils.clone(w.config.yaxis);
+
+              _yaxis.forEach(function (yaxe, index) {
+                _yaxis[index].min = yLowestValue[index];
+                _yaxis[index].max = yHighestValue[index];
+              });
+            }
+
+            w.globals.selection = me.selection;
+
+            if (typeof w.config.chart.events.selection === 'function') {
+              w.config.chart.events.selection(me.ctx, {
+                xaxis: _xaxis,
+                yaxis: _yaxis
+              });
+            }
+          }
+        }
+      }
+    }, {
+      key: "panDragging",
+      value: function panDragging(_ref5) {
+        var context = _ref5.context,
+            zoomtype = _ref5.zoomtype;
+        var w = this.w;
+        var me = context;
+        var moveDirection; // check to make sure there is data to compare against
+
+        if (typeof w.globals.lastClientPosition.x !== 'undefined') {
+          // get the change from last position to this position
+          var deltaX = w.globals.lastClientPosition.x - me.clientX;
+          var deltaY = w.globals.lastClientPosition.y - me.clientY; // check which direction had the highest amplitude and then figure out direction by checking if the value is greater or less than zero
+
+          if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0) {
+            moveDirection = 'left';
+          } else if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX < 0) {
+            moveDirection = 'right';
+          } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY > 0) {
+            moveDirection = 'up';
+          } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY < 0) {
+            moveDirection = 'down';
+          }
+        } // set the new last position to the current for next time (to get the position of drag)
+
+
+        w.globals.lastClientPosition = {
+          x: me.clientX,
+          y: me.clientY
+        };
+        var xLowestValue = w.globals.minX;
+        var xHighestValue = w.globals.maxX;
+        this.panScrolled(moveDirection, xLowestValue, xHighestValue);
+      }
+    }, {
+      key: "panScrolled",
+      value: function panScrolled(moveDirection, xLowestValue, xHighestValue) {
+        var w = this.w;
+        var xyRatios = this.xyRatios;
+        var yaxis = Utils.clone(w.config.yaxis);
+
+        if (moveDirection === 'left') {
+          xLowestValue = w.globals.minX + w.globals.gridWidth / 15 * xyRatios.xRatio;
+          xHighestValue = w.globals.maxX + w.globals.gridWidth / 15 * xyRatios.xRatio;
+        } else if (moveDirection === 'right') {
+          xLowestValue = w.globals.minX - w.globals.gridWidth / 15 * xyRatios.xRatio;
+          xHighestValue = w.globals.maxX - w.globals.gridWidth / 15 * xyRatios.xRatio;
+        }
+
+        if (xLowestValue < w.globals.initialminX || xHighestValue > w.globals.initialmaxX) {
+          xLowestValue = w.globals.minX;
+          xHighestValue = w.globals.maxX;
+        }
+
+        var xaxis = {
+          min: xLowestValue,
+          max: xHighestValue
+        };
+
+        if (w.config.chart.zoom.autoScaleYaxis) {
+          var scale = new Range(me.ctx);
+          yaxis = scale.autoScaleY(me.ctx, {
+            xaxis: xaxis
+          });
+        }
+
+        this.ctx._updateOptions({
+          xaxis: {
+            min: xLowestValue,
+            max: xHighestValue
+          },
+          yaxis: yaxis
+        }, false, false);
+
+        if (typeof w.config.chart.events.scrolled === 'function') {
+          w.config.chart.events.scrolled(this.ctx, {
+            xaxis: {
+              min: xLowestValue,
+              max: xHighestValue
+            }
+          });
+        }
+      }
+    }]);
+
+    return ZoomPanSelection;
+  }(Toolbar);
+
+  var TitleSubtitle =
+  /*#__PURE__*/
+  function () {
+    function TitleSubtitle(ctx) {
+      _classCallCheck(this, TitleSubtitle);
+
+      this.ctx = ctx;
+      this.w = ctx.w;
+    }
+
+    _createClass(TitleSubtitle, [{
+      key: "draw",
+      value: function draw() {
+        this.drawTitleSubtitle('title');
+        this.drawTitleSubtitle('subtitle');
+      }
+    }, {
+      key: "drawTitleSubtitle",
+      value: function drawTitleSubtitle(type) {
+        var w = this.w;
+        var tsConfig = type === 'title' ? w.config.title : w.config.subtitle;
+        var x = w.globals.svgWidth / 2;
+        var y = tsConfig.offsetY;
+        var textAnchor = 'middle';
+
+        if (tsConfig.align === 'left') {
+          x = 10;
+          textAnchor = 'start';
+        } else if (tsConfig.align === 'right') {
+          x = w.globals.svgWidth - 10;
+          textAnchor = 'end';
+        }
+
+        x = x + tsConfig.offsetX;
+        y = y + parseInt(tsConfig.style.fontSize) + 2;
+
+        if (tsConfig.text !== undefined) {
+          var graphics = new Graphics(this.ctx);
+          var titleText = graphics.drawText({
+            x: x,
+            y: y,
+            text: tsConfig.text,
+            textAnchor: textAnchor,
+            fontSize: tsConfig.style.fontSize,
+            fontFamily: tsConfig.style.fontFamily,
+            foreColor: tsConfig.style.color,
+            opacity: 1
+          });
+          titleText.node.setAttribute('class', "apexcharts-".concat(type, "-text"));
+          w.globals.dom.Paper.add(titleText);
+        }
+      }
+    }]);
+
+    return TitleSubtitle;
+  }();
+
+  (function (root, factory) {
+    /* istanbul ignore next */
+    if (typeof define === 'function' && define.amd) {
+      define(function () {
+        return factory(root, root.document);
+      });
+      /* below check fixes #412 */
+    } else if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof module !== 'undefined') {
+      module.exports = root.document ? factory(root, root.document) : function (w) {
+        return factory(w, w.document);
+      };
+    } else {
+      root.SVG = factory(root, root.document);
+    }
+  })(typeof window !== 'undefined' ? window : undefined, function (window, document) {
+    // Find global reference - uses 'this' by default when available,
+    // falls back to 'window' otherwise (for bundlers like Webpack)
+    var globalRef = typeof this !== 'undefined' ? this : window; // The main wrapping element
+
+    var SVG = globalRef.SVG = function (element) {
+      if (SVG.supported) {
+        element = new SVG.Doc(element);
+
+        if (!SVG.parser.draw) {
+          SVG.prepare();
+        }
+
+        return element;
+      }
+    }; // Default namespaces
+
+
+    SVG.ns = 'http://www.w3.org/2000/svg';
+    SVG.xmlns = 'http://www.w3.org/2000/xmlns/';
+    SVG.xlink = 'http://www.w3.org/1999/xlink';
+    SVG.svgjs = 'http://svgjs.com/svgjs'; // Svg support test
+
+    SVG.supported = function () {
+      return true; // !!document.createElementNS &&
+      //     !! document.createElementNS(SVG.ns,'svg').createSVGRect
+    }(); // Don't bother to continue if SVG is not supported
+
+
+    if (!SVG.supported) return false; // Element id sequence
+
+    SVG.did = 1000; // Get next named element id
+
+    SVG.eid = function (name) {
+      return 'Svgjs' + capitalize(name) + SVG.did++;
+    }; // Method for element creation
+
+
+    SVG.create = function (name) {
+      // create element
+      var element = document.createElementNS(this.ns, name); // apply unique id
+
+      element.setAttribute('id', this.eid(name));
+      return element;
+    }; // Method for extending objects
+
+
+    SVG.extend = function () {
+      var modules, methods, key, i; // Get list of modules
+
+      modules = [].slice.call(arguments); // Get object with extensions
+
+      methods = modules.pop();
+
+      for (i = modules.length - 1; i >= 0; i--) {
+        if (modules[i]) {
+          for (key in methods) {
+            modules[i].prototype[key] = methods[key];
+          }
+        }
+      } // Make sure SVG.Set inherits any newly added methods
+
+
+      if (SVG.Set && SVG.Set.inherit) {
+        SVG.Set.inherit();
+      }
+    }; // Invent new element
+
+
+    SVG.invent = function (config) {
+      // Create element initializer
+      var initializer = typeof config.create === 'function' ? config.create : function () {
+        this.constructor.call(this, SVG.create(config.create));
+      }; // Inherit prototype
+
+      if (config.inherit) {
+        initializer.prototype = new config.inherit();
+      } // Extend with methods
+
+
+      if (config.extend) {
+        SVG.extend(initializer, config.extend);
+      } // Attach construct method to parent
+
+
+      if (config.construct) {
+        SVG.extend(config.parent || SVG.Container, config.construct);
+      }
+
+      return initializer;
+    }; // Adopt existing svg elements
+
+
+    SVG.adopt = function (node) {
+      // check for presence of node
+      if (!node) return null; // make sure a node isn't already adopted
+
+      if (node.instance) return node.instance; // initialize variables
+
+      var element; // adopt with element-specific settings
+
+      if (node.nodeName == 'svg') {
+        element = node.parentNode instanceof window.SVGElement ? new SVG.Nested() : new SVG.Doc();
+      } else if (node.nodeName == 'linearGradient') {
+        element = new SVG.Gradient('linear');
+      } else if (node.nodeName == 'radialGradient') {
+        element = new SVG.Gradient('radial');
+      } else if (SVG[capitalize(node.nodeName)]) {
+        element = new SVG[capitalize(node.nodeName)]();
+      } else {
+        element = new SVG.Element(node);
+      } // ensure references
+
+
+      element.type = node.nodeName;
+      element.node = node;
+      node.instance = element; // SVG.Class specific preparations
+
+      if (element instanceof SVG.Doc) {
+        element.namespace().defs();
+      } // pull svgjs data from the dom (getAttributeNS doesn't work in html5)
+
+
+      element.setData(JSON.parse(node.getAttribute('svgjs:data')) || {});
+      return element;
+    }; // Initialize parsing element
+
+
+    SVG.prepare = function () {
+      // Select document body and create invisible svg element
+      var body = document.getElementsByTagName('body')[0],
+          draw = (body ? new SVG.Doc(body) : SVG.adopt(document.documentElement).nested()).size(2, 0); // Create parser object
+
+      SVG.parser = {
+        body: body || document.documentElement,
+        draw: draw.style('opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden').node,
+        poly: draw.polyline().node,
+        path: draw.path().node,
+        native: SVG.create('svg')
+      };
+    };
+
+    SVG.parser = {
+      native: SVG.create('svg')
+    };
+    document.addEventListener('DOMContentLoaded', function () {
+      if (!SVG.parser.draw) {
+        SVG.prepare();
+      }
+    }, false); // Storage for regular expressions
+
+    SVG.regex = {
+      // Parse unit value
+      numberAndUnit: /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,
+      // Parse hex value
+      hex: /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,
+      // Parse rgb value
+      rgb: /rgb\((\d+),(\d+),(\d+)\)/,
+      // Parse reference id
+      reference: /#([a-z0-9\-_]+)/i,
+      // splits a transformation chain
+      transforms: /\)\s*,?\s*/,
+      // Whitespace
+      whitespace: /\s/g,
+      // Test hex value
+      isHex: /^#[a-f0-9]{3,6}$/i,
+      // Test rgb value
+      isRgb: /^rgb\(/,
+      // Test css declaration
+      isCss: /[^:]+:[^;]+;?/,
+      // Test for blank string
+      isBlank: /^(\s+)?$/,
+      // Test for numeric string
+      isNumber: /^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,
+      // Test for percent value
+      isPercent: /^-?[\d\.]+%$/,
+      // Test for image url
+      isImage: /\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,
+      // split at whitespace and comma
+      delimiter: /[\s,]+/,
+      // The following regex are used to parse the d attribute of a path
+      // Matches all hyphens which are not after an exponent
+      hyphen: /([^e])\-/gi,
+      // Replaces and tests for all path letters
+      pathLetters: /[MLHVCSQTAZ]/gi,
+      // yes we need this one, too
+      isPathLetter: /[MLHVCSQTAZ]/i,
+      // matches 0.154.23.45
+      numbersWithDots: /((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,
+      // matches .
+      dots: /\./g
+    };
+    SVG.utils = {
+      // Map function
+      map: function map(array, block) {
+        var i,
+            il = array.length,
+            result = [];
+
+        for (i = 0; i < il; i++) {
+          result.push(block(array[i]));
+        }
+
+        return result;
+      },
+      // Filter function
+      filter: function filter(array, block) {
+        var i,
+            il = array.length,
+            result = [];
+
+        for (i = 0; i < il; i++) {
+          if (block(array[i])) {
+            result.push(array[i]);
+          }
+        }
+
+        return result;
+      },
+      // Degrees to radians
+      radians: function radians(d) {
+        return d % 360 * Math.PI / 180;
+      },
+      // Radians to degrees
+      degrees: function degrees(r) {
+        return r * 180 / Math.PI % 360;
+      },
+      filterSVGElements: function filterSVGElements(nodes) {
+        return this.filter(nodes, function (el) {
+          return el instanceof window.SVGElement;
+        });
+      }
+    };
+    SVG.defaults = {
+      // Default attribute values
+      attrs: {
+        // fill and stroke
+        'fill-opacity': 1,
+        'stroke-opacity': 1,
+        'stroke-width': 0,
+        'stroke-linejoin': 'miter',
+        'stroke-linecap': 'butt',
+        fill: '#000000',
+        stroke: '#000000',
+        opacity: 1,
+        // position
+        x: 0,
+        y: 0,
+        cx: 0,
+        cy: 0,
+        // size
+        width: 0,
+        height: 0,
+        // radius
+        r: 0,
+        rx: 0,
+        ry: 0,
+        // gradient
+        offset: 0,
+        'stop-opacity': 1,
+        'stop-color': '#000000',
+        // text
+        'font-size': 16,
+        'font-family': 'Helvetica, Arial, sans-serif',
+        'text-anchor': 'start'
+      } // Module for color convertions
+
+    };
+
+    SVG.Color = function (color) {
+      var match; // initialize defaults
+
+      this.r = 0;
+      this.g = 0;
+      this.b = 0;
+      if (!color) return; // parse color
+
+      if (typeof color === 'string') {
+        if (SVG.regex.isRgb.test(color)) {
+          // get rgb values
+          match = SVG.regex.rgb.exec(color.replace(SVG.regex.whitespace, '')); // parse numeric values
+
+          this.r = parseInt(match[1]);
+          this.g = parseInt(match[2]);
+          this.b = parseInt(match[3]);
+        } else if (SVG.regex.isHex.test(color)) {
+          // get hex values
+          match = SVG.regex.hex.exec(fullHex(color)); // parse numeric values
+
+          this.r = parseInt(match[1], 16);
+          this.g = parseInt(match[2], 16);
+          this.b = parseInt(match[3], 16);
+        }
+      } else if (_typeof(color) === 'object') {
+        this.r = color.r;
+        this.g = color.g;
+        this.b = color.b;
+      }
+    };
+
+    SVG.extend(SVG.Color, {
+      // Default to hex conversion
+      toString: function toString() {
+        return this.toHex();
+      },
+      // Build hex value
+      toHex: function toHex() {
+        return '#' + compToHex(this.r) + compToHex(this.g) + compToHex(this.b);
+      },
+      // Build rgb value
+      toRgb: function toRgb() {
+        return 'rgb(' + [this.r, this.g, this.b].join() + ')';
+      },
+      // Calculate true brightness
+      brightness: function brightness() {
+        return this.r / 255 * 0.30 + this.g / 255 * 0.59 + this.b / 255 * 0.11;
+      },
+      // Make color morphable
+      morph: function morph(color) {
+        this.destination = new SVG.Color(color);
+        return this;
+      },
+      // Get morphed color at given position
+      at: function at(pos) {
+        // make sure a destination is defined
+        if (!this.destination) return this; // normalise pos
+
+        pos = pos < 0 ? 0 : pos > 1 ? 1 : pos; // generate morphed color
+
+        return new SVG.Color({
+          r: ~~(this.r + (this.destination.r - this.r) * pos),
+          g: ~~(this.g + (this.destination.g - this.g) * pos),
+          b: ~~(this.b + (this.destination.b - this.b) * pos)
+        });
+      }
+    }); // Testers
+    // Test if given value is a color string
+
+    SVG.Color.test = function (color) {
+      color += '';
+      return SVG.regex.isHex.test(color) || SVG.regex.isRgb.test(color);
+    }; // Test if given value is a rgb object
+
+
+    SVG.Color.isRgb = function (color) {
+      return color && typeof color.r === 'number' && typeof color.g === 'number' && typeof color.b === 'number';
+    }; // Test if given value is a color
+
+
+    SVG.Color.isColor = function (color) {
+      return SVG.Color.isRgb(color) || SVG.Color.test(color);
+    }; // Module for array conversion
+
+
+    SVG.Array = function (array, fallback) {
+      array = (array || []).valueOf(); // if array is empty and fallback is provided, use fallback
+
+      if (array.length == 0 && fallback) {
+        array = fallback.valueOf();
+      } // parse array
+
+
+      this.value = this.parse(array);
+    };
+
+    SVG.extend(SVG.Array, {
+      // Make array morphable
+      morph: function morph(array) {
+        this.destination = this.parse(array); // normalize length of arrays
+
+        if (this.value.length != this.destination.length) {
+          var lastValue = this.value[this.value.length - 1],
+              lastDestination = this.destination[this.destination.length - 1];
+
+          while (this.value.length > this.destination.length) {
+            this.destination.push(lastDestination);
+          }
+
+          while (this.value.length < this.destination.length) {
+            this.value.push(lastValue);
+          }
+        }
+
+        return this;
+      },
+      // Clean up any duplicate points
+      settle: function settle() {
+        // find all unique values
+        for (var i = 0, il = this.value.length, seen = []; i < il; i++) {
+          if (seen.indexOf(this.value[i]) == -1) {
+            seen.push(this.value[i]);
+          }
+        } // set new value
+
+
+        return this.value = seen;
+      },
+      // Get morphed array at given position
+      at: function at(pos) {
+        // make sure a destination is defined
+        if (!this.destination) return this; // generate morphed array
+
+        for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+          array.push(this.value[i] + (this.destination[i] - this.value[i]) * pos);
+        }
+
+        return new SVG.Array(array);
+      },
+      // Convert array to string
+      toString: function toString() {
+        return this.value.join(' ');
+      },
+      // Real value
+      valueOf: function valueOf() {
+        return this.value;
+      },
+      // Parse whitespace separated string
+      parse: function parse(array) {
+        array = array.valueOf(); // if already is an array, no need to parse it
+
+        if (Array.isArray(array)) return array;
+        return this.split(array);
+      },
+      // Strip unnecessary whitespace
+      split: function split(string) {
+        return string.trim().split(SVG.regex.delimiter).map(parseFloat);
+      },
+      // Reverse array
+      reverse: function reverse() {
+        this.value.reverse();
+        return this;
+      },
+      clone: function clone() {
+        var clone = new this.constructor();
+        clone.value = array_clone(this.value);
+        return clone;
+      }
+    }); // Poly points array
+
+    SVG.PointArray = function (array, fallback) {
+      SVG.Array.call(this, array, fallback || [[0, 0]]);
+    }; // Inherit from SVG.Array
+
+
+    SVG.PointArray.prototype = new SVG.Array();
+    SVG.PointArray.prototype.constructor = SVG.PointArray;
+    SVG.extend(SVG.PointArray, {
+      // Convert array to string
+      toString: function toString() {
+        // convert to a poly point string
+        for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+          array.push(this.value[i].join(','));
+        }
+
+        return array.join(' ');
+      },
+      // Convert array to line object
+      toLine: function toLine() {
+        return {
+          x1: this.value[0][0],
+          y1: this.value[0][1],
+          x2: this.value[1][0],
+          y2: this.value[1][1]
+        };
+      },
+      // Get morphed array at given position
+      at: function at(pos) {
+        // make sure a destination is defined
+        if (!this.destination) return this; // generate morphed point string
+
+        for (var i = 0, il = this.value.length, array = []; i < il; i++) {
+          array.push([this.value[i][0] + (this.destination[i][0] - this.value[i][0]) * pos, this.value[i][1] + (this.destination[i][1] - this.value[i][1]) * pos]);
+        }
+
+        return new SVG.PointArray(array);
+      },
+      // Parse point string and flat array
+      parse: function parse(array) {
+        var points = [];
+        array = array.valueOf(); // if it is an array
+
+        if (Array.isArray(array)) {
+          // and it is not flat, there is no need to parse it
+          if (Array.isArray(array[0])) {
+            // make sure to use a clone
+            return array.map(function (el) {
+              return el.slice();
+            });
+          } else if (array[0].x != null) {
+            // allow point objects to be passed
+            return array.map(function (el) {
+              return [el.x, el.y];
+            });
+          }
+        } else {
+          // Else, it is considered as a string
+          // parse points
+          array = array.trim().split(SVG.regex.delimiter).map(parseFloat);
+        } // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints
+        // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.
+
+
+        if (array.length % 2 !== 0) array.pop(); // wrap points in two-tuples and parse points as floats
+
+        for (var i = 0, len = array.length; i < len; i = i + 2) {
+          points.push([array[i], array[i + 1]]);
+        }
+
+        return points;
+      },
+      // Move point string
+      move: function move(x, y) {
+        var box = this.bbox(); // get relative offset
+
+        x -= box.x;
+        y -= box.y; // move every point
+
+        if (!isNaN(x) && !isNaN(y)) {
+          for (var i = this.value.length - 1; i >= 0; i--) {
+            this.value[i] = [this.value[i][0] + x, this.value[i][1] + y];
+          }
+        }
+
+        return this;
+      },
+      // Resize poly string
+      size: function size(width, height) {
+        var i,
+            box = this.bbox(); // recalculate position of all points according to new size
+
+        for (i = this.value.length - 1; i >= 0; i--) {
+          if (box.width) this.value[i][0] = (this.value[i][0] - box.x) * width / box.width + box.x;
+          if (box.height) this.value[i][1] = (this.value[i][1] - box.y) * height / box.height + box.y;
+        }
+
+        return this;
+      },
+      // Get bounding box of points
+      bbox: function bbox() {
+        if (!SVG.parser.draw) {
+          SVG.prepare();
+        }
+
+        SVG.parser.poly.setAttribute('points', this.toString());
+        return SVG.parser.poly.getBBox();
+      }
+    });
+    var pathHandlers = {
+      M: function M(c, p, p0) {
+        p.x = p0.x = c[0];
+        p.y = p0.y = c[1];
+        return ['M', p.x, p.y];
+      },
+      L: function L(c, p) {
+        p.x = c[0];
+        p.y = c[1];
+        return ['L', c[0], c[1]];
+      },
+      H: function H(c, p) {
+        p.x = c[0];
+        return ['H', c[0]];
+      },
+      V: function V(c, p) {
+        p.y = c[0];
+        return ['V', c[0]];
+      },
+      C: function C(c, p) {
+        p.x = c[4];
+        p.y = c[5];
+        return ['C', c[0], c[1], c[2], c[3], c[4], c[5]];
+      },
+      S: function S(c, p) {
+        p.x = c[2];
+        p.y = c[3];
+        return ['S', c[0], c[1], c[2], c[3]];
+      },
+      Q: function Q(c, p) {
+        p.x = c[2];
+        p.y = c[3];
+        return ['Q', c[0], c[1], c[2], c[3]];
+      },
+      T: function T(c, p) {
+        p.x = c[0];
+        p.y = c[1];
+        return ['T', c[0], c[1]];
+      },
+      Z: function Z(c, p, p0) {
+        p.x = p0.x;
+        p.y = p0.y;
+        return ['Z'];
+      },
+      A: function A(c, p) {
+        p.x = c[5];
+        p.y = c[6];
+        return ['A', c[0], c[1], c[2], c[3], c[4], c[5], c[6]];
+      }
+    };
+    var mlhvqtcsa = 'mlhvqtcsaz'.split('');
+
+    for (var i = 0, il = mlhvqtcsa.length; i < il; ++i) {
+      pathHandlers[mlhvqtcsa[i]] = function (i) {
+        return function (c, p, p0) {
+          if (i == 'H') c[0] = c[0] + p.x;else if (i == 'V') c[0] = c[0] + p.y;else if (i == 'A') {
+            c[5] = c[5] + p.x, c[6] = c[6] + p.y;
+          } else {
+            for (var j = 0, jl = c.length; j < jl; ++j) {
+              c[j] = c[j] + (j % 2 ? p.y : p.x);
+            }
+          }
+          return pathHandlers[i](c, p, p0);
+        };
+      }(mlhvqtcsa[i].toUpperCase());
+    } // Path points array
+
+
+    SVG.PathArray = function (array, fallback) {
+      SVG.Array.call(this, array, fallback || [['M', 0, 0]]);
+    }; // Inherit from SVG.Array
+
+
+    SVG.PathArray.prototype = new SVG.Array();
+    SVG.PathArray.prototype.constructor = SVG.PathArray;
+    SVG.extend(SVG.PathArray, {
+      // Convert array to string
+      toString: function toString() {
+        return arrayToString(this.value);
+      },
+      // Move path string
+      move: function move(x, y) {
+        // get bounding box of current situation
+        var box = this.bbox(); // get relative offset
+
+        x -= box.x;
+        y -= box.y;
+
+        if (!isNaN(x) && !isNaN(y)) {
+          // move every point
+          for (var l, i = this.value.length - 1; i >= 0; i--) {
+            l = this.value[i][0];
+
+            if (l == 'M' || l == 'L' || l == 'T') {
+              this.value[i][1] += x;
+              this.value[i][2] += y;
+            } else if (l == 'H') {
+              this.value[i][1] += x;
+            } else if (l == 'V') {
+              this.value[i][1] += y;
+            } else if (l == 'C' || l == 'S' || l == 'Q') {
+              this.value[i][1] += x;
+              this.value[i][2] += y;
+              this.value[i][3] += x;
+              this.value[i][4] += y;
+
+              if (l == 'C') {
+                this.value[i][5] += x;
+                this.value[i][6] += y;
+              }
+            } else if (l == 'A') {
+              this.value[i][6] += x;
+              this.value[i][7] += y;
+            }
+          }
+        }
+
+        return this;
+      },
+      // Resize path string
+      size: function size(width, height) {
+        // get bounding box of current situation
+        var i,
+            l,
+            box = this.bbox(); // recalculate position of all points according to new size
+
+        for (i = this.value.length - 1; i >= 0; i--) {
+          l = this.value[i][0];
+
+          if (l == 'M' || l == 'L' || l == 'T') {
+            this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+            this.value[i][2] = (this.value[i][2] - box.y) * height / box.height + box.y;
+          } else if (l == 'H') {
+            this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+          } else if (l == 'V') {
+            this.value[i][1] = (this.value[i][1] - box.y) * height / box.height + box.y;
+          } else if (l == 'C' || l == 'S' || l == 'Q') {
+            this.value[i][1] = (this.value[i][1] - box.x) * width / box.width + box.x;
+            this.value[i][2] = (this.value[i][2] - box.y) * height / box.height + box.y;
+            this.value[i][3] = (this.value[i][3] - box.x) * width / box.width + box.x;
+            this.value[i][4] = (this.value[i][4] - box.y) * height / box.height + box.y;
+
+            if (l == 'C') {
+              this.value[i][5] = (this.value[i][5] - box.x) * width / box.width + box.x;
+              this.value[i][6] = (this.value[i][6] - box.y) * height / box.height + box.y;
+            }
+          } else if (l == 'A') {
+            // resize radii
+            this.value[i][1] = this.value[i][1] * width / box.width;
+            this.value[i][2] = this.value[i][2] * height / box.height; // move position values
+
+            this.value[i][6] = (this.value[i][6] - box.x) * width / box.width + box.x;
+            this.value[i][7] = (this.value[i][7] - box.y) * height / box.height + box.y;
+          }
+        }
+
+        return this;
+      },
+      // Test if the passed path array use the same path data commands as this path array
+      equalCommands: function equalCommands(pathArray) {
+        var i, il, equalCommands;
+        pathArray = new SVG.PathArray(pathArray);
+        equalCommands = this.value.length === pathArray.value.length;
+
+        for (i = 0, il = this.value.length; equalCommands && i < il; i++) {
+          equalCommands = this.value[i][0] === pathArray.value[i][0];
+        }
+
+        return equalCommands;
+      },
+      // Make path array morphable
+      morph: function morph(pathArray) {
+        pathArray = new SVG.PathArray(pathArray);
+
+        if (this.equalCommands(pathArray)) {
+          this.destination = pathArray;
+        } else {
+          this.destination = null;
+        }
+
+        return this;
+      },
+      // Get morphed path array at given position
+      at: function at(pos) {
+        // make sure a destination is defined
+        if (!this.destination) return this;
+        var sourceArray = this.value,
+            destinationArray = this.destination.value,
+            array = [],
+            pathArray = new SVG.PathArray(),
+            i,
+            il,
+            j,
+            jl; // Animate has specified in the SVG spec
+        // See: https://www.w3.org/TR/SVG11/paths.html#PathElement
+
+        for (i = 0, il = sourceArray.length; i < il; i++) {
+          array[i] = [sourceArray[i][0]];
+
+          for (j = 1, jl = sourceArray[i].length; j < jl; j++) {
+            array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos;
+          } // For the two flags of the elliptical arc command, the SVG spec say:
+          // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true
+          // Elliptical arc command as an array followed by corresponding indexes:
+          // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]
+          //   0    1   2        3                 4             5      6  7
+
+
+          if (array[i][0] === 'A') {
+            array[i][4] = +(array[i][4] != 0);
+            array[i][5] = +(array[i][5] != 0);
+          }
+        } // Directly modify the value of a path array, this is done this way for performance
+
+
+        pathArray.value = array;
+        return pathArray;
+      },
+      // Absolutize and parse path to array
+      parse: function parse(array) {
+        // if it's already a patharray, no need to parse it
+        if (array instanceof SVG.PathArray) return array.valueOf(); // prepare for parsing
+
+        var s,
+            arr,
+            paramCnt = {
+          'M': 2,
+          'L': 2,
+          'H': 1,
+          'V': 1,
+          'C': 6,
+          'S': 4,
+          'Q': 4,
+          'T': 2,
+          'A': 7,
+          'Z': 0
+        };
+
+        if (typeof array === 'string') {
+          array = array.replace(SVG.regex.numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123
+          .replace(SVG.regex.pathLetters, ' $& ') // put some room between letters and numbers
+          .replace(SVG.regex.hyphen, '$1 -') // add space before hyphen
+          .trim() // trim
+          .split(SVG.regex.delimiter); // split into array
+        } else {
+          array = array.reduce(function (prev, curr) {
+            return [].concat.call(prev, curr);
+          }, []);
+        } // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...]
+
+
+        var arr = [],
+            p = new SVG.Point(),
+            p0 = new SVG.Point(),
+            index = 0,
+            len = array.length;
+
+        do {
+          // Test if we have a path letter
+          if (SVG.regex.isPathLetter.test(array[index])) {
+            s = array[index];
+            ++index; // If last letter was a move command and we got no new, it defaults to [L]ine
+          } else if (s == 'M') {
+            s = 'L';
+          } else if (s == 'm') {
+            s = 'l';
+          }
+
+          arr.push(pathHandlers[s].call(null, array.slice(index, index = index + paramCnt[s.toUpperCase()]).map(parseFloat), p, p0));
+        } while (len > index);
+
+        return arr;
+      },
+      // Get bounding box of path
+      bbox: function bbox() {
+        if (!SVG.parser.draw) {
+          SVG.prepare();
+        }
+
+        SVG.parser.path.setAttribute('d', this.toString());
+        return SVG.parser.path.getBBox();
+      }
+    }); // Module for unit convertions
+
+    SVG.Number = SVG.invent({
+      // Initialize
+      create: function create(value, unit) {
+        // initialize defaults
+        this.value = 0;
+        this.unit = unit || ''; // parse value
+
+        if (typeof value === 'number') {
+          // ensure a valid numeric value
+          this.value = isNaN(value) ? 0 : !isFinite(value) ? value < 0 ? -3.4e+38 : +3.4e+38 : value;
+        } else if (typeof value === 'string') {
+          unit = value.match(SVG.regex.numberAndUnit);
+
+          if (unit) {
+            // make value numeric
+            this.value = parseFloat(unit[1]); // normalize
+
+            if (unit[5] == '%') {
+              this.value /= 100;
+            } else if (unit[5] == 's') {
+              this.value *= 1000;
+            } // store unit
+
+
+            this.unit = unit[5];
+          }
+        } else {
+          if (value instanceof SVG.Number) {
+            this.value = value.valueOf();
+            this.unit = value.unit;
+          }
+        }
+      },
+      // Add methods
+      extend: {
+        // Stringalize
+        toString: function toString() {
+          return (this.unit == '%' ? ~~(this.value * 1e8) / 1e6 : this.unit == 's' ? this.value / 1e3 : this.value) + this.unit;
+        },
+        toJSON: function toJSON() {
+          return this.toString();
+        },
+        // Convert to primitive
+        valueOf: function valueOf() {
+          return this.value;
+        },
+        // Add number
+        plus: function plus(number) {
+          number = new SVG.Number(number);
+          return new SVG.Number(this + number, this.unit || number.unit);
+        },
+        // Subtract number
+        minus: function minus(number) {
+          number = new SVG.Number(number);
+          return new SVG.Number(this - number, this.unit || number.unit);
+        },
+        // Multiply number
+        times: function times(number) {
+          number = new SVG.Number(number);
+          return new SVG.Number(this * number, this.unit || number.unit);
+        },
+        // Divide number
+        divide: function divide(number) {
+          number = new SVG.Number(number);
+          return new SVG.Number(this / number, this.unit || number.unit);
+        },
+        // Convert to different unit
+        to: function to(unit) {
+          var number = new SVG.Number(this);
+
+          if (typeof unit === 'string') {
+            number.unit = unit;
+          }
+
+          return number;
+        },
+        // Make number morphable
+        morph: function morph(number) {
+          this.destination = new SVG.Number(number);
+
+          if (number.relative) {
+            this.destination.value += this.value;
+          }
+
+          return this;
+        },
+        // Get morphed number at given position
+        at: function at(pos) {
+          // Make sure a destination is defined
+          if (!this.destination) return this; // Generate new morphed number
+
+          return new SVG.Number(this.destination).minus(this).times(pos).plus(this);
+        }
+      }
+    });
+    SVG.Element = SVG.invent({
+      // Initialize node
+      create: function create(node) {
+        // make stroke value accessible dynamically
+        this._stroke = SVG.defaults.attrs.stroke;
+        this._event = null; // initialize data object
+
+        this.dom = {}; // create circular reference
+
+        if (this.node = node) {
+          this.type = node.nodeName;
+          this.node.instance = this; // store current attribute value
+
+          this._stroke = node.getAttribute('stroke') || this._stroke;
+        }
+      },
+      // Add class methods
+      extend: {
+        // Move over x-axis
+        x: function x(_x) {
+          return this.attr('x', _x);
+        },
+        // Move over y-axis
+        y: function y(_y) {
+          return this.attr('y', _y);
+        },
+        // Move by center over x-axis
+        cx: function cx(x) {
+          return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2);
+        },
+        // Move by center over y-axis
+        cy: function cy(y) {
+          return y == null ? this.y() + this.height() / 2 : this.y(y - this.height() / 2);
+        },
+        // Move element to given x and y values
+        move: function move(x, y) {
+          return this.x(x).y(y);
+        },
+        // Move element by its center
+        center: function center(x, y) {
+          return this.cx(x).cy(y);
+        },
+        // Set width of element
+        width: function width(_width) {
+          return this.attr('width', _width);
+        },
+        // Set height of element
+        height: function height(_height) {
+          return this.attr('height', _height);
+        },
+        // Set element size to given width and height
+        size: function size(width, height) {
+          var p = proportionalSize(this, width, height);
+          return this.width(new SVG.Number(p.width)).height(new SVG.Number(p.height));
+        },
+        // Clone element
+        clone: function clone(parent) {
+          // write dom data to the dom so the clone can pickup the data
+          this.writeDataToDom(); // clone element and assign new id
+
+          var clone = assignNewId(this.node.cloneNode(true)); // insert the clone in the given parent or after myself
+
+          if (parent) parent.add(clone);else this.after(clone);
+          return clone;
+        },
+        // Remove element
+        remove: function remove() {
+          if (this.parent()) {
+            this.parent().removeElement(this);
+          }
+
+          return this;
+        },
+        // Replace element
+        replace: function replace(element) {
+          this.after(element).remove();
+          return element;
+        },
+        // Add element to given container and return self
+        addTo: function addTo(parent) {
+          return parent.put(this);
+        },
+        // Add element to given container and return container
+        putIn: function putIn(parent) {
+          return parent.add(this);
+        },
+        // Get / set id
+        id: function id(_id) {
+          return this.attr('id', _id);
+        },
+        // Checks whether the given point inside the bounding box of the element
+        inside: function inside(x, y) {
+          var box = this.bbox();
+          return x > box.x && y > box.y && x < box.x + box.width && y < box.y + box.height;
+        },
+        // Show element
+        show: function show() {
+          return this.style('display', '');
+        },
+        // Hide element
+        hide: function hide() {
+          return this.style('display', 'none');
+        },
+        // Is element visible?
+        visible: function visible() {
+          return this.style('display') != 'none';
+        },
+        // Return id on string conversion
+        toString: function toString() {
+          return this.attr('id');
+        },
+        // Return array of classes on the node
+        classes: function classes() {
+          var attr = this.attr('class');
+          return attr == null ? [] : attr.trim().split(SVG.regex.delimiter);
+        },
+        // Return true if class exists on the node, false otherwise
+        hasClass: function hasClass(name) {
+          return this.classes().indexOf(name) != -1;
+        },
+        // Add class to the node
+        addClass: function addClass(name) {
+          if (!this.hasClass(name)) {
+            var array = this.classes();
+            array.push(name);
+            this.attr('class', array.join(' '));
+          }
+
+          return this;
+        },
+        // Remove class from the node
+        removeClass: function removeClass(name) {
+          if (this.hasClass(name)) {
+            this.attr('class', this.classes().filter(function (c) {
+              return c != name;
+            }).join(' '));
+          }
+
+          return this;
+        },
+        // Toggle the presence of a class on the node
+        toggleClass: function toggleClass(name) {
+          return this.hasClass(name) ? this.removeClass(name) : this.addClass(name);
+        },
+        // Get referenced element form attribute value
+        reference: function reference(attr) {
+          return SVG.get(this.attr(attr));
+        },
+        // Returns the parent element instance
+        parent: function parent(type) {
+          var parent = this; // check for parent
+
+          if (!parent.node.parentNode) return null; // get parent element
+
+          parent = SVG.adopt(parent.node.parentNode);
+          if (!type) return parent; // loop trough ancestors if type is given
+
+          while (parent && parent.node instanceof window.SVGElement) {
+            if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent;
+            if (!parent.node.parentNode || parent.node.parentNode.nodeName == '#document') return null; // #759, #720
+
+            parent = SVG.adopt(parent.node.parentNode);
+          }
+        },
+        // Get parent document
+        doc: function doc() {
+          return this instanceof SVG.Doc ? this : this.parent(SVG.Doc);
+        },
+        // return array of all ancestors of given type up to the root svg
+        parents: function parents(type) {
+          var parents = [],
+              parent = this;
+
+          do {
+            parent = parent.parent(type);
+            if (!parent || !parent.node) break;
+            parents.push(parent);
+          } while (parent.parent);
+
+          return parents;
+        },
+        // matches the element vs a css selector
+        matches: function matches(selector) {
+          return _matches(this.node, selector);
+        },
+        // Returns the svg node to call native svg methods on it
+        native: function native() {
+          return this.node;
+        },
+        // Import raw svg
+        svg: function svg(_svg) {
+          // create temporary holder
+          var well = document.createElement('svg'); // act as a setter if svg is given
+
+          if (_svg && this instanceof SVG.Parent) {
+            // dump raw svg
+            well.innerHTML = '<svg>' + _svg.replace(/\n/, '').replace(/<([\w:-]+)([^<]+?)\/>/g, '<$1$2></$1>') + '</svg>'; // transplant nodes
+
+            for (var i = 0, il = well.firstChild.childNodes.length; i < il; i++) {
+              this.node.appendChild(well.firstChild.firstChild);
+            } // otherwise act as a getter
+
+          } else {
+            // create a wrapping svg element in case of partial content
+            well.appendChild(_svg = document.createElement('svg')); // write svgjs data to the dom
+
+            this.writeDataToDom(); // insert a copy of this node
+
+            _svg.appendChild(this.node.cloneNode(true)); // return target element
+
+
+            return well.innerHTML.replace(/^<svg>/, '').replace(/<\/svg>$/, '');
+          }
+
+          return this;
+        },
+        // write svgjs data to the dom
+        writeDataToDom: function writeDataToDom() {
+          // dump variables recursively
+          if (this.each || this.lines) {
+            var fn = this.each ? this : this.lines();
+            fn.each(function () {
+              this.writeDataToDom();
+            });
+          } // remove previously set data
+
+
+          this.node.removeAttribute('svgjs:data');
+
+          if (Object.keys(this.dom).length) {
+            this.node.setAttribute('svgjs:data', JSON.stringify(this.dom));
+          } // see #428
+
+
+          return this;
+        },
+        // set given data to the elements data property
+        setData: function setData(o) {
+          this.dom = o;
+          return this;
+        },
+        is: function is(obj) {
+          return _is(this, obj);
+        }
+      }
+    });
+    SVG.easing = {
+      '-': function _(pos) {
+        return pos;
+      },
+      '<>': function _(pos) {
+        return -Math.cos(pos * Math.PI) / 2 + 0.5;
+      },
+      '>': function _(pos) {
+        return Math.sin(pos * Math.PI / 2);
+      },
+      '<': function _(pos) {
+        return -Math.cos(pos * Math.PI / 2) + 1;
+      }
+    };
+
+    SVG.morph = function (pos) {
+      return function (from, to) {
+        return new SVG.MorphObj(from, to).at(pos);
+      };
+    };
+
+    SVG.Situation = SVG.invent({
+      create: function create(o) {
+        this.init = false;
+        this.reversed = false;
+        this.reversing = false;
+        this.duration = new SVG.Number(o.duration).valueOf();
+        this.delay = new SVG.Number(o.delay).valueOf();
+        this.start = +new Date() + this.delay;
+        this.finish = this.start + this.duration;
+        this.ease = o.ease; // this.loop is incremented from 0 to this.loops
+        // it is also incremented when in an infinite loop (when this.loops is true)
+
+        this.loop = 0;
+        this.loops = false;
+        this.animations = {// functionToCall: [list of morphable objects]
+          // e.g. move: [SVG.Number, SVG.Number]
+        };
+        this.attrs = {// holds all attributes which are not represented from a function svg.js provides
+          // e.g. someAttr: SVG.Number
+        };
+        this.styles = {// holds all styles which should be animated
+          // e.g. fill-color: SVG.Color
+        };
+        this.transforms = [// holds all transformations as transformation objects
+          // e.g. [SVG.Rotate, SVG.Translate, SVG.Matrix]
+        ];
+        this.once = {// functions to fire at a specific position
+          // e.g. "0.5": function foo(){}
+        };
+      }
+    });
+    SVG.FX = SVG.invent({
+      create: function create(element) {
+        this._target = element;
+        this.situations = [];
+        this.active = false;
+        this.situation = null;
+        this.paused = false;
+        this.lastPos = 0;
+        this.pos = 0; // The absolute position of an animation is its position in the context of its complete duration (including delay and loops)
+        // When performing a delay, absPos is below 0 and when performing a loop, its value is above 1
+
+        this.absPos = 0;
+        this._speed = 1;
+      },
+      extend: {
+        /**
+         * sets or returns the target of this animation
+         * @param o object || number In case of Object it holds all parameters. In case of number its the duration of the animation
+         * @param ease function || string Function which should be used for easing or easing keyword
+         * @param delay Number indicating the delay before the animation starts
+         * @return target || this
+         */
+        animate: function animate(o, ease, delay) {
+          if (_typeof(o) === 'object') {
+            ease = o.ease;
+            delay = o.delay;
+            o = o.duration;
+          }
+
+          var situation = new SVG.Situation({
+            duration: o || 1000,
+            delay: delay || 0,
+            ease: SVG.easing[ease || '-'] || ease
+          });
+          this.queue(situation);
+          return this;
+        },
+
+        /**
+        * sets a delay before the next element of the queue is called
+        * @param delay Duration of delay in milliseconds
+        * @return this.target()
+        */
+        delay: function delay(_delay) {
+          // The delay is performed by an empty situation with its duration
+          // attribute set to the duration of the delay
+          var situation = new SVG.Situation({
+            duration: _delay,
+            delay: 0,
+            ease: SVG.easing['-']
+          });
+          return this.queue(situation);
+        },
+
+        /**
+        * sets or returns the target of this animation
+        * @param null || target SVG.Element which should be set as new target
+        * @return target || this
+        */
+        target: function target(_target) {
+          if (_target && _target instanceof SVG.Element) {
+            this._target = _target;
+            return this;
+          }
+
+          return this._target;
+        },
+        // returns the absolute position at a given time
+        timeToAbsPos: function timeToAbsPos(timestamp) {
+          return (timestamp - this.situation.start) / (this.situation.duration / this._speed);
+        },
+        // returns the timestamp from a given absolute positon
+        absPosToTime: function absPosToTime(absPos) {
+          return this.situation.duration / this._speed * absPos + this.situation.start;
+        },
+        // starts the animationloop
+        startAnimFrame: function startAnimFrame() {
+          this.stopAnimFrame();
+          this.animationFrame = window.requestAnimationFrame(function () {
+            this.step();
+          }.bind(this));
+        },
+        // cancels the animationframe
+        stopAnimFrame: function stopAnimFrame() {
+          window.cancelAnimationFrame(this.animationFrame);
+        },
+        // kicks off the animation - only does something when the queue is currently not active and at least one situation is set
+        start: function start() {
+          // dont start if already started
+          if (!this.active && this.situation) {
+            this.active = true;
+            this.startCurrent();
+          }
+
+          return this;
+        },
+        // start the current situation
+        startCurrent: function startCurrent() {
+          this.situation.start = +new Date() + this.situation.delay / this._speed;
+          this.situation.finish = this.situation.start + this.situation.duration / this._speed;
+          return this.initAnimations().step();
+        },
+
+        /**
+        * adds a function / Situation to the animation queue
+        * @param fn function / situation to add
+        * @return this
+        */
+        queue: function queue(fn) {
+          if (typeof fn === 'function' || fn instanceof SVG.Situation) {
+            this.situations.push(fn);
+          }
+
+          if (!this.situation) this.situation = this.situations.shift();
+          return this;
+        },
+
+        /**
+        * pulls next element from the queue and execute it
+        * @return this
+        */
+        dequeue: function dequeue() {
+          // stop current animation
+          this.stop(); // get next animation from queue
+
+          this.situation = this.situations.shift();
+
+          if (this.situation) {
+            if (this.situation instanceof SVG.Situation) {
+              this.start();
+            } else {
+              // If it is not a SVG.Situation, then it is a function, we execute it
+              this.situation.call(this);
+            }
+          }
+
+          return this;
+        },
+        // updates all animations to the current state of the element
+        // this is important when one property could be changed from another property
+        initAnimations: function initAnimations() {
+          var i, j, source;
+          var s = this.situation;
+          if (s.init) return this;
+
+          for (i in s.animations) {
+            source = this.target()[i]();
+
+            if (!Array.isArray(source)) {
+              source = [source];
+            }
+
+            if (!Array.isArray(s.animations[i])) {
+              s.animations[i] = [s.animations[i]];
+            } // if(s.animations[i].length > source.length) {
+            //  source.concat = source.concat(s.animations[i].slice(source.length, s.animations[i].length))
+            // }
+
+
+            for (j = source.length; j--;) {
+              // The condition is because some methods return a normal number instead
+              // of a SVG.Number
+              if (s.animations[i][j] instanceof SVG.Number) {
+                source[j] = new SVG.Number(source[j]);
+              }
+
+              s.animations[i][j] = source[j].morph(s.animations[i][j]);
+            }
+          }
+
+          for (i in s.attrs) {
+            s.attrs[i] = new SVG.MorphObj(this.target().attr(i), s.attrs[i]);
+          }
+
+          for (i in s.styles) {
+            s.styles[i] = new SVG.MorphObj(this.target().style(i), s.styles[i]);
+          }
+
+          s.initialTransformation = this.target().matrixify();
+          s.init = true;
+          return this;
+        },
+        clearQueue: function clearQueue() {
+          this.situations = [];
+          return this;
+        },
+        clearCurrent: function clearCurrent() {
+          this.situation = null;
+          return this;
+        },
+
+        /** stops the animation immediately
+        * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately.
+        * @param clearQueue A Boolean indicating whether to remove queued animation as well.
+        * @return this
+        */
+        stop: function stop(jumpToEnd, clearQueue) {
+          var active = this.active;
+          this.active = false;
+
+          if (clearQueue) {
+            this.clearQueue();
+          }
+
+          if (jumpToEnd && this.situation) {
+            // initialize the situation if it was not
+            !active && this.startCurrent();
+            this.atEnd();
+          }
+
+          this.stopAnimFrame();
+          return this.clearCurrent();
+        },
+
+        /** resets the element to the state where the current element has started
+        * @return this
+        */
+        reset: function reset() {
+          if (this.situation) {
+            var temp = this.situation;
+            this.stop();
+            this.situation = temp;
+            this.atStart();
+          }
+
+          return this;
+        },
+        // Stop the currently-running animation, remove all queued animations, and complete all animations for the element.
+        finish: function finish() {
+          this.stop(true, false);
+
+          while (this.dequeue().situation && this.stop(true, false)) {
+          }
+
+          this.clearQueue().clearCurrent();
+          return this;
+        },
+        // set the internal animation pointer at the start position, before any loops, and updates the visualisation
+        atStart: function atStart() {
+          return this.at(0, true);
+        },
+        // set the internal animation pointer at the end position, after all the loops, and updates the visualisation
+        atEnd: function atEnd() {
+          if (this.situation.loops === true) {
+            // If in a infinite loop, we end the current iteration
+            this.situation.loops = this.situation.loop + 1;
+          }
+
+          if (typeof this.situation.loops === 'number') {
+            // If performing a finite number of loops, we go after all the loops
+            return this.at(this.situation.loops, true);
+          } else {
+            // If no loops, we just go at the end
+            return this.at(1, true);
+          }
+        },
+        // set the internal animation pointer to the specified position and updates the visualisation
+        // if isAbsPos is true, pos is treated as an absolute position
+        at: function at(pos, isAbsPos) {
+          var durDivSpd = this.situation.duration / this._speed;
+          this.absPos = pos; // If pos is not an absolute position, we convert it into one
+
+          if (!isAbsPos) {
+            if (this.situation.reversed) this.absPos = 1 - this.absPos;
+            this.absPos += this.situation.loop;
+          }
+
+          this.situation.start = +new Date() - this.absPos * durDivSpd;
+          this.situation.finish = this.situation.start + durDivSpd;
+          return this.step(true);
+        },
+
+        /**
+        * sets or returns the speed of the animations
+        * @param speed null || Number The new speed of the animations
+        * @return Number || this
+        */
+        speed: function speed(_speed) {
+          if (_speed === 0) return this.pause();
+
+          if (_speed) {
+            this._speed = _speed; // We use an absolute position here so that speed can affect the delay before the animation
+
+            return this.at(this.absPos, true);
+          } else return this._speed;
+        },
+        // Make loopable
+        loop: function loop(times, reverse) {
+          var c = this.last(); // store total loops
+
+          c.loops = times != null ? times : true;
+          c.loop = 0;
+          if (reverse) c.reversing = true;
+          return this;
+        },
+        // pauses the animation
+        pause: function pause() {
+          this.paused = true;
+          this.stopAnimFrame();
+          return this;
+        },
+        // unpause the animation
+        play: function play() {
+          if (!this.paused) return this;
+          this.paused = false; // We use an absolute position here so that the delay before the animation can be paused
+
+          return this.at(this.absPos, true);
+        },
+
+        /**
+        * toggle or set the direction of the animation
+        * true sets direction to backwards while false sets it to forwards
+        * @param reversed Boolean indicating whether to reverse the animation or not (default: toggle the reverse status)
+        * @return this
+        */
+        reverse: function reverse(reversed) {
+          var c = this.last();
+          if (typeof reversed === 'undefined') c.reversed = !c.reversed;else c.reversed = reversed;
+          return this;
+        },
+
+        /**
+        * returns a float from 0-1 indicating the progress of the current animation
+        * @param eased Boolean indicating whether the returned position should be eased or not
+        * @return number
+        */
+        progress: function progress(easeIt) {
+          return easeIt ? this.situation.ease(this.pos) : this.pos;
+        },
+
+        /**
+        * adds a callback function which is called when the current animation is finished
+        * @param fn Function which should be executed as callback
+        * @return number
+        */
+        after: function after(fn) {
+          var c = this.last(),
+              wrapper = function wrapper(e) {
+            if (e.detail.situation == c) {
+              fn.call(this, c);
+              this.off('finished.fx', wrapper); // prevent memory leak
+            }
+          };
+
+          this.target().on('finished.fx', wrapper);
+          return this._callStart();
+        },
+        // adds a callback which is called whenever one animation step is performed
+        during: function during(fn) {
+          var c = this.last(),
+              wrapper = function wrapper(e) {
+            if (e.detail.situation == c) {
+              fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, c);
+            }
+          }; // see above
+
+
+          this.target().off('during.fx', wrapper).on('during.fx', wrapper);
+          this.after(function () {
+            this.off('during.fx', wrapper);
+          });
+          return this._callStart();
+        },
+        // calls after ALL animations in the queue are finished
+        afterAll: function afterAll(fn) {
+          var wrapper = function wrapper(e) {
+            fn.call(this);
+            this.off('allfinished.fx', wrapper);
+          }; // see above
+
+
+          this.target().off('allfinished.fx', wrapper).on('allfinished.fx', wrapper);
+          return this._callStart();
+        },
+        // calls on every animation step for all animations
+        duringAll: function duringAll(fn) {
+          var wrapper = function wrapper(e) {
+            fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, e.detail.situation);
+          };
+
+          this.target().off('during.fx', wrapper).on('during.fx', wrapper);
+          this.afterAll(function () {
+            this.off('during.fx', wrapper);
+          });
+          return this._callStart();
+        },
+        last: function last() {
+          return this.situations.length ? this.situations[this.situations.length - 1] : this.situation;
+        },
+        // adds one property to the animations
+        add: function add(method, args, type) {
+          this.last()[type || 'animations'][method] = args;
+          return this._callStart();
+        },
+
+        /** perform one step of the animation
+        *  @param ignoreTime Boolean indicating whether to ignore time and use position directly or recalculate position based on time
+        *  @return this
+        */
+        step: function step(ignoreTime) {
+          // convert current time to an absolute position
+          if (!ignoreTime) this.absPos = this.timeToAbsPos(+new Date()); // This part convert an absolute position to a position
+
+          if (this.situation.loops !== false) {
+            var absPos, absPosInt, lastLoop; // If the absolute position is below 0, we just treat it as if it was 0
+
+            absPos = Math.max(this.absPos, 0);
+            absPosInt = Math.floor(absPos);
+
+            if (this.situation.loops === true || absPosInt < this.situation.loops) {
+              this.pos = absPos - absPosInt;
+              lastLoop = this.situation.loop;
+              this.situation.loop = absPosInt;
+            } else {
+              this.absPos = this.situation.loops;
+              this.pos = 1; // The -1 here is because we don't want to toggle reversed when all the loops have been completed
+
+              lastLoop = this.situation.loop - 1;
+              this.situation.loop = this.situation.loops;
+            }
+
+            if (this.situation.reversing) {
+              // Toggle reversed if an odd number of loops as occured since the last call of step
+              this.situation.reversed = this.situation.reversed != Boolean((this.situation.loop - lastLoop) % 2);
+            }
+          } else {
+            // If there are no loop, the absolute position must not be above 1
+            this.absPos = Math.min(this.absPos, 1);
+            this.pos = this.absPos;
+          } // while the absolute position can be below 0, the position must not be below 0
+
+
+          if (this.pos < 0) this.pos = 0;
+          if (this.situation.reversed) this.pos = 1 - this.pos; // apply easing
+
+          var eased = this.situation.ease(this.pos); // call once-callbacks
+
+          for (var i in this.situation.once) {
+            if (i > this.lastPos && i <= eased) {
+              this.situation.once[i].call(this.target(), this.pos, eased);
+              delete this.situation.once[i];
+            }
+          } // fire during callback with position, eased position and current situation as parameter
+
+
+          if (this.active) this.target().fire('during', {
+            pos: this.pos,
+            eased: eased,
+            fx: this,
+            situation: this.situation
+          }); // the user may call stop or finish in the during callback
+          // so make sure that we still have a valid situation
+
+          if (!this.situation) {
+            return this;
+          } // apply the actual animation to every property
+
+
+          this.eachAt(); // do final code when situation is finished
+
+          if (this.pos == 1 && !this.situation.reversed || this.situation.reversed && this.pos == 0) {
+            // stop animation callback
+            this.stopAnimFrame(); // fire finished callback with current situation as parameter
+
+            this.target().fire('finished', {
+              fx: this,
+              situation: this.situation
+            });
+
+            if (!this.situations.length) {
+              this.target().fire('allfinished'); // Recheck the length since the user may call animate in the afterAll callback
+
+              if (!this.situations.length) {
+                this.target().off('.fx'); // there shouldnt be any binding left, but to make sure...
+
+                this.active = false;
+              }
+            } // start next animation
+
+
+            if (this.active) this.dequeue();else this.clearCurrent();
+          } else if (!this.paused && this.active) {
+            // we continue animating when we are not at the end
+            this.startAnimFrame();
+          } // save last eased position for once callback triggering
+
+
+          this.lastPos = eased;
+          return this;
+        },
+        // calculates the step for every property and calls block with it
+        eachAt: function eachAt() {
+          var i,
+              len,
+              at,
+              self = this,
+              target = this.target(),
+              s = this.situation; // apply animations which can be called trough a method
+
+          for (i in s.animations) {
+            at = [].concat(s.animations[i]).map(function (el) {
+              return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+            });
+            target[i].apply(target, at);
+          } // apply animation which has to be applied with attr()
+
+
+          for (i in s.attrs) {
+            at = [i].concat(s.attrs[i]).map(function (el) {
+              return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+            });
+            target.attr.apply(target, at);
+          } // apply animation which has to be applied with style()
+
+
+          for (i in s.styles) {
+            at = [i].concat(s.styles[i]).map(function (el) {
+              return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;
+            });
+            target.style.apply(target, at);
+          } // animate initialTransformation which has to be chained
+
+
+          if (s.transforms.length) {
+            // get initial initialTransformation
+            at = s.initialTransformation;
+
+            for (i = 0, len = s.transforms.length; i < len; i++) {
+              // get next transformation in chain
+              var a = s.transforms[i]; // multiply matrix directly
+
+              if (a instanceof SVG.Matrix) {
+                if (a.relative) {
+                  at = at.multiply(new SVG.Matrix().morph(a).at(s.ease(this.pos)));
+                } else {
+                  at = at.morph(a).at(s.ease(this.pos));
+                }
+
+                continue;
+              } // when transformation is absolute we have to reset the needed transformation first
+
+
+              if (!a.relative) {
+                a.undo(at.extract());
+              } // and reapply it after
+
+
+              at = at.multiply(a.at(s.ease(this.pos)));
+            } // set new matrix on element
+
+
+            target.matrix(at);
+          }
+
+          return this;
+        },
+        // adds an once-callback which is called at a specific position and never again
+        once: function once(pos, fn, isEased) {
+          var c = this.last();
+          if (!isEased) pos = c.ease(pos);
+          c.once[pos] = fn;
+          return this;
+        },
+        _callStart: function _callStart() {
+          setTimeout(function () {
+            this.start();
+          }.bind(this), 0);
+          return this;
+        }
+      },
+      parent: SVG.Element,
+      // Add method to parent elements
+      construct: {
+        // Get fx module or create a new one, then animate with given duration and ease
+        animate: function animate(o, ease, delay) {
+          return (this.fx || (this.fx = new SVG.FX(this))).animate(o, ease, delay);
+        },
+        delay: function delay(_delay2) {
+          return (this.fx || (this.fx = new SVG.FX(this))).delay(_delay2);
+        },
+        stop: function stop(jumpToEnd, clearQueue) {
+          if (this.fx) {
+            this.fx.stop(jumpToEnd, clearQueue);
+          }
+
+          return this;
+        },
+        finish: function finish() {
+          if (this.fx) {
+            this.fx.finish();
+          }
+
+          return this;
+        },
+        // Pause current animation
+        pause: function pause() {
+          if (this.fx) {
+            this.fx.pause();
+          }
+
+          return this;
+        },
+        // Play paused current animation
+        play: function play() {
+          if (this.fx) {
+            this.fx.play();
+          }
+
+          return this;
+        },
+        // Set/Get the speed of the animations
+        speed: function speed(_speed2) {
+          if (this.fx) {
+            if (_speed2 == null) {
+              return this.fx.speed();
+            } else {
+              this.fx.speed(_speed2);
+            }
+          }
+
+          return this;
+        }
+      }
+    }); // MorphObj is used whenever no morphable object is given
+
+    SVG.MorphObj = SVG.invent({
+      create: function create(from, to) {
+        // prepare color for morphing
+        if (SVG.Color.isColor(to)) return new SVG.Color(from).morph(to); // check if we have a list of values
+
+        if (SVG.regex.delimiter.test(from)) {
+          // prepare path for morphing
+          if (SVG.regex.pathLetters.test(from)) return new SVG.PathArray(from).morph(to); // prepare value list for morphing
+          else return new SVG.Array(from).morph(to);
+        } // prepare number for morphing
+
+
+        if (SVG.regex.numberAndUnit.test(to)) return new SVG.Number(from).morph(to); // prepare for plain morphing
+
+        this.value = from;
+        this.destination = to;
+      },
+      extend: {
+        at: function at(pos, real) {
+          return real < 1 ? this.value : this.destination;
+        },
+        valueOf: function valueOf() {
+          return this.value;
+        }
+      }
+    });
+    SVG.extend(SVG.FX, {
+      // Add animatable attributes
+      attr: function attr(a, v, relative) {
+        // apply attributes individually
+        if (_typeof(a) === 'object') {
+          for (var key in a) {
+            this.attr(key, a[key]);
+          }
+        } else {
+          this.add(a, v, 'attrs');
+        }
+
+        return this;
+      },
+      // Add animatable styles
+      style: function style(s, v) {
+        if (_typeof(s) === 'object') {
+          for (var key in s) {
+            this.style(key, s[key]);
+          }
+        } else {
+          this.add(s, v, 'styles');
+        }
+
+        return this;
+      },
+      // Animatable x-axis
+      x: function x(_x2, relative) {
+        if (this.target() instanceof SVG.G) {
+          this.transform({
+            x: _x2
+          }, relative);
+          return this;
+        }
+
+        var num = new SVG.Number(_x2);
+        num.relative = relative;
+        return this.add('x', num);
+      },
+      // Animatable y-axis
+      y: function y(_y2, relative) {
+        if (this.target() instanceof SVG.G) {
+          this.transform({
+            y: _y2
+          }, relative);
+          return this;
+        }
+
+        var num = new SVG.Number(_y2);
+        num.relative = relative;
+        return this.add('y', num);
+      },
+      // Animatable center x-axis
+      cx: function cx(x) {
+        return this.add('cx', new SVG.Number(x));
+      },
+      // Animatable center y-axis
+      cy: function cy(y) {
+        return this.add('cy', new SVG.Number(y));
+      },
+      // Add animatable move
+      move: function move(x, y) {
+        return this.x(x).y(y);
+      },
+      // Add animatable center
+      center: function center(x, y) {
+        return this.cx(x).cy(y);
+      },
+      // Add animatable size
+      size: function size(width, height) {
+        if (this.target() instanceof SVG.Text) {
+          // animate font size for Text elements
+          this.attr('font-size', width);
+        } else {
+          // animate bbox based size for all other elements
+          var box;
+
+          if (!width || !height) {
+            box = this.target().bbox();
+          }
+
+          if (!width) {
+            width = box.width / box.height * height;
+          }
+
+          if (!height) {
+            height = box.height / box.width * width;
+          }
+
+          this.add('width', new SVG.Number(width)).add('height', new SVG.Number(height));
+        }
+
+        return this;
+      },
+      // Add animatable width
+      width: function width(_width2) {
+        return this.add('width', new SVG.Number(_width2));
+      },
+      // Add animatable height
+      height: function height(_height2) {
+        return this.add('height', new SVG.Number(_height2));
+      },
+      // Add animatable plot
+      plot: function plot(a, b, c, d) {
+        // Lines can be plotted with 4 arguments
+        if (arguments.length == 4) {
+          return this.plot([a, b, c, d]);
+        }
+
+        return this.add('plot', new (this.target().morphArray)(a));
+      },
+      // Add leading method
+      leading: function leading(value) {
+        return this.target().leading ? this.add('leading', new SVG.Number(value)) : this;
+      },
+      // Add animatable viewbox
+      viewbox: function viewbox(x, y, width, height) {
+        if (this.target() instanceof SVG.Container) {
+          this.add('viewbox', new SVG.ViewBox(x, y, width, height));
+        }
+
+        return this;
+      },
+      update: function update(o) {
+        if (this.target() instanceof SVG.Stop) {
+          if (typeof o === 'number' || o instanceof SVG.Number) {
+            return this.update({
+              offset: arguments[0],
+              color: arguments[1],
+              opacity: arguments[2]
+            });
+          }
+
+          if (o.opacity != null) this.attr('stop-opacity', o.opacity);
+          if (o.color != null) this.attr('stop-color', o.color);
+          if (o.offset != null) this.attr('offset', o.offset);
+        }
+
+        return this;
+      }
+    });
+    SVG.Box = SVG.invent({
+      create: function create(x, y, width, height) {
+        if (_typeof(x) === 'object' && !(x instanceof SVG.Element)) {
+          // chromes getBoundingClientRect has no x and y property
+          return SVG.Box.call(this, x.left != null ? x.left : x.x, x.top != null ? x.top : x.y, x.width, x.height);
+        } else if (arguments.length == 4) {
+          this.x = x;
+          this.y = y;
+          this.width = width;
+          this.height = height;
+        } // add center, right, bottom...
+
+
+        fullBox(this);
+      },
+      extend: {
+        // Merge rect box with another, return a new instance
+        merge: function merge(box) {
+          var b = new this.constructor(); // merge boxes
+
+          b.x = Math.min(this.x, box.x);
+          b.y = Math.min(this.y, box.y);
+          b.width = Math.max(this.x + this.width, box.x + box.width) - b.x;
+          b.height = Math.max(this.y + this.height, box.y + box.height) - b.y;
+          return fullBox(b);
+        },
+        transform: function transform(m) {
+          var xMin = Infinity,
+              xMax = -Infinity,
+              yMin = Infinity,
+              yMax = -Infinity,
+              bbox;
+          var pts = [new SVG.Point(this.x, this.y), new SVG.Point(this.x2, this.y), new SVG.Point(this.x, this.y2), new SVG.Point(this.x2, this.y2)];
+          pts.forEach(function (p) {
+            p = p.transform(m);
+            xMin = Math.min(xMin, p.x);
+            xMax = Math.max(xMax, p.x);
+            yMin = Math.min(yMin, p.y);
+            yMax = Math.max(yMax, p.y);
+          });
+          bbox = new this.constructor();
+          bbox.x = xMin;
+          bbox.width = xMax - xMin;
+          bbox.y = yMin;
+          bbox.height = yMax - yMin;
+          fullBox(bbox);
+          return bbox;
+        }
+      }
+    });
+    SVG.BBox = SVG.invent({
+      // Initialize
+      create: function create(element) {
+        SVG.Box.apply(this, [].slice.call(arguments)); // get values if element is given
+
+        if (element instanceof SVG.Element) {
+          var box; // yes this is ugly, but Firefox can be a pain when it comes to elements that are not yet rendered
+
+          try {
+            if (!document.documentElement.contains) {
+              // This is IE - it does not support contains() for top-level SVGs
+              var topParent = element.node;
+
+              while (topParent.parentNode) {
+                topParent = topParent.parentNode;
+              }
+
+              if (topParent != document) throw new Error('Element not in the dom');
+            } // the element is NOT in the dom, throw error
+            // disabling the check below which fixes issue #76
+            // if (!document.documentElement.contains(element.node)) throw new Exception('Element not in the dom')
+            // find native bbox
+
+
+            box = element.node.getBBox();
+          } catch (e) {
+            if (element instanceof SVG.Shape) {
+              if (!SVG.parser.draw) {
+                // fixes apexcharts/vue-apexcharts #14
+                SVG.prepare();
+              }
+
+              var clone = element.clone(SVG.parser.draw.instance).show();
+              box = clone.node.getBBox();
+              clone.remove();
+            } else {
+              box = {
+                x: element.node.clientLeft,
+                y: element.node.clientTop,
+                width: element.node.clientWidth,
+                height: element.node.clientHeight
+              };
+            }
+          }
+
+          SVG.Box.call(this, box);
+        }
+      },
+      // Define ancestor
+      inherit: SVG.Box,
+      // Define Parent
+      parent: SVG.Element,
+      // Constructor
+      construct: {
+        // Get bounding box
+        bbox: function bbox() {
+          return new SVG.BBox(this);
+        }
+      }
+    });
+    SVG.BBox.prototype.constructor = SVG.BBox;
+    SVG.extend(SVG.Element, {
+      tbox: function tbox() {
+        console.warn('Use of TBox is deprecated and mapped to RBox. Use .rbox() instead.');
+        return this.rbox(this.doc());
+      }
+    });
+    SVG.RBox = SVG.invent({
+      // Initialize
+      create: function create(element) {
+        SVG.Box.apply(this, [].slice.call(arguments));
+
+        if (element instanceof SVG.Element) {
+          SVG.Box.call(this, element.node.getBoundingClientRect());
+        }
+      },
+      inherit: SVG.Box,
+      // define Parent
+      parent: SVG.Element,
+      extend: {
+        addOffset: function addOffset() {
+          // offset by window scroll position, because getBoundingClientRect changes when window is scrolled
+          this.x += window.pageXOffset;
+          this.y += window.pageYOffset;
+          return this;
+        }
+      },
+      // Constructor
+      construct: {
+        // Get rect box
+        rbox: function rbox(el) {
+          if (el) return new SVG.RBox(this).transform(el.screenCTM().inverse());
+          return new SVG.RBox(this).addOffset();
+        }
+      }
+    });
+    SVG.RBox.prototype.constructor = SVG.RBox;
+    SVG.Matrix = SVG.invent({
+      // Initialize
+      create: function create(source) {
+        var i,
+            base = arrayToMatrix([1, 0, 0, 1, 0, 0]); // ensure source as object
+
+        source = source instanceof SVG.Element ? source.matrixify() : typeof source === 'string' ? arrayToMatrix(source.split(SVG.regex.delimiter).map(parseFloat)) : arguments.length == 6 ? arrayToMatrix([].slice.call(arguments)) : Array.isArray(source) ? arrayToMatrix(source) : _typeof(source) === 'object' ? source : base; // merge source
+
+        for (i = abcdef.length - 1; i >= 0; --i) {
+          this[abcdef[i]] = source[abcdef[i]] != null ? source[abcdef[i]] : base[abcdef[i]];
+        }
+      },
+      // Add methods
+      extend: {
+        // Extract individual transformations
+        extract: function extract() {
+          // find delta transform points
+          var px = deltaTransformPoint(this, 0, 1),
+              py = deltaTransformPoint(this, 1, 0),
+              skewX = 180 / Math.PI * Math.atan2(px.y, px.x) - 90;
+          return {
+            // translation
+            x: this.e,
+            y: this.f,
+            transformedX: (this.e * Math.cos(skewX * Math.PI / 180) + this.f * Math.sin(skewX * Math.PI / 180)) / Math.sqrt(this.a * this.a + this.b * this.b),
+            transformedY: (this.f * Math.cos(skewX * Math.PI / 180) + this.e * Math.sin(-skewX * Math.PI / 180)) / Math.sqrt(this.c * this.c + this.d * this.d),
+            // skew
+            skewX: -skewX,
+            skewY: 180 / Math.PI * Math.atan2(py.y, py.x),
+            // scale
+            scaleX: Math.sqrt(this.a * this.a + this.b * this.b),
+            scaleY: Math.sqrt(this.c * this.c + this.d * this.d),
+            // rotation
+            rotation: skewX,
+            a: this.a,
+            b: this.b,
+            c: this.c,
+            d: this.d,
+            e: this.e,
+            f: this.f,
+            matrix: new SVG.Matrix(this)
+          };
+        },
+        // Clone matrix
+        clone: function clone() {
+          return new SVG.Matrix(this);
+        },
+        // Morph one matrix into another
+        morph: function morph(matrix) {
+          // store new destination
+          this.destination = new SVG.Matrix(matrix);
+          return this;
+        },
+        // Get morphed matrix at a given position
+        at: function at(pos) {
+          // make sure a destination is defined
+          if (!this.destination) return this; // calculate morphed matrix at a given position
+
+          var matrix = new SVG.Matrix({
+            a: this.a + (this.destination.a - this.a) * pos,
+            b: this.b + (this.destination.b - this.b) * pos,
+            c: this.c + (this.destination.c - this.c) * pos,
+            d: this.d + (this.destination.d - this.d) * pos,
+            e: this.e + (this.destination.e - this.e) * pos,
+            f: this.f + (this.destination.f - this.f) * pos
+          });
+          return matrix;
+        },
+        // Multiplies by given matrix
+        multiply: function multiply(matrix) {
+          return new SVG.Matrix(this.native().multiply(parseMatrix(matrix).native()));
+        },
+        // Inverses matrix
+        inverse: function inverse() {
+          return new SVG.Matrix(this.native().inverse());
+        },
+        // Translate matrix
+        translate: function translate(x, y) {
+          return new SVG.Matrix(this.native().translate(x || 0, y || 0));
+        },
+        // Scale matrix
+        scale: function scale(x, y, cx, cy) {
+          // support uniformal scale
+          if (arguments.length == 1) {
+            y = x;
+          } else if (arguments.length == 3) {
+            cy = cx;
+            cx = y;
+            y = x;
+          }
+
+          return this.around(cx, cy, new SVG.Matrix(x, 0, 0, y, 0, 0));
+        },
+        // Rotate matrix
+        rotate: function rotate(r, cx, cy) {
+          // convert degrees to radians
+          r = SVG.utils.radians(r);
+          return this.around(cx, cy, new SVG.Matrix(Math.cos(r), Math.sin(r), -Math.sin(r), Math.cos(r), 0, 0));
+        },
+        // Flip matrix on x or y, at a given offset
+        flip: function flip(a, o) {
+          return a == 'x' ? this.scale(-1, 1, o, 0) : a == 'y' ? this.scale(1, -1, 0, o) : this.scale(-1, -1, a, o != null ? o : a);
+        },
+        // Skew
+        skew: function skew(x, y, cx, cy) {
+          // support uniformal skew
+          if (arguments.length == 1) {
+            y = x;
+          } else if (arguments.length == 3) {
+            cy = cx;
+            cx = y;
+            y = x;
+          } // convert degrees to radians
+
+
+          x = SVG.utils.radians(x);
+          y = SVG.utils.radians(y);
+          return this.around(cx, cy, new SVG.Matrix(1, Math.tan(y), Math.tan(x), 1, 0, 0));
+        },
+        // SkewX
+        skewX: function skewX(x, cx, cy) {
+          return this.skew(x, 0, cx, cy);
+        },
+        // SkewY
+        skewY: function skewY(y, cx, cy) {
+          return this.skew(0, y, cx, cy);
+        },
+        // Transform around a center point
+        around: function around(cx, cy, matrix) {
+          return this.multiply(new SVG.Matrix(1, 0, 0, 1, cx || 0, cy || 0)).multiply(matrix).multiply(new SVG.Matrix(1, 0, 0, 1, -cx || 0, -cy || 0));
+        },
+        // Convert to native SVGMatrix
+        native: function native() {
+          // create new matrix
+          var matrix = SVG.parser.native.createSVGMatrix(); // update with current values
+
+          for (var i = abcdef.length - 1; i >= 0; i--) {
+            matrix[abcdef[i]] = this[abcdef[i]];
+          }
+
+          return matrix;
+        },
+        // Convert matrix to string
+        toString: function toString() {
+          // Construct the matrix directly, avoid values that are too small
+          return 'matrix(' + float32String(this.a) + ',' + float32String(this.b) + ',' + float32String(this.c) + ',' + float32String(this.d) + ',' + float32String(this.e) + ',' + float32String(this.f) + ')';
+        }
+      },
+      // Define parent
+      parent: SVG.Element,
+      // Add parent method
+      construct: {
+        // Get current matrix
+        ctm: function ctm() {
+          return new SVG.Matrix(this.node.getCTM());
+        },
+        // Get current screen matrix
+        screenCTM: function screenCTM() {
+          /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537
+             This is needed because FF does not return the transformation matrix
+             for the inner coordinate system when getScreenCTM() is called on nested svgs.
+             However all other Browsers do that */
+          if (this instanceof SVG.Nested) {
+            var rect = this.rect(1, 1);
+            var m = rect.node.getScreenCTM();
+            rect.remove();
+            return new SVG.Matrix(m);
+          }
+
+          return new SVG.Matrix(this.node.getScreenCTM());
+        }
+      }
+    });
+    SVG.Point = SVG.invent({
+      // Initialize
+      create: function create(x, y) {
+        var source,
+            base = {
+          x: 0,
+          y: 0 // ensure source as object
+
+        };
+        source = Array.isArray(x) ? {
+          x: x[0],
+          y: x[1]
+        } : _typeof(x) === 'object' ? {
+          x: x.x,
+          y: x.y
+        } : x != null ? {
+          x: x,
+          y: y != null ? y : x
+        } : base; // If y has no value, then x is used has its value
+        // merge source
+
+        this.x = source.x;
+        this.y = source.y;
+      },
+      // Add methods
+      extend: {
+        // Clone point
+        clone: function clone() {
+          return new SVG.Point(this);
+        },
+        // Morph one point into another
+        morph: function morph(x, y) {
+          // store new destination
+          this.destination = new SVG.Point(x, y);
+          return this;
+        },
+        // Get morphed point at a given position
+        at: function at(pos) {
+          // make sure a destination is defined
+          if (!this.destination) return this; // calculate morphed matrix at a given position
+
+          var point = new SVG.Point({
+            x: this.x + (this.destination.x - this.x) * pos,
+            y: this.y + (this.destination.y - this.y) * pos
+          });
+          return point;
+        },
+        // Convert to native SVGPoint
+        native: function native() {
+          // create new point
+          var point = SVG.parser.native.createSVGPoint(); // update with current values
+
+          point.x = this.x;
+          point.y = this.y;
+          return point;
+        },
+        // transform point with matrix
+        transform: function transform(matrix) {
+          return new SVG.Point(this.native().matrixTransform(matrix.native()));
+        }
+      }
+    });
+    SVG.extend(SVG.Element, {
+      // Get point
+      point: function point(x, y) {
+        return new SVG.Point(x, y).transform(this.screenCTM().inverse());
+      }
+    });
+    SVG.extend(SVG.Element, {
+      // Set svg element attribute
+      attr: function attr(a, v, n) {
+        // act as full getter
+        if (a == null) {
+          // get an object of attributes
+          a = {};
+          v = this.node.attributes;
+
+          for (n = v.length - 1; n >= 0; n--) {
+            a[v[n].nodeName] = SVG.regex.isNumber.test(v[n].nodeValue) ? parseFloat(v[n].nodeValue) : v[n].nodeValue;
+          }
+
+          return a;
+        } else if (_typeof(a) === 'object') {
+          // apply every attribute individually if an object is passed
+          for (v in a) {
+            this.attr(v, a[v]);
+          }
+        } else if (v === null) {
+          // remove value
+          this.node.removeAttribute(a);
+        } else if (v == null) {
+          // act as a getter if the first and only argument is not an object
+          v = this.node.getAttribute(a);
+          return v == null ? SVG.defaults.attrs[a] : SVG.regex.isNumber.test(v) ? parseFloat(v) : v;
+        } else {
+          // BUG FIX: some browsers will render a stroke if a color is given even though stroke width is 0
+          if (a == 'stroke-width') {
+            this.attr('stroke', parseFloat(v) > 0 ? this._stroke : null);
+          } else if (a == 'stroke') {
+            this._stroke = v;
+          } // convert image fill and stroke to patterns
+
+
+          if (a == 'fill' || a == 'stroke') {
+            if (SVG.regex.isImage.test(v)) {
+              v = this.doc().defs().image(v, 0, 0);
+            }
+
+            if (v instanceof SVG.Image) {
+              v = this.doc().defs().pattern(0, 0, function () {
+                this.add(v);
+              });
+            }
+          } // ensure correct numeric values (also accepts NaN and Infinity)
+
+
+          if (typeof v === 'number') {
+            v = new SVG.Number(v);
+          } // ensure full hex color
+          else if (SVG.Color.isColor(v)) {
+              v = new SVG.Color(v);
+            } // parse array values
+            else if (Array.isArray(v)) {
+                v = new SVG.Array(v);
+              } // if the passed attribute is leading...
+
+
+          if (a == 'leading') {
+            // ... call the leading method instead
+            if (this.leading) {
+              this.leading(v);
+            }
+          } else {
+            // set given attribute on node
+            typeof n === 'string' ? this.node.setAttributeNS(n, a, v.toString()) : this.node.setAttribute(a, v.toString());
+          } // rebuild if required
+
+
+          if (this.rebuild && (a == 'font-size' || a == 'x')) {
+            this.rebuild(a, v);
+          }
+        }
+
+        return this;
+      }
+    });
+    SVG.extend(SVG.Element, {
+      // Add transformations
+      transform: function transform(o, relative) {
+        // get target in case of the fx module, otherwise reference this
+        var target = this,
+            matrix,
+            bbox; // act as a getter
+
+        if (_typeof(o) !== 'object') {
+          // get current matrix
+          matrix = new SVG.Matrix(target).extract();
+          return typeof o === 'string' ? matrix[o] : matrix;
+        } // get current matrix
+
+
+        matrix = new SVG.Matrix(target); // ensure relative flag
+
+        relative = !!relative || !!o.relative; // act on matrix
+
+        if (o.a != null) {
+          matrix = relative // relative
+          ? matrix.multiply(new SVG.Matrix(o)) // absolute
+          : new SVG.Matrix(o); // act on rotation
+        } else if (o.rotation != null) {
+          // ensure centre point
+          ensureCentre(o, target); // apply transformation
+
+          matrix = relative // relative
+          ? matrix.rotate(o.rotation, o.cx, o.cy) // absolute
+          : matrix.rotate(o.rotation - matrix.extract().rotation, o.cx, o.cy); // act on scale
+        } else if (o.scale != null || o.scaleX != null || o.scaleY != null) {
+          // ensure centre point
+          ensureCentre(o, target); // ensure scale values on both axes
+
+          o.scaleX = o.scale != null ? o.scale : o.scaleX != null ? o.scaleX : 1;
+          o.scaleY = o.scale != null ? o.scale : o.scaleY != null ? o.scaleY : 1;
+
+          if (!relative) {
+            // absolute; multiply inversed values
+            var e = matrix.extract();
+            o.scaleX = o.scaleX * 1 / e.scaleX;
+            o.scaleY = o.scaleY * 1 / e.scaleY;
+          }
+
+          matrix = matrix.scale(o.scaleX, o.scaleY, o.cx, o.cy); // act on skew
+        } else if (o.skew != null || o.skewX != null || o.skewY != null) {
+          // ensure centre point
+          ensureCentre(o, target); // ensure skew values on both axes
+
+          o.skewX = o.skew != null ? o.skew : o.skewX != null ? o.skewX : 0;
+          o.skewY = o.skew != null ? o.skew : o.skewY != null ? o.skewY : 0;
+
+          if (!relative) {
+            // absolute; reset skew values
+            var e = matrix.extract();
+            matrix = matrix.multiply(new SVG.Matrix().skew(e.skewX, e.skewY, o.cx, o.cy).inverse());
+          }
+
+          matrix = matrix.skew(o.skewX, o.skewY, o.cx, o.cy); // act on flip
+        } else if (o.flip) {
+          if (o.flip == 'x' || o.flip == 'y') {
+            o.offset = o.offset == null ? target.bbox()['c' + o.flip] : o.offset;
+          } else {
+            if (o.offset == null) {
+              bbox = target.bbox();
+              o.flip = bbox.cx;
+              o.offset = bbox.cy;
+            } else {
+              o.flip = o.offset;
+            }
+          }
+
+          matrix = new SVG.Matrix().flip(o.flip, o.offset); // act on translate
+        } else if (o.x != null || o.y != null) {
+          if (relative) {
+            // relative
+            matrix = matrix.translate(o.x, o.y);
+          } else {
+            // absolute
+            if (o.x != null) matrix.e = o.x;
+            if (o.y != null) matrix.f = o.y;
+          }
+        }
+
+        return this.attr('transform', matrix);
+      }
+    });
+    SVG.extend(SVG.FX, {
+      transform: function transform(o, relative) {
+        // get target in case of the fx module, otherwise reference this
+        var target = this.target(),
+            matrix,
+            bbox; // act as a getter
+
+        if (_typeof(o) !== 'object') {
+          // get current matrix
+          matrix = new SVG.Matrix(target).extract();
+          return typeof o === 'string' ? matrix[o] : matrix;
+        } // ensure relative flag
+
+
+        relative = !!relative || !!o.relative; // act on matrix
+
+        if (o.a != null) {
+          matrix = new SVG.Matrix(o); // act on rotation
+        } else if (o.rotation != null) {
+          // ensure centre point
+          ensureCentre(o, target); // apply transformation
+
+          matrix = new SVG.Rotate(o.rotation, o.cx, o.cy); // act on scale
+        } else if (o.scale != null || o.scaleX != null || o.scaleY != null) {
+          // ensure centre point
+          ensureCentre(o, target); // ensure scale values on both axes
+
+          o.scaleX = o.scale != null ? o.scale : o.scaleX != null ? o.scaleX : 1;
+          o.scaleY = o.scale != null ? o.scale : o.scaleY != null ? o.scaleY : 1;
+          matrix = new SVG.Scale(o.scaleX, o.scaleY, o.cx, o.cy); // act on skew
+        } else if (o.skewX != null || o.skewY != null) {
+          // ensure centre point
+          ensureCentre(o, target); // ensure skew values on both axes
+
+          o.skewX = o.skewX != null ? o.skewX : 0;
+          o.skewY = o.skewY != null ? o.skewY : 0;
+          matrix = new SVG.Skew(o.skewX, o.skewY, o.cx, o.cy); // act on flip
+        } else if (o.flip) {
+          if (o.flip == 'x' || o.flip == 'y') {
+            o.offset = o.offset == null ? target.bbox()['c' + o.flip] : o.offset;
+          } else {
+            if (o.offset == null) {
+              bbox = target.bbox();
+              o.flip = bbox.cx;
+              o.offset = bbox.cy;
+            } else {
+              o.flip = o.offset;
+            }
+          }
+
+          matrix = new SVG.Matrix().flip(o.flip, o.offset); // act on translate
+        } else if (o.x != null || o.y != null) {
+          matrix = new SVG.Translate(o.x, o.y);
+        }
+
+        if (!matrix) return this;
+        matrix.relative = relative;
+        this.last().transforms.push(matrix);
+        return this._callStart();
+      }
+    });
+    SVG.extend(SVG.Element, {
+      // Reset all transformations
+      untransform: function untransform() {
+        return this.attr('transform', null);
+      },
+      // merge the whole transformation chain into one matrix and returns it
+      matrixify: function matrixify() {
+        var matrix = (this.attr('transform') || ''). // split transformations
+        split(SVG.regex.transforms).slice(0, -1).map(function (str) {
+          // generate key => value pairs
+          var kv = str.trim().split('(');
+          return [kv[0], kv[1].split(SVG.regex.delimiter).map(function (str) {
+            return parseFloat(str);
+          })];
+        }) // merge every transformation into one matrix
+        .reduce(function (matrix, transform) {
+          if (transform[0] == 'matrix') return matrix.multiply(arrayToMatrix(transform[1]));
+          return matrix[transform[0]].apply(matrix, transform[1]);
+        }, new SVG.Matrix());
+        return matrix;
+      },
+      // add an element to another parent without changing the visual representation on the screen
+      toParent: function toParent(parent) {
+        if (this == parent) return this;
+        var ctm = this.screenCTM();
+        var pCtm = parent.screenCTM().inverse();
+        this.addTo(parent).untransform().transform(pCtm.multiply(ctm));
+        return this;
+      },
+      // same as above with parent equals root-svg
+      toDoc: function toDoc() {
+        return this.toParent(this.doc());
+      }
+    });
+    SVG.Transformation = SVG.invent({
+      create: function create(source, inversed) {
+        if (arguments.length > 1 && typeof inversed !== 'boolean') {
+          return this.constructor.call(this, [].slice.call(arguments));
+        }
+
+        if (Array.isArray(source)) {
+          for (var i = 0, len = this.arguments.length; i < len; ++i) {
+            this[this.arguments[i]] = source[i];
+          }
+        } else if (_typeof(source) === 'object') {
+          for (var i = 0, len = this.arguments.length; i < len; ++i) {
+            this[this.arguments[i]] = source[this.arguments[i]];
+          }
+        }
+
+        this.inversed = false;
+
+        if (inversed === true) {
+          this.inversed = true;
+        }
+      },
+      extend: {
+        arguments: [],
+        method: '',
+        at: function at(pos) {
+          var params = [];
+
+          for (var i = 0, len = this.arguments.length; i < len; ++i) {
+            params.push(this[this.arguments[i]]);
+          }
+
+          var m = this._undo || new SVG.Matrix();
+          m = new SVG.Matrix().morph(SVG.Matrix.prototype[this.method].apply(m, params)).at(pos);
+          return this.inversed ? m.inverse() : m;
+        },
+        undo: function undo(o) {
+          for (var i = 0, len = this.arguments.length; i < len; ++i) {
+            o[this.arguments[i]] = typeof this[this.arguments[i]] === 'undefined' ? 0 : o[this.arguments[i]];
+          } // The method SVG.Matrix.extract which was used before calling this
+          // method to obtain a value for the parameter o doesn't return a cx and
+          // a cy so we use the ones that were provided to this object at its creation
+
+
+          o.cx = this.cx;
+          o.cy = this.cy;
+          this._undo = new SVG[capitalize(this.method)](o, true).at(1);
+          return this;
+        }
+      }
+    });
+    SVG.Translate = SVG.invent({
+      parent: SVG.Matrix,
+      inherit: SVG.Transformation,
+      create: function create(source, inversed) {
+        this.constructor.apply(this, [].slice.call(arguments));
+      },
+      extend: {
+        arguments: ['transformedX', 'transformedY'],
+        method: 'translate'
+      }
+    });
+    SVG.Rotate = SVG.invent({
+      parent: SVG.Matrix,
+      inherit: SVG.Transformation,
+      create: function create(source, inversed) {
+        this.constructor.apply(this, [].slice.call(arguments));
+      },
+      extend: {
+        arguments: ['rotation', 'cx', 'cy'],
+        method: 'rotate',
+        at: function at(pos) {
+          var m = new SVG.Matrix().rotate(new SVG.Number().morph(this.rotation - (this._undo ? this._undo.rotation : 0)).at(pos), this.cx, this.cy);
+          return this.inversed ? m.inverse() : m;
+        },
+        undo: function undo(o) {
+          this._undo = o;
+          return this;
+        }
+      }
+    });
+    SVG.Scale = SVG.invent({
+      parent: SVG.Matrix,
+      inherit: SVG.Transformation,
+      create: function create(source, inversed) {
+        this.constructor.apply(this, [].slice.call(arguments));
+      },
+      extend: {
+        arguments: ['scaleX', 'scaleY', 'cx', 'cy'],
+        method: 'scale'
+      }
+    });
+    SVG.Skew = SVG.invent({
+      parent: SVG.Matrix,
+      inherit: SVG.Transformation,
+      create: function create(source, inversed) {
+        this.constructor.apply(this, [].slice.call(arguments));
+      },
+      extend: {
+        arguments: ['skewX', 'skewY', 'cx', 'cy'],
+        method: 'skew'
+      }
+    });
+    SVG.extend(SVG.Element, {
+      // Dynamic style generator
+      style: function style(s, v) {
+        if (arguments.length == 0) {
+          // get full style
+          return this.node.style.cssText || '';
+        } else if (arguments.length < 2) {
+          // apply every style individually if an object is passed
+          if (_typeof(s) === 'object') {
+            for (v in s) {
+              this.style(v, s[v]);
+            }
+          } else if (SVG.regex.isCss.test(s)) {
+            // parse css string
+            s = s.split(/\s*;\s*/) // filter out suffix ; and stuff like ;;
+            .filter(function (e) {
+              return !!e;
+            }).map(function (e) {
+              return e.split(/\s*:\s*/);
+            }); // apply every definition individually
+
+            while (v = s.pop()) {
+              this.style(v[0], v[1]);
+            }
+          } else {
+            // act as a getter if the first and only argument is not an object
+            return this.node.style[camelCase(s)];
+          }
+        } else {
+          this.node.style[camelCase(s)] = v === null || SVG.regex.isBlank.test(v) ? '' : v;
+        }
+
+        return this;
+      }
+    });
+    SVG.Parent = SVG.invent({
+      // Initialize node
+      create: function create(element) {
+        this.constructor.call(this, element);
+      },
+      // Inherit from
+      inherit: SVG.Element,
+      // Add class methods
+      extend: {
+        // Returns all child elements
+        children: function children() {
+          return SVG.utils.map(SVG.utils.filterSVGElements(this.node.childNodes), function (node) {
+            return SVG.adopt(node);
+          });
+        },
+        // Add given element at a position
+        add: function add(element, i) {
+          if (i == null) {
+            this.node.appendChild(element.node);
+          } else if (element.node != this.node.childNodes[i]) {
+            this.node.insertBefore(element.node, this.node.childNodes[i]);
+          }
+
+          return this;
+        },
+        // Basically does the same as `add()` but returns the added element instead
+        put: function put(element, i) {
+          this.add(element, i);
+          return element;
+        },
+        // Checks if the given element is a child
+        has: function has(element) {
+          return this.index(element) >= 0;
+        },
+        // Gets index of given element
+        index: function index(element) {
+          return [].slice.call(this.node.childNodes).indexOf(element.node);
+        },
+        // Get a element at the given index
+        get: function get(i) {
+          return SVG.adopt(this.node.childNodes[i]);
+        },
+        // Get first child
+        first: function first() {
+          return this.get(0);
+        },
+        // Get the last child
+        last: function last() {
+          return this.get(this.node.childNodes.length - 1);
+        },
+        // Iterates over all children and invokes a given block
+        each: function each(block, deep) {
+          var i,
+              il,
+              children = this.children();
+
+          for (i = 0, il = children.length; i < il; i++) {
+            if (children[i] instanceof SVG.Element) {
+              block.apply(children[i], [i, children]);
+            }
+
+            if (deep && children[i] instanceof SVG.Container) {
+              children[i].each(block, deep);
+            }
+          }
+
+          return this;
+        },
+        // Remove a given child
+        removeElement: function removeElement(element) {
+          this.node.removeChild(element.node);
+          return this;
+        },
+        // Remove all elements in this container
+        clear: function clear() {
+          // remove children
+          while (this.node.hasChildNodes()) {
+            this.node.removeChild(this.node.lastChild);
+          } // remove defs reference
+
+
+          delete this._defs;
+          return this;
+        },
+        // Get defs
+        defs: function defs() {
+          return this.doc().defs();
+        }
+      }
+    });
+    SVG.extend(SVG.Parent, {
+      ungroup: function ungroup(parent, depth) {
+        if (depth === 0 || this instanceof SVG.Defs || this.node == SVG.parser.draw) return this;
+        parent = parent || (this instanceof SVG.Doc ? this : this.parent(SVG.Parent));
+        depth = depth || Infinity;
+        this.each(function () {
+          if (this instanceof SVG.Defs) return this;
+          if (this instanceof SVG.Parent) return this.ungroup(parent, depth - 1);
+          return this.toParent(parent);
+        });
+        this.node.firstChild || this.remove();
+        return this;
+      },
+      flatten: function flatten(parent, depth) {
+        return this.ungroup(parent, depth);
+      }
+    });
+    SVG.Container = SVG.invent({
+      // Initialize node
+      create: function create(element) {
+        this.constructor.call(this, element);
+      },
+      // Inherit from
+      inherit: SVG.Parent
+    });
+    SVG.ViewBox = SVG.invent({
+      create: function create(source) {
+        var base = [0, 0, 0, 0];
+        var x,
+            y,
+            width,
+            height,
+            box,
+            view,
+            we,
+            he,
+            wm = 1,
+            // width multiplier
+        hm = 1,
+            // height multiplier
+        reg = /[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/gi;
+
+        if (source instanceof SVG.Element) {
+          we = source;
+          he = source;
+          view = (source.attr('viewBox') || '').match(reg);
+          box = source.bbox; // get dimensions of current node
+
+          width = new SVG.Number(source.width());
+          height = new SVG.Number(source.height()); // find nearest non-percentual dimensions
+
+          while (width.unit == '%') {
+            wm *= width.value;
+            width = new SVG.Number(we instanceof SVG.Doc ? we.parent().offsetWidth : we.parent().width());
+            we = we.parent();
+          }
+
+          while (height.unit == '%') {
+            hm *= height.value;
+            height = new SVG.Number(he instanceof SVG.Doc ? he.parent().offsetHeight : he.parent().height());
+            he = he.parent();
+          } // ensure defaults
+
+
+          this.x = 0;
+          this.y = 0;
+          this.width = width * wm;
+          this.height = height * hm;
+          this.zoom = 1;
+
+          if (view) {
+            // get width and height from viewbox
+            x = parseFloat(view[0]);
+            y = parseFloat(view[1]);
+            width = parseFloat(view[2]);
+            height = parseFloat(view[3]); // calculate zoom accoring to viewbox
+
+            this.zoom = this.width / this.height > width / height ? this.height / height : this.width / width; // calculate real pixel dimensions on parent SVG.Doc element
+
+            this.x = x;
+            this.y = y;
+            this.width = width;
+            this.height = height;
+          }
+        } else {
+          // ensure source as object
+          source = typeof source === 'string' ? source.match(reg).map(function (el) {
+            return parseFloat(el);
+          }) : Array.isArray(source) ? source : _typeof(source) === 'object' ? [source.x, source.y, source.width, source.height] : arguments.length == 4 ? [].slice.call(arguments) : base;
+          this.x = source[0];
+          this.y = source[1];
+          this.width = source[2];
+          this.height = source[3];
+        }
+      },
+      extend: {
+        toString: function toString() {
+          return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height;
+        },
+        morph: function morph(x, y, width, height) {
+          this.destination = new SVG.ViewBox(x, y, width, height);
+          return this;
+        },
+        at: function at(pos) {
+          if (!this.destination) return this;
+          return new SVG.ViewBox([this.x + (this.destination.x - this.x) * pos, this.y + (this.destination.y - this.y) * pos, this.width + (this.destination.width - this.width) * pos, this.height + (this.destination.height - this.height) * pos]);
+        }
+      },
+      // Define parent
+      parent: SVG.Container,
+      // Add parent method
+      construct: {
+        // get/set viewbox
+        viewbox: function viewbox(x, y, width, height) {
+          if (arguments.length == 0) // act as a getter if there are no arguments
+            {
+              return new SVG.ViewBox(this);
+            } // otherwise act as a setter
+
+
+          return this.attr('viewBox', new SVG.ViewBox(x, y, width, height));
+        }
+      }
+    }) // Add events to elements
+    ;
+    ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'mousemove', // , 'mouseenter' -> not supported by IE
+    // , 'mouseleave' -> not supported by IE
+    'touchstart', 'touchmove', 'touchleave', 'touchend', 'touchcancel'].forEach(function (event) {
+      // add event to SVG.Element
+      SVG.Element.prototype[event] = function (f) {
+        // bind event to element rather than element node
+        SVG.on(this.node, event, f);
+        return this;
+      };
+    }); // Initialize listeners stack
+
+    SVG.listeners = [];
+    SVG.handlerMap = [];
+    SVG.listenerId = 0; // Add event binder in the SVG namespace
+
+    SVG.on = function (node, event, listener, binding, options) {
+      // create listener, get object-index
+      var l = listener.bind(binding || node.instance || node),
+          index = (SVG.handlerMap.indexOf(node) + 1 || SVG.handlerMap.push(node)) - 1,
+          ev = event.split('.')[0],
+          ns = event.split('.')[1] || '*'; // ensure valid object
+
+      SVG.listeners[index] = SVG.listeners[index] || {};
+      SVG.listeners[index][ev] = SVG.listeners[index][ev] || {};
+      SVG.listeners[index][ev][ns] = SVG.listeners[index][ev][ns] || {};
+
+      if (!listener._svgjsListenerId) {
+        listener._svgjsListenerId = ++SVG.listenerId;
+      } // reference listener
+
+
+      SVG.listeners[index][ev][ns][listener._svgjsListenerId] = l; // add listener
+
+      node.addEventListener(ev, l, options || false);
+    }; // Add event unbinder in the SVG namespace
+
+
+    SVG.off = function (node, event, listener) {
+      var index = SVG.handlerMap.indexOf(node),
+          ev = event && event.split('.')[0],
+          ns = event && event.split('.')[1],
+          namespace = '';
+      if (index == -1) return;
+
+      if (listener) {
+        if (typeof listener === 'function') listener = listener._svgjsListenerId;
+        if (!listener) return; // remove listener reference
+
+        if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns || '*']) {
+          // remove listener
+          node.removeEventListener(ev, SVG.listeners[index][ev][ns || '*'][listener], false);
+          delete SVG.listeners[index][ev][ns || '*'][listener];
+        }
+      } else if (ns && ev) {
+        // remove all listeners for a namespaced event
+        if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns]) {
+          for (listener in SVG.listeners[index][ev][ns]) {
+            SVG.off(node, [ev, ns].join('.'), listener);
+          }
+
+          delete SVG.listeners[index][ev][ns];
+        }
+      } else if (ns) {
+        // remove all listeners for a specific namespace
+        for (event in SVG.listeners[index]) {
+          for (namespace in SVG.listeners[index][event]) {
+            if (ns === namespace) {
+              SVG.off(node, [event, ns].join('.'));
+            }
+          }
+        }
+      } else if (ev) {
+        // remove all listeners for the event
+        if (SVG.listeners[index][ev]) {
+          for (namespace in SVG.listeners[index][ev]) {
+            SVG.off(node, [ev, namespace].join('.'));
+          }
+
+          delete SVG.listeners[index][ev];
+        }
+      } else {
+        // remove all listeners on a given node
+        for (event in SVG.listeners[index]) {
+          SVG.off(node, event);
+        }
+
+        delete SVG.listeners[index];
+        delete SVG.handlerMap[index];
+      }
+    }; //
+
+
+    SVG.extend(SVG.Element, {
+      // Bind given event to listener
+      on: function on(event, listener, binding, options) {
+        SVG.on(this.node, event, listener, binding, options);
+        return this;
+      },
+      // Unbind event from listener
+      off: function off(event, listener) {
+        SVG.off(this.node, event, listener);
+        return this;
+      },
+      // Fire given event
+      fire: function fire(event, data) {
+        // Dispatch event
+        if (event instanceof window.Event) {
+          this.node.dispatchEvent(event);
+        } else {
+          this.node.dispatchEvent(event = new SVG.CustomEvent(event, {
+            detail: data,
+            cancelable: true
+          }));
+        }
+
+        this._event = event;
+        return this;
+      },
+      event: function event() {
+        return this._event;
+      }
+    });
+    SVG.Defs = SVG.invent({
+      // Initialize node
+      create: 'defs',
+      // Inherit from
+      inherit: SVG.Container
+    });
+    SVG.G = SVG.invent({
+      // Initialize node
+      create: 'g',
+      // Inherit from
+      inherit: SVG.Container,
+      // Add class methods
+      extend: {
+        // Move over x-axis
+        x: function x(_x3) {
+          return _x3 == null ? this.transform('x') : this.transform({
+            x: _x3 - this.x()
+          }, true);
+        },
+        // Move over y-axis
+        y: function y(_y3) {
+          return _y3 == null ? this.transform('y') : this.transform({
+            y: _y3 - this.y()
+          }, true);
+        },
+        // Move by center over x-axis
+        cx: function cx(x) {
+          return x == null ? this.gbox().cx : this.x(x - this.gbox().width / 2);
+        },
+        // Move by center over y-axis
+        cy: function cy(y) {
+          return y == null ? this.gbox().cy : this.y(y - this.gbox().height / 2);
+        },
+        gbox: function gbox() {
+          var bbox = this.bbox(),
+              trans = this.transform();
+          bbox.x += trans.x;
+          bbox.x2 += trans.x;
+          bbox.cx += trans.x;
+          bbox.y += trans.y;
+          bbox.y2 += trans.y;
+          bbox.cy += trans.y;
+          return bbox;
+        }
+      },
+      // Add parent method
+      construct: {
+        // Create a group element
+        group: function group() {
+          return this.put(new SVG.G());
+        }
+      }
+    });
+    SVG.Doc = SVG.invent({
+      // Initialize node
+      create: function create(element) {
+        if (element) {
+          // ensure the presence of a dom element
+          element = typeof element === 'string' ? document.getElementById(element) : element; // If the target is an svg element, use that element as the main wrapper.
+          // This allows svg.js to work with svg documents as well.
+
+          if (element.nodeName == 'svg') {
+            this.constructor.call(this, element);
+          } else {
+            this.constructor.call(this, SVG.create('svg'));
+            element.appendChild(this.node);
+            this.size('100%', '100%');
+          } // set svg element attributes and ensure defs node
+
+
+          this.namespace().defs();
+        }
+      },
+      // Inherit from
+      inherit: SVG.Container,
+      // Add class methods
+      extend: {
+        // Add namespaces
+        namespace: function namespace() {
+          return this.attr({
+            xmlns: SVG.ns,
+            version: '1.1'
+          }).attr('xmlns:xlink', SVG.xlink, SVG.xmlns).attr('xmlns:svgjs', SVG.svgjs, SVG.xmlns);
+        },
+        // Creates and returns defs element
+        defs: function defs() {
+          if (!this._defs) {
+            var defs; // Find or create a defs element in this instance
+
+            if (defs = this.node.getElementsByTagName('defs')[0]) {
+              this._defs = SVG.adopt(defs);
+            } else {
+              this._defs = new SVG.Defs();
+            } // Make sure the defs node is at the end of the stack
+
+
+            this.node.appendChild(this._defs.node);
+          }
+
+          return this._defs;
+        },
+        // custom parent method
+        parent: function parent() {
+          if (!this.node.parentNode || this.node.parentNode.nodeName == '#document') return null;
+          return this.node.parentNode;
+        },
+        // Fix for possible sub-pixel offset. See:
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=608812
+        spof: function spof() {
+          var pos = this.node.getScreenCTM();
+
+          if (pos) {
+            this.style('left', -pos.e % 1 + 'px').style('top', -pos.f % 1 + 'px');
+          }
+
+          return this;
+        },
+        // Removes the doc from the DOM
+        remove: function remove() {
+          if (this.parent()) {
+            this.parent().removeChild(this.node);
+          }
+
+          return this;
+        },
+        clear: function clear() {
+          // remove children
+          while (this.node.hasChildNodes()) {
+            this.node.removeChild(this.node.lastChild);
+          } // remove defs reference
+
+
+          delete this._defs; // add back parser
+
+          if (SVG.parser.draw && !SVG.parser.draw.parentNode) {
+            this.node.appendChild(SVG.parser.draw);
+          }
+
+          return this;
+        },
+        clone: function clone(parent) {
+          // write dom data to the dom so the clone can pickup the data
+          this.writeDataToDom(); // get reference to node
+
+          var node = this.node; // clone element and assign new id
+
+          var clone = assignNewId(node.cloneNode(true)); // insert the clone in the given parent or after myself
+
+          if (parent) {
+            (parent.node || parent).appendChild(clone.node);
+          } else {
+            node.parentNode.insertBefore(clone.node, node.nextSibling);
+          }
+
+          return clone;
+        }
+      }
+    }); // ### This module adds backward / forward functionality to elements.
+    //
+
+    SVG.extend(SVG.Element, {
+      // Get all siblings, including myself
+      siblings: function siblings() {
+        return this.parent().children();
+      },
+      // Get the curent position siblings
+      position: function position() {
+        return this.parent().index(this);
+      },
+      // Get the next element (will return null if there is none)
+      next: function next() {
+        return this.siblings()[this.position() + 1];
+      },
+      // Get the next element (will return null if there is none)
+      previous: function previous() {
+        return this.siblings()[this.position() - 1];
+      },
+      // Send given element one step forward
+      forward: function forward() {
+        var i = this.position() + 1,
+            p = this.parent(); // move node one step forward
+
+        p.removeElement(this).add(this, i); // make sure defs node is always at the top
+
+        if (p instanceof SVG.Doc) {
+          p.node.appendChild(p.defs().node);
+        }
+
+        return this;
+      },
+      // Send given element one step backward
+      backward: function backward() {
+        var i = this.position();
+
+        if (i > 0) {
+          this.parent().removeElement(this).add(this, i - 1);
+        }
+
+        return this;
+      },
+      // Send given element all the way to the front
+      front: function front() {
+        var p = this.parent(); // Move node forward
+
+        p.node.appendChild(this.node); // Make sure defs node is always at the top
+
+        if (p instanceof SVG.Doc) {
+          p.node.appendChild(p.defs().node);
+        }
+
+        return this;
+      },
+      // Send given element all the way to the back
+      back: function back() {
+        if (this.position() > 0) {
+          this.parent().removeElement(this).add(this, 0);
+        }
+
+        return this;
+      },
+      // Inserts a given element before the targeted element
+      before: function before(element) {
+        element.remove();
+        var i = this.position();
+        this.parent().add(element, i);
+        return this;
+      },
+      // Insters a given element after the targeted element
+      after: function after(element) {
+        element.remove();
+        var i = this.position();
+        this.parent().add(element, i + 1);
+        return this;
+      }
+    });
+    SVG.Mask = SVG.invent({
+      // Initialize node
+      create: function create() {
+        this.constructor.call(this, SVG.create('mask')); // keep references to masked elements
+
+        this.targets = [];
+      },
+      // Inherit from
+      inherit: SVG.Container,
+      // Add class methods
+      extend: {
+        // Unmask all masked elements and remove itself
+        remove: function remove() {
+          // unmask all targets
+          for (var i = this.targets.length - 1; i >= 0; i--) {
+            if (this.targets[i]) {
+              this.targets[i].unmask();
+            }
+          }
+
+          this.targets = []; // remove mask from parent
+
+          SVG.Element.prototype.remove.call(this);
+          return this;
+        }
+      },
+      // Add parent method
+      construct: {
+        // Create masking element
+        mask: function mask() {
+          return this.defs().put(new SVG.Mask());
+        }
+      }
+    });
+    SVG.extend(SVG.Element, {
+      // Distribute mask to svg element
+      maskWith: function maskWith(element) {
+        // use given mask or create a new one
+        this.masker = element instanceof SVG.Mask ? element : this.parent().mask().add(element); // store reverence on self in mask
+
+        this.masker.targets.push(this); // apply mask
+
+        return this.attr('mask', 'url("#' + this.masker.attr('id') + '")');
+      },
+      // Unmask element
+      unmask: function unmask() {
+        delete this.masker;
+        return this.attr('mask', null);
+      }
+    });
+    SVG.ClipPath = SVG.invent({
+      // Initialize node
+      create: function create() {
+        this.constructor.call(this, SVG.create('clipPath')); // keep references to clipped elements
+
+        this.targets = [];
+      },
+      // Inherit from
+      inherit: SVG.Container,
+      // Add class methods
+      extend: {
+        // Unclip all clipped elements and remove itself
+        remove: function remove() {
+          // unclip all targets
+          for (var i = this.targets.length - 1; i >= 0; i--) {
+            if (this.targets[i]) {
+              this.targets[i].unclip();
+            }
+          }
+
+          this.targets = []; // remove clipPath from parent
+
+          this.parent().removeElement(this);
+          return this;
+        }
+      },
+      // Add parent method
+      construct: {
+        // Create clipping element
+        clip: function clip() {
+          return this.defs().put(new SVG.ClipPath());
+        }
+      }
+    }); //
+
+    SVG.extend(SVG.Element, {
+      // Distribute clipPath to svg element
+      clipWith: function clipWith(element) {
+        // use given clip or create a new one
+        this.clipper = element instanceof SVG.ClipPath ? element : this.parent().clip().add(element); // store reverence on self in mask
+
+        this.clipper.targets.push(this); // apply mask
+
+        return this.attr('clip-path', 'url("#' + this.clipper.attr('id') + '")');
+      },
+      // Unclip element
+      unclip: function unclip() {
+        delete this.clipper;
+        return this.attr('clip-path', null);
+      }
+    });
+    SVG.Gradient = SVG.invent({
+      // Initialize node
+      create: function create(type) {
+        this.constructor.call(this, SVG.create(type + 'Gradient')); // store type
+
+        this.type = type;
+      },
+      // Inherit from
+      inherit: SVG.Container,
+      // Add class methods
+      extend: {
+        // Add a color stop
+        at: function at(offset, color, opacity) {
+          return this.put(new SVG.Stop()).update(offset, color, opacity);
+        },
+        // Update gradient
+        update: function update(block) {
+          // remove all stops
+          this.clear(); // invoke passed block
+
+          if (typeof block === 'function') {
+            block.call(this, this);
+          }
+
+          return this;
+        },
+        // Return the fill id
+        fill: function fill() {
+          return 'url(#' + this.id() + ')';
+        },
+        // Alias string convertion to fill
+        toString: function toString() {
+          return this.fill();
+        },
+        // custom attr to handle transform
+        attr: function attr(a, b, c) {
+          if (a == 'transform') a = 'gradientTransform';
+          return SVG.Container.prototype.attr.call(this, a, b, c);
+        }
+      },
+      // Add parent method
+      construct: {
+        // Create gradient element in defs
+        gradient: function gradient(type, block) {
+          return this.defs().gradient(type, block);
+        }
+      }
+    }); // Add animatable methods to both gradient and fx module
+
+    SVG.extend(SVG.Gradient, SVG.FX, {
+      // From position
+      from: function from(x, y) {
+        return (this._target || this).type == 'radial' ? this.attr({
+          fx: new SVG.Number(x),
+          fy: new SVG.Number(y)
+        }) : this.attr({
+          x1: new SVG.Number(x),
+          y1: new SVG.Number(y)
+        });
+      },
+      // To position
+      to: function to(x, y) {
+        return (this._target || this).type == 'radial' ? this.attr({
+          cx: new SVG.Number(x),
+          cy: new SVG.Number(y)
+        }) : this.attr({
+          x2: new SVG.Number(x),
+          y2: new SVG.Number(y)
+        });
+      }
+    }); // Base gradient generation
+
+    SVG.extend(SVG.Defs, {
+      // define gradient
+      gradient: function gradient(type, block) {
+        return this.put(new SVG.Gradient(type)).update(block);
+      }
+    });
+    SVG.Stop = SVG.invent({
+      // Initialize node
+      create: 'stop',
+      // Inherit from
+      inherit: SVG.Element,
+      // Add class methods
+      extend: {
+        // add color stops
+        update: function update(o) {
+          if (typeof o === 'number' || o instanceof SVG.Number) {
+            o = {
+              offset: arguments[0],
+              color: arguments[1],
+              opacity: arguments[2]
+            };
+          } // set attributes
+
+
+          if (o.opacity != null) this.attr('stop-opacity', o.opacity);
+          if (o.color != null) this.attr('stop-color', o.color);
+          if (o.offset != null) this.attr('offset', new SVG.Number(o.offset));
+          return this;
+        }
+      }
+    });
+    SVG.Pattern = SVG.invent({
+      // Initialize node
+      create: 'pattern',
+      // Inherit from
+      inherit: SVG.Container,
+      // Add class methods
+      extend: {
+        // Return the fill id
+        fill: function fill() {
+          return 'url(#' + this.id() + ')';
+        },
+        // Update pattern by rebuilding
+        update: function update(block) {
+          // remove content
+          this.clear(); // invoke passed block
+
+          if (typeof block === 'function') {
+            block.call(this, this);
+          }
+
+          return this;
+        },
+        // Alias string convertion to fill
+        toString: function toString() {
+          return this.fill();
+        },
+        // custom attr to handle transform
+        attr: function attr(a, b, c) {
+          if (a == 'transform') a = 'patternTransform';
+          return SVG.Container.prototype.attr.call(this, a, b, c);
+        }
+      },
+      // Add parent method
+      construct: {
+        // Create pattern element in defs
+        pattern: function pattern(width, height, block) {
+          return this.defs().pattern(width, height, block);
+        }
+      }
+    });
+    SVG.extend(SVG.Defs, {
+      // Define gradient
+      pattern: function pattern(width, height, block) {
+        return this.put(new SVG.Pattern()).update(block).attr({
+          x: 0,
+          y: 0,
+          width: width,
+          height: height,
+          patternUnits: 'userSpaceOnUse'
+        });
+      }
+    });
+    SVG.Shape = SVG.invent({
+      // Initialize node
+      create: function create(element) {
+        this.constructor.call(this, element);
+      },
+      // Inherit from
+      inherit: SVG.Element
+    });
+    SVG.Bare = SVG.invent({
+      // Initialize
+      create: function create(element, inherit) {
+        // construct element
+        this.constructor.call(this, SVG.create(element)); // inherit custom methods
+
+        if (inherit) {
+          for (var method in inherit.prototype) {
+            if (typeof inherit.prototype[method] === 'function') {
+              this[method] = inherit.prototype[method];
+            }
+          }
+        }
+      },
+      // Inherit from
+      inherit: SVG.Element,
+      // Add methods
+      extend: {
+        // Insert some plain text
+        words: function words(text) {
+          // remove contents
+          while (this.node.hasChildNodes()) {
+            this.node.removeChild(this.node.lastChild);
+          } // create text node
+
+
+          this.node.appendChild(document.createTextNode(text));
+          return this;
+        }
+      }
+    });
+    SVG.extend(SVG.Parent, {
+      // Create an element that is not described by SVG.js
+      element: function element(_element, inherit) {
+        return this.put(new SVG.Bare(_element, inherit));
+      }
+    });
+    SVG.Symbol = SVG.invent({
+      // Initialize node
+      create: 'symbol',
+      // Inherit from
+      inherit: SVG.Container,
+      construct: {
+        // create symbol
+        symbol: function symbol() {
+          return this.put(new SVG.Symbol());
+        }
+      }
+    });
+    SVG.Use = SVG.invent({
+      // Initialize node
+      create: 'use',
+      // Inherit from
+      inherit: SVG.Shape,
+      // Add class methods
+      extend: {
+        // Use element as a reference
+        element: function element(_element2, file) {
+          // Set lined element
+          return this.attr('href', (file || '') + '#' + _element2, SVG.xlink);
+        }
+      },
+      // Add parent method
+      construct: {
+        // Create a use element
+        use: function use(element, file) {
+          return this.put(new SVG.Use()).element(element, file);
+        }
+      }
+    });
+    SVG.Rect = SVG.invent({
+      // Initialize node
+      create: 'rect',
+      // Inherit from
+      inherit: SVG.Shape,
+      // Add parent method
+      construct: {
+        // Create a rect element
+        rect: function rect(width, height) {
+          return this.put(new SVG.Rect()).size(width, height);
+        }
+      }
+    });
+    SVG.Circle = SVG.invent({
+      // Initialize node
+      create: 'circle',
+      // Inherit from
+      inherit: SVG.Shape,
+      // Add parent method
+      construct: {
+        // Create circle element, based on ellipse
+        circle: function circle(size) {
+          return this.put(new SVG.Circle()).rx(new SVG.Number(size).divide(2)).move(0, 0);
+        }
+      }
+    });
+    SVG.extend(SVG.Circle, SVG.FX, {
+      // Radius x value
+      rx: function rx(_rx) {
+        return this.attr('r', _rx);
+      },
+      // Alias radius x value
+      ry: function ry(_ry) {
+        return this.rx(_ry);
+      }
+    });
+    SVG.Ellipse = SVG.invent({
+      // Initialize node
+      create: 'ellipse',
+      // Inherit from
+      inherit: SVG.Shape,
+      // Add parent method
+      construct: {
+        // Create an ellipse
+        ellipse: function ellipse(width, height) {
+          return this.put(new SVG.Ellipse()).size(width, height).move(0, 0);
+        }
+      }
+    });
+    SVG.extend(SVG.Ellipse, SVG.Rect, SVG.FX, {
+      // Radius x value
+      rx: function rx(_rx2) {
+        return this.attr('rx', _rx2);
+      },
+      // Radius y value
+      ry: function ry(_ry2) {
+        return this.attr('ry', _ry2);
+      }
+    }); // Add common method
+
+    SVG.extend(SVG.Circle, SVG.Ellipse, {
+      // Move over x-axis
+      x: function x(_x4) {
+        return _x4 == null ? this.cx() - this.rx() : this.cx(_x4 + this.rx());
+      },
+      // Move over y-axis
+      y: function y(_y4) {
+        return _y4 == null ? this.cy() - this.ry() : this.cy(_y4 + this.ry());
+      },
+      // Move by center over x-axis
+      cx: function cx(x) {
+        return x == null ? this.attr('cx') : this.attr('cx', x);
+      },
+      // Move by center over y-axis
+      cy: function cy(y) {
+        return y == null ? this.attr('cy') : this.attr('cy', y);
+      },
+      // Set width of element
+      width: function width(_width3) {
+        return _width3 == null ? this.rx() * 2 : this.rx(new SVG.Number(_width3).divide(2));
+      },
+      // Set height of element
+      height: function height(_height3) {
+        return _height3 == null ? this.ry() * 2 : this.ry(new SVG.Number(_height3).divide(2));
+      },
+      // Custom size function
+      size: function size(width, height) {
+        var p = proportionalSize(this, width, height);
+        return this.rx(new SVG.Number(p.width).divide(2)).ry(new SVG.Number(p.height).divide(2));
+      }
+    });
+    SVG.Line = SVG.invent({
+      // Initialize node
+      create: 'line',
+      // Inherit from
+      inherit: SVG.Shape,
+      // Add class methods
+      extend: {
+        // Get array
+        array: function array() {
+          return new SVG.PointArray([[this.attr('x1'), this.attr('y1')], [this.attr('x2'), this.attr('y2')]]);
+        },
+        // Overwrite native plot() method
+        plot: function plot(x1, y1, x2, y2) {
+          if (x1 == null) {
+            return this.array();
+          } else if (typeof y1 !== 'undefined') {
+            x1 = {
+              x1: x1,
+              y1: y1,
+              x2: x2,
+              y2: y2
+            };
+          } else {
+            x1 = new SVG.PointArray(x1).toLine();
+          }
+
+          return this.attr(x1);
+        },
+        // Move by left top corner
+        move: function move(x, y) {
+          return this.attr(this.array().move(x, y).toLine());
+        },
+        // Set element size to given width and height
+        size: function size(width, height) {
+          var p = proportionalSize(this, width, height);
+          return this.attr(this.array().size(p.width, p.height).toLine());
+        }
+      },
+      // Add parent method
+      construct: {
+        // Create a line element
+        line: function line(x1, y1, x2, y2) {
+          // make sure plot is called as a setter
+          // x1 is not necessarily a number, it can also be an array, a string and a SVG.PointArray
+          return SVG.Line.prototype.plot.apply(this.put(new SVG.Line()), x1 != null ? [x1, y1, x2, y2] : [0, 0, 0, 0]);
+        }
+      }
+    });
+    SVG.Polyline = SVG.invent({
+      // Initialize node
+      create: 'polyline',
+      // Inherit from
+      inherit: SVG.Shape,
+      // Add parent method
+      construct: {
+        // Create a wrapped polyline element
+        polyline: function polyline(p) {
+          // make sure plot is called as a setter
+          return this.put(new SVG.Polyline()).plot(p || new SVG.PointArray());
+        }
+      }
+    });
+    SVG.Polygon = SVG.invent({
+      // Initialize node
+      create: 'polygon',
+      // Inherit from
+      inherit: SVG.Shape,
+      // Add parent method
+      construct: {
+        // Create a wrapped polygon element
+        polygon: function polygon(p) {
+          // make sure plot is called as a setter
+          return this.put(new SVG.Polygon()).plot(p || new SVG.PointArray());
+        }
+      }
+    }); // Add polygon-specific functions
+
+    SVG.extend(SVG.Polyline, SVG.Polygon, {
+      // Get array
+      array: function array() {
+        return this._array || (this._array = new SVG.PointArray(this.attr('points')));
+      },
+      // Plot new path
+      plot: function plot(p) {
+        return p == null ? this.array() : this.clear().attr('points', typeof p === 'string' ? p : this._array = new SVG.PointArray(p));
+      },
+      // Clear array cache
+      clear: function clear() {
+        delete this._array;
+        return this;
+      },
+      // Move by left top corner
+      move: function move(x, y) {
+        return this.attr('points', this.array().move(x, y));
+      },
+      // Set element size to given width and height
+      size: function size(width, height) {
+        var p = proportionalSize(this, width, height);
+        return this.attr('points', this.array().size(p.width, p.height));
+      }
+    }); // unify all point to point elements
+
+    SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, {
+      // Define morphable array
+      morphArray: SVG.PointArray,
+      // Move by left top corner over x-axis
+      x: function x(_x5) {
+        return _x5 == null ? this.bbox().x : this.move(_x5, this.bbox().y);
+      },
+      // Move by left top corner over y-axis
+      y: function y(_y5) {
+        return _y5 == null ? this.bbox().y : this.move(this.bbox().x, _y5);
+      },
+      // Set width of element
+      width: function width(_width4) {
+        var b = this.bbox();
+        return _width4 == null ? b.width : this.size(_width4, b.height);
+      },
+      // Set height of element
+      height: function height(_height4) {
+        var b = this.bbox();
+        return _height4 == null ? b.height : this.size(b.width, _height4);
+      }
+    });
+    SVG.Path = SVG.invent({
+      // Initialize node
+      create: 'path',
+      // Inherit from
+      inherit: SVG.Shape,
+      // Add class methods
+      extend: {
+        // Define morphable array
+        morphArray: SVG.PathArray,
+        // Get array
+        array: function array() {
+          return this._array || (this._array = new SVG.PathArray(this.attr('d')));
+        },
+        // Plot new path
+        plot: function plot(d) {
+          return d == null ? this.array() : this.clear().attr('d', typeof d === 'string' ? d : this._array = new SVG.PathArray(d));
+        },
+        // Clear array cache
+        clear: function clear() {
+          delete this._array;
+          return this;
+        },
+        // Move by left top corner
+        move: function move(x, y) {
+          return this.attr('d', this.array().move(x, y));
+        },
+        // Move by left top corner over x-axis
+        x: function x(_x6) {
+          return _x6 == null ? this.bbox().x : this.move(_x6, this.bbox().y);
+        },
+        // Move by left top corner over y-axis
+        y: function y(_y6) {
+          return _y6 == null ? this.bbox().y : this.move(this.bbox().x, _y6);
+        },
+        // Set element size to given width and height
+        size: function size(width, height) {
+          var p = proportionalSize(this, width, height);
+          return this.attr('d', this.array().size(p.width, p.height));
+        },
+        // Set width of element
+        width: function width(_width5) {
+          return _width5 == null ? this.bbox().width : this.size(_width5, this.bbox().height);
+        },
+        // Set height of element
+        height: function height(_height5) {
+          return _height5 == null ? this.bbox().height : this.size(this.bbox().width, _height5);
+        }
+      },
+      // Add parent method
+      construct: {
+        // Create a wrapped path element
+        path: function path(d) {
+          // make sure plot is called as a setter
+          return this.put(new SVG.Path()).plot(d || new SVG.PathArray());
+        }
+      }
+    });
+    SVG.Image = SVG.invent({
+      // Initialize node
+      create: 'image',
+      // Inherit from
+      inherit: SVG.Shape,
+      // Add class methods
+      extend: {
+        // (re)load image
+        load: function load(url) {
+          if (!url) return this;
+          var self = this,
+              img = new window.Image(); // preload image
+
+          SVG.on(img, 'load', function () {
+            SVG.off(img);
+            var p = self.parent(SVG.Pattern);
+            if (p === null) return; // ensure image size
+
+            if (self.width() == 0 && self.height() == 0) {
+              self.size(img.width, img.height);
+            } // ensure pattern size if not set
+
+
+            if (p && p.width() == 0 && p.height() == 0) {
+              p.size(self.width(), self.height());
+            } // callback
+
+
+            if (typeof self._loaded === 'function') {
+              self._loaded.call(self, {
+                width: img.width,
+                height: img.height,
+                ratio: img.width / img.height,
+                url: url
+              });
+            }
+          });
+          SVG.on(img, 'error', function (e) {
+            SVG.off(img);
+
+            if (typeof self._error === 'function') {
+              self._error.call(self, e);
+            }
+          });
+          return this.attr('href', img.src = this.src = url, SVG.xlink);
+        },
+        // Add loaded callback
+        loaded: function loaded(_loaded) {
+          this._loaded = _loaded;
+          return this;
+        },
+        error: function error(_error) {
+          this._error = _error;
+          return this;
+        }
+      },
+      // Add parent method
+      construct: {
+        // create image element, load image and set its size
+        image: function image(source, width, height) {
+          return this.put(new SVG.Image()).load(source).size(width || 0, height || width || 0);
+        }
+      }
+    });
+    SVG.Text = SVG.invent({
+      // Initialize node
+      create: function create() {
+        this.constructor.call(this, SVG.create('text'));
+        this.dom.leading = new SVG.Number(1.3); // store leading value for rebuilding
+
+        this._rebuild = true; // enable automatic updating of dy values
+
+        this._build = false; // disable build mode for adding multiple lines
+        // set default font
+
+        this.attr('font-family', SVG.defaults.attrs['font-family']);
+      },
+      // Inherit from
+      inherit: SVG.Shape,
+      // Add class methods
+      extend: {
+        // Move over x-axis
+        x: function x(_x7) {
+          // act as getter
+          if (_x7 == null) {
+            return this.attr('x');
+          }
+
+          return this.attr('x', _x7);
+        },
+        // Move over y-axis
+        y: function y(_y7) {
+          var oy = this.attr('y'),
+              o = typeof oy === 'number' ? oy - this.bbox().y : 0; // act as getter
+
+          if (_y7 == null) {
+            return typeof oy === 'number' ? oy - o : oy;
+          }
+
+          return this.attr('y', typeof _y7.valueOf() === 'number' ? _y7 + o : _y7);
+        },
+        // Move center over x-axis
+        cx: function cx(x) {
+          return x == null ? this.bbox().cx : this.x(x - this.bbox().width / 2);
+        },
+        // Move center over y-axis
+        cy: function cy(y) {
+          return y == null ? this.bbox().cy : this.y(y - this.bbox().height / 2);
+        },
+        // Set the text content
+        text: function text(_text) {
+          // act as getter
+          if (typeof _text === 'undefined') {
+            var _text = '';
+            var children = this.node.childNodes;
+
+            for (var i = 0, len = children.length; i < len; ++i) {
+              // add newline if its not the first child and newLined is set to true
+              if (i != 0 && children[i].nodeType != 3 && SVG.adopt(children[i]).dom.newLined == true) {
+                _text += '\n';
+              } // add content of this node
+
+
+              _text += children[i].textContent;
+            }
+
+            return _text;
+          } // remove existing content
+
+
+          this.clear().build(true);
+
+          if (typeof _text === 'function') {
+            // call block
+            _text.call(this, this);
+          } else {
+            // store text and make sure text is not blank
+            _text = _text.split('\n'); // build new lines
+
+            for (var i = 0, il = _text.length; i < il; i++) {
+              this.tspan(_text[i]).newLine();
+            }
+          } // disable build mode and rebuild lines
+
+
+          return this.build(false).rebuild();
+        },
+        // Set font size
+        size: function size(_size) {
+          return this.attr('font-size', _size).rebuild();
+        },
+        // Set / get leading
+        leading: function leading(value) {
+          // act as getter
+          if (value == null) {
+            return this.dom.leading;
+          } // act as setter
+
+
+          this.dom.leading = new SVG.Number(value);
+          return this.rebuild();
+        },
+        // Get all the first level lines
+        lines: function lines() {
+          var node = (this.textPath && this.textPath() || this).node; // filter tspans and map them to SVG.js instances
+
+          var lines = SVG.utils.map(SVG.utils.filterSVGElements(node.childNodes), function (el) {
+            return SVG.adopt(el);
+          }); // return an instance of SVG.set
+
+          return new SVG.Set(lines);
+        },
+        // Rebuild appearance type
+        rebuild: function rebuild(_rebuild) {
+          // store new rebuild flag if given
+          if (typeof _rebuild === 'boolean') {
+            this._rebuild = _rebuild;
+          } // define position of all lines
+
+
+          if (this._rebuild) {
+            var self = this,
+                blankLineOffset = 0,
+                dy = this.dom.leading * new SVG.Number(this.attr('font-size'));
+            this.lines().each(function () {
+              if (this.dom.newLined) {
+                if (!self.textPath()) {
+                  this.attr('x', self.attr('x'));
+                }
+
+                if (this.text() == '\n') {
+                  blankLineOffset += dy;
+                } else {
+                  this.attr('dy', dy + blankLineOffset);
+                  blankLineOffset = 0;
+                }
+              }
+            });
+            this.fire('rebuild');
+          }
+
+          return this;
+        },
+        // Enable / disable build mode
+        build: function build(_build) {
+          this._build = !!_build;
+          return this;
+        },
+        // overwrite method from parent to set data properly
+        setData: function setData(o) {
+          this.dom = o;
+          this.dom.leading = new SVG.Number(o.leading || 1.3);
+          return this;
+        }
+      },
+      // Add parent method
+      construct: {
+        // Create text element
+        text: function text(_text2) {
+          return this.put(new SVG.Text()).text(_text2);
+        },
+        // Create plain text element
+        plain: function plain(text) {
+          return this.put(new SVG.Text()).plain(text);
+        }
+      }
+    });
+    SVG.Tspan = SVG.invent({
+      // Initialize node
+      create: 'tspan',
+      // Inherit from
+      inherit: SVG.Shape,
+      // Add class methods
+      extend: {
+        // Set text content
+        text: function text(_text3) {
+          if (_text3 == null) return this.node.textContent + (this.dom.newLined ? '\n' : '');
+          typeof _text3 === 'function' ? _text3.call(this, this) : this.plain(_text3);
+          return this;
+        },
+        // Shortcut dx
+        dx: function dx(_dx) {
+          return this.attr('dx', _dx);
+        },
+        // Shortcut dy
+        dy: function dy(_dy) {
+          return this.attr('dy', _dy);
+        },
+        // Create new line
+        newLine: function newLine() {
+          // fetch text parent
+          var t = this.parent(SVG.Text); // mark new line
+
+          this.dom.newLined = true; // apply new hy¡n
+
+          return this.dy(t.dom.leading * t.attr('font-size')).attr('x', t.x());
+        }
+      }
+    });
+    SVG.extend(SVG.Text, SVG.Tspan, {
+      // Create plain text node
+      plain: function plain(text) {
+        // clear if build mode is disabled
+        if (this._build === false) {
+          this.clear();
+        } // create text node
+
+
+        this.node.appendChild(document.createTextNode(text));
+        return this;
+      },
+      // Create a tspan
+      tspan: function tspan(text) {
+        var node = (this.textPath && this.textPath() || this).node,
+            tspan = new SVG.Tspan(); // clear if build mode is disabled
+
+        if (this._build === false) {
+          this.clear();
+        } // add new tspan
+
+
+        node.appendChild(tspan.node);
+        return tspan.text(text);
+      },
+      // Clear all lines
+      clear: function clear() {
+        var node = (this.textPath && this.textPath() || this).node; // remove existing child nodes
+
+        while (node.hasChildNodes()) {
+          node.removeChild(node.lastChild);
+        }
+
+        return this;
+      },
+      // Get length of text element
+      length: function length() {
+        return this.node.getComputedTextLength();
+      }
+    });
+    SVG.TextPath = SVG.invent({
+      // Initialize node
+      create: 'textPath',
+      // Inherit from
+      inherit: SVG.Parent,
+      // Define parent class
+      parent: SVG.Text,
+      // Add parent method
+      construct: {
+        morphArray: SVG.PathArray,
+        // Create path for text to run on
+        path: function path(d) {
+          // create textPath element
+          var path = new SVG.TextPath(),
+              track = this.doc().defs().path(d); // move lines to textpath
+
+          while (this.node.hasChildNodes()) {
+            path.node.appendChild(this.node.firstChild);
+          } // add textPath element as child node
+
+
+          this.node.appendChild(path.node); // link textPath to path and add content
+
+          path.attr('href', '#' + track, SVG.xlink);
+          return this;
+        },
+        // return the array of the path track element
+        array: function array() {
+          var track = this.track();
+          return track ? track.array() : null;
+        },
+        // Plot path if any
+        plot: function plot(d) {
+          var track = this.track(),
+              pathArray = null;
+
+          if (track) {
+            pathArray = track.plot(d);
+          }
+
+          return d == null ? pathArray : this;
+        },
+        // Get the path track element
+        track: function track() {
+          var path = this.textPath();
+
+          if (path) {
+            return path.reference('href');
+          }
+        },
+        // Get the textPath child
+        textPath: function textPath() {
+          if (this.node.firstChild && this.node.firstChild.nodeName == 'textPath') {
+            return SVG.adopt(this.node.firstChild);
+          }
+        }
+      }
+    });
+    SVG.Nested = SVG.invent({
+      // Initialize node
+      create: function create() {
+        this.constructor.call(this, SVG.create('svg'));
+        this.style('overflow', 'visible');
+      },
+      // Inherit from
+      inherit: SVG.Container,
+      // Add parent method
+      construct: {
+        // Create nested svg document
+        nested: function nested() {
+          return this.put(new SVG.Nested());
+        }
+      }
+    });
+    SVG.A = SVG.invent({
+      // Initialize node
+      create: 'a',
+      // Inherit from
+      inherit: SVG.Container,
+      // Add class methods
+      extend: {
+        // Link url
+        to: function to(url) {
+          return this.attr('href', url, SVG.xlink);
+        },
+        // Link show attribute
+        show: function show(target) {
+          return this.attr('show', target, SVG.xlink);
+        },
+        // Link target attribute
+        target: function target(_target2) {
+          return this.attr('target', _target2);
+        }
+      },
+      // Add parent method
+      construct: {
+        // Create a hyperlink element
+        link: function link(url) {
+          return this.put(new SVG.A()).to(url);
+        }
+      }
+    });
+    SVG.extend(SVG.Element, {
+      // Create a hyperlink element
+      linkTo: function linkTo(url) {
+        var link = new SVG.A();
+
+        if (typeof url === 'function') {
+          url.call(link, link);
+        } else {
+          link.to(url);
+        }
+
+        return this.parent().put(link).put(this);
+      }
+    });
+    SVG.Marker = SVG.invent({
+      // Initialize node
+      create: 'marker',
+      // Inherit from
+      inherit: SVG.Container,
+      // Add class methods
+      extend: {
+        // Set width of element
+        width: function width(_width6) {
+          return this.attr('markerWidth', _width6);
+        },
+        // Set height of element
+        height: function height(_height6) {
+          return this.attr('markerHeight', _height6);
+        },
+        // Set marker refX and refY
+        ref: function ref(x, y) {
+          return this.attr('refX', x).attr('refY', y);
+        },
+        // Update marker
+        update: function update(block) {
+          // remove all content
+          this.clear(); // invoke passed block
+
+          if (typeof block === 'function') {
+            block.call(this, this);
+          }
+
+          return this;
+        },
+        // Return the fill id
+        toString: function toString() {
+          return 'url(#' + this.id() + ')';
+        }
+      },
+      // Add parent method
+      construct: {
+        marker: function marker(width, height, block) {
+          // Create marker element in defs
+          return this.defs().marker(width, height, block);
+        }
+      }
+    });
+    SVG.extend(SVG.Defs, {
+      // Create marker
+      marker: function marker(width, height, block) {
+        // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto
+        return this.put(new SVG.Marker()).size(width, height).ref(width / 2, height / 2).viewbox(0, 0, width, height).attr('orient', 'auto').update(block);
+      }
+    });
+    SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, SVG.Path, {
+      // Create and attach markers
+      marker: function marker(_marker, width, height, block) {
+        var attr = ['marker']; // Build attribute name
+
+        if (_marker != 'all') attr.push(_marker);
+        attr = attr.join('-'); // Set marker attribute
+
+        _marker = arguments[1] instanceof SVG.Marker ? arguments[1] : this.doc().marker(width, height, block);
+        return this.attr(attr, _marker);
+      }
+    }); // Define list of available attributes for stroke and fill
+
+    var sugar = {
+      stroke: ['color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset'],
+      fill: ['color', 'opacity', 'rule'],
+      prefix: function prefix(t, a) {
+        return a == 'color' ? t : t + '-' + a;
+      } // Add sugar for fill and stroke
+
+    };
+    ['fill', 'stroke'].forEach(function (m) {
+      var i,
+          extension = {};
+
+      extension[m] = function (o) {
+        if (typeof o === 'undefined') {
+          return this;
+        }
+
+        if (typeof o === 'string' || SVG.Color.isRgb(o) || o && typeof o.fill === 'function') {
+          this.attr(m, o);
+        } else // set all attributes from sugar.fill and sugar.stroke list
+          {
+            for (i = sugar[m].length - 1; i >= 0; i--) {
+              if (o[sugar[m][i]] != null) {
+                this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]]);
+              }
+            }
+          }
+
+        return this;
+      };
+
+      SVG.extend(SVG.Element, SVG.FX, extension);
+    });
+    SVG.extend(SVG.Element, SVG.FX, {
+      // Map rotation to transform
+      rotate: function rotate(d, cx, cy) {
+        return this.transform({
+          rotation: d,
+          cx: cx,
+          cy: cy
+        });
+      },
+      // Map skew to transform
+      skew: function skew(x, y, cx, cy) {
+        return arguments.length == 1 || arguments.length == 3 ? this.transform({
+          skew: x,
+          cx: y,
+          cy: cx
+        }) : this.transform({
+          skewX: x,
+          skewY: y,
+          cx: cx,
+          cy: cy
+        });
+      },
+      // Map scale to transform
+      scale: function scale(x, y, cx, cy) {
+        return arguments.length == 1 || arguments.length == 3 ? this.transform({
+          scale: x,
+          cx: y,
+          cy: cx
+        }) : this.transform({
+          scaleX: x,
+          scaleY: y,
+          cx: cx,
+          cy: cy
+        });
+      },
+      // Map translate to transform
+      translate: function translate(x, y) {
+        return this.transform({
+          x: x,
+          y: y
+        });
+      },
+      // Map flip to transform
+      flip: function flip(a, o) {
+        o = typeof a === 'number' ? a : o;
+        return this.transform({
+          flip: a || 'both',
+          offset: o
+        });
+      },
+      // Map matrix to transform
+      matrix: function matrix(m) {
+        return this.attr('transform', new SVG.Matrix(arguments.length == 6 ? [].slice.call(arguments) : m));
+      },
+      // Opacity
+      opacity: function opacity(value) {
+        return this.attr('opacity', value);
+      },
+      // Relative move over x axis
+      dx: function dx(x) {
+        return this.x(new SVG.Number(x).plus(this instanceof SVG.FX ? 0 : this.x()), true);
+      },
+      // Relative move over y axis
+      dy: function dy(y) {
+        return this.y(new SVG.Number(y).plus(this instanceof SVG.FX ? 0 : this.y()), true);
+      },
+      // Relative move over x and y axes
+      dmove: function dmove(x, y) {
+        return this.dx(x).dy(y);
+      }
+    });
+    SVG.extend(SVG.Rect, SVG.Ellipse, SVG.Circle, SVG.Gradient, SVG.FX, {
+      // Add x and y radius
+      radius: function radius(x, y) {
+        var type = (this._target || this).type;
+        return type == 'radial' || type == 'circle' ? this.attr('r', new SVG.Number(x)) : this.rx(x).ry(y == null ? x : y);
+      }
+    });
+    SVG.extend(SVG.Path, {
+      // Get path length
+      length: function length() {
+        return this.node.getTotalLength();
+      },
+      // Get point at length
+      pointAt: function pointAt(length) {
+        return this.node.getPointAtLength(length);
+      }
+    });
+    SVG.extend(SVG.Parent, SVG.Text, SVG.Tspan, SVG.FX, {
+      // Set font
+      font: function font(a, v) {
+        if (_typeof(a) === 'object') {
+          for (v in a) {
+            this.font(v, a[v]);
+          }
+        }
+
+        return a == 'leading' ? this.leading(v) : a == 'anchor' ? this.attr('text-anchor', v) : a == 'size' || a == 'family' || a == 'weight' || a == 'stretch' || a == 'variant' || a == 'style' ? this.attr('font-' + a, v) : this.attr(a, v);
+      }
+    });
+    SVG.Set = SVG.invent({
+      // Initialize
+      create: function create(members) {
+        // Set initial state
+        Array.isArray(members) ? this.members = members : this.clear();
+      },
+      // Add class methods
+      extend: {
+        // Add element to set
+        add: function add() {
+          var i,
+              il,
+              elements = [].slice.call(arguments);
+
+          for (i = 0, il = elements.length; i < il; i++) {
+            this.members.push(elements[i]);
+          }
+
+          return this;
+        },
+        // Remove element from set
+        remove: function remove(element) {
+          var i = this.index(element); // remove given child
+
+          if (i > -1) {
+            this.members.splice(i, 1);
+          }
+
+          return this;
+        },
+        // Iterate over all members
+        each: function each(block) {
+          for (var i = 0, il = this.members.length; i < il; i++) {
+            block.apply(this.members[i], [i, this.members]);
+          }
+
+          return this;
+        },
+        // Restore to defaults
+        clear: function clear() {
+          // initialize store
+          this.members = [];
+          return this;
+        },
+        // Get the length of a set
+        length: function length() {
+          return this.members.length;
+        },
+        // Checks if a given element is present in set
+        has: function has(element) {
+          return this.index(element) >= 0;
+        },
+        // retuns index of given element in set
+        index: function index(element) {
+          return this.members.indexOf(element);
+        },
+        // Get member at given index
+        get: function get(i) {
+          return this.members[i];
+        },
+        // Get first member
+        first: function first() {
+          return this.get(0);
+        },
+        // Get last member
+        last: function last() {
+          return this.get(this.members.length - 1);
+        },
+        // Default value
+        valueOf: function valueOf() {
+          return this.members;
+        },
+        // Get the bounding box of all members included or empty box if set has no items
+        bbox: function bbox() {
+          // return an empty box of there are no members
+          if (this.members.length == 0) {
+            return new SVG.RBox();
+          } // get the first rbox and update the target bbox
+
+
+          var rbox = this.members[0].rbox(this.members[0].doc());
+          this.each(function () {
+            // user rbox for correct position and visual representation
+            rbox = rbox.merge(this.rbox(this.doc()));
+          });
+          return rbox;
+        }
+      },
+      // Add parent method
+      construct: {
+        // Create a new set
+        set: function set(members) {
+          return new SVG.Set(members);
+        }
+      }
+    });
+    SVG.FX.Set = SVG.invent({
+      // Initialize node
+      create: function create(set) {
+        // store reference to set
+        this.set = set;
+      }
+    }); // Alias methods
+
+    SVG.Set.inherit = function () {
+      var m,
+          methods = []; // gather shape methods
+
+      for (var m in SVG.Shape.prototype) {
+        if (typeof SVG.Shape.prototype[m] === 'function' && typeof SVG.Set.prototype[m] !== 'function') {
+          methods.push(m);
+        }
+      } // apply shape aliasses
+
+
+      methods.forEach(function (method) {
+        SVG.Set.prototype[method] = function () {
+          for (var i = 0, il = this.members.length; i < il; i++) {
+            if (this.members[i] && typeof this.members[i][method] === 'function') {
+              this.members[i][method].apply(this.members[i], arguments);
+            }
+          }
+
+          return method == 'animate' ? this.fx || (this.fx = new SVG.FX.Set(this)) : this;
+        };
+      }); // clear methods for the next round
+
+      methods = []; // gather fx methods
+
+      for (var m in SVG.FX.prototype) {
+        if (typeof SVG.FX.prototype[m] === 'function' && typeof SVG.FX.Set.prototype[m] !== 'function') {
+          methods.push(m);
+        }
+      } // apply fx aliasses
+
+
+      methods.forEach(function (method) {
+        SVG.FX.Set.prototype[method] = function () {
+          for (var i = 0, il = this.set.members.length; i < il; i++) {
+            this.set.members[i].fx[method].apply(this.set.members[i].fx, arguments);
+          }
+
+          return this;
+        };
+      });
+    };
+
+    SVG.extend(SVG.Element, {
+      // Store data values on svg nodes
+      data: function data(a, v, r) {
+        if (_typeof(a) === 'object') {
+          for (v in a) {
+            this.data(v, a[v]);
+          }
+        } else if (arguments.length < 2) {
+          try {
+            return JSON.parse(this.attr('data-' + a));
+          } catch (e) {
+            return this.attr('data-' + a);
+          }
+        } else {
+          this.attr('data-' + a, v === null ? null : r === true || typeof v === 'string' || typeof v === 'number' ? v : JSON.stringify(v));
+        }
+
+        return this;
+      }
+    });
+    SVG.extend(SVG.Element, {
+      // Remember arbitrary data
+      remember: function remember(k, v) {
+        // remember every item in an object individually
+        if (_typeof(arguments[0]) === 'object') {
+          for (var v in k) {
+            this.remember(v, k[v]);
+          }
+        } // retrieve memory
+        else if (arguments.length == 1) {
+            return this.memory()[k];
+          } // store memory
+          else {
+              this.memory()[k] = v;
+            }
+
+        return this;
+      },
+      // Erase a given memory
+      forget: function forget() {
+        if (arguments.length == 0) {
+          this._memory = {};
+        } else {
+          for (var i = arguments.length - 1; i >= 0; i--) {
+            delete this.memory()[arguments[i]];
+          }
+        }
+
+        return this;
+      },
+      // Initialize or return local memory object
+      memory: function memory() {
+        return this._memory || (this._memory = {});
+      }
+    }); // Method for getting an element by id
+
+    SVG.get = function (id) {
+      var node = document.getElementById(idFromReference(id) || id);
+      return SVG.adopt(node);
+    }; // Select elements by query string
+
+
+    SVG.select = function (query, parent) {
+      return new SVG.Set(SVG.utils.map((parent || document).querySelectorAll(query), function (node) {
+        return SVG.adopt(node);
+      }));
+    };
+
+    SVG.extend(SVG.Parent, {
+      // Scoped select method
+      select: function select(query) {
+        return SVG.select(query, this.node);
+      }
+    });
+
+    function pathRegReplace(a, b, c, d) {
+      return c + d.replace(SVG.regex.dots, ' .');
+    } // creates deep clone of array
+
+
+    function array_clone(arr) {
+      var clone = arr.slice(0);
+
+      for (var i = clone.length; i--;) {
+        if (Array.isArray(clone[i])) {
+          clone[i] = array_clone(clone[i]);
+        }
+      }
+
+      return clone;
+    } // tests if a given element is instance of an object
+
+
+    function _is(el, obj) {
+      return el instanceof obj;
+    } // tests if a given selector matches an element
+
+
+    function _matches(el, selector) {
+      return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector);
+    } // Convert dash-separated-string to camelCase
+
+
+    function camelCase(s) {
+      return s.toLowerCase().replace(/-(.)/g, function (m, g) {
+        return g.toUpperCase();
+      });
+    } // Capitalize first letter of a string
+
+
+    function capitalize(s) {
+      return s.charAt(0).toUpperCase() + s.slice(1);
+    } // Ensure to six-based hex
+
+
+    function fullHex(hex) {
+      return hex.length == 4 ? ['#', hex.substring(1, 2), hex.substring(1, 2), hex.substring(2, 3), hex.substring(2, 3), hex.substring(3, 4), hex.substring(3, 4)].join('') : hex;
+    } // Component to hex value
+
+
+    function compToHex(comp) {
+      var hex = comp.toString(16);
+      return hex.length == 1 ? '0' + hex : hex;
+    } // Calculate proportional width and height values when necessary
+
+
+    function proportionalSize(element, width, height) {
+      if (width == null || height == null) {
+        var box = element.bbox();
+
+        if (width == null) {
+          width = box.width / box.height * height;
+        } else if (height == null) {
+          height = box.height / box.width * width;
+        }
+      }
+
+      return {
+        width: width,
+        height: height
+      };
+    } // Delta transform point
+
+
+    function deltaTransformPoint(matrix, x, y) {
+      return {
+        x: x * matrix.a + y * matrix.c + 0,
+        y: x * matrix.b + y * matrix.d + 0
+      };
+    } // Map matrix array to object
+
+
+    function arrayToMatrix(a) {
+      return {
+        a: a[0],
+        b: a[1],
+        c: a[2],
+        d: a[3],
+        e: a[4],
+        f: a[5]
+      };
+    } // Parse matrix if required
+
+
+    function parseMatrix(matrix) {
+      if (!(matrix instanceof SVG.Matrix)) {
+        matrix = new SVG.Matrix(matrix);
+      }
+
+      return matrix;
+    } // Add centre point to transform object
+
+
+    function ensureCentre(o, target) {
+      o.cx = o.cx == null ? target.bbox().cx : o.cx;
+      o.cy = o.cy == null ? target.bbox().cy : o.cy;
+    } // PathArray Helpers
+
+
+    function arrayToString(a) {
+      for (var i = 0, il = a.length, s = ''; i < il; i++) {
+        s += a[i][0];
+
+        if (a[i][1] != null) {
+          s += a[i][1];
+
+          if (a[i][2] != null) {
+            s += ' ';
+            s += a[i][2];
+
+            if (a[i][3] != null) {
+              s += ' ';
+              s += a[i][3];
+              s += ' ';
+              s += a[i][4];
+
+              if (a[i][5] != null) {
+                s += ' ';
+                s += a[i][5];
+                s += ' ';
+                s += a[i][6];
+
+                if (a[i][7] != null) {
+                  s += ' ';
+                  s += a[i][7];
+                }
+              }
+            }
+          }
+        }
+      }
+
+      return s + ' ';
+    } // Deep new id assignment
+
+
+    function assignNewId(node) {
+      // do the same for SVG child nodes as well
+      for (var i = node.childNodes.length - 1; i >= 0; i--) {
+        if (node.childNodes[i] instanceof window.SVGElement) {
+          assignNewId(node.childNodes[i]);
+        }
+      }
+
+      return SVG.adopt(node).id(SVG.eid(node.nodeName));
+    } // Add more bounding box properties
+
+
+    function fullBox(b) {
+      if (b.x == null) {
+        b.x = 0;
+        b.y = 0;
+        b.width = 0;
+        b.height = 0;
+      }
+
+      b.w = b.width;
+      b.h = b.height;
+      b.x2 = b.x + b.width;
+      b.y2 = b.y + b.height;
+      b.cx = b.x + b.width / 2;
+      b.cy = b.y + b.height / 2;
+      return b;
+    } // Get id from reference string
+
+
+    function idFromReference(url) {
+      var m = (url || '').toString().match(SVG.regex.reference);
+      if (m) return m[1];
+    } // If values like 1e-88 are passed, this is not a valid 32 bit float,
+    // but in those cases, we are so close to 0 that 0 works well!
+
+
+    function float32String(v) {
+      return Math.abs(v) > 1e-37 ? v : 0;
+    } // Create matrix array for looping
+
+
+    var abcdef = 'abcdef'.split(''); // Add CustomEvent to IE9 and IE10
+
+    if (typeof window.CustomEvent !== 'function') {
+      // Code from: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent
+      var CustomEventPoly = function CustomEventPoly(event, options) {
+        options = options || {
+          bubbles: false,
+          cancelable: false,
+          detail: undefined
+        };
+        var e = document.createEvent('CustomEvent');
+        e.initCustomEvent(event, options.bubbles, options.cancelable, options.detail);
+        return e;
+      };
+
+      CustomEventPoly.prototype = window.Event.prototype;
+      SVG.CustomEvent = CustomEventPoly;
+    } else {
+      SVG.CustomEvent = window.CustomEvent;
+    } // requestAnimationFrame / cancelAnimationFrame Polyfill with fallback based on Paul Irish
+
+
+    (function (w) {
+      var lastTime = 0;
+      var vendors = ['moz', 'webkit'];
+
+      for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+        w.requestAnimationFrame = w[vendors[x] + 'RequestAnimationFrame'];
+        w.cancelAnimationFrame = w[vendors[x] + 'CancelAnimationFrame'] || w[vendors[x] + 'CancelRequestAnimationFrame'];
+      }
+
+      w.requestAnimationFrame = w.requestAnimationFrame || function (callback) {
+        var currTime = new Date().getTime();
+        var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+        var id = w.setTimeout(function () {
+          callback(currTime + timeToCall);
+        }, timeToCall);
+        lastTime = currTime + timeToCall;
+        return id;
+      };
+
+      w.cancelAnimationFrame = w.cancelAnimationFrame || w.clearTimeout;
+    })(window);
+
+    return SVG;
+  });
+
+  /*! svg.filter.js - v2.0.2 - 2016-02-24
+  * https://github.com/wout/svg.filter.js
+  * Copyright (c) 2016 Wout Fierens; Licensed MIT */
+  (function() {
+
+    // Main filter class
+    SVG.Filter = SVG.invent({
+      create: 'filter',
+      inherit: SVG.Parent,
+      extend: {
+        // Static strings
+        source:           'SourceGraphic',
+        sourceAlpha:      'SourceAlpha',
+        background:       'BackgroundImage',
+        backgroundAlpha:  'BackgroundAlpha',
+        fill:             'FillPaint',
+        stroke:           'StrokePaint',
+
+        autoSetIn: true,
+        // Custom put method for leaner code
+        put: function(element, i) {
+          this.add(element, i);
+
+          if(!element.attr('in') && this.autoSetIn){
+            element.attr('in',this.source);
+          }
+          if(!element.attr('result')){
+            element.attr('result',element);
+          }
+
+          return element
+        },
+        // Blend effect
+        blend: function(in1, in2, mode) {
+          return this.put(new SVG.BlendEffect(in1, in2, mode))
+        },
+        // ColorMatrix effect
+        colorMatrix: function(type, values) {
+          return this.put(new SVG.ColorMatrixEffect(type, values))
+        },
+        // ConvolveMatrix effect
+        convolveMatrix: function(matrix) {
+          return this.put(new SVG.ConvolveMatrixEffect(matrix))
+        },
+        // ComponentTransfer effect
+        componentTransfer: function(components) {
+          return this.put(new SVG.ComponentTransferEffect(components))
+        },
+        // Composite effect
+        composite: function(in1, in2, operator) {
+          return this.put(new SVG.CompositeEffect(in1, in2, operator))
+        },
+        // Flood effect
+        flood: function(color, opacity) {
+          return this.put(new SVG.FloodEffect(color, opacity))
+        },
+        // Offset effect
+        offset: function(x, y) {
+          return this.put(new SVG.OffsetEffect(x,y))
+        },
+        // Image effect
+        image: function(src) {
+          return this.put(new SVG.ImageEffect(src))
+        },
+        // Merge effect
+        merge: function() {
+          //pass the array of arguments to the constructor because we dont know if the user gave us an array as the first arguemnt or wether they listed the effects in the arguments
+          var args = [undefined];
+          for(var i in arguments) args.push(arguments[i]);
+          return this.put(new (SVG.MergeEffect.bind.apply(SVG.MergeEffect,args)))
+        },
+        // Gaussian Blur effect
+        gaussianBlur: function(x,y) {
+          return this.put(new SVG.GaussianBlurEffect(x,y))
+        },
+        // Morphology effect
+        morphology: function(operator,radius){
+          return this.put(new SVG.MorphologyEffect(operator,radius))
+        },
+        // DiffuseLighting effect
+        diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){
+          return this.put(new SVG.DiffuseLightingEffect(surfaceScale,diffuseConstant,kernelUnitLength))
+        },
+        // DisplacementMap effect
+        displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){
+          return this.put(new SVG.DisplacementMapEffect(in1,in2,scale,xChannelSelector,yChannelSelector))
+        },
+        // SpecularLighting effect
+        specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){
+          return this.put(new SVG.SpecularLightingEffect(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength))
+        },
+        // Tile effect
+        tile: function(){
+          return this.put(new SVG.TileEffect());
+        },
+        // Turbulence effect
+        turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){
+          return this.put(new SVG.TurbulenceEffect(baseFrequency,numOctaves,seed,stitchTiles,type))
+        },
+        // Default string value
+        toString: function() {
+          return 'url(#' + this.attr('id') + ')'
+        }
+      }
+    });
+
+    //add .filter function
+    SVG.extend(SVG.Defs, {
+      // Define filter
+      filter: function(block) {
+        var filter = this.put(new SVG.Filter);
+
+        /* invoke passed block */
+        if (typeof block === 'function')
+          block.call(filter, filter);
+
+        return filter
+      }
+    });
+    SVG.extend(SVG.Container, {
+      // Define filter on defs
+      filter: function(block) {
+        return this.defs().filter(block)
+      }
+    });
+    SVG.extend(SVG.Element, SVG.G, SVG.Nested, {
+      // Create filter element in defs and store reference
+      filter: function(block) {
+        this.filterer = block instanceof SVG.Element ?
+          block : this.doc().filter(block);
+
+        if(this.doc() && this.filterer.doc() !== this.doc()){
+          this.doc().defs().add(this.filterer);
+        }
+
+        this.attr('filter', this.filterer);
+
+        return this.filterer
+      },
+      // Remove filter
+      unfilter: function(remove) {
+        /* also remove the filter node */
+        if (this.filterer && remove === true)
+          this.filterer.remove();
+
+        /* delete reference to filterer */
+        delete this.filterer;
+
+        /* remove filter attribute */
+        return this.attr('filter', null)
+      }
+    });
+
+    // Create SVG.Effect class
+    SVG.Effect = SVG.invent({
+      create: function(){
+        this.constructor.call(this);
+      },
+      inherit: SVG.Element,
+      extend: {
+        // Set in attribute
+        in: function(effect) {
+          return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in')+'"]').get(0) || this.attr('in') : this.attr('in', effect)
+        },
+        // Named result
+        result: function(result) {
+          return result == null? this.attr('result') : this.attr('result',result)
+        },
+        // Stringification
+        toString: function() {
+          return this.result()
+        }
+      }
+    });
+
+    // create class for parent effects like merge
+    // Inherit from SVG.Parent
+    SVG.ParentEffect = SVG.invent({
+      create: function(){
+        this.constructor.call(this);
+      },
+      inherit: SVG.Parent,
+      extend: {
+        // Set in attribute
+        in: function(effect) {
+          return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in')+'"]').get(0) || this.attr('in') : this.attr('in', effect)
+        },
+        // Named result
+        result: function(result) {
+          return result == null? this.attr('result') : this.attr('result',result)
+        },
+        // Stringification
+        toString: function() {
+          return this.result()
+        }
+      }
+    });
+
+    //chaining
+    var chainingEffects = {
+      // Blend effect
+      blend: function(in2, mode) {
+        return this.parent() && this.parent().blend(this, in2, mode) //pass this as the first input
+      },
+      // ColorMatrix effect
+      colorMatrix: function(type, values) {
+        return this.parent() && this.parent().colorMatrix(type, values).in(this)
+      },
+      // ConvolveMatrix effect
+      convolveMatrix: function(matrix) {
+        return this.parent() && this.parent().convolveMatrix(matrix).in(this)
+      },
+      // ComponentTransfer effect
+      componentTransfer: function(components) {
+        return this.parent() && this.parent().componentTransfer(components).in(this)
+      },
+      // Composite effect
+      composite: function(in2, operator) {
+        return this.parent() && this.parent().composite(this, in2, operator) //pass this as the first input
+      },
+      // Flood effect
+      flood: function(color, opacity) {
+        return this.parent() && this.parent().flood(color, opacity) //this effect dont have inputs
+      },
+      // Offset effect
+      offset: function(x, y) {
+        return this.parent() && this.parent().offset(x,y).in(this)
+      },
+      // Image effect
+      image: function(src) {
+        return this.parent() && this.parent().image(src) //this effect dont have inputs
+      },
+      // Merge effect
+      merge: function() {
+        return this.parent() && this.parent().merge.apply(this.parent(),[this].concat(arguments)) //pass this as the first argument
+      },
+      // Gaussian Blur effect
+      gaussianBlur: function(x,y) {
+        return this.parent() && this.parent().gaussianBlur(x,y).in(this)
+      },
+      // Morphology effect
+      morphology: function(operator,radius){
+        return this.parent() && this.parent().morphology(operator,radius).in(this)
+      },
+      // DiffuseLighting effect
+      diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){
+        return this.parent() && this.parent().diffuseLighting(surfaceScale,diffuseConstant,kernelUnitLength).in(this)
+      },
+      // DisplacementMap effect
+      displacementMap: function(in2,scale,xChannelSelector,yChannelSelector){
+        return this.parent() && this.parent().displacementMap(this,in2,scale,xChannelSelector,yChannelSelector) //pass this as the first input
+      },
+      // SpecularLighting effect
+      specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){
+        return this.parent() && this.parent().specularLighting(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength).in(this)
+      },
+      // Tile effect
+      tile: function(){
+        return this.parent() && this.parent().tile().in(this)
+      },
+      // Turbulence effect
+      turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){
+        return this.parent() && this.parent().turbulence(baseFrequency,numOctaves,seed,stitchTiles,type).in(this)
+      }
+    };
+    SVG.extend(SVG.Effect,chainingEffects);
+    SVG.extend(SVG.ParentEffect,chainingEffects);
+
+    //crea class for child effects, like MergeNode, FuncR and lights
+    SVG.ChildEffect = SVG.invent({
+      create: function(){
+        this.constructor.call(this);
+      },
+      inherit: SVG.Element,
+      extend: {
+      in: function(effect){
+        this.attr('in',effect);
+      }
+      //dont include any "result" functions because these types of nodes dont have them
+      }
+    });
+
+    // Create all different effects
+    var effects = {
+      blend: function(in1,in2,mode){
+        this.attr({
+          in: in1,
+          in2: in2,
+          mode: mode || 'normal'
+        });
+      },
+      colorMatrix: function(type,values){
+        if (type == 'matrix')
+          values = normaliseMatrix(values);
+
+        this.attr({
+          type:   type
+        , values: typeof values == 'undefined' ? null : values
+        });
+      },
+      convolveMatrix: function(matrix){
+        matrix = normaliseMatrix(matrix);
+
+        this.attr({
+          order:        Math.sqrt(matrix.split(' ').length)
+        , kernelMatrix: matrix
+        });
+      },
+      composite: function(in1, in2, operator){
+        this.attr({
+          in: in1,
+          in2: in2,
+          operator: operator
+        });
+      },
+      flood: function(color,opacity){
+        this.attr('flood-color',color);
+        if(opacity != null) this.attr('flood-opacity',opacity);
+      },
+      offset: function(x,y){
+        this.attr({
+          dx: x,
+          dy: y
+        });
+      },
+      image: function(src){
+        this.attr('href', src, SVG.xlink);
+      },
+      displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){
+        this.attr({
+          in: in1,
+          in2: in2,
+          scale: scale,
+          xChannelSelector: xChannelSelector,
+          yChannelSelector: yChannelSelector
+        });
+      },
+      gaussianBlur: function(x,y){
+        if(x != null || y != null)
+          this.attr('stdDeviation', listString(Array.prototype.slice.call(arguments)));
+        else
+          this.attr('stdDeviation', '0 0');
+      },
+      morphology: function(operator,radius){
+        this.attr({
+          operator: operator,
+          radius: radius
+        });
+      },
+      tile: function(){
+
+      },
+      turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){
+        this.attr({
+          numOctaves: numOctaves,
+          seed: seed,
+          stitchTiles: stitchTiles,
+          baseFrequency: baseFrequency,
+          type: type
+        });
+      }
+    };
+
+    // Create all parent effects
+    var parentEffects = {
+      merge: function(){
+        var children;
+
+        //test to see if we have a set
+        if(arguments[0] instanceof SVG.Set){
+          var that = this;
+          arguments[0].each(function(i){
+            if(this instanceof SVG.MergeNode)
+              that.put(this);
+            else if(this instanceof SVG.Effect || this instanceof SVG.ParentEffect)
+              that.put(new SVG.MergeNode(this));
+          });
+        }
+        else{
+          //if the first argument is an array use it
+          if(Array.isArray(arguments[0]))
+            children = arguments[0];
+          else
+            children = arguments;
+
+          for(var i = 0; i < children.length; i++){
+            if(children[i] instanceof SVG.MergeNode){
+              this.put(children[i]);
+            }
+            else this.put(new SVG.MergeNode(children[i]));
+          }
+        }
+      },
+      componentTransfer: function(compontents){
+        /* create rgb set */
+        this.rgb = new SVG.Set
+
+        /* create components */
+        ;(['r', 'g', 'b', 'a']).forEach(function(c) {
+          /* create component */
+          this[c] = new SVG['Func' + c.toUpperCase()]('identity');
+
+          /* store component in set */
+          this.rgb.add(this[c]);
+
+          /* add component node */
+          this.node.appendChild(this[c].node);
+        }.bind(this)); //lost context in foreach
+
+        /* set components */
+        if (compontents) {
+          if (compontents.rgb) {
+  (['r', 'g', 'b']).forEach(function(c) {
+              this[c].attr(compontents.rgb);
+            }.bind(this));
+
+            delete compontents.rgb;
+          }
+
+          /* set individual components */
+          for (var c in compontents)
+            this[c].attr(compontents[c]);
+        }
+      },
+      diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){
+        this.attr({
+          surfaceScale: surfaceScale,
+          diffuseConstant: diffuseConstant,
+          kernelUnitLength: kernelUnitLength
+        });
+      },
+      specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){
+        this.attr({
+          surfaceScale: surfaceScale,
+          diffuseConstant: diffuseConstant,
+          specularExponent: specularExponent,
+          kernelUnitLength: kernelUnitLength
+        });
+      },
+    };
+
+    // Create child effects like PointLight and MergeNode
+    var childEffects = {
+      distantLight: function(azimuth, elevation){
+        this.attr({
+          azimuth: azimuth,
+          elevation: elevation
+        });
+      },
+      pointLight: function(x,y,z){
+        this.attr({
+          x: x,
+          y: y,
+          z: z
+        });
+      },
+      spotLight: function(x,y,z,pointsAtX,pointsAtY,pointsAtZ){
+        this.attr({
+          x: x,
+          y: y,
+          z: z,
+          pointsAtX: pointsAtX,
+          pointsAtY: pointsAtY,
+          pointsAtZ: pointsAtZ
+        });
+      },
+      mergeNode: function(in1){
+        this.attr('in',in1);
+      }
+    }
+
+    // Create compontent functions
+    ;(['r', 'g', 'b', 'a']).forEach(function(c) {
+      /* create class */
+      childEffects['Func' + c.toUpperCase()] = function(type) {
+        this.attr('type',type);
+
+        // take diffent arguments based on the type
+        switch(type){
+          case 'table':
+            this.attr('tableValues',arguments[1]);
+            break
+          case 'linear':
+            this.attr('slope',arguments[1]);
+            this.attr('intercept',arguments[2]);
+            break
+          case 'gamma':
+            this.attr('amplitude',arguments[1]);
+            this.attr('exponent',arguments[2]);
+            this.attr('offset',arguments[2]);
+            break
+        }
+      };
+    });
+
+    //create effects
+    foreach(effects,function(effect,i){
+
+      /* capitalize name */
+      var name = i.charAt(0).toUpperCase() + i.slice(1);
+      var proto = {};
+
+      /* create class */
+      SVG[name + 'Effect'] = SVG.invent({
+        create: function() {
+          //call super
+          this.constructor.call(this, SVG.create('fe' + name));
+
+          //call constructor for this effect
+          effect.apply(this,arguments);
+
+          //set the result
+          this.result(this.attr('id') + 'Out');
+        },
+        inherit: SVG.Effect,
+        extend: proto
+      });
+    });
+
+    //create parent effects
+    foreach(parentEffects,function(effect,i){
+
+      /* capitalize name */
+      var name = i.charAt(0).toUpperCase() + i.slice(1);
+      var proto = {};
+
+      /* create class */
+      SVG[name + 'Effect'] = SVG.invent({
+        create: function() {
+          //call super
+          this.constructor.call(this, SVG.create('fe' + name));
+
+          //call constructor for this effect
+          effect.apply(this,arguments);
+
+          //set the result
+          this.result(this.attr('id') + 'Out');
+        },
+        inherit: SVG.ParentEffect,
+        extend: proto
+      });
+    });
+
+    //create child effects
+    foreach(childEffects,function(effect,i){
+
+      /* capitalize name */
+      var name = i.charAt(0).toUpperCase() + i.slice(1);
+      var proto = {};
+
+      /* create class */
+      SVG[name] = SVG.invent({
+        create: function() {
+          //call super
+          this.constructor.call(this, SVG.create('fe' + name));
+
+          //call constructor for this effect
+          effect.apply(this,arguments);
+        },
+        inherit: SVG.ChildEffect,
+        extend: proto
+      });
+    });
+
+    // Effect-specific extensions
+    SVG.extend(SVG.MergeEffect,{
+      in: function(effect){
+        if(effect instanceof SVG.MergeNode)
+          this.add(effect,0);
+        else
+          this.add(new SVG.MergeNode(effect),0);
+
+        return this
+      }
+    });
+    SVG.extend(SVG.CompositeEffect,SVG.BlendEffect,SVG.DisplacementMapEffect,{
+      in2: function(effect){
+          return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in2')+'"]').get(0) || this.attr('in2') : this.attr('in2', effect)
+      }
+    });
+
+    // Presets
+    SVG.filter = {
+      sepiatone:  [ .343, .669, .119, 0, 0
+                  , .249, .626, .130, 0, 0
+                  , .172, .334, .111, 0, 0
+                  , .000, .000, .000, 1, 0 ]
+    };
+
+    // Helpers
+    function normaliseMatrix(matrix) {
+      /* convert possible array value to string */
+      if (Array.isArray(matrix))
+        matrix = new SVG.Array(matrix);
+
+      /* ensure there are no leading, tailing or double spaces */
+      return matrix.toString().replace(/^\s+/, '').replace(/\s+$/, '').replace(/\s+/g, ' ')
+    }
+
+    function listString(list) {
+      if (!Array.isArray(list))
+        return list
+
+      for (var i = 0, l = list.length, s = []; i < l; i++)
+        s.push(list[i]);
+
+      return s.join(' ')
+    }
+
+    function foreach(){ //loops through mutiple objects
+      var fn = function(){};
+      if(typeof arguments[arguments.length-1] == 'function'){
+        fn = arguments[arguments.length-1];
+        Array.prototype.splice.call(arguments,arguments.length-1,1);
+      }
+      for(var k in arguments){
+        for(var i in arguments[k]){
+          fn(arguments[k][i],i,arguments[k]);
+        }
+      }
+    }
+
+  }).call(undefined);
+
+  (function() {
+
+  SVG.extend(SVG.PathArray, {
+    morph: function(array) {
+
+      var startArr = this.value
+        ,  destArr = this.parse(array);
+
+      var startOffsetM = 0
+        ,  destOffsetM = 0;
+
+      var startOffsetNextM = false
+        ,  destOffsetNextM = false;
+
+      while(true){
+        // stop if there is no M anymore
+        if(startOffsetM === false && destOffsetM === false) break
+
+        // find the next M in path array
+        startOffsetNextM = findNextM(startArr, startOffsetM === false ? false : startOffsetM+1);
+         destOffsetNextM = findNextM( destArr,  destOffsetM === false ? false :  destOffsetM+1);
+
+        // We have to add one M to the startArray
+        if(startOffsetM === false){
+          var bbox = new SVG.PathArray(result.start).bbox();
+
+          // when the last block had no bounding box we simply take the first M we got
+          if(bbox.height == 0 || bbox.width == 0){
+            startOffsetM =  startArr.push(startArr[0]) - 1;
+          }else{
+            // we take the middle of the bbox instead when we got one
+            startOffsetM = startArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1;
+          }
+        }
+
+        // We have to add one M to the destArray
+        if( destOffsetM === false){
+          var bbox = new SVG.PathArray(result.dest).bbox();
+
+          if(bbox.height == 0 || bbox.width == 0){
+            destOffsetM =  destArr.push(destArr[0]) - 1;
+          }else{
+            destOffsetM =  destArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1;
+          }
+        }
+
+        // handle block from M to next M
+        var result = handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM);
+
+        // update the arrays to their new values
+        startArr = startArr.slice(0, startOffsetM).concat(result.start, startOffsetNextM === false ? [] : startArr.slice(startOffsetNextM));
+         destArr =  destArr.slice(0,  destOffsetM).concat(result.dest ,  destOffsetNextM === false ? [] :  destArr.slice( destOffsetNextM));
+
+        // update offsets
+        startOffsetM = startOffsetNextM === false ? false : startOffsetM + result.start.length;
+         destOffsetM =  destOffsetNextM === false ? false :  destOffsetM + result.dest.length;
+
+      }
+
+      // copy back arrays
+      this.value = startArr;
+      this.destination = new SVG.PathArray();
+      this.destination.value = destArr;
+
+      return this
+    }
+  });
+
+
+
+  // sorry for the long declaration
+  // slices out one block (from M to M) and syncronize it so the types and length match
+  function handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM, undefined){
+
+    // slice out the block we need
+    var startArrTemp = startArr.slice(startOffsetM, startOffsetNextM || undefined)
+      ,  destArrTemp =  destArr.slice( destOffsetM,  destOffsetNextM || undefined);
+
+    var i = 0
+      , posStart = {pos:[0,0], start:[0,0]}
+      , posDest  = {pos:[0,0], start:[0,0]};
+
+    do{
+
+      // convert shorthand types to long form
+      startArrTemp[i] = simplyfy.call(posStart, startArrTemp[i]);
+       destArrTemp[i] = simplyfy.call(posDest ,  destArrTemp[i]);
+
+      // check if both shape types match
+      // 2 elliptical arc curve commands ('A'), are considered different if the
+      // flags (large-arc-flag, sweep-flag) don't match
+      if(startArrTemp[i][0] != destArrTemp[i][0] || startArrTemp[i][0] == 'M' ||
+          (startArrTemp[i][0] == 'A' &&
+            (startArrTemp[i][4] != destArrTemp[i][4] || startArrTemp[i][5] != destArrTemp[i][5])
+          )
+        ) {
+
+        // if not, convert shapes to beziere
+        Array.prototype.splice.apply(startArrTemp, [i, 1].concat(toBeziere.call(posStart, startArrTemp[i])));
+         Array.prototype.splice.apply(destArrTemp, [i, 1].concat(toBeziere.call(posDest, destArrTemp[i])));
+
+      } else {
+
+        // only update positions otherwise
+        startArrTemp[i] = setPosAndReflection.call(posStart, startArrTemp[i]);
+         destArrTemp[i] = setPosAndReflection.call(posDest ,  destArrTemp[i]);
+
+      }
+
+      // we are at the end at both arrays. stop here
+      if(++i == startArrTemp.length && i == destArrTemp.length) break
+
+      // destArray is longer. Add one element
+      if(i == startArrTemp.length){
+        startArrTemp.push([
+          'C',
+          posStart.pos[0],
+          posStart.pos[1],
+          posStart.pos[0],
+          posStart.pos[1],
+          posStart.pos[0],
+          posStart.pos[1],
+        ]);
+      }
+
+      // startArr is longer. Add one element
+      if(i == destArrTemp.length){
+        destArrTemp.push([
+          'C',
+          posDest.pos[0],
+          posDest.pos[1],
+          posDest.pos[0],
+          posDest.pos[1],
+          posDest.pos[0],
+          posDest.pos[1]
+        ]);
+      }
+
+
+    }while(true)
+
+    // return the updated block
+    return {start:startArrTemp, dest:destArrTemp}
+  }
+
+  // converts shorthand types to long form
+  function simplyfy(val){
+
+    switch(val[0]){
+      case 'z': // shorthand line to start
+      case 'Z':
+        val[0] = 'L';
+        val[1] = this.start[0];
+        val[2] = this.start[1];
+        break
+      case 'H': // shorthand horizontal line
+        val[0] = 'L';
+        val[2] = this.pos[1];
+        break
+      case 'V': // shorthand vertical line
+        val[0] = 'L';
+        val[2] = val[1];
+        val[1] = this.pos[0];
+        break
+      case 'T': // shorthand quadratic beziere
+        val[0] = 'Q';
+        val[3] = val[1];
+        val[4] = val[2];
+        val[1] = this.reflection[1];
+        val[2] = this.reflection[0];
+        break
+      case 'S': // shorthand cubic beziere
+        val[0] = 'C';
+        val[6] = val[4];
+        val[5] = val[3];
+        val[4] = val[2];
+        val[3] = val[1];
+        val[2] = this.reflection[1];
+        val[1] = this.reflection[0];
+        break
+    }
+
+    return val
+
+  }
+
+  // updates reflection point and current position
+  function setPosAndReflection(val){
+
+    var len = val.length;
+
+    this.pos = [ val[len-2], val[len-1] ];
+
+    if('SCQT'.indexOf(val[0]) != -1)
+      this.reflection = [ 2 * this.pos[0] - val[len-4], 2 * this.pos[1] - val[len-3] ];
+
+    return val
+  }
+
+  // converts all types to cubic beziere
+  function toBeziere(val){
+    var retVal = [val];
+
+    switch(val[0]){
+      case 'M': // special handling for M
+        this.pos = this.start = [val[1], val[2]];
+        return retVal
+      case 'L':
+        val[5] = val[3] = val[1];
+        val[6] = val[4] = val[2];
+        val[1] = this.pos[0];
+        val[2] = this.pos[1];
+        break
+      case 'Q':
+        val[6] = val[4];
+        val[5] = val[3];
+        val[4] = val[4] * 1/3 + val[2] * 2/3;
+        val[3] = val[3] * 1/3 + val[1] * 2/3;
+        val[2] = this.pos[1] * 1/3 + val[2] * 2/3;
+        val[1] = this.pos[0] * 1/3 + val[1] * 2/3;
+        break
+      case 'A':
+        retVal = arcToBeziere(this.pos, val);
+        val = retVal[0];
+        break
+    }
+
+    val[0] = 'C';
+    this.pos = [val[5], val[6]];
+    this.reflection = [2 * val[5] - val[3], 2 * val[6] - val[4]];
+
+    return retVal
+
+  }
+
+  // finds the next position of type M
+  function findNextM(arr, offset){
+
+    if(offset === false) return false
+
+    for(var i = offset, len = arr.length;i < len;++i){
+
+      if(arr[i][0] == 'M') return i
+
+    }
+
+    return false
+  }
+
+
+
+  // Convert an arc segment into equivalent cubic Bezier curves
+  // Depending on the arc, up to 4 curves might be used to represent it since a
+  // curve gives a good approximation for only a quarter of an ellipse
+  // The curves are returned as an array of SVG curve commands:
+  // [ ['C', x1, y1, x2, y2, x, y] ... ]
+  function arcToBeziere(pos, val) {
+      // Parameters extraction, handle out-of-range parameters as specified in the SVG spec
+      // See: https://www.w3.org/TR/SVG11/implnote.html#ArcOutOfRangeParameters
+      var rx = Math.abs(val[1]), ry = Math.abs(val[2]), xAxisRotation = val[3] % 360
+        , largeArcFlag = val[4], sweepFlag = val[5], x = val[6], y = val[7]
+        , A = new SVG.Point(pos), B = new SVG.Point(x, y)
+        , primedCoord, lambda, mat, k, c, cSquare, t, O, OA, OB, tetaStart, tetaEnd
+        , deltaTeta, nbSectors, f, arcSegPoints, angle, sinAngle, cosAngle, pt, i, il
+        , retVal = [], x1, y1, x2, y2;
+
+      // Ensure radii are non-zero
+      if(rx === 0 || ry === 0 || (A.x === B.x && A.y === B.y)) {
+        // treat this arc as a straight line segment
+        return [['C', A.x, A.y, B.x, B.y, B.x, B.y]]
+      }
+
+      // Ensure radii are large enough using the algorithm provided in the SVG spec
+      // See: https://www.w3.org/TR/SVG11/implnote.html#ArcCorrectionOutOfRangeRadii
+      primedCoord = new SVG.Point((A.x-B.x)/2, (A.y-B.y)/2).transform(new SVG.Matrix().rotate(xAxisRotation));
+      lambda = (primedCoord.x * primedCoord.x) / (rx * rx) + (primedCoord.y * primedCoord.y) / (ry * ry);
+      if(lambda > 1) {
+        lambda = Math.sqrt(lambda);
+        rx = lambda*rx;
+        ry = lambda*ry;
+      }
+
+      // To simplify calculations, we make the arc part of a unit circle (rayon is 1) instead of an ellipse
+      mat = new SVG.Matrix().rotate(xAxisRotation).scale(1/rx, 1/ry).rotate(-xAxisRotation);
+      A = A.transform(mat);
+      B = B.transform(mat);
+
+      // Calculate the horizontal and vertical distance between the initial and final point of the arc
+      k = [B.x-A.x, B.y-A.y];
+
+      // Find the length of the chord formed by A and B
+      cSquare = k[0]*k[0] + k[1]*k[1];
+      c = Math.sqrt(cSquare);
+
+      // Calculate the ratios of the horizontal and vertical distance on the length of the chord
+      k[0] /= c;
+      k[1] /= c;
+
+      // Calculate the distance between the circle center and the chord midpoint
+      // using this formula: t = sqrt(r^2 - c^2 / 4)
+      // where t is the distance between the cirle center and the chord midpoint,
+      //       r is the rayon of the circle and c is the chord length
+      // From: http://www.ajdesigner.com/phpcircle/circle_segment_chord_t.php
+      // Because of the imprecision of floating point numbers, cSquare might end
+      // up being slightly above 4 which would result in a negative radicand
+      // To prevent that, a test is made before computing the square root
+      t = (cSquare < 4) ? Math.sqrt(1 - cSquare/4) : 0;
+
+      // For most situations, there are actually two different ellipses that
+      // satisfy the constraints imposed by the points A and B, the radii rx and ry,
+      // and the xAxisRotation
+      // When the flags largeArcFlag and sweepFlag are equal, it means that the
+      // second ellipse is used as a solution
+      // See: https://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands
+      if(largeArcFlag === sweepFlag) {
+          t *= -1;
+      }
+
+      // Calculate the coordinates of the center of the circle from the midpoint of the chord
+      // This is done by multiplying the ratios calculated previously by the distance between
+      // the circle center and the chord midpoint and using these values to go from the midpoint
+      // to the center of the circle
+      // The negative of the vertical distance ratio is used to modify the x coordinate while
+      // the horizontal distance ratio is used to modify the y coordinate
+      // That is because the center of the circle is perpendicular to the chord and perpendicular
+      // lines are negative reciprocals
+      O = new SVG.Point((B.x+A.x)/2 + t*-k[1], (B.y+A.y)/2 + t*k[0]);
+      // Move the center of the circle at the origin
+      OA = new SVG.Point(A.x-O.x, A.y-O.y);
+      OB = new SVG.Point(B.x-O.x, B.y-O.y);
+
+      // Calculate the start and end angle
+      tetaStart = Math.acos(OA.x/Math.sqrt(OA.x*OA.x + OA.y*OA.y));
+      if (OA.y < 0) {
+        tetaStart *= -1;
+      }
+      tetaEnd = Math.acos(OB.x/Math.sqrt(OB.x*OB.x + OB.y*OB.y));
+      if (OB.y < 0) {
+        tetaEnd *= -1;
+      }
+
+      // If sweep-flag is '1', then the arc will be drawn in a "positive-angle" direction,
+      // make sure that the end angle is above the start angle
+      if (sweepFlag && tetaStart > tetaEnd) {
+        tetaEnd += 2*Math.PI;
+      }
+      // If sweep-flag is '0', then the arc will be drawn in a "negative-angle" direction,
+      // make sure that the end angle is below the start angle
+      if (!sweepFlag && tetaStart < tetaEnd) {
+        tetaEnd -= 2*Math.PI;
+      }
+
+      // Find the number of Bezier curves that are required to represent the arc
+      // A cubic Bezier curve gives a good enough approximation when representing at most a quarter of a circle
+      nbSectors = Math.ceil(Math.abs(tetaStart-tetaEnd) * 2/Math.PI);
+
+      // Calculate the coordinates of the points of all the Bezier curves required to represent the arc
+      // For an in-depth explanation of this part see: http://pomax.github.io/bezierinfo/#circles_cubic
+      arcSegPoints = [];
+      angle = tetaStart;
+      deltaTeta = (tetaEnd-tetaStart)/nbSectors;
+      f = 4*Math.tan(deltaTeta/4)/3;
+      for (i = 0; i <= nbSectors; i++) { // The <= is because a Bezier curve have a start and a endpoint
+        cosAngle = Math.cos(angle);
+        sinAngle = Math.sin(angle);
+
+        pt = new SVG.Point(O.x+cosAngle, O.y+sinAngle);
+        arcSegPoints[i] = [new SVG.Point(pt.x+f*sinAngle, pt.y-f*cosAngle), pt, new SVG.Point(pt.x-f*sinAngle, pt.y+f*cosAngle)];
+
+        angle += deltaTeta;
+      }
+
+      // Remove the first control point of the first segment point and remove the second control point of the last segment point
+      // These two control points are not used in the approximation of the arc, that is why they are removed
+      arcSegPoints[0][0] = arcSegPoints[0][1].clone();
+      arcSegPoints[arcSegPoints.length-1][2] = arcSegPoints[arcSegPoints.length-1][1].clone();
+
+      // Revert the transformation that was applied to make the arc part of a unit circle instead of an ellipse
+      mat = new SVG.Matrix().rotate(xAxisRotation).scale(rx, ry).rotate(-xAxisRotation);
+      for (i = 0, il = arcSegPoints.length; i < il; i++) {
+        arcSegPoints[i][0] = arcSegPoints[i][0].transform(mat);
+        arcSegPoints[i][1] = arcSegPoints[i][1].transform(mat);
+        arcSegPoints[i][2] = arcSegPoints[i][2].transform(mat);
+      }
+
+
+      // Convert the segments points to SVG curve commands
+      for (i = 1, il = arcSegPoints.length; i < il; i++) {
+        pt = arcSegPoints[i-1][2];
+        x1 = pt.x;
+        y1 = pt.y;
+
+        pt = arcSegPoints[i][0];
+        x2 = pt.x;
+        y2 = pt.y;
+
+        pt = arcSegPoints[i][1];
+        x = pt.x;
+        y = pt.y;
+
+        retVal.push(['C', x1, y1, x2, y2, x, y]);
+      }
+
+      return retVal
+  }
+  }());
+
+  /*! svg.draggable.js - v2.2.1 - 2016-08-25
+  * https://github.com/wout/svg.draggable.js
+  * Copyright (c) 2016 Wout Fierens; Licensed MIT */
+  (function() {
+
+    // creates handler, saves it
+    function DragHandler(el){
+      el.remember('_draggable', this);
+      this.el = el;
+    }
+
+
+    // Sets new parameter, starts dragging
+    DragHandler.prototype.init = function(constraint, val){
+      var _this = this;
+      this.constraint = constraint;
+      this.value = val;
+      this.el.on('mousedown.drag', function(e){ _this.start(e); });
+      this.el.on('touchstart.drag', function(e){ _this.start(e); });
+    };
+
+    // transforms one point from screen to user coords
+    DragHandler.prototype.transformPoint = function(event, offset){
+        event = event || window.event;
+        var touches = event.changedTouches && event.changedTouches[0] || event;
+        this.p.x = touches.pageX - (offset || 0);
+        this.p.y = touches.pageY;
+        return this.p.matrixTransform(this.m)
+    };
+    
+    // gets elements bounding box with special handling of groups, nested and use
+    DragHandler.prototype.getBBox = function(){
+
+      var box = this.el.bbox();
+
+      if(this.el instanceof SVG.Nested) box = this.el.rbox();
+      
+      if (this.el instanceof SVG.G || this.el instanceof SVG.Use || this.el instanceof SVG.Nested) {
+        box.x = this.el.x();
+        box.y = this.el.y();
+      }
+
+      return box
+    };
+
+    // start dragging
+    DragHandler.prototype.start = function(e){
+
+      // check for left button
+      if(e.type == 'click'|| e.type == 'mousedown' || e.type == 'mousemove'){
+        if((e.which || e.buttons) != 1){
+            return
+        }
+      }
+    
+      var _this = this;
+
+      // fire beforedrag event
+      this.el.fire('beforedrag', { event: e, handler: this });
+
+      // search for parent on the fly to make sure we can call
+      // draggable() even when element is not in the dom currently
+      this.parent = this.parent || this.el.parent(SVG.Nested) || this.el.parent(SVG.Doc);
+      this.p = this.parent.node.createSVGPoint();
+
+      // save current transformation matrix
+      this.m = this.el.node.getScreenCTM().inverse();
+
+      var box = this.getBBox();
+      
+      var anchorOffset;
+      
+      // fix text-anchor in text-element (#37)
+      if(this.el instanceof SVG.Text){
+        anchorOffset = this.el.node.getComputedTextLength();
+          
+        switch(this.el.attr('text-anchor')){
+          case 'middle':
+            anchorOffset /= 2;
+            break
+          case 'start':
+            anchorOffset = 0;
+            break;
+        }
+      }
+      
+      this.startPoints = {
+        // We take absolute coordinates since we are just using a delta here
+        point: this.transformPoint(e, anchorOffset),
+        box:   box,
+        transform: this.el.transform()
+      };
+      
+      // add drag and end events to window
+      SVG.on(window, 'mousemove.drag', function(e){ _this.drag(e); });
+      SVG.on(window, 'touchmove.drag', function(e){ _this.drag(e); });
+      SVG.on(window, 'mouseup.drag', function(e){ _this.end(e); });
+      SVG.on(window, 'touchend.drag', function(e){ _this.end(e); });
+
+      // fire dragstart event
+      this.el.fire('dragstart', {event: e, p: this.startPoints.point, m: this.m, handler: this});
+
+      // prevent browser drag behavior
+      e.preventDefault();
+
+      // prevent propagation to a parent that might also have dragging enabled
+      e.stopPropagation();
+    };
+
+    // while dragging
+    DragHandler.prototype.drag = function(e){
+
+      var box = this.getBBox()
+        , p   = this.transformPoint(e)
+        , x   = this.startPoints.box.x + p.x - this.startPoints.point.x
+        , y   = this.startPoints.box.y + p.y - this.startPoints.point.y
+        , c   = this.constraint
+        , gx  = p.x - this.startPoints.point.x
+        , gy  = p.y - this.startPoints.point.y;
+        
+      var event = new CustomEvent('dragmove', {
+          detail: {
+              event: e
+            , p: p
+            , m: this.m
+            , handler: this
+          }
+        , cancelable: true
+      });
+        
+      this.el.fire(event);
+      
+      if(event.defaultPrevented) return p
+
+      // move the element to its new position, if possible by constraint
+      if (typeof c == 'function') {
+
+        var coord = c.call(this.el, x, y, this.m);
+
+        // bool, just show us if movement is allowed or not
+        if (typeof coord == 'boolean') {
+          coord = {
+            x: coord,
+            y: coord
+          };
+        }
+
+        // if true, we just move. If !false its a number and we move it there
+        if (coord.x === true) {
+          this.el.x(x);
+        } else if (coord.x !== false) {
+          this.el.x(coord.x);
+        }
+
+        if (coord.y === true) {
+          this.el.y(y);
+        } else if (coord.y !== false) {
+          this.el.y(coord.y);
+        }
+
+      } else if (typeof c == 'object') {
+
+        // keep element within constrained box
+        if (c.minX != null && x < c.minX)
+          x = c.minX;
+        else if (c.maxX != null && x > c.maxX - box.width){
+          x = c.maxX - box.width;
+        }if (c.minY != null && y < c.minY)
+          y = c.minY;
+        else if (c.maxY != null && y > c.maxY - box.height)
+          y = c.maxY - box.height;
+          
+        if(this.el instanceof SVG.G)
+          this.el.matrix(this.startPoints.transform).transform({x:gx, y: gy}, true);
+        else
+          this.el.move(x, y);
+      }
+      
+      // so we can use it in the end-method, too
+      return p
+    };
+
+    DragHandler.prototype.end = function(e){
+
+      // final drag
+      var p = this.drag(e);
+
+      // fire dragend event
+      this.el.fire('dragend', { event: e, p: p, m: this.m, handler: this });
+
+      // unbind events
+      SVG.off(window, 'mousemove.drag');
+      SVG.off(window, 'touchmove.drag');
+      SVG.off(window, 'mouseup.drag');
+      SVG.off(window, 'touchend.drag');
+
+    };
+
+    SVG.extend(SVG.Element, {
+      // Make element draggable
+      // Constraint might be an object (as described in readme.md) or a function in the form "function (x, y)" that gets called before every move.
+      // The function can return a boolean or an object of the form {x, y}, to which the element will be moved. "False" skips moving, true moves to raw x, y.
+      draggable: function(value, constraint) {
+
+        // Check the parameters and reassign if needed
+        if (typeof value == 'function' || typeof value == 'object') {
+          constraint = value;
+          value = true;
+        }
+
+        var dragHandler = this.remember('_draggable') || new DragHandler(this);
+
+        // When no parameter is given, value is true
+        value = typeof value === 'undefined' ? true : value;
+
+        if(value) dragHandler.init(constraint || {}, value);
+        else {
+          this.off('mousedown.drag');
+          this.off('touchstart.drag');
+        }
+
+        return this
+      }
+
+    });
+
+  }).call(undefined);
+
+  (function() {
+
+  function SelectHandler(el) {
+
+      this.el = el;
+      el.remember('_selectHandler', this);
+      this.pointSelection = {isSelected: false};
+      this.rectSelection = {isSelected: false};
+
+  }
+
+  SelectHandler.prototype.init = function (value, options) {
+
+      var bbox = this.el.bbox();
+      this.options = {};
+
+      // Merging the defaults and the options-object together
+      for (var i in this.el.selectize.defaults) {
+          this.options[i] = this.el.selectize.defaults[i];
+          if (options[i] !== undefined) {
+              this.options[i] = options[i];
+          }
+      }
+
+      this.parent = this.el.parent();
+      this.nested = (this.nested || this.parent.group());
+      this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y));
+
+      // When deepSelect is enabled and the element is a line/polyline/polygon, draw only points for moving
+      if (this.options.deepSelect && ['line', 'polyline', 'polygon'].indexOf(this.el.type) !== -1) {
+          this.selectPoints(value);
+      } else {
+          this.selectRect(value);
+      }
+
+      this.observe();
+      this.cleanup();
+
+  };
+
+  SelectHandler.prototype.selectPoints = function (value) {
+
+      this.pointSelection.isSelected = value;
+
+      // When set is already there we dont have to create one
+      if (this.pointSelection.set) {
+          return this;
+      }
+
+      // Create our set of elements
+      this.pointSelection.set = this.parent.set();
+      // draw the circles and mark the element as selected
+      this.drawCircles();
+
+      return this;
+
+  };
+
+  // create the point-array which contains the 2 points of a line or simply the points-array of polyline/polygon
+  SelectHandler.prototype.getPointArray = function () {
+      var bbox = this.el.bbox();
+
+      return this.el.array().valueOf().map(function (el) {
+          return [el[0] - bbox.x, el[1] - bbox.y];
+      });
+  };
+
+  // The function to draw the circles
+  SelectHandler.prototype.drawCircles = function () {
+
+      var _this = this, array = this.getPointArray();
+
+      // go through the array of points
+      for (var i = 0, len = array.length; i < len; ++i) {
+
+          var curriedEvent = (function (k) {
+              return function (ev) {
+                  ev = ev || window.event;
+                  ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+                  ev.stopPropagation();
+
+                  var x = ev.pageX || ev.touches[0].pageX;
+                  var y = ev.pageY || ev.touches[0].pageY;
+                  _this.el.fire('point', {x: x, y: y, i: k, event: ev});
+              };
+          })(i);
+
+          // add every point to the set
+          this.pointSelection.set.add(
+              // a circle with our css-classes and a touchstart-event which fires our event for moving points
+              this.nested.circle(this.options.radius)
+                  .center(array[i][0], array[i][1])
+                  .addClass(this.options.classPoints)
+                  .addClass(this.options.classPoints + '_point')
+                  .on('touchstart', curriedEvent)
+                  .on('mousedown', curriedEvent)
+          );
+      }
+
+  };
+
+  // every time a circle is moved, we have to update the positions of our circle
+  SelectHandler.prototype.updatePointSelection = function () {
+      var array = this.getPointArray();
+
+      this.pointSelection.set.each(function (i) {
+          if (this.cx() === array[i][0] && this.cy() === array[i][1]) {
+              return;
+          }
+          this.center(array[i][0], array[i][1]);
+      });
+  };
+
+  SelectHandler.prototype.updateRectSelection = function () {
+      var bbox = this.el.bbox();
+
+      this.rectSelection.set.get(0).attr({
+          width: bbox.width,
+          height: bbox.height
+      });
+
+      // set.get(1) is always in the upper left corner. no need to move it
+      if (this.options.points) {
+          this.rectSelection.set.get(2).center(bbox.width, 0);
+          this.rectSelection.set.get(3).center(bbox.width, bbox.height);
+          this.rectSelection.set.get(4).center(0, bbox.height);
+
+          this.rectSelection.set.get(5).center(bbox.width / 2, 0);
+          this.rectSelection.set.get(6).center(bbox.width, bbox.height / 2);
+          this.rectSelection.set.get(7).center(bbox.width / 2, bbox.height);
+          this.rectSelection.set.get(8).center(0, bbox.height / 2);
+      }
+
+      if (this.options.rotationPoint) {
+          if (this.options.points) {
+              this.rectSelection.set.get(9).center(bbox.width / 2, 20);
+          } else {
+              this.rectSelection.set.get(1).center(bbox.width / 2, 20);
+          }
+      }
+  };
+
+  SelectHandler.prototype.selectRect = function (value) {
+
+      var _this = this, bbox = this.el.bbox();
+
+      this.rectSelection.isSelected = value;
+
+      // when set is already p
+      this.rectSelection.set = this.rectSelection.set || this.parent.set();
+
+      // helperFunction to create a mouse-down function which triggers the event specified in `eventName`
+      function getMoseDownFunc(eventName) {
+          return function (ev) {
+              ev = ev || window.event;
+              ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+              ev.stopPropagation();
+
+              var x = ev.pageX || ev.touches[0].pageX;
+              var y = ev.pageY || ev.touches[0].pageY;
+              _this.el.fire(eventName, {x: x, y: y, event: ev});
+          };
+      }
+
+      // create the selection-rectangle and add the css-class
+      if (!this.rectSelection.set.get(0)) {
+          this.rectSelection.set.add(this.nested.rect(bbox.width, bbox.height).addClass(this.options.classRect));
+      }
+
+      // Draw Points at the edges, if enabled
+      if (this.options.points && !this.rectSelection.set.get(1)) {
+          var ename ="touchstart", mname = "mousedown";
+          this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, 0).attr('class', this.options.classPoints + '_lt').on(mname, getMoseDownFunc('lt')).on(ename, getMoseDownFunc('lt')));
+          this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, 0).attr('class', this.options.classPoints + '_rt').on(mname, getMoseDownFunc('rt')).on(ename, getMoseDownFunc('rt')));
+          this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, bbox.height).attr('class', this.options.classPoints + '_rb').on(mname, getMoseDownFunc('rb')).on(ename, getMoseDownFunc('rb')));
+          this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, bbox.height).attr('class', this.options.classPoints + '_lb').on(mname, getMoseDownFunc('lb')).on(ename, getMoseDownFunc('lb')));
+
+          this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, 0).attr('class', this.options.classPoints + '_t').on(mname, getMoseDownFunc('t')).on(ename, getMoseDownFunc('t')));
+          this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width, bbox.height / 2).attr('class', this.options.classPoints + '_r').on(mname, getMoseDownFunc('r')).on(ename, getMoseDownFunc('r')));
+          this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, bbox.height).attr('class', this.options.classPoints + '_b').on(mname, getMoseDownFunc('b')).on(ename, getMoseDownFunc('b')));
+          this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0, bbox.height / 2).attr('class', this.options.classPoints + '_l').on(mname, getMoseDownFunc('l')).on(ename, getMoseDownFunc('l')));
+
+          this.rectSelection.set.each(function () {
+              this.addClass(_this.options.classPoints);
+          });
+      }
+
+      // draw rotationPint, if enabled
+      if (this.options.rotationPoint && ((this.options.points && !this.rectSelection.set.get(9)) || (!this.options.points && !this.rectSelection.set.get(1)))) {
+
+          var curriedEvent = function (ev) {
+              ev = ev || window.event;
+              ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
+              ev.stopPropagation();
+
+              var x = ev.pageX || ev.touches[0].pageX;
+              var y = ev.pageY || ev.touches[0].pageY;
+              _this.el.fire('rot', {x: x, y: y, event: ev});
+          };
+          this.rectSelection.set.add(this.nested.circle(this.options.radius).center(bbox.width / 2, 20).attr('class', this.options.classPoints + '_rot')
+              .on("touchstart", curriedEvent).on("mousedown", curriedEvent));
+
+      }
+
+  };
+
+  SelectHandler.prototype.handler = function () {
+
+      var bbox = this.el.bbox();
+      this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y));
+
+      if (this.rectSelection.isSelected) {
+          this.updateRectSelection();
+      }
+
+      if (this.pointSelection.isSelected) {
+          this.updatePointSelection();
+      }
+
+  };
+
+  SelectHandler.prototype.observe = function () {
+      var _this = this;
+
+      if (MutationObserver) {
+          if (this.rectSelection.isSelected || this.pointSelection.isSelected) {
+              this.observerInst = this.observerInst || new MutationObserver(function () {
+                  _this.handler();
+              });
+              this.observerInst.observe(this.el.node, {attributes: true});
+          } else {
+              try {
+                  this.observerInst.disconnect();
+                  delete this.observerInst;
+              } catch (e) {
+              }
+          }
+      } else {
+          this.el.off('DOMAttrModified.select');
+
+          if (this.rectSelection.isSelected || this.pointSelection.isSelected) {
+              this.el.on('DOMAttrModified.select', function () {
+                  _this.handler();
+              });
+          }
+      }
+  };
+
+  SelectHandler.prototype.cleanup = function () {
+
+      //var _this = this;
+
+      if (!this.rectSelection.isSelected && this.rectSelection.set) {
+          // stop watching the element, remove the selection
+          this.rectSelection.set.each(function () {
+              this.remove();
+          });
+
+          this.rectSelection.set.clear();
+          delete this.rectSelection.set;
+      }
+
+      if (!this.pointSelection.isSelected && this.pointSelection.set) {
+          // Remove all points, clear the set, stop watching the element
+          this.pointSelection.set.each(function () {
+              this.remove();
+          });
+
+          this.pointSelection.set.clear();
+          delete this.pointSelection.set;
+      }
+
+      if (!this.pointSelection.isSelected && !this.rectSelection.isSelected) {
+          this.nested.remove();
+          delete this.nested;
+
+      }
+  };
+
+
+  SVG.extend(SVG.Element, {
+      // Select element with mouse
+      selectize: function (value, options) {
+
+          // Check the parameters and reassign if needed
+          if (typeof value === 'object') {
+              options = value;
+              value = true;
+          }
+
+          var selectHandler = this.remember('_selectHandler') || new SelectHandler(this);
+
+          selectHandler.init(value === undefined ? true : value, options || {});
+
+          return this;
+
+      }
+  });
+
+  SVG.Element.prototype.selectize.defaults = {
+      points: true,                            // If true, points at the edges are drawn. Needed for resize!
+      classRect: 'svg_select_boundingRect',    // Css-class added to the rect
+      classPoints: 'svg_select_points',        // Css-class added to the points
+      radius: 7,                               // radius of the points
+      rotationPoint: true,                     // If true, rotation point is drawn. Needed for rotation!
+      deepSelect: false                        // If true, moving of single points is possible (only line, polyline, polyon)
+  };
+  }());
+
+  (function() {
+  (function () {
+
+      function ResizeHandler(el) {
+
+          el.remember('_resizeHandler', this);
+
+          this.el = el;
+          this.parameters = {};
+          this.lastUpdateCall = null;
+          this.p = el.doc().node.createSVGPoint();
+      }
+
+      ResizeHandler.prototype.transformPoint = function(x, y, m){
+
+          this.p.x = x - (this.offset.x - window.pageXOffset);
+          this.p.y = y - (this.offset.y - window.pageYOffset);
+
+          return this.p.matrixTransform(m || this.m);
+
+      };
+
+      ResizeHandler.prototype._extractPosition = function(event) {
+          // Extract a position from a mouse/touch event.
+          // Returns { x: .., y: .. }
+          return {
+              x: event.clientX != null ? event.clientX : event.touches[0].clientX,
+              y: event.clientY != null ? event.clientY : event.touches[0].clientY
+          }
+      };
+
+      ResizeHandler.prototype.init = function (options) {
+
+          var _this = this;
+
+          this.stop();
+
+          if (options === 'stop') {
+              return;
+          }
+
+          this.options = {};
+
+          // Merge options and defaults
+          for (var i in this.el.resize.defaults) {
+              this.options[i] = this.el.resize.defaults[i];
+              if (typeof options[i] !== 'undefined') {
+                  this.options[i] = options[i];
+              }
+          }
+
+          // We listen to all these events which are specifying different edges
+          this.el.on('lt.resize', function(e){ _this.resize(e || window.event); });  // Left-Top
+          this.el.on('rt.resize', function(e){ _this.resize(e || window.event); });  // Right-Top
+          this.el.on('rb.resize', function(e){ _this.resize(e || window.event); });  // Right-Bottom
+          this.el.on('lb.resize', function(e){ _this.resize(e || window.event); });  // Left-Bottom
+
+          this.el.on('t.resize', function(e){ _this.resize(e || window.event); });   // Top
+          this.el.on('r.resize', function(e){ _this.resize(e || window.event); });   // Right
+          this.el.on('b.resize', function(e){ _this.resize(e || window.event); });   // Bottom
+          this.el.on('l.resize', function(e){ _this.resize(e || window.event); });   // Left
+
+          this.el.on('rot.resize', function(e){ _this.resize(e || window.event); }); // Rotation
+
+          this.el.on('point.resize', function(e){ _this.resize(e || window.event); }); // Point-Moving
+
+          // This call ensures, that the plugin reacts to a change of snapToGrid immediately
+          this.update();
+
+      };
+
+      ResizeHandler.prototype.stop = function(){
+          this.el.off('lt.resize');
+          this.el.off('rt.resize');
+          this.el.off('rb.resize');
+          this.el.off('lb.resize');
+
+          this.el.off('t.resize');
+          this.el.off('r.resize');
+          this.el.off('b.resize');
+          this.el.off('l.resize');
+
+          this.el.off('rot.resize');
+
+          this.el.off('point.resize');
+
+          return this;
+      };
+
+      ResizeHandler.prototype.resize = function (event) {
+
+          var _this = this;
+
+          this.m = this.el.node.getScreenCTM().inverse();
+          this.offset = { x: window.pageXOffset, y: window.pageYOffset };
+
+          var txPt = this._extractPosition(event.detail.event);
+          this.parameters = {
+              type: this.el.type, // the type of element
+              p: this.transformPoint(txPt.x, txPt.y),
+              x: event.detail.x,      // x-position of the mouse when resizing started
+              y: event.detail.y,      // y-position of the mouse when resizing started
+              box: this.el.bbox(),    // The bounding-box of the element
+              rotation: this.el.transform().rotation  // The current rotation of the element
+          };
+
+          // Add font-size parameter if the element type is text
+          if (this.el.type === "text") {
+              this.parameters.fontSize = this.el.attr()["font-size"];
+          }
+
+          // the i-param in the event holds the index of the point which is moved, when using `deepSelect`
+          if (event.detail.i !== undefined) {
+
+              // get the point array
+              var array = this.el.array().valueOf();
+
+              // Save the index and the point which is moved
+              this.parameters.i = event.detail.i;
+              this.parameters.pointCoords = [array[event.detail.i][0], array[event.detail.i][1]];
+          }
+
+          // Lets check which edge of the bounding-box was clicked and resize the this.el according to this
+          switch (event.type) {
+
+              // Left-Top-Edge
+              case 'lt':
+                  // We build a calculating function for every case which gives us the new position of the this.el
+                  this.calc = function (diffX, diffY) {
+                      // The procedure is always the same
+                      // First we snap the edge to the given grid (snapping to 1px grid is normal resizing)
+                      var snap = this.snapToGrid(diffX, diffY);
+
+                      // Now we check if the new height and width still valid (> 0)
+                      if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height - snap[1] > 0) {
+                          // ...if valid, we resize the this.el (which can include moving because the coord-system starts at the left-top and this edge is moving sometimes when resized)
+
+                          /*
+                           * but first check if the element is text box, so we can change the font size instead of
+                           * the width and height
+                           */
+
+                          if (this.parameters.type === "text") {
+                              this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y);
+                              this.el.attr("font-size", this.parameters.fontSize - snap[0]);
+                              return;
+                          }
+
+                          snap = this.checkAspectRatio(snap);
+
+                          this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y + snap[1]).size(this.parameters.box.width - snap[0], this.parameters.box.height - snap[1]);
+                      }
+                  };
+                  break;
+
+              // Right-Top
+              case 'rt':
+                  // s.a.
+                  this.calc = function (diffX, diffY) {
+                      var snap = this.snapToGrid(diffX, diffY, 1 << 1);
+                      if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height - snap[1] > 0) {
+                          if (this.parameters.type === "text") {
+                              this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y);
+                              this.el.attr("font-size", this.parameters.fontSize + snap[0]);
+                              return;
+                          }
+
+                          snap = this.checkAspectRatio(snap);
+
+                          this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).size(this.parameters.box.width + snap[0], this.parameters.box.height - snap[1]);
+                      }
+                  };
+                  break;
+
+              // Right-Bottom
+              case 'rb':
+                  // s.a.
+                  this.calc = function (diffX, diffY) {
+                      var snap = this.snapToGrid(diffX, diffY, 0);
+                      if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height + snap[1] > 0) {
+                          if (this.parameters.type === "text") {
+                              this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y);
+                              this.el.attr("font-size", this.parameters.fontSize + snap[0]);
+                              return;
+                          }
+
+                          snap = this.checkAspectRatio(snap);
+
+                          this.el.move(this.parameters.box.x, this.parameters.box.y).size(this.parameters.box.width + snap[0], this.parameters.box.height + snap[1]);
+                      }
+                  };
+                  break;
+
+              // Left-Bottom
+              case 'lb':
+                  // s.a.
+                  this.calc = function (diffX, diffY) {
+                      var snap = this.snapToGrid(diffX, diffY, 1);
+                      if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height + snap[1] > 0) {
+                          if (this.parameters.type === "text") {
+                              this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y);
+                              this.el.attr("font-size", this.parameters.fontSize - snap[0]);
+                              return;
+                          }
+
+                          snap = this.checkAspectRatio(snap);
+
+                          this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).size(this.parameters.box.width - snap[0], this.parameters.box.height + snap[1]);
+                      }
+                  };
+                  break;
+
+              // Top
+              case 't':
+                  // s.a.
+                  this.calc = function (diffX, diffY) {
+                      var snap = this.snapToGrid(diffX, diffY, 1 << 1);
+                      if (this.parameters.box.height - snap[1] > 0) {
+                          // Disable the font-resizing if it is not from the corner of bounding-box
+                          if (this.parameters.type === "text") {
+                              return;
+                          }
+
+                          this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).height(this.parameters.box.height - snap[1]);
+                      }
+                  };
+                  break;
+
+              // Right
+              case 'r':
+                  // s.a.
+                  this.calc = function (diffX, diffY) {
+                      var snap = this.snapToGrid(diffX, diffY, 0);
+                      if (this.parameters.box.width + snap[0] > 0) {
+                          if (this.parameters.type === "text") {
+                              return;
+                          }
+
+                          this.el.move(this.parameters.box.x, this.parameters.box.y).width(this.parameters.box.width + snap[0]);
+                      }
+                  };
+                  break;
+
+              // Bottom
+              case 'b':
+                  // s.a.
+                  this.calc = function (diffX, diffY) {
+                      var snap = this.snapToGrid(diffX, diffY, 0);
+                      if (this.parameters.box.height + snap[1] > 0) {
+                          if (this.parameters.type === "text") {
+                              return;
+                          }
+
+                          this.el.move(this.parameters.box.x, this.parameters.box.y).height(this.parameters.box.height + snap[1]);
+                      }
+                  };
+                  break;
+
+              // Left
+              case 'l':
+                  // s.a.
+                  this.calc = function (diffX, diffY) {
+                      var snap = this.snapToGrid(diffX, diffY, 1);
+                      if (this.parameters.box.width - snap[0] > 0) {
+                          if (this.parameters.type === "text") {
+                              return;
+                          }
+
+                          this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).width(this.parameters.box.width - snap[0]);
+                      }
+                  };
+                  break;
+
+              // Rotation
+              case 'rot':
+                  // s.a.
+                  this.calc = function (diffX, diffY) {
+
+                      // yes this is kinda stupid but we need the mouse coords back...
+                      var current = {x: diffX + this.parameters.p.x, y: diffY + this.parameters.p.y};
+
+                      // start minus middle
+                      var sAngle = Math.atan2((this.parameters.p.y - this.parameters.box.y - this.parameters.box.height / 2), (this.parameters.p.x - this.parameters.box.x - this.parameters.box.width / 2));
+
+                      // end minus middle
+                      var pAngle = Math.atan2((current.y - this.parameters.box.y - this.parameters.box.height / 2), (current.x - this.parameters.box.x - this.parameters.box.width / 2));
+
+                      var angle = (pAngle - sAngle) * 180 / Math.PI;
+
+                      // We have to move the element to the center of the box first and change the rotation afterwards
+                      // because rotation always works around a rotation-center, which is changed when moving the element
+                      // We also set the new rotation center to the center of the box.
+                      this.el.center(this.parameters.box.cx, this.parameters.box.cy).rotate(this.parameters.rotation + angle - angle % this.options.snapToAngle, this.parameters.box.cx, this.parameters.box.cy);
+                  };
+                  break;
+
+              // Moving one single Point (needed when an element is deepSelected which means you can move every single point of the object)
+              case 'point':
+                  this.calc = function (diffX, diffY) {
+
+                      // Snapping the point to the grid
+                      var snap = this.snapToGrid(diffX, diffY, this.parameters.pointCoords[0], this.parameters.pointCoords[1]);
+
+                      // Get the point array
+                      var array = this.el.array().valueOf();
+
+                      // Changing the moved point in the array
+                      array[this.parameters.i][0] = this.parameters.pointCoords[0] + snap[0];
+                      array[this.parameters.i][1] = this.parameters.pointCoords[1] + snap[1];
+
+                      // And plot the new this.el
+                      this.el.plot(array);
+                  };
+          }
+
+          this.el.fire('resizestart', {dx: this.parameters.x, dy: this.parameters.y, event: event});
+          // When resizing started, we have to register events for...
+          // Touches.
+          SVG.on(window, 'touchmove.resize', function(e) {
+              _this.update(e || window.event);
+          });
+          SVG.on(window, 'touchend.resize', function() {
+              _this.done();
+          });
+          // Mouse.
+          SVG.on(window, 'mousemove.resize', function (e) {
+              _this.update(e || window.event);
+          });
+          SVG.on(window, 'mouseup.resize', function () {
+              _this.done();
+          });
+
+      };
+
+      // The update-function redraws the element every time the mouse is moving
+      ResizeHandler.prototype.update = function (event) {
+
+          if (!event) {
+              if (this.lastUpdateCall) {
+                  this.calc(this.lastUpdateCall[0], this.lastUpdateCall[1]);
+              }
+              return;
+          }
+
+          // Calculate the difference between the mouseposition at start and now
+          var txPt = this._extractPosition(event);
+          var p = this.transformPoint(txPt.x, txPt.y);
+
+          var diffX = p.x - this.parameters.p.x,
+              diffY = p.y - this.parameters.p.y;
+
+          this.lastUpdateCall = [diffX, diffY];
+
+          // Calculate the new position and height / width of the element
+          this.calc(diffX, diffY);
+
+         // Emit an event to say we have changed.
+          this.el.fire('resizing', {dx: diffX, dy: diffY, event: event});
+      };
+
+      // Is called on mouseup.
+      // Removes the update-function from the mousemove event
+      ResizeHandler.prototype.done = function () {
+          this.lastUpdateCall = null;
+          SVG.off(window, 'mousemove.resize');
+          SVG.off(window, 'mouseup.resize');
+          SVG.off(window, 'touchmove.resize');
+          SVG.off(window, 'touchend.resize');
+          this.el.fire('resizedone');
+      };
+
+      // The flag is used to determine whether the resizing is used with a left-Point (first bit) and top-point (second bit)
+      // In this cases the temp-values are calculated differently
+      ResizeHandler.prototype.snapToGrid = function (diffX, diffY, flag, pointCoordsY) {
+
+          var temp;
+
+          // If `pointCoordsY` is given, a single Point has to be snapped (deepSelect). That's why we need a different temp-value
+          if (typeof pointCoordsY !== 'undefined') {
+              // Note that flag = pointCoordsX in this case
+              temp = [(flag + diffX) % this.options.snapToGrid, (pointCoordsY + diffY) % this.options.snapToGrid];
+          } else {
+              // We check if the flag is set and if not we set a default-value (both bits set - which means upper-left-edge)
+              flag = flag == null ? 1 | 1 << 1 : flag;
+              temp = [(this.parameters.box.x + diffX + (flag & 1 ? 0 : this.parameters.box.width)) % this.options.snapToGrid, (this.parameters.box.y + diffY + (flag & (1 << 1) ? 0 : this.parameters.box.height)) % this.options.snapToGrid];
+          }
+
+
+          diffX -= (Math.abs(temp[0]) < this.options.snapToGrid / 2 ?
+                    temp[0] :
+                    temp[0] - (diffX < 0 ? -this.options.snapToGrid : this.options.snapToGrid));
+          diffY -= (Math.abs(temp[1]) < this.options.snapToGrid / 2 ?
+                    temp[1] :
+                    temp[1] - (diffY < 0 ? -this.options.snapToGrid : this.options.snapToGrid));
+
+          return this.constraintToBox(diffX, diffY, flag, pointCoordsY);
+
+      };
+
+      // keep element within constrained box
+      ResizeHandler.prototype.constraintToBox = function (diffX, diffY, flag, pointCoordsY) {
+          //return [diffX, diffY]
+          var c = this.options.constraint || {};
+          var orgX, orgY;
+
+          if (typeof pointCoordsY !== 'undefined') {
+            orgX = flag;
+            orgY = pointCoordsY;
+          } else {
+            orgX = this.parameters.box.x + (flag & 1 ? 0 : this.parameters.box.width);
+            orgY = this.parameters.box.y + (flag & (1<<1) ? 0 : this.parameters.box.height);
+          }
+
+          if (typeof c.minX !== 'undefined' && orgX + diffX < c.minX) {
+            diffX = c.minX - orgX;
+          }
+
+          if (typeof c.maxX !== 'undefined' && orgX + diffX > c.maxX) {
+            diffX = c.maxX - orgX;
+          }
+
+          if (typeof c.minY !== 'undefined' && orgY + diffY < c.minY) {
+            diffY = c.minY - orgY;
+          }
+
+          if (typeof c.maxY !== 'undefined' && orgY + diffY > c.maxY) {
+            diffY = c.maxY - orgY;
+          }
+
+          return [diffX, diffY];
+      };
+
+      ResizeHandler.prototype.checkAspectRatio = function (snap) {
+          if (!this.options.saveAspectRatio) {
+              return snap;
+          }
+
+          var updatedSnap = snap.slice();
+          var aspectRatio = this.parameters.box.width / this.parameters.box.height;
+          var newW = this.parameters.box.width + snap[0];
+          var newH = this.parameters.box.height - snap[1];
+          var newAspectRatio = newW / newH;
+
+          if (newAspectRatio < aspectRatio) {
+              // Height is too big. Adapt it
+              updatedSnap[1] = newW / aspectRatio - this.parameters.box.height;
+          } else if (newAspectRatio > aspectRatio) {
+              // Width is too big. Adapt it
+              updatedSnap[0] = this.parameters.box.width - newH * aspectRatio;
+          }
+
+          return updatedSnap;
+
+      };
+
+      SVG.extend(SVG.Element, {
+          // Resize element with mouse
+          resize: function (options) {
+
+              (this.remember('_resizeHandler') || new ResizeHandler(this)).init(options || {});
+
+              return this;
+
+          }
+
+      });
+
+      SVG.Element.prototype.resize.defaults = {
+          snapToAngle: 0.1,       // Specifies the speed the rotation is happening when moving the mouse
+          snapToGrid: 1,          // Snaps to a grid of `snapToGrid` Pixels
+          constraint: {},         // keep element within constrained box
+          saveAspectRatio: false  // Save aspect ratio when resizing using lt, rt, rb or lb points
+      };
+
+  }).call(this);
+  }());
+
+  function styleInject(css, ref) {
+    if ( ref === void 0 ) ref = {};
+    var insertAt = ref.insertAt;
+
+    if (!css || typeof document === 'undefined') { return; }
+
+    var head = document.head || document.getElementsByTagName('head')[0];
+    var style = document.createElement('style');
+    style.type = 'text/css';
+
+    if (insertAt === 'top') {
+      if (head.firstChild) {
+        head.insertBefore(style, head.firstChild);
+      } else {
+        head.appendChild(style);
+      }
+    } else {
+      head.appendChild(style);
+    }
+
+    if (style.styleSheet) {
+      style.styleSheet.cssText = css;
+    } else {
+      style.appendChild(document.createTextNode(css));
+    }
+  }
+
+  var css = ".apexcharts-canvas {\n  position: relative;\n  user-select: none;\n  /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */\n}\n\n/* scrollbar is not visible by default for legend, hence forcing the visibility */\n.apexcharts-canvas ::-webkit-scrollbar {\n  -webkit-appearance: none;\n  width: 6px;\n}\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n  border-radius: 4px;\n  background-color: rgba(0,0,0,.5);\n  box-shadow: 0 0 1px rgba(255,255,255,.5);\n  -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5);\n}\n.apexcharts-canvas.dark {\n  background: #343F57;\n}\n\n.apexcharts-inner {\n  position: relative;\n}\n\n.legend-mouseover-inactive {\n  transition: 0.15s ease all;\n  opacity: 0.20;\n}\n\n.apexcharts-series-collapsed {\n  opacity: 0;\n}\n\n.apexcharts-gridline, .apexcharts-text {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip {\n  border-radius: 5px;\n  box-shadow: 2px 2px 6px -4px #999;\n  cursor: default;\n  font-size: 14px;\n  left: 62px;\n  opacity: 0;\n  pointer-events: none;\n  position: absolute;\n  top: 20px;\n  overflow: hidden;\n  white-space: nowrap;\n  z-index: 12;\n  transition: 0.15s ease all;\n}\n.apexcharts-tooltip.light {\n  border: 1px solid #e3e3e3;\n  background: rgba(255, 255, 255, 0.96);\n}\n.apexcharts-tooltip.dark {\n  color: #fff;\n  background: rgba(30,30,30, 0.8);\n}\n.apexcharts-tooltip * {\n  font-family: inherit;\n}\n\n.apexcharts-tooltip .apexcharts-marker,\n.apexcharts-area-series .apexcharts-area,\n.apexcharts-line {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-tooltip-title {\n  padding: 6px;\n  font-size: 15px;\n  margin-bottom: 4px;\n}\n.apexcharts-tooltip.light .apexcharts-tooltip-title {\n  background: #ECEFF1;\n  border-bottom: 1px solid #ddd;\n}\n.apexcharts-tooltip.dark .apexcharts-tooltip-title {\n  background: rgba(0, 0, 0, 0.7);\n  border-bottom: 1px solid #333;\n}\n\n.apexcharts-tooltip-text-value,\n.apexcharts-tooltip-text-z-value {\n  display: inline-block;\n  font-weight: 600;\n  margin-left: 5px;\n}\n\n.apexcharts-tooltip-text-z-label:empty,\n.apexcharts-tooltip-text-z-value:empty {\n  display: none;\n}\n\n.apexcharts-tooltip-text-value, \n.apexcharts-tooltip-text-z-value {\n  font-weight: 600;\n}\n\n.apexcharts-tooltip-marker {\n  width: 12px;\n  height: 12px;\n  position: relative;\n  top: 0px;\n  margin-right: 10px;\n  border-radius: 50%;\n}\n\n.apexcharts-tooltip-series-group {\n  padding: 0 10px;\n  display: none;\n  text-align: left;\n  justify-content: left;\n  align-items: center;\n}\n\n.apexcharts-tooltip-series-group.active .apexcharts-tooltip-marker {\n  opacity: 1;\n}\n.apexcharts-tooltip-series-group.active, .apexcharts-tooltip-series-group:last-child {\n  padding-bottom: 4px;\n}\n.apexcharts-tooltip-series-group-hidden {\n  opacity: 0;\n  height: 0;\n  line-height: 0;\n  padding: 0 !important;\n}\n.apexcharts-tooltip-y-group {\n  padding: 6px 0 5px;\n}\n.apexcharts-tooltip-candlestick {\n  padding: 4px 8px;\n}\n.apexcharts-tooltip-candlestick > div {\n  margin: 4px 0;\n}\n.apexcharts-tooltip-candlestick span.value {\n  font-weight: bold;\n}\n\n.apexcharts-tooltip-rangebar {\n  padding: 5px 8px;\n}\n\n.apexcharts-tooltip-rangebar .category {\n  font-weight: 600;\n  color: #777;\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n  font-weight: bold;\n  display: block;\n  margin-bottom: 5px;\n}\n\n.apexcharts-xaxistooltip {\n  opacity: 0;\n  padding: 9px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-xaxistooltip:after, .apexcharts-xaxistooltip:before {\n\tleft: 50%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n\n.apexcharts-xaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-left: -6px;\n}\n.apexcharts-xaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-left: -7px;\n}\n\n.apexcharts-xaxistooltip-bottom:after, .apexcharts-xaxistooltip-bottom:before {\n  bottom: 100%;\n}\n\n.apexcharts-xaxistooltip-top:after, .apexcharts-xaxistooltip-top:before {\n  top: 100%;\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n  border-bottom-color: #ECEFF1;\n}\n.apexcharts-xaxistooltip-bottom:before {\n  border-bottom-color: #90A4AE;\n}\n\n.apexcharts-xaxistooltip-bottom.dark:after {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-bottom.dark:before {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-top:after {\n  border-top-color:#ECEFF1\n}\n.apexcharts-xaxistooltip-top:before {\n  border-top-color: #90A4AE;\n}\n.apexcharts-xaxistooltip-top.dark:after {\n  border-top-color:rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-top.dark:before {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n\n\n.apexcharts-xaxistooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-yaxistooltip {\n  opacity: 0;\n  padding: 4px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n}\n\n.apexcharts-yaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-yaxistooltip:after, .apexcharts-yaxistooltip:before {\n\ttop: 50%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n.apexcharts-yaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-top: -6px;\n}\n.apexcharts-yaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-top: -7px;\n}\n\n.apexcharts-yaxistooltip-left:after, .apexcharts-yaxistooltip-left:before {\n  left: 100%;\n}\n\n.apexcharts-yaxistooltip-right:after, .apexcharts-yaxistooltip-right:before {\n  right: 100%;\n}\n\n.apexcharts-yaxistooltip-left:after {\n  border-left-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-left:before {\n  border-left-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-left.dark:after {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-left.dark:before {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-right:after {\n  border-right-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-right:before {\n  border-right-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-right.dark:after {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-right.dark:before {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip.active {\n  opacity: 1;\n}\n\n.apexcharts-xcrosshairs, .apexcharts-ycrosshairs {\n  pointer-events: none;\n  opacity: 0;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xcrosshairs.active, .apexcharts-ycrosshairs.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-ycrosshairs-hidden {\n  opacity: 0;\n}\n\n.apexcharts-zoom-rect {\n  pointer-events: none;\n}\n.apexcharts-selection-rect {\n  cursor: move;\n}\n\n.svg_select_points, .svg_select_points_rot {\n  opacity: 0;\n  visibility: hidden;\n}\n.svg_select_points_l, .svg_select_points_r {\n  cursor: ew-resize;\n  opacity: 1;\n  visibility: visible;\n  fill: #888;\n}\n.apexcharts-canvas.zoomable .hovering-zoom {\n  cursor: crosshair\n}\n.apexcharts-canvas.zoomable .hovering-pan {\n  cursor: move\n}\n\n.apexcharts-xaxis,\n.apexcharts-yaxis {\n  pointer-events: none;\n}\n\n.apexcharts-zoom-icon, \n.apexcharts-zoom-in-icon,\n.apexcharts-zoom-out-icon,\n.apexcharts-reset-zoom-icon, \n.apexcharts-pan-icon, \n.apexcharts-selection-icon,\n.apexcharts-menu-icon, \n.apexcharts-toolbar-custom-icon {\n  cursor: pointer;\n  width: 20px;\n  height: 20px;\n  line-height: 24px;\n  color: #6E8192;\n  text-align: center;\n}\n\n\n.apexcharts-zoom-icon svg, \n.apexcharts-zoom-in-icon svg,\n.apexcharts-zoom-out-icon svg,\n.apexcharts-reset-zoom-icon svg,\n.apexcharts-menu-icon svg {\n  fill: #6E8192;\n}\n.apexcharts-selection-icon svg {\n  fill: #444;\n  transform: scale(0.76)\n}\n\n.dark .apexcharts-zoom-icon svg, \n.dark .apexcharts-zoom-in-icon svg,\n.dark .apexcharts-zoom-out-icon svg,\n.dark .apexcharts-reset-zoom-icon svg, \n.dark .apexcharts-pan-icon svg, \n.dark .apexcharts-selection-icon svg,\n.dark .apexcharts-menu-icon svg, \n.dark .apexcharts-toolbar-custom-icon svg{\n  fill: #f3f4f5;\n}\n\n.apexcharts-canvas .apexcharts-zoom-icon.selected svg, \n.apexcharts-canvas .apexcharts-selection-icon.selected svg, \n.apexcharts-canvas .apexcharts-reset-zoom-icon.selected svg {\n  fill: #008FFB;\n}\n.light .apexcharts-selection-icon:not(.selected):hover svg,\n.light .apexcharts-zoom-icon:not(.selected):hover svg, \n.light .apexcharts-zoom-in-icon:hover svg, \n.light .apexcharts-zoom-out-icon:hover svg, \n.light .apexcharts-reset-zoom-icon:hover svg, \n.light .apexcharts-menu-icon:hover svg {\n  fill: #333;\n}\n\n.apexcharts-selection-icon, .apexcharts-menu-icon {\n  position: relative;\n}\n.apexcharts-reset-zoom-icon {\n  margin-left: 5px;\n}\n.apexcharts-zoom-icon, .apexcharts-reset-zoom-icon, .apexcharts-menu-icon {\n  transform: scale(0.85);\n}\n\n.apexcharts-zoom-in-icon, .apexcharts-zoom-out-icon {\n  transform: scale(0.7)\n}\n\n.apexcharts-zoom-out-icon {\n  margin-right: 3px;\n}\n\n.apexcharts-pan-icon {\n  transform: scale(0.62);\n  position: relative;\n  left: 1px;\n  top: 0px;\n}\n.apexcharts-pan-icon svg {\n  fill: #fff;\n  stroke: #6E8192;\n  stroke-width: 2;\n}\n.apexcharts-pan-icon.selected svg {\n  stroke: #008FFB;\n}\n.apexcharts-pan-icon:not(.selected):hover svg {\n  stroke: #333;\n}\n\n.apexcharts-toolbar {\n  position: absolute;\n  z-index: 11;\n  top: 0px;\n  right: 3px;\n  max-width: 176px;\n  text-align: right;\n  border-radius: 3px;\n  padding: 0px 6px 2px 6px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center; \n}\n\n.apexcharts-toolbar svg {\n  pointer-events: none;\n}\n\n.apexcharts-menu {\n  background: #fff;\n  position: absolute;\n  top: 100%;\n  border: 1px solid #ddd;\n  border-radius: 3px;\n  padding: 3px;\n  right: 10px;\n  opacity: 0;\n  min-width: 110px;\n  transition: 0.15s ease all;\n  pointer-events: none;\n}\n\n.apexcharts-menu.open {\n  opacity: 1;\n  pointer-events: all;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-menu-item {\n  padding: 6px 7px;\n  font-size: 12px;\n  cursor: pointer;\n}\n.light .apexcharts-menu-item:hover {\n  background: #eee;\n}\n.dark .apexcharts-menu {\n  background: rgba(0, 0, 0, 0.7);\n  color: #fff;\n}\n\n@media screen and (min-width: 768px) {\n  .apexcharts-toolbar {\n    /*opacity: 0;*/\n  }\n\n  .apexcharts-canvas:hover .apexcharts-toolbar {\n    opacity: 1;\n  } \n}\n\n.apexcharts-datalabel.hidden {\n  opacity: 0;\n}\n\n.apexcharts-pie-label,\n.apexcharts-datalabel, .apexcharts-datalabel-label, .apexcharts-datalabel-value {\n  cursor: default;\n  pointer-events: none;\n}\n\n.apexcharts-pie-label-delay {\n  opacity: 0;\n  animation-name: opaque;\n  animation-duration: 0.3s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease;\n}\n\n.apexcharts-canvas .hidden {\n  opacity: 0;\n}\n\n.apexcharts-hide .apexcharts-series-points {\n  opacity: 0;\n}\n\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, .apexcharts-radar-series path, .apexcharts-radar-series polygon {\n  pointer-events: none;\n}\n\n/* markers */\n\n.apexcharts-marker {\n  transition: 0.15s ease all;\n}\n\n@keyframes opaque {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}";
+  styleInject(css);
+
+  /*
+   * classList.js: Cross-browser full element.classList implementation.
+   * 1.2.20171210
+   *
+   * By Eli Grey, http://eligrey.com
+   * License: Dedicated to the public domain.
+   *   See https://github.com/eligrey/classList.js/blob/master/LICENSE.md
+   */
+
+  /*global self, document, DOMException */
+
+  /*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */
+  if ("document" in self) {
+    // Full polyfill for browsers with no classList support
+    // Including IE < Edge missing SVGElement.classList
+    if (!("classList" in document.createElement("_")) || document.createElementNS && !("classList" in document.createElementNS("http://www.w3.org/2000/svg", "g"))) {
+      (function (view) {
+
+        if (!('Element' in view)) return;
+
+        var classListProp = "classList",
+            protoProp = "prototype",
+            elemCtrProto = view.Element[protoProp],
+            objCtr = Object,
+            strTrim = String[protoProp].trim || function () {
+          return this.replace(/^\s+|\s+$/g, "");
+        },
+            arrIndexOf = Array[protoProp].indexOf || function (item) {
+          var i = 0,
+              len = this.length;
+
+          for (; i < len; i++) {
+            if (i in this && this[i] === item) {
+              return i;
+            }
+          }
+
+          return -1;
+        } // Vendors: please allow content code to instantiate DOMExceptions
+        ,
+            DOMEx = function DOMEx(type, message) {
+          this.name = type;
+          this.code = DOMException[type];
+          this.message = message;
+        },
+            checkTokenAndGetIndex = function checkTokenAndGetIndex(classList, token) {
+          if (token === "") {
+            throw new DOMEx("SYNTAX_ERR", "The token must not be empty.");
+          }
+
+          if (/\s/.test(token)) {
+            throw new DOMEx("INVALID_CHARACTER_ERR", "The token must not contain space characters.");
+          }
+
+          return arrIndexOf.call(classList, token);
+        },
+            ClassList = function ClassList(elem) {
+          var trimmedClasses = strTrim.call(elem.getAttribute("class") || ""),
+              classes = trimmedClasses ? trimmedClasses.split(/\s+/) : [],
+              i = 0,
+              len = classes.length;
+
+          for (; i < len; i++) {
+            this.push(classes[i]);
+          }
+
+          this._updateClassName = function () {
+            elem.setAttribute("class", this.toString());
+          };
+        },
+            classListProto = ClassList[protoProp] = [],
+            classListGetter = function classListGetter() {
+          return new ClassList(this);
+        }; // Most DOMException implementations don't allow calling DOMException's toString()
+        // on non-DOMExceptions. Error's toString() is sufficient here.
+
+
+        DOMEx[protoProp] = Error[protoProp];
+
+        classListProto.item = function (i) {
+          return this[i] || null;
+        };
+
+        classListProto.contains = function (token) {
+          return ~checkTokenAndGetIndex(this, token + "");
+        };
+
+        classListProto.add = function () {
+          var tokens = arguments,
+              i = 0,
+              l = tokens.length,
+              token,
+              updated = false;
+
+          do {
+            token = tokens[i] + "";
+
+            if (!~checkTokenAndGetIndex(this, token)) {
+              this.push(token);
+              updated = true;
+            }
+          } while (++i < l);
+
+          if (updated) {
+            this._updateClassName();
+          }
+        };
+
+        classListProto.remove = function () {
+          var tokens = arguments,
+              i = 0,
+              l = tokens.length,
+              token,
+              updated = false,
+              index;
+
+          do {
+            token = tokens[i] + "";
+            index = checkTokenAndGetIndex(this, token);
+
+            while (~index) {
+              this.splice(index, 1);
+              updated = true;
+              index = checkTokenAndGetIndex(this, token);
+            }
+          } while (++i < l);
+
+          if (updated) {
+            this._updateClassName();
+          }
+        };
+
+        classListProto.toggle = function (token, force) {
+          var result = this.contains(token),
+              method = result ? force !== true && "remove" : force !== false && "add";
+
+          if (method) {
+            this[method](token);
+          }
+
+          if (force === true || force === false) {
+            return force;
+          } else {
+            return !result;
+          }
+        };
+
+        classListProto.replace = function (token, replacement_token) {
+          var index = checkTokenAndGetIndex(token + "");
+
+          if (~index) {
+            this.splice(index, 1, replacement_token);
+
+            this._updateClassName();
+          }
+        };
+
+        classListProto.toString = function () {
+          return this.join(" ");
+        };
+
+        if (objCtr.defineProperty) {
+          var classListPropDesc = {
+            get: classListGetter,
+            enumerable: true,
+            configurable: true
+          };
+
+          try {
+            objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
+          } catch (ex) {
+            // IE 8 doesn't support enumerable:true
+            // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36
+            // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected
+            if (ex.number === undefined || ex.number === -0x7FF5EC54) {
+              classListPropDesc.enumerable = false;
+              objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
+            }
+          }
+        } else if (objCtr[protoProp].__defineGetter__) {
+          elemCtrProto.__defineGetter__(classListProp, classListGetter);
+        }
+      })(self);
+    } // There is full or partial native classList support, so just check if we need
+    // to normalize the add/remove and toggle APIs.
+
+
+    (function () {
+
+      var testElement = document.createElement("_");
+      testElement.classList.add("c1", "c2"); // Polyfill for IE 10/11 and Firefox <26, where classList.add and
+      // classList.remove exist but support only one argument at a time.
+
+      if (!testElement.classList.contains("c2")) {
+        var createMethod = function createMethod(method) {
+          var original = DOMTokenList.prototype[method];
+
+          DOMTokenList.prototype[method] = function (token) {
+            var i,
+                len = arguments.length;
+
+            for (i = 0; i < len; i++) {
+              token = arguments[i];
+              original.call(this, token);
+            }
+          };
+        };
+
+        createMethod('add');
+        createMethod('remove');
+      }
+
+      testElement.classList.toggle("c3", false); // Polyfill for IE 10 and Firefox <24, where classList.toggle does not
+      // support the second argument.
+
+      if (testElement.classList.contains("c3")) {
+        var _toggle = DOMTokenList.prototype.toggle;
+
+        DOMTokenList.prototype.toggle = function (token, force) {
+          if (1 in arguments && !this.contains(token) === !force) {
+            return force;
+          } else {
+            return _toggle.call(this, token);
+          }
+        };
+      } // replace() polyfill
+
+
+      if (!("replace" in document.createElement("_").classList)) {
+        DOMTokenList.prototype.replace = function (token, replacement_token) {
+          var tokens = this.toString().split(" "),
+              index = tokens.indexOf(token + "");
+
+          if (~index) {
+            tokens = tokens.slice(index);
+            this.remove.apply(this, tokens);
+            this.add(replacement_token);
+            this.add.apply(this, tokens.slice(1));
+          }
+        };
+      }
+
+      testElement = null;
+    })();
+  }
+
+  /**
+  * Detect Element Resize
+  *
+  * https://github.com/sdecima/javascript-detect-element-resize
+  * Sebastian Decima
+  *
+  * version: 0.5.3
+  **/
+  (function () {
+    var stylesCreated = false;
+
+    function resetTriggers(element) {
+      var triggers = element.__resizeTriggers__,
+          expand = triggers.firstElementChild,
+          contract = triggers.lastElementChild,
+          expandChild = expand.firstElementChild;
+      contract.scrollLeft = contract.scrollWidth;
+      contract.scrollTop = contract.scrollHeight;
+      expandChild.style.width = expand.offsetWidth + 1 + 'px';
+      expandChild.style.height = expand.offsetHeight + 1 + 'px';
+      expand.scrollLeft = expand.scrollWidth;
+      expand.scrollTop = expand.scrollHeight;
+    }
+
+    function checkTriggers(element) {
+      return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;
+    }
+
+    function scrollListener(e) {
+      var element = this;
+      resetTriggers(this);
+      if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__);
+      this.__resizeRAF__ = requestFrame(function () {
+        if (checkTriggers(element)) {
+          element.__resizeLast__.width = element.offsetWidth;
+          element.__resizeLast__.height = element.offsetHeight;
+
+          element.__resizeListeners__.forEach(function (fn) {
+            fn.call(e);
+          });
+        }
+      });
+    }
+
+    function createStyles() {
+      if (!stylesCreated) {
+        // opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
+        var css = (animationKeyframes || '') + '.resize-triggers { ' + (animationStyle || '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
+            head = document.head || document.getElementsByTagName('head')[0],
+            style = document.createElement('style');
+        style.type = 'text/css';
+
+        if (style.styleSheet) {
+          style.styleSheet.cssText = css;
+        } else {
+          style.appendChild(document.createTextNode(css));
+        }
+
+        head.appendChild(style);
+        stylesCreated = true;
+      }
+    }
+
+    var requestFrame = function () {
+      var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (fn) {
+        return window.setTimeout(fn, 20);
+      };
+
+      return function (fn) {
+        return raf(fn);
+      };
+    }();
+
+    var cancelFrame = function () {
+      var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;
+      return function (id) {
+        return cancel(id);
+      };
+    }();
+    /* Detect CSS Animations support to detect element display/re-attach */
+
+
+    var animation = false,
+        keyframeprefix = '',
+        animationstartevent = 'animationstart',
+        domPrefixes = 'Webkit Moz O ms'.split(' '),
+        startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),
+        pfx = '';
+    {
+      var elm = document.createElement('fakeelement');
+
+      if (elm.style.animationName !== undefined) {
+        animation = true;
+      }
+
+      if (animation === false) {
+        for (var i = 0; i < domPrefixes.length; i++) {
+          if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
+            pfx = domPrefixes[i];
+            keyframeprefix = '-' + pfx.toLowerCase() + '-';
+            animationstartevent = startEvents[i];
+            break;
+          }
+        }
+      }
+    }
+    var animationName = 'resizeanim';
+    var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';
+    var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';
+
+    window.addResizeListener = function (element, fn) {
+      if (!element.__resizeTriggers__) {
+        if (getComputedStyle(element).position == 'static') element.style.position = 'relative';
+        createStyles();
+        element.__resizeLast__ = {};
+        element.__resizeListeners__ = [];
+        (element.__resizeTriggers__ = document.createElement('div')).className = 'resize-triggers';
+        element.__resizeTriggers__.innerHTML = '<div class="expand-trigger"><div></div></div>' + '<div class="contract-trigger"></div>';
+        element.appendChild(element.__resizeTriggers__);
+        resetTriggers(element);
+        element.addEventListener('scroll', scrollListener, true);
+        /* Listen for a css animation to detect element display/re-attach */
+
+        animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function (e) {
+          if (e.animationName == animationName) {
+            resetTriggers(element);
+          }
+        });
+      }
+
+      element.__resizeListeners__.push(fn);
+    };
+
+    window.removeResizeListener = function (element, fn) {
+      if (element) {
+        element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
+
+        if (!element.__resizeListeners__.length) {
+          element.removeEventListener('scroll', scrollListener);
+          element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
+        }
+      }
+    };
+  })();
+
+  window.Apex = {};
+  /**
+   *
+   * @module ApexCharts
+   **/
+
+  var ApexCharts$1 =
+  /*#__PURE__*/
+  function () {
+    function ApexCharts(el, opts) {
+      _classCallCheck(this, ApexCharts);
+
+      this.opts = opts;
+      this.ctx = this; // Pass the user supplied options to the Base Class where these options will be extended with defaults. The returned object from Base Class will become the config object in the entire codebase.
+
+      this.w = new Base(opts).init();
+      this.el = el;
+      this.w.globals.cuid = (Math.random() + 1).toString(36).substring(4);
+      this.w.globals.chartID = this.w.config.chart.id ? this.w.config.chart.id : this.w.globals.cuid;
+      this.initModules();
+      this.create = Utils.bind(this.create, this);
+      this.windowResizeHandler = this.windowResize.bind(this);
+    }
+    /**
+     * The primary method user will call to render the chart.
+     */
+
+
+    _createClass(ApexCharts, [{
+      key: "render",
+      value: function render() {
+        var _this = this;
+
+        // main method
+        return new Promise$1(function (resolve, reject) {
+          // only draw chart, if element found
+          if (_this.el !== null) {
+            if (typeof Apex._chartInstances === 'undefined') {
+              Apex._chartInstances = [];
+            }
+
+            if (_this.w.config.chart.id) {
+              Apex._chartInstances.push({
+                id: _this.w.globals.chartID,
+                group: _this.w.config.chart.group,
+                chart: _this
+              });
+            } // set the locale here
+
+
+            _this.setLocale(_this.w.config.chart.defaultLocale);
+
+            var beforeMount = _this.w.config.chart.events.beforeMount;
+
+            if (typeof beforeMount === 'function') {
+              beforeMount(_this, _this.w);
+            }
+
+            _this.fireEvent('beforeMount', [_this, _this.w]);
+
+            window.addEventListener('resize', _this.windowResizeHandler);
+            window.addResizeListener(_this.el.parentNode, _this.parentResizeCallback.bind(_this));
+
+            var graphData = _this.create(_this.w.config.series, {});
+
+            if (!graphData) return resolve(_this);
+
+            _this.mount(graphData).then(function () {
+              resolve(graphData);
+
+              if (typeof _this.w.config.chart.events.mounted === 'function') {
+                _this.w.config.chart.events.mounted(_this, _this.w);
+              }
+
+              _this.fireEvent('mounted', [_this, _this.w]);
+            }).catch(function (e) {
+              reject(e); // handle error in case no data or element not found
+            });
+          } else {
+            reject(new Error('Element not found'));
+          }
+        });
+      }
+    }, {
+      key: "initModules",
+      value: function initModules() {
+        this.animations = new Animations(this);
+        this.core = new Core(this.el, this);
+        this.grid = new Grid(this);
+        this.coreUtils = new CoreUtils(this);
+        this.config = new Config({});
+        this.crosshairs = new Crosshairs(this);
+        this.options = new Options();
+        this.responsive = new Responsive(this);
+        this.series = new Series(this);
+        this.theme = new Theme(this);
+        this.formatters = new Formatters(this);
+        this.titleSubtitle = new TitleSubtitle(this);
+        this.legend = new Legend(this);
+        this.toolbar = new Toolbar(this);
+        this.dimensions = new Dimensions(this);
+        this.zoomPanSelection = new ZoomPanSelection(this);
+        this.w.globals.tooltip = new Tooltip(this);
+      }
+    }, {
+      key: "addEventListener",
+      value: function addEventListener(name$$1, handler) {
+        var w = this.w;
+
+        if (w.globals.events.hasOwnProperty(name$$1)) {
+          w.globals.events[name$$1].push(handler);
+        } else {
+          w.globals.events[name$$1] = [handler];
+        }
+      }
+    }, {
+      key: "removeEventListener",
+      value: function removeEventListener(name$$1, handler) {
+        var w = this.w;
+
+        if (!w.globals.events.hasOwnProperty(name$$1)) {
+          return;
+        }
+
+        var index = w.globals.events[name$$1].indexOf(handler);
+
+        if (index !== -1) {
+          w.globals.events[name$$1].splice(index, 1);
+        }
+      }
+    }, {
+      key: "fireEvent",
+      value: function fireEvent(name$$1, args) {
+        var w = this.w;
+
+        if (!w.globals.events.hasOwnProperty(name$$1)) {
+          return;
+        }
+
+        if (!args || !args.length) {
+          args = [];
+        }
+
+        var evs = w.globals.events[name$$1];
+        var l = evs.length;
+
+        for (var i = 0; i < l; i++) {
+          evs[i].apply(null, args);
+        }
+      }
+    }, {
+      key: "create",
+      value: function create(ser, opts) {
+        var w = this.w;
+        this.initModules();
+        var gl = this.w.globals;
+        gl.noData = false;
+        gl.animationEnded = false;
+        this.responsive.checkResponsiveConfig(opts);
+
+        if (this.el === null) {
+          gl.animationEnded = true;
+          return null;
+        }
+
+        this.core.setupElements();
+
+        if (gl.svgWidth === 0) {
+          // if the element is hidden, skip drawing
+          gl.animationEnded = true;
+          return null;
+        }
+
+        var combo = CoreUtils.checkComboSeries(ser);
+        gl.comboCharts = combo.comboCharts;
+        gl.comboChartsHasBars = combo.comboChartsHasBars;
+
+        if (ser.length === 0 || ser.length === 1 && ser[0].data && ser[0].data.length === 0) {
+          this.series.handleNoData();
+        }
+
+        this.setupEventHandlers(); // Handle the data inputted by user and set some of the global variables (for eg, if data is datetime / numeric / category). Don't calculate the range / min / max at this time
+
+        this.core.parseData(ser); // this is a good time to set theme colors first
+
+        this.theme.init(); // as markers accepts array, we need to setup global markers for easier access
+
+        var markers = new Markers(this);
+        markers.setGlobalMarkerSize(); // labelFormatters should be called before dimensions as in dimensions we need text labels width
+
+        this.formatters.setLabelFormatters();
+        this.titleSubtitle.draw(); // legend is calculated here before coreCalculations because it affects the plottable area
+
+        this.legend.init(); // check whether in multiple series, all series share the same X
+
+        this.series.hasAllSeriesEqualX(); // coreCalculations will give the min/max range and yaxis/axis values. It should be called here to set series variable from config to globals
+
+        if (gl.axisCharts) {
+          this.core.coreCalculations();
+
+          if (w.config.xaxis.type !== 'category') {
+            // as we have minX and maxX values, determine the default DateTimeFormat for time series
+            this.formatters.setLabelFormatters();
+          }
+        } // we need to generate yaxis for heatmap separately as we are not showing numerics there, but seriesNames. There are some tweaks which are required for heatmap to align labels correctly which are done in below function
+        // Also we need to do this before calcuting Dimentions plotCoords() method of Dimensions
+
+
+        this.formatters.heatmapLabelFormatters(); // We got plottable area here, next task would be to calculate axis areas
+
+        this.dimensions.plotCoords();
+        var xyRatios = this.core.xySettings();
+        this.grid.createGridMask();
+        var elGraph = this.core.plotChartType(ser, xyRatios); // after all the drawing calculations, shift the graphical area (actual charts/bars) excluding legends
+
+        this.core.shiftGraphPosition();
+        var dim = {
+          plot: {
+            left: w.globals.translateX,
+            top: w.globals.translateY,
+            width: w.globals.gridWidth,
+            height: w.globals.gridHeight
+          }
+        };
+        return {
+          elGraph: elGraph,
+          xyRatios: xyRatios,
+          elInner: w.globals.dom.elGraphical,
+          dimensions: dim
+        };
+      }
+    }, {
+      key: "mount",
+      value: function mount() {
+        var graphData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+        var me = this;
+        var w = me.w;
+        return new Promise$1(function (resolve, reject) {
+          // no data to display
+          if (me.el === null) {
+            return reject(new Error('Not enough data to display or target element not found'));
+          } else if (graphData === null || w.globals.allSeriesCollapsed) {
+            me.series.handleNoData();
+          }
+
+          me.annotations = new Annotations(me);
+          me.core.drawAxis(w.config.chart.type, graphData.xyRatios);
+          me.grid = new Grid(me);
+
+          if (w.config.grid.position === 'back') {
+            me.grid.drawGrid();
+          }
+
+          if (w.config.annotations.position === 'back') {
+            me.annotations.drawAnnotations();
+          }
+
+          if (graphData.elGraph instanceof Array) {
+            for (var g = 0; g < graphData.elGraph.length; g++) {
+              w.globals.dom.elGraphical.add(graphData.elGraph[g]);
+            }
+          } else {
+            w.globals.dom.elGraphical.add(graphData.elGraph);
+          }
+
+          if (w.config.grid.position === 'front') {
+            me.grid.drawGrid();
+          }
+
+          if (w.config.xaxis.crosshairs.position === 'front') {
+            me.crosshairs.drawXCrosshairs();
+          }
+
+          if (w.config.yaxis[0].crosshairs.position === 'front') {
+            me.crosshairs.drawYCrosshairs();
+          }
+
+          if (w.config.annotations.position === 'front') {
+            me.annotations.drawAnnotations();
+          }
+
+          if (!w.globals.noData) {
+            // draw tooltips at the end
+            if (w.config.tooltip.enabled && !w.globals.noData) {
+              me.w.globals.tooltip.drawTooltip(graphData.xyRatios);
+            }
+
+            if (w.globals.axisCharts && w.globals.isXNumeric) {
+              if (w.config.chart.zoom.enabled || w.config.chart.selection && w.config.chart.selection.enabled || w.config.chart.pan && w.config.chart.pan.enabled) {
+                me.zoomPanSelection.init({
+                  xyRatios: graphData.xyRatios
+                });
+              }
+            } else {
+              var tools = w.config.chart.toolbar.tools;
+              tools.zoom = false;
+              tools.zoomin = false;
+              tools.zoomout = false;
+              tools.selection = false;
+              tools.pan = false;
+              tools.reset = false;
+            }
+
+            if (w.config.chart.toolbar.show && !w.globals.allSeriesCollapsed) {
+              me.toolbar.createToolbar();
+            }
+          }
+
+          if (w.globals.memory.methodsToExec.length > 0) {
+            w.globals.memory.methodsToExec.forEach(function (fn) {
+              fn.method(fn.params, false, fn.context);
+            });
+          }
+
+          resolve(me);
+        });
+      }
+    }, {
+      key: "clearPreviousPaths",
+      value: function clearPreviousPaths() {
+        var w = this.w;
+        w.globals.previousPaths = [];
+        w.globals.allSeriesCollapsed = false;
+        w.globals.collapsedSeries = [];
+        w.globals.collapsedSeriesIndices = [];
+      }
+      /**
+       * Allows users to update Options after the chart has rendered.
+       *
+       * @param {object} options - A new config object can be passed which will be merged with the existing config object
+       * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there
+       * @param {boolean} animate - should animate or not on updating Options
+       */
+
+    }, {
+      key: "updateOptions",
+      value: function updateOptions(options$$1) {
+        var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+        var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+        var overwriteInitialConfig = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
+        var w = this.w;
+
+        if (options$$1.series) {
+          if (options$$1.series[0].data) {
+            options$$1.series = options$$1.series.map(function (s, i) {
+              return _objectSpread({}, w.config.series[i], {
+                name: s.name ? s.name : w.config.series[i] && w.config.series[i].name,
+                type: s.type ? s.type : w.config.series[i] && w.config.series[i].type,
+                data: s.data ? s.data : w.config.series[i] && w.config.series[i].data
+              });
+            });
+          } // user updated the series via updateOptions() function.
+          // Hence, we need to reset axis min/max to avoid zooming issues
+
+
+          this.revertDefaultAxisMinMax();
+        } // user has set x-axis min/max externally - hence we need to forcefully set the xaxis min/max
+
+
+        if (options$$1.xaxis) {
+          if (options$$1.xaxis.min || options$$1.xaxis.max) {
+            this.forceXAxisUpdate(options$$1);
+          }
+          /* fixes apexcharts.js#369 and react-apexcharts#46 */
+
+
+          if (options$$1.xaxis.categories && options$$1.xaxis.categories.length && w.config.xaxis.convertedCatToNumeric) {
+            options$$1 = Defaults.convertCatToNumeric(options$$1);
+          }
+        }
+
+        if (w.globals.collapsedSeriesIndices.length > 0) {
+          this.clearPreviousPaths();
+        }
+        /* update theme mode#459 */
+
+
+        if (options$$1.theme) {
+          options$$1 = this.theme.updateThemeOptions(options$$1);
+        }
+
+        return this._updateOptions(options$$1, redraw, animate, overwriteInitialConfig);
+      }
+      /**
+       * private method to update Options.
+       *
+       * @param {object} options - A new config object can be passed which will be merged with the existing config object
+       * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there
+       * @param {boolean} animate - should animate or not on updating Options
+       * @param {boolean} overwriteInitialConfig - should update the initial config or not
+       */
+
+    }, {
+      key: "_updateOptions",
+      value: function _updateOptions(options$$1) {
+        var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+        var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+        var overwriteInitialConfig = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
+        var charts = this.getSyncedCharts();
+        charts.forEach(function (ch) {
+          var w = ch.w;
+          w.globals.shouldAnimate = animate;
+
+          if (!redraw) {
+            w.globals.resized = true;
+            w.globals.dataChanged = true;
+
+            if (animate) {
+              ch.series.getPreviousPaths();
+            }
+          }
+
+          if (options$$1 && _typeof(options$$1) === 'object') {
+            ch.config = new Config(options$$1);
+            options$$1 = CoreUtils.extendArrayProps(ch.config, options$$1);
+            w.config = Utils.extend(w.config, options$$1);
+
+            if (overwriteInitialConfig) {
+              // we need to forget the lastXAxis and lastYAxis is user forcefully overwriteInitialConfig. If we do not do this, and next time when user zooms the chart after setting yaxis.min/max or xaxis.min/max - the stored lastXAxis will never allow the chart to use the updated min/max by user.
+              w.globals.lastXAxis = [];
+              w.globals.lastYAxis = []; // After forgetting lastAxes, we need to restore the new config in initialConfig/initialSeries
+
+              w.globals.initialConfig = Utils.extend({}, w.config);
+              w.globals.initialSeries = JSON.parse(JSON.stringify(w.config.series));
+            }
+          }
+
+          return ch.update(options$$1);
+        });
+      }
+      /**
+       * Allows users to update Series after the chart has rendered.
+       *
+       * @param {array} series - New series which will override the existing
+       */
+
+    }, {
+      key: "updateSeries",
+      value: function updateSeries() {
+        var newSeries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+        var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+        var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+        this.revertDefaultAxisMinMax();
+        return this._updateSeries(newSeries, animate, overwriteInitialSeries);
+      }
+      /**
+       * Allows users to append a new series after the chart has rendered.
+       *
+       * @param {array} newSerie - New serie which will be appended to the existing series
+       */
+
+    }, {
+      key: "appendSeries",
+      value: function appendSeries(newSerie) {
+        var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+        var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+        var newSeries = this.w.config.series.slice();
+        newSeries.push(newSerie);
+        this.revertDefaultAxisMinMax();
+        return this._updateSeries(newSeries, animate, overwriteInitialSeries);
+      }
+      /**
+       * Private method to update Series.
+       *
+       * @param {array} series - New series which will override the existing
+       */
+
+    }, {
+      key: "_updateSeries",
+      value: function _updateSeries(newSeries, animate) {
+        var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+        var w = this.w;
+        this.w.globals.shouldAnimate = animate;
+        w.globals.dataChanged = true; // if user has collapsed some series with legend, we need to clear those
+
+        if (w.globals.allSeriesCollapsed) {
+          w.globals.allSeriesCollapsed = false;
+        }
+
+        if (animate) {
+          this.series.getPreviousPaths();
+        }
+
+        var existingSeries; // axis charts
+
+        if (w.globals.axisCharts) {
+          existingSeries = newSeries.map(function (s, i) {
+            return _objectSpread({}, w.config.series[i], {
+              name: s.name ? s.name : w.config.series[i] && w.config.series[i].name,
+              type: s.type ? s.type : w.config.series[i] && w.config.series[i].type,
+              data: s.data ? s.data : w.config.series[i] && w.config.series[i].data
+            });
+          });
+
+          if (existingSeries.length === 0) {
+            existingSeries = [{
+              data: []
+            }];
+          }
+
+          w.config.series = existingSeries;
+        } else {
+          // non-axis chart (pie/radialbar)
+          w.config.series = newSeries.slice();
+        }
+
+        if (overwriteInitialSeries) {
+          w.globals.initialConfig.series = JSON.parse(JSON.stringify(w.config.series));
+          w.globals.initialSeries = JSON.parse(JSON.stringify(w.config.series));
+        }
+
+        return this.update();
+      }
+      /**
+       * Get all charts in the same "group" (including the instance which is called upon) to sync them when user zooms in/out or pan.
+       */
+
+    }, {
+      key: "getSyncedCharts",
+      value: function getSyncedCharts() {
+        var chartGroups = this.getGroupedCharts();
+        var allCharts = [this];
+
+        if (chartGroups.length) {
+          allCharts = [];
+          chartGroups.forEach(function (ch) {
+            allCharts.push(ch);
+          });
+        }
+
+        return allCharts;
+      }
+      /**
+       * Get charts in the same "group" (excluding the instance which is called upon) to perform operations on the other charts of the same group (eg., tooltip hovering)
+       */
+
+    }, {
+      key: "getGroupedCharts",
+      value: function getGroupedCharts() {
+        var _this2 = this;
+
+        return Apex._chartInstances.filter(function (ch) {
+          if (ch.group) {
+            return true;
+          }
+        }).map(function (ch) {
+          return _this2.w.config.chart.group === ch.group ? ch.chart : _this2;
+        });
+      }
+      /**
+       * Allows users to append Data to series.
+       *
+       * @param {array} newData - New data in the same format as series
+       */
+
+    }, {
+      key: "appendData",
+      value: function appendData(newData) {
+        var overwriteInitialSeries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+        var me = this;
+        me.w.globals.dataChanged = true;
+        me.series.getPreviousPaths();
+        var newSeries = me.w.config.series.slice();
+
+        for (var i = 0; i < newSeries.length; i++) {
+          if (typeof newData[i] !== 'undefined') {
+            for (var j = 0; j < newData[i].data.length; j++) {
+              newSeries[i].data.push(newData[i].data[j]);
+            }
+          }
+        }
+
+        me.w.config.series = newSeries;
+
+        if (overwriteInitialSeries) {
+          me.w.globals.initialSeries = JSON.parse(JSON.stringify(me.w.config.series));
+        }
+
+        return this.update();
+      }
+    }, {
+      key: "update",
+      value: function update(options$$1) {
+        var _this3 = this;
+
+        return new Promise$1(function (resolve, reject) {
+          _this3.clear();
+
+          var graphData = _this3.create(_this3.w.config.series, options$$1);
+
+          if (!graphData) return resolve(_this3);
+
+          _this3.mount(graphData).then(function () {
+            if (typeof _this3.w.config.chart.events.updated === 'function') {
+              _this3.w.config.chart.events.updated(_this3, _this3.w);
+            }
+
+            _this3.fireEvent('updated', [_this3, _this3.w]);
+
+            _this3.w.globals.isDirty = true;
+            resolve(_this3);
+          }).catch(function (e) {
+            reject(e);
+          });
+        });
+      }
+    }, {
+      key: "forceXAxisUpdate",
+      value: function forceXAxisUpdate(options$$1) {
+        var w = this.w;
+
+        if (typeof options$$1.xaxis.min !== 'undefined') {
+          w.config.xaxis.min = options$$1.xaxis.min;
+          w.globals.lastXAxis.min = options$$1.xaxis.min;
+        }
+
+        if (typeof options$$1.xaxis.max !== 'undefined') {
+          w.config.xaxis.max = options$$1.xaxis.max;
+          w.globals.lastXAxis.max = options$$1.xaxis.max;
+        }
+      }
+      /**
+       * This function reverts the yaxis and xaxis min/max values to what it was when the chart was defined.
+       * This function fixes an important bug where a user might load a new series after zooming in/out of previous series which resulted in wrong min/max
+       * Also, this should never be called internally on zoom/pan - the reset should only happen when user calls the updateSeries() function externally
+       */
+
+    }, {
+      key: "revertDefaultAxisMinMax",
+      value: function revertDefaultAxisMinMax() {
+        var w = this.w;
+        w.config.xaxis.min = w.globals.lastXAxis.min;
+        w.config.xaxis.max = w.globals.lastXAxis.max;
+        w.config.yaxis.map(function (yaxe, index) {
+          if (w.globals.zoomed) {
+            // if user has zoomed, and this function is called
+            // then we need to get the lastAxis min and max
+            if (typeof w.globals.lastYAxis[index] !== 'undefined') {
+              yaxe.min = w.globals.lastYAxis[index].min;
+              yaxe.max = w.globals.lastYAxis[index].max;
+            }
+          }
+        });
+      }
+    }, {
+      key: "clear",
+      value: function clear() {
+        if (this.zoomPanSelection) {
+          this.zoomPanSelection.destroy();
+        }
+
+        if (this.toolbar) {
+          this.toolbar.destroy();
+        }
+
+        this.animations = null;
+        this.annotations = null;
+        this.core = null;
+        this.grid = null;
+        this.series = null;
+        this.responsive = null;
+        this.theme = null;
+        this.formatters = null;
+        this.titleSubtitle = null;
+        this.legend = null;
+        this.dimensions = null;
+        this.options = null;
+        this.crosshairs = null;
+        this.zoomPanSelection = null;
+        this.toolbar = null;
+        this.w.globals.tooltip = null;
+        this.clearDomElements();
+      }
+    }, {
+      key: "killSVG",
+      value: function killSVG(draw) {
+        return new Promise$1(function (resolve, reject) {
+          draw.each(function (i, children) {
+            this.removeClass('*');
+            this.off();
+            this.stop();
+          }, true);
+          draw.ungroup();
+          draw.clear();
+          resolve('done');
+        });
+      }
+    }, {
+      key: "clearDomElements",
+      value: function clearDomElements() {
+        var domEls = this.w.globals.dom;
+
+        if (this.el !== null) {
+          // remove all child elements - resetting the whole chart
+          while (this.el.firstChild) {
+            this.el.removeChild(this.el.firstChild);
+          }
+        }
+
+        this.killSVG(domEls.Paper);
+        domEls.Paper.remove();
+        domEls.elWrap = null;
+        domEls.elGraphical = null;
+        domEls.elLegendWrap = null;
+        domEls.baseEl = null;
+        domEls.elGridRect = null;
+        domEls.elGridRectMask = null;
+        domEls.elGridRectMarkerMask = null;
+        domEls.elDefs = null;
+      }
+      /**
+       * Destroy the chart instance by removing all elements which also clean up event listeners on those elements.
+       */
+
+    }, {
+      key: "destroy",
+      value: function destroy() {
+        this.clear(); // remove the chart's instance from the global Apex._chartInstances
+
+        var chartID = this.w.config.chart.id;
+
+        if (chartID) {
+          Apex._chartInstances.forEach(function (c, i) {
+            if (c.id === chartID) {
+              Apex._chartInstances.splice(i, 1);
+            }
+          });
+        }
+
+        window.removeEventListener('resize', this.windowResizeHandler);
+        window.removeResizeListener(this.el.parentNode, this.parentResizeCallback.bind(this));
+      }
+      /**
+       * Allows the user to provide data attrs in the element and the chart will render automatically when this method is called by searching for the elements containing 'data-apexcharts' attribute
+       */
+
+    }, {
+      key: "toggleSeries",
+      value: function toggleSeries(seriesName) {
+        var targetElement = this.series.getSeriesByName(seriesName);
+        var seriesCnt = parseInt(targetElement.getAttribute('data:realIndex'));
+        var isHidden = targetElement.classList.contains('apexcharts-series-collapsed');
+        this.legend.toggleDataSeries(seriesCnt, isHidden);
+      }
+    }, {
+      key: "resetToggleSeries",
+      value: function resetToggleSeries() {
+        this.legend.resetToggleDataSeries();
+      }
+    }, {
+      key: "setupEventHandlers",
+      value: function setupEventHandlers() {
+        var w = this.w;
+        var me = this;
+        var clickableArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass);
+        var eventList = ['mousedown', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend'];
+        eventList.forEach(function (event) {
+          clickableArea.addEventListener(event, function (e) {
+            if (e.type === 'mousedown' && e.which === 1) ; else if (e.type === 'mouseup' && e.which === 1 || e.type === 'touchend') {
+              if (typeof w.config.chart.events.click === 'function') {
+                w.config.chart.events.click(e, me, w);
+              }
+
+              me.fireEvent('click', [e, me, w]);
+            }
+          }, {
+            capture: false,
+            passive: true
+          });
+        });
+        eventList.forEach(function (event) {
+          document.addEventListener(event, function (e) {
+            w.globals.clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;
+            w.globals.clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY;
+          });
+        });
+        this.core.setupBrushHandler();
+      }
+    }, {
+      key: "addXaxisAnnotation",
+      value: function addXaxisAnnotation(opts) {
+        var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+        var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+        var me = this;
+
+        if (context) {
+          me = context;
+        }
+
+        me.annotations.addXaxisAnnotationExternal(opts, pushToMemory, me);
+      }
+    }, {
+      key: "addYaxisAnnotation",
+      value: function addYaxisAnnotation(opts) {
+        var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+        var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+        var me = this;
+
+        if (context) {
+          me = context;
+        }
+
+        me.annotations.addYaxisAnnotationExternal(opts, pushToMemory, me);
+      }
+    }, {
+      key: "addPointAnnotation",
+      value: function addPointAnnotation(opts) {
+        var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+        var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+        var me = this;
+
+        if (context) {
+          me = context;
+        }
+
+        me.annotations.addPointAnnotationExternal(opts, pushToMemory, me);
+      }
+    }, {
+      key: "clearAnnotations",
+      value: function clearAnnotations() {
+        var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+        var me = this;
+
+        if (context) {
+          me = context;
+        }
+
+        me.annotations.clearAnnotations(me);
+      } // This method is never used internally and will be only called externally on the chart instance.
+      // Hence, we need to keep all these elements in memory when the chart gets updated and redraw again
+
+    }, {
+      key: "addText",
+      value: function addText(options$$1) {
+        var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+        var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+        var me = this;
+
+        if (context) {
+          me = context;
+        }
+
+        me.annotations.addText(options$$1, pushToMemory, me);
+      }
+    }, {
+      key: "getChartArea",
+      value: function getChartArea() {
+        var el = this.w.globals.dom.baseEl.querySelector('.apexcharts-inner');
+        return el;
+      }
+    }, {
+      key: "getSeriesTotalXRange",
+      value: function getSeriesTotalXRange(minX, maxX) {
+        return this.coreUtils.getSeriesTotalsXRange(minX, maxX);
+      }
+    }, {
+      key: "getHighestValueInSeries",
+      value: function getHighestValueInSeries() {
+        var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+        var range = new Range$1(this.ctx);
+        var minYmaxY = range.getMinYMaxY(seriesIndex);
+        return minYmaxY.highestY;
+      }
+    }, {
+      key: "getLowestValueInSeries",
+      value: function getLowestValueInSeries() {
+        var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+        var range = new Range$1(this.ctx);
+        var minYmaxY = range.getMinYMaxY(seriesIndex);
+        return minYmaxY.lowestY;
+      }
+    }, {
+      key: "getSeriesTotal",
+      value: function getSeriesTotal() {
+        return this.w.globals.seriesTotals;
+      }
+    }, {
+      key: "setLocale",
+      value: function setLocale(localeName) {
+        this.setCurrentLocaleValues(localeName);
+      }
+    }, {
+      key: "setCurrentLocaleValues",
+      value: function setCurrentLocaleValues(localeName) {
+        var locales = this.w.config.chart.locales; // check if user has specified locales in global Apex variable
+        // if yes - then extend those with local chart's locale
+
+        if (window.Apex.chart && window.Apex.chart.locales && window.Apex.chart.locales.length > 0) {
+          locales = this.w.config.chart.locales.concat(window.Apex.chart.locales);
+        } // find the locale from the array of locales which user has set (either by chart.defaultLocale or by calling setLocale() method.)
+
+
+        var selectedLocale = locales.filter(function (c) {
+          return c.name === localeName;
+        })[0];
+
+        if (selectedLocale) {
+          // create a complete locale object by extending defaults so you don't get undefined errors.
+          var ret = Utils.extend(en, selectedLocale); // store these locale options in global var for ease access
+
+          this.w.globals.locale = ret.options;
+        } else {
+          throw new Error('Wrong locale name provided. Please make sure you set the correct locale name in options');
+        }
+      }
+    }, {
+      key: "dataURI",
+      value: function dataURI() {
+        var exp = new Exports(this.ctx);
+        return exp.dataURI();
+      }
+    }, {
+      key: "paper",
+      value: function paper() {
+        return this.w.globals.dom.Paper;
+      }
+    }, {
+      key: "parentResizeCallback",
+      value: function parentResizeCallback() {
+        if (this.w.globals.animationEnded) {
+          this.windowResize();
+        }
+      }
+      /**
+       * Handle window resize and re-draw the whole chart.
+       */
+
+    }, {
+      key: "windowResize",
+      value: function windowResize() {
+        var _this4 = this;
+
+        clearTimeout(this.w.globals.resizeTimer);
+        this.w.globals.resizeTimer = window.setTimeout(function () {
+          _this4.w.globals.resized = true;
+          _this4.w.globals.dataChanged = false; // we need to redraw the whole chart on window resize (with a small delay).
+
+          _this4.update();
+        }, 150);
+      }
+    }], [{
+      key: "initOnLoad",
+      value: function initOnLoad() {
+        var els = document.querySelectorAll('[data-apexcharts]');
+
+        for (var i = 0; i < els.length; i++) {
+          var el = els[i];
+          var options$$1 = JSON.parse(els[i].getAttribute('data-options'));
+          var apexChart = new ApexCharts(el, options$$1);
+          apexChart.render();
+        }
+      }
+      /**
+       * This static method allows users to call chart methods without necessarily from the
+       * instance of the chart in case user has assigned chartID to the targetted chart.
+       * The chartID is used for mapping the instance stored in Apex._chartInstances global variable
+       *
+       * This is helpful in cases when you don't have reference of the chart instance
+       * easily and need to call the method from anywhere.
+       * For eg, in React/Vue applications when you have many parent/child components,
+       * and need easy reference to other charts for performing dynamic operations
+       *
+       * @param {string} chartID - The unique identifier which will be used to call methods
+       * on that chart instance
+       * @param {function} fn - The method name to call
+       * @param {object} opts - The parameters which are accepted in the original method will be passed here in the same order.
+       */
+
+    }, {
+      key: "exec",
+      value: function exec(chartID, fn) {
+        var chart = this.getChartByID(chartID);
+        if (!chart) return;
+
+        for (var _len = arguments.length, opts = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
+          opts[_key - 2] = arguments[_key];
+        }
+
+        switch (fn) {
+          case 'updateOptions':
+            {
+              return chart.updateOptions.apply(chart, opts);
+            }
+
+          case 'updateSeries':
+            {
+              return chart.updateSeries.apply(chart, opts);
+            }
+
+          case 'appendData':
+            {
+              return chart.appendData.apply(chart, opts);
+            }
+
+          case 'appendSeries':
+            {
+              return chart.appendSeries.apply(chart, opts);
+            }
+
+          case 'toggleSeries':
+            {
+              return chart.toggleSeries.apply(chart, opts);
+            }
+
+          case 'dataURI':
+            {
+              return chart.dataURI.apply(chart, opts);
+            }
+
+          case 'addXaxisAnnotation':
+            {
+              return chart.addXaxisAnnotation.apply(chart, opts);
+            }
+
+          case 'addYaxisAnnotation':
+            {
+              return chart.addYaxisAnnotation.apply(chart, opts);
+            }
+
+          case 'addPointAnnotation':
+            {
+              return chart.addPointAnnotation.apply(chart, opts);
+            }
+
+          case 'addText':
+            {
+              return chart.addText.apply(chart, opts);
+            }
+
+          case 'clearAnnotations':
+            {
+              return chart.clearAnnotations.apply(chart, opts);
+            }
+
+          case 'paper':
+            {
+              return chart.paper.apply(chart, opts);
+            }
+
+          case 'destroy':
+            {
+              return chart.destroy();
+            }
+        }
+      }
+    }, {
+      key: "merge",
+      value: function merge(target, source) {
+        return Utils.extend(target, source);
+      }
+    }, {
+      key: "getChartByID",
+      value: function getChartByID(chartID) {
+        var c = Apex._chartInstances.filter(function (ch) {
+          return ch.id === chartID;
+        })[0];
+
+        return c.chart;
+      }
+    }]);
+
+    return ApexCharts;
+  }();
+
+  return ApexCharts$1;
+
+}));
Index: public/vendors/charts/apex/apexcharts.min.js
===================================================================
--- public/vendors/charts/apex/apexcharts.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/apexcharts.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ * ApexCharts v3.6.12
+ * (c) 2018-2019 Juned Chhipa
+ * Released under the MIT License.
+ */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).ApexCharts=e()}(this,function(){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var i=0;i<e.length;i++){var s=e[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(t,s.key,s)}}function s(t,e,s){return e&&i(t.prototype,e),s&&i(t,s),t}function a(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function n(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{},s=Object.keys(i);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(i).filter(function(t){return Object.getOwnPropertyDescriptor(i,t).enumerable}))),s.forEach(function(e){a(t,e,i[e])})}return t}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&l(t,e)}function o(t){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function l(t,e){return(l=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function c(t){return function(t){if(Array.isArray(t)){for(var e=0,i=new Array(t.length);e<t.length;e++)i[e]=t[e];return i}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var d=function(){function i(){e(this,i)}return s(i,[{key:"shadeRGBColor",value:function(t,e){var i=e.split(","),s=t<0?0:255,a=t<0?-1*t:t,n=parseInt(i[0].slice(4)),r=parseInt(i[1]),o=parseInt(i[2]);return"rgb("+(Math.round((s-n)*a)+n)+","+(Math.round((s-r)*a)+r)+","+(Math.round((s-o)*a)+o)+")"}},{key:"shadeHexColor",value:function(t,e){var i=parseInt(e.slice(1),16),s=t<0?0:255,a=t<0?-1*t:t,n=i>>16,r=i>>8&255,o=255&i;return"#"+(16777216+65536*(Math.round((s-n)*a)+n)+256*(Math.round((s-r)*a)+r)+(Math.round((s-o)*a)+o)).toString(16).slice(1)}},{key:"shadeColor",value:function(t,e){return e.length>7?this.shadeRGBColor(t,e):this.shadeHexColor(t,e)}}],[{key:"bind",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:"isObject",value:function(e){return e&&"object"===t(e)&&!Array.isArray(e)&&null!=e}},{key:"listToArray",value:function(t){var e,i=[];for(e=0;e<t.length;e++)i[e]=t[e];return i}},{key:"extend",value:function(t,e){var i=this;"function"!=typeof Object.assign&&(Object.assign=function(t){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),i=1;i<arguments.length;i++){var s=arguments[i];if(null!=s)for(var a in s)s.hasOwnProperty(a)&&(e[a]=s[a])}return e});var s=Object.assign({},t);return this.isObject(t)&&this.isObject(e)&&Object.keys(e).forEach(function(n){i.isObject(e[n])&&n in t?s[n]=i.extend(t[n],e[n]):Object.assign(s,a({},n,e[n]))}),s}},{key:"extendArray",value:function(t,e){var s=[];return t.map(function(t){s.push(i.extend(e,t))}),t=s}},{key:"monthMod",value:function(t){return t%12}},{key:"addProps",value:function(t,e,i){"string"==typeof e&&(e=e.split(".")),t[e[0]]=t[e[0]]||{};var s=t[e[0]];return e.length>1?(e.shift(),this.addProps(s,e,i)):t[e[0]]=i,t}},{key:"clone",value:function(e){if("[object Array]"===Object.prototype.toString.call(e)){for(var i=[],s=0;s<e.length;s++)i[s]=this.clone(e[s]);return i}if("object"===t(e)){var a={};for(var n in e)e.hasOwnProperty(n)&&(a[n]=this.clone(e[n]));return a}return e}},{key:"log10",value:function(t){return Math.log(t)/Math.LN10}},{key:"roundToBase10",value:function(t){return Math.pow(10,Math.floor(Math.log10(t)))}},{key:"roundToBase",value:function(t,e){return Math.pow(e,Math.floor(Math.log(t)/Math.log(e)))}},{key:"parseNumber",value:function(t){return null===t?t:parseFloat(t)}},{key:"noExponents",value:function(t){var e=String(t).split(/[eE]/);if(1==e.length)return e[0];var i="",s=t<0?"-":"",a=e[0].replace(".",""),n=Number(e[1])+1;if(n<0){for(i=s+"0.";n++;)i+="0";return i+a.replace(/^\-/,"")}for(n-=a.length;n--;)i+="0";return a+i}},{key:"getDimensions",value:function(t){var e=getComputedStyle(t),i=[],s=t.clientHeight,a=t.clientWidth;return s-=parseFloat(e.paddingTop)+parseFloat(e.paddingBottom),a-=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight),i.push(a),i.push(s),i}},{key:"getBoundingClientRect",value:function(t){var e=t.getBoundingClientRect();return{top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:e.width,height:e.height,x:e.x,y:e.y}}},{key:"hexToRgba",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#999999",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;"#"!==t.substring(0,1)&&(t="#999999");var i=t.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var s=0;s<i.length;s++)i[s]=parseInt(1===i[s].length?i[s]+i[s]:i[s],16);return void 0!==e&&i.push(e),"rgba("+i.join(",")+")"}},{key:"getOpacityFromRGBA",value:function(t){return(t=t.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))[3]}},{key:"rgb2hex",value:function(t){return(t=t.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===t.length?"#"+("0"+parseInt(t[1],10).toString(16)).slice(-2)+("0"+parseInt(t[2],10).toString(16)).slice(-2)+("0"+parseInt(t[3],10).toString(16)).slice(-2):""}},{key:"isColorHex",value:function(t){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t)}},{key:"polarToCartesian",value:function(t,e,i,s){var a=(s-90)*Math.PI/180;return{x:t+i*Math.cos(a),y:e+i*Math.sin(a)}}},{key:"escapeString",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"x",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi,e)}},{key:"negToZero",value:function(t){return t<0?0:t}},{key:"moveIndexInArray",value:function(t,e,i){if(i>=t.length)for(var s=i-t.length+1;s--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:"extractNumber",value:function(t){return parseFloat(t.replace(/[^\d\.]*/g,""))}},{key:"randomString",value:function(t){for(var e="",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",s=0;s<t;s++)e+=i.charAt(Math.floor(Math.random()*i.length));return e}},{key:"findAncestor",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:"setELstyles",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:"isNumber",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:"isFloat",value:function(t){return Number(t)===t&&t%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(-1!==window.navigator.userAgent.indexOf("MSIE")||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var i=t.indexOf("rv:");return parseInt(t.substring(i+3,t.indexOf(".",i)),10)}var s=t.indexOf("Edge/");return s>0&&parseInt(t.substring(s+5,t.indexOf(".",s)),10)}}]),i}(),u=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"getDefaultFilter",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size("120%","180%","-5%","-40%"),"none"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addNormalFilter",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addLightenFilter",value:function(t,e,i){var s=this,a=this.w,n=i.intensity;if(!d.isFirefox()){t.unfilter(!0);var r=new window.SVG.Filter;r.size("120%","180%","-5%","-40%"),t.filter(function(t){var i=a.config.chart.dropShadow;(r=i.enabled?s.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:n}})}),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse")}}},{key:"addDarkenFilter",value:function(t,e,i){var s=this,a=this.w,n=i.intensity;if(!d.isFirefox()){t.unfilter(!0);var r=new window.SVG.Filter;r.size("120%","180%","-5%","-40%"),t.filter(function(t){var i=a.config.chart.dropShadow;(r=i.enabled?s.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:n}})}),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse")}}},{key:"applyFilter",value:function(t,e,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(t,e);break;case"lighten":this.addLightenFilter(t,e,{intensity:s});break;case"darken":this.addDarkenFilter(t,e,{intensity:s})}}},{key:"addShadow",value:function(t,e,i){var s=i.blur,a=i.top,n=i.left,r=i.color,o=i.opacity,l=t.flood(Array.isArray(r)?r[e]:r,o).composite(t.sourceAlpha,"in").offset(n,a).gaussianBlur(s).merge(t.source);return t.blend(t.source,l)}},{key:"dropShadow",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=e.top,a=e.left,n=e.blur,r=e.color,o=e.opacity,l=e.noUserSpaceOnUse;return t.unfilter(!0),r=Array.isArray(r)?r[i]:r,(new window.SVG.Filter).size("120%","180%","-5%","-40%"),t.filter(function(t){var e=null;e=d.isSafari()||d.isFirefox()||d.isIE()?t.flood(r,o).composite(t.sourceAlpha,"in").offset(a,s).gaussianBlur(n):t.flood(r,o).composite(t.sourceAlpha,"in").offset(a,s).gaussianBlur(n).merge(t.source),t.blend(t.source,e)}),l||t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),t}},{key:"setSelectionFilter",value:function(t,e,i){var s=this.w;if(void 0!==s.globals.selectedDataPoints[e]&&s.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute("selected",!0);var a=s.config.states.active.filter;"none"!==a&&this.applyFilter(t,e,a.type,a.value)}}}]),t}(),g=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.setEasingFunctions()}return s(t,[{key:"setEasingFunctions",value:function(){var t;switch(this.w.config.chart.animations.easing){case"linear":t="-";break;case"easein":t="<";break;case"easeout":t=">";break;case"easeinout":t="<>";break;case"swing":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case"bounce":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1};break;default:t="<>"}this.w.globals.easing=t}},{key:"animateLine",value:function(t,e,i,s){t.attr(e).animate(s).attr(i)}},{key:"animateCircleRadius",value:function(t,e,i,s,a){e||(e=0),t.attr({r:e}).animate(s,a).attr({r:i})}},{key:"animateCircle",value:function(t,e,i,s,a){t.attr({r:e.r,cx:e.cx,cy:e.cy}).animate(s,a).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(t,e,i,s,a){t.attr(e).animate(s).attr(i).afterAll(function(){a()})}},{key:"animatePathsGradually",value:function(t){var e=t.el,i=t.j,s=t.pathFrom,a=t.pathTo,n=t.speed,r=t.delay,o=t.strokeWidth,l=this.w,h=0;l.config.chart.animations.animateGradually.enabled&&(h=l.config.chart.animations.animateGradually.delay),l.config.chart.animations.dynamicAnimation.enabled&&l.globals.dataChanged&&(h=0),this.morphSVG(e,i,s,a,n,o,r*h)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach(function(t){t.el.classList.remove("hidden")})}},{key:"morphSVG",value:function(t,e,i,s,a,n,r){var o=this,l=this.w;i||(i=t.attr("pathFrom")),s||(s=t.attr("pathTo")),(!i||i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(l.globals.gridHeight),a=1),(s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s="M 0 ".concat(l.globals.gridHeight),a=1),l.globals.shouldAnimate||(a=1),t.plot(i).animate(1,l.globals.easing,r).plot(i).animate(a,l.globals.easing,r).plot(s).afterAll(function(){d.isNumber(e)?e===l.globals.series[l.globals.maxValsInArrayIndex].length-2&&l.globals.shouldAnimate&&(l.globals.animationEnded=!0):l.globals.shouldAnimate&&(l.globals.animationEnded=!0,"function"==typeof l.config.chart.events.animationEnd&&l.config.chart.events.animationEnd(o.ctx,l)),o.showDelayedElements()})}}]),t}(),f=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"drawLine",value:function(t,e,i,s){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"#a8a8a8",n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null;return this.w.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:s,stroke:a,"stroke-dasharray":n,"stroke-width":r})}},{key:"drawRect",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#fefefe",r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w.globals.dom.Paper.rect();return c.attr({x:t,y:e,width:i>0?i:0,height:s>0?s:0,rx:a,ry:a,fill:n,opacity:r,"stroke-width":null!==o?o:0,stroke:null!==l?l:"none","stroke-dasharray":h}),c}},{key:"drawPolygon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#e1e1e1",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"none";return this.w.globals.dom.Paper.polygon(t).attr({fill:i,stroke:e})}},{key:"drawCircle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w.globals.dom.Paper.circle(2*t);return null!==e&&i.attr(e),i}},{key:"drawPath",value:function(t){var e=t.d,i=void 0===e?"":e,s=t.stroke,a=void 0===s?"#a8a8a8":s,n=t.strokeWidth,r=void 0===n?1:n,o=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,u=t.classes,g=t.strokeLinecap,f=void 0===g?null:g,p=t.strokeDashArray,x=void 0===p?0:p,b=this.w;return null===f&&(f=b.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:o,"fill-opacity":h,stroke:a,"stroke-opacity":d,"stroke-linecap":f,"stroke-width":r,"stroke-dasharray":x,class:u})}},{key:"group",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w.globals.dom.Paper.group();return null!==t&&e.attr(t),e}},{key:"move",value:function(t,e){var i=["M",t,e].join(" ");return i}},{key:"line",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=null;return null===i?s=["L",t,e].join(" "):"H"===i?s=["H",t].join(" "):"V"===i&&(s=["V",e].join(" ")),s}},{key:"curve",value:function(t,e,i,s,a,n){var r=["C",t,e,i,s,a,n].join(" ");return r}},{key:"quadraticCurve",value:function(t,e,i,s){return["Q",t,e,i,s].join(" ")}},{key:"arc",value:function(t,e,i,s,a,n,r){var o="A";arguments.length>7&&void 0!==arguments[7]&&arguments[7]&&(o="a");var l=[o,t,e,i,s,a,n,r].join(" ");return l}},{key:"renderPaths",value:function(t){var e,i=t.i,s=t.j,a=t.realIndex,r=t.pathFrom,o=t.pathTo,l=t.stroke,h=t.strokeWidth,c=t.strokeLinecap,d=t.fill,f=t.animationDelay,p=t.initialSpeed,x=t.dataChangeSpeed,b=t.className,m=t.id,v=t.shouldClipToGrid,y=void 0===v||v,w=t.bindEventsOnPaths,k=void 0===w||w,A=t.drawShadow,S=void 0===A||A,C=this.w,L=new u(this.ctx),z=new g(this.ctx),P=this.w.config.chart.animations.enabled,M=P&&this.w.config.chart.animations.dynamicAnimation.enabled,E=!!(P&&!C.globals.resized||M&&C.globals.dataChanged&&C.globals.shouldAnimate);E?e=r:(e=o,this.w.globals.animationEnded=!0);var T=C.config.stroke.dashArray,X=0;X=Array.isArray(T)?T[a]:C.config.stroke.dashArray;var I=this.drawPath({d:e,stroke:l,strokeWidth:h,fill:d,fillOpacity:1,classes:b,strokeLinecap:c,strokeDashArray:X});if(I.attr("id","".concat(m,"-").concat(i)),I.attr("index",a),y&&I.attr({"clip-path":"url(#gridRectMask".concat(C.globals.cuid,")")}),"none"!==C.config.states.normal.filter.type)L.getDefaultFilter(I,a);else if(C.config.chart.dropShadow.enabled&&S&&(!C.config.chart.dropShadow.enabledSeries||C.config.chart.dropShadow.enabledSeries&&-1!==C.config.chart.dropShadow.enabledSeries.indexOf(a))){var Y=C.config.chart.dropShadow;L.dropShadow(I,Y,a)}k&&(I.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,I)),I.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,I)),I.node.addEventListener("mousedown",this.pathMouseDown.bind(this,I))),I.attr({pathTo:o,pathFrom:r});var F={el:I,j:s,pathFrom:r,pathTo:o,strokeWidth:h};return!P||C.globals.resized||C.globals.dataChanged?!C.globals.resized&&C.globals.dataChanged||z.showDelayedElements():z.animatePathsGradually(n({},F,{speed:p,delay:f})),C.globals.dataChanged&&M&&E&&z.animatePathsGradually(n({},F,{speed:x})),I}},{key:"drawPattern",value:function(t,e,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#a8a8a8",a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return this.w.globals.dom.Paper.pattern(e,i,function(n){"horizontalLines"===t?n.line(0,0,i,0).stroke({color:s,width:a+1}):"verticalLines"===t?n.line(0,0,0,e).stroke({color:s,width:a+1}):"slantedLines"===t?n.line(0,0,e,i).stroke({color:s,width:a}):"squares"===t?n.rect(e,i).fill("none").stroke({color:s,width:a}):"circles"===t&&n.circle(e).fill("none").stroke({color:s,width:a})})}},{key:"drawGradient",value:function(t,e,i,s,a){var n,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e=d.hexToRgba(e,s),i=d.hexToRgba(i,a);var u=0,g=1,f=1,p=null;null!==o&&(u=void 0!==o[0]?o[0]/100:0,g=void 0!==o[1]?o[1]/100:1,f=void 0!==o[2]?o[2]/100:1,p=void 0!==o[3]?o[3]/100:null);var x=!("donut"!==c.config.chart.type&&"pie"!==c.config.chart.type&&"bubble"!==c.config.chart.type);if(n=null===l||0===l.length?c.globals.dom.Paper.gradient(x?"radial":"linear",function(t){t.at(u,e,s),t.at(g,i,a),t.at(f,i,a),null!==p&&t.at(p,e,s)}):c.globals.dom.Paper.gradient(x?"radial":"linear",function(t){(Array.isArray(l[h])?l[h]:l).forEach(function(e){t.at(e.offset/100,e.color,e.opacity)})}),x){var b=c.globals.gridWidth/2,m=c.globals.gridHeight/2;"bubble"!==c.config.chart.type?n.attr({gradientUnits:"userSpaceOnUse",cx:b,cy:m,r:r}):n.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else"vertical"===t?n.from(0,0).to(0,1):"diagonal"===t?n.from(0,0).to(1,1):"horizontal"===t?n.from(0,1).to(1,1):"diagonal2"===t&&n.from(0,1).to(2,2);return n}},{key:"drawText",value:function(t){var e,i=this.w,s=t.x,a=t.y,n=t.text,r=t.textAnchor,o=t.fontSize,l=t.fontFamily,h=t.foreColor,c=t.opacity;return void 0===n&&(n=""),r||(r="start"),h||(h=i.config.chart.foreColor),l=l||i.config.chart.fontFamily,(e=Array.isArray(n)?i.globals.dom.Paper.text(function(t){for(var e=0;e<n.length;e++)t.tspan(n[e])}):i.globals.dom.Paper.plain(n)).attr({x:s,y:a,"text-anchor":r,"dominant-baseline":"auto","font-size":o,"font-family":l,fill:h,class:(t.cssClass,t.cssClass)}),e.node.style.fontFamily=l,e.node.style.opacity=c,e}},{key:"addTspan",value:function(t,e,i){var s=t.tspan(e);i||(i=this.w.config.chart.fontFamily),s.node.style.fontFamily=i}},{key:"drawMarker",value:function(t,e,i){t=t||0;var s=i.pSize||0,a=null;if("square"===i.shape){var n=void 0===i.pRadius?s/2:i.pRadius;null===e&&(s=0,n=0);var r=1.2*s+n,o=this.drawRect(r,r,r,r,n);o.attr({x:t-r/2,y:e-r/2,cx:t,cy:e,class:i.class?i.class:"",fill:i.pointFillColor,"fill-opacity":i.pointFillOpacity?i.pointFillOpacity:1,stroke:i.pointStrokeColor,"stroke-width":i.pWidth?i.pWidth:0,"stroke-opacity":i.pointStrokeOpacity?i.pointStrokeOpacity:1}),a=o}else"circle"===i.shape&&(d.isNumber(e)||(s=0,e=0),a=this.drawCircle(s,{cx:t,cy:e,class:i.class?i.class:"",stroke:i.pointStrokeColor,fill:i.pointFillColor,"fill-opacity":i.pointFillOpacity?i.pointFillOpacity:1,"stroke-width":i.pWidth?i.pWidth:0,"stroke-opacity":i.pointStrokeOpacity?i.pointStrokeOpacity:1}));return a}},{key:"pathMouseEnter",value:function(t,e){var i=this.w,s=new u(this.ctx),a=parseInt(t.node.getAttribute("index")),n=parseInt(t.node.getAttribute("j"));if("function"==typeof i.config.chart.events.dataPointMouseEnter&&i.config.chart.events.dataPointMouseEnter(e,this.ctx,{seriesIndex:a,dataPointIndex:n,w:i}),this.ctx.fireEvent("dataPointMouseEnter",[e,this.ctx,{seriesIndex:a,dataPointIndex:n,w:i}]),("none"===i.config.states.active.filter.type||"true"!==t.node.getAttribute("selected"))&&"none"!==i.config.states.hover.filter.type&&"none"!==i.config.states.active.filter.type&&!i.globals.isTouchDevice){var r=i.config.states.hover.filter;s.applyFilter(t,a,r.type,r.value)}}},{key:"pathMouseLeave",value:function(t,e){var i=this.w,s=new u(this.ctx),a=parseInt(t.node.getAttribute("index")),n=parseInt(t.node.getAttribute("j"));"function"==typeof i.config.chart.events.dataPointMouseLeave&&i.config.chart.events.dataPointMouseLeave(e,this.ctx,{seriesIndex:a,dataPointIndex:n,w:i}),this.ctx.fireEvent("dataPointMouseLeave",[e,this.ctx,{seriesIndex:a,dataPointIndex:n,w:i}]),"none"!==i.config.states.active.filter.type&&"true"===t.node.getAttribute("selected")||"none"!==i.config.states.hover.filter.type&&s.getDefaultFilter(t,a)}},{key:"pathMouseDown",value:function(t,e){var i=this.w,s=new u(this.ctx),a=parseInt(t.node.getAttribute("index")),n=parseInt(t.node.getAttribute("j")),r="false";if("true"===t.node.getAttribute("selected")){if(t.node.setAttribute("selected","false"),i.globals.selectedDataPoints[a].indexOf(n)>-1){var o=i.globals.selectedDataPoints[a].indexOf(n);i.globals.selectedDataPoints[a].splice(o,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(".apexcharts-series path").members,h=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members;l.forEach(function(t){t.node.setAttribute("selected","false"),s.getDefaultFilter(t,a)}),h.forEach(function(t){t.node.setAttribute("selected","false"),s.getDefaultFilter(t,a)})}t.node.setAttribute("selected","true"),r="true",void 0===i.globals.selectedDataPoints[a]&&(i.globals.selectedDataPoints[a]=[]),i.globals.selectedDataPoints[a].push(n)}if("true"===r){var c=i.config.states.active.filter;"none"!==c&&s.applyFilter(t,a,c.type,c.value)}else"none"!==i.config.states.active.filter.type&&s.getDefaultFilter(t,a);"function"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:a,dataPointIndex:n,w:i}),this.ctx.fireEvent("dataPointSelection",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:a,dataPointIndex:n,w:i}])}},{key:"rotateAroundCenter",value:function(t){var e=t.getBBox();return{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:"getTextRects",value:function(t,e,i,s){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=this.w,r=this.drawText({x:-200,y:-200,text:t,textAnchor:"start",fontSize:e,fontFamily:i,foreColor:"#fff",opacity:0});s&&r.attr("transform",s),n.globals.dom.Paper.add(r);var o=r.bbox();return a||(o=r.node.getBoundingClientRect()),r.remove(),{width:o.width,height:o.height}}},{key:"placeTextWithEllipsis",value:function(t,e,i){if(t.textContent=e,e.length>0&&t.getSubStringLength(0,e.length)>=i){for(var s=e.length-3;s>0;s-=3)if(t.getSubStringLength(0,s)<=i)return void(t.textContent=e.substring(0,s)+"...");t.textContent="..."}}}],[{key:"setAttrs",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}();var p={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},x=function(){function t(){e(this,t),this.yAxis={show:!0,showAlways:!1,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,tickAmount:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#78909C",offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#78909C",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.xAxisAnnotation={x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.yAxisAnnotation={y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",opacity:.3,offsetX:0,offsetY:0,yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,cssClass:"",padding:{left:5,right:5,top:0,bottom:2}}}},this.pointAnnotation={x:0,y:null,yAxisIndex:0,seriesIndex:0,marker:{size:0,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,text:void 0,textAnchor:"middle",offsetX:0,offsetY:-15,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,cssClass:"",padding:{left:5,right:5,top:0,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0}}}return s(t,[{key:"init",value:function(){return{annotations:{position:"front",yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[p],defaultLocale:"en",dropShadow:{enabled:!1,enabledSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,zoomed:void 0,scrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,id:void 0,group:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!1,target:void 0},stacked:!1,stackType:"normal",toolbar:{show:!0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,endingShape:"flat",colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1},dataLabels:{maxItems:100,hideOverflowingLabels:!0,position:"top"}},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!0,distributed:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{size:void 0,inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,color:void 0,offsetY:0},value:{show:!0,fontSize:"14px",fontFamily:void 0,color:void 0,offsetY:16,formatter:function(t){return t+"%"}},total:{show:!1,label:"Total",color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce(function(t,e){return t+e},0)/t.globals.series.length+"%"}}}},rangeBar:{},pie:{size:void 0,customScale:1,offsetX:0,offsetY:0,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,color:void 0,offsetY:-10},value:{show:!0,fontSize:"20px",fontFamily:void 0,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,label:"Total",color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce(function(t,e){return t+e},0)}}}}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return t},textAnchor:"middle",offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,colors:void 0},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"sqaures",width:6,height:6,strokeWidth:2}},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1,animate:!1}},yaxis:{lines:{show:!0,animate:!1}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",fontSize:"12px",fontFamily:void 0,width:void 0,height:void 0,formatter:void 0,offsetX:-20,offsetY:0,labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:0,vertical:5},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,fillOpacity:1,shape:"circle",radius:2,offsetX:0,offsetY:0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.15}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.65}}},title:{text:void 0,align:"left",margin:10,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:10,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],offsetX:0,offsetY:0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!0,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss"}},axisBorder:{show:!0,color:"#78909C",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#78909C",height:6,offsetX:0,offsetY:0},tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),t}(),b=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.graphics=new f(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return s(t,[{key:"drawAnnotations",value:function(){var t=this.w;if(t.globals.axisCharts){for(var e=this.drawYAxisAnnotations(),i=this.drawXAxisAnnotations(),s=this.drawPointAnnotations(),a=t.config.chart.animations.enabled,n=[e,i,s],r=[i.node,e.node,s.node],o=0;o<3;o++)t.globals.dom.elGraphical.add(n[o]),!a||t.globals.resized||t.globals.dataChanged||r[o].classList.add("hidden"),t.globals.delayedElements.push({el:r[o],index:0});this.annotationsBackground()}}},{key:"addXaxisAnnotation",value:function(t,e,i){var s=this.w,a=this.invertAxis?s.globals.minY:s.globals.minX,n=this.invertAxis?s.globals.yRange[0]:s.globals.xRange,r=(t.x-a)/(n/s.globals.gridWidth),o=t.label.text;if("category"===s.config.xaxis.type||s.config.xaxis.convertedCatToNumeric){var l=s.globals.labels.indexOf(t.x),h=s.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(l+1)+")");h&&(r=parseFloat(h.getAttribute("x")))}var c=t.strokeDashArray;if(!(r<0||r>s.globals.gridWidth)){if(null===t.x2){var d=this.graphics.drawLine(r+t.offsetX,0+t.offsetY,r+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,c);e.appendChild(d.node)}else{var u=(t.x2-a)/(n/s.globals.gridWidth);if(u<r){var g=r;r=u,u=g}if(o){var f=this.graphics.drawRect(r+t.offsetX,0+t.offsetY,u-r,s.globals.gridHeight+t.offsetY,0,t.fillColor,t.opacity,1,t.borderColor,c);e.appendChild(f.node)}}var p="top"===t.label.position?-3:s.globals.gridHeight,x=this.graphics.drawText({x:r+t.label.offsetX,y:p+t.label.offsetY,text:o,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,foreColor:t.label.style.color,cssClass:"apexcharts-xaxis-annotation-label "+t.label.style.cssClass});x.attr({rel:i}),e.appendChild(x.node),this.setOrientations(t,i)}}},{key:"drawXAxisAnnotations",value:function(){var t=this,e=this.w,i=this.graphics.group({class:"apexcharts-xaxis-annotations"});return e.config.annotations.xaxis.map(function(e,s){t.addXaxisAnnotation(e,i.node,s)}),i}},{key:"addYaxisAnnotation",value:function(t,e,i){var s,a,n=this.w,r=t.strokeDashArray;if(this.invertAxis){var o=n.globals.labels.indexOf(t.y),l=n.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(o+1)+")");l&&(s=parseFloat(l.getAttribute("y")))}else s=n.globals.gridHeight-(t.y-n.globals.minYArr[t.yAxisIndex])/(n.globals.yRange[t.yAxisIndex]/n.globals.gridHeight),n.config.yaxis[t.yAxisIndex]&&n.config.yaxis[t.yAxisIndex].reversed&&(s=(t.y-n.globals.minYArr[t.yAxisIndex])/(n.globals.yRange[t.yAxisIndex]/n.globals.gridHeight));var h=t.label.text;if(null===t.y2){var c=this.graphics.drawLine(0+t.offsetX,s+t.offsetY,n.globals.gridWidth+t.offsetX,s+t.offsetY,t.borderColor,r);e.appendChild(c.node)}else{if(this.invertAxis){var d=n.globals.labels.indexOf(t.y2),u=n.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(d+1)+")");u&&(a=parseFloat(u.getAttribute("y")))}else a=n.globals.gridHeight-(t.y2-n.globals.minYArr[t.yAxisIndex])/(n.globals.yRange[t.yAxisIndex]/n.globals.gridHeight),n.config.yaxis[t.yAxisIndex]&&n.config.yaxis[t.yAxisIndex].reversed&&(a=(t.y2-n.globals.minYArr[t.yAxisIndex])/(n.globals.yRange[t.yAxisIndex]/n.globals.gridHeight));if(a>s){var g=s;s=a,a=g}if(h){var f=this.graphics.drawRect(0+t.offsetX,a+t.offsetY,n.globals.gridWidth+t.offsetX,s-a,0,t.fillColor,t.opacity,1,t.borderColor,r);e.appendChild(f.node)}}var p="right"===t.label.position?n.globals.gridWidth:0,x=this.graphics.drawText({x:p+t.label.offsetX,y:(a||s)+t.label.offsetY-3,text:h,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,foreColor:t.label.style.color,cssClass:"apexcharts-yaxis-annotation-label "+t.label.style.cssClass});x.attr({rel:i}),e.appendChild(x.node)}},{key:"drawYAxisAnnotations",value:function(){var t=this,e=this.w,i=this.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.map(function(e,s){t.addYaxisAnnotation(e,i.node,s)}),i}},{key:"clearAnnotations",value:function(t){var e=t.w.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");(e=d.listToArray(e)).forEach(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)})}},{key:"addPointAnnotation",value:function(t,e,i){var s=this.w,a=0,n=0,r=0;if(this.invertAxis&&console.warn("Point annotation is not supported in horizontal bar charts."),"string"==typeof t.x){var o=s.globals.labels.indexOf(t.x),l=s.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(o+1)+")");a=parseFloat(l.getAttribute("x"));var h=t.y;null===t.y&&(h=s.globals.series[t.seriesIndex][o]),n=s.globals.gridHeight-(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)-parseInt(t.label.style.fontSize)-t.marker.size,r=s.globals.gridHeight-(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight),s.config.yaxis[t.yAxisIndex]&&s.config.yaxis[t.yAxisIndex].reversed&&(n=(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)+parseInt(t.label.style.fontSize)+t.marker.size,r=(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight))}else a=(t.x-s.globals.minX)/(s.globals.xRange/s.globals.gridWidth),n=s.globals.gridHeight-(parseFloat(t.y)-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)-parseInt(t.label.style.fontSize)-t.marker.size,r=s.globals.gridHeight-(t.y-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight),s.config.yaxis[t.yAxisIndex]&&s.config.yaxis[t.yAxisIndex].reversed&&(n=(parseFloat(t.y)-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)-parseInt(t.label.style.fontSize)-t.marker.size,r=(t.y-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight));if(!(a<0||a>s.globals.gridWidth)){var c={pSize:t.marker.size,pWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,radius:t.marker.radius,class:"apexcharts-point-annotation-marker "+t.marker.cssClass},d=this.graphics.drawMarker(a+t.marker.offsetX,r+t.marker.offsetY,c);e.appendChild(d.node);var u=t.label.text?t.label.text:"",g=this.graphics.drawText({x:a+t.label.offsetX,y:n+t.label.offsetY,text:u,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,foreColor:t.label.style.color,cssClass:"apexcharts-point-annotation-label "+t.label.style.cssClass});if(g.attr({rel:i}),e.appendChild(g.node),t.customSVG.SVG){var f=this.graphics.group({class:"apexcharts-point-annotations-custom-svg "+t.customSVG.cssClass});f.attr({transform:"translate(".concat(a+t.customSVG.offsetX,", ").concat(n+t.customSVG.offsetY,")")}),f.node.innerHTML=t.customSVG.SVG,e.appendChild(f.node)}}}},{key:"drawPointAnnotations",value:function(){var t=this,e=this.w,i=this.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map(function(e,s){t.addPointAnnotation(e,i.node,s)}),i}},{key:"setOrientations",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if("vertical"===t.label.orientation){var s=null!==e?e:0,a=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(s,"']"));if(null!==a){var n=a.getBoundingClientRect();a.setAttribute("x",parseFloat(a.getAttribute("x"))-n.height+4),"top"===t.label.position?a.setAttribute("y",parseFloat(a.getAttribute("y"))+n.width):a.setAttribute("y",parseFloat(a.getAttribute("y"))-n.width);var r=this.graphics.rotateAroundCenter(a),o=r.x,l=r.y;a.setAttribute("transform","rotate(-90 ".concat(o," ").concat(l,")"))}}}},{key:"addBackgroundToAnno",value:function(t,e){var i=this.w;if(!e.label.text)return null;var s=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),a=t.getBoundingClientRect(),n=e.label.style.padding.left,r=e.label.style.padding.right,o=e.label.style.padding.top,l=e.label.style.padding.bottom;"vertical"===e.label.orientation&&(o=e.label.style.padding.left,l=e.label.style.padding.right,n=e.label.style.padding.top,r=e.label.style.padding.bottom);var h=a.left-s.left-n,c=a.top-s.top-o;return this.graphics.drawRect(h,c,a.width+n+r,a.height+o+l,0,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0)}},{key:"annotationsBackground",value:function(){var t=this,e=this.w,i=function(i,s,a){var n=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(a,"-annotations .apexcharts-").concat(a,"-annotation-label[rel='").concat(s,"']"));if(n){var r=n.parentNode,o=t.addBackgroundToAnno(n,i);o&&r.insertBefore(o.node,n)}};e.config.annotations.xaxis.map(function(t,e){i(t,e,"xaxis")}),e.config.annotations.yaxis.map(function(t,e){i(t,e,"yaxis")}),e.config.annotations.points.map(function(t,e){i(t,e,"point")})}},{key:"addText",value:function(t,e,i){var s=t.x,a=t.y,n=t.text,r=t.textAnchor,o=t.appendTo,l=void 0===o?".apexcharts-inner":o,h=t.foreColor,c=t.fontSize,d=t.fontFamily,u=t.cssClass,g=t.backgroundColor,f=t.borderWidth,p=t.strokeDashArray,x=t.radius,b=t.borderColor,m=t.paddingLeft,v=void 0===m?4:m,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=i,z=L.w,P=z.globals.dom.baseEl.querySelector(l),M=this.graphics.drawText({x:s,y:a,text:n,textAnchor:r||"start",fontSize:c||"12px",fontFamily:d||z.config.chart.fontFamily,foreColor:h||z.config.chart.foreColor,cssClass:u});P.appendChild(M.node);var E=M.bbox();if(n){var T=this.graphics.drawRect(E.x-v,E.y-C,E.width+v+w,E.height+A+C,x,g,1,f,b,p);M.before(T)}return e&&z.globals.memory.methodsToExec.push({context:L,method:L.addText,params:{x:s,y:a,text:n,textAnchor:r,appendTo:l,foreColor:h,fontSize:c,cssClass:u,backgroundColor:g,borderWidth:f,strokeDashArray:p,radius:x,borderColor:b,paddingLeft:v,paddingRight:w,paddingBottom:A,paddingTop:C}}),i}},{key:"addPointAnnotationExternal",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addXaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addAnnotationExternal",value:function(t){var e=t.params,i=t.pushToMemory,s=t.context,a=t.type,n=t.contextMethod,r=s,o=r.w,l=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(a,"-annotations")),h=l.childNodes.length+1,c=new x,u=Object.assign({},"xaxis"===a?c.xAxisAnnotation:"yaxis"===a?c.yAxisAnnotation:c.pointAnnotation),g=d.extend(u,e);switch(a){case"xaxis":this.addXaxisAnnotation(g,l,h);break;case"yaxis":this.addYaxisAnnotation(g,l,h);break;case"point":this.addPointAnnotation(g,l,h)}var f=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(a,"-annotations .apexcharts-").concat(a,"-annotation-label[rel='").concat(h,"']")),p=this.addBackgroundToAnno(f,g);return p&&l.insertBefore(p.node,f),i&&o.globals.memory.methodsToExec.push({context:r,method:n,params:e}),s}}]),t}(),m=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return s(t,[{key:"isValidDate",value:function(t){return!isNaN(this.parseDate(t))}},{key:"getUTCTimeStamp",value:function(t){return Date.parse(t)?new Date(new Date(t).toISOString().substr(0,25)).getTime():t}},{key:"parseDate",value:function(t){var e=Date.parse(t);if(!isNaN(e))return this.getUTCTimeStamp(t);var i=Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getUTCTimeStamp(i)}},{key:"treatAsUtc",value:function(t){var e=new Date(t);return e.setMinutes(e.getMinutes()-e.getTimezoneOffset()),e}},{key:"formatDate",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=this.w.globals.locale,n=["\0"].concat(c(a.months)),r=["\x01"].concat(c(a.shortMonths)),o=["\x02"].concat(c(a.days)),l=["\x03"].concat(c(a.shortDays));function h(t,e){var i=t+"";for(e=e||2;i.length<e;)i="0"+i;return i}s&&(t=this.treatAsUtc(t));var d=i?t.getUTCFullYear():t.getFullYear();e=(e=(e=e.replace(/(^|[^\\])yyyy+/g,"$1"+d)).replace(/(^|[^\\])yy/g,"$1"+d.toString().substr(2,2))).replace(/(^|[^\\])y/g,"$1"+d);var u=(i?t.getUTCMonth():t.getMonth())+1;e=(e=(e=(e=e.replace(/(^|[^\\])MMMM+/g,"$1"+n[0])).replace(/(^|[^\\])MMM/g,"$1"+r[0])).replace(/(^|[^\\])MM/g,"$1"+h(u))).replace(/(^|[^\\])M/g,"$1"+u);var g=i?t.getUTCDate():t.getDate();e=(e=(e=(e=e.replace(/(^|[^\\])dddd+/g,"$1"+o[0])).replace(/(^|[^\\])ddd/g,"$1"+l[0])).replace(/(^|[^\\])dd/g,"$1"+h(g))).replace(/(^|[^\\])d/g,"$1"+g);var f=i?t.getUTCHours():t.getHours(),p=f>12?f-12:0===f?12:f;e=(e=(e=(e=e.replace(/(^|[^\\])HH+/g,"$1"+h(f))).replace(/(^|[^\\])H/g,"$1"+f)).replace(/(^|[^\\])hh+/g,"$1"+h(p))).replace(/(^|[^\\])h/g,"$1"+p);var x=i?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\])mm+/g,"$1"+h(x))).replace(/(^|[^\\])m/g,"$1"+x);var b=i?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\])ss+/g,"$1"+h(b))).replace(/(^|[^\\])s/g,"$1"+b);var m=i?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\])fff+/g,"$1"+h(m,3)),m=Math.round(m/10),e=e.replace(/(^|[^\\])ff/g,"$1"+h(m)),m=Math.round(m/10);var v=f<12?"AM":"PM";e=(e=(e=e.replace(/(^|[^\\])f/g,"$1"+m)).replace(/(^|[^\\])TT+/g,"$1"+v)).replace(/(^|[^\\])T/g,"$1"+v.charAt(0));var y=v.toLowerCase();e=(e=e.replace(/(^|[^\\])tt+/g,"$1"+y)).replace(/(^|[^\\])t/g,"$1"+y.charAt(0));var w=-t.getTimezoneOffset(),k=i||!w?"Z":w>0?"+":"-";if(!i){var A=(w=Math.abs(w))%60;k+=h(Math.floor(w/60))+":"+h(A)}e=e.replace(/(^|[^\\])K/g,"$1"+k);var S=(i?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(o[0],"g"),o[S])).replace(new RegExp(l[0],"g"),l[S])).replace(new RegExp(n[0],"g"),n[u])).replace(new RegExp(r[0],"g"),r[u])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(t,e){var i=this.w;void 0!==i.config.xaxis.min&&(t=i.config.xaxis.min),void 0!==i.config.xaxis.max&&(e=i.config.xaxis.max);var s=new Date(t).getFullYear(),a=new Date(e).getFullYear(),n=new Date(t).getMonth(),r=new Date(e).getMonth(),o=new Date(t).getDate(),l=new Date(e).getDate(),h=new Date(t).getHours(),c=new Date(e).getHours();return{minMinute:new Date(t).getMinutes(),maxMinute:new Date(e).getMinutes(),minHour:h,maxHour:c,minDate:o,maxDate:l,minMonth:n,maxMonth:r,minYear:s,maxYear:a}}},{key:"isLeapYear",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:"calculcateLastDaysOfMonth",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:"determineDaysOfYear",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:"determineRemainingDaysOfYear",value:function(t,e,i){var s=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&s++,s}},{key:"determineDaysOfMonths",value:function(t,e){var i=30;switch(t=d.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),v=function(){function t(i){e(this,t),this.opts=i}return s(t,[{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(t){this.opts.yaxis[0].labels.show=!1,this.opts.yaxis[0].floating=!0;return d.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]}},stroke:{width:0},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1},xaxis:{tooltip:{enabled:!1},crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"candlestick",value:function(){return{stroke:{width:1,colors:["#333"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var e=t.seriesIndex,i=t.dataPointIndex,s=t.w;return'<div class="apexcharts-tooltip-candlestick"><div>Open: <span class="value">'+s.globals.seriesCandleO[e][i]+'</span></div><div>High: <span class="value">'+s.globals.seriesCandleH[e][i]+'</span></div><div>Low: <span class="value">'+s.globals.seriesCandleL[e][i]+'</span></div><div>Close: <span class="value">'+s.globals.seriesCandleC[e][i]+"</span></div></div>"}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{stroke:{width:0},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,s=e.dataPointIndex,a=e.w,n=a.globals.seriesRangeStart[i][s];return a.globals.seriesRangeEnd[i][s]-n},style:{colors:["#fff"]}},tooltip:{shared:!1,followCursor:!0,custom:function(t){var e=t.ctx,i=t.seriesIndex,s=t.dataPointIndex,a=t.w,n=a.globals.seriesRangeStart[i][s],r=a.globals.seriesRangeEnd[i][s],o="",l="",h=a.globals.colors[i];if(void 0===a.config.tooltip.x.formatter)if("datetime"===a.config.xaxis.type){var c=new m(e);o=c.formatDate(new Date(n),a.config.tooltip.x.format,!0,!0),l=c.formatDate(new Date(r),a.config.tooltip.x.format,!0,!0)}else o=n,l=r;else o=a.config.tooltip.x.formatter(n),l=a.config.tooltip.x.formatter(r);var d=a.globals.labels[s];return'<div class="apexcharts-tooltip-rangebar"><div> <span class="series-name" style="color: '+h+'">'+(a.config.series[i].name?a.config.series[i].name:"")+'</span></div><div> <span class="category">'+d+': </span> <span class="value start-value">'+o+'</span> <span class="separator">-</span> <span class="value end-value">'+l+"</span></div></div>"}},xaxis:{tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"area",value:function(){return{stroke:{width:4},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"brush",value:function(t){return d.extend(t,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(){var t=this;this.opts.dataLabels=this.opts.dataLabels||{},this.opts.dataLabels.formatter=this.opts.dataLabels.formatter||void 0;var e=this.opts.dataLabels.formatter;this.opts.yaxis.forEach(function(e,i){t.opts.yaxis[i].min=0,t.opts.yaxis[i].max=100}),"bar"===this.opts.chart.type&&(this.opts.dataLabels.formatter=e||function(t){return"number"==typeof t&&t?t.toFixed(0)+"%":t})}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:2,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1,zoom:{enabled:!1}},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"dark",shadeIntensity:.35,inverseColors:!1,stops:[0,100,100]}},padding:{right:0,left:0},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"vertical",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},padding:{right:0,left:0},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.style.fontSize="13px",this.opts.yaxis[0].labels.offsetY=6,{dataLabels:{enabled:!0,style:{colors:["#a8a8a8"],fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},padding:{right:0,left:0},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}}],[{key:"convertCatToNumeric",value:function(t){t.xaxis.type="numeric",t.xaxis.convertedCatToNumeric=!0,t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return t},t.chart=t.chart||{},t.chart.zoom=t.chart.zoom||window.Apex.chart&&window.Apex.chart.zoom||{};var e=t.xaxis.labels.formatter,i=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(t.xaxis.labels.formatter=function(t){return e(i[t-1])}),t.xaxis.categories=[],t.labels=[],t.chart.zoom.enabled=t.chart.zoom.enabled||!1,t}}]),t}(),y=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"getStackedSeriesTotals",value:function(){for(var t=this.w,e=[],i=0;i<t.globals.series[t.globals.maxValsInArrayIndex].length;i++){for(var s=0,a=0;a<t.globals.series.length;a++)s+=t.globals.series[a][i];e.push(s)}return t.globals.stackedSeriesTotals=e,e}},{key:"getSeriesTotalByIndex",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce(function(t,e){return t+e},0):this.w.globals.series[t].reduce(function(t,e){return t+e},0)}},{key:"isSeriesNull",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter(function(t){return null!==t}):this.w.globals.series[t].filter(function(t){return null!==t})).length}},{key:"seriesHaveSameValues",value:function(t){return this.w.globals.series[t].every(function(t,e,i){return t===i[0]})}},{key:"getLargestSeries",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map(function(t){return t.length}).indexOf(Math.max.apply(Math,t.globals.series.map(function(t){return t.length})))}},{key:"getLargestMarkerSize",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach(function(t){e=Math.max(e,t)}),t.globals.markers.largestSize=e,e}},{key:"getSeriesTotals",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map(function(t,e){var i=0;if(Array.isArray(t))for(var s=0;s<t.length;s++)i+=t[s];else i+=t;return i})}},{key:"getSeriesTotalsXRange",value:function(t,e){var i=this.w;return i.globals.series.map(function(s,a){for(var n=0,r=0;r<s.length;r++)i.globals.seriesX[a][r]>t&&i.globals.seriesX[a][r]<e&&(n+=s[r]);return n})}},{key:"getPercentSeries",value:function(){var t=this.w;t.globals.seriesPercent=t.globals.series.map(function(e,i){var s=[];if(Array.isArray(e))for(var a=0;a<e.length;a++){var n=t.globals.stackedSeriesTotals[a],r=100*e[a]/n;s.push(r)}else{var o=100*e/t.globals.seriesTotals.reduce(function(t,e){return t+e},0);s.push(o)}return s})}},{key:"getCalculatedRatios",value:function(){var t,e,i,s,a,n=this.w.globals,r=[],o=[],l=.1,h=0;if(n.yRange=[],n.isMultipleYAxis)for(var c=0;c<n.minYArr.length;c++)n.yRange.push(Math.abs(n.minYArr[c]-n.maxYArr[c])),o.push(0);else n.yRange.push(Math.abs(n.minY-n.maxY));n.xRange=Math.abs(n.maxX-n.minX),n.zRange=Math.abs(n.maxZ-n.minZ);for(var d=0;d<n.yRange.length;d++)r.push(n.yRange[d]/n.gridHeight);if(e=n.xRange/n.gridWidth,i=Math.abs(n.initialmaxX-n.initialminX)/n.gridWidth,t=n.yRange/n.gridWidth,s=n.xRange/n.gridHeight,a=n.zRange/n.gridHeight*16,n.minY!==Number.MIN_VALUE&&0!==Math.abs(n.minY)&&(n.hasNegs=!0),n.isMultipleYAxis){o=[];for(var u=0;u<r.length;u++)o.push(-n.minYArr[u]/r[u])}else o.push(-n.minY/r[0]),n.minY!==Number.MIN_VALUE&&0!==Math.abs(n.minY)&&(l=-n.minY/t,h=n.minX/e);return{yRatio:r,invertedYRatio:t,zRatio:a,xRatio:e,initialXRatio:i,invertedXRatio:s,baseLineInvertedY:l,baseLineY:o,baseLineX:h}}},{key:"getLogSeries",value:function(t){var e=this.w;return e.globals.seriesLog=t.map(function(t,i){return e.config.yaxis[i]&&e.config.yaxis[i].logarithmic?t.map(function(t){return null===t?null:(Math.log(t)-Math.log(e.globals.minYArr[i]))/(Math.log(e.globals.maxYArr[i])-Math.log(e.globals.minYArr[i]))}):t}),e.globals.seriesLog}},{key:"getLogYRatios",value:function(t){var e=this,i=this.w,s=this.w.globals;return s.yLogRatio=t.slice(),s.logYRange=s.yRange.map(function(t,a){if(i.config.yaxis[a]&&e.w.config.yaxis[a].logarithmic){var n,r=-Number.MAX_VALUE,o=Number.MIN_VALUE;return s.seriesLog.forEach(function(t,e){t.forEach(function(t){i.config.yaxis[e]&&i.config.yaxis[e].logarithmic&&(r=Math.max(t,r),o=Math.min(t,o))})}),n=Math.pow(s.yRange[a],Math.abs(o-r)/s.yRange[a]),s.yLogRatio[a]=n/s.gridHeight,n}}),s.yLogRatio}}],[{key:"checkComboSeries",value:function(t){var e=!1,i=!1;return t.length&&void 0!==t[0].type&&(e=!0,t.forEach(function(t){"bar"!==t.type&&"column"!==t.type||(i=!0)})),{comboCharts:e,comboChartsHasBars:i}}},{key:"extendArrayProps",value:function(t,e){return e.yaxis&&(e=t.extendYAxis(e)),e.annotations&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),e.annotations.xaxis&&(e=t.extendXAxisAnnotations(e)),e.annotations.points&&(e=t.extendPointAnnotations(e))),e}}]),t}(),w=function(){function i(t){e(this,i),this.opts=t}return s(i,[{key:"init",value:function(){var e=this.opts,i=new x,s=new v(e);this.chartType=e.chart.type,"histogram"===this.chartType&&(e.chart.type="bar",e=d.extend({plotOptions:{bar:{columnWidth:"99.99%"}}},e)),e.series=this.checkEmptySeries(e.series),e=this.extendYAxis(e),e=this.extendAnnotations(e);var a=i.init(),n={};if(e&&"object"===t(e)){var r={};switch(this.chartType){case"line":r=s.line();break;case"area":r=s.area();break;case"bar":r=s.bar();break;case"candlestick":r=s.candlestick();break;case"rangeBar":r=s.rangeBar();break;case"histogram":r=s.bar();break;case"bubble":r=s.bubble();break;case"scatter":r=s.scatter();break;case"heatmap":r=s.heatmap();break;case"pie":r=s.pie();break;case"donut":r=s.donut();break;case"radar":r=s.radar();break;case"radialBar":r=s.radialBar();break;default:r=s.line()}e.chart.brush&&e.chart.brush.enabled&&(r=s.brush(r)),e.chart.stacked&&"100%"===e.chart.stackType&&s.stacked100(),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(e),e.xaxis=e.xaxis||window.Apex.xaxis||{};var o=y.checkComboSeries(e.series);"line"!==e.chart.type&&"area"!==e.chart.type&&"scatter"!==e.chart.type||o.comboChartsHasBars||"datetime"===e.xaxis.type||"numeric"===e.xaxis.type||"between"===e.xaxis.tickPlacement||(e=v.convertCatToNumeric(e)),(e.chart.sparkline&&e.chart.sparkline.enabled||window.Apex.chart&&window.Apex.chart.sparkline&&window.Apex.chart.sparkline.enabled)&&(r=s.sparkline(r)),n=d.extend(a,r)}var l=d.extend(n,window.Apex);return a=d.extend(l,e),a=this.handleUserInputErrors(a)}},{key:"extendYAxis",value:function(t){var e=new x;return void 0===t.yaxis&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=d.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[d.extend(e.yAxis,t.yaxis)]:t.yaxis=d.extendArray(t.yaxis,e.yAxis),t}},{key:"extendAnnotations",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:"extendYAxisAnnotations",value:function(t){var e=new x;return t.annotations.yaxis=d.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:"extendXAxisAnnotations",value:function(t){var e=new x;return t.annotations.xaxis=d.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:"extendPointAnnotations",value:function(t){var e=new x;return t.annotations.points=d.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:"checkForDarkTheme",value:function(t){t.theme&&"dark"===t.theme.mode&&(t.tooltip||(t.tooltip={}),"light"!==t.tooltip.theme&&(t.tooltip.theme="dark"),t.chart.foreColor||(t.chart.foreColor="#f6f7f8"),t.theme.palette||(t.theme.palette="palette4"))}},{key:"checkEmptySeries",value:function(t){return 0===t.length?[{data:[]}]:t}},{key:"handleUserInputErrors",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if(e.chart.scroller&&console.warn("Scroller has been deprecated since v2.0.0. Please remove the configuration for chart.scroller"),("bar"===e.chart.type||"rangeBar"===e.chart.type)&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return"bar"!==e.chart.type&&"rangeBar"!==e.chart.type||e.tooltip.shared&&("barWidth"===e.xaxis.crosshairs.width&&e.series.length>1&&(console.warn('crosshairs.width = "barWidth" is only supported in single series, not in a multi-series barChart.'),e.xaxis.crosshairs.width="tickWidth"),e.plotOptions.bar.horizontal&&(e.states.hover.type="none",e.tooltip.shared=!1),e.tooltip.followCursor||(console.warn("followCursor option in shared columns cannot be turned off. Please set %ctooltip.followCursor: true","color: blue;"),e.tooltip.followCursor=!0)),"candlestick"===e.chart.type&&e.yaxis[0].reversed&&(console.warn("Reversed y-axis in candlestick chart is not supported."),e.yaxis[0].reversed=!1),e.chart.group&&0===e.yaxis[0].labels.minWidth&&console.warn("It looks like you have multiple charts in synchronization. You must provide yaxis.labels.minWidth which must be EQUAL for all grouped charts to prevent incorrect behaviour."),Array.isArray(e.stroke.width)&&"line"!==e.chart.type&&"area"!==e.chart.type&&(console.warn("stroke.width option accepts array only for line and area charts. Reverted back to Number"),e.stroke.width=e.stroke.width[0]),e}}]),i}(),k=function(){function t(){e(this,t)}return s(t,[{key:"globalVars",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,initialConfig:null,lastXAxis:[],lastYAxis:[],series:[],seriesRangeStart:[],seriesRangeEnd:[],seriesPercent:[],seriesTotals:[],stackedSeriesTotals:[],seriesX:[],seriesZ:[],labels:[],timelineLabels:[],invertedTimelineLabels:[],seriesNames:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,selectedDataPoints:[],ignoreYAxisIndexes:[],padHorizontal:0,maxValsInArrayIndex:0,zoomEnabled:"zoom"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:"pan"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:"selection"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,minY:Number.MIN_VALUE,maxY:-Number.MAX_VALUE,minYArr:[],maxYArr:[],maxX:-Number.MAX_VALUE,initialmaxX:-Number.MAX_VALUE,minX:Number.MIN_VALUE,initialminX:Number.MIN_VALUE,minZ:Number.MIN_VALUE,maxZ:-Number.MAX_VALUE,minXDiff:Number.MAX_VALUE,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yRange:[],zRange:0,xRange:0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,delayedElements:[],axisCharts:!0,isXNumeric:!1,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,comboChartsHasBars:!1,dataChanged:!1,previousPaths:[],seriesXvalues:[],seriesYvalues:[],seriesCandleO:[],seriesCandleH:[],seriesCandleL:[],seriesCandleC:[],allSeriesHasEqualX:!0,dataPoints:0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,yAxisScale:[],xAxisScale:null,xAxisTicksPositions:[],timescaleTicks:[],rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yLabelsCoords:[],yTitleCoords:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null,tooltipOpts:null}}},{key:"init",value:function(t){var e=this.globalVars(t);return e.initialConfig=d.extend({},t),e.initialSeries=JSON.parse(JSON.stringify(e.initialConfig.series)),e.lastXAxis=JSON.parse(JSON.stringify(e.initialConfig.xaxis)),e.lastYAxis=JSON.parse(JSON.stringify(e.initialConfig.yaxis)),e}}]),t}(),A=function(){function t(i){e(this,t),this.opts=i}return s(t,[{key:"init",value:function(){var t=new w(this.opts).init();return{config:t,globals:(new k).init(t)}}}]),t}(),S=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.opts=null,this.seriesIndex=0}return s(t,[{key:"clippedImgArea",value:function(t){var e=this.w,i=e.config,s=parseInt(e.globals.gridWidth),a=parseInt(e.globals.gridHeight),n=s>a?s:a,r=t.image,o=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(o=i.fill.image.width+1,l=i.fill.image.height):(o=n+1,l=n):(o=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,"pattern");f.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:"userSpaceOnUse",width:o+"px",height:l+"px"});var c=document.createElementNS(e.globals.SVGNS,"image");h.appendChild(c),c.setAttributeNS("http://www.w3.org/1999/xlink","href",r),f.setAttrs(c,{x:0,y:0,preserveAspectRatio:"none",width:o+"px",height:l+"px"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:"getSeriesIndex",value:function(t){var e=this.w;return"bar"===e.config.chart.type&&e.config.plotOptions.bar.distributed||"heatmap"===e.config.chart.type?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(t){var e=this.w;this.opts=t;var i,s,a,n=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var r=this.getFillColors(),o=r[this.seriesIndex];"function"==typeof o&&(o=o({seriesIndex:this.seriesIndex,value:t.value,w:e}));var l=this.getFillType(this.seriesIndex),h=Array.isArray(n.fill.opacity)?n.fill.opacity[this.seriesIndex]:n.fill.opacity,c=o;return t.color&&(o=t.color),-1===o.indexOf("rgb")?c=d.hexToRgba(o,h):o.indexOf("rgba")>-1&&(h="0."+d.getOpacityFromRGBA(r[this.seriesIndex])),"pattern"===l&&(s=this.handlePatternFill(s,o,h,c)),"gradient"===l&&(a=this.handleGradientFill(a,o,h,this.seriesIndex)),n.fill.image.src.length>0&&"image"===l?t.seriesNumber<n.fill.image.src.length?(this.clippedImgArea({opacity:h,image:n.fill.image.src[t.seriesNumber],patternUnits:t.patternUnits,patternID:"pattern".concat(e.globals.cuid).concat(t.seriesNumber+1)}),i="url(#pattern".concat(e.globals.cuid).concat(t.seriesNumber+1,")")):i=c:i="gradient"===l?a:"pattern"===l?s:c,t.solid&&(i=c),i}},{key:"getFillType",value:function(t){var e=this.w;return Array.isArray(e.config.fill.type)?e.config.fill.type[t]:e.config.fill.type}},{key:"getFillColors",value:function(){var t=this.w,e=t.config,i=this.opts,s=[];return t.globals.comboCharts?"line"===t.config.series[this.seriesIndex].type?t.globals.stroke.colors instanceof Array?s=t.globals.stroke.colors:s.push(t.globals.stroke.colors):t.globals.fill.colors instanceof Array?s=t.globals.fill.colors:s.push(t.globals.fill.colors):"line"===e.chart.type?t.globals.stroke.colors instanceof Array?s=t.globals.stroke.colors:s.push(t.globals.stroke.colors):t.globals.fill.colors instanceof Array?s=t.globals.fill.colors:s.push(t.globals.fill.colors),void 0!==i.fillColors&&(s=[],i.fillColors instanceof Array?s=i.fillColors.slice():s.push(i.fillColors)),s}},{key:"handlePatternFill",value:function(t,e,i,s){var a=this.w.config,n=this.opts,r=new f(this.ctx),o=void 0===a.fill.pattern.strokeWidth?Array.isArray(a.stroke.width)?a.stroke.width[this.seriesIndex]:a.stroke.width:Array.isArray(a.fill.pattern.strokeWidth)?a.fill.pattern.strokeWidth[this.seriesIndex]:a.fill.pattern.strokeWidth,l=e;a.fill.pattern.style instanceof Array?t=void 0!==a.fill.pattern.style[n.seriesNumber]?r.drawPattern(a.fill.pattern.style[n.seriesNumber],a.fill.pattern.width,a.fill.pattern.height,l,o,i):s:t=r.drawPattern(a.fill.pattern.style,a.fill.pattern.width,a.fill.pattern.height,l,o,i);return t}},{key:"handleGradientFill",value:function(t,e,i,s){var a,n,r=this.w.config,o=this.opts,l=new f(this.ctx),h=new d,c=r.fill.gradient.type,u=void 0===r.fill.gradient.opacityFrom?i:Array.isArray(r.fill.gradient.opacityFrom)?r.fill.gradient.opacityFrom[s]:r.fill.gradient.opacityFrom,g=void 0===r.fill.gradient.opacityTo?i:Array.isArray(r.fill.gradient.opacityTo)?r.fill.gradient.opacityTo[s]:r.fill.gradient.opacityTo;if(a=e,n=void 0===r.fill.gradient.gradientToColors||0===r.fill.gradient.gradientToColors.length?"dark"===r.fill.gradient.shade?h.shadeColor(-1*parseFloat(r.fill.gradient.shadeIntensity),e):h.shadeColor(parseFloat(r.fill.gradient.shadeIntensity),e):r.fill.gradient.gradientToColors[o.seriesNumber],r.fill.gradient.inverseColors){var p=a;a=n,n=p}return l.drawGradient(c,a,n,u,g,o.size,r.fill.gradient.stops,r.fill.gradient.colorStops,s)}}]),t}(),C=function(){function t(i,s){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"setGlobalMarkerSize",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length<t.globals.series.length+1)for(var e=0;e<=t.globals.series.length;e++)void 0===t.globals.markers.size[e]&&t.globals.markers.size.push(t.globals.markers.size[0])}else t.globals.markers.size=t.config.series.map(function(e){return t.config.markers.size})}},{key:"plotChartMarkers",value:function(t,e,i){var s,a=this,n=this.w,r=e,o=t,l=null,h=new f(this.ctx);if(n.globals.markers.size[e]>0&&(l=h.group({class:"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(n.globals.cuid,")")),o.x instanceof Array)for(var c=function(t){var c=i;1===i&&0===t&&(c=0),1===i&&1===t&&(c=1);var g="apexcharts-marker";if("line"!==n.config.chart.type&&"area"!==n.config.chart.type||n.globals.comboCharts||n.config.tooltip.intersect||(g+=" no-pointer-events"),Array.isArray(n.config.markers.size)?n.globals.markers.size[e]>0:n.config.markers.size>0){d.isNumber(o.y[t])?g+=" w".concat((Math.random()+1).toString(36).substring(4)):g="apexcharts-nullpoint";var f=a.getMarkerConfig(g,e);n.config.markers.discrete.map(function(t){t.seriesIndex===e&&t.dataPointIndex===c&&(f.pointStrokeColor=t.strokeColor,f.pointFillColor=t.fillColor,f.pSize=t.size)}),n.config.series[r].data[i]&&(n.config.series[r].data[i].fillColor&&(f.pointFillColor=n.config.series[r].data[i].fillColor),n.config.series[r].data[i].strokeColor&&(f.pointStrokeColor=n.config.series[r].data[i].strokeColor)),(s=h.drawMarker(o.x[t],o.y[t],f)).attr("rel",c),s.attr("j",c),s.attr("index",e),s.node.setAttribute("default-marker-size",f.pSize),new u(a.ctx).setSelectionFilter(s,e,c),a.addEvents(s),l&&l.add(s)}else void 0===n.globals.pointsArray[e]&&(n.globals.pointsArray[e]=[]),n.globals.pointsArray[e].push([o.x[t],o.y[t]])},g=0;g<o.x.length;g++)c(g);return l}},{key:"getMarkerConfig",value:function(t,e){var i=this.w,s=this.getMarkerStyle(e);return{pSize:i.globals.markers.size[e],pRadius:i.config.markers.radius,pWidth:i.config.markers.strokeWidth,pointStrokeColor:s.pointStrokeColor,pointFillColor:s.pointFillColor,shape:i.config.markers.shape instanceof Array?i.config.markers.shape[e]:i.config.markers.shape,class:t,pointStrokeOpacity:i.config.markers.strokeOpacity,pointFillOpacity:i.config.markers.fillOpacity,seriesIndex:e}}},{key:"addEvents",value:function(t){var e=new f(this.ctx);t.node.addEventListener("mouseenter",e.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener("mouseleave",e.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener("mousedown",e.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener("touchstart",e.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:"getMarkerStyle",value:function(t){var e=this.w,i=e.globals.markers.colors,s=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:s instanceof Array?s[t]:s,pointFillColor:i instanceof Array?i[t]:i}}}]),t}(),L=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.radiusSizes=[]}return s(t,[{key:"draw",value:function(t,e,i){var s=this.w,a=new f(this.ctx),n=i.realIndex,r=i.pointsPos,o=i.zRatio,l=i.elParent,h=a.group({class:"apexcharts-series-markers apexcharts-series-".concat(s.config.chart.type)});if(h.attr("clip-path","url(#gridRectMarkerMask".concat(s.globals.cuid,")")),r.x instanceof Array)for(var c=0;c<r.x.length;c++){var d=e+1,u=!0;0===e&&0===c&&(d=0),0===e&&1===c&&(d=1);var g=0,p=s.globals.markers.size[n];o!==1/0&&(p=s.globals.seriesZ[n][d]/o,void 0===this.radiusSizes[n]&&this.radiusSizes.push([]),this.radiusSizes[n].push(p)),s.config.chart.animations.enabled||(g=p);var x=r.x[c],b=r.y[c];if(g=g||0,(0===x&&0===b||null===b||void 0===s.globals.series[n][d])&&(u=!1),u){var m=this.drawPoint(x,b,g,p,n,d,e);h.add(m)}l.add(h)}}},{key:"drawPoint",value:function(t,e,i,s,a,n,r){var o=this.w,l=a,h=new g(this.ctx),c=new u(this.ctx),d=new S(this.ctx),p=new C(this.ctx),x=new f(this.ctx),b=p.getMarkerConfig("apexcharts-marker",l),m=d.fillPath({seriesNumber:a,patternUnits:"objectBoundingBox",value:o.globals.series[a][r]}),v=x.drawCircle(i);if(o.config.series[l].data[n]&&o.config.series[l].data[n].fillColor&&(m=o.config.series[l].data[n].fillColor),v.attr({cx:t,cy:e,fill:m,stroke:b.pointStrokeColor,strokeWidth:b.pWidth}),o.config.chart.dropShadow.enabled){var y=o.config.chart.dropShadow;c.dropShadow(v,y,a)}if(this.initialAnim&&!o.globals.dataChanged){var w=1;o.globals.resized||(w=o.config.chart.animations.speed),h.animateCircleRadius(v,0,s,w,o.globals.easing)}if(o.globals.dataChanged)if(this.dynamicAnim){var k,A,L,z,P=o.config.chart.animations.dynamicAnimation.speed;null!=(z=o.globals.previousPaths[a]&&o.globals.previousPaths[a][r])&&(k=z.x,A=z.y,L=void 0!==z.r?z.r:s);for(var M=0;M<o.globals.collapsedSeries.length;M++)o.globals.collapsedSeries[M].index===a&&(P=1,s=0);0===t&&0===e&&(s=0),h.animateCircle(v,{cx:k,cy:A,r:L},{cx:t,cy:e,r:s},P,o.globals.easing)}else v.attr({r:s});return v.attr({rel:n,j:n,index:a,"default-marker-size":s}),c.setSelectionFilter(v,a,n),p.addEvents(v),v.node.classList.add("apexcharts-marker"),v}},{key:"centerTextInBubble",value:function(t){var e=this.w;return{y:t+=parseInt(e.config.dataLabels.style.fontSize)/4}}}]),t}(),z=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"dataLabelsCorrection",value:function(t,e,i,s,a,n,r){var o=this.w,l=!1,h=new f(this.ctx).getTextRects(i,r),c=h.width,d=h.height;void 0===o.globals.dataLabelsRects[s]&&(o.globals.dataLabelsRects[s]=[]),o.globals.dataLabelsRects[s].push({x:t,y:e,width:c,height:d});var u=o.globals.dataLabelsRects[s].length-2,g=void 0!==o.globals.lastDrawnDataLabelsIndexes[s]?o.globals.lastDrawnDataLabelsIndexes[s][o.globals.lastDrawnDataLabelsIndexes[s].length-1]:0;if(void 0!==o.globals.dataLabelsRects[s][u]){var p=o.globals.dataLabelsRects[s][g];(t>p.x+p.width+2||e>p.y+p.height+2||t+c<p.x)&&(l=!0)}return(0===a||n)&&(l=!0),{x:t,y:e,drawnextLabel:l}}},{key:"drawDataLabel",value:function(t,e,i){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"top",a=this.w,n=new f(this.ctx),r=a.config.dataLabels,o=0,l=0,h=i,c=null;if(!r.enabled||t.x instanceof Array!=!0)return c;(c=n.group({class:"apexcharts-data-labels"})).attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")"));for(var d=0;d<t.x.length;d++)if(o=t.x[d]+r.offsetX,l=t.y[d]+r.offsetY-a.globals.markers.size[e]-5,"bottom"===s&&(l=l+2*a.globals.markers.size[e]+1.4*parseInt(r.style.fontSize)),!isNaN(o)){1===i&&0===d&&(h=0),1===i&&1===d&&(h=1);var u=a.globals.series[e][h],g="";if("bubble"===a.config.chart.type)g=a.globals.seriesZ[e][h],l=t.y[d]+a.config.dataLabels.offsetY,l=new L(this.ctx).centerTextInBubble(l,e,h).y;else null!=u&&(g=a.config.dataLabels.formatter(u,{ctx:this.ctx,seriesIndex:e,dataPointIndex:h,w:a}));this.plotDataLabelsText({x:o,y:l,text:g,i:e,j:h,parent:c,offsetCorrection:!0,dataLabelsConfig:a.config.dataLabels})}return c}},{key:"plotDataLabelsText",value:function(t){var e=this.w,i=new f(this.ctx),s=t.x,a=t.y,n=t.i,r=t.j,o=t.text,l=t.textAnchor,h=t.parent,c=t.dataLabelsConfig,d=t.alwaysDrawDataLabel,g=t.offsetCorrection;if(!(Array.isArray(e.config.dataLabels.enabledOnSeries)&&e.config.dataLabels.enabledOnSeries.indexOf(n)>-1)){var p={x:s,y:a,drawnextLabel:!0};if(g&&(p=this.dataLabelsCorrection(s,a,o,n,r,d,parseInt(c.style.fontSize))),e.globals.zoomed||(s=p.x,a=p.y),p.drawnextLabel){var x=i.drawText({width:100,height:parseInt(c.style.fontSize),x:s,y:a,foreColor:e.globals.dataLabels.style.colors[n],textAnchor:l||c.textAnchor,text:o,fontSize:c.style.fontSize,fontFamily:c.style.fontFamily});if(x.attr({class:"apexcharts-datalabel",cx:s,cy:a}),c.dropShadow.enabled){var b=c.dropShadow;new u(this.ctx).dropShadow(x,b)}h.add(x),void 0===e.globals.lastDrawnDataLabelsIndexes[n]&&(e.globals.lastDrawnDataLabelsIndexes[n]=[]),e.globals.lastDrawnDataLabelsIndexes[n].push(r)}}}}]),t}(),P=function(){function t(i,s){e(this,t),this.ctx=i,this.w=i.w;var a=this.w;this.barOptions=a.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=a.config.stroke.width,this.isNullValue=!1,this.xyRatios=s,null!==this.xyRatios&&(this.xRatio=s.xRatio,this.yRatio=s.yRatio,this.invertedXRatio=s.invertedXRatio,this.invertedYRatio=s.invertedYRatio,this.baseLineY=s.baseLineY,this.baseLineInvertedY=s.baseLineInvertedY),this.yaxisIndex=0,this.seriesLen=0}return s(t,[{key:"draw",value:function(t,e){var i=this.w,s=new f(this.ctx),a=new y(this.ctx,i);t=a.getLogSeries(t),this.series=t,this.yRatio=a.getLogYRatios(this.yRatio),this.initVariables(t);var n=s.group({class:"apexcharts-bar-series apexcharts-plot-series"});i.config.dataLabels.enabled&&this.totalItems>i.config.plotOptions.bar.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.");for(var r=0,o=0;r<t.length;r++,o++){var l,h,c,u,g=void 0,p=void 0,x=void 0,b=void 0,m=[],v=[],w=i.globals.comboCharts?e[r]:r,k=s.group({class:"apexcharts-series",rel:r+1,seriesName:d.escapeString(i.globals.seriesNames[w]),"data:realIndex":w});this.ctx.series.addCollapsedClassToSeries(k,w),t[r].length>0&&(this.visibleI=this.visibleI+1);var A=0,S=0,C=0;this.yRatio.length>1&&(this.yaxisIndex=w),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var L=this.initialPositions();b=L.y,S=L.barHeight,h=L.yDivision,u=L.zeroW,x=L.x,C=L.barWidth,l=L.xDivision,c=L.zeroH,this.horizontal||v.push(x+C/2);for(var z=s.group({class:"apexcharts-datalabels"}),P=0,M=i.globals.dataPoints;P<i.globals.dataPoints;P++,M--){void 0===this.series[r][P]||null===t[r][P]?this.isNullValue=!0:this.isNullValue=!1,i.config.stroke.show&&(A=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[w]:this.strokeWidth);var E=null;this.isHorizontal?(E=this.drawBarPaths({indexes:{i:r,j:P,realIndex:w,bc:o},barHeight:S,strokeWidth:A,pathTo:g,pathFrom:p,zeroW:u,x:x,y:b,yDivision:h,elSeries:k}),C=this.series[r][P]/this.invertedYRatio):(E=this.drawColumnPaths({indexes:{i:r,j:P,realIndex:w,bc:o},x:x,y:b,xDivision:l,pathTo:g,pathFrom:p,barWidth:C,zeroH:c,strokeWidth:A,elSeries:k}),S=this.series[r][P]/this.yRatio[this.yaxisIndex]),g=E.pathTo,p=E.pathFrom,b=E.y,x=E.x,P>0&&v.push(x+C/2),m.push(b);var T=this.getPathFillColor(t,r,P,w);k=this.renderSeries({realIndex:w,pathFill:T,j:P,i:r,pathFrom:p,pathTo:g,strokeWidth:A,elSeries:k,x:x,y:b,series:t,barHeight:S,barWidth:C,elDataLabelsWrap:z,visibleSeries:this.visibleI,type:"bar"})}i.globals.seriesXvalues[w]=v,i.globals.seriesYvalues[w]=m,n.add(k)}return n}},{key:"getPathFillColor",value:function(t,e,i,s){var a=this.w,n=new S(this.ctx),r=null,o=this.barOptions.distributed?i:e;this.barOptions.colors.ranges.length>0&&this.barOptions.colors.ranges.map(function(s){t[e][i]>=s.from&&t[e][i]<=s.to&&(r=s.color)});return a.config.series[e].data[i]&&a.config.series[e].data[i].fillColor&&(r=a.config.series[e].data[i].fillColor),n.fillPath({seriesNumber:this.barOptions.distributed?o:s,color:r,value:t[e][i]})}},{key:"renderSeries",value:function(t){var e=t.realIndex,i=t.pathFill,s=t.lineFill,a=t.j,n=t.i,r=t.pathFrom,o=t.pathTo,l=t.strokeWidth,h=t.elSeries,c=t.x,d=t.y,g=t.series,p=t.barHeight,x=t.barWidth,b=t.elDataLabelsWrap,m=t.visibleSeries,v=t.type,y=this.w,w=new f(this.ctx);s||(s=this.barOptions.distributed?y.globals.stroke.colors[a]:y.globals.stroke.colors[e]),y.config.series[n].data[a]&&y.config.series[n].data[a].strokeColor&&(s=y.config.series[n].data[a].strokeColor),this.isNullValue&&(i="none");var k=a/y.config.chart.animations.animateGradually.delay*(y.config.chart.animations.speed/y.globals.dataPoints)/2.4,A=w.renderPaths({i:n,j:a,realIndex:e,pathFrom:r,pathTo:o,stroke:s,strokeWidth:l,strokeLineCap:y.config.stroke.lineCap,fill:i,animationDelay:k,initialSpeed:y.config.chart.animations.speed,dataChangeSpeed:y.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(v,"-area"),id:"apexcharts-".concat(v,"-area")});A.attr("clip-path","url(#gridRectMask".concat(y.globals.cuid,")")),new u(this.ctx).setSelectionFilter(A,e,a),h.add(A);var S=this.calculateDataLabelsPos({x:c,y:d,i:n,j:a,series:g,realIndex:e,barHeight:p,barWidth:x,renderedPath:A,visibleSeries:m});return null!==S&&b.add(S),h.add(b),h}},{key:"initVariables",value:function(t){var e=this.w;this.series=t,this.totalItems=0,this.seriesLen=0,this.visibleI=-1,this.visibleItems=1;for(var i=0;i<t.length;i++)if(t[i].length>0&&(this.seriesLen=this.seriesLen+1,this.totalItems+=t[i].length),e.globals.isXNumeric)for(var s=0;s<t[i].length;s++)e.globals.seriesX[i][s]>e.globals.minX&&e.globals.seriesX[i][s]<e.globals.maxX&&this.visibleItems++;else this.visibleItems=e.globals.dataPoints;0===this.seriesLen&&(this.seriesLen=1)}},{key:"initialPositions",value:function(){var t,e,i,s,a,n,r,o,l=this.w;return this.isHorizontal?(a=(i=l.globals.gridHeight/l.globals.dataPoints)/this.seriesLen,l.globals.isXNumeric&&(a=(i=l.globals.gridHeight/this.totalItems)/this.seriesLen),a=a*parseInt(this.barOptions.barHeight)/100,o=this.baseLineInvertedY+l.globals.padHorizontal+(this.isReversed?l.globals.gridWidth:0)-(this.isReversed?2*this.baseLineInvertedY:0),e=(i-a*this.seriesLen)/2):(n=(s=l.globals.gridWidth/this.visibleItems)/this.seriesLen*parseInt(this.barOptions.columnWidth)/100,l.globals.isXNumeric&&(n=(s=l.globals.minXDiff/this.xRatio)/this.seriesLen*parseInt(this.barOptions.columnWidth)/100),r=l.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?l.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=l.globals.padHorizontal+(s-n*this.seriesLen)/2),{x:t,y:e,yDivision:i,xDivision:s,barHeight:a,barWidth:n,zeroH:r,zeroW:o}}},{key:"drawBarPaths",value:function(t){var e=t.indexes,i=t.barHeight,s=t.strokeWidth,a=t.pathTo,n=t.pathFrom,r=t.zeroW,o=t.x,l=t.y,h=t.yDivision,c=t.elSeries,d=this.w,u=new f(this.ctx),g=e.i,p=e.j,x=e.realIndex,b=e.bc;d.globals.isXNumeric&&(l=(d.globals.seriesX[g][p]-d.globals.minX)/this.invertedXRatio-i);var m=l+i*this.visibleI;a=u.move(r,m),n=u.move(r,m),d.globals.previousPaths.length>0&&(n=this.getPathFrom(x,p));var v={barHeight:i,strokeWidth:s,barYPosition:m,x:o=void 0===this.series[g][p]||null===this.series[g][p]?r:r+this.series[g][p]/this.invertedYRatio-2*(this.isReversed?this.series[g][p]/this.invertedYRatio:0),zeroW:r},y=this.barEndingShape(d,v,this.series,g,p);if(a=a+u.line(y.newX,m)+y.path+u.line(r,m+i-s)+u.line(r,m),n=n+u.line(r,m)+y.ending_p_from+u.line(r,m+i-s)+u.line(r,m+i-s)+u.line(r,m),d.globals.isXNumeric||(l+=h),this.barOptions.colors.backgroundBarColors.length>0&&0===g){b>=this.barOptions.colors.backgroundBarColors.length&&(b=0);var w=this.barOptions.colors.backgroundBarColors[b],k=u.drawRect(0,m-i*this.visibleI,d.globals.gridWidth,i*this.seriesLen,0,w,this.barOptions.colors.backgroundBarOpacity);c.add(k),k.node.classList.add("apexcharts-backgroundBar")}return{pathTo:a,pathFrom:n,x:o,y:l,barYPosition:m}}},{key:"drawColumnPaths",value:function(t){var e=t.indexes,i=t.x,s=t.y,a=t.xDivision,n=t.pathTo,r=t.pathFrom,o=t.barWidth,l=t.zeroH,h=t.strokeWidth,c=t.elSeries,d=this.w,u=new f(this.ctx),g=e.i,p=e.j,x=e.realIndex,b=e.bc;d.globals.isXNumeric&&(i=(d.globals.seriesX[g][p]-d.globals.minX)/this.xRatio-o/2);var m=i+o*this.visibleI;n=u.move(m,l),r=u.move(m,l),d.globals.previousPaths.length>0&&(r=this.getPathFrom(x,p));var v={barWidth:o,strokeWidth:h,barXPosition:m,y:s=void 0===this.series[g][p]||null===this.series[g][p]?l:l-this.series[g][p]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[g][p]/this.yRatio[this.yaxisIndex]:0),zeroH:l},y=this.barEndingShape(d,v,this.series,g,p);if(n=n+u.line(m,y.newY)+y.path+u.line(m+o-h,l)+u.line(m-h/2,l),r=r+u.line(m,l)+y.ending_p_from+u.line(m+o-h,l)+u.line(m+o-h,l)+u.line(m-h/2,l),d.globals.isXNumeric||(i+=a),this.barOptions.colors.backgroundBarColors.length>0&&0===g){b>=this.barOptions.colors.backgroundBarColors.length&&(b=0);var w=this.barOptions.colors.backgroundBarColors[b],k=u.drawRect(m-o*this.visibleI,0,o*this.seriesLen,d.globals.gridHeight,0,w,this.barOptions.colors.backgroundBarOpacity);c.add(k),k.node.classList.add("apexcharts-backgroundBar")}return{pathTo:n,pathFrom:r,x:i,y:s,barXPosition:m}}},{key:"getPathFrom",value:function(t,e){for(var i,s=this.w,a=0;a<s.globals.previousPaths.length;a++){var n=s.globals.previousPaths[a];n.paths.length>0&&parseInt(n.realIndex)===parseInt(t)&&void 0!==s.globals.previousPaths[a].paths[e]&&(i=s.globals.previousPaths[a].paths[e].d)}return i}},{key:"calculateDataLabelsPos",value:function(t){var e=t.x,i=t.y,s=t.i,a=t.j,n=t.realIndex,r=t.series,o=t.barHeight,l=t.barWidth,h=t.visibleSeries,c=t.renderedPath,d=this.w,u=new f(this.ctx),g=Array.isArray(this.strokeWidth)?this.strokeWidth[n]:this.strokeWidth,p=e+parseFloat(l*h),x=i+parseFloat(o*h);d.globals.isXNumeric&&!d.globals.isBarHorizontal&&(p=e+parseFloat(l*(h+1))-g,x=i+parseFloat(o*(h+1))-g);var b=e,m=i,v={},y=d.config.dataLabels,w=this.barOptions.dataLabels,k=y.offsetX,A=y.offsetY,S={width:0,height:0};return d.config.dataLabels.enabled&&(S=u.getTextRects(d.globals.yLabelFormatters[0](d.globals.maxY),parseInt(y.style.fontSize))),v=this.isHorizontal?this.calculateBarsDataLabelsPosition({x:e,y:i,i:s,j:a,renderedPath:c,bcy:x,barHeight:o,barWidth:l,textRects:S,strokeWidth:g,dataLabelsX:b,dataLabelsY:m,barDataLabelsConfig:w,offX:k,offY:A}):this.calculateColumnsDataLabelsPosition({x:e,y:i,i:s,j:a,renderedPath:c,realIndex:n,bcx:p,bcy:x,barHeight:o,barWidth:l,textRects:S,strokeWidth:g,dataLabelsY:m,barDataLabelsConfig:w,offX:k,offY:A}),c.attr({cy:v.bcy,cx:v.bcx,j:a,val:r[s][a],barHeight:o,barWidth:l}),this.drawCalculatedDataLabels({x:v.dataLabelsX,y:v.dataLabelsY,val:r[s][a],i:n,j:a,barWidth:l,barHeight:o,textRects:S,dataLabelsConfig:y})}},{key:"calculateColumnsDataLabelsPosition",value:function(t){var e,i=this.w,s=t.i,a=t.j,n=t.y,r=t.bcx,o=t.barWidth,l=t.barHeight,h=t.textRects,c=t.dataLabelsY,d=t.barDataLabelsConfig,u=t.strokeWidth,g=t.offX,f=t.offY,p=i.globals.gridWidth/i.globals.dataPoints;r-=u/2,e=i.globals.isXNumeric?r-o/2+g:r-p+o/2+g;var x=this.series[s][a]<=0;switch(this.isReversed&&(n-=l),d.position){case"center":c=x?n+l/2+h.height/2+f:n+l/2+h.height/2-f;break;case"bottom":c=x?n+l+h.height+u+f:n+l-h.height/2+u-f;break;case"top":c=x?n-h.height/2-f:n+h.height+f}return i.config.chart.stacked||(c<0?c=0+u:c+h.height/3>i.globals.gridHeight&&(c=i.globals.gridHeight-u)),{bcx:r,bcy:n,dataLabelsX:e,dataLabelsY:c}}},{key:"calculateBarsDataLabelsPosition",value:function(t){var e=this.w,i=t.x,s=t.i,a=t.j,n=t.bcy,r=t.barHeight,o=t.barWidth,l=t.textRects,h=t.dataLabelsX,c=t.strokeWidth,d=t.barDataLabelsConfig,u=t.offX,g=t.offY,f=n-e.globals.gridHeight/e.globals.dataPoints+r/2+l.height/2+g-3,p=this.series[s][a]<=0;switch(this.isReversed&&(i+=o),d.position){case"center":h=p?i-o/2-u:i-o/2+u;break;case"bottom":h=p?i-o-c-Math.round(l.width/2)-u:i-o+c+Math.round(l.width/2)+u;break;case"top":h=p?i-c+Math.round(l.width/2)-u:i-c-Math.round(l.width/2)+u}return e.config.chart.stacked||(h<0?h=h+l.width+c:h+l.width/2>e.globals.gridWidth&&(h=e.globals.gridWidth-l.width-c)),{bcx:i,bcy:n,dataLabelsX:h,dataLabelsY:f}}},{key:"drawCalculatedDataLabels",value:function(t){var e=t.x,i=t.y,s=t.val,a=t.i,n=t.j,r=t.textRects,o=t.barHeight,l=t.barWidth,h=t.dataLabelsConfig,c=this.w,d=new z(this.ctx),u=new f(this.ctx),g=h.formatter,p=null,x=c.globals.collapsedSeriesIndices.indexOf(a)>-1;if(h.enabled&&!x){p=u.group({class:"apexcharts-data-labels"});var b="";null!=s&&(b=g(s,{seriesIndex:a,dataPointIndex:n,w:c})),0===s&&c.config.chart.stacked&&(b=""),c.config.chart.stacked&&this.barOptions.dataLabels.hideOverflowingLabels&&(this.isHorizontal?(l=this.series[a][n]/this.yRatio[this.yaxisIndex],r.width/1.6>l&&(b="")):(o=this.series[a][n]/this.yRatio[this.yaxisIndex],r.height/1.6>o&&(b=""))),d.plotDataLabelsText({x:e,y:i,text:b,i:a,j:n,parent:p,dataLabelsConfig:h,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return p}},{key:"barEndingShape",value:function(t,e,i,s,a){var n=new f(this.ctx);if(this.isHorizontal){var r=null,o=e.x;if(void 0!==i[s][a]||null!==i[s][a]){var l=i[s][a]<0,h=e.barHeight/2-e.strokeWidth;switch(l&&(h=-e.barHeight/2-e.strokeWidth),t.config.chart.stacked||"rounded"===this.barOptions.endingShape&&(o=e.x-h/2),this.barOptions.endingShape){case"flat":r=n.line(o,e.barYPosition+e.barHeight-e.strokeWidth);break;case"rounded":r=n.quadraticCurve(o+h,e.barYPosition+(e.barHeight-e.strokeWidth)/2,o,e.barYPosition+e.barHeight-e.strokeWidth)}}return{path:r,ending_p_from:"",newX:o}}var c=null,d=e.y;if(void 0!==i[s][a]||null!==i[s][a]){var u=i[s][a]<0,g=e.barWidth/2-e.strokeWidth;switch(u&&(g=-e.barWidth/2-e.strokeWidth),t.config.chart.stacked||"rounded"===this.barOptions.endingShape&&(d+=g/2),this.barOptions.endingShape){case"flat":c=n.line(e.barXPosition+e.barWidth-e.strokeWidth,d);break;case"rounded":c=n.quadraticCurve(e.barXPosition+(e.barWidth-e.strokeWidth)/2,d-g,e.barXPosition+e.barWidth-e.strokeWidth,d)}}return{path:c,ending_p_from:"",newY:d}}}]),t}(),M=function(t){function i(){return e(this,i),h(this,o(i).apply(this,arguments))}return r(i,P),s(i,[{key:"draw",value:function(t,e){var i=this.w;this.graphics=new f(this.ctx),this.fill=new S(this.ctx),this.bar=new P(this.ctx,this.xyRatios);var s=new y(this.ctx,i);t=s.getLogSeries(t),this.yRatio=s.getLogYRatios(this.yRatio),this.initVariables(t),"100%"===i.config.chart.stackType&&(t=i.globals.seriesPercent.slice()),this.series=t,this.totalItems=0,this.prevY=[],this.prevX=[],this.prevYF=[],this.prevXF=[],this.prevYVal=[],this.prevXVal=[],this.xArrj=[],this.xArrjF=[],this.xArrjVal=[],this.yArrj=[],this.yArrjF=[],this.yArrjVal=[];for(var a=0;a<t.length;a++)t[a].length>0&&(this.totalItems+=t[a].length);for(var n=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),r=0,o=0,l=0,h=0;l<t.length;l++,h++){var c=void 0,u=void 0,g=void 0,p=void 0,x=void 0,b=void 0,m=[],v=[],w=i.globals.comboCharts?e[l]:l;this.yRatio.length>1&&(this.yaxisIndex=w),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var k=this.graphics.group({class:"apexcharts-series",seriesName:d.escapeString(i.globals.seriesNames[w]),rel:l+1,"data:realIndex":w}),A=this.graphics.group({class:"apexcharts-datalabels"}),C=0,L=0,z=0,M=this.initialPositions(r,o,g,p,x,b);o=M.y,L=M.barHeight,p=M.yDivision,b=M.zeroW,r=M.x,z=M.barWidth,g=M.xDivision,x=M.zeroH,this.yArrj=[],this.yArrjF=[],this.yArrjVal=[],this.xArrj=[],this.xArrjF=[],this.xArrjVal=[];for(var E=0;E<i.globals.dataPoints;E++){i.config.stroke.show&&(C=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[w]:this.strokeWidth);var T=null;this.isHorizontal?(T=this.drawBarPaths({indexes:{i:l,j:E,realIndex:w,bc:h},barHeight:L,strokeWidth:C,pathTo:c,pathFrom:u,zeroW:b,x:r,y:o,yDivision:p,elSeries:k}),z=this.series[l][E]/this.invertedYRatio):(T=this.drawColumnPaths({indexes:{i:l,j:E,realIndex:w,bc:h},x:r,y:o,xDivision:g,pathTo:c,pathFrom:u,barWidth:z,zeroH:x,strokeWidth:C,elSeries:k}),L=this.series[l][E]/this.yRatio[this.yaxisIndex]),c=T.pathTo,u=T.pathFrom,o=T.y,r=T.x,m.push(r),v.push(o);var X=this.bar.getPathFillColor(t,l,E,w);k=this.renderSeries({realIndex:w,pathFill:X,j:E,i:l,pathFrom:u,pathTo:c,strokeWidth:C,elSeries:k,x:r,y:o,series:t,barHeight:L,barWidth:z,elDataLabelsWrap:A,type:"bar",visibleSeries:0})}i.globals.seriesXvalues[w]=m,i.globals.seriesYvalues[w]=v,this.prevY.push(this.yArrj),this.prevYF.push(this.yArrjF),this.prevYVal.push(this.yArrjVal),this.prevX.push(this.xArrj),this.prevXF.push(this.xArrjF),this.prevXVal.push(this.xArrjVal),n.add(k)}return n}},{key:"initialPositions",value:function(t,e,i,s,a,n){var r,o,l=this.w;return this.isHorizontal?(r=(r=s=l.globals.gridHeight/l.globals.dataPoints)*parseInt(l.config.plotOptions.bar.barHeight)/100,n=this.baseLineInvertedY+l.globals.padHorizontal+(this.isReversed?l.globals.gridWidth:0)-(this.isReversed?2*this.baseLineInvertedY:0),e=(s-r)/2):(o=i=l.globals.gridWidth/l.globals.dataPoints,o=l.globals.isXNumeric?(i=l.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth)/100:o*parseInt(l.config.plotOptions.bar.columnWidth)/100,a=this.baseLineY[this.yaxisIndex]+(this.isReversed?l.globals.gridHeight:0)-(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=l.globals.padHorizontal+(i-o)/2),{x:t,y:e,yDivision:s,xDivision:i,barHeight:r,barWidth:o,zeroH:a,zeroW:n}}},{key:"drawBarPaths",value:function(t){for(var e,i=t.indexes,s=t.barHeight,a=t.strokeWidth,n=t.pathTo,r=t.pathFrom,o=t.zeroW,l=t.x,h=t.y,c=t.yDivision,d=t.elSeries,u=this.w,g=h,f=i.i,p=i.j,x=i.realIndex,b=i.bc,m=0,v=0;v<this.prevXF.length;v++)m+=this.prevXF[v][p];if(f>0){var y=o;this.prevXVal[f-1][p]<0?y=this.series[f][p]>=0?this.prevX[f-1][p]+m-2*(this.isReversed?m:0):this.prevX[f-1][p]:this.prevXVal[f-1][p]>=0&&(y=this.series[f][p]>=0?this.prevX[f-1][p]:this.prevX[f-1][p]-m+2*(this.isReversed?m:0)),e=y}else e=o;l=null===this.series[f][p]?e:e+this.series[f][p]/this.invertedYRatio-2*(this.isReversed?this.series[f][p]/this.invertedYRatio:0);var w={barHeight:s,strokeWidth:a,invertedYRatio:this.invertedYRatio,barYPosition:g,x:l},k=this.bar.barEndingShape(u,w,this.series,f,p);if(this.series.length>1&&f!==this.endingShapeOnSeriesNumber&&(k.path=this.graphics.line(k.newX,g+s-a)),this.xArrj.push(k.newX),this.xArrjF.push(Math.abs(e-k.newX)),this.xArrjVal.push(this.series[f][p]),n=this.graphics.move(e,g),r=this.graphics.move(e,g),u.globals.previousPaths.length>0&&(r=this.bar.getPathFrom(x,p,!1)),n=n+this.graphics.line(k.newX,g)+k.path+this.graphics.line(e,g+s-a)+this.graphics.line(e,g),r=r+this.graphics.line(e,g)+this.graphics.line(e,g+s-a)+this.graphics.line(e,g+s-a)+this.graphics.line(e,g+s-a)+this.graphics.line(e,g),u.config.plotOptions.bar.colors.backgroundBarColors.length>0&&0===f){b>=u.config.plotOptions.bar.colors.backgroundBarColors.length&&(b=0);var A=u.config.plotOptions.bar.colors.backgroundBarColors[b],S=this.graphics.drawRect(0,g,u.globals.gridWidth,s,0,A,u.config.plotOptions.bar.colors.backgroundBarOpacity);d.add(S),S.node.classList.add("apexcharts-backgroundBar")}return{pathTo:n,pathFrom:r,x:l,y:h+=c}}},{key:"drawColumnPaths",value:function(t){var e=t.indexes,i=t.x,s=t.y,a=t.xDivision,n=t.pathTo,r=t.pathFrom,o=t.barWidth,l=t.zeroH,h=t.strokeWidth,c=t.elSeries,d=this.w,u=e.i,g=e.j,f=e.realIndex,p=e.bc;if(d.globals.isXNumeric){var x=d.globals.seriesX[u][g];x||(x=0),i=(x-d.globals.minX)/this.xRatio-o/2}for(var b,m=i,v=0,y=0;y<this.prevYF.length;y++)v+=this.prevYF[y][g];if(u>0&&!d.globals.isXNumeric||u>0&&d.globals.isXNumeric&&d.globals.seriesX[u-1][g]===d.globals.seriesX[u][g]){var w=this.prevY[u-1][g];b=this.prevYVal[u-1][g]<0?this.series[u][g]>=0?w-v+2*(this.isReversed?v:0):w:this.series[u][g]>=0?w:w+v-2*(this.isReversed?v:0)}else b=d.globals.gridHeight-l;s=b-this.series[u][g]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[u][g]/this.yRatio[this.yaxisIndex]:0);var k={barWidth:o,strokeWidth:h,yRatio:this.yRatio[this.yaxisIndex],barXPosition:m,y:s},A=this.bar.barEndingShape(d,k,this.series,u,g);if(this.yArrj.push(A.newY),this.yArrjF.push(Math.abs(b-A.newY)),this.yArrjVal.push(this.series[u][g]),n=this.graphics.move(m,b),r=this.graphics.move(m,b),d.globals.previousPaths.length>0&&(r=this.bar.getPathFrom(f,g,!1)),n=n+this.graphics.line(m,A.newY)+A.path+this.graphics.line(m+o-h,b)+this.graphics.line(m-h/2,b),r=r+this.graphics.line(m,b)+this.graphics.line(m+o-h,b)+this.graphics.line(m+o-h,b)+this.graphics.line(m+o-h,b)+this.graphics.line(m-h/2,b),d.config.plotOptions.bar.colors.backgroundBarColors.length>0&&0===u){p>=d.config.plotOptions.bar.colors.backgroundBarColors.length&&(p=0);var S=d.config.plotOptions.bar.colors.backgroundBarColors[p],C=this.graphics.drawRect(m,0,o,d.globals.gridHeight,0,S,d.config.plotOptions.bar.colors.backgroundBarOpacity);c.add(C),C.node.classList.add("apexcharts-backgroundBar")}return i+=a,{pathTo:n,pathFrom:r,x:d.globals.isXNumeric?i-a:i,y:s}}},{key:"checkZeroSeries",value:function(t){for(var e=t.series,i=this.w,s=0;s<e.length;s++){for(var a=0,n=0;n<e[i.globals.maxValsInArrayIndex].length;n++)a+=e[s][n];0===a&&this.zeroSerieses.push(s)}for(var r=e.length-1;r>=0;r--)this.zeroSerieses.indexOf(r)>-1&&r===this.endingShapeOnSeriesNumber&&(this.endingShapeOnSeriesNumber-=1)}}]),i}(),E=function(t){function i(){return e(this,i),h(this,o(i).apply(this,arguments))}return r(i,P),s(i,[{key:"draw",value:function(t,e){var i=this.w,s=new f(this.ctx),a=new S(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick;var n=new y(this.ctx,i);t=n.getLogSeries(t),this.series=t,this.yRatio=n.getLogYRatios(this.yRatio),this.initVariables(t);for(var r=s.group({class:"apexcharts-candlestick-series apexcharts-plot-series"}),o=0,l=0;o<t.length;o++,l++){var h,c,u=void 0,g=void 0,p=void 0,x=void 0,b=[],m=[],v=i.globals.comboCharts?e[o]:o,w=s.group({class:"apexcharts-series",seriesName:d.escapeString(i.globals.seriesNames[v]),rel:o+1,"data:realIndex":v});t[o].length>0&&(this.visibleI=this.visibleI+1);var k,A,C=0;this.yRatio.length>1&&(this.yaxisIndex=v);var L=this.initialPositions();x=L.y,k=L.barHeight,p=L.x,A=L.barWidth,h=L.xDivision,c=L.zeroH,m.push(p+A/2);for(var z=s.group({class:"apexcharts-datalabels"}),P=0,M=i.globals.dataPoints;P<i.globals.dataPoints;P++,M--){void 0===this.series[o][P]||null===t[o][P]?this.isNullValue=!0:this.isNullValue=!1,i.config.stroke.show&&(C=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[v]:this.strokeWidth);var E,T=this.drawCandleStickPaths({indexes:{i:o,j:P,realIndex:v,bc:l},x:p,y:x,xDivision:h,pathTo:u,pathFrom:g,barWidth:A,zeroH:c,strokeWidth:C,elSeries:w});u=T.pathTo,g=T.pathFrom,x=T.y,p=T.x,E=T.color,P>0&&m.push(p+A/2),b.push(x);var X=a.fillPath({seriesNumber:v,color:E,value:t[o][P]}),I=this.candlestickOptions.wick.useFillColor?E:void 0;w=this.renderSeries({realIndex:v,pathFill:X,lineFill:I,j:P,i:o,pathFrom:g,pathTo:u,strokeWidth:C,elSeries:w,x:p,y:x,series:t,barHeight:k,barWidth:A,elDataLabelsWrap:z,visibleSeries:this.visibleI,type:"candlestick"})}i.globals.seriesXvalues[v]=m,i.globals.seriesYvalues[v]=b,r.add(w)}return r}},{key:"drawCandleStickPaths",value:function(t){var e=t.indexes,i=t.x,s=(t.y,t.xDivision),a=t.pathTo,n=t.pathFrom,r=t.barWidth,o=t.zeroH,l=t.strokeWidth,h=this.w,c=new f(this.ctx),d=e.i,u=e.j,g=!0,p=h.config.plotOptions.candlestick.colors.upward,x=h.config.plotOptions.candlestick.colors.downward,b=this.yRatio[this.yaxisIndex],m=e.realIndex,v=this.getOHLCValue(m,u),y=o,w=o;v.o>v.c&&(g=!1);var k=Math.min(v.o,v.c),A=Math.max(v.o,v.c);h.globals.isXNumeric&&(i=(h.globals.seriesX[d][u]-h.globals.minX)/this.xRatio-r/2);var S=i+r*this.visibleI;return void 0===this.series[d][u]||null===this.series[d][u]?k=o:(k=o-k/b,A=o-A/b,y=o-v.h/b,w=o-v.l/b),c.move(S,o),n=c.move(S,k),h.globals.previousPaths.length>0&&(n=this.getPathFrom(m,u,!0)),a=c.move(S,A)+c.line(S+r/2,A)+c.line(S+r/2,y)+c.line(S+r/2,A)+c.line(S+r,A)+c.line(S+r,k)+c.line(S+r/2,k)+c.line(S+r/2,w)+c.line(S+r/2,k)+c.line(S,k)+c.line(S,A-l/2),n+=c.move(S,k),h.globals.isXNumeric||(i+=s),{pathTo:a,pathFrom:n,x:i,y:A,barXPosition:S,color:g?p:x}}},{key:"getOHLCValue",value:function(t,e){var i=this.w;return{o:i.globals.seriesCandleO[t][e],h:i.globals.seriesCandleH[t][e],l:i.globals.seriesCandleL[t][e],c:i.globals.seriesCandleC[t][e]}}}]),i}(),T=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"drawXCrosshairs",value:function(){var t=this.w,e=new f(this.ctx),i=new u(this.ctx),s=t.config.xaxis.crosshairs.fill.gradient,a=t.config.xaxis.crosshairs.dropShadow,n=t.config.xaxis.crosshairs.fill.type,r=s.colorFrom,o=s.colorTo,l=s.opacityFrom,h=s.opacityTo,c=s.stops,g=a.enabled,p=a.left,x=a.top,b=a.blur,m=a.color,v=a.opacity,y=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){"gradient"===n&&(y=e.drawGradient("vertical",r,o,l,h,null,c,null));var w=e.drawRect();1===t.config.xaxis.crosshairs.width&&(w=e.drawLine()),w.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:t.globals.gridHeight,width:d.isNumber(t.config.xaxis.crosshairs.width)?t.config.xaxis.crosshairs.width:0,height:t.globals.gridHeight,fill:y,filter:"none","fill-opacity":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,"stroke-width":t.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":t.config.xaxis.crosshairs.stroke.dashArray}),g&&(w=i.dropShadow(w,{left:p,top:x,blur:b,color:m,opacity:v})),t.globals.dom.elGraphical.add(w)}}},{key:"drawYCrosshairs",value:function(){var t=this.w,e=new f(this.ctx),i=t.config.yaxis[0].crosshairs;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(0,0,t.globals.gridWidth,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),t.globals.dom.elGraphical.add(s)}var a=e.drawLine(0,0,t.globals.gridWidth,0,i.stroke.color,0,0);a.attr({class:"apexcharts-ycrosshairs-hidden"}),t.globals.dom.elGraphical.add(a)}}]),t}(),X=function(){function t(i,s){e(this,t),this.ctx=i,this.w=i.w,this.xRatio=s.xRatio,this.yRatio=s.yRatio,this.negRange=!1,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.width}return s(t,[{key:"draw",value:function(t){var e=this.w,i=new f(this.ctx),s=i.group({class:"apexcharts-heatmap"});s.attr("clip-path","url(#gridRectMask".concat(e.globals.cuid,")"));var a=e.globals.gridWidth/e.globals.dataPoints,n=e.globals.gridHeight/e.globals.series.length,r=0,o=!1;this.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(o=!0,l.reverse());for(var h=o?0:l.length-1;o?h<l.length:h>=0;o?h++:h--){var c=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:d.escapeString(e.globals.seriesNames[h]),rel:h+1,"data:realIndex":h});if(e.config.chart.dropShadow.enabled){var g=e.config.chart.dropShadow;new u(this.ctx).dropShadow(c,g,h)}for(var p=0,x=0;x<l[h].length;x++){var b=1,m=this.determineHeatColor(h,x);if(e.globals.hasNegs||this.negRange){var v=e.config.plotOptions.heatmap.shadeIntensity;b=e.config.plotOptions.heatmap.reverseNegativeShade?m.percent<0?m.percent/100*(1.25*v):(1-m.percent/100)*(1.25*v):m.percent<0?1-(1+m.percent/100)*v:(1-m.percent/100)*v}else b=1-m.percent/100;var y=m.color;if(e.config.plotOptions.heatmap.enableShades){var w=new d;y=d.hexToRgba(w.shadeColor(b,m.color),e.config.fill.opacity)}var k=this.rectRadius,A=i.drawRect(p,r,a,n,k);if(A.attr({cx:p,cy:r}),A.node.classList.add("apexcharts-heatmap-rect"),c.add(A),A.attr({fill:y,i:h,index:h,j:x,val:l[h][x],"stroke-width":this.strokeWidth,stroke:e.globals.stroke.colors[0],color:y}),A.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this,A)),A.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this,A)),A.node.addEventListener("mousedown",i.pathMouseDown.bind(this,A)),e.config.chart.animations.enabled&&!e.globals.dataChanged){var S=1;e.globals.resized||(S=e.config.chart.animations.speed),this.animateHeatMap(A,p,r,a,n,S)}if(e.globals.dataChanged){var C=1;if(this.dynamicAnim.enabled&&e.globals.shouldAnimate){C=this.dynamicAnim.speed;var L=e.globals.previousPaths[h]&&e.globals.previousPaths[h][x]&&e.globals.previousPaths[h][x].color;L||(L="rgba(255, 255, 255, 0)"),this.animateHeatColor(A,d.isColorHex(L)?L:d.rgb2hex(L),d.isColorHex(y)?y:d.rgb2hex(y),C)}}var z=this.calculateHeatmapDataLabels({x:p,y:r,i:h,j:x,series:l,rectHeight:n,rectWidth:a});null!==z&&c.add(z),p+=a}r+=n,s.add(c)}var P=e.globals.yAxisScale[0].result.slice();e.config.yaxis[0].reversed?P.unshift(""):P.push(""),e.globals.yAxisScale[0].result=P;var M=e.globals.gridHeight/e.globals.series.length;return e.config.yaxis[0].labels.offsetY=-M/2,s}},{key:"checkColorRange",value:function(){var t=this,e=this.w.config.plotOptions.heatmap;e.colorScale.ranges.length>0&&e.colorScale.ranges.map(function(e,i){e.from<0&&(t.negRange=!0)})}},{key:"determineHeatColor",value:function(t,e){var i=this.w,s=i.globals.series[t][e],a=i.config.plotOptions.heatmap,n=a.colorScale.inverse?e:t,r=i.globals.colors[n],o=Math.min.apply(Math,c(i.globals.series[t])),l=Math.max.apply(Math,c(i.globals.series[t]));a.distributed||(o=i.globals.minY,l=i.globals.maxY),void 0!==a.colorScale.min&&(o=a.colorScale.min<i.globals.minY?a.colorScale.min:i.globals.minY,l=a.colorScale.max>i.globals.maxY?a.colorScale.max:i.globals.maxY);var h=Math.abs(l)+Math.abs(o),d=100*s/(0===h?h-1e-6:h);a.colorScale.ranges.length>0&&a.colorScale.ranges.map(function(t,e){if(s>=t.from&&s<=t.to){r=t.color,o=t.from,l=t.to;var i=Math.abs(l)+Math.abs(o);d=100*s/(0===i?i-1e-6:i)}});return{color:r,percent:d}}},{key:"calculateHeatmapDataLabels",value:function(t){var e=t.x,i=t.y,s=t.i,a=t.j,n=(t.series,t.rectHeight),r=t.rectWidth,o=this.w,l=o.config.dataLabels,h=new f(this.ctx),c=new z(this.ctx),d=l.formatter,u=null;if(l.enabled){u=h.group({class:"apexcharts-data-labels"});var g=l.offsetX,p=l.offsetY,x=e+r/2+g,b=i+n/2+parseInt(l.style.fontSize)/3+p,m=d(o.globals.series[s][a],{seriesIndex:s,dataPointIndex:a,w:o});c.plotDataLabelsText({x:x,y:b,text:m,i:s,j:a,parent:u,dataLabelsConfig:l})}return u}},{key:"animateHeatMap",value:function(t,e,i,s,a,n){var r=this;new g(this.ctx).animateRect(t,{x:e+s/2,y:i+a/2,width:0,height:0},{x:e,y:i,width:s,height:a},n,function(){r.w.globals.animationEnded=!0})}},{key:"animateHeatColor",value:function(t,e,i,s){t.attr({fill:e}).animate(s).attr({fill:i})}}]),t}(),I=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animBeginArr=[0],this.animDur=0,this.donutDataLabels=this.w.config.plotOptions.pie.donut.labels;var s=this.w;this.lineColorArr=void 0!==s.globals.stroke.colors?s.globals.stroke.colors:s.globals.colors,this.defaultSize=s.globals.svgHeight<s.globals.svgWidth?s.globals.svgHeight-35:s.globals.gridWidth,this.centerY=this.defaultSize/2,this.centerX=s.globals.gridWidth/2,this.fullAngle=360,this.size=0,this.donutSize=0,this.sliceLabels=[],this.prevSectorAngleArr=[]}return s(t,[{key:"draw",value:function(t){for(var e=this.w,i=new f(this.ctx),s=i.group({class:"apexcharts-pie"}),a=0,n=0;n<t.length;n++)a+=d.negToZero(t[n]);var r=[],o=i.group();0===a&&(a=1e-5);for(var l=0;l<t.length;l++){var h=this.fullAngle*d.negToZero(t[l])/a;r.push(h)}if(e.globals.dataChanged){for(var c,u=0,g=0;g<e.globals.previousPaths.length;g++)u+=d.negToZero(e.globals.previousPaths[g]);for(var p=0;p<e.globals.previousPaths.length;p++)c=this.fullAngle*d.negToZero(e.globals.previousPaths[p])/u,this.prevSectorAngleArr.push(c)}this.size=this.defaultSize/2.05-e.config.stroke.width-e.config.chart.dropShadow.blur,void 0!==e.config.plotOptions.pie.size&&(this.size=e.config.plotOptions.pie.size),this.donutSize=this.size*parseInt(e.config.plotOptions.pie.donut.size)/100;var x=e.config.plotOptions.pie.customScale,b=e.globals.gridWidth/2,m=e.globals.gridHeight/2,v=b-e.globals.gridWidth/2*x,y=m-e.globals.gridHeight/2*x;if(this.donutDataLabels.show){var w=this.renderInnerDataLabels(this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show,translateX:v,translateY:y});s.add(w)}if("donut"===e.config.chart.type){var k=i.drawCircle(this.donutSize);k.attr({cx:this.centerX,cy:this.centerY,fill:e.config.plotOptions.pie.donut.background}),o.add(k)}var A=this.drawArcs(r,t);return this.sliceLabels.forEach(function(t){A.add(t)}),o.attr({transform:"translate(".concat(v,", ").concat(y-5,") scale(").concat(x,")")}),s.attr({"data:innerTranslateX":v,"data:innerTranslateY":y-25}),o.add(A),s.add(o),s}},{key:"drawArcs",value:function(t,e){var i=this.w,s=new u(this.ctx),a=new f(this.ctx),n=new S(this.ctx),r=a.group(),o=0,l=0,h=0,c=0;this.strokeWidth=i.config.stroke.show?i.config.stroke.width:0;for(var g=0;g<t.length;g++){var p=a.group({class:"apexcharts-series apexcharts-pie-series",seriesName:d.escapeString(i.globals.seriesNames[g]),id:"apexcharts-series-"+g,rel:g+1});r.add(p),l=c,h=(o=h)+t[g],c=l+this.prevSectorAngleArr[g];var x=h-o,b=n.fillPath({seriesNumber:g,size:this.size,value:e[g]}),m=this.getChangedPath(l,c),v=a.drawPath({d:m,stroke:this.lineColorArr instanceof Array?this.lineColorArr[g]:this.lineColorArr,strokeWidth:this.strokeWidth,fill:b,fillOpacity:i.config.fill.opacity,classes:"apexcharts-pie-area"});if(v.attr({id:"apexcharts-".concat(i.config.chart.type,"-slice-").concat(g),index:0,j:g}),i.config.chart.dropShadow.enabled){var y=i.config.chart.dropShadow;s.dropShadow(v,y,g)}this.addListeners(v,this.donutDataLabels),f.setAttrs(v.node,{"data:angle":x,"data:startAngle":o,"data:strokeWidth":this.strokeWidth,"data:value":e[g]});var w={x:0,y:0};"pie"===i.config.chart.type?w=d.polarToCartesian(this.centerX,this.centerY,this.size/1.25+i.config.plotOptions.pie.dataLabels.offset,o+(h-o)/2):"donut"===i.config.chart.type&&(w=d.polarToCartesian(this.centerX,this.centerY,(this.size+this.donutSize)/2+i.config.plotOptions.pie.dataLabels.offset,o+(h-o)/2)),p.add(v);var k=0;if(!this.initialAnim||i.globals.resized||i.globals.dataChanged?this.animBeginArr.push(0):(k=(h-o)/this.fullAngle*i.config.chart.animations.speed,this.animDur=k+this.animDur,this.animBeginArr.push(this.animDur)),this.dynamicAnim&&i.globals.dataChanged?this.animatePaths(v,{endAngle:h,startAngle:o,prevStartAngle:l,prevEndAngle:c,animateStartingPos:!0,i:g,animBeginArr:this.animBeginArr,dur:i.config.chart.animations.dynamicAnimation.speed}):this.animatePaths(v,{endAngle:h,startAngle:o,i:g,totalItems:t.length-1,animBeginArr:this.animBeginArr,dur:k}),i.config.plotOptions.pie.expandOnClick&&v.click(this.pieClicked.bind(this,g)),i.config.dataLabels.enabled){var A=w.x,C=w.y,L=100*(h-o)/360+"%";if(0!==x&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabel<t[g]){var z=i.config.dataLabels.formatter;void 0!==z&&(L=z(i.globals.seriesPercent[g][0],{seriesIndex:g,w:i}));var P=i.globals.dataLabels.style.colors[g],M=a.drawText({x:A,y:C,text:L,textAnchor:"middle",fontSize:i.config.dataLabels.style.fontSize,fontFamily:i.config.dataLabels.style.fontFamily,foreColor:P});if(i.config.dataLabels.dropShadow.enabled){var E=i.config.dataLabels.dropShadow;new u(this.ctx).dropShadow(M,E)}M.node.classList.add("apexcharts-pie-label"),i.config.chart.animations.animate&&!1===i.globals.resized&&(M.node.classList.add("apexcharts-pie-label-delay"),M.node.style.animationDelay=i.config.chart.animations.speed/940+"s"),this.sliceLabels.push(M)}}}return r}},{key:"addListeners",value:function(t,e){var i=new f(this.ctx);t.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this,t)),t.node.addEventListener("mouseenter",this.printDataLabelsInner.bind(this,t.node,e)),t.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this,t)),t.node.addEventListener("mouseleave",this.revertDataLabelsInner.bind(this,t.node,e)),t.node.addEventListener("mousedown",i.pathMouseDown.bind(this,t)),t.node.addEventListener("mousedown",this.printDataLabelsInner.bind(this,t.node,e))}},{key:"animatePaths",value:function(t,e){var i=this.w,s=e.endAngle-e.startAngle,a=s,n=e.startAngle,r=e.startAngle;void 0!==e.prevStartAngle&&void 0!==e.prevEndAngle&&(n=e.prevEndAngle,a=e.prevEndAngle-e.prevStartAngle),e.i===i.config.series.length-1&&(s+r>this.fullAngle?e.endAngle=e.endAngle-(s+r):s+r<this.fullAngle&&(e.endAngle=e.endAngle+(this.fullAngle-(s+r)))),s===this.fullAngle&&(s=this.fullAngle-.01),this.animateArc(t,n,r,s,a,e)}},{key:"animateArc",value:function(t,e,i,s,a,n){var r,o=this,l=this.w,h=o.size;h||(h=n.size),(isNaN(e)||isNaN(a))&&(e=i,a=s,n.dur=0);var c=s,d=i,u=e-i;l.globals.dataChanged&&n.shouldSetPrevPaths&&(r=o.getPiePath({me:o,startAngle:d,angle:a,size:h}),t.attr({d:r})),0!==n.dur?t.animate(n.dur,l.globals.easing,n.animBeginArr[n.i]).afterAll(function(){"pie"!==l.config.chart.type&&"donut"!==l.config.chart.type||this.animate(300).attr({"stroke-width":l.config.stroke.width}),l.globals.animationEnded=!0}).during(function(l){c=u+(s-u)*l,n.animateStartingPos&&(c=a+(s-a)*l,d=e-a+(i-(e-a))*l),r=o.getPiePath({me:o,startAngle:d,angle:c,size:h}),t.node.setAttribute("data:pathOrig",r),t.attr({d:r})}):(r=o.getPiePath({me:o,startAngle:d,angle:s,size:h}),n.isTrack||(l.globals.animationEnded=!0),t.node.setAttribute("data:pathOrig",r),t.attr({d:r}))}},{key:"pieClicked",value:function(t){var e,i=this.w,s=this.size+4,a=i.globals.dom.Paper.select("#apexcharts-".concat(i.config.chart.type.toLowerCase(),"-slice-").concat(t)).members[0],n=a.attr("d");if("true"!==a.attr("data:pieClicked")){var r=i.globals.dom.baseEl.querySelectorAll(".apexcharts-pie-area");Array.prototype.forEach.call(r,function(t){t.setAttribute("data:pieClicked","false");var e=t.getAttribute("data:pathOrig");t.setAttribute("d",e)}),a.attr("data:pieClicked","true");var o=parseInt(a.attr("data:startAngle")),l=parseInt(a.attr("data:angle"));e=this.getPiePath({me:this,startAngle:o,angle:l,size:s}),360!==l&&a.plot(e).animate(1).plot(n).animate(100).plot(e)}else{a.attr({"data:pieClicked":"false"}),this.revertDataLabelsInner(a.node,this.donutDataLabels);var h=a.attr("data:pathOrig");a.attr({d:h})}}},{key:"getChangedPath",value:function(t,e){var i="";return this.dynamicAnim&&this.w.globals.dataChanged&&(i=this.getPiePath({me:this,startAngle:t,angle:e-t,size:this.size})),i}},{key:"getPiePath",value:function(t){var e=t.me,i=t.startAngle,s=t.angle,a=t.size,n=this.w,r=i,o=Math.PI*(r-90)/180,l=s+i;Math.ceil(l)>=360&&(l=359.99);var h=Math.PI*(l-90)/180,c=e.centerX+a*Math.cos(o),u=e.centerY+a*Math.sin(o),g=e.centerX+a*Math.cos(h),f=e.centerY+a*Math.sin(h),p=d.polarToCartesian(e.centerX,e.centerY,e.donutSize,l),x=d.polarToCartesian(e.centerX,e.centerY,e.donutSize,r),b=s>180?1:0;return"donut"===n.config.chart.type?["M",c,u,"A",a,a,0,b,1,g,f,"L",p.x,p.y,"A",e.donutSize,e.donutSize,0,b,0,x.x,x.y,"L",c,u,"z"].join(" "):"pie"===n.config.chart.type?["M",c,u,"A",a,a,0,b,1,g,f,"L",e.centerX,e.centerY,"L",c,u].join(" "):["M",c,u,"A",a,a,0,b,1,g,f].join(" ")}},{key:"renderInnerDataLabels",value:function(t,e){var i=this.w,s=new f(this.ctx),a=s.group({class:"apexcharts-datalabels-group",transform:"translate(".concat(e.translateX?e.translateX:0,", ").concat(e.translateY?e.translateY:0,")")}),n=t.total.show;a.node.style.opacity=e.opacity;var r,o,l=e.centerX,h=e.centerY;r=void 0===t.name.color?i.globals.colors[0]:t.name.color,o=void 0===t.value.color?i.config.chart.foreColor:t.value.color;var c=t.value.formatter,d="",u="";if(n?(r=t.total.color,u=t.total.label,d=t.total.formatter(i)):1===i.globals.series.length&&(d=c(i.globals.series[0],i),u=i.globals.seriesNames[0]),t.name.show){var g=s.drawText({x:l,y:h+parseInt(t.name.offsetY),text:u,textAnchor:"middle",foreColor:r,fontSize:t.name.fontSize,fontFamily:t.name.fontFamily});g.node.classList.add("apexcharts-datalabel-label"),a.add(g)}if(t.value.show){var p=t.name.show?parseInt(t.value.offsetY)+16:t.value.offsetY,x=s.drawText({x:l,y:h+p,text:d,textAnchor:"middle",foreColor:o,fontSize:t.value.fontSize,fontFamily:t.value.fontFamily});x.node.classList.add("apexcharts-datalabel-value"),a.add(x)}return a}},{key:"printInnerLabels",value:function(t,e,i,s){var a,n=this.w;s?a=void 0===t.name.color?n.globals.colors[parseInt(s.parentNode.getAttribute("rel"))-1]:t.name.color:n.globals.series.length>1&&t.total.show&&(a=t.total.color);var r=n.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),o=n.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,t.value.formatter)(i,n),s||"function"!=typeof t.total.formatter||(i=t.total.formatter(n)),null!==r&&(r.textContent=e),null!==o&&(o.textContent=i),null!==r&&(r.style.fill=a)}},{key:"printDataLabelsInner",value:function(t,e){var i=this.w,s=t.getAttribute("data:value"),a=i.globals.seriesNames[parseInt(t.parentNode.getAttribute("rel"))-1];i.globals.series.length>1&&this.printInnerLabels(e,a,s,t);var n=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");null!==n&&(n.style.opacity=1)}},{key:"revertDataLabelsInner",value:function(e,i,s){var a=this,n=this.w,r=n.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");if(i.total.show&&n.globals.series.length>1){new t(this.ctx).printInnerLabels(i,i.total.label,i.total.formatter(n))}else{var o=document.querySelectorAll(".apexcharts-pie-area"),l=!1;if(o.forEach(function(t){"true"===t.getAttribute("data:pieClicked")&&(l=!0,a.printDataLabelsInner(t,i))}),!l)if(n.globals.selectedDataPoints.length&&n.globals.series.length>1)if(n.globals.selectedDataPoints[0].length>0){var h=n.globals.selectedDataPoints[0],c=n.globals.dom.baseEl.querySelector("#apexcharts-".concat(n.config.chart.type.toLowerCase(),"-slice-").concat(h));this.printDataLabelsInner(c,i)}else r&&n.globals.selectedDataPoints.length&&0===n.globals.selectedDataPoints[0].length&&(r.style.opacity=0);else r&&n.globals.series.length>1&&(r.style.opacity=0)}}}]),t}(),Y=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var s=this.w;this.graphics=new f(this.ctx),this.lineColorArr=void 0!==s.globals.stroke.colors?s.globals.stroke.colors:s.globals.colors,this.defaultSize=s.globals.svgHeight<s.globals.svgWidth?s.globals.svgHeight-35:s.globals.gridWidth,this.maxValue=this.w.globals.maxY,this.polygons=s.config.plotOptions.radar.polygons,this.maxLabelWidth=20;var a=s.globals.labels.slice().sort(function(t,e){return e.length-t.length})[0],n=this.graphics.getTextRects(a,s.config.dataLabels.style.fontSize);this.size=this.defaultSize/2.1-s.config.stroke.width-s.config.chart.dropShadow.blur-n.width/1.75,void 0!==s.config.plotOptions.radar.size&&(this.size=s.config.plotOptions.radar.size),this.dataRadiusOfPercent=[],this.dataRadius=[],this.angleArr=[],this.yaxisLabelsTextsPos=[]}return s(t,[{key:"draw",value:function(t){var e=this,i=this.w,s=new S(this.ctx),a=[];this.dataPointsLen=t[i.globals.maxValsInArrayIndex].length,this.disAngle=2*Math.PI/this.dataPointsLen;var r=i.globals.gridWidth/2,o=i.globals.gridHeight/2,l=this.graphics.group({class:"apexcharts-radar-series","data:innerTranslateX":r,"data:innerTranslateY":o-25,transform:"translate(".concat(r||0,", ").concat(o||0,")")}),h=[],c=null;if(this.yaxisLabels=this.graphics.group({class:"apexcharts-yaxis"}),t.forEach(function(t,r){var o=e.graphics.group().attr({class:"apexcharts-series",seriesName:d.escapeString(i.globals.seriesNames[r]),rel:r+1,"data:realIndex":r});e.dataRadiusOfPercent[r]=[],e.dataRadius[r]=[],e.angleArr[r]=[],t.forEach(function(t,i){e.dataRadiusOfPercent[r][i]=t/e.maxValue,e.dataRadius[r][i]=e.dataRadiusOfPercent[r][i]*e.size,e.angleArr[r][i]=i*e.disAngle}),h=e.getDataPointsPos(e.dataRadius[r],e.angleArr[r]);var l=e.createPaths(h,{x:0,y:0});c=e.graphics.group({class:"apexcharts-series-markers-wrap hidden"}),i.globals.delayedElements.push({el:c.node,index:r});var g={i:r,realIndex:r,animationDelay:r,initialSpeed:i.config.chart.animations.speed,dataChangeSpeed:i.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-radar",id:"apexcharts-radar",shouldClipToGrid:!1,bindEventsOnPaths:!1,stroke:i.globals.stroke.colors[r],strokeLineCap:i.config.stroke.lineCap},f=null;i.globals.previousPaths.length>0&&(f=e.getPathFrom(r));for(var p=0;p<l.linePathsTo.length;p++){var x=e.graphics.renderPaths(n({},g,{pathFrom:null===f?l.linePathsFrom[p]:f,pathTo:l.linePathsTo[p],strokeWidth:Array.isArray(i.config.stroke.width)?i.config.stroke.width[r]:i.config.stroke.width,fill:"none",drawShadow:!1}));o.add(x);var b=s.fillPath({seriesNumber:r}),m=e.graphics.renderPaths(n({},g,{pathFrom:null===f?l.areaPathsFrom[p]:f,pathTo:l.areaPathsTo[p],strokeWidth:0,fill:b,drawShadow:!1}));if(i.config.chart.dropShadow.enabled){var v=new u(e.ctx),y=i.config.chart.dropShadow;v.dropShadow(m,Object.assign({},y,{noUserSpaceOnUse:!0}),r)}o.add(m)}t.forEach(function(t,i){var s=new C(e.ctx).getMarkerConfig("apexcharts-marker",r),a=e.graphics.drawMarker(h[i].x,h[i].y,s);a.attr("rel",i),a.attr("j",i),a.attr("index",r),a.node.setAttribute("default-marker-size",s.pSize);var n=e.graphics.group({class:"apexcharts-series-markers"});n&&n.add(a),c.add(n),o.add(c)}),a.push(o)}),this.drawPolygons({parent:l}),i.config.dataLabels.enabled){var g=this.drawLabels();l.add(g)}return l.add(this.yaxisLabels),a.forEach(function(t){l.add(t)}),l}},{key:"drawPolygons",value:function(t){for(var e=this,i=this.w,s=t.parent,a=i.globals.yAxisScale[0].result.reverse(),n=a.length,r=[],o=this.size/(n-1),l=0;l<n;l++)r[l]=o*l;r.reverse();var h=[],c=[];r.forEach(function(t,i){var s=e.getPolygonPos(t),a="";s.forEach(function(t,s){if(0===i){var n=e.graphics.drawLine(t.x,t.y,0,0,Array.isArray(e.polygons.connectorColors)?e.polygons.connectorColors[s]:e.polygons.connectorColors);c.push(n)}0===s&&e.yaxisLabelsTextsPos.push({x:t.x,y:t.y}),a+=t.x+","+t.y+" "}),h.push(a)}),h.forEach(function(t,a){var n=e.polygons.strokeColors,r=e.graphics.drawPolygon(t,Array.isArray(n)?n[a]:n,i.globals.radarPolygons.fill.colors[a]);s.add(r)}),c.forEach(function(t){s.add(t)}),i.config.yaxis[0].show&&this.yaxisLabelsTextsPos.forEach(function(t,i){var s=e.drawYAxisText(t.x,t.y,i,a[i]);e.yaxisLabels.add(s)})}},{key:"drawYAxisText",value:function(t,e,i,s){var a=this.w,n=a.config.yaxis[0],r=a.globals.yLabelFormatters[0];return this.graphics.drawText({x:t+n.labels.offsetX,y:e+n.labels.offsetY,text:r(s,i),textAnchor:"middle",fontSize:n.labels.style.fontSize,fontFamily:n.labels.style.fontFamily,foreColor:n.labels.style.color})}},{key:"drawLabels",value:function(){var t=this,e=this.w,i="middle",s=e.config.dataLabels,a=this.graphics.group({class:"apexcharts-datalabels"}),n=this.getPolygonPos(this.size),r=0,o=0;return e.globals.labels.forEach(function(l,h){var c=s.formatter,d=new z(t.ctx);if(n[h]){r=n[h].x,o=n[h].y,Math.abs(n[h].x)>=10?n[h].x>0?(i="start",r+=10):n[h].x<0&&(i="end",r-=10):i="middle",Math.abs(n[h].y)>=t.size-10&&(n[h].y<0?o-=10:n[h].y>0&&(o+=10));var u=c(l,{seriesIndex:-1,dataPointIndex:h,w:e});d.plotDataLabelsText({x:r,y:o,text:u,textAnchor:i,i:h,j:h,parent:a,dataLabelsConfig:s,offsetCorrection:!1})}}),a}},{key:"createPaths",value:function(t,e){var i=this,s=[],a=[],n=[],r=[];if(t.length){a=[this.graphics.move(e.x,e.y)],r=[this.graphics.move(e.x,e.y)];var o=this.graphics.move(t[0].x,t[0].y),l=this.graphics.move(t[0].x,t[0].y);t.forEach(function(e,s){o+=i.graphics.line(e.x,e.y),l+=i.graphics.line(e.x,e.y),s===t.length-1&&(o+="Z",l+="Z")}),s.push(o),n.push(l)}return{linePathsFrom:a,linePathsTo:s,areaPathsFrom:r,areaPathsTo:n}}},{key:"getPathFrom",value:function(t){for(var e=this.w,i=null,s=0;s<e.globals.previousPaths.length;s++){var a=e.globals.previousPaths[s];a.paths.length>0&&parseInt(a.realIndex)===parseInt(t)&&void 0!==e.globals.previousPaths[s].paths[0]&&(i=e.globals.previousPaths[s].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var s=[],a=0;a<i;a++){var n={};n.x=t[a]*Math.sin(e[a]),n.y=-t[a]*Math.cos(e[a]),s.push(n)}return s}},{key:"getPolygonPos",value:function(t){for(var e=[],i=2*Math.PI/this.dataPointsLen,s=0;s<this.dataPointsLen;s++){var a={};a.x=t*Math.sin(s*i),a.y=-t*Math.cos(s*i),e.push(a)}return e}}]),t}(),F=function(t){function i(t){var s;e(this,i),(s=h(this,o(i).call(this,t))).ctx=t,s.w=t.w,s.animBeginArr=[0],s.animDur=0;var a=s.w;return s.startAngle=a.config.plotOptions.radialBar.startAngle,s.endAngle=a.config.plotOptions.radialBar.endAngle,s.trackStartAngle=a.config.plotOptions.radialBar.track.startAngle,s.trackEndAngle=a.config.plotOptions.radialBar.track.endAngle,s.radialDataLabels=a.config.plotOptions.radialBar.dataLabels,s.trackStartAngle||(s.trackStartAngle=s.startAngle),s.trackEndAngle||(s.trackEndAngle=s.endAngle),360===s.endAngle&&(s.endAngle=359.99),s.fullAngle=360-a.config.plotOptions.radialBar.endAngle-a.config.plotOptions.radialBar.startAngle,s.margin=parseInt(a.config.plotOptions.radialBar.track.margin),s}return r(i,I),s(i,[{key:"draw",value:function(t){var e=this.w,i=new f(this.ctx),s=i.group({class:"apexcharts-radialbar"}),a=i.group(),n=this.defaultSize/2,r=e.globals.gridWidth/2,o=this.defaultSize/2.05-e.config.stroke.width-e.config.chart.dropShadow.blur;void 0!==e.config.plotOptions.radialBar.size&&(o=e.config.plotOptions.radialBar.size);var l=e.globals.fill.colors;if(e.config.plotOptions.radialBar.track.show){var h=this.drawTracks({size:o,centerX:r,centerY:n,colorArr:l,series:t});a.add(h)}var c=this.drawArcs({size:o,centerX:r,centerY:n,colorArr:l,series:t});return a.add(c.g),"front"===e.config.plotOptions.radialBar.hollow.position&&(c.g.add(c.elHollow),c.dataLabels&&c.g.add(c.dataLabels)),s.add(a),s}},{key:"drawTracks",value:function(t){var e=this.w,i=new f(this.ctx),s=i.group(),a=new u(this.ctx),n=new S(this.ctx),r=this.getStrokeWidth(t);t.size=t.size-r/2;for(var o=0;o<t.series.length;o++){var l=i.group({class:"apexcharts-radialbar-track apexcharts-track"});s.add(l),l.attr({id:"apexcharts-track-"+o,rel:o+1}),t.size=t.size-r-this.margin;var h=e.config.plotOptions.radialBar.track,c=n.fillPath({seriesNumber:0,size:t.size,fillColors:Array.isArray(h.background)?h.background[o]:h.background,solid:!0}),d=this.trackStartAngle,g=this.trackEndAngle;Math.abs(g)+Math.abs(d)>=360&&(g=360-Math.abs(this.startAngle)-.1);var p=i.drawPath({d:"",stroke:c,strokeWidth:r*parseInt(h.strokeWidth)/100,fill:"none",strokeOpacity:h.opacity,classes:"apexcharts-radialbar-area"});if(h.dropShadow.enabled){var x=h.dropShadow;a.dropShadow(p,x)}l.add(p),p.attr("id","apexcharts-radialbarTrack-"+o),new I(this.ctx).animatePaths(p,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:d,size:t.size,i:o,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return s}},{key:"drawArcs",value:function(t){var e=this.w,i=new f(this.ctx),s=new S(this.ctx),a=new u(this.ctx),n=i.group(),r=this.getStrokeWidth(t);t.size=t.size-r/2;var o=e.config.plotOptions.radialBar.hollow.background,l=t.size-r*t.series.length-this.margin*t.series.length-r*parseInt(e.config.plotOptions.radialBar.track.strokeWidth)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(o=this.drawHollowImage(t,n,l,o));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:o});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var g=e.config.plotOptions.radialBar.hollow.dropShadow;a.dropShadow(c,g)}var p=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(p=0);var x=new I(this.ctx),b=null;this.radialDataLabels.show&&(b=x.renderInnerDataLabels(this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:p})),"back"===e.config.plotOptions.radialBar.hollow.position&&(n.add(c),b&&n.add(b));var m=!1;e.config.plotOptions.radialBar.inverseOrder&&(m=!0);for(var v=m?t.series.length-1:0;m?v>=0:v<t.series.length;m?v--:v++){var y=i.group({class:"apexcharts-series apexcharts-radial-series",seriesName:d.escapeString(e.globals.seriesNames[v])});n.add(y),y.attr({id:"apexcharts-series-"+v,rel:v+1}),this.ctx.series.addCollapsedClassToSeries(y,v),t.size=t.size-r-this.margin;var w=s.fillPath({seriesNumber:v,size:t.size,value:t.series[v]}),k=this.startAngle,A=void 0,C=Math.abs(e.config.plotOptions.radialBar.endAngle-e.config.plotOptions.radialBar.startAngle),L=d.negToZero(t.series[v]>100?100:t.series[v])/100,z=Math.round(C*L)+this.startAngle,P=void 0;e.globals.dataChanged&&(A=this.startAngle,P=Math.round(C*d.negToZero(e.globals.previousPaths[v])/100)+A),Math.abs(z)+Math.abs(k)>=360&&(z-=.01),Math.abs(P)+Math.abs(A)>=360&&(P-=.01);var M=z-k,E=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[v]:e.config.stroke.dashArray,T=i.drawPath({d:"",stroke:w,strokeWidth:r,fill:"none",fillOpacity:e.config.fill.opacity,classes:"apexcharts-radialbar-area",strokeDashArray:E});if(f.setAttrs(T.node,{"data:angle":M,"data:value":t.series[v]}),e.config.chart.dropShadow.enabled){var X=e.config.chart.dropShadow;a.dropShadow(T,X,v)}this.addListeners(T,this.radialDataLabels);var Y=new I(this.ctx);y.add(T),T.attr({id:"apexcharts-radialbar-slice-"+v,index:0,j:v});var F=0;!Y.initialAnim||e.globals.resized||e.globals.dataChanged||(F=(z-k)/360*e.config.chart.animations.speed,this.animDur=F/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur)),e.globals.dataChanged&&(F=(z-k)/360*e.config.chart.animations.dynamicAnimation.speed,this.animDur=F/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur)),Y.animatePaths(T,{centerX:t.centerX,centerY:t.centerY,endAngle:z,startAngle:k,prevEndAngle:P,prevStartAngle:A,size:t.size,i:v,totalItems:2,animBeginArr:this.animBeginArr,dur:F,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:n,elHollow:c,dataLabels:b}}},{key:"drawHollow",value:function(t){var e=new f(this.ctx).drawCircle(2*t.size);return e.attr({class:"apexcharts-radialbar-hollow",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:"drawHollowImage",value:function(t,e,i,s){var a=this.w,n=new S(this.ctx),r=(Math.random()+1).toString(36).substring(4),o=a.config.plotOptions.radialBar.hollow.image;if(a.config.plotOptions.radialBar.hollow.imageClipped)n.clippedImgArea({width:i,height:i,image:o,patternID:"pattern".concat(a.globals.cuid).concat(r)}),s="url(#pattern".concat(a.globals.cuid).concat(r,")");else{var l=a.config.plotOptions.radialBar.hollow.imageWidth,h=a.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=a.globals.dom.Paper.image(o).loaded(function(e){this.move(t.centerX-e.width/2+a.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+a.config.plotOptions.radialBar.hollow.imageOffsetY)});e.add(c)}else{var d=a.globals.dom.Paper.image(o).loaded(function(e){this.move(t.centerX-l/2+a.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+a.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)});e.add(d)}}return s}},{key:"getStrokeWidth",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size))/100/(t.series.length+1)-this.margin}}]),i}(),R=function(t){function i(){return e(this,i),h(this,o(i).apply(this,arguments))}return r(i,P),s(i,[{key:"draw",value:function(t,e){var i=this.w,s=new f(this.ctx),a=new S(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=i.globals.seriesRangeStart,this.seriesRangeEnd=i.globals.seriesRangeEnd,this.initVariables(t);for(var n=s.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),r=0,o=0;r<t.length;r++,o++){var l,h,c,u,g=void 0,p=void 0,x=void 0,b=void 0,m=[],v=[],y=i.globals.comboCharts?e[r]:r,w=s.group({class:"apexcharts-series",seriesName:d.escapeString(i.globals.seriesNames[y]),rel:r+1,"data:realIndex":y});t[r].length>0&&(this.visibleI=this.visibleI+1);var k=0,A=0,C=0;this.yRatio.length>1&&(this.yaxisIndex=y);var L=this.initialPositions();b=L.y,h=L.yDivision,A=L.barHeight,u=L.zeroW,x=L.x,C=L.barWidth,l=L.xDivision,c=L.zeroH,v.push(x+C/2);for(var z=s.group({class:"apexcharts-datalabels"}),P=0,M=i.globals.dataPoints;P<i.globals.dataPoints;P++,M--){void 0===this.series[r][P]||null===t[r][P]?this.isNullValue=!0:this.isNullValue=!1,i.config.stroke.show&&(k=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[y]:this.strokeWidth);var E=null;this.isHorizontal?C=(E=this.drawRangeBarPaths({indexes:{i:r,j:P,realIndex:y,bc:o},barHeight:A,strokeWidth:k,pathTo:g,pathFrom:p,zeroW:u,x:x,y:b,yDivision:h,elSeries:w})).barWidth:A=(E=this.drawRangeColumnPaths({indexes:{i:r,j:P,realIndex:y,bc:o},x:x,y:b,xDivision:l,pathTo:g,pathFrom:p,barWidth:C,zeroH:c,strokeWidth:k,elSeries:w})).barHeight,g=E.pathTo,p=E.pathFrom,b=E.y,x=E.x,P>0&&v.push(x+C/2),m.push(b);var T=a.fillPath({seriesNumber:y}),X=i.globals.stroke.colors[y];w=this.renderSeries({realIndex:y,pathFill:T,lineFill:X,j:P,i:r,pathFrom:p,pathTo:g,strokeWidth:k,elSeries:w,x:x,y:b,series:t,barHeight:A,barWidth:C,elDataLabelsWrap:z,visibleSeries:this.visibleI,type:"rangebar"})}i.globals.seriesXvalues[y]=v,i.globals.seriesYvalues[y]=m,n.add(w)}return n}},{key:"drawRangeColumnPaths",value:function(t){var e=t.indexes,i=t.x,s=(t.y,t.strokeWidth),a=t.xDivision,n=t.pathTo,r=t.pathFrom,o=t.barWidth,l=t.zeroH,h=this.w,c=new f(this.ctx),d=e.i,u=e.j,g=this.yRatio[this.yaxisIndex],p=e.realIndex,x=this.getRangeValue(p,u),b=Math.min(x.start,x.end),m=Math.max(x.start,x.end);h.globals.isXNumeric&&(i=(h.globals.seriesX[d][u]-h.globals.minX)/this.xRatio-o/2);var v=i+o*this.visibleI;void 0===this.series[d][u]||null===this.series[d][u]?b=l:(b=l-b/g,m=l-m/g);var y=Math.abs(m-b);return c.move(v,l),r=c.move(v,b),h.globals.previousPaths.length>0&&(r=this.getPathFrom(p,u,!0)),n=c.move(v,m)+c.line(v+o,m)+c.line(v+o,b)+c.line(v,b)+c.line(v,m-s/2),r=r+c.move(v,b)+c.line(v+o,b)+c.line(v+o,b)+c.line(v,b),h.globals.isXNumeric||(i+=a),{pathTo:n,pathFrom:r,barHeight:y,x:i,y:m,barXPosition:v}}},{key:"drawRangeBarPaths",value:function(t){var e=t.indexes,i=(t.x,t.y),s=t.yDivision,a=t.pathTo,n=t.pathFrom,r=t.barHeight,o=t.zeroW,l=this.w,h=new f(this.ctx),c=e.i,d=e.j,u=e.realIndex,g=o,p=o;l.globals.isXNumeric&&(i=(l.globals.seriesX[c][d]-l.globals.minX)/this.invertedXRatio-r);var x=i+r*this.visibleI;void 0!==this.series[c][d]&&null!==this.series[c][d]&&(g=o+this.seriesRangeStart[c][d]/this.invertedYRatio,p=o+this.seriesRangeEnd[c][d]/this.invertedYRatio),h.move(o,x),n=h.move(o,x),l.globals.previousPaths.length>0&&(n=this.getPathFrom(u,d));var b=Math.abs(p-g);return a=h.move(g,x)+h.line(p,x)+h.line(p,x+r)+h.line(g,x+r)+h.line(g,x),n=n+h.line(g,x)+h.line(g,x+r)+h.line(g,x+r)+h.line(g,x),l.globals.isXNumeric||(i+=s),{pathTo:a,pathFrom:n,barWidth:b,x:p,y:i,barYPosition:x}}},{key:"getRangeValue",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),i}(),D=function(){function t(i,s,a){e(this,t),this.ctx=i,this.w=i.w,this.xyRatios=s,this.pointsChart=!("bubble"!==this.w.config.chart.type&&"scatter"!==this.w.config.chart.type)||a,this.scatter=new L(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.yaxisIndex=0}return s(t,[{key:"draw",value:function(t,e,i){var s=this.w,a=new f(this.ctx),r=new S(this.ctx),o=s.globals.comboCharts?e:s.config.chart.type,l=a.group({class:"apexcharts-".concat(o,"-series apexcharts-plot-series")}),h=new y(this.ctx,s);t=h.getLogSeries(t);var c=this.xyRatios.yRatio;c=h.getLogYRatios(c);for(var u=this.xyRatios.zRatio,g=this.xyRatios.xRatio,p=this.xyRatios.baseLineY,x=[],b=[],m=0,v=0;v<t.length;v++){if("line"===o&&("gradient"===s.config.fill.type||"gradient"===s.config.fill.type[v])&&h.seriesHaveSameValues(v)){var w=t[v].slice();w[w.length-1]=w[w.length-1]+1e-6,t[v]=w}var k=s.globals.gridWidth/s.globals.dataPoints,A=s.globals.comboCharts?i[v]:v;c.length>1&&(this.yaxisIndex=A),this.isReversed=s.config.yaxis[this.yaxisIndex]&&s.config.yaxis[this.yaxisIndex].reversed;var L=[],P=[],M=s.globals.gridHeight-p[this.yaxisIndex]-(this.isReversed?s.globals.gridHeight:0)+(this.isReversed?2*p[this.yaxisIndex]:0),E=M;M>s.globals.gridHeight&&(E=s.globals.gridHeight),m=k/2;var T=s.globals.padHorizontal+m,X=1;s.globals.isXNumeric&&s.globals.seriesX.length>0&&(T=(s.globals.seriesX[A][0]-s.globals.minX)/g),P.push(T);var I=void 0,Y=void 0,F=void 0,R=void 0,D=[],N=[],O=a.group({class:"apexcharts-series",seriesName:d.escapeString(s.globals.seriesNames[A])}),H=a.group({class:"apexcharts-series-markers-wrap"}),W=a.group({class:"apexcharts-datalabels"});this.ctx.series.addCollapsedClassToSeries(O,A);var B=t[v].length===s.globals.dataPoints;O.attr({"data:longestSeries":B,rel:v+1,"data:realIndex":A}),this.appendPathFrom=!0;var V=T,G=void 0,_=V,j=M,U=0;if(j=this.determineFirstPrevY({i:v,series:t,yRatio:c[this.yaxisIndex],zeroY:M,prevY:j,prevSeriesY:b,lineYPosition:U}).prevY,L.push(j),G=j,null===t[v][0]){for(var q=0;q<t[v].length;q++)if(null!==t[v][q]){_=k*q,j=M-t[v][q]/c[this.yaxisIndex],I=a.move(_,j),Y=a.move(_,E);break}}else I=a.move(_,j),Y=a.move(_,E)+a.line(_,j);if(F=a.move(-1,M)+a.line(-1,M),R=a.move(-1,M)+a.line(-1,M),s.globals.previousPaths.length>0){var Z=this.checkPreviousPaths({pathFromLine:F,pathFromArea:R,realIndex:A});F=Z.pathFromLine,R=Z.pathFromArea}for(var $=s.globals.dataPoints>1?s.globals.dataPoints-1:s.globals.dataPoints,J=0;J<$;J++){if(s.globals.isXNumeric){var Q=s.globals.seriesX[A][J+1];void 0===s.globals.seriesX[A][J+1]&&(Q=s.globals.seriesX[A][$-1]),T=(Q-s.globals.minX)/g}else T+=k;var K=d.isNumber(s.globals.minYArr[A])?s.globals.minYArr[A]:s.globals.minY;s.config.chart.stacked?(U=v>0&&s.globals.collapsedSeries.length<s.config.series.length-1?b[v-1][J+1]:M,X=void 0===t[v][J+1]||null===t[v][J+1]?U-K/c[this.yaxisIndex]+2*(this.isReversed?K/c[this.yaxisIndex]:0):U-t[v][J+1]/c[this.yaxisIndex]+2*(this.isReversed?t[v][J+1]/c[this.yaxisIndex]:0)):X=void 0===t[v][J+1]||null===t[v][J+1]?M-K/c[this.yaxisIndex]+2*(this.isReversed?K/c[this.yaxisIndex]:0):M-t[v][J+1]/c[this.yaxisIndex]+2*(this.isReversed?t[v][J+1]/c[this.yaxisIndex]:0),P.push(T),L.push(X);var tt=this.createPaths({series:t,i:v,j:J,x:T,y:X,xDivision:k,pX:V,pY:G,areaBottomY:E,linePath:I,areaPath:Y,linePaths:D,areaPaths:N,seriesIndex:i});N=tt.areaPaths,D=tt.linePaths,V=tt.pX,G=tt.pY,Y=tt.areaPath,I=tt.linePath,this.appendPathFrom&&(F+=a.line(T,M),R+=a.line(T,M));var et=this.calculatePoints({series:t,x:T,y:X,realIndex:A,i:v,j:J,prevY:j,categoryAxisCorrection:m,xRatio:g});if(this.pointsChart)this.scatter.draw(O,J,{realIndex:A,pointsPos:et,zRatio:u,elParent:H});else{var it=new C(this.ctx);s.globals.dataPoints>1&&H.node.classList.add("hidden");var st=it.plotChartMarkers(et,A,J+1);null!==st&&H.add(st)}var at=!t[v][J+1]||t[v][J+1]>t[v][J]?"top":"bottom",nt=new z(this.ctx).drawDataLabel(et,A,J+1,null,at);null!==nt&&W.add(nt)}b.push(L),s.globals.seriesXvalues[A]=P,s.globals.seriesYvalues[A]=L,this.pointsChart||s.globals.delayedElements.push({el:H.node,index:A});var rt={i:v,realIndex:A,animationDelay:v,initialSpeed:s.config.chart.animations.speed,dataChangeSpeed:s.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(o),id:"apexcharts-".concat(o)};if("area"===o)for(var ot=r.fillPath({seriesNumber:A}),lt=0;lt<N.length;lt++){var ht=a.renderPaths(n({},rt,{pathFrom:R,pathTo:N[lt],stroke:"none",strokeWidth:0,strokeLineCap:null,fill:ot}));O.add(ht)}if(s.config.stroke.show&&!this.pointsChart){var ct=null;ct="line"===o?r.fillPath({seriesNumber:A,i:v}):s.globals.stroke.colors[A];for(var dt=0;dt<D.length;dt++){var ut=a.renderPaths(n({},rt,{pathFrom:F,pathTo:D[dt],stroke:ct,strokeWidth:Array.isArray(s.config.stroke.width)?s.config.stroke.width[A]:s.config.stroke.width,strokeLineCap:s.config.stroke.lineCap,fill:"none"}));O.add(ut)}}O.add(H),O.add(W),x.push(O)}for(var gt=x.length;gt>0;gt--)l.add(x[gt-1]);return l}},{key:"createPaths",value:function(t){var e=t.series,i=t.i,s=t.j,a=t.x,n=t.y,r=t.pX,o=t.pY,l=t.xDivision,h=t.areaBottomY,c=t.linePath,d=t.areaPath,u=t.linePaths,g=t.areaPaths,p=t.seriesIndex,x=this.w,b=new f(this.ctx),m=x.config.stroke.curve;if(Array.isArray(x.config.stroke.curve)&&(m=Array.isArray(p)?x.config.stroke.curve[p[i]]:x.config.stroke.curve[i]),"smooth"===m){var v=.35*(a-r);x.globals.hasNullValues?(null!==e[i][s]&&(null!==e[i][s+1]?(c=b.move(r,o)+b.curve(r+v,o,a-v,n,a+1,n),d=b.move(r+1,o)+b.curve(r+v,o,a-v,n,a+1,n)+b.line(a,h)+b.line(r,h)+"z"):(c=b.move(r,o),d=b.move(r,o)+"z")),u.push(c),g.push(d)):(c+=b.curve(r+v,o,a-v,n,a,n),d+=b.curve(r+v,o,a-v,n,a,n)),r=a,o=n,s===e[i].length-2&&(d=d+b.curve(r,o,a,n,a,h)+b.move(a,n)+"z",x.globals.hasNullValues||(u.push(c),g.push(d)))}else null===e[i][s+1]&&(c+=b.move(a,n),d=d+b.line(a-l,h)+b.move(a,n)),null===e[i][s]&&(c+=b.move(a,n),d+=b.move(a,h)),"stepline"===m?(c=c+b.line(a,null,"H")+b.line(null,n,"V"),d=d+b.line(a,null,"H")+b.line(null,n,"V")):"straight"===m&&(c+=b.line(a,n),d+=b.line(a,n)),s===e[i].length-2&&(d=d+b.line(a,h)+b.move(a,n)+"z",u.push(c),g.push(d));return{linePaths:u,areaPaths:g,pX:r,pY:o,linePath:c,areaPath:d}}},{key:"calculatePoints",value:function(t){var e=t.series,i=t.realIndex,s=t.x,a=t.y,n=t.i,r=t.j,o=t.prevY,l=t.categoryAxisCorrection,h=t.xRatio,c=this.w,u=[],g=[];if(0===r){var f=l+c.config.markers.offsetX;c.globals.isXNumeric&&(f=(c.globals.seriesX[i][0]-c.globals.minX)/h+c.config.markers.offsetX),u.push(f),g.push(d.isNumber(e[n][0])?o+c.config.markers.offsetY:null),u.push(s+c.config.markers.offsetX),g.push(d.isNumber(e[n][r+1])?a+c.config.markers.offsetY:null)}else u.push(s+c.config.markers.offsetX),g.push(d.isNumber(e[n][r+1])?a+c.config.markers.offsetY:null);return{x:u,y:g}}},{key:"checkPreviousPaths",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,s=t.realIndex,a=this.w,n=0;n<a.globals.previousPaths.length;n++){var r=a.globals.previousPaths[n];("line"===r.type||"area"===r.type)&&r.paths.length>0&&parseInt(r.realIndex)===parseInt(s)&&("line"===r.type?(this.appendPathFrom=!1,e=a.globals.previousPaths[n].paths[0].d):"area"===r.type&&(this.appendPathFrom=!1,i=a.globals.previousPaths[n].paths[0].d,a.config.stroke.show&&(e=a.globals.previousPaths[n].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(t){var e=t.i,i=t.series,s=t.yRatio,a=t.zeroY,n=t.prevY,r=t.prevSeriesY,o=t.lineYPosition,l=this.w;if(void 0!==i[e][0])n=l.config.chart.stacked?(o=e>0?r[e-1][0]:a)-i[e][0]/s+2*(this.isReversed?i[e][0]/s:0):a-i[e][0]/s+2*(this.isReversed?i[e][0]/s:0);else if(l.config.chart.stacked&&e>0&&void 0===i[e][0])for(var h=e-1;h>=0;h--)if(null!==i[h][0]&&void 0!==i[h][0]){n=o=r[h][0];break}return{prevY:n,lineYPosition:o}}}]),t}(),N=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.tooltipKeyFormat="dd MMM"}return s(t,[{key:"xLabelFormat",value:function(t,e){var i=this.w;if("datetime"===i.config.xaxis.type&&void 0===i.config.tooltip.x.formatter)return new m(this.ctx).formatDate(new Date(e),i.config.tooltip.x.format,!0,!0);return t(e)}},{key:"setLabelFormatters",value:function(){var t=this.w;return t.globals.xLabelFormatter=function(t){return t},t.globals.xaxisTooltipFormatter=function(t){return t},t.globals.ttKeyFormatter=function(t){return t},t.globals.ttZFormatter=function(t){return t},t.globals.legendFormatter=function(t){return t},"function"==typeof t.config.tooltip.x.formatter&&(t.globals.ttKeyFormatter=t.config.tooltip.x.formatter),"function"==typeof t.config.xaxis.tooltip.formatter&&(t.globals.xaxisTooltipFormatter=t.config.xaxis.tooltip.formatter),Array.isArray(t.config.tooltip.y)?t.globals.ttVal=t.config.tooltip.y:void 0!==t.config.tooltip.y.formatter&&(t.globals.ttVal=t.config.tooltip.y),void 0!==t.config.tooltip.z.formatter&&(t.globals.ttZFormatter=t.config.tooltip.z.formatter),void 0!==t.config.legend.formatter&&(t.globals.legendFormatter=t.config.legend.formatter),void 0!==t.config.xaxis.labels.formatter?t.globals.xLabelFormatter=t.config.xaxis.labels.formatter:t.globals.xLabelFormatter=function(e){return d.isNumber(e)?"numeric"===t.config.xaxis.type&&t.globals.dataPoints<50?e.toFixed(1):e.toFixed(0):e},t.config.yaxis.forEach(function(e,i){void 0!==e.labels.formatter?t.globals.yLabelFormatters[i]=e.labels.formatter:t.globals.yLabelFormatters[i]=function(i){return d.isNumber(i)?0!==t.globals.yValueDecimal?i.toFixed(void 0!==e.decimalsInFloat?e.decimalsInFloat:t.globals.yValueDecimal):t.globals.maxY-t.globals.minY<5?i.toFixed(1):i.toFixed(0):i}}),t.globals}},{key:"heatmapLabelFormatters",value:function(){var t=this.w;if("heatmap"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce(function(t,e){return t.length>e.length?t:e},0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),O=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"getLabel",value:function(t,e,i,s){var a,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=this.w,o=void 0===t[s]?"":t[s],l=r.globals.xLabelFormatter,h=r.config.xaxis.labels.formatter;return a=new N(this.ctx).xLabelFormat(l,o),void 0!==h&&(a=h(o,t[s],s)),e.length>0?(i=e[s].position,a=e[s].value):"datetime"===r.config.xaxis.type&&void 0===h&&(a=""),void 0===a&&(a=""),(0===(a=a.toString()).indexOf("NaN")||0===a.toLowerCase().indexOf("invalid")||a.toLowerCase().indexOf("infinity")>=0||n.indexOf(a)>=0&&!r.config.xaxis.labels.showDuplicates)&&(a=""),{x:i,text:a}}},{key:"drawYAxisTicks",value:function(t,e,i,s,a,n,r){var o=this.w,l=new f(this.ctx),h=o.globals.translateY;if(s.show){!0===o.config.yaxis[a].opposite&&(t+=s.width);for(var c=e;c>=0;c--){var d=h+e/10+o.config.yaxis[a].labels.offsetY-1;o.globals.isBarHorizontal&&(d=n*c);var u=l.drawLine(t+i.offsetX-s.width+s.offsetX,d+s.offsetY,t+i.offsetX+s.offsetX,d+s.offsetY,i.color);r.add(u),h+=n}}}}]),t}(),H=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w;var s=this.w;this.xaxisLabels=s.globals.labels.slice(),s.globals.timelineLabels.length>0&&(this.xaxisLabels=s.globals.timelineLabels.slice()),this.drawnLabels=[],"top"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight+1,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0],this.axesUtils=new O(i)}return s(t,[{key:"drawXaxis",value:function(){var t,e=this.w,i=new f(this.ctx),s=i.group({class:"apexcharts-xaxis",transform:"translate(".concat(e.config.xaxis.offsetX,", ").concat(e.config.xaxis.offsetY,")")}),a=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});s.add(a);for(var n=e.globals.padHorizontal,r=[],o=0;o<this.xaxisLabels.length;o++)r.push(this.xaxisLabels[o]);n=e.globals.isXNumeric?n+(t=e.globals.gridWidth/(r.length-1))/2+e.config.xaxis.labels.offsetX:n+(t=e.globals.gridWidth/r.length)+e.config.xaxis.labels.offsetX;var l=r.length;if(e.config.xaxis.labels.show)for(var h=0;h<=l-1;h++){var c=n-t/2+e.config.xaxis.labels.offsetX,d=this.axesUtils.getLabel(r,e.globals.timelineLabels,c,h,this.drawnLabels);this.drawnLabels.push(d.text);var u=28;e.globals.rotateXLabels&&(u=22);var g=i.drawText({x:d.x,y:this.offY+e.config.xaxis.labels.offsetY+u,text:"",textAnchor:"middle",fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[h]:this.xaxisForeColors,cssClass:"apexcharts-xaxis-label "+e.config.xaxis.labels.style.cssClass});h===l-1&&e.globals.skipLastTimelinelabel&&(d.text=""),a.add(g),i.addTspan(g,d.text,this.xaxisFontFamily);var p=document.createElementNS(e.globals.SVGNS,"title");p.textContent=d.text,g.node.appendChild(p),n+=t}if(void 0!==e.config.xaxis.title.text){var x=i.group({class:"apexcharts-xaxis-title"}),b=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.offY-parseInt(this.xaxisFontSize)+e.globals.xAxisLabelsHeight+e.config.xaxis.title.offsetY,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,foreColor:e.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});x.add(b),s.add(x)}if(e.config.xaxis.axisBorder.show){var m=0;"bar"===e.config.chart.type&&e.globals.isXNumeric&&(m-=15);var v=i.drawLine(e.globals.padHorizontal+m+e.config.xaxis.axisBorder.offsetX,this.offY,this.xaxisBorderWidth,this.offY,e.config.xaxis.axisBorder.color,0,this.xaxisBorderHeight);s.add(v)}return s}},{key:"drawXaxisInversed",value:function(t){var e,i,s=this.w,a=new f(this.ctx),n=s.config.yaxis[0].opposite?s.globals.translateYAxisX[t]:0,r=a.group({class:"apexcharts-yaxis apexcharts-xaxis-inversed",rel:t}),o=a.group({class:"apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g",transform:"translate("+n+", 0)"});r.add(o);for(var l=[],h=0;h<this.xaxisLabels.length;h++)l.push(this.xaxisLabels[h]);i=-(e=s.globals.gridHeight/l.length)/2.2;var c=s.globals.yLabelFormatters[0],d=s.config.yaxis[0].labels;if(d.show)for(var u=0;u<=l.length-1;u++){var g=void 0===l[u]?"":l[u];g=c(g);var p=a.drawText({x:d.offsetX-15,y:i+e+d.offsetY,text:g,textAnchor:this.yaxis.opposite?"start":"end",foreColor:d.style.color?d.style.color:d.style.colors[u],fontSize:d.style.fontSize,fontFamily:d.style.fontFamily,cssClass:"apexcharts-yaxis-label "+d.style.cssClass});if(o.add(p),0!==s.config.yaxis[t].labels.rotate){var x=a.rotateAroundCenter(p.node);p.node.setAttribute("transform","rotate(".concat(s.config.yaxis[t].labels.rotate," ").concat(x.x," ").concat(x.y,")"))}i+=e}if(void 0!==s.config.yaxis[0].title.text){var b=a.group({class:"apexcharts-yaxis-title apexcharts-xaxis-title-inversed",transform:"translate("+n+", 0)"}),m=a.drawText({x:0,y:s.globals.gridHeight/2,text:s.config.yaxis[0].title.text,textAnchor:"middle",foreColor:s.config.yaxis[0].title.style.color,fontSize:s.config.yaxis[0].title.style.fontSize,fontFamily:s.config.yaxis[0].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+s.config.yaxis[0].title.style.cssClass});b.add(m),r.add(b)}if(s.config.xaxis.axisBorder.show){var v=a.drawLine(s.globals.padHorizontal+s.config.xaxis.axisBorder.offsetX,this.offY,this.xaxisBorderWidth,this.offY,this.yaxis.axisBorder.color,0,this.xaxisBorderHeight);r.add(v),this.axesUtils.drawYAxisTicks(0,l.length,s.config.yaxis[0].axisBorder,s.config.yaxis[0].axisTicks,0,e,r)}return r}},{key:"drawXaxisTicks",value:function(t,e){var i=this.w,s=t;if(!(t<0||t>i.globals.gridWidth)){var a=this.offY+i.config.xaxis.axisTicks.offsetY,n=a+i.config.xaxis.axisTicks.height;if(i.config.xaxis.axisTicks.show){var r=new f(this.ctx).drawLine(t+i.config.xaxis.axisTicks.offsetX,a+i.config.xaxis.offsetY,s+i.config.xaxis.axisTicks.offsetX,n+i.config.xaxis.offsetY,i.config.xaxis.axisTicks.color);e.add(r),r.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,s=t.globals.padHorizontal;if(t.globals.timelineLabels.length>0)for(var a=0;a<i;a++)s=this.xaxisLabels[a].position,e.push(s);else for(var n=i,r=0;r<n;r++){var o=n;t.globals.isXNumeric&&"bar"!==t.config.chart.type&&(o-=1),s+=t.globals.gridWidth/o,e.push(s)}return e}},{key:"xAxisLabelCorrections",value:function(){var t=this.w,e=new f(this.ctx),i=t.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g"),s=t.globals.dom.baseEl.querySelectorAll(".apexcharts-xaxis-texts-g text"),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-inversed text"),n=t.globals.dom.baseEl.querySelectorAll(".apexcharts-xaxis-inversed-texts-g text");if(t.globals.rotateXLabels||t.config.xaxis.labels.rotateAlways)for(var r=0;r<s.length;r++){var o=e.rotateAroundCenter(s[r]);o.y=o.y-1,o.x=o.x+1,s[r].setAttribute("transform","rotate(".concat(t.config.xaxis.labels.rotate," ").concat(o.x," ").concat(o.y,")")),s[r].setAttribute("text-anchor","end");i.setAttribute("transform","translate(0, ".concat(-10,")"));var l=s[r].childNodes;t.config.xaxis.labels.trim&&e.placeTextWithEllipsis(l[0],l[0].textContent,t.config.xaxis.labels.maxHeight-40)}else for(var h=t.globals.gridWidth/t.globals.labels.length,c=0;c<s.length;c++){var d=s[c].childNodes;t.config.xaxis.labels.trim&&"datetime"!==t.config.xaxis.type&&e.placeTextWithEllipsis(d[0],d[0].textContent,h)}if(a.length>0){var u=a[a.length-1].getBBox(),g=a[0].getBBox();u.x<-20&&a[a.length-1].parentNode.removeChild(a[a.length-1]),g.x+g.width>t.globals.gridWidth&&a[0].parentNode.removeChild(a[0]);for(var p=0;p<n.length;p++)e.placeTextWithEllipsis(n[p],n[p].textContent,t.config.yaxis[0].labels.maxWidth-2*parseInt(t.config.yaxis[0].title.style.fontSize)-20)}}}]),t}(),W=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w;var s=this.w;this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.axisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xAxisoffX=0,"bottom"===s.config.xaxis.position&&(this.xAxisoffX=s.globals.gridHeight),this.drawnLabels=[],this.axesUtils=new O(i)}return s(t,[{key:"drawYaxis",value:function(t){var e=this.w,i=new f(this.ctx),s=e.config.yaxis[t].labels.style.fontSize,a=e.config.yaxis[t].labels.style.fontFamily,n=i.group({class:"apexcharts-yaxis",rel:t,transform:"translate("+e.globals.translateYAxisX[t]+", 0)"});if(!e.config.yaxis[t].show)return n;var r=i.group({class:"apexcharts-yaxis-texts-g"});n.add(r);var o=e.globals.yAxisScale[t].result.length-1,l=e.globals.gridHeight/o+.1,h=e.globals.translateY,c=e.globals.yLabelFormatters[t],d=e.globals.yAxisScale[t].result.slice();if(e.config.yaxis[t]&&e.config.yaxis[t].reversed&&d.reverse(),e.config.yaxis[t].labels.show)for(var u=o;u>=0;u--){var g=d[u];g=c(g,u);var p=e.config.yaxis[t].labels.padding;e.config.yaxis[t].opposite&&0!==e.config.yaxis.length&&(p*=-1);var x=i.drawText({x:p,y:h+o/10+e.config.yaxis[t].labels.offsetY+1,text:g,textAnchor:e.config.yaxis[t].opposite?"start":"end",fontSize:s,fontFamily:a,foreColor:e.config.yaxis[t].labels.style.color,cssClass:"apexcharts-yaxis-label "+e.config.yaxis[t].labels.style.cssClass});r.add(x);var b=i.rotateAroundCenter(x.node);0!==e.config.yaxis[t].labels.rotate&&x.node.setAttribute("transform","rotate(".concat(e.config.yaxis[t].labels.rotate," ").concat(b.x," ").concat(b.y,")")),h+=l}if(void 0!==e.config.yaxis[t].title.text){var m=i.group({class:"apexcharts-yaxis-title"}),v=0;e.config.yaxis[t].opposite&&(v=e.globals.translateYAxisX[t]);var y=i.drawText({x:v,y:e.globals.gridHeight/2+e.globals.translateY,text:e.config.yaxis[t].title.text,textAnchor:"end",foreColor:e.config.yaxis[t].title.style.color,fontSize:e.config.yaxis[t].title.style.fontSize,fontFamily:e.config.yaxis[t].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+e.config.yaxis[t].title.style.cssClass});m.add(y),n.add(m)}var w=e.config.yaxis[t].axisBorder;if(w.show){var k=31+w.offsetX;e.config.yaxis[t].opposite&&(k=-31-w.offsetX);var A=i.drawLine(k,e.globals.translateY+w.offsetY-2,k,e.globals.gridHeight+e.globals.translateY+w.offsetY+2,w.color);n.add(A),this.axesUtils.drawYAxisTicks(k,o,w,e.config.yaxis[t].axisTicks,t,l,n)}return n}},{key:"drawYaxisInversed",value:function(t){var e=this.w,i=new f(this.ctx),s=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),a=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});s.add(a);var n=e.globals.yAxisScale[t].result.length-1,r=e.globals.gridWidth/n+.1,o=r+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=e.globals.yAxisScale[t].result.slice(),c=e.globals.invertedTimelineLabels;c.length>0&&(this.xaxisLabels=c.slice(),n=(h=c.slice()).length),e.config.yaxis[t]&&e.config.yaxis[t].reversed&&h.reverse();var d=c.length;if(e.config.xaxis.labels.show)for(var u=d?0:n;d?u<d-1:u>=0;d?u++:u--){var g=h[u];g=l(g,u);var p=e.globals.gridWidth+e.globals.padHorizontal-(o-r+e.config.xaxis.labels.offsetX);if(c.length){var x=this.axesUtils.getLabel(h,c,p,u,this.drawnLabels);p=x.x,g=x.text,this.drawnLabels.push(x.text)}var b=i.drawText({x:p,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30,text:"",textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,cssClass:"apexcharts-xaxis-label "+e.config.xaxis.labels.style.cssClass});a.add(b),b.tspan(g);var m=document.createElementNS(e.globals.SVGNS,"title");m.textContent=g,b.node.appendChild(m),o+=r}if(void 0!==e.config.xaxis.title.text){var v=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),y=i.drawText({x:e.globals.gridWidth/2,y:this.xAxisoffX+parseInt(this.xaxisFontSize)+parseInt(e.config.xaxis.title.style.fontSize)+20,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});v.add(y),s.add(v)}var w=e.config.yaxis[t].axisBorder;if(w.show){var k=i.drawLine(e.globals.padHorizontal+w.offsetX,1+w.offsetY,e.globals.padHorizontal+w.offsetX,e.globals.gridHeight+w.offsetY,w.color);s.add(k)}return s}},{key:"yAxisTitleRotate",value:function(t,e){var i=this.w,s=new f(this.ctx),a={width:0,height:0},n={width:0,height:0},r=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-texts-g"));null!==r&&(a=r.getBoundingClientRect());var o=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-title text"));if(null!==o&&(n=o.getBoundingClientRect()),null!==o){var l=this.xPaddingForYAxisTitle(t,a,n,e);o.setAttribute("x",l.xPos-(e?10:0))}if(null!==o){var h=s.rotateAroundCenter(o);e?o.setAttribute("transform","rotate(".concat(i.config.yaxis[t].title.rotate," ").concat(h.x," ").concat(h.y,")")):o.setAttribute("transform","rotate(-".concat(i.config.yaxis[t].title.rotate," ").concat(h.x," ").concat(h.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(t,e,i,s){var a=this.w,n=0,r=0,o=10;return void 0===a.config.yaxis[t].title.text||t<0?{xPos:r,padd:0}:(s?(r=e.width+a.config.yaxis[t].title.offsetX+i.width/2+o/2,0===(n+=1)&&(r-=o/2)):(r=-1*e.width+a.config.yaxis[t].title.offsetX+o/2+i.width/2,a.globals.isBarHorizontal&&(o=25,r=-1*e.width-a.config.yaxis[t].title.offsetX-o)),{xPos:r,padd:o})}},{key:"setYAxisXPosition",value:function(t,e){var i=this.w,s=0,a=0,n=21,r=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map(function(o,l){var h=i.globals.ignoreYAxisIndexes.indexOf(l)>-1||!o.show||o.floating||0===t[l].width,c=t[l].width+e[l].width;o.opposite?i.globals.isBarHorizontal?(a=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=a-o.labels.offsetX):(a=i.globals.gridWidth+i.globals.translateX+r,h||(r=r+c+20),i.globals.translateYAxisX[l]=a-o.labels.offsetX+20):(s=i.globals.translateX-n,h||(n=n+c+20),i.globals.translateYAxisX[l]=s+o.labels.offsetX)})}},{key:"setYAxisTextAlignments",value:function(){var t=this.w,e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis");(e=d.listToArray(e)).forEach(function(e,i){var s=t.config.yaxis[i];if(void 0!==s.labels.align){var a=t.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-texts-g")),n=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-label"));n=d.listToArray(n);var r=a.getBoundingClientRect();"left"===s.labels.align?(n.forEach(function(t,e){t.setAttribute("text-anchor","start")}),s.opposite||a.setAttribute("transform","translate(-".concat(r.width,", 0)"))):"center"===s.labels.align?(n.forEach(function(t,e){t.setAttribute("text-anchor","middle")}),a.setAttribute("transform","translate(".concat(r.width/2*(s.opposite?1:-1),", 0)"))):"right"===s.labels.align&&(n.forEach(function(t,e){t.setAttribute("text-anchor","end")}),s.opposite&&a.setAttribute("transform","translate(".concat(r.width,", 0)")))}})}}]),t}(),B=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"niceScale",value:function(t,e,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:10,n=this.w,r=void 0===this.w.config.yaxis[s].max&&void 0===this.w.config.yaxis[s].min||this.w.config.yaxis[s].forceNiceScale;if(t===Number.MIN_VALUE&&0===e||!d.isNumber(t)&&!d.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE)return t=0,e=a,this.linearScale(t,e,a);t>e?(console.warn("yaxis.min cannot be greater than yaxis.max"),e=t+.1):t===e&&(t=0===t?0:t-.5,e=0===e?2:e+.5);var o=[],l=Math.abs(e-t);l<1&&r&&("candlestick"===n.config.chart.type||"candlestick"===n.config.series[s].type||n.globals.isRangeData)&&(e*=1.01),l<1e-5&&r&&e<10?e*=1.05:i>.1&&i<3&&r&&(e+=i/3);var h=a+1;h<2?h=2:h>2&&(h-=2);for(var c=l/h,u=Math.floor(d.log10(c)),g=Math.pow(10,u),f=parseInt(c/g)*g,p=f*Math.floor(t/f),x=f*Math.ceil(e/f),b=p;o.push(b),!((b+=f)>x););if(r)return{result:o,niceMin:o[0],niceMax:o[o.length-1]};var m=t;(o=[]).push(m);for(var v=Math.abs(e-t)/a,y=0;y<=a-1;y++)m+=v,o.push(m);return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:"linearScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,s=Math.abs(e-t)/i;i===Number.MAX_VALUE&&(i=10,s=1);for(var a=[],n=t;i>=0;)a.push(n),n+=s,i-=1;return{result:a,niceMin:a[0],niceMax:a[a.length-1]}}},{key:"logarithmicScale",value:function(t,e,i,s){(e<0||e===Number.MIN_VALUE)&&(e=.01);for(var a=Math.log(e)/Math.log(10),n=Math.log(i)/Math.log(10),r=Math.abs(i-e)/s,o=[],l=e;s>=0;)o.push(l),l+=r,s-=1;var h=o.map(function(t,s){t<=0&&(t=.01);var r=(n-a)/(i-e),o=Math.pow(10,a+r*(t-a));return Math.round(o/d.roundToBase(o,10))*d.roundToBase(o,10)});return 0===h[0]&&(h[0]=1),{result:h,niceMin:h[0],niceMax:h[h.length-1]}}},{key:"setYScaleForIndex",value:function(t,e,i){var s=this.w.globals,a=this.w.config,n=s.isBarHorizontal?a.xaxis:a.yaxis[t];if(void 0===s.yAxisScale[t]&&(s.yAxisScale[t]=[]),n.logarithmic)s.allSeriesCollapsed=!1,s.yAxisScale[t]=this.logarithmicScale(t,e,i,n.tickAmount?n.tickAmount:Math.floor(Math.log10(i)));else if(i!==-Number.MAX_VALUE&&d.isNumber(i))if(s.allSeriesCollapsed=!1,void 0===n.min&&void 0===n.max||n.forceNiceScale){var r=Math.abs(i-e);s.yAxisScale[t]=this.niceScale(e,i,r,t,n.tickAmount?n.tickAmount:r<5&&r>1?r+1:5)}else s.yAxisScale[t]=this.linearScale(e,i,n.tickAmount);else s.yAxisScale[t]=this.linearScale(0,5,5)}},{key:"setMultipleYScales",value:function(){var t=this,e=this.w.globals,i=this.w.config,s=e.minYArr.concat([]),a=e.maxYArr.concat([]),n=[];i.yaxis.forEach(function(r,o){var l=o;i.series.forEach(function(t,i){t.name===r.seriesName&&-1===e.collapsedSeriesIndices.indexOf(i)&&(l=i,o!==i?n.push({index:i,similarIndex:o,alreadyExists:!0}):n.push({index:i}))});var h=s[l],c=a[l];t.setYScaleForIndex(o,h,c)}),this.sameScaleInMultipleAxes(s,a,n)}},{key:"sameScaleInMultipleAxes",value:function(t,e,i){var s=this,a=this.w.config,n=this.w.globals,r=[];i.forEach(function(t){t.alreadyExists&&(void 0===r[t.index]&&(r[t.index]=[]),r[t.index].push(t.index),r[t.index].push(t.similarIndex))}),r.forEach(function(t,e){r.forEach(function(i,s){var a,n;e!==s&&(a=t,n=i,a.filter(function(t){return-1!==n.indexOf(t)})).length>0&&(r[e]=r[e].concat(r[s]))})});var o=r.map(function(t){return t.filter(function(e,i){return t.indexOf(e)===i})}).map(function(t){return t.sort()});r=r.filter(function(t){return!!t});var l=o.slice(),h=l.map(function(t){return JSON.stringify(t)});l=l.filter(function(t,e){return h.indexOf(JSON.stringify(t))===e});var c=[],d=[];t.forEach(function(t,i){l.forEach(function(s,a){s.indexOf(i)>-1&&(void 0===c[a]&&(c[a]=[],d[a]=[]),c[a].push({key:i,value:t}),d[a].push({key:i,value:e[i]}))})});var u=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),g=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);c.forEach(function(t,e){t.forEach(function(t,i){u[e]=Math.min(t.value,u[e])})}),d.forEach(function(t,e){t.forEach(function(t,i){g[e]=Math.max(t.value,g[e])})}),t.forEach(function(t,e){d.forEach(function(t,i){var r=u[i],o=g[i];t.forEach(function(i,l){t[l].key===e&&(void 0!==a.yaxis[e].min&&(r="function"==typeof a.yaxis[e].min?a.yaxis[e].min(n.minY):a.yaxis[e].min),void 0!==a.yaxis[e].max&&(o="function"==typeof a.yaxis[e].max?a.yaxis[e].max(n.maxY):a.yaxis[e].max),s.setYScaleForIndex(e,r,o))})})})}},{key:"autoScaleY",value:function(t,e){t||(t=this);var i=[];return t.w.config.series.forEach(function(t){var s,a,n=t.data.find(function(t){return t[0]>=e.xaxis.min})[1];a=s=n,t.data.forEach(function(t){t[0]<=e.xaxis.max&&t[0]>=e.xaxis.min&&(t[1]>a&&null!==t[1]&&(a=t[1]),t[1]<s&&null!==t[1]&&(s=t[1]))}),s*=.95,a*=1.05,i.push({min:s,max:a})}),i}}]),t}(),V=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.scales=new B(i)}return s(t,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=this.w.globals,n=-Number.MAX_VALUE,r=Number.MIN_VALUE;null===s&&(s=t+1);var o=a.series,l=o,h=o;"candlestick"===this.w.config.chart.type?(l=a.seriesCandleL,h=a.seriesCandleH):a.isRangeData&&(l=a.seriesRangeStart,h=a.seriesRangeEnd);for(var c=t;c<s;c++){a.dataPoints=Math.max(a.dataPoints,o[c].length);for(var u=0;u<a.series[c].length;u++){var g=o[c][u];null!==g&&d.isNumber(g)?(n=Math.max(n,h[c][u]),e=Math.min(e,l[c][u]),i=Math.max(i,l[c][u]),"candlestick"===this.w.config.chart.type&&(n=Math.max(n,a.seriesCandleO[c][u]),n=Math.max(n,a.seriesCandleH[c][u]),n=Math.max(n,a.seriesCandleL[c][u]),i=n=Math.max(n,a.seriesCandleC[c][u])),d.isFloat(g)&&(g=d.noExponents(g),a.yValueDecimal=Math.max(a.yValueDecimal,g.toString().split(".")[1].length)),r>l[c][u]&&l[c][u]<0&&(r=l[c][u])):a.hasNullValues=!0}}return{minY:r,maxY:n,lowestY:e,highestY:i}}},{key:"setYRange",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(t.isMultipleYAxis)for(var s=0;s<t.series.length;s++){var a=this.getMinYMaxY(s,i,null,s+1);t.minYArr.push(a.minY),t.maxYArr.push(a.maxY),i=a.lowestY}var n=this.getMinYMaxY(0,i,null,t.series.length);if(t.minY=n.minY,t.maxY=n.maxY,i=n.lowestY,e.chart.stacked){for(var r=[],o=[],l=0;l<t.series[t.maxValsInArrayIndex].length;l++)for(var h=0,c=0,u=0;u<t.series.length;u++)null!==t.series[u][l]&&d.isNumber(t.series[u][l])&&(t.series[u][l]>0?h=h+parseFloat(t.series[u][l])+1e-4:c+=parseFloat(t.series[u][l])),u===t.series.length-1&&(r.push(h),o.push(c));for(var g=0;g<r.length;g++)t.maxY=Math.max(t.maxY,r[g]),t.minY=Math.min(t.minY,o[g])}if(("line"===e.chart.type||"area"===e.chart.type||"candlestick"===e.chart.type)&&t.minY===Number.MIN_VALUE&&i!==-Number.MAX_VALUE&&i!==t.maxY){var f=t.maxY-i;i>=0&&i<=10&&(f=0),t.minY=i-5*f/100,t.maxY=t.maxY+5*f/100}return e.yaxis.map(function(e,i){void 0!==e.max&&("number"==typeof e.max?t.maxYArr[i]=e.max:"function"==typeof e.max&&(t.maxYArr[i]=e.max(t.maxY)),t.maxY=t.maxYArr[i]),void 0!==e.min&&("number"==typeof e.min?t.minYArr[i]=e.min:"function"==typeof e.min&&(t.minYArr[i]=e.min(t.minY)),t.minY=t.minYArr[i])}),t.isBarHorizontal&&(void 0!==e.xaxis.min&&"number"==typeof e.xaxis.min&&(t.minY=e.xaxis.min),void 0!==e.xaxis.max&&"number"==typeof e.xaxis.max&&(t.maxY=e.xaxis.max)),t.isMultipleYAxis?(this.scales.setMultipleYScales(),t.minY=i,t.yAxisScale.forEach(function(e,i){t.minYArr[i]=e.niceMin,t.maxYArr[i]=e.niceMax})):(this.scales.setYScaleForIndex(0,t.minY,t.maxY),t.minY=t.yAxisScale[0].niceMin,t.maxY=t.yAxisScale[0].niceMax,t.minYArr[0]=t.yAxisScale[0].niceMin,t.maxYArr[0]=t.yAxisScale[0].niceMax),{minY:t.minY,maxY:t.maxY,minYArr:t.minYArr,maxYArr:t.maxYArr}}},{key:"setXRange",value:function(){var t,e=this.w.globals,i=this.w.config,s="numeric"===i.xaxis.type||"datetime"===i.xaxis.type||"category"===i.xaxis.type&&!e.noLabelsProvided||e.noLabelsProvided||e.isXNumeric;if(e.isXNumeric)for(var a=0;a<e.series.length;a++)if(e.labels[a])for(var n=0;n<e.labels[a].length;n++)null!==e.labels[a][n]&&d.isNumber(e.labels[a][n])&&(e.maxX=Math.max(e.maxX,e.labels[a][n]),e.initialmaxX=Math.max(e.maxX,e.labels[a][n]),e.minX=Math.min(e.minX,e.labels[a][n]),e.initialminX=Math.min(e.minX,e.labels[a][n]));if(e.noLabelsProvided&&0===i.xaxis.categories.length&&(e.maxX=e.labels[e.labels.length-1],e.initialmaxX=e.labels[e.labels.length-1],e.minX=1,e.initialminX=1),(e.comboChartsHasBars||"candlestick"===i.chart.type||"bar"===i.chart.type&&e.isXNumeric)&&("category"!==i.xaxis.type||e.isXNumeric)){var r=e.minX-e.svgWidth/e.dataPoints*(Math.abs(e.maxX-e.minX)/e.svgWidth)/2;e.minX=r,e.initialminX=r;var o=e.maxX+e.svgWidth/e.dataPoints*(Math.abs(e.maxX-e.minX)/e.svgWidth)/2;e.maxX=o,e.initialmaxX=o}!e.isXNumeric&&!e.noLabelsProvided||i.xaxis.convertedCatToNumeric&&!e.dataFormatXNumeric||(void 0===i.xaxis.tickAmount?(t=Math.round(e.svgWidth/150),"numeric"===i.xaxis.type&&e.dataPoints<20&&(t=e.dataPoints-1),t>e.dataPoints&&0!==e.dataPoints&&(t=e.dataPoints-1)):t="dataPoints"===i.xaxis.tickAmount?e.series[e.maxValsInArrayIndex].length-1:i.xaxis.tickAmount,void 0!==i.xaxis.max&&"number"==typeof i.xaxis.max&&(e.maxX=i.xaxis.max),void 0!==i.xaxis.min&&"number"==typeof i.xaxis.min&&(e.minX=i.xaxis.min),void 0!==i.xaxis.range&&(e.minX=e.maxX-i.xaxis.range),e.minX!==Number.MAX_VALUE&&e.maxX!==-Number.MAX_VALUE?e.xAxisScale=this.scales.linearScale(e.minX,e.maxX,t):(e.xAxisScale=this.scales.linearScale(1,t,t),e.noLabelsProvided&&e.labels.length>0&&(e.xAxisScale=this.scales.linearScale(1,e.labels.length,t-1),e.seriesX=e.labels.slice())),s&&(e.labels=e.xAxisScale.result.slice()));if(e.minX===e.maxX)if("datetime"===i.xaxis.type){var l=new Date(e.minX);l.setDate(l.getDate()-2),e.minX=new Date(l).getTime();var h=new Date(e.maxX);h.setDate(h.getDate()+2),e.maxX=new Date(h).getTime()}else("numeric"===i.xaxis.type||"category"===i.xaxis.type&&!e.noLabelsProvided)&&(e.minX=e.minX-2,e.maxX=e.maxX+2);return e.isXNumeric&&(e.seriesX.forEach(function(t,i){t.forEach(function(t,s){if(s>0){var a=t-e.seriesX[i][s-1];e.minXDiff=Math.min(a,e.minXDiff)}})}),this.calcMinXDiffForTinySeries()),{minX:e.minX,maxX:e.maxX}}},{key:"calcMinXDiffForTinySeries",value:function(){var t=this.w,e=t.globals.labels.length;return 1===t.globals.labels.length?t.globals.minXDiff=(t.globals.maxX-t.globals.minX)/e/3:t.globals.minXDiff===Number.MAX_VALUE&&(t.globals.timelineLabels.length>0&&(e=t.globals.timelineLabels.length),e<3&&(e=3),t.globals.minXDiff=(t.globals.maxX-t.globals.minX)/e),t.globals.minXDiff}},{key:"setZRange",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e<t.series.length;e++)if(void 0!==t.seriesZ[e])for(var i=0;i<t.seriesZ[e].length;i++)null!==t.seriesZ[e][i]&&d.isNumber(t.seriesZ[e][i])&&(t.maxZ=Math.max(t.maxZ,t.seriesZ[e][i]),t.minZ=Math.min(t.minZ,t.seriesZ[e][i]))}}]),t}(),G=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"getAllSeriesEls",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series")}},{key:"getSeriesByName",value:function(t){return this.w.globals.dom.baseEl.querySelector("[seriesName='".concat(d.escapeString(t),"']"))}},{key:"addCollapsedClassToSeries",value:function(t,e){var i=this.w;function s(i){for(var s=0;s<i.length;s++)i[s].index===e&&t.node.classList.add("apexcharts-series-collapsed")}s(i.globals.collapsedSeries),s(i.globals.ancillaryCollapsedSeries)}},{key:"toggleSeriesOnHover",value:function(t,e){var i=this.w,s=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series");if("mousemove"===t.type){var a=parseInt(e.getAttribute("rel"))-1,n=null;n=i.globals.axisCharts||"radialBar"===i.config.chart.type?i.globals.axisCharts?i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(a,"']")):i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(a+1,"']")):i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(a+1,"'] path"));for(var r=0;r<s.length;r++)s[r].classList.add("legend-mouseover-inactive");null!==n&&(i.globals.axisCharts||n.parentNode.classList.remove("legend-mouseover-inactive"),n.classList.remove("legend-mouseover-inactive"))}else if("mouseout"===t.type)for(var o=0;o<s.length;o++)s[o].classList.remove("legend-mouseover-inactive")}},{key:"highlightRangeInSeries",value:function(t,e){var i=this.w,s=i.globals.dom.baseEl.querySelectorAll(".apexcharts-heatmap-rect"),a=function(){for(var t=0;t<s.length;t++)s[t].classList.remove("legend-mouseover-inactive")};if("mousemove"===t.type){var n=parseInt(e.getAttribute("rel"))-1;a(),function(){for(var t=0;t<s.length;t++)s[t].classList.add("legend-mouseover-inactive")}(),function(t){for(var e=0;e<s.length;e++){var i=parseInt(s[e].getAttribute("val"));i>=t.from&&i<=t.to&&s[e].classList.remove("legend-mouseover-inactive")}}(i.config.plotOptions.heatmap.colorScale.ranges[n])}else"mouseout"===t.type&&a()}},{key:"getActiveSeriesIndex",value:function(){var t=this.w,e=0;if(t.globals.series.length>1)for(var i=t.globals.series.map(function(e,i){return e.length>0&&"bar"!==t.config.series[i].type&&"column"!==t.config.series[i].type?i:-1}),s=0;s<i.length;s++)if(-1!==i[s]){e=i[s];break}return e}},{key:"getActiveConfigSeriesIndex",value:function(){var t=this.w,e=0;if(t.config.series.length>1)for(var i=t.config.series.map(function(t,e){return t.data&&t.data.length>0?e:-1}),s=0;s<i.length;s++)if(-1!==i[s]){e=i[s];break}return e}},{key:"getPreviousPaths",value:function(){var t=this.w;function e(e,i,s){for(var a=e[i].childNodes,n={type:s,paths:[],realIndex:e[i].getAttribute("data:realIndex")},r=0;r<a.length;r++)if(a[r].hasAttribute("pathTo")){var o=a[r].getAttribute("pathTo");n.paths.push({d:o})}t.globals.previousPaths.push(n)}t.globals.previousPaths=[];var i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-line-series .apexcharts-series");if(i.length>0)for(var s=i.length-1;s>=0;s--)e(i,s,"line");var a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-area-series .apexcharts-series");if(a.length>0)for(var n=a.length-1;n>=0;n--)e(a,n,"area");var r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series .apexcharts-series");if(r.length>0)for(var o=0;o<r.length;o++)e(r,o,"bar");var l=t.globals.dom.baseEl.querySelectorAll(".apexcharts-candlestick-series .apexcharts-series");if(l.length>0)for(var h=0;h<l.length;h++)e(l,h,"candlestick");var c=t.globals.dom.baseEl.querySelectorAll(".apexcharts-radar-series .apexcharts-series");if(c.length>0)for(var d=0;d<c.length;d++)e(c,d,"radar");var u=t.globals.dom.baseEl.querySelectorAll(".apexcharts-bubble-series .apexcharts-series");if(u.length>0)for(var g=0;g<u.length;g++){for(var f=t.globals.dom.baseEl.querySelectorAll(".apexcharts-bubble-series .apexcharts-series[data\\:realIndex='".concat(g,"'] circle")),p=[],x=0;x<f.length;x++)p.push({x:f[x].getAttribute("cx"),y:f[x].getAttribute("cy"),r:f[x].getAttribute("r")});t.globals.previousPaths.push(p)}var b=t.globals.dom.baseEl.querySelectorAll(".apexcharts-scatter-series .apexcharts-series");if(b.length>0)for(var m=0;m<b.length;m++){for(var v=t.globals.dom.baseEl.querySelectorAll(".apexcharts-scatter-series .apexcharts-series[data\\:realIndex='".concat(m,"'] circle")),y=[],w=0;w<v.length;w++)y.push({x:v[w].getAttribute("cx"),y:v[w].getAttribute("cy"),r:v[w].getAttribute("r")});t.globals.previousPaths.push(y)}var k=t.globals.dom.baseEl.querySelectorAll(".apexcharts-heatmap .apexcharts-series");if(k.length>0)for(var A=0;A<k.length;A++){for(var S=t.globals.dom.baseEl.querySelectorAll(".apexcharts-heatmap .apexcharts-series[data\\:realIndex='".concat(A,"'] rect")),C=[],L=0;L<S.length;L++)C.push({color:S[L].getAttribute("color")});t.globals.previousPaths.push(C)}t.globals.axisCharts||(t.globals.previousPaths=t.globals.series)}},{key:"handleNoData",value:function(){var t=this.w,e=t.config.noData,i=new f(this.ctx),s=t.globals.svgWidth/2,a=t.globals.svgHeight/2,n="middle";if(t.globals.noData=!0,t.globals.animationEnded=!0,"left"===e.align?(s=10,n="start"):"right"===e.align&&(s=t.globals.svgWidth-10,n="end"),"top"===e.verticalAlign?a=50:"bottom"===e.verticalAlign&&(a=t.globals.svgHeight-50),s+=e.offsetX,a=a+parseInt(e.style.fontSize)+2,void 0!==e.text&&""!==e.text){var r=i.drawText({x:s,y:a,text:e.text,textAnchor:n,fontSize:e.style.fontSize,fontFamily:e.style.fontFamily,foreColor:e.style.color,opacity:1,class:"apexcharts-text-nodata"});r.node.setAttribute("class","apexcharts-title-text"),t.globals.dom.Paper.add(r)}}},{key:"setNullSeriesToZeroValues",value:function(t){for(var e=this.w,i=0;i<t.length;i++)if(0===t[i].length)for(var s=0;s<t[e.globals.maxValsInArrayIndex].length;s++)t[i].push(0);return t}},{key:"hasAllSeriesEqualX",value:function(){for(var t=!0,e=this.w,i=this.filteredSeriesX(),s=0;s<i.length-1;s++)if(i[s][0]!==i[s+1][0]){t=!1;break}return e.globals.allSeriesHasEqualX=t,t}},{key:"filteredSeriesX",value:function(){var t=this.w.globals.seriesX.map(function(t,e){return t.length>0?t:[]});return t}}]),t}(),_=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.lgRect={},this.yAxisWidth=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.xPadRight=0,this.xPadLeft=0}return s(t,[{key:"plotCoords",value:function(){var t=this.w,e=t.globals,i=this.getLegendsRect();e.axisCharts?this.setGridCoordsForAxisCharts(i):this.setGridCoordsForNonAxisCharts(i),this.titleSubtitleOffset(),e.gridHeight=e.gridHeight-t.config.grid.padding.top-t.config.grid.padding.bottom,e.gridWidth=e.gridWidth-t.config.grid.padding.left-t.config.grid.padding.right-this.xPadRight-this.xPadLeft,e.translateX=e.translateX+t.config.grid.padding.left+this.xPadLeft,e.translateY=e.translateY+t.config.grid.padding.top}},{key:"conditionalChecksForAxisCoords",value:function(t,e){var i=this.w;this.xAxisHeight=(t.height+e.height)*i.globals.LINE_HEIGHT_RATIO+15,this.xAxisWidth=t.width,this.xAxisHeight-e.height>i.config.xaxis.labels.maxHeight&&(this.xAxisHeight=i.config.xaxis.labels.maxHeight),i.config.xaxis.labels.minHeight&&this.xAxisHeight<i.config.xaxis.labels.minHeight&&(this.xAxisHeight=i.config.xaxis.labels.minHeight),i.config.xaxis.floating&&(this.xAxisHeight=0),i.globals.isBarHorizontal?this.yAxisWidth=i.globals.yLabelsCoords[0].width+i.globals.yTitleCoords[0].width+15:this.yAxisWidth=this.getTotalYAxisWidth();var s=0,a=0;i.config.yaxis.forEach(function(t){s+=t.labels.minWidth,a+=t.labels.maxWidth}),this.yAxisWidth<s&&(this.yAxisWidth=s),this.yAxisWidth>a&&(this.yAxisWidth=a)}},{key:"setGridCoordsForAxisCharts",value:function(t){var e=this.w,i=e.globals,s=this.getyAxisLabelsCoords(),a=this.getxAxisLabelsCoords(),n=this.getyAxisTitleCoords(),r=this.getxAxisTitleCoords();e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map(function(t,i){e.globals.yLabelsCoords.push({width:s[i].width,index:i}),e.globals.yTitleCoords.push({width:n[i].width,index:i})}),this.conditionalChecksForAxisCoords(a,r),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var o=this.yAxisWidth,l=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight,i.xAxisHeight=this.xAxisHeight;var h=10;switch(e.config.grid.show&&"radar"!==e.config.chart.type||(o=0,l=35),this.isSparkline&&(t={height:0,width:0},l=0,o=0,h=0),this.additionalPaddingXLabels(a),e.config.legend.position){case"bottom":i.translateY=h,i.translateX=o,i.gridHeight=i.svgHeight-t.height-l-(this.isSparkline?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-o;break;case"top":i.translateY=t.height+h,i.translateX=o,i.gridHeight=i.svgHeight-t.height-l-(this.isSparkline?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-o;break;case"left":i.translateY=h,i.translateX=t.width+o,i.gridHeight=i.svgHeight-l-12,i.gridWidth=i.svgWidth-t.width-o;break;case"right":i.translateY=h,i.translateX=o,i.gridHeight=i.svgHeight-l-12,i.gridWidth=i.svgWidth-t.width-o-5;break;default:throw new Error("Legend position not supported")}this.setGridXPosForDualYAxis(n,s),new W(this.ctx).setYAxisXPosition(s,n)}},{key:"setGridCoordsForNonAxisCharts",value:function(t){var e=this.w,i=e.globals,s=0;e.config.legend.show&&!e.config.legend.floating&&(s=20);var a=10,n=0;if("pie"===e.config.chart.type||"donut"===e.config.chart.type?(a+=e.config.plotOptions.pie.offsetY,n+=e.config.plotOptions.pie.offsetX):"radialBar"===e.config.chart.type&&(a+=e.config.plotOptions.radialBar.offsetY,n+=e.config.plotOptions.radialBar.offsetX),!e.config.legend.show)return i.gridHeight=i.svgHeight-35,i.gridWidth=i.gridHeight,i.translateY=a-10,void(i.translateX=n+(i.svgWidth-i.gridWidth)/2);switch(e.config.legend.position){case"bottom":i.gridHeight=i.svgHeight-t.height-35,i.gridWidth=i.gridHeight,i.translateY=a-20,i.translateX=n+(i.svgWidth-i.gridWidth)/2;break;case"top":i.gridHeight=i.svgHeight-t.height-35,i.gridWidth=i.gridHeight,i.translateY=t.height+a,i.translateX=n+(i.svgWidth-i.gridWidth)/2;break;case"left":i.gridWidth=i.svgWidth-t.width-s,i.gridHeight=i.gridWidth,i.translateY=a,i.translateX=n+t.width+s;break;case"right":i.gridWidth=i.svgWidth-t.width-s-5,i.gridHeight=i.gridWidth,i.translateY=a,i.translateX=n+10;break;default:throw new Error("Legend position not supported")}}},{key:"setGridXPosForDualYAxis",value:function(t,e){var i=this.w;i.config.yaxis.map(function(s,a){-1===i.globals.ignoreYAxisIndexes.indexOf(a)&&!i.config.yaxis[a].floating&&i.config.yaxis[a].show&&s.opposite&&(i.globals.translateX=i.globals.translateX-(e[a].width+t[a].width)-parseInt(i.config.yaxis[a].labels.style.fontSize)/1.2-12)})}},{key:"additionalPaddingXLabels",value:function(t){var e=this,i=this.w;if("category"===i.config.xaxis.type&&i.globals.isBarHorizontal||"numeric"===i.config.xaxis.type||"datetime"===i.config.xaxis.type){var s=i.globals.isXNumeric;i.config.yaxis.forEach(function(a,n){var r;(!a.show||a.floating||-1!==i.globals.collapsedSeriesIndices.indexOf(n)||s||a.opposite&&i.globals.isBarHorizontal)&&((s&&i.globals.isMultipleYAxis&&-1!==i.globals.collapsedSeriesIndices.indexOf(n)||i.globals.isBarHorizontal&&a.opposite)&&(r=t,i.config.grid.padding.left<r.width&&(e.xPadLeft=r.width/2+1)),(!i.globals.isBarHorizontal&&a.opposite&&-1!==i.globals.collapsedSeriesIndices.indexOf(n)||s&&!i.globals.isMultipleYAxis)&&function(t){e.timescaleLabels?e.timescaleLabels[e.timescaleLabels.length-1].position+t.width>i.globals.gridWidth?i.globals.skipLastTimelinelabel=!0:i.globals.skipLastTimelinelabel=!1:"datetime"!==i.config.xaxis.type&&i.config.grid.padding.right<t.width&&(e.xPadRight=t.width/2+1)}(t))})}}},{key:"titleSubtitleOffset",value:function(){var t=this.w,e=t.globals,i=this.isSparkline||!t.globals.axisCharts?0:10;void 0!==t.config.title.text?i+=t.config.title.margin:i+=this.isSparkline||!t.globals.axisCharts?0:5,void 0!==t.config.subtitle.text?i+=t.config.subtitle.margin:i+=this.isSparkline||!t.globals.axisCharts?0:5,t.config.legend.show&&"bottom"===t.config.legend.position&&!t.config.legend.floating&&t.config.series.length>1&&(i+=10);var s=this.getTitleSubtitleCoords("title"),a=this.getTitleSubtitleCoords("subtitle");e.gridHeight=e.gridHeight-s.height-a.height-i,e.translateY=e.translateY+s.height+a.height+i}},{key:"getTotalYAxisWidth",value:function(){var t=this.w,e=0,i=10,s=function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1};return t.globals.yLabelsCoords.map(function(a,n){var r=t.config.yaxis[n].floating;a.width>0&&!r?(e=e+a.width+i,s(n)&&(e=e-a.width-i)):e+=r||!t.config.yaxis[n].show?0:5}),t.globals.yTitleCoords.map(function(a,n){var r=t.config.yaxis[n].floating;i=parseInt(t.config.yaxis[n].title.style.fontSize),a.width>0&&!r?(e=e+a.width+i,s(n)&&(e=e-a.width-i)):e+=r||!t.config.yaxis[n].show?0:5}),e}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var t,e=this.w;this.timescaleLabels=e.globals.timelineLabels.slice(),e.globals.isBarHorizontal&&"datetime"===e.config.xaxis.type&&(this.timescaleLabels=e.globals.invertedTimelineLabels.slice());var i=this.timescaleLabels.map(function(t){return t.value}),s=i.reduce(function(t,e){return void 0===t?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):t.length>e.length?t:e},0);return 1.05*(t=new f(this.ctx).getTextRects(s,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:"getxAxisLabelsCoords",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.globals.timelineLabels.length>0){var s=this.getxAxisTimeScaleLabelsCoords();t={width:s.width,height:s.height}}else{var a="left"!==e.config.legend.position||"right"!==e.config.legend.position||e.config.legend.floating?0:this.lgRect.width,n=e.globals.xLabelFormatter,r=i.reduce(function(t,e){return t.length>e.length?t:e},0);e.globals.isBarHorizontal&&(r=e.globals.yAxisScale[0].result.reduce(function(t,e){return t.length>e.length?t:e},0)),r=new N(this.ctx).xLabelFormat(n,r);var o=new f(this.ctx),l=o.getTextRects(r,e.config.xaxis.labels.style.fontSize);(t={width:l.width,height:l.height}).width*i.length>e.globals.svgWidth-a-this.yAxisWidth&&0!==e.config.xaxis.labels.rotate?e.globals.isBarHorizontal||(e.globals.rotateXLabels=!0,l=o.getTextRects(r,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,"rotate(".concat(e.config.xaxis.labels.rotate," 0 0)"),!1),t.height=l.height/1.66):e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:"getyAxisLabelsCoords",value:function(){var t=this,e=this.w,i=[],s=10;return e.config.yaxis.map(function(a,n){if(a.show&&a.labels.show&&e.globals.yAxisScale[n].result.length){var r=e.globals.yLabelFormatters[n],o=r(e.globals.yAxisScale[n].niceMax,-1);if(void 0!==o&&0!==o.length||(o=e.globals.yAxisScale[n].niceMax),e.globals.isBarHorizontal)s=0,o=r(o=e.globals.labels.slice().reduce(function(t,e){return t.length>e.length?t:e},0),-1);var l=new f(t.ctx).getTextRects(o,a.labels.style.fontSize);i.push({width:l.width+s,height:l.height})}else i.push({width:0,height:0})}),i}},{key:"getxAxisTitleCoords",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var s=new f(this.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=s.width,i=s.height}return{width:e,height:i}}},{key:"getyAxisTitleCoords",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map(function(e,s){if(e.show&&void 0!==e.title.text){var a=new f(t.ctx).getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,"rotate(-90 0 0)",!1);i.push({width:a.width,height:a.height})}else i.push({width:0,height:0})}),i}},{key:"getTitleSubtitleCoords",value:function(t){var e=this.w,i=0,s=0,a="title"===t?e.config.title.floating:e.config.subtitle.floating,n=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(t,"-text"));if(null!==n&&!a){var r=n.getBoundingClientRect();i=r.width,s=e.globals.axisCharts?r.height+5:r.height}return{width:i,height:s}}},{key:"getLegendsRect",value:function(){var t=this.w,e=t.globals.dom.baseEl.querySelector(".apexcharts-legend"),i=Object.assign({},d.getBoundingClientRect(e));return null!==e&&!t.config.legend.floating&&t.config.legend.show?this.lgRect={x:i.x,y:i.y,height:i.height,width:0===i.height?0:i.width}:this.lgRect={x:0,y:0,height:0,width:0},this.lgRect}}]),t}(),j=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.timeScaleArray=[]}return s(t,[{key:"calculateTimeScaleTicks",value:function(t,e){var i=this,s=this.w;if(s.globals.allSeriesCollapsed)return s.globals.labels=[],s.globals.timelineLabels=[],[];var a=new m(this.ctx),r=(e-t)/864e5;this.determineInterval(r),s.globals.disableZoomIn=!1,s.globals.disableZoomOut=!1,r<.005?s.globals.disableZoomIn=!0:r>5e4&&(s.globals.disableZoomOut=!0);var o=a.getTimeUnitsfromTimestamp(t,e),l=s.globals.gridWidth/r,h=l/24,c=h/60,d=Math.floor(24*r),u=Math.floor(24*r*60),g=Math.floor(r),f=Math.floor(r/30),p=Math.floor(r/365),x={minMinute:o.minMinute,minHour:o.minHour,minDate:o.minDate,minMonth:o.minMonth,minYear:o.minYear},b={firstVal:x,currentMinute:x.minMinute,currentHour:x.minHour,currentMonthDate:x.minDate,currentDate:x.minDate,currentMonth:x.minMonth,currentYear:x.minYear,daysWidthOnXAxis:l,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,numberOfMinutes:u,numberOfHours:d,numberOfDays:g,numberOfMonths:f,numberOfYears:p};switch(this.tickInterval){case"years":this.generateYearScale(b);break;case"months":case"half_year":this.generateMonthScale(b);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(b);break;case"hours":this.generateHourScale(b);break;case"minutes":this.generateMinuteScale(b)}var v=this.timeScaleArray.map(function(t){var e={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return"month"===t.unit?n({},e,{value:t.value+1}):"day"===t.unit||"hour"===t.unit?n({},e,{value:t.value}):"minute"===t.unit?n({},e,{value:t.value,minute:t.value}):t});return v.filter(function(t){var e=1,a=Math.ceil(s.globals.gridWidth/120),n=t.value;void 0!==s.config.xaxis.tickAmount&&(a=s.config.xaxis.tickAmount),v.length>a&&(e=Math.floor(v.length/a));var r=!1,o=!1;switch(i.tickInterval){case"half_year":e=7,"year"===t.unit&&(r=!0);break;case"months":e=1,"year"===t.unit&&(r=!0);break;case"months_fortnight":e=15,"year"!==t.unit&&"month"!==t.unit||(r=!0),30===n&&(o=!0);break;case"months_days":e=10,"month"===t.unit&&(r=!0),30===n&&(o=!0);break;case"week_days":e=8,"month"===t.unit&&(r=!0);break;case"days":e=1,"month"===t.unit&&(r=!0);break;case"hours":"day"===t.unit&&(r=!0);break;case"minutes":n%5!=0&&(o=!0)}if("minutes"===i.tickInterval||"hours"===i.tickInterval){if(!o)return!0}else if((n%e==0||r)&&!o)return!0})}},{key:"recalcDimensionsBasedOnFormat",value:function(t,e){var i=this.w,s=this.formatDates(t),a=this.removeOverlappingTS(s);e?i.globals.invertedTimelineLabels=a.slice():i.globals.timelineLabels=a.slice(),new _(this.ctx).plotCoords()}},{key:"determineInterval",value:function(t){switch(!0){case t>1825:this.tickInterval="years";break;case t>800&&t<=1825:this.tickInterval="half_year";break;case t>180&&t<=800:this.tickInterval="months";break;case t>90&&t<=180:this.tickInterval="months_fortnight";break;case t>60&&t<=90:this.tickInterval="months_days";break;case t>30&&t<=60:this.tickInterval="week_days";break;case t>2&&t<=30:this.tickInterval="days";break;case t>.1&&t<=2:this.tickInterval="hours";break;case t<.1:this.tickInterval="minutes";break;default:this.tickInterval="days"}}},{key:"generateYearScale",value:function(t){var e=t.firstVal,i=t.currentMonth,s=t.currentYear,a=t.daysWidthOnXAxis,n=t.numberOfYears,r=e.minYear,o=0,l=new m(this.ctx);if(e.minDate>1&&e.minMonth>0){var h=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);o=(l.determineDaysOfYear(e.minYear)-h+1)*a,r=e.minYear+1,this.timeScaleArray.push({position:o,value:r,unit:"year",year:r,month:d.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:o,value:r,unit:"year",year:s,month:d.monthMod(i+1)});for(var c=r,u=o,g=0;g<n;g++)c++,u=l.determineDaysOfYear(c-1)*a+u,this.timeScaleArray.push({position:u,value:c,unit:"year",year:c,month:1})}},{key:"generateMonthScale",value:function(t){var e=t.firstVal,i=t.currentMonthDate,s=t.currentMonth,a=t.currentYear,n=t.daysWidthOnXAxis,r=t.numberOfMonths,o=s,l=0,h=new m(this.ctx),c="month",u=0;if(e.minDate>1){l=(h.determineDaysOfMonths(s+1,e.minYear)-i+1)*n,o=d.monthMod(s+1);var g=a+u,f=d.monthMod(o),p=o;0===o&&(c="year",p=g,f=1,g+=u+=1),this.timeScaleArray.push({position:l,value:p,unit:c,year:g,month:f})}else this.timeScaleArray.push({position:l,value:o,unit:c,year:a,month:d.monthMod(s)});for(var x=o+1,b=l,v=0,y=1;v<r;v++,y++){0===(x=d.monthMod(x))?(c="year",u+=1):c="month";var w=a+Math.floor(x/12)+u;b=h.determineDaysOfMonths(x,w)*n+b;var k=0===x?w:x;this.timeScaleArray.push({position:b,value:k,unit:c,year:w,month:0===x?1:x}),x++}}},{key:"generateDayScale",value:function(t){var e=t.firstVal,i=t.currentMonth,s=t.currentYear,a=t.hoursWidthOnXAxis,n=t.numberOfDays,r=new m(this.ctx),o="day",l=(24-e.minHour)*a,h=e.minDate+1,c=h,u=function(t,e,i){return t>r.determineDaysOfMonths(e+1,i)?(g=1,o="month",c=e+=1,e):e},g=h,f=u(g,i,s);this.timeScaleArray.push({position:l,value:c,unit:o,year:s,month:d.monthMod(f),day:g});for(var p=l,x=0;x<n;x++){o="day",f=u(g+=1,f,s+Math.floor(f/12)+0);var b=s+Math.floor(f/12)+0;p=24*a+p;var v=1===g?d.monthMod(f):g;this.timeScaleArray.push({position:p,value:v,unit:o,year:b,month:d.monthMod(f),day:v})}}},{key:"generateHourScale",value:function(t){var e=t.firstVal,i=t.currentDate,s=t.currentMonth,a=t.currentYear,n=t.minutesWidthOnXAxis,r=t.numberOfHours,o=new m(this.ctx),l="hour",h=function(t,e){return t>o.determineDaysOfMonths(e+1,a)&&(x=1,e+=1),{month:e,date:x}},c=function(t,e){return t>o.determineDaysOfMonths(e+1,a)?e+=1:e},u=60-e.minMinute,g=u*n,f=e.minHour+1,p=f+1;60===u&&(g=0,p=(f=e.minHour)+1);var x=i,b=c(x,s);this.timeScaleArray.push({position:g,value:f,unit:l,day:x,hour:p,year:a,month:d.monthMod(b)});for(var v=g,y=0;y<r;y++){if(l="hour",p>=24)p=0,l="day",b=h(x+=1,b).month,b=c(x,b);var w=a+Math.floor(b/12)+0;v=0===p&&0===y?u*n:60*n+v;var k=0===p?x:p;this.timeScaleArray.push({position:v,value:k,unit:l,hour:p,day:x,year:w,month:d.monthMod(b)}),p++}}},{key:"generateMinuteScale",value:function(t){var e=t.firstVal,i=t.currentMinute,s=t.currentHour,a=t.currentDate,n=t.currentMonth,r=t.currentYear,o=t.minutesWidthOnXAxis,l=t.numberOfMinutes,h=o-(i-e.minMinute),c=e.minMinute+1,u=c+1,g=a,f=n,p=r,x=s;this.timeScaleArray.push({position:h,value:c,unit:"minute",day:g,hour:x,minute:u,year:p,month:d.monthMod(f)});for(var b=h,m=0;m<l;m++){u>=60&&(u=0,24===(x+=1)&&(x=0));var v=r+Math.floor(f/12)+0;b=o+b;var y=u;this.timeScaleArray.push({position:b,value:y,unit:"minute",hour:x,minute:u,day:g,year:v,month:d.monthMod(f)}),u++}}},{key:"createRawDateString",value:function(t,e){var i=t.year;return i+="-"+("0"+t.month.toString()).slice(-2),"day"===t.unit?i+="day"===t.unit?"-"+("0"+e).slice(-2):"-01":i+="-"+("0"+(t.day?t.day:"1")).slice(-2),"hour"===t.unit?i+="hour"===t.unit?"T"+("0"+e).slice(-2):"T00":i+="T"+("0"+(t.hour?t.hour:"0")).slice(-2),i+="minute"===t.unit?":"+("0"+e).slice(-2)+":00.000Z":":00:00.000Z"}},{key:"formatDates",value:function(t){var e=this,i=this.w;return t.map(function(t){var s=t.value.toString(),a=new m(e.ctx),n=e.createRawDateString(t,s),r=new Date(Date.parse(n));if(void 0===i.config.xaxis.labels.format){var o="dd MMM",l=i.config.xaxis.labels.datetimeFormatter;"year"===t.unit&&(o=l.year),"month"===t.unit&&(o=l.month),"day"===t.unit&&(o=l.day),"hour"===t.unit&&(o=l.hour),"minute"===t.unit&&(o=l.minute),s=a.formatDate(r,o,!0,!1)}else s=a.formatDate(r,i.config.xaxis.labels.format);return{dateString:n,position:t.position,value:s,unit:t.unit,year:t.year,month:t.month}})}},{key:"removeOverlappingTS",value:function(t){var e=this,i=new f(this.ctx),s=0,a=t.map(function(a,n){if(n>0&&e.w.config.xaxis.labels.hideOverlappingLabels){var r=i.getTextRects(t[s].value).width,o=t[s].position;return a.position>o+r+10?(s=n,a):null}return a});return a=a.filter(function(t){return null!==t})}}]),t}(),U=function(){function t(i,s){e(this,t),this.ctx=s,this.w=s.w,this.el=i,this.coreUtils=new y(this.ctx),this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[]}return s(t,[{key:"setupElements",value:function(){var t=this.w.globals,e=this.w.config,i=e.chart.type;t.axisCharts=["line","area","bar","rangeBar","candlestick","radar","scatter","bubble","heatmap"].indexOf(i)>-1,t.xyCharts=["line","area","bar","rangeBar","candlestick","scatter","bubble"].indexOf(i)>-1,t.isBarHorizontal=("bar"===e.chart.type||"rangeBar"===e.chart.type)&&e.plotOptions.bar.horizontal,t.chartClass=".apexcharts"+t.cuid,t.dom.baseEl=this.el,t.dom.elWrap=document.createElement("div"),f.setAttrs(t.dom.elWrap,{id:t.chartClass.substring(1),class:"apexcharts-canvas "+t.chartClass.substring(1)}),this.el.appendChild(t.dom.elWrap),t.dom.Paper=new window.SVG.Doc(t.dom.elWrap),t.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(e.chart.offsetX,", ").concat(e.chart.offsetY,")")}),t.dom.Paper.node.style.background=e.chart.background,this.setSVGDimensions(),t.dom.elGraphical=t.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),t.dom.elDefs=t.dom.Paper.defs(),t.dom.elLegendWrap=document.createElement("div"),t.dom.elLegendWrap.classList.add("apexcharts-legend"),t.dom.elWrap.appendChild(t.dom.elLegendWrap),t.dom.Paper.add(t.dom.elGraphical),t.dom.elGraphical.add(t.dom.elDefs)}},{key:"plotChartType",value:function(t,e){var i=this.w,s=i.config,a=i.globals,n={series:[],i:[]},r={series:[],i:[]},o={series:[],i:[]},l={series:[],i:[]},h={series:[],i:[]};a.series.map(function(e,s){void 0!==t[s].type?("column"===t[s].type||"bar"===t[s].type?(i.config.plotOptions.bar.horizontal=!1,l.series.push(e),l.i.push(s)):"area"===t[s].type?(r.series.push(e),r.i.push(s)):"line"===t[s].type?(n.series.push(e),n.i.push(s)):"scatter"===t[s].type?(o.series.push(e),o.i.push(s)):"bubble"===t[s].type||("candlestick"===t[s].type?(h.series.push(e),h.i.push(s)):console.warn("You have specified an unrecognized chart type. Available types for this propery are line/area/column/bar/scatter/bubble")),a.comboCharts=!0):(n.series.push(e),n.i.push(s))});var c=new D(this.ctx,e),d=new E(this.ctx,e),u=new I(this.ctx),g=new F(this.ctx),f=new R(this.ctx,e),p=new Y(this.ctx),x=[];if(a.comboCharts){if(r.series.length>0&&x.push(c.draw(r.series,"area",r.i)),l.series.length>0)if(i.config.chart.stacked){var b=new M(this.ctx,e);x.push(b.draw(l.series,l.i))}else{var m=new P(this.ctx,e);x.push(m.draw(l.series,l.i))}if(n.series.length>0&&x.push(c.draw(n.series,"line",n.i)),h.series.length>0&&x.push(d.draw(h.series,h.i)),o.series.length>0){var v=new D(this.ctx,e,!0);x.push(v.draw(o.series,"scatter",o.i))}}else switch(s.chart.type){case"line":x=c.draw(a.series,"line");break;case"area":x=c.draw(a.series,"area");break;case"bar":if(s.chart.stacked)x=new M(this.ctx,e).draw(a.series);else x=new P(this.ctx,e).draw(a.series);break;case"candlestick":x=new E(this.ctx,e).draw(a.series);break;case"rangeBar":x=f.draw(a.series);break;case"heatmap":x=new X(this.ctx,e).draw(a.series);break;case"pie":case"donut":x=u.draw(a.series);break;case"radialBar":x=g.draw(a.series);break;case"radar":x=p.draw(a.series);break;default:x=c.draw(a.series)}return x}},{key:"setSVGDimensions",value:function(){var t=this.w.globals,e=this.w.config;t.svgWidth=e.chart.width,t.svgHeight=e.chart.height;var i=d.getDimensions(this.el),s=e.chart.width.toString().split(/[0-9]+/g).pop();if("%"===s?d.isNumber(i[0])&&(0===i[0].width&&(i=d.getDimensions(this.el.parentNode)),t.svgWidth=i[0]*parseInt(e.chart.width)/100):"px"!==s&&""!==s||(t.svgWidth=parseInt(e.chart.width)),"auto"!==t.svgHeight&&""!==t.svgHeight)if("%"===e.chart.height.toString().split(/[0-9]+/g).pop()){var a=d.getDimensions(this.el.parentNode);t.svgHeight=a[1]*parseInt(e.chart.height)/100}else t.svgHeight=parseInt(e.chart.height);else t.axisCharts?t.svgHeight=t.svgWidth/1.61:t.svgHeight=t.svgWidth;f.setAttrs(t.dom.Paper.node,{width:t.svgWidth,height:t.svgHeight});var n=e.chart.sparkline.enabled?0:t.axisCharts?e.chart.parentHeightOffset:0;t.dom.Paper.node.parentNode.parentNode.style.minHeight=t.svgHeight+n+"px",t.dom.elWrap.style.width=t.svgWidth+"px",t.dom.elWrap.style.height=t.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var t=this.w.globals,e=t.translateY,i={transform:"translate("+t.translateX+", "+e+")"};f.setAttrs(t.dom.elGraphical.node,i)}},{key:"coreCalculations",value:function(){new V(this.ctx).init()}},{key:"resetGlobals",value:function(){var t=this,e=this.w.globals;e.series=[],e.seriesCandleO=[],e.seriesCandleH=[],e.seriesCandleL=[],e.seriesCandleC=[],e.seriesRangeStart=[],e.seriesRangeEnd=[],e.seriesPercent=[],e.seriesX=[],e.seriesZ=[],e.seriesNames=[],e.seriesTotals=[],e.stackedSeriesTotals=[],e.labels=[],e.timelineLabels=[],e.noLabelsProvided=!1,e.timescaleTicks=[],e.resizeTimer=null,e.selectionResizeTimer=null,e.seriesXvalues=t.w.config.series.map(function(t){return[]}),e.seriesYvalues=t.w.config.series.map(function(t){return[]}),e.delayedElements=[],e.pointsArray=[],e.dataLabelsRects=[],e.isXNumeric=!1,e.isDataXYZ=!1,e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE,e.minYArr=[],e.maxYArr=[],e.maxX=-Number.MAX_VALUE,e.minX=Number.MAX_VALUE,e.initialmaxX=-Number.MAX_VALUE,e.initialminX=Number.MAX_VALUE,e.maxDate=0,e.minDate=Number.MAX_VALUE,e.minZ=Number.MAX_VALUE,e.maxZ=-Number.MAX_VALUE,e.minXDiff=Number.MAX_VALUE,e.yAxisScale=[],e.xAxisScale=null,e.xAxisTicksPositions=[],e.yLabelsCoords=[],e.yTitleCoords=[],e.xRange=0,e.yRange=[],e.zRange=0,e.dataPoints=0}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.config.chart.stacked=!1,this.w.globals.isMultipleYAxis=!0,!0}},{key:"excludeCollapsedSeriesInYAxis",value:function(){var t=this,e=this.w;e.globals.ignoreYAxisIndexes=e.globals.collapsedSeries.map(function(e,i){if(t.w.globals.isMultipleYAxis)return e.index})}},{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var t=this.w.config.series.slice(),e=new G(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:"isFormat2DArray",value:function(){var t=this.w.config.series.slice(),e=new G(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(t,e){for(var i=this.w.config,s=this.w.globals,a=0;a<t[e].data.length;a++)if(void 0!==t[e].data[a][1]&&(Array.isArray(t[e].data[a][1])&&4===t[e].data[a][1].length?this.twoDSeries.push(d.parseNumber(t[e].data[a][1][3])):this.twoDSeries.push(d.parseNumber(t[e].data[a][1])),s.dataFormatXNumeric=!0),"datetime"===i.xaxis.type){var n=new Date(t[e].data[a][0]);n=new Date(n).getTime(),this.twoDSeriesX.push(n)}else this.twoDSeriesX.push(t[e].data[a][0]);for(var r=0;r<t[e].data.length;r++)void 0!==t[e].data[r][2]&&(this.threeDSeries.push(t[e].data[r][2]),s.isDataXYZ=!0)}},{key:"handleFormatXY",value:function(t,e){var i=this.w.config,s=this.w.globals,a=new m(this.ctx),n=e;s.collapsedSeriesIndices.indexOf(e)>-1&&(n=this.activeSeriesIndex);for(var r=0;r<t[e].data.length;r++)void 0!==t[e].data[r].y&&(Array.isArray(t[e].data[r].y)?this.twoDSeries.push(d.parseNumber(t[e].data[r].y[t[e].data[r].y.length-1])):this.twoDSeries.push(d.parseNumber(t[e].data[r].y)));for(var o=0;o<t[n].data.length;o++){var l="string"==typeof t[n].data[o].x,h=!!a.isValidDate(t[n].data[o].x.toString());l||h?l?"datetime"!==i.xaxis.type||s.isRangeData?(this.fallbackToCategory=!0,this.twoDSeriesX.push(t[n].data[o].x)):this.twoDSeriesX.push(a.parseDate(t[n].data[o].x)):"datetime"===i.xaxis.type?this.twoDSeriesX.push(a.parseDate(t[n].data[o].x.toString())):(s.dataFormatXNumeric=!0,s.isXNumeric=!0,this.twoDSeriesX.push(parseFloat(t[n].data[o].x))):(s.isXNumeric=!0,s.dataFormatXNumeric=!0,this.twoDSeriesX.push(t[n].data[o].x))}if(t[e].data[0]&&void 0!==t[e].data[0].z){for(var c=0;c<t[e].data.length;c++)this.threeDSeries.push(t[e].data[c].z);s.isDataXYZ=!0}}},{key:"handleRangeData",value:function(t,e){var i=this.w.globals,s={};return this.isFormat2DArray()?s=this.handleRangeDataFormat("array",t,e):this.isFormatXY()&&(s=this.handleRangeDataFormat("xy",t,e)),i.seriesRangeStart.push(s.start),i.seriesRangeEnd.push(s.end),s}},{key:"handleCandleStickData",value:function(t,e){var i=this.w.globals,s={};return this.isFormat2DArray()?s=this.handleCandleStickDataFormat("array",t,e):this.isFormatXY()&&(s=this.handleCandleStickDataFormat("xy",t,e)),i.seriesCandleO.push(s.o),i.seriesCandleH.push(s.h),i.seriesCandleL.push(s.l),i.seriesCandleC.push(s.c),s}},{key:"handleRangeDataFormat",value:function(t,e,i){var s=[],a=[],n="Please provide [Start, End] values in valid format. Read more https://apexcharts.com/docs/series/#rangecharts",r=new G(this.ctx).getActiveConfigSeriesIndex();if("array"===t){if(2!==e[r].data[0][1].length)throw new Error(n);for(var o=0;o<e[i].data.length;o++)s.push(e[i].data[o][1][0]),a.push(e[i].data[o][1][1])}else if("xy"===t){if(2!==e[r].data[0].y.length)throw new Error(n);for(var l=0;l<e[i].data.length;l++)s.push(e[i].data[l].y[0]),a.push(e[i].data[l].y[1])}return{start:s,end:a}}},{key:"handleCandleStickDataFormat",value:function(t,e,i){var s=[],a=[],n=[],r=[],o="Please provide [Open, High, Low and Close] values in valid format. Read more https://apexcharts.com/docs/series/#candlestick";if("array"===t){if(4!==e[i].data[0][1].length)throw new Error(o);for(var l=0;l<e[i].data.length;l++)s.push(e[i].data[l][1][0]),a.push(e[i].data[l][1][1]),n.push(e[i].data[l][1][2]),r.push(e[i].data[l][1][3])}else if("xy"===t){if(4!==e[i].data[0].y.length)throw new Error(o);for(var h=0;h<e[i].data.length;h++)s.push(e[i].data[h].y[0]),a.push(e[i].data[h].y[1]),n.push(e[i].data[h].y[2]),r.push(e[i].data[h].y[3])}return{o:s,h:a,l:n,c:r}}},{key:"parseDataAxisCharts",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.ctx,i=this.w.config,s=this.w.globals,a=new m(e),n=0;n<t.length;n++){if(this.twoDSeries=[],this.twoDSeriesX=[],this.threeDSeries=[],void 0===t[n].data)return void console.error("It is a possibility that you may have not included 'data' property in series.");if("rangeBar"!==i.chart.type&&"rangeArea"!==i.chart.type&&"rangeBar"!==t[n].type&&"rangeArea"!==t[n].type||(s.isRangeData=!0,this.handleRangeData(t,n)),this.isMultiFormat())this.isFormat2DArray()?this.handleFormat2DArray(t,n):this.isFormatXY()&&this.handleFormatXY(t,n),"candlestick"!==i.chart.type&&"candlestick"!==t[n].type||this.handleCandleStickData(t,n),s.series.push(this.twoDSeries),s.labels.push(this.twoDSeriesX),s.seriesX.push(this.twoDSeriesX),this.fallbackToCategory||(s.isXNumeric=!0);else{if("datetime"===i.xaxis.type){s.isXNumeric=!0;for(var r=i.labels.length>0?i.labels.slice():i.xaxis.categories.slice(),o=0;o<r.length;o++)if("string"==typeof r[o]){if(!a.isValidDate(r[o]))throw new Error("You have provided invalid Date format. Please provide a valid JavaScript Date");this.twoDSeriesX.push(a.parseDate(r[o]))}s.seriesX.push(this.twoDSeriesX)}else if("numeric"===i.xaxis.type){s.isXNumeric=!0;var l=i.labels.length>0?i.labels.slice():i.xaxis.categories.slice();l.length>0&&(this.twoDSeriesX=l,s.seriesX.push(this.twoDSeriesX))}s.labels.push(this.twoDSeriesX);var h=t[n].data.map(function(t){return d.parseNumber(t)});s.series.push(h)}s.seriesZ.push(this.threeDSeries),void 0!==t[n].name?s.seriesNames.push(t[n].name):s.seriesNames.push("series-"+parseInt(n+1))}return this.w}},{key:"parseDataNonAxisCharts",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var s=0;s<e.series.length;s++)void 0===e.seriesNames[s]&&e.seriesNames.push("series-"+(s+1));return this.w}},{key:"handleExternalLabelsData",value:function(t){var e=this.w.config,i=this.w.globals;if(e.xaxis.categories.length>0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory)i.labels=i.labels[0];else{var s=[];if(i.axisCharts){for(var a=0;a<i.series[i.maxValsInArrayIndex].length;a++)s.push(a+1);for(var n=0;n<t.length;n++)i.seriesX.push(s);i.isXNumeric=!0}if(0===s.length){s=[0,10];for(var r=0;r<t.length;r++)i.seriesX.push(s)}i.labels=s,i.noLabelsProvided=!0}}},{key:"parseData",value:function(t){var e=this.w,i=e.config,s=e.globals;if(this.excludeCollapsedSeriesInYAxis(),this.fallbackToCategory=!1,this.resetGlobals(),this.isMultipleY(),s.axisCharts?this.parseDataAxisCharts(t):this.parseDataNonAxisCharts(t),this.coreUtils.getLargestSeries(),"bar"===i.chart.type&&i.chart.stacked){var a=new G(this.ctx);s.series=a.setNullSeriesToZeroValues(s.series)}this.coreUtils.getSeriesTotals(),s.axisCharts&&this.coreUtils.getStackedSeriesTotals(),this.coreUtils.getPercentSeries(),s.dataFormatXNumeric||s.isXNumeric&&("numeric"!==i.xaxis.type||0!==i.labels.length||0!==i.xaxis.categories.length)||this.handleExternalLabelsData(t)}},{key:"xySettings",value:function(){var t=null,e=this.w;if(e.globals.axisCharts){if("back"===e.config.xaxis.crosshairs.position)new T(this.ctx).drawXCrosshairs();if("back"===e.config.yaxis[0].crosshairs.position)new T(this.ctx).drawYCrosshairs();if(t=this.coreUtils.getCalculatedRatios(),"datetime"===e.config.xaxis.type&&void 0===e.config.xaxis.labels.formatter){var i,s=new j(this.ctx);isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?(i=s.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX),s.recalcDimensionsBasedOnFormat(i,!1)):e.globals.isBarHorizontal&&(i=s.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY),s.recalcDimensionsBasedOnFormat(i,!0))}}return t}},{key:"drawAxis",value:function(t,e){var i,s,a=this.w.globals,n=this.w.config,r=new H(this.ctx),o=new W(this.ctx);a.axisCharts&&"radar"!==t&&(a.isBarHorizontal?(s=o.drawYaxisInversed(0),i=r.drawXaxisInversed(0),a.dom.elGraphical.add(i),a.dom.elGraphical.add(s)):(i=r.drawXaxis(),a.dom.elGraphical.add(i),n.yaxis.map(function(t,e){-1===a.ignoreYAxisIndexes.indexOf(e)&&(s=o.drawYaxis(e),a.dom.Paper.add(s))})));n.yaxis.map(function(t,e){-1===a.ignoreYAxisIndexes.indexOf(e)&&o.yAxisTitleRotate(e,t.opposite)})}},{key:"setupBrushHandler",value:function(){var t=this,e=this.w;e.config.chart.brush.enabled&&("function"!=typeof e.config.chart.events.selection&&(e.config.chart.brush.targets||[e.config.chart.brush.target]).forEach(function(i){var s=ApexCharts.getChartByID(i);s.w.globals.brushSource=t.ctx;var a=function(){t.ctx._updateOptions({chart:{selection:{xaxis:{min:s.w.globals.minX,max:s.w.globals.maxX}}}},!1,!1)};"function"!=typeof s.w.config.chart.events.zoomed&&(s.w.config.chart.events.zoomed=function(){a()}),"function"!=typeof s.w.config.chart.events.scrolled&&(s.w.config.chart.events.scrolled=function(){a()}),e.config.chart.events.selection=function(t,i){var a=d.clone(e.config.yaxis);e.config.chart.brush.autoScaleYaxis&&(a=new B(s).autoScaleY(s,i));s._updateOptions({xaxis:{min:i.xaxis.min,max:i.xaxis.max},yaxis:a},!1,!1,!1)}}))}}]),t}();var q=setTimeout;function Z(){}function $(t){if(!(this instanceof $))throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],it(t,this)}function J(t,e){for(;3===t._state;)t=t._value;0!==t._state?(t._handled=!0,$._immediateFn(function(){var i=1===t._state?e.onFulfilled:e.onRejected;if(null!==i){var s;try{s=i(t._value)}catch(t){return void K(e.promise,t)}Q(e.promise,s)}else(1===t._state?Q:K)(e.promise,t._value)})):t._deferreds.push(e)}function Q(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var i=e.then;if(e instanceof $)return t._state=3,t._value=e,void tt(t);if("function"==typeof i)return void it((s=i,a=e,function(){s.apply(a,arguments)}),t)}t._state=1,t._value=e,tt(t)}catch(e){K(t,e)}var s,a}function K(t,e){t._state=2,t._value=e,tt(t)}function tt(t){2===t._state&&0===t._deferreds.length&&$._immediateFn(function(){t._handled||$._unhandledRejectionFn(t._value)});for(var e=0,i=t._deferreds.length;e<i;e++)J(t,t._deferreds[e]);t._deferreds=null}function et(t,e,i){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=i}function it(t,e){var i=!1;try{t(function(t){i||(i=!0,Q(e,t))},function(t){i||(i=!0,K(e,t))})}catch(t){if(i)return;i=!0,K(e,t)}}$.prototype.catch=function(t){return this.then(null,t)},$.prototype.then=function(t,e){var i=new this.constructor(Z);return J(this,new et(t,e,i)),i},$.prototype.finally=function(t){var e=this.constructor;return this.then(function(i){return e.resolve(t()).then(function(){return i})},function(i){return e.resolve(t()).then(function(){return e.reject(i)})})},$.all=function(t){return new $(function(e,i){if(!t||void 0===t.length)throw new TypeError("Promise.all accepts an array");var s=Array.prototype.slice.call(t);if(0===s.length)return e([]);var a=s.length;function n(t,r){try{if(r&&("object"==typeof r||"function"==typeof r)){var o=r.then;if("function"==typeof o)return void o.call(r,function(e){n(t,e)},i)}s[t]=r,0==--a&&e(s)}catch(t){i(t)}}for(var r=0;r<s.length;r++)n(r,s[r])})},$.resolve=function(t){return t&&"object"==typeof t&&t.constructor===$?t:new $(function(e){e(t)})},$.reject=function(t){return new $(function(e,i){i(t)})},$.race=function(t){return new $(function(e,i){for(var s=0,a=t.length;s<a;s++)t[s].then(e,i)})},$._immediateFn="function"==typeof setImmediate&&function(t){setImmediate(t)}||function(t){q(t,0)},$._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)};var st,at,nt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"getSvgString",value:function(){return this.w.globals.dom.Paper.svg()}},{key:"cleanup",value:function(){var t=this.w,e=t.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs"),i=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs");e&&e.setAttribute("x",-500),i&&(i.setAttribute("y1",-100),i.setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var t=this.getSvgString(),e=new Blob([t],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(e)}},{key:"dataURI",value:function(){var t=this;return new $(function(e){var i=t.w;t.cleanup();var s=document.createElement("canvas");s.width=i.globals.svgWidth,s.height=i.globals.svgHeight;var a="transparent"===i.config.chart.background?"#fff":i.config.chart.background,n=s.getContext("2d");n.fillStyle=a,n.fillRect(0,0,s.width,s.height);var r=window.URL||window.webkitURL||window,o=new Image;o.crossOrigin="anonymous";var l=t.getSvgString(),h="data:image/svg+xml,"+encodeURIComponent(l);o.onload=function(){n.drawImage(o,0,0),r.revokeObjectURL(h);var t=s.toDataURL("image/png");e(t)},o.src=h})}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),".svg")}},{key:"exportToPng",value:function(){var t=this;this.dataURI().then(function(e){t.triggerDownload(e,".png")})}},{key:"triggerDownload",value:function(t,e){var i=document.createElement("a");i.href=t,i.download=this.w.globals.chartID+e,document.body.appendChild(i),i.click(),document.body.removeChild(i)}}]),t}(),rt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w;var s=this.w;this.anim=new g(this.ctx),this.xaxisLabels=s.globals.labels.slice(),this.animX=s.config.grid.xaxis.lines.animate&&s.config.chart.animations.enabled,this.animY=s.config.grid.yaxis.lines.animate&&s.config.chart.animations.enabled,s.globals.timelineLabels.length>0&&(this.xaxisLabels=s.globals.timelineLabels.slice())}return s(t,[{key:"drawGridArea",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new f(this.ctx);null===t&&(t=i.group({class:"apexcharts-grid"}));var s=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,"transparent"),a=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,"transparent");return t.add(a),t.add(s),t}},{key:"drawGrid",value:function(){var t=this.w,e=new H(this.ctx),i=new W(this.ctx),s=this.w.globals,a=null;if(s.axisCharts){if(t.config.grid.show)a=this.renderGrid(),s.dom.elGraphical.add(a.el),this.drawGridArea(a.el);else{var n=this.drawGridArea();s.dom.elGraphical.add(n)}null!==a&&e.xAxisLabelCorrections(a.xAxisTickWidth),i.setYAxisTextAlignments()}}},{key:"createGridMask",value:function(){var t=this.w,e=t.globals,i=new f(this.ctx),s=Array.isArray(t.config.stroke.width)?0:t.config.stroke.width;if(Array.isArray(t.config.stroke.width)){var a=0;t.config.stroke.width.forEach(function(t){a=Math.max(a,t)}),s=a}e.dom.elGridRectMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(e.cuid)),e.dom.elGridRectMarkerMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(e.cuid)),e.dom.elGridRect=i.drawRect(-s/2,-s/2,e.gridWidth+s,e.gridHeight+s,0,"#fff"),new y(this).getLargestMarkerSize();var n=t.globals.markers.largestSize+1;e.dom.elGridRectMarker=i.drawRect(-n,-n,e.gridWidth+2*n,e.gridHeight+2*n,0,"#fff"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var r=e.dom.baseEl.querySelector("defs");r.appendChild(e.dom.elGridRectMask),r.appendChild(e.dom.elGridRectMarkerMask)}},{key:"renderGrid",value:function(){var t=this.w,e=new f(this.ctx),i=t.config.grid.strokeDashArray,s=e.group({class:"apexcharts-grid"}),a=e.group({class:"apexcharts-gridlines-horizontal"}),n=e.group({class:"apexcharts-gridlines-vertical"});s.add(a),s.add(n);for(var r,o=8,l=0;l<t.globals.series.length&&(void 0!==t.globals.yAxisScale[l]&&(o=t.globals.yAxisScale[l].result.length-1),!(o>2));l++);if(t.globals.isBarHorizontal){if(r=o,t.config.grid.xaxis.lines.show||t.config.xaxis.axisTicks.show)for(var h,c=t.globals.padHorizontal,d=t.globals.gridHeight,u=0;u<r+1&&(h=c=c+t.globals.gridWidth/r+.3,u!==r-1);u++){if(t.config.grid.xaxis.lines.show){var g=e.drawLine(c,0,h,d,t.config.grid.borderColor,i);g.node.classList.add("apexcharts-gridline"),n.add(g),this.animX&&this.animateLine(g,{x1:0,x2:0},{x1:c,x2:h})}new H(this.ctx).drawXaxisTicks(c,s)}if(t.config.grid.yaxis.lines.show)for(var p=0,x=0,b=t.globals.gridWidth,m=0;m<t.globals.dataPoints+1;m++){var v=e.drawLine(0,p,b,x,t.config.grid.borderColor,i);a.add(v),v.node.classList.add("apexcharts-gridline"),this.animY&&this.animateLine(v,{y1:p+20,y2:x+20},{y1:p,y2:x}),x=p+=t.globals.gridHeight/t.globals.dataPoints}}else{if(r=this.xaxisLabels.length,t.config.grid.xaxis.lines.show||t.config.xaxis.axisTicks.show){var y,w=t.globals.padHorizontal,k=t.globals.gridHeight;if(t.globals.timelineLabels.length>0)for(var A=0;A<r;A++){if(w=this.xaxisLabels[A].position,y=this.xaxisLabels[A].position,t.config.grid.xaxis.lines.show&&w>0&&w<t.globals.gridWidth){var S=e.drawLine(w,0,y,k,t.config.grid.borderColor,i);S.node.classList.add("apexcharts-gridline"),n.add(S),this.animX&&this.animateLine(S,{x1:0,x2:0},{x1:w,x2:y})}var C=new H(this.ctx);A===r-1&&t.globals.skipLastTimelinelabel||C.drawXaxisTicks(w,s)}else for(var L=r,z=0;z<L;z++){var P=L;if(t.globals.isXNumeric&&"bar"!==t.config.chart.type&&(P-=1),y=w+=t.globals.gridWidth/P,z===P-1)break;if(t.config.grid.xaxis.lines.show){var M=e.drawLine(w,0,y,k,t.config.grid.borderColor,i);M.node.classList.add("apexcharts-gridline"),n.add(M),this.animX&&this.animateLine(M,{x1:0,x2:0},{x1:w,x2:y})}new H(this.ctx).drawXaxisTicks(w,s)}}if(t.config.grid.yaxis.lines.show)for(var E=0,T=0,X=t.globals.gridWidth,I=0;I<o+1;I++){var Y=e.drawLine(0,E,X,T,t.config.grid.borderColor,i);a.add(Y),Y.node.classList.add("apexcharts-gridline"),this.animY&&this.animateLine(Y,{y1:E+20,y2:T+20},{y1:E,y2:T}),T=E+=t.globals.gridHeight/o}}return this.drawGridBands(s,r,o),{el:s,xAxisTickWidth:t.globals.gridWidth/r}}},{key:"drawGridBands",value:function(t,e,i){var s=this.w,a=new f(this.ctx);if(void 0!==s.config.grid.row.colors&&s.config.grid.row.colors.length>0)for(var n=0,r=s.globals.gridHeight/i,o=s.globals.gridWidth,l=0,h=0;l<i;l++,h++){h>=s.config.grid.row.colors.length&&(h=0);var c=s.config.grid.row.colors[h],d=a.drawRect(0,n,o,r,0,c,s.config.grid.row.opacity);t.add(d),d.node.classList.add("apexcharts-gridRow"),n+=s.globals.gridHeight/i}if(void 0!==s.config.grid.column.colors&&s.config.grid.column.colors.length>0)for(var u=s.globals.padHorizontal,g=s.globals.padHorizontal+s.globals.gridWidth/e,p=s.globals.gridHeight,x=0,b=0;x<e;x++,b++){b>=s.config.grid.column.colors.length&&(b=0);var m=s.config.grid.column.colors[b],v=a.drawRect(u,0,g,p,0,m,s.config.grid.column.opacity);v.node.classList.add("apexcharts-gridColumn"),t.add(v),u+=s.globals.gridWidth/e}}},{key:"animateLine",value:function(t,e,i){var s=this.w,a=s.config.chart.animations;if(a&&!s.globals.resized&&!s.globals.dataChanged){var n=a.speed;this.anim.animateLine(t,e,i,n)}}}]),t}(),ot=function(){function t(i,s){e(this,t),this.ctx=i,this.w=i.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this)}return s(t,[{key:"init",value:function(){var t=this.w,e=t.globals,i=t.config;if((i.legend.showForSingleSeries&&1===e.series.length||e.series.length>1||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),d.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.getLegendStyles()):this.appendToForeignObject(),"bottom"===i.legend.position||"top"===i.legend.position?this.legendAlignHorizontal():"right"!==i.legend.position&&"left"!==i.legend.position||this.legendAlignVertical()}}},{key:"appendToForeignObject",value:function(){var t=this.w.globals,e=document.createElementNS(t.SVGNS,"foreignObject");e.setAttribute("x",0),e.setAttribute("y",0),e.setAttribute("width",t.svgWidth),e.setAttribute("height",t.svgHeight),t.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),e.appendChild(t.dom.elLegendWrap),e.appendChild(this.getLegendStyles()),t.dom.Paper.node.insertBefore(e,t.dom.elGraphical.node)}},{key:"drawLegends",value:function(){var t=this.w,e=t.config.legend.fontFamily,i=t.globals.seriesNames,s=t.globals.colors.slice();if("heatmap"===t.config.chart.type){var a=t.config.plotOptions.heatmap.colorScale.ranges;i=a.map(function(t){return t.name?t.name:t.from+" - "+t.to}),s=a.map(function(t){return t.color})}for(var n=t.globals.legendFormatter,r=0;r<=i.length-1;r++){var o=n(i[r],{seriesIndex:r,w:t}),l=!1,h=!1;if(t.globals.collapsedSeries.length>0)for(var c=0;c<t.globals.collapsedSeries.length;c++)t.globals.collapsedSeries[c].index===r&&(l=!0);if(t.globals.ancillaryCollapsedSeriesIndices.length>0)for(var d=0;d<t.globals.ancillaryCollapsedSeriesIndices.length;d++)t.globals.ancillaryCollapsedSeriesIndices[d]===r&&(h=!0);var u=document.createElement("span");u.classList.add("apexcharts-legend-marker");var g=t.config.legend.markers.offsetX,p=t.config.legend.markers.offsetY,x=t.config.legend.markers.height,b=t.config.legend.markers.width,m=t.config.legend.markers.strokeWidth,v=t.config.legend.markers.strokeColor,w=t.config.legend.markers.radius,k=u.style;k.background=s[r],k.color=s[r],k.height=Array.isArray(x)?parseFloat(x[r])+"px":parseFloat(x)+"px",k.width=Array.isArray(b)?parseFloat(b[r])+"px":parseFloat(b)+"px",k.left=Array.isArray(g)?g[r]:g,k.top=Array.isArray(p)?p[r]:p,k.borderWidth=Array.isArray(m)?m[r]:m,k.borderColor=Array.isArray(v)?v[r]:v,k.borderRadius=Array.isArray(w)?parseFloat(w[r])+"px":parseFloat(w)+"px",t.config.legend.markers.customHTML&&(Array.isArray(t.config.legend.markers.customHTML)?u.innerHTML=t.config.legend.markers.customHTML[r]():u.innerHTML=t.config.legend.markers.customHTML()),f.setAttrs(u,{rel:r+1,"data:collapsed":l||h}),(l||h)&&u.classList.add("inactive-legend");var A=document.createElement("div"),S=document.createElement("span");S.classList.add("apexcharts-legend-text"),S.innerHTML=o;var C=t.config.legend.labels.useSeriesColors?t.globals.colors[r]:t.config.legend.labels.colors;C||(C=t.config.chart.foreColor),S.style.color=C,S.style.fontSize=parseFloat(t.config.legend.fontSize)+"px",S.style.fontFamily=e||t.config.chart.fontFamily,f.setAttrs(S,{rel:r+1,"data:collapsed":l||h}),A.appendChild(u),A.appendChild(S);var L=new y(this.ctx);if(!t.config.legend.showForZeroSeries)0===L.getSeriesTotalByIndex(r)&&L.seriesHaveSameValues(r)&&!L.isSeriesNull(r)&&-1===t.globals.collapsedSeriesIndices.indexOf(r)&&-1===t.globals.ancillaryCollapsedSeriesIndices.indexOf(r)&&A.classList.add("apexcharts-hidden-zero-series");t.config.legend.showForNullSeries||L.isSeriesNull(r)&&-1===t.globals.collapsedSeriesIndices.indexOf(r)&&-1===t.globals.ancillaryCollapsedSeriesIndices.indexOf(r)&&A.classList.add("apexcharts-hidden-null-series"),t.globals.dom.elLegendWrap.appendChild(A),t.globals.dom.elLegendWrap.classList.add(t.config.legend.horizontalAlign),t.globals.dom.elLegendWrap.classList.add("position-"+t.config.legend.position),A.classList.add("apexcharts-legend-series"),A.style.margin="".concat(t.config.legend.itemMargin.horizontal,"px ").concat(t.config.legend.itemMargin.vertical,"px"),t.globals.dom.elLegendWrap.style.width=t.config.legend.width?t.config.legend.width+"px":"",t.globals.dom.elLegendWrap.style.height=t.config.legend.height?t.config.legend.height+"px":"",f.setAttrs(A,{rel:r+1,"data:collapsed":l||h}),(l||h)&&A.classList.add("inactive-legend"),t.config.legend.onItemClick.toggleDataSeries||A.classList.add("no-click")}"heatmap"!==t.config.chart.type&&t.config.legend.onItemClick.toggleDataSeries&&t.globals.dom.elWrap.addEventListener("click",this.onLegendClick,!0),t.config.legend.onItemHover.highlightDataSeries&&(t.globals.dom.elWrap.addEventListener("mousemove",this.onLegendHovered,!0),t.globals.dom.elWrap.addEventListener("mouseout",this.onLegendHovered,!0))}},{key:"getLegendBBox",value:function(){var t=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:"setLegendWrapXY",value:function(t,e){var i=this.w,s=i.globals.dom.baseEl.querySelector(".apexcharts-legend"),a=s.getBoundingClientRect(),n=0,r=0;if("bottom"===i.config.legend.position)r+=i.globals.svgHeight-a.height/2;else if("top"===i.config.legend.position){var o=new _(this.ctx),l=o.getTitleSubtitleCoords("title").height,h=o.getTitleSubtitleCoords("subtitle").height;r=r+(l>0?l-10:0)+(h>0?h-10:0)}s.style.position="absolute",n=n+t+i.config.legend.offsetX,r=r+e+i.config.legend.offsetY,s.style.left=n+"px",s.style.top=r+"px","bottom"===i.config.legend.position?(s.style.top="auto",s.style.bottom=10+i.config.legend.offsetY+"px"):"right"===i.config.legend.position&&(s.style.left="auto",s.style.right=25+i.config.legend.offsetX+"px"),s.style.width&&(s.style.width=parseInt(i.config.legend.width)+"px"),s.style.height&&(s.style.height=parseInt(i.config.legend.height)+"px")}},{key:"legendAlignHorizontal",value:function(){var t=this.w;t.globals.dom.baseEl.querySelector(".apexcharts-legend").style.right=0;var e=this.getLegendBBox(),i=new _(this.ctx),s=i.getTitleSubtitleCoords("title"),a=i.getTitleSubtitleCoords("subtitle"),n=0;"bottom"===t.config.legend.position?n=-e.clwh/1.8:"top"===t.config.legend.position&&(n=s.height+a.height+t.config.title.margin+t.config.subtitle.margin-15),this.setLegendWrapXY(20,n)}},{key:"legendAlignVertical",value:function(){var t=this.w,e=this.getLegendBBox(),i=0;"left"===t.config.legend.position&&(i=20),"right"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(t){var e=this.w,i=t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker");if("heatmap"!==e.config.chart.type)!t.target.classList.contains("inactive-legend")&&i&&new G(this.ctx).toggleSeriesOnHover(t,t.target);else if(i){var s=parseInt(t.target.getAttribute("rel"))-1;this.ctx.fireEvent("legendHover",[this.ctx,s,this.w]),new G(this.ctx).highlightRangeInSeries(t,t.target)}}},{key:"onLegendClick",value:function(t){if(t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker")){var e=parseInt(t.target.getAttribute("rel"))-1,i="true"===t.target.getAttribute("data:collapsed"),s=this.w.config.chart.events.legendClick;"function"==typeof s&&s(this.ctx,e,this.w),this.ctx.fireEvent("legendClick",[this.ctx,e,this.w]);var a=this.w.config.legend.markers.onClick;"function"==typeof a&&t.target.classList.contains("apexcharts-legend-marker")&&(a(this.ctx,e,this.w),this.ctx.fireEvent("legendMarkerClick",[this.ctx,e,this.w])),this.toggleDataSeries(e,i)}}},{key:"getLegendStyles",value:function(){var t=document.createElement("style");t.setAttribute("type","text/css");var e=document.createTextNode("\n    \n      .apexcharts-legend {\n        display: flex;\n        overflow: auto;\n        padding: 0 10px;\n      }\n\n      .apexcharts-legend.position-bottom, .apexcharts-legend.position-top {\n        flex-wrap: wrap\n      }\n      .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n        flex-direction: column;\n        bottom: 0;\n      }\n\n      .apexcharts-legend.position-bottom.left, .apexcharts-legend.position-top.left, .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n        justify-content: flex-start;\n      }\n\n      .apexcharts-legend.position-bottom.center, .apexcharts-legend.position-top.center {\n        justify-content: center;  \n      }\n\n      .apexcharts-legend.position-bottom.right, .apexcharts-legend.position-top.right {\n        justify-content: flex-end;\n      }\n\n      .apexcharts-legend-series {\n        cursor: pointer;\n        line-height: normal;\n      }\n\n      .apexcharts-legend.position-bottom .apexcharts-legend-series, .apexcharts-legend.position-top .apexcharts-legend-series{\n        display: flex;\n        align-items: center;\n      }\n\n      .apexcharts-legend-text {\n        position: relative;\n        font-size: 14px;\n      }\n\n      .apexcharts-legend-text *, .apexcharts-legend-marker * {\n        pointer-events: none;\n      }\n\n      .apexcharts-legend-marker {\n        position: relative;\n        display: inline-block;\n        cursor: pointer;\n        margin-right: 3px;\n      }\n      \n      .apexcharts-legend.right .apexcharts-legend-series, .apexcharts-legend.left .apexcharts-legend-series{\n        display: inline-block;\n      }\n\n      .apexcharts-legend-series.no-click {\n        cursor: auto;\n      }\n\n      .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\n        display: none !important;\n      }\n\n      .inactive-legend {\n        opacity: 0.45;\n      }");return t.appendChild(e),t}},{key:"resetToggleDataSeries",value:function(){var t=this.w,e=null,i=[];if(t.globals.axisCharts?(e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:realIndex]"),(e=d.listToArray(e)).forEach(function(t){i.push(parseInt(t.getAttribute("data:realIndex")))})):(e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series[rel]"),(e=d.listToArray(e)).forEach(function(t){i.push(parseInt(t.getAttribute("rel"))-1)})),i.sort(),t.globals.collapsedSeries.length>0){for(var s=t.globals.risingSeries.slice(),a=t.config.series.slice(),n=0;n<t.globals.collapsedSeries.length;n++){var r=i.indexOf(t.globals.collapsedSeries[n].index);-1!==r&&(t.globals.axisCharts?a[r].data=t.globals.collapsedSeries.slice()[n].data.slice():a[r]=t.globals.collapsedSeries.slice()[n].data,s.push(r))}t.globals.collapsedSeries=[],t.globals.ancillaryCollapsedSeries=[],t.globals.collapsedSeriesIndices=[],t.globals.ancillaryCollapsedSeriesIndices=[],t.globals.risingSeries=s,t.config.series=a,this.ctx._updateSeries(t.config.series,t.config.chart.animations.dynamicAnimation.enabled)}}},{key:"toggleDataSeries",value:function(t,e){var i=this.w;if(i.globals.axisCharts||"radialBar"===i.config.chart.type){i.globals.resized=!0;var s=null,a=null;if(i.globals.risingSeries=[],i.globals.axisCharts?(s=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t,"']")),a=parseInt(s.getAttribute("data:realIndex"))):(s=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t+1,"']")),a=parseInt(s.getAttribute("rel"))-1),e)this.riseCollapsedSeries(i.globals.collapsedSeries,i.globals.collapsedSeriesIndices,a),this.riseCollapsedSeries(i.globals.ancillaryCollapsedSeries,i.globals.ancillaryCollapsedSeriesIndices,a);else{if(i.globals.axisCharts){var n=!1;if(i.config.yaxis[a]&&i.config.yaxis[a].show&&i.config.yaxis[a].showAlways&&(n=!0,i.globals.ancillaryCollapsedSeriesIndices.indexOf(a)<0&&(i.globals.ancillaryCollapsedSeries.push({index:a,data:i.config.series[a].data.slice(),type:s.parentNode.className.baseVal.split("-")[1]}),i.globals.ancillaryCollapsedSeriesIndices.push(a))),!n){i.globals.collapsedSeries.push({index:a,data:i.config.series[a].data.slice(),type:s.parentNode.className.baseVal.split("-")[1]}),i.globals.collapsedSeriesIndices.push(a);var r=i.globals.risingSeries.indexOf(a);i.globals.risingSeries.splice(r,1)}i.config.series[a].data=[]}else i.globals.collapsedSeries.push({index:a,data:i.config.series[a]}),i.globals.collapsedSeriesIndices.push(a),i.config.series[a]=0;for(var o=s.childNodes,l=0;l<o.length;l++)o[l].classList.contains("apexcharts-series-markers-wrap")&&(o[l].classList.contains("apexcharts-hide")?o[l].classList.remove("apexcharts-hide"):o[l].classList.add("apexcharts-hide"));i.globals.allSeriesCollapsed=i.globals.collapsedSeries.length===i.globals.series.length,this.ctx._updateSeries(i.config.series,i.config.chart.animations.dynamicAnimation.enabled)}}else{var h=i.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(t+1,"'] path")),c=i.config.chart.type;if("pie"===c||"donut"===c){var d=i.config.plotOptions.pie.donut.labels,u=new f(this.ctx),g=new I(this.ctx);u.pathMouseDown(h.members[0],null),g.printDataLabelsInner(h.members[0].node,d)}h.fire("click")}}},{key:"riseCollapsedSeries",value:function(t,e,i){var s=this.w;if(t.length>0)for(var a=0;a<t.length;a++)t[a].index===i&&(s.globals.axisCharts?(s.config.series[i].data=t[a].data.slice(),t.splice(a,1),e.splice(a,1),s.globals.risingSeries.push(i)):(s.config.series[i]=t[a].data,t.splice(a,1),e.splice(a,1),s.globals.risingSeries.push(i)),this.ctx._updateSeries(s.config.series,s.config.chart.animations.dynamicAnimation.enabled))}}]),t}(),lt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"checkResponsiveConfig",value:function(t){var e=this,i=this.w,s=i.config;if(0!==s.responsive.length){var a=s.responsive.slice();a.sort(function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0}).reverse();var n=new w({}),r=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=a[0].breakpoint,r=window.innerWidth>0?window.innerWidth:screen.width;if(r>s){var o=y.extendArrayProps(n,i.globals.initialConfig);t=d.extend(o,t),t=d.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var l=0;l<a.length;l++)r<a[l].breakpoint&&(t=y.extendArrayProps(n,a[l].options),t=d.extend(i.config,t),e.overrideResponsiveOptions(t))};if(t){var o=y.extendArrayProps(n,t);o=d.extend(i.config,o),r(o=d.extend(o,t))}else r({})}}},{key:"overrideResponsiveOptions",value:function(t){var e=new w(t).init();this.w.config=e}}]),t}(),ht=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.colors=[]}return s(t,[{key:"init",value:function(){this.setDefaultColors()}},{key:"setDefaultColors",value:function(){var t=this.w,e=new d;if(t.globals.dom.elWrap.classList.add(t.config.theme.mode),void 0===t.config.colors?t.globals.colors=this.predefined():t.globals.colors=t.config.colors,t.config.theme.monochrome.enabled){var i=[],s=t.globals.series.length;t.config.plotOptions.bar.distributed&&"bar"===t.config.chart.type&&(s=t.globals.series[0].length*t.globals.series.length);for(var a=t.config.theme.monochrome.color,n=1/(s/t.config.theme.monochrome.shadeIntensity),r=t.config.theme.monochrome.shadeTo,o=0,l=0;l<s;l++){var h=void 0;"dark"===r?(h=e.shadeColor(-1*o,a),o+=n):(h=e.shadeColor(o,a),o+=n),i.push(h)}t.globals.colors=i.slice()}var c=t.globals.colors.slice();this.pushExtraColors(t.globals.colors),void 0===t.config.stroke.colors?t.globals.stroke.colors=c:t.globals.stroke.colors=t.config.stroke.colors,this.pushExtraColors(t.globals.stroke.colors),void 0===t.config.fill.colors?t.globals.fill.colors=c:t.globals.fill.colors=t.config.fill.colors,this.pushExtraColors(t.globals.fill.colors),void 0===t.config.dataLabels.style.colors?t.globals.dataLabels.style.colors=c:t.globals.dataLabels.style.colors=t.config.dataLabels.style.colors,this.pushExtraColors(t.globals.dataLabels.style.colors,50),void 0===t.config.plotOptions.radar.polygons.fill.colors?t.globals.radarPolygons.fill.colors=["dark"===t.config.theme.mode?"#202D48":"#fff"]:t.globals.radarPolygons.fill.colors=t.config.plotOptions.radar.polygons.fill.colors,this.pushExtraColors(t.globals.radarPolygons.fill.colors,20),void 0===t.config.markers.colors?t.globals.markers.colors=c:t.globals.markers.colors=t.config.markers.colors,this.pushExtraColors(t.globals.markers.colors)}},{key:"pushExtraColors",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=this.w,a=e||s.globals.series.length;if(null===i&&(i="bar"===s.config.chart.type&&s.config.plotOptions.bar.distributed||"heatmap"===s.config.chart.type&&s.config.plotOptions.heatmap.colorScale.inverse),i&&(a=s.globals.series[0].length*s.globals.series.length),t.length<a)for(var n=a-t.length,r=0;r<n;r++)t.push(t[r])}},{key:"updateThemeOptions",value:function(t){t.chart=t.chart||{},t.tooltip=t.tooltip||{};var e=t.theme.mode||"light",i=t.theme.palette?t.theme.palette:"dark"===e?"palette4":"palette1",s=t.chart.foreColor?t.chart.foreColor:"dark"===e?"#f6f7f8":"#373d3f";return t.tooltip.theme=e,t.chart.foreColor=s,t.theme.palette=i,t}},{key:"predefined",value:function(){switch(this.w.config.theme.palette){case"palette1":this.colors=["#008FFB","#00E396","#FEB019","#FF4560","#775DD0"];break;case"palette2":this.colors=["#3f51b5","#03a9f4","#4caf50","#f9ce1d","#FF9800"];break;case"palette3":this.colors=["#33b2df","#546E7A","#d4526e","#13d8aa","#A5978B"];break;case"palette4":this.colors=["#4ecdc4","#c7f464","#81D4FA","#fd6a6a","#546E7A"];break;case"palette5":this.colors=["#2b908f","#f9a3a4","#90ee7e","#fa4443","#69d2e7"];break;case"palette6":this.colors=["#449DD1","#F86624","#EA3546","#662E9B","#C5D86D"];break;case"palette7":this.colors=["#D7263D","#1B998B","#2E294E","#F46036","#E2C044"];break;case"palette8":this.colors=["#662E9B","#F86624","#F9C80E","#EA3546","#43BCCD"];break;case"palette9":this.colors=["#5C4742","#A5978B","#8D5B4C","#5A2A27","#C4BBAF"];break;case"palette10":this.colors=["#A300D6","#7D02EB","#5653FE","#2983FF","#00B1F2"];break;default:this.colors=["#008FFB","#00E396","#FEB019","#FF4560","#775DD0"]}return this.colors}}]),t}(),ct=function(){function t(i){e(this,t),this.w=i.w,this.ttCtx=i,this.ctx=i.ctx}return s(t,[{key:"getNearestValues",value:function(t){var e=t.hoverArea,i=t.elGrid,s=t.clientX,a=t.clientY,n=t.hasBars,r=this.w,o=r.globals.gridWidth,l=o/(r.globals.dataPoints-1),h=i.getBoundingClientRect();(n&&r.globals.comboCharts||n)&&(l=o/r.globals.dataPoints);var c=s-h.left,d=a-h.top;c<0||d<0||c>r.globals.gridWidth||d>r.globals.gridHeight?(e.classList.remove("hovering-zoom"),e.classList.remove("hovering-pan")):r.globals.zoomEnabled?(e.classList.remove("hovering-pan"),e.classList.add("hovering-zoom")):r.globals.panEnabled&&(e.classList.remove("hovering-zoom"),e.classList.add("hovering-pan"));var u=Math.round(c/l);n&&(u=Math.ceil(c/l),u-=1);for(var g,f=null,p=null,x=[],b=0;b<r.globals.seriesXvalues.length;b++)x.push([r.globals.seriesXvalues[b][0]-1e-6].concat(r.globals.seriesXvalues[b]));return x=x.map(function(t){return t.filter(function(t){return t})}),g=r.globals.seriesYvalues.map(function(t){return t.filter(function(t){return t})}),r.globals.isXNumeric&&(f=(p=this.closestInMultiArray(c,d,x,g)).index,u=p.j,null!==f&&(x=r.globals.seriesXvalues[f],u=(p=this.closestInArray(c,x)).index)),(!u||u<1)&&(u=0),{capturedSeries:f,j:u,hoverX:c,hoverY:d}}},{key:"closestInMultiArray",value:function(t,e,i,s){var a=this.w,n=0,r=null,o=-1;a.globals.series.length>1?n=this.getFirstActiveXArray(i):r=0;var l=s[n][0],h=i[n][0],c=Math.abs(t-h),d=Math.abs(e-l),u=d+c;return s.map(function(a,n){a.map(function(a,l){var h=Math.abs(e-s[n][l]),g=Math.abs(t-i[n][l]),f=g+h;f<u&&(u=f,c=g,d=h,r=n,o=l)})}),{index:r,j:o}}},{key:"getFirstActiveXArray",value:function(t){for(var e=0,i=new y(this.ctx),s=t.map(function(t,e){return t.length>0?e:-1}),a=0;a<s.length;a++){var n=i.getSeriesTotalByIndex(a);if(-1!==s[a]&&0!==n&&!i.seriesHaveSameValues(a)){e=s[a];break}}return e}},{key:"closestInArray",value:function(t,e){for(var i=e[0],s=null,a=Math.abs(t-i),n=0;n<e.length;n++){var r=Math.abs(t-e[n]);r<a&&(a=r,i=e[n],s=n)}return{index:s}}},{key:"isXoverlap",value:function(t){var e=[],i=this.w.globals.seriesX.filter(function(t){return void 0!==t[0]});if(i.length>0)for(var s=0;s<i.length-1;s++)void 0!==i[s][t]&&void 0!==i[s+1][t]&&i[s][t]!==i[s+1][t]&&e.push("unEqual");return 0===e.length}},{key:"isinitialSeriesSameLen",value:function(){for(var t=!0,e=this.w.globals.initialSeries,i=0;i<e.length-1;i++)if(e[i].data.length!==e[i+1].data.length){t=!1;break}return t}},{key:"getBarsHeight",value:function(t){return c(t).reduce(function(t,e){return t+e.getBBox().height},0)}},{key:"toggleAllTooltipSeriesGroups",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var s=i.allTooltipSeriesGroups,a=0;a<s.length;a++)"enable"===t?(s[a].classList.add("active"),s[a].style.display=e.config.tooltip.items.display):(s[a].classList.remove("active"),s[a].style.display="none")}}]),t}(),dt=function(){function t(i){e(this,t),this.w=i.w,this.ctx=i.ctx,this.ttCtx=i,this.tooltipUtil=new ct(i)}return s(t,[{key:"drawSeriesTexts",value:function(t){var e=t.shared,i=void 0===e||e,s=t.ttItems,a=t.i,n=void 0===a?0:a,r=t.j,o=void 0===r?null:r;void 0!==this.w.config.tooltip.custom?this.handleCustomTooltip({i:n,j:o}):this.toggleActiveInactiveSeries(i);var l=this.getValuesToPrint({i:n,j:o});this.printLabels({i:n,j:o,values:l,ttItems:s,shared:i});var h=this.ttCtx.getElTooltip();this.ttCtx.tooltipRect.ttWidth=h.getBoundingClientRect().width,this.ttCtx.tooltipRect.ttHeight=h.getBoundingClientRect().height}},{key:"printLabels",value:function(t){var e,i=t.i,s=t.j,a=t.values,n=t.ttItems,r=t.shared,o=this.w,l=a.xVal,h=a.zVal,c=a.xAxisTTVal,d="",u=o.globals.colors[i];null!==s&&o.config.plotOptions.bar.distributed&&(u=o.globals.colors[s]);for(var g=0,f=o.globals.series.length-1;g<o.globals.series.length;g++,f--){var p=this.getFormatters(i);if(d=this.getSeriesName({fn:p.yLbTitleFormatter,index:i,seriesIndex:i,j:s}),r){var x=o.config.tooltip.inverseOrder?f:g;p=this.getFormatters(x),d=this.getSeriesName({fn:p.yLbTitleFormatter,index:x,seriesIndex:i,j:s}),u=o.globals.colors[x],e=p.yLbFormatter(o.globals.series[x][s],{series:o.globals.series,seriesIndex:x,dataPointIndex:s,w:o}),(this.ttCtx.hasBars()&&o.config.chart.stacked&&0===o.globals.series[x][s]||void 0===o.globals.series[x][s])&&(e=void 0)}else e=p.yLbFormatter(o.globals.series[i][s],{series:o.globals.series,seriesIndex:i,dataPointIndex:s,w:o});null===s&&(e=p.yLbFormatter(o.globals.series[i],o)),this.DOMHandling({t:g,ttItems:n,values:{val:e,xVal:l,xAxisTTVal:c,zVal:h},seriesName:d,shared:r,pColor:u})}}},{key:"getFormatters",value:function(t){var e,i=this.w,s=i.globals.yLabelFormatters[t];return void 0!==i.globals.ttVal?Array.isArray(i.globals.ttVal)?(s=i.globals.ttVal[t]&&i.globals.ttVal[t].formatter,e=i.globals.ttVal[t]&&i.globals.ttVal[t].title&&i.globals.ttVal[t].title.formatter):(s=i.globals.ttVal.formatter,"function"==typeof i.globals.ttVal.title.formatter&&(e=i.globals.ttVal.title.formatter)):e=i.config.tooltip.y.title.formatter,"function"!=typeof s&&(s=i.globals.yLabelFormatters[0]?i.globals.yLabelFormatters[0]:function(t){return t}),"function"!=typeof e&&(e=function(t){return t}),{yLbFormatter:s,yLbTitleFormatter:e}}},{key:"getSeriesName",value:function(t){var e=t.fn,i=t.index,s=t.seriesIndex,a=t.j,n=this.w;return e(String(n.globals.seriesNames[i]),{series:n.globals.series,seriesIndex:s,dataPointIndex:a,w:n})}},{key:"DOMHandling",value:function(t){var e=t.t,i=t.ttItems,s=t.values,a=t.seriesName,n=t.shared,r=t.pColor,o=this.w,l=this.ttCtx,h=s.val,c=s.xVal,d=s.xAxisTTVal,u=s.zVal,g=null;g=i[e].children,o.config.tooltip.fillSeriesColor&&(i[e].style.backgroundColor=r,g[0].style.display="none"),l.showTooltipTitle&&(null===l.tooltipTitle&&(l.tooltipTitle=o.globals.dom.baseEl.querySelector(".apexcharts-tooltip-title")),l.tooltipTitle.innerHTML=c),l.blxaxisTooltip&&(l.xaxisTooltipText.innerHTML=""!==d?d:c);var f=i[e].querySelector(".apexcharts-tooltip-text-label");f&&(f.innerHTML=a?a+": ":"");var p=i[e].querySelector(".apexcharts-tooltip-text-value");(p&&(p.innerHTML=h),g[0]&&g[0].classList.contains("apexcharts-tooltip-marker")&&(g[0].style.backgroundColor=r),o.config.tooltip.marker.show||(g[0].style.display="none"),null!==u)&&(i[e].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=o.config.tooltip.z.title,i[e].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=u);n&&g[0]&&(null==h||o.globals.collapsedSeriesIndices.indexOf(e)>-1?g[0].parentNode.style.display="none":g[0].parentNode.style.display=o.config.tooltip.items.display)}},{key:"toggleActiveInactiveSeries",value:function(t){var e=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=e.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("active"),i.style.display=e.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(t){var e=t.i,i=t.j,s=this.w,a=this.ctx.series.filteredSeriesX(),n="",r=null,o=null,l={series:s.globals.series,seriesIndex:e,dataPointIndex:i,w:s},h=s.globals.ttZFormatter;null===i?o=s.globals.series[e]:s.globals.isXNumeric?(n=a[e][i],0===a[e].length&&(n=a[this.tooltipUtil.getFirstActiveXArray(a)][i])):n=void 0!==s.globals.labels[i]?s.globals.labels[i]:"";var c=n;s.globals.isXNumeric&&"datetime"===s.config.xaxis.type?n=new N(this.ctx).xLabelFormat(s.globals.ttKeyFormatter,c):n=s.globals.xLabelFormatter(c,l);return void 0!==s.config.tooltip.x.formatter&&(n=s.globals.ttKeyFormatter(c,l)),s.globals.seriesZ.length>0&&s.globals.seriesZ[0].length>0&&(r=h(s.globals.seriesZ[e][i],s)),{val:o,xVal:n,xAxisTTVal:"function"==typeof s.config.xaxis.tooltip.formatter?s.globals.xaxisTooltipFormatter(c,l):n,zVal:r}}},{key:"handleCustomTooltip",value:function(t){var e=t.i,i=t.j,s=this.w;this.ttCtx.getElTooltip().innerHTML=s.config.tooltip.custom({ctx:this.ctx,series:s.globals.series,seriesIndex:e,dataPointIndex:i,w:s})}}]),t}(),ut=function(){function t(i){e(this,t),this.ttCtx=i,this.ctx=i.ctx,this.w=i.w}return s(t,[{key:"moveXCrosshairs",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,s=this.w,a=i.getElXCrosshairs(),n=t-i.xcrosshairsWidth/2,r=s.globals.labels.slice().length;if(null!==e&&(n=s.globals.gridWidth/r*e),"tickWidth"===s.config.xaxis.crosshairs.width||"barWidth"===s.config.xaxis.crosshairs.width?n+i.xcrosshairsWidth>s.globals.gridWidth&&(n=s.globals.gridWidth-i.xcrosshairsWidth):null!==e&&(n+=s.globals.gridWidth/r/2),n<0&&(n=0),n>s.globals.gridWidth&&(n=s.globals.gridWidth),null!==a&&(a.setAttribute("x",n),a.setAttribute("x1",n),a.setAttribute("x2",n),a.setAttribute("y2",s.globals.gridHeight),a.classList.add("active")),i.blxaxisTooltip){var o=n;"tickWidth"!==s.config.xaxis.crosshairs.width&&"barWidth"!==s.config.xaxis.crosshairs.width||(o=n+i.xcrosshairsWidth/2),this.moveXAxisTooltip(o)}}},{key:"moveYCrosshairs",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&(f.setAttrs(e.ycrosshairs,{y1:t,y2:t}),f.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t}))}},{key:"moveXAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip){i.xaxisTooltip.classList.add("active");var s=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var a;a=new f(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=a.width+"px",i.xaxisTooltip.style.left=t+"px",i.xaxisTooltip.style.top=s+"px"}}}},{key:"moveYAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var s=parseInt(i.ycrosshairsHidden.getAttribute("y1")),a=e.globals.translateY+s,n=i.yaxisTTEls[t].getBoundingClientRect().height,r=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(r-=26),a-=n/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add("active"),i.yaxisTTEls[t].style.top=a+"px",i.yaxisTTEls[t].style.left=r+e.config.yaxis[t].tooltip.offsetX+"px"):i.yaxisTTEls[t].classList.remove("active")}},{key:"moveTooltip",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=this.w,a=this.ttCtx,n=a.getElTooltip(),r=a.tooltipRect,o=null!==i?parseInt(i):1,l=parseInt(t)+o+5,h=parseInt(e)+o/2;if(l>s.globals.gridWidth/2&&(l=l-r.ttWidth-o-15),l>s.globals.gridWidth-r.ttWidth-10&&(l=s.globals.gridWidth-r.ttWidth),l<-20&&(l=-20),s.config.tooltip.followCursor){var c=a.getElGrid().getBoundingClientRect();h=a.e.clientY+s.globals.translateY-c.top-r.ttHeight/2}var d=this.positionChecks(r,l,h);l=d.x,h=d.y,isNaN(l)||(l+=s.globals.translateX,n.style.left=l+"px",n.style.top=h+"px")}},{key:"positionChecks",value:function(t,e,i){var s=this.w;return t.ttHeight+i>s.globals.gridHeight&&(i=s.globals.gridHeight-t.ttHeight+s.globals.translateY),i<0&&(i=0),{x:e,y:i}}},{key:"moveMarkers",value:function(t,e){var i=this.w,s=this.ttCtx;if(i.globals.markers.size[t]>0)for(var a=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t,"'] .apexcharts-marker")),n=0;n<a.length;n++)parseInt(a[n].getAttribute("rel"))===e&&(s.marker.resetPointsSize(),s.marker.enlargeCurrentPoint(e,a[n]));else s.marker.resetPointsSize(),this.moveDynamicPointOnHover(e,t)}},{key:"moveDynamicPointOnHover",value:function(t,e){var i,s,a=this.w,n=this.ttCtx,r=a.globals.pointsArray,o=a.config.markers.hover.size;void 0===o&&(o=a.globals.markers.size[e]+a.config.markers.hover.sizeOffset),i=r[e][t][0],s=r[e][t][1]?r[e][t][1]:0;var l=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(e,"'] .apexcharts-series-markers circle"));l&&(l.setAttribute("r",o),l.setAttribute("cx",i),l.setAttribute("cy",s)),this.moveXCrosshairs(i),n.fixedTooltip||this.moveTooltip(i,s,o)}},{key:"moveDynamicPointsOnHover",value:function(t){var e,i=this.ttCtx,s=i.w,a=0,n=0,r=s.globals.pointsArray;e=new G(this.ctx).getActiveSeriesIndex();var o=s.config.markers.hover.size;void 0===o&&(o=s.globals.markers.size[e]+s.config.markers.hover.sizeOffset),r[e]&&(a=r[e][t][0],n=r[e][t][1]);var l=null,h=i.getAllMarkers();if(null!==(l=null!==h?h:s.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers circle")))for(var c=0;c<l.length;c++){var d=r[c];if(d&&d.length){var u=r[c][t][1];l[c].setAttribute("cx",a);var g=parseInt(l[c].parentNode.parentNode.parentNode.getAttribute("data:realIndex"));null!==u?(l[g]&&l[g].setAttribute("r",o),l[g]&&l[g].setAttribute("cy",u)):l[g]&&l[g].setAttribute("r",0)}}if(this.moveXCrosshairs(a),!i.fixedTooltip){var f=n||s.globals.gridHeight;this.moveTooltip(a,f,o)}}},{key:"moveStickyTooltipOverBars",value:function(t){var e,i=this.w,s=this.ttCtx,a=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='1'] path[j='".concat(t,"'], .apexcharts-candlestick-series .apexcharts-series[rel='1'] path[j='").concat(t,"'], .apexcharts-rangebar-series .apexcharts-series[rel='1'] path[j='").concat(t,"']")),n=a?parseFloat(a.getAttribute("cx")):0,r=a?parseFloat(a.getAttribute("barWidth")):0;i.globals.isXNumeric?n-=r/2:(n=s.xAxisTicksPositions[t-1]+s.dataPointsDividedWidth/2,isNaN(n)&&(n=s.xAxisTicksPositions[t]-s.dataPointsDividedWidth/2));var o=s.getElGrid().getBoundingClientRect();if(e=s.e.clientY-o.top-s.tooltipRect.ttHeight/2,this.moveXCrosshairs(n),!s.fixedTooltip){var l=e||i.globals.gridHeight;this.moveTooltip(n,l)}}}]),t}(),gt=function(){function t(i){e(this,t),this.w=i.w,this.ttCtx=i,this.ctx=i.ctx,this.tooltipPosition=new ut(i)}return s(t,[{key:"drawDynamicPoints",value:function(){for(var t=this.w,e=new f(this.ctx),i=new C(this.ctx),s=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series"),a=0;a<s.length;a++){var n=parseInt(s[a].getAttribute("data:realIndex")),r=t.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(n,"'] .apexcharts-series-markers-wrap"));if(null!==r){var o=void 0,l="apexcharts-marker w".concat((Math.random()+1).toString(36).substring(4));"line"!==t.config.chart.type&&"area"!==t.config.chart.type||t.globals.comboCharts||t.config.tooltip.intersect||(l+=" no-pointer-events");var h=i.getMarkerConfig(l,n);(o=e.drawMarker(0,0,h)).node.setAttribute("default-marker-size",0);var c=document.createElementNS(t.globals.SVGNS,"g");c.classList.add("apexcharts-series-markers"),c.appendChild(o.node),r.appendChild(c)}}}},{key:"enlargeCurrentPoint",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=this.w;"bubble"!==a.config.chart.type&&this.newPointSize(t,e);var n=e.getAttribute("cx"),r=e.getAttribute("cy");if(null!==i&&null!==s&&(n=i,r=s),this.tooltipPosition.moveXCrosshairs(n),!this.fixedTooltip){if("radar"===a.config.chart.type){var o=this.ttCtx.getElGrid().getBoundingClientRect();n=this.ttCtx.e.clientX-o.left}this.tooltipPosition.moveTooltip(n,r,a.config.markers.hover.size)}}},{key:"enlargePoints",value:function(t){for(var e=this.w,i=this.ttCtx,s=t,a=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),n=e.config.markers.hover.size,r=0;r<a.length;r++){var o=a[r].getAttribute("rel"),l=a[r].getAttribute("index");if(void 0===n&&(n=e.globals.markers.size[l]+e.config.markers.hover.sizeOffset),s===parseInt(o)){this.newPointSize(s,a[r]);var h=a[r].getAttribute("cx"),c=a[r].getAttribute("cy");this.tooltipPosition.moveXCrosshairs(h),i.fixedTooltip||this.tooltipPosition.moveTooltip(h,c,n)}else this.oldPointSize(a[r])}}},{key:"newPointSize",value:function(t,e){var i=this.w,s=i.config.markers.hover.size,a=null;a=0===t?e.parentNode.firstChild:e.parentNode.lastChild;var n=parseInt(a.getAttribute("index"));void 0===s&&(s=i.globals.markers.size[n]+i.config.markers.hover.sizeOffset),a.setAttribute("r",s)}},{key:"oldPointSize",value:function(t){var e=parseInt(t.getAttribute("default-marker-size"));t.setAttribute("r",e)}},{key:"resetPointsSize",value:function(){for(var t=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),e=0;e<t.length;e++){var i=parseInt(t[e].getAttribute("default-marker-size"));d.isNumber(i)?t[e].setAttribute("r",i):t[e].setAttribute("r",0)}}}]),t}(),ft=function(){function t(i){e(this,t),this.w=i.w,this.ttCtx=i}return s(t,[{key:"getAttr",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:"handleHeatTooltip",value:function(t){var e=t.e,i=t.opt,s=t.x,a=t.y,n=this.ttCtx,r=this.w;if(e.target.classList.contains("apexcharts-heatmap-rect")){var o=this.getAttr(e,"i"),l=this.getAttr(e,"j"),h=this.getAttr(e,"cx"),c=this.getAttr(e,"cy"),d=this.getAttr(e,"width"),u=this.getAttr(e,"height");if(n.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:o,j:l,shared:!1}),s=h+n.tooltipRect.ttWidth/2+d,a=c+n.tooltipRect.ttHeight/2-u/2,n.tooltipPosition.moveXCrosshairs(h+d/2),s>r.globals.gridWidth/2&&(s=h-n.tooltipRect.ttWidth/2+d),n.w.config.tooltip.followCursor){var g=n.getElGrid().getBoundingClientRect();a=n.e.clientY-g.top+r.globals.translateY/2-10}}return{x:s,y:a}}},{key:"handleMarkerTooltip",value:function(t){var e,i,s=t.e,a=t.opt,n=t.x,r=t.y,o=this.w,l=this.ttCtx;if(s.target.classList.contains("apexcharts-marker")){var h=parseInt(a.paths.getAttribute("cx")),c=parseInt(a.paths.getAttribute("cy")),u=parseFloat(a.paths.getAttribute("val"));if(i=parseInt(a.paths.getAttribute("rel")),e=parseInt(a.paths.parentNode.parentNode.parentNode.getAttribute("rel"))-1,l.intersect){var g=d.findAncestor(a.paths,"apexcharts-series");g&&(e=parseInt(g.getAttribute("data:realIndex")))}if(l.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:e,j:i,shared:!l.showOnIntersect&&o.config.tooltip.shared}),"mouseup"===s.type&&l.markerClick(s,e,i),n=h,r=c+o.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var f=l.getElGrid().getBoundingClientRect();r=l.e.clientY+o.globals.translateY-f.top}u<0&&(r=c),l.marker.enlargeCurrentPoint(i,a.paths,n,r)}return{x:n,y:r}}},{key:"handleBarTooltip",value:function(t){var e,i,s=t.e,a=t.opt,n=this.w,r=this.ttCtx,o=r.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:s,opt:a});e=d.i;var u=d.barHeight,g=d.j;if(n.globals.isBarHorizontal&&r.hasBars()||!n.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(n.config.stroke.width)?n.config.stroke.width[e]:n.config.stroke.width,l=h):n.globals.comboCharts||n.config.tooltip.shared||(l/=2),isNaN(c)&&(c=n.globals.svgHeight-r.tooltipRect.ttHeight),h+r.tooltipRect.ttWidth>n.globals.gridWidth?h-=r.tooltipRect.ttWidth:h<0&&(h+=r.tooltipRect.ttWidth),r.w.config.tooltip.followCursor){var f=r.getElGrid().getBoundingClientRect();c=r.e.clientY-f.top}if(null===r.tooltip&&(r.tooltip=n.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),n.config.tooltip.shared||(n.globals.comboChartsHasBars?r.tooltipPosition.moveXCrosshairs(l+i/2):r.tooltipPosition.moveXCrosshairs(l)),!r.fixedTooltip&&(!n.config.tooltip.shared||n.globals.isBarHorizontal&&r.hasBars())){x&&(h=n.globals.gridWidth-h),o.style.left=h+n.globals.translateX+"px";var p=parseInt(a.paths.parentNode.getAttribute("data:realIndex")),x=n.globals.isMultipleYAxis?n.config.yaxis[p]&&n.config.yaxis[p].reversed:n.config.yaxis[0].reversed;!x||n.globals.isBarHorizontal&&r.hasBars()||(c=c+u-2*(n.globals.series[e][g]<0?u:0)),r.tooltipRect.ttHeight+c>n.globals.gridHeight?(c=n.globals.gridHeight-r.tooltipRect.ttHeight+n.globals.translateY,o.style.top=c+"px"):o.style.top=c+n.globals.translateY-r.tooltipRect.ttHeight/2+"px"}}},{key:"getBarTooltipXY",value:function(t){var e=t.e,i=t.opt,s=this.w,a=null,n=this.ttCtx,r=0,o=0,l=0,h=0,c=0,d=e.target.classList;if(d.contains("apexcharts-bar-area")||d.contains("apexcharts-candlestick-area")||d.contains("apexcharts-rangebar-area")){var u=e.target,g=u.getBoundingClientRect(),f=i.elGrid.getBoundingClientRect(),p=g.height;c=g.height;var x=g.width,b=parseInt(u.getAttribute("cx")),m=parseInt(u.getAttribute("cy"));h=parseFloat(u.getAttribute("barWidth"));var v="touchmove"===e.type?e.touches[0].clientX:e.clientX;a=parseInt(u.getAttribute("j")),r=parseInt(u.parentNode.getAttribute("rel"))-1,s.globals.comboCharts&&(r=parseInt(u.parentNode.getAttribute("data:realIndex"))),n.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:r,j:a,shared:!n.showOnIntersect&&s.config.tooltip.shared}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(o=v-f.left+15,l=m-n.dataPointsDividedHeight+p/2-n.tooltipRect.ttHeight/2):(o=s.globals.isXNumeric?b-x/2:b-n.dataPointsDividedWidth+x/2,l=e.clientY-f.top-n.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((o=b)<n.xyRatios.baseLineInvertedY&&(o=b-n.tooltipRect.ttWidth),l=m-n.dataPointsDividedHeight+p/2-n.tooltipRect.ttHeight/2):(o=s.globals.isXNumeric?b-x/2:b-n.dataPointsDividedWidth+x/2,l=m)}return{x:o,y:l,barHeight:c,barWidth:h,i:r,j:a}}}]),t}(),pt=function(){function t(i){e(this,t),this.w=i.w,this.ttCtx=i}return s(t,[{key:"drawXaxisTooltip",value:function(){var t=this.w,e=this.ttCtx,i="bottom"===t.config.xaxis.position;e.xaxisOffY=i?t.globals.gridHeight+1:1;var s=i?"apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom":"apexcharts-xaxistooltip apexcharts-xaxistooltip-top",a=t.globals.dom.elWrap;e.blxaxisTooltip&&(null===t.globals.dom.baseEl.querySelector(".apexcharts-xaxistooltip")&&(e.xaxisTooltip=document.createElement("div"),e.xaxisTooltip.setAttribute("class",s+" "+t.config.tooltip.theme),a.appendChild(e.xaxisTooltip),e.xaxisTooltipText=document.createElement("div"),e.xaxisTooltipText.classList.add("apexcharts-xaxistooltip-text"),e.xaxisTooltipText.style.fontFamily=t.config.xaxis.tooltip.style.fontFamily||t.config.chart.fontFamily,e.xaxisTooltipText.style.fontSize=t.config.xaxis.tooltip.style.fontSize,e.xaxisTooltip.appendChild(e.xaxisTooltipText)))}},{key:"drawYaxisTooltip",value:function(){for(var t=this.w,e=this.ttCtx,i=0;i<t.config.yaxis.length;i++){var s=t.config.yaxis[i].opposite||t.config.yaxis[i].crosshairs.opposite;e.yaxisOffX=s?t.globals.gridWidth+1:1;var a="apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i,s?" apexcharts-yaxistooltip-right":" apexcharts-yaxistooltip-left"),n=t.globals.dom.elWrap;if(e.blyaxisTooltip)null===t.globals.dom.baseEl.querySelector(".apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i))&&(e.yaxisTooltip=document.createElement("div"),e.yaxisTooltip.setAttribute("class",a+" "+t.config.tooltip.theme),n.appendChild(e.yaxisTooltip),0===i&&(e.yaxisTooltipText=[]),e.yaxisTooltipText.push(document.createElement("div")),e.yaxisTooltipText[i].classList.add("apexcharts-yaxistooltip-text"),e.yaxisTooltip.appendChild(e.yaxisTooltipText[i]))}}},{key:"setXCrosshairWidth",value:function(){var t=this.w,e=this.ttCtx,i=e.getElXCrosshairs();if(e.xcrosshairsWidth=parseInt(t.config.xaxis.crosshairs.width),t.globals.comboCharts){var s=t.globals.dom.baseEl.querySelector(".apexcharts-bar-area");if(null!==s&&"barWidth"===t.config.xaxis.crosshairs.width){var a=parseFloat(s.getAttribute("barWidth"));e.xcrosshairsWidth=a}else if("tickWidth"===t.config.xaxis.crosshairs.width){var n=t.globals.labels.length;e.xcrosshairsWidth=t.globals.gridWidth/n}}else if("tickWidth"===t.config.xaxis.crosshairs.width){var r=t.globals.labels.length;e.xcrosshairsWidth=t.globals.gridWidth/r}else if("barWidth"===t.config.xaxis.crosshairs.width){var o=t.globals.dom.baseEl.querySelector(".apexcharts-bar-area");if(null!==o){var l=parseFloat(o.getAttribute("barWidth"));e.xcrosshairsWidth=l}else e.xcrosshairsWidth=1}t.globals.isBarHorizontal&&(e.xcrosshairsWidth=0),null!==i&&e.xcrosshairsWidth>0&&i.setAttribute("width",e.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(t,e,i){var s=this.ttCtx,a=this.w,n=a.globals.yLabelFormatters[t];if(s.blyaxisTooltip){var r=s.getElGrid().getBoundingClientRect(),o=(e-r.top)*i.yRatio[t],l=a.globals.maxYArr[t]-a.globals.minYArr[t],h=a.globals.minYArr[t]+(l-o);s.tooltipPosition.moveYCrosshairs(e-r.top),s.yaxisTooltipText[t].innerHTML=n(h),s.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),xt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w;var s=this.w;this.tConfig=s.config.tooltip,this.tooltipUtil=new ct(this),this.tooltipLabels=new dt(this),this.tooltipPosition=new ut(this),this.marker=new gt(this),this.intersect=new ft(this),this.axesTooltip=new pt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!s.globals.isBarHorizontal&&this.tConfig.shared}return s(t,[{key:"getElTooltip",value:function(t){return t||(t=this),t.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip")}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(t){var e=this.w;this.xyRatios=t,this.blxaxisTooltip=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.blyaxisTooltip=e.config.yaxis[0].tooltip.enabled&&e.globals.axisCharts,this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),i.classList.add(this.tConfig.theme),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var s=new H(this.ctx);this.xAxisTicksPositions=s.getXAxisTicksPositions()}if((e.globals.comboCharts&&!this.tConfig.shared||this.tConfig.intersect&&!this.tConfig.shared||("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&!this.tConfig.shared)&&(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var a=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(a=this.showOnIntersect?1:e.globals.series.length),this.ttItems=this.createTTElements(a),this.addSVGEvents()}}},{key:"createTTElements",value:function(t){for(var e=this.w,i=[],s=this.getElTooltip(),a=0;a<t;a++){var n=document.createElement("div");n.classList.add("apexcharts-tooltip-series-group"),this.tConfig.shared&&this.tConfig.enabledOnSeries&&Array.isArray(this.tConfig.enabledOnSeries)&&this.tConfig.enabledOnSeries.indexOf(a)<0&&n.classList.add("apexcharts-tooltip-series-group-hidden");var r=document.createElement("span");r.classList.add("apexcharts-tooltip-marker"),r.style.backgroundColor=e.globals.colors[a],n.appendChild(r);var o=document.createElement("div");o.classList.add("apexcharts-tooltip-text"),o.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,o.style.fontSize=this.tConfig.style.fontSize;var l=document.createElement("div");l.classList.add("apexcharts-tooltip-y-group");var h=document.createElement("span");h.classList.add("apexcharts-tooltip-text-label"),l.appendChild(h);var c=document.createElement("span");c.classList.add("apexcharts-tooltip-text-value"),l.appendChild(c);var d=document.createElement("div");d.classList.add("apexcharts-tooltip-z-group");var u=document.createElement("span");u.classList.add("apexcharts-tooltip-text-z-label"),d.appendChild(u);var g=document.createElement("span");g.classList.add("apexcharts-tooltip-text-z-value"),d.appendChild(g),o.appendChild(l),o.appendChild(d),n.appendChild(o),s.appendChild(n),i.push(n)}return i}},{key:"addSVGEvents",value:function(){var t=this.w,e=t.config.chart.type,i=this.getElTooltip(),s=!("bar"!==e&&"candlestick"!==e&&"rangeBar"!==e),a=t.globals.dom.Paper.node,n=this.getElGrid();n&&(this.seriesBound=n.getBoundingClientRect());var r,o=[],l=[],h={hoverArea:a,elGrid:n,tooltipEl:i,tooltipY:o,tooltipX:l,ttItems:this.ttItems};if(t.globals.axisCharts&&("area"===e||"line"===e||"scatter"===e||"bubble"===e?r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker"):s?r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-rangebar-area"):"heatmap"===e?r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-heatmap"):"radar"===e&&(r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-marker")),r&&r.length))for(var c=0;c<r.length;c++)o.push(r[c].getAttribute("cy")),l.push(r[c].getAttribute("cx"));if(t.globals.xyCharts&&!this.showOnIntersect||t.globals.comboCharts&&!this.showOnIntersect||s&&this.hasBars()&&this.tConfig.shared)this.addPathsEventListeners([a],h);else if(s&&!t.globals.comboCharts)this.addBarsEventListeners(h);else if("bubble"===e||"scatter"===e||"radar"===e||this.showOnIntersect&&("area"===e||"line"===e))this.addPointsEventsListeners(h);else if(!t.globals.axisCharts||"heatmap"===e){var d=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series");this.addPathsEventListeners(d,h)}if(this.showOnIntersect){var u=t.globals.dom.baseEl.querySelectorAll(".apexcharts-line-series .apexcharts-marker");u.length>0&&this.addPathsEventListeners(u,h);var g=t.globals.dom.baseEl.querySelectorAll(".apexcharts-area-series .apexcharts-marker");g.length>0&&this.addPathsEventListeners(g,h),this.hasBars()&&!this.tConfig.shared&&this.addBarsEventListeners(h)}}},{key:"drawFixedTooltipRect",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),s=i.width+10,a=i.height+10,n=this.tConfig.fixed.offsetX,r=this.tConfig.fixed.offsetY;return this.tConfig.fixed.position.toLowerCase().indexOf("right")>-1&&(n=n+t.globals.svgWidth-s+10),this.tConfig.fixed.position.toLowerCase().indexOf("bottom")>-1&&(r=r+t.globals.svgHeight-a-10),e.style.left=n+"px",e.style.top=r+"px",{x:n,y:r,ttWidth:s,ttHeight:a}}},{key:"addPointsEventsListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker");this.addPathsEventListeners(e,t)}},{key:"addBarsEventListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-rangebar-area");this.addPathsEventListeners(e,t)}},{key:"addPathsEventListeners",value:function(t,e){for(var i=this,s=this,a=function(a){var n={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};i.w.globals.tooltipOpts=n;["mousemove","mouseup","touchmove","mouseout","touchend"].map(function(e){return t[a].addEventListener(e,s.seriesHover.bind(s,n),{capture:!1,passive:!0})})},n=0;n<t.length;n++)a(n)}},{key:"seriesHover",value:function(t,e){var i=this,s=[],a=this.w;a.config.chart.group&&(s=this.ctx.getGroupedCharts()),a.globals.axisCharts&&(a.globals.minX===-1/0&&a.globals.maxX===1/0||0===a.globals.dataPoints)||(s.length?s.forEach(function(s){var a=i.getElTooltip(s),n={paths:t.paths,tooltipEl:a,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:s.w.globals.tooltip.ttItems};s.w.globals.minX===i.w.globals.minX&&s.w.globals.maxX===i.w.globals.maxX&&s.w.globals.tooltip.seriesHoverByContext({chartCtx:s,ttCtx:s.w.globals.tooltip,opt:n,e:e})}):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:"seriesHoverByContext",value:function(t){var e=t.chartCtx,i=t.ttCtx,s=t.opt,a=t.e,n=e.w,r=this.getElTooltip();(i.tooltipRect={x:0,y:0,ttWidth:r.getBoundingClientRect().width,ttHeight:r.getBoundingClientRect().height},i.e=a,!i.hasBars()||n.globals.comboCharts||i.isBarShared)||this.tConfig.onDatasetHover.highlightDataSeries&&new G(e).toggleSeriesOnHover(a,a.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),n.globals.axisCharts?i.axisChartsTooltips({e:a,opt:s,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:a,opt:s,tooltipRect:i.tooltipRect})}},{key:"axisChartsTooltips",value:function(t){var e,i,s,a=t.e,n=t.opt,r=this.w,o=null,l=n.elGrid.getBoundingClientRect(),h="touchmove"===a.type?a.touches[0].clientX:a.clientX,c="touchmove"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=c,this.clientX=h,c<l.top||c>l.top+l.height)this.handleMouseOut(n);else{if(Array.isArray(this.tConfig.enabledOnSeries)){var d=parseInt(n.paths.getAttribute("index"));if(this.tConfig.enabledOnSeries.indexOf(d)<0)return void this.handleMouseOut(n)}var u=this.getElTooltip(),g=this.getElXCrosshairs(),f=r.globals.xyCharts||"bar"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.hasBars;if(r.globals.isBarHorizontal&&this.hasBars()&&(f=!1),"mousemove"===a.type||"touchmove"===a.type||"mouseup"===a.type){if(null!==g&&g.classList.add("active"),null!==this.ycrosshairs&&this.blyaxisTooltip&&this.ycrosshairs.classList.add("active"),f&&!this.showOnIntersect){e=(o=this.tooltipUtil.getNearestValues({context:this,hoverArea:n.hoverArea,elGrid:n.elGrid,clientX:h,clientY:c,hasBars:this.hasBars})).j;var p=o.capturedSeries;if(o.hoverX<0||o.hoverX>r.globals.gridWidth)return void this.handleMouseOut(n);if(null!==p){if(null===r.globals.series[p][e])return void n.tooltipEl.classList.remove("active");void 0!==r.globals.series[p][e]?this.tConfig.shared&&this.tooltipUtil.isXoverlap(e)&&this.tooltipUtil.isinitialSeriesSameLen()?this.create(a,this,p,e,n.ttItems):this.create(a,this,p,e,n.ttItems,!1):this.tooltipUtil.isXoverlap(e)&&this.create(a,this,0,e,n.ttItems)}else this.tooltipUtil.isXoverlap(e)&&this.create(a,this,0,e,n.ttItems)}else if("heatmap"===r.config.chart.type){var x=this.intersect.handleHeatTooltip({e:a,opt:n,x:i,y:s});i=x.x,s=x.y,u.style.left=i+"px",u.style.top=s+"px"}else this.hasBars&&this.intersect.handleBarTooltip({e:a,opt:n}),this.hasMarkers&&this.intersect.handleMarkerTooltip({e:a,opt:n,x:i,y:s});if(this.blyaxisTooltip)for(var b=0;b<r.config.yaxis.length;b++)this.axesTooltip.drawYaxisTooltipText(b,c,this.xyRatios);n.tooltipEl.classList.add("active")}else"mouseout"!==a.type&&"touchend"!==a.type||this.handleMouseOut(n)}}},{key:"nonAxisChartsTooltips",value:function(t){var e=t.e,i=t.opt,s=t.tooltipRect,a=this.w,n=i.paths.getAttribute("rel"),r=this.getElTooltip(),o=a.globals.dom.elWrap.getBoundingClientRect();if("mousemove"===e.type||"touchmove"===e.type){r.classList.add("active"),this.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:parseInt(n)-1,shared:!1});var l=a.globals.clientX-o.left-s.ttWidth/2,h=a.globals.clientY-o.top-s.ttHeight-10;r.style.left=l+"px",r.style.top=h+"px"}else"mouseout"!==e.type&&"touchend"!==e.type||r.classList.remove("active")}},{key:"deactivateHoverFilter",value:function(){for(var t=this.w,e=new f(this.ctx),i=t.globals.dom.Paper.select(".apexcharts-bar-area"),s=0;s<i.length;s++)e.pathMouseLeave(i[s])}},{key:"handleMouseOut",value:function(t){var e=this.w,i=this.getElXCrosshairs();if(t.tooltipEl.classList.remove("active"),this.deactivateHoverFilter(),"bubble"!==e.config.chart.type&&this.marker.resetPointsSize(),null!==i&&i.classList.remove("active"),null!==this.ycrosshairs&&this.ycrosshairs.classList.remove("active"),this.blxaxisTooltip&&this.xaxisTooltip.classList.remove("active"),this.blyaxisTooltip){null===this.yaxisTTEls&&(this.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));for(var s=0;s<this.yaxisTTEls.length;s++)this.yaxisTTEls[s].classList.remove("active")}}},{key:"getElMarkers",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(" .apexcharts-series-markers")}},{key:"getAllMarkers",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker")}},{key:"hasMarkers",value:function(){return this.getElMarkers().length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series,  .apexcharts-candlestick-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"markerClick",value:function(t,e,i){var s=this.w;"function"==typeof s.config.chart.events.markerClick&&s.config.chart.events.markerClick(t,this.ctx,{seriesIndex:e,dataPointIndex:i,w:s}),this.ctx.fireEvent("markerClick",[t,this.ctx,{seriesIndex:e,dataPointIndex:i,w:s}])}},{key:"create",value:function(t,e,i,s,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,r=this.w,o=e;"mouseup"===t.type&&this.markerClick(t,i,s),null===n&&(n=this.tConfig.shared);var l=this.hasMarkers(),h=this.getElBars();if(n){if(o.tooltipLabels.drawSeriesTexts({ttItems:a,i:i,j:s,shared:!this.showOnIntersect&&this.tConfig.shared}),l&&(r.globals.markers.largestSize>0?o.marker.enlargePoints(s):o.tooltipPosition.moveDynamicPointsOnHover(s)),this.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(h),this.barSeriesHeight>0)){var c=new f(this.ctx),d=r.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(s,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(s);for(var u=0;u<d.length;u++)c.pathMouseEnter(d[u])}}else o.tooltipLabels.drawSeriesTexts({shared:!1,ttItems:a,i:i,j:s}),this.hasBars()&&o.tooltipPosition.moveStickyTooltipOverBars(s),l&&o.tooltipPosition.moveMarkers(i,s)}}]),t}(),bt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.ev=this.w.config.chart.events,this.localeValues=this.w.globals.locale.toolbar}return s(t,[{key:"createToolbar",value:function(){var t=this.w,e=document.createElement("div");if(e.setAttribute("class","apexcharts-toolbar"),t.globals.dom.elWrap.appendChild(e),this.elZoom=document.createElement("div"),this.elZoomIn=document.createElement("div"),this.elZoomOut=document.createElement("div"),this.elPan=document.createElement("div"),this.elSelection=document.createElement("div"),this.elZoomReset=document.createElement("div"),this.elMenuIcon=document.createElement("div"),this.elMenu=document.createElement("div"),this.elCustomIcons=[],this.t=t.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var i=0;i<this.t.customIcons.length;i++)this.elCustomIcons.push(document.createElement("div"));this.elMenuItems=[];var s=[];this.t.zoomin&&t.config.chart.zoom.enabled&&s.push({el:this.elZoomIn,icon:"string"==typeof this.t.zoomin?this.t.zoomin:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">\n    <path d="M0 0h24v24H0z" fill="none"/>\n    <path d="M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\n</svg>\n',title:this.localeValues.zoomIn,class:"apexcharts-zoom-in-icon"}),this.t.zoomout&&t.config.chart.zoom.enabled&&s.push({el:this.elZoomOut,icon:"string"==typeof this.t.zoomout?this.t.zoomout:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">\n    <path d="M0 0h24v24H0z" fill="none"/>\n    <path d="M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\n</svg>\n',title:this.localeValues.zoomOut,class:"apexcharts-zoom-out-icon"}),this.t.zoom&&t.config.chart.zoom.enabled&&s.push({el:this.elZoom,icon:"string"==typeof this.t.zoom?this.t.zoom:'<svg xmlns="http://www.w3.org/2000/svg" fill="#000000" height="24" viewBox="0 0 24 24" width="24">\n    <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>\n    <path d="M0 0h24v24H0V0z" fill="none"/>\n    <path d="M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z"/>\n</svg>',title:this.localeValues.selectionZoom,class:t.globals.isTouchDevice?"hidden":"apexcharts-zoom-icon"}),this.t.selection&&t.config.chart.selection.enabled&&s.push({el:this.elSelection,icon:"string"==typeof this.t.selection?this.t.selection:'<svg fill="#6E8192" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">\n    <path d="M0 0h24v24H0z" fill="none"/>\n    <path d="M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2z"/>\n</svg>',title:this.localeValues.selection,class:t.globals.isTouchDevice?"hidden":"apexcharts-selection-icon"}),this.t.pan&&t.config.chart.zoom.enabled&&s.push({el:this.elPan,icon:"string"==typeof this.t.pan?this.t.pan:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="#000000" height="24" viewBox="0 0 24 24" width="24">\n    <defs>\n        <path d="M0 0h24v24H0z" id="a"/>\n    </defs>\n    <clipPath id="b">\n        <use overflow="visible" xlink:href="#a"/>\n    </clipPath>\n    <path clip-path="url(#b)" d="M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z"/>\n</svg>',title:this.localeValues.pan,class:t.globals.isTouchDevice?"hidden":"apexcharts-pan-icon"}),this.t.reset&&t.config.chart.zoom.enabled&&s.push({el:this.elZoomReset,icon:"string"==typeof this.t.reset?this.t.reset:'<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">\n    <path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/>\n    <path d="M0 0h24v24H0z" fill="none"/>\n</svg>',title:this.localeValues.reset,class:"apexcharts-reset-zoom-icon"}),this.t.download&&s.push({el:this.elMenuIcon,icon:"string"==typeof this.t.download?this.t.download:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var a=0;a<this.elCustomIcons.length;a++)s.push({el:this.elCustomIcons[a],icon:this.t.customIcons[a].icon,title:this.t.customIcons[a].title,index:this.t.customIcons[a].index,class:"apexcharts-toolbar-custom-icon "+this.t.customIcons[a].class});s.forEach(function(t,e){t.index&&d.moveIndexInArray(s,e,t.index)});for(var n=0;n<s.length;n++)f.setAttrs(s[n].el,{class:s[n].class,title:s[n].title}),s[n].el.innerHTML=s[n].icon,e.appendChild(s[n].el);e.appendChild(this.elMenu),f.setAttrs(this.elMenu,{class:"apexcharts-menu"});for(var r=[{name:"exportSVG",title:this.localeValues.exportToSVG},{name:"exportPNG",title:this.localeValues.exportToPNG}],o=0;o<r.length;o++)this.elMenuItems.push(document.createElement("div")),this.elMenuItems[o].innerHTML=r[o].title,f.setAttrs(this.elMenuItems[o],{class:"apexcharts-menu-item ".concat(r[o].name),title:r[o].title}),this.elMenu.appendChild(this.elMenuItems[o]);t.globals.zoomEnabled?this.elZoom.classList.add("selected"):t.globals.panEnabled?this.elPan.classList.add("selected"):t.globals.selectionEnabled&&this.elSelection.classList.add("selected"),this.addToolbarEventListeners()}},{key:"addToolbarEventListeners",value:function(){var t=this;this.elZoomReset.addEventListener("click",this.handleZoomReset.bind(this)),this.elSelection.addEventListener("click",this.toggleSelection.bind(this)),this.elZoom.addEventListener("click",this.toggleZooming.bind(this)),this.elZoomIn.addEventListener("click",this.handleZoomIn.bind(this)),this.elZoomOut.addEventListener("click",this.handleZoomOut.bind(this)),this.elPan.addEventListener("click",this.togglePanning.bind(this)),this.elMenuIcon.addEventListener("click",this.toggleMenu.bind(this)),this.elMenuItems.forEach(function(e){e.classList.contains("exportSVG")?e.addEventListener("click",t.downloadSVG.bind(t)):e.classList.contains("exportPNG")&&e.addEventListener("click",t.downloadPNG.bind(t))});for(var e=0;e<this.t.customIcons.length;e++)this.elCustomIcons[e].addEventListener("click",this.t.customIcons[e].click)}},{key:"toggleSelection",value:function(){this.toggleOtherControls(),this.w.globals.selectionEnabled=!this.w.globals.selectionEnabled,this.elSelection.classList.contains("selected")?this.elSelection.classList.remove("selected"):this.elSelection.classList.add("selected")}},{key:"toggleZooming",value:function(){this.toggleOtherControls(),this.w.globals.zoomEnabled=!this.w.globals.zoomEnabled,this.elZoom.classList.contains("selected")?this.elZoom.classList.remove("selected"):this.elZoom.classList.add("selected")}},{key:"getToolbarIconsReference",value:function(){var t=this.w;this.elZoom||(this.elZoom=t.globals.dom.baseEl.querySelector(".apexcharts-zoom-icon")),this.elPan||(this.elPan=t.globals.dom.baseEl.querySelector(".apexcharts-pan-icon")),this.elSelection||(this.elSelection=t.globals.dom.baseEl.querySelector(".apexcharts-selection-icon"))}},{key:"enableZooming",value:function(){this.toggleOtherControls(),this.w.globals.zoomEnabled=!0,this.elZoom&&this.elZoom.classList.add("selected"),this.elPan&&this.elPan.classList.remove("selected")}},{key:"enablePanning",value:function(){this.toggleOtherControls(),this.w.globals.panEnabled=!0,this.elPan&&this.elPan.classList.add("selected"),this.elZoom&&this.elZoom.classList.remove("selected")}},{key:"togglePanning",value:function(){this.toggleOtherControls(),this.w.globals.panEnabled=!this.w.globals.panEnabled,this.elPan.classList.contains("selected")?this.elPan.classList.remove("selected"):this.elPan.classList.add("selected")}},{key:"toggleOtherControls",value:function(){var t=this.w;t.globals.panEnabled=!1,t.globals.zoomEnabled=!1,t.globals.selectionEnabled=!1,this.getToolbarIconsReference(),this.elPan&&this.elPan.classList.remove("selected"),this.elSelection&&this.elSelection.classList.remove("selected"),this.elZoom&&this.elZoom.classList.remove("selected")}},{key:"handleZoomIn",value:function(){var t=this.w,e=(t.globals.minX+t.globals.maxX)/2,i=(t.globals.minX+e)/2,s=(t.globals.maxX+e)/2;t.globals.disableZoomIn||this.zoomUpdateOptions(i,s)}},{key:"handleZoomOut",value:function(){var t=this.w;if(!("datetime"===t.config.xaxis.type&&new Date(t.globals.minX).getUTCFullYear()<1e3)){var e=(t.globals.minX+t.globals.maxX)/2,i=t.globals.minX-(e-t.globals.minX),s=t.globals.maxX-(e-t.globals.maxX);t.globals.disableZoomOut||this.zoomUpdateOptions(i,s)}}},{key:"zoomUpdateOptions",value:function(t,e){var i={min:t,max:e},s=this.getBeforeZoomRange(i);s&&(i=s.xaxis),this.w.globals.zoomed=!0,this.ctx._updateOptions({xaxis:i},!1,this.w.config.chart.animations.dynamicAnimation.enabled),this.zoomCallback(i)}},{key:"zoomCallback",value:function(t,e){"function"==typeof this.ev.zoomed&&this.ev.zoomed(this.ctx,{xaxis:t,yaxis:e})}},{key:"getBeforeZoomRange",value:function(t,e){var i=null;return"function"==typeof this.ev.beforeZoom&&(i=this.ev.beforeZoom(this,{xaxis:t,yaxis:e})),i}},{key:"toggleMenu",value:function(){this.elMenu.classList.contains("open")?this.elMenu.classList.remove("open"):this.elMenu.classList.add("open")}},{key:"downloadPNG",value:function(){var t=new nt(this.ctx);t.exportToPng(this.ctx),this.toggleMenu()}},{key:"downloadSVG",value:function(){var t=new nt(this.ctx);t.exportToSVG(),this.toggleMenu()}},{key:"handleZoomReset",value:function(t){var e=this;this.ctx.getSyncedCharts().forEach(function(t){var i=t.w;i.globals.minX!==i.globals.initialminX&&i.globals.maxX!==i.globals.initialmaxX&&(t.revertDefaultAxisMinMax(),"function"==typeof i.config.chart.events.zoomed&&e.zoomCallback({min:i.config.xaxis.min,max:i.config.xaxis.max}),i.globals.zoomed=!1,t._updateSeries(i.globals.initialSeries,i.config.chart.animations.dynamicAnimation.enabled))})}},{key:"destroy",value:function(){this.elZoomReset&&(this.elZoomReset.removeEventListener("click",this.handleZoomReset.bind(this)),this.elSelection.removeEventListener("click",this.toggleSelection.bind(this)),this.elZoom.removeEventListener("click",this.toggleZooming.bind(this)),this.elZoomIn.removeEventListener("click",this.handleZoomIn.bind(this)),this.elZoomOut.removeEventListener("click",this.handleZoomOut.bind(this)),this.elPan.removeEventListener("click",this.togglePanning.bind(this)),this.elMenuIcon.removeEventListener("click",this.toggleMenu.bind(this))),this.elZoom=null,this.elZoomIn=null,this.elZoomOut=null,this.elPan=null,this.elSelection=null,this.elZoomReset=null,this.elMenuIcon=null}}]),t}(),mt=function(t){function i(t){var s;return e(this,i),(s=h(this,o(i).call(this,t))).ctx=t,s.w=t.w,s.dragged=!1,s.graphics=new f(s.ctx),s.eventList=["mousedown","mousemove","touchstart","touchmove","mouseup","touchend"],s.clientX=0,s.clientY=0,s.startX=0,s.endX=0,s.dragX=0,s.startY=0,s.endY=0,s.dragY=0,s}return r(i,bt),s(i,[{key:"init",value:function(t){var e=this,i=t.xyRatios,s=this.w,a=this;this.xyRatios=i,this.zoomRect=this.graphics.drawRect(0,0,0,0),this.selectionRect=this.graphics.drawRect(0,0,0,0),this.gridRect=s.globals.dom.baseEl.querySelector(".apexcharts-grid"),this.zoomRect.node.classList.add("apexcharts-zoom-rect"),this.selectionRect.node.classList.add("apexcharts-selection-rect"),s.globals.dom.elGraphical.add(this.zoomRect),s.globals.dom.elGraphical.add(this.selectionRect),"x"===s.config.chart.selection.type?this.slDraggableRect=this.selectionRect.draggable({minX:0,minY:0,maxX:s.globals.gridWidth,maxY:s.globals.gridHeight}).on("dragmove",this.selectionDragging.bind(this,"dragging")):"y"===s.config.chart.selection.type?this.slDraggableRect=this.selectionRect.draggable({minX:0,maxX:s.globals.gridWidth}).on("dragmove",this.selectionDragging.bind(this,"dragging")):this.slDraggableRect=this.selectionRect.draggable().on("dragmove",this.selectionDragging.bind(this,"dragging")),this.preselectedSelection(),this.hoverArea=s.globals.dom.baseEl.querySelector(s.globals.chartClass),this.hoverArea.classList.add("zoomable"),this.eventList.forEach(function(t){e.hoverArea.addEventListener(t,a.svgMouseEvents.bind(a,i),{capture:!1,passive:!0})})}},{key:"destroy",value:function(){var t=this,e=this;this.eventList.forEach(function(i){t.hoverArea&&t.hoverArea.removeEventListener(i,e.svgMouseEvents.bind(e,e.xyRatios),{capture:!1,passive:!0})}),this.slDraggableRect&&(this.slDraggableRect.draggable(!1),this.slDraggableRect.off(),this.selectionRect.off()),this.selectionRect=null,this.zoomRect=null,this.gridRect=null}},{key:"svgMouseEvents",value:function(t,e){var i=this.w,s=this,a=this.ctx.toolbar,n=i.globals.zoomEnabled?i.config.chart.zoom.type:i.config.chart.selection.type;if(e.shiftKey?(this.shiftWasPressed=!0,a.enablePanning()):this.shiftWasPressed&&(a.enableZooming(),this.shiftWasPressed=!1),!(e.target.classList.contains("apexcharts-selection-rect")||e.target.parentNode.classList.contains("apexcharts-toolbar"))){if(s.clientX="touchmove"===e.type||"touchstart"===e.type?e.touches[0].clientX:"touchend"===e.type?e.changedTouches[0].clientX:e.clientX,s.clientY="touchmove"===e.type||"touchstart"===e.type?e.touches[0].clientY:"touchend"===e.type?e.changedTouches[0].clientY:e.clientY,"mousedown"===e.type&&1===e.which){var r=s.gridRect.getBoundingClientRect();s.startX=s.clientX-r.left,s.startY=s.clientY-r.top,s.dragged=!1,s.w.globals.mousedown=!0}if(("mousemove"===e.type&&1===e.which||"touchmove"===e.type)&&(s.dragged=!0,i.globals.panEnabled?(i.globals.selection=null,s.w.globals.mousedown&&s.panDragging({context:s,zoomtype:n,xyRatios:t})):(s.w.globals.mousedown&&i.globals.zoomEnabled||s.w.globals.mousedown&&i.globals.selectionEnabled)&&(s.selection=s.selectionDrawing({context:s,zoomtype:n}))),"mouseup"===e.type||"touchend"===e.type){var o=s.gridRect.getBoundingClientRect();s.w.globals.mousedown&&(s.endX=s.clientX-o.left,s.endY=s.clientY-o.top,s.dragX=Math.abs(s.endX-s.startX),s.dragY=Math.abs(s.endY-s.startY),(i.globals.zoomEnabled||i.globals.selectionEnabled)&&s.selectionDrawn({context:s,zoomtype:n})),i.globals.zoomEnabled&&s.hideSelectionRect(this.selectionRect),s.dragged=!1,s.w.globals.mousedown=!1}this.makeSelectionRectDraggable()}}},{key:"makeSelectionRectDraggable",value:function(){var t=this.w;if(this.selectionRect){var e=this.selectionRect.node.getBoundingClientRect();e.width>0&&e.height>0&&this.slDraggableRect.selectize().resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,s={x:i,y:0,width:t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(s),this.makeSelectionRectDraggable(),"function"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:"drawSelectionRect",value:function(t){var e=t.x,i=t.y,s=t.width,a=t.height,n=t.translateX,r=t.translateY,o=this.w,l=this.zoomRect,h=this.selectionRect;if(this.dragged||null!==o.globals.selection){var c={transform:"translate("+n+", "+r+")"};o.globals.zoomEnabled&&this.dragged&&(l.attr({x:e,y:i,width:s,height:a,fill:o.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":o.config.chart.zoom.zoomedArea.fill.opacity,stroke:o.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":o.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":o.config.chart.zoom.zoomedArea.stroke.opacity}),f.setAttrs(l.node,c)),o.globals.selectionEnabled&&(h.attr({x:e,y:i,width:s>0?s:0,height:a>0?a:0,fill:o.config.chart.selection.fill.color,"fill-opacity":o.config.chart.selection.fill.opacity,stroke:o.config.chart.selection.stroke.color,"stroke-width":o.config.chart.selection.stroke.width,"stroke-dasharray":o.config.chart.selection.stroke.dashArray,"stroke-opacity":o.config.chart.selection.stroke.opacity}),f.setAttrs(h.node,c))}}},{key:"hideSelectionRect",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(t){var e=t.context,i=t.zoomtype,s=this.w,a=e,n=this.gridRect.getBoundingClientRect(),r=a.startX-1,o=a.startY,l=a.clientX-n.left-r,h=a.clientY-n.top-o,c=0,d=0,u={};return(Math.abs(l+r)>s.globals.gridWidth||a.clientX-n.left<0)&&(a.hideSelectionRect(this.zoomRect),a.dragged=!1,a.w.globals.mousedown=!1),r>a.clientX-n.left&&(c=-(l=Math.abs(l))),o>a.clientY-n.top&&(d=-(h=Math.abs(h))),u="x"===i?{x:r,y:0,width:l,height:s.globals.gridHeight,translateX:c,translateY:0}:"y"===i?{x:0,y:o,width:s.globals.gridWidth,height:h,translateX:0,translateY:d}:{x:r,y:o,width:l,height:h,translateX:c,translateY:d},a.drawSelectionRect(u),a.selectionDragging("resizing"),u}},{key:"selectionDragging",value:function(t,e){var i=this,s=this.w,a=this.xyRatios,n=this.selectionRect,r=0;"resizing"===t&&(r=30),"function"==typeof s.config.chart.events.selection&&s.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout(function(){var t=i.gridRect.getBoundingClientRect(),e=n.node.getBoundingClientRect(),r=s.globals.xAxisScale.niceMin+(e.left-t.left)*a.xRatio,o=s.globals.xAxisScale.niceMin+(e.right-t.left)*a.xRatio,l=s.globals.yAxisScale[0].niceMin+(t.bottom-e.bottom)*a.yRatio[0],h=s.globals.yAxisScale[0].niceMax-(e.top-t.top)*a.yRatio[0];s.config.chart.events.selection(i.ctx,{xaxis:{min:r,max:o},yaxis:{min:l,max:h}})},r))}},{key:"selectionDrawn",value:function(t){var e=t.context,i=t.zoomtype,s=this.w,a=e,n=this.xyRatios,r=this.ctx.toolbar;if(a.startX>a.endX){var o=a.startX;a.startX=a.endX,a.endX=o}if(a.startY>a.endY){var l=a.startY;a.startY=a.endY,a.endY=l}var h=s.globals.xAxisScale.niceMin+a.startX*n.xRatio,c=s.globals.xAxisScale.niceMin+a.endX*n.xRatio,u=[],g=[];if(s.config.yaxis.forEach(function(t,e){u.push(Math.floor(s.globals.yAxisScale[e].niceMax-n.yRatio[e]*a.startY)),g.push(Math.floor(s.globals.yAxisScale[e].niceMax-n.yRatio[e]*a.endY))}),a.dragged&&(a.dragX>10||a.dragY>10)&&h!==c)if(s.globals.zoomEnabled){var f=d.clone(s.config.yaxis);s.globals.zoomed||(s.globals.lastXAxis=d.clone(s.config.xaxis),s.globals.lastYAxis=d.clone(s.config.yaxis));var p={min:h,max:c};if("xy"!==i&&"y"!==i||f.forEach(function(t,e){f[e].min=g[e],f[e].max=u[e]}),s.config.chart.zoom.autoScaleYaxis){var x=new B(a.ctx);f=x.autoScaleY(a.ctx,{xaxis:p})}if(r){var b=r.getBeforeZoomRange(p,f);b&&(p=b.xaxis?b.xaxis:p,f=b.yaxis?b.yaxe:f)}a.ctx._updateOptions({xaxis:p,yaxis:f},!1,a.w.config.chart.animations.dynamicAnimation.enabled),"function"==typeof s.config.chart.events.zoomed&&r.zoomCallback(p,f),s.globals.zoomed=!0}else if(s.globals.selectionEnabled){var m,v=null;m={min:h,max:c},"xy"!==i&&"y"!==i||(v=d.clone(s.config.yaxis)).forEach(function(t,e){v[e].min=g[e],v[e].max=u[e]}),s.globals.selection=a.selection,"function"==typeof s.config.chart.events.selection&&s.config.chart.events.selection(a.ctx,{xaxis:m,yaxis:v})}}},{key:"panDragging",value:function(t){var e,i=t.context,s=(t.zoomtype,this.w),a=i;if(void 0!==s.globals.lastClientPosition.x){var n=s.globals.lastClientPosition.x-a.clientX,r=s.globals.lastClientPosition.y-a.clientY;Math.abs(n)>Math.abs(r)&&n>0?e="left":Math.abs(n)>Math.abs(r)&&n<0?e="right":Math.abs(r)>Math.abs(n)&&r>0?e="up":Math.abs(r)>Math.abs(n)&&r<0&&(e="down")}s.globals.lastClientPosition={x:a.clientX,y:a.clientY};var o=s.globals.minX,l=s.globals.maxX;this.panScrolled(e,o,l)}},{key:"panScrolled",value:function(t,e,i){var s=this.w,a=this.xyRatios,n=d.clone(s.config.yaxis);"left"===t?(e=s.globals.minX+s.globals.gridWidth/15*a.xRatio,i=s.globals.maxX+s.globals.gridWidth/15*a.xRatio):"right"===t&&(e=s.globals.minX-s.globals.gridWidth/15*a.xRatio,i=s.globals.maxX-s.globals.gridWidth/15*a.xRatio),(e<s.globals.initialminX||i>s.globals.initialmaxX)&&(e=s.globals.minX,i=s.globals.maxX);var r={min:e,max:i};s.config.chart.zoom.autoScaleYaxis&&(n=new B(me.ctx).autoScaleY(me.ctx,{xaxis:r}));this.ctx._updateOptions({xaxis:{min:e,max:i},yaxis:n},!1,!1),"function"==typeof s.config.chart.events.scrolled&&s.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),i}(),vt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"draw",value:function(){this.drawTitleSubtitle("title"),this.drawTitleSubtitle("subtitle")}},{key:"drawTitleSubtitle",value:function(t){var e=this.w,i="title"===t?e.config.title:e.config.subtitle,s=e.globals.svgWidth/2,a=i.offsetY,n="middle";if("left"===i.align?(s=10,n="start"):"right"===i.align&&(s=e.globals.svgWidth-10,n="end"),s+=i.offsetX,a=a+parseInt(i.style.fontSize)+2,void 0!==i.text){var r=new f(this.ctx).drawText({x:s,y:a,text:i.text,textAnchor:n,fontSize:i.style.fontSize,fontFamily:i.style.fontFamily,foreColor:i.style.color,opacity:1});r.node.setAttribute("class","apexcharts-".concat(t,"-text")),e.globals.dom.Paper.add(r)}}}]),t}();st="undefined"!=typeof window?window:void 0,at=function(e,i){var s=(void 0!==this?this:e).SVG=function(t){if(s.supported)return t=new s.Doc(t),s.parser.draw||s.prepare(),t};if(s.ns="http://www.w3.org/2000/svg",s.xmlns="http://www.w3.org/2000/xmlns/",s.xlink="http://www.w3.org/1999/xlink",s.svgjs="http://svgjs.com/svgjs",s.supported=!0,!s.supported)return!1;s.did=1e3,s.eid=function(t){return"Svgjs"+d(t)+s.did++},s.create=function(t){var e=i.createElementNS(this.ns,t);return e.setAttribute("id",this.eid(t)),e},s.extend=function(){var t,e,i,a;for(e=(t=[].slice.call(arguments)).pop(),a=t.length-1;a>=0;a--)if(t[a])for(i in e)t[a].prototype[i]=e[i];s.Set&&s.Set.inherit&&s.Set.inherit()},s.invent=function(t){var e="function"==typeof t.create?t.create:function(){this.constructor.call(this,s.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&s.extend(e,t.extend),t.construct&&s.extend(t.parent||s.Container,t.construct),e},s.adopt=function(t){return t?t.instance?t.instance:((i="svg"==t.nodeName?t.parentNode instanceof e.SVGElement?new s.Nested:new s.Doc:"linearGradient"==t.nodeName?new s.Gradient("linear"):"radialGradient"==t.nodeName?new s.Gradient("radial"):s[d(t.nodeName)]?new(s[d(t.nodeName)]):new s.Element(t)).type=t.nodeName,i.node=t,t.instance=i,i instanceof s.Doc&&i.namespace().defs(),i.setData(JSON.parse(t.getAttribute("svgjs:data"))||{}),i):null;var i},s.prepare=function(){var t=i.getElementsByTagName("body")[0],e=(t?new s.Doc(t):s.adopt(i.documentElement).nested()).size(2,0);s.parser={body:t||i.documentElement,draw:e.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:e.polyline().node,path:e.path().node,native:s.create("svg")}},s.parser={native:s.create("svg")},i.addEventListener("DOMContentLoaded",function(){s.parser.draw||s.prepare()},!1),s.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},s.utils={map:function(t,e){var i,s=t.length,a=[];for(i=0;i<s;i++)a.push(e(t[i]));return a},filter:function(t,e){var i,s=t.length,a=[];for(i=0;i<s;i++)e(t[i])&&a.push(t[i]);return a},radians:function(t){return t%360*Math.PI/180},degrees:function(t){return 180*t/Math.PI%360},filterSVGElements:function(t){return this.filter(t,function(t){return t instanceof e.SVGElement})}},s.defaults={attrs:{"fill-opacity":1,"stroke-opacity":1,"stroke-width":0,"stroke-linejoin":"miter","stroke-linecap":"butt",fill:"#000000",stroke:"#000000",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,"stop-opacity":1,"stop-color":"#000000","font-size":16,"font-family":"Helvetica, Arial, sans-serif","text-anchor":"start"}},s.Color=function(e){var i,a;(this.r=0,this.g=0,this.b=0,e)&&("string"==typeof e?s.regex.isRgb.test(e)?(i=s.regex.rgb.exec(e.replace(s.regex.whitespace,"")),this.r=parseInt(i[1]),this.g=parseInt(i[2]),this.b=parseInt(i[3])):s.regex.isHex.test(e)&&(i=s.regex.hex.exec(4==(a=e).length?["#",a.substring(1,2),a.substring(1,2),a.substring(2,3),a.substring(2,3),a.substring(3,4),a.substring(3,4)].join(""):a),this.r=parseInt(i[1],16),this.g=parseInt(i[2],16),this.b=parseInt(i[3],16)):"object"===t(e)&&(this.r=e.r,this.g=e.g,this.b=e.b))},s.extend(s.Color,{toString:function(){return this.toHex()},toHex:function(){return"#"+u(this.r)+u(this.g)+u(this.b)},toRgb:function(){return"rgb("+[this.r,this.g,this.b].join()+")"},brightness:function(){return this.r/255*.3+this.g/255*.59+this.b/255*.11},morph:function(t){return this.destination=new s.Color(t),this},at:function(t){return this.destination?(t=t<0?0:t>1?1:t,new s.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),s.Color.test=function(t){return t+="",s.regex.isHex.test(t)||s.regex.isRgb.test(t)},s.Color.isRgb=function(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b},s.Color.isColor=function(t){return s.Color.isRgb(t)||s.Color.test(t)},s.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},s.extend(s.Array,{morph:function(t){if(this.destination=this.parse(t),this.value.length!=this.destination.length){for(var e=this.value[this.value.length-1],i=this.destination[this.destination.length-1];this.value.length>this.destination.length;)this.destination.push(i);for(;this.value.length<this.destination.length;)this.value.push(e)}return this},settle:function(){for(var t=0,e=this.value.length,i=[];t<e;t++)-1==i.indexOf(this.value[t])&&i.push(this.value[t]);return this.value=i},at:function(t){if(!this.destination)return this;for(var e=0,i=this.value.length,a=[];e<i;e++)a.push(this.value[e]+(this.destination[e]-this.value[e])*t);return new s.Array(a)},toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)},split:function(t){return t.trim().split(s.regex.delimiter).map(parseFloat)},reverse:function(){return this.value.reverse(),this},clone:function(){var t=new this.constructor;return t.value=function t(e){var i=e.slice(0);for(var s=i.length;s--;)Array.isArray(i[s])&&(i[s]=t(i[s]));return i}(this.value),t}}),s.PointArray=function(t,e){s.Array.call(this,t,e||[[0,0]])},s.PointArray.prototype=new s.Array,s.PointArray.prototype.constructor=s.PointArray,s.extend(s.PointArray,{toString:function(){for(var t=0,e=this.value.length,i=[];t<e;t++)i.push(this.value[t].join(","));return i.join(" ")},toLine:function(){return{x1:this.value[0][0],y1:this.value[0][1],x2:this.value[1][0],y2:this.value[1][1]}},at:function(t){if(!this.destination)return this;for(var e=0,i=this.value.length,a=[];e<i;e++)a.push([this.value[e][0]+(this.destination[e][0]-this.value[e][0])*t,this.value[e][1]+(this.destination[e][1]-this.value[e][1])*t]);return new s.PointArray(a)},parse:function(t){var e=[];if(t=t.valueOf(),Array.isArray(t)){if(Array.isArray(t[0]))return t.map(function(t){return t.slice()});if(null!=t[0].x)return t.map(function(t){return[t.x,t.y]})}else t=t.trim().split(s.regex.delimiter).map(parseFloat);t.length%2!=0&&t.pop();for(var i=0,a=t.length;i<a;i+=2)e.push([t[i],t[i+1]]);return e},move:function(t,e){var i=this.bbox();if(t-=i.x,e-=i.y,!isNaN(t)&&!isNaN(e))for(var s=this.value.length-1;s>=0;s--)this.value[s]=[this.value[s][0]+t,this.value[s][1]+e];return this},size:function(t,e){var i,s=this.bbox();for(i=this.value.length-1;i>=0;i--)s.width&&(this.value[i][0]=(this.value[i][0]-s.x)*t/s.width+s.x),s.height&&(this.value[i][1]=(this.value[i][1]-s.y)*e/s.height+s.y);return this},bbox:function(){return s.parser.draw||s.prepare(),s.parser.poly.setAttribute("points",this.toString()),s.parser.poly.getBBox()}});for(var a={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},S:function(t,e){return e.x=t[2],e.y=t[3],["S",t[0],t[1],t[2],t[3]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},T:function(t,e){return e.x=t[0],e.y=t[1],["T",t[0],t[1]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,["Z"]},A:function(t,e){return e.x=t[5],e.y=t[6],["A",t[0],t[1],t[2],t[3],t[4],t[5],t[6]]}},n="mlhvqtcsaz".split(""),r=0,o=n.length;r<o;++r)a[n[r]]=function(t){return function(e,i,s){if("H"==t)e[0]=e[0]+i.x;else if("V"==t)e[0]=e[0]+i.y;else if("A"==t)e[5]=e[5]+i.x,e[6]=e[6]+i.y;else for(var n=0,r=e.length;n<r;++n)e[n]=e[n]+(n%2?i.y:i.x);return a[t](e,i,s)}}(n[r].toUpperCase());s.PathArray=function(t,e){s.Array.call(this,t,e||[["M",0,0]])},s.PathArray.prototype=new s.Array,s.PathArray.prototype.constructor=s.PathArray,s.extend(s.PathArray,{toString:function(){return function(t){for(var e=0,i=t.length,s="";e<i;e++)s+=t[e][0],null!=t[e][1]&&(s+=t[e][1],null!=t[e][2]&&(s+=" ",s+=t[e][2],null!=t[e][3]&&(s+=" ",s+=t[e][3],s+=" ",s+=t[e][4],null!=t[e][5]&&(s+=" ",s+=t[e][5],s+=" ",s+=t[e][6],null!=t[e][7]&&(s+=" ",s+=t[e][7])))));return s+" "}(this.value)},move:function(t,e){var i=this.bbox();if(t-=i.x,e-=i.y,!isNaN(t)&&!isNaN(e))for(var s,a=this.value.length-1;a>=0;a--)"M"==(s=this.value[a][0])||"L"==s||"T"==s?(this.value[a][1]+=t,this.value[a][2]+=e):"H"==s?this.value[a][1]+=t:"V"==s?this.value[a][1]+=e:"C"==s||"S"==s||"Q"==s?(this.value[a][1]+=t,this.value[a][2]+=e,this.value[a][3]+=t,this.value[a][4]+=e,"C"==s&&(this.value[a][5]+=t,this.value[a][6]+=e)):"A"==s&&(this.value[a][6]+=t,this.value[a][7]+=e);return this},size:function(t,e){var i,s,a=this.bbox();for(i=this.value.length-1;i>=0;i--)"M"==(s=this.value[i][0])||"L"==s||"T"==s?(this.value[i][1]=(this.value[i][1]-a.x)*t/a.width+a.x,this.value[i][2]=(this.value[i][2]-a.y)*e/a.height+a.y):"H"==s?this.value[i][1]=(this.value[i][1]-a.x)*t/a.width+a.x:"V"==s?this.value[i][1]=(this.value[i][1]-a.y)*e/a.height+a.y:"C"==s||"S"==s||"Q"==s?(this.value[i][1]=(this.value[i][1]-a.x)*t/a.width+a.x,this.value[i][2]=(this.value[i][2]-a.y)*e/a.height+a.y,this.value[i][3]=(this.value[i][3]-a.x)*t/a.width+a.x,this.value[i][4]=(this.value[i][4]-a.y)*e/a.height+a.y,"C"==s&&(this.value[i][5]=(this.value[i][5]-a.x)*t/a.width+a.x,this.value[i][6]=(this.value[i][6]-a.y)*e/a.height+a.y)):"A"==s&&(this.value[i][1]=this.value[i][1]*t/a.width,this.value[i][2]=this.value[i][2]*e/a.height,this.value[i][6]=(this.value[i][6]-a.x)*t/a.width+a.x,this.value[i][7]=(this.value[i][7]-a.y)*e/a.height+a.y);return this},equalCommands:function(t){var e,i,a;for(t=new s.PathArray(t),a=this.value.length===t.value.length,e=0,i=this.value.length;a&&e<i;e++)a=this.value[e][0]===t.value[e][0];return a},morph:function(t){return t=new s.PathArray(t),this.equalCommands(t)?this.destination=t:this.destination=null,this},at:function(t){if(!this.destination)return this;var e,i,a,n,r=this.value,o=this.destination.value,l=[],h=new s.PathArray;for(e=0,i=r.length;e<i;e++){for(l[e]=[r[e][0]],a=1,n=r[e].length;a<n;a++)l[e][a]=r[e][a]+(o[e][a]-r[e][a])*t;"A"===l[e][0]&&(l[e][4]=+(0!=l[e][4]),l[e][5]=+(0!=l[e][5]))}return h.value=l,h},parse:function(t){if(t instanceof s.PathArray)return t.valueOf();var e,i={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};t="string"==typeof t?t.replace(s.regex.numbersWithDots,h).replace(s.regex.pathLetters," $& ").replace(s.regex.hyphen,"$1 -").trim().split(s.regex.delimiter):t.reduce(function(t,e){return[].concat.call(t,e)},[]);var n=[],r=new s.Point,o=new s.Point,l=0,c=t.length;do{s.regex.isPathLetter.test(t[l])?(e=t[l],++l):"M"==e?e="L":"m"==e&&(e="l"),n.push(a[e].call(null,t.slice(l,l+=i[e.toUpperCase()]).map(parseFloat),r,o))}while(c>l);return n},bbox:function(){return s.parser.draw||s.prepare(),s.parser.path.setAttribute("d",this.toString()),s.parser.path.getBBox()}}),s.Number=s.invent({create:function(t,e){this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-3.4e38:3.4e38:"string"==typeof t?(e=t.match(s.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),"%"==e[5]?this.value/=100:"s"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof s.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return("%"==this.unit?~~(1e8*this.value)/1e6:"s"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new s.Number(t),new s.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new s.Number(t),new s.Number(this-t,this.unit||t.unit)},times:function(t){return t=new s.Number(t),new s.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new s.Number(t),new s.Number(this/t,this.unit||t.unit)},to:function(t){var e=new s.Number(this);return"string"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new s.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new s.Number(this.destination).minus(this).times(t).plus(this):this}}}),s.Element=s.invent({create:function(t){this._stroke=s.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute("stroke")||this._stroke)},extend:{x:function(t){return this.attr("x",t)},y:function(t){return this.attr("y",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr("width",t)},height:function(t){return this.attr("height",t)},size:function(t,e){var i=g(this,t,e);return this.width(new s.Number(i.width)).height(new s.Number(i.height))},clone:function(t){this.writeDataToDom();var e=b(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr("id",t)},inside:function(t,e){var i=this.bbox();return t>i.x&&e>i.y&&t<i.x+i.width&&e<i.y+i.height},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return"none"!=this.style("display")},toString:function(){return this.attr("id")},classes:function(){var t=this.attr("class");return null==t?[]:t.trim().split(s.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter(function(e){return e!=t}).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return s.get(this.attr(t))},parent:function(t){var i=this;if(!i.node.parentNode)return null;if(i=s.adopt(i.node.parentNode),!t)return i;for(;i&&i.node instanceof e.SVGElement;){if("string"==typeof t?i.matches(t):i instanceof t)return i;if(!i.node.parentNode||"#document"==i.node.parentNode.nodeName)return null;i=s.adopt(i.node.parentNode)}},doc:function(){return this instanceof s.Doc?this:this.parent(s.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var e=i.createElement("svg");if(!(t&&this instanceof s.Parent))return e.appendChild(t=i.createElement("svg")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),e.innerHTML.replace(/^<svg>/,"").replace(/<\/svg>$/,"");e.innerHTML="<svg>"+t.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2></$1>")+"</svg>";for(var a=0,n=e.firstChild.childNodes.length;a<n;a++)this.node.appendChild(e.firstChild.firstChild);return this},writeDataToDom:function(){(this.each||this.lines)&&(this.each?this:this.lines()).each(function(){this.writeDataToDom()});return this.node.removeAttribute("svgjs:data"),Object.keys(this.dom).length&&this.node.setAttribute("svgjs:data",JSON.stringify(this.dom)),this},setData:function(t){return this.dom=t,this},is:function(t){return function(t,e){return t instanceof e}(this,t)}}}),s.easing={"-":function(t){return t},"<>":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)}},s.morph=function(t){return function(e,i){return new s.MorphObj(e,i).at(t)}},s.Situation=s.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new s.Number(t.duration).valueOf(),this.delay=new s.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),s.FX=s.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(e,i,a){"object"===t(e)&&(i=e.ease,a=e.delay,e=e.duration);var n=new s.Situation({duration:e||1e3,delay:a||0,ease:s.easing[i||"-"]||i});return this.queue(n),this},delay:function(t){var e=new s.Situation({duration:t,delay:0,ease:s.easing["-"]});return this.queue(e)},target:function(t){return t&&t instanceof s.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=e.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){e.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return("function"==typeof t||t instanceof s.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof s.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e,i,a=this.situation;if(a.init)return this;for(t in a.animations)for(i=this.target()[t](),Array.isArray(i)||(i=[i]),Array.isArray(a.animations[t])||(a.animations[t]=[a.animations[t]]),e=i.length;e--;)a.animations[t][e]instanceof s.Number&&(i[e]=new s.Number(i[e])),a.animations[t][e]=i[e].morph(a.animations[t][e]);for(t in a.attrs)a.attrs[t]=new s.MorphObj(this.target().attr(t),a.attrs[t]);for(t in a.styles)a.styles[t]=new s.MorphObj(this.target().style(t),a.styles[t]);return a.initialTransformation=this.target().matrixify(),a.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},reset:function(){if(this.situation){var t=this.situation;this.stop(),this.situation=t,this.atStart()}return this},finish:function(){for(this.stop(!0,!1);this.dequeue().situation&&this.stop(!0,!1););return this.clearQueue().clearCurrent(),this},atStart:function(){return this.at(0,!0)},atEnd:function(){return!0===this.situation.loops&&(this.situation.loops=this.situation.loop+1),"number"==typeof this.situation.loops?this.at(this.situation.loops,!0):this.at(1,!0)},at:function(t,e){var i=this.situation.duration/this._speed;return this.absPos=t,e||(this.situation.reversed&&(this.absPos=1-this.absPos),this.absPos+=this.situation.loop),this.situation.start=+new Date-this.absPos*i,this.situation.finish=this.situation.start+i,this.step(!0)},speed:function(t){return 0===t?this.pause():t?(this._speed=t,this.at(this.absPos,!0)):this._speed},loop:function(t,e){var i=this.last();return i.loops=null==t||t,i.loop=0,e&&(i.reversing=!0),this},pause:function(){return this.paused=!0,this.stopAnimFrame(),this},play:function(){return this.paused?(this.paused=!1,this.at(this.absPos,!0)):this},reverse:function(t){var e=this.last();return e.reversed=void 0===t?!e.reversed:t,this},progress:function(t){return t?this.situation.ease(this.pos):this.pos},after:function(t){var e=this.last();return this.target().on("finished.fx",function i(s){s.detail.situation==e&&(t.call(this,e),this.off("finished.fx",i))}),this._callStart()},during:function(t){var e=this.last(),i=function(i){i.detail.situation==e&&t.call(this,i.detail.pos,s.morph(i.detail.pos),i.detail.eased,e)};return this.target().off("during.fx",i).on("during.fx",i),this.after(function(){this.off("during.fx",i)}),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off("allfinished.fx",e)};return this.target().off("allfinished.fx",e).on("allfinished.fx",e),this._callStart()},duringAll:function(t){var e=function(e){t.call(this,e.detail.pos,s.morph(e.detail.pos),e.detail.eased,e.detail.situation)};return this.target().off("during.fx",e).on("during.fx",e),this.afterAll(function(){this.off("during.fx",e)}),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||"animations"][t]=e,this._callStart()},step:function(t){var e,i,s;(t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops)?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||i<this.situation.loops?(this.pos=e-i,s=this.situation.loop,this.situation.loop=i):(this.absPos=this.situation.loops,this.pos=1,s=this.situation.loop-1,this.situation.loop=this.situation.loops),this.situation.reversing&&(this.situation.reversed=this.situation.reversed!=Boolean((this.situation.loop-s)%2))):(this.absPos=Math.min(this.absPos,1),this.pos=this.absPos);this.pos<0&&(this.pos=0),this.situation.reversed&&(this.pos=1-this.pos);var a=this.situation.ease(this.pos);for(var n in this.situation.once)n>this.lastPos&&n<=a&&(this.situation.once[n].call(this.target(),this.pos,a),delete this.situation.once[n]);return this.active&&this.target().fire("during",{pos:this.pos,eased:a,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=a,this):this},eachAt:function(){var t,e,i,a=this,n=this.target(),r=this.situation;for(t in r.animations)i=[].concat(r.animations[t]).map(function(t){return"string"!=typeof t&&t.at?t.at(r.ease(a.pos),a.pos):t}),n[t].apply(n,i);for(t in r.attrs)i=[t].concat(r.attrs[t]).map(function(t){return"string"!=typeof t&&t.at?t.at(r.ease(a.pos),a.pos):t}),n.attr.apply(n,i);for(t in r.styles)i=[t].concat(r.styles[t]).map(function(t){return"string"!=typeof t&&t.at?t.at(r.ease(a.pos),a.pos):t}),n.style.apply(n,i);if(r.transforms.length){for(i=r.initialTransformation,t=0,e=r.transforms.length;t<e;t++){var o=r.transforms[t];o instanceof s.Matrix?i=o.relative?i.multiply((new s.Matrix).morph(o).at(r.ease(this.pos))):i.morph(o).at(r.ease(this.pos)):(o.relative||o.undo(i.extract()),i=i.multiply(o.at(r.ease(this.pos))))}n.matrix(i)}return this},once:function(t,e,i){var s=this.last();return i||(t=s.ease(t)),s.once[t]=e,this},_callStart:function(){return setTimeout(function(){this.start()}.bind(this),0),this}},parent:s.Element,construct:{animate:function(t,e,i){return(this.fx||(this.fx=new s.FX(this))).animate(t,e,i)},delay:function(t){return(this.fx||(this.fx=new s.FX(this))).delay(t)},stop:function(t,e){return this.fx&&this.fx.stop(t,e),this},finish:function(){return this.fx&&this.fx.finish(),this},pause:function(){return this.fx&&this.fx.pause(),this},play:function(){return this.fx&&this.fx.play(),this},speed:function(t){if(this.fx){if(null==t)return this.fx.speed();this.fx.speed(t)}return this}}}),s.MorphObj=s.invent({create:function(t,e){return s.Color.isColor(e)?new s.Color(t).morph(e):s.regex.delimiter.test(t)?s.regex.pathLetters.test(t)?new s.PathArray(t).morph(e):new s.Array(t).morph(e):s.regex.numberAndUnit.test(e)?new s.Number(t).morph(e):(this.value=t,void(this.destination=e))},extend:{at:function(t,e){return e<1?this.value:this.destination},valueOf:function(){return this.value}}}),s.extend(s.FX,{attr:function(e,i,s){if("object"===t(e))for(var a in e)this.attr(a,e[a]);else this.add(e,i,"attrs");return this},style:function(e,i){if("object"===t(e))for(var s in e)this.style(s,e[s]);else this.add(e,i,"styles");return this},x:function(t,e){if(this.target()instanceof s.G)return this.transform({x:t},e),this;var i=new s.Number(t);return i.relative=e,this.add("x",i)},y:function(t,e){if(this.target()instanceof s.G)return this.transform({y:t},e),this;var i=new s.Number(t);return i.relative=e,this.add("y",i)},cx:function(t){return this.add("cx",new s.Number(t))},cy:function(t){return this.add("cy",new s.Number(t))},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},size:function(t,e){var i;this.target()instanceof s.Text?this.attr("font-size",t):(t&&e||(i=this.target().bbox()),t||(t=i.width/i.height*e),e||(e=i.height/i.width*t),this.add("width",new s.Number(t)).add("height",new s.Number(e)));return this},width:function(t){return this.add("width",new s.Number(t))},height:function(t){return this.add("height",new s.Number(t))},plot:function(t,e,i,s){return 4==arguments.length?this.plot([t,e,i,s]):this.add("plot",new(this.target().morphArray)(t))},leading:function(t){return this.target().leading?this.add("leading",new s.Number(t)):this},viewbox:function(t,e,i,a){return this.target()instanceof s.Container&&this.add("viewbox",new s.ViewBox(t,e,i,a)),this},update:function(t){if(this.target()instanceof s.Stop){if("number"==typeof t||t instanceof s.Number)return this.update({offset:arguments[0],color:arguments[1],opacity:arguments[2]});null!=t.opacity&&this.attr("stop-opacity",t.opacity),null!=t.color&&this.attr("stop-color",t.color),null!=t.offset&&this.attr("offset",t.offset)}return this}}),s.Box=s.invent({create:function(e,i,a,n){if(!("object"!==t(e)||e instanceof s.Element))return s.Box.call(this,null!=e.left?e.left:e.x,null!=e.top?e.top:e.y,e.width,e.height);4==arguments.length&&(this.x=e,this.y=i,this.width=a,this.height=n),m(this)},extend:{merge:function(t){var e=new this.constructor;return e.x=Math.min(this.x,t.x),e.y=Math.min(this.y,t.y),e.width=Math.max(this.x+this.width,t.x+t.width)-e.x,e.height=Math.max(this.y+this.height,t.y+t.height)-e.y,m(e)},transform:function(t){var e,i=1/0,a=-1/0,n=1/0,r=-1/0;return[new s.Point(this.x,this.y),new s.Point(this.x2,this.y),new s.Point(this.x,this.y2),new s.Point(this.x2,this.y2)].forEach(function(e){e=e.transform(t),i=Math.min(i,e.x),a=Math.max(a,e.x),n=Math.min(n,e.y),r=Math.max(r,e.y)}),(e=new this.constructor).x=i,e.width=a-i,e.y=n,e.height=r-n,m(e),e}}}),s.BBox=s.invent({create:function(t){if(s.Box.apply(this,[].slice.call(arguments)),t instanceof s.Element){var e;try{if(!i.documentElement.contains){for(var a=t.node;a.parentNode;)a=a.parentNode;if(a!=i)throw new Error("Element not in the dom")}e=t.node.getBBox()}catch(i){if(t instanceof s.Shape){s.parser.draw||s.prepare();var n=t.clone(s.parser.draw.instance).show();e=n.node.getBBox(),n.remove()}else e={x:t.node.clientLeft,y:t.node.clientTop,width:t.node.clientWidth,height:t.node.clientHeight}}s.Box.call(this,e)}},inherit:s.Box,parent:s.Element,construct:{bbox:function(){return new s.BBox(this)}}}),s.BBox.prototype.constructor=s.BBox,s.extend(s.Element,{tbox:function(){return console.warn("Use of TBox is deprecated and mapped to RBox. Use .rbox() instead."),this.rbox(this.doc())}}),s.RBox=s.invent({create:function(t){s.Box.apply(this,[].slice.call(arguments)),t instanceof s.Element&&s.Box.call(this,t.node.getBoundingClientRect())},inherit:s.Box,parent:s.Element,extend:{addOffset:function(){return this.x+=e.pageXOffset,this.y+=e.pageYOffset,this}},construct:{rbox:function(t){return t?new s.RBox(this).transform(t.screenCTM().inverse()):new s.RBox(this).addOffset()}}}),s.RBox.prototype.constructor=s.RBox,s.Matrix=s.invent({create:function(e){var i,a=p([1,0,0,1,0,0]);for(e=e instanceof s.Element?e.matrixify():"string"==typeof e?p(e.split(s.regex.delimiter).map(parseFloat)):6==arguments.length?p([].slice.call(arguments)):Array.isArray(e)?p(e):"object"===t(e)?e:a,i=y.length-1;i>=0;--i)this[y[i]]=null!=e[y[i]]?e[y[i]]:a[y[i]]},extend:{extract:function(){var t=f(this,0,1),e=f(this,1,0),i=180/Math.PI*Math.atan2(t.y,t.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(i*Math.PI/180)+this.f*Math.sin(i*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(i*Math.PI/180)+this.e*Math.sin(-i*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),skewX:-i,skewY:180/Math.PI*Math.atan2(e.y,e.x),scaleX:Math.sqrt(this.a*this.a+this.b*this.b),scaleY:Math.sqrt(this.c*this.c+this.d*this.d),rotation:i,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new s.Matrix(this)}},clone:function(){return new s.Matrix(this)},morph:function(t){return this.destination=new s.Matrix(t),this},at:function(t){return this.destination?new s.Matrix({a:this.a+(this.destination.a-this.a)*t,b:this.b+(this.destination.b-this.b)*t,c:this.c+(this.destination.c-this.c)*t,d:this.d+(this.destination.d-this.d)*t,e:this.e+(this.destination.e-this.e)*t,f:this.f+(this.destination.f-this.f)*t}):this},multiply:function(t){return new s.Matrix(this.native().multiply(function(t){t instanceof s.Matrix||(t=new s.Matrix(t));return t}(t).native()))},inverse:function(){return new s.Matrix(this.native().inverse())},translate:function(t,e){return new s.Matrix(this.native().translate(t||0,e||0))},scale:function(t,e,i,a){return 1==arguments.length?e=t:3==arguments.length&&(a=i,i=e,e=t),this.around(i,a,new s.Matrix(t,0,0,e,0,0))},rotate:function(t,e,i){return t=s.utils.radians(t),this.around(e,i,new s.Matrix(Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t),0,0))},flip:function(t,e){return"x"==t?this.scale(-1,1,e,0):"y"==t?this.scale(1,-1,0,e):this.scale(-1,-1,t,null!=e?e:t)},skew:function(t,e,i,a){return 1==arguments.length?e=t:3==arguments.length&&(a=i,i=e,e=t),t=s.utils.radians(t),e=s.utils.radians(e),this.around(i,a,new s.Matrix(1,Math.tan(e),Math.tan(t),1,0,0))},skewX:function(t,e,i){return this.skew(t,0,e,i)},skewY:function(t,e,i){return this.skew(0,t,e,i)},around:function(t,e,i){return this.multiply(new s.Matrix(1,0,0,1,t||0,e||0)).multiply(i).multiply(new s.Matrix(1,0,0,1,-t||0,-e||0))},native:function(){for(var t=s.parser.native.createSVGMatrix(),e=y.length-1;e>=0;e--)t[y[e]]=this[y[e]];return t},toString:function(){return"matrix("+v(this.a)+","+v(this.b)+","+v(this.c)+","+v(this.d)+","+v(this.e)+","+v(this.f)+")"}},parent:s.Element,construct:{ctm:function(){return new s.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof s.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new s.Matrix(e)}return new s.Matrix(this.node.getScreenCTM())}}}),s.Point=s.invent({create:function(e,i){var s;s=Array.isArray(e)?{x:e[0],y:e[1]}:"object"===t(e)?{x:e.x,y:e.y}:null!=e?{x:e,y:null!=i?i:e}:{x:0,y:0},this.x=s.x,this.y=s.y},extend:{clone:function(){return new s.Point(this)},morph:function(t,e){return this.destination=new s.Point(t,e),this},at:function(t){return this.destination?new s.Point({x:this.x+(this.destination.x-this.x)*t,y:this.y+(this.destination.y-this.y)*t}):this},native:function(){var t=s.parser.native.createSVGPoint();return t.x=this.x,t.y=this.y,t},transform:function(t){return new s.Point(this.native().matrixTransform(t.native()))}}}),s.extend(s.Element,{point:function(t,e){return new s.Point(t,e).transform(this.screenCTM().inverse())}}),s.extend(s.Element,{attr:function(e,i,a){if(null==e){for(e={},a=(i=this.node.attributes).length-1;a>=0;a--)e[i[a].nodeName]=s.regex.isNumber.test(i[a].nodeValue)?parseFloat(i[a].nodeValue):i[a].nodeValue;return e}if("object"===t(e))for(i in e)this.attr(i,e[i]);else if(null===i)this.node.removeAttribute(e);else{if(null==i)return null==(i=this.node.getAttribute(e))?s.defaults.attrs[e]:s.regex.isNumber.test(i)?parseFloat(i):i;"stroke-width"==e?this.attr("stroke",parseFloat(i)>0?this._stroke:null):"stroke"==e&&(this._stroke=i),"fill"!=e&&"stroke"!=e||(s.regex.isImage.test(i)&&(i=this.doc().defs().image(i,0,0)),i instanceof s.Image&&(i=this.doc().defs().pattern(0,0,function(){this.add(i)}))),"number"==typeof i?i=new s.Number(i):s.Color.isColor(i)?i=new s.Color(i):Array.isArray(i)&&(i=new s.Array(i)),"leading"==e?this.leading&&this.leading(i):"string"==typeof a?this.node.setAttributeNS(a,e,i.toString()):this.node.setAttribute(e,i.toString()),!this.rebuild||"font-size"!=e&&"x"!=e||this.rebuild(e,i)}return this}}),s.extend(s.Element,{transform:function(e,i){var a,n;if("object"!==t(e))return a=new s.Matrix(this).extract(),"string"==typeof e?a[e]:a;if(a=new s.Matrix(this),i=!!i||!!e.relative,null!=e.a)a=i?a.multiply(new s.Matrix(e)):new s.Matrix(e);else if(null!=e.rotation)x(e,this),a=i?a.rotate(e.rotation,e.cx,e.cy):a.rotate(e.rotation-a.extract().rotation,e.cx,e.cy);else if(null!=e.scale||null!=e.scaleX||null!=e.scaleY){if(x(e,this),e.scaleX=null!=e.scale?e.scale:null!=e.scaleX?e.scaleX:1,e.scaleY=null!=e.scale?e.scale:null!=e.scaleY?e.scaleY:1,!i){var r=a.extract();e.scaleX=1*e.scaleX/r.scaleX,e.scaleY=1*e.scaleY/r.scaleY}a=a.scale(e.scaleX,e.scaleY,e.cx,e.cy)}else if(null!=e.skew||null!=e.skewX||null!=e.skewY){if(x(e,this),e.skewX=null!=e.skew?e.skew:null!=e.skewX?e.skewX:0,e.skewY=null!=e.skew?e.skew:null!=e.skewY?e.skewY:0,!i){r=a.extract();a=a.multiply((new s.Matrix).skew(r.skewX,r.skewY,e.cx,e.cy).inverse())}a=a.skew(e.skewX,e.skewY,e.cx,e.cy)}else e.flip?("x"==e.flip||"y"==e.flip?e.offset=null==e.offset?this.bbox()["c"+e.flip]:e.offset:null==e.offset?(n=this.bbox(),e.flip=n.cx,e.offset=n.cy):e.flip=e.offset,a=(new s.Matrix).flip(e.flip,e.offset)):null==e.x&&null==e.y||(i?a=a.translate(e.x,e.y):(null!=e.x&&(a.e=e.x),null!=e.y&&(a.f=e.y)));return this.attr("transform",a)}}),s.extend(s.FX,{transform:function(e,i){var a,n,r=this.target();return"object"!==t(e)?(a=new s.Matrix(r).extract(),"string"==typeof e?a[e]:a):(i=!!i||!!e.relative,null!=e.a?a=new s.Matrix(e):null!=e.rotation?(x(e,r),a=new s.Rotate(e.rotation,e.cx,e.cy)):null!=e.scale||null!=e.scaleX||null!=e.scaleY?(x(e,r),e.scaleX=null!=e.scale?e.scale:null!=e.scaleX?e.scaleX:1,e.scaleY=null!=e.scale?e.scale:null!=e.scaleY?e.scaleY:1,a=new s.Scale(e.scaleX,e.scaleY,e.cx,e.cy)):null!=e.skewX||null!=e.skewY?(x(e,r),e.skewX=null!=e.skewX?e.skewX:0,e.skewY=null!=e.skewY?e.skewY:0,a=new s.Skew(e.skewX,e.skewY,e.cx,e.cy)):e.flip?("x"==e.flip||"y"==e.flip?e.offset=null==e.offset?r.bbox()["c"+e.flip]:e.offset:null==e.offset?(n=r.bbox(),e.flip=n.cx,e.offset=n.cy):e.flip=e.offset,a=(new s.Matrix).flip(e.flip,e.offset)):null==e.x&&null==e.y||(a=new s.Translate(e.x,e.y)),a?(a.relative=i,this.last().transforms.push(a),this._callStart()):this)}}),s.extend(s.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(s.regex.transforms).slice(0,-1).map(function(t){var e=t.trim().split("(");return[e[0],e[1].split(s.regex.delimiter).map(function(t){return parseFloat(t)})]}).reduce(function(t,e){return"matrix"==e[0]?t.multiply(p(e[1])):t[e[0]].apply(t,e[1])},new s.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),s.Transformation=s.invent({create:function(e,i){if(arguments.length>1&&"boolean"!=typeof i)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(e))for(var s=0,a=this.arguments.length;s<a;++s)this[this.arguments[s]]=e[s];else if("object"===t(e))for(s=0,a=this.arguments.length;s<a;++s)this[this.arguments[s]]=e[this.arguments[s]];this.inversed=!1,!0===i&&(this.inversed=!0)},extend:{arguments:[],method:"",at:function(t){for(var e=[],i=0,a=this.arguments.length;i<a;++i)e.push(this[this.arguments[i]]);var n=this._undo||new s.Matrix;return n=(new s.Matrix).morph(s.Matrix.prototype[this.method].apply(n,e)).at(t),this.inversed?n.inverse():n},undo:function(t){for(var e=0,i=this.arguments.length;e<i;++e)t[this.arguments[e]]=void 0===this[this.arguments[e]]?0:t[this.arguments[e]];return t.cx=this.cx,t.cy=this.cy,this._undo=new(s[d(this.method)])(t,!0).at(1),this}}}),s.Translate=s.invent({parent:s.Matrix,inherit:s.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:["transformedX","transformedY"],method:"translate"}}),s.Rotate=s.invent({parent:s.Matrix,inherit:s.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:["rotation","cx","cy"],method:"rotate",at:function(t){var e=(new s.Matrix).rotate((new s.Number).morph(this.rotation-(this._undo?this._undo.rotation:0)).at(t),this.cx,this.cy);return this.inversed?e.inverse():e},undo:function(t){return this._undo=t,this}}}),s.Scale=s.invent({parent:s.Matrix,inherit:s.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:["scaleX","scaleY","cx","cy"],method:"scale"}}),s.Skew=s.invent({parent:s.Matrix,inherit:s.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:["skewX","skewY","cx","cy"],method:"skew"}}),s.extend(s.Element,{style:function(e,i){if(0==arguments.length)return this.node.style.cssText||"";if(arguments.length<2)if("object"===t(e))for(i in e)this.style(i,e[i]);else{if(!s.regex.isCss.test(e))return this.node.style[c(e)];for(e=e.split(/\s*;\s*/).filter(function(t){return!!t}).map(function(t){return t.split(/\s*:\s*/)});i=e.pop();)this.style(i[0],i[1])}else this.node.style[c(e)]=null===i||s.regex.isBlank.test(i)?"":i;return this}}),s.Parent=s.invent({create:function(t){this.constructor.call(this,t)},inherit:s.Element,extend:{children:function(){return s.utils.map(s.utils.filterSVGElements(this.node.childNodes),function(t){return s.adopt(t)})},add:function(t,e){return null==e?this.node.appendChild(t.node):t.node!=this.node.childNodes[e]&&this.node.insertBefore(t.node,this.node.childNodes[e]),this},put:function(t,e){return this.add(t,e),t},has:function(t){return this.index(t)>=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return s.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){var i,a,n=this.children();for(i=0,a=n.length;i<a;i++)n[i]instanceof s.Element&&t.apply(n[i],[i,n]),e&&n[i]instanceof s.Container&&n[i].each(t,e);return this},removeElement:function(t){return this.node.removeChild(t.node),this},clear:function(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return delete this._defs,this},defs:function(){return this.doc().defs()}}}),s.extend(s.Parent,{ungroup:function(t,e){return 0===e||this instanceof s.Defs||this.node==s.parser.draw?this:(t=t||(this instanceof s.Doc?this:this.parent(s.Parent)),e=e||1/0,this.each(function(){return this instanceof s.Defs?this:this instanceof s.Parent?this.ungroup(t,e-1):this.toParent(t)}),this.node.firstChild||this.remove(),this)},flatten:function(t,e){return this.ungroup(t,e)}}),s.Container=s.invent({create:function(t){this.constructor.call(this,t)},inherit:s.Parent}),s.ViewBox=s.invent({create:function(e){var i,a,n,r,o,l,h,c=1,d=1,u=/[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/gi;if(e instanceof s.Element){for(l=e,h=e,o=(e.attr("viewBox")||"").match(u),e.bbox,n=new s.Number(e.width()),r=new s.Number(e.height());"%"==n.unit;)c*=n.value,n=new s.Number(l instanceof s.Doc?l.parent().offsetWidth:l.parent().width()),l=l.parent();for(;"%"==r.unit;)d*=r.value,r=new s.Number(h instanceof s.Doc?h.parent().offsetHeight:h.parent().height()),h=h.parent();this.x=0,this.y=0,this.width=n*c,this.height=r*d,this.zoom=1,o&&(i=parseFloat(o[0]),a=parseFloat(o[1]),n=parseFloat(o[2]),r=parseFloat(o[3]),this.zoom=this.width/this.height>n/r?this.height/r:this.width/n,this.x=i,this.y=a,this.width=n,this.height=r)}else e="string"==typeof e?e.match(u).map(function(t){return parseFloat(t)}):Array.isArray(e)?e:"object"===t(e)?[e.x,e.y,e.width,e.height]:4==arguments.length?[].slice.call(arguments):[0,0,0,0],this.x=e[0],this.y=e[1],this.width=e[2],this.height=e[3]},extend:{toString:function(){return this.x+" "+this.y+" "+this.width+" "+this.height},morph:function(t,e,i,a){return this.destination=new s.ViewBox(t,e,i,a),this},at:function(t){return this.destination?new s.ViewBox([this.x+(this.destination.x-this.x)*t,this.y+(this.destination.y-this.y)*t,this.width+(this.destination.width-this.width)*t,this.height+(this.destination.height-this.height)*t]):this}},parent:s.Container,construct:{viewbox:function(t,e,i,a){return 0==arguments.length?new s.ViewBox(this):this.attr("viewBox",new s.ViewBox(t,e,i,a))}}}),["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","touchstart","touchmove","touchleave","touchend","touchcancel"].forEach(function(t){s.Element.prototype[t]=function(e){return s.on(this.node,t,e),this}}),s.listeners=[],s.handlerMap=[],s.listenerId=0,s.on=function(t,e,i,a,n){var r=i.bind(a||t.instance||t),o=(s.handlerMap.indexOf(t)+1||s.handlerMap.push(t))-1,l=e.split(".")[0],h=e.split(".")[1]||"*";s.listeners[o]=s.listeners[o]||{},s.listeners[o][l]=s.listeners[o][l]||{},s.listeners[o][l][h]=s.listeners[o][l][h]||{},i._svgjsListenerId||(i._svgjsListenerId=++s.listenerId),s.listeners[o][l][h][i._svgjsListenerId]=r,t.addEventListener(l,r,n||!1)},s.off=function(t,e,i){var a=s.handlerMap.indexOf(t),n=e&&e.split(".")[0],r=e&&e.split(".")[1],o="";if(-1!=a)if(i){if("function"==typeof i&&(i=i._svgjsListenerId),!i)return;s.listeners[a][n]&&s.listeners[a][n][r||"*"]&&(t.removeEventListener(n,s.listeners[a][n][r||"*"][i],!1),delete s.listeners[a][n][r||"*"][i])}else if(r&&n){if(s.listeners[a][n]&&s.listeners[a][n][r]){for(i in s.listeners[a][n][r])s.off(t,[n,r].join("."),i);delete s.listeners[a][n][r]}}else if(r)for(e in s.listeners[a])for(o in s.listeners[a][e])r===o&&s.off(t,[e,r].join("."));else if(n){if(s.listeners[a][n]){for(o in s.listeners[a][n])s.off(t,[n,o].join("."));delete s.listeners[a][n]}}else{for(e in s.listeners[a])s.off(t,e);delete s.listeners[a],delete s.handlerMap[a]}},s.extend(s.Element,{on:function(t,e,i,a){return s.on(this.node,t,e,i,a),this},off:function(t,e){return s.off(this.node,t,e),this},fire:function(t,i){return t instanceof e.Event?this.node.dispatchEvent(t):this.node.dispatchEvent(t=new s.CustomEvent(t,{detail:i,cancelable:!0})),this._event=t,this},event:function(){return this._event}}),s.Defs=s.invent({create:"defs",inherit:s.Container}),s.G=s.invent({create:"g",inherit:s.Container,extend:{x:function(t){return null==t?this.transform("x"):this.transform({x:t-this.x()},!0)},y:function(t){return null==t?this.transform("y"):this.transform({y:t-this.y()},!0)},cx:function(t){return null==t?this.gbox().cx:this.x(t-this.gbox().width/2)},cy:function(t){return null==t?this.gbox().cy:this.y(t-this.gbox().height/2)},gbox:function(){var t=this.bbox(),e=this.transform();return t.x+=e.x,t.x2+=e.x,t.cx+=e.x,t.y+=e.y,t.y2+=e.y,t.cy+=e.y,t}},construct:{group:function(){return this.put(new s.G)}}}),s.Doc=s.invent({create:function(t){t&&("svg"==(t="string"==typeof t?i.getElementById(t):t).nodeName?this.constructor.call(this,t):(this.constructor.call(this,s.create("svg")),t.appendChild(this.node),this.size("100%","100%")),this.namespace().defs())},inherit:s.Container,extend:{namespace:function(){return this.attr({xmlns:s.ns,version:"1.1"}).attr("xmlns:xlink",s.xlink,s.xmlns).attr("xmlns:svgjs",s.svgjs,s.xmlns)},defs:function(){var t;this._defs||((t=this.node.getElementsByTagName("defs")[0])?this._defs=s.adopt(t):this._defs=new s.Defs,this.node.appendChild(this._defs.node));return this._defs},parent:function(){return this.node.parentNode&&"#document"!=this.node.parentNode.nodeName?this.node.parentNode:null},spof:function(){var t=this.node.getScreenCTM();return t&&this.style("left",-t.e%1+"px").style("top",-t.f%1+"px"),this},remove:function(){return this.parent()&&this.parent().removeChild(this.node),this},clear:function(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return delete this._defs,s.parser.draw&&!s.parser.draw.parentNode&&this.node.appendChild(s.parser.draw),this},clone:function(t){this.writeDataToDom();var e=this.node,i=b(e.cloneNode(!0));return t?(t.node||t).appendChild(i.node):e.parentNode.insertBefore(i.node,e.nextSibling),i}}}),s.extend(s.Element,{siblings:function(){return this.parent().children()},position:function(){return this.parent().index(this)},next:function(){return this.siblings()[this.position()+1]},previous:function(){return this.siblings()[this.position()-1]},forward:function(){var t=this.position()+1,e=this.parent();return e.removeElement(this).add(this,t),e instanceof s.Doc&&e.node.appendChild(e.defs().node),this},backward:function(){var t=this.position();return t>0&&this.parent().removeElement(this).add(this,t-1),this},front:function(){var t=this.parent();return t.node.appendChild(this.node),t instanceof s.Doc&&t.node.appendChild(t.defs().node),this},back:function(){return this.position()>0&&this.parent().removeElement(this).add(this,0),this},before:function(t){t.remove();var e=this.position();return this.parent().add(t,e),this},after:function(t){t.remove();var e=this.position();return this.parent().add(t,e+1),this}}),s.Mask=s.invent({create:function(){this.constructor.call(this,s.create("mask")),this.targets=[]},inherit:s.Container,extend:{remove:function(){for(var t=this.targets.length-1;t>=0;t--)this.targets[t]&&this.targets[t].unmask();return this.targets=[],s.Element.prototype.remove.call(this),this}},construct:{mask:function(){return this.defs().put(new s.Mask)}}}),s.extend(s.Element,{maskWith:function(t){return this.masker=t instanceof s.Mask?t:this.parent().mask().add(t),this.masker.targets.push(this),this.attr("mask",'url("#'+this.masker.attr("id")+'")')},unmask:function(){return delete this.masker,this.attr("mask",null)}}),s.ClipPath=s.invent({create:function(){this.constructor.call(this,s.create("clipPath")),this.targets=[]},inherit:s.Container,extend:{remove:function(){for(var t=this.targets.length-1;t>=0;t--)this.targets[t]&&this.targets[t].unclip();return this.targets=[],this.parent().removeElement(this),this}},construct:{clip:function(){return this.defs().put(new s.ClipPath)}}}),s.extend(s.Element,{clipWith:function(t){return this.clipper=t instanceof s.ClipPath?t:this.parent().clip().add(t),this.clipper.targets.push(this),this.attr("clip-path",'url("#'+this.clipper.attr("id")+'")')},unclip:function(){return delete this.clipper,this.attr("clip-path",null)}}),s.Gradient=s.invent({create:function(t){this.constructor.call(this,s.create(t+"Gradient")),this.type=t},inherit:s.Container,extend:{at:function(t,e,i){return this.put(new s.Stop).update(t,e,i)},update:function(t){return this.clear(),"function"==typeof t&&t.call(this,this),this},fill:function(){return"url(#"+this.id()+")"},toString:function(){return this.fill()},attr:function(t,e,i){return"transform"==t&&(t="gradientTransform"),s.Container.prototype.attr.call(this,t,e,i)}},construct:{gradient:function(t,e){return this.defs().gradient(t,e)}}}),s.extend(s.Gradient,s.FX,{from:function(t,e){return"radial"==(this._target||this).type?this.attr({fx:new s.Number(t),fy:new s.Number(e)}):this.attr({x1:new s.Number(t),y1:new s.Number(e)})},to:function(t,e){return"radial"==(this._target||this).type?this.attr({cx:new s.Number(t),cy:new s.Number(e)}):this.attr({x2:new s.Number(t),y2:new s.Number(e)})}}),s.extend(s.Defs,{gradient:function(t,e){return this.put(new s.Gradient(t)).update(e)}}),s.Stop=s.invent({create:"stop",inherit:s.Element,extend:{update:function(t){return("number"==typeof t||t instanceof s.Number)&&(t={offset:arguments[0],color:arguments[1],opacity:arguments[2]}),null!=t.opacity&&this.attr("stop-opacity",t.opacity),null!=t.color&&this.attr("stop-color",t.color),null!=t.offset&&this.attr("offset",new s.Number(t.offset)),this}}}),s.Pattern=s.invent({create:"pattern",inherit:s.Container,extend:{fill:function(){return"url(#"+this.id()+")"},update:function(t){return this.clear(),"function"==typeof t&&t.call(this,this),this},toString:function(){return this.fill()},attr:function(t,e,i){return"transform"==t&&(t="patternTransform"),s.Container.prototype.attr.call(this,t,e,i)}},construct:{pattern:function(t,e,i){return this.defs().pattern(t,e,i)}}}),s.extend(s.Defs,{pattern:function(t,e,i){return this.put(new s.Pattern).update(i).attr({x:0,y:0,width:t,height:e,patternUnits:"userSpaceOnUse"})}}),s.Shape=s.invent({create:function(t){this.constructor.call(this,t)},inherit:s.Element}),s.Bare=s.invent({create:function(t,e){if(this.constructor.call(this,s.create(t)),e)for(var i in e.prototype)"function"==typeof e.prototype[i]&&(this[i]=e.prototype[i])},inherit:s.Element,extend:{words:function(t){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return this.node.appendChild(i.createTextNode(t)),this}}}),s.extend(s.Parent,{element:function(t,e){return this.put(new s.Bare(t,e))}}),s.Symbol=s.invent({create:"symbol",inherit:s.Container,construct:{symbol:function(){return this.put(new s.Symbol)}}}),s.Use=s.invent({create:"use",inherit:s.Shape,extend:{element:function(t,e){return this.attr("href",(e||"")+"#"+t,s.xlink)}},construct:{use:function(t,e){return this.put(new s.Use).element(t,e)}}}),s.Rect=s.invent({create:"rect",inherit:s.Shape,construct:{rect:function(t,e){return this.put(new s.Rect).size(t,e)}}}),s.Circle=s.invent({create:"circle",inherit:s.Shape,construct:{circle:function(t){return this.put(new s.Circle).rx(new s.Number(t).divide(2)).move(0,0)}}}),s.extend(s.Circle,s.FX,{rx:function(t){return this.attr("r",t)},ry:function(t){return this.rx(t)}}),s.Ellipse=s.invent({create:"ellipse",inherit:s.Shape,construct:{ellipse:function(t,e){return this.put(new s.Ellipse).size(t,e).move(0,0)}}}),s.extend(s.Ellipse,s.Rect,s.FX,{rx:function(t){return this.attr("rx",t)},ry:function(t){return this.attr("ry",t)}}),s.extend(s.Circle,s.Ellipse,{x:function(t){return null==t?this.cx()-this.rx():this.cx(t+this.rx())},y:function(t){return null==t?this.cy()-this.ry():this.cy(t+this.ry())},cx:function(t){return null==t?this.attr("cx"):this.attr("cx",t)},cy:function(t){return null==t?this.attr("cy"):this.attr("cy",t)},width:function(t){return null==t?2*this.rx():this.rx(new s.Number(t).divide(2))},height:function(t){return null==t?2*this.ry():this.ry(new s.Number(t).divide(2))},size:function(t,e){var i=g(this,t,e);return this.rx(new s.Number(i.width).divide(2)).ry(new s.Number(i.height).divide(2))}}),s.Line=s.invent({create:"line",inherit:s.Shape,extend:{array:function(){return new s.PointArray([[this.attr("x1"),this.attr("y1")],[this.attr("x2"),this.attr("y2")]])},plot:function(t,e,i,a){return null==t?this.array():(t=void 0!==e?{x1:t,y1:e,x2:i,y2:a}:new s.PointArray(t).toLine(),this.attr(t))},move:function(t,e){return this.attr(this.array().move(t,e).toLine())},size:function(t,e){var i=g(this,t,e);return this.attr(this.array().size(i.width,i.height).toLine())}},construct:{line:function(t,e,i,a){return s.Line.prototype.plot.apply(this.put(new s.Line),null!=t?[t,e,i,a]:[0,0,0,0])}}}),s.Polyline=s.invent({create:"polyline",inherit:s.Shape,construct:{polyline:function(t){return this.put(new s.Polyline).plot(t||new s.PointArray)}}}),s.Polygon=s.invent({create:"polygon",inherit:s.Shape,construct:{polygon:function(t){return this.put(new s.Polygon).plot(t||new s.PointArray)}}}),s.extend(s.Polyline,s.Polygon,{array:function(){return this._array||(this._array=new s.PointArray(this.attr("points")))},plot:function(t){return null==t?this.array():this.clear().attr("points","string"==typeof t?t:this._array=new s.PointArray(t))},clear:function(){return delete this._array,this},move:function(t,e){return this.attr("points",this.array().move(t,e))},size:function(t,e){var i=g(this,t,e);return this.attr("points",this.array().size(i.width,i.height))}}),s.extend(s.Line,s.Polyline,s.Polygon,{morphArray:s.PointArray,x:function(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)},y:function(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)},width:function(t){var e=this.bbox();return null==t?e.width:this.size(t,e.height)},height:function(t){var e=this.bbox();return null==t?e.height:this.size(e.width,t)}}),s.Path=s.invent({create:"path",inherit:s.Shape,extend:{morphArray:s.PathArray,array:function(){return this._array||(this._array=new s.PathArray(this.attr("d")))},plot:function(t){return null==t?this.array():this.clear().attr("d","string"==typeof t?t:this._array=new s.PathArray(t))},clear:function(){return delete this._array,this},move:function(t,e){return this.attr("d",this.array().move(t,e))},x:function(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)},y:function(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)},size:function(t,e){var i=g(this,t,e);return this.attr("d",this.array().size(i.width,i.height))},width:function(t){return null==t?this.bbox().width:this.size(t,this.bbox().height)},height:function(t){return null==t?this.bbox().height:this.size(this.bbox().width,t)}},construct:{path:function(t){return this.put(new s.Path).plot(t||new s.PathArray)}}}),s.Image=s.invent({create:"image",inherit:s.Shape,extend:{load:function(t){if(!t)return this;var i=this,a=new e.Image;return s.on(a,"load",function(){s.off(a);var e=i.parent(s.Pattern);null!==e&&(0==i.width()&&0==i.height()&&i.size(a.width,a.height),e&&0==e.width()&&0==e.height()&&e.size(i.width(),i.height()),"function"==typeof i._loaded&&i._loaded.call(i,{width:a.width,height:a.height,ratio:a.width/a.height,url:t}))}),s.on(a,"error",function(t){s.off(a),"function"==typeof i._error&&i._error.call(i,t)}),this.attr("href",a.src=this.src=t,s.xlink)},loaded:function(t){return this._loaded=t,this},error:function(t){return this._error=t,this}},construct:{image:function(t,e,i){return this.put(new s.Image).load(t).size(e||0,i||e||0)}}}),s.Text=s.invent({create:function(){this.constructor.call(this,s.create("text")),this.dom.leading=new s.Number(1.3),this._rebuild=!0,this._build=!1,this.attr("font-family",s.defaults.attrs["font-family"])},inherit:s.Shape,extend:{x:function(t){return null==t?this.attr("x"):this.attr("x",t)},y:function(t){var e=this.attr("y"),i="number"==typeof e?e-this.bbox().y:0;return null==t?"number"==typeof e?e-i:e:this.attr("y","number"==typeof t.valueOf()?t+i:t)},cx:function(t){return null==t?this.bbox().cx:this.x(t-this.bbox().width/2)},cy:function(t){return null==t?this.bbox().cy:this.y(t-this.bbox().height/2)},text:function(t){if(void 0===t){t="";for(var e=this.node.childNodes,i=0,a=e.length;i<a;++i)0!=i&&3!=e[i].nodeType&&1==s.adopt(e[i]).dom.newLined&&(t+="\n"),t+=e[i].textContent;return t}if(this.clear().build(!0),"function"==typeof t)t.call(this,this);else{i=0;for(var n=(t=t.split("\n")).length;i<n;i++)this.tspan(t[i]).newLine()}return this.build(!1).rebuild()},size:function(t){return this.attr("font-size",t).rebuild()},leading:function(t){return null==t?this.dom.leading:(this.dom.leading=new s.Number(t),this.rebuild())},lines:function(){var t=(this.textPath&&this.textPath()||this).node,e=s.utils.map(s.utils.filterSVGElements(t.childNodes),function(t){return s.adopt(t)});return new s.Set(e)},rebuild:function(t){if("boolean"==typeof t&&(this._rebuild=t),this._rebuild){var e=this,i=0,a=this.dom.leading*new s.Number(this.attr("font-size"));this.lines().each(function(){this.dom.newLined&&(e.textPath()||this.attr("x",e.attr("x")),"\n"==this.text()?i+=a:(this.attr("dy",a+i),i=0))}),this.fire("rebuild")}return this},build:function(t){return this._build=!!t,this},setData:function(t){return this.dom=t,this.dom.leading=new s.Number(t.leading||1.3),this}},construct:{text:function(t){return this.put(new s.Text).text(t)},plain:function(t){return this.put(new s.Text).plain(t)}}}),s.Tspan=s.invent({create:"tspan",inherit:s.Shape,extend:{text:function(t){return null==t?this.node.textContent+(this.dom.newLined?"\n":""):("function"==typeof t?t.call(this,this):this.plain(t),this)},dx:function(t){return this.attr("dx",t)},dy:function(t){return this.attr("dy",t)},newLine:function(){var t=this.parent(s.Text);return this.dom.newLined=!0,this.dy(t.dom.leading*t.attr("font-size")).attr("x",t.x())}}}),s.extend(s.Text,s.Tspan,{plain:function(t){return!1===this._build&&this.clear(),this.node.appendChild(i.createTextNode(t)),this},tspan:function(t){var e=(this.textPath&&this.textPath()||this).node,i=new s.Tspan;return!1===this._build&&this.clear(),e.appendChild(i.node),i.text(t)},clear:function(){for(var t=(this.textPath&&this.textPath()||this).node;t.hasChildNodes();)t.removeChild(t.lastChild);return this},length:function(){return this.node.getComputedTextLength()}}),s.TextPath=s.invent({create:"textPath",inherit:s.Parent,parent:s.Text,construct:{morphArray:s.PathArray,path:function(t){for(var e=new s.TextPath,i=this.doc().defs().path(t);this.node.hasChildNodes();)e.node.appendChild(this.node.firstChild);return this.node.appendChild(e.node),e.attr("href","#"+i,s.xlink),this},array:function(){var t=this.track();return t?t.array():null},plot:function(t){var e=this.track(),i=null;return e&&(i=e.plot(t)),null==t?i:this},track:function(){var t=this.textPath();if(t)return t.reference("href")},textPath:function(){if(this.node.firstChild&&"textPath"==this.node.firstChild.nodeName)return s.adopt(this.node.firstChild)}}}),s.Nested=s.invent({create:function(){this.constructor.call(this,s.create("svg")),this.style("overflow","visible")},inherit:s.Container,construct:{nested:function(){return this.put(new s.Nested)}}}),s.A=s.invent({create:"a",inherit:s.Container,extend:{to:function(t){return this.attr("href",t,s.xlink)},show:function(t){return this.attr("show",t,s.xlink)},target:function(t){return this.attr("target",t)}},construct:{link:function(t){return this.put(new s.A).to(t)}}}),s.extend(s.Element,{linkTo:function(t){var e=new s.A;return"function"==typeof t?t.call(e,e):e.to(t),this.parent().put(e).put(this)}}),s.Marker=s.invent({create:"marker",inherit:s.Container,extend:{width:function(t){return this.attr("markerWidth",t)},height:function(t){return this.attr("markerHeight",t)},ref:function(t,e){return this.attr("refX",t).attr("refY",e)},update:function(t){return this.clear(),"function"==typeof t&&t.call(this,this),this},toString:function(){return"url(#"+this.id()+")"}},construct:{marker:function(t,e,i){return this.defs().marker(t,e,i)}}}),s.extend(s.Defs,{marker:function(t,e,i){return this.put(new s.Marker).size(t,e).ref(t/2,e/2).viewbox(0,0,t,e).attr("orient","auto").update(i)}}),s.extend(s.Line,s.Polyline,s.Polygon,s.Path,{marker:function(t,e,i,a){var n=["marker"];return"all"!=t&&n.push(t),n=n.join("-"),t=arguments[1]instanceof s.Marker?arguments[1]:this.doc().marker(e,i,a),this.attr(n,t)}});var l={stroke:["color","width","opacity","linecap","linejoin","miterlimit","dasharray","dashoffset"],fill:["color","opacity","rule"],prefix:function(t,e){return"color"==e?t:t+"-"+e}};function h(t,e,i,a){return i+a.replace(s.regex.dots," .")}function c(t){return t.toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()})}function d(t){return t.charAt(0).toUpperCase()+t.slice(1)}function u(t){var e=t.toString(16);return 1==e.length?"0"+e:e}function g(t,e,i){if(null==e||null==i){var s=t.bbox();null==e?e=s.width/s.height*i:null==i&&(i=s.height/s.width*e)}return{width:e,height:i}}function f(t,e,i){return{x:e*t.a+i*t.c+0,y:e*t.b+i*t.d+0}}function p(t){return{a:t[0],b:t[1],c:t[2],d:t[3],e:t[4],f:t[5]}}function x(t,e){t.cx=null==t.cx?e.bbox().cx:t.cx,t.cy=null==t.cy?e.bbox().cy:t.cy}function b(t){for(var i=t.childNodes.length-1;i>=0;i--)t.childNodes[i]instanceof e.SVGElement&&b(t.childNodes[i]);return s.adopt(t).id(s.eid(t.nodeName))}function m(t){return null==t.x&&(t.x=0,t.y=0,t.width=0,t.height=0),t.w=t.width,t.h=t.height,t.x2=t.x+t.width,t.y2=t.y+t.height,t.cx=t.x+t.width/2,t.cy=t.y+t.height/2,t}function v(t){return Math.abs(t)>1e-37?t:0}["fill","stroke"].forEach(function(t){var e,i={};i[t]=function(i){if(void 0===i)return this;if("string"==typeof i||s.Color.isRgb(i)||i&&"function"==typeof i.fill)this.attr(t,i);else for(e=l[t].length-1;e>=0;e--)null!=i[l[t][e]]&&this.attr(l.prefix(t,l[t][e]),i[l[t][e]]);return this},s.extend(s.Element,s.FX,i)}),s.extend(s.Element,s.FX,{rotate:function(t,e,i){return this.transform({rotation:t,cx:e,cy:i})},skew:function(t,e,i,s){return 1==arguments.length||3==arguments.length?this.transform({skew:t,cx:e,cy:i}):this.transform({skewX:t,skewY:e,cx:i,cy:s})},scale:function(t,e,i,s){return 1==arguments.length||3==arguments.length?this.transform({scale:t,cx:e,cy:i}):this.transform({scaleX:t,scaleY:e,cx:i,cy:s})},translate:function(t,e){return this.transform({x:t,y:e})},flip:function(t,e){return e="number"==typeof t?t:e,this.transform({flip:t||"both",offset:e})},matrix:function(t){return this.attr("transform",new s.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr("opacity",t)},dx:function(t){return this.x(new s.Number(t).plus(this instanceof s.FX?0:this.x()),!0)},dy:function(t){return this.y(new s.Number(t).plus(this instanceof s.FX?0:this.y()),!0)},dmove:function(t,e){return this.dx(t).dy(e)}}),s.extend(s.Rect,s.Ellipse,s.Circle,s.Gradient,s.FX,{radius:function(t,e){var i=(this._target||this).type;return"radial"==i||"circle"==i?this.attr("r",new s.Number(t)):this.rx(t).ry(null==e?t:e)}}),s.extend(s.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),s.extend(s.Parent,s.Text,s.Tspan,s.FX,{font:function(e,i){if("object"===t(e))for(i in e)this.font(i,e[i]);return"leading"==e?this.leading(i):"anchor"==e?this.attr("text-anchor",i):"size"==e||"family"==e||"weight"==e||"stretch"==e||"variant"==e||"style"==e?this.attr("font-"+e,i):this.attr(e,i)}}),s.Set=s.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){var t,e,i=[].slice.call(arguments);for(t=0,e=i.length;t<e;t++)this.members.push(i[t]);return this},remove:function(t){var e=this.index(t);return e>-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e<i;e++)t.apply(this.members[e],[e,this.members]);return this},clear:function(){return this.members=[],this},length:function(){return this.members.length},has:function(t){return this.index(t)>=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members},bbox:function(){if(0==this.members.length)return new s.RBox;var t=this.members[0].rbox(this.members[0].doc());return this.each(function(){t=t.merge(this.rbox(this.doc()))}),t}},construct:{set:function(t){return new s.Set(t)}}}),s.FX.Set=s.invent({create:function(t){this.set=t}}),s.Set.inherit=function(){var t=[];for(var e in s.Shape.prototype)"function"==typeof s.Shape.prototype[e]&&"function"!=typeof s.Set.prototype[e]&&t.push(e);for(var e in t.forEach(function(t){s.Set.prototype[t]=function(){for(var e=0,i=this.members.length;e<i;e++)this.members[e]&&"function"==typeof this.members[e][t]&&this.members[e][t].apply(this.members[e],arguments);return"animate"==t?this.fx||(this.fx=new s.FX.Set(this)):this}}),t=[],s.FX.prototype)"function"==typeof s.FX.prototype[e]&&"function"!=typeof s.FX.Set.prototype[e]&&t.push(e);t.forEach(function(t){s.FX.Set.prototype[t]=function(){for(var e=0,i=this.set.members.length;e<i;e++)this.set.members[e].fx[t].apply(this.set.members[e].fx,arguments);return this}})},s.extend(s.Element,{data:function(e,i,s){if("object"===t(e))for(i in e)this.data(i,e[i]);else if(arguments.length<2)try{return JSON.parse(this.attr("data-"+e))}catch(t){return this.attr("data-"+e)}else this.attr("data-"+e,null===i?null:!0===s||"string"==typeof i||"number"==typeof i?i:JSON.stringify(i));return this}}),s.extend(s.Element,{remember:function(e,i){if("object"===t(arguments[0]))for(var i in e)this.remember(i,e[i]);else{if(1==arguments.length)return this.memory()[e];this.memory()[e]=i}return this},forget:function(){if(0==arguments.length)this._memory={};else for(var t=arguments.length-1;t>=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),s.get=function(t){var e=i.getElementById(function(t){var e=(t||"").toString().match(s.regex.reference);if(e)return e[1]}(t)||t);return s.adopt(e)},s.select=function(t,e){return new s.Set(s.utils.map((e||i).querySelectorAll(t),function(t){return s.adopt(t)}))},s.extend(s.Parent,{select:function(t){return s.select(t,this.node)}});var y="abcdef".split("");if("function"!=typeof e.CustomEvent){var w=function(t,e){e=e||{bubbles:!1,cancelable:!1,detail:void 0};var s=i.createEvent("CustomEvent");return s.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),s};w.prototype=e.Event.prototype,s.CustomEvent=w}else s.CustomEvent=e.CustomEvent;return function(t){for(var i=0,s=["moz","webkit"],a=0;a<s.length&&!e.requestAnimationFrame;++a)t.requestAnimationFrame=t[s[a]+"RequestAnimationFrame"],t.cancelAnimationFrame=t[s[a]+"CancelAnimationFrame"]||t[s[a]+"CancelRequestAnimationFrame"];t.requestAnimationFrame=t.requestAnimationFrame||function(e){var s=(new Date).getTime(),a=Math.max(0,16-(s-i)),n=t.setTimeout(function(){e(s+a)},a);return i=s+a,n},t.cancelAnimationFrame=t.cancelAnimationFrame||t.clearTimeout}(e),s},"function"==typeof define&&define.amd?define(function(){return at(st,st.document)}):"object"===("undefined"==typeof exports?"undefined":t(exports))&&"undefined"!=typeof module?module.exports=st.document?at(st,st.document):function(t){return at(t,t.document)}:st.SVG=at(st,st.document),function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr("in")&&this.autoSetIn&&t.attr("in",this.source),t.attr("result")||t.attr("result",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,s,a){return this.put(new SVG.DisplacementMapEffect(t,e,i,s,a))},specularLighting:function(t,e,i,s){return this.put(new SVG.SpecularLightingEffect(t,e,i,s))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,s,a){return this.put(new SVG.TurbulenceEffect(t,e,i,s,a))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return"function"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,s){return this.parent()&&this.parent().displacementMap(this,t,e,i,s)},specularLighting:function(t,e,i,s){return this.parent()&&this.parent().specularLighting(t,e,i,s).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,s,a){return this.parent()&&this.parent().turbulence(t,e,i,s,a).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr("in",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||"normal"})},colorMatrix:function(t,e){"matrix"==t&&(e=a(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=a(t),this.attr({order:Math.sqrt(t.split(" ").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr("flood-color",t),null!=e&&this.attr("flood-opacity",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr("href",t,SVG.xlink)},displacementMap:function(t,e,i,s,a){this.attr({in:t,in2:e,scale:i,xChannelSelector:s,yChannelSelector:a})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr("stdDeviation",function(t){if(!Array.isArray(t))return t;for(var e=0,i=t.length,s=[];e<i;e++)s.push(t[e]);return s.join(" ")}(Array.prototype.slice.call(arguments))):this.attr("stdDeviation","0 0")},morphology:function(t,e){this.attr({operator:t,radius:e})},tile:function(){},turbulence:function(t,e,i,s,a){this.attr({numOctaves:e,seed:i,stitchTiles:s,baseFrequency:t,type:a})}},i={merge:function(){var t;if(arguments[0]instanceof SVG.Set){var e=this;arguments[0].each(function(t){this instanceof SVG.MergeNode?e.put(this):(this instanceof SVG.Effect||this instanceof SVG.ParentEffect)&&e.put(new SVG.MergeNode(this))})}else{t=Array.isArray(arguments[0])?arguments[0]:arguments;for(var i=0;i<t.length;i++)t[i]instanceof SVG.MergeNode?this.put(t[i]):this.put(new SVG.MergeNode(t[i]))}},componentTransfer:function(t){if(this.rgb=new SVG.Set,["r","g","b","a"].forEach(function(t){this[t]=new(SVG["Func"+t.toUpperCase()])("identity"),this.rgb.add(this[t]),this.node.appendChild(this[t].node)}.bind(this)),t)for(var e in t.rgb&&(["r","g","b"].forEach(function(e){this[e].attr(t.rgb)}.bind(this)),delete t.rgb),t)this[e].attr(t[e])},diffuseLighting:function(t,e,i){this.attr({surfaceScale:t,diffuseConstant:e,kernelUnitLength:i})},specularLighting:function(t,e,i,s){this.attr({surfaceScale:t,diffuseConstant:e,specularExponent:i,kernelUnitLength:s})}},s={distantLight:function(t,e){this.attr({azimuth:t,elevation:e})},pointLight:function(t,e,i){this.attr({x:t,y:e,z:i})},spotLight:function(t,e,i,s,a,n){this.attr({x:t,y:e,z:i,pointsAtX:s,pointsAtY:a,pointsAtZ:n})},mergeNode:function(t){this.attr("in",t)}};function a(t){return Array.isArray(t)&&(t=new SVG.Array(t)),t.toString().replace(/^\s+/,"").replace(/\s+$/,"").replace(/\s+/g," ")}function n(){var t=function(){};for(var e in"function"==typeof arguments[arguments.length-1]&&(t=arguments[arguments.length-1],Array.prototype.splice.call(arguments,arguments.length-1,1)),arguments)for(var i in arguments[e])t(arguments[e][i],i,arguments[e])}["r","g","b","a"].forEach(function(t){s["Func"+t.toUpperCase()]=function(t){switch(this.attr("type",t),t){case"table":this.attr("tableValues",arguments[1]);break;case"linear":this.attr("slope",arguments[1]),this.attr("intercept",arguments[2]);break;case"gamma":this.attr("amplitude",arguments[1]),this.attr("exponent",arguments[2]),this.attr("offset",arguments[2])}}}),n(e,function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i+"Effect"]=SVG.invent({create:function(){this.constructor.call(this,SVG.create("fe"+i)),t.apply(this,arguments),this.result(this.attr("id")+"Out")},inherit:SVG.Effect,extend:{}})}),n(i,function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i+"Effect"]=SVG.invent({create:function(){this.constructor.call(this,SVG.create("fe"+i)),t.apply(this,arguments),this.result(this.attr("id")+"Out")},inherit:SVG.ParentEffect,extend:{}})}),n(s,function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i]=SVG.invent({create:function(){this.constructor.call(this,SVG.create("fe"+i)),t.apply(this,arguments)},inherit:SVG.ChildEffect,extend:{}})}),SVG.extend(SVG.MergeEffect,{in:function(t){return t instanceof SVG.MergeNode?this.add(t,0):this.add(new SVG.MergeNode(t),0),this}}),SVG.extend(SVG.CompositeEffect,SVG.BlendEffect,SVG.DisplacementMapEffect,{in2:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in2")+'"]').get(0)||this.attr("in2"):this.attr("in2",t)}}),SVG.filter={sepiatone:[.343,.669,.119,0,0,.249,.626,.13,0,0,.172,.334,.111,0,0,0,0,0,1,0]}}.call(void 0),function(){function t(t,a,n,r,o,l,h){for(var c=t.slice(a,n||h),d=r.slice(o,l||h),u=0,g={pos:[0,0],start:[0,0]},f={pos:[0,0],start:[0,0]};;){if(c[u]=e.call(g,c[u]),d[u]=e.call(f,d[u]),c[u][0]!=d[u][0]||"M"==c[u][0]||"A"==c[u][0]&&(c[u][4]!=d[u][4]||c[u][5]!=d[u][5])?(Array.prototype.splice.apply(c,[u,1].concat(s.call(g,c[u]))),Array.prototype.splice.apply(d,[u,1].concat(s.call(f,d[u])))):(c[u]=i.call(g,c[u]),d[u]=i.call(f,d[u])),++u==c.length&&u==d.length)break;u==c.length&&c.push(["C",g.pos[0],g.pos[1],g.pos[0],g.pos[1],g.pos[0],g.pos[1]]),u==d.length&&d.push(["C",f.pos[0],f.pos[1],f.pos[0],f.pos[1],f.pos[0],f.pos[1]])}return{start:c,dest:d}}function e(t){switch(t[0]){case"z":case"Z":t[0]="L",t[1]=this.start[0],t[2]=this.start[1];break;case"H":t[0]="L",t[2]=this.pos[1];break;case"V":t[0]="L",t[2]=t[1],t[1]=this.pos[0];break;case"T":t[0]="Q",t[3]=t[1],t[4]=t[2],t[1]=this.reflection[1],t[2]=this.reflection[0];break;case"S":t[0]="C",t[6]=t[4],t[5]=t[3],t[4]=t[2],t[3]=t[1],t[2]=this.reflection[1],t[1]=this.reflection[0]}return t}function i(t){var e=t.length;return this.pos=[t[e-2],t[e-1]],-1!="SCQT".indexOf(t[0])&&(this.reflection=[2*this.pos[0]-t[e-4],2*this.pos[1]-t[e-3]]),t}function s(t){var e=[t];switch(t[0]){case"M":return this.pos=this.start=[t[1],t[2]],e;case"L":t[5]=t[3]=t[1],t[6]=t[4]=t[2],t[1]=this.pos[0],t[2]=this.pos[1];break;case"Q":t[6]=t[4],t[5]=t[3],t[4]=1*t[4]/3+2*t[2]/3,t[3]=1*t[3]/3+2*t[1]/3,t[2]=1*this.pos[1]/3+2*t[2]/3,t[1]=1*this.pos[0]/3+2*t[1]/3;break;case"A":t=(e=function(t,e){var i,s,a,n,r,o,l,h,c,d,u,g,f,p,x,b,m,v,y,w,k,A,S,C,L,z,P=Math.abs(e[1]),M=Math.abs(e[2]),E=e[3]%360,T=e[4],X=e[5],I=e[6],Y=e[7],F=new SVG.Point(t),R=new SVG.Point(I,Y),D=[];if(0===P||0===M||F.x===R.x&&F.y===R.y)return[["C",F.x,F.y,R.x,R.y,R.x,R.y]];i=new SVG.Point((F.x-R.x)/2,(F.y-R.y)/2).transform((new SVG.Matrix).rotate(E)),(s=i.x*i.x/(P*P)+i.y*i.y/(M*M))>1&&(s=Math.sqrt(s),P*=s,M*=s);a=(new SVG.Matrix).rotate(E).scale(1/P,1/M).rotate(-E),F=F.transform(a),R=R.transform(a),n=[R.x-F.x,R.y-F.y],o=n[0]*n[0]+n[1]*n[1],r=Math.sqrt(o),n[0]/=r,n[1]/=r,l=o<4?Math.sqrt(1-o/4):0,T===X&&(l*=-1);h=new SVG.Point((R.x+F.x)/2+l*-n[1],(R.y+F.y)/2+l*n[0]),c=new SVG.Point(F.x-h.x,F.y-h.y),d=new SVG.Point(R.x-h.x,R.y-h.y),u=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(u*=-1);g=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(g*=-1);X&&u>g&&(g+=2*Math.PI);!X&&u<g&&(g-=2*Math.PI);for(p=Math.ceil(2*Math.abs(u-g)/Math.PI),b=[],m=u,f=(g-u)/p,x=4*Math.tan(f/4)/3,k=0;k<=p;k++)y=Math.cos(m),v=Math.sin(m),w=new SVG.Point(h.x+y,h.y+v),b[k]=[new SVG.Point(w.x+x*v,w.y-x*y),w,new SVG.Point(w.x-x*v,w.y+x*y)],m+=f;for(b[0][0]=b[0][1].clone(),b[b.length-1][2]=b[b.length-1][1].clone(),a=(new SVG.Matrix).rotate(E).scale(P,M).rotate(-E),k=0,A=b.length;k<A;k++)b[k][0]=b[k][0].transform(a),b[k][1]=b[k][1].transform(a),b[k][2]=b[k][2].transform(a);for(k=1,A=b.length;k<A;k++)w=b[k-1][2],S=w.x,C=w.y,w=b[k][0],L=w.x,z=w.y,w=b[k][1],I=w.x,Y=w.y,D.push(["C",S,C,L,z,I,Y]);return D}(this.pos,t))[0]}return t[0]="C",this.pos=[t[5],t[6]],this.reflection=[2*t[5]-t[3],2*t[6]-t[4]],e}function a(t,e){if(!1===e)return!1;for(var i=e,s=t.length;i<s;++i)if("M"==t[i][0])return i;return!1}SVG.extend(SVG.PathArray,{morph:function(e){for(var i=this.value,s=this.parse(e),n=0,r=0,o=!1,l=!1;!1!==n||!1!==r;){var h;o=a(i,!1!==n&&n+1),l=a(s,!1!==r&&r+1),!1===n&&(n=0==(h=new SVG.PathArray(c.start).bbox()).height||0==h.width?i.push(i[0])-1:i.push(["M",h.x+h.width/2,h.y+h.height/2])-1),!1===r&&(r=0==(h=new SVG.PathArray(c.dest).bbox()).height||0==h.width?s.push(s[0])-1:s.push(["M",h.x+h.width/2,h.y+h.height/2])-1);var c=t(i,n,o,s,r,l);i=i.slice(0,n).concat(c.start,!1===o?[]:i.slice(o)),s=s.slice(0,r).concat(c.dest,!1===l?[]:s.slice(l)),n=!1!==o&&n+c.start.length,r=!1!==l&&r+c.dest.length}return this.value=i,this.destination=new SVG.PathArray,this.destination.value=s,this}})}(),function(){function t(t){t.remember("_draggable",this),this.el=t}t.prototype.init=function(t,e){var i=this;this.constraint=t,this.value=e,this.el.on("mousedown.drag",function(t){i.start(t)}),this.el.on("touchstart.drag",function(t){i.start(t)})},t.prototype.transformPoint=function(t,e){var i=(t=t||window.event).changedTouches&&t.changedTouches[0]||t;return this.p.x=i.pageX-(e||0),this.p.y=i.pageY,this.p.matrixTransform(this.m)},t.prototype.getBBox=function(){var t=this.el.bbox();return this.el instanceof SVG.Nested&&(t=this.el.rbox()),(this.el instanceof SVG.G||this.el instanceof SVG.Use||this.el instanceof SVG.Nested)&&(t.x=this.el.x(),t.y=this.el.y()),t},t.prototype.start=function(t){if("click"!=t.type&&"mousedown"!=t.type&&"mousemove"!=t.type||1==(t.which||t.buttons)){var e=this;this.el.fire("beforedrag",{event:t,handler:this}),this.parent=this.parent||this.el.parent(SVG.Nested)||this.el.parent(SVG.Doc),this.p=this.parent.node.createSVGPoint(),this.m=this.el.node.getScreenCTM().inverse();var i,s=this.getBBox();if(this.el instanceof SVG.Text)switch(i=this.el.node.getComputedTextLength(),this.el.attr("text-anchor")){case"middle":i/=2;break;case"start":i=0}this.startPoints={point:this.transformPoint(t,i),box:s,transform:this.el.transform()},SVG.on(window,"mousemove.drag",function(t){e.drag(t)}),SVG.on(window,"touchmove.drag",function(t){e.drag(t)}),SVG.on(window,"mouseup.drag",function(t){e.end(t)}),SVG.on(window,"touchend.drag",function(t){e.end(t)}),this.el.fire("dragstart",{event:t,p:this.startPoints.point,m:this.m,handler:this}),t.preventDefault(),t.stopPropagation()}},t.prototype.drag=function(t){var e=this.getBBox(),i=this.transformPoint(t),s=this.startPoints.box.x+i.x-this.startPoints.point.x,a=this.startPoints.box.y+i.y-this.startPoints.point.y,n=this.constraint,r=i.x-this.startPoints.point.x,o=i.y-this.startPoints.point.y,l=new CustomEvent("dragmove",{detail:{event:t,p:i,m:this.m,handler:this},cancelable:!0});if(this.el.fire(l),l.defaultPrevented)return i;if("function"==typeof n){var h=n.call(this.el,s,a,this.m);"boolean"==typeof h&&(h={x:h,y:h}),!0===h.x?this.el.x(s):!1!==h.x&&this.el.x(h.x),!0===h.y?this.el.y(a):!1!==h.y&&this.el.y(h.y)}else"object"==typeof n&&(null!=n.minX&&s<n.minX?s=n.minX:null!=n.maxX&&s>n.maxX-e.width&&(s=n.maxX-e.width),null!=n.minY&&a<n.minY?a=n.minY:null!=n.maxY&&a>n.maxY-e.height&&(a=n.maxY-e.height),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:r,y:o},!0):this.el.move(s,a));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire("dragend",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,i){"function"!=typeof e&&"object"!=typeof e||(i=e,e=!0);var s=this.remember("_draggable")||new t(this);return(e=void 0===e||e)?s.init(i||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1}}t.prototype.init=function(t,e){var i=this.el.bbox();for(var s in this.options={},this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==["line","polyline","polygon"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set?this:(this.pointSelection.set=this.parent.set(),this.drawCircles(),this)},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map(function(e){return[e[0]-t.x,e[1]-t.y]})},t.prototype.drawCircles=function(){for(var t=this,e=this.getPointArray(),i=0,s=e.length;i<s;++i){var a=function(e){return function(i){(i=i||window.event).preventDefault?i.preventDefault():i.returnValue=!1,i.stopPropagation();var s=i.pageX||i.touches[0].pageX,a=i.pageY||i.touches[0].pageY;t.el.fire("point",{x:s,y:a,i:e,event:i})}}(i);this.pointSelection.set.add(this.nested.circle(this.options.radius).center(e[i][0],e[i][1]).addClass(this.options.classPoints).addClass(this.options.classPoints+"_point").on("touchstart",a).on("mousedown",a))}},t.prototype.updatePointSelection=function(){var t=this.getPointArray();this.pointSelection.set.each(function(e){this.cx()===t[e][0]&&this.cy()===t[e][1]||this.center(t[e][0],t[e][1])})},t.prototype.updateRectSelection=function(){var t=this.el.bbox();this.rectSelection.set.get(0).attr({width:t.width,height:t.height}),this.options.points&&(this.rectSelection.set.get(2).center(t.width,0),this.rectSelection.set.get(3).center(t.width,t.height),this.rectSelection.set.get(4).center(0,t.height),this.rectSelection.set.get(5).center(t.width/2,0),this.rectSelection.set.get(6).center(t.width,t.height/2),this.rectSelection.set.get(7).center(t.width/2,t.height),this.rectSelection.set.get(8).center(0,t.height/2)),this.options.rotationPoint&&(this.options.points?this.rectSelection.set.get(9).center(t.width/2,20):this.rectSelection.set.get(1).center(t.width/2,20))},t.prototype.selectRect=function(t){var e=this,i=this.el.bbox();function s(t){return function(i){(i=i||window.event).preventDefault?i.preventDefault():i.returnValue=!1,i.stopPropagation();var s=i.pageX||i.touches[0].pageX,a=i.pageY||i.touches[0].pageY;e.el.fire(t,{x:s,y:a,event:i})}}if(this.rectSelection.isSelected=t,this.rectSelection.set=this.rectSelection.set||this.parent.set(),this.rectSelection.set.get(0)||this.rectSelection.set.add(this.nested.rect(i.width,i.height).addClass(this.options.classRect)),this.options.points&&!this.rectSelection.set.get(1)){var a="touchstart",n="mousedown";this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0,0).attr("class",this.options.classPoints+"_lt").on(n,s("lt")).on(a,s("lt"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width,0).attr("class",this.options.classPoints+"_rt").on(n,s("rt")).on(a,s("rt"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width,i.height).attr("class",this.options.classPoints+"_rb").on(n,s("rb")).on(a,s("rb"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0,i.height).attr("class",this.options.classPoints+"_lb").on(n,s("lb")).on(a,s("lb"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width/2,0).attr("class",this.options.classPoints+"_t").on(n,s("t")).on(a,s("t"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width,i.height/2).attr("class",this.options.classPoints+"_r").on(n,s("r")).on(a,s("r"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width/2,i.height).attr("class",this.options.classPoints+"_b").on(n,s("b")).on(a,s("b"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0,i.height/2).attr("class",this.options.classPoints+"_l").on(n,s("l")).on(a,s("l"))),this.rectSelection.set.each(function(){this.addClass(e.options.classPoints)})}if(this.options.rotationPoint&&(this.options.points&&!this.rectSelection.set.get(9)||!this.options.points&&!this.rectSelection.set.get(1))){var r=function(t){(t=t||window.event).preventDefault?t.preventDefault():t.returnValue=!1,t.stopPropagation();var i=t.pageX||t.touches[0].pageX,s=t.pageY||t.touches[0].pageY;e.el.fire("rot",{x:i,y:s,event:t})};this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width/2,20).attr("class",this.options.classPoints+"_rot").on("touchstart",r).on("mousedown",r))}},t.prototype.handler=function(){var t=this.el.bbox();this.nested.matrix(new SVG.Matrix(this.el).translate(t.x,t.y)),this.rectSelection.isSelected&&this.updateRectSelection(),this.pointSelection.isSelected&&this.updatePointSelection()},t.prototype.observe=function(){var t=this;if(MutationObserver)if(this.rectSelection.isSelected||this.pointSelection.isSelected)this.observerInst=this.observerInst||new MutationObserver(function(){t.handler()}),this.observerInst.observe(this.el.node,{attributes:!0});else try{this.observerInst.disconnect(),delete this.observerInst}catch(t){}else this.el.off("DOMAttrModified.select"),(this.rectSelection.isSelected||this.pointSelection.isSelected)&&this.el.on("DOMAttrModified.select",function(){t.handler()})},t.prototype.cleanup=function(){!this.rectSelection.isSelected&&this.rectSelection.set&&(this.rectSelection.set.each(function(){this.remove()}),this.rectSelection.set.clear(),delete this.rectSelection.set),!this.pointSelection.isSelected&&this.pointSelection.set&&(this.pointSelection.set.each(function(){this.remove()}),this.pointSelection.set.clear(),delete this.pointSelection.set),this.pointSelection.isSelected||this.rectSelection.isSelected||(this.nested.remove(),delete this.nested)},SVG.extend(SVG.Element,{selectize:function(e,i){return"object"==typeof e&&(i=e,e=!0),(this.remember("_selectHandler")||new t(this)).init(void 0===e||e,i||{}),this}}),SVG.Element.prototype.selectize.defaults={points:!0,classRect:"svg_select_boundingRect",classPoints:"svg_select_points",radius:7,rotationPoint:!0,deepSelect:!1}}(),function(){(function(){function t(t){t.remember("_resizeHandler",this),this.el=t,this.parameters={},this.lastUpdateCall=null,this.p=t.doc().node.createSVGPoint()}t.prototype.transformPoint=function(t,e,i){return this.p.x=t-(this.offset.x-window.pageXOffset),this.p.y=e-(this.offset.y-window.pageYOffset),this.p.matrixTransform(i||this.m)},t.prototype._extractPosition=function(t){return{x:null!=t.clientX?t.clientX:t.touches[0].clientX,y:null!=t.clientY?t.clientY:t.touches[0].clientY}},t.prototype.init=function(t){var e=this;if(this.stop(),"stop"!==t){for(var i in this.options={},this.el.resize.defaults)this.options[i]=this.el.resize.defaults[i],void 0!==t[i]&&(this.options[i]=t[i]);this.el.on("lt.resize",function(t){e.resize(t||window.event)}),this.el.on("rt.resize",function(t){e.resize(t||window.event)}),this.el.on("rb.resize",function(t){e.resize(t||window.event)}),this.el.on("lb.resize",function(t){e.resize(t||window.event)}),this.el.on("t.resize",function(t){e.resize(t||window.event)}),this.el.on("r.resize",function(t){e.resize(t||window.event)}),this.el.on("b.resize",function(t){e.resize(t||window.event)}),this.el.on("l.resize",function(t){e.resize(t||window.event)}),this.el.on("rot.resize",function(t){e.resize(t||window.event)}),this.el.on("point.resize",function(t){e.resize(t||window.event)}),this.update()}},t.prototype.stop=function(){return this.el.off("lt.resize"),this.el.off("rt.resize"),this.el.off("rb.resize"),this.el.off("lb.resize"),this.el.off("t.resize"),this.el.off("r.resize"),this.el.off("b.resize"),this.el.off("l.resize"),this.el.off("rot.resize"),this.el.off("point.resize"),this},t.prototype.resize=function(t){var e=this;this.m=this.el.node.getScreenCTM().inverse(),this.offset={x:window.pageXOffset,y:window.pageYOffset};var i=this._extractPosition(t.detail.event);if(this.parameters={type:this.el.type,p:this.transformPoint(i.x,i.y),x:t.detail.x,y:t.detail.y,box:this.el.bbox(),rotation:this.el.transform().rotation},"text"===this.el.type&&(this.parameters.fontSize=this.el.attr()["font-size"]),void 0!==t.detail.i){var s=this.el.array().valueOf();this.parameters.i=t.detail.i,this.parameters.pointCoords=[s[t.detail.i][0],s[t.detail.i][1]]}switch(t.type){case"lt":this.calc=function(t,e){var i=this.snapToGrid(t,e);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case"rt":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case"rb":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case"lb":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case"t":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case"r":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case"b":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case"l":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case"rot":this.calc=function(t,e){var i=t+this.parameters.p.x,s=e+this.parameters.p.y,a=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),n=180*(Math.atan2(s-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2)-a)/Math.PI;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(this.parameters.rotation+n-n%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),s=this.el.array().valueOf();s[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],s[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(s)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,"touchmove.resize",function(t){e.update(t||window.event)}),SVG.on(window,"touchend.resize",function(){e.done()}),SVG.on(window,"mousemove.resize",function(t){e.update(t||window.event)}),SVG.on(window,"mouseup.resize",function(){e.done()})},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),s=i.x-this.parameters.p.x,a=i.y-this.parameters.p.y;this.lastUpdateCall=[s,a],this.calc(s,a),this.el.fire("resizing",{dx:s,dy:a,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},t.prototype.snapToGrid=function(t,e,i,s){var a;return void 0!==s?a=[(i+t)%this.options.snapToGrid,(s+e)%this.options.snapToGrid]:(i=null==i?3:i,a=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t-=Math.abs(a[0])<this.options.snapToGrid/2?a[0]:a[0]-(t<0?-this.options.snapToGrid:this.options.snapToGrid),e-=Math.abs(a[1])<this.options.snapToGrid/2?a[1]:a[1]-(e<0?-this.options.snapToGrid:this.options.snapToGrid),this.constraintToBox(t,e,i,s)},t.prototype.constraintToBox=function(t,e,i,s){var a,n,r=this.options.constraint||{};return void 0!==s?(a=i,n=s):(a=this.parameters.box.x+(1&i?0:this.parameters.box.width),n=this.parameters.box.y+(2&i?0:this.parameters.box.height)),void 0!==r.minX&&a+t<r.minX&&(t=r.minX-a),void 0!==r.maxX&&a+t>r.maxX&&(t=r.maxX-a),void 0!==r.minY&&n+e<r.minY&&(e=r.minY-n),void 0!==r.maxY&&n+e>r.maxY&&(e=r.maxY-n),[t,e]},t.prototype.checkAspectRatio=function(t){if(!this.options.saveAspectRatio)return t;var e=t.slice(),i=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],a=this.parameters.box.height-t[1],n=s/a;return n<i?e[1]=s/i-this.parameters.box.height:n>i&&(e[0]=this.parameters.box.width-a*i),e},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}();return function(t,e){void 0===e&&(e={});var i=e.insertAt;if(t&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===i&&s.firstChild?s.insertBefore(a,s.firstChild):s.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}}('.apexcharts-canvas {\n  position: relative;\n  user-select: none;\n  /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */\n}\n\n/* scrollbar is not visible by default for legend, hence forcing the visibility */\n.apexcharts-canvas ::-webkit-scrollbar {\n  -webkit-appearance: none;\n  width: 6px;\n}\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n  border-radius: 4px;\n  background-color: rgba(0,0,0,.5);\n  box-shadow: 0 0 1px rgba(255,255,255,.5);\n  -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5);\n}\n.apexcharts-canvas.dark {\n  background: #343F57;\n}\n\n.apexcharts-inner {\n  position: relative;\n}\n\n.legend-mouseover-inactive {\n  transition: 0.15s ease all;\n  opacity: 0.20;\n}\n\n.apexcharts-series-collapsed {\n  opacity: 0;\n}\n\n.apexcharts-gridline, .apexcharts-text {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip {\n  border-radius: 5px;\n  box-shadow: 2px 2px 6px -4px #999;\n  cursor: default;\n  font-size: 14px;\n  left: 62px;\n  opacity: 0;\n  pointer-events: none;\n  position: absolute;\n  top: 20px;\n  overflow: hidden;\n  white-space: nowrap;\n  z-index: 12;\n  transition: 0.15s ease all;\n}\n.apexcharts-tooltip.light {\n  border: 1px solid #e3e3e3;\n  background: rgba(255, 255, 255, 0.96);\n}\n.apexcharts-tooltip.dark {\n  color: #fff;\n  background: rgba(30,30,30, 0.8);\n}\n.apexcharts-tooltip * {\n  font-family: inherit;\n}\n\n.apexcharts-tooltip .apexcharts-marker,\n.apexcharts-area-series .apexcharts-area,\n.apexcharts-line {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-tooltip-title {\n  padding: 6px;\n  font-size: 15px;\n  margin-bottom: 4px;\n}\n.apexcharts-tooltip.light .apexcharts-tooltip-title {\n  background: #ECEFF1;\n  border-bottom: 1px solid #ddd;\n}\n.apexcharts-tooltip.dark .apexcharts-tooltip-title {\n  background: rgba(0, 0, 0, 0.7);\n  border-bottom: 1px solid #333;\n}\n\n.apexcharts-tooltip-text-value,\n.apexcharts-tooltip-text-z-value {\n  display: inline-block;\n  font-weight: 600;\n  margin-left: 5px;\n}\n\n.apexcharts-tooltip-text-z-label:empty,\n.apexcharts-tooltip-text-z-value:empty {\n  display: none;\n}\n\n.apexcharts-tooltip-text-value, \n.apexcharts-tooltip-text-z-value {\n  font-weight: 600;\n}\n\n.apexcharts-tooltip-marker {\n  width: 12px;\n  height: 12px;\n  position: relative;\n  top: 0px;\n  margin-right: 10px;\n  border-radius: 50%;\n}\n\n.apexcharts-tooltip-series-group {\n  padding: 0 10px;\n  display: none;\n  text-align: left;\n  justify-content: left;\n  align-items: center;\n}\n\n.apexcharts-tooltip-series-group.active .apexcharts-tooltip-marker {\n  opacity: 1;\n}\n.apexcharts-tooltip-series-group.active, .apexcharts-tooltip-series-group:last-child {\n  padding-bottom: 4px;\n}\n.apexcharts-tooltip-series-group-hidden {\n  opacity: 0;\n  height: 0;\n  line-height: 0;\n  padding: 0 !important;\n}\n.apexcharts-tooltip-y-group {\n  padding: 6px 0 5px;\n}\n.apexcharts-tooltip-candlestick {\n  padding: 4px 8px;\n}\n.apexcharts-tooltip-candlestick > div {\n  margin: 4px 0;\n}\n.apexcharts-tooltip-candlestick span.value {\n  font-weight: bold;\n}\n\n.apexcharts-tooltip-rangebar {\n  padding: 5px 8px;\n}\n\n.apexcharts-tooltip-rangebar .category {\n  font-weight: 600;\n  color: #777;\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n  font-weight: bold;\n  display: block;\n  margin-bottom: 5px;\n}\n\n.apexcharts-xaxistooltip {\n  opacity: 0;\n  padding: 9px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-xaxistooltip:after, .apexcharts-xaxistooltip:before {\n\tleft: 50%;\n\tborder: solid transparent;\n\tcontent: " ";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n\n.apexcharts-xaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-left: -6px;\n}\n.apexcharts-xaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-left: -7px;\n}\n\n.apexcharts-xaxistooltip-bottom:after, .apexcharts-xaxistooltip-bottom:before {\n  bottom: 100%;\n}\n\n.apexcharts-xaxistooltip-top:after, .apexcharts-xaxistooltip-top:before {\n  top: 100%;\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n  border-bottom-color: #ECEFF1;\n}\n.apexcharts-xaxistooltip-bottom:before {\n  border-bottom-color: #90A4AE;\n}\n\n.apexcharts-xaxistooltip-bottom.dark:after {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-bottom.dark:before {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-top:after {\n  border-top-color:#ECEFF1\n}\n.apexcharts-xaxistooltip-top:before {\n  border-top-color: #90A4AE;\n}\n.apexcharts-xaxistooltip-top.dark:after {\n  border-top-color:rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-top.dark:before {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n\n\n.apexcharts-xaxistooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-yaxistooltip {\n  opacity: 0;\n  padding: 4px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n}\n\n.apexcharts-yaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-yaxistooltip:after, .apexcharts-yaxistooltip:before {\n\ttop: 50%;\n\tborder: solid transparent;\n\tcontent: " ";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n.apexcharts-yaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-top: -6px;\n}\n.apexcharts-yaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-top: -7px;\n}\n\n.apexcharts-yaxistooltip-left:after, .apexcharts-yaxistooltip-left:before {\n  left: 100%;\n}\n\n.apexcharts-yaxistooltip-right:after, .apexcharts-yaxistooltip-right:before {\n  right: 100%;\n}\n\n.apexcharts-yaxistooltip-left:after {\n  border-left-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-left:before {\n  border-left-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-left.dark:after {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-left.dark:before {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-right:after {\n  border-right-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-right:before {\n  border-right-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-right.dark:after {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-right.dark:before {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip.active {\n  opacity: 1;\n}\n\n.apexcharts-xcrosshairs, .apexcharts-ycrosshairs {\n  pointer-events: none;\n  opacity: 0;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xcrosshairs.active, .apexcharts-ycrosshairs.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-ycrosshairs-hidden {\n  opacity: 0;\n}\n\n.apexcharts-zoom-rect {\n  pointer-events: none;\n}\n.apexcharts-selection-rect {\n  cursor: move;\n}\n\n.svg_select_points, .svg_select_points_rot {\n  opacity: 0;\n  visibility: hidden;\n}\n.svg_select_points_l, .svg_select_points_r {\n  cursor: ew-resize;\n  opacity: 1;\n  visibility: visible;\n  fill: #888;\n}\n.apexcharts-canvas.zoomable .hovering-zoom {\n  cursor: crosshair\n}\n.apexcharts-canvas.zoomable .hovering-pan {\n  cursor: move\n}\n\n.apexcharts-xaxis,\n.apexcharts-yaxis {\n  pointer-events: none;\n}\n\n.apexcharts-zoom-icon, \n.apexcharts-zoom-in-icon,\n.apexcharts-zoom-out-icon,\n.apexcharts-reset-zoom-icon, \n.apexcharts-pan-icon, \n.apexcharts-selection-icon,\n.apexcharts-menu-icon, \n.apexcharts-toolbar-custom-icon {\n  cursor: pointer;\n  width: 20px;\n  height: 20px;\n  line-height: 24px;\n  color: #6E8192;\n  text-align: center;\n}\n\n\n.apexcharts-zoom-icon svg, \n.apexcharts-zoom-in-icon svg,\n.apexcharts-zoom-out-icon svg,\n.apexcharts-reset-zoom-icon svg,\n.apexcharts-menu-icon svg {\n  fill: #6E8192;\n}\n.apexcharts-selection-icon svg {\n  fill: #444;\n  transform: scale(0.76)\n}\n\n.dark .apexcharts-zoom-icon svg, \n.dark .apexcharts-zoom-in-icon svg,\n.dark .apexcharts-zoom-out-icon svg,\n.dark .apexcharts-reset-zoom-icon svg, \n.dark .apexcharts-pan-icon svg, \n.dark .apexcharts-selection-icon svg,\n.dark .apexcharts-menu-icon svg, \n.dark .apexcharts-toolbar-custom-icon svg{\n  fill: #f3f4f5;\n}\n\n.apexcharts-canvas .apexcharts-zoom-icon.selected svg, \n.apexcharts-canvas .apexcharts-selection-icon.selected svg, \n.apexcharts-canvas .apexcharts-reset-zoom-icon.selected svg {\n  fill: #008FFB;\n}\n.light .apexcharts-selection-icon:not(.selected):hover svg,\n.light .apexcharts-zoom-icon:not(.selected):hover svg, \n.light .apexcharts-zoom-in-icon:hover svg, \n.light .apexcharts-zoom-out-icon:hover svg, \n.light .apexcharts-reset-zoom-icon:hover svg, \n.light .apexcharts-menu-icon:hover svg {\n  fill: #333;\n}\n\n.apexcharts-selection-icon, .apexcharts-menu-icon {\n  position: relative;\n}\n.apexcharts-reset-zoom-icon {\n  margin-left: 5px;\n}\n.apexcharts-zoom-icon, .apexcharts-reset-zoom-icon, .apexcharts-menu-icon {\n  transform: scale(0.85);\n}\n\n.apexcharts-zoom-in-icon, .apexcharts-zoom-out-icon {\n  transform: scale(0.7)\n}\n\n.apexcharts-zoom-out-icon {\n  margin-right: 3px;\n}\n\n.apexcharts-pan-icon {\n  transform: scale(0.62);\n  position: relative;\n  left: 1px;\n  top: 0px;\n}\n.apexcharts-pan-icon svg {\n  fill: #fff;\n  stroke: #6E8192;\n  stroke-width: 2;\n}\n.apexcharts-pan-icon.selected svg {\n  stroke: #008FFB;\n}\n.apexcharts-pan-icon:not(.selected):hover svg {\n  stroke: #333;\n}\n\n.apexcharts-toolbar {\n  position: absolute;\n  z-index: 11;\n  top: 0px;\n  right: 3px;\n  max-width: 176px;\n  text-align: right;\n  border-radius: 3px;\n  padding: 0px 6px 2px 6px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center; \n}\n\n.apexcharts-toolbar svg {\n  pointer-events: none;\n}\n\n.apexcharts-menu {\n  background: #fff;\n  position: absolute;\n  top: 100%;\n  border: 1px solid #ddd;\n  border-radius: 3px;\n  padding: 3px;\n  right: 10px;\n  opacity: 0;\n  min-width: 110px;\n  transition: 0.15s ease all;\n  pointer-events: none;\n}\n\n.apexcharts-menu.open {\n  opacity: 1;\n  pointer-events: all;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-menu-item {\n  padding: 6px 7px;\n  font-size: 12px;\n  cursor: pointer;\n}\n.light .apexcharts-menu-item:hover {\n  background: #eee;\n}\n.dark .apexcharts-menu {\n  background: rgba(0, 0, 0, 0.7);\n  color: #fff;\n}\n\n@media screen and (min-width: 768px) {\n  .apexcharts-toolbar {\n    /*opacity: 0;*/\n  }\n\n  .apexcharts-canvas:hover .apexcharts-toolbar {\n    opacity: 1;\n  } \n}\n\n.apexcharts-datalabel.hidden {\n  opacity: 0;\n}\n\n.apexcharts-pie-label,\n.apexcharts-datalabel, .apexcharts-datalabel-label, .apexcharts-datalabel-value {\n  cursor: default;\n  pointer-events: none;\n}\n\n.apexcharts-pie-label-delay {\n  opacity: 0;\n  animation-name: opaque;\n  animation-duration: 0.3s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease;\n}\n\n.apexcharts-canvas .hidden {\n  opacity: 0;\n}\n\n.apexcharts-hide .apexcharts-series-points {\n  opacity: 0;\n}\n\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, .apexcharts-radar-series path, .apexcharts-radar-series polygon {\n  pointer-events: none;\n}\n\n/* markers */\n\n.apexcharts-marker {\n  transition: 0.15s ease all;\n}\n\n@keyframes opaque {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}'),"document"in self&&("classList"in document.createElement("_")&&(!document.createElementNS||"classList"in document.createElementNS("http://www.w3.org/2000/svg","g"))||function(t){if("Element"in t){var e=t.Element.prototype,i=Object,s=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")},a=Array.prototype.indexOf||function(t){for(var e=0,i=this.length;e<i;e++)if(e in this&&this[e]===t)return e;return-1},n=function(t,e){this.name=t,this.code=DOMException[t],this.message=e},r=function(t,e){if(""===e)throw new n("SYNTAX_ERR","The token must not be empty.");if(/\s/.test(e))throw new n("INVALID_CHARACTER_ERR","The token must not contain space characters.");return a.call(t,e)},o=function(t){for(var e=s.call(t.getAttribute("class")||""),i=e?e.split(/\s+/):[],a=0,n=i.length;a<n;a++)this.push(i[a]);this._updateClassName=function(){t.setAttribute("class",this.toString())}},l=o.prototype=[],h=function(){return new o(this)};if(n.prototype=Error.prototype,l.item=function(t){return this[t]||null},l.contains=function(t){return~r(this,t+"")},l.add=function(){var t,e=arguments,i=0,s=e.length,a=!1;do{t=e[i]+"",~r(this,t)||(this.push(t),a=!0)}while(++i<s);a&&this._updateClassName()},l.remove=function(){var t,e,i=arguments,s=0,a=i.length,n=!1;do{for(t=i[s]+"",e=r(this,t);~e;)this.splice(e,1),n=!0,e=r(this,t)}while(++s<a);n&&this._updateClassName()},l.toggle=function(t,e){var i=this.contains(t),s=i?!0!==e&&"remove":!1!==e&&"add";return s&&this[s](t),!0===e||!1===e?e:!i},l.replace=function(t,e){var i=r(t+"");~i&&(this.splice(i,1,e),this._updateClassName())},l.toString=function(){return this.join(" ")},i.defineProperty){var c={get:h,enumerable:!0,configurable:!0};try{i.defineProperty(e,"classList",c)}catch(t){void 0!==t.number&&-2146823252!==t.number||(c.enumerable=!1,i.defineProperty(e,"classList",c))}}else i.prototype.__defineGetter__&&e.__defineGetter__("classList",h)}}(self),function(){var t=document.createElement("_");if(t.classList.add("c1","c2"),!t.classList.contains("c2")){var e=function(t){var e=DOMTokenList.prototype[t];DOMTokenList.prototype[t]=function(t){var i,s=arguments.length;for(i=0;i<s;i++)t=arguments[i],e.call(this,t)}};e("add"),e("remove")}if(t.classList.toggle("c3",!1),t.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(t,e){return 1 in arguments&&!this.contains(t)==!e?e:i.call(this,t)}}"replace"in document.createElement("_").classList||(DOMTokenList.prototype.replace=function(t,e){var i=this.toString().split(" "),s=i.indexOf(t+"");~s&&(i=i.slice(s),this.remove.apply(this,i),this.add(e),this.add.apply(this,i.slice(1)))}),t=null}()),function(){var t=!1;function e(t){var e=t.__resizeTriggers__,i=e.firstElementChild,s=e.lastElementChild,a=i.firstElementChild;s.scrollLeft=s.scrollWidth,s.scrollTop=s.scrollHeight,a.style.width=i.offsetWidth+1+"px",a.style.height=i.offsetHeight+1+"px",i.scrollLeft=i.scrollWidth,i.scrollTop=i.scrollHeight}function i(t){var i=this;e(this),this.__resizeRAF__&&r(this.__resizeRAF__),this.__resizeRAF__=n(function(){(function(t){return t.offsetWidth!=t.__resizeLast__.width||t.offsetHeight!=t.__resizeLast__.height})(i)&&(i.__resizeLast__.width=i.offsetWidth,i.__resizeLast__.height=i.offsetHeight,i.__resizeListeners__.forEach(function(e){e.call(t)}))})}var s,a,n=(s=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(t){return window.setTimeout(t,20)},function(t){return s(t)}),r=(a=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.clearTimeout,function(t){return a(t)}),o=!1,l="",h="animationstart",c="Webkit Moz O ms".split(" "),d="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),u=document.createElement("fakeelement");if(void 0!==u.style.animationName&&(o=!0),!1===o)for(var g=0;g<c.length;g++)if(void 0!==u.style[c[g]+"AnimationName"]){l="-"+c[g].toLowerCase()+"-",h=d[g];break}var f="@"+l+"keyframes resizeanim { from { opacity: 0; } to { opacity: 0; } } ",p=l+"animation: 1ms resizeanim; ";window.addResizeListener=function(s,a){s.__resizeTriggers__||("static"==getComputedStyle(s).position&&(s.style.position="relative"),function(){if(!t){var e=(f||"")+".resize-triggers { "+(p||"")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',i=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css",s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e)),i.appendChild(s),t=!0}}(),s.__resizeLast__={},s.__resizeListeners__=[],(s.__resizeTriggers__=document.createElement("div")).className="resize-triggers",s.__resizeTriggers__.innerHTML='<div class="expand-trigger"><div></div></div><div class="contract-trigger"></div>',s.appendChild(s.__resizeTriggers__),e(s),s.addEventListener("scroll",i,!0),h&&s.__resizeTriggers__.addEventListener(h,function(t){"resizeanim"==t.animationName&&e(s)})),s.__resizeListeners__.push(a)},window.removeResizeListener=function(t,e){t&&(t.__resizeListeners__.splice(t.__resizeListeners__.indexOf(e),1),t.__resizeListeners__.length||(t.removeEventListener("scroll",i),t.__resizeTriggers__=!t.removeChild(t.__resizeTriggers__)))}}(),window.Apex={},function(){function i(t,s){e(this,i),this.opts=s,this.ctx=this,this.w=new A(s).init(),this.el=t,this.w.globals.cuid=(Math.random()+1).toString(36).substring(4),this.w.globals.chartID=this.w.config.chart.id?this.w.config.chart.id:this.w.globals.cuid,this.initModules(),this.create=d.bind(this.create,this),this.windowResizeHandler=this.windowResize.bind(this)}return s(i,[{key:"render",value:function(){var t=this;return new $(function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var s=t.w.config.chart.events.beforeMount;"function"==typeof s&&s(t,t.w),t.fireEvent("beforeMount",[t,t.w]),window.addEventListener("resize",t.windowResizeHandler),window.addResizeListener(t.el.parentNode,t.parentResizeCallback.bind(t));var a=t.create(t.w.config.series,{});if(!a)return e(t);t.mount(a).then(function(){e(a),"function"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.fireEvent("mounted",[t,t.w])}).catch(function(t){i(t)})}else i(new Error("Element not found"))})}},{key:"initModules",value:function(){this.animations=new g(this),this.core=new U(this.el,this),this.grid=new rt(this),this.coreUtils=new y(this),this.config=new w({}),this.crosshairs=new T(this),this.options=new x,this.responsive=new lt(this),this.series=new G(this),this.theme=new ht(this),this.formatters=new N(this),this.titleSubtitle=new vt(this),this.legend=new ot(this),this.toolbar=new bt(this),this.dimensions=new _(this),this.zoomPanSelection=new mt(this),this.w.globals.tooltip=new xt(this)}},{key:"addEventListener",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:"removeEventListener",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var s=i.globals.events[t].indexOf(e);-1!==s&&i.globals.events[t].splice(s,1)}}},{key:"fireEvent",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var s=i.globals.events[t],a=s.length,n=0;n<a;n++)s[n].apply(null,e)}}},{key:"create",value:function(t,e){var i=this.w;this.initModules();var s=this.w.globals;if(s.noData=!1,s.animationEnded=!1,this.responsive.checkResponsiveConfig(e),null===this.el)return s.animationEnded=!0,null;if(this.core.setupElements(),0===s.svgWidth)return s.animationEnded=!0,null;var a=y.checkComboSeries(t);s.comboCharts=a.comboCharts,s.comboChartsHasBars=a.comboChartsHasBars,(0===t.length||1===t.length&&t[0].data&&0===t[0].data.length)&&this.series.handleNoData(),this.setupEventHandlers(),this.core.parseData(t),this.theme.init(),new C(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),this.legend.init(),this.series.hasAllSeriesEqualX(),s.axisCharts&&(this.core.coreCalculations(),"category"!==i.config.xaxis.type&&this.formatters.setLabelFormatters()),this.formatters.heatmapLabelFormatters(),this.dimensions.plotCoords();var n=this.core.xySettings();this.grid.createGridMask();var r=this.core.plotChartType(t,n);this.core.shiftGraphPosition();var o={plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}};return{elGraph:r,xyRatios:n,elInner:i.globals.dom.elGraphical,dimensions:o}}},{key:"mount",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this,i=e.w;return new $(function(s,a){if(null===e.el)return a(new Error("Not enough data to display or target element not found"));if((null===t||i.globals.allSeriesCollapsed)&&e.series.handleNoData(),e.annotations=new b(e),e.core.drawAxis(i.config.chart.type,t.xyRatios),e.grid=new rt(e),"back"===i.config.grid.position&&e.grid.drawGrid(),"back"===i.config.annotations.position&&e.annotations.drawAnnotations(),t.elGraph instanceof Array)for(var n=0;n<t.elGraph.length;n++)i.globals.dom.elGraphical.add(t.elGraph[n]);else i.globals.dom.elGraphical.add(t.elGraph);if("front"===i.config.grid.position&&e.grid.drawGrid(),"front"===i.config.xaxis.crosshairs.position&&e.crosshairs.drawXCrosshairs(),"front"===i.config.yaxis[0].crosshairs.position&&e.crosshairs.drawYCrosshairs(),"front"===i.config.annotations.position&&e.annotations.drawAnnotations(),!i.globals.noData){if(i.config.tooltip.enabled&&!i.globals.noData&&e.w.globals.tooltip.drawTooltip(t.xyRatios),i.globals.axisCharts&&i.globals.isXNumeric)(i.config.chart.zoom.enabled||i.config.chart.selection&&i.config.chart.selection.enabled||i.config.chart.pan&&i.config.chart.pan.enabled)&&e.zoomPanSelection.init({xyRatios:t.xyRatios});else{var r=i.config.chart.toolbar.tools;r.zoom=!1,r.zoomin=!1,r.zoomout=!1,r.selection=!1,r.pan=!1,r.reset=!1}i.config.chart.toolbar.show&&!i.globals.allSeriesCollapsed&&e.toolbar.createToolbar()}i.globals.memory.methodsToExec.length>0&&i.globals.memory.methodsToExec.forEach(function(t){t.method(t.params,!1,t.context)}),s(e)})}},{key:"clearPreviousPaths",value:function(){var t=this.w;t.globals.previousPaths=[],t.globals.allSeriesCollapsed=!1,t.globals.collapsedSeries=[],t.globals.collapsedSeriesIndices=[]}},{key:"updateOptions",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=this.w;return t.series&&(t.series[0].data&&(t.series=t.series.map(function(t,e){return n({},a.config.series[e],{name:t.name?t.name:a.config.series[e]&&a.config.series[e].name,type:t.type?t.type:a.config.series[e]&&a.config.series[e].type,data:t.data?t.data:a.config.series[e]&&a.config.series[e].data})})),this.revertDefaultAxisMinMax()),t.xaxis&&((t.xaxis.min||t.xaxis.max)&&this.forceXAxisUpdate(t),t.xaxis.categories&&t.xaxis.categories.length&&a.config.xaxis.convertedCatToNumeric&&(t=v.convertCatToNumeric(t))),a.globals.collapsedSeriesIndices.length>0&&this.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this._updateOptions(t,e,i,s)}},{key:"_updateOptions",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this.getSyncedCharts().forEach(function(n){var r=n.w;return r.globals.shouldAnimate=s,i||(r.globals.resized=!0,r.globals.dataChanged=!0,s&&n.series.getPreviousPaths()),e&&"object"===t(e)&&(n.config=new w(e),e=y.extendArrayProps(n.config,e),r.config=d.extend(r.config,e),a&&(r.globals.lastXAxis=[],r.globals.lastYAxis=[],r.globals.initialConfig=d.extend({},r.config),r.globals.initialSeries=JSON.parse(JSON.stringify(r.config.series)))),n.update(e)})}},{key:"updateSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.revertDefaultAxisMinMax(),this._updateSeries(t,e,i)}},{key:"appendSeries",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=this.w.config.series.slice();return s.push(t),this.revertDefaultAxisMinMax(),this._updateSeries(s,e,i)}},{key:"_updateSeries",value:function(t,e){var i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=this.w;return this.w.globals.shouldAnimate=e,a.globals.dataChanged=!0,a.globals.allSeriesCollapsed&&(a.globals.allSeriesCollapsed=!1),e&&this.series.getPreviousPaths(),a.globals.axisCharts?(0===(i=t.map(function(t,e){return n({},a.config.series[e],{name:t.name?t.name:a.config.series[e]&&a.config.series[e].name,type:t.type?t.type:a.config.series[e]&&a.config.series[e].type,data:t.data?t.data:a.config.series[e]&&a.config.series[e].data})})).length&&(i=[{data:[]}]),a.config.series=i):a.config.series=t.slice(),s&&(a.globals.initialConfig.series=JSON.parse(JSON.stringify(a.config.series)),a.globals.initialSeries=JSON.parse(JSON.stringify(a.config.series))),this.update()}},{key:"getSyncedCharts",value:function(){var t=this.getGroupedCharts(),e=[this];return t.length&&(e=[],t.forEach(function(t){e.push(t)})),e}},{key:"getGroupedCharts",value:function(){var t=this;return Apex._chartInstances.filter(function(t){if(t.group)return!0}).map(function(e){return t.w.config.chart.group===e.group?e.chart:t})}},{key:"appendData",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var s=i.w.config.series.slice(),a=0;a<s.length;a++)if(void 0!==t[a])for(var n=0;n<t[a].data.length;n++)s[a].data.push(t[a].data[n]);return i.w.config.series=s,e&&(i.w.globals.initialSeries=JSON.parse(JSON.stringify(i.w.config.series))),this.update()}},{key:"update",value:function(t){var e=this;return new $(function(i,s){e.clear();var a=e.create(e.w.config.series,t);if(!a)return i(e);e.mount(a).then(function(){"function"==typeof e.w.config.chart.events.updated&&e.w.config.chart.events.updated(e,e.w),e.fireEvent("updated",[e,e.w]),e.w.globals.isDirty=!0,i(e)}).catch(function(t){s(t)})})}},{key:"forceXAxisUpdate",value:function(t){var e=this.w;void 0!==t.xaxis.min&&(e.config.xaxis.min=t.xaxis.min,e.globals.lastXAxis.min=t.xaxis.min),void 0!==t.xaxis.max&&(e.config.xaxis.max=t.xaxis.max,e.globals.lastXAxis.max=t.xaxis.max)}},{key:"revertDefaultAxisMinMax",value:function(){var t=this.w;t.config.xaxis.min=t.globals.lastXAxis.min,t.config.xaxis.max=t.globals.lastXAxis.max,t.config.yaxis.map(function(e,i){t.globals.zoomed&&void 0!==t.globals.lastYAxis[i]&&(e.min=t.globals.lastYAxis[i].min,e.max=t.globals.lastYAxis[i].max)})}},{key:"clear",value:function(){this.zoomPanSelection&&this.zoomPanSelection.destroy(),this.toolbar&&this.toolbar.destroy(),this.animations=null,this.annotations=null,this.core=null,this.grid=null,this.series=null,this.responsive=null,this.theme=null,this.formatters=null,this.titleSubtitle=null,this.legend=null,this.dimensions=null,this.options=null,this.crosshairs=null,this.zoomPanSelection=null,this.toolbar=null,this.w.globals.tooltip=null,this.clearDomElements()}},{key:"killSVG",value:function(t){return new $(function(e,i){t.each(function(t,e){this.removeClass("*"),this.off(),this.stop()},!0),t.ungroup(),t.clear(),e("done")})}},{key:"clearDomElements",value:function(){var t=this.w.globals.dom;if(null!==this.el)for(;this.el.firstChild;)this.el.removeChild(this.el.firstChild);this.killSVG(t.Paper),t.Paper.remove(),t.elWrap=null,t.elGraphical=null,t.elLegendWrap=null,t.baseEl=null,t.elGridRect=null,t.elGridRectMask=null,t.elGridRectMarkerMask=null,t.elDefs=null}},{key:"destroy",value:function(){this.clear();var t=this.w.config.chart.id;t&&Apex._chartInstances.forEach(function(e,i){e.id===t&&Apex._chartInstances.splice(i,1)}),window.removeEventListener("resize",this.windowResizeHandler),window.removeResizeListener(this.el.parentNode,this.parentResizeCallback.bind(this))}},{key:"toggleSeries",value:function(t){var e=this.series.getSeriesByName(t),i=parseInt(e.getAttribute("data:realIndex")),s=e.classList.contains("apexcharts-series-collapsed");this.legend.toggleDataSeries(i,s)}},{key:"resetToggleSeries",value:function(){this.legend.resetToggleDataSeries()}},{key:"setupEventHandlers",value:function(){var t=this.w,e=this,i=t.globals.dom.baseEl.querySelector(t.globals.chartClass),s=["mousedown","mousemove","touchstart","touchmove","mouseup","touchend"];s.forEach(function(s){i.addEventListener(s,function(i){"mousedown"===i.type&&1===i.which||("mouseup"===i.type&&1===i.which||"touchend"===i.type)&&("function"==typeof t.config.chart.events.click&&t.config.chart.events.click(i,e,t),e.fireEvent("click",[i,e,t]))},{capture:!1,passive:!0})}),s.forEach(function(e){document.addEventListener(e,function(e){t.globals.clientX="touchmove"===e.type?e.touches[0].clientX:e.clientX,t.globals.clientY="touchmove"===e.type?e.touches[0].clientY:e.clientY})}),this.core.setupBrushHandler()}},{key:"addXaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addXaxisAnnotationExternal(t,e,s)}},{key:"addYaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addYaxisAnnotationExternal(t,e,s)}},{key:"addPointAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addPointAnnotationExternal(t,e,s)}},{key:"clearAnnotations",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:"addText",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addText(t,e,s)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:"getHighestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new V(this.ctx).getMinYMaxY(t).highestY}},{key:"getLowestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new V(this.ctx).getMinYMaxY(t).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"setLocale",value:function(t){this.setCurrentLocaleValues(t)}},{key:"setCurrentLocaleValues",value:function(t){var e=this.w.config.chart.locales;window.Apex.chart&&window.Apex.chart.locales&&window.Apex.chart.locales.length>0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter(function(e){return e.name===t})[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var s=d.extend(p,i);this.w.globals.locale=s.options}},{key:"dataURI",value:function(){return new nt(this.ctx).dataURI()}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.windowResize()}},{key:"windowResize",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout(function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.update()},150)}}],[{key:"initOnLoad",value:function(){for(var t=document.querySelectorAll("[data-apexcharts]"),e=0;e<t.length;e++){new i(t[e],JSON.parse(t[e].getAttribute("data-options"))).render()}}},{key:"exec",value:function(t,e){var i=this.getChartByID(t);if(i){for(var s=arguments.length,a=new Array(s>2?s-2:0),n=2;n<s;n++)a[n-2]=arguments[n];switch(e){case"updateOptions":return i.updateOptions.apply(i,a);case"updateSeries":return i.updateSeries.apply(i,a);case"appendData":return i.appendData.apply(i,a);case"appendSeries":return i.appendSeries.apply(i,a);case"toggleSeries":return i.toggleSeries.apply(i,a);case"dataURI":return i.dataURI.apply(i,a);case"addXaxisAnnotation":return i.addXaxisAnnotation.apply(i,a);case"addYaxisAnnotation":return i.addYaxisAnnotation.apply(i,a);case"addPointAnnotation":return i.addPointAnnotation.apply(i,a);case"addText":return i.addText.apply(i,a);case"clearAnnotations":return i.clearAnnotations.apply(i,a);case"paper":return i.paper.apply(i,a);case"destroy":return i.destroy()}}}},{key:"merge",value:function(t,e){return d.extend(t,e)}},{key:"getChartByID",value:function(t){return Apex._chartInstances.filter(function(e){return e.id===t})[0].chart}}]),i}()});
Index: public/vendors/charts/apex/locales/de.json
===================================================================
--- public/vendors/charts/apex/locales/de.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/locales/de.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+{
+  "name": "de",
+  "options": {
+    "months": ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
+    "shortMonths": ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
+    "days": ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
+    "shortDays": ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
+    "toolbar": {
+      "exportToSVG": "SVG speichern",
+      "exportToPNG": "PNG speichern",
+      "menu": "Menü",
+      "selection": "Auswahl",
+      "selectionZoom": "Auswahl vergrößern",
+      "zoomIn": "Vergrößern",
+      "zoomOut": "Verkleinern",
+      "pan": "Verschieben",
+      "reset": "Zoom zurücksetzen"
+    }
+  }
+}
Index: public/vendors/charts/apex/locales/el.json
===================================================================
--- public/vendors/charts/apex/locales/el.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/locales/el.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+{
+  "name": "el",
+  "options": {
+    "months": ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"],
+    "shortMonths": ["Ιαν", "Φευ", "Μαρ", "Απρ", "Μάι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ"],
+    "days": ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"],
+    "shortDays": ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"],
+    "toolbar": {
+      "exportToSVG": "Λήψη SVG",
+      "exportToPNG": "Λήψη PNG",
+      "menu": "Menu",
+      "selection": "Επιλογή",
+      "selectionZoom": "Μεγένθυση βάση επιλογής",
+      "zoomIn": "Μεγένθυνση",
+      "zoomOut": "Σμίκρυνση",
+      "pan": "Μετατόπιση",
+      "reset": "Επαναφορά μεγένθυνσης"
+    }
+  }
+}
Index: public/vendors/charts/apex/locales/en.json
===================================================================
--- public/vendors/charts/apex/locales/en.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/locales/en.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+{
+  "name": "en",
+  "options": {
+    "months": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+    "shortMonths": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+    "days": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+    "shortDays": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+    "toolbar": {
+      "exportToSVG": "Download SVG",
+      "exportToPNG": "Download PNG",
+      "menu": "Menu",
+      "selection": "Selection",
+      "selectionZoom": "Selection Zoom",
+      "zoomIn": "Zoom In",
+      "zoomOut": "Zoom Out",
+      "pan": "Panning",
+      "reset": "Reset Zoom"
+    }
+  }
+}
Index: public/vendors/charts/apex/locales/es.json
===================================================================
--- public/vendors/charts/apex/locales/es.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/locales/es.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+{
+  "name": "es",
+  "options": {
+      "months": ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
+      "shortMonths": ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
+      "days": ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"],
+      "shortDays": ["Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab"],
+      "toolbar": {
+        "exportToSVG": "Descargar SVG",
+        "exportToPNG": "Descargar PNG",
+        "menu": "Menu",
+        "selection": "Seleccionar",
+        "selectionZoom": "Seleccionar Zoom",
+        "zoomIn": "Aumentar",
+        "zoomOut": "Disminuir",
+        "pan": "Navegación",
+        "reset": "Reiniciar Zoom"
+      }
+  }
+}
Index: public/vendors/charts/apex/locales/fr.json
===================================================================
--- public/vendors/charts/apex/locales/fr.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/locales/fr.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+{
+  "name": "fr",
+  "options": {
+    "months": ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"],
+    "shortMonths": ["janv.", "févr.", "mars", "avr.", "mai", "juin", "juill.", "août", "sept.", "oct.", "nov.", "déc."],
+    "days": ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"],
+    "shortDays": ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."],
+    "toolbar": {
+      "exportToSVG": "Télécharger au format SVG",
+      "exportToPNG": "Télécharger au format PNG",
+      "menu": "Menu",
+      "selection": "Sélection",
+      "selectionZoom": "Sélection et zoom",
+      "zoomIn": "Zoomer",
+      "zoomOut": "Dézoomer",
+      "pan": "Navigation",
+      "reset": "Réinitialiser le zoom"
+    }
+  }
+}
Index: public/vendors/charts/apex/locales/hi.json
===================================================================
--- public/vendors/charts/apex/locales/hi.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/locales/hi.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+{
+  "name": "hi",
+  "options": {
+    "months": ["जनवरी", "फ़रवरी", "मार्च", "अप्रैल", "मई", "जून", "जुलाई", "अगस्त", "सितंबर", "अक्टूबर", "नवंबर", "दिसंबर"],
+    "shortMonths": ["जनवरी", "फ़रवरी", "मार्च", "अप्रैल", "मई", "जून", "जुलाई", "अगस्त", "सितंबर", "अक्टूबर", "नवंबर", "दिसंबर"],
+    "days": ["रविवार", "सोमवार", "मंगलवार", "बुधवार", "गुरुवार", "शुक्रवार", "शनिवार"],
+    "shortDays": ["रवि", "सोम", "मंगल", "बुध", "गुरु", "शुक्र", "शनि"],
+    "toolbar": {
+      "exportToSVG": "निर्यात SVG",
+      "exportToPNG": "निर्यात PNG",
+      "menu": "सूची",
+      "selection": "चयन",
+      "selectionZoom": "ज़ूम करना",
+      "zoomIn": "ज़ूम इन",
+      "zoomOut": "ज़ूम आउट",
+      "pan": "पैनिंग",
+      "reset": "फिर से कायम करना"
+    }
+  }
+}
Index: public/vendors/charts/apex/locales/id.json
===================================================================
--- public/vendors/charts/apex/locales/id.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/locales/id.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+{
+  "name": "id",
+  "options": {
+    "months": ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
+    "shortMonths": ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des"],
+    "days": ["Minggu", "Senin", "Selasa", "Rabu", "kamis", "Jumat", "Sabtu"],
+    "shortDays": ["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"],
+    "toolbar": {
+      "exportToSVG": "Unduh SVG",
+      "exportToPNG": "Unduh PNG",
+      "menu": "Menu",
+      "selection": "Pilihan",
+      "selectionZoom": "Perbesar Pilihan",
+      "zoomIn": "Perbesar",
+      "zoomOut": "Perkecil",
+      "pan": "Geser",
+      "reset": "Atur Ulang Zoom"
+    }
+  }
+}
Index: public/vendors/charts/apex/locales/pt-br.json
===================================================================
--- public/vendors/charts/apex/locales/pt-br.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/locales/pt-br.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+{
+  "name": "pt-br",
+  "options": {
+      "months": ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+      "shortMonths": ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+      "days": ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"],
+      "shortDays": ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"],
+      "toolbar": {
+        "exportToSVG": "Baixar SVG",
+        "exportToPNG": "Baixar PNG",
+        "menu": "Menu",
+        "selection": "Selecionar",
+        "selectionZoom": "Selecionar Zoom",
+        "zoomIn": "Aumentar",
+        "zoomOut": "Diminuir",
+        "pan": "Navegação",
+        "reset": "Reiniciar Zoom"
+      }
+  }
+}
Index: public/vendors/charts/apex/locales/ru.json
===================================================================
--- public/vendors/charts/apex/locales/ru.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/apex/locales/ru.json	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+{
+  "name": "ru",
+  "options": {
+    "months": ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
+    "shortMonths": ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
+    "days": ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"],
+    "shortDays": ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
+    "toolbar": {
+      "exportToSVG": "Сохранить SVG",
+      "exportToPNG": "Сохранить PNG",
+      "menu": "Menu",
+      "selection": "Выбор",
+      "selectionZoom": "Выбор с увеличением",
+      "zoomIn": "Увеличить",
+      "zoomOut": "Уменьшить",
+      "pan": "Перемещение",
+      "reset": "Сбросить увеличение"
+    }
+  }
+}
Index: public/vendors/charts/chartjs/chart.min.js
===================================================================
--- public/vendors/charts/chartjs/chart.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/chartjs/chart.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,14145 @@
+/*!
+ * Chart.js
+ * http://chartjs.org/
+ * Version: 2.7.1
+ *
+ * Copyright 2017 Nick Downie
+ * Released under the MIT license
+ * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md
+ */
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
+
+    },{}],2:[function(require,module,exports){
+        /* MIT license */
+        var colorNames = require(6);
+
+        module.exports = {
+            getRgba: getRgba,
+            getHsla: getHsla,
+            getRgb: getRgb,
+            getHsl: getHsl,
+            getHwb: getHwb,
+            getAlpha: getAlpha,
+
+            hexString: hexString,
+            rgbString: rgbString,
+            rgbaString: rgbaString,
+            percentString: percentString,
+            percentaString: percentaString,
+            hslString: hslString,
+            hslaString: hslaString,
+            hwbString: hwbString,
+            keyword: keyword
+        }
+
+        function getRgba(string) {
+            if (!string) {
+                return;
+            }
+            var abbr =  /^#([a-fA-F0-9]{3})$/i,
+                hex =  /^#([a-fA-F0-9]{6})$/i,
+                rgba = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i,
+                per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i,
+                keyword = /(\w+)/;
+
+            var rgb = [0, 0, 0],
+                a = 1,
+                match = string.match(abbr);
+            if (match) {
+                match = match[1];
+                for (var i = 0; i < rgb.length; i++) {
+                    rgb[i] = parseInt(match[i] + match[i], 16);
+                }
+            }
+            else if (match = string.match(hex)) {
+                match = match[1];
+                for (var i = 0; i < rgb.length; i++) {
+                    rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);
+                }
+            }
+            else if (match = string.match(rgba)) {
+                for (var i = 0; i < rgb.length; i++) {
+                    rgb[i] = parseInt(match[i + 1]);
+                }
+                a = parseFloat(match[4]);
+            }
+            else if (match = string.match(per)) {
+                for (var i = 0; i < rgb.length; i++) {
+                    rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);
+                }
+                a = parseFloat(match[4]);
+            }
+            else if (match = string.match(keyword)) {
+                if (match[1] == "transparent") {
+                    return [0, 0, 0, 0];
+                }
+                rgb = colorNames[match[1]];
+                if (!rgb) {
+                    return;
+                }
+            }
+
+            for (var i = 0; i < rgb.length; i++) {
+                rgb[i] = scale(rgb[i], 0, 255);
+            }
+            if (!a && a != 0) {
+                a = 1;
+            }
+            else {
+                a = scale(a, 0, 1);
+            }
+            rgb[3] = a;
+            return rgb;
+        }
+
+        function getHsla(string) {
+            if (!string) {
+                return;
+            }
+            var hsl = /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/;
+            var match = string.match(hsl);
+            if (match) {
+                var alpha = parseFloat(match[4]);
+                var h = scale(parseInt(match[1]), 0, 360),
+                    s = scale(parseFloat(match[2]), 0, 100),
+                    l = scale(parseFloat(match[3]), 0, 100),
+                    a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);
+                return [h, s, l, a];
+            }
+        }
+
+        function getHwb(string) {
+            if (!string) {
+                return;
+            }
+            var hwb = /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/;
+            var match = string.match(hwb);
+            if (match) {
+                var alpha = parseFloat(match[4]);
+                var h = scale(parseInt(match[1]), 0, 360),
+                    w = scale(parseFloat(match[2]), 0, 100),
+                    b = scale(parseFloat(match[3]), 0, 100),
+                    a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);
+                return [h, w, b, a];
+            }
+        }
+
+        function getRgb(string) {
+            var rgba = getRgba(string);
+            return rgba && rgba.slice(0, 3);
+        }
+
+        function getHsl(string) {
+            var hsla = getHsla(string);
+            return hsla && hsla.slice(0, 3);
+        }
+
+        function getAlpha(string) {
+            var vals = getRgba(string);
+            if (vals) {
+                return vals[3];
+            }
+            else if (vals = getHsla(string)) {
+                return vals[3];
+            }
+            else if (vals = getHwb(string)) {
+                return vals[3];
+            }
+        }
+
+// generators
+        function hexString(rgb) {
+            return "#" + hexDouble(rgb[0]) + hexDouble(rgb[1])
+                + hexDouble(rgb[2]);
+        }
+
+        function rgbString(rgba, alpha) {
+            if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {
+                return rgbaString(rgba, alpha);
+            }
+            return "rgb(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + ")";
+        }
+
+        function rgbaString(rgba, alpha) {
+            if (alpha === undefined) {
+                alpha = (rgba[3] !== undefined ? rgba[3] : 1);
+            }
+            return "rgba(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2]
+                + ", " + alpha + ")";
+        }
+
+        function percentString(rgba, alpha) {
+            if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {
+                return percentaString(rgba, alpha);
+            }
+            var r = Math.round(rgba[0]/255 * 100),
+                g = Math.round(rgba[1]/255 * 100),
+                b = Math.round(rgba[2]/255 * 100);
+
+            return "rgb(" + r + "%, " + g + "%, " + b + "%)";
+        }
+
+        function percentaString(rgba, alpha) {
+            var r = Math.round(rgba[0]/255 * 100),
+                g = Math.round(rgba[1]/255 * 100),
+                b = Math.round(rgba[2]/255 * 100);
+            return "rgba(" + r + "%, " + g + "%, " + b + "%, " + (alpha || rgba[3] || 1) + ")";
+        }
+
+        function hslString(hsla, alpha) {
+            if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {
+                return hslaString(hsla, alpha);
+            }
+            return "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)";
+        }
+
+        function hslaString(hsla, alpha) {
+            if (alpha === undefined) {
+                alpha = (hsla[3] !== undefined ? hsla[3] : 1);
+            }
+            return "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, "
+                + alpha + ")";
+        }
+
+// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax
+// (hwb have alpha optional & 1 is default value)
+        function hwbString(hwb, alpha) {
+            if (alpha === undefined) {
+                alpha = (hwb[3] !== undefined ? hwb[3] : 1);
+            }
+            return "hwb(" + hwb[0] + ", " + hwb[1] + "%, " + hwb[2] + "%"
+                + (alpha !== undefined && alpha !== 1 ? ", " + alpha : "") + ")";
+        }
+
+        function keyword(rgb) {
+            return reverseNames[rgb.slice(0, 3)];
+        }
+
+// helpers
+        function scale(num, min, max) {
+            return Math.min(Math.max(min, num), max);
+        }
+
+        function hexDouble(num) {
+            var str = num.toString(16).toUpperCase();
+            return (str.length < 2) ? "0" + str : str;
+        }
+
+
+//create a list of reverse color names
+        var reverseNames = {};
+        for (var name in colorNames) {
+            reverseNames[colorNames[name]] = name;
+        }
+
+    },{"6":6}],3:[function(require,module,exports){
+        /* MIT license */
+        var convert = require(5);
+        var string = require(2);
+
+        var Color = function (obj) {
+            if (obj instanceof Color) {
+                return obj;
+            }
+            if (!(this instanceof Color)) {
+                return new Color(obj);
+            }
+
+            this.valid = false;
+            this.values = {
+                rgb: [0, 0, 0],
+                hsl: [0, 0, 0],
+                hsv: [0, 0, 0],
+                hwb: [0, 0, 0],
+                cmyk: [0, 0, 0, 0],
+                alpha: 1
+            };
+
+            // parse Color() argument
+            var vals;
+            if (typeof obj === 'string') {
+                vals = string.getRgba(obj);
+                if (vals) {
+                    this.setValues('rgb', vals);
+                } else if (vals = string.getHsla(obj)) {
+                    this.setValues('hsl', vals);
+                } else if (vals = string.getHwb(obj)) {
+                    this.setValues('hwb', vals);
+                }
+            } else if (typeof obj === 'object') {
+                vals = obj;
+                if (vals.r !== undefined || vals.red !== undefined) {
+                    this.setValues('rgb', vals);
+                } else if (vals.l !== undefined || vals.lightness !== undefined) {
+                    this.setValues('hsl', vals);
+                } else if (vals.v !== undefined || vals.value !== undefined) {
+                    this.setValues('hsv', vals);
+                } else if (vals.w !== undefined || vals.whiteness !== undefined) {
+                    this.setValues('hwb', vals);
+                } else if (vals.c !== undefined || vals.cyan !== undefined) {
+                    this.setValues('cmyk', vals);
+                }
+            }
+        };
+
+        Color.prototype = {
+            isValid: function () {
+                return this.valid;
+            },
+            rgb: function () {
+                return this.setSpace('rgb', arguments);
+            },
+            hsl: function () {
+                return this.setSpace('hsl', arguments);
+            },
+            hsv: function () {
+                return this.setSpace('hsv', arguments);
+            },
+            hwb: function () {
+                return this.setSpace('hwb', arguments);
+            },
+            cmyk: function () {
+                return this.setSpace('cmyk', arguments);
+            },
+
+            rgbArray: function () {
+                return this.values.rgb;
+            },
+            hslArray: function () {
+                return this.values.hsl;
+            },
+            hsvArray: function () {
+                return this.values.hsv;
+            },
+            hwbArray: function () {
+                var values = this.values;
+                if (values.alpha !== 1) {
+                    return values.hwb.concat([values.alpha]);
+                }
+                return values.hwb;
+            },
+            cmykArray: function () {
+                return this.values.cmyk;
+            },
+            rgbaArray: function () {
+                var values = this.values;
+                return values.rgb.concat([values.alpha]);
+            },
+            hslaArray: function () {
+                var values = this.values;
+                return values.hsl.concat([values.alpha]);
+            },
+            alpha: function (val) {
+                if (val === undefined) {
+                    return this.values.alpha;
+                }
+                this.setValues('alpha', val);
+                return this;
+            },
+
+            red: function (val) {
+                return this.setChannel('rgb', 0, val);
+            },
+            green: function (val) {
+                return this.setChannel('rgb', 1, val);
+            },
+            blue: function (val) {
+                return this.setChannel('rgb', 2, val);
+            },
+            hue: function (val) {
+                if (val) {
+                    val %= 360;
+                    val = val < 0 ? 360 + val : val;
+                }
+                return this.setChannel('hsl', 0, val);
+            },
+            saturation: function (val) {
+                return this.setChannel('hsl', 1, val);
+            },
+            lightness: function (val) {
+                return this.setChannel('hsl', 2, val);
+            },
+            saturationv: function (val) {
+                return this.setChannel('hsv', 1, val);
+            },
+            whiteness: function (val) {
+                return this.setChannel('hwb', 1, val);
+            },
+            blackness: function (val) {
+                return this.setChannel('hwb', 2, val);
+            },
+            value: function (val) {
+                return this.setChannel('hsv', 2, val);
+            },
+            cyan: function (val) {
+                return this.setChannel('cmyk', 0, val);
+            },
+            magenta: function (val) {
+                return this.setChannel('cmyk', 1, val);
+            },
+            yellow: function (val) {
+                return this.setChannel('cmyk', 2, val);
+            },
+            black: function (val) {
+                return this.setChannel('cmyk', 3, val);
+            },
+
+            hexString: function () {
+                return string.hexString(this.values.rgb);
+            },
+            rgbString: function () {
+                return string.rgbString(this.values.rgb, this.values.alpha);
+            },
+            rgbaString: function () {
+                return string.rgbaString(this.values.rgb, this.values.alpha);
+            },
+            percentString: function () {
+                return string.percentString(this.values.rgb, this.values.alpha);
+            },
+            hslString: function () {
+                return string.hslString(this.values.hsl, this.values.alpha);
+            },
+            hslaString: function () {
+                return string.hslaString(this.values.hsl, this.values.alpha);
+            },
+            hwbString: function () {
+                return string.hwbString(this.values.hwb, this.values.alpha);
+            },
+            keyword: function () {
+                return string.keyword(this.values.rgb, this.values.alpha);
+            },
+
+            rgbNumber: function () {
+                var rgb = this.values.rgb;
+                return (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];
+            },
+
+            luminosity: function () {
+                // http://www.w3.org/TR/WCAG20/#relativeluminancedef
+                var rgb = this.values.rgb;
+                var lum = [];
+                for (var i = 0; i < rgb.length; i++) {
+                    var chan = rgb[i] / 255;
+                    lum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);
+                }
+                return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];
+            },
+
+            contrast: function (color2) {
+                // http://www.w3.org/TR/WCAG20/#contrast-ratiodef
+                var lum1 = this.luminosity();
+                var lum2 = color2.luminosity();
+                if (lum1 > lum2) {
+                    return (lum1 + 0.05) / (lum2 + 0.05);
+                }
+                return (lum2 + 0.05) / (lum1 + 0.05);
+            },
+
+            level: function (color2) {
+                var contrastRatio = this.contrast(color2);
+                if (contrastRatio >= 7.1) {
+                    return 'AAA';
+                }
+
+                return (contrastRatio >= 4.5) ? 'AA' : '';
+            },
+
+            dark: function () {
+                // YIQ equation from http://24ways.org/2010/calculating-color-contrast
+                var rgb = this.values.rgb;
+                var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;
+                return yiq < 128;
+            },
+
+            light: function () {
+                return !this.dark();
+            },
+
+            negate: function () {
+                var rgb = [];
+                for (var i = 0; i < 3; i++) {
+                    rgb[i] = 255 - this.values.rgb[i];
+                }
+                this.setValues('rgb', rgb);
+                return this;
+            },
+
+            lighten: function (ratio) {
+                var hsl = this.values.hsl;
+                hsl[2] += hsl[2] * ratio;
+                this.setValues('hsl', hsl);
+                return this;
+            },
+
+            darken: function (ratio) {
+                var hsl = this.values.hsl;
+                hsl[2] -= hsl[2] * ratio;
+                this.setValues('hsl', hsl);
+                return this;
+            },
+
+            saturate: function (ratio) {
+                var hsl = this.values.hsl;
+                hsl[1] += hsl[1] * ratio;
+                this.setValues('hsl', hsl);
+                return this;
+            },
+
+            desaturate: function (ratio) {
+                var hsl = this.values.hsl;
+                hsl[1] -= hsl[1] * ratio;
+                this.setValues('hsl', hsl);
+                return this;
+            },
+
+            whiten: function (ratio) {
+                var hwb = this.values.hwb;
+                hwb[1] += hwb[1] * ratio;
+                this.setValues('hwb', hwb);
+                return this;
+            },
+
+            blacken: function (ratio) {
+                var hwb = this.values.hwb;
+                hwb[2] += hwb[2] * ratio;
+                this.setValues('hwb', hwb);
+                return this;
+            },
+
+            greyscale: function () {
+                var rgb = this.values.rgb;
+                // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale
+                var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;
+                this.setValues('rgb', [val, val, val]);
+                return this;
+            },
+
+            clearer: function (ratio) {
+                var alpha = this.values.alpha;
+                this.setValues('alpha', alpha - (alpha * ratio));
+                return this;
+            },
+
+            opaquer: function (ratio) {
+                var alpha = this.values.alpha;
+                this.setValues('alpha', alpha + (alpha * ratio));
+                return this;
+            },
+
+            rotate: function (degrees) {
+                var hsl = this.values.hsl;
+                var hue = (hsl[0] + degrees) % 360;
+                hsl[0] = hue < 0 ? 360 + hue : hue;
+                this.setValues('hsl', hsl);
+                return this;
+            },
+
+            /**
+             * Ported from sass implementation in C
+             * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209
+             */
+            mix: function (mixinColor, weight) {
+                var color1 = this;
+                var color2 = mixinColor;
+                var p = weight === undefined ? 0.5 : weight;
+
+                var w = 2 * p - 1;
+                var a = color1.alpha() - color2.alpha();
+
+                var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;
+                var w2 = 1 - w1;
+
+                return this
+                    .rgb(
+                        w1 * color1.red() + w2 * color2.red(),
+                        w1 * color1.green() + w2 * color2.green(),
+                        w1 * color1.blue() + w2 * color2.blue()
+                    )
+                    .alpha(color1.alpha() * p + color2.alpha() * (1 - p));
+            },
+
+            toJSON: function () {
+                return this.rgb();
+            },
+
+            clone: function () {
+                // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,
+                // making the final build way to big to embed in Chart.js. So let's do it manually,
+                // assuming that values to clone are 1 dimension arrays containing only numbers,
+                // except 'alpha' which is a number.
+                var result = new Color();
+                var source = this.values;
+                var target = result.values;
+                var value, type;
+
+                for (var prop in source) {
+                    if (source.hasOwnProperty(prop)) {
+                        value = source[prop];
+                        type = ({}).toString.call(value);
+                        if (type === '[object Array]') {
+                            target[prop] = value.slice(0);
+                        } else if (type === '[object Number]') {
+                            target[prop] = value;
+                        } else {
+                            console.error('unexpected color value:', value);
+                        }
+                    }
+                }
+
+                return result;
+            }
+        };
+
+        Color.prototype.spaces = {
+            rgb: ['red', 'green', 'blue'],
+            hsl: ['hue', 'saturation', 'lightness'],
+            hsv: ['hue', 'saturation', 'value'],
+            hwb: ['hue', 'whiteness', 'blackness'],
+            cmyk: ['cyan', 'magenta', 'yellow', 'black']
+        };
+
+        Color.prototype.maxes = {
+            rgb: [255, 255, 255],
+            hsl: [360, 100, 100],
+            hsv: [360, 100, 100],
+            hwb: [360, 100, 100],
+            cmyk: [100, 100, 100, 100]
+        };
+
+        Color.prototype.getValues = function (space) {
+            var values = this.values;
+            var vals = {};
+
+            for (var i = 0; i < space.length; i++) {
+                vals[space.charAt(i)] = values[space][i];
+            }
+
+            if (values.alpha !== 1) {
+                vals.a = values.alpha;
+            }
+
+            // {r: 255, g: 255, b: 255, a: 0.4}
+            return vals;
+        };
+
+        Color.prototype.setValues = function (space, vals) {
+            var values = this.values;
+            var spaces = this.spaces;
+            var maxes = this.maxes;
+            var alpha = 1;
+            var i;
+
+            this.valid = true;
+
+            if (space === 'alpha') {
+                alpha = vals;
+            } else if (vals.length) {
+                // [10, 10, 10]
+                values[space] = vals.slice(0, space.length);
+                alpha = vals[space.length];
+            } else if (vals[space.charAt(0)] !== undefined) {
+                // {r: 10, g: 10, b: 10}
+                for (i = 0; i < space.length; i++) {
+                    values[space][i] = vals[space.charAt(i)];
+                }
+
+                alpha = vals.a;
+            } else if (vals[spaces[space][0]] !== undefined) {
+                // {red: 10, green: 10, blue: 10}
+                var chans = spaces[space];
+
+                for (i = 0; i < space.length; i++) {
+                    values[space][i] = vals[chans[i]];
+                }
+
+                alpha = vals.alpha;
+            }
+
+            values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));
+
+            if (space === 'alpha') {
+                return false;
+            }
+
+            var capped;
+
+            // cap values of the space prior converting all values
+            for (i = 0; i < space.length; i++) {
+                capped = Math.max(0, Math.min(maxes[space][i], values[space][i]));
+                values[space][i] = Math.round(capped);
+            }
+
+            // convert to all the other color spaces
+            for (var sname in spaces) {
+                if (sname !== space) {
+                    values[sname] = convert[space][sname](values[space]);
+                }
+            }
+
+            return true;
+        };
+
+        Color.prototype.setSpace = function (space, args) {
+            var vals = args[0];
+
+            if (vals === undefined) {
+                // color.rgb()
+                return this.getValues(space);
+            }
+
+            // color.rgb(10, 10, 10)
+            if (typeof vals === 'number') {
+                vals = Array.prototype.slice.call(args);
+            }
+
+            this.setValues(space, vals);
+            return this;
+        };
+
+        Color.prototype.setChannel = function (space, index, val) {
+            var svalues = this.values[space];
+            if (val === undefined) {
+                // color.red()
+                return svalues[index];
+            } else if (val === svalues[index]) {
+                // color.red(color.red())
+                return this;
+            }
+
+            // color.red(100)
+            svalues[index] = val;
+            this.setValues(space, svalues);
+
+            return this;
+        };
+
+        if (typeof window !== 'undefined') {
+            window.Color = Color;
+        }
+
+        module.exports = Color;
+
+    },{"2":2,"5":5}],4:[function(require,module,exports){
+        /* MIT license */
+
+        module.exports = {
+            rgb2hsl: rgb2hsl,
+            rgb2hsv: rgb2hsv,
+            rgb2hwb: rgb2hwb,
+            rgb2cmyk: rgb2cmyk,
+            rgb2keyword: rgb2keyword,
+            rgb2xyz: rgb2xyz,
+            rgb2lab: rgb2lab,
+            rgb2lch: rgb2lch,
+
+            hsl2rgb: hsl2rgb,
+            hsl2hsv: hsl2hsv,
+            hsl2hwb: hsl2hwb,
+            hsl2cmyk: hsl2cmyk,
+            hsl2keyword: hsl2keyword,
+
+            hsv2rgb: hsv2rgb,
+            hsv2hsl: hsv2hsl,
+            hsv2hwb: hsv2hwb,
+            hsv2cmyk: hsv2cmyk,
+            hsv2keyword: hsv2keyword,
+
+            hwb2rgb: hwb2rgb,
+            hwb2hsl: hwb2hsl,
+            hwb2hsv: hwb2hsv,
+            hwb2cmyk: hwb2cmyk,
+            hwb2keyword: hwb2keyword,
+
+            cmyk2rgb: cmyk2rgb,
+            cmyk2hsl: cmyk2hsl,
+            cmyk2hsv: cmyk2hsv,
+            cmyk2hwb: cmyk2hwb,
+            cmyk2keyword: cmyk2keyword,
+
+            keyword2rgb: keyword2rgb,
+            keyword2hsl: keyword2hsl,
+            keyword2hsv: keyword2hsv,
+            keyword2hwb: keyword2hwb,
+            keyword2cmyk: keyword2cmyk,
+            keyword2lab: keyword2lab,
+            keyword2xyz: keyword2xyz,
+
+            xyz2rgb: xyz2rgb,
+            xyz2lab: xyz2lab,
+            xyz2lch: xyz2lch,
+
+            lab2xyz: lab2xyz,
+            lab2rgb: lab2rgb,
+            lab2lch: lab2lch,
+
+            lch2lab: lch2lab,
+            lch2xyz: lch2xyz,
+            lch2rgb: lch2rgb
+        }
+
+
+        function rgb2hsl(rgb) {
+            var r = rgb[0]/255,
+                g = rgb[1]/255,
+                b = rgb[2]/255,
+                min = Math.min(r, g, b),
+                max = Math.max(r, g, b),
+                delta = max - min,
+                h, s, l;
+
+            if (max == min)
+                h = 0;
+            else if (r == max)
+                h = (g - b) / delta;
+            else if (g == max)
+                h = 2 + (b - r) / delta;
+            else if (b == max)
+                h = 4 + (r - g)/ delta;
+
+            h = Math.min(h * 60, 360);
+
+            if (h < 0)
+                h += 360;
+
+            l = (min + max) / 2;
+
+            if (max == min)
+                s = 0;
+            else if (l <= 0.5)
+                s = delta / (max + min);
+            else
+                s = delta / (2 - max - min);
+
+            return [h, s * 100, l * 100];
+        }
+
+        function rgb2hsv(rgb) {
+            var r = rgb[0],
+                g = rgb[1],
+                b = rgb[2],
+                min = Math.min(r, g, b),
+                max = Math.max(r, g, b),
+                delta = max - min,
+                h, s, v;
+
+            if (max == 0)
+                s = 0;
+            else
+                s = (delta/max * 1000)/10;
+
+            if (max == min)
+                h = 0;
+            else if (r == max)
+                h = (g - b) / delta;
+            else if (g == max)
+                h = 2 + (b - r) / delta;
+            else if (b == max)
+                h = 4 + (r - g) / delta;
+
+            h = Math.min(h * 60, 360);
+
+            if (h < 0)
+                h += 360;
+
+            v = ((max / 255) * 1000) / 10;
+
+            return [h, s, v];
+        }
+
+        function rgb2hwb(rgb) {
+            var r = rgb[0],
+                g = rgb[1],
+                b = rgb[2],
+                h = rgb2hsl(rgb)[0],
+                w = 1/255 * Math.min(r, Math.min(g, b)),
+                b = 1 - 1/255 * Math.max(r, Math.max(g, b));
+
+            return [h, w * 100, b * 100];
+        }
+
+        function rgb2cmyk(rgb) {
+            var r = rgb[0] / 255,
+                g = rgb[1] / 255,
+                b = rgb[2] / 255,
+                c, m, y, k;
+
+            k = Math.min(1 - r, 1 - g, 1 - b);
+            c = (1 - r - k) / (1 - k) || 0;
+            m = (1 - g - k) / (1 - k) || 0;
+            y = (1 - b - k) / (1 - k) || 0;
+            return [c * 100, m * 100, y * 100, k * 100];
+        }
+
+        function rgb2keyword(rgb) {
+            return reverseKeywords[JSON.stringify(rgb)];
+        }
+
+        function rgb2xyz(rgb) {
+            var r = rgb[0] / 255,
+                g = rgb[1] / 255,
+                b = rgb[2] / 255;
+
+            // assume sRGB
+            r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);
+            g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);
+            b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);
+
+            var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
+            var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
+            var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
+
+            return [x * 100, y *100, z * 100];
+        }
+
+        function rgb2lab(rgb) {
+            var xyz = rgb2xyz(rgb),
+                x = xyz[0],
+                y = xyz[1],
+                z = xyz[2],
+                l, a, b;
+
+            x /= 95.047;
+            y /= 100;
+            z /= 108.883;
+
+            x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);
+            y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);
+            z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);
+
+            l = (116 * y) - 16;
+            a = 500 * (x - y);
+            b = 200 * (y - z);
+
+            return [l, a, b];
+        }
+
+        function rgb2lch(args) {
+            return lab2lch(rgb2lab(args));
+        }
+
+        function hsl2rgb(hsl) {
+            var h = hsl[0] / 360,
+                s = hsl[1] / 100,
+                l = hsl[2] / 100,
+                t1, t2, t3, rgb, val;
+
+            if (s == 0) {
+                val = l * 255;
+                return [val, val, val];
+            }
+
+            if (l < 0.5)
+                t2 = l * (1 + s);
+            else
+                t2 = l + s - l * s;
+            t1 = 2 * l - t2;
+
+            rgb = [0, 0, 0];
+            for (var i = 0; i < 3; i++) {
+                t3 = h + 1 / 3 * - (i - 1);
+                t3 < 0 && t3++;
+                t3 > 1 && t3--;
+
+                if (6 * t3 < 1)
+                    val = t1 + (t2 - t1) * 6 * t3;
+                else if (2 * t3 < 1)
+                    val = t2;
+                else if (3 * t3 < 2)
+                    val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
+                else
+                    val = t1;
+
+                rgb[i] = val * 255;
+            }
+
+            return rgb;
+        }
+
+        function hsl2hsv(hsl) {
+            var h = hsl[0],
+                s = hsl[1] / 100,
+                l = hsl[2] / 100,
+                sv, v;
+
+            if(l === 0) {
+                // no need to do calc on black
+                // also avoids divide by 0 error
+                return [0, 0, 0];
+            }
+
+            l *= 2;
+            s *= (l <= 1) ? l : 2 - l;
+            v = (l + s) / 2;
+            sv = (2 * s) / (l + s);
+            return [h, sv * 100, v * 100];
+        }
+
+        function hsl2hwb(args) {
+            return rgb2hwb(hsl2rgb(args));
+        }
+
+        function hsl2cmyk(args) {
+            return rgb2cmyk(hsl2rgb(args));
+        }
+
+        function hsl2keyword(args) {
+            return rgb2keyword(hsl2rgb(args));
+        }
+
+
+        function hsv2rgb(hsv) {
+            var h = hsv[0] / 60,
+                s = hsv[1] / 100,
+                v = hsv[2] / 100,
+                hi = Math.floor(h) % 6;
+
+            var f = h - Math.floor(h),
+                p = 255 * v * (1 - s),
+                q = 255 * v * (1 - (s * f)),
+                t = 255 * v * (1 - (s * (1 - f))),
+                v = 255 * v;
+
+            switch(hi) {
+                case 0:
+                    return [v, t, p];
+                case 1:
+                    return [q, v, p];
+                case 2:
+                    return [p, v, t];
+                case 3:
+                    return [p, q, v];
+                case 4:
+                    return [t, p, v];
+                case 5:
+                    return [v, p, q];
+            }
+        }
+
+        function hsv2hsl(hsv) {
+            var h = hsv[0],
+                s = hsv[1] / 100,
+                v = hsv[2] / 100,
+                sl, l;
+
+            l = (2 - s) * v;
+            sl = s * v;
+            sl /= (l <= 1) ? l : 2 - l;
+            sl = sl || 0;
+            l /= 2;
+            return [h, sl * 100, l * 100];
+        }
+
+        function hsv2hwb(args) {
+            return rgb2hwb(hsv2rgb(args))
+        }
+
+        function hsv2cmyk(args) {
+            return rgb2cmyk(hsv2rgb(args));
+        }
+
+        function hsv2keyword(args) {
+            return rgb2keyword(hsv2rgb(args));
+        }
+
+// http://dev.w3.org/csswg/css-color/#hwb-to-rgb
+        function hwb2rgb(hwb) {
+            var h = hwb[0] / 360,
+                wh = hwb[1] / 100,
+                bl = hwb[2] / 100,
+                ratio = wh + bl,
+                i, v, f, n;
+
+            // wh + bl cant be > 1
+            if (ratio > 1) {
+                wh /= ratio;
+                bl /= ratio;
+            }
+
+            i = Math.floor(6 * h);
+            v = 1 - bl;
+            f = 6 * h - i;
+            if ((i & 0x01) != 0) {
+                f = 1 - f;
+            }
+            n = wh + f * (v - wh);  // linear interpolation
+
+            switch (i) {
+                default:
+                case 6:
+                case 0: r = v; g = n; b = wh; break;
+                case 1: r = n; g = v; b = wh; break;
+                case 2: r = wh; g = v; b = n; break;
+                case 3: r = wh; g = n; b = v; break;
+                case 4: r = n; g = wh; b = v; break;
+                case 5: r = v; g = wh; b = n; break;
+            }
+
+            return [r * 255, g * 255, b * 255];
+        }
+
+        function hwb2hsl(args) {
+            return rgb2hsl(hwb2rgb(args));
+        }
+
+        function hwb2hsv(args) {
+            return rgb2hsv(hwb2rgb(args));
+        }
+
+        function hwb2cmyk(args) {
+            return rgb2cmyk(hwb2rgb(args));
+        }
+
+        function hwb2keyword(args) {
+            return rgb2keyword(hwb2rgb(args));
+        }
+
+        function cmyk2rgb(cmyk) {
+            var c = cmyk[0] / 100,
+                m = cmyk[1] / 100,
+                y = cmyk[2] / 100,
+                k = cmyk[3] / 100,
+                r, g, b;
+
+            r = 1 - Math.min(1, c * (1 - k) + k);
+            g = 1 - Math.min(1, m * (1 - k) + k);
+            b = 1 - Math.min(1, y * (1 - k) + k);
+            return [r * 255, g * 255, b * 255];
+        }
+
+        function cmyk2hsl(args) {
+            return rgb2hsl(cmyk2rgb(args));
+        }
+
+        function cmyk2hsv(args) {
+            return rgb2hsv(cmyk2rgb(args));
+        }
+
+        function cmyk2hwb(args) {
+            return rgb2hwb(cmyk2rgb(args));
+        }
+
+        function cmyk2keyword(args) {
+            return rgb2keyword(cmyk2rgb(args));
+        }
+
+
+        function xyz2rgb(xyz) {
+            var x = xyz[0] / 100,
+                y = xyz[1] / 100,
+                z = xyz[2] / 100,
+                r, g, b;
+
+            r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
+            g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
+            b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
+
+            // assume sRGB
+            r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)
+                : r = (r * 12.92);
+
+            g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)
+                : g = (g * 12.92);
+
+            b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)
+                : b = (b * 12.92);
+
+            r = Math.min(Math.max(0, r), 1);
+            g = Math.min(Math.max(0, g), 1);
+            b = Math.min(Math.max(0, b), 1);
+
+            return [r * 255, g * 255, b * 255];
+        }
+
+        function xyz2lab(xyz) {
+            var x = xyz[0],
+                y = xyz[1],
+                z = xyz[2],
+                l, a, b;
+
+            x /= 95.047;
+            y /= 100;
+            z /= 108.883;
+
+            x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);
+            y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);
+            z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);
+
+            l = (116 * y) - 16;
+            a = 500 * (x - y);
+            b = 200 * (y - z);
+
+            return [l, a, b];
+        }
+
+        function xyz2lch(args) {
+            return lab2lch(xyz2lab(args));
+        }
+
+        function lab2xyz(lab) {
+            var l = lab[0],
+                a = lab[1],
+                b = lab[2],
+                x, y, z, y2;
+
+            if (l <= 8) {
+                y = (l * 100) / 903.3;
+                y2 = (7.787 * (y / 100)) + (16 / 116);
+            } else {
+                y = 100 * Math.pow((l + 16) / 116, 3);
+                y2 = Math.pow(y / 100, 1/3);
+            }
+
+            x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);
+
+            z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);
+
+            return [x, y, z];
+        }
+
+        function lab2lch(lab) {
+            var l = lab[0],
+                a = lab[1],
+                b = lab[2],
+                hr, h, c;
+
+            hr = Math.atan2(b, a);
+            h = hr * 360 / 2 / Math.PI;
+            if (h < 0) {
+                h += 360;
+            }
+            c = Math.sqrt(a * a + b * b);
+            return [l, c, h];
+        }
+
+        function lab2rgb(args) {
+            return xyz2rgb(lab2xyz(args));
+        }
+
+        function lch2lab(lch) {
+            var l = lch[0],
+                c = lch[1],
+                h = lch[2],
+                a, b, hr;
+
+            hr = h / 360 * 2 * Math.PI;
+            a = c * Math.cos(hr);
+            b = c * Math.sin(hr);
+            return [l, a, b];
+        }
+
+        function lch2xyz(args) {
+            return lab2xyz(lch2lab(args));
+        }
+
+        function lch2rgb(args) {
+            return lab2rgb(lch2lab(args));
+        }
+
+        function keyword2rgb(keyword) {
+            return cssKeywords[keyword];
+        }
+
+        function keyword2hsl(args) {
+            return rgb2hsl(keyword2rgb(args));
+        }
+
+        function keyword2hsv(args) {
+            return rgb2hsv(keyword2rgb(args));
+        }
+
+        function keyword2hwb(args) {
+            return rgb2hwb(keyword2rgb(args));
+        }
+
+        function keyword2cmyk(args) {
+            return rgb2cmyk(keyword2rgb(args));
+        }
+
+        function keyword2lab(args) {
+            return rgb2lab(keyword2rgb(args));
+        }
+
+        function keyword2xyz(args) {
+            return rgb2xyz(keyword2rgb(args));
+        }
+
+        var cssKeywords = {
+            aliceblue:  [240,248,255],
+            antiquewhite: [250,235,215],
+            aqua: [0,255,255],
+            aquamarine: [127,255,212],
+            azure:  [240,255,255],
+            beige:  [245,245,220],
+            bisque: [255,228,196],
+            black:  [0,0,0],
+            blanchedalmond: [255,235,205],
+            blue: [0,0,255],
+            blueviolet: [138,43,226],
+            brown:  [165,42,42],
+            burlywood:  [222,184,135],
+            cadetblue:  [95,158,160],
+            chartreuse: [127,255,0],
+            chocolate:  [210,105,30],
+            coral:  [255,127,80],
+            cornflowerblue: [100,149,237],
+            cornsilk: [255,248,220],
+            crimson:  [220,20,60],
+            cyan: [0,255,255],
+            darkblue: [0,0,139],
+            darkcyan: [0,139,139],
+            darkgoldenrod:  [184,134,11],
+            darkgray: [169,169,169],
+            darkgreen:  [0,100,0],
+            darkgrey: [169,169,169],
+            darkkhaki:  [189,183,107],
+            darkmagenta:  [139,0,139],
+            darkolivegreen: [85,107,47],
+            darkorange: [255,140,0],
+            darkorchid: [153,50,204],
+            darkred:  [139,0,0],
+            darksalmon: [233,150,122],
+            darkseagreen: [143,188,143],
+            darkslateblue:  [72,61,139],
+            darkslategray:  [47,79,79],
+            darkslategrey:  [47,79,79],
+            darkturquoise:  [0,206,209],
+            darkviolet: [148,0,211],
+            deeppink: [255,20,147],
+            deepskyblue:  [0,191,255],
+            dimgray:  [105,105,105],
+            dimgrey:  [105,105,105],
+            dodgerblue: [30,144,255],
+            firebrick:  [178,34,34],
+            floralwhite:  [255,250,240],
+            forestgreen:  [34,139,34],
+            fuchsia:  [255,0,255],
+            gainsboro:  [220,220,220],
+            ghostwhite: [248,248,255],
+            gold: [255,215,0],
+            goldenrod:  [218,165,32],
+            gray: [128,128,128],
+            green:  [0,128,0],
+            greenyellow:  [173,255,47],
+            grey: [128,128,128],
+            honeydew: [240,255,240],
+            hotpink:  [255,105,180],
+            indianred:  [205,92,92],
+            indigo: [75,0,130],
+            ivory:  [255,255,240],
+            khaki:  [240,230,140],
+            lavender: [230,230,250],
+            lavenderblush:  [255,240,245],
+            lawngreen:  [124,252,0],
+            lemonchiffon: [255,250,205],
+            lightblue:  [173,216,230],
+            lightcoral: [240,128,128],
+            lightcyan:  [224,255,255],
+            lightgoldenrodyellow: [250,250,210],
+            lightgray:  [211,211,211],
+            lightgreen: [144,238,144],
+            lightgrey:  [211,211,211],
+            lightpink:  [255,182,193],
+            lightsalmon:  [255,160,122],
+            lightseagreen:  [32,178,170],
+            lightskyblue: [135,206,250],
+            lightslategray: [119,136,153],
+            lightslategrey: [119,136,153],
+            lightsteelblue: [176,196,222],
+            lightyellow:  [255,255,224],
+            lime: [0,255,0],
+            limegreen:  [50,205,50],
+            linen:  [250,240,230],
+            magenta:  [255,0,255],
+            maroon: [128,0,0],
+            mediumaquamarine: [102,205,170],
+            mediumblue: [0,0,205],
+            mediumorchid: [186,85,211],
+            mediumpurple: [147,112,219],
+            mediumseagreen: [60,179,113],
+            mediumslateblue:  [123,104,238],
+            mediumspringgreen:  [0,250,154],
+            mediumturquoise:  [72,209,204],
+            mediumvioletred:  [199,21,133],
+            midnightblue: [25,25,112],
+            mintcream:  [245,255,250],
+            mistyrose:  [255,228,225],
+            moccasin: [255,228,181],
+            navajowhite:  [255,222,173],
+            navy: [0,0,128],
+            oldlace:  [253,245,230],
+            olive:  [128,128,0],
+            olivedrab:  [107,142,35],
+            orange: [255,165,0],
+            orangered:  [255,69,0],
+            orchid: [218,112,214],
+            palegoldenrod:  [238,232,170],
+            palegreen:  [152,251,152],
+            paleturquoise:  [175,238,238],
+            palevioletred:  [219,112,147],
+            papayawhip: [255,239,213],
+            peachpuff:  [255,218,185],
+            peru: [205,133,63],
+            pink: [255,192,203],
+            plum: [221,160,221],
+            powderblue: [176,224,230],
+            purple: [128,0,128],
+            rebeccapurple: [102, 51, 153],
+            red:  [255,0,0],
+            rosybrown:  [188,143,143],
+            royalblue:  [65,105,225],
+            saddlebrown:  [139,69,19],
+            salmon: [250,128,114],
+            sandybrown: [244,164,96],
+            seagreen: [46,139,87],
+            seashell: [255,245,238],
+            sienna: [160,82,45],
+            silver: [192,192,192],
+            skyblue:  [135,206,235],
+            slateblue:  [106,90,205],
+            slategray:  [112,128,144],
+            slategrey:  [112,128,144],
+            snow: [255,250,250],
+            springgreen:  [0,255,127],
+            steelblue:  [70,130,180],
+            tan:  [210,180,140],
+            teal: [0,128,128],
+            thistle:  [216,191,216],
+            tomato: [255,99,71],
+            turquoise:  [64,224,208],
+            violet: [238,130,238],
+            wheat:  [245,222,179],
+            white:  [255,255,255],
+            whitesmoke: [245,245,245],
+            yellow: [255,255,0],
+            yellowgreen:  [154,205,50]
+        };
+
+        var reverseKeywords = {};
+        for (var key in cssKeywords) {
+            reverseKeywords[JSON.stringify(cssKeywords[key])] = key;
+        }
+
+    },{}],5:[function(require,module,exports){
+        var conversions = require(4);
+
+        var convert = function() {
+            return new Converter();
+        }
+
+        for (var func in conversions) {
+            // export Raw versions
+            convert[func + "Raw"] =  (function(func) {
+                // accept array or plain args
+                return function(arg) {
+                    if (typeof arg == "number")
+                        arg = Array.prototype.slice.call(arguments);
+                    return conversions[func](arg);
+                }
+            })(func);
+
+            var pair = /(\w+)2(\w+)/.exec(func),
+                from = pair[1],
+                to = pair[2];
+
+            // export rgb2hsl and ["rgb"]["hsl"]
+            convert[from] = convert[from] || {};
+
+            convert[from][to] = convert[func] = (function(func) {
+                return function(arg) {
+                    if (typeof arg == "number")
+                        arg = Array.prototype.slice.call(arguments);
+
+                    var val = conversions[func](arg);
+                    if (typeof val == "string" || val === undefined)
+                        return val; // keyword
+
+                    for (var i = 0; i < val.length; i++)
+                        val[i] = Math.round(val[i]);
+                    return val;
+                }
+            })(func);
+        }
+
+
+        /* Converter does lazy conversion and caching */
+        var Converter = function() {
+            this.convs = {};
+        };
+
+        /* Either get the values for a space or
+  set the values for a space, depending on args */
+        Converter.prototype.routeSpace = function(space, args) {
+            var values = args[0];
+            if (values === undefined) {
+                // color.rgb()
+                return this.getValues(space);
+            }
+            // color.rgb(10, 10, 10)
+            if (typeof values == "number") {
+                values = Array.prototype.slice.call(args);
+            }
+
+            return this.setValues(space, values);
+        };
+
+        /* Set the values for a space, invalidating cache */
+        Converter.prototype.setValues = function(space, values) {
+            this.space = space;
+            this.convs = {};
+            this.convs[space] = values;
+            return this;
+        };
+
+        /* Get the values for a space. If there's already
+  a conversion for the space, fetch it, otherwise
+  compute it */
+        Converter.prototype.getValues = function(space) {
+            var vals = this.convs[space];
+            if (!vals) {
+                var fspace = this.space,
+                    from = this.convs[fspace];
+                vals = convert[fspace][space](from);
+
+                this.convs[space] = vals;
+            }
+            return vals;
+        };
+
+        ["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) {
+            Converter.prototype[space] = function(vals) {
+                return this.routeSpace(space, arguments);
+            }
+        });
+
+        module.exports = convert;
+    },{"4":4}],6:[function(require,module,exports){
+        'use strict'
+
+        module.exports = {
+            "aliceblue": [240, 248, 255],
+            "antiquewhite": [250, 235, 215],
+            "aqua": [0, 255, 255],
+            "aquamarine": [127, 255, 212],
+            "azure": [240, 255, 255],
+            "beige": [245, 245, 220],
+            "bisque": [255, 228, 196],
+            "black": [0, 0, 0],
+            "blanchedalmond": [255, 235, 205],
+            "blue": [0, 0, 255],
+            "blueviolet": [138, 43, 226],
+            "brown": [165, 42, 42],
+            "burlywood": [222, 184, 135],
+            "cadetblue": [95, 158, 160],
+            "chartreuse": [127, 255, 0],
+            "chocolate": [210, 105, 30],
+            "coral": [255, 127, 80],
+            "cornflowerblue": [100, 149, 237],
+            "cornsilk": [255, 248, 220],
+            "crimson": [220, 20, 60],
+            "cyan": [0, 255, 255],
+            "darkblue": [0, 0, 139],
+            "darkcyan": [0, 139, 139],
+            "darkgoldenrod": [184, 134, 11],
+            "darkgray": [169, 169, 169],
+            "darkgreen": [0, 100, 0],
+            "darkgrey": [169, 169, 169],
+            "darkkhaki": [189, 183, 107],
+            "darkmagenta": [139, 0, 139],
+            "darkolivegreen": [85, 107, 47],
+            "darkorange": [255, 140, 0],
+            "darkorchid": [153, 50, 204],
+            "darkred": [139, 0, 0],
+            "darksalmon": [233, 150, 122],
+            "darkseagreen": [143, 188, 143],
+            "darkslateblue": [72, 61, 139],
+            "darkslategray": [47, 79, 79],
+            "darkslategrey": [47, 79, 79],
+            "darkturquoise": [0, 206, 209],
+            "darkviolet": [148, 0, 211],
+            "deeppink": [255, 20, 147],
+            "deepskyblue": [0, 191, 255],
+            "dimgray": [105, 105, 105],
+            "dimgrey": [105, 105, 105],
+            "dodgerblue": [30, 144, 255],
+            "firebrick": [178, 34, 34],
+            "floralwhite": [255, 250, 240],
+            "forestgreen": [34, 139, 34],
+            "fuchsia": [255, 0, 255],
+            "gainsboro": [220, 220, 220],
+            "ghostwhite": [248, 248, 255],
+            "gold": [255, 215, 0],
+            "goldenrod": [218, 165, 32],
+            "gray": [128, 128, 128],
+            "green": [0, 128, 0],
+            "greenyellow": [173, 255, 47],
+            "grey": [128, 128, 128],
+            "honeydew": [240, 255, 240],
+            "hotpink": [255, 105, 180],
+            "indianred": [205, 92, 92],
+            "indigo": [75, 0, 130],
+            "ivory": [255, 255, 240],
+            "khaki": [240, 230, 140],
+            "lavender": [230, 230, 250],
+            "lavenderblush": [255, 240, 245],
+            "lawngreen": [124, 252, 0],
+            "lemonchiffon": [255, 250, 205],
+            "lightblue": [173, 216, 230],
+            "lightcoral": [240, 128, 128],
+            "lightcyan": [224, 255, 255],
+            "lightgoldenrodyellow": [250, 250, 210],
+            "lightgray": [211, 211, 211],
+            "lightgreen": [144, 238, 144],
+            "lightgrey": [211, 211, 211],
+            "lightpink": [255, 182, 193],
+            "lightsalmon": [255, 160, 122],
+            "lightseagreen": [32, 178, 170],
+            "lightskyblue": [135, 206, 250],
+            "lightslategray": [119, 136, 153],
+            "lightslategrey": [119, 136, 153],
+            "lightsteelblue": [176, 196, 222],
+            "lightyellow": [255, 255, 224],
+            "lime": [0, 255, 0],
+            "limegreen": [50, 205, 50],
+            "linen": [250, 240, 230],
+            "magenta": [255, 0, 255],
+            "maroon": [128, 0, 0],
+            "mediumaquamarine": [102, 205, 170],
+            "mediumblue": [0, 0, 205],
+            "mediumorchid": [186, 85, 211],
+            "mediumpurple": [147, 112, 219],
+            "mediumseagreen": [60, 179, 113],
+            "mediumslateblue": [123, 104, 238],
+            "mediumspringgreen": [0, 250, 154],
+            "mediumturquoise": [72, 209, 204],
+            "mediumvioletred": [199, 21, 133],
+            "midnightblue": [25, 25, 112],
+            "mintcream": [245, 255, 250],
+            "mistyrose": [255, 228, 225],
+            "moccasin": [255, 228, 181],
+            "navajowhite": [255, 222, 173],
+            "navy": [0, 0, 128],
+            "oldlace": [253, 245, 230],
+            "olive": [128, 128, 0],
+            "olivedrab": [107, 142, 35],
+            "orange": [255, 165, 0],
+            "orangered": [255, 69, 0],
+            "orchid": [218, 112, 214],
+            "palegoldenrod": [238, 232, 170],
+            "palegreen": [152, 251, 152],
+            "paleturquoise": [175, 238, 238],
+            "palevioletred": [219, 112, 147],
+            "papayawhip": [255, 239, 213],
+            "peachpuff": [255, 218, 185],
+            "peru": [205, 133, 63],
+            "pink": [255, 192, 203],
+            "plum": [221, 160, 221],
+            "powderblue": [176, 224, 230],
+            "purple": [128, 0, 128],
+            "rebeccapurple": [102, 51, 153],
+            "red": [255, 0, 0],
+            "rosybrown": [188, 143, 143],
+            "royalblue": [65, 105, 225],
+            "saddlebrown": [139, 69, 19],
+            "salmon": [250, 128, 114],
+            "sandybrown": [244, 164, 96],
+            "seagreen": [46, 139, 87],
+            "seashell": [255, 245, 238],
+            "sienna": [160, 82, 45],
+            "silver": [192, 192, 192],
+            "skyblue": [135, 206, 235],
+            "slateblue": [106, 90, 205],
+            "slategray": [112, 128, 144],
+            "slategrey": [112, 128, 144],
+            "snow": [255, 250, 250],
+            "springgreen": [0, 255, 127],
+            "steelblue": [70, 130, 180],
+            "tan": [210, 180, 140],
+            "teal": [0, 128, 128],
+            "thistle": [216, 191, 216],
+            "tomato": [255, 99, 71],
+            "turquoise": [64, 224, 208],
+            "violet": [238, 130, 238],
+            "wheat": [245, 222, 179],
+            "white": [255, 255, 255],
+            "whitesmoke": [245, 245, 245],
+            "yellow": [255, 255, 0],
+            "yellowgreen": [154, 205, 50]
+        };
+
+    },{}],7:[function(require,module,exports){
+        /**
+         * @namespace Chart
+         */
+        var Chart = require(29)();
+
+        Chart.helpers = require(45);
+
+// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!
+        require(27)(Chart);
+
+        Chart.defaults = require(25);
+        Chart.Element = require(26);
+        Chart.elements = require(40);
+        Chart.Interaction = require(28);
+        Chart.platform = require(48);
+
+        require(31)(Chart);
+        require(22)(Chart);
+        require(23)(Chart);
+        require(24)(Chart);
+        require(30)(Chart);
+        require(33)(Chart);
+        require(32)(Chart);
+        require(35)(Chart);
+
+        require(54)(Chart);
+        require(52)(Chart);
+        require(53)(Chart);
+        require(55)(Chart);
+        require(56)(Chart);
+        require(57)(Chart);
+
+// Controllers must be loaded after elements
+// See Chart.core.datasetController.dataElementType
+        require(15)(Chart);
+        require(16)(Chart);
+        require(17)(Chart);
+        require(18)(Chart);
+        require(19)(Chart);
+        require(20)(Chart);
+        require(21)(Chart);
+
+        require(8)(Chart);
+        require(9)(Chart);
+        require(10)(Chart);
+        require(11)(Chart);
+        require(12)(Chart);
+        require(13)(Chart);
+        require(14)(Chart);
+
+// Loading built-it plugins
+        var plugins = [];
+
+        plugins.push(
+            require(49)(Chart),
+            require(50)(Chart),
+            require(51)(Chart)
+        );
+
+        Chart.plugins.register(plugins);
+
+        Chart.platform.initialize();
+
+        module.exports = Chart;
+        if (typeof window !== 'undefined') {
+            window.Chart = Chart;
+        }
+
+// DEPRECATIONS
+
+        /**
+         * Provided for backward compatibility, use Chart.helpers.canvas instead.
+         * @namespace Chart.canvasHelpers
+         * @deprecated since version 2.6.0
+         * @todo remove at version 3
+         * @private
+         */
+        Chart.canvasHelpers = Chart.helpers.canvas;
+
+    },{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"27":27,"28":28,"29":29,"30":30,"31":31,"32":32,"33":33,"35":35,"40":40,"45":45,"48":48,"49":49,"50":50,"51":51,"52":52,"53":53,"54":54,"55":55,"56":56,"57":57,"8":8,"9":9}],8:[function(require,module,exports){
+        'use strict';
+
+        module.exports = function(Chart) {
+
+            Chart.Bar = function(context, config) {
+                config.type = 'bar';
+
+                return new Chart(context, config);
+            };
+
+        };
+
+    },{}],9:[function(require,module,exports){
+        'use strict';
+
+        module.exports = function(Chart) {
+
+            Chart.Bubble = function(context, config) {
+                config.type = 'bubble';
+                return new Chart(context, config);
+            };
+
+        };
+
+    },{}],10:[function(require,module,exports){
+        'use strict';
+
+        module.exports = function(Chart) {
+
+            Chart.Doughnut = function(context, config) {
+                config.type = 'doughnut';
+
+                return new Chart(context, config);
+            };
+
+        };
+
+    },{}],11:[function(require,module,exports){
+        'use strict';
+
+        module.exports = function(Chart) {
+
+            Chart.Line = function(context, config) {
+                config.type = 'line';
+
+                return new Chart(context, config);
+            };
+
+        };
+
+    },{}],12:[function(require,module,exports){
+        'use strict';
+
+        module.exports = function(Chart) {
+
+            Chart.PolarArea = function(context, config) {
+                config.type = 'polarArea';
+
+                return new Chart(context, config);
+            };
+
+        };
+
+    },{}],13:[function(require,module,exports){
+        'use strict';
+
+        module.exports = function(Chart) {
+
+            Chart.Radar = function(context, config) {
+                config.type = 'radar';
+
+                return new Chart(context, config);
+            };
+
+        };
+
+    },{}],14:[function(require,module,exports){
+        'use strict';
+
+        module.exports = function(Chart) {
+            Chart.Scatter = function(context, config) {
+                config.type = 'scatter';
+                return new Chart(context, config);
+            };
+        };
+
+    },{}],15:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var elements = require(40);
+        var helpers = require(45);
+
+        defaults._set('bar', {
+            hover: {
+                mode: 'label'
+            },
+
+            scales: {
+                xAxes: [{
+                    type: 'category',
+
+                    // Specific to Bar Controller
+                    categoryPercentage: 0.8,
+                    barPercentage: 0.9,
+
+                    // offset settings
+                    offset: true,
+
+                    // grid line settings
+                    gridLines: {
+                        offsetGridLines: true
+                    }
+                }],
+
+                yAxes: [{
+                    type: 'linear'
+                }]
+            }
+        });
+
+        defaults._set('horizontalBar', {
+            hover: {
+                mode: 'index',
+                axis: 'y'
+            },
+
+            scales: {
+                xAxes: [{
+                    type: 'linear',
+                    position: 'bottom'
+                }],
+
+                yAxes: [{
+                    position: 'left',
+                    type: 'category',
+
+                    // Specific to Horizontal Bar Controller
+                    categoryPercentage: 0.8,
+                    barPercentage: 0.9,
+
+                    // offset settings
+                    offset: true,
+
+                    // grid line settings
+                    gridLines: {
+                        offsetGridLines: true
+                    }
+                }]
+            },
+
+            elements: {
+                rectangle: {
+                    borderSkipped: 'left'
+                }
+            },
+
+            tooltips: {
+                callbacks: {
+                    title: function(item, data) {
+                        // Pick first xLabel for now
+                        var title = '';
+
+                        if (item.length > 0) {
+                            if (item[0].yLabel) {
+                                title = item[0].yLabel;
+                            } else if (data.labels.length > 0 && item[0].index < data.labels.length) {
+                                title = data.labels[item[0].index];
+                            }
+                        }
+
+                        return title;
+                    },
+
+                    label: function(item, data) {
+                        var datasetLabel = data.datasets[item.datasetIndex].label || '';
+                        return datasetLabel + ': ' + item.xLabel;
+                    }
+                },
+                mode: 'index',
+                axis: 'y'
+            }
+        });
+
+        module.exports = function(Chart) {
+
+            Chart.controllers.bar = Chart.DatasetController.extend({
+
+                dataElementType: elements.Rectangle,
+
+                initialize: function() {
+                    var me = this;
+                    var meta;
+
+                    Chart.DatasetController.prototype.initialize.apply(me, arguments);
+
+                    meta = me.getMeta();
+                    meta.stack = me.getDataset().stack;
+                    meta.bar = true;
+                },
+
+                update: function(reset) {
+                    var me = this;
+                    var rects = me.getMeta().data;
+                    var i, ilen;
+
+                    me._ruler = me.getRuler();
+
+                    for (i = 0, ilen = rects.length; i < ilen; ++i) {
+                        me.updateElement(rects[i], i, reset);
+                    }
+                },
+
+                updateElement: function(rectangle, index, reset) {
+                    var me = this;
+                    var chart = me.chart;
+                    var meta = me.getMeta();
+                    var dataset = me.getDataset();
+                    var custom = rectangle.custom || {};
+                    var rectangleOptions = chart.options.elements.rectangle;
+
+                    rectangle._xScale = me.getScaleForId(meta.xAxisID);
+                    rectangle._yScale = me.getScaleForId(meta.yAxisID);
+                    rectangle._datasetIndex = me.index;
+                    rectangle._index = index;
+
+                    rectangle._model = {
+                        datasetLabel: dataset.label,
+                        label: chart.data.labels[index],
+                        borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,
+                        backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),
+                        borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),
+                        borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)
+                    };
+
+                    me.updateElementGeometry(rectangle, index, reset);
+
+                    rectangle.pivot();
+                },
+
+                /**
+                 * @private
+                 */
+                updateElementGeometry: function(rectangle, index, reset) {
+                    var me = this;
+                    var model = rectangle._model;
+                    var vscale = me.getValueScale();
+                    var base = vscale.getBasePixel();
+                    var horizontal = vscale.isHorizontal();
+                    var ruler = me._ruler || me.getRuler();
+                    var vpixels = me.calculateBarValuePixels(me.index, index);
+                    var ipixels = me.calculateBarIndexPixels(me.index, index, ruler);
+
+                    model.horizontal = horizontal;
+                    model.base = reset ? base : vpixels.base;
+                    model.x = horizontal ? reset ? base : vpixels.head : ipixels.center;
+                    model.y = horizontal ? ipixels.center : reset ? base : vpixels.head;
+                    model.height = horizontal ? ipixels.size : undefined;
+                    model.width = horizontal ? undefined : ipixels.size;
+                },
+
+                /**
+                 * @private
+                 */
+                getValueScaleId: function() {
+                    return this.getMeta().yAxisID;
+                },
+
+                /**
+                 * @private
+                 */
+                getIndexScaleId: function() {
+                    return this.getMeta().xAxisID;
+                },
+
+                /**
+                 * @private
+                 */
+                getValueScale: function() {
+                    return this.getScaleForId(this.getValueScaleId());
+                },
+
+                /**
+                 * @private
+                 */
+                getIndexScale: function() {
+                    return this.getScaleForId(this.getIndexScaleId());
+                },
+
+                /**
+                 * Returns the effective number of stacks based on groups and bar visibility.
+                 * @private
+                 */
+                getStackCount: function(last) {
+                    var me = this;
+                    var chart = me.chart;
+                    var scale = me.getIndexScale();
+                    var stacked = scale.options.stacked;
+                    var ilen = last === undefined ? chart.data.datasets.length : last + 1;
+                    var stacks = [];
+                    var i, meta;
+
+                    for (i = 0; i < ilen; ++i) {
+                        meta = chart.getDatasetMeta(i);
+                        if (meta.bar && chart.isDatasetVisible(i) &&
+                            (stacked === false ||
+                                (stacked === true && stacks.indexOf(meta.stack) === -1) ||
+                                (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {
+                            stacks.push(meta.stack);
+                        }
+                    }
+
+                    return stacks.length;
+                },
+
+                /**
+                 * Returns the stack index for the given dataset based on groups and bar visibility.
+                 * @private
+                 */
+                getStackIndex: function(datasetIndex) {
+                    return this.getStackCount(datasetIndex) - 1;
+                },
+
+                /**
+                 * @private
+                 */
+                getRuler: function() {
+                    var me = this;
+                    var scale = me.getIndexScale();
+                    var stackCount = me.getStackCount();
+                    var datasetIndex = me.index;
+                    var pixels = [];
+                    var isHorizontal = scale.isHorizontal();
+                    var start = isHorizontal ? scale.left : scale.top;
+                    var end = start + (isHorizontal ? scale.width : scale.height);
+                    var i, ilen;
+
+                    for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {
+                        pixels.push(scale.getPixelForValue(null, i, datasetIndex));
+                    }
+
+                    return {
+                        pixels: pixels,
+                        start: start,
+                        end: end,
+                        stackCount: stackCount,
+                        scale: scale
+                    };
+                },
+
+                /**
+                 * Note: pixel values are not clamped to the scale area.
+                 * @private
+                 */
+                calculateBarValuePixels: function(datasetIndex, index) {
+                    var me = this;
+                    var chart = me.chart;
+                    var meta = me.getMeta();
+                    var scale = me.getValueScale();
+                    var datasets = chart.data.datasets;
+                    var value = scale.getRightValue(datasets[datasetIndex].data[index]);
+                    var stacked = scale.options.stacked;
+                    var stack = meta.stack;
+                    var start = 0;
+                    var i, imeta, ivalue, base, head, size;
+
+                    if (stacked || (stacked === undefined && stack !== undefined)) {
+                        for (i = 0; i < datasetIndex; ++i) {
+                            imeta = chart.getDatasetMeta(i);
+
+                            if (imeta.bar &&
+                                imeta.stack === stack &&
+                                imeta.controller.getValueScaleId() === scale.id &&
+                                chart.isDatasetVisible(i)) {
+
+                                ivalue = scale.getRightValue(datasets[i].data[index]);
+                                if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {
+                                    start += ivalue;
+                                }
+                            }
+                        }
+                    }
+
+                    base = scale.getPixelForValue(start);
+                    head = scale.getPixelForValue(start + value);
+                    size = (head - base) / 2;
+
+                    return {
+                        size: size,
+                        base: base,
+                        head: head,
+                        center: head + size / 2
+                    };
+                },
+
+                /**
+                 * @private
+                 */
+                calculateBarIndexPixels: function(datasetIndex, index, ruler) {
+                    var me = this;
+                    var options = ruler.scale.options;
+                    var stackIndex = me.getStackIndex(datasetIndex);
+                    var pixels = ruler.pixels;
+                    var base = pixels[index];
+                    var length = pixels.length;
+                    var start = ruler.start;
+                    var end = ruler.end;
+                    var leftSampleSize, rightSampleSize, leftCategorySize, rightCategorySize, fullBarSize, size;
+
+                    if (length === 1) {
+                        leftSampleSize = base > start ? base - start : end - base;
+                        rightSampleSize = base < end ? end - base : base - start;
+                    } else {
+                        if (index > 0) {
+                            leftSampleSize = (base - pixels[index - 1]) / 2;
+                            if (index === length - 1) {
+                                rightSampleSize = leftSampleSize;
+                            }
+                        }
+                        if (index < length - 1) {
+                            rightSampleSize = (pixels[index + 1] - base) / 2;
+                            if (index === 0) {
+                                leftSampleSize = rightSampleSize;
+                            }
+                        }
+                    }
+
+                    leftCategorySize = leftSampleSize * options.categoryPercentage;
+                    rightCategorySize = rightSampleSize * options.categoryPercentage;
+                    fullBarSize = (leftCategorySize + rightCategorySize) / ruler.stackCount;
+                    size = fullBarSize * options.barPercentage;
+
+                    size = Math.min(
+                        helpers.valueOrDefault(options.barThickness, size),
+                        helpers.valueOrDefault(options.maxBarThickness, Infinity));
+
+                    base -= leftCategorySize;
+                    base += fullBarSize * stackIndex;
+                    base += (fullBarSize - size) / 2;
+
+                    return {
+                        size: size,
+                        base: base,
+                        head: base + size,
+                        center: base + size / 2
+                    };
+                },
+
+                draw: function() {
+                    var me = this;
+                    var chart = me.chart;
+                    var scale = me.getValueScale();
+                    var rects = me.getMeta().data;
+                    var dataset = me.getDataset();
+                    var ilen = rects.length;
+                    var i = 0;
+
+                    helpers.canvas.clipArea(chart.ctx, chart.chartArea);
+
+                    for (; i < ilen; ++i) {
+                        if (!isNaN(scale.getRightValue(dataset.data[i]))) {
+                            rects[i].draw();
+                        }
+                    }
+
+                    helpers.canvas.unclipArea(chart.ctx);
+                },
+
+                setHoverStyle: function(rectangle) {
+                    var dataset = this.chart.data.datasets[rectangle._datasetIndex];
+                    var index = rectangle._index;
+                    var custom = rectangle.custom || {};
+                    var model = rectangle._model;
+
+                    model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));
+                    model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor));
+                    model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);
+                },
+
+                removeHoverStyle: function(rectangle) {
+                    var dataset = this.chart.data.datasets[rectangle._datasetIndex];
+                    var index = rectangle._index;
+                    var custom = rectangle.custom || {};
+                    var model = rectangle._model;
+                    var rectangleElementOptions = this.chart.options.elements.rectangle;
+
+                    model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor);
+                    model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor);
+                    model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth);
+                }
+            });
+
+            Chart.controllers.horizontalBar = Chart.controllers.bar.extend({
+                /**
+                 * @private
+                 */
+                getValueScaleId: function() {
+                    return this.getMeta().xAxisID;
+                },
+
+                /**
+                 * @private
+                 */
+                getIndexScaleId: function() {
+                    return this.getMeta().yAxisID;
+                }
+            });
+        };
+
+    },{"25":25,"40":40,"45":45}],16:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var elements = require(40);
+        var helpers = require(45);
+
+        defaults._set('bubble', {
+            hover: {
+                mode: 'single'
+            },
+
+            scales: {
+                xAxes: [{
+                    type: 'linear', // bubble should probably use a linear scale by default
+                    position: 'bottom',
+                    id: 'x-axis-0' // need an ID so datasets can reference the scale
+                }],
+                yAxes: [{
+                    type: 'linear',
+                    position: 'left',
+                    id: 'y-axis-0'
+                }]
+            },
+
+            tooltips: {
+                callbacks: {
+                    title: function() {
+                        // Title doesn't make sense for scatter since we format the data as a point
+                        return '';
+                    },
+                    label: function(item, data) {
+                        var datasetLabel = data.datasets[item.datasetIndex].label || '';
+                        var dataPoint = data.datasets[item.datasetIndex].data[item.index];
+                        return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';
+                    }
+                }
+            }
+        });
+
+
+        module.exports = function(Chart) {
+
+            Chart.controllers.bubble = Chart.DatasetController.extend({
+                /**
+                 * @protected
+                 */
+                dataElementType: elements.Point,
+
+                /**
+                 * @protected
+                 */
+                update: function(reset) {
+                    var me = this;
+                    var meta = me.getMeta();
+                    var points = meta.data;
+
+                    // Update Points
+                    helpers.each(points, function(point, index) {
+                        me.updateElement(point, index, reset);
+                    });
+                },
+
+                /**
+                 * @protected
+                 */
+                updateElement: function(point, index, reset) {
+                    var me = this;
+                    var meta = me.getMeta();
+                    var custom = point.custom || {};
+                    var xScale = me.getScaleForId(meta.xAxisID);
+                    var yScale = me.getScaleForId(meta.yAxisID);
+                    var options = me._resolveElementOptions(point, index);
+                    var data = me.getDataset().data[index];
+                    var dsIndex = me.index;
+
+                    var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);
+                    var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);
+
+                    point._xScale = xScale;
+                    point._yScale = yScale;
+                    point._options = options;
+                    point._datasetIndex = dsIndex;
+                    point._index = index;
+                    point._model = {
+                        backgroundColor: options.backgroundColor,
+                        borderColor: options.borderColor,
+                        borderWidth: options.borderWidth,
+                        hitRadius: options.hitRadius,
+                        pointStyle: options.pointStyle,
+                        radius: reset ? 0 : options.radius,
+                        skip: custom.skip || isNaN(x) || isNaN(y),
+                        x: x,
+                        y: y,
+                    };
+
+                    point.pivot();
+                },
+
+                /**
+                 * @protected
+                 */
+                setHoverStyle: function(point) {
+                    var model = point._model;
+                    var options = point._options;
+
+                    model.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));
+                    model.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));
+                    model.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);
+                    model.radius = options.radius + options.hoverRadius;
+                },
+
+                /**
+                 * @protected
+                 */
+                removeHoverStyle: function(point) {
+                    var model = point._model;
+                    var options = point._options;
+
+                    model.backgroundColor = options.backgroundColor;
+                    model.borderColor = options.borderColor;
+                    model.borderWidth = options.borderWidth;
+                    model.radius = options.radius;
+                },
+
+                /**
+                 * @private
+                 */
+                _resolveElementOptions: function(point, index) {
+                    var me = this;
+                    var chart = me.chart;
+                    var datasets = chart.data.datasets;
+                    var dataset = datasets[me.index];
+                    var custom = point.custom || {};
+                    var options = chart.options.elements.point;
+                    var resolve = helpers.options.resolve;
+                    var data = dataset.data[index];
+                    var values = {};
+                    var i, ilen, key;
+
+                    // Scriptable options
+                    var context = {
+                        chart: chart,
+                        dataIndex: index,
+                        dataset: dataset,
+                        datasetIndex: me.index
+                    };
+
+                    var keys = [
+                        'backgroundColor',
+                        'borderColor',
+                        'borderWidth',
+                        'hoverBackgroundColor',
+                        'hoverBorderColor',
+                        'hoverBorderWidth',
+                        'hoverRadius',
+                        'hitRadius',
+                        'pointStyle'
+                    ];
+
+                    for (i = 0, ilen = keys.length; i < ilen; ++i) {
+                        key = keys[i];
+                        values[key] = resolve([
+                            custom[key],
+                            dataset[key],
+                            options[key]
+                        ], context, index);
+                    }
+
+                    // Custom radius resolution
+                    values.radius = resolve([
+                        custom.radius,
+                        data ? data.r : undefined,
+                        dataset.radius,
+                        options.radius
+                    ], context, index);
+
+                    return values;
+                }
+            });
+        };
+
+    },{"25":25,"40":40,"45":45}],17:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var elements = require(40);
+        var helpers = require(45);
+
+        defaults._set('doughnut', {
+            animation: {
+                // Boolean - Whether we animate the rotation of the Doughnut
+                animateRotate: true,
+                // Boolean - Whether we animate scaling the Doughnut from the centre
+                animateScale: false
+            },
+            hover: {
+                mode: 'single'
+            },
+            legendCallback: function(chart) {
+                var text = [];
+                text.push('<ul class="' + chart.id + '-legend">');
+
+                var data = chart.data;
+                var datasets = data.datasets;
+                var labels = data.labels;
+
+                if (datasets.length) {
+                    for (var i = 0; i < datasets[0].data.length; ++i) {
+                        text.push('<li><span style="background-color:' + datasets[0].backgroundColor[i] + '"></span>');
+                        if (labels[i]) {
+                            text.push(labels[i]);
+                        }
+                        text.push('</li>');
+                    }
+                }
+
+                text.push('</ul>');
+                return text.join('');
+            },
+            legend: {
+                labels: {
+                    generateLabels: function(chart) {
+                        var data = chart.data;
+                        if (data.labels.length && data.datasets.length) {
+                            return data.labels.map(function(label, i) {
+                                var meta = chart.getDatasetMeta(0);
+                                var ds = data.datasets[0];
+                                var arc = meta.data[i];
+                                var custom = arc && arc.custom || {};
+                                var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;
+                                var arcOpts = chart.options.elements.arc;
+                                var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);
+                                var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);
+                                var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);
+
+                                return {
+                                    text: label,
+                                    fillStyle: fill,
+                                    strokeStyle: stroke,
+                                    lineWidth: bw,
+                                    hidden: isNaN(ds.data[i]) || meta.data[i].hidden,
+
+                                    // Extra data used for toggling the correct item
+                                    index: i
+                                };
+                            });
+                        }
+                        return [];
+                    }
+                },
+
+                onClick: function(e, legendItem) {
+                    var index = legendItem.index;
+                    var chart = this.chart;
+                    var i, ilen, meta;
+
+                    for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {
+                        meta = chart.getDatasetMeta(i);
+                        // toggle visibility of index if exists
+                        if (meta.data[index]) {
+                            meta.data[index].hidden = !meta.data[index].hidden;
+                        }
+                    }
+
+                    chart.update();
+                }
+            },
+
+            // The percentage of the chart that we cut out of the middle.
+            cutoutPercentage: 50,
+
+            // The rotation of the chart, where the first data arc begins.
+            rotation: Math.PI * -0.5,
+
+            // The total circumference of the chart.
+            circumference: Math.PI * 2.0,
+
+            // Need to override these to give a nice default
+            tooltips: {
+                callbacks: {
+                    title: function() {
+                        return '';
+                    },
+                    label: function(tooltipItem, data) {
+                        var dataLabel = data.labels[tooltipItem.index];
+                        var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
+
+                        if (helpers.isArray(dataLabel)) {
+                            // show value on first line of multiline label
+                            // need to clone because we are changing the value
+                            dataLabel = dataLabel.slice();
+                            dataLabel[0] += value;
+                        } else {
+                            dataLabel += value;
+                        }
+
+                        return dataLabel;
+                    }
+                }
+            }
+        });
+
+        defaults._set('pie', helpers.clone(defaults.doughnut));
+        defaults._set('pie', {
+            cutoutPercentage: 0
+        });
+
+        module.exports = function(Chart) {
+
+            Chart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({
+
+                dataElementType: elements.Arc,
+
+                linkScales: helpers.noop,
+
+                // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly
+                getRingIndex: function(datasetIndex) {
+                    var ringIndex = 0;
+
+                    for (var j = 0; j < datasetIndex; ++j) {
+                        if (this.chart.isDatasetVisible(j)) {
+                            ++ringIndex;
+                        }
+                    }
+
+                    return ringIndex;
+                },
+
+                update: function(reset) {
+                    var me = this;
+                    var chart = me.chart;
+                    var chartArea = chart.chartArea;
+                    var opts = chart.options;
+                    var arcOpts = opts.elements.arc;
+                    var availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;
+                    var availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;
+                    var minSize = Math.min(availableWidth, availableHeight);
+                    var offset = {x: 0, y: 0};
+                    var meta = me.getMeta();
+                    var cutoutPercentage = opts.cutoutPercentage;
+                    var circumference = opts.circumference;
+
+                    // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc
+                    if (circumference < Math.PI * 2.0) {
+                        var startAngle = opts.rotation % (Math.PI * 2.0);
+                        startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);
+                        var endAngle = startAngle + circumference;
+                        var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};
+                        var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};
+                        var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);
+                        var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);
+                        var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);
+                        var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);
+                        var cutout = cutoutPercentage / 100.0;
+                        var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};
+                        var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};
+                        var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};
+                        minSize = Math.min(availableWidth / size.width, availableHeight / size.height);
+                        offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};
+                    }
+
+                    chart.borderWidth = me.getMaxBorderWidth(meta.data);
+                    chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);
+                    chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);
+                    chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();
+                    chart.offsetX = offset.x * chart.outerRadius;
+                    chart.offsetY = offset.y * chart.outerRadius;
+
+                    meta.total = me.calculateTotal();
+
+                    me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));
+                    me.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);
+
+                    helpers.each(meta.data, function(arc, index) {
+                        me.updateElement(arc, index, reset);
+                    });
+                },
+
+                updateElement: function(arc, index, reset) {
+                    var me = this;
+                    var chart = me.chart;
+                    var chartArea = chart.chartArea;
+                    var opts = chart.options;
+                    var animationOpts = opts.animation;
+                    var centerX = (chartArea.left + chartArea.right) / 2;
+                    var centerY = (chartArea.top + chartArea.bottom) / 2;
+                    var startAngle = opts.rotation; // non reset case handled later
+                    var endAngle = opts.rotation; // non reset case handled later
+                    var dataset = me.getDataset();
+                    var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));
+                    var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;
+                    var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;
+                    var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;
+
+                    helpers.extend(arc, {
+                        // Utility
+                        _datasetIndex: me.index,
+                        _index: index,
+
+                        // Desired view properties
+                        _model: {
+                            x: centerX + chart.offsetX,
+                            y: centerY + chart.offsetY,
+                            startAngle: startAngle,
+                            endAngle: endAngle,
+                            circumference: circumference,
+                            outerRadius: outerRadius,
+                            innerRadius: innerRadius,
+                            label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])
+                        }
+                    });
+
+                    var model = arc._model;
+                    // Resets the visual styles
+                    this.removeHoverStyle(arc);
+
+                    // Set correct angles if not resetting
+                    if (!reset || !animationOpts.animateRotate) {
+                        if (index === 0) {
+                            model.startAngle = opts.rotation;
+                        } else {
+                            model.startAngle = me.getMeta().data[index - 1]._model.endAngle;
+                        }
+
+                        model.endAngle = model.startAngle + model.circumference;
+                    }
+
+                    arc.pivot();
+                },
+
+                removeHoverStyle: function(arc) {
+                    Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);
+                },
+
+                calculateTotal: function() {
+                    var dataset = this.getDataset();
+                    var meta = this.getMeta();
+                    var total = 0;
+                    var value;
+
+                    helpers.each(meta.data, function(element, index) {
+                        value = dataset.data[index];
+                        if (!isNaN(value) && !element.hidden) {
+                            total += Math.abs(value);
+                        }
+                    });
+
+                    /* if (total === 0) {
+				total = NaN;
+			}*/
+
+                    return total;
+                },
+
+                calculateCircumference: function(value) {
+                    var total = this.getMeta().total;
+                    if (total > 0 && !isNaN(value)) {
+                        return (Math.PI * 2.0) * (value / total);
+                    }
+                    return 0;
+                },
+
+                // gets the max border or hover width to properly scale pie charts
+                getMaxBorderWidth: function(arcs) {
+                    var max = 0;
+                    var index = this.index;
+                    var length = arcs.length;
+                    var borderWidth;
+                    var hoverWidth;
+
+                    for (var i = 0; i < length; i++) {
+                        borderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;
+                        hoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;
+
+                        max = borderWidth > max ? borderWidth : max;
+                        max = hoverWidth > max ? hoverWidth : max;
+                    }
+                    return max;
+                }
+            });
+        };
+
+    },{"25":25,"40":40,"45":45}],18:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var elements = require(40);
+        var helpers = require(45);
+
+        defaults._set('line', {
+            showLines: true,
+            spanGaps: false,
+
+            hover: {
+                mode: 'label'
+            },
+
+            scales: {
+                xAxes: [{
+                    type: 'category',
+                    id: 'x-axis-0'
+                }],
+                yAxes: [{
+                    type: 'linear',
+                    id: 'y-axis-0'
+                }]
+            }
+        });
+
+        module.exports = function(Chart) {
+
+            function lineEnabled(dataset, options) {
+                return helpers.valueOrDefault(dataset.showLine, options.showLines);
+            }
+
+            Chart.controllers.line = Chart.DatasetController.extend({
+
+                datasetElementType: elements.Line,
+
+                dataElementType: elements.Point,
+
+                update: function(reset) {
+                    var me = this;
+                    var meta = me.getMeta();
+                    var line = meta.dataset;
+                    var points = meta.data || [];
+                    var options = me.chart.options;
+                    var lineElementOptions = options.elements.line;
+                    var scale = me.getScaleForId(meta.yAxisID);
+                    var i, ilen, custom;
+                    var dataset = me.getDataset();
+                    var showLine = lineEnabled(dataset, options);
+
+                    // Update Line
+                    if (showLine) {
+                        custom = line.custom || {};
+
+                        // Compatibility: If the properties are defined with only the old name, use those values
+                        if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {
+                            dataset.lineTension = dataset.tension;
+                        }
+
+                        // Utility
+                        line._scale = scale;
+                        line._datasetIndex = me.index;
+                        // Data
+                        line._children = points;
+                        // Model
+                        line._model = {
+                            // Appearance
+                            // The default behavior of lines is to break at null values, according
+                            // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158
+                            // This option gives lines the ability to span gaps
+                            spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,
+                            tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),
+                            backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),
+                            borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),
+                            borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),
+                            borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),
+                            borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),
+                            borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),
+                            borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),
+                            fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),
+                            steppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),
+                            cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),
+                        };
+
+                        line.pivot();
+                    }
+
+                    // Update Points
+                    for (i = 0, ilen = points.length; i < ilen; ++i) {
+                        me.updateElement(points[i], i, reset);
+                    }
+
+                    if (showLine && line._model.tension !== 0) {
+                        me.updateBezierControlPoints();
+                    }
+
+                    // Now pivot the point for animation
+                    for (i = 0, ilen = points.length; i < ilen; ++i) {
+                        points[i].pivot();
+                    }
+                },
+
+                getPointBackgroundColor: function(point, index) {
+                    var backgroundColor = this.chart.options.elements.point.backgroundColor;
+                    var dataset = this.getDataset();
+                    var custom = point.custom || {};
+
+                    if (custom.backgroundColor) {
+                        backgroundColor = custom.backgroundColor;
+                    } else if (dataset.pointBackgroundColor) {
+                        backgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);
+                    } else if (dataset.backgroundColor) {
+                        backgroundColor = dataset.backgroundColor;
+                    }
+
+                    return backgroundColor;
+                },
+
+                getPointBorderColor: function(point, index) {
+                    var borderColor = this.chart.options.elements.point.borderColor;
+                    var dataset = this.getDataset();
+                    var custom = point.custom || {};
+
+                    if (custom.borderColor) {
+                        borderColor = custom.borderColor;
+                    } else if (dataset.pointBorderColor) {
+                        borderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);
+                    } else if (dataset.borderColor) {
+                        borderColor = dataset.borderColor;
+                    }
+
+                    return borderColor;
+                },
+
+                getPointBorderWidth: function(point, index) {
+                    var borderWidth = this.chart.options.elements.point.borderWidth;
+                    var dataset = this.getDataset();
+                    var custom = point.custom || {};
+
+                    if (!isNaN(custom.borderWidth)) {
+                        borderWidth = custom.borderWidth;
+                    } else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {
+                        borderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);
+                    } else if (!isNaN(dataset.borderWidth)) {
+                        borderWidth = dataset.borderWidth;
+                    }
+
+                    return borderWidth;
+                },
+
+                updateElement: function(point, index, reset) {
+                    var me = this;
+                    var meta = me.getMeta();
+                    var custom = point.custom || {};
+                    var dataset = me.getDataset();
+                    var datasetIndex = me.index;
+                    var value = dataset.data[index];
+                    var yScale = me.getScaleForId(meta.yAxisID);
+                    var xScale = me.getScaleForId(meta.xAxisID);
+                    var pointOptions = me.chart.options.elements.point;
+                    var x, y;
+
+                    // Compatibility: If the properties are defined with only the old name, use those values
+                    if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {
+                        dataset.pointRadius = dataset.radius;
+                    }
+                    if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {
+                        dataset.pointHitRadius = dataset.hitRadius;
+                    }
+
+                    x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);
+                    y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);
+
+                    // Utility
+                    point._xScale = xScale;
+                    point._yScale = yScale;
+                    point._datasetIndex = datasetIndex;
+                    point._index = index;
+
+                    // Desired view properties
+                    point._model = {
+                        x: x,
+                        y: y,
+                        skip: custom.skip || isNaN(x) || isNaN(y),
+                        // Appearance
+                        radius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),
+                        pointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),
+                        backgroundColor: me.getPointBackgroundColor(point, index),
+                        borderColor: me.getPointBorderColor(point, index),
+                        borderWidth: me.getPointBorderWidth(point, index),
+                        tension: meta.dataset._model ? meta.dataset._model.tension : 0,
+                        steppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,
+                        // Tooltip
+                        hitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)
+                    };
+                },
+
+                calculatePointY: function(value, index, datasetIndex) {
+                    var me = this;
+                    var chart = me.chart;
+                    var meta = me.getMeta();
+                    var yScale = me.getScaleForId(meta.yAxisID);
+                    var sumPos = 0;
+                    var sumNeg = 0;
+                    var i, ds, dsMeta;
+
+                    if (yScale.options.stacked) {
+                        for (i = 0; i < datasetIndex; i++) {
+                            ds = chart.data.datasets[i];
+                            dsMeta = chart.getDatasetMeta(i);
+                            if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {
+                                var stackedRightValue = Number(yScale.getRightValue(ds.data[index]));
+                                if (stackedRightValue < 0) {
+                                    sumNeg += stackedRightValue || 0;
+                                } else {
+                                    sumPos += stackedRightValue || 0;
+                                }
+                            }
+                        }
+
+                        var rightValue = Number(yScale.getRightValue(value));
+                        if (rightValue < 0) {
+                            return yScale.getPixelForValue(sumNeg + rightValue);
+                        }
+                        return yScale.getPixelForValue(sumPos + rightValue);
+                    }
+
+                    return yScale.getPixelForValue(value);
+                },
+
+                updateBezierControlPoints: function() {
+                    var me = this;
+                    var meta = me.getMeta();
+                    var area = me.chart.chartArea;
+                    var points = (meta.data || []);
+                    var i, ilen, point, model, controlPoints;
+
+                    // Only consider points that are drawn in case the spanGaps option is used
+                    if (meta.dataset._model.spanGaps) {
+                        points = points.filter(function(pt) {
+                            return !pt._model.skip;
+                        });
+                    }
+
+                    function capControlPoint(pt, min, max) {
+                        return Math.max(Math.min(pt, max), min);
+                    }
+
+                    if (meta.dataset._model.cubicInterpolationMode === 'monotone') {
+                        helpers.splineCurveMonotone(points);
+                    } else {
+                        for (i = 0, ilen = points.length; i < ilen; ++i) {
+                            point = points[i];
+                            model = point._model;
+                            controlPoints = helpers.splineCurve(
+                                helpers.previousItem(points, i)._model,
+                                model,
+                                helpers.nextItem(points, i)._model,
+                                meta.dataset._model.tension
+                            );
+                            model.controlPointPreviousX = controlPoints.previous.x;
+                            model.controlPointPreviousY = controlPoints.previous.y;
+                            model.controlPointNextX = controlPoints.next.x;
+                            model.controlPointNextY = controlPoints.next.y;
+                        }
+                    }
+
+                    if (me.chart.options.elements.line.capBezierPoints) {
+                        for (i = 0, ilen = points.length; i < ilen; ++i) {
+                            model = points[i]._model;
+                            model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);
+                            model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);
+                            model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);
+                            model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);
+                        }
+                    }
+                },
+
+                draw: function() {
+                    var me = this;
+                    var chart = me.chart;
+                    var meta = me.getMeta();
+                    var points = meta.data || [];
+                    var area = chart.chartArea;
+                    var ilen = points.length;
+                    var i = 0;
+
+                    helpers.canvas.clipArea(chart.ctx, area);
+
+                    if (lineEnabled(me.getDataset(), chart.options)) {
+                        meta.dataset.draw();
+                    }
+
+                    helpers.canvas.unclipArea(chart.ctx);
+
+                    // Draw the points
+                    for (; i < ilen; ++i) {
+                        points[i].draw(area);
+                    }
+                },
+
+                setHoverStyle: function(point) {
+                    // Point
+                    var dataset = this.chart.data.datasets[point._datasetIndex];
+                    var index = point._index;
+                    var custom = point.custom || {};
+                    var model = point._model;
+
+                    model.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);
+                    model.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));
+                    model.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));
+                    model.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);
+                },
+
+                removeHoverStyle: function(point) {
+                    var me = this;
+                    var dataset = me.chart.data.datasets[point._datasetIndex];
+                    var index = point._index;
+                    var custom = point.custom || {};
+                    var model = point._model;
+
+                    // Compatibility: If the properties are defined with only the old name, use those values
+                    if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {
+                        dataset.pointRadius = dataset.radius;
+                    }
+
+                    model.radius = custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, me.chart.options.elements.point.radius);
+                    model.backgroundColor = me.getPointBackgroundColor(point, index);
+                    model.borderColor = me.getPointBorderColor(point, index);
+                    model.borderWidth = me.getPointBorderWidth(point, index);
+                }
+            });
+        };
+
+    },{"25":25,"40":40,"45":45}],19:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var elements = require(40);
+        var helpers = require(45);
+
+        defaults._set('polarArea', {
+            scale: {
+                type: 'radialLinear',
+                angleLines: {
+                    display: false
+                },
+                gridLines: {
+                    circular: true
+                },
+                pointLabels: {
+                    display: false
+                },
+                ticks: {
+                    beginAtZero: true
+                }
+            },
+
+            // Boolean - Whether to animate the rotation of the chart
+            animation: {
+                animateRotate: true,
+                animateScale: true
+            },
+
+            startAngle: -0.5 * Math.PI,
+            legendCallback: function(chart) {
+                var text = [];
+                text.push('<ul class="' + chart.id + '-legend">');
+
+                var data = chart.data;
+                var datasets = data.datasets;
+                var labels = data.labels;
+
+                if (datasets.length) {
+                    for (var i = 0; i < datasets[0].data.length; ++i) {
+                        text.push('<li><span style="background-color:' + datasets[0].backgroundColor[i] + '"></span>');
+                        if (labels[i]) {
+                            text.push(labels[i]);
+                        }
+                        text.push('</li>');
+                    }
+                }
+
+                text.push('</ul>');
+                return text.join('');
+            },
+            legend: {
+                labels: {
+                    generateLabels: function(chart) {
+                        var data = chart.data;
+                        if (data.labels.length && data.datasets.length) {
+                            return data.labels.map(function(label, i) {
+                                var meta = chart.getDatasetMeta(0);
+                                var ds = data.datasets[0];
+                                var arc = meta.data[i];
+                                var custom = arc.custom || {};
+                                var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;
+                                var arcOpts = chart.options.elements.arc;
+                                var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);
+                                var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);
+                                var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);
+
+                                return {
+                                    text: label,
+                                    fillStyle: fill,
+                                    strokeStyle: stroke,
+                                    lineWidth: bw,
+                                    hidden: isNaN(ds.data[i]) || meta.data[i].hidden,
+
+                                    // Extra data used for toggling the correct item
+                                    index: i
+                                };
+                            });
+                        }
+                        return [];
+                    }
+                },
+
+                onClick: function(e, legendItem) {
+                    var index = legendItem.index;
+                    var chart = this.chart;
+                    var i, ilen, meta;
+
+                    for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {
+                        meta = chart.getDatasetMeta(i);
+                        meta.data[index].hidden = !meta.data[index].hidden;
+                    }
+
+                    chart.update();
+                }
+            },
+
+            // Need to override these to give a nice default
+            tooltips: {
+                callbacks: {
+                    title: function() {
+                        return '';
+                    },
+                    label: function(item, data) {
+                        return data.labels[item.index] + ': ' + item.yLabel;
+                    }
+                }
+            }
+        });
+
+        module.exports = function(Chart) {
+
+            Chart.controllers.polarArea = Chart.DatasetController.extend({
+
+                dataElementType: elements.Arc,
+
+                linkScales: helpers.noop,
+
+                update: function(reset) {
+                    var me = this;
+                    var chart = me.chart;
+                    var chartArea = chart.chartArea;
+                    var meta = me.getMeta();
+                    var opts = chart.options;
+                    var arcOpts = opts.elements.arc;
+                    var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);
+                    chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);
+                    chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);
+                    chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();
+
+                    me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);
+                    me.innerRadius = me.outerRadius - chart.radiusLength;
+
+                    meta.count = me.countVisibleElements();
+
+                    helpers.each(meta.data, function(arc, index) {
+                        me.updateElement(arc, index, reset);
+                    });
+                },
+
+                updateElement: function(arc, index, reset) {
+                    var me = this;
+                    var chart = me.chart;
+                    var dataset = me.getDataset();
+                    var opts = chart.options;
+                    var animationOpts = opts.animation;
+                    var scale = chart.scale;
+                    var labels = chart.data.labels;
+
+                    var circumference = me.calculateCircumference(dataset.data[index]);
+                    var centerX = scale.xCenter;
+                    var centerY = scale.yCenter;
+
+                    // If there is NaN data before us, we need to calculate the starting angle correctly.
+                    // We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data
+                    var visibleCount = 0;
+                    var meta = me.getMeta();
+                    for (var i = 0; i < index; ++i) {
+                        if (!isNaN(dataset.data[i]) && !meta.data[i].hidden) {
+                            ++visibleCount;
+                        }
+                    }
+
+                    // var negHalfPI = -0.5 * Math.PI;
+                    var datasetStartAngle = opts.startAngle;
+                    var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);
+                    var startAngle = datasetStartAngle + (circumference * visibleCount);
+                    var endAngle = startAngle + (arc.hidden ? 0 : circumference);
+
+                    var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);
+
+                    helpers.extend(arc, {
+                        // Utility
+                        _datasetIndex: me.index,
+                        _index: index,
+                        _scale: scale,
+
+                        // Desired view properties
+                        _model: {
+                            x: centerX,
+                            y: centerY,
+                            innerRadius: 0,
+                            outerRadius: reset ? resetRadius : distance,
+                            startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,
+                            endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,
+                            label: helpers.valueAtIndexOrDefault(labels, index, labels[index])
+                        }
+                    });
+
+                    // Apply border and fill style
+                    me.removeHoverStyle(arc);
+
+                    arc.pivot();
+                },
+
+                removeHoverStyle: function(arc) {
+                    Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);
+                },
+
+                countVisibleElements: function() {
+                    var dataset = this.getDataset();
+                    var meta = this.getMeta();
+                    var count = 0;
+
+                    helpers.each(meta.data, function(element, index) {
+                        if (!isNaN(dataset.data[index]) && !element.hidden) {
+                            count++;
+                        }
+                    });
+
+                    return count;
+                },
+
+                calculateCircumference: function(value) {
+                    var count = this.getMeta().count;
+                    if (count > 0 && !isNaN(value)) {
+                        return (2 * Math.PI) / count;
+                    }
+                    return 0;
+                }
+            });
+        };
+
+    },{"25":25,"40":40,"45":45}],20:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var elements = require(40);
+        var helpers = require(45);
+
+        defaults._set('radar', {
+            scale: {
+                type: 'radialLinear'
+            },
+            elements: {
+                line: {
+                    tension: 0 // no bezier in radar
+                }
+            }
+        });
+
+        module.exports = function(Chart) {
+
+            Chart.controllers.radar = Chart.DatasetController.extend({
+
+                datasetElementType: elements.Line,
+
+                dataElementType: elements.Point,
+
+                linkScales: helpers.noop,
+
+                update: function(reset) {
+                    var me = this;
+                    var meta = me.getMeta();
+                    var line = meta.dataset;
+                    var points = meta.data;
+                    var custom = line.custom || {};
+                    var dataset = me.getDataset();
+                    var lineElementOptions = me.chart.options.elements.line;
+                    var scale = me.chart.scale;
+
+                    // Compatibility: If the properties are defined with only the old name, use those values
+                    if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {
+                        dataset.lineTension = dataset.tension;
+                    }
+
+                    helpers.extend(meta.dataset, {
+                        // Utility
+                        _datasetIndex: me.index,
+                        _scale: scale,
+                        // Data
+                        _children: points,
+                        _loop: true,
+                        // Model
+                        _model: {
+                            // Appearance
+                            tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),
+                            backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),
+                            borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),
+                            borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),
+                            fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),
+                            borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),
+                            borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),
+                            borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),
+                            borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),
+                        }
+                    });
+
+                    meta.dataset.pivot();
+
+                    // Update Points
+                    helpers.each(points, function(point, index) {
+                        me.updateElement(point, index, reset);
+                    }, me);
+
+                    // Update bezier control points
+                    me.updateBezierControlPoints();
+                },
+                updateElement: function(point, index, reset) {
+                    var me = this;
+                    var custom = point.custom || {};
+                    var dataset = me.getDataset();
+                    var scale = me.chart.scale;
+                    var pointElementOptions = me.chart.options.elements.point;
+                    var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);
+
+                    // Compatibility: If the properties are defined with only the old name, use those values
+                    if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {
+                        dataset.pointRadius = dataset.radius;
+                    }
+                    if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {
+                        dataset.pointHitRadius = dataset.hitRadius;
+                    }
+
+                    helpers.extend(point, {
+                        // Utility
+                        _datasetIndex: me.index,
+                        _index: index,
+                        _scale: scale,
+
+                        // Desired view properties
+                        _model: {
+                            x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales
+                            y: reset ? scale.yCenter : pointPosition.y,
+
+                            // Appearance
+                            tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),
+                            radius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),
+                            backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),
+                            borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),
+                            borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),
+                            pointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),
+
+                            // Tooltip
+                            hitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)
+                        }
+                    });
+
+                    point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));
+                },
+                updateBezierControlPoints: function() {
+                    var chartArea = this.chart.chartArea;
+                    var meta = this.getMeta();
+
+                    helpers.each(meta.data, function(point, index) {
+                        var model = point._model;
+                        var controlPoints = helpers.splineCurve(
+                            helpers.previousItem(meta.data, index, true)._model,
+                            model,
+                            helpers.nextItem(meta.data, index, true)._model,
+                            model.tension
+                        );
+
+                        // Prevent the bezier going outside of the bounds of the graph
+                        model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);
+                        model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);
+
+                        model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);
+                        model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);
+
+                        // Now pivot the point for animation
+                        point.pivot();
+                    });
+                },
+
+                setHoverStyle: function(point) {
+                    // Point
+                    var dataset = this.chart.data.datasets[point._datasetIndex];
+                    var custom = point.custom || {};
+                    var index = point._index;
+                    var model = point._model;
+
+                    model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);
+                    model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));
+                    model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));
+                    model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);
+                },
+
+                removeHoverStyle: function(point) {
+                    var dataset = this.chart.data.datasets[point._datasetIndex];
+                    var custom = point.custom || {};
+                    var index = point._index;
+                    var model = point._model;
+                    var pointElementOptions = this.chart.options.elements.point;
+
+                    model.radius = custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius);
+                    model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor);
+                    model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor);
+                    model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth);
+                }
+            });
+        };
+
+    },{"25":25,"40":40,"45":45}],21:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+
+        defaults._set('scatter', {
+            hover: {
+                mode: 'single'
+            },
+
+            scales: {
+                xAxes: [{
+                    id: 'x-axis-1',    // need an ID so datasets can reference the scale
+                    type: 'linear',    // scatter should not use a category axis
+                    position: 'bottom'
+                }],
+                yAxes: [{
+                    id: 'y-axis-1',
+                    type: 'linear',
+                    position: 'left'
+                }]
+            },
+
+            showLines: false,
+
+            tooltips: {
+                callbacks: {
+                    title: function() {
+                        return '';     // doesn't make sense for scatter since data are formatted as a point
+                    },
+                    label: function(item) {
+                        return '(' + item.xLabel + ', ' + item.yLabel + ')';
+                    }
+                }
+            }
+        });
+
+        module.exports = function(Chart) {
+
+            // Scatter charts use line controllers
+            Chart.controllers.scatter = Chart.controllers.line;
+
+        };
+
+    },{"25":25}],22:[function(require,module,exports){
+        /* global window: false */
+        'use strict';
+
+        var defaults = require(25);
+        var Element = require(26);
+        var helpers = require(45);
+
+        defaults._set('global', {
+            animation: {
+                duration: 1000,
+                easing: 'easeOutQuart',
+                onProgress: helpers.noop,
+                onComplete: helpers.noop
+            }
+        });
+
+        module.exports = function(Chart) {
+
+            Chart.Animation = Element.extend({
+                chart: null, // the animation associated chart instance
+                currentStep: 0, // the current animation step
+                numSteps: 60, // default number of steps
+                easing: '', // the easing to use for this animation
+                render: null, // render function used by the animation service
+
+                onAnimationProgress: null, // user specified callback to fire on each step of the animation
+                onAnimationComplete: null, // user specified callback to fire when the animation finishes
+            });
+
+            Chart.animationService = {
+                frameDuration: 17,
+                animations: [],
+                dropFrames: 0,
+                request: null,
+
+                /**
+                 * @param {Chart} chart - The chart to animate.
+                 * @param {Chart.Animation} animation - The animation that we will animate.
+                 * @param {Number} duration - The animation duration in ms.
+                 * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions
+                 */
+                addAnimation: function(chart, animation, duration, lazy) {
+                    var animations = this.animations;
+                    var i, ilen;
+
+                    animation.chart = chart;
+
+                    if (!lazy) {
+                        chart.animating = true;
+                    }
+
+                    for (i = 0, ilen = animations.length; i < ilen; ++i) {
+                        if (animations[i].chart === chart) {
+                            animations[i] = animation;
+                            return;
+                        }
+                    }
+
+                    animations.push(animation);
+
+                    // If there are no animations queued, manually kickstart a digest, for lack of a better word
+                    if (animations.length === 1) {
+                        this.requestAnimationFrame();
+                    }
+                },
+
+                cancelAnimation: function(chart) {
+                    var index = helpers.findIndex(this.animations, function(animation) {
+                        return animation.chart === chart;
+                    });
+
+                    if (index !== -1) {
+                        this.animations.splice(index, 1);
+                        chart.animating = false;
+                    }
+                },
+
+                requestAnimationFrame: function() {
+                    var me = this;
+                    if (me.request === null) {
+                        // Skip animation frame requests until the active one is executed.
+                        // This can happen when processing mouse events, e.g. 'mousemove'
+                        // and 'mouseout' events will trigger multiple renders.
+                        me.request = helpers.requestAnimFrame.call(window, function() {
+                            me.request = null;
+                            me.startDigest();
+                        });
+                    }
+                },
+
+                /**
+                 * @private
+                 */
+                startDigest: function() {
+                    var me = this;
+                    var startTime = Date.now();
+                    var framesToDrop = 0;
+
+                    if (me.dropFrames > 1) {
+                        framesToDrop = Math.floor(me.dropFrames);
+                        me.dropFrames = me.dropFrames % 1;
+                    }
+
+                    me.advance(1 + framesToDrop);
+
+                    var endTime = Date.now();
+
+                    me.dropFrames += (endTime - startTime) / me.frameDuration;
+
+                    // Do we have more stuff to animate?
+                    if (me.animations.length > 0) {
+                        me.requestAnimationFrame();
+                    }
+                },
+
+                /**
+                 * @private
+                 */
+                advance: function(count) {
+                    var animations = this.animations;
+                    var animation, chart;
+                    var i = 0;
+
+                    while (i < animations.length) {
+                        animation = animations[i];
+                        chart = animation.chart;
+
+                        animation.currentStep = (animation.currentStep || 0) + count;
+                        animation.currentStep = Math.min(animation.currentStep, animation.numSteps);
+
+                        helpers.callback(animation.render, [chart, animation], chart);
+                        helpers.callback(animation.onAnimationProgress, [animation], chart);
+
+                        if (animation.currentStep >= animation.numSteps) {
+                            helpers.callback(animation.onAnimationComplete, [animation], chart);
+                            chart.animating = false;
+                            animations.splice(i, 1);
+                        } else {
+                            ++i;
+                        }
+                    }
+                }
+            };
+
+            /**
+             * Provided for backward compatibility, use Chart.Animation instead
+             * @prop Chart.Animation#animationObject
+             * @deprecated since version 2.6.0
+             * @todo remove at version 3
+             */
+            Object.defineProperty(Chart.Animation.prototype, 'animationObject', {
+                get: function() {
+                    return this;
+                }
+            });
+
+            /**
+             * Provided for backward compatibility, use Chart.Animation#chart instead
+             * @prop Chart.Animation#chartInstance
+             * @deprecated since version 2.6.0
+             * @todo remove at version 3
+             */
+            Object.defineProperty(Chart.Animation.prototype, 'chartInstance', {
+                get: function() {
+                    return this.chart;
+                },
+                set: function(value) {
+                    this.chart = value;
+                }
+            });
+
+        };
+
+    },{"25":25,"26":26,"45":45}],23:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var helpers = require(45);
+        var Interaction = require(28);
+        var platform = require(48);
+
+        module.exports = function(Chart) {
+            var plugins = Chart.plugins;
+
+            // Create a dictionary of chart types, to allow for extension of existing types
+            Chart.types = {};
+
+            // Store a reference to each instance - allowing us to globally resize chart instances on window resize.
+            // Destroy method on the chart will remove the instance of the chart from this reference.
+            Chart.instances = {};
+
+            // Controllers available for dataset visualization eg. bar, line, slice, etc.
+            Chart.controllers = {};
+
+            /**
+             * Initializes the given config with global and chart default values.
+             */
+            function initConfig(config) {
+                config = config || {};
+
+                // Do NOT use configMerge() for the data object because this method merges arrays
+                // and so would change references to labels and datasets, preventing data updates.
+                var data = config.data = config.data || {};
+                data.datasets = data.datasets || [];
+                data.labels = data.labels || [];
+
+                config.options = helpers.configMerge(
+                    defaults.global,
+                    defaults[config.type],
+                    config.options || {});
+
+                return config;
+            }
+
+            /**
+             * Updates the config of the chart
+             * @param chart {Chart} chart to update the options for
+             */
+            function updateConfig(chart) {
+                var newOptions = chart.options;
+
+                // Update Scale(s) with options
+                if (newOptions.scale) {
+                    chart.scale.options = newOptions.scale;
+                } else if (newOptions.scales) {
+                    newOptions.scales.xAxes.concat(newOptions.scales.yAxes).forEach(function(scaleOptions) {
+                        chart.scales[scaleOptions.id].options = scaleOptions;
+                    });
+                }
+
+                // Tooltip
+                chart.tooltip._options = newOptions.tooltips;
+            }
+
+            function positionIsHorizontal(position) {
+                return position === 'top' || position === 'bottom';
+            }
+
+            helpers.extend(Chart.prototype, /** @lends Chart */ {
+                /**
+                 * @private
+                 */
+                construct: function(item, config) {
+                    var me = this;
+
+                    config = initConfig(config);
+
+                    var context = platform.acquireContext(item, config);
+                    var canvas = context && context.canvas;
+                    var height = canvas && canvas.height;
+                    var width = canvas && canvas.width;
+
+                    me.id = helpers.uid();
+                    me.ctx = context;
+                    me.canvas = canvas;
+                    me.config = config;
+                    me.width = width;
+                    me.height = height;
+                    me.aspectRatio = height ? width / height : null;
+                    me.options = config.options;
+                    me._bufferedRender = false;
+
+                    /**
+                     * Provided for backward compatibility, Chart and Chart.Controller have been merged,
+                     * the "instance" still need to be defined since it might be called from plugins.
+                     * @prop Chart#chart
+                     * @deprecated since version 2.6.0
+                     * @todo remove at version 3
+                     * @private
+                     */
+                    me.chart = me;
+                    me.controller = me; // chart.chart.controller #inception
+
+                    // Add the chart instance to the global namespace
+                    Chart.instances[me.id] = me;
+
+                    // Define alias to the config data: `chart.data === chart.config.data`
+                    Object.defineProperty(me, 'data', {
+                        get: function() {
+                            return me.config.data;
+                        },
+                        set: function(value) {
+                            me.config.data = value;
+                        }
+                    });
+
+                    if (!context || !canvas) {
+                        // The given item is not a compatible context2d element, let's return before finalizing
+                        // the chart initialization but after setting basic chart / controller properties that
+                        // can help to figure out that the chart is not valid (e.g chart.canvas !== null);
+                        // https://github.com/chartjs/Chart.js/issues/2807
+                        console.error("Failed to create chart: can't acquire context from the given item");
+                        return;
+                    }
+
+                    me.initialize();
+                    me.update();
+                },
+
+                /**
+                 * @private
+                 */
+                initialize: function() {
+                    var me = this;
+
+                    // Before init plugin notification
+                    plugins.notify(me, 'beforeInit');
+
+                    helpers.retinaScale(me, me.options.devicePixelRatio);
+
+                    me.bindEvents();
+
+                    if (me.options.responsive) {
+                        // Initial resize before chart draws (must be silent to preserve initial animations).
+                        me.resize(true);
+                    }
+
+                    // Make sure scales have IDs and are built before we build any controllers.
+                    me.ensureScalesHaveIDs();
+                    me.buildScales();
+                    me.initToolTip();
+
+                    // After init plugin notification
+                    plugins.notify(me, 'afterInit');
+
+                    return me;
+                },
+
+                clear: function() {
+                    helpers.canvas.clear(this);
+                    return this;
+                },
+
+                stop: function() {
+                    // Stops any current animation loop occurring
+                    Chart.animationService.cancelAnimation(this);
+                    return this;
+                },
+
+                resize: function(silent) {
+                    var me = this;
+                    var options = me.options;
+                    var canvas = me.canvas;
+                    var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;
+
+                    // the canvas render width and height will be casted to integers so make sure that
+                    // the canvas display style uses the same integer values to avoid blurring effect.
+
+                    // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collased
+                    var newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));
+                    var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));
+
+                    if (me.width === newWidth && me.height === newHeight) {
+                        return;
+                    }
+
+                    canvas.width = me.width = newWidth;
+                    canvas.height = me.height = newHeight;
+                    canvas.style.width = newWidth + 'px';
+                    canvas.style.height = newHeight + 'px';
+
+                    helpers.retinaScale(me, options.devicePixelRatio);
+
+                    if (!silent) {
+                        // Notify any plugins about the resize
+                        var newSize = {width: newWidth, height: newHeight};
+                        plugins.notify(me, 'resize', [newSize]);
+
+                        // Notify of resize
+                        if (me.options.onResize) {
+                            me.options.onResize(me, newSize);
+                        }
+
+                        me.stop();
+                        me.update(me.options.responsiveAnimationDuration);
+                    }
+                },
+
+                ensureScalesHaveIDs: function() {
+                    var options = this.options;
+                    var scalesOptions = options.scales || {};
+                    var scaleOptions = options.scale;
+
+                    helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {
+                        xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);
+                    });
+
+                    helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {
+                        yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);
+                    });
+
+                    if (scaleOptions) {
+                        scaleOptions.id = scaleOptions.id || 'scale';
+                    }
+                },
+
+                /**
+                 * Builds a map of scale ID to scale object for future lookup.
+                 */
+                buildScales: function() {
+                    var me = this;
+                    var options = me.options;
+                    var scales = me.scales = {};
+                    var items = [];
+
+                    if (options.scales) {
+                        items = items.concat(
+                            (options.scales.xAxes || []).map(function(xAxisOptions) {
+                                return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};
+                            }),
+                            (options.scales.yAxes || []).map(function(yAxisOptions) {
+                                return {options: yAxisOptions, dtype: 'linear', dposition: 'left'};
+                            })
+                        );
+                    }
+
+                    if (options.scale) {
+                        items.push({
+                            options: options.scale,
+                            dtype: 'radialLinear',
+                            isDefault: true,
+                            dposition: 'chartArea'
+                        });
+                    }
+
+                    helpers.each(items, function(item) {
+                        var scaleOptions = item.options;
+                        var scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);
+                        var scaleClass = Chart.scaleService.getScaleConstructor(scaleType);
+                        if (!scaleClass) {
+                            return;
+                        }
+
+                        if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {
+                            scaleOptions.position = item.dposition;
+                        }
+
+                        var scale = new scaleClass({
+                            id: scaleOptions.id,
+                            options: scaleOptions,
+                            ctx: me.ctx,
+                            chart: me
+                        });
+
+                        scales[scale.id] = scale;
+                        scale.mergeTicksOptions();
+
+                        // TODO(SB): I think we should be able to remove this custom case (options.scale)
+                        // and consider it as a regular scale part of the "scales"" map only! This would
+                        // make the logic easier and remove some useless? custom code.
+                        if (item.isDefault) {
+                            me.scale = scale;
+                        }
+                    });
+
+                    Chart.scaleService.addScalesToLayout(this);
+                },
+
+                buildOrUpdateControllers: function() {
+                    var me = this;
+                    var types = [];
+                    var newControllers = [];
+
+                    helpers.each(me.data.datasets, function(dataset, datasetIndex) {
+                        var meta = me.getDatasetMeta(datasetIndex);
+                        var type = dataset.type || me.config.type;
+
+                        if (meta.type && meta.type !== type) {
+                            me.destroyDatasetMeta(datasetIndex);
+                            meta = me.getDatasetMeta(datasetIndex);
+                        }
+                        meta.type = type;
+
+                        types.push(meta.type);
+
+                        if (meta.controller) {
+                            meta.controller.updateIndex(datasetIndex);
+                        } else {
+                            var ControllerClass = Chart.controllers[meta.type];
+                            if (ControllerClass === undefined) {
+                                throw new Error('"' + meta.type + '" is not a chart type.');
+                            }
+
+                            meta.controller = new ControllerClass(me, datasetIndex);
+                            newControllers.push(meta.controller);
+                        }
+                    }, me);
+
+                    return newControllers;
+                },
+
+                /**
+                 * Reset the elements of all datasets
+                 * @private
+                 */
+                resetElements: function() {
+                    var me = this;
+                    helpers.each(me.data.datasets, function(dataset, datasetIndex) {
+                        me.getDatasetMeta(datasetIndex).controller.reset();
+                    }, me);
+                },
+
+                /**
+                 * Resets the chart back to it's state before the initial animation
+                 */
+                reset: function() {
+                    this.resetElements();
+                    this.tooltip.initialize();
+                },
+
+                update: function(config) {
+                    var me = this;
+
+                    if (!config || typeof config !== 'object') {
+                        // backwards compatibility
+                        config = {
+                            duration: config,
+                            lazy: arguments[1]
+                        };
+                    }
+
+                    updateConfig(me);
+
+                    if (plugins.notify(me, 'beforeUpdate') === false) {
+                        return;
+                    }
+
+                    // In case the entire data object changed
+                    me.tooltip._data = me.data;
+
+                    // Make sure dataset controllers are updated and new controllers are reset
+                    var newControllers = me.buildOrUpdateControllers();
+
+                    // Make sure all dataset controllers have correct meta data counts
+                    helpers.each(me.data.datasets, function(dataset, datasetIndex) {
+                        me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();
+                    }, me);
+
+                    me.updateLayout();
+
+                    // Can only reset the new controllers after the scales have been updated
+                    helpers.each(newControllers, function(controller) {
+                        controller.reset();
+                    });
+
+                    me.updateDatasets();
+
+                    // Need to reset tooltip in case it is displayed with elements that are removed
+                    // after update.
+                    me.tooltip.initialize();
+
+                    // Last active contains items that were previously in the tooltip.
+                    // When we reset the tooltip, we need to clear it
+                    me.lastActive = [];
+
+                    // Do this before render so that any plugins that need final scale updates can use it
+                    plugins.notify(me, 'afterUpdate');
+
+                    if (me._bufferedRender) {
+                        me._bufferedRequest = {
+                            duration: config.duration,
+                            easing: config.easing,
+                            lazy: config.lazy
+                        };
+                    } else {
+                        me.render(config);
+                    }
+                },
+
+                /**
+                 * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`
+                 * hook, in which case, plugins will not be called on `afterLayout`.
+                 * @private
+                 */
+                updateLayout: function() {
+                    var me = this;
+
+                    if (plugins.notify(me, 'beforeLayout') === false) {
+                        return;
+                    }
+
+                    Chart.layoutService.update(this, this.width, this.height);
+
+                    /**
+                     * Provided for backward compatibility, use `afterLayout` instead.
+                     * @method IPlugin#afterScaleUpdate
+                     * @deprecated since version 2.5.0
+                     * @todo remove at version 3
+                     * @private
+                     */
+                    plugins.notify(me, 'afterScaleUpdate');
+                    plugins.notify(me, 'afterLayout');
+                },
+
+                /**
+                 * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`
+                 * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.
+                 * @private
+                 */
+                updateDatasets: function() {
+                    var me = this;
+
+                    if (plugins.notify(me, 'beforeDatasetsUpdate') === false) {
+                        return;
+                    }
+
+                    for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {
+                        me.updateDataset(i);
+                    }
+
+                    plugins.notify(me, 'afterDatasetsUpdate');
+                },
+
+                /**
+                 * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`
+                 * hook, in which case, plugins will not be called on `afterDatasetUpdate`.
+                 * @private
+                 */
+                updateDataset: function(index) {
+                    var me = this;
+                    var meta = me.getDatasetMeta(index);
+                    var args = {
+                        meta: meta,
+                        index: index
+                    };
+
+                    if (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {
+                        return;
+                    }
+
+                    meta.controller.update();
+
+                    plugins.notify(me, 'afterDatasetUpdate', [args]);
+                },
+
+                render: function(config) {
+                    var me = this;
+
+                    if (!config || typeof config !== 'object') {
+                        // backwards compatibility
+                        config = {
+                            duration: config,
+                            lazy: arguments[1]
+                        };
+                    }
+
+                    var duration = config.duration;
+                    var lazy = config.lazy;
+
+                    if (plugins.notify(me, 'beforeRender') === false) {
+                        return;
+                    }
+
+                    var animationOptions = me.options.animation;
+                    var onComplete = function(animation) {
+                        plugins.notify(me, 'afterRender');
+                        helpers.callback(animationOptions && animationOptions.onComplete, [animation], me);
+                    };
+
+                    if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {
+                        var animation = new Chart.Animation({
+                            numSteps: (duration || animationOptions.duration) / 16.66, // 60 fps
+                            easing: config.easing || animationOptions.easing,
+
+                            render: function(chart, animationObject) {
+                                var easingFunction = helpers.easing.effects[animationObject.easing];
+                                var currentStep = animationObject.currentStep;
+                                var stepDecimal = currentStep / animationObject.numSteps;
+
+                                chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);
+                            },
+
+                            onAnimationProgress: animationOptions.onProgress,
+                            onAnimationComplete: onComplete
+                        });
+
+                        Chart.animationService.addAnimation(me, animation, duration, lazy);
+                    } else {
+                        me.draw();
+
+                        // See https://github.com/chartjs/Chart.js/issues/3781
+                        onComplete(new Chart.Animation({numSteps: 0, chart: me}));
+                    }
+
+                    return me;
+                },
+
+                draw: function(easingValue) {
+                    var me = this;
+
+                    me.clear();
+
+                    if (helpers.isNullOrUndef(easingValue)) {
+                        easingValue = 1;
+                    }
+
+                    me.transition(easingValue);
+
+                    if (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {
+                        return;
+                    }
+
+                    // Draw all the scales
+                    helpers.each(me.boxes, function(box) {
+                        box.draw(me.chartArea);
+                    }, me);
+
+                    if (me.scale) {
+                        me.scale.draw();
+                    }
+
+                    me.drawDatasets(easingValue);
+                    me._drawTooltip(easingValue);
+
+                    plugins.notify(me, 'afterDraw', [easingValue]);
+                },
+
+                /**
+                 * @private
+                 */
+                transition: function(easingValue) {
+                    var me = this;
+
+                    for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {
+                        if (me.isDatasetVisible(i)) {
+                            me.getDatasetMeta(i).controller.transition(easingValue);
+                        }
+                    }
+
+                    me.tooltip.transition(easingValue);
+                },
+
+                /**
+                 * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`
+                 * hook, in which case, plugins will not be called on `afterDatasetsDraw`.
+                 * @private
+                 */
+                drawDatasets: function(easingValue) {
+                    var me = this;
+
+                    if (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {
+                        return;
+                    }
+
+                    // Draw datasets reversed to support proper line stacking
+                    for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {
+                        if (me.isDatasetVisible(i)) {
+                            me.drawDataset(i, easingValue);
+                        }
+                    }
+
+                    plugins.notify(me, 'afterDatasetsDraw', [easingValue]);
+                },
+
+                /**
+                 * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`
+                 * hook, in which case, plugins will not be called on `afterDatasetDraw`.
+                 * @private
+                 */
+                drawDataset: function(index, easingValue) {
+                    var me = this;
+                    var meta = me.getDatasetMeta(index);
+                    var args = {
+                        meta: meta,
+                        index: index,
+                        easingValue: easingValue
+                    };
+
+                    if (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {
+                        return;
+                    }
+
+                    meta.controller.draw(easingValue);
+
+                    plugins.notify(me, 'afterDatasetDraw', [args]);
+                },
+
+                /**
+                 * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`
+                 * hook, in which case, plugins will not be called on `afterTooltipDraw`.
+                 * @private
+                 */
+                _drawTooltip: function(easingValue) {
+                    var me = this;
+                    var tooltip = me.tooltip;
+                    var args = {
+                        tooltip: tooltip,
+                        easingValue: easingValue
+                    };
+
+                    if (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {
+                        return;
+                    }
+
+                    tooltip.draw();
+
+                    plugins.notify(me, 'afterTooltipDraw', [args]);
+                },
+
+                // Get the single element that was clicked on
+                // @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw
+                getElementAtEvent: function(e) {
+                    return Interaction.modes.single(this, e);
+                },
+
+                getElementsAtEvent: function(e) {
+                    return Interaction.modes.label(this, e, {intersect: true});
+                },
+
+                getElementsAtXAxis: function(e) {
+                    return Interaction.modes['x-axis'](this, e, {intersect: true});
+                },
+
+                getElementsAtEventForMode: function(e, mode, options) {
+                    var method = Interaction.modes[mode];
+                    if (typeof method === 'function') {
+                        return method(this, e, options);
+                    }
+
+                    return [];
+                },
+
+                getDatasetAtEvent: function(e) {
+                    return Interaction.modes.dataset(this, e, {intersect: true});
+                },
+
+                getDatasetMeta: function(datasetIndex) {
+                    var me = this;
+                    var dataset = me.data.datasets[datasetIndex];
+                    if (!dataset._meta) {
+                        dataset._meta = {};
+                    }
+
+                    var meta = dataset._meta[me.id];
+                    if (!meta) {
+                        meta = dataset._meta[me.id] = {
+                            type: null,
+                            data: [],
+                            dataset: null,
+                            controller: null,
+                            hidden: null,			// See isDatasetVisible() comment
+                            xAxisID: null,
+                            yAxisID: null
+                        };
+                    }
+
+                    return meta;
+                },
+
+                getVisibleDatasetCount: function() {
+                    var count = 0;
+                    for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {
+                        if (this.isDatasetVisible(i)) {
+                            count++;
+                        }
+                    }
+                    return count;
+                },
+
+                isDatasetVisible: function(datasetIndex) {
+                    var meta = this.getDatasetMeta(datasetIndex);
+
+                    // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,
+                    // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.
+                    return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;
+                },
+
+                generateLegend: function() {
+                    return this.options.legendCallback(this);
+                },
+
+                /**
+                 * @private
+                 */
+                destroyDatasetMeta: function(datasetIndex) {
+                    var id = this.id;
+                    var dataset = this.data.datasets[datasetIndex];
+                    var meta = dataset._meta && dataset._meta[id];
+
+                    if (meta) {
+                        meta.controller.destroy();
+                        delete dataset._meta[id];
+                    }
+                },
+
+                destroy: function() {
+                    var me = this;
+                    var canvas = me.canvas;
+                    var i, ilen;
+
+                    me.stop();
+
+                    // dataset controllers need to cleanup associated data
+                    for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {
+                        me.destroyDatasetMeta(i);
+                    }
+
+                    if (canvas) {
+                        me.unbindEvents();
+                        helpers.canvas.clear(me);
+                        platform.releaseContext(me.ctx);
+                        me.canvas = null;
+                        me.ctx = null;
+                    }
+
+                    plugins.notify(me, 'destroy');
+
+                    delete Chart.instances[me.id];
+                },
+
+                toBase64Image: function() {
+                    return this.canvas.toDataURL.apply(this.canvas, arguments);
+                },
+
+                initToolTip: function() {
+                    var me = this;
+                    me.tooltip = new Chart.Tooltip({
+                        _chart: me,
+                        _chartInstance: me, // deprecated, backward compatibility
+                        _data: me.data,
+                        _options: me.options.tooltips
+                    }, me);
+                },
+
+                /**
+                 * @private
+                 */
+                bindEvents: function() {
+                    var me = this;
+                    var listeners = me._listeners = {};
+                    var listener = function() {
+                        me.eventHandler.apply(me, arguments);
+                    };
+
+                    helpers.each(me.options.events, function(type) {
+                        platform.addEventListener(me, type, listener);
+                        listeners[type] = listener;
+                    });
+
+                    // Elements used to detect size change should not be injected for non responsive charts.
+                    // See https://github.com/chartjs/Chart.js/issues/2210
+                    if (me.options.responsive) {
+                        listener = function() {
+                            me.resize();
+                        };
+
+                        platform.addEventListener(me, 'resize', listener);
+                        listeners.resize = listener;
+                    }
+                },
+
+                /**
+                 * @private
+                 */
+                unbindEvents: function() {
+                    var me = this;
+                    var listeners = me._listeners;
+                    if (!listeners) {
+                        return;
+                    }
+
+                    delete me._listeners;
+                    helpers.each(listeners, function(listener, type) {
+                        platform.removeEventListener(me, type, listener);
+                    });
+                },
+
+                updateHoverStyle: function(elements, mode, enabled) {
+                    var method = enabled ? 'setHoverStyle' : 'removeHoverStyle';
+                    var element, i, ilen;
+
+                    for (i = 0, ilen = elements.length; i < ilen; ++i) {
+                        element = elements[i];
+                        if (element) {
+                            this.getDatasetMeta(element._datasetIndex).controller[method](element);
+                        }
+                    }
+                },
+
+                /**
+                 * @private
+                 */
+                eventHandler: function(e) {
+                    var me = this;
+                    var tooltip = me.tooltip;
+
+                    if (plugins.notify(me, 'beforeEvent', [e]) === false) {
+                        return;
+                    }
+
+                    // Buffer any update calls so that renders do not occur
+                    me._bufferedRender = true;
+                    me._bufferedRequest = null;
+
+                    var changed = me.handleEvent(e);
+                    changed |= tooltip && tooltip.handleEvent(e);
+
+                    plugins.notify(me, 'afterEvent', [e]);
+
+                    var bufferedRequest = me._bufferedRequest;
+                    if (bufferedRequest) {
+                        // If we have an update that was triggered, we need to do a normal render
+                        me.render(bufferedRequest);
+                    } else if (changed && !me.animating) {
+                        // If entering, leaving, or changing elements, animate the change via pivot
+                        me.stop();
+
+                        // We only need to render at this point. Updating will cause scales to be
+                        // recomputed generating flicker & using more memory than necessary.
+                        me.render(me.options.hover.animationDuration, true);
+                    }
+
+                    me._bufferedRender = false;
+                    me._bufferedRequest = null;
+
+                    return me;
+                },
+
+                /**
+                 * Handle an event
+                 * @private
+                 * @param {IEvent} event the event to handle
+                 * @return {Boolean} true if the chart needs to re-render
+                 */
+                handleEvent: function(e) {
+                    var me = this;
+                    var options = me.options || {};
+                    var hoverOptions = options.hover;
+                    var changed = false;
+
+                    me.lastActive = me.lastActive || [];
+
+                    // Find Active Elements for hover and tooltips
+                    if (e.type === 'mouseout') {
+                        me.active = [];
+                    } else {
+                        me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);
+                    }
+
+                    // Invoke onHover hook
+                    // Need to call with native event here to not break backwards compatibility
+                    helpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);
+
+                    if (e.type === 'mouseup' || e.type === 'click') {
+                        if (options.onClick) {
+                            // Use e.native here for backwards compatibility
+                            options.onClick.call(me, e.native, me.active);
+                        }
+                    }
+
+                    // Remove styling for last active (even if it may still be active)
+                    if (me.lastActive.length) {
+                        me.updateHoverStyle(me.lastActive, hoverOptions.mode, false);
+                    }
+
+                    // Built in hover styling
+                    if (me.active.length && hoverOptions.mode) {
+                        me.updateHoverStyle(me.active, hoverOptions.mode, true);
+                    }
+
+                    changed = !helpers.arrayEquals(me.active, me.lastActive);
+
+                    // Remember Last Actives
+                    me.lastActive = me.active;
+
+                    return changed;
+                }
+            });
+
+            /**
+             * Provided for backward compatibility, use Chart instead.
+             * @class Chart.Controller
+             * @deprecated since version 2.6.0
+             * @todo remove at version 3
+             * @private
+             */
+            Chart.Controller = Chart;
+        };
+
+    },{"25":25,"28":28,"45":45,"48":48}],24:[function(require,module,exports){
+        'use strict';
+
+        var helpers = require(45);
+
+        module.exports = function(Chart) {
+
+            var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];
+
+            /**
+             * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',
+             * 'unshift') and notify the listener AFTER the array has been altered. Listeners are
+             * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.
+             */
+            function listenArrayEvents(array, listener) {
+                if (array._chartjs) {
+                    array._chartjs.listeners.push(listener);
+                    return;
+                }
+
+                Object.defineProperty(array, '_chartjs', {
+                    configurable: true,
+                    enumerable: false,
+                    value: {
+                        listeners: [listener]
+                    }
+                });
+
+                arrayEvents.forEach(function(key) {
+                    var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);
+                    var base = array[key];
+
+                    Object.defineProperty(array, key, {
+                        configurable: true,
+                        enumerable: false,
+                        value: function() {
+                            var args = Array.prototype.slice.call(arguments);
+                            var res = base.apply(this, args);
+
+                            helpers.each(array._chartjs.listeners, function(object) {
+                                if (typeof object[method] === 'function') {
+                                    object[method].apply(object, args);
+                                }
+                            });
+
+                            return res;
+                        }
+                    });
+                });
+            }
+
+            /**
+             * Removes the given array event listener and cleanup extra attached properties (such as
+             * the _chartjs stub and overridden methods) if array doesn't have any more listeners.
+             */
+            function unlistenArrayEvents(array, listener) {
+                var stub = array._chartjs;
+                if (!stub) {
+                    return;
+                }
+
+                var listeners = stub.listeners;
+                var index = listeners.indexOf(listener);
+                if (index !== -1) {
+                    listeners.splice(index, 1);
+                }
+
+                if (listeners.length > 0) {
+                    return;
+                }
+
+                arrayEvents.forEach(function(key) {
+                    delete array[key];
+                });
+
+                delete array._chartjs;
+            }
+
+            // Base class for all dataset controllers (line, bar, etc)
+            Chart.DatasetController = function(chart, datasetIndex) {
+                this.initialize(chart, datasetIndex);
+            };
+
+            helpers.extend(Chart.DatasetController.prototype, {
+
+                /**
+                 * Element type used to generate a meta dataset (e.g. Chart.element.Line).
+                 * @type {Chart.core.element}
+                 */
+                datasetElementType: null,
+
+                /**
+                 * Element type used to generate a meta data (e.g. Chart.element.Point).
+                 * @type {Chart.core.element}
+                 */
+                dataElementType: null,
+
+                initialize: function(chart, datasetIndex) {
+                    var me = this;
+                    me.chart = chart;
+                    me.index = datasetIndex;
+                    me.linkScales();
+                    me.addElements();
+                },
+
+                updateIndex: function(datasetIndex) {
+                    this.index = datasetIndex;
+                },
+
+                linkScales: function() {
+                    var me = this;
+                    var meta = me.getMeta();
+                    var dataset = me.getDataset();
+
+                    if (meta.xAxisID === null) {
+                        meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;
+                    }
+                    if (meta.yAxisID === null) {
+                        meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;
+                    }
+                },
+
+                getDataset: function() {
+                    return this.chart.data.datasets[this.index];
+                },
+
+                getMeta: function() {
+                    return this.chart.getDatasetMeta(this.index);
+                },
+
+                getScaleForId: function(scaleID) {
+                    return this.chart.scales[scaleID];
+                },
+
+                reset: function() {
+                    this.update(true);
+                },
+
+                /**
+                 * @private
+                 */
+                destroy: function() {
+                    if (this._data) {
+                        unlistenArrayEvents(this._data, this);
+                    }
+                },
+
+                createMetaDataset: function() {
+                    var me = this;
+                    var type = me.datasetElementType;
+                    return type && new type({
+                        _chart: me.chart,
+                        _datasetIndex: me.index
+                    });
+                },
+
+                createMetaData: function(index) {
+                    var me = this;
+                    var type = me.dataElementType;
+                    return type && new type({
+                        _chart: me.chart,
+                        _datasetIndex: me.index,
+                        _index: index
+                    });
+                },
+
+                addElements: function() {
+                    var me = this;
+                    var meta = me.getMeta();
+                    var data = me.getDataset().data || [];
+                    var metaData = meta.data;
+                    var i, ilen;
+
+                    for (i = 0, ilen = data.length; i < ilen; ++i) {
+                        metaData[i] = metaData[i] || me.createMetaData(i);
+                    }
+
+                    meta.dataset = meta.dataset || me.createMetaDataset();
+                },
+
+                addElementAndReset: function(index) {
+                    var element = this.createMetaData(index);
+                    this.getMeta().data.splice(index, 0, element);
+                    this.updateElement(element, index, true);
+                },
+
+                buildOrUpdateElements: function() {
+                    var me = this;
+                    var dataset = me.getDataset();
+                    var data = dataset.data || (dataset.data = []);
+
+                    // In order to correctly handle data addition/deletion animation (an thus simulate
+                    // real-time charts), we need to monitor these data modifications and synchronize
+                    // the internal meta data accordingly.
+                    if (me._data !== data) {
+                        if (me._data) {
+                            // This case happens when the user replaced the data array instance.
+                            unlistenArrayEvents(me._data, me);
+                        }
+
+                        listenArrayEvents(data, me);
+                        me._data = data;
+                    }
+
+                    // Re-sync meta data in case the user replaced the data array or if we missed
+                    // any updates and so make sure that we handle number of datapoints changing.
+                    me.resyncElements();
+                },
+
+                update: helpers.noop,
+
+                transition: function(easingValue) {
+                    var meta = this.getMeta();
+                    var elements = meta.data || [];
+                    var ilen = elements.length;
+                    var i = 0;
+
+                    for (; i < ilen; ++i) {
+                        elements[i].transition(easingValue);
+                    }
+
+                    if (meta.dataset) {
+                        meta.dataset.transition(easingValue);
+                    }
+                },
+
+                draw: function() {
+                    var meta = this.getMeta();
+                    var elements = meta.data || [];
+                    var ilen = elements.length;
+                    var i = 0;
+
+                    if (meta.dataset) {
+                        meta.dataset.draw();
+                    }
+
+                    for (; i < ilen; ++i) {
+                        elements[i].draw();
+                    }
+                },
+
+                removeHoverStyle: function(element, elementOpts) {
+                    var dataset = this.chart.data.datasets[element._datasetIndex];
+                    var index = element._index;
+                    var custom = element.custom || {};
+                    var valueOrDefault = helpers.valueAtIndexOrDefault;
+                    var model = element._model;
+
+                    model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);
+                    model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);
+                    model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);
+                },
+
+                setHoverStyle: function(element) {
+                    var dataset = this.chart.data.datasets[element._datasetIndex];
+                    var index = element._index;
+                    var custom = element.custom || {};
+                    var valueOrDefault = helpers.valueAtIndexOrDefault;
+                    var getHoverColor = helpers.getHoverColor;
+                    var model = element._model;
+
+                    model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));
+                    model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));
+                    model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);
+                },
+
+                /**
+                 * @private
+                 */
+                resyncElements: function() {
+                    var me = this;
+                    var meta = me.getMeta();
+                    var data = me.getDataset().data;
+                    var numMeta = meta.data.length;
+                    var numData = data.length;
+
+                    if (numData < numMeta) {
+                        meta.data.splice(numData, numMeta - numData);
+                    } else if (numData > numMeta) {
+                        me.insertElements(numMeta, numData - numMeta);
+                    }
+                },
+
+                /**
+                 * @private
+                 */
+                insertElements: function(start, count) {
+                    for (var i = 0; i < count; ++i) {
+                        this.addElementAndReset(start + i);
+                    }
+                },
+
+                /**
+                 * @private
+                 */
+                onDataPush: function() {
+                    this.insertElements(this.getDataset().data.length - 1, arguments.length);
+                },
+
+                /**
+                 * @private
+                 */
+                onDataPop: function() {
+                    this.getMeta().data.pop();
+                },
+
+                /**
+                 * @private
+                 */
+                onDataShift: function() {
+                    this.getMeta().data.shift();
+                },
+
+                /**
+                 * @private
+                 */
+                onDataSplice: function(start, count) {
+                    this.getMeta().data.splice(start, count);
+                    this.insertElements(start, arguments.length - 2);
+                },
+
+                /**
+                 * @private
+                 */
+                onDataUnshift: function() {
+                    this.insertElements(0, arguments.length);
+                }
+            });
+
+            Chart.DatasetController.extend = helpers.inherits;
+        };
+
+    },{"45":45}],25:[function(require,module,exports){
+        'use strict';
+
+        var helpers = require(45);
+
+        module.exports = {
+            /**
+             * @private
+             */
+            _set: function(scope, values) {
+                return helpers.merge(this[scope] || (this[scope] = {}), values);
+            }
+        };
+
+    },{"45":45}],26:[function(require,module,exports){
+        'use strict';
+
+        var color = require(3);
+        var helpers = require(45);
+
+        function interpolate(start, view, model, ease) {
+            var keys = Object.keys(model);
+            var i, ilen, key, actual, origin, target, type, c0, c1;
+
+            for (i = 0, ilen = keys.length; i < ilen; ++i) {
+                key = keys[i];
+
+                target = model[key];
+
+                // if a value is added to the model after pivot() has been called, the view
+                // doesn't contain it, so let's initialize the view to the target value.
+                if (!view.hasOwnProperty(key)) {
+                    view[key] = target;
+                }
+
+                actual = view[key];
+
+                if (actual === target || key[0] === '_') {
+                    continue;
+                }
+
+                if (!start.hasOwnProperty(key)) {
+                    start[key] = actual;
+                }
+
+                origin = start[key];
+
+                type = typeof target;
+
+                if (type === typeof origin) {
+                    if (type === 'string') {
+                        c0 = color(origin);
+                        if (c0.valid) {
+                            c1 = color(target);
+                            if (c1.valid) {
+                                view[key] = c1.mix(c0, ease).rgbString();
+                                continue;
+                            }
+                        }
+                    } else if (type === 'number' && isFinite(origin) && isFinite(target)) {
+                        view[key] = origin + (target - origin) * ease;
+                        continue;
+                    }
+                }
+
+                view[key] = target;
+            }
+        }
+
+        var Element = function(configuration) {
+            helpers.extend(this, configuration);
+            this.initialize.apply(this, arguments);
+        };
+
+        helpers.extend(Element.prototype, {
+
+            initialize: function() {
+                this.hidden = false;
+            },
+
+            pivot: function() {
+                var me = this;
+                if (!me._view) {
+                    me._view = helpers.clone(me._model);
+                }
+                me._start = {};
+                return me;
+            },
+
+            transition: function(ease) {
+                var me = this;
+                var model = me._model;
+                var start = me._start;
+                var view = me._view;
+
+                // No animation -> No Transition
+                if (!model || ease === 1) {
+                    me._view = model;
+                    me._start = null;
+                    return me;
+                }
+
+                if (!view) {
+                    view = me._view = {};
+                }
+
+                if (!start) {
+                    start = me._start = {};
+                }
+
+                interpolate(start, view, model, ease);
+
+                return me;
+            },
+
+            tooltipPosition: function() {
+                return {
+                    x: this._model.x,
+                    y: this._model.y
+                };
+            },
+
+            hasValue: function() {
+                return helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);
+            }
+        });
+
+        Element.extend = helpers.inherits;
+
+        module.exports = Element;
+
+    },{"3":3,"45":45}],27:[function(require,module,exports){
+        /* global window: false */
+        /* global document: false */
+        'use strict';
+
+        var color = require(3);
+        var defaults = require(25);
+        var helpers = require(45);
+
+        module.exports = function(Chart) {
+
+            // -- Basic js utility methods
+
+            helpers.configMerge = function(/* objects ... */) {
+                return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {
+                    merger: function(key, target, source, options) {
+                        var tval = target[key] || {};
+                        var sval = source[key];
+
+                        if (key === 'scales') {
+                            // scale config merging is complex. Add our own function here for that
+                            target[key] = helpers.scaleMerge(tval, sval);
+                        } else if (key === 'scale') {
+                            // used in polar area & radar charts since there is only one scale
+                            target[key] = helpers.merge(tval, [Chart.scaleService.getScaleDefaults(sval.type), sval]);
+                        } else {
+                            helpers._merger(key, target, source, options);
+                        }
+                    }
+                });
+            };
+
+            helpers.scaleMerge = function(/* objects ... */) {
+                return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {
+                    merger: function(key, target, source, options) {
+                        if (key === 'xAxes' || key === 'yAxes') {
+                            var slen = source[key].length;
+                            var i, type, scale;
+
+                            if (!target[key]) {
+                                target[key] = [];
+                            }
+
+                            for (i = 0; i < slen; ++i) {
+                                scale = source[key][i];
+                                type = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');
+
+                                if (i >= target[key].length) {
+                                    target[key].push({});
+                                }
+
+                                if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {
+                                    // new/untyped scale or type changed: let's apply the new defaults
+                                    // then merge source scale to correctly overwrite the defaults.
+                                    helpers.merge(target[key][i], [Chart.scaleService.getScaleDefaults(type), scale]);
+                                } else {
+                                    // scales type are the same
+                                    helpers.merge(target[key][i], scale);
+                                }
+                            }
+                        } else {
+                            helpers._merger(key, target, source, options);
+                        }
+                    }
+                });
+            };
+
+            helpers.where = function(collection, filterCallback) {
+                if (helpers.isArray(collection) && Array.prototype.filter) {
+                    return collection.filter(filterCallback);
+                }
+                var filtered = [];
+
+                helpers.each(collection, function(item) {
+                    if (filterCallback(item)) {
+                        filtered.push(item);
+                    }
+                });
+
+                return filtered;
+            };
+            helpers.findIndex = Array.prototype.findIndex ?
+                function(array, callback, scope) {
+                    return array.findIndex(callback, scope);
+                } :
+                function(array, callback, scope) {
+                    scope = scope === undefined ? array : scope;
+                    for (var i = 0, ilen = array.length; i < ilen; ++i) {
+                        if (callback.call(scope, array[i], i, array)) {
+                            return i;
+                        }
+                    }
+                    return -1;
+                };
+            helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {
+                // Default to start of the array
+                if (helpers.isNullOrUndef(startIndex)) {
+                    startIndex = -1;
+                }
+                for (var i = startIndex + 1; i < arrayToSearch.length; i++) {
+                    var currentItem = arrayToSearch[i];
+                    if (filterCallback(currentItem)) {
+                        return currentItem;
+                    }
+                }
+            };
+            helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {
+                // Default to end of the array
+                if (helpers.isNullOrUndef(startIndex)) {
+                    startIndex = arrayToSearch.length;
+                }
+                for (var i = startIndex - 1; i >= 0; i--) {
+                    var currentItem = arrayToSearch[i];
+                    if (filterCallback(currentItem)) {
+                        return currentItem;
+                    }
+                }
+            };
+
+            // -- Math methods
+            helpers.isNumber = function(n) {
+                return !isNaN(parseFloat(n)) && isFinite(n);
+            };
+            helpers.almostEquals = function(x, y, epsilon) {
+                return Math.abs(x - y) < epsilon;
+            };
+            helpers.almostWhole = function(x, epsilon) {
+                var rounded = Math.round(x);
+                return (((rounded - epsilon) < x) && ((rounded + epsilon) > x));
+            };
+            helpers.max = function(array) {
+                return array.reduce(function(max, value) {
+                    if (!isNaN(value)) {
+                        return Math.max(max, value);
+                    }
+                    return max;
+                }, Number.NEGATIVE_INFINITY);
+            };
+            helpers.min = function(array) {
+                return array.reduce(function(min, value) {
+                    if (!isNaN(value)) {
+                        return Math.min(min, value);
+                    }
+                    return min;
+                }, Number.POSITIVE_INFINITY);
+            };
+            helpers.sign = Math.sign ?
+                function(x) {
+                    return Math.sign(x);
+                } :
+                function(x) {
+                    x = +x; // convert to a number
+                    if (x === 0 || isNaN(x)) {
+                        return x;
+                    }
+                    return x > 0 ? 1 : -1;
+                };
+            helpers.log10 = Math.log10 ?
+                function(x) {
+                    return Math.log10(x);
+                } :
+                function(x) {
+                    return Math.log(x) / Math.LN10;
+                };
+            helpers.toRadians = function(degrees) {
+                return degrees * (Math.PI / 180);
+            };
+            helpers.toDegrees = function(radians) {
+                return radians * (180 / Math.PI);
+            };
+            // Gets the angle from vertical upright to the point about a centre.
+            helpers.getAngleFromPoint = function(centrePoint, anglePoint) {
+                var distanceFromXCenter = anglePoint.x - centrePoint.x;
+                var distanceFromYCenter = anglePoint.y - centrePoint.y;
+                var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);
+
+                var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);
+
+                if (angle < (-0.5 * Math.PI)) {
+                    angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]
+                }
+
+                return {
+                    angle: angle,
+                    distance: radialDistanceFromCenter
+                };
+            };
+            helpers.distanceBetweenPoints = function(pt1, pt2) {
+                return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));
+            };
+            helpers.aliasPixel = function(pixelWidth) {
+                return (pixelWidth % 2 === 0) ? 0 : 0.5;
+            };
+            helpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {
+                // Props to Rob Spencer at scaled innovation for his post on splining between points
+                // http://scaledinnovation.com/analytics/splines/aboutSplines.html
+
+                // This function must also respect "skipped" points
+
+                var previous = firstPoint.skip ? middlePoint : firstPoint;
+                var current = middlePoint;
+                var next = afterPoint.skip ? middlePoint : afterPoint;
+
+                var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));
+                var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));
+
+                var s01 = d01 / (d01 + d12);
+                var s12 = d12 / (d01 + d12);
+
+                // If all points are the same, s01 & s02 will be inf
+                s01 = isNaN(s01) ? 0 : s01;
+                s12 = isNaN(s12) ? 0 : s12;
+
+                var fa = t * s01; // scaling factor for triangle Ta
+                var fb = t * s12;
+
+                return {
+                    previous: {
+                        x: current.x - fa * (next.x - previous.x),
+                        y: current.y - fa * (next.y - previous.y)
+                    },
+                    next: {
+                        x: current.x + fb * (next.x - previous.x),
+                        y: current.y + fb * (next.y - previous.y)
+                    }
+                };
+            };
+            helpers.EPSILON = Number.EPSILON || 1e-14;
+            helpers.splineCurveMonotone = function(points) {
+                // This function calculates Bézier control points in a similar way than |splineCurve|,
+                // but preserves monotonicity of the provided data and ensures no local extremums are added
+                // between the dataset discrete points due to the interpolation.
+                // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation
+
+                var pointsWithTangents = (points || []).map(function(point) {
+                    return {
+                        model: point._model,
+                        deltaK: 0,
+                        mK: 0
+                    };
+                });
+
+                // Calculate slopes (deltaK) and initialize tangents (mK)
+                var pointsLen = pointsWithTangents.length;
+                var i, pointBefore, pointCurrent, pointAfter;
+                for (i = 0; i < pointsLen; ++i) {
+                    pointCurrent = pointsWithTangents[i];
+                    if (pointCurrent.model.skip) {
+                        continue;
+                    }
+
+                    pointBefore = i > 0 ? pointsWithTangents[i - 1] : null;
+                    pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;
+                    if (pointAfter && !pointAfter.model.skip) {
+                        var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);
+
+                        // In the case of two points that appear at the same x pixel, slopeDeltaX is 0
+                        pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;
+                    }
+
+                    if (!pointBefore || pointBefore.model.skip) {
+                        pointCurrent.mK = pointCurrent.deltaK;
+                    } else if (!pointAfter || pointAfter.model.skip) {
+                        pointCurrent.mK = pointBefore.deltaK;
+                    } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {
+                        pointCurrent.mK = 0;
+                    } else {
+                        pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;
+                    }
+                }
+
+                // Adjust tangents to ensure monotonic properties
+                var alphaK, betaK, tauK, squaredMagnitude;
+                for (i = 0; i < pointsLen - 1; ++i) {
+                    pointCurrent = pointsWithTangents[i];
+                    pointAfter = pointsWithTangents[i + 1];
+                    if (pointCurrent.model.skip || pointAfter.model.skip) {
+                        continue;
+                    }
+
+                    if (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {
+                        pointCurrent.mK = pointAfter.mK = 0;
+                        continue;
+                    }
+
+                    alphaK = pointCurrent.mK / pointCurrent.deltaK;
+                    betaK = pointAfter.mK / pointCurrent.deltaK;
+                    squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);
+                    if (squaredMagnitude <= 9) {
+                        continue;
+                    }
+
+                    tauK = 3 / Math.sqrt(squaredMagnitude);
+                    pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;
+                    pointAfter.mK = betaK * tauK * pointCurrent.deltaK;
+                }
+
+                // Compute control points
+                var deltaX;
+                for (i = 0; i < pointsLen; ++i) {
+                    pointCurrent = pointsWithTangents[i];
+                    if (pointCurrent.model.skip) {
+                        continue;
+                    }
+
+                    pointBefore = i > 0 ? pointsWithTangents[i - 1] : null;
+                    pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;
+                    if (pointBefore && !pointBefore.model.skip) {
+                        deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;
+                        pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;
+                        pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;
+                    }
+                    if (pointAfter && !pointAfter.model.skip) {
+                        deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;
+                        pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;
+                        pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;
+                    }
+                }
+            };
+            helpers.nextItem = function(collection, index, loop) {
+                if (loop) {
+                    return index >= collection.length - 1 ? collection[0] : collection[index + 1];
+                }
+                return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];
+            };
+            helpers.previousItem = function(collection, index, loop) {
+                if (loop) {
+                    return index <= 0 ? collection[collection.length - 1] : collection[index - 1];
+                }
+                return index <= 0 ? collection[0] : collection[index - 1];
+            };
+            // Implementation of the nice number algorithm used in determining where axis labels will go
+            helpers.niceNum = function(range, round) {
+                var exponent = Math.floor(helpers.log10(range));
+                var fraction = range / Math.pow(10, exponent);
+                var niceFraction;
+
+                if (round) {
+                    if (fraction < 1.5) {
+                        niceFraction = 1;
+                    } else if (fraction < 3) {
+                        niceFraction = 2;
+                    } else if (fraction < 7) {
+                        niceFraction = 5;
+                    } else {
+                        niceFraction = 10;
+                    }
+                } else if (fraction <= 1.0) {
+                    niceFraction = 1;
+                } else if (fraction <= 2) {
+                    niceFraction = 2;
+                } else if (fraction <= 5) {
+                    niceFraction = 5;
+                } else {
+                    niceFraction = 10;
+                }
+
+                return niceFraction * Math.pow(10, exponent);
+            };
+            // Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/
+            helpers.requestAnimFrame = (function() {
+                if (typeof window === 'undefined') {
+                    return function(callback) {
+                        callback();
+                    };
+                }
+                return window.requestAnimationFrame ||
+                    window.webkitRequestAnimationFrame ||
+                    window.mozRequestAnimationFrame ||
+                    window.oRequestAnimationFrame ||
+                    window.msRequestAnimationFrame ||
+                    function(callback) {
+                        return window.setTimeout(callback, 1000 / 60);
+                    };
+            }());
+            // -- DOM methods
+            helpers.getRelativePosition = function(evt, chart) {
+                var mouseX, mouseY;
+                var e = evt.originalEvent || evt;
+                var canvas = evt.currentTarget || evt.srcElement;
+                var boundingRect = canvas.getBoundingClientRect();
+
+                var touches = e.touches;
+                if (touches && touches.length > 0) {
+                    mouseX = touches[0].clientX;
+                    mouseY = touches[0].clientY;
+
+                } else {
+                    mouseX = e.clientX;
+                    mouseY = e.clientY;
+                }
+
+                // Scale mouse coordinates into canvas coordinates
+                // by following the pattern laid out by 'jerryj' in the comments of
+                // http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/
+                var paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));
+                var paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));
+                var paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));
+                var paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));
+                var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;
+                var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;
+
+                // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However
+                // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here
+                mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);
+                mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);
+
+                return {
+                    x: mouseX,
+                    y: mouseY
+                };
+
+            };
+
+            // Private helper function to convert max-width/max-height values that may be percentages into a number
+            function parseMaxStyle(styleValue, node, parentProperty) {
+                var valueInPixels;
+                if (typeof styleValue === 'string') {
+                    valueInPixels = parseInt(styleValue, 10);
+
+                    if (styleValue.indexOf('%') !== -1) {
+                        // percentage * size in dimension
+                        valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];
+                    }
+                } else {
+                    valueInPixels = styleValue;
+                }
+
+                return valueInPixels;
+            }
+
+            /**
+             * Returns if the given value contains an effective constraint.
+             * @private
+             */
+            function isConstrainedValue(value) {
+                return value !== undefined && value !== null && value !== 'none';
+            }
+
+            // Private helper to get a constraint dimension
+            // @param domNode : the node to check the constraint on
+            // @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)
+            // @param percentageProperty : property of parent to use when calculating width as a percentage
+            // @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser
+            function getConstraintDimension(domNode, maxStyle, percentageProperty) {
+                var view = document.defaultView;
+                var parentNode = domNode.parentNode;
+                var constrainedNode = view.getComputedStyle(domNode)[maxStyle];
+                var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];
+                var hasCNode = isConstrainedValue(constrainedNode);
+                var hasCContainer = isConstrainedValue(constrainedContainer);
+                var infinity = Number.POSITIVE_INFINITY;
+
+                if (hasCNode || hasCContainer) {
+                    return Math.min(
+                        hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,
+                        hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);
+                }
+
+                return 'none';
+            }
+            // returns Number or undefined if no constraint
+            helpers.getConstraintWidth = function(domNode) {
+                return getConstraintDimension(domNode, 'max-width', 'clientWidth');
+            };
+            // returns Number or undefined if no constraint
+            helpers.getConstraintHeight = function(domNode) {
+                return getConstraintDimension(domNode, 'max-height', 'clientHeight');
+            };
+            helpers.getMaximumWidth = function(domNode) {
+                var container = domNode.parentNode;
+                if (!container) {
+                    return domNode.clientWidth;
+                }
+
+                var paddingLeft = parseInt(helpers.getStyle(container, 'padding-left'), 10);
+                var paddingRight = parseInt(helpers.getStyle(container, 'padding-right'), 10);
+                var w = container.clientWidth - paddingLeft - paddingRight;
+                var cw = helpers.getConstraintWidth(domNode);
+                return isNaN(cw) ? w : Math.min(w, cw);
+            };
+            helpers.getMaximumHeight = function(domNode) {
+                var container = domNode.parentNode;
+                if (!container) {
+                    return domNode.clientHeight;
+                }
+
+                var paddingTop = parseInt(helpers.getStyle(container, 'padding-top'), 10);
+                var paddingBottom = parseInt(helpers.getStyle(container, 'padding-bottom'), 10);
+                var h = container.clientHeight - paddingTop - paddingBottom;
+                var ch = helpers.getConstraintHeight(domNode);
+                return isNaN(ch) ? h : Math.min(h, ch);
+            };
+            helpers.getStyle = function(el, property) {
+                return el.currentStyle ?
+                    el.currentStyle[property] :
+                    document.defaultView.getComputedStyle(el, null).getPropertyValue(property);
+            };
+            helpers.retinaScale = function(chart, forceRatio) {
+                var pixelRatio = chart.currentDevicePixelRatio = forceRatio || window.devicePixelRatio || 1;
+                if (pixelRatio === 1) {
+                    return;
+                }
+
+                var canvas = chart.canvas;
+                var height = chart.height;
+                var width = chart.width;
+
+                canvas.height = height * pixelRatio;
+                canvas.width = width * pixelRatio;
+                chart.ctx.scale(pixelRatio, pixelRatio);
+
+                // If no style has been set on the canvas, the render size is used as display size,
+                // making the chart visually bigger, so let's enforce it to the "correct" values.
+                // See https://github.com/chartjs/Chart.js/issues/3575
+                canvas.style.height = height + 'px';
+                canvas.style.width = width + 'px';
+            };
+            // -- Canvas methods
+            helpers.fontString = function(pixelSize, fontStyle, fontFamily) {
+                return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;
+            };
+            helpers.longestText = function(ctx, font, arrayOfThings, cache) {
+                cache = cache || {};
+                var data = cache.data = cache.data || {};
+                var gc = cache.garbageCollect = cache.garbageCollect || [];
+
+                if (cache.font !== font) {
+                    data = cache.data = {};
+                    gc = cache.garbageCollect = [];
+                    cache.font = font;
+                }
+
+                ctx.font = font;
+                var longest = 0;
+                helpers.each(arrayOfThings, function(thing) {
+                    // Undefined strings and arrays should not be measured
+                    if (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {
+                        longest = helpers.measureText(ctx, data, gc, longest, thing);
+                    } else if (helpers.isArray(thing)) {
+                        // if it is an array lets measure each element
+                        // to do maybe simplify this function a bit so we can do this more recursively?
+                        helpers.each(thing, function(nestedThing) {
+                            // Undefined strings and arrays should not be measured
+                            if (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {
+                                longest = helpers.measureText(ctx, data, gc, longest, nestedThing);
+                            }
+                        });
+                    }
+                });
+
+                var gcLen = gc.length / 2;
+                if (gcLen > arrayOfThings.length) {
+                    for (var i = 0; i < gcLen; i++) {
+                        delete data[gc[i]];
+                    }
+                    gc.splice(0, gcLen);
+                }
+                return longest;
+            };
+            helpers.measureText = function(ctx, data, gc, longest, string) {
+                var textWidth = data[string];
+                if (!textWidth) {
+                    textWidth = data[string] = ctx.measureText(string).width;
+                    gc.push(string);
+                }
+                if (textWidth > longest) {
+                    longest = textWidth;
+                }
+                return longest;
+            };
+            helpers.numberOfLabelLines = function(arrayOfThings) {
+                var numberOfLines = 1;
+                helpers.each(arrayOfThings, function(thing) {
+                    if (helpers.isArray(thing)) {
+                        if (thing.length > numberOfLines) {
+                            numberOfLines = thing.length;
+                        }
+                    }
+                });
+                return numberOfLines;
+            };
+
+            helpers.color = !color ?
+                function(value) {
+                    console.error('Color.js not found!');
+                    return value;
+                } :
+                function(value) {
+                    /* global CanvasGradient */
+                    if (value instanceof CanvasGradient) {
+                        value = defaults.global.defaultColor;
+                    }
+
+                    return color(value);
+                };
+
+            helpers.getHoverColor = function(colorValue) {
+                /* global CanvasPattern */
+                return (colorValue instanceof CanvasPattern) ?
+                    colorValue :
+                    helpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();
+            };
+        };
+
+    },{"25":25,"3":3,"45":45}],28:[function(require,module,exports){
+        'use strict';
+
+        var helpers = require(45);
+
+        /**
+         * Helper function to get relative position for an event
+         * @param {Event|IEvent} event - The event to get the position for
+         * @param {Chart} chart - The chart
+         * @returns {Point} the event position
+         */
+        function getRelativePosition(e, chart) {
+            if (e.native) {
+                return {
+                    x: e.x,
+                    y: e.y
+                };
+            }
+
+            return helpers.getRelativePosition(e, chart);
+        }
+
+        /**
+         * Helper function to traverse all of the visible elements in the chart
+         * @param chart {chart} the chart
+         * @param handler {Function} the callback to execute for each visible item
+         */
+        function parseVisibleItems(chart, handler) {
+            var datasets = chart.data.datasets;
+            var meta, i, j, ilen, jlen;
+
+            for (i = 0, ilen = datasets.length; i < ilen; ++i) {
+                if (!chart.isDatasetVisible(i)) {
+                    continue;
+                }
+
+                meta = chart.getDatasetMeta(i);
+                for (j = 0, jlen = meta.data.length; j < jlen; ++j) {
+                    var element = meta.data[j];
+                    if (!element._view.skip) {
+                        handler(element);
+                    }
+                }
+            }
+        }
+
+        /**
+         * Helper function to get the items that intersect the event position
+         * @param items {ChartElement[]} elements to filter
+         * @param position {Point} the point to be nearest to
+         * @return {ChartElement[]} the nearest items
+         */
+        function getIntersectItems(chart, position) {
+            var elements = [];
+
+            parseVisibleItems(chart, function(element) {
+                if (element.inRange(position.x, position.y)) {
+                    elements.push(element);
+                }
+            });
+
+            return elements;
+        }
+
+        /**
+         * Helper function to get the items nearest to the event position considering all visible items in teh chart
+         * @param chart {Chart} the chart to look at elements from
+         * @param position {Point} the point to be nearest to
+         * @param intersect {Boolean} if true, only consider items that intersect the position
+         * @param distanceMetric {Function} function to provide the distance between points
+         * @return {ChartElement[]} the nearest items
+         */
+        function getNearestItems(chart, position, intersect, distanceMetric) {
+            var minDistance = Number.POSITIVE_INFINITY;
+            var nearestItems = [];
+
+            parseVisibleItems(chart, function(element) {
+                if (intersect && !element.inRange(position.x, position.y)) {
+                    return;
+                }
+
+                var center = element.getCenterPoint();
+                var distance = distanceMetric(position, center);
+
+                if (distance < minDistance) {
+                    nearestItems = [element];
+                    minDistance = distance;
+                } else if (distance === minDistance) {
+                    // Can have multiple items at the same distance in which case we sort by size
+                    nearestItems.push(element);
+                }
+            });
+
+            return nearestItems;
+        }
+
+        /**
+         * Get a distance metric function for two points based on the
+         * axis mode setting
+         * @param {String} axis the axis mode. x|y|xy
+         */
+        function getDistanceMetricForAxis(axis) {
+            var useX = axis.indexOf('x') !== -1;
+            var useY = axis.indexOf('y') !== -1;
+
+            return function(pt1, pt2) {
+                var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;
+                var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;
+                return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));
+            };
+        }
+
+        function indexMode(chart, e, options) {
+            var position = getRelativePosition(e, chart);
+            // Default axis for index mode is 'x' to match old behaviour
+            options.axis = options.axis || 'x';
+            var distanceMetric = getDistanceMetricForAxis(options.axis);
+            var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);
+            var elements = [];
+
+            if (!items.length) {
+                return [];
+            }
+
+            chart.data.datasets.forEach(function(dataset, datasetIndex) {
+                if (chart.isDatasetVisible(datasetIndex)) {
+                    var meta = chart.getDatasetMeta(datasetIndex);
+                    var element = meta.data[items[0]._index];
+
+                    // don't count items that are skipped (null data)
+                    if (element && !element._view.skip) {
+                        elements.push(element);
+                    }
+                }
+            });
+
+            return elements;
+        }
+
+        /**
+         * @interface IInteractionOptions
+         */
+        /**
+         * If true, only consider items that intersect the point
+         * @name IInterfaceOptions#boolean
+         * @type Boolean
+         */
+
+        /**
+         * Contains interaction related functions
+         * @namespace Chart.Interaction
+         */
+        module.exports = {
+            // Helper function for different modes
+            modes: {
+                single: function(chart, e) {
+                    var position = getRelativePosition(e, chart);
+                    var elements = [];
+
+                    parseVisibleItems(chart, function(element) {
+                        if (element.inRange(position.x, position.y)) {
+                            elements.push(element);
+                            return elements;
+                        }
+                    });
+
+                    return elements.slice(0, 1);
+                },
+
+                /**
+                 * @function Chart.Interaction.modes.label
+                 * @deprecated since version 2.4.0
+                 * @todo remove at version 3
+                 * @private
+                 */
+                label: indexMode,
+
+                /**
+                 * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something
+                 * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item
+                 * @function Chart.Interaction.modes.index
+                 * @since v2.4.0
+                 * @param chart {chart} the chart we are returning items from
+                 * @param e {Event} the event we are find things at
+                 * @param options {IInteractionOptions} options to use during interaction
+                 * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned
+                 */
+                index: indexMode,
+
+                /**
+                 * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something
+                 * If the options.intersect is false, we find the nearest item and return the items in that dataset
+                 * @function Chart.Interaction.modes.dataset
+                 * @param chart {chart} the chart we are returning items from
+                 * @param e {Event} the event we are find things at
+                 * @param options {IInteractionOptions} options to use during interaction
+                 * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned
+                 */
+                dataset: function(chart, e, options) {
+                    var position = getRelativePosition(e, chart);
+                    options.axis = options.axis || 'xy';
+                    var distanceMetric = getDistanceMetricForAxis(options.axis);
+                    var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);
+
+                    if (items.length > 0) {
+                        items = chart.getDatasetMeta(items[0]._datasetIndex).data;
+                    }
+
+                    return items;
+                },
+
+                /**
+                 * @function Chart.Interaction.modes.x-axis
+                 * @deprecated since version 2.4.0. Use index mode and intersect == true
+                 * @todo remove at version 3
+                 * @private
+                 */
+                'x-axis': function(chart, e) {
+                    return indexMode(chart, e, {intersect: false});
+                },
+
+                /**
+                 * Point mode returns all elements that hit test based on the event position
+                 * of the event
+                 * @function Chart.Interaction.modes.intersect
+                 * @param chart {chart} the chart we are returning items from
+                 * @param e {Event} the event we are find things at
+                 * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned
+                 */
+                point: function(chart, e) {
+                    var position = getRelativePosition(e, chart);
+                    return getIntersectItems(chart, position);
+                },
+
+                /**
+                 * nearest mode returns the element closest to the point
+                 * @function Chart.Interaction.modes.intersect
+                 * @param chart {chart} the chart we are returning items from
+                 * @param e {Event} the event we are find things at
+                 * @param options {IInteractionOptions} options to use
+                 * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned
+                 */
+                nearest: function(chart, e, options) {
+                    var position = getRelativePosition(e, chart);
+                    options.axis = options.axis || 'xy';
+                    var distanceMetric = getDistanceMetricForAxis(options.axis);
+                    var nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);
+
+                    // We have multiple items at the same distance from the event. Now sort by smallest
+                    if (nearestItems.length > 1) {
+                        nearestItems.sort(function(a, b) {
+                            var sizeA = a.getArea();
+                            var sizeB = b.getArea();
+                            var ret = sizeA - sizeB;
+
+                            if (ret === 0) {
+                                // if equal sort by dataset index
+                                ret = a._datasetIndex - b._datasetIndex;
+                            }
+
+                            return ret;
+                        });
+                    }
+
+                    // Return only 1 item
+                    return nearestItems.slice(0, 1);
+                },
+
+                /**
+                 * x mode returns the elements that hit-test at the current x coordinate
+                 * @function Chart.Interaction.modes.x
+                 * @param chart {chart} the chart we are returning items from
+                 * @param e {Event} the event we are find things at
+                 * @param options {IInteractionOptions} options to use
+                 * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned
+                 */
+                x: function(chart, e, options) {
+                    var position = getRelativePosition(e, chart);
+                    var items = [];
+                    var intersectsItem = false;
+
+                    parseVisibleItems(chart, function(element) {
+                        if (element.inXRange(position.x)) {
+                            items.push(element);
+                        }
+
+                        if (element.inRange(position.x, position.y)) {
+                            intersectsItem = true;
+                        }
+                    });
+
+                    // If we want to trigger on an intersect and we don't have any items
+                    // that intersect the position, return nothing
+                    if (options.intersect && !intersectsItem) {
+                        items = [];
+                    }
+                    return items;
+                },
+
+                /**
+                 * y mode returns the elements that hit-test at the current y coordinate
+                 * @function Chart.Interaction.modes.y
+                 * @param chart {chart} the chart we are returning items from
+                 * @param e {Event} the event we are find things at
+                 * @param options {IInteractionOptions} options to use
+                 * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned
+                 */
+                y: function(chart, e, options) {
+                    var position = getRelativePosition(e, chart);
+                    var items = [];
+                    var intersectsItem = false;
+
+                    parseVisibleItems(chart, function(element) {
+                        if (element.inYRange(position.y)) {
+                            items.push(element);
+                        }
+
+                        if (element.inRange(position.x, position.y)) {
+                            intersectsItem = true;
+                        }
+                    });
+
+                    // If we want to trigger on an intersect and we don't have any items
+                    // that intersect the position, return nothing
+                    if (options.intersect && !intersectsItem) {
+                        items = [];
+                    }
+                    return items;
+                }
+            }
+        };
+
+    },{"45":45}],29:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+
+        defaults._set('global', {
+            responsive: true,
+            responsiveAnimationDuration: 0,
+            maintainAspectRatio: true,
+            events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],
+            hover: {
+                onHover: null,
+                mode: 'nearest',
+                intersect: true,
+                animationDuration: 400
+            },
+            onClick: null,
+            defaultColor: 'rgba(0,0,0,0.1)',
+            defaultFontColor: '#666',
+            defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
+            defaultFontSize: 12,
+            defaultFontStyle: 'normal',
+            showLines: true,
+
+            // Element defaults defined in element extensions
+            elements: {},
+
+            // Layout options such as padding
+            layout: {
+                padding: {
+                    top: 0,
+                    right: 0,
+                    bottom: 0,
+                    left: 0
+                }
+            }
+        });
+
+        module.exports = function() {
+
+            // Occupy the global variable of Chart, and create a simple base class
+            var Chart = function(item, config) {
+                this.construct(item, config);
+                return this;
+            };
+
+            Chart.Chart = Chart;
+
+            return Chart;
+        };
+
+    },{"25":25}],30:[function(require,module,exports){
+        'use strict';
+
+        var helpers = require(45);
+
+        module.exports = function(Chart) {
+
+            function filterByPosition(array, position) {
+                return helpers.where(array, function(v) {
+                    return v.position === position;
+                });
+            }
+
+            function sortByWeight(array, reverse) {
+                array.forEach(function(v, i) {
+                    v._tmpIndex_ = i;
+                    return v;
+                });
+                array.sort(function(a, b) {
+                    var v0 = reverse ? b : a;
+                    var v1 = reverse ? a : b;
+                    return v0.weight === v1.weight ?
+                        v0._tmpIndex_ - v1._tmpIndex_ :
+                        v0.weight - v1.weight;
+                });
+                array.forEach(function(v) {
+                    delete v._tmpIndex_;
+                });
+            }
+
+            /**
+             * @interface ILayoutItem
+             * @prop {String} position - The position of the item in the chart layout. Possible values are
+             * 'left', 'top', 'right', 'bottom', and 'chartArea'
+             * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area
+             * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down
+             * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)
+             * @prop {Function} update - Takes two parameters: width and height. Returns size of item
+             * @prop {Function} getPadding -  Returns an object with padding on the edges
+             * @prop {Number} width - Width of item. Must be valid after update()
+             * @prop {Number} height - Height of item. Must be valid after update()
+             * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update
+             * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update
+             * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update
+             * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update
+             */
+
+            // The layout service is very self explanatory.  It's responsible for the layout within a chart.
+            // Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need
+            // It is this service's responsibility of carrying out that layout.
+            Chart.layoutService = {
+                defaults: {},
+
+                /**
+                 * Register a box to a chart.
+                 * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.
+                 * @param {Chart} chart - the chart to use
+                 * @param {ILayoutItem} item - the item to add to be layed out
+                 */
+                addBox: function(chart, item) {
+                    if (!chart.boxes) {
+                        chart.boxes = [];
+                    }
+
+                    // initialize item with default values
+                    item.fullWidth = item.fullWidth || false;
+                    item.position = item.position || 'top';
+                    item.weight = item.weight || 0;
+
+                    chart.boxes.push(item);
+                },
+
+                /**
+                 * Remove a layoutItem from a chart
+                 * @param {Chart} chart - the chart to remove the box from
+                 * @param {Object} layoutItem - the item to remove from the layout
+                 */
+                removeBox: function(chart, layoutItem) {
+                    var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;
+                    if (index !== -1) {
+                        chart.boxes.splice(index, 1);
+                    }
+                },
+
+                /**
+                 * Sets (or updates) options on the given `item`.
+                 * @param {Chart} chart - the chart in which the item lives (or will be added to)
+                 * @param {Object} item - the item to configure with the given options
+                 * @param {Object} options - the new item options.
+                 */
+                configure: function(chart, item, options) {
+                    var props = ['fullWidth', 'position', 'weight'];
+                    var ilen = props.length;
+                    var i = 0;
+                    var prop;
+
+                    for (; i < ilen; ++i) {
+                        prop = props[i];
+                        if (options.hasOwnProperty(prop)) {
+                            item[prop] = options[prop];
+                        }
+                    }
+                },
+
+                /**
+                 * Fits boxes of the given chart into the given size by having each box measure itself
+                 * then running a fitting algorithm
+                 * @param {Chart} chart - the chart
+                 * @param {Number} width - the width to fit into
+                 * @param {Number} height - the height to fit into
+                 */
+                update: function(chart, width, height) {
+                    if (!chart) {
+                        return;
+                    }
+
+                    var layoutOptions = chart.options.layout || {};
+                    var padding = helpers.options.toPadding(layoutOptions.padding);
+                    var leftPadding = padding.left;
+                    var rightPadding = padding.right;
+                    var topPadding = padding.top;
+                    var bottomPadding = padding.bottom;
+
+                    var leftBoxes = filterByPosition(chart.boxes, 'left');
+                    var rightBoxes = filterByPosition(chart.boxes, 'right');
+                    var topBoxes = filterByPosition(chart.boxes, 'top');
+                    var bottomBoxes = filterByPosition(chart.boxes, 'bottom');
+                    var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');
+
+                    // Sort boxes by weight. A higher weight is further away from the chart area
+                    sortByWeight(leftBoxes, true);
+                    sortByWeight(rightBoxes, false);
+                    sortByWeight(topBoxes, true);
+                    sortByWeight(bottomBoxes, false);
+
+                    // Essentially we now have any number of boxes on each of the 4 sides.
+                    // Our canvas looks like the following.
+                    // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and
+                    // B1 is the bottom axis
+                    // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays
+                    // These locations are single-box locations only, when trying to register a chartArea location that is already taken,
+                    // an error will be thrown.
+                    //
+                    // |----------------------------------------------------|
+                    // |                  T1 (Full Width)                   |
+                    // |----------------------------------------------------|
+                    // |    |    |                 T2                  |    |
+                    // |    |----|-------------------------------------|----|
+                    // |    |    | C1 |                           | C2 |    |
+                    // |    |    |----|                           |----|    |
+                    // |    |    |                                     |    |
+                    // | L1 | L2 |           ChartArea (C0)            | R1 |
+                    // |    |    |                                     |    |
+                    // |    |    |----|                           |----|    |
+                    // |    |    | C3 |                           | C4 |    |
+                    // |    |----|-------------------------------------|----|
+                    // |    |    |                 B1                  |    |
+                    // |----------------------------------------------------|
+                    // |                  B2 (Full Width)                   |
+                    // |----------------------------------------------------|
+                    //
+                    // What we do to find the best sizing, we do the following
+                    // 1. Determine the minimum size of the chart area.
+                    // 2. Split the remaining width equally between each vertical axis
+                    // 3. Split the remaining height equally between each horizontal axis
+                    // 4. Give each layout the maximum size it can be. The layout will return it's minimum size
+                    // 5. Adjust the sizes of each axis based on it's minimum reported size.
+                    // 6. Refit each axis
+                    // 7. Position each axis in the final location
+                    // 8. Tell the chart the final location of the chart area
+                    // 9. Tell any axes that overlay the chart area the positions of the chart area
+
+                    // Step 1
+                    var chartWidth = width - leftPadding - rightPadding;
+                    var chartHeight = height - topPadding - bottomPadding;
+                    var chartAreaWidth = chartWidth / 2; // min 50%
+                    var chartAreaHeight = chartHeight / 2; // min 50%
+
+                    // Step 2
+                    var verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);
+
+                    // Step 3
+                    var horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);
+
+                    // Step 4
+                    var maxChartAreaWidth = chartWidth;
+                    var maxChartAreaHeight = chartHeight;
+                    var minBoxSizes = [];
+
+                    function getMinimumBoxSize(box) {
+                        var minSize;
+                        var isHorizontal = box.isHorizontal();
+
+                        if (isHorizontal) {
+                            minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);
+                            maxChartAreaHeight -= minSize.height;
+                        } else {
+                            minSize = box.update(verticalBoxWidth, chartAreaHeight);
+                            maxChartAreaWidth -= minSize.width;
+                        }
+
+                        minBoxSizes.push({
+                            horizontal: isHorizontal,
+                            minSize: minSize,
+                            box: box,
+                        });
+                    }
+
+                    helpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);
+
+                    // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)
+                    var maxHorizontalLeftPadding = 0;
+                    var maxHorizontalRightPadding = 0;
+                    var maxVerticalTopPadding = 0;
+                    var maxVerticalBottomPadding = 0;
+
+                    helpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {
+                        if (horizontalBox.getPadding) {
+                            var boxPadding = horizontalBox.getPadding();
+                            maxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);
+                            maxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);
+                        }
+                    });
+
+                    helpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {
+                        if (verticalBox.getPadding) {
+                            var boxPadding = verticalBox.getPadding();
+                            maxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);
+                            maxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);
+                        }
+                    });
+
+                    // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could
+                    // be if the axes are drawn at their minimum sizes.
+                    // Steps 5 & 6
+                    var totalLeftBoxesWidth = leftPadding;
+                    var totalRightBoxesWidth = rightPadding;
+                    var totalTopBoxesHeight = topPadding;
+                    var totalBottomBoxesHeight = bottomPadding;
+
+                    // Function to fit a box
+                    function fitBox(box) {
+                        var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {
+                            return minBox.box === box;
+                        });
+
+                        if (minBoxSize) {
+                            if (box.isHorizontal()) {
+                                var scaleMargin = {
+                                    left: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),
+                                    right: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),
+                                    top: 0,
+                                    bottom: 0
+                                };
+
+                                // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends
+                                // on the margin. Sometimes they need to increase in size slightly
+                                box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);
+                            } else {
+                                box.update(minBoxSize.minSize.width, maxChartAreaHeight);
+                            }
+                        }
+                    }
+
+                    // Update, and calculate the left and right margins for the horizontal boxes
+                    helpers.each(leftBoxes.concat(rightBoxes), fitBox);
+
+                    helpers.each(leftBoxes, function(box) {
+                        totalLeftBoxesWidth += box.width;
+                    });
+
+                    helpers.each(rightBoxes, function(box) {
+                        totalRightBoxesWidth += box.width;
+                    });
+
+                    // Set the Left and Right margins for the horizontal boxes
+                    helpers.each(topBoxes.concat(bottomBoxes), fitBox);
+
+                    // Figure out how much margin is on the top and bottom of the vertical boxes
+                    helpers.each(topBoxes, function(box) {
+                        totalTopBoxesHeight += box.height;
+                    });
+
+                    helpers.each(bottomBoxes, function(box) {
+                        totalBottomBoxesHeight += box.height;
+                    });
+
+                    function finalFitVerticalBox(box) {
+                        var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {
+                            return minSize.box === box;
+                        });
+
+                        var scaleMargin = {
+                            left: 0,
+                            right: 0,
+                            top: totalTopBoxesHeight,
+                            bottom: totalBottomBoxesHeight
+                        };
+
+                        if (minBoxSize) {
+                            box.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);
+                        }
+                    }
+
+                    // Let the left layout know the final margin
+                    helpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);
+
+                    // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)
+                    totalLeftBoxesWidth = leftPadding;
+                    totalRightBoxesWidth = rightPadding;
+                    totalTopBoxesHeight = topPadding;
+                    totalBottomBoxesHeight = bottomPadding;
+
+                    helpers.each(leftBoxes, function(box) {
+                        totalLeftBoxesWidth += box.width;
+                    });
+
+                    helpers.each(rightBoxes, function(box) {
+                        totalRightBoxesWidth += box.width;
+                    });
+
+                    helpers.each(topBoxes, function(box) {
+                        totalTopBoxesHeight += box.height;
+                    });
+                    helpers.each(bottomBoxes, function(box) {
+                        totalBottomBoxesHeight += box.height;
+                    });
+
+                    // We may be adding some padding to account for rotated x axis labels
+                    var leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);
+                    totalLeftBoxesWidth += leftPaddingAddition;
+                    totalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);
+
+                    var topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);
+                    totalTopBoxesHeight += topPaddingAddition;
+                    totalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);
+
+                    // Figure out if our chart area changed. This would occur if the dataset layout label rotation
+                    // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do
+                    // without calling `fit` again
+                    var newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;
+                    var newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;
+
+                    if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {
+                        helpers.each(leftBoxes, function(box) {
+                            box.height = newMaxChartAreaHeight;
+                        });
+
+                        helpers.each(rightBoxes, function(box) {
+                            box.height = newMaxChartAreaHeight;
+                        });
+
+                        helpers.each(topBoxes, function(box) {
+                            if (!box.fullWidth) {
+                                box.width = newMaxChartAreaWidth;
+                            }
+                        });
+
+                        helpers.each(bottomBoxes, function(box) {
+                            if (!box.fullWidth) {
+                                box.width = newMaxChartAreaWidth;
+                            }
+                        });
+
+                        maxChartAreaHeight = newMaxChartAreaHeight;
+                        maxChartAreaWidth = newMaxChartAreaWidth;
+                    }
+
+                    // Step 7 - Position the boxes
+                    var left = leftPadding + leftPaddingAddition;
+                    var top = topPadding + topPaddingAddition;
+
+                    function placeBox(box) {
+                        if (box.isHorizontal()) {
+                            box.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;
+                            box.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;
+                            box.top = top;
+                            box.bottom = top + box.height;
+
+                            // Move to next point
+                            top = box.bottom;
+
+                        } else {
+
+                            box.left = left;
+                            box.right = left + box.width;
+                            box.top = totalTopBoxesHeight;
+                            box.bottom = totalTopBoxesHeight + maxChartAreaHeight;
+
+                            // Move to next point
+                            left = box.right;
+                        }
+                    }
+
+                    helpers.each(leftBoxes.concat(topBoxes), placeBox);
+
+                    // Account for chart width and height
+                    left += maxChartAreaWidth;
+                    top += maxChartAreaHeight;
+
+                    helpers.each(rightBoxes, placeBox);
+                    helpers.each(bottomBoxes, placeBox);
+
+                    // Step 8
+                    chart.chartArea = {
+                        left: totalLeftBoxesWidth,
+                        top: totalTopBoxesHeight,
+                        right: totalLeftBoxesWidth + maxChartAreaWidth,
+                        bottom: totalTopBoxesHeight + maxChartAreaHeight
+                    };
+
+                    // Step 9
+                    helpers.each(chartAreaBoxes, function(box) {
+                        box.left = chart.chartArea.left;
+                        box.top = chart.chartArea.top;
+                        box.right = chart.chartArea.right;
+                        box.bottom = chart.chartArea.bottom;
+
+                        box.update(maxChartAreaWidth, maxChartAreaHeight);
+                    });
+                }
+            };
+        };
+
+    },{"45":45}],31:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var Element = require(26);
+        var helpers = require(45);
+
+        defaults._set('global', {
+            plugins: {}
+        });
+
+        module.exports = function(Chart) {
+
+            /**
+             * The plugin service singleton
+             * @namespace Chart.plugins
+             * @since 2.1.0
+             */
+            Chart.plugins = {
+                /**
+                 * Globally registered plugins.
+                 * @private
+                 */
+                _plugins: [],
+
+                /**
+                 * This identifier is used to invalidate the descriptors cache attached to each chart
+                 * when a global plugin is registered or unregistered. In this case, the cache ID is
+                 * incremented and descriptors are regenerated during following API calls.
+                 * @private
+                 */
+                _cacheId: 0,
+
+                /**
+                 * Registers the given plugin(s) if not already registered.
+                 * @param {Array|Object} plugins plugin instance(s).
+                 */
+                register: function(plugins) {
+                    var p = this._plugins;
+                    ([]).concat(plugins).forEach(function(plugin) {
+                        if (p.indexOf(plugin) === -1) {
+                            p.push(plugin);
+                        }
+                    });
+
+                    this._cacheId++;
+                },
+
+                /**
+                 * Unregisters the given plugin(s) only if registered.
+                 * @param {Array|Object} plugins plugin instance(s).
+                 */
+                unregister: function(plugins) {
+                    var p = this._plugins;
+                    ([]).concat(plugins).forEach(function(plugin) {
+                        var idx = p.indexOf(plugin);
+                        if (idx !== -1) {
+                            p.splice(idx, 1);
+                        }
+                    });
+
+                    this._cacheId++;
+                },
+
+                /**
+                 * Remove all registered plugins.
+                 * @since 2.1.5
+                 */
+                clear: function() {
+                    this._plugins = [];
+                    this._cacheId++;
+                },
+
+                /**
+                 * Returns the number of registered plugins?
+                 * @returns {Number}
+                 * @since 2.1.5
+                 */
+                count: function() {
+                    return this._plugins.length;
+                },
+
+                /**
+                 * Returns all registered plugin instances.
+                 * @returns {Array} array of plugin objects.
+                 * @since 2.1.5
+                 */
+                getAll: function() {
+                    return this._plugins;
+                },
+
+                /**
+                 * Calls enabled plugins for `chart` on the specified hook and with the given args.
+                 * This method immediately returns as soon as a plugin explicitly returns false. The
+                 * returned value can be used, for instance, to interrupt the current action.
+                 * @param {Object} chart - The chart instance for which plugins should be called.
+                 * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').
+                 * @param {Array} [args] - Extra arguments to apply to the hook call.
+                 * @returns {Boolean} false if any of the plugins return false, else returns true.
+                 */
+                notify: function(chart, hook, args) {
+                    var descriptors = this.descriptors(chart);
+                    var ilen = descriptors.length;
+                    var i, descriptor, plugin, params, method;
+
+                    for (i = 0; i < ilen; ++i) {
+                        descriptor = descriptors[i];
+                        plugin = descriptor.plugin;
+                        method = plugin[hook];
+                        if (typeof method === 'function') {
+                            params = [chart].concat(args || []);
+                            params.push(descriptor.options);
+                            if (method.apply(plugin, params) === false) {
+                                return false;
+                            }
+                        }
+                    }
+
+                    return true;
+                },
+
+                /**
+                 * Returns descriptors of enabled plugins for the given chart.
+                 * @returns {Array} [{ plugin, options }]
+                 * @private
+                 */
+                descriptors: function(chart) {
+                    var cache = chart._plugins || (chart._plugins = {});
+                    if (cache.id === this._cacheId) {
+                        return cache.descriptors;
+                    }
+
+                    var plugins = [];
+                    var descriptors = [];
+                    var config = (chart && chart.config) || {};
+                    var options = (config.options && config.options.plugins) || {};
+
+                    this._plugins.concat(config.plugins || []).forEach(function(plugin) {
+                        var idx = plugins.indexOf(plugin);
+                        if (idx !== -1) {
+                            return;
+                        }
+
+                        var id = plugin.id;
+                        var opts = options[id];
+                        if (opts === false) {
+                            return;
+                        }
+
+                        if (opts === true) {
+                            opts = helpers.clone(defaults.global.plugins[id]);
+                        }
+
+                        plugins.push(plugin);
+                        descriptors.push({
+                            plugin: plugin,
+                            options: opts || {}
+                        });
+                    });
+
+                    cache.descriptors = descriptors;
+                    cache.id = this._cacheId;
+                    return descriptors;
+                }
+            };
+
+            /**
+             * Plugin extension hooks.
+             * @interface IPlugin
+             * @since 2.1.0
+             */
+            /**
+             * @method IPlugin#beforeInit
+             * @desc Called before initializing `chart`.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#afterInit
+             * @desc Called after `chart` has been initialized and before the first update.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#beforeUpdate
+             * @desc Called before updating `chart`. If any plugin returns `false`, the update
+             * is cancelled (and thus subsequent render(s)) until another `update` is triggered.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Object} options - The plugin options.
+             * @returns {Boolean} `false` to cancel the chart update.
+             */
+            /**
+             * @method IPlugin#afterUpdate
+             * @desc Called after `chart` has been updated and before rendering. Note that this
+             * hook will not be called if the chart update has been previously cancelled.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#beforeDatasetsUpdate
+             * @desc Called before updating the `chart` datasets. If any plugin returns `false`,
+             * the datasets update is cancelled until another `update` is triggered.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Object} options - The plugin options.
+             * @returns {Boolean} false to cancel the datasets update.
+             * @since version 2.1.5
+             */
+            /**
+             * @method IPlugin#afterDatasetsUpdate
+             * @desc Called after the `chart` datasets have been updated. Note that this hook
+             * will not be called if the datasets update has been previously cancelled.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Object} options - The plugin options.
+             * @since version 2.1.5
+             */
+            /**
+             * @method IPlugin#beforeDatasetUpdate
+             * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin
+             * returns `false`, the datasets update is cancelled until another `update` is triggered.
+             * @param {Chart} chart - The chart instance.
+             * @param {Object} args - The call arguments.
+             * @param {Number} args.index - The dataset index.
+             * @param {Object} args.meta - The dataset metadata.
+             * @param {Object} options - The plugin options.
+             * @returns {Boolean} `false` to cancel the chart datasets drawing.
+             */
+            /**
+             * @method IPlugin#afterDatasetUpdate
+             * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note
+             * that this hook will not be called if the datasets update has been previously cancelled.
+             * @param {Chart} chart - The chart instance.
+             * @param {Object} args - The call arguments.
+             * @param {Number} args.index - The dataset index.
+             * @param {Object} args.meta - The dataset metadata.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#beforeLayout
+             * @desc Called before laying out `chart`. If any plugin returns `false`,
+             * the layout update is cancelled until another `update` is triggered.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Object} options - The plugin options.
+             * @returns {Boolean} `false` to cancel the chart layout.
+             */
+            /**
+             * @method IPlugin#afterLayout
+             * @desc Called after the `chart` has been layed out. Note that this hook will not
+             * be called if the layout update has been previously cancelled.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#beforeRender
+             * @desc Called before rendering `chart`. If any plugin returns `false`,
+             * the rendering is cancelled until another `render` is triggered.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Object} options - The plugin options.
+             * @returns {Boolean} `false` to cancel the chart rendering.
+             */
+            /**
+             * @method IPlugin#afterRender
+             * @desc Called after the `chart` has been fully rendered (and animation completed). Note
+             * that this hook will not be called if the rendering has been previously cancelled.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#beforeDraw
+             * @desc Called before drawing `chart` at every animation frame specified by the given
+             * easing value. If any plugin returns `false`, the frame drawing is cancelled until
+             * another `render` is triggered.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.
+             * @param {Object} options - The plugin options.
+             * @returns {Boolean} `false` to cancel the chart drawing.
+             */
+            /**
+             * @method IPlugin#afterDraw
+             * @desc Called after the `chart` has been drawn for the specific easing value. Note
+             * that this hook will not be called if the drawing has been previously cancelled.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#beforeDatasetsDraw
+             * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,
+             * the datasets drawing is cancelled until another `render` is triggered.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.
+             * @param {Object} options - The plugin options.
+             * @returns {Boolean} `false` to cancel the chart datasets drawing.
+             */
+            /**
+             * @method IPlugin#afterDatasetsDraw
+             * @desc Called after the `chart` datasets have been drawn. Note that this hook
+             * will not be called if the datasets drawing has been previously cancelled.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#beforeDatasetDraw
+             * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets
+             * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing
+             * is cancelled until another `render` is triggered.
+             * @param {Chart} chart - The chart instance.
+             * @param {Object} args - The call arguments.
+             * @param {Number} args.index - The dataset index.
+             * @param {Object} args.meta - The dataset metadata.
+             * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.
+             * @param {Object} options - The plugin options.
+             * @returns {Boolean} `false` to cancel the chart datasets drawing.
+             */
+            /**
+             * @method IPlugin#afterDatasetDraw
+             * @desc Called after the `chart` datasets at the given `args.index` have been drawn
+             * (datasets are drawn in the reverse order). Note that this hook will not be called
+             * if the datasets drawing has been previously cancelled.
+             * @param {Chart} chart - The chart instance.
+             * @param {Object} args - The call arguments.
+             * @param {Number} args.index - The dataset index.
+             * @param {Object} args.meta - The dataset metadata.
+             * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#beforeTooltipDraw
+             * @desc Called before drawing the `tooltip`. If any plugin returns `false`,
+             * the tooltip drawing is cancelled until another `render` is triggered.
+             * @param {Chart} chart - The chart instance.
+             * @param {Object} args - The call arguments.
+             * @param {Object} args.tooltip - The tooltip.
+             * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.
+             * @param {Object} options - The plugin options.
+             * @returns {Boolean} `false` to cancel the chart tooltip drawing.
+             */
+            /**
+             * @method IPlugin#afterTooltipDraw
+             * @desc Called after drawing the `tooltip`. Note that this hook will not
+             * be called if the tooltip drawing has been previously cancelled.
+             * @param {Chart} chart - The chart instance.
+             * @param {Object} args - The call arguments.
+             * @param {Object} args.tooltip - The tooltip.
+             * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#beforeEvent
+             * @desc Called before processing the specified `event`. If any plugin returns `false`,
+             * the event will be discarded.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {IEvent} event - The event object.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#afterEvent
+             * @desc Called after the `event` has been consumed. Note that this hook
+             * will not be called if the `event` has been previously discarded.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {IEvent} event - The event object.
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#resize
+             * @desc Called after the chart as been resized.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Number} size - The new canvas display size (eq. canvas.style width & height).
+             * @param {Object} options - The plugin options.
+             */
+            /**
+             * @method IPlugin#destroy
+             * @desc Called after the chart as been destroyed.
+             * @param {Chart.Controller} chart - The chart instance.
+             * @param {Object} options - The plugin options.
+             */
+
+            /**
+             * Provided for backward compatibility, use Chart.plugins instead
+             * @namespace Chart.pluginService
+             * @deprecated since version 2.1.5
+             * @todo remove at version 3
+             * @private
+             */
+            Chart.pluginService = Chart.plugins;
+
+            /**
+             * Provided for backward compatibility, inheriting from Chart.PlugingBase has no
+             * effect, instead simply create/register plugins via plain JavaScript objects.
+             * @interface Chart.PluginBase
+             * @deprecated since version 2.5.0
+             * @todo remove at version 3
+             * @private
+             */
+            Chart.PluginBase = Element.extend({});
+        };
+
+    },{"25":25,"26":26,"45":45}],32:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var Element = require(26);
+        var helpers = require(45);
+        var Ticks = require(34);
+
+        defaults._set('scale', {
+            display: true,
+            position: 'left',
+            offset: false,
+
+            // grid line settings
+            gridLines: {
+                display: true,
+                color: 'rgba(0, 0, 0, 0.1)',
+                lineWidth: 1,
+                drawBorder: true,
+                drawOnChartArea: true,
+                drawTicks: true,
+                tickMarkLength: 10,
+                zeroLineWidth: 1,
+                zeroLineColor: 'rgba(0,0,0,0.25)',
+                zeroLineBorderDash: [],
+                zeroLineBorderDashOffset: 0.0,
+                offsetGridLines: false,
+                borderDash: [],
+                borderDashOffset: 0.0
+            },
+
+            // scale label
+            scaleLabel: {
+                // display property
+                display: false,
+
+                // actual label
+                labelString: '',
+
+                // line height
+                lineHeight: 1.2,
+
+                // top/bottom padding
+                padding: {
+                    top: 4,
+                    bottom: 4
+                }
+            },
+
+            // label settings
+            ticks: {
+                beginAtZero: false,
+                minRotation: 0,
+                maxRotation: 50,
+                mirror: false,
+                padding: 0,
+                reverse: false,
+                display: true,
+                autoSkip: true,
+                autoSkipPadding: 0,
+                labelOffset: 0,
+                // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.
+                callback: Ticks.formatters.values,
+                minor: {},
+                major: {}
+            }
+        });
+
+        function labelsFromTicks(ticks) {
+            var labels = [];
+            var i, ilen;
+
+            for (i = 0, ilen = ticks.length; i < ilen; ++i) {
+                labels.push(ticks[i].label);
+            }
+
+            return labels;
+        }
+
+        function getLineValue(scale, index, offsetGridLines) {
+            var lineValue = scale.getPixelForTick(index);
+
+            if (offsetGridLines) {
+                if (index === 0) {
+                    lineValue -= (scale.getPixelForTick(1) - lineValue) / 2;
+                } else {
+                    lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;
+                }
+            }
+            return lineValue;
+        }
+
+        module.exports = function(Chart) {
+
+            function computeTextSize(context, tick, font) {
+                return helpers.isArray(tick) ?
+                    helpers.longestText(context, font, tick) :
+                    context.measureText(tick).width;
+            }
+
+            function parseFontOptions(options) {
+                var valueOrDefault = helpers.valueOrDefault;
+                var globalDefaults = defaults.global;
+                var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);
+                var style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);
+                var family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);
+
+                return {
+                    size: size,
+                    style: style,
+                    family: family,
+                    font: helpers.fontString(size, style, family)
+                };
+            }
+
+            function parseLineHeight(options) {
+                return helpers.options.toLineHeight(
+                    helpers.valueOrDefault(options.lineHeight, 1.2),
+                    helpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));
+            }
+
+            Chart.Scale = Element.extend({
+                /**
+                 * Get the padding needed for the scale
+                 * @method getPadding
+                 * @private
+                 * @returns {Padding} the necessary padding
+                 */
+                getPadding: function() {
+                    var me = this;
+                    return {
+                        left: me.paddingLeft || 0,
+                        top: me.paddingTop || 0,
+                        right: me.paddingRight || 0,
+                        bottom: me.paddingBottom || 0
+                    };
+                },
+
+                /**
+                 * Returns the scale tick objects ({label, major})
+                 * @since 2.7
+                 */
+                getTicks: function() {
+                    return this._ticks;
+                },
+
+                // These methods are ordered by lifecyle. Utilities then follow.
+                // Any function defined here is inherited by all scale types.
+                // Any function can be extended by the scale type
+
+                mergeTicksOptions: function() {
+                    var ticks = this.options.ticks;
+                    if (ticks.minor === false) {
+                        ticks.minor = {
+                            display: false
+                        };
+                    }
+                    if (ticks.major === false) {
+                        ticks.major = {
+                            display: false
+                        };
+                    }
+                    for (var key in ticks) {
+                        if (key !== 'major' && key !== 'minor') {
+                            if (typeof ticks.minor[key] === 'undefined') {
+                                ticks.minor[key] = ticks[key];
+                            }
+                            if (typeof ticks.major[key] === 'undefined') {
+                                ticks.major[key] = ticks[key];
+                            }
+                        }
+                    }
+                },
+                beforeUpdate: function() {
+                    helpers.callback(this.options.beforeUpdate, [this]);
+                },
+                update: function(maxWidth, maxHeight, margins) {
+                    var me = this;
+                    var i, ilen, labels, label, ticks, tick;
+
+                    // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)
+                    me.beforeUpdate();
+
+                    // Absorb the master measurements
+                    me.maxWidth = maxWidth;
+                    me.maxHeight = maxHeight;
+                    me.margins = helpers.extend({
+                        left: 0,
+                        right: 0,
+                        top: 0,
+                        bottom: 0
+                    }, margins);
+                    me.longestTextCache = me.longestTextCache || {};
+
+                    // Dimensions
+                    me.beforeSetDimensions();
+                    me.setDimensions();
+                    me.afterSetDimensions();
+
+                    // Data min/max
+                    me.beforeDataLimits();
+                    me.determineDataLimits();
+                    me.afterDataLimits();
+
+                    // Ticks - `this.ticks` is now DEPRECATED!
+                    // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member
+                    // and must not be accessed directly from outside this class. `this.ticks` being
+                    // around for long time and not marked as private, we can't change its structure
+                    // without unexpected breaking changes. If you need to access the scale ticks,
+                    // use scale.getTicks() instead.
+
+                    me.beforeBuildTicks();
+
+                    // New implementations should return an array of objects but for BACKWARD COMPAT,
+                    // we still support no return (`this.ticks` internally set by calling this method).
+                    ticks = me.buildTicks() || [];
+
+                    me.afterBuildTicks();
+
+                    me.beforeTickToLabelConversion();
+
+                    // New implementations should return the formatted tick labels but for BACKWARD
+                    // COMPAT, we still support no return (`this.ticks` internally changed by calling
+                    // this method and supposed to contain only string values).
+                    labels = me.convertTicksToLabels(ticks) || me.ticks;
+
+                    me.afterTickToLabelConversion();
+
+                    me.ticks = labels;   // BACKWARD COMPATIBILITY
+
+                    // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!
+
+                    // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)
+                    for (i = 0, ilen = labels.length; i < ilen; ++i) {
+                        label = labels[i];
+                        tick = ticks[i];
+                        if (!tick) {
+                            ticks.push(tick = {
+                                label: label,
+                                major: false
+                            });
+                        } else {
+                            tick.label = label;
+                        }
+                    }
+
+                    me._ticks = ticks;
+
+                    // Tick Rotation
+                    me.beforeCalculateTickRotation();
+                    me.calculateTickRotation();
+                    me.afterCalculateTickRotation();
+                    // Fit
+                    me.beforeFit();
+                    me.fit();
+                    me.afterFit();
+                    //
+                    me.afterUpdate();
+
+                    return me.minSize;
+
+                },
+                afterUpdate: function() {
+                    helpers.callback(this.options.afterUpdate, [this]);
+                },
+
+                //
+
+                beforeSetDimensions: function() {
+                    helpers.callback(this.options.beforeSetDimensions, [this]);
+                },
+                setDimensions: function() {
+                    var me = this;
+                    // Set the unconstrained dimension before label rotation
+                    if (me.isHorizontal()) {
+                        // Reset position before calculating rotation
+                        me.width = me.maxWidth;
+                        me.left = 0;
+                        me.right = me.width;
+                    } else {
+                        me.height = me.maxHeight;
+
+                        // Reset position before calculating rotation
+                        me.top = 0;
+                        me.bottom = me.height;
+                    }
+
+                    // Reset padding
+                    me.paddingLeft = 0;
+                    me.paddingTop = 0;
+                    me.paddingRight = 0;
+                    me.paddingBottom = 0;
+                },
+                afterSetDimensions: function() {
+                    helpers.callback(this.options.afterSetDimensions, [this]);
+                },
+
+                // Data limits
+                beforeDataLimits: function() {
+                    helpers.callback(this.options.beforeDataLimits, [this]);
+                },
+                determineDataLimits: helpers.noop,
+                afterDataLimits: function() {
+                    helpers.callback(this.options.afterDataLimits, [this]);
+                },
+
+                //
+                beforeBuildTicks: function() {
+                    helpers.callback(this.options.beforeBuildTicks, [this]);
+                },
+                buildTicks: helpers.noop,
+                afterBuildTicks: function() {
+                    helpers.callback(this.options.afterBuildTicks, [this]);
+                },
+
+                beforeTickToLabelConversion: function() {
+                    helpers.callback(this.options.beforeTickToLabelConversion, [this]);
+                },
+                convertTicksToLabels: function() {
+                    var me = this;
+                    // Convert ticks to strings
+                    var tickOpts = me.options.ticks;
+                    me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);
+                },
+                afterTickToLabelConversion: function() {
+                    helpers.callback(this.options.afterTickToLabelConversion, [this]);
+                },
+
+                //
+
+                beforeCalculateTickRotation: function() {
+                    helpers.callback(this.options.beforeCalculateTickRotation, [this]);
+                },
+                calculateTickRotation: function() {
+                    var me = this;
+                    var context = me.ctx;
+                    var tickOpts = me.options.ticks;
+                    var labels = labelsFromTicks(me._ticks);
+
+                    // Get the width of each grid by calculating the difference
+                    // between x offsets between 0 and 1.
+                    var tickFont = parseFontOptions(tickOpts);
+                    context.font = tickFont.font;
+
+                    var labelRotation = tickOpts.minRotation || 0;
+
+                    if (labels.length && me.options.display && me.isHorizontal()) {
+                        var originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);
+                        var labelWidth = originalLabelWidth;
+                        var cosRotation, sinRotation;
+
+                        // Allow 3 pixels x2 padding either side for label readability
+                        var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;
+
+                        // Max label rotation can be set or default to 90 - also act as a loop counter
+                        while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {
+                            var angleRadians = helpers.toRadians(labelRotation);
+                            cosRotation = Math.cos(angleRadians);
+                            sinRotation = Math.sin(angleRadians);
+
+                            if (sinRotation * originalLabelWidth > me.maxHeight) {
+                                // go back one step
+                                labelRotation--;
+                                break;
+                            }
+
+                            labelRotation++;
+                            labelWidth = cosRotation * originalLabelWidth;
+                        }
+                    }
+
+                    me.labelRotation = labelRotation;
+                },
+                afterCalculateTickRotation: function() {
+                    helpers.callback(this.options.afterCalculateTickRotation, [this]);
+                },
+
+                //
+
+                beforeFit: function() {
+                    helpers.callback(this.options.beforeFit, [this]);
+                },
+                fit: function() {
+                    var me = this;
+                    // Reset
+                    var minSize = me.minSize = {
+                        width: 0,
+                        height: 0
+                    };
+
+                    var labels = labelsFromTicks(me._ticks);
+
+                    var opts = me.options;
+                    var tickOpts = opts.ticks;
+                    var scaleLabelOpts = opts.scaleLabel;
+                    var gridLineOpts = opts.gridLines;
+                    var display = opts.display;
+                    var isHorizontal = me.isHorizontal();
+
+                    var tickFont = parseFontOptions(tickOpts);
+                    var tickMarkLength = opts.gridLines.tickMarkLength;
+
+                    // Width
+                    if (isHorizontal) {
+                        // subtract the margins to line up with the chartArea if we are a full width scale
+                        minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;
+                    } else {
+                        minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;
+                    }
+
+                    // height
+                    if (isHorizontal) {
+                        minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;
+                    } else {
+                        minSize.height = me.maxHeight; // fill all the height
+                    }
+
+                    // Are we showing a title for the scale?
+                    if (scaleLabelOpts.display && display) {
+                        var scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);
+                        var scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);
+                        var deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;
+
+                        if (isHorizontal) {
+                            minSize.height += deltaHeight;
+                        } else {
+                            minSize.width += deltaHeight;
+                        }
+                    }
+
+                    // Don't bother fitting the ticks if we are not showing them
+                    if (tickOpts.display && display) {
+                        var largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);
+                        var tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);
+                        var lineSpace = tickFont.size * 0.5;
+                        var tickPadding = me.options.ticks.padding;
+
+                        if (isHorizontal) {
+                            // A horizontal axis is more constrained by the height.
+                            me.longestLabelWidth = largestTextWidth;
+
+                            var angleRadians = helpers.toRadians(me.labelRotation);
+                            var cosRotation = Math.cos(angleRadians);
+                            var sinRotation = Math.sin(angleRadians);
+
+                            // TODO - improve this calculation
+                            var labelHeight = (sinRotation * largestTextWidth)
+                                + (tickFont.size * tallestLabelHeightInLines)
+                                + (lineSpace * (tallestLabelHeightInLines - 1))
+                                + lineSpace; // padding
+
+                            minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);
+
+                            me.ctx.font = tickFont.font;
+                            var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);
+                            var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);
+
+                            // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned
+                            // which means that the right padding is dominated by the font height
+                            if (me.labelRotation !== 0) {
+                                me.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges
+                                me.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;
+                            } else {
+                                me.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges
+                                me.paddingRight = lastLabelWidth / 2 + 3;
+                            }
+                        } else {
+                            // A vertical axis is more constrained by the width. Labels are the
+                            // dominant factor here, so get that length first and account for padding
+                            if (tickOpts.mirror) {
+                                largestTextWidth = 0;
+                            } else {
+                                // use lineSpace for consistency with horizontal axis
+                                // tickPadding is not implemented for horizontal
+                                largestTextWidth += tickPadding + lineSpace;
+                            }
+
+                            minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);
+
+                            me.paddingTop = tickFont.size / 2;
+                            me.paddingBottom = tickFont.size / 2;
+                        }
+                    }
+
+                    me.handleMargins();
+
+                    me.width = minSize.width;
+                    me.height = minSize.height;
+                },
+
+                /**
+                 * Handle margins and padding interactions
+                 * @private
+                 */
+                handleMargins: function() {
+                    var me = this;
+                    if (me.margins) {
+                        me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);
+                        me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);
+                        me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);
+                        me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);
+                    }
+                },
+
+                afterFit: function() {
+                    helpers.callback(this.options.afterFit, [this]);
+                },
+
+                // Shared Methods
+                isHorizontal: function() {
+                    return this.options.position === 'top' || this.options.position === 'bottom';
+                },
+                isFullWidth: function() {
+                    return (this.options.fullWidth);
+                },
+
+                // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not
+                getRightValue: function(rawValue) {
+                    // Null and undefined values first
+                    if (helpers.isNullOrUndef(rawValue)) {
+                        return NaN;
+                    }
+                    // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values
+                    if (typeof rawValue === 'number' && !isFinite(rawValue)) {
+                        return NaN;
+                    }
+                    // If it is in fact an object, dive in one more level
+                    if (rawValue) {
+                        if (this.isHorizontal()) {
+                            if (rawValue.x !== undefined) {
+                                return this.getRightValue(rawValue.x);
+                            }
+                        } else if (rawValue.y !== undefined) {
+                            return this.getRightValue(rawValue.y);
+                        }
+                    }
+
+                    // Value is good, return it
+                    return rawValue;
+                },
+
+                /**
+                 * Used to get the value to display in the tooltip for the data at the given index
+                 * @param index
+                 * @param datasetIndex
+                 */
+                getLabelForIndex: helpers.noop,
+
+                /**
+                 * Returns the location of the given data point. Value can either be an index or a numerical value
+                 * The coordinate (0, 0) is at the upper-left corner of the canvas
+                 * @param value
+                 * @param index
+                 * @param datasetIndex
+                 */
+                getPixelForValue: helpers.noop,
+
+                /**
+                 * Used to get the data value from a given pixel. This is the inverse of getPixelForValue
+                 * The coordinate (0, 0) is at the upper-left corner of the canvas
+                 * @param pixel
+                 */
+                getValueForPixel: helpers.noop,
+
+                /**
+                 * Returns the location of the tick at the given index
+                 * The coordinate (0, 0) is at the upper-left corner of the canvas
+                 */
+                getPixelForTick: function(index) {
+                    var me = this;
+                    var offset = me.options.offset;
+                    if (me.isHorizontal()) {
+                        var innerWidth = me.width - (me.paddingLeft + me.paddingRight);
+                        var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);
+                        var pixel = (tickWidth * index) + me.paddingLeft;
+
+                        if (offset) {
+                            pixel += tickWidth / 2;
+                        }
+
+                        var finalVal = me.left + Math.round(pixel);
+                        finalVal += me.isFullWidth() ? me.margins.left : 0;
+                        return finalVal;
+                    }
+                    var innerHeight = me.height - (me.paddingTop + me.paddingBottom);
+                    return me.top + (index * (innerHeight / (me._ticks.length - 1)));
+                },
+
+                /**
+                 * Utility for getting the pixel location of a percentage of scale
+                 * The coordinate (0, 0) is at the upper-left corner of the canvas
+                 */
+                getPixelForDecimal: function(decimal) {
+                    var me = this;
+                    if (me.isHorizontal()) {
+                        var innerWidth = me.width - (me.paddingLeft + me.paddingRight);
+                        var valueOffset = (innerWidth * decimal) + me.paddingLeft;
+
+                        var finalVal = me.left + Math.round(valueOffset);
+                        finalVal += me.isFullWidth() ? me.margins.left : 0;
+                        return finalVal;
+                    }
+                    return me.top + (decimal * me.height);
+                },
+
+                /**
+                 * Returns the pixel for the minimum chart value
+                 * The coordinate (0, 0) is at the upper-left corner of the canvas
+                 */
+                getBasePixel: function() {
+                    return this.getPixelForValue(this.getBaseValue());
+                },
+
+                getBaseValue: function() {
+                    var me = this;
+                    var min = me.min;
+                    var max = me.max;
+
+                    return me.beginAtZero ? 0 :
+                        min < 0 && max < 0 ? max :
+                            min > 0 && max > 0 ? min :
+                                0;
+                },
+
+                /**
+                 * Returns a subset of ticks to be plotted to avoid overlapping labels.
+                 * @private
+                 */
+                _autoSkip: function(ticks) {
+                    var skipRatio;
+                    var me = this;
+                    var isHorizontal = me.isHorizontal();
+                    var optionTicks = me.options.ticks.minor;
+                    var tickCount = ticks.length;
+                    var labelRotationRadians = helpers.toRadians(me.labelRotation);
+                    var cosRotation = Math.cos(labelRotationRadians);
+                    var longestRotatedLabel = me.longestLabelWidth * cosRotation;
+                    var result = [];
+                    var i, tick, shouldSkip;
+
+                    // figure out the maximum number of gridlines to show
+                    var maxTicks;
+                    if (optionTicks.maxTicksLimit) {
+                        maxTicks = optionTicks.maxTicksLimit;
+                    }
+
+                    if (isHorizontal) {
+                        skipRatio = false;
+
+                        if ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {
+                            skipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));
+                        }
+
+                        // if they defined a max number of optionTicks,
+                        // increase skipRatio until that number is met
+                        if (maxTicks && tickCount > maxTicks) {
+                            skipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));
+                        }
+                    }
+
+                    for (i = 0; i < tickCount; i++) {
+                        tick = ticks[i];
+
+                        // Since we always show the last tick,we need may need to hide the last shown one before
+                        shouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);
+                        if (shouldSkip && i !== tickCount - 1) {
+                            // leave tick in place but make sure it's not displayed (#4635)
+                            delete tick.label;
+                        }
+                        result.push(tick);
+                    }
+                    return result;
+                },
+
+                // Actually draw the scale on the canvas
+                // @param {rectangle} chartArea : the area of the chart to draw full grid lines on
+                draw: function(chartArea) {
+                    var me = this;
+                    var options = me.options;
+                    if (!options.display) {
+                        return;
+                    }
+
+                    var context = me.ctx;
+                    var globalDefaults = defaults.global;
+                    var optionTicks = options.ticks.minor;
+                    var optionMajorTicks = options.ticks.major || optionTicks;
+                    var gridLines = options.gridLines;
+                    var scaleLabel = options.scaleLabel;
+
+                    var isRotated = me.labelRotation !== 0;
+                    var isHorizontal = me.isHorizontal();
+
+                    var ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();
+                    var tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);
+                    var tickFont = parseFontOptions(optionTicks);
+                    var majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);
+                    var majorTickFont = parseFontOptions(optionMajorTicks);
+
+                    var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;
+
+                    var scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);
+                    var scaleLabelFont = parseFontOptions(scaleLabel);
+                    var scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);
+                    var labelRotationRadians = helpers.toRadians(me.labelRotation);
+
+                    var itemsToDraw = [];
+
+                    var xTickStart = options.position === 'right' ? me.left : me.right - tl;
+                    var xTickEnd = options.position === 'right' ? me.left + tl : me.right;
+                    var yTickStart = options.position === 'bottom' ? me.top : me.bottom - tl;
+                    var yTickEnd = options.position === 'bottom' ? me.top + tl : me.bottom;
+
+                    helpers.each(ticks, function(tick, index) {
+                        // autoskipper skipped this tick (#4635)
+                        if (helpers.isNullOrUndef(tick.label)) {
+                            return;
+                        }
+
+                        var label = tick.label;
+                        var lineWidth, lineColor, borderDash, borderDashOffset;
+                        if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {
+                            // Draw the first index specially
+                            lineWidth = gridLines.zeroLineWidth;
+                            lineColor = gridLines.zeroLineColor;
+                            borderDash = gridLines.zeroLineBorderDash;
+                            borderDashOffset = gridLines.zeroLineBorderDashOffset;
+                        } else {
+                            lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);
+                            lineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);
+                            borderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);
+                            borderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);
+                        }
+
+                        // Common properties
+                        var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;
+                        var textAlign = 'middle';
+                        var textBaseline = 'middle';
+                        var tickPadding = optionTicks.padding;
+
+                        if (isHorizontal) {
+                            var labelYOffset = tl + tickPadding;
+
+                            if (options.position === 'bottom') {
+                                // bottom
+                                textBaseline = !isRotated ? 'top' : 'middle';
+                                textAlign = !isRotated ? 'center' : 'right';
+                                labelY = me.top + labelYOffset;
+                            } else {
+                                // top
+                                textBaseline = !isRotated ? 'bottom' : 'middle';
+                                textAlign = !isRotated ? 'center' : 'left';
+                                labelY = me.bottom - labelYOffset;
+                            }
+
+                            var xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);
+                            if (xLineValue < me.left) {
+                                lineColor = 'rgba(0,0,0,0)';
+                            }
+                            xLineValue += helpers.aliasPixel(lineWidth);
+
+                            labelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)
+
+                            tx1 = tx2 = x1 = x2 = xLineValue;
+                            ty1 = yTickStart;
+                            ty2 = yTickEnd;
+                            y1 = chartArea.top;
+                            y2 = chartArea.bottom;
+                        } else {
+                            var isLeft = options.position === 'left';
+                            var labelXOffset;
+
+                            if (optionTicks.mirror) {
+                                textAlign = isLeft ? 'left' : 'right';
+                                labelXOffset = tickPadding;
+                            } else {
+                                textAlign = isLeft ? 'right' : 'left';
+                                labelXOffset = tl + tickPadding;
+                            }
+
+                            labelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;
+
+                            var yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);
+                            if (yLineValue < me.top) {
+                                lineColor = 'rgba(0,0,0,0)';
+                            }
+                            yLineValue += helpers.aliasPixel(lineWidth);
+
+                            labelY = me.getPixelForTick(index) + optionTicks.labelOffset;
+
+                            tx1 = xTickStart;
+                            tx2 = xTickEnd;
+                            x1 = chartArea.left;
+                            x2 = chartArea.right;
+                            ty1 = ty2 = y1 = y2 = yLineValue;
+                        }
+
+                        itemsToDraw.push({
+                            tx1: tx1,
+                            ty1: ty1,
+                            tx2: tx2,
+                            ty2: ty2,
+                            x1: x1,
+                            y1: y1,
+                            x2: x2,
+                            y2: y2,
+                            labelX: labelX,
+                            labelY: labelY,
+                            glWidth: lineWidth,
+                            glColor: lineColor,
+                            glBorderDash: borderDash,
+                            glBorderDashOffset: borderDashOffset,
+                            rotation: -1 * labelRotationRadians,
+                            label: label,
+                            major: tick.major,
+                            textBaseline: textBaseline,
+                            textAlign: textAlign
+                        });
+                    });
+
+                    // Draw all of the tick labels, tick marks, and grid lines at the correct places
+                    helpers.each(itemsToDraw, function(itemToDraw) {
+                        if (gridLines.display) {
+                            context.save();
+                            context.lineWidth = itemToDraw.glWidth;
+                            context.strokeStyle = itemToDraw.glColor;
+                            if (context.setLineDash) {
+                                context.setLineDash(itemToDraw.glBorderDash);
+                                context.lineDashOffset = itemToDraw.glBorderDashOffset;
+                            }
+
+                            context.beginPath();
+
+                            if (gridLines.drawTicks) {
+                                context.moveTo(itemToDraw.tx1, itemToDraw.ty1);
+                                context.lineTo(itemToDraw.tx2, itemToDraw.ty2);
+                            }
+
+                            if (gridLines.drawOnChartArea) {
+                                context.moveTo(itemToDraw.x1, itemToDraw.y1);
+                                context.lineTo(itemToDraw.x2, itemToDraw.y2);
+                            }
+
+                            context.stroke();
+                            context.restore();
+                        }
+
+                        if (optionTicks.display) {
+                            // Make sure we draw text in the correct color and font
+                            context.save();
+                            context.translate(itemToDraw.labelX, itemToDraw.labelY);
+                            context.rotate(itemToDraw.rotation);
+                            context.font = itemToDraw.major ? majorTickFont.font : tickFont.font;
+                            context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;
+                            context.textBaseline = itemToDraw.textBaseline;
+                            context.textAlign = itemToDraw.textAlign;
+
+                            var label = itemToDraw.label;
+                            if (helpers.isArray(label)) {
+                                for (var i = 0, y = 0; i < label.length; ++i) {
+                                    // We just make sure the multiline element is a string here..
+                                    context.fillText('' + label[i], 0, y);
+                                    // apply same lineSpacing as calculated @ L#320
+                                    y += (tickFont.size * 1.5);
+                                }
+                            } else {
+                                context.fillText(label, 0, 0);
+                            }
+                            context.restore();
+                        }
+                    });
+
+                    if (scaleLabel.display) {
+                        // Draw the scale label
+                        var scaleLabelX;
+                        var scaleLabelY;
+                        var rotation = 0;
+                        var halfLineHeight = parseLineHeight(scaleLabel) / 2;
+
+                        if (isHorizontal) {
+                            scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width
+                            scaleLabelY = options.position === 'bottom'
+                                ? me.bottom - halfLineHeight - scaleLabelPadding.bottom
+                                : me.top + halfLineHeight + scaleLabelPadding.top;
+                        } else {
+                            var isLeft = options.position === 'left';
+                            scaleLabelX = isLeft
+                                ? me.left + halfLineHeight + scaleLabelPadding.top
+                                : me.right - halfLineHeight - scaleLabelPadding.top;
+                            scaleLabelY = me.top + ((me.bottom - me.top) / 2);
+                            rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;
+                        }
+
+                        context.save();
+                        context.translate(scaleLabelX, scaleLabelY);
+                        context.rotate(rotation);
+                        context.textAlign = 'center';
+                        context.textBaseline = 'middle';
+                        context.fillStyle = scaleLabelFontColor; // render in correct colour
+                        context.font = scaleLabelFont.font;
+                        context.fillText(scaleLabel.labelString, 0, 0);
+                        context.restore();
+                    }
+
+                    if (gridLines.drawBorder) {
+                        // Draw the line at the edge of the axis
+                        context.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);
+                        context.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);
+                        var x1 = me.left;
+                        var x2 = me.right;
+                        var y1 = me.top;
+                        var y2 = me.bottom;
+
+                        var aliasPixel = helpers.aliasPixel(context.lineWidth);
+                        if (isHorizontal) {
+                            y1 = y2 = options.position === 'top' ? me.bottom : me.top;
+                            y1 += aliasPixel;
+                            y2 += aliasPixel;
+                        } else {
+                            x1 = x2 = options.position === 'left' ? me.right : me.left;
+                            x1 += aliasPixel;
+                            x2 += aliasPixel;
+                        }
+
+                        context.beginPath();
+                        context.moveTo(x1, y1);
+                        context.lineTo(x2, y2);
+                        context.stroke();
+                    }
+                }
+            });
+        };
+
+    },{"25":25,"26":26,"34":34,"45":45}],33:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var helpers = require(45);
+
+        module.exports = function(Chart) {
+
+            Chart.scaleService = {
+                // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then
+                // use the new chart options to grab the correct scale
+                constructors: {},
+                // Use a registration function so that we can move to an ES6 map when we no longer need to support
+                // old browsers
+
+                // Scale config defaults
+                defaults: {},
+                registerScaleType: function(type, scaleConstructor, scaleDefaults) {
+                    this.constructors[type] = scaleConstructor;
+                    this.defaults[type] = helpers.clone(scaleDefaults);
+                },
+                getScaleConstructor: function(type) {
+                    return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;
+                },
+                getScaleDefaults: function(type) {
+                    // Return the scale defaults merged with the global settings so that we always use the latest ones
+                    return this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};
+                },
+                updateScaleDefaults: function(type, additions) {
+                    var me = this;
+                    if (me.defaults.hasOwnProperty(type)) {
+                        me.defaults[type] = helpers.extend(me.defaults[type], additions);
+                    }
+                },
+                addScalesToLayout: function(chart) {
+                    // Adds each scale to the chart.boxes array to be sized accordingly
+                    helpers.each(chart.scales, function(scale) {
+                        // Set ILayoutItem parameters for backwards compatibility
+                        scale.fullWidth = scale.options.fullWidth;
+                        scale.position = scale.options.position;
+                        scale.weight = scale.options.weight;
+                        Chart.layoutService.addBox(chart, scale);
+                    });
+                }
+            };
+        };
+
+    },{"25":25,"45":45}],34:[function(require,module,exports){
+        'use strict';
+
+        var helpers = require(45);
+
+        /**
+         * Namespace to hold static tick generation functions
+         * @namespace Chart.Ticks
+         */
+        module.exports = {
+            /**
+             * Namespace to hold generators for different types of ticks
+             * @namespace Chart.Ticks.generators
+             */
+            generators: {
+                /**
+                 * Interface for the options provided to the numeric tick generator
+                 * @interface INumericTickGenerationOptions
+                 */
+                /**
+                 * The maximum number of ticks to display
+                 * @name INumericTickGenerationOptions#maxTicks
+                 * @type Number
+                 */
+                /**
+                 * The distance between each tick.
+                 * @name INumericTickGenerationOptions#stepSize
+                 * @type Number
+                 * @optional
+                 */
+                /**
+                 * Forced minimum for the ticks. If not specified, the minimum of the data range is used to calculate the tick minimum
+                 * @name INumericTickGenerationOptions#min
+                 * @type Number
+                 * @optional
+                 */
+                /**
+                 * The maximum value of the ticks. If not specified, the maximum of the data range is used to calculate the tick maximum
+                 * @name INumericTickGenerationOptions#max
+                 * @type Number
+                 * @optional
+                 */
+
+                /**
+                 * Generate a set of linear ticks
+                 * @method Chart.Ticks.generators.linear
+                 * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks
+                 * @param dataRange {IRange} the range of the data
+                 * @returns {Array<Number>} array of tick values
+                 */
+                linear: function(generationOptions, dataRange) {
+                    var ticks = [];
+                    // To get a "nice" value for the tick spacing, we will use the appropriately named
+                    // "nice number" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks
+                    // for details.
+
+                    var spacing;
+                    if (generationOptions.stepSize && generationOptions.stepSize > 0) {
+                        spacing = generationOptions.stepSize;
+                    } else {
+                        var niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);
+                        spacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);
+                    }
+                    var niceMin = Math.floor(dataRange.min / spacing) * spacing;
+                    var niceMax = Math.ceil(dataRange.max / spacing) * spacing;
+
+                    // If min, max and stepSize is set and they make an evenly spaced scale use it.
+                    if (generationOptions.min && generationOptions.max && generationOptions.stepSize) {
+                        // If very close to our whole number, use it.
+                        if (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {
+                            niceMin = generationOptions.min;
+                            niceMax = generationOptions.max;
+                        }
+                    }
+
+                    var numSpaces = (niceMax - niceMin) / spacing;
+                    // If very close to our rounded value, use it.
+                    if (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {
+                        numSpaces = Math.round(numSpaces);
+                    } else {
+                        numSpaces = Math.ceil(numSpaces);
+                    }
+
+                    // Put the values into the ticks array
+                    ticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);
+                    for (var j = 1; j < numSpaces; ++j) {
+                        ticks.push(niceMin + (j * spacing));
+                    }
+                    ticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);
+
+                    return ticks;
+                },
+
+                /**
+                 * Generate a set of logarithmic ticks
+                 * @method Chart.Ticks.generators.logarithmic
+                 * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks
+                 * @param dataRange {IRange} the range of the data
+                 * @returns {Array<Number>} array of tick values
+                 */
+                logarithmic: function(generationOptions, dataRange) {
+                    var ticks = [];
+                    var valueOrDefault = helpers.valueOrDefault;
+
+                    // Figure out what the max number of ticks we can support it is based on the size of
+                    // the axis area. For now, we say that the minimum tick spacing in pixels must be 50
+                    // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on
+                    // the graph
+                    var tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));
+
+                    var endExp = Math.floor(helpers.log10(dataRange.max));
+                    var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));
+                    var exp, significand;
+
+                    if (tickVal === 0) {
+                        exp = Math.floor(helpers.log10(dataRange.minNotZero));
+                        significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));
+
+                        ticks.push(tickVal);
+                        tickVal = significand * Math.pow(10, exp);
+                    } else {
+                        exp = Math.floor(helpers.log10(tickVal));
+                        significand = Math.floor(tickVal / Math.pow(10, exp));
+                    }
+
+                    do {
+                        ticks.push(tickVal);
+
+                        ++significand;
+                        if (significand === 10) {
+                            significand = 1;
+                            ++exp;
+                        }
+
+                        tickVal = significand * Math.pow(10, exp);
+                    } while (exp < endExp || (exp === endExp && significand < endSignificand));
+
+                    var lastTick = valueOrDefault(generationOptions.max, tickVal);
+                    ticks.push(lastTick);
+
+                    return ticks;
+                }
+            },
+
+            /**
+             * Namespace to hold formatters for different types of ticks
+             * @namespace Chart.Ticks.formatters
+             */
+            formatters: {
+                /**
+                 * Formatter for value labels
+                 * @method Chart.Ticks.formatters.values
+                 * @param value the value to display
+                 * @return {String|Array} the label to display
+                 */
+                values: function(value) {
+                    return helpers.isArray(value) ? value : '' + value;
+                },
+
+                /**
+                 * Formatter for linear numeric ticks
+                 * @method Chart.Ticks.formatters.linear
+                 * @param tickValue {Number} the value to be formatted
+                 * @param index {Number} the position of the tickValue parameter in the ticks array
+                 * @param ticks {Array<Number>} the list of ticks being converted
+                 * @return {String} string representation of the tickValue parameter
+                 */
+                linear: function(tickValue, index, ticks) {
+                    // If we have lots of ticks, don't use the ones
+                    var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];
+
+                    // If we have a number like 2.5 as the delta, figure out how many decimal places we need
+                    if (Math.abs(delta) > 1) {
+                        if (tickValue !== Math.floor(tickValue)) {
+                            // not an integer
+                            delta = tickValue - Math.floor(tickValue);
+                        }
+                    }
+
+                    var logDelta = helpers.log10(Math.abs(delta));
+                    var tickString = '';
+
+                    if (tickValue !== 0) {
+                        var numDecimal = -1 * Math.floor(logDelta);
+                        numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places
+                        tickString = tickValue.toFixed(numDecimal);
+                    } else {
+                        tickString = '0'; // never show decimal places for 0
+                    }
+
+                    return tickString;
+                },
+
+                logarithmic: function(tickValue, index, ticks) {
+                    var remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));
+
+                    if (tickValue === 0) {
+                        return '0';
+                    } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {
+                        return tickValue.toExponential();
+                    }
+                    return '';
+                }
+            }
+        };
+
+    },{"45":45}],35:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var Element = require(26);
+        var helpers = require(45);
+
+        defaults._set('global', {
+            tooltips: {
+                enabled: true,
+                custom: null,
+                mode: 'nearest',
+                position: 'average',
+                intersect: true,
+                backgroundColor: 'rgba(0,0,0,0.8)',
+                titleFontStyle: 'bold',
+                titleSpacing: 2,
+                titleMarginBottom: 6,
+                titleFontColor: '#fff',
+                titleAlign: 'left',
+                bodySpacing: 2,
+                bodyFontColor: '#fff',
+                bodyAlign: 'left',
+                footerFontStyle: 'bold',
+                footerSpacing: 2,
+                footerMarginTop: 6,
+                footerFontColor: '#fff',
+                footerAlign: 'left',
+                yPadding: 6,
+                xPadding: 6,
+                caretPadding: 2,
+                caretSize: 5,
+                cornerRadius: 6,
+                multiKeyBackground: '#fff',
+                displayColors: true,
+                borderColor: 'rgba(0,0,0,0)',
+                borderWidth: 0,
+                callbacks: {
+                    // Args are: (tooltipItems, data)
+                    beforeTitle: helpers.noop,
+                    title: function(tooltipItems, data) {
+                        // Pick first xLabel for now
+                        var title = '';
+                        var labels = data.labels;
+                        var labelCount = labels ? labels.length : 0;
+
+                        if (tooltipItems.length > 0) {
+                            var item = tooltipItems[0];
+
+                            if (item.xLabel) {
+                                title = item.xLabel;
+                            } else if (labelCount > 0 && item.index < labelCount) {
+                                title = labels[item.index];
+                            }
+                        }
+
+                        return title;
+                    },
+                    afterTitle: helpers.noop,
+
+                    // Args are: (tooltipItems, data)
+                    beforeBody: helpers.noop,
+
+                    // Args are: (tooltipItem, data)
+                    beforeLabel: helpers.noop,
+                    label: function(tooltipItem, data) {
+                        var label = data.datasets[tooltipItem.datasetIndex].label || '';
+
+                        if (label) {
+                            label += ': ';
+                        }
+                        label += tooltipItem.yLabel;
+                        return label;
+                    },
+                    labelColor: function(tooltipItem, chart) {
+                        var meta = chart.getDatasetMeta(tooltipItem.datasetIndex);
+                        var activeElement = meta.data[tooltipItem.index];
+                        var view = activeElement._view;
+                        return {
+                            borderColor: view.borderColor,
+                            backgroundColor: view.backgroundColor
+                        };
+                    },
+                    labelTextColor: function() {
+                        return this._options.bodyFontColor;
+                    },
+                    afterLabel: helpers.noop,
+
+                    // Args are: (tooltipItems, data)
+                    afterBody: helpers.noop,
+
+                    // Args are: (tooltipItems, data)
+                    beforeFooter: helpers.noop,
+                    footer: helpers.noop,
+                    afterFooter: helpers.noop
+                }
+            }
+        });
+
+        module.exports = function(Chart) {
+
+            /**
+             * Helper method to merge the opacity into a color
+             */
+            function mergeOpacity(colorString, opacity) {
+                var color = helpers.color(colorString);
+                return color.alpha(opacity * color.alpha()).rgbaString();
+            }
+
+            // Helper to push or concat based on if the 2nd parameter is an array or not
+            function pushOrConcat(base, toPush) {
+                if (toPush) {
+                    if (helpers.isArray(toPush)) {
+                        // base = base.concat(toPush);
+                        Array.prototype.push.apply(base, toPush);
+                    } else {
+                        base.push(toPush);
+                    }
+                }
+
+                return base;
+            }
+
+            // Private helper to create a tooltip item model
+            // @param element : the chart element (point, arc, bar) to create the tooltip item for
+            // @return : new tooltip item
+            function createTooltipItem(element) {
+                var xScale = element._xScale;
+                var yScale = element._yScale || element._scale; // handle radar || polarArea charts
+                var index = element._index;
+                var datasetIndex = element._datasetIndex;
+
+                return {
+                    xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',
+                    yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',
+                    index: index,
+                    datasetIndex: datasetIndex,
+                    x: element._model.x,
+                    y: element._model.y
+                };
+            }
+
+            /**
+             * Helper to get the reset model for the tooltip
+             * @param tooltipOpts {Object} the tooltip options
+             */
+            function getBaseModel(tooltipOpts) {
+                var globalDefaults = defaults.global;
+                var valueOrDefault = helpers.valueOrDefault;
+
+                return {
+                    // Positioning
+                    xPadding: tooltipOpts.xPadding,
+                    yPadding: tooltipOpts.yPadding,
+                    xAlign: tooltipOpts.xAlign,
+                    yAlign: tooltipOpts.yAlign,
+
+                    // Body
+                    bodyFontColor: tooltipOpts.bodyFontColor,
+                    _bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),
+                    _bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),
+                    _bodyAlign: tooltipOpts.bodyAlign,
+                    bodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),
+                    bodySpacing: tooltipOpts.bodySpacing,
+
+                    // Title
+                    titleFontColor: tooltipOpts.titleFontColor,
+                    _titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),
+                    _titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),
+                    titleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),
+                    _titleAlign: tooltipOpts.titleAlign,
+                    titleSpacing: tooltipOpts.titleSpacing,
+                    titleMarginBottom: tooltipOpts.titleMarginBottom,
+
+                    // Footer
+                    footerFontColor: tooltipOpts.footerFontColor,
+                    _footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),
+                    _footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),
+                    footerFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),
+                    _footerAlign: tooltipOpts.footerAlign,
+                    footerSpacing: tooltipOpts.footerSpacing,
+                    footerMarginTop: tooltipOpts.footerMarginTop,
+
+                    // Appearance
+                    caretSize: tooltipOpts.caretSize,
+                    cornerRadius: tooltipOpts.cornerRadius,
+                    backgroundColor: tooltipOpts.backgroundColor,
+                    opacity: 0,
+                    legendColorBackground: tooltipOpts.multiKeyBackground,
+                    displayColors: tooltipOpts.displayColors,
+                    borderColor: tooltipOpts.borderColor,
+                    borderWidth: tooltipOpts.borderWidth
+                };
+            }
+
+            /**
+             * Get the size of the tooltip
+             */
+            function getTooltipSize(tooltip, model) {
+                var ctx = tooltip._chart.ctx;
+
+                var height = model.yPadding * 2; // Tooltip Padding
+                var width = 0;
+
+                // Count of all lines in the body
+                var body = model.body;
+                var combinedBodyLength = body.reduce(function(count, bodyItem) {
+                    return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;
+                }, 0);
+                combinedBodyLength += model.beforeBody.length + model.afterBody.length;
+
+                var titleLineCount = model.title.length;
+                var footerLineCount = model.footer.length;
+                var titleFontSize = model.titleFontSize;
+                var bodyFontSize = model.bodyFontSize;
+                var footerFontSize = model.footerFontSize;
+
+                height += titleLineCount * titleFontSize; // Title Lines
+                height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing
+                height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin
+                height += combinedBodyLength * bodyFontSize; // Body Lines
+                height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing
+                height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin
+                height += footerLineCount * (footerFontSize); // Footer Lines
+                height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing
+
+                // Title width
+                var widthPadding = 0;
+                var maxLineWidth = function(line) {
+                    width = Math.max(width, ctx.measureText(line).width + widthPadding);
+                };
+
+                ctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);
+                helpers.each(model.title, maxLineWidth);
+
+                // Body width
+                ctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);
+                helpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);
+
+                // Body lines may include some extra width due to the color box
+                widthPadding = model.displayColors ? (bodyFontSize + 2) : 0;
+                helpers.each(body, function(bodyItem) {
+                    helpers.each(bodyItem.before, maxLineWidth);
+                    helpers.each(bodyItem.lines, maxLineWidth);
+                    helpers.each(bodyItem.after, maxLineWidth);
+                });
+
+                // Reset back to 0
+                widthPadding = 0;
+
+                // Footer width
+                ctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);
+                helpers.each(model.footer, maxLineWidth);
+
+                // Add padding
+                width += 2 * model.xPadding;
+
+                return {
+                    width: width,
+                    height: height
+                };
+            }
+
+            /**
+             * Helper to get the alignment of a tooltip given the size
+             */
+            function determineAlignment(tooltip, size) {
+                var model = tooltip._model;
+                var chart = tooltip._chart;
+                var chartArea = tooltip._chart.chartArea;
+                var xAlign = 'center';
+                var yAlign = 'center';
+
+                if (model.y < size.height) {
+                    yAlign = 'top';
+                } else if (model.y > (chart.height - size.height)) {
+                    yAlign = 'bottom';
+                }
+
+                var lf, rf; // functions to determine left, right alignment
+                var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart
+                var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges
+                var midX = (chartArea.left + chartArea.right) / 2;
+                var midY = (chartArea.top + chartArea.bottom) / 2;
+
+                if (yAlign === 'center') {
+                    lf = function(x) {
+                        return x <= midX;
+                    };
+                    rf = function(x) {
+                        return x > midX;
+                    };
+                } else {
+                    lf = function(x) {
+                        return x <= (size.width / 2);
+                    };
+                    rf = function(x) {
+                        return x >= (chart.width - (size.width / 2));
+                    };
+                }
+
+                olf = function(x) {
+                    return x + size.width > chart.width;
+                };
+                orf = function(x) {
+                    return x - size.width < 0;
+                };
+                yf = function(y) {
+                    return y <= midY ? 'top' : 'bottom';
+                };
+
+                if (lf(model.x)) {
+                    xAlign = 'left';
+
+                    // Is tooltip too wide and goes over the right side of the chart.?
+                    if (olf(model.x)) {
+                        xAlign = 'center';
+                        yAlign = yf(model.y);
+                    }
+                } else if (rf(model.x)) {
+                    xAlign = 'right';
+
+                    // Is tooltip too wide and goes outside left edge of canvas?
+                    if (orf(model.x)) {
+                        xAlign = 'center';
+                        yAlign = yf(model.y);
+                    }
+                }
+
+                var opts = tooltip._options;
+                return {
+                    xAlign: opts.xAlign ? opts.xAlign : xAlign,
+                    yAlign: opts.yAlign ? opts.yAlign : yAlign
+                };
+            }
+
+            /**
+             * @Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment
+             */
+            function getBackgroundPoint(vm, size, alignment) {
+                // Background Position
+                var x = vm.x;
+                var y = vm.y;
+
+                var caretSize = vm.caretSize;
+                var caretPadding = vm.caretPadding;
+                var cornerRadius = vm.cornerRadius;
+                var xAlign = alignment.xAlign;
+                var yAlign = alignment.yAlign;
+                var paddingAndSize = caretSize + caretPadding;
+                var radiusAndPadding = cornerRadius + caretPadding;
+
+                if (xAlign === 'right') {
+                    x -= size.width;
+                } else if (xAlign === 'center') {
+                    x -= (size.width / 2);
+                }
+
+                if (yAlign === 'top') {
+                    y += paddingAndSize;
+                } else if (yAlign === 'bottom') {
+                    y -= size.height + paddingAndSize;
+                } else {
+                    y -= (size.height / 2);
+                }
+
+                if (yAlign === 'center') {
+                    if (xAlign === 'left') {
+                        x += paddingAndSize;
+                    } else if (xAlign === 'right') {
+                        x -= paddingAndSize;
+                    }
+                } else if (xAlign === 'left') {
+                    x -= radiusAndPadding;
+                } else if (xAlign === 'right') {
+                    x += radiusAndPadding;
+                }
+
+                return {
+                    x: x,
+                    y: y
+                };
+            }
+
+            Chart.Tooltip = Element.extend({
+                initialize: function() {
+                    this._model = getBaseModel(this._options);
+                    this._lastActive = [];
+                },
+
+                // Get the title
+                // Args are: (tooltipItem, data)
+                getTitle: function() {
+                    var me = this;
+                    var opts = me._options;
+                    var callbacks = opts.callbacks;
+
+                    var beforeTitle = callbacks.beforeTitle.apply(me, arguments);
+                    var title = callbacks.title.apply(me, arguments);
+                    var afterTitle = callbacks.afterTitle.apply(me, arguments);
+
+                    var lines = [];
+                    lines = pushOrConcat(lines, beforeTitle);
+                    lines = pushOrConcat(lines, title);
+                    lines = pushOrConcat(lines, afterTitle);
+
+                    return lines;
+                },
+
+                // Args are: (tooltipItem, data)
+                getBeforeBody: function() {
+                    var lines = this._options.callbacks.beforeBody.apply(this, arguments);
+                    return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : [];
+                },
+
+                // Args are: (tooltipItem, data)
+                getBody: function(tooltipItems, data) {
+                    var me = this;
+                    var callbacks = me._options.callbacks;
+                    var bodyItems = [];
+
+                    helpers.each(tooltipItems, function(tooltipItem) {
+                        var bodyItem = {
+                            before: [],
+                            lines: [],
+                            after: []
+                        };
+                        pushOrConcat(bodyItem.before, callbacks.beforeLabel.call(me, tooltipItem, data));
+                        pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));
+                        pushOrConcat(bodyItem.after, callbacks.afterLabel.call(me, tooltipItem, data));
+
+                        bodyItems.push(bodyItem);
+                    });
+
+                    return bodyItems;
+                },
+
+                // Args are: (tooltipItem, data)
+                getAfterBody: function() {
+                    var lines = this._options.callbacks.afterBody.apply(this, arguments);
+                    return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : [];
+                },
+
+                // Get the footer and beforeFooter and afterFooter lines
+                // Args are: (tooltipItem, data)
+                getFooter: function() {
+                    var me = this;
+                    var callbacks = me._options.callbacks;
+
+                    var beforeFooter = callbacks.beforeFooter.apply(me, arguments);
+                    var footer = callbacks.footer.apply(me, arguments);
+                    var afterFooter = callbacks.afterFooter.apply(me, arguments);
+
+                    var lines = [];
+                    lines = pushOrConcat(lines, beforeFooter);
+                    lines = pushOrConcat(lines, footer);
+                    lines = pushOrConcat(lines, afterFooter);
+
+                    return lines;
+                },
+
+                update: function(changed) {
+                    var me = this;
+                    var opts = me._options;
+
+                    // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition
+                    // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time
+                    // which breaks any animations.
+                    var existingModel = me._model;
+                    var model = me._model = getBaseModel(opts);
+                    var active = me._active;
+
+                    var data = me._data;
+
+                    // In the case where active.length === 0 we need to keep these at existing values for good animations
+                    var alignment = {
+                        xAlign: existingModel.xAlign,
+                        yAlign: existingModel.yAlign
+                    };
+                    var backgroundPoint = {
+                        x: existingModel.x,
+                        y: existingModel.y
+                    };
+                    var tooltipSize = {
+                        width: existingModel.width,
+                        height: existingModel.height
+                    };
+                    var tooltipPosition = {
+                        x: existingModel.caretX,
+                        y: existingModel.caretY
+                    };
+
+                    var i, len;
+
+                    if (active.length) {
+                        model.opacity = 1;
+
+                        var labelColors = [];
+                        var labelTextColors = [];
+                        tooltipPosition = Chart.Tooltip.positioners[opts.position].call(me, active, me._eventPosition);
+
+                        var tooltipItems = [];
+                        for (i = 0, len = active.length; i < len; ++i) {
+                            tooltipItems.push(createTooltipItem(active[i]));
+                        }
+
+                        // If the user provided a filter function, use it to modify the tooltip items
+                        if (opts.filter) {
+                            tooltipItems = tooltipItems.filter(function(a) {
+                                return opts.filter(a, data);
+                            });
+                        }
+
+                        // If the user provided a sorting function, use it to modify the tooltip items
+                        if (opts.itemSort) {
+                            tooltipItems = tooltipItems.sort(function(a, b) {
+                                return opts.itemSort(a, b, data);
+                            });
+                        }
+
+                        // Determine colors for boxes
+                        helpers.each(tooltipItems, function(tooltipItem) {
+                            labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));
+                            labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));
+                        });
+
+
+                        // Build the Text Lines
+                        model.title = me.getTitle(tooltipItems, data);
+                        model.beforeBody = me.getBeforeBody(tooltipItems, data);
+                        model.body = me.getBody(tooltipItems, data);
+                        model.afterBody = me.getAfterBody(tooltipItems, data);
+                        model.footer = me.getFooter(tooltipItems, data);
+
+                        // Initial positioning and colors
+                        model.x = Math.round(tooltipPosition.x);
+                        model.y = Math.round(tooltipPosition.y);
+                        model.caretPadding = opts.caretPadding;
+                        model.labelColors = labelColors;
+                        model.labelTextColors = labelTextColors;
+
+                        // data points
+                        model.dataPoints = tooltipItems;
+
+                        // We need to determine alignment of the tooltip
+                        tooltipSize = getTooltipSize(this, model);
+                        alignment = determineAlignment(this, tooltipSize);
+                        // Final Size and Position
+                        backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment);
+                    } else {
+                        model.opacity = 0;
+                    }
+
+                    model.xAlign = alignment.xAlign;
+                    model.yAlign = alignment.yAlign;
+                    model.x = backgroundPoint.x;
+                    model.y = backgroundPoint.y;
+                    model.width = tooltipSize.width;
+                    model.height = tooltipSize.height;
+
+                    // Point where the caret on the tooltip points to
+                    model.caretX = tooltipPosition.x;
+                    model.caretY = tooltipPosition.y;
+
+                    me._model = model;
+
+                    if (changed && opts.custom) {
+                        opts.custom.call(me, model);
+                    }
+
+                    return me;
+                },
+                drawCaret: function(tooltipPoint, size) {
+                    var ctx = this._chart.ctx;
+                    var vm = this._view;
+                    var caretPosition = this.getCaretPosition(tooltipPoint, size, vm);
+
+                    ctx.lineTo(caretPosition.x1, caretPosition.y1);
+                    ctx.lineTo(caretPosition.x2, caretPosition.y2);
+                    ctx.lineTo(caretPosition.x3, caretPosition.y3);
+                },
+                getCaretPosition: function(tooltipPoint, size, vm) {
+                    var x1, x2, x3, y1, y2, y3;
+                    var caretSize = vm.caretSize;
+                    var cornerRadius = vm.cornerRadius;
+                    var xAlign = vm.xAlign;
+                    var yAlign = vm.yAlign;
+                    var ptX = tooltipPoint.x;
+                    var ptY = tooltipPoint.y;
+                    var width = size.width;
+                    var height = size.height;
+
+                    if (yAlign === 'center') {
+                        y2 = ptY + (height / 2);
+
+                        if (xAlign === 'left') {
+                            x1 = ptX;
+                            x2 = x1 - caretSize;
+                            x3 = x1;
+
+                            y1 = y2 + caretSize;
+                            y3 = y2 - caretSize;
+                        } else {
+                            x1 = ptX + width;
+                            x2 = x1 + caretSize;
+                            x3 = x1;
+
+                            y1 = y2 - caretSize;
+                            y3 = y2 + caretSize;
+                        }
+                    } else {
+                        if (xAlign === 'left') {
+                            x2 = ptX + cornerRadius + (caretSize);
+                            x1 = x2 - caretSize;
+                            x3 = x2 + caretSize;
+                        } else if (xAlign === 'right') {
+                            x2 = ptX + width - cornerRadius - caretSize;
+                            x1 = x2 - caretSize;
+                            x3 = x2 + caretSize;
+                        } else {
+                            x2 = ptX + (width / 2);
+                            x1 = x2 - caretSize;
+                            x3 = x2 + caretSize;
+                        }
+                        if (yAlign === 'top') {
+                            y1 = ptY;
+                            y2 = y1 - caretSize;
+                            y3 = y1;
+                        } else {
+                            y1 = ptY + height;
+                            y2 = y1 + caretSize;
+                            y3 = y1;
+                            // invert drawing order
+                            var tmp = x3;
+                            x3 = x1;
+                            x1 = tmp;
+                        }
+                    }
+                    return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};
+                },
+                drawTitle: function(pt, vm, ctx, opacity) {
+                    var title = vm.title;
+
+                    if (title.length) {
+                        ctx.textAlign = vm._titleAlign;
+                        ctx.textBaseline = 'top';
+
+                        var titleFontSize = vm.titleFontSize;
+                        var titleSpacing = vm.titleSpacing;
+
+                        ctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);
+                        ctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);
+
+                        var i, len;
+                        for (i = 0, len = title.length; i < len; ++i) {
+                            ctx.fillText(title[i], pt.x, pt.y);
+                            pt.y += titleFontSize + titleSpacing; // Line Height and spacing
+
+                            if (i + 1 === title.length) {
+                                pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing
+                            }
+                        }
+                    }
+                },
+                drawBody: function(pt, vm, ctx, opacity) {
+                    var bodyFontSize = vm.bodyFontSize;
+                    var bodySpacing = vm.bodySpacing;
+                    var body = vm.body;
+
+                    ctx.textAlign = vm._bodyAlign;
+                    ctx.textBaseline = 'top';
+                    ctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);
+
+                    // Before Body
+                    var xLinePadding = 0;
+                    var fillLineOfText = function(line) {
+                        ctx.fillText(line, pt.x + xLinePadding, pt.y);
+                        pt.y += bodyFontSize + bodySpacing;
+                    };
+
+                    // Before body lines
+                    ctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);
+                    helpers.each(vm.beforeBody, fillLineOfText);
+
+                    var drawColorBoxes = vm.displayColors;
+                    xLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;
+
+                    // Draw body lines now
+                    helpers.each(body, function(bodyItem, i) {
+                        var textColor = mergeOpacity(vm.labelTextColors[i], opacity);
+                        ctx.fillStyle = textColor;
+                        helpers.each(bodyItem.before, fillLineOfText);
+
+                        helpers.each(bodyItem.lines, function(line) {
+                            // Draw Legend-like boxes if needed
+                            if (drawColorBoxes) {
+                                // Fill a white rect so that colours merge nicely if the opacity is < 1
+                                ctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);
+                                ctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);
+
+                                // Border
+                                ctx.lineWidth = 1;
+                                ctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);
+                                ctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);
+
+                                // Inner square
+                                ctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);
+                                ctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);
+                                ctx.fillStyle = textColor;
+                            }
+
+                            fillLineOfText(line);
+                        });
+
+                        helpers.each(bodyItem.after, fillLineOfText);
+                    });
+
+                    // Reset back to 0 for after body
+                    xLinePadding = 0;
+
+                    // After body lines
+                    helpers.each(vm.afterBody, fillLineOfText);
+                    pt.y -= bodySpacing; // Remove last body spacing
+                },
+                drawFooter: function(pt, vm, ctx, opacity) {
+                    var footer = vm.footer;
+
+                    if (footer.length) {
+                        pt.y += vm.footerMarginTop;
+
+                        ctx.textAlign = vm._footerAlign;
+                        ctx.textBaseline = 'top';
+
+                        ctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);
+                        ctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);
+
+                        helpers.each(footer, function(line) {
+                            ctx.fillText(line, pt.x, pt.y);
+                            pt.y += vm.footerFontSize + vm.footerSpacing;
+                        });
+                    }
+                },
+                drawBackground: function(pt, vm, ctx, tooltipSize, opacity) {
+                    ctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);
+                    ctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);
+                    ctx.lineWidth = vm.borderWidth;
+                    var xAlign = vm.xAlign;
+                    var yAlign = vm.yAlign;
+                    var x = pt.x;
+                    var y = pt.y;
+                    var width = tooltipSize.width;
+                    var height = tooltipSize.height;
+                    var radius = vm.cornerRadius;
+
+                    ctx.beginPath();
+                    ctx.moveTo(x + radius, y);
+                    if (yAlign === 'top') {
+                        this.drawCaret(pt, tooltipSize);
+                    }
+                    ctx.lineTo(x + width - radius, y);
+                    ctx.quadraticCurveTo(x + width, y, x + width, y + radius);
+                    if (yAlign === 'center' && xAlign === 'right') {
+                        this.drawCaret(pt, tooltipSize);
+                    }
+                    ctx.lineTo(x + width, y + height - radius);
+                    ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);
+                    if (yAlign === 'bottom') {
+                        this.drawCaret(pt, tooltipSize);
+                    }
+                    ctx.lineTo(x + radius, y + height);
+                    ctx.quadraticCurveTo(x, y + height, x, y + height - radius);
+                    if (yAlign === 'center' && xAlign === 'left') {
+                        this.drawCaret(pt, tooltipSize);
+                    }
+                    ctx.lineTo(x, y + radius);
+                    ctx.quadraticCurveTo(x, y, x + radius, y);
+                    ctx.closePath();
+
+                    ctx.fill();
+
+                    if (vm.borderWidth > 0) {
+                        ctx.stroke();
+                    }
+                },
+                draw: function() {
+                    var ctx = this._chart.ctx;
+                    var vm = this._view;
+
+                    if (vm.opacity === 0) {
+                        return;
+                    }
+
+                    var tooltipSize = {
+                        width: vm.width,
+                        height: vm.height
+                    };
+                    var pt = {
+                        x: vm.x,
+                        y: vm.y
+                    };
+
+                    // IE11/Edge does not like very small opacities, so snap to 0
+                    var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;
+
+                    // Truthy/falsey value for empty tooltip
+                    var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;
+
+                    if (this._options.enabled && hasTooltipContent) {
+                        // Draw Background
+                        this.drawBackground(pt, vm, ctx, tooltipSize, opacity);
+
+                        // Draw Title, Body, and Footer
+                        pt.x += vm.xPadding;
+                        pt.y += vm.yPadding;
+
+                        // Titles
+                        this.drawTitle(pt, vm, ctx, opacity);
+
+                        // Body
+                        this.drawBody(pt, vm, ctx, opacity);
+
+                        // Footer
+                        this.drawFooter(pt, vm, ctx, opacity);
+                    }
+                },
+
+                /**
+                 * Handle an event
+                 * @private
+                 * @param {IEvent} event - The event to handle
+                 * @returns {Boolean} true if the tooltip changed
+                 */
+                handleEvent: function(e) {
+                    var me = this;
+                    var options = me._options;
+                    var changed = false;
+
+                    me._lastActive = me._lastActive || [];
+
+                    // Find Active Elements for tooltips
+                    if (e.type === 'mouseout') {
+                        me._active = [];
+                    } else {
+                        me._active = me._chart.getElementsAtEventForMode(e, options.mode, options);
+                    }
+
+                    // Remember Last Actives
+                    changed = !helpers.arrayEquals(me._active, me._lastActive);
+
+                    // If tooltip didn't change, do not handle the target event
+                    if (!changed) {
+                        return false;
+                    }
+
+                    me._lastActive = me._active;
+
+                    if (options.enabled || options.custom) {
+                        me._eventPosition = {
+                            x: e.x,
+                            y: e.y
+                        };
+
+                        var model = me._model;
+                        me.update(true);
+                        me.pivot();
+
+                        // See if our tooltip position changed
+                        changed |= (model.x !== me._model.x) || (model.y !== me._model.y);
+                    }
+
+                    return changed;
+                }
+            });
+
+            /**
+             * @namespace Chart.Tooltip.positioners
+             */
+            Chart.Tooltip.positioners = {
+                /**
+                 * Average mode places the tooltip at the average position of the elements shown
+                 * @function Chart.Tooltip.positioners.average
+                 * @param elements {ChartElement[]} the elements being displayed in the tooltip
+                 * @returns {Point} tooltip position
+                 */
+                average: function(elements) {
+                    if (!elements.length) {
+                        return false;
+                    }
+
+                    var i, len;
+                    var x = 0;
+                    var y = 0;
+                    var count = 0;
+
+                    for (i = 0, len = elements.length; i < len; ++i) {
+                        var el = elements[i];
+                        if (el && el.hasValue()) {
+                            var pos = el.tooltipPosition();
+                            x += pos.x;
+                            y += pos.y;
+                            ++count;
+                        }
+                    }
+
+                    return {
+                        x: Math.round(x / count),
+                        y: Math.round(y / count)
+                    };
+                },
+
+                /**
+                 * Gets the tooltip position nearest of the item nearest to the event position
+                 * @function Chart.Tooltip.positioners.nearest
+                 * @param elements {Chart.Element[]} the tooltip elements
+                 * @param eventPosition {Point} the position of the event in canvas coordinates
+                 * @returns {Point} the tooltip position
+                 */
+                nearest: function(elements, eventPosition) {
+                    var x = eventPosition.x;
+                    var y = eventPosition.y;
+                    var minDistance = Number.POSITIVE_INFINITY;
+                    var i, len, nearestElement;
+
+                    for (i = 0, len = elements.length; i < len; ++i) {
+                        var el = elements[i];
+                        if (el && el.hasValue()) {
+                            var center = el.getCenterPoint();
+                            var d = helpers.distanceBetweenPoints(eventPosition, center);
+
+                            if (d < minDistance) {
+                                minDistance = d;
+                                nearestElement = el;
+                            }
+                        }
+                    }
+
+                    if (nearestElement) {
+                        var tp = nearestElement.tooltipPosition();
+                        x = tp.x;
+                        y = tp.y;
+                    }
+
+                    return {
+                        x: x,
+                        y: y
+                    };
+                }
+            };
+        };
+
+    },{"25":25,"26":26,"45":45}],36:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var Element = require(26);
+        var helpers = require(45);
+
+        defaults._set('global', {
+            elements: {
+                arc: {
+                    backgroundColor: defaults.global.defaultColor,
+                    borderColor: '#fff',
+                    borderWidth: 2
+                }
+            }
+        });
+
+        module.exports = Element.extend({
+            inLabelRange: function(mouseX) {
+                var vm = this._view;
+
+                if (vm) {
+                    return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));
+                }
+                return false;
+            },
+
+            inRange: function(chartX, chartY) {
+                var vm = this._view;
+
+                if (vm) {
+                    var pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});
+                    var	angle = pointRelativePosition.angle;
+                    var distance = pointRelativePosition.distance;
+
+                    // Sanitise angle range
+                    var startAngle = vm.startAngle;
+                    var endAngle = vm.endAngle;
+                    while (endAngle < startAngle) {
+                        endAngle += 2.0 * Math.PI;
+                    }
+                    while (angle > endAngle) {
+                        angle -= 2.0 * Math.PI;
+                    }
+                    while (angle < startAngle) {
+                        angle += 2.0 * Math.PI;
+                    }
+
+                    // Check if within the range of the open/close angle
+                    var betweenAngles = (angle >= startAngle && angle <= endAngle);
+                    var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);
+
+                    return (betweenAngles && withinRadius);
+                }
+                return false;
+            },
+
+            getCenterPoint: function() {
+                var vm = this._view;
+                var halfAngle = (vm.startAngle + vm.endAngle) / 2;
+                var halfRadius = (vm.innerRadius + vm.outerRadius) / 2;
+                return {
+                    x: vm.x + Math.cos(halfAngle) * halfRadius,
+                    y: vm.y + Math.sin(halfAngle) * halfRadius
+                };
+            },
+
+            getArea: function() {
+                var vm = this._view;
+                return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));
+            },
+
+            tooltipPosition: function() {
+                var vm = this._view;
+                var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);
+                var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;
+
+                return {
+                    x: vm.x + (Math.cos(centreAngle) * rangeFromCentre),
+                    y: vm.y + (Math.sin(centreAngle) * rangeFromCentre)
+                };
+            },
+
+            draw: function() {
+                var ctx = this._chart.ctx;
+                var vm = this._view;
+                var sA = vm.startAngle;
+                var eA = vm.endAngle;
+
+                ctx.beginPath();
+
+                ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);
+                ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);
+
+                ctx.closePath();
+                ctx.strokeStyle = vm.borderColor;
+                ctx.lineWidth = vm.borderWidth;
+
+                ctx.fillStyle = vm.backgroundColor;
+
+                ctx.fill();
+                ctx.lineJoin = 'bevel';
+
+                if (vm.borderWidth) {
+                    ctx.stroke();
+                }
+            }
+        });
+
+    },{"25":25,"26":26,"45":45}],37:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var Element = require(26);
+        var helpers = require(45);
+
+        var globalDefaults = defaults.global;
+
+        defaults._set('global', {
+            elements: {
+                line: {
+                    tension: 0.4,
+                    backgroundColor: globalDefaults.defaultColor,
+                    borderWidth: 3,
+                    borderColor: globalDefaults.defaultColor,
+                    borderCapStyle: 'butt',
+                    borderDash: [],
+                    borderDashOffset: 0.0,
+                    borderJoinStyle: 'miter',
+                    capBezierPoints: true,
+                    fill: true, // do we fill in the area between the line and its base axis
+                }
+            }
+        });
+
+        module.exports = Element.extend({
+            draw: function() {
+                var me = this;
+                var vm = me._view;
+                var ctx = me._chart.ctx;
+                var spanGaps = vm.spanGaps;
+                var points = me._children.slice(); // clone array
+                var globalOptionLineElements = globalDefaults.elements.line;
+                var lastDrawnIndex = -1;
+                var index, current, previous, currentVM;
+
+                // If we are looping, adding the first point again
+                if (me._loop && points.length) {
+                    points.push(points[0]);
+                }
+
+                ctx.save();
+
+                // Stroke Line Options
+                ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;
+
+                // IE 9 and 10 do not support line dash
+                if (ctx.setLineDash) {
+                    ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);
+                }
+
+                ctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;
+                ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;
+                ctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;
+                ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;
+
+                // Stroke Line
+                ctx.beginPath();
+                lastDrawnIndex = -1;
+
+                for (index = 0; index < points.length; ++index) {
+                    current = points[index];
+                    previous = helpers.previousItem(points, index);
+                    currentVM = current._view;
+
+                    // First point moves to it's starting position no matter what
+                    if (index === 0) {
+                        if (!currentVM.skip) {
+                            ctx.moveTo(currentVM.x, currentVM.y);
+                            lastDrawnIndex = index;
+                        }
+                    } else {
+                        previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];
+
+                        if (!currentVM.skip) {
+                            if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {
+                                // There was a gap and this is the first point after the gap
+                                ctx.moveTo(currentVM.x, currentVM.y);
+                            } else {
+                                // Line to next point
+                                helpers.canvas.lineTo(ctx, previous._view, current._view);
+                            }
+                            lastDrawnIndex = index;
+                        }
+                    }
+                }
+
+                ctx.stroke();
+                ctx.restore();
+            }
+        });
+
+    },{"25":25,"26":26,"45":45}],38:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var Element = require(26);
+        var helpers = require(45);
+
+        var defaultColor = defaults.global.defaultColor;
+
+        defaults._set('global', {
+            elements: {
+                point: {
+                    radius: 3,
+                    pointStyle: 'circle',
+                    backgroundColor: defaultColor,
+                    borderColor: defaultColor,
+                    borderWidth: 1,
+                    // Hover
+                    hitRadius: 1,
+                    hoverRadius: 4,
+                    hoverBorderWidth: 1
+                }
+            }
+        });
+
+        function xRange(mouseX) {
+            var vm = this._view;
+            return vm ? (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false;
+        }
+
+        function yRange(mouseY) {
+            var vm = this._view;
+            return vm ? (Math.pow(mouseY - vm.y, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false;
+        }
+
+        module.exports = Element.extend({
+            inRange: function(mouseX, mouseY) {
+                var vm = this._view;
+                return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;
+            },
+
+            inLabelRange: xRange,
+            inXRange: xRange,
+            inYRange: yRange,
+
+            getCenterPoint: function() {
+                var vm = this._view;
+                return {
+                    x: vm.x,
+                    y: vm.y
+                };
+            },
+
+            getArea: function() {
+                return Math.PI * Math.pow(this._view.radius, 2);
+            },
+
+            tooltipPosition: function() {
+                var vm = this._view;
+                return {
+                    x: vm.x,
+                    y: vm.y,
+                    padding: vm.radius + vm.borderWidth
+                };
+            },
+
+            draw: function(chartArea) {
+                var vm = this._view;
+                var model = this._model;
+                var ctx = this._chart.ctx;
+                var pointStyle = vm.pointStyle;
+                var radius = vm.radius;
+                var x = vm.x;
+                var y = vm.y;
+                var color = helpers.color;
+                var errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)
+                var ratio = 0;
+
+                if (vm.skip) {
+                    return;
+                }
+
+                ctx.strokeStyle = vm.borderColor || defaultColor;
+                ctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);
+                ctx.fillStyle = vm.backgroundColor || defaultColor;
+
+                // Cliping for Points.
+                // going out from inner charArea?
+                if ((chartArea !== undefined) && ((model.x < chartArea.left) || (chartArea.right * errMargin < model.x) || (model.y < chartArea.top) || (chartArea.bottom * errMargin < model.y))) {
+                    // Point fade out
+                    if (model.x < chartArea.left) {
+                        ratio = (x - model.x) / (chartArea.left - model.x);
+                    } else if (chartArea.right * errMargin < model.x) {
+                        ratio = (model.x - x) / (model.x - chartArea.right);
+                    } else if (model.y < chartArea.top) {
+                        ratio = (y - model.y) / (chartArea.top - model.y);
+                    } else if (chartArea.bottom * errMargin < model.y) {
+                        ratio = (model.y - y) / (model.y - chartArea.bottom);
+                    }
+                    ratio = Math.round(ratio * 100) / 100;
+                    ctx.strokeStyle = color(ctx.strokeStyle).alpha(ratio).rgbString();
+                    ctx.fillStyle = color(ctx.fillStyle).alpha(ratio).rgbString();
+                }
+
+                helpers.canvas.drawPoint(ctx, pointStyle, radius, x, y);
+            }
+        });
+
+    },{"25":25,"26":26,"45":45}],39:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var Element = require(26);
+
+        defaults._set('global', {
+            elements: {
+                rectangle: {
+                    backgroundColor: defaults.global.defaultColor,
+                    borderColor: defaults.global.defaultColor,
+                    borderSkipped: 'bottom',
+                    borderWidth: 0
+                }
+            }
+        });
+
+        function isVertical(bar) {
+            return bar._view.width !== undefined;
+        }
+
+        /**
+         * Helper function to get the bounds of the bar regardless of the orientation
+         * @param bar {Chart.Element.Rectangle} the bar
+         * @return {Bounds} bounds of the bar
+         * @private
+         */
+        function getBarBounds(bar) {
+            var vm = bar._view;
+            var x1, x2, y1, y2;
+
+            if (isVertical(bar)) {
+                // vertical
+                var halfWidth = vm.width / 2;
+                x1 = vm.x - halfWidth;
+                x2 = vm.x + halfWidth;
+                y1 = Math.min(vm.y, vm.base);
+                y2 = Math.max(vm.y, vm.base);
+            } else {
+                // horizontal bar
+                var halfHeight = vm.height / 2;
+                x1 = Math.min(vm.x, vm.base);
+                x2 = Math.max(vm.x, vm.base);
+                y1 = vm.y - halfHeight;
+                y2 = vm.y + halfHeight;
+            }
+
+            return {
+                left: x1,
+                top: y1,
+                right: x2,
+                bottom: y2
+            };
+        }
+
+        module.exports = Element.extend({
+            draw: function() {
+                var ctx = this._chart.ctx;
+                var vm = this._view;
+                var left, right, top, bottom, signX, signY, borderSkipped;
+                var borderWidth = vm.borderWidth;
+
+                if (!vm.horizontal) {
+                    // bar
+                    left = vm.x - vm.width / 2;
+                    right = vm.x + vm.width / 2;
+                    top = vm.y;
+                    bottom = vm.base;
+                    signX = 1;
+                    signY = bottom > top ? 1 : -1;
+                    borderSkipped = vm.borderSkipped || 'bottom';
+                } else {
+                    // horizontal bar
+                    left = vm.base;
+                    right = vm.x;
+                    top = vm.y - vm.height / 2;
+                    bottom = vm.y + vm.height / 2;
+                    signX = right > left ? 1 : -1;
+                    signY = 1;
+                    borderSkipped = vm.borderSkipped || 'left';
+                }
+
+                // Canvas doesn't allow us to stroke inside the width so we can
+                // adjust the sizes to fit if we're setting a stroke on the line
+                if (borderWidth) {
+                    // borderWidth shold be less than bar width and bar height.
+                    var barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));
+                    borderWidth = borderWidth > barSize ? barSize : borderWidth;
+                    var halfStroke = borderWidth / 2;
+                    // Adjust borderWidth when bar top position is near vm.base(zero).
+                    var borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);
+                    var borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);
+                    var borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);
+                    var borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);
+                    // not become a vertical line?
+                    if (borderLeft !== borderRight) {
+                        top = borderTop;
+                        bottom = borderBottom;
+                    }
+                    // not become a horizontal line?
+                    if (borderTop !== borderBottom) {
+                        left = borderLeft;
+                        right = borderRight;
+                    }
+                }
+
+                ctx.beginPath();
+                ctx.fillStyle = vm.backgroundColor;
+                ctx.strokeStyle = vm.borderColor;
+                ctx.lineWidth = borderWidth;
+
+                // Corner points, from bottom-left to bottom-right clockwise
+                // | 1 2 |
+                // | 0 3 |
+                var corners = [
+                    [left, bottom],
+                    [left, top],
+                    [right, top],
+                    [right, bottom]
+                ];
+
+                // Find first (starting) corner with fallback to 'bottom'
+                var borders = ['bottom', 'left', 'top', 'right'];
+                var startCorner = borders.indexOf(borderSkipped, 0);
+                if (startCorner === -1) {
+                    startCorner = 0;
+                }
+
+                function cornerAt(index) {
+                    return corners[(startCorner + index) % 4];
+                }
+
+                // Draw rectangle from 'startCorner'
+                var corner = cornerAt(0);
+                ctx.moveTo(corner[0], corner[1]);
+
+                for (var i = 1; i < 4; i++) {
+                    corner = cornerAt(i);
+                    ctx.lineTo(corner[0], corner[1]);
+                }
+
+                ctx.fill();
+                if (borderWidth) {
+                    ctx.stroke();
+                }
+            },
+
+            height: function() {
+                var vm = this._view;
+                return vm.base - vm.y;
+            },
+
+            inRange: function(mouseX, mouseY) {
+                var inRange = false;
+
+                if (this._view) {
+                    var bounds = getBarBounds(this);
+                    inRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;
+                }
+
+                return inRange;
+            },
+
+            inLabelRange: function(mouseX, mouseY) {
+                var me = this;
+                if (!me._view) {
+                    return false;
+                }
+
+                var inRange = false;
+                var bounds = getBarBounds(me);
+
+                if (isVertical(me)) {
+                    inRange = mouseX >= bounds.left && mouseX <= bounds.right;
+                } else {
+                    inRange = mouseY >= bounds.top && mouseY <= bounds.bottom;
+                }
+
+                return inRange;
+            },
+
+            inXRange: function(mouseX) {
+                var bounds = getBarBounds(this);
+                return mouseX >= bounds.left && mouseX <= bounds.right;
+            },
+
+            inYRange: function(mouseY) {
+                var bounds = getBarBounds(this);
+                return mouseY >= bounds.top && mouseY <= bounds.bottom;
+            },
+
+            getCenterPoint: function() {
+                var vm = this._view;
+                var x, y;
+                if (isVertical(this)) {
+                    x = vm.x;
+                    y = (vm.y + vm.base) / 2;
+                } else {
+                    x = (vm.x + vm.base) / 2;
+                    y = vm.y;
+                }
+
+                return {x: x, y: y};
+            },
+
+            getArea: function() {
+                var vm = this._view;
+                return vm.width * Math.abs(vm.y - vm.base);
+            },
+
+            tooltipPosition: function() {
+                var vm = this._view;
+                return {
+                    x: vm.x,
+                    y: vm.y
+                };
+            }
+        });
+
+    },{"25":25,"26":26}],40:[function(require,module,exports){
+        'use strict';
+
+        module.exports = {};
+        module.exports.Arc = require(36);
+        module.exports.Line = require(37);
+        module.exports.Point = require(38);
+        module.exports.Rectangle = require(39);
+
+    },{"36":36,"37":37,"38":38,"39":39}],41:[function(require,module,exports){
+        'use strict';
+
+        var helpers = require(42);
+
+        /**
+         * @namespace Chart.helpers.canvas
+         */
+        var exports = module.exports = {
+            /**
+             * Clears the entire canvas associated to the given `chart`.
+             * @param {Chart} chart - The chart for which to clear the canvas.
+             */
+            clear: function(chart) {
+                chart.ctx.clearRect(0, 0, chart.width, chart.height);
+            },
+
+            /**
+             * Creates a "path" for a rectangle with rounded corners at position (x, y) with a
+             * given size (width, height) and the same `radius` for all corners.
+             * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.
+             * @param {Number} x - The x axis of the coordinate for the rectangle starting point.
+             * @param {Number} y - The y axis of the coordinate for the rectangle starting point.
+             * @param {Number} width - The rectangle's width.
+             * @param {Number} height - The rectangle's height.
+             * @param {Number} radius - The rounded amount (in pixels) for the four corners.
+             * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?
+             */
+            roundedRect: function(ctx, x, y, width, height, radius) {
+                if (radius) {
+                    var rx = Math.min(radius, width / 2);
+                    var ry = Math.min(radius, height / 2);
+
+                    ctx.moveTo(x + rx, y);
+                    ctx.lineTo(x + width - rx, y);
+                    ctx.quadraticCurveTo(x + width, y, x + width, y + ry);
+                    ctx.lineTo(x + width, y + height - ry);
+                    ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height);
+                    ctx.lineTo(x + rx, y + height);
+                    ctx.quadraticCurveTo(x, y + height, x, y + height - ry);
+                    ctx.lineTo(x, y + ry);
+                    ctx.quadraticCurveTo(x, y, x + rx, y);
+                } else {
+                    ctx.rect(x, y, width, height);
+                }
+            },
+
+            drawPoint: function(ctx, style, radius, x, y) {
+                var type, edgeLength, xOffset, yOffset, height, size;
+
+                if (style && typeof style === 'object') {
+                    type = style.toString();
+                    if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {
+                        ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);
+                        return;
+                    }
+                }
+
+                if (isNaN(radius) || radius <= 0) {
+                    return;
+                }
+
+                switch (style) {
+                    // Default includes circle
+                    default:
+                        ctx.beginPath();
+                        ctx.arc(x, y, radius, 0, Math.PI * 2);
+                        ctx.closePath();
+                        ctx.fill();
+                        break;
+                    case 'triangle':
+                        ctx.beginPath();
+                        edgeLength = 3 * radius / Math.sqrt(3);
+                        height = edgeLength * Math.sqrt(3) / 2;
+                        ctx.moveTo(x - edgeLength / 2, y + height / 3);
+                        ctx.lineTo(x + edgeLength / 2, y + height / 3);
+                        ctx.lineTo(x, y - 2 * height / 3);
+                        ctx.closePath();
+                        ctx.fill();
+                        break;
+                    case 'rect':
+                        size = 1 / Math.SQRT2 * radius;
+                        ctx.beginPath();
+                        ctx.fillRect(x - size, y - size, 2 * size, 2 * size);
+                        ctx.strokeRect(x - size, y - size, 2 * size, 2 * size);
+                        break;
+                    case 'rectRounded':
+                        var offset = radius / Math.SQRT2;
+                        var leftX = x - offset;
+                        var topY = y - offset;
+                        var sideSize = Math.SQRT2 * radius;
+                        ctx.beginPath();
+                        this.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius / 2);
+                        ctx.closePath();
+                        ctx.fill();
+                        break;
+                    case 'rectRot':
+                        size = 1 / Math.SQRT2 * radius;
+                        ctx.beginPath();
+                        ctx.moveTo(x - size, y);
+                        ctx.lineTo(x, y + size);
+                        ctx.lineTo(x + size, y);
+                        ctx.lineTo(x, y - size);
+                        ctx.closePath();
+                        ctx.fill();
+                        break;
+                    case 'cross':
+                        ctx.beginPath();
+                        ctx.moveTo(x, y + radius);
+                        ctx.lineTo(x, y - radius);
+                        ctx.moveTo(x - radius, y);
+                        ctx.lineTo(x + radius, y);
+                        ctx.closePath();
+                        break;
+                    case 'crossRot':
+                        ctx.beginPath();
+                        xOffset = Math.cos(Math.PI / 4) * radius;
+                        yOffset = Math.sin(Math.PI / 4) * radius;
+                        ctx.moveTo(x - xOffset, y - yOffset);
+                        ctx.lineTo(x + xOffset, y + yOffset);
+                        ctx.moveTo(x - xOffset, y + yOffset);
+                        ctx.lineTo(x + xOffset, y - yOffset);
+                        ctx.closePath();
+                        break;
+                    case 'star':
+                        ctx.beginPath();
+                        ctx.moveTo(x, y + radius);
+                        ctx.lineTo(x, y - radius);
+                        ctx.moveTo(x - radius, y);
+                        ctx.lineTo(x + radius, y);
+                        xOffset = Math.cos(Math.PI / 4) * radius;
+                        yOffset = Math.sin(Math.PI / 4) * radius;
+                        ctx.moveTo(x - xOffset, y - yOffset);
+                        ctx.lineTo(x + xOffset, y + yOffset);
+                        ctx.moveTo(x - xOffset, y + yOffset);
+                        ctx.lineTo(x + xOffset, y - yOffset);
+                        ctx.closePath();
+                        break;
+                    case 'line':
+                        ctx.beginPath();
+                        ctx.moveTo(x - radius, y);
+                        ctx.lineTo(x + radius, y);
+                        ctx.closePath();
+                        break;
+                    case 'dash':
+                        ctx.beginPath();
+                        ctx.moveTo(x, y);
+                        ctx.lineTo(x + radius, y);
+                        ctx.closePath();
+                        break;
+                }
+
+                ctx.stroke();
+            },
+
+            clipArea: function(ctx, area) {
+                ctx.save();
+                ctx.beginPath();
+                ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);
+                ctx.clip();
+            },
+
+            unclipArea: function(ctx) {
+                ctx.restore();
+            },
+
+            lineTo: function(ctx, previous, target, flip) {
+                if (target.steppedLine) {
+                    if ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {
+                        ctx.lineTo(previous.x, target.y);
+                    } else {
+                        ctx.lineTo(target.x, previous.y);
+                    }
+                    ctx.lineTo(target.x, target.y);
+                    return;
+                }
+
+                if (!target.tension) {
+                    ctx.lineTo(target.x, target.y);
+                    return;
+                }
+
+                ctx.bezierCurveTo(
+                    flip ? previous.controlPointPreviousX : previous.controlPointNextX,
+                    flip ? previous.controlPointPreviousY : previous.controlPointNextY,
+                    flip ? target.controlPointNextX : target.controlPointPreviousX,
+                    flip ? target.controlPointNextY : target.controlPointPreviousY,
+                    target.x,
+                    target.y);
+            }
+        };
+
+// DEPRECATIONS
+
+        /**
+         * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.
+         * @namespace Chart.helpers.clear
+         * @deprecated since version 2.7.0
+         * @todo remove at version 3
+         * @private
+         */
+        helpers.clear = exports.clear;
+
+        /**
+         * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.
+         * @namespace Chart.helpers.drawRoundedRectangle
+         * @deprecated since version 2.7.0
+         * @todo remove at version 3
+         * @private
+         */
+        helpers.drawRoundedRectangle = function(ctx) {
+            ctx.beginPath();
+            exports.roundedRect.apply(exports, arguments);
+            ctx.closePath();
+        };
+
+    },{"42":42}],42:[function(require,module,exports){
+        'use strict';
+
+        /**
+         * @namespace Chart.helpers
+         */
+        var helpers = {
+            /**
+             * An empty function that can be used, for example, for optional callback.
+             */
+            noop: function() {},
+
+            /**
+             * Returns a unique id, sequentially generated from a global variable.
+             * @returns {Number}
+             * @function
+             */
+            uid: (function() {
+                var id = 0;
+                return function() {
+                    return id++;
+                };
+            }()),
+
+            /**
+             * Returns true if `value` is neither null nor undefined, else returns false.
+             * @param {*} value - The value to test.
+             * @returns {Boolean}
+             * @since 2.7.0
+             */
+            isNullOrUndef: function(value) {
+                return value === null || typeof value === 'undefined';
+            },
+
+            /**
+             * Returns true if `value` is an array, else returns false.
+             * @param {*} value - The value to test.
+             * @returns {Boolean}
+             * @function
+             */
+            isArray: Array.isArray ? Array.isArray : function(value) {
+                return Object.prototype.toString.call(value) === '[object Array]';
+            },
+
+            /**
+             * Returns true if `value` is an object (excluding null), else returns false.
+             * @param {*} value - The value to test.
+             * @returns {Boolean}
+             * @since 2.7.0
+             */
+            isObject: function(value) {
+                return value !== null && Object.prototype.toString.call(value) === '[object Object]';
+            },
+
+            /**
+             * Returns `value` if defined, else returns `defaultValue`.
+             * @param {*} value - The value to return if defined.
+             * @param {*} defaultValue - The value to return if `value` is undefined.
+             * @returns {*}
+             */
+            valueOrDefault: function(value, defaultValue) {
+                return typeof value === 'undefined' ? defaultValue : value;
+            },
+
+            /**
+             * Returns value at the given `index` in array if defined, else returns `defaultValue`.
+             * @param {Array} value - The array to lookup for value at `index`.
+             * @param {Number} index - The index in `value` to lookup for value.
+             * @param {*} defaultValue - The value to return if `value[index]` is undefined.
+             * @returns {*}
+             */
+            valueAtIndexOrDefault: function(value, index, defaultValue) {
+                return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);
+            },
+
+            /**
+             * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the
+             * value returned by `fn`. If `fn` is not a function, this method returns undefined.
+             * @param {Function} fn - The function to call.
+             * @param {Array|undefined|null} args - The arguments with which `fn` should be called.
+             * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.
+             * @returns {*}
+             */
+            callback: function(fn, args, thisArg) {
+                if (fn && typeof fn.call === 'function') {
+                    return fn.apply(thisArg, args);
+                }
+            },
+
+            /**
+             * Note(SB) for performance sake, this method should only be used when loopable type
+             * is unknown or in none intensive code (not called often and small loopable). Else
+             * it's preferable to use a regular for() loop and save extra function calls.
+             * @param {Object|Array} loopable - The object or array to be iterated.
+             * @param {Function} fn - The function to call for each item.
+             * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.
+             * @param {Boolean} [reverse] - If true, iterates backward on the loopable.
+             */
+            each: function(loopable, fn, thisArg, reverse) {
+                var i, len, keys;
+                if (helpers.isArray(loopable)) {
+                    len = loopable.length;
+                    if (reverse) {
+                        for (i = len - 1; i >= 0; i--) {
+                            fn.call(thisArg, loopable[i], i);
+                        }
+                    } else {
+                        for (i = 0; i < len; i++) {
+                            fn.call(thisArg, loopable[i], i);
+                        }
+                    }
+                } else if (helpers.isObject(loopable)) {
+                    keys = Object.keys(loopable);
+                    len = keys.length;
+                    for (i = 0; i < len; i++) {
+                        fn.call(thisArg, loopable[keys[i]], keys[i]);
+                    }
+                }
+            },
+
+            /**
+             * Returns true if the `a0` and `a1` arrays have the same content, else returns false.
+             * @see http://stackoverflow.com/a/14853974
+             * @param {Array} a0 - The array to compare
+             * @param {Array} a1 - The array to compare
+             * @returns {Boolean}
+             */
+            arrayEquals: function(a0, a1) {
+                var i, ilen, v0, v1;
+
+                if (!a0 || !a1 || a0.length !== a1.length) {
+                    return false;
+                }
+
+                for (i = 0, ilen = a0.length; i < ilen; ++i) {
+                    v0 = a0[i];
+                    v1 = a1[i];
+
+                    if (v0 instanceof Array && v1 instanceof Array) {
+                        if (!helpers.arrayEquals(v0, v1)) {
+                            return false;
+                        }
+                    } else if (v0 !== v1) {
+                        // NOTE: two different object instances will never be equal: {x:20} != {x:20}
+                        return false;
+                    }
+                }
+
+                return true;
+            },
+
+            /**
+             * Returns a deep copy of `source` without keeping references on objects and arrays.
+             * @param {*} source - The value to clone.
+             * @returns {*}
+             */
+            clone: function(source) {
+                if (helpers.isArray(source)) {
+                    return source.map(helpers.clone);
+                }
+
+                if (helpers.isObject(source)) {
+                    var target = {};
+                    var keys = Object.keys(source);
+                    var klen = keys.length;
+                    var k = 0;
+
+                    for (; k < klen; ++k) {
+                        target[keys[k]] = helpers.clone(source[keys[k]]);
+                    }
+
+                    return target;
+                }
+
+                return source;
+            },
+
+            /**
+             * The default merger when Chart.helpers.merge is called without merger option.
+             * Note(SB): this method is also used by configMerge and scaleMerge as fallback.
+             * @private
+             */
+            _merger: function(key, target, source, options) {
+                var tval = target[key];
+                var sval = source[key];
+
+                if (helpers.isObject(tval) && helpers.isObject(sval)) {
+                    helpers.merge(tval, sval, options);
+                } else {
+                    target[key] = helpers.clone(sval);
+                }
+            },
+
+            /**
+             * Merges source[key] in target[key] only if target[key] is undefined.
+             * @private
+             */
+            _mergerIf: function(key, target, source) {
+                var tval = target[key];
+                var sval = source[key];
+
+                if (helpers.isObject(tval) && helpers.isObject(sval)) {
+                    helpers.mergeIf(tval, sval);
+                } else if (!target.hasOwnProperty(key)) {
+                    target[key] = helpers.clone(sval);
+                }
+            },
+
+            /**
+             * Recursively deep copies `source` properties into `target` with the given `options`.
+             * IMPORTANT: `target` is not cloned and will be updated with `source` properties.
+             * @param {Object} target - The target object in which all sources are merged into.
+             * @param {Object|Array(Object)} source - Object(s) to merge into `target`.
+             * @param {Object} [options] - Merging options:
+             * @param {Function} [options.merger] - The merge method (key, target, source, options)
+             * @returns {Object} The `target` object.
+             */
+            merge: function(target, source, options) {
+                var sources = helpers.isArray(source) ? source : [source];
+                var ilen = sources.length;
+                var merge, i, keys, klen, k;
+
+                if (!helpers.isObject(target)) {
+                    return target;
+                }
+
+                options = options || {};
+                merge = options.merger || helpers._merger;
+
+                for (i = 0; i < ilen; ++i) {
+                    source = sources[i];
+                    if (!helpers.isObject(source)) {
+                        continue;
+                    }
+
+                    keys = Object.keys(source);
+                    for (k = 0, klen = keys.length; k < klen; ++k) {
+                        merge(keys[k], target, source, options);
+                    }
+                }
+
+                return target;
+            },
+
+            /**
+             * Recursively deep copies `source` properties into `target` *only* if not defined in target.
+             * IMPORTANT: `target` is not cloned and will be updated with `source` properties.
+             * @param {Object} target - The target object in which all sources are merged into.
+             * @param {Object|Array(Object)} source - Object(s) to merge into `target`.
+             * @returns {Object} The `target` object.
+             */
+            mergeIf: function(target, source) {
+                return helpers.merge(target, source, {merger: helpers._mergerIf});
+            },
+
+            /**
+             * Applies the contents of two or more objects together into the first object.
+             * @param {Object} target - The target object in which all objects are merged into.
+             * @param {Object} arg1 - Object containing additional properties to merge in target.
+             * @param {Object} argN - Additional objects containing properties to merge in target.
+             * @returns {Object} The `target` object.
+             */
+            extend: function(target) {
+                var setFn = function(value, key) {
+                    target[key] = value;
+                };
+                for (var i = 1, ilen = arguments.length; i < ilen; ++i) {
+                    helpers.each(arguments[i], setFn);
+                }
+                return target;
+            },
+
+            /**
+             * Basic javascript inheritance based on the model created in Backbone.js
+             */
+            inherits: function(extensions) {
+                var me = this;
+                var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {
+                    return me.apply(this, arguments);
+                };
+
+                var Surrogate = function() {
+                    this.constructor = ChartElement;
+                };
+
+                Surrogate.prototype = me.prototype;
+                ChartElement.prototype = new Surrogate();
+                ChartElement.extend = helpers.inherits;
+
+                if (extensions) {
+                    helpers.extend(ChartElement.prototype, extensions);
+                }
+
+                ChartElement.__super__ = me.prototype;
+                return ChartElement;
+            }
+        };
+
+        module.exports = helpers;
+
+// DEPRECATIONS
+
+        /**
+         * Provided for backward compatibility, use Chart.helpers.callback instead.
+         * @function Chart.helpers.callCallback
+         * @deprecated since version 2.6.0
+         * @todo remove at version 3
+         * @private
+         */
+        helpers.callCallback = helpers.callback;
+
+        /**
+         * Provided for backward compatibility, use Array.prototype.indexOf instead.
+         * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+
+         * @function Chart.helpers.indexOf
+         * @deprecated since version 2.7.0
+         * @todo remove at version 3
+         * @private
+         */
+        helpers.indexOf = function(array, item, fromIndex) {
+            return Array.prototype.indexOf.call(array, item, fromIndex);
+        };
+
+        /**
+         * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.
+         * @function Chart.helpers.getValueOrDefault
+         * @deprecated since version 2.7.0
+         * @todo remove at version 3
+         * @private
+         */
+        helpers.getValueOrDefault = helpers.valueOrDefault;
+
+        /**
+         * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.
+         * @function Chart.helpers.getValueAtIndexOrDefault
+         * @deprecated since version 2.7.0
+         * @todo remove at version 3
+         * @private
+         */
+        helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;
+
+    },{}],43:[function(require,module,exports){
+        'use strict';
+
+        var helpers = require(42);
+
+        /**
+         * Easing functions adapted from Robert Penner's easing equations.
+         * @namespace Chart.helpers.easingEffects
+         * @see http://www.robertpenner.com/easing/
+         */
+        var effects = {
+            linear: function(t) {
+                return t;
+            },
+
+            easeInQuad: function(t) {
+                return t * t;
+            },
+
+            easeOutQuad: function(t) {
+                return -t * (t - 2);
+            },
+
+            easeInOutQuad: function(t) {
+                if ((t /= 0.5) < 1) {
+                    return 0.5 * t * t;
+                }
+                return -0.5 * ((--t) * (t - 2) - 1);
+            },
+
+            easeInCubic: function(t) {
+                return t * t * t;
+            },
+
+            easeOutCubic: function(t) {
+                return (t = t - 1) * t * t + 1;
+            },
+
+            easeInOutCubic: function(t) {
+                if ((t /= 0.5) < 1) {
+                    return 0.5 * t * t * t;
+                }
+                return 0.5 * ((t -= 2) * t * t + 2);
+            },
+
+            easeInQuart: function(t) {
+                return t * t * t * t;
+            },
+
+            easeOutQuart: function(t) {
+                return -((t = t - 1) * t * t * t - 1);
+            },
+
+            easeInOutQuart: function(t) {
+                if ((t /= 0.5) < 1) {
+                    return 0.5 * t * t * t * t;
+                }
+                return -0.5 * ((t -= 2) * t * t * t - 2);
+            },
+
+            easeInQuint: function(t) {
+                return t * t * t * t * t;
+            },
+
+            easeOutQuint: function(t) {
+                return (t = t - 1) * t * t * t * t + 1;
+            },
+
+            easeInOutQuint: function(t) {
+                if ((t /= 0.5) < 1) {
+                    return 0.5 * t * t * t * t * t;
+                }
+                return 0.5 * ((t -= 2) * t * t * t * t + 2);
+            },
+
+            easeInSine: function(t) {
+                return -Math.cos(t * (Math.PI / 2)) + 1;
+            },
+
+            easeOutSine: function(t) {
+                return Math.sin(t * (Math.PI / 2));
+            },
+
+            easeInOutSine: function(t) {
+                return -0.5 * (Math.cos(Math.PI * t) - 1);
+            },
+
+            easeInExpo: function(t) {
+                return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));
+            },
+
+            easeOutExpo: function(t) {
+                return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;
+            },
+
+            easeInOutExpo: function(t) {
+                if (t === 0) {
+                    return 0;
+                }
+                if (t === 1) {
+                    return 1;
+                }
+                if ((t /= 0.5) < 1) {
+                    return 0.5 * Math.pow(2, 10 * (t - 1));
+                }
+                return 0.5 * (-Math.pow(2, -10 * --t) + 2);
+            },
+
+            easeInCirc: function(t) {
+                if (t >= 1) {
+                    return t;
+                }
+                return -(Math.sqrt(1 - t * t) - 1);
+            },
+
+            easeOutCirc: function(t) {
+                return Math.sqrt(1 - (t = t - 1) * t);
+            },
+
+            easeInOutCirc: function(t) {
+                if ((t /= 0.5) < 1) {
+                    return -0.5 * (Math.sqrt(1 - t * t) - 1);
+                }
+                return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);
+            },
+
+            easeInElastic: function(t) {
+                var s = 1.70158;
+                var p = 0;
+                var a = 1;
+                if (t === 0) {
+                    return 0;
+                }
+                if (t === 1) {
+                    return 1;
+                }
+                if (!p) {
+                    p = 0.3;
+                }
+                if (a < 1) {
+                    a = 1;
+                    s = p / 4;
+                } else {
+                    s = p / (2 * Math.PI) * Math.asin(1 / a);
+                }
+                return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));
+            },
+
+            easeOutElastic: function(t) {
+                var s = 1.70158;
+                var p = 0;
+                var a = 1;
+                if (t === 0) {
+                    return 0;
+                }
+                if (t === 1) {
+                    return 1;
+                }
+                if (!p) {
+                    p = 0.3;
+                }
+                if (a < 1) {
+                    a = 1;
+                    s = p / 4;
+                } else {
+                    s = p / (2 * Math.PI) * Math.asin(1 / a);
+                }
+                return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;
+            },
+
+            easeInOutElastic: function(t) {
+                var s = 1.70158;
+                var p = 0;
+                var a = 1;
+                if (t === 0) {
+                    return 0;
+                }
+                if ((t /= 0.5) === 2) {
+                    return 1;
+                }
+                if (!p) {
+                    p = 0.45;
+                }
+                if (a < 1) {
+                    a = 1;
+                    s = p / 4;
+                } else {
+                    s = p / (2 * Math.PI) * Math.asin(1 / a);
+                }
+                if (t < 1) {
+                    return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));
+                }
+                return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;
+            },
+            easeInBack: function(t) {
+                var s = 1.70158;
+                return t * t * ((s + 1) * t - s);
+            },
+
+            easeOutBack: function(t) {
+                var s = 1.70158;
+                return (t = t - 1) * t * ((s + 1) * t + s) + 1;
+            },
+
+            easeInOutBack: function(t) {
+                var s = 1.70158;
+                if ((t /= 0.5) < 1) {
+                    return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));
+                }
+                return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);
+            },
+
+            easeInBounce: function(t) {
+                return 1 - effects.easeOutBounce(1 - t);
+            },
+
+            easeOutBounce: function(t) {
+                if (t < (1 / 2.75)) {
+                    return 7.5625 * t * t;
+                }
+                if (t < (2 / 2.75)) {
+                    return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;
+                }
+                if (t < (2.5 / 2.75)) {
+                    return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;
+                }
+                return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;
+            },
+
+            easeInOutBounce: function(t) {
+                if (t < 0.5) {
+                    return effects.easeInBounce(t * 2) * 0.5;
+                }
+                return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;
+            }
+        };
+
+        module.exports = {
+            effects: effects
+        };
+
+// DEPRECATIONS
+
+        /**
+         * Provided for backward compatibility, use Chart.helpers.easing.effects instead.
+         * @function Chart.helpers.easingEffects
+         * @deprecated since version 2.7.0
+         * @todo remove at version 3
+         * @private
+         */
+        helpers.easingEffects = effects;
+
+    },{"42":42}],44:[function(require,module,exports){
+        'use strict';
+
+        var helpers = require(42);
+
+        /**
+         * @alias Chart.helpers.options
+         * @namespace
+         */
+        module.exports = {
+            /**
+             * Converts the given line height `value` in pixels for a specific font `size`.
+             * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').
+             * @param {Number} size - The font size (in pixels) used to resolve relative `value`.
+             * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).
+             * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height
+             * @since 2.7.0
+             */
+            toLineHeight: function(value, size) {
+                var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);
+                if (!matches || matches[1] === 'normal') {
+                    return size * 1.2;
+                }
+
+                value = +matches[2];
+
+                switch (matches[3]) {
+                    case 'px':
+                        return value;
+                    case '%':
+                        value /= 100;
+                        break;
+                    default:
+                        break;
+                }
+
+                return size * value;
+            },
+
+            /**
+             * Converts the given value into a padding object with pre-computed width/height.
+             * @param {Number|Object} value - If a number, set the value to all TRBL component,
+             *  else, if and object, use defined properties and sets undefined ones to 0.
+             * @returns {Object} The padding values (top, right, bottom, left, width, height)
+             * @since 2.7.0
+             */
+            toPadding: function(value) {
+                var t, r, b, l;
+
+                if (helpers.isObject(value)) {
+                    t = +value.top || 0;
+                    r = +value.right || 0;
+                    b = +value.bottom || 0;
+                    l = +value.left || 0;
+                } else {
+                    t = r = b = l = +value || 0;
+                }
+
+                return {
+                    top: t,
+                    right: r,
+                    bottom: b,
+                    left: l,
+                    height: t + b,
+                    width: l + r
+                };
+            },
+
+            /**
+             * Evaluates the given `inputs` sequentially and returns the first defined value.
+             * @param {Array[]} inputs - An array of values, falling back to the last value.
+             * @param {Object} [context] - If defined and the current value is a function, the value
+             * is called with `context` as first argument and the result becomes the new input.
+             * @param {Number} [index] - If defined and the current value is an array, the value
+             * at `index` become the new input.
+             * @since 2.7.0
+             */
+            resolve: function(inputs, context, index) {
+                var i, ilen, value;
+
+                for (i = 0, ilen = inputs.length; i < ilen; ++i) {
+                    value = inputs[i];
+                    if (value === undefined) {
+                        continue;
+                    }
+                    if (context !== undefined && typeof value === 'function') {
+                        value = value(context);
+                    }
+                    if (index !== undefined && helpers.isArray(value)) {
+                        value = value[index];
+                    }
+                    if (value !== undefined) {
+                        return value;
+                    }
+                }
+            }
+        };
+
+    },{"42":42}],45:[function(require,module,exports){
+        'use strict';
+
+        module.exports = require(42);
+        module.exports.easing = require(43);
+        module.exports.canvas = require(41);
+        module.exports.options = require(44);
+
+    },{"41":41,"42":42,"43":43,"44":44}],46:[function(require,module,exports){
+        /**
+         * Platform fallback implementation (minimal).
+         * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939
+         */
+
+        module.exports = {
+            acquireContext: function(item) {
+                if (item && item.canvas) {
+                    // Support for any object associated to a canvas (including a context2d)
+                    item = item.canvas;
+                }
+
+                return item && item.getContext('2d') || null;
+            }
+        };
+
+    },{}],47:[function(require,module,exports){
+        /**
+         * Chart.Platform implementation for targeting a web browser
+         */
+
+        'use strict';
+
+        var helpers = require(45);
+
+        var EXPANDO_KEY = '$chartjs';
+        var CSS_PREFIX = 'chartjs-';
+        var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';
+        var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';
+        var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];
+
+        /**
+         * DOM event types -> Chart.js event types.
+         * Note: only events with different types are mapped.
+         * @see https://developer.mozilla.org/en-US/docs/Web/Events
+         */
+        var EVENT_TYPES = {
+            touchstart: 'mousedown',
+            touchmove: 'mousemove',
+            touchend: 'mouseup',
+            pointerenter: 'mouseenter',
+            pointerdown: 'mousedown',
+            pointermove: 'mousemove',
+            pointerup: 'mouseup',
+            pointerleave: 'mouseout',
+            pointerout: 'mouseout'
+        };
+
+        /**
+         * The "used" size is the final value of a dimension property after all calculations have
+         * been performed. This method uses the computed style of `element` but returns undefined
+         * if the computed style is not expressed in pixels. That can happen in some cases where
+         * `element` has a size relative to its parent and this last one is not yet displayed,
+         * for example because of `display: none` on a parent node.
+         * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value
+         * @returns {Number} Size in pixels or undefined if unknown.
+         */
+        function readUsedSize(element, property) {
+            var value = helpers.getStyle(element, property);
+            var matches = value && value.match(/^(\d+)(\.\d+)?px$/);
+            return matches ? Number(matches[1]) : undefined;
+        }
+
+        /**
+         * Initializes the canvas style and render size without modifying the canvas display size,
+         * since responsiveness is handled by the controller.resize() method. The config is used
+         * to determine the aspect ratio to apply in case no explicit height has been specified.
+         */
+        function initCanvas(canvas, config) {
+            var style = canvas.style;
+
+            // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it
+            // returns null or '' if no explicit value has been set to the canvas attribute.
+            var renderHeight = canvas.getAttribute('height');
+            var renderWidth = canvas.getAttribute('width');
+
+            // Chart.js modifies some canvas values that we want to restore on destroy
+            canvas[EXPANDO_KEY] = {
+                initial: {
+                    height: renderHeight,
+                    width: renderWidth,
+                    style: {
+                        display: style.display,
+                        height: style.height,
+                        width: style.width
+                    }
+                }
+            };
+
+            // Force canvas to display as block to avoid extra space caused by inline
+            // elements, which would interfere with the responsive resize process.
+            // https://github.com/chartjs/Chart.js/issues/2538
+            style.display = style.display || 'block';
+
+            if (renderWidth === null || renderWidth === '') {
+                var displayWidth = readUsedSize(canvas, 'width');
+                if (displayWidth !== undefined) {
+                    canvas.width = displayWidth;
+                }
+            }
+
+            if (renderHeight === null || renderHeight === '') {
+                if (canvas.style.height === '') {
+                    // If no explicit render height and style height, let's apply the aspect ratio,
+                    // which one can be specified by the user but also by charts as default option
+                    // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.
+                    canvas.height = canvas.width / (config.options.aspectRatio || 2);
+                } else {
+                    var displayHeight = readUsedSize(canvas, 'height');
+                    if (displayWidth !== undefined) {
+                        canvas.height = displayHeight;
+                    }
+                }
+            }
+
+            return canvas;
+        }
+
+        /**
+         * Detects support for options object argument in addEventListener.
+         * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support
+         * @private
+         */
+        var supportsEventListenerOptions = (function() {
+            var supports = false;
+            try {
+                var options = Object.defineProperty({}, 'passive', {
+                    get: function() {
+                        supports = true;
+                    }
+                });
+                window.addEventListener('e', null, options);
+            } catch (e) {
+                // continue regardless of error
+            }
+            return supports;
+        }());
+
+// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.
+// https://github.com/chartjs/Chart.js/issues/4287
+        var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;
+
+        function addEventListener(node, type, listener) {
+            node.addEventListener(type, listener, eventListenerOptions);
+        }
+
+        function removeEventListener(node, type, listener) {
+            node.removeEventListener(type, listener, eventListenerOptions);
+        }
+
+        function createEvent(type, chart, x, y, nativeEvent) {
+            return {
+                type: type,
+                chart: chart,
+                native: nativeEvent || null,
+                x: x !== undefined ? x : null,
+                y: y !== undefined ? y : null,
+            };
+        }
+
+        function fromNativeEvent(event, chart) {
+            var type = EVENT_TYPES[event.type] || event.type;
+            var pos = helpers.getRelativePosition(event, chart);
+            return createEvent(type, chart, pos.x, pos.y, event);
+        }
+
+        function throttled(fn, thisArg) {
+            var ticking = false;
+            var args = [];
+
+            return function() {
+                args = Array.prototype.slice.call(arguments);
+                thisArg = thisArg || this;
+
+                if (!ticking) {
+                    ticking = true;
+                    helpers.requestAnimFrame.call(window, function() {
+                        ticking = false;
+                        fn.apply(thisArg, args);
+                    });
+                }
+            };
+        }
+
+// Implementation based on https://github.com/marcj/css-element-queries
+        function createResizer(handler) {
+            var resizer = document.createElement('div');
+            var cls = CSS_PREFIX + 'size-monitor';
+            var maxSize = 1000000;
+            var style =
+                'position:absolute;' +
+                'left:0;' +
+                'top:0;' +
+                'right:0;' +
+                'bottom:0;' +
+                'overflow:hidden;' +
+                'pointer-events:none;' +
+                'visibility:hidden;' +
+                'z-index:-1;';
+
+            resizer.style.cssText = style;
+            resizer.className = cls;
+            resizer.innerHTML =
+                '<div class="' + cls + '-expand" style="' + style + '">' +
+                '<div style="' +
+                'position:absolute;' +
+                'width:' + maxSize + 'px;' +
+                'height:' + maxSize + 'px;' +
+                'left:0;' +
+                'top:0">' +
+                '</div>' +
+                '</div>' +
+                '<div class="' + cls + '-shrink" style="' + style + '">' +
+                '<div style="' +
+                'position:absolute;' +
+                'width:200%;' +
+                'height:200%;' +
+                'left:0; ' +
+                'top:0">' +
+                '</div>' +
+                '</div>';
+
+            var expand = resizer.childNodes[0];
+            var shrink = resizer.childNodes[1];
+
+            resizer._reset = function() {
+                expand.scrollLeft = maxSize;
+                expand.scrollTop = maxSize;
+                shrink.scrollLeft = maxSize;
+                shrink.scrollTop = maxSize;
+            };
+            var onScroll = function() {
+                resizer._reset();
+                handler();
+            };
+
+            addEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));
+            addEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));
+
+            return resizer;
+        }
+
+// https://davidwalsh.name/detect-node-insertion
+        function watchForRender(node, handler) {
+            var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});
+            var proxy = expando.renderProxy = function(e) {
+                if (e.animationName === CSS_RENDER_ANIMATION) {
+                    handler();
+                }
+            };
+
+            helpers.each(ANIMATION_START_EVENTS, function(type) {
+                addEventListener(node, type, proxy);
+            });
+
+            // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class
+            // is removed then added back immediately (same animation frame?). Accessing the
+            // `offsetParent` property will force a reflow and re-evaluate the CSS animation.
+            // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics
+            // https://github.com/chartjs/Chart.js/issues/4737
+            expando.reflow = !!node.offsetParent;
+
+            node.classList.add(CSS_RENDER_MONITOR);
+        }
+
+        function unwatchForRender(node) {
+            var expando = node[EXPANDO_KEY] || {};
+            var proxy = expando.renderProxy;
+
+            if (proxy) {
+                helpers.each(ANIMATION_START_EVENTS, function(type) {
+                    removeEventListener(node, type, proxy);
+                });
+
+                delete expando.renderProxy;
+            }
+
+            node.classList.remove(CSS_RENDER_MONITOR);
+        }
+
+        function addResizeListener(node, listener, chart) {
+            var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});
+
+            // Let's keep track of this added resizer and thus avoid DOM query when removing it.
+            var resizer = expando.resizer = createResizer(throttled(function() {
+                if (expando.resizer) {
+                    return listener(createEvent('resize', chart));
+                }
+            }));
+
+            // The resizer needs to be attached to the node parent, so we first need to be
+            // sure that `node` is attached to the DOM before injecting the resizer element.
+            watchForRender(node, function() {
+                if (expando.resizer) {
+                    var container = node.parentNode;
+                    if (container && container !== resizer.parentNode) {
+                        container.insertBefore(resizer, container.firstChild);
+                    }
+
+                    // The container size might have changed, let's reset the resizer state.
+                    resizer._reset();
+                }
+            });
+        }
+
+        function removeResizeListener(node) {
+            var expando = node[EXPANDO_KEY] || {};
+            var resizer = expando.resizer;
+
+            delete expando.resizer;
+            unwatchForRender(node);
+
+            if (resizer && resizer.parentNode) {
+                resizer.parentNode.removeChild(resizer);
+            }
+        }
+
+        function injectCSS(platform, css) {
+            // http://stackoverflow.com/q/3922139
+            var style = platform._style || document.createElement('style');
+            if (!platform._style) {
+                platform._style = style;
+                css = '/* Chart.js */\n' + css;
+                style.setAttribute('type', 'text/css');
+                document.getElementsByTagName('head')[0].appendChild(style);
+            }
+
+            style.appendChild(document.createTextNode(css));
+        }
+
+        module.exports = {
+            /**
+             * This property holds whether this platform is enabled for the current environment.
+             * Currently used by platform.js to select the proper implementation.
+             * @private
+             */
+            _enabled: typeof window !== 'undefined' && typeof document !== 'undefined',
+
+            initialize: function() {
+                var keyframes = 'from{opacity:0.99}to{opacity:1}';
+
+                injectCSS(this,
+                    // DOM rendering detection
+                    // https://davidwalsh.name/detect-node-insertion
+                    '@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +
+                    '@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +
+                    '.' + CSS_RENDER_MONITOR + '{' +
+                    '-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +
+                    'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +
+                    '}'
+                );
+            },
+
+            acquireContext: function(item, config) {
+                if (typeof item === 'string') {
+                    item = document.getElementById(item);
+                } else if (item.length) {
+                    // Support for array based queries (such as jQuery)
+                    item = item[0];
+                }
+
+                if (item && item.canvas) {
+                    // Support for any object associated to a canvas (including a context2d)
+                    item = item.canvas;
+                }
+
+                // To prevent canvas fingerprinting, some add-ons undefine the getContext
+                // method, for example: https://github.com/kkapsner/CanvasBlocker
+                // https://github.com/chartjs/Chart.js/issues/2807
+                var context = item && item.getContext && item.getContext('2d');
+
+                // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is
+                // inside an iframe or when running in a protected environment. We could guess the
+                // types from their toString() value but let's keep things flexible and assume it's
+                // a sufficient condition if the item has a context2D which has item as `canvas`.
+                // https://github.com/chartjs/Chart.js/issues/3887
+                // https://github.com/chartjs/Chart.js/issues/4102
+                // https://github.com/chartjs/Chart.js/issues/4152
+                if (context && context.canvas === item) {
+                    initCanvas(item, config);
+                    return context;
+                }
+
+                return null;
+            },
+
+            releaseContext: function(context) {
+                var canvas = context.canvas;
+                if (!canvas[EXPANDO_KEY]) {
+                    return;
+                }
+
+                var initial = canvas[EXPANDO_KEY].initial;
+                ['height', 'width'].forEach(function(prop) {
+                    var value = initial[prop];
+                    if (helpers.isNullOrUndef(value)) {
+                        canvas.removeAttribute(prop);
+                    } else {
+                        canvas.setAttribute(prop, value);
+                    }
+                });
+
+                helpers.each(initial.style || {}, function(value, key) {
+                    canvas.style[key] = value;
+                });
+
+                // The canvas render size might have been changed (and thus the state stack discarded),
+                // we can't use save() and restore() to restore the initial state. So make sure that at
+                // least the canvas context is reset to the default state by setting the canvas width.
+                // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html
+                canvas.width = canvas.width;
+
+                delete canvas[EXPANDO_KEY];
+            },
+
+            addEventListener: function(chart, type, listener) {
+                var canvas = chart.canvas;
+                if (type === 'resize') {
+                    // Note: the resize event is not supported on all browsers.
+                    addResizeListener(canvas, listener, chart);
+                    return;
+                }
+
+                var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});
+                var proxies = expando.proxies || (expando.proxies = {});
+                var proxy = proxies[chart.id + '_' + type] = function(event) {
+                    listener(fromNativeEvent(event, chart));
+                };
+
+                addEventListener(canvas, type, proxy);
+            },
+
+            removeEventListener: function(chart, type, listener) {
+                var canvas = chart.canvas;
+                if (type === 'resize') {
+                    // Note: the resize event is not supported on all browsers.
+                    removeResizeListener(canvas, listener);
+                    return;
+                }
+
+                var expando = listener[EXPANDO_KEY] || {};
+                var proxies = expando.proxies || {};
+                var proxy = proxies[chart.id + '_' + type];
+                if (!proxy) {
+                    return;
+                }
+
+                removeEventListener(canvas, type, proxy);
+            }
+        };
+
+// DEPRECATIONS
+
+        /**
+         * Provided for backward compatibility, use EventTarget.addEventListener instead.
+         * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+
+         * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
+         * @function Chart.helpers.addEvent
+         * @deprecated since version 2.7.0
+         * @todo remove at version 3
+         * @private
+         */
+        helpers.addEvent = addEventListener;
+
+        /**
+         * Provided for backward compatibility, use EventTarget.removeEventListener instead.
+         * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+
+         * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener
+         * @function Chart.helpers.removeEvent
+         * @deprecated since version 2.7.0
+         * @todo remove at version 3
+         * @private
+         */
+        helpers.removeEvent = removeEventListener;
+
+    },{"45":45}],48:[function(require,module,exports){
+        'use strict';
+
+        var helpers = require(45);
+        var basic = require(46);
+        var dom = require(47);
+
+// @TODO Make possible to select another platform at build time.
+        var implementation = dom._enabled ? dom : basic;
+
+        /**
+         * @namespace Chart.platform
+         * @see https://chartjs.gitbooks.io/proposals/content/Platform.html
+         * @since 2.4.0
+         */
+        module.exports = helpers.extend({
+            /**
+             * @since 2.7.0
+             */
+            initialize: function() {},
+
+            /**
+             * Called at chart construction time, returns a context2d instance implementing
+             * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.
+             * @param {*} item - The native item from which to acquire context (platform specific)
+             * @param {Object} options - The chart options
+             * @returns {CanvasRenderingContext2D} context2d instance
+             */
+            acquireContext: function() {},
+
+            /**
+             * Called at chart destruction time, releases any resources associated to the context
+             * previously returned by the acquireContext() method.
+             * @param {CanvasRenderingContext2D} context - The context2d instance
+             * @returns {Boolean} true if the method succeeded, else false
+             */
+            releaseContext: function() {},
+
+            /**
+             * Registers the specified listener on the given chart.
+             * @param {Chart} chart - Chart from which to listen for event
+             * @param {String} type - The ({@link IEvent}) type to listen for
+             * @param {Function} listener - Receives a notification (an object that implements
+             * the {@link IEvent} interface) when an event of the specified type occurs.
+             */
+            addEventListener: function() {},
+
+            /**
+             * Removes the specified listener previously registered with addEventListener.
+             * @param {Chart} chart -Chart from which to remove the listener
+             * @param {String} type - The ({@link IEvent}) type to remove
+             * @param {Function} listener - The listener function to remove from the event target.
+             */
+            removeEventListener: function() {}
+
+        }, implementation);
+
+        /**
+         * @interface IPlatform
+         * Allows abstracting platform dependencies away from the chart
+         * @borrows Chart.platform.acquireContext as acquireContext
+         * @borrows Chart.platform.releaseContext as releaseContext
+         * @borrows Chart.platform.addEventListener as addEventListener
+         * @borrows Chart.platform.removeEventListener as removeEventListener
+         */
+
+        /**
+         * @interface IEvent
+         * @prop {String} type - The event type name, possible values are:
+         * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',
+         * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'
+         * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')
+         * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)
+         * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)
+         */
+
+    },{"45":45,"46":46,"47":47}],49:[function(require,module,exports){
+        /**
+         * Plugin based on discussion from the following Chart.js issues:
+         * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569
+         * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897
+         */
+
+        'use strict';
+
+        var defaults = require(25);
+        var elements = require(40);
+        var helpers = require(45);
+
+        defaults._set('global', {
+            plugins: {
+                filler: {
+                    propagate: true
+                }
+            }
+        });
+
+        module.exports = function() {
+
+            var mappers = {
+                dataset: function(source) {
+                    var index = source.fill;
+                    var chart = source.chart;
+                    var meta = chart.getDatasetMeta(index);
+                    var visible = meta && chart.isDatasetVisible(index);
+                    var points = (visible && meta.dataset._children) || [];
+                    var length = points.length || 0;
+
+                    return !length ? null : function(point, i) {
+                        return (i < length && points[i]._view) || null;
+                    };
+                },
+
+                boundary: function(source) {
+                    var boundary = source.boundary;
+                    var x = boundary ? boundary.x : null;
+                    var y = boundary ? boundary.y : null;
+
+                    return function(point) {
+                        return {
+                            x: x === null ? point.x : x,
+                            y: y === null ? point.y : y,
+                        };
+                    };
+                }
+            };
+
+            // @todo if (fill[0] === '#')
+            function decodeFill(el, index, count) {
+                var model = el._model || {};
+                var fill = model.fill;
+                var target;
+
+                if (fill === undefined) {
+                    fill = !!model.backgroundColor;
+                }
+
+                if (fill === false || fill === null) {
+                    return false;
+                }
+
+                if (fill === true) {
+                    return 'origin';
+                }
+
+                target = parseFloat(fill, 10);
+                if (isFinite(target) && Math.floor(target) === target) {
+                    if (fill[0] === '-' || fill[0] === '+') {
+                        target = index + target;
+                    }
+
+                    if (target === index || target < 0 || target >= count) {
+                        return false;
+                    }
+
+                    return target;
+                }
+
+                switch (fill) {
+                    // compatibility
+                    case 'bottom':
+                        return 'start';
+                    case 'top':
+                        return 'end';
+                    case 'zero':
+                        return 'origin';
+                    // supported boundaries
+                    case 'origin':
+                    case 'start':
+                    case 'end':
+                        return fill;
+                    // invalid fill values
+                    default:
+                        return false;
+                }
+            }
+
+            function computeBoundary(source) {
+                var model = source.el._model || {};
+                var scale = source.el._scale || {};
+                var fill = source.fill;
+                var target = null;
+                var horizontal;
+
+                if (isFinite(fill)) {
+                    return null;
+                }
+
+                // Backward compatibility: until v3, we still need to support boundary values set on
+                // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and
+                // controllers might still use it (e.g. the Smith chart).
+
+                if (fill === 'start') {
+                    target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;
+                } else if (fill === 'end') {
+                    target = model.scaleTop === undefined ? scale.top : model.scaleTop;
+                } else if (model.scaleZero !== undefined) {
+                    target = model.scaleZero;
+                } else if (scale.getBasePosition) {
+                    target = scale.getBasePosition();
+                } else if (scale.getBasePixel) {
+                    target = scale.getBasePixel();
+                }
+
+                if (target !== undefined && target !== null) {
+                    if (target.x !== undefined && target.y !== undefined) {
+                        return target;
+                    }
+
+                    if (typeof target === 'number' && isFinite(target)) {
+                        horizontal = scale.isHorizontal();
+                        return {
+                            x: horizontal ? target : null,
+                            y: horizontal ? null : target
+                        };
+                    }
+                }
+
+                return null;
+            }
+
+            function resolveTarget(sources, index, propagate) {
+                var source = sources[index];
+                var fill = source.fill;
+                var visited = [index];
+                var target;
+
+                if (!propagate) {
+                    return fill;
+                }
+
+                while (fill !== false && visited.indexOf(fill) === -1) {
+                    if (!isFinite(fill)) {
+                        return fill;
+                    }
+
+                    target = sources[fill];
+                    if (!target) {
+                        return false;
+                    }
+
+                    if (target.visible) {
+                        return fill;
+                    }
+
+                    visited.push(fill);
+                    fill = target.fill;
+                }
+
+                return false;
+            }
+
+            function createMapper(source) {
+                var fill = source.fill;
+                var type = 'dataset';
+
+                if (fill === false) {
+                    return null;
+                }
+
+                if (!isFinite(fill)) {
+                    type = 'boundary';
+                }
+
+                return mappers[type](source);
+            }
+
+            function isDrawable(point) {
+                return point && !point.skip;
+            }
+
+            function drawArea(ctx, curve0, curve1, len0, len1) {
+                var i;
+
+                if (!len0 || !len1) {
+                    return;
+                }
+
+                // building first area curve (normal)
+                ctx.moveTo(curve0[0].x, curve0[0].y);
+                for (i = 1; i < len0; ++i) {
+                    helpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);
+                }
+
+                // joining the two area curves
+                ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);
+
+                // building opposite area curve (reverse)
+                for (i = len1 - 1; i > 0; --i) {
+                    helpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);
+                }
+            }
+
+            function doFill(ctx, points, mapper, view, color, loop) {
+                var count = points.length;
+                var span = view.spanGaps;
+                var curve0 = [];
+                var curve1 = [];
+                var len0 = 0;
+                var len1 = 0;
+                var i, ilen, index, p0, p1, d0, d1;
+
+                ctx.beginPath();
+
+                for (i = 0, ilen = (count + !!loop); i < ilen; ++i) {
+                    index = i % count;
+                    p0 = points[index]._view;
+                    p1 = mapper(p0, index, view);
+                    d0 = isDrawable(p0);
+                    d1 = isDrawable(p1);
+
+                    if (d0 && d1) {
+                        len0 = curve0.push(p0);
+                        len1 = curve1.push(p1);
+                    } else if (len0 && len1) {
+                        if (!span) {
+                            drawArea(ctx, curve0, curve1, len0, len1);
+                            len0 = len1 = 0;
+                            curve0 = [];
+                            curve1 = [];
+                        } else {
+                            if (d0) {
+                                curve0.push(p0);
+                            }
+                            if (d1) {
+                                curve1.push(p1);
+                            }
+                        }
+                    }
+                }
+
+                drawArea(ctx, curve0, curve1, len0, len1);
+
+                ctx.closePath();
+                ctx.fillStyle = color;
+                ctx.fill();
+            }
+
+            return {
+                id: 'filler',
+
+                afterDatasetsUpdate: function(chart, options) {
+                    var count = (chart.data.datasets || []).length;
+                    var propagate = options.propagate;
+                    var sources = [];
+                    var meta, i, el, source;
+
+                    for (i = 0; i < count; ++i) {
+                        meta = chart.getDatasetMeta(i);
+                        el = meta.dataset;
+                        source = null;
+
+                        if (el && el._model && el instanceof elements.Line) {
+                            source = {
+                                visible: chart.isDatasetVisible(i),
+                                fill: decodeFill(el, i, count),
+                                chart: chart,
+                                el: el
+                            };
+                        }
+
+                        meta.$filler = source;
+                        sources.push(source);
+                    }
+
+                    for (i = 0; i < count; ++i) {
+                        source = sources[i];
+                        if (!source) {
+                            continue;
+                        }
+
+                        source.fill = resolveTarget(sources, i, propagate);
+                        source.boundary = computeBoundary(source);
+                        source.mapper = createMapper(source);
+                    }
+                },
+
+                beforeDatasetDraw: function(chart, args) {
+                    var meta = args.meta.$filler;
+                    if (!meta) {
+                        return;
+                    }
+
+                    var ctx = chart.ctx;
+                    var el = meta.el;
+                    var view = el._view;
+                    var points = el._children || [];
+                    var mapper = meta.mapper;
+                    var color = view.backgroundColor || defaults.global.defaultColor;
+
+                    if (mapper && color && points.length) {
+                        helpers.canvas.clipArea(ctx, chart.chartArea);
+                        doFill(ctx, points, mapper, view, color, el._loop);
+                        helpers.canvas.unclipArea(ctx);
+                    }
+                }
+            };
+        };
+
+    },{"25":25,"40":40,"45":45}],50:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var Element = require(26);
+        var helpers = require(45);
+
+        defaults._set('global', {
+            legend: {
+                display: true,
+                position: 'top',
+                fullWidth: true,
+                reverse: false,
+                weight: 1000,
+
+                // a callback that will handle
+                onClick: function(e, legendItem) {
+                    var index = legendItem.datasetIndex;
+                    var ci = this.chart;
+                    var meta = ci.getDatasetMeta(index);
+
+                    // See controller.isDatasetVisible comment
+                    meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;
+
+                    // We hid a dataset ... rerender the chart
+                    ci.update();
+                },
+
+                onHover: null,
+
+                labels: {
+                    boxWidth: 40,
+                    padding: 10,
+                    // Generates labels shown in the legend
+                    // Valid properties to return:
+                    // text : text to display
+                    // fillStyle : fill of coloured box
+                    // strokeStyle: stroke of coloured box
+                    // hidden : if this legend item refers to a hidden item
+                    // lineCap : cap style for line
+                    // lineDash
+                    // lineDashOffset :
+                    // lineJoin :
+                    // lineWidth :
+                    generateLabels: function(chart) {
+                        var data = chart.data;
+                        return helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {
+                            return {
+                                text: dataset.label,
+                                fillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),
+                                hidden: !chart.isDatasetVisible(i),
+                                lineCap: dataset.borderCapStyle,
+                                lineDash: dataset.borderDash,
+                                lineDashOffset: dataset.borderDashOffset,
+                                lineJoin: dataset.borderJoinStyle,
+                                lineWidth: dataset.borderWidth,
+                                strokeStyle: dataset.borderColor,
+                                pointStyle: dataset.pointStyle,
+
+                                // Below is extra data used for toggling the datasets
+                                datasetIndex: i
+                            };
+                        }, this) : [];
+                    }
+                }
+            },
+
+            legendCallback: function(chart) {
+                var text = [];
+                text.push('<ul class="' + chart.id + '-legend">');
+                for (var i = 0; i < chart.data.datasets.length; i++) {
+                    text.push('<li><span style="background-color:' + chart.data.datasets[i].backgroundColor + '"></span>');
+                    if (chart.data.datasets[i].label) {
+                        text.push(chart.data.datasets[i].label);
+                    }
+                    text.push('</li>');
+                }
+                text.push('</ul>');
+                return text.join('');
+            }
+        });
+
+        module.exports = function(Chart) {
+
+            var layout = Chart.layoutService;
+            var noop = helpers.noop;
+
+            /**
+             * Helper function to get the box width based on the usePointStyle option
+             * @param labelopts {Object} the label options on the legend
+             * @param fontSize {Number} the label font size
+             * @return {Number} width of the color box area
+             */
+            function getBoxWidth(labelOpts, fontSize) {
+                return labelOpts.usePointStyle ?
+                    fontSize * Math.SQRT2 :
+                    labelOpts.boxWidth;
+            }
+
+            Chart.Legend = Element.extend({
+
+                initialize: function(config) {
+                    helpers.extend(this, config);
+
+                    // Contains hit boxes for each dataset (in dataset order)
+                    this.legendHitBoxes = [];
+
+                    // Are we in doughnut mode which has a different data type
+                    this.doughnutMode = false;
+                },
+
+                // These methods are ordered by lifecycle. Utilities then follow.
+                // Any function defined here is inherited by all legend types.
+                // Any function can be extended by the legend type
+
+                beforeUpdate: noop,
+                update: function(maxWidth, maxHeight, margins) {
+                    var me = this;
+
+                    // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)
+                    me.beforeUpdate();
+
+                    // Absorb the master measurements
+                    me.maxWidth = maxWidth;
+                    me.maxHeight = maxHeight;
+                    me.margins = margins;
+
+                    // Dimensions
+                    me.beforeSetDimensions();
+                    me.setDimensions();
+                    me.afterSetDimensions();
+                    // Labels
+                    me.beforeBuildLabels();
+                    me.buildLabels();
+                    me.afterBuildLabels();
+
+                    // Fit
+                    me.beforeFit();
+                    me.fit();
+                    me.afterFit();
+                    //
+                    me.afterUpdate();
+
+                    return me.minSize;
+                },
+                afterUpdate: noop,
+
+                //
+
+                beforeSetDimensions: noop,
+                setDimensions: function() {
+                    var me = this;
+                    // Set the unconstrained dimension before label rotation
+                    if (me.isHorizontal()) {
+                        // Reset position before calculating rotation
+                        me.width = me.maxWidth;
+                        me.left = 0;
+                        me.right = me.width;
+                    } else {
+                        me.height = me.maxHeight;
+
+                        // Reset position before calculating rotation
+                        me.top = 0;
+                        me.bottom = me.height;
+                    }
+
+                    // Reset padding
+                    me.paddingLeft = 0;
+                    me.paddingTop = 0;
+                    me.paddingRight = 0;
+                    me.paddingBottom = 0;
+
+                    // Reset minSize
+                    me.minSize = {
+                        width: 0,
+                        height: 0
+                    };
+                },
+                afterSetDimensions: noop,
+
+                //
+
+                beforeBuildLabels: noop,
+                buildLabels: function() {
+                    var me = this;
+                    var labelOpts = me.options.labels || {};
+                    var legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];
+
+                    if (labelOpts.filter) {
+                        legendItems = legendItems.filter(function(item) {
+                            return labelOpts.filter(item, me.chart.data);
+                        });
+                    }
+
+                    if (me.options.reverse) {
+                        legendItems.reverse();
+                    }
+
+                    me.legendItems = legendItems;
+                },
+                afterBuildLabels: noop,
+
+                //
+
+                beforeFit: noop,
+                fit: function() {
+                    var me = this;
+                    var opts = me.options;
+                    var labelOpts = opts.labels;
+                    var display = opts.display;
+
+                    var ctx = me.ctx;
+
+                    var globalDefault = defaults.global;
+                    var valueOrDefault = helpers.valueOrDefault;
+                    var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);
+                    var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);
+                    var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);
+                    var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);
+
+                    // Reset hit boxes
+                    var hitboxes = me.legendHitBoxes = [];
+
+                    var minSize = me.minSize;
+                    var isHorizontal = me.isHorizontal();
+
+                    if (isHorizontal) {
+                        minSize.width = me.maxWidth; // fill all the width
+                        minSize.height = display ? 10 : 0;
+                    } else {
+                        minSize.width = display ? 10 : 0;
+                        minSize.height = me.maxHeight; // fill all the height
+                    }
+
+                    // Increase sizes here
+                    if (display) {
+                        ctx.font = labelFont;
+
+                        if (isHorizontal) {
+                            // Labels
+
+                            // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one
+                            var lineWidths = me.lineWidths = [0];
+                            var totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;
+
+                            ctx.textAlign = 'left';
+                            ctx.textBaseline = 'top';
+
+                            helpers.each(me.legendItems, function(legendItem, i) {
+                                var boxWidth = getBoxWidth(labelOpts, fontSize);
+                                var width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;
+
+                                if (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {
+                                    totalHeight += fontSize + (labelOpts.padding);
+                                    lineWidths[lineWidths.length] = me.left;
+                                }
+
+                                // Store the hitbox width and height here. Final position will be updated in `draw`
+                                hitboxes[i] = {
+                                    left: 0,
+                                    top: 0,
+                                    width: width,
+                                    height: fontSize
+                                };
+
+                                lineWidths[lineWidths.length - 1] += width + labelOpts.padding;
+                            });
+
+                            minSize.height += totalHeight;
+
+                        } else {
+                            var vPadding = labelOpts.padding;
+                            var columnWidths = me.columnWidths = [];
+                            var totalWidth = labelOpts.padding;
+                            var currentColWidth = 0;
+                            var currentColHeight = 0;
+                            var itemHeight = fontSize + vPadding;
+
+                            helpers.each(me.legendItems, function(legendItem, i) {
+                                var boxWidth = getBoxWidth(labelOpts, fontSize);
+                                var itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;
+
+                                // If too tall, go to new column
+                                if (currentColHeight + itemHeight > minSize.height) {
+                                    totalWidth += currentColWidth + labelOpts.padding;
+                                    columnWidths.push(currentColWidth); // previous column width
+
+                                    currentColWidth = 0;
+                                    currentColHeight = 0;
+                                }
+
+                                // Get max width
+                                currentColWidth = Math.max(currentColWidth, itemWidth);
+                                currentColHeight += itemHeight;
+
+                                // Store the hitbox width and height here. Final position will be updated in `draw`
+                                hitboxes[i] = {
+                                    left: 0,
+                                    top: 0,
+                                    width: itemWidth,
+                                    height: fontSize
+                                };
+                            });
+
+                            totalWidth += currentColWidth;
+                            columnWidths.push(currentColWidth);
+                            minSize.width += totalWidth;
+                        }
+                    }
+
+                    me.width = minSize.width;
+                    me.height = minSize.height;
+                },
+                afterFit: noop,
+
+                // Shared Methods
+                isHorizontal: function() {
+                    return this.options.position === 'top' || this.options.position === 'bottom';
+                },
+
+                // Actually draw the legend on the canvas
+                draw: function() {
+                    var me = this;
+                    var opts = me.options;
+                    var labelOpts = opts.labels;
+                    var globalDefault = defaults.global;
+                    var lineDefault = globalDefault.elements.line;
+                    var legendWidth = me.width;
+                    var lineWidths = me.lineWidths;
+
+                    if (opts.display) {
+                        var ctx = me.ctx;
+                        var valueOrDefault = helpers.valueOrDefault;
+                        var fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);
+                        var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);
+                        var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);
+                        var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);
+                        var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);
+                        var cursor;
+
+                        // Canvas setup
+                        ctx.textAlign = 'left';
+                        ctx.textBaseline = 'middle';
+                        ctx.lineWidth = 0.5;
+                        ctx.strokeStyle = fontColor; // for strikethrough effect
+                        ctx.fillStyle = fontColor; // render in correct colour
+                        ctx.font = labelFont;
+
+                        var boxWidth = getBoxWidth(labelOpts, fontSize);
+                        var hitboxes = me.legendHitBoxes;
+
+                        // current position
+                        var drawLegendBox = function(x, y, legendItem) {
+                            if (isNaN(boxWidth) || boxWidth <= 0) {
+                                return;
+                            }
+
+                            // Set the ctx for the box
+                            ctx.save();
+
+                            ctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);
+                            ctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);
+                            ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);
+                            ctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);
+                            ctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);
+                            ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);
+                            var isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);
+
+                            if (ctx.setLineDash) {
+                                // IE 9 and 10 do not support line dash
+                                ctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));
+                            }
+
+                            if (opts.labels && opts.labels.usePointStyle) {
+                                // Recalculate x and y for drawPoint() because its expecting
+                                // x and y to be center of figure (instead of top left)
+                                var radius = fontSize * Math.SQRT2 / 2;
+                                var offSet = radius / Math.SQRT2;
+                                var centerX = x + offSet;
+                                var centerY = y + offSet;
+
+                                // Draw pointStyle as legend symbol
+                                helpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);
+                            } else {
+                                // Draw box as legend symbol
+                                if (!isLineWidthZero) {
+                                    ctx.strokeRect(x, y, boxWidth, fontSize);
+                                }
+                                ctx.fillRect(x, y, boxWidth, fontSize);
+                            }
+
+                            ctx.restore();
+                        };
+                        var fillText = function(x, y, legendItem, textWidth) {
+                            var halfFontSize = fontSize / 2;
+                            var xLeft = boxWidth + halfFontSize + x;
+                            var yMiddle = y + halfFontSize;
+
+                            ctx.fillText(legendItem.text, xLeft, yMiddle);
+
+                            if (legendItem.hidden) {
+                                // Strikethrough the text if hidden
+                                ctx.beginPath();
+                                ctx.lineWidth = 2;
+                                ctx.moveTo(xLeft, yMiddle);
+                                ctx.lineTo(xLeft + textWidth, yMiddle);
+                                ctx.stroke();
+                            }
+                        };
+
+                        // Horizontal
+                        var isHorizontal = me.isHorizontal();
+                        if (isHorizontal) {
+                            cursor = {
+                                x: me.left + ((legendWidth - lineWidths[0]) / 2),
+                                y: me.top + labelOpts.padding,
+                                line: 0
+                            };
+                        } else {
+                            cursor = {
+                                x: me.left + labelOpts.padding,
+                                y: me.top + labelOpts.padding,
+                                line: 0
+                            };
+                        }
+
+                        var itemHeight = fontSize + labelOpts.padding;
+                        helpers.each(me.legendItems, function(legendItem, i) {
+                            var textWidth = ctx.measureText(legendItem.text).width;
+                            var width = boxWidth + (fontSize / 2) + textWidth;
+                            var x = cursor.x;
+                            var y = cursor.y;
+
+                            if (isHorizontal) {
+                                if (x + width >= legendWidth) {
+                                    y = cursor.y += itemHeight;
+                                    cursor.line++;
+                                    x = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);
+                                }
+                            } else if (y + itemHeight > me.bottom) {
+                                x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;
+                                y = cursor.y = me.top + labelOpts.padding;
+                                cursor.line++;
+                            }
+
+                            drawLegendBox(x, y, legendItem);
+
+                            hitboxes[i].left = x;
+                            hitboxes[i].top = y;
+
+                            // Fill the actual label
+                            fillText(x, y, legendItem, textWidth);
+
+                            if (isHorizontal) {
+                                cursor.x += width + (labelOpts.padding);
+                            } else {
+                                cursor.y += itemHeight;
+                            }
+
+                        });
+                    }
+                },
+
+                /**
+                 * Handle an event
+                 * @private
+                 * @param {IEvent} event - The event to handle
+                 * @return {Boolean} true if a change occured
+                 */
+                handleEvent: function(e) {
+                    var me = this;
+                    var opts = me.options;
+                    var type = e.type === 'mouseup' ? 'click' : e.type;
+                    var changed = false;
+
+                    if (type === 'mousemove') {
+                        if (!opts.onHover) {
+                            return;
+                        }
+                    } else if (type === 'click') {
+                        if (!opts.onClick) {
+                            return;
+                        }
+                    } else {
+                        return;
+                    }
+
+                    // Chart event already has relative position in it
+                    var x = e.x;
+                    var y = e.y;
+
+                    if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {
+                        // See if we are touching one of the dataset boxes
+                        var lh = me.legendHitBoxes;
+                        for (var i = 0; i < lh.length; ++i) {
+                            var hitBox = lh[i];
+
+                            if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {
+                                // Touching an element
+                                if (type === 'click') {
+                                    // use e.native for backwards compatibility
+                                    opts.onClick.call(me, e.native, me.legendItems[i]);
+                                    changed = true;
+                                    break;
+                                } else if (type === 'mousemove') {
+                                    // use e.native for backwards compatibility
+                                    opts.onHover.call(me, e.native, me.legendItems[i]);
+                                    changed = true;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+
+                    return changed;
+                }
+            });
+
+            function createNewLegendAndAttach(chart, legendOpts) {
+                var legend = new Chart.Legend({
+                    ctx: chart.ctx,
+                    options: legendOpts,
+                    chart: chart
+                });
+
+                layout.configure(chart, legend, legendOpts);
+                layout.addBox(chart, legend);
+                chart.legend = legend;
+            }
+
+            return {
+                id: 'legend',
+
+                beforeInit: function(chart) {
+                    var legendOpts = chart.options.legend;
+
+                    if (legendOpts) {
+                        createNewLegendAndAttach(chart, legendOpts);
+                    }
+                },
+
+                beforeUpdate: function(chart) {
+                    var legendOpts = chart.options.legend;
+                    var legend = chart.legend;
+
+                    if (legendOpts) {
+                        helpers.mergeIf(legendOpts, defaults.global.legend);
+
+                        if (legend) {
+                            layout.configure(chart, legend, legendOpts);
+                            legend.options = legendOpts;
+                        } else {
+                            createNewLegendAndAttach(chart, legendOpts);
+                        }
+                    } else if (legend) {
+                        layout.removeBox(chart, legend);
+                        delete chart.legend;
+                    }
+                },
+
+                afterEvent: function(chart, e) {
+                    var legend = chart.legend;
+                    if (legend) {
+                        legend.handleEvent(e);
+                    }
+                }
+            };
+        };
+
+    },{"25":25,"26":26,"45":45}],51:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var Element = require(26);
+        var helpers = require(45);
+
+        defaults._set('global', {
+            title: {
+                display: false,
+                fontStyle: 'bold',
+                fullWidth: true,
+                lineHeight: 1.2,
+                padding: 10,
+                position: 'top',
+                text: '',
+                weight: 2000         // by default greater than legend (1000) to be above
+            }
+        });
+
+        module.exports = function(Chart) {
+
+            var layout = Chart.layoutService;
+            var noop = helpers.noop;
+
+            Chart.Title = Element.extend({
+                initialize: function(config) {
+                    var me = this;
+                    helpers.extend(me, config);
+
+                    // Contains hit boxes for each dataset (in dataset order)
+                    me.legendHitBoxes = [];
+                },
+
+                // These methods are ordered by lifecycle. Utilities then follow.
+
+                beforeUpdate: noop,
+                update: function(maxWidth, maxHeight, margins) {
+                    var me = this;
+
+                    // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)
+                    me.beforeUpdate();
+
+                    // Absorb the master measurements
+                    me.maxWidth = maxWidth;
+                    me.maxHeight = maxHeight;
+                    me.margins = margins;
+
+                    // Dimensions
+                    me.beforeSetDimensions();
+                    me.setDimensions();
+                    me.afterSetDimensions();
+                    // Labels
+                    me.beforeBuildLabels();
+                    me.buildLabels();
+                    me.afterBuildLabels();
+
+                    // Fit
+                    me.beforeFit();
+                    me.fit();
+                    me.afterFit();
+                    //
+                    me.afterUpdate();
+
+                    return me.minSize;
+
+                },
+                afterUpdate: noop,
+
+                //
+
+                beforeSetDimensions: noop,
+                setDimensions: function() {
+                    var me = this;
+                    // Set the unconstrained dimension before label rotation
+                    if (me.isHorizontal()) {
+                        // Reset position before calculating rotation
+                        me.width = me.maxWidth;
+                        me.left = 0;
+                        me.right = me.width;
+                    } else {
+                        me.height = me.maxHeight;
+
+                        // Reset position before calculating rotation
+                        me.top = 0;
+                        me.bottom = me.height;
+                    }
+
+                    // Reset padding
+                    me.paddingLeft = 0;
+                    me.paddingTop = 0;
+                    me.paddingRight = 0;
+                    me.paddingBottom = 0;
+
+                    // Reset minSize
+                    me.minSize = {
+                        width: 0,
+                        height: 0
+                    };
+                },
+                afterSetDimensions: noop,
+
+                //
+
+                beforeBuildLabels: noop,
+                buildLabels: noop,
+                afterBuildLabels: noop,
+
+                //
+
+                beforeFit: noop,
+                fit: function() {
+                    var me = this;
+                    var valueOrDefault = helpers.valueOrDefault;
+                    var opts = me.options;
+                    var display = opts.display;
+                    var fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);
+                    var minSize = me.minSize;
+                    var lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;
+                    var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);
+                    var textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;
+
+                    if (me.isHorizontal()) {
+                        minSize.width = me.maxWidth; // fill all the width
+                        minSize.height = textSize;
+                    } else {
+                        minSize.width = textSize;
+                        minSize.height = me.maxHeight; // fill all the height
+                    }
+
+                    me.width = minSize.width;
+                    me.height = minSize.height;
+
+                },
+                afterFit: noop,
+
+                // Shared Methods
+                isHorizontal: function() {
+                    var pos = this.options.position;
+                    return pos === 'top' || pos === 'bottom';
+                },
+
+                // Actually draw the title block on the canvas
+                draw: function() {
+                    var me = this;
+                    var ctx = me.ctx;
+                    var valueOrDefault = helpers.valueOrDefault;
+                    var opts = me.options;
+                    var globalDefaults = defaults.global;
+
+                    if (opts.display) {
+                        var fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);
+                        var fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);
+                        var fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);
+                        var titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);
+                        var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);
+                        var offset = lineHeight / 2 + opts.padding;
+                        var rotation = 0;
+                        var top = me.top;
+                        var left = me.left;
+                        var bottom = me.bottom;
+                        var right = me.right;
+                        var maxWidth, titleX, titleY;
+
+                        ctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour
+                        ctx.font = titleFont;
+
+                        // Horizontal
+                        if (me.isHorizontal()) {
+                            titleX = left + ((right - left) / 2); // midpoint of the width
+                            titleY = top + offset;
+                            maxWidth = right - left;
+                        } else {
+                            titleX = opts.position === 'left' ? left + offset : right - offset;
+                            titleY = top + ((bottom - top) / 2);
+                            maxWidth = bottom - top;
+                            rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);
+                        }
+
+                        ctx.save();
+                        ctx.translate(titleX, titleY);
+                        ctx.rotate(rotation);
+                        ctx.textAlign = 'center';
+                        ctx.textBaseline = 'middle';
+
+                        var text = opts.text;
+                        if (helpers.isArray(text)) {
+                            var y = 0;
+                            for (var i = 0; i < text.length; ++i) {
+                                ctx.fillText(text[i], 0, y, maxWidth);
+                                y += lineHeight;
+                            }
+                        } else {
+                            ctx.fillText(text, 0, 0, maxWidth);
+                        }
+
+                        ctx.restore();
+                    }
+                }
+            });
+
+            function createNewTitleBlockAndAttach(chart, titleOpts) {
+                var title = new Chart.Title({
+                    ctx: chart.ctx,
+                    options: titleOpts,
+                    chart: chart
+                });
+
+                layout.configure(chart, title, titleOpts);
+                layout.addBox(chart, title);
+                chart.titleBlock = title;
+            }
+
+            return {
+                id: 'title',
+
+                beforeInit: function(chart) {
+                    var titleOpts = chart.options.title;
+
+                    if (titleOpts) {
+                        createNewTitleBlockAndAttach(chart, titleOpts);
+                    }
+                },
+
+                beforeUpdate: function(chart) {
+                    var titleOpts = chart.options.title;
+                    var titleBlock = chart.titleBlock;
+
+                    if (titleOpts) {
+                        helpers.mergeIf(titleOpts, defaults.global.title);
+
+                        if (titleBlock) {
+                            layout.configure(chart, titleBlock, titleOpts);
+                            titleBlock.options = titleOpts;
+                        } else {
+                            createNewTitleBlockAndAttach(chart, titleOpts);
+                        }
+                    } else if (titleBlock) {
+                        Chart.layoutService.removeBox(chart, titleBlock);
+                        delete chart.titleBlock;
+                    }
+                }
+            };
+        };
+
+    },{"25":25,"26":26,"45":45}],52:[function(require,module,exports){
+        'use strict';
+
+        module.exports = function(Chart) {
+
+            // Default config for a category scale
+            var defaultConfig = {
+                position: 'bottom'
+            };
+
+            var DatasetScale = Chart.Scale.extend({
+                /**
+                 * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those
+                 * else fall back to data.labels
+                 * @private
+                 */
+                getLabels: function() {
+                    var data = this.chart.data;
+                    return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;
+                },
+
+                determineDataLimits: function() {
+                    var me = this;
+                    var labels = me.getLabels();
+                    me.minIndex = 0;
+                    me.maxIndex = labels.length - 1;
+                    var findIndex;
+
+                    if (me.options.ticks.min !== undefined) {
+                        // user specified min value
+                        findIndex = labels.indexOf(me.options.ticks.min);
+                        me.minIndex = findIndex !== -1 ? findIndex : me.minIndex;
+                    }
+
+                    if (me.options.ticks.max !== undefined) {
+                        // user specified max value
+                        findIndex = labels.indexOf(me.options.ticks.max);
+                        me.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;
+                    }
+
+                    me.min = labels[me.minIndex];
+                    me.max = labels[me.maxIndex];
+                },
+
+                buildTicks: function() {
+                    var me = this;
+                    var labels = me.getLabels();
+                    // If we are viewing some subset of labels, slice the original array
+                    me.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);
+                },
+
+                getLabelForIndex: function(index, datasetIndex) {
+                    var me = this;
+                    var data = me.chart.data;
+                    var isHorizontal = me.isHorizontal();
+
+                    if (data.yLabels && !isHorizontal) {
+                        return me.getRightValue(data.datasets[datasetIndex].data[index]);
+                    }
+                    return me.ticks[index - me.minIndex];
+                },
+
+                // Used to get data value locations.  Value can either be an index or a numerical value
+                getPixelForValue: function(value, index) {
+                    var me = this;
+                    var offset = me.options.offset;
+                    // 1 is added because we need the length but we have the indexes
+                    var offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);
+
+                    // If value is a data object, then index is the index in the data array,
+                    // not the index of the scale. We need to change that.
+                    var valueCategory;
+                    if (value !== undefined && value !== null) {
+                        valueCategory = me.isHorizontal() ? value.x : value.y;
+                    }
+                    if (valueCategory !== undefined || (value !== undefined && isNaN(index))) {
+                        var labels = me.getLabels();
+                        value = valueCategory || value;
+                        var idx = labels.indexOf(value);
+                        index = idx !== -1 ? idx : index;
+                    }
+
+                    if (me.isHorizontal()) {
+                        var valueWidth = me.width / offsetAmt;
+                        var widthOffset = (valueWidth * (index - me.minIndex));
+
+                        if (offset) {
+                            widthOffset += (valueWidth / 2);
+                        }
+
+                        return me.left + Math.round(widthOffset);
+                    }
+                    var valueHeight = me.height / offsetAmt;
+                    var heightOffset = (valueHeight * (index - me.minIndex));
+
+                    if (offset) {
+                        heightOffset += (valueHeight / 2);
+                    }
+
+                    return me.top + Math.round(heightOffset);
+                },
+                getPixelForTick: function(index) {
+                    return this.getPixelForValue(this.ticks[index], index + this.minIndex, null);
+                },
+                getValueForPixel: function(pixel) {
+                    var me = this;
+                    var offset = me.options.offset;
+                    var value;
+                    var offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);
+                    var horz = me.isHorizontal();
+                    var valueDimension = (horz ? me.width : me.height) / offsetAmt;
+
+                    pixel -= horz ? me.left : me.top;
+
+                    if (offset) {
+                        pixel -= (valueDimension / 2);
+                    }
+
+                    if (pixel <= 0) {
+                        value = 0;
+                    } else {
+                        value = Math.round(pixel / valueDimension);
+                    }
+
+                    return value + me.minIndex;
+                },
+                getBasePixel: function() {
+                    return this.bottom;
+                }
+            });
+
+            Chart.scaleService.registerScaleType('category', DatasetScale, defaultConfig);
+
+        };
+
+    },{}],53:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var helpers = require(45);
+        var Ticks = require(34);
+
+        module.exports = function(Chart) {
+
+            var defaultConfig = {
+                position: 'left',
+                ticks: {
+                    callback: Ticks.formatters.linear
+                }
+            };
+
+            var LinearScale = Chart.LinearScaleBase.extend({
+
+                determineDataLimits: function() {
+                    var me = this;
+                    var opts = me.options;
+                    var chart = me.chart;
+                    var data = chart.data;
+                    var datasets = data.datasets;
+                    var isHorizontal = me.isHorizontal();
+                    var DEFAULT_MIN = 0;
+                    var DEFAULT_MAX = 1;
+
+                    function IDMatches(meta) {
+                        return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;
+                    }
+
+                    // First Calculate the range
+                    me.min = null;
+                    me.max = null;
+
+                    var hasStacks = opts.stacked;
+                    if (hasStacks === undefined) {
+                        helpers.each(datasets, function(dataset, datasetIndex) {
+                            if (hasStacks) {
+                                return;
+                            }
+
+                            var meta = chart.getDatasetMeta(datasetIndex);
+                            if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&
+                                meta.stack !== undefined) {
+                                hasStacks = true;
+                            }
+                        });
+                    }
+
+                    if (opts.stacked || hasStacks) {
+                        var valuesPerStack = {};
+
+                        helpers.each(datasets, function(dataset, datasetIndex) {
+                            var meta = chart.getDatasetMeta(datasetIndex);
+                            var key = [
+                                meta.type,
+                                // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined
+                                ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),
+                                meta.stack
+                            ].join('.');
+
+                            if (valuesPerStack[key] === undefined) {
+                                valuesPerStack[key] = {
+                                    positiveValues: [],
+                                    negativeValues: []
+                                };
+                            }
+
+                            // Store these per type
+                            var positiveValues = valuesPerStack[key].positiveValues;
+                            var negativeValues = valuesPerStack[key].negativeValues;
+
+                            if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {
+                                helpers.each(dataset.data, function(rawValue, index) {
+                                    var value = +me.getRightValue(rawValue);
+                                    if (isNaN(value) || meta.data[index].hidden) {
+                                        return;
+                                    }
+
+                                    positiveValues[index] = positiveValues[index] || 0;
+                                    negativeValues[index] = negativeValues[index] || 0;
+
+                                    if (opts.relativePoints) {
+                                        positiveValues[index] = 100;
+                                    } else if (value < 0) {
+                                        negativeValues[index] += value;
+                                    } else {
+                                        positiveValues[index] += value;
+                                    }
+                                });
+                            }
+                        });
+
+                        helpers.each(valuesPerStack, function(valuesForType) {
+                            var values = valuesForType.positiveValues.concat(valuesForType.negativeValues);
+                            var minVal = helpers.min(values);
+                            var maxVal = helpers.max(values);
+                            me.min = me.min === null ? minVal : Math.min(me.min, minVal);
+                            me.max = me.max === null ? maxVal : Math.max(me.max, maxVal);
+                        });
+
+                    } else {
+                        helpers.each(datasets, function(dataset, datasetIndex) {
+                            var meta = chart.getDatasetMeta(datasetIndex);
+                            if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {
+                                helpers.each(dataset.data, function(rawValue, index) {
+                                    var value = +me.getRightValue(rawValue);
+                                    if (isNaN(value) || meta.data[index].hidden) {
+                                        return;
+                                    }
+
+                                    if (me.min === null) {
+                                        me.min = value;
+                                    } else if (value < me.min) {
+                                        me.min = value;
+                                    }
+
+                                    if (me.max === null) {
+                                        me.max = value;
+                                    } else if (value > me.max) {
+                                        me.max = value;
+                                    }
+                                });
+                            }
+                        });
+                    }
+
+                    me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;
+                    me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;
+
+                    // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero
+                    this.handleTickRangeOptions();
+                },
+                getTickLimit: function() {
+                    var maxTicks;
+                    var me = this;
+                    var tickOpts = me.options.ticks;
+
+                    if (me.isHorizontal()) {
+                        maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));
+                    } else {
+                        // The factor of 2 used to scale the font size has been experimentally determined.
+                        var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);
+                        maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));
+                    }
+
+                    return maxTicks;
+                },
+                // Called after the ticks are built. We need
+                handleDirectionalChanges: function() {
+                    if (!this.isHorizontal()) {
+                        // We are in a vertical orientation. The top value is the highest. So reverse the array
+                        this.ticks.reverse();
+                    }
+                },
+                getLabelForIndex: function(index, datasetIndex) {
+                    return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);
+                },
+                // Utils
+                getPixelForValue: function(value) {
+                    // This must be called after fit has been run so that
+                    // this.left, this.top, this.right, and this.bottom have been defined
+                    var me = this;
+                    var start = me.start;
+
+                    var rightValue = +me.getRightValue(value);
+                    var pixel;
+                    var range = me.end - start;
+
+                    if (me.isHorizontal()) {
+                        pixel = me.left + (me.width / range * (rightValue - start));
+                        return Math.round(pixel);
+                    }
+
+                    pixel = me.bottom - (me.height / range * (rightValue - start));
+                    return Math.round(pixel);
+                },
+                getValueForPixel: function(pixel) {
+                    var me = this;
+                    var isHorizontal = me.isHorizontal();
+                    var innerDimension = isHorizontal ? me.width : me.height;
+                    var offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;
+                    return me.start + ((me.end - me.start) * offset);
+                },
+                getPixelForTick: function(index) {
+                    return this.getPixelForValue(this.ticksAsNumbers[index]);
+                }
+            });
+            Chart.scaleService.registerScaleType('linear', LinearScale, defaultConfig);
+
+        };
+
+    },{"25":25,"34":34,"45":45}],54:[function(require,module,exports){
+        'use strict';
+
+        var helpers = require(45);
+        var Ticks = require(34);
+
+        module.exports = function(Chart) {
+
+            var noop = helpers.noop;
+
+            Chart.LinearScaleBase = Chart.Scale.extend({
+                getRightValue: function(value) {
+                    if (typeof value === 'string') {
+                        return +value;
+                    }
+                    return Chart.Scale.prototype.getRightValue.call(this, value);
+                },
+
+                handleTickRangeOptions: function() {
+                    var me = this;
+                    var opts = me.options;
+                    var tickOpts = opts.ticks;
+
+                    // If we are forcing it to begin at 0, but 0 will already be rendered on the chart,
+                    // do nothing since that would make the chart weird. If the user really wants a weird chart
+                    // axis, they can manually override it
+                    if (tickOpts.beginAtZero) {
+                        var minSign = helpers.sign(me.min);
+                        var maxSign = helpers.sign(me.max);
+
+                        if (minSign < 0 && maxSign < 0) {
+                            // move the top up to 0
+                            me.max = 0;
+                        } else if (minSign > 0 && maxSign > 0) {
+                            // move the bottom down to 0
+                            me.min = 0;
+                        }
+                    }
+
+                    var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;
+                    var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;
+
+                    if (tickOpts.min !== undefined) {
+                        me.min = tickOpts.min;
+                    } else if (tickOpts.suggestedMin !== undefined) {
+                        if (me.min === null) {
+                            me.min = tickOpts.suggestedMin;
+                        } else {
+                            me.min = Math.min(me.min, tickOpts.suggestedMin);
+                        }
+                    }
+
+                    if (tickOpts.max !== undefined) {
+                        me.max = tickOpts.max;
+                    } else if (tickOpts.suggestedMax !== undefined) {
+                        if (me.max === null) {
+                            me.max = tickOpts.suggestedMax;
+                        } else {
+                            me.max = Math.max(me.max, tickOpts.suggestedMax);
+                        }
+                    }
+
+                    if (setMin !== setMax) {
+                        // We set the min or the max but not both.
+                        // So ensure that our range is good
+                        // Inverted or 0 length range can happen when
+                        // ticks.min is set, and no datasets are visible
+                        if (me.min >= me.max) {
+                            if (setMin) {
+                                me.max = me.min + 1;
+                            } else {
+                                me.min = me.max - 1;
+                            }
+                        }
+                    }
+
+                    if (me.min === me.max) {
+                        me.max++;
+
+                        if (!tickOpts.beginAtZero) {
+                            me.min--;
+                        }
+                    }
+                },
+                getTickLimit: noop,
+                handleDirectionalChanges: noop,
+
+                buildTicks: function() {
+                    var me = this;
+                    var opts = me.options;
+                    var tickOpts = opts.ticks;
+
+                    // Figure out what the max number of ticks we can support it is based on the size of
+                    // the axis area. For now, we say that the minimum tick spacing in pixels must be 50
+                    // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on
+                    // the graph. Make sure we always have at least 2 ticks
+                    var maxTicks = me.getTickLimit();
+                    maxTicks = Math.max(2, maxTicks);
+
+                    var numericGeneratorOptions = {
+                        maxTicks: maxTicks,
+                        min: tickOpts.min,
+                        max: tickOpts.max,
+                        stepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)
+                    };
+                    var ticks = me.ticks = Ticks.generators.linear(numericGeneratorOptions, me);
+
+                    me.handleDirectionalChanges();
+
+                    // At this point, we need to update our max and min given the tick values since we have expanded the
+                    // range of the scale
+                    me.max = helpers.max(ticks);
+                    me.min = helpers.min(ticks);
+
+                    if (tickOpts.reverse) {
+                        ticks.reverse();
+
+                        me.start = me.max;
+                        me.end = me.min;
+                    } else {
+                        me.start = me.min;
+                        me.end = me.max;
+                    }
+                },
+                convertTicksToLabels: function() {
+                    var me = this;
+                    me.ticksAsNumbers = me.ticks.slice();
+                    me.zeroLineIndex = me.ticks.indexOf(0);
+
+                    Chart.Scale.prototype.convertTicksToLabels.call(me);
+                }
+            });
+        };
+
+    },{"34":34,"45":45}],55:[function(require,module,exports){
+        'use strict';
+
+        var helpers = require(45);
+        var Ticks = require(34);
+
+        module.exports = function(Chart) {
+
+            var defaultConfig = {
+                position: 'left',
+
+                // label settings
+                ticks: {
+                    callback: Ticks.formatters.logarithmic
+                }
+            };
+
+            var LogarithmicScale = Chart.Scale.extend({
+                determineDataLimits: function() {
+                    var me = this;
+                    var opts = me.options;
+                    var tickOpts = opts.ticks;
+                    var chart = me.chart;
+                    var data = chart.data;
+                    var datasets = data.datasets;
+                    var valueOrDefault = helpers.valueOrDefault;
+                    var isHorizontal = me.isHorizontal();
+                    function IDMatches(meta) {
+                        return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;
+                    }
+
+                    // Calculate Range
+                    me.min = null;
+                    me.max = null;
+                    me.minNotZero = null;
+
+                    var hasStacks = opts.stacked;
+                    if (hasStacks === undefined) {
+                        helpers.each(datasets, function(dataset, datasetIndex) {
+                            if (hasStacks) {
+                                return;
+                            }
+
+                            var meta = chart.getDatasetMeta(datasetIndex);
+                            if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&
+                                meta.stack !== undefined) {
+                                hasStacks = true;
+                            }
+                        });
+                    }
+
+                    if (opts.stacked || hasStacks) {
+                        var valuesPerStack = {};
+
+                        helpers.each(datasets, function(dataset, datasetIndex) {
+                            var meta = chart.getDatasetMeta(datasetIndex);
+                            var key = [
+                                meta.type,
+                                // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined
+                                ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),
+                                meta.stack
+                            ].join('.');
+
+                            if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {
+                                if (valuesPerStack[key] === undefined) {
+                                    valuesPerStack[key] = [];
+                                }
+
+                                helpers.each(dataset.data, function(rawValue, index) {
+                                    var values = valuesPerStack[key];
+                                    var value = +me.getRightValue(rawValue);
+                                    if (isNaN(value) || meta.data[index].hidden) {
+                                        return;
+                                    }
+
+                                    values[index] = values[index] || 0;
+
+                                    if (opts.relativePoints) {
+                                        values[index] = 100;
+                                    } else {
+                                        // Don't need to split positive and negative since the log scale can't handle a 0 crossing
+                                        values[index] += value;
+                                    }
+                                });
+                            }
+                        });
+
+                        helpers.each(valuesPerStack, function(valuesForType) {
+                            var minVal = helpers.min(valuesForType);
+                            var maxVal = helpers.max(valuesForType);
+                            me.min = me.min === null ? minVal : Math.min(me.min, minVal);
+                            me.max = me.max === null ? maxVal : Math.max(me.max, maxVal);
+                        });
+
+                    } else {
+                        helpers.each(datasets, function(dataset, datasetIndex) {
+                            var meta = chart.getDatasetMeta(datasetIndex);
+                            if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {
+                                helpers.each(dataset.data, function(rawValue, index) {
+                                    var value = +me.getRightValue(rawValue);
+                                    if (isNaN(value) || meta.data[index].hidden) {
+                                        return;
+                                    }
+
+                                    if (me.min === null) {
+                                        me.min = value;
+                                    } else if (value < me.min) {
+                                        me.min = value;
+                                    }
+
+                                    if (me.max === null) {
+                                        me.max = value;
+                                    } else if (value > me.max) {
+                                        me.max = value;
+                                    }
+
+                                    if (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {
+                                        me.minNotZero = value;
+                                    }
+                                });
+                            }
+                        });
+                    }
+
+                    me.min = valueOrDefault(tickOpts.min, me.min);
+                    me.max = valueOrDefault(tickOpts.max, me.max);
+
+                    if (me.min === me.max) {
+                        if (me.min !== 0 && me.min !== null) {
+                            me.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);
+                            me.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);
+                        } else {
+                            me.min = 1;
+                            me.max = 10;
+                        }
+                    }
+                },
+                buildTicks: function() {
+                    var me = this;
+                    var opts = me.options;
+                    var tickOpts = opts.ticks;
+
+                    var generationOptions = {
+                        min: tickOpts.min,
+                        max: tickOpts.max
+                    };
+                    var ticks = me.ticks = Ticks.generators.logarithmic(generationOptions, me);
+
+                    if (!me.isHorizontal()) {
+                        // We are in a vertical orientation. The top value is the highest. So reverse the array
+                        ticks.reverse();
+                    }
+
+                    // At this point, we need to update our max and min given the tick values since we have expanded the
+                    // range of the scale
+                    me.max = helpers.max(ticks);
+                    me.min = helpers.min(ticks);
+
+                    if (tickOpts.reverse) {
+                        ticks.reverse();
+
+                        me.start = me.max;
+                        me.end = me.min;
+                    } else {
+                        me.start = me.min;
+                        me.end = me.max;
+                    }
+                },
+                convertTicksToLabels: function() {
+                    this.tickValues = this.ticks.slice();
+
+                    Chart.Scale.prototype.convertTicksToLabels.call(this);
+                },
+                // Get the correct tooltip label
+                getLabelForIndex: function(index, datasetIndex) {
+                    return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);
+                },
+                getPixelForTick: function(index) {
+                    return this.getPixelForValue(this.tickValues[index]);
+                },
+                getPixelForValue: function(value) {
+                    var me = this;
+                    var start = me.start;
+                    var newVal = +me.getRightValue(value);
+                    var opts = me.options;
+                    var tickOpts = opts.ticks;
+                    var innerDimension, pixel, range;
+
+                    if (me.isHorizontal()) {
+                        range = helpers.log10(me.end) - helpers.log10(start); // todo: if start === 0
+                        if (newVal === 0) {
+                            pixel = me.left;
+                        } else {
+                            innerDimension = me.width;
+                            pixel = me.left + (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start)));
+                        }
+                    } else {
+                        // Bottom - top since pixels increase downward on a screen
+                        innerDimension = me.height;
+                        if (start === 0 && !tickOpts.reverse) {
+                            range = helpers.log10(me.end) - helpers.log10(me.minNotZero);
+                            if (newVal === start) {
+                                pixel = me.bottom;
+                            } else if (newVal === me.minNotZero) {
+                                pixel = me.bottom - innerDimension * 0.02;
+                            } else {
+                                pixel = me.bottom - innerDimension * 0.02 - (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero)));
+                            }
+                        } else if (me.end === 0 && tickOpts.reverse) {
+                            range = helpers.log10(me.start) - helpers.log10(me.minNotZero);
+                            if (newVal === me.end) {
+                                pixel = me.top;
+                            } else if (newVal === me.minNotZero) {
+                                pixel = me.top + innerDimension * 0.02;
+                            } else {
+                                pixel = me.top + innerDimension * 0.02 + (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero)));
+                            }
+                        } else if (newVal === 0) {
+                            pixel = tickOpts.reverse ? me.top : me.bottom;
+                        } else {
+                            range = helpers.log10(me.end) - helpers.log10(start);
+                            innerDimension = me.height;
+                            pixel = me.bottom - (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start)));
+                        }
+                    }
+                    return pixel;
+                },
+                getValueForPixel: function(pixel) {
+                    var me = this;
+                    var range = helpers.log10(me.end) - helpers.log10(me.start);
+                    var value, innerDimension;
+
+                    if (me.isHorizontal()) {
+                        innerDimension = me.width;
+                        value = me.start * Math.pow(10, (pixel - me.left) * range / innerDimension);
+                    } else { // todo: if start === 0
+                        innerDimension = me.height;
+                        value = Math.pow(10, (me.bottom - pixel) * range / innerDimension) / me.start;
+                    }
+                    return value;
+                }
+            });
+            Chart.scaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);
+
+        };
+
+    },{"34":34,"45":45}],56:[function(require,module,exports){
+        'use strict';
+
+        var defaults = require(25);
+        var helpers = require(45);
+        var Ticks = require(34);
+
+        module.exports = function(Chart) {
+
+            var globalDefaults = defaults.global;
+
+            var defaultConfig = {
+                display: true,
+
+                // Boolean - Whether to animate scaling the chart from the centre
+                animate: true,
+                position: 'chartArea',
+
+                angleLines: {
+                    display: true,
+                    color: 'rgba(0, 0, 0, 0.1)',
+                    lineWidth: 1
+                },
+
+                gridLines: {
+                    circular: false
+                },
+
+                // label settings
+                ticks: {
+                    // Boolean - Show a backdrop to the scale label
+                    showLabelBackdrop: true,
+
+                    // String - The colour of the label backdrop
+                    backdropColor: 'rgba(255,255,255,0.75)',
+
+                    // Number - The backdrop padding above & below the label in pixels
+                    backdropPaddingY: 2,
+
+                    // Number - The backdrop padding to the side of the label in pixels
+                    backdropPaddingX: 2,
+
+                    callback: Ticks.formatters.linear
+                },
+
+                pointLabels: {
+                    // Boolean - if true, show point labels
+                    display: true,
+
+                    // Number - Point label font size in pixels
+                    fontSize: 10,
+
+                    // Function - Used to convert point labels
+                    callback: function(label) {
+                        return label;
+                    }
+                }
+            };
+
+            function getValueCount(scale) {
+                var opts = scale.options;
+                return opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;
+            }
+
+            function getPointLabelFontOptions(scale) {
+                var pointLabelOptions = scale.options.pointLabels;
+                var fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);
+                var fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);
+                var fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);
+                var font = helpers.fontString(fontSize, fontStyle, fontFamily);
+
+                return {
+                    size: fontSize,
+                    style: fontStyle,
+                    family: fontFamily,
+                    font: font
+                };
+            }
+
+            function measureLabelSize(ctx, fontSize, label) {
+                if (helpers.isArray(label)) {
+                    return {
+                        w: helpers.longestText(ctx, ctx.font, label),
+                        h: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)
+                    };
+                }
+
+                return {
+                    w: ctx.measureText(label).width,
+                    h: fontSize
+                };
+            }
+
+            function determineLimits(angle, pos, size, min, max) {
+                if (angle === min || angle === max) {
+                    return {
+                        start: pos - (size / 2),
+                        end: pos + (size / 2)
+                    };
+                } else if (angle < min || angle > max) {
+                    return {
+                        start: pos - size - 5,
+                        end: pos
+                    };
+                }
+
+                return {
+                    start: pos,
+                    end: pos + size + 5
+                };
+            }
+
+            /**
+             * Helper function to fit a radial linear scale with point labels
+             */
+            function fitWithPointLabels(scale) {
+                /*
+		 * Right, this is really confusing and there is a lot of maths going on here
+		 * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9
+		 *
+		 * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif
+		 *
+		 * Solution:
+		 *
+		 * We assume the radius of the polygon is half the size of the canvas at first
+		 * at each index we check if the text overlaps.
+		 *
+		 * Where it does, we store that angle and that index.
+		 *
+		 * After finding the largest index and angle we calculate how much we need to remove
+		 * from the shape radius to move the point inwards by that x.
+		 *
+		 * We average the left and right distances to get the maximum shape radius that can fit in the box
+		 * along with labels.
+		 *
+		 * Once we have that, we can find the centre point for the chart, by taking the x text protrusion
+		 * on each side, removing that from the size, halving it and adding the left x protrusion width.
+		 *
+		 * This will mean we have a shape fitted to the canvas, as large as it can be with the labels
+		 * and position it in the most space efficient manner
+		 *
+		 * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif
+		 */
+
+                var plFont = getPointLabelFontOptions(scale);
+
+                // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.
+                // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points
+                var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);
+                var furthestLimits = {
+                    r: scale.width,
+                    l: 0,
+                    t: scale.height,
+                    b: 0
+                };
+                var furthestAngles = {};
+                var i, textSize, pointPosition;
+
+                scale.ctx.font = plFont.font;
+                scale._pointLabelSizes = [];
+
+                var valueCount = getValueCount(scale);
+                for (i = 0; i < valueCount; i++) {
+                    pointPosition = scale.getPointPosition(i, largestPossibleRadius);
+                    textSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');
+                    scale._pointLabelSizes[i] = textSize;
+
+                    // Add quarter circle to make degree 0 mean top of circle
+                    var angleRadians = scale.getIndexAngle(i);
+                    var angle = helpers.toDegrees(angleRadians) % 360;
+                    var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);
+                    var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);
+
+                    if (hLimits.start < furthestLimits.l) {
+                        furthestLimits.l = hLimits.start;
+                        furthestAngles.l = angleRadians;
+                    }
+
+                    if (hLimits.end > furthestLimits.r) {
+                        furthestLimits.r = hLimits.end;
+                        furthestAngles.r = angleRadians;
+                    }
+
+                    if (vLimits.start < furthestLimits.t) {
+                        furthestLimits.t = vLimits.start;
+                        furthestAngles.t = angleRadians;
+                    }
+
+                    if (vLimits.end > furthestLimits.b) {
+                        furthestLimits.b = vLimits.end;
+                        furthestAngles.b = angleRadians;
+                    }
+                }
+
+                scale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);
+            }
+
+            /**
+             * Helper function to fit a radial linear scale with no point labels
+             */
+            function fit(scale) {
+                var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);
+                scale.drawingArea = Math.round(largestPossibleRadius);
+                scale.setCenterPoint(0, 0, 0, 0);
+            }
+
+            function getTextAlignForAngle(angle) {
+                if (angle === 0 || angle === 180) {
+                    return 'center';
+                } else if (angle < 180) {
+                    return 'left';
+                }
+
+                return 'right';
+            }
+
+            function fillText(ctx, text, position, fontSize) {
+                if (helpers.isArray(text)) {
+                    var y = position.y;
+                    var spacing = 1.5 * fontSize;
+
+                    for (var i = 0; i < text.length; ++i) {
+                        ctx.fillText(text[i], position.x, y);
+                        y += spacing;
+                    }
+                } else {
+                    ctx.fillText(text, position.x, position.y);
+                }
+            }
+
+            function adjustPointPositionForLabelHeight(angle, textSize, position) {
+                if (angle === 90 || angle === 270) {
+                    position.y -= (textSize.h / 2);
+                } else if (angle > 270 || angle < 90) {
+                    position.y -= textSize.h;
+                }
+            }
+
+            function drawPointLabels(scale) {
+                var ctx = scale.ctx;
+                var valueOrDefault = helpers.valueOrDefault;
+                var opts = scale.options;
+                var angleLineOpts = opts.angleLines;
+                var pointLabelOpts = opts.pointLabels;
+
+                ctx.lineWidth = angleLineOpts.lineWidth;
+                ctx.strokeStyle = angleLineOpts.color;
+
+                var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);
+
+                // Point Label Font
+                var plFont = getPointLabelFontOptions(scale);
+
+                ctx.textBaseline = 'top';
+
+                for (var i = getValueCount(scale) - 1; i >= 0; i--) {
+                    if (angleLineOpts.display) {
+                        var outerPosition = scale.getPointPosition(i, outerDistance);
+                        ctx.beginPath();
+                        ctx.moveTo(scale.xCenter, scale.yCenter);
+                        ctx.lineTo(outerPosition.x, outerPosition.y);
+                        ctx.stroke();
+                        ctx.closePath();
+                    }
+
+                    if (pointLabelOpts.display) {
+                        // Extra 3px out for some label spacing
+                        var pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);
+
+                        // Keep this in loop since we may support array properties here
+                        var pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor);
+                        ctx.font = plFont.font;
+                        ctx.fillStyle = pointLabelFontColor;
+
+                        var angleRadians = scale.getIndexAngle(i);
+                        var angle = helpers.toDegrees(angleRadians);
+                        ctx.textAlign = getTextAlignForAngle(angle);
+                        adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);
+                        fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);
+                    }
+                }
+            }
+
+            function drawRadiusLine(scale, gridLineOpts, radius, index) {
+                var ctx = scale.ctx;
+                ctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);
+                ctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);
+
+                if (scale.options.gridLines.circular) {
+                    // Draw circular arcs between the points
+                    ctx.beginPath();
+                    ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);
+                    ctx.closePath();
+                    ctx.stroke();
+                } else {
+                    // Draw straight lines connecting each index
+                    var valueCount = getValueCount(scale);
+
+                    if (valueCount === 0) {
+                        return;
+                    }
+
+                    ctx.beginPath();
+                    var pointPosition = scale.getPointPosition(0, radius);
+                    ctx.moveTo(pointPosition.x, pointPosition.y);
+
+                    for (var i = 1; i < valueCount; i++) {
+                        pointPosition = scale.getPointPosition(i, radius);
+                        ctx.lineTo(pointPosition.x, pointPosition.y);
+                    }
+
+                    ctx.closePath();
+                    ctx.stroke();
+                }
+            }
+
+            function numberOrZero(param) {
+                return helpers.isNumber(param) ? param : 0;
+            }
+
+            var LinearRadialScale = Chart.LinearScaleBase.extend({
+                setDimensions: function() {
+                    var me = this;
+                    var opts = me.options;
+                    var tickOpts = opts.ticks;
+                    // Set the unconstrained dimension before label rotation
+                    me.width = me.maxWidth;
+                    me.height = me.maxHeight;
+                    me.xCenter = Math.round(me.width / 2);
+                    me.yCenter = Math.round(me.height / 2);
+
+                    var minSize = helpers.min([me.height, me.width]);
+                    var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);
+                    me.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);
+                },
+                determineDataLimits: function() {
+                    var me = this;
+                    var chart = me.chart;
+                    var min = Number.POSITIVE_INFINITY;
+                    var max = Number.NEGATIVE_INFINITY;
+
+                    helpers.each(chart.data.datasets, function(dataset, datasetIndex) {
+                        if (chart.isDatasetVisible(datasetIndex)) {
+                            var meta = chart.getDatasetMeta(datasetIndex);
+
+                            helpers.each(dataset.data, function(rawValue, index) {
+                                var value = +me.getRightValue(rawValue);
+                                if (isNaN(value) || meta.data[index].hidden) {
+                                    return;
+                                }
+
+                                min = Math.min(value, min);
+                                max = Math.max(value, max);
+                            });
+                        }
+                    });
+
+                    me.min = (min === Number.POSITIVE_INFINITY ? 0 : min);
+                    me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);
+
+                    // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero
+                    me.handleTickRangeOptions();
+                },
+                getTickLimit: function() {
+                    var tickOpts = this.options.ticks;
+                    var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);
+                    return Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));
+                },
+                convertTicksToLabels: function() {
+                    var me = this;
+
+                    Chart.LinearScaleBase.prototype.convertTicksToLabels.call(me);
+
+                    // Point labels
+                    me.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);
+                },
+                getLabelForIndex: function(index, datasetIndex) {
+                    return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);
+                },
+                fit: function() {
+                    if (this.options.pointLabels.display) {
+                        fitWithPointLabels(this);
+                    } else {
+                        fit(this);
+                    }
+                },
+                /**
+                 * Set radius reductions and determine new radius and center point
+                 * @private
+                 */
+                setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {
+                    var me = this;
+                    var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);
+                    var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);
+                    var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);
+                    var radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);
+
+                    radiusReductionLeft = numberOrZero(radiusReductionLeft);
+                    radiusReductionRight = numberOrZero(radiusReductionRight);
+                    radiusReductionTop = numberOrZero(radiusReductionTop);
+                    radiusReductionBottom = numberOrZero(radiusReductionBottom);
+
+                    me.drawingArea = Math.min(
+                        Math.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),
+                        Math.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));
+                    me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);
+                },
+                setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {
+                    var me = this;
+                    var maxRight = me.width - rightMovement - me.drawingArea;
+                    var maxLeft = leftMovement + me.drawingArea;
+                    var maxTop = topMovement + me.drawingArea;
+                    var maxBottom = me.height - bottomMovement - me.drawingArea;
+
+                    me.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);
+                    me.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);
+                },
+
+                getIndexAngle: function(index) {
+                    var angleMultiplier = (Math.PI * 2) / getValueCount(this);
+                    var startAngle = this.chart.options && this.chart.options.startAngle ?
+                        this.chart.options.startAngle :
+                        0;
+
+                    var startAngleRadians = startAngle * Math.PI * 2 / 360;
+
+                    // Start from the top instead of right, so remove a quarter of the circle
+                    return index * angleMultiplier + startAngleRadians;
+                },
+                getDistanceFromCenterForValue: function(value) {
+                    var me = this;
+
+                    if (value === null) {
+                        return 0; // null always in center
+                    }
+
+                    // Take into account half font size + the yPadding of the top value
+                    var scalingFactor = me.drawingArea / (me.max - me.min);
+                    if (me.options.ticks.reverse) {
+                        return (me.max - value) * scalingFactor;
+                    }
+                    return (value - me.min) * scalingFactor;
+                },
+                getPointPosition: function(index, distanceFromCenter) {
+                    var me = this;
+                    var thisAngle = me.getIndexAngle(index) - (Math.PI / 2);
+                    return {
+                        x: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,
+                        y: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter
+                    };
+                },
+                getPointPositionForValue: function(index, value) {
+                    return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));
+                },
+
+                getBasePosition: function() {
+                    var me = this;
+                    var min = me.min;
+                    var max = me.max;
+
+                    return me.getPointPositionForValue(0,
+                        me.beginAtZero ? 0 :
+                            min < 0 && max < 0 ? max :
+                                min > 0 && max > 0 ? min :
+                                    0);
+                },
+
+                draw: function() {
+                    var me = this;
+                    var opts = me.options;
+                    var gridLineOpts = opts.gridLines;
+                    var tickOpts = opts.ticks;
+                    var valueOrDefault = helpers.valueOrDefault;
+
+                    if (opts.display) {
+                        var ctx = me.ctx;
+                        var startAngle = this.getIndexAngle(0);
+
+                        // Tick Font
+                        var tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);
+                        var tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);
+                        var tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);
+                        var tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);
+
+                        helpers.each(me.ticks, function(label, index) {
+                            // Don't draw a centre value (if it is minimum)
+                            if (index > 0 || tickOpts.reverse) {
+                                var yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);
+
+                                // Draw circular lines around the scale
+                                if (gridLineOpts.display && index !== 0) {
+                                    drawRadiusLine(me, gridLineOpts, yCenterOffset, index);
+                                }
+
+                                if (tickOpts.display) {
+                                    var tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);
+                                    ctx.font = tickLabelFont;
+
+                                    ctx.save();
+                                    ctx.translate(me.xCenter, me.yCenter);
+                                    ctx.rotate(startAngle);
+
+                                    if (tickOpts.showLabelBackdrop) {
+                                        var labelWidth = ctx.measureText(label).width;
+                                        ctx.fillStyle = tickOpts.backdropColor;
+                                        ctx.fillRect(
+                                            -labelWidth / 2 - tickOpts.backdropPaddingX,
+                                            -yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,
+                                            labelWidth + tickOpts.backdropPaddingX * 2,
+                                            tickFontSize + tickOpts.backdropPaddingY * 2
+                                        );
+                                    }
+
+                                    ctx.textAlign = 'center';
+                                    ctx.textBaseline = 'middle';
+                                    ctx.fillStyle = tickFontColor;
+                                    ctx.fillText(label, 0, -yCenterOffset);
+                                    ctx.restore();
+                                }
+                            }
+                        });
+
+                        if (opts.angleLines.display || opts.pointLabels.display) {
+                            drawPointLabels(me);
+                        }
+                    }
+                }
+            });
+            Chart.scaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);
+
+        };
+
+    },{"25":25,"34":34,"45":45}],57:[function(require,module,exports){
+        /* global window: false */
+        'use strict';
+
+        var moment = require(1);
+        moment = typeof moment === 'function' ? moment : window.moment;
+
+        var defaults = require(25);
+        var helpers = require(45);
+
+// Integer constants are from the ES6 spec.
+        var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
+        var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
+
+        var INTERVALS = {
+            millisecond: {
+                common: true,
+                size: 1,
+                steps: [1, 2, 5, 10, 20, 50, 100, 250, 500]
+            },
+            second: {
+                common: true,
+                size: 1000,
+                steps: [1, 2, 5, 10, 30]
+            },
+            minute: {
+                common: true,
+                size: 60000,
+                steps: [1, 2, 5, 10, 30]
+            },
+            hour: {
+                common: true,
+                size: 3600000,
+                steps: [1, 2, 3, 6, 12]
+            },
+            day: {
+                common: true,
+                size: 86400000,
+                steps: [1, 2, 5]
+            },
+            week: {
+                common: false,
+                size: 604800000,
+                steps: [1, 2, 3, 4]
+            },
+            month: {
+                common: true,
+                size: 2.628e9,
+                steps: [1, 2, 3]
+            },
+            quarter: {
+                common: false,
+                size: 7.884e9,
+                steps: [1, 2, 3, 4]
+            },
+            year: {
+                common: true,
+                size: 3.154e10
+            }
+        };
+
+        var UNITS = Object.keys(INTERVALS);
+
+        function sorter(a, b) {
+            return a - b;
+        }
+
+        function arrayUnique(items) {
+            var hash = {};
+            var out = [];
+            var i, ilen, item;
+
+            for (i = 0, ilen = items.length; i < ilen; ++i) {
+                item = items[i];
+                if (!hash[item]) {
+                    hash[item] = true;
+                    out.push(item);
+                }
+            }
+
+            return out;
+        }
+
+        /**
+         * Returns an array of {time, pos} objects used to interpolate a specific `time` or position
+         * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is
+         * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other
+         * extremity (left + width or top + height). Note that it would be more optimized to directly
+         * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need
+         * to create the lookup table. The table ALWAYS contains at least two items: min and max.
+         *
+         * @param {Number[]} timestamps - timestamps sorted from lowest to highest.
+         * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min
+         * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.
+         * If 'series', timestamps will be positioned at the same distance from each other. In this
+         * case, only timestamps that break the time linearity are registered, meaning that in the
+         * best case, all timestamps are linear, the table contains only min and max.
+         */
+        function buildLookupTable(timestamps, min, max, distribution) {
+            if (distribution === 'linear' || !timestamps.length) {
+                return [
+                    {time: min, pos: 0},
+                    {time: max, pos: 1}
+                ];
+            }
+
+            var table = [];
+            var items = [min];
+            var i, ilen, prev, curr, next;
+
+            for (i = 0, ilen = timestamps.length; i < ilen; ++i) {
+                curr = timestamps[i];
+                if (curr > min && curr < max) {
+                    items.push(curr);
+                }
+            }
+
+            items.push(max);
+
+            for (i = 0, ilen = items.length; i < ilen; ++i) {
+                next = items[i + 1];
+                prev = items[i - 1];
+                curr = items[i];
+
+                // only add points that breaks the scale linearity
+                if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {
+                    table.push({time: curr, pos: i / (ilen - 1)});
+                }
+            }
+
+            return table;
+        }
+
+// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/
+        function lookup(table, key, value) {
+            var lo = 0;
+            var hi = table.length - 1;
+            var mid, i0, i1;
+
+            while (lo >= 0 && lo <= hi) {
+                mid = (lo + hi) >> 1;
+                i0 = table[mid - 1] || null;
+                i1 = table[mid];
+
+                if (!i0) {
+                    // given value is outside table (before first item)
+                    return {lo: null, hi: i1};
+                } else if (i1[key] < value) {
+                    lo = mid + 1;
+                } else if (i0[key] > value) {
+                    hi = mid - 1;
+                } else {
+                    return {lo: i0, hi: i1};
+                }
+            }
+
+            // given value is outside table (after last item)
+            return {lo: i1, hi: null};
+        }
+
+        /**
+         * Linearly interpolates the given source `value` using the table items `skey` values and
+         * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')
+         * returns the position for a timestamp equal to 42. If value is out of bounds, values at
+         * index [0, 1] or [n - 1, n] are used for the interpolation.
+         */
+        function interpolate(table, skey, sval, tkey) {
+            var range = lookup(table, skey, sval);
+
+            // Note: the lookup table ALWAYS contains at least 2 items (min and max)
+            var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;
+            var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;
+
+            var span = next[skey] - prev[skey];
+            var ratio = span ? (sval - prev[skey]) / span : 0;
+            var offset = (next[tkey] - prev[tkey]) * ratio;
+
+            return prev[tkey] + offset;
+        }
+
+        /**
+         * Convert the given value to a moment object using the given time options.
+         * @see http://momentjs.com/docs/#/parsing/
+         */
+        function momentify(value, options) {
+            var parser = options.parser;
+            var format = options.parser || options.format;
+
+            if (typeof parser === 'function') {
+                return parser(value);
+            }
+
+            if (typeof value === 'string' && typeof format === 'string') {
+                return moment(value, format);
+            }
+
+            if (!(value instanceof moment)) {
+                value = moment(value);
+            }
+
+            if (value.isValid()) {
+                return value;
+            }
+
+            // Labels are in an incompatible moment format and no `parser` has been provided.
+            // The user might still use the deprecated `format` option to convert his inputs.
+            if (typeof format === 'function') {
+                return format(value);
+            }
+
+            return value;
+        }
+
+        function parse(input, scale) {
+            if (helpers.isNullOrUndef(input)) {
+                return null;
+            }
+
+            var options = scale.options.time;
+            var value = momentify(scale.getRightValue(input), options);
+            if (!value.isValid()) {
+                return null;
+            }
+
+            if (options.round) {
+                value.startOf(options.round);
+            }
+
+            return value.valueOf();
+        }
+
+        /**
+         * Returns the number of unit to skip to be able to display up to `capacity` number of ticks
+         * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.
+         */
+        function determineStepSize(min, max, unit, capacity) {
+            var range = max - min;
+            var interval = INTERVALS[unit];
+            var milliseconds = interval.size;
+            var steps = interval.steps;
+            var i, ilen, factor;
+
+            if (!steps) {
+                return Math.ceil(range / ((capacity || 1) * milliseconds));
+            }
+
+            for (i = 0, ilen = steps.length; i < ilen; ++i) {
+                factor = steps[i];
+                if (Math.ceil(range / (milliseconds * factor)) <= capacity) {
+                    break;
+                }
+            }
+
+            return factor;
+        }
+
+        /**
+         * Figures out what unit results in an appropriate number of auto-generated ticks
+         */
+        function determineUnitForAutoTicks(minUnit, min, max, capacity) {
+            var ilen = UNITS.length;
+            var i, interval, factor;
+
+            for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {
+                interval = INTERVALS[UNITS[i]];
+                factor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;
+
+                if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {
+                    return UNITS[i];
+                }
+            }
+
+            return UNITS[ilen - 1];
+        }
+
+        /**
+         * Figures out what unit to format a set of ticks with
+         */
+        function determineUnitForFormatting(ticks, minUnit, min, max) {
+            var duration = moment.duration(moment(max).diff(moment(min)));
+            var ilen = UNITS.length;
+            var i, unit;
+
+            for (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {
+                unit = UNITS[i];
+                if (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {
+                    return unit;
+                }
+            }
+
+            return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];
+        }
+
+        function determineMajorUnit(unit) {
+            for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {
+                if (INTERVALS[UNITS[i]].common) {
+                    return UNITS[i];
+                }
+            }
+        }
+
+        /**
+         * Generates a maximum of `capacity` timestamps between min and max, rounded to the
+         * `minor` unit, aligned on the `major` unit and using the given scale time `options`.
+         * Important: this method can return ticks outside the min and max range, it's the
+         * responsibility of the calling code to clamp values if needed.
+         */
+        function generate(min, max, capacity, options) {
+            var timeOpts = options.time;
+            var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);
+            var major = determineMajorUnit(minor);
+            var stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);
+            var weekday = minor === 'week' ? timeOpts.isoWeekday : false;
+            var majorTicksEnabled = options.ticks.major.enabled;
+            var interval = INTERVALS[minor];
+            var first = moment(min);
+            var last = moment(max);
+            var ticks = [];
+            var time;
+
+            if (!stepSize) {
+                stepSize = determineStepSize(min, max, minor, capacity);
+            }
+
+            // For 'week' unit, handle the first day of week option
+            if (weekday) {
+                first = first.isoWeekday(weekday);
+                last = last.isoWeekday(weekday);
+            }
+
+            // Align first/last ticks on unit
+            first = first.startOf(weekday ? 'day' : minor);
+            last = last.startOf(weekday ? 'day' : minor);
+
+            // Make sure that the last tick include max
+            if (last < max) {
+                last.add(1, minor);
+            }
+
+            time = moment(first);
+
+            if (majorTicksEnabled && major && !weekday && !timeOpts.round) {
+                // Align the first tick on the previous `minor` unit aligned on the `major` unit:
+                // we first aligned time on the previous `major` unit then add the number of full
+                // stepSize there is between first and the previous major time.
+                time.startOf(major);
+                time.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);
+            }
+
+            for (; time < last; time.add(stepSize, minor)) {
+                ticks.push(+time);
+            }
+
+            ticks.push(+time);
+
+            return ticks;
+        }
+
+        /**
+         * Returns the right and left offsets from edges in the form of {left, right}.
+         * Offsets are added when the `offset` option is true.
+         */
+        function computeOffsets(table, ticks, min, max, options) {
+            var left = 0;
+            var right = 0;
+            var upper, lower;
+
+            if (options.offset && ticks.length) {
+                if (!options.time.min) {
+                    upper = ticks.length > 1 ? ticks[1] : max;
+                    lower = ticks[0];
+                    left = (
+                        interpolate(table, 'time', upper, 'pos') -
+                        interpolate(table, 'time', lower, 'pos')
+                    ) / 2;
+                }
+                if (!options.time.max) {
+                    upper = ticks[ticks.length - 1];
+                    lower = ticks.length > 1 ? ticks[ticks.length - 2] : min;
+                    right = (
+                        interpolate(table, 'time', upper, 'pos') -
+                        interpolate(table, 'time', lower, 'pos')
+                    ) / 2;
+                }
+            }
+
+            return {left: left, right: right};
+        }
+
+        function ticksFromTimestamps(values, majorUnit) {
+            var ticks = [];
+            var i, ilen, value, major;
+
+            for (i = 0, ilen = values.length; i < ilen; ++i) {
+                value = values[i];
+                major = majorUnit ? value === +moment(value).startOf(majorUnit) : false;
+
+                ticks.push({
+                    value: value,
+                    major: major
+                });
+            }
+
+            return ticks;
+        }
+
+        module.exports = function(Chart) {
+
+            var defaultConfig = {
+                position: 'bottom',
+
+                /**
+                 * Data distribution along the scale:
+                 * - 'linear': data are spread according to their time (distances can vary),
+                 * - 'series': data are spread at the same distance from each other.
+                 * @see https://github.com/chartjs/Chart.js/pull/4507
+                 * @since 2.7.0
+                 */
+                distribution: 'linear',
+
+                /**
+                 * Scale boundary strategy (bypassed by min/max time options)
+                 * - `data`: make sure data are fully visible, ticks outside are removed
+                 * - `ticks`: make sure ticks are fully visible, data outside are truncated
+                 * @see https://github.com/chartjs/Chart.js/pull/4556
+                 * @since 2.7.0
+                 */
+                bounds: 'data',
+
+                time: {
+                    parser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment
+                    format: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/
+                    unit: false, // false == automatic or override with week, month, year, etc.
+                    round: false, // none, or override with week, month, year, etc.
+                    displayFormat: false, // DEPRECATED
+                    isoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/
+                    minUnit: 'millisecond',
+
+                    // defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/
+                    displayFormats: {
+                        millisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,
+                        second: 'h:mm:ss a', // 11:20:01 AM
+                        minute: 'h:mm a', // 11:20 AM
+                        hour: 'hA', // 5PM
+                        day: 'MMM D', // Sep 4
+                        week: 'll', // Week 46, or maybe "[W]WW - YYYY" ?
+                        month: 'MMM YYYY', // Sept 2015
+                        quarter: '[Q]Q - YYYY', // Q3
+                        year: 'YYYY' // 2015
+                    },
+                },
+                ticks: {
+                    autoSkip: false,
+
+                    /**
+                     * Ticks generation input values:
+                     * - 'auto': generates "optimal" ticks based on scale size and time options.
+                     * - 'data': generates ticks from data (including labels from data {t|x|y} objects).
+                     * - 'labels': generates ticks from user given `data.labels` values ONLY.
+                     * @see https://github.com/chartjs/Chart.js/pull/4507
+                     * @since 2.7.0
+                     */
+                    source: 'auto',
+
+                    major: {
+                        enabled: false
+                    }
+                }
+            };
+
+            var TimeScale = Chart.Scale.extend({
+                initialize: function() {
+                    if (!moment) {
+                        throw new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');
+                    }
+
+                    this.mergeTicksOptions();
+
+                    Chart.Scale.prototype.initialize.call(this);
+                },
+
+                update: function() {
+                    var me = this;
+                    var options = me.options;
+
+                    // DEPRECATIONS: output a message only one time per update
+                    if (options.time && options.time.format) {
+                        console.warn('options.time.format is deprecated and replaced by options.time.parser.');
+                    }
+
+                    return Chart.Scale.prototype.update.apply(me, arguments);
+                },
+
+                /**
+                 * Allows data to be referenced via 't' attribute
+                 */
+                getRightValue: function(rawValue) {
+                    if (rawValue && rawValue.t !== undefined) {
+                        rawValue = rawValue.t;
+                    }
+                    return Chart.Scale.prototype.getRightValue.call(this, rawValue);
+                },
+
+                determineDataLimits: function() {
+                    var me = this;
+                    var chart = me.chart;
+                    var timeOpts = me.options.time;
+                    var min = MAX_INTEGER;
+                    var max = MIN_INTEGER;
+                    var timestamps = [];
+                    var datasets = [];
+                    var labels = [];
+                    var i, j, ilen, jlen, data, timestamp;
+
+                    // Convert labels to timestamps
+                    for (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {
+                        labels.push(parse(chart.data.labels[i], me));
+                    }
+
+                    // Convert data to timestamps
+                    for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {
+                        if (chart.isDatasetVisible(i)) {
+                            data = chart.data.datasets[i].data;
+
+                            // Let's consider that all data have the same format.
+                            if (helpers.isObject(data[0])) {
+                                datasets[i] = [];
+
+                                for (j = 0, jlen = data.length; j < jlen; ++j) {
+                                    timestamp = parse(data[j], me);
+                                    timestamps.push(timestamp);
+                                    datasets[i][j] = timestamp;
+                                }
+                            } else {
+                                timestamps.push.apply(timestamps, labels);
+                                datasets[i] = labels.slice(0);
+                            }
+                        } else {
+                            datasets[i] = [];
+                        }
+                    }
+
+                    if (labels.length) {
+                        // Sort labels **after** data have been converted
+                        labels = arrayUnique(labels).sort(sorter);
+                        min = Math.min(min, labels[0]);
+                        max = Math.max(max, labels[labels.length - 1]);
+                    }
+
+                    if (timestamps.length) {
+                        timestamps = arrayUnique(timestamps).sort(sorter);
+                        min = Math.min(min, timestamps[0]);
+                        max = Math.max(max, timestamps[timestamps.length - 1]);
+                    }
+
+                    min = parse(timeOpts.min, me) || min;
+                    max = parse(timeOpts.max, me) || max;
+
+                    // In case there is no valid min/max, let's use today limits
+                    min = min === MAX_INTEGER ? +moment().startOf('day') : min;
+                    max = max === MIN_INTEGER ? +moment().endOf('day') + 1 : max;
+
+                    // Make sure that max is strictly higher than min (required by the lookup table)
+                    me.min = Math.min(min, max);
+                    me.max = Math.max(min + 1, max);
+
+                    // PRIVATE
+                    me._horizontal = me.isHorizontal();
+                    me._table = [];
+                    me._timestamps = {
+                        data: timestamps,
+                        datasets: datasets,
+                        labels: labels
+                    };
+                },
+
+                buildTicks: function() {
+                    var me = this;
+                    var min = me.min;
+                    var max = me.max;
+                    var options = me.options;
+                    var timeOpts = options.time;
+                    var timestamps = [];
+                    var ticks = [];
+                    var i, ilen, timestamp;
+
+                    switch (options.ticks.source) {
+                        case 'data':
+                            timestamps = me._timestamps.data;
+                            break;
+                        case 'labels':
+                            timestamps = me._timestamps.labels;
+                            break;
+                        case 'auto':
+                        default:
+                            timestamps = generate(min, max, me.getLabelCapacity(min), options);
+                    }
+
+                    if (options.bounds === 'ticks' && timestamps.length) {
+                        min = timestamps[0];
+                        max = timestamps[timestamps.length - 1];
+                    }
+
+                    // Enforce limits with user min/max options
+                    min = parse(timeOpts.min, me) || min;
+                    max = parse(timeOpts.max, me) || max;
+
+                    // Remove ticks outside the min/max range
+                    for (i = 0, ilen = timestamps.length; i < ilen; ++i) {
+                        timestamp = timestamps[i];
+                        if (timestamp >= min && timestamp <= max) {
+                            ticks.push(timestamp);
+                        }
+                    }
+
+                    me.min = min;
+                    me.max = max;
+
+                    // PRIVATE
+                    me._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);
+                    me._majorUnit = determineMajorUnit(me._unit);
+                    me._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);
+                    me._offsets = computeOffsets(me._table, ticks, min, max, options);
+
+                    return ticksFromTimestamps(ticks, me._majorUnit);
+                },
+
+                getLabelForIndex: function(index, datasetIndex) {
+                    var me = this;
+                    var data = me.chart.data;
+                    var timeOpts = me.options.time;
+                    var label = data.labels && index < data.labels.length ? data.labels[index] : '';
+                    var value = data.datasets[datasetIndex].data[index];
+
+                    if (helpers.isObject(value)) {
+                        label = me.getRightValue(value);
+                    }
+                    if (timeOpts.tooltipFormat) {
+                        label = momentify(label, timeOpts).format(timeOpts.tooltipFormat);
+                    }
+
+                    return label;
+                },
+
+                /**
+                 * Function to format an individual tick mark
+                 * @private
+                 */
+                tickFormatFunction: function(tick, index, ticks, formatOverride) {
+                    var me = this;
+                    var options = me.options;
+                    var time = tick.valueOf();
+                    var formats = options.time.displayFormats;
+                    var minorFormat = formats[me._unit];
+                    var majorUnit = me._majorUnit;
+                    var majorFormat = formats[majorUnit];
+                    var majorTime = tick.clone().startOf(majorUnit).valueOf();
+                    var majorTickOpts = options.ticks.major;
+                    var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;
+                    var label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);
+                    var tickOpts = major ? majorTickOpts : options.ticks.minor;
+                    var formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);
+
+                    return formatter ? formatter(label, index, ticks) : label;
+                },
+
+                convertTicksToLabels: function(ticks) {
+                    var labels = [];
+                    var i, ilen;
+
+                    for (i = 0, ilen = ticks.length; i < ilen; ++i) {
+                        labels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));
+                    }
+
+                    return labels;
+                },
+
+                /**
+                 * @private
+                 */
+                getPixelForOffset: function(time) {
+                    var me = this;
+                    var size = me._horizontal ? me.width : me.height;
+                    var start = me._horizontal ? me.left : me.top;
+                    var pos = interpolate(me._table, 'time', time, 'pos');
+
+                    return start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);
+                },
+
+                getPixelForValue: function(value, index, datasetIndex) {
+                    var me = this;
+                    var time = null;
+
+                    if (index !== undefined && datasetIndex !== undefined) {
+                        time = me._timestamps.datasets[datasetIndex][index];
+                    }
+
+                    if (time === null) {
+                        time = parse(value, me);
+                    }
+
+                    if (time !== null) {
+                        return me.getPixelForOffset(time);
+                    }
+                },
+
+                getPixelForTick: function(index) {
+                    var ticks = this.getTicks();
+                    return index >= 0 && index < ticks.length ?
+                        this.getPixelForOffset(ticks[index].value) :
+                        null;
+                },
+
+                getValueForPixel: function(pixel) {
+                    var me = this;
+                    var size = me._horizontal ? me.width : me.height;
+                    var start = me._horizontal ? me.left : me.top;
+                    var pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;
+                    var time = interpolate(me._table, 'pos', pos, 'time');
+
+                    return moment(time);
+                },
+
+                /**
+                 * Crude approximation of what the label width might be
+                 * @private
+                 */
+                getLabelWidth: function(label) {
+                    var me = this;
+                    var ticksOpts = me.options.ticks;
+                    var tickLabelWidth = me.ctx.measureText(label).width;
+                    var angle = helpers.toRadians(ticksOpts.maxRotation);
+                    var cosRotation = Math.cos(angle);
+                    var sinRotation = Math.sin(angle);
+                    var tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);
+
+                    return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);
+                },
+
+                /**
+                 * @private
+                 */
+                getLabelCapacity: function(exampleTime) {
+                    var me = this;
+
+                    var formatOverride = me.options.time.displayFormats.millisecond;	// Pick the longest format for guestimation
+
+                    var exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);
+                    var tickLabelWidth = me.getLabelWidth(exampleLabel);
+                    var innerWidth = me.isHorizontal() ? me.width : me.height;
+
+                    return Math.floor(innerWidth / tickLabelWidth);
+                }
+            });
+
+            Chart.scaleService.registerScaleType('time', TimeScale, defaultConfig);
+        };
+
+    },{"1":1,"25":25,"45":45}]},{},[7])(7)
+});
Index: public/vendors/charts/justgage/justgage.js
===================================================================
--- public/vendors/charts/justgage/justgage.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/justgage/justgage.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1220 @@
+/**
+ * JustGage - animated gauges using RaphaelJS
+ * Check http://www.justgage.com for official releases
+ * Licensed under MIT.
+ * @author Bojan Djuricic (@Toorshia)
+ **/
+
+JustGage = function(config) {
+
+  var obj = this;
+
+  // Helps in case developer wants to debug it. unobtrusive
+  if (config === null || config === undefined) {
+    console.log('* justgage: Make sure to pass options to the constructor!');
+    return false;
+  }
+
+  var node;
+
+  if (config.id !== null && config.id !== undefined) {
+    node = document.getElementById(config.id);
+    if (!node) {
+      console.log('* justgage: No element with id : %s found', config.id);
+      return false;
+    }
+  } else if (config.parentNode !== null && config.parentNode !== undefined) {
+    node = config.parentNode;
+  } else {
+    console.log('* justgage: Make sure to pass the existing element id or parentNode to the constructor.');
+    return false;
+  }
+
+  var dataset = node.dataset ? node.dataset : {};
+
+  // check for defaults
+  var defaults = (config.defaults !== null && config.defaults !== undefined) ? config.defaults : false;
+  if (defaults !== false) {
+    config = extend({}, config, defaults);
+    delete config.defaults;
+  }
+
+  // configurable parameters
+  obj.config = {
+    // id : string
+    // this is container element id
+    id: config.id,
+
+    // value : float
+    // value gauge is showing
+    value: kvLookup('value', config, dataset, 0, 'float'),
+
+    // defaults : bool
+    // defaults parameter to use
+    defaults: kvLookup('defaults', config, dataset, 0, false),
+
+    // parentNode : node object
+    // this is container element
+    parentNode: kvLookup('parentNode', config, dataset, null),
+
+    // width : int
+    // gauge width
+    width: kvLookup('width', config, dataset, null),
+
+    // height : int
+    // gauge height
+    height: kvLookup('height', config, dataset, null),
+
+    // title : string
+    // gauge title
+    title: kvLookup('title', config, dataset, ""),
+
+    // titleFontColor : string
+    // color of gauge title
+    titleFontColor: kvLookup('titleFontColor', config, dataset, "#999999"),
+
+    // titleFontFamily : string
+    // color of gauge title
+    titleFontFamily: kvLookup('titleFontFamily', config, dataset, "sans-serif"),
+
+    // titlePosition : string
+    // 'above' or 'below'
+    titlePosition: kvLookup('titlePosition', config, dataset, "above"),
+
+    // valueFontColor : string
+    // color of label showing current value
+    valueFontColor: kvLookup('valueFontColor', config, dataset, "#010101"),
+
+    // valueFontFamily : string
+    // color of label showing current value
+    valueFontFamily: kvLookup('valueFontFamily', config, dataset, "Arial"),
+
+    // symbol : string
+    // special symbol to show next to value
+    symbol: kvLookup('symbol', config, dataset, ''),
+
+    // min : float
+    // min value
+    min: kvLookup('min', config, dataset, 0, 'float'),
+
+    // max : float
+    // max value
+    max: kvLookup('max', config, dataset, 100, 'float'),
+
+    // reverse : bool
+    // reverse min and max
+    reverse: kvLookup('reverse', config, dataset, false),
+
+    // humanFriendlyDecimal : int
+    // number of decimal places for our human friendly number to contain
+    humanFriendlyDecimal: kvLookup('humanFriendlyDecimal', config, dataset, 0),
+
+
+    // textRenderer: func
+    // function applied before rendering text
+    textRenderer: kvLookup('textRenderer', config, dataset, null),
+
+    // gaugeWidthScale : float
+    // width of the gauge element
+    gaugeWidthScale: kvLookup('gaugeWidthScale', config, dataset, 1.0),
+
+    // gaugeColor : string
+    // background color of gauge element
+    gaugeColor: kvLookup('gaugeColor', config, dataset, "#edebeb"),
+
+    // label : string
+    // text to show below value
+    label: kvLookup('label', config, dataset, ''),
+
+    // labelFontColor : string
+    // color of label showing label under value
+    labelFontColor: kvLookup('labelFontColor', config, dataset, "#b3b3b3"),
+
+    // shadowOpacity : int
+    // 0 ~ 1
+    shadowOpacity: kvLookup('shadowOpacity', config, dataset, 0.2),
+
+    // shadowSize: int
+    // inner shadow size
+    shadowSize: kvLookup('shadowSize', config, dataset, 5),
+
+    // shadowVerticalOffset : int
+    // how much shadow is offset from top
+    shadowVerticalOffset: kvLookup('shadowVerticalOffset', config, dataset, 3),
+
+    // levelColors : string[]
+    // colors of indicator, from lower to upper, in RGB format
+    levelColors: kvLookup('levelColors', config, dataset, ["#a9d70b", "#f9c802", "#ff0000"], 'array', ','),
+
+    // startAnimationTime : int
+    // length of initial animation
+    startAnimationTime: kvLookup('startAnimationTime', config, dataset, 700),
+
+    // startAnimationType : string
+    // type of initial animation (linear, >, <,  <>, bounce)
+    startAnimationType: kvLookup('startAnimationType', config, dataset, '>'),
+
+    // refreshAnimationTime : int
+    // length of refresh animation
+    refreshAnimationTime: kvLookup('refreshAnimationTime', config, dataset, 700),
+
+    // refreshAnimationType : string
+    // type of refresh animation (linear, >, <,  <>, bounce)
+    refreshAnimationType: kvLookup('refreshAnimationType', config, dataset, '>'),
+
+    // donutStartAngle : int
+    // angle to start from when in donut mode
+    donutStartAngle: kvLookup('donutStartAngle', config, dataset, 90),
+
+    // valueMinFontSize : int
+    // absolute minimum font size for the value
+    valueMinFontSize: kvLookup('valueMinFontSize', config, dataset, 16),
+
+    // titleMinFontSize
+    // absolute minimum font size for the title
+    titleMinFontSize: kvLookup('titleMinFontSize', config, dataset, 10),
+
+    // labelMinFontSize
+    // absolute minimum font size for the label
+    labelMinFontSize: kvLookup('labelMinFontSize', config, dataset, 10),
+
+    // minLabelMinFontSize
+    // absolute minimum font size for the minimum label
+    minLabelMinFontSize: kvLookup('minLabelMinFontSize', config, dataset, 10),
+
+    // maxLabelMinFontSize
+    // absolute minimum font size for the maximum label
+    maxLabelMinFontSize: kvLookup('maxLabelMinFontSize', config, dataset, 10),
+
+    // hideValue : bool
+    // hide value text
+    hideValue: kvLookup('hideValue', config, dataset, false),
+
+    // hideMinMax : bool
+    // hide min and max values
+    hideMinMax: kvLookup('hideMinMax', config, dataset, false),
+
+    // hideInnerShadow : bool
+    // hide inner shadow
+    hideInnerShadow: kvLookup('hideInnerShadow', config, dataset, false),
+
+    // humanFriendly : bool
+    // convert large numbers for min, max, value to human friendly (e.g. 1234567 -> 1.23M)
+    humanFriendly: kvLookup('humanFriendly', config, dataset, false),
+
+    // noGradient : bool
+    // whether to use gradual color change for value, or sector-based
+    noGradient: kvLookup('noGradient', config, dataset, false),
+
+    // donut : bool
+    // show full donut gauge
+    donut: kvLookup('donut', config, dataset, false),
+
+    // relativeGaugeSize : bool
+    // whether gauge size should follow changes in container element size
+    relativeGaugeSize: kvLookup('relativeGaugeSize', config, dataset, false),
+
+    // counter : bool
+    // animate level number change
+    counter: kvLookup('counter', config, dataset, false),
+
+    // decimals : int
+    // number of digits after floating point
+    decimals: kvLookup('decimals', config, dataset, 0),
+
+    // customSectors : [] of objects
+    // number of digits after floating point
+    customSectors: kvLookup('customSectors', config, dataset, []),
+
+    // formatNumber: boolean
+    // formats numbers with commas where appropriate
+    formatNumber: kvLookup('formatNumber', config, dataset, false),
+
+    // pointer : bool
+    // show value pointer
+    pointer: kvLookup('pointer', config, dataset, false),
+
+    // pointerOptions : object
+    // define pointer look
+    pointerOptions: kvLookup('pointerOptions', config, dataset, [])
+  };
+
+  // variables
+  var
+    canvasW,
+    canvasH,
+    widgetW,
+    widgetH,
+    aspect,
+    dx,
+    dy,
+    titleFontSize,
+    titleX,
+    titleY,
+    valueFontSize,
+    valueX,
+    valueY,
+    labelFontSize,
+    labelX,
+    labelY,
+    minFontSize,
+    minX,
+    minY,
+    maxFontSize,
+    maxX,
+    maxY;
+
+  // overflow values
+  if (obj.config.value > obj.config.max) obj.config.value = obj.config.max;
+  if (obj.config.value < obj.config.min) obj.config.value = obj.config.min;
+  obj.originalValue = kvLookup('value', config, dataset, -1, 'float');
+
+  // create canvas
+  if (obj.config.id !== null && (document.getElementById(obj.config.id)) !== null) {
+    obj.canvas = Raphael(obj.config.id, "100%", "100%");
+  } else if (obj.config.parentNode !== null) {
+    obj.canvas = Raphael(obj.config.parentNode, "100%", "100%");
+  }
+
+  if (obj.config.relativeGaugeSize === true) {
+    obj.canvas.setViewBox(0, 0, 200, 150, true);
+  }
+
+  // canvas dimensions
+  if (obj.config.relativeGaugeSize === true) {
+    canvasW = 200;
+    canvasH = 150;
+  } else if (obj.config.width !== null && obj.config.height !== null) {
+    canvasW = obj.config.width;
+    canvasH = obj.config.height;
+  } else if (obj.config.parentNode !== null) {
+    obj.canvas.setViewBox(0, 0, 200, 150, true);
+    canvasW = 200;
+    canvasH = 150;
+  } else {
+    canvasW = getStyle(document.getElementById(obj.config.id), "width").slice(0, -2) * 1;
+    canvasH = getStyle(document.getElementById(obj.config.id), "height").slice(0, -2) * 1;
+  }
+
+  // widget dimensions
+  if (obj.config.donut === true) {
+
+    // DONUT *******************************
+
+    // width more than height
+    if (canvasW > canvasH) {
+      widgetH = canvasH;
+      widgetW = widgetH;
+      // width less than height
+    } else if (canvasW < canvasH) {
+      widgetW = canvasW;
+      widgetH = widgetW;
+      // if height don't fit, rescale both
+      if (widgetH > canvasH) {
+        aspect = widgetH / canvasH;
+        widgetH = widgetH / aspect;
+        widgetW = widgetH / aspect;
+      }
+      // equal
+    } else {
+      widgetW = canvasW;
+      widgetH = widgetW;
+    }
+
+    // delta
+    dx = (canvasW - widgetW) / 2;
+    dy = (canvasH - widgetH) / 2;
+
+    // title
+    titleFontSize = ((widgetH / 8) > 10) ? (widgetH / 10) : 10;
+    titleX = dx + widgetW / 2;
+    titleY = dy + widgetH / 11;
+
+    // value
+    valueFontSize = ((widgetH / 6.4) > 16) ? (widgetH / 5.4) : 18;
+    valueX = dx + widgetW / 2;
+    if (obj.config.label !== '') {
+      valueY = dy + widgetH / 1.85;
+    } else {
+      valueY = dy + widgetH / 1.7;
+    }
+
+    // label
+    labelFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
+    labelX = dx + widgetW / 2;
+    labelY = valueY + labelFontSize;
+
+    // min
+    minFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
+    minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2;
+    minY = labelY;
+
+    // max
+    maxFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
+    maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2;
+    maxY = labelY;
+
+  } else {
+    // HALF *******************************
+
+    // width more than height
+    if (canvasW > canvasH) {
+      widgetH = canvasH;
+      widgetW = widgetH * 1.25;
+      //if width doesn't fit, rescale both
+      if (widgetW > canvasW) {
+        aspect = widgetW / canvasW;
+        widgetW = widgetW / aspect;
+        widgetH = widgetH / aspect;
+      }
+      // width less than height
+    } else if (canvasW < canvasH) {
+      widgetW = canvasW;
+      widgetH = widgetW / 1.25;
+      // if height don't fit, rescale both
+      if (widgetH > canvasH) {
+        aspect = widgetH / canvasH;
+        widgetH = widgetH / aspect;
+        widgetW = widgetH / aspect;
+      }
+      // equal
+    } else {
+      widgetW = canvasW;
+      widgetH = widgetW * 0.75;
+    }
+
+    // delta
+    dx = (canvasW - widgetW) / 2;
+    dy = (canvasH - widgetH) / 2;
+    if (obj.config.titlePosition === 'below') {
+      // shift whole thing down
+      dy -= (widgetH / 6.4);
+    }
+
+    // title
+    titleFontSize = ((widgetH / 8) > obj.config.titleMinFontSize) ? (widgetH / 10) : obj.config.titleMinFontSize;
+    titleX = dx + widgetW / 2;
+    titleY = dy + (obj.config.titlePosition === 'below' ? (widgetH * 1.07) : (widgetH / 6.4));
+
+    // value
+    valueFontSize = ((widgetH / 6.5) > obj.config.valueMinFontSize) ? (widgetH / 6.5) : obj.config.valueMinFontSize;
+    valueX = dx + widgetW / 2;
+    valueY = dy + widgetH / 1.275;
+
+    // label
+    labelFontSize = ((widgetH / 16) > obj.config.labelMinFontSize) ? (widgetH / 16) : obj.config.labelMinFontSize;
+    labelX = dx + widgetW / 2;
+    labelY = valueY + valueFontSize / 2 + 5;
+
+    // min
+    minFontSize = ((widgetH / 16) > obj.config.minLabelMinFontSize) ? (widgetH / 16) : obj.config.minLabelMinFontSize;
+    minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2;
+    minY = labelY;
+
+    // max
+    maxFontSize = ((widgetH / 16) > obj.config.maxLabelMinFontSize) ? (widgetH / 16) : obj.config.maxLabelMinFontSize;
+    maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2;
+    maxY = labelY;
+  }
+
+  // parameters
+  obj.params = {
+    canvasW: canvasW,
+    canvasH: canvasH,
+    widgetW: widgetW,
+    widgetH: widgetH,
+    dx: dx,
+    dy: dy,
+    titleFontSize: titleFontSize,
+    titleX: titleX,
+    titleY: titleY,
+    valueFontSize: valueFontSize,
+    valueX: valueX,
+    valueY: valueY,
+    labelFontSize: labelFontSize,
+    labelX: labelX,
+    labelY: labelY,
+    minFontSize: minFontSize,
+    minX: minX,
+    minY: minY,
+    maxFontSize: maxFontSize,
+    maxX: maxX,
+    maxY: maxY
+  };
+
+  // var clear
+  canvasW, canvasH, widgetW, widgetH, aspect, dx, dy, titleFontSize, titleX, titleY, valueFontSize, valueX, valueY, labelFontSize, labelX, labelY, minFontSize, minX, minY, maxFontSize, maxX, maxY = null;
+
+  // pki - custom attribute for generating gauge paths
+  obj.canvas.customAttributes.pki = function(value, min, max, w, h, dx, dy, gws, donut, reverse) {
+
+    var alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, path;
+
+    if (donut) {
+      alpha = (1 - 2 * (value - min) / (max - min)) * Math.PI;
+      Ro = w / 2 - w / 7;
+      Ri = Ro - w / 6.666666666666667 * gws;
+
+      Cx = w / 2 + dx;
+      Cy = h / 1.95 + dy;
+
+      Xo = w / 2 + dx + Ro * Math.cos(alpha);
+      Yo = h - (h - Cy) - Ro * Math.sin(alpha);
+      Xi = w / 2 + dx + Ri * Math.cos(alpha);
+      Yi = h - (h - Cy) - Ri * Math.sin(alpha);
+
+      path = "M" + (Cx - Ri) + "," + Cy + " ";
+      path += "L" + (Cx - Ro) + "," + Cy + " ";
+      if (value > ((max - min) / 2)) {
+        path += "A" + Ro + "," + Ro + " 0 0 1 " + (Cx + Ro) + "," + Cy + " ";
+      }
+      path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " ";
+      path += "L" + Xi + "," + Yi + " ";
+      if (value > ((max - min) / 2)) {
+        path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx + Ri) + "," + Cy + " ";
+      }
+      path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " ";
+      path += "Z ";
+
+      return {
+        path: path
+      };
+
+    } else {
+      alpha = (1 - (value - min) / (max - min)) * Math.PI;
+      Ro = w / 2 - w / 10;
+      Ri = Ro - w / 6.666666666666667 * gws;
+
+      Cx = w / 2 + dx;
+      Cy = h / 1.25 + dy;
+
+      Xo = w / 2 + dx + Ro * Math.cos(alpha);
+      Yo = h - (h - Cy) - Ro * Math.sin(alpha);
+      Xi = w / 2 + dx + Ri * Math.cos(alpha);
+      Yi = h - (h - Cy) - Ri * Math.sin(alpha);
+
+      path = "M" + (Cx - Ri) + "," + Cy + " ";
+      path += "L" + (Cx - Ro) + "," + Cy + " ";
+      path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " ";
+      path += "L" + Xi + "," + Yi + " ";
+      path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " ";
+      path += "Z ";
+
+      return {
+        path: path
+      };
+    }
+
+    // var clear
+    alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, path = null;
+  };
+
+  // ndl - custom attribute for generating needle path
+  obj.canvas.customAttributes.ndl = function(value, min, max, w, h, dx, dy, gws, donut) {
+
+    var dlt = w * 3.5 / 100;
+    var dlb = w / 15;
+    var dw = w / 100;
+
+    if (obj.config.pointerOptions.toplength != null && obj.config.pointerOptions.toplength != undefined) dlt = obj.config.pointerOptions.toplength;
+    if (obj.config.pointerOptions.bottomlength != null && obj.config.pointerOptions.bottomlength != undefined) dlb = obj.config.pointerOptions.bottomlength;
+    if (obj.config.pointerOptions.bottomwidth != null && obj.config.pointerOptions.bottomwidth != undefined) dw = obj.config.pointerOptions.bottomwidth;
+
+    var alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, Xc, Yc, Xz, Yz, Xa, Ya, Xb, Yb, path;
+
+    if (donut) {
+
+      alpha = (1 - 2 * (value - min) / (max - min)) * Math.PI;
+      Ro = w / 2 - w / 7;
+      Ri = Ro - w / 6.666666666666667 * gws;
+
+      Cx = w / 2 + dx;
+      Cy = h / 1.95 + dy;
+
+      Xo = w / 2 + dx + Ro * Math.cos(alpha);
+      Yo = h - (h - Cy) - Ro * Math.sin(alpha);
+      Xi = w / 2 + dx + Ri * Math.cos(alpha);
+      Yi = h - (h - Cy) - Ri * Math.sin(alpha);
+
+      Xc = Xo + dlt * Math.cos(alpha);
+      Yc = Yo - dlt * Math.sin(alpha);
+      Xz = Xi - dlb * Math.cos(alpha);
+      Yz = Yi + dlb * Math.sin(alpha);
+
+      Xa = Xz + dw * Math.sin(alpha);
+      Ya = Yz + dw * Math.cos(alpha);
+      Xb = Xz - dw * Math.sin(alpha);
+      Yb = Yz - dw * Math.cos(alpha);
+
+      path = 'M' + Xa + ',' + Ya + ' ';
+      path += 'L' + Xb + ',' + Yb + ' ';
+      path += 'L' + Xc + ',' + Yc + ' ';
+      path += 'Z ';
+
+      return {
+        path: path
+      };
+
+    } else {
+      alpha = (1 - (value - min) / (max - min)) * Math.PI;
+      Ro = w / 2 - w / 10;
+      Ri = Ro - w / 6.666666666666667 * gws;
+
+      Cx = w / 2 + dx;
+      Cy = h / 1.25 + dy;
+
+      Xo = w / 2 + dx + Ro * Math.cos(alpha);
+      Yo = h - (h - Cy) - Ro * Math.sin(alpha);
+      Xi = w / 2 + dx + Ri * Math.cos(alpha);
+      Yi = h - (h - Cy) - Ri * Math.sin(alpha);
+
+      Xc = Xo + dlt * Math.cos(alpha);
+      Yc = Yo - dlt * Math.sin(alpha);
+      Xz = Xi - dlb * Math.cos(alpha);
+      Yz = Yi + dlb * Math.sin(alpha);
+
+      Xa = Xz + dw * Math.sin(alpha);
+      Ya = Yz + dw * Math.cos(alpha);
+      Xb = Xz - dw * Math.sin(alpha);
+      Yb = Yz - dw * Math.cos(alpha);
+
+      path = 'M' + Xa + ',' + Ya + ' ';
+      path += 'L' + Xb + ',' + Yb + ' ';
+      path += 'L' + Xc + ',' + Yc + ' ';
+      path += 'Z ';
+
+      return {
+        path: path
+      };
+    }
+
+    // var clear
+    alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, Xc, Yc, Xz, Yz, Xa, Ya, Xb, Yb, path = null;
+  };
+
+  // gauge
+  obj.gauge = obj.canvas.path().attr({
+    "stroke": "none",
+    "fill": obj.config.gaugeColor,
+    pki: [
+      obj.config.max,
+      obj.config.min,
+      obj.config.max,
+      obj.params.widgetW,
+      obj.params.widgetH,
+      obj.params.dx,
+      obj.params.dy,
+      obj.config.gaugeWidthScale,
+      obj.config.donut,
+      obj.config.reverse
+    ]
+  });
+
+  // level
+  obj.level = obj.canvas.path().attr({
+    "stroke": "none",
+    "fill": getColor(obj.config.value, (obj.config.value - obj.config.min) / (obj.config.max - obj.config.min), obj.config.levelColors, obj.config.noGradient, obj.config.customSectors),
+    pki: [
+      obj.config.min,
+      obj.config.min,
+      obj.config.max,
+      obj.params.widgetW,
+      obj.params.widgetH,
+      obj.params.dx,
+      obj.params.dy,
+      obj.config.gaugeWidthScale,
+      obj.config.donut,
+      obj.config.reverse
+    ]
+  });
+  if (obj.config.donut) {
+    obj.level.transform("r" + obj.config.donutStartAngle + ", " + (obj.params.widgetW / 2 + obj.params.dx) + ", " + (obj.params.widgetH / 1.95 + obj.params.dy));
+  }
+
+  if (obj.config.pointer) {
+    // needle
+    obj.needle = obj.canvas.path().attr({
+      "stroke": (obj.config.pointerOptions.stroke !== null && obj.config.pointerOptions.stroke !== undefined) ? obj.config.pointerOptions.stroke : "none",
+      "stroke-width": (obj.config.pointerOptions.stroke_width !== null && obj.config.pointerOptions.stroke_width !== undefined) ? obj.config.pointerOptions.stroke_width : 0,
+      "stroke-linecap": (obj.config.pointerOptions.stroke_linecap !== null && obj.config.pointerOptions.stroke_linecap !== undefined) ? obj.config.pointerOptions.stroke_linecap : "square",
+      "fill": (obj.config.pointerOptions.color !== null && obj.config.pointerOptions.color !== undefined) ? obj.config.pointerOptions.color : "#000000",
+      ndl: [
+        obj.config.min,
+        obj.config.min,
+        obj.config.max,
+        obj.params.widgetW,
+        obj.params.widgetH,
+        obj.params.dx,
+        obj.params.dy,
+        obj.config.gaugeWidthScale,
+        obj.config.donut
+      ]
+    });
+
+    if (obj.config.donut) {
+      obj.needle.transform("r" + obj.config.donutStartAngle + ", " + (obj.params.widgetW / 2 + obj.params.dx) + ", " + (obj.params.widgetH / 1.95 + obj.params.dy));
+    }
+
+  }
+
+  // title
+  obj.txtTitle = obj.canvas.text(obj.params.titleX, obj.params.titleY, obj.config.title);
+  obj.txtTitle.attr({
+    "font-size": obj.params.titleFontSize,
+    "font-weight": "bold",
+    "font-family": obj.config.titleFontFamily,
+    "fill": obj.config.titleFontColor,
+    "fill-opacity": "1"
+  });
+  setDy(obj.txtTitle, obj.params.titleFontSize, obj.params.titleY);
+
+  // value
+  obj.txtValue = obj.canvas.text(obj.params.valueX, obj.params.valueY, 0);
+  obj.txtValue.attr({
+    "font-size": obj.params.valueFontSize,
+    "font-weight": "bold",
+    "font-family": obj.config.valueFontFamily,
+    "fill": obj.config.valueFontColor,
+    "fill-opacity": "0"
+  });
+  setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
+
+  // label
+  obj.txtLabel = obj.canvas.text(obj.params.labelX, obj.params.labelY, obj.config.label);
+  obj.txtLabel.attr({
+    "font-size": obj.params.labelFontSize,
+    "font-weight": "normal",
+    "font-family": "Arial",
+    "fill": obj.config.labelFontColor,
+    "fill-opacity": "0"
+  });
+  setDy(obj.txtLabel, obj.params.labelFontSize, obj.params.labelY);
+
+  // min
+  var min = obj.config.min;
+  if (obj.config.reverse) {
+    min = obj.config.max;
+  }
+
+  obj.txtMinimum = min;
+  if (obj.config.humanFriendly) {
+    obj.txtMinimum = humanFriendlyNumber(min, obj.config.humanFriendlyDecimal);
+  } else if (obj.config.formatNumber) {
+    obj.txtMinimum = formatNumber(min);
+  }
+  obj.txtMin = obj.canvas.text(obj.params.minX, obj.params.minY, obj.txtMinimum);
+  obj.txtMin.attr({
+    "font-size": obj.params.minFontSize,
+    "font-weight": "normal",
+    "font-family": "Arial",
+    "fill": obj.config.labelFontColor,
+    "fill-opacity": (obj.config.hideMinMax || obj.config.donut) ? "0" : "1"
+  });
+  setDy(obj.txtMin, obj.params.minFontSize, obj.params.minY);
+
+  // max
+  var max = obj.config.max;
+  if (obj.config.reverse) {
+    max = obj.config.min;
+  }
+  obj.txtMaximum = max;
+  if (obj.config.humanFriendly) {
+    obj.txtMaximum = humanFriendlyNumber(max, obj.config.humanFriendlyDecimal);
+  } else if (obj.config.formatNumber) {
+    obj.txtMaximum = formatNumber(max);
+  }
+  obj.txtMax = obj.canvas.text(obj.params.maxX, obj.params.maxY, obj.txtMaximum);
+  obj.txtMax.attr({
+    "font-size": obj.params.maxFontSize,
+    "font-weight": "normal",
+    "font-family": "Arial",
+    "fill": obj.config.labelFontColor,
+    "fill-opacity": (obj.config.hideMinMax || obj.config.donut) ? "0" : "1"
+  });
+  setDy(obj.txtMax, obj.params.maxFontSize, obj.params.maxY);
+
+  var defs = obj.canvas.canvas.childNodes[1];
+  var svg = "http://www.w3.org/2000/svg";
+
+  if (ie !== 'undefined' && ie < 9) {
+    // VML mode - no SVG & SVG filter support
+  } else if (ie !== 'undefined') {
+    onCreateElementNsReady(function() {
+      obj.generateShadow(svg, defs);
+    });
+  } else {
+    obj.generateShadow(svg, defs);
+  }
+
+  // var clear
+  defs, svg = null;
+
+  // set value to display
+  if (obj.config.textRenderer) {
+    obj.originalValue = obj.config.textRenderer(obj.originalValue);
+  } else if (obj.config.humanFriendly) {
+    obj.originalValue = humanFriendlyNumber(obj.originalValue, obj.config.humanFriendlyDecimal) + obj.config.symbol;
+  } else if (obj.config.formatNumber) {
+    obj.originalValue = formatNumber(obj.originalValue) + obj.config.symbol;
+  } else {
+    obj.originalValue = (obj.originalValue * 1).toFixed(obj.config.decimals) + obj.config.symbol;
+  }
+
+  if (obj.config.counter === true) {
+    //on each animation frame
+    eve.on("raphael.anim.frame." + (obj.level.id), function() {
+      var currentValue = obj.level.attr("pki")[0];
+      if (obj.config.reverse) {
+        currentValue = (obj.config.max * 1) + (obj.config.min * 1) - (obj.level.attr("pki")[0] * 1);
+      }
+      if (obj.config.textRenderer) {
+        obj.txtValue.attr("text", obj.config.textRenderer(Math.floor(currentValue)));
+      } else if (obj.config.humanFriendly) {
+        obj.txtValue.attr("text", humanFriendlyNumber(Math.floor(currentValue), obj.config.humanFriendlyDecimal) + obj.config.symbol);
+      } else if (obj.config.formatNumber) {
+        obj.txtValue.attr("text", formatNumber(Math.floor(currentValue)) + obj.config.symbol);
+      } else {
+        obj.txtValue.attr("text", (currentValue * 1).toFixed(obj.config.decimals) + obj.config.symbol);
+      }
+      setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
+      currentValue = null;
+    });
+    //on animation end
+    eve.on("raphael.anim.finish." + (obj.level.id), function() {
+      obj.txtValue.attr({
+        "text": obj.originalValue
+      });
+      setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
+    });
+  } else {
+    //on animation start
+    eve.on("raphael.anim.start." + (obj.level.id), function() {
+      obj.txtValue.attr({
+        "text": obj.originalValue
+      });
+      setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
+    });
+  }
+
+  // animate gauge level, value & label
+  var rvl = obj.config.value;
+  if (obj.config.reverse) {
+    rvl = (obj.config.max * 1) + (obj.config.min * 1) - (obj.config.value * 1);
+  }
+  obj.level.animate({
+    pki: [
+      rvl,
+      obj.config.min,
+      obj.config.max,
+      obj.params.widgetW,
+      obj.params.widgetH,
+      obj.params.dx,
+      obj.params.dy,
+      obj.config.gaugeWidthScale,
+      obj.config.donut,
+      obj.config.reverse
+    ]
+  }, obj.config.startAnimationTime, obj.config.startAnimationType);
+
+  if (obj.config.pointer) {
+    obj.needle.animate({
+      ndl: [
+        rvl,
+        obj.config.min,
+        obj.config.max,
+        obj.params.widgetW,
+        obj.params.widgetH,
+        obj.params.dx,
+        obj.params.dy,
+        obj.config.gaugeWidthScale,
+        obj.config.donut
+      ]
+    }, obj.config.startAnimationTime, obj.config.startAnimationType);
+  }
+
+  obj.txtValue.animate({
+    "fill-opacity": (obj.config.hideValue) ? "0" : "1"
+  }, obj.config.startAnimationTime, obj.config.startAnimationType);
+  obj.txtLabel.animate({
+    "fill-opacity": "1"
+  }, obj.config.startAnimationTime, obj.config.startAnimationType);
+};
+
+/** Refresh gauge level */
+JustGage.prototype.refresh = function(val, max) {
+
+  var obj = this;
+  var displayVal, color, max = max || null;
+
+  // set new max
+  if (max !== null) {
+    obj.config.max = max;
+    // TODO: update customSectors
+
+    obj.txtMaximum = obj.config.max;
+    if (obj.config.humanFriendly) {
+      obj.txtMaximum = humanFriendlyNumber(obj.config.max, obj.config.humanFriendlyDecimal);
+    } else if (obj.config.formatNumber) {
+      obj.txtMaximum = formatNumber(obj.config.max);
+    }
+    if (!obj.config.reverse) {
+      obj.txtMax.attr({
+        "text": obj.txtMaximum
+      });
+      setDy(obj.txtMax, obj.params.maxFontSize, obj.params.maxY);
+    } else {
+      obj.txtMin.attr({
+        "text": obj.txtMaximum
+      });
+      setDy(obj.txtMin, obj.params.minFontSize, obj.params.minY);
+    }
+  }
+
+  // overflow values
+  displayVal = val;
+  if ((val * 1) > (obj.config.max * 1)) {
+    val = (obj.config.max * 1);
+  }
+  if ((val * 1) < (obj.config.min * 1)) {
+    val = (obj.config.min * 1);
+  }
+
+  color = getColor(val, (val - obj.config.min) / (obj.config.max - obj.config.min), obj.config.levelColors, obj.config.noGradient, obj.config.customSectors);
+
+  if (obj.config.textRenderer) {
+    displayVal = obj.config.textRenderer(displayVal);
+  } else if (obj.config.humanFriendly) {
+    displayVal = humanFriendlyNumber(displayVal, obj.config.humanFriendlyDecimal) + obj.config.symbol;
+  } else if (obj.config.formatNumber) {
+    displayVal = formatNumber((displayVal * 1).toFixed(obj.config.decimals)) + obj.config.symbol;
+  } else {
+    displayVal = (displayVal * 1).toFixed(obj.config.decimals) + obj.config.symbol;
+  }
+  obj.originalValue = displayVal;
+  obj.config.value = val * 1;
+
+  if (!obj.config.counter) {
+    obj.txtValue.attr({
+      "text": displayVal
+    });
+    setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
+  }
+
+  var rvl = obj.config.value;
+  if (obj.config.reverse) {
+    rvl = (obj.config.max * 1) + (obj.config.min * 1) - (obj.config.value * 1);
+  }
+  obj.level.animate({
+    pki: [
+      rvl,
+      obj.config.min,
+      obj.config.max,
+      obj.params.widgetW,
+      obj.params.widgetH,
+      obj.params.dx,
+      obj.params.dy,
+      obj.config.gaugeWidthScale,
+      obj.config.donut,
+      obj.config.reverse
+    ],
+    "fill": color
+  }, obj.config.refreshAnimationTime, obj.config.refreshAnimationType);
+
+  if (obj.config.pointer) {
+    obj.needle.animate({
+      ndl: [
+        rvl,
+        obj.config.min,
+        obj.config.max,
+        obj.params.widgetW,
+        obj.params.widgetH,
+        obj.params.dx,
+        obj.params.dy,
+        obj.config.gaugeWidthScale,
+        obj.config.donut
+      ]
+    }, obj.config.refreshAnimationTime, obj.config.refreshAnimationType);
+  }
+
+  // var clear
+  obj, displayVal, color, max = null;
+};
+
+/** Generate shadow */
+JustGage.prototype.generateShadow = function(svg, defs) {
+
+  var obj = this;
+  var sid = "inner-shadow-" + obj.config.id;
+  var gaussFilter, feOffset, feGaussianBlur, feComposite1, feFlood, feComposite2, feComposite3;
+
+  // FILTER
+  gaussFilter = document.createElementNS(svg, "filter");
+  gaussFilter.setAttribute("id", sid);
+  defs.appendChild(gaussFilter);
+
+  // offset
+  feOffset = document.createElementNS(svg, "feOffset");
+  feOffset.setAttribute("dx", 0);
+  feOffset.setAttribute("dy", obj.config.shadowVerticalOffset);
+  gaussFilter.appendChild(feOffset);
+
+  // blur
+  feGaussianBlur = document.createElementNS(svg, "feGaussianBlur");
+  feGaussianBlur.setAttribute("result", "offset-blur");
+  feGaussianBlur.setAttribute("stdDeviation", obj.config.shadowSize);
+  gaussFilter.appendChild(feGaussianBlur);
+
+  // composite 1
+  feComposite1 = document.createElementNS(svg, "feComposite");
+  feComposite1.setAttribute("operator", "out");
+  feComposite1.setAttribute("in", "SourceGraphic");
+  feComposite1.setAttribute("in2", "offset-blur");
+  feComposite1.setAttribute("result", "inverse");
+  gaussFilter.appendChild(feComposite1);
+
+  // flood
+  feFlood = document.createElementNS(svg, "feFlood");
+  feFlood.setAttribute("flood-color", "black");
+  feFlood.setAttribute("flood-opacity", obj.config.shadowOpacity);
+  feFlood.setAttribute("result", "color");
+  gaussFilter.appendChild(feFlood);
+
+  // composite 2
+  feComposite2 = document.createElementNS(svg, "feComposite");
+  feComposite2.setAttribute("operator", "in");
+  feComposite2.setAttribute("in", "color");
+  feComposite2.setAttribute("in2", "inverse");
+  feComposite2.setAttribute("result", "shadow");
+  gaussFilter.appendChild(feComposite2);
+
+  // composite 3
+  feComposite3 = document.createElementNS(svg, "feComposite");
+  feComposite3.setAttribute("operator", "over");
+  feComposite3.setAttribute("in", "shadow");
+  feComposite3.setAttribute("in2", "SourceGraphic");
+  gaussFilter.appendChild(feComposite3);
+
+  // set shadow
+  if (!obj.config.hideInnerShadow) {
+    obj.canvas.canvas.childNodes[2].setAttribute("filter", "url(#" + sid + ")");
+    obj.canvas.canvas.childNodes[3].setAttribute("filter", "url(#" + sid + ")");
+  }
+
+  // var clear
+  gaussFilter, feOffset, feGaussianBlur, feComposite1, feFlood, feComposite2, feComposite3 = null;
+};
+
+//
+// tiny helper function to lookup value of a key from two hash tables
+// if none found, return defaultvalue
+//
+// key: string
+// tablea: object
+// tableb: DOMStringMap|object
+// defval: string|integer|float|null
+// datatype: return datatype
+// delimiter: delimiter to be used in conjunction with datatype formatting
+//
+function kvLookup(key, tablea, tableb, defval, datatype, delimiter) {
+  var val = defval;
+  var canConvert = false;
+  if (!(key === null || key === undefined)) {
+    if (tableb !== null && tableb !== undefined && typeof tableb === "object" && key in tableb) {
+      val = tableb[key];
+      canConvert = true;
+    } else if (tablea !== null && tablea !== undefined && typeof tablea === "object" && key in tablea) {
+      val = tablea[key];
+      canConvert = true;
+    } else {
+      val = defval;
+    }
+    if (canConvert === true) {
+      if (datatype !== null && datatype !== undefined) {
+        switch (datatype) {
+          case 'int':
+            val = parseInt(val, 10);
+            break;
+          case 'float':
+            val = parseFloat(val);
+            break;
+          default:
+            break;
+        }
+      }
+    }
+  }
+  return val;
+};
+
+/** Get color for value */
+function getColor(val, pct, col, noGradient, custSec) {
+
+  var no, inc, colors, percentage, rval, gval, bval, lower, upper, range, rangePct, pctLower, pctUpper, color;
+  var noGradient = noGradient || custSec.length > 0;
+
+  if (custSec.length > 0) {
+    for (var i = 0; i < custSec.length; i++) {
+      if (val > custSec[i].lo && val <= custSec[i].hi) {
+        return custSec[i].color;
+      }
+    }
+  }
+
+  no = col.length;
+  if (no === 1) return col[0];
+  inc = (noGradient) ? (1 / no) : (1 / (no - 1));
+  colors = [];
+  for (i = 0; i < col.length; i++) {
+    percentage = (noGradient) ? (inc * (i + 1)) : (inc * i);
+    rval = parseInt((cutHex(col[i])).substring(0, 2), 16);
+    gval = parseInt((cutHex(col[i])).substring(2, 4), 16);
+    bval = parseInt((cutHex(col[i])).substring(4, 6), 16);
+    colors[i] = {
+      pct: percentage,
+      color: {
+        r: rval,
+        g: gval,
+        b: bval
+      }
+    };
+  }
+
+  if (pct === 0) {
+    return 'rgb(' + [colors[0].color.r, colors[0].color.g, colors[0].color.b].join(',') + ')';
+  }
+
+  for (var j = 0; j < colors.length; j++) {
+    if (pct <= colors[j].pct) {
+      if (noGradient) {
+        return 'rgb(' + [colors[j].color.r, colors[j].color.g, colors[j].color.b].join(',') + ')';
+      } else {
+        lower = colors[j - 1];
+        upper = colors[j];
+        range = upper.pct - lower.pct;
+        rangePct = (pct - lower.pct) / range;
+        pctLower = 1 - rangePct;
+        pctUpper = rangePct;
+        color = {
+          r: Math.floor(lower.color.r * pctLower + upper.color.r * pctUpper),
+          g: Math.floor(lower.color.g * pctLower + upper.color.g * pctUpper),
+          b: Math.floor(lower.color.b * pctLower + upper.color.b * pctUpper)
+        };
+        return 'rgb(' + [color.r, color.g, color.b].join(',') + ')';
+      }
+    }
+  }
+
+}
+
+/** Fix Raphael display:none tspan dy attribute bug */
+function setDy(elem, fontSize, txtYpos) {
+  if ((!ie || ie > 9) && elem.node.firstChild.attributes.dy) {
+    elem.node.firstChild.attributes.dy.value = 0;
+  }
+}
+
+/** Random integer  */
+function getRandomInt(min, max) {
+  return Math.floor(Math.random() * (max - min + 1)) + min;
+}
+
+/**  Cut hex  */
+function cutHex(str) {
+  return (str.charAt(0) == "#") ? str.substring(1, 7) : str;
+}
+
+/**  Human friendly number suffix - From: http://stackoverflow.com/questions/2692323/code-golf-friendly-number-abbreviator */
+function humanFriendlyNumber(n, d) {
+  var p, d2, i, s;
+
+  p = Math.pow;
+  d2 = p(10, d);
+  i = 7;
+  while (i) {
+    s = p(10, i-- * 3);
+    if (s <= n) {
+      n = Math.round(n * d2 / s) / d2 + "KMGTPE" [i];
+    }
+  }
+  return n;
+}
+
+/** Format numbers with commas - From: http://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript */
+function formatNumber(x) {
+  var parts = x.toString().split(".");
+  parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
+  return parts.join(".");
+}
+
+/**  Get style  */
+function getStyle(oElm, strCssRule) {
+  var strValue = "";
+  if (document.defaultView && document.defaultView.getComputedStyle) {
+    strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
+  } else if (oElm.currentStyle) {
+    strCssRule = strCssRule.replace(/\-(\w)/g, function(strMatch, p1) {
+      return p1.toUpperCase();
+    });
+    strValue = oElm.currentStyle[strCssRule];
+  }
+  return strValue;
+}
+
+/**  Create Element NS Ready  */
+function onCreateElementNsReady(func) {
+  if (document.createElementNS !== undefined) {
+    func();
+  } else {
+    setTimeout(function() {
+      onCreateElementNsReady(func);
+    }, 100);
+  }
+}
+
+/**  Get IE version  */
+// ----------------------------------------------------------
+// A short snippet for detecting versions of IE in JavaScript
+// without resorting to user-agent sniffing
+// ----------------------------------------------------------
+// If you're not in IE (or IE version is less than 5) then:
+// ie === undefined
+// If you're in IE (>=5) then you can determine which version:
+// ie === 7; // IE7
+// Thus, to detect IE:
+// if (ie) {}
+// And to detect the version:
+// ie === 6 // IE6
+// ie > 7 // IE8, IE9 ...
+// ie < 9 // Anything less than IE9
+// ----------------------------------------------------------
+// UPDATE: Now using Live NodeList idea from @jdalton
+var ie = (function() {
+
+  var undef,
+    v = 3,
+    div = document.createElement('div'),
+    all = div.getElementsByTagName('i');
+
+  while (
+    div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
+    all[0]
+  );
+  return v > 4 ? v : undef;
+}());
+
+// extend target object with second object
+function extend(out) {
+  out = out || {};
+
+  for (var i = 1; i < arguments.length; i++) {
+    if (!arguments[i])
+      continue;
+
+    for (var key in arguments[i]) {
+      if (arguments[i].hasOwnProperty(key))
+        out[key] = arguments[i][key];
+    }
+  }
+
+  return out;
+};
Index: public/vendors/charts/justgage/raphael-2.1.4.min.js
===================================================================
--- public/vendors/charts/justgage/raphael-2.1.4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/justgage/raphael-2.1.4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,12 @@
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ Raphaël 2.1.4 - JavaScript Vector Library                          │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com)    │ \\
+// │ Copyright © 2008-2012 Sencha Labs (http://sencha.com)              │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+!function(a,b){"function"==typeof define&&define.amd?define("eve",function(){return b()}):"object"==typeof exports?module.exports=b():a.eve=b()}(this,function(){var a,b,c="0.4.2",d="hasOwnProperty",e=/[\.\/]/,f="*",g=function(){},h=function(a,b){return a-b},i={n:{}},j=function(c,d){c=String(c);var e,f=b,g=Array.prototype.slice.call(arguments,2),i=j.listeners(c),k=0,l=[],m={},n=[],o=a;a=c,b=0;for(var p=0,q=i.length;q>p;p++)"zIndex"in i[p]&&(l.push(i[p].zIndex),i[p].zIndex<0&&(m[i[p].zIndex]=i[p]));for(l.sort(h);l[k]<0;)if(e=m[l[k++]],n.push(e.apply(d,g)),b)return b=f,n;for(p=0;q>p;p++)if(e=i[p],"zIndex"in e)if(e.zIndex==l[k]){if(n.push(e.apply(d,g)),b)break;do if(k++,e=m[l[k]],e&&n.push(e.apply(d,g)),b)break;while(e)}else m[e.zIndex]=e;else if(n.push(e.apply(d,g)),b)break;return b=f,a=o,n.length?n:null};return j._events=i,j.listeners=function(a){var b,c,d,g,h,j,k,l,m=a.split(e),n=i,o=[n],p=[];for(g=0,h=m.length;h>g;g++){for(l=[],j=0,k=o.length;k>j;j++)for(n=o[j].n,c=[n[m[g]],n[f]],d=2;d--;)b=c[d],b&&(l.push(b),p=p.concat(b.f||[]));o=l}return p},j.on=function(a,b){if(a=String(a),"function"!=typeof b)return function(){};for(var c=a.split(e),d=i,f=0,h=c.length;h>f;f++)d=d.n,d=d.hasOwnProperty(c[f])&&d[c[f]]||(d[c[f]]={n:{}});for(d.f=d.f||[],f=0,h=d.f.length;h>f;f++)if(d.f[f]==b)return g;return d.f.push(b),function(a){+a==+a&&(b.zIndex=+a)}},j.f=function(a){var b=[].slice.call(arguments,1);return function(){j.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}},j.stop=function(){b=1},j.nt=function(b){return b?new RegExp("(?:\\.|\\/|^)"+b+"(?:\\.|\\/|$)").test(a):a},j.nts=function(){return a.split(e)},j.off=j.unbind=function(a,b){if(!a)return void(j._events=i={n:{}});var c,g,h,k,l,m,n,o=a.split(e),p=[i];for(k=0,l=o.length;l>k;k++)for(m=0;m<p.length;m+=h.length-2){if(h=[m,1],c=p[m].n,o[k]!=f)c[o[k]]&&h.push(c[o[k]]);else for(g in c)c[d](g)&&h.push(c[g]);p.splice.apply(p,h)}for(k=0,l=p.length;l>k;k++)for(c=p[k];c.n;){if(b){if(c.f){for(m=0,n=c.f.length;n>m;m++)if(c.f[m]==b){c.f.splice(m,1);break}!c.f.length&&delete c.f}for(g in c.n)if(c.n[d](g)&&c.n[g].f){var q=c.n[g].f;for(m=0,n=q.length;n>m;m++)if(q[m]==b){q.splice(m,1);break}!q.length&&delete c.n[g].f}}else{delete c.f;for(g in c.n)c.n[d](g)&&c.n[g].f&&delete c.n[g].f}c=c.n}},j.once=function(a,b){var c=function(){return j.unbind(a,c),b.apply(this,arguments)};return j.on(a,c)},j.version=c,j.toString=function(){return"You are running Eve "+c},j}),function(a,b){"function"==typeof define&&define.amd?define("raphael.core",["eve"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("eve")):a.Raphael=b(a.eve)}(this,function(a){function b(c){if(b.is(c,"function"))return t?c():a.on("raphael.DOMload",c);if(b.is(c,U))return b._engine.create[C](b,c.splice(0,3+b.is(c[0],S))).add(c);var d=Array.prototype.slice.call(arguments,0);if(b.is(d[d.length-1],"function")){var e=d.pop();return t?e.call(b._engine.create[C](b,d)):a.on("raphael.DOMload",function(){e.call(b._engine.create[C](b,d))})}return b._engine.create[C](b,arguments)}function c(a){if("function"==typeof a||Object(a)!==a)return a;var b=new a.constructor;for(var d in a)a[y](d)&&(b[d]=c(a[d]));return b}function d(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function e(a,b,c){function e(){var f=Array.prototype.slice.call(arguments,0),g=f.join("␀"),h=e.cache=e.cache||{},i=e.count=e.count||[];return h[y](g)?(d(i,g),c?c(h[g]):h[g]):(i.length>=1e3&&delete h[i.shift()],i.push(g),h[g]=a[C](b,f),c?c(h[g]):h[g])}return e}function f(){return this.hex}function g(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function h(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function i(a,b,c,d,e,f,g,i,j){null==j&&(j=1),j=j>1?1:0>j?0:j;for(var k=j/2,l=12,m=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0,p=0;l>p;p++){var q=k*m[p]+k,r=h(q,a,c,e,g),s=h(q,b,d,f,i),t=r*r+s*s;o+=n[p]*M.sqrt(t)}return k*o}function j(a,b,c,d,e,f,g,h,j){if(!(0>j||i(a,b,c,d,e,f,g,h)<j)){var k,l=1,m=l/2,n=l-m,o=.01;for(k=i(a,b,c,d,e,f,g,h,n);P(k-j)>o;)m/=2,n+=(j>k?1:-1)*m,k=i(a,b,c,d,e,f,g,h,n);return n}}function k(a,b,c,d,e,f,g,h){if(!(N(a,c)<O(e,g)||O(a,c)>N(e,g)||N(b,d)<O(f,h)||O(b,d)>N(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(k){var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(!(n<+O(a,c).toFixed(2)||n>+N(a,c).toFixed(2)||n<+O(e,g).toFixed(2)||n>+N(e,g).toFixed(2)||o<+O(b,d).toFixed(2)||o>+N(b,d).toFixed(2)||o<+O(f,h).toFixed(2)||o>+N(f,h).toFixed(2)))return{x:l,y:m}}}}function l(a,c,d){var e=b.bezierBBox(a),f=b.bezierBBox(c);if(!b.isBBoxIntersect(e,f))return d?0:[];for(var g=i.apply(0,a),h=i.apply(0,c),j=N(~~(g/5),1),l=N(~~(h/5),1),m=[],n=[],o={},p=d?0:[],q=0;j+1>q;q++){var r=b.findDotsAtSegment.apply(b,a.concat(q/j));m.push({x:r.x,y:r.y,t:q/j})}for(q=0;l+1>q;q++)r=b.findDotsAtSegment.apply(b,c.concat(q/l)),n.push({x:r.x,y:r.y,t:q/l});for(q=0;j>q;q++)for(var s=0;l>s;s++){var t=m[q],u=m[q+1],v=n[s],w=n[s+1],x=P(u.x-t.x)<.001?"y":"x",y=P(w.x-v.x)<.001?"y":"x",z=k(t.x,t.y,u.x,u.y,v.x,v.y,w.x,w.y);if(z){if(o[z.x.toFixed(4)]==z.y.toFixed(4))continue;o[z.x.toFixed(4)]=z.y.toFixed(4);var A=t.t+P((z[x]-t[x])/(u[x]-t[x]))*(u.t-t.t),B=v.t+P((z[y]-v[y])/(w[y]-v[y]))*(w.t-v.t);A>=0&&1.001>=A&&B>=0&&1.001>=B&&(d?p++:p.push({x:z.x,y:z.y,t1:O(A,1),t2:O(B,1)}))}}return p}function m(a,c,d){a=b._path2curve(a),c=b._path2curve(c);for(var e,f,g,h,i,j,k,m,n,o,p=d?0:[],q=0,r=a.length;r>q;q++){var s=a[q];if("M"==s[0])e=i=s[1],f=j=s[2];else{"C"==s[0]?(n=[e,f].concat(s.slice(1)),e=n[6],f=n[7]):(n=[e,f,e,f,i,j,i,j],e=i,f=j);for(var t=0,u=c.length;u>t;t++){var v=c[t];if("M"==v[0])g=k=v[1],h=m=v[2];else{"C"==v[0]?(o=[g,h].concat(v.slice(1)),g=o[6],h=o[7]):(o=[g,h,g,h,k,m,k,m],g=k,h=m);var w=l(n,o,d);if(d)p+=w;else{for(var x=0,y=w.length;y>x;x++)w[x].segment1=q,w[x].segment2=t,w[x].bez1=n,w[x].bez2=o;p=p.concat(w)}}}}}return p}function n(a,b,c,d,e,f){null!=a?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function o(){return this.x+G+this.y+G+this.width+" × "+this.height}function p(a,b,c,d,e,f){function g(a){return((l*a+k)*a+j)*a}function h(a,b){var c=i(a,b);return((o*c+n)*c+m)*c}function i(a,b){var c,d,e,f,h,i;for(e=a,i=0;8>i;i++){if(f=g(e)-a,P(f)<b)return e;if(h=(3*l*e+2*k)*e+j,P(h)<1e-6)break;e-=f/h}if(c=0,d=1,e=a,c>e)return c;if(e>d)return d;for(;d>c;){if(f=g(e),P(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}var j=3*b,k=3*(d-b)-j,l=1-j-k,m=3*c,n=3*(e-c)-m,o=1-m-n;return h(a,1/(200*f))}function q(a,b){var c=[],d={};if(this.ms=b,this.times=1,a){for(var e in a)a[y](e)&&(d[$(e)]=a[e],c.push($(e)));c.sort(ka)}this.anim=d,this.top=c[c.length-1],this.percents=c}function r(c,d,e,f,g,h){e=$(e);var i,j,k,l,m,o,q=c.ms,r={},s={},t={};if(f)for(w=0,x=fb.length;x>w;w++){var u=fb[w];if(u.el.id==d.id&&u.anim==c){u.percent!=e?(fb.splice(w,1),k=1):j=u,d.attr(u.totalOrigin);break}}else f=+s;for(var w=0,x=c.percents.length;x>w;w++){if(c.percents[w]==e||c.percents[w]>f*c.top){e=c.percents[w],m=c.percents[w-1]||0,q=q/c.top*(e-m),l=c.percents[w+1],i=c.anim[e];break}f&&d.attr(c.anim[c.percents[w]])}if(i){if(j)j.initstatus=f,j.start=new Date-j.ms*f;else{for(var z in i)if(i[y](z)&&(ca[y](z)||d.paper.customAttributes[y](z)))switch(r[z]=d.attr(z),null==r[z]&&(r[z]=ba[z]),s[z]=i[z],ca[z]){case S:t[z]=(s[z]-r[z])/q;break;case"colour":r[z]=b.getRGB(r[z]);var A=b.getRGB(s[z]);t[z]={r:(A.r-r[z].r)/q,g:(A.g-r[z].g)/q,b:(A.b-r[z].b)/q};break;case"path":var B=Ia(r[z],s[z]),C=B[1];for(r[z]=B[0],t[z]=[],w=0,x=r[z].length;x>w;w++){t[z][w]=[0];for(var E=1,F=r[z][w].length;F>E;E++)t[z][w][E]=(C[w][E]-r[z][w][E])/q}break;case"transform":var G=d._,J=Na(G[z],s[z]);if(J)for(r[z]=J.from,s[z]=J.to,t[z]=[],t[z].real=!0,w=0,x=r[z].length;x>w;w++)for(t[z][w]=[r[z][w][0]],E=1,F=r[z][w].length;F>E;E++)t[z][w][E]=(s[z][w][E]-r[z][w][E])/q;else{var K=d.matrix||new n,L={_:{transform:G.transform},getBBox:function(){return d.getBBox(1)}};r[z]=[K.a,K.b,K.c,K.d,K.e,K.f],La(L,s[z]),s[z]=L._.transform,t[z]=[(L.matrix.a-K.a)/q,(L.matrix.b-K.b)/q,(L.matrix.c-K.c)/q,(L.matrix.d-K.d)/q,(L.matrix.e-K.e)/q,(L.matrix.f-K.f)/q]}break;case"csv":var M=H(i[z])[I](v),N=H(r[z])[I](v);if("clip-rect"==z)for(r[z]=N,t[z]=[],w=N.length;w--;)t[z][w]=(M[w]-r[z][w])/q;s[z]=M;break;default:for(M=[][D](i[z]),N=[][D](r[z]),t[z]=[],w=d.paper.customAttributes[z].length;w--;)t[z][w]=((M[w]||0)-(N[w]||0))/q}var O=i.easing,P=b.easing_formulas[O];if(!P)if(P=H(O).match(Y),P&&5==P.length){var Q=P;P=function(a){return p(a,+Q[1],+Q[2],+Q[3],+Q[4],q)}}else P=la;if(o=i.start||c.start||+new Date,u={anim:c,percent:e,timestamp:o,start:o+(c.del||0),status:0,initstatus:f||0,stop:!1,ms:q,easing:P,from:r,diff:t,to:s,el:d,callback:i.callback,prev:m,next:l,repeat:h||c.times,origin:d.attr(),totalOrigin:g},fb.push(u),f&&!j&&!k&&(u.stop=!0,u.start=new Date-q*f,1==fb.length))return hb();k&&(u.start=new Date-u.ms*f),1==fb.length&&gb(hb)}a("raphael.anim.start."+d.id,d,c)}}function s(a){for(var b=0;b<fb.length;b++)fb[b].el.paper==a&&fb.splice(b--,1)}b.version="2.1.4",b.eve=a;var t,u,v=/[, ]+/,w={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},x=/\{(\d+)\}/g,y="hasOwnProperty",z={doc:document,win:window},A={was:Object.prototype[y].call(z.win,"Raphael"),is:z.win.Raphael},B=function(){this.ca=this.customAttributes={}},C="apply",D="concat",E="ontouchstart"in z.win||z.win.DocumentTouch&&z.doc instanceof DocumentTouch,F="",G=" ",H=String,I="split",J="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[I](G),K={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},L=H.prototype.toLowerCase,M=Math,N=M.max,O=M.min,P=M.abs,Q=M.pow,R=M.PI,S="number",T="string",U="array",V=Object.prototype.toString,W=(b._ISURL=/^url\(['"]?(.+?)['"]?\)$/i,/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i),X={NaN:1,Infinity:1,"-Infinity":1},Y=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,Z=M.round,$=parseFloat,_=parseInt,aa=H.prototype.toUpperCase,ba=b._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},ca=b._availableAnimAttrs={blur:S,"clip-rect":"csv",cx:S,cy:S,fill:"colour","fill-opacity":S,"font-size":S,height:S,opacity:S,path:"path",r:S,rx:S,ry:S,stroke:"colour","stroke-opacity":S,"stroke-width":S,transform:"transform",width:S,x:S,y:S},da=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,ea={hs:1,rg:1},fa=/,?([achlmqrstvxz]),?/gi,ga=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,ha=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,ia=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi,ja=(b._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,{}),ka=function(a,b){return $(a)-$(b)},la=function(a){return a},ma=b._rectPath=function(a,b,c,d,e){return e?[["M",a+e,b],["l",c-2*e,0],["a",e,e,0,0,1,e,e],["l",0,d-2*e],["a",e,e,0,0,1,-e,e],["l",2*e-c,0],["a",e,e,0,0,1,-e,-e],["l",0,2*e-d],["a",e,e,0,0,1,e,-e],["z"]]:[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]]},na=function(a,b,c,d){return null==d&&(d=c),[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},oa=b._getPath={path:function(a){return a.attr("path")},circle:function(a){var b=a.attrs;return na(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return na(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return ma(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return ma(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return ma(b.x,b.y,b.width,b.height)},set:function(a){var b=a._getBBox();return ma(b.x,b.y,b.width,b.height)}},pa=b.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g,h,i;for(a=Ia(a),e=0,g=a.length;g>e;e++)for(i=a[e],f=1,h=i.length;h>f;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d;return a};if(b._g=z,b.type=z.win.SVGAngle||z.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML","VML"==b.type){var qa,ra=z.doc.createElement("div");if(ra.innerHTML='<v:shape adj="1"/>',qa=ra.firstChild,qa.style.behavior="url(#default#VML)",!qa||"object"!=typeof qa.adj)return b.type=F;ra=null}b.svg=!(b.vml="VML"==b.type),b._Paper=B,b.fn=u=B.prototype=b.prototype,b._id=0,b._oid=0,b.is=function(a,b){return b=L.call(b),"finite"==b?!X[y](+a):"array"==b?a instanceof Array:"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||"array"==b&&Array.isArray&&Array.isArray(a)||V.call(a).slice(8,-1).toLowerCase()==b},b.angle=function(a,c,d,e,f,g){if(null==f){var h=a-d,i=c-e;return h||i?(180+180*M.atan2(-i,-h)/R+360)%360:0}return b.angle(a,c,f,g)-b.angle(d,e,f,g)},b.rad=function(a){return a%360*R/180},b.deg=function(a){return Math.round(180*a/R%360*1e3)/1e3},b.snapTo=function(a,c,d){if(d=b.is(d,"finite")?d:10,b.is(a,U)){for(var e=a.length;e--;)if(P(a[e]-c)<=d)return a[e]}else{a=+a;var f=c%a;if(d>f)return c-f;if(f>a-d)return c-f+a}return c};b.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=16*M.random()|0,c="x"==a?b:3&b|8;return c.toString(16)});b.setWindow=function(c){a("raphael.setWindow",b,z.win,c),z.win=c,z.doc=z.win.document,b._engine.initWin&&b._engine.initWin(z.win)};var sa=function(a){if(b.vml){var c,d=/^\s+|\s+$/g;try{var f=new ActiveXObject("htmlfile");f.write("<body>"),f.close(),c=f.body}catch(g){c=createPopup().document.body}var h=c.createTextRange();sa=e(function(a){try{c.style.color=H(a).replace(d,F);var b=h.queryCommandValue("ForeColor");return b=(255&b)<<16|65280&b|(16711680&b)>>>16,"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=z.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",z.doc.body.appendChild(i),sa=e(function(a){return i.style.color=a,z.doc.defaultView.getComputedStyle(i,F).getPropertyValue("color")})}return sa(a)},ta=function(){return"hsb("+[this.h,this.s,this.b]+")"},ua=function(){return"hsl("+[this.h,this.s,this.l]+")"},va=function(){return this.hex},wa=function(a,c,d){if(null==c&&b.is(a,"object")&&"r"in a&&"g"in a&&"b"in a&&(d=a.b,c=a.g,a=a.r),null==c&&b.is(a,T)){var e=b.getRGB(a);a=e.r,c=e.g,d=e.b}return(a>1||c>1||d>1)&&(a/=255,c/=255,d/=255),[a,c,d]},xa=function(a,c,d,e){a*=255,c*=255,d*=255;var f={r:a,g:c,b:d,hex:b.rgb(a,c,d),toString:va};return b.is(e,"finite")&&(f.opacity=e),f};b.color=function(a){var c;return b.is(a,"object")&&"h"in a&&"s"in a&&"b"in a?(c=b.hsb2rgb(a),a.r=c.r,a.g=c.g,a.b=c.b,a.hex=c.hex):b.is(a,"object")&&"h"in a&&"s"in a&&"l"in a?(c=b.hsl2rgb(a),a.r=c.r,a.g=c.g,a.b=c.b,a.hex=c.hex):(b.is(a,"string")&&(a=b.getRGB(a)),b.is(a,"object")&&"r"in a&&"g"in a&&"b"in a?(c=b.rgb2hsl(a),a.h=c.h,a.s=c.s,a.l=c.l,c=b.rgb2hsb(a),a.v=c.b):(a={hex:"none"},a.r=a.g=a.b=a.h=a.s=a.v=a.l=-1)),a.toString=va,a},b.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,d=a.o,a=a.h),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-P(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],xa(e,f,g,d)},b.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h),(a>1||b>1||c>1)&&(a/=360,b/=100,c/=100),a*=360;var e,f,g,h,i;return a=a%360/60,i=2*b*(.5>c?c:1-c),h=i*(1-P(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],xa(e,f,g,d)},b.rgb2hsb=function(a,b,c){c=wa(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;return f=N(a,b,c),g=f-O(a,b,c),d=0==g?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=0==g?0:g/f,{h:d,s:e,b:f,toString:ta}},b.rgb2hsl=function(a,b,c){c=wa(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;return g=N(a,b,c),h=O(a,b,c),i=g-h,d=0==i?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=0==i?0:.5>f?i/(2*f):i/(2-2*f),{h:d,s:e,l:f,toString:ua}},b._path2string=function(){return this.join(",").replace(fa,"$1")};b._preload=function(a,b){var c=z.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,z.doc.body.removeChild(this)},c.onerror=function(){z.doc.body.removeChild(this)},z.doc.body.appendChild(c),c.src=a};b.getRGB=e(function(a){if(!a||(a=H(a)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:f};if("none"==a)return{r:-1,g:-1,b:-1,hex:"none",toString:f};!(ea[y](a.toLowerCase().substring(0,2))||"#"==a.charAt())&&(a=sa(a));var c,d,e,g,h,i,j=a.match(W);return j?(j[2]&&(e=_(j[2].substring(5),16),d=_(j[2].substring(3,5),16),c=_(j[2].substring(1,3),16)),j[3]&&(e=_((h=j[3].charAt(3))+h,16),d=_((h=j[3].charAt(2))+h,16),c=_((h=j[3].charAt(1))+h,16)),j[4]&&(i=j[4][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),"rgba"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100)),j[5]?(i=j[5][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(c/=360),"hsba"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),b.hsb2rgb(c,d,e,g)):j[6]?(i=j[6][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(c/=360),"hsla"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),b.hsl2rgb(c,d,e,g)):(j={r:c,g:d,b:e,toString:f},j.hex="#"+(16777216|e|d<<8|c<<16).toString(16).slice(1),b.is(g,"finite")&&(j.opacity=g),j)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:f}},b),b.hsb=e(function(a,c,d){return b.hsb2rgb(a,c,d).hex}),b.hsl=e(function(a,c,d){return b.hsl2rgb(a,c,d).hex}),b.rgb=e(function(a,b,c){function d(a){return a+.5|0}return"#"+(16777216|d(c)|d(b)<<8|d(a)<<16).toString(16).slice(1)}),b.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);return b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b})),c.hex},b.getColor.reset=function(){delete this.start},b.parsePathString=function(a){if(!a)return null;var c=ya(a);if(c.arr)return Aa(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];return b.is(a,U)&&b.is(a[0],U)&&(e=Aa(a)),e.length||H(a).replace(ga,function(a,b,c){var f=[],g=b.toLowerCase();if(c.replace(ia,function(a,b){b&&f.push(+b)}),"m"==g&&f.length>2&&(e.push([b][D](f.splice(0,2))),g="l",b="m"==b?"l":"L"),"r"==g)e.push([b][D](f));else for(;f.length>=d[g]&&(e.push([b][D](f.splice(0,d[g]))),d[g]););}),e.toString=b._path2string,c.arr=Aa(e),e},b.parseTransformString=e(function(a){if(!a)return null;var c=[];return b.is(a,U)&&b.is(a[0],U)&&(c=Aa(a)),c.length||H(a).replace(ha,function(a,b,d){{var e=[];L.call(b)}d.replace(ia,function(a,b){b&&e.push(+b)}),c.push([b][D](e))}),c.toString=b._path2string,c});var ya=function(a){var b=ya.ps=ya.ps||{};return b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[y](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])}),b[a]};b.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=Q(j,3),l=Q(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*M.atan2(q-s,r-t)/R;return(q>s||t>r)&&(y+=180),{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}},b.bezierBBox=function(a,c,d,e,f,g,h,i){b.is(a,"array")||(a=[a,c,d,e,f,g,h,i]);var j=Ha.apply(null,a);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},b.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},b.isBBoxIntersect=function(a,c){var d=b.isPointInsideBBox;return d(c,a.x,a.y)||d(c,a.x2,a.y)||d(c,a.x,a.y2)||d(c,a.x2,a.y2)||d(a,c.x,c.y)||d(a,c.x2,c.y)||d(a,c.x,c.y2)||d(a,c.x2,c.y2)||(a.x<c.x2&&a.x>c.x||c.x<a.x2&&c.x>a.x)&&(a.y<c.y2&&a.y>c.y||c.y<a.y2&&c.y>a.y)},b.pathIntersection=function(a,b){return m(a,b)},b.pathIntersectionNumber=function(a,b){return m(a,b,1)},b.isPointInsidePath=function(a,c,d){var e=b.pathBBox(a);return b.isPointInsideBBox(e,c,d)&&m(a,[["M",c,d],["H",e.x2+10]],1)%2==1},b._removedFactory=function(b){return function(){a("raphael.log",null,"Raphaël: you are calling to method “"+b+"” of removed object",b)}};var za=b.pathBBox=function(a){var b=ya(a);if(b.bbox)return c(b.bbox);if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=Ia(a);for(var d,e=0,f=0,g=[],h=[],i=0,j=a.length;j>i;i++)if(d=a[i],"M"==d[0])e=d[1],f=d[2],g.push(e),h.push(f);else{var k=Ha(e,f,d[1],d[2],d[3],d[4],d[5],d[6]);g=g[D](k.min.x,k.max.x),h=h[D](k.min.y,k.max.y),e=d[5],f=d[6]}var l=O[C](0,g),m=O[C](0,h),n=N[C](0,g),o=N[C](0,h),p=n-l,q=o-m,r={x:l,y:m,x2:n,y2:o,width:p,height:q,cx:l+p/2,cy:m+q/2};return b.bbox=c(r),r},Aa=function(a){var d=c(a);return d.toString=b._path2string,d},Ba=b._pathToRelative=function(a){var c=ya(a);if(c.rel)return Aa(c.rel);b.is(a,U)&&b.is(a&&a[0],U)||(a=b.parsePathString(a));var d=[],e=0,f=0,g=0,h=0,i=0;"M"==a[0][0]&&(e=a[0][1],f=a[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=a.length;k>j;j++){var l=d[j]=[],m=a[j];if(m[0]!=L.call(m[0]))switch(l[0]=L.call(m[0]),l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;o>n;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}else{l=d[j]=[],"m"==m[0]&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;q>p;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}return d.toString=b._path2string,c.rel=Aa(d),d},Ca=b._pathToAbsolute=function(a){var c=ya(a);if(c.abs)return Aa(c.abs);if(b.is(a,U)&&b.is(a&&a[0],U)||(a=b.parsePathString(a)),!a||!a.length)return[["M",0,0]];var d=[],e=0,f=0,h=0,i=0,j=0;"M"==a[0][0]&&(e=+a[0][1],f=+a[0][2],h=e,i=f,j++,d[0]=["M",e,f]);for(var k,l,m=3==a.length&&"M"==a[0][0]&&"R"==a[1][0].toUpperCase()&&"Z"==a[2][0].toUpperCase(),n=j,o=a.length;o>n;n++){if(d.push(k=[]),l=a[n],l[0]!=aa.call(l[0]))switch(k[0]=aa.call(l[0]),k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":for(var p=[e,f][D](l.slice(1)),q=2,r=p.length;r>q;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[D](g(p,m));break;case"M":h=+l[1]+e,i=+l[2]+f;default:for(q=1,r=l.length;r>q;q++)k[q]=+l[q]+(q%2?e:f)}else if("R"==l[0])p=[e,f][D](l.slice(1)),d.pop(),d=d[D](g(p,m)),k=["R"][D](l.slice(-2));else for(var s=0,t=l.length;t>s;s++)k[s]=l[s];switch(k[0]){case"Z":e=h,f=i;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":h=k[k.length-2],i=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}return d.toString=b._path2string,c.abs=Aa(d),d},Da=function(a,b,c,d){return[a,b,c,d,c,d]},Ea=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},Fa=function(a,b,c,d,f,g,h,i,j,k){var l,m=120*R/180,n=R/180*(+f||0),o=[],p=e(function(a,b,c){var d=a*M.cos(c)-b*M.sin(c),e=a*M.sin(c)+b*M.cos(c);return{x:d,y:e}});if(k)y=k[0],z=k[1],w=k[2],x=k[3];else{l=p(a,b,-n),a=l.x,b=l.y,l=p(i,j,-n),i=l.x,j=l.y;var q=(M.cos(R/180*f),M.sin(R/180*f),(a-i)/2),r=(b-j)/2,s=q*q/(c*c)+r*r/(d*d);s>1&&(s=M.sqrt(s),c=s*c,d=s*d);var t=c*c,u=d*d,v=(g==h?-1:1)*M.sqrt(P((t*u-t*r*r-u*q*q)/(t*r*r+u*q*q))),w=v*c*r/d+(a+i)/2,x=v*-d*q/c+(b+j)/2,y=M.asin(((b-x)/d).toFixed(9)),z=M.asin(((j-x)/d).toFixed(9));y=w>a?R-y:y,z=w>i?R-z:z,0>y&&(y=2*R+y),0>z&&(z=2*R+z),h&&y>z&&(y-=2*R),!h&&z>y&&(z-=2*R)}var A=z-y;if(P(A)>m){var B=z,C=i,E=j;z=y+m*(h&&z>y?1:-1),i=w+c*M.cos(z),j=x+d*M.sin(z),o=Fa(i,j,c,d,f,0,h,C,E,[z,B,w,x])}A=z-y;var F=M.cos(y),G=M.sin(y),H=M.cos(z),J=M.sin(z),K=M.tan(A/4),L=4/3*c*K,N=4/3*d*K,O=[a,b],Q=[a+L*G,b-N*F],S=[i+L*J,j-N*H],T=[i,j];if(Q[0]=2*O[0]-Q[0],Q[1]=2*O[1]-Q[1],k)return[Q,S,T][D](o);o=[Q,S,T][D](o).join()[I](",");for(var U=[],V=0,W=o.length;W>V;V++)U[V]=V%2?p(o[V-1],o[V],n).y:p(o[V],o[V+1],n).x;return U},Ga=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:Q(j,3)*a+3*Q(j,2)*i*c+3*j*i*i*e+Q(i,3)*g,y:Q(j,3)*b+3*Q(j,2)*i*d+3*j*i*i*f+Q(i,3)*h}},Ha=e(function(a,b,c,d,e,f,g,h){var i,j=e-2*c+a-(g-2*e+c),k=2*(c-a)-2*(e-c),l=a-c,m=(-k+M.sqrt(k*k-4*j*l))/2/j,n=(-k-M.sqrt(k*k-4*j*l))/2/j,o=[b,h],p=[a,g];return P(m)>"1e12"&&(m=.5),P(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ga(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ga(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),j=f-2*d+b-(h-2*f+d),k=2*(d-b)-2*(f-d),l=b-d,m=(-k+M.sqrt(k*k-4*j*l))/2/j,n=(-k-M.sqrt(k*k-4*j*l))/2/j,P(m)>"1e12"&&(m=.5),P(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ga(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ga(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),{min:{x:O[C](0,p),y:O[C](0,o)},max:{x:N[C](0,p),y:N[C](0,o)}}}),Ia=b._path2curve=e(function(a,b){var c=!b&&ya(a);if(!b&&c.curve)return Aa(c.curve);for(var d=Ca(a),e=b&&Ca(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=(function(a,b,c){var d,e,f={T:1,Q:1};if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(!(a[0]in f)&&(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][D](Fa[C](0,[b.x,b.y][D](a.slice(1))));break;case"S":"C"==c||"S"==c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e][D](a.slice(1));break;case"T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"][D](Ea(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][D](Ea(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][D](Da(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][D](Da(b.x,b.y,a[1],b.y));break;case"V":a=["C"][D](Da(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][D](Da(b.x,b.y,b.X,b.Y))}return a}),i=function(a,b){if(a[b].length>7){a[b].shift();for(var c=a[b];c.length;)k[b]="A",e&&(l[b]="A"),a.splice(b++,0,["C"][D](c.splice(0,6)));a.splice(b,1),p=N(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&"M"==a[g][0]&&"M"!=b[g][0]&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],p=N(d.length,e&&e.length||0))},k=[],l=[],m="",n="",o=0,p=N(d.length,e&&e.length||0);p>o;o++){d[o]&&(m=d[o][0]),"C"!=m&&(k[o]=m,o&&(n=k[o-1])),d[o]=h(d[o],f,n),"A"!=k[o]&&"C"==m&&(k[o]="C"),i(d,o),e&&(e[o]&&(m=e[o][0]),"C"!=m&&(l[o]=m,o&&(n=l[o-1])),e[o]=h(e[o],g,n),"A"!=l[o]&&"C"==m&&(l[o]="C"),i(e,o)),j(d,e,f,g,o),j(e,d,g,f,o);var q=d[o],r=e&&e[o],s=q.length,t=e&&r.length;f.x=q[s-2],f.y=q[s-1],f.bx=$(q[s-4])||f.x,f.by=$(q[s-3])||f.y,g.bx=e&&($(r[t-4])||g.x),g.by=e&&($(r[t-3])||g.y),g.x=e&&r[t-2],g.y=e&&r[t-1]}return e||(c.curve=Aa(d)),e?[d,e]:d},null,Aa),Ja=(b._parseDots=e(function(a){for(var c=[],d=0,e=a.length;e>d;d++){var f={},g=a[d].match(/^([^:]*):?([\d\.]*)/);if(f.color=b.getRGB(g[1]),f.color.error)return null;f.opacity=f.color.opacity,f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),c.push(f)}for(d=1,e=c.length-1;e>d;d++)if(!c[d].offset){for(var h=$(c[d-1].offset||0),i=0,j=d+1;e>j;j++)if(c[j].offset){i=c[j].offset;break}i||(i=100,j=e),i=$(i);for(var k=(i-h)/(j-d+1);j>d;d++)h+=k,c[d].offset=h+"%"}return c}),b._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)}),Ka=(b._tofront=function(a,b){b.top!==a&&(Ja(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},b._toback=function(a,b){b.bottom!==a&&(Ja(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},b._insertafter=function(a,b,c){Ja(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},b._insertbefore=function(a,b,c){Ja(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},b.toMatrix=function(a,b){var c=za(a),d={_:{transform:F},getBBox:function(){return c}};return La(d,b),d.matrix}),La=(b.transformPath=function(a,b){return pa(a,Ka(a,b))},b._extractTransform=function(a,c){if(null==c)return a._.transform;c=H(c).replace(/\.{3}|\u2026/g,a._.transform||F);var d=b.parseTransformString(c),e=0,f=0,g=0,h=1,i=1,j=a._,k=new n;if(j.transform=d||[],d)for(var l=0,m=d.length;m>l;l++){var o,p,q,r,s,t=d[l],u=t.length,v=H(t[0]).toLowerCase(),w=t[0]!=v,x=w?k.invert():0;"t"==v&&3==u?w?(o=x.x(0,0),p=x.y(0,0),q=x.x(t[1],t[2]),r=x.y(t[1],t[2]),k.translate(q-o,r-p)):k.translate(t[1],t[2]):"r"==v?2==u?(s=s||a.getBBox(1),k.rotate(t[1],s.x+s.width/2,s.y+s.height/2),e+=t[1]):4==u&&(w?(q=x.x(t[2],t[3]),r=x.y(t[2],t[3]),k.rotate(t[1],q,r)):k.rotate(t[1],t[2],t[3]),e+=t[1]):"s"==v?2==u||3==u?(s=s||a.getBBox(1),k.scale(t[1],t[u-1],s.x+s.width/2,s.y+s.height/2),h*=t[1],i*=t[u-1]):5==u&&(w?(q=x.x(t[3],t[4]),r=x.y(t[3],t[4]),k.scale(t[1],t[2],q,r)):k.scale(t[1],t[2],t[3],t[4]),h*=t[1],i*=t[2]):"m"==v&&7==u&&k.add(t[1],t[2],t[3],t[4],t[5],t[6]),j.dirtyT=1,a.matrix=k}a.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,1==h&&1==i&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1}),Ma=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return 4==a.length?[b,0,a[2],a[3]]:[b,0];case"s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}},Na=b._equaliseTransform=function(a,c){
+c=H(c).replace(/\.{3}|\u2026/g,a),a=b.parseTransformString(a)||[],c=b.parseTransformString(c)||[];for(var d,e,f,g,h=N(a.length,c.length),i=[],j=[],k=0;h>k;k++){if(f=a[k]||Ma(c[k]),g=c[k]||Ma(f),f[0]!=g[0]||"r"==f[0].toLowerCase()&&(f[2]!=g[2]||f[3]!=g[3])||"s"==f[0].toLowerCase()&&(f[3]!=g[3]||f[4]!=g[4]))return;for(i[k]=[],j[k]=[],d=0,e=N(f.length,g.length);e>d;d++)d in f&&(i[k][d]=f[d]),d in g&&(j[k][d]=g[d])}return{from:i,to:j}};b._getContainer=function(a,c,d,e){var f;return f=null!=e||b.is(a,"object")?a:z.doc.getElementById(a),null!=f?f.tagName?null==c?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d}:{container:1,x:a,y:c,width:d,height:e}:void 0},b.pathToRelative=Ba,b._engine={},b.path2curve=Ia,b.matrix=function(a,b,c,d,e,f){return new n(a,b,c,d,e,f)},function(a){function c(a){return a[0]*a[0]+a[1]*a[1]}function d(a){var b=M.sqrt(c(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}a.add=function(a,b,c,d,e,f){var g,h,i,j,k=[[],[],[]],l=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],m=[[a,c,e],[b,d,f],[0,0,1]];for(a&&a instanceof n&&(m=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]),g=0;3>g;g++)for(h=0;3>h;h++){for(j=0,i=0;3>i;i++)j+=l[g][i]*m[i][h];k[g][h]=j}this.a=k[0][0],this.b=k[1][0],this.c=k[0][1],this.d=k[1][1],this.e=k[0][2],this.f=k[1][2]},a.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new n(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},a.clone=function(){return new n(this.a,this.b,this.c,this.d,this.e,this.f)},a.translate=function(a,b){this.add(1,0,0,1,a,b)},a.scale=function(a,b,c,d){null==b&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},a.rotate=function(a,c,d){a=b.rad(a),c=c||0,d=d||0;var e=+M.cos(a).toFixed(9),f=+M.sin(a).toFixed(9);this.add(e,f,-f,e,c,d),this.add(1,0,0,1,-c,-d)},a.x=function(a,b){return a*this.a+b*this.c+this.e},a.y=function(a,b){return a*this.b+b*this.d+this.f},a.get=function(a){return+this[H.fromCharCode(97+a)].toFixed(4)},a.toString=function(){return b.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},a.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},a.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},a.split=function(){var a={};a.dx=this.e,a.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];a.scalex=M.sqrt(c(e[0])),d(e[0]),a.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*a.shear,e[1][1]-e[0][1]*a.shear],a.scaley=M.sqrt(c(e[1])),d(e[1]),a.shear/=a.scaley;var f=-e[0][1],g=e[1][1];return 0>g?(a.rotate=b.deg(M.acos(g)),0>f&&(a.rotate=360-a.rotate)):a.rotate=b.deg(M.asin(f)),a.isSimple=!(+a.shear.toFixed(9)||a.scalex.toFixed(9)!=a.scaley.toFixed(9)&&a.rotate),a.isSuperSimple=!+a.shear.toFixed(9)&&a.scalex.toFixed(9)==a.scaley.toFixed(9)&&!a.rotate,a.noRotation=!+a.shear.toFixed(9)&&!a.rotate,a},a.toTransformString=function(a){var b=a||this[I]();return b.isSimple?(b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4),(b.dx||b.dy?"t"+[b.dx,b.dy]:F)+(1!=b.scalex||1!=b.scaley?"s"+[b.scalex,b.scaley,0,0]:F)+(b.rotate?"r"+[b.rotate,0,0]:F)):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(n.prototype);for(var Oa=function(){this.returnValue=!1},Pa=function(){return this.originalEvent.preventDefault()},Qa=function(){this.cancelBubble=!0},Ra=function(){return this.originalEvent.stopPropagation()},Sa=function(a){var b=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,c=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft;return{x:a.clientX+c,y:a.clientY+b}},Ta=function(){return z.doc.addEventListener?function(a,b,c,d){var e=function(a){var b=Sa(a);return c.call(d,a,b.x,b.y)};if(a.addEventListener(b,e,!1),E&&K[b]){var f=function(b){for(var e=Sa(b),f=b,g=0,h=b.targetTouches&&b.targetTouches.length;h>g;g++)if(b.targetTouches[g].target==a){b=b.targetTouches[g],b.originalEvent=f,b.preventDefault=Pa,b.stopPropagation=Ra;break}return c.call(d,b,e.x,e.y)};a.addEventListener(K[b],f,!1)}return function(){return a.removeEventListener(b,e,!1),E&&K[b]&&a.removeEventListener(K[b],f,!1),!0}}:z.doc.attachEvent?function(a,b,c,d){var e=function(a){a=a||z.win.event;var b=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,e=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;return a.preventDefault=a.preventDefault||Oa,a.stopPropagation=a.stopPropagation||Qa,c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){return a.detachEvent("on"+b,e),!0};return f}:void 0}(),Ua=[],Va=function(b){for(var c,d=b.clientX,e=b.clientY,f=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,g=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft,h=Ua.length;h--;){if(c=Ua[h],E&&b.touches){for(var i,j=b.touches.length;j--;)if(i=b.touches[j],i.identifier==c.el._drag.id){d=i.clientX,e=i.clientY,(b.originalEvent?b.originalEvent:b).preventDefault();break}}else b.preventDefault();var k,l=c.el.node,m=l.nextSibling,n=l.parentNode,o=l.style.display;z.win.opera&&n.removeChild(l),l.style.display="none",k=c.el.paper.getElementByPoint(d,e),l.style.display=o,z.win.opera&&(m?n.insertBefore(l,m):n.appendChild(l)),k&&a("raphael.drag.over."+c.el.id,c.el,k),d+=g,e+=f,a("raphael.drag.move."+c.el.id,c.move_scope||c.el,d-c.el._drag.x,e-c.el._drag.y,d,e,b)}},Wa=function(c){b.unmousemove(Va).unmouseup(Wa);for(var d,e=Ua.length;e--;)d=Ua[e],d.el._drag={},a("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,c);Ua=[]},Xa=b.el={},Ya=J.length;Ya--;)!function(a){b[a]=Xa[a]=function(c,d){return b.is(c,"function")&&(this.events=this.events||[],this.events.push({name:a,f:c,unbind:Ta(this.shape||this.node||z.doc,a,c,d||this)})),this},b["un"+a]=Xa["un"+a]=function(c){for(var d=this.events||[],e=d.length;e--;)d[e].name!=a||!b.is(c,"undefined")&&d[e].f!=c||(d[e].unbind(),d.splice(e,1),!d.length&&delete this.events);return this}}(J[Ya]);Xa.data=function(c,d){var e=ja[this.id]=ja[this.id]||{};if(0==arguments.length)return e;if(1==arguments.length){if(b.is(c,"object")){for(var f in c)c[y](f)&&this.data(f,c[f]);return this}return a("raphael.data.get."+this.id,this,e[c],c),e[c]}return e[c]=d,a("raphael.data.set."+this.id,this,d,c),this},Xa.removeData=function(a){return null==a?ja[this.id]={}:ja[this.id]&&delete ja[this.id][a],this},Xa.getData=function(){return c(ja[this.id]||{})},Xa.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},Xa.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var Za=[];Xa.drag=function(c,d,e,f,g,h){function i(i){(i.originalEvent||i).preventDefault();var j=i.clientX,k=i.clientY,l=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,m=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft;if(this._drag.id=i.identifier,E&&i.touches)for(var n,o=i.touches.length;o--;)if(n=i.touches[o],this._drag.id=n.identifier,n.identifier==this._drag.id){j=n.clientX,k=n.clientY;break}this._drag.x=j+m,this._drag.y=k+l,!Ua.length&&b.mousemove(Va).mouseup(Wa),Ua.push({el:this,move_scope:f,start_scope:g,end_scope:h}),d&&a.on("raphael.drag.start."+this.id,d),c&&a.on("raphael.drag.move."+this.id,c),e&&a.on("raphael.drag.end."+this.id,e),a("raphael.drag.start."+this.id,g||f||this,i.clientX+m,i.clientY+l,i)}return this._drag={},Za.push({el:this,start:i}),this.mousedown(i),this},Xa.onDragOver=function(b){b?a.on("raphael.drag.over."+this.id,b):a.unbind("raphael.drag.over."+this.id)},Xa.undrag=function(){for(var c=Za.length;c--;)Za[c].el==this&&(this.unmousedown(Za[c].start),Za.splice(c,1),a.unbind("raphael.drag.*."+this.id));!Za.length&&b.unmousemove(Va).unmouseup(Wa),Ua=[]},u.circle=function(a,c,d){var e=b._engine.circle(this,a||0,c||0,d||0);return this.__set__&&this.__set__.push(e),e},u.rect=function(a,c,d,e,f){var g=b._engine.rect(this,a||0,c||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},u.ellipse=function(a,c,d,e){var f=b._engine.ellipse(this,a||0,c||0,d||0,e||0);return this.__set__&&this.__set__.push(f),f},u.path=function(a){a&&!b.is(a,T)&&!b.is(a[0],U)&&(a+=F);var c=b._engine.path(b.format[C](b,arguments),this);return this.__set__&&this.__set__.push(c),c},u.image=function(a,c,d,e,f){var g=b._engine.image(this,a||"about:blank",c||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},u.text=function(a,c,d){var e=b._engine.text(this,a||0,c||0,H(d));return this.__set__&&this.__set__.push(e),e},u.set=function(a){!b.is(a,"array")&&(a=Array.prototype.splice.call(arguments,0,arguments.length));var c=new jb(a);return this.__set__&&this.__set__.push(c),c.paper=this,c.type="set",c},u.setStart=function(a){this.__set__=a||this.set()},u.setFinish=function(a){var b=this.__set__;return delete this.__set__,b},u.getSize=function(){var a=this.canvas.parentNode;return{width:a.offsetWidth,height:a.offsetHeight}},u.setSize=function(a,c){return b._engine.setSize.call(this,a,c)},u.setViewBox=function(a,c,d,e,f){return b._engine.setViewBox.call(this,a,c,d,e,f)},u.top=u.bottom=null,u.raphael=b;var $a=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,h=b.top+(z.win.pageYOffset||e.scrollTop||d.scrollTop)-f,i=b.left+(z.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:h,x:i}};u.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=z.doc.elementFromPoint(a,b);if(z.win.opera&&"svg"==e.tagName){var f=$a(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var h=d.getIntersectionList(g,null);h.length&&(e=h[h.length-1])}if(!e)return null;for(;e.parentNode&&e!=d.parentNode&&!e.raphael;)e=e.parentNode;return e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null},u.getElementsByBBox=function(a){var c=this.set();return this.forEach(function(d){b.isBBoxIntersect(d.getBBox(),a)&&c.push(d)}),c},u.getById=function(a){for(var b=this.bottom;b;){if(b.id==a)return b;b=b.next}return null},u.forEach=function(a,b){for(var c=this.bottom;c;){if(a.call(b,c)===!1)return this;c=c.next}return this},u.getElementsByPoint=function(a,b){var c=this.set();return this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)}),c},Xa.isPointInside=function(a,c){var d=this.realPath=oa[this.type](this);return this.attr("transform")&&this.attr("transform").length&&(d=b.transformPath(d,this.attr("transform"))),b.isPointInsidePath(d,a,c)},Xa.getBBox=function(a){if(this.removed)return{};var b=this._;return a?((b.dirty||!b.bboxwt)&&(this.realPath=oa[this.type](this),b.bboxwt=za(this.realPath),b.bboxwt.toString=o,b.dirty=0),b.bboxwt):((b.dirty||b.dirtyT||!b.bbox)&&((b.dirty||!this.realPath)&&(b.bboxwt=0,this.realPath=oa[this.type](this)),b.bbox=za(pa(this.realPath,this.matrix)),b.bbox.toString=o,b.dirty=b.dirtyT=0),b.bbox)},Xa.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());return this.__set__&&this.__set__.push(a),a},Xa.glow=function(a){if("text"==this.type)return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:null==a.opacity?.5:a.opacity,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||oa[this.type](this);f=this.matrix?pa(f,this.matrix):f;for(var g=1;c+1>g;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var _a=function(a,c,d,e,f,g,h,k,l){return null==l?i(a,c,d,e,f,g,h,k):b.findDotsAtSegment(a,c,d,e,f,g,h,k,j(a,c,d,e,f,g,h,k,l))},ab=function(a,c){return function(d,e,f){d=Ia(d);for(var g,h,i,j,k,l="",m={},n=0,o=0,p=d.length;p>o;o++){if(i=d[o],"M"==i[0])g=+i[1],h=+i[2];else{if(j=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6]),n+j>e){if(c&&!m.start){if(k=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),l+=["C"+k.start.x,k.start.y,k.m.x,k.m.y,k.x,k.y],f)return l;m.start=l,l=["M"+k.x,k.y+"C"+k.n.x,k.n.y,k.end.x,k.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!a&&!c)return k=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),{x:k.x,y:k.y,alpha:k.alpha}}n+=j,g=+i[5],h=+i[6]}l+=i.shift()+i}return m.end=l,k=a?n:c?m:b.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),k.alpha&&(k={x:k.x,y:k.y,alpha:k.alpha}),k}},bb=ab(1),cb=ab(),db=ab(0,1);b.getTotalLength=bb,b.getPointAtLength=cb,b.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return db(a,b).end;var d=db(a,c,1);return b?db(d,b).end:d},Xa.getTotalLength=function(){var a=this.getPath();if(a)return this.node.getTotalLength?this.node.getTotalLength():bb(a)},Xa.getPointAtLength=function(a){var b=this.getPath();if(b)return cb(b,a)},Xa.getPath=function(){var a,c=b._getPath[this.type];if("text"!=this.type&&"set"!=this.type)return c&&(a=c(this)),a},Xa.getSubpath=function(a,c){var d=this.getPath();if(d)return b.getSubpath(d,a,c)};var eb=b.easing_formulas={linear:function(a){return a},"<":function(a){return Q(a,1.7)},">":function(a){return Q(a,.48)},"<>":function(a){var b=.48-a/1.04,c=M.sqrt(.1734+b*b),d=c-b,e=Q(P(d),1/3)*(0>d?-1:1),f=-c-b,g=Q(P(f),1/3)*(0>f?-1:1),h=e+g+.5;return 3*(1-h)*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a-=1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){return a==!!a?a:Q(2,-10*a)*M.sin(2*(a-.075)*R/.3)+1},bounce:function(a){var b,c=7.5625,d=2.75;return 1/d>a?b=c*a*a:2/d>a?(a-=1.5/d,b=c*a*a+.75):2.5/d>a?(a-=2.25/d,b=c*a*a+.9375):(a-=2.625/d,b=c*a*a+.984375),b}};eb.easeIn=eb["ease-in"]=eb["<"],eb.easeOut=eb["ease-out"]=eb[">"],eb.easeInOut=eb["ease-in-out"]=eb["<>"],eb["back-in"]=eb.backIn,eb["back-out"]=eb.backOut;var fb=[],gb=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},hb=function(){for(var c=+new Date,d=0;d<fb.length;d++){var e=fb[d];if(!e.el.removed&&!e.paused){var f,g,h=c-e.start,i=e.ms,j=e.easing,k=e.from,l=e.diff,m=e.to,n=(e.t,e.el),o={},p={};if(e.initstatus?(h=(e.initstatus*e.anim.top-e.prev)/(e.percent-e.prev)*i,e.status=e.initstatus,delete e.initstatus,e.stop&&fb.splice(d--,1)):e.status=(e.prev+(e.percent-e.prev)*(h/i))/e.anim.top,!(0>h))if(i>h){var q=j(h/i);for(var s in k)if(k[y](s)){switch(ca[s]){case S:f=+k[s]+q*i*l[s];break;case"colour":f="rgb("+[ib(Z(k[s].r+q*i*l[s].r)),ib(Z(k[s].g+q*i*l[s].g)),ib(Z(k[s].b+q*i*l[s].b))].join(",")+")";break;case"path":f=[];for(var t=0,u=k[s].length;u>t;t++){f[t]=[k[s][t][0]];for(var v=1,w=k[s][t].length;w>v;v++)f[t][v]=+k[s][t][v]+q*i*l[s][t][v];f[t]=f[t].join(G)}f=f.join(G);break;case"transform":if(l[s].real)for(f=[],t=0,u=k[s].length;u>t;t++)for(f[t]=[k[s][t][0]],v=1,w=k[s][t].length;w>v;v++)f[t][v]=k[s][t][v]+q*i*l[s][t][v];else{var x=function(a){return+k[s][a]+q*i*l[s][a]};f=[["m",x(0),x(1),x(2),x(3),x(4),x(5)]]}break;case"csv":if("clip-rect"==s)for(f=[],t=4;t--;)f[t]=+k[s][t]+q*i*l[s][t];break;default:var z=[][D](k[s]);for(f=[],t=n.paper.customAttributes[s].length;t--;)f[t]=+z[t]+q*i*l[s][t]}o[s]=f}n.attr(o),function(b,c,d){setTimeout(function(){a("raphael.anim.frame."+b,c,d)})}(n.id,n,e.anim)}else{if(function(c,d,e){setTimeout(function(){a("raphael.anim.frame."+d.id,d,e),a("raphael.anim.finish."+d.id,d,e),b.is(c,"function")&&c.call(d)})}(e.callback,n,e.anim),n.attr(m),fb.splice(d--,1),e.repeat>1&&!e.next){for(g in m)m[y](g)&&(p[g]=e.totalOrigin[g]);e.el.attr(p),r(e.anim,e.el,e.anim.percents[0],null,e.totalOrigin,e.repeat-1)}e.next&&!e.stop&&r(e.anim,e.el,e.next,null,e.totalOrigin,e.repeat)}}}fb.length&&gb(hb)},ib=function(a){return a>255?255:0>a?0:a};Xa.animateWith=function(a,c,d,e,f,g){var h=this;if(h.removed)return g&&g.call(h),h;var i=d instanceof q?d:b.animation(d,e,f,g);r(i,h,i.percents[0],null,h.attr());for(var j=0,k=fb.length;k>j;j++)if(fb[j].anim==c&&fb[j].el==a){fb[k-1].start=fb[j].start;break}return h},Xa.onAnimation=function(b){return b?a.on("raphael.anim.frame."+this.id,b):a.unbind("raphael.anim.frame."+this.id),this},q.prototype.delay=function(a){var b=new q(this.anim,this.ms);return b.times=this.times,b.del=+a||0,b},q.prototype.repeat=function(a){var b=new q(this.anim,this.ms);return b.del=this.del,b.times=M.floor(N(a,0))||1,b},b.animation=function(a,c,d,e){if(a instanceof q)return a;(b.is(d,"function")||!d)&&(e=e||d||null,d=null),a=Object(a),c=+c||0;var f,g,h={};for(g in a)a[y](g)&&$(g)!=g&&$(g)+"%"!=g&&(f=!0,h[g]=a[g]);if(f)return d&&(h.easing=d),e&&(h.callback=e),new q({100:h},c);if(e){var i=0;for(var j in a){var k=_(j);a[y](j)&&k>i&&(i=k)}i+="%",!a[i].callback&&(a[i].callback=e)}return new q(a,c)},Xa.animate=function(a,c,d,e){var f=this;if(f.removed)return e&&e.call(f),f;var g=a instanceof q?a:b.animation(a,c,d,e);return r(g,f,g.percents[0],null,f.attr()),f},Xa.setTime=function(a,b){return a&&null!=b&&this.status(a,O(b,a.ms)/a.ms),this},Xa.status=function(a,b){var c,d,e=[],f=0;if(null!=b)return r(a,this,-1,O(b,1)),this;for(c=fb.length;c>f;f++)if(d=fb[f],d.el.id==this.id&&(!a||d.anim==a)){if(a)return d.status;e.push({anim:d.anim,status:d.status})}return a?0:e},Xa.pause=function(b){for(var c=0;c<fb.length;c++)fb[c].el.id!=this.id||b&&fb[c].anim!=b||a("raphael.anim.pause."+this.id,this,fb[c].anim)!==!1&&(fb[c].paused=!0);return this},Xa.resume=function(b){for(var c=0;c<fb.length;c++)if(fb[c].el.id==this.id&&(!b||fb[c].anim==b)){var d=fb[c];a("raphael.anim.resume."+this.id,this,d.anim)!==!1&&(delete d.paused,this.status(d.anim,d.status))}return this},Xa.stop=function(b){for(var c=0;c<fb.length;c++)fb[c].el.id!=this.id||b&&fb[c].anim!=b||a("raphael.anim.stop."+this.id,this,fb[c].anim)!==!1&&fb.splice(c--,1);return this},a.on("raphael.remove",s),a.on("raphael.clear",s),Xa.toString=function(){return"Raphaël’s object"};var jb=function(a){if(this.items=[],this.length=0,this.type="set",a)for(var b=0,c=a.length;c>b;b++)!a[b]||a[b].constructor!=Xa.constructor&&a[b].constructor!=jb||(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},kb=jb.prototype;kb.push=function(){for(var a,b,c=0,d=arguments.length;d>c;c++)a=arguments[c],!a||a.constructor!=Xa.constructor&&a.constructor!=jb||(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},kb.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},kb.forEach=function(a,b){for(var c=0,d=this.items.length;d>c;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var lb in Xa)Xa[y](lb)&&(kb[lb]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][C](c,b)})}}(lb));return kb.attr=function(a,c){if(a&&b.is(a,U)&&b.is(a[0],"object"))for(var d=0,e=a.length;e>d;d++)this.items[d].attr(a[d]);else for(var f=0,g=this.items.length;g>f;f++)this.items[f].attr(a,c);return this},kb.clear=function(){for(;this.length;)this.pop()},kb.splice=function(a,b,c){a=0>a?N(this.length+a,0):a,b=N(0,O(this.length-a,b));var d,e=[],f=[],g=[];for(d=2;d<arguments.length;d++)g.push(arguments[d]);for(d=0;b>d;d++)f.push(this[a+d]);for(;d<this.length-a;d++)e.push(this[a+d]);var h=g.length;for(d=0;d<h+e.length;d++)this.items[a+d]=this[a+d]=h>d?g[d]:e[d-h];for(d=this.items.length=this.length-=b-h;this[d];)delete this[d++];return new jb(f)},kb.exclude=function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]==a)return this.splice(b,1),!0},kb.animate=function(a,c,d,e){(b.is(d,"function")||!d)&&(e=d||null);var f,g,h=this.items.length,i=h,j=this;if(!h)return this;e&&(g=function(){!--h&&e.call(j)}),d=b.is(d,T)?d:g;var k=b.animation(a,c,d,g);for(f=this.items[--i].animate(k);i--;)this.items[i]&&!this.items[i].removed&&this.items[i].animateWith(f,k,k),this.items[i]&&!this.items[i].removed||h--;return this},kb.insertAfter=function(a){for(var b=this.items.length;b--;)this.items[b].insertAfter(a);return this},kb.getBBox=function(){for(var a=[],b=[],c=[],d=[],e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}return a=O[C](0,a),b=O[C](0,b),c=N[C](0,c),d=N[C](0,d),{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},kb.clone=function(a){a=this.paper.set();for(var b=0,c=this.items.length;c>b;b++)a.push(this.items[b].clone());return a},kb.toString=function(){return"Raphaël‘s set"},kb.glow=function(a){var b=this.paper.set();return this.forEach(function(c,d){var e=c.glow(a);null!=e&&e.forEach(function(a,c){b.push(a)})}),b},kb.isPointInside=function(a,b){var c=!1;return this.forEach(function(d){return d.isPointInside(a,b)?(c=!0,!1):void 0}),c},b.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[y](d)&&(b.face[d]=a.face[d]);if(this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b],!a.svg){b.face["units-per-em"]=_(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[y](e)){var f=a.glyphs[e];if(b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"},f.k)for(var g in f.k)f[y](g)&&(b.glyphs[e].k[g]=f.k[g])}}return a},u.getFont=function(a,c,d,e){if(e=e||"normal",d=d||"normal",c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400,b.fonts){var f=b.fonts[a];if(!f){var g=new RegExp("(^|\\s)"+a.replace(/[^\w\d\s+!~.:_-]/g,F)+"(\\s|$)","i");for(var h in b.fonts)if(b.fonts[y](h)&&g.test(h)){f=b.fonts[h];break}}var i;if(f)for(var j=0,k=f.length;k>j&&(i=f[j],i.face["font-weight"]!=c||i.face["font-style"]!=d&&i.face["font-style"]||i.face["font-stretch"]!=e);j++);return i}},u.print=function(a,c,d,e,f,g,h,i){g=g||"middle",h=N(O(h||0,1),-1),i=N(O(i||1,3),1);var j,k=H(d)[I](F),l=0,m=0,n=F;if(b.is(e,"string")&&(e=this.getFont(e)),e){j=(f||16)/e.face["units-per-em"];for(var o=e.face.bbox[I](v),p=+o[0],q=o[3]-o[1],r=0,s=+o[1]+("baseline"==g?q+ +e.face.descent:q/2),t=0,u=k.length;u>t;t++){if("\n"==k[t])l=0,x=0,m=0,r+=q*i;else{var w=m&&e.glyphs[k[t-1]]||{},x=e.glyphs[k[t]];l+=m?(w.w||e.w)+(w.k&&w.k[k[t]]||0)+e.w*h:0,m=1}x&&x.d&&(n+=b.transformPath(x.d,["t",l*j,r*j,"s",j,j,p,s,"t",(a-p)/j,(c-s)/j]))}}return this.path(n).attr({fill:"#000",stroke:"none"})},u.add=function(a){if(b.is(a,"array"))for(var c,d=this.set(),e=0,f=a.length;f>e;e++)c=a[e]||{},w[y](c.type)&&d.push(this[c.type]().attr(c));return d},b.format=function(a,c){var d=b.is(c,U)?[0][D](c):arguments;return a&&b.is(a,T)&&d.length-1&&(a=a.replace(x,function(a,b){return null==d[++b]?F:d[b]})),a||F},b.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;return c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),"function"==typeof e&&f&&(e=e()))}),e=(null==e||e==d?a:e)+""};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),b.ninja=function(){return A.was?z.win.Raphael=A.is:delete Raphael,b},b.st=kb,a.on("raphael.DOMload",function(){t=!0}),function(a,c,d){function e(){/in/.test(a.readyState)?setTimeout(e,9):b.eve("raphael.DOMload")}null==a.readyState&&a.addEventListener&&(a.addEventListener(c,d=function(){a.removeEventListener(c,d,!1),a.readyState="complete"},!1),a.readyState="loading"),e()}(document,"DOMContentLoaded"),b}),function(a,b){"function"==typeof define&&define.amd?define("raphael.svg",["raphael.core"],function(a){return b(a)}):b("object"==typeof exports?require("./raphael.core"):a.Raphael)}(this,function(a){if(!a||a.svg){var b="hasOwnProperty",c=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=a.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};a.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){"string"==typeof d&&(d=q(d));for(var f in e)e[b](f)&&("xlink:"==f.substring(0,6)?d.setAttributeNS(n,f.substring(6),c(e[f])):d.setAttribute(f,c(e[f])))}else d=a._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(b,e){var j="linear",k=b.id+e,m=.5,n=.5,o=b.node,p=b.paper,r=o.style,s=a._g.doc.getElementById(k);if(!s){if(e=c(e).replace(a._radial_gradient,function(a,b,c){if(j="radial",b&&c){m=d(b),n=d(c);var e=2*(n>.5)-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&.5!=n&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/),"linear"==j){var t=e.shift();if(t=-d(t),isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;if(k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient),!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,"radial"==j?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;y>x;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff","stop-opacity":isFinite(w[x].opacity)?w[x].opacity:1}))}}return q(o,{fill:"url('"+document.location.origin+document.location.pathname+"#"+k+"')",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1,1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if("path"==d.type){for(var g,h,i,j,k,m=c(e).toLowerCase().split("-"),n=d.paper,r=f?"end":"start",s=d.node,t=d.attrs,u=t["stroke-width"],v=m.length,w="classic",x=3,y=3,z=5;v--;)switch(m[v]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":w=m[v];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}if("open"==w?(x+=2,y+=2,z+=2,i=1,j=f?4:1,k={fill:"none",stroke:t.stroke}):(j=i=x/2,k={fill:t.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={},"none"!=w){var A="raphael-marker-"+w,B="raphael-marker-"+r+w+x+y+"-obj"+d.id;a._g.doc.getElementById(A)?p[A]++:(n.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[w],id:A})),p[A]=1);var C,D=a._g.doc.getElementById(B);D?(p[B]++,C=D.getElementsByTagName("use")[0]):(D=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:j,refY:y/2}),C=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),D.appendChild(C),n.defs.appendChild(D),p[B]=1),q(C,k);var E=i*("diamond"!=w&&"oval"!=w);f?(g=d._.arrows.startdx*u||0,h=a.getTotalLength(t.path)-E*u):(g=E*u,h=a.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),k={},k["marker-"+r]="url(#"+B+")",(h||g)&&(k.d=a.getSubpath(t.path,g,h)),q(s,k),d._.arrows[r+"Path"]=A,d._.arrows[r+"Marker"]=B,d._.arrows[r+"dx"]=E,d._.arrows[r+"Type"]=w,d._.arrows[r+"String"]=e}else f?(g=d._.arrows.startdx*u||0,h=a.getTotalLength(t.path)-g):(g=0,h=a.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),d._.arrows[r+"Path"]&&q(s,{d:a.getSubpath(t.path,g,h)}),delete d._.arrows[r+"Path"],delete d._.arrows[r+"Marker"],delete d._.arrows[r+"dx"],delete d._.arrows[r+"Type"],delete d._.arrows[r+"String"];for(k in p)if(p[b](k)&&!p[k]){var F=a._g.doc.getElementById(k);F&&F.parentNode.removeChild(F)}}},u={"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,b,d){if(b=u[c(b).toLowerCase()]){for(var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=b.length;h--;)g[h]=b[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}else q(a.node,{"stroke-dasharray":"none"})},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[b](o)){if(!a._availableAttrs[b](o))continue;var p=f[o];switch(k[o]=p,o){case"blur":d.blur(p);break;case"title":var u=i.getElementsByTagName("title");if(u.length&&(u=u[0]))u.firstChild.nodeValue=p;else{u=q("title");var w=a._g.doc.createTextNode(p);u.appendChild(w),i.appendChild(u)}break;case"href":case"target":var x=i.parentNode;if("a"!=x.tagName.toLowerCase()){var z=q("a");x.insertBefore(z,i),z.appendChild(i),x=z}"target"==o?x.setAttributeNS(n,"show","blank"==p?"new":p):x.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var A=c(p).split(j);if(4==A.length){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var B=q("clipPath"),C=q("rect");B.id=a.createUUID(),q(C,{x:A[0],y:A[1],width:A[2],height:A[3]}),B.appendChild(C),d.paper.defs.appendChild(B),q(i,{"clip-path":"url(#"+B.id+")"}),d.clip=C}if(!p){var D=i.getAttribute("clip-path");if(D){var E=a._g.doc.getElementById(D.replace(/(^url\(#|\)$)/g,l));E&&E.parentNode.removeChild(E),q(i,{"clip-path":l}),delete d.clip}}break;case"path":"path"==d.type&&(q(i,{d:p?k.path=a._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":if(i.setAttribute(o,p),d._.dirty=1,!k.fx)break;o="x",p=k.x;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if("rx"==o&&"rect"==d.type)break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":if(i.setAttribute(o,p),d._.dirty=1,!k.fy)break;o="y",p=k.y;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if("ry"==o&&"rect"==d.type)break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":"rect"==d.type?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":"image"==d.type&&i.setAttributeNS(n,"href",p);break;case"stroke-width":(1!=d._.sx||1!=d._.sy)&&(p/=g(h(d._.sx),h(d._.sy))||1),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var F=c(p).match(a._ISURL);if(F){B=q("pattern");var G=q("image");B.id=a.createUUID(),q(B,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(G,{x:0,y:0,"xlink:href":F[1]}),B.appendChild(G),function(b){a._preload(F[1],function(){var a=this.offsetWidth,c=this.offsetHeight;q(b,{width:a,height:c}),q(G,{width:a,height:c})})}(B),d.paper.defs.appendChild(B),q(i,{fill:"url(#"+B.id+")"}),d.pattern=B,d.pattern&&s(d);break}var H=a.getRGB(p);if(H.error){if(("circle"==d.type||"ellipse"==d.type||"r"!=c(p).charAt())&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var I=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(I){var J=I.getElementsByTagName("stop");q(J[J.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}}else delete f.gradient,delete k.gradient,!a.is(k.opacity,"undefined")&&a.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!a.is(k["fill-opacity"],"undefined")&&a.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});H[b]("opacity")&&q(i,{"fill-opacity":H.opacity>1?H.opacity/100:H.opacity});case"stroke":H=a.getRGB(p),i.setAttribute(o,H.hex),"stroke"==o&&H[b]("opacity")&&q(i,{"stroke-opacity":H.opacity>1?H.opacity/100:H.opacity}),"stroke"==o&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":("circle"==d.type||"ellipse"==d.type||"r"!=c(p).charAt())&&r(d,p);
+
+break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){I=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),I&&(J=I.getElementsByTagName("stop"),q(J[J.length-1],{"stop-opacity":p}));break}default:"font-size"==o&&(p=e(p,10)+"px");var K=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[K]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if("text"==d.type&&(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){for(g.text=f.text;h.firstChild;)h.removeChild(h.firstChild);for(var j,k=c(f.text).split("\n"),m=[],n=0,o=k.length;o>n;n++)j=q("tspan"),n&&q(j,{dy:i*x,x:g.x}),j.appendChild(a._g.doc.createTextNode(k[n])),h.appendChild(j),m[n]=j}else for(m=h.getElementsByTagName("tspan"),n=0,o=m.length;o>n;n++)n?q(m[n],{dy:i*x,x:g.x}):q(m[0],{dy:0});q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&a.is(r,"finite")&&q(m[0],{dy:r})}},z=function(a){return a.parentNode&&"a"===a.parentNode.tagName.toLowerCase()?a.parentNode:a},A=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.matrix=a.matrix(),this.realPath=null,this.paper=c,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},B=a.el;A.prototype=B,B.constructor=A,a._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new A(c,b);return d.type="path",w(d,{fill:"none",stroke:"#000",path:a}),d},B.rotate=function(a,b,e){if(this.removed)return this;if(a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(b=e),null==b||null==e){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}return this.transform(this._.transform.concat([["r",a,b,e]])),this},B.scale=function(a,b,e,f){if(this.removed)return this;if(a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),null==b&&(b=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this},B.translate=function(a,b){return this.removed?this:(a=c(a).split(j),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this.transform(this._.transform.concat([["t",a,b]])),this)},B.transform=function(c){var d=this._;if(null==c)return d.transform;if(a._extractTransform(this,c),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix}),1!=d.sx||1!=d.sy){var e=this.attrs[b]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},B.hide=function(){return this.removed||(this.node.style.display="none"),this},B.show=function(){return this.removed||(this.node.style.display=""),this},B.remove=function(){var b=z(this.node);if(!this.removed&&b.parentNode){var c=this.paper;c.__set__&&c.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&c.defs.removeChild(this.gradient),a._tear(this,c),b.parentNode.removeChild(b),this.removeData();for(var d in this)this[d]="function"==typeof this[d]?a._removedFactory(d):null;this.removed=!0}},B._getBBox=function(){if("none"==this.node.style.display){this.show();var a=!0}var b,c=!1;this.paper.canvas.parentElement?b=this.paper.canvas.parentElement.style:this.paper.canvas.parentNode&&(b=this.paper.canvas.parentNode.style),b&&"none"==b.display&&(c=!0,b.display="");var d={};try{d=this.node.getBBox()}catch(e){d={x:this.node.clientLeft,y:this.node.clientTop,width:this.node.clientWidth,height:this.node.clientHeight}}finally{d=d||{},c&&(b.display="none")}return a&&this.hide(),d},B.attr=function(c,d){if(this.removed)return this;if(null==c){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&a.is(c,"string")){if("fill"==c&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("transform"==c)return this._.transform;for(var g=c.split(j),h={},i=0,l=g.length;l>i;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return l-1?h:h[g[0]]}if(null==d&&a.is(c,"array")){for(h={},i=0,l=c.length;l>i;i++)h[c[i]]=this.attr(c[i]);return h}if(null!=d){var m={};m[c]=d}else null!=c&&a.is(c,"object")&&(m=c);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[b](n)&&m[b](n)&&a.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[b](p)&&(m[p]=o[p])}return w(this,m),this},B.toFront=function(){if(this.removed)return this;var b=z(this.node);b.parentNode.appendChild(b);var c=this.paper;return c.top!=this&&a._tofront(this,c),this},B.toBack=function(){if(this.removed)return this;var b=z(this.node),c=b.parentNode;c.insertBefore(b,c.firstChild),a._toback(this,this.paper);this.paper;return this},B.insertAfter=function(b){if(this.removed||!b)return this;var c=z(this.node),d=z(b.node||b[b.length-1].node);return d.nextSibling?d.parentNode.insertBefore(c,d.nextSibling):d.parentNode.appendChild(c),a._insertafter(this,b,this.paper),this},B.insertBefore=function(b){if(this.removed||!b)return this;var c=z(this.node),d=z(b.node||b[0].node);return d.parentNode.insertBefore(c,d),a._insertbefore(this,b,this.paper),this},B.blur=function(b){var c=this;if(0!==+b){var d=q("filter"),e=q("feGaussianBlur");c.attrs.blur=b,d.id=a.createUUID(),q(e,{stdDeviation:+b||1.5}),d.appendChild(e),c.paper.defs.appendChild(d),c._blur=d,q(c.node,{filter:"url(#"+d.id+")"})}else c._blur&&(c._blur.parentNode.removeChild(c._blur),delete c._blur,delete c.attrs.blur),c.node.removeAttribute("filter");return c},a._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new A(e,a);return f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs),f},a._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:b,y:c,width:d,height:e,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs),h},a._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new A(f,a);return g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs),g},a._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image",h},a._engine.text=function(b,c,d,e){var f=q("text");b.canvas&&b.canvas.appendChild(f);var g=new A(f,b);return g.attrs={x:c,y:d,"text-anchor":"middle",text:e,"font-family":a._availableAttrs["font-family"],"font-size":a._availableAttrs["font-size"],stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs),g},a._engine.setSize=function(a,b){return this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox),this},a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,g=b.height;if(!c)throw new Error("SVG container not found.");var h,i=q("svg"),j="overflow:hidden;";return d=d||0,e=e||0,f=f||512,g=g||342,q(i,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}),1==c?(i.style.cssText=j+"position:absolute;left:"+d+"px;top:"+e+"px",a._g.doc.body.appendChild(i),h=1):(i.style.cssText=j+"position:relative",c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i)),c=new a._Paper,c.width=f,c.height=g,c.canvas=i,c.clear(),c._left=c._top=0,h&&(c.renderfix=function(){}),c.renderfix(),c},a._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f,h,i=this.getSize(),j=g(c/i.width,d/i.height),l=this.top,n=e?"xMidYMid meet":"xMinYMin";for(null==a?(this._vbSize&&(j=1),delete this._vbSize,f="0 0 "+this.width+m+this.height):(this._vbSize=j,f=a+m+b+m+c+m+d),q(this.canvas,{viewBox:f,preserveAspectRatio:n});j&&l;)h="stroke-width"in l.attrs?l.attrs["stroke-width"]:1,l.attr({"stroke-width":h}),l._.dirty=1,l._.dirtyT=1,l=l.prev;return this._viewBox=[a,b,c,d,!!e],this},a.prototype.renderfix=function(){var a,b=this.canvas,c=b.style;try{a=b.getScreenCTM()||b.createSVGMatrix()}catch(d){a=b.createSVGMatrix()}var e=-a.e%1,f=-a.f%1;(e||f)&&(e&&(this._left=(this._left+e)%1,c.left=this._left+"px"),f&&(this._top=(this._top+f)%1,c.top=this._top+"px"))},a.prototype.clear=function(){a.eve("raphael.clear",this);for(var b=this.canvas;b.firstChild;)b.removeChild(b.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(a._g.doc.createTextNode("Created with Raphaël "+a.version)),b.appendChild(this.desc),b.appendChild(this.defs=q("defs"))},a.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null};var C=a.st;for(var D in B)B[b](D)&&!C[b](D)&&(C[D]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(D))}}),function(a,b){"function"==typeof define&&define.amd?define("raphael.vml",["raphael.core"],function(a){return b(a)}):b("object"==typeof exports?require("./raphael.core"):a.Raphael)}(this,function(a){if(!a||a.vml){var b="hasOwnProperty",c=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=a.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(b){var d=/[ahqstv]/gi,e=a._pathToAbsolute;if(c(b).match(d)&&(e=a._path2curve),d=/[clmz]/g,e==a._pathToAbsolute&&!c(b).match(d)){var g=c(b).replace(q,function(a,b,c){var d=[],e="m"==b.toLowerCase(),g=p[b];return c.replace(s,function(a){e&&2==d.length&&(g+=d+p["m"==b?"l":"L"],d=[]),d.push(f(a*u))}),g+d});return g}var h,i,j=e(b);g=[];for(var k=0,l=j.length;l>k;k++){h=j[k],i=j[k][0].toLowerCase(),"z"==i&&(i="x");for(var m=1,r=h.length;r>m;m++)i+=f(h[m]*u)+(m!=r-1?",":o);g.push(i)}return g.join(n)},y=function(b,c,d){var e=a.matrix();return e.rotate(-b,.5,.5),{dx:e.x(c,d),dy:e.y(c,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q=u/b,r=u/c;if(m.visibility="hidden",b&&c){if(l.coordsize=i(q)+n+i(r),m.rotation=f*(0>b*c?-1:1),f){var s=y(f,d,e);d=s.dx,e=s.dy}if(0>b&&(p+="x"),0>c&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-q+n+e*-r,k||g.fillsize){var t=l.getElementsByTagName(j);t=t&&t[0],l.removeChild(t),k&&(s=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),t.position=s.dx*o+n+s.dy*o),g.fillsize&&(t.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(t)}m.visibility="visible"}};a.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,b,d){for(var e=c(b).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";g--;)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),r=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),s=e;for(var t in i)i[b](t)&&(m[t]=i[t]);if(q&&(m.path=a._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur),(i.path&&"path"==e.type||q)&&(l.path=x(~c(m.path).toLowerCase().indexOf("r")?a._pathToAbsolute(m.path):m.path),e._.dirty=1,"image"==e.type&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0))),"transform"in i&&e.transform(i.transform),r){var y=+m.cx,B=+m.cy,D=+m.rx||+m.r||0,E=+m.ry||+m.r||0;l.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((y-D)*u),f((B-E)*u),f((y+D)*u),f((B+E)*u),f(y*u)),e._.dirty=1}if("clip-rect"in i){var G=c(i["clip-rect"]).split(k);if(4==G.length){G[2]=+G[2]+ +G[0],G[3]=+G[3]+ +G[1];var H=l.clipRect||a._g.doc.createElement("div"),I=H.style;I.clip=a.format("rect({1}px {2}px {3}px {0}px)",G),l.clipRect||(I.position="absolute",I.top=0,I.left=0,I.width=e.paper.width+"px",I.height=e.paper.height+"px",l.parentNode.insertBefore(H,l),H.appendChild(l),l.clipRect=H)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var J=e.textpath.style;i.font&&(J.font=i.font),i["font-family"]&&(J.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(J.fontSize=i["font-size"]),i["font-weight"]&&(J.fontWeight=i["font-weight"]),i["font-style"]&&(J.fontStyle=i["font-style"])}if("arrow-start"in i&&A(s,i["arrow-start"]),"arrow-end"in i&&A(s,i["arrow-end"],1),null!=i.opacity||null!=i["stroke-width"]||null!=i.fill||null!=i.src||null!=i.stroke||null!=i["stroke-width"]||null!=i["stroke-opacity"]||null!=i["fill-opacity"]||null!=i["stroke-dasharray"]||null!=i["stroke-miterlimit"]||null!=i["stroke-linejoin"]||null!=i["stroke-linecap"]){var K=l.getElementsByTagName(j),L=!1;if(K=K&&K[0],!K&&(L=K=F(j)),"image"==e.type&&i.src&&(K.src=i.src),i.fill&&(K.on=!0),(null==K.on||"none"==i.fill||null===i.fill)&&(K.on=!1),K.on&&i.fill){var M=c(i.fill).match(a._ISURL);if(M){K.parentNode==l&&l.removeChild(K),K.rotate=!0,K.src=M[1],K.type="tile";var N=e.getBBox(1);K.position=N.x+n+N.y,e._.fillpos=[N.x,N.y],a._preload(M[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else K.color=a.getRGB(i.fill).hex,K.src=o,K.type="solid",a.getRGB(i.fill).error&&(s.type in{circle:1,ellipse:1}||"r"!=c(i.fill).charAt())&&C(s,i.fill,K)&&(m.fill="none",m.gradient=i.fill,K.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var O=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+a.getRGB(i.fill).o+1||2)-1);O=h(g(O,0),1),K.opacity=O,K.src&&(K.color="none")}l.appendChild(K);var P=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],Q=!1;!P&&(Q=P=F("stroke")),(i.stroke&&"none"!=i.stroke||i["stroke-width"]||null!=i["stroke-opacity"]||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])&&(P.on=!0),("none"==i.stroke||null===i.stroke||null==P.on||0==i.stroke||0==i["stroke-width"])&&(P.on=!1);var R=a.getRGB(i.stroke);P.on&&i.stroke&&(P.color=R.hex),O=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+R.o+1||2)-1);var S=.75*(d(i["stroke-width"])||1);if(O=h(g(O,0),1),null==i["stroke-width"]&&(S=m["stroke-width"]),i["stroke-width"]&&(P.weight=S),S&&1>S&&(O*=S)&&(P.weight=1),P.opacity=O,i["stroke-linejoin"]&&(P.joinstyle=i["stroke-linejoin"]||"miter"),P.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(P.endcap="butt"==i["stroke-linecap"]?"flat":"square"==i["stroke-linecap"]?"square":"round"),"stroke-dasharray"in i){var T={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};P.dashstyle=T[b](i["stroke-dasharray"])?T[i["stroke-dasharray"]]:o}Q&&l.appendChild(P)}if("text"==s.type){s.paper.canvas.style.display=o;var U=s.paper.span,V=100,W=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=U.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),W=d(m["font-size"]||W&&W[0])||10,p.fontSize=W*V+"px",s.textpath.string&&(U.innerHTML=c(s.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));var X=U.getBoundingClientRect();s.W=m.w=(X.right-X.left)/V,s.H=m.h=(X.bottom-X.top)/V,s.X=m.x,s.Y=m.y+s.H/2,("x"in i||"y"in i)&&(s.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));for(var Y=["x","y","text","font","font-family","font-weight","font-style","font-size"],Z=0,$=Y.length;$>Z;Z++)if(Y[Z]in i){s._.dirty=1;break}switch(m["text-anchor"]){case"start":s.textpath.style["v-text-align"]="left",s.bbx=s.W/2;break;case"end":s.textpath.style["v-text-align"]="right",s.bbx=-s.W/2;break;default:s.textpath.style["v-text-align"]="center",s.bbx=0}s.textpath.style["v-text-kern"]=!0}},C=function(b,f,g){b.attrs=b.attrs||{};var h=(b.attrs,Math.pow),i="linear",j=".5 .5";if(b.attrs.gradient=f,f=c(f).replace(a._radial_gradient,function(a,b,c){return i="radial",b&&c&&(b=d(b),c=d(c),h(b-.5,2)+h(c-.5,2)>.25&&(c=e.sqrt(.25-h(b-.5,2))*(2*(c>.5)-1)+.5),j=b+n+c),o}),f=f.split(/\s*\-\s*/),"linear"==i){var k=f.shift();if(k=-d(k),isNaN(k))return null}var l=a._parseDots(f);if(!l)return null;if(b=b.shape||b.node,l.length){b.removeChild(g),g.on=!0,g.method="none",g.color=l[0].color,g.color2=l[l.length-1].color;for(var m=[],p=0,q=l.length;q>p;p++)l[p].offset&&m.push(l[p].offset+n+l[p].color);g.colors=m.length?m.join():"0% "+g.color,"radial"==i?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=j,g.angle=0):(g.type="gradient",g.angle=(270-k)%360),b.appendChild(g)}return 1},D=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=c,this.matrix=a.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},E=a.el;D.prototype=E,E.constructor=D,E.transform=function(b){if(null==b)return this._.transform;var d,e=this.paper._viewBoxShift,f=e?"s"+[e.scale,e.scale]+"-1-1t"+[e.dx,e.dy]:o;e&&(d=b=c(b).replace(/\.{3}|\u2026/g,this._.transform||o)),a._extractTransform(this,f+b);var g,h=this.matrix.clone(),i=this.skew,j=this.node,k=~c(this.attrs.fill).indexOf("-"),l=!c(this.attrs.fill).indexOf("url(");if(h.translate(1,1),l||k||"image"==this.type)if(i.matrix="1 0 0 1",i.offset="0 0",g=h.split(),k&&g.noRotation||!g.isSimple){j.style.filter=h.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;j.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else j.style.filter=o,z(this,g.scalex,g.scaley,g.dx,g.dy,g.rotate);else j.style.filter=o,i.matrix=c(h),i.offset=h.offset();return null!==d&&(this._.transform=d,a._extractTransform(this,d)),this},E.rotate=function(a,b,e){if(this.removed)return this;if(null!=a){if(a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(b=e),null==b||null==e){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}return this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,b,e]])),this}},E.translate=function(a,b){return this.removed?this:(a=c(a).split(k),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=b),this.transform(this._.transform.concat([["t",a,b]])),this)},E.scale=function(a,b,e,f){if(this.removed)return this;if(a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),null==b&&(b=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this._.dirtyT=1,this},E.hide=function(){return!this.removed&&(this.node.style.display="none"),this},E.show=function(){return!this.removed&&(this.node.style.display=o),this},E.auxGetBBox=a.el.getBBox,E.getBBox=function(){var a=this.auxGetBBox();if(this.paper&&this.paper._viewBoxShift){var b={},c=1/this.paper._viewBoxShift.scale;return b.x=a.x-this.paper._viewBoxShift.dx,b.x*=c,b.y=a.y-this.paper._viewBoxShift.dy,b.y*=c,b.width=a.width*c,b.height=a.height*c,b.x2=b.x+b.width,b.y2=b.y+b.height,b}return a},E._getBBox=function(){return this.removed?{}:{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),a.eve.unbind("raphael.*.*."+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;this.removed=!0}},E.attr=function(c,d){if(this.removed)return this;if(null==c){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&a.is(c,"string")){if(c==j&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;for(var g=c.split(k),h={},i=0,m=g.length;m>i;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return m-1?h:h[g[0]]}if(this.attrs&&null==d&&a.is(c,"array")){for(h={},i=0,m=c.length;m>i;i++)h[c[i]]=this.attr(c[i]);return h}var n;null!=d&&(n={},n[c]=d),null==d&&a.is(c,"object")&&(n=c);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[b](o)&&n[b](o)&&a.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[b](q)&&(n[q]=p[q])}n.text&&"text"==this.type&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){return!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&a._tofront(this,this.paper),this},E.toBack=function(){return this.removed?this:(this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper)),this)},E.insertAfter=function(b){return this.removed?this:(b.constructor==a.st.constructor&&(b=b[b.length-1]),b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper),this)},E.insertBefore=function(b){return this.removed?this:(b.constructor==a.st.constructor&&(b=b[0]),b.node.parentNode.insertBefore(this.node,b.node),a._insertbefore(this,b,this.paper),this)},E.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;return d=d.replace(r,o),0!==+b?(this.attrs.blur=b,c.filter=d+n+m+".Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",f(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur),this},a._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");return f.on=!0,c.appendChild(f),d.skew=f,d.transform(o),d},a._engine.rect=function(b,c,d,e,f,g){var h=a._rectPath(c,d,e,f,g),i=b.path(h),j=i.attrs;return i.X=j.x=c,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect",i},a._engine.ellipse=function(a,b,c,d,e){{var f=a.path();f.attrs}return f.X=b-d,f.Y=c-e,f.W=2*d,f.H=2*e,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e}),f},a._engine.circle=function(a,b,c,d){{var e=a.path();e.attrs}return e.X=b-d,e.Y=c-d,e.W=e.H=2*d,e.type="circle",B(e,{cx:b,cy:c,r:d}),e},a._engine.image=function(b,c,d,e,f,g){var h=a._rectPath(d,e,f,g),i=b.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];return k.src=c,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=c,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0),i},a._engine.text=function(b,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=a.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=c(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,b),l={fill:"#000",stroke:"none",font:a._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=c(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),b.canvas.appendChild(h);var m=F("skew");return m.on=!0,h.appendChild(m),k.skew=m,k.transform(o),k},a._engine.setSize=function(b,c){var d=this.canvas.style;return this.width=b,this.height=c,b==+b&&(b+="px"),c==+c&&(c+="px"),d.width=b,d.height=c,d.clip="rect(0 "+b+" "+c+" 0)",this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox),this},a._engine.setViewBox=function(b,c,d,e,f){a.eve("raphael.setViewBox",this,this._viewBox,[b,c,d,e,f]);var g,h,i=this.getSize(),j=i.width,k=i.height;return f&&(g=k/e,h=j/d,j>d*g&&(b-=(j-d*g)/2/g),k>e*h&&(c-=(k-e*h)/2/h)),this._viewBox=[b,c,d,e,!!f],this._viewBoxShift={dx:-b,dy:-c,scale:i},this.forEach(function(a){a.transform("...")}),this};var F;a._engine.initWin=function(a){var b=a.document;b.styleSheets.length<31?b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"):b.styleSheets[0].addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("<rvml:"+a+' class="rvml">')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e=b.width,f=b.x,g=b.y;if(!c)throw new Error("VML container not found.");var h=new a._Paper,i=h.canvas=a._g.doc.createElement("div"),j=i.style;return f=f||0,g=g||0,e=e||512,d=d||342,h.width=e,h.height=d,e==+e&&(e+="px"),d==+d&&(d+="px"),h.coordsize=1e3*u+n+1e3*u,h.coordorigin="0 0",h.span=a._g.doc.createElement("span"),h.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",i.appendChild(h.span),j.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",e,d),1==c?(a._g.doc.body.appendChild(i),j.left=f+"px",j.top=g+"px",j.position="absolute"):c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i),h.renderfix=function(){},h},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E)E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}});
Index: public/vendors/charts/morsis/morris.css
===================================================================
--- public/vendors/charts/morsis/morris.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/morsis/morris.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+.morris-hover{position:absolute;z-index:1000}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255,255,255,0.8);border:solid 2px rgba(230,230,230,0.8);font-family:sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0}
+.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0}
Index: public/vendors/charts/morsis/morris.min.js
===================================================================
--- public/vendors/charts/morsis/morris.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/morsis/morris.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,7 @@
+/* @license
+morris.js v0.5.0
+Copyright 2014 Olly Smith All rights reserved.
+Licensed under the BSD-2-Clause License.
+*/
+(function(){var a,b,c,d,e=[].slice,f=function(a,b){return function(){return a.apply(b,arguments)}},g={}.hasOwnProperty,h=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},i=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b=window.Morris={},a=jQuery,b.EventEmitter=function(){function a(){}return a.prototype.on=function(a,b){return null==this.handlers&&(this.handlers={}),null==this.handlers[a]&&(this.handlers[a]=[]),this.handlers[a].push(b),this},a.prototype.fire=function(){var a,b,c,d,f,g,h;if(c=arguments[0],a=2<=arguments.length?e.call(arguments,1):[],null!=this.handlers&&null!=this.handlers[c]){for(g=this.handlers[c],h=[],d=0,f=g.length;f>d;d++)b=g[d],h.push(b.apply(null,a));return h}},a}(),b.commas=function(a){var b,c,d,e;return null!=a?(d=0>a?"-":"",b=Math.abs(a),c=Math.floor(b).toFixed(0),d+=c.replace(/(?=(?:\d{3})+$)(?!^)/g,","),e=b.toString(),e.length>c.length&&(d+=e.slice(c.length)),d):"-"},b.pad2=function(a){return(10>a?"0":"")+a},b.Grid=function(c){function d(b){this.resizeHandler=f(this.resizeHandler,this);var c=this;if(this.el="string"==typeof b.element?a(document.getElementById(b.element)):a(b.element),null==this.el||0===this.el.length)throw new Error("Graph container element not found");"static"===this.el.css("position")&&this.el.css("position","relative"),this.options=a.extend({},this.gridDefaults,this.defaults||{},b),"string"==typeof this.options.units&&(this.options.postUnits=b.units),this.raphael=new Raphael(this.el[0]),this.elementWidth=null,this.elementHeight=null,this.dirty=!1,this.selectFrom=null,this.init&&this.init(),this.setData(this.options.data),this.el.bind("mousemove",function(a){var b,d,e,f,g;return d=c.el.offset(),g=a.pageX-d.left,c.selectFrom?(b=c.data[c.hitTest(Math.min(g,c.selectFrom))]._x,e=c.data[c.hitTest(Math.max(g,c.selectFrom))]._x,f=e-b,c.selectionRect.attr({x:b,width:f})):c.fire("hovermove",g,a.pageY-d.top)}),this.el.bind("mouseleave",function(){return c.selectFrom&&(c.selectionRect.hide(),c.selectFrom=null),c.fire("hoverout")}),this.el.bind("touchstart touchmove touchend",function(a){var b,d;return d=a.originalEvent.touches[0]||a.originalEvent.changedTouches[0],b=c.el.offset(),c.fire("hovermove",d.pageX-b.left,d.pageY-b.top)}),this.el.bind("click",function(a){var b;return b=c.el.offset(),c.fire("gridclick",a.pageX-b.left,a.pageY-b.top)}),this.options.rangeSelect&&(this.selectionRect=this.raphael.rect(0,0,0,this.el.innerHeight()).attr({fill:this.options.rangeSelectColor,stroke:!1}).toBack().hide(),this.el.bind("mousedown",function(a){var b;return b=c.el.offset(),c.startRange(a.pageX-b.left)}),this.el.bind("mouseup",function(a){var b;return b=c.el.offset(),c.endRange(a.pageX-b.left),c.fire("hovermove",a.pageX-b.left,a.pageY-b.top)})),this.options.resize&&a(window).bind("resize",function(){return null!=c.timeoutId&&window.clearTimeout(c.timeoutId),c.timeoutId=window.setTimeout(c.resizeHandler,100)}),this.el.css("-webkit-tap-highlight-color","rgba(0,0,0,0)"),this.postInit&&this.postInit()}return h(d,c),d.prototype.gridDefaults={dateFormat:null,axes:!0,grid:!0,gridLineColor:"#aaa",gridStrokeWidth:.5,gridTextColor:"#888",gridTextSize:12,gridTextFamily:"sans-serif",gridTextWeight:"normal",hideHover:!1,yLabelFormat:null,xLabelAngle:0,numLines:5,padding:25,parseTime:!0,postUnits:"",preUnits:"",ymax:"auto",ymin:"auto 0",goals:[],goalStrokeWidth:1,goalLineColors:["#666633","#999966","#cc6666","#663333"],events:[],eventStrokeWidth:1,eventLineColors:["#005a04","#ccffbb","#3a5f0b","#005502"],rangeSelect:null,rangeSelectColor:"#eef",resize:!1},d.prototype.setData=function(a,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;return null==c&&(c=!0),this.options.data=a,null==a||0===a.length?(this.data=[],this.raphael.clear(),null!=this.hover&&this.hover.hide(),void 0):(o=this.cumulative?0:null,p=this.cumulative?0:null,this.options.goals.length>0&&(h=Math.min.apply(Math,this.options.goals),g=Math.max.apply(Math,this.options.goals),p=null!=p?Math.min(p,h):h,o=null!=o?Math.max(o,g):g),this.data=function(){var c,d,g;for(g=[],f=c=0,d=a.length;d>c;f=++c)j=a[f],i={src:j},i.label=j[this.options.xkey],this.options.parseTime?(i.x=b.parseDate(i.label),this.options.dateFormat?i.label=this.options.dateFormat(i.x):"number"==typeof i.label&&(i.label=new Date(i.label).toString())):(i.x=f,this.options.xLabelFormat&&(i.label=this.options.xLabelFormat(i))),l=0,i.y=function(){var a,b,c,d;for(c=this.options.ykeys,d=[],e=a=0,b=c.length;b>a;e=++a)n=c[e],q=j[n],"string"==typeof q&&(q=parseFloat(q)),null!=q&&"number"!=typeof q&&(q=null),null!=q&&(this.cumulative?l+=q:null!=o?(o=Math.max(q,o),p=Math.min(q,p)):o=p=q),this.cumulative&&null!=l&&(o=Math.max(l,o),p=Math.min(l,p)),d.push(q);return d}.call(this),g.push(i);return g}.call(this),this.options.parseTime&&(this.data=this.data.sort(function(a,b){return(a.x>b.x)-(b.x>a.x)})),this.xmin=this.data[0].x,this.xmax=this.data[this.data.length-1].x,this.events=[],this.options.events.length>0&&(this.events=this.options.parseTime?function(){var a,c,e,f;for(e=this.options.events,f=[],a=0,c=e.length;c>a;a++)d=e[a],f.push(b.parseDate(d));return f}.call(this):this.options.events,this.xmax=Math.max(this.xmax,Math.max.apply(Math,this.events)),this.xmin=Math.min(this.xmin,Math.min.apply(Math,this.events))),this.xmin===this.xmax&&(this.xmin-=1,this.xmax+=1),this.ymin=this.yboundary("min",p),this.ymax=this.yboundary("max",o),this.ymin===this.ymax&&(p&&(this.ymin-=1),this.ymax+=1),((r=this.options.axes)===!0||"both"===r||"y"===r||this.options.grid===!0)&&(this.options.ymax===this.gridDefaults.ymax&&this.options.ymin===this.gridDefaults.ymin?(this.grid=this.autoGridLines(this.ymin,this.ymax,this.options.numLines),this.ymin=Math.min(this.ymin,this.grid[0]),this.ymax=Math.max(this.ymax,this.grid[this.grid.length-1])):(k=(this.ymax-this.ymin)/(this.options.numLines-1),this.grid=function(){var a,b,c,d;for(d=[],m=a=b=this.ymin,c=this.ymax;k>0?c>=a:a>=c;m=a+=k)d.push(m);return d}.call(this))),this.dirty=!0,c?this.redraw():void 0)},d.prototype.yboundary=function(a,b){var c,d;return c=this.options["y"+a],"string"==typeof c?"auto"===c.slice(0,4)?c.length>5?(d=parseInt(c.slice(5),10),null==b?d:Math[a](b,d)):null!=b?b:0:parseInt(c,10):c},d.prototype.autoGridLines=function(a,b,c){var d,e,f,g,h,i,j,k,l;return h=b-a,l=Math.floor(Math.log(h)/Math.log(10)),j=Math.pow(10,l),e=Math.floor(a/j)*j,d=Math.ceil(b/j)*j,i=(d-e)/(c-1),1===j&&i>1&&Math.ceil(i)!==i&&(i=Math.ceil(i),d=e+i*(c-1)),0>e&&d>0&&(e=Math.floor(a/i)*i,d=Math.ceil(b/i)*i),1>i?(g=Math.floor(Math.log(i)/Math.log(10)),f=function(){var a,b;for(b=[],k=a=e;i>0?d>=a:a>=d;k=a+=i)b.push(parseFloat(k.toFixed(1-g)));return b}()):f=function(){var a,b;for(b=[],k=a=e;i>0?d>=a:a>=d;k=a+=i)b.push(k);return b}(),f},d.prototype._calc=function(){var a,b,c,d,e,f,g,h;return e=this.el.width(),c=this.el.height(),(this.elementWidth!==e||this.elementHeight!==c||this.dirty)&&(this.elementWidth=e,this.elementHeight=c,this.dirty=!1,this.left=this.options.padding,this.right=this.elementWidth-this.options.padding,this.top=this.options.padding,this.bottom=this.elementHeight-this.options.padding,((g=this.options.axes)===!0||"both"===g||"y"===g)&&(f=function(){var a,c,d,e;for(d=this.grid,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(this.measureText(this.yAxisFormat(b)).width);return e}.call(this),this.left+=Math.max.apply(Math,f)),((h=this.options.axes)===!0||"both"===h||"x"===h)&&(a=function(){var a,b,c;for(c=[],d=a=0,b=this.data.length;b>=0?b>a:a>b;d=b>=0?++a:--a)c.push(this.measureText(this.data[d].text,-this.options.xLabelAngle).height);return c}.call(this),this.bottom-=Math.max.apply(Math,a)),this.width=Math.max(1,this.right-this.left),this.height=Math.max(1,this.bottom-this.top),this.dx=this.width/(this.xmax-this.xmin),this.dy=this.height/(this.ymax-this.ymin),this.calc)?this.calc():void 0},d.prototype.transY=function(a){return this.bottom-(a-this.ymin)*this.dy},d.prototype.transX=function(a){return 1===this.data.length?(this.left+this.right)/2:this.left+(a-this.xmin)*this.dx},d.prototype.redraw=function(){return this.raphael.clear(),this._calc(),this.drawGrid(),this.drawGoals(),this.drawEvents(),this.draw?this.draw():void 0},d.prototype.measureText=function(a,b){var c,d;return null==b&&(b=0),d=this.raphael.text(100,100,a).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).rotate(b),c=d.getBBox(),d.remove(),c},d.prototype.yAxisFormat=function(a){return this.yLabelFormat(a)},d.prototype.yLabelFormat=function(a){return"function"==typeof this.options.yLabelFormat?this.options.yLabelFormat(a):""+this.options.preUnits+b.commas(a)+this.options.postUnits},d.prototype.drawGrid=function(){var a,b,c,d,e,f,g,h;if(this.options.grid!==!1||(e=this.options.axes)===!0||"both"===e||"y"===e){for(f=this.grid,h=[],c=0,d=f.length;d>c;c++)a=f[c],b=this.transY(a),((g=this.options.axes)===!0||"both"===g||"y"===g)&&this.drawYAxisLabel(this.left-this.options.padding/2,b,this.yAxisFormat(a)),this.options.grid?h.push(this.drawGridLine("M"+this.left+","+b+"H"+(this.left+this.width))):h.push(void 0);return h}},d.prototype.drawGoals=function(){var a,b,c,d,e,f,g;for(f=this.options.goals,g=[],c=d=0,e=f.length;e>d;c=++d)b=f[c],a=this.options.goalLineColors[c%this.options.goalLineColors.length],g.push(this.drawGoal(b,a));return g},d.prototype.drawEvents=function(){var a,b,c,d,e,f,g;for(f=this.events,g=[],c=d=0,e=f.length;e>d;c=++d)b=f[c],a=this.options.eventLineColors[c%this.options.eventLineColors.length],g.push(this.drawEvent(b,a));return g},d.prototype.drawGoal=function(a,b){return this.raphael.path("M"+this.left+","+this.transY(a)+"H"+this.right).attr("stroke",b).attr("stroke-width",this.options.goalStrokeWidth)},d.prototype.drawEvent=function(a,b){return this.raphael.path("M"+this.transX(a)+","+this.bottom+"V"+this.top).attr("stroke",b).attr("stroke-width",this.options.eventStrokeWidth)},d.prototype.drawYAxisLabel=function(a,b,c){return this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor).attr("text-anchor","end")},d.prototype.drawGridLine=function(a){return this.raphael.path(a).attr("stroke",this.options.gridLineColor).attr("stroke-width",this.options.gridStrokeWidth)},d.prototype.startRange=function(a){return this.hover.hide(),this.selectFrom=a,this.selectionRect.attr({x:a,width:0}).show()},d.prototype.endRange=function(a){var b,c;return this.selectFrom?(c=Math.min(this.selectFrom,a),b=Math.max(this.selectFrom,a),this.options.rangeSelect.call(this.el,{start:this.data[this.hitTest(c)].x,end:this.data[this.hitTest(b)].x}),this.selectFrom=null):void 0},d.prototype.resizeHandler=function(){return this.timeoutId=null,this.raphael.setSize(this.el.width(),this.el.height()),this.redraw()},d}(b.EventEmitter),b.parseDate=function(a){var b,c,d,e,f,g,h,i,j,k,l;return"number"==typeof a?a:(c=a.match(/^(\d+) Q(\d)$/),e=a.match(/^(\d+)-(\d+)$/),f=a.match(/^(\d+)-(\d+)-(\d+)$/),h=a.match(/^(\d+) W(\d+)$/),i=a.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+)(Z|([+-])(\d\d):?(\d\d))?$/),j=a.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+):(\d+(\.\d+)?)(Z|([+-])(\d\d):?(\d\d))?$/),c?new Date(parseInt(c[1],10),3*parseInt(c[2],10)-1,1).getTime():e?new Date(parseInt(e[1],10),parseInt(e[2],10)-1,1).getTime():f?new Date(parseInt(f[1],10),parseInt(f[2],10)-1,parseInt(f[3],10)).getTime():h?(k=new Date(parseInt(h[1],10),0,1),4!==k.getDay()&&k.setMonth(0,1+(4-k.getDay()+7)%7),k.getTime()+6048e5*parseInt(h[2],10)):i?i[6]?(g=0,"Z"!==i[6]&&(g=60*parseInt(i[8],10)+parseInt(i[9],10),"+"===i[7]&&(g=0-g)),Date.UTC(parseInt(i[1],10),parseInt(i[2],10)-1,parseInt(i[3],10),parseInt(i[4],10),parseInt(i[5],10)+g)):new Date(parseInt(i[1],10),parseInt(i[2],10)-1,parseInt(i[3],10),parseInt(i[4],10),parseInt(i[5],10)).getTime():j?(l=parseFloat(j[6]),b=Math.floor(l),d=Math.round(1e3*(l-b)),j[8]?(g=0,"Z"!==j[8]&&(g=60*parseInt(j[10],10)+parseInt(j[11],10),"+"===j[9]&&(g=0-g)),Date.UTC(parseInt(j[1],10),parseInt(j[2],10)-1,parseInt(j[3],10),parseInt(j[4],10),parseInt(j[5],10)+g,b,d)):new Date(parseInt(j[1],10),parseInt(j[2],10)-1,parseInt(j[3],10),parseInt(j[4],10),parseInt(j[5],10),b,d).getTime()):new Date(parseInt(a,10),0,1).getTime())},b.Hover=function(){function c(c){null==c&&(c={}),this.options=a.extend({},b.Hover.defaults,c),this.el=a("<div class='"+this.options["class"]+"'></div>"),this.el.hide(),this.options.parent.append(this.el)}return c.defaults={"class":"morris-hover morris-default-style"},c.prototype.update=function(a,b,c){return a?(this.html(a),this.show(),this.moveTo(b,c)):this.hide()},c.prototype.html=function(a){return this.el.html(a)},c.prototype.moveTo=function(a,b){var c,d,e,f,g,h;return g=this.options.parent.innerWidth(),f=this.options.parent.innerHeight(),d=this.el.outerWidth(),c=this.el.outerHeight(),e=Math.min(Math.max(0,a-d/2),g-d),null!=b?(h=b-c-10,0>h&&(h=b+10,h+c>f&&(h=f/2-c/2))):h=f/2-c/2,this.el.css({left:e+"px",top:parseInt(h)+"px"})},c.prototype.show=function(){return this.el.show()},c.prototype.hide=function(){return this.el.hide()},c}(),b.Line=function(a){function c(a){return this.hilight=f(this.hilight,this),this.onHoverOut=f(this.onHoverOut,this),this.onHoverMove=f(this.onHoverMove,this),this.onGridClick=f(this.onGridClick,this),this instanceof b.Line?(c.__super__.constructor.call(this,a),void 0):new b.Line(a)}return h(c,a),c.prototype.init=function(){return"always"!==this.options.hideHover?(this.hover=new b.Hover({parent:this.el}),this.on("hovermove",this.onHoverMove),this.on("hoverout",this.onHoverOut),this.on("gridclick",this.onGridClick)):void 0},c.prototype.defaults={lineWidth:3,pointSize:4,lineColors:["#0b62a4","#7A92A3","#4da74d","#afd8f8","#edc240","#cb4b4b","#9440ed"],pointStrokeWidths:[1],pointStrokeColors:["#ffffff"],pointFillColors:[],smooth:!0,xLabels:"auto",xLabelFormat:null,xLabelMargin:24,hideHover:!1},c.prototype.calc=function(){return this.calcPoints(),this.generatePaths()},c.prototype.calcPoints=function(){var a,b,c,d,e,f;for(e=this.data,f=[],c=0,d=e.length;d>c;c++)a=e[c],a._x=this.transX(a.x),a._y=function(){var c,d,e,f;for(e=a.y,f=[],c=0,d=e.length;d>c;c++)b=e[c],null!=b?f.push(this.transY(b)):f.push(b);return f}.call(this),f.push(a._ymax=Math.min.apply(Math,[this.bottom].concat(function(){var c,d,e,f;for(e=a._y,f=[],c=0,d=e.length;d>c;c++)b=e[c],null!=b&&f.push(b);return f}())));return f},c.prototype.hitTest=function(a){var b,c,d,e,f;if(0===this.data.length)return null;for(f=this.data.slice(1),b=d=0,e=f.length;e>d&&(c=f[b],!(a<(c._x+this.data[b]._x)/2));b=++d);return b},c.prototype.onGridClick=function(a,b){var c;return c=this.hitTest(a),this.fire("click",c,this.data[c].src,a,b)},c.prototype.onHoverMove=function(a){var b;return b=this.hitTest(a),this.displayHoverForRow(b)},c.prototype.onHoverOut=function(){return this.options.hideHover!==!1?this.displayHoverForRow(null):void 0},c.prototype.displayHoverForRow=function(a){var b;return null!=a?((b=this.hover).update.apply(b,this.hoverContentForRow(a)),this.hilight(a)):(this.hover.hide(),this.hilight())},c.prototype.hoverContentForRow=function(a){var b,c,d,e,f,g,h;for(d=this.data[a],b="<div class='morris-hover-row-label'>"+d.label+"</div>",h=d.y,c=f=0,g=h.length;g>f;c=++f)e=h[c],b+="<div class='morris-hover-point' style='color: "+this.colorFor(d,c,"label")+"'>\n  "+this.options.labels[c]+":\n  "+this.yLabelFormat(e)+"\n</div>";return"function"==typeof this.options.hoverCallback&&(b=this.options.hoverCallback(a,this.options,b,d.src)),[b,d._x,d._ymax]},c.prototype.generatePaths=function(){var a,c,d,e;return this.paths=function(){var f,g,h,j;for(j=[],c=f=0,g=this.options.ykeys.length;g>=0?g>f:f>g;c=g>=0?++f:--f)e="boolean"==typeof this.options.smooth?this.options.smooth:(h=this.options.ykeys[c],i.call(this.options.smooth,h)>=0),a=function(){var a,b,e,f;for(e=this.data,f=[],a=0,b=e.length;b>a;a++)d=e[a],void 0!==d._y[c]&&f.push({x:d._x,y:d._y[c]});return f}.call(this),a.length>1?j.push(b.Line.createPath(a,e,this.bottom)):j.push(null);return j}.call(this)},c.prototype.draw=function(){var a;return((a=this.options.axes)===!0||"both"===a||"x"===a)&&this.drawXAxis(),this.drawSeries(),this.options.hideHover===!1?this.displayHoverForRow(this.data.length-1):void 0},c.prototype.drawXAxis=function(){var a,c,d,e,f,g,h,i,j,k,l=this;for(h=this.bottom+this.options.padding/2,f=null,e=null,a=function(a,b){var c,d,g,i,j;return c=l.drawXAxisLabel(l.transX(b),h,a),j=c.getBBox(),c.transform("r"+-l.options.xLabelAngle),d=c.getBBox(),c.transform("t0,"+d.height/2+"..."),0!==l.options.xLabelAngle&&(i=-.5*j.width*Math.cos(l.options.xLabelAngle*Math.PI/180),c.transform("t"+i+",0...")),d=c.getBBox(),(null==f||f>=d.x+d.width||null!=e&&e>=d.x)&&d.x>=0&&d.x+d.width<l.el.width()?(0!==l.options.xLabelAngle&&(g=1.25*l.options.gridTextSize/Math.sin(l.options.xLabelAngle*Math.PI/180),e=d.x-g),f=d.x-l.options.xLabelMargin):c.remove()},d=this.options.parseTime?1===this.data.length&&"auto"===this.options.xLabels?[[this.data[0].label,this.data[0].x]]:b.labelSeries(this.xmin,this.xmax,this.width,this.options.xLabels,this.options.xLabelFormat):function(){var a,b,c,d;for(c=this.data,d=[],a=0,b=c.length;b>a;a++)g=c[a],d.push([g.label,g.x]);return d}.call(this),d.reverse(),k=[],i=0,j=d.length;j>i;i++)c=d[i],k.push(a(c[0],c[1]));return k},c.prototype.drawSeries=function(){var a,b,c,d,e,f;for(this.seriesPoints=[],a=b=d=this.options.ykeys.length-1;0>=d?0>=b:b>=0;a=0>=d?++b:--b)this._drawLineFor(a);for(f=[],a=c=e=this.options.ykeys.length-1;0>=e?0>=c:c>=0;a=0>=e?++c:--c)f.push(this._drawPointFor(a));return f},c.prototype._drawPointFor=function(a){var b,c,d,e,f,g;for(this.seriesPoints[a]=[],f=this.data,g=[],d=0,e=f.length;e>d;d++)c=f[d],b=null,null!=c._y[a]&&(b=this.drawLinePoint(c._x,c._y[a],this.colorFor(c,a,"point"),a)),g.push(this.seriesPoints[a].push(b));return g},c.prototype._drawLineFor=function(a){var b;return b=this.paths[a],null!==b?this.drawLinePath(b,this.colorFor(null,a,"line"),a):void 0},c.createPath=function(a,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;for(k="",c&&(g=b.Line.gradients(a)),l={y:null},h=q=0,r=a.length;r>q;h=++q)e=a[h],null!=e.y&&(null!=l.y?c?(f=g[h],j=g[h-1],i=(e.x-l.x)/4,m=l.x+i,o=Math.min(d,l.y+i*j),n=e.x-i,p=Math.min(d,e.y-i*f),k+="C"+m+","+o+","+n+","+p+","+e.x+","+e.y):k+="L"+e.x+","+e.y:c&&null==g[h]||(k+="M"+e.x+","+e.y)),l=e;return k},c.gradients=function(a){var b,c,d,e,f,g,h,i;for(c=function(a,b){return(a.y-b.y)/(a.x-b.x)},i=[],d=g=0,h=a.length;h>g;d=++g)b=a[d],null!=b.y?(e=a[d+1]||{y:null},f=a[d-1]||{y:null},null!=f.y&&null!=e.y?i.push(c(f,e)):null!=f.y?i.push(c(f,b)):null!=e.y?i.push(c(b,e)):i.push(null)):i.push(null);return i},c.prototype.hilight=function(a){var b,c,d,e,f;if(null!==this.prevHilight&&this.prevHilight!==a)for(b=c=0,e=this.seriesPoints.length-1;e>=0?e>=c:c>=e;b=e>=0?++c:--c)this.seriesPoints[b][this.prevHilight]&&this.seriesPoints[b][this.prevHilight].animate(this.pointShrinkSeries(b));if(null!==a&&this.prevHilight!==a)for(b=d=0,f=this.seriesPoints.length-1;f>=0?f>=d:d>=f;b=f>=0?++d:--d)this.seriesPoints[b][a]&&this.seriesPoints[b][a].animate(this.pointGrowSeries(b));return this.prevHilight=a},c.prototype.colorFor=function(a,b,c){return"function"==typeof this.options.lineColors?this.options.lineColors.call(this,a,b,c):"point"===c?this.options.pointFillColors[b%this.options.pointFillColors.length]||this.options.lineColors[b%this.options.lineColors.length]:this.options.lineColors[b%this.options.lineColors.length]},c.prototype.drawXAxisLabel=function(a,b,c){return this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor)},c.prototype.drawLinePath=function(a,b,c){return this.raphael.path(a).attr("stroke",b).attr("stroke-width",this.lineWidthForSeries(c))},c.prototype.drawLinePoint=function(a,b,c,d){return this.raphael.circle(a,b,this.pointSizeForSeries(d)).attr("fill",c).attr("stroke-width",this.pointStrokeWidthForSeries(d)).attr("stroke",this.pointStrokeColorForSeries(d))},c.prototype.pointStrokeWidthForSeries=function(a){return this.options.pointStrokeWidths[a%this.options.pointStrokeWidths.length]},c.prototype.pointStrokeColorForSeries=function(a){return this.options.pointStrokeColors[a%this.options.pointStrokeColors.length]},c.prototype.lineWidthForSeries=function(a){return this.options.lineWidth instanceof Array?this.options.lineWidth[a%this.options.lineWidth.length]:this.options.lineWidth},c.prototype.pointSizeForSeries=function(a){return this.options.pointSize instanceof Array?this.options.pointSize[a%this.options.pointSize.length]:this.options.pointSize},c.prototype.pointGrowSeries=function(a){return Raphael.animation({r:this.pointSizeForSeries(a)+3},25,"linear")},c.prototype.pointShrinkSeries=function(a){return Raphael.animation({r:this.pointSizeForSeries(a)},25,"linear")},c}(b.Grid),b.labelSeries=function(c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r;if(j=200*(d-c)/e,i=new Date(c),n=b.LABEL_SPECS[f],void 0===n)for(r=b.AUTO_LABEL_ORDER,p=0,q=r.length;q>p;p++)if(k=r[p],m=b.LABEL_SPECS[k],j>=m.span){n=m;break}for(void 0===n&&(n=b.LABEL_SPECS.second),g&&(n=a.extend({},n,{fmt:g})),h=n.start(i),l=[];(o=h.getTime())<=d;)o>=c&&l.push([n.fmt(h),o]),n.incr(h);return l},c=function(a){return{span:60*a*1e3,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours())},fmt:function(a){return""+b.pad2(a.getHours())+":"+b.pad2(a.getMinutes())},incr:function(b){return b.setUTCMinutes(b.getUTCMinutes()+a)}}},d=function(a){return{span:1e3*a,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes())},fmt:function(a){return""+b.pad2(a.getHours())+":"+b.pad2(a.getMinutes())+":"+b.pad2(a.getSeconds())},incr:function(b){return b.setUTCSeconds(b.getUTCSeconds()+a)}}},b.LABEL_SPECS={decade:{span:1728e8,start:function(a){return new Date(a.getFullYear()-a.getFullYear()%10,0,1)},fmt:function(a){return""+a.getFullYear()},incr:function(a){return a.setFullYear(a.getFullYear()+10)}},year:{span:1728e7,start:function(a){return new Date(a.getFullYear(),0,1)},fmt:function(a){return""+a.getFullYear()},incr:function(a){return a.setFullYear(a.getFullYear()+1)}},month:{span:24192e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),1)},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)},incr:function(a){return a.setMonth(a.getMonth()+1)}},week:{span:6048e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)+"-"+b.pad2(a.getDate())},incr:function(a){return a.setDate(a.getDate()+7)}},day:{span:864e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)+"-"+b.pad2(a.getDate())},incr:function(a){return a.setDate(a.getDate()+1)}},hour:c(60),"30min":c(30),"15min":c(15),"10min":c(10),"5min":c(5),minute:c(1),"30sec":d(30),"15sec":d(15),"10sec":d(10),"5sec":d(5),second:d(1)},b.AUTO_LABEL_ORDER=["decade","year","month","week","day","hour","30min","15min","10min","5min","minute","30sec","15sec","10sec","5sec","second"],b.Area=function(c){function d(c){var f;return this instanceof b.Area?(f=a.extend({},e,c),this.cumulative=!f.behaveLikeLine,"auto"===f.fillOpacity&&(f.fillOpacity=f.behaveLikeLine?.8:1),d.__super__.constructor.call(this,f),void 0):new b.Area(c)}var e;return h(d,c),e={fillOpacity:"auto",behaveLikeLine:!1},d.prototype.calcPoints=function(){var a,b,c,d,e,f,g;for(f=this.data,g=[],d=0,e=f.length;e>d;d++)a=f[d],a._x=this.transX(a.x),b=0,a._y=function(){var d,e,f,g;for(f=a.y,g=[],d=0,e=f.length;e>d;d++)c=f[d],this.options.behaveLikeLine?g.push(this.transY(c)):(b+=c||0,g.push(this.transY(b)));return g}.call(this),g.push(a._ymax=Math.max.apply(Math,a._y));return g},d.prototype.drawSeries=function(){var a,b,c,d,e,f,g,h;for(this.seriesPoints=[],b=this.options.behaveLikeLine?function(){f=[];for(var a=0,b=this.options.ykeys.length-1;b>=0?b>=a:a>=b;b>=0?a++:a--)f.push(a);return f}.apply(this):function(){g=[];for(var a=e=this.options.ykeys.length-1;0>=e?0>=a:a>=0;0>=e?a++:a--)g.push(a);return g}.apply(this),h=[],c=0,d=b.length;d>c;c++)a=b[c],this._drawFillFor(a),this._drawLineFor(a),h.push(this._drawPointFor(a));return h},d.prototype._drawFillFor=function(a){var b;return b=this.paths[a],null!==b?(b+="L"+this.transX(this.xmax)+","+this.bottom+"L"+this.transX(this.xmin)+","+this.bottom+"Z",this.drawFilledPath(b,this.fillForSeries(a))):void 0},d.prototype.fillForSeries=function(a){var b;return b=Raphael.rgb2hsl(this.colorFor(this.data[a],a,"line")),Raphael.hsl(b.h,this.options.behaveLikeLine?.9*b.s:.75*b.s,Math.min(.98,this.options.behaveLikeLine?1.2*b.l:1.25*b.l))},d.prototype.drawFilledPath=function(a,b){return this.raphael.path(a).attr("fill",b).attr("fill-opacity",this.options.fillOpacity).attr("stroke","none")},d}(b.Line),b.Bar=function(c){function d(c){return this.onHoverOut=f(this.onHoverOut,this),this.onHoverMove=f(this.onHoverMove,this),this.onGridClick=f(this.onGridClick,this),this instanceof b.Bar?(d.__super__.constructor.call(this,a.extend({},c,{parseTime:!1})),void 0):new b.Bar(c)}return h(d,c),d.prototype.init=function(){return this.cumulative=this.options.stacked,"always"!==this.options.hideHover?(this.hover=new b.Hover({parent:this.el}),this.on("hovermove",this.onHoverMove),this.on("hoverout",this.onHoverOut),this.on("gridclick",this.onGridClick)):void 0},d.prototype.defaults={barSizeRatio:.75,barGap:3,barColors:["#0b62a4","#7a92a3","#4da74d","#afd8f8","#edc240","#cb4b4b","#9440ed"],barOpacity:1,barRadius:[0,0,0,0],xLabelMargin:50},d.prototype.calc=function(){var a;return this.calcBars(),this.options.hideHover===!1?(a=this.hover).update.apply(a,this.hoverContentForRow(this.data.length-1)):void 0},d.prototype.calcBars=function(){var a,b,c,d,e,f,g;for(f=this.data,g=[],a=d=0,e=f.length;e>d;a=++d)b=f[a],b._x=this.left+this.width*(a+.5)/this.data.length,g.push(b._y=function(){var a,d,e,f;for(e=b.y,f=[],a=0,d=e.length;d>a;a++)c=e[a],null!=c?f.push(this.transY(c)):f.push(null);return f}.call(this));return g},d.prototype.draw=function(){var a;return((a=this.options.axes)===!0||"both"===a||"x"===a)&&this.drawXAxis(),this.drawSeries()},d.prototype.drawXAxis=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;for(j=this.bottom+(this.options.xAxisLabelTopPadding||this.options.padding/2),g=null,f=null,m=[],a=k=0,l=this.data.length;l>=0?l>k:k>l;a=l>=0?++k:--k)h=this.data[this.data.length-1-a],b=this.drawXAxisLabel(h._x,j,h.label),i=b.getBBox(),b.transform("r"+-this.options.xLabelAngle),c=b.getBBox(),b.transform("t0,"+c.height/2+"..."),0!==this.options.xLabelAngle&&(e=-.5*i.width*Math.cos(this.options.xLabelAngle*Math.PI/180),b.transform("t"+e+",0...")),(null==g||g>=c.x+c.width||null!=f&&f>=c.x)&&c.x>=0&&c.x+c.width<this.el.width()?(0!==this.options.xLabelAngle&&(d=1.25*this.options.gridTextSize/Math.sin(this.options.xLabelAngle*Math.PI/180),f=c.x-d),m.push(g=c.x-this.options.xLabelMargin)):m.push(b.remove());return m},d.prototype.drawSeries=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;return c=this.width/this.options.data.length,h=this.options.stacked?1:this.options.ykeys.length,a=(c*this.options.barSizeRatio-this.options.barGap*(h-1))/h,this.options.barSize&&(a=Math.min(a,this.options.barSize)),l=c-a*h-this.options.barGap*(h-1),g=l/2,o=this.ymin<=0&&this.ymax>=0?this.transY(0):null,this.bars=function(){var h,l,p,q;for(p=this.data,q=[],d=h=0,l=p.length;l>h;d=++h)i=p[d],e=0,q.push(function(){var h,l,p,q;for(p=i._y,q=[],j=h=0,l=p.length;l>h;j=++h)n=p[j],null!==n?(o?(m=Math.min(n,o),b=Math.max(n,o)):(m=n,b=this.bottom),f=this.left+d*c+g,this.options.stacked||(f+=j*(a+this.options.barGap)),k=b-m,this.options.verticalGridCondition&&this.options.verticalGridCondition(i.x)&&this.drawBar(this.left+d*c,this.top,c,Math.abs(this.top-this.bottom),this.options.verticalGridColor,this.options.verticalGridOpacity,this.options.barRadius),this.options.stacked&&(m-=e),this.drawBar(f,m,a,k,this.colorFor(i,j,"bar"),this.options.barOpacity,this.options.barRadius),q.push(e+=k)):q.push(null);return q}.call(this));return q}.call(this)},d.prototype.colorFor=function(a,b,c){var d,e;return"function"==typeof this.options.barColors?(d={x:a.x,y:a.y[b],label:a.label},e={index:b,key:this.options.ykeys[b],label:this.options.labels[b]},this.options.barColors.call(this,d,e,c)):this.options.barColors[b%this.options.barColors.length]},d.prototype.hitTest=function(a){return 0===this.data.length?null:(a=Math.max(Math.min(a,this.right),this.left),Math.min(this.data.length-1,Math.floor((a-this.left)/(this.width/this.data.length))))},d.prototype.onGridClick=function(a,b){var c;return c=this.hitTest(a),this.fire("click",c,this.data[c].src,a,b)},d.prototype.onHoverMove=function(a){var b,c;return b=this.hitTest(a),(c=this.hover).update.apply(c,this.hoverContentForRow(b))},d.prototype.onHoverOut=function(){return this.options.hideHover!==!1?this.hover.hide():void 0},d.prototype.hoverContentForRow=function(a){var b,c,d,e,f,g,h,i;for(d=this.data[a],b="<div class='morris-hover-row-label'>"+d.label+"</div>",i=d.y,c=g=0,h=i.length;h>g;c=++g)f=i[c],b+="<div class='morris-hover-point' style='color: "+this.colorFor(d,c,"label")+"'>\n  "+this.options.labels[c]+":\n  "+this.yLabelFormat(f)+"\n</div>";return"function"==typeof this.options.hoverCallback&&(b=this.options.hoverCallback(a,this.options,b,d.src)),e=this.left+(a+.5)*this.width/this.data.length,[b,e]},d.prototype.drawXAxisLabel=function(a,b,c){var d;return d=this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor)},d.prototype.drawBar=function(a,b,c,d,e,f,g){var h,i;return h=Math.max.apply(Math,g),i=0===h||h>d?this.raphael.rect(a,b,c,d):this.raphael.path(this.roundedRect(a,b,c,d,g)),i.attr("fill",e).attr("fill-opacity",f).attr("stroke","none")},d.prototype.roundedRect=function(a,b,c,d,e){return null==e&&(e=[0,0,0,0]),["M",a,e[0]+b,"Q",a,b,a+e[0],b,"L",a+c-e[1],b,"Q",a+c,b,a+c,b+e[1],"L",a+c,b+d-e[2],"Q",a+c,b+d,a+c-e[2],b+d,"L",a+e[3],b+d,"Q",a,b+d,a,b+d-e[3],"Z"]},d}(b.Grid),b.Donut=function(c){function d(c){this.resizeHandler=f(this.resizeHandler,this),this.select=f(this.select,this),this.click=f(this.click,this);var d=this;if(!(this instanceof b.Donut))return new b.Donut(c);if(this.options=a.extend({},this.defaults,c),this.el="string"==typeof c.element?a(document.getElementById(c.element)):a(c.element),null===this.el||0===this.el.length)throw new Error("Graph placeholder not found.");void 0!==c.data&&0!==c.data.length&&(this.raphael=new Raphael(this.el[0]),this.options.resize&&a(window).bind("resize",function(){return null!=d.timeoutId&&window.clearTimeout(d.timeoutId),d.timeoutId=window.setTimeout(d.resizeHandler,100)}),this.setData(c.data))}return h(d,c),d.prototype.defaults={colors:["#0B62A4","#3980B5","#679DC6","#95BBD7","#B0CCE1","#095791","#095085","#083E67","#052C48","#042135"],backgroundColor:"#FFFFFF",labelColor:"#000000",formatter:b.commas,resize:!1},d.prototype.redraw=function(){var a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;for(this.raphael.clear(),c=this.el.width()/2,d=this.el.height()/2,n=(Math.min(c,d)-10)/3,l=0,u=this.values,o=0,r=u.length;r>o;o++)m=u[o],l+=m;for(i=5/(2*n),a=1.9999*Math.PI-i*this.data.length,g=0,f=0,this.segments=[],v=this.values,e=p=0,s=v.length;s>p;e=++p)m=v[e],j=g+i+a*(m/l),k=new b.DonutSegment(c,d,2*n,n,g,j,this.data[e].color||this.options.colors[f%this.options.colors.length],this.options.backgroundColor,f,this.raphael),k.render(),this.segments.push(k),k.on("hover",this.select),k.on("click",this.click),g=j,f+=1;for(this.text1=this.drawEmptyDonutLabel(c,d-10,this.options.labelColor,15,800),this.text2=this.drawEmptyDonutLabel(c,d+10,this.options.labelColor,14),h=Math.max.apply(Math,this.values),f=0,w=this.values,x=[],q=0,t=w.length;t>q;q++){if(m=w[q],m===h){this.select(f);
+break}x.push(f+=1)}return x},d.prototype.setData=function(a){var b;return this.data=a,this.values=function(){var a,c,d,e;for(d=this.data,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(parseFloat(b.value));return e}.call(this),this.redraw()},d.prototype.click=function(a){return this.fire("click",a,this.data[a])},d.prototype.select=function(a){var b,c,d,e,f,g;for(g=this.segments,e=0,f=g.length;f>e;e++)c=g[e],c.deselect();return d=this.segments[a],d.select(),b=this.data[a],this.setLabels(b.label,this.options.formatter(b.value,b))},d.prototype.setLabels=function(a,b){var c,d,e,f,g,h,i,j;return c=2*(Math.min(this.el.width()/2,this.el.height()/2)-10)/3,f=1.8*c,e=c/2,d=c/3,this.text1.attr({text:a,transform:""}),g=this.text1.getBBox(),h=Math.min(f/g.width,e/g.height),this.text1.attr({transform:"S"+h+","+h+","+(g.x+g.width/2)+","+(g.y+g.height)}),this.text2.attr({text:b,transform:""}),i=this.text2.getBBox(),j=Math.min(f/i.width,d/i.height),this.text2.attr({transform:"S"+j+","+j+","+(i.x+i.width/2)+","+i.y})},d.prototype.drawEmptyDonutLabel=function(a,b,c,d,e){var f;return f=this.raphael.text(a,b,"").attr("font-size",d).attr("fill",c),null!=e&&f.attr("font-weight",e),f},d.prototype.resizeHandler=function(){return this.timeoutId=null,this.raphael.setSize(this.el.width(),this.el.height()),this.redraw()},d}(b.EventEmitter),b.DonutSegment=function(a){function b(a,b,c,d,e,g,h,i,j,k){this.cx=a,this.cy=b,this.inner=c,this.outer=d,this.color=h,this.backgroundColor=i,this.index=j,this.raphael=k,this.deselect=f(this.deselect,this),this.select=f(this.select,this),this.sin_p0=Math.sin(e),this.cos_p0=Math.cos(e),this.sin_p1=Math.sin(g),this.cos_p1=Math.cos(g),this.is_long=g-e>Math.PI?1:0,this.path=this.calcSegment(this.inner+3,this.inner+this.outer-5),this.selectedPath=this.calcSegment(this.inner+3,this.inner+this.outer),this.hilight=this.calcArc(this.inner)}return h(b,a),b.prototype.calcArcPoints=function(a){return[this.cx+a*this.sin_p0,this.cy+a*this.cos_p0,this.cx+a*this.sin_p1,this.cy+a*this.cos_p1]},b.prototype.calcSegment=function(a,b){var c,d,e,f,g,h,i,j,k,l;return k=this.calcArcPoints(a),c=k[0],e=k[1],d=k[2],f=k[3],l=this.calcArcPoints(b),g=l[0],i=l[1],h=l[2],j=l[3],"M"+c+","+e+("A"+a+","+a+",0,"+this.is_long+",0,"+d+","+f)+("L"+h+","+j)+("A"+b+","+b+",0,"+this.is_long+",1,"+g+","+i)+"Z"},b.prototype.calcArc=function(a){var b,c,d,e,f;return f=this.calcArcPoints(a),b=f[0],d=f[1],c=f[2],e=f[3],"M"+b+","+d+("A"+a+","+a+",0,"+this.is_long+",0,"+c+","+e)},b.prototype.render=function(){var a=this;return this.arc=this.drawDonutArc(this.hilight,this.color),this.seg=this.drawDonutSegment(this.path,this.color,this.backgroundColor,function(){return a.fire("hover",a.index)},function(){return a.fire("click",a.index)})},b.prototype.drawDonutArc=function(a,b){return this.raphael.path(a).attr({stroke:b,"stroke-width":2,opacity:0})},b.prototype.drawDonutSegment=function(a,b,c,d,e){return this.raphael.path(a).attr({fill:b,stroke:c,"stroke-width":3}).hover(d).click(e)},b.prototype.select=function(){return this.selected?void 0:(this.seg.animate({path:this.selectedPath},150,"<>"),this.arc.animate({opacity:1},150,"<>"),this.selected=!0)},b.prototype.deselect=function(){return this.selected?(this.seg.animate({path:this.path},150,"<>"),this.arc.animate({opacity:0},150,"<>"),this.selected=!1):void 0},b}(b.EventEmitter)}).call(this);
Index: public/vendors/charts/morsis/raphael-2.1.4.min.js
===================================================================
--- public/vendors/charts/morsis/raphael-2.1.4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/morsis/raphael-2.1.4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,12 @@
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ Raphaël 2.1.4 - JavaScript Vector Library                          │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com)    │ \\
+// │ Copyright © 2008-2012 Sencha Labs (http://sencha.com)              │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+!function(a,b){"function"==typeof define&&define.amd?define("eve",function(){return b()}):"object"==typeof exports?module.exports=b():a.eve=b()}(this,function(){var a,b,c="0.4.2",d="hasOwnProperty",e=/[\.\/]/,f="*",g=function(){},h=function(a,b){return a-b},i={n:{}},j=function(c,d){c=String(c);var e,f=b,g=Array.prototype.slice.call(arguments,2),i=j.listeners(c),k=0,l=[],m={},n=[],o=a;a=c,b=0;for(var p=0,q=i.length;q>p;p++)"zIndex"in i[p]&&(l.push(i[p].zIndex),i[p].zIndex<0&&(m[i[p].zIndex]=i[p]));for(l.sort(h);l[k]<0;)if(e=m[l[k++]],n.push(e.apply(d,g)),b)return b=f,n;for(p=0;q>p;p++)if(e=i[p],"zIndex"in e)if(e.zIndex==l[k]){if(n.push(e.apply(d,g)),b)break;do if(k++,e=m[l[k]],e&&n.push(e.apply(d,g)),b)break;while(e)}else m[e.zIndex]=e;else if(n.push(e.apply(d,g)),b)break;return b=f,a=o,n.length?n:null};return j._events=i,j.listeners=function(a){var b,c,d,g,h,j,k,l,m=a.split(e),n=i,o=[n],p=[];for(g=0,h=m.length;h>g;g++){for(l=[],j=0,k=o.length;k>j;j++)for(n=o[j].n,c=[n[m[g]],n[f]],d=2;d--;)b=c[d],b&&(l.push(b),p=p.concat(b.f||[]));o=l}return p},j.on=function(a,b){if(a=String(a),"function"!=typeof b)return function(){};for(var c=a.split(e),d=i,f=0,h=c.length;h>f;f++)d=d.n,d=d.hasOwnProperty(c[f])&&d[c[f]]||(d[c[f]]={n:{}});for(d.f=d.f||[],f=0,h=d.f.length;h>f;f++)if(d.f[f]==b)return g;return d.f.push(b),function(a){+a==+a&&(b.zIndex=+a)}},j.f=function(a){var b=[].slice.call(arguments,1);return function(){j.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}},j.stop=function(){b=1},j.nt=function(b){return b?new RegExp("(?:\\.|\\/|^)"+b+"(?:\\.|\\/|$)").test(a):a},j.nts=function(){return a.split(e)},j.off=j.unbind=function(a,b){if(!a)return void(j._events=i={n:{}});var c,g,h,k,l,m,n,o=a.split(e),p=[i];for(k=0,l=o.length;l>k;k++)for(m=0;m<p.length;m+=h.length-2){if(h=[m,1],c=p[m].n,o[k]!=f)c[o[k]]&&h.push(c[o[k]]);else for(g in c)c[d](g)&&h.push(c[g]);p.splice.apply(p,h)}for(k=0,l=p.length;l>k;k++)for(c=p[k];c.n;){if(b){if(c.f){for(m=0,n=c.f.length;n>m;m++)if(c.f[m]==b){c.f.splice(m,1);break}!c.f.length&&delete c.f}for(g in c.n)if(c.n[d](g)&&c.n[g].f){var q=c.n[g].f;for(m=0,n=q.length;n>m;m++)if(q[m]==b){q.splice(m,1);break}!q.length&&delete c.n[g].f}}else{delete c.f;for(g in c.n)c.n[d](g)&&c.n[g].f&&delete c.n[g].f}c=c.n}},j.once=function(a,b){var c=function(){return j.unbind(a,c),b.apply(this,arguments)};return j.on(a,c)},j.version=c,j.toString=function(){return"You are running Eve "+c},j}),function(a,b){"function"==typeof define&&define.amd?define("raphael.core",["eve"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("eve")):a.Raphael=b(a.eve)}(this,function(a){function b(c){if(b.is(c,"function"))return t?c():a.on("raphael.DOMload",c);if(b.is(c,U))return b._engine.create[C](b,c.splice(0,3+b.is(c[0],S))).add(c);var d=Array.prototype.slice.call(arguments,0);if(b.is(d[d.length-1],"function")){var e=d.pop();return t?e.call(b._engine.create[C](b,d)):a.on("raphael.DOMload",function(){e.call(b._engine.create[C](b,d))})}return b._engine.create[C](b,arguments)}function c(a){if("function"==typeof a||Object(a)!==a)return a;var b=new a.constructor;for(var d in a)a[y](d)&&(b[d]=c(a[d]));return b}function d(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function e(a,b,c){function e(){var f=Array.prototype.slice.call(arguments,0),g=f.join("␀"),h=e.cache=e.cache||{},i=e.count=e.count||[];return h[y](g)?(d(i,g),c?c(h[g]):h[g]):(i.length>=1e3&&delete h[i.shift()],i.push(g),h[g]=a[C](b,f),c?c(h[g]):h[g])}return e}function f(){return this.hex}function g(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function h(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function i(a,b,c,d,e,f,g,i,j){null==j&&(j=1),j=j>1?1:0>j?0:j;for(var k=j/2,l=12,m=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0,p=0;l>p;p++){var q=k*m[p]+k,r=h(q,a,c,e,g),s=h(q,b,d,f,i),t=r*r+s*s;o+=n[p]*M.sqrt(t)}return k*o}function j(a,b,c,d,e,f,g,h,j){if(!(0>j||i(a,b,c,d,e,f,g,h)<j)){var k,l=1,m=l/2,n=l-m,o=.01;for(k=i(a,b,c,d,e,f,g,h,n);P(k-j)>o;)m/=2,n+=(j>k?1:-1)*m,k=i(a,b,c,d,e,f,g,h,n);return n}}function k(a,b,c,d,e,f,g,h){if(!(N(a,c)<O(e,g)||O(a,c)>N(e,g)||N(b,d)<O(f,h)||O(b,d)>N(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(k){var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(!(n<+O(a,c).toFixed(2)||n>+N(a,c).toFixed(2)||n<+O(e,g).toFixed(2)||n>+N(e,g).toFixed(2)||o<+O(b,d).toFixed(2)||o>+N(b,d).toFixed(2)||o<+O(f,h).toFixed(2)||o>+N(f,h).toFixed(2)))return{x:l,y:m}}}}function l(a,c,d){var e=b.bezierBBox(a),f=b.bezierBBox(c);if(!b.isBBoxIntersect(e,f))return d?0:[];for(var g=i.apply(0,a),h=i.apply(0,c),j=N(~~(g/5),1),l=N(~~(h/5),1),m=[],n=[],o={},p=d?0:[],q=0;j+1>q;q++){var r=b.findDotsAtSegment.apply(b,a.concat(q/j));m.push({x:r.x,y:r.y,t:q/j})}for(q=0;l+1>q;q++)r=b.findDotsAtSegment.apply(b,c.concat(q/l)),n.push({x:r.x,y:r.y,t:q/l});for(q=0;j>q;q++)for(var s=0;l>s;s++){var t=m[q],u=m[q+1],v=n[s],w=n[s+1],x=P(u.x-t.x)<.001?"y":"x",y=P(w.x-v.x)<.001?"y":"x",z=k(t.x,t.y,u.x,u.y,v.x,v.y,w.x,w.y);if(z){if(o[z.x.toFixed(4)]==z.y.toFixed(4))continue;o[z.x.toFixed(4)]=z.y.toFixed(4);var A=t.t+P((z[x]-t[x])/(u[x]-t[x]))*(u.t-t.t),B=v.t+P((z[y]-v[y])/(w[y]-v[y]))*(w.t-v.t);A>=0&&1.001>=A&&B>=0&&1.001>=B&&(d?p++:p.push({x:z.x,y:z.y,t1:O(A,1),t2:O(B,1)}))}}return p}function m(a,c,d){a=b._path2curve(a),c=b._path2curve(c);for(var e,f,g,h,i,j,k,m,n,o,p=d?0:[],q=0,r=a.length;r>q;q++){var s=a[q];if("M"==s[0])e=i=s[1],f=j=s[2];else{"C"==s[0]?(n=[e,f].concat(s.slice(1)),e=n[6],f=n[7]):(n=[e,f,e,f,i,j,i,j],e=i,f=j);for(var t=0,u=c.length;u>t;t++){var v=c[t];if("M"==v[0])g=k=v[1],h=m=v[2];else{"C"==v[0]?(o=[g,h].concat(v.slice(1)),g=o[6],h=o[7]):(o=[g,h,g,h,k,m,k,m],g=k,h=m);var w=l(n,o,d);if(d)p+=w;else{for(var x=0,y=w.length;y>x;x++)w[x].segment1=q,w[x].segment2=t,w[x].bez1=n,w[x].bez2=o;p=p.concat(w)}}}}}return p}function n(a,b,c,d,e,f){null!=a?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function o(){return this.x+G+this.y+G+this.width+" × "+this.height}function p(a,b,c,d,e,f){function g(a){return((l*a+k)*a+j)*a}function h(a,b){var c=i(a,b);return((o*c+n)*c+m)*c}function i(a,b){var c,d,e,f,h,i;for(e=a,i=0;8>i;i++){if(f=g(e)-a,P(f)<b)return e;if(h=(3*l*e+2*k)*e+j,P(h)<1e-6)break;e-=f/h}if(c=0,d=1,e=a,c>e)return c;if(e>d)return d;for(;d>c;){if(f=g(e),P(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}var j=3*b,k=3*(d-b)-j,l=1-j-k,m=3*c,n=3*(e-c)-m,o=1-m-n;return h(a,1/(200*f))}function q(a,b){var c=[],d={};if(this.ms=b,this.times=1,a){for(var e in a)a[y](e)&&(d[$(e)]=a[e],c.push($(e)));c.sort(ka)}this.anim=d,this.top=c[c.length-1],this.percents=c}function r(c,d,e,f,g,h){e=$(e);var i,j,k,l,m,o,q=c.ms,r={},s={},t={};if(f)for(w=0,x=fb.length;x>w;w++){var u=fb[w];if(u.el.id==d.id&&u.anim==c){u.percent!=e?(fb.splice(w,1),k=1):j=u,d.attr(u.totalOrigin);break}}else f=+s;for(var w=0,x=c.percents.length;x>w;w++){if(c.percents[w]==e||c.percents[w]>f*c.top){e=c.percents[w],m=c.percents[w-1]||0,q=q/c.top*(e-m),l=c.percents[w+1],i=c.anim[e];break}f&&d.attr(c.anim[c.percents[w]])}if(i){if(j)j.initstatus=f,j.start=new Date-j.ms*f;else{for(var z in i)if(i[y](z)&&(ca[y](z)||d.paper.customAttributes[y](z)))switch(r[z]=d.attr(z),null==r[z]&&(r[z]=ba[z]),s[z]=i[z],ca[z]){case S:t[z]=(s[z]-r[z])/q;break;case"colour":r[z]=b.getRGB(r[z]);var A=b.getRGB(s[z]);t[z]={r:(A.r-r[z].r)/q,g:(A.g-r[z].g)/q,b:(A.b-r[z].b)/q};break;case"path":var B=Ia(r[z],s[z]),C=B[1];for(r[z]=B[0],t[z]=[],w=0,x=r[z].length;x>w;w++){t[z][w]=[0];for(var E=1,F=r[z][w].length;F>E;E++)t[z][w][E]=(C[w][E]-r[z][w][E])/q}break;case"transform":var G=d._,J=Na(G[z],s[z]);if(J)for(r[z]=J.from,s[z]=J.to,t[z]=[],t[z].real=!0,w=0,x=r[z].length;x>w;w++)for(t[z][w]=[r[z][w][0]],E=1,F=r[z][w].length;F>E;E++)t[z][w][E]=(s[z][w][E]-r[z][w][E])/q;else{var K=d.matrix||new n,L={_:{transform:G.transform},getBBox:function(){return d.getBBox(1)}};r[z]=[K.a,K.b,K.c,K.d,K.e,K.f],La(L,s[z]),s[z]=L._.transform,t[z]=[(L.matrix.a-K.a)/q,(L.matrix.b-K.b)/q,(L.matrix.c-K.c)/q,(L.matrix.d-K.d)/q,(L.matrix.e-K.e)/q,(L.matrix.f-K.f)/q]}break;case"csv":var M=H(i[z])[I](v),N=H(r[z])[I](v);if("clip-rect"==z)for(r[z]=N,t[z]=[],w=N.length;w--;)t[z][w]=(M[w]-r[z][w])/q;s[z]=M;break;default:for(M=[][D](i[z]),N=[][D](r[z]),t[z]=[],w=d.paper.customAttributes[z].length;w--;)t[z][w]=((M[w]||0)-(N[w]||0))/q}var O=i.easing,P=b.easing_formulas[O];if(!P)if(P=H(O).match(Y),P&&5==P.length){var Q=P;P=function(a){return p(a,+Q[1],+Q[2],+Q[3],+Q[4],q)}}else P=la;if(o=i.start||c.start||+new Date,u={anim:c,percent:e,timestamp:o,start:o+(c.del||0),status:0,initstatus:f||0,stop:!1,ms:q,easing:P,from:r,diff:t,to:s,el:d,callback:i.callback,prev:m,next:l,repeat:h||c.times,origin:d.attr(),totalOrigin:g},fb.push(u),f&&!j&&!k&&(u.stop=!0,u.start=new Date-q*f,1==fb.length))return hb();k&&(u.start=new Date-u.ms*f),1==fb.length&&gb(hb)}a("raphael.anim.start."+d.id,d,c)}}function s(a){for(var b=0;b<fb.length;b++)fb[b].el.paper==a&&fb.splice(b--,1)}b.version="2.1.4",b.eve=a;var t,u,v=/[, ]+/,w={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},x=/\{(\d+)\}/g,y="hasOwnProperty",z={doc:document,win:window},A={was:Object.prototype[y].call(z.win,"Raphael"),is:z.win.Raphael},B=function(){this.ca=this.customAttributes={}},C="apply",D="concat",E="ontouchstart"in z.win||z.win.DocumentTouch&&z.doc instanceof DocumentTouch,F="",G=" ",H=String,I="split",J="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[I](G),K={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},L=H.prototype.toLowerCase,M=Math,N=M.max,O=M.min,P=M.abs,Q=M.pow,R=M.PI,S="number",T="string",U="array",V=Object.prototype.toString,W=(b._ISURL=/^url\(['"]?(.+?)['"]?\)$/i,/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i),X={NaN:1,Infinity:1,"-Infinity":1},Y=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,Z=M.round,$=parseFloat,_=parseInt,aa=H.prototype.toUpperCase,ba=b._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},ca=b._availableAnimAttrs={blur:S,"clip-rect":"csv",cx:S,cy:S,fill:"colour","fill-opacity":S,"font-size":S,height:S,opacity:S,path:"path",r:S,rx:S,ry:S,stroke:"colour","stroke-opacity":S,"stroke-width":S,transform:"transform",width:S,x:S,y:S},da=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,ea={hs:1,rg:1},fa=/,?([achlmqrstvxz]),?/gi,ga=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,ha=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,ia=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi,ja=(b._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,{}),ka=function(a,b){return $(a)-$(b)},la=function(a){return a},ma=b._rectPath=function(a,b,c,d,e){return e?[["M",a+e,b],["l",c-2*e,0],["a",e,e,0,0,1,e,e],["l",0,d-2*e],["a",e,e,0,0,1,-e,e],["l",2*e-c,0],["a",e,e,0,0,1,-e,-e],["l",0,2*e-d],["a",e,e,0,0,1,e,-e],["z"]]:[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]]},na=function(a,b,c,d){return null==d&&(d=c),[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},oa=b._getPath={path:function(a){return a.attr("path")},circle:function(a){var b=a.attrs;return na(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return na(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return ma(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return ma(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return ma(b.x,b.y,b.width,b.height)},set:function(a){var b=a._getBBox();return ma(b.x,b.y,b.width,b.height)}},pa=b.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g,h,i;for(a=Ia(a),e=0,g=a.length;g>e;e++)for(i=a[e],f=1,h=i.length;h>f;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d;return a};if(b._g=z,b.type=z.win.SVGAngle||z.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML","VML"==b.type){var qa,ra=z.doc.createElement("div");if(ra.innerHTML='<v:shape adj="1"/>',qa=ra.firstChild,qa.style.behavior="url(#default#VML)",!qa||"object"!=typeof qa.adj)return b.type=F;ra=null}b.svg=!(b.vml="VML"==b.type),b._Paper=B,b.fn=u=B.prototype=b.prototype,b._id=0,b._oid=0,b.is=function(a,b){return b=L.call(b),"finite"==b?!X[y](+a):"array"==b?a instanceof Array:"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||"array"==b&&Array.isArray&&Array.isArray(a)||V.call(a).slice(8,-1).toLowerCase()==b},b.angle=function(a,c,d,e,f,g){if(null==f){var h=a-d,i=c-e;return h||i?(180+180*M.atan2(-i,-h)/R+360)%360:0}return b.angle(a,c,f,g)-b.angle(d,e,f,g)},b.rad=function(a){return a%360*R/180},b.deg=function(a){return Math.round(180*a/R%360*1e3)/1e3},b.snapTo=function(a,c,d){if(d=b.is(d,"finite")?d:10,b.is(a,U)){for(var e=a.length;e--;)if(P(a[e]-c)<=d)return a[e]}else{a=+a;var f=c%a;if(d>f)return c-f;if(f>a-d)return c-f+a}return c};b.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=16*M.random()|0,c="x"==a?b:3&b|8;return c.toString(16)});b.setWindow=function(c){a("raphael.setWindow",b,z.win,c),z.win=c,z.doc=z.win.document,b._engine.initWin&&b._engine.initWin(z.win)};var sa=function(a){if(b.vml){var c,d=/^\s+|\s+$/g;try{var f=new ActiveXObject("htmlfile");f.write("<body>"),f.close(),c=f.body}catch(g){c=createPopup().document.body}var h=c.createTextRange();sa=e(function(a){try{c.style.color=H(a).replace(d,F);var b=h.queryCommandValue("ForeColor");return b=(255&b)<<16|65280&b|(16711680&b)>>>16,"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=z.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",z.doc.body.appendChild(i),sa=e(function(a){return i.style.color=a,z.doc.defaultView.getComputedStyle(i,F).getPropertyValue("color")})}return sa(a)},ta=function(){return"hsb("+[this.h,this.s,this.b]+")"},ua=function(){return"hsl("+[this.h,this.s,this.l]+")"},va=function(){return this.hex},wa=function(a,c,d){if(null==c&&b.is(a,"object")&&"r"in a&&"g"in a&&"b"in a&&(d=a.b,c=a.g,a=a.r),null==c&&b.is(a,T)){var e=b.getRGB(a);a=e.r,c=e.g,d=e.b}return(a>1||c>1||d>1)&&(a/=255,c/=255,d/=255),[a,c,d]},xa=function(a,c,d,e){a*=255,c*=255,d*=255;var f={r:a,g:c,b:d,hex:b.rgb(a,c,d),toString:va};return b.is(e,"finite")&&(f.opacity=e),f};b.color=function(a){var c;return b.is(a,"object")&&"h"in a&&"s"in a&&"b"in a?(c=b.hsb2rgb(a),a.r=c.r,a.g=c.g,a.b=c.b,a.hex=c.hex):b.is(a,"object")&&"h"in a&&"s"in a&&"l"in a?(c=b.hsl2rgb(a),a.r=c.r,a.g=c.g,a.b=c.b,a.hex=c.hex):(b.is(a,"string")&&(a=b.getRGB(a)),b.is(a,"object")&&"r"in a&&"g"in a&&"b"in a?(c=b.rgb2hsl(a),a.h=c.h,a.s=c.s,a.l=c.l,c=b.rgb2hsb(a),a.v=c.b):(a={hex:"none"},a.r=a.g=a.b=a.h=a.s=a.v=a.l=-1)),a.toString=va,a},b.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,d=a.o,a=a.h),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-P(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],xa(e,f,g,d)},b.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h),(a>1||b>1||c>1)&&(a/=360,b/=100,c/=100),a*=360;var e,f,g,h,i;return a=a%360/60,i=2*b*(.5>c?c:1-c),h=i*(1-P(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],xa(e,f,g,d)},b.rgb2hsb=function(a,b,c){c=wa(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;return f=N(a,b,c),g=f-O(a,b,c),d=0==g?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=0==g?0:g/f,{h:d,s:e,b:f,toString:ta}},b.rgb2hsl=function(a,b,c){c=wa(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;return g=N(a,b,c),h=O(a,b,c),i=g-h,d=0==i?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=0==i?0:.5>f?i/(2*f):i/(2-2*f),{h:d,s:e,l:f,toString:ua}},b._path2string=function(){return this.join(",").replace(fa,"$1")};b._preload=function(a,b){var c=z.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,z.doc.body.removeChild(this)},c.onerror=function(){z.doc.body.removeChild(this)},z.doc.body.appendChild(c),c.src=a};b.getRGB=e(function(a){if(!a||(a=H(a)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:f};if("none"==a)return{r:-1,g:-1,b:-1,hex:"none",toString:f};!(ea[y](a.toLowerCase().substring(0,2))||"#"==a.charAt())&&(a=sa(a));var c,d,e,g,h,i,j=a.match(W);return j?(j[2]&&(e=_(j[2].substring(5),16),d=_(j[2].substring(3,5),16),c=_(j[2].substring(1,3),16)),j[3]&&(e=_((h=j[3].charAt(3))+h,16),d=_((h=j[3].charAt(2))+h,16),c=_((h=j[3].charAt(1))+h,16)),j[4]&&(i=j[4][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),"rgba"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100)),j[5]?(i=j[5][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(c/=360),"hsba"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),b.hsb2rgb(c,d,e,g)):j[6]?(i=j[6][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(c/=360),"hsla"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),b.hsl2rgb(c,d,e,g)):(j={r:c,g:d,b:e,toString:f},j.hex="#"+(16777216|e|d<<8|c<<16).toString(16).slice(1),b.is(g,"finite")&&(j.opacity=g),j)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:f}},b),b.hsb=e(function(a,c,d){return b.hsb2rgb(a,c,d).hex}),b.hsl=e(function(a,c,d){return b.hsl2rgb(a,c,d).hex}),b.rgb=e(function(a,b,c){function d(a){return a+.5|0}return"#"+(16777216|d(c)|d(b)<<8|d(a)<<16).toString(16).slice(1)}),b.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);return b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b})),c.hex},b.getColor.reset=function(){delete this.start},b.parsePathString=function(a){if(!a)return null;var c=ya(a);if(c.arr)return Aa(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];return b.is(a,U)&&b.is(a[0],U)&&(e=Aa(a)),e.length||H(a).replace(ga,function(a,b,c){var f=[],g=b.toLowerCase();if(c.replace(ia,function(a,b){b&&f.push(+b)}),"m"==g&&f.length>2&&(e.push([b][D](f.splice(0,2))),g="l",b="m"==b?"l":"L"),"r"==g)e.push([b][D](f));else for(;f.length>=d[g]&&(e.push([b][D](f.splice(0,d[g]))),d[g]););}),e.toString=b._path2string,c.arr=Aa(e),e},b.parseTransformString=e(function(a){if(!a)return null;var c=[];return b.is(a,U)&&b.is(a[0],U)&&(c=Aa(a)),c.length||H(a).replace(ha,function(a,b,d){{var e=[];L.call(b)}d.replace(ia,function(a,b){b&&e.push(+b)}),c.push([b][D](e))}),c.toString=b._path2string,c});var ya=function(a){var b=ya.ps=ya.ps||{};return b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[y](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])}),b[a]};b.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=Q(j,3),l=Q(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*M.atan2(q-s,r-t)/R;return(q>s||t>r)&&(y+=180),{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}},b.bezierBBox=function(a,c,d,e,f,g,h,i){b.is(a,"array")||(a=[a,c,d,e,f,g,h,i]);var j=Ha.apply(null,a);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},b.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},b.isBBoxIntersect=function(a,c){var d=b.isPointInsideBBox;return d(c,a.x,a.y)||d(c,a.x2,a.y)||d(c,a.x,a.y2)||d(c,a.x2,a.y2)||d(a,c.x,c.y)||d(a,c.x2,c.y)||d(a,c.x,c.y2)||d(a,c.x2,c.y2)||(a.x<c.x2&&a.x>c.x||c.x<a.x2&&c.x>a.x)&&(a.y<c.y2&&a.y>c.y||c.y<a.y2&&c.y>a.y)},b.pathIntersection=function(a,b){return m(a,b)},b.pathIntersectionNumber=function(a,b){return m(a,b,1)},b.isPointInsidePath=function(a,c,d){var e=b.pathBBox(a);return b.isPointInsideBBox(e,c,d)&&m(a,[["M",c,d],["H",e.x2+10]],1)%2==1},b._removedFactory=function(b){return function(){a("raphael.log",null,"Raphaël: you are calling to method “"+b+"” of removed object",b)}};var za=b.pathBBox=function(a){var b=ya(a);if(b.bbox)return c(b.bbox);if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=Ia(a);for(var d,e=0,f=0,g=[],h=[],i=0,j=a.length;j>i;i++)if(d=a[i],"M"==d[0])e=d[1],f=d[2],g.push(e),h.push(f);else{var k=Ha(e,f,d[1],d[2],d[3],d[4],d[5],d[6]);g=g[D](k.min.x,k.max.x),h=h[D](k.min.y,k.max.y),e=d[5],f=d[6]}var l=O[C](0,g),m=O[C](0,h),n=N[C](0,g),o=N[C](0,h),p=n-l,q=o-m,r={x:l,y:m,x2:n,y2:o,width:p,height:q,cx:l+p/2,cy:m+q/2};return b.bbox=c(r),r},Aa=function(a){var d=c(a);return d.toString=b._path2string,d},Ba=b._pathToRelative=function(a){var c=ya(a);if(c.rel)return Aa(c.rel);b.is(a,U)&&b.is(a&&a[0],U)||(a=b.parsePathString(a));var d=[],e=0,f=0,g=0,h=0,i=0;"M"==a[0][0]&&(e=a[0][1],f=a[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=a.length;k>j;j++){var l=d[j]=[],m=a[j];if(m[0]!=L.call(m[0]))switch(l[0]=L.call(m[0]),l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;o>n;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}else{l=d[j]=[],"m"==m[0]&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;q>p;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}return d.toString=b._path2string,c.rel=Aa(d),d},Ca=b._pathToAbsolute=function(a){var c=ya(a);if(c.abs)return Aa(c.abs);if(b.is(a,U)&&b.is(a&&a[0],U)||(a=b.parsePathString(a)),!a||!a.length)return[["M",0,0]];var d=[],e=0,f=0,h=0,i=0,j=0;"M"==a[0][0]&&(e=+a[0][1],f=+a[0][2],h=e,i=f,j++,d[0]=["M",e,f]);for(var k,l,m=3==a.length&&"M"==a[0][0]&&"R"==a[1][0].toUpperCase()&&"Z"==a[2][0].toUpperCase(),n=j,o=a.length;o>n;n++){if(d.push(k=[]),l=a[n],l[0]!=aa.call(l[0]))switch(k[0]=aa.call(l[0]),k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":for(var p=[e,f][D](l.slice(1)),q=2,r=p.length;r>q;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[D](g(p,m));break;case"M":h=+l[1]+e,i=+l[2]+f;default:for(q=1,r=l.length;r>q;q++)k[q]=+l[q]+(q%2?e:f)}else if("R"==l[0])p=[e,f][D](l.slice(1)),d.pop(),d=d[D](g(p,m)),k=["R"][D](l.slice(-2));else for(var s=0,t=l.length;t>s;s++)k[s]=l[s];switch(k[0]){case"Z":e=h,f=i;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":h=k[k.length-2],i=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}return d.toString=b._path2string,c.abs=Aa(d),d},Da=function(a,b,c,d){return[a,b,c,d,c,d]},Ea=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},Fa=function(a,b,c,d,f,g,h,i,j,k){var l,m=120*R/180,n=R/180*(+f||0),o=[],p=e(function(a,b,c){var d=a*M.cos(c)-b*M.sin(c),e=a*M.sin(c)+b*M.cos(c);return{x:d,y:e}});if(k)y=k[0],z=k[1],w=k[2],x=k[3];else{l=p(a,b,-n),a=l.x,b=l.y,l=p(i,j,-n),i=l.x,j=l.y;var q=(M.cos(R/180*f),M.sin(R/180*f),(a-i)/2),r=(b-j)/2,s=q*q/(c*c)+r*r/(d*d);s>1&&(s=M.sqrt(s),c=s*c,d=s*d);var t=c*c,u=d*d,v=(g==h?-1:1)*M.sqrt(P((t*u-t*r*r-u*q*q)/(t*r*r+u*q*q))),w=v*c*r/d+(a+i)/2,x=v*-d*q/c+(b+j)/2,y=M.asin(((b-x)/d).toFixed(9)),z=M.asin(((j-x)/d).toFixed(9));y=w>a?R-y:y,z=w>i?R-z:z,0>y&&(y=2*R+y),0>z&&(z=2*R+z),h&&y>z&&(y-=2*R),!h&&z>y&&(z-=2*R)}var A=z-y;if(P(A)>m){var B=z,C=i,E=j;z=y+m*(h&&z>y?1:-1),i=w+c*M.cos(z),j=x+d*M.sin(z),o=Fa(i,j,c,d,f,0,h,C,E,[z,B,w,x])}A=z-y;var F=M.cos(y),G=M.sin(y),H=M.cos(z),J=M.sin(z),K=M.tan(A/4),L=4/3*c*K,N=4/3*d*K,O=[a,b],Q=[a+L*G,b-N*F],S=[i+L*J,j-N*H],T=[i,j];if(Q[0]=2*O[0]-Q[0],Q[1]=2*O[1]-Q[1],k)return[Q,S,T][D](o);o=[Q,S,T][D](o).join()[I](",");for(var U=[],V=0,W=o.length;W>V;V++)U[V]=V%2?p(o[V-1],o[V],n).y:p(o[V],o[V+1],n).x;return U},Ga=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:Q(j,3)*a+3*Q(j,2)*i*c+3*j*i*i*e+Q(i,3)*g,y:Q(j,3)*b+3*Q(j,2)*i*d+3*j*i*i*f+Q(i,3)*h}},Ha=e(function(a,b,c,d,e,f,g,h){var i,j=e-2*c+a-(g-2*e+c),k=2*(c-a)-2*(e-c),l=a-c,m=(-k+M.sqrt(k*k-4*j*l))/2/j,n=(-k-M.sqrt(k*k-4*j*l))/2/j,o=[b,h],p=[a,g];return P(m)>"1e12"&&(m=.5),P(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ga(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ga(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),j=f-2*d+b-(h-2*f+d),k=2*(d-b)-2*(f-d),l=b-d,m=(-k+M.sqrt(k*k-4*j*l))/2/j,n=(-k-M.sqrt(k*k-4*j*l))/2/j,P(m)>"1e12"&&(m=.5),P(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ga(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ga(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),{min:{x:O[C](0,p),y:O[C](0,o)},max:{x:N[C](0,p),y:N[C](0,o)}}}),Ia=b._path2curve=e(function(a,b){var c=!b&&ya(a);if(!b&&c.curve)return Aa(c.curve);for(var d=Ca(a),e=b&&Ca(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=(function(a,b,c){var d,e,f={T:1,Q:1};if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(!(a[0]in f)&&(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][D](Fa[C](0,[b.x,b.y][D](a.slice(1))));break;case"S":"C"==c||"S"==c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e][D](a.slice(1));break;case"T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"][D](Ea(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][D](Ea(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][D](Da(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][D](Da(b.x,b.y,a[1],b.y));break;case"V":a=["C"][D](Da(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][D](Da(b.x,b.y,b.X,b.Y))}return a}),i=function(a,b){if(a[b].length>7){a[b].shift();for(var c=a[b];c.length;)k[b]="A",e&&(l[b]="A"),a.splice(b++,0,["C"][D](c.splice(0,6)));a.splice(b,1),p=N(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&"M"==a[g][0]&&"M"!=b[g][0]&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],p=N(d.length,e&&e.length||0))},k=[],l=[],m="",n="",o=0,p=N(d.length,e&&e.length||0);p>o;o++){d[o]&&(m=d[o][0]),"C"!=m&&(k[o]=m,o&&(n=k[o-1])),d[o]=h(d[o],f,n),"A"!=k[o]&&"C"==m&&(k[o]="C"),i(d,o),e&&(e[o]&&(m=e[o][0]),"C"!=m&&(l[o]=m,o&&(n=l[o-1])),e[o]=h(e[o],g,n),"A"!=l[o]&&"C"==m&&(l[o]="C"),i(e,o)),j(d,e,f,g,o),j(e,d,g,f,o);var q=d[o],r=e&&e[o],s=q.length,t=e&&r.length;f.x=q[s-2],f.y=q[s-1],f.bx=$(q[s-4])||f.x,f.by=$(q[s-3])||f.y,g.bx=e&&($(r[t-4])||g.x),g.by=e&&($(r[t-3])||g.y),g.x=e&&r[t-2],g.y=e&&r[t-1]}return e||(c.curve=Aa(d)),e?[d,e]:d},null,Aa),Ja=(b._parseDots=e(function(a){for(var c=[],d=0,e=a.length;e>d;d++){var f={},g=a[d].match(/^([^:]*):?([\d\.]*)/);if(f.color=b.getRGB(g[1]),f.color.error)return null;f.opacity=f.color.opacity,f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),c.push(f)}for(d=1,e=c.length-1;e>d;d++)if(!c[d].offset){for(var h=$(c[d-1].offset||0),i=0,j=d+1;e>j;j++)if(c[j].offset){i=c[j].offset;break}i||(i=100,j=e),i=$(i);for(var k=(i-h)/(j-d+1);j>d;d++)h+=k,c[d].offset=h+"%"}return c}),b._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)}),Ka=(b._tofront=function(a,b){b.top!==a&&(Ja(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},b._toback=function(a,b){b.bottom!==a&&(Ja(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},b._insertafter=function(a,b,c){Ja(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},b._insertbefore=function(a,b,c){Ja(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},b.toMatrix=function(a,b){var c=za(a),d={_:{transform:F},getBBox:function(){return c}};return La(d,b),d.matrix}),La=(b.transformPath=function(a,b){return pa(a,Ka(a,b))},b._extractTransform=function(a,c){if(null==c)return a._.transform;c=H(c).replace(/\.{3}|\u2026/g,a._.transform||F);var d=b.parseTransformString(c),e=0,f=0,g=0,h=1,i=1,j=a._,k=new n;if(j.transform=d||[],d)for(var l=0,m=d.length;m>l;l++){var o,p,q,r,s,t=d[l],u=t.length,v=H(t[0]).toLowerCase(),w=t[0]!=v,x=w?k.invert():0;"t"==v&&3==u?w?(o=x.x(0,0),p=x.y(0,0),q=x.x(t[1],t[2]),r=x.y(t[1],t[2]),k.translate(q-o,r-p)):k.translate(t[1],t[2]):"r"==v?2==u?(s=s||a.getBBox(1),k.rotate(t[1],s.x+s.width/2,s.y+s.height/2),e+=t[1]):4==u&&(w?(q=x.x(t[2],t[3]),r=x.y(t[2],t[3]),k.rotate(t[1],q,r)):k.rotate(t[1],t[2],t[3]),e+=t[1]):"s"==v?2==u||3==u?(s=s||a.getBBox(1),k.scale(t[1],t[u-1],s.x+s.width/2,s.y+s.height/2),h*=t[1],i*=t[u-1]):5==u&&(w?(q=x.x(t[3],t[4]),r=x.y(t[3],t[4]),k.scale(t[1],t[2],q,r)):k.scale(t[1],t[2],t[3],t[4]),h*=t[1],i*=t[2]):"m"==v&&7==u&&k.add(t[1],t[2],t[3],t[4],t[5],t[6]),j.dirtyT=1,a.matrix=k}a.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,1==h&&1==i&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1}),Ma=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return 4==a.length?[b,0,a[2],a[3]]:[b,0];case"s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}},Na=b._equaliseTransform=function(a,c){
+c=H(c).replace(/\.{3}|\u2026/g,a),a=b.parseTransformString(a)||[],c=b.parseTransformString(c)||[];for(var d,e,f,g,h=N(a.length,c.length),i=[],j=[],k=0;h>k;k++){if(f=a[k]||Ma(c[k]),g=c[k]||Ma(f),f[0]!=g[0]||"r"==f[0].toLowerCase()&&(f[2]!=g[2]||f[3]!=g[3])||"s"==f[0].toLowerCase()&&(f[3]!=g[3]||f[4]!=g[4]))return;for(i[k]=[],j[k]=[],d=0,e=N(f.length,g.length);e>d;d++)d in f&&(i[k][d]=f[d]),d in g&&(j[k][d]=g[d])}return{from:i,to:j}};b._getContainer=function(a,c,d,e){var f;return f=null!=e||b.is(a,"object")?a:z.doc.getElementById(a),null!=f?f.tagName?null==c?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d}:{container:1,x:a,y:c,width:d,height:e}:void 0},b.pathToRelative=Ba,b._engine={},b.path2curve=Ia,b.matrix=function(a,b,c,d,e,f){return new n(a,b,c,d,e,f)},function(a){function c(a){return a[0]*a[0]+a[1]*a[1]}function d(a){var b=M.sqrt(c(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}a.add=function(a,b,c,d,e,f){var g,h,i,j,k=[[],[],[]],l=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],m=[[a,c,e],[b,d,f],[0,0,1]];for(a&&a instanceof n&&(m=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]),g=0;3>g;g++)for(h=0;3>h;h++){for(j=0,i=0;3>i;i++)j+=l[g][i]*m[i][h];k[g][h]=j}this.a=k[0][0],this.b=k[1][0],this.c=k[0][1],this.d=k[1][1],this.e=k[0][2],this.f=k[1][2]},a.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new n(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},a.clone=function(){return new n(this.a,this.b,this.c,this.d,this.e,this.f)},a.translate=function(a,b){this.add(1,0,0,1,a,b)},a.scale=function(a,b,c,d){null==b&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},a.rotate=function(a,c,d){a=b.rad(a),c=c||0,d=d||0;var e=+M.cos(a).toFixed(9),f=+M.sin(a).toFixed(9);this.add(e,f,-f,e,c,d),this.add(1,0,0,1,-c,-d)},a.x=function(a,b){return a*this.a+b*this.c+this.e},a.y=function(a,b){return a*this.b+b*this.d+this.f},a.get=function(a){return+this[H.fromCharCode(97+a)].toFixed(4)},a.toString=function(){return b.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},a.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},a.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},a.split=function(){var a={};a.dx=this.e,a.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];a.scalex=M.sqrt(c(e[0])),d(e[0]),a.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*a.shear,e[1][1]-e[0][1]*a.shear],a.scaley=M.sqrt(c(e[1])),d(e[1]),a.shear/=a.scaley;var f=-e[0][1],g=e[1][1];return 0>g?(a.rotate=b.deg(M.acos(g)),0>f&&(a.rotate=360-a.rotate)):a.rotate=b.deg(M.asin(f)),a.isSimple=!(+a.shear.toFixed(9)||a.scalex.toFixed(9)!=a.scaley.toFixed(9)&&a.rotate),a.isSuperSimple=!+a.shear.toFixed(9)&&a.scalex.toFixed(9)==a.scaley.toFixed(9)&&!a.rotate,a.noRotation=!+a.shear.toFixed(9)&&!a.rotate,a},a.toTransformString=function(a){var b=a||this[I]();return b.isSimple?(b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4),(b.dx||b.dy?"t"+[b.dx,b.dy]:F)+(1!=b.scalex||1!=b.scaley?"s"+[b.scalex,b.scaley,0,0]:F)+(b.rotate?"r"+[b.rotate,0,0]:F)):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(n.prototype);for(var Oa=function(){this.returnValue=!1},Pa=function(){return this.originalEvent.preventDefault()},Qa=function(){this.cancelBubble=!0},Ra=function(){return this.originalEvent.stopPropagation()},Sa=function(a){var b=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,c=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft;return{x:a.clientX+c,y:a.clientY+b}},Ta=function(){return z.doc.addEventListener?function(a,b,c,d){var e=function(a){var b=Sa(a);return c.call(d,a,b.x,b.y)};if(a.addEventListener(b,e,!1),E&&K[b]){var f=function(b){for(var e=Sa(b),f=b,g=0,h=b.targetTouches&&b.targetTouches.length;h>g;g++)if(b.targetTouches[g].target==a){b=b.targetTouches[g],b.originalEvent=f,b.preventDefault=Pa,b.stopPropagation=Ra;break}return c.call(d,b,e.x,e.y)};a.addEventListener(K[b],f,!1)}return function(){return a.removeEventListener(b,e,!1),E&&K[b]&&a.removeEventListener(K[b],f,!1),!0}}:z.doc.attachEvent?function(a,b,c,d){var e=function(a){a=a||z.win.event;var b=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,e=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;return a.preventDefault=a.preventDefault||Oa,a.stopPropagation=a.stopPropagation||Qa,c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){return a.detachEvent("on"+b,e),!0};return f}:void 0}(),Ua=[],Va=function(b){for(var c,d=b.clientX,e=b.clientY,f=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,g=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft,h=Ua.length;h--;){if(c=Ua[h],E&&b.touches){for(var i,j=b.touches.length;j--;)if(i=b.touches[j],i.identifier==c.el._drag.id){d=i.clientX,e=i.clientY,(b.originalEvent?b.originalEvent:b).preventDefault();break}}else b.preventDefault();var k,l=c.el.node,m=l.nextSibling,n=l.parentNode,o=l.style.display;z.win.opera&&n.removeChild(l),l.style.display="none",k=c.el.paper.getElementByPoint(d,e),l.style.display=o,z.win.opera&&(m?n.insertBefore(l,m):n.appendChild(l)),k&&a("raphael.drag.over."+c.el.id,c.el,k),d+=g,e+=f,a("raphael.drag.move."+c.el.id,c.move_scope||c.el,d-c.el._drag.x,e-c.el._drag.y,d,e,b)}},Wa=function(c){b.unmousemove(Va).unmouseup(Wa);for(var d,e=Ua.length;e--;)d=Ua[e],d.el._drag={},a("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,c);Ua=[]},Xa=b.el={},Ya=J.length;Ya--;)!function(a){b[a]=Xa[a]=function(c,d){return b.is(c,"function")&&(this.events=this.events||[],this.events.push({name:a,f:c,unbind:Ta(this.shape||this.node||z.doc,a,c,d||this)})),this},b["un"+a]=Xa["un"+a]=function(c){for(var d=this.events||[],e=d.length;e--;)d[e].name!=a||!b.is(c,"undefined")&&d[e].f!=c||(d[e].unbind(),d.splice(e,1),!d.length&&delete this.events);return this}}(J[Ya]);Xa.data=function(c,d){var e=ja[this.id]=ja[this.id]||{};if(0==arguments.length)return e;if(1==arguments.length){if(b.is(c,"object")){for(var f in c)c[y](f)&&this.data(f,c[f]);return this}return a("raphael.data.get."+this.id,this,e[c],c),e[c]}return e[c]=d,a("raphael.data.set."+this.id,this,d,c),this},Xa.removeData=function(a){return null==a?ja[this.id]={}:ja[this.id]&&delete ja[this.id][a],this},Xa.getData=function(){return c(ja[this.id]||{})},Xa.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},Xa.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var Za=[];Xa.drag=function(c,d,e,f,g,h){function i(i){(i.originalEvent||i).preventDefault();var j=i.clientX,k=i.clientY,l=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,m=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft;if(this._drag.id=i.identifier,E&&i.touches)for(var n,o=i.touches.length;o--;)if(n=i.touches[o],this._drag.id=n.identifier,n.identifier==this._drag.id){j=n.clientX,k=n.clientY;break}this._drag.x=j+m,this._drag.y=k+l,!Ua.length&&b.mousemove(Va).mouseup(Wa),Ua.push({el:this,move_scope:f,start_scope:g,end_scope:h}),d&&a.on("raphael.drag.start."+this.id,d),c&&a.on("raphael.drag.move."+this.id,c),e&&a.on("raphael.drag.end."+this.id,e),a("raphael.drag.start."+this.id,g||f||this,i.clientX+m,i.clientY+l,i)}return this._drag={},Za.push({el:this,start:i}),this.mousedown(i),this},Xa.onDragOver=function(b){b?a.on("raphael.drag.over."+this.id,b):a.unbind("raphael.drag.over."+this.id)},Xa.undrag=function(){for(var c=Za.length;c--;)Za[c].el==this&&(this.unmousedown(Za[c].start),Za.splice(c,1),a.unbind("raphael.drag.*."+this.id));!Za.length&&b.unmousemove(Va).unmouseup(Wa),Ua=[]},u.circle=function(a,c,d){var e=b._engine.circle(this,a||0,c||0,d||0);return this.__set__&&this.__set__.push(e),e},u.rect=function(a,c,d,e,f){var g=b._engine.rect(this,a||0,c||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},u.ellipse=function(a,c,d,e){var f=b._engine.ellipse(this,a||0,c||0,d||0,e||0);return this.__set__&&this.__set__.push(f),f},u.path=function(a){a&&!b.is(a,T)&&!b.is(a[0],U)&&(a+=F);var c=b._engine.path(b.format[C](b,arguments),this);return this.__set__&&this.__set__.push(c),c},u.image=function(a,c,d,e,f){var g=b._engine.image(this,a||"about:blank",c||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},u.text=function(a,c,d){var e=b._engine.text(this,a||0,c||0,H(d));return this.__set__&&this.__set__.push(e),e},u.set=function(a){!b.is(a,"array")&&(a=Array.prototype.splice.call(arguments,0,arguments.length));var c=new jb(a);return this.__set__&&this.__set__.push(c),c.paper=this,c.type="set",c},u.setStart=function(a){this.__set__=a||this.set()},u.setFinish=function(a){var b=this.__set__;return delete this.__set__,b},u.getSize=function(){var a=this.canvas.parentNode;return{width:a.offsetWidth,height:a.offsetHeight}},u.setSize=function(a,c){return b._engine.setSize.call(this,a,c)},u.setViewBox=function(a,c,d,e,f){return b._engine.setViewBox.call(this,a,c,d,e,f)},u.top=u.bottom=null,u.raphael=b;var $a=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,h=b.top+(z.win.pageYOffset||e.scrollTop||d.scrollTop)-f,i=b.left+(z.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:h,x:i}};u.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=z.doc.elementFromPoint(a,b);if(z.win.opera&&"svg"==e.tagName){var f=$a(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var h=d.getIntersectionList(g,null);h.length&&(e=h[h.length-1])}if(!e)return null;for(;e.parentNode&&e!=d.parentNode&&!e.raphael;)e=e.parentNode;return e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null},u.getElementsByBBox=function(a){var c=this.set();return this.forEach(function(d){b.isBBoxIntersect(d.getBBox(),a)&&c.push(d)}),c},u.getById=function(a){for(var b=this.bottom;b;){if(b.id==a)return b;b=b.next}return null},u.forEach=function(a,b){for(var c=this.bottom;c;){if(a.call(b,c)===!1)return this;c=c.next}return this},u.getElementsByPoint=function(a,b){var c=this.set();return this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)}),c},Xa.isPointInside=function(a,c){var d=this.realPath=oa[this.type](this);return this.attr("transform")&&this.attr("transform").length&&(d=b.transformPath(d,this.attr("transform"))),b.isPointInsidePath(d,a,c)},Xa.getBBox=function(a){if(this.removed)return{};var b=this._;return a?((b.dirty||!b.bboxwt)&&(this.realPath=oa[this.type](this),b.bboxwt=za(this.realPath),b.bboxwt.toString=o,b.dirty=0),b.bboxwt):((b.dirty||b.dirtyT||!b.bbox)&&((b.dirty||!this.realPath)&&(b.bboxwt=0,this.realPath=oa[this.type](this)),b.bbox=za(pa(this.realPath,this.matrix)),b.bbox.toString=o,b.dirty=b.dirtyT=0),b.bbox)},Xa.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());return this.__set__&&this.__set__.push(a),a},Xa.glow=function(a){if("text"==this.type)return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:null==a.opacity?.5:a.opacity,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||oa[this.type](this);f=this.matrix?pa(f,this.matrix):f;for(var g=1;c+1>g;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var _a=function(a,c,d,e,f,g,h,k,l){return null==l?i(a,c,d,e,f,g,h,k):b.findDotsAtSegment(a,c,d,e,f,g,h,k,j(a,c,d,e,f,g,h,k,l))},ab=function(a,c){return function(d,e,f){d=Ia(d);for(var g,h,i,j,k,l="",m={},n=0,o=0,p=d.length;p>o;o++){if(i=d[o],"M"==i[0])g=+i[1],h=+i[2];else{if(j=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6]),n+j>e){if(c&&!m.start){if(k=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),l+=["C"+k.start.x,k.start.y,k.m.x,k.m.y,k.x,k.y],f)return l;m.start=l,l=["M"+k.x,k.y+"C"+k.n.x,k.n.y,k.end.x,k.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!a&&!c)return k=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),{x:k.x,y:k.y,alpha:k.alpha}}n+=j,g=+i[5],h=+i[6]}l+=i.shift()+i}return m.end=l,k=a?n:c?m:b.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),k.alpha&&(k={x:k.x,y:k.y,alpha:k.alpha}),k}},bb=ab(1),cb=ab(),db=ab(0,1);b.getTotalLength=bb,b.getPointAtLength=cb,b.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return db(a,b).end;var d=db(a,c,1);return b?db(d,b).end:d},Xa.getTotalLength=function(){var a=this.getPath();if(a)return this.node.getTotalLength?this.node.getTotalLength():bb(a)},Xa.getPointAtLength=function(a){var b=this.getPath();if(b)return cb(b,a)},Xa.getPath=function(){var a,c=b._getPath[this.type];if("text"!=this.type&&"set"!=this.type)return c&&(a=c(this)),a},Xa.getSubpath=function(a,c){var d=this.getPath();if(d)return b.getSubpath(d,a,c)};var eb=b.easing_formulas={linear:function(a){return a},"<":function(a){return Q(a,1.7)},">":function(a){return Q(a,.48)},"<>":function(a){var b=.48-a/1.04,c=M.sqrt(.1734+b*b),d=c-b,e=Q(P(d),1/3)*(0>d?-1:1),f=-c-b,g=Q(P(f),1/3)*(0>f?-1:1),h=e+g+.5;return 3*(1-h)*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a-=1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){return a==!!a?a:Q(2,-10*a)*M.sin(2*(a-.075)*R/.3)+1},bounce:function(a){var b,c=7.5625,d=2.75;return 1/d>a?b=c*a*a:2/d>a?(a-=1.5/d,b=c*a*a+.75):2.5/d>a?(a-=2.25/d,b=c*a*a+.9375):(a-=2.625/d,b=c*a*a+.984375),b}};eb.easeIn=eb["ease-in"]=eb["<"],eb.easeOut=eb["ease-out"]=eb[">"],eb.easeInOut=eb["ease-in-out"]=eb["<>"],eb["back-in"]=eb.backIn,eb["back-out"]=eb.backOut;var fb=[],gb=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},hb=function(){for(var c=+new Date,d=0;d<fb.length;d++){var e=fb[d];if(!e.el.removed&&!e.paused){var f,g,h=c-e.start,i=e.ms,j=e.easing,k=e.from,l=e.diff,m=e.to,n=(e.t,e.el),o={},p={};if(e.initstatus?(h=(e.initstatus*e.anim.top-e.prev)/(e.percent-e.prev)*i,e.status=e.initstatus,delete e.initstatus,e.stop&&fb.splice(d--,1)):e.status=(e.prev+(e.percent-e.prev)*(h/i))/e.anim.top,!(0>h))if(i>h){var q=j(h/i);for(var s in k)if(k[y](s)){switch(ca[s]){case S:f=+k[s]+q*i*l[s];break;case"colour":f="rgb("+[ib(Z(k[s].r+q*i*l[s].r)),ib(Z(k[s].g+q*i*l[s].g)),ib(Z(k[s].b+q*i*l[s].b))].join(",")+")";break;case"path":f=[];for(var t=0,u=k[s].length;u>t;t++){f[t]=[k[s][t][0]];for(var v=1,w=k[s][t].length;w>v;v++)f[t][v]=+k[s][t][v]+q*i*l[s][t][v];f[t]=f[t].join(G)}f=f.join(G);break;case"transform":if(l[s].real)for(f=[],t=0,u=k[s].length;u>t;t++)for(f[t]=[k[s][t][0]],v=1,w=k[s][t].length;w>v;v++)f[t][v]=k[s][t][v]+q*i*l[s][t][v];else{var x=function(a){return+k[s][a]+q*i*l[s][a]};f=[["m",x(0),x(1),x(2),x(3),x(4),x(5)]]}break;case"csv":if("clip-rect"==s)for(f=[],t=4;t--;)f[t]=+k[s][t]+q*i*l[s][t];break;default:var z=[][D](k[s]);for(f=[],t=n.paper.customAttributes[s].length;t--;)f[t]=+z[t]+q*i*l[s][t]}o[s]=f}n.attr(o),function(b,c,d){setTimeout(function(){a("raphael.anim.frame."+b,c,d)})}(n.id,n,e.anim)}else{if(function(c,d,e){setTimeout(function(){a("raphael.anim.frame."+d.id,d,e),a("raphael.anim.finish."+d.id,d,e),b.is(c,"function")&&c.call(d)})}(e.callback,n,e.anim),n.attr(m),fb.splice(d--,1),e.repeat>1&&!e.next){for(g in m)m[y](g)&&(p[g]=e.totalOrigin[g]);e.el.attr(p),r(e.anim,e.el,e.anim.percents[0],null,e.totalOrigin,e.repeat-1)}e.next&&!e.stop&&r(e.anim,e.el,e.next,null,e.totalOrigin,e.repeat)}}}fb.length&&gb(hb)},ib=function(a){return a>255?255:0>a?0:a};Xa.animateWith=function(a,c,d,e,f,g){var h=this;if(h.removed)return g&&g.call(h),h;var i=d instanceof q?d:b.animation(d,e,f,g);r(i,h,i.percents[0],null,h.attr());for(var j=0,k=fb.length;k>j;j++)if(fb[j].anim==c&&fb[j].el==a){fb[k-1].start=fb[j].start;break}return h},Xa.onAnimation=function(b){return b?a.on("raphael.anim.frame."+this.id,b):a.unbind("raphael.anim.frame."+this.id),this},q.prototype.delay=function(a){var b=new q(this.anim,this.ms);return b.times=this.times,b.del=+a||0,b},q.prototype.repeat=function(a){var b=new q(this.anim,this.ms);return b.del=this.del,b.times=M.floor(N(a,0))||1,b},b.animation=function(a,c,d,e){if(a instanceof q)return a;(b.is(d,"function")||!d)&&(e=e||d||null,d=null),a=Object(a),c=+c||0;var f,g,h={};for(g in a)a[y](g)&&$(g)!=g&&$(g)+"%"!=g&&(f=!0,h[g]=a[g]);if(f)return d&&(h.easing=d),e&&(h.callback=e),new q({100:h},c);if(e){var i=0;for(var j in a){var k=_(j);a[y](j)&&k>i&&(i=k)}i+="%",!a[i].callback&&(a[i].callback=e)}return new q(a,c)},Xa.animate=function(a,c,d,e){var f=this;if(f.removed)return e&&e.call(f),f;var g=a instanceof q?a:b.animation(a,c,d,e);return r(g,f,g.percents[0],null,f.attr()),f},Xa.setTime=function(a,b){return a&&null!=b&&this.status(a,O(b,a.ms)/a.ms),this},Xa.status=function(a,b){var c,d,e=[],f=0;if(null!=b)return r(a,this,-1,O(b,1)),this;for(c=fb.length;c>f;f++)if(d=fb[f],d.el.id==this.id&&(!a||d.anim==a)){if(a)return d.status;e.push({anim:d.anim,status:d.status})}return a?0:e},Xa.pause=function(b){for(var c=0;c<fb.length;c++)fb[c].el.id!=this.id||b&&fb[c].anim!=b||a("raphael.anim.pause."+this.id,this,fb[c].anim)!==!1&&(fb[c].paused=!0);return this},Xa.resume=function(b){for(var c=0;c<fb.length;c++)if(fb[c].el.id==this.id&&(!b||fb[c].anim==b)){var d=fb[c];a("raphael.anim.resume."+this.id,this,d.anim)!==!1&&(delete d.paused,this.status(d.anim,d.status))}return this},Xa.stop=function(b){for(var c=0;c<fb.length;c++)fb[c].el.id!=this.id||b&&fb[c].anim!=b||a("raphael.anim.stop."+this.id,this,fb[c].anim)!==!1&&fb.splice(c--,1);return this},a.on("raphael.remove",s),a.on("raphael.clear",s),Xa.toString=function(){return"Raphaël’s object"};var jb=function(a){if(this.items=[],this.length=0,this.type="set",a)for(var b=0,c=a.length;c>b;b++)!a[b]||a[b].constructor!=Xa.constructor&&a[b].constructor!=jb||(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},kb=jb.prototype;kb.push=function(){for(var a,b,c=0,d=arguments.length;d>c;c++)a=arguments[c],!a||a.constructor!=Xa.constructor&&a.constructor!=jb||(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},kb.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},kb.forEach=function(a,b){for(var c=0,d=this.items.length;d>c;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var lb in Xa)Xa[y](lb)&&(kb[lb]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][C](c,b)})}}(lb));return kb.attr=function(a,c){if(a&&b.is(a,U)&&b.is(a[0],"object"))for(var d=0,e=a.length;e>d;d++)this.items[d].attr(a[d]);else for(var f=0,g=this.items.length;g>f;f++)this.items[f].attr(a,c);return this},kb.clear=function(){for(;this.length;)this.pop()},kb.splice=function(a,b,c){a=0>a?N(this.length+a,0):a,b=N(0,O(this.length-a,b));var d,e=[],f=[],g=[];for(d=2;d<arguments.length;d++)g.push(arguments[d]);for(d=0;b>d;d++)f.push(this[a+d]);for(;d<this.length-a;d++)e.push(this[a+d]);var h=g.length;for(d=0;d<h+e.length;d++)this.items[a+d]=this[a+d]=h>d?g[d]:e[d-h];for(d=this.items.length=this.length-=b-h;this[d];)delete this[d++];return new jb(f)},kb.exclude=function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]==a)return this.splice(b,1),!0},kb.animate=function(a,c,d,e){(b.is(d,"function")||!d)&&(e=d||null);var f,g,h=this.items.length,i=h,j=this;if(!h)return this;e&&(g=function(){!--h&&e.call(j)}),d=b.is(d,T)?d:g;var k=b.animation(a,c,d,g);for(f=this.items[--i].animate(k);i--;)this.items[i]&&!this.items[i].removed&&this.items[i].animateWith(f,k,k),this.items[i]&&!this.items[i].removed||h--;return this},kb.insertAfter=function(a){for(var b=this.items.length;b--;)this.items[b].insertAfter(a);return this},kb.getBBox=function(){for(var a=[],b=[],c=[],d=[],e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}return a=O[C](0,a),b=O[C](0,b),c=N[C](0,c),d=N[C](0,d),{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},kb.clone=function(a){a=this.paper.set();for(var b=0,c=this.items.length;c>b;b++)a.push(this.items[b].clone());return a},kb.toString=function(){return"Raphaël‘s set"},kb.glow=function(a){var b=this.paper.set();return this.forEach(function(c,d){var e=c.glow(a);null!=e&&e.forEach(function(a,c){b.push(a)})}),b},kb.isPointInside=function(a,b){var c=!1;return this.forEach(function(d){return d.isPointInside(a,b)?(c=!0,!1):void 0}),c},b.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[y](d)&&(b.face[d]=a.face[d]);if(this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b],!a.svg){b.face["units-per-em"]=_(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[y](e)){var f=a.glyphs[e];if(b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"},f.k)for(var g in f.k)f[y](g)&&(b.glyphs[e].k[g]=f.k[g])}}return a},u.getFont=function(a,c,d,e){if(e=e||"normal",d=d||"normal",c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400,b.fonts){var f=b.fonts[a];if(!f){var g=new RegExp("(^|\\s)"+a.replace(/[^\w\d\s+!~.:_-]/g,F)+"(\\s|$)","i");for(var h in b.fonts)if(b.fonts[y](h)&&g.test(h)){f=b.fonts[h];break}}var i;if(f)for(var j=0,k=f.length;k>j&&(i=f[j],i.face["font-weight"]!=c||i.face["font-style"]!=d&&i.face["font-style"]||i.face["font-stretch"]!=e);j++);return i}},u.print=function(a,c,d,e,f,g,h,i){g=g||"middle",h=N(O(h||0,1),-1),i=N(O(i||1,3),1);var j,k=H(d)[I](F),l=0,m=0,n=F;if(b.is(e,"string")&&(e=this.getFont(e)),e){j=(f||16)/e.face["units-per-em"];for(var o=e.face.bbox[I](v),p=+o[0],q=o[3]-o[1],r=0,s=+o[1]+("baseline"==g?q+ +e.face.descent:q/2),t=0,u=k.length;u>t;t++){if("\n"==k[t])l=0,x=0,m=0,r+=q*i;else{var w=m&&e.glyphs[k[t-1]]||{},x=e.glyphs[k[t]];l+=m?(w.w||e.w)+(w.k&&w.k[k[t]]||0)+e.w*h:0,m=1}x&&x.d&&(n+=b.transformPath(x.d,["t",l*j,r*j,"s",j,j,p,s,"t",(a-p)/j,(c-s)/j]))}}return this.path(n).attr({fill:"#000",stroke:"none"})},u.add=function(a){if(b.is(a,"array"))for(var c,d=this.set(),e=0,f=a.length;f>e;e++)c=a[e]||{},w[y](c.type)&&d.push(this[c.type]().attr(c));return d},b.format=function(a,c){var d=b.is(c,U)?[0][D](c):arguments;return a&&b.is(a,T)&&d.length-1&&(a=a.replace(x,function(a,b){return null==d[++b]?F:d[b]})),a||F},b.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;return c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),"function"==typeof e&&f&&(e=e()))}),e=(null==e||e==d?a:e)+""};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),b.ninja=function(){return A.was?z.win.Raphael=A.is:delete Raphael,b},b.st=kb,a.on("raphael.DOMload",function(){t=!0}),function(a,c,d){function e(){/in/.test(a.readyState)?setTimeout(e,9):b.eve("raphael.DOMload")}null==a.readyState&&a.addEventListener&&(a.addEventListener(c,d=function(){a.removeEventListener(c,d,!1),a.readyState="complete"},!1),a.readyState="loading"),e()}(document,"DOMContentLoaded"),b}),function(a,b){"function"==typeof define&&define.amd?define("raphael.svg",["raphael.core"],function(a){return b(a)}):b("object"==typeof exports?require("./raphael.core"):a.Raphael)}(this,function(a){if(!a||a.svg){var b="hasOwnProperty",c=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=a.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};a.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){"string"==typeof d&&(d=q(d));for(var f in e)e[b](f)&&("xlink:"==f.substring(0,6)?d.setAttributeNS(n,f.substring(6),c(e[f])):d.setAttribute(f,c(e[f])))}else d=a._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(b,e){var j="linear",k=b.id+e,m=.5,n=.5,o=b.node,p=b.paper,r=o.style,s=a._g.doc.getElementById(k);if(!s){if(e=c(e).replace(a._radial_gradient,function(a,b,c){if(j="radial",b&&c){m=d(b),n=d(c);var e=2*(n>.5)-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&.5!=n&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/),"linear"==j){var t=e.shift();if(t=-d(t),isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;if(k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient),!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,"radial"==j?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;y>x;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff","stop-opacity":isFinite(w[x].opacity)?w[x].opacity:1}))}}return q(o,{fill:"url('"+document.location.origin+document.location.pathname+"#"+k+"')",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1,1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if("path"==d.type){for(var g,h,i,j,k,m=c(e).toLowerCase().split("-"),n=d.paper,r=f?"end":"start",s=d.node,t=d.attrs,u=t["stroke-width"],v=m.length,w="classic",x=3,y=3,z=5;v--;)switch(m[v]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":w=m[v];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}if("open"==w?(x+=2,y+=2,z+=2,i=1,j=f?4:1,k={fill:"none",stroke:t.stroke}):(j=i=x/2,k={fill:t.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={},"none"!=w){var A="raphael-marker-"+w,B="raphael-marker-"+r+w+x+y+"-obj"+d.id;a._g.doc.getElementById(A)?p[A]++:(n.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[w],id:A})),p[A]=1);var C,D=a._g.doc.getElementById(B);D?(p[B]++,C=D.getElementsByTagName("use")[0]):(D=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:j,refY:y/2}),C=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),D.appendChild(C),n.defs.appendChild(D),p[B]=1),q(C,k);var E=i*("diamond"!=w&&"oval"!=w);f?(g=d._.arrows.startdx*u||0,h=a.getTotalLength(t.path)-E*u):(g=E*u,h=a.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),k={},k["marker-"+r]="url(#"+B+")",(h||g)&&(k.d=a.getSubpath(t.path,g,h)),q(s,k),d._.arrows[r+"Path"]=A,d._.arrows[r+"Marker"]=B,d._.arrows[r+"dx"]=E,d._.arrows[r+"Type"]=w,d._.arrows[r+"String"]=e}else f?(g=d._.arrows.startdx*u||0,h=a.getTotalLength(t.path)-g):(g=0,h=a.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),d._.arrows[r+"Path"]&&q(s,{d:a.getSubpath(t.path,g,h)}),delete d._.arrows[r+"Path"],delete d._.arrows[r+"Marker"],delete d._.arrows[r+"dx"],delete d._.arrows[r+"Type"],delete d._.arrows[r+"String"];for(k in p)if(p[b](k)&&!p[k]){var F=a._g.doc.getElementById(k);F&&F.parentNode.removeChild(F)}}},u={"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,b,d){if(b=u[c(b).toLowerCase()]){for(var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=b.length;h--;)g[h]=b[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}else q(a.node,{"stroke-dasharray":"none"})},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[b](o)){if(!a._availableAttrs[b](o))continue;var p=f[o];switch(k[o]=p,o){case"blur":d.blur(p);break;case"title":var u=i.getElementsByTagName("title");if(u.length&&(u=u[0]))u.firstChild.nodeValue=p;else{u=q("title");var w=a._g.doc.createTextNode(p);u.appendChild(w),i.appendChild(u)}break;case"href":case"target":var x=i.parentNode;if("a"!=x.tagName.toLowerCase()){var z=q("a");x.insertBefore(z,i),z.appendChild(i),x=z}"target"==o?x.setAttributeNS(n,"show","blank"==p?"new":p):x.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var A=c(p).split(j);if(4==A.length){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var B=q("clipPath"),C=q("rect");B.id=a.createUUID(),q(C,{x:A[0],y:A[1],width:A[2],height:A[3]}),B.appendChild(C),d.paper.defs.appendChild(B),q(i,{"clip-path":"url(#"+B.id+")"}),d.clip=C}if(!p){var D=i.getAttribute("clip-path");if(D){var E=a._g.doc.getElementById(D.replace(/(^url\(#|\)$)/g,l));E&&E.parentNode.removeChild(E),q(i,{"clip-path":l}),delete d.clip}}break;case"path":"path"==d.type&&(q(i,{d:p?k.path=a._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":if(i.setAttribute(o,p),d._.dirty=1,!k.fx)break;o="x",p=k.x;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if("rx"==o&&"rect"==d.type)break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":if(i.setAttribute(o,p),d._.dirty=1,!k.fy)break;o="y",p=k.y;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if("ry"==o&&"rect"==d.type)break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":"rect"==d.type?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":"image"==d.type&&i.setAttributeNS(n,"href",p);break;case"stroke-width":(1!=d._.sx||1!=d._.sy)&&(p/=g(h(d._.sx),h(d._.sy))||1),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var F=c(p).match(a._ISURL);if(F){B=q("pattern");var G=q("image");B.id=a.createUUID(),q(B,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(G,{x:0,y:0,"xlink:href":F[1]}),B.appendChild(G),function(b){a._preload(F[1],function(){var a=this.offsetWidth,c=this.offsetHeight;q(b,{width:a,height:c}),q(G,{width:a,height:c})})}(B),d.paper.defs.appendChild(B),q(i,{fill:"url(#"+B.id+")"}),d.pattern=B,d.pattern&&s(d);break}var H=a.getRGB(p);if(H.error){if(("circle"==d.type||"ellipse"==d.type||"r"!=c(p).charAt())&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var I=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(I){var J=I.getElementsByTagName("stop");q(J[J.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}}else delete f.gradient,delete k.gradient,!a.is(k.opacity,"undefined")&&a.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!a.is(k["fill-opacity"],"undefined")&&a.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});H[b]("opacity")&&q(i,{"fill-opacity":H.opacity>1?H.opacity/100:H.opacity});case"stroke":H=a.getRGB(p),i.setAttribute(o,H.hex),"stroke"==o&&H[b]("opacity")&&q(i,{"stroke-opacity":H.opacity>1?H.opacity/100:H.opacity}),"stroke"==o&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":("circle"==d.type||"ellipse"==d.type||"r"!=c(p).charAt())&&r(d,p);
+
+break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){I=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),I&&(J=I.getElementsByTagName("stop"),q(J[J.length-1],{"stop-opacity":p}));break}default:"font-size"==o&&(p=e(p,10)+"px");var K=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[K]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if("text"==d.type&&(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){for(g.text=f.text;h.firstChild;)h.removeChild(h.firstChild);for(var j,k=c(f.text).split("\n"),m=[],n=0,o=k.length;o>n;n++)j=q("tspan"),n&&q(j,{dy:i*x,x:g.x}),j.appendChild(a._g.doc.createTextNode(k[n])),h.appendChild(j),m[n]=j}else for(m=h.getElementsByTagName("tspan"),n=0,o=m.length;o>n;n++)n?q(m[n],{dy:i*x,x:g.x}):q(m[0],{dy:0});q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&a.is(r,"finite")&&q(m[0],{dy:r})}},z=function(a){return a.parentNode&&"a"===a.parentNode.tagName.toLowerCase()?a.parentNode:a},A=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.matrix=a.matrix(),this.realPath=null,this.paper=c,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},B=a.el;A.prototype=B,B.constructor=A,a._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new A(c,b);return d.type="path",w(d,{fill:"none",stroke:"#000",path:a}),d},B.rotate=function(a,b,e){if(this.removed)return this;if(a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(b=e),null==b||null==e){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}return this.transform(this._.transform.concat([["r",a,b,e]])),this},B.scale=function(a,b,e,f){if(this.removed)return this;if(a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),null==b&&(b=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this},B.translate=function(a,b){return this.removed?this:(a=c(a).split(j),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this.transform(this._.transform.concat([["t",a,b]])),this)},B.transform=function(c){var d=this._;if(null==c)return d.transform;if(a._extractTransform(this,c),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix}),1!=d.sx||1!=d.sy){var e=this.attrs[b]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},B.hide=function(){return this.removed||(this.node.style.display="none"),this},B.show=function(){return this.removed||(this.node.style.display=""),this},B.remove=function(){var b=z(this.node);if(!this.removed&&b.parentNode){var c=this.paper;c.__set__&&c.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&c.defs.removeChild(this.gradient),a._tear(this,c),b.parentNode.removeChild(b),this.removeData();for(var d in this)this[d]="function"==typeof this[d]?a._removedFactory(d):null;this.removed=!0}},B._getBBox=function(){if("none"==this.node.style.display){this.show();var a=!0}var b,c=!1;this.paper.canvas.parentElement?b=this.paper.canvas.parentElement.style:this.paper.canvas.parentNode&&(b=this.paper.canvas.parentNode.style),b&&"none"==b.display&&(c=!0,b.display="");var d={};try{d=this.node.getBBox()}catch(e){d={x:this.node.clientLeft,y:this.node.clientTop,width:this.node.clientWidth,height:this.node.clientHeight}}finally{d=d||{},c&&(b.display="none")}return a&&this.hide(),d},B.attr=function(c,d){if(this.removed)return this;if(null==c){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&a.is(c,"string")){if("fill"==c&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("transform"==c)return this._.transform;for(var g=c.split(j),h={},i=0,l=g.length;l>i;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return l-1?h:h[g[0]]}if(null==d&&a.is(c,"array")){for(h={},i=0,l=c.length;l>i;i++)h[c[i]]=this.attr(c[i]);return h}if(null!=d){var m={};m[c]=d}else null!=c&&a.is(c,"object")&&(m=c);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[b](n)&&m[b](n)&&a.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[b](p)&&(m[p]=o[p])}return w(this,m),this},B.toFront=function(){if(this.removed)return this;var b=z(this.node);b.parentNode.appendChild(b);var c=this.paper;return c.top!=this&&a._tofront(this,c),this},B.toBack=function(){if(this.removed)return this;var b=z(this.node),c=b.parentNode;c.insertBefore(b,c.firstChild),a._toback(this,this.paper);this.paper;return this},B.insertAfter=function(b){if(this.removed||!b)return this;var c=z(this.node),d=z(b.node||b[b.length-1].node);return d.nextSibling?d.parentNode.insertBefore(c,d.nextSibling):d.parentNode.appendChild(c),a._insertafter(this,b,this.paper),this},B.insertBefore=function(b){if(this.removed||!b)return this;var c=z(this.node),d=z(b.node||b[0].node);return d.parentNode.insertBefore(c,d),a._insertbefore(this,b,this.paper),this},B.blur=function(b){var c=this;if(0!==+b){var d=q("filter"),e=q("feGaussianBlur");c.attrs.blur=b,d.id=a.createUUID(),q(e,{stdDeviation:+b||1.5}),d.appendChild(e),c.paper.defs.appendChild(d),c._blur=d,q(c.node,{filter:"url(#"+d.id+")"})}else c._blur&&(c._blur.parentNode.removeChild(c._blur),delete c._blur,delete c.attrs.blur),c.node.removeAttribute("filter");return c},a._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new A(e,a);return f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs),f},a._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:b,y:c,width:d,height:e,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs),h},a._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new A(f,a);return g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs),g},a._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image",h},a._engine.text=function(b,c,d,e){var f=q("text");b.canvas&&b.canvas.appendChild(f);var g=new A(f,b);return g.attrs={x:c,y:d,"text-anchor":"middle",text:e,"font-family":a._availableAttrs["font-family"],"font-size":a._availableAttrs["font-size"],stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs),g},a._engine.setSize=function(a,b){return this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox),this},a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,g=b.height;if(!c)throw new Error("SVG container not found.");var h,i=q("svg"),j="overflow:hidden;";return d=d||0,e=e||0,f=f||512,g=g||342,q(i,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}),1==c?(i.style.cssText=j+"position:absolute;left:"+d+"px;top:"+e+"px",a._g.doc.body.appendChild(i),h=1):(i.style.cssText=j+"position:relative",c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i)),c=new a._Paper,c.width=f,c.height=g,c.canvas=i,c.clear(),c._left=c._top=0,h&&(c.renderfix=function(){}),c.renderfix(),c},a._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f,h,i=this.getSize(),j=g(c/i.width,d/i.height),l=this.top,n=e?"xMidYMid meet":"xMinYMin";for(null==a?(this._vbSize&&(j=1),delete this._vbSize,f="0 0 "+this.width+m+this.height):(this._vbSize=j,f=a+m+b+m+c+m+d),q(this.canvas,{viewBox:f,preserveAspectRatio:n});j&&l;)h="stroke-width"in l.attrs?l.attrs["stroke-width"]:1,l.attr({"stroke-width":h}),l._.dirty=1,l._.dirtyT=1,l=l.prev;return this._viewBox=[a,b,c,d,!!e],this},a.prototype.renderfix=function(){var a,b=this.canvas,c=b.style;try{a=b.getScreenCTM()||b.createSVGMatrix()}catch(d){a=b.createSVGMatrix()}var e=-a.e%1,f=-a.f%1;(e||f)&&(e&&(this._left=(this._left+e)%1,c.left=this._left+"px"),f&&(this._top=(this._top+f)%1,c.top=this._top+"px"))},a.prototype.clear=function(){a.eve("raphael.clear",this);for(var b=this.canvas;b.firstChild;)b.removeChild(b.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(a._g.doc.createTextNode("Created with Raphaël "+a.version)),b.appendChild(this.desc),b.appendChild(this.defs=q("defs"))},a.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null};var C=a.st;for(var D in B)B[b](D)&&!C[b](D)&&(C[D]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(D))}}),function(a,b){"function"==typeof define&&define.amd?define("raphael.vml",["raphael.core"],function(a){return b(a)}):b("object"==typeof exports?require("./raphael.core"):a.Raphael)}(this,function(a){if(!a||a.vml){var b="hasOwnProperty",c=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=a.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(b){var d=/[ahqstv]/gi,e=a._pathToAbsolute;if(c(b).match(d)&&(e=a._path2curve),d=/[clmz]/g,e==a._pathToAbsolute&&!c(b).match(d)){var g=c(b).replace(q,function(a,b,c){var d=[],e="m"==b.toLowerCase(),g=p[b];return c.replace(s,function(a){e&&2==d.length&&(g+=d+p["m"==b?"l":"L"],d=[]),d.push(f(a*u))}),g+d});return g}var h,i,j=e(b);g=[];for(var k=0,l=j.length;l>k;k++){h=j[k],i=j[k][0].toLowerCase(),"z"==i&&(i="x");for(var m=1,r=h.length;r>m;m++)i+=f(h[m]*u)+(m!=r-1?",":o);g.push(i)}return g.join(n)},y=function(b,c,d){var e=a.matrix();return e.rotate(-b,.5,.5),{dx:e.x(c,d),dy:e.y(c,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q=u/b,r=u/c;if(m.visibility="hidden",b&&c){if(l.coordsize=i(q)+n+i(r),m.rotation=f*(0>b*c?-1:1),f){var s=y(f,d,e);d=s.dx,e=s.dy}if(0>b&&(p+="x"),0>c&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-q+n+e*-r,k||g.fillsize){var t=l.getElementsByTagName(j);t=t&&t[0],l.removeChild(t),k&&(s=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),t.position=s.dx*o+n+s.dy*o),g.fillsize&&(t.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(t)}m.visibility="visible"}};a.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,b,d){for(var e=c(b).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";g--;)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),r=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),s=e;for(var t in i)i[b](t)&&(m[t]=i[t]);if(q&&(m.path=a._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur),(i.path&&"path"==e.type||q)&&(l.path=x(~c(m.path).toLowerCase().indexOf("r")?a._pathToAbsolute(m.path):m.path),e._.dirty=1,"image"==e.type&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0))),"transform"in i&&e.transform(i.transform),r){var y=+m.cx,B=+m.cy,D=+m.rx||+m.r||0,E=+m.ry||+m.r||0;l.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((y-D)*u),f((B-E)*u),f((y+D)*u),f((B+E)*u),f(y*u)),e._.dirty=1}if("clip-rect"in i){var G=c(i["clip-rect"]).split(k);if(4==G.length){G[2]=+G[2]+ +G[0],G[3]=+G[3]+ +G[1];var H=l.clipRect||a._g.doc.createElement("div"),I=H.style;I.clip=a.format("rect({1}px {2}px {3}px {0}px)",G),l.clipRect||(I.position="absolute",I.top=0,I.left=0,I.width=e.paper.width+"px",I.height=e.paper.height+"px",l.parentNode.insertBefore(H,l),H.appendChild(l),l.clipRect=H)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var J=e.textpath.style;i.font&&(J.font=i.font),i["font-family"]&&(J.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(J.fontSize=i["font-size"]),i["font-weight"]&&(J.fontWeight=i["font-weight"]),i["font-style"]&&(J.fontStyle=i["font-style"])}if("arrow-start"in i&&A(s,i["arrow-start"]),"arrow-end"in i&&A(s,i["arrow-end"],1),null!=i.opacity||null!=i["stroke-width"]||null!=i.fill||null!=i.src||null!=i.stroke||null!=i["stroke-width"]||null!=i["stroke-opacity"]||null!=i["fill-opacity"]||null!=i["stroke-dasharray"]||null!=i["stroke-miterlimit"]||null!=i["stroke-linejoin"]||null!=i["stroke-linecap"]){var K=l.getElementsByTagName(j),L=!1;if(K=K&&K[0],!K&&(L=K=F(j)),"image"==e.type&&i.src&&(K.src=i.src),i.fill&&(K.on=!0),(null==K.on||"none"==i.fill||null===i.fill)&&(K.on=!1),K.on&&i.fill){var M=c(i.fill).match(a._ISURL);if(M){K.parentNode==l&&l.removeChild(K),K.rotate=!0,K.src=M[1],K.type="tile";var N=e.getBBox(1);K.position=N.x+n+N.y,e._.fillpos=[N.x,N.y],a._preload(M[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else K.color=a.getRGB(i.fill).hex,K.src=o,K.type="solid",a.getRGB(i.fill).error&&(s.type in{circle:1,ellipse:1}||"r"!=c(i.fill).charAt())&&C(s,i.fill,K)&&(m.fill="none",m.gradient=i.fill,K.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var O=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+a.getRGB(i.fill).o+1||2)-1);O=h(g(O,0),1),K.opacity=O,K.src&&(K.color="none")}l.appendChild(K);var P=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],Q=!1;!P&&(Q=P=F("stroke")),(i.stroke&&"none"!=i.stroke||i["stroke-width"]||null!=i["stroke-opacity"]||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])&&(P.on=!0),("none"==i.stroke||null===i.stroke||null==P.on||0==i.stroke||0==i["stroke-width"])&&(P.on=!1);var R=a.getRGB(i.stroke);P.on&&i.stroke&&(P.color=R.hex),O=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+R.o+1||2)-1);var S=.75*(d(i["stroke-width"])||1);if(O=h(g(O,0),1),null==i["stroke-width"]&&(S=m["stroke-width"]),i["stroke-width"]&&(P.weight=S),S&&1>S&&(O*=S)&&(P.weight=1),P.opacity=O,i["stroke-linejoin"]&&(P.joinstyle=i["stroke-linejoin"]||"miter"),P.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(P.endcap="butt"==i["stroke-linecap"]?"flat":"square"==i["stroke-linecap"]?"square":"round"),"stroke-dasharray"in i){var T={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};P.dashstyle=T[b](i["stroke-dasharray"])?T[i["stroke-dasharray"]]:o}Q&&l.appendChild(P)}if("text"==s.type){s.paper.canvas.style.display=o;var U=s.paper.span,V=100,W=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=U.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),W=d(m["font-size"]||W&&W[0])||10,p.fontSize=W*V+"px",s.textpath.string&&(U.innerHTML=c(s.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));var X=U.getBoundingClientRect();s.W=m.w=(X.right-X.left)/V,s.H=m.h=(X.bottom-X.top)/V,s.X=m.x,s.Y=m.y+s.H/2,("x"in i||"y"in i)&&(s.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));for(var Y=["x","y","text","font","font-family","font-weight","font-style","font-size"],Z=0,$=Y.length;$>Z;Z++)if(Y[Z]in i){s._.dirty=1;break}switch(m["text-anchor"]){case"start":s.textpath.style["v-text-align"]="left",s.bbx=s.W/2;break;case"end":s.textpath.style["v-text-align"]="right",s.bbx=-s.W/2;break;default:s.textpath.style["v-text-align"]="center",s.bbx=0}s.textpath.style["v-text-kern"]=!0}},C=function(b,f,g){b.attrs=b.attrs||{};var h=(b.attrs,Math.pow),i="linear",j=".5 .5";if(b.attrs.gradient=f,f=c(f).replace(a._radial_gradient,function(a,b,c){return i="radial",b&&c&&(b=d(b),c=d(c),h(b-.5,2)+h(c-.5,2)>.25&&(c=e.sqrt(.25-h(b-.5,2))*(2*(c>.5)-1)+.5),j=b+n+c),o}),f=f.split(/\s*\-\s*/),"linear"==i){var k=f.shift();if(k=-d(k),isNaN(k))return null}var l=a._parseDots(f);if(!l)return null;if(b=b.shape||b.node,l.length){b.removeChild(g),g.on=!0,g.method="none",g.color=l[0].color,g.color2=l[l.length-1].color;for(var m=[],p=0,q=l.length;q>p;p++)l[p].offset&&m.push(l[p].offset+n+l[p].color);g.colors=m.length?m.join():"0% "+g.color,"radial"==i?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=j,g.angle=0):(g.type="gradient",g.angle=(270-k)%360),b.appendChild(g)}return 1},D=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=c,this.matrix=a.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},E=a.el;D.prototype=E,E.constructor=D,E.transform=function(b){if(null==b)return this._.transform;var d,e=this.paper._viewBoxShift,f=e?"s"+[e.scale,e.scale]+"-1-1t"+[e.dx,e.dy]:o;e&&(d=b=c(b).replace(/\.{3}|\u2026/g,this._.transform||o)),a._extractTransform(this,f+b);var g,h=this.matrix.clone(),i=this.skew,j=this.node,k=~c(this.attrs.fill).indexOf("-"),l=!c(this.attrs.fill).indexOf("url(");if(h.translate(1,1),l||k||"image"==this.type)if(i.matrix="1 0 0 1",i.offset="0 0",g=h.split(),k&&g.noRotation||!g.isSimple){j.style.filter=h.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;j.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else j.style.filter=o,z(this,g.scalex,g.scaley,g.dx,g.dy,g.rotate);else j.style.filter=o,i.matrix=c(h),i.offset=h.offset();return null!==d&&(this._.transform=d,a._extractTransform(this,d)),this},E.rotate=function(a,b,e){if(this.removed)return this;if(null!=a){if(a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(b=e),null==b||null==e){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}return this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,b,e]])),this}},E.translate=function(a,b){return this.removed?this:(a=c(a).split(k),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=b),this.transform(this._.transform.concat([["t",a,b]])),this)},E.scale=function(a,b,e,f){if(this.removed)return this;if(a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),null==b&&(b=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this._.dirtyT=1,this},E.hide=function(){return!this.removed&&(this.node.style.display="none"),this},E.show=function(){return!this.removed&&(this.node.style.display=o),this},E.auxGetBBox=a.el.getBBox,E.getBBox=function(){var a=this.auxGetBBox();if(this.paper&&this.paper._viewBoxShift){var b={},c=1/this.paper._viewBoxShift.scale;return b.x=a.x-this.paper._viewBoxShift.dx,b.x*=c,b.y=a.y-this.paper._viewBoxShift.dy,b.y*=c,b.width=a.width*c,b.height=a.height*c,b.x2=b.x+b.width,b.y2=b.y+b.height,b}return a},E._getBBox=function(){return this.removed?{}:{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),a.eve.unbind("raphael.*.*."+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;this.removed=!0}},E.attr=function(c,d){if(this.removed)return this;if(null==c){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&a.is(c,"string")){if(c==j&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;for(var g=c.split(k),h={},i=0,m=g.length;m>i;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return m-1?h:h[g[0]]}if(this.attrs&&null==d&&a.is(c,"array")){for(h={},i=0,m=c.length;m>i;i++)h[c[i]]=this.attr(c[i]);return h}var n;null!=d&&(n={},n[c]=d),null==d&&a.is(c,"object")&&(n=c);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[b](o)&&n[b](o)&&a.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[b](q)&&(n[q]=p[q])}n.text&&"text"==this.type&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){return!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&a._tofront(this,this.paper),this},E.toBack=function(){return this.removed?this:(this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper)),this)},E.insertAfter=function(b){return this.removed?this:(b.constructor==a.st.constructor&&(b=b[b.length-1]),b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper),this)},E.insertBefore=function(b){return this.removed?this:(b.constructor==a.st.constructor&&(b=b[0]),b.node.parentNode.insertBefore(this.node,b.node),a._insertbefore(this,b,this.paper),this)},E.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;return d=d.replace(r,o),0!==+b?(this.attrs.blur=b,c.filter=d+n+m+".Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",f(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur),this},a._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");return f.on=!0,c.appendChild(f),d.skew=f,d.transform(o),d},a._engine.rect=function(b,c,d,e,f,g){var h=a._rectPath(c,d,e,f,g),i=b.path(h),j=i.attrs;return i.X=j.x=c,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect",i},a._engine.ellipse=function(a,b,c,d,e){{var f=a.path();f.attrs}return f.X=b-d,f.Y=c-e,f.W=2*d,f.H=2*e,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e}),f},a._engine.circle=function(a,b,c,d){{var e=a.path();e.attrs}return e.X=b-d,e.Y=c-d,e.W=e.H=2*d,e.type="circle",B(e,{cx:b,cy:c,r:d}),e},a._engine.image=function(b,c,d,e,f,g){var h=a._rectPath(d,e,f,g),i=b.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];return k.src=c,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=c,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0),i},a._engine.text=function(b,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=a.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=c(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,b),l={fill:"#000",stroke:"none",font:a._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=c(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),b.canvas.appendChild(h);var m=F("skew");return m.on=!0,h.appendChild(m),k.skew=m,k.transform(o),k},a._engine.setSize=function(b,c){var d=this.canvas.style;return this.width=b,this.height=c,b==+b&&(b+="px"),c==+c&&(c+="px"),d.width=b,d.height=c,d.clip="rect(0 "+b+" "+c+" 0)",this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox),this},a._engine.setViewBox=function(b,c,d,e,f){a.eve("raphael.setViewBox",this,this._viewBox,[b,c,d,e,f]);var g,h,i=this.getSize(),j=i.width,k=i.height;return f&&(g=k/e,h=j/d,j>d*g&&(b-=(j-d*g)/2/g),k>e*h&&(c-=(k-e*h)/2/h)),this._viewBox=[b,c,d,e,!!f],this._viewBoxShift={dx:-b,dy:-c,scale:i},this.forEach(function(a){a.transform("...")}),this};var F;a._engine.initWin=function(a){var b=a.document;b.styleSheets.length<31?b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"):b.styleSheets[0].addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("<rvml:"+a+' class="rvml">')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e=b.width,f=b.x,g=b.y;if(!c)throw new Error("VML container not found.");var h=new a._Paper,i=h.canvas=a._g.doc.createElement("div"),j=i.style;return f=f||0,g=g||0,e=e||512,d=d||342,h.width=e,h.height=d,e==+e&&(e+="px"),d==+d&&(d+="px"),h.coordsize=1e3*u+n+1e3*u,h.coordorigin="0 0",h.span=a._g.doc.createElement("span"),h.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",i.appendChild(h.span),j.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",e,d),1==c?(a._g.doc.body.appendChild(i),j.left=f+"px",j.top=g+"px",j.position="absolute"):c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i),h.renderfix=function(){},h},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E)E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}});
Index: public/vendors/charts/peity/jquery.peity.min.js
===================================================================
--- public/vendors/charts/peity/jquery.peity.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/charts/peity/jquery.peity.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,7 @@
+// Peity jQuery plugin version 3.3.0
+// (c) 2018 Ben Pickles
+//
+// http://benpickles.github.io/peity
+//
+// Released under MIT license.
+!function(t,i,e,n){var a=t.fn.peity=function(i,e){return l&&this.each(function(){var n=t(this),h=n.data("_peity");h?(i&&(h.type=i),t.extend(h.opts,e)):(h=new r(n,i,t.extend({},a.defaults[i],n.data("peity"),e)),n.change(function(){h.draw()}).data("_peity",h)),h.draw()}),this},r=function(t,i,e){this.$el=t,this.type=i,this.opts=e},h=r.prototype,s=h.svgElement=function(e,n){return t(i.createElementNS("http://www.w3.org/2000/svg",e)).attr(n)},l="createElementNS"in i&&s("svg",{})[0].createSVGRect;h.draw=function(){var t=this.opts;a.graphers[this.type].call(this,t),t.after&&t.after.call(this,t)},h.fill=function(){var i=this.opts.fill;return t.isFunction(i)?i:function(t,e){return i[e%i.length]}},h.prepare=function(t,i){return this.$svg||this.$el.hide().after(this.$svg=s("svg",{class:"peity"})),this.$svg.empty().data("_peity",this).attr({height:i,width:t})},h.values=function(){return t.map(this.$el.text().split(this.opts.delimiter),function(t){return parseFloat(t)})},a.defaults={},a.graphers={},a.register=function(t,i,e){this.defaults[t]=i,this.graphers[t]=e},a.register("pie",{fill:["#ff9900","#fff4dd","#ffc66e"],radius:8},function(i){if(!i.delimiter){var n=this.$el.text().match(/[^0-9\.]/);i.delimiter=n?n[0]:","}var a=t.map(this.values(),function(t){return t>0?t:0});if("/"==i.delimiter){var r=a[0],h=a[1];a=[r,e.max(0,h-r)]}for(var l=0,p=a.length,o=0;l<p;l++)o+=a[l];o||(p=2,o=1,a=[0,1]);var f=2*i.radius,c=this.prepare(i.width||f,i.height||f),u=c.width()/2,d=c.height()/2,g=e.min(u,d),v=i.innerRadius;"donut"!=this.type||v||(v=.5*g);var m=e.PI,y=this.fill(),w=this.scale=function(t,i){var n=t/o*m*2-m/2;return[i*e.cos(n)+u,i*e.sin(n)+d]},x=0;for(l=0;l<p;l++){var k,$=a[l],j=$/o;if(0!=j){if(1==j)if(v){var A=u-.01,E=d-g,F=d-v;k=s("path",{d:["M",u,E,"A",g,g,0,1,1,A,E,"L",A,F,"A",v,v,0,1,0,u,F].join(" "),"data-value":$})}else k=s("circle",{cx:u,cy:d,"data-value":$,r:g});else{var M=x+$,S=["M"].concat(w(x,g),"A",g,g,0,j>.5?1:0,1,w(M,g),"L");v?S=S.concat(w(M,v),"A",v,v,0,j>.5?1:0,0,w(x,v)):S.push(u,d),x+=$,k=s("path",{d:S.join(" "),"data-value":$})}k.attr("fill",y.call(this,$,l,a)),c.append(k)}}}),a.register("donut",t.extend(!0,{},a.defaults.pie),function(t){a.graphers.pie.call(this,t)}),a.register("line",{delimiter:",",fill:"#c6d9fd",height:16,min:0,stroke:"#4d89f9",strokeWidth:1,width:32},function(t){var i=this.values();1==i.length&&i.push(i[0]);for(var a=e.max.apply(e,t.max==n?i:i.concat(t.max)),r=e.min.apply(e,t.min==n?i:i.concat(t.min)),h=this.prepare(t.width,t.height),l=t.strokeWidth,p=h.width(),o=h.height()-l,f=a-r,c=this.x=function(t){return t*(p/(i.length-1))},u=this.y=function(t){var i=o;return f&&(i-=(t-r)/f*o),i+l/2},d=u(e.max(r,0)),g=[0,d],v=0;v<i.length;v++)g.push(c(v),u(i[v]));g.push(p,d),t.fill&&h.append(s("polygon",{fill:t.fill,points:g.join(" ")})),l&&h.append(s("polyline",{fill:"none",points:g.slice(2,g.length-2).join(" "),stroke:t.stroke,"stroke-width":l,"stroke-linecap":"square"}))}),a.register("bar",{delimiter:",",fill:["#4D89F9"],height:16,min:0,padding:.1,width:32},function(t){for(var i=this.values(),a=e.max.apply(e,t.max==n?i:i.concat(t.max)),r=e.min.apply(e,t.min==n?i:i.concat(t.min)),h=this.prepare(t.width,t.height),l=h.width(),p=h.height(),o=a-r,f=t.padding,c=this.fill(),u=this.x=function(t){return t*l/i.length},d=this.y=function(t){return p-(o?(t-r)/o*p:1)},g=0;g<i.length;g++){var v,m=u(g+f),y=u(g+1-f)-m,w=i[g],x=d(w),k=x,$=x;o?w<0?k=d(e.min(a,0)):$=d(e.max(r,0)):v=1,0==(v=$-k)&&(v=1,a>0&&o&&k--),h.append(s("rect",{"data-value":w,fill:c.call(this,w,g,i),x:m,y:k,width:y,height:v}))}})}(jQuery,document,Math);
Index: public/vendors/circle-progress/circle-progress.min.js
===================================================================
--- public/vendors/circle-progress/circle-progress.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/circle-progress/circle-progress.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+(function(b){function a(c){this.init(c)}a.prototype={value:0,size:100,startAngle:-Math.PI,thickness:"auto",fill:{gradient:["#3aeabb","#fdd250"]},emptyFill:"rgba(0, 0, 0, .1)",animation:{duration:1200,easing:"circleProgressEasing"},animationStartValue:0,reverse:false,lineCap:"butt",constructor:a,el:null,canvas:null,ctx:null,radius:0,arcFill:null,lastFrameValue:0,init:function(c){b.extend(this,c);this.radius=this.size/2;this.initWidget();this.initFill();this.draw()},initWidget:function(){var c=this.canvas=this.canvas||b("<canvas>").prependTo(this.el)[0];c.width=this.size;c.height=this.size;this.ctx=c.getContext("2d")},initFill:function(){var m=this,l=this.fill,o=this.ctx,p=this.size;if(!l){throw Error("The fill is not specified!")}if(l.color){this.arcFill=l.color}if(l.gradient){var c=l.gradient;if(c.length==1){this.arcFill=c[0]}else{if(c.length>1){var k=l.gradientAngle||0,j=l.gradientDirection||[p/2*(1-Math.cos(k)),p/2*(1+Math.sin(k)),p/2*(1+Math.cos(k)),p/2*(1-Math.sin(k))];var n=o.createLinearGradient.apply(o,j);for(var f=0;f<c.length;f++){var d=c[f],g=f/(c.length-1);if(b.isArray(d)){g=d[1];d=d[0]}n.addColorStop(g,d)}this.arcFill=n}}}if(l.image){var e;if(l.image instanceof Image){e=l.image}else{e=new Image();e.src=l.image}if(e.complete){h()}else{e.onload=h}}function h(){var i=b("<canvas>")[0];i.width=m.size;i.height=m.size;i.getContext("2d").drawImage(e,0,0,p,p);m.arcFill=m.ctx.createPattern(i,"no-repeat");m.drawFrame(m.lastFrameValue)}},draw:function(){if(this.animation){this.drawAnimated(this.value)}else{this.drawFrame(this.value)}},drawFrame:function(c){this.lastFrameValue=c;this.ctx.clearRect(0,0,this.size,this.size);this.drawEmptyArc(c);this.drawArc(c)},drawArc:function(e){var d=this.ctx,g=this.radius,f=this.getThickness(),c=this.startAngle;d.save();d.beginPath();if(!this.reverse){d.arc(g,g,g-f/2,c,c+Math.PI*2*e)}else{d.arc(g,g,g-f/2,c-Math.PI*2*e,c)}d.lineWidth=f;d.lineCap=this.lineCap;d.strokeStyle=this.arcFill;d.stroke();d.restore()},drawEmptyArc:function(e){var d=this.ctx,g=this.radius,f=this.getThickness(),c=this.startAngle;if(e<1){d.save();d.beginPath();if(e<=0){d.arc(g,g,g-f/2,0,Math.PI*2)}else{if(!this.reverse){d.arc(g,g,g-f/2,c+Math.PI*2*e,c)}else{d.arc(g,g,g-f/2,c,c-Math.PI*2*e)}}d.lineWidth=f;d.strokeStyle=this.emptyFill;d.stroke();d.restore()}},drawAnimated:function(d){var c=this,f=this.el,e=b(this.canvas);e.stop(true,false);f.trigger("circle-animation-start");e.css({animationProgress:0}).animate({animationProgress:1},b.extend({},this.animation,{step:function(h){var g=c.animationStartValue*(1-h)+d*h;c.drawFrame(g);f.trigger("circle-animation-progress",[h,g])}})).promise().always(function(){f.trigger("circle-animation-end")})},getThickness:function(){return b.isNumeric(this.thickness)?this.thickness:this.size/14},getValue:function(){return this.value},setValue:function(c){if(this.animation){this.animationStartValue=this.lastFrameValue}this.value=c;this.draw()}};b.circleProgress={defaults:a.prototype};b.easing.circleProgressEasing=function(f,g,e,i,h){if((g/=h/2)<1){return i/2*g*g*g+e}return i/2*((g-=2)*g*g+2)+e}; b.fn.circleProgress=function(e,d){var c="circle-progress",f=this.data(c);if(e=="widget"){if(!f){throw Error('Calling "widget" method on not initialized instance is forbidden')}return f.canvas}if(e=="value"){if(!f){throw Error('Calling "value" method on not initialized instance is forbidden')}if(typeof d=="undefined"){return f.getValue()}else{var g=arguments[1];return this.each(function(){b(this).data(c).setValue(g)})}}return this.each(function(){var j=b(this),h=j.data(c),i=b.isPlainObject(e)?e:{};if(h){h.init(i)}else{var k=b.extend({},j.data());if(typeof k.fill=="string"){k.fill=JSON.parse(k.fill)}if(typeof k.animation=="string"){k.animation=JSON.parse(k.animation)}i=b.extend(k,i);i.el=j;h=new a(i);j.data(c,h)}})}})(jQuery);
Index: public/vendors/clockpicker/bootstrap-clockpicker.min.css
===================================================================
--- public/vendors/clockpicker/bootstrap-clockpicker.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/clockpicker/bootstrap-clockpicker.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ * ClockPicker v0.0.7 for Bootstrap (http://weareoutman.github.io/clockpicker/)
+ * Copyright 2014 Wang Shenwei.
+ * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)
+ */.clockpicker-popover {z-index: 9999}.clockpicker .input-group-prepend, .input-group-append{cursor:pointer}.clockpicker-moving{cursor:move}.clockpicker-align-left.popover>.arrow{left:25px}.clockpicker-align-top.popover>.arrow{top:17px}.clockpicker-align-right.popover>.arrow{left:auto;right:25px}.clockpicker-align-bottom.popover>.arrow{top:auto;bottom:6px}.clockpicker-popover .popover-title{background-color:#fff;color:#999;font-size:24px;font-weight:700;line-height:30px;text-align:center}.clockpicker-popover .popover-title span{cursor:pointer}.clockpicker-popover .popover-content{background-color:#f8f8f8;padding:12px}.popover-content:last-child{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.clockpicker-plate{background-color:#fff;border:1px solid #ccc;border-radius:50%;width:200px;height:200px;overflow:visible;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.clockpicker-canvas,.clockpicker-dial{width:200px;height:200px;position:absolute;left:-1px;top:-1px}.clockpicker-minutes{visibility:hidden}.clockpicker-tick{border-radius:50%;color:#666;line-height:26px;text-align:center;width:26px;height:26px;position:absolute;cursor:pointer}.clockpicker-tick.active,.clockpicker-tick:hover{background-color:#c0e5f7;background-color:rgba(0,149,221,.25)}.clockpicker-button{background-image:none;background-color:#fff;border-width:1px 0 0;border-top-left-radius:0;border-top-right-radius:0;margin:0;padding:10px 0}.clockpicker-button:hover{background-image:none;background-color:#ebebeb}.clockpicker-button:focus{outline:0!important}.clockpicker-dial{-webkit-transition:-webkit-transform 350ms,opacity 350ms;-moz-transition:-moz-transform 350ms,opacity 350ms;-ms-transition:-ms-transform 350ms,opacity 350ms;-o-transition:-o-transform 350ms,opacity 350ms;transition:transform 350ms,opacity 350ms}.clockpicker-dial-out{opacity:0}.clockpicker-hours.clockpicker-dial-out{-webkit-transform:scale(1.2,1.2);-moz-transform:scale(1.2,1.2);-ms-transform:scale(1.2,1.2);-o-transform:scale(1.2,1.2);transform:scale(1.2,1.2)}.clockpicker-minutes.clockpicker-dial-out{-webkit-transform:scale(.8,.8);-moz-transform:scale(.8,.8);-ms-transform:scale(.8,.8);-o-transform:scale(.8,.8);transform:scale(.8,.8)}.clockpicker-canvas{-webkit-transition:opacity 175ms;-moz-transition:opacity 175ms;-ms-transition:opacity 175ms;-o-transition:opacity 175ms;transition:opacity 175ms}.clockpicker-canvas-out{opacity:.25}.clockpicker-canvas-bearing,.clockpicker-canvas-fg{stroke:none;fill:#0095dd}.clockpicker-canvas-bg{stroke:none;fill:#c0e5f7}.clockpicker-canvas-bg-trans{fill:rgba(0,149,221,.25)}.clockpicker-canvas line{stroke:#0095dd;stroke-width:1;stroke-linecap:round}.clockpicker-button.am-button{margin:1px;padding:5px;border:1px solid rgba(0,0,0,.2);border-radius:4px}.clockpicker-button.pm-button{margin:1px 1px 1px 136px;padding:5px;border:1px solid rgba(0,0,0,.2);border-radius:4px}
Index: public/vendors/clockpicker/bootstrap-clockpicker.min.js
===================================================================
--- public/vendors/clockpicker/bootstrap-clockpicker.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/clockpicker/bootstrap-clockpicker.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ * ClockPicker v0.0.7 (http://weareoutman.github.io/clockpicker/)
+ * Copyright 2014 Wang Shenwei.
+ * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)
+ */
+!function(){function t(t){return document.createElementNS(p,t)}function i(t){return(10>t?"0":"")+t}function e(t){var i=++m+"";return t?t+i:i}function s(s,r){function p(t,i){var e=u.offset(),s=/^touch/.test(t.type),o=e.left+b,n=e.top+b,p=(s?t.originalEvent.touches[0]:t).pageX-o,h=(s?t.originalEvent.touches[0]:t).pageY-n,k=Math.sqrt(p*p+h*h),v=!1;if(!i||!(g-y>k||k>g+y)){t.preventDefault();var m=setTimeout(function(){c.addClass("clockpicker-moving")},200);l&&u.append(x.canvas),x.setHand(p,h,!i,!0),a.off(d).on(d,function(t){t.preventDefault();var i=/^touch/.test(t.type),e=(i?t.originalEvent.touches[0]:t).pageX-o,s=(i?t.originalEvent.touches[0]:t).pageY-n;(v||e!==p||s!==h)&&(v=!0,x.setHand(e,s,!1,!0))}),a.off(f).on(f,function(t){a.off(f),t.preventDefault();var e=/^touch/.test(t.type),s=(e?t.originalEvent.changedTouches[0]:t).pageX-o,l=(e?t.originalEvent.changedTouches[0]:t).pageY-n;(i||v)&&s===p&&l===h&&x.setHand(s,l),"hours"===x.currentView?x.toggleView("minutes",A/2):r.autoclose&&(x.minutesView.addClass("clockpicker-dial-out"),setTimeout(function(){x.done()},A/2)),u.prepend(j),clearTimeout(m),c.removeClass("clockpicker-moving"),a.off(d)})}}var h=n(V),u=h.find(".clockpicker-plate"),v=h.find(".clockpicker-hours"),m=h.find(".clockpicker-minutes"),T=h.find(".clockpicker-am-pm-block"),C="INPUT"===s.prop("tagName"),H=C?s:s.find("input"),P=s.find(".input-group-prepend, .input-group-append"),x=this;if(this.id=e("cp"),this.element=s,this.options=r,this.isAppended=!1,this.isShown=!1,this.currentView="hours",this.isInput=C,this.input=H,this.addon=P,this.popover=h,this.plate=u,this.hoursView=v,this.minutesView=m,this.amPmBlock=T,this.spanHours=h.find(".clockpicker-span-hours"),this.spanMinutes=h.find(".clockpicker-span-minutes"),this.spanAmPm=h.find(".clockpicker-span-am-pm"),this.amOrPm="PM",r.twelvehour){{var S=['<div class="clockpicker-am-pm-block">','<button type="button" class="btn btn-sm btn-light clockpicker-button clockpicker-am-button">',"AM</button>",'<button type="button" class="btn btn-sm btn-light clockpicker-button clockpicker-pm-button">',"PM</button>","</div>"].join("");n(S)}n('<button type="button" class="btn btn-sm btn-light clockpicker-button am-button">AM</button>').on("click",function(){x.amOrPm="AM",n(".clockpicker-span-am-pm").empty().append("AM")}).appendTo(this.amPmBlock),n('<button type="button" class="btn btn-sm btn-light clockpicker-button pm-button">PM</button>').on("click",function(){x.amOrPm="PM",n(".clockpicker-span-am-pm").empty().append("PM")}).appendTo(this.amPmBlock)}r.autoclose||n('<button type="button" class="btn btn-light btn-block clockpicker-button">'+r.donetext+"</button>").click(n.proxy(this.done,this)).appendTo(h),"top"!==r.placement&&"bottom"!==r.placement||"top"!==r.align&&"bottom"!==r.align||(r.align="left"),"left"!==r.placement&&"right"!==r.placement||"left"!==r.align&&"right"!==r.align||(r.align="top"),h.addClass(r.placement),h.addClass("clockpicker-align-"+r.align),this.spanHours.click(n.proxy(this.toggleView,this,"hours")),this.spanMinutes.click(n.proxy(this.toggleView,this,"minutes")),H.on("focus.clockpicker click.clockpicker",n.proxy(this.show,this)),P.on("click.clockpicker",n.proxy(this.toggle,this));var E,D,I,B,z=n('<div class="clockpicker-tick"></div>');if(r.twelvehour)for(E=1;13>E;E+=1)D=z.clone(),I=E/6*Math.PI,B=g,D.css("font-size","120%"),D.css({left:b+Math.sin(I)*B-y,top:b-Math.cos(I)*B-y}),D.html(0===E?"00":E),v.append(D),D.on(k,p);else for(E=0;24>E;E+=1){D=z.clone(),I=E/6*Math.PI;var O=E>0&&13>E;B=O?w:g,D.css({left:b+Math.sin(I)*B-y,top:b-Math.cos(I)*B-y}),O&&D.css("font-size","120%"),D.html(0===E?"00":E),v.append(D),D.on(k,p)}for(E=0;60>E;E+=5)D=z.clone(),I=E/30*Math.PI,D.css({left:b+Math.sin(I)*g-y,top:b-Math.cos(I)*g-y}),D.css("font-size","120%"),D.html(i(E)),m.append(D),D.on(k,p);if(u.on(k,function(t){0===n(t.target).closest(".clockpicker-tick").length&&p(t,!0)}),l){var j=h.find(".clockpicker-canvas"),L=t("svg");L.setAttribute("class","clockpicker-svg"),L.setAttribute("width",M),L.setAttribute("height",M);var U=t("g");U.setAttribute("transform","translate("+b+","+b+")");var W=t("circle");W.setAttribute("class","clockpicker-canvas-bearing"),W.setAttribute("cx",0),W.setAttribute("cy",0),W.setAttribute("r",2);var N=t("line");N.setAttribute("x1",0),N.setAttribute("y1",0);var X=t("circle");X.setAttribute("class","clockpicker-canvas-bg"),X.setAttribute("r",y);var Y=t("circle");Y.setAttribute("class","clockpicker-canvas-fg"),Y.setAttribute("r",3.5),U.appendChild(N),U.appendChild(X),U.appendChild(Y),U.appendChild(W),L.appendChild(U),j.append(L),this.hand=N,this.bg=X,this.fg=Y,this.bearing=W,this.g=U,this.canvas=j}o(this.options.init)}function o(t){t&&"function"==typeof t&&t()}var c,n=window.jQuery,r=n(window),a=n(document),p="http://www.w3.org/2000/svg",l="SVGAngle"in window&&function(){var t,i=document.createElement("div");return i.innerHTML="<svg/>",t=(i.firstChild&&i.firstChild.namespaceURI)==p,i.innerHTML="",t}(),h=function(){var t=document.createElement("div").style;return"transition"in t||"WebkitTransition"in t||"MozTransition"in t||"msTransition"in t||"OTransition"in t}(),u="ontouchstart"in window,k="mousedown"+(u?" touchstart":""),d="mousemove.clockpicker"+(u?" touchmove.clockpicker":""),f="mouseup.clockpicker"+(u?" touchend.clockpicker":""),v=navigator.vibrate?"vibrate":navigator.webkitVibrate?"webkitVibrate":null,m=0,b=100,g=80,w=54,y=13,M=2*b,A=h?350:1,V=['<div class="popover clockpicker-popover">','<div class="arrow"></div>','<div class="popover-title">','<span class="clockpicker-span-hours text-primary"></span>'," : ",'<span class="clockpicker-span-minutes"></span>','<span class="clockpicker-span-am-pm"></span>',"</div>",'<div class="popover-content">','<div class="clockpicker-plate">','<div class="clockpicker-canvas"></div>','<div class="clockpicker-dial clockpicker-hours"></div>','<div class="clockpicker-dial clockpicker-minutes clockpicker-dial-out"></div>',"</div>",'<span class="clockpicker-am-pm-block">',"</span>","</div>","</div>"].join("");s.DEFAULTS={"default":"",fromnow:0,placement:"bottom",align:"left",donetext:"完成",autoclose:!1,twelvehour:!1,vibrate:!0},s.prototype.toggle=function(){this[this.isShown?"hide":"show"]()},s.prototype.locate=function(){var t=this.element,i=this.popover,e=t.offset(),s=t.outerWidth(),o=t.outerHeight(),c=this.options.placement,n=this.options.align,r={};switch(i.show(),c){case"bottom":r.top=e.top+o;break;case"right":r.left=e.left+s;break;case"top":r.top=e.top-i.outerHeight();break;case"left":r.left=e.left-i.outerWidth()}switch(n){case"left":r.left=e.left;break;case"right":r.left=e.left+s-i.outerWidth();break;case"top":r.top=e.top;break;case"bottom":r.top=e.top+o-i.outerHeight()}i.css(r)},s.prototype.show=function(){if(!this.isShown){o(this.options.beforeShow);var t=this;this.isAppended||(c=n(document.body).append(this.popover),r.on("resize.clockpicker"+this.id,function(){t.isShown&&t.locate()}),this.isAppended=!0);var e=((this.input.prop("value")||this.options["default"]||"")+"").split(":");if("now"===e[0]){var s=new Date(+new Date+this.options.fromnow);e=[s.getHours(),s.getMinutes()]}this.hours=+e[0]||0,this.minutes=+e[1]||0,this.spanHours.html(i(this.hours)),this.spanMinutes.html(i(this.minutes)),this.toggleView("hours"),this.locate(),this.isShown=!0,a.on("click.clockpicker."+this.id+" focusin.clockpicker."+this.id,function(i){var e=n(i.target);0===e.closest(t.popover).length&&0===e.closest(t.addon).length&&0===e.closest(t.input).length&&t.hide()}),a.on("keyup.clockpicker."+this.id,function(i){27===i.keyCode&&t.hide()}),o(this.options.afterShow)}},s.prototype.hide=function(){o(this.options.beforeHide),this.isShown=!1,a.off("click.clockpicker."+this.id+" focusin.clockpicker."+this.id),a.off("keyup.clockpicker."+this.id),this.popover.hide(),o(this.options.afterHide)},s.prototype.toggleView=function(t,i){var e=!1;"minutes"===t&&"visible"===n(this.hoursView).css("visibility")&&(o(this.options.beforeHourSelect),e=!0);var s="hours"===t,c=s?this.hoursView:this.minutesView,r=s?this.minutesView:this.hoursView;this.currentView=t,this.spanHours.toggleClass("text-primary",s),this.spanMinutes.toggleClass("text-primary",!s),r.addClass("clockpicker-dial-out"),c.css("visibility","visible").removeClass("clockpicker-dial-out"),this.resetClock(i),clearTimeout(this.toggleViewTimer),this.toggleViewTimer=setTimeout(function(){r.css("visibility","hidden")},A),e&&o(this.options.afterHourSelect)},s.prototype.resetClock=function(t){var i=this.currentView,e=this[i],s="hours"===i,o=Math.PI/(s?6:30),c=e*o,n=s&&e>0&&13>e?w:g,r=Math.sin(c)*n,a=-Math.cos(c)*n,p=this;l&&t?(p.canvas.addClass("clockpicker-canvas-out"),setTimeout(function(){p.canvas.removeClass("clockpicker-canvas-out"),p.setHand(r,a)},t)):this.setHand(r,a)},s.prototype.setHand=function(t,e,s,o){var c,r=Math.atan2(t,-e),a="hours"===this.currentView,p=Math.PI/(a||s?6:30),h=Math.sqrt(t*t+e*e),u=this.options,k=a&&(g+w)/2>h,d=k?w:g;if(u.twelvehour&&(d=g),0>r&&(r=2*Math.PI+r),c=Math.round(r/p),r=c*p,u.twelvehour?a?0===c&&(c=12):(s&&(c*=5),60===c&&(c=0)):a?(12===c&&(c=0),c=k?0===c?12:c:0===c?0:c+12):(s&&(c*=5),60===c&&(c=0)),this[this.currentView]!==c&&v&&this.options.vibrate&&(this.vibrateTimer||(navigator[v](10),this.vibrateTimer=setTimeout(n.proxy(function(){this.vibrateTimer=null},this),100))),this[this.currentView]=c,this[a?"spanHours":"spanMinutes"].html(i(c)),!l)return void this[a?"hoursView":"minutesView"].find(".clockpicker-tick").each(function(){var t=n(this);t.toggleClass("active",c===+t.html())});o||!a&&c%5?(this.g.insertBefore(this.hand,this.bearing),this.g.insertBefore(this.bg,this.fg),this.bg.setAttribute("class","clockpicker-canvas-bg clockpicker-canvas-bg-trans")):(this.g.insertBefore(this.hand,this.bg),this.g.insertBefore(this.fg,this.bg),this.bg.setAttribute("class","clockpicker-canvas-bg"));var f=Math.sin(r)*d,m=-Math.cos(r)*d;this.hand.setAttribute("x2",f),this.hand.setAttribute("y2",m),this.bg.setAttribute("cx",f),this.bg.setAttribute("cy",m),this.fg.setAttribute("cx",f),this.fg.setAttribute("cy",m)},s.prototype.done=function(){o(this.options.beforeDone),this.hide();var t=this.input.prop("value"),e=i(this.hours)+":"+i(this.minutes);this.options.twelvehour&&(e+=this.amOrPm),this.input.prop("value",e),e!==t&&(this.input.triggerHandler("change"),this.isInput||this.element.trigger("change")),this.options.autoclose&&this.input.trigger("blur"),o(this.options.afterDone)},s.prototype.remove=function(){this.element.removeData("clockpicker"),this.input.off("focus.clockpicker click.clockpicker"),this.addon.off("click.clockpicker"),this.isShown&&this.hide(),this.isAppended&&(r.off("resize.clockpicker"+this.id),this.popover.remove())},n.fn.clockpicker=function(t){var i=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=n(this),o=e.data("clockpicker");if(o)"function"==typeof o[t]&&o[t].apply(o,i);else{var c=n.extend({},s.DEFAULTS,e.data(),"object"==typeof t&&t);e.data("clockpicker",new s(e,c))}})}}();
Index: public/vendors/colorpicker/css/bootstrap-colorpicker.min.css
===================================================================
--- public/vendors/colorpicker/css/bootstrap-colorpicker.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/colorpicker/css/bootstrap-colorpicker.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,10 @@
+/*!
+ * Bootstrap Colorpicker v2.5.2
+ * https://itsjavi.com/bootstrap-colorpicker/
+ *
+ * Originally written by (c) 2012 Stefan Petre
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0.txt
+ *
+ */.colorpicker-saturation{width:100px;height:100px;background-image:url(data:image/png;base64,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);cursor:crosshair;float:left}.colorpicker-saturation i{display:block;height:5px;width:5px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;position:absolute;top:0;left:0;margin:-4px 0 0 -4px}.colorpicker-saturation i b{display:block;height:5px;width:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-alpha,.colorpicker-hue{width:15px;height:100px;float:left;cursor:row-resize;margin-left:4px;margin-bottom:4px}.colorpicker-alpha i,.colorpicker-hue i{display:block;height:1px;background:#000;border-top:1px solid #fff;position:absolute;top:0;left:0;width:100%;margin-top:-1px}.colorpicker-hue{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAMAAABw8qpSAAABLFBMVEXqFBb/ABH/ACL/ADH/AEH/AFD/AGD/AG7/AH7/AI3/AJ3/AKz/ALz/AMr/ANv/AOr/APr2AP/mAP/XAP/HAP+4AP+oAP+aAP+JAP97AP9rAP9cAP9MAP8+AP8tAP8fAP8PAP8BAv8AEP8AH/8AL/8APv8ATv8AXP8Abf8Ae/8Ai/8Amv8Aqv8AuP8Ayf8A1/8A5/8A9/8A//gA/+kA/9kA/8oA/7oA/6wA/5sA/40A/30A/24A/14A/1AA/z8A/zEA/yEA/xEB/wMN/wAd/wAs/wA8/wBK/wBb/wBp/wB5/wCI/wCY/wCm/wC3/wDF/wDV/wDk/wD1/wD/+gD/7AD/3AD/zAD/vgD/rQD/nwD/jgD/gAD/cAD/YgD/UQD/QwD/MgD/JAD/FAD4Eg42qAedAAAAh0lEQVR4XgXAg3EDAAAAwI9to7Zt27a1/w49BASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTS1tHXo1KVbj159+g0YNGTYiFFjxk2YNGXajFlz5i1YtGTZilVr1m3YtGXbjl179h04dOTYiVNnzl24dOXajVt37j149OTZi1dv3n349OXbj19//wOxE1dQ8reGAAAAAElFTkSuQmCC)}.colorpicker-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAABkCAQAAAAVxWkcAAABr0lEQVR4Xo2VwU0DQQxF7dmRuNIFlzlSAR3QAaXQQdIBJVABFXDcOVAAd67cjJLR07dkhcSrkZKfb/t7bG88rFo3B5gZPMNycItu2xloGV7MWHzM9zuzFWCkmA0nK6AszCUJDW6+mG6R03ncw5v8EMTEvZ2O3AliYjpslblc0RF9LmZYWxURU6aKytWZYsoWCAe+xwOZp1GsEukGiIkYxcQCHck99+gRgB7JncyIB5SGEhP3Yh5P6JwX+u6AnYot104d8DJT7uH7M9JH6OZbimj0vfMVaYnJIZFJDBW9kHlerL2C6JV4mSt7uuo2N57RxnZ+usQjn0R1jwBJBrNO3evJpVYUWsJ/E3UiXRlv24/7YZ04xmEdWlzcKS+B/eapeyMvFd2k0+hRk/T0AmTW8h69s2sjYMsdPntECiILhAeIMZAeH4QvUwfn6ijC0tTV+fT9ky8jM9nK2g7Ly1VjSpKYq6IvsAm7MtNu1orEqa/K3KNvgMFdhfquPfJmp2dbh0/8Gzb6Y22ViaNr6n5410zXdngVhbu6XqdOtWOuin5hjABGp4a2uotZ71MVCfwDBt2/v37yo6AAAAAASUVORK5CYII=);display:none}.colorpicker-alpha,.colorpicker-hue,.colorpicker-saturation{background-size:contain}.colorpicker{padding:4px;min-width:130px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;z-index:2500}.colorpicker:after,.colorpicker:before{display:table;content:"";line-height:0}.colorpicker:after{clear:both}.colorpicker:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:6px}.colorpicker:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:7px}.colorpicker div{position:relative}.colorpicker.colorpicker-with-alpha{min-width:140px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAABkCAQAAAAVxWkcAAABr0lEQVR4Xo2VwU0DQQxF7dmRuNIFlzlSAR3QAaXQQdIBJVABFXDcOVAAd67cjJLR07dkhcSrkZKfb/t7bG88rFo3B5gZPMNycItu2xloGV7MWHzM9zuzFWCkmA0nK6AszCUJDW6+mG6R03ncw5v8EMTEvZ2O3AliYjpslblc0RF9LmZYWxURU6aKytWZYsoWCAe+xwOZp1GsEukGiIkYxcQCHck99+gRgB7JncyIB5SGEhP3Yh5P6JwX+u6AnYot104d8DJT7uH7M9JH6OZbimj0vfMVaYnJIZFJDBW9kHlerL2C6JV4mSt7uuo2N57RxnZ+usQjn0R1jwBJBrNO3evJpVYUWsJ/E3UiXRlv24/7YZ04xmEdWlzcKS+B/eapeyMvFd2k0+hRk/T0AmTW8h69s2sjYMsdPntECiILhAeIMZAeH4QvUwfn6ijC0tTV+fT9ky8jM9nK2g7Ly1VjSpKYq6IvsAm7MtNu1orEqa/K3KNvgMFdhfquPfJmp2dbh0/8Gzb6Y22ViaNr6n5410zXdngVhbu6XqdOtWOuin5hjABGp4a2uotZ71MVCfwDBt2/v37yo6AAAAAASUVORK5CYII=);background-position:0 100%}.colorpicker-color div{height:10px}.colorpicker-selectors{display:none;height:10px;margin-top:5px;clear:both}.colorpicker-selectors i{cursor:pointer;float:left;height:10px;width:10px}.colorpicker-selectors i+i{margin-left:3px}.colorpicker-element .add-on i,.colorpicker-element .input-group-prepend i, .colorpicker-element .input-group-append i{display:inline-block;cursor:pointer;height:16px;vertical-align:text-top;width:16px}.colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none;z-index:auto}.colorpicker.colorpicker-horizontal{width:110px;min-width:110px;height:auto}.colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-color{width:100px}.colorpicker.colorpicker-horizontal .colorpicker-alpha,.colorpicker.colorpicker-horizontal .colorpicker-hue{width:100px;height:15px;float:left;cursor:col-resize;margin-left:0;margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-alpha i,.colorpicker.colorpicker-horizontal .colorpicker-hue i{display:block;height:15px;background:#fff;position:absolute;top:0;left:0;width:1px;border:none;margin-top:0}.colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAABCAMAAAAfBfuPAAABLFBMVEXqFBb/ABH/ACL/ADH/AEH/AFD/AGD/AG7/AH7/AI3/AJ3/AKz/ALz/AMr/ANv/AOr/APr2AP/mAP/XAP/HAP+4AP+oAP+aAP+JAP97AP9rAP9cAP9MAP8+AP8tAP8fAP8PAP8BAv8AEP8AH/8AL/8APv8ATv8AXP8Abf8Ae/8Ai/8Amv8Aqv8AuP8Ayf8A1/8A5/8A9/8A//gA/+kA/9kA/8oA/7oA/6wA/5sA/40A/30A/24A/14A/1AA/z8A/zEA/yEA/xEB/wMN/wAd/wAs/wA8/wBK/wBb/wBp/wB5/wCI/wCY/wCm/wC3/wDF/wDV/wDk/wD1/wD/+gD/7AD/3AD/zAD/vgD/rQD/nwD/jgD/gAD/cAD/YgD/UQD/QwD/MgD/JAD/FAD4Eg42qAedAAAAbUlEQVR4XgXAghEDsbxtlrZt27ax/w49ACAYQTGcICmaYTleECVZUTXdMC1Wm93hdLk9Xp8/EAyFI9FYPJFMpTPZXL5QLJUr1Vq90Wy1O91efzAcjSfT2XyxXK03293+cDydL9fb/fF8vT/f3x+LfRNXARMbCAAAAABJRU5ErkJggg==)}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAKCAQAAADoFTP1AAAB9ElEQVR4XoWTQW4VMRBEu9qWEimL7DhEMp8NF+ASnJJLcAQgE1bcgBUSkYKUuHCrZ9pjeqSU5Yn9LPu7umJQBIIv+k7vIOrtK66L4lmr3pVOrOv3otp619KZ0/KjdNI79L52Uo09FBQWrU0vfe5trezU+hLsoUKd3Repovte+0vbq/7Lj5XbaHECKasR9G4MPlbp+gzZxd6koPEJCkAYC5SjcOTAIIOK90Dja1IfIZ8Z+zAY9jm3b5Ia+MT5sFcqRJrR2AYYA8Kua5BzYRrFPNmD4PQMegGJMOffJJUsWiI3nCHZZjInNdffLWOufzbc3JaboCAVxwmnRHbhLSPwRJ4wU0BRSc6HkECYYVw95nMKgJOcylxrJttE5Ibzf9Xq9GPvP+WX3MiV/MGHfRu/SentRQrfG1GzsIrytdNXucSRKxQNIGHM9YhGFQJcdjNcBZvfJayuYe4Sia1CzwW+19mWOhe37HsxJWKwbu/jluEU15QzAQjAqCEbhMJc78GYV2E0kooHDubUImWkTOhGpgv8PoT8DJG/bzxna4BZ0eOFSOaLADGeSpFsg5AzeaDZIDQQXjZ4y/8ryfzUXBwdELRjTjCNvOeT0rNlrJz90vwy6N9pXXQEluX0inElpPWokSdiLCfiNJJjMKQ8Qsh8GEKQKMo/eiHrNbI9UksAAAAASUVORK5CYII=)}.colorpicker-right:before{left:auto;right:6px}.colorpicker-right:after{left:auto;right:7px}.colorpicker-no-arrow:before{border-right:0;border-left:0}.colorpicker-no-arrow:after{border-right:0;border-left:0}.colorpicker-alpha.colorpicker-visible,.colorpicker-hue.colorpicker-visible,.colorpicker-saturation.colorpicker-visible,.colorpicker-selectors.colorpicker-visible,.colorpicker.colorpicker-visible{display:block}.colorpicker-alpha.colorpicker-hidden,.colorpicker-hue.colorpicker-hidden,.colorpicker-saturation.colorpicker-hidden,.colorpicker-selectors.colorpicker-hidden,.colorpicker.colorpicker-hidden{display:none}.colorpicker-inline.colorpicker-visible{display:inline-block}
+/*# sourceMappingURL=bootstrap-colorpicker.min.css.map */
Index: public/vendors/colorpicker/js/bootstrap-colorpicker.min.js
===================================================================
--- public/vendors/colorpicker/js/bootstrap-colorpicker.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/colorpicker/js/bootstrap-colorpicker.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):jQuery&&!jQuery.fn.colorpicker&&b(jQuery)}(this,function(a){"use strict";var b=function(c,d,e,f,g){this.fallbackValue=e?"string"==typeof e?this.parse(e):e:null,this.fallbackFormat=f?f:"rgba",this.hexNumberSignPrefix=g===!0,this.value=this.fallbackValue,this.origFormat=null,this.predefinedColors=d?d:{},this.colors=a.extend({},b.webColors,this.predefinedColors),c&&("undefined"!=typeof c.h?this.value=c:this.setColor(String(c))),this.value||(this.value={h:0,s:0,b:0,a:1})};b.webColors={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370d8",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"d87093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32",transparent:"transparent"},b.prototype={constructor:b,colors:{},predefinedColors:{},getValue:function(){return this.value},setValue:function(a){this.value=a},_sanitizeNumber:function(a){return"number"==typeof a?a:isNaN(a)||null===a||""===a||void 0===a?1:""===a?0:"undefined"!=typeof a.toLowerCase?(a.match(/^\./)&&(a="0"+a),Math.ceil(100*parseFloat(a))/100):1},isTransparent:function(a){return!(!a||!("string"==typeof a||a instanceof String))&&(a=a.toLowerCase().trim(),"transparent"===a||a.match(/#?00000000/)||a.match(/(rgba|hsla)\(0,0,0,0?\.?0\)/))},rgbaIsTransparent:function(a){return 0===a.r&&0===a.g&&0===a.b&&0===a.a},setColor:function(a){if(a=a.toLowerCase().trim()){if(this.isTransparent(a))return this.value={h:0,s:0,b:0,a:0},!0;var b=this.parse(a);b?(this.value=this.value={h:b.h,s:b.s,b:b.b,a:b.a},this.origFormat||(this.origFormat=b.format)):this.fallbackValue&&(this.value=this.fallbackValue)}return!1},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setBrightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=Math.round(parseInt(100*(1-a),10)/100*100)/100},toRGB:function(a,b,c,d){0===arguments.length&&(a=this.value.h,b=this.value.s,c=this.value.b,d=this.value.a),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Math.abs(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],{r:Math.round(255*e),g:Math.round(255*f),b:Math.round(255*g),a:d}},toHex:function(a,b,c,d,e){arguments.length<=1&&(b=this.value.h,c=this.value.s,d=this.value.b,e=this.value.a);var f="#",g=this.toRGB(b,c,d,e);if(this.rgbaIsTransparent(g))return"transparent";a||(f=this.hexNumberSignPrefix?"#":"");var h=f+((1<<24)+(parseInt(g.r)<<16)+(parseInt(g.g)<<8)+parseInt(g.b)).toString(16).slice(1);return h},toHSL:function(a,b,c,d){0===arguments.length&&(a=this.value.h,b=this.value.s,c=this.value.b,d=this.value.a);var e=a,f=(2-b)*c,g=b*c;return g/=f>0&&f<=1?f:2-f,f/=2,g>1&&(g=1),{h:isNaN(e)?0:e,s:isNaN(g)?0:g,l:isNaN(f)?0:f,a:isNaN(d)?0:d}},toAlias:function(a,b,c,d){var e,f=0===arguments.length?this.toHex(!0):this.toHex(!0,a,b,c,d),g="alias"===this.origFormat?f:this.toString(!1,this.origFormat);for(var h in this.colors)if(e=this.colors[h].toLowerCase().trim(),e===f||e===g)return h;return!1},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var e,f,g,h;return g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:this._sanitizeNumber(e),s:f,b:g,a:this._sanitizeNumber(d)}},HueToRGB:function(a,b,c){return c<0?c+=1:c>1&&(c-=1),6*c<1?a+(b-a)*c*6:2*c<1?b:3*c<2?a+(b-a)*(2/3-c)*6:a},HSLtoRGB:function(a,b,c,d){b<0&&(b=0);var e;e=c<=.5?c*(1+b):c+b-c*b;var f=2*c-e,g=a+1/3,h=a,i=a-1/3,j=Math.round(255*this.HueToRGB(f,e,g)),k=Math.round(255*this.HueToRGB(f,e,h)),l=Math.round(255*this.HueToRGB(f,e,i));return[j,k,l,this._sanitizeNumber(d)]},parse:function(b){if("string"!=typeof b)return this.fallbackValue;if(0===arguments.length)return!1;var c,d,e=this,f=!1,g="undefined"!=typeof this.colors[b];return g&&(b=this.colors[b].toLowerCase().trim()),a.each(this.stringParsers,function(a,h){var i=h.re.exec(b);return c=i&&h.parse.apply(e,[i]),!c||(f={},d=g?"alias":h.format?h.format:e.getValidFallbackFormat(),f=d.match(/hsla?/)?e.RGBtoHSB.apply(e,e.HSLtoRGB.apply(e,c)):e.RGBtoHSB.apply(e,c),f instanceof Object&&(f.format=d),!1)}),f},getValidFallbackFormat:function(){var a=["rgba","rgb","hex","hsla","hsl"];return this.origFormat&&a.indexOf(this.origFormat)!==-1?this.origFormat:this.fallbackFormat&&a.indexOf(this.fallbackFormat)!==-1?this.fallbackFormat:"rgba"},toString:function(a,c,d){c=c||this.origFormat||this.fallbackFormat,d=d||!1;var e=!1;switch(c){case"rgb":return e=this.toRGB(),this.rgbaIsTransparent(e)?"transparent":"rgb("+e.r+","+e.g+","+e.b+")";case"rgba":return e=this.toRGB(),"rgba("+e.r+","+e.g+","+e.b+","+e.a+")";case"hsl":return e=this.toHSL(),"hsl("+Math.round(360*e.h)+","+Math.round(100*e.s)+"%,"+Math.round(100*e.l)+"%)";case"hsla":return e=this.toHSL(),"hsla("+Math.round(360*e.h)+","+Math.round(100*e.s)+"%,"+Math.round(100*e.l)+"%,"+e.a+")";case"hex":return this.toHex(a);case"alias":return e=this.toAlias(),e===!1?this.toString(a,this.getValidFallbackFormat()):d&&!(e in b.webColors)&&e in this.predefinedColors?this.predefinedColors[e]:e;default:return e}},stringParsers:[{re:/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/,format:"rgb",parse:function(a){return[a[1],a[2],a[3],1]}},{re:/rgb\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"rgb",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],1]}},{re:/rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/hsl\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"hsl",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/hsla\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"hsla",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,format:"hex",parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),1]}},{re:/#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,format:"hex",parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16),1]}}],colorNameToHex:function(a){return"undefined"!=typeof this.colors[a.toLowerCase()]&&this.colors[a.toLowerCase()]}};var c={horizontal:!1,inline:!1,color:!1,format:!1,input:"input",container:!1,component:".add-on, .input-group-prepend, .input-group-append",fallbackColor:!1,fallbackFormat:"hex",hexNumberSignPrefix:!0,sliders:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setHue"},alpha:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setAlpha"}},slidersHorz:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:100,maxTop:0,callLeft:"setHue",callTop:!1},alpha:{maxLeft:100,maxTop:0,callLeft:"setAlpha",callTop:!1}},template:'<div class="colorpicker dropdown-menu"><div class="colorpicker-saturation"><i><b></b></i></div><div class="colorpicker-hue"><i></i></div><div class="colorpicker-alpha"><i></i></div><div class="colorpicker-color"><div /></div><div class="colorpicker-selectors"></div></div>',align:"right",customClass:null,colorSelectors:null},d=function(b,d){this.element=a(b).addClass("colorpicker-element"),this.options=a.extend(!0,{},c,this.element.data(),d),this.component=this.options.component,this.component=this.component!==!1&&this.element.find(this.component),this.component&&0===this.component.length&&(this.component=!1),this.container=this.options.container===!0?this.element:this.options.container,this.container=this.container!==!1&&a(this.container),this.input=this.element.is("input")?this.element:!!this.options.input&&this.element.find(this.options.input),this.input&&0===this.input.length&&(this.input=!1),this.color=this.createColor(this.options.color!==!1?this.options.color:this.getValue()),this.format=this.options.format!==!1?this.options.format:this.color.origFormat,this.options.color!==!1&&(this.updateInput(this.color),this.updateData(this.color)),this.disabled=!1;var e=this.picker=a(this.options.template);if(this.options.customClass&&e.addClass(this.options.customClass),this.options.inline?e.addClass("colorpicker-inline colorpicker-visible"):e.addClass("colorpicker-hidden"),this.options.horizontal&&e.addClass("colorpicker-horizontal"),["rgba","hsla","alias"].indexOf(this.format)===-1&&this.options.format!==!1&&"transparent"!==this.getValue()||e.addClass("colorpicker-with-alpha"),"right"===this.options.align&&e.addClass("colorpicker-right"),this.options.inline===!0&&e.addClass("colorpicker-no-arrow"),this.options.colorSelectors){var f=this,g=f.picker.find(".colorpicker-selectors");g.length>0&&(a.each(this.options.colorSelectors,function(b,c){var d=a("<i />").addClass("colorpicker-selectors-color").css("background-color",c).data("class",b).data("alias",b);d.on("mousedown.colorpicker touchstart.colorpicker",function(b){b.preventDefault(),f.setValue("alias"===f.format?a(this).data("alias"):a(this).css("background-color"))}),g.append(d)}),g.show().addClass("colorpicker-visible"))}e.on("mousedown.colorpicker touchstart.colorpicker",a.proxy(function(a){a.target===a.currentTarget&&a.preventDefault()},this)),e.find(".colorpicker-saturation, .colorpicker-hue, .colorpicker-alpha").on("mousedown.colorpicker touchstart.colorpicker",a.proxy(this.mousedown,this)),e.appendTo(this.container?this.container:a("body")),this.input!==!1&&(this.input.on({"keyup.colorpicker":a.proxy(this.keyup,this)}),this.input.on({"change.colorpicker":a.proxy(this.change,this)}),this.component===!1&&this.element.on({"focus.colorpicker":a.proxy(this.show,this)}),this.options.inline===!1&&this.element.on({"focusout.colorpicker":a.proxy(this.hide,this)})),this.component!==!1&&this.component.on({"click.colorpicker":a.proxy(this.show,this)}),this.input===!1&&this.component===!1&&this.element.on({"click.colorpicker":a.proxy(this.show,this)}),this.input!==!1&&this.component!==!1&&"color"===this.input.attr("type")&&this.input.on({"click.colorpicker":a.proxy(this.show,this),"focus.colorpicker":a.proxy(this.show,this)}),this.update(),a(a.proxy(function(){this.element.trigger("create")},this))};d.Color=b,d.prototype={constructor:d,destroy:function(){this.picker.remove(),this.element.removeData("colorpicker","color").off(".colorpicker"),this.input!==!1&&this.input.off(".colorpicker"),this.component!==!1&&this.component.off(".colorpicker"),this.element.removeClass("colorpicker-element"),this.element.trigger({type:"destroy"})},reposition:function(){if(this.options.inline!==!1||this.options.container)return!1;var a=this.container&&this.container[0]!==window.document.body?"position":"offset",b=this.component||this.element,c=b[a]();"right"===this.options.align&&(c.left-=this.picker.outerWidth()-b.outerWidth()),this.picker.css({top:c.top+b.outerHeight(),left:c.left})},show:function(b){this.isDisabled()||(this.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden"),this.reposition(),a(window).on("resize.colorpicker",a.proxy(this.reposition,this)),!b||this.hasInput()&&"color"!==this.input.attr("type")||b.stopPropagation&&b.preventDefault&&(b.stopPropagation(),b.preventDefault()),!this.component&&this.input||this.options.inline!==!1||a(window.document).on({"mousedown.colorpicker":a.proxy(this.hide,this)}),this.element.trigger({type:"showPicker",color:this.color}))},hide:function(b){return("undefined"==typeof b||!b.target||!(a(b.currentTarget).parents(".colorpicker").length>0||a(b.target).parents(".colorpicker").length>0))&&(this.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible"),a(window).off("resize.colorpicker",this.reposition),a(window.document).off({"mousedown.colorpicker":this.hide}),this.update(),void this.element.trigger({type:"hidePicker",color:this.color}))},updateData:function(a){return a=a||this.color.toString(!1,this.format),this.element.data("color",a),a},updateInput:function(a){return a=a||this.color.toString(!1,this.format),this.input!==!1&&(this.input.prop("value",a),this.input.trigger("change")),a},updatePicker:function(a){"undefined"!=typeof a&&(this.color=this.createColor(a));var b=this.options.horizontal===!1?this.options.sliders:this.options.slidersHorz,c=this.picker.find("i");if(0!==c.length)return this.options.horizontal===!1?(b=this.options.sliders,c.eq(1).css("top",b.hue.maxTop*(1-this.color.value.h)).end().eq(2).css("top",b.alpha.maxTop*(1-this.color.value.a))):(b=this.options.slidersHorz,c.eq(1).css("left",b.hue.maxLeft*(1-this.color.value.h)).end().eq(2).css("left",b.alpha.maxLeft*(1-this.color.value.a))),c.eq(0).css({top:b.saturation.maxTop-this.color.value.b*b.saturation.maxTop,left:this.color.value.s*b.saturation.maxLeft}),this.picker.find(".colorpicker-saturation").css("backgroundColor",this.color.toHex(!0,this.color.value.h,1,1,1)),this.picker.find(".colorpicker-alpha").css("backgroundColor",this.color.toHex(!0)),this.picker.find(".colorpicker-color, .colorpicker-color div").css("backgroundColor",this.color.toString(!0,this.format)),a},updateComponent:function(a){var b;if(b="undefined"!=typeof a?this.createColor(a):this.color,this.component!==!1){var c=this.component.find("i").eq(0);c.length>0?c.css({backgroundColor:b.toString(!0,this.format)}):this.component.css({backgroundColor:b.toString(!0,this.format)})}return b.toString(!1,this.format)},update:function(a){var b;return this.getValue(!1)===!1&&a!==!0||(b=this.updateComponent(),this.updateInput(b),this.updateData(b),this.updatePicker()),b},setValue:function(a){this.color=this.createColor(a),this.update(!0),this.element.trigger({type:"changeColor",color:this.color,value:a})},createColor:function(a){return new b(a?a:null,this.options.colorSelectors,this.options.fallbackColor?this.options.fallbackColor:this.color,this.options.fallbackFormat,this.options.hexNumberSignPrefix)},getValue:function(a){a="undefined"==typeof a?this.options.fallbackColor:a;var b;return b=this.hasInput()?this.input.val():this.element.data("color"),void 0!==b&&""!==b&&null!==b||(b=a),b},hasInput:function(){return this.input!==!1},isDisabled:function(){return this.disabled},disable:function(){return this.hasInput()&&this.input.prop("disabled",!0),this.disabled=!0,this.element.trigger({type:"disable",color:this.color,value:this.getValue()}),!0},enable:function(){return this.hasInput()&&this.input.prop("disabled",!1),this.disabled=!1,this.element.trigger({type:"enable",color:this.color,value:this.getValue()}),!0},currentSlider:null,mousePointer:{left:0,top:0},mousedown:function(b){!b.pageX&&!b.pageY&&b.originalEvent&&b.originalEvent.touches&&(b.pageX=b.originalEvent.touches[0].pageX,b.pageY=b.originalEvent.touches[0].pageY),b.stopPropagation(),b.preventDefault();var c=a(b.target),d=c.closest("div"),e=this.options.horizontal?this.options.slidersHorz:this.options.sliders;if(!d.is(".colorpicker")){if(d.is(".colorpicker-saturation"))this.currentSlider=a.extend({},e.saturation);else if(d.is(".colorpicker-hue"))this.currentSlider=a.extend({},e.hue);else{if(!d.is(".colorpicker-alpha"))return!1;this.currentSlider=a.extend({},e.alpha)}var f=d.offset();this.currentSlider.guide=d.find("i")[0].style,this.currentSlider.left=b.pageX-f.left,this.currentSlider.top=b.pageY-f.top,this.mousePointer={left:b.pageX,top:b.pageY},a(window.document).on({"mousemove.colorpicker":a.proxy(this.mousemove,this),"touchmove.colorpicker":a.proxy(this.mousemove,this),"mouseup.colorpicker":a.proxy(this.mouseup,this),"touchend.colorpicker":a.proxy(this.mouseup,this)}).trigger("mousemove")}return!1},mousemove:function(a){!a.pageX&&!a.pageY&&a.originalEvent&&a.originalEvent.touches&&(a.pageX=a.originalEvent.touches[0].pageX,a.pageY=a.originalEvent.touches[0].pageY),a.stopPropagation(),a.preventDefault();var b=Math.max(0,Math.min(this.currentSlider.maxLeft,this.currentSlider.left+((a.pageX||this.mousePointer.left)-this.mousePointer.left))),c=Math.max(0,Math.min(this.currentSlider.maxTop,this.currentSlider.top+((a.pageY||this.mousePointer.top)-this.mousePointer.top)));return this.currentSlider.guide.left=b+"px",this.currentSlider.guide.top=c+"px",this.currentSlider.callLeft&&this.color[this.currentSlider.callLeft].call(this.color,b/this.currentSlider.maxLeft),this.currentSlider.callTop&&this.color[this.currentSlider.callTop].call(this.color,c/this.currentSlider.maxTop),this.options.format!==!1||"setAlpha"!==this.currentSlider.callTop&&"setAlpha"!==this.currentSlider.callLeft||(1!==this.color.value.a?(this.format="rgba",this.color.origFormat="rgba"):(this.format="hex",this.color.origFormat="hex")),this.update(!0),this.element.trigger({type:"changeColor",color:this.color}),!1},mouseup:function(b){return b.stopPropagation(),b.preventDefault(),a(window.document).off({"mousemove.colorpicker":this.mousemove,"touchmove.colorpicker":this.mousemove,"mouseup.colorpicker":this.mouseup,"touchend.colorpicker":this.mouseup}),!1},change:function(a){this.keyup(a)},keyup:function(a){38===a.keyCode?(this.color.value.a<1&&(this.color.value.a=Math.round(100*(this.color.value.a+.01))/100),this.update(!0)):40===a.keyCode?(this.color.value.a>0&&(this.color.value.a=Math.round(100*(this.color.value.a-.01))/100),this.update(!0)):(this.color=this.createColor(this.input.val()),this.color.origFormat&&this.options.format===!1&&(this.format=this.color.origFormat),this.getValue(!1)!==!1&&(this.updateData(),this.updateComponent(),this.updatePicker())),this.element.trigger({type:"changeColor",color:this.color,value:this.input.val()})}},a.colorpicker=d,a.fn.colorpicker=function(b){var c=Array.prototype.slice.call(arguments,1),e=1===this.length,f=null,g=this.each(function(){var e=a(this),g=e.data("colorpicker"),h="object"==typeof b?b:{};g||(g=new d(this,h),e.data("colorpicker",g)),"string"==typeof b?a.isFunction(g[b])?f=g[b].apply(g,c):(c.length&&(g[b]=c[0]),f=g[b]):f=e});return e?f:g},a.fn.colorpicker.constructor=d});
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,91 @@
+div.dt-autofill-handle {
+  position: absolute;
+  height: 8px;
+  width: 8px;
+  z-index: 102;
+  box-sizing: border-box;
+  background: #337ab7;
+  cursor: pointer;
+}
+
+div.dtk-focus-alt div.dt-autofill-handle {
+  background: #ff8b33;
+}
+
+div.dt-autofill-select {
+  position: absolute;
+  z-index: 1001;
+  background-color: #337ab7;
+  background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px);
+}
+div.dt-autofill-select.top, div.dt-autofill-select.bottom {
+  height: 3px;
+  margin-top: -1px;
+}
+div.dt-autofill-select.left, div.dt-autofill-select.right {
+  width: 3px;
+  margin-left: -1px;
+}
+
+div.dt-autofill-list {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 500px;
+  margin-left: -250px;
+  background-color: white;
+  border-radius: 6px;
+  box-shadow: 0 0 5px #555;
+  border: 2px solid #444;
+  z-index: 11;
+  box-sizing: border-box;
+  padding: 1.5em 2em;
+}
+div.dt-autofill-list ul {
+  display: table;
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  width: 100%;
+}
+div.dt-autofill-list ul li {
+  display: table-row;
+}
+div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button {
+  border-bottom: none;
+}
+div.dt-autofill-list ul li:hover {
+  background-color: #f6f6f6;
+}
+div.dt-autofill-list div.dt-autofill-question {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+div.dt-autofill-list div.dt-autofill-question input[type=number] {
+  padding: 6px;
+  width: 30px;
+  margin: -2px 0;
+}
+div.dt-autofill-list div.dt-autofill-button {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+
+div.dt-autofill-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.7);
+  background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  z-index: 10;
+}
+
+div.dt-autofill-list div.dt-autofill-question input[type=number] {
+  padding: 6px;
+  width: 60px;
+  margin: -2px 0;
+}
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;background:#337ab7;cursor:pointer}div.dtk-focus-alt div.dt-autofill-handle{background:#ff8b33}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#337ab7;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:60px;margin:-2px 0}
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap4.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,91 @@
+div.dt-autofill-handle {
+  position: absolute;
+  height: 8px;
+  width: 8px;
+  z-index: 102;
+  box-sizing: border-box;
+  background: #0275d8;
+  cursor: pointer;
+}
+
+div.dtk-focus-alt div.dt-autofill-handle {
+  background: #ff8b33;
+}
+
+div.dt-autofill-select {
+  position: absolute;
+  z-index: 1001;
+  background-color: #0275d8;
+  background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px);
+}
+div.dt-autofill-select.top, div.dt-autofill-select.bottom {
+  height: 3px;
+  margin-top: -1px;
+}
+div.dt-autofill-select.left, div.dt-autofill-select.right {
+  width: 3px;
+  margin-left: -1px;
+}
+
+div.dt-autofill-list {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 500px;
+  margin-left: -250px;
+  background-color: white;
+  border-radius: 6px;
+  box-shadow: 0 0 5px #555;
+  border: 2px solid #444;
+  z-index: 11;
+  box-sizing: border-box;
+  padding: 1.5em 2em;
+}
+div.dt-autofill-list ul {
+  display: table;
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  width: 100%;
+}
+div.dt-autofill-list ul li {
+  display: table-row;
+}
+div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button {
+  border-bottom: none;
+}
+div.dt-autofill-list ul li:hover {
+  background-color: #f6f6f6;
+}
+div.dt-autofill-list div.dt-autofill-question {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+div.dt-autofill-list div.dt-autofill-question input[type=number] {
+  padding: 6px;
+  width: 30px;
+  margin: -2px 0;
+}
+div.dt-autofill-list div.dt-autofill-button {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+
+div.dt-autofill-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.7);
+  background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  z-index: 10;
+}
+
+div.dt-autofill-list div.dt-autofill-question input[type=number] {
+  padding: 6px;
+  width: 60px;
+  margin: -2px 0;
+}
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;background:#0275d8;cursor:pointer}div.dtk-focus-alt div.dt-autofill-handle{background:#ff8b33}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#0275d8;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:60px;margin:-2px 0}
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.dataTables.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,96 @@
+div.dt-autofill-handle {
+  position: absolute;
+  height: 8px;
+  width: 8px;
+  z-index: 102;
+  box-sizing: border-box;
+  background: #3366ff;
+  cursor: pointer;
+}
+
+div.dtk-focus-alt div.dt-autofill-handle {
+  background: #ff8b33;
+}
+
+div.dt-autofill-select {
+  position: absolute;
+  z-index: 1001;
+  background-color: #4989de;
+  background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px);
+}
+div.dt-autofill-select.top, div.dt-autofill-select.bottom {
+  height: 3px;
+  margin-top: -1px;
+}
+div.dt-autofill-select.left, div.dt-autofill-select.right {
+  width: 3px;
+  margin-left: -1px;
+}
+
+div.dt-autofill-list {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 500px;
+  margin-left: -250px;
+  background-color: white;
+  border-radius: 6px;
+  box-shadow: 0 0 5px #555;
+  border: 2px solid #444;
+  z-index: 11;
+  box-sizing: border-box;
+  padding: 1.5em 2em;
+}
+div.dt-autofill-list ul {
+  display: table;
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  width: 100%;
+}
+div.dt-autofill-list ul li {
+  display: table-row;
+}
+div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button {
+  border-bottom: none;
+}
+div.dt-autofill-list ul li:hover {
+  background-color: #f6f6f6;
+}
+div.dt-autofill-list div.dt-autofill-question {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+div.dt-autofill-list div.dt-autofill-question input[type=number] {
+  padding: 6px;
+  width: 30px;
+  margin: -2px 0;
+}
+div.dt-autofill-list div.dt-autofill-button {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+div.dt-autofill-list div.dt-autofill-button button {
+  color: white;
+  margin: 0;
+  padding: 6px 12px;
+  text-align: center;
+  border: 1px solid #2e6da4;
+  background-color: #337ab7;
+  border-radius: 4px;
+  cursor: pointer;
+  vertical-align: middle;
+}
+
+div.dt-autofill-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.7);
+  background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  z-index: 10;
+}
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.dataTables.min.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;background:#3366ff;cursor:pointer}div.dtk-focus-alt div.dt-autofill-handle{background:#ff8b33}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#4989de;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-button button{color:white;margin:0;padding:6px 12px;text-align:center;border:1px solid #2e6da4;background-color:#337ab7;border-radius:4px;cursor:pointer;vertical-align:middle}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.foundation.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,89 @@
+div.dt-autofill-handle {
+  position: absolute;
+  height: 8px;
+  width: 8px;
+  z-index: 102;
+  box-sizing: border-box;
+  background: #008CBA;
+  cursor: pointer;
+}
+
+div.dtk-focus-alt div.dt-autofill-handle {
+  background: #ff8b33;
+}
+
+div.dt-autofill-select {
+  position: absolute;
+  z-index: 1001;
+  background-color: #008CBA;
+  background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px);
+}
+div.dt-autofill-select.top, div.dt-autofill-select.bottom {
+  height: 3px;
+  margin-top: -1px;
+}
+div.dt-autofill-select.left, div.dt-autofill-select.right {
+  width: 3px;
+  margin-left: -1px;
+}
+
+div.dt-autofill-list {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 500px;
+  margin-left: -250px;
+  background-color: white;
+  border-radius: 6px;
+  box-shadow: 0 0 5px #555;
+  border: 2px solid #444;
+  z-index: 11;
+  box-sizing: border-box;
+  padding: 1.5em 2em;
+}
+div.dt-autofill-list ul {
+  display: table;
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  width: 100%;
+}
+div.dt-autofill-list ul li {
+  display: table-row;
+}
+div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button {
+  border-bottom: none;
+}
+div.dt-autofill-list ul li:hover {
+  background-color: #f6f6f6;
+}
+div.dt-autofill-list div.dt-autofill-question {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+div.dt-autofill-list div.dt-autofill-question input[type=number] {
+  padding: 6px;
+  width: 30px;
+  margin: -2px 0;
+}
+div.dt-autofill-list div.dt-autofill-button {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+
+div.dt-autofill-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.7);
+  background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  z-index: 10;
+}
+
+div.dt-autofill-list button {
+  margin: 0;
+}
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.foundation.min.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;background:#008CBA;cursor:pointer}div.dtk-focus-alt div.dt-autofill-handle{background:#ff8b33}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#008CBA;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}div.dt-autofill-list button{margin:0}
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.jqueryui.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,89 @@
+div.dt-autofill-handle {
+  position: absolute;
+  height: 8px;
+  width: 8px;
+  z-index: 102;
+  box-sizing: border-box;
+  background: #3366ff;
+  cursor: pointer;
+}
+
+div.dtk-focus-alt div.dt-autofill-handle {
+  background: #ff8b33;
+}
+
+div.dt-autofill-select {
+  position: absolute;
+  z-index: 1001;
+  background-color: #4989de;
+  background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px);
+}
+div.dt-autofill-select.top, div.dt-autofill-select.bottom {
+  height: 3px;
+  margin-top: -1px;
+}
+div.dt-autofill-select.left, div.dt-autofill-select.right {
+  width: 3px;
+  margin-left: -1px;
+}
+
+div.dt-autofill-list {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 500px;
+  margin-left: -250px;
+  background-color: white;
+  border-radius: 6px;
+  box-shadow: 0 0 5px #555;
+  border: 2px solid #444;
+  z-index: 11;
+  box-sizing: border-box;
+  padding: 1.5em 2em;
+}
+div.dt-autofill-list ul {
+  display: table;
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  width: 100%;
+}
+div.dt-autofill-list ul li {
+  display: table-row;
+}
+div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button {
+  border-bottom: none;
+}
+div.dt-autofill-list ul li:hover {
+  background-color: #f6f6f6;
+}
+div.dt-autofill-list div.dt-autofill-question {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+div.dt-autofill-list div.dt-autofill-question input[type=number] {
+  padding: 6px;
+  width: 30px;
+  margin: -2px 0;
+}
+div.dt-autofill-list div.dt-autofill-button {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+
+div.dt-autofill-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.7);
+  background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  z-index: 10;
+}
+
+div.dt-autofill-list button {
+  padding: 0.35em 1em;
+}
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;background:#3366ff;cursor:pointer}div.dtk-focus-alt div.dt-autofill-handle{background:#ff8b33}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#4989de;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}div.dt-autofill-list button{padding:0.35em 1em}
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.semanticui.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,85 @@
+div.dt-autofill-handle {
+  position: absolute;
+  height: 8px;
+  width: 8px;
+  z-index: 102;
+  box-sizing: border-box;
+  background: #888;
+  cursor: pointer;
+}
+
+div.dtk-focus-alt div.dt-autofill-handle {
+  background: #ff8b33;
+}
+
+div.dt-autofill-select {
+  position: absolute;
+  z-index: 1001;
+  background-color: #888;
+  background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px);
+}
+div.dt-autofill-select.top, div.dt-autofill-select.bottom {
+  height: 3px;
+  margin-top: -1px;
+}
+div.dt-autofill-select.left, div.dt-autofill-select.right {
+  width: 3px;
+  margin-left: -1px;
+}
+
+div.dt-autofill-list {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 500px;
+  margin-left: -250px;
+  background-color: white;
+  border-radius: 6px;
+  box-shadow: 0 0 5px #555;
+  border: 2px solid #444;
+  z-index: 11;
+  box-sizing: border-box;
+  padding: 1.5em 2em;
+}
+div.dt-autofill-list ul {
+  display: table;
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  width: 100%;
+}
+div.dt-autofill-list ul li {
+  display: table-row;
+}
+div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button {
+  border-bottom: none;
+}
+div.dt-autofill-list ul li:hover {
+  background-color: #f6f6f6;
+}
+div.dt-autofill-list div.dt-autofill-question {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+div.dt-autofill-list div.dt-autofill-question input[type=number] {
+  padding: 6px;
+  width: 30px;
+  margin: -2px 0;
+}
+div.dt-autofill-list div.dt-autofill-button {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+
+div.dt-autofill-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.7);
+  background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  z-index: 10;
+}
Index: public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.semanticui.min.css
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/css/autoFill.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;background:#888;cursor:pointer}div.dtk-focus-alt div.dt-autofill-handle{background:#ff8b33}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#888;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}
Index: public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,43 @@
+/*! Bootstrap integration for DataTables' AutoFill
+ * ©2015 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs', 'datatables.net-autofill'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.AutoFill ) {
+				require('datatables.net-autofill')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+DataTable.AutoFill.classes.btn = 'btn btn-primary';
+
+
+return DataTable;
+}));
Index: public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap integration for DataTables' AutoFill
+ ©2015 SpryMedia Ltd - datatables.net/license
+*/
+(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-autofill"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,c){a||(a=window);c&&c.fn.dataTable||(c=require("datatables.net-bs")(a,c).$);c.fn.dataTable.AutoFill||require("datatables.net-autofill")(a,c);return b(c,a,a.document)}:b(jQuery,window,document)})(function(b,a,c,d){b=b.fn.dataTable;b.AutoFill.classes.btn="btn btn-primary";return b});
Index: public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap4.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,43 @@
+/*! Bootstrap integration for DataTables' AutoFill
+ * ©2015 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-autofill'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.AutoFill ) {
+				require('datatables.net-autofill')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+DataTable.AutoFill.classes.btn = 'btn btn-primary';
+
+
+return DataTable;
+}));
Index: public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap integration for DataTables' AutoFill
+ ©2015 SpryMedia Ltd - datatables.net/license
+*/
+(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-autofill"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,c){a||(a=window);c&&c.fn.dataTable||(c=require("datatables.net-bs4")(a,c).$);c.fn.dataTable.AutoFill||require("datatables.net-autofill")(a,c);return b(c,a,a.document)}:b(jQuery,window,document)})(function(b,a,c,d){b=b.fn.dataTable;b.AutoFill.classes.btn="btn btn-primary";return b});
Index: public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.foundation.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,43 @@
+/*! Foundation integration for DataTables' AutoFill
+ * ©2015 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-zf', 'datatables.net-autofill'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-zf')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.AutoFill ) {
+				require('datatables.net-autofill')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+DataTable.AutoFill.classes.btn = 'button tiny';
+
+
+return DataTable;
+}));
Index: public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.foundation.min.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Foundation integration for DataTables' AutoFill
+ ©2015 SpryMedia Ltd - datatables.net/license
+*/
+(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-autofill"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,c){a||(a=window);c&&c.fn.dataTable||(c=require("datatables.net-zf")(a,c).$);c.fn.dataTable.AutoFill||require("datatables.net-autofill")(a,c);return b(c,a,a.document)}:b(jQuery,window,document)})(function(b,a,c,d){b=b.fn.dataTable;b.AutoFill.classes.btn="button tiny";return b});
Index: public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.jqueryui.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,43 @@
+/*! jQuery UI integration for DataTables' AutoFill
+ * ©2015 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-jqui', 'datatables.net-autofill'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-jqui')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.AutoFill ) {
+				require('datatables.net-autofill')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+DataTable.AutoFill.classes.btn = 'ui-button ui-state-default ui-corner-all';
+
+
+return DataTable;
+}));
Index: public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ jQuery UI integration for DataTables' AutoFill
+ ©2015 SpryMedia Ltd - datatables.net/license
+*/
+(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-autofill"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,c){a||(a=window);c&&c.fn.dataTable||(c=require("datatables.net-jqui")(a,c).$);c.fn.dataTable.AutoFill||require("datatables.net-autofill")(a,c);return b(c,a,a.document)}:b(jQuery,window,document)})(function(b,a,c,d){b=b.fn.dataTable;b.AutoFill.classes.btn="ui-button ui-state-default ui-corner-all";
+return b});
Index: public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.semanticui.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,43 @@
+/*! Bootstrap integration for DataTables' AutoFill
+ * ©2015 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-se', 'datatables.net-autofill'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-se')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.AutoFill ) {
+				require('datatables.net-autofill')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+DataTable.AutoFill.classes.btn = 'ui button';
+
+
+return DataTable;
+}));
Index: public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.semanticui.min.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/autoFill.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap integration for DataTables' AutoFill
+ ©2015 SpryMedia Ltd - datatables.net/license
+*/
+(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-autofill"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,c){a||(a=window);c&&c.fn.dataTable||(c=require("datatables.net-se")(a,c).$);c.fn.dataTable.AutoFill||require("datatables.net-autofill")(a,c);return b(c,a,a.document)}:b(jQuery,window,document)})(function(b,a,c,d){b=b.fn.dataTable;b.AutoFill.classes.btn="ui button";return b});
Index: public/vendors/dataTable/AutoFill-2.3.4/js/dataTables.autoFill.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/dataTables.autoFill.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/dataTables.autoFill.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1212 @@
+/*! AutoFill 2.3.4
+ * ©2008-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     AutoFill
+ * @description Add Excel like click and drag auto-fill options to DataTables
+ * @version     2.3.4
+ * @file        dataTables.autoFill.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var _instance = 0;
+
+/** 
+ * AutoFill provides Excel like auto-fill features for a DataTable
+ *
+ * @class AutoFill
+ * @constructor
+ * @param {object} oTD DataTables settings object
+ * @param {object} oConfig Configuration object for AutoFill
+ */
+var AutoFill = function( dt, opts )
+{
+	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) {
+		throw( "Warning: AutoFill requires DataTables 1.10.8 or greater");
+	}
+
+	// User and defaults configuration object
+	this.c = $.extend( true, {},
+		DataTable.defaults.autoFill,
+		AutoFill.defaults,
+		opts
+	);
+
+	/**
+	 * @namespace Settings object which contains customisable information for AutoFill instance
+	 */
+	this.s = {
+		/** @type {DataTable.Api} DataTables' API instance */
+		dt: new DataTable.Api( dt ),
+
+		/** @type {String} Unique namespace for events attached to the document */
+		namespace: '.autoFill'+(_instance++),
+
+		/** @type {Object} Cached dimension information for use in the mouse move event handler */
+		scroll: {},
+
+		/** @type {integer} Interval object used for smooth scrolling */
+		scrollInterval: null,
+
+		handle: {
+			height: 0,
+			width: 0
+		},
+
+		/**
+		 * Enabled setting
+		 * @type {Boolean}
+		 */
+		enabled: false
+	};
+
+
+	/**
+	 * @namespace Common and useful DOM elements for the class instance
+	 */
+	this.dom = {
+		/** @type {jQuery} AutoFill handle */
+		handle: $('<div class="dt-autofill-handle"/>'),
+
+		/**
+		 * @type {Object} Selected cells outline - Need to use 4 elements,
+		 *   otherwise the mouse over if you back into the selected rectangle
+		 *   will be over that element, rather than the cells!
+		 */
+		select: {
+			top:    $('<div class="dt-autofill-select top"/>'),
+			right:  $('<div class="dt-autofill-select right"/>'),
+			bottom: $('<div class="dt-autofill-select bottom"/>'),
+			left:   $('<div class="dt-autofill-select left"/>')
+		},
+
+		/** @type {jQuery} Fill type chooser background */
+		background: $('<div class="dt-autofill-background"/>'),
+
+		/** @type {jQuery} Fill type chooser */
+		list: $('<div class="dt-autofill-list">'+this.s.dt.i18n('autoFill.info', '')+'<ul/></div>'),
+
+		/** @type {jQuery} DataTables scrolling container */
+		dtScroll: null,
+
+		/** @type {jQuery} Offset parent element */
+		offsetParent: null
+	};
+
+
+	/* Constructor logic */
+	this._constructor();
+};
+
+
+
+$.extend( AutoFill.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods (exposed via the DataTables API below)
+	 */
+	enabled: function ()
+	{
+		return this.s.enabled;
+	},
+
+
+	enable: function ( flag )
+	{
+		var that = this;
+
+		if ( flag === false ) {
+			return this.disable();
+		}
+
+		this.s.enabled = true;
+
+		this._focusListener();
+
+		this.dom.handle.on( 'mousedown', function (e) {
+			that._mousedown( e );
+			return false;
+		} );
+
+		return this;
+	},
+
+	disable: function ()
+	{
+		this.s.enabled = false;
+
+		this._focusListenerRemove();
+
+		return this;
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Initialise the RowReorder instance
+	 *
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var dtScroll = $('div.dataTables_scrollBody', this.s.dt.table().container());
+
+		// Make the instance accessible to the API
+		dt.settings()[0].autoFill = this;
+
+		if ( dtScroll.length ) {
+			this.dom.dtScroll = dtScroll;
+
+			// Need to scroll container to be the offset parent
+			if ( dtScroll.css('position') === 'static' ) {
+				dtScroll.css( 'position', 'relative' );
+			}
+		}
+
+		if ( this.c.enable !== false ) {
+			this.enable();
+		}
+
+		dt.on( 'destroy.autoFill', function () {
+			that._focusListenerRemove();
+		} );
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Display the AutoFill drag handle by appending it to a table cell. This
+	 * is the opposite of the _detach method.
+	 *
+	 * @param  {node} node TD/TH cell to insert the handle into
+	 * @private
+	 */
+	_attach: function ( node )
+	{
+		var dt = this.s.dt;
+		var idx = dt.cell( node ).index();
+		var handle = this.dom.handle;
+		var handleDim = this.s.handle;
+
+		if ( ! idx || dt.columns( this.c.columns ).indexes().indexOf( idx.column ) === -1 ) {
+			this._detach();
+			return;
+		}
+
+		if ( ! this.dom.offsetParent ) {
+			// We attach to the table's offset parent
+			this.dom.offsetParent = $( dt.table().node() ).offsetParent();
+		}
+
+		if ( ! handleDim.height || ! handleDim.width ) {
+			// Append to document so we can get its size. Not expecting it to
+			// change during the life time of the page
+			handle.appendTo( 'body' );
+			handleDim.height = handle.outerHeight();
+			handleDim.width = handle.outerWidth();
+		}
+
+		// Might need to go through multiple offset parents
+		var offset = this._getPosition( node, this.dom.offsetParent );
+
+		this.dom.attachedTo = node;
+		handle
+			.css( {
+				top: offset.top + node.offsetHeight - handleDim.height,
+				left: offset.left + node.offsetWidth - handleDim.width
+			} )
+			.appendTo( this.dom.offsetParent );
+	},
+
+
+	/**
+	 * Determine can the fill type should be. This can be automatic, or ask the
+	 * end user.
+	 *
+	 * @param {array} cells Information about the selected cells from the key
+	 *     up function
+	 * @private
+	 */
+	_actionSelector: function ( cells )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var actions = AutoFill.actions;
+		var available = [];
+
+		// "Ask" each plug-in if it wants to handle this data
+		$.each( actions, function ( key, action ) {
+			if ( action.available( dt, cells ) ) {
+				available.push( key );
+			}
+		} );
+
+		if ( available.length === 1 && this.c.alwaysAsk === false ) {
+			// Only one action available - enact it immediately
+			var result = actions[ available[0] ].execute( dt, cells );
+			this._update( result, cells );
+		}
+		else {
+			// Multiple actions available - ask the end user what they want to do
+			var list = this.dom.list.children('ul').empty();
+
+			// Add a cancel option
+			available.push( 'cancel' );
+
+			$.each( available, function ( i, name ) {
+				list.append( $('<li/>')
+					.append(
+						'<div class="dt-autofill-question">'+
+							actions[ name ].option( dt, cells )+
+						'<div>'
+					)
+					.append( $('<div class="dt-autofill-button">' )
+						.append( $('<button class="'+AutoFill.classes.btn+'">'+dt.i18n('autoFill.button', '&gt;')+'</button>')
+							.on( 'click', function () {
+								var result = actions[ name ].execute(
+									dt, cells, $(this).closest('li')
+								);
+								that._update( result, cells );
+
+								that.dom.background.remove();
+								that.dom.list.remove();
+							} )
+						)
+					)
+				);
+			} );
+
+			this.dom.background.appendTo( 'body' );
+			this.dom.list.appendTo( 'body' );
+
+			this.dom.list.css( 'margin-top', this.dom.list.outerHeight()/2 * -1 );
+		}
+	},
+
+
+	/**
+	 * Remove the AutoFill handle from the document
+	 *
+	 * @private
+	 */
+	_detach: function ()
+	{
+		this.dom.attachedTo = null;
+		this.dom.handle.detach();
+	},
+
+
+	/**
+	 * Draw the selection outline by calculating the range between the start
+	 * and end cells, then placing the highlighting elements to draw a rectangle
+	 *
+	 * @param  {node}   target End cell
+	 * @param  {object} e      Originating event
+	 * @private
+	 */
+	_drawSelection: function ( target, e )
+	{
+		// Calculate boundary for start cell to this one
+		var dt = this.s.dt;
+		var start = this.s.start;
+		var startCell = $(this.dom.start);
+		var end = {
+			row: this.c.vertical ?
+				dt.rows( { page: 'current' } ).nodes().indexOf( target.parentNode ) :
+				start.row,
+			column: this.c.horizontal ?
+				$(target).index() :
+				start.column
+		};
+		var colIndx = dt.column.index( 'toData', end.column );
+		var endRow =  dt.row( ':eq('+end.row+')', { page: 'current' } ); // Workaround for M581
+		var endCell = $( dt.cell( endRow.index(), colIndx ).node() );
+
+		// Be sure that is a DataTables controlled cell
+		if ( ! dt.cell( endCell ).any() ) {
+			return;
+		}
+
+		// if target is not in the columns available - do nothing
+		if ( dt.columns( this.c.columns ).indexes().indexOf( colIndx ) === -1 ) {
+			return;
+		}
+
+		this.s.end = end;
+
+		var top, bottom, left, right, height, width;
+
+		top    = start.row    < end.row    ? startCell : endCell;
+		bottom = start.row    < end.row    ? endCell   : startCell;
+		left   = start.column < end.column ? startCell : endCell;
+		right  = start.column < end.column ? endCell   : startCell;
+
+		top    = this._getPosition( top.get(0) ).top;
+		left   = this._getPosition( left.get(0) ).left;
+		height = this._getPosition( bottom.get(0) ).top + bottom.outerHeight() - top;
+		width  = this._getPosition( right.get(0) ).left + right.outerWidth() - left;
+
+		var select = this.dom.select;
+		select.top.css( {
+			top: top,
+			left: left,
+			width: width
+		} );
+
+		select.left.css( {
+			top: top,
+			left: left,
+			height: height
+		} );
+
+		select.bottom.css( {
+			top: top + height,
+			left: left,
+			width: width
+		} );
+
+		select.right.css( {
+			top: top,
+			left: left + width,
+			height: height
+		} );
+	},
+
+
+	/**
+	 * Use the Editor API to perform an update based on the new data for the
+	 * cells
+	 *
+	 * @param {array} cells Information about the selected cells from the key
+	 *     up function
+	 * @private
+	 */
+	_editor: function ( cells )
+	{
+		var dt = this.s.dt;
+		var editor = this.c.editor;
+
+		if ( ! editor ) {
+			return;
+		}
+
+		// Build the object structure for Editor's multi-row editing
+		var idValues = {};
+		var nodes = [];
+		var fields = editor.fields();
+
+		for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+			for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+				var cell = cells[i][j];
+
+				// Determine the field name for the cell being edited
+				var col = dt.settings()[0].aoColumns[ cell.index.column ];
+				var fieldName = col.editField;
+
+				if ( fieldName === undefined ) {
+					var dataSrc = col.mData;
+
+					// dataSrc is the `field.data` property, but we need to set
+					// using the field name, so we need to translate from the
+					// data to the name
+					for ( var k=0, ken=fields.length ; k<ken ; k++ ) {
+						var field = editor.field( fields[k] );
+
+						if ( field.dataSrc() === dataSrc ) {
+							fieldName = field.name();
+							break;
+						}
+					}
+				}
+
+				if ( ! fieldName ) {
+					throw 'Could not automatically determine field data. '+
+						'Please see https://datatables.net/tn/11';
+				}
+
+				if ( ! idValues[ fieldName ] ) {
+					idValues[ fieldName ] = {};
+				}
+
+				var id = dt.row( cell.index.row ).id();
+				idValues[ fieldName ][ id ] = cell.set;
+
+				// Keep a list of cells so we can activate the bubble editing
+				// with them
+				nodes.push( cell.index );
+			}
+		}
+
+		// Perform the edit using bubble editing as it allows us to specify
+		// the cells to be edited, rather than using full rows
+		editor
+			.bubble( nodes, false )
+			.multiSet( idValues )
+			.submit();
+	},
+
+
+	/**
+	 * Emit an event on the DataTable for listeners
+	 *
+	 * @param  {string} name Event name
+	 * @param  {array} args Event arguments
+	 * @private
+	 */
+	_emitEvent: function ( name, args )
+	{
+		this.s.dt.iterator( 'table', function ( ctx, i ) {
+			$(ctx.nTable).triggerHandler( name+'.dt', args );
+		} );
+	},
+
+
+	/**
+	 * Attach suitable listeners (based on the configuration) that will attach
+	 * and detach the AutoFill handle in the document.
+	 *
+	 * @private
+	 */
+	_focusListener: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var namespace = this.s.namespace;
+		var focus = this.c.focus !== null ?
+			this.c.focus :
+			dt.init().keys || dt.settings()[0].keytable ?
+				'focus' :
+				'hover';
+
+		// All event listeners attached here are removed in the `destroy`
+		// callback in the constructor
+		if ( focus === 'focus' ) {
+			dt
+				.on( 'key-focus.autoFill', function ( e, dt, cell ) {
+					that._attach( cell.node() );
+				} )
+				.on( 'key-blur.autoFill', function ( e, dt, cell ) {
+					that._detach();
+				} );
+		}
+		else if ( focus === 'click' ) {
+			$(dt.table().body()).on( 'click'+namespace, 'td, th', function (e) {
+				that._attach( this );
+			} );
+
+			$(document.body).on( 'click'+namespace, function (e) {
+				if ( ! $(e.target).parents().filter( dt.table().body() ).length ) {
+					that._detach();
+				}
+			} );
+		}
+		else {
+			$(dt.table().body())
+				.on( 'mouseenter'+namespace, 'td, th', function (e) {
+					that._attach( this );
+				} )
+				.on( 'mouseleave'+namespace, function (e) {
+					if ( $(e.relatedTarget).hasClass('dt-autofill-handle') ) {
+						return;
+					}
+
+					that._detach();
+				} );
+		}
+	},
+
+
+	_focusListenerRemove: function ()
+	{
+		var dt = this.s.dt;
+
+		dt.off( '.autoFill' );
+		$(dt.table().body()).off( this.s.namespace );
+		$(document.body).off( this.s.namespace );
+	},
+
+
+	/**
+	 * Get the position of a node, relative to another, including any scrolling
+	 * offsets.
+	 * @param  {Node}   node         Node to get the position of
+	 * @param  {jQuery} targetParent Node to use as the parent
+	 * @return {object}              Offset calculation
+	 * @private
+	 */
+	_getPosition: function ( node, targetParent )
+	{
+		var
+			currNode = node,
+			currOffsetParent,
+			top = 0,
+			left = 0;
+
+		if ( ! targetParent ) {
+			targetParent = $( $( this.s.dt.table().node() )[0].offsetParent );
+		}
+
+		do {
+			// Don't use jQuery().position() the behaviour changes between 1.x and 3.x for
+			// tables
+			var positionTop = currNode.offsetTop;
+			var positionLeft = currNode.offsetLeft;
+
+			// jQuery doesn't give a `table` as the offset parent oddly, so use DOM directly
+			currOffsetParent = $( currNode.offsetParent );
+
+			top += positionTop + parseInt( currOffsetParent.css('border-top-width') ) * 1;
+			left += positionLeft + parseInt( currOffsetParent.css('border-left-width') ) * 1;
+
+			// Emergency fall back. Shouldn't happen, but just in case!
+			if ( currNode.nodeName.toLowerCase() === 'body' ) {
+				break;
+			}
+
+			currNode = currOffsetParent.get(0); // for next loop
+		}
+		while ( currOffsetParent.get(0) !== targetParent.get(0) )
+
+		return {
+			top: top,
+			left: left
+		};
+	},
+
+
+	/**
+	 * Start mouse drag - selects the start cell
+	 *
+	 * @param  {object} e Mouse down event
+	 * @private
+	 */
+	_mousedown: function ( e )
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		this.dom.start = this.dom.attachedTo;
+		this.s.start = {
+			row: dt.rows( { page: 'current' } ).nodes().indexOf( $(this.dom.start).parent()[0] ),
+			column: $(this.dom.start).index()
+		};
+
+		$(document.body)
+			.on( 'mousemove.autoFill', function (e) {
+				that._mousemove( e );
+			} )
+			.on( 'mouseup.autoFill', function (e) {
+				that._mouseup( e );
+			} );
+
+		var select = this.dom.select;
+		var offsetParent = $( dt.table().node() ).offsetParent();
+		select.top.appendTo( offsetParent );
+		select.left.appendTo( offsetParent );
+		select.right.appendTo( offsetParent );
+		select.bottom.appendTo( offsetParent );
+
+		this._drawSelection( this.dom.start, e );
+
+		this.dom.handle.css( 'display', 'none' );
+
+		// Cache scrolling information so mouse move doesn't need to read.
+		// This assumes that the window and DT scroller will not change size
+		// during an AutoFill drag, which I think is a fair assumption
+		var scrollWrapper = this.dom.dtScroll;
+		this.s.scroll = {
+			windowHeight: $(window).height(),
+			windowWidth:  $(window).width(),
+			dtTop:        scrollWrapper ? scrollWrapper.offset().top : null,
+			dtLeft:       scrollWrapper ? scrollWrapper.offset().left : null,
+			dtHeight:     scrollWrapper ? scrollWrapper.outerHeight() : null,
+			dtWidth:      scrollWrapper ? scrollWrapper.outerWidth() : null
+		};
+	},
+
+
+	/**
+	 * Mouse drag - selects the end cell and update the selection display for
+	 * the end user
+	 *
+	 * @param  {object} e Mouse move event
+	 * @private
+	 */
+	_mousemove: function ( e )
+	{	
+		var that = this;
+		var dt = this.s.dt;
+		var name = e.target.nodeName.toLowerCase();
+		if ( name !== 'td' && name !== 'th' ) {
+			return;
+		}
+
+		this._drawSelection( e.target, e );
+		this._shiftScroll( e );
+	},
+
+
+	/**
+	 * End mouse drag - perform the update actions
+	 *
+	 * @param  {object} e Mouse up event
+	 * @private
+	 */
+	_mouseup: function ( e )
+	{
+		$(document.body).off( '.autoFill' );
+
+		var that = this;
+		var dt = this.s.dt;
+		var select = this.dom.select;
+		select.top.remove();
+		select.left.remove();
+		select.right.remove();
+		select.bottom.remove();
+
+		this.dom.handle.css( 'display', 'block' );
+
+		// Display complete - now do something useful with the selection!
+		var start = this.s.start;
+		var end = this.s.end;
+
+		// Haven't selected multiple cells, so nothing to do
+		if ( start.row === end.row && start.column === end.column ) {
+			return;
+		}
+
+		var startDt = dt.cell( ':eq('+start.row+')', start.column+':visible', {page:'current'} );
+
+		// If Editor is active inside this cell (inline editing) we need to wait for Editor to
+		// submit and then we can loop back and trigger the fill.
+		if ( $('div.DTE', startDt.node()).length ) {
+			var editor = dt.editor();
+
+			editor
+				.on( 'submitSuccess.dtaf close.dtaf', function () {
+					editor.off( '.dtaf');
+
+					setTimeout( function () {
+						that._mouseup( e );
+					}, 100 );
+				} )
+				.on( 'submitComplete.dtaf preSubmitCancelled.dtaf close.dtaf', function () {
+					editor.off( '.dtaf');
+				} );
+
+			// Make the current input submit
+			editor.submit();
+
+			return;
+		}
+
+		// Build a matrix representation of the selected rows
+		var rows       = this._range( start.row, end.row );
+		var columns    = this._range( start.column, end.column );
+		var selected   = [];
+		var dtSettings = dt.settings()[0];
+		var dtColumns  = dtSettings.aoColumns;
+		var enabledColumns = dt.columns( this.c.columns ).indexes();
+
+		// Can't use Array.prototype.map as IE8 doesn't support it
+		// Can't use $.map as jQuery flattens 2D arrays
+		// Need to use a good old fashioned for loop
+		for ( var rowIdx=0 ; rowIdx<rows.length ; rowIdx++ ) {
+			selected.push(
+				$.map( columns, function (column) {
+					var row = dt.row( ':eq('+rows[rowIdx]+')', {page:'current'} ); // Workaround for M581
+					var cell = dt.cell( row.index(), column+':visible' );
+					var data = cell.data();
+					var cellIndex = cell.index();
+					var editField = dtColumns[ cellIndex.column ].editField;
+
+					if ( editField !== undefined ) {
+						data = dtSettings.oApi._fnGetObjectDataFn( editField )( dt.row( cellIndex.row ).data() );
+					}
+
+					if ( enabledColumns.indexOf(cellIndex.column) === -1 ) {
+						return;
+					}
+
+					return {
+						cell:  cell,
+						data:  data,
+						label: cell.data(),
+						index: cellIndex
+					};
+				} )
+			);
+		}
+
+		this._actionSelector( selected );
+		
+		// Stop shiftScroll
+		clearInterval( this.s.scrollInterval );
+		this.s.scrollInterval = null;
+	},
+
+
+	/**
+	 * Create an array with a range of numbers defined by the start and end
+	 * parameters passed in (inclusive!).
+	 * 
+	 * @param  {integer} start Start
+	 * @param  {integer} end   End
+	 * @private
+	 */
+	_range: function ( start, end )
+	{
+		var out = [];
+		var i;
+
+		if ( start <= end ) {
+			for ( i=start ; i<=end ; i++ ) {
+				out.push( i );
+			}
+		}
+		else {
+			for ( i=start ; i>=end ; i-- ) {
+				out.push( i );
+			}
+		}
+
+		return out;
+	},
+
+
+	/**
+	 * Move the window and DataTables scrolling during a drag to scroll new
+	 * content into view. This is done by proximity to the edge of the scrolling
+	 * container of the mouse - for example near the top edge of the window
+	 * should scroll up. This is a little complicated as there are two elements
+	 * that can be scrolled - the window and the DataTables scrolling view port
+	 * (if scrollX and / or scrollY is enabled).
+	 *
+	 * @param  {object} e Mouse move event object
+	 * @private
+	 */
+	_shiftScroll: function ( e )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var scroll = this.s.scroll;
+		var runInterval = false;
+		var scrollSpeed = 5;
+		var buffer = 65;
+		var
+			windowY = e.pageY - document.body.scrollTop,
+			windowX = e.pageX - document.body.scrollLeft,
+			windowVert, windowHoriz,
+			dtVert, dtHoriz;
+
+		// Window calculations - based on the mouse position in the window,
+		// regardless of scrolling
+		if ( windowY < buffer ) {
+			windowVert = scrollSpeed * -1;
+		}
+		else if ( windowY > scroll.windowHeight - buffer ) {
+			windowVert = scrollSpeed;
+		}
+
+		if ( windowX < buffer ) {
+			windowHoriz = scrollSpeed * -1;
+		}
+		else if ( windowX > scroll.windowWidth - buffer ) {
+			windowHoriz = scrollSpeed;
+		}
+
+		// DataTables scrolling calculations - based on the table's position in
+		// the document and the mouse position on the page
+		if ( scroll.dtTop !== null && e.pageY < scroll.dtTop + buffer ) {
+			dtVert = scrollSpeed * -1;
+		}
+		else if ( scroll.dtTop !== null && e.pageY > scroll.dtTop + scroll.dtHeight - buffer ) {
+			dtVert = scrollSpeed;
+		}
+
+		if ( scroll.dtLeft !== null && e.pageX < scroll.dtLeft + buffer ) {
+			dtHoriz = scrollSpeed * -1;
+		}
+		else if ( scroll.dtLeft !== null && e.pageX > scroll.dtLeft + scroll.dtWidth - buffer ) {
+			dtHoriz = scrollSpeed;
+		}
+
+		// This is where it gets interesting. We want to continue scrolling
+		// without requiring a mouse move, so we need an interval to be
+		// triggered. The interval should continue until it is no longer needed,
+		// but it must also use the latest scroll commands (for example consider
+		// that the mouse might move from scrolling up to scrolling left, all
+		// with the same interval running. We use the `scroll` object to "pass"
+		// this information to the interval. Can't use local variables as they
+		// wouldn't be the ones that are used by an already existing interval!
+		if ( windowVert || windowHoriz || dtVert || dtHoriz ) {
+			scroll.windowVert = windowVert;
+			scroll.windowHoriz = windowHoriz;
+			scroll.dtVert = dtVert;
+			scroll.dtHoriz = dtHoriz;
+			runInterval = true;
+		}
+		else if ( this.s.scrollInterval ) {
+			// Don't need to scroll - remove any existing timer
+			clearInterval( this.s.scrollInterval );
+			this.s.scrollInterval = null;
+		}
+
+		// If we need to run the interval to scroll and there is no existing
+		// interval (if there is an existing one, it will continue to run)
+		if ( ! this.s.scrollInterval && runInterval ) {
+			this.s.scrollInterval = setInterval( function () {
+				// Don't need to worry about setting scroll <0 or beyond the
+				// scroll bound as the browser will just reject that.
+				if ( scroll.windowVert ) {
+					document.body.scrollTop += scroll.windowVert;
+				}
+				if ( scroll.windowHoriz ) {
+					document.body.scrollLeft += scroll.windowHoriz;
+				}
+
+				// DataTables scrolling
+				if ( scroll.dtVert || scroll.dtHoriz ) {
+					var scroller = that.dom.dtScroll[0];
+
+					if ( scroll.dtVert ) {
+						scroller.scrollTop += scroll.dtVert;
+					}
+					if ( scroll.dtHoriz ) {
+						scroller.scrollLeft += scroll.dtHoriz;
+					}
+				}
+			}, 20 );
+		}
+	},
+
+
+	/**
+	 * Update the DataTable after the user has selected what they want to do
+	 *
+	 * @param  {false|undefined} result Return from the `execute` method - can
+	 *   be false internally to do nothing. This is not documented for plug-ins
+	 *   and is used only by the cancel option.
+	 * @param {array} cells Information about the selected cells from the key
+	 *     up function, argumented with the set values
+	 * @private
+	 */
+	_update: function ( result, cells )
+	{
+		// Do nothing on `false` return from an execute function
+		if ( result === false ) {
+			return;
+		}
+
+		var dt = this.s.dt;
+		var cell;
+		var columns = dt.columns( this.c.columns ).indexes();
+
+		// Potentially allow modifications to the cells matrix
+		this._emitEvent( 'preAutoFill', [ dt, cells ] );
+
+		this._editor( cells );
+
+		// Automatic updates are not performed if `update` is null and the
+		// `editor` parameter is passed in - the reason being that Editor will
+		// update the data once submitted
+		var update = this.c.update !== null ?
+			this.c.update :
+			this.c.editor ?
+				false :
+				true;
+
+		if ( update ) {
+			for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+				for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+					cell = cells[i][j];
+
+					if ( columns.indexOf(cell.index.column) !== -1 ) {
+						cell.cell.data( cell.set );
+					}
+				}
+			}
+
+			dt.draw(false);
+		}
+
+		this._emitEvent( 'autoFill', [ dt, cells ] );
+	}
+} );
+
+
+/**
+ * AutoFill actions. The options here determine how AutoFill will fill the data
+ * in the table when the user has selected a range of cells. Please see the
+ * documentation on the DataTables site for full details on how to create plug-
+ * ins.
+ *
+ * @type {Object}
+ */
+AutoFill.actions = {
+	increment: {
+		available: function ( dt, cells ) {
+			var d = cells[0][0].label;
+
+			// is numeric test based on jQuery's old `isNumeric` function
+			return !isNaN( d - parseFloat( d ) );
+		},
+
+		option: function ( dt, cells ) {
+			return dt.i18n(
+				'autoFill.increment',
+				'Increment / decrement each cell by: <input type="number" value="1">'
+			);
+		},
+
+		execute: function ( dt, cells, node ) {
+			var value = cells[0][0].data * 1;
+			var increment = $('input', node).val() * 1;
+
+			for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+				for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+					cells[i][j].set = value;
+
+					value += increment;
+				}
+			}
+		}
+	},
+
+	fill: {
+		available: function ( dt, cells ) {
+			return true;
+		},
+
+		option: function ( dt, cells ) {
+			return dt.i18n('autoFill.fill', 'Fill all cells with <i>'+cells[0][0].label+'</i>' );
+		},
+
+		execute: function ( dt, cells, node ) {
+			var value = cells[0][0].data;
+
+			for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+				for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+					cells[i][j].set = value;
+				}
+			}
+		}
+	},
+
+	fillHorizontal: {
+		available: function ( dt, cells ) {
+			return cells.length > 1 && cells[0].length > 1;
+		},
+
+		option: function ( dt, cells ) {
+			return dt.i18n('autoFill.fillHorizontal', 'Fill cells horizontally' );
+		},
+
+		execute: function ( dt, cells, node ) {
+			for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+				for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+					cells[i][j].set = cells[i][0].data;
+				}
+			}
+		}
+	},
+
+	fillVertical: {
+		available: function ( dt, cells ) {
+			return cells.length > 1 && cells[0].length > 1;
+		},
+
+		option: function ( dt, cells ) {
+			return dt.i18n('autoFill.fillVertical', 'Fill cells vertically' );
+		},
+
+		execute: function ( dt, cells, node ) {
+			for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+				for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+					cells[i][j].set = cells[0][j].data;
+				}
+			}
+		}
+	},
+
+	// Special type that does not make itself available, but is added
+	// automatically by AutoFill if a multi-choice list is shown. This allows
+	// sensible code reuse
+	cancel: {
+		available: function () {
+			return false;
+		},
+
+		option: function ( dt ) {
+			return dt.i18n('autoFill.cancel', 'Cancel' );
+		},
+
+		execute: function () {
+			return false;
+		}
+	}
+};
+
+
+/**
+ * AutoFill version
+ * 
+ * @static
+ * @type      String
+ */
+AutoFill.version = '2.3.4';
+
+
+/**
+ * AutoFill defaults
+ * 
+ * @namespace
+ */
+AutoFill.defaults = {
+	/** @type {Boolean} Ask user what they want to do, even for a single option */
+	alwaysAsk: false,
+
+	/** @type {string|null} What will trigger a focus */
+	focus: null, // focus, click, hover
+
+	/** @type {column-selector} Columns to provide auto fill for */
+	columns: '', // all
+
+	/** @type {Boolean} Enable AutoFill on load */
+	enable: true,
+
+	/** @type {boolean|null} Update the cells after a drag */
+	update: null, // false is editor given, true otherwise
+
+	/** @type {DataTable.Editor} Editor instance for automatic submission */
+	editor: null,
+
+	/** @type {boolean} Enable vertical fill */
+	vertical: true,
+
+	/** @type {boolean} Enable horizontal fill */
+	horizontal: true
+};
+
+
+/**
+ * Classes used by AutoFill that are configurable
+ * 
+ * @namespace
+ */
+AutoFill.classes = {
+	/** @type {String} Class used by the selection button */
+	btn: 'btn'
+};
+
+
+/*
+ * API
+ */
+var Api = $.fn.dataTable.Api;
+
+// Doesn't do anything - Not documented
+Api.register( 'autoFill()', function () {
+	return this;
+} );
+
+Api.register( 'autoFill().enabled()', function () {
+	var ctx = this.context[0];
+
+	return ctx.autoFill ?
+		ctx.autoFill.enabled() :
+		false;
+} );
+
+Api.register( 'autoFill().enable()', function ( flag ) {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx.autoFill ) {
+			ctx.autoFill.enable( flag );
+		}
+	} );
+} );
+
+Api.register( 'autoFill().disable()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx.autoFill ) {
+			ctx.autoFill.disable();
+		}
+	} );
+} );
+
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.autofill', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.autoFill;
+	var defaults = DataTable.defaults.autoFill;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, init, defaults );
+
+		if ( init !== false ) {
+			new AutoFill( settings, opts  );
+		}
+	}
+} );
+
+
+// Alias for access
+DataTable.AutoFill = AutoFill;
+DataTable.AutoFill = AutoFill;
+
+
+return AutoFill;
+}));
Index: public/vendors/dataTable/AutoFill-2.3.4/js/dataTables.autoFill.min.js
===================================================================
--- public/vendors/dataTable/AutoFill-2.3.4/js/dataTables.autoFill.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/AutoFill-2.3.4/js/dataTables.autoFill.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,43 @@
+/*!
+   Copyright 2010-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ AutoFill 2.3.4
+ ©2008-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(a){var h=0;return function(){return h<a.length?{done:!1,value:a[h++]}:{done:!0}}};$jscomp.arrayIterator=function(a){return{next:$jscomp.arrayIteratorImpl(a)}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,h,e){a!=Array.prototype&&a!=Object.prototype&&(a[h]=e.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};
+$jscomp.SymbolClass=function(a,h){this.$jscomp$symbol$id_=a;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:h})};$jscomp.SymbolClass.prototype.toString=function(){return this.$jscomp$symbol$id_};$jscomp.Symbol=function(){function a(e){if(this instanceof a)throw new TypeError("Symbol is not a constructor");return new $jscomp.SymbolClass($jscomp.SYMBOL_PREFIX+(e||"")+"_"+h++,e)}var h=0;return a}();
+$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("Symbol.iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}});$jscomp.initSymbolIterator=function(){}};
+$jscomp.initSymbolAsyncIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.asyncIterator;a||(a=$jscomp.global.Symbol.asyncIterator=$jscomp.global.Symbol("Symbol.asyncIterator"));$jscomp.initSymbolAsyncIterator=function(){}};$jscomp.iteratorPrototype=function(a){$jscomp.initSymbolIterator();a={next:a};a[$jscomp.global.Symbol.iterator]=function(){return this};return a};
+$jscomp.iteratorFromArray=function(a,h){$jscomp.initSymbolIterator();a instanceof String&&(a+="");var e=0,l={next:function(){if(e<a.length){var k=e++;return{value:h(k,a[k]),done:!1}}l.next=function(){return{done:!0,value:void 0}};return l.next()}};l[Symbol.iterator]=function(){return l};return l};
+$jscomp.polyfill=function(a,h,e,l){if(h){e=$jscomp.global;a=a.split(".");for(l=0;l<a.length-1;l++){var k=a[l];k in e||(e[k]={});e=e[k]}a=a[a.length-1];l=e[a];h=h(l);h!=l&&null!=h&&$jscomp.defineProperty(e,a,{configurable:!0,writable:!0,value:h})}};$jscomp.polyfill("Array.prototype.keys",function(a){return a?a:function(){return $jscomp.iteratorFromArray(this,function(a){return a})}},"es6","es3");
+(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(h){return a(h,window,document)}):"object"===typeof exports?module.exports=function(h,e){h||(h=window);e&&e.fn.dataTable||(e=require("datatables.net")(h,e).$);return a(e,h,h.document)}:a(jQuery,window,document)})(function(a,h,e,l){var k=a.fn.dataTable,w=0,m=function(b,d){if(!k.versionCheck||!k.versionCheck("1.10.8"))throw"Warning: AutoFill requires DataTables 1.10.8 or greater";this.c=a.extend(!0,{},k.defaults.autoFill,
+m.defaults,d);this.s={dt:new k.Api(b),namespace:".autoFill"+w++,scroll:{},scrollInterval:null,handle:{height:0,width:0},enabled:!1};this.dom={handle:a('<div class="dt-autofill-handle"/>'),select:{top:a('<div class="dt-autofill-select top"/>'),right:a('<div class="dt-autofill-select right"/>'),bottom:a('<div class="dt-autofill-select bottom"/>'),left:a('<div class="dt-autofill-select left"/>')},background:a('<div class="dt-autofill-background"/>'),list:a('<div class="dt-autofill-list">'+this.s.dt.i18n("autoFill.info",
+"")+"<ul/></div>"),dtScroll:null,offsetParent:null};this._constructor()};a.extend(m.prototype,{enabled:function(){return this.s.enabled},enable:function(b){var d=this;if(!1===b)return this.disable();this.s.enabled=!0;this._focusListener();this.dom.handle.on("mousedown",function(b){d._mousedown(b);return!1});return this},disable:function(){this.s.enabled=!1;this._focusListenerRemove();return this},_constructor:function(){var b=this,d=this.s.dt,c=a("div.dataTables_scrollBody",this.s.dt.table().container());
+d.settings()[0].autoFill=this;c.length&&(this.dom.dtScroll=c,"static"===c.css("position")&&c.css("position","relative"));!1!==this.c.enable&&this.enable();d.on("destroy.autoFill",function(){b._focusListenerRemove()})},_attach:function(b){var d=this.s.dt,c=d.cell(b).index(),f=this.dom.handle,g=this.s.handle;c&&-1!==d.columns(this.c.columns).indexes().indexOf(c.column)?(this.dom.offsetParent||(this.dom.offsetParent=a(d.table().node()).offsetParent()),g.height&&g.width||(f.appendTo("body"),g.height=
+f.outerHeight(),g.width=f.outerWidth()),d=this._getPosition(b,this.dom.offsetParent),this.dom.attachedTo=b,f.css({top:d.top+b.offsetHeight-g.height,left:d.left+b.offsetWidth-g.width}).appendTo(this.dom.offsetParent)):this._detach()},_actionSelector:function(b){var d=this,c=this.s.dt,f=m.actions,g=[];a.each(f,function(d,a){a.available(c,b)&&g.push(d)});if(1===g.length&&!1===this.c.alwaysAsk){var e=f[g[0]].execute(c,b);this._update(e,b)}else{var n=this.dom.list.children("ul").empty();g.push("cancel");
+a.each(g,function(g,e){n.append(a("<li/>").append('<div class="dt-autofill-question">'+f[e].option(c,b)+"<div>").append(a('<div class="dt-autofill-button">').append(a('<button class="'+m.classes.btn+'">'+c.i18n("autoFill.button","&gt;")+"</button>").on("click",function(){var g=f[e].execute(c,b,a(this).closest("li"));d._update(g,b);d.dom.background.remove();d.dom.list.remove()}))))});this.dom.background.appendTo("body");this.dom.list.appendTo("body");this.dom.list.css("margin-top",this.dom.list.outerHeight()/
+2*-1)}},_detach:function(){this.dom.attachedTo=null;this.dom.handle.detach()},_drawSelection:function(b,d){var c=this.s.dt;d=this.s.start;var f=a(this.dom.start),g={row:this.c.vertical?c.rows({page:"current"}).nodes().indexOf(b.parentNode):d.row,column:this.c.horizontal?a(b).index():d.column};b=c.column.index("toData",g.column);var e=c.row(":eq("+g.row+")",{page:"current"});e=a(c.cell(e.index(),b).node());if(c.cell(e).any()&&-1!==c.columns(this.c.columns).indexes().indexOf(b)){this.s.end=g;c=d.row<
+g.row?f:e;var n=d.row<g.row?e:f;b=d.column<g.column?f:e;f=d.column<g.column?e:f;c=this._getPosition(c.get(0)).top;b=this._getPosition(b.get(0)).left;d=this._getPosition(n.get(0)).top+n.outerHeight()-c;f=this._getPosition(f.get(0)).left+f.outerWidth()-b;g=this.dom.select;g.top.css({top:c,left:b,width:f});g.left.css({top:c,left:b,height:d});g.bottom.css({top:c+d,left:b,width:f});g.right.css({top:c,left:b+f,height:d})}},_editor:function(b){var d=this.s.dt,c=this.c.editor;if(c){for(var a={},g=[],e=c.fields(),
+n=0,h=b.length;n<h;n++)for(var k=0,m=b[n].length;k<m;k++){var q=b[n][k],p=d.settings()[0].aoColumns[q.index.column],r=p.editField;if(r===l){p=p.mData;for(var u=0,y=e.length;u<y;u++){var v=c.field(e[u]);if(v.dataSrc()===p){r=v.name();break}}}if(!r)throw"Could not automatically determine field data. Please see https://datatables.net/tn/11";a[r]||(a[r]={});p=d.row(q.index.row).id();a[r][p]=q.set;g.push(q.index)}c.bubble(g,!1).multiSet(a).submit()}},_emitEvent:function(b,d){this.s.dt.iterator("table",
+function(c,f){a(c.nTable).triggerHandler(b+".dt",d)})},_focusListener:function(){var b=this,d=this.s.dt,c=this.s.namespace,f=null!==this.c.focus?this.c.focus:d.init().keys||d.settings()[0].keytable?"focus":"hover";if("focus"===f)d.on("key-focus.autoFill",function(c,d,a){b._attach(a.node())}).on("key-blur.autoFill",function(c,a,d){b._detach()});else if("click"===f)a(d.table().body()).on("click"+c,"td, th",function(c){b._attach(this)}),a(e.body).on("click"+c,function(c){a(c.target).parents().filter(d.table().body()).length||
+b._detach()});else a(d.table().body()).on("mouseenter"+c,"td, th",function(c){b._attach(this)}).on("mouseleave"+c,function(c){a(c.relatedTarget).hasClass("dt-autofill-handle")||b._detach()})},_focusListenerRemove:function(){var b=this.s.dt;b.off(".autoFill");a(b.table().body()).off(this.s.namespace);a(e.body).off(this.s.namespace)},_getPosition:function(b,d){var c=0,f=0;d||(d=a(a(this.s.dt.table().node())[0].offsetParent));do{var g=b.offsetTop,e=b.offsetLeft;var h=a(b.offsetParent);c+=g+1*parseInt(h.css("border-top-width"));
+f+=e+1*parseInt(h.css("border-left-width"));if("body"===b.nodeName.toLowerCase())break;b=h.get(0)}while(h.get(0)!==d.get(0));return{top:c,left:f}},_mousedown:function(b){var d=this,c=this.s.dt;this.dom.start=this.dom.attachedTo;this.s.start={row:c.rows({page:"current"}).nodes().indexOf(a(this.dom.start).parent()[0]),column:a(this.dom.start).index()};a(e.body).on("mousemove.autoFill",function(b){d._mousemove(b)}).on("mouseup.autoFill",function(b){d._mouseup(b)});var f=this.dom.select;c=a(c.table().node()).offsetParent();
+f.top.appendTo(c);f.left.appendTo(c);f.right.appendTo(c);f.bottom.appendTo(c);this._drawSelection(this.dom.start,b);this.dom.handle.css("display","none");b=this.dom.dtScroll;this.s.scroll={windowHeight:a(h).height(),windowWidth:a(h).width(),dtTop:b?b.offset().top:null,dtLeft:b?b.offset().left:null,dtHeight:b?b.outerHeight():null,dtWidth:b?b.outerWidth():null}},_mousemove:function(b){var a=b.target.nodeName.toLowerCase();if("td"===a||"th"===a)this._drawSelection(b.target,b),this._shiftScroll(b)},_mouseup:function(b){a(e.body).off(".autoFill");
+var d=this,c=this.s.dt,f=this.dom.select;f.top.remove();f.left.remove();f.right.remove();f.bottom.remove();this.dom.handle.css("display","block");f=this.s.start;var g=this.s.end;if(f.row!==g.row||f.column!==g.column){var h=c.cell(":eq("+f.row+")",f.column+":visible",{page:"current"});if(a("div.DTE",h.node()).length){var n=c.editor();n.on("submitSuccess.dtaf close.dtaf",function(){n.off(".dtaf");setTimeout(function(){d._mouseup(b)},100)}).on("submitComplete.dtaf preSubmitCancelled.dtaf close.dtaf",
+function(){n.off(".dtaf")});n.submit()}else{var k=this._range(f.row,g.row);f=this._range(f.column,g.column);g=[];for(var m=c.settings()[0],x=m.aoColumns,q=c.columns(this.c.columns).indexes(),p=0;p<k.length;p++)g.push(a.map(f,function(b){var a=c.row(":eq("+k[p]+")",{page:"current"});b=c.cell(a.index(),b+":visible");a=b.data();var d=b.index(),f=x[d.column].editField;f!==l&&(a=m.oApi._fnGetObjectDataFn(f)(c.row(d.row).data()));if(-1!==q.indexOf(d.column))return{cell:b,data:a,label:b.data(),index:d}}));
+this._actionSelector(g);clearInterval(this.s.scrollInterval);this.s.scrollInterval=null}}},_range:function(b,a){var c=[];if(b<=a)for(;b<=a;b++)c.push(b);else for(;b>=a;b--)c.push(b);return c},_shiftScroll:function(b){var a=this,c=this.s.scroll,f=!1,g=b.pageY-e.body.scrollTop,h=b.pageX-e.body.scrollLeft,n,k,l,m;65>g?n=-5:g>c.windowHeight-65&&(n=5);65>h?k=-5:h>c.windowWidth-65&&(k=5);null!==c.dtTop&&b.pageY<c.dtTop+65?l=-5:null!==c.dtTop&&b.pageY>c.dtTop+c.dtHeight-65&&(l=5);null!==c.dtLeft&&b.pageX<
+c.dtLeft+65?m=-5:null!==c.dtLeft&&b.pageX>c.dtLeft+c.dtWidth-65&&(m=5);n||k||l||m?(c.windowVert=n,c.windowHoriz=k,c.dtVert=l,c.dtHoriz=m,f=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=null);!this.s.scrollInterval&&f&&(this.s.scrollInterval=setInterval(function(){c.windowVert&&(e.body.scrollTop+=c.windowVert);c.windowHoriz&&(e.body.scrollLeft+=c.windowHoriz);if(c.dtVert||c.dtHoriz){var b=a.dom.dtScroll[0];c.dtVert&&(b.scrollTop+=c.dtVert);c.dtHoriz&&(b.scrollLeft+=
+c.dtHoriz)}},20))},_update:function(b,a){if(!1!==b){b=this.s.dt;var c=b.columns(this.c.columns).indexes();this._emitEvent("preAutoFill",[b,a]);this._editor(a);if(null!==this.c.update?this.c.update:!this.c.editor){for(var d=0,g=a.length;d<g;d++)for(var e=0,h=a[d].length;e<h;e++){var k=a[d][e];-1!==c.indexOf(k.index.column)&&k.cell.data(k.set)}b.draw(!1)}this._emitEvent("autoFill",[b,a])}}});m.actions={increment:{available:function(b,a){b=a[0][0].label;return!isNaN(b-parseFloat(b))},option:function(b,
+a){return b.i18n("autoFill.increment",'Increment / decrement each cell by: <input type="number" value="1">')},execute:function(b,d,c){b=1*d[0][0].data;c=1*a("input",c).val();for(var f=0,g=d.length;f<g;f++)for(var e=0,h=d[f].length;e<h;e++)d[f][e].set=b,b+=c}},fill:{available:function(b,a){return!0},option:function(b,a){return b.i18n("autoFill.fill","Fill all cells with <i>"+a[0][0].label+"</i>")},execute:function(b,a,c){b=a[0][0].data;c=0;for(var d=a.length;c<d;c++)for(var e=0,h=a[c].length;e<h;e++)a[c][e].set=
+b}},fillHorizontal:{available:function(b,a){return 1<a.length&&1<a[0].length},option:function(b,a){return b.i18n("autoFill.fillHorizontal","Fill cells horizontally")},execute:function(b,a,c){b=0;for(c=a.length;b<c;b++)for(var d=0,e=a[b].length;d<e;d++)a[b][d].set=a[b][0].data}},fillVertical:{available:function(b,a){return 1<a.length&&1<a[0].length},option:function(b,a){return b.i18n("autoFill.fillVertical","Fill cells vertically")},execute:function(b,a,c){b=0;for(c=a.length;b<c;b++)for(var d=0,e=
+a[b].length;d<e;d++)a[b][d].set=a[0][d].data}},cancel:{available:function(){return!1},option:function(b){return b.i18n("autoFill.cancel","Cancel")},execute:function(){return!1}}};m.version="2.3.4";m.defaults={alwaysAsk:!1,focus:null,columns:"",enable:!0,update:null,editor:null,vertical:!0,horizontal:!0};m.classes={btn:"btn"};var t=a.fn.dataTable.Api;t.register("autoFill()",function(){return this});t.register("autoFill().enabled()",function(){var b=this.context[0];return b.autoFill?b.autoFill.enabled():
+!1});t.register("autoFill().enable()",function(b){return this.iterator("table",function(a){a.autoFill&&a.autoFill.enable(b)})});t.register("autoFill().disable()",function(){return this.iterator("table",function(a){a.autoFill&&a.autoFill.disable()})});a(e).on("preInit.dt.autofill",function(b,d,c){"dt"===b.namespace&&(b=d.oInit.autoFill,c=k.defaults.autoFill,b||c)&&(c=a.extend({},b,c),!1!==b&&new m(d,c))});k.AutoFill=m;return k.AutoFill=m});
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,187 @@
+@keyframes dtb-spinner {
+  100% {
+    transform: rotate(360deg);
+  }
+}
+@-o-keyframes dtb-spinner {
+  100% {
+    -o-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-ms-keyframes dtb-spinner {
+  100% {
+    -ms-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-webkit-keyframes dtb-spinner {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-moz-keyframes dtb-spinner {
+  100% {
+    -moz-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+div.dt-button-info {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 400px;
+  margin-top: -100px;
+  margin-left: -200px;
+  background-color: white;
+  border: 2px solid #111;
+  box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
+  border-radius: 3px;
+  text-align: center;
+  z-index: 21;
+}
+div.dt-button-info h2 {
+  padding: 0.5em;
+  margin: 0;
+  font-weight: normal;
+  border-bottom: 1px solid #ddd;
+  background-color: #f3f3f3;
+}
+div.dt-button-info > div {
+  padding: 1em;
+}
+
+div.dt-button-collection-title {
+  text-align: center;
+  padding: 0.3em 0 0.5em;
+  font-size: 0.9em;
+}
+
+div.dt-button-collection-title:empty {
+  display: none;
+}
+
+div.dt-button-collection {
+  position: absolute;
+}
+div.dt-button-collection ul.dropdown-menu {
+  display: block;
+  z-index: 2002;
+  min-width: 100%;
+}
+div.dt-button-collection div.dt-button-collection-title {
+  background-color: white;
+}
+div.dt-button-collection.fixed {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  margin-left: -75px;
+  border-radius: 0;
+}
+div.dt-button-collection.fixed.two-column {
+  margin-left: -200px;
+}
+div.dt-button-collection.fixed.three-column {
+  margin-left: -225px;
+}
+div.dt-button-collection.fixed.four-column {
+  margin-left: -300px;
+}
+div.dt-button-collection > :last-child {
+  display: block !important;
+  -webkit-column-gap: 8px;
+  -moz-column-gap: 8px;
+  -ms-column-gap: 8px;
+  -o-column-gap: 8px;
+  column-gap: 8px;
+}
+div.dt-button-collection > :last-child > * {
+  -webkit-column-break-inside: avoid;
+  break-inside: avoid;
+}
+div.dt-button-collection.two-column {
+  width: 400px;
+}
+div.dt-button-collection.two-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  -ms-column-count: 2;
+  -o-column-count: 2;
+  column-count: 2;
+}
+div.dt-button-collection.three-column {
+  width: 450px;
+}
+div.dt-button-collection.three-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 3;
+  -moz-column-count: 3;
+  -ms-column-count: 3;
+  -o-column-count: 3;
+  column-count: 3;
+}
+div.dt-button-collection.four-column {
+  width: 600px;
+}
+div.dt-button-collection.four-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 4;
+  -moz-column-count: 4;
+  -ms-column-count: 4;
+  -o-column-count: 4;
+  column-count: 4;
+}
+div.dt-button-collection .dt-button {
+  border-radius: 0;
+}
+
+div.dt-button-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 2001;
+}
+
+@media screen and (max-width: 767px) {
+  div.dt-buttons {
+    float: none;
+    width: 100%;
+    text-align: center;
+    margin-bottom: 0.5em;
+  }
+  div.dt-buttons a.btn {
+    float: none;
+  }
+}
+div.dt-buttons button.btn.processing,
+div.dt-buttons div.btn.processing,
+div.dt-buttons a.btn.processing {
+  color: rgba(0, 0, 0, 0.2);
+}
+div.dt-buttons button.btn.processing:after,
+div.dt-buttons div.btn.processing:after,
+div.dt-buttons a.btn.processing:after {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 16px;
+  height: 16px;
+  margin: -8px 0 0 -8px;
+  box-sizing: border-box;
+  display: block;
+  content: ' ';
+  border: 2px solid #282828;
+  border-radius: 50%;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  animation: dtb-spinner 1500ms infinite linear;
+  -o-animation: dtb-spinner 1500ms infinite linear;
+  -ms-animation: dtb-spinner 1500ms infinite linear;
+  -webkit-animation: dtb-spinner 1500ms infinite linear;
+  -moz-animation: dtb-spinner 1500ms infinite linear;
+}
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-button-collection-title{text-align:center;padding:0.3em 0 0.5em;font-size:0.9em}div.dt-button-collection-title:empty{display:none}div.dt-button-collection{position:absolute}div.dt-button-collection ul.dropdown-menu{display:block;z-index:2002;min-width:100%}div.dt-button-collection div.dt-button-collection-title{background-color:white}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>:last-child{display:block !important;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2001}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}}div.dt-buttons button.btn.processing,div.dt-buttons div.btn.processing,div.dt-buttons a.btn.processing{color:rgba(0,0,0,0.2)}div.dt-buttons button.btn.processing:after,div.dt-buttons div.btn.processing:after,div.dt-buttons a.btn.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap4.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,195 @@
+@keyframes dtb-spinner {
+  100% {
+    transform: rotate(360deg);
+  }
+}
+@-o-keyframes dtb-spinner {
+  100% {
+    -o-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-ms-keyframes dtb-spinner {
+  100% {
+    -ms-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-webkit-keyframes dtb-spinner {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-moz-keyframes dtb-spinner {
+  100% {
+    -moz-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+div.dt-button-info {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 400px;
+  margin-top: -100px;
+  margin-left: -200px;
+  background-color: white;
+  border: 2px solid #111;
+  box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
+  border-radius: 3px;
+  text-align: center;
+  z-index: 21;
+}
+div.dt-button-info h2 {
+  padding: 0.5em;
+  margin: 0;
+  font-weight: normal;
+  border-bottom: 1px solid #ddd;
+  background-color: #f3f3f3;
+}
+div.dt-button-info > div {
+  padding: 1em;
+}
+
+div.dt-button-collection-title {
+  text-align: center;
+  padding: 0.3em 0 0.5em;
+  font-size: 0.9em;
+}
+
+div.dt-button-collection-title:empty {
+  display: none;
+}
+
+div.dt-button-collection {
+  position: absolute;
+  z-index: 2001;
+}
+div.dt-button-collection div.dropdown-menu {
+  display: block;
+  z-index: 2002;
+  min-width: 100%;
+}
+div.dt-button-collection div.dt-button-collection-title {
+  background-color: white;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+}
+div.dt-button-collection.fixed {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  margin-left: -75px;
+  border-radius: 0;
+}
+div.dt-button-collection.fixed.two-column {
+  margin-left: -200px;
+}
+div.dt-button-collection.fixed.three-column {
+  margin-left: -225px;
+}
+div.dt-button-collection.fixed.four-column {
+  margin-left: -300px;
+}
+div.dt-button-collection > :last-child {
+  display: block !important;
+  -webkit-column-gap: 8px;
+  -moz-column-gap: 8px;
+  -ms-column-gap: 8px;
+  -o-column-gap: 8px;
+  column-gap: 8px;
+}
+div.dt-button-collection > :last-child > * {
+  -webkit-column-break-inside: avoid;
+  break-inside: avoid;
+}
+div.dt-button-collection.two-column {
+  width: 400px;
+}
+div.dt-button-collection.two-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  -ms-column-count: 2;
+  -o-column-count: 2;
+  column-count: 2;
+}
+div.dt-button-collection.three-column {
+  width: 450px;
+}
+div.dt-button-collection.three-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 3;
+  -moz-column-count: 3;
+  -ms-column-count: 3;
+  -o-column-count: 3;
+  column-count: 3;
+}
+div.dt-button-collection.four-column {
+  width: 600px;
+}
+div.dt-button-collection.four-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 4;
+  -moz-column-count: 4;
+  -ms-column-count: 4;
+  -o-column-count: 4;
+  column-count: 4;
+}
+div.dt-button-collection .dt-button {
+  border-radius: 0;
+}
+div.dt-button-collection.fixed {
+  max-width: none;
+}
+div.dt-button-collection.fixed:before, div.dt-button-collection.fixed:after {
+  display: none;
+}
+
+div.dt-button-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 999;
+}
+
+@media screen and (max-width: 767px) {
+  div.dt-buttons {
+    float: none;
+    width: 100%;
+    text-align: center;
+    margin-bottom: 0.5em;
+  }
+  div.dt-buttons a.btn {
+    float: none;
+  }
+}
+div.dt-buttons button.btn.processing,
+div.dt-buttons div.btn.processing,
+div.dt-buttons a.btn.processing {
+  color: rgba(0, 0, 0, 0.2);
+}
+div.dt-buttons button.btn.processing:after,
+div.dt-buttons div.btn.processing:after,
+div.dt-buttons a.btn.processing:after {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 16px;
+  height: 16px;
+  margin: -8px 0 0 -8px;
+  box-sizing: border-box;
+  display: block;
+  content: ' ';
+  border: 2px solid #282828;
+  border-radius: 50%;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  animation: dtb-spinner 1500ms infinite linear;
+  -o-animation: dtb-spinner 1500ms infinite linear;
+  -ms-animation: dtb-spinner 1500ms infinite linear;
+  -webkit-animation: dtb-spinner 1500ms infinite linear;
+  -moz-animation: dtb-spinner 1500ms infinite linear;
+}
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-button-collection-title{text-align:center;padding:0.3em 0 0.5em;font-size:0.9em}div.dt-button-collection-title:empty{display:none}div.dt-button-collection{position:absolute;z-index:2001}div.dt-button-collection div.dropdown-menu{display:block;z-index:2002;min-width:100%}div.dt-button-collection div.dt-button-collection-title{background-color:white;border:1px solid rgba(0,0,0,0.15)}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>:last-child{display:block !important;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.fixed{max-width:none}div.dt-button-collection.fixed:before,div.dt-button-collection.fixed:after{display:none}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}}div.dt-buttons button.btn.processing,div.dt-buttons div.btn.processing,div.dt-buttons a.btn.processing{color:rgba(0,0,0,0.2)}div.dt-buttons button.btn.processing:after,div.dt-buttons div.btn.processing:after,div.dt-buttons a.btn.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.dataTables.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,380 @@
+@keyframes dtb-spinner {
+  100% {
+    transform: rotate(360deg);
+  }
+}
+@-o-keyframes dtb-spinner {
+  100% {
+    -o-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-ms-keyframes dtb-spinner {
+  100% {
+    -ms-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-webkit-keyframes dtb-spinner {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-moz-keyframes dtb-spinner {
+  100% {
+    -moz-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+div.dt-button-info {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 400px;
+  margin-top: -100px;
+  margin-left: -200px;
+  background-color: white;
+  border: 2px solid #111;
+  box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
+  border-radius: 3px;
+  text-align: center;
+  z-index: 21;
+}
+div.dt-button-info h2 {
+  padding: 0.5em;
+  margin: 0;
+  font-weight: normal;
+  border-bottom: 1px solid #ddd;
+  background-color: #f3f3f3;
+}
+div.dt-button-info > div {
+  padding: 1em;
+}
+
+div.dt-button-collection-title {
+  text-align: center;
+  padding: 0.3em 0 0.5em;
+  font-size: 0.9em;
+}
+
+div.dt-button-collection-title:empty {
+  display: none;
+}
+
+button.dt-button,
+div.dt-button,
+a.dt-button {
+  position: relative;
+  display: inline-block;
+  box-sizing: border-box;
+  margin-right: 0.333em;
+  margin-bottom: 0.333em;
+  padding: 0.5em 1em;
+  border: 1px solid #999;
+  border-radius: 2px;
+  cursor: pointer;
+  font-size: 0.88em;
+  line-height: 1.6em;
+  color: black;
+  white-space: nowrap;
+  overflow: hidden;
+  background-color: #e9e9e9;
+  /* Fallback */
+  background-image: -webkit-linear-gradient(top, white 0%, #e9e9e9 100%);
+  /* Chrome 10+, Saf5.1+, iOS 5+ */
+  background-image: -moz-linear-gradient(top, white 0%, #e9e9e9 100%);
+  /* FF3.6 */
+  background-image: -ms-linear-gradient(top, white 0%, #e9e9e9 100%);
+  /* IE10 */
+  background-image: -o-linear-gradient(top, white 0%, #e9e9e9 100%);
+  /* Opera 11.10+ */
+  background-image: linear-gradient(to bottom, white 0%, #e9e9e9 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='white', EndColorStr='#e9e9e9');
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  text-decoration: none;
+  outline: none;
+  text-overflow: ellipsis;
+}
+button.dt-button.disabled,
+div.dt-button.disabled,
+a.dt-button.disabled {
+  color: #999;
+  border: 1px solid #d0d0d0;
+  cursor: default;
+  background-color: #f9f9f9;
+  /* Fallback */
+  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
+  /* Chrome 10+, Saf5.1+, iOS 5+ */
+  background-image: -moz-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
+  /* FF3.6 */
+  background-image: -ms-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
+  /* IE10 */
+  background-image: -o-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
+  /* Opera 11.10+ */
+  background-image: linear-gradient(to bottom, #ffffff 0%, #f9f9f9 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#ffffff', EndColorStr='#f9f9f9');
+}
+button.dt-button:active:not(.disabled), button.dt-button.active:not(.disabled),
+div.dt-button:active:not(.disabled),
+div.dt-button.active:not(.disabled),
+a.dt-button:active:not(.disabled),
+a.dt-button.active:not(.disabled) {
+  background-color: #e2e2e2;
+  /* Fallback */
+  background-image: -webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
+  /* Chrome 10+, Saf5.1+, iOS 5+ */
+  background-image: -moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
+  /* FF3.6 */
+  background-image: -ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
+  /* IE10 */
+  background-image: -o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
+  /* Opera 11.10+ */
+  background-image: linear-gradient(to bottom, #f3f3f3 0%, #e2e2e2 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f3f3f3', EndColorStr='#e2e2e2');
+  box-shadow: inset 1px 1px 3px #999999;
+}
+button.dt-button:active:not(.disabled):hover:not(.disabled), button.dt-button.active:not(.disabled):hover:not(.disabled),
+div.dt-button:active:not(.disabled):hover:not(.disabled),
+div.dt-button.active:not(.disabled):hover:not(.disabled),
+a.dt-button:active:not(.disabled):hover:not(.disabled),
+a.dt-button.active:not(.disabled):hover:not(.disabled) {
+  box-shadow: inset 1px 1px 3px #999999;
+  background-color: #cccccc;
+  /* Fallback */
+  background-image: -webkit-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
+  /* Chrome 10+, Saf5.1+, iOS 5+ */
+  background-image: -moz-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
+  /* FF3.6 */
+  background-image: -ms-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
+  /* IE10 */
+  background-image: -o-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
+  /* Opera 11.10+ */
+  background-image: linear-gradient(to bottom, #eaeaea 0%, #cccccc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#eaeaea', EndColorStr='#cccccc');
+}
+button.dt-button:hover,
+div.dt-button:hover,
+a.dt-button:hover {
+  text-decoration: none;
+}
+button.dt-button:hover:not(.disabled),
+div.dt-button:hover:not(.disabled),
+a.dt-button:hover:not(.disabled) {
+  border: 1px solid #666;
+  background-color: #e0e0e0;
+  /* Fallback */
+  background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
+  /* Chrome 10+, Saf5.1+, iOS 5+ */
+  background-image: -moz-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
+  /* FF3.6 */
+  background-image: -ms-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
+  /* IE10 */
+  background-image: -o-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
+  /* Opera 11.10+ */
+  background-image: linear-gradient(to bottom, #f9f9f9 0%, #e0e0e0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f9f9f9', EndColorStr='#e0e0e0');
+}
+button.dt-button:focus:not(.disabled),
+div.dt-button:focus:not(.disabled),
+a.dt-button:focus:not(.disabled) {
+  border: 1px solid #426c9e;
+  text-shadow: 0 1px 0 #c4def1;
+  outline: none;
+  background-color: #79ace9;
+  /* Fallback */
+  background-image: -webkit-linear-gradient(top, #bddef4 0%, #79ace9 100%);
+  /* Chrome 10+, Saf5.1+, iOS 5+ */
+  background-image: -moz-linear-gradient(top, #bddef4 0%, #79ace9 100%);
+  /* FF3.6 */
+  background-image: -ms-linear-gradient(top, #bddef4 0%, #79ace9 100%);
+  /* IE10 */
+  background-image: -o-linear-gradient(top, #bddef4 0%, #79ace9 100%);
+  /* Opera 11.10+ */
+  background-image: linear-gradient(to bottom, #bddef4 0%, #79ace9 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#bddef4', EndColorStr='#79ace9');
+}
+
+.dt-button embed {
+  outline: none;
+}
+
+div.dt-buttons {
+  position: relative;
+  float: left;
+}
+div.dt-buttons.buttons-right {
+  float: right;
+}
+
+div.dt-button-collection {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 150px;
+  margin-top: 3px;
+  padding: 8px 8px 4px 8px;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.4);
+  background-color: white;
+  overflow: hidden;
+  z-index: 2002;
+  border-radius: 5px;
+  box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+  box-sizing: border-box;
+}
+div.dt-button-collection button.dt-button,
+div.dt-button-collection div.dt-button,
+div.dt-button-collection a.dt-button {
+  position: relative;
+  left: 0;
+  right: 0;
+  width: 100%;
+  display: block;
+  float: none;
+  margin-bottom: 4px;
+  margin-right: 0;
+}
+div.dt-button-collection button.dt-button:active:not(.disabled), div.dt-button-collection button.dt-button.active:not(.disabled),
+div.dt-button-collection div.dt-button:active:not(.disabled),
+div.dt-button-collection div.dt-button.active:not(.disabled),
+div.dt-button-collection a.dt-button:active:not(.disabled),
+div.dt-button-collection a.dt-button.active:not(.disabled) {
+  background-color: #dadada;
+  /* Fallback */
+  background-image: -webkit-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
+  /* Chrome 10+, Saf5.1+, iOS 5+ */
+  background-image: -moz-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
+  /* FF3.6 */
+  background-image: -ms-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
+  /* IE10 */
+  background-image: -o-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
+  /* Opera 11.10+ */
+  background-image: linear-gradient(to bottom, #f0f0f0 0%, #dadada 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f0f0f0', EndColorStr='#dadada');
+  box-shadow: inset 1px 1px 3px #666;
+}
+div.dt-button-collection.fixed {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  margin-left: -75px;
+  border-radius: 0;
+}
+div.dt-button-collection.fixed.two-column {
+  margin-left: -200px;
+}
+div.dt-button-collection.fixed.three-column {
+  margin-left: -225px;
+}
+div.dt-button-collection.fixed.four-column {
+  margin-left: -300px;
+}
+div.dt-button-collection > :last-child {
+  display: block !important;
+  -webkit-column-gap: 8px;
+  -moz-column-gap: 8px;
+  -ms-column-gap: 8px;
+  -o-column-gap: 8px;
+  column-gap: 8px;
+}
+div.dt-button-collection > :last-child > * {
+  -webkit-column-break-inside: avoid;
+  break-inside: avoid;
+}
+div.dt-button-collection.two-column {
+  width: 400px;
+}
+div.dt-button-collection.two-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  -ms-column-count: 2;
+  -o-column-count: 2;
+  column-count: 2;
+}
+div.dt-button-collection.three-column {
+  width: 450px;
+}
+div.dt-button-collection.three-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 3;
+  -moz-column-count: 3;
+  -ms-column-count: 3;
+  -o-column-count: 3;
+  column-count: 3;
+}
+div.dt-button-collection.four-column {
+  width: 600px;
+}
+div.dt-button-collection.four-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 4;
+  -moz-column-count: 4;
+  -ms-column-count: 4;
+  -o-column-count: 4;
+  column-count: 4;
+}
+div.dt-button-collection .dt-button {
+  border-radius: 0;
+}
+
+div.dt-button-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.7);
+  /* Fallback */
+  background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  /* IE10 Consumer Preview */
+  background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  /* Firefox */
+  background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  /* Opera */
+  background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));
+  /* Webkit (Safari/Chrome 10) */
+  background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  /* Webkit (Chrome 11+) */
+  background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  /* W3C Markup, IE10 Release Preview */
+  z-index: 2001;
+}
+
+@media screen and (max-width: 640px) {
+  div.dt-buttons {
+    float: none !important;
+    text-align: center;
+  }
+}
+button.dt-button.processing,
+div.dt-button.processing,
+a.dt-button.processing {
+  color: rgba(0, 0, 0, 0.2);
+}
+button.dt-button.processing:after,
+div.dt-button.processing:after,
+a.dt-button.processing:after {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 16px;
+  height: 16px;
+  margin: -8px 0 0 -8px;
+  box-sizing: border-box;
+  display: block;
+  content: ' ';
+  border: 2px solid #282828;
+  border-radius: 50%;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  animation: dtb-spinner 1500ms infinite linear;
+  -o-animation: dtb-spinner 1500ms infinite linear;
+  -ms-animation: dtb-spinner 1500ms infinite linear;
+  -webkit-animation: dtb-spinner 1500ms infinite linear;
+  -moz-animation: dtb-spinner 1500ms infinite linear;
+}
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.dataTables.min.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-button-collection-title{text-align:center;padding:0.3em 0 0.5em;font-size:0.9em}div.dt-button-collection-title:empty{display:none}button.dt-button,div.dt-button,a.dt-button{position:relative;display:inline-block;box-sizing:border-box;margin-right:0.333em;margin-bottom:0.333em;padding:0.5em 1em;border:1px solid #999;border-radius:2px;cursor:pointer;font-size:0.88em;line-height:1.6em;color:black;white-space:nowrap;overflow:hidden;background-color:#e9e9e9;background-image:-webkit-linear-gradient(top, #fff 0%, #e9e9e9 100%);background-image:-moz-linear-gradient(top, #fff 0%, #e9e9e9 100%);background-image:-ms-linear-gradient(top, #fff 0%, #e9e9e9 100%);background-image:-o-linear-gradient(top, #fff 0%, #e9e9e9 100%);background-image:linear-gradient(to bottom, #fff 0%, #e9e9e9 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='white', EndColorStr='#e9e9e9');-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;outline:none;text-overflow:ellipsis}button.dt-button.disabled,div.dt-button.disabled,a.dt-button.disabled{color:#999;border:1px solid #d0d0d0;cursor:default;background-color:#f9f9f9;background-image:-webkit-linear-gradient(top, #fff 0%, #f9f9f9 100%);background-image:-moz-linear-gradient(top, #fff 0%, #f9f9f9 100%);background-image:-ms-linear-gradient(top, #fff 0%, #f9f9f9 100%);background-image:-o-linear-gradient(top, #fff 0%, #f9f9f9 100%);background-image:linear-gradient(to bottom, #fff 0%, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#ffffff', EndColorStr='#f9f9f9')}button.dt-button:active:not(.disabled),button.dt-button.active:not(.disabled),div.dt-button:active:not(.disabled),div.dt-button.active:not(.disabled),a.dt-button:active:not(.disabled),a.dt-button.active:not(.disabled){background-color:#e2e2e2;background-image:-webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);background-image:-moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);background-image:-ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);background-image:-o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);background-image:linear-gradient(to bottom, #f3f3f3 0%, #e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f3f3f3', EndColorStr='#e2e2e2');box-shadow:inset 1px 1px 3px #999999}button.dt-button:active:not(.disabled):hover:not(.disabled),button.dt-button.active:not(.disabled):hover:not(.disabled),div.dt-button:active:not(.disabled):hover:not(.disabled),div.dt-button.active:not(.disabled):hover:not(.disabled),a.dt-button:active:not(.disabled):hover:not(.disabled),a.dt-button.active:not(.disabled):hover:not(.disabled){box-shadow:inset 1px 1px 3px #999999;background-color:#cccccc;background-image:-webkit-linear-gradient(top, #eaeaea 0%, #ccc 100%);background-image:-moz-linear-gradient(top, #eaeaea 0%, #ccc 100%);background-image:-ms-linear-gradient(top, #eaeaea 0%, #ccc 100%);background-image:-o-linear-gradient(top, #eaeaea 0%, #ccc 100%);background-image:linear-gradient(to bottom, #eaeaea 0%, #ccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#eaeaea', EndColorStr='#cccccc')}button.dt-button:hover,div.dt-button:hover,a.dt-button:hover{text-decoration:none}button.dt-button:hover:not(.disabled),div.dt-button:hover:not(.disabled),a.dt-button:hover:not(.disabled){border:1px solid #666;background-color:#e0e0e0;background-image:-webkit-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);background-image:-moz-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);background-image:-ms-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);background-image:-o-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);background-image:linear-gradient(to bottom, #f9f9f9 0%, #e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f9f9f9', EndColorStr='#e0e0e0')}button.dt-button:focus:not(.disabled),div.dt-button:focus:not(.disabled),a.dt-button:focus:not(.disabled){border:1px solid #426c9e;text-shadow:0 1px 0 #c4def1;outline:none;background-color:#79ace9;background-image:-webkit-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:-moz-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:-ms-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:-o-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:linear-gradient(to bottom, #bddef4 0%, #79ace9 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#bddef4', EndColorStr='#79ace9')}.dt-button embed{outline:none}div.dt-buttons{position:relative;float:left}div.dt-buttons.buttons-right{float:right}div.dt-button-collection{position:absolute;top:0;left:0;width:150px;margin-top:3px;padding:8px 8px 4px 8px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.4);background-color:white;overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 3px 5px rgba(0,0,0,0.3);box-sizing:border-box}div.dt-button-collection button.dt-button,div.dt-button-collection div.dt-button,div.dt-button-collection a.dt-button{position:relative;left:0;right:0;width:100%;display:block;float:none;margin-bottom:4px;margin-right:0}div.dt-button-collection button.dt-button:active:not(.disabled),div.dt-button-collection button.dt-button.active:not(.disabled),div.dt-button-collection div.dt-button:active:not(.disabled),div.dt-button-collection div.dt-button.active:not(.disabled),div.dt-button-collection a.dt-button:active:not(.disabled),div.dt-button-collection a.dt-button.active:not(.disabled){background-color:#dadada;background-image:-webkit-linear-gradient(top, #f0f0f0 0%, #dadada 100%);background-image:-moz-linear-gradient(top, #f0f0f0 0%, #dadada 100%);background-image:-ms-linear-gradient(top, #f0f0f0 0%, #dadada 100%);background-image:-o-linear-gradient(top, #f0f0f0 0%, #dadada 100%);background-image:linear-gradient(to bottom, #f0f0f0 0%, #dadada 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f0f0f0', EndColorStr='#dadada');box-shadow:inset 1px 1px 3px #666}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>:last-child{display:block !important;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0,0,0,0.3)), color-stop(1, rgba(0,0,0,0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:2001}@media screen and (max-width: 640px){div.dt-buttons{float:none !important;text-align:center}}button.dt-button.processing,div.dt-button.processing,a.dt-button.processing{color:rgba(0,0,0,0.2)}button.dt-button.processing:after,div.dt-button.processing:after,a.dt-button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.foundation.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,214 @@
+@keyframes dtb-spinner {
+  100% {
+    transform: rotate(360deg);
+  }
+}
+@-o-keyframes dtb-spinner {
+  100% {
+    -o-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-ms-keyframes dtb-spinner {
+  100% {
+    -ms-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-webkit-keyframes dtb-spinner {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-moz-keyframes dtb-spinner {
+  100% {
+    -moz-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+div.dt-button-info {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 400px;
+  margin-top: -100px;
+  margin-left: -200px;
+  background-color: white;
+  border: 2px solid #111;
+  box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
+  border-radius: 3px;
+  text-align: center;
+  z-index: 21;
+}
+div.dt-button-info h2 {
+  padding: 0.5em;
+  margin: 0;
+  font-weight: normal;
+  border-bottom: 1px solid #ddd;
+  background-color: #f3f3f3;
+}
+div.dt-button-info > div {
+  padding: 1em;
+}
+
+div.dt-button-collection-title {
+  text-align: center;
+  padding: 0.3em 0 0.5em;
+  font-size: 0.9em;
+}
+
+div.dt-button-collection-title:empty {
+  display: none;
+}
+
+ul.dt-buttons li {
+  margin: 0;
+}
+ul.dt-buttons li.active a {
+  box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.6);
+}
+
+ul.dt-buttons.button-group a {
+  margin-bottom: 0;
+}
+
+div.dt-button-collection {
+  position: absolute;
+}
+div.dt-button-collection.fixed {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  margin-left: -75px;
+  border-radius: 0;
+}
+div.dt-button-collection.fixed.two-column {
+  margin-left: -200px;
+}
+div.dt-button-collection.fixed.three-column {
+  margin-left: -225px;
+}
+div.dt-button-collection.fixed.four-column {
+  margin-left: -300px;
+}
+div.dt-button-collection > :last-child {
+  display: block !important;
+  -webkit-column-gap: 8px;
+  -moz-column-gap: 8px;
+  -ms-column-gap: 8px;
+  -o-column-gap: 8px;
+  column-gap: 8px;
+}
+div.dt-button-collection > :last-child > * {
+  -webkit-column-break-inside: avoid;
+  break-inside: avoid;
+}
+div.dt-button-collection.two-column {
+  width: 400px;
+}
+div.dt-button-collection.two-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  -ms-column-count: 2;
+  -o-column-count: 2;
+  column-count: 2;
+}
+div.dt-button-collection.three-column {
+  width: 450px;
+}
+div.dt-button-collection.three-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 3;
+  -moz-column-count: 3;
+  -ms-column-count: 3;
+  -o-column-count: 3;
+  column-count: 3;
+}
+div.dt-button-collection.four-column {
+  width: 600px;
+}
+div.dt-button-collection.four-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 4;
+  -moz-column-count: 4;
+  -ms-column-count: 4;
+  -o-column-count: 4;
+  column-count: 4;
+}
+div.dt-button-collection .dt-button {
+  border-radius: 0;
+}
+div.dt-button-collection.fixed {
+  max-width: none;
+}
+div.dt-button-collection.fixed:before, div.dt-button-collection.fixed:after {
+  display: none;
+}
+
+div.dt-button-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 88;
+}
+
+@media screen and (max-width: 767px) {
+  ul.dt-buttons {
+    float: none;
+    width: 100%;
+    text-align: center;
+    margin-bottom: 0.5rem;
+  }
+  ul.dt-buttons li {
+    float: none;
+  }
+}
+div.button-group.stacked.dropdown-pane {
+  margin-top: 2px;
+  padding: 1px;
+  z-index: 89;
+}
+div.button-group.stacked.dropdown-pane a.button {
+  display: block;
+  margin-bottom: 1px;
+  border-right: none;
+}
+div.button-group.stacked.dropdown-pane a.button:last-child {
+  margin-bottom: 0;
+  margin-right: 1px;
+}
+
+div.dt-buttons button.button.processing,
+div.dt-buttons div.button.processing,
+div.dt-buttons a.button.processing {
+  color: rgba(0, 0, 0, 0.2);
+  color: rgba(255, 255, 255, 0.2);
+  border-top-color: white;
+  border-bottom-color: white;
+}
+div.dt-buttons button.button.processing:after,
+div.dt-buttons div.button.processing:after,
+div.dt-buttons a.button.processing:after {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 16px;
+  height: 16px;
+  margin: -8px 0 0 -8px;
+  box-sizing: border-box;
+  display: block;
+  content: ' ';
+  border: 2px solid #282828;
+  border-radius: 50%;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  animation: dtb-spinner 1500ms infinite linear;
+  -o-animation: dtb-spinner 1500ms infinite linear;
+  -ms-animation: dtb-spinner 1500ms infinite linear;
+  -webkit-animation: dtb-spinner 1500ms infinite linear;
+  -moz-animation: dtb-spinner 1500ms infinite linear;
+}
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.foundation.min.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-button-collection-title{text-align:center;padding:0.3em 0 0.5em;font-size:0.9em}div.dt-button-collection-title:empty{display:none}ul.dt-buttons li{margin:0}ul.dt-buttons li.active a{box-shadow:inset 0 0 10px rgba(0,0,0,0.6)}ul.dt-buttons.button-group a{margin-bottom:0}div.dt-button-collection{position:absolute}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>:last-child{display:block !important;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.fixed{max-width:none}div.dt-button-collection.fixed:before,div.dt-button-collection.fixed:after{display:none}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:88}@media screen and (max-width: 767px){ul.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5rem}ul.dt-buttons li{float:none}}div.button-group.stacked.dropdown-pane{margin-top:2px;padding:1px;z-index:89}div.button-group.stacked.dropdown-pane a.button{display:block;margin-bottom:1px;border-right:none}div.button-group.stacked.dropdown-pane a.button:last-child{margin-bottom:0;margin-right:1px}div.dt-buttons button.button.processing,div.dt-buttons div.button.processing,div.dt-buttons a.button.processing{color:rgba(0,0,0,0.2);color:rgba(255,255,255,0.2);border-top-color:white;border-bottom-color:white}div.dt-buttons button.button.processing:after,div.dt-buttons div.button.processing:after,div.dt-buttons a.button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.jqueryui.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,240 @@
+@keyframes dtb-spinner {
+  100% {
+    transform: rotate(360deg);
+  }
+}
+@-o-keyframes dtb-spinner {
+  100% {
+    -o-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-ms-keyframes dtb-spinner {
+  100% {
+    -ms-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-webkit-keyframes dtb-spinner {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-moz-keyframes dtb-spinner {
+  100% {
+    -moz-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+div.dt-button-info {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 400px;
+  margin-top: -100px;
+  margin-left: -200px;
+  background-color: white;
+  border: 2px solid #111;
+  box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
+  border-radius: 3px;
+  text-align: center;
+  z-index: 21;
+}
+div.dt-button-info h2 {
+  padding: 0.5em;
+  margin: 0;
+  font-weight: normal;
+  border-bottom: 1px solid #ddd;
+  background-color: #f3f3f3;
+}
+div.dt-button-info > div {
+  padding: 1em;
+}
+
+div.dt-button-collection-title {
+  text-align: center;
+  padding: 0.3em 0 0.5em;
+  font-size: 0.9em;
+}
+
+div.dt-button-collection-title:empty {
+  display: none;
+}
+
+div.dt-buttons {
+  position: relative;
+  float: left;
+}
+div.dt-buttons .dt-button {
+  margin-right: 0;
+}
+div.dt-buttons .dt-button span.ui-icon {
+  display: inline-block;
+  vertical-align: middle;
+  margin-top: -2px;
+}
+div.dt-buttons .dt-button:active {
+  outline: none;
+}
+div.dt-buttons .dt-button:hover > span {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+
+div.dt-button-collection {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 150px;
+  margin-top: 3px;
+  padding: 8px 8px 4px 8px;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.4);
+  background-color: #f3f3f3;
+  background-color: rgba(255, 255, 255, 0.3);
+  overflow: hidden;
+  z-index: 2002;
+  border-radius: 5px;
+  box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+  z-index: 2002;
+  -webkit-column-gap: 0;
+  -moz-column-gap: 0;
+  -ms-column-gap: 0;
+  -o-column-gap: 0;
+  column-gap: 0;
+}
+div.dt-button-collection .dt-button {
+  position: relative;
+  left: 0;
+  right: 0;
+  width: 100%;
+  box-sizing: border-box;
+  display: block;
+  float: none;
+  margin-right: 0;
+  margin-bottom: 4px;
+}
+div.dt-button-collection .dt-button:hover > span {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+div.dt-button-collection.fixed {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  margin-left: -75px;
+  border-radius: 0;
+}
+div.dt-button-collection.fixed.two-column {
+  margin-left: -200px;
+}
+div.dt-button-collection.fixed.three-column {
+  margin-left: -225px;
+}
+div.dt-button-collection.fixed.four-column {
+  margin-left: -300px;
+}
+div.dt-button-collection > :last-child {
+  display: block !important;
+  -webkit-column-gap: 8px;
+  -moz-column-gap: 8px;
+  -ms-column-gap: 8px;
+  -o-column-gap: 8px;
+  column-gap: 8px;
+}
+div.dt-button-collection > :last-child > * {
+  -webkit-column-break-inside: avoid;
+  break-inside: avoid;
+}
+div.dt-button-collection.two-column {
+  width: 400px;
+}
+div.dt-button-collection.two-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  -ms-column-count: 2;
+  -o-column-count: 2;
+  column-count: 2;
+}
+div.dt-button-collection.three-column {
+  width: 450px;
+}
+div.dt-button-collection.three-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 3;
+  -moz-column-count: 3;
+  -ms-column-count: 3;
+  -o-column-count: 3;
+  column-count: 3;
+}
+div.dt-button-collection.four-column {
+  width: 600px;
+}
+div.dt-button-collection.four-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 4;
+  -moz-column-count: 4;
+  -ms-column-count: 4;
+  -o-column-count: 4;
+  column-count: 4;
+}
+div.dt-button-collection .dt-button {
+  border-radius: 0;
+}
+
+div.dt-button-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.7);
+  /* Fallback */
+  background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  /* IE10 Consumer Preview */
+  background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  /* Firefox */
+  background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  /* Opera */
+  background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));
+  /* Webkit (Safari/Chrome 10) */
+  background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  /* Webkit (Chrome 11+) */
+  background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  /* W3C Markup, IE10 Release Preview */
+  z-index: 2001;
+}
+
+@media screen and (max-width: 640px) {
+  div.dt-buttons {
+    float: none !important;
+    text-align: center;
+  }
+}
+button.dt-button.processing,
+div.dt-button.processing,
+a.dt-button.processing {
+  color: rgba(0, 0, 0, 0.2);
+}
+button.dt-button.processing:after,
+div.dt-button.processing:after,
+a.dt-button.processing:after {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 16px;
+  height: 16px;
+  margin: -8px 0 0 -8px;
+  box-sizing: border-box;
+  display: block;
+  content: ' ';
+  border: 2px solid #282828;
+  border-radius: 50%;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  animation: dtb-spinner 1500ms infinite linear;
+  -o-animation: dtb-spinner 1500ms infinite linear;
+  -ms-animation: dtb-spinner 1500ms infinite linear;
+  -webkit-animation: dtb-spinner 1500ms infinite linear;
+  -moz-animation: dtb-spinner 1500ms infinite linear;
+}
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-button-collection-title{text-align:center;padding:0.3em 0 0.5em;font-size:0.9em}div.dt-button-collection-title:empty{display:none}div.dt-buttons{position:relative;float:left}div.dt-buttons .dt-button{margin-right:0}div.dt-buttons .dt-button span.ui-icon{display:inline-block;vertical-align:middle;margin-top:-2px}div.dt-buttons .dt-button:active{outline:none}div.dt-buttons .dt-button:hover>span{background-color:rgba(0,0,0,0.05)}div.dt-button-collection{position:absolute;top:0;left:0;width:150px;margin-top:3px;padding:8px 8px 4px 8px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.4);background-color:#f3f3f3;background-color:rgba(255,255,255,0.3);overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 3px 5px rgba(0,0,0,0.3);z-index:2002;-webkit-column-gap:0;-moz-column-gap:0;-ms-column-gap:0;-o-column-gap:0;column-gap:0}div.dt-button-collection .dt-button{position:relative;left:0;right:0;width:100%;box-sizing:border-box;display:block;float:none;margin-right:0;margin-bottom:4px}div.dt-button-collection .dt-button:hover>span{background-color:rgba(0,0,0,0.05)}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>:last-child{display:block !important;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0,0,0,0.3)), color-stop(1, rgba(0,0,0,0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:2001}@media screen and (max-width: 640px){div.dt-buttons{float:none !important;text-align:center}}button.dt-button.processing,div.dt-button.processing,a.dt-button.processing{color:rgba(0,0,0,0.2)}button.dt-button.processing:after,div.dt-button.processing:after,a.dt-button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.semanticui.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,193 @@
+@charset "UTF-8";
+@keyframes dtb-spinner {
+  100% {
+    transform: rotate(360deg);
+  }
+}
+@-o-keyframes dtb-spinner {
+  100% {
+    -o-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-ms-keyframes dtb-spinner {
+  100% {
+    -ms-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-webkit-keyframes dtb-spinner {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-moz-keyframes dtb-spinner {
+  100% {
+    -moz-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+div.dt-button-info {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 400px;
+  margin-top: -100px;
+  margin-left: -200px;
+  background-color: white;
+  border: 2px solid #111;
+  box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
+  border-radius: 3px;
+  text-align: center;
+  z-index: 21;
+}
+div.dt-button-info h2 {
+  padding: 0.5em;
+  margin: 0;
+  font-weight: normal;
+  border-bottom: 1px solid #ddd;
+  background-color: #f3f3f3;
+}
+div.dt-button-info > div {
+  padding: 1em;
+}
+
+div.dt-button-collection-title {
+  text-align: center;
+  padding: 0.3em 0 0.5em;
+  font-size: 0.9em;
+}
+
+div.dt-button-collection-title:empty {
+  display: none;
+}
+
+div.dt-button-collection {
+  position: absolute;
+  top: 0;
+  left: 0;
+  min-width: 200px;
+  margin-top: 3px !important;
+  z-index: 2002;
+  background: white;
+}
+div.dt-button-collection.fixed {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  margin-left: -75px;
+  border-radius: 0;
+}
+div.dt-button-collection.fixed.two-column {
+  margin-left: -200px;
+}
+div.dt-button-collection.fixed.three-column {
+  margin-left: -225px;
+}
+div.dt-button-collection.fixed.four-column {
+  margin-left: -300px;
+}
+div.dt-button-collection > :last-child {
+  display: block !important;
+  -webkit-column-gap: 8px;
+  -moz-column-gap: 8px;
+  -ms-column-gap: 8px;
+  -o-column-gap: 8px;
+  column-gap: 8px;
+}
+div.dt-button-collection > :last-child > * {
+  -webkit-column-break-inside: avoid;
+  break-inside: avoid;
+}
+div.dt-button-collection.two-column {
+  width: 400px;
+}
+div.dt-button-collection.two-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  -ms-column-count: 2;
+  -o-column-count: 2;
+  column-count: 2;
+}
+div.dt-button-collection.three-column {
+  width: 450px;
+}
+div.dt-button-collection.three-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 3;
+  -moz-column-count: 3;
+  -ms-column-count: 3;
+  -o-column-count: 3;
+  column-count: 3;
+}
+div.dt-button-collection.four-column {
+  width: 600px;
+}
+div.dt-button-collection.four-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 4;
+  -moz-column-count: 4;
+  -ms-column-count: 4;
+  -o-column-count: 4;
+  column-count: 4;
+}
+div.dt-button-collection .dt-button {
+  border-radius: 0;
+}
+
+button.buttons-collection.ui.button span:after {
+  display: inline-block;
+  content: "▾";
+  padding-left: 0.5em;
+}
+
+div.dt-button-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 2001;
+}
+
+@media screen and (max-width: 767px) {
+  div.dt-buttons {
+    float: none;
+    width: 100%;
+    text-align: center;
+    margin-bottom: 0.5em;
+  }
+  div.dt-buttons a.btn {
+    float: none;
+  }
+}
+div.dt-buttons button.button.processing,
+div.dt-buttons div.button.processing,
+div.dt-buttons a.button.processing {
+  position: relative;
+  color: rgba(0, 0, 0, 0.2);
+}
+div.dt-buttons button.button.processing:after,
+div.dt-buttons div.button.processing:after,
+div.dt-buttons a.button.processing:after {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 16px;
+  height: 16px;
+  margin: -8px 0 0 -8px;
+  box-sizing: border-box;
+  display: block;
+  content: ' ';
+  border: 2px solid #282828;
+  border-radius: 50%;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  animation: dtb-spinner 1500ms infinite linear;
+  -o-animation: dtb-spinner 1500ms infinite linear;
+  -ms-animation: dtb-spinner 1500ms infinite linear;
+  -webkit-animation: dtb-spinner 1500ms infinite linear;
+  -moz-animation: dtb-spinner 1500ms infinite linear;
+}
Index: public/vendors/dataTable/Buttons-1.6.1/css/buttons.semanticui.min.css
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/buttons.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/buttons.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+﻿@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-button-collection-title{text-align:center;padding:0.3em 0 0.5em;font-size:0.9em}div.dt-button-collection-title:empty{display:none}div.dt-button-collection{position:absolute;top:0;left:0;min-width:200px;margin-top:3px !important;z-index:2002;background:white}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>:last-child{display:block !important;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection .dt-button{border-radius:0}button.buttons-collection.ui.button span:after{display:inline-block;content:"▾";padding-left:0.5em}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2001}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}}div.dt-buttons button.button.processing,div.dt-buttons div.button.processing,div.dt-buttons a.button.processing{position:relative;color:rgba(0,0,0,0.2)}div.dt-buttons button.button.processing:after,div.dt-buttons div.button.processing:after,div.dt-buttons a.button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}
Index: public/vendors/dataTable/Buttons-1.6.1/css/common.scss
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/common.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/common.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,37 @@
+
+div.dt-button-info {
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	width: 400px;
+	margin-top: -100px;
+	margin-left: -200px;
+	background-color: white;
+	border: 2px solid #111;
+	box-shadow: 3px 3px 8px rgba( 0, 0, 0, 0.3);
+	border-radius: 3px;
+	text-align: center;
+	z-index: 21;
+
+	h2 {
+		padding: 0.5em;
+		margin: 0;
+		font-weight: normal;
+		border-bottom: 1px solid #ddd;
+		background-color: #f3f3f3;
+	}
+
+	> div {
+		padding: 1em;
+	}
+}
+
+div.dt-button-collection-title {
+	text-align: center;
+	padding: 0.3em 0 0.5em;
+	font-size: 0.9em;
+}
+
+div.dt-button-collection-title:empty {
+	display: none;
+}
Index: public/vendors/dataTable/Buttons-1.6.1/css/mixins.scss
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/css/mixins.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/css/mixins.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,153 @@
+
+@mixin dtb-two-stop-gradient($fromColor, $toColor) {
+	background-color: $toColor; /* Fallback */
+	background-image: -webkit-linear-gradient(top, $fromColor 0%, $toColor 100%); /* Chrome 10+, Saf5.1+, iOS 5+ */
+	background-image:    -moz-linear-gradient(top, $fromColor 0%, $toColor 100%); /* FF3.6 */
+	background-image:     -ms-linear-gradient(top, $fromColor 0%, $toColor 100%); /* IE10 */
+	background-image:      -o-linear-gradient(top, $fromColor 0%, $toColor 100%); /* Opera 11.10+ */
+	background-image:         linear-gradient(to bottom, $fromColor 0%, $toColor 100%);
+	filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#{nth( $fromColor, 1 )}', EndColorStr='#{nth( $toColor, 1 )}');
+}
+
+@mixin dtb-radial-gradient ($fromColor, $toColor ) {
+	background: $toColor; /* Fallback */
+	background:     -ms-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* IE10 Consumer Preview */ 
+	background:    -moz-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Firefox */ 
+	background:      -o-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Opera */ 
+	background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, $fromColor), color-stop(1, $toColor)); /* Webkit (Safari/Chrome 10) */ 
+	background: -webkit-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Webkit (Chrome 11+) */ 
+	background: radial-gradient(ellipse farthest-corner at center, $fromColor 0%, $toColor 100%); /* W3C Markup, IE10 Release Preview */ 
+}
+
+
+@mixin dtb-fixed-collection {
+	// Fixed positioning feature
+	&.fixed {
+		position: fixed;
+		top: 50%;
+		left: 50%;
+		margin-left: -75px;
+		border-radius: 0;
+
+		&.two-column {
+			margin-left: -200px;
+		}
+
+		&.three-column {
+			margin-left: -225px;
+		}
+
+		&.four-column {
+			margin-left: -300px;
+		}
+	}
+
+	> :last-child {
+		> * {
+			-webkit-column-break-inside: avoid;
+			break-inside: avoid;
+		}
+
+		// Multi-column layout feature
+		display: block !important;
+		-webkit-column-gap: 8px;
+		-moz-column-gap: 8px;
+			-ms-column-gap: 8px;
+			-o-column-gap: 8px;
+		column-gap: 8px;
+	}
+
+	&.two-column {
+		width: 400px;
+
+		> :last-child {
+			padding-bottom: 1px;
+
+			-webkit-column-count: 2;
+				-moz-column-count: 2;
+				-ms-column-count: 2;
+					-o-column-count: 2;
+			column-count: 2;
+		}
+	}
+
+	&.three-column {
+		width: 450px;
+
+		> :last-child {
+			padding-bottom: 1px;
+
+			-webkit-column-count: 3;
+				-moz-column-count: 3;
+				-ms-column-count: 3;
+					-o-column-count: 3;
+			column-count: 3;
+		}
+	}
+
+	&.four-column {
+		width: 600px;
+
+		> :last-child {
+			padding-bottom: 1px;
+
+			-webkit-column-count: 4;
+				-moz-column-count: 4;
+				-ms-column-count: 4;
+					-o-column-count: 4;
+			column-count: 4;
+		}
+	}
+
+	// Chrome fix - 531528
+	.dt-button {
+		border-radius: 0;
+	}
+}
+
+
+@mixin dtb-processing {
+	color: rgba(0, 0, 0, 0.2);
+
+	&:after {
+		position: absolute;
+	    top: 50%;
+		left: 50%;
+		width: 16px;
+		height: 16px;
+		margin: -8px 0 0 -8px;
+		box-sizing: border-box;
+
+		display: block;
+		content: ' ';
+		border: 2px solid rgb(40,40,40);
+		border-radius: 50%;
+		border-left-color: transparent;
+		border-right-color: transparent;
+		animation: dtb-spinner 1500ms infinite linear;
+			-o-animation: dtb-spinner 1500ms infinite linear;
+			-ms-animation: dtb-spinner 1500ms infinite linear;
+			-webkit-animation: dtb-spinner 1500ms infinite linear;
+			-moz-animation: dtb-spinner 1500ms infinite linear;
+	}
+}
+
+@keyframes dtb-spinner {
+	100%{ transform: rotate(360deg); }
+}
+
+@-o-keyframes dtb-spinner {
+	100%{ -o-transform: rotate(360deg); transform: rotate(360deg); }
+}
+
+@-ms-keyframes dtb-spinner {
+	100%{ -ms-transform: rotate(360deg); transform: rotate(360deg); }
+}
+
+@-webkit-keyframes dtb-spinner {
+	100%{ -webkit-transform: rotate(360deg); transform: rotate(360deg); }
+}
+
+@-moz-keyframes dtb-spinner {
+	100%{ -moz-transform: rotate(360deg); transform: rotate(360deg); }
+}
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,70 @@
+/*! Bootstrap integration for DataTables' Buttons
+ * ©2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend( true, DataTable.Buttons.defaults, {
+	dom: {
+		container: {
+			className: 'dt-buttons btn-group'
+		},
+		button: {
+			className: 'btn btn-default'
+		},
+		collection: {
+			tag: 'ul',
+			className: 'dropdown-menu',
+			button: {
+				tag: 'li',
+				className: 'dt-button',
+				active: 'active',
+				disabled: 'disabled'
+			},
+			buttonLiner: {
+				tag: 'a',
+				className: ''
+			}
+		}
+	}
+} );
+
+DataTable.ext.buttons.collection.text = function ( dt ) {
+	return dt.i18n('buttons.collection', 'Collection <span class="caret"/>');
+};
+
+
+return DataTable.Buttons;
+}));
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ Bootstrap integration for DataTables' Buttons
+ ©2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs")(a,b).$);b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group"},
+button:{className:"btn btn-default"},collection:{tag:"ul",className:"dropdown-menu",button:{tag:"li",className:"dt-button",active:"active",disabled:"disabled"},buttonLiner:{tag:"a",className:""}}}});a.ext.buttons.collection.text=function(a){return a.i18n("buttons.collection",'Collection <span class="caret"/>')};return a.Buttons});
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap4.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,68 @@
+/*! Bootstrap integration for DataTables' Buttons
+ * ©2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+$.extend( true, DataTable.Buttons.defaults, {
+	dom: {
+		container: {
+			className: 'dt-buttons btn-group flex-wrap'
+		},
+		button: {
+			className: 'btn btn-secondary'
+		},
+		collection: {
+			tag: 'div',
+			className: 'dropdown-menu',
+			button: {
+				tag: 'a',
+				className: 'dt-button dropdown-item',
+				active: 'active',
+				disabled: 'disabled'
+			}
+		}
+	},
+	buttonCreated: function ( config, button ) {
+		return config.buttons ?
+			$('<div class="btn-group"/>').append(button) :
+			button;
+	}
+} );
+
+DataTable.ext.buttons.collection.className += ' dropdown-toggle';
+DataTable.ext.buttons.collection.rightAlignClassName = 'dropdown-menu-right';
+
+return DataTable.Buttons;
+}));
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ Bootstrap integration for DataTables' Buttons
+ ©2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group flex-wrap"},
+button:{className:"btn btn-secondary"},collection:{tag:"div",className:"dropdown-menu",button:{tag:"a",className:"dt-button dropdown-item",active:"active",disabled:"disabled"}}},buttonCreated:function(a,b){return a.buttons?c('<div class="btn-group"/>').append(b):b}});a.ext.buttons.collection.className+=" dropdown-toggle";a.ext.buttons.collection.rightAlignClassName="dropdown-menu-right";return a.Buttons});
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.colVis.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.colVis.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.colVis.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,206 @@
+/*!
+ * Column visibility buttons for Buttons and DataTables.
+ * 2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend( DataTable.ext.buttons, {
+	// A collection of column visibility buttons
+	colvis: function ( dt, conf ) {
+		return {
+			extend: 'collection',
+			text: function ( dt ) {
+				return dt.i18n( 'buttons.colvis', 'Column visibility' );
+			},
+			className: 'buttons-colvis',
+			buttons: [ {
+				extend: 'columnsToggle',
+				columns: conf.columns,
+				columnText: conf.columnText
+			} ]
+		};
+	},
+
+	// Selected columns with individual buttons - toggle column visibility
+	columnsToggle: function ( dt, conf ) {
+		var columns = dt.columns( conf.columns ).indexes().map( function ( idx ) {
+			return {
+				extend: 'columnToggle',
+				columns: idx,
+				columnText: conf.columnText
+			};
+		} ).toArray();
+
+		return columns;
+	},
+
+	// Single button to toggle column visibility
+	columnToggle: function ( dt, conf ) {
+		return {
+			extend: 'columnVisibility',
+			columns: conf.columns,
+			columnText: conf.columnText
+		};
+	},
+
+	// Selected columns with individual buttons - set column visibility
+	columnsVisibility: function ( dt, conf ) {
+		var columns = dt.columns( conf.columns ).indexes().map( function ( idx ) {
+			return {
+				extend: 'columnVisibility',
+				columns: idx,
+				visibility: conf.visibility,
+				columnText: conf.columnText
+			};
+		} ).toArray();
+
+		return columns;
+	},
+
+	// Single button to set column visibility
+	columnVisibility: {
+		columns: undefined, // column selector
+		text: function ( dt, button, conf ) {
+			return conf._columnText( dt, conf );
+		},
+		className: 'buttons-columnVisibility',
+		action: function ( e, dt, button, conf ) {
+			var col = dt.columns( conf.columns );
+			var curr = col.visible();
+
+			col.visible( conf.visibility !== undefined ?
+				conf.visibility :
+				! (curr.length ? curr[0] : false )
+			);
+		},
+		init: function ( dt, button, conf ) {
+			var that = this;
+			button.attr( 'data-cv-idx', conf.columns );
+
+			dt
+				.on( 'column-visibility.dt'+conf.namespace, function (e, settings) {
+					if ( ! settings.bDestroying && settings.nTable == dt.settings()[0].nTable ) {
+						that.active( dt.column( conf.columns ).visible() );
+					}
+				} )
+				.on( 'column-reorder.dt'+conf.namespace, function (e, settings, details) {
+					if ( dt.columns( conf.columns ).count() !== 1 ) {
+						return;
+					}
+
+					// This button controls the same column index but the text for the column has
+					// changed
+					button.text( conf._columnText( dt, conf ) );
+
+					// Since its a different column, we need to check its visibility
+					that.active( dt.column( conf.columns ).visible() );
+				} );
+
+			this.active( dt.column( conf.columns ).visible() );
+		},
+		destroy: function ( dt, button, conf ) {
+			dt
+				.off( 'column-visibility.dt'+conf.namespace )
+				.off( 'column-reorder.dt'+conf.namespace );
+		},
+
+		_columnText: function ( dt, conf ) {
+			// Use DataTables' internal data structure until this is presented
+			// is a public API. The other option is to use
+			// `$( column(col).node() ).text()` but the node might not have been
+			// populated when Buttons is constructed.
+			var idx = dt.column( conf.columns ).index();
+			var title = dt.settings()[0].aoColumns[ idx ].sTitle
+				.replace(/\n/g," ")        // remove new lines
+				.replace(/<br\s*\/?>/gi, " ")  // replace line breaks with spaces
+				.replace(/<select(.*?)<\/select>/g, "") // remove select tags, including options text
+				.replace(/<!\-\-.*?\-\->/g, "") // strip HTML comments
+				.replace(/<.*?>/g, "")   // strip HTML
+				.replace(/^\s+|\s+$/g,""); // trim
+
+			return conf.columnText ?
+				conf.columnText( dt, idx, title ) :
+				title;
+		}
+	},
+
+
+	colvisRestore: {
+		className: 'buttons-colvisRestore',
+
+		text: function ( dt ) {
+			return dt.i18n( 'buttons.colvisRestore', 'Restore visibility' );
+		},
+
+		init: function ( dt, button, conf ) {
+			conf._visOriginal = dt.columns().indexes().map( function ( idx ) {
+				return dt.column( idx ).visible();
+			} ).toArray();
+		},
+
+		action: function ( e, dt, button, conf ) {
+			dt.columns().every( function ( i ) {
+				// Take into account that ColReorder might have disrupted our
+				// indexes
+				var idx = dt.colReorder && dt.colReorder.transpose ?
+					dt.colReorder.transpose( i, 'toOriginal' ) :
+					i;
+
+				this.visible( conf._visOriginal[ idx ] );
+			} );
+		}
+	},
+
+
+	colvisGroup: {
+		className: 'buttons-colvisGroup',
+
+		action: function ( e, dt, button, conf ) {
+			dt.columns( conf.show ).visible( true, false );
+			dt.columns( conf.hide ).visible( false, false );
+
+			dt.columns.adjust();
+		},
+
+		show: [],
+
+		hide: []
+	}
+} );
+
+
+return DataTable.Buttons;
+}));
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.colVis.min.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.colVis.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.colVis.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,10 @@
+/*!
+ Column visibility buttons for Buttons and DataTables.
+ 2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(f){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(c){return f(c,window,document)}):"object"===typeof exports?module.exports=function(c,e){c||(c=window);e&&e.fn.dataTable||(e=require("datatables.net")(c,e).$);e.fn.dataTable.Buttons||require("datatables.net-buttons")(c,e);return f(e,c,c.document)}:f(jQuery,window,document)})(function(f,c,e,h){c=f.fn.dataTable;f.extend(c.ext.buttons,{colvis:function(a,b){return{extend:"collection",
+text:function(b){return b.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",buttons:[{extend:"columnsToggle",columns:b.columns,columnText:b.columnText}]}},columnsToggle:function(a,b){return a.columns(b.columns).indexes().map(function(a){return{extend:"columnToggle",columns:a,columnText:b.columnText}}).toArray()},columnToggle:function(a,b){return{extend:"columnVisibility",columns:b.columns,columnText:b.columnText}},columnsVisibility:function(a,b){return a.columns(b.columns).indexes().map(function(a){return{extend:"columnVisibility",
+columns:a,visibility:b.visibility,columnText:b.columnText}}).toArray()},columnVisibility:{columns:h,text:function(a,b,d){return d._columnText(a,d)},className:"buttons-columnVisibility",action:function(a,b,d,g){a=b.columns(g.columns);b=a.visible();a.visible(g.visibility!==h?g.visibility:!(b.length&&b[0]))},init:function(a,b,d){var g=this;b.attr("data-cv-idx",d.columns);a.on("column-visibility.dt"+d.namespace,function(b,c){c.bDestroying||c.nTable!=a.settings()[0].nTable||g.active(a.column(d.columns).visible())}).on("column-reorder.dt"+
+d.namespace,function(c,e,f){1===a.columns(d.columns).count()&&(b.text(d._columnText(a,d)),g.active(a.column(d.columns).visible()))});this.active(a.column(d.columns).visible())},destroy:function(a,b,d){a.off("column-visibility.dt"+d.namespace).off("column-reorder.dt"+d.namespace)},_columnText:function(a,b){var d=a.column(b.columns).index(),c=a.settings()[0].aoColumns[d].sTitle.replace(/\n/g," ").replace(/<br\s*\/?>/gi," ").replace(/<select(.*?)<\/select>/g,"").replace(/<!\-\-.*?\-\->/g,"").replace(/<.*?>/g,
+"").replace(/^\s+|\s+$/g,"");return b.columnText?b.columnText(a,d,c):c}},colvisRestore:{className:"buttons-colvisRestore",text:function(a){return a.i18n("buttons.colvisRestore","Restore visibility")},init:function(a,b,d){d._visOriginal=a.columns().indexes().map(function(b){return a.column(b).visible()}).toArray()},action:function(a,b,d,c){b.columns().every(function(a){a=b.colReorder&&b.colReorder.transpose?b.colReorder.transpose(a,"toOriginal"):a;this.visible(c._visOriginal[a])})}},colvisGroup:{className:"buttons-colvisGroup",
+action:function(a,b,d,c){b.columns(c.show).visible(!0,!1);b.columns(c.hide).visible(!1,!1);b.columns.adjust()},show:[],hide:[]}});return c.Buttons});
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.flash.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.flash.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.flash.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1456 @@
+/*!
+ * Flash export buttons for Buttons and DataTables.
+ * 2015-2017 SpryMedia Ltd - datatables.net/license
+ *
+ * ZeroClipbaord - MIT license
+ * Copyright (c) 2012 Joseph Huckaby
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * ZeroClipboard dependency
+ */
+
+/*
+ * ZeroClipboard 1.0.4 with modifications
+ * Author: Joseph Huckaby
+ * License: MIT
+ *
+ * Copyright (c) 2012 Joseph Huckaby
+ */
+var ZeroClipboard_TableTools = {
+	version: "1.0.4-TableTools2",
+	clients: {}, // registered upload clients on page, indexed by id
+	moviePath: '', // URL to movie
+	nextId: 1, // ID of next movie
+
+	$: function(thingy) {
+		// simple DOM lookup utility function
+		if (typeof(thingy) == 'string') {
+			thingy = document.getElementById(thingy);
+		}
+		if (!thingy.addClass) {
+			// extend element with a few useful methods
+			thingy.hide = function() { this.style.display = 'none'; };
+			thingy.show = function() { this.style.display = ''; };
+			thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
+			thingy.removeClass = function(name) {
+				this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, '');
+			};
+			thingy.hasClass = function(name) {
+				return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
+			};
+		}
+		return thingy;
+	},
+
+	setMoviePath: function(path) {
+		// set path to ZeroClipboard.swf
+		this.moviePath = path;
+	},
+
+	dispatch: function(id, eventName, args) {
+		// receive event from flash movie, send to client
+		var client = this.clients[id];
+		if (client) {
+			client.receiveEvent(eventName, args);
+		}
+	},
+
+	log: function ( str ) {
+		console.log( 'Flash: '+str );
+	},
+
+	register: function(id, client) {
+		// register new client to receive events
+		this.clients[id] = client;
+	},
+
+	getDOMObjectPosition: function(obj) {
+		// get absolute coordinates for dom element
+		var info = {
+			left: 0,
+			top: 0,
+			width: obj.width ? obj.width : obj.offsetWidth,
+			height: obj.height ? obj.height : obj.offsetHeight
+		};
+
+		if ( obj.style.width !== "" ) {
+			info.width = obj.style.width.replace("px","");
+		}
+
+		if ( obj.style.height !== "" ) {
+			info.height = obj.style.height.replace("px","");
+		}
+
+		while (obj) {
+			info.left += obj.offsetLeft;
+			info.top += obj.offsetTop;
+			obj = obj.offsetParent;
+		}
+
+		return info;
+	},
+
+	Client: function(elem) {
+		// constructor for new simple upload client
+		this.handlers = {};
+
+		// unique ID
+		this.id = ZeroClipboard_TableTools.nextId++;
+		this.movieId = 'ZeroClipboard_TableToolsMovie_' + this.id;
+
+		// register client with singleton to receive flash events
+		ZeroClipboard_TableTools.register(this.id, this);
+
+		// create movie
+		if (elem) {
+			this.glue(elem);
+		}
+	}
+};
+
+ZeroClipboard_TableTools.Client.prototype = {
+
+	id: 0, // unique ID for us
+	ready: false, // whether movie is ready to receive events or not
+	movie: null, // reference to movie object
+	clipText: '', // text to copy to clipboard
+	fileName: '', // default file save name
+	action: 'copy', // action to perform
+	handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
+	cssEffects: true, // enable CSS mouse effects on dom container
+	handlers: null, // user event handlers
+	sized: false,
+	sheetName: '', // default sheet name for excel export
+
+	glue: function(elem, title) {
+		// glue to DOM element
+		// elem can be ID or actual DOM element object
+		this.domElement = ZeroClipboard_TableTools.$(elem);
+
+		// float just above object, or zIndex 99 if dom element isn't set
+		var zIndex = 99;
+		if (this.domElement.style.zIndex) {
+			zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
+		}
+
+		// find X/Y position of domElement
+		var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+
+		// create floating DIV above element
+		this.div = document.createElement('div');
+		var style = this.div.style;
+		style.position = 'absolute';
+		style.left = '0px';
+		style.top = '0px';
+		style.width = (box.width) + 'px';
+		style.height = box.height + 'px';
+		style.zIndex = zIndex;
+
+		if ( typeof title != "undefined" && title !== "" ) {
+			this.div.title = title;
+		}
+		if ( box.width !== 0 && box.height !== 0 ) {
+			this.sized = true;
+		}
+
+		// style.backgroundColor = '#f00'; // debug
+		if ( this.domElement ) {
+			this.domElement.appendChild(this.div);
+			this.div.innerHTML = this.getHTML( box.width, box.height ).replace(/&/g, '&amp;');
+		}
+	},
+
+	positionElement: function() {
+		var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+		var style = this.div.style;
+
+		style.position = 'absolute';
+		//style.left = (this.domElement.offsetLeft)+'px';
+		//style.top = this.domElement.offsetTop+'px';
+		style.width = box.width + 'px';
+		style.height = box.height + 'px';
+
+		if ( box.width !== 0 && box.height !== 0 ) {
+			this.sized = true;
+		} else {
+			return;
+		}
+
+		var flash = this.div.childNodes[0];
+		flash.width = box.width;
+		flash.height = box.height;
+	},
+
+	getHTML: function(width, height) {
+		// return HTML for movie
+		var html = '';
+		var flashvars = 'id=' + this.id +
+			'&width=' + width +
+			'&height=' + height;
+
+		if (navigator.userAgent.match(/MSIE/)) {
+			// IE gets an OBJECT tag
+			var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
+			html += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard_TableTools.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
+		}
+		else {
+			// all other browsers get an EMBED tag
+			html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard_TableTools.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
+		}
+		return html;
+	},
+
+	hide: function() {
+		// temporarily hide floater offscreen
+		if (this.div) {
+			this.div.style.left = '-2000px';
+		}
+	},
+
+	show: function() {
+		// show ourselves after a call to hide()
+		this.reposition();
+	},
+
+	destroy: function() {
+		// destroy control and floater
+		var that = this;
+
+		if (this.domElement && this.div) {
+			$(this.div).remove();
+
+			this.domElement = null;
+			this.div = null;
+
+			$.each( ZeroClipboard_TableTools.clients, function ( id, client ) {
+				if ( client === that ) {
+					delete ZeroClipboard_TableTools.clients[ id ];
+				}
+			} );
+		}
+	},
+
+	reposition: function(elem) {
+		// reposition our floating div, optionally to new container
+		// warning: container CANNOT change size, only position
+		if (elem) {
+			this.domElement = ZeroClipboard_TableTools.$(elem);
+			if (!this.domElement) {
+				this.hide();
+			}
+		}
+
+		if (this.domElement && this.div) {
+			var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+			var style = this.div.style;
+			style.left = '' + box.left + 'px';
+			style.top = '' + box.top + 'px';
+		}
+	},
+
+	clearText: function() {
+		// clear the text to be copy / saved
+		this.clipText = '';
+		if (this.ready) {
+			this.movie.clearText();
+		}
+	},
+
+	appendText: function(newText) {
+		// append text to that which is to be copied / saved
+		this.clipText += newText;
+		if (this.ready) { this.movie.appendText(newText) ;}
+	},
+
+	setText: function(newText) {
+		// set text to be copied to be copied / saved
+		this.clipText = newText;
+		if (this.ready) { this.movie.setText(newText) ;}
+	},
+
+	setFileName: function(newText) {
+		// set the file name
+		this.fileName = newText;
+		if (this.ready) {
+			this.movie.setFileName(newText);
+		}
+	},
+
+	setSheetData: function(data) {
+		// set the xlsx sheet data
+		if (this.ready) {
+			this.movie.setSheetData( JSON.stringify( data ) );
+		}
+	},
+
+	setAction: function(newText) {
+		// set action (save or copy)
+		this.action = newText;
+		if (this.ready) {
+			this.movie.setAction(newText);
+		}
+	},
+
+	addEventListener: function(eventName, func) {
+		// add user event listener for event
+		// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
+		eventName = eventName.toString().toLowerCase().replace(/^on/, '');
+		if (!this.handlers[eventName]) {
+			this.handlers[eventName] = [];
+		}
+		this.handlers[eventName].push(func);
+	},
+
+	setHandCursor: function(enabled) {
+		// enable hand cursor (true), or default arrow cursor (false)
+		this.handCursorEnabled = enabled;
+		if (this.ready) {
+			this.movie.setHandCursor(enabled);
+		}
+	},
+
+	setCSSEffects: function(enabled) {
+		// enable or disable CSS effects on DOM container
+		this.cssEffects = !!enabled;
+	},
+
+	receiveEvent: function(eventName, args) {
+		var self;
+
+		// receive event from flash
+		eventName = eventName.toString().toLowerCase().replace(/^on/, '');
+
+		// special behavior for certain events
+		switch (eventName) {
+			case 'load':
+				// movie claims it is ready, but in IE this isn't always the case...
+				// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
+				this.movie = document.getElementById(this.movieId);
+				if (!this.movie) {
+					self = this;
+					setTimeout( function() { self.receiveEvent('load', null); }, 1 );
+					return;
+				}
+
+				// firefox on pc needs a "kick" in order to set these in certain cases
+				if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
+					self = this;
+					setTimeout( function() { self.receiveEvent('load', null); }, 100 );
+					this.ready = true;
+					return;
+				}
+
+				this.ready = true;
+				this.movie.clearText();
+				this.movie.appendText( this.clipText );
+				this.movie.setFileName( this.fileName );
+				this.movie.setAction( this.action );
+				this.movie.setHandCursor( this.handCursorEnabled );
+				break;
+
+			case 'mouseover':
+				if (this.domElement && this.cssEffects) {
+					//this.domElement.addClass('hover');
+					if (this.recoverActive) {
+						this.domElement.addClass('active');
+					}
+				}
+				break;
+
+			case 'mouseout':
+				if (this.domElement && this.cssEffects) {
+					this.recoverActive = false;
+					if (this.domElement.hasClass('active')) {
+						this.domElement.removeClass('active');
+						this.recoverActive = true;
+					}
+					//this.domElement.removeClass('hover');
+				}
+				break;
+
+			case 'mousedown':
+				if (this.domElement && this.cssEffects) {
+					this.domElement.addClass('active');
+				}
+				break;
+
+			case 'mouseup':
+				if (this.domElement && this.cssEffects) {
+					this.domElement.removeClass('active');
+					this.recoverActive = false;
+				}
+				break;
+		} // switch eventName
+
+		if (this.handlers[eventName]) {
+			for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
+				var func = this.handlers[eventName][idx];
+
+				if (typeof(func) == 'function') {
+					// actual function reference
+					func(this, args);
+				}
+				else if ((typeof(func) == 'object') && (func.length == 2)) {
+					// PHP style object + method, i.e. [myObject, 'myMethod']
+					func[0][ func[1] ](this, args);
+				}
+				else if (typeof(func) == 'string') {
+					// name of function
+					window[func](this, args);
+				}
+			} // foreach event handler defined
+		} // user defined handler for event
+	}
+};
+
+ZeroClipboard_TableTools.hasFlash = function ()
+{
+	try {
+		var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
+		if (fo) {
+			return true;
+		}
+	}
+	catch (e) {
+		if (
+			navigator.mimeTypes &&
+			navigator.mimeTypes['application/x-shockwave-flash'] !== undefined &&
+			navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin
+		) {
+			return true;
+		}
+	}
+
+	return false;
+};
+
+// For the Flash binding to work, ZeroClipboard_TableTools must be on the global
+// object list
+window.ZeroClipboard_TableTools = ZeroClipboard_TableTools;
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Local (private) functions
+ */
+
+/**
+ * If a Buttons instance is initlaised before it is placed into the DOM, Flash
+ * won't be able to bind to it, so we need to wait until it is available, this
+ * method abstracts that out.
+ *
+ * @param {ZeroClipboard} flash ZeroClipboard instance
+ * @param {jQuery} node  Button
+ */
+var _glue = function ( flash, node )
+{
+	var id = node.attr('id');
+
+	if ( node.parents('html').length ) {
+		flash.glue( node[0], '' );
+	}
+	else {
+		setTimeout( function () {
+			_glue( flash, node );
+		}, 500 );
+	}
+};
+
+/**
+ * Get the sheet name for Excel exports.
+ *
+ * @param {object}  config       Button configuration
+ */
+var _sheetname = function ( config )
+{
+	var sheetName = 'Sheet1';
+
+	if ( config.sheetName ) {
+		sheetName = config.sheetName.replace(/[\[\]\*\/\\\?\:]/g, '');
+	}
+
+	return sheetName;
+};
+
+/**
+ * Set the flash text. This has to be broken up into chunks as the Javascript /
+ * Flash bridge has a size limit. There is no indication in the Flash
+ * documentation what this is, and it probably depends upon the browser.
+ * Experimentation shows that the point is around 50k when data starts to get
+ * lost, so an 8K limit used here is safe.
+ *
+ * @param {ZeroClipboard} flash ZeroClipboard instance
+ * @param {string}        data  Data to send to Flash
+ */
+var _setText = function ( flash, data )
+{
+	var parts = data.match(/[\s\S]{1,8192}/g) || [];
+
+	flash.clearText();
+	for ( var i=0, len=parts.length ; i<len ; i++ )
+	{
+		flash.appendText( parts[i] );
+	}
+};
+
+/**
+ * Get the newline character(s)
+ *
+ * @param {object}  config Button configuration
+ * @return {string}        Newline character
+ */
+var _newLine = function ( config )
+{
+	return config.newline ?
+		config.newline :
+		navigator.userAgent.match(/Windows/) ?
+			'\r\n' :
+			'\n';
+};
+
+/**
+ * Combine the data from the `buttons.exportData` method into a string that
+ * will be used in the export file.
+ *
+ * @param  {DataTable.Api} dt     DataTables API instance
+ * @param  {object}        config Button configuration
+ * @return {object}               The data to export
+ */
+var _exportData = function ( dt, config )
+{
+	var newLine = _newLine( config );
+	var data = dt.buttons.exportData( config.exportOptions );
+	var boundary = config.fieldBoundary;
+	var separator = config.fieldSeparator;
+	var reBoundary = new RegExp( boundary, 'g' );
+	var escapeChar = config.escapeChar !== undefined ?
+		config.escapeChar :
+		'\\';
+	var join = function ( a ) {
+		var s = '';
+
+		// If there is a field boundary, then we might need to escape it in
+		// the source data
+		for ( var i=0, ien=a.length ; i<ien ; i++ ) {
+			if ( i > 0 ) {
+				s += separator;
+			}
+
+			s += boundary ?
+				boundary + ('' + a[i]).replace( reBoundary, escapeChar+boundary ) + boundary :
+				a[i];
+		}
+
+		return s;
+	};
+
+	var header = config.header ? join( data.header )+newLine : '';
+	var footer = config.footer && data.footer ? newLine+join( data.footer ) : '';
+	var body = [];
+
+	for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+		body.push( join( data.body[i] ) );
+	}
+
+	return {
+		str: header + body.join( newLine ) + footer,
+		rows: body.length
+	};
+};
+
+
+// Basic initialisation for the buttons is common between them
+var flashButton = {
+	available: function () {
+		return ZeroClipboard_TableTools.hasFlash();
+	},
+
+	init: function ( dt, button, config ) {
+		// Insert the Flash movie
+		ZeroClipboard_TableTools.moviePath = DataTable.Buttons.swfPath;
+		var flash = new ZeroClipboard_TableTools.Client();
+
+		flash.setHandCursor( true );
+		flash.addEventListener('mouseDown', function(client) {
+			config._fromFlash = true;
+			dt.button( button[0] ).trigger();
+			config._fromFlash = false;
+		} );
+
+		_glue( flash, button );
+
+		config._flash = flash;
+	},
+
+	destroy: function ( dt, button, config ) {
+		config._flash.destroy();
+	},
+
+	fieldSeparator: ',',
+
+	fieldBoundary: '"',
+
+	exportOptions: {},
+
+	title: '*',
+
+	messageTop: '*',
+
+	messageBottom: '*',
+
+	filename: '*',
+
+	extension: '.csv',
+
+	header: true,
+
+	footer: false
+};
+
+
+/**
+ * Convert from numeric position to letter for column names in Excel
+ * @param  {int} n Column number
+ * @return {string} Column letter(s) name
+ */
+function createCellPos( n ){
+	var ordA = 'A'.charCodeAt(0);
+	var ordZ = 'Z'.charCodeAt(0);
+	var len = ordZ - ordA + 1;
+	var s = "";
+
+	while( n >= 0 ) {
+		s = String.fromCharCode(n % len + ordA) + s;
+		n = Math.floor(n / len) - 1;
+	}
+
+	return s;
+}
+
+/**
+ * Create an XML node and add any children, attributes, etc without needing to
+ * be verbose in the DOM.
+ *
+ * @param  {object} doc      XML document
+ * @param  {string} nodeName Node name
+ * @param  {object} opts     Options - can be `attr` (attributes), `children`
+ *   (child nodes) and `text` (text content)
+ * @return {node}            Created node
+ */
+function _createNode( doc, nodeName, opts ){
+	var tempNode = doc.createElement( nodeName );
+
+	if ( opts ) {
+		if ( opts.attr ) {
+			$(tempNode).attr( opts.attr );
+		}
+
+		if ( opts.children ) {
+			$.each( opts.children, function ( key, value ) {
+				tempNode.appendChild( value );
+			} );
+		}
+
+		if ( opts.text !== null && opts.text !== undefined ) {
+			tempNode.appendChild( doc.createTextNode( opts.text ) );
+		}
+	}
+
+	return tempNode;
+}
+
+/**
+ * Get the width for an Excel column based on the contents of that column
+ * @param  {object} data Data for export
+ * @param  {int}    col  Column index
+ * @return {int}         Column width
+ */
+function _excelColWidth( data, col ) {
+	var max = data.header[col].length;
+	var len, lineSplit, str;
+
+	if ( data.footer && data.footer[col].length > max ) {
+		max = data.footer[col].length;
+	}
+
+	for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+		var point = data.body[i][col];
+		str = point !== null && point !== undefined ?
+			point.toString() :
+			'';
+
+		// If there is a newline character, workout the width of the column
+		// based on the longest line in the string
+		if ( str.indexOf('\n') !== -1 ) {
+			lineSplit = str.split('\n');
+			lineSplit.sort( function (a, b) {
+				return b.length - a.length;
+			} );
+
+			len = lineSplit[0].length;
+		}
+		else {
+			len = str.length;
+		}
+
+		if ( len > max ) {
+			max = len;
+		}
+
+		// Max width rather than having potentially massive column widths
+		if ( max > 40 ) {
+			return 52; // 40 * 1.3
+		}
+	}
+
+	max *= 1.3;
+
+	// And a min width
+	return max > 6 ? max : 6;
+}
+
+  var _serialiser = "";
+    if (typeof window.XMLSerializer === 'undefined') {
+        _serialiser = new function () {
+            this.serializeToString = function (input) {
+                return input.xml
+            }
+        };
+    } else {
+        _serialiser =  new XMLSerializer();
+    }
+
+    var _ieExcel;
+
+
+/**
+ * Convert XML documents in an object to strings
+ * @param  {object} obj XLSX document object
+ */
+function _xlsxToStrings( obj ) {
+	if ( _ieExcel === undefined ) {
+		// Detect if we are dealing with IE's _awful_ serialiser by seeing if it
+		// drop attributes
+		_ieExcel = _serialiser
+			.serializeToString(
+				$.parseXML( excelStrings['xl/worksheets/sheet1.xml'] )
+			)
+			.indexOf( 'xmlns:r' ) === -1;
+	}
+
+	$.each( obj, function ( name, val ) {
+		if ( $.isPlainObject( val ) ) {
+			_xlsxToStrings( val );
+		}
+		else {
+			if ( _ieExcel ) {
+				// IE's XML serialiser will drop some name space attributes from
+				// from the root node, so we need to save them. Do this by
+				// replacing the namespace nodes with a regular attribute that
+				// we convert back when serialised. Edge does not have this
+				// issue
+				var worksheet = val.childNodes[0];
+				var i, ien;
+				var attrs = [];
+
+				for ( i=worksheet.attributes.length-1 ; i>=0 ; i-- ) {
+					var attrName = worksheet.attributes[i].nodeName;
+					var attrValue = worksheet.attributes[i].nodeValue;
+
+					if ( attrName.indexOf( ':' ) !== -1 ) {
+						attrs.push( { name: attrName, value: attrValue } );
+
+						worksheet.removeAttribute( attrName );
+					}
+				}
+
+				for ( i=0, ien=attrs.length ; i<ien ; i++ ) {
+					var attr = val.createAttribute( attrs[i].name.replace( ':', '_dt_b_namespace_token_' ) );
+					attr.value = attrs[i].value;
+					worksheet.setAttributeNode( attr );
+				}
+			}
+
+			var str = _serialiser.serializeToString(val);
+
+			// Fix IE's XML
+			if ( _ieExcel ) {
+				// IE doesn't include the XML declaration
+				if ( str.indexOf( '<?xml' ) === -1 ) {
+					str = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+str;
+				}
+
+				// Return namespace attributes to being as such
+				str = str.replace( /_dt_b_namespace_token_/g, ':' );
+			}
+
+			// Safari, IE and Edge will put empty name space attributes onto
+			// various elements making them useless. This strips them out
+			str = str.replace( /<([^<>]*?) xmlns=""([^<>]*?)>/g, '<$1 $2>' );
+
+			obj[ name ] = str;
+		}
+	} );
+}
+
+// Excel - Pre-defined strings to build a basic XLSX file
+var excelStrings = {
+	"_rels/.rels":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+
+			'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>'+
+		'</Relationships>',
+
+	"xl/_rels/workbook.xml.rels":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+
+			'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>'+
+			'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>'+
+		'</Relationships>',
+
+	"[Content_Types].xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'+
+			'<Default Extension="xml" ContentType="application/xml" />'+
+			'<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />'+
+			'<Default Extension="jpeg" ContentType="image/jpeg" />'+
+			'<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" />'+
+			'<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" />'+
+			'<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" />'+
+		'</Types>',
+
+	"xl/workbook.xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'+
+			'<fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/>'+
+			'<workbookPr showInkAnnotation="0" autoCompressPictures="0"/>'+
+			'<bookViews>'+
+				'<workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/>'+
+			'</bookViews>'+
+			'<sheets>'+
+				'<sheet name="" sheetId="1" r:id="rId1"/>'+
+			'</sheets>'+
+		'</workbook>',
+
+	"xl/worksheets/sheet1.xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">'+
+			'<sheetData/>'+
+			'<mergeCells count="0"/>'+
+		'</worksheet>',
+
+	"xl/styles.xml":
+		'<?xml version="1.0" encoding="UTF-8"?>'+
+		'<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">'+
+			'<numFmts count="6">'+
+				'<numFmt numFmtId="164" formatCode="#,##0.00_-\ [$$-45C]"/>'+
+				'<numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/>'+
+				'<numFmt numFmtId="166" formatCode="[$€-2]\ #,##0.00"/>'+
+				'<numFmt numFmtId="167" formatCode="0.0%"/>'+
+				'<numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/>'+
+				'<numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/>'+
+			'</numFmts>'+
+			'<fonts count="5" x14ac:knownFonts="1">'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<color rgb="FFFFFFFF" />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<b />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<i />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<u />'+
+				'</font>'+
+			'</fonts>'+
+			'<fills count="6">'+
+				'<fill>'+
+					'<patternFill patternType="none" />'+
+				'</fill>'+
+				'<fill>'+ // Excel appears to use this as a dotted background regardless of values but
+					'<patternFill patternType="none" />'+ // to be valid to the schema, use a patternFill
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="FFD9D9D9" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="FFD99795" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="ffc6efce" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="ffc6cfef" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+			'</fills>'+
+			'<borders count="2">'+
+				'<border>'+
+					'<left />'+
+					'<right />'+
+					'<top />'+
+					'<bottom />'+
+					'<diagonal />'+
+				'</border>'+
+				'<border diagonalUp="false" diagonalDown="false">'+
+					'<left style="thin">'+
+						'<color auto="1" />'+
+					'</left>'+
+					'<right style="thin">'+
+						'<color auto="1" />'+
+					'</right>'+
+					'<top style="thin">'+
+						'<color auto="1" />'+
+					'</top>'+
+					'<bottom style="thin">'+
+						'<color auto="1" />'+
+					'</bottom>'+
+					'<diagonal />'+
+				'</border>'+
+			'</borders>'+
+			'<cellStyleXfs count="1">'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" />'+
+			'</cellStyleXfs>'+
+			'<cellXfs count="61">'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="left"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="center"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="right"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="fill"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment textRotation="90"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment wrapText="1"/>'+
+				'</xf>'+
+				'<xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+			'</cellXfs>'+
+			'<cellStyles count="1">'+
+				'<cellStyle name="Normal" xfId="0" builtinId="0" />'+
+			'</cellStyles>'+
+			'<dxfs count="0" />'+
+			'<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" />'+
+		'</styleSheet>'
+};
+// Note we could use 3 `for` loops for the styles, but when gzipped there is
+// virtually no difference in size, since the above can be easily compressed
+
+// Pattern matching for special number formats. Perhaps this should be exposed
+// via an API in future?
+var _excelSpecials = [
+	{ match: /^\-?\d+\.\d%$/,       style: 60, fmt: function (d) { return d/100; } }, // Precent with d.p.
+	{ match: /^\-?\d+\.?\d*%$/,     style: 56, fmt: function (d) { return d/100; } }, // Percent
+	{ match: /^\-?\$[\d,]+.?\d*$/,  style: 57 }, // Dollars
+	{ match: /^\-?£[\d,]+.?\d*$/,   style: 58 }, // Pounds
+	{ match: /^\-?€[\d,]+.?\d*$/,   style: 59 }, // Euros
+	{ match: /^\([\d,]+\)$/,        style: 61, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } },  // Negative numbers indicated by brackets
+	{ match: /^\([\d,]+\.\d{2}\)$/, style: 62, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } },  // Negative numbers indicated by brackets - 2d.p.
+	{ match: /^[\d,]+$/,            style: 63 }, // Numbers with thousand separators
+	{ match: /^[\d,]+\.\d{2}$/,     style: 64 }  // Numbers with 2d.p. and thousands separators
+];
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables options and methods
+ */
+
+// Set the default SWF path
+DataTable.Buttons.swfPath = '//cdn.datatables.net/buttons/'+DataTable.Buttons.version+'/swf/flashExport.swf';
+
+// Method to allow Flash buttons to be resized when made visible - as they are
+// of zero height and width if initialised hidden
+DataTable.Api.register( 'buttons.resize()', function () {
+	$.each( ZeroClipboard_TableTools.clients, function ( i, client ) {
+		if ( client.domElement !== undefined && client.domElement.parentNode ) {
+			client.positionElement();
+		}
+	} );
+} );
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Button definitions
+ */
+
+// Copy to clipboard
+DataTable.ext.buttons.copyFlash = $.extend( {}, flashButton, {
+	className: 'buttons-copy buttons-flash',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.copy', 'Copy' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		// Check that the trigger did actually occur due to a Flash activation
+		if ( ! config._fromFlash ) {
+			return;
+		}
+
+		this.processing( true );
+
+		var flash = config._flash;
+		var exportData = _exportData( dt, config );
+		var info = dt.buttons.exportInfo( config );
+		var newline = _newLine(config);
+		var output = exportData.str;
+
+		if ( info.title ) {
+			output = info.title + newline + newline + output;
+		}
+
+		if ( info.messageTop ) {
+			output = info.messageTop + newline + newline + output;
+		}
+
+		if ( info.messageBottom ) {
+			output = output + newline + newline + info.messageBottom;
+		}
+
+		if ( config.customize ) {
+			output = config.customize( output, config, dt );
+		}
+
+		flash.setAction( 'copy' );
+		_setText( flash, output );
+
+		this.processing( false );
+
+		dt.buttons.info(
+			dt.i18n( 'buttons.copyTitle', 'Copy to clipboard' ),
+			dt.i18n( 'buttons.copySuccess', {
+				_: 'Copied %d rows to clipboard',
+				1: 'Copied 1 row to clipboard'
+			}, data.rows ),
+			3000
+		);
+	},
+
+	fieldSeparator: '\t',
+
+	fieldBoundary: ''
+} );
+
+// CSV save file
+DataTable.ext.buttons.csvFlash = $.extend( {}, flashButton, {
+	className: 'buttons-csv buttons-flash',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.csv', 'CSV' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		// Set the text
+		var flash = config._flash;
+		var data = _exportData( dt, config );
+		var info = dt.buttons.exportInfo( config );
+		var output = config.customize ?
+			config.customize( data.str, config, dt ) :
+			data.str;
+
+		flash.setAction( 'csv' );
+		flash.setFileName( info.filename );
+		_setText( flash, output );
+	},
+
+	escapeChar: '"'
+} );
+
+// Excel save file - this is really a CSV file using UTF-8 that Excel can read
+DataTable.ext.buttons.excelFlash = $.extend( {}, flashButton, {
+	className: 'buttons-excel buttons-flash',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.excel', 'Excel' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		var flash = config._flash;
+		var rowPos = 0;
+		var rels = $.parseXML( excelStrings['xl/worksheets/sheet1.xml'] ) ; //Parses xml
+		var relsGet = rels.getElementsByTagName( "sheetData" )[0];
+
+		var xlsx = {
+			_rels: {
+				".rels": $.parseXML( excelStrings['_rels/.rels'] )
+			},
+			xl: {
+				_rels: {
+					"workbook.xml.rels": $.parseXML( excelStrings['xl/_rels/workbook.xml.rels'] )
+				},
+				"workbook.xml": $.parseXML( excelStrings['xl/workbook.xml'] ),
+				"styles.xml": $.parseXML( excelStrings['xl/styles.xml'] ),
+				"worksheets": {
+					"sheet1.xml": rels
+				}
+
+			},
+			"[Content_Types].xml": $.parseXML( excelStrings['[Content_Types].xml'])
+		};
+
+		var data = dt.buttons.exportData( config.exportOptions );
+		var currentRow, rowNode;
+		var addRow = function ( row ) {
+			currentRow = rowPos+1;
+			rowNode = _createNode( rels, "row", { attr: {r:currentRow} } );
+
+			for ( var i=0, ien=row.length ; i<ien ; i++ ) {
+				// Concat both the Cell Columns as a letter and the Row of the cell.
+				var cellId = createCellPos(i) + '' + currentRow;
+				var cell = null;
+
+				// For null, undefined of blank cell, continue so it doesn't create the _createNode
+				if ( row[i] === null || row[i] === undefined || row[i] === '' ) {
+					if ( config.createEmptyCells === true ) {
+						row[i] = '';
+					}
+					else {
+						continue;
+					}
+				}
+
+				row[i] = $.trim( row[i] );
+
+				// Special number formatting options
+				for ( var j=0, jen=_excelSpecials.length ; j<jen ; j++ ) {
+					var special = _excelSpecials[j];
+
+					// TODO Need to provide the ability for the specials to say
+					// if they are returning a string, since at the moment it is
+					// assumed to be a number
+					if ( row[i].match && ! row[i].match(/^0\d+/) && row[i].match( special.match ) ) {
+						var val = row[i].replace(/[^\d\.\-]/g, '');
+
+						if ( special.fmt ) {
+							val = special.fmt( val );
+						}
+
+						cell = _createNode( rels, 'c', {
+							attr: {
+								r: cellId,
+								s: special.style
+							},
+							children: [
+								_createNode( rels, 'v', { text: val } )
+							]
+						} );
+
+						break;
+					}
+				}
+
+				if ( ! cell ) {
+					if ( typeof row[i] === 'number' || (
+						row[i].match &&
+						row[i].match(/^-?\d+(\.\d+)?$/) &&
+						! row[i].match(/^0\d+/) )
+					) {
+						// Detect numbers - don't match numbers with leading zeros
+						// or a negative anywhere but the start
+						cell = _createNode( rels, 'c', {
+							attr: {
+								t: 'n',
+								r: cellId
+							},
+							children: [
+								_createNode( rels, 'v', { text: row[i] } )
+							]
+						} );
+					}
+					else {
+						// String output - replace non standard characters for text output
+						var text = ! row[i].replace ?
+							row[i] :
+							row[i].replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, '');
+
+						cell = _createNode( rels, 'c', {
+							attr: {
+								t: 'inlineStr',
+								r: cellId
+							},
+							children:{
+								row: _createNode( rels, 'is', {
+									children: {
+										row: _createNode( rels, 't', {
+											text: text
+										} )
+									}
+								} )
+							}
+						} );
+					}
+				}
+
+				rowNode.appendChild( cell );
+			}
+
+			relsGet.appendChild(rowNode);
+			rowPos++;
+		};
+
+		$( 'sheets sheet', xlsx.xl['workbook.xml'] ).attr( 'name', _sheetname( config ) );
+
+		if ( config.customizeData ) {
+			config.customizeData( data );
+		}
+
+		var mergeCells = function ( row, colspan ) {
+			var mergeCells = $('mergeCells', rels);
+
+			mergeCells[0].appendChild( _createNode( rels, 'mergeCell', {
+				attr: {
+					ref: 'A'+row+':'+createCellPos(colspan)+row
+				}
+			} ) );
+			mergeCells.attr( 'count', mergeCells.attr( 'count' )+1 );
+			$('row:eq('+(row-1)+') c', rels).attr( 's', '51' ); // centre
+		};
+
+		// Title and top messages
+		var exportInfo = dt.buttons.exportInfo( config );
+		if ( exportInfo.title ) {
+			addRow( [exportInfo.title], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+		if ( exportInfo.messageTop ) {
+			addRow( [exportInfo.messageTop], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+		// Table itself
+		if ( config.header ) {
+			addRow( data.header, rowPos );
+			$('row:last c', rels).attr( 's', '2' ); // bold
+		}
+
+		for ( var n=0, ie=data.body.length ; n<ie ; n++ ) {
+			addRow( data.body[n], rowPos );
+		}
+
+		if ( config.footer && data.footer ) {
+			addRow( data.footer, rowPos);
+			$('row:last c', rels).attr( 's', '2' ); // bold
+		}
+
+		// Below the table
+		if ( exportInfo.messageBottom ) {
+			addRow( [exportInfo.messageBottom], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+		// Set column widths
+		var cols = _createNode( rels, 'cols' );
+		$('worksheet', rels).prepend( cols );
+
+		for ( var i=0, ien=data.header.length ; i<ien ; i++ ) {
+			cols.appendChild( _createNode( rels, 'col', {
+				attr: {
+					min: i+1,
+					max: i+1,
+					width: _excelColWidth( data, i ),
+					customWidth: 1
+				}
+			} ) );
+		}
+
+		// Let the developer customise the document if they want to
+		if ( config.customize ) {
+			config.customize( xlsx, config, dt );
+		}
+
+		_xlsxToStrings( xlsx );
+
+		flash.setAction( 'excel' );
+		flash.setFileName( exportInfo.filename );
+		flash.setSheetData( xlsx );
+		_setText( flash, '' );
+
+		this.processing( false );
+	},
+
+	extension: '.xlsx',
+	
+	createEmptyCells: false
+} );
+
+
+
+// PDF export
+DataTable.ext.buttons.pdfFlash = $.extend( {}, flashButton, {
+	className: 'buttons-pdf buttons-flash',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.pdf', 'PDF' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		// Set the text
+		var flash = config._flash;
+		var data = dt.buttons.exportData( config.exportOptions );
+		var info = dt.buttons.exportInfo( config );
+		var totalWidth = dt.table().node().offsetWidth;
+
+		// Calculate the column width ratios for layout of the table in the PDF
+		var ratios = dt.columns( config.columns ).indexes().map( function ( idx ) {
+			return dt.column( idx ).header().offsetWidth / totalWidth;
+		} );
+
+		flash.setAction( 'pdf' );
+		flash.setFileName( info.filename );
+
+		_setText( flash, JSON.stringify( {
+			title:         info.title || '',
+			messageTop:    info.messageTop || '',
+			messageBottom: info.messageBottom || '',
+			colWidth:      ratios.toArray(),
+			orientation:   config.orientation,
+			size:          config.pageSize,
+			header:        config.header ? data.header : null,
+			footer:        config.footer ? data.footer : null,
+			body:          data.body
+		} ) );
+
+		this.processing( false );
+	},
+
+	extension: '.pdf',
+
+	orientation: 'portrait',
+
+	pageSize: 'A4',
+
+	newline: '\n'
+} );
+
+
+return DataTable.Buttons;
+}));
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.flash.min.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.flash.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.flash.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,39 @@
+/*!
+ Flash export buttons for Buttons and DataTables.
+ 2015-2017 SpryMedia Ltd - datatables.net/license
+
+ ZeroClipbaord - MIT license
+ Copyright (c) 2012 Joseph Huckaby
+*/
+(function(g){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(n){return g(n,window,document)}):"object"===typeof exports?module.exports=function(n,m){n||(n=window);m&&m.fn.dataTable||(m=require("datatables.net")(n,m).$);m.fn.dataTable.Buttons||require("datatables.net-buttons")(n,m);return g(m,n,n.document)}:g(jQuery,window,document)})(function(g,n,m,u){function A(a){for(var b="";0<=a;)b=String.fromCharCode(a%26+65)+b,a=Math.floor(a/26)-1;
+return b}function r(a,b,c){var d=a.createElement(b);c&&(c.attr&&g(d).attr(c.attr),c.children&&g.each(c.children,function(a,b){d.appendChild(b)}),null!==c.text&&c.text!==u&&d.appendChild(a.createTextNode(c.text)));return d}function G(a,b){var c=a.header[b].length;a.footer&&a.footer[b].length>c&&(c=a.footer[b].length);for(var d=0,f=a.body.length;d<f;d++){var e=a.body[d][b];e=null!==e&&e!==u?e.toString():"";-1!==e.indexOf("\n")?(e=e.split("\n"),e.sort(function(a,b){return b.length-a.length}),e=e[0].length):
+e=e.length;e>c&&(c=e);if(40<c)return 52}c*=1.3;return 6<c?c:6}function B(a){v===u&&(v=-1===z.serializeToString(g.parseXML(t["xl/worksheets/sheet1.xml"])).indexOf("xmlns:r"));g.each(a,function(b,c){if(g.isPlainObject(c))B(c);else{if(v){var d=c.childNodes[0],f,e=[];for(f=d.attributes.length-1;0<=f;f--){var h=d.attributes[f].nodeName;var k=d.attributes[f].nodeValue;-1!==h.indexOf(":")&&(e.push({name:h,value:k}),d.removeAttribute(h))}f=0;for(h=e.length;f<h;f++)k=c.createAttribute(e[f].name.replace(":",
+"_dt_b_namespace_token_")),k.value=e[f].value,d.setAttributeNode(k)}c=z.serializeToString(c);v&&(-1===c.indexOf("<?xml")&&(c='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+c),c=c.replace(/_dt_b_namespace_token_/g,":"));c=c.replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");a[b]=c}})}var l=g.fn.dataTable,h={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(a){"string"==typeof a&&(a=m.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=
+function(){this.style.display=""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(new RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(new RegExp("\\s*"+a+"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,b,c){(a=this.clients[a])&&a.receiveEvent(b,c)},log:function(a){console.log("Flash: "+a)},register:function(a,
+b){this.clients[a]=b},getDOMObjectPosition:function(a){var b={left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!==a.style.width&&(b.width=a.style.width.replace("px",""));""!==a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b},Client:function(a){this.handlers={};this.id=h.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;h.register(this.id,this);a&&this.glue(a)}};
+h.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"",action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,sheetName:"",glue:function(a,b){this.domElement=h.$(a);a=99;this.domElement.style.zIndex&&(a=parseInt(this.domElement.style.zIndex,10)+1);var c=h.getDOMObjectPosition(this.domElement);this.div=m.createElement("div");var d=this.div.style;d.position="absolute";d.left="0px";d.top="0px";d.width=c.width+"px";d.height=c.height+"px";d.zIndex=a;"undefined"!=typeof b&&
+""!==b&&(this.div.title=b);0!==c.width&&0!==c.height&&(this.sized=!0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(c.width,c.height).replace(/&/g,"&amp;"))},positionElement:function(){var a=h.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!==a.width&&0!==a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=a.height)},getHTML:function(a,b){var c="",d="id="+this.id+
+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/)){var f=location.href.match(/^https/i)?"https://":"http://";c+='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+f+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+a+'" height="'+b+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+h.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+
+d+'"/><param name="wmode" value="transparent"/></object>'}else c+='<embed id="'+this.movieId+'" src="'+h.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+a+'" height="'+b+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+d+'" wmode="transparent" />';return c},hide:function(){this.div&&(this.div.style.left="-2000px")},
+show:function(){this.reposition()},destroy:function(){var a=this;this.domElement&&this.div&&(g(this.div).remove(),this.div=this.domElement=null,g.each(h.clients,function(b,c){c===a&&delete h.clients[b]}))},reposition:function(a){a&&((this.domElement=h.$(a))||this.hide());if(this.domElement&&this.div){a=h.getDOMObjectPosition(this.domElement);var b=this.div.style;b.left=""+a.left+"px";b.top=""+a.top+"px"}},clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+=
+a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},setSheetData:function(a){this.ready&&this.movie.setSheetData(JSON.stringify(a))},setAction:function(a){this.action=a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled=
+a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=m.getElementById(this.movieId);if(!this.movie){var c=this;setTimeout(function(){c.receiveEvent("load",null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){c=this;setTimeout(function(){c.receiveEvent("load",null)},100);this.ready=!0;return}this.ready=
+!0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setHandCursor(this.handCursorEnabled);break;case "mouseover":this.domElement&&this.cssEffects&&this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&&
+this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var d=0,f=this.handlers[a].length;d<f;d++){var e=this.handlers[a][d];if("function"==typeof e)e(this,b);else if("object"==typeof e&&2==e.length)e[0][e[1]](this,b);else if("string"==typeof e)n[e](this,b)}}};h.hasFlash=function(){try{return new ActiveXObject("ShockwaveFlash.ShockwaveFlash"),!0}catch(a){if(navigator.mimeTypes&&
+navigator.mimeTypes["application/x-shockwave-flash"]!==u&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin)return!0}return!1};n.ZeroClipboard_TableTools=h;var C=function(a,b){b.attr("id");b.parents("html").length?a.glue(b[0],""):setTimeout(function(){C(a,b)},500)},H=function(a){var b="Sheet1";a.sheetName&&(b=a.sheetName.replace(/[\[\]\*\/\\\?:]/g,""));return b},x=function(a,b){b=b.match(/[\s\S]{1,8192}/g)||[];a.clearText();for(var c=0,d=b.length;c<d;c++)a.appendText(b[c])},D=function(a){return a.newline?
+a.newline:navigator.userAgent.match(/Windows/)?"\r\n":"\n"},E=function(a,b){var c=D(b);a=a.buttons.exportData(b.exportOptions);var d=b.fieldBoundary,f=b.fieldSeparator,e=new RegExp(d,"g"),g=b.escapeChar!==u?b.escapeChar:"\\",h=function(a){for(var b="",c=0,h=a.length;c<h;c++)0<c&&(b+=f),b+=d?d+(""+a[c]).replace(e,g+d)+d:a[c];return b},n=b.header?h(a.header)+c:"";b=b.footer&&a.footer?c+h(a.footer):"";for(var m=[],p=0,r=a.body.length;p<r;p++)m.push(h(a.body[p]));return{str:n+m.join(c)+b,rows:m.length}},
+y={available:function(){return h.hasFlash()},init:function(a,b,c){h.moviePath=l.Buttons.swfPath;var d=new h.Client;d.setHandCursor(!0);d.addEventListener("mouseDown",function(d){c._fromFlash=!0;a.button(b[0]).trigger();c._fromFlash=!1});C(d,b);c._flash=d},destroy:function(a,b,c){c._flash.destroy()},fieldSeparator:",",fieldBoundary:'"',exportOptions:{},title:"*",messageTop:"*",messageBottom:"*",filename:"*",extension:".csv",header:!0,footer:!1},z="";z="undefined"===typeof n.XMLSerializer?new function(){this.serializeToString=
+function(a){return a.xml}}:new XMLSerializer;var v,t={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>',
+"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>',
+"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="" sheetId="1" r:id="rId1"/></sheets></workbook>',
+"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="#,##0.00_- [$$-45C]"/><numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="61"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'},
+F=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(a){return a/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(a){return a/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\([\d,]+\)$/,style:61,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^[\d,]+$/,style:63},{match:/^[\d,]+\.\d{2}$/,style:64}];l.Buttons.swfPath="//cdn.datatables.net/buttons/"+
+l.Buttons.version+"/swf/flashExport.swf";l.Api.register("buttons.resize()",function(){g.each(h.clients,function(a,b){b.domElement!==u&&b.domElement.parentNode&&b.positionElement()})});l.ext.buttons.copyFlash=g.extend({},y,{className:"buttons-copy buttons-flash",text:function(a){return a.i18n("buttons.copy","Copy")},action:function(a,b,c,d){if(d._fromFlash){this.processing(!0);a=d._flash;var f=E(b,d);c=b.buttons.exportInfo(d);var e=D(d);f=f.str;c.title&&(f=c.title+e+e+f);c.messageTop&&(f=c.messageTop+
+e+e+f);c.messageBottom&&(f=f+e+e+c.messageBottom);d.customize&&(f=d.customize(f,d,b));a.setAction("copy");x(a,f);this.processing(!1);b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),b.i18n("buttons.copySuccess",{_:"Copied %d rows to clipboard",1:"Copied 1 row to clipboard"},data.rows),3E3)}},fieldSeparator:"\t",fieldBoundary:""});l.ext.buttons.csvFlash=g.extend({},y,{className:"buttons-csv buttons-flash",text:function(a){return a.i18n("buttons.csv","CSV")},action:function(a,b,c,d){a=
+d._flash;var f=E(b,d);c=b.buttons.exportInfo(d);b=d.customize?d.customize(f.str,d,b):f.str;a.setAction("csv");a.setFileName(c.filename);x(a,b)},escapeChar:'"'});l.ext.buttons.excelFlash=g.extend({},y,{className:"buttons-excel buttons-flash",text:function(a){return a.i18n("buttons.excel","Excel")},action:function(a,b,c,d){this.processing(!0);a=d._flash;var f=0,e=g.parseXML(t["xl/worksheets/sheet1.xml"]),h=e.getElementsByTagName("sheetData")[0];c={_rels:{".rels":g.parseXML(t["_rels/.rels"])},xl:{_rels:{"workbook.xml.rels":g.parseXML(t["xl/_rels/workbook.xml.rels"])},
+"workbook.xml":g.parseXML(t["xl/workbook.xml"]),"styles.xml":g.parseXML(t["xl/styles.xml"]),worksheets:{"sheet1.xml":e}},"[Content_Types].xml":g.parseXML(t["[Content_Types].xml"])};var k=b.buttons.exportData(d.exportOptions),m,n,p=function(a){m=f+1;n=r(e,"row",{attr:{r:m}});for(var b=0,c=a.length;b<c;b++){var l=A(b)+""+m,k=null;if(null===a[b]||a[b]===u||""===a[b])if(!0===d.createEmptyCells)a[b]="";else continue;a[b]=g.trim(a[b]);for(var p=0,t=F.length;p<t;p++){var q=F[p];if(a[b].match&&!a[b].match(/^0\d+/)&&
+a[b].match(q.match)){k=a[b].replace(/[^\d\.\-]/g,"");q.fmt&&(k=q.fmt(k));k=r(e,"c",{attr:{r:l,s:q.style},children:[r(e,"v",{text:k})]});break}}k||("number"===typeof a[b]||a[b].match&&a[b].match(/^-?\d+(\.\d+)?$/)&&!a[b].match(/^0\d+/)?k=r(e,"c",{attr:{t:"n",r:l},children:[r(e,"v",{text:a[b]})]}):(q=a[b].replace?a[b].replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""):a[b],k=r(e,"c",{attr:{t:"inlineStr",r:l},children:{row:r(e,"is",{children:{row:r(e,"t",{text:q})}})}})));n.appendChild(k)}h.appendChild(n);
+f++};g("sheets sheet",c.xl["workbook.xml"]).attr("name",H(d));d.customizeData&&d.customizeData(k);var l=function(a,b){var c=g("mergeCells",e);c[0].appendChild(r(e,"mergeCell",{attr:{ref:"A"+a+":"+A(b)+a}}));c.attr("count",c.attr("count")+1);g("row:eq("+(a-1)+") c",e).attr("s","51")},q=b.buttons.exportInfo(d);q.title&&(p([q.title],f),l(f,k.header.length-1));q.messageTop&&(p([q.messageTop],f),l(f,k.header.length-1));d.header&&(p(k.header,f),g("row:last c",e).attr("s","2"));for(var w=0,v=k.body.length;w<
+v;w++)p(k.body[w],f);d.footer&&k.footer&&(p(k.footer,f),g("row:last c",e).attr("s","2"));q.messageBottom&&(p([q.messageBottom],f),l(f,k.header.length-1));p=r(e,"cols");g("worksheet",e).prepend(p);l=0;for(w=k.header.length;l<w;l++)p.appendChild(r(e,"col",{attr:{min:l+1,max:l+1,width:G(k,l),customWidth:1}}));d.customize&&d.customize(c,d,b);B(c);a.setAction("excel");a.setFileName(q.filename);a.setSheetData(c);x(a,"");this.processing(!1)},extension:".xlsx",createEmptyCells:!1});l.ext.buttons.pdfFlash=
+g.extend({},y,{className:"buttons-pdf buttons-flash",text:function(a){return a.i18n("buttons.pdf","PDF")},action:function(a,b,c,d){this.processing(!0);a=d._flash;c=b.buttons.exportData(d.exportOptions);var f=b.buttons.exportInfo(d),e=b.table().node().offsetWidth,g=b.columns(d.columns).indexes().map(function(a){return b.column(a).header().offsetWidth/e});a.setAction("pdf");a.setFileName(f.filename);x(a,JSON.stringify({title:f.title||"",messageTop:f.messageTop||"",messageBottom:f.messageBottom||"",
+colWidth:g.toArray(),orientation:d.orientation,size:d.pageSize,header:d.header?c.header:null,footer:d.footer?c.footer:null,body:c.body}));this.processing(!1)},extension:".pdf",orientation:"portrait",pageSize:"A4",newline:"\n"});return l.Buttons});
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.foundation.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,88 @@
+/*! Foundation integration for DataTables' Buttons
+ * ©2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-zf', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-zf')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+// F6 has different requirements for the dropdown button set. We can use the
+// Foundation version found by DataTables in order to support both F5 and F6 in
+// the same file, but not that this requires DataTables 1.10.11+ for F6 support.
+var collection = DataTable.ext.foundationVersion === 6 ?
+	{
+		tag: 'div',
+		className: 'dropdown-pane is-open button-group stacked'
+	} :
+	{
+		tag: 'ul',
+		className: 'f-dropdown open dropdown-pane is-open',
+		button: {
+			tag: 'li',
+			className: 'small',
+			active: 'active',
+			disabled: 'disabled'
+		},
+		buttonLiner: {
+			tag: 'a'
+		}
+	};
+
+$.extend( true, DataTable.Buttons.defaults, {
+	dom: {
+		container: {
+			tag: 'div',
+			className: 'dt-buttons button-group'
+		},
+		buttonContainer: {
+			tag: null,
+			className: ''
+		},
+		button: {
+			tag: 'a',
+			className: 'button small',
+			active: 'secondary'
+		},
+		buttonLiner: {
+			tag: null
+		},
+		collection: collection
+	}
+} );
+
+
+DataTable.ext.buttons.collection.className = 'dropdown';
+
+
+return DataTable.Buttons;
+}));
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.foundation.min.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ Foundation integration for DataTables' Buttons
+ ©2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-zf")(a,b).$);b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{tag:"div",className:"dt-buttons button-group"},
+buttonContainer:{tag:null,className:""},button:{tag:"a",className:"button small",active:"secondary"},buttonLiner:{tag:null},collection:6===a.ext.foundationVersion?{tag:"div",className:"dropdown-pane is-open button-group stacked"}:{tag:"ul",className:"f-dropdown open dropdown-pane is-open",button:{tag:"li",className:"small",active:"active",disabled:"disabled"},buttonLiner:{tag:"a"}}}});a.ext.buttons.collection.className="dropdown";return a.Buttons});
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.html5.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.html5.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.html5.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1459 @@
+/*!
+ * HTML5 export buttons for Buttons and DataTables.
+ * 2016 SpryMedia Ltd - datatables.net/license
+ *
+ * FileSaver.js (1.3.3) - MIT license
+ * Copyright © 2016 Eli Grey - http://eligrey.com
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $, jszip, pdfmake) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document, jszip, pdfmake );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, jszip, pdfmake, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+// Allow the constructor to pass in JSZip and PDFMake from external requires.
+// Otherwise, use globally defined variables, if they are available.
+function _jsZip () {
+	return jszip || window.JSZip;
+}
+function _pdfMake () {
+	return pdfmake || window.pdfMake;
+}
+
+DataTable.Buttons.pdfMake = function (_) {
+	if ( ! _ ) {
+		return _pdfMake();
+	}
+	pdfmake = m_ake;
+}
+
+DataTable.Buttons.jszip = function (_) {
+	if ( ! _ ) {
+		return _jsZip();
+	}
+	jszip = _;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * FileSaver.js dependency
+ */
+
+/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
+
+var _saveAs = (function(view) {
+	"use strict";
+	// IE <10 is explicitly unsupported
+	if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
+		return;
+	}
+	var
+		  doc = view.document
+		  // only get URL when necessary in case Blob.js hasn't overridden it yet
+		, get_URL = function() {
+			return view.URL || view.webkitURL || view;
+		}
+		, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
+		, can_use_save_link = "download" in save_link
+		, click = function(node) {
+			var event = new MouseEvent("click");
+			node.dispatchEvent(event);
+		}
+		, is_safari = /constructor/i.test(view.HTMLElement) || view.safari
+		, is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent)
+		, throw_outside = function(ex) {
+			(view.setImmediate || view.setTimeout)(function() {
+				throw ex;
+			}, 0);
+		}
+		, force_saveable_type = "application/octet-stream"
+		// the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
+		, arbitrary_revoke_timeout = 1000 * 40 // in ms
+		, revoke = function(file) {
+			var revoker = function() {
+				if (typeof file === "string") { // file is an object URL
+					get_URL().revokeObjectURL(file);
+				} else { // file is a File
+					file.remove();
+				}
+			};
+			setTimeout(revoker, arbitrary_revoke_timeout);
+		}
+		, dispatch = function(filesaver, event_types, event) {
+			event_types = [].concat(event_types);
+			var i = event_types.length;
+			while (i--) {
+				var listener = filesaver["on" + event_types[i]];
+				if (typeof listener === "function") {
+					try {
+						listener.call(filesaver, event || filesaver);
+					} catch (ex) {
+						throw_outside(ex);
+					}
+				}
+			}
+		}
+		, auto_bom = function(blob) {
+			// prepend BOM for UTF-8 XML and text/* types (including HTML)
+			// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
+			if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
+				return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
+			}
+			return blob;
+		}
+		, FileSaver = function(blob, name, no_auto_bom) {
+			if (!no_auto_bom) {
+				blob = auto_bom(blob);
+			}
+			// First try a.download, then web filesystem, then object URLs
+			var
+				  filesaver = this
+				, type = blob.type
+				, force = type === force_saveable_type
+				, object_url
+				, dispatch_all = function() {
+					dispatch(filesaver, "writestart progress write writeend".split(" "));
+				}
+				// on any filesys errors revert to saving with object URLs
+				, fs_error = function() {
+					if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
+						// Safari doesn't allow downloading of blob urls
+						var reader = new FileReader();
+						reader.onloadend = function() {
+							var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
+							var popup = view.open(url, '_blank');
+							if(!popup) view.location.href = url;
+							url=undefined; // release reference before dispatching
+							filesaver.readyState = filesaver.DONE;
+							dispatch_all();
+						};
+						reader.readAsDataURL(blob);
+						filesaver.readyState = filesaver.INIT;
+						return;
+					}
+					// don't create more object URLs than needed
+					if (!object_url) {
+						object_url = get_URL().createObjectURL(blob);
+					}
+					if (force) {
+						view.location.href = object_url;
+					} else {
+						var opened = view.open(object_url, "_blank");
+						if (!opened) {
+							// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
+							view.location.href = object_url;
+						}
+					}
+					filesaver.readyState = filesaver.DONE;
+					dispatch_all();
+					revoke(object_url);
+				}
+			;
+			filesaver.readyState = filesaver.INIT;
+
+			if (can_use_save_link) {
+				object_url = get_URL().createObjectURL(blob);
+				setTimeout(function() {
+					save_link.href = object_url;
+					save_link.download = name;
+					click(save_link);
+					dispatch_all();
+					revoke(object_url);
+					filesaver.readyState = filesaver.DONE;
+				});
+				return;
+			}
+
+			fs_error();
+		}
+		, FS_proto = FileSaver.prototype
+		, saveAs = function(blob, name, no_auto_bom) {
+			return new FileSaver(blob, name || blob.name || "download", no_auto_bom);
+		}
+	;
+	// IE 10+ (native saveAs)
+	if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
+		return function(blob, name, no_auto_bom) {
+			name = name || blob.name || "download";
+
+			if (!no_auto_bom) {
+				blob = auto_bom(blob);
+			}
+			return navigator.msSaveOrOpenBlob(blob, name);
+		};
+	}
+
+	FS_proto.abort = function(){};
+	FS_proto.readyState = FS_proto.INIT = 0;
+	FS_proto.WRITING = 1;
+	FS_proto.DONE = 2;
+
+	FS_proto.error =
+	FS_proto.onwritestart =
+	FS_proto.onprogress =
+	FS_proto.onwrite =
+	FS_proto.onabort =
+	FS_proto.onerror =
+	FS_proto.onwriteend =
+		null;
+
+	return saveAs;
+}(
+	   typeof self !== "undefined" && self
+	|| typeof window !== "undefined" && window
+	|| this.content
+));
+
+
+// Expose file saver on the DataTables API. Can't attach to `DataTables.Buttons`
+// since this file can be loaded before Button's core!
+DataTable.fileSave = _saveAs;
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Local (private) functions
+ */
+
+/**
+ * Get the sheet name for Excel exports.
+ *
+ * @param {object}	config Button configuration
+ */
+var _sheetname = function ( config )
+{
+	var sheetName = 'Sheet1';
+
+	if ( config.sheetName ) {
+		sheetName = config.sheetName.replace(/[\[\]\*\/\\\?\:]/g, '');
+	}
+
+	return sheetName;
+};
+
+/**
+ * Get the newline character(s)
+ *
+ * @param {object}	config Button configuration
+ * @return {string}				Newline character
+ */
+var _newLine = function ( config )
+{
+	return config.newline ?
+		config.newline :
+		navigator.userAgent.match(/Windows/) ?
+			'\r\n' :
+			'\n';
+};
+
+/**
+ * Combine the data from the `buttons.exportData` method into a string that
+ * will be used in the export file.
+ *
+ * @param	{DataTable.Api} dt		 DataTables API instance
+ * @param	{object}				config Button configuration
+ * @return {object}							 The data to export
+ */
+var _exportData = function ( dt, config )
+{
+	var newLine = _newLine( config );
+	var data = dt.buttons.exportData( config.exportOptions );
+	var boundary = config.fieldBoundary;
+	var separator = config.fieldSeparator;
+	var reBoundary = new RegExp( boundary, 'g' );
+	var escapeChar = config.escapeChar !== undefined ?
+		config.escapeChar :
+		'\\';
+	var join = function ( a ) {
+		var s = '';
+
+		// If there is a field boundary, then we might need to escape it in
+		// the source data
+		for ( var i=0, ien=a.length ; i<ien ; i++ ) {
+			if ( i > 0 ) {
+				s += separator;
+			}
+
+			s += boundary ?
+				boundary + ('' + a[i]).replace( reBoundary, escapeChar+boundary ) + boundary :
+				a[i];
+		}
+
+		return s;
+	};
+
+	var header = config.header ? join( data.header )+newLine : '';
+	var footer = config.footer && data.footer ? newLine+join( data.footer ) : '';
+	var body = [];
+
+	for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+		body.push( join( data.body[i] ) );
+	}
+
+	return {
+		str: header + body.join( newLine ) + footer,
+		rows: body.length
+	};
+};
+
+/**
+ * Older versions of Safari (prior to tech preview 18) don't support the
+ * download option required.
+ *
+ * @return {Boolean} `true` if old Safari
+ */
+var _isDuffSafari = function ()
+{
+	var safari = navigator.userAgent.indexOf('Safari') !== -1 &&
+		navigator.userAgent.indexOf('Chrome') === -1 &&
+		navigator.userAgent.indexOf('Opera') === -1;
+
+	if ( ! safari ) {
+		return false;
+	}
+
+	var version = navigator.userAgent.match( /AppleWebKit\/(\d+\.\d+)/ );
+	if ( version && version.length > 1 && version[1]*1 < 603.1 ) {
+		return true;
+	}
+
+	return false;
+};
+
+/**
+ * Convert from numeric position to letter for column names in Excel
+ * @param  {int} n Column number
+ * @return {string} Column letter(s) name
+ */
+function createCellPos( n ){
+	var ordA = 'A'.charCodeAt(0);
+	var ordZ = 'Z'.charCodeAt(0);
+	var len = ordZ - ordA + 1;
+	var s = "";
+
+	while( n >= 0 ) {
+		s = String.fromCharCode(n % len + ordA) + s;
+		n = Math.floor(n / len) - 1;
+	}
+
+	return s;
+}
+
+try {
+	var _serialiser = new XMLSerializer();
+	var _ieExcel;
+}
+catch (t) {}
+
+/**
+ * Recursively add XML files from an object's structure to a ZIP file. This
+ * allows the XSLX file to be easily defined with an object's structure matching
+ * the files structure.
+ *
+ * @param {JSZip} zip ZIP package
+ * @param {object} obj Object to add (recursive)
+ */
+function _addToZip( zip, obj ) {
+	if ( _ieExcel === undefined ) {
+		// Detect if we are dealing with IE's _awful_ serialiser by seeing if it
+		// drop attributes
+		_ieExcel = _serialiser
+			.serializeToString(
+				$.parseXML( excelStrings['xl/worksheets/sheet1.xml'] )
+			)
+			.indexOf( 'xmlns:r' ) === -1;
+	}
+
+	$.each( obj, function ( name, val ) {
+		if ( $.isPlainObject( val ) ) {
+			var newDir = zip.folder( name );
+			_addToZip( newDir, val );
+		}
+		else {
+			if ( _ieExcel ) {
+				// IE's XML serialiser will drop some name space attributes from
+				// from the root node, so we need to save them. Do this by
+				// replacing the namespace nodes with a regular attribute that
+				// we convert back when serialised. Edge does not have this
+				// issue
+				var worksheet = val.childNodes[0];
+				var i, ien;
+				var attrs = [];
+
+				for ( i=worksheet.attributes.length-1 ; i>=0 ; i-- ) {
+					var attrName = worksheet.attributes[i].nodeName;
+					var attrValue = worksheet.attributes[i].nodeValue;
+
+					if ( attrName.indexOf( ':' ) !== -1 ) {
+						attrs.push( { name: attrName, value: attrValue } );
+
+						worksheet.removeAttribute( attrName );
+					}
+				}
+
+				for ( i=0, ien=attrs.length ; i<ien ; i++ ) {
+					var attr = val.createAttribute( attrs[i].name.replace( ':', '_dt_b_namespace_token_' ) );
+					attr.value = attrs[i].value;
+					worksheet.setAttributeNode( attr );
+				}
+			}
+
+			var str = _serialiser.serializeToString(val);
+
+			// Fix IE's XML
+			if ( _ieExcel ) {
+				// IE doesn't include the XML declaration
+				if ( str.indexOf( '<?xml' ) === -1 ) {
+					str = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+str;
+				}
+
+				// Return namespace attributes to being as such
+				str = str.replace( /_dt_b_namespace_token_/g, ':' );
+
+				// Remove testing name space that IE puts into the space preserve attr
+				str = str.replace( /xmlns:NS[\d]+="" NS[\d]+:/g, '' );
+			}
+
+			// Safari, IE and Edge will put empty name space attributes onto
+			// various elements making them useless. This strips them out
+			str = str.replace( /<([^<>]*?) xmlns=""([^<>]*?)>/g, '<$1 $2>' );
+
+			zip.file( name, str );
+		}
+	} );
+}
+
+/**
+ * Create an XML node and add any children, attributes, etc without needing to
+ * be verbose in the DOM.
+ *
+ * @param  {object} doc      XML document
+ * @param  {string} nodeName Node name
+ * @param  {object} opts     Options - can be `attr` (attributes), `children`
+ *   (child nodes) and `text` (text content)
+ * @return {node}            Created node
+ */
+function _createNode( doc, nodeName, opts ) {
+	var tempNode = doc.createElement( nodeName );
+
+	if ( opts ) {
+		if ( opts.attr ) {
+			$(tempNode).attr( opts.attr );
+		}
+
+		if ( opts.children ) {
+			$.each( opts.children, function ( key, value ) {
+				tempNode.appendChild( value );
+			} );
+		}
+
+		if ( opts.text !== null && opts.text !== undefined ) {
+			tempNode.appendChild( doc.createTextNode( opts.text ) );
+		}
+	}
+
+	return tempNode;
+}
+
+/**
+ * Get the width for an Excel column based on the contents of that column
+ * @param  {object} data Data for export
+ * @param  {int}    col  Column index
+ * @return {int}         Column width
+ */
+function _excelColWidth( data, col ) {
+	var max = data.header[col].length;
+	var len, lineSplit, str;
+
+	if ( data.footer && data.footer[col].length > max ) {
+		max = data.footer[col].length;
+	}
+
+	for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+		var point = data.body[i][col];
+		str = point !== null && point !== undefined ?
+			point.toString() :
+			'';
+
+		// If there is a newline character, workout the width of the column
+		// based on the longest line in the string
+		if ( str.indexOf('\n') !== -1 ) {
+			lineSplit = str.split('\n');
+			lineSplit.sort( function (a, b) {
+				return b.length - a.length;
+			} );
+
+			len = lineSplit[0].length;
+		}
+		else {
+			len = str.length;
+		}
+
+		if ( len > max ) {
+			max = len;
+		}
+
+		// Max width rather than having potentially massive column widths
+		if ( max > 40 ) {
+			return 54; // 40 * 1.35
+		}
+	}
+
+	max *= 1.35;
+
+	// And a min width
+	return max > 6 ? max : 6;
+}
+
+// Excel - Pre-defined strings to build a basic XLSX file
+var excelStrings = {
+	"_rels/.rels":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+
+			'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>'+
+		'</Relationships>',
+
+	"xl/_rels/workbook.xml.rels":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+
+			'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>'+
+			'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>'+
+		'</Relationships>',
+
+	"[Content_Types].xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'+
+			'<Default Extension="xml" ContentType="application/xml" />'+
+			'<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />'+
+			'<Default Extension="jpeg" ContentType="image/jpeg" />'+
+			'<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" />'+
+			'<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" />'+
+			'<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" />'+
+		'</Types>',
+
+	"xl/workbook.xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'+
+			'<fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/>'+
+			'<workbookPr showInkAnnotation="0" autoCompressPictures="0"/>'+
+			'<bookViews>'+
+				'<workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/>'+
+			'</bookViews>'+
+			'<sheets>'+
+				'<sheet name="Sheet1" sheetId="1" r:id="rId1"/>'+
+			'</sheets>'+
+			'<definedNames/>'+
+		'</workbook>',
+
+	"xl/worksheets/sheet1.xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">'+
+			'<sheetData/>'+
+			'<mergeCells count="0"/>'+
+		'</worksheet>',
+
+	"xl/styles.xml":
+		'<?xml version="1.0" encoding="UTF-8"?>'+
+		'<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">'+
+			'<numFmts count="6">'+
+				'<numFmt numFmtId="164" formatCode="#,##0.00_-\ [$$-45C]"/>'+
+				'<numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/>'+
+				'<numFmt numFmtId="166" formatCode="[$€-2]\ #,##0.00"/>'+
+				'<numFmt numFmtId="167" formatCode="0.0%"/>'+
+				'<numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/>'+
+				'<numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/>'+
+			'</numFmts>'+
+			'<fonts count="5" x14ac:knownFonts="1">'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<color rgb="FFFFFFFF" />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<b />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<i />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<u />'+
+				'</font>'+
+			'</fonts>'+
+			'<fills count="6">'+
+				'<fill>'+
+					'<patternFill patternType="none" />'+
+				'</fill>'+
+				'<fill>'+ // Excel appears to use this as a dotted background regardless of values but
+					'<patternFill patternType="none" />'+ // to be valid to the schema, use a patternFill
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="FFD9D9D9" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="FFD99795" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="ffc6efce" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="ffc6cfef" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+			'</fills>'+
+			'<borders count="2">'+
+				'<border>'+
+					'<left />'+
+					'<right />'+
+					'<top />'+
+					'<bottom />'+
+					'<diagonal />'+
+				'</border>'+
+				'<border diagonalUp="false" diagonalDown="false">'+
+					'<left style="thin">'+
+						'<color auto="1" />'+
+					'</left>'+
+					'<right style="thin">'+
+						'<color auto="1" />'+
+					'</right>'+
+					'<top style="thin">'+
+						'<color auto="1" />'+
+					'</top>'+
+					'<bottom style="thin">'+
+						'<color auto="1" />'+
+					'</bottom>'+
+					'<diagonal />'+
+				'</border>'+
+			'</borders>'+
+			'<cellStyleXfs count="1">'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" />'+
+			'</cellStyleXfs>'+
+			'<cellXfs count="67">'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="left"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="center"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="right"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="fill"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment textRotation="90"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment wrapText="1"/>'+
+				'</xf>'+
+				'<xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+			'</cellXfs>'+
+			'<cellStyles count="1">'+
+				'<cellStyle name="Normal" xfId="0" builtinId="0" />'+
+			'</cellStyles>'+
+			'<dxfs count="0" />'+
+			'<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" />'+
+		'</styleSheet>'
+};
+// Note we could use 3 `for` loops for the styles, but when gzipped there is
+// virtually no difference in size, since the above can be easily compressed
+
+// Pattern matching for special number formats. Perhaps this should be exposed
+// via an API in future?
+// Ref: section 3.8.30 - built in formatters in open spreadsheet
+//   https://www.ecma-international.org/news/TC45_current_work/Office%20Open%20XML%20Part%204%20-%20Markup%20Language%20Reference.pdf
+var _excelSpecials = [
+	{ match: /^\-?\d+\.\d%$/,       style: 60, fmt: function (d) { return d/100; } }, // Precent with d.p.
+	{ match: /^\-?\d+\.?\d*%$/,     style: 56, fmt: function (d) { return d/100; } }, // Percent
+	{ match: /^\-?\$[\d,]+.?\d*$/,  style: 57 }, // Dollars
+	{ match: /^\-?£[\d,]+.?\d*$/,   style: 58 }, // Pounds
+	{ match: /^\-?€[\d,]+.?\d*$/,   style: 59 }, // Euros
+	{ match: /^\-?\d+$/,            style: 65 }, // Numbers without thousand separators
+	{ match: /^\-?\d+\.\d{2}$/,     style: 66 }, // Numbers 2 d.p. without thousands separators
+	{ match: /^\([\d,]+\)$/,        style: 61, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } },  // Negative numbers indicated by brackets
+	{ match: /^\([\d,]+\.\d{2}\)$/, style: 62, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } },  // Negative numbers indicated by brackets - 2d.p.
+	{ match: /^\-?[\d,]+$/,         style: 63 }, // Numbers with thousand separators
+	{ match: /^\-?[\d,]+\.\d{2}$/,  style: 64 }  // Numbers with 2 d.p. and thousands separators
+];
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Buttons
+ */
+
+//
+// Copy to clipboard
+//
+DataTable.ext.buttons.copyHtml5 = {
+	className: 'buttons-copy buttons-html5',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.copy', 'Copy' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		var that = this;
+		var exportData = _exportData( dt, config );
+		var info = dt.buttons.exportInfo( config );
+		var newline = _newLine(config);
+		var output = exportData.str;
+		var hiddenDiv = $('<div/>')
+			.css( {
+				height: 1,
+				width: 1,
+				overflow: 'hidden',
+				position: 'fixed',
+				top: 0,
+				left: 0
+			} );
+
+		if ( info.title ) {
+			output = info.title + newline + newline + output;
+		}
+
+		if ( info.messageTop ) {
+			output = info.messageTop + newline + newline + output;
+		}
+
+		if ( info.messageBottom ) {
+			output = output + newline + newline + info.messageBottom;
+		}
+
+		if ( config.customize ) {
+			output = config.customize( output, config, dt );
+		}
+
+		var textarea = $('<textarea readonly/>')
+			.val( output )
+			.appendTo( hiddenDiv );
+
+		// For browsers that support the copy execCommand, try to use it
+		if ( document.queryCommandSupported('copy') ) {
+			hiddenDiv.appendTo( dt.table().container() );
+			textarea[0].focus();
+			textarea[0].select();
+
+			try {
+				var successful = document.execCommand( 'copy' );
+				hiddenDiv.remove();
+
+				if (successful) {
+					dt.buttons.info(
+						dt.i18n( 'buttons.copyTitle', 'Copy to clipboard' ),
+						dt.i18n( 'buttons.copySuccess', {
+							1: 'Copied one row to clipboard',
+							_: 'Copied %d rows to clipboard'
+						}, exportData.rows ),
+						2000
+					);
+
+					this.processing( false );
+					return;
+				}
+			}
+			catch (t) {}
+		}
+
+		// Otherwise we show the text box and instruct the user to use it
+		var message = $('<span>'+dt.i18n( 'buttons.copyKeys',
+				'Press <i>ctrl</i> or <i>\u2318</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>'+
+				'To cancel, click this message or press escape.' )+'</span>'
+			)
+			.append( hiddenDiv );
+
+		dt.buttons.info( dt.i18n( 'buttons.copyTitle', 'Copy to clipboard' ), message, 0 );
+
+		// Select the text so when the user activates their system clipboard
+		// it will copy that text
+		textarea[0].focus();
+		textarea[0].select();
+
+		// Event to hide the message when the user is done
+		var container = $(message).closest('.dt-button-info');
+		var close = function () {
+			container.off( 'click.buttons-copy' );
+			$(document).off( '.buttons-copy' );
+			dt.buttons.info( false );
+		};
+
+		container.on( 'click.buttons-copy', close );
+		$(document)
+			.on( 'keydown.buttons-copy', function (e) {
+				if ( e.keyCode === 27 ) { // esc
+					close();
+					that.processing( false );
+				}
+			} )
+			.on( 'copy.buttons-copy cut.buttons-copy', function () {
+				close();
+				that.processing( false );
+			} );
+	},
+
+	exportOptions: {},
+
+	fieldSeparator: '\t',
+
+	fieldBoundary: '',
+
+	header: true,
+
+	footer: false,
+
+	title: '*',
+
+	messageTop: '*',
+
+	messageBottom: '*'
+};
+
+//
+// CSV export
+//
+DataTable.ext.buttons.csvHtml5 = {
+	bom: false,
+
+	className: 'buttons-csv buttons-html5',
+
+	available: function () {
+		return window.FileReader !== undefined && window.Blob;
+	},
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.csv', 'CSV' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		// Set the text
+		var output = _exportData( dt, config ).str;
+		var info = dt.buttons.exportInfo(config);
+		var charset = config.charset;
+
+		if ( config.customize ) {
+			output = config.customize( output, config, dt );
+		}
+
+		if ( charset !== false ) {
+			if ( ! charset ) {
+				charset = document.characterSet || document.charset;
+			}
+
+			if ( charset ) {
+				charset = ';charset='+charset;
+			}
+		}
+		else {
+			charset = '';
+		}
+
+		if ( config.bom ) {
+			output = '\ufeff' + output;
+		}
+
+		_saveAs(
+			new Blob( [output], {type: 'text/csv'+charset} ),
+			info.filename,
+			true
+		);
+
+		this.processing( false );
+	},
+
+	filename: '*',
+
+	extension: '.csv',
+
+	exportOptions: {},
+
+	fieldSeparator: ',',
+
+	fieldBoundary: '"',
+
+	escapeChar: '"',
+
+	charset: null,
+
+	header: true,
+
+	footer: false
+};
+
+//
+// Excel (xlsx) export
+//
+DataTable.ext.buttons.excelHtml5 = {
+	className: 'buttons-excel buttons-html5',
+
+	available: function () {
+		return window.FileReader !== undefined && _jsZip() !== undefined && ! _isDuffSafari() && _serialiser;
+	},
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.excel', 'Excel' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		var that = this;
+		var rowPos = 0;
+		var dataStartRow, dataEndRow;
+		var getXml = function ( type ) {
+			var str = excelStrings[ type ];
+
+			//str = str.replace( /xmlns:/g, 'xmlns_' ).replace( /mc:/g, 'mc_' );
+
+			return $.parseXML( str );
+		};
+		var rels = getXml('xl/worksheets/sheet1.xml');
+		var relsGet = rels.getElementsByTagName( "sheetData" )[0];
+
+		var xlsx = {
+			_rels: {
+				".rels": getXml('_rels/.rels')
+			},
+			xl: {
+				_rels: {
+					"workbook.xml.rels": getXml('xl/_rels/workbook.xml.rels')
+				},
+				"workbook.xml": getXml('xl/workbook.xml'),
+				"styles.xml": getXml('xl/styles.xml'),
+				"worksheets": {
+					"sheet1.xml": rels
+				}
+
+			},
+			"[Content_Types].xml": getXml('[Content_Types].xml')
+		};
+
+		var data = dt.buttons.exportData( config.exportOptions );
+		var currentRow, rowNode;
+		var addRow = function ( row ) {
+			currentRow = rowPos+1;
+			rowNode = _createNode( rels, "row", { attr: {r:currentRow} } );
+
+			for ( var i=0, ien=row.length ; i<ien ; i++ ) {
+				// Concat both the Cell Columns as a letter and the Row of the cell.
+				var cellId = createCellPos(i) + '' + currentRow;
+				var cell = null;
+
+				// For null, undefined of blank cell, continue so it doesn't create the _createNode
+				if ( row[i] === null || row[i] === undefined || row[i] === '' ) {
+					if ( config.createEmptyCells === true ) {
+						row[i] = '';
+					}
+					else {
+						continue;
+					}
+				}
+
+				var originalContent = row[i];
+				row[i] = $.trim( row[i] );
+
+				// Special number formatting options
+				for ( var j=0, jen=_excelSpecials.length ; j<jen ; j++ ) {
+					var special = _excelSpecials[j];
+
+					// TODO Need to provide the ability for the specials to say
+					// if they are returning a string, since at the moment it is
+					// assumed to be a number
+					if ( row[i].match && ! row[i].match(/^0\d+/) && row[i].match( special.match ) ) {
+						var val = row[i].replace(/[^\d\.\-]/g, '');
+
+						if ( special.fmt ) {
+							val = special.fmt( val );
+						}
+
+						cell = _createNode( rels, 'c', {
+							attr: {
+								r: cellId,
+								s: special.style
+							},
+							children: [
+								_createNode( rels, 'v', { text: val } )
+							]
+						} );
+
+						break;
+					}
+				}
+
+				if ( ! cell ) {
+					if ( typeof row[i] === 'number' || (
+						row[i].match &&
+						row[i].match(/^-?\d+(\.\d+)?$/) &&
+						! row[i].match(/^0\d+/) )
+					) {
+						// Detect numbers - don't match numbers with leading zeros
+						// or a negative anywhere but the start
+						cell = _createNode( rels, 'c', {
+							attr: {
+								t: 'n',
+								r: cellId
+							},
+							children: [
+								_createNode( rels, 'v', { text: row[i] } )
+							]
+						} );
+					}
+					else {
+						// String output - replace non standard characters for text output
+						var text = ! originalContent.replace ?
+							originalContent :
+							originalContent.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, '');
+
+						cell = _createNode( rels, 'c', {
+							attr: {
+								t: 'inlineStr',
+								r: cellId
+							},
+							children:{
+								row: _createNode( rels, 'is', {
+									children: {
+										row: _createNode( rels, 't', {
+											text: text,
+											attr: {
+												'xml:space': 'preserve'
+											}
+										} )
+									}
+								} )
+							}
+						} );
+					}
+				}
+
+				rowNode.appendChild( cell );
+			}
+
+			relsGet.appendChild(rowNode);
+			rowPos++;
+		};
+
+		if ( config.customizeData ) {
+			config.customizeData( data );
+		}
+
+		var mergeCells = function ( row, colspan ) {
+			var mergeCells = $('mergeCells', rels);
+
+			mergeCells[0].appendChild( _createNode( rels, 'mergeCell', {
+				attr: {
+					ref: 'A'+row+':'+createCellPos(colspan)+row
+				}
+			} ) );
+			mergeCells.attr( 'count', parseFloat(mergeCells.attr( 'count' ))+1 );
+			$('row:eq('+(row-1)+') c', rels).attr( 's', '51' ); // centre
+		};
+
+		// Title and top messages
+		var exportInfo = dt.buttons.exportInfo( config );
+		if ( exportInfo.title ) {
+			addRow( [exportInfo.title], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+		if ( exportInfo.messageTop ) {
+			addRow( [exportInfo.messageTop], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+
+		// Table itself
+		if ( config.header ) {
+			addRow( data.header, rowPos );
+			$('row:last c', rels).attr( 's', '2' ); // bold
+		}
+	
+		dataStartRow = rowPos;
+
+		for ( var n=0, ie=data.body.length ; n<ie ; n++ ) {
+			addRow( data.body[n], rowPos );
+		}
+	
+		dataEndRow = rowPos;
+
+		if ( config.footer && data.footer ) {
+			addRow( data.footer, rowPos);
+			$('row:last c', rels).attr( 's', '2' ); // bold
+		}
+
+		// Below the table
+		if ( exportInfo.messageBottom ) {
+			addRow( [exportInfo.messageBottom], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+		// Set column widths
+		var cols = _createNode( rels, 'cols' );
+		$('worksheet', rels).prepend( cols );
+
+		for ( var i=0, ien=data.header.length ; i<ien ; i++ ) {
+			cols.appendChild( _createNode( rels, 'col', {
+				attr: {
+					min: i+1,
+					max: i+1,
+					width: _excelColWidth( data, i ),
+					customWidth: 1
+				}
+			} ) );
+		}
+
+		// Workbook modifications
+		var workbook = xlsx.xl['workbook.xml'];
+
+		$( 'sheets sheet', workbook ).attr( 'name', _sheetname( config ) );
+
+		// Auto filter for columns
+		if ( config.autoFilter ) {
+			$('mergeCells', rels).before( _createNode( rels, 'autoFilter', {
+				attr: {
+					ref: 'A'+dataStartRow+':'+createCellPos(data.header.length-1)+dataEndRow
+				}
+			} ) );
+
+			$('definedNames', workbook).append( _createNode( workbook, 'definedName', {
+				attr: {
+					name: '_xlnm._FilterDatabase',
+					localSheetId: '0',
+					hidden: 1
+				},
+				text: _sheetname(config)+'!$A$'+dataStartRow+':'+createCellPos(data.header.length-1)+dataEndRow
+			} ) );
+		}
+
+		// Let the developer customise the document if they want to
+		if ( config.customize ) {
+			config.customize( xlsx, config, dt );
+		}
+
+		// Excel doesn't like an empty mergeCells tag
+		if ( $('mergeCells', rels).children().length === 0 ) {
+			$('mergeCells', rels).remove();
+		}
+
+		var jszip = _jsZip();
+		var zip = new jszip();
+		var zipConfig = {
+			type: 'blob',
+			mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+		};
+
+		_addToZip( zip, xlsx );
+
+		if ( zip.generateAsync ) {
+			// JSZip 3+
+			zip
+				.generateAsync( zipConfig )
+				.then( function ( blob ) {
+					_saveAs( blob, exportInfo.filename );
+					that.processing( false );
+				} );
+		}
+		else {
+			// JSZip 2.5
+			_saveAs(
+				zip.generate( zipConfig ),
+				exportInfo.filename
+			);
+			this.processing( false );
+		}
+	},
+
+	filename: '*',
+
+	extension: '.xlsx',
+
+	exportOptions: {},
+
+	header: true,
+
+	footer: false,
+
+	title: '*',
+
+	messageTop: '*',
+
+	messageBottom: '*',
+
+	createEmptyCells: false,
+
+	autoFilter: false,
+
+	sheetName: ''
+};
+
+//
+// PDF export - using pdfMake - http://pdfmake.org
+//
+DataTable.ext.buttons.pdfHtml5 = {
+	className: 'buttons-pdf buttons-html5',
+
+	available: function () {
+		return window.FileReader !== undefined && _pdfMake();
+	},
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.pdf', 'PDF' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		var that = this;
+		var data = dt.buttons.exportData( config.exportOptions );
+		var info = dt.buttons.exportInfo( config );
+		var rows = [];
+
+		if ( config.header ) {
+			rows.push( $.map( data.header, function ( d ) {
+				return {
+					text: typeof d === 'string' ? d : d+'',
+					style: 'tableHeader'
+				};
+			} ) );
+		}
+
+		for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+			rows.push( $.map( data.body[i], function ( d ) {
+				if ( d === null || d === undefined ) {
+					d = '';
+				}
+				return {
+					text: typeof d === 'string' ? d : d+'',
+					style: i % 2 ? 'tableBodyEven' : 'tableBodyOdd'
+				};
+			} ) );
+		}
+
+		if ( config.footer && data.footer) {
+			rows.push( $.map( data.footer, function ( d ) {
+				return {
+					text: typeof d === 'string' ? d : d+'',
+					style: 'tableFooter'
+				};
+			} ) );
+		}
+
+		var doc = {
+			pageSize: config.pageSize,
+			pageOrientation: config.orientation,
+			content: [
+				{
+					table: {
+						headerRows: 1,
+						body: rows
+					},
+					layout: 'noBorders'
+				}
+			],
+			styles: {
+				tableHeader: {
+					bold: true,
+					fontSize: 11,
+					color: 'white',
+					fillColor: '#2d4154',
+					alignment: 'center'
+				},
+				tableBodyEven: {},
+				tableBodyOdd: {
+					fillColor: '#f3f3f3'
+				},
+				tableFooter: {
+					bold: true,
+					fontSize: 11,
+					color: 'white',
+					fillColor: '#2d4154'
+				},
+				title: {
+					alignment: 'center',
+					fontSize: 15
+				},
+				message: {}
+			},
+			defaultStyle: {
+				fontSize: 10
+			}
+		};
+
+		if ( info.messageTop ) {
+			doc.content.unshift( {
+				text: info.messageTop,
+				style: 'message',
+				margin: [ 0, 0, 0, 12 ]
+			} );
+		}
+
+		if ( info.messageBottom ) {
+			doc.content.push( {
+				text: info.messageBottom,
+				style: 'message',
+				margin: [ 0, 0, 0, 12 ]
+			} );
+		}
+
+		if ( info.title ) {
+			doc.content.unshift( {
+				text: info.title,
+				style: 'title',
+				margin: [ 0, 0, 0, 12 ]
+			} );
+		}
+
+		if ( config.customize ) {
+			config.customize( doc, config, dt );
+		}
+
+		var pdf = _pdfMake().createPdf( doc );
+
+		if ( config.download === 'open' && ! _isDuffSafari() ) {
+			pdf.open();
+		}
+		else {
+			pdf.download( info.filename );
+		}
+
+		this.processing( false );
+	},
+
+	title: '*',
+
+	filename: '*',
+
+	extension: '.pdf',
+
+	exportOptions: {},
+
+	orientation: 'portrait',
+
+	pageSize: 'A4',
+
+	header: true,
+
+	footer: false,
+
+	messageTop: '*',
+
+	messageBottom: '*',
+
+	customize: null,
+
+	download: 'download'
+};
+
+
+return DataTable.Buttons;
+}));
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.html5.min.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.html5.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.html5.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,35 @@
+/*!
+ HTML5 export buttons for Buttons and DataTables.
+ 2016 SpryMedia Ltd - datatables.net/license
+
+ FileSaver.js (1.3.3) - MIT license
+ Copyright © 2016 Eli Grey - http://eligrey.com
+*/
+(function(f){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(g){return f(g,window,document)}):"object"===typeof exports?module.exports=function(g,p,z,t){g||(g=window);p&&p.fn.dataTable||(p=require("datatables.net")(g,p).$);p.fn.dataTable.Buttons||require("datatables.net-buttons")(g,p);return f(p,g,g.document,z,t)}:f(jQuery,window,document)})(function(f,g,p,z,t,w){function A(a){for(var b="";0<=a;)b=String.fromCharCode(a%26+65)+b,a=Math.floor(a/
+26)-1;return b}function E(a,b){y===w&&(y=-1===C.serializeToString(f.parseXML(F["xl/worksheets/sheet1.xml"])).indexOf("xmlns:r"));f.each(b,function(b,c){if(f.isPlainObject(c))b=a.folder(b),E(b,c);else{if(y){var d=c.childNodes[0],e,h=[];for(e=d.attributes.length-1;0<=e;e--){var m=d.attributes[e].nodeName;var k=d.attributes[e].nodeValue;-1!==m.indexOf(":")&&(h.push({name:m,value:k}),d.removeAttribute(m))}e=0;for(m=h.length;e<m;e++)k=c.createAttribute(h[e].name.replace(":","_dt_b_namespace_token_")),
+k.value=h[e].value,d.setAttributeNode(k)}c=C.serializeToString(c);y&&(-1===c.indexOf("<?xml")&&(c='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+c),c=c.replace(/_dt_b_namespace_token_/g,":"),c=c.replace(/xmlns:NS[\d]+="" NS[\d]+:/g,""));c=c.replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");a.file(b,c)}})}function r(a,b,d){var c=a.createElement(b);d&&(d.attr&&f(c).attr(d.attr),d.children&&f.each(d.children,function(a,b){c.appendChild(b)}),null!==d.text&&d.text!==w&&c.appendChild(a.createTextNode(d.text)));
+return c}function L(a,b){var d=a.header[b].length;a.footer&&a.footer[b].length>d&&(d=a.footer[b].length);for(var c=0,f=a.body.length;c<f;c++){var e=a.body[c][b];e=null!==e&&e!==w?e.toString():"";-1!==e.indexOf("\n")?(e=e.split("\n"),e.sort(function(a,c){return c.length-a.length}),e=e[0].length):e=e.length;e>d&&(d=e);if(40<d)return 54}d*=1.35;return 6<d?d:6}var v=f.fn.dataTable;v.Buttons.pdfMake=function(a){if(!a)return t||g.pdfMake;t=m_ake};v.Buttons.jszip=function(a){if(!a)return z||g.JSZip;z=a};
+var B=function(a){if(!("undefined"===typeof a||"undefined"!==typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var b=a.document.createElementNS("http://www.w3.org/1999/xhtml","a"),d="download"in b,c=/constructor/i.test(a.HTMLElement)||a.safari,f=/CriOS\/[\d]+/.test(navigator.userAgent),e=function(c){(a.setImmediate||a.setTimeout)(function(){throw c;},0)},h=function(c){setTimeout(function(){"string"===typeof c?(a.URL||a.webkitURL||a).revokeObjectURL(c):c.remove()},4E4)},m=function(a){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?
+new Blob([String.fromCharCode(65279),a],{type:a.type}):a},k=function(k,q,n){n||(k=m(k));var l=this,g="application/octet-stream"===k.type,D=function(){var a=["writestart","progress","write","writeend"];a=[].concat(a);for(var c=a.length;c--;){var b=l["on"+a[c]];if("function"===typeof b)try{b.call(l,l)}catch(M){e(M)}}};l.readyState=l.INIT;if(d){var u=(a.URL||a.webkitURL||a).createObjectURL(k);setTimeout(function(){b.href=u;b.download=q;var a=new MouseEvent("click");b.dispatchEvent(a);D();h(u);l.readyState=
+l.DONE})}else(function(){if((f||g&&c)&&a.FileReader){var b=new FileReader;b.onloadend=function(){var c=f?b.result:b.result.replace(/^data:[^;]*;/,"data:attachment/file;");a.open(c,"_blank")||(a.location.href=c);l.readyState=l.DONE;D()};b.readAsDataURL(k);l.readyState=l.INIT}else u||(u=(a.URL||a.webkitURL||a).createObjectURL(k)),g?a.location.href=u:a.open(u,"_blank")||(a.location.href=u),l.readyState=l.DONE,D(),h(u)})()},n=k.prototype;if("undefined"!==typeof navigator&&navigator.msSaveOrOpenBlob)return function(a,
+c,b){c=c||a.name||"download";b||(a=m(a));return navigator.msSaveOrOpenBlob(a,c)};n.abort=function(){};n.readyState=n.INIT=0;n.WRITING=1;n.DONE=2;n.error=n.onwritestart=n.onprogress=n.onwrite=n.onabort=n.onerror=n.onwriteend=null;return function(a,c,b){return new k(a,c||a.name||"download",b)}}}("undefined"!==typeof self&&self||"undefined"!==typeof g&&g||this.content);v.fileSave=B;var G=function(a){var b="Sheet1";a.sheetName&&(b=a.sheetName.replace(/[\[\]\*\/\\\?:]/g,""));return b},H=function(a){return a.newline?
+a.newline:navigator.userAgent.match(/Windows/)?"\r\n":"\n"},I=function(a,b){var d=H(b);a=a.buttons.exportData(b.exportOptions);var c=b.fieldBoundary,f=b.fieldSeparator,e=new RegExp(c,"g"),h=b.escapeChar!==w?b.escapeChar:"\\",m=function(a){for(var b="",d=0,m=a.length;d<m;d++)0<d&&(b+=f),b+=c?c+(""+a[d]).replace(e,h+c)+c:a[d];return b},k=b.header?m(a.header)+d:"";b=b.footer&&a.footer?d+m(a.footer):"";for(var n=[],g=0,q=a.body.length;g<q;g++)n.push(m(a.body[g]));return{str:k+n.join(d)+b,rows:n.length}},
+J=function(){if(-1===navigator.userAgent.indexOf("Safari")||-1!==navigator.userAgent.indexOf("Chrome")||-1!==navigator.userAgent.indexOf("Opera"))return!1;var a=navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/);return a&&1<a.length&&603.1>1*a[1]?!0:!1};try{var C=new XMLSerializer,y}catch(a){}var F={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',
+"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>',"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>',
+"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><definedNames/></workbook>',
+"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="#,##0.00_- [$$-45C]"/><numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="67"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'},
+K=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(a){return a/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(a){return a/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\-?\d+$/,style:65},{match:/^\-?\d+\.\d{2}$/,style:66},{match:/^\([\d,]+\)$/,style:61,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^\-?[\d,]+$/,style:63},
+{match:/^\-?[\d,]+\.\d{2}$/,style:64}];v.ext.buttons.copyHtml5={className:"buttons-copy buttons-html5",text:function(a){return a.i18n("buttons.copy","Copy")},action:function(a,b,d,c){this.processing(!0);var g=this;a=I(b,c);var e=b.buttons.exportInfo(c),h=H(c),m=a.str;d=f("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0});e.title&&(m=e.title+h+h+m);e.messageTop&&(m=e.messageTop+h+h+m);e.messageBottom&&(m=m+h+h+e.messageBottom);c.customize&&(m=c.customize(m,c,b));c=f("<textarea readonly/>").val(m).appendTo(d);
+if(p.queryCommandSupported("copy")){d.appendTo(b.table().container());c[0].focus();c[0].select();try{var k=p.execCommand("copy");d.remove();if(k){b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),b.i18n("buttons.copySuccess",{1:"Copied one row to clipboard",_:"Copied %d rows to clipboard"},a.rows),2E3);this.processing(!1);return}}catch(q){}}k=f("<span>"+b.i18n("buttons.copyKeys","Press <i>ctrl</i> or <i>⌘</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>To cancel, click this message or press escape.")+
+"</span>").append(d);b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),k,0);c[0].focus();c[0].select();var n=f(k).closest(".dt-button-info"),r=function(){n.off("click.buttons-copy");f(p).off(".buttons-copy");b.buttons.info(!1)};n.on("click.buttons-copy",r);f(p).on("keydown.buttons-copy",function(a){27===a.keyCode&&(r(),g.processing(!1))}).on("copy.buttons-copy cut.buttons-copy",function(){r();g.processing(!1)})},exportOptions:{},fieldSeparator:"\t",fieldBoundary:"",header:!0,footer:!1,
+title:"*",messageTop:"*",messageBottom:"*"};v.ext.buttons.csvHtml5={bom:!1,className:"buttons-csv buttons-html5",available:function(){return g.FileReader!==w&&g.Blob},text:function(a){return a.i18n("buttons.csv","CSV")},action:function(a,b,d,c){this.processing(!0);a=I(b,c).str;d=b.buttons.exportInfo(c);var f=c.charset;c.customize&&(a=c.customize(a,c,b));!1!==f?(f||(f=p.characterSet||p.charset),f&&(f=";charset="+f)):f="";c.bom&&(a="﻿"+a);B(new Blob([a],{type:"text/csv"+f}),d.filename,!0);this.processing(!1)},
+filename:"*",extension:".csv",exportOptions:{},fieldSeparator:",",fieldBoundary:'"',escapeChar:'"',charset:null,header:!0,footer:!1};v.ext.buttons.excelHtml5={className:"buttons-excel buttons-html5",available:function(){return g.FileReader!==w&&(z||g.JSZip)!==w&&!J()&&C},text:function(a){return a.i18n("buttons.excel","Excel")},action:function(a,b,d,c){this.processing(!0);var p=this,e=0;a=function(a){return f.parseXML(F[a])};var h=a("xl/worksheets/sheet1.xml"),m=h.getElementsByTagName("sheetData")[0];
+a={_rels:{".rels":a("_rels/.rels")},xl:{_rels:{"workbook.xml.rels":a("xl/_rels/workbook.xml.rels")},"workbook.xml":a("xl/workbook.xml"),"styles.xml":a("xl/styles.xml"),worksheets:{"sheet1.xml":h}},"[Content_Types].xml":a("[Content_Types].xml")};var k=b.buttons.exportData(c.exportOptions),n,v,q=function(a){n=e+1;v=r(h,"row",{attr:{r:n}});for(var b=0,d=a.length;b<d;b++){var k=A(b)+""+n,g=null;if(null===a[b]||a[b]===w||""===a[b])if(!0===c.createEmptyCells)a[b]="";else continue;var l=a[b];a[b]=f.trim(a[b]);
+for(var q=0,p=K.length;q<p;q++){var u=K[q];if(a[b].match&&!a[b].match(/^0\d+/)&&a[b].match(u.match)){g=a[b].replace(/[^\d\.\-]/g,"");u.fmt&&(g=u.fmt(g));g=r(h,"c",{attr:{r:k,s:u.style},children:[r(h,"v",{text:g})]});break}}g||("number"===typeof a[b]||a[b].match&&a[b].match(/^-?\d+(\.\d+)?$/)&&!a[b].match(/^0\d+/)?g=r(h,"c",{attr:{t:"n",r:k},children:[r(h,"v",{text:a[b]})]}):(l=l.replace?l.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""):l,g=r(h,"c",{attr:{t:"inlineStr",r:k},children:{row:r(h,
+"is",{children:{row:r(h,"t",{text:l,attr:{"xml:space":"preserve"}})}})}})));v.appendChild(g)}m.appendChild(v);e++};c.customizeData&&c.customizeData(k);var x=function(a,b){var c=f("mergeCells",h);c[0].appendChild(r(h,"mergeCell",{attr:{ref:"A"+a+":"+A(b)+a}}));c.attr("count",parseFloat(c.attr("count"))+1);f("row:eq("+(a-1)+") c",h).attr("s","51")},l=b.buttons.exportInfo(c);l.title&&(q([l.title],e),x(e,k.header.length-1));l.messageTop&&(q([l.messageTop],e),x(e,k.header.length-1));c.header&&(q(k.header,
+e),f("row:last c",h).attr("s","2"));d=e;var t=0;for(var y=k.body.length;t<y;t++)q(k.body[t],e);t=e;c.footer&&k.footer&&(q(k.footer,e),f("row:last c",h).attr("s","2"));l.messageBottom&&(q([l.messageBottom],e),x(e,k.header.length-1));q=r(h,"cols");f("worksheet",h).prepend(q);x=0;for(y=k.header.length;x<y;x++)q.appendChild(r(h,"col",{attr:{min:x+1,max:x+1,width:L(k,x),customWidth:1}}));q=a.xl["workbook.xml"];f("sheets sheet",q).attr("name",G(c));c.autoFilter&&(f("mergeCells",h).before(r(h,"autoFilter",
+{attr:{ref:"A"+d+":"+A(k.header.length-1)+t}})),f("definedNames",q).append(r(q,"definedName",{attr:{name:"_xlnm._FilterDatabase",localSheetId:"0",hidden:1},text:G(c)+"!$A$"+d+":"+A(k.header.length-1)+t})));c.customize&&c.customize(a,c,b);0===f("mergeCells",h).children().length&&f("mergeCells",h).remove();b=new (z||g.JSZip);d={type:"blob",mimeType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};E(b,a);b.generateAsync?b.generateAsync(d).then(function(a){B(a,l.filename);p.processing(!1)}):
+(B(b.generate(d),l.filename),this.processing(!1))},filename:"*",extension:".xlsx",exportOptions:{},header:!0,footer:!1,title:"*",messageTop:"*",messageBottom:"*",createEmptyCells:!1,autoFilter:!1,sheetName:""};v.ext.buttons.pdfHtml5={className:"buttons-pdf buttons-html5",available:function(){return g.FileReader!==w&&(t||g.pdfMake)},text:function(a){return a.i18n("buttons.pdf","PDF")},action:function(a,b,d,c){this.processing(!0);d=b.buttons.exportData(c.exportOptions);a=b.buttons.exportInfo(c);var p=
+[];c.header&&p.push(f.map(d.header,function(a){return{text:"string"===typeof a?a:a+"",style:"tableHeader"}}));for(var e=0,h=d.body.length;e<h;e++)p.push(f.map(d.body[e],function(a){if(null===a||a===w)a="";return{text:"string"===typeof a?a:a+"",style:e%2?"tableBodyEven":"tableBodyOdd"}}));c.footer&&d.footer&&p.push(f.map(d.footer,function(a){return{text:"string"===typeof a?a:a+"",style:"tableFooter"}}));d={pageSize:c.pageSize,pageOrientation:c.orientation,content:[{table:{headerRows:1,body:p},layout:"noBorders"}],
+styles:{tableHeader:{bold:!0,fontSize:11,color:"white",fillColor:"#2d4154",alignment:"center"},tableBodyEven:{},tableBodyOdd:{fillColor:"#f3f3f3"},tableFooter:{bold:!0,fontSize:11,color:"white",fillColor:"#2d4154"},title:{alignment:"center",fontSize:15},message:{}},defaultStyle:{fontSize:10}};a.messageTop&&d.content.unshift({text:a.messageTop,style:"message",margin:[0,0,0,12]});a.messageBottom&&d.content.push({text:a.messageBottom,style:"message",margin:[0,0,0,12]});a.title&&d.content.unshift({text:a.title,
+style:"title",margin:[0,0,0,12]});c.customize&&c.customize(d,c,b);b=(t||g.pdfMake).createPdf(d);"open"!==c.download||J()?b.download(a.filename):b.open();this.processing(!1)},title:"*",filename:"*",extension:".pdf",exportOptions:{},orientation:"portrait",pageSize:"A4",header:!0,footer:!1,messageTop:"*",messageBottom:"*",customize:null,download:"download"};return v.Buttons});
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.jqueryui.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,62 @@
+/*! jQuery UI integration for DataTables' Buttons
+ * ©2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-jqui', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-jqui')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend( true, DataTable.Buttons.defaults, {
+	dom: {
+		container: {
+			className: 'dt-buttons ui-buttonset'
+		},
+		button: {
+			className: 'dt-button ui-button ui-state-default ui-button-text-only',
+			disabled: 'ui-state-disabled',
+			active: 'ui-state-active'
+		},
+		buttonLiner: {
+			tag: 'span',
+			className: 'ui-button-text'
+		}
+	}
+} );
+
+DataTable.ext.buttons.collection.text = function ( dt ) {
+	return dt.i18n('buttons.collection', 'Collection <span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"/>');
+};
+
+
+return DataTable.Buttons;
+}));
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ jQuery UI integration for DataTables' Buttons
+ ©2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-jqui")(a,b).$);b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons ui-buttonset"},
+button:{className:"dt-button ui-button ui-state-default ui-button-text-only",disabled:"ui-state-disabled",active:"ui-state-active"},buttonLiner:{tag:"span",className:"ui-button-text"}}});a.ext.buttons.collection.text=function(a){return a.i18n("buttons.collection",'Collection <span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"/>')};return a.Buttons});
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.print.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.print.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.print.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,210 @@
+/*!
+ * Print button for Buttons and DataTables.
+ * 2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var _link = document.createElement( 'a' );
+
+/**
+ * Clone link and style tags, taking into account the need to change the source
+ * path.
+ *
+ * @param  {node}     el Element to convert
+ */
+var _styleToAbs = function( el ) {
+	var url;
+	var clone = $(el).clone()[0];
+	var linkHost;
+
+	if ( clone.nodeName.toLowerCase() === 'link' ) {
+		clone.href = _relToAbs( clone.href );
+	}
+
+	return clone.outerHTML;
+};
+
+/**
+ * Convert a URL from a relative to an absolute address so it will work
+ * correctly in the popup window which has no base URL.
+ *
+ * @param  {string} href URL
+ */
+var _relToAbs = function( href ) {
+	// Assign to a link on the original page so the browser will do all the
+	// hard work of figuring out where the file actually is
+	_link.href = href;
+	var linkHost = _link.host;
+
+	// IE doesn't have a trailing slash on the host
+	// Chrome has it on the pathname
+	if ( linkHost.indexOf('/') === -1 && _link.pathname.indexOf('/') !== 0) {
+		linkHost += '/';
+	}
+
+	return _link.protocol+"//"+linkHost+_link.pathname+_link.search;
+};
+
+
+DataTable.ext.buttons.print = {
+	className: 'buttons-print',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.print', 'Print' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		var data = dt.buttons.exportData(
+			$.extend( {decodeEntities: false}, config.exportOptions ) // XSS protection
+		);
+		var exportInfo = dt.buttons.exportInfo( config );
+		var columnClasses = dt
+			.columns( config.exportOptions.columns )
+			.flatten()
+			.map( function (idx) {
+				return dt.settings()[0].aoColumns[dt.column(idx).index()].sClass;
+			} )
+			.toArray();
+
+		var addRow = function ( d, tag ) {
+			var str = '<tr>';
+
+			for ( var i=0, ien=d.length ; i<ien ; i++ ) {
+				// null and undefined aren't useful in the print output
+				var dataOut = d[i] === null || d[i] === undefined ?
+					'' :
+					d[i];
+				var classAttr = columnClasses[i] ?
+					'class="'+columnClasses[i]+'"' :
+					'';
+
+				str += '<'+tag+' '+classAttr+'>'+dataOut+'</'+tag+'>';
+			}
+
+			return str + '</tr>';
+		};
+
+		// Construct a table for printing
+		var html = '<table class="'+dt.table().node().className+'">';
+
+		if ( config.header ) {
+			html += '<thead>'+ addRow( data.header, 'th' ) +'</thead>';
+		}
+
+		html += '<tbody>';
+		for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+			html += addRow( data.body[i], 'td' );
+		}
+		html += '</tbody>';
+
+		if ( config.footer && data.footer ) {
+			html += '<tfoot>'+ addRow( data.footer, 'th' ) +'</tfoot>';
+		}
+		html += '</table>';
+
+		// Open a new window for the printable table
+		var win = window.open( '', '' );
+		win.document.close();
+
+		// Inject the title and also a copy of the style and link tags from this
+		// document so the table can retain its base styling. Note that we have
+		// to use string manipulation as IE won't allow elements to be created
+		// in the host document and then appended to the new window.
+		var head = '<title>'+exportInfo.title+'</title>';
+		$('style, link').each( function () {
+			head += _styleToAbs( this );
+		} );
+
+		try {
+			win.document.head.innerHTML = head; // Work around for Edge
+		}
+		catch (e) {
+			$(win.document.head).html( head ); // Old IE
+		}
+
+		// Inject the table and other surrounding information
+		win.document.body.innerHTML =
+			'<h1>'+exportInfo.title+'</h1>'+
+			'<div>'+(exportInfo.messageTop || '')+'</div>'+
+			html+
+			'<div>'+(exportInfo.messageBottom || '')+'</div>';
+
+		$(win.document.body).addClass('dt-print-view');
+
+		$('img', win.document.body).each( function ( i, img ) {
+			img.setAttribute( 'src', _relToAbs( img.getAttribute('src') ) );
+		} );
+
+		if ( config.customize ) {
+			config.customize( win, config, dt );
+		}
+
+		// Allow stylesheets time to load
+		var autoPrint = function () {
+			if ( config.autoPrint ) {
+				win.print(); // blocking - so close will not
+				win.close(); // execute until this is done
+			}
+		};
+
+		if ( navigator.userAgent.match(/Trident\/\d.\d/) ) { // IE needs to call this without a setTimeout
+			autoPrint();
+		}
+		else {
+			win.setTimeout( autoPrint, 1000 );
+		}
+	},
+
+	title: '*',
+
+	messageTop: '*',
+
+	messageBottom: '*',
+
+	exportOptions: {},
+
+	header: true,
+
+	footer: false,
+
+	autoPrint: true,
+
+	customize: null
+};
+
+
+return DataTable.Buttons;
+}));
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.print.min.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.print.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.print.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9 @@
+/*!
+ Print button for Buttons and DataTables.
+ 2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(e){return c(e,window,document)}):"object"===typeof exports?module.exports=function(e,a){e||(e=window);a&&a.fn.dataTable||(a=require("datatables.net")(e,a).$);a.fn.dataTable.Buttons||require("datatables.net-buttons")(e,a);return c(a,e,e.document)}:c(jQuery,window,document)})(function(c,e,a,q){var k=c.fn.dataTable,d=a.createElement("a"),p=function(b){d.href=b;b=d.host;-1===b.indexOf("/")&&
+0!==d.pathname.indexOf("/")&&(b+="/");return d.protocol+"//"+b+d.pathname+d.search};k.ext.buttons.print={className:"buttons-print",text:function(b){return b.i18n("buttons.print","Print")},action:function(b,a,d,g){b=a.buttons.exportData(c.extend({decodeEntities:!1},g.exportOptions));d=a.buttons.exportInfo(g);var k=a.columns(g.exportOptions.columns).flatten().map(function(b){return a.settings()[0].aoColumns[a.column(b).index()].sClass}).toArray(),m=function(b,a){for(var d="<tr>",c=0,e=b.length;c<e;c++)d+=
+"<"+a+" "+(k[c]?'class="'+k[c]+'"':"")+">"+(null===b[c]||b[c]===q?"":b[c])+"</"+a+">";return d+"</tr>"},h='<table class="'+a.table().node().className+'">';g.header&&(h+="<thead>"+m(b.header,"th")+"</thead>");h+="<tbody>";for(var n=0,r=b.body.length;n<r;n++)h+=m(b.body[n],"td");h+="</tbody>";g.footer&&b.footer&&(h+="<tfoot>"+m(b.footer,"th")+"</tfoot>");h+="</table>";var f=e.open("","");f.document.close();var l="<title>"+d.title+"</title>";c("style, link").each(function(){var b=l,a=c(this).clone()[0];
+"link"===a.nodeName.toLowerCase()&&(a.href=p(a.href));l=b+a.outerHTML});try{f.document.head.innerHTML=l}catch(t){c(f.document.head).html(l)}f.document.body.innerHTML="<h1>"+d.title+"</h1><div>"+(d.messageTop||"")+"</div>"+h+"<div>"+(d.messageBottom||"")+"</div>";c(f.document.body).addClass("dt-print-view");c("img",f.document.body).each(function(b,a){a.setAttribute("src",p(a.getAttribute("src")))});g.customize&&g.customize(f,g,a);b=function(){g.autoPrint&&(f.print(),f.close())};navigator.userAgent.match(/Trident\/\d.\d/)?
+b():f.setTimeout(b,1E3)},title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!1,autoPrint:!0,customize:null};return k.Buttons});
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.semanticui.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,57 @@
+/*! Bootstrap integration for DataTables' Buttons
+ * ©2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-se', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-se')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend( true, DataTable.Buttons.defaults, {
+	dom: {
+		container: {
+			className: 'dt-buttons ui basic buttons'
+		},
+		button: {
+			tag: 'button',
+			className: 'ui button'
+		},
+		collection: {
+			tag: 'div',
+			className: 'ui basic vertical buttons'
+		}
+	}
+} );
+
+
+return DataTable.Buttons;
+}));
Index: public/vendors/dataTable/Buttons-1.6.1/js/buttons.semanticui.min.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/buttons.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/buttons.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ Bootstrap integration for DataTables' Buttons
+ ©2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-se")(a,b).$);b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons ui basic buttons"},
+button:{tag:"button",className:"ui button"},collection:{tag:"div",className:"ui basic vertical buttons"}}});return a.Buttons});
Index: public/vendors/dataTable/Buttons-1.6.1/js/dataTables.buttons.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/dataTables.buttons.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/dataTables.buttons.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2015 @@
+/*! Buttons for DataTables 1.6.1
+ * ©2016-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+// Used for namespacing events added to the document by each instance, so they
+// can be removed on destroy
+var _instCounter = 0;
+
+// Button namespacing counter for namespacing events on individual buttons
+var _buttonCounter = 0;
+
+var _dtButtons = DataTable.ext.buttons;
+
+/**
+ * [Buttons description]
+ * @param {[type]}
+ * @param {[type]}
+ */
+var Buttons = function( dt, config )
+{
+	// If not created with a `new` keyword then we return a wrapper function that
+	// will take the settings object for a DT. This allows easy use of new instances
+	// with the `layout` option - e.g. `topLeft: $.fn.dataTable.Buttons( ... )`.
+	if ( !(this instanceof Buttons) ) {
+		return function (settings) {
+			return new Buttons( settings, dt ).container();
+		};
+	}
+
+	// If there is no config set it to an empty object
+	if ( typeof( config ) === 'undefined' ) {
+		config = {};	
+	}
+	
+	// Allow a boolean true for defaults
+	if ( config === true ) {
+		config = {};
+	}
+
+	// For easy configuration of buttons an array can be given
+	if ( $.isArray( config ) ) {
+		config = { buttons: config };
+	}
+
+	this.c = $.extend( true, {}, Buttons.defaults, config );
+
+	// Don't want a deep copy for the buttons
+	if ( config.buttons ) {
+		this.c.buttons = config.buttons;
+	}
+
+	this.s = {
+		dt: new DataTable.Api( dt ),
+		buttons: [],
+		listenKeys: '',
+		namespace: 'dtb'+(_instCounter++)
+	};
+
+	this.dom = {
+		container: $('<'+this.c.dom.container.tag+'/>')
+			.addClass( this.c.dom.container.className )
+	};
+
+	this._constructor();
+};
+
+
+$.extend( Buttons.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods
+	 */
+
+	/**
+	 * Get the action of a button
+	 * @param  {int|string} Button index
+	 * @return {function}
+	 *//**
+	 * Set the action of a button
+	 * @param  {node} node Button element
+	 * @param  {function} action Function to set
+	 * @return {Buttons} Self for chaining
+	 */
+	action: function ( node, action )
+	{
+		var button = this._nodeToButton( node );
+
+		if ( action === undefined ) {
+			return button.conf.action;
+		}
+
+		button.conf.action = action;
+
+		return this;
+	},
+
+	/**
+	 * Add an active class to the button to make to look active or get current
+	 * active state.
+	 * @param  {node} node Button element
+	 * @param  {boolean} [flag] Enable / disable flag
+	 * @return {Buttons} Self for chaining or boolean for getter
+	 */
+	active: function ( node, flag ) {
+		var button = this._nodeToButton( node );
+		var klass = this.c.dom.button.active;
+		var jqNode = $(button.node);
+
+		if ( flag === undefined ) {
+			return jqNode.hasClass( klass );
+		}
+
+		jqNode.toggleClass( klass, flag === undefined ? true : flag );
+
+		return this;
+	},
+
+	/**
+	 * Add a new button
+	 * @param {object} config Button configuration object, base string name or function
+	 * @param {int|string} [idx] Button index for where to insert the button
+	 * @return {Buttons} Self for chaining
+	 */
+	add: function ( config, idx )
+	{
+		var buttons = this.s.buttons;
+
+		if ( typeof idx === 'string' ) {
+			var split = idx.split('-');
+			var base = this.s;
+
+			for ( var i=0, ien=split.length-1 ; i<ien ; i++ ) {
+				base = base.buttons[ split[i]*1 ];
+			}
+
+			buttons = base.buttons;
+			idx = split[ split.length-1 ]*1;
+		}
+
+		this._expandButton( buttons, config, base !== undefined, idx );
+		this._draw();
+
+		return this;
+	},
+
+	/**
+	 * Get the container node for the buttons
+	 * @return {jQuery} Buttons node
+	 */
+	container: function ()
+	{
+		return this.dom.container;
+	},
+
+	/**
+	 * Disable a button
+	 * @param  {node} node Button node
+	 * @return {Buttons} Self for chaining
+	 */
+	disable: function ( node ) {
+		var button = this._nodeToButton( node );
+
+		$(button.node).addClass( this.c.dom.button.disabled );
+
+		return this;
+	},
+
+	/**
+	 * Destroy the instance, cleaning up event handlers and removing DOM
+	 * elements
+	 * @return {Buttons} Self for chaining
+	 */
+	destroy: function ()
+	{
+		// Key event listener
+		$('body').off( 'keyup.'+this.s.namespace );
+
+		// Individual button destroy (so they can remove their own events if
+		// needed). Take a copy as the array is modified by `remove`
+		var buttons = this.s.buttons.slice();
+		var i, ien;
+		
+		for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+			this.remove( buttons[i].node );
+		}
+
+		// Container
+		this.dom.container.remove();
+
+		// Remove from the settings object collection
+		var buttonInsts = this.s.dt.settings()[0];
+
+		for ( i=0, ien=buttonInsts.length ; i<ien ; i++ ) {
+			if ( buttonInsts.inst === this ) {
+				buttonInsts.splice( i, 1 );
+				break;
+			}
+		}
+
+		return this;
+	},
+
+	/**
+	 * Enable / disable a button
+	 * @param  {node} node Button node
+	 * @param  {boolean} [flag=true] Enable / disable flag
+	 * @return {Buttons} Self for chaining
+	 */
+	enable: function ( node, flag )
+	{
+		if ( flag === false ) {
+			return this.disable( node );
+		}
+
+		var button = this._nodeToButton( node );
+		$(button.node).removeClass( this.c.dom.button.disabled );
+
+		return this;
+	},
+
+	/**
+	 * Get the instance name for the button set selector
+	 * @return {string} Instance name
+	 */
+	name: function ()
+	{
+		return this.c.name;
+	},
+
+	/**
+	 * Get a button's node of the buttons container if no button is given
+	 * @param  {node} [node] Button node
+	 * @return {jQuery} Button element, or container
+	 */
+	node: function ( node )
+	{
+		if ( ! node ) {
+			return this.dom.container;
+		}
+
+		var button = this._nodeToButton( node );
+		return $(button.node);
+	},
+
+	/**
+	 * Set / get a processing class on the selected button
+	 * @param {element} node Triggering button node
+	 * @param  {boolean} flag true to add, false to remove, undefined to get
+	 * @return {boolean|Buttons} Getter value or this if a setter.
+	 */
+	processing: function ( node, flag )
+	{
+		var dt = this.s.dt;
+		var button = this._nodeToButton( node );
+
+		if ( flag === undefined ) {
+			return $(button.node).hasClass( 'processing' );
+		}
+
+		$(button.node).toggleClass( 'processing', flag );
+
+		$(dt.table().node()).triggerHandler( 'buttons-processing.dt', [
+			flag, dt.button( node ), dt, $(node), button.conf
+		] );
+
+		return this;
+	},
+
+	/**
+	 * Remove a button.
+	 * @param  {node} node Button node
+	 * @return {Buttons} Self for chaining
+	 */
+	remove: function ( node )
+	{
+		var button = this._nodeToButton( node );
+		var host = this._nodeToHost( node );
+		var dt = this.s.dt;
+
+		// Remove any child buttons first
+		if ( button.buttons.length ) {
+			for ( var i=button.buttons.length-1 ; i>=0 ; i-- ) {
+				this.remove( button.buttons[i].node );
+			}
+		}
+
+		// Allow the button to remove event handlers, etc
+		if ( button.conf.destroy ) {
+			button.conf.destroy.call( dt.button(node), dt, $(node), button.conf );
+		}
+
+		this._removeKey( button.conf );
+
+		$(button.node).remove();
+
+		var idx = $.inArray( button, host );
+		host.splice( idx, 1 );
+
+		return this;
+	},
+
+	/**
+	 * Get the text for a button
+	 * @param  {int|string} node Button index
+	 * @return {string} Button text
+	 *//**
+	 * Set the text for a button
+	 * @param  {int|string|function} node Button index
+	 * @param  {string} label Text
+	 * @return {Buttons} Self for chaining
+	 */
+	text: function ( node, label )
+	{
+		var button = this._nodeToButton( node );
+		var buttonLiner = this.c.dom.collection.buttonLiner;
+		var linerTag = button.inCollection && buttonLiner && buttonLiner.tag ?
+			buttonLiner.tag :
+			this.c.dom.buttonLiner.tag;
+		var dt = this.s.dt;
+		var jqNode = $(button.node);
+		var text = function ( opt ) {
+			return typeof opt === 'function' ?
+				opt( dt, jqNode, button.conf ) :
+				opt;
+		};
+
+		if ( label === undefined ) {
+			return text( button.conf.text );
+		}
+
+		button.conf.text = label;
+
+		if ( linerTag ) {
+			jqNode.children( linerTag ).html( text(label) );
+		}
+		else {
+			jqNode.html( text(label) );
+		}
+
+		return this;
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Buttons constructor
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var dtSettings = dt.settings()[0];
+		var buttons =  this.c.buttons;
+
+		if ( ! dtSettings._buttons ) {
+			dtSettings._buttons = [];
+		}
+
+		dtSettings._buttons.push( {
+			inst: this,
+			name: this.c.name
+		} );
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			this.add( buttons[i] );
+		}
+
+		dt.on( 'destroy', function ( e, settings ) {
+			if ( settings === dtSettings ) {
+				that.destroy();
+			}
+		} );
+
+		// Global key event binding to listen for button keys
+		$('body').on( 'keyup.'+this.s.namespace, function ( e ) {
+			if ( ! document.activeElement || document.activeElement === document.body ) {
+				// SUse a string of characters for fast lookup of if we need to
+				// handle this
+				var character = String.fromCharCode(e.keyCode).toLowerCase();
+
+				if ( that.s.listenKeys.toLowerCase().indexOf( character ) !== -1 ) {
+					that._keypress( character, e );
+				}
+			}
+		} );
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Add a new button to the key press listener
+	 * @param {object} conf Resolved button configuration object
+	 * @private
+	 */
+	_addKey: function ( conf )
+	{
+		if ( conf.key ) {
+			this.s.listenKeys += $.isPlainObject( conf.key ) ?
+				conf.key.key :
+				conf.key;
+		}
+	},
+
+	/**
+	 * Insert the buttons into the container. Call without parameters!
+	 * @param  {node} [container] Recursive only - Insert point
+	 * @param  {array} [buttons] Recursive only - Buttons array
+	 * @private
+	 */
+	_draw: function ( container, buttons )
+	{
+		if ( ! container ) {
+			container = this.dom.container;
+			buttons = this.s.buttons;
+		}
+
+		container.children().detach();
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			container.append( buttons[i].inserter );
+			container.append( ' ' );
+
+			if ( buttons[i].buttons && buttons[i].buttons.length ) {
+				this._draw( buttons[i].collection, buttons[i].buttons );
+			}
+		}
+	},
+
+	/**
+	 * Create buttons from an array of buttons
+	 * @param  {array} attachTo Buttons array to attach to
+	 * @param  {object} button Button definition
+	 * @param  {boolean} inCollection true if the button is in a collection
+	 * @private
+	 */
+	_expandButton: function ( attachTo, button, inCollection, attachPoint )
+	{
+		var dt = this.s.dt;
+		var buttonCounter = 0;
+		var buttons = ! $.isArray( button ) ?
+			[ button ] :
+			button;
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			var conf = this._resolveExtends( buttons[i] );
+
+			if ( ! conf ) {
+				continue;
+			}
+
+			// If the configuration is an array, then expand the buttons at this
+			// point
+			if ( $.isArray( conf ) ) {
+				this._expandButton( attachTo, conf, inCollection, attachPoint );
+				continue;
+			}
+
+			var built = this._buildButton( conf, inCollection );
+			if ( ! built ) {
+				continue;
+			}
+
+			if ( attachPoint !== undefined ) {
+				attachTo.splice( attachPoint, 0, built );
+				attachPoint++;
+			}
+			else {
+				attachTo.push( built );
+			}
+
+			if ( built.conf.buttons ) {
+				built.collection = $('<'+this.c.dom.collection.tag+'/>');
+
+				built.conf._collection = built.collection;
+
+				this._expandButton( built.buttons, built.conf.buttons, true, attachPoint );
+			}
+
+			// init call is made here, rather than buildButton as it needs to
+			// be selectable, and for that it needs to be in the buttons array
+			if ( conf.init ) {
+				conf.init.call( dt.button( built.node ), dt, $(built.node), conf );
+			}
+
+			buttonCounter++;
+		}
+	},
+
+	/**
+	 * Create an individual button
+	 * @param  {object} config            Resolved button configuration
+	 * @param  {boolean} inCollection `true` if a collection button
+	 * @return {jQuery} Created button node (jQuery)
+	 * @private
+	 */
+	_buildButton: function ( config, inCollection )
+	{
+		var buttonDom = this.c.dom.button;
+		var linerDom = this.c.dom.buttonLiner;
+		var collectionDom = this.c.dom.collection;
+		var dt = this.s.dt;
+		var text = function ( opt ) {
+			return typeof opt === 'function' ?
+				opt( dt, button, config ) :
+				opt;
+		};
+
+		if ( inCollection && collectionDom.button ) {
+			buttonDom = collectionDom.button;
+		}
+
+		if ( inCollection && collectionDom.buttonLiner ) {
+			linerDom = collectionDom.buttonLiner;
+		}
+
+		// Make sure that the button is available based on whatever requirements
+		// it has. For example, Flash buttons require Flash
+		if ( config.available && ! config.available( dt, config ) ) {
+			return false;
+		}
+
+		var action = function ( e, dt, button, config ) {
+			config.action.call( dt.button( button ), e, dt, button, config );
+
+			$(dt.table().node()).triggerHandler( 'buttons-action.dt', [
+				dt.button( button ), dt, button, config 
+			] );
+		};
+
+		var tag = config.tag || buttonDom.tag;
+		var clickBlurs = config.clickBlurs === undefined ? true : config.clickBlurs
+		var button = $('<'+tag+'/>')
+			.addClass( buttonDom.className )
+			.attr( 'tabindex', this.s.dt.settings()[0].iTabIndex )
+			.attr( 'aria-controls', this.s.dt.table().node().id )
+			.on( 'click.dtb', function (e) {
+				e.preventDefault();
+
+				if ( ! button.hasClass( buttonDom.disabled ) && config.action ) {
+					action( e, dt, button, config );
+				}
+				if( clickBlurs ) {
+					button.blur();
+				}
+			} )
+			.on( 'keyup.dtb', function (e) {
+				if ( e.keyCode === 13 ) {
+					if ( ! button.hasClass( buttonDom.disabled ) && config.action ) {
+						action( e, dt, button, config );
+					}
+				}
+			} );
+
+		// Make `a` tags act like a link
+		if ( tag.toLowerCase() === 'a' ) {
+			button.attr( 'href', '#' );
+		}
+
+		// Button tags should have `type=button` so they don't have any default behaviour
+		if ( tag.toLowerCase() === 'button' ) {
+			button.attr( 'type', 'button' );
+		}
+
+		if ( linerDom.tag ) {
+			var liner = $('<'+linerDom.tag+'/>')
+				.html( text( config.text ) )
+				.addClass( linerDom.className );
+
+			if ( linerDom.tag.toLowerCase() === 'a' ) {
+				liner.attr( 'href', '#' );
+			}
+
+			button.append( liner );
+		}
+		else {
+			button.html( text( config.text ) );
+		}
+
+		if ( config.enabled === false ) {
+			button.addClass( buttonDom.disabled );
+		}
+
+		if ( config.className ) {
+			button.addClass( config.className );
+		}
+
+		if ( config.titleAttr ) {
+			button.attr( 'title', text( config.titleAttr ) );
+		}
+
+		if ( config.attr ) {
+			button.attr( config.attr );
+		}
+
+		if ( ! config.namespace ) {
+			config.namespace = '.dt-button-'+(_buttonCounter++);
+		}
+
+		var buttonContainer = this.c.dom.buttonContainer;
+		var inserter;
+		if ( buttonContainer && buttonContainer.tag ) {
+			inserter = $('<'+buttonContainer.tag+'/>')
+				.addClass( buttonContainer.className )
+				.append( button );
+		}
+		else {
+			inserter = button;
+		}
+
+		this._addKey( config );
+
+		// Style integration callback for DOM manipulation
+		// Note that this is _not_ documented. It is currently
+		// for style integration only
+		if( this.c.buttonCreated ) {
+			inserter = this.c.buttonCreated( config, inserter );
+		}
+
+		return {
+			conf:         config,
+			node:         button.get(0),
+			inserter:     inserter,
+			buttons:      [],
+			inCollection: inCollection,
+			collection:   null
+		};
+	},
+
+	/**
+	 * Get the button object from a node (recursive)
+	 * @param  {node} node Button node
+	 * @param  {array} [buttons] Button array, uses base if not defined
+	 * @return {object} Button object
+	 * @private
+	 */
+	_nodeToButton: function ( node, buttons )
+	{
+		if ( ! buttons ) {
+			buttons = this.s.buttons;
+		}
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			if ( buttons[i].node === node ) {
+				return buttons[i];
+			}
+
+			if ( buttons[i].buttons.length ) {
+				var ret = this._nodeToButton( node, buttons[i].buttons );
+
+				if ( ret ) {
+					return ret;
+				}
+			}
+		}
+	},
+
+	/**
+	 * Get container array for a button from a button node (recursive)
+	 * @param  {node} node Button node
+	 * @param  {array} [buttons] Button array, uses base if not defined
+	 * @return {array} Button's host array
+	 * @private
+	 */
+	_nodeToHost: function ( node, buttons )
+	{
+		if ( ! buttons ) {
+			buttons = this.s.buttons;
+		}
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			if ( buttons[i].node === node ) {
+				return buttons;
+			}
+
+			if ( buttons[i].buttons.length ) {
+				var ret = this._nodeToHost( node, buttons[i].buttons );
+
+				if ( ret ) {
+					return ret;
+				}
+			}
+		}
+	},
+
+	/**
+	 * Handle a key press - determine if any button's key configured matches
+	 * what was typed and trigger the action if so.
+	 * @param  {string} character The character pressed
+	 * @param  {object} e Key event that triggered this call
+	 * @private
+	 */
+	_keypress: function ( character, e )
+	{
+		// Check if this button press already activated on another instance of Buttons
+		if ( e._buttonsHandled ) {
+			return;
+		}
+
+		var run = function ( conf, node ) {
+			if ( ! conf.key ) {
+				return;
+			}
+
+			if ( conf.key === character ) {
+				e._buttonsHandled = true;
+				$(node).click();
+			}
+			else if ( $.isPlainObject( conf.key ) ) {
+				if ( conf.key.key !== character ) {
+					return;
+				}
+
+				if ( conf.key.shiftKey && ! e.shiftKey ) {
+					return;
+				}
+
+				if ( conf.key.altKey && ! e.altKey ) {
+					return;
+				}
+
+				if ( conf.key.ctrlKey && ! e.ctrlKey ) {
+					return;
+				}
+
+				if ( conf.key.metaKey && ! e.metaKey ) {
+					return;
+				}
+
+				// Made it this far - it is good
+				e._buttonsHandled = true;
+				$(node).click();
+			}
+		};
+
+		var recurse = function ( a ) {
+			for ( var i=0, ien=a.length ; i<ien ; i++ ) {
+				run( a[i].conf, a[i].node );
+
+				if ( a[i].buttons.length ) {
+					recurse( a[i].buttons );
+				}
+			}
+		};
+
+		recurse( this.s.buttons );
+	},
+
+	/**
+	 * Remove a key from the key listener for this instance (to be used when a
+	 * button is removed)
+	 * @param  {object} conf Button configuration
+	 * @private
+	 */
+	_removeKey: function ( conf )
+	{
+		if ( conf.key ) {
+			var character = $.isPlainObject( conf.key ) ?
+				conf.key.key :
+				conf.key;
+
+			// Remove only one character, as multiple buttons could have the
+			// same listening key
+			var a = this.s.listenKeys.split('');
+			var idx = $.inArray( character, a );
+			a.splice( idx, 1 );
+			this.s.listenKeys = a.join('');
+		}
+	},
+
+	/**
+	 * Resolve a button configuration
+	 * @param  {string|function|object} conf Button config to resolve
+	 * @return {object} Button configuration
+	 * @private
+	 */
+	_resolveExtends: function ( conf )
+	{
+		var dt = this.s.dt;
+		var i, ien;
+		var toConfObject = function ( base ) {
+			var loop = 0;
+
+			// Loop until we have resolved to a button configuration, or an
+			// array of button configurations (which will be iterated
+			// separately)
+			while ( ! $.isPlainObject(base) && ! $.isArray(base) ) {
+				if ( base === undefined ) {
+					return;
+				}
+
+				if ( typeof base === 'function' ) {
+					base = base( dt, conf );
+
+					if ( ! base ) {
+						return false;
+					}
+				}
+				else if ( typeof base === 'string' ) {
+					if ( ! _dtButtons[ base ] ) {
+						throw 'Unknown button type: '+base;
+					}
+
+					base = _dtButtons[ base ];
+				}
+
+				loop++;
+				if ( loop > 30 ) {
+					// Protect against misconfiguration killing the browser
+					throw 'Buttons: Too many iterations';
+				}
+			}
+
+			return $.isArray( base ) ?
+				base :
+				$.extend( {}, base );
+		};
+
+		conf = toConfObject( conf );
+
+		while ( conf && conf.extend ) {
+			// Use `toConfObject` in case the button definition being extended
+			// is itself a string or a function
+			if ( ! _dtButtons[ conf.extend ] ) {
+				throw 'Cannot extend unknown button type: '+conf.extend;
+			}
+
+			var objArray = toConfObject( _dtButtons[ conf.extend ] );
+			if ( $.isArray( objArray ) ) {
+				return objArray;
+			}
+			else if ( ! objArray ) {
+				// This is a little brutal as it might be possible to have a
+				// valid button without the extend, but if there is no extend
+				// then the host button would be acting in an undefined state
+				return false;
+			}
+
+			// Stash the current class name
+			var originalClassName = objArray.className;
+
+			conf = $.extend( {}, objArray, conf );
+
+			// The extend will have overwritten the original class name if the
+			// `conf` object also assigned a class, but we want to concatenate
+			// them so they are list that is combined from all extended buttons
+			if ( originalClassName && conf.className !== originalClassName ) {
+				conf.className = originalClassName+' '+conf.className;
+			}
+
+			// Buttons to be added to a collection  -gives the ability to define
+			// if buttons should be added to the start or end of a collection
+			var postfixButtons = conf.postfixButtons;
+			if ( postfixButtons ) {
+				if ( ! conf.buttons ) {
+					conf.buttons = [];
+				}
+
+				for ( i=0, ien=postfixButtons.length ; i<ien ; i++ ) {
+					conf.buttons.push( postfixButtons[i] );
+				}
+
+				conf.postfixButtons = null;
+			}
+
+			var prefixButtons = conf.prefixButtons;
+			if ( prefixButtons ) {
+				if ( ! conf.buttons ) {
+					conf.buttons = [];
+				}
+
+				for ( i=0, ien=prefixButtons.length ; i<ien ; i++ ) {
+					conf.buttons.splice( i, 0, prefixButtons[i] );
+				}
+
+				conf.prefixButtons = null;
+			}
+
+			// Although we want the `conf` object to overwrite almost all of
+			// the properties of the object being extended, the `extend`
+			// property should come from the object being extended
+			conf.extend = objArray.extend;
+		}
+
+		return conf;
+	},
+
+	/**
+	 * Display (and replace if there is an existing one) a popover attached to a button
+	 * @param {string|node} content Content to show
+	 * @param {DataTable.Api} hostButton DT API instance of the button
+	 * @param {object} inOpts Options (see object below for all options)
+	 */
+	_popover: function ( content, hostButton, inOpts ) {
+		var dt = hostButton;
+		var buttonsSettings = this.c;
+		var options = $.extend( {
+			align: 'button-left', // button-right, dt-container
+			autoClose: false,
+			background: true,
+			backgroundClassName: 'dt-button-background',
+			contentClassName: buttonsSettings.dom.collection.className,
+			collectionLayout: '',
+			collectionTitle: '',
+			dropup: false,
+			fade: 400,
+			rightAlignClassName: 'dt-button-right',
+			tag: buttonsSettings.dom.collection.tag
+		}, inOpts );
+		var hostNode = hostButton.node();
+
+		var close = function () {
+			$('.dt-button-collection').stop().fadeOut( options.fade, function () {
+				$(this).detach();
+			} );
+
+			$(dt.buttons( '[aria-haspopup="true"][aria-expanded="true"]' ).nodes())
+				.attr('aria-expanded', 'false');
+
+			$('div.dt-button-background').off( 'click.dtb-collection' );
+			Buttons.background( false, options.backgroundClassName, options.fade, hostNode );
+
+			$('body').off( '.dtb-collection' );
+			dt.off( 'buttons-action.b-internal' );
+		};
+
+		if (content === false) {
+			close();
+		}
+
+		var existingExpanded = $(dt.buttons( '[aria-haspopup="true"][aria-expanded="true"]' ).nodes());
+		if ( existingExpanded.length ) {
+			hostNode = existingExpanded.eq(0);
+
+			close();
+		}
+
+		var display = $('<div/>')
+			.addClass('dt-button-collection')
+			.addClass(options.collectionLayout)
+			.css('display', 'none');
+
+		content = $(content)
+			.addClass(options.contentClassName)
+			.attr('role', 'menu')
+			.appendTo(display);
+
+		hostNode.attr( 'aria-expanded', 'true' );
+
+		if ( hostNode.parents('body')[0] !== document.body ) {
+			hostNode = document.body.lastChild;
+		}
+
+		if ( options.collectionTitle ) {
+			display.prepend('<div class="dt-button-collection-title">'+options.collectionTitle+'</div>');
+		}
+
+		display
+			.insertAfter( hostNode )
+			.fadeIn( options.fade );
+
+		var tableContainer = $( hostButton.table().container() );
+		var position = display.css( 'position' );
+
+		if ( options.align === 'dt-container' ) {
+			hostNode = hostNode.parent();
+			display.css('width', tableContainer.width());
+		}
+
+		if ( position === 'absolute' ) {
+			var hostPosition = hostNode.position();
+
+			display.css( {
+				top: hostPosition.top + hostNode.outerHeight(),
+				left: hostPosition.left
+			} );
+
+			// calculate overflow when positioned beneath
+			var collectionHeight = display.outerHeight();
+			var collectionWidth = display.outerWidth();
+			var tableBottom = tableContainer.offset().top + tableContainer.height();
+			var listBottom = hostPosition.top + hostNode.outerHeight() + collectionHeight;
+			var bottomOverflow = listBottom - tableBottom;
+
+			// calculate overflow when positioned above
+			var listTop = hostPosition.top - collectionHeight;
+			var tableTop = tableContainer.offset().top;
+			var topOverflow = tableTop - listTop;
+
+			// if bottom overflow is larger, move to the top because it fits better, or if dropup is requested
+			var moveTop = hostPosition.top - collectionHeight - 5;
+			if ( (bottomOverflow > topOverflow || options.dropup) && -moveTop < tableTop ) {
+				display.css( 'top', moveTop);
+			}
+
+			// Right alignment is enabled on a class, e.g. bootstrap:
+			// $.fn.dataTable.Buttons.defaults.dom.collection.className += " dropdown-menu-right"; 
+			if ( display.hasClass( options.rightAlignClassName ) || options.align === 'button-right' ) {
+				display.css( 'left', hostPosition.left + hostNode.outerWidth() - collectionWidth );
+			}
+
+			// Right alignment in table container
+			var listRight = hostPosition.left + collectionWidth;
+			var tableRight = tableContainer.offset().left + tableContainer.width();
+			if ( listRight > tableRight ) {
+				display.css( 'left', hostPosition.left - ( listRight - tableRight ) );
+			}
+
+			// Right alignment to window
+			var listOffsetRight = hostNode.offset().left + collectionWidth;
+			if ( listOffsetRight > $(window).width() ) {
+				display.css( 'left', hostPosition.left - (listOffsetRight-$(window).width()) );
+			}
+		}
+		else {
+			// Fix position - centre on screen
+			var top = display.height() / 2;
+			if ( top > $(window).height() / 2 ) {
+				top = $(window).height() / 2;
+			}
+
+			display.css( 'marginTop', top*-1 );
+		}
+
+		if ( options.background ) {
+			Buttons.background( true, options.backgroundClassName, options.fade, hostNode );
+		}
+
+		// This is bonkers, but if we don't have a click listener on the
+		// background element, iOS Safari will ignore the body click
+		// listener below. An empty function here is all that is
+		// required to make it work...
+		$('div.dt-button-background').on( 'click.dtb-collection', function () {} );
+
+		$('body')
+			.on( 'click.dtb-collection', function (e) {
+				// andSelf is deprecated in jQ1.8, but we want 1.7 compat
+				var back = $.fn.addBack ? 'addBack' : 'andSelf';
+
+				if ( ! $(e.target).parents()[back]().filter( content ).length ) {
+					close();
+				}
+			} )
+			.on( 'keyup.dtb-collection', function (e) {
+				if ( e.keyCode === 27 ) {
+					close();
+				}
+			} );
+
+		if ( options.autoClose ) {
+			setTimeout( function () {
+				dt.on( 'buttons-action.b-internal', function (e, btn, dt, node) {
+					if ( node[0] === hostNode[0] ) {
+						return;
+					}
+					close();
+				} );
+			}, 0);
+		}
+	}
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Statics
+ */
+
+/**
+ * Show / hide a background layer behind a collection
+ * @param  {boolean} Flag to indicate if the background should be shown or
+ *   hidden 
+ * @param  {string} Class to assign to the background
+ * @static
+ */
+Buttons.background = function ( show, className, fade, insertPoint ) {
+	if ( fade === undefined ) {
+		fade = 400;
+	}
+	if ( ! insertPoint ) {
+		insertPoint = document.body;
+	}
+
+	if ( show ) {
+		$('<div/>')
+			.addClass( className )
+			.css( 'display', 'none' )
+			.insertAfter( insertPoint )
+			.stop()
+			.fadeIn( fade );
+	}
+	else {
+		$('div.'+className)
+			.stop()
+			.fadeOut( fade, function () {
+				$(this)
+					.removeClass( className )
+					.remove();
+			} );
+	}
+};
+
+/**
+ * Instance selector - select Buttons instances based on an instance selector
+ * value from the buttons assigned to a DataTable. This is only useful if
+ * multiple instances are attached to a DataTable.
+ * @param  {string|int|array} Instance selector - see `instance-selector`
+ *   documentation on the DataTables site
+ * @param  {array} Button instance array that was attached to the DataTables
+ *   settings object
+ * @return {array} Buttons instances
+ * @static
+ */
+Buttons.instanceSelector = function ( group, buttons )
+{
+	if ( group === undefined || group === null ) {
+		return $.map( buttons, function ( v ) {
+			return v.inst;
+		} );
+	}
+
+	var ret = [];
+	var names = $.map( buttons, function ( v ) {
+		return v.name;
+	} );
+
+	// Flatten the group selector into an array of single options
+	var process = function ( input ) {
+		if ( $.isArray( input ) ) {
+			for ( var i=0, ien=input.length ; i<ien ; i++ ) {
+				process( input[i] );
+			}
+			return;
+		}
+
+		if ( typeof input === 'string' ) {
+			if ( input.indexOf( ',' ) !== -1 ) {
+				// String selector, list of names
+				process( input.split(',') );
+			}
+			else {
+				// String selector individual name
+				var idx = $.inArray( $.trim(input), names );
+
+				if ( idx !== -1 ) {
+					ret.push( buttons[ idx ].inst );
+				}
+			}
+		}
+		else if ( typeof input === 'number' ) {
+			// Index selector
+			ret.push( buttons[ input ].inst );
+		}
+	};
+	
+	process( group );
+
+	return ret;
+};
+
+/**
+ * Button selector - select one or more buttons from a selector input so some
+ * operation can be performed on them.
+ * @param  {array} Button instances array that the selector should operate on
+ * @param  {string|int|node|jQuery|array} Button selector - see
+ *   `button-selector` documentation on the DataTables site
+ * @return {array} Array of objects containing `inst` and `idx` properties of
+ *   the selected buttons so you know which instance each button belongs to.
+ * @static
+ */
+Buttons.buttonSelector = function ( insts, selector )
+{
+	var ret = [];
+	var nodeBuilder = function ( a, buttons, baseIdx ) {
+		var button;
+		var idx;
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			button = buttons[i];
+
+			if ( button ) {
+				idx = baseIdx !== undefined ?
+					baseIdx+i :
+					i+'';
+
+				a.push( {
+					node: button.node,
+					name: button.conf.name,
+					idx:  idx
+				} );
+
+				if ( button.buttons ) {
+					nodeBuilder( a, button.buttons, idx+'-' );
+				}
+			}
+		}
+	};
+
+	var run = function ( selector, inst ) {
+		var i, ien;
+		var buttons = [];
+		nodeBuilder( buttons, inst.s.buttons );
+
+		var nodes = $.map( buttons, function (v) {
+			return v.node;
+		} );
+
+		if ( $.isArray( selector ) || selector instanceof $ ) {
+			for ( i=0, ien=selector.length ; i<ien ; i++ ) {
+				run( selector[i], inst );
+			}
+			return;
+		}
+
+		if ( selector === null || selector === undefined || selector === '*' ) {
+			// Select all
+			for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+				ret.push( {
+					inst: inst,
+					node: buttons[i].node
+				} );
+			}
+		}
+		else if ( typeof selector === 'number' ) {
+			// Main button index selector
+			ret.push( {
+				inst: inst,
+				node: inst.s.buttons[ selector ].node
+			} );
+		}
+		else if ( typeof selector === 'string' ) {
+			if ( selector.indexOf( ',' ) !== -1 ) {
+				// Split
+				var a = selector.split(',');
+
+				for ( i=0, ien=a.length ; i<ien ; i++ ) {
+					run( $.trim(a[i]), inst );
+				}
+			}
+			else if ( selector.match( /^\d+(\-\d+)*$/ ) ) {
+				// Sub-button index selector
+				var indexes = $.map( buttons, function (v) {
+					return v.idx;
+				} );
+
+				ret.push( {
+					inst: inst,
+					node: buttons[ $.inArray( selector, indexes ) ].node
+				} );
+			}
+			else if ( selector.indexOf( ':name' ) !== -1 ) {
+				// Button name selector
+				var name = selector.replace( ':name', '' );
+
+				for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+					if ( buttons[i].name === name ) {
+						ret.push( {
+							inst: inst,
+							node: buttons[i].node
+						} );
+					}
+				}
+			}
+			else {
+				// jQuery selector on the nodes
+				$( nodes ).filter( selector ).each( function () {
+					ret.push( {
+						inst: inst,
+						node: this
+					} );
+				} );
+			}
+		}
+		else if ( typeof selector === 'object' && selector.nodeName ) {
+			// Node selector
+			var idx = $.inArray( selector, nodes );
+
+			if ( idx !== -1 ) {
+				ret.push( {
+					inst: inst,
+					node: nodes[ idx ]
+				} );
+			}
+		}
+	};
+
+
+	for ( var i=0, ien=insts.length ; i<ien ; i++ ) {
+		var inst = insts[i];
+
+		run( selector, inst );
+	}
+
+	return ret;
+};
+
+
+/**
+ * Buttons defaults. For full documentation, please refer to the docs/option
+ * directory or the DataTables site.
+ * @type {Object}
+ * @static
+ */
+Buttons.defaults = {
+	buttons: [ 'copy', 'excel', 'csv', 'pdf', 'print' ],
+	name: 'main',
+	tabIndex: 0,
+	dom: {
+		container: {
+			tag: 'div',
+			className: 'dt-buttons'
+		},
+		collection: {
+			tag: 'div',
+			className: ''
+		},
+		button: {
+			// Flash buttons will not work with `<button>` in IE - it has to be `<a>`
+			tag: 'ActiveXObject' in window ?
+				'a' :
+				'button',
+			className: 'dt-button',
+			active: 'active',
+			disabled: 'disabled'
+		},
+		buttonLiner: {
+			tag: 'span',
+			className: ''
+		}
+	}
+};
+
+/**
+ * Version information
+ * @type {string}
+ * @static
+ */
+Buttons.version = '1.6.1';
+
+
+$.extend( _dtButtons, {
+	collection: {
+		text: function ( dt ) {
+			return dt.i18n( 'buttons.collection', 'Collection' );
+		},
+		className: 'buttons-collection',
+		init: function ( dt, button, config ) {
+			button.attr( 'aria-expanded', false );
+		},
+		action: function ( e, dt, button, config ) {
+			e.stopPropagation();
+
+			if ( config._collection.parents('body').length ) {
+				this.popover(false, config);
+			}
+			else {
+				this.popover(config._collection, config);
+			}
+		},
+		attr: {
+			'aria-haspopup': true
+		}
+		// Also the popover options, defined in Buttons.popover
+	},
+	copy: function ( dt, conf ) {
+		if ( _dtButtons.copyHtml5 ) {
+			return 'copyHtml5';
+		}
+		if ( _dtButtons.copyFlash && _dtButtons.copyFlash.available( dt, conf ) ) {
+			return 'copyFlash';
+		}
+	},
+	csv: function ( dt, conf ) {
+		// Common option that will use the HTML5 or Flash export buttons
+		if ( _dtButtons.csvHtml5 && _dtButtons.csvHtml5.available( dt, conf ) ) {
+			return 'csvHtml5';
+		}
+		if ( _dtButtons.csvFlash && _dtButtons.csvFlash.available( dt, conf ) ) {
+			return 'csvFlash';
+		}
+	},
+	excel: function ( dt, conf ) {
+		// Common option that will use the HTML5 or Flash export buttons
+		if ( _dtButtons.excelHtml5 && _dtButtons.excelHtml5.available( dt, conf ) ) {
+			return 'excelHtml5';
+		}
+		if ( _dtButtons.excelFlash && _dtButtons.excelFlash.available( dt, conf ) ) {
+			return 'excelFlash';
+		}
+	},
+	pdf: function ( dt, conf ) {
+		// Common option that will use the HTML5 or Flash export buttons
+		if ( _dtButtons.pdfHtml5 && _dtButtons.pdfHtml5.available( dt, conf ) ) {
+			return 'pdfHtml5';
+		}
+		if ( _dtButtons.pdfFlash && _dtButtons.pdfFlash.available( dt, conf ) ) {
+			return 'pdfFlash';
+		}
+	},
+	pageLength: function ( dt ) {
+		var lengthMenu = dt.settings()[0].aLengthMenu;
+		var vals = $.isArray( lengthMenu[0] ) ? lengthMenu[0] : lengthMenu;
+		var lang = $.isArray( lengthMenu[0] ) ? lengthMenu[1] : lengthMenu;
+		var text = function ( dt ) {
+			return dt.i18n( 'buttons.pageLength', {
+				"-1": 'Show all rows',
+				_:    'Show %d rows'
+			}, dt.page.len() );
+		};
+
+		return {
+			extend: 'collection',
+			text: text,
+			className: 'buttons-page-length',
+			autoClose: true,
+			buttons: $.map( vals, function ( val, i ) {
+				return {
+					text: lang[i],
+					className: 'button-page-length',
+					action: function ( e, dt ) {
+						dt.page.len( val ).draw();
+					},
+					init: function ( dt, node, conf ) {
+						var that = this;
+						var fn = function () {
+							that.active( dt.page.len() === val );
+						};
+
+						dt.on( 'length.dt'+conf.namespace, fn );
+						fn();
+					},
+					destroy: function ( dt, node, conf ) {
+						dt.off( 'length.dt'+conf.namespace );
+					}
+				};
+			} ),
+			init: function ( dt, node, conf ) {
+				var that = this;
+				dt.on( 'length.dt'+conf.namespace, function () {
+					that.text( conf.text );
+				} );
+			},
+			destroy: function ( dt, node, conf ) {
+				dt.off( 'length.dt'+conf.namespace );
+			}
+		};
+	}
+} );
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables API
+ *
+ * For complete documentation, please refer to the docs/api directory or the
+ * DataTables site
+ */
+
+// Buttons group and individual button selector
+DataTable.Api.register( 'buttons()', function ( group, selector ) {
+	// Argument shifting
+	if ( selector === undefined ) {
+		selector = group;
+		group = undefined;
+	}
+
+	this.selector.buttonGroup = group;
+
+	var res = this.iterator( true, 'table', function ( ctx ) {
+		if ( ctx._buttons ) {
+			return Buttons.buttonSelector(
+				Buttons.instanceSelector( group, ctx._buttons ),
+				selector
+			);
+		}
+	}, true );
+
+	res._groupSelector = group;
+	return res;
+} );
+
+// Individual button selector
+DataTable.Api.register( 'button()', function ( group, selector ) {
+	// just run buttons() and truncate
+	var buttons = this.buttons( group, selector );
+
+	if ( buttons.length > 1 ) {
+		buttons.splice( 1, buttons.length );
+	}
+
+	return buttons;
+} );
+
+// Active buttons
+DataTable.Api.registerPlural( 'buttons().active()', 'button().active()', function ( flag ) {
+	if ( flag === undefined ) {
+		return this.map( function ( set ) {
+			return set.inst.active( set.node );
+		} );
+	}
+
+	return this.each( function ( set ) {
+		set.inst.active( set.node, flag );
+	} );
+} );
+
+// Get / set button action
+DataTable.Api.registerPlural( 'buttons().action()', 'button().action()', function ( action ) {
+	if ( action === undefined ) {
+		return this.map( function ( set ) {
+			return set.inst.action( set.node );
+		} );
+	}
+
+	return this.each( function ( set ) {
+		set.inst.action( set.node, action );
+	} );
+} );
+
+// Enable / disable buttons
+DataTable.Api.register( ['buttons().enable()', 'button().enable()'], function ( flag ) {
+	return this.each( function ( set ) {
+		set.inst.enable( set.node, flag );
+	} );
+} );
+
+// Disable buttons
+DataTable.Api.register( ['buttons().disable()', 'button().disable()'], function () {
+	return this.each( function ( set ) {
+		set.inst.disable( set.node );
+	} );
+} );
+
+// Get button nodes
+DataTable.Api.registerPlural( 'buttons().nodes()', 'button().node()', function () {
+	var jq = $();
+
+	// jQuery will automatically reduce duplicates to a single entry
+	$( this.each( function ( set ) {
+		jq = jq.add( set.inst.node( set.node ) );
+	} ) );
+
+	return jq;
+} );
+
+// Get / set button processing state
+DataTable.Api.registerPlural( 'buttons().processing()', 'button().processing()', function ( flag ) {
+	if ( flag === undefined ) {
+		return this.map( function ( set ) {
+			return set.inst.processing( set.node );
+		} );
+	}
+
+	return this.each( function ( set ) {
+		set.inst.processing( set.node, flag );
+	} );
+} );
+
+// Get / set button text (i.e. the button labels)
+DataTable.Api.registerPlural( 'buttons().text()', 'button().text()', function ( label ) {
+	if ( label === undefined ) {
+		return this.map( function ( set ) {
+			return set.inst.text( set.node );
+		} );
+	}
+
+	return this.each( function ( set ) {
+		set.inst.text( set.node, label );
+	} );
+} );
+
+// Trigger a button's action
+DataTable.Api.registerPlural( 'buttons().trigger()', 'button().trigger()', function () {
+	return this.each( function ( set ) {
+		set.inst.node( set.node ).trigger( 'click' );
+	} );
+} );
+
+// Button resolver to the popover
+DataTable.Api.register( 'button().popover()', function (content, options) {
+	return this.map( function ( set ) {
+		return set.inst._popover( content, this.button(this[0].node), options );
+	} );
+} );
+
+// Get the container elements
+DataTable.Api.register( 'buttons().containers()', function () {
+	var jq = $();
+	var groupSelector = this._groupSelector;
+
+	// We need to use the group selector directly, since if there are no buttons
+	// the result set will be empty
+	this.iterator( true, 'table', function ( ctx ) {
+		if ( ctx._buttons ) {
+			var insts = Buttons.instanceSelector( groupSelector, ctx._buttons );
+
+			for ( var i=0, ien=insts.length ; i<ien ; i++ ) {
+				jq = jq.add( insts[i].container() );
+			}
+		}
+	} );
+
+	return jq;
+} );
+
+DataTable.Api.register( 'buttons().container()', function () {
+	// API level of nesting is `buttons()` so we can zip into the containers method
+	return this.containers().eq(0);
+} );
+
+// Add a new button
+DataTable.Api.register( 'button().add()', function ( idx, conf ) {
+	var ctx = this.context;
+
+	// Don't use `this` as it could be empty - select the instances directly
+	if ( ctx.length ) {
+		var inst = Buttons.instanceSelector( this._groupSelector, ctx[0]._buttons );
+
+		if ( inst.length ) {
+			inst[0].add( conf, idx );
+		}
+	}
+
+	return this.button( this._groupSelector, idx );
+} );
+
+// Destroy the button sets selected
+DataTable.Api.register( 'buttons().destroy()', function () {
+	this.pluck( 'inst' ).unique().each( function ( inst ) {
+		inst.destroy();
+	} );
+
+	return this;
+} );
+
+// Remove a button
+DataTable.Api.registerPlural( 'buttons().remove()', 'buttons().remove()', function () {
+	this.each( function ( set ) {
+		set.inst.remove( set.node );
+	} );
+
+	return this;
+} );
+
+// Information box that can be used by buttons
+var _infoTimer;
+DataTable.Api.register( 'buttons.info()', function ( title, message, time ) {
+	var that = this;
+
+	if ( title === false ) {
+		this.off('destroy.btn-info');
+		$('#datatables_buttons_info').fadeOut( function () {
+			$(this).remove();
+		} );
+		clearTimeout( _infoTimer );
+		_infoTimer = null;
+
+		return this;
+	}
+
+	if ( _infoTimer ) {
+		clearTimeout( _infoTimer );
+	}
+
+	if ( $('#datatables_buttons_info').length ) {
+		$('#datatables_buttons_info').remove();
+	}
+
+	title = title ? '<h2>'+title+'</h2>' : '';
+
+	$('<div id="datatables_buttons_info" class="dt-button-info"/>')
+		.html( title )
+		.append( $('<div/>')[ typeof message === 'string' ? 'html' : 'append' ]( message ) )
+		.css( 'display', 'none' )
+		.appendTo( 'body' )
+		.fadeIn();
+
+	if ( time !== undefined && time !== 0 ) {
+		_infoTimer = setTimeout( function () {
+			that.buttons.info( false );
+		}, time );
+	}
+
+	this.on('destroy.btn-info', function () {
+		that.buttons.info(false);
+	});
+
+	return this;
+} );
+
+// Get data from the table for export - this is common to a number of plug-in
+// buttons so it is included in the Buttons core library
+DataTable.Api.register( 'buttons.exportData()', function ( options ) {
+	if ( this.context.length ) {
+		return _exportData( new DataTable.Api( this.context[0] ), options );
+	}
+} );
+
+// Get information about the export that is common to many of the export data
+// types (DRY)
+DataTable.Api.register( 'buttons.exportInfo()', function ( conf ) {
+	if ( ! conf ) {
+		conf = {};
+	}
+
+	return {
+		filename: _filename( conf ),
+		title: _title( conf ),
+		messageTop: _message(this, conf.message || conf.messageTop, 'top'),
+		messageBottom: _message(this, conf.messageBottom, 'bottom')
+	};
+} );
+
+
+
+/**
+ * Get the file name for an exported file.
+ *
+ * @param {object}	config Button configuration
+ * @param {boolean} incExtension Include the file name extension
+ */
+var _filename = function ( config )
+{
+	// Backwards compatibility
+	var filename = config.filename === '*' && config.title !== '*' && config.title !== undefined && config.title !== null && config.title !== '' ?
+		config.title :
+		config.filename;
+
+	if ( typeof filename === 'function' ) {
+		filename = filename();
+	}
+
+	if ( filename === undefined || filename === null ) {
+		return null;
+	}
+
+	if ( filename.indexOf( '*' ) !== -1 ) {
+		filename = $.trim( filename.replace( '*', $('head > title').text() ) );
+	}
+
+	// Strip characters which the OS will object to
+	filename = filename.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, "");
+
+	var extension = _stringOrFunction( config.extension );
+	if ( ! extension ) {
+		extension = '';
+	}
+
+	return filename + extension;
+};
+
+/**
+ * Simply utility method to allow parameters to be given as a function
+ *
+ * @param {undefined|string|function} option Option
+ * @return {null|string} Resolved value
+ */
+var _stringOrFunction = function ( option )
+{
+	if ( option === null || option === undefined ) {
+		return null;
+	}
+	else if ( typeof option === 'function' ) {
+		return option();
+	}
+	return option;
+};
+
+/**
+ * Get the title for an exported file.
+ *
+ * @param {object} config	Button configuration
+ */
+var _title = function ( config )
+{
+	var title = _stringOrFunction( config.title );
+
+	return title === null ?
+		null : title.indexOf( '*' ) !== -1 ?
+			title.replace( '*', $('head > title').text() || 'Exported data' ) :
+			title;
+};
+
+var _message = function ( dt, option, position )
+{
+	var message = _stringOrFunction( option );
+	if ( message === null ) {
+		return null;
+	}
+
+	var caption = $('caption', dt.table().container()).eq(0);
+	if ( message === '*' ) {
+		var side = caption.css( 'caption-side' );
+		if ( side !== position ) {
+			return null;
+		}
+
+		return caption.length ?
+			caption.text() :
+			'';
+	}
+
+	return message;
+};
+
+
+
+
+
+
+
+var _exportTextarea = $('<textarea/>')[0];
+var _exportData = function ( dt, inOpts )
+{
+	var config = $.extend( true, {}, {
+		rows:           null,
+		columns:        '',
+		modifier:       {
+			search: 'applied',
+			order:  'applied'
+		},
+		orthogonal:     'display',
+		stripHtml:      true,
+		stripNewlines:  true,
+		decodeEntities: true,
+		trim:           true,
+		format:         {
+			header: function ( d ) {
+				return strip( d );
+			},
+			footer: function ( d ) {
+				return strip( d );
+			},
+			body: function ( d ) {
+				return strip( d );
+			}
+		},
+		customizeData: null
+	}, inOpts );
+
+	var strip = function ( str ) {
+		if ( typeof str !== 'string' ) {
+			return str;
+		}
+
+		// Always remove script tags
+		str = str.replace( /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '' );
+
+		// Always remove comments
+		str = str.replace( /<!\-\-.*?\-\->/g, '' );
+
+		if ( config.stripHtml ) {
+			str = str.replace( /<[^>]*>/g, '' );
+		}
+
+		if ( config.trim ) {
+			str = str.replace( /^\s+|\s+$/g, '' );
+		}
+
+		if ( config.stripNewlines ) {
+			str = str.replace( /\n/g, ' ' );
+		}
+
+		if ( config.decodeEntities ) {
+			_exportTextarea.innerHTML = str;
+			str = _exportTextarea.value;
+		}
+
+		return str;
+	};
+
+
+	var header = dt.columns( config.columns ).indexes().map( function (idx) {
+		var el = dt.column( idx ).header();
+		return config.format.header( el.innerHTML, idx, el );
+	} ).toArray();
+
+	var footer = dt.table().footer() ?
+		dt.columns( config.columns ).indexes().map( function (idx) {
+			var el = dt.column( idx ).footer();
+			return config.format.footer( el ? el.innerHTML : '', idx, el );
+		} ).toArray() :
+		null;
+	
+	// If Select is available on this table, and any rows are selected, limit the export
+	// to the selected rows. If no rows are selected, all rows will be exported. Specify
+	// a `selected` modifier to control directly.
+	var modifier = $.extend( {}, config.modifier );
+	if ( dt.select && typeof dt.select.info === 'function' && modifier.selected === undefined ) {
+		if ( dt.rows( config.rows, $.extend( { selected: true }, modifier ) ).any() ) {
+			$.extend( modifier, { selected: true } )
+		}
+	}
+
+	var rowIndexes = dt.rows( config.rows, modifier ).indexes().toArray();
+	var selectedCells = dt.cells( rowIndexes, config.columns );
+	var cells = selectedCells
+		.render( config.orthogonal )
+		.toArray();
+	var cellNodes = selectedCells
+		.nodes()
+		.toArray();
+
+	var columns = header.length;
+	var rows = columns > 0 ? cells.length / columns : 0;
+	var body = [];
+	var cellCounter = 0;
+
+	for ( var i=0, ien=rows ; i<ien ; i++ ) {
+		var row = [ columns ];
+
+		for ( var j=0 ; j<columns ; j++ ) {
+			row[j] = config.format.body( cells[ cellCounter ], i, j, cellNodes[ cellCounter ] );
+			cellCounter++;
+		}
+
+		body[i] = row;
+	}
+
+	var data = {
+		header: header,
+		footer: footer,
+		body:   body
+	};
+
+	if ( config.customizeData ) {
+		config.customizeData( data );
+	}
+
+	return data;
+};
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables interface
+ */
+
+// Attach to DataTables objects for global access
+$.fn.dataTable.Buttons = Buttons;
+$.fn.DataTable.Buttons = Buttons;
+
+
+
+// DataTables creation - check if the buttons have been defined for this table,
+// they will have been if the `B` option was used in `dom`, otherwise we should
+// create the buttons instance here so they can be inserted into the document
+// using the API. Listen for `init` for compatibility with pre 1.10.10, but to
+// be removed in future.
+$(document).on( 'init.dt plugin-init.dt', function (e, settings) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var opts = settings.oInit.buttons || DataTable.defaults.buttons;
+
+	if ( opts && ! settings._buttons ) {
+		new Buttons( settings, opts ).container();
+	}
+} );
+
+function _init ( settings ) {
+	var api = new DataTable.Api( settings );
+	var opts = api.init().buttons || DataTable.defaults.buttons;
+
+	return new Buttons( api, opts ).container();
+}
+
+// DataTables `dom` feature option
+DataTable.ext.feature.push( {
+	fnInit: _init,
+	cFeature: "B"
+} );
+
+// DataTables 2 layout feature
+if ( DataTable.ext.features ) {
+	DataTable.ext.features.register( 'buttons', _init );
+}
+
+
+return Buttons;
+}));
Index: public/vendors/dataTable/Buttons-1.6.1/js/dataTables.buttons.min.js
===================================================================
--- public/vendors/dataTable/Buttons-1.6.1/js/dataTables.buttons.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Buttons-1.6.1/js/dataTables.buttons.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,42 @@
+/*!
+ Buttons for DataTables 1.6.1
+ ©2016-2019 SpryMedia Ltd - datatables.net/license
+*/
+(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(u){return d(u,window,document)}):"object"===typeof exports?module.exports=function(u,t){u||(u=window);t&&t.fn.dataTable||(t=require("datatables.net")(u,t).$);return d(t,u,u.document)}:d(jQuery,window,document)})(function(d,u,t,p){function y(a){a=new m.Api(a);var b=a.init().buttons||m.defaults.buttons;return(new n(a,b)).container()}var m=d.fn.dataTable,B=0,C=0,q=m.ext.buttons,n=function(a,b){if(!(this instanceof
+n))return function(b){return(new n(b,a)).container()};"undefined"===typeof b&&(b={});!0===b&&(b={});d.isArray(b)&&(b={buttons:b});this.c=d.extend(!0,{},n.defaults,b);b.buttons&&(this.c.buttons=b.buttons);this.s={dt:new m.Api(a),buttons:[],listenKeys:"",namespace:"dtb"+B++};this.dom={container:d("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)};this._constructor()};d.extend(n.prototype,{action:function(a,b){a=this._nodeToButton(a);if(b===p)return a.conf.action;a.conf.action=
+b;return this},active:function(a,b){var c=this._nodeToButton(a);a=this.c.dom.button.active;c=d(c.node);if(b===p)return c.hasClass(a);c.toggleClass(a,b===p?!0:b);return this},add:function(a,b){var c=this.s.buttons;if("string"===typeof b){b=b.split("-");var e=this.s;c=0;for(var d=b.length-1;c<d;c++)e=e.buttons[1*b[c]];c=e.buttons;b=1*b[b.length-1]}this._expandButton(c,a,e!==p,b);this._draw();return this},container:function(){return this.dom.container},disable:function(a){a=this._nodeToButton(a);d(a.node).addClass(this.c.dom.button.disabled);
+return this},destroy:function(){d("body").off("keyup."+this.s.namespace);var a=this.s.buttons.slice(),b;var c=0;for(b=a.length;c<b;c++)this.remove(a[c].node);this.dom.container.remove();a=this.s.dt.settings()[0];c=0;for(b=a.length;c<b;c++)if(a.inst===this){a.splice(c,1);break}return this},enable:function(a,b){if(!1===b)return this.disable(a);a=this._nodeToButton(a);d(a.node).removeClass(this.c.dom.button.disabled);return this},name:function(){return this.c.name},node:function(a){if(!a)return this.dom.container;
+a=this._nodeToButton(a);return d(a.node)},processing:function(a,b){var c=this.s.dt,e=this._nodeToButton(a);if(b===p)return d(e.node).hasClass("processing");d(e.node).toggleClass("processing",b);d(c.table().node()).triggerHandler("buttons-processing.dt",[b,c.button(a),c,d(a),e.conf]);return this},remove:function(a){var b=this._nodeToButton(a),c=this._nodeToHost(a),e=this.s.dt;if(b.buttons.length)for(var g=b.buttons.length-1;0<=g;g--)this.remove(b.buttons[g].node);b.conf.destroy&&b.conf.destroy.call(e.button(a),
+e,d(a),b.conf);this._removeKey(b.conf);d(b.node).remove();a=d.inArray(b,c);c.splice(a,1);return this},text:function(a,b){var c=this._nodeToButton(a);a=this.c.dom.collection.buttonLiner;a=c.inCollection&&a&&a.tag?a.tag:this.c.dom.buttonLiner.tag;var e=this.s.dt,g=d(c.node),f=function(a){return"function"===typeof a?a(e,g,c.conf):a};if(b===p)return f(c.conf.text);c.conf.text=b;a?g.children(a).html(f(b)):g.html(f(b));return this},_constructor:function(){var a=this,b=this.s.dt,c=b.settings()[0],e=this.c.buttons;
+c._buttons||(c._buttons=[]);c._buttons.push({inst:this,name:this.c.name});for(var g=0,f=e.length;g<f;g++)this.add(e[g]);b.on("destroy",function(b,e){e===c&&a.destroy()});d("body").on("keyup."+this.s.namespace,function(b){if(!t.activeElement||t.activeElement===t.body){var c=String.fromCharCode(b.keyCode).toLowerCase();-1!==a.s.listenKeys.toLowerCase().indexOf(c)&&a._keypress(c,b)}})},_addKey:function(a){a.key&&(this.s.listenKeys+=d.isPlainObject(a.key)?a.key.key:a.key)},_draw:function(a,b){a||(a=this.dom.container,
+b=this.s.buttons);a.children().detach();for(var c=0,e=b.length;c<e;c++)a.append(b[c].inserter),a.append(" "),b[c].buttons&&b[c].buttons.length&&this._draw(b[c].collection,b[c].buttons)},_expandButton:function(a,b,c,e){var g=this.s.dt,f=0;b=d.isArray(b)?b:[b];for(var h=0,k=b.length;h<k;h++){var r=this._resolveExtends(b[h]);if(r)if(d.isArray(r))this._expandButton(a,r,c,e);else{var l=this._buildButton(r,c);l&&(e!==p?(a.splice(e,0,l),e++):a.push(l),l.conf.buttons&&(l.collection=d("<"+this.c.dom.collection.tag+
+"/>"),l.conf._collection=l.collection,this._expandButton(l.buttons,l.conf.buttons,!0,e)),r.init&&r.init.call(g.button(l.node),g,d(l.node),r),f++)}}},_buildButton:function(a,b){var c=this.c.dom.button,e=this.c.dom.buttonLiner,g=this.c.dom.collection,f=this.s.dt,h=function(b){return"function"===typeof b?b(f,l,a):b};b&&g.button&&(c=g.button);b&&g.buttonLiner&&(e=g.buttonLiner);if(a.available&&!a.available(f,a))return!1;var k=function(a,b,c,e){e.action.call(b.button(c),a,b,c,e);d(b.table().node()).triggerHandler("buttons-action.dt",
+[b.button(c),b,c,e])};g=a.tag||c.tag;var r=a.clickBlurs===p?!0:a.clickBlurs,l=d("<"+g+"/>").addClass(c.className).attr("tabindex",this.s.dt.settings()[0].iTabIndex).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(b){b.preventDefault();!l.hasClass(c.disabled)&&a.action&&k(b,f,l,a);r&&l.blur()}).on("keyup.dtb",function(b){13===b.keyCode&&!l.hasClass(c.disabled)&&a.action&&k(b,f,l,a)});"a"===g.toLowerCase()&&l.attr("href","#");"button"===g.toLowerCase()&&l.attr("type","button");
+e.tag?(g=d("<"+e.tag+"/>").html(h(a.text)).addClass(e.className),"a"===e.tag.toLowerCase()&&g.attr("href","#"),l.append(g)):l.html(h(a.text));!1===a.enabled&&l.addClass(c.disabled);a.className&&l.addClass(a.className);a.titleAttr&&l.attr("title",h(a.titleAttr));a.attr&&l.attr(a.attr);a.namespace||(a.namespace=".dt-button-"+C++);e=(e=this.c.dom.buttonContainer)&&e.tag?d("<"+e.tag+"/>").addClass(e.className).append(l):l;this._addKey(a);this.c.buttonCreated&&(e=this.c.buttonCreated(a,e));return{conf:a,
+node:l.get(0),inserter:e,buttons:[],inCollection:b,collection:null}},_nodeToButton:function(a,b){b||(b=this.s.buttons);for(var c=0,e=b.length;c<e;c++){if(b[c].node===a)return b[c];if(b[c].buttons.length){var d=this._nodeToButton(a,b[c].buttons);if(d)return d}}},_nodeToHost:function(a,b){b||(b=this.s.buttons);for(var c=0,e=b.length;c<e;c++){if(b[c].node===a)return b;if(b[c].buttons.length){var d=this._nodeToHost(a,b[c].buttons);if(d)return d}}},_keypress:function(a,b){if(!b._buttonsHandled){var c=
+function(e){for(var g=0,f=e.length;g<f;g++){var h=e[g].conf,k=e[g].node;h.key&&(h.key===a?(b._buttonsHandled=!0,d(k).click()):!d.isPlainObject(h.key)||h.key.key!==a||h.key.shiftKey&&!b.shiftKey||h.key.altKey&&!b.altKey||h.key.ctrlKey&&!b.ctrlKey||h.key.metaKey&&!b.metaKey||(b._buttonsHandled=!0,d(k).click()));e[g].buttons.length&&c(e[g].buttons)}};c(this.s.buttons)}},_removeKey:function(a){if(a.key){var b=d.isPlainObject(a.key)?a.key.key:a.key;a=this.s.listenKeys.split("");b=d.inArray(b,a);a.splice(b,
+1);this.s.listenKeys=a.join("")}},_resolveExtends:function(a){var b=this.s.dt,c,e=function(c){for(var e=0;!d.isPlainObject(c)&&!d.isArray(c);){if(c===p)return;if("function"===typeof c){if(c=c(b,a),!c)return!1}else if("string"===typeof c){if(!q[c])throw"Unknown button type: "+c;c=q[c]}e++;if(30<e)throw"Buttons: Too many iterations";}return d.isArray(c)?c:d.extend({},c)};for(a=e(a);a&&a.extend;){if(!q[a.extend])throw"Cannot extend unknown button type: "+a.extend;var g=e(q[a.extend]);if(d.isArray(g))return g;
+if(!g)return!1;var f=g.className;a=d.extend({},g,a);f&&a.className!==f&&(a.className=f+" "+a.className);var h=a.postfixButtons;if(h){a.buttons||(a.buttons=[]);f=0;for(c=h.length;f<c;f++)a.buttons.push(h[f]);a.postfixButtons=null}if(h=a.prefixButtons){a.buttons||(a.buttons=[]);f=0;for(c=h.length;f<c;f++)a.buttons.splice(f,0,h[f]);a.prefixButtons=null}a.extend=g.extend}return a},_popover:function(a,b,c){var e=this.c,g=d.extend({align:"button-left",autoClose:!1,background:!0,backgroundClassName:"dt-button-background",
+contentClassName:e.dom.collection.className,collectionLayout:"",collectionTitle:"",dropup:!1,fade:400,rightAlignClassName:"dt-button-right",tag:e.dom.collection.tag},c),f=b.node(),h=function(){d(".dt-button-collection").stop().fadeOut(g.fade,function(){d(this).detach()});d(b.buttons('[aria-haspopup="true"][aria-expanded="true"]').nodes()).attr("aria-expanded","false");d("div.dt-button-background").off("click.dtb-collection");n.background(!1,g.backgroundClassName,g.fade,f);d("body").off(".dtb-collection");
+b.off("buttons-action.b-internal")};!1===a&&h();c=d(b.buttons('[aria-haspopup="true"][aria-expanded="true"]').nodes());c.length&&(f=c.eq(0),h());c=d("<div/>").addClass("dt-button-collection").addClass(g.collectionLayout).css("display","none");a=d(a).addClass(g.contentClassName).attr("role","menu").appendTo(c);f.attr("aria-expanded","true");f.parents("body")[0]!==t.body&&(f=t.body.lastChild);g.collectionTitle&&c.prepend('<div class="dt-button-collection-title">'+g.collectionTitle+"</div>");c.insertAfter(f).fadeIn(g.fade);
+var k=d(b.table().container());e=c.css("position");"dt-container"===g.align&&(f=f.parent(),c.css("width",k.width()));if("absolute"===e){e=f.position();c.css({top:e.top+f.outerHeight(),left:e.left});var r=c.outerHeight(),l=c.outerWidth(),w=k.offset().top+k.height();w=e.top+f.outerHeight()+r-w;var D=e.top-r,m=k.offset().top;r=e.top-r-5;(w>m-D||g.dropup)&&-r<m&&c.css("top",r);(c.hasClass(g.rightAlignClassName)||"button-right"===g.align)&&c.css("left",e.left+f.outerWidth()-l);r=e.left+l;k=k.offset().left+
+k.width();r>k&&c.css("left",e.left-(r-k));k=f.offset().left+l;k>d(u).width()&&c.css("left",e.left-(k-d(u).width()))}else e=c.height()/2,e>d(u).height()/2&&(e=d(u).height()/2),c.css("marginTop",-1*e);g.background&&n.background(!0,g.backgroundClassName,g.fade,f);d("div.dt-button-background").on("click.dtb-collection",function(){});d("body").on("click.dtb-collection",function(b){var c=d.fn.addBack?"addBack":"andSelf";d(b.target).parents()[c]().filter(a).length||h()}).on("keyup.dtb-collection",function(a){27===
+a.keyCode&&h()});g.autoClose&&setTimeout(function(){b.on("buttons-action.b-internal",function(a,b,c,e){e[0]!==f[0]&&h()})},0)}});n.background=function(a,b,c,e){c===p&&(c=400);e||(e=t.body);a?d("<div/>").addClass(b).css("display","none").insertAfter(e).stop().fadeIn(c):d("div."+b).stop().fadeOut(c,function(){d(this).removeClass(b).remove()})};n.instanceSelector=function(a,b){if(a===p||null===a)return d.map(b,function(a){return a.inst});var c=[],e=d.map(b,function(a){return a.name}),g=function(a){if(d.isArray(a))for(var f=
+0,k=a.length;f<k;f++)g(a[f]);else"string"===typeof a?-1!==a.indexOf(",")?g(a.split(",")):(a=d.inArray(d.trim(a),e),-1!==a&&c.push(b[a].inst)):"number"===typeof a&&c.push(b[a].inst)};g(a);return c};n.buttonSelector=function(a,b){for(var c=[],e=function(a,b,c){for(var d,g,f=0,k=b.length;f<k;f++)if(d=b[f])g=c!==p?c+f:f+"",a.push({node:d.node,name:d.conf.name,idx:g}),d.buttons&&e(a,d.buttons,g+"-")},g=function(a,b){var f,h=[];e(h,b.s.buttons);var k=d.map(h,function(a){return a.node});if(d.isArray(a)||
+a instanceof d)for(k=0,f=a.length;k<f;k++)g(a[k],b);else if(null===a||a===p||"*"===a)for(k=0,f=h.length;k<f;k++)c.push({inst:b,node:h[k].node});else if("number"===typeof a)c.push({inst:b,node:b.s.buttons[a].node});else if("string"===typeof a)if(-1!==a.indexOf(","))for(h=a.split(","),k=0,f=h.length;k<f;k++)g(d.trim(h[k]),b);else if(a.match(/^\d+(\-\d+)*$/))k=d.map(h,function(a){return a.idx}),c.push({inst:b,node:h[d.inArray(a,k)].node});else if(-1!==a.indexOf(":name"))for(a=a.replace(":name",""),k=
+0,f=h.length;k<f;k++)h[k].name===a&&c.push({inst:b,node:h[k].node});else d(k).filter(a).each(function(){c.push({inst:b,node:this})});else"object"===typeof a&&a.nodeName&&(h=d.inArray(a,k),-1!==h&&c.push({inst:b,node:k[h]}))},f=0,h=a.length;f<h;f++)g(b,a[f]);return c};n.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{tag:"div",className:""},button:{tag:"ActiveXObject"in u?"a":"button",className:"dt-button",
+active:"active",disabled:"disabled"},buttonLiner:{tag:"span",className:""}}};n.version="1.6.1";d.extend(q,{collection:{text:function(a){return a.i18n("buttons.collection","Collection")},className:"buttons-collection",init:function(a,b,c){b.attr("aria-expanded",!1)},action:function(a,b,c,e){a.stopPropagation();e._collection.parents("body").length?this.popover(!1,e):this.popover(e._collection,e)},attr:{"aria-haspopup":!0}},copy:function(a,b){if(q.copyHtml5)return"copyHtml5";if(q.copyFlash&&q.copyFlash.available(a,
+b))return"copyFlash"},csv:function(a,b){if(q.csvHtml5&&q.csvHtml5.available(a,b))return"csvHtml5";if(q.csvFlash&&q.csvFlash.available(a,b))return"csvFlash"},excel:function(a,b){if(q.excelHtml5&&q.excelHtml5.available(a,b))return"excelHtml5";if(q.excelFlash&&q.excelFlash.available(a,b))return"excelFlash"},pdf:function(a,b){if(q.pdfHtml5&&q.pdfHtml5.available(a,b))return"pdfHtml5";if(q.pdfFlash&&q.pdfFlash.available(a,b))return"pdfFlash"},pageLength:function(a){a=a.settings()[0].aLengthMenu;var b=d.isArray(a[0])?
+a[0]:a,c=d.isArray(a[0])?a[1]:a;return{extend:"collection",text:function(a){return a.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},a.page.len())},className:"buttons-page-length",autoClose:!0,buttons:d.map(b,function(a,b){return{text:c[b],className:"button-page-length",action:function(b,c){c.page.len(a).draw()},init:function(b,c,d){var e=this;c=function(){e.active(b.page.len()===a)};b.on("length.dt"+d.namespace,c);c()},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}),
+init:function(a,b,c){var d=this;a.on("length.dt"+c.namespace,function(){d.text(c.text)})},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}});m.Api.register("buttons()",function(a,b){b===p&&(b=a,a=p);this.selector.buttonGroup=a;var c=this.iterator(!0,"table",function(c){if(c._buttons)return n.buttonSelector(n.instanceSelector(a,c._buttons),b)},!0);c._groupSelector=a;return c});m.Api.register("button()",function(a,b){a=this.buttons(a,b);1<a.length&&a.splice(1,a.length);return a});m.Api.registerPlural("buttons().active()",
+"button().active()",function(a){return a===p?this.map(function(a){return a.inst.active(a.node)}):this.each(function(b){b.inst.active(b.node,a)})});m.Api.registerPlural("buttons().action()","button().action()",function(a){return a===p?this.map(function(a){return a.inst.action(a.node)}):this.each(function(b){b.inst.action(b.node,a)})});m.Api.register(["buttons().enable()","button().enable()"],function(a){return this.each(function(b){b.inst.enable(b.node,a)})});m.Api.register(["buttons().disable()",
+"button().disable()"],function(){return this.each(function(a){a.inst.disable(a.node)})});m.Api.registerPlural("buttons().nodes()","button().node()",function(){var a=d();d(this.each(function(b){a=a.add(b.inst.node(b.node))}));return a});m.Api.registerPlural("buttons().processing()","button().processing()",function(a){return a===p?this.map(function(a){return a.inst.processing(a.node)}):this.each(function(b){b.inst.processing(b.node,a)})});m.Api.registerPlural("buttons().text()","button().text()",function(a){return a===
+p?this.map(function(a){return a.inst.text(a.node)}):this.each(function(b){b.inst.text(b.node,a)})});m.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(a){a.inst.node(a.node).trigger("click")})});m.Api.register("button().popover()",function(a,b){return this.map(function(c){return c.inst._popover(a,this.button(this[0].node),b)})});m.Api.register("buttons().containers()",function(){var a=d(),b=this._groupSelector;this.iterator(!0,"table",function(c){if(c._buttons){c=
+n.instanceSelector(b,c._buttons);for(var d=0,g=c.length;d<g;d++)a=a.add(c[d].container())}});return a});m.Api.register("buttons().container()",function(){return this.containers().eq(0)});m.Api.register("button().add()",function(a,b){var c=this.context;c.length&&(c=n.instanceSelector(this._groupSelector,c[0]._buttons),c.length&&c[0].add(b,a));return this.button(this._groupSelector,a)});m.Api.register("buttons().destroy()",function(){this.pluck("inst").unique().each(function(a){a.destroy()});return this});
+m.Api.registerPlural("buttons().remove()","buttons().remove()",function(){this.each(function(a){a.inst.remove(a.node)});return this});var v;m.Api.register("buttons.info()",function(a,b,c){var e=this;if(!1===a)return this.off("destroy.btn-info"),d("#datatables_buttons_info").fadeOut(function(){d(this).remove()}),clearTimeout(v),v=null,this;v&&clearTimeout(v);d("#datatables_buttons_info").length&&d("#datatables_buttons_info").remove();a=a?"<h2>"+a+"</h2>":"";d('<div id="datatables_buttons_info" class="dt-button-info"/>').html(a).append(d("<div/>")["string"===
+typeof b?"html":"append"](b)).css("display","none").appendTo("body").fadeIn();c!==p&&0!==c&&(v=setTimeout(function(){e.buttons.info(!1)},c));this.on("destroy.btn-info",function(){e.buttons.info(!1)});return this});m.Api.register("buttons.exportData()",function(a){if(this.context.length)return E(new m.Api(this.context[0]),a)});m.Api.register("buttons.exportInfo()",function(a){a||(a={});var b=a;var c="*"===b.filename&&"*"!==b.title&&b.title!==p&&null!==b.title&&""!==b.title?b.title:b.filename;"function"===
+typeof c&&(c=c());c===p||null===c?c=null:(-1!==c.indexOf("*")&&(c=d.trim(c.replace("*",d("head > title").text()))),c=c.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""),(b=x(b.extension))||(b=""),c+=b);b=x(a.title);b=null===b?null:-1!==b.indexOf("*")?b.replace("*",d("head > title").text()||"Exported data"):b;return{filename:c,title:b,messageTop:z(this,a.message||a.messageTop,"top"),messageBottom:z(this,a.messageBottom,"bottom")}});var x=function(a){return null===a||a===p?null:"function"===typeof a?
+a():a},z=function(a,b,c){b=x(b);if(null===b)return null;a=d("caption",a.table().container()).eq(0);return"*"===b?a.css("caption-side")!==c?null:a.length?a.text():"":b},A=d("<textarea/>")[0],E=function(a,b){var c=d.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,trim:!0,format:{header:function(a){return e(a)},footer:function(a){return e(a)},body:function(a){return e(a)}},customizeData:null},b),e=function(a){if("string"!==
+typeof a)return a;a=a.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"");a=a.replace(/<!\-\-.*?\-\->/g,"");c.stripHtml&&(a=a.replace(/<[^>]*>/g,""));c.trim&&(a=a.replace(/^\s+|\s+$/g,""));c.stripNewlines&&(a=a.replace(/\n/g," "));c.decodeEntities&&(A.innerHTML=a,a=A.value);return a};b=a.columns(c.columns).indexes().map(function(b){var d=a.column(b).header();return c.format.header(d.innerHTML,b,d)}).toArray();var g=a.table().footer()?a.columns(c.columns).indexes().map(function(b){var d=
+a.column(b).footer();return c.format.footer(d?d.innerHTML:"",b,d)}).toArray():null,f=d.extend({},c.modifier);a.select&&"function"===typeof a.select.info&&f.selected===p&&a.rows(c.rows,d.extend({selected:!0},f)).any()&&d.extend(f,{selected:!0});f=a.rows(c.rows,f).indexes().toArray();var h=a.cells(f,c.columns);f=h.render(c.orthogonal).toArray();h=h.nodes().toArray();for(var k=b.length,m=[],l=0,n=0,q=0<k?f.length/k:0;n<q;n++){for(var u=[k],t=0;t<k;t++)u[t]=c.format.body(f[l],n,t,h[l]),l++;m[n]=u}b={header:b,
+footer:g,body:m};c.customizeData&&c.customizeData(b);return b};d.fn.dataTable.Buttons=n;d.fn.DataTable.Buttons=n;d(t).on("init.dt plugin-init.dt",function(a,b){"dt"===a.namespace&&(a=b.oInit.buttons||m.defaults.buttons)&&!b._buttons&&(new n(b,a)).container()});m.ext.feature.push({fnInit:y,cFeature:"B"});m.ext.features&&m.ext.features.register("buttons",y);return n});
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+table.DTCR_clonedTable.dataTable {
+  position: absolute !important;
+  background-color: rgba(255, 255, 255, 0.7);
+  z-index: 202;
+}
+
+div.DTCR_pointer {
+  width: 1px;
+  background-color: #337ab7;
+  z-index: 201;
+}
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#337ab7;z-index:201}
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap4.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+table.DTCR_clonedTable.dataTable {
+  position: absolute !important;
+  background-color: rgba(255, 255, 255, 0.7);
+  z-index: 202;
+}
+
+div.DTCR_pointer {
+  width: 1px;
+  background-color: #0275d8;
+  z-index: 201;
+}
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0275d8;z-index:201}
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.dataTables.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+table.DTCR_clonedTable.dataTable {
+  position: absolute !important;
+  background-color: rgba(255, 255, 255, 0.7);
+  z-index: 202;
+}
+
+div.DTCR_pointer {
+  width: 1px;
+  background-color: #0259C4;
+  z-index: 201;
+}
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.dataTables.min.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0259C4;z-index:201}
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.foundation.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+table.DTCR_clonedTable.dataTable {
+  position: absolute !important;
+  background-color: rgba(255, 255, 255, 0.7);
+  z-index: 202;
+}
+
+div.DTCR_pointer {
+  width: 1px;
+  background-color: #008CBA;
+  z-index: 201;
+}
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.foundation.min.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#008CBA;z-index:201}
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.jqueryui.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+table.DTCR_clonedTable.dataTable {
+  position: absolute !important;
+  background-color: rgba(255, 255, 255, 0.7);
+  z-index: 202;
+}
+
+div.DTCR_pointer {
+  width: 1px;
+  background-color: #0259C4;
+  z-index: 201;
+}
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0259C4;z-index:201}
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.semanticui.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+table.DTCR_clonedTable.dataTable {
+  position: absolute !important;
+  background-color: rgba(255, 255, 255, 0.7);
+  z-index: 202;
+}
+
+div.DTCR_pointer {
+  width: 1px;
+  background-color: #888;
+  z-index: 201;
+}
Index: public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.semanticui.min.css
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/css/colReorder.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#888;z-index:201}
Index: public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 3 styling wrapper for ColReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs', 'datatables.net-colreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.ColReorder ) {
+				require('datatables.net-colreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 3 styling wrapper for ColReorder
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-colreorder"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs")(a,b).$);b.fn.dataTable.ColReorder||require("datatables.net-colreorder")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap4.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 4 styling wrapper for ColReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-colreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.ColReorder ) {
+				require('datatables.net-colreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 4 styling wrapper for ColReorder
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-colreorder"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.ColReorder||require("datatables.net-colreorder")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.dataTables.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! DataTables styling wrapper for ColReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-dt', 'datatables.net-colreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-dt')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.ColReorder ) {
+				require('datatables.net-colreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.foundation.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Foundation styling wrapper for ColReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-zf', 'datatables.net-colreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-zf')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.ColReorder ) {
+				require('datatables.net-colreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.foundation.min.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Foundation styling wrapper for ColReorder
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-colreorder"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-zf")(a,b).$);b.fn.dataTable.ColReorder||require("datatables.net-colreorder")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.jqueryui.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! jQuery UI styling wrapper for ColReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-jqui', 'datatables.net-colreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-jqui')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.ColReorder ) {
+				require('datatables.net-colreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ jQuery UI styling wrapper for ColReorder
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-colreorder"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-jqui")(a,b).$);b.fn.dataTable.ColReorder||require("datatables.net-colreorder")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.semanticui.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Semanic UI styling wrapper for ColReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-se', 'datatables.net-colreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-se')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.ColReorder ) {
+				require('datatables.net-colreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.semanticui.min.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/colReorder.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Semanic UI styling wrapper for ColReorder
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-colreorder"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-se")(a,b).$);b.fn.dataTable.ColReorder||require("datatables.net-colreorder")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/ColReorder-1.5.2/js/dataTables.colReorder.js
===================================================================
--- public/vendors/dataTable/ColReorder-1.5.2/js/dataTables.colReorder.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/ColReorder-1.5.2/js/dataTables.colReorder.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1491 @@
+/*! ColReorder 1.5.2
+ * ©2010-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     ColReorder
+ * @description Provide the ability to reorder columns in a DataTable
+ * @version     1.5.2
+ * @file        dataTables.colReorder.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/**
+ * Switch the key value pairing of an index array to be value key (i.e. the old value is now the
+ * key). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ].
+ *  @method  fnInvertKeyValues
+ *  @param   array aIn Array to switch around
+ *  @returns array
+ */
+function fnInvertKeyValues( aIn )
+{
+	var aRet=[];
+	for ( var i=0, iLen=aIn.length ; i<iLen ; i++ )
+	{
+		aRet[ aIn[i] ] = i;
+	}
+	return aRet;
+}
+
+
+/**
+ * Modify an array by switching the position of two elements
+ *  @method  fnArraySwitch
+ *  @param   array aArray Array to consider, will be modified by reference (i.e. no return)
+ *  @param   int iFrom From point
+ *  @param   int iTo Insert point
+ *  @returns void
+ */
+function fnArraySwitch( aArray, iFrom, iTo )
+{
+	var mStore = aArray.splice( iFrom, 1 )[0];
+	aArray.splice( iTo, 0, mStore );
+}
+
+
+/**
+ * Switch the positions of nodes in a parent node (note this is specifically designed for
+ * table rows). Note this function considers all element nodes under the parent!
+ *  @method  fnDomSwitch
+ *  @param   string sTag Tag to consider
+ *  @param   int iFrom Element to move
+ *  @param   int Point to element the element to (before this point), can be null for append
+ *  @returns void
+ */
+function fnDomSwitch( nParent, iFrom, iTo )
+{
+	var anTags = [];
+	for ( var i=0, iLen=nParent.childNodes.length ; i<iLen ; i++ )
+	{
+		if ( nParent.childNodes[i].nodeType == 1 )
+		{
+			anTags.push( nParent.childNodes[i] );
+		}
+	}
+	var nStore = anTags[ iFrom ];
+
+	if ( iTo !== null )
+	{
+		nParent.insertBefore( nStore, anTags[iTo] );
+	}
+	else
+	{
+		nParent.appendChild( nStore );
+	}
+}
+
+
+/**
+ * Plug-in for DataTables which will reorder the internal column structure by taking the column
+ * from one position (iFrom) and insert it into a given point (iTo).
+ *  @method  $.fn.dataTableExt.oApi.fnColReorder
+ *  @param   object oSettings DataTables settings object - automatically added by DataTables!
+ *  @param   int iFrom Take the column to be repositioned from this point
+ *  @param   int iTo and insert it into this point
+ *  @param   bool drop Indicate if the reorder is the final one (i.e. a drop)
+ *    not a live reorder
+ *  @param   bool invalidateRows speeds up processing if false passed
+ *  @returns void
+ */
+$.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo, drop, invalidateRows )
+{
+	var i, iLen, j, jLen, jen, iCols=oSettings.aoColumns.length, nTrs, oCol;
+	var attrMap = function ( obj, prop, mapping ) {
+		if ( ! obj[ prop ] || typeof obj[ prop ] === 'function' ) {
+			return;
+		}
+
+		var a = obj[ prop ].split('.');
+		var num = a.shift();
+
+		if ( isNaN( num*1 ) ) {
+			return;
+		}
+
+		obj[ prop ] = mapping[ num*1 ]+'.'+a.join('.');
+	};
+
+	/* Sanity check in the input */
+	if ( iFrom == iTo )
+	{
+		/* Pointless reorder */
+		return;
+	}
+
+	if ( iFrom < 0 || iFrom >= iCols )
+	{
+		this.oApi._fnLog( oSettings, 1, "ColReorder 'from' index is out of bounds: "+iFrom );
+		return;
+	}
+
+	if ( iTo < 0 || iTo >= iCols )
+	{
+		this.oApi._fnLog( oSettings, 1, "ColReorder 'to' index is out of bounds: "+iTo );
+		return;
+	}
+
+	/*
+	 * Calculate the new column array index, so we have a mapping between the old and new
+	 */
+	var aiMapping = [];
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		aiMapping[i] = i;
+	}
+	fnArraySwitch( aiMapping, iFrom, iTo );
+	var aiInvertMapping = fnInvertKeyValues( aiMapping );
+
+
+	/*
+	 * Convert all internal indexing to the new column order indexes
+	 */
+	/* Sorting */
+	for ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )
+	{
+		oSettings.aaSorting[i][0] = aiInvertMapping[ oSettings.aaSorting[i][0] ];
+	}
+
+	/* Fixed sorting */
+	if ( oSettings.aaSortingFixed !== null )
+	{
+		for ( i=0, iLen=oSettings.aaSortingFixed.length ; i<iLen ; i++ )
+		{
+			oSettings.aaSortingFixed[i][0] = aiInvertMapping[ oSettings.aaSortingFixed[i][0] ];
+		}
+	}
+
+	/* Data column sorting (the column which the sort for a given column should take place on) */
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		oCol = oSettings.aoColumns[i];
+		for ( j=0, jLen=oCol.aDataSort.length ; j<jLen ; j++ )
+		{
+			oCol.aDataSort[j] = aiInvertMapping[ oCol.aDataSort[j] ];
+		}
+
+		// Update the column indexes
+		oCol.idx = aiInvertMapping[ oCol.idx ];
+	}
+
+	// Update 1.10 optimised sort class removal variable
+	$.each( oSettings.aLastSort, function (i, val) {
+		oSettings.aLastSort[i].src = aiInvertMapping[ val.src ];
+	} );
+
+	/* Update the Get and Set functions for each column */
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		oCol = oSettings.aoColumns[i];
+
+		if ( typeof oCol.mData == 'number' ) {
+			oCol.mData = aiInvertMapping[ oCol.mData ];
+		}
+		else if ( $.isPlainObject( oCol.mData ) ) {
+			// HTML5 data sourced
+			attrMap( oCol.mData, '_',      aiInvertMapping );
+			attrMap( oCol.mData, 'filter', aiInvertMapping );
+			attrMap( oCol.mData, 'sort',   aiInvertMapping );
+			attrMap( oCol.mData, 'type',   aiInvertMapping );
+		}
+	}
+
+	/*
+	 * Move the DOM elements
+	 */
+	if ( oSettings.aoColumns[iFrom].bVisible )
+	{
+		/* Calculate the current visible index and the point to insert the node before. The insert
+		 * before needs to take into account that there might not be an element to insert before,
+		 * in which case it will be null, and an appendChild should be used
+		 */
+		var iVisibleIndex = this.oApi._fnColumnIndexToVisible( oSettings, iFrom );
+		var iInsertBeforeIndex = null;
+
+		i = iTo < iFrom ? iTo : iTo + 1;
+		while ( iInsertBeforeIndex === null && i < iCols )
+		{
+			iInsertBeforeIndex = this.oApi._fnColumnIndexToVisible( oSettings, i );
+			i++;
+		}
+
+		/* Header */
+		nTrs = oSettings.nTHead.getElementsByTagName('tr');
+		for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+		{
+			fnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );
+		}
+
+		/* Footer */
+		if ( oSettings.nTFoot !== null )
+		{
+			nTrs = oSettings.nTFoot.getElementsByTagName('tr');
+			for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+			{
+				fnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );
+			}
+		}
+
+		/* Body */
+		for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+		{
+			if ( oSettings.aoData[i].nTr !== null )
+			{
+				fnDomSwitch( oSettings.aoData[i].nTr, iVisibleIndex, iInsertBeforeIndex );
+			}
+		}
+	}
+
+	/*
+	 * Move the internal array elements
+	 */
+	/* Columns */
+	fnArraySwitch( oSettings.aoColumns, iFrom, iTo );
+
+	// regenerate the get / set functions
+	for ( i=0, iLen=iCols ; i<iLen ; i++ ) {
+		oSettings.oApi._fnColumnOptions( oSettings, i, {} );
+	}
+
+	/* Search columns */
+	fnArraySwitch( oSettings.aoPreSearchCols, iFrom, iTo );
+
+	/* Array array - internal data anodes cache */
+	for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+	{
+		var data = oSettings.aoData[i];
+		var cells = data.anCells;
+
+		if ( cells ) {
+			fnArraySwitch( cells, iFrom, iTo );
+
+			// Longer term, should this be moved into the DataTables' invalidate
+			// methods?
+			for ( j=0, jen=cells.length ; j<jen ; j++ ) {
+				if ( cells[j] && cells[j]._DT_CellIndex ) {
+					cells[j]._DT_CellIndex.column = j;
+				}
+			}
+		}
+
+		// For DOM sourced data, the invalidate will reread the cell into
+		// the data array, but for data sources as an array, they need to
+		// be flipped
+		if ( data.src !== 'dom' && $.isArray( data._aData ) ) {
+			fnArraySwitch( data._aData, iFrom, iTo );
+		}
+	}
+
+	/* Reposition the header elements in the header layout array */
+	for ( i=0, iLen=oSettings.aoHeader.length ; i<iLen ; i++ )
+	{
+		fnArraySwitch( oSettings.aoHeader[i], iFrom, iTo );
+	}
+
+	if ( oSettings.aoFooter !== null )
+	{
+		for ( i=0, iLen=oSettings.aoFooter.length ; i<iLen ; i++ )
+		{
+			fnArraySwitch( oSettings.aoFooter[i], iFrom, iTo );
+		}
+	}
+
+	if ( invalidateRows || invalidateRows === undefined )
+	{
+		$.fn.dataTable.Api( oSettings ).rows().invalidate();
+	}
+
+	/*
+	 * Update DataTables' event handlers
+	 */
+
+	/* Sort listener */
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		$(oSettings.aoColumns[i].nTh).off('.DT');
+		this.oApi._fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );
+	}
+
+
+	/* Fire an event so other plug-ins can update */
+	$(oSettings.oInstance).trigger( 'column-reorder.dt', [ oSettings, {
+		from: iFrom,
+		to: iTo,
+		mapping: aiInvertMapping,
+		drop: drop,
+
+		// Old style parameters for compatibility
+		iFrom: iFrom,
+		iTo: iTo,
+		aiInvertMapping: aiInvertMapping
+	} ] );
+};
+
+/**
+ * ColReorder provides column visibility control for DataTables
+ * @class ColReorder
+ * @constructor
+ * @param {object} dt DataTables settings object
+ * @param {object} opts ColReorder options
+ */
+var ColReorder = function( dt, opts )
+{
+	var settings = new $.fn.dataTable.Api( dt ).settings()[0];
+
+	// Ensure that we can't initialise on the same table twice
+	if ( settings._colReorder ) {
+		return settings._colReorder;
+	}
+
+	// Allow the options to be a boolean for defaults
+	if ( opts === true ) {
+		opts = {};
+	}
+
+	// Convert from camelCase to Hungarian, just as DataTables does
+	var camelToHungarian = $.fn.dataTable.camelToHungarian;
+	if ( camelToHungarian ) {
+		camelToHungarian( ColReorder.defaults, ColReorder.defaults, true );
+		camelToHungarian( ColReorder.defaults, opts || {} );
+	}
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public class variables
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * @namespace Settings object which contains customisable information for ColReorder instance
+	 */
+	this.s = {
+		/**
+		 * DataTables settings object
+		 *  @property dt
+		 *  @type     Object
+		 *  @default  null
+		 */
+		"dt": null,
+
+		/**
+		 * Enable flag
+		 *  @property dt
+		 *  @type     Object
+		 *  @default  null
+		 */
+		"enable": null,
+
+		/**
+		 * Initialisation object used for this instance
+		 *  @property init
+		 *  @type     object
+		 *  @default  {}
+		 */
+		"init": $.extend( true, {}, ColReorder.defaults, opts ),
+
+		/**
+		 * Number of columns to fix (not allow to be reordered)
+		 *  @property fixed
+		 *  @type     int
+		 *  @default  0
+		 */
+		"fixed": 0,
+
+		/**
+		 * Number of columns to fix counting from right (not allow to be reordered)
+		 *  @property fixedRight
+		 *  @type     int
+		 *  @default  0
+		 */
+		"fixedRight": 0,
+
+		/**
+		 * Callback function for once the reorder has been done
+		 *  @property reorderCallback
+		 *  @type     function
+		 *  @default  null
+		 */
+		"reorderCallback": null,
+
+		/**
+		 * @namespace Information used for the mouse drag
+		 */
+		"mouse": {
+			"startX": -1,
+			"startY": -1,
+			"offsetX": -1,
+			"offsetY": -1,
+			"target": -1,
+			"targetIndex": -1,
+			"fromIndex": -1
+		},
+
+		/**
+		 * Information which is used for positioning the insert cusor and knowing where to do the
+		 * insert. Array of objects with the properties:
+		 *   x: x-axis position
+		 *   to: insert point
+		 *  @property aoTargets
+		 *  @type     array
+		 *  @default  []
+		 */
+		"aoTargets": []
+	};
+
+
+	/**
+	 * @namespace Common and useful DOM elements for the class instance
+	 */
+	this.dom = {
+		/**
+		 * Dragging element (the one the mouse is moving)
+		 *  @property drag
+		 *  @type     element
+		 *  @default  null
+		 */
+		"drag": null,
+
+		/**
+		 * The insert cursor
+		 *  @property pointer
+		 *  @type     element
+		 *  @default  null
+		 */
+		"pointer": null
+	};
+
+	/* Constructor logic */
+	this.s.enable = this.s.init.bEnable;
+	this.s.dt = settings;
+	this.s.dt._colReorder = this;
+	this._fnConstruct();
+
+	return this;
+};
+
+
+
+$.extend( ColReorder.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Enable / disable end user interaction
+	 */
+	fnEnable: function ( flag )
+	{
+		if ( flag === false ) {
+			return fnDisable();
+		}
+
+		this.s.enable = true;
+	},
+
+	/**
+	 * Disable end user interaction
+	 */
+	fnDisable: function ()
+	{
+		this.s.enable = false;
+	},
+
+	/**
+	 * Reset the column ordering to the original ordering that was detected on
+	 * start up.
+	 *  @return {this} Returns `this` for chaining.
+	 *
+	 *  @example
+	 *    // DataTables initialisation with ColReorder
+	 *    var table = $('#example').dataTable( {
+	 *        "sDom": 'Rlfrtip'
+	 *    } );
+	 *
+	 *    // Add click event to a button to reset the ordering
+	 *    $('#resetOrdering').click( function (e) {
+	 *        e.preventDefault();
+	 *        $.fn.dataTable.ColReorder( table ).fnReset();
+	 *    } );
+	 */
+	"fnReset": function ()
+	{
+		this._fnOrderColumns( this.fnOrder() );
+
+		return this;
+	},
+
+	/**
+	 * `Deprecated` - Get the current order of the columns, as an array.
+	 *  @return {array} Array of column identifiers
+	 *  @deprecated `fnOrder` should be used in preference to this method.
+	 *      `fnOrder` acts as a getter/setter.
+	 */
+	"fnGetCurrentOrder": function ()
+	{
+		return this.fnOrder();
+	},
+
+	/**
+	 * Get the current order of the columns, as an array. Note that the values
+	 * given in the array are unique identifiers for each column. Currently
+	 * these are the original ordering of the columns that was detected on
+	 * start up, but this could potentially change in future.
+	 *  @return {array} Array of column identifiers
+	 *
+	 *  @example
+	 *    // Get column ordering for the table
+	 *    var order = $.fn.dataTable.ColReorder( dataTable ).fnOrder();
+	 *//**
+	 * Set the order of the columns, from the positions identified in the
+	 * ordering array given. Note that ColReorder takes a brute force approach
+	 * to reordering, so it is possible multiple reordering events will occur
+	 * before the final order is settled upon.
+	 *  @param {array} [set] Array of column identifiers in the new order. Note
+	 *    that every column must be included, uniquely, in this array.
+	 *  @return {this} Returns `this` for chaining.
+	 *
+	 *  @example
+	 *    // Swap the first and second columns
+	 *    $.fn.dataTable.ColReorder( dataTable ).fnOrder( [1, 0, 2, 3, 4] );
+	 *
+	 *  @example
+	 *    // Move the first column to the end for the table `#example`
+	 *    var curr = $.fn.dataTable.ColReorder( '#example' ).fnOrder();
+	 *    var first = curr.shift();
+	 *    curr.push( first );
+	 *    $.fn.dataTable.ColReorder( '#example' ).fnOrder( curr );
+	 *
+	 *  @example
+	 *    // Reverse the table's order
+	 *    $.fn.dataTable.ColReorder( '#example' ).fnOrder(
+	 *      $.fn.dataTable.ColReorder( '#example' ).fnOrder().reverse()
+	 *    );
+	 */
+	"fnOrder": function ( set, original )
+	{
+		var a = [], i, ien, j, jen;
+		var columns = this.s.dt.aoColumns;
+
+		if ( set === undefined ){
+			for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+				a.push( columns[i]._ColReorder_iOrigCol );
+			}
+
+			return a;
+		}
+
+		// The order given is based on the original indexes, rather than the
+		// existing ones, so we need to translate from the original to current
+		// before then doing the order
+		if ( original ) {
+			var order = this.fnOrder();
+
+			for ( i=0, ien=set.length ; i<ien ; i++ ) {
+				a.push( $.inArray( set[i], order ) );
+			}
+
+			set = a;
+		}
+
+		this._fnOrderColumns( fnInvertKeyValues( set ) );
+
+		return this;
+	},
+
+
+	/**
+	 * Convert from the original column index, to the original
+	 *
+	 * @param  {int|array} idx Index(es) to convert
+	 * @param  {string} dir Transpose direction - `fromOriginal` / `toCurrent`
+	 *   or `'toOriginal` / `fromCurrent`
+	 * @return {int|array}     Converted values
+	 */
+	fnTranspose: function ( idx, dir )
+	{
+		if ( ! dir ) {
+			dir = 'toCurrent';
+		}
+
+		var order = this.fnOrder();
+		var columns = this.s.dt.aoColumns;
+
+		if ( dir === 'toCurrent' ) {
+			// Given an original index, want the current
+			return ! $.isArray( idx ) ?
+				$.inArray( idx, order ) :
+				$.map( idx, function ( index ) {
+					return $.inArray( index, order );
+				} );
+		}
+		else {
+			// Given a current index, want the original
+			return ! $.isArray( idx ) ?
+				columns[idx]._ColReorder_iOrigCol :
+				$.map( idx, function ( index ) {
+					return columns[index]._ColReorder_iOrigCol;
+				} );
+		}
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods (they are of course public in JS, but recommended as private)
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Constructor logic
+	 *  @method  _fnConstruct
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnConstruct": function ()
+	{
+		var that = this;
+		var iLen = this.s.dt.aoColumns.length;
+		var table = this.s.dt.nTable;
+		var i;
+
+		/* Columns discounted from reordering - counting left to right */
+		if ( this.s.init.iFixedColumns )
+		{
+			this.s.fixed = this.s.init.iFixedColumns;
+		}
+
+		if ( this.s.init.iFixedColumnsLeft )
+		{
+			this.s.fixed = this.s.init.iFixedColumnsLeft;
+		}
+
+		/* Columns discounted from reordering - counting right to left */
+		this.s.fixedRight = this.s.init.iFixedColumnsRight ?
+			this.s.init.iFixedColumnsRight :
+			0;
+
+		/* Drop callback initialisation option */
+		if ( this.s.init.fnReorderCallback )
+		{
+			this.s.reorderCallback = this.s.init.fnReorderCallback;
+		}
+
+		/* Add event handlers for the drag and drop, and also mark the original column order */
+		for ( i = 0; i < iLen; i++ )
+		{
+			if ( i > this.s.fixed-1 && i < iLen - this.s.fixedRight )
+			{
+				this._fnMouseListener( i, this.s.dt.aoColumns[i].nTh );
+			}
+
+			/* Mark the original column order for later reference */
+			this.s.dt.aoColumns[i]._ColReorder_iOrigCol = i;
+		}
+
+		/* State saving */
+		this.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) {
+			that._fnStateSave.call( that, oData );
+		}, "ColReorder_State" );
+
+		/* An initial column order has been specified */
+		var aiOrder = null;
+		if ( this.s.init.aiOrder )
+		{
+			aiOrder = this.s.init.aiOrder.slice();
+		}
+
+		/* State loading, overrides the column order given */
+		if ( this.s.dt.oLoadedState && typeof this.s.dt.oLoadedState.ColReorder != 'undefined' &&
+		  this.s.dt.oLoadedState.ColReorder.length == this.s.dt.aoColumns.length )
+		{
+			aiOrder = this.s.dt.oLoadedState.ColReorder;
+		}
+
+		/* If we have an order to apply - do so */
+		if ( aiOrder )
+		{
+			/* We might be called during or after the DataTables initialisation. If before, then we need
+			 * to wait until the draw is done, if after, then do what we need to do right away
+			 */
+			if ( !that.s.dt._bInitComplete )
+			{
+				var bDone = false;
+				$(table).on( 'draw.dt.colReorder', function () {
+					if ( !that.s.dt._bInitComplete && !bDone )
+					{
+						bDone = true;
+						var resort = fnInvertKeyValues( aiOrder );
+						that._fnOrderColumns.call( that, resort );
+					}
+				} );
+			}
+			else
+			{
+				var resort = fnInvertKeyValues( aiOrder );
+				that._fnOrderColumns.call( that, resort );
+			}
+		}
+		else {
+			this._fnSetColumnIndexes();
+		}
+
+		// Destroy clean up
+		$(table).on( 'destroy.dt.colReorder', function () {
+			$(table).off( 'destroy.dt.colReorder draw.dt.colReorder' );
+
+			$.each( that.s.dt.aoColumns, function (i, column) {
+				$(column.nTh).off('.ColReorder');
+				$(column.nTh).removeAttr('data-column-index');
+			} );
+
+			that.s.dt._colReorder = null;
+			that.s = null;
+		} );
+	},
+
+
+	/**
+	 * Set the column order from an array
+	 *  @method  _fnOrderColumns
+	 *  @param   array a An array of integers which dictate the column order that should be applied
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnOrderColumns": function ( a )
+	{
+		var changed = false;
+
+		if ( a.length != this.s.dt.aoColumns.length )
+		{
+			this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "ColReorder - array reorder does not "+
+				"match known number of columns. Skipping." );
+			return;
+		}
+
+		for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+		{
+			var currIndex = $.inArray( i, a );
+			if ( i != currIndex )
+			{
+				/* Reorder our switching array */
+				fnArraySwitch( a, currIndex, i );
+
+				/* Do the column reorder in the table */
+				this.s.dt.oInstance.fnColReorder( currIndex, i, true, false );
+
+				changed = true;
+			}
+		}
+
+		this._fnSetColumnIndexes();
+
+		// Has anything actually changed? If not, then nothing else to do
+		if ( ! changed ) {
+			return;
+		}
+
+		$.fn.dataTable.Api( this.s.dt ).rows().invalidate();
+
+		/* When scrolling we need to recalculate the column sizes to allow for the shift */
+		if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
+		{
+			this.s.dt.oInstance.fnAdjustColumnSizing( false );
+		}
+
+		/* Save the state */
+		this.s.dt.oInstance.oApi._fnSaveState( this.s.dt );
+
+		if ( this.s.reorderCallback !== null )
+		{
+			this.s.reorderCallback.call( this );
+		}
+	},
+
+
+	/**
+	 * Because we change the indexes of columns in the table, relative to their starting point
+	 * we need to reorder the state columns to what they are at the starting point so we can
+	 * then rearrange them again on state load!
+	 *  @method  _fnStateSave
+	 *  @param   object oState DataTables state
+	 *  @returns string JSON encoded cookie string for DataTables
+	 *  @private
+	 */
+	"_fnStateSave": function ( oState )
+	{
+		var i, iLen, aCopy, iOrigColumn;
+		var oSettings = this.s.dt;
+		var columns = oSettings.aoColumns;
+
+		oState.ColReorder = [];
+
+		/* Sorting */
+		if ( oState.aaSorting ) {
+			// 1.10.0-
+			for ( i=0 ; i<oState.aaSorting.length ; i++ ) {
+				oState.aaSorting[i][0] = columns[ oState.aaSorting[i][0] ]._ColReorder_iOrigCol;
+			}
+
+			var aSearchCopy = $.extend( true, [], oState.aoSearchCols );
+
+			for ( i=0, iLen=columns.length ; i<iLen ; i++ )
+			{
+				iOrigColumn = columns[i]._ColReorder_iOrigCol;
+
+				/* Column filter */
+				oState.aoSearchCols[ iOrigColumn ] = aSearchCopy[i];
+
+				/* Visibility */
+				oState.abVisCols[ iOrigColumn ] = columns[i].bVisible;
+
+				/* Column reordering */
+				oState.ColReorder.push( iOrigColumn );
+			}
+		}
+		else if ( oState.order ) {
+			// 1.10.1+
+			for ( i=0 ; i<oState.order.length ; i++ ) {
+				oState.order[i][0] = columns[ oState.order[i][0] ]._ColReorder_iOrigCol;
+			}
+
+			var stateColumnsCopy = $.extend( true, [], oState.columns );
+
+			for ( i=0, iLen=columns.length ; i<iLen ; i++ )
+			{
+				iOrigColumn = columns[i]._ColReorder_iOrigCol;
+
+				/* Columns */
+				oState.columns[ iOrigColumn ] = stateColumnsCopy[i];
+
+				/* Column reordering */
+				oState.ColReorder.push( iOrigColumn );
+			}
+		}
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Mouse drop and drag
+	 */
+
+	/**
+	 * Add a mouse down listener to a particluar TH element
+	 *  @method  _fnMouseListener
+	 *  @param   int i Column index
+	 *  @param   element nTh TH element clicked on
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseListener": function ( i, nTh )
+	{
+		var that = this;
+		$(nTh)
+			.on( 'mousedown.ColReorder', function (e) {
+				if ( that.s.enable && e.which === 1 ) {
+					that._fnMouseDown.call( that, e, nTh );
+				}
+			} )
+			.on( 'touchstart.ColReorder', function (e) {
+				if ( that.s.enable ) {
+					that._fnMouseDown.call( that, e, nTh );
+				}
+			} );
+	},
+
+
+	/**
+	 * Mouse down on a TH element in the table header
+	 *  @method  _fnMouseDown
+	 *  @param   event e Mouse event
+	 *  @param   element nTh TH element to be dragged
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseDown": function ( e, nTh )
+	{
+		var that = this;
+
+		/* Store information about the mouse position */
+		var target = $(e.target).closest('th, td');
+		var offset = target.offset();
+		var idx = parseInt( $(nTh).attr('data-column-index'), 10 );
+
+		if ( idx === undefined ) {
+			return;
+		}
+
+		this.s.mouse.startX = this._fnCursorPosition( e, 'pageX' );
+		this.s.mouse.startY = this._fnCursorPosition( e, 'pageY' );
+		this.s.mouse.offsetX = this._fnCursorPosition( e, 'pageX' ) - offset.left;
+		this.s.mouse.offsetY = this._fnCursorPosition( e, 'pageY' ) - offset.top;
+		this.s.mouse.target = this.s.dt.aoColumns[ idx ].nTh;//target[0];
+		this.s.mouse.targetIndex = idx;
+		this.s.mouse.fromIndex = idx;
+
+		this._fnRegions();
+
+		/* Add event handlers to the document */
+		$(document)
+			.on( 'mousemove.ColReorder touchmove.ColReorder', function (e) {
+				that._fnMouseMove.call( that, e );
+			} )
+			.on( 'mouseup.ColReorder touchend.ColReorder', function (e) {
+				that._fnMouseUp.call( that, e );
+			} );
+	},
+
+
+	/**
+	 * Deal with a mouse move event while dragging a node
+	 *  @method  _fnMouseMove
+	 *  @param   event e Mouse event
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseMove": function ( e )
+	{
+		var that = this;
+
+		if ( this.dom.drag === null )
+		{
+			/* Only create the drag element if the mouse has moved a specific distance from the start
+			 * point - this allows the user to make small mouse movements when sorting and not have a
+			 * possibly confusing drag element showing up
+			 */
+			if ( Math.pow(
+				Math.pow(this._fnCursorPosition( e, 'pageX') - this.s.mouse.startX, 2) +
+				Math.pow(this._fnCursorPosition( e, 'pageY') - this.s.mouse.startY, 2), 0.5 ) < 5 )
+			{
+				return;
+			}
+			this._fnCreateDragNode();
+		}
+
+		/* Position the element - we respect where in the element the click occured */
+		this.dom.drag.css( {
+			left: this._fnCursorPosition( e, 'pageX' ) - this.s.mouse.offsetX,
+			top: this._fnCursorPosition( e, 'pageY' ) - this.s.mouse.offsetY
+		} );
+
+		/* Based on the current mouse position, calculate where the insert should go */
+		var target;
+		var lastToIndex = this.s.mouse.toIndex;
+		var cursorXPosiotion = this._fnCursorPosition(e, 'pageX');
+		var targetsPrev = function (i) {
+			while (i >= 0) {
+				i--;
+
+				if (i <= 0) {
+					return null;
+				}
+
+				if (that.s.aoTargets[i+1].x !== that.s.aoTargets[i].x) {
+					return that.s.aoTargets[i];
+				}
+			}
+		};
+		var firstNotHidden = function () {
+			for (var i=0 ; i<that.s.aoTargets.length-1 ; i++) {
+				if (that.s.aoTargets[i].x !== that.s.aoTargets[i+1].x) {
+					return that.s.aoTargets[i];
+				}
+			}
+		};
+		var lastNotHidden = function () {
+			for (var i=that.s.aoTargets.length-1 ; i>0 ; i--) {
+				if (that.s.aoTargets[i].x !== that.s.aoTargets[i-1].x) {
+					return that.s.aoTargets[i];
+				}
+			}
+		};
+
+        for (var i = 1; i < this.s.aoTargets.length; i++) {
+			var prevTarget = targetsPrev(i);
+			if (! prevTarget) {
+				prevTarget = firstNotHidden();
+			}
+
+			var prevTargetMiddle = prevTarget.x + (this.s.aoTargets[i].x - prevTarget.x) / 2;
+
+            if (this._fnIsLtr()) {
+                if (cursorXPosiotion < prevTargetMiddle ) {
+                    target = prevTarget;
+                    break;
+                }
+            }
+            else {
+                if (cursorXPosiotion > prevTargetMiddle) {
+                    target = prevTarget;
+                    break;
+                }
+            }
+		}
+
+        if (target) {
+            this.dom.pointer.css('left', target.x);
+            this.s.mouse.toIndex = target.to;
+        }
+        else {
+			// The insert element wasn't positioned in the array (less than
+			// operator), so we put it at the end
+			this.dom.pointer.css( 'left', lastNotHidden().x );
+			this.s.mouse.toIndex = lastNotHidden().to;
+		}
+
+		// Perform reordering if realtime updating is on and the column has moved
+		if ( this.s.init.bRealtime && lastToIndex !== this.s.mouse.toIndex ) {
+			this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );
+			this.s.mouse.fromIndex = this.s.mouse.toIndex;
+
+			// Not great for performance, but required to keep everything in alignment
+			if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
+			{
+				this.s.dt.oInstance.fnAdjustColumnSizing( false );
+			}
+
+			this._fnRegions();
+		}
+	},
+
+
+	/**
+	 * Finish off the mouse drag and insert the column where needed
+	 *  @method  _fnMouseUp
+	 *  @param   event e Mouse event
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseUp": function ( e )
+	{
+		var that = this;
+
+		$(document).off( '.ColReorder' );
+
+		if ( this.dom.drag !== null )
+		{
+			/* Remove the guide elements */
+			this.dom.drag.remove();
+			this.dom.pointer.remove();
+			this.dom.drag = null;
+			this.dom.pointer = null;
+
+			/* Actually do the reorder */
+			this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex, true );
+			this._fnSetColumnIndexes();
+
+			/* When scrolling we need to recalculate the column sizes to allow for the shift */
+			if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
+			{
+				this.s.dt.oInstance.fnAdjustColumnSizing( false );
+			}
+
+			/* Save the state */
+			this.s.dt.oInstance.oApi._fnSaveState( this.s.dt );
+
+			if ( this.s.reorderCallback !== null )
+			{
+				this.s.reorderCallback.call( this );
+			}
+		}
+	},
+
+
+	/**
+	 * Calculate a cached array with the points of the column inserts, and the
+	 * 'to' points
+	 *  @method  _fnRegions
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnRegions": function ()
+	{
+		var aoColumns = this.s.dt.aoColumns;
+        var isLTR = this._fnIsLtr();
+		this.s.aoTargets.splice(0, this.s.aoTargets.length);
+		var lastBound = $(this.s.dt.nTable).offset().left;
+
+        var aoColumnBounds = [];
+        $.each(aoColumns, function (i, column) {
+            if (column.bVisible && column.nTh.style.display !== 'none') {
+                var nth = $(column.nTh);
+				var bound = nth.offset().left;
+
+                if (isLTR) {
+                    bound += nth.outerWidth();
+                }
+
+                aoColumnBounds.push({
+                    index: i,
+                    bound: bound
+				});
+
+				lastBound = bound;
+			}
+			else {
+                aoColumnBounds.push({
+					index: i,
+					bound: lastBound
+                });
+			}
+		});
+
+        var firstColumn = aoColumnBounds[0];
+		var firstColumnWidth = $(aoColumns[firstColumn.index].nTh).outerWidth();
+
+        this.s.aoTargets.push({
+            to: 0,
+			x: firstColumn.bound - firstColumnWidth
+        });
+
+        for (var i = 0; i < aoColumnBounds.length; i++) {
+            var columnBound = aoColumnBounds[i];
+            var iToPoint = columnBound.index;
+
+            /* For the column / header in question, we want it's position to remain the same if the
+            * position is just to it's immediate left or right, so we only increment the counter for
+            * other columns
+            */
+            if (columnBound.index < this.s.mouse.fromIndex) {
+                iToPoint++;
+            }
+
+            this.s.aoTargets.push({
+				to: iToPoint,
+                x: columnBound.bound
+            });
+        }
+
+		/* Disallow columns for being reordered by drag and drop, counting right to left */
+		if ( this.s.fixedRight !== 0 )
+		{
+			this.s.aoTargets.splice( this.s.aoTargets.length - this.s.fixedRight );
+		}
+
+		/* Disallow columns for being reordered by drag and drop, counting left to right */
+		if ( this.s.fixed !== 0 )
+		{
+			this.s.aoTargets.splice( 0, this.s.fixed );
+		}
+	},
+
+
+	/**
+	 * Copy the TH element that is being drags so the user has the idea that they are actually
+	 * moving it around the page.
+	 *  @method  _fnCreateDragNode
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnCreateDragNode": function ()
+	{
+		var scrolling = this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "";
+
+		var origCell = this.s.dt.aoColumns[ this.s.mouse.targetIndex ].nTh;
+		var origTr = origCell.parentNode;
+		var origThead = origTr.parentNode;
+		var origTable = origThead.parentNode;
+		var cloneCell = $(origCell).clone();
+
+		// This is a slightly odd combination of jQuery and DOM, but it is the
+		// fastest and least resource intensive way I could think of cloning
+		// the table with just a single header cell in it.
+		this.dom.drag = $(origTable.cloneNode(false))
+			.addClass( 'DTCR_clonedTable' )
+			.append(
+				$(origThead.cloneNode(false)).append(
+					$(origTr.cloneNode(false)).append(
+						cloneCell[0]
+					)
+				)
+			)
+			.css( {
+				position: 'absolute',
+				top: 0,
+				left: 0,
+				width: $(origCell).outerWidth(),
+				height: $(origCell).outerHeight()
+			} )
+			.appendTo( 'body' );
+
+		this.dom.pointer = $('<div></div>')
+			.addClass( 'DTCR_pointer' )
+			.css( {
+				position: 'absolute',
+				top: scrolling ?
+					$('div.dataTables_scroll', this.s.dt.nTableWrapper).offset().top :
+					$(this.s.dt.nTable).offset().top,
+				height : scrolling ?
+					$('div.dataTables_scroll', this.s.dt.nTableWrapper).height() :
+					$(this.s.dt.nTable).height()
+			} )
+			.appendTo( 'body' );
+	},
+
+
+	/**
+	 * Add a data attribute to the column headers, so we know the index of
+	 * the row to be reordered. This allows fast detection of the index, and
+	 * for this plug-in to work with FixedHeader which clones the nodes.
+	 *  @private
+	 */
+	"_fnSetColumnIndexes": function ()
+	{
+		$.each( this.s.dt.aoColumns, function (i, column) {
+			$(column.nTh).attr('data-column-index', i);
+		} );
+	},
+
+
+	/**
+	 * Get cursor position regardless of mouse or touch input
+	 * @param  {Event}  e    jQuery Event
+	 * @param  {string} prop Property to get
+	 * @return {number}      Value
+	 */
+	_fnCursorPosition: function ( e, prop ) {
+		if ( e.type.indexOf('touch') !== -1 ) {
+			return e.originalEvent.touches[0][ prop ];
+		}
+		return e[ prop ];
+    },
+
+    _fnIsLtr: function () {
+        return $(this.s.dt.nTable).css('direction') !== "rtl";
+    }
+} );
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Static parameters
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * ColReorder default settings for initialisation
+ *  @namespace
+ *  @static
+ */
+ColReorder.defaults = {
+	/**
+	 * Predefined ordering for the columns that will be applied automatically
+	 * on initialisation. If not specified then the order that the columns are
+	 * found to be in the HTML is the order used.
+	 *  @type array
+	 *  @default null
+	 *  @static
+	 */
+	aiOrder: null,
+
+	/**
+	 * ColReorder enable on initialisation
+	 *  @type boolean
+	 *  @default true
+	 *  @static
+	 */
+	bEnable: true,
+
+	/**
+	 * Redraw the table's column ordering as the end user draws the column
+	 * (`true`) or wait until the mouse is released (`false` - default). Note
+	 * that this will perform a redraw on each reordering, which involves an
+	 * Ajax request each time if you are using server-side processing in
+	 * DataTables.
+	 *  @type boolean
+	 *  @default false
+	 *  @static
+	 */
+	bRealtime: true,
+
+	/**
+	 * Indicate how many columns should be fixed in position (counting from the
+	 * left). This will typically be 1 if used, but can be as high as you like.
+	 *  @type int
+	 *  @default 0
+	 *  @static
+	 */
+	iFixedColumnsLeft: 0,
+
+	/**
+	 * As `iFixedColumnsRight` but counting from the right.
+	 *  @type int
+	 *  @default 0
+	 *  @static
+	 */
+	iFixedColumnsRight: 0,
+
+	/**
+	 * Callback function that is fired when columns are reordered. The `column-
+	 * reorder` event is preferred over this callback
+	 *  @type function():void
+	 *  @default null
+	 *  @static
+	 */
+	fnReorderCallback: null
+};
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * ColReorder version
+ *  @constant  version
+ *  @type      String
+ *  @default   As code
+ */
+ColReorder.version = "1.5.2";
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables interfaces
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+// Expose
+$.fn.dataTable.ColReorder = ColReorder;
+$.fn.DataTable.ColReorder = ColReorder;
+
+
+// Register a new feature with DataTables
+if ( typeof $.fn.dataTable == "function" &&
+     typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+     $.fn.dataTableExt.fnVersionCheck('1.10.8') )
+{
+	$.fn.dataTableExt.aoFeatures.push( {
+		"fnInit": function( settings ) {
+			var table = settings.oInstance;
+
+			if ( ! settings._colReorder ) {
+				var dtInit = settings.oInit;
+				var opts = dtInit.colReorder || dtInit.oColReorder || {};
+
+				new ColReorder( settings, opts );
+			}
+			else {
+				table.oApi._fnLog( settings, 1, "ColReorder attempted to initialise twice. Ignoring second" );
+			}
+
+			return null; /* No node for DataTables to insert */
+		},
+		"cFeature": "R",
+		"sFeature": "ColReorder"
+	} );
+}
+else {
+	alert( "Warning: ColReorder requires DataTables 1.10.8 or greater - www.datatables.net/download");
+}
+
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.colReorder', function (e, settings) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.colReorder;
+	var defaults = DataTable.defaults.colReorder;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, init, defaults );
+
+		if ( init !== false ) {
+			new ColReorder( settings, opts  );
+		}
+	}
+} );
+
+
+// API augmentation
+$.fn.dataTable.Api.register( 'colReorder.reset()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._colReorder.fnReset();
+	} );
+} );
+
+$.fn.dataTable.Api.register( 'colReorder.order()', function ( set, original ) {
+	if ( set ) {
+		return this.iterator( 'table', function ( ctx ) {
+			ctx._colReorder.fnOrder( set, original );
+		} );
+	}
+
+	return this.context.length ?
+		this.context[0]._colReorder.fnOrder() :
+		null;
+} );
+
+$.fn.dataTable.Api.register( 'colReorder.transpose()', function ( idx, dir ) {
+	return this.context.length && this.context[0]._colReorder ?
+		this.context[0]._colReorder.fnTranspose( idx, dir ) :
+		idx;
+} );
+
+$.fn.dataTable.Api.register( 'colReorder.move()', function( from, to, drop, invalidateRows ) {
+	if (this.context.length) {
+		this.context[0]._colReorder.s.dt.oInstance.fnColReorder( from, to, drop, invalidateRows );
+		this.context[0]._colReorder._fnSetColumnIndexes();
+	}
+	return this;
+} );
+
+$.fn.dataTable.Api.register( 'colReorder.enable()', function( flag ) {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._colReorder ) {
+			ctx._colReorder.fnEnable( flag );
+		}
+	} );
+} );
+
+$.fn.dataTable.Api.register( 'colReorder.disable()', function() {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._colReorder ) {
+			ctx._colReorder.fnDisable();
+		}
+	} );
+} );
+
+
+return ColReorder;
+}));
Index: public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,187 @@
+table.dataTable {
+  clear: both;
+  margin-top: 6px !important;
+  margin-bottom: 6px !important;
+  max-width: none !important;
+  border-collapse: separate !important;
+}
+table.dataTable td,
+table.dataTable th {
+  -webkit-box-sizing: content-box;
+  box-sizing: content-box;
+}
+table.dataTable td.dataTables_empty,
+table.dataTable th.dataTables_empty {
+  text-align: center;
+}
+table.dataTable.nowrap th,
+table.dataTable.nowrap td {
+  white-space: nowrap;
+}
+
+div.dataTables_wrapper div.dataTables_length label {
+  font-weight: normal;
+  text-align: left;
+  white-space: nowrap;
+}
+div.dataTables_wrapper div.dataTables_length select {
+  width: 75px;
+  display: inline-block;
+}
+div.dataTables_wrapper div.dataTables_filter {
+  text-align: right;
+}
+div.dataTables_wrapper div.dataTables_filter label {
+  font-weight: normal;
+  white-space: nowrap;
+  text-align: left;
+}
+div.dataTables_wrapper div.dataTables_filter input {
+  margin-left: 0.5em;
+  display: inline-block;
+  width: auto;
+}
+div.dataTables_wrapper div.dataTables_info {
+  padding-top: 8px;
+  white-space: nowrap;
+}
+div.dataTables_wrapper div.dataTables_paginate {
+  margin: 0;
+  white-space: nowrap;
+  text-align: right;
+}
+div.dataTables_wrapper div.dataTables_paginate ul.pagination {
+  margin: 2px 0;
+  white-space: nowrap;
+}
+div.dataTables_wrapper div.dataTables_processing {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 200px;
+  margin-left: -100px;
+  margin-top: -26px;
+  text-align: center;
+  padding: 1em 0;
+}
+
+table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
+table.dataTable thead > tr > td.sorting_asc,
+table.dataTable thead > tr > td.sorting_desc,
+table.dataTable thead > tr > td.sorting {
+  padding-right: 30px;
+}
+table.dataTable thead > tr > th:active,
+table.dataTable thead > tr > td:active {
+  outline: none;
+}
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+  cursor: pointer;
+  position: relative;
+}
+table.dataTable thead .sorting:after,
+table.dataTable thead .sorting_asc:after,
+table.dataTable thead .sorting_desc:after,
+table.dataTable thead .sorting_asc_disabled:after,
+table.dataTable thead .sorting_desc_disabled:after {
+  position: absolute;
+  bottom: 8px;
+  right: 8px;
+  display: block;
+  font-family: 'Glyphicons Halflings';
+  opacity: 0.5;
+}
+table.dataTable thead .sorting:after {
+  opacity: 0.2;
+  content: "\e150";
+  /* sort */
+}
+table.dataTable thead .sorting_asc:after {
+  content: "\e155";
+  /* sort-by-attributes */
+}
+table.dataTable thead .sorting_desc:after {
+  content: "\e156";
+  /* sort-by-attributes-alt */
+}
+table.dataTable thead .sorting_asc_disabled:after,
+table.dataTable thead .sorting_desc_disabled:after {
+  color: #eee;
+}
+
+div.dataTables_scrollHead table.dataTable {
+  margin-bottom: 0 !important;
+}
+
+div.dataTables_scrollBody > table {
+  border-top: none;
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+div.dataTables_scrollBody > table > thead .sorting:after,
+div.dataTables_scrollBody > table > thead .sorting_asc:after,
+div.dataTables_scrollBody > table > thead .sorting_desc:after {
+  display: none;
+}
+div.dataTables_scrollBody > table > tbody > tr:first-child > th,
+div.dataTables_scrollBody > table > tbody > tr:first-child > td {
+  border-top: none;
+}
+
+div.dataTables_scrollFoot > .dataTables_scrollFootInner {
+  box-sizing: content-box;
+}
+div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
+  margin-top: 0 !important;
+  border-top: none;
+}
+
+@media screen and (max-width: 767px) {
+  div.dataTables_wrapper div.dataTables_length,
+  div.dataTables_wrapper div.dataTables_filter,
+  div.dataTables_wrapper div.dataTables_info,
+  div.dataTables_wrapper div.dataTables_paginate {
+    text-align: center;
+  }
+}
+table.dataTable.table-condensed > thead > tr > th {
+  padding-right: 20px;
+}
+table.dataTable.table-condensed .sorting:after,
+table.dataTable.table-condensed .sorting_asc:after,
+table.dataTable.table-condensed .sorting_desc:after {
+  top: 6px;
+  right: 6px;
+}
+
+table.table-bordered.dataTable th,
+table.table-bordered.dataTable td {
+  border-left-width: 0;
+}
+table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
+table.table-bordered.dataTable td:last-child,
+table.table-bordered.dataTable td:last-child {
+  border-right-width: 0;
+}
+table.table-bordered.dataTable tbody th,
+table.table-bordered.dataTable tbody td {
+  border-bottom-width: 0;
+}
+
+div.dataTables_scrollHead table.table-bordered {
+  border-bottom-width: 0;
+}
+
+div.table-responsive > div.dataTables_wrapper > div.row {
+  margin: 0;
+}
+div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child {
+  padding-left: 0;
+}
+div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child {
+  padding-right: 0;
+}
Index: public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody>tr:first-child>th,div.dataTables_scrollBody>table>tbody>tr:first-child>td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0}
Index: public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap4.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,206 @@
+table.dataTable {
+  clear: both;
+  margin-top: 6px !important;
+  margin-bottom: 6px !important;
+  max-width: none !important;
+  border-collapse: separate !important;
+  border-spacing: 0;
+}
+table.dataTable td,
+table.dataTable th {
+  -webkit-box-sizing: content-box;
+  box-sizing: content-box;
+}
+table.dataTable td.dataTables_empty,
+table.dataTable th.dataTables_empty {
+  text-align: center;
+}
+table.dataTable.nowrap th,
+table.dataTable.nowrap td {
+  white-space: nowrap;
+}
+
+div.dataTables_wrapper div.dataTables_length label {
+  font-weight: normal;
+  text-align: left;
+  white-space: nowrap;
+}
+div.dataTables_wrapper div.dataTables_length select {
+  width: auto;
+  display: inline-block;
+}
+div.dataTables_wrapper div.dataTables_filter {
+  text-align: right;
+}
+div.dataTables_wrapper div.dataTables_filter label {
+  font-weight: normal;
+  white-space: nowrap;
+  text-align: left;
+}
+div.dataTables_wrapper div.dataTables_filter input {
+  margin-left: 0.5em;
+  display: inline-block;
+  width: auto;
+}
+div.dataTables_wrapper div.dataTables_info {
+  padding-top: 0.85em;
+  white-space: nowrap;
+}
+div.dataTables_wrapper div.dataTables_paginate {
+  margin: 0;
+  white-space: nowrap;
+  text-align: right;
+}
+div.dataTables_wrapper div.dataTables_paginate ul.pagination {
+  margin: 2px 0;
+  white-space: nowrap;
+  justify-content: flex-end;
+}
+div.dataTables_wrapper div.dataTables_processing {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 200px;
+  margin-left: -100px;
+  margin-top: -26px;
+  text-align: center;
+  padding: 1em 0;
+}
+
+table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
+table.dataTable thead > tr > td.sorting_asc,
+table.dataTable thead > tr > td.sorting_desc,
+table.dataTable thead > tr > td.sorting {
+  padding-right: 30px;
+}
+table.dataTable thead > tr > th:active,
+table.dataTable thead > tr > td:active {
+  outline: none;
+}
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+  cursor: pointer;
+  position: relative;
+}
+table.dataTable thead .sorting:before, table.dataTable thead .sorting:after,
+table.dataTable thead .sorting_asc:before,
+table.dataTable thead .sorting_asc:after,
+table.dataTable thead .sorting_desc:before,
+table.dataTable thead .sorting_desc:after,
+table.dataTable thead .sorting_asc_disabled:before,
+table.dataTable thead .sorting_asc_disabled:after,
+table.dataTable thead .sorting_desc_disabled:before,
+table.dataTable thead .sorting_desc_disabled:after {
+  position: absolute;
+  bottom: 0.9em;
+  display: block;
+  opacity: 0.3;
+}
+table.dataTable thead .sorting:before,
+table.dataTable thead .sorting_asc:before,
+table.dataTable thead .sorting_desc:before,
+table.dataTable thead .sorting_asc_disabled:before,
+table.dataTable thead .sorting_desc_disabled:before {
+  right: 1em;
+  content: "\2191";
+}
+table.dataTable thead .sorting:after,
+table.dataTable thead .sorting_asc:after,
+table.dataTable thead .sorting_desc:after,
+table.dataTable thead .sorting_asc_disabled:after,
+table.dataTable thead .sorting_desc_disabled:after {
+  right: 0.5em;
+  content: "\2193";
+}
+table.dataTable thead .sorting_asc:before,
+table.dataTable thead .sorting_desc:after {
+  opacity: 1;
+}
+table.dataTable thead .sorting_asc_disabled:before,
+table.dataTable thead .sorting_desc_disabled:after {
+  opacity: 0;
+}
+
+div.dataTables_scrollHead table.dataTable {
+  margin-bottom: 0 !important;
+}
+
+div.dataTables_scrollBody table {
+  border-top: none;
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+div.dataTables_scrollBody table thead .sorting:before,
+div.dataTables_scrollBody table thead .sorting_asc:before,
+div.dataTables_scrollBody table thead .sorting_desc:before,
+div.dataTables_scrollBody table thead .sorting:after,
+div.dataTables_scrollBody table thead .sorting_asc:after,
+div.dataTables_scrollBody table thead .sorting_desc:after {
+  display: none;
+}
+div.dataTables_scrollBody table tbody tr:first-child th,
+div.dataTables_scrollBody table tbody tr:first-child td {
+  border-top: none;
+}
+
+div.dataTables_scrollFoot > .dataTables_scrollFootInner {
+  box-sizing: content-box;
+}
+div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
+  margin-top: 0 !important;
+  border-top: none;
+}
+
+@media screen and (max-width: 767px) {
+  div.dataTables_wrapper div.dataTables_length,
+  div.dataTables_wrapper div.dataTables_filter,
+  div.dataTables_wrapper div.dataTables_info,
+  div.dataTables_wrapper div.dataTables_paginate {
+    text-align: center;
+  }
+}
+table.dataTable.table-sm > thead > tr > th {
+  padding-right: 20px;
+}
+table.dataTable.table-sm .sorting:before,
+table.dataTable.table-sm .sorting_asc:before,
+table.dataTable.table-sm .sorting_desc:before {
+  top: 5px;
+  right: 0.85em;
+}
+table.dataTable.table-sm .sorting:after,
+table.dataTable.table-sm .sorting_asc:after,
+table.dataTable.table-sm .sorting_desc:after {
+  top: 5px;
+}
+
+table.table-bordered.dataTable th,
+table.table-bordered.dataTable td {
+  border-left-width: 0;
+}
+table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
+table.table-bordered.dataTable td:last-child,
+table.table-bordered.dataTable td:last-child {
+  border-right-width: 0;
+}
+table.table-bordered.dataTable tbody th,
+table.table-bordered.dataTable tbody td {
+  border-bottom-width: 0;
+}
+
+div.dataTables_scrollHead table.table-bordered {
+  border-bottom-width: 0;
+}
+
+div.table-responsive > div.dataTables_wrapper > div.row {
+  margin: 0;
+}
+div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child {
+  padding-left: 0;
+}
+div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child {
+  padding-right: 0;
+}
Index: public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/dataTables.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:0.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:0.9em;display:block;opacity:0.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{right:0.5em;content:"\2193"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:before,div.dataTables_scrollBody table thead .sorting_asc:before,div.dataTables_scrollBody table thead .sorting_desc:before,div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:0.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0}
Index: public/vendors/dataTable/DataTables-1.10.20/css/dataTables.foundation.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/dataTables.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/dataTables.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,118 @@
+table.dataTable {
+  clear: both;
+  margin: 0.5em 0 !important;
+  max-width: none !important;
+  width: 100%;
+}
+table.dataTable td,
+table.dataTable th {
+  -webkit-box-sizing: content-box;
+  box-sizing: content-box;
+}
+table.dataTable td.dataTables_empty,
+table.dataTable th.dataTables_empty {
+  text-align: center;
+}
+table.dataTable.nowrap th, table.dataTable.nowrap td {
+  white-space: nowrap;
+}
+
+div.dataTables_wrapper {
+  position: relative;
+}
+div.dataTables_wrapper div.dataTables_length label {
+  float: left;
+  text-align: left;
+  margin-bottom: 0;
+}
+div.dataTables_wrapper div.dataTables_length select {
+  width: 75px;
+  margin-bottom: 0;
+}
+div.dataTables_wrapper div.dataTables_filter label {
+  float: right;
+  margin-bottom: 0;
+}
+div.dataTables_wrapper div.dataTables_filter input {
+  display: inline-block !important;
+  width: auto !important;
+  margin-bottom: 0;
+  margin-left: 0.5em;
+}
+div.dataTables_wrapper div.dataTables_info {
+  padding-top: 2px;
+}
+div.dataTables_wrapper div.dataTables_paginate {
+  float: right;
+  margin: 0;
+}
+div.dataTables_wrapper div.dataTables_processing {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 200px;
+  margin-left: -100px;
+  margin-top: -26px;
+  text-align: center;
+  padding: 1rem 0;
+}
+
+table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
+table.dataTable thead > tr > td.sorting_asc,
+table.dataTable thead > tr > td.sorting_desc,
+table.dataTable thead > tr > td.sorting {
+  padding-right: 1.5rem;
+}
+table.dataTable thead > tr > th:active,
+table.dataTable thead > tr > td:active {
+  outline: none;
+}
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+  cursor: pointer;
+}
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+  background-repeat: no-repeat;
+  background-position: center right;
+}
+table.dataTable thead .sorting {
+  background-image: url("../images/sort_both.png");
+}
+table.dataTable thead .sorting_asc {
+  background-image: url("../images/sort_asc.png");
+}
+table.dataTable thead .sorting_desc {
+  background-image: url("../images/sort_desc.png");
+}
+table.dataTable thead .sorting_asc_disabled {
+  background-image: url("../images/sort_asc_disabled.png");
+}
+table.dataTable thead .sorting_desc_disabled {
+  background-image: url("../images/sort_desc_disabled.png");
+}
+
+div.dataTables_scrollHead table {
+  margin-bottom: 0 !important;
+}
+
+div.dataTables_scrollBody table {
+  border-top: none;
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+div.dataTables_scrollBody table tbody tr:first-child th,
+div.dataTables_scrollBody table tbody tr:first-child td {
+  border-top: none;
+}
+
+div.dataTables_scrollFoot table {
+  margin-top: 0 !important;
+  border-top: none;
+}
Index: public/vendors/dataTable/DataTables-1.10.20/css/dataTables.foundation.min.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/dataTables.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/dataTables.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable{clear:both;margin:0.5em 0 !important;max-width:none !important;width:100%}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper{position:relative}div.dataTables_wrapper div.dataTables_length label{float:left;text-align:left;margin-bottom:0}div.dataTables_wrapper div.dataTables_length select{width:75px;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter label{float:right;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter input{display:inline-block !important;width:auto !important;margin-bottom:0;margin-left:0.5em}div.dataTables_wrapper div.dataTables_info{padding-top:2px}div.dataTables_wrapper div.dataTables_paginate{float:right;margin:0}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1rem 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:1.5rem}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}div.dataTables_scrollHead table{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none}
Index: public/vendors/dataTable/DataTables-1.10.20/css/dataTables.jqueryui.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/dataTables.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/dataTables.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,481 @@
+/*
+ * Table styles
+ */
+table.dataTable {
+  width: 100%;
+  margin: 0 auto;
+  clear: both;
+  border-collapse: separate;
+  border-spacing: 0;
+  /*
+   * Header and footer styles
+   */
+  /*
+   * Body styles
+   */
+}
+table.dataTable thead th,
+table.dataTable tfoot th {
+  font-weight: bold;
+}
+table.dataTable thead th,
+table.dataTable thead td {
+  padding: 10px 18px;
+}
+table.dataTable thead th:active,
+table.dataTable thead td:active {
+  outline: none;
+}
+table.dataTable tfoot th,
+table.dataTable tfoot td {
+  padding: 10px 18px 6px 18px;
+}
+table.dataTable tbody tr {
+  background-color: #ffffff;
+}
+table.dataTable tbody tr.selected {
+  background-color: #B0BED9;
+}
+table.dataTable tbody th,
+table.dataTable tbody td {
+  padding: 8px 10px;
+}
+table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
+  border-top: 1px solid #ddd;
+}
+table.dataTable.row-border tbody tr:first-child th,
+table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
+table.dataTable.display tbody tr:first-child td {
+  border-top: none;
+}
+table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
+  border-top: 1px solid #ddd;
+  border-right: 1px solid #ddd;
+}
+table.dataTable.cell-border tbody tr th:first-child,
+table.dataTable.cell-border tbody tr td:first-child {
+  border-left: 1px solid #ddd;
+}
+table.dataTable.cell-border tbody tr:first-child th,
+table.dataTable.cell-border tbody tr:first-child td {
+  border-top: none;
+}
+table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
+  background-color: #f9f9f9;
+}
+table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
+  background-color: #acbad4;
+}
+table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
+  background-color: #f6f6f6;
+}
+table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {
+  background-color: #aab7d1;
+}
+table.dataTable.order-column tbody tr > .sorting_1,
+table.dataTable.order-column tbody tr > .sorting_2,
+table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
+table.dataTable.display tbody tr > .sorting_2,
+table.dataTable.display tbody tr > .sorting_3 {
+  background-color: #fafafa;
+}
+table.dataTable.order-column tbody tr.selected > .sorting_1,
+table.dataTable.order-column tbody tr.selected > .sorting_2,
+table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
+table.dataTable.display tbody tr.selected > .sorting_2,
+table.dataTable.display tbody tr.selected > .sorting_3 {
+  background-color: #acbad5;
+}
+table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
+  background-color: #f1f1f1;
+}
+table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
+  background-color: #f3f3f3;
+}
+table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
+  background-color: whitesmoke;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
+  background-color: #a6b4cd;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
+  background-color: #a8b5cf;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
+  background-color: #a9b7d1;
+}
+table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
+  background-color: #fafafa;
+}
+table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
+  background-color: #fcfcfc;
+}
+table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
+  background-color: #fefefe;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
+  background-color: #acbad5;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
+  background-color: #aebcd6;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
+  background-color: #afbdd8;
+}
+table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
+  background-color: #eaeaea;
+}
+table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
+  background-color: #ececec;
+}
+table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
+  background-color: #efefef;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
+  background-color: #a2aec7;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
+  background-color: #a3b0c9;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
+  background-color: #a5b2cb;
+}
+table.dataTable.no-footer {
+  border-bottom: 1px solid #111;
+}
+table.dataTable.nowrap th, table.dataTable.nowrap td {
+  white-space: nowrap;
+}
+table.dataTable.compact thead th,
+table.dataTable.compact thead td {
+  padding: 4px 17px 4px 4px;
+}
+table.dataTable.compact tfoot th,
+table.dataTable.compact tfoot td {
+  padding: 4px;
+}
+table.dataTable.compact tbody th,
+table.dataTable.compact tbody td {
+  padding: 4px;
+}
+table.dataTable th.dt-left,
+table.dataTable td.dt-left {
+  text-align: left;
+}
+table.dataTable th.dt-center,
+table.dataTable td.dt-center,
+table.dataTable td.dataTables_empty {
+  text-align: center;
+}
+table.dataTable th.dt-right,
+table.dataTable td.dt-right {
+  text-align: right;
+}
+table.dataTable th.dt-justify,
+table.dataTable td.dt-justify {
+  text-align: justify;
+}
+table.dataTable th.dt-nowrap,
+table.dataTable td.dt-nowrap {
+  white-space: nowrap;
+}
+table.dataTable thead th.dt-head-left,
+table.dataTable thead td.dt-head-left,
+table.dataTable tfoot th.dt-head-left,
+table.dataTable tfoot td.dt-head-left {
+  text-align: left;
+}
+table.dataTable thead th.dt-head-center,
+table.dataTable thead td.dt-head-center,
+table.dataTable tfoot th.dt-head-center,
+table.dataTable tfoot td.dt-head-center {
+  text-align: center;
+}
+table.dataTable thead th.dt-head-right,
+table.dataTable thead td.dt-head-right,
+table.dataTable tfoot th.dt-head-right,
+table.dataTable tfoot td.dt-head-right {
+  text-align: right;
+}
+table.dataTable thead th.dt-head-justify,
+table.dataTable thead td.dt-head-justify,
+table.dataTable tfoot th.dt-head-justify,
+table.dataTable tfoot td.dt-head-justify {
+  text-align: justify;
+}
+table.dataTable thead th.dt-head-nowrap,
+table.dataTable thead td.dt-head-nowrap,
+table.dataTable tfoot th.dt-head-nowrap,
+table.dataTable tfoot td.dt-head-nowrap {
+  white-space: nowrap;
+}
+table.dataTable tbody th.dt-body-left,
+table.dataTable tbody td.dt-body-left {
+  text-align: left;
+}
+table.dataTable tbody th.dt-body-center,
+table.dataTable tbody td.dt-body-center {
+  text-align: center;
+}
+table.dataTable tbody th.dt-body-right,
+table.dataTable tbody td.dt-body-right {
+  text-align: right;
+}
+table.dataTable tbody th.dt-body-justify,
+table.dataTable tbody td.dt-body-justify {
+  text-align: justify;
+}
+table.dataTable tbody th.dt-body-nowrap,
+table.dataTable tbody td.dt-body-nowrap {
+  white-space: nowrap;
+}
+
+table.dataTable,
+table.dataTable th,
+table.dataTable td {
+  box-sizing: content-box;
+}
+
+/*
+ * Control feature layout
+ */
+.dataTables_wrapper {
+  position: relative;
+  clear: both;
+  *zoom: 1;
+  zoom: 1;
+}
+.dataTables_wrapper .dataTables_length {
+  float: left;
+}
+.dataTables_wrapper .dataTables_filter {
+  float: right;
+  text-align: right;
+}
+.dataTables_wrapper .dataTables_filter input {
+  margin-left: 0.5em;
+}
+.dataTables_wrapper .dataTables_info {
+  clear: both;
+  float: left;
+  padding-top: 0.755em;
+}
+.dataTables_wrapper .dataTables_paginate {
+  float: right;
+  text-align: right;
+  padding-top: 0.25em;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button {
+  box-sizing: border-box;
+  display: inline-block;
+  min-width: 1.5em;
+  padding: 0.5em 1em;
+  margin-left: 2px;
+  text-align: center;
+  text-decoration: none !important;
+  cursor: pointer;
+  *cursor: hand;
+  color: #333 !important;
+  border: 1px solid transparent;
+  border-radius: 2px;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
+  color: #333 !important;
+  border: 1px solid #979797;
+  background-color: white;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to bottom, white 0%, #dcdcdc 100%);
+  /* W3C */
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
+  cursor: default;
+  color: #666 !important;
+  border: 1px solid transparent;
+  background: transparent;
+  box-shadow: none;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
+  color: white !important;
+  border: 1px solid #111;
+  background-color: #585858;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(top, #585858 0%, #111 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(top, #585858 0%, #111 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(top, #585858 0%, #111 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to bottom, #585858 0%, #111 100%);
+  /* W3C */
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button:active {
+  outline: none;
+  background-color: #2b2b2b;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);
+  /* W3C */
+  box-shadow: inset 0 0 3px #111;
+}
+.dataTables_wrapper .dataTables_paginate .ellipsis {
+  padding: 0 1em;
+}
+.dataTables_wrapper .dataTables_processing {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 100%;
+  height: 40px;
+  margin-left: -50%;
+  margin-top: -25px;
+  padding-top: 20px;
+  text-align: center;
+  font-size: 1.2em;
+  background-color: white;
+  background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
+  background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+}
+.dataTables_wrapper .dataTables_length,
+.dataTables_wrapper .dataTables_filter,
+.dataTables_wrapper .dataTables_info,
+.dataTables_wrapper .dataTables_processing,
+.dataTables_wrapper .dataTables_paginate {
+  color: #333;
+}
+.dataTables_wrapper .dataTables_scroll {
+  clear: both;
+}
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
+  *margin-top: -1px;
+  -webkit-overflow-scrolling: touch;
+}
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {
+  vertical-align: middle;
+}
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {
+  height: 0;
+  overflow: hidden;
+  margin: 0 !important;
+  padding: 0 !important;
+}
+.dataTables_wrapper.no-footer .dataTables_scrollBody {
+  border-bottom: 1px solid #111;
+}
+.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,
+.dataTables_wrapper.no-footer div.dataTables_scrollBody > table {
+  border-bottom: none;
+}
+.dataTables_wrapper:after {
+  visibility: hidden;
+  display: block;
+  content: "";
+  clear: both;
+  height: 0;
+}
+
+@media screen and (max-width: 767px) {
+  .dataTables_wrapper .dataTables_info,
+  .dataTables_wrapper .dataTables_paginate {
+    float: none;
+    text-align: center;
+  }
+  .dataTables_wrapper .dataTables_paginate {
+    margin-top: 0.5em;
+  }
+}
+@media screen and (max-width: 640px) {
+  .dataTables_wrapper .dataTables_length,
+  .dataTables_wrapper .dataTables_filter {
+    float: none;
+    text-align: center;
+  }
+  .dataTables_wrapper .dataTables_filter {
+    margin-top: 0.5em;
+  }
+}
+table.dataTable thead th div.DataTables_sort_wrapper {
+  position: relative;
+}
+table.dataTable thead th div.DataTables_sort_wrapper span {
+  position: absolute;
+  top: 50%;
+  margin-top: -8px;
+  right: -18px;
+}
+table.dataTable thead th.ui-state-default,
+table.dataTable tfoot th.ui-state-default {
+  border-left-width: 0;
+}
+table.dataTable thead th.ui-state-default:first-child,
+table.dataTable tfoot th.ui-state-default:first-child {
+  border-left-width: 1px;
+}
+
+/*
+ * Control feature layout
+ */
+.dataTables_wrapper .dataTables_paginate .fg-button {
+  box-sizing: border-box;
+  display: inline-block;
+  min-width: 1.5em;
+  padding: 0.5em;
+  margin-left: 2px;
+  text-align: center;
+  text-decoration: none !important;
+  cursor: pointer;
+  *cursor: hand;
+  border: 1px solid transparent;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:active {
+  outline: none;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:first-child {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:last-child {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.dataTables_wrapper .ui-widget-header {
+  font-weight: normal;
+}
+.dataTables_wrapper .ui-toolbar {
+  padding: 8px;
+}
+.dataTables_wrapper.no-footer .dataTables_scrollBody {
+  border-bottom: none;
+}
+.dataTables_wrapper .dataTables_length,
+.dataTables_wrapper .dataTables_filter,
+.dataTables_wrapper .dataTables_info,
+.dataTables_wrapper .dataTables_processing,
+.dataTables_wrapper .dataTables_paginate {
+  color: inherit;
+}
Index: public/vendors/dataTable/DataTables-1.10.20/css/dataTables.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/dataTables.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/dataTables.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}table.dataTable thead th div.DataTables_sort_wrapper{position:relative}table.dataTable thead th div.DataTables_sort_wrapper span{position:absolute;top:50%;margin-top:-8px;right:-18px}table.dataTable thead th.ui-state-default,table.dataTable tfoot th.ui-state-default{border-left-width:0}table.dataTable thead th.ui-state-default:first-child,table.dataTable tfoot th.ui-state-default:first-child{border-left-width:1px}.dataTables_wrapper .dataTables_paginate .fg-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;border:1px solid transparent}.dataTables_wrapper .dataTables_paginate .fg-button:active{outline:none}.dataTables_wrapper .dataTables_paginate .fg-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.dataTables_wrapper .dataTables_paginate .fg-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dataTables_wrapper .ui-widget-header{font-weight:normal}.dataTables_wrapper .ui-toolbar{padding:8px}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:inherit}
Index: public/vendors/dataTable/DataTables-1.10.20/css/dataTables.semanticui.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/dataTables.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/dataTables.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,102 @@
+/*
+ * Styling for DataTables with Semantic UI
+ */
+table.dataTable.table {
+  margin: 0;
+}
+table.dataTable.table thead th,
+table.dataTable.table thead td {
+  position: relative;
+}
+table.dataTable.table thead th.sorting, table.dataTable.table thead th.sorting_asc, table.dataTable.table thead th.sorting_desc,
+table.dataTable.table thead td.sorting,
+table.dataTable.table thead td.sorting_asc,
+table.dataTable.table thead td.sorting_desc {
+  padding-right: 20px;
+}
+table.dataTable.table thead th.sorting:after, table.dataTable.table thead th.sorting_asc:after, table.dataTable.table thead th.sorting_desc:after,
+table.dataTable.table thead td.sorting:after,
+table.dataTable.table thead td.sorting_asc:after,
+table.dataTable.table thead td.sorting_desc:after {
+  position: absolute;
+  top: 12px;
+  right: 8px;
+  display: block;
+  font-family: Icons;
+}
+table.dataTable.table thead th.sorting:after,
+table.dataTable.table thead td.sorting:after {
+  content: "\f0dc";
+  color: #ddd;
+  font-size: 0.8em;
+}
+table.dataTable.table thead th.sorting_asc:after,
+table.dataTable.table thead td.sorting_asc:after {
+  content: "\f0de";
+}
+table.dataTable.table thead th.sorting_desc:after,
+table.dataTable.table thead td.sorting_desc:after {
+  content: "\f0dd";
+}
+table.dataTable.table td,
+table.dataTable.table th {
+  -webkit-box-sizing: content-box;
+  box-sizing: content-box;
+}
+table.dataTable.table td.dataTables_empty,
+table.dataTable.table th.dataTables_empty {
+  text-align: center;
+}
+table.dataTable.table.nowrap th,
+table.dataTable.table.nowrap td {
+  white-space: nowrap;
+}
+
+div.dataTables_wrapper div.dataTables_length select {
+  vertical-align: middle;
+  min-height: 2.7142em;
+}
+div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown {
+  min-width: 0;
+}
+div.dataTables_wrapper div.dataTables_filter span.input {
+  margin-left: 0.5em;
+}
+div.dataTables_wrapper div.dataTables_info {
+  padding-top: 13px;
+  white-space: nowrap;
+}
+div.dataTables_wrapper div.dataTables_processing {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 200px;
+  margin-left: -100px;
+  text-align: center;
+}
+div.dataTables_wrapper div.row.dt-table {
+  padding: 0;
+}
+div.dataTables_wrapper div.dataTables_scrollHead table.dataTable {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+  border-bottom: none;
+}
+div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after,
+div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after,
+div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after {
+  display: none;
+}
+div.dataTables_wrapper div.dataTables_scrollBody table.dataTable {
+  border-radius: 0;
+  border-top: none;
+  border-bottom-width: 0;
+}
+div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer {
+  border-bottom-width: 1px;
+}
+div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable {
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-top: none;
+}
Index: public/vendors/dataTable/DataTables-1.10.20/css/dataTables.semanticui.min.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/dataTables.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/dataTables.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable.table{margin:0}table.dataTable.table thead th,table.dataTable.table thead td{position:relative}table.dataTable.table thead th.sorting,table.dataTable.table thead th.sorting_asc,table.dataTable.table thead th.sorting_desc,table.dataTable.table thead td.sorting,table.dataTable.table thead td.sorting_asc,table.dataTable.table thead td.sorting_desc{padding-right:20px}table.dataTable.table thead th.sorting:after,table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting:after,table.dataTable.table thead td.sorting_asc:after,table.dataTable.table thead td.sorting_desc:after{position:absolute;top:12px;right:8px;display:block;font-family:Icons}table.dataTable.table thead th.sorting:after,table.dataTable.table thead td.sorting:after{content:"\f0dc";color:#ddd;font-size:0.8em}table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead td.sorting_asc:after{content:"\f0de"}table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting_desc:after{content:"\f0dd"}table.dataTable.table td,table.dataTable.table th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable.table td.dataTables_empty,table.dataTable.table th.dataTables_empty{text-align:center}table.dataTable.table.nowrap th,table.dataTable.table.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{vertical-align:middle;min-height:2.7142em}div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown{min-width:0}div.dataTables_wrapper div.dataTables_filter span.input{margin-left:0.5em}div.dataTables_wrapper div.dataTables_info{padding-top:13px;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;text-align:center}div.dataTables_wrapper div.row.dt-table{padding:0}div.dataTables_wrapper div.dataTables_scrollHead table.dataTable{border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:none}div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after{display:none}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable{border-radius:0;border-top:none;border-bottom-width:0}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer{border-bottom-width:1px}div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable{border-top-right-radius:0;border-top-left-radius:0;border-top:none}
Index: public/vendors/dataTable/DataTables-1.10.20/css/jquery.dataTables.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/jquery.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/jquery.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,448 @@
+/*
+ * Table styles
+ */
+table.dataTable {
+  width: 100%;
+  margin: 0 auto;
+  clear: both;
+  border-collapse: separate;
+  border-spacing: 0;
+  /*
+   * Header and footer styles
+   */
+  /*
+   * Body styles
+   */
+}
+table.dataTable thead th,
+table.dataTable tfoot th {
+  font-weight: bold;
+}
+table.dataTable thead th,
+table.dataTable thead td {
+  padding: 10px 18px;
+  border-bottom: 1px solid #111;
+}
+table.dataTable thead th:active,
+table.dataTable thead td:active {
+  outline: none;
+}
+table.dataTable tfoot th,
+table.dataTable tfoot td {
+  padding: 10px 18px 6px 18px;
+  border-top: 1px solid #111;
+}
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+  cursor: pointer;
+  *cursor: hand;
+  background-repeat: no-repeat;
+  background-position: center right;
+}
+table.dataTable thead .sorting {
+  background-image: url("../images/sort_both.png");
+}
+table.dataTable thead .sorting_asc {
+  background-image: url("../images/sort_asc.png");
+}
+table.dataTable thead .sorting_desc {
+  background-image: url("../images/sort_desc.png");
+}
+table.dataTable thead .sorting_asc_disabled {
+  background-image: url("../images/sort_asc_disabled.png");
+}
+table.dataTable thead .sorting_desc_disabled {
+  background-image: url("../images/sort_desc_disabled.png");
+}
+table.dataTable tbody tr {
+  background-color: #ffffff;
+}
+table.dataTable tbody tr.selected {
+  background-color: #B0BED9;
+}
+table.dataTable tbody th,
+table.dataTable tbody td {
+  padding: 8px 10px;
+}
+table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
+  border-top: 1px solid #ddd;
+}
+table.dataTable.row-border tbody tr:first-child th,
+table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
+table.dataTable.display tbody tr:first-child td {
+  border-top: none;
+}
+table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
+  border-top: 1px solid #ddd;
+  border-right: 1px solid #ddd;
+}
+table.dataTable.cell-border tbody tr th:first-child,
+table.dataTable.cell-border tbody tr td:first-child {
+  border-left: 1px solid #ddd;
+}
+table.dataTable.cell-border tbody tr:first-child th,
+table.dataTable.cell-border tbody tr:first-child td {
+  border-top: none;
+}
+table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
+  background-color: #f9f9f9;
+}
+table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
+  background-color: #acbad4;
+}
+table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
+  background-color: #f6f6f6;
+}
+table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {
+  background-color: #aab7d1;
+}
+table.dataTable.order-column tbody tr > .sorting_1,
+table.dataTable.order-column tbody tr > .sorting_2,
+table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
+table.dataTable.display tbody tr > .sorting_2,
+table.dataTable.display tbody tr > .sorting_3 {
+  background-color: #fafafa;
+}
+table.dataTable.order-column tbody tr.selected > .sorting_1,
+table.dataTable.order-column tbody tr.selected > .sorting_2,
+table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
+table.dataTable.display tbody tr.selected > .sorting_2,
+table.dataTable.display tbody tr.selected > .sorting_3 {
+  background-color: #acbad5;
+}
+table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
+  background-color: #f1f1f1;
+}
+table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
+  background-color: #f3f3f3;
+}
+table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
+  background-color: whitesmoke;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
+  background-color: #a6b4cd;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
+  background-color: #a8b5cf;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
+  background-color: #a9b7d1;
+}
+table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
+  background-color: #fafafa;
+}
+table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
+  background-color: #fcfcfc;
+}
+table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
+  background-color: #fefefe;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
+  background-color: #acbad5;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
+  background-color: #aebcd6;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
+  background-color: #afbdd8;
+}
+table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
+  background-color: #eaeaea;
+}
+table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
+  background-color: #ececec;
+}
+table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
+  background-color: #efefef;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
+  background-color: #a2aec7;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
+  background-color: #a3b0c9;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
+  background-color: #a5b2cb;
+}
+table.dataTable.no-footer {
+  border-bottom: 1px solid #111;
+}
+table.dataTable.nowrap th, table.dataTable.nowrap td {
+  white-space: nowrap;
+}
+table.dataTable.compact thead th,
+table.dataTable.compact thead td {
+  padding: 4px 17px 4px 4px;
+}
+table.dataTable.compact tfoot th,
+table.dataTable.compact tfoot td {
+  padding: 4px;
+}
+table.dataTable.compact tbody th,
+table.dataTable.compact tbody td {
+  padding: 4px;
+}
+table.dataTable th.dt-left,
+table.dataTable td.dt-left {
+  text-align: left;
+}
+table.dataTable th.dt-center,
+table.dataTable td.dt-center,
+table.dataTable td.dataTables_empty {
+  text-align: center;
+}
+table.dataTable th.dt-right,
+table.dataTable td.dt-right {
+  text-align: right;
+}
+table.dataTable th.dt-justify,
+table.dataTable td.dt-justify {
+  text-align: justify;
+}
+table.dataTable th.dt-nowrap,
+table.dataTable td.dt-nowrap {
+  white-space: nowrap;
+}
+table.dataTable thead th.dt-head-left,
+table.dataTable thead td.dt-head-left,
+table.dataTable tfoot th.dt-head-left,
+table.dataTable tfoot td.dt-head-left {
+  text-align: left;
+}
+table.dataTable thead th.dt-head-center,
+table.dataTable thead td.dt-head-center,
+table.dataTable tfoot th.dt-head-center,
+table.dataTable tfoot td.dt-head-center {
+  text-align: center;
+}
+table.dataTable thead th.dt-head-right,
+table.dataTable thead td.dt-head-right,
+table.dataTable tfoot th.dt-head-right,
+table.dataTable tfoot td.dt-head-right {
+  text-align: right;
+}
+table.dataTable thead th.dt-head-justify,
+table.dataTable thead td.dt-head-justify,
+table.dataTable tfoot th.dt-head-justify,
+table.dataTable tfoot td.dt-head-justify {
+  text-align: justify;
+}
+table.dataTable thead th.dt-head-nowrap,
+table.dataTable thead td.dt-head-nowrap,
+table.dataTable tfoot th.dt-head-nowrap,
+table.dataTable tfoot td.dt-head-nowrap {
+  white-space: nowrap;
+}
+table.dataTable tbody th.dt-body-left,
+table.dataTable tbody td.dt-body-left {
+  text-align: left;
+}
+table.dataTable tbody th.dt-body-center,
+table.dataTable tbody td.dt-body-center {
+  text-align: center;
+}
+table.dataTable tbody th.dt-body-right,
+table.dataTable tbody td.dt-body-right {
+  text-align: right;
+}
+table.dataTable tbody th.dt-body-justify,
+table.dataTable tbody td.dt-body-justify {
+  text-align: justify;
+}
+table.dataTable tbody th.dt-body-nowrap,
+table.dataTable tbody td.dt-body-nowrap {
+  white-space: nowrap;
+}
+
+table.dataTable,
+table.dataTable th,
+table.dataTable td {
+  box-sizing: content-box;
+}
+
+/*
+ * Control feature layout
+ */
+.dataTables_wrapper {
+  position: relative;
+  clear: both;
+  *zoom: 1;
+  zoom: 1;
+}
+.dataTables_wrapper .dataTables_length {
+  float: left;
+}
+.dataTables_wrapper .dataTables_filter {
+  float: right;
+  text-align: right;
+}
+.dataTables_wrapper .dataTables_filter input {
+  margin-left: 0.5em;
+}
+.dataTables_wrapper .dataTables_info {
+  clear: both;
+  float: left;
+  padding-top: 0.755em;
+}
+.dataTables_wrapper .dataTables_paginate {
+  float: right;
+  text-align: right;
+  padding-top: 0.25em;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button {
+  box-sizing: border-box;
+  display: inline-block;
+  min-width: 1.5em;
+  padding: 0.5em 1em;
+  margin-left: 2px;
+  text-align: center;
+  text-decoration: none !important;
+  cursor: pointer;
+  *cursor: hand;
+  color: #333 !important;
+  border: 1px solid transparent;
+  border-radius: 2px;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
+  color: #333 !important;
+  border: 1px solid #979797;
+  background-color: white;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to bottom, white 0%, #dcdcdc 100%);
+  /* W3C */
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
+  cursor: default;
+  color: #666 !important;
+  border: 1px solid transparent;
+  background: transparent;
+  box-shadow: none;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
+  color: white !important;
+  border: 1px solid #111;
+  background-color: #585858;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(top, #585858 0%, #111 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(top, #585858 0%, #111 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(top, #585858 0%, #111 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to bottom, #585858 0%, #111 100%);
+  /* W3C */
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button:active {
+  outline: none;
+  background-color: #2b2b2b;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);
+  /* W3C */
+  box-shadow: inset 0 0 3px #111;
+}
+.dataTables_wrapper .dataTables_paginate .ellipsis {
+  padding: 0 1em;
+}
+.dataTables_wrapper .dataTables_processing {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 100%;
+  height: 40px;
+  margin-left: -50%;
+  margin-top: -25px;
+  padding-top: 20px;
+  text-align: center;
+  font-size: 1.2em;
+  background-color: white;
+  background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
+  background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+}
+.dataTables_wrapper .dataTables_length,
+.dataTables_wrapper .dataTables_filter,
+.dataTables_wrapper .dataTables_info,
+.dataTables_wrapper .dataTables_processing,
+.dataTables_wrapper .dataTables_paginate {
+  color: #333;
+}
+.dataTables_wrapper .dataTables_scroll {
+  clear: both;
+}
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
+  *margin-top: -1px;
+  -webkit-overflow-scrolling: touch;
+}
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {
+  vertical-align: middle;
+}
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {
+  height: 0;
+  overflow: hidden;
+  margin: 0 !important;
+  padding: 0 !important;
+}
+.dataTables_wrapper.no-footer .dataTables_scrollBody {
+  border-bottom: 1px solid #111;
+}
+.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,
+.dataTables_wrapper.no-footer div.dataTables_scrollBody > table {
+  border-bottom: none;
+}
+.dataTables_wrapper:after {
+  visibility: hidden;
+  display: block;
+  content: "";
+  clear: both;
+  height: 0;
+}
+
+@media screen and (max-width: 767px) {
+  .dataTables_wrapper .dataTables_info,
+  .dataTables_wrapper .dataTables_paginate {
+    float: none;
+    text-align: center;
+  }
+  .dataTables_wrapper .dataTables_paginate {
+    margin-top: 0.5em;
+  }
+}
+@media screen and (max-width: 640px) {
+  .dataTables_wrapper .dataTables_length,
+  .dataTables_wrapper .dataTables_filter {
+    float: none;
+    text-align: center;
+  }
+  .dataTables_wrapper .dataTables_filter {
+    margin-top: 0.5em;
+  }
+}
Index: public/vendors/dataTable/DataTables-1.10.20/css/jquery.dataTables.min.css
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/css/jquery.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/css/jquery.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}
Index: public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,182 @@
+/*! DataTables Bootstrap 3 integration
+ * ©2011-2015 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
+ * DataTables 1.10 or newer.
+ *
+ * This file sets the defaults and adds options to DataTables to style its
+ * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
+ * for further information.
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				// Require DataTables, which attaches to jQuery, including
+				// jQuery if needed and have a $ property so we can access the
+				// jQuery object that is used
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/* Set the defaults for DataTables initialisation */
+$.extend( true, DataTable.defaults, {
+	dom:
+		"<'row'<'col-sm-6'l><'col-sm-6'f>>" +
+		"<'row'<'col-sm-12'tr>>" +
+		"<'row'<'col-sm-5'i><'col-sm-7'p>>",
+	renderer: 'bootstrap'
+} );
+
+
+/* Default class modification */
+$.extend( DataTable.ext.classes, {
+	sWrapper:      "dataTables_wrapper form-inline dt-bootstrap",
+	sFilterInput:  "form-control input-sm",
+	sLengthSelect: "form-control input-sm",
+	sProcessing:   "dataTables_processing panel panel-default"
+} );
+
+
+/* Bootstrap paging button renderer */
+DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
+	var api     = new DataTable.Api( settings );
+	var classes = settings.oClasses;
+	var lang    = settings.oLanguage.oPaginate;
+	var aria = settings.oLanguage.oAria.paginate || {};
+	var btnDisplay, btnClass, counter=0;
+
+	var attach = function( container, buttons ) {
+		var i, ien, node, button;
+		var clickHandler = function ( e ) {
+			e.preventDefault();
+			if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
+				api.page( e.data.action ).draw( 'page' );
+			}
+		};
+
+		for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+			button = buttons[i];
+
+			if ( $.isArray( button ) ) {
+				attach( container, button );
+			}
+			else {
+				btnDisplay = '';
+				btnClass = '';
+
+				switch ( button ) {
+					case 'ellipsis':
+						btnDisplay = '&#x2026;';
+						btnClass = 'disabled';
+						break;
+
+					case 'first':
+						btnDisplay = lang.sFirst;
+						btnClass = button + (page > 0 ?
+							'' : ' disabled');
+						break;
+
+					case 'previous':
+						btnDisplay = lang.sPrevious;
+						btnClass = button + (page > 0 ?
+							'' : ' disabled');
+						break;
+
+					case 'next':
+						btnDisplay = lang.sNext;
+						btnClass = button + (page < pages-1 ?
+							'' : ' disabled');
+						break;
+
+					case 'last':
+						btnDisplay = lang.sLast;
+						btnClass = button + (page < pages-1 ?
+							'' : ' disabled');
+						break;
+
+					default:
+						btnDisplay = button + 1;
+						btnClass = page === button ?
+							'active' : '';
+						break;
+				}
+
+				if ( btnDisplay ) {
+					node = $('<li>', {
+							'class': classes.sPageButton+' '+btnClass,
+							'id': idx === 0 && typeof button === 'string' ?
+								settings.sTableId +'_'+ button :
+								null
+						} )
+						.append( $('<a>', {
+								'href': '#',
+								'aria-controls': settings.sTableId,
+								'aria-label': aria[ button ],
+								'data-dt-idx': counter,
+								'tabindex': settings.iTabIndex
+							} )
+							.html( btnDisplay )
+						)
+						.appendTo( container );
+
+					settings.oApi._fnBindAction(
+						node, {action: button}, clickHandler
+					);
+
+					counter++;
+				}
+			}
+		}
+	};
+
+	// IE9 throws an 'unknown error' if document.activeElement is used
+	// inside an iframe or frame. 
+	var activeEl;
+
+	try {
+		// Because this approach is destroying and recreating the paging
+		// elements, focus is lost on the select button which is bad for
+		// accessibility. So we want to restore focus once the draw has
+		// completed
+		activeEl = $(host).find(document.activeElement).data('dt-idx');
+	}
+	catch (e) {}
+
+	attach(
+		$(host).empty().html('<ul class="pagination"/>').children('ul'),
+		buttons
+	);
+
+	if ( activeEl !== undefined ) {
+		$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
+	}
+};
+
+
+return DataTable;
+}));
Index: public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+/*!
+ DataTables Bootstrap 3 integration
+ ©2011-2015 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<e;d++){var k=a[d];if(b.call(c,k,d,a))return{i:d,v:k}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(a,b,c,e){if(b){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];d in c||(c[d]={});c=c[d]}a=a[a.length-1];e=c[a];b=b(e);b!=e&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},"es6","es3");
+(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,e){var d=a.fn.dataTable;a.extend(!0,d.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"});a.extend(d.ext.classes,
+{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sProcessing:"dataTables_processing panel panel-default"});d.ext.renderer.pageButton.bootstrap=function(b,l,v,w,m,r){var k=new d.Api(b),x=b.oClasses,n=b.oLanguage.oPaginate,y=b.oLanguage.oAria.paginate||{},g,h,t=0,u=function(c,d){var e,l=function(b){b.preventDefault();a(b.currentTarget).hasClass("disabled")||k.page()==b.data.action||k.page(b.data.action).draw("page")};
+var q=0;for(e=d.length;q<e;q++){var f=d[q];if(a.isArray(f))u(c,f);else{h=g="";switch(f){case "ellipsis":g="&#x2026;";h="disabled";break;case "first":g=n.sFirst;h=f+(0<m?"":" disabled");break;case "previous":g=n.sPrevious;h=f+(0<m?"":" disabled");break;case "next":g=n.sNext;h=f+(m<r-1?"":" disabled");break;case "last":g=n.sLast;h=f+(m<r-1?"":" disabled");break;default:g=f+1,h=m===f?"active":""}if(g){var p=a("<li>",{"class":x.sPageButton+" "+h,id:0===v&&"string"===typeof f?b.sTableId+"_"+f:null}).append(a("<a>",
+{href:"#","aria-controls":b.sTableId,"aria-label":y[f],"data-dt-idx":t,tabindex:b.iTabIndex}).html(g)).appendTo(c);b.oApi._fnBindAction(p,{action:f},l);t++}}}};try{var p=a(l).find(c.activeElement).data("dt-idx")}catch(z){}u(a(l).empty().html('<ul class="pagination"/>').children("ul"),w);p!==e&&a(l).find("[data-dt-idx="+p+"]").focus()};return d});
Index: public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap4.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,184 @@
+/*! DataTables Bootstrap 4 integration
+ * ©2011-2017 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * DataTables integration for Bootstrap 4. This requires Bootstrap 4 and
+ * DataTables 1.10 or newer.
+ *
+ * This file sets the defaults and adds options to DataTables to style its
+ * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
+ * for further information.
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				// Require DataTables, which attaches to jQuery, including
+				// jQuery if needed and have a $ property so we can access the
+				// jQuery object that is used
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/* Set the defaults for DataTables initialisation */
+$.extend( true, DataTable.defaults, {
+	dom:
+		"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" +
+		"<'row'<'col-sm-12'tr>>" +
+		"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
+	renderer: 'bootstrap'
+} );
+
+
+/* Default class modification */
+$.extend( DataTable.ext.classes, {
+	sWrapper:      "dataTables_wrapper dt-bootstrap4",
+	sFilterInput:  "form-control form-control-sm",
+	sLengthSelect: "custom-select custom-select-sm form-control form-control-sm",
+	sProcessing:   "dataTables_processing card",
+	sPageButton:   "paginate_button page-item"
+} );
+
+
+/* Bootstrap paging button renderer */
+DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
+	var api     = new DataTable.Api( settings );
+	var classes = settings.oClasses;
+	var lang    = settings.oLanguage.oPaginate;
+	var aria = settings.oLanguage.oAria.paginate || {};
+	var btnDisplay, btnClass, counter=0;
+
+	var attach = function( container, buttons ) {
+		var i, ien, node, button;
+		var clickHandler = function ( e ) {
+			e.preventDefault();
+			if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
+				api.page( e.data.action ).draw( 'page' );
+			}
+		};
+
+		for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+			button = buttons[i];
+
+			if ( $.isArray( button ) ) {
+				attach( container, button );
+			}
+			else {
+				btnDisplay = '';
+				btnClass = '';
+
+				switch ( button ) {
+					case 'ellipsis':
+						btnDisplay = '&#x2026;';
+						btnClass = 'disabled';
+						break;
+
+					case 'first':
+						btnDisplay = lang.sFirst;
+						btnClass = button + (page > 0 ?
+							'' : ' disabled');
+						break;
+
+					case 'previous':
+						btnDisplay = lang.sPrevious;
+						btnClass = button + (page > 0 ?
+							'' : ' disabled');
+						break;
+
+					case 'next':
+						btnDisplay = lang.sNext;
+						btnClass = button + (page < pages-1 ?
+							'' : ' disabled');
+						break;
+
+					case 'last':
+						btnDisplay = lang.sLast;
+						btnClass = button + (page < pages-1 ?
+							'' : ' disabled');
+						break;
+
+					default:
+						btnDisplay = button + 1;
+						btnClass = page === button ?
+							'active' : '';
+						break;
+				}
+
+				if ( btnDisplay ) {
+					node = $('<li>', {
+							'class': classes.sPageButton+' '+btnClass,
+							'id': idx === 0 && typeof button === 'string' ?
+								settings.sTableId +'_'+ button :
+								null
+						} )
+						.append( $('<a>', {
+								'href': '#',
+								'aria-controls': settings.sTableId,
+								'aria-label': aria[ button ],
+								'data-dt-idx': counter,
+								'tabindex': settings.iTabIndex,
+								'class': 'page-link'
+							} )
+							.html( btnDisplay )
+						)
+						.appendTo( container );
+
+					settings.oApi._fnBindAction(
+						node, {action: button}, clickHandler
+					);
+
+					counter++;
+				}
+			}
+		}
+	};
+
+	// IE9 throws an 'unknown error' if document.activeElement is used
+	// inside an iframe or frame. 
+	var activeEl;
+
+	try {
+		// Because this approach is destroying and recreating the paging
+		// elements, focus is lost on the select button which is bad for
+		// accessibility. So we want to restore focus once the draw has
+		// completed
+		activeEl = $(host).find(document.activeElement).data('dt-idx');
+	}
+	catch (e) {}
+
+	attach(
+		$(host).empty().html('<ul class="pagination"/>').children('ul'),
+		buttons
+	);
+
+	if ( activeEl !== undefined ) {
+		$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
+	}
+};
+
+
+return DataTable;
+}));
Index: public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/dataTables.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+/*!
+ DataTables Bootstrap 4 integration
+ ©2011-2017 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<e;d++){var k=a[d];if(b.call(c,k,d,a))return{i:d,v:k}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(a,b,c,e){if(b){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];d in c||(c[d]={});c=c[d]}a=a[a.length-1];e=c[a];b=b(e);b!=e&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},"es6","es3");
+(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,e){var d=a.fn.dataTable;a.extend(!0,d.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
+renderer:"bootstrap"});a.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});d.ext.renderer.pageButton.bootstrap=function(b,l,v,w,m,r){var k=new d.Api(b),x=b.oClasses,n=b.oLanguage.oPaginate,y=b.oLanguage.oAria.paginate||{},g,h,t=0,u=function(c,d){var e,l=function(b){b.preventDefault();
+a(b.currentTarget).hasClass("disabled")||k.page()==b.data.action||k.page(b.data.action).draw("page")};var q=0;for(e=d.length;q<e;q++){var f=d[q];if(a.isArray(f))u(c,f);else{h=g="";switch(f){case "ellipsis":g="&#x2026;";h="disabled";break;case "first":g=n.sFirst;h=f+(0<m?"":" disabled");break;case "previous":g=n.sPrevious;h=f+(0<m?"":" disabled");break;case "next":g=n.sNext;h=f+(m<r-1?"":" disabled");break;case "last":g=n.sLast;h=f+(m<r-1?"":" disabled");break;default:g=f+1,h=m===f?"active":""}if(g){var p=
+a("<li>",{"class":x.sPageButton+" "+h,id:0===v&&"string"===typeof f?b.sTableId+"_"+f:null}).append(a("<a>",{href:"#","aria-controls":b.sTableId,"aria-label":y[f],"data-dt-idx":t,tabindex:b.iTabIndex,"class":"page-link"}).html(g)).appendTo(c);b.oApi._fnBindAction(p,{action:f},l);t++}}}};try{var p=a(l).find(c.activeElement).data("dt-idx")}catch(z){}u(a(l).empty().html('<ul class="pagination"/>').children("ul"),w);p!==e&&a(l).find("[data-dt-idx="+p+"]").focus()};return d});
Index: public/vendors/dataTable/DataTables-1.10.20/js/dataTables.foundation.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/dataTables.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/dataTables.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,174 @@
+/*! DataTables Foundation integration
+ * ©2011-2015 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * DataTables integration for Foundation. This requires Foundation 5 and
+ * DataTables 1.10 or newer.
+ *
+ * This file sets the defaults and adds options to DataTables to style its
+ * controls using Foundation. See http://datatables.net/manual/styling/foundation
+ * for further information.
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+// Detect Foundation 5 / 6 as they have different element and class requirements
+var meta = $('<meta class="foundation-mq"/>').appendTo('head');
+DataTable.ext.foundationVersion = meta.css('font-family').match(/small|medium|large/) ? 6 : 5;
+meta.remove();
+
+
+$.extend( DataTable.ext.classes, {
+	sWrapper:    "dataTables_wrapper dt-foundation",
+	sProcessing: "dataTables_processing panel callout"
+} );
+
+
+/* Set the defaults for DataTables initialisation */
+$.extend( true, DataTable.defaults, {
+	dom:
+		"<'row grid-x'<'small-6 columns cell'l><'small-6 columns cell'f>r>"+
+		"t"+
+		"<'row grid-x'<'small-6 columns cell'i><'small-6 columns cell'p>>",
+	renderer: 'foundation'
+} );
+
+
+/* Page button renderer */
+DataTable.ext.renderer.pageButton.foundation = function ( settings, host, idx, buttons, page, pages ) {
+	var api = new DataTable.Api( settings );
+	var classes = settings.oClasses;
+	var lang = settings.oLanguage.oPaginate;
+	var aria = settings.oLanguage.oAria.paginate || {};
+	var btnDisplay, btnClass;
+	var tag;
+	var v5 = DataTable.ext.foundationVersion === 5;
+
+	var attach = function( container, buttons ) {
+		var i, ien, node, button;
+		var clickHandler = function ( e ) {
+			e.preventDefault();
+			if ( !$(e.currentTarget).hasClass('unavailable') && api.page() != e.data.action ) {
+				api.page( e.data.action ).draw( 'page' );
+			}
+		};
+
+		for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+			button = buttons[i];
+
+			if ( $.isArray( button ) ) {
+				attach( container, button );
+			}
+			else {
+				btnDisplay = '';
+				btnClass = '';
+				tag = null;
+
+				switch ( button ) {
+					case 'ellipsis':
+						btnDisplay = '&#x2026;';
+						btnClass = 'unavailable disabled';
+						tag = null;
+						break;
+
+					case 'first':
+						btnDisplay = lang.sFirst;
+						btnClass = button + (page > 0 ?
+							'' : ' unavailable disabled');
+						tag = page > 0 ? 'a' : null;
+						break;
+
+					case 'previous':
+						btnDisplay = lang.sPrevious;
+						btnClass = button + (page > 0 ?
+							'' : ' unavailable disabled');
+						tag = page > 0 ? 'a' : null;
+						break;
+
+					case 'next':
+						btnDisplay = lang.sNext;
+						btnClass = button + (page < pages-1 ?
+							'' : ' unavailable disabled');
+						tag = page < pages-1 ? 'a' : null;
+						break;
+
+					case 'last':
+						btnDisplay = lang.sLast;
+						btnClass = button + (page < pages-1 ?
+							'' : ' unavailable disabled');
+						tag = page < pages-1 ? 'a' : null;
+						break;
+
+					default:
+						btnDisplay = button + 1;
+						btnClass = page === button ?
+							'current' : '';
+						tag = page === button ?
+							null : 'a';
+						break;
+				}
+
+				if ( v5 ) {
+					tag = 'a';
+				}
+
+				if ( btnDisplay ) {
+					node = $('<li>', {
+							'class': classes.sPageButton+' '+btnClass,
+							'aria-controls': settings.sTableId,
+							'aria-label': aria[ button ],
+							'tabindex': settings.iTabIndex,
+							'id': idx === 0 && typeof button === 'string' ?
+								settings.sTableId +'_'+ button :
+								null
+						} )
+						.append( tag ?
+							$('<'+tag+'/>', {'href': '#'} ).html( btnDisplay ) :
+							btnDisplay
+						)
+						.appendTo( container );
+
+					settings.oApi._fnBindAction(
+						node, {action: button}, clickHandler
+					);
+				}
+			}
+		}
+	};
+
+	attach(
+		$(host).empty().html('<ul class="pagination"/>').children('ul'),
+		buttons
+	);
+};
+
+
+return DataTable;
+}));
Index: public/vendors/dataTable/DataTables-1.10.20/js/dataTables.foundation.min.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/dataTables.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/dataTables.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9 @@
+/*!
+ DataTables Foundation integration
+ ©2011-2015 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);d&&d.fn.dataTable||(d=require("datatables.net")(a,d).$);return c(d,a,a.document)}:c(jQuery,window,document)})(function(c,a,d,z){var e=c.fn.dataTable;a=c('<meta class="foundation-mq"/>').appendTo("head");e.ext.foundationVersion=a.css("font-family").match(/small|medium|large/)?6:5;a.remove();c.extend(e.ext.classes,
+{sWrapper:"dataTables_wrapper dt-foundation",sProcessing:"dataTables_processing panel callout"});c.extend(!0,e.defaults,{dom:"<'row grid-x'<'small-6 columns cell'l><'small-6 columns cell'f>r>t<'row grid-x'<'small-6 columns cell'i><'small-6 columns cell'p>>",renderer:"foundation"});e.ext.renderer.pageButton.foundation=function(a,d,u,n,f,l){var q=new e.Api(a),v=a.oClasses,m=a.oLanguage.oPaginate,w=a.oLanguage.oAria.paginate||{},g,k,h,x=5===e.ext.foundationVersion,t=function(d,e){var r,n=function(a){a.preventDefault();
+c(a.currentTarget).hasClass("unavailable")||q.page()==a.data.action||q.page(a.data.action).draw("page")};var p=0;for(r=e.length;p<r;p++){var b=e[p];if(c.isArray(b))t(d,b);else{k=g="";h=null;switch(b){case "ellipsis":g="&#x2026;";k="unavailable disabled";h=null;break;case "first":g=m.sFirst;k=b+(0<f?"":" unavailable disabled");h=0<f?"a":null;break;case "previous":g=m.sPrevious;k=b+(0<f?"":" unavailable disabled");h=0<f?"a":null;break;case "next":g=m.sNext;k=b+(f<l-1?"":" unavailable disabled");h=f<
+l-1?"a":null;break;case "last":g=m.sLast;k=b+(f<l-1?"":" unavailable disabled");h=f<l-1?"a":null;break;default:g=b+1,k=f===b?"current":"",h=f===b?null:"a"}x&&(h="a");if(g){var y=c("<li>",{"class":v.sPageButton+" "+k,"aria-controls":a.sTableId,"aria-label":w[b],tabindex:a.iTabIndex,id:0===u&&"string"===typeof b?a.sTableId+"_"+b:null}).append(h?c("<"+h+"/>",{href:"#"}).html(g):g).appendTo(d);a.oApi._fnBindAction(y,{action:b},n)}}}};t(c(d).empty().html('<ul class="pagination"/>').children("ul"),n)};
+return e});
Index: public/vendors/dataTable/DataTables-1.10.20/js/dataTables.jqueryui.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/dataTables.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/dataTables.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,164 @@
+/*! DataTables jQuery UI integration
+ * ©2011-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * DataTables integration for jQuery UI. This requires jQuery UI and
+ * DataTables 1.10 or newer.
+ *
+ * This file sets the defaults and adds options to DataTables to style its
+ * controls using jQuery UI. See http://datatables.net/manual/styling/jqueryui
+ * for further information.
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var sort_prefix = 'css_right ui-icon ui-icon-';
+var toolbar_prefix = 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-';
+
+/* Set the defaults for DataTables initialisation */
+$.extend( true, DataTable.defaults, {
+	dom:
+		'<"'+toolbar_prefix+'tl ui-corner-tr"lfr>'+
+		't'+
+		'<"'+toolbar_prefix+'bl ui-corner-br"ip>',
+	renderer: 'jqueryui'
+} );
+
+
+$.extend( DataTable.ext.classes, {
+	"sWrapper":            "dataTables_wrapper dt-jqueryui",
+
+	/* Full numbers paging buttons */
+	"sPageButton":         "fg-button ui-button ui-state-default",
+	"sPageButtonActive":   "ui-state-disabled",
+	"sPageButtonDisabled": "ui-state-disabled",
+
+	/* Features */
+	"sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+
+		"ui-buttonset-multi paging_", /* Note that the type is postfixed */
+
+	/* Sorting */
+	"sSortAsc":            "ui-state-default sorting_asc",
+	"sSortDesc":           "ui-state-default sorting_desc",
+	"sSortable":           "ui-state-default sorting",
+	"sSortableAsc":        "ui-state-default sorting_asc_disabled",
+	"sSortableDesc":       "ui-state-default sorting_desc_disabled",
+	"sSortableNone":       "ui-state-default sorting_disabled",
+	"sSortIcon":           "DataTables_sort_icon",
+
+	/* Scrolling */
+	"sScrollHead": "dataTables_scrollHead "+"ui-state-default",
+	"sScrollFoot": "dataTables_scrollFoot "+"ui-state-default",
+
+	/* Misc */
+	"sHeaderTH":  "ui-state-default",
+	"sFooterTH":  "ui-state-default"
+} );
+
+
+DataTable.ext.renderer.header.jqueryui = function ( settings, cell, column, classes ) {
+	// Calculate what the unsorted class should be
+	var noSortAppliedClass = sort_prefix+'caret-2-n-s';
+	var asc = $.inArray('asc', column.asSorting) !== -1;
+	var desc = $.inArray('desc', column.asSorting) !== -1;
+
+	if ( !column.bSortable || (!asc && !desc) ) {
+		noSortAppliedClass = '';
+	}
+	else if ( asc && !desc ) {
+		noSortAppliedClass = sort_prefix+'caret-1-n';
+	}
+	else if ( !asc && desc ) {
+		noSortAppliedClass = sort_prefix+'caret-1-s';
+	}
+
+	// Setup the DOM structure
+	$('<div/>')
+		.addClass( 'DataTables_sort_wrapper' )
+		.append( cell.contents() )
+		.append( $('<span/>')
+			.addClass( classes.sSortIcon+' '+noSortAppliedClass )
+		)
+		.appendTo( cell );
+
+	// Attach a sort listener to update on sort
+	$(settings.nTable).on( 'order.dt', function ( e, ctx, sorting, columns ) {
+		if ( settings !== ctx ) {
+			return;
+		}
+
+		var colIdx = column.idx;
+
+		cell
+			.removeClass( classes.sSortAsc +" "+classes.sSortDesc )
+			.addClass( columns[ colIdx ] == 'asc' ?
+				classes.sSortAsc : columns[ colIdx ] == 'desc' ?
+					classes.sSortDesc :
+					column.sSortingClass
+			);
+
+		cell
+			.find( 'span.'+classes.sSortIcon )
+			.removeClass(
+				sort_prefix+'triangle-1-n' +" "+
+				sort_prefix+'triangle-1-s' +" "+
+				sort_prefix+'caret-2-n-s' +" "+
+				sort_prefix+'caret-1-n' +" "+
+				sort_prefix+'caret-1-s'
+			)
+			.addClass( columns[ colIdx ] == 'asc' ?
+				sort_prefix+'triangle-1-n' : columns[ colIdx ] == 'desc' ?
+					sort_prefix+'triangle-1-s' :
+					noSortAppliedClass
+			);
+	} );
+};
+
+
+/*
+ * TableTools jQuery UI compatibility
+ * Required TableTools 2.1+
+ */
+if ( DataTable.TableTools ) {
+	$.extend( true, DataTable.TableTools.classes, {
+		"container": "DTTT_container ui-buttonset ui-buttonset-multi",
+		"buttons": {
+			"normal": "DTTT_button ui-button ui-state-default"
+		},
+		"collection": {
+			"container": "DTTT_collection ui-buttonset ui-buttonset-multi"
+		}
+	} );
+}
+
+
+return DataTable;
+}));
Index: public/vendors/dataTable/DataTables-1.10.20/js/dataTables.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/dataTables.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/dataTables.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,12 @@
+/*!
+ DataTables jQuery UI integration
+ ©2011-2014 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e<d;e++){var l=a[e];if(b.call(c,l,e,a))return{i:e,v:l}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(a,b,c,d){if(b){c=$jscomp.global;a=a.split(".");for(d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},"es6","es3");
+(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,d){b=a.fn.dataTable;a.extend(!0,b.defaults,{dom:'<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-tl ui-corner-tr"lfr>t<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-bl ui-corner-br"ip>',
+renderer:"jqueryui"});a.extend(b.ext.classes,{sWrapper:"dataTables_wrapper dt-jqueryui",sPageButton:"fg-button ui-button ui-state-default",sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:"ui-state-default sorting_asc",sSortDesc:"ui-state-default sorting_desc",sSortable:"ui-state-default sorting",sSortableAsc:"ui-state-default sorting_asc_disabled",sSortableDesc:"ui-state-default sorting_desc_disabled",
+sSortableNone:"ui-state-default sorting_disabled",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead ui-state-default",sScrollFoot:"dataTables_scrollFoot ui-state-default",sHeaderTH:"ui-state-default",sFooterTH:"ui-state-default"});b.ext.renderer.header.jqueryui=function(b,c,d,f){var e="css_right ui-icon ui-icon-caret-2-n-s",g=-1!==a.inArray("asc",d.asSorting),h=-1!==a.inArray("desc",d.asSorting);d.bSortable&&(g||h)?g&&!h?e="css_right ui-icon ui-icon-caret-1-n":!g&&h&&(e="css_right ui-icon ui-icon-caret-1-s"):
+e="";a("<div/>").addClass("DataTables_sort_wrapper").append(c.contents()).append(a("<span/>").addClass(f.sSortIcon+" "+e)).appendTo(c);a(b.nTable).on("order.dt",function(a,g,h,k){b===g&&(a=d.idx,c.removeClass(f.sSortAsc+" "+f.sSortDesc).addClass("asc"==k[a]?f.sSortAsc:"desc"==k[a]?f.sSortDesc:d.sSortingClass),c.find("span."+f.sSortIcon).removeClass("css_right ui-icon ui-icon-triangle-1-n css_right ui-icon ui-icon-triangle-1-s css_right ui-icon ui-icon-caret-2-n-s css_right ui-icon ui-icon-caret-1-n css_right ui-icon ui-icon-caret-1-s").addClass("asc"==
+k[a]?"css_right ui-icon ui-icon-triangle-1-n":"desc"==k[a]?"css_right ui-icon ui-icon-triangle-1-s":e))})};b.TableTools&&a.extend(!0,b.TableTools.classes,{container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"},collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}});return b});
Index: public/vendors/dataTable/DataTables-1.10.20/js/dataTables.semanticui.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/dataTables.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/dataTables.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,212 @@
+/*! DataTables Bootstrap 3 integration
+ * ©2011-2015 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
+ * DataTables 1.10 or newer.
+ *
+ * This file sets the defaults and adds options to DataTables to style its
+ * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
+ * for further information.
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				// Require DataTables, which attaches to jQuery, including
+				// jQuery if needed and have a $ property so we can access the
+				// jQuery object that is used
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/* Set the defaults for DataTables initialisation */
+$.extend( true, DataTable.defaults, {
+	dom:
+		"<'ui stackable grid'"+
+			"<'row'"+
+				"<'eight wide column'l>"+
+				"<'right aligned eight wide column'f>"+
+			">"+
+			"<'row dt-table'"+
+				"<'sixteen wide column'tr>"+
+			">"+
+			"<'row'"+
+				"<'seven wide column'i>"+
+				"<'right aligned nine wide column'p>"+
+			">"+
+		">",
+	renderer: 'semanticUI'
+} );
+
+
+/* Default class modification */
+$.extend( DataTable.ext.classes, {
+	sWrapper:      "dataTables_wrapper dt-semanticUI",
+	sFilter:       "dataTables_filter ui input",
+	sProcessing:   "dataTables_processing ui segment",
+	sPageButton:   "paginate_button item"
+} );
+
+
+/* Bootstrap paging button renderer */
+DataTable.ext.renderer.pageButton.semanticUI = function ( settings, host, idx, buttons, page, pages ) {
+	var api     = new DataTable.Api( settings );
+	var classes = settings.oClasses;
+	var lang    = settings.oLanguage.oPaginate;
+	var aria = settings.oLanguage.oAria.paginate || {};
+	var btnDisplay, btnClass, counter=0;
+
+	var attach = function( container, buttons ) {
+		var i, ien, node, button;
+		var clickHandler = function ( e ) {
+			e.preventDefault();
+			if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
+				api.page( e.data.action ).draw( 'page' );
+			}
+		};
+
+		for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+			button = buttons[i];
+
+			if ( $.isArray( button ) ) {
+				attach( container, button );
+			}
+			else {
+				btnDisplay = '';
+				btnClass = '';
+
+				switch ( button ) {
+					case 'ellipsis':
+						btnDisplay = '&#x2026;';
+						btnClass = 'disabled';
+						break;
+
+					case 'first':
+						btnDisplay = lang.sFirst;
+						btnClass = button + (page > 0 ?
+							'' : ' disabled');
+						break;
+
+					case 'previous':
+						btnDisplay = lang.sPrevious;
+						btnClass = button + (page > 0 ?
+							'' : ' disabled');
+						break;
+
+					case 'next':
+						btnDisplay = lang.sNext;
+						btnClass = button + (page < pages-1 ?
+							'' : ' disabled');
+						break;
+
+					case 'last':
+						btnDisplay = lang.sLast;
+						btnClass = button + (page < pages-1 ?
+							'' : ' disabled');
+						break;
+
+					default:
+						btnDisplay = button + 1;
+						btnClass = page === button ?
+							'active' : '';
+						break;
+				}
+
+				var tag = btnClass.indexOf( 'disabled' ) === -1 ?
+					'a' :
+					'div';
+
+				if ( btnDisplay ) {
+					node = $('<'+tag+'>', {
+							'class': classes.sPageButton+' '+btnClass,
+							'id': idx === 0 && typeof button === 'string' ?
+								settings.sTableId +'_'+ button :
+								null,
+							'href': '#',
+							'aria-controls': settings.sTableId,
+							'aria-label': aria[ button ],
+							'data-dt-idx': counter,
+							'tabindex': settings.iTabIndex
+						} )
+						.html( btnDisplay )
+						.appendTo( container );
+
+					settings.oApi._fnBindAction(
+						node, {action: button}, clickHandler
+					);
+
+					counter++;
+				}
+			}
+		}
+	};
+
+	// IE9 throws an 'unknown error' if document.activeElement is used
+	// inside an iframe or frame. 
+	var activeEl;
+
+	try {
+		// Because this approach is destroying and recreating the paging
+		// elements, focus is lost on the select button which is bad for
+		// accessibility. So we want to restore focus once the draw has
+		// completed
+		activeEl = $(host).find(document.activeElement).data('dt-idx');
+	}
+	catch (e) {}
+
+	attach(
+		$(host).empty().html('<div class="ui stackable pagination menu"/>').children(),
+		buttons
+	);
+
+	if ( activeEl !== undefined ) {
+		$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
+	}
+};
+
+
+// Javascript enhancements on table initialisation
+$(document).on( 'init.dt', function (e, ctx) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var api = new $.fn.dataTable.Api( ctx );
+
+	// Length menu drop down
+	if ( $.fn.dropdown ) {
+		$( 'div.dataTables_length select', api.table().container() ).dropdown();
+	}
+
+	// Filtering input
+	$( 'div.dataTables_filter.ui.input', api.table().container() ).removeClass('input').addClass('form');
+	$( 'div.dataTables_filter input', api.table().container() ).wrap( '<span class="ui input" />' );
+} );
+
+
+return DataTable;
+}));
Index: public/vendors/dataTable/DataTables-1.10.20/js/dataTables.semanticui.min.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/dataTables.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/dataTables.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,12 @@
+/*!
+ DataTables Bootstrap 3 integration
+ ©2011-2015 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<e;d++){var k=a[d];if(b.call(c,k,d,a))return{i:d,v:k}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(a,b,c,e){if(b){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];d in c||(c[d]={});c=c[d]}a=a[a.length-1];e=c[a];b=b(e);b!=e&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},"es6","es3");
+(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,e){var d=a.fn.dataTable;a.extend(!0,d.defaults,{dom:"<'ui stackable grid'<'row'<'eight wide column'l><'right aligned eight wide column'f>><'row dt-table'<'sixteen wide column'tr>><'row'<'seven wide column'i><'right aligned nine wide column'p>>>",
+renderer:"semanticUI"});a.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-semanticUI",sFilter:"dataTables_filter ui input",sProcessing:"dataTables_processing ui segment",sPageButton:"paginate_button item"});d.ext.renderer.pageButton.semanticUI=function(b,l,w,x,m,r){var k=new d.Api(b),y=b.oClasses,n=b.oLanguage.oPaginate,z=b.oLanguage.oAria.paginate||{},g,h,t=0,u=function(c,d){var e,l=function(b){b.preventDefault();a(b.currentTarget).hasClass("disabled")||k.page()==b.data.action||k.page(b.data.action).draw("page")};
+var p=0;for(e=d.length;p<e;p++){var f=d[p];if(a.isArray(f))u(c,f);else{h=g="";switch(f){case "ellipsis":g="&#x2026;";h="disabled";break;case "first":g=n.sFirst;h=f+(0<m?"":" disabled");break;case "previous":g=n.sPrevious;h=f+(0<m?"":" disabled");break;case "next":g=n.sNext;h=f+(m<r-1?"":" disabled");break;case "last":g=n.sLast;h=f+(m<r-1?"":" disabled");break;default:g=f+1,h=m===f?"active":""}var q=-1===h.indexOf("disabled")?"a":"div";g&&(q=a("<"+q+">",{"class":y.sPageButton+" "+h,id:0===w&&"string"===
+typeof f?b.sTableId+"_"+f:null,href:"#","aria-controls":b.sTableId,"aria-label":z[f],"data-dt-idx":t,tabindex:b.iTabIndex}).html(g).appendTo(c),b.oApi._fnBindAction(q,{action:f},l),t++)}}};try{var v=a(l).find(c.activeElement).data("dt-idx")}catch(A){}u(a(l).empty().html('<div class="ui stackable pagination menu"/>').children(),x);v!==e&&a(l).find("[data-dt-idx="+v+"]").focus()};a(c).on("init.dt",function(b,c){"dt"===b.namespace&&(b=new a.fn.dataTable.Api(c),a.fn.dropdown&&a("div.dataTables_length select",
+b.table().container()).dropdown(),a("div.dataTables_filter.ui.input",b.table().container()).removeClass("input").addClass("form"),a("div.dataTables_filter input",b.table().container()).wrap('<span class="ui input" />'))});return d});
Index: public/vendors/dataTable/DataTables-1.10.20/js/jquery.dataTables.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/jquery.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/jquery.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,15334 @@
+/*! DataTables 1.10.20
+ * ©2008-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     DataTables
+ * @description Paginate, search and order HTML tables
+ * @version     1.10.20
+ * @file        jquery.dataTables.js
+ * @author      SpryMedia Ltd
+ * @contact     www.datatables.net
+ * @copyright   Copyright 2008-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+/*jslint evil: true, undef: true, browser: true */
+/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/
+
+(function( factory ) {
+	"use strict";
+
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				// CommonJS environments without a window global must pass a
+				// root. This will give an error otherwise
+				root = window;
+			}
+
+			if ( ! $ ) {
+				$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window
+					require('jquery') :
+					require('jquery')( root );
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}
+(function( $, window, document, undefined ) {
+	"use strict";
+
+	/**
+	 * DataTables is a plug-in for the jQuery Javascript library. It is a highly
+	 * flexible tool, based upon the foundations of progressive enhancement,
+	 * which will add advanced interaction controls to any HTML table. For a
+	 * full list of features please refer to
+	 * [DataTables.net](href="http://datatables.net).
+	 *
+	 * Note that the `DataTable` object is not a global variable but is aliased
+	 * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may
+	 * be  accessed.
+	 *
+	 *  @class
+	 *  @param {object} [init={}] Configuration object for DataTables. Options
+	 *    are defined by {@link DataTable.defaults}
+	 *  @requires jQuery 1.7+
+	 *
+	 *  @example
+	 *    // Basic initialisation
+	 *    $(document).ready( function {
+	 *      $('#example').dataTable();
+	 *    } );
+	 *
+	 *  @example
+	 *    // Initialisation with configuration options - in this case, disable
+	 *    // pagination and sorting.
+	 *    $(document).ready( function {
+	 *      $('#example').dataTable( {
+	 *        "paginate": false,
+	 *        "sort": false
+	 *      } );
+	 *    } );
+	 */
+	var DataTable = function ( options )
+	{
+		/**
+		 * Perform a jQuery selector action on the table's TR elements (from the tbody) and
+		 * return the resulting jQuery object.
+		 *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+		 *  @param {object} [oOpts] Optional parameters for modifying the rows to be included
+		 *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter
+		 *    criterion ("applied") or all TR elements (i.e. no filter).
+		 *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.
+		 *    Can be either 'current', whereby the current sorting of the table is used, or
+		 *    'original' whereby the original order the data was read into the table is used.
+		 *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+		 *    ("current") or not ("all"). If 'current' is given, then order is assumed to be
+		 *    'current' and filter is 'applied', regardless of what they might be given as.
+		 *  @returns {object} jQuery object, filtered by the given selector.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Highlight every second row
+		 *      oTable.$('tr:odd').css('backgroundColor', 'blue');
+		 *    } );
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Filter to rows with 'Webkit' in them, add a background colour and then
+		 *      // remove the filter, thus highlighting the 'Webkit' rows only.
+		 *      oTable.fnFilter('Webkit');
+		 *      oTable.$('tr', {"search": "applied"}).css('backgroundColor', 'blue');
+		 *      oTable.fnFilter('');
+		 *    } );
+		 */
+		this.$ = function ( sSelector, oOpts )
+		{
+			return this.api(true).$( sSelector, oOpts );
+		};
+		
+		
+		/**
+		 * Almost identical to $ in operation, but in this case returns the data for the matched
+		 * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes
+		 * rather than any descendants, so the data can be obtained for the row/cell. If matching
+		 * rows are found, the data returned is the original data array/object that was used to
+		 * create the row (or a generated array if from a DOM source).
+		 *
+		 * This method is often useful in-combination with $ where both functions are given the
+		 * same parameters and the array indexes will match identically.
+		 *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+		 *  @param {object} [oOpts] Optional parameters for modifying the rows to be included
+		 *  @param {string} [oOpts.filter=none] Select elements that meet the current filter
+		 *    criterion ("applied") or all elements (i.e. no filter).
+		 *  @param {string} [oOpts.order=current] Order of the data in the processed array.
+		 *    Can be either 'current', whereby the current sorting of the table is used, or
+		 *    'original' whereby the original order the data was read into the table is used.
+		 *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+		 *    ("current") or not ("all"). If 'current' is given, then order is assumed to be
+		 *    'current' and filter is 'applied', regardless of what they might be given as.
+		 *  @returns {array} Data for the matched elements. If any elements, as a result of the
+		 *    selector, were not TR, TD or TH elements in the DataTable, they will have a null
+		 *    entry in the array.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Get the data from the first row in the table
+		 *      var data = oTable._('tr:first');
+		 *
+		 *      // Do something useful with the data
+		 *      alert( "First cell is: "+data[0] );
+		 *    } );
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Filter to 'Webkit' and get all data for
+		 *      oTable.fnFilter('Webkit');
+		 *      var data = oTable._('tr', {"search": "applied"});
+		 *
+		 *      // Do something with the data
+		 *      alert( data.length+" rows matched the search" );
+		 *    } );
+		 */
+		this._ = function ( sSelector, oOpts )
+		{
+			return this.api(true).rows( sSelector, oOpts ).data();
+		};
+		
+		
+		/**
+		 * Create a DataTables Api instance, with the currently selected tables for
+		 * the Api's context.
+		 * @param {boolean} [traditional=false] Set the API instance's context to be
+		 *   only the table referred to by the `DataTable.ext.iApiIndex` option, as was
+		 *   used in the API presented by DataTables 1.9- (i.e. the traditional mode),
+		 *   or if all tables captured in the jQuery object should be used.
+		 * @return {DataTables.Api}
+		 */
+		this.api = function ( traditional )
+		{
+			return traditional ?
+				new _Api(
+					_fnSettingsFromNode( this[ _ext.iApiIndex ] )
+				) :
+				new _Api( this );
+		};
+		
+		
+		/**
+		 * Add a single new row or multiple rows of data to the table. Please note
+		 * that this is suitable for client-side processing only - if you are using
+		 * server-side processing (i.e. "bServerSide": true), then to add data, you
+		 * must add it to the data source, i.e. the server-side, through an Ajax call.
+		 *  @param {array|object} data The data to be added to the table. This can be:
+		 *    <ul>
+		 *      <li>1D array of data - add a single row with the data provided</li>
+		 *      <li>2D array of arrays - add multiple rows in a single call</li>
+		 *      <li>object - data object when using <i>mData</i></li>
+		 *      <li>array of objects - multiple data objects when using <i>mData</i></li>
+		 *    </ul>
+		 *  @param {bool} [redraw=true] redraw the table or not
+		 *  @returns {array} An array of integers, representing the list of indexes in
+		 *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to
+		 *    the table.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    // Global var for counter
+		 *    var giCount = 2;
+		 *
+		 *    $(document).ready(function() {
+		 *      $('#example').dataTable();
+		 *    } );
+		 *
+		 *    function fnClickAddRow() {
+		 *      $('#example').dataTable().fnAddData( [
+		 *        giCount+".1",
+		 *        giCount+".2",
+		 *        giCount+".3",
+		 *        giCount+".4" ]
+		 *      );
+		 *
+		 *      giCount++;
+		 *    }
+		 */
+		this.fnAddData = function( data, redraw )
+		{
+			var api = this.api( true );
+		
+			/* Check if we want to add multiple rows or not */
+			var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ?
+				api.rows.add( data ) :
+				api.row.add( data );
+		
+			if ( redraw === undefined || redraw ) {
+				api.draw();
+			}
+		
+			return rows.flatten().toArray();
+		};
+		
+		
+		/**
+		 * This function will make DataTables recalculate the column sizes, based on the data
+		 * contained in the table and the sizes applied to the columns (in the DOM, CSS or
+		 * through the sWidth parameter). This can be useful when the width of the table's
+		 * parent element changes (for example a window resize).
+		 *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sScrollY": "200px",
+		 *        "bPaginate": false
+		 *      } );
+		 *
+		 *      $(window).on('resize', function () {
+		 *        oTable.fnAdjustColumnSizing();
+		 *      } );
+		 *    } );
+		 */
+		this.fnAdjustColumnSizing = function ( bRedraw )
+		{
+			var api = this.api( true ).columns.adjust();
+			var settings = api.settings()[0];
+			var scroll = settings.oScroll;
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw( false );
+			}
+			else if ( scroll.sX !== "" || scroll.sY !== "" ) {
+				/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */
+				_fnScrollDraw( settings );
+			}
+		};
+		
+		
+		/**
+		 * Quickly and simply clear a table
+		 *  @param {bool} [bRedraw=true] redraw the table or not
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)
+		 *      oTable.fnClearTable();
+		 *    } );
+		 */
+		this.fnClearTable = function( bRedraw )
+		{
+			var api = this.api( true ).clear();
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw();
+			}
+		};
+		
+		
+		/**
+		 * The exact opposite of 'opening' a row, this function will close any rows which
+		 * are currently 'open'.
+		 *  @param {node} nTr the table row to 'close'
+		 *  @returns {int} 0 on success, or 1 if failed (can't find the row)
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnClose = function( nTr )
+		{
+			this.api( true ).row( nTr ).child.hide();
+		};
+		
+		
+		/**
+		 * Remove a row for the table
+		 *  @param {mixed} target The index of the row from aoData to be deleted, or
+		 *    the TR element you want to delete
+		 *  @param {function|null} [callBack] Callback function
+		 *  @param {bool} [redraw=true] Redraw the table or not
+		 *  @returns {array} The row that was deleted
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Immediately remove the first row
+		 *      oTable.fnDeleteRow( 0 );
+		 *    } );
+		 */
+		this.fnDeleteRow = function( target, callback, redraw )
+		{
+			var api = this.api( true );
+			var rows = api.rows( target );
+			var settings = rows.settings()[0];
+			var data = settings.aoData[ rows[0][0] ];
+		
+			rows.remove();
+		
+			if ( callback ) {
+				callback.call( this, settings, data );
+			}
+		
+			if ( redraw === undefined || redraw ) {
+				api.draw();
+			}
+		
+			return data;
+		};
+		
+		
+		/**
+		 * Restore the table to it's original state in the DOM by removing all of DataTables
+		 * enhancements, alterations to the DOM structure of the table and event listeners.
+		 *  @param {boolean} [remove=false] Completely remove the table from the DOM
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      // This example is fairly pointless in reality, but shows how fnDestroy can be used
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnDestroy();
+		 *    } );
+		 */
+		this.fnDestroy = function ( remove )
+		{
+			this.api( true ).destroy( remove );
+		};
+		
+		
+		/**
+		 * Redraw the table
+		 *  @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)
+		 *      oTable.fnDraw();
+		 *    } );
+		 */
+		this.fnDraw = function( complete )
+		{
+			// Note that this isn't an exact match to the old call to _fnDraw - it takes
+			// into account the new data, but can hold position.
+			this.api( true ).draw( complete );
+		};
+		
+		
+		/**
+		 * Filter the input based on data
+		 *  @param {string} sInput String to filter the table on
+		 *  @param {int|null} [iColumn] Column to limit filtering to
+		 *  @param {bool} [bRegex=false] Treat as regular expression or not
+		 *  @param {bool} [bSmart=true] Perform smart filtering or not
+		 *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)
+		 *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Sometime later - filter...
+		 *      oTable.fnFilter( 'test string' );
+		 *    } );
+		 */
+		this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )
+		{
+			var api = this.api( true );
+		
+			if ( iColumn === null || iColumn === undefined ) {
+				api.search( sInput, bRegex, bSmart, bCaseInsensitive );
+			}
+			else {
+				api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );
+			}
+		
+			api.draw();
+		};
+		
+		
+		/**
+		 * Get the data for the whole table, an individual row or an individual cell based on the
+		 * provided parameters.
+		 *  @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as
+		 *    a TR node then the data source for the whole row will be returned. If given as a
+		 *    TD/TH cell node then iCol will be automatically calculated and the data for the
+		 *    cell returned. If given as an integer, then this is treated as the aoData internal
+		 *    data index for the row (see fnGetPosition) and the data for that row used.
+		 *  @param {int} [col] Optional column index that you want the data of.
+		 *  @returns {array|object|string} If mRow is undefined, then the data for all rows is
+		 *    returned. If mRow is defined, just data for that row, and is iCol is
+		 *    defined, only data for the designated cell is returned.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    // Row data
+		 *    $(document).ready(function() {
+		 *      oTable = $('#example').dataTable();
+		 *
+		 *      oTable.$('tr').click( function () {
+		 *        var data = oTable.fnGetData( this );
+		 *        // ... do something with the array / object of data for the row
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Individual cell data
+		 *    $(document).ready(function() {
+		 *      oTable = $('#example').dataTable();
+		 *
+		 *      oTable.$('td').click( function () {
+		 *        var sData = oTable.fnGetData( this );
+		 *        alert( 'The cell clicked on had the value of '+sData );
+		 *      } );
+		 *    } );
+		 */
+		this.fnGetData = function( src, col )
+		{
+			var api = this.api( true );
+		
+			if ( src !== undefined ) {
+				var type = src.nodeName ? src.nodeName.toLowerCase() : '';
+		
+				return col !== undefined || type == 'td' || type == 'th' ?
+					api.cell( src, col ).data() :
+					api.row( src ).data() || null;
+			}
+		
+			return api.data().toArray();
+		};
+		
+		
+		/**
+		 * Get an array of the TR nodes that are used in the table's body. Note that you will
+		 * typically want to use the '$' API method in preference to this as it is more
+		 * flexible.
+		 *  @param {int} [iRow] Optional row index for the TR element you want
+		 *  @returns {array|node} If iRow is undefined, returns an array of all TR elements
+		 *    in the table's body, or iRow is defined, just the TR element requested.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Get the nodes from the table
+		 *      var nNodes = oTable.fnGetNodes( );
+		 *    } );
+		 */
+		this.fnGetNodes = function( iRow )
+		{
+			var api = this.api( true );
+		
+			return iRow !== undefined ?
+				api.row( iRow ).node() :
+				api.rows().nodes().flatten().toArray();
+		};
+		
+		
+		/**
+		 * Get the array indexes of a particular cell from it's DOM element
+		 * and column index including hidden columns
+		 *  @param {node} node this can either be a TR, TD or TH in the table's body
+		 *  @returns {int} If nNode is given as a TR, then a single index is returned, or
+		 *    if given as a cell, an array of [row index, column index (visible),
+		 *    column index (all)] is given.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      $('#example tbody td').click( function () {
+		 *        // Get the position of the current data from the node
+		 *        var aPos = oTable.fnGetPosition( this );
+		 *
+		 *        // Get the data array for this row
+		 *        var aData = oTable.fnGetData( aPos[0] );
+		 *
+		 *        // Update the data array and return the value
+		 *        aData[ aPos[1] ] = 'clicked';
+		 *        this.innerHTML = 'clicked';
+		 *      } );
+		 *
+		 *      // Init DataTables
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnGetPosition = function( node )
+		{
+			var api = this.api( true );
+			var nodeName = node.nodeName.toUpperCase();
+		
+			if ( nodeName == 'TR' ) {
+				return api.row( node ).index();
+			}
+			else if ( nodeName == 'TD' || nodeName == 'TH' ) {
+				var cell = api.cell( node ).index();
+		
+				return [
+					cell.row,
+					cell.columnVisible,
+					cell.column
+				];
+			}
+			return null;
+		};
+		
+		
+		/**
+		 * Check to see if a row is 'open' or not.
+		 *  @param {node} nTr the table row to check
+		 *  @returns {boolean} true if the row is currently open, false otherwise
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnIsOpen = function( nTr )
+		{
+			return this.api( true ).row( nTr ).child.isShown();
+		};
+		
+		
+		/**
+		 * This function will place a new row directly after a row which is currently
+		 * on display on the page, with the HTML contents that is passed into the
+		 * function. This can be used, for example, to ask for confirmation that a
+		 * particular record should be deleted.
+		 *  @param {node} nTr The table row to 'open'
+		 *  @param {string|node|jQuery} mHtml The HTML to put into the row
+		 *  @param {string} sClass Class to give the new TD cell
+		 *  @returns {node} The row opened. Note that if the table row passed in as the
+		 *    first parameter, is not found in the table, this method will silently
+		 *    return.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnOpen = function( nTr, mHtml, sClass )
+		{
+			return this.api( true )
+				.row( nTr )
+				.child( mHtml, sClass )
+				.show()
+				.child()[0];
+		};
+		
+		
+		/**
+		 * Change the pagination - provides the internal logic for pagination in a simple API
+		 * function. With this function you can have a DataTables table go to the next,
+		 * previous, first or last pages.
+		 *  @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
+		 *    or page number to jump to (integer), note that page 0 is the first page.
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnPageChange( 'next' );
+		 *    } );
+		 */
+		this.fnPageChange = function ( mAction, bRedraw )
+		{
+			var api = this.api( true ).page( mAction );
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw(false);
+			}
+		};
+		
+		
+		/**
+		 * Show a particular column
+		 *  @param {int} iCol The column whose display should be changed
+		 *  @param {bool} bShow Show (true) or hide (false) the column
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Hide the second column after initialisation
+		 *      oTable.fnSetColumnVis( 1, false );
+		 *    } );
+		 */
+		this.fnSetColumnVis = function ( iCol, bShow, bRedraw )
+		{
+			var api = this.api( true ).column( iCol ).visible( bShow );
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.columns.adjust().draw();
+			}
+		};
+		
+		
+		/**
+		 * Get the settings for a particular table for external manipulation
+		 *  @returns {object} DataTables settings object. See
+		 *    {@link DataTable.models.oSettings}
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      var oSettings = oTable.fnSettings();
+		 *
+		 *      // Show an example parameter from the settings
+		 *      alert( oSettings._iDisplayStart );
+		 *    } );
+		 */
+		this.fnSettings = function()
+		{
+			return _fnSettingsFromNode( this[_ext.iApiIndex] );
+		};
+		
+		
+		/**
+		 * Sort the table by a particular column
+		 *  @param {int} iCol the data index to sort on. Note that this will not match the
+		 *    'display index' if you have hidden data entries
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Sort immediately with columns 0 and 1
+		 *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );
+		 *    } );
+		 */
+		this.fnSort = function( aaSort )
+		{
+			this.api( true ).order( aaSort ).draw();
+		};
+		
+		
+		/**
+		 * Attach a sort listener to an element for a given column
+		 *  @param {node} nNode the element to attach the sort listener to
+		 *  @param {int} iColumn the column that a click on this node will sort on
+		 *  @param {function} [fnCallback] callback function when sort is run
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Sort on column 1, when 'sorter' is clicked on
+		 *      oTable.fnSortListener( document.getElementById('sorter'), 1 );
+		 *    } );
+		 */
+		this.fnSortListener = function( nNode, iColumn, fnCallback )
+		{
+			this.api( true ).order.listener( nNode, iColumn, fnCallback );
+		};
+		
+		
+		/**
+		 * Update a table cell or row - this method will accept either a single value to
+		 * update the cell with, an array of values with one element for each column or
+		 * an object in the same format as the original data source. The function is
+		 * self-referencing in order to make the multi column updates easier.
+		 *  @param {object|array|string} mData Data to update the cell/row with
+		 *  @param {node|int} mRow TR element you want to update or the aoData index
+		 *  @param {int} [iColumn] The column to update, give as null or undefined to
+		 *    update a whole row.
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @param {bool} [bAction=true] Perform pre-draw actions or not
+		 *  @returns {int} 0 on success, 1 on error
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell
+		 *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row
+		 *    } );
+		 */
+		this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )
+		{
+			var api = this.api( true );
+		
+			if ( iColumn === undefined || iColumn === null ) {
+				api.row( mRow ).data( mData );
+			}
+			else {
+				api.cell( mRow, iColumn ).data( mData );
+			}
+		
+			if ( bAction === undefined || bAction ) {
+				api.columns.adjust();
+			}
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw();
+			}
+			return 0;
+		};
+		
+		
+		/**
+		 * Provide a common method for plug-ins to check the version of DataTables being used, in order
+		 * to ensure compatibility.
+		 *  @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
+		 *    formats "X" and "X.Y" are also acceptable.
+		 *  @returns {boolean} true if this version of DataTables is greater or equal to the required
+		 *    version, or false if this version of DataTales is not suitable
+		 *  @method
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      alert( oTable.fnVersionCheck( '1.9.0' ) );
+		 *    } );
+		 */
+		this.fnVersionCheck = _ext.fnVersionCheck;
+		
+
+		var _that = this;
+		var emptyInit = options === undefined;
+		var len = this.length;
+
+		if ( emptyInit ) {
+			options = {};
+		}
+
+		this.oApi = this.internal = _ext.internal;
+
+		// Extend with old style plug-in API methods
+		for ( var fn in DataTable.ext.internal ) {
+			if ( fn ) {
+				this[fn] = _fnExternApiFunc(fn);
+			}
+		}
+
+		this.each(function() {
+			// For each initialisation we want to give it a clean initialisation
+			// object that can be bashed around
+			var o = {};
+			var oInit = len > 1 ? // optimisation for single table case
+				_fnExtend( o, options, true ) :
+				options;
+
+			/*global oInit,_that,emptyInit*/
+			var i=0, iLen, j, jLen, k, kLen;
+			var sId = this.getAttribute( 'id' );
+			var bInitHandedOff = false;
+			var defaults = DataTable.defaults;
+			var $this = $(this);
+			
+			
+			/* Sanity check */
+			if ( this.nodeName.toLowerCase() != 'table' )
+			{
+				_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );
+				return;
+			}
+			
+			/* Backwards compatibility for the defaults */
+			_fnCompatOpts( defaults );
+			_fnCompatCols( defaults.column );
+			
+			/* Convert the camel-case defaults to Hungarian */
+			_fnCamelToHungarian( defaults, defaults, true );
+			_fnCamelToHungarian( defaults.column, defaults.column, true );
+			
+			/* Setting up the initialisation object */
+			_fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ), true );
+			
+			
+			
+			/* Check to see if we are re-initialising a table */
+			var allSettings = DataTable.settings;
+			for ( i=0, iLen=allSettings.length ; i<iLen ; i++ )
+			{
+				var s = allSettings[i];
+			
+				/* Base check on table node */
+				if (
+					s.nTable == this ||
+					(s.nTHead && s.nTHead.parentNode == this) ||
+					(s.nTFoot && s.nTFoot.parentNode == this)
+				) {
+					var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;
+					var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;
+			
+					if ( emptyInit || bRetrieve )
+					{
+						return s.oInstance;
+					}
+					else if ( bDestroy )
+					{
+						s.oInstance.fnDestroy();
+						break;
+					}
+					else
+					{
+						_fnLog( s, 0, 'Cannot reinitialise DataTable', 3 );
+						return;
+					}
+				}
+			
+				/* If the element we are initialising has the same ID as a table which was previously
+				 * initialised, but the table nodes don't match (from before) then we destroy the old
+				 * instance by simply deleting it. This is under the assumption that the table has been
+				 * destroyed by other methods. Anyone using non-id selectors will need to do this manually
+				 */
+				if ( s.sTableId == this.id )
+				{
+					allSettings.splice( i, 1 );
+					break;
+				}
+			}
+			
+			/* Ensure the table has an ID - required for accessibility */
+			if ( sId === null || sId === "" )
+			{
+				sId = "DataTables_Table_"+(DataTable.ext._unique++);
+				this.id = sId;
+			}
+			
+			/* Create the settings object for this table and set some of the default parameters */
+			var oSettings = $.extend( true, {}, DataTable.models.oSettings, {
+				"sDestroyWidth": $this[0].style.width,
+				"sInstance":     sId,
+				"sTableId":      sId
+			} );
+			oSettings.nTable = this;
+			oSettings.oApi   = _that.internal;
+			oSettings.oInit  = oInit;
+			
+			allSettings.push( oSettings );
+			
+			// Need to add the instance after the instance after the settings object has been added
+			// to the settings array, so we can self reference the table instance if more than one
+			oSettings.oInstance = (_that.length===1) ? _that : $this.dataTable();
+			
+			// Backwards compatibility, before we apply all the defaults
+			_fnCompatOpts( oInit );
+			_fnLanguageCompat( oInit.oLanguage );
+			
+			// If the length menu is given, but the init display length is not, use the length menu
+			if ( oInit.aLengthMenu && ! oInit.iDisplayLength )
+			{
+				oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ?
+					oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];
+			}
+			
+			// Apply the defaults and init options to make a single init object will all
+			// options defined from defaults and instance options.
+			oInit = _fnExtend( $.extend( true, {}, defaults ), oInit );
+			
+			
+			// Map the initialisation options onto the settings object
+			_fnMap( oSettings.oFeatures, oInit, [
+				"bPaginate",
+				"bLengthChange",
+				"bFilter",
+				"bSort",
+				"bSortMulti",
+				"bInfo",
+				"bProcessing",
+				"bAutoWidth",
+				"bSortClasses",
+				"bServerSide",
+				"bDeferRender"
+			] );
+			_fnMap( oSettings, oInit, [
+				"asStripeClasses",
+				"ajax",
+				"fnServerData",
+				"fnFormatNumber",
+				"sServerMethod",
+				"aaSorting",
+				"aaSortingFixed",
+				"aLengthMenu",
+				"sPaginationType",
+				"sAjaxSource",
+				"sAjaxDataProp",
+				"iStateDuration",
+				"sDom",
+				"bSortCellsTop",
+				"iTabIndex",
+				"fnStateLoadCallback",
+				"fnStateSaveCallback",
+				"renderer",
+				"searchDelay",
+				"rowId",
+				[ "iCookieDuration", "iStateDuration" ], // backwards compat
+				[ "oSearch", "oPreviousSearch" ],
+				[ "aoSearchCols", "aoPreSearchCols" ],
+				[ "iDisplayLength", "_iDisplayLength" ]
+			] );
+			_fnMap( oSettings.oScroll, oInit, [
+				[ "sScrollX", "sX" ],
+				[ "sScrollXInner", "sXInner" ],
+				[ "sScrollY", "sY" ],
+				[ "bScrollCollapse", "bCollapse" ]
+			] );
+			_fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" );
+			
+			/* Callback functions which are array driven */
+			_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );
+			_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );
+			_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );
+			_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );
+			_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );
+			_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );
+			_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );
+			_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );
+			_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );
+			_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );
+			_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );
+			
+			oSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId );
+			
+			/* Browser support detection */
+			_fnBrowserDetect( oSettings );
+			
+			var oClasses = oSettings.oClasses;
+			
+			$.extend( oClasses, DataTable.ext.classes, oInit.oClasses );
+			$this.addClass( oClasses.sTable );
+			
+			
+			if ( oSettings.iInitDisplayStart === undefined )
+			{
+				/* Display start point, taking into account the save saving */
+				oSettings.iInitDisplayStart = oInit.iDisplayStart;
+				oSettings._iDisplayStart = oInit.iDisplayStart;
+			}
+			
+			if ( oInit.iDeferLoading !== null )
+			{
+				oSettings.bDeferLoading = true;
+				var tmp = $.isArray( oInit.iDeferLoading );
+				oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;
+				oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;
+			}
+			
+			/* Language definitions */
+			var oLanguage = oSettings.oLanguage;
+			$.extend( true, oLanguage, oInit.oLanguage );
+			
+			if ( oLanguage.sUrl )
+			{
+				/* Get the language definitions from a file - because this Ajax call makes the language
+				 * get async to the remainder of this function we use bInitHandedOff to indicate that
+				 * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor
+				 */
+				$.ajax( {
+					dataType: 'json',
+					url: oLanguage.sUrl,
+					success: function ( json ) {
+						_fnLanguageCompat( json );
+						_fnCamelToHungarian( defaults.oLanguage, json );
+						$.extend( true, oLanguage, json );
+						_fnInitialise( oSettings );
+					},
+					error: function () {
+						// Error occurred loading language file, continue on as best we can
+						_fnInitialise( oSettings );
+					}
+				} );
+				bInitHandedOff = true;
+			}
+			
+			/*
+			 * Stripes
+			 */
+			if ( oInit.asStripeClasses === null )
+			{
+				oSettings.asStripeClasses =[
+					oClasses.sStripeOdd,
+					oClasses.sStripeEven
+				];
+			}
+			
+			/* Remove row stripe classes if they are already on the table row */
+			var stripeClasses = oSettings.asStripeClasses;
+			var rowOne = $this.children('tbody').find('tr').eq(0);
+			if ( $.inArray( true, $.map( stripeClasses, function(el, i) {
+				return rowOne.hasClass(el);
+			} ) ) !== -1 ) {
+				$('tbody tr', this).removeClass( stripeClasses.join(' ') );
+				oSettings.asDestroyStripes = stripeClasses.slice();
+			}
+			
+			/*
+			 * Columns
+			 * See if we should load columns automatically or use defined ones
+			 */
+			var anThs = [];
+			var aoColumnsInit;
+			var nThead = this.getElementsByTagName('thead');
+			if ( nThead.length !== 0 )
+			{
+				_fnDetectHeader( oSettings.aoHeader, nThead[0] );
+				anThs = _fnGetUniqueThs( oSettings );
+			}
+			
+			/* If not given a column array, generate one with nulls */
+			if ( oInit.aoColumns === null )
+			{
+				aoColumnsInit = [];
+				for ( i=0, iLen=anThs.length ; i<iLen ; i++ )
+				{
+					aoColumnsInit.push( null );
+				}
+			}
+			else
+			{
+				aoColumnsInit = oInit.aoColumns;
+			}
+			
+			/* Add the columns */
+			for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )
+			{
+				_fnAddColumn( oSettings, anThs ? anThs[i] : null );
+			}
+			
+			/* Apply the column definitions */
+			_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {
+				_fnColumnOptions( oSettings, iCol, oDef );
+			} );
+			
+			/* HTML5 attribute detection - build an mData object automatically if the
+			 * attributes are found
+			 */
+			if ( rowOne.length ) {
+				var a = function ( cell, name ) {
+					return cell.getAttribute( 'data-'+name ) !== null ? name : null;
+				};
+			
+				$( rowOne[0] ).children('th, td').each( function (i, cell) {
+					var col = oSettings.aoColumns[i];
+			
+					if ( col.mData === i ) {
+						var sort = a( cell, 'sort' ) || a( cell, 'order' );
+						var filter = a( cell, 'filter' ) || a( cell, 'search' );
+			
+						if ( sort !== null || filter !== null ) {
+							col.mData = {
+								_:      i+'.display',
+								sort:   sort !== null   ? i+'.@data-'+sort   : undefined,
+								type:   sort !== null   ? i+'.@data-'+sort   : undefined,
+								filter: filter !== null ? i+'.@data-'+filter : undefined
+							};
+			
+							_fnColumnOptions( oSettings, i );
+						}
+					}
+				} );
+			}
+			
+			var features = oSettings.oFeatures;
+			var loadedInit = function () {
+				/*
+				 * Sorting
+				 * @todo For modularisation (1.11) this needs to do into a sort start up handler
+				 */
+			
+				// If aaSorting is not defined, then we use the first indicator in asSorting
+				// in case that has been altered, so the default sort reflects that option
+				if ( oInit.aaSorting === undefined ) {
+					var sorting = oSettings.aaSorting;
+					for ( i=0, iLen=sorting.length ; i<iLen ; i++ ) {
+						sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];
+					}
+				}
+			
+				/* Do a first pass on the sorting classes (allows any size changes to be taken into
+				 * account, and also will apply sorting disabled classes if disabled
+				 */
+				_fnSortingClasses( oSettings );
+			
+				if ( features.bSort ) {
+					_fnCallbackReg( oSettings, 'aoDrawCallback', function () {
+						if ( oSettings.bSorted ) {
+							var aSort = _fnSortFlatten( oSettings );
+							var sortedColumns = {};
+			
+							$.each( aSort, function (i, val) {
+								sortedColumns[ val.src ] = val.dir;
+							} );
+			
+							_fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] );
+							_fnSortAria( oSettings );
+						}
+					} );
+				}
+			
+				_fnCallbackReg( oSettings, 'aoDrawCallback', function () {
+					if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {
+						_fnSortingClasses( oSettings );
+					}
+				}, 'sc' );
+			
+			
+				/*
+				 * Final init
+				 * Cache the header, body and footer as required, creating them if needed
+				 */
+			
+				// Work around for Webkit bug 83867 - store the caption-side before removing from doc
+				var captions = $this.children('caption').each( function () {
+					this._captionSide = $(this).css('caption-side');
+				} );
+			
+				var thead = $this.children('thead');
+				if ( thead.length === 0 ) {
+					thead = $('<thead/>').appendTo($this);
+				}
+				oSettings.nTHead = thead[0];
+			
+				var tbody = $this.children('tbody');
+				if ( tbody.length === 0 ) {
+					tbody = $('<tbody/>').appendTo($this);
+				}
+				oSettings.nTBody = tbody[0];
+			
+				var tfoot = $this.children('tfoot');
+				if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) {
+					// If we are a scrolling table, and no footer has been given, then we need to create
+					// a tfoot element for the caption element to be appended to
+					tfoot = $('<tfoot/>').appendTo($this);
+				}
+			
+				if ( tfoot.length === 0 || tfoot.children().length === 0 ) {
+					$this.addClass( oClasses.sNoFooter );
+				}
+				else if ( tfoot.length > 0 ) {
+					oSettings.nTFoot = tfoot[0];
+					_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );
+				}
+			
+				/* Check if there is data passing into the constructor */
+				if ( oInit.aaData ) {
+					for ( i=0 ; i<oInit.aaData.length ; i++ ) {
+						_fnAddData( oSettings, oInit.aaData[ i ] );
+					}
+				}
+				else if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' ) {
+					/* Grab the data from the page - only do this when deferred loading or no Ajax
+					 * source since there is no point in reading the DOM data if we are then going
+					 * to replace it with Ajax data
+					 */
+					_fnAddTr( oSettings, $(oSettings.nTBody).children('tr') );
+				}
+			
+				/* Copy the data index array */
+				oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+			
+				/* Initialisation complete - table can be drawn */
+				oSettings.bInitialised = true;
+			
+				/* Check if we need to initialise the table (it might not have been handed off to the
+				 * language processor)
+				 */
+				if ( bInitHandedOff === false ) {
+					_fnInitialise( oSettings );
+				}
+			};
+			
+			/* Must be done after everything which can be overridden by the state saving! */
+			if ( oInit.bStateSave )
+			{
+				features.bStateSave = true;
+				_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );
+				_fnLoadState( oSettings, oInit, loadedInit );
+			}
+			else {
+				loadedInit();
+			}
+			
+		} );
+		_that = null;
+		return this;
+	};
+
+	
+	/*
+	 * It is useful to have variables which are scoped locally so only the
+	 * DataTables functions can access them and they don't leak into global space.
+	 * At the same time these functions are often useful over multiple files in the
+	 * core and API, so we list, or at least document, all variables which are used
+	 * by DataTables as private variables here. This also ensures that there is no
+	 * clashing of variable names and that they can easily referenced for reuse.
+	 */
+	
+	
+	// Defined else where
+	//  _selector_run
+	//  _selector_opts
+	//  _selector_first
+	//  _selector_row_indexes
+	
+	var _ext; // DataTable.ext
+	var _Api; // DataTable.Api
+	var _api_register; // DataTable.Api.register
+	var _api_registerPlural; // DataTable.Api.registerPlural
+	
+	var _re_dic = {};
+	var _re_new_lines = /[\r\n\u2028]/g;
+	var _re_html = /<.*?>/g;
+	
+	// This is not strict ISO8601 - Date.parse() is quite lax, although
+	// implementations differ between browsers.
+	var _re_date = /^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/;
+	
+	// Escape regular expression special characters
+	var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' );
+	
+	// http://en.wikipedia.org/wiki/Foreign_exchange_market
+	// - \u20BD - Russian ruble.
+	// - \u20a9 - South Korean Won
+	// - \u20BA - Turkish Lira
+	// - \u20B9 - Indian Rupee
+	// - R - Brazil (R$) and South Africa
+	// - fr - Swiss Franc
+	// - kr - Swedish krona, Norwegian krone and Danish krone
+	// - \u2009 is thin space and \u202F is narrow no-break space, both used in many
+	// - Ƀ - Bitcoin
+	// - Ξ - Ethereum
+	//   standards as thousands separators.
+	var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi;
+	
+	
+	var _empty = function ( d ) {
+		return !d || d === true || d === '-' ? true : false;
+	};
+	
+	
+	var _intVal = function ( s ) {
+		var integer = parseInt( s, 10 );
+		return !isNaN(integer) && isFinite(s) ? integer : null;
+	};
+	
+	// Convert from a formatted number with characters other than `.` as the
+	// decimal place, to a Javascript number
+	var _numToDecimal = function ( num, decimalPoint ) {
+		// Cache created regular expressions for speed as this function is called often
+		if ( ! _re_dic[ decimalPoint ] ) {
+			_re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' );
+		}
+		return typeof num === 'string' && decimalPoint !== '.' ?
+			num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :
+			num;
+	};
+	
+	
+	var _isNumber = function ( d, decimalPoint, formatted ) {
+		var strType = typeof d === 'string';
+	
+		// If empty return immediately so there must be a number if it is a
+		// formatted string (this stops the string "k", or "kr", etc being detected
+		// as a formatted number for currency
+		if ( _empty( d ) ) {
+			return true;
+		}
+	
+		if ( decimalPoint && strType ) {
+			d = _numToDecimal( d, decimalPoint );
+		}
+	
+		if ( formatted && strType ) {
+			d = d.replace( _re_formatted_numeric, '' );
+		}
+	
+		return !isNaN( parseFloat(d) ) && isFinite( d );
+	};
+	
+	
+	// A string without HTML in it can be considered to be HTML still
+	var _isHtml = function ( d ) {
+		return _empty( d ) || typeof d === 'string';
+	};
+	
+	
+	var _htmlNumeric = function ( d, decimalPoint, formatted ) {
+		if ( _empty( d ) ) {
+			return true;
+		}
+	
+		var html = _isHtml( d );
+		return ! html ?
+			null :
+			_isNumber( _stripHtml( d ), decimalPoint, formatted ) ?
+				true :
+				null;
+	};
+	
+	
+	var _pluck = function ( a, prop, prop2 ) {
+		var out = [];
+		var i=0, ien=a.length;
+	
+		// Could have the test in the loop for slightly smaller code, but speed
+		// is essential here
+		if ( prop2 !== undefined ) {
+			for ( ; i<ien ; i++ ) {
+				if ( a[i] && a[i][ prop ] ) {
+					out.push( a[i][ prop ][ prop2 ] );
+				}
+			}
+		}
+		else {
+			for ( ; i<ien ; i++ ) {
+				if ( a[i] ) {
+					out.push( a[i][ prop ] );
+				}
+			}
+		}
+	
+		return out;
+	};
+	
+	
+	// Basically the same as _pluck, but rather than looping over `a` we use `order`
+	// as the indexes to pick from `a`
+	var _pluck_order = function ( a, order, prop, prop2 )
+	{
+		var out = [];
+		var i=0, ien=order.length;
+	
+		// Could have the test in the loop for slightly smaller code, but speed
+		// is essential here
+		if ( prop2 !== undefined ) {
+			for ( ; i<ien ; i++ ) {
+				if ( a[ order[i] ][ prop ] ) {
+					out.push( a[ order[i] ][ prop ][ prop2 ] );
+				}
+			}
+		}
+		else {
+			for ( ; i<ien ; i++ ) {
+				out.push( a[ order[i] ][ prop ] );
+			}
+		}
+	
+		return out;
+	};
+	
+	
+	var _range = function ( len, start )
+	{
+		var out = [];
+		var end;
+	
+		if ( start === undefined ) {
+			start = 0;
+			end = len;
+		}
+		else {
+			end = start;
+			start = len;
+		}
+	
+		for ( var i=start ; i<end ; i++ ) {
+			out.push( i );
+		}
+	
+		return out;
+	};
+	
+	
+	var _removeEmpty = function ( a )
+	{
+		var out = [];
+	
+		for ( var i=0, ien=a.length ; i<ien ; i++ ) {
+			if ( a[i] ) { // careful - will remove all falsy values!
+				out.push( a[i] );
+			}
+		}
+	
+		return out;
+	};
+	
+	
+	var _stripHtml = function ( d ) {
+		return d.replace( _re_html, '' );
+	};
+	
+	
+	/**
+	 * Determine if all values in the array are unique. This means we can short
+	 * cut the _unique method at the cost of a single loop. A sorted array is used
+	 * to easily check the values.
+	 *
+	 * @param  {array} src Source array
+	 * @return {boolean} true if all unique, false otherwise
+	 * @ignore
+	 */
+	var _areAllUnique = function ( src ) {
+		if ( src.length < 2 ) {
+			return true;
+		}
+	
+		var sorted = src.slice().sort();
+		var last = sorted[0];
+	
+		for ( var i=1, ien=sorted.length ; i<ien ; i++ ) {
+			if ( sorted[i] === last ) {
+				return false;
+			}
+	
+			last = sorted[i];
+		}
+	
+		return true;
+	};
+	
+	
+	/**
+	 * Find the unique elements in a source array.
+	 *
+	 * @param  {array} src Source array
+	 * @return {array} Array of unique items
+	 * @ignore
+	 */
+	var _unique = function ( src )
+	{
+		if ( _areAllUnique( src ) ) {
+			return src.slice();
+		}
+	
+		// A faster unique method is to use object keys to identify used values,
+		// but this doesn't work with arrays or objects, which we must also
+		// consider. See jsperf.com/compare-array-unique-versions/4 for more
+		// information.
+		var
+			out = [],
+			val,
+			i, ien=src.length,
+			j, k=0;
+	
+		again: for ( i=0 ; i<ien ; i++ ) {
+			val = src[i];
+	
+			for ( j=0 ; j<k ; j++ ) {
+				if ( out[j] === val ) {
+					continue again;
+				}
+			}
+	
+			out.push( val );
+			k++;
+		}
+	
+		return out;
+	};
+	
+	
+	/**
+	 * DataTables utility methods
+	 * 
+	 * This namespace provides helper methods that DataTables uses internally to
+	 * create a DataTable, but which are not exclusively used only for DataTables.
+	 * These methods can be used by extension authors to save the duplication of
+	 * code.
+	 *
+	 *  @namespace
+	 */
+	DataTable.util = {
+		/**
+		 * Throttle the calls to a function. Arguments and context are maintained
+		 * for the throttled function.
+		 *
+		 * @param {function} fn Function to be called
+		 * @param {integer} freq Call frequency in mS
+		 * @return {function} Wrapped function
+		 */
+		throttle: function ( fn, freq ) {
+			var
+				frequency = freq !== undefined ? freq : 200,
+				last,
+				timer;
+	
+			return function () {
+				var
+					that = this,
+					now  = +new Date(),
+					args = arguments;
+	
+				if ( last && now < last + frequency ) {
+					clearTimeout( timer );
+	
+					timer = setTimeout( function () {
+						last = undefined;
+						fn.apply( that, args );
+					}, frequency );
+				}
+				else {
+					last = now;
+					fn.apply( that, args );
+				}
+			};
+		},
+	
+	
+		/**
+		 * Escape a string such that it can be used in a regular expression
+		 *
+		 *  @param {string} val string to escape
+		 *  @returns {string} escaped string
+		 */
+		escapeRegex: function ( val ) {
+			return val.replace( _re_escape_regex, '\\$1' );
+		}
+	};
+	
+	
+	
+	/**
+	 * Create a mapping object that allows camel case parameters to be looked up
+	 * for their Hungarian counterparts. The mapping is stored in a private
+	 * parameter called `_hungarianMap` which can be accessed on the source object.
+	 *  @param {object} o
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnHungarianMap ( o )
+	{
+		var
+			hungarian = 'a aa ai ao as b fn i m o s ',
+			match,
+			newKey,
+			map = {};
+	
+		$.each( o, function (key, val) {
+			match = key.match(/^([^A-Z]+?)([A-Z])/);
+	
+			if ( match && hungarian.indexOf(match[1]+' ') !== -1 )
+			{
+				newKey = key.replace( match[0], match[2].toLowerCase() );
+				map[ newKey ] = key;
+	
+				if ( match[1] === 'o' )
+				{
+					_fnHungarianMap( o[key] );
+				}
+			}
+		} );
+	
+		o._hungarianMap = map;
+	}
+	
+	
+	/**
+	 * Convert from camel case parameters to Hungarian, based on a Hungarian map
+	 * created by _fnHungarianMap.
+	 *  @param {object} src The model object which holds all parameters that can be
+	 *    mapped.
+	 *  @param {object} user The object to convert from camel case to Hungarian.
+	 *  @param {boolean} force When set to `true`, properties which already have a
+	 *    Hungarian value in the `user` object will be overwritten. Otherwise they
+	 *    won't be.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCamelToHungarian ( src, user, force )
+	{
+		if ( ! src._hungarianMap ) {
+			_fnHungarianMap( src );
+		}
+	
+		var hungarianKey;
+	
+		$.each( user, function (key, val) {
+			hungarianKey = src._hungarianMap[ key ];
+	
+			if ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) )
+			{
+				// For objects, we need to buzz down into the object to copy parameters
+				if ( hungarianKey.charAt(0) === 'o' )
+				{
+					// Copy the camelCase options over to the hungarian
+					if ( ! user[ hungarianKey ] ) {
+						user[ hungarianKey ] = {};
+					}
+					$.extend( true, user[hungarianKey], user[key] );
+	
+					_fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force );
+				}
+				else {
+					user[hungarianKey] = user[ key ];
+				}
+			}
+		} );
+	}
+	
+	
+	/**
+	 * Language compatibility - when certain options are given, and others aren't, we
+	 * need to duplicate the values over, in order to provide backwards compatibility
+	 * with older language files.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnLanguageCompat( lang )
+	{
+		// Note the use of the Hungarian notation for the parameters in this method as
+		// this is called after the mapping of camelCase to Hungarian
+		var defaults = DataTable.defaults.oLanguage;
+	
+		// Default mapping
+		var defaultDecimal = defaults.sDecimal;
+		if ( defaultDecimal ) {
+			_addNumericSort( defaultDecimal );
+		}
+	
+		if ( lang ) {
+			var zeroRecords = lang.sZeroRecords;
+	
+			// Backwards compatibility - if there is no sEmptyTable given, then use the same as
+			// sZeroRecords - assuming that is given.
+			if ( ! lang.sEmptyTable && zeroRecords &&
+				defaults.sEmptyTable === "No data available in table" )
+			{
+				_fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );
+			}
+	
+			// Likewise with loading records
+			if ( ! lang.sLoadingRecords && zeroRecords &&
+				defaults.sLoadingRecords === "Loading..." )
+			{
+				_fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );
+			}
+	
+			// Old parameter name of the thousands separator mapped onto the new
+			if ( lang.sInfoThousands ) {
+				lang.sThousands = lang.sInfoThousands;
+			}
+	
+			var decimal = lang.sDecimal;
+			if ( decimal && defaultDecimal !== decimal ) {
+				_addNumericSort( decimal );
+			}
+		}
+	}
+	
+	
+	/**
+	 * Map one parameter onto another
+	 *  @param {object} o Object to map
+	 *  @param {*} knew The new parameter name
+	 *  @param {*} old The old parameter name
+	 */
+	var _fnCompatMap = function ( o, knew, old ) {
+		if ( o[ knew ] !== undefined ) {
+			o[ old ] = o[ knew ];
+		}
+	};
+	
+	
+	/**
+	 * Provide backwards compatibility for the main DT options. Note that the new
+	 * options are mapped onto the old parameters, so this is an external interface
+	 * change only.
+	 *  @param {object} init Object to map
+	 */
+	function _fnCompatOpts ( init )
+	{
+		_fnCompatMap( init, 'ordering',      'bSort' );
+		_fnCompatMap( init, 'orderMulti',    'bSortMulti' );
+		_fnCompatMap( init, 'orderClasses',  'bSortClasses' );
+		_fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' );
+		_fnCompatMap( init, 'order',         'aaSorting' );
+		_fnCompatMap( init, 'orderFixed',    'aaSortingFixed' );
+		_fnCompatMap( init, 'paging',        'bPaginate' );
+		_fnCompatMap( init, 'pagingType',    'sPaginationType' );
+		_fnCompatMap( init, 'pageLength',    'iDisplayLength' );
+		_fnCompatMap( init, 'searching',     'bFilter' );
+	
+		// Boolean initialisation of x-scrolling
+		if ( typeof init.sScrollX === 'boolean' ) {
+			init.sScrollX = init.sScrollX ? '100%' : '';
+		}
+		if ( typeof init.scrollX === 'boolean' ) {
+			init.scrollX = init.scrollX ? '100%' : '';
+		}
+	
+		// Column search objects are in an array, so it needs to be converted
+		// element by element
+		var searchCols = init.aoSearchCols;
+	
+		if ( searchCols ) {
+			for ( var i=0, ien=searchCols.length ; i<ien ; i++ ) {
+				if ( searchCols[i] ) {
+					_fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Provide backwards compatibility for column options. Note that the new options
+	 * are mapped onto the old parameters, so this is an external interface change
+	 * only.
+	 *  @param {object} init Object to map
+	 */
+	function _fnCompatCols ( init )
+	{
+		_fnCompatMap( init, 'orderable',     'bSortable' );
+		_fnCompatMap( init, 'orderData',     'aDataSort' );
+		_fnCompatMap( init, 'orderSequence', 'asSorting' );
+		_fnCompatMap( init, 'orderDataType', 'sortDataType' );
+	
+		// orderData can be given as an integer
+		var dataSort = init.aDataSort;
+		if ( typeof dataSort === 'number' && ! $.isArray( dataSort ) ) {
+			init.aDataSort = [ dataSort ];
+		}
+	}
+	
+	
+	/**
+	 * Browser feature detection for capabilities, quirks
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnBrowserDetect( settings )
+	{
+		// We don't need to do this every time DataTables is constructed, the values
+		// calculated are specific to the browser and OS configuration which we
+		// don't expect to change between initialisations
+		if ( ! DataTable.__browser ) {
+			var browser = {};
+			DataTable.__browser = browser;
+	
+			// Scrolling feature / quirks detection
+			var n = $('<div/>')
+				.css( {
+					position: 'fixed',
+					top: 0,
+					left: $(window).scrollLeft()*-1, // allow for scrolling
+					height: 1,
+					width: 1,
+					overflow: 'hidden'
+				} )
+				.append(
+					$('<div/>')
+						.css( {
+							position: 'absolute',
+							top: 1,
+							left: 1,
+							width: 100,
+							overflow: 'scroll'
+						} )
+						.append(
+							$('<div/>')
+								.css( {
+									width: '100%',
+									height: 10
+								} )
+						)
+				)
+				.appendTo( 'body' );
+	
+			var outer = n.children();
+			var inner = outer.children();
+	
+			// Numbers below, in order, are:
+			// inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth
+			//
+			// IE6 XP:                           100 100 100  83
+			// IE7 Vista:                        100 100 100  83
+			// IE 8+ Windows:                     83  83 100  83
+			// Evergreen Windows:                 83  83 100  83
+			// Evergreen Mac with scrollbars:     85  85 100  85
+			// Evergreen Mac without scrollbars: 100 100 100 100
+	
+			// Get scrollbar width
+			browser.barWidth = outer[0].offsetWidth - outer[0].clientWidth;
+	
+			// IE6/7 will oversize a width 100% element inside a scrolling element, to
+			// include the width of the scrollbar, while other browsers ensure the inner
+			// element is contained without forcing scrolling
+			browser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100;
+	
+			// In rtl text layout, some browsers (most, but not all) will place the
+			// scrollbar on the left, rather than the right.
+			browser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1;
+	
+			// IE8- don't provide height and width for getBoundingClientRect
+			browser.bBounding = n[0].getBoundingClientRect().width ? true : false;
+	
+			n.remove();
+		}
+	
+		$.extend( settings.oBrowser, DataTable.__browser );
+		settings.oScroll.iBarWidth = DataTable.__browser.barWidth;
+	}
+	
+	
+	/**
+	 * Array.prototype reduce[Right] method, used for browsers which don't support
+	 * JS 1.6. Done this way to reduce code size, since we iterate either way
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnReduce ( that, fn, init, start, end, inc )
+	{
+		var
+			i = start,
+			value,
+			isSet = false;
+	
+		if ( init !== undefined ) {
+			value = init;
+			isSet = true;
+		}
+	
+		while ( i !== end ) {
+			if ( ! that.hasOwnProperty(i) ) {
+				continue;
+			}
+	
+			value = isSet ?
+				fn( value, that[i], i, that ) :
+				that[i];
+	
+			isSet = true;
+			i += inc;
+		}
+	
+		return value;
+	}
+	
+	/**
+	 * Add a column to the list used for the table with default values
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {node} nTh The th element for this column
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddColumn( oSettings, nTh )
+	{
+		// Add column to aoColumns array
+		var oDefaults = DataTable.defaults.column;
+		var iCol = oSettings.aoColumns.length;
+		var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {
+			"nTh": nTh ? nTh : document.createElement('th'),
+			"sTitle":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',
+			"aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],
+			"mData": oDefaults.mData ? oDefaults.mData : iCol,
+			idx: iCol
+		} );
+		oSettings.aoColumns.push( oCol );
+	
+		// Add search object for column specific search. Note that the `searchCols[ iCol ]`
+		// passed into extend can be undefined. This allows the user to give a default
+		// with only some of the parameters defined, and also not give a default
+		var searchCols = oSettings.aoPreSearchCols;
+		searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );
+	
+		// Use the default column options function to initialise classes etc
+		_fnColumnOptions( oSettings, iCol, $(nTh).data() );
+	}
+	
+	
+	/**
+	 * Apply options for a column
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iCol column index to consider
+	 *  @param {object} oOptions object with sType, bVisible and bSearchable etc
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnColumnOptions( oSettings, iCol, oOptions )
+	{
+		var oCol = oSettings.aoColumns[ iCol ];
+		var oClasses = oSettings.oClasses;
+		var th = $(oCol.nTh);
+	
+		// Try to get width information from the DOM. We can't get it from CSS
+		// as we'd need to parse the CSS stylesheet. `width` option can override
+		if ( ! oCol.sWidthOrig ) {
+			// Width attribute
+			oCol.sWidthOrig = th.attr('width') || null;
+	
+			// Style attribute
+			var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/);
+			if ( t ) {
+				oCol.sWidthOrig = t[1];
+			}
+		}
+	
+		/* User specified column options */
+		if ( oOptions !== undefined && oOptions !== null )
+		{
+			// Backwards compatibility
+			_fnCompatCols( oOptions );
+	
+			// Map camel case parameters to their Hungarian counterparts
+			_fnCamelToHungarian( DataTable.defaults.column, oOptions, true );
+	
+			/* Backwards compatibility for mDataProp */
+			if ( oOptions.mDataProp !== undefined && !oOptions.mData )
+			{
+				oOptions.mData = oOptions.mDataProp;
+			}
+	
+			if ( oOptions.sType )
+			{
+				oCol._sManualType = oOptions.sType;
+			}
+	
+			// `class` is a reserved word in Javascript, so we need to provide
+			// the ability to use a valid name for the camel case input
+			if ( oOptions.className && ! oOptions.sClass )
+			{
+				oOptions.sClass = oOptions.className;
+			}
+			if ( oOptions.sClass ) {
+				th.addClass( oOptions.sClass );
+			}
+	
+			$.extend( oCol, oOptions );
+			_fnMap( oCol, oOptions, "sWidth", "sWidthOrig" );
+	
+			/* iDataSort to be applied (backwards compatibility), but aDataSort will take
+			 * priority if defined
+			 */
+			if ( oOptions.iDataSort !== undefined )
+			{
+				oCol.aDataSort = [ oOptions.iDataSort ];
+			}
+			_fnMap( oCol, oOptions, "aDataSort" );
+		}
+	
+		/* Cache the data get and set functions for speed */
+		var mDataSrc = oCol.mData;
+		var mData = _fnGetObjectDataFn( mDataSrc );
+		var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;
+	
+		var attrTest = function( src ) {
+			return typeof src === 'string' && src.indexOf('@') !== -1;
+		};
+		oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && (
+			attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)
+		);
+		oCol._setter = null;
+	
+		oCol.fnGetData = function (rowData, type, meta) {
+			var innerData = mData( rowData, type, undefined, meta );
+	
+			return mRender && type ?
+				mRender( innerData, type, rowData, meta ) :
+				innerData;
+		};
+		oCol.fnSetData = function ( rowData, val, meta ) {
+			return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );
+		};
+	
+		// Indicate if DataTables should read DOM data as an object or array
+		// Used in _fnGetRowElements
+		if ( typeof mDataSrc !== 'number' ) {
+			oSettings._rowReadObject = true;
+		}
+	
+		/* Feature sorting overrides column specific when off */
+		if ( !oSettings.oFeatures.bSort )
+		{
+			oCol.bSortable = false;
+			th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called
+		}
+	
+		/* Check that the class assignment is correct for sorting */
+		var bAsc = $.inArray('asc', oCol.asSorting) !== -1;
+		var bDesc = $.inArray('desc', oCol.asSorting) !== -1;
+		if ( !oCol.bSortable || (!bAsc && !bDesc) )
+		{
+			oCol.sSortingClass = oClasses.sSortableNone;
+			oCol.sSortingClassJUI = "";
+		}
+		else if ( bAsc && !bDesc )
+		{
+			oCol.sSortingClass = oClasses.sSortableAsc;
+			oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;
+		}
+		else if ( !bAsc && bDesc )
+		{
+			oCol.sSortingClass = oClasses.sSortableDesc;
+			oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;
+		}
+		else
+		{
+			oCol.sSortingClass = oClasses.sSortable;
+			oCol.sSortingClassJUI = oClasses.sSortJUI;
+		}
+	}
+	
+	
+	/**
+	 * Adjust the table column widths for new data. Note: you would probably want to
+	 * do a redraw after calling this function!
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAdjustColumnSizing ( settings )
+	{
+		/* Not interested in doing column width calculation if auto-width is disabled */
+		if ( settings.oFeatures.bAutoWidth !== false )
+		{
+			var columns = settings.aoColumns;
+	
+			_fnCalculateColumnWidths( settings );
+			for ( var i=0 , iLen=columns.length ; i<iLen ; i++ )
+			{
+				columns[i].nTh.style.width = columns[i].sWidth;
+			}
+		}
+	
+		var scroll = settings.oScroll;
+		if ( scroll.sY !== '' || scroll.sX !== '')
+		{
+			_fnScrollDraw( settings );
+		}
+	
+		_fnCallbackFire( settings, null, 'column-sizing', [settings] );
+	}
+	
+	
+	/**
+	 * Covert the index of a visible column to the index in the data array (take account
+	 * of hidden columns)
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iMatch Visible column index to lookup
+	 *  @returns {int} i the data index
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnVisibleToColumnIndex( oSettings, iMatch )
+	{
+		var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+	
+		return typeof aiVis[iMatch] === 'number' ?
+			aiVis[iMatch] :
+			null;
+	}
+	
+	
+	/**
+	 * Covert the index of an index in the data array and convert it to the visible
+	 *   column index (take account of hidden columns)
+	 *  @param {int} iMatch Column index to lookup
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {int} i the data index
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnColumnIndexToVisible( oSettings, iMatch )
+	{
+		var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+		var iPos = $.inArray( iMatch, aiVis );
+	
+		return iPos !== -1 ? iPos : null;
+	}
+	
+	
+	/**
+	 * Get the number of visible columns
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {int} i the number of visible columns
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnVisbleColumns( oSettings )
+	{
+		var vis = 0;
+	
+		// No reduce in IE8, use a loop for now
+		$.each( oSettings.aoColumns, function ( i, col ) {
+			if ( col.bVisible && $(col.nTh).css('display') !== 'none' ) {
+				vis++;
+			}
+		} );
+	
+		return vis;
+	}
+	
+	
+	/**
+	 * Get an array of column indexes that match a given property
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {string} sParam Parameter in aoColumns to look for - typically
+	 *    bVisible or bSearchable
+	 *  @returns {array} Array of indexes with matched properties
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetColumns( oSettings, sParam )
+	{
+		var a = [];
+	
+		$.map( oSettings.aoColumns, function(val, i) {
+			if ( val[sParam] ) {
+				a.push( i );
+			}
+		} );
+	
+		return a;
+	}
+	
+	
+	/**
+	 * Calculate the 'type' of a column
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnColumnTypes ( settings )
+	{
+		var columns = settings.aoColumns;
+		var data = settings.aoData;
+		var types = DataTable.ext.type.detect;
+		var i, ien, j, jen, k, ken;
+		var col, cell, detectedType, cache;
+	
+		// For each column, spin over the 
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			col = columns[i];
+			cache = [];
+	
+			if ( ! col.sType && col._sManualType ) {
+				col.sType = col._sManualType;
+			}
+			else if ( ! col.sType ) {
+				for ( j=0, jen=types.length ; j<jen ; j++ ) {
+					for ( k=0, ken=data.length ; k<ken ; k++ ) {
+						// Use a cache array so we only need to get the type data
+						// from the formatter once (when using multiple detectors)
+						if ( cache[k] === undefined ) {
+							cache[k] = _fnGetCellData( settings, k, i, 'type' );
+						}
+	
+						detectedType = types[j]( cache[k], settings );
+	
+						// If null, then this type can't apply to this column, so
+						// rather than testing all cells, break out. There is an
+						// exception for the last type which is `html`. We need to
+						// scan all rows since it is possible to mix string and HTML
+						// types
+						if ( ! detectedType && j !== types.length-1 ) {
+							break;
+						}
+	
+						// Only a single match is needed for html type since it is
+						// bottom of the pile and very similar to string
+						if ( detectedType === 'html' ) {
+							break;
+						}
+					}
+	
+					// Type is valid for all data points in the column - use this
+					// type
+					if ( detectedType ) {
+						col.sType = detectedType;
+						break;
+					}
+				}
+	
+				// Fall back - if no type was detected, always use string
+				if ( ! col.sType ) {
+					col.sType = 'string';
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Take the column definitions and static columns arrays and calculate how
+	 * they relate to column indexes. The callback function will then apply the
+	 * definition found for a column to a suitable configuration object.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {array} aoColDefs The aoColumnDefs array that is to be applied
+	 *  @param {array} aoCols The aoColumns array that defines columns individually
+	 *  @param {function} fn Callback function - takes two parameters, the calculated
+	 *    column index and the definition for that column.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )
+	{
+		var i, iLen, j, jLen, k, kLen, def;
+		var columns = oSettings.aoColumns;
+	
+		// Column definitions with aTargets
+		if ( aoColDefs )
+		{
+			/* Loop over the definitions array - loop in reverse so first instance has priority */
+			for ( i=aoColDefs.length-1 ; i>=0 ; i-- )
+			{
+				def = aoColDefs[i];
+	
+				/* Each definition can target multiple columns, as it is an array */
+				var aTargets = def.targets !== undefined ?
+					def.targets :
+					def.aTargets;
+	
+				if ( ! $.isArray( aTargets ) )
+				{
+					aTargets = [ aTargets ];
+				}
+	
+				for ( j=0, jLen=aTargets.length ; j<jLen ; j++ )
+				{
+					if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )
+					{
+						/* Add columns that we don't yet know about */
+						while( columns.length <= aTargets[j] )
+						{
+							_fnAddColumn( oSettings );
+						}
+	
+						/* Integer, basic index */
+						fn( aTargets[j], def );
+					}
+					else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )
+					{
+						/* Negative integer, right to left column counting */
+						fn( columns.length+aTargets[j], def );
+					}
+					else if ( typeof aTargets[j] === 'string' )
+					{
+						/* Class name matching on TH element */
+						for ( k=0, kLen=columns.length ; k<kLen ; k++ )
+						{
+							if ( aTargets[j] == "_all" ||
+							     $(columns[k].nTh).hasClass( aTargets[j] ) )
+							{
+								fn( k, def );
+							}
+						}
+					}
+				}
+			}
+		}
+	
+		// Statically defined columns array
+		if ( aoCols )
+		{
+			for ( i=0, iLen=aoCols.length ; i<iLen ; i++ )
+			{
+				fn( i, aoCols[i] );
+			}
+		}
+	}
+	
+	/**
+	 * Add a data array to the table, creating DOM node etc. This is the parallel to
+	 * _fnGatherData, but for adding rows from a Javascript source, rather than a
+	 * DOM source.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {array} aData data array to be added
+	 *  @param {node} [nTr] TR element to add to the table - optional. If not given,
+	 *    DataTables will create a row automatically
+	 *  @param {array} [anTds] Array of TD|TH elements for the row - must be given
+	 *    if nTr is.
+	 *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddData ( oSettings, aDataIn, nTr, anTds )
+	{
+		/* Create the object for storing information about this new row */
+		var iRow = oSettings.aoData.length;
+		var oData = $.extend( true, {}, DataTable.models.oRow, {
+			src: nTr ? 'dom' : 'data',
+			idx: iRow
+		} );
+	
+		oData._aData = aDataIn;
+		oSettings.aoData.push( oData );
+	
+		/* Create the cells */
+		var nTd, sThisType;
+		var columns = oSettings.aoColumns;
+	
+		// Invalidate the column types as the new data needs to be revalidated
+		for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
+		{
+			columns[i].sType = null;
+		}
+	
+		/* Add to the display array */
+		oSettings.aiDisplayMaster.push( iRow );
+	
+		var id = oSettings.rowIdFn( aDataIn );
+		if ( id !== undefined ) {
+			oSettings.aIds[ id ] = oData;
+		}
+	
+		/* Create the DOM information, or register it if already present */
+		if ( nTr || ! oSettings.oFeatures.bDeferRender )
+		{
+			_fnCreateTr( oSettings, iRow, nTr, anTds );
+		}
+	
+		return iRow;
+	}
+	
+	
+	/**
+	 * Add one or more TR elements to the table. Generally we'd expect to
+	 * use this for reading data from a DOM sourced table, but it could be
+	 * used for an TR element. Note that if a TR is given, it is used (i.e.
+	 * it is not cloned).
+	 *  @param {object} settings dataTables settings object
+	 *  @param {array|node|jQuery} trs The TR element(s) to add to the table
+	 *  @returns {array} Array of indexes for the added rows
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddTr( settings, trs )
+	{
+		var row;
+	
+		// Allow an individual node to be passed in
+		if ( ! (trs instanceof $) ) {
+			trs = $(trs);
+		}
+	
+		return trs.map( function (i, el) {
+			row = _fnGetRowElements( settings, el );
+			return _fnAddData( settings, row.data, el, row.cells );
+		} );
+	}
+	
+	
+	/**
+	 * Take a TR element and convert it to an index in aoData
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {node} n the TR element to find
+	 *  @returns {int} index if the node is found, null if not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnNodeToDataIndex( oSettings, n )
+	{
+		return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;
+	}
+	
+	
+	/**
+	 * Take a TD element and convert it into a column data index (not the visible index)
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iRow The row number the TD/TH can be found in
+	 *  @param {node} n The TD/TH element to find
+	 *  @returns {int} index if the node is found, -1 if not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnNodeToColumnIndex( oSettings, iRow, n )
+	{
+		return $.inArray( n, oSettings.aoData[ iRow ].anCells );
+	}
+	
+	
+	/**
+	 * Get the data for a given cell from the internal cache, taking into account data mapping
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} rowIdx aoData row id
+	 *  @param {int} colIdx Column index
+	 *  @param {string} type data get type ('display', 'type' 'filter' 'sort')
+	 *  @returns {*} Cell data
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetCellData( settings, rowIdx, colIdx, type )
+	{
+		var draw           = settings.iDraw;
+		var col            = settings.aoColumns[colIdx];
+		var rowData        = settings.aoData[rowIdx]._aData;
+		var defaultContent = col.sDefaultContent;
+		var cellData       = col.fnGetData( rowData, type, {
+			settings: settings,
+			row:      rowIdx,
+			col:      colIdx
+		} );
+	
+		if ( cellData === undefined ) {
+			if ( settings.iDrawError != draw && defaultContent === null ) {
+				_fnLog( settings, 0, "Requested unknown parameter "+
+					(typeof col.mData=='function' ? '{function}' : "'"+col.mData+"'")+
+					" for row "+rowIdx+", column "+colIdx, 4 );
+				settings.iDrawError = draw;
+			}
+			return defaultContent;
+		}
+	
+		// When the data source is null and a specific data type is requested (i.e.
+		// not the original data), we can use default column data
+		if ( (cellData === rowData || cellData === null) && defaultContent !== null && type !== undefined ) {
+			cellData = defaultContent;
+		}
+		else if ( typeof cellData === 'function' ) {
+			// If the data source is a function, then we run it and use the return,
+			// executing in the scope of the data object (for instances)
+			return cellData.call( rowData );
+		}
+	
+		if ( cellData === null && type == 'display' ) {
+			return '';
+		}
+		return cellData;
+	}
+	
+	
+	/**
+	 * Set the value for a specific cell, into the internal data cache
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} rowIdx aoData row id
+	 *  @param {int} colIdx Column index
+	 *  @param {*} val Value to set
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSetCellData( settings, rowIdx, colIdx, val )
+	{
+		var col     = settings.aoColumns[colIdx];
+		var rowData = settings.aoData[rowIdx]._aData;
+	
+		col.fnSetData( rowData, val, {
+			settings: settings,
+			row:      rowIdx,
+			col:      colIdx
+		}  );
+	}
+	
+	
+	// Private variable that is used to match action syntax in the data property object
+	var __reArray = /\[.*?\]$/;
+	var __reFn = /\(\)$/;
+	
+	/**
+	 * Split string on periods, taking into account escaped periods
+	 * @param  {string} str String to split
+	 * @return {array} Split string
+	 */
+	function _fnSplitObjNotation( str )
+	{
+		return $.map( str.match(/(\\.|[^\.])+/g) || [''], function ( s ) {
+			return s.replace(/\\\./g, '.');
+		} );
+	}
+	
+	
+	/**
+	 * Return a function that can be used to get data from a source object, taking
+	 * into account the ability to use nested objects as a source
+	 *  @param {string|int|function} mSource The data source for the object
+	 *  @returns {function} Data get function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetObjectDataFn( mSource )
+	{
+		if ( $.isPlainObject( mSource ) )
+		{
+			/* Build an object of get functions, and wrap them in a single call */
+			var o = {};
+			$.each( mSource, function (key, val) {
+				if ( val ) {
+					o[key] = _fnGetObjectDataFn( val );
+				}
+			} );
+	
+			return function (data, type, row, meta) {
+				var t = o[type] || o._;
+				return t !== undefined ?
+					t(data, type, row, meta) :
+					data;
+			};
+		}
+		else if ( mSource === null )
+		{
+			/* Give an empty string for rendering / sorting etc */
+			return function (data) { // type, row and meta also passed, but not used
+				return data;
+			};
+		}
+		else if ( typeof mSource === 'function' )
+		{
+			return function (data, type, row, meta) {
+				return mSource( data, type, row, meta );
+			};
+		}
+		else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||
+			      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )
+		{
+			/* If there is a . in the source string then the data source is in a
+			 * nested object so we loop over the data for each level to get the next
+			 * level down. On each loop we test for undefined, and if found immediately
+			 * return. This allows entire objects to be missing and sDefaultContent to
+			 * be used if defined, rather than throwing an error
+			 */
+			var fetchData = function (data, type, src) {
+				var arrayNotation, funcNotation, out, innerSrc;
+	
+				if ( src !== "" )
+				{
+					var a = _fnSplitObjNotation( src );
+	
+					for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+					{
+						// Check if we are dealing with special notation
+						arrayNotation = a[i].match(__reArray);
+						funcNotation = a[i].match(__reFn);
+	
+						if ( arrayNotation )
+						{
+							// Array notation
+							a[i] = a[i].replace(__reArray, '');
+	
+							// Condition allows simply [] to be passed in
+							if ( a[i] !== "" ) {
+								data = data[ a[i] ];
+							}
+							out = [];
+	
+							// Get the remainder of the nested object to get
+							a.splice( 0, i+1 );
+							innerSrc = a.join('.');
+	
+							// Traverse each entry in the array getting the properties requested
+							if ( $.isArray( data ) ) {
+								for ( var j=0, jLen=data.length ; j<jLen ; j++ ) {
+									out.push( fetchData( data[j], type, innerSrc ) );
+								}
+							}
+	
+							// If a string is given in between the array notation indicators, that
+							// is used to join the strings together, otherwise an array is returned
+							var join = arrayNotation[0].substring(1, arrayNotation[0].length-1);
+							data = (join==="") ? out : out.join(join);
+	
+							// The inner call to fetchData has already traversed through the remainder
+							// of the source requested, so we exit from the loop
+							break;
+						}
+						else if ( funcNotation )
+						{
+							// Function call
+							a[i] = a[i].replace(__reFn, '');
+							data = data[ a[i] ]();
+							continue;
+						}
+	
+						if ( data === null || data[ a[i] ] === undefined )
+						{
+							return undefined;
+						}
+						data = data[ a[i] ];
+					}
+				}
+	
+				return data;
+			};
+	
+			return function (data, type) { // row and meta also passed, but not used
+				return fetchData( data, type, mSource );
+			};
+		}
+		else
+		{
+			/* Array or flat object mapping */
+			return function (data, type) { // row and meta also passed, but not used
+				return data[mSource];
+			};
+		}
+	}
+	
+	
+	/**
+	 * Return a function that can be used to set data from a source object, taking
+	 * into account the ability to use nested objects as a source
+	 *  @param {string|int|function} mSource The data source for the object
+	 *  @returns {function} Data set function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSetObjectDataFn( mSource )
+	{
+		if ( $.isPlainObject( mSource ) )
+		{
+			/* Unlike get, only the underscore (global) option is used for for
+			 * setting data since we don't know the type here. This is why an object
+			 * option is not documented for `mData` (which is read/write), but it is
+			 * for `mRender` which is read only.
+			 */
+			return _fnSetObjectDataFn( mSource._ );
+		}
+		else if ( mSource === null )
+		{
+			/* Nothing to do when the data source is null */
+			return function () {};
+		}
+		else if ( typeof mSource === 'function' )
+		{
+			return function (data, val, meta) {
+				mSource( data, 'set', val, meta );
+			};
+		}
+		else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||
+			      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )
+		{
+			/* Like the get, we need to get data from a nested object */
+			var setData = function (data, val, src) {
+				var a = _fnSplitObjNotation( src ), b;
+				var aLast = a[a.length-1];
+				var arrayNotation, funcNotation, o, innerSrc;
+	
+				for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )
+				{
+					// Check if we are dealing with an array notation request
+					arrayNotation = a[i].match(__reArray);
+					funcNotation = a[i].match(__reFn);
+	
+					if ( arrayNotation )
+					{
+						a[i] = a[i].replace(__reArray, '');
+						data[ a[i] ] = [];
+	
+						// Get the remainder of the nested object to set so we can recurse
+						b = a.slice();
+						b.splice( 0, i+1 );
+						innerSrc = b.join('.');
+	
+						// Traverse each entry in the array setting the properties requested
+						if ( $.isArray( val ) )
+						{
+							for ( var j=0, jLen=val.length ; j<jLen ; j++ )
+							{
+								o = {};
+								setData( o, val[j], innerSrc );
+								data[ a[i] ].push( o );
+							}
+						}
+						else
+						{
+							// We've been asked to save data to an array, but it
+							// isn't array data to be saved. Best that can be done
+							// is to just save the value.
+							data[ a[i] ] = val;
+						}
+	
+						// The inner call to setData has already traversed through the remainder
+						// of the source and has set the data, thus we can exit here
+						return;
+					}
+					else if ( funcNotation )
+					{
+						// Function call
+						a[i] = a[i].replace(__reFn, '');
+						data = data[ a[i] ]( val );
+					}
+	
+					// If the nested object doesn't currently exist - since we are
+					// trying to set the value - create it
+					if ( data[ a[i] ] === null || data[ a[i] ] === undefined )
+					{
+						data[ a[i] ] = {};
+					}
+					data = data[ a[i] ];
+				}
+	
+				// Last item in the input - i.e, the actual set
+				if ( aLast.match(__reFn ) )
+				{
+					// Function call
+					data = data[ aLast.replace(__reFn, '') ]( val );
+				}
+				else
+				{
+					// If array notation is used, we just want to strip it and use the property name
+					// and assign the value. If it isn't used, then we get the result we want anyway
+					data[ aLast.replace(__reArray, '') ] = val;
+				}
+			};
+	
+			return function (data, val) { // meta is also passed in, but not used
+				return setData( data, val, mSource );
+			};
+		}
+		else
+		{
+			/* Array or flat object mapping */
+			return function (data, val) { // meta is also passed in, but not used
+				data[mSource] = val;
+			};
+		}
+	}
+	
+	
+	/**
+	 * Return an array with the full table data
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns array {array} aData Master data array
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetDataMaster ( settings )
+	{
+		return _pluck( settings.aoData, '_aData' );
+	}
+	
+	
+	/**
+	 * Nuke the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnClearTable( settings )
+	{
+		settings.aoData.length = 0;
+		settings.aiDisplayMaster.length = 0;
+		settings.aiDisplay.length = 0;
+		settings.aIds = {};
+	}
+	
+	
+	 /**
+	 * Take an array of integers (index array) and remove a target integer (value - not
+	 * the key!)
+	 *  @param {array} a Index array to target
+	 *  @param {int} iTarget value to find
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDeleteIndex( a, iTarget, splice )
+	{
+		var iTargetIndex = -1;
+	
+		for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+		{
+			if ( a[i] == iTarget )
+			{
+				iTargetIndex = i;
+			}
+			else if ( a[i] > iTarget )
+			{
+				a[i]--;
+			}
+		}
+	
+		if ( iTargetIndex != -1 && splice === undefined )
+		{
+			a.splice( iTargetIndex, 1 );
+		}
+	}
+	
+	
+	/**
+	 * Mark cached data as invalid such that a re-read of the data will occur when
+	 * the cached data is next requested. Also update from the data source object.
+	 *
+	 * @param {object} settings DataTables settings object
+	 * @param {int}    rowIdx   Row index to invalidate
+	 * @param {string} [src]    Source to invalidate from: undefined, 'auto', 'dom'
+	 *     or 'data'
+	 * @param {int}    [colIdx] Column index to invalidate. If undefined the whole
+	 *     row will be invalidated
+	 * @memberof DataTable#oApi
+	 *
+	 * @todo For the modularisation of v1.11 this will need to become a callback, so
+	 *   the sort and filter methods can subscribe to it. That will required
+	 *   initialisation options for sorting, which is why it is not already baked in
+	 */
+	function _fnInvalidate( settings, rowIdx, src, colIdx )
+	{
+		var row = settings.aoData[ rowIdx ];
+		var i, ien;
+		var cellWrite = function ( cell, col ) {
+			// This is very frustrating, but in IE if you just write directly
+			// to innerHTML, and elements that are overwritten are GC'ed,
+			// even if there is a reference to them elsewhere
+			while ( cell.childNodes.length ) {
+				cell.removeChild( cell.firstChild );
+			}
+	
+			cell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' );
+		};
+	
+		// Are we reading last data from DOM or the data object?
+		if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {
+			// Read the data from the DOM
+			row._aData = _fnGetRowElements(
+					settings, row, colIdx, colIdx === undefined ? undefined : row._aData
+				)
+				.data;
+		}
+		else {
+			// Reading from data object, update the DOM
+			var cells = row.anCells;
+	
+			if ( cells ) {
+				if ( colIdx !== undefined ) {
+					cellWrite( cells[colIdx], colIdx );
+				}
+				else {
+					for ( i=0, ien=cells.length ; i<ien ; i++ ) {
+						cellWrite( cells[i], i );
+					}
+				}
+			}
+		}
+	
+		// For both row and cell invalidation, the cached data for sorting and
+		// filtering is nulled out
+		row._aSortData = null;
+		row._aFilterData = null;
+	
+		// Invalidate the type for a specific column (if given) or all columns since
+		// the data might have changed
+		var cols = settings.aoColumns;
+		if ( colIdx !== undefined ) {
+			cols[ colIdx ].sType = null;
+		}
+		else {
+			for ( i=0, ien=cols.length ; i<ien ; i++ ) {
+				cols[i].sType = null;
+			}
+	
+			// Update DataTables special `DT_*` attributes for the row
+			_fnRowAttributes( settings, row );
+		}
+	}
+	
+	
+	/**
+	 * Build a data source object from an HTML row, reading the contents of the
+	 * cells that are in the row.
+	 *
+	 * @param {object} settings DataTables settings object
+	 * @param {node|object} TR element from which to read data or existing row
+	 *   object from which to re-read the data from the cells
+	 * @param {int} [colIdx] Optional column index
+	 * @param {array|object} [d] Data source object. If `colIdx` is given then this
+	 *   parameter should also be given and will be used to write the data into.
+	 *   Only the column in question will be written
+	 * @returns {object} Object with two parameters: `data` the data read, in
+	 *   document order, and `cells` and array of nodes (they can be useful to the
+	 *   caller, so rather than needing a second traversal to get them, just return
+	 *   them from here).
+	 * @memberof DataTable#oApi
+	 */
+	function _fnGetRowElements( settings, row, colIdx, d )
+	{
+		var
+			tds = [],
+			td = row.firstChild,
+			name, col, o, i=0, contents,
+			columns = settings.aoColumns,
+			objectRead = settings._rowReadObject;
+	
+		// Allow the data object to be passed in, or construct
+		d = d !== undefined ?
+			d :
+			objectRead ?
+				{} :
+				[];
+	
+		var attr = function ( str, td  ) {
+			if ( typeof str === 'string' ) {
+				var idx = str.indexOf('@');
+	
+				if ( idx !== -1 ) {
+					var attr = str.substring( idx+1 );
+					var setter = _fnSetObjectDataFn( str );
+					setter( d, td.getAttribute( attr ) );
+				}
+			}
+		};
+	
+		// Read data from a cell and store into the data object
+		var cellProcess = function ( cell ) {
+			if ( colIdx === undefined || colIdx === i ) {
+				col = columns[i];
+				contents = $.trim(cell.innerHTML);
+	
+				if ( col && col._bAttrSrc ) {
+					var setter = _fnSetObjectDataFn( col.mData._ );
+					setter( d, contents );
+	
+					attr( col.mData.sort, cell );
+					attr( col.mData.type, cell );
+					attr( col.mData.filter, cell );
+				}
+				else {
+					// Depending on the `data` option for the columns the data can
+					// be read to either an object or an array.
+					if ( objectRead ) {
+						if ( ! col._setter ) {
+							// Cache the setter function
+							col._setter = _fnSetObjectDataFn( col.mData );
+						}
+						col._setter( d, contents );
+					}
+					else {
+						d[i] = contents;
+					}
+				}
+			}
+	
+			i++;
+		};
+	
+		if ( td ) {
+			// `tr` element was passed in
+			while ( td ) {
+				name = td.nodeName.toUpperCase();
+	
+				if ( name == "TD" || name == "TH" ) {
+					cellProcess( td );
+					tds.push( td );
+				}
+	
+				td = td.nextSibling;
+			}
+		}
+		else {
+			// Existing row object passed in
+			tds = row.anCells;
+	
+			for ( var j=0, jen=tds.length ; j<jen ; j++ ) {
+				cellProcess( tds[j] );
+			}
+		}
+	
+		// Read the ID from the DOM if present
+		var rowNode = row.firstChild ? row : row.nTr;
+	
+		if ( rowNode ) {
+			var id = rowNode.getAttribute( 'id' );
+	
+			if ( id ) {
+				_fnSetObjectDataFn( settings.rowId )( d, id );
+			}
+		}
+	
+		return {
+			data: d,
+			cells: tds
+		};
+	}
+	/**
+	 * Create a new TR element (and it's TD children) for a row
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iRow Row to consider
+	 *  @param {node} [nTrIn] TR element to add to the table - optional. If not given,
+	 *    DataTables will create a row automatically
+	 *  @param {array} [anTds] Array of TD|TH elements for the row - must be given
+	 *    if nTr is.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCreateTr ( oSettings, iRow, nTrIn, anTds )
+	{
+		var
+			row = oSettings.aoData[iRow],
+			rowData = row._aData,
+			cells = [],
+			nTr, nTd, oCol,
+			i, iLen, create;
+	
+		if ( row.nTr === null )
+		{
+			nTr = nTrIn || document.createElement('tr');
+	
+			row.nTr = nTr;
+			row.anCells = cells;
+	
+			/* Use a private property on the node to allow reserve mapping from the node
+			 * to the aoData array for fast look up
+			 */
+			nTr._DT_RowIndex = iRow;
+	
+			/* Special parameters can be given by the data source to be used on the row */
+			_fnRowAttributes( oSettings, row );
+	
+			/* Process each column */
+			for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+			{
+				oCol = oSettings.aoColumns[i];
+				create = nTrIn ? false : true;
+	
+				nTd = create ? document.createElement( oCol.sCellType ) : anTds[i];
+				nTd._DT_CellIndex = {
+					row: iRow,
+					column: i
+				};
+				
+				cells.push( nTd );
+	
+				// Need to create the HTML if new, or if a rendering function is defined
+				if ( create || ((!nTrIn || oCol.mRender || oCol.mData !== i) &&
+					 (!$.isPlainObject(oCol.mData) || oCol.mData._ !== i+'.display')
+				)) {
+					nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );
+				}
+	
+				/* Add user defined class */
+				if ( oCol.sClass )
+				{
+					nTd.className += ' '+oCol.sClass;
+				}
+	
+				// Visibility - add or remove as required
+				if ( oCol.bVisible && ! nTrIn )
+				{
+					nTr.appendChild( nTd );
+				}
+				else if ( ! oCol.bVisible && nTrIn )
+				{
+					nTd.parentNode.removeChild( nTd );
+				}
+	
+				if ( oCol.fnCreatedCell )
+				{
+					oCol.fnCreatedCell.call( oSettings.oInstance,
+						nTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i
+					);
+				}
+			}
+	
+			_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow, cells] );
+		}
+	
+		// Remove once webkit bug 131819 and Chromium bug 365619 have been resolved
+		// and deployed
+		row.nTr.setAttribute( 'role', 'row' );
+	}
+	
+	
+	/**
+	 * Add attributes to a row based on the special `DT_*` parameters in a data
+	 * source object.
+	 *  @param {object} settings DataTables settings object
+	 *  @param {object} DataTables row object for the row to be modified
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnRowAttributes( settings, row )
+	{
+		var tr = row.nTr;
+		var data = row._aData;
+	
+		if ( tr ) {
+			var id = settings.rowIdFn( data );
+	
+			if ( id ) {
+				tr.id = id;
+			}
+	
+			if ( data.DT_RowClass ) {
+				// Remove any classes added by DT_RowClass before
+				var a = data.DT_RowClass.split(' ');
+				row.__rowc = row.__rowc ?
+					_unique( row.__rowc.concat( a ) ) :
+					a;
+	
+				$(tr)
+					.removeClass( row.__rowc.join(' ') )
+					.addClass( data.DT_RowClass );
+			}
+	
+			if ( data.DT_RowAttr ) {
+				$(tr).attr( data.DT_RowAttr );
+			}
+	
+			if ( data.DT_RowData ) {
+				$(tr).data( data.DT_RowData );
+			}
+		}
+	}
+	
+	
+	/**
+	 * Create the HTML header for the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnBuildHead( oSettings )
+	{
+		var i, ien, cell, row, column;
+		var thead = oSettings.nTHead;
+		var tfoot = oSettings.nTFoot;
+		var createHeader = $('th, td', thead).length === 0;
+		var classes = oSettings.oClasses;
+		var columns = oSettings.aoColumns;
+	
+		if ( createHeader ) {
+			row = $('<tr/>').appendTo( thead );
+		}
+	
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			column = columns[i];
+			cell = $( column.nTh ).addClass( column.sClass );
+	
+			if ( createHeader ) {
+				cell.appendTo( row );
+			}
+	
+			// 1.11 move into sorting
+			if ( oSettings.oFeatures.bSort ) {
+				cell.addClass( column.sSortingClass );
+	
+				if ( column.bSortable !== false ) {
+					cell
+						.attr( 'tabindex', oSettings.iTabIndex )
+						.attr( 'aria-controls', oSettings.sTableId );
+	
+					_fnSortAttachListener( oSettings, column.nTh, i );
+				}
+			}
+	
+			if ( column.sTitle != cell[0].innerHTML ) {
+				cell.html( column.sTitle );
+			}
+	
+			_fnRenderer( oSettings, 'header' )(
+				oSettings, cell, column, classes
+			);
+		}
+	
+		if ( createHeader ) {
+			_fnDetectHeader( oSettings.aoHeader, thead );
+		}
+		
+		/* ARIA role for the rows */
+	 	$(thead).find('>tr').attr('role', 'row');
+	
+		/* Deal with the footer - add classes if required */
+		$(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH );
+		$(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH );
+	
+		// Cache the footer cells. Note that we only take the cells from the first
+		// row in the footer. If there is more than one row the user wants to
+		// interact with, they need to use the table().foot() method. Note also this
+		// allows cells to be used for multiple columns using colspan
+		if ( tfoot !== null ) {
+			var cells = oSettings.aoFooter[0];
+	
+			for ( i=0, ien=cells.length ; i<ien ; i++ ) {
+				column = columns[i];
+				column.nTf = cells[i].cell;
+	
+				if ( column.sClass ) {
+					$(column.nTf).addClass( column.sClass );
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Draw the header (or footer) element based on the column visibility states. The
+	 * methodology here is to use the layout array from _fnDetectHeader, modified for
+	 * the instantaneous column visibility, to construct the new layout. The grid is
+	 * traversed over cell at a time in a rows x columns grid fashion, although each
+	 * cell insert can cover multiple elements in the grid - which is tracks using the
+	 * aApplied array. Cell inserts in the grid will only occur where there isn't
+	 * already a cell in that position.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param array {objects} aoSource Layout array from _fnDetectHeader
+	 *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
+	{
+		var i, iLen, j, jLen, k, kLen, n, nLocalTr;
+		var aoLocal = [];
+		var aApplied = [];
+		var iColumns = oSettings.aoColumns.length;
+		var iRowspan, iColspan;
+	
+		if ( ! aoSource )
+		{
+			return;
+		}
+	
+		if (  bIncludeHidden === undefined )
+		{
+			bIncludeHidden = false;
+		}
+	
+		/* Make a copy of the master layout array, but without the visible columns in it */
+		for ( i=0, iLen=aoSource.length ; i<iLen ; i++ )
+		{
+			aoLocal[i] = aoSource[i].slice();
+			aoLocal[i].nTr = aoSource[i].nTr;
+	
+			/* Remove any columns which are currently hidden */
+			for ( j=iColumns-1 ; j>=0 ; j-- )
+			{
+				if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )
+				{
+					aoLocal[i].splice( j, 1 );
+				}
+			}
+	
+			/* Prep the applied array - it needs an element for each row */
+			aApplied.push( [] );
+		}
+	
+		for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )
+		{
+			nLocalTr = aoLocal[i].nTr;
+	
+			/* All cells are going to be replaced, so empty out the row */
+			if ( nLocalTr )
+			{
+				while( (n = nLocalTr.firstChild) )
+				{
+					nLocalTr.removeChild( n );
+				}
+			}
+	
+			for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )
+			{
+				iRowspan = 1;
+				iColspan = 1;
+	
+				/* Check to see if there is already a cell (row/colspan) covering our target
+				 * insert point. If there is, then there is nothing to do.
+				 */
+				if ( aApplied[i][j] === undefined )
+				{
+					nLocalTr.appendChild( aoLocal[i][j].cell );
+					aApplied[i][j] = 1;
+	
+					/* Expand the cell to cover as many rows as needed */
+					while ( aoLocal[i+iRowspan] !== undefined &&
+					        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )
+					{
+						aApplied[i+iRowspan][j] = 1;
+						iRowspan++;
+					}
+	
+					/* Expand the cell to cover as many columns as needed */
+					while ( aoLocal[i][j+iColspan] !== undefined &&
+					        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )
+					{
+						/* Must update the applied array over the rows for the columns */
+						for ( k=0 ; k<iRowspan ; k++ )
+						{
+							aApplied[i+k][j+iColspan] = 1;
+						}
+						iColspan++;
+					}
+	
+					/* Do the actual expansion in the DOM */
+					$(aoLocal[i][j].cell)
+						.attr('rowspan', iRowspan)
+						.attr('colspan', iColspan);
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Insert the required TR nodes into the table for display
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDraw( oSettings )
+	{
+		/* Provide a pre-callback function which can be used to cancel the draw is false is returned */
+		var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );
+		if ( $.inArray( false, aPreDraw ) !== -1 )
+		{
+			_fnProcessingDisplay( oSettings, false );
+			return;
+		}
+	
+		var i, iLen, n;
+		var anRows = [];
+		var iRowCount = 0;
+		var asStripeClasses = oSettings.asStripeClasses;
+		var iStripes = asStripeClasses.length;
+		var iOpenRows = oSettings.aoOpenRows.length;
+		var oLang = oSettings.oLanguage;
+		var iInitDisplayStart = oSettings.iInitDisplayStart;
+		var bServerSide = _fnDataSource( oSettings ) == 'ssp';
+		var aiDisplay = oSettings.aiDisplay;
+	
+		oSettings.bDrawing = true;
+	
+		/* Check and see if we have an initial draw position from state saving */
+		if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )
+		{
+			oSettings._iDisplayStart = bServerSide ?
+				iInitDisplayStart :
+				iInitDisplayStart >= oSettings.fnRecordsDisplay() ?
+					0 :
+					iInitDisplayStart;
+	
+			oSettings.iInitDisplayStart = -1;
+		}
+	
+		var iDisplayStart = oSettings._iDisplayStart;
+		var iDisplayEnd = oSettings.fnDisplayEnd();
+	
+		/* Server-side processing draw intercept */
+		if ( oSettings.bDeferLoading )
+		{
+			oSettings.bDeferLoading = false;
+			oSettings.iDraw++;
+			_fnProcessingDisplay( oSettings, false );
+		}
+		else if ( !bServerSide )
+		{
+			oSettings.iDraw++;
+		}
+		else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )
+		{
+			return;
+		}
+	
+		if ( aiDisplay.length !== 0 )
+		{
+			var iStart = bServerSide ? 0 : iDisplayStart;
+			var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;
+	
+			for ( var j=iStart ; j<iEnd ; j++ )
+			{
+				var iDataIndex = aiDisplay[j];
+				var aoData = oSettings.aoData[ iDataIndex ];
+				if ( aoData.nTr === null )
+				{
+					_fnCreateTr( oSettings, iDataIndex );
+				}
+	
+				var nRow = aoData.nTr;
+	
+				/* Remove the old striping classes and then add the new one */
+				if ( iStripes !== 0 )
+				{
+					var sStripe = asStripeClasses[ iRowCount % iStripes ];
+					if ( aoData._sRowStripe != sStripe )
+					{
+						$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );
+						aoData._sRowStripe = sStripe;
+					}
+				}
+	
+				// Row callback functions - might want to manipulate the row
+				// iRowCount and j are not currently documented. Are they at all
+				// useful?
+				_fnCallbackFire( oSettings, 'aoRowCallback', null,
+					[nRow, aoData._aData, iRowCount, j, iDataIndex] );
+	
+				anRows.push( nRow );
+				iRowCount++;
+			}
+		}
+		else
+		{
+			/* Table is empty - create a row with an empty message in it */
+			var sZero = oLang.sZeroRecords;
+			if ( oSettings.iDraw == 1 &&  _fnDataSource( oSettings ) == 'ajax' )
+			{
+				sZero = oLang.sLoadingRecords;
+			}
+			else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )
+			{
+				sZero = oLang.sEmptyTable;
+			}
+	
+			anRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } )
+				.append( $('<td />', {
+					'valign':  'top',
+					'colSpan': _fnVisbleColumns( oSettings ),
+					'class':   oSettings.oClasses.sRowEmpty
+				} ).html( sZero ) )[0];
+		}
+	
+		/* Header and footer callbacks */
+		_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],
+			_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );
+	
+		_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],
+			_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );
+	
+		var body = $(oSettings.nTBody);
+	
+		body.children().detach();
+		body.append( $(anRows) );
+	
+		/* Call all required callback functions for the end of a draw */
+		_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );
+	
+		/* Draw is complete, sorting and filtering must be as well */
+		oSettings.bSorted = false;
+		oSettings.bFiltered = false;
+		oSettings.bDrawing = false;
+	}
+	
+	
+	/**
+	 * Redraw the table - taking account of the various features which are enabled
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {boolean} [holdPosition] Keep the current paging position. By default
+	 *    the paging is reset to the first page
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnReDraw( settings, holdPosition )
+	{
+		var
+			features = settings.oFeatures,
+			sort     = features.bSort,
+			filter   = features.bFilter;
+	
+		if ( sort ) {
+			_fnSort( settings );
+		}
+	
+		if ( filter ) {
+			_fnFilterComplete( settings, settings.oPreviousSearch );
+		}
+		else {
+			// No filtering, so we want to just use the display master
+			settings.aiDisplay = settings.aiDisplayMaster.slice();
+		}
+	
+		if ( holdPosition !== true ) {
+			settings._iDisplayStart = 0;
+		}
+	
+		// Let any modules know about the draw hold position state (used by
+		// scrolling internally)
+		settings._drawHold = holdPosition;
+	
+		_fnDraw( settings );
+	
+		settings._drawHold = false;
+	}
+	
+	
+	/**
+	 * Add the options to the page HTML for the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddOptionsHtml ( oSettings )
+	{
+		var classes = oSettings.oClasses;
+		var table = $(oSettings.nTable);
+		var holding = $('<div/>').insertBefore( table ); // Holding element for speed
+		var features = oSettings.oFeatures;
+	
+		// All DataTables are wrapped in a div
+		var insert = $('<div/>', {
+			id:      oSettings.sTableId+'_wrapper',
+			'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)
+		} );
+	
+		oSettings.nHolding = holding[0];
+		oSettings.nTableWrapper = insert[0];
+		oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;
+	
+		/* Loop over the user set positioning and place the elements as needed */
+		var aDom = oSettings.sDom.split('');
+		var featureNode, cOption, nNewNode, cNext, sAttr, j;
+		for ( var i=0 ; i<aDom.length ; i++ )
+		{
+			featureNode = null;
+			cOption = aDom[i];
+	
+			if ( cOption == '<' )
+			{
+				/* New container div */
+				nNewNode = $('<div/>')[0];
+	
+				/* Check to see if we should append an id and/or a class name to the container */
+				cNext = aDom[i+1];
+				if ( cNext == "'" || cNext == '"' )
+				{
+					sAttr = "";
+					j = 2;
+					while ( aDom[i+j] != cNext )
+					{
+						sAttr += aDom[i+j];
+						j++;
+					}
+	
+					/* Replace jQuery UI constants @todo depreciated */
+					if ( sAttr == "H" )
+					{
+						sAttr = classes.sJUIHeader;
+					}
+					else if ( sAttr == "F" )
+					{
+						sAttr = classes.sJUIFooter;
+					}
+	
+					/* The attribute can be in the format of "#id.class", "#id" or "class" This logic
+					 * breaks the string into parts and applies them as needed
+					 */
+					if ( sAttr.indexOf('.') != -1 )
+					{
+						var aSplit = sAttr.split('.');
+						nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);
+						nNewNode.className = aSplit[1];
+					}
+					else if ( sAttr.charAt(0) == "#" )
+					{
+						nNewNode.id = sAttr.substr(1, sAttr.length-1);
+					}
+					else
+					{
+						nNewNode.className = sAttr;
+					}
+	
+					i += j; /* Move along the position array */
+				}
+	
+				insert.append( nNewNode );
+				insert = $(nNewNode);
+			}
+			else if ( cOption == '>' )
+			{
+				/* End container div */
+				insert = insert.parent();
+			}
+			// @todo Move options into their own plugins?
+			else if ( cOption == 'l' && features.bPaginate && features.bLengthChange )
+			{
+				/* Length */
+				featureNode = _fnFeatureHtmlLength( oSettings );
+			}
+			else if ( cOption == 'f' && features.bFilter )
+			{
+				/* Filter */
+				featureNode = _fnFeatureHtmlFilter( oSettings );
+			}
+			else if ( cOption == 'r' && features.bProcessing )
+			{
+				/* pRocessing */
+				featureNode = _fnFeatureHtmlProcessing( oSettings );
+			}
+			else if ( cOption == 't' )
+			{
+				/* Table */
+				featureNode = _fnFeatureHtmlTable( oSettings );
+			}
+			else if ( cOption ==  'i' && features.bInfo )
+			{
+				/* Info */
+				featureNode = _fnFeatureHtmlInfo( oSettings );
+			}
+			else if ( cOption == 'p' && features.bPaginate )
+			{
+				/* Pagination */
+				featureNode = _fnFeatureHtmlPaginate( oSettings );
+			}
+			else if ( DataTable.ext.feature.length !== 0 )
+			{
+				/* Plug-in features */
+				var aoFeatures = DataTable.ext.feature;
+				for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )
+				{
+					if ( cOption == aoFeatures[k].cFeature )
+					{
+						featureNode = aoFeatures[k].fnInit( oSettings );
+						break;
+					}
+				}
+			}
+	
+			/* Add to the 2D features array */
+			if ( featureNode )
+			{
+				var aanFeatures = oSettings.aanFeatures;
+	
+				if ( ! aanFeatures[cOption] )
+				{
+					aanFeatures[cOption] = [];
+				}
+	
+				aanFeatures[cOption].push( featureNode );
+				insert.append( featureNode );
+			}
+		}
+	
+		/* Built our DOM structure - replace the holding div with what we want */
+		holding.replaceWith( insert );
+		oSettings.nHolding = null;
+	}
+	
+	
+	/**
+	 * Use the DOM source to create up an array of header cells. The idea here is to
+	 * create a layout grid (array) of rows x columns, which contains a reference
+	 * to the cell that that point in the grid (regardless of col/rowspan), such that
+	 * any column / row could be removed and the new grid constructed
+	 *  @param array {object} aLayout Array to store the calculated layout in
+	 *  @param {node} nThead The header/footer element for the table
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDetectHeader ( aLayout, nThead )
+	{
+		var nTrs = $(nThead).children('tr');
+		var nTr, nCell;
+		var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;
+		var bUnique;
+		var fnShiftCol = function ( a, i, j ) {
+			var k = a[i];
+	                while ( k[j] ) {
+				j++;
+			}
+			return j;
+		};
+	
+		aLayout.splice( 0, aLayout.length );
+	
+		/* We know how many rows there are in the layout - so prep it */
+		for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+		{
+			aLayout.push( [] );
+		}
+	
+		/* Calculate a layout array */
+		for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+		{
+			nTr = nTrs[i];
+			iColumn = 0;
+	
+			/* For every cell in the row... */
+			nCell = nTr.firstChild;
+			while ( nCell ) {
+				if ( nCell.nodeName.toUpperCase() == "TD" ||
+				     nCell.nodeName.toUpperCase() == "TH" )
+				{
+					/* Get the col and rowspan attributes from the DOM and sanitise them */
+					iColspan = nCell.getAttribute('colspan') * 1;
+					iRowspan = nCell.getAttribute('rowspan') * 1;
+					iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;
+					iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;
+	
+					/* There might be colspan cells already in this row, so shift our target
+					 * accordingly
+					 */
+					iColShifted = fnShiftCol( aLayout, i, iColumn );
+	
+					/* Cache calculation for unique columns */
+					bUnique = iColspan === 1 ? true : false;
+	
+					/* If there is col / rowspan, copy the information into the layout grid */
+					for ( l=0 ; l<iColspan ; l++ )
+					{
+						for ( k=0 ; k<iRowspan ; k++ )
+						{
+							aLayout[i+k][iColShifted+l] = {
+								"cell": nCell,
+								"unique": bUnique
+							};
+							aLayout[i+k].nTr = nTr;
+						}
+					}
+				}
+				nCell = nCell.nextSibling;
+			}
+		}
+	}
+	
+	
+	/**
+	 * Get an array of unique th elements, one for each column
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {node} nHeader automatically detect the layout from this node - optional
+	 *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional
+	 *  @returns array {node} aReturn list of unique th's
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
+	{
+		var aReturn = [];
+		if ( !aLayout )
+		{
+			aLayout = oSettings.aoHeader;
+			if ( nHeader )
+			{
+				aLayout = [];
+				_fnDetectHeader( aLayout, nHeader );
+			}
+		}
+	
+		for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )
+		{
+			for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )
+			{
+				if ( aLayout[i][j].unique &&
+					 (!aReturn[j] || !oSettings.bSortCellsTop) )
+				{
+					aReturn[j] = aLayout[i][j].cell;
+				}
+			}
+		}
+	
+		return aReturn;
+	}
+	
+	/**
+	 * Create an Ajax call based on the table's settings, taking into account that
+	 * parameters can have multiple forms, and backwards compatibility.
+	 *
+	 * @param {object} oSettings dataTables settings object
+	 * @param {array} data Data to send to the server, required by
+	 *     DataTables - may be augmented by developer callbacks
+	 * @param {function} fn Callback function to run when data is obtained
+	 */
+	function _fnBuildAjax( oSettings, data, fn )
+	{
+		// Compatibility with 1.9-, allow fnServerData and event to manipulate
+		_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] );
+	
+		// Convert to object based for 1.10+ if using the old array scheme which can
+		// come from server-side processing or serverParams
+		if ( data && $.isArray(data) ) {
+			var tmp = {};
+			var rbracket = /(.*?)\[\]$/;
+	
+			$.each( data, function (key, val) {
+				var match = val.name.match(rbracket);
+	
+				if ( match ) {
+					// Support for arrays
+					var name = match[0];
+	
+					if ( ! tmp[ name ] ) {
+						tmp[ name ] = [];
+					}
+					tmp[ name ].push( val.value );
+				}
+				else {
+					tmp[val.name] = val.value;
+				}
+			} );
+			data = tmp;
+		}
+	
+		var ajaxData;
+		var ajax = oSettings.ajax;
+		var instance = oSettings.oInstance;
+		var callback = function ( json ) {
+			_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] );
+			fn( json );
+		};
+	
+		if ( $.isPlainObject( ajax ) && ajax.data )
+		{
+			ajaxData = ajax.data;
+	
+			var newData = typeof ajaxData === 'function' ?
+				ajaxData( data, oSettings ) :  // fn can manipulate data or return
+				ajaxData;                      // an object object or array to merge
+	
+			// If the function returned something, use that alone
+			data = typeof ajaxData === 'function' && newData ?
+				newData :
+				$.extend( true, data, newData );
+	
+			// Remove the data property as we've resolved it already and don't want
+			// jQuery to do it again (it is restored at the end of the function)
+			delete ajax.data;
+		}
+	
+		var baseAjax = {
+			"data": data,
+			"success": function (json) {
+				var error = json.error || json.sError;
+				if ( error ) {
+					_fnLog( oSettings, 0, error );
+				}
+	
+				oSettings.json = json;
+				callback( json );
+			},
+			"dataType": "json",
+			"cache": false,
+			"type": oSettings.sServerMethod,
+			"error": function (xhr, error, thrown) {
+				var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] );
+	
+				if ( $.inArray( true, ret ) === -1 ) {
+					if ( error == "parsererror" ) {
+						_fnLog( oSettings, 0, 'Invalid JSON response', 1 );
+					}
+					else if ( xhr.readyState === 4 ) {
+						_fnLog( oSettings, 0, 'Ajax error', 7 );
+					}
+				}
+	
+				_fnProcessingDisplay( oSettings, false );
+			}
+		};
+	
+		// Store the data submitted for the API
+		oSettings.oAjaxData = data;
+	
+		// Allow plug-ins and external processes to modify the data
+		_fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] );
+	
+		if ( oSettings.fnServerData )
+		{
+			// DataTables 1.9- compatibility
+			oSettings.fnServerData.call( instance,
+				oSettings.sAjaxSource,
+				$.map( data, function (val, key) { // Need to convert back to 1.9 trad format
+					return { name: key, value: val };
+				} ),
+				callback,
+				oSettings
+			);
+		}
+		else if ( oSettings.sAjaxSource || typeof ajax === 'string' )
+		{
+			// DataTables 1.9- compatibility
+			oSettings.jqXHR = $.ajax( $.extend( baseAjax, {
+				url: ajax || oSettings.sAjaxSource
+			} ) );
+		}
+		else if ( typeof ajax === 'function' )
+		{
+			// Is a function - let the caller define what needs to be done
+			oSettings.jqXHR = ajax.call( instance, data, callback, oSettings );
+		}
+		else
+		{
+			// Object to extend the base settings
+			oSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) );
+	
+			// Restore for next time around
+			ajax.data = ajaxData;
+		}
+	}
+	
+	
+	/**
+	 * Update the table using an Ajax call
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {boolean} Block the table drawing or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAjaxUpdate( settings )
+	{
+		if ( settings.bAjaxDataGet ) {
+			settings.iDraw++;
+			_fnProcessingDisplay( settings, true );
+	
+			_fnBuildAjax(
+				settings,
+				_fnAjaxParameters( settings ),
+				function(json) {
+					_fnAjaxUpdateDraw( settings, json );
+				}
+			);
+	
+			return false;
+		}
+		return true;
+	}
+	
+	
+	/**
+	 * Build up the parameters in an object needed for a server-side processing
+	 * request. Note that this is basically done twice, is different ways - a modern
+	 * method which is used by default in DataTables 1.10 which uses objects and
+	 * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if
+	 * the sAjaxSource option is used in the initialisation, or the legacyAjax
+	 * option is set.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {bool} block the table drawing or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAjaxParameters( settings )
+	{
+		var
+			columns = settings.aoColumns,
+			columnCount = columns.length,
+			features = settings.oFeatures,
+			preSearch = settings.oPreviousSearch,
+			preColSearch = settings.aoPreSearchCols,
+			i, data = [], dataProp, column, columnSearch,
+			sort = _fnSortFlatten( settings ),
+			displayStart = settings._iDisplayStart,
+			displayLength = features.bPaginate !== false ?
+				settings._iDisplayLength :
+				-1;
+	
+		var param = function ( name, value ) {
+			data.push( { 'name': name, 'value': value } );
+		};
+	
+		// DataTables 1.9- compatible method
+		param( 'sEcho',          settings.iDraw );
+		param( 'iColumns',       columnCount );
+		param( 'sColumns',       _pluck( columns, 'sName' ).join(',') );
+		param( 'iDisplayStart',  displayStart );
+		param( 'iDisplayLength', displayLength );
+	
+		// DataTables 1.10+ method
+		var d = {
+			draw:    settings.iDraw,
+			columns: [],
+			order:   [],
+			start:   displayStart,
+			length:  displayLength,
+			search:  {
+				value: preSearch.sSearch,
+				regex: preSearch.bRegex
+			}
+		};
+	
+		for ( i=0 ; i<columnCount ; i++ ) {
+			column = columns[i];
+			columnSearch = preColSearch[i];
+			dataProp = typeof column.mData=="function" ? 'function' : column.mData ;
+	
+			d.columns.push( {
+				data:       dataProp,
+				name:       column.sName,
+				searchable: column.bSearchable,
+				orderable:  column.bSortable,
+				search:     {
+					value: columnSearch.sSearch,
+					regex: columnSearch.bRegex
+				}
+			} );
+	
+			param( "mDataProp_"+i, dataProp );
+	
+			if ( features.bFilter ) {
+				param( 'sSearch_'+i,     columnSearch.sSearch );
+				param( 'bRegex_'+i,      columnSearch.bRegex );
+				param( 'bSearchable_'+i, column.bSearchable );
+			}
+	
+			if ( features.bSort ) {
+				param( 'bSortable_'+i, column.bSortable );
+			}
+		}
+	
+		if ( features.bFilter ) {
+			param( 'sSearch', preSearch.sSearch );
+			param( 'bRegex', preSearch.bRegex );
+		}
+	
+		if ( features.bSort ) {
+			$.each( sort, function ( i, val ) {
+				d.order.push( { column: val.col, dir: val.dir } );
+	
+				param( 'iSortCol_'+i, val.col );
+				param( 'sSortDir_'+i, val.dir );
+			} );
+	
+			param( 'iSortingCols', sort.length );
+		}
+	
+		// If the legacy.ajax parameter is null, then we automatically decide which
+		// form to use, based on sAjaxSource
+		var legacy = DataTable.ext.legacy.ajax;
+		if ( legacy === null ) {
+			return settings.sAjaxSource ? data : d;
+		}
+	
+		// Otherwise, if legacy has been specified then we use that to decide on the
+		// form
+		return legacy ? data : d;
+	}
+	
+	
+	/**
+	 * Data the data from the server (nuking the old) and redraw the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} json json data return from the server.
+	 *  @param {string} json.sEcho Tracking flag for DataTables to match requests
+	 *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering
+	 *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering
+	 *  @param {array} json.aaData The data to display on this page
+	 *  @param {string} [json.sColumns] Column ordering (sName, comma separated)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAjaxUpdateDraw ( settings, json )
+	{
+		// v1.10 uses camelCase variables, while 1.9 uses Hungarian notation.
+		// Support both
+		var compat = function ( old, modern ) {
+			return json[old] !== undefined ? json[old] : json[modern];
+		};
+	
+		var data = _fnAjaxDataSrc( settings, json );
+		var draw            = compat( 'sEcho',                'draw' );
+		var recordsTotal    = compat( 'iTotalRecords',        'recordsTotal' );
+		var recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' );
+	
+		if ( draw ) {
+			// Protect against out of sequence returns
+			if ( draw*1 < settings.iDraw ) {
+				return;
+			}
+			settings.iDraw = draw * 1;
+		}
+	
+		_fnClearTable( settings );
+		settings._iRecordsTotal   = parseInt(recordsTotal, 10);
+		settings._iRecordsDisplay = parseInt(recordsFiltered, 10);
+	
+		for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+			_fnAddData( settings, data[i] );
+		}
+		settings.aiDisplay = settings.aiDisplayMaster.slice();
+	
+		settings.bAjaxDataGet = false;
+		_fnDraw( settings );
+	
+		if ( ! settings._bInitComplete ) {
+			_fnInitComplete( settings, json );
+		}
+	
+		settings.bAjaxDataGet = true;
+		_fnProcessingDisplay( settings, false );
+	}
+	
+	
+	/**
+	 * Get the data from the JSON data source to use for drawing a table. Using
+	 * `_fnGetObjectDataFn` allows the data to be sourced from a property of the
+	 * source object, or from a processing function.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param  {object} json Data source object / array from the server
+	 *  @return {array} Array of data to use
+	 */
+	function _fnAjaxDataSrc ( oSettings, json )
+	{
+		var dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ?
+			oSettings.ajax.dataSrc :
+			oSettings.sAjaxDataProp; // Compatibility with 1.9-.
+	
+		// Compatibility with 1.9-. In order to read from aaData, check if the
+		// default has been changed, if not, check for aaData
+		if ( dataSrc === 'data' ) {
+			return json.aaData || json[dataSrc];
+		}
+	
+		return dataSrc !== "" ?
+			_fnGetObjectDataFn( dataSrc )( json ) :
+			json;
+	}
+	
+	/**
+	 * Generate the node required for filtering text
+	 *  @returns {node} Filter control element
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlFilter ( settings )
+	{
+		var classes = settings.oClasses;
+		var tableId = settings.sTableId;
+		var language = settings.oLanguage;
+		var previousSearch = settings.oPreviousSearch;
+		var features = settings.aanFeatures;
+		var input = '<input type="search" class="'+classes.sFilterInput+'"/>';
+	
+		var str = language.sSearch;
+		str = str.match(/_INPUT_/) ?
+			str.replace('_INPUT_', input) :
+			str+input;
+	
+		var filter = $('<div/>', {
+				'id': ! features.f ? tableId+'_filter' : null,
+				'class': classes.sFilter
+			} )
+			.append( $('<label/>' ).append( str ) );
+	
+		var searchFn = function() {
+			/* Update all other filter input elements for the new display */
+			var n = features.f;
+			var val = !this.value ? "" : this.value; // mental IE8 fix :-(
+	
+			/* Now do the filter */
+			if ( val != previousSearch.sSearch ) {
+				_fnFilterComplete( settings, {
+					"sSearch": val,
+					"bRegex": previousSearch.bRegex,
+					"bSmart": previousSearch.bSmart ,
+					"bCaseInsensitive": previousSearch.bCaseInsensitive
+				} );
+	
+				// Need to redraw, without resorting
+				settings._iDisplayStart = 0;
+				_fnDraw( settings );
+			}
+		};
+	
+		var searchDelay = settings.searchDelay !== null ?
+			settings.searchDelay :
+			_fnDataSource( settings ) === 'ssp' ?
+				400 :
+				0;
+	
+		var jqFilter = $('input', filter)
+			.val( previousSearch.sSearch )
+			.attr( 'placeholder', language.sSearchPlaceholder )
+			.on(
+				'keyup.DT search.DT input.DT paste.DT cut.DT',
+				searchDelay ?
+					_fnThrottle( searchFn, searchDelay ) :
+					searchFn
+			)
+			.on( 'keypress.DT', function(e) {
+				/* Prevent form submission */
+				if ( e.keyCode == 13 ) {
+					return false;
+				}
+			} )
+			.attr('aria-controls', tableId);
+	
+		// Update the input elements whenever the table is filtered
+		$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {
+			if ( settings === s ) {
+				// IE9 throws an 'unknown error' if document.activeElement is used
+				// inside an iframe or frame...
+				try {
+					if ( jqFilter[0] !== document.activeElement ) {
+						jqFilter.val( previousSearch.sSearch );
+					}
+				}
+				catch ( e ) {}
+			}
+		} );
+	
+		return filter[0];
+	}
+	
+	
+	/**
+	 * Filter the table using both the global filter and column based filtering
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} oSearch search information
+	 *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterComplete ( oSettings, oInput, iForce )
+	{
+		var oPrevSearch = oSettings.oPreviousSearch;
+		var aoPrevSearch = oSettings.aoPreSearchCols;
+		var fnSaveFilter = function ( oFilter ) {
+			/* Save the filtering values */
+			oPrevSearch.sSearch = oFilter.sSearch;
+			oPrevSearch.bRegex = oFilter.bRegex;
+			oPrevSearch.bSmart = oFilter.bSmart;
+			oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;
+		};
+		var fnRegex = function ( o ) {
+			// Backwards compatibility with the bEscapeRegex option
+			return o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex;
+		};
+	
+		// Resolve any column types that are unknown due to addition or invalidation
+		// @todo As per sort - can this be moved into an event handler?
+		_fnColumnTypes( oSettings );
+	
+		/* In server-side processing all filtering is done by the server, so no point hanging around here */
+		if ( _fnDataSource( oSettings ) != 'ssp' )
+		{
+			/* Global filter */
+			_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive );
+			fnSaveFilter( oInput );
+	
+			/* Now do the individual column filter */
+			for ( var i=0 ; i<aoPrevSearch.length ; i++ )
+			{
+				_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),
+					aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );
+			}
+	
+			/* Custom filtering */
+			_fnFilterCustom( oSettings );
+		}
+		else
+		{
+			fnSaveFilter( oInput );
+		}
+	
+		/* Tell the draw function we have been filtering */
+		oSettings.bFiltered = true;
+		_fnCallbackFire( oSettings, null, 'search', [oSettings] );
+	}
+	
+	
+	/**
+	 * Apply custom filtering functions
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterCustom( settings )
+	{
+		var filters = DataTable.ext.search;
+		var displayRows = settings.aiDisplay;
+		var row, rowIdx;
+	
+		for ( var i=0, ien=filters.length ; i<ien ; i++ ) {
+			var rows = [];
+	
+			// Loop over each row and see if it should be included
+			for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {
+				rowIdx = displayRows[ j ];
+				row = settings.aoData[ rowIdx ];
+	
+				if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {
+					rows.push( rowIdx );
+				}
+			}
+	
+			// So the array reference doesn't break set the results into the
+			// existing array
+			displayRows.length = 0;
+			$.merge( displayRows, rows );
+		}
+	}
+	
+	
+	/**
+	 * Filter the table on a per-column basis
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {string} sInput string to filter on
+	 *  @param {int} iColumn column to filter
+	 *  @param {bool} bRegex treat search string as a regular expression or not
+	 *  @param {bool} bSmart use smart filtering or not
+	 *  @param {bool} bCaseInsensitive Do case insenstive matching or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive )
+	{
+		if ( searchStr === '' ) {
+			return;
+		}
+	
+		var data;
+		var out = [];
+		var display = settings.aiDisplay;
+		var rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive );
+	
+		for ( var i=0 ; i<display.length ; i++ ) {
+			data = settings.aoData[ display[i] ]._aFilterData[ colIdx ];
+	
+			if ( rpSearch.test( data ) ) {
+				out.push( display[i] );
+			}
+		}
+	
+		settings.aiDisplay = out;
+	}
+	
+	
+	/**
+	 * Filter the data table based on user input and draw the table
+	 *  @param {object} settings dataTables settings object
+	 *  @param {string} input string to filter on
+	 *  @param {int} force optional - force a research of the master array (1) or not (undefined or 0)
+	 *  @param {bool} regex treat as a regular expression or not
+	 *  @param {bool} smart perform smart filtering or not
+	 *  @param {bool} caseInsensitive Do case insenstive matching or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilter( settings, input, force, regex, smart, caseInsensitive )
+	{
+		var rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive );
+		var prevSearch = settings.oPreviousSearch.sSearch;
+		var displayMaster = settings.aiDisplayMaster;
+		var display, invalidated, i;
+		var filtered = [];
+	
+		// Need to take account of custom filtering functions - always filter
+		if ( DataTable.ext.search.length !== 0 ) {
+			force = true;
+		}
+	
+		// Check if any of the rows were invalidated
+		invalidated = _fnFilterData( settings );
+	
+		// If the input is blank - we just want the full data set
+		if ( input.length <= 0 ) {
+			settings.aiDisplay = displayMaster.slice();
+		}
+		else {
+			// New search - start from the master array
+			if ( invalidated ||
+				 force ||
+				 regex ||
+				 prevSearch.length > input.length ||
+				 input.indexOf(prevSearch) !== 0 ||
+				 settings.bSorted // On resort, the display master needs to be
+				                  // re-filtered since indexes will have changed
+			) {
+				settings.aiDisplay = displayMaster.slice();
+			}
+	
+			// Search the display array
+			display = settings.aiDisplay;
+	
+			for ( i=0 ; i<display.length ; i++ ) {
+				if ( rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) {
+					filtered.push( display[i] );
+				}
+			}
+	
+			settings.aiDisplay = filtered;
+		}
+	}
+	
+	
+	/**
+	 * Build a regular expression object suitable for searching a table
+	 *  @param {string} sSearch string to search for
+	 *  @param {bool} bRegex treat as a regular expression or not
+	 *  @param {bool} bSmart perform smart filtering or not
+	 *  @param {bool} bCaseInsensitive Do case insensitive matching or not
+	 *  @returns {RegExp} constructed object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterCreateSearch( search, regex, smart, caseInsensitive )
+	{
+		search = regex ?
+			search :
+			_fnEscapeRegex( search );
+		
+		if ( smart ) {
+			/* For smart filtering we want to allow the search to work regardless of
+			 * word order. We also want double quoted text to be preserved, so word
+			 * order is important - a la google. So this is what we want to
+			 * generate:
+			 * 
+			 * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$
+			 */
+			var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || [''], function ( word ) {
+				if ( word.charAt(0) === '"' ) {
+					var m = word.match( /^"(.*)"$/ );
+					word = m ? m[1] : word;
+				}
+	
+				return word.replace('"', '');
+			} );
+	
+			search = '^(?=.*?'+a.join( ')(?=.*?' )+').*$';
+		}
+	
+		return new RegExp( search, caseInsensitive ? 'i' : '' );
+	}
+	
+	
+	/**
+	 * Escape a string such that it can be used in a regular expression
+	 *  @param {string} sVal string to escape
+	 *  @returns {string} escaped string
+	 *  @memberof DataTable#oApi
+	 */
+	var _fnEscapeRegex = DataTable.util.escapeRegex;
+	
+	var __filter_div = $('<div>')[0];
+	var __filter_div_textContent = __filter_div.textContent !== undefined;
+	
+	// Update the filtering data for each row if needed (by invalidation or first run)
+	function _fnFilterData ( settings )
+	{
+		var columns = settings.aoColumns;
+		var column;
+		var i, j, ien, jen, filterData, cellData, row;
+		var fomatters = DataTable.ext.type.search;
+		var wasInvalidated = false;
+	
+		for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+			row = settings.aoData[i];
+	
+			if ( ! row._aFilterData ) {
+				filterData = [];
+	
+				for ( j=0, jen=columns.length ; j<jen ; j++ ) {
+					column = columns[j];
+	
+					if ( column.bSearchable ) {
+						cellData = _fnGetCellData( settings, i, j, 'filter' );
+	
+						if ( fomatters[ column.sType ] ) {
+							cellData = fomatters[ column.sType ]( cellData );
+						}
+	
+						// Search in DataTables 1.10 is string based. In 1.11 this
+						// should be altered to also allow strict type checking.
+						if ( cellData === null ) {
+							cellData = '';
+						}
+	
+						if ( typeof cellData !== 'string' && cellData.toString ) {
+							cellData = cellData.toString();
+						}
+					}
+					else {
+						cellData = '';
+					}
+	
+					// If it looks like there is an HTML entity in the string,
+					// attempt to decode it so sorting works as expected. Note that
+					// we could use a single line of jQuery to do this, but the DOM
+					// method used here is much faster http://jsperf.com/html-decode
+					if ( cellData.indexOf && cellData.indexOf('&') !== -1 ) {
+						__filter_div.innerHTML = cellData;
+						cellData = __filter_div_textContent ?
+							__filter_div.textContent :
+							__filter_div.innerText;
+					}
+	
+					if ( cellData.replace ) {
+						cellData = cellData.replace(/[\r\n\u2028]/g, '');
+					}
+	
+					filterData.push( cellData );
+				}
+	
+				row._aFilterData = filterData;
+				row._sFilterRow = filterData.join('  ');
+				wasInvalidated = true;
+			}
+		}
+	
+		return wasInvalidated;
+	}
+	
+	
+	/**
+	 * Convert from the internal Hungarian notation to camelCase for external
+	 * interaction
+	 *  @param {object} obj Object to convert
+	 *  @returns {object} Inverted object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSearchToCamel ( obj )
+	{
+		return {
+			search:          obj.sSearch,
+			smart:           obj.bSmart,
+			regex:           obj.bRegex,
+			caseInsensitive: obj.bCaseInsensitive
+		};
+	}
+	
+	
+	
+	/**
+	 * Convert from camelCase notation to the internal Hungarian. We could use the
+	 * Hungarian convert function here, but this is cleaner
+	 *  @param {object} obj Object to convert
+	 *  @returns {object} Inverted object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSearchToHung ( obj )
+	{
+		return {
+			sSearch:          obj.search,
+			bSmart:           obj.smart,
+			bRegex:           obj.regex,
+			bCaseInsensitive: obj.caseInsensitive
+		};
+	}
+	
+	/**
+	 * Generate the node required for the info display
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {node} Information element
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlInfo ( settings )
+	{
+		var
+			tid = settings.sTableId,
+			nodes = settings.aanFeatures.i,
+			n = $('<div/>', {
+				'class': settings.oClasses.sInfo,
+				'id': ! nodes ? tid+'_info' : null
+			} );
+	
+		if ( ! nodes ) {
+			// Update display on each draw
+			settings.aoDrawCallback.push( {
+				"fn": _fnUpdateInfo,
+				"sName": "information"
+			} );
+	
+			n
+				.attr( 'role', 'status' )
+				.attr( 'aria-live', 'polite' );
+	
+			// Table is described by our info div
+			$(settings.nTable).attr( 'aria-describedby', tid+'_info' );
+		}
+	
+		return n[0];
+	}
+	
+	
+	/**
+	 * Update the information elements in the display
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnUpdateInfo ( settings )
+	{
+		/* Show information about the table */
+		var nodes = settings.aanFeatures.i;
+		if ( nodes.length === 0 ) {
+			return;
+		}
+	
+		var
+			lang  = settings.oLanguage,
+			start = settings._iDisplayStart+1,
+			end   = settings.fnDisplayEnd(),
+			max   = settings.fnRecordsTotal(),
+			total = settings.fnRecordsDisplay(),
+			out   = total ?
+				lang.sInfo :
+				lang.sInfoEmpty;
+	
+		if ( total !== max ) {
+			/* Record set after filtering */
+			out += ' ' + lang.sInfoFiltered;
+		}
+	
+		// Convert the macros
+		out += lang.sInfoPostFix;
+		out = _fnInfoMacros( settings, out );
+	
+		var callback = lang.fnInfoCallback;
+		if ( callback !== null ) {
+			out = callback.call( settings.oInstance,
+				settings, start, end, max, total, out
+			);
+		}
+	
+		$(nodes).html( out );
+	}
+	
+	
+	function _fnInfoMacros ( settings, str )
+	{
+		// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only
+		// internally
+		var
+			formatter  = settings.fnFormatNumber,
+			start      = settings._iDisplayStart+1,
+			len        = settings._iDisplayLength,
+			vis        = settings.fnRecordsDisplay(),
+			all        = len === -1;
+	
+		return str.
+			replace(/_START_/g, formatter.call( settings, start ) ).
+			replace(/_END_/g,   formatter.call( settings, settings.fnDisplayEnd() ) ).
+			replace(/_MAX_/g,   formatter.call( settings, settings.fnRecordsTotal() ) ).
+			replace(/_TOTAL_/g, formatter.call( settings, vis ) ).
+			replace(/_PAGE_/g,  formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).
+			replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) );
+	}
+	
+	
+	
+	/**
+	 * Draw the table for the first time, adding all required features
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnInitialise ( settings )
+	{
+		var i, iLen, iAjaxStart=settings.iInitDisplayStart;
+		var columns = settings.aoColumns, column;
+		var features = settings.oFeatures;
+		var deferLoading = settings.bDeferLoading; // value modified by the draw
+	
+		/* Ensure that the table data is fully initialised */
+		if ( ! settings.bInitialised ) {
+			setTimeout( function(){ _fnInitialise( settings ); }, 200 );
+			return;
+		}
+	
+		/* Show the display HTML options */
+		_fnAddOptionsHtml( settings );
+	
+		/* Build and draw the header / footer for the table */
+		_fnBuildHead( settings );
+		_fnDrawHead( settings, settings.aoHeader );
+		_fnDrawHead( settings, settings.aoFooter );
+	
+		/* Okay to show that something is going on now */
+		_fnProcessingDisplay( settings, true );
+	
+		/* Calculate sizes for columns */
+		if ( features.bAutoWidth ) {
+			_fnCalculateColumnWidths( settings );
+		}
+	
+		for ( i=0, iLen=columns.length ; i<iLen ; i++ ) {
+			column = columns[i];
+	
+			if ( column.sWidth ) {
+				column.nTh.style.width = _fnStringToCss( column.sWidth );
+			}
+		}
+	
+		_fnCallbackFire( settings, null, 'preInit', [settings] );
+	
+		// If there is default sorting required - let's do it. The sort function
+		// will do the drawing for us. Otherwise we draw the table regardless of the
+		// Ajax source - this allows the table to look initialised for Ajax sourcing
+		// data (show 'loading' message possibly)
+		_fnReDraw( settings );
+	
+		// Server-side processing init complete is done by _fnAjaxUpdateDraw
+		var dataSrc = _fnDataSource( settings );
+		if ( dataSrc != 'ssp' || deferLoading ) {
+			// if there is an ajax source load the data
+			if ( dataSrc == 'ajax' ) {
+				_fnBuildAjax( settings, [], function(json) {
+					var aData = _fnAjaxDataSrc( settings, json );
+	
+					// Got the data - add it to the table
+					for ( i=0 ; i<aData.length ; i++ ) {
+						_fnAddData( settings, aData[i] );
+					}
+	
+					// Reset the init display for cookie saving. We've already done
+					// a filter, and therefore cleared it before. So we need to make
+					// it appear 'fresh'
+					settings.iInitDisplayStart = iAjaxStart;
+	
+					_fnReDraw( settings );
+	
+					_fnProcessingDisplay( settings, false );
+					_fnInitComplete( settings, json );
+				}, settings );
+			}
+			else {
+				_fnProcessingDisplay( settings, false );
+				_fnInitComplete( settings );
+			}
+		}
+	}
+	
+	
+	/**
+	 * Draw the table for the first time, adding all required features
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} [json] JSON from the server that completed the table, if using Ajax source
+	 *    with client-side processing (optional)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnInitComplete ( settings, json )
+	{
+		settings._bInitComplete = true;
+	
+		// When data was added after the initialisation (data or Ajax) we need to
+		// calculate the column sizing
+		if ( json || settings.oInit.aaData ) {
+			_fnAdjustColumnSizing( settings );
+		}
+	
+		_fnCallbackFire( settings, null, 'plugin-init', [settings, json] );
+		_fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] );
+	}
+	
+	
+	function _fnLengthChange ( settings, val )
+	{
+		var len = parseInt( val, 10 );
+		settings._iDisplayLength = len;
+	
+		_fnLengthOverflow( settings );
+	
+		// Fire length change event
+		_fnCallbackFire( settings, null, 'length', [settings, len] );
+	}
+	
+	
+	/**
+	 * Generate the node required for user display length changing
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {node} Display length feature node
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlLength ( settings )
+	{
+		var
+			classes  = settings.oClasses,
+			tableId  = settings.sTableId,
+			menu     = settings.aLengthMenu,
+			d2       = $.isArray( menu[0] ),
+			lengths  = d2 ? menu[0] : menu,
+			language = d2 ? menu[1] : menu;
+	
+		var select = $('<select/>', {
+			'name':          tableId+'_length',
+			'aria-controls': tableId,
+			'class':         classes.sLengthSelect
+		} );
+	
+		for ( var i=0, ien=lengths.length ; i<ien ; i++ ) {
+			select[0][ i ] = new Option(
+				typeof language[i] === 'number' ?
+					settings.fnFormatNumber( language[i] ) :
+					language[i],
+				lengths[i]
+			);
+		}
+	
+		var div = $('<div><label/></div>').addClass( classes.sLength );
+		if ( ! settings.aanFeatures.l ) {
+			div[0].id = tableId+'_length';
+		}
+	
+		div.children().append(
+			settings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )
+		);
+	
+		// Can't use `select` variable as user might provide their own and the
+		// reference is broken by the use of outerHTML
+		$('select', div)
+			.val( settings._iDisplayLength )
+			.on( 'change.DT', function(e) {
+				_fnLengthChange( settings, $(this).val() );
+				_fnDraw( settings );
+			} );
+	
+		// Update node value whenever anything changes the table's length
+		$(settings.nTable).on( 'length.dt.DT', function (e, s, len) {
+			if ( settings === s ) {
+				$('select', div).val( len );
+			}
+		} );
+	
+		return div[0];
+	}
+	
+	
+	
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Note that most of the paging logic is done in
+	 * DataTable.ext.pager
+	 */
+	
+	/**
+	 * Generate the node required for default pagination
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {node} Pagination feature node
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlPaginate ( settings )
+	{
+		var
+			type   = settings.sPaginationType,
+			plugin = DataTable.ext.pager[ type ],
+			modern = typeof plugin === 'function',
+			redraw = function( settings ) {
+				_fnDraw( settings );
+			},
+			node = $('<div/>').addClass( settings.oClasses.sPaging + type )[0],
+			features = settings.aanFeatures;
+	
+		if ( ! modern ) {
+			plugin.fnInit( settings, node, redraw );
+		}
+	
+		/* Add a draw callback for the pagination on first instance, to update the paging display */
+		if ( ! features.p )
+		{
+			node.id = settings.sTableId+'_paginate';
+	
+			settings.aoDrawCallback.push( {
+				"fn": function( settings ) {
+					if ( modern ) {
+						var
+							start      = settings._iDisplayStart,
+							len        = settings._iDisplayLength,
+							visRecords = settings.fnRecordsDisplay(),
+							all        = len === -1,
+							page = all ? 0 : Math.ceil( start / len ),
+							pages = all ? 1 : Math.ceil( visRecords / len ),
+							buttons = plugin(page, pages),
+							i, ien;
+	
+						for ( i=0, ien=features.p.length ; i<ien ; i++ ) {
+							_fnRenderer( settings, 'pageButton' )(
+								settings, features.p[i], i, buttons, page, pages
+							);
+						}
+					}
+					else {
+						plugin.fnUpdate( settings, redraw );
+					}
+				},
+				"sName": "pagination"
+			} );
+		}
+	
+		return node;
+	}
+	
+	
+	/**
+	 * Alter the display settings to change the page
+	 *  @param {object} settings DataTables settings object
+	 *  @param {string|int} action Paging action to take: "first", "previous",
+	 *    "next" or "last" or page number to jump to (integer)
+	 *  @param [bool] redraw Automatically draw the update or not
+	 *  @returns {bool} true page has changed, false - no change
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnPageChange ( settings, action, redraw )
+	{
+		var
+			start     = settings._iDisplayStart,
+			len       = settings._iDisplayLength,
+			records   = settings.fnRecordsDisplay();
+	
+		if ( records === 0 || len === -1 )
+		{
+			start = 0;
+		}
+		else if ( typeof action === "number" )
+		{
+			start = action * len;
+	
+			if ( start > records )
+			{
+				start = 0;
+			}
+		}
+		else if ( action == "first" )
+		{
+			start = 0;
+		}
+		else if ( action == "previous" )
+		{
+			start = len >= 0 ?
+				start - len :
+				0;
+	
+			if ( start < 0 )
+			{
+			  start = 0;
+			}
+		}
+		else if ( action == "next" )
+		{
+			if ( start + len < records )
+			{
+				start += len;
+			}
+		}
+		else if ( action == "last" )
+		{
+			start = Math.floor( (records-1) / len) * len;
+		}
+		else
+		{
+			_fnLog( settings, 0, "Unknown paging action: "+action, 5 );
+		}
+	
+		var changed = settings._iDisplayStart !== start;
+		settings._iDisplayStart = start;
+	
+		if ( changed ) {
+			_fnCallbackFire( settings, null, 'page', [settings] );
+	
+			if ( redraw ) {
+				_fnDraw( settings );
+			}
+		}
+	
+		return changed;
+	}
+	
+	
+	
+	/**
+	 * Generate the node required for the processing node
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {node} Processing element
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlProcessing ( settings )
+	{
+		return $('<div/>', {
+				'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null,
+				'class': settings.oClasses.sProcessing
+			} )
+			.html( settings.oLanguage.sProcessing )
+			.insertBefore( settings.nTable )[0];
+	}
+	
+	
+	/**
+	 * Display or hide the processing indicator
+	 *  @param {object} settings dataTables settings object
+	 *  @param {bool} show Show the processing indicator (true) or not (false)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnProcessingDisplay ( settings, show )
+	{
+		if ( settings.oFeatures.bProcessing ) {
+			$(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );
+		}
+	
+		_fnCallbackFire( settings, null, 'processing', [settings, show] );
+	}
+	
+	/**
+	 * Add any control elements for the table - specifically scrolling
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {node} Node to add to the DOM
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlTable ( settings )
+	{
+		var table = $(settings.nTable);
+	
+		// Add the ARIA grid role to the table
+		table.attr( 'role', 'grid' );
+	
+		// Scrolling from here on in
+		var scroll = settings.oScroll;
+	
+		if ( scroll.sX === '' && scroll.sY === '' ) {
+			return settings.nTable;
+		}
+	
+		var scrollX = scroll.sX;
+		var scrollY = scroll.sY;
+		var classes = settings.oClasses;
+		var caption = table.children('caption');
+		var captionSide = caption.length ? caption[0]._captionSide : null;
+		var headerClone = $( table[0].cloneNode(false) );
+		var footerClone = $( table[0].cloneNode(false) );
+		var footer = table.children('tfoot');
+		var _div = '<div/>';
+		var size = function ( s ) {
+			return !s ? null : _fnStringToCss( s );
+		};
+	
+		if ( ! footer.length ) {
+			footer = null;
+		}
+	
+		/*
+		 * The HTML structure that we want to generate in this function is:
+		 *  div - scroller
+		 *    div - scroll head
+		 *      div - scroll head inner
+		 *        table - scroll head table
+		 *          thead - thead
+		 *    div - scroll body
+		 *      table - table (master table)
+		 *        thead - thead clone for sizing
+		 *        tbody - tbody
+		 *    div - scroll foot
+		 *      div - scroll foot inner
+		 *        table - scroll foot table
+		 *          tfoot - tfoot
+		 */
+		var scroller = $( _div, { 'class': classes.sScrollWrapper } )
+			.append(
+				$(_div, { 'class': classes.sScrollHead } )
+					.css( {
+						overflow: 'hidden',
+						position: 'relative',
+						border: 0,
+						width: scrollX ? size(scrollX) : '100%'
+					} )
+					.append(
+						$(_div, { 'class': classes.sScrollHeadInner } )
+							.css( {
+								'box-sizing': 'content-box',
+								width: scroll.sXInner || '100%'
+							} )
+							.append(
+								headerClone
+									.removeAttr('id')
+									.css( 'margin-left', 0 )
+									.append( captionSide === 'top' ? caption : null )
+									.append(
+										table.children('thead')
+									)
+							)
+					)
+			)
+			.append(
+				$(_div, { 'class': classes.sScrollBody } )
+					.css( {
+						position: 'relative',
+						overflow: 'auto',
+						width: size( scrollX )
+					} )
+					.append( table )
+			);
+	
+		if ( footer ) {
+			scroller.append(
+				$(_div, { 'class': classes.sScrollFoot } )
+					.css( {
+						overflow: 'hidden',
+						border: 0,
+						width: scrollX ? size(scrollX) : '100%'
+					} )
+					.append(
+						$(_div, { 'class': classes.sScrollFootInner } )
+							.append(
+								footerClone
+									.removeAttr('id')
+									.css( 'margin-left', 0 )
+									.append( captionSide === 'bottom' ? caption : null )
+									.append(
+										table.children('tfoot')
+									)
+							)
+					)
+			);
+		}
+	
+		var children = scroller.children();
+		var scrollHead = children[0];
+		var scrollBody = children[1];
+		var scrollFoot = footer ? children[2] : null;
+	
+		// When the body is scrolled, then we also want to scroll the headers
+		if ( scrollX ) {
+			$(scrollBody).on( 'scroll.DT', function (e) {
+				var scrollLeft = this.scrollLeft;
+	
+				scrollHead.scrollLeft = scrollLeft;
+	
+				if ( footer ) {
+					scrollFoot.scrollLeft = scrollLeft;
+				}
+			} );
+		}
+	
+		$(scrollBody).css(
+			scrollY && scroll.bCollapse ? 'max-height' : 'height', 
+			scrollY
+		);
+	
+		settings.nScrollHead = scrollHead;
+		settings.nScrollBody = scrollBody;
+		settings.nScrollFoot = scrollFoot;
+	
+		// On redraw - align columns
+		settings.aoDrawCallback.push( {
+			"fn": _fnScrollDraw,
+			"sName": "scrolling"
+		} );
+	
+		return scroller[0];
+	}
+	
+	
+	
+	/**
+	 * Update the header, footer and body tables for resizing - i.e. column
+	 * alignment.
+	 *
+	 * Welcome to the most horrible function DataTables. The process that this
+	 * function follows is basically:
+	 *   1. Re-create the table inside the scrolling div
+	 *   2. Take live measurements from the DOM
+	 *   3. Apply the measurements to align the columns
+	 *   4. Clean up
+	 *
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnScrollDraw ( settings )
+	{
+		// Given that this is such a monster function, a lot of variables are use
+		// to try and keep the minimised size as small as possible
+		var
+			scroll         = settings.oScroll,
+			scrollX        = scroll.sX,
+			scrollXInner   = scroll.sXInner,
+			scrollY        = scroll.sY,
+			barWidth       = scroll.iBarWidth,
+			divHeader      = $(settings.nScrollHead),
+			divHeaderStyle = divHeader[0].style,
+			divHeaderInner = divHeader.children('div'),
+			divHeaderInnerStyle = divHeaderInner[0].style,
+			divHeaderTable = divHeaderInner.children('table'),
+			divBodyEl      = settings.nScrollBody,
+			divBody        = $(divBodyEl),
+			divBodyStyle   = divBodyEl.style,
+			divFooter      = $(settings.nScrollFoot),
+			divFooterInner = divFooter.children('div'),
+			divFooterTable = divFooterInner.children('table'),
+			header         = $(settings.nTHead),
+			table          = $(settings.nTable),
+			tableEl        = table[0],
+			tableStyle     = tableEl.style,
+			footer         = settings.nTFoot ? $(settings.nTFoot) : null,
+			browser        = settings.oBrowser,
+			ie67           = browser.bScrollOversize,
+			dtHeaderCells  = _pluck( settings.aoColumns, 'nTh' ),
+			headerTrgEls, footerTrgEls,
+			headerSrcEls, footerSrcEls,
+			headerCopy, footerCopy,
+			headerWidths=[], footerWidths=[],
+			headerContent=[], footerContent=[],
+			idx, correction, sanityWidth,
+			zeroOut = function(nSizer) {
+				var style = nSizer.style;
+				style.paddingTop = "0";
+				style.paddingBottom = "0";
+				style.borderTopWidth = "0";
+				style.borderBottomWidth = "0";
+				style.height = 0;
+			};
+	
+		// If the scrollbar visibility has changed from the last draw, we need to
+		// adjust the column sizes as the table width will have changed to account
+		// for the scrollbar
+		var scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight;
+		
+		if ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) {
+			settings.scrollBarVis = scrollBarVis;
+			_fnAdjustColumnSizing( settings );
+			return; // adjust column sizing will call this function again
+		}
+		else {
+			settings.scrollBarVis = scrollBarVis;
+		}
+	
+		/*
+		 * 1. Re-create the table inside the scrolling div
+		 */
+	
+		// Remove the old minimised thead and tfoot elements in the inner table
+		table.children('thead, tfoot').remove();
+	
+		if ( footer ) {
+			footerCopy = footer.clone().prependTo( table );
+			footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized
+			footerSrcEls = footerCopy.find('tr');
+		}
+	
+		// Clone the current header and footer elements and then place it into the inner table
+		headerCopy = header.clone().prependTo( table );
+		headerTrgEls = header.find('tr'); // original header is in its own table
+		headerSrcEls = headerCopy.find('tr');
+		headerCopy.find('th, td').removeAttr('tabindex');
+	
+	
+		/*
+		 * 2. Take live measurements from the DOM - do not alter the DOM itself!
+		 */
+	
+		// Remove old sizing and apply the calculated column widths
+		// Get the unique column headers in the newly created (cloned) header. We want to apply the
+		// calculated sizes to this header
+		if ( ! scrollX )
+		{
+			divBodyStyle.width = '100%';
+			divHeader[0].style.width = '100%';
+		}
+	
+		$.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {
+			idx = _fnVisibleToColumnIndex( settings, i );
+			el.style.width = settings.aoColumns[idx].sWidth;
+		} );
+	
+		if ( footer ) {
+			_fnApplyToChildren( function(n) {
+				n.style.width = "";
+			}, footerSrcEls );
+		}
+	
+		// Size the table as a whole
+		sanityWidth = table.outerWidth();
+		if ( scrollX === "" ) {
+			// No x scrolling
+			tableStyle.width = "100%";
+	
+			// IE7 will make the width of the table when 100% include the scrollbar
+			// - which is shouldn't. When there is a scrollbar we need to take this
+			// into account.
+			if ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight ||
+				divBody.css('overflow-y') == "scroll")
+			) {
+				tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);
+			}
+	
+			// Recalculate the sanity width
+			sanityWidth = table.outerWidth();
+		}
+		else if ( scrollXInner !== "" ) {
+			// legacy x scroll inner has been given - use it
+			tableStyle.width = _fnStringToCss(scrollXInner);
+	
+			// Recalculate the sanity width
+			sanityWidth = table.outerWidth();
+		}
+	
+		// Hidden header should have zero height, so remove padding and borders. Then
+		// set the width based on the real headers
+	
+		// Apply all styles in one pass
+		_fnApplyToChildren( zeroOut, headerSrcEls );
+	
+		// Read all widths in next pass
+		_fnApplyToChildren( function(nSizer) {
+			headerContent.push( nSizer.innerHTML );
+			headerWidths.push( _fnStringToCss( $(nSizer).css('width') ) );
+		}, headerSrcEls );
+	
+		// Apply all widths in final pass
+		_fnApplyToChildren( function(nToSize, i) {
+			// Only apply widths to the DataTables detected header cells - this
+			// prevents complex headers from having contradictory sizes applied
+			if ( $.inArray( nToSize, dtHeaderCells ) !== -1 ) {
+				nToSize.style.width = headerWidths[i];
+			}
+		}, headerTrgEls );
+	
+		$(headerSrcEls).height(0);
+	
+		/* Same again with the footer if we have one */
+		if ( footer )
+		{
+			_fnApplyToChildren( zeroOut, footerSrcEls );
+	
+			_fnApplyToChildren( function(nSizer) {
+				footerContent.push( nSizer.innerHTML );
+				footerWidths.push( _fnStringToCss( $(nSizer).css('width') ) );
+			}, footerSrcEls );
+	
+			_fnApplyToChildren( function(nToSize, i) {
+				nToSize.style.width = footerWidths[i];
+			}, footerTrgEls );
+	
+			$(footerSrcEls).height(0);
+		}
+	
+	
+		/*
+		 * 3. Apply the measurements
+		 */
+	
+		// "Hide" the header and footer that we used for the sizing. We need to keep
+		// the content of the cell so that the width applied to the header and body
+		// both match, but we want to hide it completely. We want to also fix their
+		// width to what they currently are
+		_fnApplyToChildren( function(nSizer, i) {
+			nSizer.innerHTML = '<div class="dataTables_sizing">'+headerContent[i]+'</div>';
+			nSizer.childNodes[0].style.height = "0";
+			nSizer.childNodes[0].style.overflow = "hidden";
+			nSizer.style.width = headerWidths[i];
+		}, headerSrcEls );
+	
+		if ( footer )
+		{
+			_fnApplyToChildren( function(nSizer, i) {
+				nSizer.innerHTML = '<div class="dataTables_sizing">'+footerContent[i]+'</div>';
+				nSizer.childNodes[0].style.height = "0";
+				nSizer.childNodes[0].style.overflow = "hidden";
+				nSizer.style.width = footerWidths[i];
+			}, footerSrcEls );
+		}
+	
+		// Sanity check that the table is of a sensible width. If not then we are going to get
+		// misalignment - try to prevent this by not allowing the table to shrink below its min width
+		if ( table.outerWidth() < sanityWidth )
+		{
+			// The min width depends upon if we have a vertical scrollbar visible or not */
+			correction = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||
+				divBody.css('overflow-y') == "scroll")) ?
+					sanityWidth+barWidth :
+					sanityWidth;
+	
+			// IE6/7 are a law unto themselves...
+			if ( ie67 && (divBodyEl.scrollHeight >
+				divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll")
+			) {
+				tableStyle.width = _fnStringToCss( correction-barWidth );
+			}
+	
+			// And give the user a warning that we've stopped the table getting too small
+			if ( scrollX === "" || scrollXInner !== "" ) {
+				_fnLog( settings, 1, 'Possible column misalignment', 6 );
+			}
+		}
+		else
+		{
+			correction = '100%';
+		}
+	
+		// Apply to the container elements
+		divBodyStyle.width = _fnStringToCss( correction );
+		divHeaderStyle.width = _fnStringToCss( correction );
+	
+		if ( footer ) {
+			settings.nScrollFoot.style.width = _fnStringToCss( correction );
+		}
+	
+	
+		/*
+		 * 4. Clean up
+		 */
+		if ( ! scrollY ) {
+			/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting
+			 * the scrollbar height from the visible display, rather than adding it on. We need to
+			 * set the height in order to sort this. Don't want to do it in any other browsers.
+			 */
+			if ( ie67 ) {
+				divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );
+			}
+		}
+	
+		/* Finally set the width's of the header and footer tables */
+		var iOuterWidth = table.outerWidth();
+		divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );
+		divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );
+	
+		// Figure out if there are scrollbar present - if so then we need a the header and footer to
+		// provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
+		var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll";
+		var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );
+		divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px";
+	
+		if ( footer ) {
+			divFooterTable[0].style.width = _fnStringToCss( iOuterWidth );
+			divFooterInner[0].style.width = _fnStringToCss( iOuterWidth );
+			divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px";
+		}
+	
+		// Correct DOM ordering for colgroup - comes before the thead
+		table.children('colgroup').insertBefore( table.children('thead') );
+	
+		/* Adjust the position of the header in case we loose the y-scrollbar */
+		divBody.trigger('scroll');
+	
+		// If sorting or filtering has occurred, jump the scrolling back to the top
+		// only if we aren't holding the position
+		if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {
+			divBodyEl.scrollTop = 0;
+		}
+	}
+	
+	
+	
+	/**
+	 * Apply a given function to the display child nodes of an element array (typically
+	 * TD children of TR rows
+	 *  @param {function} fn Method to apply to the objects
+	 *  @param array {nodes} an1 List of elements to look through for display children
+	 *  @param array {nodes} an2 Another list (identical structure to the first) - optional
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnApplyToChildren( fn, an1, an2 )
+	{
+		var index=0, i=0, iLen=an1.length;
+		var nNode1, nNode2;
+	
+		while ( i < iLen ) {
+			nNode1 = an1[i].firstChild;
+			nNode2 = an2 ? an2[i].firstChild : null;
+	
+			while ( nNode1 ) {
+				if ( nNode1.nodeType === 1 ) {
+					if ( an2 ) {
+						fn( nNode1, nNode2, index );
+					}
+					else {
+						fn( nNode1, index );
+					}
+	
+					index++;
+				}
+	
+				nNode1 = nNode1.nextSibling;
+				nNode2 = an2 ? nNode2.nextSibling : null;
+			}
+	
+			i++;
+		}
+	}
+	
+	
+	
+	var __re_html_remove = /<.*?>/g;
+	
+	
+	/**
+	 * Calculate the width of columns for the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCalculateColumnWidths ( oSettings )
+	{
+		var
+			table = oSettings.nTable,
+			columns = oSettings.aoColumns,
+			scroll = oSettings.oScroll,
+			scrollY = scroll.sY,
+			scrollX = scroll.sX,
+			scrollXInner = scroll.sXInner,
+			columnCount = columns.length,
+			visibleColumns = _fnGetColumns( oSettings, 'bVisible' ),
+			headerCells = $('th', oSettings.nTHead),
+			tableWidthAttr = table.getAttribute('width'), // from DOM element
+			tableContainer = table.parentNode,
+			userInputs = false,
+			i, column, columnIdx, width, outerWidth,
+			browser = oSettings.oBrowser,
+			ie67 = browser.bScrollOversize;
+	
+		var styleWidth = table.style.width;
+		if ( styleWidth && styleWidth.indexOf('%') !== -1 ) {
+			tableWidthAttr = styleWidth;
+		}
+	
+		/* Convert any user input sizes into pixel sizes */
+		for ( i=0 ; i<visibleColumns.length ; i++ ) {
+			column = columns[ visibleColumns[i] ];
+	
+			if ( column.sWidth !== null ) {
+				column.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer );
+	
+				userInputs = true;
+			}
+		}
+	
+		/* If the number of columns in the DOM equals the number that we have to
+		 * process in DataTables, then we can use the offsets that are created by
+		 * the web- browser. No custom sizes can be set in order for this to happen,
+		 * nor scrolling used
+		 */
+		if ( ie67 || ! userInputs && ! scrollX && ! scrollY &&
+		     columnCount == _fnVisbleColumns( oSettings ) &&
+		     columnCount == headerCells.length
+		) {
+			for ( i=0 ; i<columnCount ; i++ ) {
+				var colIdx = _fnVisibleToColumnIndex( oSettings, i );
+	
+				if ( colIdx !== null ) {
+					columns[ colIdx ].sWidth = _fnStringToCss( headerCells.eq(i).width() );
+				}
+			}
+		}
+		else
+		{
+			// Otherwise construct a single row, worst case, table with the widest
+			// node in the data, assign any user defined widths, then insert it into
+			// the DOM and allow the browser to do all the hard work of calculating
+			// table widths
+			var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table
+				.css( 'visibility', 'hidden' )
+				.removeAttr( 'id' );
+	
+			// Clean up the table body
+			tmpTable.find('tbody tr').remove();
+			var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
+	
+			// Clone the table header and footer - we can't use the header / footer
+			// from the cloned table, since if scrolling is active, the table's
+			// real header and footer are contained in different table tags
+			tmpTable.find('thead, tfoot').remove();
+			tmpTable
+				.append( $(oSettings.nTHead).clone() )
+				.append( $(oSettings.nTFoot).clone() );
+	
+			// Remove any assigned widths from the footer (from scrolling)
+			tmpTable.find('tfoot th, tfoot td').css('width', '');
+	
+			// Apply custom sizing to the cloned header
+			headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );
+	
+			for ( i=0 ; i<visibleColumns.length ; i++ ) {
+				column = columns[ visibleColumns[i] ];
+	
+				headerCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ?
+					_fnStringToCss( column.sWidthOrig ) :
+					'';
+	
+				// For scrollX we need to force the column width otherwise the
+				// browser will collapse it. If this width is smaller than the
+				// width the column requires, then it will have no effect
+				if ( column.sWidthOrig && scrollX ) {
+					$( headerCells[i] ).append( $('<div/>').css( {
+						width: column.sWidthOrig,
+						margin: 0,
+						padding: 0,
+						border: 0,
+						height: 1
+					} ) );
+				}
+			}
+	
+			// Find the widest cell for each column and put it into the table
+			if ( oSettings.aoData.length ) {
+				for ( i=0 ; i<visibleColumns.length ; i++ ) {
+					columnIdx = visibleColumns[i];
+					column = columns[ columnIdx ];
+	
+					$( _fnGetWidestNode( oSettings, columnIdx ) )
+						.clone( false )
+						.append( column.sContentPadding )
+						.appendTo( tr );
+				}
+			}
+	
+			// Tidy the temporary table - remove name attributes so there aren't
+			// duplicated in the dom (radio elements for example)
+			$('[name]', tmpTable).removeAttr('name');
+	
+			// Table has been built, attach to the document so we can work with it.
+			// A holding element is used, positioned at the top of the container
+			// with minimal height, so it has no effect on if the container scrolls
+			// or not. Otherwise it might trigger scrolling when it actually isn't
+			// needed
+			var holder = $('<div/>').css( scrollX || scrollY ?
+					{
+						position: 'absolute',
+						top: 0,
+						left: 0,
+						height: 1,
+						right: 0,
+						overflow: 'hidden'
+					} :
+					{}
+				)
+				.append( tmpTable )
+				.appendTo( tableContainer );
+	
+			// When scrolling (X or Y) we want to set the width of the table as 
+			// appropriate. However, when not scrolling leave the table width as it
+			// is. This results in slightly different, but I think correct behaviour
+			if ( scrollX && scrollXInner ) {
+				tmpTable.width( scrollXInner );
+			}
+			else if ( scrollX ) {
+				tmpTable.css( 'width', 'auto' );
+				tmpTable.removeAttr('width');
+	
+				// If there is no width attribute or style, then allow the table to
+				// collapse
+				if ( tmpTable.width() < tableContainer.clientWidth && tableWidthAttr ) {
+					tmpTable.width( tableContainer.clientWidth );
+				}
+			}
+			else if ( scrollY ) {
+				tmpTable.width( tableContainer.clientWidth );
+			}
+			else if ( tableWidthAttr ) {
+				tmpTable.width( tableWidthAttr );
+			}
+	
+			// Get the width of each column in the constructed table - we need to
+			// know the inner width (so it can be assigned to the other table's
+			// cells) and the outer width so we can calculate the full width of the
+			// table. This is safe since DataTables requires a unique cell for each
+			// column, but if ever a header can span multiple columns, this will
+			// need to be modified.
+			var total = 0;
+			for ( i=0 ; i<visibleColumns.length ; i++ ) {
+				var cell = $(headerCells[i]);
+				var border = cell.outerWidth() - cell.width();
+	
+				// Use getBounding... where possible (not IE8-) because it can give
+				// sub-pixel accuracy, which we then want to round up!
+				var bounding = browser.bBounding ?
+					Math.ceil( headerCells[i].getBoundingClientRect().width ) :
+					cell.outerWidth();
+	
+				// Total is tracked to remove any sub-pixel errors as the outerWidth
+				// of the table might not equal the total given here (IE!).
+				total += bounding;
+	
+				// Width for each column to use
+				columns[ visibleColumns[i] ].sWidth = _fnStringToCss( bounding - border );
+			}
+	
+			table.style.width = _fnStringToCss( total );
+	
+			// Finished with the table - ditch it
+			holder.remove();
+		}
+	
+		// If there is a width attr, we want to attach an event listener which
+		// allows the table sizing to automatically adjust when the window is
+		// resized. Use the width attr rather than CSS, since we can't know if the
+		// CSS is a relative value or absolute - DOM read is always px.
+		if ( tableWidthAttr ) {
+			table.style.width = _fnStringToCss( tableWidthAttr );
+		}
+	
+		if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {
+			var bindResize = function () {
+				$(window).on('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {
+					_fnAdjustColumnSizing( oSettings );
+				} ) );
+			};
+	
+			// IE6/7 will crash if we bind a resize event handler on page load.
+			// To be removed in 1.11 which drops IE6/7 support
+			if ( ie67 ) {
+				setTimeout( bindResize, 1000 );
+			}
+			else {
+				bindResize();
+			}
+	
+			oSettings._reszEvt = true;
+		}
+	}
+	
+	
+	/**
+	 * Throttle the calls to a function. Arguments and context are maintained for
+	 * the throttled function
+	 *  @param {function} fn Function to be called
+	 *  @param {int} [freq=200] call frequency in mS
+	 *  @returns {function} wrapped function
+	 *  @memberof DataTable#oApi
+	 */
+	var _fnThrottle = DataTable.util.throttle;
+	
+	
+	/**
+	 * Convert a CSS unit width to pixels (e.g. 2em)
+	 *  @param {string} width width to be converted
+	 *  @param {node} parent parent to get the with for (required for relative widths) - optional
+	 *  @returns {int} width in pixels
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnConvertToWidth ( width, parent )
+	{
+		if ( ! width ) {
+			return 0;
+		}
+	
+		var n = $('<div/>')
+			.css( 'width', _fnStringToCss( width ) )
+			.appendTo( parent || document.body );
+	
+		var val = n[0].offsetWidth;
+		n.remove();
+	
+		return val;
+	}
+	
+	
+	/**
+	 * Get the widest node
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} colIdx column of interest
+	 *  @returns {node} widest table node
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetWidestNode( settings, colIdx )
+	{
+		var idx = _fnGetMaxLenString( settings, colIdx );
+		if ( idx < 0 ) {
+			return null;
+		}
+	
+		var data = settings.aoData[ idx ];
+		return ! data.nTr ? // Might not have been created when deferred rendering
+			$('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :
+			data.anCells[ colIdx ];
+	}
+	
+	
+	/**
+	 * Get the maximum strlen for each data column
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} colIdx column of interest
+	 *  @returns {string} max string length for each column
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetMaxLenString( settings, colIdx )
+	{
+		var s, max=-1, maxIdx = -1;
+	
+		for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+			s = _fnGetCellData( settings, i, colIdx, 'display' )+'';
+			s = s.replace( __re_html_remove, '' );
+			s = s.replace( /&nbsp;/g, ' ' );
+	
+			if ( s.length > max ) {
+				max = s.length;
+				maxIdx = i;
+			}
+		}
+	
+		return maxIdx;
+	}
+	
+	
+	/**
+	 * Append a CSS unit (only if required) to a string
+	 *  @param {string} value to css-ify
+	 *  @returns {string} value with css unit
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnStringToCss( s )
+	{
+		if ( s === null ) {
+			return '0px';
+		}
+	
+		if ( typeof s == 'number' ) {
+			return s < 0 ?
+				'0px' :
+				s+'px';
+		}
+	
+		// Check it has a unit character already
+		return s.match(/\d$/) ?
+			s+'px' :
+			s;
+	}
+	
+	
+	
+	function _fnSortFlatten ( settings )
+	{
+		var
+			i, iLen, k, kLen,
+			aSort = [],
+			aiOrig = [],
+			aoColumns = settings.aoColumns,
+			aDataSort, iCol, sType, srcCol,
+			fixed = settings.aaSortingFixed,
+			fixedObj = $.isPlainObject( fixed ),
+			nestedSort = [],
+			add = function ( a ) {
+				if ( a.length && ! $.isArray( a[0] ) ) {
+					// 1D array
+					nestedSort.push( a );
+				}
+				else {
+					// 2D array
+					$.merge( nestedSort, a );
+				}
+			};
+	
+		// Build the sort array, with pre-fix and post-fix options if they have been
+		// specified
+		if ( $.isArray( fixed ) ) {
+			add( fixed );
+		}
+	
+		if ( fixedObj && fixed.pre ) {
+			add( fixed.pre );
+		}
+	
+		add( settings.aaSorting );
+	
+		if (fixedObj && fixed.post ) {
+			add( fixed.post );
+		}
+	
+		for ( i=0 ; i<nestedSort.length ; i++ )
+		{
+			srcCol = nestedSort[i][0];
+			aDataSort = aoColumns[ srcCol ].aDataSort;
+	
+			for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )
+			{
+				iCol = aDataSort[k];
+				sType = aoColumns[ iCol ].sType || 'string';
+	
+				if ( nestedSort[i]._idx === undefined ) {
+					nestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting );
+				}
+	
+				aSort.push( {
+					src:       srcCol,
+					col:       iCol,
+					dir:       nestedSort[i][1],
+					index:     nestedSort[i]._idx,
+					type:      sType,
+					formatter: DataTable.ext.type.order[ sType+"-pre" ]
+				} );
+			}
+		}
+	
+		return aSort;
+	}
+	
+	/**
+	 * Change the order of the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 *  @todo This really needs split up!
+	 */
+	function _fnSort ( oSettings )
+	{
+		var
+			i, ien, iLen, j, jLen, k, kLen,
+			sDataType, nTh,
+			aiOrig = [],
+			oExtSort = DataTable.ext.type.order,
+			aoData = oSettings.aoData,
+			aoColumns = oSettings.aoColumns,
+			aDataSort, data, iCol, sType, oSort,
+			formatters = 0,
+			sortCol,
+			displayMaster = oSettings.aiDisplayMaster,
+			aSort;
+	
+		// Resolve any column types that are unknown due to addition or invalidation
+		// @todo Can this be moved into a 'data-ready' handler which is called when
+		//   data is going to be used in the table?
+		_fnColumnTypes( oSettings );
+	
+		aSort = _fnSortFlatten( oSettings );
+	
+		for ( i=0, ien=aSort.length ; i<ien ; i++ ) {
+			sortCol = aSort[i];
+	
+			// Track if we can use the fast sort algorithm
+			if ( sortCol.formatter ) {
+				formatters++;
+			}
+	
+			// Load the data needed for the sort, for each cell
+			_fnSortData( oSettings, sortCol.col );
+		}
+	
+		/* No sorting required if server-side or no sorting array */
+		if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )
+		{
+			// Create a value - key array of the current row positions such that we can use their
+			// current position during the sort, if values match, in order to perform stable sorting
+			for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {
+				aiOrig[ displayMaster[i] ] = i;
+			}
+	
+			/* Do the sort - here we want multi-column sorting based on a given data source (column)
+			 * and sorting function (from oSort) in a certain direction. It's reasonably complex to
+			 * follow on it's own, but this is what we want (example two column sorting):
+			 *  fnLocalSorting = function(a,b){
+			 *    var iTest;
+			 *    iTest = oSort['string-asc']('data11', 'data12');
+			 *      if (iTest !== 0)
+			 *        return iTest;
+			 *    iTest = oSort['numeric-desc']('data21', 'data22');
+			 *    if (iTest !== 0)
+			 *      return iTest;
+			 *    return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
+			 *  }
+			 * Basically we have a test for each sorting column, if the data in that column is equal,
+			 * test the next column. If all columns match, then we use a numeric sort on the row
+			 * positions in the original data array to provide a stable sort.
+			 *
+			 * Note - I know it seems excessive to have two sorting methods, but the first is around
+			 * 15% faster, so the second is only maintained for backwards compatibility with sorting
+			 * methods which do not have a pre-sort formatting function.
+			 */
+			if ( formatters === aSort.length ) {
+				// All sort types have formatting functions
+				displayMaster.sort( function ( a, b ) {
+					var
+						x, y, k, test, sort,
+						len=aSort.length,
+						dataA = aoData[a]._aSortData,
+						dataB = aoData[b]._aSortData;
+	
+					for ( k=0 ; k<len ; k++ ) {
+						sort = aSort[k];
+	
+						x = dataA[ sort.col ];
+						y = dataB[ sort.col ];
+	
+						test = x<y ? -1 : x>y ? 1 : 0;
+						if ( test !== 0 ) {
+							return sort.dir === 'asc' ? test : -test;
+						}
+					}
+	
+					x = aiOrig[a];
+					y = aiOrig[b];
+					return x<y ? -1 : x>y ? 1 : 0;
+				} );
+			}
+			else {
+				// Depreciated - remove in 1.11 (providing a plug-in option)
+				// Not all sort types have formatting methods, so we have to call their sorting
+				// methods.
+				displayMaster.sort( function ( a, b ) {
+					var
+						x, y, k, l, test, sort, fn,
+						len=aSort.length,
+						dataA = aoData[a]._aSortData,
+						dataB = aoData[b]._aSortData;
+	
+					for ( k=0 ; k<len ; k++ ) {
+						sort = aSort[k];
+	
+						x = dataA[ sort.col ];
+						y = dataB[ sort.col ];
+	
+						fn = oExtSort[ sort.type+"-"+sort.dir ] || oExtSort[ "string-"+sort.dir ];
+						test = fn( x, y );
+						if ( test !== 0 ) {
+							return test;
+						}
+					}
+	
+					x = aiOrig[a];
+					y = aiOrig[b];
+					return x<y ? -1 : x>y ? 1 : 0;
+				} );
+			}
+		}
+	
+		/* Tell the draw function that we have sorted the data */
+		oSettings.bSorted = true;
+	}
+	
+	
+	function _fnSortAria ( settings )
+	{
+		var label;
+		var nextSort;
+		var columns = settings.aoColumns;
+		var aSort = _fnSortFlatten( settings );
+		var oAria = settings.oLanguage.oAria;
+	
+		// ARIA attributes - need to loop all columns, to update all (removing old
+		// attributes as needed)
+		for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
+		{
+			var col = columns[i];
+			var asSorting = col.asSorting;
+			var sTitle = col.sTitle.replace( /<.*?>/g, "" );
+			var th = col.nTh;
+	
+			// IE7 is throwing an error when setting these properties with jQuery's
+			// attr() and removeAttr() methods...
+			th.removeAttribute('aria-sort');
+	
+			/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */
+			if ( col.bSortable ) {
+				if ( aSort.length > 0 && aSort[0].col == i ) {
+					th.setAttribute('aria-sort', aSort[0].dir=="asc" ? "ascending" : "descending" );
+					nextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];
+				}
+				else {
+					nextSort = asSorting[0];
+				}
+	
+				label = sTitle + ( nextSort === "asc" ?
+					oAria.sSortAscending :
+					oAria.sSortDescending
+				);
+			}
+			else {
+				label = sTitle;
+			}
+	
+			th.setAttribute('aria-label', label);
+		}
+	}
+	
+	
+	/**
+	 * Function to run on user sort request
+	 *  @param {object} settings dataTables settings object
+	 *  @param {node} attachTo node to attach the handler to
+	 *  @param {int} colIdx column sorting index
+	 *  @param {boolean} [append=false] Append the requested sort to the existing
+	 *    sort if true (i.e. multi-column sort)
+	 *  @param {function} [callback] callback function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSortListener ( settings, colIdx, append, callback )
+	{
+		var col = settings.aoColumns[ colIdx ];
+		var sorting = settings.aaSorting;
+		var asSorting = col.asSorting;
+		var nextSortIdx;
+		var next = function ( a, overflow ) {
+			var idx = a._idx;
+			if ( idx === undefined ) {
+				idx = $.inArray( a[1], asSorting );
+			}
+	
+			return idx+1 < asSorting.length ?
+				idx+1 :
+				overflow ?
+					null :
+					0;
+		};
+	
+		// Convert to 2D array if needed
+		if ( typeof sorting[0] === 'number' ) {
+			sorting = settings.aaSorting = [ sorting ];
+		}
+	
+		// If appending the sort then we are multi-column sorting
+		if ( append && settings.oFeatures.bSortMulti ) {
+			// Are we already doing some kind of sort on this column?
+			var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );
+	
+			if ( sortIdx !== -1 ) {
+				// Yes, modify the sort
+				nextSortIdx = next( sorting[sortIdx], true );
+	
+				if ( nextSortIdx === null && sorting.length === 1 ) {
+					nextSortIdx = 0; // can't remove sorting completely
+				}
+	
+				if ( nextSortIdx === null ) {
+					sorting.splice( sortIdx, 1 );
+				}
+				else {
+					sorting[sortIdx][1] = asSorting[ nextSortIdx ];
+					sorting[sortIdx]._idx = nextSortIdx;
+				}
+			}
+			else {
+				// No sort on this column yet
+				sorting.push( [ colIdx, asSorting[0], 0 ] );
+				sorting[sorting.length-1]._idx = 0;
+			}
+		}
+		else if ( sorting.length && sorting[0][0] == colIdx ) {
+			// Single column - already sorting on this column, modify the sort
+			nextSortIdx = next( sorting[0] );
+	
+			sorting.length = 1;
+			sorting[0][1] = asSorting[ nextSortIdx ];
+			sorting[0]._idx = nextSortIdx;
+		}
+		else {
+			// Single column - sort only on this column
+			sorting.length = 0;
+			sorting.push( [ colIdx, asSorting[0] ] );
+			sorting[0]._idx = 0;
+		}
+	
+		// Run the sort by calling a full redraw
+		_fnReDraw( settings );
+	
+		// callback used for async user interaction
+		if ( typeof callback == 'function' ) {
+			callback( settings );
+		}
+	}
+	
+	
+	/**
+	 * Attach a sort handler (click) to a node
+	 *  @param {object} settings dataTables settings object
+	 *  @param {node} attachTo node to attach the handler to
+	 *  @param {int} colIdx column sorting index
+	 *  @param {function} [callback] callback function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSortAttachListener ( settings, attachTo, colIdx, callback )
+	{
+		var col = settings.aoColumns[ colIdx ];
+	
+		_fnBindAction( attachTo, {}, function (e) {
+			/* If the column is not sortable - don't to anything */
+			if ( col.bSortable === false ) {
+				return;
+			}
+	
+			// If processing is enabled use a timeout to allow the processing
+			// display to be shown - otherwise to it synchronously
+			if ( settings.oFeatures.bProcessing ) {
+				_fnProcessingDisplay( settings, true );
+	
+				setTimeout( function() {
+					_fnSortListener( settings, colIdx, e.shiftKey, callback );
+	
+					// In server-side processing, the draw callback will remove the
+					// processing display
+					if ( _fnDataSource( settings ) !== 'ssp' ) {
+						_fnProcessingDisplay( settings, false );
+					}
+				}, 0 );
+			}
+			else {
+				_fnSortListener( settings, colIdx, e.shiftKey, callback );
+			}
+		} );
+	}
+	
+	
+	/**
+	 * Set the sorting classes on table's body, Note: it is safe to call this function
+	 * when bSort and bSortClasses are false
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSortingClasses( settings )
+	{
+		var oldSort = settings.aLastSort;
+		var sortClass = settings.oClasses.sSortColumn;
+		var sort = _fnSortFlatten( settings );
+		var features = settings.oFeatures;
+		var i, ien, colIdx;
+	
+		if ( features.bSort && features.bSortClasses ) {
+			// Remove old sorting classes
+			for ( i=0, ien=oldSort.length ; i<ien ; i++ ) {
+				colIdx = oldSort[i].src;
+	
+				// Remove column sorting
+				$( _pluck( settings.aoData, 'anCells', colIdx ) )
+					.removeClass( sortClass + (i<2 ? i+1 : 3) );
+			}
+	
+			// Add new column sorting
+			for ( i=0, ien=sort.length ; i<ien ; i++ ) {
+				colIdx = sort[i].src;
+	
+				$( _pluck( settings.aoData, 'anCells', colIdx ) )
+					.addClass( sortClass + (i<2 ? i+1 : 3) );
+			}
+		}
+	
+		settings.aLastSort = sort;
+	}
+	
+	
+	// Get the data to sort a column, be it from cache, fresh (populating the
+	// cache), or from a sort formatter
+	function _fnSortData( settings, idx )
+	{
+		// Custom sorting function - provided by the sort data type
+		var column = settings.aoColumns[ idx ];
+		var customSort = DataTable.ext.order[ column.sSortDataType ];
+		var customData;
+	
+		if ( customSort ) {
+			customData = customSort.call( settings.oInstance, settings, idx,
+				_fnColumnIndexToVisible( settings, idx )
+			);
+		}
+	
+		// Use / populate cache
+		var row, cellData;
+		var formatter = DataTable.ext.type.order[ column.sType+"-pre" ];
+	
+		for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+			row = settings.aoData[i];
+	
+			if ( ! row._aSortData ) {
+				row._aSortData = [];
+			}
+	
+			if ( ! row._aSortData[idx] || customSort ) {
+				cellData = customSort ?
+					customData[i] : // If there was a custom sort function, use data from there
+					_fnGetCellData( settings, i, idx, 'sort' );
+	
+				row._aSortData[ idx ] = formatter ?
+					formatter( cellData ) :
+					cellData;
+			}
+		}
+	}
+	
+	
+	
+	/**
+	 * Save the state of a table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSaveState ( settings )
+	{
+		if ( !settings.oFeatures.bStateSave || settings.bDestroying )
+		{
+			return;
+		}
+	
+		/* Store the interesting variables */
+		var state = {
+			time:    +new Date(),
+			start:   settings._iDisplayStart,
+			length:  settings._iDisplayLength,
+			order:   $.extend( true, [], settings.aaSorting ),
+			search:  _fnSearchToCamel( settings.oPreviousSearch ),
+			columns: $.map( settings.aoColumns, function ( col, i ) {
+				return {
+					visible: col.bVisible,
+					search: _fnSearchToCamel( settings.aoPreSearchCols[i] )
+				};
+			} )
+		};
+	
+		_fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] );
+	
+		settings.oSavedState = state;
+		settings.fnStateSaveCallback.call( settings.oInstance, settings, state );
+	}
+	
+	
+	/**
+	 * Attempt to load a saved table state
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} oInit DataTables init object so we can override settings
+	 *  @param {function} callback Callback to execute when the state has been loaded
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnLoadState ( settings, oInit, callback )
+	{
+		var i, ien;
+		var columns = settings.aoColumns;
+		var loaded = function ( s ) {
+			if ( ! s || ! s.time ) {
+				callback();
+				return;
+			}
+	
+			// Allow custom and plug-in manipulation functions to alter the saved data set and
+			// cancelling of loading by returning false
+			var abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, s] );
+			if ( $.inArray( false, abStateLoad ) !== -1 ) {
+				callback();
+				return;
+			}
+	
+			// Reject old data
+			var duration = settings.iStateDuration;
+			if ( duration > 0 && s.time < +new Date() - (duration*1000) ) {
+				callback();
+				return;
+			}
+	
+			// Number of columns have changed - all bets are off, no restore of settings
+			if ( s.columns && columns.length !== s.columns.length ) {
+				callback();
+				return;
+			}
+	
+			// Store the saved state so it might be accessed at any time
+			settings.oLoadedState = $.extend( true, {}, s );
+	
+			// Restore key features - todo - for 1.11 this needs to be done by
+			// subscribed events
+			if ( s.start !== undefined ) {
+				settings._iDisplayStart    = s.start;
+				settings.iInitDisplayStart = s.start;
+			}
+			if ( s.length !== undefined ) {
+				settings._iDisplayLength   = s.length;
+			}
+	
+			// Order
+			if ( s.order !== undefined ) {
+				settings.aaSorting = [];
+				$.each( s.order, function ( i, col ) {
+					settings.aaSorting.push( col[0] >= columns.length ?
+						[ 0, col[1] ] :
+						col
+					);
+				} );
+			}
+	
+			// Search
+			if ( s.search !== undefined ) {
+				$.extend( settings.oPreviousSearch, _fnSearchToHung( s.search ) );
+			}
+	
+			// Columns
+			//
+			if ( s.columns ) {
+				for ( i=0, ien=s.columns.length ; i<ien ; i++ ) {
+					var col = s.columns[i];
+	
+					// Visibility
+					if ( col.visible !== undefined ) {
+						columns[i].bVisible = col.visible;
+					}
+	
+					// Search
+					if ( col.search !== undefined ) {
+						$.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) );
+					}
+				}
+			}
+	
+			_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, s] );
+			callback();
+		};
+	
+		if ( ! settings.oFeatures.bStateSave ) {
+			callback();
+			return;
+		}
+	
+		var state = settings.fnStateLoadCallback.call( settings.oInstance, settings, loaded );
+	
+		if ( state !== undefined ) {
+			loaded( state );
+		}
+		// otherwise, wait for the loaded callback to be executed
+	}
+	
+	
+	/**
+	 * Return the settings object for a particular table
+	 *  @param {node} table table we are using as a dataTable
+	 *  @returns {object} Settings object - or null if not found
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSettingsFromNode ( table )
+	{
+		var settings = DataTable.settings;
+		var idx = $.inArray( table, _pluck( settings, 'nTable' ) );
+	
+		return idx !== -1 ?
+			settings[ idx ] :
+			null;
+	}
+	
+	
+	/**
+	 * Log an error message
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} level log error messages, or display them to the user
+	 *  @param {string} msg error message
+	 *  @param {int} tn Technical note id to get more information about the error.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnLog( settings, level, msg, tn )
+	{
+		msg = 'DataTables warning: '+
+			(settings ? 'table id='+settings.sTableId+' - ' : '')+msg;
+	
+		if ( tn ) {
+			msg += '. For more information about this error, please see '+
+			'http://datatables.net/tn/'+tn;
+		}
+	
+		if ( ! level  ) {
+			// Backwards compatibility pre 1.10
+			var ext = DataTable.ext;
+			var type = ext.sErrMode || ext.errMode;
+	
+			if ( settings ) {
+				_fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] );
+			}
+	
+			if ( type == 'alert' ) {
+				alert( msg );
+			}
+			else if ( type == 'throw' ) {
+				throw new Error(msg);
+			}
+			else if ( typeof type == 'function' ) {
+				type( settings, tn, msg );
+			}
+		}
+		else if ( window.console && console.log ) {
+			console.log( msg );
+		}
+	}
+	
+	
+	/**
+	 * See if a property is defined on one object, if so assign it to the other object
+	 *  @param {object} ret target object
+	 *  @param {object} src source object
+	 *  @param {string} name property
+	 *  @param {string} [mappedName] name to map too - optional, name used if not given
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnMap( ret, src, name, mappedName )
+	{
+		if ( $.isArray( name ) ) {
+			$.each( name, function (i, val) {
+				if ( $.isArray( val ) ) {
+					_fnMap( ret, src, val[0], val[1] );
+				}
+				else {
+					_fnMap( ret, src, val );
+				}
+			} );
+	
+			return;
+		}
+	
+		if ( mappedName === undefined ) {
+			mappedName = name;
+		}
+	
+		if ( src[name] !== undefined ) {
+			ret[mappedName] = src[name];
+		}
+	}
+	
+	
+	/**
+	 * Extend objects - very similar to jQuery.extend, but deep copy objects, and
+	 * shallow copy arrays. The reason we need to do this, is that we don't want to
+	 * deep copy array init values (such as aaSorting) since the dev wouldn't be
+	 * able to override them, but we do want to deep copy arrays.
+	 *  @param {object} out Object to extend
+	 *  @param {object} extender Object from which the properties will be applied to
+	 *      out
+	 *  @param {boolean} breakRefs If true, then arrays will be sliced to take an
+	 *      independent copy with the exception of the `data` or `aaData` parameters
+	 *      if they are present. This is so you can pass in a collection to
+	 *      DataTables and have that used as your data source without breaking the
+	 *      references
+	 *  @returns {object} out Reference, just for convenience - out === the return.
+	 *  @memberof DataTable#oApi
+	 *  @todo This doesn't take account of arrays inside the deep copied objects.
+	 */
+	function _fnExtend( out, extender, breakRefs )
+	{
+		var val;
+	
+		for ( var prop in extender ) {
+			if ( extender.hasOwnProperty(prop) ) {
+				val = extender[prop];
+	
+				if ( $.isPlainObject( val ) ) {
+					if ( ! $.isPlainObject( out[prop] ) ) {
+						out[prop] = {};
+					}
+					$.extend( true, out[prop], val );
+				}
+				else if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) {
+					out[prop] = val.slice();
+				}
+				else {
+					out[prop] = val;
+				}
+			}
+		}
+	
+		return out;
+	}
+	
+	
+	/**
+	 * Bind an event handers to allow a click or return key to activate the callback.
+	 * This is good for accessibility since a return on the keyboard will have the
+	 * same effect as a click, if the element has focus.
+	 *  @param {element} n Element to bind the action to
+	 *  @param {object} oData Data object to pass to the triggered function
+	 *  @param {function} fn Callback function for when the event is triggered
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnBindAction( n, oData, fn )
+	{
+		$(n)
+			.on( 'click.DT', oData, function (e) {
+					$(n).blur(); // Remove focus outline for mouse users
+					fn(e);
+				} )
+			.on( 'keypress.DT', oData, function (e){
+					if ( e.which === 13 ) {
+						e.preventDefault();
+						fn(e);
+					}
+				} )
+			.on( 'selectstart.DT', function () {
+					/* Take the brutal approach to cancelling text selection */
+					return false;
+				} );
+	}
+	
+	
+	/**
+	 * Register a callback function. Easily allows a callback function to be added to
+	 * an array store of callback functions that can then all be called together.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {string} sStore Name of the array storage for the callbacks in oSettings
+	 *  @param {function} fn Function to be called back
+	 *  @param {string} sName Identifying name for the callback (i.e. a label)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCallbackReg( oSettings, sStore, fn, sName )
+	{
+		if ( fn )
+		{
+			oSettings[sStore].push( {
+				"fn": fn,
+				"sName": sName
+			} );
+		}
+	}
+	
+	
+	/**
+	 * Fire callback functions and trigger events. Note that the loop over the
+	 * callback array store is done backwards! Further note that you do not want to
+	 * fire off triggers in time sensitive applications (for example cell creation)
+	 * as its slow.
+	 *  @param {object} settings dataTables settings object
+	 *  @param {string} callbackArr Name of the array storage for the callbacks in
+	 *      oSettings
+	 *  @param {string} eventName Name of the jQuery custom event to trigger. If
+	 *      null no trigger is fired
+	 *  @param {array} args Array of arguments to pass to the callback function /
+	 *      trigger
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCallbackFire( settings, callbackArr, eventName, args )
+	{
+		var ret = [];
+	
+		if ( callbackArr ) {
+			ret = $.map( settings[callbackArr].slice().reverse(), function (val, i) {
+				return val.fn.apply( settings.oInstance, args );
+			} );
+		}
+	
+		if ( eventName !== null ) {
+			var e = $.Event( eventName+'.dt' );
+	
+			$(settings.nTable).trigger( e, args );
+	
+			ret.push( e.result );
+		}
+	
+		return ret;
+	}
+	
+	
+	function _fnLengthOverflow ( settings )
+	{
+		var
+			start = settings._iDisplayStart,
+			end = settings.fnDisplayEnd(),
+			len = settings._iDisplayLength;
+	
+		/* If we have space to show extra rows (backing up from the end point - then do so */
+		if ( start >= end )
+		{
+			start = end - len;
+		}
+	
+		// Keep the start record on the current page
+		start -= (start % len);
+	
+		if ( len === -1 || start < 0 )
+		{
+			start = 0;
+		}
+	
+		settings._iDisplayStart = start;
+	}
+	
+	
+	function _fnRenderer( settings, type )
+	{
+		var renderer = settings.renderer;
+		var host = DataTable.ext.renderer[type];
+	
+		if ( $.isPlainObject( renderer ) && renderer[type] ) {
+			// Specific renderer for this type. If available use it, otherwise use
+			// the default.
+			return host[renderer[type]] || host._;
+		}
+		else if ( typeof renderer === 'string' ) {
+			// Common renderer - if there is one available for this type use it,
+			// otherwise use the default
+			return host[renderer] || host._;
+		}
+	
+		// Use the default
+		return host._;
+	}
+	
+	
+	/**
+	 * Detect the data source being used for the table. Used to simplify the code
+	 * a little (ajax) and to make it compress a little smaller.
+	 *
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {string} Data source
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDataSource ( settings )
+	{
+		if ( settings.oFeatures.bServerSide ) {
+			return 'ssp';
+		}
+		else if ( settings.ajax || settings.sAjaxSource ) {
+			return 'ajax';
+		}
+		return 'dom';
+	}
+	
+
+	
+	
+	/**
+	 * Computed structure of the DataTables API, defined by the options passed to
+	 * `DataTable.Api.register()` when building the API.
+	 *
+	 * The structure is built in order to speed creation and extension of the Api
+	 * objects since the extensions are effectively pre-parsed.
+	 *
+	 * The array is an array of objects with the following structure, where this
+	 * base array represents the Api prototype base:
+	 *
+	 *     [
+	 *       {
+	 *         name:      'data'                -- string   - Property name
+	 *         val:       function () {},       -- function - Api method (or undefined if just an object
+	 *         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result
+	 *         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property
+	 *       },
+	 *       {
+	 *         name:     'row'
+	 *         val:       {},
+	 *         methodExt: [ ... ],
+	 *         propExt:   [
+	 *           {
+	 *             name:      'data'
+	 *             val:       function () {},
+	 *             methodExt: [ ... ],
+	 *             propExt:   [ ... ]
+	 *           },
+	 *           ...
+	 *         ]
+	 *       }
+	 *     ]
+	 *
+	 * @type {Array}
+	 * @ignore
+	 */
+	var __apiStruct = [];
+	
+	
+	/**
+	 * `Array.prototype` reference.
+	 *
+	 * @type object
+	 * @ignore
+	 */
+	var __arrayProto = Array.prototype;
+	
+	
+	/**
+	 * Abstraction for `context` parameter of the `Api` constructor to allow it to
+	 * take several different forms for ease of use.
+	 *
+	 * Each of the input parameter types will be converted to a DataTables settings
+	 * object where possible.
+	 *
+	 * @param  {string|node|jQuery|object} mixed DataTable identifier. Can be one
+	 *   of:
+	 *
+	 *   * `string` - jQuery selector. Any DataTables' matching the given selector
+	 *     with be found and used.
+	 *   * `node` - `TABLE` node which has already been formed into a DataTable.
+	 *   * `jQuery` - A jQuery object of `TABLE` nodes.
+	 *   * `object` - DataTables settings object
+	 *   * `DataTables.Api` - API instance
+	 * @return {array|null} Matching DataTables settings objects. `null` or
+	 *   `undefined` is returned if no matching DataTable is found.
+	 * @ignore
+	 */
+	var _toSettings = function ( mixed )
+	{
+		var idx, jq;
+		var settings = DataTable.settings;
+		var tables = $.map( settings, function (el, i) {
+			return el.nTable;
+		} );
+	
+		if ( ! mixed ) {
+			return [];
+		}
+		else if ( mixed.nTable && mixed.oApi ) {
+			// DataTables settings object
+			return [ mixed ];
+		}
+		else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {
+			// Table node
+			idx = $.inArray( mixed, tables );
+			return idx !== -1 ? [ settings[idx] ] : null;
+		}
+		else if ( mixed && typeof mixed.settings === 'function' ) {
+			return mixed.settings().toArray();
+		}
+		else if ( typeof mixed === 'string' ) {
+			// jQuery selector
+			jq = $(mixed);
+		}
+		else if ( mixed instanceof $ ) {
+			// jQuery object (also DataTables instance)
+			jq = mixed;
+		}
+	
+		if ( jq ) {
+			return jq.map( function(i) {
+				idx = $.inArray( this, tables );
+				return idx !== -1 ? settings[idx] : null;
+			} ).toArray();
+		}
+	};
+	
+	
+	/**
+	 * DataTables API class - used to control and interface with  one or more
+	 * DataTables enhanced tables.
+	 *
+	 * The API class is heavily based on jQuery, presenting a chainable interface
+	 * that you can use to interact with tables. Each instance of the API class has
+	 * a "context" - i.e. the tables that it will operate on. This could be a single
+	 * table, all tables on a page or a sub-set thereof.
+	 *
+	 * Additionally the API is designed to allow you to easily work with the data in
+	 * the tables, retrieving and manipulating it as required. This is done by
+	 * presenting the API class as an array like interface. The contents of the
+	 * array depend upon the actions requested by each method (for example
+	 * `rows().nodes()` will return an array of nodes, while `rows().data()` will
+	 * return an array of objects or arrays depending upon your table's
+	 * configuration). The API object has a number of array like methods (`push`,
+	 * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,
+	 * `unique` etc) to assist your working with the data held in a table.
+	 *
+	 * Most methods (those which return an Api instance) are chainable, which means
+	 * the return from a method call also has all of the methods available that the
+	 * top level object had. For example, these two calls are equivalent:
+	 *
+	 *     // Not chained
+	 *     api.row.add( {...} );
+	 *     api.draw();
+	 *
+	 *     // Chained
+	 *     api.row.add( {...} ).draw();
+	 *
+	 * @class DataTable.Api
+	 * @param {array|object|string|jQuery} context DataTable identifier. This is
+	 *   used to define which DataTables enhanced tables this API will operate on.
+	 *   Can be one of:
+	 *
+	 *   * `string` - jQuery selector. Any DataTables' matching the given selector
+	 *     with be found and used.
+	 *   * `node` - `TABLE` node which has already been formed into a DataTable.
+	 *   * `jQuery` - A jQuery object of `TABLE` nodes.
+	 *   * `object` - DataTables settings object
+	 * @param {array} [data] Data to initialise the Api instance with.
+	 *
+	 * @example
+	 *   // Direct initialisation during DataTables construction
+	 *   var api = $('#example').DataTable();
+	 *
+	 * @example
+	 *   // Initialisation using a DataTables jQuery object
+	 *   var api = $('#example').dataTable().api();
+	 *
+	 * @example
+	 *   // Initialisation as a constructor
+	 *   var api = new $.fn.DataTable.Api( 'table.dataTable' );
+	 */
+	_Api = function ( context, data )
+	{
+		if ( ! (this instanceof _Api) ) {
+			return new _Api( context, data );
+		}
+	
+		var settings = [];
+		var ctxSettings = function ( o ) {
+			var a = _toSettings( o );
+			if ( a ) {
+				settings.push.apply( settings, a );
+			}
+		};
+	
+		if ( $.isArray( context ) ) {
+			for ( var i=0, ien=context.length ; i<ien ; i++ ) {
+				ctxSettings( context[i] );
+			}
+		}
+		else {
+			ctxSettings( context );
+		}
+	
+		// Remove duplicates
+		this.context = _unique( settings );
+	
+		// Initial data
+		if ( data ) {
+			$.merge( this, data );
+		}
+	
+		// selector
+		this.selector = {
+			rows: null,
+			cols: null,
+			opts: null
+		};
+	
+		_Api.extend( this, this, __apiStruct );
+	};
+	
+	DataTable.Api = _Api;
+	
+	// Don't destroy the existing prototype, just extend it. Required for jQuery 2's
+	// isPlainObject.
+	$.extend( _Api.prototype, {
+		any: function ()
+		{
+			return this.count() !== 0;
+		},
+	
+	
+		concat:  __arrayProto.concat,
+	
+	
+		context: [], // array of table settings objects
+	
+	
+		count: function ()
+		{
+			return this.flatten().length;
+		},
+	
+	
+		each: function ( fn )
+		{
+			for ( var i=0, ien=this.length ; i<ien; i++ ) {
+				fn.call( this, this[i], i, this );
+			}
+	
+			return this;
+		},
+	
+	
+		eq: function ( idx )
+		{
+			var ctx = this.context;
+	
+			return ctx.length > idx ?
+				new _Api( ctx[idx], this[idx] ) :
+				null;
+		},
+	
+	
+		filter: function ( fn )
+		{
+			var a = [];
+	
+			if ( __arrayProto.filter ) {
+				a = __arrayProto.filter.call( this, fn, this );
+			}
+			else {
+				// Compatibility for browsers without EMCA-252-5 (JS 1.6)
+				for ( var i=0, ien=this.length ; i<ien ; i++ ) {
+					if ( fn.call( this, this[i], i, this ) ) {
+						a.push( this[i] );
+					}
+				}
+			}
+	
+			return new _Api( this.context, a );
+		},
+	
+	
+		flatten: function ()
+		{
+			var a = [];
+			return new _Api( this.context, a.concat.apply( a, this.toArray() ) );
+		},
+	
+	
+		join:    __arrayProto.join,
+	
+	
+		indexOf: __arrayProto.indexOf || function (obj, start)
+		{
+			for ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) {
+				if ( this[i] === obj ) {
+					return i;
+				}
+			}
+			return -1;
+		},
+	
+		iterator: function ( flatten, type, fn, alwaysNew ) {
+			var
+				a = [], ret,
+				i, ien, j, jen,
+				context = this.context,
+				rows, items, item,
+				selector = this.selector;
+	
+			// Argument shifting
+			if ( typeof flatten === 'string' ) {
+				alwaysNew = fn;
+				fn = type;
+				type = flatten;
+				flatten = false;
+			}
+	
+			for ( i=0, ien=context.length ; i<ien ; i++ ) {
+				var apiInst = new _Api( context[i] );
+	
+				if ( type === 'table' ) {
+					ret = fn.call( apiInst, context[i], i );
+	
+					if ( ret !== undefined ) {
+						a.push( ret );
+					}
+				}
+				else if ( type === 'columns' || type === 'rows' ) {
+					// this has same length as context - one entry for each table
+					ret = fn.call( apiInst, context[i], this[i], i );
+	
+					if ( ret !== undefined ) {
+						a.push( ret );
+					}
+				}
+				else if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {
+					// columns and rows share the same structure.
+					// 'this' is an array of column indexes for each context
+					items = this[i];
+	
+					if ( type === 'column-rows' ) {
+						rows = _selector_row_indexes( context[i], selector.opts );
+					}
+	
+					for ( j=0, jen=items.length ; j<jen ; j++ ) {
+						item = items[j];
+	
+						if ( type === 'cell' ) {
+							ret = fn.call( apiInst, context[i], item.row, item.column, i, j );
+						}
+						else {
+							ret = fn.call( apiInst, context[i], item, i, j, rows );
+						}
+	
+						if ( ret !== undefined ) {
+							a.push( ret );
+						}
+					}
+				}
+			}
+	
+			if ( a.length || alwaysNew ) {
+				var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );
+				var apiSelector = api.selector;
+				apiSelector.rows = selector.rows;
+				apiSelector.cols = selector.cols;
+				apiSelector.opts = selector.opts;
+				return api;
+			}
+			return this;
+		},
+	
+	
+		lastIndexOf: __arrayProto.lastIndexOf || function (obj, start)
+		{
+			// Bit cheeky...
+			return this.indexOf.apply( this.toArray.reverse(), arguments );
+		},
+	
+	
+		length:  0,
+	
+	
+		map: function ( fn )
+		{
+			var a = [];
+	
+			if ( __arrayProto.map ) {
+				a = __arrayProto.map.call( this, fn, this );
+			}
+			else {
+				// Compatibility for browsers without EMCA-252-5 (JS 1.6)
+				for ( var i=0, ien=this.length ; i<ien ; i++ ) {
+					a.push( fn.call( this, this[i], i ) );
+				}
+			}
+	
+			return new _Api( this.context, a );
+		},
+	
+	
+		pluck: function ( prop )
+		{
+			return this.map( function ( el ) {
+				return el[ prop ];
+			} );
+		},
+	
+		pop:     __arrayProto.pop,
+	
+	
+		push:    __arrayProto.push,
+	
+	
+		// Does not return an API instance
+		reduce: __arrayProto.reduce || function ( fn, init )
+		{
+			return _fnReduce( this, fn, init, 0, this.length, 1 );
+		},
+	
+	
+		reduceRight: __arrayProto.reduceRight || function ( fn, init )
+		{
+			return _fnReduce( this, fn, init, this.length-1, -1, -1 );
+		},
+	
+	
+		reverse: __arrayProto.reverse,
+	
+	
+		// Object with rows, columns and opts
+		selector: null,
+	
+	
+		shift:   __arrayProto.shift,
+	
+	
+		slice: function () {
+			return new _Api( this.context, this );
+		},
+	
+	
+		sort:    __arrayProto.sort, // ? name - order?
+	
+	
+		splice:  __arrayProto.splice,
+	
+	
+		toArray: function ()
+		{
+			return __arrayProto.slice.call( this );
+		},
+	
+	
+		to$: function ()
+		{
+			return $( this );
+		},
+	
+	
+		toJQuery: function ()
+		{
+			return $( this );
+		},
+	
+	
+		unique: function ()
+		{
+			return new _Api( this.context, _unique(this) );
+		},
+	
+	
+		unshift: __arrayProto.unshift
+	} );
+	
+	
+	_Api.extend = function ( scope, obj, ext )
+	{
+		// Only extend API instances and static properties of the API
+		if ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {
+			return;
+		}
+	
+		var
+			i, ien,
+			struct,
+			methodScoping = function ( scope, fn, struc ) {
+				return function () {
+					var ret = fn.apply( scope, arguments );
+	
+					// Method extension
+					_Api.extend( ret, ret, struc.methodExt );
+					return ret;
+				};
+			};
+	
+		for ( i=0, ien=ext.length ; i<ien ; i++ ) {
+			struct = ext[i];
+	
+			// Value
+			obj[ struct.name ] = struct.type === 'function' ?
+				methodScoping( scope, struct.val, struct ) :
+				struct.type === 'object' ?
+					{} :
+					struct.val;
+	
+			obj[ struct.name ].__dt_wrapper = true;
+	
+			// Property extension
+			_Api.extend( scope, obj[ struct.name ], struct.propExt );
+		}
+	};
+	
+	
+	// @todo - Is there need for an augment function?
+	// _Api.augment = function ( inst, name )
+	// {
+	// 	// Find src object in the structure from the name
+	// 	var parts = name.split('.');
+	
+	// 	_Api.extend( inst, obj );
+	// };
+	
+	
+	//     [
+	//       {
+	//         name:      'data'                -- string   - Property name
+	//         val:       function () {},       -- function - Api method (or undefined if just an object
+	//         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result
+	//         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property
+	//       },
+	//       {
+	//         name:     'row'
+	//         val:       {},
+	//         methodExt: [ ... ],
+	//         propExt:   [
+	//           {
+	//             name:      'data'
+	//             val:       function () {},
+	//             methodExt: [ ... ],
+	//             propExt:   [ ... ]
+	//           },
+	//           ...
+	//         ]
+	//       }
+	//     ]
+	
+	_Api.register = _api_register = function ( name, val )
+	{
+		if ( $.isArray( name ) ) {
+			for ( var j=0, jen=name.length ; j<jen ; j++ ) {
+				_Api.register( name[j], val );
+			}
+			return;
+		}
+	
+		var
+			i, ien,
+			heir = name.split('.'),
+			struct = __apiStruct,
+			key, method;
+	
+		var find = function ( src, name ) {
+			for ( var i=0, ien=src.length ; i<ien ; i++ ) {
+				if ( src[i].name === name ) {
+					return src[i];
+				}
+			}
+			return null;
+		};
+	
+		for ( i=0, ien=heir.length ; i<ien ; i++ ) {
+			method = heir[i].indexOf('()') !== -1;
+			key = method ?
+				heir[i].replace('()', '') :
+				heir[i];
+	
+			var src = find( struct, key );
+			if ( ! src ) {
+				src = {
+					name:      key,
+					val:       {},
+					methodExt: [],
+					propExt:   [],
+					type:      'object'
+				};
+				struct.push( src );
+			}
+	
+			if ( i === ien-1 ) {
+				src.val = val;
+				src.type = typeof val === 'function' ?
+					'function' :
+					$.isPlainObject( val ) ?
+						'object' :
+						'other';
+			}
+			else {
+				struct = method ?
+					src.methodExt :
+					src.propExt;
+			}
+		}
+	};
+	
+	_Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {
+		_Api.register( pluralName, val );
+	
+		_Api.register( singularName, function () {
+			var ret = val.apply( this, arguments );
+	
+			if ( ret === this ) {
+				// Returned item is the API instance that was passed in, return it
+				return this;
+			}
+			else if ( ret instanceof _Api ) {
+				// New API instance returned, want the value from the first item
+				// in the returned array for the singular result.
+				return ret.length ?
+					$.isArray( ret[0] ) ?
+						new _Api( ret.context, ret[0] ) : // Array results are 'enhanced'
+						ret[0] :
+					undefined;
+			}
+	
+			// Non-API return - just fire it back
+			return ret;
+		} );
+	};
+	
+	
+	/**
+	 * Selector for HTML tables. Apply the given selector to the give array of
+	 * DataTables settings objects.
+	 *
+	 * @param {string|integer} [selector] jQuery selector string or integer
+	 * @param  {array} Array of DataTables settings objects to be filtered
+	 * @return {array}
+	 * @ignore
+	 */
+	var __table_selector = function ( selector, a )
+	{
+		// Integer is used to pick out a table by index
+		if ( typeof selector === 'number' ) {
+			return [ a[ selector ] ];
+		}
+	
+		// Perform a jQuery selector on the table nodes
+		var nodes = $.map( a, function (el, i) {
+			return el.nTable;
+		} );
+	
+		return $(nodes)
+			.filter( selector )
+			.map( function (i) {
+				// Need to translate back from the table node to the settings
+				var idx = $.inArray( this, nodes );
+				return a[ idx ];
+			} )
+			.toArray();
+	};
+	
+	
+	
+	/**
+	 * Context selector for the API's context (i.e. the tables the API instance
+	 * refers to.
+	 *
+	 * @name    DataTable.Api#tables
+	 * @param {string|integer} [selector] Selector to pick which tables the iterator
+	 *   should operate on. If not given, all tables in the current context are
+	 *   used. This can be given as a jQuery selector (for example `':gt(0)'`) to
+	 *   select multiple tables or as an integer to select a single table.
+	 * @returns {DataTable.Api} Returns a new API instance if a selector is given.
+	 */
+	_api_register( 'tables()', function ( selector ) {
+		// A new instance is created if there was a selector specified
+		return selector ?
+			new _Api( __table_selector( selector, this.context ) ) :
+			this;
+	} );
+	
+	
+	_api_register( 'table()', function ( selector ) {
+		var tables = this.tables( selector );
+		var ctx = tables.context;
+	
+		// Truncate to the first matched table
+		return ctx.length ?
+			new _Api( ctx[0] ) :
+			tables;
+	} );
+	
+	
+	_api_registerPlural( 'tables().nodes()', 'table().node()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTable;
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'tables().body()', 'table().body()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTBody;
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'tables().header()', 'table().header()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTHead;
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'tables().footer()', 'table().footer()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTFoot;
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'tables().containers()', 'table().container()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTableWrapper;
+		}, 1 );
+	} );
+	
+	
+	
+	/**
+	 * Redraw the tables in the current context.
+	 */
+	_api_register( 'draw()', function ( paging ) {
+		return this.iterator( 'table', function ( settings ) {
+			if ( paging === 'page' ) {
+				_fnDraw( settings );
+			}
+			else {
+				if ( typeof paging === 'string' ) {
+					paging = paging === 'full-hold' ?
+						false :
+						true;
+				}
+	
+				_fnReDraw( settings, paging===false );
+			}
+		} );
+	} );
+	
+	
+	
+	/**
+	 * Get the current page index.
+	 *
+	 * @return {integer} Current page index (zero based)
+	 *//**
+	 * Set the current page.
+	 *
+	 * Note that if you attempt to show a page which does not exist, DataTables will
+	 * not throw an error, but rather reset the paging.
+	 *
+	 * @param {integer|string} action The paging action to take. This can be one of:
+	 *  * `integer` - The page index to jump to
+	 *  * `string` - An action to take:
+	 *    * `first` - Jump to first page.
+	 *    * `next` - Jump to the next page
+	 *    * `previous` - Jump to previous page
+	 *    * `last` - Jump to the last page.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'page()', function ( action ) {
+		if ( action === undefined ) {
+			return this.page.info().page; // not an expensive call
+		}
+	
+		// else, have an action to take on all tables
+		return this.iterator( 'table', function ( settings ) {
+			_fnPageChange( settings, action );
+		} );
+	} );
+	
+	
+	/**
+	 * Paging information for the first table in the current context.
+	 *
+	 * If you require paging information for another table, use the `table()` method
+	 * with a suitable selector.
+	 *
+	 * @return {object} Object with the following properties set:
+	 *  * `page` - Current page index (zero based - i.e. the first page is `0`)
+	 *  * `pages` - Total number of pages
+	 *  * `start` - Display index for the first record shown on the current page
+	 *  * `end` - Display index for the last record shown on the current page
+	 *  * `length` - Display length (number of records). Note that generally `start
+	 *    + length = end`, but this is not always true, for example if there are
+	 *    only 2 records to show on the final page, with a length of 10.
+	 *  * `recordsTotal` - Full data set length
+	 *  * `recordsDisplay` - Data set length once the current filtering criterion
+	 *    are applied.
+	 */
+	_api_register( 'page.info()', function ( action ) {
+		if ( this.context.length === 0 ) {
+			return undefined;
+		}
+	
+		var
+			settings   = this.context[0],
+			start      = settings._iDisplayStart,
+			len        = settings.oFeatures.bPaginate ? settings._iDisplayLength : -1,
+			visRecords = settings.fnRecordsDisplay(),
+			all        = len === -1;
+	
+		return {
+			"page":           all ? 0 : Math.floor( start / len ),
+			"pages":          all ? 1 : Math.ceil( visRecords / len ),
+			"start":          start,
+			"end":            settings.fnDisplayEnd(),
+			"length":         len,
+			"recordsTotal":   settings.fnRecordsTotal(),
+			"recordsDisplay": visRecords,
+			"serverSide":     _fnDataSource( settings ) === 'ssp'
+		};
+	} );
+	
+	
+	/**
+	 * Get the current page length.
+	 *
+	 * @return {integer} Current page length. Note `-1` indicates that all records
+	 *   are to be shown.
+	 *//**
+	 * Set the current page length.
+	 *
+	 * @param {integer} Page length to set. Use `-1` to show all records.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'page.len()', function ( len ) {
+		// Note that we can't call this function 'length()' because `length`
+		// is a Javascript property of functions which defines how many arguments
+		// the function expects.
+		if ( len === undefined ) {
+			return this.context.length !== 0 ?
+				this.context[0]._iDisplayLength :
+				undefined;
+		}
+	
+		// else, set the page length
+		return this.iterator( 'table', function ( settings ) {
+			_fnLengthChange( settings, len );
+		} );
+	} );
+	
+	
+	
+	var __reload = function ( settings, holdPosition, callback ) {
+		// Use the draw event to trigger a callback
+		if ( callback ) {
+			var api = new _Api( settings );
+	
+			api.one( 'draw', function () {
+				callback( api.ajax.json() );
+			} );
+		}
+	
+		if ( _fnDataSource( settings ) == 'ssp' ) {
+			_fnReDraw( settings, holdPosition );
+		}
+		else {
+			_fnProcessingDisplay( settings, true );
+	
+			// Cancel an existing request
+			var xhr = settings.jqXHR;
+			if ( xhr && xhr.readyState !== 4 ) {
+				xhr.abort();
+			}
+	
+			// Trigger xhr
+			_fnBuildAjax( settings, [], function( json ) {
+				_fnClearTable( settings );
+	
+				var data = _fnAjaxDataSrc( settings, json );
+				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+					_fnAddData( settings, data[i] );
+				}
+	
+				_fnReDraw( settings, holdPosition );
+				_fnProcessingDisplay( settings, false );
+			} );
+		}
+	};
+	
+	
+	/**
+	 * Get the JSON response from the last Ajax request that DataTables made to the
+	 * server. Note that this returns the JSON from the first table in the current
+	 * context.
+	 *
+	 * @return {object} JSON received from the server.
+	 */
+	_api_register( 'ajax.json()', function () {
+		var ctx = this.context;
+	
+		if ( ctx.length > 0 ) {
+			return ctx[0].json;
+		}
+	
+		// else return undefined;
+	} );
+	
+	
+	/**
+	 * Get the data submitted in the last Ajax request
+	 */
+	_api_register( 'ajax.params()', function () {
+		var ctx = this.context;
+	
+		if ( ctx.length > 0 ) {
+			return ctx[0].oAjaxData;
+		}
+	
+		// else return undefined;
+	} );
+	
+	
+	/**
+	 * Reload tables from the Ajax data source. Note that this function will
+	 * automatically re-draw the table when the remote data has been loaded.
+	 *
+	 * @param {boolean} [reset=true] Reset (default) or hold the current paging
+	 *   position. A full re-sort and re-filter is performed when this method is
+	 *   called, which is why the pagination reset is the default action.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'ajax.reload()', function ( callback, resetPaging ) {
+		return this.iterator( 'table', function (settings) {
+			__reload( settings, resetPaging===false, callback );
+		} );
+	} );
+	
+	
+	/**
+	 * Get the current Ajax URL. Note that this returns the URL from the first
+	 * table in the current context.
+	 *
+	 * @return {string} Current Ajax source URL
+	 *//**
+	 * Set the Ajax URL. Note that this will set the URL for all tables in the
+	 * current context.
+	 *
+	 * @param {string} url URL to set.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'ajax.url()', function ( url ) {
+		var ctx = this.context;
+	
+		if ( url === undefined ) {
+			// get
+			if ( ctx.length === 0 ) {
+				return undefined;
+			}
+			ctx = ctx[0];
+	
+			return ctx.ajax ?
+				$.isPlainObject( ctx.ajax ) ?
+					ctx.ajax.url :
+					ctx.ajax :
+				ctx.sAjaxSource;
+		}
+	
+		// set
+		return this.iterator( 'table', function ( settings ) {
+			if ( $.isPlainObject( settings.ajax ) ) {
+				settings.ajax.url = url;
+			}
+			else {
+				settings.ajax = url;
+			}
+			// No need to consider sAjaxSource here since DataTables gives priority
+			// to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any
+			// value of `sAjaxSource` redundant.
+		} );
+	} );
+	
+	
+	/**
+	 * Load data from the newly set Ajax URL. Note that this method is only
+	 * available when `ajax.url()` is used to set a URL. Additionally, this method
+	 * has the same effect as calling `ajax.reload()` but is provided for
+	 * convenience when setting a new URL. Like `ajax.reload()` it will
+	 * automatically redraw the table once the remote data has been loaded.
+	 *
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {
+		// Same as a reload, but makes sense to present it for easy access after a
+		// url change
+		return this.iterator( 'table', function ( ctx ) {
+			__reload( ctx, resetPaging===false, callback );
+		} );
+	} );
+	
+	
+	
+	
+	var _selector_run = function ( type, selector, selectFn, settings, opts )
+	{
+		var
+			out = [], res,
+			a, i, ien, j, jen,
+			selectorType = typeof selector;
+	
+		// Can't just check for isArray here, as an API or jQuery instance might be
+		// given with their array like look
+		if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {
+			selector = [ selector ];
+		}
+	
+		for ( i=0, ien=selector.length ; i<ien ; i++ ) {
+			// Only split on simple strings - complex expressions will be jQuery selectors
+			a = selector[i] && selector[i].split && ! selector[i].match(/[\[\(:]/) ?
+				selector[i].split(',') :
+				[ selector[i] ];
+	
+			for ( j=0, jen=a.length ; j<jen ; j++ ) {
+				res = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] );
+	
+				if ( res && res.length ) {
+					out = out.concat( res );
+				}
+			}
+		}
+	
+		// selector extensions
+		var ext = _ext.selector[ type ];
+		if ( ext.length ) {
+			for ( i=0, ien=ext.length ; i<ien ; i++ ) {
+				out = ext[i]( settings, opts, out );
+			}
+		}
+	
+		return _unique( out );
+	};
+	
+	
+	var _selector_opts = function ( opts )
+	{
+		if ( ! opts ) {
+			opts = {};
+		}
+	
+		// Backwards compatibility for 1.9- which used the terminology filter rather
+		// than search
+		if ( opts.filter && opts.search === undefined ) {
+			opts.search = opts.filter;
+		}
+	
+		return $.extend( {
+			search: 'none',
+			order: 'current',
+			page: 'all'
+		}, opts );
+	};
+	
+	
+	var _selector_first = function ( inst )
+	{
+		// Reduce the API instance to the first item found
+		for ( var i=0, ien=inst.length ; i<ien ; i++ ) {
+			if ( inst[i].length > 0 ) {
+				// Assign the first element to the first item in the instance
+				// and truncate the instance and context
+				inst[0] = inst[i];
+				inst[0].length = 1;
+				inst.length = 1;
+				inst.context = [ inst.context[i] ];
+	
+				return inst;
+			}
+		}
+	
+		// Not found - return an empty instance
+		inst.length = 0;
+		return inst;
+	};
+	
+	
+	var _selector_row_indexes = function ( settings, opts )
+	{
+		var
+			i, ien, tmp, a=[],
+			displayFiltered = settings.aiDisplay,
+			displayMaster = settings.aiDisplayMaster;
+	
+		var
+			search = opts.search,  // none, applied, removed
+			order  = opts.order,   // applied, current, index (original - compatibility with 1.9)
+			page   = opts.page;    // all, current
+	
+		if ( _fnDataSource( settings ) == 'ssp' ) {
+			// In server-side processing mode, most options are irrelevant since
+			// rows not shown don't exist and the index order is the applied order
+			// Removed is a special case - for consistency just return an empty
+			// array
+			return search === 'removed' ?
+				[] :
+				_range( 0, displayMaster.length );
+		}
+		else if ( page == 'current' ) {
+			// Current page implies that order=current and fitler=applied, since it is
+			// fairly senseless otherwise, regardless of what order and search actually
+			// are
+			for ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) {
+				a.push( displayFiltered[i] );
+			}
+		}
+		else if ( order == 'current' || order == 'applied' ) {
+			if ( search == 'none') {
+				a = displayMaster.slice();
+			}
+			else if ( search == 'applied' ) {
+				a = displayFiltered.slice();
+			}
+			else if ( search == 'removed' ) {
+				// O(n+m) solution by creating a hash map
+				var displayFilteredMap = {};
+	
+				for ( var i=0, ien=displayFiltered.length ; i<ien ; i++ ) {
+					displayFilteredMap[displayFiltered[i]] = null;
+				}
+	
+				a = $.map( displayMaster, function (el) {
+					return ! displayFilteredMap.hasOwnProperty(el) ?
+						el :
+						null;
+				} );
+			}
+		}
+		else if ( order == 'index' || order == 'original' ) {
+			for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+				if ( search == 'none' ) {
+					a.push( i );
+				}
+				else { // applied | removed
+					tmp = $.inArray( i, displayFiltered );
+	
+					if ((tmp === -1 && search == 'removed') ||
+						(tmp >= 0   && search == 'applied') )
+					{
+						a.push( i );
+					}
+				}
+			}
+		}
+	
+		return a;
+	};
+	
+	
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Rows
+	 *
+	 * {}          - no selector - use all available rows
+	 * {integer}   - row aoData index
+	 * {node}      - TR node
+	 * {string}    - jQuery selector to apply to the TR elements
+	 * {array}     - jQuery array of nodes, or simply an array of TR nodes
+	 *
+	 */
+	var __row_selector = function ( settings, selector, opts )
+	{
+		var rows;
+		var run = function ( sel ) {
+			var selInt = _intVal( sel );
+			var i, ien;
+			var aoData = settings.aoData;
+	
+			// Short cut - selector is a number and no options provided (default is
+			// all records, so no need to check if the index is in there, since it
+			// must be - dev error if the index doesn't exist).
+			if ( selInt !== null && ! opts ) {
+				return [ selInt ];
+			}
+	
+			if ( ! rows ) {
+				rows = _selector_row_indexes( settings, opts );
+			}
+	
+			if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {
+				// Selector - integer
+				return [ selInt ];
+			}
+			else if ( sel === null || sel === undefined || sel === '' ) {
+				// Selector - none
+				return rows;
+			}
+	
+			// Selector - function
+			if ( typeof sel === 'function' ) {
+				return $.map( rows, function (idx) {
+					var row = aoData[ idx ];
+					return sel( idx, row._aData, row.nTr ) ? idx : null;
+				} );
+			}
+	
+			// Selector - node
+			if ( sel.nodeName ) {
+				var rowIdx = sel._DT_RowIndex;  // Property added by DT for fast lookup
+				var cellIdx = sel._DT_CellIndex;
+	
+				if ( rowIdx !== undefined ) {
+					// Make sure that the row is actually still present in the table
+					return aoData[ rowIdx ] && aoData[ rowIdx ].nTr === sel ?
+						[ rowIdx ] :
+						[];
+				}
+				else if ( cellIdx ) {
+					return aoData[ cellIdx.row ] && aoData[ cellIdx.row ].nTr === sel.parentNode ?
+						[ cellIdx.row ] :
+						[];
+				}
+				else {
+					var host = $(sel).closest('*[data-dt-row]');
+					return host.length ?
+						[ host.data('dt-row') ] :
+						[];
+				}
+			}
+	
+			// ID selector. Want to always be able to select rows by id, regardless
+			// of if the tr element has been created or not, so can't rely upon
+			// jQuery here - hence a custom implementation. This does not match
+			// Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything,
+			// but to select it using a CSS selector engine (like Sizzle or
+			// querySelect) it would need to need to be escaped for some characters.
+			// DataTables simplifies this for row selectors since you can select
+			// only a row. A # indicates an id any anything that follows is the id -
+			// unescaped.
+			if ( typeof sel === 'string' && sel.charAt(0) === '#' ) {
+				// get row index from id
+				var rowObj = settings.aIds[ sel.replace( /^#/, '' ) ];
+				if ( rowObj !== undefined ) {
+					return [ rowObj.idx ];
+				}
+	
+				// need to fall through to jQuery in case there is DOM id that
+				// matches
+			}
+			
+			// Get nodes in the order from the `rows` array with null values removed
+			var nodes = _removeEmpty(
+				_pluck_order( settings.aoData, rows, 'nTr' )
+			);
+	
+			// Selector - jQuery selector string, array of nodes or jQuery object/
+			// As jQuery's .filter() allows jQuery objects to be passed in filter,
+			// it also allows arrays, so this will cope with all three options
+			return $(nodes)
+				.filter( sel )
+				.map( function () {
+					return this._DT_RowIndex;
+				} )
+				.toArray();
+		};
+	
+		return _selector_run( 'row', selector, run, settings, opts );
+	};
+	
+	
+	_api_register( 'rows()', function ( selector, opts ) {
+		// argument shifting
+		if ( selector === undefined ) {
+			selector = '';
+		}
+		else if ( $.isPlainObject( selector ) ) {
+			opts = selector;
+			selector = '';
+		}
+	
+		opts = _selector_opts( opts );
+	
+		var inst = this.iterator( 'table', function ( settings ) {
+			return __row_selector( settings, selector, opts );
+		}, 1 );
+	
+		// Want argument shifting here and in __row_selector?
+		inst.selector.rows = selector;
+		inst.selector.opts = opts;
+	
+		return inst;
+	} );
+	
+	_api_register( 'rows().nodes()', function () {
+		return this.iterator( 'row', function ( settings, row ) {
+			return settings.aoData[ row ].nTr || undefined;
+		}, 1 );
+	} );
+	
+	_api_register( 'rows().data()', function () {
+		return this.iterator( true, 'rows', function ( settings, rows ) {
+			return _pluck_order( settings.aoData, rows, '_aData' );
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {
+		return this.iterator( 'row', function ( settings, row ) {
+			var r = settings.aoData[ row ];
+			return type === 'search' ? r._aFilterData : r._aSortData;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {
+		return this.iterator( 'row', function ( settings, row ) {
+			_fnInvalidate( settings, row, src );
+		} );
+	} );
+	
+	_api_registerPlural( 'rows().indexes()', 'row().index()', function () {
+		return this.iterator( 'row', function ( settings, row ) {
+			return row;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {
+		var a = [];
+		var context = this.context;
+	
+		// `iterator` will drop undefined values, but in this case we want them
+		for ( var i=0, ien=context.length ; i<ien ; i++ ) {
+			for ( var j=0, jen=this[i].length ; j<jen ; j++ ) {
+				var id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData );
+				a.push( (hash === true ? '#' : '' )+ id );
+			}
+		}
+	
+		return new _Api( context, a );
+	} );
+	
+	_api_registerPlural( 'rows().remove()', 'row().remove()', function () {
+		var that = this;
+	
+		this.iterator( 'row', function ( settings, row, thatIdx ) {
+			var data = settings.aoData;
+			var rowData = data[ row ];
+			var i, ien, j, jen;
+			var loopRow, loopCells;
+	
+			data.splice( row, 1 );
+	
+			// Update the cached indexes
+			for ( i=0, ien=data.length ; i<ien ; i++ ) {
+				loopRow = data[i];
+				loopCells = loopRow.anCells;
+	
+				// Rows
+				if ( loopRow.nTr !== null ) {
+					loopRow.nTr._DT_RowIndex = i;
+				}
+	
+				// Cells
+				if ( loopCells !== null ) {
+					for ( j=0, jen=loopCells.length ; j<jen ; j++ ) {
+						loopCells[j]._DT_CellIndex.row = i;
+					}
+				}
+			}
+	
+			// Delete from the display arrays
+			_fnDeleteIndex( settings.aiDisplayMaster, row );
+			_fnDeleteIndex( settings.aiDisplay, row );
+			_fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes
+	
+			// For server-side processing tables - subtract the deleted row from the count
+			if ( settings._iRecordsDisplay > 0 ) {
+				settings._iRecordsDisplay--;
+			}
+	
+			// Check for an 'overflow' they case for displaying the table
+			_fnLengthOverflow( settings );
+	
+			// Remove the row's ID reference if there is one
+			var id = settings.rowIdFn( rowData._aData );
+			if ( id !== undefined ) {
+				delete settings.aIds[ id ];
+			}
+		} );
+	
+		this.iterator( 'table', function ( settings ) {
+			for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+				settings.aoData[i].idx = i;
+			}
+		} );
+	
+		return this;
+	} );
+	
+	
+	_api_register( 'rows.add()', function ( rows ) {
+		var newRows = this.iterator( 'table', function ( settings ) {
+				var row, i, ien;
+				var out = [];
+	
+				for ( i=0, ien=rows.length ; i<ien ; i++ ) {
+					row = rows[i];
+	
+					if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
+						out.push( _fnAddTr( settings, row )[0] );
+					}
+					else {
+						out.push( _fnAddData( settings, row ) );
+					}
+				}
+	
+				return out;
+			}, 1 );
+	
+		// Return an Api.rows() extended instance, so rows().nodes() etc can be used
+		var modRows = this.rows( -1 );
+		modRows.pop();
+		$.merge( modRows, newRows );
+	
+		return modRows;
+	} );
+	
+	
+	
+	
+	
+	/**
+	 *
+	 */
+	_api_register( 'row()', function ( selector, opts ) {
+		return _selector_first( this.rows( selector, opts ) );
+	} );
+	
+	
+	_api_register( 'row().data()', function ( data ) {
+		var ctx = this.context;
+	
+		if ( data === undefined ) {
+			// Get
+			return ctx.length && this.length ?
+				ctx[0].aoData[ this[0] ]._aData :
+				undefined;
+		}
+	
+		// Set
+		var row = ctx[0].aoData[ this[0] ];
+		row._aData = data;
+	
+		// If the DOM has an id, and the data source is an array
+		if ( $.isArray( data ) && row.nTr.id ) {
+			_fnSetObjectDataFn( ctx[0].rowId )( data, row.nTr.id );
+		}
+	
+		// Automatically invalidate
+		_fnInvalidate( ctx[0], this[0], 'data' );
+	
+		return this;
+	} );
+	
+	
+	_api_register( 'row().node()', function () {
+		var ctx = this.context;
+	
+		return ctx.length && this.length ?
+			ctx[0].aoData[ this[0] ].nTr || null :
+			null;
+	} );
+	
+	
+	_api_register( 'row.add()', function ( row ) {
+		// Allow a jQuery object to be passed in - only a single row is added from
+		// it though - the first element in the set
+		if ( row instanceof $ && row.length ) {
+			row = row[0];
+		}
+	
+		var rows = this.iterator( 'table', function ( settings ) {
+			if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
+				return _fnAddTr( settings, row )[0];
+			}
+			return _fnAddData( settings, row );
+		} );
+	
+		// Return an Api.rows() extended instance, with the newly added row selected
+		return this.row( rows[0] );
+	} );
+	
+	
+	
+	var __details_add = function ( ctx, row, data, klass )
+	{
+		// Convert to array of TR elements
+		var rows = [];
+		var addRow = function ( r, k ) {
+			// Recursion to allow for arrays of jQuery objects
+			if ( $.isArray( r ) || r instanceof $ ) {
+				for ( var i=0, ien=r.length ; i<ien ; i++ ) {
+					addRow( r[i], k );
+				}
+				return;
+			}
+	
+			// If we get a TR element, then just add it directly - up to the dev
+			// to add the correct number of columns etc
+			if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {
+				rows.push( r );
+			}
+			else {
+				// Otherwise create a row with a wrapper
+				var created = $('<tr><td/></tr>').addClass( k );
+				$('td', created)
+					.addClass( k )
+					.html( r )
+					[0].colSpan = _fnVisbleColumns( ctx );
+	
+				rows.push( created[0] );
+			}
+		};
+	
+		addRow( data, klass );
+	
+		if ( row._details ) {
+			row._details.detach();
+		}
+	
+		row._details = $(rows);
+	
+		// If the children were already shown, that state should be retained
+		if ( row._detailsShow ) {
+			row._details.insertAfter( row.nTr );
+		}
+	};
+	
+	
+	var __details_remove = function ( api, idx )
+	{
+		var ctx = api.context;
+	
+		if ( ctx.length ) {
+			var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];
+	
+			if ( row && row._details ) {
+				row._details.remove();
+	
+				row._detailsShow = undefined;
+				row._details = undefined;
+			}
+		}
+	};
+	
+	
+	var __details_display = function ( api, show ) {
+		var ctx = api.context;
+	
+		if ( ctx.length && api.length ) {
+			var row = ctx[0].aoData[ api[0] ];
+	
+			if ( row._details ) {
+				row._detailsShow = show;
+	
+				if ( show ) {
+					row._details.insertAfter( row.nTr );
+				}
+				else {
+					row._details.detach();
+				}
+	
+				__details_events( ctx[0] );
+			}
+		}
+	};
+	
+	
+	var __details_events = function ( settings )
+	{
+		var api = new _Api( settings );
+		var namespace = '.dt.DT_details';
+		var drawEvent = 'draw'+namespace;
+		var colvisEvent = 'column-visibility'+namespace;
+		var destroyEvent = 'destroy'+namespace;
+		var data = settings.aoData;
+	
+		api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );
+	
+		if ( _pluck( data, '_details' ).length > 0 ) {
+			// On each draw, insert the required elements into the document
+			api.on( drawEvent, function ( e, ctx ) {
+				if ( settings !== ctx ) {
+					return;
+				}
+	
+				api.rows( {page:'current'} ).eq(0).each( function (idx) {
+					// Internal data grab
+					var row = data[ idx ];
+	
+					if ( row._detailsShow ) {
+						row._details.insertAfter( row.nTr );
+					}
+				} );
+			} );
+	
+			// Column visibility change - update the colspan
+			api.on( colvisEvent, function ( e, ctx, idx, vis ) {
+				if ( settings !== ctx ) {
+					return;
+				}
+	
+				// Update the colspan for the details rows (note, only if it already has
+				// a colspan)
+				var row, visible = _fnVisbleColumns( ctx );
+	
+				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+					row = data[i];
+	
+					if ( row._details ) {
+						row._details.children('td[colspan]').attr('colspan', visible );
+					}
+				}
+			} );
+	
+			// Table destroyed - nuke any child rows
+			api.on( destroyEvent, function ( e, ctx ) {
+				if ( settings !== ctx ) {
+					return;
+				}
+	
+				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+					if ( data[i]._details ) {
+						__details_remove( api, i );
+					}
+				}
+			} );
+		}
+	};
+	
+	// Strings for the method names to help minification
+	var _emp = '';
+	var _child_obj = _emp+'row().child';
+	var _child_mth = _child_obj+'()';
+	
+	// data can be:
+	//  tr
+	//  string
+	//  jQuery or array of any of the above
+	_api_register( _child_mth, function ( data, klass ) {
+		var ctx = this.context;
+	
+		if ( data === undefined ) {
+			// get
+			return ctx.length && this.length ?
+				ctx[0].aoData[ this[0] ]._details :
+				undefined;
+		}
+		else if ( data === true ) {
+			// show
+			this.child.show();
+		}
+		else if ( data === false ) {
+			// remove
+			__details_remove( this );
+		}
+		else if ( ctx.length && this.length ) {
+			// set
+			__details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );
+		}
+	
+		return this;
+	} );
+	
+	
+	_api_register( [
+		_child_obj+'.show()',
+		_child_mth+'.show()' // only when `child()` was called with parameters (without
+	], function ( show ) {   // it returns an object and this method is not executed)
+		__details_display( this, true );
+		return this;
+	} );
+	
+	
+	_api_register( [
+		_child_obj+'.hide()',
+		_child_mth+'.hide()' // only when `child()` was called with parameters (without
+	], function () {         // it returns an object and this method is not executed)
+		__details_display( this, false );
+		return this;
+	} );
+	
+	
+	_api_register( [
+		_child_obj+'.remove()',
+		_child_mth+'.remove()' // only when `child()` was called with parameters (without
+	], function () {           // it returns an object and this method is not executed)
+		__details_remove( this );
+		return this;
+	} );
+	
+	
+	_api_register( _child_obj+'.isShown()', function () {
+		var ctx = this.context;
+	
+		if ( ctx.length && this.length ) {
+			// _detailsShown as false or undefined will fall through to return false
+			return ctx[0].aoData[ this[0] ]._detailsShow || false;
+		}
+		return false;
+	} );
+	
+	
+	
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Columns
+	 *
+	 * {integer}           - column index (>=0 count from left, <0 count from right)
+	 * "{integer}:visIdx"  - visible column index (i.e. translate to column index)  (>=0 count from left, <0 count from right)
+	 * "{integer}:visible" - alias for {integer}:visIdx  (>=0 count from left, <0 count from right)
+	 * "{string}:name"     - column name
+	 * "{string}"          - jQuery selector on column header nodes
+	 *
+	 */
+	
+	// can be an array of these items, comma separated list, or an array of comma
+	// separated lists
+	
+	var __re_column_selector = /^([^:]+):(name|visIdx|visible)$/;
+	
+	
+	// r1 and r2 are redundant - but it means that the parameters match for the
+	// iterator callback in columns().data()
+	var __columnData = function ( settings, column, r1, r2, rows ) {
+		var a = [];
+		for ( var row=0, ien=rows.length ; row<ien ; row++ ) {
+			a.push( _fnGetCellData( settings, rows[row], column ) );
+		}
+		return a;
+	};
+	
+	
+	var __column_selector = function ( settings, selector, opts )
+	{
+		var
+			columns = settings.aoColumns,
+			names = _pluck( columns, 'sName' ),
+			nodes = _pluck( columns, 'nTh' );
+	
+		var run = function ( s ) {
+			var selInt = _intVal( s );
+	
+			// Selector - all
+			if ( s === '' ) {
+				return _range( columns.length );
+			}
+	
+			// Selector - index
+			if ( selInt !== null ) {
+				return [ selInt >= 0 ?
+					selInt : // Count from left
+					columns.length + selInt // Count from right (+ because its a negative value)
+				];
+			}
+	
+			// Selector = function
+			if ( typeof s === 'function' ) {
+				var rows = _selector_row_indexes( settings, opts );
+	
+				return $.map( columns, function (col, idx) {
+					return s(
+							idx,
+							__columnData( settings, idx, 0, 0, rows ),
+							nodes[ idx ]
+						) ? idx : null;
+				} );
+			}
+	
+			// jQuery or string selector
+			var match = typeof s === 'string' ?
+				s.match( __re_column_selector ) :
+				'';
+	
+			if ( match ) {
+				switch( match[2] ) {
+					case 'visIdx':
+					case 'visible':
+						var idx = parseInt( match[1], 10 );
+						// Visible index given, convert to column index
+						if ( idx < 0 ) {
+							// Counting from the right
+							var visColumns = $.map( columns, function (col,i) {
+								return col.bVisible ? i : null;
+							} );
+							return [ visColumns[ visColumns.length + idx ] ];
+						}
+						// Counting from the left
+						return [ _fnVisibleToColumnIndex( settings, idx ) ];
+	
+					case 'name':
+						// match by name. `names` is column index complete and in order
+						return $.map( names, function (name, i) {
+							return name === match[1] ? i : null;
+						} );
+	
+					default:
+						return [];
+				}
+			}
+	
+			// Cell in the table body
+			if ( s.nodeName && s._DT_CellIndex ) {
+				return [ s._DT_CellIndex.column ];
+			}
+	
+			// jQuery selector on the TH elements for the columns
+			var jqResult = $( nodes )
+				.filter( s )
+				.map( function () {
+					return $.inArray( this, nodes ); // `nodes` is column index complete and in order
+				} )
+				.toArray();
+	
+			if ( jqResult.length || ! s.nodeName ) {
+				return jqResult;
+			}
+	
+			// Otherwise a node which might have a `dt-column` data attribute, or be
+			// a child or such an element
+			var host = $(s).closest('*[data-dt-column]');
+			return host.length ?
+				[ host.data('dt-column') ] :
+				[];
+		};
+	
+		return _selector_run( 'column', selector, run, settings, opts );
+	};
+	
+	
+	var __setColumnVis = function ( settings, column, vis ) {
+		var
+			cols = settings.aoColumns,
+			col  = cols[ column ],
+			data = settings.aoData,
+			row, cells, i, ien, tr;
+	
+		// Get
+		if ( vis === undefined ) {
+			return col.bVisible;
+		}
+	
+		// Set
+		// No change
+		if ( col.bVisible === vis ) {
+			return;
+		}
+	
+		if ( vis ) {
+			// Insert column
+			// Need to decide if we should use appendChild or insertBefore
+			var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );
+	
+			for ( i=0, ien=data.length ; i<ien ; i++ ) {
+				tr = data[i].nTr;
+				cells = data[i].anCells;
+	
+				if ( tr ) {
+					// insertBefore can act like appendChild if 2nd arg is null
+					tr.insertBefore( cells[ column ], cells[ insertBefore ] || null );
+				}
+			}
+		}
+		else {
+			// Remove column
+			$( _pluck( settings.aoData, 'anCells', column ) ).detach();
+		}
+	
+		// Common actions
+		col.bVisible = vis;
+	};
+	
+	
+	_api_register( 'columns()', function ( selector, opts ) {
+		// argument shifting
+		if ( selector === undefined ) {
+			selector = '';
+		}
+		else if ( $.isPlainObject( selector ) ) {
+			opts = selector;
+			selector = '';
+		}
+	
+		opts = _selector_opts( opts );
+	
+		var inst = this.iterator( 'table', function ( settings ) {
+			return __column_selector( settings, selector, opts );
+		}, 1 );
+	
+		// Want argument shifting here and in _row_selector?
+		inst.selector.cols = selector;
+		inst.selector.opts = opts;
+	
+		return inst;
+	} );
+	
+	_api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) {
+		return this.iterator( 'column', function ( settings, column ) {
+			return settings.aoColumns[column].nTh;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) {
+		return this.iterator( 'column', function ( settings, column ) {
+			return settings.aoColumns[column].nTf;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().data()', 'column().data()', function () {
+		return this.iterator( 'column-rows', __columnData, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () {
+		return this.iterator( 'column', function ( settings, column ) {
+			return settings.aoColumns[column].mData;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {
+		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
+			return _pluck_order( settings.aoData, rows,
+				type === 'search' ? '_aFilterData' : '_aSortData', column
+			);
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {
+		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
+			return _pluck_order( settings.aoData, rows, 'anCells', column ) ;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) {
+		var that = this;
+		var ret = this.iterator( 'column', function ( settings, column ) {
+			if ( vis === undefined ) {
+				return settings.aoColumns[ column ].bVisible;
+			} // else
+			__setColumnVis( settings, column, vis );
+		} );
+	
+		// Group the column visibility changes
+		if ( vis !== undefined ) {
+			this.iterator( 'table', function ( settings ) {
+				// Redraw the header after changes
+				_fnDrawHead( settings, settings.aoHeader );
+				_fnDrawHead( settings, settings.aoFooter );
+		
+				// Update colspan for no records display. Child rows and extensions will use their own
+				// listeners to do this - only need to update the empty table item here
+				if ( ! settings.aiDisplay.length ) {
+					$(settings.nTBody).find('td[colspan]').attr('colspan', _fnVisbleColumns(settings));
+				}
+		
+				_fnSaveState( settings );
+	
+				// Second loop once the first is done for events
+				that.iterator( 'column', function ( settings, column ) {
+					_fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis, calc] );
+				} );
+	
+				if ( calc === undefined || calc ) {
+					that.columns.adjust();
+				}
+			});
+		}
+	
+		return ret;
+	} );
+	
+	_api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {
+		return this.iterator( 'column', function ( settings, column ) {
+			return type === 'visible' ?
+				_fnColumnIndexToVisible( settings, column ) :
+				column;
+		}, 1 );
+	} );
+	
+	_api_register( 'columns.adjust()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			_fnAdjustColumnSizing( settings );
+		}, 1 );
+	} );
+	
+	_api_register( 'column.index()', function ( type, idx ) {
+		if ( this.context.length !== 0 ) {
+			var ctx = this.context[0];
+	
+			if ( type === 'fromVisible' || type === 'toData' ) {
+				return _fnVisibleToColumnIndex( ctx, idx );
+			}
+			else if ( type === 'fromData' || type === 'toVisible' ) {
+				return _fnColumnIndexToVisible( ctx, idx );
+			}
+		}
+	} );
+	
+	_api_register( 'column()', function ( selector, opts ) {
+		return _selector_first( this.columns( selector, opts ) );
+	} );
+	
+	
+	
+	var __cell_selector = function ( settings, selector, opts )
+	{
+		var data = settings.aoData;
+		var rows = _selector_row_indexes( settings, opts );
+		var cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) );
+		var allCells = $( [].concat.apply([], cells) );
+		var row;
+		var columns = settings.aoColumns.length;
+		var a, i, ien, j, o, host;
+	
+		var run = function ( s ) {
+			var fnSelector = typeof s === 'function';
+	
+			if ( s === null || s === undefined || fnSelector ) {
+				// All cells and function selectors
+				a = [];
+	
+				for ( i=0, ien=rows.length ; i<ien ; i++ ) {
+					row = rows[i];
+	
+					for ( j=0 ; j<columns ; j++ ) {
+						o = {
+							row: row,
+							column: j
+						};
+	
+						if ( fnSelector ) {
+							// Selector - function
+							host = data[ row ];
+	
+							if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) {
+								a.push( o );
+							}
+						}
+						else {
+							// Selector - all
+							a.push( o );
+						}
+					}
+				}
+	
+				return a;
+			}
+			
+			// Selector - index
+			if ( $.isPlainObject( s ) ) {
+				// Valid cell index and its in the array of selectable rows
+				return s.column !== undefined && s.row !== undefined && $.inArray( s.row, rows ) !== -1 ?
+					[s] :
+					[];
+			}
+	
+			// Selector - jQuery filtered cells
+			var jqResult = allCells
+				.filter( s )
+				.map( function (i, el) {
+					return { // use a new object, in case someone changes the values
+						row:    el._DT_CellIndex.row,
+						column: el._DT_CellIndex.column
+	 				};
+				} )
+				.toArray();
+	
+			if ( jqResult.length || ! s.nodeName ) {
+				return jqResult;
+			}
+	
+			// Otherwise the selector is a node, and there is one last option - the
+			// element might be a child of an element which has dt-row and dt-column
+			// data attributes
+			host = $(s).closest('*[data-dt-row]');
+			return host.length ?
+				[ {
+					row: host.data('dt-row'),
+					column: host.data('dt-column')
+				} ] :
+				[];
+		};
+	
+		return _selector_run( 'cell', selector, run, settings, opts );
+	};
+	
+	
+	
+	
+	_api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {
+		// Argument shifting
+		if ( $.isPlainObject( rowSelector ) ) {
+			// Indexes
+			if ( rowSelector.row === undefined ) {
+				// Selector options in first parameter
+				opts = rowSelector;
+				rowSelector = null;
+			}
+			else {
+				// Cell index objects in first parameter
+				opts = columnSelector;
+				columnSelector = null;
+			}
+		}
+		if ( $.isPlainObject( columnSelector ) ) {
+			opts = columnSelector;
+			columnSelector = null;
+		}
+	
+		// Cell selector
+		if ( columnSelector === null || columnSelector === undefined ) {
+			return this.iterator( 'table', function ( settings ) {
+				return __cell_selector( settings, rowSelector, _selector_opts( opts ) );
+			} );
+		}
+	
+		// The default built in options need to apply to row and columns
+		var internalOpts = opts ? {
+			page: opts.page,
+			order: opts.order,
+			search: opts.search
+		} : {};
+	
+		// Row + column selector
+		var columns = this.columns( columnSelector, internalOpts );
+		var rows = this.rows( rowSelector, internalOpts );
+		var i, ien, j, jen;
+	
+		var cellsNoOpts = this.iterator( 'table', function ( settings, idx ) {
+			var a = [];
+	
+			for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {
+				for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {
+					a.push( {
+						row:    rows[idx][i],
+						column: columns[idx][j]
+					} );
+				}
+			}
+	
+			return a;
+		}, 1 );
+	
+		// There is currently only one extension which uses a cell selector extension
+		// It is a _major_ performance drag to run this if it isn't needed, so this is
+		// an extension specific check at the moment
+		var cells = opts && opts.selected ?
+			this.cells( cellsNoOpts, opts ) :
+			cellsNoOpts;
+	
+		$.extend( cells.selector, {
+			cols: columnSelector,
+			rows: rowSelector,
+			opts: opts
+		} );
+	
+		return cells;
+	} );
+	
+	
+	_api_registerPlural( 'cells().nodes()', 'cell().node()', function () {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			var data = settings.aoData[ row ];
+	
+			return data && data.anCells ?
+				data.anCells[ column ] :
+				undefined;
+		}, 1 );
+	} );
+	
+	
+	_api_register( 'cells().data()', function () {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return _fnGetCellData( settings, row, column );
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {
+		type = type === 'search' ? '_aFilterData' : '_aSortData';
+	
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return settings.aoData[ row ][ type ][ column ];
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return _fnGetCellData( settings, row, column, type );
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'cells().indexes()', 'cell().index()', function () {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return {
+				row: row,
+				column: column,
+				columnVisible: _fnColumnIndexToVisible( settings, column )
+			};
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			_fnInvalidate( settings, row, src, column );
+		} );
+	} );
+	
+	
+	
+	_api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {
+		return _selector_first( this.cells( rowSelector, columnSelector, opts ) );
+	} );
+	
+	
+	_api_register( 'cell().data()', function ( data ) {
+		var ctx = this.context;
+		var cell = this[0];
+	
+		if ( data === undefined ) {
+			// Get
+			return ctx.length && cell.length ?
+				_fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :
+				undefined;
+		}
+	
+		// Set
+		_fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );
+		_fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column );
+	
+		return this;
+	} );
+	
+	
+	
+	/**
+	 * Get current ordering (sorting) that has been applied to the table.
+	 *
+	 * @returns {array} 2D array containing the sorting information for the first
+	 *   table in the current context. Each element in the parent array represents
+	 *   a column being sorted upon (i.e. multi-sorting with two columns would have
+	 *   2 inner arrays). The inner arrays may have 2 or 3 elements. The first is
+	 *   the column index that the sorting condition applies to, the second is the
+	 *   direction of the sort (`desc` or `asc`) and, optionally, the third is the
+	 *   index of the sorting order from the `column.sorting` initialisation array.
+	 *//**
+	 * Set the ordering for the table.
+	 *
+	 * @param {integer} order Column index to sort upon.
+	 * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)
+	 * @returns {DataTables.Api} this
+	 *//**
+	 * Set the ordering for the table.
+	 *
+	 * @param {array} order 1D array of sorting information to be applied.
+	 * @param {array} [...] Optional additional sorting conditions
+	 * @returns {DataTables.Api} this
+	 *//**
+	 * Set the ordering for the table.
+	 *
+	 * @param {array} order 2D array of sorting information to be applied.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'order()', function ( order, dir ) {
+		var ctx = this.context;
+	
+		if ( order === undefined ) {
+			// get
+			return ctx.length !== 0 ?
+				ctx[0].aaSorting :
+				undefined;
+		}
+	
+		// set
+		if ( typeof order === 'number' ) {
+			// Simple column / direction passed in
+			order = [ [ order, dir ] ];
+		}
+		else if ( order.length && ! $.isArray( order[0] ) ) {
+			// Arguments passed in (list of 1D arrays)
+			order = Array.prototype.slice.call( arguments );
+		}
+		// otherwise a 2D array was passed in
+	
+		return this.iterator( 'table', function ( settings ) {
+			settings.aaSorting = order.slice();
+		} );
+	} );
+	
+	
+	/**
+	 * Attach a sort listener to an element for a given column
+	 *
+	 * @param {node|jQuery|string} node Identifier for the element(s) to attach the
+	 *   listener to. This can take the form of a single DOM node, a jQuery
+	 *   collection of nodes or a jQuery selector which will identify the node(s).
+	 * @param {integer} column the column that a click on this node will sort on
+	 * @param {function} [callback] callback function when sort is run
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'order.listener()', function ( node, column, callback ) {
+		return this.iterator( 'table', function ( settings ) {
+			_fnSortAttachListener( settings, node, column, callback );
+		} );
+	} );
+	
+	
+	_api_register( 'order.fixed()', function ( set ) {
+		if ( ! set ) {
+			var ctx = this.context;
+			var fixed = ctx.length ?
+				ctx[0].aaSortingFixed :
+				undefined;
+	
+			return $.isArray( fixed ) ?
+				{ pre: fixed } :
+				fixed;
+		}
+	
+		return this.iterator( 'table', function ( settings ) {
+			settings.aaSortingFixed = $.extend( true, {}, set );
+		} );
+	} );
+	
+	
+	// Order by the selected column(s)
+	_api_register( [
+		'columns().order()',
+		'column().order()'
+	], function ( dir ) {
+		var that = this;
+	
+		return this.iterator( 'table', function ( settings, i ) {
+			var sort = [];
+	
+			$.each( that[i], function (j, col) {
+				sort.push( [ col, dir ] );
+			} );
+	
+			settings.aaSorting = sort;
+		} );
+	} );
+	
+	
+	
+	_api_register( 'search()', function ( input, regex, smart, caseInsen ) {
+		var ctx = this.context;
+	
+		if ( input === undefined ) {
+			// get
+			return ctx.length !== 0 ?
+				ctx[0].oPreviousSearch.sSearch :
+				undefined;
+		}
+	
+		// set
+		return this.iterator( 'table', function ( settings ) {
+			if ( ! settings.oFeatures.bFilter ) {
+				return;
+			}
+	
+			_fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, {
+				"sSearch": input+"",
+				"bRegex":  regex === null ? false : regex,
+				"bSmart":  smart === null ? true  : smart,
+				"bCaseInsensitive": caseInsen === null ? true : caseInsen
+			} ), 1 );
+		} );
+	} );
+	
+	
+	_api_registerPlural(
+		'columns().search()',
+		'column().search()',
+		function ( input, regex, smart, caseInsen ) {
+			return this.iterator( 'column', function ( settings, column ) {
+				var preSearch = settings.aoPreSearchCols;
+	
+				if ( input === undefined ) {
+					// get
+					return preSearch[ column ].sSearch;
+				}
+	
+				// set
+				if ( ! settings.oFeatures.bFilter ) {
+					return;
+				}
+	
+				$.extend( preSearch[ column ], {
+					"sSearch": input+"",
+					"bRegex":  regex === null ? false : regex,
+					"bSmart":  smart === null ? true  : smart,
+					"bCaseInsensitive": caseInsen === null ? true : caseInsen
+				} );
+	
+				_fnFilterComplete( settings, settings.oPreviousSearch, 1 );
+			} );
+		}
+	);
+	
+	/*
+	 * State API methods
+	 */
+	
+	_api_register( 'state()', function () {
+		return this.context.length ?
+			this.context[0].oSavedState :
+			null;
+	} );
+	
+	
+	_api_register( 'state.clear()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			// Save an empty object
+			settings.fnStateSaveCallback.call( settings.oInstance, settings, {} );
+		} );
+	} );
+	
+	
+	_api_register( 'state.loaded()', function () {
+		return this.context.length ?
+			this.context[0].oLoadedState :
+			null;
+	} );
+	
+	
+	_api_register( 'state.save()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			_fnSaveState( settings );
+		} );
+	} );
+	
+	
+	
+	/**
+	 * Provide a common method for plug-ins to check the version of DataTables being
+	 * used, in order to ensure compatibility.
+	 *
+	 *  @param {string} version Version string to check for, in the format "X.Y.Z".
+	 *    Note that the formats "X" and "X.Y" are also acceptable.
+	 *  @returns {boolean} true if this version of DataTables is greater or equal to
+	 *    the required version, or false if this version of DataTales is not
+	 *    suitable
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    alert( $.fn.dataTable.versionCheck( '1.9.0' ) );
+	 */
+	DataTable.versionCheck = DataTable.fnVersionCheck = function( version )
+	{
+		var aThis = DataTable.version.split('.');
+		var aThat = version.split('.');
+		var iThis, iThat;
+	
+		for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {
+			iThis = parseInt( aThis[i], 10 ) || 0;
+			iThat = parseInt( aThat[i], 10 ) || 0;
+	
+			// Parts are the same, keep comparing
+			if (iThis === iThat) {
+				continue;
+			}
+	
+			// Parts are different, return immediately
+			return iThis > iThat;
+		}
+	
+		return true;
+	};
+	
+	
+	/**
+	 * Check if a `<table>` node is a DataTable table already or not.
+	 *
+	 *  @param {node|jquery|string} table Table node, jQuery object or jQuery
+	 *      selector for the table to test. Note that if more than more than one
+	 *      table is passed on, only the first will be checked
+	 *  @returns {boolean} true the table given is a DataTable, or false otherwise
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {
+	 *      $('#example').dataTable();
+	 *    }
+	 */
+	DataTable.isDataTable = DataTable.fnIsDataTable = function ( table )
+	{
+		var t = $(table).get(0);
+		var is = false;
+	
+		if ( table instanceof DataTable.Api ) {
+			return true;
+		}
+	
+		$.each( DataTable.settings, function (i, o) {
+			var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;
+			var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;
+	
+			if ( o.nTable === t || head === t || foot === t ) {
+				is = true;
+			}
+		} );
+	
+		return is;
+	};
+	
+	
+	/**
+	 * Get all DataTable tables that have been initialised - optionally you can
+	 * select to get only currently visible tables.
+	 *
+	 *  @param {boolean} [visible=false] Flag to indicate if you want all (default)
+	 *    or visible tables only.
+	 *  @returns {array} Array of `table` nodes (not DataTable instances) which are
+	 *    DataTables
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    $.each( $.fn.dataTable.tables(true), function () {
+	 *      $(table).DataTable().columns.adjust();
+	 *    } );
+	 */
+	DataTable.tables = DataTable.fnTables = function ( visible )
+	{
+		var api = false;
+	
+		if ( $.isPlainObject( visible ) ) {
+			api = visible.api;
+			visible = visible.visible;
+		}
+	
+		var a = $.map( DataTable.settings, function (o) {
+			if ( !visible || (visible && $(o.nTable).is(':visible')) ) {
+				return o.nTable;
+			}
+		} );
+	
+		return api ?
+			new _Api( a ) :
+			a;
+	};
+	
+	
+	/**
+	 * Convert from camel case parameters to Hungarian notation. This is made public
+	 * for the extensions to provide the same ability as DataTables core to accept
+	 * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase
+	 * parameters.
+	 *
+	 *  @param {object} src The model object which holds all parameters that can be
+	 *    mapped.
+	 *  @param {object} user The object to convert from camel case to Hungarian.
+	 *  @param {boolean} force When set to `true`, properties which already have a
+	 *    Hungarian value in the `user` object will be overwritten. Otherwise they
+	 *    won't be.
+	 */
+	DataTable.camelToHungarian = _fnCamelToHungarian;
+	
+	
+	
+	/**
+	 *
+	 */
+	_api_register( '$()', function ( selector, opts ) {
+		var
+			rows   = this.rows( opts ).nodes(), // Get all rows
+			jqRows = $(rows);
+	
+		return $( [].concat(
+			jqRows.filter( selector ).toArray(),
+			jqRows.find( selector ).toArray()
+		) );
+	} );
+	
+	
+	// jQuery functions to operate on the tables
+	$.each( [ 'on', 'one', 'off' ], function (i, key) {
+		_api_register( key+'()', function ( /* event, handler */ ) {
+			var args = Array.prototype.slice.call(arguments);
+	
+			// Add the `dt` namespace automatically if it isn't already present
+			args[0] = $.map( args[0].split( /\s/ ), function ( e ) {
+				return ! e.match(/\.dt\b/) ?
+					e+'.dt' :
+					e;
+				} ).join( ' ' );
+	
+			var inst = $( this.tables().nodes() );
+			inst[key].apply( inst, args );
+			return this;
+		} );
+	} );
+	
+	
+	_api_register( 'clear()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			_fnClearTable( settings );
+		} );
+	} );
+	
+	
+	_api_register( 'settings()', function () {
+		return new _Api( this.context, this.context );
+	} );
+	
+	
+	_api_register( 'init()', function () {
+		var ctx = this.context;
+		return ctx.length ? ctx[0].oInit : null;
+	} );
+	
+	
+	_api_register( 'data()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			return _pluck( settings.aoData, '_aData' );
+		} ).flatten();
+	} );
+	
+	
+	_api_register( 'destroy()', function ( remove ) {
+		remove = remove || false;
+	
+		return this.iterator( 'table', function ( settings ) {
+			var orig      = settings.nTableWrapper.parentNode;
+			var classes   = settings.oClasses;
+			var table     = settings.nTable;
+			var tbody     = settings.nTBody;
+			var thead     = settings.nTHead;
+			var tfoot     = settings.nTFoot;
+			var jqTable   = $(table);
+			var jqTbody   = $(tbody);
+			var jqWrapper = $(settings.nTableWrapper);
+			var rows      = $.map( settings.aoData, function (r) { return r.nTr; } );
+			var i, ien;
+	
+			// Flag to note that the table is currently being destroyed - no action
+			// should be taken
+			settings.bDestroying = true;
+	
+			// Fire off the destroy callbacks for plug-ins etc
+			_fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] );
+	
+			// If not being removed from the document, make all columns visible
+			if ( ! remove ) {
+				new _Api( settings ).columns().visible( true );
+			}
+	
+			// Blitz all `DT` namespaced events (these are internal events, the
+			// lowercase, `dt` events are user subscribed and they are responsible
+			// for removing them
+			jqWrapper.off('.DT').find(':not(tbody *)').off('.DT');
+			$(window).off('.DT-'+settings.sInstance);
+	
+			// When scrolling we had to break the table up - restore it
+			if ( table != thead.parentNode ) {
+				jqTable.children('thead').detach();
+				jqTable.append( thead );
+			}
+	
+			if ( tfoot && table != tfoot.parentNode ) {
+				jqTable.children('tfoot').detach();
+				jqTable.append( tfoot );
+			}
+	
+			settings.aaSorting = [];
+			settings.aaSortingFixed = [];
+			_fnSortingClasses( settings );
+	
+			$( rows ).removeClass( settings.asStripeClasses.join(' ') );
+	
+			$('th, td', thead).removeClass( classes.sSortable+' '+
+				classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone
+			);
+	
+			// Add the TR elements back into the table in their original order
+			jqTbody.children().detach();
+			jqTbody.append( rows );
+	
+			// Remove the DataTables generated nodes, events and classes
+			var removedMethod = remove ? 'remove' : 'detach';
+			jqTable[ removedMethod ]();
+			jqWrapper[ removedMethod ]();
+	
+			// If we need to reattach the table to the document
+			if ( ! remove && orig ) {
+				// insertBefore acts like appendChild if !arg[1]
+				orig.insertBefore( table, settings.nTableReinsertBefore );
+	
+				// Restore the width of the original table - was read from the style property,
+				// so we can restore directly to that
+				jqTable
+					.css( 'width', settings.sDestroyWidth )
+					.removeClass( classes.sTable );
+	
+				// If the were originally stripe classes - then we add them back here.
+				// Note this is not fool proof (for example if not all rows had stripe
+				// classes - but it's a good effort without getting carried away
+				ien = settings.asDestroyStripes.length;
+	
+				if ( ien ) {
+					jqTbody.children().each( function (i) {
+						$(this).addClass( settings.asDestroyStripes[i % ien] );
+					} );
+				}
+			}
+	
+			/* Remove the settings object from the settings array */
+			var idx = $.inArray( settings, DataTable.settings );
+			if ( idx !== -1 ) {
+				DataTable.settings.splice( idx, 1 );
+			}
+		} );
+	} );
+	
+	
+	// Add the `every()` method for rows, columns and cells in a compact form
+	$.each( [ 'column', 'row', 'cell' ], function ( i, type ) {
+		_api_register( type+'s().every()', function ( fn ) {
+			var opts = this.selector.opts;
+			var api = this;
+	
+			return this.iterator( type, function ( settings, arg1, arg2, arg3, arg4 ) {
+				// Rows and columns:
+				//  arg1 - index
+				//  arg2 - table counter
+				//  arg3 - loop counter
+				//  arg4 - undefined
+				// Cells:
+				//  arg1 - row index
+				//  arg2 - column index
+				//  arg3 - table counter
+				//  arg4 - loop counter
+				fn.call(
+					api[ type ](
+						arg1,
+						type==='cell' ? arg2 : opts,
+						type==='cell' ? opts : undefined
+					),
+					arg1, arg2, arg3, arg4
+				);
+			} );
+		} );
+	} );
+	
+	
+	// i18n method for extensions to be able to use the language object from the
+	// DataTable
+	_api_register( 'i18n()', function ( token, def, plural ) {
+		var ctx = this.context[0];
+		var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );
+	
+		if ( resolved === undefined ) {
+			resolved = def;
+		}
+	
+		if ( plural !== undefined && $.isPlainObject( resolved ) ) {
+			resolved = resolved[ plural ] !== undefined ?
+				resolved[ plural ] :
+				resolved._;
+		}
+	
+		return resolved.replace( '%d', plural ); // nb: plural might be undefined,
+	} );
+	/**
+	 * Version string for plug-ins to check compatibility. Allowed format is
+	 * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used
+	 * only for non-release builds. See http://semver.org/ for more information.
+	 *  @member
+	 *  @type string
+	 *  @default Version number
+	 */
+	DataTable.version = "1.10.20";
+
+	/**
+	 * Private data store, containing all of the settings objects that are
+	 * created for the tables on a given page.
+	 *
+	 * Note that the `DataTable.settings` object is aliased to
+	 * `jQuery.fn.dataTableExt` through which it may be accessed and
+	 * manipulated, or `jQuery.fn.dataTable.settings`.
+	 *  @member
+	 *  @type array
+	 *  @default []
+	 *  @private
+	 */
+	DataTable.settings = [];
+
+	/**
+	 * Object models container, for the various models that DataTables has
+	 * available to it. These models define the objects that are used to hold
+	 * the active state and configuration of the table.
+	 *  @namespace
+	 */
+	DataTable.models = {};
+	
+	
+	
+	/**
+	 * Template object for the way in which DataTables holds information about
+	 * search information for the global filter and individual column filters.
+	 *  @namespace
+	 */
+	DataTable.models.oSearch = {
+		/**
+		 * Flag to indicate if the filtering should be case insensitive or not
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bCaseInsensitive": true,
+	
+		/**
+		 * Applied search term
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sSearch": "",
+	
+		/**
+		 * Flag to indicate if the search term should be interpreted as a
+		 * regular expression (true) or not (false) and therefore and special
+		 * regex characters escaped.
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bRegex": false,
+	
+		/**
+		 * Flag to indicate if DataTables is to use its smart filtering or not.
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bSmart": true
+	};
+	
+	
+	
+	
+	/**
+	 * Template object for the way in which DataTables holds information about
+	 * each individual row. This is the object format used for the settings
+	 * aoData array.
+	 *  @namespace
+	 */
+	DataTable.models.oRow = {
+		/**
+		 * TR element for the row
+		 *  @type node
+		 *  @default null
+		 */
+		"nTr": null,
+	
+		/**
+		 * Array of TD elements for each row. This is null until the row has been
+		 * created.
+		 *  @type array nodes
+		 *  @default []
+		 */
+		"anCells": null,
+	
+		/**
+		 * Data object from the original data source for the row. This is either
+		 * an array if using the traditional form of DataTables, or an object if
+		 * using mData options. The exact type will depend on the passed in
+		 * data from the data source, or will be an array if using DOM a data
+		 * source.
+		 *  @type array|object
+		 *  @default []
+		 */
+		"_aData": [],
+	
+		/**
+		 * Sorting data cache - this array is ostensibly the same length as the
+		 * number of columns (although each index is generated only as it is
+		 * needed), and holds the data that is used for sorting each column in the
+		 * row. We do this cache generation at the start of the sort in order that
+		 * the formatting of the sort data need be done only once for each cell
+		 * per sort. This array should not be read from or written to by anything
+		 * other than the master sorting methods.
+		 *  @type array
+		 *  @default null
+		 *  @private
+		 */
+		"_aSortData": null,
+	
+		/**
+		 * Per cell filtering data cache. As per the sort data cache, used to
+		 * increase the performance of the filtering in DataTables
+		 *  @type array
+		 *  @default null
+		 *  @private
+		 */
+		"_aFilterData": null,
+	
+		/**
+		 * Filtering data cache. This is the same as the cell filtering cache, but
+		 * in this case a string rather than an array. This is easily computed with
+		 * a join on `_aFilterData`, but is provided as a cache so the join isn't
+		 * needed on every search (memory traded for performance)
+		 *  @type array
+		 *  @default null
+		 *  @private
+		 */
+		"_sFilterRow": null,
+	
+		/**
+		 * Cache of the class name that DataTables has applied to the row, so we
+		 * can quickly look at this variable rather than needing to do a DOM check
+		 * on className for the nTr property.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *  @private
+		 */
+		"_sRowStripe": "",
+	
+		/**
+		 * Denote if the original data source was from the DOM, or the data source
+		 * object. This is used for invalidating data, so DataTables can
+		 * automatically read data from the original source, unless uninstructed
+		 * otherwise.
+		 *  @type string
+		 *  @default null
+		 *  @private
+		 */
+		"src": null,
+	
+		/**
+		 * Index in the aoData array. This saves an indexOf lookup when we have the
+		 * object, but want to know the index
+		 *  @type integer
+		 *  @default -1
+		 *  @private
+		 */
+		"idx": -1
+	};
+	
+	
+	/**
+	 * Template object for the column information object in DataTables. This object
+	 * is held in the settings aoColumns array and contains all the information that
+	 * DataTables needs about each individual column.
+	 *
+	 * Note that this object is related to {@link DataTable.defaults.column}
+	 * but this one is the internal data store for DataTables's cache of columns.
+	 * It should NOT be manipulated outside of DataTables. Any configuration should
+	 * be done through the initialisation options.
+	 *  @namespace
+	 */
+	DataTable.models.oColumn = {
+		/**
+		 * Column index. This could be worked out on-the-fly with $.inArray, but it
+		 * is faster to just hold it as a variable
+		 *  @type integer
+		 *  @default null
+		 */
+		"idx": null,
+	
+		/**
+		 * A list of the columns that sorting should occur on when this column
+		 * is sorted. That this property is an array allows multi-column sorting
+		 * to be defined for a column (for example first name / last name columns
+		 * would benefit from this). The values are integers pointing to the
+		 * columns to be sorted on (typically it will be a single integer pointing
+		 * at itself, but that doesn't need to be the case).
+		 *  @type array
+		 */
+		"aDataSort": null,
+	
+		/**
+		 * Define the sorting directions that are applied to the column, in sequence
+		 * as the column is repeatedly sorted upon - i.e. the first value is used
+		 * as the sorting direction when the column if first sorted (clicked on).
+		 * Sort it again (click again) and it will move on to the next index.
+		 * Repeat until loop.
+		 *  @type array
+		 */
+		"asSorting": null,
+	
+		/**
+		 * Flag to indicate if the column is searchable, and thus should be included
+		 * in the filtering or not.
+		 *  @type boolean
+		 */
+		"bSearchable": null,
+	
+		/**
+		 * Flag to indicate if the column is sortable or not.
+		 *  @type boolean
+		 */
+		"bSortable": null,
+	
+		/**
+		 * Flag to indicate if the column is currently visible in the table or not
+		 *  @type boolean
+		 */
+		"bVisible": null,
+	
+		/**
+		 * Store for manual type assignment using the `column.type` option. This
+		 * is held in store so we can manipulate the column's `sType` property.
+		 *  @type string
+		 *  @default null
+		 *  @private
+		 */
+		"_sManualType": null,
+	
+		/**
+		 * Flag to indicate if HTML5 data attributes should be used as the data
+		 * source for filtering or sorting. True is either are.
+		 *  @type boolean
+		 *  @default false
+		 *  @private
+		 */
+		"_bAttrSrc": false,
+	
+		/**
+		 * Developer definable function that is called whenever a cell is created (Ajax source,
+		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+		 * allowing you to modify the DOM element (add background colour for example) when the
+		 * element is available.
+		 *  @type function
+		 *  @param {element} nTd The TD node that has been created
+		 *  @param {*} sData The Data for the cell
+		 *  @param {array|object} oData The data for the whole row
+		 *  @param {int} iRow The row index for the aoData data store
+		 *  @default null
+		 */
+		"fnCreatedCell": null,
+	
+		/**
+		 * Function to get data from a cell in a column. You should <b>never</b>
+		 * access data directly through _aData internally in DataTables - always use
+		 * the method attached to this property. It allows mData to function as
+		 * required. This function is automatically assigned by the column
+		 * initialisation method
+		 *  @type function
+		 *  @param {array|object} oData The data array/object for the array
+		 *    (i.e. aoData[]._aData)
+		 *  @param {string} sSpecific The specific data type you want to get -
+		 *    'display', 'type' 'filter' 'sort'
+		 *  @returns {*} The data for the cell from the given row's data
+		 *  @default null
+		 */
+		"fnGetData": null,
+	
+		/**
+		 * Function to set data for a cell in the column. You should <b>never</b>
+		 * set the data directly to _aData internally in DataTables - always use
+		 * this method. It allows mData to function as required. This function
+		 * is automatically assigned by the column initialisation method
+		 *  @type function
+		 *  @param {array|object} oData The data array/object for the array
+		 *    (i.e. aoData[]._aData)
+		 *  @param {*} sValue Value to set
+		 *  @default null
+		 */
+		"fnSetData": null,
+	
+		/**
+		 * Property to read the value for the cells in the column from the data
+		 * source array / object. If null, then the default content is used, if a
+		 * function is given then the return from the function is used.
+		 *  @type function|int|string|null
+		 *  @default null
+		 */
+		"mData": null,
+	
+		/**
+		 * Partner property to mData which is used (only when defined) to get
+		 * the data - i.e. it is basically the same as mData, but without the
+		 * 'set' option, and also the data fed to it is the result from mData.
+		 * This is the rendering method to match the data method of mData.
+		 *  @type function|int|string|null
+		 *  @default null
+		 */
+		"mRender": null,
+	
+		/**
+		 * Unique header TH/TD element for this column - this is what the sorting
+		 * listener is attached to (if sorting is enabled.)
+		 *  @type node
+		 *  @default null
+		 */
+		"nTh": null,
+	
+		/**
+		 * Unique footer TH/TD element for this column (if there is one). Not used
+		 * in DataTables as such, but can be used for plug-ins to reference the
+		 * footer for each column.
+		 *  @type node
+		 *  @default null
+		 */
+		"nTf": null,
+	
+		/**
+		 * The class to apply to all TD elements in the table's TBODY for the column
+		 *  @type string
+		 *  @default null
+		 */
+		"sClass": null,
+	
+		/**
+		 * When DataTables calculates the column widths to assign to each column,
+		 * it finds the longest string in each column and then constructs a
+		 * temporary table and reads the widths from that. The problem with this
+		 * is that "mmm" is much wider then "iiii", but the latter is a longer
+		 * string - thus the calculation can go wrong (doing it properly and putting
+		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
+		 * a "work around" we provide this option. It will append its value to the
+		 * text that is found to be the longest string for the column - i.e. padding.
+		 *  @type string
+		 */
+		"sContentPadding": null,
+	
+		/**
+		 * Allows a default value to be given for a column's data, and will be used
+		 * whenever a null data source is encountered (this can be because mData
+		 * is set to null, or because the data source itself is null).
+		 *  @type string
+		 *  @default null
+		 */
+		"sDefaultContent": null,
+	
+		/**
+		 * Name for the column, allowing reference to the column by name as well as
+		 * by index (needs a lookup to work by name).
+		 *  @type string
+		 */
+		"sName": null,
+	
+		/**
+		 * Custom sorting data type - defines which of the available plug-ins in
+		 * afnSortData the custom sorting will use - if any is defined.
+		 *  @type string
+		 *  @default std
+		 */
+		"sSortDataType": 'std',
+	
+		/**
+		 * Class to be applied to the header element when sorting on this column
+		 *  @type string
+		 *  @default null
+		 */
+		"sSortingClass": null,
+	
+		/**
+		 * Class to be applied to the header element when sorting on this column -
+		 * when jQuery UI theming is used.
+		 *  @type string
+		 *  @default null
+		 */
+		"sSortingClassJUI": null,
+	
+		/**
+		 * Title of the column - what is seen in the TH element (nTh).
+		 *  @type string
+		 */
+		"sTitle": null,
+	
+		/**
+		 * Column sorting and filtering type
+		 *  @type string
+		 *  @default null
+		 */
+		"sType": null,
+	
+		/**
+		 * Width of the column
+		 *  @type string
+		 *  @default null
+		 */
+		"sWidth": null,
+	
+		/**
+		 * Width of the column when it was first "encountered"
+		 *  @type string
+		 *  @default null
+		 */
+		"sWidthOrig": null
+	};
+	
+	
+	/*
+	 * Developer note: The properties of the object below are given in Hungarian
+	 * notation, that was used as the interface for DataTables prior to v1.10, however
+	 * from v1.10 onwards the primary interface is camel case. In order to avoid
+	 * breaking backwards compatibility utterly with this change, the Hungarian
+	 * version is still, internally the primary interface, but is is not documented
+	 * - hence the @name tags in each doc comment. This allows a Javascript function
+	 * to create a map from Hungarian notation to camel case (going the other direction
+	 * would require each property to be listed, which would at around 3K to the size
+	 * of DataTables, while this method is about a 0.5K hit.
+	 *
+	 * Ultimately this does pave the way for Hungarian notation to be dropped
+	 * completely, but that is a massive amount of work and will break current
+	 * installs (therefore is on-hold until v2).
+	 */
+	
+	/**
+	 * Initialisation options that can be given to DataTables at initialisation
+	 * time.
+	 *  @namespace
+	 */
+	DataTable.defaults = {
+		/**
+		 * An array of data to use for the table, passed in at initialisation which
+		 * will be used in preference to any data which is already in the DOM. This is
+		 * particularly useful for constructing tables purely in Javascript, for
+		 * example with a custom Ajax call.
+		 *  @type array
+		 *  @default null
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.data
+		 *
+		 *  @example
+		 *    // Using a 2D array data source
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "data": [
+		 *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],
+		 *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],
+		 *        ],
+		 *        "columns": [
+		 *          { "title": "Engine" },
+		 *          { "title": "Browser" },
+		 *          { "title": "Platform" },
+		 *          { "title": "Version" },
+		 *          { "title": "Grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using an array of objects as a data source (`data`)
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "data": [
+		 *          {
+		 *            "engine":   "Trident",
+		 *            "browser":  "Internet Explorer 4.0",
+		 *            "platform": "Win 95+",
+		 *            "version":  4,
+		 *            "grade":    "X"
+		 *          },
+		 *          {
+		 *            "engine":   "Trident",
+		 *            "browser":  "Internet Explorer 5.0",
+		 *            "platform": "Win 95+",
+		 *            "version":  5,
+		 *            "grade":    "C"
+		 *          }
+		 *        ],
+		 *        "columns": [
+		 *          { "title": "Engine",   "data": "engine" },
+		 *          { "title": "Browser",  "data": "browser" },
+		 *          { "title": "Platform", "data": "platform" },
+		 *          { "title": "Version",  "data": "version" },
+		 *          { "title": "Grade",    "data": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"aaData": null,
+	
+	
+		/**
+		 * If ordering is enabled, then DataTables will perform a first pass sort on
+		 * initialisation. You can define which column(s) the sort is performed
+		 * upon, and the sorting direction, with this variable. The `sorting` array
+		 * should contain an array for each column to be sorted initially containing
+		 * the column's index and a direction string ('asc' or 'desc').
+		 *  @type array
+		 *  @default [[0,'asc']]
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.order
+		 *
+		 *  @example
+		 *    // Sort by 3rd column first, and then 4th column
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "order": [[2,'asc'], [3,'desc']]
+		 *      } );
+		 *    } );
+		 *
+		 *    // No initial sorting
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "order": []
+		 *      } );
+		 *    } );
+		 */
+		"aaSorting": [[0,'asc']],
+	
+	
+		/**
+		 * This parameter is basically identical to the `sorting` parameter, but
+		 * cannot be overridden by user interaction with the table. What this means
+		 * is that you could have a column (visible or hidden) which the sorting
+		 * will always be forced on first - any sorting after that (from the user)
+		 * will then be performed as required. This can be useful for grouping rows
+		 * together.
+		 *  @type array
+		 *  @default null
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.orderFixed
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "orderFixed": [[0,'asc']]
+		 *      } );
+		 *    } )
+		 */
+		"aaSortingFixed": [],
+	
+	
+		/**
+		 * DataTables can be instructed to load data to display in the table from a
+		 * Ajax source. This option defines how that Ajax call is made and where to.
+		 *
+		 * The `ajax` property has three different modes of operation, depending on
+		 * how it is defined. These are:
+		 *
+		 * * `string` - Set the URL from where the data should be loaded from.
+		 * * `object` - Define properties for `jQuery.ajax`.
+		 * * `function` - Custom data get function
+		 *
+		 * `string`
+		 * --------
+		 *
+		 * As a string, the `ajax` property simply defines the URL from which
+		 * DataTables will load data.
+		 *
+		 * `object`
+		 * --------
+		 *
+		 * As an object, the parameters in the object are passed to
+		 * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control
+		 * of the Ajax request. DataTables has a number of default parameters which
+		 * you can override using this option. Please refer to the jQuery
+		 * documentation for a full description of the options available, although
+		 * the following parameters provide additional options in DataTables or
+		 * require special consideration:
+		 *
+		 * * `data` - As with jQuery, `data` can be provided as an object, but it
+		 *   can also be used as a function to manipulate the data DataTables sends
+		 *   to the server. The function takes a single parameter, an object of
+		 *   parameters with the values that DataTables has readied for sending. An
+		 *   object may be returned which will be merged into the DataTables
+		 *   defaults, or you can add the items to the object that was passed in and
+		 *   not return anything from the function. This supersedes `fnServerParams`
+		 *   from DataTables 1.9-.
+		 *
+		 * * `dataSrc` - By default DataTables will look for the property `data` (or
+		 *   `aaData` for compatibility with DataTables 1.9-) when obtaining data
+		 *   from an Ajax source or for server-side processing - this parameter
+		 *   allows that property to be changed. You can use Javascript dotted
+		 *   object notation to get a data source for multiple levels of nesting, or
+		 *   it my be used as a function. As a function it takes a single parameter,
+		 *   the JSON returned from the server, which can be manipulated as
+		 *   required, with the returned value being that used by DataTables as the
+		 *   data source for the table. This supersedes `sAjaxDataProp` from
+		 *   DataTables 1.9-.
+		 *
+		 * * `success` - Should not be overridden it is used internally in
+		 *   DataTables. To manipulate / transform the data returned by the server
+		 *   use `ajax.dataSrc`, or use `ajax` as a function (see below).
+		 *
+		 * `function`
+		 * ----------
+		 *
+		 * As a function, making the Ajax call is left up to yourself allowing
+		 * complete control of the Ajax request. Indeed, if desired, a method other
+		 * than Ajax could be used to obtain the required data, such as Web storage
+		 * or an AIR database.
+		 *
+		 * The function is given four parameters and no return is required. The
+		 * parameters are:
+		 *
+		 * 1. _object_ - Data to send to the server
+		 * 2. _function_ - Callback function that must be executed when the required
+		 *    data has been obtained. That data should be passed into the callback
+		 *    as the only parameter
+		 * 3. _object_ - DataTables settings object for the table
+		 *
+		 * Note that this supersedes `fnServerData` from DataTables 1.9-.
+		 *
+		 *  @type string|object|function
+		 *  @default null
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.ajax
+		 *  @since 1.10.0
+		 *
+		 * @example
+		 *   // Get JSON data from a file via Ajax.
+		 *   // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).
+		 *   $('#example').dataTable( {
+		 *     "ajax": "data.json"
+		 *   } );
+		 *
+		 * @example
+		 *   // Get JSON data from a file via Ajax, using `dataSrc` to change
+		 *   // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "dataSrc": "tableData"
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Get JSON data from a file via Ajax, using `dataSrc` to read data
+		 *   // from a plain array rather than an array in an object
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "dataSrc": ""
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Manipulate the data returned from the server - add a link to data
+		 *   // (note this can, should, be done using `render` for the column - this
+		 *   // is just a simple example of how the data can be manipulated).
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "dataSrc": function ( json ) {
+		 *         for ( var i=0, ien=json.length ; i<ien ; i++ ) {
+		 *           json[i][0] = '<a href="/message/'+json[i][0]+'>View message</a>';
+		 *         }
+		 *         return json;
+		 *       }
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Add data to the request
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "data": function ( d ) {
+		 *         return {
+		 *           "extra_search": $('#extra').val()
+		 *         };
+		 *       }
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Send request as POST
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "type": "POST"
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Get the data from localStorage (could interface with a form for
+		 *   // adding, editing and removing rows).
+		 *   $('#example').dataTable( {
+		 *     "ajax": function (data, callback, settings) {
+		 *       callback(
+		 *         JSON.parse( localStorage.getItem('dataTablesData') )
+		 *       );
+		 *     }
+		 *   } );
+		 */
+		"ajax": null,
+	
+	
+		/**
+		 * This parameter allows you to readily specify the entries in the length drop
+		 * down menu that DataTables shows when pagination is enabled. It can be
+		 * either a 1D array of options which will be used for both the displayed
+		 * option and the value, or a 2D array which will use the array in the first
+		 * position as the value, and the array in the second position as the
+		 * displayed options (useful for language strings such as 'All').
+		 *
+		 * Note that the `pageLength` property will be automatically set to the
+		 * first value given in this array, unless `pageLength` is also provided.
+		 *  @type array
+		 *  @default [ 10, 25, 50, 100 ]
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.lengthMenu
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
+		 *      } );
+		 *    } );
+		 */
+		"aLengthMenu": [ 10, 25, 50, 100 ],
+	
+	
+		/**
+		 * The `columns` option in the initialisation parameter allows you to define
+		 * details about the way individual columns behave. For a full list of
+		 * column options that can be set, please see
+		 * {@link DataTable.defaults.column}. Note that if you use `columns` to
+		 * define your columns, you must have an entry in the array for every single
+		 * column that you have in your table (these can be null if you don't which
+		 * to specify any options).
+		 *  @member
+		 *
+		 *  @name DataTable.defaults.column
+		 */
+		"aoColumns": null,
+	
+		/**
+		 * Very similar to `columns`, `columnDefs` allows you to target a specific
+		 * column, multiple columns, or all columns, using the `targets` property of
+		 * each object in the array. This allows great flexibility when creating
+		 * tables, as the `columnDefs` arrays can be of any length, targeting the
+		 * columns you specifically want. `columnDefs` may use any of the column
+		 * options available: {@link DataTable.defaults.column}, but it _must_
+		 * have `targets` defined in each object in the array. Values in the `targets`
+		 * array may be:
+		 *   <ul>
+		 *     <li>a string - class name will be matched on the TH for the column</li>
+		 *     <li>0 or a positive integer - column index counting from the left</li>
+		 *     <li>a negative integer - column index counting from the right</li>
+		 *     <li>the string "_all" - all columns (i.e. assign a default)</li>
+		 *   </ul>
+		 *  @member
+		 *
+		 *  @name DataTable.defaults.columnDefs
+		 */
+		"aoColumnDefs": null,
+	
+	
+		/**
+		 * Basically the same as `search`, this parameter defines the individual column
+		 * filtering state at initialisation time. The array must be of the same size
+		 * as the number of columns, and each element be an object with the parameters
+		 * `search` and `escapeRegex` (the latter is optional). 'null' is also
+		 * accepted and the default will be used.
+		 *  @type array
+		 *  @default []
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.searchCols
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "searchCols": [
+		 *          null,
+		 *          { "search": "My filter" },
+		 *          null,
+		 *          { "search": "^[0-9]", "escapeRegex": false }
+		 *        ]
+		 *      } );
+		 *    } )
+		 */
+		"aoSearchCols": [],
+	
+	
+		/**
+		 * An array of CSS classes that should be applied to displayed rows. This
+		 * array may be of any length, and DataTables will apply each class
+		 * sequentially, looping when required.
+		 *  @type array
+		 *  @default null <i>Will take the values determined by the `oClasses.stripe*`
+		 *    options</i>
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.stripeClasses
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stripeClasses": [ 'strip1', 'strip2', 'strip3' ]
+		 *      } );
+		 *    } )
+		 */
+		"asStripeClasses": null,
+	
+	
+		/**
+		 * Enable or disable automatic column width calculation. This can be disabled
+		 * as an optimisation (it takes some time to calculate the widths) if the
+		 * tables widths are passed in using `columns`.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.autoWidth
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "autoWidth": false
+		 *      } );
+		 *    } );
+		 */
+		"bAutoWidth": true,
+	
+	
+		/**
+		 * Deferred rendering can provide DataTables with a huge speed boost when you
+		 * are using an Ajax or JS data source for the table. This option, when set to
+		 * true, will cause DataTables to defer the creation of the table elements for
+		 * each row until they are needed for a draw - saving a significant amount of
+		 * time.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.deferRender
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajax": "sources/arrays.txt",
+		 *        "deferRender": true
+		 *      } );
+		 *    } );
+		 */
+		"bDeferRender": false,
+	
+	
+		/**
+		 * Replace a DataTable which matches the given selector and replace it with
+		 * one which has the properties of the new initialisation object passed. If no
+		 * table matches the selector, then the new DataTable will be constructed as
+		 * per normal.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.destroy
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "srollY": "200px",
+		 *        "paginate": false
+		 *      } );
+		 *
+		 *      // Some time later....
+		 *      $('#example').dataTable( {
+		 *        "filter": false,
+		 *        "destroy": true
+		 *      } );
+		 *    } );
+		 */
+		"bDestroy": false,
+	
+	
+		/**
+		 * Enable or disable filtering of data. Filtering in DataTables is "smart" in
+		 * that it allows the end user to input multiple words (space separated) and
+		 * will match a row containing those words, even if not in the order that was
+		 * specified (this allow matching across multiple columns). Note that if you
+		 * wish to use filtering in DataTables this must remain 'true' - to remove the
+		 * default filtering input box and retain filtering abilities, please use
+		 * {@link DataTable.defaults.dom}.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.searching
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "searching": false
+		 *      } );
+		 *    } );
+		 */
+		"bFilter": true,
+	
+	
+		/**
+		 * Enable or disable the table information display. This shows information
+		 * about the data that is currently visible on the page, including information
+		 * about filtered data if that action is being performed.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.info
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "info": false
+		 *      } );
+		 *    } );
+		 */
+		"bInfo": true,
+	
+	
+		/**
+		 * Allows the end user to select the size of a formatted page from a select
+		 * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.lengthChange
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "lengthChange": false
+		 *      } );
+		 *    } );
+		 */
+		"bLengthChange": true,
+	
+	
+		/**
+		 * Enable or disable pagination.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.paging
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "paging": false
+		 *      } );
+		 *    } );
+		 */
+		"bPaginate": true,
+	
+	
+		/**
+		 * Enable or disable the display of a 'processing' indicator when the table is
+		 * being processed (e.g. a sort). This is particularly useful for tables with
+		 * large amounts of data where it can take a noticeable amount of time to sort
+		 * the entries.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.processing
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "processing": true
+		 *      } );
+		 *    } );
+		 */
+		"bProcessing": false,
+	
+	
+		/**
+		 * Retrieve the DataTables object for the given selector. Note that if the
+		 * table has already been initialised, this parameter will cause DataTables
+		 * to simply return the object that has already been set up - it will not take
+		 * account of any changes you might have made to the initialisation object
+		 * passed to DataTables (setting this parameter to true is an acknowledgement
+		 * that you understand this). `destroy` can be used to reinitialise a table if
+		 * you need.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.retrieve
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      initTable();
+		 *      tableActions();
+		 *    } );
+		 *
+		 *    function initTable ()
+		 *    {
+		 *      return $('#example').dataTable( {
+		 *        "scrollY": "200px",
+		 *        "paginate": false,
+		 *        "retrieve": true
+		 *      } );
+		 *    }
+		 *
+		 *    function tableActions ()
+		 *    {
+		 *      var table = initTable();
+		 *      // perform API operations with oTable
+		 *    }
+		 */
+		"bRetrieve": false,
+	
+	
+		/**
+		 * When vertical (y) scrolling is enabled, DataTables will force the height of
+		 * the table's viewport to the given height at all times (useful for layout).
+		 * However, this can look odd when filtering data down to a small data set,
+		 * and the footer is left "floating" further down. This parameter (when
+		 * enabled) will cause DataTables to collapse the table's viewport down when
+		 * the result set will fit within the given Y height.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.scrollCollapse
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollY": "200",
+		 *        "scrollCollapse": true
+		 *      } );
+		 *    } );
+		 */
+		"bScrollCollapse": false,
+	
+	
+		/**
+		 * Configure DataTables to use server-side processing. Note that the
+		 * `ajax` parameter must also be given in order to give DataTables a
+		 * source to obtain the required data for each draw.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverSide
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "serverSide": true,
+		 *        "ajax": "xhr.php"
+		 *      } );
+		 *    } );
+		 */
+		"bServerSide": false,
+	
+	
+		/**
+		 * Enable or disable sorting of columns. Sorting of individual columns can be
+		 * disabled by the `sortable` option for each column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.ordering
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "ordering": false
+		 *      } );
+		 *    } );
+		 */
+		"bSort": true,
+	
+	
+		/**
+		 * Enable or display DataTables' ability to sort multiple columns at the
+		 * same time (activated by shift-click by the user).
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.orderMulti
+		 *
+		 *  @example
+		 *    // Disable multiple column sorting ability
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "orderMulti": false
+		 *      } );
+		 *    } );
+		 */
+		"bSortMulti": true,
+	
+	
+		/**
+		 * Allows control over whether DataTables should use the top (true) unique
+		 * cell that is found for a single column, or the bottom (false - default).
+		 * This is useful when using complex headers.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.orderCellsTop
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "orderCellsTop": true
+		 *      } );
+		 *    } );
+		 */
+		"bSortCellsTop": false,
+	
+	
+		/**
+		 * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and
+		 * `sorting\_3` to the columns which are currently being sorted on. This is
+		 * presented as a feature switch as it can increase processing time (while
+		 * classes are removed and added) so for large data sets you might want to
+		 * turn this off.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.orderClasses
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "orderClasses": false
+		 *      } );
+		 *    } );
+		 */
+		"bSortClasses": true,
+	
+	
+		/**
+		 * Enable or disable state saving. When enabled HTML5 `localStorage` will be
+		 * used to save table display information such as pagination information,
+		 * display length, filtering and sorting. As such when the end user reloads
+		 * the page the display display will match what thy had previously set up.
+		 *
+		 * Due to the use of `localStorage` the default state saving is not supported
+		 * in IE6 or 7. If state saving is required in those browsers, use
+		 * `stateSaveCallback` to provide a storage solution such as cookies.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.stateSave
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true
+		 *      } );
+		 *    } );
+		 */
+		"bStateSave": false,
+	
+	
+		/**
+		 * This function is called when a TR element is created (and all TD child
+		 * elements have been inserted), or registered if using a DOM source, allowing
+		 * manipulation of the TR element (adding classes etc).
+		 *  @type function
+		 *  @param {node} row "TR" element for the current row
+		 *  @param {array} data Raw data array for this row
+		 *  @param {int} dataIndex The index of this row in the internal aoData array
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.createdRow
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "createdRow": function( row, data, dataIndex ) {
+		 *          // Bold the grade for all 'A' grade browsers
+		 *          if ( data[4] == "A" )
+		 *          {
+		 *            $('td:eq(4)', row).html( '<b>A</b>' );
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnCreatedRow": null,
+	
+	
+		/**
+		 * This function is called on every 'draw' event, and allows you to
+		 * dynamically modify any aspect you want about the created DOM.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.drawCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "drawCallback": function( settings ) {
+		 *          alert( 'DataTables has redrawn the table' );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnDrawCallback": null,
+	
+	
+		/**
+		 * Identical to fnHeaderCallback() but for the table footer this function
+		 * allows you to modify the table footer on every 'draw' event.
+		 *  @type function
+		 *  @param {node} foot "TR" element for the footer
+		 *  @param {array} data Full table data (as derived from the original HTML)
+		 *  @param {int} start Index for the current display starting point in the
+		 *    display array
+		 *  @param {int} end Index for the current display ending point in the
+		 *    display array
+		 *  @param {array int} display Index array to translate the visual position
+		 *    to the full data array
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.footerCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "footerCallback": function( tfoot, data, start, end, display ) {
+		 *          tfoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+start;
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnFooterCallback": null,
+	
+	
+		/**
+		 * When rendering large numbers in the information element for the table
+		 * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
+		 * to have a comma separator for the 'thousands' units (e.g. 1 million is
+		 * rendered as "1,000,000") to help readability for the end user. This
+		 * function will override the default method DataTables uses.
+		 *  @type function
+		 *  @member
+		 *  @param {int} toFormat number to be formatted
+		 *  @returns {string} formatted string for DataTables to show the number
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.formatNumber
+		 *
+		 *  @example
+		 *    // Format a number using a single quote for the separator (note that
+		 *    // this can also be done with the language.thousands option)
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "formatNumber": function ( toFormat ) {
+		 *          return toFormat.toString().replace(
+		 *            /\B(?=(\d{3})+(?!\d))/g, "'"
+		 *          );
+		 *        };
+		 *      } );
+		 *    } );
+		 */
+		"fnFormatNumber": function ( toFormat ) {
+			return toFormat.toString().replace(
+				/\B(?=(\d{3})+(?!\d))/g,
+				this.oLanguage.sThousands
+			);
+		},
+	
+	
+		/**
+		 * This function is called on every 'draw' event, and allows you to
+		 * dynamically modify the header row. This can be used to calculate and
+		 * display useful information about the table.
+		 *  @type function
+		 *  @param {node} head "TR" element for the header
+		 *  @param {array} data Full table data (as derived from the original HTML)
+		 *  @param {int} start Index for the current display starting point in the
+		 *    display array
+		 *  @param {int} end Index for the current display ending point in the
+		 *    display array
+		 *  @param {array int} display Index array to translate the visual position
+		 *    to the full data array
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.headerCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fheaderCallback": function( head, data, start, end, display ) {
+		 *          head.getElementsByTagName('th')[0].innerHTML = "Displaying "+(end-start)+" records";
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnHeaderCallback": null,
+	
+	
+		/**
+		 * The information element can be used to convey information about the current
+		 * state of the table. Although the internationalisation options presented by
+		 * DataTables are quite capable of dealing with most customisations, there may
+		 * be times where you wish to customise the string further. This callback
+		 * allows you to do exactly that.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {int} start Starting position in data for the draw
+		 *  @param {int} end End position in data for the draw
+		 *  @param {int} max Total number of rows in the table (regardless of
+		 *    filtering)
+		 *  @param {int} total Total number of rows in the data set, after filtering
+		 *  @param {string} pre The string that DataTables has formatted using it's
+		 *    own rules
+		 *  @returns {string} The string to be displayed in the information element.
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.infoCallback
+		 *
+		 *  @example
+		 *    $('#example').dataTable( {
+		 *      "infoCallback": function( settings, start, end, max, total, pre ) {
+		 *        return start +" to "+ end;
+		 *      }
+		 *    } );
+		 */
+		"fnInfoCallback": null,
+	
+	
+		/**
+		 * Called when the table has been initialised. Normally DataTables will
+		 * initialise sequentially and there will be no need for this function,
+		 * however, this does not hold true when using external language information
+		 * since that is obtained using an async XHR call.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} json The JSON object request from the server - only
+		 *    present if client-side Ajax sourced data is used
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.initComplete
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "initComplete": function(settings, json) {
+		 *          alert( 'DataTables has finished its initialisation.' );
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnInitComplete": null,
+	
+	
+		/**
+		 * Called at the very start of each table draw and can be used to cancel the
+		 * draw by returning false, any other return (including undefined) results in
+		 * the full draw occurring).
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @returns {boolean} False will cancel the draw, anything else (including no
+		 *    return) will allow it to complete.
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.preDrawCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "preDrawCallback": function( settings ) {
+		 *          if ( $('#test').val() == 1 ) {
+		 *            return false;
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnPreDrawCallback": null,
+	
+	
+		/**
+		 * This function allows you to 'post process' each row after it have been
+		 * generated for each table draw, but before it is rendered on screen. This
+		 * function might be used for setting the row class name etc.
+		 *  @type function
+		 *  @param {node} row "TR" element for the current row
+		 *  @param {array} data Raw data array for this row
+		 *  @param {int} displayIndex The display index for the current table draw
+		 *  @param {int} displayIndexFull The index of the data in the full list of
+		 *    rows (after filtering)
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.rowCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "rowCallback": function( row, data, displayIndex, displayIndexFull ) {
+		 *          // Bold the grade for all 'A' grade browsers
+		 *          if ( data[4] == "A" ) {
+		 *            $('td:eq(4)', row).html( '<b>A</b>' );
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnRowCallback": null,
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * This parameter allows you to override the default function which obtains
+		 * the data from the server so something more suitable for your application.
+		 * For example you could use POST data, or pull information from a Gears or
+		 * AIR database.
+		 *  @type function
+		 *  @member
+		 *  @param {string} source HTTP source to obtain the data from (`ajax`)
+		 *  @param {array} data A key/value pair object containing the data to send
+		 *    to the server
+		 *  @param {function} callback to be called on completion of the data get
+		 *    process that will draw the data on the page.
+		 *  @param {object} settings DataTables settings object
+		 *
+		 *  @dtopt Callbacks
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverData
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"fnServerData": null,
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 *  It is often useful to send extra data to the server when making an Ajax
+		 * request - for example custom filtering information, and this callback
+		 * function makes it trivial to send extra information to the server. The
+		 * passed in parameter is the data set that has been constructed by
+		 * DataTables, and you can add to this or modify it as you require.
+		 *  @type function
+		 *  @param {array} data Data array (array of objects which are name/value
+		 *    pairs) that has been constructed by DataTables and will be sent to the
+		 *    server. In the case of Ajax sourced data with server-side processing
+		 *    this will be an empty array, for server-side processing there will be a
+		 *    significant number of parameters!
+		 *  @returns {undefined} Ensure that you modify the data array passed in,
+		 *    as this is passed by reference.
+		 *
+		 *  @dtopt Callbacks
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverParams
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"fnServerParams": null,
+	
+	
+		/**
+		 * Load the table state. With this function you can define from where, and how, the
+		 * state of a table is loaded. By default DataTables will load from `localStorage`
+		 * but you might wish to use a server-side database or cookies.
+		 *  @type function
+		 *  @member
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} callback Callback that can be executed when done. It
+		 *    should be passed the loaded state object.
+		 *  @return {object} The DataTables state object to be loaded
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateLoadCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoadCallback": function (settings, callback) {
+		 *          $.ajax( {
+		 *            "url": "/state_load",
+		 *            "dataType": "json",
+		 *            "success": function (json) {
+		 *              callback( json );
+		 *            }
+		 *          } );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoadCallback": function ( settings ) {
+			try {
+				return JSON.parse(
+					(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(
+						'DataTables_'+settings.sInstance+'_'+location.pathname
+					)
+				);
+			} catch (e) {}
+		},
+	
+	
+		/**
+		 * Callback which allows modification of the saved state prior to loading that state.
+		 * This callback is called when the table is loading state from the stored data, but
+		 * prior to the settings object being modified by the saved state. Note that for
+		 * plug-in authors, you should use the `stateLoadParams` event to load parameters for
+		 * a plug-in.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object that is to be loaded
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateLoadParams
+		 *
+		 *  @example
+		 *    // Remove a saved filter, so filtering is never loaded
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoadParams": function (settings, data) {
+		 *          data.oSearch.sSearch = "";
+		 *        }
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Disallow state loading by returning false
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoadParams": function (settings, data) {
+		 *          return false;
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoadParams": null,
+	
+	
+		/**
+		 * Callback that is called when the state has been loaded from the state saving method
+		 * and the DataTables settings object has been modified as a result of the loaded state.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object that was loaded
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateLoaded
+		 *
+		 *  @example
+		 *    // Show an alert with the filtering value that was saved
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoaded": function (settings, data) {
+		 *          alert( 'Saved filter was: '+data.oSearch.sSearch );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoaded": null,
+	
+	
+		/**
+		 * Save the table state. This function allows you to define where and how the state
+		 * information for the table is stored By default DataTables will use `localStorage`
+		 * but you might wish to use a server-side database or cookies.
+		 *  @type function
+		 *  @member
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object to be saved
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateSaveCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateSaveCallback": function (settings, data) {
+		 *          // Send an Ajax request to the server with the state object
+		 *          $.ajax( {
+		 *            "url": "/state_save",
+		 *            "data": data,
+		 *            "dataType": "json",
+		 *            "method": "POST"
+		 *            "success": function () {}
+		 *          } );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateSaveCallback": function ( settings, data ) {
+			try {
+				(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(
+					'DataTables_'+settings.sInstance+'_'+location.pathname,
+					JSON.stringify( data )
+				);
+			} catch (e) {}
+		},
+	
+	
+		/**
+		 * Callback which allows modification of the state to be saved. Called when the table
+		 * has changed state a new state save is required. This method allows modification of
+		 * the state saving object prior to actually doing the save, including addition or
+		 * other state properties or modification. Note that for plug-in authors, you should
+		 * use the `stateSaveParams` event to save parameters for a plug-in.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object to be saved
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateSaveParams
+		 *
+		 *  @example
+		 *    // Remove a saved filter, so filtering is never saved
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateSaveParams": function (settings, data) {
+		 *          data.oSearch.sSearch = "";
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateSaveParams": null,
+	
+	
+		/**
+		 * Duration for which the saved state information is considered valid. After this period
+		 * has elapsed the state will be returned to the default.
+		 * Value is given in seconds.
+		 *  @type int
+		 *  @default 7200 <i>(2 hours)</i>
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.stateDuration
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateDuration": 60*60*24; // 1 day
+		 *      } );
+		 *    } )
+		 */
+		"iStateDuration": 7200,
+	
+	
+		/**
+		 * When enabled DataTables will not make a request to the server for the first
+		 * page draw - rather it will use the data already on the page (no sorting etc
+		 * will be applied to it), thus saving on an XHR at load time. `deferLoading`
+		 * is used to indicate that deferred loading is required, but it is also used
+		 * to tell DataTables how many records there are in the full table (allowing
+		 * the information element and pagination to be displayed correctly). In the case
+		 * where a filtering is applied to the table on initial load, this can be
+		 * indicated by giving the parameter as an array, where the first element is
+		 * the number of records available after filtering and the second element is the
+		 * number of records without filtering (allowing the table information element
+		 * to be shown correctly).
+		 *  @type int | array
+		 *  @default null
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.deferLoading
+		 *
+		 *  @example
+		 *    // 57 records available in the table, no filtering applied
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "serverSide": true,
+		 *        "ajax": "scripts/server_processing.php",
+		 *        "deferLoading": 57
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // 57 records after filtering, 100 without filtering (an initial filter applied)
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "serverSide": true,
+		 *        "ajax": "scripts/server_processing.php",
+		 *        "deferLoading": [ 57, 100 ],
+		 *        "search": {
+		 *          "search": "my_filter"
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"iDeferLoading": null,
+	
+	
+		/**
+		 * Number of rows to display on a single page when using pagination. If
+		 * feature enabled (`lengthChange`) then the end user will be able to override
+		 * this to a custom setting using a pop-up menu.
+		 *  @type int
+		 *  @default 10
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.pageLength
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "pageLength": 50
+		 *      } );
+		 *    } )
+		 */
+		"iDisplayLength": 10,
+	
+	
+		/**
+		 * Define the starting point for data display when using DataTables with
+		 * pagination. Note that this parameter is the number of records, rather than
+		 * the page number, so if you have 10 records per page and want to start on
+		 * the third page, it should be "20".
+		 *  @type int
+		 *  @default 0
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.displayStart
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "displayStart": 20
+		 *      } );
+		 *    } )
+		 */
+		"iDisplayStart": 0,
+	
+	
+		/**
+		 * By default DataTables allows keyboard navigation of the table (sorting, paging,
+		 * and filtering) by adding a `tabindex` attribute to the required elements. This
+		 * allows you to tab through the controls and press the enter key to activate them.
+		 * The tabindex is default 0, meaning that the tab follows the flow of the document.
+		 * You can overrule this using this parameter if you wish. Use a value of -1 to
+		 * disable built-in keyboard navigation.
+		 *  @type int
+		 *  @default 0
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.tabIndex
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "tabIndex": 1
+		 *      } );
+		 *    } );
+		 */
+		"iTabIndex": 0,
+	
+	
+		/**
+		 * Classes that DataTables assigns to the various components and features
+		 * that it adds to the HTML table. This allows classes to be configured
+		 * during initialisation in addition to through the static
+		 * {@link DataTable.ext.oStdClasses} object).
+		 *  @namespace
+		 *  @name DataTable.defaults.classes
+		 */
+		"oClasses": {},
+	
+	
+		/**
+		 * All strings that DataTables uses in the user interface that it creates
+		 * are defined in this object, allowing you to modified them individually or
+		 * completely replace them all as required.
+		 *  @namespace
+		 *  @name DataTable.defaults.language
+		 */
+		"oLanguage": {
+			/**
+			 * Strings that are used for WAI-ARIA labels and controls only (these are not
+			 * actually visible on the page, but will be read by screenreaders, and thus
+			 * must be internationalised as well).
+			 *  @namespace
+			 *  @name DataTable.defaults.language.aria
+			 */
+			"oAria": {
+				/**
+				 * ARIA label that is added to the table headers when the column may be
+				 * sorted ascending by activing the column (click or return when focused).
+				 * Note that the column header is prefixed to this string.
+				 *  @type string
+				 *  @default : activate to sort column ascending
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.aria.sortAscending
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "aria": {
+				 *            "sortAscending": " - click/return to sort ascending"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sSortAscending": ": activate to sort column ascending",
+	
+				/**
+				 * ARIA label that is added to the table headers when the column may be
+				 * sorted descending by activing the column (click or return when focused).
+				 * Note that the column header is prefixed to this string.
+				 *  @type string
+				 *  @default : activate to sort column ascending
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.aria.sortDescending
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "aria": {
+				 *            "sortDescending": " - click/return to sort descending"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sSortDescending": ": activate to sort column descending"
+			},
+	
+			/**
+			 * Pagination string used by DataTables for the built-in pagination
+			 * control types.
+			 *  @namespace
+			 *  @name DataTable.defaults.language.paginate
+			 */
+			"oPaginate": {
+				/**
+				 * Text to use when using the 'full_numbers' type of pagination for the
+				 * button to take the user to the first page.
+				 *  @type string
+				 *  @default First
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.first
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "first": "First page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sFirst": "First",
+	
+	
+				/**
+				 * Text to use when using the 'full_numbers' type of pagination for the
+				 * button to take the user to the last page.
+				 *  @type string
+				 *  @default Last
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.last
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "last": "Last page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sLast": "Last",
+	
+	
+				/**
+				 * Text to use for the 'next' pagination button (to take the user to the
+				 * next page).
+				 *  @type string
+				 *  @default Next
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.next
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "next": "Next page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sNext": "Next",
+	
+	
+				/**
+				 * Text to use for the 'previous' pagination button (to take the user to
+				 * the previous page).
+				 *  @type string
+				 *  @default Previous
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.previous
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "previous": "Previous page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sPrevious": "Previous"
+			},
+	
+			/**
+			 * This string is shown in preference to `zeroRecords` when the table is
+			 * empty of data (regardless of filtering). Note that this is an optional
+			 * parameter - if it is not given, the value of `zeroRecords` will be used
+			 * instead (either the default or given value).
+			 *  @type string
+			 *  @default No data available in table
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.emptyTable
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "emptyTable": "No data available in table"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sEmptyTable": "No data available in table",
+	
+	
+			/**
+			 * This string gives information to the end user about the information
+			 * that is current on display on the page. The following tokens can be
+			 * used in the string and will be dynamically replaced as the table
+			 * display updates. This tokens can be placed anywhere in the string, or
+			 * removed as needed by the language requires:
+			 *
+			 * * `\_START\_` - Display index of the first record on the current page
+			 * * `\_END\_` - Display index of the last record on the current page
+			 * * `\_TOTAL\_` - Number of records in the table after filtering
+			 * * `\_MAX\_` - Number of records in the table without filtering
+			 * * `\_PAGE\_` - Current page number
+			 * * `\_PAGES\_` - Total number of pages of data in the table
+			 *
+			 *  @type string
+			 *  @default Showing _START_ to _END_ of _TOTAL_ entries
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.info
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "info": "Showing page _PAGE_ of _PAGES_"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
+	
+	
+			/**
+			 * Display information string for when the table is empty. Typically the
+			 * format of this string should match `info`.
+			 *  @type string
+			 *  @default Showing 0 to 0 of 0 entries
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.infoEmpty
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "infoEmpty": "No entries to show"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoEmpty": "Showing 0 to 0 of 0 entries",
+	
+	
+			/**
+			 * When a user filters the information in a table, this string is appended
+			 * to the information (`info`) to give an idea of how strong the filtering
+			 * is. The variable _MAX_ is dynamically updated.
+			 *  @type string
+			 *  @default (filtered from _MAX_ total entries)
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.infoFiltered
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "infoFiltered": " - filtering from _MAX_ records"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoFiltered": "(filtered from _MAX_ total entries)",
+	
+	
+			/**
+			 * If can be useful to append extra information to the info string at times,
+			 * and this variable does exactly that. This information will be appended to
+			 * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are
+			 * being used) at all times.
+			 *  @type string
+			 *  @default <i>Empty string</i>
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.infoPostFix
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "infoPostFix": "All records shown are derived from real information."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoPostFix": "",
+	
+	
+			/**
+			 * This decimal place operator is a little different from the other
+			 * language options since DataTables doesn't output floating point
+			 * numbers, so it won't ever use this for display of a number. Rather,
+			 * what this parameter does is modify the sort methods of the table so
+			 * that numbers which are in a format which has a character other than
+			 * a period (`.`) as a decimal place will be sorted numerically.
+			 *
+			 * Note that numbers with different decimal places cannot be shown in
+			 * the same table and still be sortable, the table must be consistent.
+			 * However, multiple different tables on the page can use different
+			 * decimal place characters.
+			 *  @type string
+			 *  @default 
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.decimal
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "decimal": ","
+			 *          "thousands": "."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sDecimal": "",
+	
+	
+			/**
+			 * DataTables has a build in number formatter (`formatNumber`) which is
+			 * used to format large numbers that are used in the table information.
+			 * By default a comma is used, but this can be trivially changed to any
+			 * character you wish with this parameter.
+			 *  @type string
+			 *  @default ,
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.thousands
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "thousands": "'"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sThousands": ",",
+	
+	
+			/**
+			 * Detail the action that will be taken when the drop down menu for the
+			 * pagination length option is changed. The '_MENU_' variable is replaced
+			 * with a default select list of 10, 25, 50 and 100, and can be replaced
+			 * with a custom select box if required.
+			 *  @type string
+			 *  @default Show _MENU_ entries
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.lengthMenu
+			 *
+			 *  @example
+			 *    // Language change only
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "lengthMenu": "Display _MENU_ records"
+			 *        }
+			 *      } );
+			 *    } );
+			 *
+			 *  @example
+			 *    // Language and options change
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "lengthMenu": 'Display <select>'+
+			 *            '<option value="10">10</option>'+
+			 *            '<option value="20">20</option>'+
+			 *            '<option value="30">30</option>'+
+			 *            '<option value="40">40</option>'+
+			 *            '<option value="50">50</option>'+
+			 *            '<option value="-1">All</option>'+
+			 *            '</select> records'
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sLengthMenu": "Show _MENU_ entries",
+	
+	
+			/**
+			 * When using Ajax sourced data and during the first draw when DataTables is
+			 * gathering the data, this message is shown in an empty row in the table to
+			 * indicate to the end user the the data is being loaded. Note that this
+			 * parameter is not used when loading data by server-side processing, just
+			 * Ajax sourced data with client-side processing.
+			 *  @type string
+			 *  @default Loading...
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.loadingRecords
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "loadingRecords": "Please wait - loading..."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sLoadingRecords": "Loading...",
+	
+	
+			/**
+			 * Text which is displayed when the table is processing a user action
+			 * (usually a sort command or similar).
+			 *  @type string
+			 *  @default Processing...
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.processing
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "processing": "DataTables is currently busy"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sProcessing": "Processing...",
+	
+	
+			/**
+			 * Details the actions that will be taken when the user types into the
+			 * filtering input text box. The variable "_INPUT_", if used in the string,
+			 * is replaced with the HTML text box for the filtering input allowing
+			 * control over where it appears in the string. If "_INPUT_" is not given
+			 * then the input box is appended to the string automatically.
+			 *  @type string
+			 *  @default Search:
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.search
+			 *
+			 *  @example
+			 *    // Input text box will be appended at the end automatically
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "search": "Filter records:"
+			 *        }
+			 *      } );
+			 *    } );
+			 *
+			 *  @example
+			 *    // Specify where the filter should appear
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "search": "Apply filter _INPUT_ to table"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sSearch": "Search:",
+	
+	
+			/**
+			 * Assign a `placeholder` attribute to the search `input` element
+			 *  @type string
+			 *  @default 
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.searchPlaceholder
+			 */
+			"sSearchPlaceholder": "",
+	
+	
+			/**
+			 * All of the language information can be stored in a file on the
+			 * server-side, which DataTables will look up if this parameter is passed.
+			 * It must store the URL of the language file, which is in a JSON format,
+			 * and the object has the same properties as the oLanguage object in the
+			 * initialiser object (i.e. the above parameters). Please refer to one of
+			 * the example language files to see how this works in action.
+			 *  @type string
+			 *  @default <i>Empty string - i.e. disabled</i>
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.url
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "url": "http://www.sprymedia.co.uk/dataTables/lang.txt"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sUrl": "",
+	
+	
+			/**
+			 * Text shown inside the table records when the is no information to be
+			 * displayed after filtering. `emptyTable` is shown when there is simply no
+			 * information in the table at all (regardless of filtering).
+			 *  @type string
+			 *  @default No matching records found
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.zeroRecords
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "zeroRecords": "No records to display"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sZeroRecords": "No matching records found"
+		},
+	
+	
+		/**
+		 * This parameter allows you to have define the global filtering state at
+		 * initialisation time. As an object the `search` parameter must be
+		 * defined, but all other parameters are optional. When `regex` is true,
+		 * the search string will be treated as a regular expression, when false
+		 * (default) it will be treated as a straight string. When `smart`
+		 * DataTables will use it's smart filtering methods (to word match at
+		 * any point in the data), when false this will not be done.
+		 *  @namespace
+		 *  @extends DataTable.models.oSearch
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.search
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "search": {"search": "Initial search"}
+		 *      } );
+		 *    } )
+		 */
+		"oSearch": $.extend( {}, DataTable.models.oSearch ),
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * By default DataTables will look for the property `data` (or `aaData` for
+		 * compatibility with DataTables 1.9-) when obtaining data from an Ajax
+		 * source or for server-side processing - this parameter allows that
+		 * property to be changed. You can use Javascript dotted object notation to
+		 * get a data source for multiple levels of nesting.
+		 *  @type string
+		 *  @default data
+		 *
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.ajaxDataProp
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"sAjaxDataProp": "data",
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * You can instruct DataTables to load data from an external
+		 * source using this parameter (use aData if you want to pass data in you
+		 * already have). Simply provide a url a JSON object can be obtained from.
+		 *  @type string
+		 *  @default null
+		 *
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.ajaxSource
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"sAjaxSource": null,
+	
+	
+		/**
+		 * This initialisation variable allows you to specify exactly where in the
+		 * DOM you want DataTables to inject the various controls it adds to the page
+		 * (for example you might want the pagination controls at the top of the
+		 * table). DIV elements (with or without a custom class) can also be added to
+		 * aid styling. The follow syntax is used:
+		 *   <ul>
+		 *     <li>The following options are allowed:
+		 *       <ul>
+		 *         <li>'l' - Length changing</li>
+		 *         <li>'f' - Filtering input</li>
+		 *         <li>'t' - The table!</li>
+		 *         <li>'i' - Information</li>
+		 *         <li>'p' - Pagination</li>
+		 *         <li>'r' - pRocessing</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>The following constants are allowed:
+		 *       <ul>
+		 *         <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>
+		 *         <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>The following syntax is expected:
+		 *       <ul>
+		 *         <li>'&lt;' and '&gt;' - div elements</li>
+		 *         <li>'&lt;"class" and '&gt;' - div with a class</li>
+		 *         <li>'&lt;"#id" and '&gt;' - div with an ID</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>Examples:
+		 *       <ul>
+		 *         <li>'&lt;"wrapper"flipt&gt;'</li>
+		 *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>
+		 *       </ul>
+		 *     </li>
+		 *   </ul>
+		 *  @type string
+		 *  @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b>
+		 *    <"H"lfr>t<"F"ip> <i>(when `jQueryUI` is true)</i>
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.dom
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "dom": '&lt;"top"i&gt;rt&lt;"bottom"flp&gt;&lt;"clear"&gt;'
+		 *      } );
+		 *    } );
+		 */
+		"sDom": "lfrtip",
+	
+	
+		/**
+		 * Search delay option. This will throttle full table searches that use the
+		 * DataTables provided search input element (it does not effect calls to
+		 * `dt-api search()`, providing a delay before the search is made.
+		 *  @type integer
+		 *  @default 0
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.searchDelay
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "searchDelay": 200
+		 *      } );
+		 *    } )
+		 */
+		"searchDelay": null,
+	
+	
+		/**
+		 * DataTables features six different built-in options for the buttons to
+		 * display for pagination control:
+		 *
+		 * * `numbers` - Page number buttons only
+		 * * `simple` - 'Previous' and 'Next' buttons only
+		 * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers
+		 * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons
+		 * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers
+		 * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers
+		 *  
+		 * Further methods can be added using {@link DataTable.ext.oPagination}.
+		 *  @type string
+		 *  @default simple_numbers
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.pagingType
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "pagingType": "full_numbers"
+		 *      } );
+		 *    } )
+		 */
+		"sPaginationType": "simple_numbers",
+	
+	
+		/**
+		 * Enable horizontal scrolling. When a table is too wide to fit into a
+		 * certain layout, or you have a large number of columns in the table, you
+		 * can enable x-scrolling to show the table in a viewport, which can be
+		 * scrolled. This property can be `true` which will allow the table to
+		 * scroll horizontally when needed, or any CSS unit, or a number (in which
+		 * case it will be treated as a pixel measurement). Setting as simply `true`
+		 * is recommended.
+		 *  @type boolean|string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.scrollX
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollX": true,
+		 *        "scrollCollapse": true
+		 *      } );
+		 *    } );
+		 */
+		"sScrollX": "",
+	
+	
+		/**
+		 * This property can be used to force a DataTable to use more width than it
+		 * might otherwise do when x-scrolling is enabled. For example if you have a
+		 * table which requires to be well spaced, this parameter is useful for
+		 * "over-sizing" the table, and thus forcing scrolling. This property can by
+		 * any CSS unit, or a number (in which case it will be treated as a pixel
+		 * measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.scrollXInner
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollX": "100%",
+		 *        "scrollXInner": "110%"
+		 *      } );
+		 *    } );
+		 */
+		"sScrollXInner": "",
+	
+	
+		/**
+		 * Enable vertical scrolling. Vertical scrolling will constrain the DataTable
+		 * to the given height, and enable scrolling for any data which overflows the
+		 * current viewport. This can be used as an alternative to paging to display
+		 * a lot of data in a small area (although paging and scrolling can both be
+		 * enabled at the same time). This property can be any CSS unit, or a number
+		 * (in which case it will be treated as a pixel measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.scrollY
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollY": "200px",
+		 *        "paginate": false
+		 *      } );
+		 *    } );
+		 */
+		"sScrollY": "",
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * Set the HTTP method that is used to make the Ajax call for server-side
+		 * processing or Ajax sourced data.
+		 *  @type string
+		 *  @default GET
+		 *
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverMethod
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"sServerMethod": "GET",
+	
+	
+		/**
+		 * DataTables makes use of renderers when displaying HTML elements for
+		 * a table. These renderers can be added or modified by plug-ins to
+		 * generate suitable mark-up for a site. For example the Bootstrap
+		 * integration plug-in for DataTables uses a paging button renderer to
+		 * display pagination buttons in the mark-up required by Bootstrap.
+		 *
+		 * For further information about the renderers available see
+		 * DataTable.ext.renderer
+		 *  @type string|object
+		 *  @default null
+		 *
+		 *  @name DataTable.defaults.renderer
+		 *
+		 */
+		"renderer": null,
+	
+	
+		/**
+		 * Set the data property name that DataTables should use to get a row's id
+		 * to set as the `id` property in the node.
+		 *  @type string
+		 *  @default DT_RowId
+		 *
+		 *  @name DataTable.defaults.rowId
+		 */
+		"rowId": "DT_RowId"
+	};
+	
+	_fnHungarianMap( DataTable.defaults );
+	
+	
+	
+	/*
+	 * Developer note - See note in model.defaults.js about the use of Hungarian
+	 * notation and camel case.
+	 */
+	
+	/**
+	 * Column options that can be given to DataTables at initialisation time.
+	 *  @namespace
+	 */
+	DataTable.defaults.column = {
+		/**
+		 * Define which column(s) an order will occur on for this column. This
+		 * allows a column's ordering to take multiple columns into account when
+		 * doing a sort or use the data from a different column. For example first
+		 * name / last name columns make sense to do a multi-column sort over the
+		 * two columns.
+		 *  @type array|int
+		 *  @default null <i>Takes the value of the column index automatically</i>
+		 *
+		 *  @name DataTable.defaults.column.orderData
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderData": [ 0, 1 ], "targets": [ 0 ] },
+		 *          { "orderData": [ 1, 0 ], "targets": [ 1 ] },
+		 *          { "orderData": 2, "targets": [ 2 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "orderData": [ 0, 1 ] },
+		 *          { "orderData": [ 1, 0 ] },
+		 *          { "orderData": 2 },
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"aDataSort": null,
+		"iDataSort": -1,
+	
+	
+		/**
+		 * You can control the default ordering direction, and even alter the
+		 * behaviour of the sort handler (i.e. only allow ascending ordering etc)
+		 * using this parameter.
+		 *  @type array
+		 *  @default [ 'asc', 'desc' ]
+		 *
+		 *  @name DataTable.defaults.column.orderSequence
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderSequence": [ "asc" ], "targets": [ 1 ] },
+		 *          { "orderSequence": [ "desc", "asc", "asc" ], "targets": [ 2 ] },
+		 *          { "orderSequence": [ "desc" ], "targets": [ 3 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          { "orderSequence": [ "asc" ] },
+		 *          { "orderSequence": [ "desc", "asc", "asc" ] },
+		 *          { "orderSequence": [ "desc" ] },
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"asSorting": [ 'asc', 'desc' ],
+	
+	
+		/**
+		 * Enable or disable filtering on the data in this column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @name DataTable.defaults.column.searchable
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "searchable": false, "targets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "searchable": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bSearchable": true,
+	
+	
+		/**
+		 * Enable or disable ordering on this column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @name DataTable.defaults.column.orderable
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderable": false, "targets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "orderable": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bSortable": true,
+	
+	
+		/**
+		 * Enable or disable the display of this column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @name DataTable.defaults.column.visible
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "visible": false, "targets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "visible": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bVisible": true,
+	
+	
+		/**
+		 * Developer definable function that is called whenever a cell is created (Ajax source,
+		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+		 * allowing you to modify the DOM element (add background colour for example) when the
+		 * element is available.
+		 *  @type function
+		 *  @param {element} td The TD node that has been created
+		 *  @param {*} cellData The Data for the cell
+		 *  @param {array|object} rowData The data for the whole row
+		 *  @param {int} row The row index for the aoData data store
+		 *  @param {int} col The column index for aoColumns
+		 *
+		 *  @name DataTable.defaults.column.createdCell
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [3],
+		 *          "createdCell": function (td, cellData, rowData, row, col) {
+		 *            if ( cellData == "1.7" ) {
+		 *              $(td).css('color', 'blue')
+		 *            }
+		 *          }
+		 *        } ]
+		 *      });
+		 *    } );
+		 */
+		"fnCreatedCell": null,
+	
+	
+		/**
+		 * This parameter has been replaced by `data` in DataTables to ensure naming
+		 * consistency. `dataProp` can still be used, as there is backwards
+		 * compatibility in DataTables for this option, but it is strongly
+		 * recommended that you use `data` in preference to `dataProp`.
+		 *  @name DataTable.defaults.column.dataProp
+		 */
+	
+	
+		/**
+		 * This property can be used to read data from any data source property,
+		 * including deeply nested objects / properties. `data` can be given in a
+		 * number of different ways which effect its behaviour:
+		 *
+		 * * `integer` - treated as an array index for the data source. This is the
+		 *   default that DataTables uses (incrementally increased for each column).
+		 * * `string` - read an object property from the data source. There are
+		 *   three 'special' options that can be used in the string to alter how
+		 *   DataTables reads the data from the source object:
+		 *    * `.` - Dotted Javascript notation. Just as you use a `.` in
+		 *      Javascript to read from nested objects, so to can the options
+		 *      specified in `data`. For example: `browser.version` or
+		 *      `browser.name`. If your object parameter name contains a period, use
+		 *      `\\` to escape it - i.e. `first\\.name`.
+		 *    * `[]` - Array notation. DataTables can automatically combine data
+		 *      from and array source, joining the data with the characters provided
+		 *      between the two brackets. For example: `name[, ]` would provide a
+		 *      comma-space separated list from the source array. If no characters
+		 *      are provided between the brackets, the original array source is
+		 *      returned.
+		 *    * `()` - Function notation. Adding `()` to the end of a parameter will
+		 *      execute a function of the name given. For example: `browser()` for a
+		 *      simple function on the data source, `browser.version()` for a
+		 *      function in a nested property or even `browser().version` to get an
+		 *      object property if the function called returns an object. Note that
+		 *      function notation is recommended for use in `render` rather than
+		 *      `data` as it is much simpler to use as a renderer.
+		 * * `null` - use the original data source for the row rather than plucking
+		 *   data directly from it. This action has effects on two other
+		 *   initialisation options:
+		 *    * `defaultContent` - When null is given as the `data` option and
+		 *      `defaultContent` is specified for the column, the value defined by
+		 *      `defaultContent` will be used for the cell.
+		 *    * `render` - When null is used for the `data` option and the `render`
+		 *      option is specified for the column, the whole data source for the
+		 *      row is used for the renderer.
+		 * * `function` - the function given will be executed whenever DataTables
+		 *   needs to set or get the data for a cell in the column. The function
+		 *   takes three parameters:
+		 *    * Parameters:
+		 *      * `{array|object}` The data source for the row
+		 *      * `{string}` The type call data requested - this will be 'set' when
+		 *        setting data or 'filter', 'display', 'type', 'sort' or undefined
+		 *        when gathering data. Note that when `undefined` is given for the
+		 *        type DataTables expects to get the raw data for the object back<
+		 *      * `{*}` Data to set when the second parameter is 'set'.
+		 *    * Return:
+		 *      * The return value from the function is not required when 'set' is
+		 *        the type of call, but otherwise the return is what will be used
+		 *        for the data requested.
+		 *
+		 * Note that `data` is a getter and setter option. If you just require
+		 * formatting of data for output, you will likely want to use `render` which
+		 * is simply a getter and thus simpler to use.
+		 *
+		 * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The
+		 * name change reflects the flexibility of this property and is consistent
+		 * with the naming of mRender. If 'mDataProp' is given, then it will still
+		 * be used by DataTables, as it automatically maps the old name to the new
+		 * if required.
+		 *
+		 *  @type string|int|function|null
+		 *  @default null <i>Use automatically calculated column index</i>
+		 *
+		 *  @name DataTable.defaults.column.data
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Read table data from objects
+		 *    // JSON structure for each row:
+		 *    //   {
+		 *    //      "engine": {value},
+		 *    //      "browser": {value},
+		 *    //      "platform": {value},
+		 *    //      "version": {value},
+		 *    //      "grade": {value}
+		 *    //   }
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajaxSource": "sources/objects.txt",
+		 *        "columns": [
+		 *          { "data": "engine" },
+		 *          { "data": "browser" },
+		 *          { "data": "platform" },
+		 *          { "data": "version" },
+		 *          { "data": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Read information from deeply nested objects
+		 *    // JSON structure for each row:
+		 *    //   {
+		 *    //      "engine": {value},
+		 *    //      "browser": {value},
+		 *    //      "platform": {
+		 *    //         "inner": {value}
+		 *    //      },
+		 *    //      "details": [
+		 *    //         {value}, {value}
+		 *    //      ]
+		 *    //   }
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajaxSource": "sources/deep.txt",
+		 *        "columns": [
+		 *          { "data": "engine" },
+		 *          { "data": "browser" },
+		 *          { "data": "platform.inner" },
+		 *          { "data": "details.0" },
+		 *          { "data": "details.1" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `data` as a function to provide different information for
+		 *    // sorting, filtering and display. In this case, currency (price)
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": function ( source, type, val ) {
+		 *            if (type === 'set') {
+		 *              source.price = val;
+		 *              // Store the computed dislay and filter values for efficiency
+		 *              source.price_display = val=="" ? "" : "$"+numberFormat(val);
+		 *              source.price_filter  = val=="" ? "" : "$"+numberFormat(val)+" "+val;
+		 *              return;
+		 *            }
+		 *            else if (type === 'display') {
+		 *              return source.price_display;
+		 *            }
+		 *            else if (type === 'filter') {
+		 *              return source.price_filter;
+		 *            }
+		 *            // 'sort', 'type' and undefined all just use the integer
+		 *            return source.price;
+		 *          }
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using default content
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": null,
+		 *          "defaultContent": "Click to edit"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using array notation - outputting a list from an array
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": "name[, ]"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 */
+		"mData": null,
+	
+	
+		/**
+		 * This property is the rendering partner to `data` and it is suggested that
+		 * when you want to manipulate data for display (including filtering,
+		 * sorting etc) without altering the underlying data for the table, use this
+		 * property. `render` can be considered to be the the read only companion to
+		 * `data` which is read / write (then as such more complex). Like `data`
+		 * this option can be given in a number of different ways to effect its
+		 * behaviour:
+		 *
+		 * * `integer` - treated as an array index for the data source. This is the
+		 *   default that DataTables uses (incrementally increased for each column).
+		 * * `string` - read an object property from the data source. There are
+		 *   three 'special' options that can be used in the string to alter how
+		 *   DataTables reads the data from the source object:
+		 *    * `.` - Dotted Javascript notation. Just as you use a `.` in
+		 *      Javascript to read from nested objects, so to can the options
+		 *      specified in `data`. For example: `browser.version` or
+		 *      `browser.name`. If your object parameter name contains a period, use
+		 *      `\\` to escape it - i.e. `first\\.name`.
+		 *    * `[]` - Array notation. DataTables can automatically combine data
+		 *      from and array source, joining the data with the characters provided
+		 *      between the two brackets. For example: `name[, ]` would provide a
+		 *      comma-space separated list from the source array. If no characters
+		 *      are provided between the brackets, the original array source is
+		 *      returned.
+		 *    * `()` - Function notation. Adding `()` to the end of a parameter will
+		 *      execute a function of the name given. For example: `browser()` for a
+		 *      simple function on the data source, `browser.version()` for a
+		 *      function in a nested property or even `browser().version` to get an
+		 *      object property if the function called returns an object.
+		 * * `object` - use different data for the different data types requested by
+		 *   DataTables ('filter', 'display', 'type' or 'sort'). The property names
+		 *   of the object is the data type the property refers to and the value can
+		 *   defined using an integer, string or function using the same rules as
+		 *   `render` normally does. Note that an `_` option _must_ be specified.
+		 *   This is the default value to use if you haven't specified a value for
+		 *   the data type requested by DataTables.
+		 * * `function` - the function given will be executed whenever DataTables
+		 *   needs to set or get the data for a cell in the column. The function
+		 *   takes three parameters:
+		 *    * Parameters:
+		 *      * {array|object} The data source for the row (based on `data`)
+		 *      * {string} The type call data requested - this will be 'filter',
+		 *        'display', 'type' or 'sort'.
+		 *      * {array|object} The full data source for the row (not based on
+		 *        `data`)
+		 *    * Return:
+		 *      * The return value from the function is what will be used for the
+		 *        data requested.
+		 *
+		 *  @type string|int|function|object|null
+		 *  @default null Use the data source value.
+		 *
+		 *  @name DataTable.defaults.column.render
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Create a comma separated list from an array of objects
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajaxSource": "sources/deep.txt",
+		 *        "columns": [
+		 *          { "data": "engine" },
+		 *          { "data": "browser" },
+		 *          {
+		 *            "data": "platform",
+		 *            "render": "[, ].name"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Execute a function to obtain data
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": null, // Use the full data source object for the renderer's source
+		 *          "render": "browserName()"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // As an object, extracting different data for the different types
+		 *    // This would be used with a data source such as:
+		 *    //   { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" }
+		 *    // Here the `phone` integer is used for sorting and type detection, while `phone_filter`
+		 *    // (which has both forms) is used for filtering for if a user inputs either format, while
+		 *    // the formatted phone number is the one that is shown in the table.
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": null, // Use the full data source object for the renderer's source
+		 *          "render": {
+		 *            "_": "phone",
+		 *            "filter": "phone_filter",
+		 *            "display": "phone_display"
+		 *          }
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Use as a function to create a link from the data source
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": "download_link",
+		 *          "render": function ( data, type, full ) {
+		 *            return '<a href="'+data+'">Download</a>';
+		 *          }
+		 *        } ]
+		 *      } );
+		 *    } );
+		 */
+		"mRender": null,
+	
+	
+		/**
+		 * Change the cell type created for the column - either TD cells or TH cells. This
+		 * can be useful as TH cells have semantic meaning in the table body, allowing them
+		 * to act as a header for a row (you may wish to add scope='row' to the TH elements).
+		 *  @type string
+		 *  @default td
+		 *
+		 *  @name DataTable.defaults.column.cellType
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Make the first column use TH cells
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "cellType": "th"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 */
+		"sCellType": "td",
+	
+	
+		/**
+		 * Class to give to each cell in this column.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *
+		 *  @name DataTable.defaults.column.class
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "class": "my_class", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "class": "my_class" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sClass": "",
+	
+		/**
+		 * When DataTables calculates the column widths to assign to each column,
+		 * it finds the longest string in each column and then constructs a
+		 * temporary table and reads the widths from that. The problem with this
+		 * is that "mmm" is much wider then "iiii", but the latter is a longer
+		 * string - thus the calculation can go wrong (doing it properly and putting
+		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
+		 * a "work around" we provide this option. It will append its value to the
+		 * text that is found to be the longest string for the column - i.e. padding.
+		 * Generally you shouldn't need this!
+		 *  @type string
+		 *  @default <i>Empty string<i>
+		 *
+		 *  @name DataTable.defaults.column.contentPadding
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          {
+		 *            "contentPadding": "mmm"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sContentPadding": "",
+	
+	
+		/**
+		 * Allows a default value to be given for a column's data, and will be used
+		 * whenever a null data source is encountered (this can be because `data`
+		 * is set to null, or because the data source itself is null).
+		 *  @type string
+		 *  @default null
+		 *
+		 *  @name DataTable.defaults.column.defaultContent
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          {
+		 *            "data": null,
+		 *            "defaultContent": "Edit",
+		 *            "targets": [ -1 ]
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          {
+		 *            "data": null,
+		 *            "defaultContent": "Edit"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sDefaultContent": null,
+	
+	
+		/**
+		 * This parameter is only used in DataTables' server-side processing. It can
+		 * be exceptionally useful to know what columns are being displayed on the
+		 * client side, and to map these to database fields. When defined, the names
+		 * also allow DataTables to reorder information from the server if it comes
+		 * back in an unexpected order (i.e. if you switch your columns around on the
+		 * client-side, your server-side code does not also need updating).
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *
+		 *  @name DataTable.defaults.column.name
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "name": "engine", "targets": [ 0 ] },
+		 *          { "name": "browser", "targets": [ 1 ] },
+		 *          { "name": "platform", "targets": [ 2 ] },
+		 *          { "name": "version", "targets": [ 3 ] },
+		 *          { "name": "grade", "targets": [ 4 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "name": "engine" },
+		 *          { "name": "browser" },
+		 *          { "name": "platform" },
+		 *          { "name": "version" },
+		 *          { "name": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sName": "",
+	
+	
+		/**
+		 * Defines a data source type for the ordering which can be used to read
+		 * real-time information from the table (updating the internally cached
+		 * version) prior to ordering. This allows ordering to occur on user
+		 * editable elements such as form inputs.
+		 *  @type string
+		 *  @default std
+		 *
+		 *  @name DataTable.defaults.column.orderDataType
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderDataType": "dom-text", "targets": [ 2, 3 ] },
+		 *          { "type": "numeric", "targets": [ 3 ] },
+		 *          { "orderDataType": "dom-select", "targets": [ 4 ] },
+		 *          { "orderDataType": "dom-checkbox", "targets": [ 5 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          null,
+		 *          { "orderDataType": "dom-text" },
+		 *          { "orderDataType": "dom-text", "type": "numeric" },
+		 *          { "orderDataType": "dom-select" },
+		 *          { "orderDataType": "dom-checkbox" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sSortDataType": "std",
+	
+	
+		/**
+		 * The title of this column.
+		 *  @type string
+		 *  @default null <i>Derived from the 'TH' value for this column in the
+		 *    original HTML table.</i>
+		 *
+		 *  @name DataTable.defaults.column.title
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "title": "My column title", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "title": "My column title" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sTitle": null,
+	
+	
+		/**
+		 * The type allows you to specify how the data for this column will be
+		 * ordered. Four types (string, numeric, date and html (which will strip
+		 * HTML tags before ordering)) are currently available. Note that only date
+		 * formats understood by Javascript's Date() object will be accepted as type
+		 * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string',
+		 * 'numeric', 'date' or 'html' (by default). Further types can be adding
+		 * through plug-ins.
+		 *  @type string
+		 *  @default null <i>Auto-detected from raw data</i>
+		 *
+		 *  @name DataTable.defaults.column.type
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "type": "html", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "type": "html" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sType": null,
+	
+	
+		/**
+		 * Defining the width of the column, this parameter may take any CSS value
+		 * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not
+		 * been given a specific width through this interface ensuring that the table
+		 * remains readable.
+		 *  @type string
+		 *  @default null <i>Automatic</i>
+		 *
+		 *  @name DataTable.defaults.column.width
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "width": "20%", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "width": "20%" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sWidth": null
+	};
+	
+	_fnHungarianMap( DataTable.defaults.column );
+	
+	
+	
+	/**
+	 * DataTables settings object - this holds all the information needed for a
+	 * given table, including configuration, data and current application of the
+	 * table options. DataTables does not have a single instance for each DataTable
+	 * with the settings attached to that instance, but rather instances of the
+	 * DataTable "class" are created on-the-fly as needed (typically by a
+	 * $().dataTable() call) and the settings object is then applied to that
+	 * instance.
+	 *
+	 * Note that this object is related to {@link DataTable.defaults} but this
+	 * one is the internal data store for DataTables's cache of columns. It should
+	 * NOT be manipulated outside of DataTables. Any configuration should be done
+	 * through the initialisation options.
+	 *  @namespace
+	 *  @todo Really should attach the settings object to individual instances so we
+	 *    don't need to create new instances on each $().dataTable() call (if the
+	 *    table already exists). It would also save passing oSettings around and
+	 *    into every single function. However, this is a very significant
+	 *    architecture change for DataTables and will almost certainly break
+	 *    backwards compatibility with older installations. This is something that
+	 *    will be done in 2.0.
+	 */
+	DataTable.models.oSettings = {
+		/**
+		 * Primary features of DataTables and their enablement state.
+		 *  @namespace
+		 */
+		"oFeatures": {
+	
+			/**
+			 * Flag to say if DataTables should automatically try to calculate the
+			 * optimum table and columns widths (true) or not (false).
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bAutoWidth": null,
+	
+			/**
+			 * Delay the creation of TR and TD elements until they are actually
+			 * needed by a driven page draw. This can give a significant speed
+			 * increase for Ajax source and Javascript source data, but makes no
+			 * difference at all fro DOM and server-side processing tables.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bDeferRender": null,
+	
+			/**
+			 * Enable filtering on the table or not. Note that if this is disabled
+			 * then there is no filtering at all on the table, including fnFilter.
+			 * To just remove the filtering input use sDom and remove the 'f' option.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bFilter": null,
+	
+			/**
+			 * Table information element (the 'Showing x of y records' div) enable
+			 * flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bInfo": null,
+	
+			/**
+			 * Present a user control allowing the end user to change the page size
+			 * when pagination is enabled.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bLengthChange": null,
+	
+			/**
+			 * Pagination enabled or not. Note that if this is disabled then length
+			 * changing must also be disabled.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bPaginate": null,
+	
+			/**
+			 * Processing indicator enable flag whenever DataTables is enacting a
+			 * user request - typically an Ajax request for server-side processing.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bProcessing": null,
+	
+			/**
+			 * Server-side processing enabled flag - when enabled DataTables will
+			 * get all data from the server for every draw - there is no filtering,
+			 * sorting or paging done on the client-side.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bServerSide": null,
+	
+			/**
+			 * Sorting enablement flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSort": null,
+	
+			/**
+			 * Multi-column sorting
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSortMulti": null,
+	
+			/**
+			 * Apply a class to the columns which are being sorted to provide a
+			 * visual highlight or not. This can slow things down when enabled since
+			 * there is a lot of DOM interaction.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSortClasses": null,
+	
+			/**
+			 * State saving enablement flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bStateSave": null
+		},
+	
+	
+		/**
+		 * Scrolling settings for a table.
+		 *  @namespace
+		 */
+		"oScroll": {
+			/**
+			 * When the table is shorter in height than sScrollY, collapse the
+			 * table container down to the height of the table (when true).
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bCollapse": null,
+	
+			/**
+			 * Width of the scrollbar for the web-browser's platform. Calculated
+			 * during table initialisation.
+			 *  @type int
+			 *  @default 0
+			 */
+			"iBarWidth": 0,
+	
+			/**
+			 * Viewport width for horizontal scrolling. Horizontal scrolling is
+			 * disabled if an empty string.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 */
+			"sX": null,
+	
+			/**
+			 * Width to expand the table to when using x-scrolling. Typically you
+			 * should not need to use this.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 *  @deprecated
+			 */
+			"sXInner": null,
+	
+			/**
+			 * Viewport height for vertical scrolling. Vertical scrolling is disabled
+			 * if an empty string.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 */
+			"sY": null
+		},
+	
+		/**
+		 * Language information for the table.
+		 *  @namespace
+		 *  @extends DataTable.defaults.oLanguage
+		 */
+		"oLanguage": {
+			/**
+			 * Information callback function. See
+			 * {@link DataTable.defaults.fnInfoCallback}
+			 *  @type function
+			 *  @default null
+			 */
+			"fnInfoCallback": null
+		},
+	
+		/**
+		 * Browser support parameters
+		 *  @namespace
+		 */
+		"oBrowser": {
+			/**
+			 * Indicate if the browser incorrectly calculates width:100% inside a
+			 * scrolling element (IE6/7)
+			 *  @type boolean
+			 *  @default false
+			 */
+			"bScrollOversize": false,
+	
+			/**
+			 * Determine if the vertical scrollbar is on the right or left of the
+			 * scrolling container - needed for rtl language layout, although not
+			 * all browsers move the scrollbar (Safari).
+			 *  @type boolean
+			 *  @default false
+			 */
+			"bScrollbarLeft": false,
+	
+			/**
+			 * Flag for if `getBoundingClientRect` is fully supported or not
+			 *  @type boolean
+			 *  @default false
+			 */
+			"bBounding": false,
+	
+			/**
+			 * Browser scrollbar width
+			 *  @type integer
+			 *  @default 0
+			 */
+			"barWidth": 0
+		},
+	
+	
+		"ajax": null,
+	
+	
+		/**
+		 * Array referencing the nodes which are used for the features. The
+		 * parameters of this object match what is allowed by sDom - i.e.
+		 *   <ul>
+		 *     <li>'l' - Length changing</li>
+		 *     <li>'f' - Filtering input</li>
+		 *     <li>'t' - The table!</li>
+		 *     <li>'i' - Information</li>
+		 *     <li>'p' - Pagination</li>
+		 *     <li>'r' - pRocessing</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aanFeatures": [],
+	
+		/**
+		 * Store data information - see {@link DataTable.models.oRow} for detailed
+		 * information.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoData": [],
+	
+		/**
+		 * Array of indexes which are in the current display (after filtering etc)
+		 *  @type array
+		 *  @default []
+		 */
+		"aiDisplay": [],
+	
+		/**
+		 * Array of indexes for display - no filtering
+		 *  @type array
+		 *  @default []
+		 */
+		"aiDisplayMaster": [],
+	
+		/**
+		 * Map of row ids to data indexes
+		 *  @type object
+		 *  @default {}
+		 */
+		"aIds": {},
+	
+		/**
+		 * Store information about each column that is in use
+		 *  @type array
+		 *  @default []
+		 */
+		"aoColumns": [],
+	
+		/**
+		 * Store information about the table's header
+		 *  @type array
+		 *  @default []
+		 */
+		"aoHeader": [],
+	
+		/**
+		 * Store information about the table's footer
+		 *  @type array
+		 *  @default []
+		 */
+		"aoFooter": [],
+	
+		/**
+		 * Store the applied global search information in case we want to force a
+		 * research or compare the old search to a new one.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @namespace
+		 *  @extends DataTable.models.oSearch
+		 */
+		"oPreviousSearch": {},
+	
+		/**
+		 * Store the applied search for each column - see
+		 * {@link DataTable.models.oSearch} for the format that is used for the
+		 * filtering information for each column.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoPreSearchCols": [],
+	
+		/**
+		 * Sorting that is applied to the table. Note that the inner arrays are
+		 * used in the following manner:
+		 * <ul>
+		 *   <li>Index 0 - column number</li>
+		 *   <li>Index 1 - current sorting direction</li>
+		 * </ul>
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @todo These inner arrays should really be objects
+		 */
+		"aaSorting": null,
+	
+		/**
+		 * Sorting that is always applied to the table (i.e. prefixed in front of
+		 * aaSorting).
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"aaSortingFixed": [],
+	
+		/**
+		 * Classes to use for the striping of a table.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"asStripeClasses": null,
+	
+		/**
+		 * If restoring a table - we should restore its striping classes as well
+		 *  @type array
+		 *  @default []
+		 */
+		"asDestroyStripes": [],
+	
+		/**
+		 * If restoring a table - we should restore its width
+		 *  @type int
+		 *  @default 0
+		 */
+		"sDestroyWidth": 0,
+	
+		/**
+		 * Callback functions array for every time a row is inserted (i.e. on a draw).
+		 *  @type array
+		 *  @default []
+		 */
+		"aoRowCallback": [],
+	
+		/**
+		 * Callback functions for the header on each draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoHeaderCallback": [],
+	
+		/**
+		 * Callback function for the footer on each draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoFooterCallback": [],
+	
+		/**
+		 * Array of callback functions for draw callback functions
+		 *  @type array
+		 *  @default []
+		 */
+		"aoDrawCallback": [],
+	
+		/**
+		 * Array of callback functions for row created function
+		 *  @type array
+		 *  @default []
+		 */
+		"aoRowCreatedCallback": [],
+	
+		/**
+		 * Callback functions for just before the table is redrawn. A return of
+		 * false will be used to cancel the draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoPreDrawCallback": [],
+	
+		/**
+		 * Callback functions for when the table has been initialised.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoInitComplete": [],
+	
+	
+		/**
+		 * Callbacks for modifying the settings to be stored for state saving, prior to
+		 * saving state.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateSaveParams": [],
+	
+		/**
+		 * Callbacks for modifying the settings that have been stored for state saving
+		 * prior to using the stored values to restore the state.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoadParams": [],
+	
+		/**
+		 * Callbacks for operating on the settings object once the saved state has been
+		 * loaded
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoaded": [],
+	
+		/**
+		 * Cache the table ID for quick access
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sTableId": "",
+	
+		/**
+		 * The TABLE node for the main table
+		 *  @type node
+		 *  @default null
+		 */
+		"nTable": null,
+	
+		/**
+		 * Permanent ref to the thead element
+		 *  @type node
+		 *  @default null
+		 */
+		"nTHead": null,
+	
+		/**
+		 * Permanent ref to the tfoot element - if it exists
+		 *  @type node
+		 *  @default null
+		 */
+		"nTFoot": null,
+	
+		/**
+		 * Permanent ref to the tbody element
+		 *  @type node
+		 *  @default null
+		 */
+		"nTBody": null,
+	
+		/**
+		 * Cache the wrapper node (contains all DataTables controlled elements)
+		 *  @type node
+		 *  @default null
+		 */
+		"nTableWrapper": null,
+	
+		/**
+		 * Indicate if when using server-side processing the loading of data
+		 * should be deferred until the second draw.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bDeferLoading": false,
+	
+		/**
+		 * Indicate if all required information has been read in
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bInitialised": false,
+	
+		/**
+		 * Information about open rows. Each object in the array has the parameters
+		 * 'nTr' and 'nParent'
+		 *  @type array
+		 *  @default []
+		 */
+		"aoOpenRows": [],
+	
+		/**
+		 * Dictate the positioning of DataTables' control elements - see
+		 * {@link DataTable.model.oInit.sDom}.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default null
+		 */
+		"sDom": null,
+	
+		/**
+		 * Search delay (in mS)
+		 *  @type integer
+		 *  @default null
+		 */
+		"searchDelay": null,
+	
+		/**
+		 * Which type of pagination should be used.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default two_button
+		 */
+		"sPaginationType": "two_button",
+	
+		/**
+		 * The state duration (for `stateSave`) in seconds.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type int
+		 *  @default 0
+		 */
+		"iStateDuration": 0,
+	
+		/**
+		 * Array of callback functions for state saving. Each array element is an
+		 * object with the following parameters:
+		 *   <ul>
+		 *     <li>function:fn - function to call. Takes two parameters, oSettings
+		 *       and the JSON string to save that has been thus far created. Returns
+		 *       a JSON string to be inserted into a json object
+		 *       (i.e. '"param": [ 0, 1, 2]')</li>
+		 *     <li>string:sName - name of callback</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateSave": [],
+	
+		/**
+		 * Array of callback functions for state loading. Each array element is an
+		 * object with the following parameters:
+		 *   <ul>
+		 *     <li>function:fn - function to call. Takes two parameters, oSettings
+		 *       and the object stored. May return false to cancel state loading</li>
+		 *     <li>string:sName - name of callback</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoad": [],
+	
+		/**
+		 * State that was saved. Useful for back reference
+		 *  @type object
+		 *  @default null
+		 */
+		"oSavedState": null,
+	
+		/**
+		 * State that was loaded. Useful for back reference
+		 *  @type object
+		 *  @default null
+		 */
+		"oLoadedState": null,
+	
+		/**
+		 * Source url for AJAX data for the table.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default null
+		 */
+		"sAjaxSource": null,
+	
+		/**
+		 * Property from a given object from which to read the table data from. This
+		 * can be an empty string (when not server-side processing), in which case
+		 * it is  assumed an an array is given directly.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 */
+		"sAjaxDataProp": null,
+	
+		/**
+		 * Note if draw should be blocked while getting data
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bAjaxDataGet": true,
+	
+		/**
+		 * The last jQuery XHR object that was used for server-side data gathering.
+		 * This can be used for working with the XHR information in one of the
+		 * callbacks
+		 *  @type object
+		 *  @default null
+		 */
+		"jqXHR": null,
+	
+		/**
+		 * JSON returned from the server in the last Ajax request
+		 *  @type object
+		 *  @default undefined
+		 */
+		"json": undefined,
+	
+		/**
+		 * Data submitted as part of the last Ajax request
+		 *  @type object
+		 *  @default undefined
+		 */
+		"oAjaxData": undefined,
+	
+		/**
+		 * Function to get the server-side data.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 */
+		"fnServerData": null,
+	
+		/**
+		 * Functions which are called prior to sending an Ajax request so extra
+		 * parameters can easily be sent to the server
+		 *  @type array
+		 *  @default []
+		 */
+		"aoServerParams": [],
+	
+		/**
+		 * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if
+		 * required).
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 */
+		"sServerMethod": null,
+	
+		/**
+		 * Format numbers for display.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 */
+		"fnFormatNumber": null,
+	
+		/**
+		 * List of options that can be used for the user selectable length menu.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"aLengthMenu": null,
+	
+		/**
+		 * Counter for the draws that the table does. Also used as a tracker for
+		 * server-side processing
+		 *  @type int
+		 *  @default 0
+		 */
+		"iDraw": 0,
+	
+		/**
+		 * Indicate if a redraw is being done - useful for Ajax
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bDrawing": false,
+	
+		/**
+		 * Draw index (iDraw) of the last error when parsing the returned data
+		 *  @type int
+		 *  @default -1
+		 */
+		"iDrawError": -1,
+	
+		/**
+		 * Paging display length
+		 *  @type int
+		 *  @default 10
+		 */
+		"_iDisplayLength": 10,
+	
+		/**
+		 * Paging start point - aiDisplay index
+		 *  @type int
+		 *  @default 0
+		 */
+		"_iDisplayStart": 0,
+	
+		/**
+		 * Server-side processing - number of records in the result set
+		 * (i.e. before filtering), Use fnRecordsTotal rather than
+		 * this property to get the value of the number of records, regardless of
+		 * the server-side processing setting.
+		 *  @type int
+		 *  @default 0
+		 *  @private
+		 */
+		"_iRecordsTotal": 0,
+	
+		/**
+		 * Server-side processing - number of records in the current display set
+		 * (i.e. after filtering). Use fnRecordsDisplay rather than
+		 * this property to get the value of the number of records, regardless of
+		 * the server-side processing setting.
+		 *  @type boolean
+		 *  @default 0
+		 *  @private
+		 */
+		"_iRecordsDisplay": 0,
+	
+		/**
+		 * The classes to use for the table
+		 *  @type object
+		 *  @default {}
+		 */
+		"oClasses": {},
+	
+		/**
+		 * Flag attached to the settings object so you can check in the draw
+		 * callback if filtering has been done in the draw. Deprecated in favour of
+		 * events.
+		 *  @type boolean
+		 *  @default false
+		 *  @deprecated
+		 */
+		"bFiltered": false,
+	
+		/**
+		 * Flag attached to the settings object so you can check in the draw
+		 * callback if sorting has been done in the draw. Deprecated in favour of
+		 * events.
+		 *  @type boolean
+		 *  @default false
+		 *  @deprecated
+		 */
+		"bSorted": false,
+	
+		/**
+		 * Indicate that if multiple rows are in the header and there is more than
+		 * one unique cell per column, if the top one (true) or bottom one (false)
+		 * should be used for sorting / title by DataTables.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 */
+		"bSortCellsTop": null,
+	
+		/**
+		 * Initialisation object that is used for the table
+		 *  @type object
+		 *  @default null
+		 */
+		"oInit": null,
+	
+		/**
+		 * Destroy callback functions - for plug-ins to attach themselves to the
+		 * destroy so they can clean up markup and events.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoDestroyCallback": [],
+	
+	
+		/**
+		 * Get the number of records in the current record set, before filtering
+		 *  @type function
+		 */
+		"fnRecordsTotal": function ()
+		{
+			return _fnDataSource( this ) == 'ssp' ?
+				this._iRecordsTotal * 1 :
+				this.aiDisplayMaster.length;
+		},
+	
+		/**
+		 * Get the number of records in the current record set, after filtering
+		 *  @type function
+		 */
+		"fnRecordsDisplay": function ()
+		{
+			return _fnDataSource( this ) == 'ssp' ?
+				this._iRecordsDisplay * 1 :
+				this.aiDisplay.length;
+		},
+	
+		/**
+		 * Get the display end point - aiDisplay index
+		 *  @type function
+		 */
+		"fnDisplayEnd": function ()
+		{
+			var
+				len      = this._iDisplayLength,
+				start    = this._iDisplayStart,
+				calc     = start + len,
+				records  = this.aiDisplay.length,
+				features = this.oFeatures,
+				paginate = features.bPaginate;
+	
+			if ( features.bServerSide ) {
+				return paginate === false || len === -1 ?
+					start + records :
+					Math.min( start+len, this._iRecordsDisplay );
+			}
+			else {
+				return ! paginate || calc>records || len===-1 ?
+					records :
+					calc;
+			}
+		},
+	
+		/**
+		 * The DataTables object for this table
+		 *  @type object
+		 *  @default null
+		 */
+		"oInstance": null,
+	
+		/**
+		 * Unique identifier for each instance of the DataTables object. If there
+		 * is an ID on the table node, then it takes that value, otherwise an
+		 * incrementing internal counter is used.
+		 *  @type string
+		 *  @default null
+		 */
+		"sInstance": null,
+	
+		/**
+		 * tabindex attribute value that is added to DataTables control elements, allowing
+		 * keyboard navigation of the table and its controls.
+		 */
+		"iTabIndex": 0,
+	
+		/**
+		 * DIV container for the footer scrolling table if scrolling
+		 */
+		"nScrollHead": null,
+	
+		/**
+		 * DIV container for the footer scrolling table if scrolling
+		 */
+		"nScrollFoot": null,
+	
+		/**
+		 * Last applied sort
+		 *  @type array
+		 *  @default []
+		 */
+		"aLastSort": [],
+	
+		/**
+		 * Stored plug-in instances
+		 *  @type object
+		 *  @default {}
+		 */
+		"oPlugins": {},
+	
+		/**
+		 * Function used to get a row's id from the row's data
+		 *  @type function
+		 *  @default null
+		 */
+		"rowIdFn": null,
+	
+		/**
+		 * Data location where to store a row's id
+		 *  @type string
+		 *  @default null
+		 */
+		"rowId": null
+	};
+
+	/**
+	 * Extension object for DataTables that is used to provide all extension
+	 * options.
+	 *
+	 * Note that the `DataTable.ext` object is available through
+	 * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is
+	 * also aliased to `jQuery.fn.dataTableExt` for historic reasons.
+	 *  @namespace
+	 *  @extends DataTable.models.ext
+	 */
+	
+	
+	/**
+	 * DataTables extensions
+	 * 
+	 * This namespace acts as a collection area for plug-ins that can be used to
+	 * extend DataTables capabilities. Indeed many of the build in methods
+	 * use this method to provide their own capabilities (sorting methods for
+	 * example).
+	 *
+	 * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy
+	 * reasons
+	 *
+	 *  @namespace
+	 */
+	DataTable.ext = _ext = {
+		/**
+		 * Buttons. For use with the Buttons extension for DataTables. This is
+		 * defined here so other extensions can define buttons regardless of load
+		 * order. It is _not_ used by DataTables core.
+		 *
+		 *  @type object
+		 *  @default {}
+		 */
+		buttons: {},
+	
+	
+		/**
+		 * Element class names
+		 *
+		 *  @type object
+		 *  @default {}
+		 */
+		classes: {},
+	
+	
+		/**
+		 * DataTables build type (expanded by the download builder)
+		 *
+		 *  @type string
+		 */
+		builder: "-source-",
+	
+	
+		/**
+		 * Error reporting.
+		 * 
+		 * How should DataTables report an error. Can take the value 'alert',
+		 * 'throw', 'none' or a function.
+		 *
+		 *  @type string|function
+		 *  @default alert
+		 */
+		errMode: "alert",
+	
+	
+		/**
+		 * Feature plug-ins.
+		 * 
+		 * This is an array of objects which describe the feature plug-ins that are
+		 * available to DataTables. These feature plug-ins are then available for
+		 * use through the `dom` initialisation option.
+		 * 
+		 * Each feature plug-in is described by an object which must have the
+		 * following properties:
+		 * 
+		 * * `fnInit` - function that is used to initialise the plug-in,
+		 * * `cFeature` - a character so the feature can be enabled by the `dom`
+		 *   instillation option. This is case sensitive.
+		 *
+		 * The `fnInit` function has the following input parameters:
+		 *
+		 * 1. `{object}` DataTables settings object: see
+		 *    {@link DataTable.models.oSettings}
+		 *
+		 * And the following return is expected:
+		 * 
+		 * * {node|null} The element which contains your feature. Note that the
+		 *   return may also be void if your plug-in does not require to inject any
+		 *   DOM elements into DataTables control (`dom`) - for example this might
+		 *   be useful when developing a plug-in which allows table control via
+		 *   keyboard entry
+		 *
+		 *  @type array
+		 *
+		 *  @example
+		 *    $.fn.dataTable.ext.features.push( {
+		 *      "fnInit": function( oSettings ) {
+		 *        return new TableTools( { "oDTSettings": oSettings } );
+		 *      },
+		 *      "cFeature": "T"
+		 *    } );
+		 */
+		feature: [],
+	
+	
+		/**
+		 * Row searching.
+		 * 
+		 * This method of searching is complimentary to the default type based
+		 * searching, and a lot more comprehensive as it allows you complete control
+		 * over the searching logic. Each element in this array is a function
+		 * (parameters described below) that is called for every row in the table,
+		 * and your logic decides if it should be included in the searching data set
+		 * or not.
+		 *
+		 * Searching functions have the following input parameters:
+		 *
+		 * 1. `{object}` DataTables settings object: see
+		 *    {@link DataTable.models.oSettings}
+		 * 2. `{array|object}` Data for the row to be processed (same as the
+		 *    original format that was passed in as the data source, or an array
+		 *    from a DOM data source
+		 * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which
+		 *    can be useful to retrieve the `TR` element if you need DOM interaction.
+		 *
+		 * And the following return is expected:
+		 *
+		 * * {boolean} Include the row in the searched result set (true) or not
+		 *   (false)
+		 *
+		 * Note that as with the main search ability in DataTables, technically this
+		 * is "filtering", since it is subtractive. However, for consistency in
+		 * naming we call it searching here.
+		 *
+		 *  @type array
+		 *  @default []
+		 *
+		 *  @example
+		 *    // The following example shows custom search being applied to the
+		 *    // fourth column (i.e. the data[3] index) based on two input values
+		 *    // from the end-user, matching the data in a certain range.
+		 *    $.fn.dataTable.ext.search.push(
+		 *      function( settings, data, dataIndex ) {
+		 *        var min = document.getElementById('min').value * 1;
+		 *        var max = document.getElementById('max').value * 1;
+		 *        var version = data[3] == "-" ? 0 : data[3]*1;
+		 *
+		 *        if ( min == "" && max == "" ) {
+		 *          return true;
+		 *        }
+		 *        else if ( min == "" && version < max ) {
+		 *          return true;
+		 *        }
+		 *        else if ( min < version && "" == max ) {
+		 *          return true;
+		 *        }
+		 *        else if ( min < version && version < max ) {
+		 *          return true;
+		 *        }
+		 *        return false;
+		 *      }
+		 *    );
+		 */
+		search: [],
+	
+	
+		/**
+		 * Selector extensions
+		 *
+		 * The `selector` option can be used to extend the options available for the
+		 * selector modifier options (`selector-modifier` object data type) that
+		 * each of the three built in selector types offer (row, column and cell +
+		 * their plural counterparts). For example the Select extension uses this
+		 * mechanism to provide an option to select only rows, columns and cells
+		 * that have been marked as selected by the end user (`{selected: true}`),
+		 * which can be used in conjunction with the existing built in selector
+		 * options.
+		 *
+		 * Each property is an array to which functions can be pushed. The functions
+		 * take three attributes:
+		 *
+		 * * Settings object for the host table
+		 * * Options object (`selector-modifier` object type)
+		 * * Array of selected item indexes
+		 *
+		 * The return is an array of the resulting item indexes after the custom
+		 * selector has been applied.
+		 *
+		 *  @type object
+		 */
+		selector: {
+			cell: [],
+			column: [],
+			row: []
+		},
+	
+	
+		/**
+		 * Internal functions, exposed for used in plug-ins.
+		 * 
+		 * Please note that you should not need to use the internal methods for
+		 * anything other than a plug-in (and even then, try to avoid if possible).
+		 * The internal function may change between releases.
+		 *
+		 *  @type object
+		 *  @default {}
+		 */
+		internal: {},
+	
+	
+		/**
+		 * Legacy configuration options. Enable and disable legacy options that
+		 * are available in DataTables.
+		 *
+		 *  @type object
+		 */
+		legacy: {
+			/**
+			 * Enable / disable DataTables 1.9 compatible server-side processing
+			 * requests
+			 *
+			 *  @type boolean
+			 *  @default null
+			 */
+			ajax: null
+		},
+	
+	
+		/**
+		 * Pagination plug-in methods.
+		 * 
+		 * Each entry in this object is a function and defines which buttons should
+		 * be shown by the pagination rendering method that is used for the table:
+		 * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the
+		 * buttons are displayed in the document, while the functions here tell it
+		 * what buttons to display. This is done by returning an array of button
+		 * descriptions (what each button will do).
+		 *
+		 * Pagination types (the four built in options and any additional plug-in
+		 * options defined here) can be used through the `paginationType`
+		 * initialisation parameter.
+		 *
+		 * The functions defined take two parameters:
+		 *
+		 * 1. `{int} page` The current page index
+		 * 2. `{int} pages` The number of pages in the table
+		 *
+		 * Each function is expected to return an array where each element of the
+		 * array can be one of:
+		 *
+		 * * `first` - Jump to first page when activated
+		 * * `last` - Jump to last page when activated
+		 * * `previous` - Show previous page when activated
+		 * * `next` - Show next page when activated
+		 * * `{int}` - Show page of the index given
+		 * * `{array}` - A nested array containing the above elements to add a
+		 *   containing 'DIV' element (might be useful for styling).
+		 *
+		 * Note that DataTables v1.9- used this object slightly differently whereby
+		 * an object with two functions would be defined for each plug-in. That
+		 * ability is still supported by DataTables 1.10+ to provide backwards
+		 * compatibility, but this option of use is now decremented and no longer
+		 * documented in DataTables 1.10+.
+		 *
+		 *  @type object
+		 *  @default {}
+		 *
+		 *  @example
+		 *    // Show previous, next and current page buttons only
+		 *    $.fn.dataTableExt.oPagination.current = function ( page, pages ) {
+		 *      return [ 'previous', page, 'next' ];
+		 *    };
+		 */
+		pager: {},
+	
+	
+		renderer: {
+			pageButton: {},
+			header: {}
+		},
+	
+	
+		/**
+		 * Ordering plug-ins - custom data source
+		 * 
+		 * The extension options for ordering of data available here is complimentary
+		 * to the default type based ordering that DataTables typically uses. It
+		 * allows much greater control over the the data that is being used to
+		 * order a column, but is necessarily therefore more complex.
+		 * 
+		 * This type of ordering is useful if you want to do ordering based on data
+		 * live from the DOM (for example the contents of an 'input' element) rather
+		 * than just the static string that DataTables knows of.
+		 * 
+		 * The way these plug-ins work is that you create an array of the values you
+		 * wish to be ordering for the column in question and then return that
+		 * array. The data in the array much be in the index order of the rows in
+		 * the table (not the currently ordering order!). Which order data gathering
+		 * function is run here depends on the `dt-init columns.orderDataType`
+		 * parameter that is used for the column (if any).
+		 *
+		 * The functions defined take two parameters:
+		 *
+		 * 1. `{object}` DataTables settings object: see
+		 *    {@link DataTable.models.oSettings}
+		 * 2. `{int}` Target column index
+		 *
+		 * Each function is expected to return an array:
+		 *
+		 * * `{array}` Data for the column to be ordering upon
+		 *
+		 *  @type array
+		 *
+		 *  @example
+		 *    // Ordering using `input` node values
+		 *    $.fn.dataTable.ext.order['dom-text'] = function  ( settings, col )
+		 *    {
+		 *      return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+		 *        return $('input', td).val();
+		 *      } );
+		 *    }
+		 */
+		order: {},
+	
+	
+		/**
+		 * Type based plug-ins.
+		 *
+		 * Each column in DataTables has a type assigned to it, either by automatic
+		 * detection or by direct assignment using the `type` option for the column.
+		 * The type of a column will effect how it is ordering and search (plug-ins
+		 * can also make use of the column type if required).
+		 *
+		 * @namespace
+		 */
+		type: {
+			/**
+			 * Type detection functions.
+			 *
+			 * The functions defined in this object are used to automatically detect
+			 * a column's type, making initialisation of DataTables super easy, even
+			 * when complex data is in the table.
+			 *
+			 * The functions defined take two parameters:
+			 *
+		     *  1. `{*}` Data from the column cell to be analysed
+		     *  2. `{settings}` DataTables settings object. This can be used to
+		     *     perform context specific type detection - for example detection
+		     *     based on language settings such as using a comma for a decimal
+		     *     place. Generally speaking the options from the settings will not
+		     *     be required
+			 *
+			 * Each function is expected to return:
+			 *
+			 * * `{string|null}` Data type detected, or null if unknown (and thus
+			 *   pass it on to the other type detection functions.
+			 *
+			 *  @type array
+			 *
+			 *  @example
+			 *    // Currency type detection plug-in:
+			 *    $.fn.dataTable.ext.type.detect.push(
+			 *      function ( data, settings ) {
+			 *        // Check the numeric part
+			 *        if ( ! data.substring(1).match(/[0-9]/) ) {
+			 *          return null;
+			 *        }
+			 *
+			 *        // Check prefixed by currency
+			 *        if ( data.charAt(0) == '$' || data.charAt(0) == '&pound;' ) {
+			 *          return 'currency';
+			 *        }
+			 *        return null;
+			 *      }
+			 *    );
+			 */
+			detect: [],
+	
+	
+			/**
+			 * Type based search formatting.
+			 *
+			 * The type based searching functions can be used to pre-format the
+			 * data to be search on. For example, it can be used to strip HTML
+			 * tags or to de-format telephone numbers for numeric only searching.
+			 *
+			 * Note that is a search is not defined for a column of a given type,
+			 * no search formatting will be performed.
+			 * 
+			 * Pre-processing of searching data plug-ins - When you assign the sType
+			 * for a column (or have it automatically detected for you by DataTables
+			 * or a type detection plug-in), you will typically be using this for
+			 * custom sorting, but it can also be used to provide custom searching
+			 * by allowing you to pre-processing the data and returning the data in
+			 * the format that should be searched upon. This is done by adding
+			 * functions this object with a parameter name which matches the sType
+			 * for that target column. This is the corollary of <i>afnSortData</i>
+			 * for searching data.
+			 *
+			 * The functions defined take a single parameter:
+			 *
+		     *  1. `{*}` Data from the column cell to be prepared for searching
+			 *
+			 * Each function is expected to return:
+			 *
+			 * * `{string|null}` Formatted string that will be used for the searching.
+			 *
+			 *  @type object
+			 *  @default {}
+			 *
+			 *  @example
+			 *    $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) {
+			 *      return d.replace(/\n/g," ").replace( /<.*?>/g, "" );
+			 *    }
+			 */
+			search: {},
+	
+	
+			/**
+			 * Type based ordering.
+			 *
+			 * The column type tells DataTables what ordering to apply to the table
+			 * when a column is sorted upon. The order for each type that is defined,
+			 * is defined by the functions available in this object.
+			 *
+			 * Each ordering option can be described by three properties added to
+			 * this object:
+			 *
+			 * * `{type}-pre` - Pre-formatting function
+			 * * `{type}-asc` - Ascending order function
+			 * * `{type}-desc` - Descending order function
+			 *
+			 * All three can be used together, only `{type}-pre` or only
+			 * `{type}-asc` and `{type}-desc` together. It is generally recommended
+			 * that only `{type}-pre` is used, as this provides the optimal
+			 * implementation in terms of speed, although the others are provided
+			 * for compatibility with existing Javascript sort functions.
+			 *
+			 * `{type}-pre`: Functions defined take a single parameter:
+			 *
+		     *  1. `{*}` Data from the column cell to be prepared for ordering
+			 *
+			 * And return:
+			 *
+			 * * `{*}` Data to be sorted upon
+			 *
+			 * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort
+			 * functions, taking two parameters:
+			 *
+		     *  1. `{*}` Data to compare to the second parameter
+		     *  2. `{*}` Data to compare to the first parameter
+			 *
+			 * And returning:
+			 *
+			 * * `{*}` Ordering match: <0 if first parameter should be sorted lower
+			 *   than the second parameter, ===0 if the two parameters are equal and
+			 *   >0 if the first parameter should be sorted height than the second
+			 *   parameter.
+			 * 
+			 *  @type object
+			 *  @default {}
+			 *
+			 *  @example
+			 *    // Numeric ordering of formatted numbers with a pre-formatter
+			 *    $.extend( $.fn.dataTable.ext.type.order, {
+			 *      "string-pre": function(x) {
+			 *        a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" );
+			 *        return parseFloat( a );
+			 *      }
+			 *    } );
+			 *
+			 *  @example
+			 *    // Case-sensitive string ordering, with no pre-formatting method
+			 *    $.extend( $.fn.dataTable.ext.order, {
+			 *      "string-case-asc": function(x,y) {
+			 *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+			 *      },
+			 *      "string-case-desc": function(x,y) {
+			 *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+			 *      }
+			 *    } );
+			 */
+			order: {}
+		},
+	
+		/**
+		 * Unique DataTables instance counter
+		 *
+		 * @type int
+		 * @private
+		 */
+		_unique: 0,
+	
+	
+		//
+		// Depreciated
+		// The following properties are retained for backwards compatiblity only.
+		// The should not be used in new projects and will be removed in a future
+		// version
+		//
+	
+		/**
+		 * Version check function.
+		 *  @type function
+		 *  @depreciated Since 1.10
+		 */
+		fnVersionCheck: DataTable.fnVersionCheck,
+	
+	
+		/**
+		 * Index for what 'this' index API functions should use
+		 *  @type int
+		 *  @deprecated Since v1.10
+		 */
+		iApiIndex: 0,
+	
+	
+		/**
+		 * jQuery UI class container
+		 *  @type object
+		 *  @deprecated Since v1.10
+		 */
+		oJUIClasses: {},
+	
+	
+		/**
+		 * Software version
+		 *  @type string
+		 *  @deprecated Since v1.10
+		 */
+		sVersion: DataTable.version
+	};
+	
+	
+	//
+	// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts
+	//
+	$.extend( _ext, {
+		afnFiltering: _ext.search,
+		aTypes:       _ext.type.detect,
+		ofnSearch:    _ext.type.search,
+		oSort:        _ext.type.order,
+		afnSortData:  _ext.order,
+		aoFeatures:   _ext.feature,
+		oApi:         _ext.internal,
+		oStdClasses:  _ext.classes,
+		oPagination:  _ext.pager
+	} );
+	
+	
+	$.extend( DataTable.ext.classes, {
+		"sTable": "dataTable",
+		"sNoFooter": "no-footer",
+	
+		/* Paging buttons */
+		"sPageButton": "paginate_button",
+		"sPageButtonActive": "current",
+		"sPageButtonDisabled": "disabled",
+	
+		/* Striping classes */
+		"sStripeOdd": "odd",
+		"sStripeEven": "even",
+	
+		/* Empty row */
+		"sRowEmpty": "dataTables_empty",
+	
+		/* Features */
+		"sWrapper": "dataTables_wrapper",
+		"sFilter": "dataTables_filter",
+		"sInfo": "dataTables_info",
+		"sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */
+		"sLength": "dataTables_length",
+		"sProcessing": "dataTables_processing",
+	
+		/* Sorting */
+		"sSortAsc": "sorting_asc",
+		"sSortDesc": "sorting_desc",
+		"sSortable": "sorting", /* Sortable in both directions */
+		"sSortableAsc": "sorting_asc_disabled",
+		"sSortableDesc": "sorting_desc_disabled",
+		"sSortableNone": "sorting_disabled",
+		"sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */
+	
+		/* Filtering */
+		"sFilterInput": "",
+	
+		/* Page length */
+		"sLengthSelect": "",
+	
+		/* Scrolling */
+		"sScrollWrapper": "dataTables_scroll",
+		"sScrollHead": "dataTables_scrollHead",
+		"sScrollHeadInner": "dataTables_scrollHeadInner",
+		"sScrollBody": "dataTables_scrollBody",
+		"sScrollFoot": "dataTables_scrollFoot",
+		"sScrollFootInner": "dataTables_scrollFootInner",
+	
+		/* Misc */
+		"sHeaderTH": "",
+		"sFooterTH": "",
+	
+		// Deprecated
+		"sSortJUIAsc": "",
+		"sSortJUIDesc": "",
+		"sSortJUI": "",
+		"sSortJUIAscAllowed": "",
+		"sSortJUIDescAllowed": "",
+		"sSortJUIWrapper": "",
+		"sSortIcon": "",
+		"sJUIHeader": "",
+		"sJUIFooter": ""
+	} );
+	
+	
+	var extPagination = DataTable.ext.pager;
+	
+	function _numbers ( page, pages ) {
+		var
+			numbers = [],
+			buttons = extPagination.numbers_length,
+			half = Math.floor( buttons / 2 ),
+			i = 1;
+	
+		if ( pages <= buttons ) {
+			numbers = _range( 0, pages );
+		}
+		else if ( page <= half ) {
+			numbers = _range( 0, buttons-2 );
+			numbers.push( 'ellipsis' );
+			numbers.push( pages-1 );
+		}
+		else if ( page >= pages - 1 - half ) {
+			numbers = _range( pages-(buttons-2), pages );
+			numbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6
+			numbers.splice( 0, 0, 0 );
+		}
+		else {
+			numbers = _range( page-half+2, page+half-1 );
+			numbers.push( 'ellipsis' );
+			numbers.push( pages-1 );
+			numbers.splice( 0, 0, 'ellipsis' );
+			numbers.splice( 0, 0, 0 );
+		}
+	
+		numbers.DT_el = 'span';
+		return numbers;
+	}
+	
+	
+	$.extend( extPagination, {
+		simple: function ( page, pages ) {
+			return [ 'previous', 'next' ];
+		},
+	
+		full: function ( page, pages ) {
+			return [  'first', 'previous', 'next', 'last' ];
+		},
+	
+		numbers: function ( page, pages ) {
+			return [ _numbers(page, pages) ];
+		},
+	
+		simple_numbers: function ( page, pages ) {
+			return [ 'previous', _numbers(page, pages), 'next' ];
+		},
+	
+		full_numbers: function ( page, pages ) {
+			return [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];
+		},
+		
+		first_last_numbers: function (page, pages) {
+	 		return ['first', _numbers(page, pages), 'last'];
+	 	},
+	
+		// For testing and plug-ins to use
+		_numbers: _numbers,
+	
+		// Number of number buttons (including ellipsis) to show. _Must be odd!_
+		numbers_length: 7
+	} );
+	
+	
+	$.extend( true, DataTable.ext.renderer, {
+		pageButton: {
+			_: function ( settings, host, idx, buttons, page, pages ) {
+				var classes = settings.oClasses;
+				var lang = settings.oLanguage.oPaginate;
+				var aria = settings.oLanguage.oAria.paginate || {};
+				var btnDisplay, btnClass, counter=0;
+	
+				var attach = function( container, buttons ) {
+					var i, ien, node, button, tabIndex;
+					var disabledClass = classes.sPageButtonDisabled;
+					var clickHandler = function ( e ) {
+						_fnPageChange( settings, e.data.action, true );
+					};
+	
+					for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+						button = buttons[i];
+	
+						if ( $.isArray( button ) ) {
+							var inner = $( '<'+(button.DT_el || 'div')+'/>' )
+								.appendTo( container );
+							attach( inner, button );
+						}
+						else {
+							btnDisplay = null;
+							btnClass = button;
+							tabIndex = settings.iTabIndex;
+	
+							switch ( button ) {
+								case 'ellipsis':
+									container.append('<span class="ellipsis">&#x2026;</span>');
+									break;
+	
+								case 'first':
+									btnDisplay = lang.sFirst;
+	
+									if ( page === 0 ) {
+										tabIndex = -1;
+										btnClass += ' ' + disabledClass;
+									}
+									break;
+	
+								case 'previous':
+									btnDisplay = lang.sPrevious;
+	
+									if ( page === 0 ) {
+										tabIndex = -1;
+										btnClass += ' ' + disabledClass;
+									}
+									break;
+	
+								case 'next':
+									btnDisplay = lang.sNext;
+	
+									if ( page === pages-1 ) {
+										tabIndex = -1;
+										btnClass += ' ' + disabledClass;
+									}
+									break;
+	
+								case 'last':
+									btnDisplay = lang.sLast;
+	
+									if ( page === pages-1 ) {
+										tabIndex = -1;
+										btnClass += ' ' + disabledClass;
+									}
+									break;
+	
+								default:
+									btnDisplay = button + 1;
+									btnClass = page === button ?
+										classes.sPageButtonActive : '';
+									break;
+							}
+	
+							if ( btnDisplay !== null ) {
+								node = $('<a>', {
+										'class': classes.sPageButton+' '+btnClass,
+										'aria-controls': settings.sTableId,
+										'aria-label': aria[ button ],
+										'data-dt-idx': counter,
+										'tabindex': tabIndex,
+										'id': idx === 0 && typeof button === 'string' ?
+											settings.sTableId +'_'+ button :
+											null
+									} )
+									.html( btnDisplay )
+									.appendTo( container );
+	
+								_fnBindAction(
+									node, {action: button}, clickHandler
+								);
+	
+								counter++;
+							}
+						}
+					}
+				};
+	
+				// IE9 throws an 'unknown error' if document.activeElement is used
+				// inside an iframe or frame. Try / catch the error. Not good for
+				// accessibility, but neither are frames.
+				var activeEl;
+	
+				try {
+					// Because this approach is destroying and recreating the paging
+					// elements, focus is lost on the select button which is bad for
+					// accessibility. So we want to restore focus once the draw has
+					// completed
+					activeEl = $(host).find(document.activeElement).data('dt-idx');
+				}
+				catch (e) {}
+	
+				attach( $(host).empty(), buttons );
+	
+				if ( activeEl !== undefined ) {
+					$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
+				}
+			}
+		}
+	} );
+	
+	
+	
+	// Built in type detection. See model.ext.aTypes for information about
+	// what is required from this methods.
+	$.extend( DataTable.ext.type.detect, [
+		// Plain numbers - first since V8 detects some plain numbers as dates
+		// e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...).
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _isNumber( d, decimal ) ? 'num'+decimal : null;
+		},
+	
+		// Dates (only those recognised by the browser's Date.parse)
+		function ( d, settings )
+		{
+			// V8 tries _very_ hard to make a string passed into `Date.parse()`
+			// valid, so we need to use a regex to restrict date formats. Use a
+			// plug-in for anything other than ISO8601 style strings
+			if ( d && !(d instanceof Date) && ! _re_date.test(d) ) {
+				return null;
+			}
+			var parsed = Date.parse(d);
+			return (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;
+		},
+	
+		// Formatted numbers
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;
+		},
+	
+		// HTML numeric
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;
+		},
+	
+		// HTML numeric, formatted
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;
+		},
+	
+		// HTML (this is strict checking - there must be html)
+		function ( d, settings )
+		{
+			return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ?
+				'html' : null;
+		}
+	] );
+	
+	
+	
+	// Filter formatting functions. See model.ext.ofnSearch for information about
+	// what is required from these methods.
+	// 
+	// Note that additional search methods are added for the html numbers and
+	// html formatted numbers by `_addNumericSort()` when we know what the decimal
+	// place is
+	
+	
+	$.extend( DataTable.ext.type.search, {
+		html: function ( data ) {
+			return _empty(data) ?
+				data :
+				typeof data === 'string' ?
+					data
+						.replace( _re_new_lines, " " )
+						.replace( _re_html, "" ) :
+					'';
+		},
+	
+		string: function ( data ) {
+			return _empty(data) ?
+				data :
+				typeof data === 'string' ?
+					data.replace( _re_new_lines, " " ) :
+					data;
+		}
+	} );
+	
+	
+	
+	var __numericReplace = function ( d, decimalPlace, re1, re2 ) {
+		if ( d !== 0 && (!d || d === '-') ) {
+			return -Infinity;
+		}
+	
+		// If a decimal place other than `.` is used, it needs to be given to the
+		// function so we can detect it and replace with a `.` which is the only
+		// decimal place Javascript recognises - it is not locale aware.
+		if ( decimalPlace ) {
+			d = _numToDecimal( d, decimalPlace );
+		}
+	
+		if ( d.replace ) {
+			if ( re1 ) {
+				d = d.replace( re1, '' );
+			}
+	
+			if ( re2 ) {
+				d = d.replace( re2, '' );
+			}
+		}
+	
+		return d * 1;
+	};
+	
+	
+	// Add the numeric 'deformatting' functions for sorting and search. This is done
+	// in a function to provide an easy ability for the language options to add
+	// additional methods if a non-period decimal place is used.
+	function _addNumericSort ( decimalPlace ) {
+		$.each(
+			{
+				// Plain numbers
+				"num": function ( d ) {
+					return __numericReplace( d, decimalPlace );
+				},
+	
+				// Formatted numbers
+				"num-fmt": function ( d ) {
+					return __numericReplace( d, decimalPlace, _re_formatted_numeric );
+				},
+	
+				// HTML numeric
+				"html-num": function ( d ) {
+					return __numericReplace( d, decimalPlace, _re_html );
+				},
+	
+				// HTML numeric, formatted
+				"html-num-fmt": function ( d ) {
+					return __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );
+				}
+			},
+			function ( key, fn ) {
+				// Add the ordering method
+				_ext.type.order[ key+decimalPlace+'-pre' ] = fn;
+	
+				// For HTML types add a search formatter that will strip the HTML
+				if ( key.match(/^html\-/) ) {
+					_ext.type.search[ key+decimalPlace ] = _ext.type.search.html;
+				}
+			}
+		);
+	}
+	
+	
+	// Default sort methods
+	$.extend( _ext.type.order, {
+		// Dates
+		"date-pre": function ( d ) {
+			var ts = Date.parse( d );
+			return isNaN(ts) ? -Infinity : ts;
+		},
+	
+		// html
+		"html-pre": function ( a ) {
+			return _empty(a) ?
+				'' :
+				a.replace ?
+					a.replace( /<.*?>/g, "" ).toLowerCase() :
+					a+'';
+		},
+	
+		// string
+		"string-pre": function ( a ) {
+			// This is a little complex, but faster than always calling toString,
+			// http://jsperf.com/tostring-v-check
+			return _empty(a) ?
+				'' :
+				typeof a === 'string' ?
+					a.toLowerCase() :
+					! a.toString ?
+						'' :
+						a.toString();
+		},
+	
+		// string-asc and -desc are retained only for compatibility with the old
+		// sort methods
+		"string-asc": function ( x, y ) {
+			return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+		},
+	
+		"string-desc": function ( x, y ) {
+			return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+		}
+	} );
+	
+	
+	// Numeric sorting types - order doesn't matter here
+	_addNumericSort( '' );
+	
+	
+	$.extend( true, DataTable.ext.renderer, {
+		header: {
+			_: function ( settings, cell, column, classes ) {
+				// No additional mark-up required
+				// Attach a sort listener to update on sort - note that using the
+				// `DT` namespace will allow the event to be removed automatically
+				// on destroy, while the `dt` namespaced event is the one we are
+				// listening for
+				$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {
+					if ( settings !== ctx ) { // need to check this this is the host
+						return;               // table, not a nested one
+					}
+	
+					var colIdx = column.idx;
+	
+					cell
+						.removeClass(
+							column.sSortingClass +' '+
+							classes.sSortAsc +' '+
+							classes.sSortDesc
+						)
+						.addClass( columns[ colIdx ] == 'asc' ?
+							classes.sSortAsc : columns[ colIdx ] == 'desc' ?
+								classes.sSortDesc :
+								column.sSortingClass
+						);
+				} );
+			},
+	
+			jqueryui: function ( settings, cell, column, classes ) {
+				$('<div/>')
+					.addClass( classes.sSortJUIWrapper )
+					.append( cell.contents() )
+					.append( $('<span/>')
+						.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )
+					)
+					.appendTo( cell );
+	
+				// Attach a sort listener to update on sort
+				$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {
+					if ( settings !== ctx ) {
+						return;
+					}
+	
+					var colIdx = column.idx;
+	
+					cell
+						.removeClass( classes.sSortAsc +" "+classes.sSortDesc )
+						.addClass( columns[ colIdx ] == 'asc' ?
+							classes.sSortAsc : columns[ colIdx ] == 'desc' ?
+								classes.sSortDesc :
+								column.sSortingClass
+						);
+	
+					cell
+						.find( 'span.'+classes.sSortIcon )
+						.removeClass(
+							classes.sSortJUIAsc +" "+
+							classes.sSortJUIDesc +" "+
+							classes.sSortJUI +" "+
+							classes.sSortJUIAscAllowed +" "+
+							classes.sSortJUIDescAllowed
+						)
+						.addClass( columns[ colIdx ] == 'asc' ?
+							classes.sSortJUIAsc : columns[ colIdx ] == 'desc' ?
+								classes.sSortJUIDesc :
+								column.sSortingClassJUI
+						);
+				} );
+			}
+		}
+	} );
+	
+	/*
+	 * Public helper functions. These aren't used internally by DataTables, or
+	 * called by any of the options passed into DataTables, but they can be used
+	 * externally by developers working with DataTables. They are helper functions
+	 * to make working with DataTables a little bit easier.
+	 */
+	
+	var __htmlEscapeEntities = function ( d ) {
+		return typeof d === 'string' ?
+			d.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;') :
+			d;
+	};
+	
+	/**
+	 * Helpers for `columns.render`.
+	 *
+	 * The options defined here can be used with the `columns.render` initialisation
+	 * option to provide a display renderer. The following functions are defined:
+	 *
+	 * * `number` - Will format numeric data (defined by `columns.data`) for
+	 *   display, retaining the original unformatted data for sorting and filtering.
+	 *   It takes 5 parameters:
+	 *   * `string` - Thousands grouping separator
+	 *   * `string` - Decimal point indicator
+	 *   * `integer` - Number of decimal points to show
+	 *   * `string` (optional) - Prefix.
+	 *   * `string` (optional) - Postfix (/suffix).
+	 * * `text` - Escape HTML to help prevent XSS attacks. It has no optional
+	 *   parameters.
+	 *
+	 * @example
+	 *   // Column definition using the number renderer
+	 *   {
+	 *     data: "salary",
+	 *     render: $.fn.dataTable.render.number( '\'', '.', 0, '$' )
+	 *   }
+	 *
+	 * @namespace
+	 */
+	DataTable.render = {
+		number: function ( thousands, decimal, precision, prefix, postfix ) {
+			return {
+				display: function ( d ) {
+					if ( typeof d !== 'number' && typeof d !== 'string' ) {
+						return d;
+					}
+	
+					var negative = d < 0 ? '-' : '';
+					var flo = parseFloat( d );
+	
+					// If NaN then there isn't much formatting that we can do - just
+					// return immediately, escaping any HTML (this was supposed to
+					// be a number after all)
+					if ( isNaN( flo ) ) {
+						return __htmlEscapeEntities( d );
+					}
+	
+					flo = flo.toFixed( precision );
+					d = Math.abs( flo );
+	
+					var intPart = parseInt( d, 10 );
+					var floatPart = precision ?
+						decimal+(d - intPart).toFixed( precision ).substring( 2 ):
+						'';
+	
+					return negative + (prefix||'') +
+						intPart.toString().replace(
+							/\B(?=(\d{3})+(?!\d))/g, thousands
+						) +
+						floatPart +
+						(postfix||'');
+				}
+			};
+		},
+	
+		text: function () {
+			return {
+				display: __htmlEscapeEntities,
+				filter: __htmlEscapeEntities
+			};
+		}
+	};
+	
+	
+	/*
+	 * This is really a good bit rubbish this method of exposing the internal methods
+	 * publicly... - To be fixed in 2.0 using methods on the prototype
+	 */
+	
+	
+	/**
+	 * Create a wrapper function for exporting an internal functions to an external API.
+	 *  @param {string} fn API function name
+	 *  @returns {function} wrapped function
+	 *  @memberof DataTable#internal
+	 */
+	function _fnExternApiFunc (fn)
+	{
+		return function() {
+			var args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat(
+				Array.prototype.slice.call(arguments)
+			);
+			return DataTable.ext.internal[fn].apply( this, args );
+		};
+	}
+	
+	
+	/**
+	 * Reference to internal functions for use by plug-in developers. Note that
+	 * these methods are references to internal functions and are considered to be
+	 * private. If you use these methods, be aware that they are liable to change
+	 * between versions.
+	 *  @namespace
+	 */
+	$.extend( DataTable.ext.internal, {
+		_fnExternApiFunc: _fnExternApiFunc,
+		_fnBuildAjax: _fnBuildAjax,
+		_fnAjaxUpdate: _fnAjaxUpdate,
+		_fnAjaxParameters: _fnAjaxParameters,
+		_fnAjaxUpdateDraw: _fnAjaxUpdateDraw,
+		_fnAjaxDataSrc: _fnAjaxDataSrc,
+		_fnAddColumn: _fnAddColumn,
+		_fnColumnOptions: _fnColumnOptions,
+		_fnAdjustColumnSizing: _fnAdjustColumnSizing,
+		_fnVisibleToColumnIndex: _fnVisibleToColumnIndex,
+		_fnColumnIndexToVisible: _fnColumnIndexToVisible,
+		_fnVisbleColumns: _fnVisbleColumns,
+		_fnGetColumns: _fnGetColumns,
+		_fnColumnTypes: _fnColumnTypes,
+		_fnApplyColumnDefs: _fnApplyColumnDefs,
+		_fnHungarianMap: _fnHungarianMap,
+		_fnCamelToHungarian: _fnCamelToHungarian,
+		_fnLanguageCompat: _fnLanguageCompat,
+		_fnBrowserDetect: _fnBrowserDetect,
+		_fnAddData: _fnAddData,
+		_fnAddTr: _fnAddTr,
+		_fnNodeToDataIndex: _fnNodeToDataIndex,
+		_fnNodeToColumnIndex: _fnNodeToColumnIndex,
+		_fnGetCellData: _fnGetCellData,
+		_fnSetCellData: _fnSetCellData,
+		_fnSplitObjNotation: _fnSplitObjNotation,
+		_fnGetObjectDataFn: _fnGetObjectDataFn,
+		_fnSetObjectDataFn: _fnSetObjectDataFn,
+		_fnGetDataMaster: _fnGetDataMaster,
+		_fnClearTable: _fnClearTable,
+		_fnDeleteIndex: _fnDeleteIndex,
+		_fnInvalidate: _fnInvalidate,
+		_fnGetRowElements: _fnGetRowElements,
+		_fnCreateTr: _fnCreateTr,
+		_fnBuildHead: _fnBuildHead,
+		_fnDrawHead: _fnDrawHead,
+		_fnDraw: _fnDraw,
+		_fnReDraw: _fnReDraw,
+		_fnAddOptionsHtml: _fnAddOptionsHtml,
+		_fnDetectHeader: _fnDetectHeader,
+		_fnGetUniqueThs: _fnGetUniqueThs,
+		_fnFeatureHtmlFilter: _fnFeatureHtmlFilter,
+		_fnFilterComplete: _fnFilterComplete,
+		_fnFilterCustom: _fnFilterCustom,
+		_fnFilterColumn: _fnFilterColumn,
+		_fnFilter: _fnFilter,
+		_fnFilterCreateSearch: _fnFilterCreateSearch,
+		_fnEscapeRegex: _fnEscapeRegex,
+		_fnFilterData: _fnFilterData,
+		_fnFeatureHtmlInfo: _fnFeatureHtmlInfo,
+		_fnUpdateInfo: _fnUpdateInfo,
+		_fnInfoMacros: _fnInfoMacros,
+		_fnInitialise: _fnInitialise,
+		_fnInitComplete: _fnInitComplete,
+		_fnLengthChange: _fnLengthChange,
+		_fnFeatureHtmlLength: _fnFeatureHtmlLength,
+		_fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate,
+		_fnPageChange: _fnPageChange,
+		_fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing,
+		_fnProcessingDisplay: _fnProcessingDisplay,
+		_fnFeatureHtmlTable: _fnFeatureHtmlTable,
+		_fnScrollDraw: _fnScrollDraw,
+		_fnApplyToChildren: _fnApplyToChildren,
+		_fnCalculateColumnWidths: _fnCalculateColumnWidths,
+		_fnThrottle: _fnThrottle,
+		_fnConvertToWidth: _fnConvertToWidth,
+		_fnGetWidestNode: _fnGetWidestNode,
+		_fnGetMaxLenString: _fnGetMaxLenString,
+		_fnStringToCss: _fnStringToCss,
+		_fnSortFlatten: _fnSortFlatten,
+		_fnSort: _fnSort,
+		_fnSortAria: _fnSortAria,
+		_fnSortListener: _fnSortListener,
+		_fnSortAttachListener: _fnSortAttachListener,
+		_fnSortingClasses: _fnSortingClasses,
+		_fnSortData: _fnSortData,
+		_fnSaveState: _fnSaveState,
+		_fnLoadState: _fnLoadState,
+		_fnSettingsFromNode: _fnSettingsFromNode,
+		_fnLog: _fnLog,
+		_fnMap: _fnMap,
+		_fnBindAction: _fnBindAction,
+		_fnCallbackReg: _fnCallbackReg,
+		_fnCallbackFire: _fnCallbackFire,
+		_fnLengthOverflow: _fnLengthOverflow,
+		_fnRenderer: _fnRenderer,
+		_fnDataSource: _fnDataSource,
+		_fnRowAttributes: _fnRowAttributes,
+		_fnExtend: _fnExtend,
+		_fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant
+		                                // in 1.10, so this dead-end function is
+		                                // added to prevent errors
+	} );
+	
+
+	// jQuery access
+	$.fn.dataTable = DataTable;
+
+	// Provide access to the host jQuery object (circular reference)
+	DataTable.$ = $;
+
+	// Legacy aliases
+	$.fn.dataTableSettings = DataTable.settings;
+	$.fn.dataTableExt = DataTable.ext;
+
+	// With a capital `D` we return a DataTables API instance rather than a
+	// jQuery object
+	$.fn.DataTable = function ( opts ) {
+		return $(this).dataTable( opts ).api();
+	};
+
+	// All properties that are available to $.fn.dataTable should also be
+	// available on $.fn.DataTable
+	$.each( DataTable, function ( prop, val ) {
+		$.fn.DataTable[ prop ] = val;
+	} );
+
+
+	// Information about events fired by DataTables - for documentation.
+	/**
+	 * Draw event, fired whenever the table is redrawn on the page, at the same
+	 * point as fnDrawCallback. This may be useful for binding events or
+	 * performing calculations when the table is altered at all.
+	 *  @name DataTable#draw.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Search event, fired when the searching applied to the table (using the
+	 * built-in global search, or column filters) is altered.
+	 *  @name DataTable#search.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Page change event, fired when the paging of the table is altered.
+	 *  @name DataTable#page.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Order event, fired when the ordering applied to the table is altered.
+	 *  @name DataTable#order.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * DataTables initialisation complete event, fired when the table is fully
+	 * drawn, including Ajax data loaded, if Ajax data is required.
+	 *  @name DataTable#init.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The JSON object request from the server - only
+	 *    present if client-side Ajax sourced data is used</li></ol>
+	 */
+
+	/**
+	 * State save event, fired when the table has changed state a new state save
+	 * is required. This event allows modification of the state saving object
+	 * prior to actually doing the save, including addition or other state
+	 * properties (for plug-ins) or modification of a DataTables core property.
+	 *  @name DataTable#stateSaveParams.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The state information to be saved
+	 */
+
+	/**
+	 * State load event, fired when the table is loading state from the stored
+	 * data, but prior to the settings object being modified by the saved state
+	 * - allowing modification of the saved state is required or loading of
+	 * state for a plug-in.
+	 *  @name DataTable#stateLoadParams.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The saved state information
+	 */
+
+	/**
+	 * State loaded event, fired when state has been loaded from stored data and
+	 * the settings object has been modified by the loaded data.
+	 *  @name DataTable#stateLoaded.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The saved state information
+	 */
+
+	/**
+	 * Processing event, fired when DataTables is doing some kind of processing
+	 * (be it, order, search or anything else). It can be used to indicate to
+	 * the end user that there is something happening, or that something has
+	 * finished.
+	 *  @name DataTable#processing.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {boolean} bShow Flag for if DataTables is doing processing or not
+	 */
+
+	/**
+	 * Ajax (XHR) event, fired whenever an Ajax request is completed from a
+	 * request to made to the server for new data. This event is called before
+	 * DataTables processed the returned data, so it can also be used to pre-
+	 * process the data returned from the server, if needed.
+	 *
+	 * Note that this trigger is called in `fnServerData`, if you override
+	 * `fnServerData` and which to use this event, you need to trigger it in you
+	 * success function.
+	 *  @name DataTable#xhr.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 *  @param {object} json JSON returned from the server
+	 *
+	 *  @example
+	 *     // Use a custom property returned from the server in another DOM element
+	 *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {
+	 *       $('#status').html( json.status );
+	 *     } );
+	 *
+	 *  @example
+	 *     // Pre-process the data returned from the server
+	 *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {
+	 *       for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) {
+	 *         json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two;
+	 *       }
+	 *       // Note no return - manipulate the data directly in the JSON object.
+	 *     } );
+	 */
+
+	/**
+	 * Destroy event, fired when the DataTable is destroyed by calling fnDestroy
+	 * or passing the bDestroy:true parameter in the initialisation object. This
+	 * can be used to remove bound events, added DOM nodes, etc.
+	 *  @name DataTable#destroy.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Page length change event, fired when number of records to show on each
+	 * page (the length) is changed.
+	 *  @name DataTable#length.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 *  @param {integer} len New length
+	 */
+
+	/**
+	 * Column sizing has changed.
+	 *  @name DataTable#column-sizing.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Column visibility has changed.
+	 *  @name DataTable#column-visibility.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 *  @param {int} column Column index
+	 *  @param {bool} vis `false` if column now hidden, or `true` if visible
+	 */
+
+	return $.fn.dataTable;
+}));
Index: public/vendors/dataTable/DataTables-1.10.20/js/jquery.dataTables.min.js
===================================================================
--- public/vendors/dataTable/DataTables-1.10.20/js/jquery.dataTables.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/DataTables-1.10.20/js/jquery.dataTables.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,180 @@
+/*!
+   Copyright 2008-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ DataTables 1.10.20
+ ©2008-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(f,z,y){f instanceof String&&(f=String(f));for(var p=f.length,H=0;H<p;H++){var L=f[H];if(z.call(y,L,H,f))return{i:H,v:L}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(f,z,y){f!=Array.prototype&&f!=Object.prototype&&(f[z]=y.value)};$jscomp.getGlobal=function(f){return"undefined"!=typeof window&&window===f?f:"undefined"!=typeof global&&null!=global?global:f};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(f,z,y,p){if(z){y=$jscomp.global;f=f.split(".");for(p=0;p<f.length-1;p++){var H=f[p];H in y||(y[H]={});y=y[H]}f=f[f.length-1];p=y[f];z=z(p);z!=p&&null!=z&&$jscomp.defineProperty(y,f,{configurable:!0,writable:!0,value:z})}};$jscomp.polyfill("Array.prototype.find",function(f){return f?f:function(f,y){return $jscomp.findInternal(this,f,y).v}},"es6","es3");
+(function(f){"function"===typeof define&&define.amd?define(["jquery"],function(z){return f(z,window,document)}):"object"===typeof exports?module.exports=function(z,y){z||(z=window);y||(y="undefined"!==typeof window?require("jquery"):require("jquery")(z));return f(y,z,z.document)}:f(jQuery,window,document)})(function(f,z,y,p){function H(a){var b,c,d={};f.each(a,function(e,h){(b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" ")&&(c=e.replace(b[0],b[2].toLowerCase()),
+d[c]=e,"o"===b[1]&&H(a[e]))});a._hungarianMap=d}function L(a,b,c){a._hungarianMap||H(a);var d;f.each(b,function(e,h){d=a._hungarianMap[e];d===p||!c&&b[d]!==p||("o"===d.charAt(0)?(b[d]||(b[d]={}),f.extend(!0,b[d],b[e]),L(a[d],b[d],c)):b[d]=b[e])})}function Ga(a){var b=q.defaults.oLanguage,c=b.sDecimal;c&&Ha(c);if(a){var d=a.sZeroRecords;!a.sEmptyTable&&d&&"No data available in table"===b.sEmptyTable&&M(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&d&&"Loading..."===b.sLoadingRecords&&M(a,a,
+"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&c!==a&&Ha(a)}}function jb(a){F(a,"ordering","bSort");F(a,"orderMulti","bSortMulti");F(a,"orderClasses","bSortClasses");F(a,"orderCellsTop","bSortCellsTop");F(a,"order","aaSorting");F(a,"orderFixed","aaSortingFixed");F(a,"paging","bPaginate");F(a,"pagingType","sPaginationType");F(a,"pageLength","iDisplayLength");F(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":
+"");"boolean"===typeof a.scrollX&&(a.scrollX=a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&L(q.models.oSearch,a[b])}function kb(a){F(a,"orderable","bSortable");F(a,"orderData","aDataSort");F(a,"orderSequence","asSorting");F(a,"orderDataType","sortDataType");var b=a.aDataSort;"number"!==typeof b||f.isArray(b)||(a.aDataSort=[b])}function lb(a){if(!q.__browser){var b={};q.__browser=b;var c=f("<div/>").css({position:"fixed",top:0,left:-1*f(z).scrollLeft(),height:1,width:1,
+overflow:"hidden"}).append(f("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(f("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}f.extend(a.oBrowser,q.__browser);a.oScroll.iBarWidth=q.__browser.barWidth}
+function mb(a,b,c,d,e,h){var g=!1;if(c!==p){var k=c;g=!0}for(;d!==e;)a.hasOwnProperty(d)&&(k=g?b(k,a[d],d,a):a[d],g=!0,d+=h);return k}function Ia(a,b){var c=q.defaults.column,d=a.aoColumns.length;c=f.extend({},q.models.oColumn,c,{nTh:b?b:y.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=f.extend({},q.models.oSearch,c[d]);ma(a,d,f(b).data())}function ma(a,b,c){b=a.aoColumns[b];
+var d=a.oClasses,e=f(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var h=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);h&&(b.sWidthOrig=h[1])}c!==p&&null!==c&&(kb(c),L(q.defaults.column,c,!0),c.mDataProp===p||c.mData||(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),f.extend(b,c),M(b,c,"sWidth","sWidthOrig"),c.iDataSort!==p&&(b.aDataSort=[c.iDataSort]),M(b,c,"aDataSort"));var g=b.mData,k=U(g),
+l=b.mRender?U(b.mRender):null;c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=f.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=k(a,b,p,c);return l&&b?l(d,b,a,c):d};b.fnSetData=function(a,b,c){return Q(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==f.inArray("asc",b.asSorting);c=-1!==f.inArray("desc",b.asSorting);b.bSortable&&(a||c)?a&&!c?(b.sSortingClass=
+d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI):(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI="")}function aa(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ja(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;""===b.sY&&""===b.sX||na(a);A(a,null,"column-sizing",[a])}function ba(a,b){a=oa(a,"bVisible");return"number"===
+typeof a[b]?a[b]:null}function ca(a,b){a=oa(a,"bVisible");b=f.inArray(b,a);return-1!==b?b:null}function W(a){var b=0;f.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==f(d.nTh).css("display")&&b++});return b}function oa(a,b){var c=[];f.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Ka(a){var b=a.aoColumns,c=a.aoData,d=q.ext.type.detect,e,h,g;var k=0;for(e=b.length;k<e;k++){var f=b[k];var n=[];if(!f.sType&&f._sManualType)f.sType=f._sManualType;else if(!f.sType){var m=0;for(h=
+d.length;m<h;m++){var w=0;for(g=c.length;w<g;w++){n[w]===p&&(n[w]=I(a,w,k,"type"));var u=d[m](n[w],a);if(!u&&m!==d.length-1)break;if("html"===u)break}if(u){f.sType=u;break}}f.sType||(f.sType="string")}}}function nb(a,b,c,d){var e,h,g,k=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){var l=b[e];var n=l.targets!==p?l.targets:l.aTargets;f.isArray(n)||(n=[n]);var m=0;for(h=n.length;m<h;m++)if("number"===typeof n[m]&&0<=n[m]){for(;k.length<=n[m];)Ia(a);d(n[m],l)}else if("number"===typeof n[m]&&0>n[m])d(k.length+
+n[m],l);else if("string"===typeof n[m]){var w=0;for(g=k.length;w<g;w++)("_all"==n[m]||f(k[w].nTh).hasClass(n[m]))&&d(w,l)}}if(c)for(e=0,a=c.length;e<a;e++)d(e,c[e])}function R(a,b,c,d){var e=a.aoData.length,h=f.extend(!0,{},q.models.oRow,{src:c?"dom":"data",idx:e});h._aData=b;a.aoData.push(h);for(var g=a.aoColumns,k=0,l=g.length;k<l;k++)g[k].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==p&&(a.aIds[b]=h);!c&&a.oFeatures.bDeferRender||La(a,e,c,d);return e}function pa(a,b){var c;b instanceof
+f||(b=f(b));return b.map(function(b,e){c=Ma(a,e);return R(a,c.data,e,c.cells)})}function I(a,b,c,d){var e=a.iDraw,h=a.aoColumns[c],g=a.aoData[b]._aData,k=h.sDefaultContent,f=h.fnGetData(g,d,{settings:a,row:b,col:c});if(f===p)return a.iDrawError!=e&&null===k&&(O(a,0,"Requested unknown parameter "+("function"==typeof h.mData?"{function}":"'"+h.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),k;if((f===g||null===f)&&null!==k&&d!==p)f=k;else if("function"===typeof f)return f.call(g);return null===
+f&&"display"==d?"":f}function ob(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d,{settings:a,row:b,col:c})}function Na(a){return f.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\\./g,".")})}function U(a){if(f.isPlainObject(a)){var b={};f.each(a,function(a,c){c&&(b[a]=U(c))});return function(a,c,h,g){var d=b[c]||b._;return d!==p?d(a,c,h,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,h,g){return a(b,c,h,g)};if("string"!==typeof a||
+-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(b,c){return b[a]};var c=function(a,b,h){if(""!==h){var d=Na(h);for(var e=0,l=d.length;e<l;e++){h=d[e].match(da);var n=d[e].match(X);if(h){d[e]=d[e].replace(da,"");""!==d[e]&&(a=a[d[e]]);n=[];d.splice(0,e+1);d=d.join(".");if(f.isArray(a))for(e=0,l=a.length;e<l;e++)n.push(c(a[e],b,d));a=h[0].substring(1,h[0].length-1);a=""===a?n:n.join(a);break}else if(n){d[e]=d[e].replace(X,"");a=a[d[e]]();continue}if(null===a||a[d[e]]===
+p)return p;a=a[d[e]]}}return a};return function(b,e){return c(b,e,a)}}function Q(a){if(f.isPlainObject(a))return Q(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"!==typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(b,d){b[a]=d};var b=function(a,d,e){e=Na(e);var c=e[e.length-1];for(var g,k,l=0,n=e.length-1;l<n;l++){g=e[l].match(da);k=e[l].match(X);if(g){e[l]=e[l].replace(da,"");a[e[l]]=[];c=e.slice();
+c.splice(0,l+1);g=c.join(".");if(f.isArray(d))for(k=0,n=d.length;k<n;k++)c={},b(c,d[k],g),a[e[l]].push(c);else a[e[l]]=d;return}k&&(e[l]=e[l].replace(X,""),a=a[e[l]](d));if(null===a[e[l]]||a[e[l]]===p)a[e[l]]={};a=a[e[l]]}if(c.match(X))a[c.replace(X,"")](d);else a[c.replace(da,"")]=d};return function(c,d){return b(c,d,a)}}function Oa(a){return J(a.aoData,"_aData")}function qa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function ra(a,b,c){for(var d=-1,e=0,h=a.length;e<
+h;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===p&&a.splice(d,1)}function ea(a,b,c,d){var e=a.aoData[b],h,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=I(a,b,d,"display")};if("dom"!==c&&(c&&"auto"!==c||"dom"!==e.src)){var k=e.anCells;if(k)if(d!==p)g(k[d],d);else for(c=0,h=k.length;c<h;c++)g(k[c],c)}else e._aData=Ma(a,e,d,d===p?p:e._aData).data;e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==p)g[d].sType=null;else{c=0;for(h=g.length;c<h;c++)g[c].sType=null;
+Pa(a,e)}}function Ma(a,b,c,d){var e=[],h=b.firstChild,g,k=0,l,n=a.aoColumns,m=a._rowReadObject;d=d!==p?d:m?{}:[];var w=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),Q(a)(d,b.getAttribute(c)))}},u=function(a){if(c===p||c===k)g=n[k],l=f.trim(a.innerHTML),g&&g._bAttrSrc?(Q(g.mData._)(d,l),w(g.mData.sort,a),w(g.mData.type,a),w(g.mData.filter,a)):m?(g._setter||(g._setter=Q(g.mData)),g._setter(d,l)):d[k]=l;k++};if(h)for(;h;){var q=h.nodeName.toUpperCase();if("TD"==
+q||"TH"==q)u(h),e.push(h);h=h.nextSibling}else for(e=b.anCells,h=0,q=e.length;h<q;h++)u(e[h]);(b=b.firstChild?b:b.nTr)&&(b=b.getAttribute("id"))&&Q(a.rowId)(d,b);return{data:d,cells:e}}function La(a,b,c,d){var e=a.aoData[b],h=e._aData,g=[],k,l;if(null===e.nTr){var n=c||y.createElement("tr");e.nTr=n;e.anCells=g;n._DT_RowIndex=b;Pa(a,e);var m=0;for(k=a.aoColumns.length;m<k;m++){var w=a.aoColumns[m];var p=(l=c?!1:!0)?y.createElement(w.sCellType):d[m];p._DT_CellIndex={row:b,column:m};g.push(p);if(l||
+!(c&&!w.mRender&&w.mData===m||f.isPlainObject(w.mData)&&w.mData._===m+".display"))p.innerHTML=I(a,b,m,"display");w.sClass&&(p.className+=" "+w.sClass);w.bVisible&&!c?n.appendChild(p):!w.bVisible&&c&&p.parentNode.removeChild(p);w.fnCreatedCell&&w.fnCreatedCell.call(a.oInstance,p,I(a,b,m),h,b,m)}A(a,"aoRowCreatedCallback",null,[n,h,b,g])}e.nTr.setAttribute("role","row")}function Pa(a,b){var c=b.nTr,d=b._aData;if(c){if(a=a.rowIdFn(d))c.id=a;d.DT_RowClass&&(a=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?
+ta(b.__rowc.concat(a)):a,f(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&f(c).attr(d.DT_RowAttr);d.DT_RowData&&f(c).data(d.DT_RowData)}}function pb(a){var b,c,d=a.nTHead,e=a.nTFoot,h=0===f("th, td",d).length,g=a.oClasses,k=a.aoColumns;h&&(c=f("<tr/>").appendTo(d));var l=0;for(b=k.length;l<b;l++){var n=k[l];var m=f(n.nTh).addClass(n.sClass);h&&m.appendTo(c);a.oFeatures.bSort&&(m.addClass(n.sSortingClass),!1!==n.bSortable&&(m.attr("tabindex",a.iTabIndex).attr("aria-controls",
+a.sTableId),Qa(a,n.nTh,l)));n.sTitle!=m[0].innerHTML&&m.html(n.sTitle);Ra(a,"header")(a,m,n,g)}h&&fa(a.aoHeader,d);f(d).find(">tr").attr("role","row");f(d).find(">tr>th, >tr>td").addClass(g.sHeaderTH);f(e).find(">tr>th, >tr>td").addClass(g.sFooterTH);if(null!==e)for(a=a.aoFooter[0],l=0,b=a.length;l<b;l++)n=k[l],n.nTf=a[l].cell,n.sClass&&f(n.nTf).addClass(n.sClass)}function ha(a,b,c){var d,e,h=[],g=[],k=a.aoColumns.length;if(b){c===p&&(c=!1);var l=0;for(d=b.length;l<d;l++){h[l]=b[l].slice();h[l].nTr=
+b[l].nTr;for(e=k-1;0<=e;e--)a.aoColumns[e].bVisible||c||h[l].splice(e,1);g.push([])}l=0;for(d=h.length;l<d;l++){if(a=h[l].nTr)for(;e=a.firstChild;)a.removeChild(e);e=0;for(b=h[l].length;e<b;e++){var n=k=1;if(g[l][e]===p){a.appendChild(h[l][e].cell);for(g[l][e]=1;h[l+k]!==p&&h[l][e].cell==h[l+k][e].cell;)g[l+k][e]=1,k++;for(;h[l][e+n]!==p&&h[l][e].cell==h[l][e+n].cell;){for(c=0;c<k;c++)g[l+c][e+n]=1;n++}f(h[l][e].cell).attr("rowspan",k).attr("colspan",n)}}}}}function S(a){var b=A(a,"aoPreDrawCallback",
+"preDraw",[a]);if(-1!==f.inArray(!1,b))K(a,!1);else{b=[];var c=0,d=a.asStripeClasses,e=d.length,h=a.oLanguage,g=a.iInitDisplayStart,k="ssp"==D(a),l=a.aiDisplay;a.bDrawing=!0;g!==p&&-1!==g&&(a._iDisplayStart=k?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);g=a._iDisplayStart;var n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,K(a,!1);else if(!k)a.iDraw++;else if(!a.bDestroying&&!qb(a))return;if(0!==l.length)for(h=k?a.aoData.length:n,k=k?0:g;k<h;k++){var m=l[k],w=a.aoData[m];
+null===w.nTr&&La(a,m);var u=w.nTr;if(0!==e){var q=d[c%e];w._sRowStripe!=q&&(f(u).removeClass(w._sRowStripe).addClass(q),w._sRowStripe=q)}A(a,"aoRowCallback",null,[u,w._aData,c,k,m]);b.push(u);c++}else c=h.sZeroRecords,1==a.iDraw&&"ajax"==D(a)?c=h.sLoadingRecords:h.sEmptyTable&&0===a.fnRecordsTotal()&&(c=h.sEmptyTable),b[0]=f("<tr/>",{"class":e?d[0]:""}).append(f("<td />",{valign:"top",colSpan:W(a),"class":a.oClasses.sRowEmpty}).html(c))[0];A(a,"aoHeaderCallback","header",[f(a.nTHead).children("tr")[0],
+Oa(a),g,n,l]);A(a,"aoFooterCallback","footer",[f(a.nTFoot).children("tr")[0],Oa(a),g,n,l]);d=f(a.nTBody);d.children().detach();d.append(f(b));A(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function V(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&rb(a);d?ia(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;S(a);a._drawHold=!1}function sb(a){var b=a.oClasses,c=f(a.nTable);c=f("<div/>").insertBefore(c);var d=a.oFeatures,e=
+f("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var h=a.sDom.split(""),g,k,l,n,m,p,u=0;u<h.length;u++){g=null;k=h[u];if("<"==k){l=f("<div/>")[0];n=h[u+1];if("'"==n||'"'==n){m="";for(p=2;h[u+p]!=n;)m+=h[u+p],p++;"H"==m?m=b.sJUIHeader:"F"==m&&(m=b.sJUIFooter);-1!=m.indexOf(".")?(n=m.split("."),l.id=n[0].substr(1,n[0].length-1),l.className=n[1]):"#"==m.charAt(0)?l.id=m.substr(1,
+m.length-1):l.className=m;u+=p}e.append(l);e=f(l)}else if(">"==k)e=e.parent();else if("l"==k&&d.bPaginate&&d.bLengthChange)g=tb(a);else if("f"==k&&d.bFilter)g=ub(a);else if("r"==k&&d.bProcessing)g=vb(a);else if("t"==k)g=wb(a);else if("i"==k&&d.bInfo)g=xb(a);else if("p"==k&&d.bPaginate)g=yb(a);else if(0!==q.ext.feature.length)for(l=q.ext.feature,p=0,n=l.length;p<n;p++)if(k==l[p].cFeature){g=l[p].fnInit(a);break}g&&(l=a.aanFeatures,l[k]||(l[k]=[]),l[k].push(g),e.append(g))}c.replaceWith(e);a.nHolding=
+null}function fa(a,b){b=f(b).children("tr");var c,d,e;a.splice(0,a.length);var h=0;for(e=b.length;h<e;h++)a.push([]);h=0;for(e=b.length;h<e;h++){var g=b[h];for(c=g.firstChild;c;){if("TD"==c.nodeName.toUpperCase()||"TH"==c.nodeName.toUpperCase()){var k=1*c.getAttribute("colspan");var l=1*c.getAttribute("rowspan");k=k&&0!==k&&1!==k?k:1;l=l&&0!==l&&1!==l?l:1;var n=0;for(d=a[h];d[n];)n++;var m=n;var p=1===k?!0:!1;for(d=0;d<k;d++)for(n=0;n<l;n++)a[h+n][m+d]={cell:c,unique:p},a[h+n].nTr=g}c=c.nextSibling}}}
+function ua(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],fa(c,b)));b=0;for(var e=c.length;b<e;b++)for(var h=0,g=c[b].length;h<g;h++)!c[b][h].unique||d[h]&&a.bSortCellsTop||(d[h]=c[b][h].cell);return d}function va(a,b,c){A(a,"aoServerParams","serverParams",[b]);if(b&&f.isArray(b)){var d={},e=/(.*?)\[\]$/;f.each(b,function(a,b){(a=b.name.match(e))?(a=a[0],d[a]||(d[a]=[]),d[a].push(b.value)):d[b.name]=b.value});b=d}var h=a.ajax,g=a.oInstance,k=function(b){A(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(f.isPlainObject(h)&&
+h.data){var l=h.data;var n="function"===typeof l?l(b,a):l;b="function"===typeof l&&n?n:f.extend(!0,b,n);delete h.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&O(a,0,c);a.json=b;k(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c,d){d=A(a,null,"xhr",[a,null,a.jqXHR]);-1===f.inArray(!0,d)&&("parsererror"==c?O(a,0,"Invalid JSON response",1):4===b.readyState&&O(a,0,"Ajax error",7));K(a,!1)}};a.oAjaxData=b;A(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(g,
+a.sAjaxSource,f.map(b,function(a,b){return{name:b,value:a}}),k,a):a.sAjaxSource||"string"===typeof h?a.jqXHR=f.ajax(f.extend(n,{url:h||a.sAjaxSource})):"function"===typeof h?a.jqXHR=h.call(g,b,k,a):(a.jqXHR=f.ajax(f.extend(n,h)),h.data=l)}function qb(a){return a.bAjaxDataGet?(a.iDraw++,K(a,!0),va(a,zb(a),function(b){Ab(a,b)}),!1):!0}function zb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,h=a.aoPreSearchCols,g=[],k=Y(a);var l=a._iDisplayStart;var n=!1!==d.bPaginate?a._iDisplayLength:
+-1;var m=function(a,b){g.push({name:a,value:b})};m("sEcho",a.iDraw);m("iColumns",c);m("sColumns",J(b,"sName").join(","));m("iDisplayStart",l);m("iDisplayLength",n);var p={draw:a.iDraw,columns:[],order:[],start:l,length:n,search:{value:e.sSearch,regex:e.bRegex}};for(l=0;l<c;l++){var u=b[l];var sa=h[l];n="function"==typeof u.mData?"function":u.mData;p.columns.push({data:n,name:u.sName,searchable:u.bSearchable,orderable:u.bSortable,search:{value:sa.sSearch,regex:sa.bRegex}});m("mDataProp_"+l,n);d.bFilter&&
+(m("sSearch_"+l,sa.sSearch),m("bRegex_"+l,sa.bRegex),m("bSearchable_"+l,u.bSearchable));d.bSort&&m("bSortable_"+l,u.bSortable)}d.bFilter&&(m("sSearch",e.sSearch),m("bRegex",e.bRegex));d.bSort&&(f.each(k,function(a,b){p.order.push({column:b.col,dir:b.dir});m("iSortCol_"+a,b.col);m("sSortDir_"+a,b.dir)}),m("iSortingCols",k.length));b=q.ext.legacy.ajax;return null===b?a.sAjaxSource?g:p:b?g:p}function Ab(a,b){var c=function(a,c){return b[a]!==p?b[a]:b[c]},d=wa(a,b),e=c("sEcho","draw"),h=c("iTotalRecords",
+"recordsTotal");c=c("iTotalDisplayRecords","recordsFiltered");if(e){if(1*e<a.iDraw)return;a.iDraw=1*e}qa(a);a._iRecordsTotal=parseInt(h,10);a._iRecordsDisplay=parseInt(c,10);e=0;for(h=d.length;e<h;e++)R(a,d[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;S(a);a._bInitComplete||xa(a,b);a.bAjaxDataGet=!0;K(a,!1)}function wa(a,b){a=f.isPlainObject(a.ajax)&&a.ajax.dataSrc!==p?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===a?b.aaData||b[a]:""!==a?U(a)(b):b}function ub(a){var b=a.oClasses,c=
+a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,h=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',k=d.sSearch;k=k.match(/_INPUT_/)?k.replace("_INPUT_",g):k+g;b=f("<div/>",{id:h.f?null:c+"_filter","class":b.sFilter}).append(f("<label/>").append(k));h=function(){var b=this.value?this.value:"";b!=e.sSearch&&(ia(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,S(a))};g=null!==a.searchDelay?a.searchDelay:"ssp"===D(a)?400:0;var l=f("input",
+b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",g?Sa(h,g):h).on("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);f(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{l[0]!==y.activeElement&&l.val(e.sSearch)}catch(w){}});return b[0]}function ia(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,h=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive},g=function(a){return a.bEscapeRegex!==
+p?!a.bEscapeRegex:a.bRegex};Ka(a);if("ssp"!=D(a)){Bb(a,b.sSearch,c,g(b),b.bSmart,b.bCaseInsensitive);h(b);for(b=0;b<e.length;b++)Cb(a,e[b].sSearch,b,g(e[b]),e[b].bSmart,e[b].bCaseInsensitive);Db(a)}else h(b);a.bFiltered=!0;A(a,null,"search",[a])}function Db(a){for(var b=q.ext.search,c=a.aiDisplay,d,e,h=0,g=b.length;h<g;h++){for(var k=[],l=0,n=c.length;l<n;l++)e=c[l],d=a.aoData[e],b[h](a,d._aFilterData,e,d._aData,l)&&k.push(e);c.length=0;f.merge(c,k)}}function Cb(a,b,c,d,e,h){if(""!==b){var g=[],k=
+a.aiDisplay;d=Ta(b,d,e,h);for(e=0;e<k.length;e++)b=a.aoData[k[e]]._aFilterData[c],d.test(b)&&g.push(k[e]);a.aiDisplay=g}}function Bb(a,b,c,d,e,h){e=Ta(b,d,e,h);var g=a.oPreviousSearch.sSearch,k=a.aiDisplayMaster;h=[];0!==q.ext.search.length&&(c=!0);var f=Eb(a);if(0>=b.length)a.aiDisplay=k.slice();else{if(f||c||d||g.length>b.length||0!==b.indexOf(g)||a.bSorted)a.aiDisplay=k.slice();b=a.aiDisplay;for(c=0;c<b.length;c++)e.test(a.aoData[b[c]]._sFilterRow)&&h.push(b[c]);a.aiDisplay=h}}function Ta(a,b,
+c,d){a=b?a:Ua(a);c&&(a="^(?=.*?"+f.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0)){var b=a.match(/^"(.*)"$/);a=b?b[1]:a}return a.replace('"',"")}).join(")(?=.*?")+").*$");return new RegExp(a,d?"i":"")}function Eb(a){var b=a.aoColumns,c,d,e=q.ext.type.search;var h=!1;var g=0;for(c=a.aoData.length;g<c;g++){var k=a.aoData[g];if(!k._aFilterData){var f=[];var n=0;for(d=b.length;n<d;n++){h=b[n];if(h.bSearchable){var m=I(a,g,n,"filter");e[h.sType]&&(m=e[h.sType](m));null===m&&(m="");
+"string"!==typeof m&&m.toString&&(m=m.toString())}else m="";m.indexOf&&-1!==m.indexOf("&")&&(ya.innerHTML=m,m=$b?ya.textContent:ya.innerText);m.replace&&(m=m.replace(/[\r\n\u2028]/g,""));f.push(m)}k._aFilterData=f;k._sFilterRow=f.join("  ");h=!0}}return h}function Fb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Gb(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function xb(a){var b=a.sTableId,c=a.aanFeatures.i,
+d=f("<div/>",{"class":a.oClasses.sInfo,id:c?null:b+"_info"});c||(a.aoDrawCallback.push({fn:Hb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),f(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Hb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+1,e=a.fnDisplayEnd(),h=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),k=g?c.sInfo:c.sInfoEmpty;g!==h&&(k+=" "+c.sInfoFiltered);k+=c.sInfoPostFix;k=Ib(a,k);c=c.fnInfoCallback;null!==c&&(k=c.call(a.oInstance,
+a,d,e,h,g,k));f(b).html(k)}}function Ib(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,h=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,h)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(h/e)))}function ja(a){var b=a.iInitDisplayStart,c=a.aoColumns;var d=a.oFeatures;var e=a.bDeferLoading;if(a.bInitialised){sb(a);
+pb(a);ha(a,a.aoHeader);ha(a,a.aoFooter);K(a,!0);d.bAutoWidth&&Ja(a);var h=0;for(d=c.length;h<d;h++){var g=c[h];g.sWidth&&(g.nTh.style.width=B(g.sWidth))}A(a,null,"preInit",[a]);V(a);c=D(a);if("ssp"!=c||e)"ajax"==c?va(a,[],function(c){var d=wa(a,c);for(h=0;h<d.length;h++)R(a,d[h]);a.iInitDisplayStart=b;V(a);K(a,!1);xa(a,c)},a):(K(a,!1),xa(a))}else setTimeout(function(){ja(a)},200)}function xa(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&aa(a);A(a,null,"plugin-init",[a,b]);A(a,"aoInitComplete","init",
+[a,b])}function Va(a,b){b=parseInt(b,10);a._iDisplayLength=b;Wa(a);A(a,null,"length",[a,b])}function tb(a){var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=f.isArray(d[0]),h=e?d[0]:d;d=e?d[1]:d;e=f("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect});for(var g=0,k=h.length;g<k;g++)e[0][g]=new Option("number"===typeof d[g]?a.fnFormatNumber(d[g]):d[g],h[g]);var l=f("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(l[0].id=c+"_length");l.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",
+e[0].outerHTML));f("select",l).val(a._iDisplayLength).on("change.DT",function(b){Va(a,f(this).val());S(a)});f(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&f("select",l).val(d)});return l[0]}function yb(a){var b=a.sPaginationType,c=q.ext.pager[b],d="function"===typeof c,e=function(a){S(a)};b=f("<div/>").addClass(a.oClasses.sPaging+b)[0];var h=a.aanFeatures;d||c.fnInit(a,b,e);h.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,g=a._iDisplayLength,
+f=a.fnRecordsDisplay(),m=-1===g;b=m?0:Math.ceil(b/g);g=m?1:Math.ceil(f/g);f=c(b,g);var p;m=0;for(p=h.p.length;m<p;m++)Ra(a,"pageButton")(a,h.p[m],m,f,b,g)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Xa(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,h=a.fnRecordsDisplay();0===h||-1===e?d=0:"number"===typeof b?(d=b*e,d>h&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<h&&(d+=e):"last"==b?d=Math.floor((h-1)/e)*e:O(a,0,"Unknown paging action: "+b,5);b=
+a._iDisplayStart!==d;a._iDisplayStart=d;b&&(A(a,null,"page",[a]),c&&S(a));return b}function vb(a){return f("<div/>",{id:a.aanFeatures.r?null:a.sTableId+"_processing","class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function K(a,b){a.oFeatures.bProcessing&&f(a.aanFeatures.r).css("display",b?"block":"none");A(a,null,"processing",[a,b])}function wb(a){var b=f(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,
+h=a.oClasses,g=b.children("caption"),k=g.length?g[0]._captionSide:null,l=f(b[0].cloneNode(!1)),n=f(b[0].cloneNode(!1)),m=b.children("tfoot");m.length||(m=null);l=f("<div/>",{"class":h.sScrollWrapper}).append(f("<div/>",{"class":h.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?d?B(d):null:"100%"}).append(f("<div/>",{"class":h.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(l.removeAttr("id").css("margin-left",0).append("top"===k?g:null).append(b.children("thead"))))).append(f("<div/>",
+{"class":h.sScrollBody}).css({position:"relative",overflow:"auto",width:d?B(d):null}).append(b));m&&l.append(f("<div/>",{"class":h.sScrollFoot}).css({overflow:"hidden",border:0,width:d?d?B(d):null:"100%"}).append(f("<div/>",{"class":h.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",0).append("bottom"===k?g:null).append(b.children("tfoot")))));b=l.children();var p=b[0];h=b[1];var u=m?b[2]:null;if(d)f(h).on("scroll.DT",function(a){a=this.scrollLeft;p.scrollLeft=a;m&&(u.scrollLeft=a)});
+f(h).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=p;a.nScrollBody=h;a.nScrollFoot=u;a.aoDrawCallback.push({fn:na,sName:"scrolling"});return l[0]}function na(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY;b=b.iBarWidth;var h=f(a.nScrollHead),g=h[0].style,k=h.children("div"),l=k[0].style,n=k.children("table");k=a.nScrollBody;var m=f(k),w=k.style,u=f(a.nScrollFoot).children("div"),q=u.children("table"),t=f(a.nTHead),r=f(a.nTable),v=r[0],za=v.style,T=a.nTFoot?f(a.nTFoot):null,A=a.oBrowser,
+x=A.bScrollOversize,ac=J(a.aoColumns,"nTh"),Ya=[],y=[],z=[],C=[],G,H=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};var D=k.scrollHeight>k.clientHeight;if(a.scrollBarVis!==D&&a.scrollBarVis!==p)a.scrollBarVis=D,aa(a);else{a.scrollBarVis=D;r.children("thead, tfoot").remove();if(T){var E=T.clone().prependTo(r);var F=T.find("tr");E=E.find("tr")}var I=t.clone().prependTo(r);t=t.find("tr");D=I.find("tr");I.find("th, td").removeAttr("tabindex");
+c||(w.width="100%",h[0].style.width="100%");f.each(ua(a,I),function(b,c){G=ba(a,b);c.style.width=a.aoColumns[G].sWidth});T&&N(function(a){a.style.width=""},E);h=r.outerWidth();""===c?(za.width="100%",x&&(r.find("tbody").height()>k.offsetHeight||"scroll"==m.css("overflow-y"))&&(za.width=B(r.outerWidth()-b)),h=r.outerWidth()):""!==d&&(za.width=B(d),h=r.outerWidth());N(H,D);N(function(a){z.push(a.innerHTML);Ya.push(B(f(a).css("width")))},D);N(function(a,b){-1!==f.inArray(a,ac)&&(a.style.width=Ya[b])},
+t);f(D).height(0);T&&(N(H,E),N(function(a){C.push(a.innerHTML);y.push(B(f(a).css("width")))},E),N(function(a,b){a.style.width=y[b]},F),f(E).height(0));N(function(a,b){a.innerHTML='<div class="dataTables_sizing">'+z[b]+"</div>";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=Ya[b]},D);T&&N(function(a,b){a.innerHTML='<div class="dataTables_sizing">'+C[b]+"</div>";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=y[b]},E);r.outerWidth()<
+h?(F=k.scrollHeight>k.offsetHeight||"scroll"==m.css("overflow-y")?h+b:h,x&&(k.scrollHeight>k.offsetHeight||"scroll"==m.css("overflow-y"))&&(za.width=B(F-b)),""!==c&&""===d||O(a,1,"Possible column misalignment",6)):F="100%";w.width=B(F);g.width=B(F);T&&(a.nScrollFoot.style.width=B(F));!e&&x&&(w.height=B(v.offsetHeight+b));c=r.outerWidth();n[0].style.width=B(c);l.width=B(c);d=r.height()>k.clientHeight||"scroll"==m.css("overflow-y");e="padding"+(A.bScrollbarLeft?"Left":"Right");l[e]=d?b+"px":"0px";T&&
+(q[0].style.width=B(c),u[0].style.width=B(c),u[0].style[e]=d?b+"px":"0px");r.children("colgroup").insertBefore(r.children("thead"));m.trigger("scroll");!a.bSorted&&!a.bFiltered||a._drawHold||(k.scrollTop=0)}}function N(a,b,c){for(var d=0,e=0,h=b.length,g,k;e<h;){g=b[e].firstChild;for(k=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,k,d):a(g,d),d++),g=g.nextSibling,k=c?k.nextSibling:null;e++}}function Ja(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,h=d.sX,g=d.sXInner,k=c.length,l=oa(a,"bVisible"),
+n=f("th",a.nTHead),m=b.getAttribute("width"),p=b.parentNode,u=!1,q,t=a.oBrowser;d=t.bScrollOversize;(q=b.style.width)&&-1!==q.indexOf("%")&&(m=q);for(q=0;q<l.length;q++){var r=c[l[q]];null!==r.sWidth&&(r.sWidth=Jb(r.sWidthOrig,p),u=!0)}if(d||!u&&!h&&!e&&k==W(a)&&k==n.length)for(q=0;q<k;q++)l=ba(a,q),null!==l&&(c[l].sWidth=B(n.eq(q).width()));else{k=f(b).clone().css("visibility","hidden").removeAttr("id");k.find("tbody tr").remove();var v=f("<tr/>").appendTo(k.find("tbody"));k.find("thead, tfoot").remove();
+k.append(f(a.nTHead).clone()).append(f(a.nTFoot).clone());k.find("tfoot th, tfoot td").css("width","");n=ua(a,k.find("thead")[0]);for(q=0;q<l.length;q++)r=c[l[q]],n[q].style.width=null!==r.sWidthOrig&&""!==r.sWidthOrig?B(r.sWidthOrig):"",r.sWidthOrig&&h&&f(n[q]).append(f("<div/>").css({width:r.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(q=0;q<l.length;q++)u=l[q],r=c[u],f(Kb(a,u)).clone(!1).append(r.sContentPadding).appendTo(v);f("[name]",k).removeAttr("name");r=f("<div/>").css(h||
+e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(k).appendTo(p);h&&g?k.width(g):h?(k.css("width","auto"),k.removeAttr("width"),k.width()<p.clientWidth&&m&&k.width(p.clientWidth)):e?k.width(p.clientWidth):m&&k.width(m);for(q=e=0;q<l.length;q++)p=f(n[q]),g=p.outerWidth()-p.width(),p=t.bBounding?Math.ceil(n[q].getBoundingClientRect().width):p.outerWidth(),e+=p,c[l[q]].sWidth=B(p-g);b.style.width=B(e);r.remove()}m&&(b.style.width=B(m));!m&&!h||a._reszEvt||(b=function(){f(z).on("resize.DT-"+
+a.sInstance,Sa(function(){aa(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0)}function Jb(a,b){if(!a)return 0;a=f("<div/>").css("width",B(a)).appendTo(b||y.body);b=a[0].offsetWidth;a.remove();return b}function Kb(a,b){var c=Lb(a,b);if(0>c)return null;var d=a.aoData[c];return d.nTr?d.anCells[b]:f("<td/>").html(I(a,c,b,"display"))[0]}function Lb(a,b){for(var c,d=-1,e=-1,h=0,g=a.aoData.length;h<g;h++)c=I(a,h,b,"display")+"",c=c.replace(bc,""),c=c.replace(/&nbsp;/g," "),c.length>d&&(d=c.length,e=h);return e}
+function B(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Y(a){var b=[],c=a.aoColumns;var d=a.aaSortingFixed;var e=f.isPlainObject(d);var h=[];var g=function(a){a.length&&!f.isArray(a[0])?h.push(a):f.merge(h,a)};f.isArray(d)&&g(d);e&&d.pre&&g(d.pre);g(a.aaSorting);e&&d.post&&g(d.post);for(a=0;a<h.length;a++){var k=h[a][0];g=c[k].aDataSort;d=0;for(e=g.length;d<e;d++){var l=g[d];var n=c[l].sType||"string";h[a]._idx===p&&(h[a]._idx=f.inArray(h[a][1],c[l].asSorting));
+b.push({src:k,col:l,dir:h[a][1],index:h[a]._idx,type:n,formatter:q.ext.type.order[n+"-pre"]})}}return b}function rb(a){var b,c=[],d=q.ext.type.order,e=a.aoData,h=0,g=a.aiDisplayMaster;Ka(a);var k=Y(a);var f=0;for(b=k.length;f<b;f++){var n=k[f];n.formatter&&h++;Mb(a,n.col)}if("ssp"!=D(a)&&0!==k.length){f=0;for(b=g.length;f<b;f++)c[g[f]]=f;h===k.length?g.sort(function(a,b){var d,h=k.length,g=e[a]._aSortData,f=e[b]._aSortData;for(d=0;d<h;d++){var l=k[d];var m=g[l.col];var n=f[l.col];m=m<n?-1:m>n?1:0;
+if(0!==m)return"asc"===l.dir?m:-m}m=c[a];n=c[b];return m<n?-1:m>n?1:0}):g.sort(function(a,b){var h,g=k.length,f=e[a]._aSortData,l=e[b]._aSortData;for(h=0;h<g;h++){var m=k[h];var n=f[m.col];var p=l[m.col];m=d[m.type+"-"+m.dir]||d["string-"+m.dir];n=m(n,p);if(0!==n)return n}n=c[a];p=c[b];return n<p?-1:n>p?1:0})}a.bSorted=!0}function Nb(a){var b=a.aoColumns,c=Y(a);a=a.oLanguage.oAria;for(var d=0,e=b.length;d<e;d++){var h=b[d];var g=h.asSorting;var k=h.sTitle.replace(/<.*?>/g,"");var f=h.nTh;f.removeAttribute("aria-sort");
+h.bSortable&&(0<c.length&&c[0].col==d?(f.setAttribute("aria-sort","asc"==c[0].dir?"ascending":"descending"),h=g[c[0].index+1]||g[0]):h=g[0],k+="asc"===h?a.sSortAscending:a.sSortDescending);f.setAttribute("aria-label",k)}}function Za(a,b,c,d){var e=a.aaSorting,h=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===p&&(c=f.inArray(a[1],h));return c+1<h.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=f.inArray(b,J(e,"0")),-1!==c?(b=g(e[c],!0),null===
+b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=h[b],e[c]._idx=b)):(e.push([b,h[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=h[b],e[0]._idx=b):(e.length=0,e.push([b,h[0]]),e[0]._idx=0);V(a);"function"==typeof d&&d(a)}function Qa(a,b,c,d){var e=a.aoColumns[c];$a(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(K(a,!0),setTimeout(function(){Za(a,c,b.shiftKey,d);"ssp"!==D(a)&&K(a,!1)},0)):Za(a,c,b.shiftKey,d))})}function Aa(a){var b=a.aLastSort,
+c=a.oClasses.sSortColumn,d=Y(a),e=a.oFeatures,h;if(e.bSort&&e.bSortClasses){e=0;for(h=b.length;e<h;e++){var g=b[e].src;f(J(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3))}e=0;for(h=d.length;e<h;e++)g=d[e].src,f(J(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Mb(a,b){var c=a.aoColumns[b],d=q.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ca(a,b)));for(var h,g=q.ext.type.order[c.sType+"-pre"],k=0,f=a.aoData.length;k<f;k++)if(c=a.aoData[k],c._aSortData||(c._aSortData=
+[]),!c._aSortData[b]||d)h=d?e[k]:I(a,k,b,"sort"),c._aSortData[b]=g?g(h):h}function Ba(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:f.extend(!0,[],a.aaSorting),search:Fb(a.oPreviousSearch),columns:f.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:Fb(a.aoPreSearchCols[d])}})};A(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Ob(a,b,c){var d,
+e,h=a.aoColumns;b=function(b){if(b&&b.time){var g=A(a,"aoStateLoadParams","stateLoadParams",[a,b]);if(-1===f.inArray(!1,g)&&(g=a.iStateDuration,!(0<g&&b.time<+new Date-1E3*g||b.columns&&h.length!==b.columns.length))){a.oLoadedState=f.extend(!0,{},b);b.start!==p&&(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start);b.length!==p&&(a._iDisplayLength=b.length);b.order!==p&&(a.aaSorting=[],f.each(b.order,function(b,c){a.aaSorting.push(c[0]>=h.length?[0,c[1]]:c)}));b.search!==p&&f.extend(a.oPreviousSearch,
+Gb(b.search));if(b.columns)for(d=0,e=b.columns.length;d<e;d++)g=b.columns[d],g.visible!==p&&(h[d].bVisible=g.visible),g.search!==p&&f.extend(a.aoPreSearchCols[d],Gb(g.search));A(a,"aoStateLoaded","stateLoaded",[a,b])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==p&&b(g)}else c()}function Ca(a){var b=q.settings;a=f.inArray(a,J(b,"nTable"));return-1!==a?b[a]:null}function O(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+
+d);if(b)z.console&&console.log&&console.log(c);else if(b=q.ext,b=b.sErrMode||b.errMode,a&&A(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function M(a,b,c,d){f.isArray(c)?f.each(c,function(c,d){f.isArray(d)?M(a,b,d[0],d[1]):M(a,b,d)}):(d===p&&(d=c),b[c]!==p&&(a[d]=b[c]))}function ab(a,b,c){var d;for(d in b)if(b.hasOwnProperty(d)){var e=b[d];f.isPlainObject(e)?(f.isPlainObject(a[d])||(a[d]={}),f.extend(!0,a[d],e)):c&&"data"!==d&&"aaData"!==
+d&&f.isArray(e)?a[d]=e.slice():a[d]=e}return a}function $a(a,b,c){f(a).on("click.DT",b,function(b){f(a).blur();c(b)}).on("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).on("selectstart.DT",function(){return!1})}function E(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function A(a,b,c,d){var e=[];b&&(e=f.map(a[b].slice().reverse(),function(b,c){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=f.Event(c+".dt"),f(a.nTable).trigger(b,d),e.push(b.result));return e}function Wa(a){var b=a._iDisplayStart,
+c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Ra(a,b){a=a.renderer;var c=q.ext.renderer[b];return f.isPlainObject(a)&&a[b]?c[a[b]]||c._:"string"===typeof a?c[a]||c._:c._}function D(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ka(a,b){var c=Pb.numbers_length,d=Math.floor(c/2);b<=c?a=Z(0,b):a<=d?(a=Z(0,c-2),a.push("ellipsis"),a.push(b-1)):(a>=b-1-d?a=Z(b-(c-2),b):(a=Z(a-d+2,a+d-1),a.push("ellipsis"),
+a.push(b-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0));a.DT_el="span";return a}function Ha(a){f.each({num:function(b){return Da(b,a)},"num-fmt":function(b){return Da(b,a,bb)},"html-num":function(b){return Da(b,a,Ea)},"html-num-fmt":function(b){return Da(b,a,Ea,bb)}},function(b,c){C.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(C.type.search[b+a]=C.type.search.html)})}function Qb(a){return function(){var b=[Ca(this[q.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return q.ext.internal[a].apply(this,
+b)}}var q=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new v(Ca(this[C.iApiIndex])):new v(this)};this.fnAddData=function(a,b){var c=this.api(!0);a=f.isArray(a)&&(f.isArray(a[0])||f.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===p||b)&&c.draw();return a.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===p||a?b.draw(!1):
+(""!==d.sX||""!==d.sY)&&na(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===p||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0);a=d.rows(a);var e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===p||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,f){e=this.api(!0);null===b||b===p?
+e.search(a,c,d,f):e.column(b).search(a,c,d,f);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==p){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==p||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==p?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),
+[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){a=this.api(!0).page(a);(b===p||b)&&a.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===p||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return Ca(this[C.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=
+function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===p||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===p||e)&&h.columns.adjust();(d===p||d)&&h.draw();return 0};this.fnVersionCheck=C.fnVersionCheck;var b=this,c=a===p,d=this.length;c&&(a={});this.oApi=this.internal=C.internal;for(var e in q.ext.internal)e&&(this[e]=Qb(e));this.each(function(){var e={},g=1<d?ab(e,a,!0):a,k=0,l;e=this.getAttribute("id");var n=!1,m=q.defaults,w=f(this);if("table"!=
+this.nodeName.toLowerCase())O(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{jb(m);kb(m.column);L(m,m,!0);L(m.column,m.column,!0);L(m,f.extend(g,w.data()),!0);var u=q.settings;k=0;for(l=u.length;k<l;k++){var t=u[k];if(t.nTable==this||t.nTHead&&t.nTHead.parentNode==this||t.nTFoot&&t.nTFoot.parentNode==this){var v=g.bRetrieve!==p?g.bRetrieve:m.bRetrieve;if(c||v)return t.oInstance;if(g.bDestroy!==p?g.bDestroy:m.bDestroy){t.oInstance.fnDestroy();break}else{O(t,0,"Cannot reinitialise DataTable",
+3);return}}if(t.sTableId==this.id){u.splice(k,1);break}}if(null===e||""===e)this.id=e="DataTables_Table_"+q.ext._unique++;var r=f.extend(!0,{},q.models.oSettings,{sDestroyWidth:w[0].style.width,sInstance:e,sTableId:e});r.nTable=this;r.oApi=b.internal;r.oInit=g;u.push(r);r.oInstance=1===b.length?b:w.dataTable();jb(g);Ga(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=f.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);g=ab(f.extend(!0,{},m),g);M(r.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));
+M(r,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]);M(r.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],
+["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);M(r.oLanguage,g,"fnInfoCallback");E(r,"aoDrawCallback",g.fnDrawCallback,"user");E(r,"aoServerParams",g.fnServerParams,"user");E(r,"aoStateSaveParams",g.fnStateSaveParams,"user");E(r,"aoStateLoadParams",g.fnStateLoadParams,"user");E(r,"aoStateLoaded",g.fnStateLoaded,"user");E(r,"aoRowCallback",g.fnRowCallback,"user");E(r,"aoRowCreatedCallback",g.fnCreatedRow,"user");E(r,"aoHeaderCallback",g.fnHeaderCallback,"user");E(r,"aoFooterCallback",g.fnFooterCallback,
+"user");E(r,"aoInitComplete",g.fnInitComplete,"user");E(r,"aoPreDrawCallback",g.fnPreDrawCallback,"user");r.rowIdFn=U(g.rowId);lb(r);var x=r.oClasses;f.extend(x,q.ext.classes,g.oClasses);w.addClass(x.sTable);r.iInitDisplayStart===p&&(r.iInitDisplayStart=g.iDisplayStart,r._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(r.bDeferLoading=!0,e=f.isArray(g.iDeferLoading),r._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,r._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var y=r.oLanguage;
+f.extend(!0,y,g.oLanguage);y.sUrl&&(f.ajax({dataType:"json",url:y.sUrl,success:function(a){Ga(a);L(m.oLanguage,a);f.extend(!0,y,a);ja(r)},error:function(){ja(r)}}),n=!0);null===g.asStripeClasses&&(r.asStripeClasses=[x.sStripeOdd,x.sStripeEven]);e=r.asStripeClasses;var z=w.children("tbody").find("tr").eq(0);-1!==f.inArray(!0,f.map(e,function(a,b){return z.hasClass(a)}))&&(f("tbody tr",this).removeClass(e.join(" ")),r.asDestroyStripes=e.slice());e=[];u=this.getElementsByTagName("thead");0!==u.length&&
+(fa(r.aoHeader,u[0]),e=ua(r));if(null===g.aoColumns)for(u=[],k=0,l=e.length;k<l;k++)u.push(null);else u=g.aoColumns;k=0;for(l=u.length;k<l;k++)Ia(r,e?e[k]:null);nb(r,g.aoColumnDefs,u,function(a,b){ma(r,a,b)});if(z.length){var B=function(a,b){return null!==a.getAttribute("data-"+b)?b:null};f(z[0]).children("th, td").each(function(a,b){var c=r.aoColumns[a];if(c.mData===a){var d=B(b,"sort")||B(b,"order");b=B(b,"filter")||B(b,"search");if(null!==d||null!==b)c.mData={_:a+".display",sort:null!==d?a+".@data-"+
+d:p,type:null!==d?a+".@data-"+d:p,filter:null!==b?a+".@data-"+b:p},ma(r,a)}})}var C=r.oFeatures;e=function(){if(g.aaSorting===p){var a=r.aaSorting;k=0;for(l=a.length;k<l;k++)a[k][1]=r.aoColumns[k].asSorting[0]}Aa(r);C.bSort&&E(r,"aoDrawCallback",function(){if(r.bSorted){var a=Y(r),b={};f.each(a,function(a,c){b[c.src]=c.dir});A(r,null,"order",[r,a,b]);Nb(r)}});E(r,"aoDrawCallback",function(){(r.bSorted||"ssp"===D(r)||C.bDeferRender)&&Aa(r)},"sc");a=w.children("caption").each(function(){this._captionSide=
+f(this).css("caption-side")});var b=w.children("thead");0===b.length&&(b=f("<thead/>").appendTo(w));r.nTHead=b[0];b=w.children("tbody");0===b.length&&(b=f("<tbody/>").appendTo(w));r.nTBody=b[0];b=w.children("tfoot");0===b.length&&0<a.length&&(""!==r.oScroll.sX||""!==r.oScroll.sY)&&(b=f("<tfoot/>").appendTo(w));0===b.length||0===b.children().length?w.addClass(x.sNoFooter):0<b.length&&(r.nTFoot=b[0],fa(r.aoFooter,r.nTFoot));if(g.aaData)for(k=0;k<g.aaData.length;k++)R(r,g.aaData[k]);else(r.bDeferLoading||
+"dom"==D(r))&&pa(r,f(r.nTBody).children("tr"));r.aiDisplay=r.aiDisplayMaster.slice();r.bInitialised=!0;!1===n&&ja(r)};g.bStateSave?(C.bStateSave=!0,E(r,"aoDrawCallback",Ba,"state_save"),Ob(r,g,e)):e()}});b=null;return this},C,t,x,cb={},Rb=/[\r\n\u2028]/g,Ea=/<.*?>/g,cc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,dc=/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\|\$|\^|\-)/g,bb=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,P=function(a){return a&&!0!==a&&"-"!==a?!1:
+!0},Sb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Tb=function(a,b){cb[b]||(cb[b]=new RegExp(Ua(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(cb[b],"."):a},db=function(a,b,c){var d="string"===typeof a;if(P(a))return!0;b&&d&&(a=Tb(a,b));c&&d&&(a=a.replace(bb,""));return!isNaN(parseFloat(a))&&isFinite(a)},Ub=function(a,b,c){return P(a)?!0:P(a)||"string"===typeof a?db(a.replace(Ea,""),b,c)?!0:null:null},J=function(a,b,c){var d=[],e=0,h=a.length;if(c!==
+p)for(;e<h;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<h;e++)a[e]&&d.push(a[e][b]);return d},la=function(a,b,c,d){var e=[],h=0,g=b.length;if(d!==p)for(;h<g;h++)a[b[h]][c]&&e.push(a[b[h]][c][d]);else for(;h<g;h++)e.push(a[b[h]][c]);return e},Z=function(a,b){var c=[];if(b===p){b=0;var d=a}else d=b,b=a;for(a=b;a<d;a++)c.push(a);return c},Vb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},ta=function(a){a:{if(!(2>a.length)){var b=a.slice().sort();for(var c=b[0],d=1,
+e=b.length;d<e;d++){if(b[d]===c){b=!1;break a}c=b[d]}}b=!0}if(b)return a.slice();b=[];e=a.length;var h,g=0;d=0;a:for(;d<e;d++){c=a[d];for(h=0;h<g;h++)if(b[h]===c)continue a;b.push(c);g++}return b};q.util={throttle:function(a,b){var c=b!==p?b:200,d,e;return function(){var b=this,g=+new Date,f=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=p;a.apply(b,f)},c)):(d=g,a.apply(b,f))}},escapeRegex:function(a){return a.replace(dc,"\\$1")}};var F=function(a,b,c){a[b]!==p&&(a[c]=a[b])},da=/\[.*?\]$/,
+X=/\(\)$/,Ua=q.util.escapeRegex,ya=f("<div>")[0],$b=ya.textContent!==p,bc=/<.*?>/g,Sa=q.util.throttle,Wb=[],G=Array.prototype,ec=function(a){var b,c=q.settings,d=f.map(c,function(a,b){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase()){var e=f.inArray(a,d);return-1!==e?[c[e]]:null}if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?b=f(a):a instanceof f&&(b=a)}else return[];if(b)return b.map(function(a){e=f.inArray(this,
+d);return-1!==e?c[e]:null}).toArray()};var v=function(a,b){if(!(this instanceof v))return new v(a,b);var c=[],d=function(a){(a=ec(a))&&c.push.apply(c,a)};if(f.isArray(a))for(var e=0,h=a.length;e<h;e++)d(a[e]);else d(a);this.context=ta(c);b&&f.merge(this,b);this.selector={rows:null,cols:null,opts:null};v.extend(this,this,Wb)};q.Api=v;f.extend(v.prototype,{any:function(){return 0!==this.count()},concat:G.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=
+this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new v(b[a],this[a]):null},filter:function(a){var b=[];if(G.filter)b=G.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new v(this.context,b)},flatten:function(){var a=[];return new v(this.context,a.concat.apply(a,this.toArray()))},join:G.join,indexOf:G.indexOf||function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===
+a)return b;return-1},iterator:function(a,b,c,d){var e=[],h,g,f=this.context,l,n=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);var m=0;for(h=f.length;m<h;m++){var q=new v(f[m]);if("table"===b){var u=c.call(q,f[m],m);u!==p&&e.push(u)}else if("columns"===b||"rows"===b)u=c.call(q,f[m],this[m],m),u!==p&&e.push(u);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){var t=this[m];"column-rows"===b&&(l=Fa(f[m],n.opts));var x=0;for(g=t.length;x<g;x++)u=t[x],u="cell"===b?c.call(q,f[m],u.row,
+u.column,m,x):c.call(q,f[m],u,m,x,l),u!==p&&e.push(u)}}return e.length||d?(a=new v(f,a?e.concat.apply([],e):e),b=a.selector,b.rows=n.rows,b.cols=n.cols,b.opts=n.opts,a):this},lastIndexOf:G.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(G.map)b=G.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new v(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},
+pop:G.pop,push:G.push,reduce:G.reduce||function(a,b){return mb(this,a,b,0,this.length,1)},reduceRight:G.reduceRight||function(a,b){return mb(this,a,b,this.length-1,-1,-1)},reverse:G.reverse,selector:null,shift:G.shift,slice:function(){return new v(this.context,this)},sort:G.sort,splice:G.splice,toArray:function(){return G.slice.call(this)},to$:function(){return f(this)},toJQuery:function(){return f(this)},unique:function(){return new v(this.context,ta(this))},unshift:G.unshift});v.extend=function(a,
+b,c){if(c.length&&b&&(b instanceof v||b.__dt_wrapper)){var d,e=function(a,b,c){return function(){var d=b.apply(a,arguments);v.extend(d,d,c.methodExt);return d}};var h=0;for(d=c.length;h<d;h++){var g=c[h];b[g.name]="function"===g.type?e(a,g.val,g):"object"===g.type?{}:g.val;b[g.name].__dt_wrapper=!0;v.extend(a,b[g.name],g.propExt)}}};v.register=t=function(a,b){if(f.isArray(a))for(var c=0,d=a.length;c<d;c++)v.register(a[c],b);else{d=a.split(".");var e=Wb,h;a=0;for(c=d.length;a<c;a++){var g=(h=-1!==
+d[a].indexOf("()"))?d[a].replace("()",""):d[a];a:{var k=0;for(var l=e.length;k<l;k++)if(e[k].name===g){k=e[k];break a}k=null}k||(k={name:g,val:{},methodExt:[],propExt:[],type:"object"},e.push(k));a===c-1?(k.val=b,k.type="function"===typeof b?"function":f.isPlainObject(b)?"object":"other"):e=h?k.methodExt:k.propExt}}};v.registerPlural=x=function(a,b,c){v.register(a,c);v.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof v?a.length?f.isArray(a[0])?new v(a.context,
+a[0]):a[0]:p:a})};var fc=function(a,b){if("number"===typeof a)return[b[a]];var c=f.map(b,function(a,b){return a.nTable});return f(c).filter(a).map(function(a){a=f.inArray(this,c);return b[a]}).toArray()};t("tables()",function(a){return a?new v(fc(a,this.context)):this});t("table()",function(a){a=this.tables(a);var b=a.context;return b.length?new v(b[0]):a});x("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});x("tables().body()","table().body()",
+function(){return this.iterator("table",function(a){return a.nTBody},1)});x("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});x("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});x("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});t("draw()",function(a){return this.iterator("table",function(b){"page"===
+a?S(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),V(b,!1===a))})});t("page()",function(a){return a===p?this.page.info().page:this.iterator("table",function(b){Xa(b,a)})});t("page.info()",function(a){if(0===this.context.length)return p;a=this.context[0];var b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,
+serverSide:"ssp"===D(a)}});t("page.len()",function(a){return a===p?0!==this.context.length?this.context[0]._iDisplayLength:p:this.iterator("table",function(b){Va(b,a)})});var Xb=function(a,b,c){if(c){var d=new v(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==D(a))V(a,b);else{K(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();va(a,[],function(c){qa(a);c=wa(a,c);for(var d=0,e=c.length;d<e;d++)R(a,c[d]);V(a,b);K(a,!1)})}};t("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});
+t("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});t("ajax.reload()",function(a,b){return this.iterator("table",function(c){Xb(c,!1===b,a)})});t("ajax.url()",function(a){var b=this.context;if(a===p){if(0===b.length)return p;b=b[0];return b.ajax?f.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){f.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});t("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Xb(c,
+!1===b,a)})});var eb=function(a,b,c,d,e){var h=[],g,k,l;var n=typeof b;b&&"string"!==n&&"function"!==n&&b.length!==p||(b=[b]);n=0;for(k=b.length;n<k;n++){var m=b[n]&&b[n].split&&!b[n].match(/[\[\(:]/)?b[n].split(","):[b[n]];var q=0;for(l=m.length;q<l;q++)(g=c("string"===typeof m[q]?f.trim(m[q]):m[q]))&&g.length&&(h=h.concat(g))}a=C.selector[a];if(a.length)for(n=0,k=a.length;n<k;n++)h=a[n](d,e,h);return ta(h)},fb=function(a){a||(a={});a.filter&&a.search===p&&(a.search=a.filter);return f.extend({search:"none",
+order:"current",page:"all"},a)},gb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Fa=function(a,b){var c=[],d=a.aiDisplay;var e=a.aiDisplayMaster;var h=b.search;var g=b.order;b=b.page;if("ssp"==D(a))return"removed"===h?[]:Z(0,e.length);if("current"==b)for(g=a._iDisplayStart,a=a.fnDisplayEnd();g<a;g++)c.push(d[g]);else if("current"==g||"applied"==g)if("none"==h)c=e.slice();else if("applied"==h)c=
+d.slice();else{if("removed"==h){var k={};g=0;for(a=d.length;g<a;g++)k[d[g]]=null;c=f.map(e,function(a){return k.hasOwnProperty(a)?null:a})}}else if("index"==g||"original"==g)for(g=0,a=a.aoData.length;g<a;g++)"none"==h?c.push(g):(e=f.inArray(g,d),(-1===e&&"removed"==h||0<=e&&"applied"==h)&&c.push(g));return c},gc=function(a,b,c){var d;return eb("row",b,function(b){var e=Sb(b),g=a.aoData;if(null!==e&&!c)return[e];d||(d=Fa(a,c));if(null!==e&&-1!==f.inArray(e,d))return[e];if(null===b||b===p||""===b)return d;
+if("function"===typeof b)return f.map(d,function(a){var c=g[a];return b(a,c._aData,c.nTr)?a:null});if(b.nodeName){e=b._DT_RowIndex;var k=b._DT_CellIndex;if(e!==p)return g[e]&&g[e].nTr===b?[e]:[];if(k)return g[k.row]&&g[k.row].nTr===b.parentNode?[k.row]:[];e=f(b).closest("*[data-dt-row]");return e.length?[e.data("dt-row")]:[]}if("string"===typeof b&&"#"===b.charAt(0)&&(e=a.aIds[b.replace(/^#/,"")],e!==p))return[e.idx];e=Vb(la(a.aoData,d,"nTr"));return f(e).filter(b).map(function(){return this._DT_RowIndex}).toArray()},
+a,c)};t("rows()",function(a,b){a===p?a="":f.isPlainObject(a)&&(b=a,a="");b=fb(b);var c=this.iterator("table",function(c){return gc(c,a,b)},1);c.selector.rows=a;c.selector.opts=b;return c});t("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||p},1)});t("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return la(a.aoData,b,"_aData")},1)});x("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){b=b.aoData[c];
+return"search"===a?b._aFilterData:b._aSortData},1)});x("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ea(b,c,a)})});x("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});x("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var h=0,g=this[d].length;h<g;h++){var f=c[d].rowIdFn(c[d].aoData[this[d][h]]._aData);b.push((!0===a?"#":"")+f)}return new v(c,b)});x("rows().remove()",
+"row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,h=e[c],g,f;e.splice(c,1);var l=0;for(g=e.length;l<g;l++){var n=e[l];var m=n.anCells;null!==n.nTr&&(n.nTr._DT_RowIndex=l);if(null!==m)for(n=0,f=m.length;n<f;n++)m[n]._DT_CellIndex.row=l}ra(b.aiDisplayMaster,c);ra(b.aiDisplay,c);ra(a[d],c,!1);0<b._iRecordsDisplay&&b._iRecordsDisplay--;Wa(b);c=b.rowIdFn(h._aData);c!==p&&delete b.aIds[c]});this.iterator("table",function(a){for(var b=0,d=a.aoData.length;b<d;b++)a.aoData[b].idx=
+b});return this});t("rows.add()",function(a){var b=this.iterator("table",function(b){var c,d=[];var g=0;for(c=a.length;g<c;g++){var f=a[g];f.nodeName&&"TR"===f.nodeName.toUpperCase()?d.push(pa(b,f)[0]):d.push(R(b,f))}return d},1),c=this.rows(-1);c.pop();f.merge(c,b);return c});t("row()",function(a,b){return gb(this.rows(a,b))});t("row().data()",function(a){var b=this.context;if(a===p)return b.length&&this.length?b[0].aoData[this[0]]._aData:p;var c=b[0].aoData[this[0]];c._aData=a;f.isArray(a)&&c.nTr.id&&
+Q(b[0].rowId)(a,c.nTr.id);ea(b[0],this[0],"data");return this});t("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});t("row.add()",function(a){a instanceof f&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?pa(b,a)[0]:R(b,a)});return this.row(b[0])});var hc=function(a,b,c,d){var e=[],h=function(b,c){if(f.isArray(b)||b instanceof f)for(var d=0,g=b.length;d<g;d++)h(b[d],c);else b.nodeName&&
+"tr"===b.nodeName.toLowerCase()?e.push(b):(d=f("<tr><td/></tr>").addClass(c),f("td",d).addClass(c).html(b)[0].colSpan=W(a),e.push(d[0]))};h(c,d);b._details&&b._details.detach();b._details=f(e);b._detailsShow&&b._details.insertAfter(b.nTr)},hb=function(a,b){var c=a.context;c.length&&(a=c[0].aoData[b!==p?b:a[0]])&&a._details&&(a._details.remove(),a._detailsShow=p,a._details=p)},Yb=function(a,b){var c=a.context;c.length&&a.length&&(a=c[0].aoData[a[0]],a._details&&((a._detailsShow=b)?a._details.insertAfter(a.nTr):
+a._details.detach(),ic(c[0])))},ic=function(a){var b=new v(a),c=a.aoData;b.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<J(c,"_details").length&&(b.on("draw.dt.DT_details",function(d,e){a===e&&b.rows({page:"current"}).eq(0).each(function(a){a=c[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),b.on("column-visibility.dt.DT_details",function(b,e,f,g){if(a===e)for(e=W(e),f=0,g=c.length;f<g;f++)b=c[f],b._details&&b._details.children("td[colspan]").attr("colspan",
+e)}),b.on("destroy.dt.DT_details",function(d,e){if(a===e)for(d=0,e=c.length;d<e;d++)c[d]._details&&hb(b,d)}))};t("row().child()",function(a,b){var c=this.context;if(a===p)return c.length&&this.length?c[0].aoData[this[0]]._details:p;!0===a?this.child.show():!1===a?hb(this):c.length&&this.length&&hc(c[0],c[0].aoData[this[0]],a,b);return this});t(["row().child.show()","row().child().show()"],function(a){Yb(this,!0);return this});t(["row().child.hide()","row().child().hide()"],function(){Yb(this,!1);
+return this});t(["row().child.remove()","row().child().remove()"],function(){hb(this);return this});t("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var jc=/^([^:]+):(name|visIdx|visible)$/,Zb=function(a,b,c,d,e){c=[];d=0;for(var f=e.length;d<f;d++)c.push(I(a,e[d],b));return c},kc=function(a,b,c){var d=a.aoColumns,e=J(d,"sName"),h=J(d,"nTh");return eb("column",b,function(b){var g=Sb(b);if(""===b)return Z(d.length);if(null!==
+g)return[0<=g?g:d.length+g];if("function"===typeof b){var l=Fa(a,c);return f.map(d,function(c,d){return b(d,Zb(a,d,0,0,l),h[d])?d:null})}var n="string"===typeof b?b.match(jc):"";if(n)switch(n[2]){case "visIdx":case "visible":g=parseInt(n[1],10);if(0>g){var m=f.map(d,function(a,b){return a.bVisible?b:null});return[m[m.length+g]]}return[ba(a,g)];case "name":return f.map(e,function(a,b){return a===n[1]?b:null});default:return[]}if(b.nodeName&&b._DT_CellIndex)return[b._DT_CellIndex.column];g=f(h).filter(b).map(function(){return f.inArray(this,
+h)}).toArray();if(g.length||!b.nodeName)return g;g=f(b).closest("*[data-dt-column]");return g.length?[g.data("dt-column")]:[]},a,c)};t("columns()",function(a,b){a===p?a="":f.isPlainObject(a)&&(b=a,a="");b=fb(b);var c=this.iterator("table",function(c){return kc(c,a,b)},1);c.selector.cols=a;c.selector.opts=b;return c});x("columns().header()","column().header()",function(a,b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});x("columns().footer()","column().footer()",function(a,
+b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});x("columns().data()","column().data()",function(){return this.iterator("column-rows",Zb,1)});x("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});x("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return la(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});x("columns().nodes()",
+"column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return la(a.aoData,e,"anCells",b)},1)});x("columns().visible()","column().visible()",function(a,b){var c=this,d=this.iterator("column",function(b,c){if(a===p)return b.aoColumns[c].bVisible;var d=b.aoColumns,e=d[c],h=b.aoData,n;if(a!==p&&e.bVisible!==a){if(a){var m=f.inArray(!0,J(d,"bVisible"),c+1);d=0;for(n=h.length;d<n;d++){var q=h[d].nTr;b=h[d].anCells;q&&q.insertBefore(b[c],b[m]||null)}}else f(J(b.aoData,"anCells",
+c)).detach();e.bVisible=a}});a!==p&&this.iterator("table",function(d){ha(d,d.aoHeader);ha(d,d.aoFooter);d.aiDisplay.length||f(d.nTBody).find("td[colspan]").attr("colspan",W(d));Ba(d);c.iterator("column",function(c,d){A(c,null,"column-visibility",[c,d,a,b])});(b===p||b)&&c.columns.adjust()});return d});x("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?ca(b,c):c},1)});t("columns.adjust()",function(){return this.iterator("table",function(a){aa(a)},
+1)});t("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return ba(c,b);if("fromData"===a||"toVisible"===a)return ca(c,b)}});t("column()",function(a,b){return gb(this.columns(a,b))});var lc=function(a,b,c){var d=a.aoData,e=Fa(a,c),h=Vb(la(d,e,"anCells")),g=f([].concat.apply([],h)),k,l=a.aoColumns.length,n,m,q,u,t,v;return eb("cell",b,function(b){var c="function"===typeof b;if(null===b||b===p||c){n=[];m=0;for(q=e.length;m<q;m++)for(k=
+e[m],u=0;u<l;u++)t={row:k,column:u},c?(v=d[k],b(t,I(a,k,u),v.anCells?v.anCells[u]:null)&&n.push(t)):n.push(t);return n}if(f.isPlainObject(b))return b.column!==p&&b.row!==p&&-1!==f.inArray(b.row,e)?[b]:[];c=g.filter(b).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();if(c.length||!b.nodeName)return c;v=f(b).closest("*[data-dt-row]");return v.length?[{row:v.data("dt-row"),column:v.data("dt-column")}]:[]},a,c)};t("cells()",function(a,b,c){f.isPlainObject(a)&&
+(a.row===p?(c=a,a=null):(c=b,b=null));f.isPlainObject(b)&&(c=b,b=null);if(null===b||b===p)return this.iterator("table",function(b){return lc(b,a,fb(c))});var d=c?{page:c.page,order:c.order,search:c.search}:{},e=this.columns(b,d),h=this.rows(a,d),g,k,l,n;d=this.iterator("table",function(a,b){a=[];g=0;for(k=h[b].length;g<k;g++)for(l=0,n=e[b].length;l<n;l++)a.push({row:h[b][g],column:e[b][l]});return a},1);d=c&&c.selected?this.cells(d,c):d;f.extend(d.selector,{cols:b,rows:a,opts:c});return d});x("cells().nodes()",
+"cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&&a.anCells?a.anCells[c]:p},1)});t("cells().data()",function(){return this.iterator("cell",function(a,b,c){return I(a,b,c)},1)});x("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});x("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return I(b,c,d,a)},
+1)});x("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:ca(a,c)}},1)});x("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){ea(b,c,a,d)})});t("cell()",function(a,b,c){return gb(this.cells(a,b,c))});t("cell().data()",function(a){var b=this.context,c=this[0];if(a===p)return b.length&&c.length?I(b[0],c[0].row,c[0].column):p;ob(b[0],c[0].row,c[0].column,a);ea(b[0],c[0].row,
+"data",c[0].column);return this});t("order()",function(a,b){var c=this.context;if(a===p)return 0!==c.length?c[0].aaSorting:p;"number"===typeof a?a=[[a,b]]:a.length&&!f.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});t("order.listener()",function(a,b,c){return this.iterator("table",function(d){Qa(d,a,b,c)})});t("order.fixed()",function(a){if(!a){var b=this.context;b=b.length?b[0].aaSortingFixed:p;return f.isArray(b)?{pre:b}:
+b}return this.iterator("table",function(b){b.aaSortingFixed=f.extend(!0,{},a)})});t(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];f.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});t("search()",function(a,b,c,d){var e=this.context;return a===p?0!==e.length?e[0].oPreviousSearch.sSearch:p:this.iterator("table",function(e){e.oFeatures.bFilter&&ia(e,f.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===
+c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});x("columns().search()","column().search()",function(a,b,c,d){return this.iterator("column",function(e,h){var g=e.aoPreSearchCols;if(a===p)return g[h].sSearch;e.oFeatures.bFilter&&(f.extend(g[h],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ia(e,e.oPreviousSearch,1))})});t("state()",function(){return this.context.length?this.context[0].oSavedState:null});t("state.clear()",function(){return this.iterator("table",
+function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});t("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});t("state.save()",function(){return this.iterator("table",function(a){Ba(a)})});q.versionCheck=q.fnVersionCheck=function(a){var b=q.version.split(".");a=a.split(".");for(var c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};q.isDataTable=q.fnIsDataTable=function(a){var b=f(a).get(0),c=!1;if(a instanceof
+q.Api)return!0;f.each(q.settings,function(a,e){a=e.nScrollHead?f("table",e.nScrollHead)[0]:null;var d=e.nScrollFoot?f("table",e.nScrollFoot)[0]:null;if(e.nTable===b||a===b||d===b)c=!0});return c};q.tables=q.fnTables=function(a){var b=!1;f.isPlainObject(a)&&(b=a.api,a=a.visible);var c=f.map(q.settings,function(b){if(!a||a&&f(b.nTable).is(":visible"))return b.nTable});return b?new v(c):c};q.camelToHungarian=L;t("$()",function(a,b){b=this.rows(b).nodes();b=f(b);return f([].concat(b.filter(a).toArray(),
+b.find(a).toArray()))});f.each(["on","one","off"],function(a,b){t(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0]=f.map(a[0].split(/\s/),function(a){return a.match(/\.dt\b/)?a:a+".dt"}).join(" ");var d=f(this.tables().nodes());d[b].apply(d,a);return this})});t("clear()",function(){return this.iterator("table",function(a){qa(a)})});t("settings()",function(){return new v(this.context,this.context)});t("init()",function(){var a=this.context;return a.length?a[0].oInit:null});t("data()",
+function(){return this.iterator("table",function(a){return J(a.aoData,"_aData")}).flatten()});t("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,h=b.nTBody,g=b.nTHead,k=b.nTFoot,l=f(e);h=f(h);var n=f(b.nTableWrapper),m=f.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);a||(new v(b)).columns().visible(!0);n.off(".DT").find(":not(tbody *)").off(".DT");f(z).off(".DT-"+b.sInstance);
+e!=g.parentNode&&(l.children("thead").detach(),l.append(g));k&&e!=k.parentNode&&(l.children("tfoot").detach(),l.append(k));b.aaSorting=[];b.aaSortingFixed=[];Aa(b);f(m).removeClass(b.asStripeClasses.join(" "));f("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);h.children().detach();h.append(m);g=a?"remove":"detach";l[g]();n[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),l.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&&
+h.children().each(function(a){f(this).addClass(b.asDestroyStripes[a%p])}));c=f.inArray(b,q.settings);-1!==c&&q.settings.splice(c,1)})});f.each(["column","row","cell"],function(a,b){t(b+"s().every()",function(a){var c=this.selector.opts,e=this;return this.iterator(b,function(d,f,k,l,n){a.call(e[b](f,"cell"===b?k:c,"cell"===b?c:p),f,k,l,n)})})});t("i18n()",function(a,b,c){var d=this.context[0];a=U(a)(d.oLanguage);a===p&&(a=b);c!==p&&f.isPlainObject(a)&&(a=a[c]!==p?a[c]:a._);return a.replace("%d",c)});
+q.version="1.10.20";q.settings=[];q.models={};q.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};q.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};q.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,
+sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};q.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,
+bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},
+fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",
+sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:f.extend({},q.models.oSearch),sAjaxDataProp:"data",
+sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};H(q.defaults);q.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};H(q.defaults.column);q.models.oSettings=
+{oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},
+aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,
+aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:p,oAjaxData:p,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==D(this)?1*this._iRecordsTotal:
+this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==D(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};q.ext=C={buttons:{},
+classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:q.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:q.version};f.extend(C,{afnFiltering:C.search,aTypes:C.type.detect,ofnSearch:C.type.search,oSort:C.type.order,afnSortData:C.order,aoFeatures:C.feature,oApi:C.internal,oStdClasses:C.classes,oPagination:C.pager});
+f.extend(q.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",
+sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",
+sJUIHeader:"",sJUIFooter:""});var Pb=q.ext.pager;f.extend(Pb,{simple:function(a,b){return["previous","next"]},full:function(a,b){return["first","previous","next","last"]},numbers:function(a,b){return[ka(a,b)]},simple_numbers:function(a,b){return["previous",ka(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ka(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ka(a,b),"last"]},_numbers:ka,numbers_length:7});f.extend(!0,q.ext.renderer,{pageButton:{_:function(a,b,
+c,d,e,h){var g=a.oClasses,k=a.oLanguage.oPaginate,l=a.oLanguage.oAria.paginate||{},n,m,q=0,t=function(b,d){var p,r=g.sPageButtonDisabled,u=function(b){Xa(a,b.data.action,!0)};var w=0;for(p=d.length;w<p;w++){var v=d[w];if(f.isArray(v)){var x=f("<"+(v.DT_el||"div")+"/>").appendTo(b);t(x,v)}else{n=null;m=v;x=a.iTabIndex;switch(v){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break;case "first":n=k.sFirst;0===e&&(x=-1,m+=" "+r);break;case "previous":n=k.sPrevious;0===e&&(x=-1,m+=
+" "+r);break;case "next":n=k.sNext;e===h-1&&(x=-1,m+=" "+r);break;case "last":n=k.sLast;e===h-1&&(x=-1,m+=" "+r);break;default:n=v+1,m=e===v?g.sPageButtonActive:""}null!==n&&(x=f("<a>",{"class":g.sPageButton+" "+m,"aria-controls":a.sTableId,"aria-label":l[v],"data-dt-idx":q,tabindex:x,id:0===c&&"string"===typeof v?a.sTableId+"_"+v:null}).html(n).appendTo(b),$a(x,{action:v},u),q++)}}};try{var v=f(b).find(y.activeElement).data("dt-idx")}catch(mc){}t(f(b).empty(),d);v!==p&&f(b).find("[data-dt-idx="+
+v+"]").focus()}}});f.extend(q.ext.type.detect,[function(a,b){b=b.oLanguage.sDecimal;return db(a,b)?"num"+b:null},function(a,b){if(a&&!(a instanceof Date)&&!cc.test(a))return null;b=Date.parse(a);return null!==b&&!isNaN(b)||P(a)?"date":null},function(a,b){b=b.oLanguage.sDecimal;return db(a,b,!0)?"num-fmt"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Ub(a,b)?"html-num"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Ub(a,b,!0)?"html-num-fmt"+b:null},function(a,b){return P(a)||"string"===
+typeof a&&-1!==a.indexOf("<")?"html":null}]);f.extend(q.ext.type.search,{html:function(a){return P(a)?a:"string"===typeof a?a.replace(Rb," ").replace(Ea,""):""},string:function(a){return P(a)?a:"string"===typeof a?a.replace(Rb," "):a}});var Da=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Tb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};f.extend(C.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return P(a)?
+"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return P(a)?"":"string"===typeof a?a.toLowerCase():a.toString?a.toString():""},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});Ha("");f.extend(!0,q.ext.renderer,{header:{_:function(a,b,c,d){f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc:
+c.sSortingClass))})},jqueryui:function(a,b,c,d){f("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(f("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc:c.sSortingClass),b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass("asc"==
+k[e]?d.sSortJUIAsc:"desc"==k[e]?d.sSortJUIDesc:c.sSortingClassJUI))})}}});var ib=function(a){return"string"===typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):a};q.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return ib(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
+a)+f+(e||"")}}},text:function(){return{display:ib,filter:ib}}};f.extend(q.ext.internal,{_fnExternApiFunc:Qb,_fnBuildAjax:va,_fnAjaxUpdate:qb,_fnAjaxParameters:zb,_fnAjaxUpdateDraw:Ab,_fnAjaxDataSrc:wa,_fnAddColumn:Ia,_fnColumnOptions:ma,_fnAdjustColumnSizing:aa,_fnVisibleToColumnIndex:ba,_fnColumnIndexToVisible:ca,_fnVisbleColumns:W,_fnGetColumns:oa,_fnColumnTypes:Ka,_fnApplyColumnDefs:nb,_fnHungarianMap:H,_fnCamelToHungarian:L,_fnLanguageCompat:Ga,_fnBrowserDetect:lb,_fnAddData:R,_fnAddTr:pa,_fnNodeToDataIndex:function(a,
+b){return b._DT_RowIndex!==p?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return f.inArray(c,a.aoData[b].anCells)},_fnGetCellData:I,_fnSetCellData:ob,_fnSplitObjNotation:Na,_fnGetObjectDataFn:U,_fnSetObjectDataFn:Q,_fnGetDataMaster:Oa,_fnClearTable:qa,_fnDeleteIndex:ra,_fnInvalidate:ea,_fnGetRowElements:Ma,_fnCreateTr:La,_fnBuildHead:pb,_fnDrawHead:ha,_fnDraw:S,_fnReDraw:V,_fnAddOptionsHtml:sb,_fnDetectHeader:fa,_fnGetUniqueThs:ua,_fnFeatureHtmlFilter:ub,_fnFilterComplete:ia,_fnFilterCustom:Db,
+_fnFilterColumn:Cb,_fnFilter:Bb,_fnFilterCreateSearch:Ta,_fnEscapeRegex:Ua,_fnFilterData:Eb,_fnFeatureHtmlInfo:xb,_fnUpdateInfo:Hb,_fnInfoMacros:Ib,_fnInitialise:ja,_fnInitComplete:xa,_fnLengthChange:Va,_fnFeatureHtmlLength:tb,_fnFeatureHtmlPaginate:yb,_fnPageChange:Xa,_fnFeatureHtmlProcessing:vb,_fnProcessingDisplay:K,_fnFeatureHtmlTable:wb,_fnScrollDraw:na,_fnApplyToChildren:N,_fnCalculateColumnWidths:Ja,_fnThrottle:Sa,_fnConvertToWidth:Jb,_fnGetWidestNode:Kb,_fnGetMaxLenString:Lb,_fnStringToCss:B,
+_fnSortFlatten:Y,_fnSort:rb,_fnSortAria:Nb,_fnSortListener:Za,_fnSortAttachListener:Qa,_fnSortingClasses:Aa,_fnSortData:Mb,_fnSaveState:Ba,_fnLoadState:Ob,_fnSettingsFromNode:Ca,_fnLog:O,_fnMap:M,_fnBindAction:$a,_fnCallbackReg:E,_fnCallbackFire:A,_fnLengthOverflow:Wa,_fnRenderer:Ra,_fnDataSource:D,_fnRowAttributes:Pa,_fnExtend:ab,_fnCalculateEnd:function(){}});f.fn.dataTable=q;q.$=f;f.fn.dataTableSettings=q.settings;f.fn.dataTableExt=q.ext;f.fn.DataTable=function(a){return f(this).dataTable(a).api()};
+f.each(q,function(a,b){f.fn.DataTable[a]=b});return f.fn.dataTable});
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,60 @@
+table.DTFC_Cloned tr {
+  background-color: white;
+  margin-bottom: 0;
+}
+
+div.DTFC_LeftHeadWrapper table,
+div.DTFC_RightHeadWrapper table {
+  border-bottom: none !important;
+  margin-bottom: 0 !important;
+  background-color: white;
+}
+
+div.DTFC_LeftBodyWrapper table,
+div.DTFC_RightBodyWrapper table {
+  border-top: none;
+  margin: 0 !important;
+  z-index: 2;
+}
+div.DTFC_LeftBodyWrapper table thead .sorting:before, div.DTFC_LeftBodyWrapper table thead .sorting:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,
+div.DTFC_LeftBodyWrapper table thead .sorting:before,
+div.DTFC_LeftBodyWrapper table thead .sorting:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,
+div.DTFC_RightBodyWrapper table thead .sorting:before,
+div.DTFC_RightBodyWrapper table thead .sorting:after,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:after,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:after,
+div.DTFC_RightBodyWrapper table thead .sorting:before,
+div.DTFC_RightBodyWrapper table thead .sorting:after,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:after,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:after {
+  display: none;
+}
+div.DTFC_LeftBodyWrapper table tbody tr:first-child th,
+div.DTFC_LeftBodyWrapper table tbody tr:first-child td,
+div.DTFC_RightBodyWrapper table tbody tr:first-child th,
+div.DTFC_RightBodyWrapper table tbody tr:first-child td {
+  border-top: none;
+}
+
+div.DTFC_LeftFootWrapper table,
+div.DTFC_RightFootWrapper table {
+  border-top: none;
+  margin-top: 0 !important;
+  background-color: white;
+}
+
+div.DTFC_Blocker {
+  background-color: white;
+}
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.DTFC_Cloned tr{background-color:white;margin-bottom:0}div.DTFC_LeftHeadWrapper table,div.DTFC_RightHeadWrapper table{border-bottom:none !important;margin-bottom:0 !important;background-color:white}div.DTFC_LeftBodyWrapper table,div.DTFC_RightBodyWrapper table{border-top:none;margin:0 !important;z-index:2}div.DTFC_LeftBodyWrapper table thead .sorting:before,div.DTFC_LeftBodyWrapper table thead .sorting:after,div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,div.DTFC_LeftBodyWrapper table thead .sorting:before,div.DTFC_LeftBodyWrapper table thead .sorting:after,div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,div.DTFC_RightBodyWrapper table thead .sorting:before,div.DTFC_RightBodyWrapper table thead .sorting:after,div.DTFC_RightBodyWrapper table thead .sorting_asc:before,div.DTFC_RightBodyWrapper table thead .sorting_asc:after,div.DTFC_RightBodyWrapper table thead .sorting_desc:before,div.DTFC_RightBodyWrapper table thead .sorting_desc:after,div.DTFC_RightBodyWrapper table thead .sorting:before,div.DTFC_RightBodyWrapper table thead .sorting:after,div.DTFC_RightBodyWrapper table thead .sorting_asc:before,div.DTFC_RightBodyWrapper table thead .sorting_asc:after,div.DTFC_RightBodyWrapper table thead .sorting_desc:before,div.DTFC_RightBodyWrapper table thead .sorting_desc:after{display:none}div.DTFC_LeftBodyWrapper table tbody tr:first-child th,div.DTFC_LeftBodyWrapper table tbody tr:first-child td,div.DTFC_RightBodyWrapper table tbody tr:first-child th,div.DTFC_RightBodyWrapper table tbody tr:first-child td{border-top:none}div.DTFC_LeftFootWrapper table,div.DTFC_RightFootWrapper table{border-top:none;margin-top:0 !important;background-color:white}div.DTFC_Blocker{background-color:white}
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap4.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,64 @@
+table.DTFC_Cloned tr {
+  background-color: white;
+  margin-bottom: 0;
+}
+
+div.DTFC_LeftHeadWrapper table,
+div.DTFC_RightHeadWrapper table {
+  border-bottom: none !important;
+  margin-bottom: 0 !important;
+  background-color: white;
+}
+
+div.DTFC_LeftBodyWrapper table,
+div.DTFC_RightBodyWrapper table {
+  border-top: none;
+  margin: 0 !important;
+  z-index: 2;
+}
+div.DTFC_LeftBodyWrapper table thead .sorting:before, div.DTFC_LeftBodyWrapper table thead .sorting:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,
+div.DTFC_LeftBodyWrapper table thead .sorting:before,
+div.DTFC_LeftBodyWrapper table thead .sorting:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,
+div.DTFC_RightBodyWrapper table thead .sorting:before,
+div.DTFC_RightBodyWrapper table thead .sorting:after,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:after,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:after,
+div.DTFC_RightBodyWrapper table thead .sorting:before,
+div.DTFC_RightBodyWrapper table thead .sorting:after,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:after,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:after {
+  display: none;
+}
+div.DTFC_LeftBodyWrapper table tbody tr:first-child th,
+div.DTFC_LeftBodyWrapper table tbody tr:first-child td,
+div.DTFC_RightBodyWrapper table tbody tr:first-child th,
+div.DTFC_RightBodyWrapper table tbody tr:first-child td {
+  border-top: none;
+}
+
+div.DTFC_LeftFootWrapper table,
+div.DTFC_RightFootWrapper table {
+  border-top: none;
+  margin-top: 0 !important;
+  background-color: white;
+}
+
+div.DTFC_Blocker {
+  background-color: white;
+}
+
+table.dataTable.table-striped.DTFC_Cloned tbody {
+  background-color: white;
+}
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.DTFC_Cloned tr{background-color:white;margin-bottom:0}div.DTFC_LeftHeadWrapper table,div.DTFC_RightHeadWrapper table{border-bottom:none !important;margin-bottom:0 !important;background-color:white}div.DTFC_LeftBodyWrapper table,div.DTFC_RightBodyWrapper table{border-top:none;margin:0 !important;z-index:2}div.DTFC_LeftBodyWrapper table thead .sorting:before,div.DTFC_LeftBodyWrapper table thead .sorting:after,div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,div.DTFC_LeftBodyWrapper table thead .sorting:before,div.DTFC_LeftBodyWrapper table thead .sorting:after,div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,div.DTFC_RightBodyWrapper table thead .sorting:before,div.DTFC_RightBodyWrapper table thead .sorting:after,div.DTFC_RightBodyWrapper table thead .sorting_asc:before,div.DTFC_RightBodyWrapper table thead .sorting_asc:after,div.DTFC_RightBodyWrapper table thead .sorting_desc:before,div.DTFC_RightBodyWrapper table thead .sorting_desc:after,div.DTFC_RightBodyWrapper table thead .sorting:before,div.DTFC_RightBodyWrapper table thead .sorting:after,div.DTFC_RightBodyWrapper table thead .sorting_asc:before,div.DTFC_RightBodyWrapper table thead .sorting_asc:after,div.DTFC_RightBodyWrapper table thead .sorting_desc:before,div.DTFC_RightBodyWrapper table thead .sorting_desc:after{display:none}div.DTFC_LeftBodyWrapper table tbody tr:first-child th,div.DTFC_LeftBodyWrapper table tbody tr:first-child td,div.DTFC_RightBodyWrapper table tbody tr:first-child th,div.DTFC_RightBodyWrapper table tbody tr:first-child td{border-top:none}div.DTFC_LeftFootWrapper table,div.DTFC_RightFootWrapper table{border-top:none;margin-top:0 !important;background-color:white}div.DTFC_Blocker{background-color:white}table.dataTable.table-striped.DTFC_Cloned tbody{background-color:white}
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.dataTables.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,18 @@
+table.DTFC_Cloned thead,
+table.DTFC_Cloned tfoot {
+  background-color: white;
+}
+
+div.DTFC_Blocker {
+  background-color: white;
+}
+
+div.DTFC_LeftWrapper table.dataTable,
+div.DTFC_RightWrapper table.dataTable {
+  margin-bottom: 0;
+  z-index: 2;
+}
+div.DTFC_LeftWrapper table.dataTable.no-footer,
+div.DTFC_RightWrapper table.dataTable.no-footer {
+  border-bottom: none;
+}
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.dataTables.min.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.DTFC_Cloned thead,table.DTFC_Cloned tfoot{background-color:white}div.DTFC_Blocker{background-color:white}div.DTFC_LeftWrapper table.dataTable,div.DTFC_RightWrapper table.dataTable{margin-bottom:0;z-index:2}div.DTFC_LeftWrapper table.dataTable.no-footer,div.DTFC_RightWrapper table.dataTable.no-footer{border-bottom:none}
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.foundation.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,32 @@
+div.DTFC_LeftHeadWrapper table,
+div.DTFC_LeftBodyWrapper table,
+div.DTFC_LeftFootWrapper table {
+  border-right-width: 0;
+}
+
+div.DTFC_RightHeadWrapper table,
+div.DTFC_RightBodyWrapper table,
+div.DTFC_RightFootWrapper table {
+  border-left-width: 0;
+}
+
+div.DTFC_LeftHeadWrapper table,
+div.DTFC_RightHeadWrapper table {
+  margin-bottom: 0 !important;
+}
+
+div.DTFC_LeftBodyWrapper table,
+div.DTFC_RightBodyWrapper table {
+  border-top: none;
+  margin: 0 !important;
+}
+
+div.DTFC_LeftFootWrapper table,
+div.DTFC_RightFootWrapper table {
+  margin-top: 0 !important;
+  z-index: 2;
+}
+
+div.DTFC_Blocker {
+  background-color: white;
+}
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.foundation.min.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.DTFC_LeftHeadWrapper table,div.DTFC_LeftBodyWrapper table,div.DTFC_LeftFootWrapper table{border-right-width:0}div.DTFC_RightHeadWrapper table,div.DTFC_RightBodyWrapper table,div.DTFC_RightFootWrapper table{border-left-width:0}div.DTFC_LeftHeadWrapper table,div.DTFC_RightHeadWrapper table{margin-bottom:0 !important}div.DTFC_LeftBodyWrapper table,div.DTFC_RightBodyWrapper table{border-top:none;margin:0 !important}div.DTFC_LeftFootWrapper table,div.DTFC_RightFootWrapper table{margin-top:0 !important;z-index:2}div.DTFC_Blocker{background-color:white}
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.jqueryui.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,12 @@
+div.DTFC_LeftWrapper table.dataTable,
+div.DTFC_RightWrapper table.dataTable {
+  z-index: 2;
+}
+div.DTFC_LeftWrapper table.dataTable.no-footer,
+div.DTFC_RightWrapper table.dataTable.no-footer {
+  border-bottom: none;
+}
+
+div.DTFC_Blocker {
+  background-color: white;
+}
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.DTFC_LeftWrapper table.dataTable,div.DTFC_RightWrapper table.dataTable{z-index:2}div.DTFC_LeftWrapper table.dataTable.no-footer,div.DTFC_RightWrapper table.dataTable.no-footer{border-bottom:none}div.DTFC_Blocker{background-color:white}
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.semanticui.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,40 @@
+div.DTFC_LeftWrapper table.ui.table.dataTable {
+  border-right: none;
+}
+
+div.DTFC_RightWrapper table.ui.table.dataTable {
+  border-left: none;
+}
+
+div.DTFC_Blocker {
+  background-color: white;
+}
+
+div.DTFC_LeftWrapper table.dataTable,
+div.DTFC_RightWrapper table.dataTable {
+  z-index: 2;
+}
+
+div.DTFC_LeftHeadWrapper table.ui.table.dataTable,
+div.DTFC_RightHeadWrapper table.ui.table.dataTable {
+  border-bottom: none;
+}
+
+div.DTFC_LeftBodyWrapper table.ui.table.dataTable,
+div.DTFC_RightBodyWrapper table.ui.table.dataTable {
+  border-top: none;
+}
+div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting:after,
+div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting_asc:after,
+div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting_desc:after,
+div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting:after,
+div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting_asc:after,
+div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting_desc:after,
+div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting:after,
+div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting_asc:after,
+div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting_desc:after,
+div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting:after,
+div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting_asc:after,
+div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting_desc:after {
+  display: none;
+}
Index: public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.semanticui.min.css
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/css/fixedColumns.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.DTFC_LeftWrapper table.ui.table.dataTable{border-right:none}div.DTFC_RightWrapper table.ui.table.dataTable{border-left:none}div.DTFC_Blocker{background-color:white}div.DTFC_LeftWrapper table.dataTable,div.DTFC_RightWrapper table.dataTable{z-index:2}div.DTFC_LeftHeadWrapper table.ui.table.dataTable,div.DTFC_RightHeadWrapper table.ui.table.dataTable{border-bottom:none}div.DTFC_LeftBodyWrapper table.ui.table.dataTable,div.DTFC_RightBodyWrapper table.ui.table.dataTable{border-top:none}div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting:after,div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting_asc:after,div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting_desc:after,div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting:after,div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting_asc:after,div.DTFC_LeftBodyWrapper table.ui.table.dataTable thead .sorting_desc:after,div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting:after,div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting_asc:after,div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting_desc:after,div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting:after,div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting_asc:after,div.DTFC_RightBodyWrapper table.ui.table.dataTable thead .sorting_desc:after{display:none}
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/dataTables.fixedColumns.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/dataTables.fixedColumns.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/dataTables.fixedColumns.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1659 @@
+/*! FixedColumns 3.3.0
+ * ©2010-2018 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     FixedColumns
+ * @description Freeze columns in place on a scrolling DataTable
+ * @version     3.3.0
+ * @file        dataTables.fixedColumns.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2018 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+var _firefoxScroll;
+
+/**
+ * When making use of DataTables' x-axis scrolling feature, you may wish to
+ * fix the left most column in place. This plug-in for DataTables provides
+ * exactly this option (note for non-scrolling tables, please use the
+ * FixedHeader plug-in, which can fix headers and footers). Key
+ * features include:
+ *
+ * * Freezes the left or right most columns to the side of the table
+ * * Option to freeze two or more columns
+ * * Full integration with DataTables' scrolling options
+ * * Speed - FixedColumns is fast in its operation
+ *
+ *  @class
+ *  @constructor
+ *  @global
+ *  @param {object} dt DataTables instance. With DataTables 1.10 this can also
+ *    be a jQuery collection, a jQuery selector, DataTables API instance or
+ *    settings object.
+ *  @param {object} [init={}] Configuration object for FixedColumns. Options are
+ *    defined by {@link FixedColumns.defaults}
+ *
+ *  @requires jQuery 1.7+
+ *  @requires DataTables 1.8.0+
+ *
+ *  @example
+ *      var table = $('#example').dataTable( {
+ *        "scrollX": "100%"
+ *      } );
+ *      new $.fn.dataTable.fixedColumns( table );
+ */
+var FixedColumns = function ( dt, init ) {
+	var that = this;
+
+	/* Sanity check - you just know it will happen */
+	if ( ! ( this instanceof FixedColumns ) ) {
+		alert( "FixedColumns warning: FixedColumns must be initialised with the 'new' keyword." );
+		return;
+	}
+
+	if ( init === undefined || init === true ) {
+		init = {};
+	}
+
+	// Use the DataTables Hungarian notation mapping method, if it exists to
+	// provide forwards compatibility for camel case variables
+	var camelToHungarian = $.fn.dataTable.camelToHungarian;
+	if ( camelToHungarian ) {
+		camelToHungarian( FixedColumns.defaults, FixedColumns.defaults, true );
+		camelToHungarian( FixedColumns.defaults, init );
+	}
+
+	// v1.10 allows the settings object to be got form a number of sources
+	var dtSettings = new $.fn.dataTable.Api( dt ).settings()[0];
+
+	/**
+	 * Settings object which contains customisable information for FixedColumns instance
+	 * @namespace
+	 * @extends FixedColumns.defaults
+	 * @private
+	 */
+	this.s = {
+		/**
+		 * DataTables settings objects
+		 *  @type     object
+		 *  @default  Obtained from DataTables instance
+		 */
+		"dt": dtSettings,
+
+		/**
+		 * Number of columns in the DataTable - stored for quick access
+		 *  @type     int
+		 *  @default  Obtained from DataTables instance
+		 */
+		"iTableColumns": dtSettings.aoColumns.length,
+
+		/**
+		 * Original outer widths of the columns as rendered by DataTables - used to calculate
+		 * the FixedColumns grid bounding box
+		 *  @type     array.<int>
+		 *  @default  []
+		 */
+		"aiOuterWidths": [],
+
+		/**
+		 * Original inner widths of the columns as rendered by DataTables - used to apply widths
+		 * to the columns
+		 *  @type     array.<int>
+		 *  @default  []
+		 */
+		"aiInnerWidths": [],
+
+
+		/**
+		 * Is the document layout right-to-left
+		 * @type boolean
+		 */
+		rtl: $(dtSettings.nTable).css('direction') === 'rtl'
+	};
+
+
+	/**
+	 * DOM elements used by the class instance
+	 * @namespace
+	 * @private
+	 *
+	 */
+	this.dom = {
+		/**
+		 * DataTables scrolling element
+		 *  @type     node
+		 *  @default  null
+		 */
+		"scroller": null,
+
+		/**
+		 * DataTables header table
+		 *  @type     node
+		 *  @default  null
+		 */
+		"header": null,
+
+		/**
+		 * DataTables body table
+		 *  @type     node
+		 *  @default  null
+		 */
+		"body": null,
+
+		/**
+		 * DataTables footer table
+		 *  @type     node
+		 *  @default  null
+		 */
+		"footer": null,
+
+		/**
+		 * Display grid elements
+		 * @namespace
+		 */
+		"grid": {
+			/**
+			 * Grid wrapper. This is the container element for the 3x3 grid
+			 *  @type     node
+			 *  @default  null
+			 */
+			"wrapper": null,
+
+			/**
+			 * DataTables scrolling element. This element is the DataTables
+			 * component in the display grid (making up the main table - i.e.
+			 * not the fixed columns).
+			 *  @type     node
+			 *  @default  null
+			 */
+			"dt": null,
+
+			/**
+			 * Left fixed column grid components
+			 * @namespace
+			 */
+			"left": {
+				"wrapper": null,
+				"head": null,
+				"body": null,
+				"foot": null
+			},
+
+			/**
+			 * Right fixed column grid components
+			 * @namespace
+			 */
+			"right": {
+				"wrapper": null,
+				"head": null,
+				"body": null,
+				"foot": null
+			}
+		},
+
+		/**
+		 * Cloned table nodes
+		 * @namespace
+		 */
+		"clone": {
+			/**
+			 * Left column cloned table nodes
+			 * @namespace
+			 */
+			"left": {
+				/**
+				 * Cloned header table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"header": null,
+
+				/**
+				 * Cloned body table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"body": null,
+
+				/**
+				 * Cloned footer table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"footer": null
+			},
+
+			/**
+			 * Right column cloned table nodes
+			 * @namespace
+			 */
+			"right": {
+				/**
+				 * Cloned header table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"header": null,
+
+				/**
+				 * Cloned body table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"body": null,
+
+				/**
+				 * Cloned footer table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"footer": null
+			}
+		}
+	};
+
+	if ( dtSettings._oFixedColumns ) {
+		throw 'FixedColumns already initialised on this table';
+	}
+
+	/* Attach the instance to the DataTables instance so it can be accessed easily */
+	dtSettings._oFixedColumns = this;
+
+	/* Let's do it */
+	if ( ! dtSettings._bInitComplete )
+	{
+		dtSettings.oApi._fnCallbackReg( dtSettings, 'aoInitComplete', function () {
+			that._fnConstruct( init );
+		}, 'FixedColumns' );
+	}
+	else
+	{
+		this._fnConstruct( init );
+	}
+};
+
+
+
+$.extend( FixedColumns.prototype , {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Update the fixed columns - including headers and footers. Note that FixedColumns will
+	 * automatically update the display whenever the host DataTable redraws.
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // at some later point when the table has been manipulated....
+	 *      fc.fnUpdate();
+	 */
+	"fnUpdate": function ()
+	{
+		this._fnDraw( true );
+	},
+
+
+	/**
+	 * Recalculate the resizes of the 3x3 grid that FixedColumns uses for display of the table.
+	 * This is useful if you update the width of the table container. Note that FixedColumns will
+	 * perform this function automatically when the window.resize event is fired.
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // Resize the table container and then have FixedColumns adjust its layout....
+	 *      $('#content').width( 1200 );
+	 *      fc.fnRedrawLayout();
+	 */
+	"fnRedrawLayout": function ()
+	{
+		this._fnColCalc();
+		this._fnGridLayout();
+		this.fnUpdate();
+	},
+
+
+	/**
+	 * Mark a row such that it's height should be recalculated when using 'semiauto' row
+	 * height matching. This function will have no effect when 'none' or 'auto' row height
+	 * matching is used.
+	 *  @param   {Node} nTr TR element that should have it's height recalculated
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // manipulate the table - mark the row as needing an update then update the table
+	 *      // this allows the redraw performed by DataTables fnUpdate to recalculate the row
+	 *      // height
+	 *      fc.fnRecalculateHeight();
+	 *      table.fnUpdate( $('#example tbody tr:eq(0)')[0], ["insert date", 1, 2, 3 ... ]);
+	 */
+	"fnRecalculateHeight": function ( nTr )
+	{
+		delete nTr._DTTC_iHeight;
+		nTr.style.height = 'auto';
+	},
+
+
+	/**
+	 * Set the height of a given row - provides cross browser compatibility
+	 *  @param   {Node} nTarget TR element that should have it's height recalculated
+	 *  @param   {int} iHeight Height in pixels to set
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // You may want to do this after manipulating a row in the fixed column
+	 *      fc.fnSetRowHeight( $('#example tbody tr:eq(0)')[0], 50 );
+	 */
+	"fnSetRowHeight": function ( nTarget, iHeight )
+	{
+		nTarget.style.height = iHeight+"px";
+	},
+
+
+	/**
+	 * Get data index information about a row or cell in the table body.
+	 * This function is functionally identical to fnGetPosition in DataTables,
+	 * taking the same parameter (TH, TD or TR node) and returning exactly the
+	 * the same information (data index information). THe difference between
+	 * the two is that this method takes into account the fixed columns in the
+	 * table, so you can pass in nodes from the master table, or the cloned
+	 * tables and get the index position for the data in the main table.
+	 *  @param {node} node TR, TH or TD element to get the information about
+	 *  @returns {int} If nNode is given as a TR, then a single index is 
+	 *    returned, or if given as a cell, an array of [row index, column index
+	 *    (visible), column index (all)] is given.
+	 */
+	"fnGetPosition": function ( node )
+	{
+		var idx;
+		var inst = this.s.dt.oInstance;
+
+		if ( ! $(node).parents('.DTFC_Cloned').length )
+		{
+			// Not in a cloned table
+			return inst.fnGetPosition( node );
+		}
+		else
+		{
+			// Its in the cloned table, so need to look up position
+			if ( node.nodeName.toLowerCase() === 'tr' ) {
+				idx = $(node).index();
+				return inst.fnGetPosition( $('tr', this.s.dt.nTBody)[ idx ] );
+			}
+			else
+			{
+				var colIdx = $(node).index();
+				idx = $(node.parentNode).index();
+				var row = inst.fnGetPosition( $('tr', this.s.dt.nTBody)[ idx ] );
+
+				return [
+					row,
+					colIdx,
+					inst.oApi._fnVisibleToColumnIndex( this.s.dt, colIdx )
+				];
+			}
+		}
+	},
+
+	fnToFixedNode: function ( rowIdx, colIdx )
+	{
+		var found;
+
+		if ( colIdx < this.s.iLeftColumns ) {
+			found = $(this.dom.clone.left.body).find('[data-dt-row='+rowIdx+'][data-dt-column='+colIdx+']');
+		}
+		else if ( colIdx >= this.s.iRightColumns ) {
+			found = $(this.dom.clone.right.body).find('[data-dt-row='+rowIdx+'][data-dt-column='+colIdx+']');
+		}
+
+		if ( found && found.length ) {
+			return found[0];
+		}
+
+		// Fallback - non-fixed node
+		var table = new $.fn.dataTable.Api(this.s.dt);
+		return table.cell(rowIdx, colIdx).node();
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods (they are of course public in JS, but recommended as private)
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Initialisation for FixedColumns
+	 *  @param   {Object} oInit User settings for initialisation
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnConstruct": function ( oInit )
+	{
+		var i, iLen, iWidth,
+			that = this;
+
+		/* Sanity checking */
+		if ( typeof this.s.dt.oInstance.fnVersionCheck != 'function' ||
+		     this.s.dt.oInstance.fnVersionCheck( '1.8.0' ) !== true )
+		{
+			alert( "FixedColumns "+FixedColumns.VERSION+" required DataTables 1.8.0 or later. "+
+				"Please upgrade your DataTables installation" );
+			return;
+		}
+
+		if ( this.s.dt.oScroll.sX === "" )
+		{
+			this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "FixedColumns is not needed (no "+
+				"x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for "+
+				"column fixing when scrolling is not enabled" );
+			return;
+		}
+
+		/* Apply the settings from the user / defaults */
+		this.s = $.extend( true, this.s, FixedColumns.defaults, oInit );
+
+		/* Set up the DOM as we need it and cache nodes */
+		var classes = this.s.dt.oClasses;
+		this.dom.grid.dt = $(this.s.dt.nTable).parents('div.'+classes.sScrollWrapper)[0];
+		this.dom.scroller = $('div.'+classes.sScrollBody, this.dom.grid.dt )[0];
+
+		/* Set up the DOM that we want for the fixed column layout grid */
+		this._fnColCalc();
+		this._fnGridSetup();
+
+		/* Event handlers */
+		var mouseController;
+		var mouseDown = false;
+
+		// When the mouse is down (drag scroll) the mouse controller cannot
+		// change, as the browser keeps the original element as the scrolling one
+		$(this.s.dt.nTableWrapper).on( 'mousedown.DTFC', function (e) {
+			if ( e.button === 0 ) {
+				mouseDown = true;
+
+				$(document).one( 'mouseup', function () {
+					mouseDown = false;
+				} );
+			}
+		} );
+
+		// When the body is scrolled - scroll the left and right columns
+		$(this.dom.scroller)
+			.on( 'mouseover.DTFC touchstart.DTFC', function () {
+				if ( ! mouseDown ) {
+					mouseController = 'main';
+				}
+			} )
+			.on( 'scroll.DTFC', function (e) {
+				if ( ! mouseController && e.originalEvent ) {
+					mouseController = 'main';
+				}
+
+				if ( mouseController === 'main' ) {
+					if ( that.s.iLeftColumns > 0 ) {
+						that.dom.grid.left.liner.scrollTop = that.dom.scroller.scrollTop;
+					}
+					if ( that.s.iRightColumns > 0 ) {
+						that.dom.grid.right.liner.scrollTop = that.dom.scroller.scrollTop;
+					}
+				}
+			} );
+
+		var wheelType = 'onwheel' in document.createElement('div') ?
+			'wheel.DTFC' :
+			'mousewheel.DTFC';
+
+		if ( that.s.iLeftColumns > 0 ) {
+			// When scrolling the left column, scroll the body and right column
+			$(that.dom.grid.left.liner)
+				.on( 'mouseover.DTFC touchstart.DTFC', function () {
+					if ( ! mouseDown ) {
+						mouseController = 'left';
+					}
+				} )
+				.on( 'scroll.DTFC', function ( e ) {
+					if ( ! mouseController && e.originalEvent ) {
+						mouseController = 'left';
+					}
+
+					if ( mouseController === 'left' ) {
+						that.dom.scroller.scrollTop = that.dom.grid.left.liner.scrollTop;
+						if ( that.s.iRightColumns > 0 ) {
+							that.dom.grid.right.liner.scrollTop = that.dom.grid.left.liner.scrollTop;
+						}
+					}
+				} )
+				.on( wheelType, function(e) {
+					// Pass horizontal scrolling through
+					var xDelta = e.type === 'wheel' ?
+						-e.originalEvent.deltaX :
+						e.originalEvent.wheelDeltaX;
+					that.dom.scroller.scrollLeft -= xDelta;
+				} );
+		}
+
+		if ( that.s.iRightColumns > 0 ) {
+			// When scrolling the right column, scroll the body and the left column
+			$(that.dom.grid.right.liner)
+				.on( 'mouseover.DTFC touchstart.DTFC', function () {
+					if ( ! mouseDown ) {
+						mouseController = 'right';
+					}
+				} )
+				.on( 'scroll.DTFC', function ( e ) {
+					if ( ! mouseController && e.originalEvent ) {
+						mouseController = 'right';
+					}
+
+					if ( mouseController === 'right' ) {
+						that.dom.scroller.scrollTop = that.dom.grid.right.liner.scrollTop;
+						if ( that.s.iLeftColumns > 0 ) {
+							that.dom.grid.left.liner.scrollTop = that.dom.grid.right.liner.scrollTop;
+						}
+					}
+				} )
+				.on( wheelType, function(e) {
+					// Pass horizontal scrolling through
+					var xDelta = e.type === 'wheel' ?
+						-e.originalEvent.deltaX :
+						e.originalEvent.wheelDeltaX;
+					that.dom.scroller.scrollLeft -= xDelta;
+				} );
+		}
+
+		$(window).on( 'resize.DTFC', function () {
+			that._fnGridLayout.call( that );
+		} );
+
+		var bFirstDraw = true;
+		var jqTable = $(this.s.dt.nTable);
+
+		jqTable
+			.on( 'draw.dt.DTFC', function () {
+				that._fnColCalc();
+				that._fnDraw.call( that, bFirstDraw );
+				bFirstDraw = false;
+			} )
+			.on( 'column-sizing.dt.DTFC', function () {
+				that._fnColCalc();
+				that._fnGridLayout( that );
+			} )
+			.on( 'column-visibility.dt.DTFC', function ( e, settings, column, vis, recalc ) {
+				if ( recalc === undefined || recalc ) {
+					that._fnColCalc();
+					that._fnGridLayout( that );
+					that._fnDraw( true );
+				}
+			} )
+			.on( 'select.dt.DTFC deselect.dt.DTFC', function ( e, dt, type, indexes ) {
+				if ( e.namespace === 'dt' ) {
+					that._fnDraw( false );
+				}
+			} )
+			.on( 'destroy.dt.DTFC', function () {
+				jqTable.off( '.DTFC' );
+
+				$(that.dom.scroller).off( '.DTFC' );
+				$(window).off( '.DTFC' );
+				$(that.s.dt.nTableWrapper).off( '.DTFC' );
+
+				$(that.dom.grid.left.liner).off( '.DTFC '+wheelType );
+				$(that.dom.grid.left.wrapper).remove();
+
+				$(that.dom.grid.right.liner).off( '.DTFC '+wheelType );
+				$(that.dom.grid.right.wrapper).remove();
+			} );
+
+		/* Get things right to start with - note that due to adjusting the columns, there must be
+		 * another redraw of the main table. It doesn't need to be a full redraw however.
+		 */
+		this._fnGridLayout();
+		this.s.dt.oInstance.fnDraw(false);
+	},
+
+
+	/**
+	 * Calculate the column widths for the grid layout
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnColCalc": function ()
+	{
+		var that = this;
+		var iLeftWidth = 0;
+		var iRightWidth = 0;
+
+		this.s.aiInnerWidths = [];
+		this.s.aiOuterWidths = [];
+
+		$.each( this.s.dt.aoColumns, function (i, col) {
+			var th = $(col.nTh);
+			var border;
+
+			if ( ! th.filter(':visible').length ) {
+				that.s.aiInnerWidths.push( 0 );
+				that.s.aiOuterWidths.push( 0 );
+			}
+			else
+			{
+				// Inner width is used to assign widths to cells
+				// Outer width is used to calculate the container
+				var iWidth = th.outerWidth();
+
+				// When working with the left most-cell, need to add on the
+				// table's border to the outerWidth, since we need to take
+				// account of it, but it isn't in any cell
+				if ( that.s.aiOuterWidths.length === 0 ) {
+					border = $(that.s.dt.nTable).css('border-left-width');
+					iWidth += typeof border === 'string' && border.indexOf('px') === -1 ?
+						1 :
+						parseInt( border, 10 );
+				}
+
+				// Likewise with the final column on the right
+				if ( that.s.aiOuterWidths.length === that.s.dt.aoColumns.length-1 ) {
+					border = $(that.s.dt.nTable).css('border-right-width');
+					iWidth += typeof border === 'string' && border.indexOf('px') === -1 ?
+						1 :
+						parseInt( border, 10 );
+				}
+
+				that.s.aiOuterWidths.push( iWidth );
+				that.s.aiInnerWidths.push( th.width() );
+
+				if ( i < that.s.iLeftColumns )
+				{
+					iLeftWidth += iWidth;
+				}
+
+				if ( that.s.iTableColumns-that.s.iRightColumns <= i )
+				{
+					iRightWidth += iWidth;
+				}
+			}
+		} );
+
+		this.s.iLeftWidth = iLeftWidth;
+		this.s.iRightWidth = iRightWidth;
+	},
+
+
+	/**
+	 * Set up the DOM for the fixed column. The way the layout works is to create a 1x3 grid
+	 * for the left column, the DataTable (for which we just reuse the scrolling element DataTable
+	 * puts into the DOM) and the right column. In each of he two fixed column elements there is a
+	 * grouping wrapper element and then a head, body and footer wrapper. In each of these we then
+	 * place the cloned header, body or footer tables. This effectively gives as 3x3 grid structure.
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnGridSetup": function ()
+	{
+		var that = this;
+		var oOverflow = this._fnDTOverflow();
+		var block;
+
+		this.dom.body = this.s.dt.nTable;
+		this.dom.header = this.s.dt.nTHead.parentNode;
+		this.dom.header.parentNode.parentNode.style.position = "relative";
+
+		var nSWrapper =
+			$('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;">'+
+				'<div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;" aria-hidden="true">'+
+					'<div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div>'+
+					'<div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; height:0; overflow:hidden;">'+
+						'<div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div>'+
+					'</div>'+
+					'<div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div>'+
+				'</div>'+
+				'<div class="DTFC_RightWrapper" style="position:absolute; top:0; right:0;" aria-hidden="true">'+
+					'<div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;">'+
+						'<div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div>'+
+					'</div>'+
+					'<div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; height:0; overflow:hidden;">'+
+						'<div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div>'+
+					'</div>'+
+					'<div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;">'+
+						'<div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div>'+
+					'</div>'+
+				'</div>'+
+			'</div>')[0];
+		var nLeft = nSWrapper.childNodes[0];
+		var nRight = nSWrapper.childNodes[1];
+
+		this.dom.grid.dt.parentNode.insertBefore( nSWrapper, this.dom.grid.dt );
+		nSWrapper.appendChild( this.dom.grid.dt );
+
+		this.dom.grid.wrapper = nSWrapper;
+
+		if ( this.s.iLeftColumns > 0 )
+		{
+			this.dom.grid.left.wrapper = nLeft;
+			this.dom.grid.left.head = nLeft.childNodes[0];
+			this.dom.grid.left.body = nLeft.childNodes[1];
+			this.dom.grid.left.liner = $('div.DTFC_LeftBodyLiner', nSWrapper)[0];
+
+			nSWrapper.appendChild( nLeft );
+		}
+
+		if ( this.s.iRightColumns > 0 )
+		{
+			this.dom.grid.right.wrapper = nRight;
+			this.dom.grid.right.head = nRight.childNodes[0];
+			this.dom.grid.right.body = nRight.childNodes[1];
+			this.dom.grid.right.liner = $('div.DTFC_RightBodyLiner', nSWrapper)[0];
+
+			nRight.style.right = oOverflow.bar+"px";
+
+			block = $('div.DTFC_RightHeadBlocker', nSWrapper)[0];
+			block.style.width = oOverflow.bar+"px";
+			block.style.right = -oOverflow.bar+"px";
+			this.dom.grid.right.headBlock = block;
+
+			block = $('div.DTFC_RightFootBlocker', nSWrapper)[0];
+			block.style.width = oOverflow.bar+"px";
+			block.style.right = -oOverflow.bar+"px";
+			this.dom.grid.right.footBlock = block;
+
+			nSWrapper.appendChild( nRight );
+		}
+
+		if ( this.s.dt.nTFoot )
+		{
+			this.dom.footer = this.s.dt.nTFoot.parentNode;
+			if ( this.s.iLeftColumns > 0 )
+			{
+				this.dom.grid.left.foot = nLeft.childNodes[2];
+			}
+			if ( this.s.iRightColumns > 0 )
+			{
+				this.dom.grid.right.foot = nRight.childNodes[2];
+			}
+		}
+
+		// RTL support - swap the position of the left and right columns (#48)
+		if ( this.s.rtl ) {
+			$('div.DTFC_RightHeadBlocker', nSWrapper).css( {
+				left: -oOverflow.bar+'px',
+				right: ''
+			} );
+		}
+	},
+
+
+	/**
+	 * Style and position the grid used for the FixedColumns layout
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnGridLayout": function ()
+	{
+		var that = this;
+		var oGrid = this.dom.grid;
+		var iWidth = $(oGrid.wrapper).width();
+		var iBodyHeight = this.s.dt.nTable.parentNode.offsetHeight;
+		var iFullHeight = this.s.dt.nTable.parentNode.parentNode.offsetHeight;
+		var oOverflow = this._fnDTOverflow();
+		var iLeftWidth = this.s.iLeftWidth;
+		var iRightWidth = this.s.iRightWidth;
+		var rtl = $(this.dom.body).css('direction') === 'rtl';
+		var wrapper;
+		var scrollbarAdjust = function ( node, width ) {
+			if ( ! oOverflow.bar ) {
+				// If there is no scrollbar (Macs) we need to hide the auto scrollbar
+				node.style.width = (width+20)+"px";
+				node.style.paddingRight = "20px";
+				node.style.boxSizing = "border-box";
+			}
+			else if ( that._firefoxScrollError() ) {
+				// See the above function for why this is required
+				if ( $(node).height() > 34 ) {
+					node.style.width = (width+oOverflow.bar)+"px";
+				}
+			}
+			else {
+				// Otherwise just overflow by the scrollbar
+				node.style.width = (width+oOverflow.bar)+"px";
+			}
+		};
+
+		// When x scrolling - don't paint the fixed columns over the x scrollbar
+		if ( oOverflow.x )
+		{
+			iBodyHeight -= oOverflow.bar;
+		}
+
+		oGrid.wrapper.style.height = iFullHeight+"px";
+
+		if ( this.s.iLeftColumns > 0 )
+		{
+			wrapper = oGrid.left.wrapper;
+			wrapper.style.width = iLeftWidth+'px';
+			wrapper.style.height = '1px';
+
+			// Swap the position of the left and right columns for rtl (#48)
+			// This is always up against the edge, scrollbar on the far side
+			if ( rtl ) {
+				wrapper.style.left = '';
+				wrapper.style.right = 0;
+			}
+			else {
+				wrapper.style.left = 0;
+				wrapper.style.right = '';
+			}
+
+			oGrid.left.body.style.height = iBodyHeight+"px";
+			if ( oGrid.left.foot ) {
+				oGrid.left.foot.style.top = (oOverflow.x ? oOverflow.bar : 0)+"px"; // shift footer for scrollbar
+			}
+
+			scrollbarAdjust( oGrid.left.liner, iLeftWidth );
+			oGrid.left.liner.style.height = iBodyHeight+"px";
+			oGrid.left.liner.style.maxHeight = iBodyHeight+"px";
+		}
+
+		if ( this.s.iRightColumns > 0 )
+		{
+			wrapper = oGrid.right.wrapper;
+			wrapper.style.width = iRightWidth+'px';
+			wrapper.style.height = '1px';
+
+			// Need to take account of the vertical scrollbar
+			if ( this.s.rtl ) {
+				wrapper.style.left = oOverflow.y ? oOverflow.bar+'px' : 0;
+				wrapper.style.right = '';
+			}
+			else {
+				wrapper.style.left = '';
+				wrapper.style.right = oOverflow.y ? oOverflow.bar+'px' : 0;
+			}
+
+			oGrid.right.body.style.height = iBodyHeight+"px";
+			if ( oGrid.right.foot ) {
+				oGrid.right.foot.style.top = (oOverflow.x ? oOverflow.bar : 0)+"px";
+			}
+
+			scrollbarAdjust( oGrid.right.liner, iRightWidth );
+			oGrid.right.liner.style.height = iBodyHeight+"px";
+			oGrid.right.liner.style.maxHeight = iBodyHeight+"px";
+
+			oGrid.right.headBlock.style.display = oOverflow.y ? 'block' : 'none';
+			oGrid.right.footBlock.style.display = oOverflow.y ? 'block' : 'none';
+		}
+	},
+
+
+	/**
+	 * Get information about the DataTable's scrolling state - specifically if the table is scrolling
+	 * on either the x or y axis, and also the scrollbar width.
+	 *  @returns {object} Information about the DataTables scrolling state with the properties:
+	 *    'x', 'y' and 'bar'
+	 *  @private
+	 */
+	"_fnDTOverflow": function ()
+	{
+		var nTable = this.s.dt.nTable;
+		var nTableScrollBody = nTable.parentNode;
+		var out = {
+			"x": false,
+			"y": false,
+			"bar": this.s.dt.oScroll.iBarWidth
+		};
+
+		if ( nTable.offsetWidth > nTableScrollBody.clientWidth )
+		{
+			out.x = true;
+		}
+
+		if ( nTable.offsetHeight > nTableScrollBody.clientHeight )
+		{
+			out.y = true;
+		}
+
+		return out;
+	},
+
+
+	/**
+	 * Clone and position the fixed columns
+	 *  @returns {void}
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnDraw": function ( bAll )
+	{
+		this._fnGridLayout();
+		this._fnCloneLeft( bAll );
+		this._fnCloneRight( bAll );
+
+		/* Draw callback function */
+		if ( this.s.fnDrawCallback !== null )
+		{
+			this.s.fnDrawCallback.call( this, this.dom.clone.left, this.dom.clone.right );
+		}
+
+		/* Event triggering */
+		$(this).trigger( 'draw.dtfc', {
+			"leftClone": this.dom.clone.left,
+			"rightClone": this.dom.clone.right
+		} );
+	},
+
+
+	/**
+	 * Clone the right columns
+	 *  @returns {void}
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnCloneRight": function ( bAll )
+	{
+		if ( this.s.iRightColumns <= 0 ) {
+			return;
+		}
+
+		var that = this,
+			i, jq,
+			aiColumns = [];
+
+		for ( i=this.s.iTableColumns-this.s.iRightColumns ; i<this.s.iTableColumns ; i++ ) {
+			if ( this.s.dt.aoColumns[i].bVisible ) {
+				aiColumns.push( i );
+			}
+		}
+
+		this._fnClone( this.dom.clone.right, this.dom.grid.right, aiColumns, bAll );
+	},
+
+
+	/**
+	 * Clone the left columns
+	 *  @returns {void}
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnCloneLeft": function ( bAll )
+	{
+		if ( this.s.iLeftColumns <= 0 ) {
+			return;
+		}
+
+		var that = this,
+			i, jq,
+			aiColumns = [];
+
+		for ( i=0 ; i<this.s.iLeftColumns ; i++ ) {
+			if ( this.s.dt.aoColumns[i].bVisible ) {
+				aiColumns.push( i );
+			}
+		}
+
+		this._fnClone( this.dom.clone.left, this.dom.grid.left, aiColumns, bAll );
+	},
+
+
+	/**
+	 * Make a copy of the layout object for a header or footer element from DataTables. Note that
+	 * this method will clone the nodes in the layout object.
+	 *  @returns {Array} Copy of the layout array
+	 *  @param   {Object} aoOriginal Layout array from DataTables (aoHeader or aoFooter)
+	 *  @param   {Object} aiColumns Columns to copy
+	 *  @param   {boolean} events Copy cell events or not
+	 *  @private
+	 */
+	"_fnCopyLayout": function ( aoOriginal, aiColumns, events )
+	{
+		var aReturn = [];
+		var aClones = [];
+		var aCloned = [];
+
+		for ( var i=0, iLen=aoOriginal.length ; i<iLen ; i++ )
+		{
+			var aRow = [];
+			aRow.nTr = $(aoOriginal[i].nTr).clone(events, false)[0];
+
+			for ( var j=0, jLen=this.s.iTableColumns ; j<jLen ; j++ )
+			{
+				if ( $.inArray( j, aiColumns ) === -1 )
+				{
+					continue;
+				}
+
+				var iCloned = $.inArray( aoOriginal[i][j].cell, aCloned );
+				if ( iCloned === -1 )
+				{
+					var nClone = $(aoOriginal[i][j].cell).clone(events, false)[0];
+					aClones.push( nClone );
+					aCloned.push( aoOriginal[i][j].cell );
+
+					aRow.push( {
+						"cell": nClone,
+						"unique": aoOriginal[i][j].unique
+					} );
+				}
+				else
+				{
+					aRow.push( {
+						"cell": aClones[ iCloned ],
+						"unique": aoOriginal[i][j].unique
+					} );
+				}
+			}
+
+			aReturn.push( aRow );
+		}
+
+		return aReturn;
+	},
+
+
+	/**
+	 * Clone the DataTable nodes and place them in the DOM (sized correctly)
+	 *  @returns {void}
+	 *  @param   {Object} oClone Object containing the header, footer and body cloned DOM elements
+	 *  @param   {Object} oGrid Grid object containing the display grid elements for the cloned
+	 *                    column (left or right)
+	 *  @param   {Array} aiColumns Column indexes which should be operated on from the DataTable
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnClone": function ( oClone, oGrid, aiColumns, bAll )
+	{
+		var that = this,
+			i, iLen, j, jLen, jq, nTarget, iColumn, nClone, iIndex, aoCloneLayout,
+			jqCloneThead, aoFixedHeader,
+			dt = this.s.dt;
+
+		/*
+		 * Header
+		 */
+		if ( bAll )
+		{
+			$(oClone.header).remove();
+
+			oClone.header = $(this.dom.header).clone(true, false)[0];
+			oClone.header.className += " DTFC_Cloned";
+			oClone.header.style.width = "100%";
+			oGrid.head.appendChild( oClone.header );
+
+			/* Copy the DataTables layout cache for the header for our floating column */
+			aoCloneLayout = this._fnCopyLayout( dt.aoHeader, aiColumns, true );
+			jqCloneThead = $('>thead', oClone.header);
+			jqCloneThead.empty();
+
+			/* Add the created cloned TR elements to the table */
+			for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+			{
+				jqCloneThead[0].appendChild( aoCloneLayout[i].nTr );
+			}
+
+			/* Use the handy _fnDrawHead function in DataTables to do the rowspan/colspan
+			 * calculations for us
+			 */
+			dt.oApi._fnDrawHead( dt, aoCloneLayout, true );
+		}
+		else
+		{
+			/* To ensure that we copy cell classes exactly, regardless of colspan, multiple rows
+			 * etc, we make a copy of the header from the DataTable again, but don't insert the
+			 * cloned cells, just copy the classes across. To get the matching layout for the
+			 * fixed component, we use the DataTables _fnDetectHeader method, allowing 1:1 mapping
+			 */
+			aoCloneLayout = this._fnCopyLayout( dt.aoHeader, aiColumns, false );
+			aoFixedHeader=[];
+
+			dt.oApi._fnDetectHeader( aoFixedHeader, $('>thead', oClone.header)[0] );
+
+			for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+			{
+				for ( j=0, jLen=aoCloneLayout[i].length ; j<jLen ; j++ )
+				{
+					aoFixedHeader[i][j].cell.className = aoCloneLayout[i][j].cell.className;
+
+					// If jQuery UI theming is used we need to copy those elements as well
+					$('span.DataTables_sort_icon', aoFixedHeader[i][j].cell).each( function () {
+						this.className = $('span.DataTables_sort_icon', aoCloneLayout[i][j].cell)[0].className;
+					} );
+				}
+			}
+		}
+		this._fnEqualiseHeights( 'thead', this.dom.header, oClone.header );
+
+		/*
+		 * Body
+		 */
+		if ( this.s.sHeightMatch == 'auto' )
+		{
+			/* Remove any heights which have been applied already and let the browser figure it out */
+			$('>tbody>tr', that.dom.body).css('height', 'auto');
+		}
+
+		if ( oClone.body !== null )
+		{
+			$(oClone.body).remove();
+			oClone.body = null;
+		}
+
+		oClone.body = $(this.dom.body).clone(true)[0];
+		oClone.body.className += " DTFC_Cloned";
+		oClone.body.style.paddingBottom = dt.oScroll.iBarWidth+"px";
+		oClone.body.style.marginBottom = (dt.oScroll.iBarWidth*2)+"px"; /* For IE */
+		if ( oClone.body.getAttribute('id') !== null )
+		{
+			oClone.body.removeAttribute('id');
+		}
+
+		$('>thead>tr', oClone.body).empty();
+		$('>tfoot', oClone.body).remove();
+
+		var nBody = $('tbody', oClone.body)[0];
+		$(nBody).empty();
+		if ( dt.aiDisplay.length > 0 )
+		{
+			/* Copy the DataTables' header elements to force the column width in exactly the
+			 * same way that DataTables does it - have the header element, apply the width and
+			 * colapse it down
+			 */
+			var nInnerThead = $('>thead>tr', oClone.body)[0];
+			for ( iIndex=0 ; iIndex<aiColumns.length ; iIndex++ )
+			{
+				iColumn = aiColumns[iIndex];
+
+				nClone = $(dt.aoColumns[iColumn].nTh).clone(true)[0];
+				nClone.innerHTML = "";
+
+				var oStyle = nClone.style;
+				oStyle.paddingTop = "0";
+				oStyle.paddingBottom = "0";
+				oStyle.borderTopWidth = "0";
+				oStyle.borderBottomWidth = "0";
+				oStyle.height = 0;
+				oStyle.width = that.s.aiInnerWidths[iColumn]+"px";
+
+				nInnerThead.appendChild( nClone );
+			}
+
+			/* Add in the tbody elements, cloning form the master table */
+			$('>tbody>tr', that.dom.body).each( function (z) {
+				var i = that.s.dt.oFeatures.bServerSide===false ?
+					that.s.dt.aiDisplay[ that.s.dt._iDisplayStart+z ] : z;
+				var aTds = that.s.dt.aoData[ i ].anCells || $(this).children('td, th');
+
+				var n = this.cloneNode(false);
+				n.removeAttribute('id');
+				n.setAttribute( 'data-dt-row', i );
+
+				for ( iIndex=0 ; iIndex<aiColumns.length ; iIndex++ )
+				{
+					iColumn = aiColumns[iIndex];
+
+					if ( aTds.length > 0 )
+					{
+						nClone = $( aTds[iColumn] ).clone(true, true)[0];
+						nClone.removeAttribute( 'id' );
+						nClone.setAttribute( 'data-dt-row', i );
+						nClone.setAttribute( 'data-dt-column', iColumn );
+						n.appendChild( nClone );
+					}
+				}
+				nBody.appendChild( n );
+			} );
+		}
+		else
+		{
+			$('>tbody>tr', that.dom.body).each( function (z) {
+				nClone = this.cloneNode(true);
+				nClone.className += ' DTFC_NoData';
+				$('td', nClone).html('');
+				nBody.appendChild( nClone );
+			} );
+		}
+
+		oClone.body.style.width = "100%";
+		oClone.body.style.margin = "0";
+		oClone.body.style.padding = "0";
+
+		// Interop with Scroller - need to use a height forcing element in the
+		// scrolling area in the same way that Scroller does in the body scroll.
+		if ( dt.oScroller !== undefined )
+		{
+			var scrollerForcer = dt.oScroller.dom.force;
+
+			if ( ! oGrid.forcer ) {
+				oGrid.forcer = scrollerForcer.cloneNode( true );
+				oGrid.liner.appendChild( oGrid.forcer );
+			}
+			else {
+				oGrid.forcer.style.height = scrollerForcer.style.height;
+			}
+		}
+
+		oGrid.liner.appendChild( oClone.body );
+
+		this._fnEqualiseHeights( 'tbody', that.dom.body, oClone.body );
+
+		/*
+		 * Footer
+		 */
+		if ( dt.nTFoot !== null )
+		{
+			if ( bAll )
+			{
+				if ( oClone.footer !== null )
+				{
+					oClone.footer.parentNode.removeChild( oClone.footer );
+				}
+				oClone.footer = $(this.dom.footer).clone(true, true)[0];
+				oClone.footer.className += " DTFC_Cloned";
+				oClone.footer.style.width = "100%";
+				oGrid.foot.appendChild( oClone.footer );
+
+				/* Copy the footer just like we do for the header */
+				aoCloneLayout = this._fnCopyLayout( dt.aoFooter, aiColumns, true );
+				var jqCloneTfoot = $('>tfoot', oClone.footer);
+				jqCloneTfoot.empty();
+
+				for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+				{
+					jqCloneTfoot[0].appendChild( aoCloneLayout[i].nTr );
+				}
+				dt.oApi._fnDrawHead( dt, aoCloneLayout, true );
+			}
+			else
+			{
+				aoCloneLayout = this._fnCopyLayout( dt.aoFooter, aiColumns, false );
+				var aoCurrFooter=[];
+
+				dt.oApi._fnDetectHeader( aoCurrFooter, $('>tfoot', oClone.footer)[0] );
+
+				for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+				{
+					for ( j=0, jLen=aoCloneLayout[i].length ; j<jLen ; j++ )
+					{
+						aoCurrFooter[i][j].cell.className = aoCloneLayout[i][j].cell.className;
+					}
+				}
+			}
+			this._fnEqualiseHeights( 'tfoot', this.dom.footer, oClone.footer );
+		}
+
+		/* Equalise the column widths between the header footer and body - body get's priority */
+		var anUnique = dt.oApi._fnGetUniqueThs( dt, $('>thead', oClone.header)[0] );
+		$(anUnique).each( function (i) {
+			iColumn = aiColumns[i];
+			this.style.width = that.s.aiInnerWidths[iColumn]+"px";
+		} );
+
+		if ( that.s.dt.nTFoot !== null )
+		{
+			anUnique = dt.oApi._fnGetUniqueThs( dt, $('>tfoot', oClone.footer)[0] );
+			$(anUnique).each( function (i) {
+				iColumn = aiColumns[i];
+				this.style.width = that.s.aiInnerWidths[iColumn]+"px";
+			} );
+		}
+	},
+
+
+	/**
+	 * From a given table node (THEAD etc), get a list of TR direct child elements
+	 *  @param   {Node} nIn Table element to search for TR elements (THEAD, TBODY or TFOOT element)
+	 *  @returns {Array} List of TR elements found
+	 *  @private
+	 */
+	"_fnGetTrNodes": function ( nIn )
+	{
+		var aOut = [];
+		for ( var i=0, iLen=nIn.childNodes.length ; i<iLen ; i++ )
+		{
+			if ( nIn.childNodes[i].nodeName.toUpperCase() == "TR" )
+			{
+				aOut.push( nIn.childNodes[i] );
+			}
+		}
+		return aOut;
+	},
+
+
+	/**
+	 * Equalise the heights of the rows in a given table node in a cross browser way
+	 *  @returns {void}
+	 *  @param   {String} nodeName Node type - thead, tbody or tfoot
+	 *  @param   {Node} original Original node to take the heights from
+	 *  @param   {Node} clone Copy the heights to
+	 *  @private
+	 */
+	"_fnEqualiseHeights": function ( nodeName, original, clone )
+	{
+		if ( this.s.sHeightMatch == 'none' && nodeName !== 'thead' && nodeName !== 'tfoot' )
+		{
+			return;
+		}
+
+		var that = this,
+			i, iLen, iHeight, iHeight2, iHeightOriginal, iHeightClone,
+			rootOriginal = original.getElementsByTagName(nodeName)[0],
+			rootClone    = clone.getElementsByTagName(nodeName)[0],
+			jqBoxHack    = $('>'+nodeName+'>tr:eq(0)', original).children(':first'),
+			iBoxHack     = jqBoxHack.outerHeight() - jqBoxHack.height(),
+			anOriginal   = this._fnGetTrNodes( rootOriginal ),
+			anClone      = this._fnGetTrNodes( rootClone ),
+			heights      = [];
+
+		for ( i=0, iLen=anClone.length ; i<iLen ; i++ )
+		{
+			iHeightOriginal = anOriginal[i].offsetHeight;
+			iHeightClone = anClone[i].offsetHeight;
+			iHeight = iHeightClone > iHeightOriginal ? iHeightClone : iHeightOriginal;
+
+			if ( this.s.sHeightMatch == 'semiauto' )
+			{
+				anOriginal[i]._DTTC_iHeight = iHeight;
+			}
+
+			heights.push( iHeight );
+		}
+
+		for ( i=0, iLen=anClone.length ; i<iLen ; i++ )
+		{
+			anClone[i].style.height = heights[i]+"px";
+			anOriginal[i].style.height = heights[i]+"px";
+		}
+	},
+
+	/**
+	 * Determine if the UA suffers from Firefox's overflow:scroll scrollbars
+	 * not being shown bug.
+	 *
+	 * Firefox doesn't draw scrollbars, even if it is told to using
+	 * overflow:scroll, if the div is less than 34px height. See bugs 292284 and
+	 * 781885. Using UA detection here since this is particularly hard to detect
+	 * using objects - its a straight up rendering error in Firefox.
+	 *
+	 * @return {boolean} True if Firefox error is present, false otherwise
+	 */
+	_firefoxScrollError: function () {
+		if ( _firefoxScroll === undefined ) {
+			var test = $('<div/>')
+				.css( {
+					position: 'absolute',
+					top: 0,
+					left: 0,
+					height: 10,
+					width: 50,
+					overflow: 'scroll'
+				} )
+				.appendTo( 'body' );
+
+			// Make sure this doesn't apply on Macs with 0 width scrollbars
+			_firefoxScroll = (
+				test[0].clientWidth === test[0].offsetWidth && this._fnDTOverflow().bar !== 0
+			);
+
+			test.remove();
+		}
+
+		return _firefoxScroll;
+	}
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Statics
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * FixedColumns default settings for initialisation
+ *  @name FixedColumns.defaults
+ *  @namespace
+ *  @static
+ */
+FixedColumns.defaults = /** @lends FixedColumns.defaults */{
+	/**
+	 * Number of left hand columns to fix in position
+	 *  @type     int
+	 *  @default  1
+	 *  @static
+	 *  @example
+	 *      var  = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "leftColumns": 2
+	 *      } );
+	 */
+	"iLeftColumns": 1,
+
+	/**
+	 * Number of right hand columns to fix in position
+	 *  @type     int
+	 *  @default  0
+	 *  @static
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "rightColumns": 1
+	 *      } );
+	 */
+	"iRightColumns": 0,
+
+	/**
+	 * Draw callback function which is called when FixedColumns has redrawn the fixed assets
+	 *  @type     function(object, object):void
+	 *  @default  null
+	 *  @static
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "drawCallback": function () {
+	 *	            alert( "FixedColumns redraw" );
+	 *	        }
+	 *      } );
+	 */
+	"fnDrawCallback": null,
+
+	/**
+	 * Height matching algorthim to use. This can be "none" which will result in no height
+	 * matching being applied by FixedColumns (height matching could be forced by CSS in this
+	 * case), "semiauto" whereby the height calculation will be performed once, and the result
+	 * cached to be used again (fnRecalculateHeight can be used to force recalculation), or
+	 * "auto" when height matching is performed on every draw (slowest but must accurate)
+	 *  @type     string
+	 *  @default  semiauto
+	 *  @static
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "heightMatch": "auto"
+	 *      } );
+	 */
+	"sHeightMatch": "semiauto"
+};
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * FixedColumns version
+ *  @name      FixedColumns.version
+ *  @type      String
+ *  @default   See code
+ *  @static
+ */
+FixedColumns.version = "3.3.0";
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables API integration
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+DataTable.Api.register( 'fixedColumns()', function () {
+	return this;
+} );
+
+DataTable.Api.register( 'fixedColumns().update()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._oFixedColumns ) {
+			ctx._oFixedColumns.fnUpdate();
+		}
+	} );
+} );
+
+DataTable.Api.register( 'fixedColumns().relayout()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._oFixedColumns ) {
+			ctx._oFixedColumns.fnRedrawLayout();
+		}
+	} );
+} );
+
+DataTable.Api.register( 'rows().recalcHeight()', function () {
+	return this.iterator( 'row', function ( ctx, idx ) {
+		if ( ctx._oFixedColumns ) {
+			ctx._oFixedColumns.fnRecalculateHeight( this.row(idx).node() );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'fixedColumns().rowIndex()', function ( row ) {
+	row = $(row);
+
+	return row.parents('.DTFC_Cloned').length ?
+		this.rows( { page: 'current' } ).indexes()[ row.index() ] :
+		this.row( row ).index();
+} );
+
+DataTable.Api.register( 'fixedColumns().cellIndex()', function ( cell ) {
+	cell = $(cell);
+
+	if ( cell.parents('.DTFC_Cloned').length ) {
+		var rowClonedIdx = cell.parent().index();
+		var rowIdx = this.rows( { page: 'current' } ).indexes()[ rowClonedIdx ];
+		var columnIdx;
+
+		if ( cell.parents('.DTFC_LeftWrapper').length ) {
+			columnIdx = cell.index();
+		}
+		else {
+			var columns = this.columns().flatten().length;
+			columnIdx = columns - this.context[0]._oFixedColumns.s.iRightColumns + cell.index();
+		}
+
+		return {
+			row: rowIdx,
+			column: this.column.index( 'toData', columnIdx ),
+			columnVisible: columnIdx
+		};
+	}
+	else {
+		return this.cell( cell ).index();
+	}
+} );
+
+DataTable.Api.registerPlural( 'cells().fixedNodes()', 'cell().fixedNode()', function () {
+	return this.iterator( 'cell', function ( settings, row, column ) {
+		return settings._oFixedColumns
+			? settings._oFixedColumns.fnToFixedNode( row, column )
+			: this.node();
+	}, 1 );
+} );
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Initialisation
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'init.dt.fixedColumns', function (e, settings) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.fixedColumns;
+	var defaults = DataTable.defaults.fixedColumns;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, init, defaults );
+
+		if ( init !== false ) {
+			new FixedColumns( settings, opts );
+		}
+	}
+} );
+
+
+
+// Make FixedColumns accessible from the DataTables instance
+$.fn.dataTable.FixedColumns = FixedColumns;
+$.fn.DataTable.FixedColumns = FixedColumns;
+
+return FixedColumns;
+}));
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/dataTables.fixedColumns.min.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/dataTables.fixedColumns.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/dataTables.fixedColumns.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,48 @@
+/*!
+   Copyright 2010-2018 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ FixedColumns 3.3.0
+ ©2010-2018 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(c,g,e){c instanceof String&&(c=String(c));for(var q=c.length,l=0;l<q;l++){var u=c[l];if(g.call(e,u,l,c))return{i:l,v:u}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(c,g,e){c!=Array.prototype&&c!=Object.prototype&&(c[g]=e.value)};$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global&&null!=global?global:c};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(c,g,e,q){if(g){e=$jscomp.global;c=c.split(".");for(q=0;q<c.length-1;q++){var l=c[q];l in e||(e[l]={});e=e[l]}c=c[c.length-1];q=e[c];g=g(q);g!=q&&null!=g&&$jscomp.defineProperty(e,c,{configurable:!0,writable:!0,value:g})}};$jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,e){return $jscomp.findInternal(this,c,e).v}},"es6","es3");
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(g){return c(g,window,document)}):"object"===typeof exports?module.exports=function(g,e){g||(g=window);e&&e.fn.dataTable||(e=require("datatables.net")(g,e).$);return c(e,g,g.document)}:c(jQuery,window,document)})(function(c,g,e,q){var l=c.fn.dataTable,u,p=function(a,b){var d=this;if(this instanceof p){if(b===q||!0===b)b={};var h=c.fn.dataTable.camelToHungarian;h&&(h(p.defaults,p.defaults,!0),h(p.defaults,
+b));a=(new c.fn.dataTable.Api(a)).settings()[0];this.s={dt:a,iTableColumns:a.aoColumns.length,aiOuterWidths:[],aiInnerWidths:[],rtl:"rtl"===c(a.nTable).css("direction")};this.dom={scroller:null,header:null,body:null,footer:null,grid:{wrapper:null,dt:null,left:{wrapper:null,head:null,body:null,foot:null},right:{wrapper:null,head:null,body:null,foot:null}},clone:{left:{header:null,body:null,footer:null},right:{header:null,body:null,footer:null}}};if(a._oFixedColumns)throw"FixedColumns already initialised on this table";
+a._oFixedColumns=this;a._bInitComplete?this._fnConstruct(b):a.oApi._fnCallbackReg(a,"aoInitComplete",function(){d._fnConstruct(b)},"FixedColumns")}else alert("FixedColumns warning: FixedColumns must be initialised with the 'new' keyword.")};c.extend(p.prototype,{fnUpdate:function(){this._fnDraw(!0)},fnRedrawLayout:function(){this._fnColCalc();this._fnGridLayout();this.fnUpdate()},fnRecalculateHeight:function(a){delete a._DTTC_iHeight;a.style.height="auto"},fnSetRowHeight:function(a,b){a.style.height=
+b+"px"},fnGetPosition:function(a){var b=this.s.dt.oInstance;if(c(a).parents(".DTFC_Cloned").length){if("tr"===a.nodeName.toLowerCase())return a=c(a).index(),b.fnGetPosition(c("tr",this.s.dt.nTBody)[a]);var d=c(a).index();a=c(a.parentNode).index();return[b.fnGetPosition(c("tr",this.s.dt.nTBody)[a]),d,b.oApi._fnVisibleToColumnIndex(this.s.dt,d)]}return b.fnGetPosition(a)},fnToFixedNode:function(a,b){var d;b<this.s.iLeftColumns?d=c(this.dom.clone.left.body).find("[data-dt-row="+a+"][data-dt-column="+
+b+"]"):b>=this.s.iRightColumns&&(d=c(this.dom.clone.right.body).find("[data-dt-row="+a+"][data-dt-column="+b+"]"));return d&&d.length?d[0]:(new c.fn.dataTable.Api(this.s.dt)).cell(a,b).node()},_fnConstruct:function(a){var b=this;if("function"!=typeof this.s.dt.oInstance.fnVersionCheck||!0!==this.s.dt.oInstance.fnVersionCheck("1.8.0"))alert("FixedColumns "+p.VERSION+" required DataTables 1.8.0 or later. Please upgrade your DataTables installation");else if(""===this.s.dt.oScroll.sX)this.s.dt.oInstance.oApi._fnLog(this.s.dt,
+1,"FixedColumns is not needed (no x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for column fixing when scrolling is not enabled");else{this.s=c.extend(!0,this.s,p.defaults,a);a=this.s.dt.oClasses;this.dom.grid.dt=c(this.s.dt.nTable).parents("div."+a.sScrollWrapper)[0];this.dom.scroller=c("div."+a.sScrollBody,this.dom.grid.dt)[0];this._fnColCalc();this._fnGridSetup();var d,h=!1;c(this.s.dt.nTableWrapper).on("mousedown.DTFC",function(a){0===a.button&&(h=!0,c(e).one("mouseup",
+function(){h=!1}))});c(this.dom.scroller).on("mouseover.DTFC touchstart.DTFC",function(){h||(d="main")}).on("scroll.DTFC",function(a){!d&&a.originalEvent&&(d="main");"main"===d&&(0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.scroller.scrollTop),0<b.s.iRightColumns&&(b.dom.grid.right.liner.scrollTop=b.dom.scroller.scrollTop))});var f="onwheel"in e.createElement("div")?"wheel.DTFC":"mousewheel.DTFC";if(0<b.s.iLeftColumns)c(b.dom.grid.left.liner).on("mouseover.DTFC touchstart.DTFC",function(){h||
+(d="left")}).on("scroll.DTFC",function(a){!d&&a.originalEvent&&(d="left");"left"===d&&(b.dom.scroller.scrollTop=b.dom.grid.left.liner.scrollTop,0<b.s.iRightColumns&&(b.dom.grid.right.liner.scrollTop=b.dom.grid.left.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});if(0<b.s.iRightColumns)c(b.dom.grid.right.liner).on("mouseover.DTFC touchstart.DTFC",function(){h||(d="right")}).on("scroll.DTFC",function(a){!d&&a.originalEvent&&
+(d="right");"right"===d&&(b.dom.scroller.scrollTop=b.dom.grid.right.liner.scrollTop,0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.grid.right.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});c(g).on("resize.DTFC",function(){b._fnGridLayout.call(b)});var m=!0,k=c(this.s.dt.nTable);k.on("draw.dt.DTFC",function(){b._fnColCalc();b._fnDraw.call(b,m);m=!1}).on("column-sizing.dt.DTFC",function(){b._fnColCalc();
+b._fnGridLayout(b)}).on("column-visibility.dt.DTFC",function(a,c,d,f,h){if(h===q||h)b._fnColCalc(),b._fnGridLayout(b),b._fnDraw(!0)}).on("select.dt.DTFC deselect.dt.DTFC",function(a,c,d,f){"dt"===a.namespace&&b._fnDraw(!1)}).on("destroy.dt.DTFC",function(){k.off(".DTFC");c(b.dom.scroller).off(".DTFC");c(g).off(".DTFC");c(b.s.dt.nTableWrapper).off(".DTFC");c(b.dom.grid.left.liner).off(".DTFC "+f);c(b.dom.grid.left.wrapper).remove();c(b.dom.grid.right.liner).off(".DTFC "+f);c(b.dom.grid.right.wrapper).remove()});
+this._fnGridLayout();this.s.dt.oInstance.fnDraw(!1)}},_fnColCalc:function(){var a=this,b=0,d=0;this.s.aiInnerWidths=[];this.s.aiOuterWidths=[];c.each(this.s.dt.aoColumns,function(h,f){f=c(f.nTh);if(f.filter(":visible").length){var m=f.outerWidth();if(0===a.s.aiOuterWidths.length){var k=c(a.s.dt.nTable).css("border-left-width");m+="string"===typeof k&&-1===k.indexOf("px")?1:parseInt(k,10)}a.s.aiOuterWidths.length===a.s.dt.aoColumns.length-1&&(k=c(a.s.dt.nTable).css("border-right-width"),m+="string"===
+typeof k&&-1===k.indexOf("px")?1:parseInt(k,10));a.s.aiOuterWidths.push(m);a.s.aiInnerWidths.push(f.width());h<a.s.iLeftColumns&&(b+=m);a.s.iTableColumns-a.s.iRightColumns<=h&&(d+=m)}else a.s.aiInnerWidths.push(0),a.s.aiOuterWidths.push(0)});this.s.iLeftWidth=b;this.s.iRightWidth=d},_fnGridSetup:function(){var a=this._fnDTOverflow();this.dom.body=this.s.dt.nTable;this.dom.header=this.s.dt.nTHead.parentNode;this.dom.header.parentNode.parentNode.style.position="relative";var b=c('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;"><div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;" aria-hidden="true"><div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div><div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; height:0; overflow:hidden;"><div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div></div><div class="DTFC_RightWrapper" style="position:absolute; top:0; right:0;" aria-hidden="true"><div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div><div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; height:0; overflow:hidden;"><div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div></div></div>')[0],
+d=b.childNodes[0],h=b.childNodes[1];this.dom.grid.dt.parentNode.insertBefore(b,this.dom.grid.dt);b.appendChild(this.dom.grid.dt);this.dom.grid.wrapper=b;0<this.s.iLeftColumns&&(this.dom.grid.left.wrapper=d,this.dom.grid.left.head=d.childNodes[0],this.dom.grid.left.body=d.childNodes[1],this.dom.grid.left.liner=c("div.DTFC_LeftBodyLiner",b)[0],b.appendChild(d));if(0<this.s.iRightColumns){this.dom.grid.right.wrapper=h;this.dom.grid.right.head=h.childNodes[0];this.dom.grid.right.body=h.childNodes[1];
+this.dom.grid.right.liner=c("div.DTFC_RightBodyLiner",b)[0];h.style.right=a.bar+"px";var f=c("div.DTFC_RightHeadBlocker",b)[0];f.style.width=a.bar+"px";f.style.right=-a.bar+"px";this.dom.grid.right.headBlock=f;f=c("div.DTFC_RightFootBlocker",b)[0];f.style.width=a.bar+"px";f.style.right=-a.bar+"px";this.dom.grid.right.footBlock=f;b.appendChild(h)}this.s.dt.nTFoot&&(this.dom.footer=this.s.dt.nTFoot.parentNode,0<this.s.iLeftColumns&&(this.dom.grid.left.foot=d.childNodes[2]),0<this.s.iRightColumns&&(this.dom.grid.right.foot=
+h.childNodes[2]));this.s.rtl&&c("div.DTFC_RightHeadBlocker",b).css({left:-a.bar+"px",right:""})},_fnGridLayout:function(){var a=this,b=this.dom.grid;c(b.wrapper).width();var d=this.s.dt.nTable.parentNode.offsetHeight,h=this.s.dt.nTable.parentNode.parentNode.offsetHeight,f=this._fnDTOverflow(),m=this.s.iLeftWidth,k=this.s.iRightWidth,x="rtl"===c(this.dom.body).css("direction"),w=function(b,d){f.bar?a._firefoxScrollError()?34<c(b).height()&&(b.style.width=d+f.bar+"px"):b.style.width=d+f.bar+"px":(b.style.width=
+d+20+"px",b.style.paddingRight="20px",b.style.boxSizing="border-box")};f.x&&(d-=f.bar);b.wrapper.style.height=h+"px";0<this.s.iLeftColumns&&(h=b.left.wrapper,h.style.width=m+"px",h.style.height="1px",x?(h.style.left="",h.style.right=0):(h.style.left=0,h.style.right=""),b.left.body.style.height=d+"px",b.left.foot&&(b.left.foot.style.top=(f.x?f.bar:0)+"px"),w(b.left.liner,m),b.left.liner.style.height=d+"px",b.left.liner.style.maxHeight=d+"px");0<this.s.iRightColumns&&(h=b.right.wrapper,h.style.width=
+k+"px",h.style.height="1px",this.s.rtl?(h.style.left=f.y?f.bar+"px":0,h.style.right=""):(h.style.left="",h.style.right=f.y?f.bar+"px":0),b.right.body.style.height=d+"px",b.right.foot&&(b.right.foot.style.top=(f.x?f.bar:0)+"px"),w(b.right.liner,k),b.right.liner.style.height=d+"px",b.right.liner.style.maxHeight=d+"px",b.right.headBlock.style.display=f.y?"block":"none",b.right.footBlock.style.display=f.y?"block":"none")},_fnDTOverflow:function(){var a=this.s.dt.nTable,b=a.parentNode,c={x:!1,y:!1,bar:this.s.dt.oScroll.iBarWidth};
+a.offsetWidth>b.clientWidth&&(c.x=!0);a.offsetHeight>b.clientHeight&&(c.y=!0);return c},_fnDraw:function(a){this._fnGridLayout();this._fnCloneLeft(a);this._fnCloneRight(a);null!==this.s.fnDrawCallback&&this.s.fnDrawCallback.call(this,this.dom.clone.left,this.dom.clone.right);c(this).trigger("draw.dtfc",{leftClone:this.dom.clone.left,rightClone:this.dom.clone.right})},_fnCloneRight:function(a){if(!(0>=this.s.iRightColumns)){var b,c=[];for(b=this.s.iTableColumns-this.s.iRightColumns;b<this.s.iTableColumns;b++)this.s.dt.aoColumns[b].bVisible&&
+c.push(b);this._fnClone(this.dom.clone.right,this.dom.grid.right,c,a)}},_fnCloneLeft:function(a){if(!(0>=this.s.iLeftColumns)){var b,c=[];for(b=0;b<this.s.iLeftColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.left,this.dom.grid.left,c,a)}},_fnCopyLayout:function(a,b,d){for(var h=[],f=[],m=[],k=0,x=a.length;k<x;k++){var w=[];w.nTr=c(a[k].nTr).clone(d,!1)[0];for(var e=0,n=this.s.iTableColumns;e<n;e++)if(-1!==c.inArray(e,b)){var g=c.inArray(a[k][e].cell,m);-1===g?(g=
+c(a[k][e].cell).clone(d,!1)[0],f.push(g),m.push(a[k][e].cell),w.push({cell:g,unique:a[k][e].unique})):w.push({cell:f[g],unique:a[k][e].unique})}h.push(w)}return h},_fnClone:function(a,b,d,h){var f=this,m,k,e=this.s.dt;if(h){c(a.header).remove();a.header=c(this.dom.header).clone(!0,!1)[0];a.header.className+=" DTFC_Cloned";a.header.style.width="100%";b.head.appendChild(a.header);var g=this._fnCopyLayout(e.aoHeader,d,!0);var l=c(">thead",a.header);l.empty();var n=0;for(m=g.length;n<m;n++)l[0].appendChild(g[n].nTr);
+e.oApi._fnDrawHead(e,g,!0)}else{g=this._fnCopyLayout(e.aoHeader,d,!1);var p=[];e.oApi._fnDetectHeader(p,c(">thead",a.header)[0]);n=0;for(m=g.length;n<m;n++){var t=0;for(l=g[n].length;t<l;t++)p[n][t].cell.className=g[n][t].cell.className,c("span.DataTables_sort_icon",p[n][t].cell).each(function(){this.className=c("span.DataTables_sort_icon",g[n][t].cell)[0].className})}}this._fnEqualiseHeights("thead",this.dom.header,a.header);"auto"==this.s.sHeightMatch&&c(">tbody>tr",f.dom.body).css("height","auto");
+null!==a.body&&(c(a.body).remove(),a.body=null);a.body=c(this.dom.body).clone(!0)[0];a.body.className+=" DTFC_Cloned";a.body.style.paddingBottom=e.oScroll.iBarWidth+"px";a.body.style.marginBottom=2*e.oScroll.iBarWidth+"px";null!==a.body.getAttribute("id")&&a.body.removeAttribute("id");c(">thead>tr",a.body).empty();c(">tfoot",a.body).remove();var u=c("tbody",a.body)[0];c(u).empty();if(0<e.aiDisplay.length){m=c(">thead>tr",a.body)[0];for(k=0;k<d.length;k++){var v=d[k];var r=c(e.aoColumns[v].nTh).clone(!0)[0];
+r.innerHTML="";l=r.style;l.paddingTop="0";l.paddingBottom="0";l.borderTopWidth="0";l.borderBottomWidth="0";l.height=0;l.width=f.s.aiInnerWidths[v]+"px";m.appendChild(r)}c(">tbody>tr",f.dom.body).each(function(a){a=!1===f.s.dt.oFeatures.bServerSide?f.s.dt.aiDisplay[f.s.dt._iDisplayStart+a]:a;var b=f.s.dt.aoData[a].anCells||c(this).children("td, th"),e=this.cloneNode(!1);e.removeAttribute("id");e.setAttribute("data-dt-row",a);for(k=0;k<d.length;k++)v=d[k],0<b.length&&(r=c(b[v]).clone(!0,!0)[0],r.removeAttribute("id"),
+r.setAttribute("data-dt-row",a),r.setAttribute("data-dt-column",v),e.appendChild(r));u.appendChild(e)})}else c(">tbody>tr",f.dom.body).each(function(a){r=this.cloneNode(!0);r.className+=" DTFC_NoData";c("td",r).html("");u.appendChild(r)});a.body.style.width="100%";a.body.style.margin="0";a.body.style.padding="0";e.oScroller!==q&&(m=e.oScroller.dom.force,b.forcer?b.forcer.style.height=m.style.height:(b.forcer=m.cloneNode(!0),b.liner.appendChild(b.forcer)));b.liner.appendChild(a.body);this._fnEqualiseHeights("tbody",
+f.dom.body,a.body);if(null!==e.nTFoot){if(h){null!==a.footer&&a.footer.parentNode.removeChild(a.footer);a.footer=c(this.dom.footer).clone(!0,!0)[0];a.footer.className+=" DTFC_Cloned";a.footer.style.width="100%";b.foot.appendChild(a.footer);g=this._fnCopyLayout(e.aoFooter,d,!0);b=c(">tfoot",a.footer);b.empty();n=0;for(m=g.length;n<m;n++)b[0].appendChild(g[n].nTr);e.oApi._fnDrawHead(e,g,!0)}else for(g=this._fnCopyLayout(e.aoFooter,d,!1),b=[],e.oApi._fnDetectHeader(b,c(">tfoot",a.footer)[0]),n=0,m=g.length;n<
+m;n++)for(t=0,l=g[n].length;t<l;t++)b[n][t].cell.className=g[n][t].cell.className;this._fnEqualiseHeights("tfoot",this.dom.footer,a.footer)}b=e.oApi._fnGetUniqueThs(e,c(">thead",a.header)[0]);c(b).each(function(a){v=d[a];this.style.width=f.s.aiInnerWidths[v]+"px"});null!==f.s.dt.nTFoot&&(b=e.oApi._fnGetUniqueThs(e,c(">tfoot",a.footer)[0]),c(b).each(function(a){v=d[a];this.style.width=f.s.aiInnerWidths[v]+"px"}))},_fnGetTrNodes:function(a){for(var b=[],c=0,e=a.childNodes.length;c<e;c++)"TR"==a.childNodes[c].nodeName.toUpperCase()&&
+b.push(a.childNodes[c]);return b},_fnEqualiseHeights:function(a,b,d){if("none"!=this.s.sHeightMatch||"thead"===a||"tfoot"===a){var e=b.getElementsByTagName(a)[0];d=d.getElementsByTagName(a)[0];a=c(">"+a+">tr:eq(0)",b).children(":first");a.outerHeight();a.height();e=this._fnGetTrNodes(e);b=this._fnGetTrNodes(d);var f=[];d=0;for(a=b.length;d<a;d++){var g=e[d].offsetHeight;var k=b[d].offsetHeight;g=k>g?k:g;"semiauto"==this.s.sHeightMatch&&(e[d]._DTTC_iHeight=g);f.push(g)}d=0;for(a=b.length;d<a;d++)b[d].style.height=
+f[d]+"px",e[d].style.height=f[d]+"px"}},_firefoxScrollError:function(){if(u===q){var a=c("<div/>").css({position:"absolute",top:0,left:0,height:10,width:50,overflow:"scroll"}).appendTo("body");u=a[0].clientWidth===a[0].offsetWidth&&0!==this._fnDTOverflow().bar;a.remove()}return u}});p.defaults={iLeftColumns:1,iRightColumns:0,fnDrawCallback:null,sHeightMatch:"semiauto"};p.version="3.3.0";l.Api.register("fixedColumns()",function(){return this});l.Api.register("fixedColumns().update()",function(){return this.iterator("table",
+function(a){a._oFixedColumns&&a._oFixedColumns.fnUpdate()})});l.Api.register("fixedColumns().relayout()",function(){return this.iterator("table",function(a){a._oFixedColumns&&a._oFixedColumns.fnRedrawLayout()})});l.Api.register("rows().recalcHeight()",function(){return this.iterator("row",function(a,b){a._oFixedColumns&&a._oFixedColumns.fnRecalculateHeight(this.row(b).node())})});l.Api.register("fixedColumns().rowIndex()",function(a){a=c(a);return a.parents(".DTFC_Cloned").length?this.rows({page:"current"}).indexes()[a.index()]:
+this.row(a).index()});l.Api.register("fixedColumns().cellIndex()",function(a){a=c(a);if(a.parents(".DTFC_Cloned").length){var b=a.parent().index();b=this.rows({page:"current"}).indexes()[b];a=a.parents(".DTFC_LeftWrapper").length?a.index():this.columns().flatten().length-this.context[0]._oFixedColumns.s.iRightColumns+a.index();return{row:b,column:this.column.index("toData",a),columnVisible:a}}return this.cell(a).index()});l.Api.registerPlural("cells().fixedNodes()","cell().fixedNode()",function(){return this.iterator("cell",
+function(a,b,c){return a._oFixedColumns?a._oFixedColumns.fnToFixedNode(b,c):this.node()},1)});c(e).on("init.dt.fixedColumns",function(a,b){if("dt"===a.namespace){a=b.oInit.fixedColumns;var d=l.defaults.fixedColumns;if(a||d)d=c.extend({},a,d),!1!==a&&new p(b,d)}});c.fn.dataTable.FixedColumns=p;return c.fn.DataTable.FixedColumns=p});
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 3 styling wrapper for FixedColumns
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs', 'datatables.net-fixedcolumns'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedColumns ) {
+				require('datatables.net-fixedcolumns')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 3 styling wrapper for FixedColumns
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-fixedcolumns"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs")(a,b).$);b.fn.dataTable.FixedColumns||require("datatables.net-fixedcolumns")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap4.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 4 styling wrapper for FixedColumns
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-fixedcolumns'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedColumns ) {
+				require('datatables.net-fixedcolumns')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 4 styling wrapper for FixedColumns
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-fixedcolumns"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.FixedColumns||require("datatables.net-fixedcolumns")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.dataTables.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! DataTables styling wrapper for FixedColumns
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-dt', 'datatables.net-fixedcolumns'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-dt')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedColumns ) {
+				require('datatables.net-fixedcolumns')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.foundation.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 4 styling wrapper for FixedColumns
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-zf', 'datatables.net-fixedcolumns'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-zf')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedColumns ) {
+				require('datatables.net-fixedcolumns')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.foundation.min.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 4 styling wrapper for FixedColumns
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-fixedcolumns"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-zf")(a,b).$);b.fn.dataTable.FixedColumns||require("datatables.net-fixedcolumns")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.jqueryui.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! jQuery UI styling wrapper for FixedColumns
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-jqui', 'datatables.net-fixedcolumns'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-jqui')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedColumns ) {
+				require('datatables.net-fixedcolumns')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ jQuery UI styling wrapper for FixedColumns
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-fixedcolumns"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-jqui")(a,b).$);b.fn.dataTable.FixedColumns||require("datatables.net-fixedcolumns")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.semanticui.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Semanic UI styling wrapper for FixedColumns
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-se', 'datatables.net-fixedcolumns'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-se')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedColumns ) {
+				require('datatables.net-fixedcolumns')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.semanticui.min.js
===================================================================
--- public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedColumns-3.3.0/js/fixedColumns.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Semanic UI styling wrapper for FixedColumns
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-fixedcolumns"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-se")(a,b).$);b.fn.dataTable.FixedColumns||require("datatables.net-fixedcolumns")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+table.dataTable.fixedHeader-floating,
+table.dataTable.fixedHeader-locked {
+  background-color: white;
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+
+table.dataTable.fixedHeader-floating {
+  position: fixed !important;
+}
+
+table.dataTable.fixedHeader-locked {
+  position: absolute !important;
+}
+
+@media print {
+  table.fixedHeader-floating {
+    display: none;
+  }
+}
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-floating{position:fixed !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}}
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap4.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+table.dataTable.fixedHeader-floating,
+table.dataTable.fixedHeader-locked {
+  background-color: white;
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+
+table.dataTable.fixedHeader-floating {
+  position: fixed !important;
+}
+
+table.dataTable.fixedHeader-locked {
+  position: absolute !important;
+}
+
+@media print {
+  table.fixedHeader-floating {
+    display: none;
+  }
+}
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-floating{position:fixed !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}}
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.dataTables.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,19 @@
+table.fixedHeader-floating {
+  position: fixed !important;
+  background-color: white;
+}
+
+table.fixedHeader-floating.no-footer {
+  border-bottom-width: 0;
+}
+
+table.fixedHeader-locked {
+  position: absolute !important;
+  background-color: white;
+}
+
+@media print {
+  table.fixedHeader-floating {
+    display: none;
+  }
+}
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.dataTables.min.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.fixedHeader-floating{position:fixed !important;background-color:white}table.fixedHeader-floating.no-footer{border-bottom-width:0}table.fixedHeader-locked{position:absolute !important;background-color:white}@media print{table.fixedHeader-floating{display:none}}
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.foundation.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+table.dataTable.fixedHeader-floating,
+table.dataTable.fixedHeader-locked {
+  background-color: white;
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+
+table.dataTable.fixedHeader-floating {
+  position: fixed !important;
+}
+
+table.dataTable.fixedHeader-locked {
+  position: absolute !important;
+}
+
+@media print {
+  table.fixedHeader-floating {
+    display: none;
+  }
+}
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.foundation.min.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-floating{position:fixed !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}}
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.jqueryui.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,15 @@
+table.fixedHeader-floating {
+  position: fixed !important;
+  background-color: white;
+}
+
+table.fixedHeader-locked {
+  position: absolute !important;
+  background-color: white;
+}
+
+@media print {
+  table.fixedHeader-floating {
+    display: none;
+  }
+}
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.fixedHeader-floating{position:fixed !important;background-color:white}table.fixedHeader-locked{position:absolute !important;background-color:white}@media print{table.fixedHeader-floating{display:none}}
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.semanticui.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,14 @@
+table.fixedHeader-floating {
+  position: fixed !important;
+  border-bottom-width: 0 !important;
+}
+
+table.fixedHeader-locked {
+  position: absolute !important;
+}
+
+@media print {
+  table.fixedHeader-floating {
+    display: none;
+  }
+}
Index: public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.semanticui.min.css
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/css/fixedHeader.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.fixedHeader-floating{position:fixed !important;border-bottom-width:0 !important}table.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}}
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/dataTables.fixedHeader.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/dataTables.fixedHeader.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/dataTables.fixedHeader.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,726 @@
+/*! FixedHeader 3.1.6
+ * ©2009-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     FixedHeader
+ * @description Fix a table's header or footer, so it is always visible while
+ *              scrolling
+ * @version     3.1.6
+ * @file        dataTables.fixedHeader.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2009-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var _instCounter = 0;
+
+var FixedHeader = function ( dt, config ) {
+	// Sanity check - you just know it will happen
+	if ( ! (this instanceof FixedHeader) ) {
+		throw "FixedHeader must be initialised with the 'new' keyword.";
+	}
+
+	// Allow a boolean true for defaults
+	if ( config === true ) {
+		config = {};
+	}
+
+	dt = new DataTable.Api( dt );
+
+	this.c = $.extend( true, {}, FixedHeader.defaults, config );
+
+	this.s = {
+		dt: dt,
+		position: {
+			theadTop: 0,
+			tbodyTop: 0,
+			tfootTop: 0,
+			tfootBottom: 0,
+			width: 0,
+			left: 0,
+			tfootHeight: 0,
+			theadHeight: 0,
+			windowHeight: $(window).height(),
+			visible: true
+		},
+		headerMode: null,
+		footerMode: null,
+		autoWidth: dt.settings()[0].oFeatures.bAutoWidth,
+		namespace: '.dtfc'+(_instCounter++),
+		scrollLeft: {
+			header: -1,
+			footer: -1
+		},
+		enable: true
+	};
+
+	this.dom = {
+		floatingHeader: null,
+		thead: $(dt.table().header()),
+		tbody: $(dt.table().body()),
+		tfoot: $(dt.table().footer()),
+		header: {
+			host: null,
+			floating: null,
+			placeholder: null
+		},
+		footer: {
+			host: null,
+			floating: null,
+			placeholder: null
+		}
+	};
+
+	this.dom.header.host = this.dom.thead.parent();
+	this.dom.footer.host = this.dom.tfoot.parent();
+
+	var dtSettings = dt.settings()[0];
+	if ( dtSettings._fixedHeader ) {
+		throw "FixedHeader already initialised on table "+dtSettings.nTable.id;
+	}
+
+	dtSettings._fixedHeader = this;
+
+	this._constructor();
+};
+
+
+/*
+ * Variable: FixedHeader
+ * Purpose:  Prototype for FixedHeader
+ * Scope:    global
+ */
+$.extend( FixedHeader.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * API methods
+	 */
+
+	/**
+	 * Kill off FH and any events
+	 */
+	destroy: function () {
+		this.s.dt.off( '.dtfc' );
+		$(window).off( this.s.namespace );
+
+		if ( this.c.header ) {
+			this._modeChange( 'in-place', 'header', true );
+		}
+
+		if ( this.c.footer && this.dom.tfoot.length ) {
+			this._modeChange( 'in-place', 'footer', true );
+		}
+	},
+
+	/**
+	 * Enable / disable the fixed elements
+	 *
+	 * @param  {boolean} enable `true` to enable, `false` to disable
+	 */
+	enable: function ( enable, update )
+	{
+		this.s.enable = enable;
+
+		if ( update || update === undefined ) {
+			this._positions();
+			this._scroll( true );
+		}
+	},
+
+	/**
+	 * Get enabled status
+	 */
+	enabled: function ()
+	{
+		return this.s.enable;
+	},
+	
+	/**
+	 * Set header offset 
+	 *
+	 * @param  {int} new value for headerOffset
+	 */
+	headerOffset: function ( offset )
+	{
+		if ( offset !== undefined ) {
+			this.c.headerOffset = offset;
+			this.update();
+		}
+
+		return this.c.headerOffset;
+	},
+	
+	/**
+	 * Set footer offset
+	 *
+	 * @param  {int} new value for footerOffset
+	 */
+	footerOffset: function ( offset )
+	{
+		if ( offset !== undefined ) {
+			this.c.footerOffset = offset;
+			this.update();
+		}
+
+		return this.c.footerOffset;
+	},
+
+	
+	/**
+	 * Recalculate the position of the fixed elements and force them into place
+	 */
+	update: function ()
+	{
+		var table = this.s.dt.table().node();
+
+		if ( $(table).is(':visible') ) {
+			this.enable( true, false );
+		}
+		else {
+			this.enable( false, false );
+		}
+
+		this._positions();
+		this._scroll( true );
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+	
+	/**
+	 * FixedHeader constructor - adding the required event listeners and
+	 * simple initialisation
+	 *
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		$(window)
+			.on( 'scroll'+this.s.namespace, function () {
+				that._scroll();
+			} )
+			.on( 'resize'+this.s.namespace, DataTable.util.throttle( function () {
+				that.s.position.windowHeight = $(window).height();
+				that.update();
+			}, 50 ) );
+
+		var autoHeader = $('.fh-fixedHeader');
+		if ( ! this.c.headerOffset && autoHeader.length ) {
+			this.c.headerOffset = autoHeader.outerHeight();
+		}
+
+		var autoFooter = $('.fh-fixedFooter');
+		if ( ! this.c.footerOffset && autoFooter.length ) {
+			this.c.footerOffset = autoFooter.outerHeight();
+		}
+
+		dt.on( 'column-reorder.dt.dtfc column-visibility.dt.dtfc draw.dt.dtfc column-sizing.dt.dtfc responsive-display.dt.dtfc', function () {
+			that.update();
+		} );
+
+		dt.on( 'destroy.dtfc', function () {
+			that.destroy();
+		} );
+
+		this._positions();
+		this._scroll();
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Clone a fixed item to act as a place holder for the original element
+	 * which is moved into a clone of the table element, and moved around the
+	 * document to give the fixed effect.
+	 *
+	 * @param  {string}  item  'header' or 'footer'
+	 * @param  {boolean} force Force the clone to happen, or allow automatic
+	 *   decision (reuse existing if available)
+	 * @private
+	 */
+	_clone: function ( item, force )
+	{
+		var dt = this.s.dt;
+		var itemDom = this.dom[ item ];
+		var itemElement = item === 'header' ?
+			this.dom.thead :
+			this.dom.tfoot;
+
+		if ( ! force && itemDom.floating ) {
+			// existing floating element - reuse it
+			itemDom.floating.removeClass( 'fixedHeader-floating fixedHeader-locked' );
+		}
+		else {
+			if ( itemDom.floating ) {
+				itemDom.placeholder.remove();
+				this._unsize( item );
+				itemDom.floating.children().detach();
+				itemDom.floating.remove();
+			}
+
+			itemDom.floating = $( dt.table().node().cloneNode( false ) )
+				.css( 'table-layout', 'fixed' )
+				.attr( 'aria-hidden', 'true' )
+				.removeAttr( 'id' )
+				.append( itemElement )
+				.appendTo( 'body' );
+
+			// Insert a fake thead/tfoot into the DataTable to stop it jumping around
+			itemDom.placeholder = itemElement.clone( false );
+			itemDom.placeholder
+				.find( '*[id]' )
+				.removeAttr( 'id' );
+
+			itemDom.host.prepend( itemDom.placeholder );
+
+			// Clone widths
+			this._matchWidths( itemDom.placeholder, itemDom.floating );
+		}
+	},
+
+	/**
+	 * Copy widths from the cells in one element to another. This is required
+	 * for the footer as the footer in the main table takes its sizes from the
+	 * header columns. That isn't present in the footer so to have it still
+	 * align correctly, the sizes need to be copied over. It is also required
+	 * for the header when auto width is not enabled
+	 *
+	 * @param  {jQuery} from Copy widths from
+	 * @param  {jQuery} to   Copy widths to
+	 * @private
+	 */
+	_matchWidths: function ( from, to ) {
+		var get = function ( name ) {
+			return $(name, from)
+				.map( function () {
+					return $(this).width();
+				} ).toArray();
+		};
+
+		var set = function ( name, toWidths ) {
+			$(name, to).each( function ( i ) {
+				$(this).css( {
+					width: toWidths[i],
+					minWidth: toWidths[i]
+				} );
+			} );
+		};
+
+		var thWidths = get( 'th' );
+		var tdWidths = get( 'td' );
+
+		set( 'th', thWidths );
+		set( 'td', tdWidths );
+	},
+
+	/**
+	 * Remove assigned widths from the cells in an element. This is required
+	 * when inserting the footer back into the main table so the size is defined
+	 * by the header columns and also when auto width is disabled in the
+	 * DataTable.
+	 *
+	 * @param  {string} item The `header` or `footer`
+	 * @private
+	 */
+	_unsize: function ( item ) {
+		var el = this.dom[ item ].floating;
+
+		if ( el && (item === 'footer' || (item === 'header' && ! this.s.autoWidth)) ) {
+			$('th, td', el).css( {
+				width: '',
+				minWidth: ''
+			} );
+		}
+		else if ( el && item === 'header' ) {
+			$('th, td', el).css( 'min-width', '' );
+		}
+	},
+
+	/**
+	 * Reposition the floating elements to take account of horizontal page
+	 * scroll
+	 *
+	 * @param  {string} item       The `header` or `footer`
+	 * @param  {int}    scrollLeft Document scrollLeft
+	 * @private
+	 */
+	_horizontal: function ( item, scrollLeft )
+	{
+		var itemDom = this.dom[ item ];
+		var position = this.s.position;
+		var lastScrollLeft = this.s.scrollLeft;
+
+		if ( itemDom.floating && lastScrollLeft[ item ] !== scrollLeft ) {
+			itemDom.floating.css( 'left', position.left - scrollLeft );
+
+			lastScrollLeft[ item ] = scrollLeft;
+		}
+	},
+
+	/**
+	 * Change from one display mode to another. Each fixed item can be in one
+	 * of:
+	 *
+	 * * `in-place` - In the main DataTable
+	 * * `in` - Floating over the DataTable
+	 * * `below` - (Header only) Fixed to the bottom of the table body
+	 * * `above` - (Footer only) Fixed to the top of the table body
+	 * 
+	 * @param  {string}  mode        Mode that the item should be shown in
+	 * @param  {string}  item        'header' or 'footer'
+	 * @param  {boolean} forceChange Force a redraw of the mode, even if already
+	 *     in that mode.
+	 * @private
+	 */
+	_modeChange: function ( mode, item, forceChange )
+	{
+		var dt = this.s.dt;
+		var itemDom = this.dom[ item ];
+		var position = this.s.position;
+
+		// Record focus. Browser's will cause input elements to loose focus if
+		// they are inserted else where in the doc
+		var tablePart = this.dom[ item==='footer' ? 'tfoot' : 'thead' ];
+		var focus = $.contains( tablePart[0], document.activeElement ) ?
+			document.activeElement :
+			null;
+		
+		if ( focus ) {
+			focus.blur();
+		}
+
+		if ( mode === 'in-place' ) {
+			// Insert the header back into the table's real header
+			if ( itemDom.placeholder ) {
+				itemDom.placeholder.remove();
+				itemDom.placeholder = null;
+			}
+
+			this._unsize( item );
+
+			if ( item === 'header' ) {
+				itemDom.host.prepend( tablePart );
+			}
+			else {
+				itemDom.host.append( tablePart );
+			}
+
+			if ( itemDom.floating ) {
+				itemDom.floating.remove();
+				itemDom.floating = null;
+			}
+		}
+		else if ( mode === 'in' ) {
+			// Remove the header from the read header and insert into a fixed
+			// positioned floating table clone
+			this._clone( item, forceChange );
+
+			itemDom.floating
+				.addClass( 'fixedHeader-floating' )
+				.css( item === 'header' ? 'top' : 'bottom', this.c[item+'Offset'] )
+				.css( 'left', position.left+'px' )
+				.css( 'width', position.width+'px' );
+
+			if ( item === 'footer' ) {
+				itemDom.floating.css( 'top', '' );
+			}
+		}
+		else if ( mode === 'below' ) { // only used for the header
+			// Fix the position of the floating header at base of the table body
+			this._clone( item, forceChange );
+
+			itemDom.floating
+				.addClass( 'fixedHeader-locked' )
+				.css( 'top', position.tfootTop - position.theadHeight )
+				.css( 'left', position.left+'px' )
+				.css( 'width', position.width+'px' );
+		}
+		else if ( mode === 'above' ) { // only used for the footer
+			// Fix the position of the floating footer at top of the table body
+			this._clone( item, forceChange );
+
+			itemDom.floating
+				.addClass( 'fixedHeader-locked' )
+				.css( 'top', position.tbodyTop )
+				.css( 'left', position.left+'px' )
+				.css( 'width', position.width+'px' );
+		}
+
+		// Restore focus if it was lost
+		if ( focus && focus !== document.activeElement ) {
+			setTimeout( function () {
+				focus.focus();
+			}, 10 );
+		}
+
+		this.s.scrollLeft.header = -1;
+		this.s.scrollLeft.footer = -1;
+		this.s[item+'Mode'] = mode;
+	},
+
+	/**
+	 * Cache the positional information that is required for the mode
+	 * calculations that FixedHeader performs.
+	 *
+	 * @private
+	 */
+	_positions: function ()
+	{
+		var dt = this.s.dt;
+		var table = dt.table();
+		var position = this.s.position;
+		var dom = this.dom;
+		var tableNode = $(table.node());
+
+		// Need to use the header and footer that are in the main table,
+		// regardless of if they are clones, since they hold the positions we
+		// want to measure from
+		var thead = tableNode.children('thead');
+		var tfoot = tableNode.children('tfoot');
+		var tbody = dom.tbody;
+
+		position.visible = tableNode.is(':visible');
+		position.width = tableNode.outerWidth();
+		position.left = tableNode.offset().left;
+		position.theadTop = thead.offset().top;
+		position.tbodyTop = tbody.offset().top;
+		position.tbodyHeight = tbody.outerHeight();
+		position.theadHeight = position.tbodyTop - position.theadTop;
+
+		if ( tfoot.length ) {
+			position.tfootTop = tfoot.offset().top;
+			position.tfootBottom = position.tfootTop + tfoot.outerHeight();
+			position.tfootHeight = position.tfootBottom - position.tfootTop;
+		}
+		else {
+			position.tfootTop = position.tbodyTop + tbody.outerHeight();
+			position.tfootBottom = position.tfootTop;
+			position.tfootHeight = position.tfootTop;
+		}
+	},
+
+
+	/**
+	 * Mode calculation - determine what mode the fixed items should be placed
+	 * into.
+	 *
+	 * @param  {boolean} forceChange Force a redraw of the mode, even if already
+	 *     in that mode.
+	 * @private
+	 */
+	_scroll: function ( forceChange )
+	{
+		var windowTop = $(document).scrollTop();
+		var windowLeft = $(document).scrollLeft();
+		var position = this.s.position;
+		var headerMode, footerMode;
+
+		if ( this.c.header ) {
+			if ( ! this.s.enable ) {
+				headerMode = 'in-place';
+			}
+			else if ( ! position.visible || windowTop <= position.theadTop - this.c.headerOffset ) {
+				headerMode = 'in-place';
+			}
+			else if ( windowTop <= position.tfootTop - position.theadHeight - this.c.headerOffset ) {
+				headerMode = 'in';
+			}
+			else {
+				headerMode = 'below';
+			}
+
+			if ( forceChange || headerMode !== this.s.headerMode ) {
+				this._modeChange( headerMode, 'header', forceChange );
+			}
+
+			this._horizontal( 'header', windowLeft );
+		}
+
+		if ( this.c.footer && this.dom.tfoot.length ) {
+			if ( ! this.s.enable ) {
+				headerMode = 'in-place';
+			}
+			else if ( ! position.visible || windowTop + position.windowHeight >= position.tfootBottom + this.c.footerOffset ) {
+				footerMode = 'in-place';
+			}
+			else if ( position.windowHeight + windowTop > position.tbodyTop + position.tfootHeight + this.c.footerOffset ) {
+				footerMode = 'in';
+			}
+			else {
+				footerMode = 'above';
+			}
+
+			if ( forceChange || footerMode !== this.s.footerMode ) {
+				this._modeChange( footerMode, 'footer', forceChange );
+			}
+
+			this._horizontal( 'footer', windowLeft );
+		}
+	}
+} );
+
+
+/**
+ * Version
+ * @type {String}
+ * @static
+ */
+FixedHeader.version = "3.1.6";
+
+/**
+ * Defaults
+ * @type {Object}
+ * @static
+ */
+FixedHeader.defaults = {
+	header: true,
+	footer: false,
+	headerOffset: 0,
+	footerOffset: 0
+};
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables interfaces
+ */
+
+// Attach for constructor access
+$.fn.dataTable.FixedHeader = FixedHeader;
+$.fn.DataTable.FixedHeader = FixedHeader;
+
+
+// DataTables creation - check if the FixedHeader option has been defined on the
+// table and if so, initialise
+$(document).on( 'init.dt.dtfh', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.fixedHeader;
+	var defaults = DataTable.defaults.fixedHeader;
+
+	if ( (init || defaults) && ! settings._fixedHeader ) {
+		var opts = $.extend( {}, defaults, init );
+
+		if ( init !== false ) {
+			new FixedHeader( settings, opts );
+		}
+	}
+} );
+
+// DataTables API methods
+DataTable.Api.register( 'fixedHeader()', function () {} );
+
+DataTable.Api.register( 'fixedHeader.adjust()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		var fh = ctx._fixedHeader;
+
+		if ( fh ) {
+			fh.update();
+		}
+	} );
+} );
+
+DataTable.Api.register( 'fixedHeader.enable()', function ( flag ) {
+	return this.iterator( 'table', function ( ctx ) {
+		var fh = ctx._fixedHeader;
+
+		flag = ( flag !== undefined ? flag : true );
+		if ( fh && flag !== fh.enabled() ) {
+			fh.enable( flag );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'fixedHeader.enabled()', function () {
+	if ( this.context.length ) {
+		var fx = this.content[0]._fixedHeader;
+
+		if ( fh ) {
+			return fh.enabled();
+		}
+	}
+
+	return false;
+} );
+
+DataTable.Api.register( 'fixedHeader.disable()', function ( ) {
+	return this.iterator( 'table', function ( ctx ) {
+		var fh = ctx._fixedHeader;
+
+		if ( fh && fh.enabled() ) {
+			fh.enable( false );
+		}
+	} );
+} );
+
+$.each( ['header', 'footer'], function ( i, el ) {
+	DataTable.Api.register( 'fixedHeader.'+el+'Offset()', function ( offset ) {
+		var ctx = this.context;
+
+		if ( offset === undefined ) {
+			return ctx.length && ctx[0]._fixedHeader ?
+				ctx[0]._fixedHeader[el +'Offset']() :
+				undefined;
+		}
+
+		return this.iterator( 'table', function ( ctx ) {
+			var fh = ctx._fixedHeader;
+
+			if ( fh ) {
+				fh[ el +'Offset' ]( offset );
+			}
+		} );
+	} );
+} );
+
+
+return FixedHeader;
+}));
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/dataTables.fixedHeader.min.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/dataTables.fixedHeader.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/dataTables.fixedHeader.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,31 @@
+/*!
+   Copyright 2009-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ FixedHeader 3.1.6
+ ©2009-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(c,f,g){c instanceof String&&(c=String(c));for(var l=c.length,h=0;h<l;h++){var n=c[h];if(f.call(g,n,h,c))return{i:h,v:n}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(c,f,g){c!=Array.prototype&&c!=Object.prototype&&(c[f]=g.value)};$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global&&null!=global?global:c};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(c,f,g,l){if(f){g=$jscomp.global;c=c.split(".");for(l=0;l<c.length-1;l++){var h=c[l];h in g||(g[h]={});g=g[h]}c=c[c.length-1];l=g[c];f=f(l);f!=l&&null!=f&&$jscomp.defineProperty(g,c,{configurable:!0,writable:!0,value:f})}};$jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,g){return $jscomp.findInternal(this,c,g).v}},"es6","es3");
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(f){return c(f,window,document)}):"object"===typeof exports?module.exports=function(f,g){f||(f=window);g&&g.fn.dataTable||(g=require("datatables.net")(f,g).$);return c(g,f,f.document)}:c(jQuery,window,document)})(function(c,f,g,l){var h=c.fn.dataTable,n=0,m=function(a,b){if(!(this instanceof m))throw"FixedHeader must be initialised with the 'new' keyword.";!0===b&&(b={});a=new h.Api(a);this.c=c.extend(!0,
+{},m.defaults,b);this.s={dt:a,position:{theadTop:0,tbodyTop:0,tfootTop:0,tfootBottom:0,width:0,left:0,tfootHeight:0,theadHeight:0,windowHeight:c(f).height(),visible:!0},headerMode:null,footerMode:null,autoWidth:a.settings()[0].oFeatures.bAutoWidth,namespace:".dtfc"+n++,scrollLeft:{header:-1,footer:-1},enable:!0};this.dom={floatingHeader:null,thead:c(a.table().header()),tbody:c(a.table().body()),tfoot:c(a.table().footer()),header:{host:null,floating:null,placeholder:null},footer:{host:null,floating:null,
+placeholder:null}};this.dom.header.host=this.dom.thead.parent();this.dom.footer.host=this.dom.tfoot.parent();a=a.settings()[0];if(a._fixedHeader)throw"FixedHeader already initialised on table "+a.nTable.id;a._fixedHeader=this;this._constructor()};c.extend(m.prototype,{destroy:function(){this.s.dt.off(".dtfc");c(f).off(this.s.namespace);this.c.header&&this._modeChange("in-place","header",!0);this.c.footer&&this.dom.tfoot.length&&this._modeChange("in-place","footer",!0)},enable:function(a,b){this.s.enable=
+a;if(b||b===l)this._positions(),this._scroll(!0)},enabled:function(){return this.s.enable},headerOffset:function(a){a!==l&&(this.c.headerOffset=a,this.update());return this.c.headerOffset},footerOffset:function(a){a!==l&&(this.c.footerOffset=a,this.update());return this.c.footerOffset},update:function(){var a=this.s.dt.table().node();c(a).is(":visible")?this.enable(!0,!1):this.enable(!1,!1);this._positions();this._scroll(!0)},_constructor:function(){var a=this,b=this.s.dt;c(f).on("scroll"+this.s.namespace,
+function(){a._scroll()}).on("resize"+this.s.namespace,h.util.throttle(function(){a.s.position.windowHeight=c(f).height();a.update()},50));var e=c(".fh-fixedHeader");!this.c.headerOffset&&e.length&&(this.c.headerOffset=e.outerHeight());e=c(".fh-fixedFooter");!this.c.footerOffset&&e.length&&(this.c.footerOffset=e.outerHeight());b.on("column-reorder.dt.dtfc column-visibility.dt.dtfc draw.dt.dtfc column-sizing.dt.dtfc responsive-display.dt.dtfc",function(){a.update()});b.on("destroy.dtfc",function(){a.destroy()});
+this._positions();this._scroll()},_clone:function(a,b){var e=this.s.dt,d=this.dom[a],k="header"===a?this.dom.thead:this.dom.tfoot;!b&&d.floating?d.floating.removeClass("fixedHeader-floating fixedHeader-locked"):(d.floating&&(d.placeholder.remove(),this._unsize(a),d.floating.children().detach(),d.floating.remove()),d.floating=c(e.table().node().cloneNode(!1)).css("table-layout","fixed").attr("aria-hidden","true").removeAttr("id").append(k).appendTo("body"),d.placeholder=k.clone(!1),d.placeholder.find("*[id]").removeAttr("id"),
+d.host.prepend(d.placeholder),this._matchWidths(d.placeholder,d.floating))},_matchWidths:function(a,b){var e=function(b){return c(b,a).map(function(){return c(this).width()}).toArray()},d=function(a,d){c(a,b).each(function(a){c(this).css({width:d[a],minWidth:d[a]})})},k=e("th");e=e("td");d("th",k);d("td",e)},_unsize:function(a){var b=this.dom[a].floating;b&&("footer"===a||"header"===a&&!this.s.autoWidth)?c("th, td",b).css({width:"",minWidth:""}):b&&"header"===a&&c("th, td",b).css("min-width","")},
+_horizontal:function(a,b){var c=this.dom[a],d=this.s.position,k=this.s.scrollLeft;c.floating&&k[a]!==b&&(c.floating.css("left",d.left-b),k[a]=b)},_modeChange:function(a,b,e){var d=this.dom[b],k=this.s.position,f=this.dom["footer"===b?"tfoot":"thead"],h=c.contains(f[0],g.activeElement)?g.activeElement:null;h&&h.blur();"in-place"===a?(d.placeholder&&(d.placeholder.remove(),d.placeholder=null),this._unsize(b),"header"===b?d.host.prepend(f):d.host.append(f),d.floating&&(d.floating.remove(),d.floating=
+null)):"in"===a?(this._clone(b,e),d.floating.addClass("fixedHeader-floating").css("header"===b?"top":"bottom",this.c[b+"Offset"]).css("left",k.left+"px").css("width",k.width+"px"),"footer"===b&&d.floating.css("top","")):"below"===a?(this._clone(b,e),d.floating.addClass("fixedHeader-locked").css("top",k.tfootTop-k.theadHeight).css("left",k.left+"px").css("width",k.width+"px")):"above"===a&&(this._clone(b,e),d.floating.addClass("fixedHeader-locked").css("top",k.tbodyTop).css("left",k.left+"px").css("width",
+k.width+"px"));h&&h!==g.activeElement&&setTimeout(function(){h.focus()},10);this.s.scrollLeft.header=-1;this.s.scrollLeft.footer=-1;this.s[b+"Mode"]=a},_positions:function(){var a=this.s.dt.table(),b=this.s.position,e=this.dom;a=c(a.node());var d=a.children("thead"),k=a.children("tfoot");e=e.tbody;b.visible=a.is(":visible");b.width=a.outerWidth();b.left=a.offset().left;b.theadTop=d.offset().top;b.tbodyTop=e.offset().top;b.tbodyHeight=e.outerHeight();b.theadHeight=b.tbodyTop-b.theadTop;k.length?(b.tfootTop=
+k.offset().top,b.tfootBottom=b.tfootTop+k.outerHeight(),b.tfootHeight=b.tfootBottom-b.tfootTop):(b.tfootTop=b.tbodyTop+e.outerHeight(),b.tfootBottom=b.tfootTop,b.tfootHeight=b.tfootTop)},_scroll:function(a){var b=c(g).scrollTop(),e=c(g).scrollLeft(),d=this.s.position,k;if(this.c.header){var f=this.s.enable?!d.visible||b<=d.theadTop-this.c.headerOffset?"in-place":b<=d.tfootTop-d.theadHeight-this.c.headerOffset?"in":"below":"in-place";(a||f!==this.s.headerMode)&&this._modeChange(f,"header",a);this._horizontal("header",
+e)}this.c.footer&&this.dom.tfoot.length&&(this.s.enable&&(k=!d.visible||b+d.windowHeight>=d.tfootBottom+this.c.footerOffset?"in-place":d.windowHeight+b>d.tbodyTop+d.tfootHeight+this.c.footerOffset?"in":"above"),(a||k!==this.s.footerMode)&&this._modeChange(k,"footer",a),this._horizontal("footer",e))}});m.version="3.1.6";m.defaults={header:!0,footer:!1,headerOffset:0,footerOffset:0};c.fn.dataTable.FixedHeader=m;c.fn.DataTable.FixedHeader=m;c(g).on("init.dt.dtfh",function(a,b,e){"dt"===a.namespace&&
+(a=b.oInit.fixedHeader,e=h.defaults.fixedHeader,!a&&!e||b._fixedHeader||(e=c.extend({},e,a),!1!==a&&new m(b,e)))});h.Api.register("fixedHeader()",function(){});h.Api.register("fixedHeader.adjust()",function(){return this.iterator("table",function(a){(a=a._fixedHeader)&&a.update()})});h.Api.register("fixedHeader.enable()",function(a){return this.iterator("table",function(b){b=b._fixedHeader;a=a!==l?a:!0;b&&a!==b.enabled()&&b.enable(a)})});h.Api.register("fixedHeader.enabled()",function(){return this.context.length&&
+fh?fh.enabled():!1});h.Api.register("fixedHeader.disable()",function(){return this.iterator("table",function(a){(a=a._fixedHeader)&&a.enabled()&&a.enable(!1)})});c.each(["header","footer"],function(a,b){h.Api.register("fixedHeader."+b+"Offset()",function(a){var c=this.context;return a===l?c.length&&c[0]._fixedHeader?c[0]._fixedHeader[b+"Offset"]():l:this.iterator("table",function(c){if(c=c._fixedHeader)c[b+"Offset"](a)})})});return m});
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 3 styling wrapper for FixedHeader
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs', 'datatables.net-fixedheader'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedHeader ) {
+				require('datatables.net-fixedheader')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 3 styling wrapper for FixedHeader
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-fixedheader"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs")(a,b).$);b.fn.dataTable.FixedHeader||require("datatables.net-fixedheader")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap4.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 4 styling wrapper for FixedHeader
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-fixedheader'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedHeader ) {
+				require('datatables.net-fixedheader')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 4 styling wrapper for FixedHeader
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-fixedheader"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.FixedHeader||require("datatables.net-fixedheader")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.dataTables.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! DataTables styling wrapper for FixedHeader
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-dt', 'datatables.net-fixedheader'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-dt')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedHeader ) {
+				require('datatables.net-fixedheader')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.foundation.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 4 styling wrapper for FixedHeader
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-zf', 'datatables.net-fixedheader'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-zf')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedHeader ) {
+				require('datatables.net-fixedheader')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.foundation.min.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 4 styling wrapper for FixedHeader
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-fixedheader"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-zf")(a,b).$);b.fn.dataTable.FixedHeader||require("datatables.net-fixedheader")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.jqueryui.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! jQuery UI styling wrapper for FixedHeader
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-jqui', 'datatables.net-fixedheader'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-jqui')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedHeader ) {
+				require('datatables.net-fixedheader')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ jQuery UI styling wrapper for FixedHeader
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-fixedheader"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-jqui")(a,b).$);b.fn.dataTable.FixedHeader||require("datatables.net-fixedheader")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.semanticui.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Semanic UI styling wrapper for FixedHeader
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-se', 'datatables.net-fixedheader'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-se')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.FixedHeader ) {
+				require('datatables.net-fixedheader')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.semanticui.min.js
===================================================================
--- public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/FixedHeader-3.1.6/js/fixedHeader.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Semanic UI styling wrapper for FixedHeader
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-fixedheader"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-se")(a,b).$);b.fn.dataTable.FixedHeader||require("datatables.net-fixedheader")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/JSZip-2.5.0/jszip.js
===================================================================
--- public/vendors/dataTable/JSZip-2.5.0/jszip.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/JSZip-2.5.0/jszip.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9155 @@
+/*!
+
+JSZip - A Javascript class for generating and reading zip files
+<http://stuartk.com/jszip>
+
+(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com>
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
+
+JSZip uses the library pako released under the MIT license :
+https://github.com/nodeca/pako/blob/master/LICENSE
+*/
+!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.JSZip=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
+'use strict';
+// private property
+var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+
+
+// public method for encoding
+exports.encode = function(input, utf8) {
+    var output = "";
+    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
+    var i = 0;
+
+    while (i < input.length) {
+
+        chr1 = input.charCodeAt(i++);
+        chr2 = input.charCodeAt(i++);
+        chr3 = input.charCodeAt(i++);
+
+        enc1 = chr1 >> 2;
+        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+        enc4 = chr3 & 63;
+
+        if (isNaN(chr2)) {
+            enc3 = enc4 = 64;
+        }
+        else if (isNaN(chr3)) {
+            enc4 = 64;
+        }
+
+        output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
+
+    }
+
+    return output;
+};
+
+// public method for decoding
+exports.decode = function(input, utf8) {
+    var output = "";
+    var chr1, chr2, chr3;
+    var enc1, enc2, enc3, enc4;
+    var i = 0;
+
+    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+    while (i < input.length) {
+
+        enc1 = _keyStr.indexOf(input.charAt(i++));
+        enc2 = _keyStr.indexOf(input.charAt(i++));
+        enc3 = _keyStr.indexOf(input.charAt(i++));
+        enc4 = _keyStr.indexOf(input.charAt(i++));
+
+        chr1 = (enc1 << 2) | (enc2 >> 4);
+        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+        chr3 = ((enc3 & 3) << 6) | enc4;
+
+        output = output + String.fromCharCode(chr1);
+
+        if (enc3 != 64) {
+            output = output + String.fromCharCode(chr2);
+        }
+        if (enc4 != 64) {
+            output = output + String.fromCharCode(chr3);
+        }
+
+    }
+
+    return output;
+
+};
+
+},{}],2:[function(_dereq_,module,exports){
+'use strict';
+function CompressedObject() {
+    this.compressedSize = 0;
+    this.uncompressedSize = 0;
+    this.crc32 = 0;
+    this.compressionMethod = null;
+    this.compressedContent = null;
+}
+
+CompressedObject.prototype = {
+    /**
+     * Return the decompressed content in an unspecified format.
+     * The format will depend on the decompressor.
+     * @return {Object} the decompressed content.
+     */
+    getContent: function() {
+        return null; // see implementation
+    },
+    /**
+     * Return the compressed content in an unspecified format.
+     * The format will depend on the compressed conten source.
+     * @return {Object} the compressed content.
+     */
+    getCompressedContent: function() {
+        return null; // see implementation
+    }
+};
+module.exports = CompressedObject;
+
+},{}],3:[function(_dereq_,module,exports){
+'use strict';
+exports.STORE = {
+    magic: "\x00\x00",
+    compress: function(content, compressionOptions) {
+        return content; // no compression
+    },
+    uncompress: function(content) {
+        return content; // no compression
+    },
+    compressInputType: null,
+    uncompressInputType: null
+};
+exports.DEFLATE = _dereq_('./flate');
+
+},{"./flate":8}],4:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+var table = [
+    0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
+    0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
+    0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
+    0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
+    0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
+    0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
+    0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
+    0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
+    0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
+    0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
+    0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
+    0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
+    0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
+    0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
+    0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
+    0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
+    0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
+    0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
+    0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
+    0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
+    0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
+    0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
+    0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
+    0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
+    0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
+    0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
+    0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
+    0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
+    0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
+    0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
+    0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
+    0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
+    0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
+    0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
+    0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
+    0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
+    0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
+    0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
+    0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
+    0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
+    0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
+    0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
+    0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
+    0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
+    0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
+    0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
+    0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
+    0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
+    0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
+    0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
+    0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
+    0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
+    0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
+    0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
+    0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
+    0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
+    0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
+    0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
+    0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
+    0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
+    0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
+    0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
+    0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
+    0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
+];
+
+/**
+ *
+ *  Javascript crc32
+ *  http://www.webtoolkit.info/
+ *
+ */
+module.exports = function crc32(input, crc) {
+    if (typeof input === "undefined" || !input.length) {
+        return 0;
+    }
+
+    var isArray = utils.getTypeOf(input) !== "string";
+
+    if (typeof(crc) == "undefined") {
+        crc = 0;
+    }
+    var x = 0;
+    var y = 0;
+    var b = 0;
+
+    crc = crc ^ (-1);
+    for (var i = 0, iTop = input.length; i < iTop; i++) {
+        b = isArray ? input[i] : input.charCodeAt(i);
+        y = (crc ^ b) & 0xFF;
+        x = table[y];
+        crc = (crc >>> 8) ^ x;
+    }
+
+    return crc ^ (-1);
+};
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{"./utils":21}],5:[function(_dereq_,module,exports){
+'use strict';
+var utils = _dereq_('./utils');
+
+function DataReader(data) {
+    this.data = null; // type : see implementation
+    this.length = 0;
+    this.index = 0;
+}
+DataReader.prototype = {
+    /**
+     * Check that the offset will not go too far.
+     * @param {string} offset the additional offset to check.
+     * @throws {Error} an Error if the offset is out of bounds.
+     */
+    checkOffset: function(offset) {
+        this.checkIndex(this.index + offset);
+    },
+    /**
+     * Check that the specifed index will not be too far.
+     * @param {string} newIndex the index to check.
+     * @throws {Error} an Error if the index is out of bounds.
+     */
+    checkIndex: function(newIndex) {
+        if (this.length < newIndex || newIndex < 0) {
+            throw new Error("End of data reached (data length = " + this.length + ", asked index = " + (newIndex) + "). Corrupted zip ?");
+        }
+    },
+    /**
+     * Change the index.
+     * @param {number} newIndex The new index.
+     * @throws {Error} if the new index is out of the data.
+     */
+    setIndex: function(newIndex) {
+        this.checkIndex(newIndex);
+        this.index = newIndex;
+    },
+    /**
+     * Skip the next n bytes.
+     * @param {number} n the number of bytes to skip.
+     * @throws {Error} if the new index is out of the data.
+     */
+    skip: function(n) {
+        this.setIndex(this.index + n);
+    },
+    /**
+     * Get the byte at the specified index.
+     * @param {number} i the index to use.
+     * @return {number} a byte.
+     */
+    byteAt: function(i) {
+        // see implementations
+    },
+    /**
+     * Get the next number with a given byte size.
+     * @param {number} size the number of bytes to read.
+     * @return {number} the corresponding number.
+     */
+    readInt: function(size) {
+        var result = 0,
+            i;
+        this.checkOffset(size);
+        for (i = this.index + size - 1; i >= this.index; i--) {
+            result = (result << 8) + this.byteAt(i);
+        }
+        this.index += size;
+        return result;
+    },
+    /**
+     * Get the next string with a given byte size.
+     * @param {number} size the number of bytes to read.
+     * @return {string} the corresponding string.
+     */
+    readString: function(size) {
+        return utils.transformTo("string", this.readData(size));
+    },
+    /**
+     * Get raw data without conversion, <size> bytes.
+     * @param {number} size the number of bytes to read.
+     * @return {Object} the raw data, implementation specific.
+     */
+    readData: function(size) {
+        // see implementations
+    },
+    /**
+     * Find the last occurence of a zip signature (4 bytes).
+     * @param {string} sig the signature to find.
+     * @return {number} the index of the last occurence, -1 if not found.
+     */
+    lastIndexOfSignature: function(sig) {
+        // see implementations
+    },
+    /**
+     * Get the next date.
+     * @return {Date} the date.
+     */
+    readDate: function() {
+        var dostime = this.readInt(4);
+        return new Date(
+        ((dostime >> 25) & 0x7f) + 1980, // year
+        ((dostime >> 21) & 0x0f) - 1, // month
+        (dostime >> 16) & 0x1f, // day
+        (dostime >> 11) & 0x1f, // hour
+        (dostime >> 5) & 0x3f, // minute
+        (dostime & 0x1f) << 1); // second
+    }
+};
+module.exports = DataReader;
+
+},{"./utils":21}],6:[function(_dereq_,module,exports){
+'use strict';
+exports.base64 = false;
+exports.binary = false;
+exports.dir = false;
+exports.createFolders = false;
+exports.date = null;
+exports.compression = null;
+exports.compressionOptions = null;
+exports.comment = null;
+exports.unixPermissions = null;
+exports.dosPermissions = null;
+
+},{}],7:[function(_dereq_,module,exports){
+'use strict';
+var utils = _dereq_('./utils');
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2binary = function(str) {
+    return utils.string2binary(str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2Uint8Array = function(str) {
+    return utils.transformTo("uint8array", str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.uint8Array2String = function(array) {
+    return utils.transformTo("string", array);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2Blob = function(str) {
+    var buffer = utils.transformTo("arraybuffer", str);
+    return utils.arrayBuffer2Blob(buffer);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.arrayBuffer2Blob = function(buffer) {
+    return utils.arrayBuffer2Blob(buffer);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.transformTo = function(outputType, input) {
+    return utils.transformTo(outputType, input);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.getTypeOf = function(input) {
+    return utils.getTypeOf(input);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.checkSupport = function(type) {
+    return utils.checkSupport(type);
+};
+
+/**
+ * @deprecated
+ * This value will be removed in a future version without replacement.
+ */
+exports.MAX_VALUE_16BITS = utils.MAX_VALUE_16BITS;
+
+/**
+ * @deprecated
+ * This value will be removed in a future version without replacement.
+ */
+exports.MAX_VALUE_32BITS = utils.MAX_VALUE_32BITS;
+
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.pretty = function(str) {
+    return utils.pretty(str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.findCompression = function(compressionMethod) {
+    return utils.findCompression(compressionMethod);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.isRegExp = function (object) {
+    return utils.isRegExp(object);
+};
+
+
+},{"./utils":21}],8:[function(_dereq_,module,exports){
+'use strict';
+var USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');
+
+var pako = _dereq_("pako");
+exports.uncompressInputType = USE_TYPEDARRAY ? "uint8array" : "array";
+exports.compressInputType = USE_TYPEDARRAY ? "uint8array" : "array";
+
+exports.magic = "\x08\x00";
+exports.compress = function(input, compressionOptions) {
+    return pako.deflateRaw(input, {
+        level : compressionOptions.level || -1 // default compression
+    });
+};
+exports.uncompress =  function(input) {
+    return pako.inflateRaw(input);
+};
+
+},{"pako":24}],9:[function(_dereq_,module,exports){
+'use strict';
+
+var base64 = _dereq_('./base64');
+
+/**
+Usage:
+   zip = new JSZip();
+   zip.file("hello.txt", "Hello, World!").file("tempfile", "nothing");
+   zip.folder("images").file("smile.gif", base64Data, {base64: true});
+   zip.file("Xmas.txt", "Ho ho ho !", {date : new Date("December 25, 2007 00:00:01")});
+   zip.remove("tempfile");
+
+   base64zip = zip.generate();
+
+**/
+
+/**
+ * Representation a of zip file in js
+ * @constructor
+ * @param {String=|ArrayBuffer=|Uint8Array=} data the data to load, if any (optional).
+ * @param {Object=} options the options for creating this objects (optional).
+ */
+function JSZip(data, options) {
+    // if this constructor is used without `new`, it adds `new` before itself:
+    if(!(this instanceof JSZip)) return new JSZip(data, options);
+
+    // object containing the files :
+    // {
+    //   "folder/" : {...},
+    //   "folder/data.txt" : {...}
+    // }
+    this.files = {};
+
+    this.comment = null;
+
+    // Where we are in the hierarchy
+    this.root = "";
+    if (data) {
+        this.load(data, options);
+    }
+    this.clone = function() {
+        var newObj = new JSZip();
+        for (var i in this) {
+            if (typeof this[i] !== "function") {
+                newObj[i] = this[i];
+            }
+        }
+        return newObj;
+    };
+}
+JSZip.prototype = _dereq_('./object');
+JSZip.prototype.load = _dereq_('./load');
+JSZip.support = _dereq_('./support');
+JSZip.defaults = _dereq_('./defaults');
+
+/**
+ * @deprecated
+ * This namespace will be removed in a future version without replacement.
+ */
+JSZip.utils = _dereq_('./deprecatedPublicUtils');
+
+JSZip.base64 = {
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    encode : function(input) {
+        return base64.encode(input);
+    },
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    decode : function(input) {
+        return base64.decode(input);
+    }
+};
+JSZip.compressions = _dereq_('./compressions');
+module.exports = JSZip;
+
+},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(_dereq_,module,exports){
+'use strict';
+var base64 = _dereq_('./base64');
+var ZipEntries = _dereq_('./zipEntries');
+module.exports = function(data, options) {
+    var files, zipEntries, i, input;
+    options = options || {};
+    if (options.base64) {
+        data = base64.decode(data);
+    }
+
+    zipEntries = new ZipEntries(data, options);
+    files = zipEntries.files;
+    for (i = 0; i < files.length; i++) {
+        input = files[i];
+        this.file(input.fileName, input.decompressed, {
+            binary: true,
+            optimizedBinaryString: true,
+            date: input.date,
+            dir: input.dir,
+            comment : input.fileComment.length ? input.fileComment : null,
+            unixPermissions : input.unixPermissions,
+            dosPermissions : input.dosPermissions,
+            createFolders: options.createFolders
+        });
+    }
+    if (zipEntries.zipComment.length) {
+        this.comment = zipEntries.zipComment;
+    }
+
+    return this;
+};
+
+},{"./base64":1,"./zipEntries":22}],11:[function(_dereq_,module,exports){
+(function (Buffer){
+'use strict';
+module.exports = function(data, encoding){
+    return new Buffer(data, encoding);
+};
+module.exports.test = function(b){
+    return Buffer.isBuffer(b);
+};
+
+}).call(this,(typeof Buffer !== "undefined" ? Buffer : undefined))
+},{}],12:[function(_dereq_,module,exports){
+'use strict';
+var Uint8ArrayReader = _dereq_('./uint8ArrayReader');
+
+function NodeBufferReader(data) {
+    this.data = data;
+    this.length = this.data.length;
+    this.index = 0;
+}
+NodeBufferReader.prototype = new Uint8ArrayReader();
+
+/**
+ * @see DataReader.readData
+ */
+NodeBufferReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    var result = this.data.slice(this.index, this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = NodeBufferReader;
+
+},{"./uint8ArrayReader":18}],13:[function(_dereq_,module,exports){
+'use strict';
+var support = _dereq_('./support');
+var utils = _dereq_('./utils');
+var crc32 = _dereq_('./crc32');
+var signature = _dereq_('./signature');
+var defaults = _dereq_('./defaults');
+var base64 = _dereq_('./base64');
+var compressions = _dereq_('./compressions');
+var CompressedObject = _dereq_('./compressedObject');
+var nodeBuffer = _dereq_('./nodeBuffer');
+var utf8 = _dereq_('./utf8');
+var StringWriter = _dereq_('./stringWriter');
+var Uint8ArrayWriter = _dereq_('./uint8ArrayWriter');
+
+/**
+ * Returns the raw data of a ZipObject, decompress the content if necessary.
+ * @param {ZipObject} file the file to use.
+ * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
+ */
+var getRawData = function(file) {
+    if (file._data instanceof CompressedObject) {
+        file._data = file._data.getContent();
+        file.options.binary = true;
+        file.options.base64 = false;
+
+        if (utils.getTypeOf(file._data) === "uint8array") {
+            var copy = file._data;
+            // when reading an arraybuffer, the CompressedObject mechanism will keep it and subarray() a Uint8Array.
+            // if we request a file in the same format, we might get the same Uint8Array or its ArrayBuffer (the original zip file).
+            file._data = new Uint8Array(copy.length);
+            // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
+            if (copy.length !== 0) {
+                file._data.set(copy, 0);
+            }
+        }
+    }
+    return file._data;
+};
+
+/**
+ * Returns the data of a ZipObject in a binary form. If the content is an unicode string, encode it.
+ * @param {ZipObject} file the file to use.
+ * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
+ */
+var getBinaryData = function(file) {
+    var result = getRawData(file),
+        type = utils.getTypeOf(result);
+    if (type === "string") {
+        if (!file.options.binary) {
+            // unicode text !
+            // unicode string => binary string is a painful process, check if we can avoid it.
+            if (support.nodebuffer) {
+                return nodeBuffer(result, "utf-8");
+            }
+        }
+        return file.asBinary();
+    }
+    return result;
+};
+
+/**
+ * Transform this._data into a string.
+ * @param {function} filter a function String -> String, applied if not null on the result.
+ * @return {String} the string representing this._data.
+ */
+var dataToString = function(asUTF8) {
+    var result = getRawData(this);
+    if (result === null || typeof result === "undefined") {
+        return "";
+    }
+    // if the data is a base64 string, we decode it before checking the encoding !
+    if (this.options.base64) {
+        result = base64.decode(result);
+    }
+    if (asUTF8 && this.options.binary) {
+        // JSZip.prototype.utf8decode supports arrays as input
+        // skip to array => string step, utf8decode will do it.
+        result = out.utf8decode(result);
+    }
+    else {
+        // no utf8 transformation, do the array => string step.
+        result = utils.transformTo("string", result);
+    }
+
+    if (!asUTF8 && !this.options.binary) {
+        result = utils.transformTo("string", out.utf8encode(result));
+    }
+    return result;
+};
+/**
+ * A simple object representing a file in the zip file.
+ * @constructor
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data
+ * @param {Object} options the options of the file
+ */
+var ZipObject = function(name, data, options) {
+    this.name = name;
+    this.dir = options.dir;
+    this.date = options.date;
+    this.comment = options.comment;
+    this.unixPermissions = options.unixPermissions;
+    this.dosPermissions = options.dosPermissions;
+
+    this._data = data;
+    this.options = options;
+
+    /*
+     * This object contains initial values for dir and date.
+     * With them, we can check if the user changed the deprecated metadata in
+     * `ZipObject#options` or not.
+     */
+    this._initialMetadata = {
+      dir : options.dir,
+      date : options.date
+    };
+};
+
+ZipObject.prototype = {
+    /**
+     * Return the content as UTF8 string.
+     * @return {string} the UTF8 string.
+     */
+    asText: function() {
+        return dataToString.call(this, true);
+    },
+    /**
+     * Returns the binary content.
+     * @return {string} the content as binary.
+     */
+    asBinary: function() {
+        return dataToString.call(this, false);
+    },
+    /**
+     * Returns the content as a nodejs Buffer.
+     * @return {Buffer} the content as a Buffer.
+     */
+    asNodeBuffer: function() {
+        var result = getBinaryData(this);
+        return utils.transformTo("nodebuffer", result);
+    },
+    /**
+     * Returns the content as an Uint8Array.
+     * @return {Uint8Array} the content as an Uint8Array.
+     */
+    asUint8Array: function() {
+        var result = getBinaryData(this);
+        return utils.transformTo("uint8array", result);
+    },
+    /**
+     * Returns the content as an ArrayBuffer.
+     * @return {ArrayBuffer} the content as an ArrayBufer.
+     */
+    asArrayBuffer: function() {
+        return this.asUint8Array().buffer;
+    }
+};
+
+/**
+ * Transform an integer into a string in hexadecimal.
+ * @private
+ * @param {number} dec the number to convert.
+ * @param {number} bytes the number of bytes to generate.
+ * @returns {string} the result.
+ */
+var decToHex = function(dec, bytes) {
+    var hex = "",
+        i;
+    for (i = 0; i < bytes; i++) {
+        hex += String.fromCharCode(dec & 0xff);
+        dec = dec >>> 8;
+    }
+    return hex;
+};
+
+/**
+ * Merge the objects passed as parameters into a new one.
+ * @private
+ * @param {...Object} var_args All objects to merge.
+ * @return {Object} a new object with the data of the others.
+ */
+var extend = function() {
+    var result = {}, i, attr;
+    for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers
+        for (attr in arguments[i]) {
+            if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") {
+                result[attr] = arguments[i][attr];
+            }
+        }
+    }
+    return result;
+};
+
+/**
+ * Transforms the (incomplete) options from the user into the complete
+ * set of options to create a file.
+ * @private
+ * @param {Object} o the options from the user.
+ * @return {Object} the complete set of options.
+ */
+var prepareFileAttrs = function(o) {
+    o = o || {};
+    if (o.base64 === true && (o.binary === null || o.binary === undefined)) {
+        o.binary = true;
+    }
+    o = extend(o, defaults);
+    o.date = o.date || new Date();
+    if (o.compression !== null) o.compression = o.compression.toUpperCase();
+
+    return o;
+};
+
+/**
+ * Add a file in the current folder.
+ * @private
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file
+ * @param {Object} o the options of the file
+ * @return {Object} the new file.
+ */
+var fileAdd = function(name, data, o) {
+    // be sure sub folders exist
+    var dataType = utils.getTypeOf(data),
+        parent;
+
+    o = prepareFileAttrs(o);
+
+    if (typeof o.unixPermissions === "string") {
+        o.unixPermissions = parseInt(o.unixPermissions, 8);
+    }
+
+    // UNX_IFDIR  0040000 see zipinfo.c
+    if (o.unixPermissions && (o.unixPermissions & 0x4000)) {
+        o.dir = true;
+    }
+    // Bit 4    Directory
+    if (o.dosPermissions && (o.dosPermissions & 0x0010)) {
+        o.dir = true;
+    }
+
+    if (o.dir) {
+        name = forceTrailingSlash(name);
+    }
+
+    if (o.createFolders && (parent = parentFolder(name))) {
+        folderAdd.call(this, parent, true);
+    }
+
+    if (o.dir || data === null || typeof data === "undefined") {
+        o.base64 = false;
+        o.binary = false;
+        data = null;
+        dataType = null;
+    }
+    else if (dataType === "string") {
+        if (o.binary && !o.base64) {
+            // optimizedBinaryString == true means that the file has already been filtered with a 0xFF mask
+            if (o.optimizedBinaryString !== true) {
+                // this is a string, not in a base64 format.
+                // Be sure that this is a correct "binary string"
+                data = utils.string2binary(data);
+            }
+        }
+    }
+    else { // arraybuffer, uint8array, ...
+        o.base64 = false;
+        o.binary = true;
+
+        if (!dataType && !(data instanceof CompressedObject)) {
+            throw new Error("The data of '" + name + "' is in an unsupported format !");
+        }
+
+        // special case : it's way easier to work with Uint8Array than with ArrayBuffer
+        if (dataType === "arraybuffer") {
+            data = utils.transformTo("uint8array", data);
+        }
+    }
+
+    var object = new ZipObject(name, data, o);
+    this.files[name] = object;
+    return object;
+};
+
+/**
+ * Find the parent folder of the path.
+ * @private
+ * @param {string} path the path to use
+ * @return {string} the parent folder, or ""
+ */
+var parentFolder = function (path) {
+    if (path.slice(-1) == '/') {
+        path = path.substring(0, path.length - 1);
+    }
+    var lastSlash = path.lastIndexOf('/');
+    return (lastSlash > 0) ? path.substring(0, lastSlash) : "";
+};
+
+
+/**
+ * Returns the path with a slash at the end.
+ * @private
+ * @param {String} path the path to check.
+ * @return {String} the path with a trailing slash.
+ */
+var forceTrailingSlash = function(path) {
+    // Check the name ends with a /
+    if (path.slice(-1) != "/") {
+        path += "/"; // IE doesn't like substr(-1)
+    }
+    return path;
+};
+/**
+ * Add a (sub) folder in the current folder.
+ * @private
+ * @param {string} name the folder's name
+ * @param {boolean=} [createFolders] If true, automatically create sub
+ *  folders. Defaults to false.
+ * @return {Object} the new folder.
+ */
+var folderAdd = function(name, createFolders) {
+    createFolders = (typeof createFolders !== 'undefined') ? createFolders : false;
+
+    name = forceTrailingSlash(name);
+
+    // Does this folder already exist?
+    if (!this.files[name]) {
+        fileAdd.call(this, name, null, {
+            dir: true,
+            createFolders: createFolders
+        });
+    }
+    return this.files[name];
+};
+
+/**
+ * Generate a JSZip.CompressedObject for a given zipOject.
+ * @param {ZipObject} file the object to read.
+ * @param {JSZip.compression} compression the compression to use.
+ * @param {Object} compressionOptions the options to use when compressing.
+ * @return {JSZip.CompressedObject} the compressed result.
+ */
+var generateCompressedObjectFrom = function(file, compression, compressionOptions) {
+    var result = new CompressedObject(),
+        content;
+
+    // the data has not been decompressed, we might reuse things !
+    if (file._data instanceof CompressedObject) {
+        result.uncompressedSize = file._data.uncompressedSize;
+        result.crc32 = file._data.crc32;
+
+        if (result.uncompressedSize === 0 || file.dir) {
+            compression = compressions['STORE'];
+            result.compressedContent = "";
+            result.crc32 = 0;
+        }
+        else if (file._data.compressionMethod === compression.magic) {
+            result.compressedContent = file._data.getCompressedContent();
+        }
+        else {
+            content = file._data.getContent();
+            // need to decompress / recompress
+            result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);
+        }
+    }
+    else {
+        // have uncompressed data
+        content = getBinaryData(file);
+        if (!content || content.length === 0 || file.dir) {
+            compression = compressions['STORE'];
+            content = "";
+        }
+        result.uncompressedSize = content.length;
+        result.crc32 = crc32(content);
+        result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);
+    }
+
+    result.compressedSize = result.compressedContent.length;
+    result.compressionMethod = compression.magic;
+
+    return result;
+};
+
+
+
+
+/**
+ * Generate the UNIX part of the external file attributes.
+ * @param {Object} unixPermissions the unix permissions or null.
+ * @param {Boolean} isDir true if the entry is a directory, false otherwise.
+ * @return {Number} a 32 bit integer.
+ *
+ * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :
+ *
+ * TTTTsstrwxrwxrwx0000000000ADVSHR
+ * ^^^^____________________________ file type, see zipinfo.c (UNX_*)
+ *     ^^^_________________________ setuid, setgid, sticky
+ *        ^^^^^^^^^________________ permissions
+ *                 ^^^^^^^^^^______ not used ?
+ *                           ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only
+ */
+var generateUnixExternalFileAttr = function (unixPermissions, isDir) {
+
+    var result = unixPermissions;
+    if (!unixPermissions) {
+        // I can't use octal values in strict mode, hence the hexa.
+        //  040775 => 0x41fd
+        // 0100664 => 0x81b4
+        result = isDir ? 0x41fd : 0x81b4;
+    }
+
+    return (result & 0xFFFF) << 16;
+};
+
+/**
+ * Generate the DOS part of the external file attributes.
+ * @param {Object} dosPermissions the dos permissions or null.
+ * @param {Boolean} isDir true if the entry is a directory, false otherwise.
+ * @return {Number} a 32 bit integer.
+ *
+ * Bit 0     Read-Only
+ * Bit 1     Hidden
+ * Bit 2     System
+ * Bit 3     Volume Label
+ * Bit 4     Directory
+ * Bit 5     Archive
+ */
+var generateDosExternalFileAttr = function (dosPermissions, isDir) {
+
+    // the dir flag is already set for compatibility
+
+    return (dosPermissions || 0)  & 0x3F;
+};
+
+/**
+ * Generate the various parts used in the construction of the final zip file.
+ * @param {string} name the file name.
+ * @param {ZipObject} file the file content.
+ * @param {JSZip.CompressedObject} compressedObject the compressed object.
+ * @param {number} offset the current offset from the start of the zip file.
+ * @param {String} platform let's pretend we are this platform (change platform dependents fields)
+ * @return {object} the zip parts.
+ */
+var generateZipParts = function(name, file, compressedObject, offset, platform) {
+    var data = compressedObject.compressedContent,
+        utfEncodedFileName = utils.transformTo("string", utf8.utf8encode(file.name)),
+        comment = file.comment || "",
+        utfEncodedComment = utils.transformTo("string", utf8.utf8encode(comment)),
+        useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,
+        useUTF8ForComment = utfEncodedComment.length !== comment.length,
+        o = file.options,
+        dosTime,
+        dosDate,
+        extraFields = "",
+        unicodePathExtraField = "",
+        unicodeCommentExtraField = "",
+        dir, date;
+
+
+    // handle the deprecated options.dir
+    if (file._initialMetadata.dir !== file.dir) {
+        dir = file.dir;
+    } else {
+        dir = o.dir;
+    }
+
+    // handle the deprecated options.date
+    if(file._initialMetadata.date !== file.date) {
+        date = file.date;
+    } else {
+        date = o.date;
+    }
+
+    var extFileAttr = 0;
+    var versionMadeBy = 0;
+    if (dir) {
+        // dos or unix, we set the dos dir flag
+        extFileAttr |= 0x00010;
+    }
+    if(platform === "UNIX") {
+        versionMadeBy = 0x031E; // UNIX, version 3.0
+        extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);
+    } else { // DOS or other, fallback to DOS
+        versionMadeBy = 0x0014; // DOS, version 2.0
+        extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);
+    }
+
+    // date
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html
+
+    dosTime = date.getHours();
+    dosTime = dosTime << 6;
+    dosTime = dosTime | date.getMinutes();
+    dosTime = dosTime << 5;
+    dosTime = dosTime | date.getSeconds() / 2;
+
+    dosDate = date.getFullYear() - 1980;
+    dosDate = dosDate << 4;
+    dosDate = dosDate | (date.getMonth() + 1);
+    dosDate = dosDate << 5;
+    dosDate = dosDate | date.getDate();
+
+    if (useUTF8ForFileName) {
+        // set the unicode path extra field. unzip needs at least one extra
+        // field to correctly handle unicode path, so using the path is as good
+        // as any other information. This could improve the situation with
+        // other archive managers too.
+        // This field is usually used without the utf8 flag, with a non
+        // unicode path in the header (winrar, winzip). This helps (a bit)
+        // with the messy Windows' default compressed folders feature but
+        // breaks on p7zip which doesn't seek the unicode path extra field.
+        // So for now, UTF-8 everywhere !
+        unicodePathExtraField =
+            // Version
+            decToHex(1, 1) +
+            // NameCRC32
+            decToHex(crc32(utfEncodedFileName), 4) +
+            // UnicodeName
+            utfEncodedFileName;
+
+        extraFields +=
+            // Info-ZIP Unicode Path Extra Field
+            "\x75\x70" +
+            // size
+            decToHex(unicodePathExtraField.length, 2) +
+            // content
+            unicodePathExtraField;
+    }
+
+    if(useUTF8ForComment) {
+
+        unicodeCommentExtraField =
+            // Version
+            decToHex(1, 1) +
+            // CommentCRC32
+            decToHex(this.crc32(utfEncodedComment), 4) +
+            // UnicodeName
+            utfEncodedComment;
+
+        extraFields +=
+            // Info-ZIP Unicode Path Extra Field
+            "\x75\x63" +
+            // size
+            decToHex(unicodeCommentExtraField.length, 2) +
+            // content
+            unicodeCommentExtraField;
+    }
+
+    var header = "";
+
+    // version needed to extract
+    header += "\x0A\x00";
+    // general purpose bit flag
+    // set bit 11 if utf8
+    header += (useUTF8ForFileName || useUTF8ForComment) ? "\x00\x08" : "\x00\x00";
+    // compression method
+    header += compressedObject.compressionMethod;
+    // last mod file time
+    header += decToHex(dosTime, 2);
+    // last mod file date
+    header += decToHex(dosDate, 2);
+    // crc-32
+    header += decToHex(compressedObject.crc32, 4);
+    // compressed size
+    header += decToHex(compressedObject.compressedSize, 4);
+    // uncompressed size
+    header += decToHex(compressedObject.uncompressedSize, 4);
+    // file name length
+    header += decToHex(utfEncodedFileName.length, 2);
+    // extra field length
+    header += decToHex(extraFields.length, 2);
+
+
+    var fileRecord = signature.LOCAL_FILE_HEADER + header + utfEncodedFileName + extraFields;
+
+    var dirRecord = signature.CENTRAL_FILE_HEADER +
+    // version made by (00: DOS)
+    decToHex(versionMadeBy, 2) +
+    // file header (common to file and central directory)
+    header +
+    // file comment length
+    decToHex(utfEncodedComment.length, 2) +
+    // disk number start
+    "\x00\x00" +
+    // internal file attributes TODO
+    "\x00\x00" +
+    // external file attributes
+    decToHex(extFileAttr, 4) +
+    // relative offset of local header
+    decToHex(offset, 4) +
+    // file name
+    utfEncodedFileName +
+    // extra field
+    extraFields +
+    // file comment
+    utfEncodedComment;
+
+    return {
+        fileRecord: fileRecord,
+        dirRecord: dirRecord,
+        compressedObject: compressedObject
+    };
+};
+
+
+// return the actual prototype of JSZip
+var out = {
+    /**
+     * Read an existing zip and merge the data in the current JSZip object.
+     * The implementation is in jszip-load.js, don't forget to include it.
+     * @param {String|ArrayBuffer|Uint8Array|Buffer} stream  The stream to load
+     * @param {Object} options Options for loading the stream.
+     *  options.base64 : is the stream in base64 ? default : false
+     * @return {JSZip} the current JSZip object
+     */
+    load: function(stream, options) {
+        throw new Error("Load method is not defined. Is the file jszip-load.js included ?");
+    },
+
+    /**
+     * Filter nested files/folders with the specified function.
+     * @param {Function} search the predicate to use :
+     * function (relativePath, file) {...}
+     * It takes 2 arguments : the relative path and the file.
+     * @return {Array} An array of matching elements.
+     */
+    filter: function(search) {
+        var result = [],
+            filename, relativePath, file, fileClone;
+        for (filename in this.files) {
+            if (!this.files.hasOwnProperty(filename)) {
+                continue;
+            }
+            file = this.files[filename];
+            // return a new object, don't let the user mess with our internal objects :)
+            fileClone = new ZipObject(file.name, file._data, extend(file.options));
+            relativePath = filename.slice(this.root.length, filename.length);
+            if (filename.slice(0, this.root.length) === this.root && // the file is in the current root
+            search(relativePath, fileClone)) { // and the file matches the function
+                result.push(fileClone);
+            }
+        }
+        return result;
+    },
+
+    /**
+     * Add a file to the zip file, or search a file.
+     * @param   {string|RegExp} name The name of the file to add (if data is defined),
+     * the name of the file to find (if no data) or a regex to match files.
+     * @param   {String|ArrayBuffer|Uint8Array|Buffer} data  The file data, either raw or base64 encoded
+     * @param   {Object} o     File options
+     * @return  {JSZip|Object|Array} this JSZip object (when adding a file),
+     * a file (when searching by string) or an array of files (when searching by regex).
+     */
+    file: function(name, data, o) {
+        if (arguments.length === 1) {
+            if (utils.isRegExp(name)) {
+                var regexp = name;
+                return this.filter(function(relativePath, file) {
+                    return !file.dir && regexp.test(relativePath);
+                });
+            }
+            else { // text
+                return this.filter(function(relativePath, file) {
+                    return !file.dir && relativePath === name;
+                })[0] || null;
+            }
+        }
+        else { // more than one argument : we have data !
+            name = this.root + name;
+            fileAdd.call(this, name, data, o);
+        }
+        return this;
+    },
+
+    /**
+     * Add a directory to the zip file, or search.
+     * @param   {String|RegExp} arg The name of the directory to add, or a regex to search folders.
+     * @return  {JSZip} an object with the new directory as the root, or an array containing matching folders.
+     */
+    folder: function(arg) {
+        if (!arg) {
+            return this;
+        }
+
+        if (utils.isRegExp(arg)) {
+            return this.filter(function(relativePath, file) {
+                return file.dir && arg.test(relativePath);
+            });
+        }
+
+        // else, name is a new folder
+        var name = this.root + arg;
+        var newFolder = folderAdd.call(this, name);
+
+        // Allow chaining by returning a new object with this folder as the root
+        var ret = this.clone();
+        ret.root = newFolder.name;
+        return ret;
+    },
+
+    /**
+     * Delete a file, or a directory and all sub-files, from the zip
+     * @param {string} name the name of the file to delete
+     * @return {JSZip} this JSZip object
+     */
+    remove: function(name) {
+        name = this.root + name;
+        var file = this.files[name];
+        if (!file) {
+            // Look for any folders
+            if (name.slice(-1) != "/") {
+                name += "/";
+            }
+            file = this.files[name];
+        }
+
+        if (file && !file.dir) {
+            // file
+            delete this.files[name];
+        } else {
+            // maybe a folder, delete recursively
+            var kids = this.filter(function(relativePath, file) {
+                return file.name.slice(0, name.length) === name;
+            });
+            for (var i = 0; i < kids.length; i++) {
+                delete this.files[kids[i].name];
+            }
+        }
+
+        return this;
+    },
+
+    /**
+     * Generate the complete zip file
+     * @param {Object} options the options to generate the zip file :
+     * - base64, (deprecated, use type instead) true to generate base64.
+     * - compression, "STORE" by default.
+     * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
+     * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file
+     */
+    generate: function(options) {
+        options = extend(options || {}, {
+            base64: true,
+            compression: "STORE",
+            compressionOptions : null,
+            type: "base64",
+            platform: "DOS",
+            comment: null,
+            mimeType: 'application/zip'
+        });
+
+        utils.checkSupport(options.type);
+
+        // accept nodejs `process.platform`
+        if(
+          options.platform === 'darwin' ||
+          options.platform === 'freebsd' ||
+          options.platform === 'linux' ||
+          options.platform === 'sunos'
+        ) {
+          options.platform = "UNIX";
+        }
+        if (options.platform === 'win32') {
+          options.platform = "DOS";
+        }
+
+        var zipData = [],
+            localDirLength = 0,
+            centralDirLength = 0,
+            writer, i,
+            utfEncodedComment = utils.transformTo("string", this.utf8encode(options.comment || this.comment || ""));
+
+        // first, generate all the zip parts.
+        for (var name in this.files) {
+            if (!this.files.hasOwnProperty(name)) {
+                continue;
+            }
+            var file = this.files[name];
+
+            var compressionName = file.options.compression || options.compression.toUpperCase();
+            var compression = compressions[compressionName];
+            if (!compression) {
+                throw new Error(compressionName + " is not a valid compression method !");
+            }
+            var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};
+
+            var compressedObject = generateCompressedObjectFrom.call(this, file, compression, compressionOptions);
+
+            var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength, options.platform);
+            localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize;
+            centralDirLength += zipPart.dirRecord.length;
+            zipData.push(zipPart);
+        }
+
+        var dirEnd = "";
+
+        // end of central dir signature
+        dirEnd = signature.CENTRAL_DIRECTORY_END +
+        // number of this disk
+        "\x00\x00" +
+        // number of the disk with the start of the central directory
+        "\x00\x00" +
+        // total number of entries in the central directory on this disk
+        decToHex(zipData.length, 2) +
+        // total number of entries in the central directory
+        decToHex(zipData.length, 2) +
+        // size of the central directory   4 bytes
+        decToHex(centralDirLength, 4) +
+        // offset of start of central directory with respect to the starting disk number
+        decToHex(localDirLength, 4) +
+        // .ZIP file comment length
+        decToHex(utfEncodedComment.length, 2) +
+        // .ZIP file comment
+        utfEncodedComment;
+
+
+        // we have all the parts (and the total length)
+        // time to create a writer !
+        var typeName = options.type.toLowerCase();
+        if(typeName==="uint8array"||typeName==="arraybuffer"||typeName==="blob"||typeName==="nodebuffer") {
+            writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);
+        }else{
+            writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);
+        }
+
+        for (i = 0; i < zipData.length; i++) {
+            writer.append(zipData[i].fileRecord);
+            writer.append(zipData[i].compressedObject.compressedContent);
+        }
+        for (i = 0; i < zipData.length; i++) {
+            writer.append(zipData[i].dirRecord);
+        }
+
+        writer.append(dirEnd);
+
+        var zip = writer.finalize();
+
+
+
+        switch(options.type.toLowerCase()) {
+            // case "zip is an Uint8Array"
+            case "uint8array" :
+            case "arraybuffer" :
+            case "nodebuffer" :
+               return utils.transformTo(options.type.toLowerCase(), zip);
+            case "blob" :
+               return utils.arrayBuffer2Blob(utils.transformTo("arraybuffer", zip), options.mimeType);
+            // case "zip is a string"
+            case "base64" :
+               return (options.base64) ? base64.encode(zip) : zip;
+            default : // case "string" :
+               return zip;
+         }
+
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    crc32: function (input, crc) {
+        return crc32(input, crc);
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    utf8encode: function (string) {
+        return utils.transformTo("string", utf8.utf8encode(string));
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    utf8decode: function (input) {
+        return utf8.utf8decode(input);
+    }
+};
+module.exports = out;
+
+},{"./base64":1,"./compressedObject":2,"./compressions":3,"./crc32":4,"./defaults":6,"./nodeBuffer":11,"./signature":14,"./stringWriter":16,"./support":17,"./uint8ArrayWriter":19,"./utf8":20,"./utils":21}],14:[function(_dereq_,module,exports){
+'use strict';
+exports.LOCAL_FILE_HEADER = "PK\x03\x04";
+exports.CENTRAL_FILE_HEADER = "PK\x01\x02";
+exports.CENTRAL_DIRECTORY_END = "PK\x05\x06";
+exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x06\x07";
+exports.ZIP64_CENTRAL_DIRECTORY_END = "PK\x06\x06";
+exports.DATA_DESCRIPTOR = "PK\x07\x08";
+
+},{}],15:[function(_dereq_,module,exports){
+'use strict';
+var DataReader = _dereq_('./dataReader');
+var utils = _dereq_('./utils');
+
+function StringReader(data, optimizedBinaryString) {
+    this.data = data;
+    if (!optimizedBinaryString) {
+        this.data = utils.string2binary(this.data);
+    }
+    this.length = this.data.length;
+    this.index = 0;
+}
+StringReader.prototype = new DataReader();
+/**
+ * @see DataReader.byteAt
+ */
+StringReader.prototype.byteAt = function(i) {
+    return this.data.charCodeAt(i);
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+StringReader.prototype.lastIndexOfSignature = function(sig) {
+    return this.data.lastIndexOf(sig);
+};
+/**
+ * @see DataReader.readData
+ */
+StringReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    // this will work because the constructor applied the "& 0xff" mask.
+    var result = this.data.slice(this.index, this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = StringReader;
+
+},{"./dataReader":5,"./utils":21}],16:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+/**
+ * An object to write any content to a string.
+ * @constructor
+ */
+var StringWriter = function() {
+    this.data = [];
+};
+StringWriter.prototype = {
+    /**
+     * Append any content to the current string.
+     * @param {Object} input the content to add.
+     */
+    append: function(input) {
+        input = utils.transformTo("string", input);
+        this.data.push(input);
+    },
+    /**
+     * Finalize the construction an return the result.
+     * @return {string} the generated string.
+     */
+    finalize: function() {
+        return this.data.join("");
+    }
+};
+
+module.exports = StringWriter;
+
+},{"./utils":21}],17:[function(_dereq_,module,exports){
+(function (Buffer){
+'use strict';
+exports.base64 = true;
+exports.array = true;
+exports.string = true;
+exports.arraybuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
+// contains true if JSZip can read/generate nodejs Buffer, false otherwise.
+// Browserify will provide a Buffer implementation for browsers, which is
+// an augmented Uint8Array (i.e., can be used as either Buffer or U8).
+exports.nodebuffer = typeof Buffer !== "undefined";
+// contains true if JSZip can read/generate Uint8Array, false otherwise.
+exports.uint8array = typeof Uint8Array !== "undefined";
+
+if (typeof ArrayBuffer === "undefined") {
+    exports.blob = false;
+}
+else {
+    var buffer = new ArrayBuffer(0);
+    try {
+        exports.blob = new Blob([buffer], {
+            type: "application/zip"
+        }).size === 0;
+    }
+    catch (e) {
+        try {
+            var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
+            var builder = new Builder();
+            builder.append(buffer);
+            exports.blob = builder.getBlob('application/zip').size === 0;
+        }
+        catch (e) {
+            exports.blob = false;
+        }
+    }
+}
+
+}).call(this,(typeof Buffer !== "undefined" ? Buffer : undefined))
+},{}],18:[function(_dereq_,module,exports){
+'use strict';
+var DataReader = _dereq_('./dataReader');
+
+function Uint8ArrayReader(data) {
+    if (data) {
+        this.data = data;
+        this.length = this.data.length;
+        this.index = 0;
+    }
+}
+Uint8ArrayReader.prototype = new DataReader();
+/**
+ * @see DataReader.byteAt
+ */
+Uint8ArrayReader.prototype.byteAt = function(i) {
+    return this.data[i];
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+Uint8ArrayReader.prototype.lastIndexOfSignature = function(sig) {
+    var sig0 = sig.charCodeAt(0),
+        sig1 = sig.charCodeAt(1),
+        sig2 = sig.charCodeAt(2),
+        sig3 = sig.charCodeAt(3);
+    for (var i = this.length - 4; i >= 0; --i) {
+        if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {
+            return i;
+        }
+    }
+
+    return -1;
+};
+/**
+ * @see DataReader.readData
+ */
+Uint8ArrayReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    if(size === 0) {
+        // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].
+        return new Uint8Array(0);
+    }
+    var result = this.data.subarray(this.index, this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = Uint8ArrayReader;
+
+},{"./dataReader":5}],19:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+/**
+ * An object to write any content to an Uint8Array.
+ * @constructor
+ * @param {number} length The length of the array.
+ */
+var Uint8ArrayWriter = function(length) {
+    this.data = new Uint8Array(length);
+    this.index = 0;
+};
+Uint8ArrayWriter.prototype = {
+    /**
+     * Append any content to the current array.
+     * @param {Object} input the content to add.
+     */
+    append: function(input) {
+        if (input.length !== 0) {
+            // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
+            input = utils.transformTo("uint8array", input);
+            this.data.set(input, this.index);
+            this.index += input.length;
+        }
+    },
+    /**
+     * Finalize the construction an return the result.
+     * @return {Uint8Array} the generated array.
+     */
+    finalize: function() {
+        return this.data;
+    }
+};
+
+module.exports = Uint8ArrayWriter;
+
+},{"./utils":21}],20:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+var support = _dereq_('./support');
+var nodeBuffer = _dereq_('./nodeBuffer');
+
+/**
+ * The following functions come from pako, from pako/lib/utils/strings
+ * released under the MIT license, see pako https://github.com/nodeca/pako/
+ */
+
+// Table with utf8 lengths (calculated by first byte of sequence)
+// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
+// because max possible codepoint is 0x10ffff
+var _utf8len = new Array(256);
+for (var i=0; i<256; i++) {
+  _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
+}
+_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
+
+// convert string to array (typed, when possible)
+var string2buf = function (str) {
+    var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+
+    // count binary size
+    for (m_pos = 0; m_pos < str_len; m_pos++) {
+        c = str.charCodeAt(m_pos);
+        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+            c2 = str.charCodeAt(m_pos+1);
+            if ((c2 & 0xfc00) === 0xdc00) {
+                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+                m_pos++;
+            }
+        }
+        buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
+    }
+
+    // allocate buffer
+    if (support.uint8array) {
+        buf = new Uint8Array(buf_len);
+    } else {
+        buf = new Array(buf_len);
+    }
+
+    // convert
+    for (i=0, m_pos = 0; i < buf_len; m_pos++) {
+        c = str.charCodeAt(m_pos);
+        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+            c2 = str.charCodeAt(m_pos+1);
+            if ((c2 & 0xfc00) === 0xdc00) {
+                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+                m_pos++;
+            }
+        }
+        if (c < 0x80) {
+            /* one byte */
+            buf[i++] = c;
+        } else if (c < 0x800) {
+            /* two bytes */
+            buf[i++] = 0xC0 | (c >>> 6);
+            buf[i++] = 0x80 | (c & 0x3f);
+        } else if (c < 0x10000) {
+            /* three bytes */
+            buf[i++] = 0xE0 | (c >>> 12);
+            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+            buf[i++] = 0x80 | (c & 0x3f);
+        } else {
+            /* four bytes */
+            buf[i++] = 0xf0 | (c >>> 18);
+            buf[i++] = 0x80 | (c >>> 12 & 0x3f);
+            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+            buf[i++] = 0x80 | (c & 0x3f);
+        }
+    }
+
+    return buf;
+};
+
+// Calculate max possible position in utf8 buffer,
+// that will not break sequence. If that's not possible
+// - (very small limits) return max size as is.
+//
+// buf[] - utf8 bytes array
+// max   - length limit (mandatory);
+var utf8border = function(buf, max) {
+    var pos;
+
+    max = max || buf.length;
+    if (max > buf.length) { max = buf.length; }
+
+    // go back from last position, until start of sequence found
+    pos = max-1;
+    while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
+
+    // Fuckup - very small and broken sequence,
+    // return max, because we should return something anyway.
+    if (pos < 0) { return max; }
+
+    // If we came to start of buffer - that means vuffer is too small,
+    // return max too.
+    if (pos === 0) { return max; }
+
+    return (pos + _utf8len[buf[pos]] > max) ? pos : max;
+};
+
+// convert array to string
+var buf2string = function (buf) {
+    var str, i, out, c, c_len;
+    var len = buf.length;
+
+    // Reserve max possible length (2 words per char)
+    // NB: by unknown reasons, Array is significantly faster for
+    //     String.fromCharCode.apply than Uint16Array.
+    var utf16buf = new Array(len*2);
+
+    for (out=0, i=0; i<len;) {
+        c = buf[i++];
+        // quick process ascii
+        if (c < 0x80) { utf16buf[out++] = c; continue; }
+
+        c_len = _utf8len[c];
+        // skip 5 & 6 byte codes
+        if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
+
+        // apply mask on first byte
+        c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+        // join the rest
+        while (c_len > 1 && i < len) {
+            c = (c << 6) | (buf[i++] & 0x3f);
+            c_len--;
+        }
+
+        // terminated by end of string?
+        if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
+
+        if (c < 0x10000) {
+            utf16buf[out++] = c;
+        } else {
+            c -= 0x10000;
+            utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
+            utf16buf[out++] = 0xdc00 | (c & 0x3ff);
+        }
+    }
+
+    // shrinkBuf(utf16buf, out)
+    if (utf16buf.length !== out) {
+        if(utf16buf.subarray) {
+            utf16buf = utf16buf.subarray(0, out);
+        } else {
+            utf16buf.length = out;
+        }
+    }
+
+    // return String.fromCharCode.apply(null, utf16buf);
+    return utils.applyFromCharCode(utf16buf);
+};
+
+
+// That's all for the pako functions.
+
+
+/**
+ * Transform a javascript string into an array (typed if possible) of bytes,
+ * UTF-8 encoded.
+ * @param {String} str the string to encode
+ * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.
+ */
+exports.utf8encode = function utf8encode(str) {
+    if (support.nodebuffer) {
+        return nodeBuffer(str, "utf-8");
+    }
+
+    return string2buf(str);
+};
+
+
+/**
+ * Transform a bytes array (or a representation) representing an UTF-8 encoded
+ * string into a javascript string.
+ * @param {Array|Uint8Array|Buffer} buf the data de decode
+ * @return {String} the decoded string.
+ */
+exports.utf8decode = function utf8decode(buf) {
+    if (support.nodebuffer) {
+        return utils.transformTo("nodebuffer", buf).toString("utf-8");
+    }
+
+    buf = utils.transformTo(support.uint8array ? "uint8array" : "array", buf);
+
+    // return buf2string(buf);
+    // Chrome prefers to work with "small" chunks of data
+    // for the method buf2string.
+    // Firefox and Chrome has their own shortcut, IE doesn't seem to really care.
+    var result = [], k = 0, len = buf.length, chunk = 65536;
+    while (k < len) {
+        var nextBoundary = utf8border(buf, Math.min(k + chunk, len));
+        if (support.uint8array) {
+            result.push(buf2string(buf.subarray(k, nextBoundary)));
+        } else {
+            result.push(buf2string(buf.slice(k, nextBoundary)));
+        }
+        k = nextBoundary;
+    }
+    return result.join("");
+
+};
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(_dereq_,module,exports){
+'use strict';
+var support = _dereq_('./support');
+var compressions = _dereq_('./compressions');
+var nodeBuffer = _dereq_('./nodeBuffer');
+/**
+ * Convert a string to a "binary string" : a string containing only char codes between 0 and 255.
+ * @param {string} str the string to transform.
+ * @return {String} the binary string.
+ */
+exports.string2binary = function(str) {
+    var result = "";
+    for (var i = 0; i < str.length; i++) {
+        result += String.fromCharCode(str.charCodeAt(i) & 0xff);
+    }
+    return result;
+};
+exports.arrayBuffer2Blob = function(buffer, mimeType) {
+    exports.checkSupport("blob");
+	mimeType = mimeType || 'application/zip';
+
+    try {
+        // Blob constructor
+        return new Blob([buffer], {
+            type: mimeType
+        });
+    }
+    catch (e) {
+
+        try {
+            // deprecated, browser only, old way
+            var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
+            var builder = new Builder();
+            builder.append(buffer);
+            return builder.getBlob(mimeType);
+        }
+        catch (e) {
+
+            // well, fuck ?!
+            throw new Error("Bug : can't construct the Blob.");
+        }
+    }
+
+
+};
+/**
+ * The identity function.
+ * @param {Object} input the input.
+ * @return {Object} the same input.
+ */
+function identity(input) {
+    return input;
+}
+
+/**
+ * Fill in an array with a string.
+ * @param {String} str the string to use.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.
+ */
+function stringToArrayLike(str, array) {
+    for (var i = 0; i < str.length; ++i) {
+        array[i] = str.charCodeAt(i) & 0xFF;
+    }
+    return array;
+}
+
+/**
+ * Transform an array-like object to a string.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
+ * @return {String} the result.
+ */
+function arrayLikeToString(array) {
+    // Performances notes :
+    // --------------------
+    // String.fromCharCode.apply(null, array) is the fastest, see
+    // see http://jsperf.com/converting-a-uint8array-to-a-string/2
+    // but the stack is limited (and we can get huge arrays !).
+    //
+    // result += String.fromCharCode(array[i]); generate too many strings !
+    //
+    // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2
+    var chunk = 65536;
+    var result = [],
+        len = array.length,
+        type = exports.getTypeOf(array),
+        k = 0,
+        canUseApply = true;
+      try {
+         switch(type) {
+            case "uint8array":
+               String.fromCharCode.apply(null, new Uint8Array(0));
+               break;
+            case "nodebuffer":
+               String.fromCharCode.apply(null, nodeBuffer(0));
+               break;
+         }
+      } catch(e) {
+         canUseApply = false;
+      }
+
+      // no apply : slow and painful algorithm
+      // default browser on android 4.*
+      if (!canUseApply) {
+         var resultStr = "";
+         for(var i = 0; i < array.length;i++) {
+            resultStr += String.fromCharCode(array[i]);
+         }
+    return resultStr;
+    }
+    while (k < len && chunk > 1) {
+        try {
+            if (type === "array" || type === "nodebuffer") {
+                result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));
+            }
+            else {
+                result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));
+            }
+            k += chunk;
+        }
+        catch (e) {
+            chunk = Math.floor(chunk / 2);
+        }
+    }
+    return result.join("");
+}
+
+exports.applyFromCharCode = arrayLikeToString;
+
+
+/**
+ * Copy the data from an array-like to an other array-like.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.
+ */
+function arrayLikeToArrayLike(arrayFrom, arrayTo) {
+    for (var i = 0; i < arrayFrom.length; i++) {
+        arrayTo[i] = arrayFrom[i];
+    }
+    return arrayTo;
+}
+
+// a matrix containing functions to transform everything into everything.
+var transform = {};
+
+// string to ?
+transform["string"] = {
+    "string": identity,
+    "array": function(input) {
+        return stringToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return transform["string"]["uint8array"](input).buffer;
+    },
+    "uint8array": function(input) {
+        return stringToArrayLike(input, new Uint8Array(input.length));
+    },
+    "nodebuffer": function(input) {
+        return stringToArrayLike(input, nodeBuffer(input.length));
+    }
+};
+
+// array to ?
+transform["array"] = {
+    "string": arrayLikeToString,
+    "array": identity,
+    "arraybuffer": function(input) {
+        return (new Uint8Array(input)).buffer;
+    },
+    "uint8array": function(input) {
+        return new Uint8Array(input);
+    },
+    "nodebuffer": function(input) {
+        return nodeBuffer(input);
+    }
+};
+
+// arraybuffer to ?
+transform["arraybuffer"] = {
+    "string": function(input) {
+        return arrayLikeToString(new Uint8Array(input));
+    },
+    "array": function(input) {
+        return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
+    },
+    "arraybuffer": identity,
+    "uint8array": function(input) {
+        return new Uint8Array(input);
+    },
+    "nodebuffer": function(input) {
+        return nodeBuffer(new Uint8Array(input));
+    }
+};
+
+// uint8array to ?
+transform["uint8array"] = {
+    "string": arrayLikeToString,
+    "array": function(input) {
+        return arrayLikeToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return input.buffer;
+    },
+    "uint8array": identity,
+    "nodebuffer": function(input) {
+        return nodeBuffer(input);
+    }
+};
+
+// nodebuffer to ?
+transform["nodebuffer"] = {
+    "string": arrayLikeToString,
+    "array": function(input) {
+        return arrayLikeToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return transform["nodebuffer"]["uint8array"](input).buffer;
+    },
+    "uint8array": function(input) {
+        return arrayLikeToArrayLike(input, new Uint8Array(input.length));
+    },
+    "nodebuffer": identity
+};
+
+/**
+ * Transform an input into any type.
+ * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.
+ * If no output type is specified, the unmodified input will be returned.
+ * @param {String} outputType the output type.
+ * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.
+ * @throws {Error} an Error if the browser doesn't support the requested output type.
+ */
+exports.transformTo = function(outputType, input) {
+    if (!input) {
+        // undefined, null, etc
+        // an empty string won't harm.
+        input = "";
+    }
+    if (!outputType) {
+        return input;
+    }
+    exports.checkSupport(outputType);
+    var inputType = exports.getTypeOf(input);
+    var result = transform[inputType][outputType](input);
+    return result;
+};
+
+/**
+ * Return the type of the input.
+ * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.
+ * @param {Object} input the input to identify.
+ * @return {String} the (lowercase) type of the input.
+ */
+exports.getTypeOf = function(input) {
+    if (typeof input === "string") {
+        return "string";
+    }
+    if (Object.prototype.toString.call(input) === "[object Array]") {
+        return "array";
+    }
+    if (support.nodebuffer && nodeBuffer.test(input)) {
+        return "nodebuffer";
+    }
+    if (support.uint8array && input instanceof Uint8Array) {
+        return "uint8array";
+    }
+    if (support.arraybuffer && input instanceof ArrayBuffer) {
+        return "arraybuffer";
+    }
+};
+
+/**
+ * Throw an exception if the type is not supported.
+ * @param {String} type the type to check.
+ * @throws {Error} an Error if the browser doesn't support the requested type.
+ */
+exports.checkSupport = function(type) {
+    var supported = support[type.toLowerCase()];
+    if (!supported) {
+        throw new Error(type + " is not supported by this browser");
+    }
+};
+exports.MAX_VALUE_16BITS = 65535;
+exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1
+
+/**
+ * Prettify a string read as binary.
+ * @param {string} str the string to prettify.
+ * @return {string} a pretty string.
+ */
+exports.pretty = function(str) {
+    var res = '',
+        code, i;
+    for (i = 0; i < (str || "").length; i++) {
+        code = str.charCodeAt(i);
+        res += '\\x' + (code < 16 ? "0" : "") + code.toString(16).toUpperCase();
+    }
+    return res;
+};
+
+/**
+ * Find a compression registered in JSZip.
+ * @param {string} compressionMethod the method magic to find.
+ * @return {Object|null} the JSZip compression object, null if none found.
+ */
+exports.findCompression = function(compressionMethod) {
+    for (var method in compressions) {
+        if (!compressions.hasOwnProperty(method)) {
+            continue;
+        }
+        if (compressions[method].magic === compressionMethod) {
+            return compressions[method];
+        }
+    }
+    return null;
+};
+/**
+* Cross-window, cross-Node-context regular expression detection
+* @param  {Object}  object Anything
+* @return {Boolean}        true if the object is a regular expression,
+* false otherwise
+*/
+exports.isRegExp = function (object) {
+    return Object.prototype.toString.call(object) === "[object RegExp]";
+};
+
+
+},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(_dereq_,module,exports){
+'use strict';
+var StringReader = _dereq_('./stringReader');
+var NodeBufferReader = _dereq_('./nodeBufferReader');
+var Uint8ArrayReader = _dereq_('./uint8ArrayReader');
+var utils = _dereq_('./utils');
+var sig = _dereq_('./signature');
+var ZipEntry = _dereq_('./zipEntry');
+var support = _dereq_('./support');
+var jszipProto = _dereq_('./object');
+//  class ZipEntries {{{
+/**
+ * All the entries in the zip file.
+ * @constructor
+ * @param {String|ArrayBuffer|Uint8Array} data the binary stream to load.
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntries(data, loadOptions) {
+    this.files = [];
+    this.loadOptions = loadOptions;
+    if (data) {
+        this.load(data);
+    }
+}
+ZipEntries.prototype = {
+    /**
+     * Check that the reader is on the speficied signature.
+     * @param {string} expectedSignature the expected signature.
+     * @throws {Error} if it is an other signature.
+     */
+    checkSignature: function(expectedSignature) {
+        var signature = this.reader.readString(4);
+        if (signature !== expectedSignature) {
+            throw new Error("Corrupted zip or bug : unexpected signature " + "(" + utils.pretty(signature) + ", expected " + utils.pretty(expectedSignature) + ")");
+        }
+    },
+    /**
+     * Read the end of the central directory.
+     */
+    readBlockEndOfCentral: function() {
+        this.diskNumber = this.reader.readInt(2);
+        this.diskWithCentralDirStart = this.reader.readInt(2);
+        this.centralDirRecordsOnThisDisk = this.reader.readInt(2);
+        this.centralDirRecords = this.reader.readInt(2);
+        this.centralDirSize = this.reader.readInt(4);
+        this.centralDirOffset = this.reader.readInt(4);
+
+        this.zipCommentLength = this.reader.readInt(2);
+        // warning : the encoding depends of the system locale
+        // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.
+        // On a windows machine, this field is encoded with the localized windows code page.
+        this.zipComment = this.reader.readString(this.zipCommentLength);
+        // To get consistent behavior with the generation part, we will assume that
+        // this is utf8 encoded.
+        this.zipComment = jszipProto.utf8decode(this.zipComment);
+    },
+    /**
+     * Read the end of the Zip 64 central directory.
+     * Not merged with the method readEndOfCentral :
+     * The end of central can coexist with its Zip64 brother,
+     * I don't want to read the wrong number of bytes !
+     */
+    readBlockZip64EndOfCentral: function() {
+        this.zip64EndOfCentralSize = this.reader.readInt(8);
+        this.versionMadeBy = this.reader.readString(2);
+        this.versionNeeded = this.reader.readInt(2);
+        this.diskNumber = this.reader.readInt(4);
+        this.diskWithCentralDirStart = this.reader.readInt(4);
+        this.centralDirRecordsOnThisDisk = this.reader.readInt(8);
+        this.centralDirRecords = this.reader.readInt(8);
+        this.centralDirSize = this.reader.readInt(8);
+        this.centralDirOffset = this.reader.readInt(8);
+
+        this.zip64ExtensibleData = {};
+        var extraDataSize = this.zip64EndOfCentralSize - 44,
+            index = 0,
+            extraFieldId,
+            extraFieldLength,
+            extraFieldValue;
+        while (index < extraDataSize) {
+            extraFieldId = this.reader.readInt(2);
+            extraFieldLength = this.reader.readInt(4);
+            extraFieldValue = this.reader.readString(extraFieldLength);
+            this.zip64ExtensibleData[extraFieldId] = {
+                id: extraFieldId,
+                length: extraFieldLength,
+                value: extraFieldValue
+            };
+        }
+    },
+    /**
+     * Read the end of the Zip 64 central directory locator.
+     */
+    readBlockZip64EndOfCentralLocator: function() {
+        this.diskWithZip64CentralDirStart = this.reader.readInt(4);
+        this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);
+        this.disksCount = this.reader.readInt(4);
+        if (this.disksCount > 1) {
+            throw new Error("Multi-volumes zip are not supported");
+        }
+    },
+    /**
+     * Read the local files, based on the offset read in the central part.
+     */
+    readLocalFiles: function() {
+        var i, file;
+        for (i = 0; i < this.files.length; i++) {
+            file = this.files[i];
+            this.reader.setIndex(file.localHeaderOffset);
+            this.checkSignature(sig.LOCAL_FILE_HEADER);
+            file.readLocalPart(this.reader);
+            file.handleUTF8();
+            file.processAttributes();
+        }
+    },
+    /**
+     * Read the central directory.
+     */
+    readCentralDir: function() {
+        var file;
+
+        this.reader.setIndex(this.centralDirOffset);
+        while (this.reader.readString(4) === sig.CENTRAL_FILE_HEADER) {
+            file = new ZipEntry({
+                zip64: this.zip64
+            }, this.loadOptions);
+            file.readCentralPart(this.reader);
+            this.files.push(file);
+        }
+    },
+    /**
+     * Read the end of central directory.
+     */
+    readEndOfCentral: function() {
+        var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);
+        if (offset === -1) {
+            // Check if the content is a truncated zip or complete garbage.
+            // A "LOCAL_FILE_HEADER" is not required at the beginning (auto
+            // extractible zip for example) but it can give a good hint.
+            // If an ajax request was used without responseType, we will also
+            // get unreadable data.
+            var isGarbage = true;
+            try {
+                this.reader.setIndex(0);
+                this.checkSignature(sig.LOCAL_FILE_HEADER);
+                isGarbage = false;
+            } catch (e) {}
+
+            if (isGarbage) {
+                throw new Error("Can't find end of central directory : is this a zip file ? " +
+                                "If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html");
+            } else {
+                throw new Error("Corrupted zip : can't find end of central directory");
+            }
+        }
+        this.reader.setIndex(offset);
+        this.checkSignature(sig.CENTRAL_DIRECTORY_END);
+        this.readBlockEndOfCentral();
+
+
+        /* extract from the zip spec :
+            4)  If one of the fields in the end of central directory
+                record is too small to hold required data, the field
+                should be set to -1 (0xFFFF or 0xFFFFFFFF) and the
+                ZIP64 format record should be created.
+            5)  The end of central directory record and the
+                Zip64 end of central directory locator record must
+                reside on the same disk when splitting or spanning
+                an archive.
+         */
+        if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {
+            this.zip64 = true;
+
+            /*
+            Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from
+            the zip file can fit into a 32bits integer. This cannot be solved : Javascript represents
+            all numbers as 64-bit double precision IEEE 754 floating point numbers.
+            So, we have 53bits for integers and bitwise operations treat everything as 32bits.
+            see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators
+            and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5
+            */
+
+            // should look for a zip64 EOCD locator
+            offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+            if (offset === -1) {
+                throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");
+            }
+            this.reader.setIndex(offset);
+            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+            this.readBlockZip64EndOfCentralLocator();
+
+            // now the zip64 EOCD record
+            this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);
+            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
+            this.readBlockZip64EndOfCentral();
+        }
+    },
+    prepareReader: function(data) {
+        var type = utils.getTypeOf(data);
+        if (type === "string" && !support.uint8array) {
+            this.reader = new StringReader(data, this.loadOptions.optimizedBinaryString);
+        }
+        else if (type === "nodebuffer") {
+            this.reader = new NodeBufferReader(data);
+        }
+        else {
+            this.reader = new Uint8ArrayReader(utils.transformTo("uint8array", data));
+        }
+    },
+    /**
+     * Read a zip file and create ZipEntries.
+     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.
+     */
+    load: function(data) {
+        this.prepareReader(data);
+        this.readEndOfCentral();
+        this.readCentralDir();
+        this.readLocalFiles();
+    }
+};
+// }}} end of ZipEntries
+module.exports = ZipEntries;
+
+},{"./nodeBufferReader":12,"./object":13,"./signature":14,"./stringReader":15,"./support":17,"./uint8ArrayReader":18,"./utils":21,"./zipEntry":23}],23:[function(_dereq_,module,exports){
+'use strict';
+var StringReader = _dereq_('./stringReader');
+var utils = _dereq_('./utils');
+var CompressedObject = _dereq_('./compressedObject');
+var jszipProto = _dereq_('./object');
+
+var MADE_BY_DOS = 0x00;
+var MADE_BY_UNIX = 0x03;
+
+// class ZipEntry {{{
+/**
+ * An entry in the zip file.
+ * @constructor
+ * @param {Object} options Options of the current file.
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntry(options, loadOptions) {
+    this.options = options;
+    this.loadOptions = loadOptions;
+}
+ZipEntry.prototype = {
+    /**
+     * say if the file is encrypted.
+     * @return {boolean} true if the file is encrypted, false otherwise.
+     */
+    isEncrypted: function() {
+        // bit 1 is set
+        return (this.bitFlag & 0x0001) === 0x0001;
+    },
+    /**
+     * say if the file has utf-8 filename/comment.
+     * @return {boolean} true if the filename/comment is in utf-8, false otherwise.
+     */
+    useUTF8: function() {
+        // bit 11 is set
+        return (this.bitFlag & 0x0800) === 0x0800;
+    },
+    /**
+     * Prepare the function used to generate the compressed content from this ZipFile.
+     * @param {DataReader} reader the reader to use.
+     * @param {number} from the offset from where we should read the data.
+     * @param {number} length the length of the data to read.
+     * @return {Function} the callback to get the compressed content (the type depends of the DataReader class).
+     */
+    prepareCompressedContent: function(reader, from, length) {
+        return function() {
+            var previousIndex = reader.index;
+            reader.setIndex(from);
+            var compressedFileData = reader.readData(length);
+            reader.setIndex(previousIndex);
+
+            return compressedFileData;
+        };
+    },
+    /**
+     * Prepare the function used to generate the uncompressed content from this ZipFile.
+     * @param {DataReader} reader the reader to use.
+     * @param {number} from the offset from where we should read the data.
+     * @param {number} length the length of the data to read.
+     * @param {JSZip.compression} compression the compression used on this file.
+     * @param {number} uncompressedSize the uncompressed size to expect.
+     * @return {Function} the callback to get the uncompressed content (the type depends of the DataReader class).
+     */
+    prepareContent: function(reader, from, length, compression, uncompressedSize) {
+        return function() {
+
+            var compressedFileData = utils.transformTo(compression.uncompressInputType, this.getCompressedContent());
+            var uncompressedFileData = compression.uncompress(compressedFileData);
+
+            if (uncompressedFileData.length !== uncompressedSize) {
+                throw new Error("Bug : uncompressed data size mismatch");
+            }
+
+            return uncompressedFileData;
+        };
+    },
+    /**
+     * Read the local part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readLocalPart: function(reader) {
+        var compression, localExtraFieldsLength;
+
+        // we already know everything from the central dir !
+        // If the central dir data are false, we are doomed.
+        // On the bright side, the local part is scary  : zip64, data descriptors, both, etc.
+        // The less data we get here, the more reliable this should be.
+        // Let's skip the whole header and dash to the data !
+        reader.skip(22);
+        // in some zip created on windows, the filename stored in the central dir contains \ instead of /.
+        // Strangely, the filename here is OK.
+        // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes
+        // or APPNOTE#4.4.17.1, "All slashes MUST be forward slashes '/'") but there are a lot of bad zip generators...
+        // Search "unzip mismatching "local" filename continuing with "central" filename version" on
+        // the internet.
+        //
+        // I think I see the logic here : the central directory is used to display
+        // content and the local directory is used to extract the files. Mixing / and \
+        // may be used to display \ to windows users and use / when extracting the files.
+        // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394
+        this.fileNameLength = reader.readInt(2);
+        localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir
+        this.fileName = reader.readString(this.fileNameLength);
+        reader.skip(localExtraFieldsLength);
+
+        if (this.compressedSize == -1 || this.uncompressedSize == -1) {
+            throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory " + "(compressedSize == -1 || uncompressedSize == -1)");
+        }
+
+        compression = utils.findCompression(this.compressionMethod);
+        if (compression === null) { // no compression found
+            throw new Error("Corrupted zip : compression " + utils.pretty(this.compressionMethod) + " unknown (inner file : " + this.fileName + ")");
+        }
+        this.decompressed = new CompressedObject();
+        this.decompressed.compressedSize = this.compressedSize;
+        this.decompressed.uncompressedSize = this.uncompressedSize;
+        this.decompressed.crc32 = this.crc32;
+        this.decompressed.compressionMethod = this.compressionMethod;
+        this.decompressed.getCompressedContent = this.prepareCompressedContent(reader, reader.index, this.compressedSize, compression);
+        this.decompressed.getContent = this.prepareContent(reader, reader.index, this.compressedSize, compression, this.uncompressedSize);
+
+        // we need to compute the crc32...
+        if (this.loadOptions.checkCRC32) {
+            this.decompressed = utils.transformTo("string", this.decompressed.getContent());
+            if (jszipProto.crc32(this.decompressed) !== this.crc32) {
+                throw new Error("Corrupted zip : CRC32 mismatch");
+            }
+        }
+    },
+
+    /**
+     * Read the central part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readCentralPart: function(reader) {
+        this.versionMadeBy = reader.readInt(2);
+        this.versionNeeded = reader.readInt(2);
+        this.bitFlag = reader.readInt(2);
+        this.compressionMethod = reader.readString(2);
+        this.date = reader.readDate();
+        this.crc32 = reader.readInt(4);
+        this.compressedSize = reader.readInt(4);
+        this.uncompressedSize = reader.readInt(4);
+        this.fileNameLength = reader.readInt(2);
+        this.extraFieldsLength = reader.readInt(2);
+        this.fileCommentLength = reader.readInt(2);
+        this.diskNumberStart = reader.readInt(2);
+        this.internalFileAttributes = reader.readInt(2);
+        this.externalFileAttributes = reader.readInt(4);
+        this.localHeaderOffset = reader.readInt(4);
+
+        if (this.isEncrypted()) {
+            throw new Error("Encrypted zip are not supported");
+        }
+
+        this.fileName = reader.readString(this.fileNameLength);
+        this.readExtraFields(reader);
+        this.parseZIP64ExtraField(reader);
+        this.fileComment = reader.readString(this.fileCommentLength);
+    },
+
+    /**
+     * Parse the external file attributes and get the unix/dos permissions.
+     */
+    processAttributes: function () {
+        this.unixPermissions = null;
+        this.dosPermissions = null;
+        var madeBy = this.versionMadeBy >> 8;
+
+        // Check if we have the DOS directory flag set.
+        // We look for it in the DOS and UNIX permissions
+        // but some unknown platform could set it as a compatibility flag.
+        this.dir = this.externalFileAttributes & 0x0010 ? true : false;
+
+        if(madeBy === MADE_BY_DOS) {
+            // first 6 bits (0 to 5)
+            this.dosPermissions = this.externalFileAttributes & 0x3F;
+        }
+
+        if(madeBy === MADE_BY_UNIX) {
+            this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;
+            // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);
+        }
+
+        // fail safe : if the name ends with a / it probably means a folder
+        if (!this.dir && this.fileName.slice(-1) === '/') {
+            this.dir = true;
+        }
+    },
+
+    /**
+     * Parse the ZIP64 extra field and merge the info in the current ZipEntry.
+     * @param {DataReader} reader the reader to use.
+     */
+    parseZIP64ExtraField: function(reader) {
+
+        if (!this.extraFields[0x0001]) {
+            return;
+        }
+
+        // should be something, preparing the extra reader
+        var extraReader = new StringReader(this.extraFields[0x0001].value);
+
+        // I really hope that these 64bits integer can fit in 32 bits integer, because js
+        // won't let us have more.
+        if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {
+            this.uncompressedSize = extraReader.readInt(8);
+        }
+        if (this.compressedSize === utils.MAX_VALUE_32BITS) {
+            this.compressedSize = extraReader.readInt(8);
+        }
+        if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {
+            this.localHeaderOffset = extraReader.readInt(8);
+        }
+        if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {
+            this.diskNumberStart = extraReader.readInt(4);
+        }
+    },
+    /**
+     * Read the central part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readExtraFields: function(reader) {
+        var start = reader.index,
+            extraFieldId,
+            extraFieldLength,
+            extraFieldValue;
+
+        this.extraFields = this.extraFields || {};
+
+        while (reader.index < start + this.extraFieldsLength) {
+            extraFieldId = reader.readInt(2);
+            extraFieldLength = reader.readInt(2);
+            extraFieldValue = reader.readString(extraFieldLength);
+
+            this.extraFields[extraFieldId] = {
+                id: extraFieldId,
+                length: extraFieldLength,
+                value: extraFieldValue
+            };
+        }
+    },
+    /**
+     * Apply an UTF8 transformation if needed.
+     */
+    handleUTF8: function() {
+        if (this.useUTF8()) {
+            this.fileName = jszipProto.utf8decode(this.fileName);
+            this.fileComment = jszipProto.utf8decode(this.fileComment);
+        } else {
+            var upath = this.findExtraFieldUnicodePath();
+            if (upath !== null) {
+                this.fileName = upath;
+            }
+            var ucomment = this.findExtraFieldUnicodeComment();
+            if (ucomment !== null) {
+                this.fileComment = ucomment;
+            }
+        }
+    },
+
+    /**
+     * Find the unicode path declared in the extra field, if any.
+     * @return {String} the unicode path, null otherwise.
+     */
+    findExtraFieldUnicodePath: function() {
+        var upathField = this.extraFields[0x7075];
+        if (upathField) {
+            var extraReader = new StringReader(upathField.value);
+
+            // wrong version
+            if (extraReader.readInt(1) !== 1) {
+                return null;
+            }
+
+            // the crc of the filename changed, this field is out of date.
+            if (jszipProto.crc32(this.fileName) !== extraReader.readInt(4)) {
+                return null;
+            }
+
+            return jszipProto.utf8decode(extraReader.readString(upathField.length - 5));
+        }
+        return null;
+    },
+
+    /**
+     * Find the unicode comment declared in the extra field, if any.
+     * @return {String} the unicode comment, null otherwise.
+     */
+    findExtraFieldUnicodeComment: function() {
+        var ucommentField = this.extraFields[0x6375];
+        if (ucommentField) {
+            var extraReader = new StringReader(ucommentField.value);
+
+            // wrong version
+            if (extraReader.readInt(1) !== 1) {
+                return null;
+            }
+
+            // the crc of the comment changed, this field is out of date.
+            if (jszipProto.crc32(this.fileComment) !== extraReader.readInt(4)) {
+                return null;
+            }
+
+            return jszipProto.utf8decode(extraReader.readString(ucommentField.length - 5));
+        }
+        return null;
+    }
+};
+module.exports = ZipEntry;
+
+},{"./compressedObject":2,"./object":13,"./stringReader":15,"./utils":21}],24:[function(_dereq_,module,exports){
+// Top level file is just a mixin of submodules & constants
+'use strict';
+
+var assign    = _dereq_('./lib/utils/common').assign;
+
+var deflate   = _dereq_('./lib/deflate');
+var inflate   = _dereq_('./lib/inflate');
+var constants = _dereq_('./lib/zlib/constants');
+
+var pako = {};
+
+assign(pako, deflate, inflate, constants);
+
+module.exports = pako;
+},{"./lib/deflate":25,"./lib/inflate":26,"./lib/utils/common":27,"./lib/zlib/constants":30}],25:[function(_dereq_,module,exports){
+'use strict';
+
+
+var zlib_deflate = _dereq_('./zlib/deflate.js');
+var utils = _dereq_('./utils/common');
+var strings = _dereq_('./utils/strings');
+var msg = _dereq_('./zlib/messages');
+var zstream = _dereq_('./zlib/zstream');
+
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+var Z_NO_FLUSH      = 0;
+var Z_FINISH        = 4;
+
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+
+var Z_DEFAULT_COMPRESSION = -1;
+
+var Z_DEFAULT_STRATEGY    = 0;
+
+var Z_DEFLATED  = 8;
+
+/* ===========================================================================*/
+
+
+/**
+ * class Deflate
+ *
+ * Generic JS-style wrapper for zlib calls. If you don't need
+ * streaming behaviour - use more simple functions: [[deflate]],
+ * [[deflateRaw]] and [[gzip]].
+ **/
+
+/* internal
+ * Deflate.chunks -> Array
+ *
+ * Chunks of output data, if [[Deflate#onData]] not overriden.
+ **/
+
+/**
+ * Deflate.result -> Uint8Array|Array
+ *
+ * Compressed result, generated by default [[Deflate#onData]]
+ * and [[Deflate#onEnd]] handlers. Filled after you push last chunk
+ * (call [[Deflate#push]] with `Z_FINISH` / `true` param).
+ **/
+
+/**
+ * Deflate.err -> Number
+ *
+ * Error code after deflate finished. 0 (Z_OK) on success.
+ * You will not need it in real life, because deflate errors
+ * are possible only on wrong options or bad `onData` / `onEnd`
+ * custom handlers.
+ **/
+
+/**
+ * Deflate.msg -> String
+ *
+ * Error message, if [[Deflate.err]] != 0
+ **/
+
+
+/**
+ * new Deflate(options)
+ * - options (Object): zlib deflate options.
+ *
+ * Creates new deflator instance with specified params. Throws exception
+ * on bad params. Supported options:
+ *
+ * - `level`
+ * - `windowBits`
+ * - `memLevel`
+ * - `strategy`
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Additional options, for internal needs:
+ *
+ * - `chunkSize` - size of generated data chunks (16K by default)
+ * - `raw` (Boolean) - do raw deflate
+ * - `gzip` (Boolean) - create gzip wrapper
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
+ *    (each char code [0..255])
+ * - `header` (Object) - custom header for gzip
+ *   - `text` (Boolean) - true if compressed data believed to be text
+ *   - `time` (Number) - modification time, unix timestamp
+ *   - `os` (Number) - operation system code
+ *   - `extra` (Array) - array of bytes with extra data (max 65536)
+ *   - `name` (String) - file name (binary string)
+ *   - `comment` (String) - comment (binary string)
+ *   - `hcrc` (Boolean) - true if header crc should be added
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+ *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+ *
+ * var deflate = new pako.Deflate({ level: 3});
+ *
+ * deflate.push(chunk1, false);
+ * deflate.push(chunk2, true);  // true -> last chunk
+ *
+ * if (deflate.err) { throw new Error(deflate.err); }
+ *
+ * console.log(deflate.result);
+ * ```
+ **/
+var Deflate = function(options) {
+
+  this.options = utils.assign({
+    level: Z_DEFAULT_COMPRESSION,
+    method: Z_DEFLATED,
+    chunkSize: 16384,
+    windowBits: 15,
+    memLevel: 8,
+    strategy: Z_DEFAULT_STRATEGY,
+    to: ''
+  }, options || {});
+
+  var opt = this.options;
+
+  if (opt.raw && (opt.windowBits > 0)) {
+    opt.windowBits = -opt.windowBits;
+  }
+
+  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {
+    opt.windowBits += 16;
+  }
+
+  this.err    = 0;      // error code, if happens (0 = Z_OK)
+  this.msg    = '';     // error message
+  this.ended  = false;  // used to avoid multiple onEnd() calls
+  this.chunks = [];     // chunks of compressed data
+
+  this.strm = new zstream();
+  this.strm.avail_out = 0;
+
+  var status = zlib_deflate.deflateInit2(
+    this.strm,
+    opt.level,
+    opt.method,
+    opt.windowBits,
+    opt.memLevel,
+    opt.strategy
+  );
+
+  if (status !== Z_OK) {
+    throw new Error(msg[status]);
+  }
+
+  if (opt.header) {
+    zlib_deflate.deflateSetHeader(this.strm, opt.header);
+  }
+};
+
+/**
+ * Deflate#push(data[, mode]) -> Boolean
+ * - data (Uint8Array|Array|String): input data. Strings will be converted to
+ *   utf8 byte sequence.
+ * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
+ *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
+ *
+ * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with
+ * new compressed chunks. Returns `true` on success. The last data block must have
+ * mode Z_FINISH (or `true`). That flush internal pending buffers and call
+ * [[Deflate#onEnd]].
+ *
+ * On fail call [[Deflate#onEnd]] with error code and return false.
+ *
+ * We strongly recommend to use `Uint8Array` on input for best speed (output
+ * array format is detected automatically). Also, don't skip last param and always
+ * use the same type in your code (boolean or number). That will improve JS speed.
+ *
+ * For regular `Array`-s make sure all elements are [0..255].
+ *
+ * ##### Example
+ *
+ * ```javascript
+ * push(chunk, false); // push one of data chunks
+ * ...
+ * push(chunk, true);  // push last chunk
+ * ```
+ **/
+Deflate.prototype.push = function(data, mode) {
+  var strm = this.strm;
+  var chunkSize = this.options.chunkSize;
+  var status, _mode;
+
+  if (this.ended) { return false; }
+
+  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);
+
+  // Convert data if needed
+  if (typeof data === 'string') {
+    // If we need to compress text, change encoding to utf8.
+    strm.input = strings.string2buf(data);
+  } else {
+    strm.input = data;
+  }
+
+  strm.next_in = 0;
+  strm.avail_in = strm.input.length;
+
+  do {
+    if (strm.avail_out === 0) {
+      strm.output = new utils.Buf8(chunkSize);
+      strm.next_out = 0;
+      strm.avail_out = chunkSize;
+    }
+    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */
+
+    if (status !== Z_STREAM_END && status !== Z_OK) {
+      this.onEnd(status);
+      this.ended = true;
+      return false;
+    }
+    if (strm.avail_out === 0 || (strm.avail_in === 0 && _mode === Z_FINISH)) {
+      if (this.options.to === 'string') {
+        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));
+      } else {
+        this.onData(utils.shrinkBuf(strm.output, strm.next_out));
+      }
+    }
+  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);
+
+  // Finalize on the last chunk.
+  if (_mode === Z_FINISH) {
+    status = zlib_deflate.deflateEnd(this.strm);
+    this.onEnd(status);
+    this.ended = true;
+    return status === Z_OK;
+  }
+
+  return true;
+};
+
+
+/**
+ * Deflate#onData(chunk) -> Void
+ * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
+ *   on js engine support. When string output requested, each chunk
+ *   will be string.
+ *
+ * By default, stores data blocks in `chunks[]` property and glue
+ * those in `onEnd`. Override this handler, if you need another behaviour.
+ **/
+Deflate.prototype.onData = function(chunk) {
+  this.chunks.push(chunk);
+};
+
+
+/**
+ * Deflate#onEnd(status) -> Void
+ * - status (Number): deflate status. 0 (Z_OK) on success,
+ *   other if not.
+ *
+ * Called once after you tell deflate that input stream complete
+ * or error happenned. By default - join collected chunks,
+ * free memory and fill `results` / `err` properties.
+ **/
+Deflate.prototype.onEnd = function(status) {
+  // On success - join
+  if (status === Z_OK) {
+    if (this.options.to === 'string') {
+      this.result = this.chunks.join('');
+    } else {
+      this.result = utils.flattenChunks(this.chunks);
+    }
+  }
+  this.chunks = [];
+  this.err = status;
+  this.msg = this.strm.msg;
+};
+
+
+/**
+ * deflate(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * Compress `data` with deflate alrorythm and `options`.
+ *
+ * Supported options are:
+ *
+ * - level
+ * - windowBits
+ * - memLevel
+ * - strategy
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Sugar (options):
+ *
+ * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
+ *   negative windowBits implicitly.
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
+ *    (each char code [0..255])
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);
+ *
+ * console.log(pako.deflate(data));
+ * ```
+ **/
+function deflate(input, options) {
+  var deflator = new Deflate(options);
+
+  deflator.push(input, true);
+
+  // That will never happens, if you don't cheat with options :)
+  if (deflator.err) { throw deflator.msg; }
+
+  return deflator.result;
+}
+
+
+/**
+ * deflateRaw(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * The same as [[deflate]], but creates raw data, without wrapper
+ * (header and adler32 crc).
+ **/
+function deflateRaw(input, options) {
+  options = options || {};
+  options.raw = true;
+  return deflate(input, options);
+}
+
+
+/**
+ * gzip(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * The same as [[deflate]], but create gzip wrapper instead of
+ * deflate one.
+ **/
+function gzip(input, options) {
+  options = options || {};
+  options.gzip = true;
+  return deflate(input, options);
+}
+
+
+exports.Deflate = Deflate;
+exports.deflate = deflate;
+exports.deflateRaw = deflateRaw;
+exports.gzip = gzip;
+},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(_dereq_,module,exports){
+'use strict';
+
+
+var zlib_inflate = _dereq_('./zlib/inflate.js');
+var utils = _dereq_('./utils/common');
+var strings = _dereq_('./utils/strings');
+var c = _dereq_('./zlib/constants');
+var msg = _dereq_('./zlib/messages');
+var zstream = _dereq_('./zlib/zstream');
+var gzheader = _dereq_('./zlib/gzheader');
+
+
+/**
+ * class Inflate
+ *
+ * Generic JS-style wrapper for zlib calls. If you don't need
+ * streaming behaviour - use more simple functions: [[inflate]]
+ * and [[inflateRaw]].
+ **/
+
+/* internal
+ * inflate.chunks -> Array
+ *
+ * Chunks of output data, if [[Inflate#onData]] not overriden.
+ **/
+
+/**
+ * Inflate.result -> Uint8Array|Array|String
+ *
+ * Uncompressed result, generated by default [[Inflate#onData]]
+ * and [[Inflate#onEnd]] handlers. Filled after you push last chunk
+ * (call [[Inflate#push]] with `Z_FINISH` / `true` param).
+ **/
+
+/**
+ * Inflate.err -> Number
+ *
+ * Error code after inflate finished. 0 (Z_OK) on success.
+ * Should be checked if broken data possible.
+ **/
+
+/**
+ * Inflate.msg -> String
+ *
+ * Error message, if [[Inflate.err]] != 0
+ **/
+
+
+/**
+ * new Inflate(options)
+ * - options (Object): zlib inflate options.
+ *
+ * Creates new inflator instance with specified params. Throws exception
+ * on bad params. Supported options:
+ *
+ * - `windowBits`
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Additional options, for internal needs:
+ *
+ * - `chunkSize` - size of generated data chunks (16K by default)
+ * - `raw` (Boolean) - do raw inflate
+ * - `to` (String) - if equal to 'string', then result will be converted
+ *   from utf8 to utf16 (javascript) string. When string output requested,
+ *   chunk length can differ from `chunkSize`, depending on content.
+ *
+ * By default, when no options set, autodetect deflate/gzip data format via
+ * wrapper header.
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+ *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+ *
+ * var inflate = new pako.Inflate({ level: 3});
+ *
+ * inflate.push(chunk1, false);
+ * inflate.push(chunk2, true);  // true -> last chunk
+ *
+ * if (inflate.err) { throw new Error(inflate.err); }
+ *
+ * console.log(inflate.result);
+ * ```
+ **/
+var Inflate = function(options) {
+
+  this.options = utils.assign({
+    chunkSize: 16384,
+    windowBits: 0,
+    to: ''
+  }, options || {});
+
+  var opt = this.options;
+
+  // Force window size for `raw` data, if not set directly,
+  // because we have no header for autodetect.
+  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {
+    opt.windowBits = -opt.windowBits;
+    if (opt.windowBits === 0) { opt.windowBits = -15; }
+  }
+
+  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate
+  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&
+      !(options && options.windowBits)) {
+    opt.windowBits += 32;
+  }
+
+  // Gzip header has no info about windows size, we can do autodetect only
+  // for deflate. So, if window size not set, force it to max when gzip possible
+  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {
+    // bit 3 (16) -> gzipped data
+    // bit 4 (32) -> autodetect gzip/deflate
+    if ((opt.windowBits & 15) === 0) {
+      opt.windowBits |= 15;
+    }
+  }
+
+  this.err    = 0;      // error code, if happens (0 = Z_OK)
+  this.msg    = '';     // error message
+  this.ended  = false;  // used to avoid multiple onEnd() calls
+  this.chunks = [];     // chunks of compressed data
+
+  this.strm   = new zstream();
+  this.strm.avail_out = 0;
+
+  var status  = zlib_inflate.inflateInit2(
+    this.strm,
+    opt.windowBits
+  );
+
+  if (status !== c.Z_OK) {
+    throw new Error(msg[status]);
+  }
+
+  this.header = new gzheader();
+
+  zlib_inflate.inflateGetHeader(this.strm, this.header);
+};
+
+/**
+ * Inflate#push(data[, mode]) -> Boolean
+ * - data (Uint8Array|Array|String): input data
+ * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
+ *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
+ *
+ * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with
+ * new output chunks. Returns `true` on success. The last data block must have
+ * mode Z_FINISH (or `true`). That flush internal pending buffers and call
+ * [[Inflate#onEnd]].
+ *
+ * On fail call [[Inflate#onEnd]] with error code and return false.
+ *
+ * We strongly recommend to use `Uint8Array` on input for best speed (output
+ * format is detected automatically). Also, don't skip last param and always
+ * use the same type in your code (boolean or number). That will improve JS speed.
+ *
+ * For regular `Array`-s make sure all elements are [0..255].
+ *
+ * ##### Example
+ *
+ * ```javascript
+ * push(chunk, false); // push one of data chunks
+ * ...
+ * push(chunk, true);  // push last chunk
+ * ```
+ **/
+Inflate.prototype.push = function(data, mode) {
+  var strm = this.strm;
+  var chunkSize = this.options.chunkSize;
+  var status, _mode;
+  var next_out_utf8, tail, utf8str;
+
+  if (this.ended) { return false; }
+  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);
+
+  // Convert data if needed
+  if (typeof data === 'string') {
+    // Only binary strings can be decompressed on practice
+    strm.input = strings.binstring2buf(data);
+  } else {
+    strm.input = data;
+  }
+
+  strm.next_in = 0;
+  strm.avail_in = strm.input.length;
+
+  do {
+    if (strm.avail_out === 0) {
+      strm.output = new utils.Buf8(chunkSize);
+      strm.next_out = 0;
+      strm.avail_out = chunkSize;
+    }
+
+    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */
+
+    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {
+      this.onEnd(status);
+      this.ended = true;
+      return false;
+    }
+
+    if (strm.next_out) {
+      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && _mode === c.Z_FINISH)) {
+
+        if (this.options.to === 'string') {
+
+          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
+
+          tail = strm.next_out - next_out_utf8;
+          utf8str = strings.buf2string(strm.output, next_out_utf8);
+
+          // move tail
+          strm.next_out = tail;
+          strm.avail_out = chunkSize - tail;
+          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }
+
+          this.onData(utf8str);
+
+        } else {
+          this.onData(utils.shrinkBuf(strm.output, strm.next_out));
+        }
+      }
+    }
+  } while ((strm.avail_in > 0) && status !== c.Z_STREAM_END);
+
+  if (status === c.Z_STREAM_END) {
+    _mode = c.Z_FINISH;
+  }
+  // Finalize on the last chunk.
+  if (_mode === c.Z_FINISH) {
+    status = zlib_inflate.inflateEnd(this.strm);
+    this.onEnd(status);
+    this.ended = true;
+    return status === c.Z_OK;
+  }
+
+  return true;
+};
+
+
+/**
+ * Inflate#onData(chunk) -> Void
+ * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
+ *   on js engine support. When string output requested, each chunk
+ *   will be string.
+ *
+ * By default, stores data blocks in `chunks[]` property and glue
+ * those in `onEnd`. Override this handler, if you need another behaviour.
+ **/
+Inflate.prototype.onData = function(chunk) {
+  this.chunks.push(chunk);
+};
+
+
+/**
+ * Inflate#onEnd(status) -> Void
+ * - status (Number): inflate status. 0 (Z_OK) on success,
+ *   other if not.
+ *
+ * Called once after you tell inflate that input stream complete
+ * or error happenned. By default - join collected chunks,
+ * free memory and fill `results` / `err` properties.
+ **/
+Inflate.prototype.onEnd = function(status) {
+  // On success - join
+  if (status === c.Z_OK) {
+    if (this.options.to === 'string') {
+      // Glue & convert here, until we teach pako to send
+      // utf8 alligned strings to onData
+      this.result = this.chunks.join('');
+    } else {
+      this.result = utils.flattenChunks(this.chunks);
+    }
+  }
+  this.chunks = [];
+  this.err = status;
+  this.msg = this.strm.msg;
+};
+
+
+/**
+ * inflate(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * Decompress `data` with inflate/ungzip and `options`. Autodetect
+ * format via wrapper header by default. That's why we don't provide
+ * separate `ungzip` method.
+ *
+ * Supported options are:
+ *
+ * - windowBits
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information.
+ *
+ * Sugar (options):
+ *
+ * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
+ *   negative windowBits implicitly.
+ * - `to` (String) - if equal to 'string', then result will be converted
+ *   from utf8 to utf16 (javascript) string. When string output requested,
+ *   chunk length can differ from `chunkSize`, depending on content.
+ *
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])
+ *   , output;
+ *
+ * try {
+ *   output = pako.inflate(input);
+ * } catch (err)
+ *   console.log(err);
+ * }
+ * ```
+ **/
+function inflate(input, options) {
+  var inflator = new Inflate(options);
+
+  inflator.push(input, true);
+
+  // That will never happens, if you don't cheat with options :)
+  if (inflator.err) { throw inflator.msg; }
+
+  return inflator.result;
+}
+
+
+/**
+ * inflateRaw(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * The same as [[inflate]], but creates raw data, without wrapper
+ * (header and adler32 crc).
+ **/
+function inflateRaw(input, options) {
+  options = options || {};
+  options.raw = true;
+  return inflate(input, options);
+}
+
+
+/**
+ * ungzip(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * Just shortcut to [[inflate]], because it autodetects format
+ * by header.content. Done for convenience.
+ **/
+
+
+exports.Inflate = Inflate;
+exports.inflate = inflate;
+exports.inflateRaw = inflateRaw;
+exports.ungzip  = inflate;
+
+},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(_dereq_,module,exports){
+'use strict';
+
+
+var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&
+                (typeof Uint16Array !== 'undefined') &&
+                (typeof Int32Array !== 'undefined');
+
+
+exports.assign = function (obj /*from1, from2, from3, ...*/) {
+  var sources = Array.prototype.slice.call(arguments, 1);
+  while (sources.length) {
+    var source = sources.shift();
+    if (!source) { continue; }
+
+    if (typeof(source) !== 'object') {
+      throw new TypeError(source + 'must be non-object');
+    }
+
+    for (var p in source) {
+      if (source.hasOwnProperty(p)) {
+        obj[p] = source[p];
+      }
+    }
+  }
+
+  return obj;
+};
+
+
+// reduce buffer size, avoiding mem copy
+exports.shrinkBuf = function (buf, size) {
+  if (buf.length === size) { return buf; }
+  if (buf.subarray) { return buf.subarray(0, size); }
+  buf.length = size;
+  return buf;
+};
+
+
+var fnTyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    if (src.subarray && dest.subarray) {
+      dest.set(src.subarray(src_offs, src_offs+len), dest_offs);
+      return;
+    }
+    // Fallback to ordinary array
+    for(var i=0; i<len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function(chunks) {
+    var i, l, len, pos, chunk, result;
+
+    // calculate data length
+    len = 0;
+    for (i=0, l=chunks.length; i<l; i++) {
+      len += chunks[i].length;
+    }
+
+    // join chunks
+    result = new Uint8Array(len);
+    pos = 0;
+    for (i=0, l=chunks.length; i<l; i++) {
+      chunk = chunks[i];
+      result.set(chunk, pos);
+      pos += chunk.length;
+    }
+
+    return result;
+  }
+};
+
+var fnUntyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    for(var i=0; i<len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function(chunks) {
+    return [].concat.apply([], chunks);
+  }
+};
+
+
+// Enable/Disable typed arrays use, for testing
+//
+exports.setTyped = function (on) {
+  if (on) {
+    exports.Buf8  = Uint8Array;
+    exports.Buf16 = Uint16Array;
+    exports.Buf32 = Int32Array;
+    exports.assign(exports, fnTyped);
+  } else {
+    exports.Buf8  = Array;
+    exports.Buf16 = Array;
+    exports.Buf32 = Array;
+    exports.assign(exports, fnUntyped);
+  }
+};
+
+exports.setTyped(TYPED_OK);
+},{}],28:[function(_dereq_,module,exports){
+// String encode/decode helpers
+'use strict';
+
+
+var utils = _dereq_('./common');
+
+
+// Quick check if we can use fast array to bin string conversion
+//
+// - apply(Array) can fail on Android 2.2
+// - apply(Uint8Array) can fail on iOS 5.1 Safary
+//
+var STR_APPLY_OK = true;
+var STR_APPLY_UIA_OK = true;
+
+try { String.fromCharCode.apply(null, [0]); } catch(__) { STR_APPLY_OK = false; }
+try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch(__) { STR_APPLY_UIA_OK = false; }
+
+
+// Table with utf8 lengths (calculated by first byte of sequence)
+// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
+// because max possible codepoint is 0x10ffff
+var _utf8len = new utils.Buf8(256);
+for (var i=0; i<256; i++) {
+  _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
+}
+_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
+
+
+// convert string to array (typed, when possible)
+exports.string2buf = function (str) {
+  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+
+  // count binary size
+  for (m_pos = 0; m_pos < str_len; m_pos++) {
+    c = str.charCodeAt(m_pos);
+    if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+      c2 = str.charCodeAt(m_pos+1);
+      if ((c2 & 0xfc00) === 0xdc00) {
+        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+        m_pos++;
+      }
+    }
+    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
+  }
+
+  // allocate buffer
+  buf = new utils.Buf8(buf_len);
+
+  // convert
+  for (i=0, m_pos = 0; i < buf_len; m_pos++) {
+    c = str.charCodeAt(m_pos);
+    if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+      c2 = str.charCodeAt(m_pos+1);
+      if ((c2 & 0xfc00) === 0xdc00) {
+        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+        m_pos++;
+      }
+    }
+    if (c < 0x80) {
+      /* one byte */
+      buf[i++] = c;
+    } else if (c < 0x800) {
+      /* two bytes */
+      buf[i++] = 0xC0 | (c >>> 6);
+      buf[i++] = 0x80 | (c & 0x3f);
+    } else if (c < 0x10000) {
+      /* three bytes */
+      buf[i++] = 0xE0 | (c >>> 12);
+      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+      buf[i++] = 0x80 | (c & 0x3f);
+    } else {
+      /* four bytes */
+      buf[i++] = 0xf0 | (c >>> 18);
+      buf[i++] = 0x80 | (c >>> 12 & 0x3f);
+      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+      buf[i++] = 0x80 | (c & 0x3f);
+    }
+  }
+
+  return buf;
+};
+
+// Helper (used in 2 places)
+function buf2binstring(buf, len) {
+  // use fallback for big arrays to avoid stack overflow
+  if (len < 65537) {
+    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {
+      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
+    }
+  }
+
+  var result = '';
+  for(var i=0; i < len; i++) {
+    result += String.fromCharCode(buf[i]);
+  }
+  return result;
+}
+
+
+// Convert byte array to binary string
+exports.buf2binstring = function(buf) {
+  return buf2binstring(buf, buf.length);
+};
+
+
+// Convert binary string (typed, when possible)
+exports.binstring2buf = function(str) {
+  var buf = new utils.Buf8(str.length);
+  for(var i=0, len=buf.length; i < len; i++) {
+    buf[i] = str.charCodeAt(i);
+  }
+  return buf;
+};
+
+
+// convert array to string
+exports.buf2string = function (buf, max) {
+  var i, out, c, c_len;
+  var len = max || buf.length;
+
+  // Reserve max possible length (2 words per char)
+  // NB: by unknown reasons, Array is significantly faster for
+  //     String.fromCharCode.apply than Uint16Array.
+  var utf16buf = new Array(len*2);
+
+  for (out=0, i=0; i<len;) {
+    c = buf[i++];
+    // quick process ascii
+    if (c < 0x80) { utf16buf[out++] = c; continue; }
+
+    c_len = _utf8len[c];
+    // skip 5 & 6 byte codes
+    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
+
+    // apply mask on first byte
+    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+    // join the rest
+    while (c_len > 1 && i < len) {
+      c = (c << 6) | (buf[i++] & 0x3f);
+      c_len--;
+    }
+
+    // terminated by end of string?
+    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
+
+    if (c < 0x10000) {
+      utf16buf[out++] = c;
+    } else {
+      c -= 0x10000;
+      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
+      utf16buf[out++] = 0xdc00 | (c & 0x3ff);
+    }
+  }
+
+  return buf2binstring(utf16buf, out);
+};
+
+
+// Calculate max possible position in utf8 buffer,
+// that will not break sequence. If that's not possible
+// - (very small limits) return max size as is.
+//
+// buf[] - utf8 bytes array
+// max   - length limit (mandatory);
+exports.utf8border = function(buf, max) {
+  var pos;
+
+  max = max || buf.length;
+  if (max > buf.length) { max = buf.length; }
+
+  // go back from last position, until start of sequence found
+  pos = max-1;
+  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
+
+  // Fuckup - very small and broken sequence,
+  // return max, because we should return something anyway.
+  if (pos < 0) { return max; }
+
+  // If we came to start of buffer - that means vuffer is too small,
+  // return max too.
+  if (pos === 0) { return max; }
+
+  return (pos + _utf8len[buf[pos]] > max) ? pos : max;
+};
+
+},{"./common":27}],29:[function(_dereq_,module,exports){
+'use strict';
+
+// Note: adler32 takes 12% for level 0 and 2% for level 6.
+// It doesn't worth to make additional optimizationa as in original.
+// Small size is preferable.
+
+function adler32(adler, buf, len, pos) {
+  var s1 = (adler & 0xffff) |0
+    , s2 = ((adler >>> 16) & 0xffff) |0
+    , n = 0;
+
+  while (len !== 0) {
+    // Set limit ~ twice less than 5552, to keep
+    // s2 in 31-bits, because we force signed ints.
+    // in other case %= will fail.
+    n = len > 2000 ? 2000 : len;
+    len -= n;
+
+    do {
+      s1 = (s1 + buf[pos++]) |0;
+      s2 = (s2 + s1) |0;
+    } while (--n);
+
+    s1 %= 65521;
+    s2 %= 65521;
+  }
+
+  return (s1 | (s2 << 16)) |0;
+}
+
+
+module.exports = adler32;
+},{}],30:[function(_dereq_,module,exports){
+module.exports = {
+
+  /* Allowed flush values; see deflate() and inflate() below for details */
+  Z_NO_FLUSH:         0,
+  Z_PARTIAL_FLUSH:    1,
+  Z_SYNC_FLUSH:       2,
+  Z_FULL_FLUSH:       3,
+  Z_FINISH:           4,
+  Z_BLOCK:            5,
+  Z_TREES:            6,
+
+  /* Return codes for the compression/decompression functions. Negative values
+  * are errors, positive values are used for special but normal events.
+  */
+  Z_OK:               0,
+  Z_STREAM_END:       1,
+  Z_NEED_DICT:        2,
+  Z_ERRNO:           -1,
+  Z_STREAM_ERROR:    -2,
+  Z_DATA_ERROR:      -3,
+  //Z_MEM_ERROR:     -4,
+  Z_BUF_ERROR:       -5,
+  //Z_VERSION_ERROR: -6,
+
+  /* compression levels */
+  Z_NO_COMPRESSION:         0,
+  Z_BEST_SPEED:             1,
+  Z_BEST_COMPRESSION:       9,
+  Z_DEFAULT_COMPRESSION:   -1,
+
+
+  Z_FILTERED:               1,
+  Z_HUFFMAN_ONLY:           2,
+  Z_RLE:                    3,
+  Z_FIXED:                  4,
+  Z_DEFAULT_STRATEGY:       0,
+
+  /* Possible values of the data_type field (though see inflate()) */
+  Z_BINARY:                 0,
+  Z_TEXT:                   1,
+  //Z_ASCII:                1, // = Z_TEXT (deprecated)
+  Z_UNKNOWN:                2,
+
+  /* The deflate compression method */
+  Z_DEFLATED:               8
+  //Z_NULL:                 null // Use -1 or null inline, depending on var type
+};
+},{}],31:[function(_dereq_,module,exports){
+'use strict';
+
+// Note: we can't get significant speed boost here.
+// So write code to minimize size - no pregenerated tables
+// and array tools dependencies.
+
+
+// Use ordinary array, since untyped makes no boost here
+function makeTable() {
+  var c, table = [];
+
+  for(var n =0; n < 256; n++){
+    c = n;
+    for(var k =0; k < 8; k++){
+      c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
+    }
+    table[n] = c;
+  }
+
+  return table;
+}
+
+// Create table on load. Just 255 signed longs. Not a problem.
+var crcTable = makeTable();
+
+
+function crc32(crc, buf, len, pos) {
+  var t = crcTable
+    , end = pos + len;
+
+  crc = crc ^ (-1);
+
+  for (var i = pos; i < end; i++ ) {
+    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
+  }
+
+  return (crc ^ (-1)); // >>> 0;
+}
+
+
+module.exports = crc32;
+},{}],32:[function(_dereq_,module,exports){
+'use strict';
+
+var utils   = _dereq_('../utils/common');
+var trees   = _dereq_('./trees');
+var adler32 = _dereq_('./adler32');
+var crc32   = _dereq_('./crc32');
+var msg   = _dereq_('./messages');
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+var Z_NO_FLUSH      = 0;
+var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+//var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+//var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+//var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+
+/* compression levels */
+//var Z_NO_COMPRESSION      = 0;
+//var Z_BEST_SPEED          = 1;
+//var Z_BEST_COMPRESSION    = 9;
+var Z_DEFAULT_COMPRESSION = -1;
+
+
+var Z_FILTERED            = 1;
+var Z_HUFFMAN_ONLY        = 2;
+var Z_RLE                 = 3;
+var Z_FIXED               = 4;
+var Z_DEFAULT_STRATEGY    = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+//var Z_BINARY              = 0;
+//var Z_TEXT                = 1;
+//var Z_ASCII               = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+/*============================================================================*/
+
+
+var MAX_MEM_LEVEL = 9;
+/* Maximum value for memLevel in deflateInit2 */
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_MEM_LEVEL = 8;
+
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+var D_CODES       = 30;
+/* number of distance codes */
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+var HEAP_SIZE     = 2*L_CODES + 1;
+/* maximum heap size */
+var MAX_BITS  = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var MIN_MATCH = 3;
+var MAX_MATCH = 258;
+var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
+
+var PRESET_DICT = 0x20;
+
+var INIT_STATE = 42;
+var EXTRA_STATE = 69;
+var NAME_STATE = 73;
+var COMMENT_STATE = 91;
+var HCRC_STATE = 103;
+var BUSY_STATE = 113;
+var FINISH_STATE = 666;
+
+var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
+var BS_BLOCK_DONE     = 2; /* block flush performed */
+var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
+var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */
+
+var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
+
+function err(strm, errorCode) {
+  strm.msg = msg[errorCode];
+  return errorCode;
+}
+
+function rank(f) {
+  return ((f) << 1) - ((f) > 4 ? 9 : 0);
+}
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+
+/* =========================================================================
+ * Flush as much pending output as possible. All deflate() output goes
+ * through this function so some applications may wish to modify it
+ * to avoid allocating a large strm->output buffer and copying into it.
+ * (See also read_buf()).
+ */
+function flush_pending(strm) {
+  var s = strm.state;
+
+  //_tr_flush_bits(s);
+  var len = s.pending;
+  if (len > strm.avail_out) {
+    len = strm.avail_out;
+  }
+  if (len === 0) { return; }
+
+  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
+  strm.next_out += len;
+  s.pending_out += len;
+  strm.total_out += len;
+  strm.avail_out -= len;
+  s.pending -= len;
+  if (s.pending === 0) {
+    s.pending_out = 0;
+  }
+}
+
+
+function flush_block_only (s, last) {
+  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
+  s.block_start = s.strstart;
+  flush_pending(s.strm);
+}
+
+
+function put_byte(s, b) {
+  s.pending_buf[s.pending++] = b;
+}
+
+
+/* =========================================================================
+ * Put a short in the pending buffer. The 16-bit value is put in MSB order.
+ * IN assertion: the stream state is correct and there is enough room in
+ * pending_buf.
+ */
+function putShortMSB(s, b) {
+//  put_byte(s, (Byte)(b >> 8));
+//  put_byte(s, (Byte)(b & 0xff));
+  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
+  s.pending_buf[s.pending++] = b & 0xff;
+}
+
+
+/* ===========================================================================
+ * Read a new buffer from the current input stream, update the adler32
+ * and total number of bytes read.  All deflate() input goes through
+ * this function so some applications may wish to modify it to avoid
+ * allocating a large strm->input buffer and copying from it.
+ * (See also flush_pending()).
+ */
+function read_buf(strm, buf, start, size) {
+  var len = strm.avail_in;
+
+  if (len > size) { len = size; }
+  if (len === 0) { return 0; }
+
+  strm.avail_in -= len;
+
+  utils.arraySet(buf, strm.input, strm.next_in, len, start);
+  if (strm.state.wrap === 1) {
+    strm.adler = adler32(strm.adler, buf, len, start);
+  }
+
+  else if (strm.state.wrap === 2) {
+    strm.adler = crc32(strm.adler, buf, len, start);
+  }
+
+  strm.next_in += len;
+  strm.total_in += len;
+
+  return len;
+}
+
+
+/* ===========================================================================
+ * Set match_start to the longest match starting at the given string and
+ * return its length. Matches shorter or equal to prev_length are discarded,
+ * in which case the result is equal to prev_length and match_start is
+ * garbage.
+ * IN assertions: cur_match is the head of the hash chain for the current
+ *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
+ * OUT assertion: the match length is not greater than s->lookahead.
+ */
+function longest_match(s, cur_match) {
+  var chain_length = s.max_chain_length;      /* max hash chain length */
+  var scan = s.strstart; /* current string */
+  var match;                       /* matched string */
+  var len;                           /* length of current match */
+  var best_len = s.prev_length;              /* best match length so far */
+  var nice_match = s.nice_match;             /* stop if match long enough */
+  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
+      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
+
+  var _win = s.window; // shortcut
+
+  var wmask = s.w_mask;
+  var prev  = s.prev;
+
+  /* Stop when cur_match becomes <= limit. To simplify the code,
+   * we prevent matches with the string of window index 0.
+   */
+
+  var strend = s.strstart + MAX_MATCH;
+  var scan_end1  = _win[scan + best_len - 1];
+  var scan_end   = _win[scan + best_len];
+
+  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
+   * It is easy to get rid of this optimization if necessary.
+   */
+  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
+
+  /* Do not waste too much time if we already have a good match: */
+  if (s.prev_length >= s.good_match) {
+    chain_length >>= 2;
+  }
+  /* Do not look for matches beyond the end of the input. This is necessary
+   * to make deflate deterministic.
+   */
+  if (nice_match > s.lookahead) { nice_match = s.lookahead; }
+
+  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+
+  do {
+    // Assert(cur_match < s->strstart, "no future");
+    match = cur_match;
+
+    /* Skip to next match if the match length cannot increase
+     * or if the match length is less than 2.  Note that the checks below
+     * for insufficient lookahead only occur occasionally for performance
+     * reasons.  Therefore uninitialized memory will be accessed, and
+     * conditional jumps will be made that depend on those values.
+     * However the length of the match is limited to the lookahead, so
+     * the output of deflate is not affected by the uninitialized values.
+     */
+
+    if (_win[match + best_len]     !== scan_end  ||
+        _win[match + best_len - 1] !== scan_end1 ||
+        _win[match]                !== _win[scan] ||
+        _win[++match]              !== _win[scan + 1]) {
+      continue;
+    }
+
+    /* The check at best_len-1 can be removed because it will be made
+     * again later. (This heuristic is not always a win.)
+     * It is not necessary to compare scan[2] and match[2] since they
+     * are always equal when the other bytes match, given that
+     * the hash keys are equal and that HASH_BITS >= 8.
+     */
+    scan += 2;
+    match++;
+    // Assert(*scan == *match, "match[2]?");
+
+    /* We check for insufficient lookahead only every 8th comparison;
+     * the 256th check will be made at strstart+258.
+     */
+    do {
+      /*jshint noempty:false*/
+    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             scan < strend);
+
+    // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+
+    len = MAX_MATCH - (strend - scan);
+    scan = strend - MAX_MATCH;
+
+    if (len > best_len) {
+      s.match_start = cur_match;
+      best_len = len;
+      if (len >= nice_match) {
+        break;
+      }
+      scan_end1  = _win[scan + best_len - 1];
+      scan_end   = _win[scan + best_len];
+    }
+  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
+
+  if (best_len <= s.lookahead) {
+    return best_len;
+  }
+  return s.lookahead;
+}
+
+
+/* ===========================================================================
+ * Fill the window when the lookahead becomes insufficient.
+ * Updates strstart and lookahead.
+ *
+ * IN assertion: lookahead < MIN_LOOKAHEAD
+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
+ *    At least one byte has been read, or avail_in == 0; reads are
+ *    performed for at least two bytes (required for the zip translate_eol
+ *    option -- not supported here).
+ */
+function fill_window(s) {
+  var _w_size = s.w_size;
+  var p, n, m, more, str;
+
+  //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+
+  do {
+    more = s.window_size - s.lookahead - s.strstart;
+
+    // JS ints have 32 bit, block below not needed
+    /* Deal with !@#$% 64K limit: */
+    //if (sizeof(int) <= 2) {
+    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+    //        more = wsize;
+    //
+    //  } else if (more == (unsigned)(-1)) {
+    //        /* Very unlikely, but possible on 16 bit machine if
+    //         * strstart == 0 && lookahead == 1 (input done a byte at time)
+    //         */
+    //        more--;
+    //    }
+    //}
+
+
+    /* If the window is almost full and there is insufficient lookahead,
+     * move the upper half to the lower one to make room in the upper half.
+     */
+    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
+
+      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
+      s.match_start -= _w_size;
+      s.strstart -= _w_size;
+      /* we now have strstart >= MAX_DIST */
+      s.block_start -= _w_size;
+
+      /* Slide the hash table (could be avoided with 32 bit values
+       at the expense of memory usage). We slide even when level == 0
+       to keep the hash table consistent if we switch back to level > 0
+       later. (Using level 0 permanently is not an optimal usage of
+       zlib, so we don't care about this pathological case.)
+       */
+
+      n = s.hash_size;
+      p = n;
+      do {
+        m = s.head[--p];
+        s.head[p] = (m >= _w_size ? m - _w_size : 0);
+      } while (--n);
+
+      n = _w_size;
+      p = n;
+      do {
+        m = s.prev[--p];
+        s.prev[p] = (m >= _w_size ? m - _w_size : 0);
+        /* If n is not on any hash chain, prev[n] is garbage but
+         * its value will never be used.
+         */
+      } while (--n);
+
+      more += _w_size;
+    }
+    if (s.strm.avail_in === 0) {
+      break;
+    }
+
+    /* If there was no sliding:
+     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+     *    more == window_size - lookahead - strstart
+     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+     * => more >= window_size - 2*WSIZE + 2
+     * In the BIG_MEM or MMAP case (not yet supported),
+     *   window_size == input_size + MIN_LOOKAHEAD  &&
+     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+     * Otherwise, window_size == 2*WSIZE so more >= 2.
+     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+     */
+    //Assert(more >= 2, "more < 2");
+    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
+    s.lookahead += n;
+
+    /* Initialize the hash value now that we have some input: */
+    if (s.lookahead + s.insert >= MIN_MATCH) {
+      str = s.strstart - s.insert;
+      s.ins_h = s.window[str];
+
+      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
+//#if MIN_MATCH != 3
+//        Call update_hash() MIN_MATCH-3 more times
+//#endif
+      while (s.insert) {
+        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH-1]) & s.hash_mask;
+
+        s.prev[str & s.w_mask] = s.head[s.ins_h];
+        s.head[s.ins_h] = str;
+        str++;
+        s.insert--;
+        if (s.lookahead + s.insert < MIN_MATCH) {
+          break;
+        }
+      }
+    }
+    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+     * but this is not important since only literal bytes will be emitted.
+     */
+
+  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
+
+  /* If the WIN_INIT bytes after the end of the current data have never been
+   * written, then zero those bytes in order to avoid memory check reports of
+   * the use of uninitialized (or uninitialised as Julian writes) bytes by
+   * the longest match routines.  Update the high water mark for the next
+   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+   */
+//  if (s.high_water < s.window_size) {
+//    var curr = s.strstart + s.lookahead;
+//    var init = 0;
+//
+//    if (s.high_water < curr) {
+//      /* Previous high water mark below current data -- zero WIN_INIT
+//       * bytes or up to end of window, whichever is less.
+//       */
+//      init = s.window_size - curr;
+//      if (init > WIN_INIT)
+//        init = WIN_INIT;
+//      zmemzero(s->window + curr, (unsigned)init);
+//      s->high_water = curr + init;
+//    }
+//    else if (s->high_water < (ulg)curr + WIN_INIT) {
+//      /* High water mark at or above current data, but below current data
+//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+//       * to end of window, whichever is less.
+//       */
+//      init = (ulg)curr + WIN_INIT - s->high_water;
+//      if (init > s->window_size - s->high_water)
+//        init = s->window_size - s->high_water;
+//      zmemzero(s->window + s->high_water, (unsigned)init);
+//      s->high_water += init;
+//    }
+//  }
+//
+//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+//    "not enough room for search");
+}
+
+/* ===========================================================================
+ * Copy without compression as much as possible from the input stream, return
+ * the current block state.
+ * This function does not insert new strings in the dictionary since
+ * uncompressible data is probably not useful. This function is used
+ * only for the level=0 compression option.
+ * NOTE: this function should be optimized to avoid extra copying from
+ * window to pending_buf.
+ */
+function deflate_stored(s, flush) {
+  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
+   * to pending_buf_size, and each stored block has a 5 byte header:
+   */
+  var max_block_size = 0xffff;
+
+  if (max_block_size > s.pending_buf_size - 5) {
+    max_block_size = s.pending_buf_size - 5;
+  }
+
+  /* Copy as much as possible from input to output: */
+  for (;;) {
+    /* Fill the window as much as possible: */
+    if (s.lookahead <= 1) {
+
+      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
+      //  s->block_start >= (long)s->w_size, "slide too late");
+//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
+//        s.block_start >= s.w_size)) {
+//        throw  new Error("slide too late");
+//      }
+
+      fill_window(s);
+      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+
+      if (s.lookahead === 0) {
+        break;
+      }
+      /* flush the current block */
+    }
+    //Assert(s->block_start >= 0L, "block gone");
+//    if (s.block_start < 0) throw new Error("block gone");
+
+    s.strstart += s.lookahead;
+    s.lookahead = 0;
+
+    /* Emit a stored block if pending_buf will be full: */
+    var max_start = s.block_start + max_block_size;
+
+    if (s.strstart === 0 || s.strstart >= max_start) {
+      /* strstart == 0 is possible when wraparound on 16-bit machine */
+      s.lookahead = s.strstart - max_start;
+      s.strstart = max_start;
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+
+
+    }
+    /* Flush if we may have to slide, otherwise block_start may become
+     * negative and the data will be gone:
+     */
+    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+
+  s.insert = 0;
+
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+
+  if (s.strstart > s.block_start) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_NEED_MORE;
+}
+
+/* ===========================================================================
+ * Compress as much as possible from the input stream, return the current
+ * block state.
+ * This function does not perform lazy evaluation of matches and inserts
+ * new strings in the dictionary only for unmatched strings or for short
+ * matches. It is used only for the fast compression options.
+ */
+function deflate_fast(s, flush) {
+  var hash_head;        /* head of the hash chain */
+  var bflush;           /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) {
+        break; /* flush the current block */
+      }
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     * At this point we have always match_length < MIN_MATCH
+     */
+    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+    }
+    if (s.match_length >= MIN_MATCH) {
+      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
+
+      /*** _tr_tally_dist(s, s.strstart - s.match_start,
+                     s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+
+      /* Insert new strings in the hash table only if the match length
+       * is not too large. This saves time but degrades compression.
+       */
+      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
+        s.match_length--; /* string at strstart already in table */
+        do {
+          s.strstart++;
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+          /* strstart never exceeds WSIZE-MAX_MATCH, so there are
+           * always MIN_MATCH bytes ahead.
+           */
+        } while (--s.match_length !== 0);
+        s.strstart++;
+      } else
+      {
+        s.strstart += s.match_length;
+        s.match_length = 0;
+        s.ins_h = s.window[s.strstart];
+        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;
+
+//#if MIN_MATCH != 3
+//                Call UPDATE_HASH() MIN_MATCH-3 more times
+//#endif
+        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
+         * matter since it will be recomputed at next deflate call.
+         */
+      }
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s.window[s.strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = ((s.strstart < (MIN_MATCH-1)) ? s.strstart : MIN_MATCH-1);
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * Same as above, but achieves better compression. We use a lazy
+ * evaluation for matches: a match is finally adopted only if there is
+ * no better match at the next window position.
+ */
+function deflate_slow(s, flush) {
+  var hash_head;          /* head of hash chain */
+  var bflush;              /* set if current block must be flushed */
+
+  var max_insert;
+
+  /* Process the input block. */
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     */
+    s.prev_length = s.match_length;
+    s.prev_match = s.match_start;
+    s.match_length = MIN_MATCH-1;
+
+    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
+        s.strstart - hash_head <= (s.w_size-MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+
+      if (s.match_length <= 5 &&
+         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
+
+        /* If prev_match is also MIN_MATCH, match_start is garbage
+         * but we will ignore the current match anyway.
+         */
+        s.match_length = MIN_MATCH-1;
+      }
+    }
+    /* If there was a match at the previous step and the current
+     * match is not better, output the previous match:
+     */
+    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
+      max_insert = s.strstart + s.lookahead - MIN_MATCH;
+      /* Do not insert strings in hash table beyond this. */
+
+      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
+
+      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
+                     s.prev_length - MIN_MATCH, bflush);***/
+      bflush = trees._tr_tally(s, s.strstart - 1- s.prev_match, s.prev_length - MIN_MATCH);
+      /* Insert in hash table all strings up to the end of the match.
+       * strstart-1 and strstart are already inserted. If there is not
+       * enough lookahead, the last two strings are not inserted in
+       * the hash table.
+       */
+      s.lookahead -= s.prev_length-1;
+      s.prev_length -= 2;
+      do {
+        if (++s.strstart <= max_insert) {
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+        }
+      } while (--s.prev_length !== 0);
+      s.match_available = 0;
+      s.match_length = MIN_MATCH-1;
+      s.strstart++;
+
+      if (bflush) {
+        /*** FLUSH_BLOCK(s, 0); ***/
+        flush_block_only(s, false);
+        if (s.strm.avail_out === 0) {
+          return BS_NEED_MORE;
+        }
+        /***/
+      }
+
+    } else if (s.match_available) {
+      /* If there was no match at the previous position, output a
+       * single literal. If there was a match but the current match
+       * is longer, truncate the previous match to a single literal.
+       */
+      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);
+
+      if (bflush) {
+        /*** FLUSH_BLOCK_ONLY(s, 0) ***/
+        flush_block_only(s, false);
+        /***/
+      }
+      s.strstart++;
+      s.lookahead--;
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+    } else {
+      /* There is no previous match to compare with, wait for
+       * the next step to decide.
+       */
+      s.match_available = 1;
+      s.strstart++;
+      s.lookahead--;
+    }
+  }
+  //Assert (flush != Z_NO_FLUSH, "no flush?");
+  if (s.match_available) {
+    //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);
+
+    s.match_available = 0;
+  }
+  s.insert = s.strstart < MIN_MATCH-1 ? s.strstart : MIN_MATCH-1;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_BLOCK_DONE;
+}
+
+
+/* ===========================================================================
+ * For Z_RLE, simply look for runs of bytes, generate matches only of distance
+ * one.  Do not maintain a hash table.  (It will be regenerated if this run of
+ * deflate switches away from Z_RLE.)
+ */
+function deflate_rle(s, flush) {
+  var bflush;            /* set if current block must be flushed */
+  var prev;              /* byte at distance one to match */
+  var scan, strend;      /* scan goes up to strend for length of run */
+
+  var _win = s.window;
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the longest run, plus one for the unrolled loop.
+     */
+    if (s.lookahead <= MAX_MATCH) {
+      fill_window(s);
+      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* See how many times the previous byte repeats */
+    s.match_length = 0;
+    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
+      scan = s.strstart - 1;
+      prev = _win[scan];
+      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
+        strend = s.strstart + MAX_MATCH;
+        do {
+          /*jshint noempty:false*/
+        } while (prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 scan < strend);
+        s.match_length = MAX_MATCH - (strend - scan);
+        if (s.match_length > s.lookahead) {
+          s.match_length = s.lookahead;
+        }
+      }
+      //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
+    }
+
+    /* Emit match if have run of MIN_MATCH or longer, else emit literal */
+    if (s.match_length >= MIN_MATCH) {
+      //check_match(s, s.strstart, s.strstart - 1, s.match_length);
+
+      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+      s.strstart += s.match_length;
+      s.match_length = 0;
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s->window[s->strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
+ * (It will be regenerated if this run of deflate switches away from Huffman.)
+ */
+function deflate_huff(s, flush) {
+  var bflush;             /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we have a literal to write. */
+    if (s.lookahead === 0) {
+      fill_window(s);
+      if (s.lookahead === 0) {
+        if (flush === Z_NO_FLUSH) {
+          return BS_NEED_MORE;
+        }
+        break;      /* flush the current block */
+      }
+    }
+
+    /* Output a literal byte */
+    s.match_length = 0;
+    //Tracevv((stderr,"%c", s->window[s->strstart]));
+    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+    s.lookahead--;
+    s.strstart++;
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* Values for max_lazy_match, good_match and max_chain_length, depending on
+ * the desired pack level (0..9). The values given below have been tuned to
+ * exclude worst case performance for pathological files. Better values may be
+ * found for specific files.
+ */
+var Config = function (good_length, max_lazy, nice_length, max_chain, func) {
+  this.good_length = good_length;
+  this.max_lazy = max_lazy;
+  this.nice_length = nice_length;
+  this.max_chain = max_chain;
+  this.func = func;
+};
+
+var configuration_table;
+
+configuration_table = [
+  /*      good lazy nice chain */
+  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
+  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
+  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
+  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */
+
+  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
+  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
+  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
+  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
+  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
+  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
+];
+
+
+/* ===========================================================================
+ * Initialize the "longest match" routines for a new zlib stream
+ */
+function lm_init(s) {
+  s.window_size = 2 * s.w_size;
+
+  /*** CLEAR_HASH(s); ***/
+  zero(s.head); // Fill with NIL (= 0);
+
+  /* Set the default configuration parameters:
+   */
+  s.max_lazy_match = configuration_table[s.level].max_lazy;
+  s.good_match = configuration_table[s.level].good_length;
+  s.nice_match = configuration_table[s.level].nice_length;
+  s.max_chain_length = configuration_table[s.level].max_chain;
+
+  s.strstart = 0;
+  s.block_start = 0;
+  s.lookahead = 0;
+  s.insert = 0;
+  s.match_length = s.prev_length = MIN_MATCH - 1;
+  s.match_available = 0;
+  s.ins_h = 0;
+}
+
+
+function DeflateState() {
+  this.strm = null;            /* pointer back to this zlib stream */
+  this.status = 0;            /* as the name implies */
+  this.pending_buf = null;      /* output still pending */
+  this.pending_buf_size = 0;  /* size of pending_buf */
+  this.pending_out = 0;       /* next pending byte to output to the stream */
+  this.pending = 0;           /* nb of bytes in the pending buffer */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.gzhead = null;         /* gzip header information to write */
+  this.gzindex = 0;           /* where in extra, name, or comment */
+  this.method = Z_DEFLATED; /* can only be DEFLATED */
+  this.last_flush = -1;   /* value of flush param for previous deflate call */
+
+  this.w_size = 0;  /* LZ77 window size (32K by default) */
+  this.w_bits = 0;  /* log2(w_size)  (8..16) */
+  this.w_mask = 0;  /* w_size - 1 */
+
+  this.window = null;
+  /* Sliding window. Input bytes are read into the second half of the window,
+   * and move to the first half later to keep a dictionary of at least wSize
+   * bytes. With this organization, matches are limited to a distance of
+   * wSize-MAX_MATCH bytes, but this ensures that IO is always
+   * performed with a length multiple of the block size.
+   */
+
+  this.window_size = 0;
+  /* Actual size of window: 2*wSize, except when the user input buffer
+   * is directly used as sliding window.
+   */
+
+  this.prev = null;
+  /* Link to older string with same hash index. To limit the size of this
+   * array to 64K, this link is maintained only for the last 32K strings.
+   * An index in this array is thus a window index modulo 32K.
+   */
+
+  this.head = null;   /* Heads of the hash chains or NIL. */
+
+  this.ins_h = 0;       /* hash index of string to be inserted */
+  this.hash_size = 0;   /* number of elements in hash table */
+  this.hash_bits = 0;   /* log2(hash_size) */
+  this.hash_mask = 0;   /* hash_size-1 */
+
+  this.hash_shift = 0;
+  /* Number of bits by which ins_h must be shifted at each input
+   * step. It must be such that after MIN_MATCH steps, the oldest
+   * byte no longer takes part in the hash key, that is:
+   *   hash_shift * MIN_MATCH >= hash_bits
+   */
+
+  this.block_start = 0;
+  /* Window position at the beginning of the current output block. Gets
+   * negative when the window is moved backwards.
+   */
+
+  this.match_length = 0;      /* length of best match */
+  this.prev_match = 0;        /* previous match */
+  this.match_available = 0;   /* set if previous match exists */
+  this.strstart = 0;          /* start of string to insert */
+  this.match_start = 0;       /* start of matching string */
+  this.lookahead = 0;         /* number of valid bytes ahead in window */
+
+  this.prev_length = 0;
+  /* Length of the best match at previous step. Matches not greater than this
+   * are discarded. This is used in the lazy match evaluation.
+   */
+
+  this.max_chain_length = 0;
+  /* To speed up deflation, hash chains are never searched beyond this
+   * length.  A higher limit improves compression ratio but degrades the
+   * speed.
+   */
+
+  this.max_lazy_match = 0;
+  /* Attempt to find a better match only when the current match is strictly
+   * smaller than this value. This mechanism is used only for compression
+   * levels >= 4.
+   */
+  // That's alias to max_lazy_match, don't use directly
+  //this.max_insert_length = 0;
+  /* Insert new strings in the hash table only if the match length is not
+   * greater than this length. This saves time but degrades compression.
+   * max_insert_length is used only for compression levels <= 3.
+   */
+
+  this.level = 0;     /* compression level (1..9) */
+  this.strategy = 0;  /* favor or force Huffman coding*/
+
+  this.good_match = 0;
+  /* Use a faster search when the previous match is longer than this */
+
+  this.nice_match = 0; /* Stop searching when current match exceeds this */
+
+              /* used by trees.c: */
+
+  /* Didn't use ct_data typedef below to suppress compiler warning */
+
+  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
+  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
+  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
+
+  // Use flat array of DOUBLE size, with interleaved fata,
+  // because JS does not support effective
+  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
+  this.dyn_dtree  = new utils.Buf16((2*D_CODES+1) * 2);
+  this.bl_tree    = new utils.Buf16((2*BL_CODES+1) * 2);
+  zero(this.dyn_ltree);
+  zero(this.dyn_dtree);
+  zero(this.bl_tree);
+
+  this.l_desc   = null;         /* desc. for literal tree */
+  this.d_desc   = null;         /* desc. for distance tree */
+  this.bl_desc  = null;         /* desc. for bit length tree */
+
+  //ush bl_count[MAX_BITS+1];
+  this.bl_count = new utils.Buf16(MAX_BITS+1);
+  /* number of codes at each bit length for an optimal tree */
+
+  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
+  this.heap = new utils.Buf16(2*L_CODES+1);  /* heap used to build the Huffman trees */
+  zero(this.heap);
+
+  this.heap_len = 0;               /* number of elements in the heap */
+  this.heap_max = 0;               /* element of largest frequency */
+  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
+   * The same heap array is used to build all trees.
+   */
+
+  this.depth = new utils.Buf16(2*L_CODES+1); //uch depth[2*L_CODES+1];
+  zero(this.depth);
+  /* Depth of each subtree used as tie breaker for trees of equal frequency
+   */
+
+  this.l_buf = 0;          /* buffer index for literals or lengths */
+
+  this.lit_bufsize = 0;
+  /* Size of match buffer for literals/lengths.  There are 4 reasons for
+   * limiting lit_bufsize to 64K:
+   *   - frequencies can be kept in 16 bit counters
+   *   - if compression is not successful for the first block, all input
+   *     data is still in the window so we can still emit a stored block even
+   *     when input comes from standard input.  (This can also be done for
+   *     all blocks if lit_bufsize is not greater than 32K.)
+   *   - if compression is not successful for a file smaller than 64K, we can
+   *     even emit a stored file instead of a stored block (saving 5 bytes).
+   *     This is applicable only for zip (not gzip or zlib).
+   *   - creating new Huffman trees less frequently may not provide fast
+   *     adaptation to changes in the input data statistics. (Take for
+   *     example a binary file with poorly compressible code followed by
+   *     a highly compressible string table.) Smaller buffer sizes give
+   *     fast adaptation but have of course the overhead of transmitting
+   *     trees more frequently.
+   *   - I can't count above 4
+   */
+
+  this.last_lit = 0;      /* running index in l_buf */
+
+  this.d_buf = 0;
+  /* Buffer index for distances. To simplify the code, d_buf and l_buf have
+   * the same number of elements. To use different lengths, an extra flag
+   * array would be necessary.
+   */
+
+  this.opt_len = 0;       /* bit length of current block with optimal trees */
+  this.static_len = 0;    /* bit length of current block with static trees */
+  this.matches = 0;       /* number of string matches in current block */
+  this.insert = 0;        /* bytes at end of window left to insert */
+
+
+  this.bi_buf = 0;
+  /* Output buffer. bits are inserted starting at the bottom (least
+   * significant bits).
+   */
+  this.bi_valid = 0;
+  /* Number of valid bits in bi_buf.  All bits above the last valid bit
+   * are always zero.
+   */
+
+  // Used for window memory init. We safely ignore it for JS. That makes
+  // sense only for pointers and memory check tools.
+  //this.high_water = 0;
+  /* High water mark offset in window for initialized bytes -- bytes above
+   * this are set to zero in order to avoid memory check warnings when
+   * longest match routines access bytes past the input.  This is then
+   * updated to the new high water mark.
+   */
+}
+
+
+function deflateResetKeep(strm) {
+  var s;
+
+  if (!strm || !strm.state) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.total_in = strm.total_out = 0;
+  strm.data_type = Z_UNKNOWN;
+
+  s = strm.state;
+  s.pending = 0;
+  s.pending_out = 0;
+
+  if (s.wrap < 0) {
+    s.wrap = -s.wrap;
+    /* was made negative by deflate(..., Z_FINISH); */
+  }
+  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
+  strm.adler = (s.wrap === 2) ?
+    0  // crc32(0, Z_NULL, 0)
+  :
+    1; // adler32(0, Z_NULL, 0)
+  s.last_flush = Z_NO_FLUSH;
+  trees._tr_init(s);
+  return Z_OK;
+}
+
+
+function deflateReset(strm) {
+  var ret = deflateResetKeep(strm);
+  if (ret === Z_OK) {
+    lm_init(strm.state);
+  }
+  return ret;
+}
+
+
+function deflateSetHeader(strm, head) {
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
+  strm.state.gzhead = head;
+  return Z_OK;
+}
+
+
+function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
+  if (!strm) { // === Z_NULL
+    return Z_STREAM_ERROR;
+  }
+  var wrap = 1;
+
+  if (level === Z_DEFAULT_COMPRESSION) {
+    level = 6;
+  }
+
+  if (windowBits < 0) { /* suppress zlib wrapper */
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+
+  else if (windowBits > 15) {
+    wrap = 2;           /* write gzip wrapper instead */
+    windowBits -= 16;
+  }
+
+
+  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
+    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
+    strategy < 0 || strategy > Z_FIXED) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+
+  if (windowBits === 8) {
+    windowBits = 9;
+  }
+  /* until 256-byte window bug fixed */
+
+  var s = new DeflateState();
+
+  strm.state = s;
+  s.strm = strm;
+
+  s.wrap = wrap;
+  s.gzhead = null;
+  s.w_bits = windowBits;
+  s.w_size = 1 << s.w_bits;
+  s.w_mask = s.w_size - 1;
+
+  s.hash_bits = memLevel + 7;
+  s.hash_size = 1 << s.hash_bits;
+  s.hash_mask = s.hash_size - 1;
+  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
+
+  s.window = new utils.Buf8(s.w_size * 2);
+  s.head = new utils.Buf16(s.hash_size);
+  s.prev = new utils.Buf16(s.w_size);
+
+  // Don't need mem init magic for JS.
+  //s.high_water = 0;  /* nothing written to s->window yet */
+
+  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
+
+  s.pending_buf_size = s.lit_bufsize * 4;
+  s.pending_buf = new utils.Buf8(s.pending_buf_size);
+
+  s.d_buf = s.lit_bufsize >> 1;
+  s.l_buf = (1 + 2) * s.lit_bufsize;
+
+  s.level = level;
+  s.strategy = strategy;
+  s.method = method;
+
+  return deflateReset(strm);
+}
+
+function deflateInit(strm, level) {
+  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
+}
+
+
+function deflate(strm, flush) {
+  var old_flush, s;
+  var beg, val; // for gzip header write only
+
+  if (!strm || !strm.state ||
+    flush > Z_BLOCK || flush < 0) {
+    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
+  }
+
+  s = strm.state;
+
+  if (!strm.output ||
+      (!strm.input && strm.avail_in !== 0) ||
+      (s.status === FINISH_STATE && flush !== Z_FINISH)) {
+    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
+  }
+
+  s.strm = strm; /* just in case */
+  old_flush = s.last_flush;
+  s.last_flush = flush;
+
+  /* Write the header */
+  if (s.status === INIT_STATE) {
+
+    if (s.wrap === 2) { // GZIP header
+      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
+      put_byte(s, 31);
+      put_byte(s, 139);
+      put_byte(s, 8);
+      if (!s.gzhead) { // s->gzhead == Z_NULL
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, OS_CODE);
+        s.status = BUSY_STATE;
+      }
+      else {
+        put_byte(s, (s.gzhead.text ? 1 : 0) +
+                    (s.gzhead.hcrc ? 2 : 0) +
+                    (!s.gzhead.extra ? 0 : 4) +
+                    (!s.gzhead.name ? 0 : 8) +
+                    (!s.gzhead.comment ? 0 : 16)
+                );
+        put_byte(s, s.gzhead.time & 0xff);
+        put_byte(s, (s.gzhead.time >> 8) & 0xff);
+        put_byte(s, (s.gzhead.time >> 16) & 0xff);
+        put_byte(s, (s.gzhead.time >> 24) & 0xff);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, s.gzhead.os & 0xff);
+        if (s.gzhead.extra && s.gzhead.extra.length) {
+          put_byte(s, s.gzhead.extra.length & 0xff);
+          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
+        }
+        if (s.gzhead.hcrc) {
+          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
+        }
+        s.gzindex = 0;
+        s.status = EXTRA_STATE;
+      }
+    }
+    else // DEFLATE header
+    {
+      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
+      var level_flags = -1;
+
+      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
+        level_flags = 0;
+      } else if (s.level < 6) {
+        level_flags = 1;
+      } else if (s.level === 6) {
+        level_flags = 2;
+      } else {
+        level_flags = 3;
+      }
+      header |= (level_flags << 6);
+      if (s.strstart !== 0) { header |= PRESET_DICT; }
+      header += 31 - (header % 31);
+
+      s.status = BUSY_STATE;
+      putShortMSB(s, header);
+
+      /* Save the adler32 of the preset dictionary: */
+      if (s.strstart !== 0) {
+        putShortMSB(s, strm.adler >>> 16);
+        putShortMSB(s, strm.adler & 0xffff);
+      }
+      strm.adler = 1; // adler32(0L, Z_NULL, 0);
+    }
+  }
+
+//#ifdef GZIP
+  if (s.status === EXTRA_STATE) {
+    if (s.gzhead.extra/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+
+      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            break;
+          }
+        }
+        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
+        s.gzindex++;
+      }
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (s.gzindex === s.gzhead.extra.length) {
+        s.gzindex = 0;
+        s.status = NAME_STATE;
+      }
+    }
+    else {
+      s.status = NAME_STATE;
+    }
+  }
+  if (s.status === NAME_STATE) {
+    if (s.gzhead.name/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.name.length) {
+          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg){
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.gzindex = 0;
+        s.status = COMMENT_STATE;
+      }
+    }
+    else {
+      s.status = COMMENT_STATE;
+    }
+  }
+  if (s.status === COMMENT_STATE) {
+    if (s.gzhead.comment/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.comment.length) {
+          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.status = HCRC_STATE;
+      }
+    }
+    else {
+      s.status = HCRC_STATE;
+    }
+  }
+  if (s.status === HCRC_STATE) {
+    if (s.gzhead.hcrc) {
+      if (s.pending + 2 > s.pending_buf_size) {
+        flush_pending(strm);
+      }
+      if (s.pending + 2 <= s.pending_buf_size) {
+        put_byte(s, strm.adler & 0xff);
+        put_byte(s, (strm.adler >> 8) & 0xff);
+        strm.adler = 0; //crc32(0L, Z_NULL, 0);
+        s.status = BUSY_STATE;
+      }
+    }
+    else {
+      s.status = BUSY_STATE;
+    }
+  }
+//#endif
+
+  /* Flush as much pending output as possible */
+  if (s.pending !== 0) {
+    flush_pending(strm);
+    if (strm.avail_out === 0) {
+      /* Since avail_out is 0, deflate will be called again with
+       * more output space, but possibly with both pending and
+       * avail_in equal to zero. There won't be anything to do,
+       * but this is not an error situation so make sure we
+       * return OK instead of BUF_ERROR at next call of deflate:
+       */
+      s.last_flush = -1;
+      return Z_OK;
+    }
+
+    /* Make sure there is something to do and avoid duplicate consecutive
+     * flushes. For repeated and useless calls with Z_FINISH, we keep
+     * returning Z_STREAM_END instead of Z_BUF_ERROR.
+     */
+  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
+    flush !== Z_FINISH) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* User must not provide more input after the first FINISH: */
+  if (s.status === FINISH_STATE && strm.avail_in !== 0) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* Start a new block or continue the current one.
+   */
+  if (strm.avail_in !== 0 || s.lookahead !== 0 ||
+    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
+    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
+      (s.strategy === Z_RLE ? deflate_rle(s, flush) :
+        configuration_table[s.level].func(s, flush));
+
+    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
+      s.status = FINISH_STATE;
+    }
+    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
+      if (strm.avail_out === 0) {
+        s.last_flush = -1;
+        /* avoid BUF_ERROR next call, see above */
+      }
+      return Z_OK;
+      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
+       * of deflate should use the same flush parameter to make sure
+       * that the flush is complete. So we don't have to output an
+       * empty block here, this will be done at next call. This also
+       * ensures that for a very small output buffer, we emit at most
+       * one empty block.
+       */
+    }
+    if (bstate === BS_BLOCK_DONE) {
+      if (flush === Z_PARTIAL_FLUSH) {
+        trees._tr_align(s);
+      }
+      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
+
+        trees._tr_stored_block(s, 0, 0, false);
+        /* For a full flush, this empty block will be recognized
+         * as a special marker by inflate_sync().
+         */
+        if (flush === Z_FULL_FLUSH) {
+          /*** CLEAR_HASH(s); ***/             /* forget history */
+          zero(s.head); // Fill with NIL (= 0);
+
+          if (s.lookahead === 0) {
+            s.strstart = 0;
+            s.block_start = 0;
+            s.insert = 0;
+          }
+        }
+      }
+      flush_pending(strm);
+      if (strm.avail_out === 0) {
+        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
+        return Z_OK;
+      }
+    }
+  }
+  //Assert(strm->avail_out > 0, "bug2");
+  //if (strm.avail_out <= 0) { throw new Error("bug2");}
+
+  if (flush !== Z_FINISH) { return Z_OK; }
+  if (s.wrap <= 0) { return Z_STREAM_END; }
+
+  /* Write the trailer */
+  if (s.wrap === 2) {
+    put_byte(s, strm.adler & 0xff);
+    put_byte(s, (strm.adler >> 8) & 0xff);
+    put_byte(s, (strm.adler >> 16) & 0xff);
+    put_byte(s, (strm.adler >> 24) & 0xff);
+    put_byte(s, strm.total_in & 0xff);
+    put_byte(s, (strm.total_in >> 8) & 0xff);
+    put_byte(s, (strm.total_in >> 16) & 0xff);
+    put_byte(s, (strm.total_in >> 24) & 0xff);
+  }
+  else
+  {
+    putShortMSB(s, strm.adler >>> 16);
+    putShortMSB(s, strm.adler & 0xffff);
+  }
+
+  flush_pending(strm);
+  /* If avail_out is zero, the application will call deflate again
+   * to flush the rest.
+   */
+  if (s.wrap > 0) { s.wrap = -s.wrap; }
+  /* write the trailer only once! */
+  return s.pending !== 0 ? Z_OK : Z_STREAM_END;
+}
+
+function deflateEnd(strm) {
+  var status;
+
+  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  status = strm.state.status;
+  if (status !== INIT_STATE &&
+    status !== EXTRA_STATE &&
+    status !== NAME_STATE &&
+    status !== COMMENT_STATE &&
+    status !== HCRC_STATE &&
+    status !== BUSY_STATE &&
+    status !== FINISH_STATE
+  ) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.state = null;
+
+  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
+}
+
+/* =========================================================================
+ * Copy the source state to the destination state
+ */
+//function deflateCopy(dest, source) {
+//
+//}
+
+exports.deflateInit = deflateInit;
+exports.deflateInit2 = deflateInit2;
+exports.deflateReset = deflateReset;
+exports.deflateResetKeep = deflateResetKeep;
+exports.deflateSetHeader = deflateSetHeader;
+exports.deflate = deflate;
+exports.deflateEnd = deflateEnd;
+exports.deflateInfo = 'pako deflate (from Nodeca project)';
+
+/* Not implemented
+exports.deflateBound = deflateBound;
+exports.deflateCopy = deflateCopy;
+exports.deflateSetDictionary = deflateSetDictionary;
+exports.deflateParams = deflateParams;
+exports.deflatePending = deflatePending;
+exports.deflatePrime = deflatePrime;
+exports.deflateTune = deflateTune;
+*/
+},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(_dereq_,module,exports){
+'use strict';
+
+
+function GZheader() {
+  /* true if compressed data believed to be text */
+  this.text       = 0;
+  /* modification time */
+  this.time       = 0;
+  /* extra flags (not used when writing a gzip file) */
+  this.xflags     = 0;
+  /* operating system */
+  this.os         = 0;
+  /* pointer to extra field or Z_NULL if none */
+  this.extra      = null;
+  /* extra field length (valid if extra != Z_NULL) */
+  this.extra_len  = 0; // Actually, we don't need it in JS,
+                       // but leave for few code modifications
+
+  //
+  // Setup limits is not necessary because in js we should not preallocate memory 
+  // for inflate use constant limit in 65536 bytes
+  //
+
+  /* space at extra (only when reading header) */
+  // this.extra_max  = 0;
+  /* pointer to zero-terminated file name or Z_NULL */
+  this.name       = '';
+  /* space at name (only when reading header) */
+  // this.name_max   = 0;
+  /* pointer to zero-terminated comment or Z_NULL */
+  this.comment    = '';
+  /* space at comment (only when reading header) */
+  // this.comm_max   = 0;
+  /* true if there was or will be a header crc */
+  this.hcrc       = 0;
+  /* true when done reading gzip header (not used when writing a gzip file) */
+  this.done       = false;
+}
+
+module.exports = GZheader;
+},{}],34:[function(_dereq_,module,exports){
+'use strict';
+
+// See state defs from inflate.js
+var BAD = 30;       /* got a data error -- remain here until reset */
+var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+
+/*
+   Decode literal, length, and distance codes and write out the resulting
+   literal and match bytes until either not enough input or output is
+   available, an end-of-block is encountered, or a data error is encountered.
+   When large enough input and output buffers are supplied to inflate(), for
+   example, a 16K input buffer and a 64K output buffer, more than 95% of the
+   inflate execution time is spent in this routine.
+
+   Entry assumptions:
+
+        state.mode === LEN
+        strm.avail_in >= 6
+        strm.avail_out >= 258
+        start >= strm.avail_out
+        state.bits < 8
+
+   On return, state.mode is one of:
+
+        LEN -- ran out of enough output space or enough available input
+        TYPE -- reached end of block code, inflate() to interpret next block
+        BAD -- error in block data
+
+   Notes:
+
+    - The maximum input bits used by a length/distance pair is 15 bits for the
+      length code, 5 bits for the length extra, 15 bits for the distance code,
+      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
+      Therefore if strm.avail_in >= 6, then there is enough input to avoid
+      checking for available input while decoding.
+
+    - The maximum bytes that a single length/distance pair can output is 258
+      bytes, which is the maximum length that can be coded.  inflate_fast()
+      requires strm.avail_out >= 258 for each loop to avoid checking for
+      output space.
+ */
+module.exports = function inflate_fast(strm, start) {
+  var state;
+  var _in;                    /* local strm.input */
+  var last;                   /* have enough input while in < last */
+  var _out;                   /* local strm.output */
+  var beg;                    /* inflate()'s initial strm.output */
+  var end;                    /* while out < end, enough space available */
+//#ifdef INFLATE_STRICT
+  var dmax;                   /* maximum distance from zlib header */
+//#endif
+  var wsize;                  /* window size or zero if not using window */
+  var whave;                  /* valid bytes in the window */
+  var wnext;                  /* window write index */
+  var window;                 /* allocated sliding window, if wsize != 0 */
+  var hold;                   /* local strm.hold */
+  var bits;                   /* local strm.bits */
+  var lcode;                  /* local strm.lencode */
+  var dcode;                  /* local strm.distcode */
+  var lmask;                  /* mask for first level of length codes */
+  var dmask;                  /* mask for first level of distance codes */
+  var here;                   /* retrieved table entry */
+  var op;                     /* code bits, operation, extra bits, or */
+                              /*  window position, window bytes to copy */
+  var len;                    /* match length, unused bytes */
+  var dist;                   /* match distance */
+  var from;                   /* where to copy match from */
+  var from_source;
+
+
+  var input, output; // JS specific, because we have no pointers
+
+  /* copy state to local variables */
+  state = strm.state;
+  //here = state.here;
+  _in = strm.next_in;
+  input = strm.input;
+  last = _in + (strm.avail_in - 5);
+  _out = strm.next_out;
+  output = strm.output;
+  beg = _out - (start - strm.avail_out);
+  end = _out + (strm.avail_out - 257);
+//#ifdef INFLATE_STRICT
+  dmax = state.dmax;
+//#endif
+  wsize = state.wsize;
+  whave = state.whave;
+  wnext = state.wnext;
+  window = state.window;
+  hold = state.hold;
+  bits = state.bits;
+  lcode = state.lencode;
+  dcode = state.distcode;
+  lmask = (1 << state.lenbits) - 1;
+  dmask = (1 << state.distbits) - 1;
+
+
+  /* decode literals and length/distances until end-of-block or not enough
+     input data or output space */
+
+  top:
+  do {
+    if (bits < 15) {
+      hold += input[_in++] << bits;
+      bits += 8;
+      hold += input[_in++] << bits;
+      bits += 8;
+    }
+
+    here = lcode[hold & lmask];
+
+    dolen:
+    for (;;) { // Goto emulation
+      op = here >>> 24/*here.bits*/;
+      hold >>>= op;
+      bits -= op;
+      op = (here >>> 16) & 0xff/*here.op*/;
+      if (op === 0) {                          /* literal */
+        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+        //        "inflate:         literal '%c'\n" :
+        //        "inflate:         literal 0x%02x\n", here.val));
+        output[_out++] = here & 0xffff/*here.val*/;
+      }
+      else if (op & 16) {                     /* length base */
+        len = here & 0xffff/*here.val*/;
+        op &= 15;                           /* number of extra bits */
+        if (op) {
+          if (bits < op) {
+            hold += input[_in++] << bits;
+            bits += 8;
+          }
+          len += hold & ((1 << op) - 1);
+          hold >>>= op;
+          bits -= op;
+        }
+        //Tracevv((stderr, "inflate:         length %u\n", len));
+        if (bits < 15) {
+          hold += input[_in++] << bits;
+          bits += 8;
+          hold += input[_in++] << bits;
+          bits += 8;
+        }
+        here = dcode[hold & dmask];
+
+        dodist:
+        for (;;) { // goto emulation
+          op = here >>> 24/*here.bits*/;
+          hold >>>= op;
+          bits -= op;
+          op = (here >>> 16) & 0xff/*here.op*/;
+
+          if (op & 16) {                      /* distance base */
+            dist = here & 0xffff/*here.val*/;
+            op &= 15;                       /* number of extra bits */
+            if (bits < op) {
+              hold += input[_in++] << bits;
+              bits += 8;
+              if (bits < op) {
+                hold += input[_in++] << bits;
+                bits += 8;
+              }
+            }
+            dist += hold & ((1 << op) - 1);
+//#ifdef INFLATE_STRICT
+            if (dist > dmax) {
+              strm.msg = 'invalid distance too far back';
+              state.mode = BAD;
+              break top;
+            }
+//#endif
+            hold >>>= op;
+            bits -= op;
+            //Tracevv((stderr, "inflate:         distance %u\n", dist));
+            op = _out - beg;                /* max distance in output */
+            if (dist > op) {                /* see if copy from window */
+              op = dist - op;               /* distance back in window */
+              if (op > whave) {
+                if (state.sane) {
+                  strm.msg = 'invalid distance too far back';
+                  state.mode = BAD;
+                  break top;
+                }
+
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//                if (len <= op - whave) {
+//                  do {
+//                    output[_out++] = 0;
+//                  } while (--len);
+//                  continue top;
+//                }
+//                len -= op - whave;
+//                do {
+//                  output[_out++] = 0;
+//                } while (--op > whave);
+//                if (op === 0) {
+//                  from = _out - dist;
+//                  do {
+//                    output[_out++] = output[from++];
+//                  } while (--len);
+//                  continue top;
+//                }
+//#endif
+              }
+              from = 0; // window index
+              from_source = window;
+              if (wnext === 0) {           /* very common case */
+                from += wsize - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              else if (wnext < op) {      /* wrap around window */
+                from += wsize + wnext - op;
+                op -= wnext;
+                if (op < len) {         /* some from end of window */
+                  len -= op;
+                  do {
+                    output[_out++] = window[from++];
+                  } while (--op);
+                  from = 0;
+                  if (wnext < len) {  /* some from start of window */
+                    op = wnext;
+                    len -= op;
+                    do {
+                      output[_out++] = window[from++];
+                    } while (--op);
+                    from = _out - dist;      /* rest from output */
+                    from_source = output;
+                  }
+                }
+              }
+              else {                      /* contiguous in window */
+                from += wnext - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              while (len > 2) {
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                len -= 3;
+              }
+              if (len) {
+                output[_out++] = from_source[from++];
+                if (len > 1) {
+                  output[_out++] = from_source[from++];
+                }
+              }
+            }
+            else {
+              from = _out - dist;          /* copy direct from output */
+              do {                        /* minimum length is three */
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                len -= 3;
+              } while (len > 2);
+              if (len) {
+                output[_out++] = output[from++];
+                if (len > 1) {
+                  output[_out++] = output[from++];
+                }
+              }
+            }
+          }
+          else if ((op & 64) === 0) {          /* 2nd level distance code */
+            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+            continue dodist;
+          }
+          else {
+            strm.msg = 'invalid distance code';
+            state.mode = BAD;
+            break top;
+          }
+
+          break; // need to emulate goto via "continue"
+        }
+      }
+      else if ((op & 64) === 0) {              /* 2nd level length code */
+        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+        continue dolen;
+      }
+      else if (op & 32) {                     /* end-of-block */
+        //Tracevv((stderr, "inflate:         end of block\n"));
+        state.mode = TYPE;
+        break top;
+      }
+      else {
+        strm.msg = 'invalid literal/length code';
+        state.mode = BAD;
+        break top;
+      }
+
+      break; // need to emulate goto via "continue"
+    }
+  } while (_in < last && _out < end);
+
+  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
+  len = bits >> 3;
+  _in -= len;
+  bits -= len << 3;
+  hold &= (1 << bits) - 1;
+
+  /* update state and return */
+  strm.next_in = _in;
+  strm.next_out = _out;
+  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
+  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
+  state.hold = hold;
+  state.bits = bits;
+  return;
+};
+
+},{}],35:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+var adler32 = _dereq_('./adler32');
+var crc32   = _dereq_('./crc32');
+var inflate_fast = _dereq_('./inffast');
+var inflate_table = _dereq_('./inftrees');
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+//var Z_NO_FLUSH      = 0;
+//var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+//var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+
+/* STATES ====================================================================*/
+/* ===========================================================================*/
+
+
+var    HEAD = 1;       /* i: waiting for magic header */
+var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
+var    TIME = 3;       /* i: waiting for modification time (gzip) */
+var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
+var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
+var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
+var    NAME = 7;       /* i: waiting for end of file name (gzip) */
+var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
+var    HCRC = 9;       /* i: waiting for header crc (gzip) */
+var    DICTID = 10;    /* i: waiting for dictionary check value */
+var    DICT = 11;      /* waiting for inflateSetDictionary() call */
+var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
+var        STORED = 14;    /* i: waiting for stored size (length and complement) */
+var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
+var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
+var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
+var        LENLENS = 18;   /* i: waiting for code length code lengths */
+var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
+var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
+var            LEN = 21;       /* i: waiting for length/lit/eob code */
+var            LENEXT = 22;    /* i: waiting for length extra bits */
+var            DIST = 23;      /* i: waiting for distance code */
+var            DISTEXT = 24;   /* i: waiting for distance extra bits */
+var            MATCH = 25;     /* o: waiting for output space to copy string */
+var            LIT = 26;       /* o: waiting for output space to write literal */
+var    CHECK = 27;     /* i: waiting for 32-bit check value */
+var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
+var    DONE = 29;      /* finished check, done -- remain here until reset */
+var    BAD = 30;       /* got a data error -- remain here until reset */
+var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
+var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */
+
+/* ===========================================================================*/
+
+
+
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);
+
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_WBITS = MAX_WBITS;
+
+
+function ZSWAP32(q) {
+  return  (((q >>> 24) & 0xff) +
+          ((q >>> 8) & 0xff00) +
+          ((q & 0xff00) << 8) +
+          ((q & 0xff) << 24));
+}
+
+
+function InflateState() {
+  this.mode = 0;             /* current inflate mode */
+  this.last = false;          /* true if processing last block */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.havedict = false;      /* true if dictionary provided */
+  this.flags = 0;             /* gzip header method and flags (0 if zlib) */
+  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
+  this.check = 0;             /* protected copy of check value */
+  this.total = 0;             /* protected copy of output count */
+  // TODO: may be {}
+  this.head = null;           /* where to save gzip header information */
+
+  /* sliding window */
+  this.wbits = 0;             /* log base 2 of requested window size */
+  this.wsize = 0;             /* window size or zero if not using window */
+  this.whave = 0;             /* valid bytes in the window */
+  this.wnext = 0;             /* window write index */
+  this.window = null;         /* allocated sliding window, if needed */
+
+  /* bit accumulator */
+  this.hold = 0;              /* input bit accumulator */
+  this.bits = 0;              /* number of bits in "in" */
+
+  /* for string and stored block copying */
+  this.length = 0;            /* literal or length of data to copy */
+  this.offset = 0;            /* distance back to copy string from */
+
+  /* for table and code decoding */
+  this.extra = 0;             /* extra bits needed */
+
+  /* fixed and dynamic code tables */
+  this.lencode = null;          /* starting table for length/literal codes */
+  this.distcode = null;         /* starting table for distance codes */
+  this.lenbits = 0;           /* index bits for lencode */
+  this.distbits = 0;          /* index bits for distcode */
+
+  /* dynamic table building */
+  this.ncode = 0;             /* number of code length code lengths */
+  this.nlen = 0;              /* number of length code lengths */
+  this.ndist = 0;             /* number of distance code lengths */
+  this.have = 0;              /* number of code lengths in lens[] */
+  this.next = null;              /* next available space in codes[] */
+
+  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
+  this.work = new utils.Buf16(288); /* work area for code table building */
+
+  /*
+   because we don't have pointers in js, we use lencode and distcode directly
+   as buffers so we don't need codes
+  */
+  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
+  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
+  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
+  this.sane = 0;                   /* if false, allow invalid distance too far */
+  this.back = 0;                   /* bits back of last unprocessed length/lit */
+  this.was = 0;                    /* initial length of match */
+}
+
+function inflateResetKeep(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  strm.total_in = strm.total_out = state.total = 0;
+  strm.msg = ''; /*Z_NULL*/
+  if (state.wrap) {       /* to support ill-conceived Java test suite */
+    strm.adler = state.wrap & 1;
+  }
+  state.mode = HEAD;
+  state.last = 0;
+  state.havedict = 0;
+  state.dmax = 32768;
+  state.head = null/*Z_NULL*/;
+  state.hold = 0;
+  state.bits = 0;
+  //state.lencode = state.distcode = state.next = state.codes;
+  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
+  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
+
+  state.sane = 1;
+  state.back = -1;
+  //Tracev((stderr, "inflate: reset\n"));
+  return Z_OK;
+}
+
+function inflateReset(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  state.wsize = 0;
+  state.whave = 0;
+  state.wnext = 0;
+  return inflateResetKeep(strm);
+
+}
+
+function inflateReset2(strm, windowBits) {
+  var wrap;
+  var state;
+
+  /* get the state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+
+  /* extract wrap request from windowBits parameter */
+  if (windowBits < 0) {
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+  else {
+    wrap = (windowBits >> 4) + 1;
+    if (windowBits < 48) {
+      windowBits &= 15;
+    }
+  }
+
+  /* set number of window bits, free window if different */
+  if (windowBits && (windowBits < 8 || windowBits > 15)) {
+    return Z_STREAM_ERROR;
+  }
+  if (state.window !== null && state.wbits !== windowBits) {
+    state.window = null;
+  }
+
+  /* update state and reset the rest of it */
+  state.wrap = wrap;
+  state.wbits = windowBits;
+  return inflateReset(strm);
+}
+
+function inflateInit2(strm, windowBits) {
+  var ret;
+  var state;
+
+  if (!strm) { return Z_STREAM_ERROR; }
+  //strm.msg = Z_NULL;                 /* in case we return an error */
+
+  state = new InflateState();
+
+  //if (state === Z_NULL) return Z_MEM_ERROR;
+  //Tracev((stderr, "inflate: allocated\n"));
+  strm.state = state;
+  state.window = null/*Z_NULL*/;
+  ret = inflateReset2(strm, windowBits);
+  if (ret !== Z_OK) {
+    strm.state = null/*Z_NULL*/;
+  }
+  return ret;
+}
+
+function inflateInit(strm) {
+  return inflateInit2(strm, DEF_WBITS);
+}
+
+
+/*
+ Return state with length and distance decoding tables and index sizes set to
+ fixed code decoding.  Normally this returns fixed tables from inffixed.h.
+ If BUILDFIXED is defined, then instead this routine builds the tables the
+ first time it's called, and returns those tables the first time and
+ thereafter.  This reduces the size of the code by about 2K bytes, in
+ exchange for a little execution time.  However, BUILDFIXED should not be
+ used for threaded applications, since the rewriting of the tables and virgin
+ may not be thread-safe.
+ */
+var virgin = true;
+
+var lenfix, distfix; // We have no pointers in JS, so keep tables separate
+
+function fixedtables(state) {
+  /* build fixed huffman tables if first call (may not be thread safe) */
+  if (virgin) {
+    var sym;
+
+    lenfix = new utils.Buf32(512);
+    distfix = new utils.Buf32(32);
+
+    /* literal/length table */
+    sym = 0;
+    while (sym < 144) { state.lens[sym++] = 8; }
+    while (sym < 256) { state.lens[sym++] = 9; }
+    while (sym < 280) { state.lens[sym++] = 7; }
+    while (sym < 288) { state.lens[sym++] = 8; }
+
+    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, {bits: 9});
+
+    /* distance table */
+    sym = 0;
+    while (sym < 32) { state.lens[sym++] = 5; }
+
+    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, {bits: 5});
+
+    /* do this just once */
+    virgin = false;
+  }
+
+  state.lencode = lenfix;
+  state.lenbits = 9;
+  state.distcode = distfix;
+  state.distbits = 5;
+}
+
+
+/*
+ Update the window with the last wsize (normally 32K) bytes written before
+ returning.  If window does not exist yet, create it.  This is only called
+ when a window is already in use, or when output has been written during this
+ inflate call, but the end of the deflate stream has not been reached yet.
+ It is also called to create a window for dictionary data when a dictionary
+ is loaded.
+
+ Providing output buffers larger than 32K to inflate() should provide a speed
+ advantage, since only the last 32K of output is copied to the sliding window
+ upon return from inflate(), and since all distances after the first 32K of
+ output will fall in the output data, making match copies simpler and faster.
+ The advantage may be dependent on the size of the processor's data caches.
+ */
+function updatewindow(strm, src, end, copy) {
+  var dist;
+  var state = strm.state;
+
+  /* if it hasn't been done already, allocate space for the window */
+  if (state.window === null) {
+    state.wsize = 1 << state.wbits;
+    state.wnext = 0;
+    state.whave = 0;
+
+    state.window = new utils.Buf8(state.wsize);
+  }
+
+  /* copy state->wsize or less output bytes into the circular window */
+  if (copy >= state.wsize) {
+    utils.arraySet(state.window,src, end - state.wsize, state.wsize, 0);
+    state.wnext = 0;
+    state.whave = state.wsize;
+  }
+  else {
+    dist = state.wsize - state.wnext;
+    if (dist > copy) {
+      dist = copy;
+    }
+    //zmemcpy(state->window + state->wnext, end - copy, dist);
+    utils.arraySet(state.window,src, end - copy, dist, state.wnext);
+    copy -= dist;
+    if (copy) {
+      //zmemcpy(state->window, end - copy, copy);
+      utils.arraySet(state.window,src, end - copy, copy, 0);
+      state.wnext = copy;
+      state.whave = state.wsize;
+    }
+    else {
+      state.wnext += dist;
+      if (state.wnext === state.wsize) { state.wnext = 0; }
+      if (state.whave < state.wsize) { state.whave += dist; }
+    }
+  }
+  return 0;
+}
+
+function inflate(strm, flush) {
+  var state;
+  var input, output;          // input/output buffers
+  var next;                   /* next input INDEX */
+  var put;                    /* next output INDEX */
+  var have, left;             /* available input and output */
+  var hold;                   /* bit buffer */
+  var bits;                   /* bits in bit buffer */
+  var _in, _out;              /* save starting available input and output */
+  var copy;                   /* number of stored or match bytes to copy */
+  var from;                   /* where to copy match bytes from */
+  var from_source;
+  var here = 0;               /* current decoding table entry */
+  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
+  //var last;                   /* parent table entry */
+  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
+  var len;                    /* length to copy for repeats, bits to drop */
+  var ret;                    /* return code */
+  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
+  var opts;
+
+  var n; // temporary var for NEED_BITS
+
+  var order = /* permutation of code lengths */
+    [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
+
+
+  if (!strm || !strm.state || !strm.output ||
+      (!strm.input && strm.avail_in !== 0)) {
+    return Z_STREAM_ERROR;
+  }
+
+  state = strm.state;
+  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */
+
+
+  //--- LOAD() ---
+  put = strm.next_out;
+  output = strm.output;
+  left = strm.avail_out;
+  next = strm.next_in;
+  input = strm.input;
+  have = strm.avail_in;
+  hold = state.hold;
+  bits = state.bits;
+  //---
+
+  _in = have;
+  _out = left;
+  ret = Z_OK;
+
+  inf_leave: // goto emulation
+  for (;;) {
+    switch (state.mode) {
+    case HEAD:
+      if (state.wrap === 0) {
+        state.mode = TYPEDO;
+        break;
+      }
+      //=== NEEDBITS(16);
+      while (bits < 16) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
+        state.check = 0/*crc32(0L, Z_NULL, 0)*/;
+        //=== CRC2(state.check, hold);
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        state.check = crc32(state.check, hbuf, 2, 0);
+        //===//
+
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = FLAGS;
+        break;
+      }
+      state.flags = 0;           /* expect zlib header */
+      if (state.head) {
+        state.head.done = false;
+      }
+      if (!(state.wrap & 1) ||   /* check if zlib header allowed */
+        (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
+        strm.msg = 'incorrect header check';
+        state.mode = BAD;
+        break;
+      }
+      if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
+        strm.msg = 'unknown compression method';
+        state.mode = BAD;
+        break;
+      }
+      //--- DROPBITS(4) ---//
+      hold >>>= 4;
+      bits -= 4;
+      //---//
+      len = (hold & 0x0f)/*BITS(4)*/ + 8;
+      if (state.wbits === 0) {
+        state.wbits = len;
+      }
+      else if (len > state.wbits) {
+        strm.msg = 'invalid window size';
+        state.mode = BAD;
+        break;
+      }
+      state.dmax = 1 << len;
+      //Tracev((stderr, "inflate:   zlib header ok\n"));
+      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+      state.mode = hold & 0x200 ? DICTID : TYPE;
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      break;
+    case FLAGS:
+      //=== NEEDBITS(16); */
+      while (bits < 16) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      state.flags = hold;
+      if ((state.flags & 0xff) !== Z_DEFLATED) {
+        strm.msg = 'unknown compression method';
+        state.mode = BAD;
+        break;
+      }
+      if (state.flags & 0xe000) {
+        strm.msg = 'unknown header flags set';
+        state.mode = BAD;
+        break;
+      }
+      if (state.head) {
+        state.head.text = ((hold >> 8) & 1);
+      }
+      if (state.flags & 0x0200) {
+        //=== CRC2(state.check, hold);
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        state.check = crc32(state.check, hbuf, 2, 0);
+        //===//
+      }
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = TIME;
+      /* falls through */
+    case TIME:
+      //=== NEEDBITS(32); */
+      while (bits < 32) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if (state.head) {
+        state.head.time = hold;
+      }
+      if (state.flags & 0x0200) {
+        //=== CRC4(state.check, hold)
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        hbuf[2] = (hold >>> 16) & 0xff;
+        hbuf[3] = (hold >>> 24) & 0xff;
+        state.check = crc32(state.check, hbuf, 4, 0);
+        //===
+      }
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = OS;
+      /* falls through */
+    case OS:
+      //=== NEEDBITS(16); */
+      while (bits < 16) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if (state.head) {
+        state.head.xflags = (hold & 0xff);
+        state.head.os = (hold >> 8);
+      }
+      if (state.flags & 0x0200) {
+        //=== CRC2(state.check, hold);
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        state.check = crc32(state.check, hbuf, 2, 0);
+        //===//
+      }
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = EXLEN;
+      /* falls through */
+    case EXLEN:
+      if (state.flags & 0x0400) {
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.length = hold;
+        if (state.head) {
+          state.head.extra_len = hold;
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+      }
+      else if (state.head) {
+        state.head.extra = null/*Z_NULL*/;
+      }
+      state.mode = EXTRA;
+      /* falls through */
+    case EXTRA:
+      if (state.flags & 0x0400) {
+        copy = state.length;
+        if (copy > have) { copy = have; }
+        if (copy) {
+          if (state.head) {
+            len = state.head.extra_len - state.length;
+            if (!state.head.extra) {
+              // Use untyped array for more conveniend processing later
+              state.head.extra = new Array(state.head.extra_len);
+            }
+            utils.arraySet(
+              state.head.extra,
+              input,
+              next,
+              // extra field is limited to 65536 bytes
+              // - no need for additional size check
+              copy,
+              /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
+              len
+            );
+            //zmemcpy(state.head.extra + len, next,
+            //        len + copy > state.head.extra_max ?
+            //        state.head.extra_max - len : copy);
+          }
+          if (state.flags & 0x0200) {
+            state.check = crc32(state.check, input, copy, next);
+          }
+          have -= copy;
+          next += copy;
+          state.length -= copy;
+        }
+        if (state.length) { break inf_leave; }
+      }
+      state.length = 0;
+      state.mode = NAME;
+      /* falls through */
+    case NAME:
+      if (state.flags & 0x0800) {
+        if (have === 0) { break inf_leave; }
+        copy = 0;
+        do {
+          // TODO: 2 or 1 bytes?
+          len = input[next + copy++];
+          /* use constant limit because in js we should not preallocate memory */
+          if (state.head && len &&
+              (state.length < 65536 /*state.head.name_max*/)) {
+            state.head.name += String.fromCharCode(len);
+          }
+        } while (len && copy < have);
+
+        if (state.flags & 0x0200) {
+          state.check = crc32(state.check, input, copy, next);
+        }
+        have -= copy;
+        next += copy;
+        if (len) { break inf_leave; }
+      }
+      else if (state.head) {
+        state.head.name = null;
+      }
+      state.length = 0;
+      state.mode = COMMENT;
+      /* falls through */
+    case COMMENT:
+      if (state.flags & 0x1000) {
+        if (have === 0) { break inf_leave; }
+        copy = 0;
+        do {
+          len = input[next + copy++];
+          /* use constant limit because in js we should not preallocate memory */
+          if (state.head && len &&
+              (state.length < 65536 /*state.head.comm_max*/)) {
+            state.head.comment += String.fromCharCode(len);
+          }
+        } while (len && copy < have);
+        if (state.flags & 0x0200) {
+          state.check = crc32(state.check, input, copy, next);
+        }
+        have -= copy;
+        next += copy;
+        if (len) { break inf_leave; }
+      }
+      else if (state.head) {
+        state.head.comment = null;
+      }
+      state.mode = HCRC;
+      /* falls through */
+    case HCRC:
+      if (state.flags & 0x0200) {
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (hold !== (state.check & 0xffff)) {
+          strm.msg = 'header crc mismatch';
+          state.mode = BAD;
+          break;
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+      }
+      if (state.head) {
+        state.head.hcrc = ((state.flags >> 9) & 1);
+        state.head.done = true;
+      }
+      strm.adler = state.check = 0 /*crc32(0L, Z_NULL, 0)*/;
+      state.mode = TYPE;
+      break;
+    case DICTID:
+      //=== NEEDBITS(32); */
+      while (bits < 32) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      strm.adler = state.check = ZSWAP32(hold);
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = DICT;
+      /* falls through */
+    case DICT:
+      if (state.havedict === 0) {
+        //--- RESTORE() ---
+        strm.next_out = put;
+        strm.avail_out = left;
+        strm.next_in = next;
+        strm.avail_in = have;
+        state.hold = hold;
+        state.bits = bits;
+        //---
+        return Z_NEED_DICT;
+      }
+      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+      state.mode = TYPE;
+      /* falls through */
+    case TYPE:
+      if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
+      /* falls through */
+    case TYPEDO:
+      if (state.last) {
+        //--- BYTEBITS() ---//
+        hold >>>= bits & 7;
+        bits -= bits & 7;
+        //---//
+        state.mode = CHECK;
+        break;
+      }
+      //=== NEEDBITS(3); */
+      while (bits < 3) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      state.last = (hold & 0x01)/*BITS(1)*/;
+      //--- DROPBITS(1) ---//
+      hold >>>= 1;
+      bits -= 1;
+      //---//
+
+      switch ((hold & 0x03)/*BITS(2)*/) {
+      case 0:                             /* stored block */
+        //Tracev((stderr, "inflate:     stored block%s\n",
+        //        state.last ? " (last)" : ""));
+        state.mode = STORED;
+        break;
+      case 1:                             /* fixed block */
+        fixedtables(state);
+        //Tracev((stderr, "inflate:     fixed codes block%s\n",
+        //        state.last ? " (last)" : ""));
+        state.mode = LEN_;             /* decode codes */
+        if (flush === Z_TREES) {
+          //--- DROPBITS(2) ---//
+          hold >>>= 2;
+          bits -= 2;
+          //---//
+          break inf_leave;
+        }
+        break;
+      case 2:                             /* dynamic block */
+        //Tracev((stderr, "inflate:     dynamic codes block%s\n",
+        //        state.last ? " (last)" : ""));
+        state.mode = TABLE;
+        break;
+      case 3:
+        strm.msg = 'invalid block type';
+        state.mode = BAD;
+      }
+      //--- DROPBITS(2) ---//
+      hold >>>= 2;
+      bits -= 2;
+      //---//
+      break;
+    case STORED:
+      //--- BYTEBITS() ---// /* go to byte boundary */
+      hold >>>= bits & 7;
+      bits -= bits & 7;
+      //---//
+      //=== NEEDBITS(32); */
+      while (bits < 32) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
+        strm.msg = 'invalid stored block lengths';
+        state.mode = BAD;
+        break;
+      }
+      state.length = hold & 0xffff;
+      //Tracev((stderr, "inflate:       stored length %u\n",
+      //        state.length));
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = COPY_;
+      if (flush === Z_TREES) { break inf_leave; }
+      /* falls through */
+    case COPY_:
+      state.mode = COPY;
+      /* falls through */
+    case COPY:
+      copy = state.length;
+      if (copy) {
+        if (copy > have) { copy = have; }
+        if (copy > left) { copy = left; }
+        if (copy === 0) { break inf_leave; }
+        //--- zmemcpy(put, next, copy); ---
+        utils.arraySet(output, input, next, copy, put);
+        //---//
+        have -= copy;
+        next += copy;
+        left -= copy;
+        put += copy;
+        state.length -= copy;
+        break;
+      }
+      //Tracev((stderr, "inflate:       stored end\n"));
+      state.mode = TYPE;
+      break;
+    case TABLE:
+      //=== NEEDBITS(14); */
+      while (bits < 14) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
+      //--- DROPBITS(5) ---//
+      hold >>>= 5;
+      bits -= 5;
+      //---//
+      state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
+      //--- DROPBITS(5) ---//
+      hold >>>= 5;
+      bits -= 5;
+      //---//
+      state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
+      //--- DROPBITS(4) ---//
+      hold >>>= 4;
+      bits -= 4;
+      //---//
+//#ifndef PKZIP_BUG_WORKAROUND
+      if (state.nlen > 286 || state.ndist > 30) {
+        strm.msg = 'too many length or distance symbols';
+        state.mode = BAD;
+        break;
+      }
+//#endif
+      //Tracev((stderr, "inflate:       table sizes ok\n"));
+      state.have = 0;
+      state.mode = LENLENS;
+      /* falls through */
+    case LENLENS:
+      while (state.have < state.ncode) {
+        //=== NEEDBITS(3);
+        while (bits < 3) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
+        //--- DROPBITS(3) ---//
+        hold >>>= 3;
+        bits -= 3;
+        //---//
+      }
+      while (state.have < 19) {
+        state.lens[order[state.have++]] = 0;
+      }
+      // We have separate tables & no pointers. 2 commented lines below not needed.
+      //state.next = state.codes;
+      //state.lencode = state.next;
+      // Switch to use dynamic table
+      state.lencode = state.lendyn;
+      state.lenbits = 7;
+
+      opts = {bits: state.lenbits};
+      ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
+      state.lenbits = opts.bits;
+
+      if (ret) {
+        strm.msg = 'invalid code lengths set';
+        state.mode = BAD;
+        break;
+      }
+      //Tracev((stderr, "inflate:       code lengths ok\n"));
+      state.have = 0;
+      state.mode = CODELENS;
+      /* falls through */
+    case CODELENS:
+      while (state.have < state.nlen + state.ndist) {
+        for (;;) {
+          here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        if (here_val < 16) {
+          //--- DROPBITS(here.bits) ---//
+          hold >>>= here_bits;
+          bits -= here_bits;
+          //---//
+          state.lens[state.have++] = here_val;
+        }
+        else {
+          if (here_val === 16) {
+            //=== NEEDBITS(here.bits + 2);
+            n = here_bits + 2;
+            while (bits < n) {
+              if (have === 0) { break inf_leave; }
+              have--;
+              hold += input[next++] << bits;
+              bits += 8;
+            }
+            //===//
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            if (state.have === 0) {
+              strm.msg = 'invalid bit length repeat';
+              state.mode = BAD;
+              break;
+            }
+            len = state.lens[state.have - 1];
+            copy = 3 + (hold & 0x03);//BITS(2);
+            //--- DROPBITS(2) ---//
+            hold >>>= 2;
+            bits -= 2;
+            //---//
+          }
+          else if (here_val === 17) {
+            //=== NEEDBITS(here.bits + 3);
+            n = here_bits + 3;
+            while (bits < n) {
+              if (have === 0) { break inf_leave; }
+              have--;
+              hold += input[next++] << bits;
+              bits += 8;
+            }
+            //===//
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            len = 0;
+            copy = 3 + (hold & 0x07);//BITS(3);
+            //--- DROPBITS(3) ---//
+            hold >>>= 3;
+            bits -= 3;
+            //---//
+          }
+          else {
+            //=== NEEDBITS(here.bits + 7);
+            n = here_bits + 7;
+            while (bits < n) {
+              if (have === 0) { break inf_leave; }
+              have--;
+              hold += input[next++] << bits;
+              bits += 8;
+            }
+            //===//
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            len = 0;
+            copy = 11 + (hold & 0x7f);//BITS(7);
+            //--- DROPBITS(7) ---//
+            hold >>>= 7;
+            bits -= 7;
+            //---//
+          }
+          if (state.have + copy > state.nlen + state.ndist) {
+            strm.msg = 'invalid bit length repeat';
+            state.mode = BAD;
+            break;
+          }
+          while (copy--) {
+            state.lens[state.have++] = len;
+          }
+        }
+      }
+
+      /* handle error breaks in while */
+      if (state.mode === BAD) { break; }
+
+      /* check for end-of-block code (better have one) */
+      if (state.lens[256] === 0) {
+        strm.msg = 'invalid code -- missing end-of-block';
+        state.mode = BAD;
+        break;
+      }
+
+      /* build code tables -- note: do not change the lenbits or distbits
+         values here (9 and 6) without reading the comments in inftrees.h
+         concerning the ENOUGH constants, which depend on those values */
+      state.lenbits = 9;
+
+      opts = {bits: state.lenbits};
+      ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
+      // We have separate tables & no pointers. 2 commented lines below not needed.
+      // state.next_index = opts.table_index;
+      state.lenbits = opts.bits;
+      // state.lencode = state.next;
+
+      if (ret) {
+        strm.msg = 'invalid literal/lengths set';
+        state.mode = BAD;
+        break;
+      }
+
+      state.distbits = 6;
+      //state.distcode.copy(state.codes);
+      // Switch to use dynamic table
+      state.distcode = state.distdyn;
+      opts = {bits: state.distbits};
+      ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
+      // We have separate tables & no pointers. 2 commented lines below not needed.
+      // state.next_index = opts.table_index;
+      state.distbits = opts.bits;
+      // state.distcode = state.next;
+
+      if (ret) {
+        strm.msg = 'invalid distances set';
+        state.mode = BAD;
+        break;
+      }
+      //Tracev((stderr, 'inflate:       codes ok\n'));
+      state.mode = LEN_;
+      if (flush === Z_TREES) { break inf_leave; }
+      /* falls through */
+    case LEN_:
+      state.mode = LEN;
+      /* falls through */
+    case LEN:
+      if (have >= 6 && left >= 258) {
+        //--- RESTORE() ---
+        strm.next_out = put;
+        strm.avail_out = left;
+        strm.next_in = next;
+        strm.avail_in = have;
+        state.hold = hold;
+        state.bits = bits;
+        //---
+        inflate_fast(strm, _out);
+        //--- LOAD() ---
+        put = strm.next_out;
+        output = strm.output;
+        left = strm.avail_out;
+        next = strm.next_in;
+        input = strm.input;
+        have = strm.avail_in;
+        hold = state.hold;
+        bits = state.bits;
+        //---
+
+        if (state.mode === TYPE) {
+          state.back = -1;
+        }
+        break;
+      }
+      state.back = 0;
+      for (;;) {
+        here = state.lencode[hold & ((1 << state.lenbits) -1)];  /*BITS(state.lenbits)*/
+        here_bits = here >>> 24;
+        here_op = (here >>> 16) & 0xff;
+        here_val = here & 0xffff;
+
+        if (here_bits <= bits) { break; }
+        //--- PULLBYTE() ---//
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+        //---//
+      }
+      if (here_op && (here_op & 0xf0) === 0) {
+        last_bits = here_bits;
+        last_op = here_op;
+        last_val = here_val;
+        for (;;) {
+          here = state.lencode[last_val +
+                  ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((last_bits + here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        //--- DROPBITS(last.bits) ---//
+        hold >>>= last_bits;
+        bits -= last_bits;
+        //---//
+        state.back += last_bits;
+      }
+      //--- DROPBITS(here.bits) ---//
+      hold >>>= here_bits;
+      bits -= here_bits;
+      //---//
+      state.back += here_bits;
+      state.length = here_val;
+      if (here_op === 0) {
+        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+        //        "inflate:         literal '%c'\n" :
+        //        "inflate:         literal 0x%02x\n", here.val));
+        state.mode = LIT;
+        break;
+      }
+      if (here_op & 32) {
+        //Tracevv((stderr, "inflate:         end of block\n"));
+        state.back = -1;
+        state.mode = TYPE;
+        break;
+      }
+      if (here_op & 64) {
+        strm.msg = 'invalid literal/length code';
+        state.mode = BAD;
+        break;
+      }
+      state.extra = here_op & 15;
+      state.mode = LENEXT;
+      /* falls through */
+    case LENEXT:
+      if (state.extra) {
+        //=== NEEDBITS(state.extra);
+        n = state.extra;
+        while (bits < n) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.length += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;
+        //--- DROPBITS(state.extra) ---//
+        hold >>>= state.extra;
+        bits -= state.extra;
+        //---//
+        state.back += state.extra;
+      }
+      //Tracevv((stderr, "inflate:         length %u\n", state.length));
+      state.was = state.length;
+      state.mode = DIST;
+      /* falls through */
+    case DIST:
+      for (;;) {
+        here = state.distcode[hold & ((1 << state.distbits) -1)];/*BITS(state.distbits)*/
+        here_bits = here >>> 24;
+        here_op = (here >>> 16) & 0xff;
+        here_val = here & 0xffff;
+
+        if ((here_bits) <= bits) { break; }
+        //--- PULLBYTE() ---//
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+        //---//
+      }
+      if ((here_op & 0xf0) === 0) {
+        last_bits = here_bits;
+        last_op = here_op;
+        last_val = here_val;
+        for (;;) {
+          here = state.distcode[last_val +
+                  ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((last_bits + here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        //--- DROPBITS(last.bits) ---//
+        hold >>>= last_bits;
+        bits -= last_bits;
+        //---//
+        state.back += last_bits;
+      }
+      //--- DROPBITS(here.bits) ---//
+      hold >>>= here_bits;
+      bits -= here_bits;
+      //---//
+      state.back += here_bits;
+      if (here_op & 64) {
+        strm.msg = 'invalid distance code';
+        state.mode = BAD;
+        break;
+      }
+      state.offset = here_val;
+      state.extra = (here_op) & 15;
+      state.mode = DISTEXT;
+      /* falls through */
+    case DISTEXT:
+      if (state.extra) {
+        //=== NEEDBITS(state.extra);
+        n = state.extra;
+        while (bits < n) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.offset += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;
+        //--- DROPBITS(state.extra) ---//
+        hold >>>= state.extra;
+        bits -= state.extra;
+        //---//
+        state.back += state.extra;
+      }
+//#ifdef INFLATE_STRICT
+      if (state.offset > state.dmax) {
+        strm.msg = 'invalid distance too far back';
+        state.mode = BAD;
+        break;
+      }
+//#endif
+      //Tracevv((stderr, "inflate:         distance %u\n", state.offset));
+      state.mode = MATCH;
+      /* falls through */
+    case MATCH:
+      if (left === 0) { break inf_leave; }
+      copy = _out - left;
+      if (state.offset > copy) {         /* copy from window */
+        copy = state.offset - copy;
+        if (copy > state.whave) {
+          if (state.sane) {
+            strm.msg = 'invalid distance too far back';
+            state.mode = BAD;
+            break;
+          }
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//          Trace((stderr, "inflate.c too far\n"));
+//          copy -= state.whave;
+//          if (copy > state.length) { copy = state.length; }
+//          if (copy > left) { copy = left; }
+//          left -= copy;
+//          state.length -= copy;
+//          do {
+//            output[put++] = 0;
+//          } while (--copy);
+//          if (state.length === 0) { state.mode = LEN; }
+//          break;
+//#endif
+        }
+        if (copy > state.wnext) {
+          copy -= state.wnext;
+          from = state.wsize - copy;
+        }
+        else {
+          from = state.wnext - copy;
+        }
+        if (copy > state.length) { copy = state.length; }
+        from_source = state.window;
+      }
+      else {                              /* copy from output */
+        from_source = output;
+        from = put - state.offset;
+        copy = state.length;
+      }
+      if (copy > left) { copy = left; }
+      left -= copy;
+      state.length -= copy;
+      do {
+        output[put++] = from_source[from++];
+      } while (--copy);
+      if (state.length === 0) { state.mode = LEN; }
+      break;
+    case LIT:
+      if (left === 0) { break inf_leave; }
+      output[put++] = state.length;
+      left--;
+      state.mode = LEN;
+      break;
+    case CHECK:
+      if (state.wrap) {
+        //=== NEEDBITS(32);
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          // Use '|' insdead of '+' to make sure that result is signed
+          hold |= input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        _out -= left;
+        strm.total_out += _out;
+        state.total += _out;
+        if (_out) {
+          strm.adler = state.check =
+              /*UPDATE(state.check, put - _out, _out);*/
+              (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));
+
+        }
+        _out = left;
+        // NB: crc32 stored as signed 32-bit int, ZSWAP32 returns signed too
+        if ((state.flags ? hold : ZSWAP32(hold)) !== state.check) {
+          strm.msg = 'incorrect data check';
+          state.mode = BAD;
+          break;
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        //Tracev((stderr, "inflate:   check matches trailer\n"));
+      }
+      state.mode = LENGTH;
+      /* falls through */
+    case LENGTH:
+      if (state.wrap && state.flags) {
+        //=== NEEDBITS(32);
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (hold !== (state.total & 0xffffffff)) {
+          strm.msg = 'incorrect length check';
+          state.mode = BAD;
+          break;
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        //Tracev((stderr, "inflate:   length matches trailer\n"));
+      }
+      state.mode = DONE;
+      /* falls through */
+    case DONE:
+      ret = Z_STREAM_END;
+      break inf_leave;
+    case BAD:
+      ret = Z_DATA_ERROR;
+      break inf_leave;
+    case MEM:
+      return Z_MEM_ERROR;
+    case SYNC:
+      /* falls through */
+    default:
+      return Z_STREAM_ERROR;
+    }
+  }
+
+  // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
+
+  /*
+     Return from inflate(), updating the total counts and the check value.
+     If there was no progress during the inflate() call, return a buffer
+     error.  Call updatewindow() to create and/or update the window state.
+     Note: a memory error from inflate() is non-recoverable.
+   */
+
+  //--- RESTORE() ---
+  strm.next_out = put;
+  strm.avail_out = left;
+  strm.next_in = next;
+  strm.avail_in = have;
+  state.hold = hold;
+  state.bits = bits;
+  //---
+
+  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
+                      (state.mode < CHECK || flush !== Z_FINISH))) {
+    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
+      state.mode = MEM;
+      return Z_MEM_ERROR;
+    }
+  }
+  _in -= strm.avail_in;
+  _out -= strm.avail_out;
+  strm.total_in += _in;
+  strm.total_out += _out;
+  state.total += _out;
+  if (state.wrap && _out) {
+    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
+      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
+  }
+  strm.data_type = state.bits + (state.last ? 64 : 0) +
+                    (state.mode === TYPE ? 128 : 0) +
+                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
+  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
+    ret = Z_BUF_ERROR;
+  }
+  return ret;
+}
+
+function inflateEnd(strm) {
+
+  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  var state = strm.state;
+  if (state.window) {
+    state.window = null;
+  }
+  strm.state = null;
+  return Z_OK;
+}
+
+function inflateGetHeader(strm, head) {
+  var state;
+
+  /* check state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }
+
+  /* save header structure */
+  state.head = head;
+  head.done = false;
+  return Z_OK;
+}
+
+
+exports.inflateReset = inflateReset;
+exports.inflateReset2 = inflateReset2;
+exports.inflateResetKeep = inflateResetKeep;
+exports.inflateInit = inflateInit;
+exports.inflateInit2 = inflateInit2;
+exports.inflate = inflate;
+exports.inflateEnd = inflateEnd;
+exports.inflateGetHeader = inflateGetHeader;
+exports.inflateInfo = 'pako inflate (from Nodeca project)';
+
+/* Not implemented
+exports.inflateCopy = inflateCopy;
+exports.inflateGetDictionary = inflateGetDictionary;
+exports.inflateMark = inflateMark;
+exports.inflatePrime = inflatePrime;
+exports.inflateSetDictionary = inflateSetDictionary;
+exports.inflateSync = inflateSync;
+exports.inflateSyncPoint = inflateSyncPoint;
+exports.inflateUndermine = inflateUndermine;
+*/
+},{"../utils/common":27,"./adler32":29,"./crc32":31,"./inffast":34,"./inftrees":36}],36:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+
+var MAXBITS = 15;
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+var lbase = [ /* Length codes 257..285 base */
+  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
+  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
+];
+
+var lext = [ /* Length codes 257..285 extra */
+  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
+  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
+];
+
+var dbase = [ /* Distance codes 0..29 base */
+  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
+  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
+  8193, 12289, 16385, 24577, 0, 0
+];
+
+var dext = [ /* Distance codes 0..29 extra */
+  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
+  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
+  28, 28, 29, 29, 64, 64
+];
+
+module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
+{
+  var bits = opts.bits;
+      //here = opts.here; /* table entry for duplication */
+
+  var len = 0;               /* a code's length in bits */
+  var sym = 0;               /* index of code symbols */
+  var min = 0, max = 0;          /* minimum and maximum code lengths */
+  var root = 0;              /* number of index bits for root table */
+  var curr = 0;              /* number of index bits for current table */
+  var drop = 0;              /* code bits to drop for sub-table */
+  var left = 0;                   /* number of prefix codes available */
+  var used = 0;              /* code entries in table used */
+  var huff = 0;              /* Huffman code */
+  var incr;              /* for incrementing code, index */
+  var fill;              /* index for replicating entries */
+  var low;               /* low bits for current root entry */
+  var mask;              /* mask for low root bits */
+  var next;             /* next available space in table */
+  var base = null;     /* base value table to use */
+  var base_index = 0;
+//  var shoextra;    /* extra bits table to use */
+  var end;                    /* use base and extra for symbol > end */
+  var count = new utils.Buf16(MAXBITS+1); //[MAXBITS+1];    /* number of codes of each length */
+  var offs = new utils.Buf16(MAXBITS+1); //[MAXBITS+1];     /* offsets in table for each length */
+  var extra = null;
+  var extra_index = 0;
+
+  var here_bits, here_op, here_val;
+
+  /*
+   Process a set of code lengths to create a canonical Huffman code.  The
+   code lengths are lens[0..codes-1].  Each length corresponds to the
+   symbols 0..codes-1.  The Huffman code is generated by first sorting the
+   symbols by length from short to long, and retaining the symbol order
+   for codes with equal lengths.  Then the code starts with all zero bits
+   for the first code of the shortest length, and the codes are integer
+   increments for the same length, and zeros are appended as the length
+   increases.  For the deflate format, these bits are stored backwards
+   from their more natural integer increment ordering, and so when the
+   decoding tables are built in the large loop below, the integer codes
+   are incremented backwards.
+
+   This routine assumes, but does not check, that all of the entries in
+   lens[] are in the range 0..MAXBITS.  The caller must assure this.
+   1..MAXBITS is interpreted as that code length.  zero means that that
+   symbol does not occur in this code.
+
+   The codes are sorted by computing a count of codes for each length,
+   creating from that a table of starting indices for each length in the
+   sorted table, and then entering the symbols in order in the sorted
+   table.  The sorted table is work[], with that space being provided by
+   the caller.
+
+   The length counts are used for other purposes as well, i.e. finding
+   the minimum and maximum length codes, determining if there are any
+   codes at all, checking for a valid set of lengths, and looking ahead
+   at length counts to determine sub-table sizes when building the
+   decoding tables.
+   */
+
+  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
+  for (len = 0; len <= MAXBITS; len++) {
+    count[len] = 0;
+  }
+  for (sym = 0; sym < codes; sym++) {
+    count[lens[lens_index + sym]]++;
+  }
+
+  /* bound code lengths, force root to be within code lengths */
+  root = bits;
+  for (max = MAXBITS; max >= 1; max--) {
+    if (count[max] !== 0) { break; }
+  }
+  if (root > max) {
+    root = max;
+  }
+  if (max === 0) {                     /* no symbols to code at all */
+    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
+    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
+    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+
+    //table.op[opts.table_index] = 64;
+    //table.bits[opts.table_index] = 1;
+    //table.val[opts.table_index++] = 0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+    opts.bits = 1;
+    return 0;     /* no symbols, but wait for decoding to report error */
+  }
+  for (min = 1; min < max; min++) {
+    if (count[min] !== 0) { break; }
+  }
+  if (root < min) {
+    root = min;
+  }
+
+  /* check for an over-subscribed or incomplete set of lengths */
+  left = 1;
+  for (len = 1; len <= MAXBITS; len++) {
+    left <<= 1;
+    left -= count[len];
+    if (left < 0) {
+      return -1;
+    }        /* over-subscribed */
+  }
+  if (left > 0 && (type === CODES || max !== 1)) {
+    return -1;                      /* incomplete set */
+  }
+
+  /* generate offsets into symbol table for each length for sorting */
+  offs[1] = 0;
+  for (len = 1; len < MAXBITS; len++) {
+    offs[len + 1] = offs[len] + count[len];
+  }
+
+  /* sort symbols by length, by symbol order within each length */
+  for (sym = 0; sym < codes; sym++) {
+    if (lens[lens_index + sym] !== 0) {
+      work[offs[lens[lens_index + sym]]++] = sym;
+    }
+  }
+
+  /*
+   Create and fill in decoding tables.  In this loop, the table being
+   filled is at next and has curr index bits.  The code being used is huff
+   with length len.  That code is converted to an index by dropping drop
+   bits off of the bottom.  For codes where len is less than drop + curr,
+   those top drop + curr - len bits are incremented through all values to
+   fill the table with replicated entries.
+
+   root is the number of index bits for the root table.  When len exceeds
+   root, sub-tables are created pointed to by the root entry with an index
+   of the low root bits of huff.  This is saved in low to check for when a
+   new sub-table should be started.  drop is zero when the root table is
+   being filled, and drop is root when sub-tables are being filled.
+
+   When a new sub-table is needed, it is necessary to look ahead in the
+   code lengths to determine what size sub-table is needed.  The length
+   counts are used for this, and so count[] is decremented as codes are
+   entered in the tables.
+
+   used keeps track of how many table entries have been allocated from the
+   provided *table space.  It is checked for LENS and DIST tables against
+   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
+   the initial root table size constants.  See the comments in inftrees.h
+   for more information.
+
+   sym increments through all symbols, and the loop terminates when
+   all codes of length max, i.e. all codes, have been processed.  This
+   routine permits incomplete codes, so another loop after this one fills
+   in the rest of the decoding tables with invalid code markers.
+   */
+
+  /* set up for code type */
+  // poor man optimization - use if-else instead of switch,
+  // to avoid deopts in old v8
+  if (type === CODES) {
+      base = extra = work;    /* dummy value--not used */
+      end = 19;
+  } else if (type === LENS) {
+      base = lbase;
+      base_index -= 257;
+      extra = lext;
+      extra_index -= 257;
+      end = 256;
+  } else {                    /* DISTS */
+      base = dbase;
+      extra = dext;
+      end = -1;
+  }
+
+  /* initialize opts for loop */
+  huff = 0;                   /* starting code */
+  sym = 0;                    /* starting code symbol */
+  len = min;                  /* starting code length */
+  next = table_index;              /* current table to fill in */
+  curr = root;                /* current table index bits */
+  drop = 0;                   /* current bits to drop from code for index */
+  low = -1;                   /* trigger new sub-table when len > root */
+  used = 1 << root;          /* use root table entries */
+  mask = used - 1;            /* mask for comparing low */
+
+  /* check available table space */
+  if ((type === LENS && used > ENOUGH_LENS) ||
+    (type === DISTS && used > ENOUGH_DISTS)) {
+    return 1;
+  }
+
+  var i=0;
+  /* process all codes and make table entries */
+  for (;;) {
+    i++;
+    /* create table entry */
+    here_bits = len - drop;
+    if (work[sym] < end) {
+      here_op = 0;
+      here_val = work[sym];
+    }
+    else if (work[sym] > end) {
+      here_op = extra[extra_index + work[sym]];
+      here_val = base[base_index + work[sym]];
+    }
+    else {
+      here_op = 32 + 64;         /* end of block */
+      here_val = 0;
+    }
+
+    /* replicate for those indices with low len bits equal to huff */
+    incr = 1 << (len - drop);
+    fill = 1 << curr;
+    min = fill;                 /* save offset to next table */
+    do {
+      fill -= incr;
+      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
+    } while (fill !== 0);
+
+    /* backwards increment the len-bit code huff */
+    incr = 1 << (len - 1);
+    while (huff & incr) {
+      incr >>= 1;
+    }
+    if (incr !== 0) {
+      huff &= incr - 1;
+      huff += incr;
+    } else {
+      huff = 0;
+    }
+
+    /* go to next symbol, update count, len */
+    sym++;
+    if (--count[len] === 0) {
+      if (len === max) { break; }
+      len = lens[lens_index + work[sym]];
+    }
+
+    /* create new sub-table if needed */
+    if (len > root && (huff & mask) !== low) {
+      /* if first time, transition to sub-tables */
+      if (drop === 0) {
+        drop = root;
+      }
+
+      /* increment past last table */
+      next += min;            /* here min is 1 << curr */
+
+      /* determine length of next table */
+      curr = len - drop;
+      left = 1 << curr;
+      while (curr + drop < max) {
+        left -= count[curr + drop];
+        if (left <= 0) { break; }
+        curr++;
+        left <<= 1;
+      }
+
+      /* check for enough space */
+      used += 1 << curr;
+      if ((type === LENS && used > ENOUGH_LENS) ||
+        (type === DISTS && used > ENOUGH_DISTS)) {
+        return 1;
+      }
+
+      /* point entry in root table to sub-table */
+      low = huff & mask;
+      /*table.op[low] = curr;
+      table.bits[low] = root;
+      table.val[low] = next - opts.table_index;*/
+      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
+    }
+  }
+
+  /* fill in remaining table entry if code is incomplete (guaranteed to have
+   at most one remaining entry, since if the code is incomplete, the
+   maximum code length that was allowed to get this far is one bit) */
+  if (huff !== 0) {
+    //table.op[next + huff] = 64;            /* invalid code marker */
+    //table.bits[next + huff] = len - drop;
+    //table.val[next + huff] = 0;
+    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
+  }
+
+  /* set return parameters */
+  //opts.table_index += used;
+  opts.bits = root;
+  return 0;
+};
+
+},{"../utils/common":27}],37:[function(_dereq_,module,exports){
+'use strict';
+
+module.exports = {
+  '2':    'need dictionary',     /* Z_NEED_DICT       2  */
+  '1':    'stream end',          /* Z_STREAM_END      1  */
+  '0':    '',                    /* Z_OK              0  */
+  '-1':   'file error',          /* Z_ERRNO         (-1) */
+  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */
+  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */
+  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */
+  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */
+  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */
+};
+},{}],38:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+//var Z_FILTERED          = 1;
+//var Z_HUFFMAN_ONLY      = 2;
+//var Z_RLE               = 3;
+var Z_FIXED               = 4;
+//var Z_DEFAULT_STRATEGY  = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+var Z_BINARY              = 0;
+var Z_TEXT                = 1;
+//var Z_ASCII             = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+/*============================================================================*/
+
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+// From zutil.h
+
+var STORED_BLOCK = 0;
+var STATIC_TREES = 1;
+var DYN_TREES    = 2;
+/* The three kinds of block type */
+
+var MIN_MATCH    = 3;
+var MAX_MATCH    = 258;
+/* The minimum and maximum match lengths */
+
+// From deflate.h
+/* ===========================================================================
+ * Internal compression state.
+ */
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+
+var D_CODES       = 30;
+/* number of distance codes */
+
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+
+var HEAP_SIZE     = 2*L_CODES + 1;
+/* maximum heap size */
+
+var MAX_BITS      = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var Buf_size      = 16;
+/* size of bit buffer in bi_buf */
+
+
+/* ===========================================================================
+ * Constants
+ */
+
+var MAX_BL_BITS = 7;
+/* Bit length codes must not exceed MAX_BL_BITS bits */
+
+var END_BLOCK   = 256;
+/* end of block literal code */
+
+var REP_3_6     = 16;
+/* repeat previous bit length 3-6 times (2 bits of repeat count) */
+
+var REPZ_3_10   = 17;
+/* repeat a zero length 3-10 times  (3 bits of repeat count) */
+
+var REPZ_11_138 = 18;
+/* repeat a zero length 11-138 times  (7 bits of repeat count) */
+
+var extra_lbits =   /* extra bits for each length code */
+  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];
+
+var extra_dbits =   /* extra bits for each distance code */
+  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];
+
+var extra_blbits =  /* extra bits for each bit length code */
+  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];
+
+var bl_order =
+  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
+/* The lengths of the bit length codes are sent in order of decreasing
+ * probability, to avoid transmitting the lengths for unused bit length codes.
+ */
+
+/* ===========================================================================
+ * Local data. These are initialized only once.
+ */
+
+// We pre-fill arrays with 0 to avoid uninitialized gaps
+
+var DIST_CODE_LEN = 512; /* see definition of array dist_code below */
+
+// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1
+var static_ltree  = new Array((L_CODES+2) * 2);
+zero(static_ltree);
+/* The static literal tree. Since the bit lengths are imposed, there is no
+ * need for the L_CODES extra codes used during heap construction. However
+ * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
+ * below).
+ */
+
+var static_dtree  = new Array(D_CODES * 2);
+zero(static_dtree);
+/* The static distance tree. (Actually a trivial tree since all codes use
+ * 5 bits.)
+ */
+
+var _dist_code    = new Array(DIST_CODE_LEN);
+zero(_dist_code);
+/* Distance codes. The first 256 values correspond to the distances
+ * 3 .. 258, the last 256 values correspond to the top 8 bits of
+ * the 15 bit distances.
+ */
+
+var _length_code  = new Array(MAX_MATCH-MIN_MATCH+1);
+zero(_length_code);
+/* length code for each normalized match length (0 == MIN_MATCH) */
+
+var base_length   = new Array(LENGTH_CODES);
+zero(base_length);
+/* First normalized length for each code (0 = MIN_MATCH) */
+
+var base_dist     = new Array(D_CODES);
+zero(base_dist);
+/* First normalized distance for each code (0 = distance of 1) */
+
+
+var StaticTreeDesc = function (static_tree, extra_bits, extra_base, elems, max_length) {
+
+  this.static_tree  = static_tree;  /* static tree or NULL */
+  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
+  this.extra_base   = extra_base;   /* base index for extra_bits */
+  this.elems        = elems;        /* max number of elements in the tree */
+  this.max_length   = max_length;   /* max bit length for the codes */
+
+  // show if `static_tree` has data or dummy - needed for monomorphic objects
+  this.has_stree    = static_tree && static_tree.length;
+};
+
+
+var static_l_desc;
+var static_d_desc;
+var static_bl_desc;
+
+
+var TreeDesc = function(dyn_tree, stat_desc) {
+  this.dyn_tree = dyn_tree;     /* the dynamic tree */
+  this.max_code = 0;            /* largest code with non zero frequency */
+  this.stat_desc = stat_desc;   /* the corresponding static tree */
+};
+
+
+
+function d_code(dist) {
+  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
+}
+
+
+/* ===========================================================================
+ * Output a short LSB first on the stream.
+ * IN assertion: there is enough room in pendingBuf.
+ */
+function put_short (s, w) {
+//    put_byte(s, (uch)((w) & 0xff));
+//    put_byte(s, (uch)((ush)(w) >> 8));
+  s.pending_buf[s.pending++] = (w) & 0xff;
+  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
+}
+
+
+/* ===========================================================================
+ * Send a value on a given number of bits.
+ * IN assertion: length <= 16 and value fits in length bits.
+ */
+function send_bits(s, value, length) {
+  if (s.bi_valid > (Buf_size - length)) {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    put_short(s, s.bi_buf);
+    s.bi_buf = value >> (Buf_size - s.bi_valid);
+    s.bi_valid += length - Buf_size;
+  } else {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    s.bi_valid += length;
+  }
+}
+
+
+function send_code(s, c, tree) {
+  send_bits(s, tree[c*2]/*.Code*/, tree[c*2 + 1]/*.Len*/);
+}
+
+
+/* ===========================================================================
+ * Reverse the first len bits of a code, using straightforward code (a faster
+ * method would use a table)
+ * IN assertion: 1 <= len <= 15
+ */
+function bi_reverse(code, len) {
+  var res = 0;
+  do {
+    res |= code & 1;
+    code >>>= 1;
+    res <<= 1;
+  } while (--len > 0);
+  return res >>> 1;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer, keeping at most 7 bits in it.
+ */
+function bi_flush(s) {
+  if (s.bi_valid === 16) {
+    put_short(s, s.bi_buf);
+    s.bi_buf = 0;
+    s.bi_valid = 0;
+
+  } else if (s.bi_valid >= 8) {
+    s.pending_buf[s.pending++] = s.bi_buf & 0xff;
+    s.bi_buf >>= 8;
+    s.bi_valid -= 8;
+  }
+}
+
+
+/* ===========================================================================
+ * Compute the optimal bit lengths for a tree and update the total bit length
+ * for the current block.
+ * IN assertion: the fields freq and dad are set, heap[heap_max] and
+ *    above are the tree nodes sorted by increasing frequency.
+ * OUT assertions: the field len is set to the optimal bit length, the
+ *     array bl_count contains the frequencies for each bit length.
+ *     The length opt_len is updated; static_len is also updated if stree is
+ *     not null.
+ */
+function gen_bitlen(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc;    /* the tree descriptor */
+{
+  var tree            = desc.dyn_tree;
+  var max_code        = desc.max_code;
+  var stree           = desc.stat_desc.static_tree;
+  var has_stree       = desc.stat_desc.has_stree;
+  var extra           = desc.stat_desc.extra_bits;
+  var base            = desc.stat_desc.extra_base;
+  var max_length      = desc.stat_desc.max_length;
+  var h;              /* heap index */
+  var n, m;           /* iterate over the tree elements */
+  var bits;           /* bit length */
+  var xbits;          /* extra bits */
+  var f;              /* frequency */
+  var overflow = 0;   /* number of elements with bit length too large */
+
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    s.bl_count[bits] = 0;
+  }
+
+  /* In a first pass, compute the optimal bit lengths (which may
+   * overflow in the case of the bit length tree).
+   */
+  tree[s.heap[s.heap_max]*2 + 1]/*.Len*/ = 0; /* root of the heap */
+
+  for (h = s.heap_max+1; h < HEAP_SIZE; h++) {
+    n = s.heap[h];
+    bits = tree[tree[n*2 +1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
+    if (bits > max_length) {
+      bits = max_length;
+      overflow++;
+    }
+    tree[n*2 + 1]/*.Len*/ = bits;
+    /* We overwrite tree[n].Dad which is no longer needed */
+
+    if (n > max_code) { continue; } /* not a leaf node */
+
+    s.bl_count[bits]++;
+    xbits = 0;
+    if (n >= base) {
+      xbits = extra[n-base];
+    }
+    f = tree[n * 2]/*.Freq*/;
+    s.opt_len += f * (bits + xbits);
+    if (has_stree) {
+      s.static_len += f * (stree[n*2 + 1]/*.Len*/ + xbits);
+    }
+  }
+  if (overflow === 0) { return; }
+
+  // Trace((stderr,"\nbit length overflow\n"));
+  /* This happens for example on obj2 and pic of the Calgary corpus */
+
+  /* Find the first bit length which could increase: */
+  do {
+    bits = max_length-1;
+    while (s.bl_count[bits] === 0) { bits--; }
+    s.bl_count[bits]--;      /* move one leaf down the tree */
+    s.bl_count[bits+1] += 2; /* move one overflow item as its brother */
+    s.bl_count[max_length]--;
+    /* The brother of the overflow item also moves one step up,
+     * but this does not affect bl_count[max_length]
+     */
+    overflow -= 2;
+  } while (overflow > 0);
+
+  /* Now recompute all bit lengths, scanning in increasing frequency.
+   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
+   * lengths instead of fixing only the wrong ones. This idea is taken
+   * from 'ar' written by Haruhiko Okumura.)
+   */
+  for (bits = max_length; bits !== 0; bits--) {
+    n = s.bl_count[bits];
+    while (n !== 0) {
+      m = s.heap[--h];
+      if (m > max_code) { continue; }
+      if (tree[m*2 + 1]/*.Len*/ !== bits) {
+        // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
+        s.opt_len += (bits - tree[m*2 + 1]/*.Len*/)*tree[m*2]/*.Freq*/;
+        tree[m*2 + 1]/*.Len*/ = bits;
+      }
+      n--;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Generate the codes for a given tree and bit counts (which need not be
+ * optimal).
+ * IN assertion: the array bl_count contains the bit length statistics for
+ * the given tree and the field len is set for all tree elements.
+ * OUT assertion: the field code is set for all tree elements of non
+ *     zero code length.
+ */
+function gen_codes(tree, max_code, bl_count)
+//    ct_data *tree;             /* the tree to decorate */
+//    int max_code;              /* largest code with non zero frequency */
+//    ushf *bl_count;            /* number of codes at each bit length */
+{
+  var next_code = new Array(MAX_BITS+1); /* next code value for each bit length */
+  var code = 0;              /* running code value */
+  var bits;                  /* bit index */
+  var n;                     /* code index */
+
+  /* The distribution counts are first used to generate the code values
+   * without bit reversal.
+   */
+  for (bits = 1; bits <= MAX_BITS; bits++) {
+    next_code[bits] = code = (code + bl_count[bits-1]) << 1;
+  }
+  /* Check that the bit counts in bl_count are consistent. The last code
+   * must be all ones.
+   */
+  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
+  //        "inconsistent bit counts");
+  //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
+
+  for (n = 0;  n <= max_code; n++) {
+    var len = tree[n*2 + 1]/*.Len*/;
+    if (len === 0) { continue; }
+    /* Now reverse the bits */
+    tree[n*2]/*.Code*/ = bi_reverse(next_code[len]++, len);
+
+    //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
+    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
+  }
+}
+
+
+/* ===========================================================================
+ * Initialize the various 'constant' tables.
+ */
+function tr_static_init() {
+  var n;        /* iterates over tree elements */
+  var bits;     /* bit counter */
+  var length;   /* length value */
+  var code;     /* code value */
+  var dist;     /* distance index */
+  var bl_count = new Array(MAX_BITS+1);
+  /* number of codes at each bit length for an optimal tree */
+
+  // do check in _tr_init()
+  //if (static_init_done) return;
+
+  /* For some embedded targets, global variables are not initialized: */
+/*#ifdef NO_INIT_GLOBAL_POINTERS
+  static_l_desc.static_tree = static_ltree;
+  static_l_desc.extra_bits = extra_lbits;
+  static_d_desc.static_tree = static_dtree;
+  static_d_desc.extra_bits = extra_dbits;
+  static_bl_desc.extra_bits = extra_blbits;
+#endif*/
+
+  /* Initialize the mapping length (0..255) -> length code (0..28) */
+  length = 0;
+  for (code = 0; code < LENGTH_CODES-1; code++) {
+    base_length[code] = length;
+    for (n = 0; n < (1<<extra_lbits[code]); n++) {
+      _length_code[length++] = code;
+    }
+  }
+  //Assert (length == 256, "tr_static_init: length != 256");
+  /* Note that the length 255 (match length 258) can be represented
+   * in two different ways: code 284 + 5 bits or code 285, so we
+   * overwrite length_code[255] to use the best encoding:
+   */
+  _length_code[length-1] = code;
+
+  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
+  dist = 0;
+  for (code = 0 ; code < 16; code++) {
+    base_dist[code] = dist;
+    for (n = 0; n < (1<<extra_dbits[code]); n++) {
+      _dist_code[dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: dist != 256");
+  dist >>= 7; /* from now on, all distances are divided by 128 */
+  for ( ; code < D_CODES; code++) {
+    base_dist[code] = dist << 7;
+    for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
+      _dist_code[256 + dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: 256+dist != 512");
+
+  /* Construct the codes of the static literal tree */
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    bl_count[bits] = 0;
+  }
+
+  n = 0;
+  while (n <= 143) {
+    static_ltree[n*2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  while (n <= 255) {
+    static_ltree[n*2 + 1]/*.Len*/ = 9;
+    n++;
+    bl_count[9]++;
+  }
+  while (n <= 279) {
+    static_ltree[n*2 + 1]/*.Len*/ = 7;
+    n++;
+    bl_count[7]++;
+  }
+  while (n <= 287) {
+    static_ltree[n*2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  /* Codes 286 and 287 do not exist, but we must include them in the
+   * tree construction to get a canonical Huffman tree (longest code
+   * all ones)
+   */
+  gen_codes(static_ltree, L_CODES+1, bl_count);
+
+  /* The static distance tree is trivial: */
+  for (n = 0; n < D_CODES; n++) {
+    static_dtree[n*2 + 1]/*.Len*/ = 5;
+    static_dtree[n*2]/*.Code*/ = bi_reverse(n, 5);
+  }
+
+  // Now data ready and we can init static trees
+  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS);
+  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
+  static_bl_desc =new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);
+
+  //static_init_done = true;
+}
+
+
+/* ===========================================================================
+ * Initialize a new block.
+ */
+function init_block(s) {
+  var n; /* iterates over tree elements */
+
+  /* Initialize the trees. */
+  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n*2]/*.Freq*/ = 0; }
+  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n*2]/*.Freq*/ = 0; }
+  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n*2]/*.Freq*/ = 0; }
+
+  s.dyn_ltree[END_BLOCK*2]/*.Freq*/ = 1;
+  s.opt_len = s.static_len = 0;
+  s.last_lit = s.matches = 0;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer and align the output on a byte boundary
+ */
+function bi_windup(s)
+{
+  if (s.bi_valid > 8) {
+    put_short(s, s.bi_buf);
+  } else if (s.bi_valid > 0) {
+    //put_byte(s, (Byte)s->bi_buf);
+    s.pending_buf[s.pending++] = s.bi_buf;
+  }
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+}
+
+/* ===========================================================================
+ * Copy a stored block, storing first the length and its
+ * one's complement if requested.
+ */
+function copy_block(s, buf, len, header)
+//DeflateState *s;
+//charf    *buf;    /* the input data */
+//unsigned len;     /* its length */
+//int      header;  /* true if block header must be written */
+{
+  bi_windup(s);        /* align on byte boundary */
+
+  if (header) {
+    put_short(s, len);
+    put_short(s, ~len);
+  }
+//  while (len--) {
+//    put_byte(s, *buf++);
+//  }
+  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
+  s.pending += len;
+}
+
+/* ===========================================================================
+ * Compares to subtrees, using the tree depth as tie breaker when
+ * the subtrees have equal frequency. This minimizes the worst case length.
+ */
+function smaller(tree, n, m, depth) {
+  var _n2 = n*2;
+  var _m2 = m*2;
+  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
+         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
+}
+
+/* ===========================================================================
+ * Restore the heap property by moving down the tree starting at node k,
+ * exchanging a node with the smallest of its two sons if necessary, stopping
+ * when the heap property is re-established (each father smaller than its
+ * two sons).
+ */
+function pqdownheap(s, tree, k)
+//    deflate_state *s;
+//    ct_data *tree;  /* the tree to restore */
+//    int k;               /* node to move down */
+{
+  var v = s.heap[k];
+  var j = k << 1;  /* left son of k */
+  while (j <= s.heap_len) {
+    /* Set j to the smallest of the two sons: */
+    if (j < s.heap_len &&
+      smaller(tree, s.heap[j+1], s.heap[j], s.depth)) {
+      j++;
+    }
+    /* Exit if v is smaller than both sons */
+    if (smaller(tree, v, s.heap[j], s.depth)) { break; }
+
+    /* Exchange v with the smallest son */
+    s.heap[k] = s.heap[j];
+    k = j;
+
+    /* And continue down the tree, setting j to the left son of k */
+    j <<= 1;
+  }
+  s.heap[k] = v;
+}
+
+
+// inlined manually
+// var SMALLEST = 1;
+
+/* ===========================================================================
+ * Send the block data compressed using the given Huffman trees
+ */
+function compress_block(s, ltree, dtree)
+//    deflate_state *s;
+//    const ct_data *ltree; /* literal tree */
+//    const ct_data *dtree; /* distance tree */
+{
+  var dist;           /* distance of matched string */
+  var lc;             /* match length or unmatched char (if dist == 0) */
+  var lx = 0;         /* running index in l_buf */
+  var code;           /* the code to send */
+  var extra;          /* number of extra bits to send */
+
+  if (s.last_lit !== 0) {
+    do {
+      dist = (s.pending_buf[s.d_buf + lx*2] << 8) | (s.pending_buf[s.d_buf + lx*2 + 1]);
+      lc = s.pending_buf[s.l_buf + lx];
+      lx++;
+
+      if (dist === 0) {
+        send_code(s, lc, ltree); /* send a literal byte */
+        //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
+      } else {
+        /* Here, lc is the match length - MIN_MATCH */
+        code = _length_code[lc];
+        send_code(s, code+LITERALS+1, ltree); /* send the length code */
+        extra = extra_lbits[code];
+        if (extra !== 0) {
+          lc -= base_length[code];
+          send_bits(s, lc, extra);       /* send the extra length bits */
+        }
+        dist--; /* dist is now the match distance - 1 */
+        code = d_code(dist);
+        //Assert (code < D_CODES, "bad d_code");
+
+        send_code(s, code, dtree);       /* send the distance code */
+        extra = extra_dbits[code];
+        if (extra !== 0) {
+          dist -= base_dist[code];
+          send_bits(s, dist, extra);   /* send the extra distance bits */
+        }
+      } /* literal or match pair ? */
+
+      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
+      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
+      //       "pendingBuf overflow");
+
+    } while (lx < s.last_lit);
+  }
+
+  send_code(s, END_BLOCK, ltree);
+}
+
+
+/* ===========================================================================
+ * Construct one Huffman tree and assigns the code bit strings and lengths.
+ * Update the total bit length for the current block.
+ * IN assertion: the field freq is set for all tree elements.
+ * OUT assertions: the fields len and code are set to the optimal bit length
+ *     and corresponding code. The length opt_len is updated; static_len is
+ *     also updated if stree is not null. The field max_code is set.
+ */
+function build_tree(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc; /* the tree descriptor */
+{
+  var tree     = desc.dyn_tree;
+  var stree    = desc.stat_desc.static_tree;
+  var has_stree = desc.stat_desc.has_stree;
+  var elems    = desc.stat_desc.elems;
+  var n, m;          /* iterate over heap elements */
+  var max_code = -1; /* largest code with non zero frequency */
+  var node;          /* new node being created */
+
+  /* Construct the initial heap, with least frequent element in
+   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
+   * heap[0] is not used.
+   */
+  s.heap_len = 0;
+  s.heap_max = HEAP_SIZE;
+
+  for (n = 0; n < elems; n++) {
+    if (tree[n * 2]/*.Freq*/ !== 0) {
+      s.heap[++s.heap_len] = max_code = n;
+      s.depth[n] = 0;
+
+    } else {
+      tree[n*2 + 1]/*.Len*/ = 0;
+    }
+  }
+
+  /* The pkzip format requires that at least one distance code exists,
+   * and that at least one bit should be sent even if there is only one
+   * possible code. So to avoid special checks later on we force at least
+   * two codes of non zero frequency.
+   */
+  while (s.heap_len < 2) {
+    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
+    tree[node * 2]/*.Freq*/ = 1;
+    s.depth[node] = 0;
+    s.opt_len--;
+
+    if (has_stree) {
+      s.static_len -= stree[node*2 + 1]/*.Len*/;
+    }
+    /* node is 0 or 1 so it does not have extra bits */
+  }
+  desc.max_code = max_code;
+
+  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
+   * establish sub-heaps of increasing lengths:
+   */
+  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
+
+  /* Construct the Huffman tree by repeatedly combining the least two
+   * frequent nodes.
+   */
+  node = elems;              /* next internal node of the tree */
+  do {
+    //pqremove(s, tree, n);  /* n = node of least frequency */
+    /*** pqremove ***/
+    n = s.heap[1/*SMALLEST*/];
+    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+    /***/
+
+    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
+
+    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
+    s.heap[--s.heap_max] = m;
+
+    /* Create a new node father of n and m */
+    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
+    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
+    tree[n*2 + 1]/*.Dad*/ = tree[m*2 + 1]/*.Dad*/ = node;
+
+    /* and insert the new node in the heap */
+    s.heap[1/*SMALLEST*/] = node++;
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+
+  } while (s.heap_len >= 2);
+
+  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
+
+  /* At this point, the fields freq and dad are set. We can now
+   * generate the bit lengths.
+   */
+  gen_bitlen(s, desc);
+
+  /* The field len is now set, we can generate the bit codes */
+  gen_codes(tree, max_code, s.bl_count);
+}
+
+
+/* ===========================================================================
+ * Scan a literal or distance tree to determine the frequencies of the codes
+ * in the bit length tree.
+ */
+function scan_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree;   /* the tree to be scanned */
+//    int max_code;    /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+  tree[(max_code+1)*2 + 1]/*.Len*/ = 0xffff; /* guard */
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n+1)*2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      s.bl_tree[curlen * 2]/*.Freq*/ += count;
+
+    } else if (curlen !== 0) {
+
+      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
+      s.bl_tree[REP_3_6*2]/*.Freq*/++;
+
+    } else if (count <= 10) {
+      s.bl_tree[REPZ_3_10*2]/*.Freq*/++;
+
+    } else {
+      s.bl_tree[REPZ_11_138*2]/*.Freq*/++;
+    }
+
+    count = 0;
+    prevlen = curlen;
+
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Send a literal or distance tree in compressed form, using the codes in
+ * bl_tree.
+ */
+function send_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree; /* the tree to be scanned */
+//    int max_code;       /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  /* tree[max_code+1].Len = -1; */  /* guard already set */
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n+1)*2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
+
+    } else if (curlen !== 0) {
+      if (curlen !== prevlen) {
+        send_code(s, curlen, s.bl_tree);
+        count--;
+      }
+      //Assert(count >= 3 && count <= 6, " 3_6?");
+      send_code(s, REP_3_6, s.bl_tree);
+      send_bits(s, count-3, 2);
+
+    } else if (count <= 10) {
+      send_code(s, REPZ_3_10, s.bl_tree);
+      send_bits(s, count-3, 3);
+
+    } else {
+      send_code(s, REPZ_11_138, s.bl_tree);
+      send_bits(s, count-11, 7);
+    }
+
+    count = 0;
+    prevlen = curlen;
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Construct the Huffman tree for the bit lengths and return the index in
+ * bl_order of the last bit length code to send.
+ */
+function build_bl_tree(s) {
+  var max_blindex;  /* index of last bit length code of non zero freq */
+
+  /* Determine the bit length frequencies for literal and distance trees */
+  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
+  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
+
+  /* Build the bit length tree: */
+  build_tree(s, s.bl_desc);
+  /* opt_len now includes the length of the tree representations, except
+   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
+   */
+
+  /* Determine the number of bit length codes to send. The pkzip format
+   * requires that at least 4 bit length codes be sent. (appnote.txt says
+   * 3 but the actual value used is 4.)
+   */
+  for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {
+    if (s.bl_tree[bl_order[max_blindex]*2 + 1]/*.Len*/ !== 0) {
+      break;
+    }
+  }
+  /* Update opt_len to include the bit length tree and counts */
+  s.opt_len += 3*(max_blindex+1) + 5+5+4;
+  //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
+  //        s->opt_len, s->static_len));
+
+  return max_blindex;
+}
+
+
+/* ===========================================================================
+ * Send the header for a block using dynamic Huffman trees: the counts, the
+ * lengths of the bit length codes, the literal tree and the distance tree.
+ * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
+ */
+function send_all_trees(s, lcodes, dcodes, blcodes)
+//    deflate_state *s;
+//    int lcodes, dcodes, blcodes; /* number of codes for each tree */
+{
+  var rank;                    /* index in bl_order */
+
+  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
+  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
+  //        "too many codes");
+  //Tracev((stderr, "\nbl counts: "));
+  send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
+  send_bits(s, dcodes-1,   5);
+  send_bits(s, blcodes-4,  4); /* not -3 as stated in appnote.txt */
+  for (rank = 0; rank < blcodes; rank++) {
+    //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
+    send_bits(s, s.bl_tree[bl_order[rank]*2 + 1]/*.Len*/, 3);
+  }
+  //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_ltree, lcodes-1); /* literal tree */
+  //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_dtree, dcodes-1); /* distance tree */
+  //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
+}
+
+
+/* ===========================================================================
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
+ * - TEXT if the two conditions below are satisfied:
+ *    a) There are no non-portable control characters belonging to the
+ *       "black list" (0..6, 14..25, 28..31).
+ *    b) There is at least one printable character belonging to the
+ *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * - BINARY otherwise.
+ * - The following partially-portable control characters form a
+ *   "gray list" that is ignored in this detection algorithm:
+ *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
+ * IN assertion: the fields Freq of dyn_ltree are set.
+ */
+function detect_data_type(s) {
+  /* black_mask is the bit mask of black-listed bytes
+   * set bits 0..6, 14..25, and 28..31
+   * 0xf3ffc07f = binary 11110011111111111100000001111111
+   */
+  var black_mask = 0xf3ffc07f;
+  var n;
+
+  /* Check for non-textual ("black-listed") bytes. */
+  for (n = 0; n <= 31; n++, black_mask >>>= 1) {
+    if ((black_mask & 1) && (s.dyn_ltree[n*2]/*.Freq*/ !== 0)) {
+      return Z_BINARY;
+    }
+  }
+
+  /* Check for textual ("white-listed") bytes. */
+  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
+      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
+    return Z_TEXT;
+  }
+  for (n = 32; n < LITERALS; n++) {
+    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
+      return Z_TEXT;
+    }
+  }
+
+  /* There are no "black-listed" or "white-listed" bytes:
+   * this stream either is empty or has tolerated ("gray-listed") bytes only.
+   */
+  return Z_BINARY;
+}
+
+
+var static_init_done = false;
+
+/* ===========================================================================
+ * Initialize the tree data structures for a new zlib stream.
+ */
+function _tr_init(s)
+{
+
+  if (!static_init_done) {
+    tr_static_init();
+    static_init_done = true;
+  }
+
+  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
+  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
+  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
+
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+
+  /* Initialize the first block of the first file: */
+  init_block(s);
+}
+
+
+/* ===========================================================================
+ * Send a stored block
+ */
+function _tr_stored_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  send_bits(s, (STORED_BLOCK<<1)+(last ? 1 : 0), 3);    /* send block type */
+  copy_block(s, buf, stored_len, true); /* with header */
+}
+
+
+/* ===========================================================================
+ * Send one empty static block to give enough lookahead for inflate.
+ * This takes 10 bits, of which 7 may remain in the bit buffer.
+ */
+function _tr_align(s) {
+  send_bits(s, STATIC_TREES<<1, 3);
+  send_code(s, END_BLOCK, static_ltree);
+  bi_flush(s);
+}
+
+
+/* ===========================================================================
+ * Determine the best encoding for the current block: dynamic trees, static
+ * trees or store, and output the encoded block to the zip file.
+ */
+function _tr_flush_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block, or NULL if too old */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
+  var max_blindex = 0;        /* index of last bit length code of non zero freq */
+
+  /* Build the Huffman trees unless a stored block is forced */
+  if (s.level > 0) {
+
+    /* Check if the file is binary or text */
+    if (s.strm.data_type === Z_UNKNOWN) {
+      s.strm.data_type = detect_data_type(s);
+    }
+
+    /* Construct the literal and distance trees */
+    build_tree(s, s.l_desc);
+    // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+
+    build_tree(s, s.d_desc);
+    // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+    /* At this point, opt_len and static_len are the total bit lengths of
+     * the compressed block data, excluding the tree representations.
+     */
+
+    /* Build the bit length tree for the above two trees, and get the index
+     * in bl_order of the last bit length code to send.
+     */
+    max_blindex = build_bl_tree(s);
+
+    /* Determine the best encoding. Compute the block lengths in bytes. */
+    opt_lenb = (s.opt_len+3+7) >>> 3;
+    static_lenb = (s.static_len+3+7) >>> 3;
+
+    // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
+    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
+    //        s->last_lit));
+
+    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
+
+  } else {
+    // Assert(buf != (char*)0, "lost buf");
+    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
+  }
+
+  if ((stored_len+4 <= opt_lenb) && (buf !== -1)) {
+    /* 4: two words for the lengths */
+
+    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
+     * Otherwise we can't have processed more than WSIZE input bytes since
+     * the last block flush, because compression would have been
+     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
+     * transform a block into a stored block.
+     */
+    _tr_stored_block(s, buf, stored_len, last);
+
+  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
+
+    send_bits(s, (STATIC_TREES<<1) + (last ? 1 : 0), 3);
+    compress_block(s, static_ltree, static_dtree);
+
+  } else {
+    send_bits(s, (DYN_TREES<<1) + (last ? 1 : 0), 3);
+    send_all_trees(s, s.l_desc.max_code+1, s.d_desc.max_code+1, max_blindex+1);
+    compress_block(s, s.dyn_ltree, s.dyn_dtree);
+  }
+  // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
+  /* The above check is made mod 2^32, for files larger than 512 MB
+   * and uLong implemented on 32 bits.
+   */
+  init_block(s);
+
+  if (last) {
+    bi_windup(s);
+  }
+  // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
+  //       s->compressed_len-7*last));
+}
+
+/* ===========================================================================
+ * Save the match info and tally the frequency counts. Return true if
+ * the current block must be flushed.
+ */
+function _tr_tally(s, dist, lc)
+//    deflate_state *s;
+//    unsigned dist;  /* distance of matched string */
+//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
+{
+  //var out_length, in_length, dcode;
+
+  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
+  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;
+
+  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
+  s.last_lit++;
+
+  if (dist === 0) {
+    /* lc is the unmatched char */
+    s.dyn_ltree[lc*2]/*.Freq*/++;
+  } else {
+    s.matches++;
+    /* Here, lc is the match length - MIN_MATCH */
+    dist--;             /* dist = match distance - 1 */
+    //Assert((ush)dist < (ush)MAX_DIST(s) &&
+    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
+    //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
+
+    s.dyn_ltree[(_length_code[lc]+LITERALS+1) * 2]/*.Freq*/++;
+    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
+  }
+
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+
+//#ifdef TRUNCATE_BLOCK
+//  /* Try to guess if it is profitable to stop the current block here */
+//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
+//    /* Compute an upper bound for the compressed length */
+//    out_length = s.last_lit*8;
+//    in_length = s.strstart - s.block_start;
+//
+//    for (dcode = 0; dcode < D_CODES; dcode++) {
+//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
+//    }
+//    out_length >>>= 3;
+//    //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
+//    //       s->last_lit, in_length, out_length,
+//    //       100L - out_length*100L/in_length));
+//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
+//      return true;
+//    }
+//  }
+//#endif
+
+  return (s.last_lit === s.lit_bufsize-1);
+  /* We avoid equality with lit_bufsize because of wraparound at 64K
+   * on 16 bit machines and because stored blocks are restricted to
+   * 64K-1 bytes.
+   */
+}
+
+exports._tr_init  = _tr_init;
+exports._tr_stored_block = _tr_stored_block;
+exports._tr_flush_block  = _tr_flush_block;
+exports._tr_tally = _tr_tally;
+exports._tr_align = _tr_align;
+},{"../utils/common":27}],39:[function(_dereq_,module,exports){
+'use strict';
+
+
+function ZStream() {
+  /* next input byte */
+  this.input = null; // JS specific, because we have no pointers
+  this.next_in = 0;
+  /* number of bytes available at input */
+  this.avail_in = 0;
+  /* total number of input bytes read so far */
+  this.total_in = 0;
+  /* next output byte should be put there */
+  this.output = null; // JS specific, because we have no pointers
+  this.next_out = 0;
+  /* remaining free space at output */
+  this.avail_out = 0;
+  /* total number of bytes output so far */
+  this.total_out = 0;
+  /* last error message, NULL if no error */
+  this.msg = ''/*Z_NULL*/;
+  /* not visible by applications */
+  this.state = null;
+  /* best guess about the data type: binary or text */
+  this.data_type = 2/*Z_UNKNOWN*/;
+  /* adler32 value of the uncompressed data */
+  this.adler = 0;
+}
+
+module.exports = ZStream;
+},{}]},{},[9])
+(9)
+});
Index: public/vendors/dataTable/JSZip-2.5.0/jszip.min.js
===================================================================
--- public/vendors/dataTable/JSZip-2.5.0/jszip.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/JSZip-2.5.0/jszip.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,14 @@
+/*!
+
+JSZip - A Javascript class for generating and reading zip files
+<http://stuartk.com/jszip>
+
+(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com>
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
+
+JSZip uses the library pako released under the MIT license :
+https://github.com/nodeca/pako/blob/master/LICENSE
+*/
+!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";c.encode=function(a){for(var b,c,e,f,g,h,i,j="",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var e="string"!==c.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.compressionOptions=null,c.comment=null,c.unixPermissions=null,c.dosPermissions=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\x00",c.compress=function(a,b){return e.deflateRaw(a,{level:b.level||-1})},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,unixPermissions:h.unixPermissions,dosPermissions:h.dosPermissions,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{"./base64":1,"./zipEntries":22}],11:[function(a,b){(function(a){"use strict";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){"use strict";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a("./uint8ArrayReader");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./uint8ArrayReader":18}],13:[function(a,b){"use strict";var c=a("./support"),d=a("./utils"),e=a("./crc32"),f=a("./signature"),g=a("./defaults"),h=a("./base64"),i=a("./compressions"),j=a("./compressedObject"),k=a("./nodeBuffer"),l=a("./utf8"),m=a("./stringWriter"),n=a("./uint8ArrayWriter"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,"uint8array"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return"string"===e?!a.options.binary&&c.nodebuffer?k(b,"utf-8"):a.asBinary():b},q=function(a){var b=o(this);return null===b||"undefined"==typeof b?"":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?D.utf8decode(b):d.transformTo("string",b),a||this.options.binary||(b=d.transformTo("string",D.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this.unixPermissions=c.unixPermissions,this.dosPermissions=c.dosPermissions,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo("nodebuffer",a)},asUint8Array:function(){var a=p(this);return d.transformTo("uint8array",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d="";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&"undefined"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),"string"==typeof c.unixPermissions&&(c.unixPermissions=parseInt(c.unixPermissions,8)),c.unixPermissions&&16384&c.unixPermissions&&(c.dir=!0),c.dosPermissions&&16&c.dosPermissions&&(c.dir=!0),c.dir&&(a=x(a)),c.createFolders&&(e=w(a))&&y.call(this,e,!0),c.dir||null===b||"undefined"==typeof b)c.base64=!1,c.binary=!1,b=null,f=null;else if("string"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error("The data of '"+a+"' is in an unsupported format !");"arraybuffer"===f&&(b=d.transformTo("uint8array",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){"/"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf("/");return b>0?a.substring(0,b):""},x=function(a){return"/"!=a.slice(-1)&&(a+="/"),a},y=function(a,b){return b="undefined"!=typeof b?b:!1,a=x(a),this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},z=function(a,b,c){var f,g=new j;return a._data instanceof j?(g.uncompressedSize=a._data.uncompressedSize,g.crc32=a._data.crc32,0===g.uncompressedSize||a.dir?(b=i.STORE,g.compressedContent="",g.crc32=0):a._data.compressionMethod===b.magic?g.compressedContent=a._data.getCompressedContent():(f=a._data.getContent(),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c))):(f=p(a),(!f||0===f.length||a.dir)&&(b=i.STORE,f=""),g.uncompressedSize=f.length,g.crc32=e(f),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c)),g.compressedSize=g.compressedContent.length,g.compressionMethod=b.magic,g},A=function(a,b){var c=a;return a||(c=b?16893:33204),(65535&c)<<16},B=function(a){return 63&(a||0)},C=function(a,b,c,g,h){var i,j,k,m,n=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),o=b.comment||"",p=d.transformTo("string",l.utf8encode(o)),q=n.length!==b.name.length,r=p.length!==o.length,t=b.options,u="",v="",w="";k=b._initialMetadata.dir!==b.dir?b.dir:t.dir,m=b._initialMetadata.date!==b.date?b.date:t.date;var x=0,y=0;k&&(x|=16),"UNIX"===h?(y=798,x|=A(b.unixPermissions,k)):(y=20,x|=B(b.dosPermissions,k)),i=m.getHours(),i<<=6,i|=m.getMinutes(),i<<=5,i|=m.getSeconds()/2,j=m.getFullYear()-1980,j<<=4,j|=m.getMonth()+1,j<<=5,j|=m.getDate(),q&&(v=s(1,1)+s(e(n),4)+n,u+="up"+s(v.length,2)+v),r&&(w=s(1,1)+s(this.crc32(p),4)+p,u+="uc"+s(w.length,2)+w);var z="";z+="\n\x00",z+=q||r?"\x00\b":"\x00\x00",z+=c.compressionMethod,z+=s(i,2),z+=s(j,2),z+=s(c.crc32,4),z+=s(c.compressedSize,4),z+=s(c.uncompressedSize,4),z+=s(n.length,2),z+=s(u.length,2);var C=f.LOCAL_FILE_HEADER+z+n+u,D=f.CENTRAL_FILE_HEADER+s(y,2)+z+s(p.length,2)+"\x00\x00\x00\x00"+s(x,4)+s(g,4)+n+u+p;return{fileRecord:C,dirRecord:D,compressedObject:c}},D={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=y.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:"STORE",compressionOptions:null,type:"base64",platform:"DOS",comment:null,mimeType:"application/zip"}),d.checkSupport(a.type),("darwin"===a.platform||"freebsd"===a.platform||"linux"===a.platform||"sunos"===a.platform)&&(a.platform="UNIX"),"win32"===a.platform&&(a.platform="DOS");var b,c,e=[],g=0,j=0,k=d.transformTo("string",this.utf8encode(a.comment||this.comment||""));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+" is not a valid compression method !");var r=o.options.compressionOptions||a.compressionOptions||{},u=z.call(this,o,q,r),v=C.call(this,l,o,u,g,a.platform);g+=v.fileRecord.length+u.compressedSize,j+=v.dirRecord.length,e.push(v)}var w="";w=f.CENTRAL_DIRECTORY_END+"\x00\x00\x00\x00"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var x=a.type.toLowerCase();for(b="uint8array"===x||"arraybuffer"===x||"blob"===x||"nodebuffer"===x?new n(g+j+w.length):new m(g+j+w.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(w);var y=b.finalize();switch(a.type.toLowerCase()){case"uint8array":case"arraybuffer":case"nodebuffer":return d.transformTo(a.type.toLowerCase(),y);case"blob":return d.arrayBuffer2Blob(d.transformTo("arraybuffer",y),a.mimeType);case"base64":return a.base64?h.encode(y):y;default:return y}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo("string",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=D},{"./base64":1,"./compressedObject":2,"./compressions":3,"./crc32":4,"./defaults":6,"./nodeBuffer":11,"./signature":14,"./stringWriter":16,"./support":17,"./uint8ArrayWriter":19,"./utf8":20,"./utils":21}],14:[function(a,b,c){"use strict";c.LOCAL_FILE_HEADER="PK",c.CENTRAL_FILE_HEADER="PK",c.CENTRAL_DIRECTORY_END="PK",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",c.ZIP64_CENTRAL_DIRECTORY_END="PK",c.DATA_DESCRIPTOR="PK\b"},{}],15:[function(a,b){"use strict";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a("./dataReader"),e=a("./utils");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5,"./utils":21}],16:[function(a,b){"use strict";var c=a("./utils"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo("string",a),this.data.push(a)},finalize:function(){return this.data.join("")}},b.exports=d},{"./utils":21}],17:[function(a,b,c){(function(a){"use strict";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,c.nodebuffer="undefined"!=typeof a,c.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:"application/zip"}).size}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;f.append(b),c.blob=0===f.getBlob("application/zip").size}catch(d){c.blob=!1}}}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){"use strict";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a("./dataReader");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case"uint8array":String.fromCharCode.apply(null,new Uint8Array(0));break;case"nodebuffer":String.fromCharCode.apply(null,j(0))}}catch(i){h=!1}if(!h){for(var k="",l=0;l<a.length;l++)k+=String.fromCharCode(a[l]);return k}for(;e>g&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a("./support"),i=a("./compressions"),j=a("./nodeBuffer");c.string2binary=function(a){for(var b="",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a,b){c.checkSupport("blob"),b=b||"application/zip";try{return new Blob([a],{type:b})}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;return f.append(a),f.getBlob(b)}catch(d){throw new Error("Bug : can't construct the Blob.")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=""),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return"string"==typeof a?"string":"[object Array]"===Object.prototype.toString.call(a)?"array":h.nodebuffer&&j.test(a)?"nodebuffer":h.uint8array&&a instanceof Uint8Array?"uint8array":h.arraybuffer&&a instanceof ArrayBuffer?"arraybuffer":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+" is not supported by this browser")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d="";for(c=0;c<(a||"").length;c++)b=a.charCodeAt(c),d+="\\x"+(16>b?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8(),b.processAttributes()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a){var b=!0;try{this.reader.setIndex(0),this.checkSignature(h.LOCAL_FILE_HEADER),b=!1}catch(c){}throw new Error(b?"Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html":"Corrupted zip : can't find end of central directory")}if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader="string"!==b||j.uint8array?"nodebuffer"===b?new e(a):new f(g.transformTo("uint8array",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{"./nodeBufferReader":12,"./object":13,"./signature":14,"./stringReader":15,"./support":17,"./uint8ArrayReader":18,"./utils":21,"./zipEntry":23}],23:[function(a,b){"use strict";function c(a,b){this.options=a,this.loadOptions=b}var d=a("./stringReader"),e=a("./utils"),f=a("./compressedObject"),g=a("./object"),h=0,i=3;c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error("Bug : uncompressed data size mismatch");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error("Corrupted zip : compression "+e.pretty(this.compressionMethod)+" unknown (inner file : "+this.fileName+")");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo("string",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error("Corrupted zip : CRC32 mismatch")},readCentralPart:function(a){if(this.versionMadeBy=a.readInt(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var a=this.versionMadeBy>>8;this.dir=16&this.externalFileAttributes?!0:!1,a===h&&(this.dosPermissions=63&this.externalFileAttributes),a===i&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileName.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))
+}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{"./compressedObject":2,"./object":13,"./stringReader":15,"./utils":21}],24:[function(a,b){"use strict";var c=a("./lib/utils/common").assign,d=a("./lib/deflate"),e=a("./lib/inflate"),f=a("./lib/zlib/constants"),g={};c(g,d,e,f),b.exports=g},{"./lib/deflate":25,"./lib/inflate":26,"./lib/utils/common":27,"./lib/zlib/constants":30}],25:[function(a,b,c){"use strict";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a("./zlib/deflate.js"),h=a("./utils/common"),i=a("./utils/strings"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:""},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+hb-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<hb)););}while(a.lookahead<jb&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c)),a.match_length>=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function p(a,b){for(var c,d,e;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=hb-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===hb&&a.strstart-a.match_start>4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=hb-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sb}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sb}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ib){if(m(a),a.lookahead<=ib&&b===H)return sb;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+hb-1)/hb),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg="invalid literal/length code",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg="invalid distance code",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg="invalid distance too far back",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg="invalid distance too far back",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab=0,Bb=new r.Buf8(4),Cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xb=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=lb;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg="invalid window size",c.mode=lb;break}c.dmax=1<<wb,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg="unknown compression method",c.mode=lb;break}if(57344&c.flags){a.msg="unknown header flags set",c.mode=lb;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg="header crc mismatch",c.mode=lb;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg="invalid stored block lengths",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Cb[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid code lengths set",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have<c.nlen+c.ndist;){for(;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qb,n-=qb,0===c.have){a.msg="invalid bit length repeat",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid literal/lengths set",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg="invalid distances set",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);
+break}for(c.back=0;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(rb&&0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.lencode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg="invalid literal/length code",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<<c.distbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.distcode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg="invalid distance code",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg="incorrect data check",c.mode=lb;break}m=0,n=0}c.mode=jb;case jb:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg="incorrect length check",c.mode=lb;break}m=0,n=0}c.mode=kb;case kb:xb=D;break a;case lb:xb=G;break a;case mb:return H;case nb:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<lb&&(c.mode<ib||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=mb,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===bb||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xb===C&&(xb=I),xb)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a("../utils/common"),s=a("./adler32"),t=a("./crc32"),u=a("./inffast"),v=a("./inftrees"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,ab=19,bb=20,cb=21,db=22,eb=23,fb=24,gb=25,hb=26,ib=27,jb=28,kb=29,lb=30,mb=31,nb=32,ob=852,pb=592,qb=15,rb=qb,sb=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./inffast":34,"./inftrees":36}],36:[function(a,b){"use strict";var c=a("../utils/common"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<<ab[d];a++)gb[e++]=d;for(e>>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<<ab[d]-7;a++)gb[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=hb[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ib[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=ab[i],0!==j&&(d-=jb[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)});
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9 @@
+table.dataTable tbody th.focus,
+table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #337ab7;
+}
+
+div.dtk-focus-alt table.dataTable tbody th.focus,
+div.dtk-focus-alt table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #ff8b33;
+}
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody th.focus,table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #337ab7}div.dtk-focus-alt table.dataTable tbody th.focus,div.dtk-focus-alt table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #ff8b33}
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap4.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9 @@
+table.dataTable tbody th.focus,
+table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #0275d8;
+}
+
+div.dtk-focus-alt table.dataTable tbody th.focus,
+div.dtk-focus-alt table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #ff8b33;
+}
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody th.focus,table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #0275d8}div.dtk-focus-alt table.dataTable tbody th.focus,div.dtk-focus-alt table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #ff8b33}
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.dataTables.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9 @@
+table.dataTable tbody th.focus,
+table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #3366ff;
+}
+
+div.dtk-focus-alt table.dataTable tbody th.focus,
+div.dtk-focus-alt table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #ff8b33;
+}
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.dataTables.min.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody th.focus,table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #3366ff}div.dtk-focus-alt table.dataTable tbody th.focus,div.dtk-focus-alt table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #ff8b33}
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.foundation.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9 @@
+table.dataTable tbody th.focus,
+table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #008CBA;
+}
+
+div.dtk-focus-alt table.dataTable tbody th.focus,
+div.dtk-focus-alt table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #ff8b33;
+}
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.foundation.min.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody th.focus,table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #008CBA}div.dtk-focus-alt table.dataTable tbody th.focus,div.dtk-focus-alt table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #ff8b33}
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.jqueryui.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9 @@
+table.dataTable tbody th.focus,
+table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #3366ff;
+}
+
+div.dtk-focus-alt table.dataTable tbody th.focus,
+div.dtk-focus-alt table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #ff8b33;
+}
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody th.focus,table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #3366ff}div.dtk-focus-alt table.dataTable tbody th.focus,div.dtk-focus-alt table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #ff8b33}
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.semanticui.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9 @@
+table.dataTable tbody th.focus,
+table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #888;
+}
+
+div.dtk-focus-alt table.dataTable tbody th.focus,
+div.dtk-focus-alt table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #ff8b33;
+}
Index: public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.semanticui.min.css
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/css/keyTable.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody th.focus,table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #888}div.dtk-focus-alt table.dataTable tbody th.focus,div.dtk-focus-alt table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #ff8b33}
Index: public/vendors/dataTable/KeyTable-2.5.1/js/dataTables.keyTable.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/dataTables.keyTable.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/dataTables.keyTable.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1244 @@
+/*! KeyTable 2.5.1
+ * ©2009-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     KeyTable
+ * @description Spreadsheet like keyboard navigation for DataTables
+ * @version     2.5.1
+ * @file        dataTables.keyTable.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2009-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+var namespaceCounter = 0;
+
+
+var KeyTable = function ( dt, opts ) {
+	// Sanity check that we are using DataTables 1.10 or newer
+	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) {
+		throw 'KeyTable requires DataTables 1.10.8 or newer';
+	}
+
+	// User and defaults configuration object
+	this.c = $.extend( true, {},
+		DataTable.defaults.keyTable,
+		KeyTable.defaults,
+		opts
+	);
+
+	// Internal settings
+	this.s = {
+		/** @type {DataTable.Api} DataTables' API instance */
+		dt: new DataTable.Api( dt ),
+
+		enable: true,
+
+		/** @type {bool} Flag for if a draw is triggered by focus */
+		focusDraw: false,
+
+		/** @type {bool} Flag to indicate when waiting for a draw to happen.
+		  *   Will ignore key presses at this point
+		  */
+		waitingForDraw: false,
+
+		/** @type {object} Information about the last cell that was focused */
+		lastFocus: null,
+
+		/** @type {string} Unique namespace per instance */
+		namespace: '.keyTable-'+(namespaceCounter++)
+	};
+
+	// DOM items
+	this.dom = {
+
+	};
+
+	// Check if row reorder has already been initialised on this table
+	var settings = this.s.dt.settings()[0];
+	var exisiting = settings.keytable;
+	if ( exisiting ) {
+		return exisiting;
+	}
+
+	settings.keytable = this;
+	this._constructor();
+};
+
+
+$.extend( KeyTable.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * API methods for DataTables API interface
+	 */
+
+	/**
+	 * Blur the table's cell focus
+	 */
+	blur: function ()
+	{
+		this._blur();
+	},
+
+	/**
+	 * Enable cell focus for the table
+	 *
+	 * @param  {string} state Can be `true`, `false` or `-string navigation-only`
+	 */
+	enable: function ( state )
+	{
+		this.s.enable = state;
+	},
+
+	/**
+	 * Focus on a cell
+	 * @param  {integer} row    Row index
+	 * @param  {integer} column Column index
+	 */
+	focus: function ( row, column )
+	{
+		this._focus( this.s.dt.cell( row, column ) );
+	},
+
+	/**
+	 * Is the cell focused
+	 * @param  {object} cell Cell index to check
+	 * @returns {boolean} true if focused, false otherwise
+	 */
+	focused: function ( cell )
+	{
+		var lastFocus = this.s.lastFocus;
+
+		if ( ! lastFocus ) {
+			return false;
+		}
+
+		var lastIdx = this.s.lastFocus.cell.index();
+		return cell.row === lastIdx.row && cell.column === lastIdx.column;
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Initialise the KeyTable instance
+	 *
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		this._tabInput();
+
+		var that = this;
+		var dt = this.s.dt;
+		var table = $( dt.table().node() );
+		var namespace = this.s.namespace;
+		var editorBlock = false;
+
+		// Need to be able to calculate the cell positions relative to the table
+		if ( table.css('position') === 'static' ) {
+			table.css( 'position', 'relative' );
+		}
+
+		// Click to focus
+		$( dt.table().body() ).on( 'click'+namespace, 'th, td', function (e) {
+			if ( that.s.enable === false ) {
+				return;
+			}
+
+			var cell = dt.cell( this );
+
+			if ( ! cell.any() ) {
+				return;
+			}
+
+			that._focus( cell, null, false, e );
+		} );
+
+		// Key events
+		$( document ).on( 'keydown'+namespace, function (e) {
+			if ( ! editorBlock ) {
+				that._key( e );
+			}
+		} );
+
+		// Click blur
+		if ( this.c.blurable ) {
+			$( document ).on( 'mousedown'+namespace, function ( e ) {
+				// Click on the search input will blur focus
+				if ( $(e.target).parents( '.dataTables_filter' ).length ) {
+					that._blur();
+				}
+
+				// If the click was inside the DataTables container, don't blur
+				if ( $(e.target).parents().filter( dt.table().container() ).length ) {
+					return;
+				}
+
+				// Don't blur in Editor form
+				if ( $(e.target).parents('div.DTE').length ) {
+					return;
+				}
+
+				// Or an Editor date input
+				if ( $(e.target).parents('div.editor-datetime').length ) {
+					return;
+				}
+
+				//If the click was inside the fixed columns container, don't blur
+				if ( $(e.target).parents().filter('.DTFC_Cloned').length ) {
+					return;
+				}
+
+				that._blur();
+			} );
+		}
+
+		if ( this.c.editor ) {
+			var editor = this.c.editor;
+
+			// Need to disable KeyTable when the main editor is shown
+			editor.on( 'open.keyTableMain', function (e, mode, action) {
+				if ( mode !== 'inline' && that.s.enable ) {
+					that.enable( false );
+
+					editor.one( 'close'+namespace, function () {
+						that.enable( true );
+					} );
+				}
+			} );
+
+			if ( this.c.editOnFocus ) {
+				dt.on( 'key-focus'+namespace+' key-refocus'+namespace, function ( e, dt, cell, orig ) {
+					that._editor( null, orig, true );
+				} );
+			}
+
+			// Activate Editor when a key is pressed (will be ignored, if
+			// already active).
+			dt.on( 'key'+namespace, function ( e, dt, key, cell, orig ) {
+				that._editor( key, orig, false );
+			} );
+
+			// Active editing on double click - it will already have focus from
+			// the click event handler above
+			$( dt.table().body() ).on( 'dblclick'+namespace, 'th, td', function (e) {
+				if ( that.s.enable === false ) {
+					return;
+				}
+
+				var cell = dt.cell( this );
+
+				if ( ! cell.any() ) {
+					return;
+				}
+
+				that._editor( null, e, true );
+			} );
+
+			// While Editor is busy processing, we don't want to process any key events
+			editor
+				.on('preSubmit', function () {
+					editorBlock = true;
+				} )
+				.on('preSubmitCancelled', function () {
+					editorBlock = false;
+				} )
+				.on('submitComplete', function () {
+					editorBlock = false;
+				} );
+		}
+
+		// Stave saving
+		if ( dt.settings()[0].oFeatures.bStateSave ) {
+			dt.on( 'stateSaveParams'+namespace, function (e, s, d) {
+				d.keyTable = that.s.lastFocus ?
+					that.s.lastFocus.cell.index() :
+					null;
+			} );
+		}
+
+		// Redraw - retain focus on the current cell
+		dt.on( 'draw'+namespace, function (e) {
+			if ( that.s.focusDraw ) {
+				return;
+			}
+
+			var lastFocus = that.s.lastFocus;
+
+			if ( lastFocus && lastFocus.node && $(lastFocus.node).closest('body') === document.body ) {
+				var relative = that.s.lastFocus.relative;
+				var info = dt.page.info();
+				var row = relative.row + info.start;
+
+				if ( info.recordsDisplay === 0 ) {
+					return;
+				}
+
+				// Reverse if needed
+				if ( row >= info.recordsDisplay ) {
+					row = info.recordsDisplay - 1;
+				}
+
+				that._focus( row, relative.column, true, e );
+			}
+		} );
+
+		// Clipboard support
+		if ( this.c.clipboard ) {
+			this._clipboard();
+		}
+
+		dt.on( 'destroy'+namespace, function () {
+			that._blur( true );
+
+			// Event tidy up
+			dt.off( namespace );
+
+			$( dt.table().body() )
+				.off( 'click'+namespace, 'th, td' )
+				.off( 'dblclick'+namespace, 'th, td' );
+
+			$( document )
+				.off( 'mousedown'+namespace )
+				.off( 'keydown'+namespace )
+				.off( 'copy'+namespace )
+				.off( 'paste'+namespace );
+		} );
+
+		// Initial focus comes from state or options
+		var state = dt.state.loaded();
+
+		if ( state && state.keyTable ) {
+			// Wait until init is done
+			dt.one( 'init', function () {
+				var cell = dt.cell( state.keyTable );
+
+				// Ensure that the saved cell still exists
+				if ( cell.any() ) {
+					cell.focus();
+				}
+			} );
+		}
+		else if ( this.c.focus ) {
+			dt.cell( this.c.focus ).focus();
+		}
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Blur the control
+	 *
+	 * @param {boolean} [noEvents=false] Don't trigger updates / events (for destroying)
+	 * @private
+	 */
+	_blur: function (noEvents)
+	{
+		if ( ! this.s.enable || ! this.s.lastFocus ) {
+			return;
+		}
+
+		var cell = this.s.lastFocus.cell;
+
+		$( cell.node() ).removeClass( this.c.className );
+		this.s.lastFocus = null;
+
+		if ( ! noEvents ) {
+			this._updateFixedColumns(cell.index().column);
+
+			this._emitEvent( 'key-blur', [ this.s.dt, cell ] );
+		}
+	},
+
+
+	/**
+	 * Clipboard interaction handlers
+	 *
+	 * @private
+	 */
+	_clipboard: function () {
+		var dt = this.s.dt;
+		var that = this;
+		var namespace = this.s.namespace;
+
+		// IE8 doesn't support getting selected text
+		if ( ! window.getSelection ) {
+			return;
+		}
+
+		$(document).on( 'copy'+namespace, function (ejq) {
+			var e = ejq.originalEvent;
+			var selection = window.getSelection().toString();
+			var focused = that.s.lastFocus;
+
+			// Only copy cell text to clipboard if there is no other selection
+			// and there is a focused cell
+			if ( ! selection && focused ) {
+				e.clipboardData.setData(
+					'text/plain',
+					focused.cell.render( that.c.clipboardOrthogonal )
+				);
+				e.preventDefault();
+			}
+		} );
+
+		$(document).on( 'paste'+namespace, function (ejq) {
+			var e = ejq.originalEvent;
+			var focused = that.s.lastFocus;
+			var activeEl = document.activeElement;
+			var editor = that.c.editor;
+			var pastedText;
+
+			if ( focused && (! activeEl || activeEl.nodeName.toLowerCase() === 'body') ) {
+				e.preventDefault();
+
+				if ( window.clipboardData && window.clipboardData.getData ) {
+					// IE
+					pastedText = window.clipboardData.getData('Text');
+				}
+				else if ( e.clipboardData && e.clipboardData.getData ) {
+					// Everything else
+					pastedText = e.clipboardData.getData('text/plain');
+				}
+
+				if ( editor ) {
+					// Got Editor - need to activate inline editing,
+					// set the value and submit
+					editor
+						.inline( focused.cell.index() )
+						.set( editor.displayed()[0], pastedText )
+						.submit();
+				}
+				else {
+					// No editor, so just dump the data in
+					focused.cell.data( pastedText );
+					dt.draw(false);
+				}
+			}
+		} );
+	},
+
+
+	/**
+	 * Get an array of the column indexes that KeyTable can operate on. This
+	 * is a merge of the user supplied columns and the visible columns.
+	 *
+	 * @private
+	 */
+	_columns: function ()
+	{
+		var dt = this.s.dt;
+		var user = dt.columns( this.c.columns ).indexes();
+		var out = [];
+
+		dt.columns( ':visible' ).every( function (i) {
+			if ( user.indexOf( i ) !== -1 ) {
+				out.push( i );
+			}
+		} );
+
+		return out;
+	},
+
+
+	/**
+	 * Perform excel like navigation for Editor by triggering an edit on key
+	 * press
+	 *
+	 * @param  {integer} key Key code for the pressed key
+	 * @param  {object} orig Original event
+	 * @private
+	 */
+	_editor: function ( key, orig, hardEdit )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var editor = this.c.editor;
+		var editCell = this.s.lastFocus.cell;
+		var namespace = this.s.namespace;
+
+		// Do nothing if there is already an inline edit in this cell
+		if ( $('div.DTE', editCell.node()).length ) {
+			return;
+		}
+
+		// Don't activate Editor on control key presses
+		if ( key !== null && (
+			(key >= 0x00 && key <= 0x09) ||
+			key === 0x0b ||
+			key === 0x0c ||
+			(key >= 0x0e && key <= 0x1f) ||
+			(key >= 0x70 && key <= 0x7b) ||
+			(key >= 0x7f && key <= 0x9f)
+		) ) {
+			return;
+		}
+
+		orig.stopPropagation();
+
+		// Return key should do nothing - for textareas it would empty the
+		// contents
+		if ( key === 13 ) {
+			orig.preventDefault();
+		}
+
+		var editInline = function () {
+			editor
+				.one( 'open'+namespace, function () {
+					// Remove cancel open
+					editor.off( 'cancelOpen'+namespace );
+
+					// Excel style - select all text
+					if ( ! hardEdit ) {
+						$('div.DTE_Field_InputControl input, div.DTE_Field_InputControl textarea').select();
+					}
+
+					// Reduce the keys the Keys listens for
+					dt.keys.enable( hardEdit ? 'tab-only' : 'navigation-only' );
+
+					// On blur of the navigation submit
+					dt.on( 'key-blur.editor', function (e, dt, cell) {
+						if ( editor.displayed() && cell.node() === editCell.node() ) {
+							editor.submit();
+						}
+					} );
+
+					// Highlight the cell a different colour on full edit
+					if ( hardEdit ) {
+						$( dt.table().container() ).addClass('dtk-focus-alt');
+					}
+
+					// If the dev cancels the submit, we need to return focus
+					editor.on( 'preSubmitCancelled'+namespace, function () {
+						setTimeout( function () {
+							that._focus( editCell, null, false );
+						}, 50 );
+					} );
+
+					editor.on( 'submitUnsuccessful'+namespace, function () {
+						that._focus( editCell, null, false );
+					} );
+
+					// Restore full key navigation on close
+					editor.one( 'close', function () {
+						dt.keys.enable( true );
+						dt.off( 'key-blur.editor' );
+						editor.off( namespace );
+						$( dt.table().container() ).removeClass('dtk-focus-alt');
+					} );
+				} )
+				.one( 'cancelOpen'+namespace, function () {
+					// `preOpen` can cancel the display of the form, so it
+					// might be that the open event handler isn't needed
+					editor.off( namespace );
+				} )
+				.inline( editCell.index() );
+		};
+
+		// Editor 1.7 listens for `return` on keyup, so if return is the trigger
+		// key, we need to wait for `keyup` otherwise Editor would just submit
+		// the content triggered by this keypress.
+		if ( key === 13 ) {
+			hardEdit = true;
+
+			$(document).one( 'keyup', function () { // immediately removed
+				editInline();
+			} );
+		}
+		else {
+			editInline();
+		}
+	},
+
+
+	/**
+	 * Emit an event on the DataTable for listeners
+	 *
+	 * @param  {string} name Event name
+	 * @param  {array} args Event arguments
+	 * @private
+	 */
+	_emitEvent: function ( name, args )
+	{
+		this.s.dt.iterator( 'table', function ( ctx, i ) {
+			$(ctx.nTable).triggerHandler( name, args );
+		} );
+	},
+
+
+	/**
+	 * Focus on a particular cell, shifting the table's paging if required
+	 *
+	 * @param  {DataTables.Api|integer} row Can be given as an API instance that
+	 *   contains the cell to focus or as an integer. As the latter it is the
+	 *   visible row index (from the whole data set) - NOT the data index
+	 * @param  {integer} [column] Not required if a cell is given as the first
+	 *   parameter. Otherwise this is the column data index for the cell to
+	 *   focus on
+	 * @param {boolean} [shift=true] Should the viewport be moved to show cell
+	 * @private
+	 */
+	_focus: function ( row, column, shift, originalEvent )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var pageInfo = dt.page.info();
+		var lastFocus = this.s.lastFocus;
+
+		if ( ! originalEvent) {
+			originalEvent = null;
+		}
+
+		if ( ! this.s.enable ) {
+			return;
+		}
+
+		if ( typeof row !== 'number' ) {
+			// Its an API instance - check that there is actually a row
+			if ( ! row.any() ) {
+				return;
+			}
+
+			// Convert the cell to a row and column
+			var index = row.index();
+			column = index.column;
+			row = dt
+				.rows( { filter: 'applied', order: 'applied' } )
+				.indexes()
+				.indexOf( index.row );
+			
+			// Don't focus rows that were filtered out.
+			if ( row < 0 ) {
+				return;
+			}
+
+			// For server-side processing normalise the row by adding the start
+			// point, since `rows().indexes()` includes only rows that are
+			// available at the client-side
+			if ( pageInfo.serverSide ) {
+				row += pageInfo.start;
+			}
+		}
+
+		// Is the row on the current page? If not, we need to redraw to show the
+		// page
+		if ( pageInfo.length !== -1 && (row < pageInfo.start || row >= pageInfo.start+pageInfo.length) ) {
+			this.s.focusDraw = true;
+			this.s.waitingForDraw = true;
+
+			dt
+				.one( 'draw', function () {
+					that.s.focusDraw = false;
+					that.s.waitingForDraw = false;
+					that._focus( row, column, undefined, originalEvent );
+				} )
+				.page( Math.floor( row / pageInfo.length ) )
+				.draw( false );
+
+			return;
+		}
+
+		// In the available columns?
+		if ( $.inArray( column, this._columns() ) === -1 ) {
+			return;
+		}
+
+		// De-normalise the server-side processing row, so we select the row
+		// in its displayed position
+		if ( pageInfo.serverSide ) {
+			row -= pageInfo.start;
+		}
+
+		// Get the cell from the current position - ignoring any cells which might
+		// not have been rendered (therefore can't use `:eq()` selector).
+		var cells = dt.cells( null, column, {search: 'applied', order: 'applied'} ).flatten();
+		var cell = dt.cell( cells[ row ] );
+
+		if ( lastFocus ) {
+			// Don't trigger a refocus on the same cell
+			if ( lastFocus.node === cell.node() ) {
+				this._emitEvent( 'key-refocus', [ this.s.dt, cell, originalEvent || null ] );
+				return;
+			}
+
+			// Otherwise blur the old focus
+			this._blur();
+		}
+
+		// Clear focus from other tables
+		this._removeOtherFocus();
+
+		var node = $( cell.node() );
+		node.addClass( this.c.className );
+
+		this._updateFixedColumns(column);
+
+		// Shift viewpoint and page to make cell visible
+		if ( shift === undefined || shift === true ) {
+			this._scroll( $(window), $(document.body), node, 'offset' );
+
+			var bodyParent = dt.table().body().parentNode;
+			if ( bodyParent !== dt.table().header().parentNode ) {
+				var parent = $(bodyParent.parentNode);
+
+				this._scroll( parent, parent, node, 'position' );
+			}
+		}
+
+		// Event and finish
+		this.s.lastFocus = {
+			cell: cell,
+			node: cell.node(),
+			relative: {
+				row: dt.rows( { page: 'current' } ).indexes().indexOf( cell.index().row ),
+				column: cell.index().column
+			}
+		};
+
+		this._emitEvent( 'key-focus', [ this.s.dt, cell, originalEvent || null ] );
+		dt.state.save();
+	},
+
+
+	/**
+	 * Handle key press
+	 *
+	 * @param  {object} e Event
+	 * @private
+	 */
+	_key: function ( e )
+	{
+		// If we are waiting for a draw to happen from another key event, then
+		// do nothing for this new key press.
+		if ( this.s.waitingForDraw ) {
+			e.preventDefault();
+			return;
+		}
+
+		var enable = this.s.enable;
+		var navEnable = enable === true || enable === 'navigation-only';
+		if ( ! enable ) {
+			return;
+		}
+
+		if ( (e.keyCode === 0 || e.ctrlKey || e.metaKey || e.altKey) && !(e.ctrlKey && e.altKey) ) {
+			return;
+		}
+
+		// If not focused, then there is no key action to take
+		var lastFocus = this.s.lastFocus;
+		if ( ! lastFocus ) {
+			return;
+		}
+
+		// And the last focus still exists!
+		if ( ! this.s.dt.cell(lastFocus.node).any() ) {
+			this.s.lastFocus = null;
+			return;
+		}
+
+		var that = this;
+		var dt = this.s.dt;
+		var scrolling = this.s.dt.settings()[0].oScroll.sY ? true : false;
+
+		// If we are not listening for this key, do nothing
+		if ( this.c.keys && $.inArray( e.keyCode, this.c.keys ) === -1 ) {
+			return;
+		}
+
+		switch( e.keyCode ) {
+			case 9: // tab
+				// `enable` can be tab-only
+				this._shift( e, e.shiftKey ? 'left' : 'right', true );
+				break;
+
+			case 27: // esc
+				if ( this.s.blurable && enable === true ) {
+					this._blur();
+				}
+				break;
+
+			case 33: // page up (previous page)
+			case 34: // page down (next page)
+				if ( navEnable && !scrolling ) {
+					e.preventDefault();
+
+					dt
+						.page( e.keyCode === 33 ? 'previous' : 'next' )
+						.draw( false );
+				}
+				break;
+
+			case 35: // end (end of current page)
+			case 36: // home (start of current page)
+				if ( navEnable ) {
+					e.preventDefault();
+					var indexes = dt.cells( {page: 'current'} ).indexes();
+					var colIndexes = this._columns();
+
+					this._focus( dt.cell(
+						indexes[ e.keyCode === 35 ? indexes.length-1 : colIndexes[0] ]
+					), null, true, e );
+				}
+				break;
+
+			case 37: // left arrow
+				if ( navEnable ) {
+					this._shift( e, 'left' );
+				}
+				break;
+
+			case 38: // up arrow
+				if ( navEnable ) {
+					this._shift( e, 'up' );
+				}
+				break;
+
+			case 39: // right arrow
+				if ( navEnable ) {
+					this._shift( e, 'right' );
+				}
+				break;
+
+			case 40: // down arrow
+				if ( navEnable ) {
+					this._shift( e, 'down' );
+				}
+				break;
+
+			case 113: // F2 - Excel like hard edit
+				if ( this.c.editor ) {
+					this._editor(null, e, true);
+					break;
+				}
+				// else fallthrough
+
+			default:
+				// Everything else - pass through only when fully enabled
+				if ( enable === true ) {
+					this._emitEvent( 'key', [ dt, e.keyCode, this.s.lastFocus.cell, e ] );
+				}
+				break;
+		}
+	},
+
+	/**
+	 * Remove focus from all tables other than this one
+	 */
+	_removeOtherFocus: function ()
+	{
+		var thisTable = this.s.dt.table().node();
+
+		$.fn.dataTable.tables({api:true}).iterator('table', function (settings) {
+			if (this.table().node() !== thisTable) {
+				this.cell.blur();
+			}
+		});
+	},
+
+	/**
+	 * Scroll a container to make a cell visible in it. This can be used for
+	 * both DataTables scrolling and native window scrolling.
+	 *
+	 * @param  {jQuery} container Scrolling container
+	 * @param  {jQuery} scroller  Item being scrolled
+	 * @param  {jQuery} cell      Cell in the scroller
+	 * @param  {string} posOff    `position` or `offset` - which to use for the
+	 *   calculation. `offset` for the document, otherwise `position`
+	 * @private
+	 */
+	_scroll: function ( container, scroller, cell, posOff )
+	{
+		var offset = cell[posOff]();
+		var height = cell.outerHeight();
+		var width = cell.outerWidth();
+
+		var scrollTop = scroller.scrollTop();
+		var scrollLeft = scroller.scrollLeft();
+		var containerHeight = container.height();
+		var containerWidth = container.width();
+
+		// If Scroller is being used, the table can be `position: absolute` and that
+		// needs to be taken account of in the offset. If no Scroller, this will be 0
+		if ( posOff === 'position' ) {
+			offset.top += parseInt( cell.closest('table').css('top'), 10 );
+		}
+
+		// Top correction
+		if ( offset.top < scrollTop ) {
+			scroller.scrollTop( offset.top );
+		}
+
+		// Left correction
+		if ( offset.left < scrollLeft ) {
+			scroller.scrollLeft( offset.left );
+		}
+
+		// Bottom correction
+		if ( offset.top + height > scrollTop + containerHeight && height < containerHeight ) {
+			scroller.scrollTop( offset.top + height - containerHeight );
+		}
+
+		// Right correction
+		if ( offset.left + width > scrollLeft + containerWidth && width < containerWidth ) {
+			scroller.scrollLeft( offset.left + width - containerWidth );
+		}
+	},
+
+
+	/**
+	 * Calculate a single offset movement in the table - up, down, left and
+	 * right and then perform the focus if possible
+	 *
+	 * @param  {object}  e           Event object
+	 * @param  {string}  direction   Movement direction
+	 * @param  {boolean} keyBlurable `true` if the key press can result in the
+	 *   table being blurred. This is so arrow keys won't blur the table, but
+	 *   tab will.
+	 * @private
+	 */
+	_shift: function ( e, direction, keyBlurable )
+	{
+		var that         = this;
+		var dt           = this.s.dt;
+		var pageInfo     = dt.page.info();
+		var rows         = pageInfo.recordsDisplay;
+		var currentCell  = this.s.lastFocus.cell;
+		var columns      = this._columns();
+
+		if ( ! currentCell ) {
+			return;
+		}
+
+		var currRow = dt
+			.rows( { filter: 'applied', order: 'applied' } )
+			.indexes()
+			.indexOf( currentCell.index().row );
+
+		// When server-side processing, `rows().indexes()` only gives the rows
+		// that are available at the client-side, so we need to normalise the
+		// row's current position by the display start point
+		if ( pageInfo.serverSide ) {
+			currRow += pageInfo.start;
+		}
+
+		var currCol = dt
+			.columns( columns )
+			.indexes()
+			.indexOf( currentCell.index().column );
+
+		var
+			row = currRow,
+			column = columns[ currCol ]; // row is the display, column is an index
+
+		if ( direction === 'right' ) {
+			if ( currCol >= columns.length - 1 ) {
+				row++;
+				column = columns[0];
+			}
+			else {
+				column = columns[ currCol+1 ];
+			}
+		}
+		else if ( direction === 'left' ) {
+			if ( currCol === 0 ) {
+				row--;
+				column = columns[ columns.length - 1 ];
+			}
+			else {
+				column = columns[ currCol-1 ];
+			}
+		}
+		else if ( direction === 'up' ) {
+			row--;
+		}
+		else if ( direction === 'down' ) {
+			row++;
+		}
+
+		if ( row >= 0 && row < rows && $.inArray( column, columns ) !== -1 ) {
+			if (e) {
+				e.preventDefault();
+			}
+
+			this._focus( row, column, true, e );
+		}
+		else if ( ! keyBlurable || ! this.c.blurable ) {
+			// No new focus, but if the table isn't blurable, then don't loose
+			// focus
+			if (e) {
+				e.preventDefault();
+			}
+		}
+		else {
+			this._blur();
+		}
+	},
+
+
+	/**
+	 * Create a hidden input element that can receive focus on behalf of the
+	 * table
+	 *
+	 * @private
+	 */
+	_tabInput: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var tabIndex = this.c.tabIndex !== null ?
+			this.c.tabIndex :
+			dt.settings()[0].iTabIndex;
+
+		if ( tabIndex == -1 ) {
+			return;
+		}
+
+		var div = $('<div><input type="text" tabindex="'+tabIndex+'"/></div>')
+			.css( {
+				position: 'absolute',
+				height: 1,
+				width: 0,
+				overflow: 'hidden'
+			} )
+			.insertBefore( dt.table().node() );
+
+		div.children().on( 'focus', function (e) {
+			var cell = dt.cell(':eq(0)', that._columns(), {page: 'current'});
+
+			if ( cell.any() ) {
+				that._focus( cell, null, true, e );
+			}
+		} );
+	},
+
+	/**
+	 * Update fixed columns if they are enabled and if the cell we are
+	 * focusing is inside a fixed column
+	 * @param  {integer} column Index of the column being changed
+	 * @private
+	 */
+	_updateFixedColumns: function( column )
+	{
+		var dt = this.s.dt;
+		var settings = dt.settings()[0];
+
+		if ( settings._oFixedColumns ) {
+			var leftCols = settings._oFixedColumns.s.iLeftColumns;
+			var rightCols = settings.aoColumns.length - settings._oFixedColumns.s.iRightColumns;
+
+			if (column < leftCols || column >= rightCols) {
+				dt.fixedColumns().update();
+			}
+		}
+	}
+} );
+
+
+/**
+ * KeyTable default settings for initialisation
+ *
+ * @namespace
+ * @name KeyTable.defaults
+ * @static
+ */
+KeyTable.defaults = {
+	/**
+	 * Can focus be removed from the table
+	 * @type {Boolean}
+	 */
+	blurable: true,
+
+	/**
+	 * Class to give to the focused cell
+	 * @type {String}
+	 */
+	className: 'focus',
+
+	/**
+	 * Enable or disable clipboard support
+	 * @type {Boolean}
+	 */
+	clipboard: true,
+
+	/**
+	 * Orthogonal data that should be copied to clipboard
+	 * @type {string}
+	 */
+	clipboardOrthogonal: 'display',
+
+	/**
+	 * Columns that can be focused. This is automatically merged with the
+	 * visible columns as only visible columns can gain focus.
+	 * @type {String}
+	 */
+	columns: '', // all
+
+	/**
+	 * Editor instance to automatically perform Excel like navigation
+	 * @type {Editor}
+	 */
+	editor: null,
+
+	/**
+	 * Trigger editing immediately on focus
+	 * @type {boolean}
+	 */
+	editOnFocus: false,
+
+	/**
+	 * Select a cell to automatically select on start up. `null` for no
+	 * automatic selection
+	 * @type {cell-selector}
+	 */
+	focus: null,
+
+	/**
+	 * Array of keys to listen for
+	 * @type {null|array}
+	 */
+	keys: null,
+
+	/**
+	 * Tab index for where the table should sit in the document's tab flow
+	 * @type {integer|null}
+	 */
+	tabIndex: null
+};
+
+
+
+KeyTable.version = "2.5.1";
+
+
+$.fn.dataTable.KeyTable = KeyTable;
+$.fn.DataTable.KeyTable = KeyTable;
+
+
+DataTable.Api.register( 'cell.blur()', function () {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.keytable ) {
+			ctx.keytable.blur();
+		}
+	} );
+} );
+
+DataTable.Api.register( 'cell().focus()', function () {
+	return this.iterator( 'cell', function (ctx, row, column) {
+		if ( ctx.keytable ) {
+			ctx.keytable.focus( row, column );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'keys.disable()', function () {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.keytable ) {
+			ctx.keytable.enable( false );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'keys.enable()', function ( opts ) {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.keytable ) {
+			ctx.keytable.enable( opts === undefined ? true : opts );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'keys.move()', function ( dir ) {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.keytable ) {
+			ctx.keytable._shift( null, dir, false );
+		}
+	} );
+} );
+
+// Cell selector
+DataTable.ext.selector.cell.push( function ( settings, opts, cells ) {
+	var focused = opts.focused;
+	var kt = settings.keytable;
+	var out = [];
+
+	if ( ! kt || focused === undefined ) {
+		return cells;
+	}
+
+	for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+		if ( (focused === true &&  kt.focused( cells[i] ) ) ||
+			 (focused === false && ! kt.focused( cells[i] ) )
+		) {
+			out.push( cells[i] );
+		}
+	}
+
+	return out;
+} );
+
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.dtk', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.keys;
+	var defaults = DataTable.defaults.keys;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, defaults, init );
+
+		if ( init !== false ) {
+			new KeyTable( settings, opts  );
+		}
+	}
+} );
+
+
+return KeyTable;
+}));
Index: public/vendors/dataTable/KeyTable-2.5.1/js/dataTables.keyTable.min.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/dataTables.keyTable.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/dataTables.keyTable.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,42 @@
+/*!
+   Copyright 2009-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ KeyTable 2.5.1
+ ©2009-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(b){var f=0;return function(){return f<b.length?{done:!1,value:b[f++]}:{done:!0}}};$jscomp.arrayIterator=function(b){return{next:$jscomp.arrayIteratorImpl(b)}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(b,f,k){b!=Array.prototype&&b!=Object.prototype&&(b[f]=k.value)};$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};
+$jscomp.SymbolClass=function(b,f){this.$jscomp$symbol$id_=b;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:f})};$jscomp.SymbolClass.prototype.toString=function(){return this.$jscomp$symbol$id_};$jscomp.Symbol=function(){function b(k){if(this instanceof b)throw new TypeError("Symbol is not a constructor");return new $jscomp.SymbolClass($jscomp.SYMBOL_PREFIX+(k||"")+"_"+f++,k)}var f=0;return b}();
+$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.iterator;b||(b=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("Symbol.iterator"));"function"!=typeof Array.prototype[b]&&$jscomp.defineProperty(Array.prototype,b,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}});$jscomp.initSymbolIterator=function(){}};
+$jscomp.initSymbolAsyncIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.asyncIterator;b||(b=$jscomp.global.Symbol.asyncIterator=$jscomp.global.Symbol("Symbol.asyncIterator"));$jscomp.initSymbolAsyncIterator=function(){}};$jscomp.iteratorPrototype=function(b){$jscomp.initSymbolIterator();b={next:b};b[$jscomp.global.Symbol.iterator]=function(){return this};return b};
+$jscomp.iteratorFromArray=function(b,f){$jscomp.initSymbolIterator();b instanceof String&&(b+="");var k=0,l={next:function(){if(k<b.length){var g=k++;return{value:f(g,b[g]),done:!1}}l.next=function(){return{done:!0,value:void 0}};return l.next()}};l[Symbol.iterator]=function(){return l};return l};
+$jscomp.polyfill=function(b,f,k,l){if(f){k=$jscomp.global;b=b.split(".");for(l=0;l<b.length-1;l++){var g=b[l];g in k||(k[g]={});k=k[g]}b=b[b.length-1];l=k[b];f=f(l);f!=l&&null!=f&&$jscomp.defineProperty(k,b,{configurable:!0,writable:!0,value:f})}};$jscomp.polyfill("Array.prototype.keys",function(b){return b?b:function(){return $jscomp.iteratorFromArray(this,function(b){return b})}},"es6","es3");
+(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(f){return b(f,window,document)}):"object"===typeof exports?module.exports=function(f,k){f||(f=window);k&&k.fn.dataTable||(k=require("datatables.net")(f,k).$);return b(k,f,f.document)}:b(jQuery,window,document)})(function(b,f,k,l){var g=b.fn.dataTable,t=0,p=function(a,c){if(!g.versionCheck||!g.versionCheck("1.10.8"))throw"KeyTable requires DataTables 1.10.8 or newer";this.c=b.extend(!0,{},g.defaults.keyTable,
+p.defaults,c);this.s={dt:new g.Api(a),enable:!0,focusDraw:!1,waitingForDraw:!1,lastFocus:null,namespace:".keyTable-"+t++};this.dom={};a=this.s.dt.settings()[0];if(c=a.keytable)return c;a.keytable=this;this._constructor()};b.extend(p.prototype,{blur:function(){this._blur()},enable:function(a){this.s.enable=a},focus:function(a,c){this._focus(this.s.dt.cell(a,c))},focused:function(a){if(!this.s.lastFocus)return!1;var c=this.s.lastFocus.cell.index();return a.row===c.row&&a.column===c.column},_constructor:function(){this._tabInput();
+var a=this,c=this.s.dt,e=b(c.table().node()),d=this.s.namespace,m=!1;"static"===e.css("position")&&e.css("position","relative");b(c.table().body()).on("click"+d,"th, td",function(b){if(!1!==a.s.enable){var d=c.cell(this);d.any()&&a._focus(d,null,!1,b)}});b(k).on("keydown"+d,function(c){m||a._key(c)});if(this.c.blurable)b(k).on("mousedown"+d,function(d){b(d.target).parents(".dataTables_filter").length&&a._blur();b(d.target).parents().filter(c.table().container()).length||b(d.target).parents("div.DTE").length||
+b(d.target).parents("div.editor-datetime").length||b(d.target).parents().filter(".DTFC_Cloned").length||a._blur()});if(this.c.editor){var q=this.c.editor;q.on("open.keyTableMain",function(c,b,e){"inline"!==b&&a.s.enable&&(a.enable(!1),q.one("close"+d,function(){a.enable(!0)}))});if(this.c.editOnFocus)c.on("key-focus"+d+" key-refocus"+d,function(c,b,d,e){a._editor(null,e,!0)});c.on("key"+d,function(c,b,d,e,m){a._editor(d,m,!1)});b(c.table().body()).on("dblclick"+d,"th, td",function(b){!1!==a.s.enable&&
+c.cell(this).any()&&a._editor(null,b,!0)});q.on("preSubmit",function(){m=!0}).on("preSubmitCancelled",function(){m=!1}).on("submitComplete",function(){m=!1})}if(c.settings()[0].oFeatures.bStateSave)c.on("stateSaveParams"+d,function(b,c,d){d.keyTable=a.s.lastFocus?a.s.lastFocus.cell.index():null});c.on("draw"+d,function(d){if(!a.s.focusDraw){var e=a.s.lastFocus;if(e&&e.node&&b(e.node).closest("body")===k.body){e=a.s.lastFocus.relative;var m=c.page.info(),h=e.row+m.start;0!==m.recordsDisplay&&(h>=m.recordsDisplay&&
+(h=m.recordsDisplay-1),a._focus(h,e.column,!0,d))}}});this.c.clipboard&&this._clipboard();c.on("destroy"+d,function(){a._blur(!0);c.off(d);b(c.table().body()).off("click"+d,"th, td").off("dblclick"+d,"th, td");b(k).off("mousedown"+d).off("keydown"+d).off("copy"+d).off("paste"+d)});var h=c.state.loaded();if(h&&h.keyTable)c.one("init",function(){var a=c.cell(h.keyTable);a.any()&&a.focus()});else this.c.focus&&c.cell(this.c.focus).focus()},_blur:function(a){if(this.s.enable&&this.s.lastFocus){var c=
+this.s.lastFocus.cell;b(c.node()).removeClass(this.c.className);this.s.lastFocus=null;a||(this._updateFixedColumns(c.index().column),this._emitEvent("key-blur",[this.s.dt,c]))}},_clipboard:function(){var a=this.s.dt,c=this,e=this.s.namespace;f.getSelection&&(b(k).on("copy"+e,function(a){a=a.originalEvent;var b=f.getSelection().toString(),d=c.s.lastFocus;!b&&d&&(a.clipboardData.setData("text/plain",d.cell.render(c.c.clipboardOrthogonal)),a.preventDefault())}),b(k).on("paste"+e,function(b){b=b.originalEvent;
+var d=c.s.lastFocus,e=k.activeElement,h=c.c.editor,n;!d||e&&"body"!==e.nodeName.toLowerCase()||(b.preventDefault(),f.clipboardData&&f.clipboardData.getData?n=f.clipboardData.getData("Text"):b.clipboardData&&b.clipboardData.getData&&(n=b.clipboardData.getData("text/plain")),h?h.inline(d.cell.index()).set(h.displayed()[0],n).submit():(d.cell.data(n),a.draw(!1)))}))},_columns:function(){var a=this.s.dt,b=a.columns(this.c.columns).indexes(),e=[];a.columns(":visible").every(function(a){-1!==b.indexOf(a)&&
+e.push(a)});return e},_editor:function(a,c,e){var d=this,m=this.s.dt,f=this.c.editor,h=this.s.lastFocus.cell,n=this.s.namespace;if(!(b("div.DTE",h.node()).length||null!==a&&(0<=a&&9>=a||11===a||12===a||14<=a&&31>=a||112<=a&&123>=a||127<=a&&159>=a))){c.stopPropagation();13===a&&c.preventDefault();var g=function(){f.one("open"+n,function(){f.off("cancelOpen"+n);e||b("div.DTE_Field_InputControl input, div.DTE_Field_InputControl textarea").select();m.keys.enable(e?"tab-only":"navigation-only");m.on("key-blur.editor",
+function(a,b,c){f.displayed()&&c.node()===h.node()&&f.submit()});e&&b(m.table().container()).addClass("dtk-focus-alt");f.on("preSubmitCancelled"+n,function(){setTimeout(function(){d._focus(h,null,!1)},50)});f.on("submitUnsuccessful"+n,function(){d._focus(h,null,!1)});f.one("close",function(){m.keys.enable(!0);m.off("key-blur.editor");f.off(n);b(m.table().container()).removeClass("dtk-focus-alt")})}).one("cancelOpen"+n,function(){f.off(n)}).inline(h.index())};13===a?(e=!0,b(k).one("keyup",function(){g()})):
+g()}},_emitEvent:function(a,c){this.s.dt.iterator("table",function(e,d){b(e.nTable).triggerHandler(a,c)})},_focus:function(a,c,e,d){var m=this,g=this.s.dt,h=g.page.info(),n=this.s.lastFocus;d||(d=null);if(this.s.enable){if("number"!==typeof a){if(!a.any())return;var r=a.index();c=r.column;a=g.rows({filter:"applied",order:"applied"}).indexes().indexOf(r.row);if(0>a)return;h.serverSide&&(a+=h.start)}if(-1!==h.length&&(a<h.start||a>=h.start+h.length))this.s.focusDraw=!0,this.s.waitingForDraw=!0,g.one("draw",
+function(){m.s.focusDraw=!1;m.s.waitingForDraw=!1;m._focus(a,c,l,d)}).page(Math.floor(a/h.length)).draw(!1);else if(-1!==b.inArray(c,this._columns())){h.serverSide&&(a-=h.start);h=g.cells(null,c,{search:"applied",order:"applied"}).flatten();h=g.cell(h[a]);if(n){if(n.node===h.node()){this._emitEvent("key-refocus",[this.s.dt,h,d||null]);return}this._blur()}this._removeOtherFocus();n=b(h.node());n.addClass(this.c.className);this._updateFixedColumns(c);if(e===l||!0===e)this._scroll(b(f),b(k.body),n,"offset"),
+e=g.table().body().parentNode,e!==g.table().header().parentNode&&(e=b(e.parentNode),this._scroll(e,e,n,"position"));this.s.lastFocus={cell:h,node:h.node(),relative:{row:g.rows({page:"current"}).indexes().indexOf(h.index().row),column:h.index().column}};this._emitEvent("key-focus",[this.s.dt,h,d||null]);g.state.save()}}},_key:function(a){if(this.s.waitingForDraw)a.preventDefault();else{var c=this.s.enable,e=!0===c||"navigation-only"===c;if(c&&(!(0===a.keyCode||a.ctrlKey||a.metaKey||a.altKey)||a.ctrlKey&&
+a.altKey)){var d=this.s.lastFocus;if(d)if(this.s.dt.cell(d.node).any()){d=this.s.dt;var m=this.s.dt.settings()[0].oScroll.sY?!0:!1;if(!this.c.keys||-1!==b.inArray(a.keyCode,this.c.keys))switch(a.keyCode){case 9:this._shift(a,a.shiftKey?"left":"right",!0);break;case 27:this.s.blurable&&!0===c&&this._blur();break;case 33:case 34:e&&!m&&(a.preventDefault(),d.page(33===a.keyCode?"previous":"next").draw(!1));break;case 35:case 36:e&&(a.preventDefault(),c=d.cells({page:"current"}).indexes(),e=this._columns(),
+this._focus(d.cell(c[35===a.keyCode?c.length-1:e[0]]),null,!0,a));break;case 37:e&&this._shift(a,"left");break;case 38:e&&this._shift(a,"up");break;case 39:e&&this._shift(a,"right");break;case 40:e&&this._shift(a,"down");break;case 113:if(this.c.editor){this._editor(null,a,!0);break}default:!0===c&&this._emitEvent("key",[d,a.keyCode,this.s.lastFocus.cell,a])}}else this.s.lastFocus=null}}},_removeOtherFocus:function(){var a=this.s.dt.table().node();b.fn.dataTable.tables({api:!0}).iterator("table",
+function(b){this.table().node()!==a&&this.cell.blur()})},_scroll:function(a,b,e,d){var c=e[d](),f=e.outerHeight(),h=e.outerWidth(),k=b.scrollTop(),g=b.scrollLeft(),l=a.height();a=a.width();"position"===d&&(c.top+=parseInt(e.closest("table").css("top"),10));c.top<k&&b.scrollTop(c.top);c.left<g&&b.scrollLeft(c.left);c.top+f>k+l&&f<l&&b.scrollTop(c.top+f-l);c.left+h>g+a&&h<a&&b.scrollLeft(c.left+h-a)},_shift:function(a,c,e){var d=this.s.dt,f=d.page.info(),k=f.recordsDisplay,h=this.s.lastFocus.cell,g=
+this._columns();if(h){var l=d.rows({filter:"applied",order:"applied"}).indexes().indexOf(h.index().row);f.serverSide&&(l+=f.start);d=d.columns(g).indexes().indexOf(h.index().column);f=g[d];"right"===c?d>=g.length-1?(l++,f=g[0]):f=g[d+1]:"left"===c?0===d?(l--,f=g[g.length-1]):f=g[d-1]:"up"===c?l--:"down"===c&&l++;0<=l&&l<k&&-1!==b.inArray(f,g)?(a&&a.preventDefault(),this._focus(l,f,!0,a)):e&&this.c.blurable?this._blur():a&&a.preventDefault()}},_tabInput:function(){var a=this,c=this.s.dt,e=null!==this.c.tabIndex?
+this.c.tabIndex:c.settings()[0].iTabIndex;if(-1!=e)b('<div><input type="text" tabindex="'+e+'"/></div>').css({position:"absolute",height:1,width:0,overflow:"hidden"}).insertBefore(c.table().node()).children().on("focus",function(b){var d=c.cell(":eq(0)",a._columns(),{page:"current"});d.any()&&a._focus(d,null,!0,b)})},_updateFixedColumns:function(a){var b=this.s.dt,e=b.settings()[0];if(e._oFixedColumns){var d=e.aoColumns.length-e._oFixedColumns.s.iRightColumns;(a<e._oFixedColumns.s.iLeftColumns||a>=
+d)&&b.fixedColumns().update()}}});p.defaults={blurable:!0,className:"focus",clipboard:!0,clipboardOrthogonal:"display",columns:"",editor:null,editOnFocus:!1,focus:null,keys:null,tabIndex:null};p.version="2.5.1";b.fn.dataTable.KeyTable=p;b.fn.DataTable.KeyTable=p;g.Api.register("cell.blur()",function(){return this.iterator("table",function(a){a.keytable&&a.keytable.blur()})});g.Api.register("cell().focus()",function(){return this.iterator("cell",function(a,b,e){a.keytable&&a.keytable.focus(b,e)})});
+g.Api.register("keys.disable()",function(){return this.iterator("table",function(a){a.keytable&&a.keytable.enable(!1)})});g.Api.register("keys.enable()",function(a){return this.iterator("table",function(b){b.keytable&&b.keytable.enable(a===l?!0:a)})});g.Api.register("keys.move()",function(a){return this.iterator("table",function(b){b.keytable&&b.keytable._shift(null,a,!1)})});g.ext.selector.cell.push(function(a,b,e){b=b.focused;a=a.keytable;var c=[];if(!a||b===l)return e;for(var f=0,g=e.length;f<
+g;f++)(!0===b&&a.focused(e[f])||!1===b&&!a.focused(e[f]))&&c.push(e[f]);return c});b(k).on("preInit.dt.dtk",function(a,c,e){"dt"===a.namespace&&(a=c.oInit.keys,e=g.defaults.keys,a||e)&&(e=b.extend({},e,a),!1!==a&&new p(c,e))});return p});
Index: public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 3 styling wrapper for KeyTable
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs', 'datatables.net-keytable'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.KeyTable ) {
+				require('datatables.net-keytable')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 3 styling wrapper for KeyTable
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-keytable"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs")(a,b).$);b.fn.dataTable.KeyTable||require("datatables.net-keytable")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap4.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 4 styling wrapper for KeyTable
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-keytable'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.KeyTable ) {
+				require('datatables.net-keytable')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 4 styling wrapper for KeyTable
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-keytable"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.KeyTable||require("datatables.net-keytable")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.dataTables.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! DataTables styling wrapper for KeyTable
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-dt', 'datatables.net-keytable'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-dt')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.KeyTable ) {
+				require('datatables.net-keytable')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.foundation.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Foundation styling wrapper for KeyTable
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-zf', 'datatables.net-keytable'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-zf')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.KeyTable ) {
+				require('datatables.net-keytable')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.foundation.min.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Foundation styling wrapper for KeyTable
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-keytable"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-zf")(a,b).$);b.fn.dataTable.KeyTable||require("datatables.net-keytable")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.jqueryui.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! jQuery UI styling wrapper for KeyTable
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-jqui', 'datatables.net-keytable'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-jqui')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.KeyTable ) {
+				require('datatables.net-keytable')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ jQuery UI styling wrapper for KeyTable
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-keytable"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-jqui")(a,b).$);b.fn.dataTable.KeyTable||require("datatables.net-keytable")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.semanticui.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Semanic UI styling wrapper for KeyTable
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-se', 'datatables.net-keytable'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-se')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.KeyTable ) {
+				require('datatables.net-keytable')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.semanticui.min.js
===================================================================
--- public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/KeyTable-2.5.1/js/keyTable.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Semanic UI styling wrapper for KeyTable
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-keytable"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-se")(a,b).$);b.fn.dataTable.KeyTable||require("datatables.net-keytable")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,180 @@
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
+  cursor: default !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
+  display: none !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child {
+  position: relative;
+  padding-left: 30px;
+  cursor: pointer;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child:before {
+  top: 9px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #337ab7;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {
+  padding-left: 27px;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {
+  top: 5px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  border-radius: 14px;
+  line-height: 14px;
+  text-indent: 3px;
+}
+table.dataTable.dtr-column > tbody > tr > td.control,
+table.dataTable.dtr-column > tbody > tr > th.control {
+  position: relative;
+  cursor: pointer;
+}
+table.dataTable.dtr-column > tbody > tr > td.control:before,
+table.dataTable.dtr-column > tbody > tr > th.control:before {
+  top: 50%;
+  left: 50%;
+  height: 16px;
+  width: 16px;
+  margin-top: -10px;
+  margin-left: -10px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #337ab7;
+}
+table.dataTable.dtr-column > tbody > tr.parent td.control:before,
+table.dataTable.dtr-column > tbody > tr.parent th.control:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable > tbody > tr.child {
+  padding: 0.5em 1em;
+}
+table.dataTable > tbody > tr.child:hover {
+  background: transparent !important;
+}
+table.dataTable > tbody > tr.child ul.dtr-details {
+  display: inline-block;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li {
+  border-bottom: 1px solid #efefef;
+  padding: 0.5em 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:first-child {
+  padding-top: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:last-child {
+  border-bottom: none;
+}
+table.dataTable > tbody > tr.child span.dtr-title {
+  display: inline-block;
+  min-width: 75px;
+  font-weight: bold;
+}
+
+div.dtr-modal {
+  position: fixed;
+  box-sizing: border-box;
+  top: 0;
+  left: 0;
+  height: 100%;
+  width: 100%;
+  z-index: 100;
+  padding: 10em 1em;
+}
+div.dtr-modal div.dtr-modal-display {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  width: 50%;
+  height: 50%;
+  overflow: auto;
+  margin: auto;
+  z-index: 102;
+  overflow: auto;
+  background-color: #f5f5f7;
+  border: 1px solid black;
+  border-radius: 0.5em;
+  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
+}
+div.dtr-modal div.dtr-modal-content {
+  position: relative;
+  padding: 1em;
+}
+div.dtr-modal div.dtr-modal-close {
+  position: absolute;
+  top: 6px;
+  right: 6px;
+  width: 22px;
+  height: 22px;
+  border: 1px solid #eaeaea;
+  background-color: #f9f9f9;
+  text-align: center;
+  border-radius: 3px;
+  cursor: pointer;
+  z-index: 12;
+}
+div.dtr-modal div.dtr-modal-close:hover {
+  background-color: #eaeaea;
+}
+div.dtr-modal div.dtr-modal-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+  background: rgba(0, 0, 0, 0.6);
+}
+
+@media screen and (max-width: 767px) {
+  div.dtr-modal div.dtr-modal-display {
+    width: 95%;
+  }
+}
+div.dtr-bs-modal table.table tr:first-child td {
+  border-top: none;
+}
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child:before{top:9px;left:4px;height:14px;width:14px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#337ab7}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#337ab7}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}div.dtr-bs-modal table.table tr:first-child td{border-top:none}
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap4.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,180 @@
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
+  cursor: default !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
+  display: none !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child {
+  position: relative;
+  padding-left: 30px;
+  cursor: pointer;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child:before {
+  top: 12px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #0275d8;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {
+  padding-left: 27px;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {
+  top: 5px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  border-radius: 14px;
+  line-height: 14px;
+  text-indent: 3px;
+}
+table.dataTable.dtr-column > tbody > tr > td.control,
+table.dataTable.dtr-column > tbody > tr > th.control {
+  position: relative;
+  cursor: pointer;
+}
+table.dataTable.dtr-column > tbody > tr > td.control:before,
+table.dataTable.dtr-column > tbody > tr > th.control:before {
+  top: 50%;
+  left: 50%;
+  height: 16px;
+  width: 16px;
+  margin-top: -10px;
+  margin-left: -10px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #0275d8;
+}
+table.dataTable.dtr-column > tbody > tr.parent td.control:before,
+table.dataTable.dtr-column > tbody > tr.parent th.control:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable > tbody > tr.child {
+  padding: 0.5em 1em;
+}
+table.dataTable > tbody > tr.child:hover {
+  background: transparent !important;
+}
+table.dataTable > tbody > tr.child ul.dtr-details {
+  display: inline-block;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li {
+  border-bottom: 1px solid #efefef;
+  padding: 0.5em 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:first-child {
+  padding-top: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:last-child {
+  border-bottom: none;
+}
+table.dataTable > tbody > tr.child span.dtr-title {
+  display: inline-block;
+  min-width: 75px;
+  font-weight: bold;
+}
+
+div.dtr-modal {
+  position: fixed;
+  box-sizing: border-box;
+  top: 0;
+  left: 0;
+  height: 100%;
+  width: 100%;
+  z-index: 100;
+  padding: 10em 1em;
+}
+div.dtr-modal div.dtr-modal-display {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  width: 50%;
+  height: 50%;
+  overflow: auto;
+  margin: auto;
+  z-index: 102;
+  overflow: auto;
+  background-color: #f5f5f7;
+  border: 1px solid black;
+  border-radius: 0.5em;
+  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
+}
+div.dtr-modal div.dtr-modal-content {
+  position: relative;
+  padding: 1em;
+}
+div.dtr-modal div.dtr-modal-close {
+  position: absolute;
+  top: 6px;
+  right: 6px;
+  width: 22px;
+  height: 22px;
+  border: 1px solid #eaeaea;
+  background-color: #f9f9f9;
+  text-align: center;
+  border-radius: 3px;
+  cursor: pointer;
+  z-index: 12;
+}
+div.dtr-modal div.dtr-modal-close:hover {
+  background-color: #eaeaea;
+}
+div.dtr-modal div.dtr-modal-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+  background: rgba(0, 0, 0, 0.6);
+}
+
+@media screen and (max-width: 767px) {
+  div.dtr-modal div.dtr-modal-display {
+    width: 95%;
+  }
+}
+div.dtr-bs-modal table.table tr:first-child td {
+  border-top: none;
+}
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child:before{top:12px;left:4px;height:14px;width:14px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#0275d8}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#0275d8}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}div.dtr-bs-modal table.table tr:first-child td{border-top:none}
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.dataTables.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,177 @@
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
+  cursor: default !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
+  display: none !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child {
+  position: relative;
+  padding-left: 30px;
+  cursor: pointer;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child:before {
+  top: 9px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #31b131;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {
+  padding-left: 27px;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {
+  top: 5px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  border-radius: 14px;
+  line-height: 14px;
+  text-indent: 3px;
+}
+table.dataTable.dtr-column > tbody > tr > td.control,
+table.dataTable.dtr-column > tbody > tr > th.control {
+  position: relative;
+  cursor: pointer;
+}
+table.dataTable.dtr-column > tbody > tr > td.control:before,
+table.dataTable.dtr-column > tbody > tr > th.control:before {
+  top: 50%;
+  left: 50%;
+  height: 16px;
+  width: 16px;
+  margin-top: -10px;
+  margin-left: -10px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #31b131;
+}
+table.dataTable.dtr-column > tbody > tr.parent td.control:before,
+table.dataTable.dtr-column > tbody > tr.parent th.control:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable > tbody > tr.child {
+  padding: 0.5em 1em;
+}
+table.dataTable > tbody > tr.child:hover {
+  background: transparent !important;
+}
+table.dataTable > tbody > tr.child ul.dtr-details {
+  display: inline-block;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li {
+  border-bottom: 1px solid #efefef;
+  padding: 0.5em 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:first-child {
+  padding-top: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:last-child {
+  border-bottom: none;
+}
+table.dataTable > tbody > tr.child span.dtr-title {
+  display: inline-block;
+  min-width: 75px;
+  font-weight: bold;
+}
+
+div.dtr-modal {
+  position: fixed;
+  box-sizing: border-box;
+  top: 0;
+  left: 0;
+  height: 100%;
+  width: 100%;
+  z-index: 100;
+  padding: 10em 1em;
+}
+div.dtr-modal div.dtr-modal-display {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  width: 50%;
+  height: 50%;
+  overflow: auto;
+  margin: auto;
+  z-index: 102;
+  overflow: auto;
+  background-color: #f5f5f7;
+  border: 1px solid black;
+  border-radius: 0.5em;
+  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
+}
+div.dtr-modal div.dtr-modal-content {
+  position: relative;
+  padding: 1em;
+}
+div.dtr-modal div.dtr-modal-close {
+  position: absolute;
+  top: 6px;
+  right: 6px;
+  width: 22px;
+  height: 22px;
+  border: 1px solid #eaeaea;
+  background-color: #f9f9f9;
+  text-align: center;
+  border-radius: 3px;
+  cursor: pointer;
+  z-index: 12;
+}
+div.dtr-modal div.dtr-modal-close:hover {
+  background-color: #eaeaea;
+}
+div.dtr-modal div.dtr-modal-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+  background: rgba(0, 0, 0, 0.6);
+}
+
+@media screen and (max-width: 767px) {
+  div.dtr-modal div.dtr-modal-display {
+    width: 95%;
+  }
+}
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.dataTables.min.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child:before{top:9px;left:4px;height:14px;width:14px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#31b131}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#31b131}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.foundation.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,180 @@
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
+  cursor: default !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
+  display: none !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child {
+  position: relative;
+  padding-left: 30px;
+  cursor: pointer;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child:before {
+  top: 9px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #008CBA;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {
+  padding-left: 27px;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {
+  top: 5px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  border-radius: 14px;
+  line-height: 14px;
+  text-indent: 3px;
+}
+table.dataTable.dtr-column > tbody > tr > td.control,
+table.dataTable.dtr-column > tbody > tr > th.control {
+  position: relative;
+  cursor: pointer;
+}
+table.dataTable.dtr-column > tbody > tr > td.control:before,
+table.dataTable.dtr-column > tbody > tr > th.control:before {
+  top: 50%;
+  left: 50%;
+  height: 16px;
+  width: 16px;
+  margin-top: -10px;
+  margin-left: -10px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #008CBA;
+}
+table.dataTable.dtr-column > tbody > tr.parent td.control:before,
+table.dataTable.dtr-column > tbody > tr.parent th.control:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable > tbody > tr.child {
+  padding: 0.5em 1em;
+}
+table.dataTable > tbody > tr.child:hover {
+  background: transparent !important;
+}
+table.dataTable > tbody > tr.child ul.dtr-details {
+  display: inline-block;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li {
+  border-bottom: 1px solid #efefef;
+  padding: 0.5em 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:first-child {
+  padding-top: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:last-child {
+  border-bottom: none;
+}
+table.dataTable > tbody > tr.child span.dtr-title {
+  display: inline-block;
+  min-width: 75px;
+  font-weight: bold;
+}
+
+div.dtr-modal {
+  position: fixed;
+  box-sizing: border-box;
+  top: 0;
+  left: 0;
+  height: 100%;
+  width: 100%;
+  z-index: 100;
+  padding: 10em 1em;
+}
+div.dtr-modal div.dtr-modal-display {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  width: 50%;
+  height: 50%;
+  overflow: auto;
+  margin: auto;
+  z-index: 102;
+  overflow: auto;
+  background-color: #f5f5f7;
+  border: 1px solid black;
+  border-radius: 0.5em;
+  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
+}
+div.dtr-modal div.dtr-modal-content {
+  position: relative;
+  padding: 1em;
+}
+div.dtr-modal div.dtr-modal-close {
+  position: absolute;
+  top: 6px;
+  right: 6px;
+  width: 22px;
+  height: 22px;
+  border: 1px solid #eaeaea;
+  background-color: #f9f9f9;
+  text-align: center;
+  border-radius: 3px;
+  cursor: pointer;
+  z-index: 12;
+}
+div.dtr-modal div.dtr-modal-close:hover {
+  background-color: #eaeaea;
+}
+div.dtr-modal div.dtr-modal-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+  background: rgba(0, 0, 0, 0.6);
+}
+
+@media screen and (max-width: 767px) {
+  div.dtr-modal div.dtr-modal-display {
+    width: 95%;
+  }
+}
+table.dataTable > tbody > tr.child ul {
+  font-size: 1em;
+}
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.foundation.min.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child:before{top:9px;left:4px;height:14px;width:14px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#008CBA}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#008CBA}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}table.dataTable>tbody>tr.child ul{font-size:1em}
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.jqueryui.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,177 @@
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
+  cursor: default !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
+  display: none !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child {
+  position: relative;
+  padding-left: 30px;
+  cursor: pointer;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child:before {
+  top: 9px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #31b131;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {
+  padding-left: 27px;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {
+  top: 5px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  border-radius: 14px;
+  line-height: 14px;
+  text-indent: 3px;
+}
+table.dataTable.dtr-column > tbody > tr > td.control,
+table.dataTable.dtr-column > tbody > tr > th.control {
+  position: relative;
+  cursor: pointer;
+}
+table.dataTable.dtr-column > tbody > tr > td.control:before,
+table.dataTable.dtr-column > tbody > tr > th.control:before {
+  top: 50%;
+  left: 50%;
+  height: 16px;
+  width: 16px;
+  margin-top: -10px;
+  margin-left: -10px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #31b131;
+}
+table.dataTable.dtr-column > tbody > tr.parent td.control:before,
+table.dataTable.dtr-column > tbody > tr.parent th.control:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable > tbody > tr.child {
+  padding: 0.5em 1em;
+}
+table.dataTable > tbody > tr.child:hover {
+  background: transparent !important;
+}
+table.dataTable > tbody > tr.child ul.dtr-details {
+  display: inline-block;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li {
+  border-bottom: 1px solid #efefef;
+  padding: 0.5em 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:first-child {
+  padding-top: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:last-child {
+  border-bottom: none;
+}
+table.dataTable > tbody > tr.child span.dtr-title {
+  display: inline-block;
+  min-width: 75px;
+  font-weight: bold;
+}
+
+div.dtr-modal {
+  position: fixed;
+  box-sizing: border-box;
+  top: 0;
+  left: 0;
+  height: 100%;
+  width: 100%;
+  z-index: 100;
+  padding: 10em 1em;
+}
+div.dtr-modal div.dtr-modal-display {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  width: 50%;
+  height: 50%;
+  overflow: auto;
+  margin: auto;
+  z-index: 102;
+  overflow: auto;
+  background-color: #f5f5f7;
+  border: 1px solid black;
+  border-radius: 0.5em;
+  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
+}
+div.dtr-modal div.dtr-modal-content {
+  position: relative;
+  padding: 1em;
+}
+div.dtr-modal div.dtr-modal-close {
+  position: absolute;
+  top: 6px;
+  right: 6px;
+  width: 22px;
+  height: 22px;
+  border: 1px solid #eaeaea;
+  background-color: #f9f9f9;
+  text-align: center;
+  border-radius: 3px;
+  cursor: pointer;
+  z-index: 12;
+}
+div.dtr-modal div.dtr-modal-close:hover {
+  background-color: #eaeaea;
+}
+div.dtr-modal div.dtr-modal-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+  background: rgba(0, 0, 0, 0.6);
+}
+
+@media screen and (max-width: 767px) {
+  div.dtr-modal div.dtr-modal-display {
+    width: 95%;
+  }
+}
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child:before{top:9px;left:4px;height:14px;width:14px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#31b131}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#31b131}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.semanticui.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,180 @@
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
+  cursor: default !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
+  display: none !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child {
+  position: relative;
+  padding-left: 30px;
+  cursor: pointer;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child:before {
+  top: 9px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #21ba45;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {
+  padding-left: 27px;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {
+  top: 5px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  border-radius: 14px;
+  line-height: 14px;
+  text-indent: 3px;
+}
+table.dataTable.dtr-column > tbody > tr > td.control,
+table.dataTable.dtr-column > tbody > tr > th.control {
+  position: relative;
+  cursor: pointer;
+}
+table.dataTable.dtr-column > tbody > tr > td.control:before,
+table.dataTable.dtr-column > tbody > tr > th.control:before {
+  top: 50%;
+  left: 50%;
+  height: 16px;
+  width: 16px;
+  margin-top: -10px;
+  margin-left: -10px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #21ba45;
+}
+table.dataTable.dtr-column > tbody > tr.parent td.control:before,
+table.dataTable.dtr-column > tbody > tr.parent th.control:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable > tbody > tr.child {
+  padding: 0.5em 1em;
+}
+table.dataTable > tbody > tr.child:hover {
+  background: transparent !important;
+}
+table.dataTable > tbody > tr.child ul.dtr-details {
+  display: inline-block;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li {
+  border-bottom: 1px solid #efefef;
+  padding: 0.5em 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:first-child {
+  padding-top: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:last-child {
+  border-bottom: none;
+}
+table.dataTable > tbody > tr.child span.dtr-title {
+  display: inline-block;
+  min-width: 75px;
+  font-weight: bold;
+}
+
+div.dtr-modal {
+  position: fixed;
+  box-sizing: border-box;
+  top: 0;
+  left: 0;
+  height: 100%;
+  width: 100%;
+  z-index: 100;
+  padding: 10em 1em;
+}
+div.dtr-modal div.dtr-modal-display {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  width: 50%;
+  height: 50%;
+  overflow: auto;
+  margin: auto;
+  z-index: 102;
+  overflow: auto;
+  background-color: #f5f5f7;
+  border: 1px solid black;
+  border-radius: 0.5em;
+  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
+}
+div.dtr-modal div.dtr-modal-content {
+  position: relative;
+  padding: 1em;
+}
+div.dtr-modal div.dtr-modal-close {
+  position: absolute;
+  top: 6px;
+  right: 6px;
+  width: 22px;
+  height: 22px;
+  border: 1px solid #eaeaea;
+  background-color: #f9f9f9;
+  text-align: center;
+  border-radius: 3px;
+  cursor: pointer;
+  z-index: 12;
+}
+div.dtr-modal div.dtr-modal-close:hover {
+  background-color: #eaeaea;
+}
+div.dtr-modal div.dtr-modal-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+  background: rgba(0, 0, 0, 0.6);
+}
+
+@media screen and (max-width: 767px) {
+  div.dtr-modal div.dtr-modal-display {
+    width: 95%;
+  }
+}
+div.dtr-bs-modal table.table tr:first-child td {
+  border-top: none;
+}
Index: public/vendors/dataTable/Responsive-2.2.3/css/responsive.semanticui.min.css
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/css/responsive.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/css/responsive.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child:before{top:9px;left:4px;height:14px;width:14px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#21ba45}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#21ba45}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}div.dtr-bs-modal table.table tr:first-child td{border-top:none}
Index: public/vendors/dataTable/Responsive-2.2.3/js/dataTables.responsive.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/dataTables.responsive.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/dataTables.responsive.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1393 @@
+/*! Responsive 2.2.3
+ * 2014-2018 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     Responsive
+ * @description Responsive tables plug-in for DataTables
+ * @version     2.2.3
+ * @file        dataTables.responsive.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2014-2018 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/**
+ * Responsive is a plug-in for the DataTables library that makes use of
+ * DataTables' ability to change the visibility of columns, changing the
+ * visibility of columns so the displayed columns fit into the table container.
+ * The end result is that complex tables will be dynamically adjusted to fit
+ * into the viewport, be it on a desktop, tablet or mobile browser.
+ *
+ * Responsive for DataTables has two modes of operation, which can used
+ * individually or combined:
+ *
+ * * Class name based control - columns assigned class names that match the
+ *   breakpoint logic can be shown / hidden as required for each breakpoint.
+ * * Automatic control - columns are automatically hidden when there is no
+ *   room left to display them. Columns removed from the right.
+ *
+ * In additional to column visibility control, Responsive also has built into
+ * options to use DataTables' child row display to show / hide the information
+ * from the table that has been hidden. There are also two modes of operation
+ * for this child row display:
+ *
+ * * Inline - when the control element that the user can use to show / hide
+ *   child rows is displayed inside the first column of the table.
+ * * Column - where a whole column is dedicated to be the show / hide control.
+ *
+ * Initialisation of Responsive is performed by:
+ *
+ * * Adding the class `responsive` or `dt-responsive` to the table. In this case
+ *   Responsive will automatically be initialised with the default configuration
+ *   options when the DataTable is created.
+ * * Using the `responsive` option in the DataTables configuration options. This
+ *   can also be used to specify the configuration options, or simply set to
+ *   `true` to use the defaults.
+ *
+ *  @class
+ *  @param {object} settings DataTables settings object for the host table
+ *  @param {object} [opts] Configuration options
+ *  @requires jQuery 1.7+
+ *  @requires DataTables 1.10.3+
+ *
+ *  @example
+ *      $('#example').DataTable( {
+ *        responsive: true
+ *      } );
+ *    } );
+ */
+var Responsive = function ( settings, opts ) {
+	// Sanity check that we are using DataTables 1.10 or newer
+	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.10' ) ) {
+		throw 'DataTables Responsive requires DataTables 1.10.10 or newer';
+	}
+
+	this.s = {
+		dt: new DataTable.Api( settings ),
+		columns: [],
+		current: []
+	};
+
+	// Check if responsive has already been initialised on this table
+	if ( this.s.dt.settings()[0].responsive ) {
+		return;
+	}
+
+	// details is an object, but for simplicity the user can give it as a string
+	// or a boolean
+	if ( opts && typeof opts.details === 'string' ) {
+		opts.details = { type: opts.details };
+	}
+	else if ( opts && opts.details === false ) {
+		opts.details = { type: false };
+	}
+	else if ( opts && opts.details === true ) {
+		opts.details = { type: 'inline' };
+	}
+
+	this.c = $.extend( true, {}, Responsive.defaults, DataTable.defaults.responsive, opts );
+	settings.responsive = this;
+	this._constructor();
+};
+
+$.extend( Responsive.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Initialise the Responsive instance
+	 *
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var dtPrivateSettings = dt.settings()[0];
+		var oldWindowWidth = $(window).width();
+
+		dt.settings()[0]._responsive = this;
+
+		// Use DataTables' throttle function to avoid processor thrashing on
+		// resize
+		$(window).on( 'resize.dtr orientationchange.dtr', DataTable.util.throttle( function () {
+			// iOS has a bug whereby resize can fire when only scrolling
+			// See: http://stackoverflow.com/questions/8898412
+			var width = $(window).width();
+
+			if ( width !== oldWindowWidth ) {
+				that._resize();
+				oldWindowWidth = width;
+			}
+		} ) );
+
+		// DataTables doesn't currently trigger an event when a row is added, so
+		// we need to hook into its private API to enforce the hidden rows when
+		// new data is added
+		dtPrivateSettings.oApi._fnCallbackReg( dtPrivateSettings, 'aoRowCreatedCallback', function (tr, data, idx) {
+			if ( $.inArray( false, that.s.current ) !== -1 ) {
+				$('>td, >th', tr).each( function ( i ) {
+					var idx = dt.column.index( 'toData', i );
+
+					if ( that.s.current[idx] === false ) {
+						$(this).css('display', 'none');
+					}
+				} );
+			}
+		} );
+
+		// Destroy event handler
+		dt.on( 'destroy.dtr', function () {
+			dt.off( '.dtr' );
+			$( dt.table().body() ).off( '.dtr' );
+			$(window).off( 'resize.dtr orientationchange.dtr' );
+
+			// Restore the columns that we've hidden
+			$.each( that.s.current, function ( i, val ) {
+				if ( val === false ) {
+					that._setColumnVis( i, true );
+				}
+			} );
+		} );
+
+		// Reorder the breakpoints array here in case they have been added out
+		// of order
+		this.c.breakpoints.sort( function (a, b) {
+			return a.width < b.width ? 1 :
+				a.width > b.width ? -1 : 0;
+		} );
+
+		this._classLogic();
+		this._resizeAuto();
+
+		// Details handler
+		var details = this.c.details;
+
+		if ( details.type !== false ) {
+			that._detailsInit();
+
+			// DataTables will trigger this event on every column it shows and
+			// hides individually
+			dt.on( 'column-visibility.dtr', function () {
+				// Use a small debounce to allow multiple columns to be set together
+				if ( that._timer ) {
+					clearTimeout( that._timer );
+				}
+
+				that._timer = setTimeout( function () {
+					that._timer = null;
+
+					that._classLogic();
+					that._resizeAuto();
+					that._resize();
+
+					that._redrawChildren();
+				}, 100 );
+			} );
+
+			// Redraw the details box on each draw which will happen if the data
+			// has changed. This is used until DataTables implements a native
+			// `updated` event for rows
+			dt.on( 'draw.dtr', function () {
+				that._redrawChildren();
+			} );
+
+			$(dt.table().node()).addClass( 'dtr-'+details.type );
+		}
+
+		dt.on( 'column-reorder.dtr', function (e, settings, details) {
+			that._classLogic();
+			that._resizeAuto();
+			that._resize();
+		} );
+
+		// Change in column sizes means we need to calc
+		dt.on( 'column-sizing.dtr', function () {
+			that._resizeAuto();
+			that._resize();
+		});
+
+		// On Ajax reload we want to reopen any child rows which are displayed
+		// by responsive
+		dt.on( 'preXhr.dtr', function () {
+			var rowIds = [];
+			dt.rows().every( function () {
+				if ( this.child.isShown() ) {
+					rowIds.push( this.id(true) );
+				}
+			} );
+
+			dt.one( 'draw.dtr', function () {
+				that._resizeAuto();
+				that._resize();
+
+				dt.rows( rowIds ).every( function () {
+					that._detailsDisplay( this, false );
+				} );
+			} );
+		});
+
+		dt.on( 'init.dtr', function (e, settings, details) {
+			that._resizeAuto();
+			that._resize();
+
+			// If columns were hidden, then DataTables needs to adjust the
+			// column sizing
+			if ( $.inArray( false, that.s.current ) ) {
+				dt.columns.adjust();
+			}
+		} );
+
+		// First pass - draw the table for the current viewport size
+		this._resize();
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Calculate the visibility for the columns in a table for a given
+	 * breakpoint. The result is pre-determined based on the class logic if
+	 * class names are used to control all columns, but the width of the table
+	 * is also used if there are columns which are to be automatically shown
+	 * and hidden.
+	 *
+	 * @param  {string} breakpoint Breakpoint name to use for the calculation
+	 * @return {array} Array of boolean values initiating the visibility of each
+	 *   column.
+	 *  @private
+	 */
+	_columnsVisiblity: function ( breakpoint )
+	{
+		var dt = this.s.dt;
+		var columns = this.s.columns;
+		var i, ien;
+
+		// Create an array that defines the column ordering based first on the
+		// column's priority, and secondly the column index. This allows the
+		// columns to be removed from the right if the priority matches
+		var order = columns
+			.map( function ( col, idx ) {
+				return {
+					columnIdx: idx,
+					priority: col.priority
+				};
+			} )
+			.sort( function ( a, b ) {
+				if ( a.priority !== b.priority ) {
+					return a.priority - b.priority;
+				}
+				return a.columnIdx - b.columnIdx;
+			} );
+
+		// Class logic - determine which columns are in this breakpoint based
+		// on the classes. If no class control (i.e. `auto`) then `-` is used
+		// to indicate this to the rest of the function
+		var display = $.map( columns, function ( col, i ) {
+			if ( dt.column(i).visible() === false ) {
+				return 'not-visible';
+			}
+			return col.auto && col.minWidth === null ?
+				false :
+				col.auto === true ?
+					'-' :
+					$.inArray( breakpoint, col.includeIn ) !== -1;
+		} );
+
+		// Auto column control - first pass: how much width is taken by the
+		// ones that must be included from the non-auto columns
+		var requiredWidth = 0;
+		for ( i=0, ien=display.length ; i<ien ; i++ ) {
+			if ( display[i] === true ) {
+				requiredWidth += columns[i].minWidth;
+			}
+		}
+
+		// Second pass, use up any remaining width for other columns. For
+		// scrolling tables we need to subtract the width of the scrollbar. It
+		// may not be requires which makes this sub-optimal, but it would
+		// require another full redraw to make complete use of those extra few
+		// pixels
+		var scrolling = dt.settings()[0].oScroll;
+		var bar = scrolling.sY || scrolling.sX ? scrolling.iBarWidth : 0;
+		var widthAvailable = dt.table().container().offsetWidth - bar;
+		var usedWidth = widthAvailable - requiredWidth;
+
+		// Control column needs to always be included. This makes it sub-
+		// optimal in terms of using the available with, but to stop layout
+		// thrashing or overflow. Also we need to account for the control column
+		// width first so we know how much width is available for the other
+		// columns, since the control column might not be the first one shown
+		for ( i=0, ien=display.length ; i<ien ; i++ ) {
+			if ( columns[i].control ) {
+				usedWidth -= columns[i].minWidth;
+			}
+		}
+
+		// Allow columns to be shown (counting by priority and then right to
+		// left) until we run out of room
+		var empty = false;
+		for ( i=0, ien=order.length ; i<ien ; i++ ) {
+			var colIdx = order[i].columnIdx;
+
+			if ( display[colIdx] === '-' && ! columns[colIdx].control && columns[colIdx].minWidth ) {
+				// Once we've found a column that won't fit we don't let any
+				// others display either, or columns might disappear in the
+				// middle of the table
+				if ( empty || usedWidth - columns[colIdx].minWidth < 0 ) {
+					empty = true;
+					display[colIdx] = false;
+				}
+				else {
+					display[colIdx] = true;
+				}
+
+				usedWidth -= columns[colIdx].minWidth;
+			}
+		}
+
+		// Determine if the 'control' column should be shown (if there is one).
+		// This is the case when there is a hidden column (that is not the
+		// control column). The two loops look inefficient here, but they are
+		// trivial and will fly through. We need to know the outcome from the
+		// first , before the action in the second can be taken
+		var showControl = false;
+
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			if ( ! columns[i].control && ! columns[i].never && display[i] === false ) {
+				showControl = true;
+				break;
+			}
+		}
+
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			if ( columns[i].control ) {
+				display[i] = showControl;
+			}
+
+			// Replace not visible string with false from the control column detection above
+			if ( display[i] === 'not-visible' ) {
+				display[i] = false;
+			}
+		}
+
+		// Finally we need to make sure that there is at least one column that
+		// is visible
+		if ( $.inArray( true, display ) === -1 ) {
+			display[0] = true;
+		}
+
+		return display;
+	},
+
+
+	/**
+	 * Create the internal `columns` array with information about the columns
+	 * for the table. This includes determining which breakpoints the column
+	 * will appear in, based upon class names in the column, which makes up the
+	 * vast majority of this method.
+	 *
+	 * @private
+	 */
+	_classLogic: function ()
+	{
+		var that = this;
+		var calc = {};
+		var breakpoints = this.c.breakpoints;
+		var dt = this.s.dt;
+		var columns = dt.columns().eq(0).map( function (i) {
+			var column = this.column(i);
+			var className = column.header().className;
+			var priority = dt.settings()[0].aoColumns[i].responsivePriority;
+
+			if ( priority === undefined ) {
+				var dataPriority = $(column.header()).data('priority');
+
+				priority = dataPriority !== undefined ?
+					dataPriority * 1 :
+					10000;
+			}
+
+			return {
+				className: className,
+				includeIn: [],
+				auto:      false,
+				control:   false,
+				never:     className.match(/\bnever\b/) ? true : false,
+				priority:  priority
+			};
+		} );
+
+		// Simply add a breakpoint to `includeIn` array, ensuring that there are
+		// no duplicates
+		var add = function ( colIdx, name ) {
+			var includeIn = columns[ colIdx ].includeIn;
+
+			if ( $.inArray( name, includeIn ) === -1 ) {
+				includeIn.push( name );
+			}
+		};
+
+		var column = function ( colIdx, name, operator, matched ) {
+			var size, i, ien;
+
+			if ( ! operator ) {
+				columns[ colIdx ].includeIn.push( name );
+			}
+			else if ( operator === 'max-' ) {
+				// Add this breakpoint and all smaller
+				size = that._find( name ).width;
+
+				for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+					if ( breakpoints[i].width <= size ) {
+						add( colIdx, breakpoints[i].name );
+					}
+				}
+			}
+			else if ( operator === 'min-' ) {
+				// Add this breakpoint and all larger
+				size = that._find( name ).width;
+
+				for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+					if ( breakpoints[i].width >= size ) {
+						add( colIdx, breakpoints[i].name );
+					}
+				}
+			}
+			else if ( operator === 'not-' ) {
+				// Add all but this breakpoint
+				for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+					if ( breakpoints[i].name.indexOf( matched ) === -1 ) {
+						add( colIdx, breakpoints[i].name );
+					}
+				}
+			}
+		};
+
+		// Loop over each column and determine if it has a responsive control
+		// class
+		columns.each( function ( col, i ) {
+			var classNames = col.className.split(' ');
+			var hasClass = false;
+
+			// Split the class name up so multiple rules can be applied if needed
+			for ( var k=0, ken=classNames.length ; k<ken ; k++ ) {
+				var className = $.trim( classNames[k] );
+
+				if ( className === 'all' ) {
+					// Include in all
+					hasClass = true;
+					col.includeIn = $.map( breakpoints, function (a) {
+						return a.name;
+					} );
+					return;
+				}
+				else if ( className === 'none' || col.never ) {
+					// Include in none (default) and no auto
+					hasClass = true;
+					return;
+				}
+				else if ( className === 'control' ) {
+					// Special column that is only visible, when one of the other
+					// columns is hidden. This is used for the details control
+					hasClass = true;
+					col.control = true;
+					return;
+				}
+
+				$.each( breakpoints, function ( j, breakpoint ) {
+					// Does this column have a class that matches this breakpoint?
+					var brokenPoint = breakpoint.name.split('-');
+					var re = new RegExp( '(min\\-|max\\-|not\\-)?('+brokenPoint[0]+')(\\-[_a-zA-Z0-9])?' );
+					var match = className.match( re );
+
+					if ( match ) {
+						hasClass = true;
+
+						if ( match[2] === brokenPoint[0] && match[3] === '-'+brokenPoint[1] ) {
+							// Class name matches breakpoint name fully
+							column( i, breakpoint.name, match[1], match[2]+match[3] );
+						}
+						else if ( match[2] === brokenPoint[0] && ! match[3] ) {
+							// Class name matched primary breakpoint name with no qualifier
+							column( i, breakpoint.name, match[1], match[2] );
+						}
+					}
+				} );
+			}
+
+			// If there was no control class, then automatic sizing is used
+			if ( ! hasClass ) {
+				col.auto = true;
+			}
+		} );
+
+		this.s.columns = columns;
+	},
+
+
+	/**
+	 * Show the details for the child row
+	 *
+	 * @param  {DataTables.Api} row    API instance for the row
+	 * @param  {boolean}        update Update flag
+	 * @private
+	 */
+	_detailsDisplay: function ( row, update )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var details = this.c.details;
+
+		if ( details && details.type !== false ) {
+			var res = details.display( row, update, function () {
+				return details.renderer(
+					dt, row[0], that._detailsObj(row[0])
+				);
+			} );
+
+			if ( res === true || res === false ) {
+				$(dt.table().node()).triggerHandler( 'responsive-display.dt', [dt, row, res, update] );
+			}
+		}
+	},
+
+
+	/**
+	 * Initialisation for the details handler
+	 *
+	 * @private
+	 */
+	_detailsInit: function ()
+	{
+		var that    = this;
+		var dt      = this.s.dt;
+		var details = this.c.details;
+
+		// The inline type always uses the first child as the target
+		if ( details.type === 'inline' ) {
+			details.target = 'td:first-child, th:first-child';
+		}
+
+		// Keyboard accessibility
+		dt.on( 'draw.dtr', function () {
+			that._tabIndexes();
+		} );
+		that._tabIndexes(); // Initial draw has already happened
+
+		$( dt.table().body() ).on( 'keyup.dtr', 'td, th', function (e) {
+			if ( e.keyCode === 13 && $(this).data('dtr-keyboard') ) {
+				$(this).click();
+			}
+		} );
+
+		// type.target can be a string jQuery selector or a column index
+		var target   = details.target;
+		var selector = typeof target === 'string' ? target : 'td, th';
+
+		// Click handler to show / hide the details rows when they are available
+		$( dt.table().body() )
+			.on( 'click.dtr mousedown.dtr mouseup.dtr', selector, function (e) {
+				// If the table is not collapsed (i.e. there is no hidden columns)
+				// then take no action
+				if ( ! $(dt.table().node()).hasClass('collapsed' ) ) {
+					return;
+				}
+
+				// Check that the row is actually a DataTable's controlled node
+				if ( $.inArray( $(this).closest('tr').get(0), dt.rows().nodes().toArray() ) === -1 ) {
+					return;
+				}
+
+				// For column index, we determine if we should act or not in the
+				// handler - otherwise it is already okay
+				if ( typeof target === 'number' ) {
+					var targetIdx = target < 0 ?
+						dt.columns().eq(0).length + target :
+						target;
+
+					if ( dt.cell( this ).index().column !== targetIdx ) {
+						return;
+					}
+				}
+
+				// $().closest() includes itself in its check
+				var row = dt.row( $(this).closest('tr') );
+
+				// Check event type to do an action
+				if ( e.type === 'click' ) {
+					// The renderer is given as a function so the caller can execute it
+					// only when they need (i.e. if hiding there is no point is running
+					// the renderer)
+					that._detailsDisplay( row, false );
+				}
+				else if ( e.type === 'mousedown' ) {
+					// For mouse users, prevent the focus ring from showing
+					$(this).css('outline', 'none');
+				}
+				else if ( e.type === 'mouseup' ) {
+					// And then re-allow at the end of the click
+					$(this).blur().css('outline', '');
+				}
+			} );
+	},
+
+
+	/**
+	 * Get the details to pass to a renderer for a row
+	 * @param  {int} rowIdx Row index
+	 * @private
+	 */
+	_detailsObj: function ( rowIdx )
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		return $.map( this.s.columns, function( col, i ) {
+			// Never and control columns should not be passed to the renderer
+			if ( col.never || col.control ) {
+				return;
+			}
+
+			return {
+				title:       dt.settings()[0].aoColumns[ i ].sTitle,
+				data:        dt.cell( rowIdx, i ).render( that.c.orthogonal ),
+				hidden:      dt.column( i ).visible() && !that.s.current[ i ],
+				columnIndex: i,
+				rowIndex:    rowIdx
+			};
+		} );
+	},
+
+
+	/**
+	 * Find a breakpoint object from a name
+	 *
+	 * @param  {string} name Breakpoint name to find
+	 * @return {object}      Breakpoint description object
+	 * @private
+	 */
+	_find: function ( name )
+	{
+		var breakpoints = this.c.breakpoints;
+
+		for ( var i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+			if ( breakpoints[i].name === name ) {
+				return breakpoints[i];
+			}
+		}
+	},
+
+
+	/**
+	 * Re-create the contents of the child rows as the display has changed in
+	 * some way.
+	 *
+	 * @private
+	 */
+	_redrawChildren: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		dt.rows( {page: 'current'} ).iterator( 'row', function ( settings, idx ) {
+			var row = dt.row( idx );
+
+			that._detailsDisplay( dt.row( idx ), true );
+		} );
+	},
+
+
+	/**
+	 * Alter the table display for a resized viewport. This involves first
+	 * determining what breakpoint the window currently is in, getting the
+	 * column visibilities to apply and then setting them.
+	 *
+	 * @private
+	 */
+	_resize: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var width = $(window).width();
+		var breakpoints = this.c.breakpoints;
+		var breakpoint = breakpoints[0].name;
+		var columns = this.s.columns;
+		var i, ien;
+		var oldVis = this.s.current.slice();
+
+		// Determine what breakpoint we are currently at
+		for ( i=breakpoints.length-1 ; i>=0 ; i-- ) {
+			if ( width <= breakpoints[i].width ) {
+				breakpoint = breakpoints[i].name;
+				break;
+			}
+		}
+		
+		// Show the columns for that break point
+		var columnsVis = this._columnsVisiblity( breakpoint );
+		this.s.current = columnsVis;
+
+		// Set the class before the column visibility is changed so event
+		// listeners know what the state is. Need to determine if there are
+		// any columns that are not visible but can be shown
+		var collapsedClass = false;
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			if ( columnsVis[i] === false && ! columns[i].never && ! columns[i].control && ! dt.column(i).visible() === false ) {
+				collapsedClass = true;
+				break;
+			}
+		}
+
+		$( dt.table().node() ).toggleClass( 'collapsed', collapsedClass );
+
+		var changed = false;
+		var visible = 0;
+
+		dt.columns().eq(0).each( function ( colIdx, i ) {
+			if ( columnsVis[i] === true ) {
+				visible++;
+			}
+
+			if ( columnsVis[i] !== oldVis[i] ) {
+				changed = true;
+				that._setColumnVis( colIdx, columnsVis[i] );
+			}
+		} );
+
+		if ( changed ) {
+			this._redrawChildren();
+
+			// Inform listeners of the change
+			$(dt.table().node()).trigger( 'responsive-resize.dt', [dt, this.s.current] );
+
+			// If no records, update the "No records" display element
+			if ( dt.page.info().recordsDisplay === 0 ) {
+				$('td', dt.table().body()).eq(0).attr('colspan', visible);
+			}
+		}
+	},
+
+
+	/**
+	 * Determine the width of each column in the table so the auto column hiding
+	 * has that information to work with. This method is never going to be 100%
+	 * perfect since column widths can change slightly per page, but without
+	 * seriously compromising performance this is quite effective.
+	 *
+	 * @private
+	 */
+	_resizeAuto: function ()
+	{
+		var dt = this.s.dt;
+		var columns = this.s.columns;
+
+		// Are we allowed to do auto sizing?
+		if ( ! this.c.auto ) {
+			return;
+		}
+
+		// Are there any columns that actually need auto-sizing, or do they all
+		// have classes defined
+		if ( $.inArray( true, $.map( columns, function (c) { return c.auto; } ) ) === -1 ) {
+			return;
+		}
+
+		// Need to restore all children. They will be reinstated by a re-render
+		if ( ! $.isEmptyObject( _childNodeStore ) ) {
+			$.each( _childNodeStore, function ( key ) {
+				var idx = key.split('-');
+
+				_childNodesRestore( dt, idx[0]*1, idx[1]*1 );
+			} );
+		}
+
+		// Clone the table with the current data in it
+		var tableWidth   = dt.table().node().offsetWidth;
+		var columnWidths = dt.columns;
+		var clonedTable  = dt.table().node().cloneNode( false );
+		var clonedHeader = $( dt.table().header().cloneNode( false ) ).appendTo( clonedTable );
+		var clonedBody   = $( dt.table().body() ).clone( false, false ).empty().appendTo( clonedTable ); // use jQuery because of IE8
+
+		// Header
+		var headerCells = dt.columns()
+			.header()
+			.filter( function (idx) {
+				return dt.column(idx).visible();
+			} )
+			.to$()
+			.clone( false )
+			.css( 'display', 'table-cell' )
+			.css( 'min-width', 0 );
+
+		// Body rows - we don't need to take account of DataTables' column
+		// visibility since we implement our own here (hence the `display` set)
+		$(clonedBody)
+			.append( $(dt.rows( { page: 'current' } ).nodes()).clone( false ) )
+			.find( 'th, td' ).css( 'display', '' );
+
+		// Footer
+		var footer = dt.table().footer();
+		if ( footer ) {
+			var clonedFooter = $( footer.cloneNode( false ) ).appendTo( clonedTable );
+			var footerCells = dt.columns()
+				.footer()
+				.filter( function (idx) {
+					return dt.column(idx).visible();
+				} )
+				.to$()
+				.clone( false )
+				.css( 'display', 'table-cell' );
+
+			$('<tr/>')
+				.append( footerCells )
+				.appendTo( clonedFooter );
+		}
+
+		$('<tr/>')
+			.append( headerCells )
+			.appendTo( clonedHeader );
+
+		// In the inline case extra padding is applied to the first column to
+		// give space for the show / hide icon. We need to use this in the
+		// calculation
+		if ( this.c.details.type === 'inline' ) {
+			$(clonedTable).addClass( 'dtr-inline collapsed' );
+		}
+		
+		// It is unsafe to insert elements with the same name into the DOM
+		// multiple times. For example, cloning and inserting a checked radio
+		// clears the chcecked state of the original radio.
+		$( clonedTable ).find( '[name]' ).removeAttr( 'name' );
+
+		// A position absolute table would take the table out of the flow of
+		// our container element, bypassing the height and width (Scroller)
+		$( clonedTable ).css( 'position', 'relative' )
+		
+		var inserted = $('<div/>')
+			.css( {
+				width: 1,
+				height: 1,
+				overflow: 'hidden',
+				clear: 'both'
+			} )
+			.append( clonedTable );
+
+		inserted.insertBefore( dt.table().node() );
+
+		// The cloned header now contains the smallest that each column can be
+		headerCells.each( function (i) {
+			var idx = dt.column.index( 'fromVisible', i );
+			columns[ idx ].minWidth =  this.offsetWidth || 0;
+		} );
+
+		inserted.remove();
+	},
+
+	/**
+	 * Set a column's visibility.
+	 *
+	 * We don't use DataTables' column visibility controls in order to ensure
+	 * that column visibility can Responsive can no-exist. Since only IE8+ is
+	 * supported (and all evergreen browsers of course) the control of the
+	 * display attribute works well.
+	 *
+	 * @param {integer} col      Column index
+	 * @param {boolean} showHide Show or hide (true or false)
+	 * @private
+	 */
+	_setColumnVis: function ( col, showHide )
+	{
+		var dt = this.s.dt;
+		var display = showHide ? '' : 'none'; // empty string will remove the attr
+
+		$( dt.column( col ).header() ).css( 'display', display );
+		$( dt.column( col ).footer() ).css( 'display', display );
+		dt.column( col ).nodes().to$().css( 'display', display );
+
+		// If the are child nodes stored, we might need to reinsert them
+		if ( ! $.isEmptyObject( _childNodeStore ) ) {
+			dt.cells( null, col ).indexes().each( function (idx) {
+				_childNodesRestore( dt, idx.row, idx.column );
+			} );
+		}
+	},
+
+
+	/**
+	 * Update the cell tab indexes for keyboard accessibility. This is called on
+	 * every table draw - that is potentially inefficient, but also the least
+	 * complex option given that column visibility can change on the fly. Its a
+	 * shame user-focus was removed from CSS 3 UI, as it would have solved this
+	 * issue with a single CSS statement.
+	 *
+	 * @private
+	 */
+	_tabIndexes: function ()
+	{
+		var dt = this.s.dt;
+		var cells = dt.cells( { page: 'current' } ).nodes().to$();
+		var ctx = dt.settings()[0];
+		var target = this.c.details.target;
+
+		cells.filter( '[data-dtr-keyboard]' ).removeData( '[data-dtr-keyboard]' );
+
+		if ( typeof target === 'number' ) {
+			dt.cells( null, target, { page: 'current' } ).nodes().to$()
+				.attr( 'tabIndex', ctx.iTabIndex )
+				.data( 'dtr-keyboard', 1 );
+		}
+		else {
+			// This is a bit of a hack - we need to limit the selected nodes to just
+			// those of this table
+			if ( target === 'td:first-child, th:first-child' ) {
+				target = '>td:first-child, >th:first-child';
+			}
+
+			$( target, dt.rows( { page: 'current' } ).nodes() )
+				.attr( 'tabIndex', ctx.iTabIndex )
+				.data( 'dtr-keyboard', 1 );
+		}
+	}
+} );
+
+
+/**
+ * List of default breakpoints. Each item in the array is an object with two
+ * properties:
+ *
+ * * `name` - the breakpoint name.
+ * * `width` - the breakpoint width
+ *
+ * @name Responsive.breakpoints
+ * @static
+ */
+Responsive.breakpoints = [
+	{ name: 'desktop',  width: Infinity },
+	{ name: 'tablet-l', width: 1024 },
+	{ name: 'tablet-p', width: 768 },
+	{ name: 'mobile-l', width: 480 },
+	{ name: 'mobile-p', width: 320 }
+];
+
+
+/**
+ * Display methods - functions which define how the hidden data should be shown
+ * in the table.
+ *
+ * @namespace
+ * @name Responsive.defaults
+ * @static
+ */
+Responsive.display = {
+	childRow: function ( row, update, render ) {
+		if ( update ) {
+			if ( $(row.node()).hasClass('parent') ) {
+				row.child( render(), 'child' ).show();
+
+				return true;
+			}
+		}
+		else {
+			if ( ! row.child.isShown()  ) {
+				row.child( render(), 'child' ).show();
+				$( row.node() ).addClass( 'parent' );
+
+				return true;
+			}
+			else {
+				row.child( false );
+				$( row.node() ).removeClass( 'parent' );
+
+				return false;
+			}
+		}
+	},
+
+	childRowImmediate: function ( row, update, render ) {
+		if ( (! update && row.child.isShown()) || ! row.responsive.hasHidden() ) {
+			// User interaction and the row is show, or nothing to show
+			row.child( false );
+			$( row.node() ).removeClass( 'parent' );
+
+			return false;
+		}
+		else {
+			// Display
+			row.child( render(), 'child' ).show();
+			$( row.node() ).addClass( 'parent' );
+
+			return true;
+		}
+	},
+
+	// This is a wrapper so the modal options for Bootstrap and jQuery UI can
+	// have options passed into them. This specific one doesn't need to be a
+	// function but it is for consistency in the `modal` name
+	modal: function ( options ) {
+		return function ( row, update, render ) {
+			if ( ! update ) {
+				// Show a modal
+				var close = function () {
+					modal.remove(); // will tidy events for us
+					$(document).off( 'keypress.dtr' );
+				};
+
+				var modal = $('<div class="dtr-modal"/>')
+					.append( $('<div class="dtr-modal-display"/>')
+						.append( $('<div class="dtr-modal-content"/>')
+							.append( render() )
+						)
+						.append( $('<div class="dtr-modal-close">&times;</div>' )
+							.click( function () {
+								close();
+							} )
+						)
+					)
+					.append( $('<div class="dtr-modal-background"/>')
+						.click( function () {
+							close();
+						} )
+					)
+					.appendTo( 'body' );
+
+				$(document).on( 'keyup.dtr', function (e) {
+					if ( e.keyCode === 27 ) {
+						e.stopPropagation();
+
+						close();
+					}
+				} );
+			}
+			else {
+				$('div.dtr-modal-content')
+					.empty()
+					.append( render() );
+			}
+
+			if ( options && options.header ) {
+				$('div.dtr-modal-content').prepend(
+					'<h2>'+options.header( row )+'</h2>'
+				);
+			}
+		};
+	}
+};
+
+
+var _childNodeStore = {};
+
+function _childNodes( dt, row, col ) {
+	var name = row+'-'+col;
+
+	if ( _childNodeStore[ name ] ) {
+		return _childNodeStore[ name ];
+	}
+
+	// https://jsperf.com/childnodes-array-slice-vs-loop
+	var nodes = [];
+	var children = dt.cell( row, col ).node().childNodes;
+	for ( var i=0, ien=children.length ; i<ien ; i++ ) {
+		nodes.push( children[i] );
+	}
+
+	_childNodeStore[ name ] = nodes;
+
+	return nodes;
+}
+
+function _childNodesRestore( dt, row, col ) {
+	var name = row+'-'+col;
+
+	if ( ! _childNodeStore[ name ] ) {
+		return;
+	}
+
+	var node = dt.cell( row, col ).node();
+	var store = _childNodeStore[ name ];
+	var parent = store[0].parentNode;
+	var parentChildren = parent.childNodes;
+	var a = [];
+
+	for ( var i=0, ien=parentChildren.length ; i<ien ; i++ ) {
+		a.push( parentChildren[i] );
+	}
+
+	for ( var j=0, jen=a.length ; j<jen ; j++ ) {
+		node.appendChild( a[j] );
+	}
+
+	_childNodeStore[ name ] = undefined;
+}
+
+
+/**
+ * Display methods - functions which define how the hidden data should be shown
+ * in the table.
+ *
+ * @namespace
+ * @name Responsive.defaults
+ * @static
+ */
+Responsive.renderer = {
+	listHiddenNodes: function () {
+		return function ( api, rowIdx, columns ) {
+			var ul = $('<ul data-dtr-index="'+rowIdx+'" class="dtr-details"/>');
+			var found = false;
+
+			var data = $.each( columns, function ( i, col ) {
+				if ( col.hidden ) {
+					$(
+						'<li data-dtr-index="'+col.columnIndex+'" data-dt-row="'+col.rowIndex+'" data-dt-column="'+col.columnIndex+'">'+
+							'<span class="dtr-title">'+
+								col.title+
+							'</span> '+
+						'</li>'
+					)
+						.append( $('<span class="dtr-data"/>').append( _childNodes( api, col.rowIndex, col.columnIndex ) ) )// api.cell( col.rowIndex, col.columnIndex ).node().childNodes ) )
+						.appendTo( ul );
+
+					found = true;
+				}
+			} );
+
+			return found ?
+				ul :
+				false;
+		};
+	},
+
+	listHidden: function () {
+		return function ( api, rowIdx, columns ) {
+			var data = $.map( columns, function ( col ) {
+				return col.hidden ?
+					'<li data-dtr-index="'+col.columnIndex+'" data-dt-row="'+col.rowIndex+'" data-dt-column="'+col.columnIndex+'">'+
+						'<span class="dtr-title">'+
+							col.title+
+						'</span> '+
+						'<span class="dtr-data">'+
+							col.data+
+						'</span>'+
+					'</li>' :
+					'';
+			} ).join('');
+
+			return data ?
+				$('<ul data-dtr-index="'+rowIdx+'" class="dtr-details"/>').append( data ) :
+				false;
+		}
+	},
+
+	tableAll: function ( options ) {
+		options = $.extend( {
+			tableClass: ''
+		}, options );
+
+		return function ( api, rowIdx, columns ) {
+			var data = $.map( columns, function ( col ) {
+				return '<tr data-dt-row="'+col.rowIndex+'" data-dt-column="'+col.columnIndex+'">'+
+						'<td>'+col.title+':'+'</td> '+
+						'<td>'+col.data+'</td>'+
+					'</tr>';
+			} ).join('');
+
+			return $('<table class="'+options.tableClass+' dtr-details" width="100%"/>').append( data );
+		}
+	}
+};
+
+/**
+ * Responsive default settings for initialisation
+ *
+ * @namespace
+ * @name Responsive.defaults
+ * @static
+ */
+Responsive.defaults = {
+	/**
+	 * List of breakpoints for the instance. Note that this means that each
+	 * instance can have its own breakpoints. Additionally, the breakpoints
+	 * cannot be changed once an instance has been creased.
+	 *
+	 * @type {Array}
+	 * @default Takes the value of `Responsive.breakpoints`
+	 */
+	breakpoints: Responsive.breakpoints,
+
+	/**
+	 * Enable / disable auto hiding calculations. It can help to increase
+	 * performance slightly if you disable this option, but all columns would
+	 * need to have breakpoint classes assigned to them
+	 *
+	 * @type {Boolean}
+	 * @default  `true`
+	 */
+	auto: true,
+
+	/**
+	 * Details control. If given as a string value, the `type` property of the
+	 * default object is set to that value, and the defaults used for the rest
+	 * of the object - this is for ease of implementation.
+	 *
+	 * The object consists of the following properties:
+	 *
+	 * * `display` - A function that is used to show and hide the hidden details
+	 * * `renderer` - function that is called for display of the child row data.
+	 *   The default function will show the data from the hidden columns
+	 * * `target` - Used as the selector for what objects to attach the child
+	 *   open / close to
+	 * * `type` - `false` to disable the details display, `inline` or `column`
+	 *   for the two control types
+	 *
+	 * @type {Object|string}
+	 */
+	details: {
+		display: Responsive.display.childRow,
+
+		renderer: Responsive.renderer.listHidden(),
+
+		target: 0,
+
+		type: 'inline'
+	},
+
+	/**
+	 * Orthogonal data request option. This is used to define the data type
+	 * requested when Responsive gets the data to show in the child row.
+	 *
+	 * @type {String}
+	 */
+	orthogonal: 'display'
+};
+
+
+/*
+ * API
+ */
+var Api = $.fn.dataTable.Api;
+
+// Doesn't do anything - work around for a bug in DT... Not documented
+Api.register( 'responsive()', function () {
+	return this;
+} );
+
+Api.register( 'responsive.index()', function ( li ) {
+	li = $(li);
+
+	return {
+		column: li.data('dtr-index'),
+		row:    li.parent().data('dtr-index')
+	};
+} );
+
+Api.register( 'responsive.rebuild()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._responsive ) {
+			ctx._responsive._classLogic();
+		}
+	} );
+} );
+
+Api.register( 'responsive.recalc()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._responsive ) {
+			ctx._responsive._resizeAuto();
+			ctx._responsive._resize();
+		}
+	} );
+} );
+
+Api.register( 'responsive.hasHidden()', function () {
+	var ctx = this.context[0];
+
+	return ctx._responsive ?
+		$.inArray( false, ctx._responsive.s.current ) !== -1 :
+		false;
+} );
+
+Api.registerPlural( 'columns().responsiveHidden()', 'column().responsiveHidden()', function () {
+	return this.iterator( 'column', function ( settings, column ) {
+		return settings._responsive ?
+			settings._responsive.s.current[ column ] :
+			false;
+	}, 1 );
+} );
+
+
+/**
+ * Version information
+ *
+ * @name Responsive.version
+ * @static
+ */
+Responsive.version = '2.2.3';
+
+
+$.fn.dataTable.Responsive = Responsive;
+$.fn.DataTable.Responsive = Responsive;
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.dtr', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	if ( $(settings.nTable).hasClass( 'responsive' ) ||
+		 $(settings.nTable).hasClass( 'dt-responsive' ) ||
+		 settings.oInit.responsive ||
+		 DataTable.defaults.responsive
+	) {
+		var init = settings.oInit.responsive;
+
+		if ( init !== false ) {
+			new Responsive( settings, $.isPlainObject( init ) ? init : {}  );
+		}
+	}
+} );
+
+
+return Responsive;
+}));
Index: public/vendors/dataTable/Responsive-2.2.3/js/dataTables.responsive.min.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/dataTables.responsive.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/dataTables.responsive.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,30 @@
+/*!
+ Responsive 2.2.3
+ 2014-2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(l){return d(l,window,document)}):"object"===typeof exports?module.exports=function(l,j){l||(l=window);if(!j||!j.fn.dataTable)j=require("datatables.net")(l,j).$;return d(j,l,l.document)}:d(jQuery,window,document)})(function(d,l,j,q){function t(a,b,c){var e=b+"-"+c;if(n[e])return n[e];for(var d=[],a=a.cell(b,c).node().childNodes,b=0,c=a.length;b<c;b++)d.push(a[b]);return n[e]=d}function r(a,b,d){var e=b+
+"-"+d;if(n[e]){for(var a=a.cell(b,d).node(),d=n[e][0].parentNode.childNodes,b=[],f=0,g=d.length;f<g;f++)b.push(d[f]);d=0;for(f=b.length;d<f;d++)a.appendChild(b[d]);n[e]=q}}var o=d.fn.dataTable,i=function(a,b){if(!o.versionCheck||!o.versionCheck("1.10.10"))throw"DataTables Responsive requires DataTables 1.10.10 or newer";this.s={dt:new o.Api(a),columns:[],current:[]};this.s.dt.settings()[0].responsive||(b&&"string"===typeof b.details?b.details={type:b.details}:b&&!1===b.details?b.details={type:!1}:
+b&&!0===b.details&&(b.details={type:"inline"}),this.c=d.extend(!0,{},i.defaults,o.defaults.responsive,b),a.responsive=this,this._constructor())};d.extend(i.prototype,{_constructor:function(){var a=this,b=this.s.dt,c=b.settings()[0],e=d(l).width();b.settings()[0]._responsive=this;d(l).on("resize.dtr orientationchange.dtr",o.util.throttle(function(){var b=d(l).width();b!==e&&(a._resize(),e=b)}));c.oApi._fnCallbackReg(c,"aoRowCreatedCallback",function(e){-1!==d.inArray(!1,a.s.current)&&d(">td, >th",
+e).each(function(e){e=b.column.index("toData",e);!1===a.s.current[e]&&d(this).css("display","none")})});b.on("destroy.dtr",function(){b.off(".dtr");d(b.table().body()).off(".dtr");d(l).off("resize.dtr orientationchange.dtr");d.each(a.s.current,function(b,e){!1===e&&a._setColumnVis(b,!0)})});this.c.breakpoints.sort(function(a,b){return a.width<b.width?1:a.width>b.width?-1:0});this._classLogic();this._resizeAuto();c=this.c.details;!1!==c.type&&(a._detailsInit(),b.on("column-visibility.dtr",function(){a._timer&&
+clearTimeout(a._timer);a._timer=setTimeout(function(){a._timer=null;a._classLogic();a._resizeAuto();a._resize();a._redrawChildren()},100)}),b.on("draw.dtr",function(){a._redrawChildren()}),d(b.table().node()).addClass("dtr-"+c.type));b.on("column-reorder.dtr",function(){a._classLogic();a._resizeAuto();a._resize()});b.on("column-sizing.dtr",function(){a._resizeAuto();a._resize()});b.on("preXhr.dtr",function(){var e=[];b.rows().every(function(){this.child.isShown()&&e.push(this.id(true))});b.one("draw.dtr",
+function(){a._resizeAuto();a._resize();b.rows(e).every(function(){a._detailsDisplay(this,false)})})});b.on("init.dtr",function(){a._resizeAuto();a._resize();d.inArray(false,a.s.current)&&b.columns.adjust()});this._resize()},_columnsVisiblity:function(a){var b=this.s.dt,c=this.s.columns,e,f,g=c.map(function(a,b){return{columnIdx:b,priority:a.priority}}).sort(function(a,b){return a.priority!==b.priority?a.priority-b.priority:a.columnIdx-b.columnIdx}),h=d.map(c,function(e,c){return!1===b.column(c).visible()?
+"not-visible":e.auto&&null===e.minWidth?!1:!0===e.auto?"-":-1!==d.inArray(a,e.includeIn)}),m=0;e=0;for(f=h.length;e<f;e++)!0===h[e]&&(m+=c[e].minWidth);e=b.settings()[0].oScroll;e=e.sY||e.sX?e.iBarWidth:0;m=b.table().container().offsetWidth-e-m;e=0;for(f=h.length;e<f;e++)c[e].control&&(m-=c[e].minWidth);var s=!1;e=0;for(f=g.length;e<f;e++){var k=g[e].columnIdx;"-"===h[k]&&(!c[k].control&&c[k].minWidth)&&(s||0>m-c[k].minWidth?(s=!0,h[k]=!1):h[k]=!0,m-=c[k].minWidth)}g=!1;e=0;for(f=c.length;e<f;e++)if(!c[e].control&&
+!c[e].never&&!1===h[e]){g=!0;break}e=0;for(f=c.length;e<f;e++)c[e].control&&(h[e]=g),"not-visible"===h[e]&&(h[e]=!1);-1===d.inArray(!0,h)&&(h[0]=!0);return h},_classLogic:function(){var a=this,b=this.c.breakpoints,c=this.s.dt,e=c.columns().eq(0).map(function(a){var b=this.column(a),e=b.header().className,a=c.settings()[0].aoColumns[a].responsivePriority;a===q&&(b=d(b.header()).data("priority"),a=b!==q?1*b:1E4);return{className:e,includeIn:[],auto:!1,control:!1,never:e.match(/\bnever\b/)?!0:!1,priority:a}}),
+f=function(a,b){var c=e[a].includeIn;-1===d.inArray(b,c)&&c.push(b)},g=function(d,c,g,k){if(g)if("max-"===g){k=a._find(c).width;c=0;for(g=b.length;c<g;c++)b[c].width<=k&&f(d,b[c].name)}else if("min-"===g){k=a._find(c).width;c=0;for(g=b.length;c<g;c++)b[c].width>=k&&f(d,b[c].name)}else{if("not-"===g){c=0;for(g=b.length;c<g;c++)-1===b[c].name.indexOf(k)&&f(d,b[c].name)}}else e[d].includeIn.push(c)};e.each(function(a,e){for(var c=a.className.split(" "),f=!1,i=0,l=c.length;i<l;i++){var j=d.trim(c[i]);
+if("all"===j){f=!0;a.includeIn=d.map(b,function(a){return a.name});return}if("none"===j||a.never){f=!0;return}if("control"===j){f=!0;a.control=!0;return}d.each(b,function(a,b){var d=b.name.split("-"),c=j.match(RegExp("(min\\-|max\\-|not\\-)?("+d[0]+")(\\-[_a-zA-Z0-9])?"));c&&(f=!0,c[2]===d[0]&&c[3]==="-"+d[1]?g(e,b.name,c[1],c[2]+c[3]):c[2]===d[0]&&!c[3]&&g(e,b.name,c[1],c[2]))})}f||(a.auto=!0)});this.s.columns=e},_detailsDisplay:function(a,b){var c=this,e=this.s.dt,f=this.c.details;if(f&&!1!==f.type){var g=
+f.display(a,b,function(){return f.renderer(e,a[0],c._detailsObj(a[0]))});(!0===g||!1===g)&&d(e.table().node()).triggerHandler("responsive-display.dt",[e,a,g,b])}},_detailsInit:function(){var a=this,b=this.s.dt,c=this.c.details;"inline"===c.type&&(c.target="td:first-child, th:first-child");b.on("draw.dtr",function(){a._tabIndexes()});a._tabIndexes();d(b.table().body()).on("keyup.dtr","td, th",function(a){a.keyCode===13&&d(this).data("dtr-keyboard")&&d(this).click()});var e=c.target;d(b.table().body()).on("click.dtr mousedown.dtr mouseup.dtr",
+"string"===typeof e?e:"td, th",function(c){if(d(b.table().node()).hasClass("collapsed")&&d.inArray(d(this).closest("tr").get(0),b.rows().nodes().toArray())!==-1){if(typeof e==="number"){var g=e<0?b.columns().eq(0).length+e:e;if(b.cell(this).index().column!==g)return}g=b.row(d(this).closest("tr"));c.type==="click"?a._detailsDisplay(g,false):c.type==="mousedown"?d(this).css("outline","none"):c.type==="mouseup"&&d(this).blur().css("outline","")}})},_detailsObj:function(a){var b=this,c=this.s.dt;return d.map(this.s.columns,
+function(e,d){if(!e.never&&!e.control)return{title:c.settings()[0].aoColumns[d].sTitle,data:c.cell(a,d).render(b.c.orthogonal),hidden:c.column(d).visible()&&!b.s.current[d],columnIndex:d,rowIndex:a}})},_find:function(a){for(var b=this.c.breakpoints,c=0,e=b.length;c<e;c++)if(b[c].name===a)return b[c]},_redrawChildren:function(){var a=this,b=this.s.dt;b.rows({page:"current"}).iterator("row",function(c,e){b.row(e);a._detailsDisplay(b.row(e),!0)})},_resize:function(){var a=this,b=this.s.dt,c=d(l).width(),
+e=this.c.breakpoints,f=e[0].name,g=this.s.columns,h,m=this.s.current.slice();for(h=e.length-1;0<=h;h--)if(c<=e[h].width){f=e[h].name;break}var i=this._columnsVisiblity(f);this.s.current=i;e=!1;h=0;for(c=g.length;h<c;h++)if(!1===i[h]&&!g[h].never&&!g[h].control&&!1===!b.column(h).visible()){e=!0;break}d(b.table().node()).toggleClass("collapsed",e);var k=!1,j=0;b.columns().eq(0).each(function(b,c){!0===i[c]&&j++;i[c]!==m[c]&&(k=!0,a._setColumnVis(b,i[c]))});k&&(this._redrawChildren(),d(b.table().node()).trigger("responsive-resize.dt",
+[b,this.s.current]),0===b.page.info().recordsDisplay&&d("td",b.table().body()).eq(0).attr("colspan",j))},_resizeAuto:function(){var a=this.s.dt,b=this.s.columns;if(this.c.auto&&-1!==d.inArray(!0,d.map(b,function(a){return a.auto}))){d.isEmptyObject(n)||d.each(n,function(b){b=b.split("-");r(a,1*b[0],1*b[1])});a.table().node();var c=a.table().node().cloneNode(!1),e=d(a.table().header().cloneNode(!1)).appendTo(c),f=d(a.table().body()).clone(!1,!1).empty().appendTo(c),g=a.columns().header().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display",
+"table-cell").css("min-width",0);d(f).append(d(a.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display","");if(f=a.table().footer()){var f=d(f.cloneNode(!1)).appendTo(c),h=a.columns().footer().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display","table-cell");d("<tr/>").append(h).appendTo(f)}d("<tr/>").append(g).appendTo(e);"inline"===this.c.details.type&&d(c).addClass("dtr-inline collapsed");d(c).find("[name]").removeAttr("name");d(c).css("position","relative");
+c=d("<div/>").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(c);c.insertBefore(a.table().node());g.each(function(c){c=a.column.index("fromVisible",c);b[c].minWidth=this.offsetWidth||0});c.remove()}},_setColumnVis:function(a,b){var c=this.s.dt,e=b?"":"none";d(c.column(a).header()).css("display",e);d(c.column(a).footer()).css("display",e);c.column(a).nodes().to$().css("display",e);d.isEmptyObject(n)||c.cells(null,a).indexes().each(function(a){r(c,a.row,a.column)})},_tabIndexes:function(){var a=
+this.s.dt,b=a.cells({page:"current"}).nodes().to$(),c=a.settings()[0],e=this.c.details.target;b.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");"number"===typeof e?a.cells(null,e,{page:"current"}).nodes().to$().attr("tabIndex",c.iTabIndex).data("dtr-keyboard",1):("td:first-child, th:first-child"===e&&(e=">td:first-child, >th:first-child"),d(e,a.rows({page:"current"}).nodes()).attr("tabIndex",c.iTabIndex).data("dtr-keyboard",1))}});i.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",
+width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];i.display={childRow:function(a,b,c){if(b){if(d(a.node()).hasClass("parent"))return a.child(c(),"child").show(),!0}else{if(a.child.isShown())return a.child(!1),d(a.node()).removeClass("parent"),!1;a.child(c(),"child").show();d(a.node()).addClass("parent");return!0}},childRowImmediate:function(a,b,c){if(!b&&a.child.isShown()||!a.responsive.hasHidden())return a.child(!1),d(a.node()).removeClass("parent"),
+!1;a.child(c(),"child").show();d(a.node()).addClass("parent");return!0},modal:function(a){return function(b,c,e){if(c)d("div.dtr-modal-content").empty().append(e());else{var f=function(){g.remove();d(j).off("keypress.dtr")},g=d('<div class="dtr-modal"/>').append(d('<div class="dtr-modal-display"/>').append(d('<div class="dtr-modal-content"/>').append(e())).append(d('<div class="dtr-modal-close">&times;</div>').click(function(){f()}))).append(d('<div class="dtr-modal-background"/>').click(function(){f()})).appendTo("body");
+d(j).on("keyup.dtr",function(a){27===a.keyCode&&(a.stopPropagation(),f())})}a&&a.header&&d("div.dtr-modal-content").prepend("<h2>"+a.header(b)+"</h2>")}}};var n={};i.renderer={listHiddenNodes:function(){return function(a,b,c){var e=d('<ul data-dtr-index="'+b+'" class="dtr-details"/>'),f=!1;d.each(c,function(b,c){c.hidden&&(d('<li data-dtr-index="'+c.columnIndex+'" data-dt-row="'+c.rowIndex+'" data-dt-column="'+c.columnIndex+'"><span class="dtr-title">'+c.title+"</span> </li>").append(d('<span class="dtr-data"/>').append(t(a,
+c.rowIndex,c.columnIndex))).appendTo(e),f=!0)});return f?e:!1}},listHidden:function(){return function(a,b,c){return(a=d.map(c,function(a){return a.hidden?'<li data-dtr-index="'+a.columnIndex+'" data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><span class="dtr-title">'+a.title+'</span> <span class="dtr-data">'+a.data+"</span></li>":""}).join(""))?d('<ul data-dtr-index="'+b+'" class="dtr-details"/>').append(a):!1}},tableAll:function(a){a=d.extend({tableClass:""},a);return function(b,
+c,e){b=d.map(e,function(a){return'<tr data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><td>'+a.title+":</td> <td>"+a.data+"</td></tr>"}).join("");return d('<table class="'+a.tableClass+' dtr-details" width="100%"/>').append(b)}}};i.defaults={breakpoints:i.breakpoints,auto:!0,details:{display:i.display.childRow,renderer:i.renderer.listHidden(),target:0,type:"inline"},orthogonal:"display"};var p=d.fn.dataTable.Api;p.register("responsive()",function(){return this});p.register("responsive.index()",
+function(a){a=d(a);return{column:a.data("dtr-index"),row:a.parent().data("dtr-index")}});p.register("responsive.rebuild()",function(){return this.iterator("table",function(a){a._responsive&&a._responsive._classLogic()})});p.register("responsive.recalc()",function(){return this.iterator("table",function(a){a._responsive&&(a._responsive._resizeAuto(),a._responsive._resize())})});p.register("responsive.hasHidden()",function(){var a=this.context[0];return a._responsive?-1!==d.inArray(!1,a._responsive.s.current):
+!1});p.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(a,b){return a._responsive?a._responsive.s.current[b]:!1},1)});i.version="2.2.3";d.fn.dataTable.Responsive=i;d.fn.DataTable.Responsive=i;d(j).on("preInit.dt.dtr",function(a,b){if("dt"===a.namespace&&(d(b.nTable).hasClass("responsive")||d(b.nTable).hasClass("dt-responsive")||b.oInit.responsive||o.defaults.responsive)){var c=b.oInit.responsive;!1!==c&&new i(b,d.isPlainObject(c)?
+c:{})}});return i});
Index: public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,85 @@
+/*! Bootstrap integration for DataTables' Responsive
+ * ©2015-2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs', 'datatables.net-responsive'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Responsive ) {
+				require('datatables.net-responsive')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var _display = DataTable.Responsive.display;
+var _original = _display.modal;
+var _modal = $(
+	'<div class="modal fade dtr-bs-modal" role="dialog">'+
+		'<div class="modal-dialog" role="document">'+
+			'<div class="modal-content">'+
+				'<div class="modal-header">'+
+					'<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+
+				'</div>'+
+				'<div class="modal-body"/>'+
+			'</div>'+
+		'</div>'+
+	'</div>'
+);
+
+_display.modal = function ( options ) {
+	return function ( row, update, render ) {
+		if ( ! $.fn.modal ) {
+			_original( row, update, render );
+		}
+		else {
+			if ( ! update ) {
+				if ( options && options.header ) {
+					var header = _modal.find('div.modal-header');
+					var button = header.find('button').detach();
+					
+					header
+						.empty()
+						.append( '<h4 class="modal-title">'+options.header( row )+'</h4>' )
+						.prepend( button );
+				}
+
+				_modal.find( 'div.modal-body' )
+					.empty()
+					.append( render() );
+
+				_modal
+					.appendTo( 'body' )
+					.modal();
+			}
+		}
+	};
+};
+
+
+return DataTable.Responsive;
+}));
Index: public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ Bootstrap integration for DataTables' Responsive
+ ©2015-2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,g=b.modal,e=c('<div class="modal fade dtr-bs-modal" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body"/></div></div></div>');
+b.modal=function(a){return function(b,d,f){if(c.fn.modal){if(!d){if(a&&a.header){var d=e.find("div.modal-header"),h=d.find("button").detach();d.empty().append('<h4 class="modal-title">'+a.header(b)+"</h4>").prepend(h)}e.find("div.modal-body").empty().append(f());e.appendTo("body").modal()}}else g(b,d,f)}};return a.Responsive});
Index: public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap4.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,85 @@
+/*! Bootstrap 4 integration for DataTables' Responsive
+ * ©2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-responsive'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Responsive ) {
+				require('datatables.net-responsive')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var _display = DataTable.Responsive.display;
+var _original = _display.modal;
+var _modal = $(
+	'<div class="modal fade dtr-bs-modal" role="dialog">'+
+		'<div class="modal-dialog" role="document">'+
+			'<div class="modal-content">'+
+				'<div class="modal-header">'+
+					'<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+
+				'</div>'+
+				'<div class="modal-body"/>'+
+			'</div>'+
+		'</div>'+
+	'</div>'
+);
+
+_display.modal = function ( options ) {
+	return function ( row, update, render ) {
+		if ( ! $.fn.modal ) {
+			_original( row, update, render );
+		}
+		else {
+			if ( ! update ) {
+				if ( options && options.header ) {
+					var header = _modal.find('div.modal-header');
+					var button = header.find('button').detach();
+					
+					header
+						.empty()
+						.append( '<h4 class="modal-title">'+options.header( row )+'</h4>' )
+						.append( button );
+				}
+
+				_modal.find( 'div.modal-body' )
+					.empty()
+					.append( render() );
+
+				_modal
+					.appendTo( 'body' )
+					.modal();
+			}
+		}
+	};
+};
+
+
+return DataTable.Responsive;
+}));
Index: public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/responsive.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ Bootstrap 4 integration for DataTables' Responsive
+ ©2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs4")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,g=b.modal,e=c('<div class="modal fade dtr-bs-modal" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body"/></div></div></div>');
+b.modal=function(a){return function(b,d,f){if(c.fn.modal){if(!d){if(a&&a.header){var d=e.find("div.modal-header"),h=d.find("button").detach();d.empty().append('<h4 class="modal-title">'+a.header(b)+"</h4>").append(h)}e.find("div.modal-body").empty().append(f());e.appendTo("body").modal()}}else g(b,d,f)}};return a.Responsive});
Index: public/vendors/dataTable/Responsive-2.2.3/js/responsive.foundation.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/responsive.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/responsive.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,62 @@
+/*! Foundation integration for DataTables' Responsive
+ * ©2015 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-zf', 'datatables.net-responsive'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-zf')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Responsive ) {
+				require('datatables.net-responsive')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var _display = DataTable.Responsive.display;
+var _original = _display.modal;
+
+_display.modal = function ( options ) {
+	return function ( row, update, render ) {
+		if ( ! $.fn.foundation ) {
+			_original( row, update, render );
+		}
+		else {
+			if ( ! update ) {
+				$( '<div class="reveal-modal" data-reveal/>' )
+					.append( '<a class="close-reveal-modal" aria-label="Close">&#215;</a>' )
+					.append( options && options.header ? '<h4>'+options.header( row )+'</h4>' : null )
+					.append( render() )
+					.appendTo( 'body' )
+					.foundation( 'reveal', 'open' );
+			}
+		}
+	};
+};
+
+
+return DataTable.Responsive;
+}));
Index: public/vendors/dataTable/Responsive-2.2.3/js/responsive.foundation.min.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/responsive.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/responsive.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ Foundation integration for DataTables' Responsive
+ ©2015 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-zf")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,f=b.modal;b.modal=function(a){return function(b,
+d,e){c.fn.foundation?d||c('<div class="reveal-modal" data-reveal/>').append('<a class="close-reveal-modal" aria-label="Close">&#215;</a>').append(a&&a.header?"<h4>"+a.header(b)+"</h4>":null).append(e()).appendTo("body").foundation("reveal","open"):f(b,d,e)}};return a.Responsive});
Index: public/vendors/dataTable/Responsive-2.2.3/js/responsive.jqueryui.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/responsive.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/responsive.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,63 @@
+/*! jQuery UI integration for DataTables' Responsive
+ * ©2015 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-jqui', 'datatables.net-responsive'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-jqui')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Responsive ) {
+				require('datatables.net-responsive')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var _display = DataTable.Responsive.display;
+var _original = _display.modal;
+
+_display.modal = function ( options ) {
+	return function ( row, update, render ) {
+		if ( ! $.fn.dialog ) {
+			_original( row, update, render );
+		}
+		else {
+			if ( ! update ) {
+				$( '<div/>' )
+					.append( render() )
+					.appendTo( 'body' )
+					.dialog( $.extend( true, {
+						title: options && options.header ? options.header( row ) : '',
+						width: 500
+					}, options.dialog ) );
+			}
+		}
+	};
+};
+
+
+return DataTable.Responsive;
+}));
Index: public/vendors/dataTable/Responsive-2.2.3/js/responsive.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/responsive.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/responsive.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ jQuery UI integration for DataTables' Responsive
+ ©2015 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-jqui")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,f=b.modal;b.modal=function(a){return function(b,
+d,e){c.fn.dialog?d||c("<div/>").append(e()).appendTo("body").dialog(c.extend(!0,{title:a&&a.header?a.header(b):"",width:500},a.dialog)):f(b,d,e)}};return a.Responsive});
Index: public/vendors/dataTable/Responsive-2.2.3/js/responsive.semanticui.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/responsive.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/responsive.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,77 @@
+/*! Bootstrap integration for DataTables' Responsive
+ * ©2015-2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-se', 'datatables.net-responsive'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-se')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Responsive ) {
+				require('datatables.net-responsive')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var _display = DataTable.Responsive.display;
+var _original = _display.modal;
+var _modal = $(
+	'<div class="ui modal" role="dialog">'+
+		'<div class="header">'+
+			'<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+
+		'</div>'+
+		'<div class="content"/>'+
+	'</div>'
+);
+
+_display.modal = function ( options ) {
+	return function ( row, update, render ) {
+		if ( ! $.fn.modal ) {
+			_original( row, update, render );
+		}
+		else {
+			if ( ! update ) {
+				if ( options && options.header ) {
+					_modal.find('div.header')
+						.empty()
+						.append( '<h4 class="title">'+options.header( row )+'</h4>' );
+				}
+
+				_modal.find( 'div.content' )
+					.empty()
+					.append( render() );
+
+				_modal
+					.appendTo( 'body' )
+					.modal('show');
+			}
+		}
+	};
+};
+
+
+return DataTable.Responsive;
+}));
Index: public/vendors/dataTable/Responsive-2.2.3/js/responsive.semanticui.min.js
===================================================================
--- public/vendors/dataTable/Responsive-2.2.3/js/responsive.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Responsive-2.2.3/js/responsive.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ Bootstrap integration for DataTables' Responsive
+ ©2015-2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-se")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,g=b.modal,d=c('<div class="ui modal" role="dialog"><div class="header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="content"/></div>');
+b.modal=function(a){return function(b,e,f){c.fn.modal?e||(a&&a.header&&d.find("div.header").empty().append('<h4 class="title">'+a.header(b)+"</h4>"),d.find("div.content").empty().append(f()),d.appendTo("body").modal("show")):g(b,e,f)}};return a.Responsive});
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+table.dataTable tr.dtrg-group td {
+  background-color: #e0e0e0;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-0 td {
+  font-weight: bold;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-1 td,
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f0f0f0;
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+  padding-left: 2em;
+  font-size: 0.9em;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f3f3f3;
+}
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tr.dtrg-group td{background-color:#e0e0e0}table.dataTable tr.dtrg-group.dtrg-level-0 td{font-weight:bold}table.dataTable tr.dtrg-group.dtrg-level-1 td,table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f0f0f0;padding-top:0.25em;padding-bottom:0.25em;padding-left:2em;font-size:0.9em}table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f3f3f3}
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap4.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+table.dataTable tr.dtrg-group td {
+  background-color: #e0e0e0;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-0 td {
+  font-weight: bold;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-1 td,
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f0f0f0;
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+  padding-left: 2em;
+  font-size: 0.9em;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f3f3f3;
+}
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tr.dtrg-group td{background-color:#e0e0e0}table.dataTable tr.dtrg-group.dtrg-level-0 td{font-weight:bold}table.dataTable tr.dtrg-group.dtrg-level-1 td,table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f0f0f0;padding-top:0.25em;padding-bottom:0.25em;padding-left:2em;font-size:0.9em}table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f3f3f3}
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.dataTables.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+table.dataTable tr.dtrg-group td {
+  background-color: #e0e0e0;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-0 td {
+  font-weight: bold;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-1 td,
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f0f0f0;
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+  padding-left: 2em;
+  font-size: 0.9em;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f3f3f3;
+}
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.dataTables.min.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tr.dtrg-group td{background-color:#e0e0e0}table.dataTable tr.dtrg-group.dtrg-level-0 td{font-weight:bold}table.dataTable tr.dtrg-group.dtrg-level-1 td,table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f0f0f0;padding-top:0.25em;padding-bottom:0.25em;padding-left:2em;font-size:0.9em}table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f3f3f3}
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.foundation.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+table.dataTable tr.dtrg-group td {
+  background-color: #e0e0e0;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-0 td {
+  font-weight: bold;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-1 td,
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f0f0f0;
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+  padding-left: 2em;
+  font-size: 0.9em;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f3f3f3;
+}
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.foundation.min.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tr.dtrg-group td{background-color:#e0e0e0}table.dataTable tr.dtrg-group.dtrg-level-0 td{font-weight:bold}table.dataTable tr.dtrg-group.dtrg-level-1 td,table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f0f0f0;padding-top:0.25em;padding-bottom:0.25em;padding-left:2em;font-size:0.9em}table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f3f3f3}
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.jqueryui.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+table.dataTable tr.dtrg-group td {
+  background-color: #e0e0e0;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-0 td {
+  font-weight: bold;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-1 td,
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f0f0f0;
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+  padding-left: 2em;
+  font-size: 0.9em;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f3f3f3;
+}
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tr.dtrg-group td{background-color:#e0e0e0}table.dataTable tr.dtrg-group.dtrg-level-0 td{font-weight:bold}table.dataTable tr.dtrg-group.dtrg-level-1 td,table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f0f0f0;padding-top:0.25em;padding-bottom:0.25em;padding-left:2em;font-size:0.9em}table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f3f3f3}
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.semanticui.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+table.dataTable tr.dtrg-group td {
+  background-color: #F9FAFB;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-0 td {
+  font-weight: bold;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-1 td,
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f0f0f0;
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+  padding-left: 2em;
+  font-size: 0.9em;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f3f3f3;
+}
Index: public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.semanticui.min.css
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/css/rowGroup.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tr.dtrg-group td{background-color:#F9FAFB}table.dataTable tr.dtrg-group.dtrg-level-0 td{font-weight:bold}table.dataTable tr.dtrg-group.dtrg-level-1 td,table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f0f0f0;padding-top:0.25em;padding-bottom:0.25em;padding-left:2em;font-size:0.9em}table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f3f3f3}
Index: public/vendors/dataTable/RowGroup-1.1.1/js/dataTables.rowGroup.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/dataTables.rowGroup.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/dataTables.rowGroup.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,472 @@
+/*! RowGroup 1.1.1
+ * ©2017-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     RowGroup
+ * @description RowGrouping for DataTables
+ * @version     1.1.1
+ * @file        dataTables.rowGroup.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     datatables.net
+ * @copyright   Copyright 2017-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var RowGroup = function ( dt, opts ) {
+	// Sanity check that we are using DataTables 1.10 or newer
+	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) {
+		throw 'RowGroup requires DataTables 1.10.8 or newer';
+	}
+
+	// User and defaults configuration object
+	this.c = $.extend( true, {},
+		DataTable.defaults.rowGroup,
+		RowGroup.defaults,
+		opts
+	);
+
+	// Internal settings
+	this.s = {
+		dt: new DataTable.Api( dt )
+	};
+
+	// DOM items
+	this.dom = {
+
+	};
+
+	// Check if row grouping has already been initialised on this table
+	var settings = this.s.dt.settings()[0];
+	var existing = settings.rowGroup;
+	if ( existing ) {
+		return existing;
+	}
+
+	settings.rowGroup = this;
+	this._constructor();
+};
+
+
+$.extend( RowGroup.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * API methods for DataTables API interface
+	 */
+
+	/**
+	 * Get/set the grouping data source - need to call draw after this is
+	 * executed as a setter
+	 * @returns string~RowGroup
+	 */
+	dataSrc: function ( val )
+	{
+		if ( val === undefined ) {
+			return this.c.dataSrc;
+		}
+
+		var dt = this.s.dt;
+
+		this.c.dataSrc = val;
+
+		$(dt.table().node()).triggerHandler( 'rowgroup-datasrc.dt', [ dt, val ] );
+
+		return this;
+	},
+
+	/**
+	 * Disable - need to call draw after this is executed
+	 * @returns RowGroup
+	 */
+	disable: function ()
+	{
+		this.c.enable = false;
+		return this;
+	},
+
+	/**
+	 * Enable - need to call draw after this is executed
+	 * @returns RowGroup
+	 */
+	enable: function ( flag )
+	{
+		if ( flag === false ) {
+			return this.disable();
+		}
+
+		this.c.enable = true;
+		return this;
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		dt.on( 'draw.dtrg', function () {
+			if ( that.c.enable ) {
+				that._draw();
+			}
+		} );
+
+		dt.on( 'column-visibility.dt.dtrg responsive-resize.dt.dtrg', function () {
+			that._adjustColspan();
+		} );
+
+		dt.on( 'destroy', function () {
+			dt.off( '.dtrg' );
+		} );
+
+		dt.on('responsive-resize.dt', function () {
+			that._adjustColspan();
+		})
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Adjust column span when column visibility changes
+	 * @private
+	 */
+	_adjustColspan: function ()
+	{
+		$( 'tr.'+this.c.className, this.s.dt.table().body() ).find('td')
+			.attr( 'colspan', this._colspan() );
+	},
+
+	/**
+	 * Get the number of columns that a grouping row should span
+	 * @private
+	 */
+	_colspan: function ()
+	{
+		return this.s.dt.columns().visible().reduce( function (a, b) {
+			return a + b;
+		}, 0 );
+	},
+
+
+	/**
+	 * Update function that is called whenever we need to draw the grouping rows.
+	 * This is basically a bootstrap for the self iterative _group and _groupDisplay
+	 * methods
+	 * @private
+	 */
+	_draw: function ()
+	{
+		var dt = this.s.dt;
+		var groupedRows = this._group( 0, dt.rows( { page: 'current' } ).indexes() );
+
+		this._groupDisplay( 0, groupedRows );
+	},
+
+	/**
+	 * Get the grouping information from a data set (index) of rows
+	 * @param {number} level Nesting level
+	 * @param {DataTables.Api} rows API of the rows to consider for this group
+	 * @returns {object[]} Nested grouping information - it is structured like this:
+	 *	{
+	 *		dataPoint: 'Edinburgh',
+	 *		rows: [ 1,2,3,4,5,6,7 ],
+	 *		children: [ {
+	 *			dataPoint: 'developer'
+	 *			rows: [ 1, 2, 3 ]
+	 *		},
+	 *		{
+	 *			dataPoint: 'support',
+	 *			rows: [ 4, 5, 6, 7 ]
+	 *		} ]
+	 *	}
+	 * @private
+	 */
+	_group: function ( level, rows ) {
+		var fns = $.isArray( this.c.dataSrc ) ? this.c.dataSrc : [ this.c.dataSrc ];
+		var fn = DataTable.ext.oApi._fnGetObjectDataFn( fns[ level ] );
+		var dt = this.s.dt;
+		var group, last;
+		var data = [];
+		var that = this;
+
+		for ( var i=0, ien=rows.length ; i<ien ; i++ ) {
+			var rowIndex = rows[i];
+			var rowData = dt.row( rowIndex ).data();
+			var group = fn( rowData );
+
+			if ( group === null || group === undefined ) {
+				group = that.c.emptyDataGroup;
+			}
+			
+			if ( last === undefined || group !== last ) {
+				data.push( {
+					dataPoint: group,
+					rows: []
+				} );
+
+				last = group;
+			}
+
+			data[ data.length-1 ].rows.push( rowIndex );
+		}
+
+		if ( fns[ level+1 ] !== undefined ) {
+			for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+				data[i].children = this._group( level+1, data[i].rows );
+			}
+		}
+
+		return data;
+	},
+
+	/**
+	 * Row group display - insert the rows into the document
+	 * @param {number} level Nesting level
+	 * @param {object[]} groups Takes the nested array from `_group`
+	 * @private
+	 */
+	_groupDisplay: function ( level, groups )
+	{
+		var dt = this.s.dt;
+		var display;
+	
+		for ( var i=0, ien=groups.length ; i<ien ; i++ ) {
+			var group = groups[i];
+			var groupName = group.dataPoint;
+			var row;
+			var rows = group.rows;
+
+			if ( this.c.startRender ) {
+				display = this.c.startRender.call( this, dt.rows(rows), groupName, level );
+				row = this._rowWrap( display, this.c.startClassName, level );
+
+				if ( row ) {
+					row.insertBefore( dt.row( rows[0] ).node() );
+				}
+			}
+
+			if ( this.c.endRender ) {
+				display = this.c.endRender.call( this, dt.rows(rows), groupName, level );
+				row = this._rowWrap( display, this.c.endClassName, level );
+
+				if ( row ) {
+					row.insertAfter( dt.row( rows[ rows.length-1 ] ).node() );
+				}
+			}
+
+			if ( group.children ) {
+				this._groupDisplay( level+1, group.children );
+			}
+		}
+	},
+
+	/**
+	 * Take a rendered value from an end user and make it suitable for display
+	 * as a row, by wrapping it in a row, or detecting that it is a row.
+	 * @param {node|jQuery|string} display Display value
+	 * @param {string} className Class to add to the row
+	 * @param {array} group
+	 * @param {number} group level
+	 * @private
+	 */
+	_rowWrap: function ( display, className, level )
+	{
+		var row;
+		
+		if ( display === null || display === '' ) {
+			display = this.c.emptyDataGroup;
+		}
+
+		if ( display === undefined || display === null ) {
+			return null;
+		}
+		
+		if ( typeof display === 'object' && display.nodeName && display.nodeName.toLowerCase() === 'tr') {
+			row = $(display);
+		}
+		else if (display instanceof $ && display.length && display[0].nodeName.toLowerCase() === 'tr') {
+			row = display;
+		}
+		else {
+			row = $('<tr/>')
+				.append(
+					$('<td/>')
+						.attr( 'colspan', this._colspan() )
+						.append( display  )
+				);
+		}
+
+		return row
+			.addClass( this.c.className )
+			.addClass( className )
+			.addClass( 'dtrg-level-'+level );
+	}
+} );
+
+
+/**
+ * RowGroup default settings for initialisation
+ *
+ * @namespace
+ * @name RowGroup.defaults
+ * @static
+ */
+RowGroup.defaults = {
+	/**
+	 * Class to apply to grouping rows - applied to both the start and
+	 * end grouping rows.
+	 * @type string
+	 */
+	className: 'dtrg-group',
+
+	/**
+	 * Data property from which to read the grouping information
+	 * @type string|integer|array
+	 */
+	dataSrc: 0,
+
+	/**
+	 * Text to show if no data is found for a group
+	 * @type string
+	 */
+	emptyDataGroup: 'No group',
+
+	/**
+	 * Initial enablement state
+	 * @boolean
+	 */
+	enable: true,
+
+	/**
+	 * Class name to give to the end grouping row
+	 * @type string
+	 */
+	endClassName: 'dtrg-end',
+
+	/**
+	 * End grouping label function
+	 * @function
+	 */
+	endRender: null,
+
+	/**
+	 * Class name to give to the start grouping row
+	 * @type string
+	 */
+	startClassName: 'dtrg-start',
+
+	/**
+	 * Start grouping label function
+	 * @function
+	 */
+	startRender: function ( rows, group ) {
+		return group;
+	}
+};
+
+
+RowGroup.version = "1.1.1";
+
+
+$.fn.dataTable.RowGroup = RowGroup;
+$.fn.DataTable.RowGroup = RowGroup;
+
+
+DataTable.Api.register( 'rowGroup()', function () {
+	return this;
+} );
+
+DataTable.Api.register( 'rowGroup().disable()', function () {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.rowGroup ) {
+			ctx.rowGroup.enable( false );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'rowGroup().enable()', function ( opts ) {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.rowGroup ) {
+			ctx.rowGroup.enable( opts === undefined ? true : opts );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'rowGroup().dataSrc()', function ( val ) {
+	if ( val === undefined ) {
+		return this.context[0].rowGroup.dataSrc();
+	}
+
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.rowGroup ) {
+			ctx.rowGroup.dataSrc( val );
+		}
+	} );
+} );
+
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.dtrg', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.rowGroup;
+	var defaults = DataTable.defaults.rowGroup;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, defaults, init );
+
+		if ( init !== false ) {
+			new RowGroup( settings, opts  );
+		}
+	}
+} );
+
+
+return RowGroup;
+
+}));
Index: public/vendors/dataTable/RowGroup-1.1.1/js/dataTables.rowGroup.min.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/dataTables.rowGroup.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/dataTables.rowGroup.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,25 @@
+/*!
+   Copyright 2017-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ RowGroup 1.1.1
+ ©2017-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,d,c){a instanceof String&&(a=String(a));for(var e=a.length,f=0;f<e;f++){var h=a[f];if(d.call(c,h,f,a))return{i:f,v:h}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,d,c){a!=Array.prototype&&a!=Object.prototype&&(a[d]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(a,d,c,e){if(d){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var f=a[e];f in c||(c[f]={});c=c[f]}a=a[a.length-1];e=c[a];d=d(e);d!=e&&null!=d&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:d})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},"es6","es3");
+(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(d){return a(d,window,document)}):"object"===typeof exports?module.exports=function(d,c){d||(d=window);c&&c.fn.dataTable||(c=require("datatables.net")(d,c).$);return a(c,d,d.document)}:a(jQuery,window,document)})(function(a,d,c,e){var f=a.fn.dataTable,h=function(b,g){if(!f.versionCheck||!f.versionCheck("1.10.8"))throw"RowGroup requires DataTables 1.10.8 or newer";this.c=a.extend(!0,{},f.defaults.rowGroup,
+h.defaults,g);this.s={dt:new f.Api(b)};this.dom={};b=this.s.dt.settings()[0];if(g=b.rowGroup)return g;b.rowGroup=this;this._constructor()};a.extend(h.prototype,{dataSrc:function(b){if(b===e)return this.c.dataSrc;var g=this.s.dt;this.c.dataSrc=b;a(g.table().node()).triggerHandler("rowgroup-datasrc.dt",[g,b]);return this},disable:function(){this.c.enable=!1;return this},enable:function(b){if(!1===b)return this.disable();this.c.enable=!0;return this},_constructor:function(){var b=this,a=this.s.dt;a.on("draw.dtrg",
+function(){b.c.enable&&b._draw()});a.on("column-visibility.dt.dtrg responsive-resize.dt.dtrg",function(){b._adjustColspan()});a.on("destroy",function(){a.off(".dtrg")});a.on("responsive-resize.dt",function(){b._adjustColspan()})},_adjustColspan:function(){a("tr."+this.c.className,this.s.dt.table().body()).find("td").attr("colspan",this._colspan())},_colspan:function(){return this.s.dt.columns().visible().reduce(function(b,a){return b+a},0)},_draw:function(){var b=this._group(0,this.s.dt.rows({page:"current"}).indexes());
+this._groupDisplay(0,b)},_group:function(b,g){for(var c=a.isArray(this.c.dataSrc)?this.c.dataSrc:[this.c.dataSrc],d=f.ext.oApi._fnGetObjectDataFn(c[b]),h=this.s.dt,l,n,m=[],k=0,p=g.length;k<p;k++){var q=g[k];l=h.row(q).data();l=d(l);if(null===l||l===e)l=this.c.emptyDataGroup;if(n===e||l!==n)m.push({dataPoint:l,rows:[]}),n=l;m[m.length-1].rows.push(q)}if(c[b+1]!==e)for(k=0,p=m.length;k<p;k++)m[k].children=this._group(b+1,m[k].rows);return m},_groupDisplay:function(b,a){for(var c=this.s.dt,g,d=0,f=
+a.length;d<f;d++){var e=a[d],h=e.dataPoint,k=e.rows;this.c.startRender&&(g=this.c.startRender.call(this,c.rows(k),h,b),(g=this._rowWrap(g,this.c.startClassName,b))&&g.insertBefore(c.row(k[0]).node()));this.c.endRender&&(g=this.c.endRender.call(this,c.rows(k),h,b),(g=this._rowWrap(g,this.c.endClassName,b))&&g.insertAfter(c.row(k[k.length-1]).node()));e.children&&this._groupDisplay(b+1,e.children)}},_rowWrap:function(b,g,c){if(null===b||""===b)b=this.c.emptyDataGroup;return b===e||null===b?null:("object"===
+typeof b&&b.nodeName&&"tr"===b.nodeName.toLowerCase()?a(b):b instanceof a&&b.length&&"tr"===b[0].nodeName.toLowerCase()?b:a("<tr/>").append(a("<td/>").attr("colspan",this._colspan()).append(b))).addClass(this.c.className).addClass(g).addClass("dtrg-level-"+c)}});h.defaults={className:"dtrg-group",dataSrc:0,emptyDataGroup:"No group",enable:!0,endClassName:"dtrg-end",endRender:null,startClassName:"dtrg-start",startRender:function(b,a){return a}};h.version="1.1.1";a.fn.dataTable.RowGroup=h;a.fn.DataTable.RowGroup=
+h;f.Api.register("rowGroup()",function(){return this});f.Api.register("rowGroup().disable()",function(){return this.iterator("table",function(a){a.rowGroup&&a.rowGroup.enable(!1)})});f.Api.register("rowGroup().enable()",function(a){return this.iterator("table",function(b){b.rowGroup&&b.rowGroup.enable(a===e?!0:a)})});f.Api.register("rowGroup().dataSrc()",function(a){return a===e?this.context[0].rowGroup.dataSrc():this.iterator("table",function(b){b.rowGroup&&b.rowGroup.dataSrc(a)})});a(c).on("preInit.dt.dtrg",
+function(b,c,d){"dt"===b.namespace&&(b=c.oInit.rowGroup,d=f.defaults.rowGroup,b||d)&&(d=a.extend({},d,b),!1!==b&&new h(c,d))});return h});
Index: public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 3 styling wrapper for RowGroup
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs', 'datatables.net-rowgroup'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowGroup ) {
+				require('datatables.net-rowgroup')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 3 styling wrapper for RowGroup
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-rowgroup"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs")(a,b).$);b.fn.dataTable.RowGroup||require("datatables.net-rowgroup")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap4.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 4 styling wrapper for RowGroup
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-rowgroup'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowGroup ) {
+				require('datatables.net-rowgroup')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 4 styling wrapper for RowGroup
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-rowgroup"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.RowGroup||require("datatables.net-rowgroup")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.dataTables.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! DataTables styling wrapper for RowGroup
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-dt', 'datatables.net-rowgroup'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-dt')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowGroup ) {
+				require('datatables.net-rowgroup')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.foundation.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Foundation styling wrapper for RowGroup
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-zf', 'datatables.net-rowgroup'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-zf')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowGroup ) {
+				require('datatables.net-rowgroup')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.foundation.min.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Foundation styling wrapper for RowGroup
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-rowgroup"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-zf")(a,b).$);b.fn.dataTable.RowGroup||require("datatables.net-rowgroup")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.jqueryui.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! jQuery UI styling wrapper for RowGroup
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-jqui', 'datatables.net-rowgroup'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-jqui')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowGroup ) {
+				require('datatables.net-rowgroup')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ jQuery UI styling wrapper for RowGroup
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-rowgroup"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-jqui")(a,b).$);b.fn.dataTable.RowGroup||require("datatables.net-rowgroup")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.semanticui.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Semanic UI styling wrapper for RowGroup
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-se', 'datatables.net-rowgroup'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-se')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowGroup ) {
+				require('datatables.net-rowgroup')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.semanticui.min.js
===================================================================
--- public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowGroup-1.1.1/js/rowGroup.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Semanic UI styling wrapper for RowGroup
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-rowgroup"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-se")(a,b).$);b.fn.dataTable.RowGroup||require("datatables.net-rowgroup")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,22 @@
+table.dt-rowReorder-float {
+  position: absolute !important;
+  opacity: 0.8;
+  table-layout: fixed;
+  outline: 2px solid #337ab7;
+  outline-offset: -2px;
+  z-index: 2001;
+}
+
+tr.dt-rowReorder-moving {
+  outline: 2px solid #888;
+  outline-offset: -2px;
+}
+
+body.dt-rowReorder-noOverflow {
+  overflow-x: hidden;
+}
+
+table.dataTable td.reorder {
+  text-align: center;
+  cursor: move;
+}
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dt-rowReorder-float{position:absolute !important;opacity:0.8;table-layout:fixed;outline:2px solid #337ab7;outline-offset:-2px;z-index:2001}tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}body.dt-rowReorder-noOverflow{overflow-x:hidden}table.dataTable td.reorder{text-align:center;cursor:move}
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap4.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,22 @@
+table.dt-rowReorder-float {
+  position: absolute !important;
+  opacity: 0.8;
+  table-layout: fixed;
+  outline: 2px solid #0275d8;
+  outline-offset: -2px;
+  z-index: 2001;
+}
+
+tr.dt-rowReorder-moving {
+  outline: 2px solid #888;
+  outline-offset: -2px;
+}
+
+body.dt-rowReorder-noOverflow {
+  overflow-x: hidden;
+}
+
+table.dataTable td.reorder {
+  text-align: center;
+  cursor: move;
+}
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dt-rowReorder-float{position:absolute !important;opacity:0.8;table-layout:fixed;outline:2px solid #0275d8;outline-offset:-2px;z-index:2001}tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}body.dt-rowReorder-noOverflow{overflow-x:hidden}table.dataTable td.reorder{text-align:center;cursor:move}
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.dataTables.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,22 @@
+table.dt-rowReorder-float {
+  position: absolute !important;
+  opacity: 0.8;
+  table-layout: fixed;
+  outline: 2px solid #888;
+  outline-offset: -2px;
+  z-index: 2001;
+}
+
+tr.dt-rowReorder-moving {
+  outline: 2px solid #555;
+  outline-offset: -2px;
+}
+
+body.dt-rowReorder-noOverflow {
+  overflow-x: hidden;
+}
+
+table.dataTable td.reorder {
+  text-align: center;
+  cursor: move;
+}
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.dataTables.min.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dt-rowReorder-float{position:absolute !important;opacity:0.8;table-layout:fixed;outline:2px solid #888;outline-offset:-2px;z-index:2001}tr.dt-rowReorder-moving{outline:2px solid #555;outline-offset:-2px}body.dt-rowReorder-noOverflow{overflow-x:hidden}table.dataTable td.reorder{text-align:center;cursor:move}
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.foundation.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,22 @@
+table.dt-rowReorder-float {
+  position: absolute !important;
+  opacity: 0.8;
+  table-layout: fixed;
+  outline: 2px solid #337ab7;
+  outline-offset: -2px;
+  z-index: 2001;
+}
+
+tr.dt-rowReorder-moving {
+  outline: 2px solid #888;
+  outline-offset: -2px;
+}
+
+body.dt-rowReorder-noOverflow {
+  overflow-x: hidden;
+}
+
+table.dataTable td.reorder {
+  text-align: center;
+  cursor: move;
+}
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.foundation.min.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dt-rowReorder-float{position:absolute !important;opacity:0.8;table-layout:fixed;outline:2px solid #337ab7;outline-offset:-2px;z-index:2001}tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}body.dt-rowReorder-noOverflow{overflow-x:hidden}table.dataTable td.reorder{text-align:center;cursor:move}
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.jqueryui.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,22 @@
+table.dt-rowReorder-float {
+  position: absolute !important;
+  opacity: 0.8;
+  table-layout: fixed;
+  outline: 2px solid #888;
+  outline-offset: -2px;
+  z-index: 2001;
+}
+
+tr.dt-rowReorder-moving {
+  outline: 2px solid #555;
+  outline-offset: -2px;
+}
+
+body.dt-rowReorder-noOverflow {
+  overflow-x: hidden;
+}
+
+table.dataTable td.reorder {
+  text-align: center;
+  cursor: move;
+}
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dt-rowReorder-float{position:absolute !important;opacity:0.8;table-layout:fixed;outline:2px solid #888;outline-offset:-2px;z-index:2001}tr.dt-rowReorder-moving{outline:2px solid #555;outline-offset:-2px}body.dt-rowReorder-noOverflow{overflow-x:hidden}table.dataTable td.reorder{text-align:center;cursor:move}
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.semanticui.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,22 @@
+table.dt-rowReorder-float {
+  position: absolute !important;
+  opacity: 0.8;
+  table-layout: fixed;
+  outline: 2px solid rgba(0, 0, 0, 0.05);
+  outline-offset: -2px;
+  z-index: 2001;
+}
+
+tr.dt-rowReorder-moving {
+  outline: 2px solid #888;
+  outline-offset: -2px;
+}
+
+body.dt-rowReorder-noOverflow {
+  overflow-x: hidden;
+}
+
+table.dataTable td.reorder {
+  text-align: center;
+  cursor: move;
+}
Index: public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.semanticui.min.css
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/css/rowReorder.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dt-rowReorder-float{position:absolute !important;opacity:0.8;table-layout:fixed;outline:2px solid rgba(0,0,0,0.05);outline-offset:-2px;z-index:2001}tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}body.dt-rowReorder-noOverflow{overflow-x:hidden}table.dataTable td.reorder{text-align:center;cursor:move}
Index: public/vendors/dataTable/RowReorder-1.2.6/js/dataTables.rowReorder.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/dataTables.rowReorder.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/dataTables.rowReorder.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,819 @@
+/*! RowReorder 1.2.6
+ * 2015-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     RowReorder
+ * @description Row reordering extension for DataTables
+ * @version     1.2.6
+ * @file        dataTables.rowReorder.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2015-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/**
+ * RowReorder provides the ability in DataTables to click and drag rows to
+ * reorder them. When a row is dropped the data for the rows effected will be
+ * updated to reflect the change. Normally this data point should also be the
+ * column being sorted upon in the DataTable but this does not need to be the
+ * case. RowReorder implements a "data swap" method - so the rows being
+ * reordered take the value of the data point from the row that used to occupy
+ * the row's new position.
+ *
+ * Initialisation is done by either:
+ *
+ * * `rowReorder` parameter in the DataTable initialisation object
+ * * `new $.fn.dataTable.RowReorder( table, opts )` after DataTables
+ *   initialisation.
+ * 
+ *  @class
+ *  @param {object} settings DataTables settings object for the host table
+ *  @param {object} [opts] Configuration options
+ *  @requires jQuery 1.7+
+ *  @requires DataTables 1.10.7+
+ */
+var RowReorder = function ( dt, opts ) {
+	// Sanity check that we are using DataTables 1.10 or newer
+	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) {
+		throw 'DataTables RowReorder requires DataTables 1.10.8 or newer';
+	}
+
+	// User and defaults configuration object
+	this.c = $.extend( true, {},
+		DataTable.defaults.rowReorder,
+		RowReorder.defaults,
+		opts
+	);
+
+	// Internal settings
+	this.s = {
+		/** @type {integer} Scroll body top cache */
+		bodyTop: null,
+
+		/** @type {DataTable.Api} DataTables' API instance */
+		dt: new DataTable.Api( dt ),
+
+		/** @type {function} Data fetch function */
+		getDataFn: DataTable.ext.oApi._fnGetObjectDataFn( this.c.dataSrc ),
+
+		/** @type {array} Pixel positions for row insertion calculation */
+		middles: null,
+
+		/** @type {Object} Cached dimension information for use in the mouse move event handler */
+		scroll: {},
+
+		/** @type {integer} Interval object used for smooth scrolling */
+		scrollInterval: null,
+
+		/** @type {function} Data set function */
+		setDataFn: DataTable.ext.oApi._fnSetObjectDataFn( this.c.dataSrc ),
+
+		/** @type {Object} Mouse down information */
+		start: {
+			top: 0,
+			left: 0,
+			offsetTop: 0,
+			offsetLeft: 0,
+			nodes: []
+		},
+
+		/** @type {integer} Window height cached value */
+		windowHeight: 0,
+
+		/** @type {integer} Document outer height cached value */
+		documentOuterHeight: 0,
+
+		/** @type {integer} DOM clone outer height cached value */
+		domCloneOuterHeight: 0
+	};
+
+	// DOM items
+	this.dom = {
+		/** @type {jQuery} Cloned row being moved around */
+		clone: null,
+
+		/** @type {jQuery} DataTables scrolling container */
+		dtScroll: $('div.dataTables_scrollBody', this.s.dt.table().container())
+	};
+
+	// Check if row reorder has already been initialised on this table
+	var settings = this.s.dt.settings()[0];
+	var exisiting = settings.rowreorder;
+	if ( exisiting ) {
+		return exisiting;
+	}
+
+	settings.rowreorder = this;
+	this._constructor();
+};
+
+
+$.extend( RowReorder.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Initialise the RowReorder instance
+	 *
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var table = $( dt.table().node() );
+
+		// Need to be able to calculate the row positions relative to the table
+		if ( table.css('position') === 'static' ) {
+			table.css( 'position', 'relative' );
+		}
+
+		// listen for mouse down on the target column - we have to implement
+		// this rather than using HTML5 drag and drop as drag and drop doesn't
+		// appear to work on table rows at this time. Also mobile browsers are
+		// not supported.
+		// Use `table().container()` rather than just the table node for IE8 -
+		// otherwise it only works once...
+		$(dt.table().container()).on( 'mousedown.rowReorder touchstart.rowReorder', this.c.selector, function (e) {
+			if ( ! that.c.enable ) {
+				return;
+			}
+
+			// Ignore excluded children of the selector
+			if ( $(e.target).is(that.c.excludedChildren) ) {
+				return true;
+			}
+
+			var tr = $(this).closest('tr');
+			var row = dt.row( tr );
+
+			// Double check that it is a DataTable row
+			if ( row.any() ) {
+				that._emitEvent( 'pre-row-reorder', {
+					node: row.node(),
+					index: row.index()
+				} );
+
+				that._mouseDown( e, tr );
+				return false;
+			}
+		} );
+
+		dt.on( 'destroy.rowReorder', function () {
+			$(dt.table().container()).off( '.rowReorder' );
+			dt.off( '.rowReorder' );
+		} );
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+	
+	/**
+	 * Cache the measurements that RowReorder needs in the mouse move handler
+	 * to attempt to speed things up, rather than reading from the DOM.
+	 *
+	 * @private
+	 */
+	_cachePositions: function ()
+	{
+		var dt = this.s.dt;
+
+		// Frustratingly, if we add `position:relative` to the tbody, the
+		// position is still relatively to the parent. So we need to adjust
+		// for that
+		var headerHeight = $( dt.table().node() ).find('thead').outerHeight();
+
+		// Need to pass the nodes through jQuery to get them in document order,
+		// not what DataTables thinks it is, since we have been altering the
+		// order
+		var nodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
+		var tops = $.map( nodes, function ( node, i ) {
+			return $(node).position().top - headerHeight;
+		} );
+
+		var middles = $.map( tops, function ( top, i ) {
+			return tops.length < i-1 ?
+				(top + tops[i+1]) / 2 :
+				(top + top + $( dt.row( ':last-child' ).node() ).outerHeight() ) / 2;
+		} );
+
+		this.s.middles = middles;
+		this.s.bodyTop = $( dt.table().body() ).offset().top;
+		this.s.windowHeight = $(window).height();
+		this.s.documentOuterHeight = $(document).outerHeight();
+	},
+
+
+	/**
+	 * Clone a row so it can be floated around the screen
+	 *
+	 * @param  {jQuery} target Node to be cloned
+	 * @private
+	 */
+	_clone: function ( target )
+	{
+		var dt = this.s.dt;
+		var clone = $( dt.table().node().cloneNode(false) )
+			.addClass( 'dt-rowReorder-float' )
+			.append('<tbody/>')
+			.append( target.clone( false ) );
+
+		// Match the table and column widths - read all sizes before setting
+		// to reduce reflows
+		var tableWidth = target.outerWidth();
+		var tableHeight = target.outerHeight();
+		var sizes = target.children().map( function () {
+			return $(this).width();
+		} );
+
+		clone
+			.width( tableWidth )
+			.height( tableHeight )
+			.find('tr').children().each( function (i) {
+				this.style.width = sizes[i]+'px';
+			} );
+
+		// Insert into the document to have it floating around
+		clone.appendTo( 'body' );
+
+		this.dom.clone = clone;
+		this.s.domCloneOuterHeight = clone.outerHeight();
+	},
+
+
+	/**
+	 * Update the cloned item's position in the document
+	 *
+	 * @param  {object} e Event giving the mouse's position
+	 * @private
+	 */
+	_clonePosition: function ( e )
+	{
+		var start = this.s.start;
+		var topDiff = this._eventToPage( e, 'Y' ) - start.top;
+		var leftDiff = this._eventToPage( e, 'X' ) - start.left;
+		var snap = this.c.snapX;
+		var left;
+		var top = topDiff + start.offsetTop;
+
+		if ( snap === true ) {
+			left = start.offsetLeft;
+		}
+		else if ( typeof snap === 'number' ) {
+			left = start.offsetLeft + snap;
+		}
+		else {
+			left = leftDiff + start.offsetLeft;
+		}
+
+		if(top < 0) {
+			top = 0
+		}
+		else if(top + this.s.domCloneOuterHeight > this.s.documentOuterHeight) {
+			top = this.s.documentOuterHeight - this.s.domCloneOuterHeight;
+		}
+
+		this.dom.clone.css( {
+			top: top,
+			left: left
+		} );
+	},
+
+
+	/**
+	 * Emit an event on the DataTable for listeners
+	 *
+	 * @param  {string} name Event name
+	 * @param  {array} args Event arguments
+	 * @private
+	 */
+	_emitEvent: function ( name, args )
+	{
+		this.s.dt.iterator( 'table', function ( ctx, i ) {
+			$(ctx.nTable).triggerHandler( name+'.dt', args );
+		} );
+	},
+
+
+	/**
+	 * Get pageX/Y position from an event, regardless of if it is a mouse or
+	 * touch event.
+	 *
+	 * @param  {object} e Event
+	 * @param  {string} pos X or Y (must be a capital)
+	 * @private
+	 */
+	_eventToPage: function ( e, pos )
+	{
+		if ( e.type.indexOf( 'touch' ) !== -1 ) {
+			return e.originalEvent.touches[0][ 'page'+pos ];
+		}
+
+		return e[ 'page'+pos ];
+	},
+
+
+	/**
+	 * Mouse down event handler. Read initial positions and add event handlers
+	 * for the move.
+	 *
+	 * @param  {object} e      Mouse event
+	 * @param  {jQuery} target TR element that is to be moved
+	 * @private
+	 */
+	_mouseDown: function ( e, target )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var start = this.s.start;
+
+		var offset = target.offset();
+		start.top = this._eventToPage( e, 'Y' );
+		start.left = this._eventToPage( e, 'X' );
+		start.offsetTop = offset.top;
+		start.offsetLeft = offset.left;
+		start.nodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
+
+		this._cachePositions();
+		this._clone( target );
+		this._clonePosition( e );
+
+		this.dom.target = target;
+		target.addClass( 'dt-rowReorder-moving' );
+
+		$( document )
+			.on( 'mouseup.rowReorder touchend.rowReorder', function (e) {
+				that._mouseUp(e);
+			} )
+			.on( 'mousemove.rowReorder touchmove.rowReorder', function (e) {
+				that._mouseMove(e);
+			} );
+
+		// Check if window is x-scrolling - if not, disable it for the duration
+		// of the drag
+		if ( $(window).width() === $(document).width() ) {
+			$(document.body).addClass( 'dt-rowReorder-noOverflow' );
+		}
+
+		// Cache scrolling information so mouse move doesn't need to read.
+		// This assumes that the window and DT scroller will not change size
+		// during an row drag, which I think is a fair assumption
+		var scrollWrapper = this.dom.dtScroll;
+		this.s.scroll = {
+			windowHeight: $(window).height(),
+			windowWidth:  $(window).width(),
+			dtTop:        scrollWrapper.length ? scrollWrapper.offset().top : null,
+			dtLeft:       scrollWrapper.length ? scrollWrapper.offset().left : null,
+			dtHeight:     scrollWrapper.length ? scrollWrapper.outerHeight() : null,
+			dtWidth:      scrollWrapper.length ? scrollWrapper.outerWidth() : null
+		};
+	},
+
+
+	/**
+	 * Mouse move event handler - move the cloned row and shuffle the table's
+	 * rows if required.
+	 *
+	 * @param  {object} e Mouse event
+	 * @private
+	 */
+	_mouseMove: function ( e )
+	{
+		this._clonePosition( e );
+
+		// Transform the mouse position into a position in the table's body
+		var bodyY = this._eventToPage( e, 'Y' ) - this.s.bodyTop;
+		var middles = this.s.middles;
+		var insertPoint = null;
+		var dt = this.s.dt;
+		var body = dt.table().body();
+
+		// Determine where the row should be inserted based on the mouse
+		// position
+		for ( var i=0, ien=middles.length ; i<ien ; i++ ) {
+			if ( bodyY < middles[i] ) {
+				insertPoint = i;
+				break;
+			}
+		}
+
+		if ( insertPoint === null ) {
+			insertPoint = middles.length;
+		}
+
+		// Perform the DOM shuffle if it has changed from last time
+		if ( this.s.lastInsert === null || this.s.lastInsert !== insertPoint ) {
+			if ( insertPoint === 0 ) {
+				this.dom.target.prependTo( body );
+			}
+			else {
+				var nodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
+
+				if ( insertPoint > this.s.lastInsert ) {
+					this.dom.target.insertAfter( nodes[ insertPoint-1 ] );
+				}
+				else {
+					this.dom.target.insertBefore( nodes[ insertPoint ] );
+				}
+			}
+
+			this._cachePositions();
+
+			this.s.lastInsert = insertPoint;
+		}
+
+		this._shiftScroll( e );
+	},
+
+
+	/**
+	 * Mouse up event handler - release the event handlers and perform the
+	 * table updates
+	 *
+	 * @param  {object} e Mouse event
+	 * @private
+	 */
+	_mouseUp: function ( e )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var i, ien;
+		var dataSrc = this.c.dataSrc;
+
+		this.dom.clone.remove();
+		this.dom.clone = null;
+
+		this.dom.target.removeClass( 'dt-rowReorder-moving' );
+		//this.dom.target = null;
+
+		$(document).off( '.rowReorder' );
+		$(document.body).removeClass( 'dt-rowReorder-noOverflow' );
+
+		clearInterval( this.s.scrollInterval );
+		this.s.scrollInterval = null;
+
+		// Calculate the difference
+		var startNodes = this.s.start.nodes;
+		var endNodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
+		var idDiff = {};
+		var fullDiff = [];
+		var diffNodes = [];
+		var getDataFn = this.s.getDataFn;
+		var setDataFn = this.s.setDataFn;
+
+		for ( i=0, ien=startNodes.length ; i<ien ; i++ ) {
+			if ( startNodes[i] !== endNodes[i] ) {
+				var id = dt.row( endNodes[i] ).id();
+				var endRowData = dt.row( endNodes[i] ).data();
+				var startRowData = dt.row( startNodes[i] ).data();
+
+				if ( id ) {
+					idDiff[ id ] = getDataFn( startRowData );
+				}
+
+				fullDiff.push( {
+					node: endNodes[i],
+					oldData: getDataFn( endRowData ),
+					newData: getDataFn( startRowData ),
+					newPosition: i,
+					oldPosition: $.inArray( endNodes[i], startNodes )
+				} );
+
+				diffNodes.push( endNodes[i] );
+			}
+		}
+		
+		// Create event args
+		var eventArgs = [ fullDiff, {
+			dataSrc:       dataSrc,
+			nodes:         diffNodes,
+			values:        idDiff,
+			triggerRow:    dt.row( this.dom.target ),
+			originalEvent: e
+		} ];
+		
+		// Emit event
+		this._emitEvent( 'row-reorder', eventArgs );
+
+		var update = function () {
+			if ( that.c.update ) {
+				for ( i=0, ien=fullDiff.length ; i<ien ; i++ ) {
+					var row = dt.row( fullDiff[i].node );
+					var rowData = row.data();
+
+					setDataFn( rowData, fullDiff[i].newData );
+
+					// Invalidate the cell that has the same data source as the dataSrc
+					dt.columns().every( function () {
+						if ( this.dataSrc() === dataSrc ) {
+							dt.cell( fullDiff[i].node, this.index() ).invalidate( 'data' );
+						}
+					} );
+				}
+
+				// Trigger row reordered event
+				that._emitEvent( 'row-reordered', eventArgs );
+
+				dt.draw( false );
+			}
+		};
+
+		// Editor interface
+		if ( this.c.editor ) {
+			// Disable user interaction while Editor is submitting
+			this.c.enable = false;
+
+			this.c.editor
+				.edit(
+					diffNodes,
+					false,
+					$.extend( {submit: 'changed'}, this.c.formOptions )
+				)
+				.multiSet( dataSrc, idDiff )
+				.one( 'preSubmitCancelled.rowReorder', function () {
+					that.c.enable = true;
+					that.c.editor.off( '.rowReorder' );
+					dt.draw( false );
+				} )
+				.one( 'submitUnsuccessful.rowReorder', function () {
+					dt.draw( false );
+				} )
+				.one( 'submitSuccess.rowReorder', function () {
+					update();
+				} )
+				.one( 'submitComplete', function () {
+					that.c.enable = true;
+					that.c.editor.off( '.rowReorder' );
+				} )
+				.submit();
+		}
+		else {
+			update();
+		}
+	},
+
+
+	/**
+	 * Move the window and DataTables scrolling during a drag to scroll new
+	 * content into view.
+	 *
+	 * This matches the `_shiftScroll` method used in AutoFill, but only
+	 * horizontal scrolling is considered here.
+	 *
+	 * @param  {object} e Mouse move event object
+	 * @private
+	 */
+	_shiftScroll: function ( e )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var scroll = this.s.scroll;
+		var runInterval = false;
+		var scrollSpeed = 5;
+		var buffer = 65;
+		var
+			windowY = e.pageY - document.body.scrollTop,
+			windowVert,
+			dtVert;
+
+		// Window calculations - based on the mouse position in the window,
+		// regardless of scrolling
+		if ( windowY < buffer ) {
+			windowVert = scrollSpeed * -1;
+		}
+		else if ( windowY > scroll.windowHeight - buffer ) {
+			windowVert = scrollSpeed;
+		}
+
+		// DataTables scrolling calculations - based on the table's position in
+		// the document and the mouse position on the page
+		if ( scroll.dtTop !== null && e.pageY < scroll.dtTop + buffer ) {
+			dtVert = scrollSpeed * -1;
+		}
+		else if ( scroll.dtTop !== null && e.pageY > scroll.dtTop + scroll.dtHeight - buffer ) {
+			dtVert = scrollSpeed;
+		}
+
+		// This is where it gets interesting. We want to continue scrolling
+		// without requiring a mouse move, so we need an interval to be
+		// triggered. The interval should continue until it is no longer needed,
+		// but it must also use the latest scroll commands (for example consider
+		// that the mouse might move from scrolling up to scrolling left, all
+		// with the same interval running. We use the `scroll` object to "pass"
+		// this information to the interval. Can't use local variables as they
+		// wouldn't be the ones that are used by an already existing interval!
+		if ( windowVert || dtVert ) {
+			scroll.windowVert = windowVert;
+			scroll.dtVert = dtVert;
+			runInterval = true;
+		}
+		else if ( this.s.scrollInterval ) {
+			// Don't need to scroll - remove any existing timer
+			clearInterval( this.s.scrollInterval );
+			this.s.scrollInterval = null;
+		}
+
+		// If we need to run the interval to scroll and there is no existing
+		// interval (if there is an existing one, it will continue to run)
+		if ( ! this.s.scrollInterval && runInterval ) {
+			this.s.scrollInterval = setInterval( function () {
+				// Don't need to worry about setting scroll <0 or beyond the
+				// scroll bound as the browser will just reject that.
+				if ( scroll.windowVert ) {
+					document.body.scrollTop += scroll.windowVert;
+				}
+
+				// DataTables scrolling
+				if ( scroll.dtVert ) {
+					var scroller = that.dom.dtScroll[0];
+
+					if ( scroll.dtVert ) {
+						scroller.scrollTop += scroll.dtVert;
+					}
+				}
+			}, 20 );
+		}
+	}
+} );
+
+
+
+/**
+ * RowReorder default settings for initialisation
+ *
+ * @namespace
+ * @name RowReorder.defaults
+ * @static
+ */
+RowReorder.defaults = {
+	/**
+	 * Data point in the host row's data source object for where to get and set
+	 * the data to reorder. This will normally also be the sorting column.
+	 *
+	 * @type {Number}
+	 */
+	dataSrc: 0,
+
+	/**
+	 * Editor instance that will be used to perform the update
+	 *
+	 * @type {DataTable.Editor}
+	 */
+	editor: null,
+
+	/**
+	 * Enable / disable RowReorder's user interaction
+	 * @type {Boolean}
+	 */
+	enable: true,
+
+	/**
+	 * Form options to pass to Editor when submitting a change in the row order.
+	 * See the Editor `from-options` object for details of the options
+	 * available.
+	 * @type {Object}
+	 */
+	formOptions: {},
+
+	/**
+	 * Drag handle selector. This defines the element that when dragged will
+	 * reorder a row.
+	 *
+	 * @type {String}
+	 */
+	selector: 'td:first-child',
+
+	/**
+	 * Optionally lock the dragged row's x-position. This can be `true` to
+	 * fix the position match the host table's, `false` to allow free movement
+	 * of the row, or a number to define an offset from the host table.
+	 *
+	 * @type {Boolean|number}
+	 */
+	snapX: false,
+
+	/**
+	 * Update the table's data on drop
+	 *
+	 * @type {Boolean}
+	 */
+	update: true,
+
+	/**
+	 * Selector for children of the drag handle selector that mouseDown events
+	 * will be passed through to and drag will not activate
+	 *
+	 * @type {String}
+	 */
+	excludedChildren: 'a'
+};
+
+
+/*
+ * API
+ */
+var Api = $.fn.dataTable.Api;
+
+// Doesn't do anything - work around for a bug in DT... Not documented
+Api.register( 'rowReorder()', function () {
+	return this;
+} );
+
+Api.register( 'rowReorder.enable()', function ( toggle ) {
+	if ( toggle === undefined ) {
+		toggle = true;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx.rowreorder ) {
+			ctx.rowreorder.c.enable = toggle;
+		}
+	} );
+} );
+
+Api.register( 'rowReorder.disable()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx.rowreorder ) {
+			ctx.rowreorder.c.enable = false;
+		}
+	} );
+} );
+
+
+/**
+ * Version information
+ *
+ * @name RowReorder.version
+ * @static
+ */
+RowReorder.version = '1.2.6';
+
+
+$.fn.dataTable.RowReorder = RowReorder;
+$.fn.DataTable.RowReorder = RowReorder;
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'init.dt.dtr', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.rowReorder;
+	var defaults = DataTable.defaults.rowReorder;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, init, defaults );
+
+		if ( init !== false ) {
+			new RowReorder( settings, opts  );
+		}
+	}
+} );
+
+
+return RowReorder;
+}));
Index: public/vendors/dataTable/RowReorder-1.2.6/js/dataTables.rowReorder.min.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/dataTables.rowReorder.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/dataTables.rowReorder.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,31 @@
+/*!
+   Copyright 2015-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ RowReorder 1.2.6
+ 2015-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,f,d){a instanceof String&&(a=String(a));for(var h=a.length,g=0;g<h;g++){var m=a[g];if(f.call(d,m,g,a))return{i:g,v:m}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,f,d){a!=Array.prototype&&a!=Object.prototype&&(a[f]=d.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(a,f,d,h){if(f){d=$jscomp.global;a=a.split(".");for(h=0;h<a.length-1;h++){var g=a[h];g in d||(d[g]={});d=d[g]}a=a[a.length-1];h=d[a];f=f(h);f!=h&&null!=f&&$jscomp.defineProperty(d,a,{configurable:!0,writable:!0,value:f})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,d){return $jscomp.findInternal(this,a,d).v}},"es6","es3");
+(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(f){return a(f,window,document)}):"object"===typeof exports?module.exports=function(f,d){f||(f=window);d&&d.fn.dataTable||(d=require("datatables.net")(f,d).$);return a(d,f,f.document)}:a(jQuery,window,document)})(function(a,f,d,h){var g=a.fn.dataTable,m=function(c,e){if(!g.versionCheck||!g.versionCheck("1.10.8"))throw"DataTables RowReorder requires DataTables 1.10.8 or newer";this.c=a.extend(!0,{},g.defaults.rowReorder,
+m.defaults,e);this.s={bodyTop:null,dt:new g.Api(c),getDataFn:g.ext.oApi._fnGetObjectDataFn(this.c.dataSrc),middles:null,scroll:{},scrollInterval:null,setDataFn:g.ext.oApi._fnSetObjectDataFn(this.c.dataSrc),start:{top:0,left:0,offsetTop:0,offsetLeft:0,nodes:[]},windowHeight:0,documentOuterHeight:0,domCloneOuterHeight:0};this.dom={clone:null,dtScroll:a("div.dataTables_scrollBody",this.s.dt.table().container())};c=this.s.dt.settings()[0];if(e=c.rowreorder)return e;c.rowreorder=this;this._constructor()};
+a.extend(m.prototype,{_constructor:function(){var c=this,e=this.s.dt,b=a(e.table().node());"static"===b.css("position")&&b.css("position","relative");a(e.table().container()).on("mousedown.rowReorder touchstart.rowReorder",this.c.selector,function(b){if(c.c.enable){if(a(b.target).is(c.c.excludedChildren))return!0;var d=a(this).closest("tr"),n=e.row(d);if(n.any())return c._emitEvent("pre-row-reorder",{node:n.node(),index:n.index()}),c._mouseDown(b,d),!1}});e.on("destroy.rowReorder",function(){a(e.table().container()).off(".rowReorder");
+e.off(".rowReorder")})},_cachePositions:function(){var c=this.s.dt,e=a(c.table().node()).find("thead").outerHeight(),b=a.unique(c.rows({page:"current"}).nodes().toArray()),n=a.map(b,function(c,b){return a(c).position().top-e});b=a.map(n,function(b,e){return n.length<e-1?(b+n[e+1])/2:(b+b+a(c.row(":last-child").node()).outerHeight())/2});this.s.middles=b;this.s.bodyTop=a(c.table().body()).offset().top;this.s.windowHeight=a(f).height();this.s.documentOuterHeight=a(d).outerHeight()},_clone:function(c){var e=
+a(this.s.dt.table().node().cloneNode(!1)).addClass("dt-rowReorder-float").append("<tbody/>").append(c.clone(!1)),b=c.outerWidth(),n=c.outerHeight(),d=c.children().map(function(){return a(this).width()});e.width(b).height(n).find("tr").children().each(function(a){this.style.width=d[a]+"px"});e.appendTo("body");this.dom.clone=e;this.s.domCloneOuterHeight=e.outerHeight()},_clonePosition:function(a){var c=this.s.start,b=this._eventToPage(a,"Y")-c.top;a=this._eventToPage(a,"X")-c.left;var d=this.c.snapX;
+b+=c.offsetTop;c=!0===d?c.offsetLeft:"number"===typeof d?c.offsetLeft+d:a+c.offsetLeft;0>b?b=0:b+this.s.domCloneOuterHeight>this.s.documentOuterHeight&&(b=this.s.documentOuterHeight-this.s.domCloneOuterHeight);this.dom.clone.css({top:b,left:c})},_emitEvent:function(c,e){this.s.dt.iterator("table",function(b,d){a(b.nTable).triggerHandler(c+".dt",e)})},_eventToPage:function(a,e){return-1!==a.type.indexOf("touch")?a.originalEvent.touches[0]["page"+e]:a["page"+e]},_mouseDown:function(c,e){var b=this,
+n=this.s.dt,g=this.s.start,t=e.offset();g.top=this._eventToPage(c,"Y");g.left=this._eventToPage(c,"X");g.offsetTop=t.top;g.offsetLeft=t.left;g.nodes=a.unique(n.rows({page:"current"}).nodes().toArray());this._cachePositions();this._clone(e);this._clonePosition(c);this.dom.target=e;e.addClass("dt-rowReorder-moving");a(d).on("mouseup.rowReorder touchend.rowReorder",function(a){b._mouseUp(a)}).on("mousemove.rowReorder touchmove.rowReorder",function(a){b._mouseMove(a)});a(f).width()===a(d).width()&&a(d.body).addClass("dt-rowReorder-noOverflow");
+c=this.dom.dtScroll;this.s.scroll={windowHeight:a(f).height(),windowWidth:a(f).width(),dtTop:c.length?c.offset().top:null,dtLeft:c.length?c.offset().left:null,dtHeight:c.length?c.outerHeight():null,dtWidth:c.length?c.outerWidth():null}},_mouseMove:function(c){this._clonePosition(c);for(var e=this._eventToPage(c,"Y")-this.s.bodyTop,b=this.s.middles,d=null,f=this.s.dt,g=f.table().body(),l=0,h=b.length;l<h;l++)if(e<b[l]){d=l;break}null===d&&(d=b.length);if(null===this.s.lastInsert||this.s.lastInsert!==
+d)0===d?this.dom.target.prependTo(g):(e=a.unique(f.rows({page:"current"}).nodes().toArray()),d>this.s.lastInsert?this.dom.target.insertAfter(e[d-1]):this.dom.target.insertBefore(e[d])),this._cachePositions(),this.s.lastInsert=d;this._shiftScroll(c)},_mouseUp:function(c){var e=this,b=this.s.dt,f,g=this.c.dataSrc;this.dom.clone.remove();this.dom.clone=null;this.dom.target.removeClass("dt-rowReorder-moving");a(d).off(".rowReorder");a(d.body).removeClass("dt-rowReorder-noOverflow");clearInterval(this.s.scrollInterval);
+this.s.scrollInterval=null;var h=this.s.start.nodes,l=a.unique(b.rows({page:"current"}).nodes().toArray()),m={},q=[],p=[],r=this.s.getDataFn,y=this.s.setDataFn;var k=0;for(f=h.length;k<f;k++)if(h[k]!==l[k]){var u=b.row(l[k]).id(),z=b.row(l[k]).data(),v=b.row(h[k]).data();u&&(m[u]=r(v));q.push({node:l[k],oldData:r(z),newData:r(v),newPosition:k,oldPosition:a.inArray(l[k],h)});p.push(l[k])}var w=[q,{dataSrc:g,nodes:p,values:m,triggerRow:b.row(this.dom.target),originalEvent:c}];this._emitEvent("row-reorder",
+w);var x=function(){if(e.c.update){k=0;for(f=q.length;k<f;k++){var a=b.row(q[k].node).data();y(a,q[k].newData);b.columns().every(function(){this.dataSrc()===g&&b.cell(q[k].node,this.index()).invalidate("data")})}e._emitEvent("row-reordered",w);b.draw(!1)}};this.c.editor?(this.c.enable=!1,this.c.editor.edit(p,!1,a.extend({submit:"changed"},this.c.formOptions)).multiSet(g,m).one("preSubmitCancelled.rowReorder",function(){e.c.enable=!0;e.c.editor.off(".rowReorder");b.draw(!1)}).one("submitUnsuccessful.rowReorder",
+function(){b.draw(!1)}).one("submitSuccess.rowReorder",function(){x()}).one("submitComplete",function(){e.c.enable=!0;e.c.editor.off(".rowReorder")}).submit()):x()},_shiftScroll:function(a){var c=this,b=this.s.scroll,f=!1,g=a.pageY-d.body.scrollTop,h,l;65>g?h=-5:g>b.windowHeight-65&&(h=5);null!==b.dtTop&&a.pageY<b.dtTop+65?l=-5:null!==b.dtTop&&a.pageY>b.dtTop+b.dtHeight-65&&(l=5);h||l?(b.windowVert=h,b.dtVert=l,f=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=
+null);!this.s.scrollInterval&&f&&(this.s.scrollInterval=setInterval(function(){b.windowVert&&(d.body.scrollTop+=b.windowVert);if(b.dtVert){var a=c.dom.dtScroll[0];b.dtVert&&(a.scrollTop+=b.dtVert)}},20))}});m.defaults={dataSrc:0,editor:null,enable:!0,formOptions:{},selector:"td:first-child",snapX:!1,update:!0,excludedChildren:"a"};var p=a.fn.dataTable.Api;p.register("rowReorder()",function(){return this});p.register("rowReorder.enable()",function(a){a===h&&(a=!0);return this.iterator("table",function(c){c.rowreorder&&
+(c.rowreorder.c.enable=a)})});p.register("rowReorder.disable()",function(){return this.iterator("table",function(a){a.rowreorder&&(a.rowreorder.c.enable=!1)})});m.version="1.2.6";a.fn.dataTable.RowReorder=m;a.fn.DataTable.RowReorder=m;a(d).on("init.dt.dtr",function(c,d,b){"dt"===c.namespace&&(c=d.oInit.rowReorder,b=g.defaults.rowReorder,c||b)&&(b=a.extend({},c,b),!1!==c&&new m(d,b))});return m});
Index: public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 3 styling wrapper for RowReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs', 'datatables.net-rowreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowReorder ) {
+				require('datatables.net-rowreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 3 styling wrapper for RowReorder
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-rowreorder"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs")(a,b).$);b.fn.dataTable.RowReorder||require("datatables.net-rowreorder")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap4.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 4 styling wrapper for RowReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-rowreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowReorder ) {
+				require('datatables.net-rowreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 4 styling wrapper for RowReorder
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-rowreorder"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.RowReorder||require("datatables.net-rowreorder")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.dataTables.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! DataTables styling wrapper for RowReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-dt', 'datatables.net-rowreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-dt')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowReorder ) {
+				require('datatables.net-rowreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.foundation.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Foundation styling wrapper for RowReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-zf', 'datatables.net-rowreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-zf')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowReorder ) {
+				require('datatables.net-rowreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.foundation.min.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Foundation styling wrapper for RowReorder
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-rowreorder"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-zf")(a,b).$);b.fn.dataTable.RowReorder||require("datatables.net-rowreorder")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.jqueryui.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! jQuery UI styling wrapper for RowReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-jqui', 'datatables.net-rowreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-jqui')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowReorder ) {
+				require('datatables.net-rowreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ jQuery UI styling wrapper for RowReorder
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-rowreorder"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-jqui")(a,b).$);b.fn.dataTable.RowReorder||require("datatables.net-rowreorder")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.semanticui.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Semanic UI styling wrapper for RowReorder
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-se', 'datatables.net-rowreorder'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-se')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.RowReorder ) {
+				require('datatables.net-rowreorder')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.semanticui.min.js
===================================================================
--- public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/RowReorder-1.2.6/js/rowReorder.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Semanic UI styling wrapper for RowReorder
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-rowreorder"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-se")(a,b).$);b.fn.dataTable.RowReorder||require("datatables.net-rowreorder")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,36 @@
+div.dts {
+  display: block !important;
+}
+div.dts tbody th,
+div.dts tbody td {
+  white-space: nowrap;
+}
+div.dts div.dts_loading {
+  z-index: 1;
+}
+div.dts div.dts_label {
+  position: absolute;
+  right: 10px;
+  background: rgba(0, 0, 0, 0.8);
+  color: white;
+  box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.5);
+  text-align: right;
+  border-radius: 3px;
+  padding: 0.4em;
+  z-index: 2;
+  display: none;
+}
+div.dts div.dataTables_scrollBody {
+  background: repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, white 10px, white 20px);
+}
+div.dts div.dataTables_scrollBody table {
+  z-index: 2;
+}
+div.dts div.dataTables_paginate,
+div.dts div.dataTables_length {
+  display: none;
+}
+
+div.DTS tbody tr {
+  background-color: white;
+}
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dts{display:block !important}div.dts tbody th,div.dts tbody td{white-space:nowrap}div.dts div.dts_loading{z-index:1}div.dts div.dts_label{position:absolute;right:10px;background:rgba(0,0,0,0.8);color:white;box-shadow:3px 3px 10px rgba(0,0,0,0.5);text-align:right;border-radius:3px;padding:0.4em;z-index:2;display:none}div.dts div.dataTables_scrollBody{background:repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, #fff 10px, #fff 20px)}div.dts div.dataTables_scrollBody table{z-index:2}div.dts div.dataTables_paginate,div.dts div.dataTables_length{display:none}div.DTS tbody tr{background-color:white}
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap4.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,36 @@
+div.dts {
+  display: block !important;
+}
+div.dts tbody th,
+div.dts tbody td {
+  white-space: nowrap;
+}
+div.dts div.dts_loading {
+  z-index: 1;
+}
+div.dts div.dts_label {
+  position: absolute;
+  right: 10px;
+  background: rgba(0, 0, 0, 0.8);
+  color: white;
+  box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.5);
+  text-align: right;
+  border-radius: 3px;
+  padding: 0.4em;
+  z-index: 2;
+  display: none;
+}
+div.dts div.dataTables_scrollBody {
+  background: repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, white 10px, white 20px);
+}
+div.dts div.dataTables_scrollBody table {
+  z-index: 2;
+}
+div.dts div.dataTables_paginate,
+div.dts div.dataTables_length {
+  display: none;
+}
+
+div.DTS div.dataTables_scrollBody table {
+  background-color: white;
+}
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dts{display:block !important}div.dts tbody th,div.dts tbody td{white-space:nowrap}div.dts div.dts_loading{z-index:1}div.dts div.dts_label{position:absolute;right:10px;background:rgba(0,0,0,0.8);color:white;box-shadow:3px 3px 10px rgba(0,0,0,0.5);text-align:right;border-radius:3px;padding:0.4em;z-index:2;display:none}div.dts div.dataTables_scrollBody{background:repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, #fff 10px, #fff 20px)}div.dts div.dataTables_scrollBody table{z-index:2}div.dts div.dataTables_paginate,div.dts div.dataTables_length{display:none}div.DTS div.dataTables_scrollBody table{background-color:white}
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.dataTables.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,32 @@
+div.dts {
+  display: block !important;
+}
+div.dts tbody th,
+div.dts tbody td {
+  white-space: nowrap;
+}
+div.dts div.dts_loading {
+  z-index: 1;
+}
+div.dts div.dts_label {
+  position: absolute;
+  right: 10px;
+  background: rgba(0, 0, 0, 0.8);
+  color: white;
+  box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.5);
+  text-align: right;
+  border-radius: 3px;
+  padding: 0.4em;
+  z-index: 2;
+  display: none;
+}
+div.dts div.dataTables_scrollBody {
+  background: repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, white 10px, white 20px);
+}
+div.dts div.dataTables_scrollBody table {
+  z-index: 2;
+}
+div.dts div.dataTables_paginate,
+div.dts div.dataTables_length {
+  display: none;
+}
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.dataTables.min.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dts{display:block !important}div.dts tbody th,div.dts tbody td{white-space:nowrap}div.dts div.dts_loading{z-index:1}div.dts div.dts_label{position:absolute;right:10px;background:rgba(0,0,0,0.8);color:white;box-shadow:3px 3px 10px rgba(0,0,0,0.5);text-align:right;border-radius:3px;padding:0.4em;z-index:2;display:none}div.dts div.dataTables_scrollBody{background:repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, #fff 10px, #fff 20px)}div.dts div.dataTables_scrollBody table{z-index:2}div.dts div.dataTables_paginate,div.dts div.dataTables_length{display:none}
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.foundation.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,17 @@
+div.DTS tbody th,
+div.DTS tbody td {
+  white-space: nowrap;
+}
+div.DTS div.DTS_Loading {
+  z-index: 1;
+}
+div.DTS div.dataTables_scrollBody {
+  background: repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, white 10px, white 20px);
+}
+div.DTS div.dataTables_scrollBody table {
+  z-index: 2;
+}
+div.DTS div.dataTables_paginate,
+div.DTS div.dataTables_length {
+  display: none;
+}
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.foundation.min.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.DTS tbody th,div.DTS tbody td{white-space:nowrap}div.DTS div.DTS_Loading{z-index:1}div.DTS div.dataTables_scrollBody{background:repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, #fff 10px, #fff 20px)}div.DTS div.dataTables_scrollBody table{z-index:2}div.DTS div.dataTables_paginate,div.DTS div.dataTables_length{display:none}
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.jqueryui.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,32 @@
+div.dts {
+  display: block !important;
+}
+div.dts tbody th,
+div.dts tbody td {
+  white-space: nowrap;
+}
+div.dts div.dts_loading {
+  z-index: 1;
+}
+div.dts div.dts_label {
+  position: absolute;
+  right: 10px;
+  background: rgba(0, 0, 0, 0.8);
+  color: white;
+  box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.5);
+  text-align: right;
+  border-radius: 3px;
+  padding: 0.4em;
+  z-index: 2;
+  display: none;
+}
+div.dts div.dataTables_scrollBody {
+  background: repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, white 10px, white 20px);
+}
+div.dts div.dataTables_scrollBody table {
+  z-index: 2;
+}
+div.dts div.dataTables_paginate,
+div.dts div.dataTables_length {
+  display: none;
+}
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dts{display:block !important}div.dts tbody th,div.dts tbody td{white-space:nowrap}div.dts div.dts_loading{z-index:1}div.dts div.dts_label{position:absolute;right:10px;background:rgba(0,0,0,0.8);color:white;box-shadow:3px 3px 10px rgba(0,0,0,0.5);text-align:right;border-radius:3px;padding:0.4em;z-index:2;display:none}div.dts div.dataTables_scrollBody{background:repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, #fff 10px, #fff 20px)}div.dts div.dataTables_scrollBody table{z-index:2}div.dts div.dataTables_paginate,div.dts div.dataTables_length{display:none}
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.semanticui.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,32 @@
+div.dts {
+  display: block !important;
+}
+div.dts tbody th,
+div.dts tbody td {
+  white-space: nowrap;
+}
+div.dts div.dts_loading {
+  z-index: 1;
+}
+div.dts div.dts_label {
+  position: absolute;
+  right: 10px;
+  background: rgba(0, 0, 0, 0.8);
+  color: white;
+  box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.5);
+  text-align: right;
+  border-radius: 3px;
+  padding: 0.4em;
+  z-index: 2;
+  display: none;
+}
+div.dts div.dataTables_scrollBody {
+  background: repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, white 10px, white 20px);
+}
+div.dts div.dataTables_scrollBody table {
+  z-index: 2;
+}
+div.dts div.dataTables_paginate,
+div.dts div.dataTables_length {
+  display: none;
+}
Index: public/vendors/dataTable/Scroller-2.0.1/css/scroller.semanticui.min.css
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/css/scroller.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/css/scroller.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dts{display:block !important}div.dts tbody th,div.dts tbody td{white-space:nowrap}div.dts div.dts_loading{z-index:1}div.dts div.dts_label{position:absolute;right:10px;background:rgba(0,0,0,0.8);color:white;box-shadow:3px 3px 10px rgba(0,0,0,0.5);text-align:right;border-radius:3px;padding:0.4em;z-index:2;display:none}div.dts div.dataTables_scrollBody{background:repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, #fff 10px, #fff 20px)}div.dts div.dataTables_scrollBody table{z-index:2}div.dts div.dataTables_paginate,div.dts div.dataTables_length{display:none}
Index: public/vendors/dataTable/Scroller-2.0.1/js/dataTables.scroller.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/dataTables.scroller.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/dataTables.scroller.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1299 @@
+/*! Scroller 2.0.1
+ * ©2011-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     Scroller
+ * @description Virtual rendering for DataTables
+ * @version     2.0.1
+ * @file        dataTables.scroller.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2011-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/**
+ * Scroller is a virtual rendering plug-in for DataTables which allows large
+ * datasets to be drawn on screen every quickly. What the virtual rendering means
+ * is that only the visible portion of the table (and a bit to either side to make
+ * the scrolling smooth) is drawn, while the scrolling container gives the
+ * visual impression that the whole table is visible. This is done by making use
+ * of the pagination abilities of DataTables and moving the table around in the
+ * scrolling container DataTables adds to the page. The scrolling container is
+ * forced to the height it would be for the full table display using an extra
+ * element.
+ *
+ * Note that rows in the table MUST all be the same height. Information in a cell
+ * which expands on to multiple lines will cause some odd behaviour in the scrolling.
+ *
+ * Scroller is initialised by simply including the letter 'S' in the sDom for the
+ * table you want to have this feature enabled on. Note that the 'S' must come
+ * AFTER the 't' parameter in `dom`.
+ *
+ * Key features include:
+ *   <ul class="limit_length">
+ *     <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li>
+ *     <li>Full compatibility with deferred rendering in DataTables for maximum speed</li>
+ *     <li>Display millions of rows</li>
+ *     <li>Integration with state saving in DataTables (scrolling position is saved)</li>
+ *     <li>Easy to use</li>
+ *   </ul>
+ *
+ *  @class
+ *  @constructor
+ *  @global
+ *  @param {object} dt DataTables settings object or API instance
+ *  @param {object} [opts={}] Configuration object for FixedColumns. Options 
+ *    are defined by {@link Scroller.defaults}
+ *
+ *  @requires jQuery 1.7+
+ *  @requires DataTables 1.10.0+
+ *
+ *  @example
+ *    $(document).ready(function() {
+ *        $('#example').DataTable( {
+ *            "scrollY": "200px",
+ *            "ajax": "media/dataset/large.txt",
+ *            "scroller": true,
+ *            "deferRender": true
+ *        } );
+ *    } );
+ */
+var Scroller = function ( dt, opts ) {
+	/* Sanity check - you just know it will happen */
+	if ( ! (this instanceof Scroller) ) {
+		alert( "Scroller warning: Scroller must be initialised with the 'new' keyword." );
+		return;
+	}
+
+	if ( opts === undefined ) {
+		opts = {};
+	}
+
+	var dtApi = $.fn.dataTable.Api( dt );
+
+	/**
+	 * Settings object which contains customisable information for the Scroller instance
+	 * @namespace
+	 * @private
+	 * @extends Scroller.defaults
+	 */
+	this.s = {
+		/**
+		 * DataTables settings object
+		 *  @type     object
+		 *  @default  Passed in as first parameter to constructor
+		 */
+		dt: dtApi.settings()[0],
+
+		/**
+		 * DataTables API instance
+		 *  @type     DataTable.Api
+		 */
+		dtApi: dtApi,
+
+		/**
+		 * Pixel location of the top of the drawn table in the viewport
+		 *  @type     int
+		 *  @default  0
+		 */
+		tableTop: 0,
+
+		/**
+		 * Pixel location of the bottom of the drawn table in the viewport
+		 *  @type     int
+		 *  @default  0
+		 */
+		tableBottom: 0,
+
+		/**
+		 * Pixel location of the boundary for when the next data set should be loaded and drawn
+		 * when scrolling up the way.
+		 *  @type     int
+		 *  @default  0
+		 *  @private
+		 */
+		redrawTop: 0,
+
+		/**
+		 * Pixel location of the boundary for when the next data set should be loaded and drawn
+		 * when scrolling down the way. Note that this is actually calculated as the offset from
+		 * the top.
+		 *  @type     int
+		 *  @default  0
+		 *  @private
+		 */
+		redrawBottom: 0,
+
+		/**
+		 * Auto row height or not indicator
+		 *  @type     bool
+		 *  @default  0
+		 */
+		autoHeight: true,
+
+		/**
+		 * Number of rows calculated as visible in the visible viewport
+		 *  @type     int
+		 *  @default  0
+		 */
+		viewportRows: 0,
+
+		/**
+		 * setTimeout reference for state saving, used when state saving is enabled in the DataTable
+		 * and when the user scrolls the viewport in order to stop the cookie set taking too much
+		 * CPU!
+		 *  @type     int
+		 *  @default  0
+		 */
+		stateTO: null,
+
+		/**
+		 * setTimeout reference for the redraw, used when server-side processing is enabled in the
+		 * DataTables in order to prevent DoSing the server
+		 *  @type     int
+		 *  @default  null
+		 */
+		drawTO: null,
+
+		heights: {
+			jump: null,
+			page: null,
+			virtual: null,
+			scroll: null,
+
+			/**
+			 * Height of rows in the table
+			 *  @type     int
+			 *  @default  0
+			 */
+			row: null,
+
+			/**
+			 * Pixel height of the viewport
+			 *  @type     int
+			 *  @default  0
+			 */
+			viewport: null,
+			labelFactor: 1
+		},
+
+		topRowFloat: 0,
+		scrollDrawDiff: null,
+		loaderVisible: false,
+		forceReposition: false,
+		baseRowTop: 0,
+		baseScrollTop: 0,
+		mousedown: false,
+		lastScrollTop: 0
+	};
+
+	// @todo The defaults should extend a `c` property and the internal settings
+	// only held in the `s` property. At the moment they are mixed
+	this.s = $.extend( this.s, Scroller.oDefaults, opts );
+
+	// Workaround for row height being read from height object (see above comment)
+	this.s.heights.row = this.s.rowHeight;
+
+	/**
+	 * DOM elements used by the class instance
+	 * @private
+	 * @namespace
+	 *
+	 */
+	this.dom = {
+		"force":    document.createElement('div'),
+		"label":    $('<div class="dts_label">0</div>'),
+		"scroller": null,
+		"table":    null,
+		"loader":   null
+	};
+
+	// Attach the instance to the DataTables instance so it can be accessed in
+	// future. Don't initialise Scroller twice on the same table
+	if ( this.s.dt.oScroller ) {
+		return;
+	}
+
+	this.s.dt.oScroller = this;
+
+	/* Let's do it */
+	this.construct();
+};
+
+
+
+$.extend( Scroller.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods - to be exposed via the DataTables API
+	 */
+
+	/**
+	 * Calculate and store information about how many rows are to be displayed
+	 * in the scrolling viewport, based on current dimensions in the browser's
+	 * rendering. This can be particularly useful if the table is initially
+	 * drawn in a hidden element - for example in a tab.
+	 *  @param {bool} [redraw=true] Redraw the table automatically after the recalculation, with
+	 *    the new dimensions forming the basis for the draw.
+	 *  @returns {void}
+	 */
+	measure: function ( redraw )
+	{
+		if ( this.s.autoHeight )
+		{
+			this._calcRowHeight();
+		}
+
+		var heights = this.s.heights;
+
+		if ( heights.row ) {
+			heights.viewport = $.contains(document, this.dom.scroller) ?
+				this.dom.scroller.clientHeight :
+				this._parseHeight($(this.dom.scroller).css('height'));
+
+			// If collapsed (no height) use the max-height parameter
+			if ( ! heights.viewport ) {
+				heights.viewport = this._parseHeight($(this.dom.scroller).css('max-height'));
+			}
+
+			this.s.viewportRows = parseInt( heights.viewport / heights.row, 10 )+1;
+			this.s.dt._iDisplayLength = this.s.viewportRows * this.s.displayBuffer;
+		}
+
+		var label = this.dom.label.outerHeight();
+		heights.labelFactor = (heights.viewport-label) / heights.scroll;
+
+		if ( redraw === undefined || redraw )
+		{
+			this.s.dt.oInstance.fnDraw( false );
+		}
+	},
+
+	/**
+	 * Get information about current displayed record range. This corresponds to
+	 * the information usually displayed in the "Info" block of the table.
+	 *
+	 * @returns {object} info as an object:
+	 *  {
+	 *      start: {int}, // the 0-indexed record at the top of the viewport
+	 *      end:   {int}, // the 0-indexed record at the bottom of the viewport
+	 *  }
+	*/
+	pageInfo: function()
+	{
+		var 
+			dt = this.s.dt,
+			iScrollTop = this.dom.scroller.scrollTop,
+			iTotal = dt.fnRecordsDisplay(),
+			iPossibleEnd = Math.ceil(this.pixelsToRow(iScrollTop + this.s.heights.viewport, false, this.s.ani));
+
+		return {
+			start: Math.floor(this.pixelsToRow(iScrollTop, false, this.s.ani)),
+			end: iTotal < iPossibleEnd ? iTotal-1 : iPossibleEnd-1
+		};
+	},
+
+	/**
+	 * Calculate the row number that will be found at the given pixel position
+	 * (y-scroll).
+	 *
+	 * Please note that when the height of the full table exceeds 1 million
+	 * pixels, Scroller switches into a non-linear mode for the scrollbar to fit
+	 * all of the records into a finite area, but this function returns a linear
+	 * value (relative to the last non-linear positioning).
+	 *  @param {int} pixels Offset from top to calculate the row number of
+	 *  @param {int} [intParse=true] If an integer value should be returned
+	 *  @param {int} [virtual=false] Perform the calculations in the virtual domain
+	 *  @returns {int} Row index
+	 */
+	pixelsToRow: function ( pixels, intParse, virtual )
+	{
+		var diff = pixels - this.s.baseScrollTop;
+		var row = virtual ?
+			(this._domain( 'physicalToVirtual', this.s.baseScrollTop ) + diff) / this.s.heights.row :
+			( diff / this.s.heights.row ) + this.s.baseRowTop;
+
+		return intParse || intParse === undefined ?
+			parseInt( row, 10 ) :
+			row;
+	},
+
+	/**
+	 * Calculate the pixel position from the top of the scrolling container for
+	 * a given row
+	 *  @param {int} iRow Row number to calculate the position of
+	 *  @returns {int} Pixels
+	 */
+	rowToPixels: function ( rowIdx, intParse, virtual )
+	{
+		var pixels;
+		var diff = rowIdx - this.s.baseRowTop;
+
+		if ( virtual ) {
+			pixels = this._domain( 'virtualToPhysical', this.s.baseScrollTop );
+			pixels += diff * this.s.heights.row;
+		}
+		else {
+			pixels = this.s.baseScrollTop;
+			pixels += diff * this.s.heights.row;
+		}
+
+		return intParse || intParse === undefined ?
+			parseInt( pixels, 10 ) :
+			pixels;
+	},
+
+
+	/**
+	 * Calculate the row number that will be found at the given pixel position (y-scroll)
+	 *  @param {int} row Row index to scroll to
+	 *  @param {bool} [animate=true] Animate the transition or not
+	 *  @returns {void}
+	 */
+	scrollToRow: function ( row, animate )
+	{
+		var that = this;
+		var ani = false;
+		var px = this.rowToPixels( row );
+
+		// We need to know if the table will redraw or not before doing the
+		// scroll. If it will not redraw, then we need to use the currently
+		// displayed table, and scroll with the physical pixels. Otherwise, we
+		// need to calculate the table's new position from the virtual
+		// transform.
+		var preRows = ((this.s.displayBuffer-1)/2) * this.s.viewportRows;
+		var drawRow = row - preRows;
+		if ( drawRow < 0 ) {
+			drawRow = 0;
+		}
+
+		if ( (px > this.s.redrawBottom || px < this.s.redrawTop) && this.s.dt._iDisplayStart !== drawRow ) {
+			ani = true;
+			px = this._domain( 'virtualToPhysical', row * this.s.heights.row );
+
+			// If we need records outside the current draw region, but the new
+			// scrolling position is inside that (due to the non-linear nature
+			// for larger numbers of records), we need to force position update.
+			if ( this.s.redrawTop < px && px < this.s.redrawBottom ) {
+				this.s.forceReposition = true;
+				animate = false;
+			}
+		}
+
+		if ( animate === undefined || animate )
+		{
+			this.s.ani = ani;
+			$(this.dom.scroller).animate( {
+				"scrollTop": px
+			}, function () {
+				// This needs to happen after the animation has completed and
+				// the final scroll event fired
+				setTimeout( function () {
+					that.s.ani = false;
+				}, 250 );
+			} );
+		}
+		else
+		{
+			$(this.dom.scroller).scrollTop( px );
+		}
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Initialisation for Scroller
+	 *  @returns {void}
+	 *  @private
+	 */
+	construct: function ()
+	{
+		var that = this;
+		var dt = this.s.dtApi;
+
+		/* Sanity check */
+		if ( !this.s.dt.oFeatures.bPaginate ) {
+			this.s.dt.oApi._fnLog( this.s.dt, 0, 'Pagination must be enabled for Scroller' );
+			return;
+		}
+
+		/* Insert a div element that we can use to force the DT scrolling container to
+		 * the height that would be required if the whole table was being displayed
+		 */
+		this.dom.force.style.position = "relative";
+		this.dom.force.style.top = "0px";
+		this.dom.force.style.left = "0px";
+		this.dom.force.style.width = "1px";
+
+		this.dom.scroller = $('div.'+this.s.dt.oClasses.sScrollBody, this.s.dt.nTableWrapper)[0];
+		this.dom.scroller.appendChild( this.dom.force );
+		this.dom.scroller.style.position = "relative";
+
+		this.dom.table = $('>table', this.dom.scroller)[0];
+		this.dom.table.style.position = "absolute";
+		this.dom.table.style.top = "0px";
+		this.dom.table.style.left = "0px";
+
+		// Add class to 'announce' that we are a Scroller table
+		$(dt.table().container()).addClass('dts DTS');
+
+		// Add a 'loading' indicator
+		if ( this.s.loadingIndicator )
+		{
+			this.dom.loader = $('<div class="dataTables_processing dts_loading">'+this.s.dt.oLanguage.sLoadingRecords+'</div>')
+				.css('display', 'none');
+
+			$(this.dom.scroller.parentNode)
+				.css('position', 'relative')
+				.append( this.dom.loader );
+		}
+
+		this.dom.label.appendTo(this.dom.scroller);
+
+		/* Initial size calculations */
+		if ( this.s.heights.row && this.s.heights.row != 'auto' )
+		{
+			this.s.autoHeight = false;
+		}
+		this.measure( false );
+
+		// Scrolling callback to see if a page change is needed - use a throttled
+		// function for the save save callback so we aren't hitting it on every
+		// scroll
+		this.s.ingnoreScroll = true;
+		this.s.stateSaveThrottle = this.s.dt.oApi._fnThrottle( function () {
+			that.s.dtApi.state.save();
+		}, 500 );
+		$(this.dom.scroller).on( 'scroll.dt-scroller', function (e) {
+			that._scroll.call( that );
+		} );
+
+		// In iOS we catch the touchstart event in case the user tries to scroll
+		// while the display is already scrolling
+		$(this.dom.scroller).on('touchstart.dt-scroller', function () {
+			that._scroll.call( that );
+		} );
+
+		$(this.dom.scroller)
+			.on('mousedown.dt-scroller', function () {
+				that.s.mousedown = true;
+			})
+			.on('mouseup.dt-scroller', function () {
+				that.s.mouseup = false;
+				that.dom.label.css('display', 'none');
+			});
+
+		// On resize, update the information element, since the number of rows shown might change
+		$(window).on( 'resize.dt-scroller', function () {
+			that.measure( false );
+			that._info();
+		} );
+
+		// Add a state saving parameter to the DT state saving so we can restore the exact
+		// position of the scrolling. Slightly surprisingly the scroll position isn't actually
+		// stored, but rather tha base units which are needed to calculate it. This allows for
+		// virtual scrolling as well.
+		var initialStateSave = true;
+		var loadedState = dt.state.loaded();
+
+		dt.on( 'stateSaveParams.scroller', function ( e, settings, data ) {
+			// Need to used the saved position on init
+			data.scroller = {
+				topRow: initialStateSave && loadedState && loadedState.scroller ?
+					loadedState.scroller.topRow :
+					that.s.topRowFloat,
+				baseScrollTop: that.s.baseScrollTop,
+				baseRowTop: that.s.baseRowTop
+			};
+
+			initialStateSave = false;
+		} );
+
+		if ( loadedState && loadedState.scroller ) {
+			this.s.topRowFloat = loadedState.scroller.topRow;
+			this.s.baseScrollTop = loadedState.scroller.baseScrollTop;
+			this.s.baseRowTop = loadedState.scroller.baseRowTop;
+		}
+
+		dt.on( 'init.scroller', function () {
+			that.measure( false );
+
+			// Setting to `jump` will instruct _draw to calculate the scroll top
+			// position
+			that.s.scrollType = 'jump';
+			that._draw();
+
+			// Update the scroller when the DataTable is redrawn
+			dt.on( 'draw.scroller', function () {
+				that._draw();
+			});
+		} );
+
+		// Set height before the draw happens, allowing everything else to update
+		// on draw complete without worry for roder.
+		dt.on( 'preDraw.dt.scroller', function () {
+			that._scrollForce();
+		} );
+
+		// Destructor
+		dt.on( 'destroy.scroller', function () {
+			$(window).off( 'resize.dt-scroller' );
+			$(that.dom.scroller).off('.dt-scroller');
+			$(that.s.dt.nTable).off( '.scroller' );
+
+			$(that.s.dt.nTableWrapper).removeClass('DTS');
+			$('div.DTS_Loading', that.dom.scroller.parentNode).remove();
+
+			that.dom.table.style.position = "";
+			that.dom.table.style.top = "";
+			that.dom.table.style.left = "";
+		} );
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Automatic calculation of table row height. This is just a little tricky here as using
+	 * initialisation DataTables has tale the table out of the document, so we need to create
+	 * a new table and insert it into the document, calculate the row height and then whip the
+	 * table out.
+	 *  @returns {void}
+	 *  @private
+	 */
+	_calcRowHeight: function ()
+	{
+		var dt = this.s.dt;
+		var origTable = dt.nTable;
+		var nTable = origTable.cloneNode( false );
+		var tbody = $('<tbody/>').appendTo( nTable );
+		var container = $(
+			'<div class="'+dt.oClasses.sWrapper+' DTS">'+
+				'<div class="'+dt.oClasses.sScrollWrapper+'">'+
+					'<div class="'+dt.oClasses.sScrollBody+'"></div>'+
+				'</div>'+
+			'</div>'
+		);
+
+		// Want 3 rows in the sizing table so :first-child and :last-child
+		// CSS styles don't come into play - take the size of the middle row
+		$('tbody tr:lt(4)', origTable).clone().appendTo( tbody );
+        var rowsCount = $('tr', tbody).length;
+
+        if ( rowsCount === 1 ) {
+            tbody.prepend('<tr><td>&#160;</td></tr>');
+            tbody.append('<tr><td>&#160;</td></tr>');
+		}
+		else {
+            for (; rowsCount < 3; rowsCount++) {
+                tbody.append('<tr><td>&#160;</td></tr>');
+            }
+		}
+	
+		$('div.'+dt.oClasses.sScrollBody, container).append( nTable );
+
+		// If initialised using `dom`, use the holding element as the insert point
+		var insertEl = this.s.dt.nHolding || origTable.parentNode;
+
+		if ( ! $(insertEl).is(':visible') ) {
+			insertEl = 'body';
+		}
+
+		container.appendTo( insertEl );
+		this.s.heights.row = $('tr', tbody).eq(1).outerHeight();
+
+		container.remove();
+	},
+
+	/**
+	 * Draw callback function which is fired when the DataTable is redrawn. The main function of
+	 * this method is to position the drawn table correctly the scrolling container for the rows
+	 * that is displays as a result of the scrolling position.
+	 *  @returns {void}
+	 *  @private
+	 */
+	_draw: function ()
+	{
+		var
+			that = this,
+			heights = this.s.heights,
+			iScrollTop = this.dom.scroller.scrollTop,
+			iTableHeight = $(this.s.dt.nTable).height(),
+			displayStart = this.s.dt._iDisplayStart,
+			displayLen = this.s.dt._iDisplayLength,
+			displayEnd = this.s.dt.fnRecordsDisplay();
+
+		// Disable the scroll event listener while we are updating the DOM
+		this.s.skip = true;
+
+		// If paging is reset
+		if ( (this.s.dt.bSorted || this.s.dt.bFiltered) && displayStart === 0 && !this.s.dt._drawHold ) {
+			this.s.topRowFloat = 0;
+		}
+
+		iScrollTop = this.s.scrollType === 'jump' ?
+			this._domain( 'virtualToPhysical', this.s.topRowFloat * heights.row ) :
+			iScrollTop;
+
+		// Store positional information so positional calculations can be based
+		// upon the current table draw position
+		this.s.baseScrollTop = iScrollTop;
+		this.s.baseRowTop = this.s.topRowFloat;
+
+		// Position the table in the virtual scroller
+		var tableTop = iScrollTop - ((this.s.topRowFloat - displayStart) * heights.row);
+		if ( displayStart === 0 ) {
+			tableTop = 0;
+		}
+		else if ( displayStart + displayLen >= displayEnd ) {
+			tableTop = heights.scroll - iTableHeight;
+		}
+
+		this.dom.table.style.top = tableTop+'px';
+
+		/* Cache some information for the scroller */
+		this.s.tableTop = tableTop;
+		this.s.tableBottom = iTableHeight + this.s.tableTop;
+
+		// Calculate the boundaries for where a redraw will be triggered by the
+		// scroll event listener
+		var boundaryPx = (iScrollTop - this.s.tableTop) * this.s.boundaryScale;
+		this.s.redrawTop = iScrollTop - boundaryPx;
+		this.s.redrawBottom = iScrollTop + boundaryPx > heights.scroll - heights.viewport - heights.row ?
+			heights.scroll - heights.viewport - heights.row :
+			iScrollTop + boundaryPx;
+
+		this.s.skip = false;
+
+		// Restore the scrolling position that was saved by DataTable's state
+		// saving Note that this is done on the second draw when data is Ajax
+		// sourced, and the first draw when DOM soured
+		if ( this.s.dt.oFeatures.bStateSave && this.s.dt.oLoadedState !== null &&
+			 typeof this.s.dt.oLoadedState.iScroller != 'undefined' )
+		{
+			// A quirk of DataTables is that the draw callback will occur on an
+			// empty set if Ajax sourced, but not if server-side processing.
+			var ajaxSourced = (this.s.dt.sAjaxSource || that.s.dt.ajax) && ! this.s.dt.oFeatures.bServerSide ?
+				true :
+				false;
+
+			if ( ( ajaxSourced && this.s.dt.iDraw == 2) ||
+			     (!ajaxSourced && this.s.dt.iDraw == 1) )
+			{
+				setTimeout( function () {
+					$(that.dom.scroller).scrollTop( that.s.dt.oLoadedState.iScroller );
+					that.s.redrawTop = that.s.dt.oLoadedState.iScroller - (heights.viewport/2);
+
+					// In order to prevent layout thrashing we need another
+					// small delay
+					setTimeout( function () {
+						that.s.ingnoreScroll = false;
+					}, 0 );
+				}, 0 );
+			}
+		}
+		else {
+			that.s.ingnoreScroll = false;
+		}
+
+		// Because of the order of the DT callbacks, the info update will
+		// take precedence over the one we want here. So a 'thread' break is
+		// needed.  Only add the thread break if bInfo is set
+		if ( this.s.dt.oFeatures.bInfo ) {
+			setTimeout( function () {
+				that._info.call( that );
+			}, 0 );
+		}
+
+		// Hide the loading indicator
+		if ( this.dom.loader && this.s.loaderVisible ) {
+			this.dom.loader.css( 'display', 'none' );
+			this.s.loaderVisible = false;
+		}
+	},
+
+	/**
+	 * Convert from one domain to another. The physical domain is the actual
+	 * pixel count on the screen, while the virtual is if we had browsers which
+	 * had scrolling containers of infinite height (i.e. the absolute value)
+	 *
+	 *  @param {string} dir Domain transform direction, `virtualToPhysical` or
+	 *    `physicalToVirtual` 
+	 *  @returns {number} Calculated transform
+	 *  @private
+	 */
+	_domain: function ( dir, val )
+	{
+		var heights = this.s.heights;
+		var diff;
+		var magic = 10000; // the point at which the non-linear calculations start to happen
+
+		// If the virtual and physical height match, then we use a linear
+		// transform between the two, allowing the scrollbar to be linear
+		if ( heights.virtual === heights.scroll ) {
+			return val;
+		}
+
+		// In the first 10k pixels and the last 10k pixels, we want the scrolling
+		// to be linear. After that it can be non-linear. It would be unusual for
+		// anyone to mouse wheel through that much.
+		if ( val < magic ) {
+			return val;
+		}
+		else if ( dir === 'virtualToPhysical' && val >= heights.virtual - magic ) {
+			diff = heights.virtual - val;
+			return heights.scroll - diff;
+		}
+		else if ( dir === 'physicalToVirtual' && val >= heights.scroll - magic ) {
+			diff = heights.scroll - val;
+			return heights.virtual - diff;
+		}
+
+		// Otherwise, we want a non-linear scrollbar to take account of the
+		// redrawing regions at the start and end of the table, otherwise these
+		// can stutter badly - on large tables 30px (for example) scroll might
+		// be hundreds of rows, so the table would be redrawing every few px at
+		// the start and end. Use a simple linear eq. to stop this, effectively
+		// causing a kink in the scrolling ratio. It does mean the scrollbar is
+		// non-linear, but with such massive data sets, the scrollbar is going
+		// to be a best guess anyway
+		var m = (heights.virtual - magic - magic) / (heights.scroll - magic - magic);
+		var c = magic - (m*magic);
+
+		return dir === 'virtualToPhysical' ?
+			(val-c) / m :
+			(m*val) + c;
+	},
+
+	/**
+	 * Update any information elements that are controlled by the DataTable based on the scrolling
+	 * viewport and what rows are visible in it. This function basically acts in the same way as
+	 * _fnUpdateInfo in DataTables, and effectively replaces that function.
+	 *  @returns {void}
+	 *  @private
+	 */
+	_info: function ()
+	{
+		if ( !this.s.dt.oFeatures.bInfo )
+		{
+			return;
+		}
+
+		var
+			dt = this.s.dt,
+			language = dt.oLanguage,
+			iScrollTop = this.dom.scroller.scrollTop,
+			iStart = Math.floor( this.pixelsToRow(iScrollTop, false, this.s.ani)+1 ),
+			iMax = dt.fnRecordsTotal(),
+			iTotal = dt.fnRecordsDisplay(),
+			iPossibleEnd = Math.ceil( this.pixelsToRow(iScrollTop+this.s.heights.viewport, false, this.s.ani) ),
+			iEnd = iTotal < iPossibleEnd ? iTotal : iPossibleEnd,
+			sStart = dt.fnFormatNumber( iStart ),
+			sEnd = dt.fnFormatNumber( iEnd ),
+			sMax = dt.fnFormatNumber( iMax ),
+			sTotal = dt.fnFormatNumber( iTotal ),
+			sOut;
+
+		if ( dt.fnRecordsDisplay() === 0 &&
+			   dt.fnRecordsDisplay() == dt.fnRecordsTotal() )
+		{
+			/* Empty record set */
+			sOut = language.sInfoEmpty+ language.sInfoPostFix;
+		}
+		else if ( dt.fnRecordsDisplay() === 0 )
+		{
+			/* Empty record set after filtering */
+			sOut = language.sInfoEmpty +' '+
+				language.sInfoFiltered.replace('_MAX_', sMax)+
+					language.sInfoPostFix;
+		}
+		else if ( dt.fnRecordsDisplay() == dt.fnRecordsTotal() )
+		{
+			/* Normal record set */
+			sOut = language.sInfo.
+					replace('_START_', sStart).
+					replace('_END_',   sEnd).
+					replace('_MAX_',   sMax).
+					replace('_TOTAL_', sTotal)+
+				language.sInfoPostFix;
+		}
+		else
+		{
+			/* Record set after filtering */
+			sOut = language.sInfo.
+					replace('_START_', sStart).
+					replace('_END_',   sEnd).
+					replace('_MAX_',   sMax).
+					replace('_TOTAL_', sTotal) +' '+
+				language.sInfoFiltered.replace(
+					'_MAX_',
+					dt.fnFormatNumber(dt.fnRecordsTotal())
+				)+
+				language.sInfoPostFix;
+		}
+
+		var callback = language.fnInfoCallback;
+		if ( callback ) {
+			sOut = callback.call( dt.oInstance,
+				dt, iStart, iEnd, iMax, iTotal, sOut
+			);
+		}
+
+		var n = dt.aanFeatures.i;
+		if ( typeof n != 'undefined' )
+		{
+			for ( var i=0, iLen=n.length ; i<iLen ; i++ )
+			{
+				$(n[i]).html( sOut );
+			}
+		}
+
+		// DT doesn't actually (yet) trigger this event, but it will in future
+		$(dt.nTable).triggerHandler( 'info.dt' );
+	},
+
+	/**
+	 * Parse CSS height property string as number
+	 *
+	 * An attempt is made to parse the string as a number. Currently supported units are 'px',
+	 * 'vh', and 'rem'. 'em' is partially supported; it works as long as the parent element's
+	 * font size matches the body element. Zero is returned for unrecognized strings.
+	 *  @param {string} cssHeight CSS height property string
+	 *  @returns {number} height
+	 *  @private
+	 */
+	_parseHeight: function(cssHeight) {
+		var height;
+		var matches = /^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(px|em|rem|vh)$/.exec(cssHeight);
+
+		if (matches === null) {
+			return 0;
+		}
+
+		var value = parseFloat(matches[1]);
+		var unit = matches[2];
+
+		if ( unit === 'px' ) {
+			height = value;
+		}
+		else if ( unit === 'vh' ) {
+			height = ( value / 100 ) * $(window).height();
+		}
+		else if ( unit === 'rem' ) {
+			height = value * parseFloat($(':root').css('font-size'));
+		}
+		else if ( unit === 'em' ) {
+			height = value * parseFloat($('body').css('font-size'));
+		}
+
+		return height ?
+			height :
+			0;
+	},
+
+	/**
+	 * Scrolling function - fired whenever the scrolling position is changed.
+	 * This method needs to use the stored values to see if the table should be
+	 * redrawn as we are moving towards the end of the information that is
+	 * currently drawn or not. If needed, then it will redraw the table based on
+	 * the new position.
+	 *  @returns {void}
+	 *  @private
+	 */
+	_scroll: function ()
+	{
+		var
+			that = this,
+			heights = this.s.heights,
+			iScrollTop = this.dom.scroller.scrollTop,
+			iTopRow;
+
+		if ( this.s.skip ) {
+			return;
+		}
+
+		if ( this.s.ingnoreScroll ) {
+			return;
+		}
+
+		if ( iScrollTop === this.s.lastScrollTop ) {
+			return;
+		}
+
+		/* If the table has been sorted or filtered, then we use the redraw that
+		 * DataTables as done, rather than performing our own
+		 */
+		if ( this.s.dt.bFiltered || this.s.dt.bSorted ) {
+			this.s.lastScrollTop = 0;
+			return;
+		}
+
+		/* Update the table's information display for what is now in the viewport */
+		this._info();
+
+		/* We don't want to state save on every scroll event - that's heavy
+		 * handed, so use a timeout to update the state saving only when the
+		 * scrolling has finished
+		 */
+		clearTimeout( this.s.stateTO );
+		this.s.stateTO = setTimeout( function () {
+			that.s.dtApi.state.save();
+		}, 250 );
+
+		this.s.scrollType = Math.abs(iScrollTop - this.s.lastScrollTop) > heights.viewport ?
+			'jump' :
+			'cont';
+
+		this.s.topRowFloat = this.s.scrollType === 'cont' ?
+			this.pixelsToRow( iScrollTop, false, false ) :
+			this._domain( 'physicalToVirtual', iScrollTop ) / heights.row;
+
+		if ( this.s.topRowFloat < 0 ) {
+			this.s.topRowFloat = 0;
+		}
+
+		/* Check if the scroll point is outside the trigger boundary which would required
+		 * a DataTables redraw
+		 */
+		if ( this.s.forceReposition || iScrollTop < this.s.redrawTop || iScrollTop > this.s.redrawBottom ) {
+			var preRows = Math.ceil( ((this.s.displayBuffer-1)/2) * this.s.viewportRows );
+
+			iTopRow = parseInt(this.s.topRowFloat, 10) - preRows;
+			this.s.forceReposition = false;
+
+			if ( iTopRow <= 0 ) {
+				/* At the start of the table */
+				iTopRow = 0;
+			}
+			else if ( iTopRow + this.s.dt._iDisplayLength > this.s.dt.fnRecordsDisplay() ) {
+				/* At the end of the table */
+				iTopRow = this.s.dt.fnRecordsDisplay() - this.s.dt._iDisplayLength;
+				if ( iTopRow < 0 ) {
+					iTopRow = 0;
+				}
+			}
+			else if ( iTopRow % 2 !== 0 ) {
+				// For the row-striping classes (odd/even) we want only to start
+				// on evens otherwise the stripes will change between draws and
+				// look rubbish
+				iTopRow++;
+			}
+
+
+			if ( iTopRow != this.s.dt._iDisplayStart ) {
+				/* Cache the new table position for quick lookups */
+				this.s.tableTop = $(this.s.dt.nTable).offset().top;
+				this.s.tableBottom = $(this.s.dt.nTable).height() + this.s.tableTop;
+
+				var draw =  function () {
+					if ( that.s.scrollDrawReq === null ) {
+						that.s.scrollDrawReq = iScrollTop;
+					}
+
+					that.s.dt._iDisplayStart = iTopRow;
+					that.s.dt.oApi._fnDraw( that.s.dt );
+				};
+
+				/* Do the DataTables redraw based on the calculated start point - note that when
+				 * using server-side processing we introduce a small delay to not DoS the server...
+				 */
+				if ( this.s.dt.oFeatures.bServerSide ) {
+					clearTimeout( this.s.drawTO );
+					this.s.drawTO = setTimeout( draw, this.s.serverWait );
+				}
+				else {
+					draw();
+				}
+
+				if ( this.dom.loader && ! this.s.loaderVisible ) {
+					this.dom.loader.css( 'display', 'block' );
+					this.s.loaderVisible = true;
+				}
+			}
+		}
+		else {
+			this.s.topRowFloat = this.pixelsToRow( iScrollTop, false, true );
+		}
+
+		this.s.lastScrollTop = iScrollTop;
+		this.s.stateSaveThrottle();
+
+		if ( this.s.scrollType === 'jump' && this.s.mousedown ) {
+			this.dom.label
+				.html( this.s.dt.fnFormatNumber( parseInt( this.s.topRowFloat, 10 )+1 ) )
+				.css( 'top', iScrollTop + (iScrollTop * heights.labelFactor ) )
+				.css( 'display', 'block' );
+		}
+	},
+
+	/**
+	 * Force the scrolling container to have height beyond that of just the
+	 * table that has been drawn so the user can scroll the whole data set.
+	 *
+	 * Note that if the calculated required scrolling height exceeds a maximum
+	 * value (1 million pixels - hard-coded) the forcing element will be set
+	 * only to that maximum value and virtual / physical domain transforms will
+	 * be used to allow Scroller to display tables of any number of records.
+	 *  @returns {void}
+	 *  @private
+	 */
+	_scrollForce: function ()
+	{
+		var heights = this.s.heights;
+		var max = 1000000;
+
+		heights.virtual = heights.row * this.s.dt.fnRecordsDisplay();
+		heights.scroll = heights.virtual;
+
+		if ( heights.scroll > max ) {
+			heights.scroll = max;
+		}
+
+		// Minimum height so there is always a row visible (the 'no rows found'
+		// if reduced to zero filtering)
+		this.dom.force.style.height = heights.scroll > this.s.heights.row ?
+			heights.scroll+'px' :
+			this.s.heights.row+'px';
+	}
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Statics
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * Scroller default settings for initialisation
+ *  @namespace
+ *  @name Scroller.defaults
+ *  @static
+ */
+Scroller.defaults = {
+	/**
+	 * Scroller uses the boundary scaling factor to decide when to redraw the table - which it
+	 * typically does before you reach the end of the currently loaded data set (in order to
+	 * allow the data to look continuous to a user scrolling through the data). If given as 0
+	 * then the table will be redrawn whenever the viewport is scrolled, while 1 would not
+	 * redraw the table until the currently loaded data has all been shown. You will want
+	 * something in the middle - the default factor of 0.5 is usually suitable.
+	 *  @type     float
+	 *  @default  0.5
+	 *  @static
+	 */
+	boundaryScale: 0.5,
+
+	/**
+	 * The display buffer is what Scroller uses to calculate how many rows it should pre-fetch
+	 * for scrolling. Scroller automatically adjusts DataTables' display length to pre-fetch
+	 * rows that will be shown in "near scrolling" (i.e. just beyond the current display area).
+	 * The value is based upon the number of rows that can be displayed in the viewport (i.e.
+	 * a value of 1), and will apply the display range to records before before and after the
+	 * current viewport - i.e. a factor of 3 will allow Scroller to pre-fetch 1 viewport's worth
+	 * of rows before the current viewport, the current viewport's rows and 1 viewport's worth
+	 * of rows after the current viewport. Adjusting this value can be useful for ensuring
+	 * smooth scrolling based on your data set.
+	 *  @type     int
+	 *  @default  7
+	 *  @static
+	 */
+	displayBuffer: 9,
+
+	/**
+	 * Show (or not) the loading element in the background of the table. Note that you should
+	 * include the dataTables.scroller.css file for this to be displayed correctly.
+	 *  @type     boolean
+	 *  @default  false
+	 *  @static
+	 */
+	loadingIndicator: false,
+
+	/**
+	 * Scroller will attempt to automatically calculate the height of rows for it's internal
+	 * calculations. However the height that is used can be overridden using this parameter.
+	 *  @type     int|string
+	 *  @default  auto
+	 *  @static
+	 */
+	rowHeight: "auto",
+
+	/**
+	 * When using server-side processing, Scroller will wait a small amount of time to allow
+	 * the scrolling to finish before requesting more data from the server. This prevents
+	 * you from DoSing your own server! The wait time can be configured by this parameter.
+	 *  @type     int
+	 *  @default  200
+	 *  @static
+	 */
+	serverWait: 200
+};
+
+Scroller.oDefaults = Scroller.defaults;
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * Scroller version
+ *  @type      String
+ *  @default   See code
+ *  @name      Scroller.version
+ *  @static
+ */
+Scroller.version = "2.0.1";
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Initialisation
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.dtscroller', function (e, settings) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.scroller;
+	var defaults = DataTable.defaults.scroller;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, init, defaults );
+
+		if ( init !== false ) {
+			new Scroller( settings, opts  );
+		}
+	}
+} );
+
+
+// Attach Scroller to DataTables so it can be accessed as an 'extra'
+$.fn.dataTable.Scroller = Scroller;
+$.fn.DataTable.Scroller = Scroller;
+
+
+// DataTables 1.10 API method aliases
+var Api = $.fn.dataTable.Api;
+
+Api.register( 'scroller()', function () {
+	return this;
+} );
+
+// Undocumented and deprecated - is it actually useful at all?
+Api.register( 'scroller().rowToPixels()', function ( rowIdx, intParse, virtual ) {
+	var ctx = this.context;
+
+	if ( ctx.length && ctx[0].oScroller ) {
+		return ctx[0].oScroller.rowToPixels( rowIdx, intParse, virtual );
+	}
+	// undefined
+} );
+
+// Undocumented and deprecated - is it actually useful at all?
+Api.register( 'scroller().pixelsToRow()', function ( pixels, intParse, virtual ) {
+	var ctx = this.context;
+
+	if ( ctx.length && ctx[0].oScroller ) {
+		return ctx[0].oScroller.pixelsToRow( pixels, intParse, virtual );
+	}
+	// undefined
+} );
+
+// `scroller().scrollToRow()` is undocumented and deprecated. Use `scroller.toPosition()
+Api.register( ['scroller().scrollToRow()', 'scroller.toPosition()'], function ( idx, ani ) {
+	this.iterator( 'table', function ( ctx ) {
+		if ( ctx.oScroller ) {
+			ctx.oScroller.scrollToRow( idx, ani );
+		}
+	} );
+
+	return this;
+} );
+
+Api.register( 'row().scrollTo()', function ( ani ) {
+	var that = this;
+
+	this.iterator( 'row', function ( ctx, rowIdx ) {
+		if ( ctx.oScroller ) {
+			var displayIdx = that
+				.rows( { order: 'applied', search: 'applied' } )
+				.indexes()
+				.indexOf( rowIdx );
+
+			ctx.oScroller.scrollToRow( displayIdx, ani );
+		}
+	} );
+
+	return this;
+} );
+
+Api.register( 'scroller.measure()', function ( redraw ) {
+	this.iterator( 'table', function ( ctx ) {
+		if ( ctx.oScroller ) {
+			ctx.oScroller.measure( redraw );
+		}
+	} );
+
+	return this;
+} );
+
+Api.register( 'scroller.page()', function() {
+	var ctx = this.context;
+
+	if ( ctx.length && ctx[0].oScroller ) {
+		return ctx[0].oScroller.pageInfo();
+	}
+	// undefined
+} );
+
+return Scroller;
+}));
Index: public/vendors/dataTable/Scroller-2.0.1/js/dataTables.scroller.min.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/dataTables.scroller.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/dataTables.scroller.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*!
+   Copyright 2011-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ Scroller 2.0.1
+ ©2011-2019 SpryMedia Ltd - datatables.net/license
+*/
+(function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(h){return e(h,window,document)}):"object"===typeof exports?module.exports=function(h,k){h||(h=window);k&&k.fn.dataTable||(k=require("datatables.net")(h,k).$);return e(k,h,h.document)}:e(jQuery,window,document)})(function(e,h,k,n){var p=e.fn.dataTable,g=function(a,b){this instanceof g?(b===n&&(b={}),a=e.fn.dataTable.Api(a),this.s={dt:a.settings()[0],dtApi:a,tableTop:0,tableBottom:0,redrawTop:0,redrawBottom:0,
+autoHeight:!0,viewportRows:0,stateTO:null,drawTO:null,heights:{jump:null,page:null,virtual:null,scroll:null,row:null,viewport:null,labelFactor:1},topRowFloat:0,scrollDrawDiff:null,loaderVisible:!1,forceReposition:!1,baseRowTop:0,baseScrollTop:0,mousedown:!1,lastScrollTop:0},this.s=e.extend(this.s,g.oDefaults,b),this.s.heights.row=this.s.rowHeight,this.dom={force:k.createElement("div"),label:e('<div class="dts_label">0</div>'),scroller:null,table:null,loader:null},this.s.dt.oScroller||(this.s.dt.oScroller=
+this,this.construct())):alert("Scroller warning: Scroller must be initialised with the 'new' keyword.")};e.extend(g.prototype,{measure:function(a){this.s.autoHeight&&this._calcRowHeight();var b=this.s.heights;b.row&&(b.viewport=e.contains(k,this.dom.scroller)?this.dom.scroller.clientHeight:this._parseHeight(e(this.dom.scroller).css("height")),b.viewport||(b.viewport=this._parseHeight(e(this.dom.scroller).css("max-height"))),this.s.viewportRows=parseInt(b.viewport/b.row,10)+1,this.s.dt._iDisplayLength=
+this.s.viewportRows*this.s.displayBuffer);var c=this.dom.label.outerHeight();b.labelFactor=(b.viewport-c)/b.scroll;(a===n||a)&&this.s.dt.oInstance.fnDraw(!1)},pageInfo:function(){var a=this.dom.scroller.scrollTop,b=this.s.dt.fnRecordsDisplay(),c=Math.ceil(this.pixelsToRow(a+this.s.heights.viewport,!1,this.s.ani));return{start:Math.floor(this.pixelsToRow(a,!1,this.s.ani)),end:b<c?b-1:c-1}},pixelsToRow:function(a,b,c){a-=this.s.baseScrollTop;c=c?(this._domain("physicalToVirtual",this.s.baseScrollTop)+
+a)/this.s.heights.row:a/this.s.heights.row+this.s.baseRowTop;return b||b===n?parseInt(c,10):c},rowToPixels:function(a,b,c){a-=this.s.baseRowTop;c=c?this._domain("virtualToPhysical",this.s.baseScrollTop):this.s.baseScrollTop;c+=a*this.s.heights.row;return b||b===n?parseInt(c,10):c},scrollToRow:function(a,b){var c=this,d=!1,f=this.rowToPixels(a),m=a-(this.s.displayBuffer-1)/2*this.s.viewportRows;0>m&&(m=0);(f>this.s.redrawBottom||f<this.s.redrawTop)&&this.s.dt._iDisplayStart!==m&&(d=!0,f=this._domain("virtualToPhysical",
+a*this.s.heights.row),this.s.redrawTop<f&&f<this.s.redrawBottom&&(this.s.forceReposition=!0,b=!1));b===n||b?(this.s.ani=d,e(this.dom.scroller).animate({scrollTop:f},function(){setTimeout(function(){c.s.ani=!1},250)})):e(this.dom.scroller).scrollTop(f)},construct:function(){var a=this,b=this.s.dtApi;if(this.s.dt.oFeatures.bPaginate){this.dom.force.style.position="relative";this.dom.force.style.top="0px";this.dom.force.style.left="0px";this.dom.force.style.width="1px";this.dom.scroller=e("div."+this.s.dt.oClasses.sScrollBody,
+this.s.dt.nTableWrapper)[0];this.dom.scroller.appendChild(this.dom.force);this.dom.scroller.style.position="relative";this.dom.table=e(">table",this.dom.scroller)[0];this.dom.table.style.position="absolute";this.dom.table.style.top="0px";this.dom.table.style.left="0px";e(b.table().container()).addClass("dts DTS");this.s.loadingIndicator&&(this.dom.loader=e('<div class="dataTables_processing dts_loading">'+this.s.dt.oLanguage.sLoadingRecords+"</div>").css("display","none"),e(this.dom.scroller.parentNode).css("position",
+"relative").append(this.dom.loader));this.dom.label.appendTo(this.dom.scroller);this.s.heights.row&&"auto"!=this.s.heights.row&&(this.s.autoHeight=!1);this.measure(!1);this.s.ingnoreScroll=!0;this.s.stateSaveThrottle=this.s.dt.oApi._fnThrottle(function(){a.s.dtApi.state.save()},500);e(this.dom.scroller).on("scroll.dt-scroller",function(b){a._scroll.call(a)});e(this.dom.scroller).on("touchstart.dt-scroller",function(){a._scroll.call(a)});e(this.dom.scroller).on("mousedown.dt-scroller",function(){a.s.mousedown=
+!0}).on("mouseup.dt-scroller",function(){a.s.mouseup=!1;a.dom.label.css("display","none")});e(h).on("resize.dt-scroller",function(){a.measure(!1);a._info()});var c=!0,d=b.state.loaded();b.on("stateSaveParams.scroller",function(b,e,h){h.scroller={topRow:c&&d&&d.scroller?d.scroller.topRow:a.s.topRowFloat,baseScrollTop:a.s.baseScrollTop,baseRowTop:a.s.baseRowTop};c=!1});d&&d.scroller&&(this.s.topRowFloat=d.scroller.topRow,this.s.baseScrollTop=d.scroller.baseScrollTop,this.s.baseRowTop=d.scroller.baseRowTop);
+b.on("init.scroller",function(){a.measure(!1);a.s.scrollType="jump";a._draw();b.on("draw.scroller",function(){a._draw()})});b.on("preDraw.dt.scroller",function(){a._scrollForce()});b.on("destroy.scroller",function(){e(h).off("resize.dt-scroller");e(a.dom.scroller).off(".dt-scroller");e(a.s.dt.nTable).off(".scroller");e(a.s.dt.nTableWrapper).removeClass("DTS");e("div.DTS_Loading",a.dom.scroller.parentNode).remove();a.dom.table.style.position="";a.dom.table.style.top="";a.dom.table.style.left=""})}else this.s.dt.oApi._fnLog(this.s.dt,
+0,"Pagination must be enabled for Scroller")},_calcRowHeight:function(){var a=this.s.dt,b=a.nTable,c=b.cloneNode(!1),d=e("<tbody/>").appendTo(c),f=e('<div class="'+a.oClasses.sWrapper+' DTS"><div class="'+a.oClasses.sScrollWrapper+'"><div class="'+a.oClasses.sScrollBody+'"></div></div></div>');e("tbody tr:lt(4)",b).clone().appendTo(d);var m=e("tr",d).length;if(1===m)d.prepend("<tr><td>&#160;</td></tr>"),d.append("<tr><td>&#160;</td></tr>");else for(;3>m;m++)d.append("<tr><td>&#160;</td></tr>");e("div."+
+a.oClasses.sScrollBody,f).append(c);a=this.s.dt.nHolding||b.parentNode;e(a).is(":visible")||(a="body");f.appendTo(a);this.s.heights.row=e("tr",d).eq(1).outerHeight();f.remove()},_draw:function(){var a=this,b=this.s.heights,c=this.dom.scroller.scrollTop,d=e(this.s.dt.nTable).height(),f=this.s.dt._iDisplayStart,m=this.s.dt._iDisplayLength,h=this.s.dt.fnRecordsDisplay();this.s.skip=!0;!this.s.dt.bSorted&&!this.s.dt.bFiltered||0!==f||this.s.dt._drawHold||(this.s.topRowFloat=0);c="jump"===this.s.scrollType?
+this._domain("virtualToPhysical",this.s.topRowFloat*b.row):c;this.s.baseScrollTop=c;this.s.baseRowTop=this.s.topRowFloat;var g=c-(this.s.topRowFloat-f)*b.row;0===f?g=0:f+m>=h&&(g=b.scroll-d);this.dom.table.style.top=g+"px";this.s.tableTop=g;this.s.tableBottom=d+this.s.tableTop;d=(c-this.s.tableTop)*this.s.boundaryScale;this.s.redrawTop=c-d;this.s.redrawBottom=c+d>b.scroll-b.viewport-b.row?b.scroll-b.viewport-b.row:c+d;this.s.skip=!1;this.s.dt.oFeatures.bStateSave&&null!==this.s.dt.oLoadedState&&"undefined"!=
+typeof this.s.dt.oLoadedState.iScroller?((c=!this.s.dt.sAjaxSource&&!a.s.dt.ajax||this.s.dt.oFeatures.bServerSide?!1:!0)&&2==this.s.dt.iDraw||!c&&1==this.s.dt.iDraw)&&setTimeout(function(){e(a.dom.scroller).scrollTop(a.s.dt.oLoadedState.iScroller);a.s.redrawTop=a.s.dt.oLoadedState.iScroller-b.viewport/2;setTimeout(function(){a.s.ingnoreScroll=!1},0)},0):a.s.ingnoreScroll=!1;this.s.dt.oFeatures.bInfo&&setTimeout(function(){a._info.call(a)},0);this.dom.loader&&this.s.loaderVisible&&(this.dom.loader.css("display",
+"none"),this.s.loaderVisible=!1)},_domain:function(a,b){var c=this.s.heights;if(c.virtual===c.scroll||1E4>b)return b;if("virtualToPhysical"===a&&b>=c.virtual-1E4)return a=c.virtual-b,c.scroll-a;if("physicalToVirtual"===a&&b>=c.scroll-1E4)return a=c.scroll-b,c.virtual-a;c=(c.virtual-1E4-1E4)/(c.scroll-1E4-1E4);var d=1E4-1E4*c;return"virtualToPhysical"===a?(b-d)/c:c*b+d},_info:function(){if(this.s.dt.oFeatures.bInfo){var a=this.s.dt,b=a.oLanguage,c=this.dom.scroller.scrollTop,d=Math.floor(this.pixelsToRow(c,
+!1,this.s.ani)+1),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay();c=Math.ceil(this.pixelsToRow(c+this.s.heights.viewport,!1,this.s.ani));c=g<c?g:c;var h=a.fnFormatNumber(d),k=a.fnFormatNumber(c),l=a.fnFormatNumber(f),n=a.fnFormatNumber(g);h=0===a.fnRecordsDisplay()&&a.fnRecordsDisplay()==a.fnRecordsTotal()?b.sInfoEmpty+b.sInfoPostFix:0===a.fnRecordsDisplay()?b.sInfoEmpty+" "+b.sInfoFiltered.replace("_MAX_",l)+b.sInfoPostFix:a.fnRecordsDisplay()==a.fnRecordsTotal()?b.sInfo.replace("_START_",h).replace("_END_",
+k).replace("_MAX_",l).replace("_TOTAL_",n)+b.sInfoPostFix:b.sInfo.replace("_START_",h).replace("_END_",k).replace("_MAX_",l).replace("_TOTAL_",n)+" "+b.sInfoFiltered.replace("_MAX_",a.fnFormatNumber(a.fnRecordsTotal()))+b.sInfoPostFix;(b=b.fnInfoCallback)&&(h=b.call(a.oInstance,a,d,c,f,g,h));d=a.aanFeatures.i;if("undefined"!=typeof d)for(f=0,g=d.length;f<g;f++)e(d[f]).html(h);e(a.nTable).triggerHandler("info.dt")}},_parseHeight:function(a){var b,c=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(px|em|rem|vh)$/.exec(a);
+if(null===c)return 0;a=parseFloat(c[1]);c=c[2];"px"===c?b=a:"vh"===c?b=a/100*e(h).height():"rem"===c?b=a*parseFloat(e(":root").css("font-size")):"em"===c&&(b=a*parseFloat(e("body").css("font-size")));return b?b:0},_scroll:function(){var a=this,b=this.s.heights,c=this.dom.scroller.scrollTop;if(!this.s.skip&&!this.s.ingnoreScroll&&c!==this.s.lastScrollTop)if(this.s.dt.bFiltered||this.s.dt.bSorted)this.s.lastScrollTop=0;else{this._info();clearTimeout(this.s.stateTO);this.s.stateTO=setTimeout(function(){a.s.dtApi.state.save()},
+250);this.s.scrollType=Math.abs(c-this.s.lastScrollTop)>b.viewport?"jump":"cont";this.s.topRowFloat="cont"===this.s.scrollType?this.pixelsToRow(c,!1,!1):this._domain("physicalToVirtual",c)/b.row;0>this.s.topRowFloat&&(this.s.topRowFloat=0);if(this.s.forceReposition||c<this.s.redrawTop||c>this.s.redrawBottom){var d=Math.ceil((this.s.displayBuffer-1)/2*this.s.viewportRows);var f=parseInt(this.s.topRowFloat,10)-d;this.s.forceReposition=!1;0>=f?f=0:f+this.s.dt._iDisplayLength>this.s.dt.fnRecordsDisplay()?
+(f=this.s.dt.fnRecordsDisplay()-this.s.dt._iDisplayLength,0>f&&(f=0)):0!==f%2&&f++;f!=this.s.dt._iDisplayStart&&(this.s.tableTop=e(this.s.dt.nTable).offset().top,this.s.tableBottom=e(this.s.dt.nTable).height()+this.s.tableTop,d=function(){null===a.s.scrollDrawReq&&(a.s.scrollDrawReq=c);a.s.dt._iDisplayStart=f;a.s.dt.oApi._fnDraw(a.s.dt)},this.s.dt.oFeatures.bServerSide?(clearTimeout(this.s.drawTO),this.s.drawTO=setTimeout(d,this.s.serverWait)):d(),this.dom.loader&&!this.s.loaderVisible&&(this.dom.loader.css("display",
+"block"),this.s.loaderVisible=!0))}else this.s.topRowFloat=this.pixelsToRow(c,!1,!0);this.s.lastScrollTop=c;this.s.stateSaveThrottle();"jump"===this.s.scrollType&&this.s.mousedown&&this.dom.label.html(this.s.dt.fnFormatNumber(parseInt(this.s.topRowFloat,10)+1)).css("top",c+c*b.labelFactor).css("display","block")}},_scrollForce:function(){var a=this.s.heights;a.virtual=a.row*this.s.dt.fnRecordsDisplay();a.scroll=a.virtual;1E6<a.scroll&&(a.scroll=1E6);this.dom.force.style.height=a.scroll>this.s.heights.row?
+a.scroll+"px":this.s.heights.row+"px"}});g.defaults={boundaryScale:.5,displayBuffer:9,loadingIndicator:!1,rowHeight:"auto",serverWait:200};g.oDefaults=g.defaults;g.version="2.0.1";e(k).on("preInit.dt.dtscroller",function(a,b){if("dt"===a.namespace){a=b.oInit.scroller;var c=p.defaults.scroller;if(a||c)c=e.extend({},a,c),!1!==a&&new g(b,c)}});e.fn.dataTable.Scroller=g;e.fn.DataTable.Scroller=g;var l=e.fn.dataTable.Api;l.register("scroller()",function(){return this});l.register("scroller().rowToPixels()",
+function(a,b,c){var d=this.context;if(d.length&&d[0].oScroller)return d[0].oScroller.rowToPixels(a,b,c)});l.register("scroller().pixelsToRow()",function(a,b,c){var d=this.context;if(d.length&&d[0].oScroller)return d[0].oScroller.pixelsToRow(a,b,c)});l.register(["scroller().scrollToRow()","scroller.toPosition()"],function(a,b){this.iterator("table",function(c){c.oScroller&&c.oScroller.scrollToRow(a,b)});return this});l.register("row().scrollTo()",function(a){var b=this;this.iterator("row",function(c,
+d){c.oScroller&&(d=b.rows({order:"applied",search:"applied"}).indexes().indexOf(d),c.oScroller.scrollToRow(d,a))});return this});l.register("scroller.measure()",function(a){this.iterator("table",function(b){b.oScroller&&b.oScroller.measure(a)});return this});l.register("scroller.page()",function(){var a=this.context;if(a.length&&a[0].oScroller)return a[0].oScroller.pageInfo()});return g});
Index: public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 3 styling wrapper for Scroller
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs', 'datatables.net-scroller'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Scroller ) {
+				require('datatables.net-scroller')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 3 styling wrapper for Scroller
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-scroller"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs")(a,b).$);b.fn.dataTable.Scroller||require("datatables.net-scroller")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap4.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 4 styling wrapper for Scroller
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-scroller'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Scroller ) {
+				require('datatables.net-scroller')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/scroller.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 4 styling wrapper for Scroller
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-scroller"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.Scroller||require("datatables.net-scroller")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/Scroller-2.0.1/js/scroller.dataTables.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/scroller.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/scroller.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! DataTables styling wrapper for Scroller
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-dt', 'datatables.net-scroller'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-dt')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Scroller ) {
+				require('datatables.net-scroller')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Scroller-2.0.1/js/scroller.foundation.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/scroller.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/scroller.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Foundation styling wrapper for Scroller
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-zf', 'datatables.net-scroller'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-zf')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Scroller ) {
+				require('datatables.net-scroller')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Scroller-2.0.1/js/scroller.foundation.min.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/scroller.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/scroller.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Foundation styling wrapper for Scroller
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-scroller"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-zf")(a,b).$);b.fn.dataTable.Scroller||require("datatables.net-scroller")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/Scroller-2.0.1/js/scroller.jqueryui.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/scroller.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/scroller.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! jQuery UI styling wrapper for Scroller
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-jqui', 'datatables.net-scroller'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-jqui')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Scroller ) {
+				require('datatables.net-scroller')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Scroller-2.0.1/js/scroller.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/scroller.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/scroller.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ jQuery UI styling wrapper for Scroller
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-scroller"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-jqui")(a,b).$);b.fn.dataTable.Scroller||require("datatables.net-scroller")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/Scroller-2.0.1/js/scroller.semanticui.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/scroller.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/scroller.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Semanic UI styling wrapper for Scroller
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-se', 'datatables.net-scroller'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-se')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Scroller ) {
+				require('datatables.net-scroller')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Scroller-2.0.1/js/scroller.semanticui.min.js
===================================================================
--- public/vendors/dataTable/Scroller-2.0.1/js/scroller.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Scroller-2.0.1/js/scroller.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Semanic UI styling wrapper for Scroller
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-scroller"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-se")(a,b).$);b.fn.dataTable.Scroller||require("datatables.net-scroller")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,234 @@
+div.dtsp-topRow {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: flex-start;
+}
+div.dtsp-topRow div.dtsp-subRow1 {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow div.dtsp-searchCont {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow button.dtsp-nameButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 23px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-countButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 18px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-searchIcon {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 12px;
+}
+
+div.dataTables_scrollBody {
+  background: white !important;
+}
+
+div.dtsp-searchPanes {
+  padding-top: 10px;
+}
+div.dtsp-searchPanes button.clearAll {
+  max-width: 50px;
+}
+div.dtsp-searchPanes button.btn {
+  margin: 1px;
+}
+div.dtsp-searchPanes div.btn-group {
+  padding: 1px;
+}
+div.dtsp-searchPanes div.btn-group button.btn {
+  margin: 0;
+  height: 40px;
+}
+
+div.dtsp-searchPanes,
+div.row {
+  margin-left: 0px;
+  margin-right: 0px;
+}
+
+div.dtsp-searchPane {
+  margin: 10px;
+  display: inline-block;
+}
+div.dtsp-searchPane thead {
+  display: none;
+}
+div.dtsp-searchPane .mb-3 {
+  margin-bottom: none !important;
+}
+div.dtsp-searchPane .col-sm-12 {
+  padding: 5px;
+}
+div.dtsp-searchPane .input-group {
+  height: 40px !important;
+  padding: 1px;
+}
+div.dtsp-searchPane .input-group .input-group-append {
+  display: inline-block;
+}
+div.dtsp-searchPane .input-group .form-control {
+  min-height: 40px;
+  width: 90%;
+}
+div.dtsp-searchPane .input-group .input-group-btn {
+  min-height: 40px;
+}
+div.dtsp-searchPane .input-group .input-group-btn .btn {
+  min-height: 40px;
+}
+div.dtsp-searchPane div.dataTables_scrollHead {
+  display: none;
+}
+div.dtsp-searchPane div.dataTables_scrollBody {
+  padding: 2px;
+  border: 2px #f0f0f0 solid;
+  border-radius: 4px;
+}
+div.dtsp-searchPane div.dataTables_scrollBody:hover {
+  border: 2px solid #cfcfcf !important;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table tbody tr {
+  height: 20px;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table tbody tr span.badge {
+  float: right;
+  min-width: 30px;
+  display: inline-block;
+  line-height: 1;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td.dtsp-countColumn {
+  text-align: right;
+}
+div.dtsp-searchPane .dtsp-searchIcon {
+  display: block;
+  position: relative;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter {
+  display: none;
+}
+
+div.dtsp-panesContainer {
+  padding: 10px;
+  border: 2px solid #f0f0f0;
+  border-radius: 10px;
+  margin: 5px 0;
+  clear: both;
+}
+div.dtsp-panesContainer div.dtsp-title {
+  float: left;
+  margin: 20px;
+  margin-bottom: 0px;
+  margin-top: 10px;
+}
+div.dtsp-panesContainer button.dtsp-clearAll {
+  float: right;
+  margin-right: 20px;
+}
+
+div.dtsp-columns-1 {
+  min-width: 98%;
+  max-width: 98%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-2 {
+  min-width: 48%;
+  max-width: 48%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-3 {
+  min-width: 33.333%;
+  max-width: 33.333%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-4 {
+  min-width: 23%;
+  max-width: 23%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-4 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-5 {
+  min-width: 18%;
+  max-width: 18%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-5 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-6 {
+  min-width: 15.666%;
+  max-width: 15.666%;
+  padding-left: 0.5%;
+  padding-right: 0.5%;
+  margin: 0px !important;
+}
+div.dtsp-columns-6 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-smallGap {
+  padding: 0px;
+}
+
+div.dtsp-hidden {
+  display: none;
+}
+
+@media screen and (max-width: 767px) {
+  div.dtsp-columns-4,
+  div.dtsp-columns-5,
+  div.dtsp-columns-6 {
+    max-width: 31% !important;
+    min-width: 31% !important;
+  }
+}
+@media screen and (max-width: 640px) {
+  div.dtsp-searchPanes {
+    flex-direction: column !important;
+  }
+
+  div.dtsp-searchPane {
+    max-width: 98% !important;
+    min-width: 98% !important;
+  }
+}
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-topRow div.dtsp-subRow1{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow div.dtsp-searchCont{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow button.dtsp-nameButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:23px;vertical-align:bottom}div.dtsp-topRow button.dtsp-countButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");background-repeat:no-repeat;background-position:center;background-size:18px;vertical-align:bottom}div.dtsp-topRow button.dtsp-searchIcon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:12px}div.dataTables_scrollBody{background:white !important}div.dtsp-searchPanes{padding-top:10px}div.dtsp-searchPanes button.clearAll{max-width:50px}div.dtsp-searchPanes button.btn{margin:1px}div.dtsp-searchPanes div.btn-group{padding:1px}div.dtsp-searchPanes div.btn-group button.btn{margin:0;height:40px}div.dtsp-searchPanes,div.row{margin-left:0px;margin-right:0px}div.dtsp-searchPane{margin:10px;display:inline-block}div.dtsp-searchPane thead{display:none}div.dtsp-searchPane .mb-3{margin-bottom:none !important}div.dtsp-searchPane .col-sm-12{padding:5px}div.dtsp-searchPane .input-group{height:40px !important;padding:1px}div.dtsp-searchPane .input-group .input-group-append{display:inline-block}div.dtsp-searchPane .input-group .form-control{min-height:40px;width:90%}div.dtsp-searchPane .input-group .input-group-btn{min-height:40px}div.dtsp-searchPane .input-group .input-group-btn .btn{min-height:40px}div.dtsp-searchPane div.dataTables_scrollHead{display:none}div.dtsp-searchPane div.dataTables_scrollBody{padding:2px;border:2px #f0f0f0 solid;border-radius:4px}div.dtsp-searchPane div.dataTables_scrollBody:hover{border:2px solid #cfcfcf !important}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr{height:20px}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr span.badge{float:right;min-width:30px;display:inline-block;line-height:1}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td.dtsp-countColumn{text-align:right}div.dtsp-searchPane .dtsp-searchIcon{display:block;position:relative}div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-panesContainer{padding:10px;border:2px solid #f0f0f0;border-radius:10px;margin:5px 0;clear:both}div.dtsp-panesContainer div.dtsp-title{float:left;margin:20px;margin-bottom:0px;margin-top:10px}div.dtsp-panesContainer button.dtsp-clearAll{float:right;margin-right:20px}div.dtsp-columns-1{min-width:98%;max-width:98%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-2{min-width:48%;max-width:48%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-3{min-width:33.333%;max-width:33.333%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4{min-width:23%;max-width:23%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-5{min-width:18%;max-width:18%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-5 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-6{min-width:15.666%;max-width:15.666%;padding-left:0.5%;padding-right:0.5%;margin:0px !important}div.dtsp-columns-6 div.dtsp-topRow{flex-direction:column !important}div.dtsp-smallGap{padding:0px}div.dtsp-hidden{display:none}@media screen and (max-width: 767px){div.dtsp-columns-4,div.dtsp-columns-5,div.dtsp-columns-6{max-width:31% !important;min-width:31% !important}}@media screen and (max-width: 640px){div.dtsp-searchPanes{flex-direction:column !important}div.dtsp-searchPane{max-width:98% !important;min-width:98% !important}}
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap4.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,263 @@
+div.dtsp-topRow {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: flex-start;
+}
+div.dtsp-topRow div.dtsp-subRow1 {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow div.dtsp-searchCont {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow button.dtsp-nameButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 23px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-countButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 18px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-searchIcon {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 12px;
+}
+
+div.dataTables_scrollBody {
+  background: white !important;
+}
+
+div.dtsp-searchPanes {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: space-evenly;
+  align-content: flex-start;
+  align-items: stretch;
+  clear: both;
+}
+div.dtsp-searchPanes button.btn {
+  margin: 1px;
+}
+div.dtsp-searchPanes button.dtsp-clearAll {
+  max-width: 50px;
+}
+
+div.dtsp-searchPane {
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 280px;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: stretch;
+  padding-top: 0px;
+  padding-bottom: 5px;
+  margin: 5px 0;
+  margin-top: 0px;
+  margin-bottom: 0px;
+  font-size: 0.9em;
+  margin: 5px;
+}
+div.dtsp-searchPane div.dataTables_wrapper {
+  flex: 1;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter {
+  display: none;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.row div.col-sm-12:empty {
+  display: none;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.row div.dataTables_filter {
+  display: none;
+}
+div.dtsp-searchPane div.btn-group {
+  padding: 0px;
+}
+div.dtsp-searchPane div.btn-group button.btn {
+  margin: 0;
+  height: 40px;
+}
+div.dtsp-searchPane div.dtsp-topRow {
+  padding: 0px !important;
+  margin: 0px !important;
+}
+div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRows {
+  padding: 0px !important;
+  text-align: right;
+}
+div.dtsp-searchPane div.dtsp-topRow div.row {
+  width: 100%;
+}
+div.dtsp-searchPane thead {
+  display: none;
+}
+div.dtsp-searchPane .mb-3 {
+  margin-bottom: none !important;
+}
+div.dtsp-searchPane .col-sm-12 {
+  padding: 5px;
+}
+div.dtsp-searchPane .input-group {
+  height: 40px !important;
+  padding: 0px !important;
+}
+div.dtsp-searchPane .input-group .input-group-append {
+  display: inline-block;
+}
+div.dtsp-searchPane div.dataTables_scrollHead {
+  display: none;
+}
+div.dtsp-searchPane div.dataTables_scrollBody {
+  padding: 2px;
+  border: 2px #f0f0f0 solid;
+  border-radius: 4px;
+}
+div.dtsp-searchPane div.dataTables_scrollBody:hover {
+  border: 2px solid #cfcfcf !important;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table tbody tr span.badge {
+  float: right;
+  min-width: 30px;
+  display: inline-block;
+  line-height: 1;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td.dtsp-countColumn {
+  text-align: right;
+}
+div.dtsp-searchPane .dtsp-searchIcon {
+  display: block;
+  position: relative;
+  padding: 18px 13px;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter {
+  display: none;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.row {
+  margin-left: -7px;
+  margin-right: -7px;
+}
+div.dtsp-searchPane div.badge {
+  min-width: 30px;
+}
+
+div.dtsp-panes {
+  padding: 5px;
+  border: 2px solid #f0f0f0;
+  border-radius: 10px;
+  margin: 5px;
+  clear: both;
+}
+div.dtsp-panes div.dtsp-titleRow {
+  padding-bottom: 10px;
+}
+div.dtsp-panes div.dtsp-title {
+  float: left;
+  margin: 20px;
+  margin-bottom: 0px;
+  margin-top: 10px;
+}
+div.dtsp-panes button.dtsp-clearAll {
+  float: right;
+}
+
+div.dtsp-columns-1 {
+  min-width: 98%;
+  max-width: 98%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-2 {
+  min-width: 48%;
+  max-width: 48%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-3 {
+  min-width: 33.333%;
+  max-width: 33.333%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-4 {
+  min-width: 23%;
+  max-width: 23%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-4 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-5 {
+  min-width: 18%;
+  max-width: 18%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-5 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-6 {
+  min-width: 15.666%;
+  max-width: 15.666%;
+  padding-left: 0.5%;
+  padding-right: 0.5%;
+  margin: 0px !important;
+}
+div.dtsp-columns-6 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-hidden {
+  display: none !important;
+}
+
+@media screen and (max-width: 767px) {
+  div.dtsp-columns-4,
+  div.dtsp-columns-5,
+  div.dtsp-columns-6 {
+    max-width: 31% !important;
+    min-width: 31% !important;
+  }
+}
+@media screen and (max-width: 640px) {
+  div.dtsp-searchPanes {
+    flex-direction: column !important;
+  }
+
+  div.dtsp-searchPane {
+    max-width: 98% !important;
+    min-width: 98% !important;
+  }
+}
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-topRow div.dtsp-subRow1{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow div.dtsp-searchCont{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow button.dtsp-nameButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:23px;vertical-align:bottom}div.dtsp-topRow button.dtsp-countButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");background-repeat:no-repeat;background-position:center;background-size:18px;vertical-align:bottom}div.dtsp-topRow button.dtsp-searchIcon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:12px}div.dataTables_scrollBody{background:white !important}div.dtsp-searchPanes{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;align-content:flex-start;align-items:stretch;clear:both}div.dtsp-searchPanes button.btn{margin:1px}div.dtsp-searchPanes button.dtsp-clearAll{max-width:50px}div.dtsp-searchPane{flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:280px;justify-content:space-around;align-content:flex-start;align-items:stretch;padding-top:0px;padding-bottom:5px;margin:5px 0;margin-top:0px;margin-bottom:0px;font-size:0.9em;margin:5px}div.dtsp-searchPane div.dataTables_wrapper{flex:1}div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row div.col-sm-12:empty{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row div.dataTables_filter{display:none}div.dtsp-searchPane div.btn-group{padding:0px}div.dtsp-searchPane div.btn-group button.btn{margin:0;height:40px}div.dtsp-searchPane div.dtsp-topRow{padding:0px !important;margin:0px !important}div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRows{padding:0px !important;text-align:right}div.dtsp-searchPane div.dtsp-topRow div.row{width:100%}div.dtsp-searchPane thead{display:none}div.dtsp-searchPane .mb-3{margin-bottom:none !important}div.dtsp-searchPane .col-sm-12{padding:5px}div.dtsp-searchPane .input-group{height:40px !important;padding:0px !important}div.dtsp-searchPane .input-group .input-group-append{display:inline-block}div.dtsp-searchPane div.dataTables_scrollHead{display:none}div.dtsp-searchPane div.dataTables_scrollBody{padding:2px;border:2px #f0f0f0 solid;border-radius:4px}div.dtsp-searchPane div.dataTables_scrollBody:hover{border:2px solid #cfcfcf !important}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr span.badge{float:right;min-width:30px;display:inline-block;line-height:1}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td.dtsp-countColumn{text-align:right}div.dtsp-searchPane .dtsp-searchIcon{display:block;position:relative;padding:18px 13px}div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row{margin-left:-7px;margin-right:-7px}div.dtsp-searchPane div.badge{min-width:30px}div.dtsp-panes{padding:5px;border:2px solid #f0f0f0;border-radius:10px;margin:5px;clear:both}div.dtsp-panes div.dtsp-titleRow{padding-bottom:10px}div.dtsp-panes div.dtsp-title{float:left;margin:20px;margin-bottom:0px;margin-top:10px}div.dtsp-panes button.dtsp-clearAll{float:right}div.dtsp-columns-1{min-width:98%;max-width:98%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-2{min-width:48%;max-width:48%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-3{min-width:33.333%;max-width:33.333%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4{min-width:23%;max-width:23%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-5{min-width:18%;max-width:18%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-5 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-6{min-width:15.666%;max-width:15.666%;padding-left:0.5%;padding-right:0.5%;margin:0px !important}div.dtsp-columns-6 div.dtsp-topRow{flex-direction:column !important}div.dtsp-hidden{display:none !important}@media screen and (max-width: 767px){div.dtsp-columns-4,div.dtsp-columns-5,div.dtsp-columns-6{max-width:31% !important;min-width:31% !important}}@media screen and (max-width: 640px){div.dtsp-searchPanes{flex-direction:column !important}div.dtsp-searchPane{max-width:98% !important;min-width:98% !important}}
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.dataTables.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,357 @@
+div.dtsp-topRow {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: flex-start;
+}
+div.dtsp-topRow div.dtsp-subRow1 {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow div.dtsp-searchCont {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow button.dtsp-nameButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 23px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-countButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 18px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-searchIcon {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 12px;
+}
+
+div.dataTables_scrollBody {
+  background: white !important;
+}
+
+div.dtsp-panesContainer {
+  font-family: 'Roboto', sans-serif;
+  padding: 5px;
+  border: 1px solid #ccc;
+  border-radius: 6px;
+  margin: 5px 0;
+  clear: both;
+  text-align: center;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+  align-content: flex-start;
+  align-items: stretch;
+  clear: both;
+  text-align: start;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-hidden {
+  display: none !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane {
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 280px;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: stretch;
+  padding-top: 0px;
+  padding-bottom: 0px;
+  margin: 5px;
+  margin-top: 0px;
+  margin-bottom: 0px;
+  font-size: 0.9em;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper {
+  flex: 1;
+  margin: 1em 0.5%;
+  margin-top: 0px;
+  border-bottom: 2px solid #f0f0f0;
+  border: 2px solid #f0f0f0;
+  border-radius: 4px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper:hover {
+  border: 2px solid #cfcfcf;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter {
+  display: none;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-selected {
+  border: 2px solid #3276b1;
+  border-radius: 4px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-selected:hover {
+  border: 2px solid #286092;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: flex-start;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-search {
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 90px;
+  min-height: 20px;
+  max-width: none;
+  min-width: 50px;
+  border: none;
+  padding-left: 12px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-search::placeholder {
+  color: black;
+  font-size: 16px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont div.dtsp-searchButtonCont {
+  display: inline-block;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 0;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont div.dtsp-searchButtonCont .dtsp-searchIcon {
+  position: relative;
+  display: inline-block;
+  margin: 4px;
+  display: block;
+  top: -2px;
+  right: 0px;
+  font-size: 16px;
+  margin-bottom: 0px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow button.dtsp-dull {
+  cursor: context-menu !important;
+  color: #7c7c7c;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow button.dtsp-dull:hover {
+  background-color: transparent;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane input.dtsp-paneInputButton, div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane button.dtsp-paneButton {
+  height: 35px;
+  width: 35px;
+  max-width: 35px;
+  min-width: 0;
+  display: inline-block;
+  margin: 2px;
+  border: 0px solid transparent;
+  background-color: transparent;
+  font-size: 16px;
+  margin-bottom: 0px;
+  flex-grow: 0;
+  flex-shrink: 0;
+  flex-basis: 35px;
+  font-family: sans-serif;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane input.dtsp-paneInputButton:hover, div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane button.dtsp-paneButton:hover {
+  background-color: #f0f0f0;
+  border-radius: 2px;
+  cursor: pointer;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane button.dtsp-paneButton {
+  opacity: 0.6;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane input.dtsp-disabledButton {
+  height: 35px;
+  width: 35px;
+  max-width: 35px;
+  min-width: 0;
+  display: inline-block;
+  margin: 2px;
+  border: 0px solid transparent;
+  background-color: transparent;
+  font-size: 16px;
+  margin-bottom: 0px;
+  flex-grow: 0;
+  flex-shrink: 0;
+  flex-basis: 35px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollHead {
+  display: none !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody {
+  border-bottom: none;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody td.dtsp-countColumn {
+  text-align: right;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody td.dtsp-countColumn div.dtsp-pill {
+  background-color: #cfcfcf;
+  text-align: center;
+  border: 1px solid #cfcfcf;
+  border-radius: 10px;
+  width: auto;
+  display: inline-block;
+  min-width: 30px;
+  color: black;
+  font-size: 0.9em;
+  padding: 0 4px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody span.dtsp-pill {
+  float: right;
+  background-color: #cfcfcf;
+  text-align: center;
+  border: 1px solid #cfcfcf;
+  border-radius: 10px;
+  width: auto;
+  min-width: 30px;
+  color: black;
+  font-size: 0.9em;
+  padding: 0 4px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr > th,
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr > td {
+  padding: 5px 10px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane td.dtsp-countColumn {
+  text-align: right;
+}
+div.dtsp-panesContainer div.dtsp-title {
+  float: left;
+  margin: 20px;
+  margin-bottom: 0px;
+  margin-top: 13px;
+}
+div.dtsp-panesContainer button.dtsp-clearAll {
+  float: right;
+  margin: 20px;
+  border: 1px solid transparent;
+  background-color: transparent;
+  padding: 10px;
+  margin-bottom: 0px;
+  margin-top: 5px;
+}
+div.dtsp-panesContainer button.dtsp-clearAll:hover {
+  background-color: #f0f0f0;
+  border-radius: 2px;
+}
+
+div.dt-button-collection div.panes {
+  padding: 0px;
+  border: none;
+  margin: 0px;
+}
+
+div.dtsp-hidden {
+  display: none !important;
+}
+
+div.dtsp-columns-1 {
+  min-width: 98%;
+  max-width: 98%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-2 {
+  min-width: 48%;
+  max-width: 48%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-3 {
+  min-width: 31.333%;
+  max-width: 31.333%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-4 {
+  min-width: 23%;
+  max-width: 23%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-4 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-5 {
+  min-width: 18%;
+  max-width: 18%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-5 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-6 {
+  min-width: 15.666%;
+  max-width: 15.666%;
+  padding-left: 0.5%;
+  padding-right: 0.5%;
+  margin: 0px !important;
+}
+div.dtsp-columns-6 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-narrow {
+  flex-direction: column !important;
+}
+div.dtsp-narrow div.dtsp-subRows {
+  width: 100%;
+  text-align: right;
+}
+
+@media screen and (max-width: 767px) {
+  div.dtsp-columns-4,
+  div.dtsp-columns-5,
+  div.dtsp-columns-6 {
+    max-width: 31% !important;
+    min-width: 31% !important;
+  }
+}
+@media screen and (max-width: 640px) {
+  div.dtsp-searchPanes {
+    flex-direction: column !important;
+  }
+
+  div.dtsp-searchPane {
+    max-width: 98% !important;
+    min-width: 98% !important;
+  }
+}
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.dataTables.min.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-topRow div.dtsp-subRow1{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow div.dtsp-searchCont{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow button.dtsp-nameButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:23px;vertical-align:bottom}div.dtsp-topRow button.dtsp-countButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");background-repeat:no-repeat;background-position:center;background-size:18px;vertical-align:bottom}div.dtsp-topRow button.dtsp-searchIcon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:12px}div.dataTables_scrollBody{background:white !important}div.dtsp-panesContainer{font-family:'Roboto', sans-serif;padding:5px;border:1px solid #ccc;border-radius:6px;margin:5px 0;clear:both;text-align:center}div.dtsp-panesContainer div.dtsp-searchPanes{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:stretch;clear:both;text-align:start}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-hidden{display:none !important}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane{flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:280px;justify-content:space-around;align-content:flex-start;align-items:stretch;padding-top:0px;padding-bottom:0px;margin:5px;margin-top:0px;margin-bottom:0px;font-size:0.9em}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper{flex:1;margin:1em 0.5%;margin-top:0px;border-bottom:2px solid #f0f0f0;border:2px solid #f0f0f0;border-radius:4px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper:hover{border:2px solid #cfcfcf}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-selected{border:2px solid #3276b1;border-radius:4px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-selected:hover{border:2px solid #286092}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-search{flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:90px;min-height:20px;max-width:none;min-width:50px;border:none;padding-left:12px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-search::placeholder{color:black;font-size:16px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont div.dtsp-searchButtonCont{display:inline-block;flex-direction:row;flex-wrap:nowrap;flex-grow:0;flex-shrink:0;flex-basis:0}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont div.dtsp-searchButtonCont .dtsp-searchIcon{position:relative;display:inline-block;margin:4px;display:block;top:-2px;right:0px;font-size:16px;margin-bottom:0px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow button.dtsp-dull{cursor:context-menu !important;color:#7c7c7c}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow button.dtsp-dull:hover{background-color:transparent}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane input.dtsp-paneInputButton,div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane button.dtsp-paneButton{height:35px;width:35px;max-width:35px;min-width:0;display:inline-block;margin:2px;border:0px solid transparent;background-color:transparent;font-size:16px;margin-bottom:0px;flex-grow:0;flex-shrink:0;flex-basis:35px;font-family:sans-serif}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane input.dtsp-paneInputButton:hover,div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane button.dtsp-paneButton:hover{background-color:#f0f0f0;border-radius:2px;cursor:pointer}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane button.dtsp-paneButton{opacity:0.6}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane input.dtsp-disabledButton{height:35px;width:35px;max-width:35px;min-width:0;display:inline-block;margin:2px;border:0px solid transparent;background-color:transparent;font-size:16px;margin-bottom:0px;flex-grow:0;flex-shrink:0;flex-basis:35px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollHead{display:none !important}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody{border-bottom:none}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody td.dtsp-countColumn{text-align:right}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody td.dtsp-countColumn div.dtsp-pill{background-color:#cfcfcf;text-align:center;border:1px solid #cfcfcf;border-radius:10px;width:auto;display:inline-block;min-width:30px;color:black;font-size:0.9em;padding:0 4px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody span.dtsp-pill{float:right;background-color:#cfcfcf;text-align:center;border:1px solid #cfcfcf;border-radius:10px;width:auto;min-width:30px;color:black;font-size:0.9em;padding:0 4px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr>th,div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr>td{padding:5px 10px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane td.dtsp-countColumn{text-align:right}div.dtsp-panesContainer div.dtsp-title{float:left;margin:20px;margin-bottom:0px;margin-top:13px}div.dtsp-panesContainer button.dtsp-clearAll{float:right;margin:20px;border:1px solid transparent;background-color:transparent;padding:10px;margin-bottom:0px;margin-top:5px}div.dtsp-panesContainer button.dtsp-clearAll:hover{background-color:#f0f0f0;border-radius:2px}div.dt-button-collection div.panes{padding:0px;border:none;margin:0px}div.dtsp-hidden{display:none !important}div.dtsp-columns-1{min-width:98%;max-width:98%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-2{min-width:48%;max-width:48%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-3{min-width:31.333%;max-width:31.333%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4{min-width:23%;max-width:23%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-5{min-width:18%;max-width:18%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-5 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-6{min-width:15.666%;max-width:15.666%;padding-left:0.5%;padding-right:0.5%;margin:0px !important}div.dtsp-columns-6 div.dtsp-topRow{flex-direction:column !important}div.dtsp-narrow{flex-direction:column !important}div.dtsp-narrow div.dtsp-subRows{width:100%;text-align:right}@media screen and (max-width: 767px){div.dtsp-columns-4,div.dtsp-columns-5,div.dtsp-columns-6{max-width:31% !important;min-width:31% !important}}@media screen and (max-width: 640px){div.dtsp-searchPanes{flex-direction:column !important}div.dtsp-searchPane{max-width:98% !important;min-width:98% !important}}
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.foundation.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,337 @@
+div.dtsp-topRow {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: flex-start;
+}
+div.dtsp-topRow div.dtsp-subRow1 {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow div.dtsp-searchCont {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow button.dtsp-nameButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 23px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-countButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 18px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-searchIcon {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 12px;
+}
+
+div.dataTables_scrollBody {
+  background: white !important;
+}
+
+div.dtsp-hidden {
+  display: none;
+}
+
+div.dtsp-searchPane {
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 280px;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: stretch;
+  padding: 10px;
+  padding-top: 0px;
+  padding-bottom: 0px;
+  min-width: 280px;
+  margin: 5px;
+  margin-top: 0px;
+  margin-bottom: 10px;
+  font-size: 0.9em;
+}
+div.dtsp-searchPane div.dataTables_scrollHead {
+  display: none;
+}
+div.dtsp-searchPane div.dataTables_scrollBody {
+  padding: 2px;
+  border: 2px #f0f0f0 solid;
+  border-radius: 4px;
+}
+div.dtsp-searchPane div.dataTables_scrollBody:hover {
+  border: 2px solid #cfcfcf !important;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table {
+  border: none !important;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table thead {
+  border: none !important;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table tbody {
+  border: none !important;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table tbody tr {
+  border-bottom: none !important;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td {
+  padding: 4px;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter {
+  display: none;
+}
+div.dtsp-searchPane div.callout.secondary {
+  background-color: transparent;
+}
+div.dtsp-searchPane input.dtsp-search {
+  border: none;
+  font-size: 16px;
+  min-height: 35px;
+  max-width: 100px;
+  color: black;
+  padding-left: 5px;
+}
+div.dtsp-searchPane input.dtsp-search:hover {
+  background-color: #e2e6ea;
+}
+div.dtsp-searchPane .button-group {
+  margin-bottom: 0.5rem;
+  flex-grow: 0;
+  flex-shrink: 0;
+  flex-basis: 105px;
+  align-content: flex-end;
+}
+div.dtsp-searchPane div.dtsp-searchCont {
+  height: 35px;
+  width: 35px;
+}
+div.dtsp-searchPane div.dtsp-searchCont input.search {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-searchPane .dtsp-searchIcon {
+  position: relative;
+  display: inline-block;
+  margin: 0px;
+  margin-top: 2px;
+  display: block;
+  top: -2px;
+  right: 0px;
+  font-size: 16px;
+  margin-bottom: 0px;
+}
+div.dtsp-searchPane div.dtsp-narrow {
+  flex-direction: column !important;
+}
+div.dtsp-searchPane div.dtsp-narrow div.dtsp-subRows {
+  width: 100%;
+  text-align: right;
+  justify-content: flex-end;
+  margin-top: 3px;
+}
+div.dtsp-searchPane div.dtsp-topRow {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: flex-start;
+}
+div.dtsp-searchPane div.dtsp-topRow div.dtsp-narrowButton {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 0;
+  flex-shrink: 0;
+  flex-basis: 105px;
+  margin-left: 3px;
+}
+div.dtsp-searchPane div.dtsp-topRow div.dtsp-narrowSearch {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 1;
+  flex-basis: 90px;
+}
+div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-search {
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 90px;
+  min-height: 20px;
+  max-width: none;
+  min-width: 90px;
+  border: none;
+}
+div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont div.dtsp-searchButtonCont {
+  display: inline-block;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 0;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-searchPane td.dtsp-countColumn {
+  text-align: right;
+}
+div.dtsp-searchPane span.badge {
+  float: right;
+}
+
+div.dtsp-searchPanes {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+  align-content: flex-start;
+  align-items: stretch;
+  padding-top: 10px;
+  clear: both;
+}
+div.dtsp-searchPanes div.callout.primary {
+  background-color: transparent;
+}
+div.dtsp-searchPanes div.callout {
+  border: none;
+  padding: 0;
+  margin: 0;
+}
+div.dtsp-searchPanes .button {
+  min-width: 35px !important;
+  height: 35px !important;
+}
+div.dtsp-searchPanes .row {
+  display: flex;
+}
+
+div.dtsp-panesContainer {
+  padding: 5px;
+  border: 2px solid #f0f0f0;
+  border-radius: 10px;
+  margin: 5px 0 !important;
+  margin-bottom: 20px !important;
+  clear: both;
+}
+div.dtsp-panesContainer .button {
+  padding: 5px;
+  flex-grow: 0;
+  flex-shrink: 0;
+  flex-basis: 35px;
+}
+div.dtsp-panesContainer div.dtsp-title {
+  float: left;
+  margin: 20px;
+  margin-bottom: 0px;
+  margin-top: 10px;
+}
+div.dtsp-panesContainer button.dtsp-clearAll {
+  float: right;
+  margin: 20px;
+  padding: 10px;
+  margin-bottom: 0px;
+  margin-top: 5px;
+}
+
+div.dtsp-columns-1 {
+  min-width: 98%;
+  max-width: 98%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-2 {
+  min-width: 48%;
+  max-width: 48%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-3 {
+  min-width: 33.333%;
+  max-width: 33.333%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-4 {
+  min-width: 23%;
+  max-width: 23%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-4 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-5 {
+  min-width: 18%;
+  max-width: 18%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-5 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-6 {
+  min-width: 15.666%;
+  max-width: 15.666%;
+  padding-left: 0.5%;
+  padding-right: 0.5%;
+  margin: 0px !important;
+}
+div.dtsp-columns-6 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-smallGap {
+  padding: 0px;
+}
+
+@media screen and (max-width: 767px) {
+  div.dtsp-columns-4,
+  div.dtsp-columns-5,
+  div.dtsp-columns-6 {
+    max-width: 31% !important;
+    min-width: 31% !important;
+  }
+}
+@media screen and (max-width: 640px) {
+  div.dtsp-searchPanes {
+    flex-direction: column !important;
+  }
+
+  div.dtsp-searchPane {
+    max-width: 98% !important;
+    min-width: 98% !important;
+  }
+}
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.foundation.min.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-topRow div.dtsp-subRow1{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow div.dtsp-searchCont{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow button.dtsp-nameButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:23px;vertical-align:bottom}div.dtsp-topRow button.dtsp-countButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");background-repeat:no-repeat;background-position:center;background-size:18px;vertical-align:bottom}div.dtsp-topRow button.dtsp-searchIcon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:12px}div.dataTables_scrollBody{background:white !important}div.dtsp-hidden{display:none}div.dtsp-searchPane{flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:280px;justify-content:space-around;align-content:flex-start;align-items:stretch;padding:10px;padding-top:0px;padding-bottom:0px;min-width:280px;margin:5px;margin-top:0px;margin-bottom:10px;font-size:0.9em}div.dtsp-searchPane div.dataTables_scrollHead{display:none}div.dtsp-searchPane div.dataTables_scrollBody{padding:2px;border:2px #f0f0f0 solid;border-radius:4px}div.dtsp-searchPane div.dataTables_scrollBody:hover{border:2px solid #cfcfcf !important}div.dtsp-searchPane div.dataTables_scrollBody table{border:none !important}div.dtsp-searchPane div.dataTables_scrollBody table thead{border:none !important}div.dtsp-searchPane div.dataTables_scrollBody table tbody{border:none !important}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr{border-bottom:none !important}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td{padding:4px}div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-searchPane div.callout.secondary{background-color:transparent}div.dtsp-searchPane input.dtsp-search{border:none;font-size:16px;min-height:35px;max-width:100px;color:black;padding-left:5px}div.dtsp-searchPane input.dtsp-search:hover{background-color:#e2e6ea}div.dtsp-searchPane .button-group{margin-bottom:0.5rem;flex-grow:0;flex-shrink:0;flex-basis:105px;align-content:flex-end}div.dtsp-searchPane div.dtsp-searchCont{height:35px;width:35px}div.dtsp-searchPane div.dtsp-searchCont input.search{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-searchPane .dtsp-searchIcon{position:relative;display:inline-block;margin:0px;margin-top:2px;display:block;top:-2px;right:0px;font-size:16px;margin-bottom:0px}div.dtsp-searchPane div.dtsp-narrow{flex-direction:column !important}div.dtsp-searchPane div.dtsp-narrow div.dtsp-subRows{width:100%;text-align:right;justify-content:flex-end;margin-top:3px}div.dtsp-searchPane div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-searchPane div.dtsp-topRow div.dtsp-narrowButton{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:0;flex-shrink:0;flex-basis:105px;margin-left:3px}div.dtsp-searchPane div.dtsp-topRow div.dtsp-narrowSearch{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:1;flex-basis:90px}div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-search{flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:90px;min-height:20px;max-width:none;min-width:90px;border:none}div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont div.dtsp-searchButtonCont{display:inline-block;flex-direction:row;flex-wrap:nowrap;flex-grow:0;flex-shrink:0;flex-basis:0}div.dtsp-searchPane td.dtsp-countColumn{text-align:right}div.dtsp-searchPane span.badge{float:right}div.dtsp-searchPanes{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:stretch;padding-top:10px;clear:both}div.dtsp-searchPanes div.callout.primary{background-color:transparent}div.dtsp-searchPanes div.callout{border:none;padding:0;margin:0}div.dtsp-searchPanes .button{min-width:35px !important;height:35px !important}div.dtsp-searchPanes .row{display:flex}div.dtsp-panesContainer{padding:5px;border:2px solid #f0f0f0;border-radius:10px;margin:5px 0 !important;margin-bottom:20px !important;clear:both}div.dtsp-panesContainer .button{padding:5px;flex-grow:0;flex-shrink:0;flex-basis:35px}div.dtsp-panesContainer div.dtsp-title{float:left;margin:20px;margin-bottom:0px;margin-top:10px}div.dtsp-panesContainer button.dtsp-clearAll{float:right;margin:20px;padding:10px;margin-bottom:0px;margin-top:5px}div.dtsp-columns-1{min-width:98%;max-width:98%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-2{min-width:48%;max-width:48%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-3{min-width:33.333%;max-width:33.333%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4{min-width:23%;max-width:23%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-5{min-width:18%;max-width:18%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-5 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-6{min-width:15.666%;max-width:15.666%;padding-left:0.5%;padding-right:0.5%;margin:0px !important}div.dtsp-columns-6 div.dtsp-topRow{flex-direction:column !important}div.dtsp-smallGap{padding:0px}@media screen and (max-width: 767px){div.dtsp-columns-4,div.dtsp-columns-5,div.dtsp-columns-6{max-width:31% !important;min-width:31% !important}}@media screen and (max-width: 640px){div.dtsp-searchPanes{flex-direction:column !important}div.dtsp-searchPane{max-width:98% !important;min-width:98% !important}}
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.jqueryui.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,301 @@
+div.dtsp-topRow {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: flex-start;
+}
+div.dtsp-topRow div.dtsp-subRow1 {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow div.dtsp-searchCont {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow button.dtsp-nameButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 23px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-countButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 18px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-searchIcon {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 12px;
+}
+
+div.dataTables_scrollBody {
+  background: white !important;
+}
+
+div.dtsp-panesContainer {
+  padding: 5px;
+  border: 2px solid #dddddd;
+  border-radius: 10px;
+  background-color: #e9e9e9;
+  margin: 5px 0;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+  align-content: flex-start;
+  align-items: stretch;
+  clear: both;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-hidden {
+  display: none;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane {
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 280px;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: stretch;
+  padding: 10px;
+  padding-top: 0px;
+  padding-bottom: 0px;
+  min-width: 280px;
+  margin: 5px;
+  margin-top: 5px;
+  margin-bottom: 0px;
+  font-size: 0.9em;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper {
+  flex: 1;
+  margin: 1em 0.5%;
+  margin-top: 0px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper .ui-toolbar {
+  padding: 0px !important;
+  display: none;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter {
+  display: none;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-selected {
+  border: 2px solid #3276b1;
+  border-radius: 4px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-selected:hover {
+  border: 2px solid #286092;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.ui-state-default {
+  padding: 3px;
+  padding-left: 2px;
+  border-radius: 4px;
+  margin-bottom: 1px solid #e9e9e9;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: flex-start;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-search {
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 90px;
+  min-height: 20px;
+  max-width: none;
+  min-width: 90px;
+  padding: 2px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-search::placeholder {
+  color: black;
+  font-size: 16px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-dull {
+  border: transparent;
+  background-color: transparent;
+  max-width: 50%;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont div.dtsp-searchButtonCont {
+  display: inline-block;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 0;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont div.dtsp-searchButtonCont .dtsp-searchIcon {
+  position: relative;
+  display: inline-block;
+  margin: 4px;
+  display: block;
+  top: -2px;
+  right: 0px;
+  font-size: 16px;
+  margin-bottom: 0px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow button.dtsp-dull {
+  cursor: context-menu !important;
+  color: #7c7c7c;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow button.dtsp-dull:hover {
+  background-color: transparent;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane input.dtsp-paneInputButton, div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane button.dtsp-paneButton {
+  height: 35px;
+  width: 35px;
+  max-width: 35px;
+  min-width: 0;
+  display: inline-block;
+  margin: 2px;
+  font-size: 16px;
+  margin-bottom: 0px;
+  flex-grow: 0;
+  flex-shrink: 0;
+  flex-basis: 35px;
+  padding: 0px;
+  padding-top: 1.6px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane input.dtsp-paneInputButton {
+  height: 27px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollHead {
+  display: none !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody {
+  border: 2px solid #dddddd !important;
+  border-top: 1px solid #f6f6f6 !important;
+  border-radius: 4px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody:hover {
+  border: 2px solid #cfcfcf !important;
+  border-top: 1px solid #f6f6f6 !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody td.dtsp-countColumn {
+  text-align: right;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody span.dtsp-pill {
+  float: right;
+  background-color: #cfcfcf;
+  text-align: center;
+  border: 1px solid #cfcfcf;
+  border-radius: 10px;
+  width: auto;
+  display: inline-block;
+  min-width: 30px;
+  color: black;
+  font-size: 0.9em;
+  padding: 0 4px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr > th,
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr > td {
+  padding: 5px 10px;
+}
+div.dtsp-panesContainer div.dtsp-title {
+  float: left;
+  margin: 20px;
+  margin-bottom: 0px;
+  margin-top: 10px;
+}
+div.dtsp-panesContainer button.dtsp-clearAll {
+  float: right;
+  margin: 20px;
+  padding: 10px;
+  margin-bottom: 0px;
+  margin-top: 5px;
+}
+
+div.dt-button-collection div.dtsp-panesContainer {
+  padding: 0px;
+  margin: 0px;
+}
+
+div.dtsp-columns-1 {
+  min-width: 98%;
+  max-width: 98%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-2 {
+  min-width: 48%;
+  max-width: 48%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-3 {
+  min-width: 31.333%;
+  max-width: 31.333%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-4 {
+  min-width: 23%;
+  max-width: 23%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-4 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-5 {
+  min-width: 18%;
+  max-width: 18%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-5 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-6 {
+  min-width: 15.666%;
+  max-width: 15.666%;
+  padding-left: 0.5%;
+  padding-right: 0.5%;
+  margin: 0px !important;
+}
+div.dtsp-columns-6 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-smallGap {
+  padding: 0px;
+}
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-topRow div.dtsp-subRow1{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow div.dtsp-searchCont{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow button.dtsp-nameButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:23px;vertical-align:bottom}div.dtsp-topRow button.dtsp-countButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");background-repeat:no-repeat;background-position:center;background-size:18px;vertical-align:bottom}div.dtsp-topRow button.dtsp-searchIcon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:12px}div.dataTables_scrollBody{background:white !important}div.dtsp-panesContainer{padding:5px;border:2px solid #dddddd;border-radius:10px;background-color:#e9e9e9;margin:5px 0}div.dtsp-panesContainer div.dtsp-searchPanes{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:stretch;clear:both}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-hidden{display:none}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane{flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:280px;justify-content:space-around;align-content:flex-start;align-items:stretch;padding:10px;padding-top:0px;padding-bottom:0px;min-width:280px;margin:5px;margin-top:5px;margin-bottom:0px;font-size:0.9em}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper{flex:1;margin:1em 0.5%;margin-top:0px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper .ui-toolbar{padding:0px !important;display:none}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-selected{border:2px solid #3276b1;border-radius:4px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-selected:hover{border:2px solid #286092}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.ui-state-default{padding:3px;padding-left:2px;border-radius:4px;margin-bottom:1px solid #e9e9e9}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-search{flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:90px;min-height:20px;max-width:none;min-width:90px;padding:2px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-search::placeholder{color:black;font-size:16px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-dull{border:transparent;background-color:transparent;max-width:50%}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont div.dtsp-searchButtonCont{display:inline-block;flex-direction:row;flex-wrap:nowrap;flex-grow:0;flex-shrink:0;flex-basis:0}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont div.dtsp-searchButtonCont .dtsp-searchIcon{position:relative;display:inline-block;margin:4px;display:block;top:-2px;right:0px;font-size:16px;margin-bottom:0px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow button.dtsp-dull{cursor:context-menu !important;color:#7c7c7c}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow button.dtsp-dull:hover{background-color:transparent}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane input.dtsp-paneInputButton,div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane button.dtsp-paneButton{height:35px;width:35px;max-width:35px;min-width:0;display:inline-block;margin:2px;font-size:16px;margin-bottom:0px;flex-grow:0;flex-shrink:0;flex-basis:35px;padding:0px;padding-top:1.6px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane input.dtsp-paneInputButton{height:27px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollHead{display:none !important}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody{border:2px solid #dddddd !important;border-top:1px solid #f6f6f6 !important;border-radius:4px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody:hover{border:2px solid #cfcfcf !important;border-top:1px solid #f6f6f6 !important}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody td.dtsp-countColumn{text-align:right}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_scrollBody span.dtsp-pill{float:right;background-color:#cfcfcf;text-align:center;border:1px solid #cfcfcf;border-radius:10px;width:auto;display:inline-block;min-width:30px;color:black;font-size:0.9em;padding:0 4px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr>th,div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr>td{padding:5px 10px}div.dtsp-panesContainer div.dtsp-title{float:left;margin:20px;margin-bottom:0px;margin-top:10px}div.dtsp-panesContainer button.dtsp-clearAll{float:right;margin:20px;padding:10px;margin-bottom:0px;margin-top:5px}div.dt-button-collection div.dtsp-panesContainer{padding:0px;margin:0px}div.dtsp-columns-1{min-width:98%;max-width:98%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-2{min-width:48%;max-width:48%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-3{min-width:31.333%;max-width:31.333%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4{min-width:23%;max-width:23%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-5{min-width:18%;max-width:18%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-5 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-6{min-width:15.666%;max-width:15.666%;padding-left:0.5%;padding-right:0.5%;margin:0px !important}div.dtsp-columns-6 div.dtsp-topRow{flex-direction:column !important}div.dtsp-smallGap{padding:0px}
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.semanticui.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,238 @@
+div.dtsp-topRow {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: flex-start;
+}
+div.dtsp-topRow div.dtsp-subRow1 {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow div.dtsp-searchCont {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow button.dtsp-nameButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 23px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-countButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 18px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-searchIcon {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 12px;
+}
+
+div.dataTables_scrollBody {
+  background: white !important;
+}
+
+div.dtsp-panesContainer {
+  padding: 5px;
+  border: 2px solid #f0f0f0;
+  border-radius: 10px;
+  margin: 5px 0;
+}
+div.dtsp-panesContainer .ui.grid {
+  margin: 0px !important;
+  justify-content: space-evenly;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-hidden {
+  display: none !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane {
+  margin: 10px !important;
+  margin-top: 0px !important;
+  margin-bottom: 0px !important;
+  padding: 0px !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-narrow {
+  width: 100%;
+  text-align: right;
+  margin-top: 3px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-narrow .ui.icon {
+  width: 98%;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow .ui.button {
+  max-width: 35px;
+  min-width: 35px;
+  padding: 0px;
+  height: 35px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow .ui.icon {
+  width: 98%;
+  padding: 0px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow .ui.icon input.dtsp-search {
+  padding: 0px !important;
+  padding-left: 3px !important;
+  min-height: 35px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow .ui.icon .dtsp-searchButtonCont {
+  min-width: 35px;
+  max-width: 35px;
+  display: inline-block;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow .ui.buttons {
+  min-width: 105px;
+  padding: 0px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper {
+  border-bottom: 2px solid #f0f0f0;
+  border: 2px solid #f0f0f0;
+  border-radius: 4px;
+  padding: 0px !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper:hover {
+  border: 2px solid #cfcfcf;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper .sixteen.wide.column {
+  padding: 0px !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.row {
+  padding: 0px !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper table {
+  border-collapse: collapse;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper table tr td {
+  border-top: 0px solid transparent;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper table tr td.dtsp-countColumn {
+  text-align: right;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper table tr span.dtsp-pill {
+  float: right;
+  background-color: #cfcfcf;
+  text-align: center;
+  border: 1px solid #cfcfcf;
+  border-radius: 10px;
+  width: auto;
+  min-width: 30px;
+  color: black;
+  font-size: 0.9em;
+  padding: 0 4px;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter {
+  display: none;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollHead {
+  display: none !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr > th,
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr > td {
+  padding: 5px 10px;
+}
+div.dtsp-panesContainer div.dtsp-title {
+  float: left;
+  margin: 20px;
+  margin-bottom: 0px;
+  margin-top: 10px;
+}
+div.dtsp-panesContainer button.dtsp-clearAll {
+  float: right;
+  margin: 20px;
+  padding: 10px;
+  margin-bottom: 0px;
+  margin-top: 5px;
+}
+div.dtsp-panesContainer div.dtsp-titleRow {
+  min-height: 40px;
+}
+
+div.dtsp-columns-1 {
+  min-width: 98%;
+  max-width: 98%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-2 {
+  min-width: 48%;
+  max-width: 48%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-3 {
+  min-width: 30.333%;
+  max-width: 30.333%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-4 {
+  min-width: 23%;
+  max-width: 23%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-4 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-5 {
+  min-width: 18%;
+  max-width: 18%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-5 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-6 {
+  min-width: 15.666%;
+  max-width: 15.666%;
+  padding-left: 0.5%;
+  padding-right: 0.5%;
+  margin: 0px !important;
+}
+div.dtsp-columns-6 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+@media screen and (max-width: 767px) {
+  div.dtsp-columns-4,
+  div.dtsp-columns-5,
+  div.dtsp-columns-6 {
+    max-width: 31% !important;
+    min-width: 31% !important;
+  }
+}
+@media screen and (max-width: 640px) {
+  div.dtsp-searchPanes {
+    flex-direction: column !important;
+  }
+
+  div.dtsp-searchPane {
+    max-width: 98% !important;
+    min-width: 98% !important;
+  }
+}
Index: public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.semanticui.min.css
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/css/searchPanes.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-topRow div.dtsp-subRow1{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow div.dtsp-searchCont{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow button.dtsp-nameButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:23px;vertical-align:bottom}div.dtsp-topRow button.dtsp-countButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");background-repeat:no-repeat;background-position:center;background-size:18px;vertical-align:bottom}div.dtsp-topRow button.dtsp-searchIcon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:12px}div.dataTables_scrollBody{background:white !important}div.dtsp-panesContainer{padding:5px;border:2px solid #f0f0f0;border-radius:10px;margin:5px 0}div.dtsp-panesContainer .ui.grid{margin:0px !important;justify-content:space-evenly}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-hidden{display:none !important}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane{margin:10px !important;margin-top:0px !important;margin-bottom:0px !important;padding:0px !important}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-narrow{width:100%;text-align:right;margin-top:3px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow div.dtsp-narrow .ui.icon{width:98%}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow .ui.button{max-width:35px;min-width:35px;padding:0px;height:35px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow .ui.icon{width:98%;padding:0px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow .ui.icon input.dtsp-search{padding:0px !important;padding-left:3px !important;min-height:35px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow .ui.icon .dtsp-searchButtonCont{min-width:35px;max-width:35px;display:inline-block}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dtsp-topRow .ui.buttons{min-width:105px;padding:0px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper{border-bottom:2px solid #f0f0f0;border:2px solid #f0f0f0;border-radius:4px;padding:0px !important}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper:hover{border:2px solid #cfcfcf}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper .sixteen.wide.column{padding:0px !important}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.row{padding:0px !important}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper table{border-collapse:collapse}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper table tr td{border-top:0px solid transparent}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper table tr td.dtsp-countColumn{text-align:right}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper table tr span.dtsp-pill{float:right;background-color:#cfcfcf;text-align:center;border:1px solid #cfcfcf;border-radius:10px;width:auto;min-width:30px;color:black;font-size:0.9em;padding:0 4px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollHead{display:none !important}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr>th,div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane tr>td{padding:5px 10px}div.dtsp-panesContainer div.dtsp-title{float:left;margin:20px;margin-bottom:0px;margin-top:10px}div.dtsp-panesContainer button.dtsp-clearAll{float:right;margin:20px;padding:10px;margin-bottom:0px;margin-top:5px}div.dtsp-panesContainer div.dtsp-titleRow{min-height:40px}div.dtsp-columns-1{min-width:98%;max-width:98%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-2{min-width:48%;max-width:48%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-3{min-width:30.333%;max-width:30.333%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4{min-width:23%;max-width:23%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-5{min-width:18%;max-width:18%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-5 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-6{min-width:15.666%;max-width:15.666%;padding-left:0.5%;padding-right:0.5%;margin:0px !important}div.dtsp-columns-6 div.dtsp-topRow{flex-direction:column !important}@media screen and (max-width: 767px){div.dtsp-columns-4,div.dtsp-columns-5,div.dtsp-columns-6{max-width:31% !important;min-width:31% !important}}@media screen and (max-width: 640px){div.dtsp-searchPanes{flex-direction:column !important}div.dtsp-searchPane{max-width:98% !important;min-width:98% !important}}
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/dataTables.searchPanes.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/dataTables.searchPanes.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/dataTables.searchPanes.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1981 @@
+/*! SearchPanes 1.0.1
+ * 2019-2020 SpryMedia Ltd - datatables.net/license
+ */
+(function () {
+    'use strict';
+
+    var DataTable = $.fn.dataTable;
+    var SearchPane = /** @class */ (function () {
+        /**
+         * Creates the panes, sets up the search function
+         * @param paneSettings The settings for the searchPanes
+         * @param opts The options for the default features
+         * @param idx the index of the column for this pane
+         * @returns {object} the pane that has been created, including the table and the index of the pane
+         */
+        function SearchPane(paneSettings, opts, idx, layout, panesContainer, panes) {
+            var _this = this;
+            if (panes === void 0) { panes = null; }
+            // Check that the required version of DataTables is included
+            if (!DataTable || !DataTable.versionCheck || !DataTable.versionCheck('1.10.0')) {
+                throw new Error('SearchPane requires DataTables 1.10 or newer');
+            }
+            // Check that Select is included
+            if (!DataTable.select) {
+                throw new Error('SearchPane requires Select');
+            }
+            var table = new DataTable.Api(paneSettings);
+            this.classes = $.extend(true, {}, SearchPane.classes);
+            // Get options from user
+            this.c = $.extend(true, {}, SearchPane.defaults, opts);
+            this.customPaneSettings = panes;
+            this.s = {
+                cascadeRegen: false,
+                clearing: false,
+                colOpts: [],
+                deselect: false,
+                displayed: false,
+                dt: table,
+                dtPane: undefined,
+                filteringActive: false,
+                index: idx,
+                indexes: [],
+                lastSelect: false,
+                redraw: false,
+                rowData: {
+                    arrayFilter: [],
+                    arrayOriginal: [],
+                    arrayTotals: [],
+                    bins: {},
+                    binsOriginal: {},
+                    binsTotal: {},
+                    filterMap: new Map()
+                },
+                searchFunction: undefined,
+                selectPresent: false,
+                updating: false
+            };
+            var rowLength = table.columns().eq(0).toArray().length;
+            this.colExists = this.s.index < rowLength;
+            // Add extra elements to DOM object including clear and hide buttons
+            this.c.layout = layout;
+            var layVal = parseInt(layout.split('-')[1], 10);
+            this.dom = {
+                buttonGroup: $('<div/>').addClass(this.classes.buttonGroup),
+                clear: $('<button type="button">&#215;</button>')
+                    .addClass(this.classes.dull)
+                    .addClass(this.classes.paneButton)
+                    .addClass(this.classes.clearButton),
+                container: $('<div/>').addClass(this.classes.container).addClass(this.classes.layout +
+                    (layVal < 7 ? layout : layout.split('-')[0] + '-6')),
+                countButton: $('<button type="button"></button>')
+                    .addClass(this.classes.paneButton)
+                    .addClass(this.classes.countButton),
+                dtP: $('<table><thead><tr><th>' +
+                    (this.colExists
+                        ? $(table.column(this.colExists ? this.s.index : 0).header()).text()
+                        : this.customPaneSettings.header || 'Custom Pane') + '</th><th/></tr></thead></table>'),
+                lower: $('<div/>').addClass(this.classes.subRow2).addClass(this.classes.narrowButton),
+                nameButton: $('<button type="button"></button>').addClass(this.classes.paneButton).addClass(this.classes.nameButton),
+                searchBox: $('<input/>').addClass(this.classes.paneInputButton).addClass(this.classes.search),
+                searchButton: $('<button type = "button" class="' + this.classes.searchIcon + '"></button>')
+                    .addClass(this.classes.paneButton),
+                searchCont: $('<div/>').addClass(this.classes.searchCont),
+                searchLabelCont: $('<div/>').addClass(this.classes.searchLabelCont),
+                topRow: $('<div/>').addClass(this.classes.topRow),
+                upper: $('<div/>').addClass(this.classes.subRow1).addClass(this.classes.narrowSearch)
+            };
+            this.s.displayed = false;
+            table = this.s.dt;
+            this.selections = [];
+            this.s.colOpts = this.colExists ? this._getOptions() : this._getBonusOptions();
+            var colOpts = this.s.colOpts;
+            var clear = $('<button type="button">X</button>').addClass(this.classes.paneButton);
+            $(clear).text(table.i18n('searchPanes.clearPane', 'X'));
+            this.dom.container.addClass(colOpts.className);
+            this.dom.container.addClass((this.customPaneSettings !== null && this.customPaneSettings.className !== undefined)
+                ? this.customPaneSettings.className
+                : '');
+            $(panesContainer).append(this.dom.container);
+            var tableNode = table.table(0).node();
+            // Custom search function for table
+            this.s.searchFunction = function (settings, searchData, dataIndex, origData) {
+                // If no data has been selected then show all
+                if (_this.selections.length === 0) {
+                    return true;
+                }
+                if (settings.nTable !== tableNode) {
+                    return true;
+                }
+                var filter = '';
+                if (_this.colExists) {
+                    // Get the current filtered data
+                    filter = searchData[_this.s.index];
+                    if (colOpts.orthogonal.filter !== 'filter') {
+                        // get the filter value from the map
+                        filter = _this.s.rowData.filterMap.get(dataIndex);
+                        if (filter instanceof $.fn.dataTable.Api) {
+                            filter = filter.toArray();
+                        }
+                    }
+                }
+                return _this._search(filter, dataIndex);
+            };
+            $.fn.dataTable.ext.search.push(this.s.searchFunction);
+            // If the clear button for this pane is clicked clear the selections
+            if (this.c.clear) {
+                $(clear).on('click', function () {
+                    var searches = _this.dom.container.find(_this.classes.search);
+                    searches.each(function () {
+                        $(this).val('');
+                        $(this).trigger('input');
+                    });
+                    _this.clearPane();
+                });
+            }
+            // Sometimes the top row of the panes containing the search box and ordering buttons appears
+            //  weird if the width of the panes is lower than expected, this fixes the design.
+            // Equally this may occur when the table is resized.
+            table.on('draw.dtsp', function () {
+                _this._adjustTopRow();
+            });
+            $(window).on('resize.dtsp', DataTable.util.throttle(function () {
+                _this._adjustTopRow();
+            }));
+            // When column-reorder is present and the columns are moved, it is necessary to
+            //  reassign all of the panes indexes to the new index of the column.
+            table.on('column-reorder.dtsp', function (e, settings, details) {
+                _this.s.index = details.mapping[_this.s.index];
+            });
+            return this;
+        }
+        /**
+         * In the case of a rebuild there is potential for new data to have been included or removed
+         * so all of the rowData must be reset as a precaution.
+         */
+        SearchPane.prototype.clearData = function () {
+            this.s.rowData = {
+                arrayFilter: [],
+                arrayOriginal: [],
+                arrayTotals: [],
+                bins: {},
+                binsOriginal: {},
+                binsTotal: {},
+                filterMap: new Map()
+            };
+        };
+        /**
+         * Clear the selections in the pane
+         */
+        SearchPane.prototype.clearPane = function () {
+            // Deselect all rows which are selected and update the table and filter count.
+            this.s.dtPane.rows({ selected: true }).deselect();
+            this.updateTable();
+            return this;
+        };
+        /**
+         * Strips all of the SearchPanes elements from the document and turns all of the listeners for the buttons off
+         */
+        SearchPane.prototype.destroy = function () {
+            $(this.s.dtPane).off('.dtsp');
+            $(this.s.dt).off('.dtsp');
+            $(this.dom.nameButton).off('.dtsp');
+            $(this.dom.countButton).off('.dtsp');
+            $(this.dom.clear).off('.dtsp');
+            $(this.dom.searchButton).off('.dtsp');
+            $(this.dom.container).remove();
+            var searchIdx = $.fn.dataTable.ext.search.indexOf(this.s.searchFunction);
+            while (searchIdx !== -1) {
+                $.fn.dataTable.ext.search.splice(searchIdx, 1);
+                searchIdx = $.fn.dataTable.ext.search.indexOf(this.s.searchFunction);
+            }
+            // If the datatables have been defined for the panes then also destroy these
+            if (this.s.dtPane !== undefined) {
+                this.s.dtPane.destroy();
+            }
+        };
+        /**
+         * Updates the number of filters that have been applied in the title
+         */
+        SearchPane.prototype.getPaneCount = function () {
+            return this.s.dtPane !== undefined ?
+                this.s.dtPane.rows({ selected: true }).data().toArray().length :
+                0;
+        };
+        /**
+         * Rebuilds the panes from the start having deleted the old ones
+         */
+        SearchPane.prototype.rebuildPane = function () {
+            this.clearData();
+            // When rebuilding strip all of the HTML Elements out of the container and start from scratch
+            if (this.s.dtPane !== undefined) {
+                this.s.dtPane.clear().destroy();
+            }
+            this.dom.container.removeClass(this.classes.hidden);
+            this.s.displayed = false;
+            this._buildPane();
+            return this;
+        };
+        /**
+         * removes the pane from the page and sets the displayed property to false.
+         */
+        SearchPane.prototype.removePane = function () {
+            this.s.displayed = false;
+            $(this.dom.container).hide();
+        };
+        /**
+         * Sets the cascadeRegen property of the pane. Accessible from above because as SearchPanes.ts deals with the rebuilds.
+         * @param val the boolean value that the cascadeRegen property is to be set to
+         */
+        SearchPane.prototype.setCascadeRegen = function (val) {
+            this.s.cascadeRegen = val;
+        };
+        /**
+         * This function allows the clearing property to be assigned. This is used when implementing cascadePane.
+         * In setting this to true for the clearing of the panes selection on the deselects it forces the pane to
+         * repopulate from the entire dataset not just the displayed values.
+         * @param val the boolean value which the clearing property is to be assigned
+         */
+        SearchPane.prototype.setClear = function (val) {
+            this.s.clearing = val;
+        };
+        /**
+         * Updates the values of all of the panes
+         * @param draw whether this has been triggered by a draw event or not
+         */
+        SearchPane.prototype.updatePane = function (draw) {
+            if (draw === void 0) { draw = false; }
+            this.s.updating = true;
+            this._updateCommon(draw);
+            this.s.updating = false;
+        };
+        /**
+         * Updates the panes if one of the options to do so has been set to true
+         *   rather than the filtered message when using viewTotal.
+         */
+        SearchPane.prototype.updateTable = function () {
+            var selectedRows = this.s.dtPane.rows({ selected: true }).data().toArray();
+            this.selections = selectedRows;
+            this._searchExtras();
+            // If either of the options that effect how the panes are displayed are selected then update the Panes
+            if (this.c.cascadePanes || this.c.viewTotal) {
+                this.updatePane();
+            }
+        };
+        /**
+         * Takes in potentially undetected rows and adds them to the array if they are not yet featured
+         * @param filter the filter value of the potential row
+         * @param display the display value of the potential row
+         * @param sort the sort value of the potential row
+         * @param type the type value of the potential row
+         * @param arrayFilter the array to be populated
+         * @param bins the bins to be populated
+         */
+        SearchPane.prototype._addOption = function (filter, display, sort, type, arrayFilter, bins) {
+            // If the filter is an array then take a note of this, and add the elements to the arrayFilter array
+            if (Array.isArray(filter) || filter instanceof DataTable.Api) {
+                // Convert to an array so that we can work with it
+                if (filter instanceof DataTable.Api) {
+                    filter = filter.toArray();
+                    display = display.toArray();
+                }
+                if (filter.length === display.length) {
+                    for (var i = 0; i < filter.length; i++) {
+                        // If we haven't seen this row before add it
+                        if (!bins[filter[i]]) {
+                            bins[filter[i]] = 1;
+                            arrayFilter.push({
+                                display: display[i],
+                                filter: filter[i],
+                                sort: sort,
+                                type: type
+                            });
+                        }
+                        // Otherwise just increment the count
+                        else {
+                            bins[filter[i]]++;
+                        }
+                    }
+                    return;
+                }
+                else {
+                    throw new Error('display and filter not the same length');
+                }
+            }
+            // If the values were affected by othogonal data and are not an array then check if it is already present
+            else if (typeof this.s.colOpts.orthogonal === 'string') {
+                if (!bins[filter]) {
+                    bins[filter] = 1;
+                    arrayFilter.push({
+                        display: display,
+                        filter: filter,
+                        sort: sort,
+                        type: type
+                    });
+                }
+                else {
+                    bins[filter]++;
+                    return;
+                }
+            }
+            // Otherwise we must just be adding an option
+            else {
+                arrayFilter.push({
+                    display: display,
+                    filter: filter,
+                    sort: sort,
+                    type: type
+                });
+            }
+        };
+        /**
+         * Adds a row to the panes table
+         * @param display the value to be displayed to the user
+         * @param filter the value to be filtered on when searchpanes is implemented
+         * @param shown the number of rows in the table that are currently visible matching this criteria
+         * @param total the total number of rows in the table that match this criteria
+         * @param sort the value to be sorted in the pane table
+         * @param type the value of which the type is to be derived from
+         */
+        SearchPane.prototype._addRow = function (display, filter, shown, total, sort, type) {
+            var index;
+            for (var _i = 0, _a = this.s.indexes; _i < _a.length; _i++) {
+                var entry = _a[_i];
+                if (entry.filter === filter) {
+                    index = entry.index;
+                }
+            }
+            if (index === undefined) {
+                index = this.s.indexes.length;
+                this.s.indexes.push({ filter: filter, index: index });
+            }
+            return this.s.dtPane.row.add({
+                display: display !== '' ? display : this.c.emptyMessage,
+                filter: filter,
+                index: index,
+                shown: shown,
+                sort: sort !== '' ? sort : this.c.emptyMessage,
+                total: total,
+                type: type
+            });
+        };
+        /**
+         * Adjusts the layout of the top row when the screen is resized
+         */
+        SearchPane.prototype._adjustTopRow = function () {
+            var subContainers = this.dom.container.find('.' + this.classes.subRowsContainer);
+            var subRow1 = this.dom.container.find('.dtsp-subRow1');
+            var subRow2 = this.dom.container.find('.dtsp-subRow2');
+            var topRow = this.dom.container.find('.' + this.classes.topRow);
+            // If the width is 0 then it is safe to assume that the pane has not yet been displayed.
+            //  Even if it has, if the width is 0 it won't make a difference if it has the narrow class or not
+            if (($(subContainers[0]).width() < 252 || $(topRow[0]).width() < 252) && $(subContainers[0]).width() !== 0) {
+                $(subContainers[0]).addClass(this.classes.narrow);
+                $(subRow1[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowSearch);
+                $(subRow2[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowButton);
+            }
+            else {
+                $(subContainers[0]).removeClass(this.classes.narrow);
+                $(subRow1[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowSearch);
+                $(subRow2[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowButton);
+            }
+        };
+        /**
+         * Method to construct the actual pane.
+         */
+        SearchPane.prototype._buildPane = function () {
+            var _this = this;
+            // Aliases
+            this.selections = [];
+            var table = this.s.dt;
+            var column = table.column(this.colExists ? this.s.index : 0);
+            var colOpts = this.s.colOpts;
+            var rowData = this.s.rowData;
+            // Other Variables
+            var countMessage = table.i18n('searchPanes.count', '{total}');
+            var filteredMessage = table.i18n('searchPanes.countFiltered', '{shown} ({total})');
+            var loadedFilter = table.state.loaded();
+            // If it is not a custom pane in place
+            if (this.colExists) {
+                var idx = -1;
+                if (loadedFilter && loadedFilter.searchPanes && loadedFilter.searchPanes.panes) {
+                    for (var i = 0; i < loadedFilter.searchPanes.panes.length; i++) {
+                        if (loadedFilter.searchPanes.panes[i].id === this.s.index) {
+                            idx = i;
+                            break;
+                        }
+                    }
+                }
+                // Perform checks that do not require populate pane to run
+                if ((colOpts.show === false
+                    || (colOpts.show !== undefined && colOpts.show !== true)) &&
+                    idx === -1) {
+                    this.dom.container.addClass(this.classes.hidden);
+                    this.s.displayed = false;
+                    return false;
+                }
+                else if (colOpts.show === true || idx !== -1) {
+                    this.s.displayed = true;
+                }
+                // Only run populatePane if the data has not been collected yet
+                if (rowData.arrayFilter.length === 0) {
+                    this._populatePane();
+                    if (loadedFilter && loadedFilter.searchPanes && loadedFilter.searchPanes.panes) {
+                        // If the index is not found then no data has been added to the state for this pane,
+                        //  which will only occur if it has previously failed to meet the criteria to be
+                        //  displayed, therefore we can just hide it again here
+                        if (idx !== -1) {
+                            rowData.binsOriginal = loadedFilter.searchPanes.panes[idx].bins;
+                            rowData.arrayOriginal = loadedFilter.searchPanes.panes[idx].arrayFilter;
+                        }
+                        else {
+                            this.dom.container.addClass(this.classes.hidden);
+                            this.s.displayed = false;
+                            return;
+                        }
+                    }
+                    else {
+                        rowData.arrayOriginal = rowData.arrayFilter;
+                        rowData.binsOriginal = rowData.bins;
+                    }
+                }
+                var binLength = Object.keys(rowData.binsOriginal).length;
+                var uniqueRatio = this._uniqueRatio(binLength, table.rows()[0].length);
+                // Don't show the pane if there isn't enough variance in the data, or there is only 1 entry for that pane
+                if (this.s.displayed === false && ((colOpts.show === undefined && colOpts.threshold === null ?
+                    uniqueRatio > this.c.threshold :
+                    uniqueRatio > colOpts.threshold)
+                    || (colOpts.show !== true && binLength <= 1))) {
+                    this.dom.container.addClass(this.classes.hidden);
+                    this.s.displayed = false;
+                    return;
+                }
+                // If the option viewTotal is true then find
+                // the total count for the whole table to display alongside the displayed count
+                if (this.c.viewTotal && rowData.arrayTotals.length === 0) {
+                    this._detailsPane();
+                }
+                else {
+                    rowData.binsTotal = rowData.bins;
+                }
+                this.dom.container.addClass(this.classes.show);
+                this.s.displayed = true;
+            }
+            else {
+                this.s.displayed = true;
+            }
+            // If the variance is accceptable then display the search pane
+            this._displayPane();
+            // Here, when the state is loaded if the data object on the original table is empty,
+            //  then a state.clear() must have occurred, so delete all of the panes tables state objects too.
+            this.dom.dtP.on('stateLoadParams.dt', function (e, settings, data) {
+                if ($.isEmptyObject(table.state.loaded())) {
+                    $.each(data, function (index, value) {
+                        delete data[index];
+                    });
+                }
+            });
+            // Declare the datatable for the pane
+            var errMode = $.fn.dataTable.ext.errMode;
+            $.fn.dataTable.ext.errMode = 'none';
+            var haveScroller = DataTable.Scroller;
+            this.s.dtPane = $(this.dom.dtP).DataTable($.extend(true, {
+                dom: 't',
+                columnDefs: [
+                    {
+                        className: 'dtsp-nameColumn',
+                        data: 'display',
+                        render: function (data, type, row) {
+                            if (type === 'sort') {
+                                return row.sort;
+                            }
+                            else if (type === 'type') {
+                                return row.type;
+                            }
+                            var message;
+                            _this.s.filteringActive && _this.c.viewTotal
+                                ? message = filteredMessage.replace(/{total}/, row.total)
+                                : message = countMessage.replace(/{total}/, row.total);
+                            message = message.replace(/{shown}/, row.shown);
+                            while (message.indexOf('{total}') !== -1) {
+                                message = message.replace(/{total}/, row.total);
+                            }
+                            while (message.indexOf('{shown}') !== -1) {
+                                message = message.replace(/{shown}/, row.shown);
+                            }
+                            // We are displaying the count in the same columne as the name of the search option.
+                            // This is so that there is not need to call columns.adjust(), which in turn speeds up the code
+                            var displayMessage = '';
+                            var pill = '<span class="' + _this.classes.pill + '">' + message + '</span>';
+                            if (_this.c.hideCount || colOpts.hideCount) {
+                                pill = '';
+                            }
+                            if (!_this.c.dataLength) {
+                                displayMessage = '<span class="' + _this.classes.name + '">' + data + '</span>' + pill;
+                            }
+                            else if (data.length > _this.c.dataLength) {
+                                displayMessage = '<span class="' + _this.classes.name + '">'
+                                    + data.substr(0, _this.c.dataLength) + '...'
+                                    + '</span>'
+                                    + pill;
+                            }
+                            else {
+                                displayMessage = '<span class="' + _this.classes.name + '">' + data + '</span>' + pill;
+                            }
+                            return displayMessage;
+                        },
+                        targets: 0,
+                        // Accessing the private datatables property to set type based on the original table.
+                        // This is null if not defined by the user, meaning that automatic type detection would take place
+                        type: table.settings()[0].aoColumns[this.s.index] !== undefined ?
+                            table.settings()[0].aoColumns[this.s.index]._sManualType :
+                            null
+                    },
+                    {
+                        className: 'dtsp-countColumn ' + this.classes.badgePill,
+                        data: 'total',
+                        targets: 1,
+                        visible: false
+                    }
+                ],
+                deferRender: true,
+                info: false,
+                paging: haveScroller ? true : false,
+                scrollY: '200px',
+                scroller: haveScroller ? true : false,
+                select: true,
+                stateSave: table.settings()[0].oFeatures.bStateSave ? true : false
+            }, this.c.dtOpts, colOpts !== undefined ? colOpts.dtOpts : {}, (this.customPaneSettings !== null && this.customPaneSettings.dtOpts !== undefined)
+                ? this.customPaneSettings.dtOpts
+                : {}));
+            $(this.dom.dtP).addClass(this.classes.table);
+            // This is hacky but necessary for when datatables is generating the column titles automatically
+            $(this.dom.searchBox).attr('placeholder', colOpts.header !== undefined
+                ? colOpts.header
+                : this.colExists
+                    ? table.settings()[0].aoColumns[this.s.index].sTitle
+                    : this.customPaneSettings.header || 'Custom Pane');
+            // As the pane table is not in the document yet we must initialise select ourselves
+            $.fn.dataTable.select.init(this.s.dtPane);
+            $.fn.dataTable.ext.errMode = errMode;
+            // If it is not a custom pane
+            if (this.colExists) {
+                // On initialisation, do we need to set a filtering value from a
+                // saved state or init option?
+                var search = column.search();
+                search = search ? search.substr(1, search.length - 2).split('|') : [];
+                // Count the number of empty cells
+                var count_1 = 0;
+                rowData.arrayFilter.forEach(function (element) {
+                    if (element.filter === '') {
+                        count_1++;
+                    }
+                });
+                // Add all of the search options to the pane
+                for (var i = 0, ien = rowData.arrayFilter.length; i < ien; i++) {
+                    if (rowData.arrayFilter[i] && (rowData.bins[rowData.arrayFilter[i].filter] !== undefined || !this.c.cascadePanes)) {
+                        var row = this._addRow(rowData.arrayFilter[i].display, rowData.arrayFilter[i].filter, rowData.bins[rowData.arrayFilter[i].filter], rowData.binsTotal[rowData.arrayFilter[i].filter], rowData.arrayFilter[i].sort, rowData.arrayFilter[i].type);
+                        if (colOpts.preSelect !== undefined && colOpts.preSelect.indexOf(rowData.arrayFilter[i].filter) !== -1) {
+                            row.select();
+                        }
+                    }
+                    else {
+                        this._addRow(this.c.emptyMessage, count_1, count_1, this.c.emptyMessage, this.c.emptyMessage, this.c.emptyMessage);
+                    }
+                }
+            }
+            // If there are custom options set or it is a custom pane then get them
+            if (colOpts.options !== undefined ||
+                (this.customPaneSettings !== null && this.customPaneSettings.options !== undefined)) {
+                this._getComparisonRows();
+            }
+            DataTable.select.init(this.s.dtPane);
+            // Display the pane
+            this.s.dtPane.draw();
+            // When an item is selected on the pane, add these to the array which holds selected items.
+            // Custom search will perform.
+            this.s.dtPane.on('select.dtsp', function () {
+                clearTimeout(t0);
+                $(_this.dom.clear).removeClass(_this.classes.dull);
+                _this.s.selectPresent = true;
+                if (!_this.s.updating) {
+                    _this._makeSelection();
+                }
+                _this.s.selectPresent = false;
+            });
+            // When saving the state store all of the selected rows for preselection next time around
+            this.s.dt.on('stateSaveParams.dtsp', function (e, settings, data) {
+                // If the data being passed in is empty then a state clear must have occured so clear the panes state as well
+                if ($.isEmptyObject(data)) {
+                    _this.s.dtPane.state.clear();
+                    return;
+                }
+                var selected = [];
+                var searchTerm;
+                var order;
+                var bins;
+                var arrayFilter;
+                // Get all of the data needed for the state save from the pane
+                if (_this.s.dtPane !== undefined) {
+                    selected = _this.s.dtPane.rows({ selected: true }).data().map(function (item) { return item.filter.toString(); }).toArray();
+                    searchTerm = $(_this.dom.searchBox).val();
+                    order = _this.s.dtPane.order();
+                    bins = rowData.binsOriginal;
+                    arrayFilter = rowData.arrayOriginal;
+                }
+                if (data.searchPanes === undefined) {
+                    data.searchPanes = {};
+                }
+                if (data.searchPanes.panes === undefined) {
+                    data.searchPanes.panes = [];
+                }
+                // Add the panes data to the state object
+                data.searchPanes.panes.push({
+                    arrayFilter: arrayFilter,
+                    bins: bins,
+                    id: _this.s.index,
+                    order: order,
+                    searchTerm: searchTerm,
+                    selected: selected
+                });
+            });
+            // Reload the selection, searchbox entry and ordering from the previous state
+            if (loadedFilter && loadedFilter.searchPanes && loadedFilter.searchPanes.panes) {
+                if (!this.c.cascadePanes) {
+                    this._reloadSelect(loadedFilter);
+                }
+                for (var _i = 0, _a = loadedFilter.searchPanes.panes; _i < _a.length; _i++) {
+                    var pane = _a[_i];
+                    if (pane.id === this.s.index) {
+                        $(this.dom.searchBox).val(pane.searchTerm);
+                        this.s.dt.order(pane.order);
+                    }
+                }
+            }
+            this.s.dtPane.on('user-select.dtsp', function (e, _dt, type, cell, originalEvent) {
+                originalEvent.stopPropagation();
+            });
+            // When the button to order by the name of the options is clicked then
+            //  change the ordering to whatever it isn't currently
+            $(this.dom.nameButton).on('click.dtsp', function () {
+                var currentOrder = _this.s.dtPane.order()[0][1];
+                _this.s.dtPane.order([0, currentOrder === 'asc' ? 'desc' : 'asc']).draw();
+            });
+            // When the button to order by the number of entries in the column is clicked then
+            //  change the ordering to whatever it isn't currently
+            $(this.dom.countButton).on('click.dtsp', function () {
+                var currentOrder = _this.s.dtPane.order()[0][1];
+                _this.s.dtPane.order([1, currentOrder === 'asc' ? 'desc' : 'asc']).draw();
+            });
+            // When the clear button is clicked reset the pane
+            $(this.dom.clear).on('click.dtsp', function () {
+                var searches = _this.dom.container.find('.' + _this.classes.search);
+                searches.each(function () {
+                    // set the value of the search box to be an empty string and then search on that, effectively reseting
+                    $(this).val('');
+                    $(this).trigger('input');
+                });
+                _this.clearPane();
+            });
+            // When the search button is clicked then draw focus to the search box
+            $(this.dom.searchButton).on('click.dtsp', function () {
+                $(_this.dom.searchBox).focus();
+            });
+            // When a character is inputted into the searchbox search the pane for matching values.
+            // Doing it this way means that no button has to be clicked to trigger a search, it is done asynchronously
+            $(this.dom.searchBox).on('input.dtsp', function () {
+                _this.s.dtPane.search($(_this.dom.searchBox).val()).draw();
+                _this.s.dt.state.save();
+            });
+            // Declare timeout Variable
+            var t0;
+            // When an item is deselected on the pane, re add the currently selected items to the array
+            // which holds selected items. Custom search will be performed.
+            this.s.dtPane.on('deselect.dtsp', function () {
+                t0 = setTimeout(function () {
+                    _this.s.deselect = true;
+                    if (_this.s.dtPane.rows({ selected: true }).data().toArray().length === 0) {
+                        $(_this.dom.clear).addClass(_this.classes.dull);
+                    }
+                    _this._makeSelection();
+                    _this.s.deselect = false;
+                    _this.s.dt.state.save();
+                }, 50);
+            });
+            // Make sure to save the state once the pane has been built
+            this.s.dt.state.save();
+            return true;
+        };
+        /**
+         * Update the array which holds the display and filter values for the table
+         */
+        SearchPane.prototype._detailsPane = function () {
+            var _this = this;
+            var table = this.s.dt;
+            this.s.rowData.arrayTotals = [];
+            this.s.rowData.binsTotal = {};
+            var settings = this.s.dt.settings()[0];
+            table.rows().every(function (rowIdx) {
+                _this._populatePaneArray(rowIdx, _this.s.rowData.arrayTotals, settings, _this.s.rowData.binsTotal);
+            });
+        };
+        /**
+         * Appends all of the HTML elements to their relevant parent Elements
+         */
+        SearchPane.prototype._displayPane = function () {
+            var container = this.dom.container;
+            var colOpts = this.s.colOpts;
+            var layVal = parseInt(this.c.layout.split('-')[1], 10);
+            //  Empty everything to start again
+            $(this.dom.topRow).empty();
+            $(this.dom.dtP).empty();
+            $(this.dom.topRow).addClass(this.classes.topRow);
+            // If there are more than 3 columns defined then make there be a smaller gap between the panes
+            if (layVal > 3) {
+                $(this.dom.container).addClass(this.classes.smallGap);
+            }
+            $(this.dom.topRow).addClass(this.classes.subRowsContainer);
+            $(this.dom.upper).appendTo(this.dom.topRow);
+            $(this.dom.lower).appendTo(this.dom.topRow);
+            $(this.dom.searchCont).appendTo(this.dom.upper);
+            $(this.dom.buttonGroup).appendTo(this.dom.lower);
+            // If no selections have been made in the pane then disable the clear button
+            if (this.c.dtOpts.searching === false ||
+                (colOpts.dtOpts !== undefined &&
+                    colOpts.dtOpts.searching === false) ||
+                (!this.c.controls || !colOpts.controls) ||
+                (this.customPaneSettings !== null &&
+                    this.customPaneSettings.dtOpts !== undefined &&
+                    this.customPaneSettings.dtOpts.searching !== undefined &&
+                    !this.customPaneSettings.dtOpts.searching)) {
+                $(this.dom.searchBox).attr('disabled', 'disabled')
+                    .removeClass(this.classes.paneInputButton)
+                    .addClass(this.classes.disabledButton);
+            }
+            $(this.dom.searchBox).appendTo(this.dom.searchCont);
+            // Create the contents of the searchCont div. Worth noting that this function will change when using semantic ui
+            this._searchContSetup();
+            // If the clear button is allowed to show then display it
+            if (this.c.clear && this.c.controls && colOpts.controls) {
+                $(this.dom.clear).appendTo(this.dom.buttonGroup);
+            }
+            if (this.c.orderable && colOpts.orderable && this.c.controls && colOpts.controls) {
+                $(this.dom.nameButton).appendTo(this.dom.buttonGroup);
+            }
+            // If the count column is hidden then don't display the ordering button for it
+            if (!this.c.hideCount &&
+                !colOpts.hideCount &&
+                this.c.orderable &&
+                colOpts.orderable &&
+                this.c.controls &&
+                colOpts.controls) {
+                $(this.dom.countButton).appendTo(this.dom.buttonGroup);
+            }
+            $(this.dom.topRow).prependTo(this.dom.container);
+            $(container).append(this.dom.dtP);
+            $(container).show();
+        };
+        /**
+         * Find the unique filter values in an array
+         * @param data empty array to populate with data which has not yet been found
+         * @param arrayFilter the array of all of the display and filter values for the table
+         */
+        SearchPane.prototype._findUnique = function (data, arrayFilter) {
+            var prev = [];
+            for (var _i = 0, arrayFilter_1 = arrayFilter; _i < arrayFilter_1.length; _i++) {
+                var filterEl = arrayFilter_1[_i];
+                // If the data has not already been processed then add it to the unique array and the previously processed array.
+                if (prev.indexOf(filterEl.filter) === -1) {
+                    data.push({
+                        display: filterEl.display,
+                        filter: filterEl.filter,
+                        sort: filterEl.sort,
+                        type: filterEl.type
+                    });
+                    prev.push(filterEl.filter);
+                }
+            }
+        };
+        /**
+         * Gets the options for the row for the customPanes
+         * @returns {object} The options for the row extended to include the options from the user.
+         */
+        SearchPane.prototype._getBonusOptions = function () {
+            // We need to reset the thresholds as if they have a value in colOpts then that value will be used
+            var defaultMutator = {
+                orthogonal: {
+                    threshold: null
+                },
+                threshold: null
+            };
+            return $.extend(true, {}, SearchPane.defaults, defaultMutator, this.c !== undefined ? this.c : {});
+        };
+        /**
+         * Adds the custom options to the pane
+         * @returns {Array} Returns the array of rows which have been added to the pane
+         */
+        SearchPane.prototype._getComparisonRows = function () {
+            var colOpts = this.s.colOpts;
+            // Find the appropriate options depending on whether this is a pane for a specific column or a custom pane
+            var options = colOpts.options !== undefined
+                ? colOpts.options
+                : this.customPaneSettings !== null && this.customPaneSettings.options !== undefined
+                    ? this.customPaneSettings.options
+                    : undefined;
+            if (options === undefined) {
+                return;
+            }
+            var tableVals = this.s.dt.rows({ search: 'applied' }).data().toArray();
+            var appRows = this.s.dt.rows({ search: 'applied' });
+            var tableValsTotal = this.s.dt.rows().data().toArray();
+            var allRows = this.s.dt.rows();
+            var rows = [];
+            // Clear all of the other rows from the pane, only custom options are to be displayed when they are defined
+            this.s.dtPane.clear();
+            for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {
+                var comp = options_1[_i];
+                // Initialise the object which is to be placed in the row
+                var insert = comp.label !== '' ? comp.label : this.c.emptyMessage;
+                var comparisonObj = {
+                    display: insert,
+                    filter: typeof comp.value === 'function' ? comp.value : [],
+                    shown: 0,
+                    sort: insert,
+                    total: 0,
+                    type: insert
+                };
+                // If a custom function is in place
+                if (typeof comp.value === 'function') {
+                    // Count the number of times the function evaluates to true for the data currently being displayed
+                    for (var tVal = 0; tVal < tableVals.length; tVal++) {
+                        if (comp.value.call(this.s.dt, tableVals[tVal], appRows[0][tVal])) {
+                            comparisonObj.shown++;
+                        }
+                    }
+                    // Count the number of times the function evaluates to true for the original data in the Table
+                    for (var i = 0; i < tableValsTotal.length; i++) {
+                        if (comp.value.call(this.s.dt, tableValsTotal[i], allRows[0][i])) {
+                            comparisonObj.total++;
+                        }
+                    }
+                    // Update the comparisonObj
+                    if (typeof comparisonObj.filter !== 'function') {
+                        comparisonObj.filter.push(comp.filter);
+                    }
+                }
+                // If cascadePanes is not active or if it is and the comparisonObj should be shown then add it to the pane
+                if (!this.c.cascadePanes || (this.c.cascadePanes && comparisonObj.shown !== 0)) {
+                    rows.push(this._addRow(comparisonObj.display, comparisonObj.filter, comparisonObj.shown, comparisonObj.total, comparisonObj.sort, comparisonObj.type));
+                }
+            }
+            return rows;
+        };
+        /**
+         * Gets the options for the row for the customPanes
+         * @returns {object} The options for the row extended to include the options from the user.
+         */
+        SearchPane.prototype._getOptions = function () {
+            var table = this.s.dt;
+            // We need to reset the thresholds as if they have a value in colOpts then that value will be used
+            var defaultMutator = {
+                orthogonal: {
+                    threshold: null
+                },
+                threshold: null
+            };
+            return $.extend(true, {}, SearchPane.defaults, defaultMutator, table.settings()[0].aoColumns[this.s.index].searchPanes);
+        };
+        /**
+         * This method allows for changes to the panes and table to be made when a selection or a deselection occurs
+         * @param select Denotes whether a selection has been made or not
+         */
+        SearchPane.prototype._makeSelection = function () {
+            this.updateTable();
+            this.s.updating = true;
+            this.s.dt.draw();
+            this.s.updating = false;
+        };
+        /**
+         * Fill the array with the values that are currently being displayed in the table
+         */
+        SearchPane.prototype._populatePane = function () {
+            var table = this.s.dt;
+            this.s.rowData.arrayFilter = [];
+            this.s.rowData.bins = {};
+            var settings = this.s.dt.settings()[0];
+            // If cascadePanes or viewTotal are active it is necessary to get the data which is currently
+            //  being displayed for their functionality.
+            var indexArray = (this.c.cascadePanes || this.c.viewTotal) && !this.s.clearing ?
+                table.rows({ search: 'applied' }).indexes() :
+                table.rows().indexes();
+            for (var _i = 0, indexArray_1 = indexArray; _i < indexArray_1.length; _i++) {
+                var index = indexArray_1[_i];
+                this._populatePaneArray(index, this.s.rowData.arrayFilter, settings);
+            }
+        };
+        /**
+         * Populates an array with all of the data for the table
+         * @param rowIdx The current row index to be compared
+         * @param arrayFilter The array that is to be populated with row Details
+         * @param bins The bins object that is to be populated with the row counts
+         */
+        SearchPane.prototype._populatePaneArray = function (rowIdx, arrayFilter, settings, bins) {
+            if (bins === void 0) { bins = this.s.rowData.bins; }
+            var colOpts = this.s.colOpts;
+            // Retrieve the rendered data from the cell using the fnGetCellData function
+            //  rather than the cell().render API method for optimisation
+            if (typeof colOpts.orthogonal === 'string') {
+                var rendered = settings.oApi._fnGetCellData(settings, rowIdx, this.s.index, colOpts.orthogonal);
+                this.s.rowData.filterMap.set(rowIdx, rendered);
+                this._addOption(rendered, rendered, rendered, rendered, arrayFilter, bins);
+            }
+            else {
+                var filter = settings.oApi._fnGetCellData(settings, rowIdx, this.s.index, colOpts.orthogonal.search);
+                this.s.rowData.filterMap.set(rowIdx, filter);
+                if (!bins[filter]) {
+                    bins[filter] = 1;
+                    this._addOption(filter, settings.oApi._fnGetCellData(settings, rowIdx, this.s.index, colOpts.orthogonal.display), settings.oApi._fnGetCellData(settings, rowIdx, this.s.index, colOpts.orthogonal.sort), settings.oApi._fnGetCellData(settings, rowIdx, this.s.index, colOpts.orthogonal.type), arrayFilter, bins);
+                }
+                else {
+                    bins[filter]++;
+                    return;
+                }
+            }
+        };
+        /**
+         * Reloads all of the previous selects into the panes
+         * @param loadedFilter The loaded filters from a previous state
+         */
+        SearchPane.prototype._reloadSelect = function (loadedFilter) {
+            // If the state was not saved don't selected any
+            if (loadedFilter === undefined) {
+                return;
+            }
+            var idx;
+            // For each pane, check that the loadedFilter list exists and is not null,
+            // find the id of each search item and set it to be selected.
+            for (var i = 0; i < loadedFilter.searchPanes.panes.length; i++) {
+                if (loadedFilter.searchPanes.panes[i].id === this.s.index) {
+                    idx = i;
+                    break;
+                }
+            }
+            if (idx !== undefined) {
+                var table = this.s.dtPane;
+                var rows = table.rows({ order: 'index' }).data().map(function (item) { return item.filter !== null ?
+                    item.filter.toString() :
+                    null; }).toArray();
+                for (var _i = 0, _a = loadedFilter.searchPanes.panes[idx].selected; _i < _a.length; _i++) {
+                    var filter = _a[_i];
+                    var id = -1;
+                    if (filter !== null) {
+                        id = rows.indexOf(filter.toString());
+                    }
+                    if (id > -1) {
+                        table.row(id).select();
+                        this.s.dt.state.save();
+                    }
+                }
+            }
+        };
+        /**
+         * This method decides whether a row should contribute to the pane or not
+         * @param filter the value that the row is to be filtered on
+         * @param dataIndex the row index
+         */
+        SearchPane.prototype._search = function (filter, dataIndex) {
+            var colOpts = this.s.colOpts;
+            var table = this.s.dt;
+            // For each item selected in the pane, check if it is available in the cell
+            for (var _i = 0, _a = this.selections; _i < _a.length; _i++) {
+                var colSelect = _a[_i];
+                // if the filter is an array then is the column present in it
+                if (Array.isArray(filter)) {
+                    if (filter.indexOf(colSelect.filter) !== -1) {
+                        return true;
+                    }
+                }
+                // if the filter is a function then does it meet the criteria of that function or not
+                else if (typeof colSelect.filter === 'function') {
+                    if (colSelect.filter.call(table, table.row(dataIndex).data(), dataIndex)) {
+                        if (!this.s.redraw) {
+                            this.updatePane();
+                        }
+                        if (colOpts.combiner === 'or') {
+                            return true;
+                        }
+                    }
+                    // If the combiner is an "and" then we need to check against all possible selections
+                    //  so if it fails here then the and is not met and return false
+                    else if (colOpts.combiner === 'and') {
+                        return false;
+                    }
+                }
+                // otherwise if the two filter values are equal then return true
+                else if (filter === colSelect.filter) {
+                    return true;
+                }
+            }
+            // If the combiner is an and then we need to check against all possible selections
+            //  so return true here if so because it would have returned false earlier if it had failed
+            if (colOpts.combiner === 'and') {
+                return true;
+            }
+            // Otherwise it hasn't matched with anything by this point so it must be false
+            else {
+                return false;
+            }
+        };
+        /**
+         * Creates the contents of the searchCont div
+         *
+         * NOTE This is overridden when semantic ui styling in order to integrate the search button into the text box.
+         */
+        SearchPane.prototype._searchContSetup = function () {
+            if (this.c.controls && this.s.colOpts.controls) {
+                $(this.dom.searchButton).appendTo(this.dom.searchLabelCont);
+            }
+            if (!(this.c.dtOpts.searching === false ||
+                this.s.colOpts.dtOpts.searching === false ||
+                (this.customPaneSettings !== null &&
+                    this.customPaneSettings.dtOpts !== undefined &&
+                    this.customPaneSettings.dtOpts.searching !== undefined &&
+                    !this.customPaneSettings.dtOpts.searching))) {
+                $(this.dom.searchLabelCont).appendTo(this.dom.searchCont);
+            }
+        };
+        /**
+         * Adds outline to the pane when a selection has been made
+         */
+        SearchPane.prototype._searchExtras = function () {
+            var updating = this.s.updating;
+            this.s.updating = true;
+            var filters = this.s.dtPane.rows({ selected: true }).data().pluck('filter').toArray();
+            var nullIndex = filters.indexOf(this.c.emptyMessage);
+            var container = $(this.s.dtPane.table().container());
+            // If null index is found then search for empty cells as a filter.
+            if (nullIndex > -1) {
+                filters[nullIndex] = '';
+            }
+            // If a filter has been applied then outline the respective pane, remove it when it no longer is.
+            if (filters.length > 0) {
+                container.addClass(this.classes.selected);
+            }
+            else if (filters.length === 0) {
+                container.removeClass(this.classes.selected);
+            }
+            this.s.updating = updating;
+        };
+        /**
+         * Finds the ratio of the number of different options in the table to the number of rows
+         * @param bins the number of different options in the table
+         * @param rowCount the total number of rows in the table
+         * @returns {number} returns the ratio
+         */
+        SearchPane.prototype._uniqueRatio = function (bins, rowCount) {
+            if (rowCount > 0) {
+                return bins / rowCount;
+            }
+            else {
+                return 1;
+            }
+        };
+        /**
+         * updates the options within the pane
+         * @param draw a flag to define whether this has been called due to a draw event or not
+         */
+        SearchPane.prototype._updateCommon = function (draw) {
+            if (draw === void 0) { draw = false; }
+            // Update the panes if doing a deselect. if doing a select then
+            // update all of the panes except for the one causing the change
+            if (this.s.dtPane !== undefined &&
+                ((!this.s.filteringActive || this.c.cascadePanes) || draw === true) &&
+                (this.c.cascadePanes !== true || this.s.selectPresent !== true) && !this.s.lastSelect) {
+                var colOpts = this.s.colOpts;
+                var selected = this.s.dtPane.rows({ selected: true }).data().toArray();
+                var scrollTop = $(this.s.dtPane.table().node()).parent()[0].scrollTop;
+                var rowData = this.s.rowData;
+                // Clear the pane in preparation for adding the updated search options
+                this.s.dtPane.clear();
+                // If it is not a custom pane
+                if (this.colExists) {
+                    // Only run populatePane if the data has not been collected yet
+                    if (rowData.arrayFilter.length === 0) {
+                        this._populatePane();
+                    }
+                    // If cascadePanes is active and the table has returned to its default state then
+                    //  there is a need to update certain parts ofthe rowData.
+                    else if (this.c.cascadePanes
+                        && this.s.dt.rows().data().toArray().length === this.s.dt.rows({ search: 'applied' }).data().toArray().length) {
+                        rowData.arrayFilter = rowData.arrayOriginal;
+                        rowData.bins = rowData.binsOriginal;
+                    }
+                    // Otherwise if viewTotal or cascadePanes is active then the data from the table must be read.
+                    else if (this.c.viewTotal || this.c.cascadePanes) {
+                        this._populatePane();
+                    }
+                    // If the viewTotal option is selected then find the totals for the table
+                    if (this.c.viewTotal) {
+                        this._detailsPane();
+                    }
+                    else {
+                        rowData.binsTotal = rowData.bins;
+                    }
+                    if (this.c.viewTotal && !this.c.cascadePanes) {
+                        rowData.arrayFilter = rowData.arrayTotals;
+                    }
+                    var _loop_1 = function (dataP) {
+                        // If both view Total and cascadePanes have been selected and the count of the row is not 0 then add it to pane
+                        // Do this also if the viewTotal option has been selected and cascadePanes has not
+                        if (dataP && ((rowData.bins[dataP.filter] !== undefined && rowData.bins[dataP.filter] !== 0 && this_1.c.cascadePanes)
+                            || !this_1.c.cascadePanes
+                            || this_1.s.clearing)) {
+                            var row = this_1._addRow(dataP.display, dataP.filter, !this_1.c.viewTotal
+                                ? rowData.bins[dataP.filter]
+                                : rowData.bins[dataP.filter] !== undefined
+                                    ? rowData.bins[dataP.filter]
+                                    : 0, this_1.c.viewTotal
+                                ? String(rowData.binsTotal[dataP.filter])
+                                : rowData.bins[dataP.filter], dataP.sort, dataP.type);
+                            // Find out if the filter was selected in the previous search, if so select it and remove from array.
+                            var selectIndex = selected.findIndex(function (element) {
+                                return element.filter === dataP.filter;
+                            });
+                            if (selectIndex !== -1) {
+                                row.select();
+                                selected.splice(selectIndex, 1);
+                            }
+                        }
+                    };
+                    var this_1 = this;
+                    for (var _i = 0, _a = rowData.arrayFilter; _i < _a.length; _i++) {
+                        var dataP = _a[_i];
+                        _loop_1(dataP);
+                    }
+                }
+                if ((colOpts.searchPanes !== undefined && colOpts.searchPanes.options !== undefined) ||
+                    colOpts.options !== undefined ||
+                    (this.customPaneSettings !== null && this.customPaneSettings.options !== undefined)) {
+                    var rows = this._getComparisonRows();
+                    var _loop_2 = function (row) {
+                        var selectIndex = selected.findIndex(function (element) {
+                            if (element.display === row.data().display) {
+                                return true;
+                            }
+                        });
+                        if (selectIndex !== -1) {
+                            row.select();
+                            selected.splice(selectIndex, 1);
+                        }
+                    };
+                    for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {
+                        var row = rows_1[_b];
+                        _loop_2(row);
+                    }
+                }
+                // Add search options which were previously selected but whos results are no
+                // longer present in the resulting data set.
+                for (var _c = 0, selected_1 = selected; _c < selected_1.length; _c++) {
+                    var selectedEl = selected_1[_c];
+                    var row = this._addRow(selectedEl.display, selectedEl.filter, 0, this.c.viewTotal
+                        ? selectedEl.total
+                        : 0, selectedEl.filter, selectedEl.filter);
+                    row.select();
+                }
+                this.s.dtPane.draw();
+                this.s.dtPane.table().node().parentNode.scrollTop = scrollTop;
+            }
+        };
+        SearchPane.version = '1.0.1';
+        SearchPane.classes = {
+            buttonGroup: 'dtsp-buttonGroup',
+            buttonSub: 'dtsp-buttonSub',
+            clear: 'dtsp-clear',
+            clearAll: 'dtsp-clearAll',
+            clearButton: 'clearButton',
+            container: 'dtsp-searchPane',
+            countButton: 'dtsp-countButton',
+            disabledButton: 'dtsp-disabledButton',
+            dull: 'dtsp-dull',
+            hidden: 'dtsp-hidden',
+            hide: 'dtsp-hide',
+            layout: 'dtsp-',
+            name: 'dtsp-name',
+            nameButton: 'dtsp-nameButton',
+            narrow: 'dtsp-narrow',
+            paneButton: 'dtsp-paneButton',
+            paneInputButton: 'dtsp-paneInputButton',
+            pill: 'dtsp-pill',
+            search: 'dtsp-search',
+            searchCont: 'dtsp-searchCont',
+            searchIcon: 'dtsp-searchIcon',
+            searchLabelCont: 'dtsp-searchButtonCont',
+            selected: 'dtsp-selected',
+            smallGap: 'dtsp-smallGap',
+            subRow1: 'dtsp-subRow1',
+            subRow2: 'dtsp-subRow2',
+            subRowsContainer: 'dtsp-subRowsContainer',
+            title: 'dtsp-title',
+            topRow: 'dtsp-topRow'
+        };
+        // Define SearchPanes default options
+        SearchPane.defaults = {
+            cascadePanes: false,
+            clear: true,
+            combiner: 'or',
+            controls: true,
+            container: function (dt) {
+                return dt.table().container();
+            },
+            dataLength: 30,
+            dtOpts: {},
+            emptyMessage: '<i>No Data</i>',
+            hideCount: false,
+            layout: 'columns-3',
+            orderable: true,
+            orthogonal: {
+                display: 'display',
+                hideCount: false,
+                search: 'filter',
+                show: undefined,
+                sort: 'sort',
+                threshold: 0.6,
+                type: 'type'
+            },
+            preSelect: [],
+            threshold: 0.6,
+            viewTotal: false
+        };
+        return SearchPane;
+    }());
+
+    var DataTable$1 = $.fn.dataTable;
+    var SearchPanes = /** @class */ (function () {
+        function SearchPanes(paneSettings, opts, fromInit) {
+            var _this = this;
+            if (fromInit === void 0) { fromInit = false; }
+            this.regenerating = false;
+            // Check that the required version of DataTables is included
+            if (!DataTable$1 || !DataTable$1.versionCheck || !DataTable$1.versionCheck('1.10.0')) {
+                throw new Error('SearchPane requires DataTables 1.10 or newer');
+            }
+            // Check that Select is included
+            if (!DataTable$1.select) {
+                throw new Error('SearchPane requires Select');
+            }
+            var table = new DataTable$1.Api(paneSettings);
+            this.classes = $.extend(true, {}, SearchPanes.classes);
+            // Get options from user
+            this.c = $.extend(true, {}, SearchPanes.defaults, opts);
+            // Add extra elements to DOM object including clear
+            this.dom = {
+                clearAll: $('<button type="button">Clear All</button>').addClass(this.classes.clearAll),
+                container: $('<div/>').addClass(this.classes.panes).text(table.i18n('searchPanes.loadMessage', 'Loading Search Panes...')),
+                emptyMessage: $('<div/>').addClass(this.classes.emptyMessage),
+                options: $('<div/>').addClass(this.classes.container),
+                panes: $('<div/>').addClass(this.classes.container),
+                title: $('<div/>').addClass(this.classes.title),
+                titleRow: $('<div/>').addClass(this.classes.titleRow),
+                wrapper: $('<div/>')
+            };
+            this.s = {
+                colOpts: [],
+                dt: table,
+                filterPane: -1,
+                panes: [],
+                selectionList: [],
+                updating: false
+            };
+            table.settings()[0]._searchPanes = this;
+            this.dom.clearAll.text(table.i18n('searchPanes.clearMessage', 'Clear All'));
+            this._getState();
+            if (this.s.dt.settings()[0]._bInitComplete || fromInit) {
+                this._paneDeclare(table, paneSettings, opts);
+            }
+            else {
+                table.on('preInit.dt', function () {
+                    _this._paneDeclare(table, paneSettings, opts);
+                });
+            }
+        }
+        /**
+         * Clear the selections of all of the panes
+         */
+        SearchPanes.prototype.clearSelections = function () {
+            // Load in all of the searchBoxes in the documents
+            var searches = this.dom.container.find(this.classes.search);
+            // For each searchBox set the input text to be empty and then trigger
+            //  an input on them so that they no longer filter the panes
+            searches.each(function () {
+                $(this).val('');
+                $(this).trigger('input');
+            });
+            var returnArray = [];
+            // For every pane, clear the selections in the pane
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                if (pane.s.dtPane !== undefined) {
+                    returnArray.push(pane.clearPane());
+                }
+            }
+            this.s.dt.draw();
+            return returnArray;
+        };
+        /**
+         * returns the container node for the searchPanes
+         */
+        SearchPanes.prototype.getNode = function () {
+            return this.dom.container;
+        };
+        /**
+         * rebuilds all of the panes
+         */
+        SearchPanes.prototype.rebuild = function (targetIdx) {
+            if (targetIdx === void 0) { targetIdx = false; }
+            $(this.dom.emptyMessage).remove();
+            // As a rebuild from scratch is required, empty the searchpanes container.
+            var returnArray = [];
+            this.clearSelections();
+            // Rebuild each pane individually, if a specific pane has been selected then only rebuild that one
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                if (targetIdx !== false && pane.s.index !== targetIdx) {
+                    continue;
+                }
+                pane.clearData();
+                returnArray.push(pane.rebuildPane());
+            }
+            // Attach panes, clear buttons, and title bar to the document
+            this._updateFilterCount();
+            this._attachPaneContainer();
+            // If a single pane has been rebuilt then return only that pane
+            if (returnArray.length === 1) {
+                return returnArray[0];
+            }
+            // Otherwise return all of the panes that have been rebuilt
+            else {
+                return returnArray;
+            }
+        };
+        /**
+         * Redraws all of the panes
+         */
+        SearchPanes.prototype.redrawPanes = function () {
+            var table = this.s.dt;
+            // Only do this if the redraw isn't being triggered by the panes updating themselves
+            if (!this.s.updating) {
+                var filterActive = true;
+                var filterPane = this.s.filterPane;
+                // If the number of rows currently visible is equal to the number of rows in the table
+                //  then there can't be any filtering taking place
+                if (table.rows({ search: 'applied' }).data().toArray().length === table.rows().data().toArray().length) {
+                    filterActive = false;
+                }
+                // Otherwise if viewTotal is active then it is necessary to determine which panes a select is present in.
+                //  If there is only one pane with a selection present then it should not show the filtered message as
+                //  more selections may be made in that pane.
+                else if (this.c.viewTotal) {
+                    for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                        var pane = _a[_i];
+                        if (pane.s.dtPane !== undefined) {
+                            var selectLength = pane.s.dtPane.rows({ selected: true }).data().toArray().length;
+                            // If filterPane === -1 then a pane with a selection has not been found yet, so set filterPane to that panes index
+                            if (selectLength > 0 && filterPane === -1) {
+                                filterPane = pane.s.index;
+                            }
+                            // Then if another pane is found with a selection then set filterPane to null to
+                            //  show that multiple panes have selections present
+                            else if (selectLength > 0) {
+                                filterPane = null;
+                            }
+                        }
+                    }
+                }
+                var deselectIdx = void 0;
+                var newSelectionList = [];
+                // Don't run this if it is due to the panes regenerating
+                if (!this.regenerating) {
+                    for (var _b = 0, _c = this.s.panes; _b < _c.length; _b++) {
+                        var pane = _c[_b];
+                        // Identify the pane where a selection or deselection has been made and add it to the list.
+                        if (pane.s.selectPresent) {
+                            this.s.selectionList.push({ index: pane.s.index, rows: pane.s.dtPane.rows({ selected: true }).data().toArray(), protect: false });
+                            table.state.save();
+                            break;
+                        }
+                        else if (pane.s.deselect) {
+                            deselectIdx = pane.s.index;
+                            var selectedData = pane.s.dtPane.rows({ selected: true }).data().toArray();
+                            if (selectedData.length > 0) {
+                                this.s.selectionList.push({ index: pane.s.index, rows: selectedData, protect: true });
+                            }
+                        }
+                    }
+                    if (this.s.selectionList.length > 0) {
+                        var last = this.s.selectionList[this.s.selectionList.length - 1].index;
+                        for (var _d = 0, _e = this.s.panes; _d < _e.length; _d++) {
+                            var pane = _e[_d];
+                            pane.s.lastSelect = (pane.s.index === last && this.s.selectionList.length === 1);
+                        }
+                    }
+                    // Remove selections from the list from the pane where a deselect has taken place
+                    for (var i = 0; i < this.s.selectionList.length; i++) {
+                        if (this.s.selectionList[i].index !== deselectIdx || this.s.selectionList[i].protect === true) {
+                            var further = false;
+                            // Find out if this selection is the last one in the list for that pane
+                            for (var j = i + 1; j < this.s.selectionList.length; j++) {
+                                if (this.s.selectionList[j].index === this.s.selectionList[i].index) {
+                                    further = true;
+                                }
+                            }
+                            // If there are no selections for this pane in the list then just push this one
+                            if (!further) {
+                                newSelectionList.push(this.s.selectionList[i]);
+                                this.s.selectionList[i].protect = false;
+                            }
+                        }
+                    }
+                    // Update all of the panes to reflect the current state of the filters
+                    for (var _f = 0, _g = this.s.panes; _f < _g.length; _f++) {
+                        var pane = _g[_f];
+                        if (pane.s.dtPane !== undefined) {
+                            var tempFilter = true;
+                            pane.s.filteringActive = true;
+                            if ((filterPane !== -1 && filterPane !== null && filterPane === pane.s.index) || filterActive === false) {
+                                tempFilter = false;
+                                pane.s.filteringActive = false;
+                            }
+                            pane.updatePane(!tempFilter ? false : filterActive);
+                        }
+                    }
+                    // Update the label that shows how many filters are in place
+                    this._updateFilterCount();
+                    // If the length of the selections are different then some of them have been removed and a deselect has occured
+                    if (newSelectionList.length > 0 && newSelectionList.length < this.s.selectionList.length) {
+                        this._cascadeRegen(newSelectionList);
+                        var last = newSelectionList[newSelectionList.length - 1].index;
+                        for (var _h = 0, _j = this.s.panes; _h < _j.length; _h++) {
+                            var pane = _j[_h];
+                            pane.s.lastSelect = (pane.s.index === last && this.s.selectionList.length === 1);
+                        }
+                    }
+                    else if (newSelectionList.length > 0) {
+                        // Update all of the other panes as you would just making a normal selection
+                        for (var _k = 0, _l = this.s.panes; _k < _l.length; _k++) {
+                            var paneUpdate = _l[_k];
+                            if (paneUpdate.s.dtPane !== undefined) {
+                                var tempFilter = true;
+                                paneUpdate.s.filteringActive = true;
+                                if ((filterPane !== -1 && filterPane !== null && filterPane === paneUpdate.s.index) || filterActive === false) {
+                                    tempFilter = false;
+                                    paneUpdate.s.filteringActive = false;
+                                }
+                                paneUpdate.updatePane(!tempFilter ? tempFilter : filterActive);
+                            }
+                        }
+                    }
+                }
+                else {
+                    for (var _m = 0, _o = this.s.panes; _m < _o.length; _m++) {
+                        var pane = _o[_m];
+                        if (pane.s.dtPane !== undefined) {
+                            var tempFilter = true;
+                            pane.s.filteringActive = true;
+                            if ((filterPane !== -1 && filterPane !== null && filterPane === pane.s.index) || filterActive === false) {
+                                tempFilter = false;
+                                pane.s.filteringActive = false;
+                            }
+                            pane.updatePane(!tempFilter ? tempFilter : filterActive);
+                        }
+                    }
+                    // Update the label that shows how many filters are in place
+                    this._updateFilterCount();
+                }
+                if (!filterActive) {
+                    this.s.selectionList = [];
+                }
+            }
+        };
+        /**
+         * Attach the panes, buttons and title to the document
+         */
+        SearchPanes.prototype._attach = function () {
+            $(this.dom.container).removeClass(this.classes.hide);
+            $(this.dom.titleRow).removeClass(this.classes.hide);
+            $(this.dom.titleRow).remove();
+            $(this.dom.title).appendTo(this.dom.titleRow);
+            // If the clear button is permitted attach it
+            if (this.c.clear) {
+                $(this.dom.clearAll).appendTo(this.dom.titleRow);
+            }
+            $(this.dom.titleRow).appendTo(this.dom.container);
+            // Attach the container for each individual pane to the overall container
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                $(pane.dom.container).appendTo(this.dom.panes);
+            }
+            // Attach everything to the document
+            $(this.dom.panes).appendTo(this.dom.container);
+            if ($('div.' + this.classes.container).length === 0) {
+                $(this.dom.container).prependTo(this.s.dt);
+            }
+            return this.dom.container;
+        };
+        /**
+         * Attach the top row containing the filter count and clear all button
+         */
+        SearchPanes.prototype._attachExtras = function () {
+            $(this.dom.container).removeClass(this.classes.hide);
+            $(this.dom.titleRow).removeClass(this.classes.hide);
+            $(this.dom.titleRow).remove();
+            $(this.dom.title).appendTo(this.dom.titleRow);
+            // If the clear button is permitted attach it
+            if (this.c.clear) {
+                $(this.dom.clearAll).appendTo(this.dom.titleRow);
+            }
+            $(this.dom.titleRow).appendTo(this.dom.container);
+            return this.dom.container;
+        };
+        /**
+         * If there are no panes to display then this method is called to either
+         *   display a message in their place or hide them completely.
+         */
+        SearchPanes.prototype._attachMessage = function () {
+            // Create a message to display on the screen
+            var message;
+            try {
+                message = this.s.dt.i18n('searchPanes.emptyPanes', 'No SearchPanes');
+            }
+            catch (error) {
+                message = null;
+            }
+            // If the message is an empty string then searchPanes.emptyPanes is undefined,
+            //  therefore the pane container should be removed from the display
+            if (message === null) {
+                $(this.dom.container).addClass(this.classes.hide);
+                $(this.dom.titleRow).removeClass(this.classes.hide);
+                return;
+            }
+            else {
+                $(this.dom.container).removeClass(this.classes.hide);
+                $(this.dom.titleRow).addClass(this.classes.hide);
+            }
+            // Otherwise display the message
+            $(this.dom.emptyMessage).text(message);
+            this.dom.emptyMessage.appendTo(this.dom.container);
+            return this.dom.container;
+        };
+        /**
+         * Attaches the panes to the document and displays a message or hides if there are none
+         */
+        SearchPanes.prototype._attachPaneContainer = function () {
+            // If a pane is to be displayed then attach the normal pane output
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                if (pane.s.displayed === true) {
+                    return this._attach();
+                }
+            }
+            // Otherwise attach the custom message or remove the container from the display
+            return this._attachMessage();
+        };
+        /**
+         * Prepares the panes for selections to be made when cascade is active and a deselect has occured
+         * @param newSelectionList the list of selections which are to be made
+         */
+        SearchPanes.prototype._cascadeRegen = function (newSelectionList) {
+            // Set this to true so that the actions taken do not cause this to run until it is finished
+            this.regenerating = true;
+            // If only one pane has been selected then take note of its index
+            var solePane = -1;
+            if (newSelectionList.length === 1) {
+                solePane = newSelectionList[0].index;
+            }
+            // Let the pane know that a cascadeRegen is taking place to avoid unexpected behaviour
+            //  and clear all of the previous selections in the pane
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                pane.setCascadeRegen(true);
+                pane.setClear(true);
+                // If this is the same as the pane with the only selection then pass it as a parameter into clearPane
+                if ((pane.s.dtPane !== undefined && pane.s.index === solePane) || pane.s.dtPane !== undefined) {
+                    pane.clearPane();
+                }
+                pane.setClear(false);
+            }
+            // Remake Selections
+            this._makeCascadeSelections(newSelectionList);
+            // Set the selection list property to be the list without the selections from the deselect pane
+            this.s.selectionList = newSelectionList;
+            // The regeneration of selections is over so set it back to false
+            for (var _b = 0, _c = this.s.panes; _b < _c.length; _b++) {
+                var pane = _c[_b];
+                pane.setCascadeRegen(false);
+            }
+            this.regenerating = false;
+        };
+        /**
+         * Attaches the message to the document but does not add any panes
+         */
+        SearchPanes.prototype._checkMessage = function () {
+            // If a pane is to be displayed then attach the normal pane output
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                if (pane.s.displayed === true) {
+                    return;
+                }
+            }
+            // Otherwise attach the custom message or remove the container from the display
+            return this._attachMessage();
+        };
+        /**
+         * Gets the selection list from the previous state and stores it in the selectionList Property
+         */
+        SearchPanes.prototype._getState = function () {
+            var loadedFilter = this.s.dt.state.loaded();
+            if (loadedFilter && loadedFilter.searchPanes && loadedFilter.searchPanes.selectionList !== undefined) {
+                this.s.selectionList = loadedFilter.searchPanes.selectionList;
+            }
+        };
+        /**
+         * Makes all of the selections when cascade is active
+         * @param newSelectionList the list of selections to be made, in the order they were originally selected
+         */
+        SearchPanes.prototype._makeCascadeSelections = function (newSelectionList) {
+            // make selections in the order they were made previously, excluding those from the pane where a deselect was made
+            for (var _i = 0, newSelectionList_1 = newSelectionList; _i < newSelectionList_1.length; _i++) {
+                var selection = newSelectionList_1[_i];
+                var _loop_1 = function (pane) {
+                    if (pane.s.index === selection.index && pane.s.dtPane !== undefined) {
+                        // if there are any selections currently in the pane then deselect them as we are about to make our new selections
+                        if (pane.s.dtPane.rows({ selected: true }).data().toArray().length > 0 && pane.s.dtPane !== undefined) {
+                            pane.setClear(true);
+                            pane.clearPane();
+                            pane.setClear(false);
+                        }
+                        var _loop_2 = function (row) {
+                            pane.s.dtPane.rows().every(function (rowIdx) {
+                                if (pane.s.dtPane.row(rowIdx).data().filter === row.filter) {
+                                    pane.s.dtPane.row(rowIdx).select();
+                                }
+                            });
+                        };
+                        // select every row in the pane that was selected previously
+                        for (var _i = 0, _a = selection.rows; _i < _a.length; _i++) {
+                            var row = _a[_i];
+                            _loop_2(row);
+                        }
+                        // Update the label that shows how many filters are in place
+                        this_1._updateFilterCount();
+                    }
+                };
+                var this_1 = this;
+                // As the selections may have been made across the panes in a different order to the pane index we must identify
+                //  which pane has the index of the selection. This is also important for colreorder etc
+                for (var _a = 0, _b = this.s.panes; _a < _b.length; _a++) {
+                    var pane = _b[_a];
+                    _loop_1(pane);
+                }
+            }
+            // Make sure that the state is saved after all of these selections
+            this.s.dt.state.save();
+        };
+        /**
+         * Declares the instances of individual searchpanes dependant on the number of columns.
+         * It is necessary to run this once preInit has completed otherwise no panes will be
+         *  created as the column count will be 0.
+         * @param table the DataTable api for the parent table
+         * @param paneSettings the settings passed into the constructor
+         * @param opts the options passed into the constructor
+         */
+        SearchPanes.prototype._paneDeclare = function (table, paneSettings, opts) {
+            var _this = this;
+            // Create Panes
+            table
+                .columns(this.c.columns.length > 0 ? this.c.columns : undefined)
+                .eq(0)
+                .each(function (idx) {
+                _this.s.panes.push(new SearchPane(paneSettings, opts, idx, _this.c.layout, _this.dom.panes));
+            });
+            // If there is any extra custom panes defined then create panes for them too
+            var rowLength = table.columns().eq(0).toArray().length;
+            var paneLength = this.c.panes.length;
+            for (var i = 0; i < paneLength; i++) {
+                var id = rowLength + i;
+                this.s.panes.push(new SearchPane(paneSettings, opts, id, this.c.layout, this.dom.panes, this.c.panes[i]));
+            }
+            // If this internal property is true then the DataTable has been initialised already
+            if (this.s.dt.settings()[0]._bInitComplete) {
+                this._paneStartup(table);
+            }
+            else {
+                // Otherwise add the paneStartup function to the list of functions that are to be run when the table is initialised
+                // This will garauntee that the panes are initialised before the init event and init Complete callback is fired
+                this.s.dt.settings()[0].aoInitComplete.push({ fn: function () {
+                        _this._paneStartup(table);
+                    } });
+            }
+        };
+        /**
+         * Runs the start up functions for the panes to enable listeners and populate panes
+         * @param table the DataTable api for the parent Table
+         */
+        SearchPanes.prototype._paneStartup = function (table) {
+            var _this = this;
+            // Magic number of 500 is a guess at what will be fast
+            if (this.s.dt.page.info().recordsTotal <= 500) {
+                this._startup(table);
+            }
+            else {
+                setTimeout(function () {
+                    _this._startup(table);
+                }, 100);
+            }
+        };
+        /**
+         * Initialises the tables previous/preset selections and initialises callbacks for events
+         * @param table the parent table for which the searchPanes are being created
+         */
+        SearchPanes.prototype._startup = function (table) {
+            var _this = this;
+            $(this.dom.container).text('');
+            // Attach clear button and title bar to the document
+            this._attachExtras();
+            $(this.dom.container).append(this.dom.panes);
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                pane.rebuildPane();
+            }
+            this._updateFilterCount();
+            this._checkMessage();
+            // When a draw is called on the DataTable, update all of the panes incase the data in the DataTable has changed
+            table.on('draw.dtsps', function () {
+                _this._updateFilterCount();
+                if (_this.c.cascadePanes || _this.c.viewTotal) {
+                    _this.redrawPanes();
+                }
+                _this.s.filterPane = -1;
+            });
+            // Whenever a state save occurs store the selection list in the state object
+            this.s.dt.on('stateSaveParams.dtsp', function (e, settings, data) {
+                if (data.searchPanes === undefined) {
+                    data.searchPanes = {};
+                }
+                data.searchPanes.selectionList = _this.s.selectionList;
+            });
+            // If cascadePanes is active then make the previous selections in the order they were previously
+            if (this.s.selectionList.length > 0 && this.c.cascadePanes) {
+                this._cascadeRegen(this.s.selectionList);
+            }
+            // PreSelect any selections which have been defined using the preSelect option
+            table
+                .columns(this.c.columns.length > 0 ? this.c.columns : undefined)
+                .eq(0)
+                .each(function (idx) {
+                if (_this.s.panes[idx] !== undefined &&
+                    _this.s.panes[idx].s.dtPane !== undefined &&
+                    _this.s.panes[idx].s.colOpts.preSelect !== undefined) {
+                    var tableLength = _this.s.panes[idx].s.dtPane.rows().data().toArray().length;
+                    for (var i = 0; i < tableLength; i++) {
+                        if (_this.s.panes[idx].s.colOpts.preSelect.indexOf(_this.s.panes[idx].s.dtPane.cell(i, 0).data()) !== -1) {
+                            _this.s.panes[idx].s.dtPane.row(i).select();
+                            _this.s.panes[idx].updateTable();
+                        }
+                    }
+                }
+            });
+            // Update the title bar to show how many filters have been selected
+            this._updateFilterCount();
+            // If the table is destroyed and restarted then clear the selections so that they do not persist.
+            table.on('destroy.dtsps', function () {
+                for (var _i = 0, _a = _this.s.panes; _i < _a.length; _i++) {
+                    var pane = _a[_i];
+                    pane.destroy();
+                }
+                table.off('.dtsps');
+                $(_this.dom.clearAll).off('.dtsps');
+                $(_this.dom.container).remove();
+                _this.clearSelections();
+            });
+            // When the clear All button has been pressed clear all of the selections in the panes
+            if (this.c.clear) {
+                $(this.dom.clearAll).on('click.dtsps', function () {
+                    _this.clearSelections();
+                });
+            }
+            table.settings()[0]._searchPanes = this;
+        };
+        /**
+         * Updates the number of filters that have been applied in the title
+         */
+        SearchPanes.prototype._updateFilterCount = function () {
+            var filterCount = 0;
+            // Add the number of all of the filters throughout the panes
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                if (pane.s.dtPane !== undefined) {
+                    filterCount += pane.getPaneCount();
+                }
+            }
+            // Run the message through the internationalisation method to improve readability
+            var message = this.s.dt.i18n('searchPanes.title', 'Filters Active - %d', filterCount);
+            $(this.dom.title).text(message);
+        };
+        SearchPanes.version = '1.0.1';
+        SearchPanes.classes = {
+            clear: 'dtsp-clear',
+            clearAll: 'dtsp-clearAll',
+            container: 'dtsp-searchPanes',
+            emptyMessage: 'dtsp-emptyMessage',
+            hide: 'dtsp-hidden',
+            panes: 'dtsp-panesContainer',
+            search: 'dtsp-search',
+            title: 'dtsp-title',
+            titleRow: 'dtsp-titleRow'
+        };
+        // Define SearchPanes default options
+        SearchPanes.defaults = {
+            cascadePanes: false,
+            clear: true,
+            container: function (dt) {
+                return dt.table().container();
+            },
+            columns: [],
+            layout: 'columns-3',
+            panes: [],
+            viewTotal: false
+        };
+        return SearchPanes;
+    }());
+
+    /*! SearchPanes 1.0.1
+     * 2019-2020 SpryMedia Ltd - datatables.net/license
+     */
+    // DataTables extensions common UMD. Note that this allows for AMD, CommonJS
+    // (with window and jQuery being allowed as parameters to the returned
+    // function) or just default browser loading.
+    (function (factory) {
+        if (typeof define === 'function' && define.amd) {
+            // AMD
+            define(['jquery', 'datatables.net'], function ($) {
+                return factory($, window, document);
+            });
+        }
+        else if (typeof exports === 'object') {
+            // CommonJS
+            module.exports = function (root, $) {
+                if (!root) {
+                    root = window;
+                }
+                if (!$ || !$.fn.dataTable) {
+                    $ = require('datatables.net')(root, $).$;
+                }
+                return factory($, root, root.document);
+            };
+        }
+        else {
+            // Browser - assume jQuery has already been loaded
+            factory(window.jQuery, window, document);
+        }
+    }(function ($, window, document) {
+        var DataTable = $.fn.dataTable;
+        $.fn.dataTable.SearchPanes = SearchPanes;
+        $.fn.DataTable.SearchPanes = SearchPanes;
+        $.fn.dataTable.SearchPane = SearchPane;
+        $.fn.DataTable.SearchPane = SearchPane;
+        DataTable.Api.register('searchPanes.rebuild()', function () {
+            return this.iterator('table', function () {
+                if (this.searchPanes) {
+                    this.searchPanes.rebuild();
+                }
+            });
+        });
+        DataTable.Api.register('column().paneOptions()', function (options) {
+            return this.iterator('column', function (idx) {
+                var col = this.aoColumns[idx];
+                if (!col.searchPanes) {
+                    col.searchPanes = {};
+                }
+                col.searchPanes.values = options;
+                if (this.searchPanes) {
+                    this.searchPanes.rebuild();
+                }
+            });
+        });
+        var apiRegister = $.fn.dataTable.Api.register;
+        apiRegister('searchPanes()', function () {
+            return this;
+        });
+        apiRegister('searchPanes.clearSelections()', function () {
+            var ctx = this.context[0];
+            ctx._searchPanes.clearSelections();
+            return this;
+        });
+        apiRegister('searchPanes.rebuildPane()', function (targetIdx) {
+            var ctx = this.context[0];
+            ctx._searchPanes.rebuild(targetIdx);
+            return this;
+        });
+        apiRegister('searchPanes.container()', function () {
+            var ctx = this.context[0];
+            return ctx._searchPanes.getNode();
+        });
+        $.fn.dataTable.ext.buttons.searchPanesClear = {
+            text: 'Clear Panes',
+            action: function (e, dt, node, config) {
+                dt.searchPanes.clearSelections();
+            }
+        };
+        $.fn.dataTable.ext.buttons.searchPanes = {
+            text: 'Search Panes',
+            init: function (dt, node, config) {
+                var panes = new $.fn.dataTable.SearchPanes(dt, {
+                    filterChanged: function (count) {
+                        dt.button(node).text(dt.i18n('searchPanes.collapse', { 0: 'SearchPanes', _: 'SearchPanes (%d)' }, count));
+                    }
+                });
+                var message = dt.i18n('searchPanes.collapse', 'SearchPanes');
+                dt.button(node).text(message);
+                config._panes = panes;
+            },
+            action: function (e, dt, node, config) {
+                e.stopPropagation();
+                this.popover(config._panes.getNode(), {
+                    align: 'dt-container'
+                });
+                config._panes.adjust();
+            }
+        };
+        function _init(settings, fromPre) {
+            if (fromPre === void 0) { fromPre = false; }
+            var api = new DataTable.Api(settings);
+            var opts = api.init().searchPanes || DataTable.defaults.searchPanes;
+            var searchPanes = new SearchPanes(api, opts, fromPre);
+            var node = searchPanes.getNode();
+            return node;
+        }
+        // Attach a listener to the document which listens for DataTables initialisation
+        // events so we can automatically initialise
+        $(document).on('preInit.dt.dtsp', function (e, settings, json) {
+            if (e.namespace !== 'dt') {
+                return;
+            }
+            if (settings.oInit.searchPanes ||
+                DataTable.defaults.searchPanes) {
+                if (!settings._searchPanes) {
+                    _init(settings, true);
+                }
+            }
+        });
+        // DataTables `dom` feature option
+        DataTable.ext.feature.push({
+            cFeature: 'P',
+            fnInit: _init
+        });
+        // DataTables 2 layout feature
+        if (DataTable.ext.features) {
+            DataTable.ext.features.register('searchPanes', _init);
+        }
+    }));
+
+}());
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/dataTables.searchPanes.min.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/dataTables.searchPanes.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/dataTables.searchPanes.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,86 @@
+/*!
+ SearchPanes 1.0.1
+ 2019-2020 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.checkEs6ConformanceViaProxy=function(){try{var b={},m=Object.create(new $jscomp.global.Proxy(b,{get:function(k,h,f){return k==b&&"q"==h&&f==m}}));return!0===m.q}catch(k){return!1}};$jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS=!1;
+$jscomp.ES6_CONFORMANCE=$jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS&&$jscomp.checkEs6ConformanceViaProxy();$jscomp.arrayIteratorImpl=function(b){var m=0;return function(){return m<b.length?{done:!1,value:b[m++]}:{done:!0}}};$jscomp.arrayIterator=function(b){return{next:$jscomp.arrayIteratorImpl(b)}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(b,m,k){b!=Array.prototype&&b!=Object.prototype&&(b[m]=k.value)};$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.SymbolClass=function(b,m){this.$jscomp$symbol$id_=b;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:m})};
+$jscomp.SymbolClass.prototype.toString=function(){return this.$jscomp$symbol$id_};$jscomp.Symbol=function(){function b(k){if(this instanceof b)throw new TypeError("Symbol is not a constructor");return new $jscomp.SymbolClass($jscomp.SYMBOL_PREFIX+(k||"")+"_"+m++,k)}var m=0;return b}();
+$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.iterator;b||(b=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("Symbol.iterator"));"function"!=typeof Array.prototype[b]&&$jscomp.defineProperty(Array.prototype,b,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}});$jscomp.initSymbolIterator=function(){}};
+$jscomp.initSymbolAsyncIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.asyncIterator;b||(b=$jscomp.global.Symbol.asyncIterator=$jscomp.global.Symbol("Symbol.asyncIterator"));$jscomp.initSymbolAsyncIterator=function(){}};$jscomp.iteratorPrototype=function(b){$jscomp.initSymbolIterator();b={next:b};b[$jscomp.global.Symbol.iterator]=function(){return this};return b};
+$jscomp.makeIterator=function(b){var m="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];return m?m.call(b):$jscomp.arrayIterator(b)};$jscomp.owns=function(b,m){return Object.prototype.hasOwnProperty.call(b,m)};$jscomp.polyfill=function(b,m,k,h){if(m){k=$jscomp.global;b=b.split(".");for(h=0;h<b.length-1;h++){var f=b[h];f in k||(k[f]={});k=k[f]}b=b[b.length-1];h=k[b];m=m(h);m!=h&&null!=m&&$jscomp.defineProperty(k,b,{configurable:!0,writable:!0,value:m})}};
+$jscomp.polyfill("WeakMap",function(b){function m(){if(!b||!Object.seal)return!1;try{var a=Object.seal({}),e=Object.seal({}),d=new b([[a,2],[e,3]]);if(2!=d.get(a)||3!=d.get(e))return!1;d.delete(a);d.set(e,4);return!d.has(a)&&4==d.get(e)}catch(n){return!1}}function k(){}function h(c){if(!$jscomp.owns(c,a)){var e=new k;$jscomp.defineProperty(c,a,{value:e})}}function f(a){var c=Object[a];c&&(Object[a]=function(a){if(a instanceof k)return a;h(a);return c(a)})}if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(b&&
+$jscomp.ES6_CONFORMANCE)return b}else if(m())return b;var a="$jscomp_hidden_"+Math.random();f("freeze");f("preventExtensions");f("seal");var d=0,g=function(a){this.id_=(d+=Math.random()+1).toString();if(a){a=$jscomp.makeIterator(a);for(var c;!(c=a.next()).done;)c=c.value,this.set(c[0],c[1])}};g.prototype.set=function(c,e){h(c);if(!$jscomp.owns(c,a))throw Error("WeakMap key fail: "+c);c[a][this.id_]=e;return this};g.prototype.get=function(c){return $jscomp.owns(c,a)?c[a][this.id_]:void 0};g.prototype.has=
+function(c){return $jscomp.owns(c,a)&&$jscomp.owns(c[a],this.id_)};g.prototype.delete=function(c){return $jscomp.owns(c,a)&&$jscomp.owns(c[a],this.id_)?delete c[a][this.id_]:!1};return g},"es6","es3");$jscomp.MapEntry=function(){};
+$jscomp.polyfill("Map",function(b){function m(){if($jscomp.ASSUME_NO_NATIVE_MAP||!b||"function"!=typeof b||!b.prototype.entries||"function"!=typeof Object.seal)return!1;try{var a=Object.seal({x:4}),e=new b($jscomp.makeIterator([[a,"s"]]));if("s"!=e.get(a)||1!=e.size||e.get({x:4})||e.set({x:4},"t")!=e||2!=e.size)return!1;var d=e.entries(),g=d.next();if(g.done||g.value[0]!=a||"s"!=g.value[1])return!1;g=d.next();return g.done||4!=g.value[0].x||"t"!=g.value[1]||!d.next().done?!1:!0}catch(l){return!1}}
+if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(b&&$jscomp.ES6_CONFORMANCE)return b}else if(m())return b;$jscomp.initSymbolIterator();var k=new WeakMap,h=function(a){this.data_={};this.head_=d();this.size=0;if(a){a=$jscomp.makeIterator(a);for(var c;!(c=a.next()).done;)c=c.value,this.set(c[0],c[1])}};h.prototype.set=function(a,d){a=0===a?0:a;var c=f(this,a);c.list||(c.list=this.data_[c.id]=[]);c.entry?c.entry.value=d:(c.entry={next:this.head_,previous:this.head_.previous,head:this.head_,key:a,
+value:d},c.list.push(c.entry),this.head_.previous.next=c.entry,this.head_.previous=c.entry,this.size++);return this};h.prototype.delete=function(a){a=f(this,a);return a.entry&&a.list?(a.list.splice(a.index,1),a.list.length||delete this.data_[a.id],a.entry.previous.next=a.entry.next,a.entry.next.previous=a.entry.previous,a.entry.head=null,this.size--,!0):!1};h.prototype.clear=function(){this.data_={};this.head_=this.head_.previous=d();this.size=0};h.prototype.has=function(a){return!!f(this,a).entry};
+h.prototype.get=function(a){return(a=f(this,a).entry)&&a.value};h.prototype.entries=function(){return a(this,function(a){return[a.key,a.value]})};h.prototype.keys=function(){return a(this,function(a){return a.key})};h.prototype.values=function(){return a(this,function(a){return a.value})};h.prototype.forEach=function(a,d){for(var c=this.entries(),e;!(e=c.next()).done;)e=e.value,a.call(d,e[1],e[0],this)};h.prototype[Symbol.iterator]=h.prototype.entries;var f=function(a,d){var c;var e=(c=d)&&typeof c;
+"object"==e||"function"==e?k.has(c)?c=k.get(c):(e=""+ ++g,k.set(c,e),c=e):c="p_"+c;if((e=a.data_[c])&&$jscomp.owns(a.data_,c))for(a=0;a<e.length;a++){var f=e[a];if(d!==d&&f.key!==f.key||d===f.key)return{id:c,list:e,index:a,entry:f}}return{id:c,list:e,index:-1,entry:void 0}},a=function(a,d){var c=a.head_;return $jscomp.iteratorPrototype(function(){if(c){for(;c.head!=a.head_;)c=c.previous;for(;c.next!=c.head;)return c=c.next,{done:!1,value:d(c)};c=null}return{done:!0,value:void 0}})},d=function(){var a=
+{};return a.previous=a.next=a.head=a},g=0;return h},"es6","es3");$jscomp.findInternal=function(b,m,k){b instanceof String&&(b=String(b));for(var h=b.length,f=0;f<h;f++){var a=b[f];if(m.call(k,a,f,b))return{i:f,v:a}}return{i:-1,v:void 0}};$jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(b,k){return $jscomp.findInternal(this,b,k).v}},"es6","es3");
+$jscomp.iteratorFromArray=function(b,m){$jscomp.initSymbolIterator();b instanceof String&&(b+="");var k=0,h={next:function(){if(k<b.length){var f=k++;return{value:m(f,b[f]),done:!1}}h.next=function(){return{done:!0,value:void 0}};return h.next()}};h[Symbol.iterator]=function(){return h};return h};$jscomp.polyfill("Array.prototype.keys",function(b){return b?b:function(){return $jscomp.iteratorFromArray(this,function(b){return b})}},"es6","es3");
+$jscomp.polyfill("Array.prototype.findIndex",function(b){return b?b:function(b,k){return $jscomp.findInternal(this,b,k).i}},"es6","es3");
+(function(){var b=$.fn.dataTable,m=function(){function f(a,d,g,c,e,r){var n=this;void 0===r&&(r=null);if(!b||!b.versionCheck||!b.versionCheck("1.10.0"))throw Error("SearchPane requires DataTables 1.10 or newer");if(!b.select)throw Error("SearchPane requires Select");a=new b.Api(a);this.classes=$.extend(!0,{},f.classes);this.c=$.extend(!0,{},f.defaults,d);this.customPaneSettings=r;this.s={cascadeRegen:!1,clearing:!1,colOpts:[],deselect:!1,displayed:!1,dt:a,dtPane:void 0,filteringActive:!1,index:g,
+indexes:[],lastSelect:!1,redraw:!1,rowData:{arrayFilter:[],arrayOriginal:[],arrayTotals:[],bins:{},binsOriginal:{},binsTotal:{},filterMap:new Map},searchFunction:void 0,selectPresent:!1,updating:!1};d=a.columns().eq(0).toArray().length;this.colExists=this.s.index<d;this.c.layout=c;d=parseInt(c.split("-")[1],10);this.dom={buttonGroup:$("<div/>").addClass(this.classes.buttonGroup),clear:$('<button type="button">&#215;</button>').addClass(this.classes.dull).addClass(this.classes.paneButton).addClass(this.classes.clearButton),
+container:$("<div/>").addClass(this.classes.container).addClass(this.classes.layout+(7>d?c:c.split("-")[0]+"-6")),countButton:$('<button type="button"></button>').addClass(this.classes.paneButton).addClass(this.classes.countButton),dtP:$("<table><thead><tr><th>"+(this.colExists?$(a.column(this.colExists?this.s.index:0).header()).text():this.customPaneSettings.header||"Custom Pane")+"</th><th/></tr></thead></table>"),lower:$("<div/>").addClass(this.classes.subRow2).addClass(this.classes.narrowButton),
+nameButton:$('<button type="button"></button>').addClass(this.classes.paneButton).addClass(this.classes.nameButton),searchBox:$("<input/>").addClass(this.classes.paneInputButton).addClass(this.classes.search),searchButton:$('<button type = "button" class="'+this.classes.searchIcon+'"></button>').addClass(this.classes.paneButton),searchCont:$("<div/>").addClass(this.classes.searchCont),searchLabelCont:$("<div/>").addClass(this.classes.searchLabelCont),topRow:$("<div/>").addClass(this.classes.topRow),
+upper:$("<div/>").addClass(this.classes.subRow1).addClass(this.classes.narrowSearch)};this.s.displayed=!1;a=this.s.dt;this.selections=[];this.s.colOpts=this.colExists?this._getOptions():this._getBonusOptions();var l=this.s.colOpts;c=$('<button type="button">X</button>').addClass(this.classes.paneButton);$(c).text(a.i18n("searchPanes.clearPane","X"));this.dom.container.addClass(l.className);this.dom.container.addClass(null!==this.customPaneSettings&&void 0!==this.customPaneSettings.className?this.customPaneSettings.className:
+"");$(e).append(this.dom.container);var q=a.table(0).node();this.s.searchFunction=function(a,c,d,e){if(0===n.selections.length||a.nTable!==q)return!0;a="";n.colExists&&(a=c[n.s.index],"filter"!==l.orthogonal.filter&&(a=n.s.rowData.filterMap.get(d),a instanceof $.fn.dataTable.Api&&(a=a.toArray())));return n._search(a,d)};$.fn.dataTable.ext.search.push(this.s.searchFunction);if(this.c.clear)$(c).on("click",function(){n.dom.container.find(n.classes.search).each(function(){$(this).val("");$(this).trigger("input")});
+n.clearPane()});a.on("draw.dtsp",function(){n._adjustTopRow()});$(window).on("resize.dtsp",b.util.throttle(function(){n._adjustTopRow()}));a.on("column-reorder.dtsp",function(a,c,d){n.s.index=d.mapping[n.s.index]});return this}f.prototype.clearData=function(){this.s.rowData={arrayFilter:[],arrayOriginal:[],arrayTotals:[],bins:{},binsOriginal:{},binsTotal:{},filterMap:new Map}};f.prototype.clearPane=function(){this.s.dtPane.rows({selected:!0}).deselect();this.updateTable();return this};f.prototype.destroy=
+function(){$(this.s.dtPane).off(".dtsp");$(this.s.dt).off(".dtsp");$(this.dom.nameButton).off(".dtsp");$(this.dom.countButton).off(".dtsp");$(this.dom.clear).off(".dtsp");$(this.dom.searchButton).off(".dtsp");$(this.dom.container).remove();for(var a=$.fn.dataTable.ext.search.indexOf(this.s.searchFunction);-1!==a;)$.fn.dataTable.ext.search.splice(a,1),a=$.fn.dataTable.ext.search.indexOf(this.s.searchFunction);void 0!==this.s.dtPane&&this.s.dtPane.destroy()};f.prototype.getPaneCount=function(){return void 0!==
+this.s.dtPane?this.s.dtPane.rows({selected:!0}).data().toArray().length:0};f.prototype.rebuildPane=function(){this.clearData();void 0!==this.s.dtPane&&this.s.dtPane.clear().destroy();this.dom.container.removeClass(this.classes.hidden);this.s.displayed=!1;this._buildPane();return this};f.prototype.removePane=function(){this.s.displayed=!1;$(this.dom.container).hide()};f.prototype.setCascadeRegen=function(a){this.s.cascadeRegen=a};f.prototype.setClear=function(a){this.s.clearing=a};f.prototype.updatePane=
+function(a){void 0===a&&(a=!1);this.s.updating=!0;this._updateCommon(a);this.s.updating=!1};f.prototype.updateTable=function(){this.selections=this.s.dtPane.rows({selected:!0}).data().toArray();this._searchExtras();(this.c.cascadePanes||this.c.viewTotal)&&this.updatePane()};f.prototype._addOption=function(a,d,g,c,e,r){if(Array.isArray(a)||a instanceof b.Api)if(a instanceof b.Api&&(a=a.toArray(),d=d.toArray()),a.length===d.length)for(var f=0;f<a.length;f++)r[a[f]]?r[a[f]]++:(r[a[f]]=1,e.push({display:d[f],
+filter:a[f],sort:g,type:c}));else throw Error("display and filter not the same length");else"string"===typeof this.s.colOpts.orthogonal?r[a]?r[a]++:(r[a]=1,e.push({display:d,filter:a,sort:g,type:c})):e.push({display:d,filter:a,sort:g,type:c})};f.prototype._addRow=function(a,d,g,c,e,f){for(var r,b=0,q=this.s.indexes;b<q.length;b++){var p=q[b];p.filter===d&&(r=p.index)}void 0===r&&(r=this.s.indexes.length,this.s.indexes.push({filter:d,index:r}));return this.s.dtPane.row.add({display:""!==a?a:this.c.emptyMessage,
+filter:d,index:r,shown:g,sort:""!==e?e:this.c.emptyMessage,total:c,type:f})};f.prototype._adjustTopRow=function(){var a=this.dom.container.find("."+this.classes.subRowsContainer),d=this.dom.container.find(".dtsp-subRow1"),g=this.dom.container.find(".dtsp-subRow2"),c=this.dom.container.find("."+this.classes.topRow);(252>$(a[0]).width()||252>$(c[0]).width())&&0!==$(a[0]).width()?($(a[0]).addClass(this.classes.narrow),$(d[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowSearch),$(g[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowButton)):
+($(a[0]).removeClass(this.classes.narrow),$(d[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowSearch),$(g[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowButton))};f.prototype._buildPane=function(){var a=this;this.selections=[];var d=this.s.dt,g=d.column(this.colExists?this.s.index:0),c=this.s.colOpts,e=this.s.rowData,r=d.i18n("searchPanes.count","{total}"),f=d.i18n("searchPanes.countFiltered","{shown} ({total})"),l=d.state.loaded();if(this.colExists){var q=
+-1;if(l&&l.searchPanes&&l.searchPanes.panes)for(var p=0;p<l.searchPanes.panes.length;p++)if(l.searchPanes.panes[p].id===this.s.index){q=p;break}if((!1===c.show||void 0!==c.show&&!0!==c.show)&&-1===q)return this.dom.container.addClass(this.classes.hidden),this.s.displayed=!1;if(!0===c.show||-1!==q)this.s.displayed=!0;if(0===e.arrayFilter.length)if(this._populatePane(),l&&l.searchPanes&&l.searchPanes.panes)if(-1!==q)e.binsOriginal=l.searchPanes.panes[q].bins,e.arrayOriginal=l.searchPanes.panes[q].arrayFilter;
+else{this.dom.container.addClass(this.classes.hidden);this.s.displayed=!1;return}else e.arrayOriginal=e.arrayFilter,e.binsOriginal=e.bins;p=Object.keys(e.binsOriginal).length;q=this._uniqueRatio(p,d.rows()[0].length);if(!1===this.s.displayed&&((void 0===c.show&&null===c.threshold?q>this.c.threshold:q>c.threshold)||!0!==c.show&&1>=p)){this.dom.container.addClass(this.classes.hidden);this.s.displayed=!1;return}this.c.viewTotal&&0===e.arrayTotals.length?this._detailsPane():e.binsTotal=e.bins;this.dom.container.addClass(this.classes.show)}this.s.displayed=
+!0;this._displayPane();this.dom.dtP.on("stateLoadParams.dt",function(a,c,e){$.isEmptyObject(d.state.loaded())&&$.each(e,function(a,c){delete e[a]})});p=$.fn.dataTable.ext.errMode;$.fn.dataTable.ext.errMode="none";q=b.Scroller;this.s.dtPane=$(this.dom.dtP).DataTable($.extend(!0,{dom:"t",columnDefs:[{className:"dtsp-nameColumn",data:"display",render:function(d,e,g){if("sort"===e)return g.sort;if("type"===e)return g.type;var b;a.s.filteringActive&&a.c.viewTotal?b=f.replace(/{total}/,g.total):b=r.replace(/{total}/,
+g.total);for(b=b.replace(/{shown}/,g.shown);-1!==b.indexOf("{total}");)b=b.replace(/{total}/,g.total);for(;-1!==b.indexOf("{shown}");)b=b.replace(/{shown}/,g.shown);e='<span class="'+a.classes.pill+'">'+b+"</span>";if(a.c.hideCount||c.hideCount)e="";return a.c.dataLength?d.length>a.c.dataLength?'<span class="'+a.classes.name+'">'+d.substr(0,a.c.dataLength)+"...</span>"+e:'<span class="'+a.classes.name+'">'+d+"</span>"+e:'<span class="'+a.classes.name+'">'+d+"</span>"+e},targets:0,type:void 0!==d.settings()[0].aoColumns[this.s.index]?
+d.settings()[0].aoColumns[this.s.index]._sManualType:null},{className:"dtsp-countColumn "+this.classes.badgePill,data:"total",targets:1,visible:!1}],deferRender:!0,info:!1,paging:q?!0:!1,scrollY:"200px",scroller:q?!0:!1,select:!0,stateSave:d.settings()[0].oFeatures.bStateSave?!0:!1},this.c.dtOpts,void 0!==c?c.dtOpts:{},null!==this.customPaneSettings&&void 0!==this.customPaneSettings.dtOpts?this.customPaneSettings.dtOpts:{}));$(this.dom.dtP).addClass(this.classes.table);$(this.dom.searchBox).attr("placeholder",
+void 0!==c.header?c.header:this.colExists?d.settings()[0].aoColumns[this.s.index].sTitle:this.customPaneSettings.header||"Custom Pane");$.fn.dataTable.select.init(this.s.dtPane);$.fn.dataTable.ext.errMode=p;if(this.colExists){g=(g=g.search())?g.substr(1,g.length-2).split("|"):[];var k=0;e.arrayFilter.forEach(function(a){""===a.filter&&k++});p=0;for(g=e.arrayFilter.length;p<g;p++)!e.arrayFilter[p]||void 0===e.bins[e.arrayFilter[p].filter]&&this.c.cascadePanes?this._addRow(this.c.emptyMessage,k,k,this.c.emptyMessage,
+this.c.emptyMessage,this.c.emptyMessage):(q=this._addRow(e.arrayFilter[p].display,e.arrayFilter[p].filter,e.bins[e.arrayFilter[p].filter],e.binsTotal[e.arrayFilter[p].filter],e.arrayFilter[p].sort,e.arrayFilter[p].type),void 0!==c.preSelect&&-1!==c.preSelect.indexOf(e.arrayFilter[p].filter)&&q.select())}(void 0!==c.options||null!==this.customPaneSettings&&void 0!==this.customPaneSettings.options)&&this._getComparisonRows();b.select.init(this.s.dtPane);this.s.dtPane.draw();this.s.dtPane.on("select.dtsp",
+function(){clearTimeout(h);$(a.dom.clear).removeClass(a.classes.dull);a.s.selectPresent=!0;a.s.updating||a._makeSelection();a.s.selectPresent=!1});this.s.dt.on("stateSaveParams.dtsp",function(c,d,g){if($.isEmptyObject(g))a.s.dtPane.state.clear();else{c=[];if(void 0!==a.s.dtPane){c=a.s.dtPane.rows({selected:!0}).data().map(function(a){return a.filter.toString()}).toArray();var b=$(a.dom.searchBox).val();var f=a.s.dtPane.order();var r=e.binsOriginal;var n=e.arrayOriginal}void 0===g.searchPanes&&(g.searchPanes=
+{});void 0===g.searchPanes.panes&&(g.searchPanes.panes=[]);g.searchPanes.panes.push({arrayFilter:n,bins:r,id:a.s.index,order:f,searchTerm:b,selected:c})}});if(l&&l.searchPanes&&l.searchPanes.panes)for(this.c.cascadePanes||this._reloadSelect(l),g=0,l=l.searchPanes.panes;g<l.length;g++)p=l[g],p.id===this.s.index&&($(this.dom.searchBox).val(p.searchTerm),this.s.dt.order(p.order));this.s.dtPane.on("user-select.dtsp",function(a,c,d,e,g){g.stopPropagation()});$(this.dom.nameButton).on("click.dtsp",function(){var c=
+a.s.dtPane.order()[0][1];a.s.dtPane.order([0,"asc"===c?"desc":"asc"]).draw()});$(this.dom.countButton).on("click.dtsp",function(){var c=a.s.dtPane.order()[0][1];a.s.dtPane.order([1,"asc"===c?"desc":"asc"]).draw()});$(this.dom.clear).on("click.dtsp",function(){a.dom.container.find("."+a.classes.search).each(function(){$(this).val("");$(this).trigger("input")});a.clearPane()});$(this.dom.searchButton).on("click.dtsp",function(){$(a.dom.searchBox).focus()});$(this.dom.searchBox).on("input.dtsp",function(){a.s.dtPane.search($(a.dom.searchBox).val()).draw();
+a.s.dt.state.save()});var h;this.s.dtPane.on("deselect.dtsp",function(){h=setTimeout(function(){a.s.deselect=!0;0===a.s.dtPane.rows({selected:!0}).data().toArray().length&&$(a.dom.clear).addClass(a.classes.dull);a._makeSelection();a.s.deselect=!1;a.s.dt.state.save()},50)});this.s.dt.state.save();return!0};f.prototype._detailsPane=function(){var a=this,d=this.s.dt;this.s.rowData.arrayTotals=[];this.s.rowData.binsTotal={};var g=this.s.dt.settings()[0];d.rows().every(function(c){a._populatePaneArray(c,
+a.s.rowData.arrayTotals,g,a.s.rowData.binsTotal)})};f.prototype._displayPane=function(){var a=this.dom.container,d=this.s.colOpts,g=parseInt(this.c.layout.split("-")[1],10);$(this.dom.topRow).empty();$(this.dom.dtP).empty();$(this.dom.topRow).addClass(this.classes.topRow);3<g&&$(this.dom.container).addClass(this.classes.smallGap);$(this.dom.topRow).addClass(this.classes.subRowsContainer);$(this.dom.upper).appendTo(this.dom.topRow);$(this.dom.lower).appendTo(this.dom.topRow);$(this.dom.searchCont).appendTo(this.dom.upper);
+$(this.dom.buttonGroup).appendTo(this.dom.lower);(!1===this.c.dtOpts.searching||void 0!==d.dtOpts&&!1===d.dtOpts.searching||!this.c.controls||!d.controls||null!==this.customPaneSettings&&void 0!==this.customPaneSettings.dtOpts&&void 0!==this.customPaneSettings.dtOpts.searching&&!this.customPaneSettings.dtOpts.searching)&&$(this.dom.searchBox).attr("disabled","disabled").removeClass(this.classes.paneInputButton).addClass(this.classes.disabledButton);$(this.dom.searchBox).appendTo(this.dom.searchCont);
+this._searchContSetup();this.c.clear&&this.c.controls&&d.controls&&$(this.dom.clear).appendTo(this.dom.buttonGroup);this.c.orderable&&d.orderable&&this.c.controls&&d.controls&&$(this.dom.nameButton).appendTo(this.dom.buttonGroup);!this.c.hideCount&&!d.hideCount&&this.c.orderable&&d.orderable&&this.c.controls&&d.controls&&$(this.dom.countButton).appendTo(this.dom.buttonGroup);$(this.dom.topRow).prependTo(this.dom.container);$(a).append(this.dom.dtP);$(a).show()};f.prototype._findUnique=function(a,
+d){for(var g=[],c=0;c<d.length;c++){var e=d[c];-1===g.indexOf(e.filter)&&(a.push({display:e.display,filter:e.filter,sort:e.sort,type:e.type}),g.push(e.filter))}};f.prototype._getBonusOptions=function(){return $.extend(!0,{},f.defaults,{orthogonal:{threshold:null},threshold:null},void 0!==this.c?this.c:{})};f.prototype._getComparisonRows=function(){var a=this.s.colOpts;a=void 0!==a.options?a.options:null!==this.customPaneSettings&&void 0!==this.customPaneSettings.options?this.customPaneSettings.options:
+void 0;if(void 0!==a){var d=this.s.dt.rows({search:"applied"}).data().toArray(),g=this.s.dt.rows({search:"applied"}),c=this.s.dt.rows().data().toArray(),e=this.s.dt.rows(),b=[];this.s.dtPane.clear();for(var f=0;f<a.length;f++){var l=a[f],q=""!==l.label?l.label:this.c.emptyMessage,k=q,h="function"===typeof l.value?l.value:[],m=0,v=q,u=0;if("function"===typeof l.value){for(var t=0;t<d.length;t++)l.value.call(this.s.dt,d[t],g[0][t])&&m++;for(t=0;t<c.length;t++)l.value.call(this.s.dt,c[t],e[0][t])&&u++;
+"function"!==typeof h&&h.push(l.filter)}(!this.c.cascadePanes||this.c.cascadePanes&&0!==m)&&b.push(this._addRow(k,h,m,u,v,q))}return b}};f.prototype._getOptions=function(){return $.extend(!0,{},f.defaults,{orthogonal:{threshold:null},threshold:null},this.s.dt.settings()[0].aoColumns[this.s.index].searchPanes)};f.prototype._makeSelection=function(){this.updateTable();this.s.updating=!0;this.s.dt.draw();this.s.updating=!1};f.prototype._populatePane=function(){var a=this.s.dt;this.s.rowData.arrayFilter=
+[];this.s.rowData.bins={};var d=this.s.dt.settings()[0],g=0;for(a=!this.c.cascadePanes&&!this.c.viewTotal||this.s.clearing?a.rows().indexes():a.rows({search:"applied"}).indexes();g<a.length;g++)this._populatePaneArray(a[g],this.s.rowData.arrayFilter,d)};f.prototype._populatePaneArray=function(a,d,g,c){void 0===c&&(c=this.s.rowData.bins);var e=this.s.colOpts;if("string"===typeof e.orthogonal)g=g.oApi._fnGetCellData(g,a,this.s.index,e.orthogonal),this.s.rowData.filterMap.set(a,g),this._addOption(g,
+g,g,g,d,c);else{var b=g.oApi._fnGetCellData(g,a,this.s.index,e.orthogonal.search);this.s.rowData.filterMap.set(a,b);c[b]?c[b]++:(c[b]=1,this._addOption(b,g.oApi._fnGetCellData(g,a,this.s.index,e.orthogonal.display),g.oApi._fnGetCellData(g,a,this.s.index,e.orthogonal.sort),g.oApi._fnGetCellData(g,a,this.s.index,e.orthogonal.type),d,c))}};f.prototype._reloadSelect=function(a){if(void 0!==a){for(var d,g=0;g<a.searchPanes.panes.length;g++)if(a.searchPanes.panes[g].id===this.s.index){d=g;break}if(void 0!==
+d){g=this.s.dtPane;var c=g.rows({order:"index"}).data().map(function(a){return null!==a.filter?a.filter.toString():null}).toArray(),e=0;for(a=a.searchPanes.panes[d].selected;e<a.length;e++){d=a[e];var b=-1;null!==d&&(b=c.indexOf(d.toString()));-1<b&&(g.row(b).select(),this.s.dt.state.save())}}}};f.prototype._search=function(a,d){for(var g=this.s.colOpts,c=this.s.dt,e=0,b=this.selections;e<b.length;e++){var f=b[e];if(Array.isArray(a)){if(-1!==a.indexOf(f.filter))return!0}else if("function"===typeof f.filter)if(f.filter.call(c,
+c.row(d).data(),d)){if(this.s.redraw||this.updatePane(),"or"===g.combiner)return!0}else{if("and"===g.combiner)return!1}else if(a===f.filter)return!0}return"and"===g.combiner?!0:!1};f.prototype._searchContSetup=function(){this.c.controls&&this.s.colOpts.controls&&$(this.dom.searchButton).appendTo(this.dom.searchLabelCont);!1===this.c.dtOpts.searching||!1===this.s.colOpts.dtOpts.searching||null!==this.customPaneSettings&&void 0!==this.customPaneSettings.dtOpts&&void 0!==this.customPaneSettings.dtOpts.searching&&
+!this.customPaneSettings.dtOpts.searching||$(this.dom.searchLabelCont).appendTo(this.dom.searchCont)};f.prototype._searchExtras=function(){var a=this.s.updating;this.s.updating=!0;var d=this.s.dtPane.rows({selected:!0}).data().pluck("filter").toArray(),g=d.indexOf(this.c.emptyMessage),c=$(this.s.dtPane.table().container());-1<g&&(d[g]="");0<d.length?c.addClass(this.classes.selected):0===d.length&&c.removeClass(this.classes.selected);this.s.updating=a};f.prototype._uniqueRatio=function(a,d){return 0<
+d?a/d:1};f.prototype._updateCommon=function(a){void 0===a&&(a=!1);if(!(void 0===this.s.dtPane||this.s.filteringActive&&!this.c.cascadePanes&&!0!==a||!0===this.c.cascadePanes&&!0===this.s.selectPresent||this.s.lastSelect)){var d=this.s.colOpts,g=this.s.dtPane.rows({selected:!0}).data().toArray();a=$(this.s.dtPane.table().node()).parent()[0].scrollTop;var c=this.s.rowData;this.s.dtPane.clear();if(this.colExists){0===c.arrayFilter.length?this._populatePane():this.c.cascadePanes&&this.s.dt.rows().data().toArray().length===
+this.s.dt.rows({search:"applied"}).data().toArray().length?(c.arrayFilter=c.arrayOriginal,c.bins=c.binsOriginal):(this.c.viewTotal||this.c.cascadePanes)&&this._populatePane();this.c.viewTotal?this._detailsPane():c.binsTotal=c.bins;this.c.viewTotal&&!this.c.cascadePanes&&(c.arrayFilter=c.arrayTotals);for(var e=function(a){if(a&&(void 0!==c.bins[a.filter]&&0!==c.bins[a.filter]&&b.c.cascadePanes||!b.c.cascadePanes||b.s.clearing)){var d=b._addRow(a.display,a.filter,b.c.viewTotal?void 0!==c.bins[a.filter]?
+c.bins[a.filter]:0:c.bins[a.filter],b.c.viewTotal?String(c.binsTotal[a.filter]):c.bins[a.filter],a.sort,a.type),e=g.findIndex(function(c){return c.filter===a.filter});-1!==e&&(d.select(),g.splice(e,1))}},b=this,f=0,l=c.arrayFilter;f<l.length;f++)e(l[f])}if(void 0!==d.searchPanes&&void 0!==d.searchPanes.options||void 0!==d.options||null!==this.customPaneSettings&&void 0!==this.customPaneSettings.options)for(e=function(a){var c=g.findIndex(function(c){if(c.display===a.data().display)return!0});-1!==
+c&&(a.select(),g.splice(c,1))},f=0,l=this._getComparisonRows();f<l.length;f++)d=l[f],e(d);for(e=0;e<g.length;e++)d=g[e],d=this._addRow(d.display,d.filter,0,this.c.viewTotal?d.total:0,d.filter,d.filter),d.select();this.s.dtPane.draw();this.s.dtPane.table().node().parentNode.scrollTop=a}};f.version="1.0.1";f.classes={buttonGroup:"dtsp-buttonGroup",buttonSub:"dtsp-buttonSub",clear:"dtsp-clear",clearAll:"dtsp-clearAll",clearButton:"clearButton",container:"dtsp-searchPane",countButton:"dtsp-countButton",
+disabledButton:"dtsp-disabledButton",dull:"dtsp-dull",hidden:"dtsp-hidden",hide:"dtsp-hide",layout:"dtsp-",name:"dtsp-name",nameButton:"dtsp-nameButton",narrow:"dtsp-narrow",paneButton:"dtsp-paneButton",paneInputButton:"dtsp-paneInputButton",pill:"dtsp-pill",search:"dtsp-search",searchCont:"dtsp-searchCont",searchIcon:"dtsp-searchIcon",searchLabelCont:"dtsp-searchButtonCont",selected:"dtsp-selected",smallGap:"dtsp-smallGap",subRow1:"dtsp-subRow1",subRow2:"dtsp-subRow2",subRowsContainer:"dtsp-subRowsContainer",
+title:"dtsp-title",topRow:"dtsp-topRow"};f.defaults={cascadePanes:!1,clear:!0,combiner:"or",controls:!0,container:function(a){return a.table().container()},dataLength:30,dtOpts:{},emptyMessage:"<i>No Data</i>",hideCount:!1,layout:"columns-3",orderable:!0,orthogonal:{display:"display",hideCount:!1,search:"filter",show:void 0,sort:"sort",threshold:.6,type:"type"},preSelect:[],threshold:.6,viewTotal:!1};return f}(),k=$.fn.dataTable,h=function(){function b(a,d,g){var c=this;void 0===g&&(g=!1);this.regenerating=
+!1;if(!k||!k.versionCheck||!k.versionCheck("1.10.0"))throw Error("SearchPane requires DataTables 1.10 or newer");if(!k.select)throw Error("SearchPane requires Select");var e=new k.Api(a);this.classes=$.extend(!0,{},b.classes);this.c=$.extend(!0,{},b.defaults,d);this.dom={clearAll:$('<button type="button">Clear All</button>').addClass(this.classes.clearAll),container:$("<div/>").addClass(this.classes.panes).text(e.i18n("searchPanes.loadMessage","Loading Search Panes...")),emptyMessage:$("<div/>").addClass(this.classes.emptyMessage),
+options:$("<div/>").addClass(this.classes.container),panes:$("<div/>").addClass(this.classes.container),title:$("<div/>").addClass(this.classes.title),titleRow:$("<div/>").addClass(this.classes.titleRow),wrapper:$("<div/>")};this.s={colOpts:[],dt:e,filterPane:-1,panes:[],selectionList:[],updating:!1};e.settings()[0]._searchPanes=this;this.dom.clearAll.text(e.i18n("searchPanes.clearMessage","Clear All"));this._getState();if(this.s.dt.settings()[0]._bInitComplete||g)this._paneDeclare(e,a,d);else e.on("preInit.dt",
+function(){c._paneDeclare(e,a,d)})}b.prototype.clearSelections=function(){this.dom.container.find(this.classes.search).each(function(){$(this).val("");$(this).trigger("input")});for(var a=[],d=0,b=this.s.panes;d<b.length;d++){var c=b[d];void 0!==c.s.dtPane&&a.push(c.clearPane())}this.s.dt.draw();return a};b.prototype.getNode=function(){return this.dom.container};b.prototype.rebuild=function(a){void 0===a&&(a=!1);$(this.dom.emptyMessage).remove();var d=[];this.clearSelections();for(var b=0,c=this.s.panes;b<
+c.length;b++){var e=c[b];if(!1===a||e.s.index===a)e.clearData(),d.push(e.rebuildPane())}this._updateFilterCount();this._attachPaneContainer();return 1===d.length?d[0]:d};b.prototype.redrawPanes=function(){var a=this.s.dt;if(!this.s.updating){var d=!0,b=this.s.filterPane;if(a.rows({search:"applied"}).data().toArray().length===a.rows().data().toArray().length)d=!1;else if(this.c.viewTotal)for(var c=0,e=this.s.panes;c<e.length;c++){var f=e[c];if(void 0!==f.s.dtPane){var n=f.s.dtPane.rows({selected:!0}).data().toArray().length;
+0<n&&-1===b?b=f.s.index:0<n&&(b=null)}}e=void 0;c=[];if(this.regenerating){c=0;for(a=this.s.panes;c<a.length;c++)if(f=a[c],void 0!==f.s.dtPane){e=!0;f.s.filteringActive=!0;if(-1!==b&&null!==b&&b===f.s.index||!1===d)e=!1,f.s.filteringActive=!1;f.updatePane(e?d:e)}this._updateFilterCount()}else{n=0;for(var l=this.s.panes;n<l.length;n++)if(f=l[n],f.s.selectPresent){this.s.selectionList.push({index:f.s.index,rows:f.s.dtPane.rows({selected:!0}).data().toArray(),protect:!1});a.state.save();break}else if(f.s.deselect){e=
+f.s.index;var h=f.s.dtPane.rows({selected:!0}).data().toArray();0<h.length&&this.s.selectionList.push({index:f.s.index,rows:h,protect:!0})}if(0<this.s.selectionList.length)for(a=this.s.selectionList[this.s.selectionList.length-1].index,n=0,l=this.s.panes;n<l.length;n++)f=l[n],f.s.lastSelect=f.s.index===a&&1===this.s.selectionList.length;for(f=0;f<this.s.selectionList.length;f++)if(this.s.selectionList[f].index!==e||!0===this.s.selectionList[f].protect){a=!1;for(n=f+1;n<this.s.selectionList.length;n++)this.s.selectionList[n].index===
+this.s.selectionList[f].index&&(a=!0);a||(c.push(this.s.selectionList[f]),this.s.selectionList[f].protect=!1)}a=0;for(n=this.s.panes;a<n.length;a++)if(f=n[a],void 0!==f.s.dtPane){e=!0;f.s.filteringActive=!0;if(-1!==b&&null!==b&&b===f.s.index||!1===d)e=!1,f.s.filteringActive=!1;f.updatePane(e?d:!1)}this._updateFilterCount();if(0<c.length&&c.length<this.s.selectionList.length)for(this._cascadeRegen(c),a=c[c.length-1].index,b=0,c=this.s.panes;b<c.length;b++)f=c[b],f.s.lastSelect=f.s.index===a&&1===this.s.selectionList.length;
+else if(0<c.length)for(f=0,c=this.s.panes;f<c.length;f++)if(a=c[f],void 0!==a.s.dtPane){e=!0;a.s.filteringActive=!0;if(-1!==b&&null!==b&&b===a.s.index||!1===d)e=!1,a.s.filteringActive=!1;a.updatePane(e?d:e)}}d||(this.s.selectionList=[])}};b.prototype._attach=function(){$(this.dom.container).removeClass(this.classes.hide);$(this.dom.titleRow).removeClass(this.classes.hide);$(this.dom.titleRow).remove();$(this.dom.title).appendTo(this.dom.titleRow);this.c.clear&&$(this.dom.clearAll).appendTo(this.dom.titleRow);
+$(this.dom.titleRow).appendTo(this.dom.container);for(var a=0,d=this.s.panes;a<d.length;a++)$(d[a].dom.container).appendTo(this.dom.panes);$(this.dom.panes).appendTo(this.dom.container);0===$("div."+this.classes.container).length&&$(this.dom.container).prependTo(this.s.dt);return this.dom.container};b.prototype._attachExtras=function(){$(this.dom.container).removeClass(this.classes.hide);$(this.dom.titleRow).removeClass(this.classes.hide);$(this.dom.titleRow).remove();$(this.dom.title).appendTo(this.dom.titleRow);
+this.c.clear&&$(this.dom.clearAll).appendTo(this.dom.titleRow);$(this.dom.titleRow).appendTo(this.dom.container);return this.dom.container};b.prototype._attachMessage=function(){try{var a=this.s.dt.i18n("searchPanes.emptyPanes","No SearchPanes")}catch(d){a=null}if(null===a)$(this.dom.container).addClass(this.classes.hide),$(this.dom.titleRow).removeClass(this.classes.hide);else return $(this.dom.container).removeClass(this.classes.hide),$(this.dom.titleRow).addClass(this.classes.hide),$(this.dom.emptyMessage).text(a),
+this.dom.emptyMessage.appendTo(this.dom.container),this.dom.container};b.prototype._attachPaneContainer=function(){for(var a=0,d=this.s.panes;a<d.length;a++)if(!0===d[a].s.displayed)return this._attach();return this._attachMessage()};b.prototype._cascadeRegen=function(a){this.regenerating=!0;var d=-1;1===a.length&&(d=a[0].index);for(var b=0,c=this.s.panes;b<c.length;b++){var e=c[b];e.setCascadeRegen(!0);e.setClear(!0);(void 0!==e.s.dtPane&&e.s.index===d||void 0!==e.s.dtPane)&&e.clearPane();e.setClear(!1)}this._makeCascadeSelections(a);
+this.s.selectionList=a;a=0;for(d=this.s.panes;a<d.length;a++)e=d[a],e.setCascadeRegen(!1);this.regenerating=!1};b.prototype._checkMessage=function(){for(var a=0,d=this.s.panes;a<d.length;a++)if(!0===d[a].s.displayed)return;return this._attachMessage()};b.prototype._getState=function(){var a=this.s.dt.state.loaded();a&&a.searchPanes&&void 0!==a.searchPanes.selectionList&&(this.s.selectionList=a.searchPanes.selectionList)};b.prototype._makeCascadeSelections=function(a){for(var d=0;d<a.length;d++)for(var b=
+a[d],c=function(a){if(a.s.index===b.index&&void 0!==a.s.dtPane){0<a.s.dtPane.rows({selected:!0}).data().toArray().length&&void 0!==a.s.dtPane&&(a.setClear(!0),a.clearPane(),a.setClear(!1));for(var c=function(c){a.s.dtPane.rows().every(function(d){a.s.dtPane.row(d).data().filter===c.filter&&a.s.dtPane.row(d).select()})},d=0,f=b.rows;d<f.length;d++)c(f[d]);e._updateFilterCount()}},e=this,f=0,n=this.s.panes;f<n.length;f++)c(n[f]);this.s.dt.state.save()};b.prototype._paneDeclare=function(a,d,b){var c=
+this;a.columns(0<this.c.columns.length?this.c.columns:void 0).eq(0).each(function(a){c.s.panes.push(new m(d,b,a,c.c.layout,c.dom.panes))});for(var e=a.columns().eq(0).toArray().length,f=this.c.panes.length,g=0;g<f;g++)this.s.panes.push(new m(d,b,e+g,this.c.layout,this.dom.panes,this.c.panes[g]));this.s.dt.settings()[0]._bInitComplete?this._paneStartup(a):this.s.dt.settings()[0].aoInitComplete.push({fn:function(){c._paneStartup(a)}})};b.prototype._paneStartup=function(a){var d=this;500>=this.s.dt.page.info().recordsTotal?
+this._startup(a):setTimeout(function(){d._startup(a)},100)};b.prototype._startup=function(a){var d=this;$(this.dom.container).text("");this._attachExtras();$(this.dom.container).append(this.dom.panes);for(var b=0,c=this.s.panes;b<c.length;b++)c[b].rebuildPane();this._updateFilterCount();this._checkMessage();a.on("draw.dtsps",function(){d._updateFilterCount();(d.c.cascadePanes||d.c.viewTotal)&&d.redrawPanes();d.s.filterPane=-1});this.s.dt.on("stateSaveParams.dtsp",function(a,c,b){void 0===b.searchPanes&&
+(b.searchPanes={});b.searchPanes.selectionList=d.s.selectionList});0<this.s.selectionList.length&&this.c.cascadePanes&&this._cascadeRegen(this.s.selectionList);a.columns(0<this.c.columns.length?this.c.columns:void 0).eq(0).each(function(a){if(void 0!==d.s.panes[a]&&void 0!==d.s.panes[a].s.dtPane&&void 0!==d.s.panes[a].s.colOpts.preSelect)for(var c=d.s.panes[a].s.dtPane.rows().data().toArray().length,b=0;b<c;b++)-1!==d.s.panes[a].s.colOpts.preSelect.indexOf(d.s.panes[a].s.dtPane.cell(b,0).data())&&
+(d.s.panes[a].s.dtPane.row(b).select(),d.s.panes[a].updateTable())});this._updateFilterCount();a.on("destroy.dtsps",function(){for(var c=0,b=d.s.panes;c<b.length;c++)b[c].destroy();a.off(".dtsps");$(d.dom.clearAll).off(".dtsps");$(d.dom.container).remove();d.clearSelections()});if(this.c.clear)$(this.dom.clearAll).on("click.dtsps",function(){d.clearSelections()});a.settings()[0]._searchPanes=this};b.prototype._updateFilterCount=function(){for(var a=0,b=0,f=this.s.panes;b<f.length;b++){var c=f[b];
+void 0!==c.s.dtPane&&(a+=c.getPaneCount())}a=this.s.dt.i18n("searchPanes.title","Filters Active - %d",a);$(this.dom.title).text(a)};b.version="1.0.1";b.classes={clear:"dtsp-clear",clearAll:"dtsp-clearAll",container:"dtsp-searchPanes",emptyMessage:"dtsp-emptyMessage",hide:"dtsp-hidden",panes:"dtsp-panesContainer",search:"dtsp-search",title:"dtsp-title",titleRow:"dtsp-titleRow"};b.defaults={cascadePanes:!1,clear:!0,container:function(a){return a.table().container()},columns:[],layout:"columns-3",panes:[],
+viewTotal:!1};return b}();(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);d&&d.fn.dataTable||(d=require("datatables.net")(a,d).$);return b(d,a,a.document)}:b(window.jQuery,window,document)})(function(b,a,d){function f(a,b){void 0===b&&(b=!1);a=new c.Api(a);var d=a.init().searchPanes||c.defaults.searchPanes;return(new h(a,d,b)).getNode()}var c=b.fn.dataTable;
+b.fn.dataTable.SearchPanes=h;b.fn.DataTable.SearchPanes=h;b.fn.dataTable.SearchPane=m;b.fn.DataTable.SearchPane=m;c.Api.register("searchPanes.rebuild()",function(){return this.iterator("table",function(){this.searchPanes&&this.searchPanes.rebuild()})});c.Api.register("column().paneOptions()",function(a){return this.iterator("column",function(b){b=this.aoColumns[b];b.searchPanes||(b.searchPanes={});b.searchPanes.values=a;this.searchPanes&&this.searchPanes.rebuild()})});a=b.fn.dataTable.Api.register;
+a("searchPanes()",function(){return this});a("searchPanes.clearSelections()",function(){this.context[0]._searchPanes.clearSelections();return this});a("searchPanes.rebuildPane()",function(a){this.context[0]._searchPanes.rebuild(a);return this});a("searchPanes.container()",function(){return this.context[0]._searchPanes.getNode()});b.fn.dataTable.ext.buttons.searchPanesClear={text:"Clear Panes",action:function(a,b,c,d){b.searchPanes.clearSelections()}};b.fn.dataTable.ext.buttons.searchPanes={text:"Search Panes",
+init:function(a,c,d){var e=new b.fn.dataTable.SearchPanes(a,{filterChanged:function(b){a.button(c).text(a.i18n("searchPanes.collapse",{0:"SearchPanes",_:"SearchPanes (%d)"},b))}}),f=a.i18n("searchPanes.collapse","SearchPanes");a.button(c).text(f);d._panes=e},action:function(a,b,c,d){a.stopPropagation();this.popover(d._panes.getNode(),{align:"dt-container"});d._panes.adjust()}};b(d).on("preInit.dt.dtsp",function(a,b,d){"dt"===a.namespace&&(b.oInit.searchPanes||c.defaults.searchPanes)&&(b._searchPanes||
+f(b,!0))});c.ext.feature.push({cFeature:"P",fnInit:f});c.ext.features&&c.ext.features.register("searchPanes",f)})})();
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,58 @@
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        // AMD
+        define(['jquery', 'datatables.net-bs', 'datatables.net-searchPanes'], function ($) {
+            return factory($, window, document);
+        });
+    }
+    else if (typeof exports === 'object') {
+        // CommonJS
+        module.exports = function (root, $) {
+            if (!root) {
+                root = window;
+            }
+            if (!$ || !$.fn.dataTable) {
+                $ = require('datatables.net-bs')(root, $).$;
+            }
+            if (!$.fn.dataTable.searchPanes) {
+                require('datatables.net-searchPanes')(root, $);
+            }
+            return factory($, root, root.document);
+        };
+    }
+    else {
+        // Browser
+        factory(jQuery, window, document);
+    }
+}(function ($, window, document) {
+    'use strict';
+    var DataTable = $.fn.dataTable;
+    $.extend(true, DataTable.SearchPane.classes, {
+        buttonGroup: 'btn-group',
+        disabledButton: 'disabled',
+        dull: 'disabled',
+        narrow: 'col narrow',
+        narrowSub: 'row',
+        pane: {
+            container: 'table'
+        },
+        paneButton: 'btn btn-light',
+        pill: 'badge badge-pill badge-light pill',
+        search: 'col-sm form-control search',
+        searchCont: 'input-group dtsp-searchCont',
+        searchLabelCont: 'input-group-btn',
+        show: 'col',
+        subRow1: 'dtsp-subRow1 text-right',
+        subRow2: 'dtsp-subRow2 text-right',
+        table: 'table table-condensed',
+        topRow: 'dtsp-topRow'
+    });
+    $.extend(true, DataTable.SearchPanes.classes, {
+        clearAll: 'dtsp-clearAll col-1 btn btn-light',
+        container: 'dtsp-searchPanes row',
+        panes: 'dtsp-panesContainer',
+        title: 'dtsp-title col-10',
+        titleRow: 'row'
+    });
+    return DataTable.searchPanes;
+}));
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-searchPanes"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs")(a,b).$);b.fn.dataTable.searchPanes||require("datatables.net-searchPanes")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b){a=c.fn.dataTable;c.extend(!0,a.SearchPane.classes,{buttonGroup:"btn-group",
+disabledButton:"disabled",dull:"disabled",narrow:"col narrow",narrowSub:"row",pane:{container:"table"},paneButton:"btn btn-light",pill:"badge badge-pill badge-light pill",search:"col-sm form-control search",searchCont:"input-group dtsp-searchCont",searchLabelCont:"input-group-btn",show:"col",subRow1:"dtsp-subRow1 text-right",subRow2:"dtsp-subRow2 text-right",table:"table table-condensed",topRow:"dtsp-topRow"});c.extend(!0,a.SearchPanes.classes,{clearAll:"dtsp-clearAll col-1 btn btn-light",container:"dtsp-searchPanes row",
+panes:"dtsp-panesContainer",title:"dtsp-title col-10",titleRow:"row"});return a.searchPanes});
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap4.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,56 @@
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        // AMD
+        define(['jquery', 'datatables.net-bs4', 'datatables.net-searchPanes'], function ($) {
+            return factory($, window, document);
+        });
+    }
+    else if (typeof exports === 'object') {
+        // CommonJS
+        module.exports = function (root, $) {
+            if (!root) {
+                root = window;
+            }
+            if (!$ || !$.fn.dataTable) {
+                $ = require('datatables.net-bs4')(root, $).$;
+            }
+            if (!$.fn.dataTable.searchPanes) {
+                require('datatables.net-searchPanes')(root, $);
+            }
+            return factory($, root, root.document);
+        };
+    }
+    else {
+        // Browser
+        factory(jQuery, window, document);
+    }
+}(function ($, window, document) {
+    'use strict';
+    var DataTable = $.fn.dataTable;
+    $.extend(true, DataTable.SearchPane.classes, {
+        buttonGroup: 'btn-group col justify-content-end',
+        disabledButton: 'disabled',
+        dull: '',
+        narrow: 'col',
+        pane: {
+            container: 'table'
+        },
+        paneButton: 'btn btn-light',
+        pill: 'pill badge badge-pill badge-secondary',
+        search: 'col-sm form-control search',
+        searchCont: 'input-group col-sm',
+        searchLabelCont: 'input-group-append',
+        subRow1: 'dtsp-subRow1',
+        subRow2: 'dtsp-subRow2',
+        table: 'table table-sm table-borderless',
+        topRow: 'dtsp-topRow row'
+    });
+    $.extend(true, DataTable.SearchPanes.classes, {
+        clearAll: 'dtsp-clearAll col-1 btn btn-light',
+        container: 'dtsp-searchPanes',
+        panes: 'dtsp-panes dtsp-container',
+        title: 'dtsp-title col-10',
+        titleRow: 'dtsp-titleRow row'
+    });
+    return DataTable.searchPanes;
+}));
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-searchPanes"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.searchPanes||require("datatables.net-searchPanes")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b){a=c.fn.dataTable;c.extend(!0,a.SearchPane.classes,{buttonGroup:"btn-group col justify-content-end",
+disabledButton:"disabled",dull:"",narrow:"col",pane:{container:"table"},paneButton:"btn btn-light",pill:"pill badge badge-pill badge-secondary",search:"col-sm form-control search",searchCont:"input-group col-sm",searchLabelCont:"input-group-append",subRow1:"dtsp-subRow1",subRow2:"dtsp-subRow2",table:"table table-sm table-borderless",topRow:"dtsp-topRow row"});c.extend(!0,a.SearchPanes.classes,{clearAll:"dtsp-clearAll col-1 btn btn-light",container:"dtsp-searchPanes",panes:"dtsp-panes dtsp-container",
+title:"dtsp-title col-10",titleRow:"dtsp-titleRow row"});return a.searchPanes});
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.dataTables.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,31 @@
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        // AMD
+        define(['jquery', 'datatables.net-dt', 'datatables.net-searchPanes'], function ($) {
+            return factory($, window, document);
+        });
+    }
+    else if (typeof exports === 'object') {
+        // CommonJS
+        module.exports = function (root, $) {
+            if (!root) {
+                root = window;
+            }
+            if (!$ || !$.fn.dataTable) {
+                $ = require('datatables.net-dt')(root, $).$;
+            }
+            if (!$.fn.dataTable.searchPanes) {
+                require('datatables.net-searchPanes')(root, $);
+            }
+            return factory($, root, root.document);
+        };
+    }
+    else {
+        // Browser
+        factory(jQuery, window, document);
+    }
+}(function ($, window, document) {
+    'use strict';
+    var DataTable = $.fn.dataTable;
+    return DataTable.searchPanes;
+}));
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.dataTables.min.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.dataTables.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.dataTables.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-dt","datatables.net-searchPanes"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-dt")(a,b).$);b.fn.dataTable.searchPanes||require("datatables.net-searchPanes")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b){return c.fn.dataTable.searchPanes});
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.foundation.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,50 @@
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        // AMD
+        define(['jquery', 'datatables.net-zf', 'datatables.net-searchpanes'], function ($) {
+            return factory($, window, document);
+        });
+    }
+    else if (typeof exports === 'object') {
+        // CommonJS
+        module.exports = function (root, $) {
+            if (!root) {
+                root = window;
+            }
+            if (!$ || !$.fn.dataTable) {
+                $ = require('datatables.net-zf')(root, $).$;
+            }
+            if (!$.fn.dataTable.searchPanes) {
+                require('datatables.net-searchpanes')(root, $);
+            }
+            return factory($, root, root.document);
+        };
+    }
+    else {
+        // Browser
+        factory(jQuery, window, document);
+    }
+}(function ($, window, document) {
+    'use strict';
+    var DataTable = $.fn.dataTable;
+    $.extend(true, DataTable.SearchPane.classes, {
+        buttonGroup: 'secondary button-group',
+        disabledButton: 'disabled',
+        dull: 'disabled',
+        narrow: 'dtsp-narrow',
+        narrowButton: 'dtsp-narrowButton',
+        narrowSearch: 'dtsp-narrowSearch',
+        paneButton: 'secondary button',
+        pill: 'badge secondary',
+        search: 'search',
+        searchLabelCont: 'searchCont',
+        show: 'col',
+        table: 'unstriped'
+    });
+    $.extend(true, DataTable.SearchPanes.classes, {
+        clearAll: 'dtsp-clearAll button secondary',
+        panes: 'panes dtsp-panesContainer',
+        title: 'dtsp-title'
+    });
+    return DataTable.searchPanes;
+}));
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.foundation.min.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-searchpanes"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-zf")(a,b).$);b.fn.dataTable.searchPanes||require("datatables.net-searchpanes")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b){a=c.fn.dataTable;c.extend(!0,a.SearchPane.classes,{buttonGroup:"secondary button-group",
+disabledButton:"disabled",dull:"disabled",narrow:"dtsp-narrow",narrowButton:"dtsp-narrowButton",narrowSearch:"dtsp-narrowSearch",paneButton:"secondary button",pill:"badge secondary",search:"search",searchLabelCont:"searchCont",show:"col",table:"unstriped"});c.extend(!0,a.SearchPanes.classes,{clearAll:"dtsp-clearAll button secondary",panes:"panes dtsp-panesContainer",title:"dtsp-title"});return a.searchPanes});
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.jqueryui.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,39 @@
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        // AMD
+        define(['jquery', 'datatables.net-ju', 'datatables.net-searchpanes'], function ($) {
+            return factory($, window, document);
+        });
+    }
+    else if (typeof exports === 'object') {
+        // CommonJS
+        module.exports = function (root, $) {
+            if (!root) {
+                root = window;
+            }
+            if (!$ || !$.fn.dataTable) {
+                $ = require('datatables.net-ju')(root, $).$;
+            }
+            if (!$.fn.dataTable.searchPanes) {
+                require('datatables.net-searchpanes')(root, $);
+            }
+            return factory($, root, root.document);
+        };
+    }
+    else {
+        // Browser
+        factory(jQuery, window, document);
+    }
+}(function ($, window, document) {
+    'use strict';
+    var DataTable = $.fn.dataTable;
+    $.extend(true, DataTable.SearchPane.classes, {
+        disabledButton: 'dtsp-paneInputButton dtsp-dull',
+        paneButton: 'dtsp-paneButton ui-button',
+        topRow: 'dtsp-topRow ui-state-default'
+    });
+    $.extend(true, DataTable.SearchPanes.classes, {
+        clearAll: 'dtsp-clearAll ui-button'
+    });
+    return DataTable.searchPanes;
+}));
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-ju","datatables.net-searchpanes"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-ju")(a,b).$);b.fn.dataTable.searchPanes||require("datatables.net-searchpanes")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b){a=c.fn.dataTable;c.extend(!0,a.SearchPane.classes,{disabledButton:"dtsp-paneInputButton dtsp-dull",
+paneButton:"dtsp-paneButton ui-button",topRow:"dtsp-topRow ui-state-default"});c.extend(!0,a.SearchPanes.classes,{clearAll:"dtsp-clearAll ui-button"});return a.searchPanes});
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.semanticui.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,50 @@
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        // AMD
+        define(['jquery', 'datatables.net-se', 'datatables.net-searchpanes'], function ($) {
+            return factory($, window, document);
+        });
+    }
+    else if (typeof exports === 'object') {
+        // CommonJS
+        module.exports = function (root, $) {
+            if (!root) {
+                root = window;
+            }
+            if (!$ || !$.fn.dataTable) {
+                $ = require('datatables.net-se')(root, $).$;
+            }
+            if (!$.fn.dataTable.searchPanes) {
+                require('datatables.net-searchpanes')(root, $);
+            }
+            return factory($, root, root.document);
+        };
+    }
+    else {
+        // Browser
+        factory(jQuery, window, document);
+    }
+}(function ($, window, document) {
+    'use strict';
+    var DataTable = $.fn.dataTable;
+    $.extend(true, DataTable.SearchPane.classes, {
+        buttonGroup: 'right floated ui buttons column',
+        container: 'dtsp-searchPane column ui grid',
+        dull: 'disabled',
+        narrowSearch: 'dtsp-narrowSearch',
+        narrowSub: 'dtsp-narrow',
+        paneButton: 'ui button',
+        paneInputButton: 'circular search link icon',
+        searchCont: 'ui icon input eight wide column',
+        topRow: 'row dtsp-topRow'
+    });
+    $.extend(true, DataTable.SearchPanes.classes, {
+        clearAll: 'dtsp-clearAll ui button',
+        container: 'dtsp-searchPanes ui grid'
+    });
+    // This override is required for the integrated search Icon in sematic ui
+    DataTable.SearchPane.prototype._searchContSetup = function () {
+        $('<i class="' + this.classes.paneInputButton + '"></i>').appendTo(this.dom.searchCont);
+    };
+    return DataTable.searchPanes;
+}));
Index: public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.semanticui.min.js
===================================================================
--- public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/SearchPanes-1.0.1/js/searchPanes.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-searchpanes"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,c){a||(a=window);c&&c.fn.dataTable||(c=require("datatables.net-se")(a,c).$);c.fn.dataTable.searchPanes||require("datatables.net-searchpanes")(a,c);return b(c,a,a.document)}:b(jQuery,window,document)})(function(b,a,c){a=b.fn.dataTable;b.extend(!0,a.SearchPane.classes,{buttonGroup:"right floated ui buttons column",
+container:"dtsp-searchPane column ui grid",dull:"disabled",narrowSearch:"dtsp-narrowSearch",narrowSub:"dtsp-narrow",paneButton:"ui button",paneInputButton:"circular search link icon",searchCont:"ui icon input eight wide column",topRow:"row dtsp-topRow"});b.extend(!0,a.SearchPanes.classes,{clearAll:"dtsp-clearAll ui button",container:"dtsp-searchPanes ui grid"});a.SearchPane.prototype._searchContSetup=function(){b('<i class="'+this.classes.paneInputButton+'"></i>').appendTo(this.dom.searchCont)};return a.searchPanes});
Index: public/vendors/dataTable/Select-1.3.1/css/select.bootstrap.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.bootstrap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,115 @@
+table.dataTable tbody > tr.selected,
+table.dataTable tbody > tr > .selected {
+  background-color: #08C;
+}
+table.dataTable.stripe tbody > tr.odd.selected,
+table.dataTable.stripe tbody > tr.odd > .selected, table.dataTable.display tbody > tr.odd.selected,
+table.dataTable.display tbody > tr.odd > .selected {
+  background-color: #0085c7;
+}
+table.dataTable.hover tbody > tr.selected:hover,
+table.dataTable.hover tbody > tr > .selected:hover, table.dataTable.display tbody > tr.selected:hover,
+table.dataTable.display tbody > tr > .selected:hover {
+  background-color: #0083c5;
+}
+table.dataTable.order-column tbody > tr.selected > .sorting_1,
+table.dataTable.order-column tbody > tr.selected > .sorting_2,
+table.dataTable.order-column tbody > tr.selected > .sorting_3,
+table.dataTable.order-column tbody > tr > .selected, table.dataTable.display tbody > tr.selected > .sorting_1,
+table.dataTable.display tbody > tr.selected > .sorting_2,
+table.dataTable.display tbody > tr.selected > .sorting_3,
+table.dataTable.display tbody > tr > .selected {
+  background-color: #0085c8;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_1 {
+  background-color: #0081c1;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_2 {
+  background-color: #0082c2;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_3 {
+  background-color: #0083c4;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_1 {
+  background-color: #0085c8;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_2 {
+  background-color: #0086ca;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_3 {
+  background-color: #0087cb;
+}
+table.dataTable.display tbody > tr.odd > .selected, table.dataTable.order-column.stripe tbody > tr.odd > .selected {
+  background-color: #0081c1;
+}
+table.dataTable.display tbody > tr.even > .selected, table.dataTable.order-column.stripe tbody > tr.even > .selected {
+  background-color: #0085c8;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_1, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_1 {
+  background-color: #007dbb;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_2, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_2 {
+  background-color: #007ebd;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_3, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_3 {
+  background-color: #007fbf;
+}
+table.dataTable.display tbody > tr:hover > .selected,
+table.dataTable.display tbody > tr > .selected:hover, table.dataTable.order-column.hover tbody > tr:hover > .selected,
+table.dataTable.order-column.hover tbody > tr > .selected:hover {
+  background-color: #007dbb;
+}
+table.dataTable tbody td.select-checkbox,
+table.dataTable tbody th.select-checkbox {
+  position: relative;
+}
+table.dataTable tbody td.select-checkbox:before, table.dataTable tbody td.select-checkbox:after,
+table.dataTable tbody th.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:after {
+  display: block;
+  position: absolute;
+  top: 1.2em;
+  left: 50%;
+  width: 12px;
+  height: 12px;
+  box-sizing: border-box;
+}
+table.dataTable tbody td.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:before {
+  content: ' ';
+  margin-top: -6px;
+  margin-left: -6px;
+  border: 1px solid black;
+  border-radius: 3px;
+}
+table.dataTable tr.selected td.select-checkbox:after,
+table.dataTable tr.selected th.select-checkbox:after {
+  content: '\2714';
+  margin-top: -11px;
+  margin-left: -4px;
+  text-align: center;
+  text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+  margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+  div.dataTables_wrapper span.select-info,
+  div.dataTables_wrapper span.select-item {
+    margin-left: 0;
+    display: block;
+  }
+}
+table.dataTable tbody tr.selected,
+table.dataTable tbody th.selected,
+table.dataTable tbody td.selected {
+  color: white;
+}
+table.dataTable tbody tr.selected a,
+table.dataTable tbody th.selected a,
+table.dataTable tbody td.selected a {
+  color: #a2d4ed;
+}
Index: public/vendors/dataTable/Select-1.3.1/css/select.bootstrap.min.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.bootstrap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#08C}table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected,table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected{background-color:#0085c7}table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover,table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover{background-color:#0083c5}table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected,table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected{background-color:#0085c8}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:#0081c1}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:#0082c2}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:#0083c4}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:#0085c8}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:#0086ca}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:#0087cb}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:#0081c1}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:#0085c8}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:#007dbb}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#007ebd}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#007fbf}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#007dbb}table.dataTable tbody td.select-checkbox,table.dataTable tbody th.select-checkbox{position:relative}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody td.select-checkbox:after,table.dataTable tbody th.select-checkbox:before,table.dataTable tbody th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:before{content:' ';margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after,table.dataTable tr.selected th.select-checkbox:after{content:'\2714';margin-top:-11px;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}table.dataTable tbody tr.selected,table.dataTable tbody th.selected,table.dataTable tbody td.selected{color:white}table.dataTable tbody tr.selected a,table.dataTable tbody th.selected a,table.dataTable tbody td.selected a{color:#a2d4ed}
Index: public/vendors/dataTable/Select-1.3.1/css/select.bootstrap4.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.bootstrap4.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,115 @@
+table.dataTable tbody > tr.selected,
+table.dataTable tbody > tr > .selected {
+  background-color: #0275d8;
+}
+table.dataTable.stripe tbody > tr.odd.selected,
+table.dataTable.stripe tbody > tr.odd > .selected, table.dataTable.display tbody > tr.odd.selected,
+table.dataTable.display tbody > tr.odd > .selected {
+  background-color: #0272d3;
+}
+table.dataTable.hover tbody > tr.selected:hover,
+table.dataTable.hover tbody > tr > .selected:hover, table.dataTable.display tbody > tr.selected:hover,
+table.dataTable.display tbody > tr > .selected:hover {
+  background-color: #0271d0;
+}
+table.dataTable.order-column tbody > tr.selected > .sorting_1,
+table.dataTable.order-column tbody > tr.selected > .sorting_2,
+table.dataTable.order-column tbody > tr.selected > .sorting_3,
+table.dataTable.order-column tbody > tr > .selected, table.dataTable.display tbody > tr.selected > .sorting_1,
+table.dataTable.display tbody > tr.selected > .sorting_2,
+table.dataTable.display tbody > tr.selected > .sorting_3,
+table.dataTable.display tbody > tr > .selected {
+  background-color: #0273d4;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_1 {
+  background-color: #026fcc;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_2 {
+  background-color: #0270ce;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_3 {
+  background-color: #0270d0;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_1 {
+  background-color: #0273d4;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_2 {
+  background-color: #0274d5;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_3 {
+  background-color: #0275d7;
+}
+table.dataTable.display tbody > tr.odd > .selected, table.dataTable.order-column.stripe tbody > tr.odd > .selected {
+  background-color: #026fcc;
+}
+table.dataTable.display tbody > tr.even > .selected, table.dataTable.order-column.stripe tbody > tr.even > .selected {
+  background-color: #0273d4;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_1, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_1 {
+  background-color: #026bc6;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_2, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_2 {
+  background-color: #026cc8;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_3, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_3 {
+  background-color: #026eca;
+}
+table.dataTable.display tbody > tr:hover > .selected,
+table.dataTable.display tbody > tr > .selected:hover, table.dataTable.order-column.hover tbody > tr:hover > .selected,
+table.dataTable.order-column.hover tbody > tr > .selected:hover {
+  background-color: #026bc6;
+}
+table.dataTable tbody td.select-checkbox,
+table.dataTable tbody th.select-checkbox {
+  position: relative;
+}
+table.dataTable tbody td.select-checkbox:before, table.dataTable tbody td.select-checkbox:after,
+table.dataTable tbody th.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:after {
+  display: block;
+  position: absolute;
+  top: 1.2em;
+  left: 50%;
+  width: 12px;
+  height: 12px;
+  box-sizing: border-box;
+}
+table.dataTable tbody td.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:before {
+  content: ' ';
+  margin-top: -6px;
+  margin-left: -6px;
+  border: 1px solid black;
+  border-radius: 3px;
+}
+table.dataTable tr.selected td.select-checkbox:after,
+table.dataTable tr.selected th.select-checkbox:after {
+  content: '\2714';
+  margin-top: -11px;
+  margin-left: -4px;
+  text-align: center;
+  text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+  margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+  div.dataTables_wrapper span.select-info,
+  div.dataTables_wrapper span.select-item {
+    margin-left: 0;
+    display: block;
+  }
+}
+table.dataTable tbody tr.selected,
+table.dataTable tbody th.selected,
+table.dataTable tbody td.selected {
+  color: white;
+}
+table.dataTable tbody tr.selected a,
+table.dataTable tbody th.selected a,
+table.dataTable tbody td.selected a {
+  color: #a2d4ed;
+}
Index: public/vendors/dataTable/Select-1.3.1/css/select.bootstrap4.min.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.bootstrap4.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#0275d8}table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected,table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected{background-color:#0272d3}table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover,table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover{background-color:#0271d0}table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected,table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected{background-color:#0273d4}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:#026fcc}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:#0270ce}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:#0270d0}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:#0273d4}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:#0274d5}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:#0275d7}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:#026fcc}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:#0273d4}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:#026bc6}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#026cc8}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#026eca}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#026bc6}table.dataTable tbody td.select-checkbox,table.dataTable tbody th.select-checkbox{position:relative}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody td.select-checkbox:after,table.dataTable tbody th.select-checkbox:before,table.dataTable tbody th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:before{content:' ';margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after,table.dataTable tr.selected th.select-checkbox:after{content:'\2714';margin-top:-11px;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}table.dataTable tbody tr.selected,table.dataTable tbody th.selected,table.dataTable tbody td.selected{color:white}table.dataTable tbody tr.selected a,table.dataTable tbody th.selected a,table.dataTable tbody td.selected a{color:#a2d4ed}
Index: public/vendors/dataTable/Select-1.3.1/css/select.dataTables.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.dataTables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,105 @@
+table.dataTable tbody > tr.selected,
+table.dataTable tbody > tr > .selected {
+  background-color: #B0BED9;
+}
+table.dataTable.stripe tbody > tr.odd.selected,
+table.dataTable.stripe tbody > tr.odd > .selected, table.dataTable.display tbody > tr.odd.selected,
+table.dataTable.display tbody > tr.odd > .selected {
+  background-color: #acbad4;
+}
+table.dataTable.hover tbody > tr.selected:hover,
+table.dataTable.hover tbody > tr > .selected:hover, table.dataTable.display tbody > tr.selected:hover,
+table.dataTable.display tbody > tr > .selected:hover {
+  background-color: #aab7d1;
+}
+table.dataTable.order-column tbody > tr.selected > .sorting_1,
+table.dataTable.order-column tbody > tr.selected > .sorting_2,
+table.dataTable.order-column tbody > tr.selected > .sorting_3,
+table.dataTable.order-column tbody > tr > .selected, table.dataTable.display tbody > tr.selected > .sorting_1,
+table.dataTable.display tbody > tr.selected > .sorting_2,
+table.dataTable.display tbody > tr.selected > .sorting_3,
+table.dataTable.display tbody > tr > .selected {
+  background-color: #acbad5;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_1 {
+  background-color: #a6b4cd;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_2 {
+  background-color: #a8b5cf;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_3 {
+  background-color: #a9b7d1;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_1 {
+  background-color: #acbad5;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_2 {
+  background-color: #aebcd6;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_3 {
+  background-color: #afbdd8;
+}
+table.dataTable.display tbody > tr.odd > .selected, table.dataTable.order-column.stripe tbody > tr.odd > .selected {
+  background-color: #a6b4cd;
+}
+table.dataTable.display tbody > tr.even > .selected, table.dataTable.order-column.stripe tbody > tr.even > .selected {
+  background-color: #acbad5;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_1, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_1 {
+  background-color: #a2aec7;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_2, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_2 {
+  background-color: #a3b0c9;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_3, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_3 {
+  background-color: #a5b2cb;
+}
+table.dataTable.display tbody > tr:hover > .selected,
+table.dataTable.display tbody > tr > .selected:hover, table.dataTable.order-column.hover tbody > tr:hover > .selected,
+table.dataTable.order-column.hover tbody > tr > .selected:hover {
+  background-color: #a2aec7;
+}
+table.dataTable tbody td.select-checkbox,
+table.dataTable tbody th.select-checkbox {
+  position: relative;
+}
+table.dataTable tbody td.select-checkbox:before, table.dataTable tbody td.select-checkbox:after,
+table.dataTable tbody th.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:after {
+  display: block;
+  position: absolute;
+  top: 1.2em;
+  left: 50%;
+  width: 12px;
+  height: 12px;
+  box-sizing: border-box;
+}
+table.dataTable tbody td.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:before {
+  content: ' ';
+  margin-top: -6px;
+  margin-left: -6px;
+  border: 1px solid black;
+  border-radius: 3px;
+}
+table.dataTable tr.selected td.select-checkbox:after,
+table.dataTable tr.selected th.select-checkbox:after {
+  content: '\2714';
+  margin-top: -11px;
+  margin-left: -4px;
+  text-align: center;
+  text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+  margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+  div.dataTables_wrapper span.select-info,
+  div.dataTables_wrapper span.select-item {
+    margin-left: 0;
+    display: block;
+  }
+}
Index: public/vendors/dataTable/Select-1.3.1/css/select.dataTables.min.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.dataTables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#B0BED9}table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected,table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected{background-color:#acbad4}table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover,table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover{background-color:#aab7d1}table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected,table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected{background-color:#acbad5}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:#a6b4cd}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:#acbad5}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#a5b2cb}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#a2aec7}table.dataTable tbody td.select-checkbox,table.dataTable tbody th.select-checkbox{position:relative}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody td.select-checkbox:after,table.dataTable tbody th.select-checkbox:before,table.dataTable tbody th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:before{content:' ';margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after,table.dataTable tr.selected th.select-checkbox:after{content:'\2714';margin-top:-11px;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}
Index: public/vendors/dataTable/Select-1.3.1/css/select.foundation.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.foundation.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,117 @@
+table.dataTable tbody > tr.selected,
+table.dataTable tbody > tr > .selected {
+  background-color: #008cba;
+}
+table.dataTable.stripe tbody > tr.odd.selected,
+table.dataTable.stripe tbody > tr.odd > .selected, table.dataTable.display tbody > tr.odd.selected,
+table.dataTable.display tbody > tr.odd > .selected {
+  background-color: #0089b6;
+}
+table.dataTable.hover tbody > tr.selected:hover,
+table.dataTable.hover tbody > tr > .selected:hover, table.dataTable.display tbody > tr.selected:hover,
+table.dataTable.display tbody > tr > .selected:hover {
+  background-color: #0087b3;
+}
+table.dataTable.order-column tbody > tr.selected > .sorting_1,
+table.dataTable.order-column tbody > tr.selected > .sorting_2,
+table.dataTable.order-column tbody > tr.selected > .sorting_3,
+table.dataTable.order-column tbody > tr > .selected, table.dataTable.display tbody > tr.selected > .sorting_1,
+table.dataTable.display tbody > tr.selected > .sorting_2,
+table.dataTable.display tbody > tr.selected > .sorting_3,
+table.dataTable.display tbody > tr > .selected {
+  background-color: #0089b6;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_1 {
+  background-color: #0084b0;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_2 {
+  background-color: #0085b1;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_3 {
+  background-color: #0087b3;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_1 {
+  background-color: #0089b6;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_2 {
+  background-color: #008ab8;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_3 {
+  background-color: #008bb9;
+}
+table.dataTable.display tbody > tr.odd > .selected, table.dataTable.order-column.stripe tbody > tr.odd > .selected {
+  background-color: #0084b0;
+}
+table.dataTable.display tbody > tr.even > .selected, table.dataTable.order-column.stripe tbody > tr.even > .selected {
+  background-color: #0089b6;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_1, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_1 {
+  background-color: #0081ab;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_2, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_2 {
+  background-color: #0082ac;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_3, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_3 {
+  background-color: #0083ae;
+}
+table.dataTable.display tbody > tr:hover > .selected,
+table.dataTable.display tbody > tr > .selected:hover, table.dataTable.order-column.hover tbody > tr:hover > .selected,
+table.dataTable.order-column.hover tbody > tr > .selected:hover {
+  background-color: #0081ab;
+}
+table.dataTable tbody td.select-checkbox,
+table.dataTable tbody th.select-checkbox {
+  position: relative;
+}
+table.dataTable tbody td.select-checkbox:before, table.dataTable tbody td.select-checkbox:after,
+table.dataTable tbody th.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:after {
+  display: block;
+  position: absolute;
+  top: 1.2em;
+  left: 50%;
+  width: 12px;
+  height: 12px;
+  box-sizing: border-box;
+}
+table.dataTable tbody td.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:before {
+  content: ' ';
+  margin-top: -6px;
+  margin-left: -6px;
+  border: 1px solid black;
+  border-radius: 3px;
+}
+table.dataTable tr.selected td.select-checkbox:after,
+table.dataTable tr.selected th.select-checkbox:after {
+  content: '\2714';
+  margin-top: -11px;
+  margin-left: -4px;
+  text-align: center;
+  text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+  margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+  div.dataTables_wrapper span.select-info,
+  div.dataTables_wrapper span.select-item {
+    margin-left: 0;
+    display: block;
+  }
+}
+table.dataTable tbody tr.selected th,
+table.dataTable tbody tr.selected td,
+table.dataTable tbody th.selected,
+table.dataTable tbody td.selected {
+  color: white;
+}
+table.dataTable tbody tr.selected th a,
+table.dataTable tbody tr.selected td a,
+table.dataTable tbody th.selected a,
+table.dataTable tbody td.selected a {
+  color: #a2d4ed;
+}
Index: public/vendors/dataTable/Select-1.3.1/css/select.foundation.min.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.foundation.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#008cba}table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected,table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected{background-color:#0089b6}table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover,table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover{background-color:#0087b3}table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected,table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected{background-color:#0089b6}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:#0084b0}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:#0085b1}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:#0087b3}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:#0089b6}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:#008ab8}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:#008bb9}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:#0084b0}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:#0089b6}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:#0081ab}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#0082ac}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#0083ae}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#0081ab}table.dataTable tbody td.select-checkbox,table.dataTable tbody th.select-checkbox{position:relative}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody td.select-checkbox:after,table.dataTable tbody th.select-checkbox:before,table.dataTable tbody th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:before{content:' ';margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after,table.dataTable tr.selected th.select-checkbox:after{content:'\2714';margin-top:-11px;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}table.dataTable tbody tr.selected th,table.dataTable tbody tr.selected td,table.dataTable tbody th.selected,table.dataTable tbody td.selected{color:white}table.dataTable tbody tr.selected th a,table.dataTable tbody tr.selected td a,table.dataTable tbody th.selected a,table.dataTable tbody td.selected a{color:#a2d4ed}
Index: public/vendors/dataTable/Select-1.3.1/css/select.jqueryui.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.jqueryui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,105 @@
+table.dataTable tbody > tr.selected,
+table.dataTable tbody > tr > .selected {
+  background-color: #B0BED9;
+}
+table.dataTable.stripe tbody > tr.odd.selected,
+table.dataTable.stripe tbody > tr.odd > .selected, table.dataTable.display tbody > tr.odd.selected,
+table.dataTable.display tbody > tr.odd > .selected {
+  background-color: #acbad4;
+}
+table.dataTable.hover tbody > tr.selected:hover,
+table.dataTable.hover tbody > tr > .selected:hover, table.dataTable.display tbody > tr.selected:hover,
+table.dataTable.display tbody > tr > .selected:hover {
+  background-color: #aab7d1;
+}
+table.dataTable.order-column tbody > tr.selected > .sorting_1,
+table.dataTable.order-column tbody > tr.selected > .sorting_2,
+table.dataTable.order-column tbody > tr.selected > .sorting_3,
+table.dataTable.order-column tbody > tr > .selected, table.dataTable.display tbody > tr.selected > .sorting_1,
+table.dataTable.display tbody > tr.selected > .sorting_2,
+table.dataTable.display tbody > tr.selected > .sorting_3,
+table.dataTable.display tbody > tr > .selected {
+  background-color: #acbad5;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_1 {
+  background-color: #a6b4cd;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_2 {
+  background-color: #a8b5cf;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_3 {
+  background-color: #a9b7d1;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_1 {
+  background-color: #acbad5;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_2 {
+  background-color: #aebcd6;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_3 {
+  background-color: #afbdd8;
+}
+table.dataTable.display tbody > tr.odd > .selected, table.dataTable.order-column.stripe tbody > tr.odd > .selected {
+  background-color: #a6b4cd;
+}
+table.dataTable.display tbody > tr.even > .selected, table.dataTable.order-column.stripe tbody > tr.even > .selected {
+  background-color: #acbad5;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_1, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_1 {
+  background-color: #a2aec7;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_2, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_2 {
+  background-color: #a3b0c9;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_3, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_3 {
+  background-color: #a5b2cb;
+}
+table.dataTable.display tbody > tr:hover > .selected,
+table.dataTable.display tbody > tr > .selected:hover, table.dataTable.order-column.hover tbody > tr:hover > .selected,
+table.dataTable.order-column.hover tbody > tr > .selected:hover {
+  background-color: #a2aec7;
+}
+table.dataTable tbody td.select-checkbox,
+table.dataTable tbody th.select-checkbox {
+  position: relative;
+}
+table.dataTable tbody td.select-checkbox:before, table.dataTable tbody td.select-checkbox:after,
+table.dataTable tbody th.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:after {
+  display: block;
+  position: absolute;
+  top: 1.2em;
+  left: 50%;
+  width: 12px;
+  height: 12px;
+  box-sizing: border-box;
+}
+table.dataTable tbody td.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:before {
+  content: ' ';
+  margin-top: -6px;
+  margin-left: -6px;
+  border: 1px solid black;
+  border-radius: 3px;
+}
+table.dataTable tr.selected td.select-checkbox:after,
+table.dataTable tr.selected th.select-checkbox:after {
+  content: '\2714';
+  margin-top: -11px;
+  margin-left: -4px;
+  text-align: center;
+  text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+  margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+  div.dataTables_wrapper span.select-info,
+  div.dataTables_wrapper span.select-item {
+    margin-left: 0;
+    display: block;
+  }
+}
Index: public/vendors/dataTable/Select-1.3.1/css/select.jqueryui.min.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.jqueryui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#B0BED9}table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected,table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected{background-color:#acbad4}table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover,table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover{background-color:#aab7d1}table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected,table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected{background-color:#acbad5}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:#a6b4cd}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:#acbad5}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#a5b2cb}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#a2aec7}table.dataTable tbody td.select-checkbox,table.dataTable tbody th.select-checkbox{position:relative}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody td.select-checkbox:after,table.dataTable tbody th.select-checkbox:before,table.dataTable tbody th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:before{content:' ';margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after,table.dataTable tr.selected th.select-checkbox:after{content:'\2714';margin-top:-11px;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}
Index: public/vendors/dataTable/Select-1.3.1/css/select.semanticui.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.semanticui.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,110 @@
+table.dataTable tbody > tr.selected,
+table.dataTable tbody > tr > .selected {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+table.dataTable.stripe tbody > tr.odd.selected,
+table.dataTable.stripe tbody > tr.odd > .selected, table.dataTable.display tbody > tr.odd.selected,
+table.dataTable.display tbody > tr.odd > .selected {
+  background-color: rgba(0, 0, 0, 0.072325);
+}
+table.dataTable.hover tbody > tr.selected:hover,
+table.dataTable.hover tbody > tr > .selected:hover, table.dataTable.display tbody > tr.selected:hover,
+table.dataTable.display tbody > tr > .selected:hover {
+  background-color: rgba(0, 0, 0, 0.0842);
+}
+table.dataTable.order-column tbody > tr.selected > .sorting_1,
+table.dataTable.order-column tbody > tr.selected > .sorting_2,
+table.dataTable.order-column tbody > tr.selected > .sorting_3,
+table.dataTable.order-column tbody > tr > .selected, table.dataTable.display tbody > tr.selected > .sorting_1,
+table.dataTable.display tbody > tr.selected > .sorting_2,
+table.dataTable.display tbody > tr.selected > .sorting_3,
+table.dataTable.display tbody > tr > .selected {
+  background-color: rgba(0, 0, 0, 0.069);
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_1 {
+  background-color: rgba(0, 0, 0, 0.1013);
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_2 {
+  background-color: rgba(0, 0, 0, 0.09465);
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_3 {
+  background-color: rgba(0, 0, 0, 0.08705);
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_1 {
+  background-color: rgba(0, 0, 0, 0.069);
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_2 {
+  background-color: rgba(0, 0, 0, 0.0614);
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_3 {
+  background-color: rgba(0, 0, 0, 0.0538);
+}
+table.dataTable.display tbody > tr.odd > .selected, table.dataTable.order-column.stripe tbody > tr.odd > .selected {
+  background-color: rgba(0, 0, 0, 0.1013);
+}
+table.dataTable.display tbody > tr.even > .selected, table.dataTable.order-column.stripe tbody > tr.even > .selected {
+  background-color: rgba(0, 0, 0, 0.069);
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_1, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_1 {
+  background-color: rgba(0, 0, 0, 0.1279);
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_2, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_2 {
+  background-color: rgba(0, 0, 0, 0.12125);
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_3, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_3 {
+  background-color: rgba(0, 0, 0, 0.10985);
+}
+table.dataTable.display tbody > tr:hover > .selected,
+table.dataTable.display tbody > tr > .selected:hover, table.dataTable.order-column.hover tbody > tr:hover > .selected,
+table.dataTable.order-column.hover tbody > tr > .selected:hover {
+  background-color: rgba(0, 0, 0, 0.1279);
+}
+table.dataTable tbody td.select-checkbox,
+table.dataTable tbody th.select-checkbox {
+  position: relative;
+}
+table.dataTable tbody td.select-checkbox:before, table.dataTable tbody td.select-checkbox:after,
+table.dataTable tbody th.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:after {
+  display: block;
+  position: absolute;
+  top: 1.2em;
+  left: 50%;
+  width: 12px;
+  height: 12px;
+  box-sizing: border-box;
+}
+table.dataTable tbody td.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:before {
+  content: ' ';
+  margin-top: -6px;
+  margin-left: -6px;
+  border: 1px solid black;
+  border-radius: 3px;
+}
+table.dataTable tr.selected td.select-checkbox:after,
+table.dataTable tr.selected th.select-checkbox:after {
+  content: '\2714';
+  margin-top: -11px;
+  margin-left: -4px;
+  text-align: center;
+  text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+  margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+  div.dataTables_wrapper span.select-info,
+  div.dataTables_wrapper span.select-item {
+    margin-left: 0;
+    display: block;
+  }
+}
+table.dataTable tbody tr.selected,
+table.dataTable tbody th.selected,
+table.dataTable tbody td.selected {
+  color: rgba(0, 0, 0, 0.95);
+}
Index: public/vendors/dataTable/Select-1.3.1/css/select.semanticui.min.css
===================================================================
--- public/vendors/dataTable/Select-1.3.1/css/select.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/css/select.semanticui.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:rgba(0,0,0,0.05)}table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected,table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected{background-color:rgba(0,0,0,0.072325)}table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover,table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover{background-color:rgba(0,0,0,0.0842)}table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected,table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected{background-color:rgba(0,0,0,0.069)}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:rgba(0,0,0,0.1013)}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:rgba(0,0,0,0.09465)}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:rgba(0,0,0,0.08705)}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:rgba(0,0,0,0.069)}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:rgba(0,0,0,0.0614)}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:rgba(0,0,0,0.0538)}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:rgba(0,0,0,0.1013)}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:rgba(0,0,0,0.069)}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:rgba(0,0,0,0.1279)}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:rgba(0,0,0,0.12125)}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:rgba(0,0,0,0.10985)}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:rgba(0,0,0,0.1279)}table.dataTable tbody td.select-checkbox,table.dataTable tbody th.select-checkbox{position:relative}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody td.select-checkbox:after,table.dataTable tbody th.select-checkbox:before,table.dataTable tbody th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:before{content:' ';margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after,table.dataTable tr.selected th.select-checkbox:after{content:'\2714';margin-top:-11px;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}table.dataTable tbody tr.selected,table.dataTable tbody th.selected,table.dataTable tbody td.selected{color:rgba(0,0,0,0.95)}
Index: public/vendors/dataTable/Select-1.3.1/js/dataTables.select.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/dataTables.select.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/dataTables.select.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1206 @@
+/*! Select for DataTables 1.3.1
+ * 2015-2019 SpryMedia Ltd - datatables.net/license/mit
+ */
+
+/**
+ * @summary     Select for DataTables
+ * @description A collection of API methods, events and buttons for DataTables
+ *   that provides selection options of the items in a DataTable
+ * @version     1.3.1
+ * @file        dataTables.select.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     datatables.net/forums
+ * @copyright   Copyright 2015-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net/extensions/select
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+// Version information for debugger
+DataTable.select = {};
+
+DataTable.select.version = '1.3.1';
+
+DataTable.select.init = function ( dt ) {
+	var ctx = dt.settings()[0];
+	var init = ctx.oInit.select;
+	var defaults = DataTable.defaults.select;
+	var opts = init === undefined ?
+		defaults :
+		init;
+
+	// Set defaults
+	var items = 'row';
+	var style = 'api';
+	var blurable = false;
+	var toggleable = true;
+	var info = true;
+	var selector = 'td, th';
+	var className = 'selected';
+	var setStyle = false;
+
+	ctx._select = {};
+
+	// Initialisation customisations
+	if ( opts === true ) {
+		style = 'os';
+		setStyle = true;
+	}
+	else if ( typeof opts === 'string' ) {
+		style = opts;
+		setStyle = true;
+	}
+	else if ( $.isPlainObject( opts ) ) {
+		if ( opts.blurable !== undefined ) {
+			blurable = opts.blurable;
+		}
+		
+		if ( opts.toggleable !== undefined ) {
+			toggleable = opts.toggleable;
+		}
+
+		if ( opts.info !== undefined ) {
+			info = opts.info;
+		}
+
+		if ( opts.items !== undefined ) {
+			items = opts.items;
+		}
+
+		if ( opts.style !== undefined ) {
+			style = opts.style;
+			setStyle = true;
+		}
+		else {
+			style = 'os';
+			setStyle = true;
+		}
+
+		if ( opts.selector !== undefined ) {
+			selector = opts.selector;
+		}
+
+		if ( opts.className !== undefined ) {
+			className = opts.className;
+		}
+	}
+
+	dt.select.selector( selector );
+	dt.select.items( items );
+	dt.select.style( style );
+	dt.select.blurable( blurable );
+	dt.select.toggleable( toggleable );
+	dt.select.info( info );
+	ctx._select.className = className;
+
+
+	// Sort table based on selected rows. Requires Select Datatables extension
+	$.fn.dataTable.ext.order['select-checkbox'] = function ( settings, col ) {
+		return this.api().column( col, {order: 'index'} ).nodes().map( function ( td ) {
+			if ( settings._select.items === 'row' ) {
+				return $( td ).parent().hasClass( settings._select.className );
+			} else if ( settings._select.items === 'cell' ) {
+				return $( td ).hasClass( settings._select.className );
+			}
+			return false;
+		});
+	};
+
+	// If the init options haven't enabled select, but there is a selectable
+	// class name, then enable
+	if ( ! setStyle && $( dt.table().node() ).hasClass( 'selectable' ) ) {
+		dt.select.style( 'os' );
+	}
+};
+
+/*
+
+Select is a collection of API methods, event handlers, event emitters and
+buttons (for the `Buttons` extension) for DataTables. It provides the following
+features, with an overview of how they are implemented:
+
+## Selection of rows, columns and cells. Whether an item is selected or not is
+   stored in:
+
+* rows: a `_select_selected` property which contains a boolean value of the
+  DataTables' `aoData` object for each row
+* columns: a `_select_selected` property which contains a boolean value of the
+  DataTables' `aoColumns` object for each column
+* cells: a `_selected_cells` property which contains an array of boolean values
+  of the `aoData` object for each row. The array is the same length as the
+  columns array, with each element of it representing a cell.
+
+This method of using boolean flags allows Select to operate when nodes have not
+been created for rows / cells (DataTables' defer rendering feature).
+
+## API methods
+
+A range of API methods are available for triggering selection and de-selection
+of rows. Methods are also available to configure the selection events that can
+be triggered by an end user (such as which items are to be selected). To a large
+extent, these of API methods *is* Select. It is basically a collection of helper
+functions that can be used to select items in a DataTable.
+
+Configuration of select is held in the object `_select` which is attached to the
+DataTables settings object on initialisation. Select being available on a table
+is not optional when Select is loaded, but its default is for selection only to
+be available via the API - so the end user wouldn't be able to select rows
+without additional configuration.
+
+The `_select` object contains the following properties:
+
+```
+{
+	items:string       - Can be `rows`, `columns` or `cells`. Defines what item 
+	                     will be selected if the user is allowed to activate row
+	                     selection using the mouse.
+	style:string       - Can be `none`, `single`, `multi` or `os`. Defines the
+	                     interaction style when selecting items
+	blurable:boolean   - If row selection can be cleared by clicking outside of
+	                     the table
+	toggleable:boolean - If row selection can be cancelled by repeated clicking
+	                     on the row
+	info:boolean       - If the selection summary should be shown in the table
+	                     information elements
+}
+```
+
+In addition to the API methods, Select also extends the DataTables selector
+options for rows, columns and cells adding a `selected` option to the selector
+options object, allowing the developer to select only selected items or
+unselected items.
+
+## Mouse selection of items
+
+Clicking on items can be used to select items. This is done by a simple event
+handler that will select the items using the API methods.
+
+ */
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Local functions
+ */
+
+/**
+ * Add one or more cells to the selection when shift clicking in OS selection
+ * style cell selection.
+ *
+ * Cell range is more complicated than row and column as we want to select
+ * in the visible grid rather than by index in sequence. For example, if you
+ * click first in cell 1-1 and then shift click in 2-2 - cells 1-2 and 2-1
+ * should also be selected (and not 1-3, 1-4. etc)
+ * 
+ * @param  {DataTable.Api} dt   DataTable
+ * @param  {object}        idx  Cell index to select to
+ * @param  {object}        last Cell index to select from
+ * @private
+ */
+function cellRange( dt, idx, last )
+{
+	var indexes;
+	var columnIndexes;
+	var rowIndexes;
+	var selectColumns = function ( start, end ) {
+		if ( start > end ) {
+			var tmp = end;
+			end = start;
+			start = tmp;
+		}
+		
+		var record = false;
+		return dt.columns( ':visible' ).indexes().filter( function (i) {
+			if ( i === start ) {
+				record = true;
+			}
+			
+			if ( i === end ) { // not else if, as start might === end
+				record = false;
+				return true;
+			}
+
+			return record;
+		} );
+	};
+
+	var selectRows = function ( start, end ) {
+		var indexes = dt.rows( { search: 'applied' } ).indexes();
+
+		// Which comes first - might need to swap
+		if ( indexes.indexOf( start ) > indexes.indexOf( end ) ) {
+			var tmp = end;
+			end = start;
+			start = tmp;
+		}
+
+		var record = false;
+		return indexes.filter( function (i) {
+			if ( i === start ) {
+				record = true;
+			}
+			
+			if ( i === end ) {
+				record = false;
+				return true;
+			}
+
+			return record;
+		} );
+	};
+
+	if ( ! dt.cells( { selected: true } ).any() && ! last ) {
+		// select from the top left cell to this one
+		columnIndexes = selectColumns( 0, idx.column );
+		rowIndexes = selectRows( 0 , idx.row );
+	}
+	else {
+		// Get column indexes between old and new
+		columnIndexes = selectColumns( last.column, idx.column );
+		rowIndexes = selectRows( last.row , idx.row );
+	}
+
+	indexes = dt.cells( rowIndexes, columnIndexes ).flatten();
+
+	if ( ! dt.cells( idx, { selected: true } ).any() ) {
+		// Select range
+		dt.cells( indexes ).select();
+	}
+	else {
+		// Deselect range
+		dt.cells( indexes ).deselect();
+	}
+}
+
+/**
+ * Disable mouse selection by removing the selectors
+ *
+ * @param {DataTable.Api} dt DataTable to remove events from
+ * @private
+ */
+function disableMouseSelection( dt )
+{
+	var ctx = dt.settings()[0];
+	var selector = ctx._select.selector;
+
+	$( dt.table().container() )
+		.off( 'mousedown.dtSelect', selector )
+		.off( 'mouseup.dtSelect', selector )
+		.off( 'click.dtSelect', selector );
+
+	$('body').off( 'click.dtSelect' + _safeId(dt.table().node()) );
+}
+
+/**
+ * Attach mouse listeners to the table to allow mouse selection of items
+ *
+ * @param {DataTable.Api} dt DataTable to remove events from
+ * @private
+ */
+function enableMouseSelection ( dt )
+{
+	var container = $( dt.table().container() );
+	var ctx = dt.settings()[0];
+	var selector = ctx._select.selector;
+	var matchSelection;
+
+	container
+		.on( 'mousedown.dtSelect', selector, function(e) {
+			// Disallow text selection for shift clicking on the table so multi
+			// element selection doesn't look terrible!
+			if ( e.shiftKey || e.metaKey || e.ctrlKey ) {
+				container
+					.css( '-moz-user-select', 'none' )
+					.one('selectstart.dtSelect', selector, function () {
+						return false;
+					} );
+			}
+
+			if ( window.getSelection ) {
+				matchSelection = window.getSelection();
+			}
+		} )
+		.on( 'mouseup.dtSelect', selector, function() {
+			// Allow text selection to occur again, Mozilla style (tested in FF
+			// 35.0.1 - still required)
+			container.css( '-moz-user-select', '' );
+		} )
+		.on( 'click.dtSelect', selector, function ( e ) {
+			var items = dt.select.items();
+			var idx;
+
+			// If text was selected (click and drag), then we shouldn't change
+			// the row's selected state
+			if ( matchSelection ) {
+				var selection = window.getSelection();
+
+				// If the element that contains the selection is not in the table, we can ignore it
+				// This can happen if the developer selects text from the click event
+				if ( ! selection.anchorNode || $(selection.anchorNode).closest('table')[0] === dt.table().node() ) {
+					if ( selection !== matchSelection ) {
+						return;
+					}
+				}
+			}
+
+			var ctx = dt.settings()[0];
+			var wrapperClass = $.trim(dt.settings()[0].oClasses.sWrapper).replace(/ +/g, '.');
+
+			// Ignore clicks inside a sub-table
+			if ( $(e.target).closest('div.'+wrapperClass)[0] != dt.table().container() ) {
+				return;
+			}
+
+			var cell = dt.cell( $(e.target).closest('td, th') );
+
+			// Check the cell actually belongs to the host DataTable (so child
+			// rows, etc, are ignored)
+			if ( ! cell.any() ) {
+				return;
+			}
+
+			var event = $.Event('user-select.dt');
+			eventTrigger( dt, event, [ items, cell, e ] );
+
+			if ( event.isDefaultPrevented() ) {
+				return;
+			}
+
+			var cellIndex = cell.index();
+			if ( items === 'row' ) {
+				idx = cellIndex.row;
+				typeSelect( e, dt, ctx, 'row', idx );
+			}
+			else if ( items === 'column' ) {
+				idx = cell.index().column;
+				typeSelect( e, dt, ctx, 'column', idx );
+			}
+			else if ( items === 'cell' ) {
+				idx = cell.index();
+				typeSelect( e, dt, ctx, 'cell', idx );
+			}
+
+			ctx._select_lastCell = cellIndex;
+		} );
+
+	// Blurable
+	$('body').on( 'click.dtSelect' + _safeId(dt.table().node()), function ( e ) {
+		if ( ctx._select.blurable ) {
+			// If the click was inside the DataTables container, don't blur
+			if ( $(e.target).parents().filter( dt.table().container() ).length ) {
+				return;
+			}
+
+			// Ignore elements which have been removed from the DOM (i.e. paging
+			// buttons)
+			if ( $(e.target).parents('html').length === 0 ) {
+			 	return;
+			}
+
+			// Don't blur in Editor form
+			if ( $(e.target).parents('div.DTE').length ) {
+				return;
+			}
+
+			clear( ctx, true );
+		}
+	} );
+}
+
+/**
+ * Trigger an event on a DataTable
+ *
+ * @param {DataTable.Api} api      DataTable to trigger events on
+ * @param  {boolean}      selected true if selected, false if deselected
+ * @param  {string}       type     Item type acting on
+ * @param  {boolean}      any      Require that there are values before
+ *     triggering
+ * @private
+ */
+function eventTrigger ( api, type, args, any )
+{
+	if ( any && ! api.flatten().length ) {
+		return;
+	}
+
+	if ( typeof type === 'string' ) {
+		type = type +'.dt';
+	}
+
+	args.unshift( api );
+
+	$(api.table().node()).trigger( type, args );
+}
+
+/**
+ * Update the information element of the DataTable showing information about the
+ * items selected. This is done by adding tags to the existing text
+ * 
+ * @param {DataTable.Api} api DataTable to update
+ * @private
+ */
+function info ( api )
+{
+	var ctx = api.settings()[0];
+
+	if ( ! ctx._select.info || ! ctx.aanFeatures.i ) {
+		return;
+	}
+
+	if ( api.select.style() === 'api' ) {
+		return;
+	}
+
+	var rows    = api.rows( { selected: true } ).flatten().length;
+	var columns = api.columns( { selected: true } ).flatten().length;
+	var cells   = api.cells( { selected: true } ).flatten().length;
+
+	var add = function ( el, name, num ) {
+		el.append( $('<span class="select-item"/>').append( api.i18n(
+			'select.'+name+'s',
+			{ _: '%d '+name+'s selected', 0: '', 1: '1 '+name+' selected' },
+			num
+		) ) );
+	};
+
+	// Internal knowledge of DataTables to loop over all information elements
+	$.each( ctx.aanFeatures.i, function ( i, el ) {
+		el = $(el);
+
+		var output  = $('<span class="select-info"/>');
+		add( output, 'row', rows );
+		add( output, 'column', columns );
+		add( output, 'cell', cells  );
+
+		var exisiting = el.children('span.select-info');
+		if ( exisiting.length ) {
+			exisiting.remove();
+		}
+
+		if ( output.text() !== '' ) {
+			el.append( output );
+		}
+	} );
+}
+
+/**
+ * Initialisation of a new table. Attach event handlers and callbacks to allow
+ * Select to operate correctly.
+ *
+ * This will occur _after_ the initial DataTables initialisation, although
+ * before Ajax data is rendered, if there is ajax data
+ *
+ * @param  {DataTable.settings} ctx Settings object to operate on
+ * @private
+ */
+function init ( ctx ) {
+	var api = new DataTable.Api( ctx );
+
+	// Row callback so that classes can be added to rows and cells if the item
+	// was selected before the element was created. This will happen with the
+	// `deferRender` option enabled.
+	// 
+	// This method of attaching to `aoRowCreatedCallback` is a hack until
+	// DataTables has proper events for row manipulation If you are reviewing
+	// this code to create your own plug-ins, please do not do this!
+	ctx.aoRowCreatedCallback.push( {
+		fn: function ( row, data, index ) {
+			var i, ien;
+			var d = ctx.aoData[ index ];
+
+			// Row
+			if ( d._select_selected ) {
+				$( row ).addClass( ctx._select.className );
+			}
+
+			// Cells and columns - if separated out, we would need to do two
+			// loops, so it makes sense to combine them into a single one
+			for ( i=0, ien=ctx.aoColumns.length ; i<ien ; i++ ) {
+				if ( ctx.aoColumns[i]._select_selected || (d._selected_cells && d._selected_cells[i]) ) {
+					$(d.anCells[i]).addClass( ctx._select.className );
+				}
+			}
+		},
+		sName: 'select-deferRender'
+	} );
+
+	// On Ajax reload we want to reselect all rows which are currently selected,
+	// if there is an rowId (i.e. a unique value to identify each row with)
+	api.on( 'preXhr.dt.dtSelect', function () {
+		// note that column selection doesn't need to be cached and then
+		// reselected, as they are already selected
+		var rows = api.rows( { selected: true } ).ids( true ).filter( function ( d ) {
+			return d !== undefined;
+		} );
+
+		var cells = api.cells( { selected: true } ).eq(0).map( function ( cellIdx ) {
+			var id = api.row( cellIdx.row ).id( true );
+			return id ?
+				{ row: id, column: cellIdx.column } :
+				undefined;
+		} ).filter( function ( d ) {
+			return d !== undefined;
+		} );
+
+		// On the next draw, reselect the currently selected items
+		api.one( 'draw.dt.dtSelect', function () {
+			api.rows( rows ).select();
+
+			// `cells` is not a cell index selector, so it needs a loop
+			if ( cells.any() ) {
+				cells.each( function ( id ) {
+					api.cells( id.row, id.column ).select();
+				} );
+			}
+		} );
+	} );
+
+	// Update the table information element with selected item summary
+	api.on( 'draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt', function () {
+		info( api );
+	} );
+
+	// Clean up and release
+	api.on( 'destroy.dtSelect', function () {
+		disableMouseSelection( api );
+		api.off( '.dtSelect' );
+	} );
+}
+
+/**
+ * Add one or more items (rows or columns) to the selection when shift clicking
+ * in OS selection style
+ *
+ * @param  {DataTable.Api} dt   DataTable
+ * @param  {string}        type Row or column range selector
+ * @param  {object}        idx  Item index to select to
+ * @param  {object}        last Item index to select from
+ * @private
+ */
+function rowColumnRange( dt, type, idx, last )
+{
+	// Add a range of rows from the last selected row to this one
+	var indexes = dt[type+'s']( { search: 'applied' } ).indexes();
+	var idx1 = $.inArray( last, indexes );
+	var idx2 = $.inArray( idx, indexes );
+
+	if ( ! dt[type+'s']( { selected: true } ).any() && idx1 === -1 ) {
+		// select from top to here - slightly odd, but both Windows and Mac OS
+		// do this
+		indexes.splice( $.inArray( idx, indexes )+1, indexes.length );
+	}
+	else {
+		// reverse so we can shift click 'up' as well as down
+		if ( idx1 > idx2 ) {
+			var tmp = idx2;
+			idx2 = idx1;
+			idx1 = tmp;
+		}
+
+		indexes.splice( idx2+1, indexes.length );
+		indexes.splice( 0, idx1 );
+	}
+
+	if ( ! dt[type]( idx, { selected: true } ).any() ) {
+		// Select range
+		dt[type+'s']( indexes ).select();
+	}
+	else {
+		// Deselect range - need to keep the clicked on row selected
+		indexes.splice( $.inArray( idx, indexes ), 1 );
+		dt[type+'s']( indexes ).deselect();
+	}
+}
+
+/**
+ * Clear all selected items
+ *
+ * @param  {DataTable.settings} ctx Settings object of the host DataTable
+ * @param  {boolean} [force=false] Force the de-selection to happen, regardless
+ *     of selection style
+ * @private
+ */
+function clear( ctx, force )
+{
+	if ( force || ctx._select.style === 'single' ) {
+		var api = new DataTable.Api( ctx );
+		
+		api.rows( { selected: true } ).deselect();
+		api.columns( { selected: true } ).deselect();
+		api.cells( { selected: true } ).deselect();
+	}
+}
+
+/**
+ * Select items based on the current configuration for style and items.
+ *
+ * @param  {object}             e    Mouse event object
+ * @param  {DataTables.Api}     dt   DataTable
+ * @param  {DataTable.settings} ctx  Settings object of the host DataTable
+ * @param  {string}             type Items to select
+ * @param  {int|object}         idx  Index of the item to select
+ * @private
+ */
+function typeSelect ( e, dt, ctx, type, idx )
+{
+	var style = dt.select.style();
+	var toggleable = dt.select.toggleable();
+	var isSelected = dt[type]( idx, { selected: true } ).any();
+	
+	if ( isSelected && ! toggleable ) {
+		return;
+	}
+
+	if ( style === 'os' ) {
+		if ( e.ctrlKey || e.metaKey ) {
+			// Add or remove from the selection
+			dt[type]( idx ).select( ! isSelected );
+		}
+		else if ( e.shiftKey ) {
+			if ( type === 'cell' ) {
+				cellRange( dt, idx, ctx._select_lastCell || null );
+			}
+			else {
+				rowColumnRange( dt, type, idx, ctx._select_lastCell ?
+					ctx._select_lastCell[type] :
+					null
+				);
+			}
+		}
+		else {
+			// No cmd or shift click - deselect if selected, or select
+			// this row only
+			var selected = dt[type+'s']( { selected: true } );
+
+			if ( isSelected && selected.flatten().length === 1 ) {
+				dt[type]( idx ).deselect();
+			}
+			else {
+				selected.deselect();
+				dt[type]( idx ).select();
+			}
+		}
+	} else if ( style == 'multi+shift' ) {
+		if ( e.shiftKey ) {
+			if ( type === 'cell' ) {
+				cellRange( dt, idx, ctx._select_lastCell || null );
+			}
+			else {
+				rowColumnRange( dt, type, idx, ctx._select_lastCell ?
+					ctx._select_lastCell[type] :
+					null
+				);
+			}
+		}
+		else {
+			dt[ type ]( idx ).select( ! isSelected );
+		}
+	}
+	else {
+		dt[ type ]( idx ).select( ! isSelected );
+	}
+}
+
+function _safeId( node ) {
+	return node.id.replace(/[^a-zA-Z0-9\-\_]/g, '-');
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables selectors
+ */
+
+// row and column are basically identical just assigned to different properties
+// and checking a different array, so we can dynamically create the functions to
+// reduce the code size
+$.each( [
+	{ type: 'row', prop: 'aoData' },
+	{ type: 'column', prop: 'aoColumns' }
+], function ( i, o ) {
+	DataTable.ext.selector[ o.type ].push( function ( settings, opts, indexes ) {
+		var selected = opts.selected;
+		var data;
+		var out = [];
+
+		if ( selected !== true && selected !== false ) {
+			return indexes;
+		}
+
+		for ( var i=0, ien=indexes.length ; i<ien ; i++ ) {
+			data = settings[ o.prop ][ indexes[i] ];
+
+			if ( (selected === true && data._select_selected === true) ||
+			     (selected === false && ! data._select_selected )
+			) {
+				out.push( indexes[i] );
+			}
+		}
+
+		return out;
+	} );
+} );
+
+DataTable.ext.selector.cell.push( function ( settings, opts, cells ) {
+	var selected = opts.selected;
+	var rowData;
+	var out = [];
+
+	if ( selected === undefined ) {
+		return cells;
+	}
+
+	for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+		rowData = settings.aoData[ cells[i].row ];
+
+		if ( (selected === true && rowData._selected_cells && rowData._selected_cells[ cells[i].column ] === true) ||
+		     (selected === false && ( ! rowData._selected_cells || ! rowData._selected_cells[ cells[i].column ] ) )
+		) {
+			out.push( cells[i] );
+		}
+	}
+
+	return out;
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables API
+ *
+ * For complete documentation, please refer to the docs/api directory or the
+ * DataTables site
+ */
+
+// Local variables to improve compression
+var apiRegister = DataTable.Api.register;
+var apiRegisterPlural = DataTable.Api.registerPlural;
+
+apiRegister( 'select()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		DataTable.select.init( new DataTable.Api( ctx ) );
+	} );
+} );
+
+apiRegister( 'select.blurable()', function ( flag ) {
+	if ( flag === undefined ) {
+		return this.context[0]._select.blurable;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._select.blurable = flag;
+	} );
+} );
+
+apiRegister( 'select.toggleable()', function ( flag ) {
+	if ( flag === undefined ) {
+		return this.context[0]._select.toggleable;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._select.toggleable = flag;
+	} );
+} );
+
+apiRegister( 'select.info()', function ( flag ) {
+	if ( info === undefined ) {
+		return this.context[0]._select.info;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._select.info = flag;
+	} );
+} );
+
+apiRegister( 'select.items()', function ( items ) {
+	if ( items === undefined ) {
+		return this.context[0]._select.items;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._select.items = items;
+
+		eventTrigger( new DataTable.Api( ctx ), 'selectItems', [ items ] );
+	} );
+} );
+
+// Takes effect from the _next_ selection. None disables future selection, but
+// does not clear the current selection. Use the `deselect` methods for that
+apiRegister( 'select.style()', function ( style ) {
+	if ( style === undefined ) {
+		return this.context[0]._select.style;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._select.style = style;
+
+		if ( ! ctx._select_init ) {
+			init( ctx );
+		}
+
+		// Add / remove mouse event handlers. They aren't required when only
+		// API selection is available
+		var dt = new DataTable.Api( ctx );
+		disableMouseSelection( dt );
+		
+		if ( style !== 'api' ) {
+			enableMouseSelection( dt );
+		}
+
+		eventTrigger( new DataTable.Api( ctx ), 'selectStyle', [ style ] );
+	} );
+} );
+
+apiRegister( 'select.selector()', function ( selector ) {
+	if ( selector === undefined ) {
+		return this.context[0]._select.selector;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		disableMouseSelection( new DataTable.Api( ctx ) );
+
+		ctx._select.selector = selector;
+
+		if ( ctx._select.style !== 'api' ) {
+			enableMouseSelection( new DataTable.Api( ctx ) );
+		}
+	} );
+} );
+
+
+
+apiRegisterPlural( 'rows().select()', 'row().select()', function ( select ) {
+	var api = this;
+
+	if ( select === false ) {
+		return this.deselect();
+	}
+
+	this.iterator( 'row', function ( ctx, idx ) {
+		clear( ctx );
+
+		ctx.aoData[ idx ]._select_selected = true;
+		$( ctx.aoData[ idx ].nTr ).addClass( ctx._select.className );
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'select', [ 'row', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+apiRegisterPlural( 'columns().select()', 'column().select()', function ( select ) {
+	var api = this;
+
+	if ( select === false ) {
+		return this.deselect();
+	}
+
+	this.iterator( 'column', function ( ctx, idx ) {
+		clear( ctx );
+
+		ctx.aoColumns[ idx ]._select_selected = true;
+
+		var column = new DataTable.Api( ctx ).column( idx );
+
+		$( column.header() ).addClass( ctx._select.className );
+		$( column.footer() ).addClass( ctx._select.className );
+
+		column.nodes().to$().addClass( ctx._select.className );
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'select', [ 'column', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+apiRegisterPlural( 'cells().select()', 'cell().select()', function ( select ) {
+	var api = this;
+
+	if ( select === false ) {
+		return this.deselect();
+	}
+
+	this.iterator( 'cell', function ( ctx, rowIdx, colIdx ) {
+		clear( ctx );
+
+		var data = ctx.aoData[ rowIdx ];
+
+		if ( data._selected_cells === undefined ) {
+			data._selected_cells = [];
+		}
+
+		data._selected_cells[ colIdx ] = true;
+
+		if ( data.anCells ) {
+			$( data.anCells[ colIdx ] ).addClass( ctx._select.className );
+		}
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'select', [ 'cell', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+
+apiRegisterPlural( 'rows().deselect()', 'row().deselect()', function () {
+	var api = this;
+
+	this.iterator( 'row', function ( ctx, idx ) {
+		ctx.aoData[ idx ]._select_selected = false;
+		$( ctx.aoData[ idx ].nTr ).removeClass( ctx._select.className );
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'deselect', [ 'row', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+apiRegisterPlural( 'columns().deselect()', 'column().deselect()', function () {
+	var api = this;
+
+	this.iterator( 'column', function ( ctx, idx ) {
+		ctx.aoColumns[ idx ]._select_selected = false;
+
+		var api = new DataTable.Api( ctx );
+		var column = api.column( idx );
+
+		$( column.header() ).removeClass( ctx._select.className );
+		$( column.footer() ).removeClass( ctx._select.className );
+
+		// Need to loop over each cell, rather than just using
+		// `column().nodes()` as cells which are individually selected should
+		// not have the `selected` class removed from them
+		api.cells( null, idx ).indexes().each( function (cellIdx) {
+			var data = ctx.aoData[ cellIdx.row ];
+			var cellSelected = data._selected_cells;
+
+			if ( data.anCells && (! cellSelected || ! cellSelected[ cellIdx.column ]) ) {
+				$( data.anCells[ cellIdx.column  ] ).removeClass( ctx._select.className );
+			}
+		} );
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'deselect', [ 'column', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+apiRegisterPlural( 'cells().deselect()', 'cell().deselect()', function () {
+	var api = this;
+
+	this.iterator( 'cell', function ( ctx, rowIdx, colIdx ) {
+		var data = ctx.aoData[ rowIdx ];
+
+		data._selected_cells[ colIdx ] = false;
+
+		// Remove class only if the cells exist, and the cell is not column
+		// selected, in which case the class should remain (since it is selected
+		// in the column)
+		if ( data.anCells && ! ctx.aoColumns[ colIdx ]._select_selected ) {
+			$( data.anCells[ colIdx ] ).removeClass( ctx._select.className );
+		}
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'deselect', [ 'cell', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Buttons
+ */
+function i18n( label, def ) {
+	return function (dt) {
+		return dt.i18n( 'buttons.'+label, def );
+	};
+}
+
+// Common events with suitable namespaces
+function namespacedEvents ( config ) {
+	var unique = config._eventNamespace;
+
+	return 'draw.dt.DT'+unique+' select.dt.DT'+unique+' deselect.dt.DT'+unique;
+}
+
+function enabled ( dt, config ) {
+	if ( $.inArray( 'rows', config.limitTo ) !== -1 && dt.rows( { selected: true } ).any() ) {
+		return true;
+	}
+
+	if ( $.inArray( 'columns', config.limitTo ) !== -1 && dt.columns( { selected: true } ).any() ) {
+		return true;
+	}
+
+	if ( $.inArray( 'cells', config.limitTo ) !== -1 && dt.cells( { selected: true } ).any() ) {
+		return true;
+	}
+
+	return false;
+}
+
+var _buttonNamespace = 0;
+
+$.extend( DataTable.ext.buttons, {
+	selected: {
+		text: i18n( 'selected', 'Selected' ),
+		className: 'buttons-selected',
+		limitTo: [ 'rows', 'columns', 'cells' ],
+		init: function ( dt, node, config ) {
+			var that = this;
+			config._eventNamespace = '.select'+(_buttonNamespace++);
+
+			// .DT namespace listeners are removed by DataTables automatically
+			// on table destroy
+			dt.on( namespacedEvents(config), function () {
+				that.enable( enabled(dt, config) );
+			} );
+
+			this.disable();
+		},
+		destroy: function ( dt, node, config ) {
+			dt.off( config._eventNamespace );
+		}
+	},
+	selectedSingle: {
+		text: i18n( 'selectedSingle', 'Selected single' ),
+		className: 'buttons-selected-single',
+		init: function ( dt, node, config ) {
+			var that = this;
+			config._eventNamespace = '.select'+(_buttonNamespace++);
+
+			dt.on( namespacedEvents(config), function () {
+				var count = dt.rows( { selected: true } ).flatten().length +
+				            dt.columns( { selected: true } ).flatten().length +
+				            dt.cells( { selected: true } ).flatten().length;
+
+				that.enable( count === 1 );
+			} );
+
+			this.disable();
+		},
+		destroy: function ( dt, node, config ) {
+			dt.off( config._eventNamespace );
+		}
+	},
+	selectAll: {
+		text: i18n( 'selectAll', 'Select all' ),
+		className: 'buttons-select-all',
+		action: function () {
+			var items = this.select.items();
+			this[ items+'s' ]().select();
+		}
+	},
+	selectNone: {
+		text: i18n( 'selectNone', 'Deselect all' ),
+		className: 'buttons-select-none',
+		action: function () {
+			clear( this.settings()[0], true );
+		},
+		init: function ( dt, node, config ) {
+			var that = this;
+			config._eventNamespace = '.select'+(_buttonNamespace++);
+
+			dt.on( namespacedEvents(config), function () {
+				var count = dt.rows( { selected: true } ).flatten().length +
+				            dt.columns( { selected: true } ).flatten().length +
+				            dt.cells( { selected: true } ).flatten().length;
+
+				that.enable( count > 0 );
+			} );
+
+			this.disable();
+		},
+		destroy: function ( dt, node, config ) {
+			dt.off( config._eventNamespace );
+		}
+	}
+} );
+
+$.each( [ 'Row', 'Column', 'Cell' ], function ( i, item ) {
+	var lc = item.toLowerCase();
+
+	DataTable.ext.buttons[ 'select'+item+'s' ] = {
+		text: i18n( 'select'+item+'s', 'Select '+lc+'s' ),
+		className: 'buttons-select-'+lc+'s',
+		action: function () {
+			this.select.items( lc );
+		},
+		init: function ( dt ) {
+			var that = this;
+
+			dt.on( 'selectItems.dt.DT', function ( e, ctx, items ) {
+				that.active( items === lc );
+			} );
+		}
+	};
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Initialisation
+ */
+
+// DataTables creation - check if select has been defined in the options. Note
+// this required that the table be in the document! If it isn't then something
+// needs to trigger this method unfortunately. The next major release of
+// DataTables will rework the events and address this.
+$(document).on( 'preInit.dt.dtSelect', function (e, ctx) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	DataTable.select.init( new DataTable.Api( ctx ) );
+} );
+
+
+return DataTable.select;
+}));
Index: public/vendors/dataTable/Select-1.3.1/js/dataTables.select.min.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/dataTables.select.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/dataTables.select.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*!
+   Copyright 2015-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net/extensions/select
+ Select for DataTables 1.3.1
+ 2015-2019 SpryMedia Ltd - datatables.net/license/mit
+*/
+(function(f){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(k){return f(k,window,document)}):"object"===typeof exports?module.exports=function(k,p){k||(k=window);p&&p.fn.dataTable||(p=require("datatables.net")(k,p).$);return f(p,k,k.document)}:f(jQuery,window,document)})(function(f,k,p,h){function z(a,b,c){var d=function(c,b){if(c>b){var d=b;b=c;c=d}var e=!1;return a.columns(":visible").indexes().filter(function(a){a===c&&(e=!0);return a===b?(e=!1,!0):e})};var e=
+function(c,b){var d=a.rows({search:"applied"}).indexes();if(d.indexOf(c)>d.indexOf(b)){var e=b;b=c;c=e}var f=!1;return d.filter(function(a){a===c&&(f=!0);return a===b?(f=!1,!0):f})};a.cells({selected:!0}).any()||c?(d=d(c.column,b.column),c=e(c.row,b.row)):(d=d(0,b.column),c=e(0,b.row));c=a.cells(c,d).flatten();a.cells(b,{selected:!0}).any()?a.cells(c).deselect():a.cells(c).select()}function v(a){var b=a.settings()[0]._select.selector;f(a.table().container()).off("mousedown.dtSelect",b).off("mouseup.dtSelect",
+b).off("click.dtSelect",b);f("body").off("click.dtSelect"+a.table().node().id.replace(/[^a-zA-Z0-9\-_]/g,"-"))}function A(a){var b=f(a.table().container()),c=a.settings()[0],d=c._select.selector,e;b.on("mousedown.dtSelect",d,function(a){if(a.shiftKey||a.metaKey||a.ctrlKey)b.css("-moz-user-select","none").one("selectstart.dtSelect",d,function(){return!1});k.getSelection&&(e=k.getSelection())}).on("mouseup.dtSelect",d,function(){b.css("-moz-user-select","")}).on("click.dtSelect",d,function(c){var b=
+a.select.items();if(e){var d=k.getSelection();if((!d.anchorNode||f(d.anchorNode).closest("table")[0]===a.table().node())&&d!==e)return}d=a.settings()[0];var l=f.trim(a.settings()[0].oClasses.sWrapper).replace(/ +/g,".");if(f(c.target).closest("div."+l)[0]==a.table().container()&&(l=a.cell(f(c.target).closest("td, th")),l.any())){var g=f.Event("user-select.dt");m(a,g,[b,l,c]);g.isDefaultPrevented()||(g=l.index(),"row"===b?(b=g.row,w(c,a,d,"row",b)):"column"===b?(b=l.index().column,w(c,a,d,"column",
+b)):"cell"===b&&(b=l.index(),w(c,a,d,"cell",b)),d._select_lastCell=g)}});f("body").on("click.dtSelect"+a.table().node().id.replace(/[^a-zA-Z0-9\-_]/g,"-"),function(b){!c._select.blurable||f(b.target).parents().filter(a.table().container()).length||0===f(b.target).parents("html").length||f(b.target).parents("div.DTE").length||r(c,!0)})}function m(a,b,c,d){if(!d||a.flatten().length)"string"===typeof b&&(b+=".dt"),c.unshift(a),f(a.table().node()).trigger(b,c)}function B(a){var b=a.settings()[0];if(b._select.info&&
+b.aanFeatures.i&&"api"!==a.select.style()){var c=a.rows({selected:!0}).flatten().length,d=a.columns({selected:!0}).flatten().length,e=a.cells({selected:!0}).flatten().length,l=function(b,c,d){b.append(f('<span class="select-item"/>').append(a.i18n("select."+c+"s",{_:"%d "+c+"s selected",0:"",1:"1 "+c+" selected"},d)))};f.each(b.aanFeatures.i,function(b,a){a=f(a);b=f('<span class="select-info"/>');l(b,"row",c);l(b,"column",d);l(b,"cell",e);var g=a.children("span.select-info");g.length&&g.remove();
+""!==b.text()&&a.append(b)})}}function D(a){var b=new g.Api(a);a.aoRowCreatedCallback.push({fn:function(b,d,e){d=a.aoData[e];d._select_selected&&f(b).addClass(a._select.className);b=0;for(e=a.aoColumns.length;b<e;b++)(a.aoColumns[b]._select_selected||d._selected_cells&&d._selected_cells[b])&&f(d.anCells[b]).addClass(a._select.className)},sName:"select-deferRender"});b.on("preXhr.dt.dtSelect",function(){var a=b.rows({selected:!0}).ids(!0).filter(function(b){return b!==h}),d=b.cells({selected:!0}).eq(0).map(function(a){var c=
+b.row(a.row).id(!0);return c?{row:c,column:a.column}:h}).filter(function(b){return b!==h});b.one("draw.dt.dtSelect",function(){b.rows(a).select();d.any()&&d.each(function(a){b.cells(a.row,a.column).select()})})});b.on("draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt",function(){B(b)});b.on("destroy.dtSelect",function(){v(b);b.off(".dtSelect")})}function C(a,b,c,d){var e=a[b+"s"]({search:"applied"}).indexes();d=f.inArray(d,e);var g=f.inArray(c,e);if(a[b+"s"]({selected:!0}).any()||
+-1!==d){if(d>g){var u=g;g=d;d=u}e.splice(g+1,e.length);e.splice(0,d)}else e.splice(f.inArray(c,e)+1,e.length);a[b](c,{selected:!0}).any()?(e.splice(f.inArray(c,e),1),a[b+"s"](e).deselect()):a[b+"s"](e).select()}function r(a,b){if(b||"single"===a._select.style)a=new g.Api(a),a.rows({selected:!0}).deselect(),a.columns({selected:!0}).deselect(),a.cells({selected:!0}).deselect()}function w(a,b,c,d,e){var f=b.select.style(),g=b.select.toggleable(),h=b[d](e,{selected:!0}).any();if(!h||g)"os"===f?a.ctrlKey||
+a.metaKey?b[d](e).select(!h):a.shiftKey?"cell"===d?z(b,e,c._select_lastCell||null):C(b,d,e,c._select_lastCell?c._select_lastCell[d]:null):(a=b[d+"s"]({selected:!0}),h&&1===a.flatten().length?b[d](e).deselect():(a.deselect(),b[d](e).select())):"multi+shift"==f?a.shiftKey?"cell"===d?z(b,e,c._select_lastCell||null):C(b,d,e,c._select_lastCell?c._select_lastCell[d]:null):b[d](e).select(!h):b[d](e).select(!h)}function t(a,b){return function(c){return c.i18n("buttons."+a,b)}}function x(a){a=a._eventNamespace;
+return"draw.dt.DT"+a+" select.dt.DT"+a+" deselect.dt.DT"+a}function E(a,b){return-1!==f.inArray("rows",b.limitTo)&&a.rows({selected:!0}).any()||-1!==f.inArray("columns",b.limitTo)&&a.columns({selected:!0}).any()||-1!==f.inArray("cells",b.limitTo)&&a.cells({selected:!0}).any()?!0:!1}var g=f.fn.dataTable;g.select={};g.select.version="1.3.1";g.select.init=function(a){var b=a.settings()[0],c=b.oInit.select,d=g.defaults.select;c=c===h?d:c;d="row";var e="api",l=!1,u=!0,k=!0,m="td, th",p="selected",n=!1;
+b._select={};!0===c?(e="os",n=!0):"string"===typeof c?(e=c,n=!0):f.isPlainObject(c)&&(c.blurable!==h&&(l=c.blurable),c.toggleable!==h&&(u=c.toggleable),c.info!==h&&(k=c.info),c.items!==h&&(d=c.items),e=c.style!==h?c.style:"os",n=!0,c.selector!==h&&(m=c.selector),c.className!==h&&(p=c.className));a.select.selector(m);a.select.items(d);a.select.style(e);a.select.blurable(l);a.select.toggleable(u);a.select.info(k);b._select.className=p;f.fn.dataTable.ext.order["select-checkbox"]=function(b,a){return this.api().column(a,
+{order:"index"}).nodes().map(function(a){return"row"===b._select.items?f(a).parent().hasClass(b._select.className):"cell"===b._select.items?f(a).hasClass(b._select.className):!1})};!n&&f(a.table().node()).hasClass("selectable")&&a.select.style("os")};f.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(a,b){g.ext.selector[b.type].push(function(a,d,e){d=d.selected;var c=[];if(!0!==d&&!1!==d)return e;for(var f=0,g=e.length;f<g;f++){var h=a[b.prop][e[f]];(!0===d&&!0===h._select_selected||
+!1===d&&!h._select_selected)&&c.push(e[f])}return c})});g.ext.selector.cell.push(function(a,b,c){b=b.selected;var d=[];if(b===h)return c;for(var e=0,f=c.length;e<f;e++){var g=a.aoData[c[e].row];(!0===b&&g._selected_cells&&!0===g._selected_cells[c[e].column]||!(!1!==b||g._selected_cells&&g._selected_cells[c[e].column]))&&d.push(c[e])}return d});var n=g.Api.register,q=g.Api.registerPlural;n("select()",function(){return this.iterator("table",function(a){g.select.init(new g.Api(a))})});n("select.blurable()",
+function(a){return a===h?this.context[0]._select.blurable:this.iterator("table",function(b){b._select.blurable=a})});n("select.toggleable()",function(a){return a===h?this.context[0]._select.toggleable:this.iterator("table",function(b){b._select.toggleable=a})});n("select.info()",function(a){return B===h?this.context[0]._select.info:this.iterator("table",function(b){b._select.info=a})});n("select.items()",function(a){return a===h?this.context[0]._select.items:this.iterator("table",function(b){b._select.items=
+a;m(new g.Api(b),"selectItems",[a])})});n("select.style()",function(a){return a===h?this.context[0]._select.style:this.iterator("table",function(b){b._select.style=a;b._select_init||D(b);var c=new g.Api(b);v(c);"api"!==a&&A(c);m(new g.Api(b),"selectStyle",[a])})});n("select.selector()",function(a){return a===h?this.context[0]._select.selector:this.iterator("table",function(b){v(new g.Api(b));b._select.selector=a;"api"!==b._select.style&&A(new g.Api(b))})});q("rows().select()","row().select()",function(a){var b=
+this;if(!1===a)return this.deselect();this.iterator("row",function(b,a){r(b);b.aoData[a]._select_selected=!0;f(b.aoData[a].nTr).addClass(b._select.className)});this.iterator("table",function(a,d){m(b,"select",["row",b[d]],!0)});return this});q("columns().select()","column().select()",function(a){var b=this;if(!1===a)return this.deselect();this.iterator("column",function(b,a){r(b);b.aoColumns[a]._select_selected=!0;a=(new g.Api(b)).column(a);f(a.header()).addClass(b._select.className);f(a.footer()).addClass(b._select.className);
+a.nodes().to$().addClass(b._select.className)});this.iterator("table",function(a,d){m(b,"select",["column",b[d]],!0)});return this});q("cells().select()","cell().select()",function(a){var b=this;if(!1===a)return this.deselect();this.iterator("cell",function(b,a,e){r(b);a=b.aoData[a];a._selected_cells===h&&(a._selected_cells=[]);a._selected_cells[e]=!0;a.anCells&&f(a.anCells[e]).addClass(b._select.className)});this.iterator("table",function(a,d){m(b,"select",["cell",b[d]],!0)});return this});q("rows().deselect()",
+"row().deselect()",function(){var a=this;this.iterator("row",function(a,c){a.aoData[c]._select_selected=!1;f(a.aoData[c].nTr).removeClass(a._select.className)});this.iterator("table",function(b,c){m(a,"deselect",["row",a[c]],!0)});return this});q("columns().deselect()","column().deselect()",function(){var a=this;this.iterator("column",function(a,c){a.aoColumns[c]._select_selected=!1;var b=new g.Api(a),e=b.column(c);f(e.header()).removeClass(a._select.className);f(e.footer()).removeClass(a._select.className);
+b.cells(null,c).indexes().each(function(b){var c=a.aoData[b.row],d=c._selected_cells;!c.anCells||d&&d[b.column]||f(c.anCells[b.column]).removeClass(a._select.className)})});this.iterator("table",function(b,c){m(a,"deselect",["column",a[c]],!0)});return this});q("cells().deselect()","cell().deselect()",function(){var a=this;this.iterator("cell",function(a,c,d){c=a.aoData[c];c._selected_cells[d]=!1;c.anCells&&!a.aoColumns[d]._select_selected&&f(c.anCells[d]).removeClass(a._select.className)});this.iterator("table",
+function(b,c){m(a,"deselect",["cell",a[c]],!0)});return this});var y=0;f.extend(g.ext.buttons,{selected:{text:t("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(a,b,c){var d=this;c._eventNamespace=".select"+y++;a.on(x(c),function(){d.enable(E(a,c))});this.disable()},destroy:function(a,b,c){a.off(c._eventNamespace)}},selectedSingle:{text:t("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(a,b,c){var d=this;c._eventNamespace=
+".select"+y++;a.on(x(c),function(){var b=a.rows({selected:!0}).flatten().length+a.columns({selected:!0}).flatten().length+a.cells({selected:!0}).flatten().length;d.enable(1===b)});this.disable()},destroy:function(a,b,c){a.off(c._eventNamespace)}},selectAll:{text:t("selectAll","Select all"),className:"buttons-select-all",action:function(){this[this.select.items()+"s"]().select()}},selectNone:{text:t("selectNone","Deselect all"),className:"buttons-select-none",action:function(){r(this.settings()[0],
+!0)},init:function(a,b,c){var d=this;c._eventNamespace=".select"+y++;a.on(x(c),function(){var b=a.rows({selected:!0}).flatten().length+a.columns({selected:!0}).flatten().length+a.cells({selected:!0}).flatten().length;d.enable(0<b)});this.disable()},destroy:function(a,b,c){a.off(c._eventNamespace)}}});f.each(["Row","Column","Cell"],function(a,b){var c=b.toLowerCase();g.ext.buttons["select"+b+"s"]={text:t("select"+b+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},
+init:function(a){var b=this;a.on("selectItems.dt.DT",function(a,d,e){b.active(e===c)})}}});f(p).on("preInit.dt.dtSelect",function(a,b){"dt"===a.namespace&&g.select.init(new g.Api(b))});return g.select});
Index: public/vendors/dataTable/Select-1.3.1/js/select.bootstrap.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/select.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/select.bootstrap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 3 styling wrapper for Select
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs', 'datatables.net-select'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.select ) {
+				require('datatables.net-select')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Select-1.3.1/js/select.bootstrap.min.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/select.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/select.bootstrap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 3 styling wrapper for Select
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-select"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs")(a,b).$);b.fn.dataTable.select||require("datatables.net-select")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/Select-1.3.1/js/select.bootstrap4.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/select.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/select.bootstrap4.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Bootstrap 4 styling wrapper for Select
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-select'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.select ) {
+				require('datatables.net-select')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Select-1.3.1/js/select.bootstrap4.min.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/select.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/select.bootstrap4.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Bootstrap 4 styling wrapper for Select
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-select"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.select||require("datatables.net-select")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/Select-1.3.1/js/select.dataTables.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/select.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/select.dataTables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! DataTables styling wrapper for Select
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-dt', 'datatables.net-select'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-dt')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.select ) {
+				require('datatables.net-select')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Select-1.3.1/js/select.foundation.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/select.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/select.foundation.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Foundation styling wrapper for Select
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-zf', 'datatables.net-select'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-zf')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.select ) {
+				require('datatables.net-select')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Select-1.3.1/js/select.foundation.min.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/select.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/select.foundation.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Foundation styling wrapper for Select
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-select"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-zf")(a,b).$);b.fn.dataTable.select||require("datatables.net-select")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/Select-1.3.1/js/select.jqueryui.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/select.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/select.jqueryui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! jQuery UI styling wrapper for Select
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-jqui', 'datatables.net-select'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-jqui')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.select ) {
+				require('datatables.net-select')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Select-1.3.1/js/select.jqueryui.min.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/select.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/select.jqueryui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ jQuery UI styling wrapper for Select
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-select"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-jqui")(a,b).$);b.fn.dataTable.select||require("datatables.net-select")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/Select-1.3.1/js/select.semanticui.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/select.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/select.semanticui.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+/*! Semanic UI styling wrapper for Select
+ * ©2018 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-se', 'datatables.net-select'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-se')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.select ) {
+				require('datatables.net-select')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+
+return $.fn.dataTable;
+
+}));
Index: public/vendors/dataTable/Select-1.3.1/js/select.semanticui.min.js
===================================================================
--- public/vendors/dataTable/Select-1.3.1/js/select.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/Select-1.3.1/js/select.semanticui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ Semanic UI styling wrapper for Select
+ ©2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-select"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-se")(a,b).$);b.fn.dataTable.select||require("datatables.net-select")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
Index: public/vendors/dataTable/datatables.css
===================================================================
--- public/vendors/dataTable/datatables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/datatables.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1180 @@
+/*
+ * This combined file was created by the DataTables downloader builder:
+ *   https://datatables.net/download
+ *
+ * To rebuild or modify this file with the latest versions of the included
+ * software please visit:
+ *   https://datatables.net/download/#bs4/jszip-2.5.0/pdfmake-0.1.36/dt-1.10.20/af-2.3.4/b-1.6.1/b-colvis-1.6.1/b-flash-1.6.1/b-html5-1.6.1/b-print-1.6.1/cr-1.5.2/fc-3.3.0/fh-3.1.6/kt-2.5.1/r-2.2.3/rg-1.1.1/rr-1.2.6/sc-2.0.1/sp-1.0.1/sl-1.3.1
+ *
+ * Included libraries:
+ *   JSZip 2.5.0, pdfmake 0.1.36, DataTables 1.10.20, AutoFill 2.3.4, Buttons 1.6.1, Column visibility 1.6.1, Flash export 1.6.1, HTML5 export 1.6.1, Print view 1.6.1, ColReorder 1.5.2, FixedColumns 3.3.0, FixedHeader 3.1.6, KeyTable 2.5.1, Responsive 2.2.3, RowGroup 1.1.1, RowReorder 1.2.6, Scroller 2.0.1, SearchPanes 1.0.1, Select 1.3.1
+ */
+
+table.dataTable {
+  clear: both;
+  margin-top: 6px !important;
+  margin-bottom: 6px !important;
+  max-width: none !important;
+  border-collapse: separate !important;
+  border-spacing: 0;
+}
+table.dataTable td,
+table.dataTable th {
+  -webkit-box-sizing: content-box;
+  box-sizing: content-box;
+}
+table.dataTable td.dataTables_empty,
+table.dataTable th.dataTables_empty {
+  text-align: center;
+}
+table.dataTable.nowrap th,
+table.dataTable.nowrap td {
+  white-space: nowrap;
+}
+
+div.dataTables_wrapper div.dataTables_length label {
+  font-weight: normal;
+  text-align: left;
+  white-space: nowrap;
+}
+div.dataTables_wrapper div.dataTables_length select {
+  width: auto;
+  display: inline-block;
+}
+div.dataTables_wrapper div.dataTables_filter {
+  text-align: right;
+}
+div.dataTables_wrapper div.dataTables_filter label {
+  font-weight: normal;
+  white-space: nowrap;
+  text-align: left;
+}
+div.dataTables_wrapper div.dataTables_filter input {
+  margin-left: 0.5em;
+  display: inline-block;
+  width: auto;
+}
+div.dataTables_wrapper div.dataTables_info {
+  padding-top: 0.85em;
+  white-space: nowrap;
+}
+div.dataTables_wrapper div.dataTables_paginate {
+  margin: 0;
+  white-space: nowrap;
+  text-align: right;
+}
+div.dataTables_wrapper div.dataTables_paginate ul.pagination {
+  margin: 2px 0;
+  white-space: nowrap;
+  justify-content: flex-end;
+}
+div.dataTables_wrapper div.dataTables_processing {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 200px;
+  margin-left: -100px;
+  margin-top: -26px;
+  text-align: center;
+  padding: 1em 0;
+}
+
+table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
+table.dataTable thead > tr > td.sorting_asc,
+table.dataTable thead > tr > td.sorting_desc,
+table.dataTable thead > tr > td.sorting {
+  padding-right: 30px;
+}
+table.dataTable thead > tr > th:active,
+table.dataTable thead > tr > td:active {
+  outline: none;
+}
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+  cursor: pointer;
+  position: relative;
+}
+table.dataTable thead .sorting:before, table.dataTable thead .sorting:after,
+table.dataTable thead .sorting_asc:before,
+table.dataTable thead .sorting_asc:after,
+table.dataTable thead .sorting_desc:before,
+table.dataTable thead .sorting_desc:after,
+table.dataTable thead .sorting_asc_disabled:before,
+table.dataTable thead .sorting_asc_disabled:after,
+table.dataTable thead .sorting_desc_disabled:before,
+table.dataTable thead .sorting_desc_disabled:after {
+  position: absolute;
+  bottom: 0.9em;
+  display: block;
+  opacity: 0.3;
+}
+table.dataTable thead .sorting:before,
+table.dataTable thead .sorting_asc:before,
+table.dataTable thead .sorting_desc:before,
+table.dataTable thead .sorting_asc_disabled:before,
+table.dataTable thead .sorting_desc_disabled:before {
+  right: 1em;
+  content: "\2191";
+}
+table.dataTable thead .sorting:after,
+table.dataTable thead .sorting_asc:after,
+table.dataTable thead .sorting_desc:after,
+table.dataTable thead .sorting_asc_disabled:after,
+table.dataTable thead .sorting_desc_disabled:after {
+  right: 0.5em;
+  content: "\2193";
+}
+table.dataTable thead .sorting_asc:before,
+table.dataTable thead .sorting_desc:after {
+  opacity: 1;
+}
+table.dataTable thead .sorting_asc_disabled:before,
+table.dataTable thead .sorting_desc_disabled:after {
+  opacity: 0;
+}
+
+div.dataTables_scrollHead table.dataTable {
+  margin-bottom: 0 !important;
+}
+
+div.dataTables_scrollBody table {
+  border-top: none;
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+div.dataTables_scrollBody table thead .sorting:before,
+div.dataTables_scrollBody table thead .sorting_asc:before,
+div.dataTables_scrollBody table thead .sorting_desc:before,
+div.dataTables_scrollBody table thead .sorting:after,
+div.dataTables_scrollBody table thead .sorting_asc:after,
+div.dataTables_scrollBody table thead .sorting_desc:after {
+  display: none;
+}
+div.dataTables_scrollBody table tbody tr:first-child th,
+div.dataTables_scrollBody table tbody tr:first-child td {
+  border-top: none;
+}
+
+div.dataTables_scrollFoot > .dataTables_scrollFootInner {
+  box-sizing: content-box;
+}
+div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
+  margin-top: 0 !important;
+  border-top: none;
+}
+
+@media screen and (max-width: 767px) {
+  div.dataTables_wrapper div.dataTables_length,
+  div.dataTables_wrapper div.dataTables_filter,
+  div.dataTables_wrapper div.dataTables_info,
+  div.dataTables_wrapper div.dataTables_paginate {
+    text-align: center;
+  }
+}
+table.dataTable.table-sm > thead > tr > th {
+  padding-right: 20px;
+}
+table.dataTable.table-sm .sorting:before,
+table.dataTable.table-sm .sorting_asc:before,
+table.dataTable.table-sm .sorting_desc:before {
+  top: 5px;
+  right: 0.85em;
+}
+table.dataTable.table-sm .sorting:after,
+table.dataTable.table-sm .sorting_asc:after,
+table.dataTable.table-sm .sorting_desc:after {
+  top: 5px;
+}
+
+table.table-bordered.dataTable th,
+table.table-bordered.dataTable td {
+  border-left-width: 0;
+}
+table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
+table.table-bordered.dataTable td:last-child,
+table.table-bordered.dataTable td:last-child {
+  border-right-width: 0;
+}
+table.table-bordered.dataTable tbody th,
+table.table-bordered.dataTable tbody td {
+  border-bottom-width: 0;
+}
+
+div.dataTables_scrollHead table.table-bordered {
+  border-bottom-width: 0;
+}
+
+div.table-responsive > div.dataTables_wrapper > div.row {
+  margin: 0;
+}
+div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child {
+  padding-left: 0;
+}
+div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child {
+  padding-right: 0;
+}
+
+
+div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;background:#0275d8;cursor:pointer}div.dtk-focus-alt div.dt-autofill-handle{background:#ff8b33}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#0275d8;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:60px;margin:-2px 0}
+
+
+@keyframes dtb-spinner {
+  100% {
+    transform: rotate(360deg);
+  }
+}
+@-o-keyframes dtb-spinner {
+  100% {
+    -o-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-ms-keyframes dtb-spinner {
+  100% {
+    -ms-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-webkit-keyframes dtb-spinner {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-moz-keyframes dtb-spinner {
+  100% {
+    -moz-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+div.dt-button-info {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 400px;
+  margin-top: -100px;
+  margin-left: -200px;
+  background-color: white;
+  border: 2px solid #111;
+  box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
+  border-radius: 3px;
+  text-align: center;
+  z-index: 21;
+}
+div.dt-button-info h2 {
+  padding: 0.5em;
+  margin: 0;
+  font-weight: normal;
+  border-bottom: 1px solid #ddd;
+  background-color: #f3f3f3;
+}
+div.dt-button-info > div {
+  padding: 1em;
+}
+
+div.dt-button-collection-title {
+  text-align: center;
+  padding: 0.3em 0 0.5em;
+  font-size: 0.9em;
+}
+
+div.dt-button-collection-title:empty {
+  display: none;
+}
+
+div.dt-button-collection {
+  position: absolute;
+  z-index: 2001;
+}
+div.dt-button-collection div.dropdown-menu {
+  display: block;
+  z-index: 2002;
+  min-width: 100%;
+}
+div.dt-button-collection div.dt-button-collection-title {
+  background-color: white;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+}
+div.dt-button-collection.fixed {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  margin-left: -75px;
+  border-radius: 0;
+}
+div.dt-button-collection.fixed.two-column {
+  margin-left: -200px;
+}
+div.dt-button-collection.fixed.three-column {
+  margin-left: -225px;
+}
+div.dt-button-collection.fixed.four-column {
+  margin-left: -300px;
+}
+div.dt-button-collection > :last-child {
+  display: block !important;
+  -webkit-column-gap: 8px;
+  -moz-column-gap: 8px;
+  -ms-column-gap: 8px;
+  -o-column-gap: 8px;
+  column-gap: 8px;
+}
+div.dt-button-collection > :last-child > * {
+  -webkit-column-break-inside: avoid;
+  break-inside: avoid;
+}
+div.dt-button-collection.two-column {
+  width: 400px;
+}
+div.dt-button-collection.two-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  -ms-column-count: 2;
+  -o-column-count: 2;
+  column-count: 2;
+}
+div.dt-button-collection.three-column {
+  width: 450px;
+}
+div.dt-button-collection.three-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 3;
+  -moz-column-count: 3;
+  -ms-column-count: 3;
+  -o-column-count: 3;
+  column-count: 3;
+}
+div.dt-button-collection.four-column {
+  width: 600px;
+}
+div.dt-button-collection.four-column > :last-child {
+  padding-bottom: 1px;
+  -webkit-column-count: 4;
+  -moz-column-count: 4;
+  -ms-column-count: 4;
+  -o-column-count: 4;
+  column-count: 4;
+}
+div.dt-button-collection .dt-button {
+  border-radius: 0;
+}
+div.dt-button-collection.fixed {
+  max-width: none;
+}
+div.dt-button-collection.fixed:before, div.dt-button-collection.fixed:after {
+  display: none;
+}
+
+div.dt-button-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 999;
+}
+
+@media screen and (max-width: 767px) {
+  div.dt-buttons {
+    float: none;
+    width: 100%;
+    text-align: center;
+    margin-bottom: 0.5em;
+  }
+  div.dt-buttons a.btn {
+    float: none;
+  }
+}
+div.dt-buttons button.btn.processing,
+div.dt-buttons div.btn.processing,
+div.dt-buttons a.btn.processing {
+  color: rgba(0, 0, 0, 0.2);
+}
+div.dt-buttons button.btn.processing:after,
+div.dt-buttons div.btn.processing:after,
+div.dt-buttons a.btn.processing:after {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 16px;
+  height: 16px;
+  margin: -8px 0 0 -8px;
+  box-sizing: border-box;
+  display: block;
+  content: ' ';
+  border: 2px solid #282828;
+  border-radius: 50%;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  animation: dtb-spinner 1500ms infinite linear;
+  -o-animation: dtb-spinner 1500ms infinite linear;
+  -ms-animation: dtb-spinner 1500ms infinite linear;
+  -webkit-animation: dtb-spinner 1500ms infinite linear;
+  -moz-animation: dtb-spinner 1500ms infinite linear;
+}
+
+
+table.DTCR_clonedTable.dataTable {
+  position: absolute !important;
+  background-color: rgba(255, 255, 255, 0.7);
+  z-index: 202;
+}
+
+div.DTCR_pointer {
+  width: 1px;
+  background-color: #0275d8;
+  z-index: 201;
+}
+
+
+table.DTFC_Cloned tr {
+  background-color: white;
+  margin-bottom: 0;
+}
+
+div.DTFC_LeftHeadWrapper table,
+div.DTFC_RightHeadWrapper table {
+  border-bottom: none !important;
+  margin-bottom: 0 !important;
+  background-color: white;
+}
+
+div.DTFC_LeftBodyWrapper table,
+div.DTFC_RightBodyWrapper table {
+  border-top: none;
+  margin: 0 !important;
+  z-index: 2;
+}
+div.DTFC_LeftBodyWrapper table thead .sorting:before, div.DTFC_LeftBodyWrapper table thead .sorting:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,
+div.DTFC_LeftBodyWrapper table thead .sorting:before,
+div.DTFC_LeftBodyWrapper table thead .sorting:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,
+div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,
+div.DTFC_RightBodyWrapper table thead .sorting:before,
+div.DTFC_RightBodyWrapper table thead .sorting:after,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:after,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:after,
+div.DTFC_RightBodyWrapper table thead .sorting:before,
+div.DTFC_RightBodyWrapper table thead .sorting:after,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_asc:after,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:before,
+div.DTFC_RightBodyWrapper table thead .sorting_desc:after {
+  display: none;
+}
+div.DTFC_LeftBodyWrapper table tbody tr:first-child th,
+div.DTFC_LeftBodyWrapper table tbody tr:first-child td,
+div.DTFC_RightBodyWrapper table tbody tr:first-child th,
+div.DTFC_RightBodyWrapper table tbody tr:first-child td {
+  border-top: none;
+}
+
+div.DTFC_LeftFootWrapper table,
+div.DTFC_RightFootWrapper table {
+  border-top: none;
+  margin-top: 0 !important;
+  background-color: white;
+}
+
+div.DTFC_Blocker {
+  background-color: white;
+}
+
+table.dataTable.table-striped.DTFC_Cloned tbody {
+  background-color: white;
+}
+
+
+table.dataTable.fixedHeader-floating,
+table.dataTable.fixedHeader-locked {
+  background-color: white;
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+
+table.dataTable.fixedHeader-floating {
+  position: fixed !important;
+}
+
+table.dataTable.fixedHeader-locked {
+  position: absolute !important;
+}
+
+@media print {
+  table.fixedHeader-floating {
+    display: none;
+  }
+}
+
+
+table.dataTable tbody th.focus,
+table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #0275d8;
+}
+
+div.dtk-focus-alt table.dataTable tbody th.focus,
+div.dtk-focus-alt table.dataTable tbody td.focus {
+  box-shadow: inset 0 0 1px 2px #ff8b33;
+}
+
+
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
+  cursor: default !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
+  display: none !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child {
+  position: relative;
+  padding-left: 30px;
+  cursor: pointer;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child:before {
+  top: 12px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #0275d8;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {
+  padding-left: 27px;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {
+  top: 5px;
+  left: 4px;
+  height: 14px;
+  width: 14px;
+  border-radius: 14px;
+  line-height: 14px;
+  text-indent: 3px;
+}
+table.dataTable.dtr-column > tbody > tr > td.control,
+table.dataTable.dtr-column > tbody > tr > th.control {
+  position: relative;
+  cursor: pointer;
+}
+table.dataTable.dtr-column > tbody > tr > td.control:before,
+table.dataTable.dtr-column > tbody > tr > th.control:before {
+  top: 50%;
+  left: 50%;
+  height: 16px;
+  width: 16px;
+  margin-top: -10px;
+  margin-left: -10px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: 'Courier New', Courier, monospace;
+  line-height: 14px;
+  content: '+';
+  background-color: #0275d8;
+}
+table.dataTable.dtr-column > tbody > tr.parent td.control:before,
+table.dataTable.dtr-column > tbody > tr.parent th.control:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable > tbody > tr.child {
+  padding: 0.5em 1em;
+}
+table.dataTable > tbody > tr.child:hover {
+  background: transparent !important;
+}
+table.dataTable > tbody > tr.child ul.dtr-details {
+  display: inline-block;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li {
+  border-bottom: 1px solid #efefef;
+  padding: 0.5em 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:first-child {
+  padding-top: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:last-child {
+  border-bottom: none;
+}
+table.dataTable > tbody > tr.child span.dtr-title {
+  display: inline-block;
+  min-width: 75px;
+  font-weight: bold;
+}
+
+div.dtr-modal {
+  position: fixed;
+  box-sizing: border-box;
+  top: 0;
+  left: 0;
+  height: 100%;
+  width: 100%;
+  z-index: 100;
+  padding: 10em 1em;
+}
+div.dtr-modal div.dtr-modal-display {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  width: 50%;
+  height: 50%;
+  overflow: auto;
+  margin: auto;
+  z-index: 102;
+  overflow: auto;
+  background-color: #f5f5f7;
+  border: 1px solid black;
+  border-radius: 0.5em;
+  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
+}
+div.dtr-modal div.dtr-modal-content {
+  position: relative;
+  padding: 1em;
+}
+div.dtr-modal div.dtr-modal-close {
+  position: absolute;
+  top: 6px;
+  right: 6px;
+  width: 22px;
+  height: 22px;
+  border: 1px solid #eaeaea;
+  background-color: #f9f9f9;
+  text-align: center;
+  border-radius: 3px;
+  cursor: pointer;
+  z-index: 12;
+}
+div.dtr-modal div.dtr-modal-close:hover {
+  background-color: #eaeaea;
+}
+div.dtr-modal div.dtr-modal-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 101;
+  background: rgba(0, 0, 0, 0.6);
+}
+
+@media screen and (max-width: 767px) {
+  div.dtr-modal div.dtr-modal-display {
+    width: 95%;
+  }
+}
+div.dtr-bs-modal table.table tr:first-child td {
+  border-top: none;
+}
+
+
+table.dataTable tr.dtrg-group td {
+  background-color: #e0e0e0;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-0 td {
+  font-weight: bold;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-1 td,
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f0f0f0;
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+  padding-left: 2em;
+  font-size: 0.9em;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-2 td {
+  background-color: #f3f3f3;
+}
+
+
+table.dt-rowReorder-float {
+  position: absolute !important;
+  opacity: 0.8;
+  table-layout: fixed;
+  outline: 2px solid #0275d8;
+  outline-offset: -2px;
+  z-index: 2001;
+}
+
+tr.dt-rowReorder-moving {
+  outline: 2px solid #888;
+  outline-offset: -2px;
+}
+
+body.dt-rowReorder-noOverflow {
+  overflow-x: hidden;
+}
+
+table.dataTable td.reorder {
+  text-align: center;
+  cursor: move;
+}
+
+
+div.dts {
+  display: block !important;
+}
+div.dts tbody th,
+div.dts tbody td {
+  white-space: nowrap;
+}
+div.dts div.dts_loading {
+  z-index: 1;
+}
+div.dts div.dts_label {
+  position: absolute;
+  right: 10px;
+  background: rgba(0, 0, 0, 0.8);
+  color: white;
+  box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.5);
+  text-align: right;
+  border-radius: 3px;
+  padding: 0.4em;
+  z-index: 2;
+  display: none;
+}
+div.dts div.dataTables_scrollBody {
+  background: repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, white 10px, white 20px);
+}
+div.dts div.dataTables_scrollBody table {
+  z-index: 2;
+}
+div.dts div.dataTables_paginate,
+div.dts div.dataTables_length {
+  display: none;
+}
+
+div.DTS div.dataTables_scrollBody table {
+  background-color: white;
+}
+
+
+div.dtsp-topRow {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: flex-start;
+}
+div.dtsp-topRow div.dtsp-subRow1 {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow div.dtsp-searchCont {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 0;
+}
+div.dtsp-topRow button.dtsp-nameButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 23px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-countButton {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 18px;
+  vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-searchIcon {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 12px;
+}
+
+div.dataTables_scrollBody {
+  background: white !important;
+}
+
+div.dtsp-searchPanes {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: space-evenly;
+  align-content: flex-start;
+  align-items: stretch;
+  clear: both;
+}
+div.dtsp-searchPanes button.btn {
+  margin: 1px;
+}
+div.dtsp-searchPanes button.dtsp-clearAll {
+  max-width: 50px;
+}
+
+div.dtsp-searchPane {
+  flex-direction: row;
+  flex-wrap: nowrap;
+  flex-grow: 1;
+  flex-shrink: 0;
+  flex-basis: 280px;
+  justify-content: space-around;
+  align-content: flex-start;
+  align-items: stretch;
+  padding-top: 0px;
+  padding-bottom: 5px;
+  margin: 5px 0;
+  margin-top: 0px;
+  margin-bottom: 0px;
+  font-size: 0.9em;
+  margin: 5px;
+}
+div.dtsp-searchPane div.dataTables_wrapper {
+  flex: 1;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter {
+  display: none;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.row div.col-sm-12:empty {
+  display: none;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.row div.dataTables_filter {
+  display: none;
+}
+div.dtsp-searchPane div.btn-group {
+  padding: 0px;
+}
+div.dtsp-searchPane div.btn-group button.btn {
+  margin: 0;
+  height: 40px;
+}
+div.dtsp-searchPane div.dtsp-topRow {
+  padding: 0px !important;
+  margin: 0px !important;
+}
+div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRows {
+  padding: 0px !important;
+  text-align: right;
+}
+div.dtsp-searchPane div.dtsp-topRow div.row {
+  width: 100%;
+}
+div.dtsp-searchPane thead {
+  display: none;
+}
+div.dtsp-searchPane .mb-3 {
+  margin-bottom: none !important;
+}
+div.dtsp-searchPane .col-sm-12 {
+  padding: 5px;
+}
+div.dtsp-searchPane .input-group {
+  height: 40px !important;
+  padding: 0px !important;
+}
+div.dtsp-searchPane .input-group .input-group-append {
+  display: inline-block;
+}
+div.dtsp-searchPane div.dataTables_scrollHead {
+  display: none;
+}
+div.dtsp-searchPane div.dataTables_scrollBody {
+  padding: 2px;
+  border: 2px #f0f0f0 solid;
+  border-radius: 4px;
+}
+div.dtsp-searchPane div.dataTables_scrollBody:hover {
+  border: 2px solid #cfcfcf !important;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table tbody tr span.badge {
+  float: right;
+  min-width: 30px;
+  display: inline-block;
+  line-height: 1;
+}
+div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td.dtsp-countColumn {
+  text-align: right;
+}
+div.dtsp-searchPane .dtsp-searchIcon {
+  display: block;
+  position: relative;
+  padding: 18px 13px;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter {
+  display: none;
+}
+div.dtsp-searchPane div.dataTables_wrapper div.row {
+  margin-left: -7px;
+  margin-right: -7px;
+}
+div.dtsp-searchPane div.badge {
+  min-width: 30px;
+}
+
+div.dtsp-panes {
+  padding: 5px;
+  border: 2px solid #f0f0f0;
+  border-radius: 10px;
+  margin: 5px;
+  clear: both;
+}
+div.dtsp-panes div.dtsp-titleRow {
+  padding-bottom: 10px;
+}
+div.dtsp-panes div.dtsp-title {
+  float: left;
+  margin: 20px;
+  margin-bottom: 0px;
+  margin-top: 10px;
+}
+div.dtsp-panes button.dtsp-clearAll {
+  float: right;
+}
+
+div.dtsp-columns-1 {
+  min-width: 98%;
+  max-width: 98%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-2 {
+  min-width: 48%;
+  max-width: 48%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-3 {
+  min-width: 33.333%;
+  max-width: 33.333%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+
+div.dtsp-columns-4 {
+  min-width: 23%;
+  max-width: 23%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-4 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-5 {
+  min-width: 18%;
+  max-width: 18%;
+  padding-left: 1%;
+  padding-right: 1%;
+  margin: 0px !important;
+}
+div.dtsp-columns-5 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-columns-6 {
+  min-width: 15.666%;
+  max-width: 15.666%;
+  padding-left: 0.5%;
+  padding-right: 0.5%;
+  margin: 0px !important;
+}
+div.dtsp-columns-6 div.dtsp-topRow {
+  flex-direction: column !important;
+}
+
+div.dtsp-hidden {
+  display: none !important;
+}
+
+@media screen and (max-width: 767px) {
+  div.dtsp-columns-4,
+  div.dtsp-columns-5,
+  div.dtsp-columns-6 {
+    max-width: 31% !important;
+    min-width: 31% !important;
+  }
+}
+@media screen and (max-width: 640px) {
+  div.dtsp-searchPanes {
+    flex-direction: column !important;
+  }
+
+  div.dtsp-searchPane {
+    max-width: 98% !important;
+    min-width: 98% !important;
+  }
+}
+
+
+table.dataTable tbody > tr.selected,
+table.dataTable tbody > tr > .selected {
+  background-color: #0275d8;
+}
+table.dataTable.stripe tbody > tr.odd.selected,
+table.dataTable.stripe tbody > tr.odd > .selected, table.dataTable.display tbody > tr.odd.selected,
+table.dataTable.display tbody > tr.odd > .selected {
+  background-color: #0272d3;
+}
+table.dataTable.hover tbody > tr.selected:hover,
+table.dataTable.hover tbody > tr > .selected:hover, table.dataTable.display tbody > tr.selected:hover,
+table.dataTable.display tbody > tr > .selected:hover {
+  background-color: #0271d0;
+}
+table.dataTable.order-column tbody > tr.selected > .sorting_1,
+table.dataTable.order-column tbody > tr.selected > .sorting_2,
+table.dataTable.order-column tbody > tr.selected > .sorting_3,
+table.dataTable.order-column tbody > tr > .selected, table.dataTable.display tbody > tr.selected > .sorting_1,
+table.dataTable.display tbody > tr.selected > .sorting_2,
+table.dataTable.display tbody > tr.selected > .sorting_3,
+table.dataTable.display tbody > tr > .selected {
+  background-color: #0273d4;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_1 {
+  background-color: #026fcc;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_2 {
+  background-color: #0270ce;
+}
+table.dataTable.display tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_3 {
+  background-color: #0270d0;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_1 {
+  background-color: #0273d4;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_2 {
+  background-color: #0274d5;
+}
+table.dataTable.display tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_3 {
+  background-color: #0275d7;
+}
+table.dataTable.display tbody > tr.odd > .selected, table.dataTable.order-column.stripe tbody > tr.odd > .selected {
+  background-color: #026fcc;
+}
+table.dataTable.display tbody > tr.even > .selected, table.dataTable.order-column.stripe tbody > tr.even > .selected {
+  background-color: #0273d4;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_1, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_1 {
+  background-color: #026bc6;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_2, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_2 {
+  background-color: #026cc8;
+}
+table.dataTable.display tbody > tr.selected:hover > .sorting_3, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_3 {
+  background-color: #026eca;
+}
+table.dataTable.display tbody > tr:hover > .selected,
+table.dataTable.display tbody > tr > .selected:hover, table.dataTable.order-column.hover tbody > tr:hover > .selected,
+table.dataTable.order-column.hover tbody > tr > .selected:hover {
+  background-color: #026bc6;
+}
+table.dataTable tbody td.select-checkbox,
+table.dataTable tbody th.select-checkbox {
+  position: relative;
+}
+table.dataTable tbody td.select-checkbox:before, table.dataTable tbody td.select-checkbox:after,
+table.dataTable tbody th.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:after {
+  display: block;
+  position: absolute;
+  top: 1.2em;
+  left: 50%;
+  width: 12px;
+  height: 12px;
+  box-sizing: border-box;
+}
+table.dataTable tbody td.select-checkbox:before,
+table.dataTable tbody th.select-checkbox:before {
+  content: ' ';
+  margin-top: -6px;
+  margin-left: -6px;
+  border: 1px solid black;
+  border-radius: 3px;
+}
+table.dataTable tr.selected td.select-checkbox:after,
+table.dataTable tr.selected th.select-checkbox:after {
+  content: '\2714';
+  margin-top: -11px;
+  margin-left: -4px;
+  text-align: center;
+  text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+  margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+  div.dataTables_wrapper span.select-info,
+  div.dataTables_wrapper span.select-item {
+    margin-left: 0;
+    display: block;
+  }
+}
+table.dataTable tbody tr.selected,
+table.dataTable tbody th.selected,
+table.dataTable tbody td.selected {
+  color: white;
+}
+table.dataTable tbody tr.selected a,
+table.dataTable tbody th.selected a,
+table.dataTable tbody td.selected a {
+  color: #a2d4ed;
+}
+
+
Index: public/vendors/dataTable/datatables.js
===================================================================
--- public/vendors/dataTable/datatables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/datatables.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,94182 @@
+/*
+ * This combined file was created by the DataTables downloader builder:
+ *   https://datatables.net/download
+ *
+ * To rebuild or modify this file with the latest versions of the included
+ * software please visit:
+ *   https://datatables.net/download/#bs4/jszip-2.5.0/pdfmake-0.1.36/dt-1.10.20/af-2.3.4/b-1.6.1/b-colvis-1.6.1/b-flash-1.6.1/b-html5-1.6.1/b-print-1.6.1/cr-1.5.2/fc-3.3.0/fh-3.1.6/kt-2.5.1/r-2.2.3/rg-1.1.1/rr-1.2.6/sc-2.0.1/sp-1.0.1/sl-1.3.1
+ *
+ * Included libraries:
+ *   JSZip 2.5.0, pdfmake 0.1.36, DataTables 1.10.20, AutoFill 2.3.4, Buttons 1.6.1, Column visibility 1.6.1, Flash export 1.6.1, HTML5 export 1.6.1, Print view 1.6.1, ColReorder 1.5.2, FixedColumns 3.3.0, FixedHeader 3.1.6, KeyTable 2.5.1, Responsive 2.2.3, RowGroup 1.1.1, RowReorder 1.2.6, Scroller 2.0.1, SearchPanes 1.0.1, Select 1.3.1
+ */
+
+/*!
+
+JSZip - A Javascript class for generating and reading zip files
+<http://stuartk.com/jszip>
+
+(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com>
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
+
+JSZip uses the library pako released under the MIT license :
+https://github.com/nodeca/pako/blob/master/LICENSE
+*/
+!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.JSZip=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
+'use strict';
+// private property
+var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+
+
+// public method for encoding
+exports.encode = function(input, utf8) {
+    var output = "";
+    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
+    var i = 0;
+
+    while (i < input.length) {
+
+        chr1 = input.charCodeAt(i++);
+        chr2 = input.charCodeAt(i++);
+        chr3 = input.charCodeAt(i++);
+
+        enc1 = chr1 >> 2;
+        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+        enc4 = chr3 & 63;
+
+        if (isNaN(chr2)) {
+            enc3 = enc4 = 64;
+        }
+        else if (isNaN(chr3)) {
+            enc4 = 64;
+        }
+
+        output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
+
+    }
+
+    return output;
+};
+
+// public method for decoding
+exports.decode = function(input, utf8) {
+    var output = "";
+    var chr1, chr2, chr3;
+    var enc1, enc2, enc3, enc4;
+    var i = 0;
+
+    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+    while (i < input.length) {
+
+        enc1 = _keyStr.indexOf(input.charAt(i++));
+        enc2 = _keyStr.indexOf(input.charAt(i++));
+        enc3 = _keyStr.indexOf(input.charAt(i++));
+        enc4 = _keyStr.indexOf(input.charAt(i++));
+
+        chr1 = (enc1 << 2) | (enc2 >> 4);
+        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+        chr3 = ((enc3 & 3) << 6) | enc4;
+
+        output = output + String.fromCharCode(chr1);
+
+        if (enc3 != 64) {
+            output = output + String.fromCharCode(chr2);
+        }
+        if (enc4 != 64) {
+            output = output + String.fromCharCode(chr3);
+        }
+
+    }
+
+    return output;
+
+};
+
+},{}],2:[function(_dereq_,module,exports){
+'use strict';
+function CompressedObject() {
+    this.compressedSize = 0;
+    this.uncompressedSize = 0;
+    this.crc32 = 0;
+    this.compressionMethod = null;
+    this.compressedContent = null;
+}
+
+CompressedObject.prototype = {
+    /**
+     * Return the decompressed content in an unspecified format.
+     * The format will depend on the decompressor.
+     * @return {Object} the decompressed content.
+     */
+    getContent: function() {
+        return null; // see implementation
+    },
+    /**
+     * Return the compressed content in an unspecified format.
+     * The format will depend on the compressed conten source.
+     * @return {Object} the compressed content.
+     */
+    getCompressedContent: function() {
+        return null; // see implementation
+    }
+};
+module.exports = CompressedObject;
+
+},{}],3:[function(_dereq_,module,exports){
+'use strict';
+exports.STORE = {
+    magic: "\x00\x00",
+    compress: function(content, compressionOptions) {
+        return content; // no compression
+    },
+    uncompress: function(content) {
+        return content; // no compression
+    },
+    compressInputType: null,
+    uncompressInputType: null
+};
+exports.DEFLATE = _dereq_('./flate');
+
+},{"./flate":8}],4:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+var table = [
+    0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
+    0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
+    0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
+    0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
+    0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
+    0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
+    0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
+    0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
+    0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
+    0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
+    0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
+    0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
+    0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
+    0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
+    0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
+    0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
+    0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
+    0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
+    0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
+    0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
+    0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
+    0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
+    0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
+    0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
+    0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
+    0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
+    0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
+    0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
+    0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
+    0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
+    0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
+    0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
+    0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
+    0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
+    0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
+    0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
+    0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
+    0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
+    0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
+    0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
+    0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
+    0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
+    0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
+    0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
+    0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
+    0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
+    0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
+    0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
+    0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
+    0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
+    0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
+    0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
+    0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
+    0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
+    0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
+    0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
+    0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
+    0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
+    0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
+    0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
+    0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
+    0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
+    0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
+    0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
+];
+
+/**
+ *
+ *  Javascript crc32
+ *  http://www.webtoolkit.info/
+ *
+ */
+module.exports = function crc32(input, crc) {
+    if (typeof input === "undefined" || !input.length) {
+        return 0;
+    }
+
+    var isArray = utils.getTypeOf(input) !== "string";
+
+    if (typeof(crc) == "undefined") {
+        crc = 0;
+    }
+    var x = 0;
+    var y = 0;
+    var b = 0;
+
+    crc = crc ^ (-1);
+    for (var i = 0, iTop = input.length; i < iTop; i++) {
+        b = isArray ? input[i] : input.charCodeAt(i);
+        y = (crc ^ b) & 0xFF;
+        x = table[y];
+        crc = (crc >>> 8) ^ x;
+    }
+
+    return crc ^ (-1);
+};
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{"./utils":21}],5:[function(_dereq_,module,exports){
+'use strict';
+var utils = _dereq_('./utils');
+
+function DataReader(data) {
+    this.data = null; // type : see implementation
+    this.length = 0;
+    this.index = 0;
+}
+DataReader.prototype = {
+    /**
+     * Check that the offset will not go too far.
+     * @param {string} offset the additional offset to check.
+     * @throws {Error} an Error if the offset is out of bounds.
+     */
+    checkOffset: function(offset) {
+        this.checkIndex(this.index + offset);
+    },
+    /**
+     * Check that the specifed index will not be too far.
+     * @param {string} newIndex the index to check.
+     * @throws {Error} an Error if the index is out of bounds.
+     */
+    checkIndex: function(newIndex) {
+        if (this.length < newIndex || newIndex < 0) {
+            throw new Error("End of data reached (data length = " + this.length + ", asked index = " + (newIndex) + "). Corrupted zip ?");
+        }
+    },
+    /**
+     * Change the index.
+     * @param {number} newIndex The new index.
+     * @throws {Error} if the new index is out of the data.
+     */
+    setIndex: function(newIndex) {
+        this.checkIndex(newIndex);
+        this.index = newIndex;
+    },
+    /**
+     * Skip the next n bytes.
+     * @param {number} n the number of bytes to skip.
+     * @throws {Error} if the new index is out of the data.
+     */
+    skip: function(n) {
+        this.setIndex(this.index + n);
+    },
+    /**
+     * Get the byte at the specified index.
+     * @param {number} i the index to use.
+     * @return {number} a byte.
+     */
+    byteAt: function(i) {
+        // see implementations
+    },
+    /**
+     * Get the next number with a given byte size.
+     * @param {number} size the number of bytes to read.
+     * @return {number} the corresponding number.
+     */
+    readInt: function(size) {
+        var result = 0,
+            i;
+        this.checkOffset(size);
+        for (i = this.index + size - 1; i >= this.index; i--) {
+            result = (result << 8) + this.byteAt(i);
+        }
+        this.index += size;
+        return result;
+    },
+    /**
+     * Get the next string with a given byte size.
+     * @param {number} size the number of bytes to read.
+     * @return {string} the corresponding string.
+     */
+    readString: function(size) {
+        return utils.transformTo("string", this.readData(size));
+    },
+    /**
+     * Get raw data without conversion, <size> bytes.
+     * @param {number} size the number of bytes to read.
+     * @return {Object} the raw data, implementation specific.
+     */
+    readData: function(size) {
+        // see implementations
+    },
+    /**
+     * Find the last occurence of a zip signature (4 bytes).
+     * @param {string} sig the signature to find.
+     * @return {number} the index of the last occurence, -1 if not found.
+     */
+    lastIndexOfSignature: function(sig) {
+        // see implementations
+    },
+    /**
+     * Get the next date.
+     * @return {Date} the date.
+     */
+    readDate: function() {
+        var dostime = this.readInt(4);
+        return new Date(
+        ((dostime >> 25) & 0x7f) + 1980, // year
+        ((dostime >> 21) & 0x0f) - 1, // month
+        (dostime >> 16) & 0x1f, // day
+        (dostime >> 11) & 0x1f, // hour
+        (dostime >> 5) & 0x3f, // minute
+        (dostime & 0x1f) << 1); // second
+    }
+};
+module.exports = DataReader;
+
+},{"./utils":21}],6:[function(_dereq_,module,exports){
+'use strict';
+exports.base64 = false;
+exports.binary = false;
+exports.dir = false;
+exports.createFolders = false;
+exports.date = null;
+exports.compression = null;
+exports.compressionOptions = null;
+exports.comment = null;
+exports.unixPermissions = null;
+exports.dosPermissions = null;
+
+},{}],7:[function(_dereq_,module,exports){
+'use strict';
+var utils = _dereq_('./utils');
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2binary = function(str) {
+    return utils.string2binary(str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2Uint8Array = function(str) {
+    return utils.transformTo("uint8array", str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.uint8Array2String = function(array) {
+    return utils.transformTo("string", array);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2Blob = function(str) {
+    var buffer = utils.transformTo("arraybuffer", str);
+    return utils.arrayBuffer2Blob(buffer);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.arrayBuffer2Blob = function(buffer) {
+    return utils.arrayBuffer2Blob(buffer);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.transformTo = function(outputType, input) {
+    return utils.transformTo(outputType, input);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.getTypeOf = function(input) {
+    return utils.getTypeOf(input);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.checkSupport = function(type) {
+    return utils.checkSupport(type);
+};
+
+/**
+ * @deprecated
+ * This value will be removed in a future version without replacement.
+ */
+exports.MAX_VALUE_16BITS = utils.MAX_VALUE_16BITS;
+
+/**
+ * @deprecated
+ * This value will be removed in a future version without replacement.
+ */
+exports.MAX_VALUE_32BITS = utils.MAX_VALUE_32BITS;
+
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.pretty = function(str) {
+    return utils.pretty(str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.findCompression = function(compressionMethod) {
+    return utils.findCompression(compressionMethod);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.isRegExp = function (object) {
+    return utils.isRegExp(object);
+};
+
+
+},{"./utils":21}],8:[function(_dereq_,module,exports){
+'use strict';
+var USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');
+
+var pako = _dereq_("pako");
+exports.uncompressInputType = USE_TYPEDARRAY ? "uint8array" : "array";
+exports.compressInputType = USE_TYPEDARRAY ? "uint8array" : "array";
+
+exports.magic = "\x08\x00";
+exports.compress = function(input, compressionOptions) {
+    return pako.deflateRaw(input, {
+        level : compressionOptions.level || -1 // default compression
+    });
+};
+exports.uncompress =  function(input) {
+    return pako.inflateRaw(input);
+};
+
+},{"pako":24}],9:[function(_dereq_,module,exports){
+'use strict';
+
+var base64 = _dereq_('./base64');
+
+/**
+Usage:
+   zip = new JSZip();
+   zip.file("hello.txt", "Hello, World!").file("tempfile", "nothing");
+   zip.folder("images").file("smile.gif", base64Data, {base64: true});
+   zip.file("Xmas.txt", "Ho ho ho !", {date : new Date("December 25, 2007 00:00:01")});
+   zip.remove("tempfile");
+
+   base64zip = zip.generate();
+
+**/
+
+/**
+ * Representation a of zip file in js
+ * @constructor
+ * @param {String=|ArrayBuffer=|Uint8Array=} data the data to load, if any (optional).
+ * @param {Object=} options the options for creating this objects (optional).
+ */
+function JSZip(data, options) {
+    // if this constructor is used without `new`, it adds `new` before itself:
+    if(!(this instanceof JSZip)) return new JSZip(data, options);
+
+    // object containing the files :
+    // {
+    //   "folder/" : {...},
+    //   "folder/data.txt" : {...}
+    // }
+    this.files = {};
+
+    this.comment = null;
+
+    // Where we are in the hierarchy
+    this.root = "";
+    if (data) {
+        this.load(data, options);
+    }
+    this.clone = function() {
+        var newObj = new JSZip();
+        for (var i in this) {
+            if (typeof this[i] !== "function") {
+                newObj[i] = this[i];
+            }
+        }
+        return newObj;
+    };
+}
+JSZip.prototype = _dereq_('./object');
+JSZip.prototype.load = _dereq_('./load');
+JSZip.support = _dereq_('./support');
+JSZip.defaults = _dereq_('./defaults');
+
+/**
+ * @deprecated
+ * This namespace will be removed in a future version without replacement.
+ */
+JSZip.utils = _dereq_('./deprecatedPublicUtils');
+
+JSZip.base64 = {
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    encode : function(input) {
+        return base64.encode(input);
+    },
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    decode : function(input) {
+        return base64.decode(input);
+    }
+};
+JSZip.compressions = _dereq_('./compressions');
+module.exports = JSZip;
+
+},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(_dereq_,module,exports){
+'use strict';
+var base64 = _dereq_('./base64');
+var ZipEntries = _dereq_('./zipEntries');
+module.exports = function(data, options) {
+    var files, zipEntries, i, input;
+    options = options || {};
+    if (options.base64) {
+        data = base64.decode(data);
+    }
+
+    zipEntries = new ZipEntries(data, options);
+    files = zipEntries.files;
+    for (i = 0; i < files.length; i++) {
+        input = files[i];
+        this.file(input.fileName, input.decompressed, {
+            binary: true,
+            optimizedBinaryString: true,
+            date: input.date,
+            dir: input.dir,
+            comment : input.fileComment.length ? input.fileComment : null,
+            unixPermissions : input.unixPermissions,
+            dosPermissions : input.dosPermissions,
+            createFolders: options.createFolders
+        });
+    }
+    if (zipEntries.zipComment.length) {
+        this.comment = zipEntries.zipComment;
+    }
+
+    return this;
+};
+
+},{"./base64":1,"./zipEntries":22}],11:[function(_dereq_,module,exports){
+(function (Buffer){
+'use strict';
+module.exports = function(data, encoding){
+    return new Buffer(data, encoding);
+};
+module.exports.test = function(b){
+    return Buffer.isBuffer(b);
+};
+
+}).call(this,(typeof Buffer !== "undefined" ? Buffer : undefined))
+},{}],12:[function(_dereq_,module,exports){
+'use strict';
+var Uint8ArrayReader = _dereq_('./uint8ArrayReader');
+
+function NodeBufferReader(data) {
+    this.data = data;
+    this.length = this.data.length;
+    this.index = 0;
+}
+NodeBufferReader.prototype = new Uint8ArrayReader();
+
+/**
+ * @see DataReader.readData
+ */
+NodeBufferReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    var result = this.data.slice(this.index, this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = NodeBufferReader;
+
+},{"./uint8ArrayReader":18}],13:[function(_dereq_,module,exports){
+'use strict';
+var support = _dereq_('./support');
+var utils = _dereq_('./utils');
+var crc32 = _dereq_('./crc32');
+var signature = _dereq_('./signature');
+var defaults = _dereq_('./defaults');
+var base64 = _dereq_('./base64');
+var compressions = _dereq_('./compressions');
+var CompressedObject = _dereq_('./compressedObject');
+var nodeBuffer = _dereq_('./nodeBuffer');
+var utf8 = _dereq_('./utf8');
+var StringWriter = _dereq_('./stringWriter');
+var Uint8ArrayWriter = _dereq_('./uint8ArrayWriter');
+
+/**
+ * Returns the raw data of a ZipObject, decompress the content if necessary.
+ * @param {ZipObject} file the file to use.
+ * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
+ */
+var getRawData = function(file) {
+    if (file._data instanceof CompressedObject) {
+        file._data = file._data.getContent();
+        file.options.binary = true;
+        file.options.base64 = false;
+
+        if (utils.getTypeOf(file._data) === "uint8array") {
+            var copy = file._data;
+            // when reading an arraybuffer, the CompressedObject mechanism will keep it and subarray() a Uint8Array.
+            // if we request a file in the same format, we might get the same Uint8Array or its ArrayBuffer (the original zip file).
+            file._data = new Uint8Array(copy.length);
+            // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
+            if (copy.length !== 0) {
+                file._data.set(copy, 0);
+            }
+        }
+    }
+    return file._data;
+};
+
+/**
+ * Returns the data of a ZipObject in a binary form. If the content is an unicode string, encode it.
+ * @param {ZipObject} file the file to use.
+ * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
+ */
+var getBinaryData = function(file) {
+    var result = getRawData(file),
+        type = utils.getTypeOf(result);
+    if (type === "string") {
+        if (!file.options.binary) {
+            // unicode text !
+            // unicode string => binary string is a painful process, check if we can avoid it.
+            if (support.nodebuffer) {
+                return nodeBuffer(result, "utf-8");
+            }
+        }
+        return file.asBinary();
+    }
+    return result;
+};
+
+/**
+ * Transform this._data into a string.
+ * @param {function} filter a function String -> String, applied if not null on the result.
+ * @return {String} the string representing this._data.
+ */
+var dataToString = function(asUTF8) {
+    var result = getRawData(this);
+    if (result === null || typeof result === "undefined") {
+        return "";
+    }
+    // if the data is a base64 string, we decode it before checking the encoding !
+    if (this.options.base64) {
+        result = base64.decode(result);
+    }
+    if (asUTF8 && this.options.binary) {
+        // JSZip.prototype.utf8decode supports arrays as input
+        // skip to array => string step, utf8decode will do it.
+        result = out.utf8decode(result);
+    }
+    else {
+        // no utf8 transformation, do the array => string step.
+        result = utils.transformTo("string", result);
+    }
+
+    if (!asUTF8 && !this.options.binary) {
+        result = utils.transformTo("string", out.utf8encode(result));
+    }
+    return result;
+};
+/**
+ * A simple object representing a file in the zip file.
+ * @constructor
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data
+ * @param {Object} options the options of the file
+ */
+var ZipObject = function(name, data, options) {
+    this.name = name;
+    this.dir = options.dir;
+    this.date = options.date;
+    this.comment = options.comment;
+    this.unixPermissions = options.unixPermissions;
+    this.dosPermissions = options.dosPermissions;
+
+    this._data = data;
+    this.options = options;
+
+    /*
+     * This object contains initial values for dir and date.
+     * With them, we can check if the user changed the deprecated metadata in
+     * `ZipObject#options` or not.
+     */
+    this._initialMetadata = {
+      dir : options.dir,
+      date : options.date
+    };
+};
+
+ZipObject.prototype = {
+    /**
+     * Return the content as UTF8 string.
+     * @return {string} the UTF8 string.
+     */
+    asText: function() {
+        return dataToString.call(this, true);
+    },
+    /**
+     * Returns the binary content.
+     * @return {string} the content as binary.
+     */
+    asBinary: function() {
+        return dataToString.call(this, false);
+    },
+    /**
+     * Returns the content as a nodejs Buffer.
+     * @return {Buffer} the content as a Buffer.
+     */
+    asNodeBuffer: function() {
+        var result = getBinaryData(this);
+        return utils.transformTo("nodebuffer", result);
+    },
+    /**
+     * Returns the content as an Uint8Array.
+     * @return {Uint8Array} the content as an Uint8Array.
+     */
+    asUint8Array: function() {
+        var result = getBinaryData(this);
+        return utils.transformTo("uint8array", result);
+    },
+    /**
+     * Returns the content as an ArrayBuffer.
+     * @return {ArrayBuffer} the content as an ArrayBufer.
+     */
+    asArrayBuffer: function() {
+        return this.asUint8Array().buffer;
+    }
+};
+
+/**
+ * Transform an integer into a string in hexadecimal.
+ * @private
+ * @param {number} dec the number to convert.
+ * @param {number} bytes the number of bytes to generate.
+ * @returns {string} the result.
+ */
+var decToHex = function(dec, bytes) {
+    var hex = "",
+        i;
+    for (i = 0; i < bytes; i++) {
+        hex += String.fromCharCode(dec & 0xff);
+        dec = dec >>> 8;
+    }
+    return hex;
+};
+
+/**
+ * Merge the objects passed as parameters into a new one.
+ * @private
+ * @param {...Object} var_args All objects to merge.
+ * @return {Object} a new object with the data of the others.
+ */
+var extend = function() {
+    var result = {}, i, attr;
+    for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers
+        for (attr in arguments[i]) {
+            if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") {
+                result[attr] = arguments[i][attr];
+            }
+        }
+    }
+    return result;
+};
+
+/**
+ * Transforms the (incomplete) options from the user into the complete
+ * set of options to create a file.
+ * @private
+ * @param {Object} o the options from the user.
+ * @return {Object} the complete set of options.
+ */
+var prepareFileAttrs = function(o) {
+    o = o || {};
+    if (o.base64 === true && (o.binary === null || o.binary === undefined)) {
+        o.binary = true;
+    }
+    o = extend(o, defaults);
+    o.date = o.date || new Date();
+    if (o.compression !== null) o.compression = o.compression.toUpperCase();
+
+    return o;
+};
+
+/**
+ * Add a file in the current folder.
+ * @private
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file
+ * @param {Object} o the options of the file
+ * @return {Object} the new file.
+ */
+var fileAdd = function(name, data, o) {
+    // be sure sub folders exist
+    var dataType = utils.getTypeOf(data),
+        parent;
+
+    o = prepareFileAttrs(o);
+
+    if (typeof o.unixPermissions === "string") {
+        o.unixPermissions = parseInt(o.unixPermissions, 8);
+    }
+
+    // UNX_IFDIR  0040000 see zipinfo.c
+    if (o.unixPermissions && (o.unixPermissions & 0x4000)) {
+        o.dir = true;
+    }
+    // Bit 4    Directory
+    if (o.dosPermissions && (o.dosPermissions & 0x0010)) {
+        o.dir = true;
+    }
+
+    if (o.dir) {
+        name = forceTrailingSlash(name);
+    }
+
+    if (o.createFolders && (parent = parentFolder(name))) {
+        folderAdd.call(this, parent, true);
+    }
+
+    if (o.dir || data === null || typeof data === "undefined") {
+        o.base64 = false;
+        o.binary = false;
+        data = null;
+        dataType = null;
+    }
+    else if (dataType === "string") {
+        if (o.binary && !o.base64) {
+            // optimizedBinaryString == true means that the file has already been filtered with a 0xFF mask
+            if (o.optimizedBinaryString !== true) {
+                // this is a string, not in a base64 format.
+                // Be sure that this is a correct "binary string"
+                data = utils.string2binary(data);
+            }
+        }
+    }
+    else { // arraybuffer, uint8array, ...
+        o.base64 = false;
+        o.binary = true;
+
+        if (!dataType && !(data instanceof CompressedObject)) {
+            throw new Error("The data of '" + name + "' is in an unsupported format !");
+        }
+
+        // special case : it's way easier to work with Uint8Array than with ArrayBuffer
+        if (dataType === "arraybuffer") {
+            data = utils.transformTo("uint8array", data);
+        }
+    }
+
+    var object = new ZipObject(name, data, o);
+    this.files[name] = object;
+    return object;
+};
+
+/**
+ * Find the parent folder of the path.
+ * @private
+ * @param {string} path the path to use
+ * @return {string} the parent folder, or ""
+ */
+var parentFolder = function (path) {
+    if (path.slice(-1) == '/') {
+        path = path.substring(0, path.length - 1);
+    }
+    var lastSlash = path.lastIndexOf('/');
+    return (lastSlash > 0) ? path.substring(0, lastSlash) : "";
+};
+
+
+/**
+ * Returns the path with a slash at the end.
+ * @private
+ * @param {String} path the path to check.
+ * @return {String} the path with a trailing slash.
+ */
+var forceTrailingSlash = function(path) {
+    // Check the name ends with a /
+    if (path.slice(-1) != "/") {
+        path += "/"; // IE doesn't like substr(-1)
+    }
+    return path;
+};
+/**
+ * Add a (sub) folder in the current folder.
+ * @private
+ * @param {string} name the folder's name
+ * @param {boolean=} [createFolders] If true, automatically create sub
+ *  folders. Defaults to false.
+ * @return {Object} the new folder.
+ */
+var folderAdd = function(name, createFolders) {
+    createFolders = (typeof createFolders !== 'undefined') ? createFolders : false;
+
+    name = forceTrailingSlash(name);
+
+    // Does this folder already exist?
+    if (!this.files[name]) {
+        fileAdd.call(this, name, null, {
+            dir: true,
+            createFolders: createFolders
+        });
+    }
+    return this.files[name];
+};
+
+/**
+ * Generate a JSZip.CompressedObject for a given zipOject.
+ * @param {ZipObject} file the object to read.
+ * @param {JSZip.compression} compression the compression to use.
+ * @param {Object} compressionOptions the options to use when compressing.
+ * @return {JSZip.CompressedObject} the compressed result.
+ */
+var generateCompressedObjectFrom = function(file, compression, compressionOptions) {
+    var result = new CompressedObject(),
+        content;
+
+    // the data has not been decompressed, we might reuse things !
+    if (file._data instanceof CompressedObject) {
+        result.uncompressedSize = file._data.uncompressedSize;
+        result.crc32 = file._data.crc32;
+
+        if (result.uncompressedSize === 0 || file.dir) {
+            compression = compressions['STORE'];
+            result.compressedContent = "";
+            result.crc32 = 0;
+        }
+        else if (file._data.compressionMethod === compression.magic) {
+            result.compressedContent = file._data.getCompressedContent();
+        }
+        else {
+            content = file._data.getContent();
+            // need to decompress / recompress
+            result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);
+        }
+    }
+    else {
+        // have uncompressed data
+        content = getBinaryData(file);
+        if (!content || content.length === 0 || file.dir) {
+            compression = compressions['STORE'];
+            content = "";
+        }
+        result.uncompressedSize = content.length;
+        result.crc32 = crc32(content);
+        result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);
+    }
+
+    result.compressedSize = result.compressedContent.length;
+    result.compressionMethod = compression.magic;
+
+    return result;
+};
+
+
+
+
+/**
+ * Generate the UNIX part of the external file attributes.
+ * @param {Object} unixPermissions the unix permissions or null.
+ * @param {Boolean} isDir true if the entry is a directory, false otherwise.
+ * @return {Number} a 32 bit integer.
+ *
+ * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :
+ *
+ * TTTTsstrwxrwxrwx0000000000ADVSHR
+ * ^^^^____________________________ file type, see zipinfo.c (UNX_*)
+ *     ^^^_________________________ setuid, setgid, sticky
+ *        ^^^^^^^^^________________ permissions
+ *                 ^^^^^^^^^^______ not used ?
+ *                           ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only
+ */
+var generateUnixExternalFileAttr = function (unixPermissions, isDir) {
+
+    var result = unixPermissions;
+    if (!unixPermissions) {
+        // I can't use octal values in strict mode, hence the hexa.
+        //  040775 => 0x41fd
+        // 0100664 => 0x81b4
+        result = isDir ? 0x41fd : 0x81b4;
+    }
+
+    return (result & 0xFFFF) << 16;
+};
+
+/**
+ * Generate the DOS part of the external file attributes.
+ * @param {Object} dosPermissions the dos permissions or null.
+ * @param {Boolean} isDir true if the entry is a directory, false otherwise.
+ * @return {Number} a 32 bit integer.
+ *
+ * Bit 0     Read-Only
+ * Bit 1     Hidden
+ * Bit 2     System
+ * Bit 3     Volume Label
+ * Bit 4     Directory
+ * Bit 5     Archive
+ */
+var generateDosExternalFileAttr = function (dosPermissions, isDir) {
+
+    // the dir flag is already set for compatibility
+
+    return (dosPermissions || 0)  & 0x3F;
+};
+
+/**
+ * Generate the various parts used in the construction of the final zip file.
+ * @param {string} name the file name.
+ * @param {ZipObject} file the file content.
+ * @param {JSZip.CompressedObject} compressedObject the compressed object.
+ * @param {number} offset the current offset from the start of the zip file.
+ * @param {String} platform let's pretend we are this platform (change platform dependents fields)
+ * @return {object} the zip parts.
+ */
+var generateZipParts = function(name, file, compressedObject, offset, platform) {
+    var data = compressedObject.compressedContent,
+        utfEncodedFileName = utils.transformTo("string", utf8.utf8encode(file.name)),
+        comment = file.comment || "",
+        utfEncodedComment = utils.transformTo("string", utf8.utf8encode(comment)),
+        useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,
+        useUTF8ForComment = utfEncodedComment.length !== comment.length,
+        o = file.options,
+        dosTime,
+        dosDate,
+        extraFields = "",
+        unicodePathExtraField = "",
+        unicodeCommentExtraField = "",
+        dir, date;
+
+
+    // handle the deprecated options.dir
+    if (file._initialMetadata.dir !== file.dir) {
+        dir = file.dir;
+    } else {
+        dir = o.dir;
+    }
+
+    // handle the deprecated options.date
+    if(file._initialMetadata.date !== file.date) {
+        date = file.date;
+    } else {
+        date = o.date;
+    }
+
+    var extFileAttr = 0;
+    var versionMadeBy = 0;
+    if (dir) {
+        // dos or unix, we set the dos dir flag
+        extFileAttr |= 0x00010;
+    }
+    if(platform === "UNIX") {
+        versionMadeBy = 0x031E; // UNIX, version 3.0
+        extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);
+    } else { // DOS or other, fallback to DOS
+        versionMadeBy = 0x0014; // DOS, version 2.0
+        extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);
+    }
+
+    // date
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html
+
+    dosTime = date.getHours();
+    dosTime = dosTime << 6;
+    dosTime = dosTime | date.getMinutes();
+    dosTime = dosTime << 5;
+    dosTime = dosTime | date.getSeconds() / 2;
+
+    dosDate = date.getFullYear() - 1980;
+    dosDate = dosDate << 4;
+    dosDate = dosDate | (date.getMonth() + 1);
+    dosDate = dosDate << 5;
+    dosDate = dosDate | date.getDate();
+
+    if (useUTF8ForFileName) {
+        // set the unicode path extra field. unzip needs at least one extra
+        // field to correctly handle unicode path, so using the path is as good
+        // as any other information. This could improve the situation with
+        // other archive managers too.
+        // This field is usually used without the utf8 flag, with a non
+        // unicode path in the header (winrar, winzip). This helps (a bit)
+        // with the messy Windows' default compressed folders feature but
+        // breaks on p7zip which doesn't seek the unicode path extra field.
+        // So for now, UTF-8 everywhere !
+        unicodePathExtraField =
+            // Version
+            decToHex(1, 1) +
+            // NameCRC32
+            decToHex(crc32(utfEncodedFileName), 4) +
+            // UnicodeName
+            utfEncodedFileName;
+
+        extraFields +=
+            // Info-ZIP Unicode Path Extra Field
+            "\x75\x70" +
+            // size
+            decToHex(unicodePathExtraField.length, 2) +
+            // content
+            unicodePathExtraField;
+    }
+
+    if(useUTF8ForComment) {
+
+        unicodeCommentExtraField =
+            // Version
+            decToHex(1, 1) +
+            // CommentCRC32
+            decToHex(this.crc32(utfEncodedComment), 4) +
+            // UnicodeName
+            utfEncodedComment;
+
+        extraFields +=
+            // Info-ZIP Unicode Path Extra Field
+            "\x75\x63" +
+            // size
+            decToHex(unicodeCommentExtraField.length, 2) +
+            // content
+            unicodeCommentExtraField;
+    }
+
+    var header = "";
+
+    // version needed to extract
+    header += "\x0A\x00";
+    // general purpose bit flag
+    // set bit 11 if utf8
+    header += (useUTF8ForFileName || useUTF8ForComment) ? "\x00\x08" : "\x00\x00";
+    // compression method
+    header += compressedObject.compressionMethod;
+    // last mod file time
+    header += decToHex(dosTime, 2);
+    // last mod file date
+    header += decToHex(dosDate, 2);
+    // crc-32
+    header += decToHex(compressedObject.crc32, 4);
+    // compressed size
+    header += decToHex(compressedObject.compressedSize, 4);
+    // uncompressed size
+    header += decToHex(compressedObject.uncompressedSize, 4);
+    // file name length
+    header += decToHex(utfEncodedFileName.length, 2);
+    // extra field length
+    header += decToHex(extraFields.length, 2);
+
+
+    var fileRecord = signature.LOCAL_FILE_HEADER + header + utfEncodedFileName + extraFields;
+
+    var dirRecord = signature.CENTRAL_FILE_HEADER +
+    // version made by (00: DOS)
+    decToHex(versionMadeBy, 2) +
+    // file header (common to file and central directory)
+    header +
+    // file comment length
+    decToHex(utfEncodedComment.length, 2) +
+    // disk number start
+    "\x00\x00" +
+    // internal file attributes TODO
+    "\x00\x00" +
+    // external file attributes
+    decToHex(extFileAttr, 4) +
+    // relative offset of local header
+    decToHex(offset, 4) +
+    // file name
+    utfEncodedFileName +
+    // extra field
+    extraFields +
+    // file comment
+    utfEncodedComment;
+
+    return {
+        fileRecord: fileRecord,
+        dirRecord: dirRecord,
+        compressedObject: compressedObject
+    };
+};
+
+
+// return the actual prototype of JSZip
+var out = {
+    /**
+     * Read an existing zip and merge the data in the current JSZip object.
+     * The implementation is in jszip-load.js, don't forget to include it.
+     * @param {String|ArrayBuffer|Uint8Array|Buffer} stream  The stream to load
+     * @param {Object} options Options for loading the stream.
+     *  options.base64 : is the stream in base64 ? default : false
+     * @return {JSZip} the current JSZip object
+     */
+    load: function(stream, options) {
+        throw new Error("Load method is not defined. Is the file jszip-load.js included ?");
+    },
+
+    /**
+     * Filter nested files/folders with the specified function.
+     * @param {Function} search the predicate to use :
+     * function (relativePath, file) {...}
+     * It takes 2 arguments : the relative path and the file.
+     * @return {Array} An array of matching elements.
+     */
+    filter: function(search) {
+        var result = [],
+            filename, relativePath, file, fileClone;
+        for (filename in this.files) {
+            if (!this.files.hasOwnProperty(filename)) {
+                continue;
+            }
+            file = this.files[filename];
+            // return a new object, don't let the user mess with our internal objects :)
+            fileClone = new ZipObject(file.name, file._data, extend(file.options));
+            relativePath = filename.slice(this.root.length, filename.length);
+            if (filename.slice(0, this.root.length) === this.root && // the file is in the current root
+            search(relativePath, fileClone)) { // and the file matches the function
+                result.push(fileClone);
+            }
+        }
+        return result;
+    },
+
+    /**
+     * Add a file to the zip file, or search a file.
+     * @param   {string|RegExp} name The name of the file to add (if data is defined),
+     * the name of the file to find (if no data) or a regex to match files.
+     * @param   {String|ArrayBuffer|Uint8Array|Buffer} data  The file data, either raw or base64 encoded
+     * @param   {Object} o     File options
+     * @return  {JSZip|Object|Array} this JSZip object (when adding a file),
+     * a file (when searching by string) or an array of files (when searching by regex).
+     */
+    file: function(name, data, o) {
+        if (arguments.length === 1) {
+            if (utils.isRegExp(name)) {
+                var regexp = name;
+                return this.filter(function(relativePath, file) {
+                    return !file.dir && regexp.test(relativePath);
+                });
+            }
+            else { // text
+                return this.filter(function(relativePath, file) {
+                    return !file.dir && relativePath === name;
+                })[0] || null;
+            }
+        }
+        else { // more than one argument : we have data !
+            name = this.root + name;
+            fileAdd.call(this, name, data, o);
+        }
+        return this;
+    },
+
+    /**
+     * Add a directory to the zip file, or search.
+     * @param   {String|RegExp} arg The name of the directory to add, or a regex to search folders.
+     * @return  {JSZip} an object with the new directory as the root, or an array containing matching folders.
+     */
+    folder: function(arg) {
+        if (!arg) {
+            return this;
+        }
+
+        if (utils.isRegExp(arg)) {
+            return this.filter(function(relativePath, file) {
+                return file.dir && arg.test(relativePath);
+            });
+        }
+
+        // else, name is a new folder
+        var name = this.root + arg;
+        var newFolder = folderAdd.call(this, name);
+
+        // Allow chaining by returning a new object with this folder as the root
+        var ret = this.clone();
+        ret.root = newFolder.name;
+        return ret;
+    },
+
+    /**
+     * Delete a file, or a directory and all sub-files, from the zip
+     * @param {string} name the name of the file to delete
+     * @return {JSZip} this JSZip object
+     */
+    remove: function(name) {
+        name = this.root + name;
+        var file = this.files[name];
+        if (!file) {
+            // Look for any folders
+            if (name.slice(-1) != "/") {
+                name += "/";
+            }
+            file = this.files[name];
+        }
+
+        if (file && !file.dir) {
+            // file
+            delete this.files[name];
+        } else {
+            // maybe a folder, delete recursively
+            var kids = this.filter(function(relativePath, file) {
+                return file.name.slice(0, name.length) === name;
+            });
+            for (var i = 0; i < kids.length; i++) {
+                delete this.files[kids[i].name];
+            }
+        }
+
+        return this;
+    },
+
+    /**
+     * Generate the complete zip file
+     * @param {Object} options the options to generate the zip file :
+     * - base64, (deprecated, use type instead) true to generate base64.
+     * - compression, "STORE" by default.
+     * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
+     * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file
+     */
+    generate: function(options) {
+        options = extend(options || {}, {
+            base64: true,
+            compression: "STORE",
+            compressionOptions : null,
+            type: "base64",
+            platform: "DOS",
+            comment: null,
+            mimeType: 'application/zip'
+        });
+
+        utils.checkSupport(options.type);
+
+        // accept nodejs `process.platform`
+        if(
+          options.platform === 'darwin' ||
+          options.platform === 'freebsd' ||
+          options.platform === 'linux' ||
+          options.platform === 'sunos'
+        ) {
+          options.platform = "UNIX";
+        }
+        if (options.platform === 'win32') {
+          options.platform = "DOS";
+        }
+
+        var zipData = [],
+            localDirLength = 0,
+            centralDirLength = 0,
+            writer, i,
+            utfEncodedComment = utils.transformTo("string", this.utf8encode(options.comment || this.comment || ""));
+
+        // first, generate all the zip parts.
+        for (var name in this.files) {
+            if (!this.files.hasOwnProperty(name)) {
+                continue;
+            }
+            var file = this.files[name];
+
+            var compressionName = file.options.compression || options.compression.toUpperCase();
+            var compression = compressions[compressionName];
+            if (!compression) {
+                throw new Error(compressionName + " is not a valid compression method !");
+            }
+            var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};
+
+            var compressedObject = generateCompressedObjectFrom.call(this, file, compression, compressionOptions);
+
+            var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength, options.platform);
+            localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize;
+            centralDirLength += zipPart.dirRecord.length;
+            zipData.push(zipPart);
+        }
+
+        var dirEnd = "";
+
+        // end of central dir signature
+        dirEnd = signature.CENTRAL_DIRECTORY_END +
+        // number of this disk
+        "\x00\x00" +
+        // number of the disk with the start of the central directory
+        "\x00\x00" +
+        // total number of entries in the central directory on this disk
+        decToHex(zipData.length, 2) +
+        // total number of entries in the central directory
+        decToHex(zipData.length, 2) +
+        // size of the central directory   4 bytes
+        decToHex(centralDirLength, 4) +
+        // offset of start of central directory with respect to the starting disk number
+        decToHex(localDirLength, 4) +
+        // .ZIP file comment length
+        decToHex(utfEncodedComment.length, 2) +
+        // .ZIP file comment
+        utfEncodedComment;
+
+
+        // we have all the parts (and the total length)
+        // time to create a writer !
+        var typeName = options.type.toLowerCase();
+        if(typeName==="uint8array"||typeName==="arraybuffer"||typeName==="blob"||typeName==="nodebuffer") {
+            writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);
+        }else{
+            writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);
+        }
+
+        for (i = 0; i < zipData.length; i++) {
+            writer.append(zipData[i].fileRecord);
+            writer.append(zipData[i].compressedObject.compressedContent);
+        }
+        for (i = 0; i < zipData.length; i++) {
+            writer.append(zipData[i].dirRecord);
+        }
+
+        writer.append(dirEnd);
+
+        var zip = writer.finalize();
+
+
+
+        switch(options.type.toLowerCase()) {
+            // case "zip is an Uint8Array"
+            case "uint8array" :
+            case "arraybuffer" :
+            case "nodebuffer" :
+               return utils.transformTo(options.type.toLowerCase(), zip);
+            case "blob" :
+               return utils.arrayBuffer2Blob(utils.transformTo("arraybuffer", zip), options.mimeType);
+            // case "zip is a string"
+            case "base64" :
+               return (options.base64) ? base64.encode(zip) : zip;
+            default : // case "string" :
+               return zip;
+         }
+
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    crc32: function (input, crc) {
+        return crc32(input, crc);
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    utf8encode: function (string) {
+        return utils.transformTo("string", utf8.utf8encode(string));
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    utf8decode: function (input) {
+        return utf8.utf8decode(input);
+    }
+};
+module.exports = out;
+
+},{"./base64":1,"./compressedObject":2,"./compressions":3,"./crc32":4,"./defaults":6,"./nodeBuffer":11,"./signature":14,"./stringWriter":16,"./support":17,"./uint8ArrayWriter":19,"./utf8":20,"./utils":21}],14:[function(_dereq_,module,exports){
+'use strict';
+exports.LOCAL_FILE_HEADER = "PK\x03\x04";
+exports.CENTRAL_FILE_HEADER = "PK\x01\x02";
+exports.CENTRAL_DIRECTORY_END = "PK\x05\x06";
+exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x06\x07";
+exports.ZIP64_CENTRAL_DIRECTORY_END = "PK\x06\x06";
+exports.DATA_DESCRIPTOR = "PK\x07\x08";
+
+},{}],15:[function(_dereq_,module,exports){
+'use strict';
+var DataReader = _dereq_('./dataReader');
+var utils = _dereq_('./utils');
+
+function StringReader(data, optimizedBinaryString) {
+    this.data = data;
+    if (!optimizedBinaryString) {
+        this.data = utils.string2binary(this.data);
+    }
+    this.length = this.data.length;
+    this.index = 0;
+}
+StringReader.prototype = new DataReader();
+/**
+ * @see DataReader.byteAt
+ */
+StringReader.prototype.byteAt = function(i) {
+    return this.data.charCodeAt(i);
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+StringReader.prototype.lastIndexOfSignature = function(sig) {
+    return this.data.lastIndexOf(sig);
+};
+/**
+ * @see DataReader.readData
+ */
+StringReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    // this will work because the constructor applied the "& 0xff" mask.
+    var result = this.data.slice(this.index, this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = StringReader;
+
+},{"./dataReader":5,"./utils":21}],16:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+/**
+ * An object to write any content to a string.
+ * @constructor
+ */
+var StringWriter = function() {
+    this.data = [];
+};
+StringWriter.prototype = {
+    /**
+     * Append any content to the current string.
+     * @param {Object} input the content to add.
+     */
+    append: function(input) {
+        input = utils.transformTo("string", input);
+        this.data.push(input);
+    },
+    /**
+     * Finalize the construction an return the result.
+     * @return {string} the generated string.
+     */
+    finalize: function() {
+        return this.data.join("");
+    }
+};
+
+module.exports = StringWriter;
+
+},{"./utils":21}],17:[function(_dereq_,module,exports){
+(function (Buffer){
+'use strict';
+exports.base64 = true;
+exports.array = true;
+exports.string = true;
+exports.arraybuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
+// contains true if JSZip can read/generate nodejs Buffer, false otherwise.
+// Browserify will provide a Buffer implementation for browsers, which is
+// an augmented Uint8Array (i.e., can be used as either Buffer or U8).
+exports.nodebuffer = typeof Buffer !== "undefined";
+// contains true if JSZip can read/generate Uint8Array, false otherwise.
+exports.uint8array = typeof Uint8Array !== "undefined";
+
+if (typeof ArrayBuffer === "undefined") {
+    exports.blob = false;
+}
+else {
+    var buffer = new ArrayBuffer(0);
+    try {
+        exports.blob = new Blob([buffer], {
+            type: "application/zip"
+        }).size === 0;
+    }
+    catch (e) {
+        try {
+            var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
+            var builder = new Builder();
+            builder.append(buffer);
+            exports.blob = builder.getBlob('application/zip').size === 0;
+        }
+        catch (e) {
+            exports.blob = false;
+        }
+    }
+}
+
+}).call(this,(typeof Buffer !== "undefined" ? Buffer : undefined))
+},{}],18:[function(_dereq_,module,exports){
+'use strict';
+var DataReader = _dereq_('./dataReader');
+
+function Uint8ArrayReader(data) {
+    if (data) {
+        this.data = data;
+        this.length = this.data.length;
+        this.index = 0;
+    }
+}
+Uint8ArrayReader.prototype = new DataReader();
+/**
+ * @see DataReader.byteAt
+ */
+Uint8ArrayReader.prototype.byteAt = function(i) {
+    return this.data[i];
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+Uint8ArrayReader.prototype.lastIndexOfSignature = function(sig) {
+    var sig0 = sig.charCodeAt(0),
+        sig1 = sig.charCodeAt(1),
+        sig2 = sig.charCodeAt(2),
+        sig3 = sig.charCodeAt(3);
+    for (var i = this.length - 4; i >= 0; --i) {
+        if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {
+            return i;
+        }
+    }
+
+    return -1;
+};
+/**
+ * @see DataReader.readData
+ */
+Uint8ArrayReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    if(size === 0) {
+        // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].
+        return new Uint8Array(0);
+    }
+    var result = this.data.subarray(this.index, this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = Uint8ArrayReader;
+
+},{"./dataReader":5}],19:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+/**
+ * An object to write any content to an Uint8Array.
+ * @constructor
+ * @param {number} length The length of the array.
+ */
+var Uint8ArrayWriter = function(length) {
+    this.data = new Uint8Array(length);
+    this.index = 0;
+};
+Uint8ArrayWriter.prototype = {
+    /**
+     * Append any content to the current array.
+     * @param {Object} input the content to add.
+     */
+    append: function(input) {
+        if (input.length !== 0) {
+            // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
+            input = utils.transformTo("uint8array", input);
+            this.data.set(input, this.index);
+            this.index += input.length;
+        }
+    },
+    /**
+     * Finalize the construction an return the result.
+     * @return {Uint8Array} the generated array.
+     */
+    finalize: function() {
+        return this.data;
+    }
+};
+
+module.exports = Uint8ArrayWriter;
+
+},{"./utils":21}],20:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+var support = _dereq_('./support');
+var nodeBuffer = _dereq_('./nodeBuffer');
+
+/**
+ * The following functions come from pako, from pako/lib/utils/strings
+ * released under the MIT license, see pako https://github.com/nodeca/pako/
+ */
+
+// Table with utf8 lengths (calculated by first byte of sequence)
+// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
+// because max possible codepoint is 0x10ffff
+var _utf8len = new Array(256);
+for (var i=0; i<256; i++) {
+  _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
+}
+_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
+
+// convert string to array (typed, when possible)
+var string2buf = function (str) {
+    var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+
+    // count binary size
+    for (m_pos = 0; m_pos < str_len; m_pos++) {
+        c = str.charCodeAt(m_pos);
+        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+            c2 = str.charCodeAt(m_pos+1);
+            if ((c2 & 0xfc00) === 0xdc00) {
+                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+                m_pos++;
+            }
+        }
+        buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
+    }
+
+    // allocate buffer
+    if (support.uint8array) {
+        buf = new Uint8Array(buf_len);
+    } else {
+        buf = new Array(buf_len);
+    }
+
+    // convert
+    for (i=0, m_pos = 0; i < buf_len; m_pos++) {
+        c = str.charCodeAt(m_pos);
+        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+            c2 = str.charCodeAt(m_pos+1);
+            if ((c2 & 0xfc00) === 0xdc00) {
+                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+                m_pos++;
+            }
+        }
+        if (c < 0x80) {
+            /* one byte */
+            buf[i++] = c;
+        } else if (c < 0x800) {
+            /* two bytes */
+            buf[i++] = 0xC0 | (c >>> 6);
+            buf[i++] = 0x80 | (c & 0x3f);
+        } else if (c < 0x10000) {
+            /* three bytes */
+            buf[i++] = 0xE0 | (c >>> 12);
+            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+            buf[i++] = 0x80 | (c & 0x3f);
+        } else {
+            /* four bytes */
+            buf[i++] = 0xf0 | (c >>> 18);
+            buf[i++] = 0x80 | (c >>> 12 & 0x3f);
+            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+            buf[i++] = 0x80 | (c & 0x3f);
+        }
+    }
+
+    return buf;
+};
+
+// Calculate max possible position in utf8 buffer,
+// that will not break sequence. If that's not possible
+// - (very small limits) return max size as is.
+//
+// buf[] - utf8 bytes array
+// max   - length limit (mandatory);
+var utf8border = function(buf, max) {
+    var pos;
+
+    max = max || buf.length;
+    if (max > buf.length) { max = buf.length; }
+
+    // go back from last position, until start of sequence found
+    pos = max-1;
+    while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
+
+    // Fuckup - very small and broken sequence,
+    // return max, because we should return something anyway.
+    if (pos < 0) { return max; }
+
+    // If we came to start of buffer - that means vuffer is too small,
+    // return max too.
+    if (pos === 0) { return max; }
+
+    return (pos + _utf8len[buf[pos]] > max) ? pos : max;
+};
+
+// convert array to string
+var buf2string = function (buf) {
+    var str, i, out, c, c_len;
+    var len = buf.length;
+
+    // Reserve max possible length (2 words per char)
+    // NB: by unknown reasons, Array is significantly faster for
+    //     String.fromCharCode.apply than Uint16Array.
+    var utf16buf = new Array(len*2);
+
+    for (out=0, i=0; i<len;) {
+        c = buf[i++];
+        // quick process ascii
+        if (c < 0x80) { utf16buf[out++] = c; continue; }
+
+        c_len = _utf8len[c];
+        // skip 5 & 6 byte codes
+        if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
+
+        // apply mask on first byte
+        c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+        // join the rest
+        while (c_len > 1 && i < len) {
+            c = (c << 6) | (buf[i++] & 0x3f);
+            c_len--;
+        }
+
+        // terminated by end of string?
+        if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
+
+        if (c < 0x10000) {
+            utf16buf[out++] = c;
+        } else {
+            c -= 0x10000;
+            utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
+            utf16buf[out++] = 0xdc00 | (c & 0x3ff);
+        }
+    }
+
+    // shrinkBuf(utf16buf, out)
+    if (utf16buf.length !== out) {
+        if(utf16buf.subarray) {
+            utf16buf = utf16buf.subarray(0, out);
+        } else {
+            utf16buf.length = out;
+        }
+    }
+
+    // return String.fromCharCode.apply(null, utf16buf);
+    return utils.applyFromCharCode(utf16buf);
+};
+
+
+// That's all for the pako functions.
+
+
+/**
+ * Transform a javascript string into an array (typed if possible) of bytes,
+ * UTF-8 encoded.
+ * @param {String} str the string to encode
+ * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.
+ */
+exports.utf8encode = function utf8encode(str) {
+    if (support.nodebuffer) {
+        return nodeBuffer(str, "utf-8");
+    }
+
+    return string2buf(str);
+};
+
+
+/**
+ * Transform a bytes array (or a representation) representing an UTF-8 encoded
+ * string into a javascript string.
+ * @param {Array|Uint8Array|Buffer} buf the data de decode
+ * @return {String} the decoded string.
+ */
+exports.utf8decode = function utf8decode(buf) {
+    if (support.nodebuffer) {
+        return utils.transformTo("nodebuffer", buf).toString("utf-8");
+    }
+
+    buf = utils.transformTo(support.uint8array ? "uint8array" : "array", buf);
+
+    // return buf2string(buf);
+    // Chrome prefers to work with "small" chunks of data
+    // for the method buf2string.
+    // Firefox and Chrome has their own shortcut, IE doesn't seem to really care.
+    var result = [], k = 0, len = buf.length, chunk = 65536;
+    while (k < len) {
+        var nextBoundary = utf8border(buf, Math.min(k + chunk, len));
+        if (support.uint8array) {
+            result.push(buf2string(buf.subarray(k, nextBoundary)));
+        } else {
+            result.push(buf2string(buf.slice(k, nextBoundary)));
+        }
+        k = nextBoundary;
+    }
+    return result.join("");
+
+};
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(_dereq_,module,exports){
+'use strict';
+var support = _dereq_('./support');
+var compressions = _dereq_('./compressions');
+var nodeBuffer = _dereq_('./nodeBuffer');
+/**
+ * Convert a string to a "binary string" : a string containing only char codes between 0 and 255.
+ * @param {string} str the string to transform.
+ * @return {String} the binary string.
+ */
+exports.string2binary = function(str) {
+    var result = "";
+    for (var i = 0; i < str.length; i++) {
+        result += String.fromCharCode(str.charCodeAt(i) & 0xff);
+    }
+    return result;
+};
+exports.arrayBuffer2Blob = function(buffer, mimeType) {
+    exports.checkSupport("blob");
+	mimeType = mimeType || 'application/zip';
+
+    try {
+        // Blob constructor
+        return new Blob([buffer], {
+            type: mimeType
+        });
+    }
+    catch (e) {
+
+        try {
+            // deprecated, browser only, old way
+            var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
+            var builder = new Builder();
+            builder.append(buffer);
+            return builder.getBlob(mimeType);
+        }
+        catch (e) {
+
+            // well, fuck ?!
+            throw new Error("Bug : can't construct the Blob.");
+        }
+    }
+
+
+};
+/**
+ * The identity function.
+ * @param {Object} input the input.
+ * @return {Object} the same input.
+ */
+function identity(input) {
+    return input;
+}
+
+/**
+ * Fill in an array with a string.
+ * @param {String} str the string to use.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.
+ */
+function stringToArrayLike(str, array) {
+    for (var i = 0; i < str.length; ++i) {
+        array[i] = str.charCodeAt(i) & 0xFF;
+    }
+    return array;
+}
+
+/**
+ * Transform an array-like object to a string.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
+ * @return {String} the result.
+ */
+function arrayLikeToString(array) {
+    // Performances notes :
+    // --------------------
+    // String.fromCharCode.apply(null, array) is the fastest, see
+    // see http://jsperf.com/converting-a-uint8array-to-a-string/2
+    // but the stack is limited (and we can get huge arrays !).
+    //
+    // result += String.fromCharCode(array[i]); generate too many strings !
+    //
+    // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2
+    var chunk = 65536;
+    var result = [],
+        len = array.length,
+        type = exports.getTypeOf(array),
+        k = 0,
+        canUseApply = true;
+      try {
+         switch(type) {
+            case "uint8array":
+               String.fromCharCode.apply(null, new Uint8Array(0));
+               break;
+            case "nodebuffer":
+               String.fromCharCode.apply(null, nodeBuffer(0));
+               break;
+         }
+      } catch(e) {
+         canUseApply = false;
+      }
+
+      // no apply : slow and painful algorithm
+      // default browser on android 4.*
+      if (!canUseApply) {
+         var resultStr = "";
+         for(var i = 0; i < array.length;i++) {
+            resultStr += String.fromCharCode(array[i]);
+         }
+    return resultStr;
+    }
+    while (k < len && chunk > 1) {
+        try {
+            if (type === "array" || type === "nodebuffer") {
+                result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));
+            }
+            else {
+                result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));
+            }
+            k += chunk;
+        }
+        catch (e) {
+            chunk = Math.floor(chunk / 2);
+        }
+    }
+    return result.join("");
+}
+
+exports.applyFromCharCode = arrayLikeToString;
+
+
+/**
+ * Copy the data from an array-like to an other array-like.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.
+ */
+function arrayLikeToArrayLike(arrayFrom, arrayTo) {
+    for (var i = 0; i < arrayFrom.length; i++) {
+        arrayTo[i] = arrayFrom[i];
+    }
+    return arrayTo;
+}
+
+// a matrix containing functions to transform everything into everything.
+var transform = {};
+
+// string to ?
+transform["string"] = {
+    "string": identity,
+    "array": function(input) {
+        return stringToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return transform["string"]["uint8array"](input).buffer;
+    },
+    "uint8array": function(input) {
+        return stringToArrayLike(input, new Uint8Array(input.length));
+    },
+    "nodebuffer": function(input) {
+        return stringToArrayLike(input, nodeBuffer(input.length));
+    }
+};
+
+// array to ?
+transform["array"] = {
+    "string": arrayLikeToString,
+    "array": identity,
+    "arraybuffer": function(input) {
+        return (new Uint8Array(input)).buffer;
+    },
+    "uint8array": function(input) {
+        return new Uint8Array(input);
+    },
+    "nodebuffer": function(input) {
+        return nodeBuffer(input);
+    }
+};
+
+// arraybuffer to ?
+transform["arraybuffer"] = {
+    "string": function(input) {
+        return arrayLikeToString(new Uint8Array(input));
+    },
+    "array": function(input) {
+        return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
+    },
+    "arraybuffer": identity,
+    "uint8array": function(input) {
+        return new Uint8Array(input);
+    },
+    "nodebuffer": function(input) {
+        return nodeBuffer(new Uint8Array(input));
+    }
+};
+
+// uint8array to ?
+transform["uint8array"] = {
+    "string": arrayLikeToString,
+    "array": function(input) {
+        return arrayLikeToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return input.buffer;
+    },
+    "uint8array": identity,
+    "nodebuffer": function(input) {
+        return nodeBuffer(input);
+    }
+};
+
+// nodebuffer to ?
+transform["nodebuffer"] = {
+    "string": arrayLikeToString,
+    "array": function(input) {
+        return arrayLikeToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return transform["nodebuffer"]["uint8array"](input).buffer;
+    },
+    "uint8array": function(input) {
+        return arrayLikeToArrayLike(input, new Uint8Array(input.length));
+    },
+    "nodebuffer": identity
+};
+
+/**
+ * Transform an input into any type.
+ * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.
+ * If no output type is specified, the unmodified input will be returned.
+ * @param {String} outputType the output type.
+ * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.
+ * @throws {Error} an Error if the browser doesn't support the requested output type.
+ */
+exports.transformTo = function(outputType, input) {
+    if (!input) {
+        // undefined, null, etc
+        // an empty string won't harm.
+        input = "";
+    }
+    if (!outputType) {
+        return input;
+    }
+    exports.checkSupport(outputType);
+    var inputType = exports.getTypeOf(input);
+    var result = transform[inputType][outputType](input);
+    return result;
+};
+
+/**
+ * Return the type of the input.
+ * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.
+ * @param {Object} input the input to identify.
+ * @return {String} the (lowercase) type of the input.
+ */
+exports.getTypeOf = function(input) {
+    if (typeof input === "string") {
+        return "string";
+    }
+    if (Object.prototype.toString.call(input) === "[object Array]") {
+        return "array";
+    }
+    if (support.nodebuffer && nodeBuffer.test(input)) {
+        return "nodebuffer";
+    }
+    if (support.uint8array && input instanceof Uint8Array) {
+        return "uint8array";
+    }
+    if (support.arraybuffer && input instanceof ArrayBuffer) {
+        return "arraybuffer";
+    }
+};
+
+/**
+ * Throw an exception if the type is not supported.
+ * @param {String} type the type to check.
+ * @throws {Error} an Error if the browser doesn't support the requested type.
+ */
+exports.checkSupport = function(type) {
+    var supported = support[type.toLowerCase()];
+    if (!supported) {
+        throw new Error(type + " is not supported by this browser");
+    }
+};
+exports.MAX_VALUE_16BITS = 65535;
+exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1
+
+/**
+ * Prettify a string read as binary.
+ * @param {string} str the string to prettify.
+ * @return {string} a pretty string.
+ */
+exports.pretty = function(str) {
+    var res = '',
+        code, i;
+    for (i = 0; i < (str || "").length; i++) {
+        code = str.charCodeAt(i);
+        res += '\\x' + (code < 16 ? "0" : "") + code.toString(16).toUpperCase();
+    }
+    return res;
+};
+
+/**
+ * Find a compression registered in JSZip.
+ * @param {string} compressionMethod the method magic to find.
+ * @return {Object|null} the JSZip compression object, null if none found.
+ */
+exports.findCompression = function(compressionMethod) {
+    for (var method in compressions) {
+        if (!compressions.hasOwnProperty(method)) {
+            continue;
+        }
+        if (compressions[method].magic === compressionMethod) {
+            return compressions[method];
+        }
+    }
+    return null;
+};
+/**
+* Cross-window, cross-Node-context regular expression detection
+* @param  {Object}  object Anything
+* @return {Boolean}        true if the object is a regular expression,
+* false otherwise
+*/
+exports.isRegExp = function (object) {
+    return Object.prototype.toString.call(object) === "[object RegExp]";
+};
+
+
+},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(_dereq_,module,exports){
+'use strict';
+var StringReader = _dereq_('./stringReader');
+var NodeBufferReader = _dereq_('./nodeBufferReader');
+var Uint8ArrayReader = _dereq_('./uint8ArrayReader');
+var utils = _dereq_('./utils');
+var sig = _dereq_('./signature');
+var ZipEntry = _dereq_('./zipEntry');
+var support = _dereq_('./support');
+var jszipProto = _dereq_('./object');
+//  class ZipEntries {{{
+/**
+ * All the entries in the zip file.
+ * @constructor
+ * @param {String|ArrayBuffer|Uint8Array} data the binary stream to load.
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntries(data, loadOptions) {
+    this.files = [];
+    this.loadOptions = loadOptions;
+    if (data) {
+        this.load(data);
+    }
+}
+ZipEntries.prototype = {
+    /**
+     * Check that the reader is on the speficied signature.
+     * @param {string} expectedSignature the expected signature.
+     * @throws {Error} if it is an other signature.
+     */
+    checkSignature: function(expectedSignature) {
+        var signature = this.reader.readString(4);
+        if (signature !== expectedSignature) {
+            throw new Error("Corrupted zip or bug : unexpected signature " + "(" + utils.pretty(signature) + ", expected " + utils.pretty(expectedSignature) + ")");
+        }
+    },
+    /**
+     * Read the end of the central directory.
+     */
+    readBlockEndOfCentral: function() {
+        this.diskNumber = this.reader.readInt(2);
+        this.diskWithCentralDirStart = this.reader.readInt(2);
+        this.centralDirRecordsOnThisDisk = this.reader.readInt(2);
+        this.centralDirRecords = this.reader.readInt(2);
+        this.centralDirSize = this.reader.readInt(4);
+        this.centralDirOffset = this.reader.readInt(4);
+
+        this.zipCommentLength = this.reader.readInt(2);
+        // warning : the encoding depends of the system locale
+        // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.
+        // On a windows machine, this field is encoded with the localized windows code page.
+        this.zipComment = this.reader.readString(this.zipCommentLength);
+        // To get consistent behavior with the generation part, we will assume that
+        // this is utf8 encoded.
+        this.zipComment = jszipProto.utf8decode(this.zipComment);
+    },
+    /**
+     * Read the end of the Zip 64 central directory.
+     * Not merged with the method readEndOfCentral :
+     * The end of central can coexist with its Zip64 brother,
+     * I don't want to read the wrong number of bytes !
+     */
+    readBlockZip64EndOfCentral: function() {
+        this.zip64EndOfCentralSize = this.reader.readInt(8);
+        this.versionMadeBy = this.reader.readString(2);
+        this.versionNeeded = this.reader.readInt(2);
+        this.diskNumber = this.reader.readInt(4);
+        this.diskWithCentralDirStart = this.reader.readInt(4);
+        this.centralDirRecordsOnThisDisk = this.reader.readInt(8);
+        this.centralDirRecords = this.reader.readInt(8);
+        this.centralDirSize = this.reader.readInt(8);
+        this.centralDirOffset = this.reader.readInt(8);
+
+        this.zip64ExtensibleData = {};
+        var extraDataSize = this.zip64EndOfCentralSize - 44,
+            index = 0,
+            extraFieldId,
+            extraFieldLength,
+            extraFieldValue;
+        while (index < extraDataSize) {
+            extraFieldId = this.reader.readInt(2);
+            extraFieldLength = this.reader.readInt(4);
+            extraFieldValue = this.reader.readString(extraFieldLength);
+            this.zip64ExtensibleData[extraFieldId] = {
+                id: extraFieldId,
+                length: extraFieldLength,
+                value: extraFieldValue
+            };
+        }
+    },
+    /**
+     * Read the end of the Zip 64 central directory locator.
+     */
+    readBlockZip64EndOfCentralLocator: function() {
+        this.diskWithZip64CentralDirStart = this.reader.readInt(4);
+        this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);
+        this.disksCount = this.reader.readInt(4);
+        if (this.disksCount > 1) {
+            throw new Error("Multi-volumes zip are not supported");
+        }
+    },
+    /**
+     * Read the local files, based on the offset read in the central part.
+     */
+    readLocalFiles: function() {
+        var i, file;
+        for (i = 0; i < this.files.length; i++) {
+            file = this.files[i];
+            this.reader.setIndex(file.localHeaderOffset);
+            this.checkSignature(sig.LOCAL_FILE_HEADER);
+            file.readLocalPart(this.reader);
+            file.handleUTF8();
+            file.processAttributes();
+        }
+    },
+    /**
+     * Read the central directory.
+     */
+    readCentralDir: function() {
+        var file;
+
+        this.reader.setIndex(this.centralDirOffset);
+        while (this.reader.readString(4) === sig.CENTRAL_FILE_HEADER) {
+            file = new ZipEntry({
+                zip64: this.zip64
+            }, this.loadOptions);
+            file.readCentralPart(this.reader);
+            this.files.push(file);
+        }
+    },
+    /**
+     * Read the end of central directory.
+     */
+    readEndOfCentral: function() {
+        var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);
+        if (offset === -1) {
+            // Check if the content is a truncated zip or complete garbage.
+            // A "LOCAL_FILE_HEADER" is not required at the beginning (auto
+            // extractible zip for example) but it can give a good hint.
+            // If an ajax request was used without responseType, we will also
+            // get unreadable data.
+            var isGarbage = true;
+            try {
+                this.reader.setIndex(0);
+                this.checkSignature(sig.LOCAL_FILE_HEADER);
+                isGarbage = false;
+            } catch (e) {}
+
+            if (isGarbage) {
+                throw new Error("Can't find end of central directory : is this a zip file ? " +
+                                "If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html");
+            } else {
+                throw new Error("Corrupted zip : can't find end of central directory");
+            }
+        }
+        this.reader.setIndex(offset);
+        this.checkSignature(sig.CENTRAL_DIRECTORY_END);
+        this.readBlockEndOfCentral();
+
+
+        /* extract from the zip spec :
+            4)  If one of the fields in the end of central directory
+                record is too small to hold required data, the field
+                should be set to -1 (0xFFFF or 0xFFFFFFFF) and the
+                ZIP64 format record should be created.
+            5)  The end of central directory record and the
+                Zip64 end of central directory locator record must
+                reside on the same disk when splitting or spanning
+                an archive.
+         */
+        if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {
+            this.zip64 = true;
+
+            /*
+            Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from
+            the zip file can fit into a 32bits integer. This cannot be solved : Javascript represents
+            all numbers as 64-bit double precision IEEE 754 floating point numbers.
+            So, we have 53bits for integers and bitwise operations treat everything as 32bits.
+            see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators
+            and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5
+            */
+
+            // should look for a zip64 EOCD locator
+            offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+            if (offset === -1) {
+                throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");
+            }
+            this.reader.setIndex(offset);
+            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+            this.readBlockZip64EndOfCentralLocator();
+
+            // now the zip64 EOCD record
+            this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);
+            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
+            this.readBlockZip64EndOfCentral();
+        }
+    },
+    prepareReader: function(data) {
+        var type = utils.getTypeOf(data);
+        if (type === "string" && !support.uint8array) {
+            this.reader = new StringReader(data, this.loadOptions.optimizedBinaryString);
+        }
+        else if (type === "nodebuffer") {
+            this.reader = new NodeBufferReader(data);
+        }
+        else {
+            this.reader = new Uint8ArrayReader(utils.transformTo("uint8array", data));
+        }
+    },
+    /**
+     * Read a zip file and create ZipEntries.
+     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.
+     */
+    load: function(data) {
+        this.prepareReader(data);
+        this.readEndOfCentral();
+        this.readCentralDir();
+        this.readLocalFiles();
+    }
+};
+// }}} end of ZipEntries
+module.exports = ZipEntries;
+
+},{"./nodeBufferReader":12,"./object":13,"./signature":14,"./stringReader":15,"./support":17,"./uint8ArrayReader":18,"./utils":21,"./zipEntry":23}],23:[function(_dereq_,module,exports){
+'use strict';
+var StringReader = _dereq_('./stringReader');
+var utils = _dereq_('./utils');
+var CompressedObject = _dereq_('./compressedObject');
+var jszipProto = _dereq_('./object');
+
+var MADE_BY_DOS = 0x00;
+var MADE_BY_UNIX = 0x03;
+
+// class ZipEntry {{{
+/**
+ * An entry in the zip file.
+ * @constructor
+ * @param {Object} options Options of the current file.
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntry(options, loadOptions) {
+    this.options = options;
+    this.loadOptions = loadOptions;
+}
+ZipEntry.prototype = {
+    /**
+     * say if the file is encrypted.
+     * @return {boolean} true if the file is encrypted, false otherwise.
+     */
+    isEncrypted: function() {
+        // bit 1 is set
+        return (this.bitFlag & 0x0001) === 0x0001;
+    },
+    /**
+     * say if the file has utf-8 filename/comment.
+     * @return {boolean} true if the filename/comment is in utf-8, false otherwise.
+     */
+    useUTF8: function() {
+        // bit 11 is set
+        return (this.bitFlag & 0x0800) === 0x0800;
+    },
+    /**
+     * Prepare the function used to generate the compressed content from this ZipFile.
+     * @param {DataReader} reader the reader to use.
+     * @param {number} from the offset from where we should read the data.
+     * @param {number} length the length of the data to read.
+     * @return {Function} the callback to get the compressed content (the type depends of the DataReader class).
+     */
+    prepareCompressedContent: function(reader, from, length) {
+        return function() {
+            var previousIndex = reader.index;
+            reader.setIndex(from);
+            var compressedFileData = reader.readData(length);
+            reader.setIndex(previousIndex);
+
+            return compressedFileData;
+        };
+    },
+    /**
+     * Prepare the function used to generate the uncompressed content from this ZipFile.
+     * @param {DataReader} reader the reader to use.
+     * @param {number} from the offset from where we should read the data.
+     * @param {number} length the length of the data to read.
+     * @param {JSZip.compression} compression the compression used on this file.
+     * @param {number} uncompressedSize the uncompressed size to expect.
+     * @return {Function} the callback to get the uncompressed content (the type depends of the DataReader class).
+     */
+    prepareContent: function(reader, from, length, compression, uncompressedSize) {
+        return function() {
+
+            var compressedFileData = utils.transformTo(compression.uncompressInputType, this.getCompressedContent());
+            var uncompressedFileData = compression.uncompress(compressedFileData);
+
+            if (uncompressedFileData.length !== uncompressedSize) {
+                throw new Error("Bug : uncompressed data size mismatch");
+            }
+
+            return uncompressedFileData;
+        };
+    },
+    /**
+     * Read the local part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readLocalPart: function(reader) {
+        var compression, localExtraFieldsLength;
+
+        // we already know everything from the central dir !
+        // If the central dir data are false, we are doomed.
+        // On the bright side, the local part is scary  : zip64, data descriptors, both, etc.
+        // The less data we get here, the more reliable this should be.
+        // Let's skip the whole header and dash to the data !
+        reader.skip(22);
+        // in some zip created on windows, the filename stored in the central dir contains \ instead of /.
+        // Strangely, the filename here is OK.
+        // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes
+        // or APPNOTE#4.4.17.1, "All slashes MUST be forward slashes '/'") but there are a lot of bad zip generators...
+        // Search "unzip mismatching "local" filename continuing with "central" filename version" on
+        // the internet.
+        //
+        // I think I see the logic here : the central directory is used to display
+        // content and the local directory is used to extract the files. Mixing / and \
+        // may be used to display \ to windows users and use / when extracting the files.
+        // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394
+        this.fileNameLength = reader.readInt(2);
+        localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir
+        this.fileName = reader.readString(this.fileNameLength);
+        reader.skip(localExtraFieldsLength);
+
+        if (this.compressedSize == -1 || this.uncompressedSize == -1) {
+            throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory " + "(compressedSize == -1 || uncompressedSize == -1)");
+        }
+
+        compression = utils.findCompression(this.compressionMethod);
+        if (compression === null) { // no compression found
+            throw new Error("Corrupted zip : compression " + utils.pretty(this.compressionMethod) + " unknown (inner file : " + this.fileName + ")");
+        }
+        this.decompressed = new CompressedObject();
+        this.decompressed.compressedSize = this.compressedSize;
+        this.decompressed.uncompressedSize = this.uncompressedSize;
+        this.decompressed.crc32 = this.crc32;
+        this.decompressed.compressionMethod = this.compressionMethod;
+        this.decompressed.getCompressedContent = this.prepareCompressedContent(reader, reader.index, this.compressedSize, compression);
+        this.decompressed.getContent = this.prepareContent(reader, reader.index, this.compressedSize, compression, this.uncompressedSize);
+
+        // we need to compute the crc32...
+        if (this.loadOptions.checkCRC32) {
+            this.decompressed = utils.transformTo("string", this.decompressed.getContent());
+            if (jszipProto.crc32(this.decompressed) !== this.crc32) {
+                throw new Error("Corrupted zip : CRC32 mismatch");
+            }
+        }
+    },
+
+    /**
+     * Read the central part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readCentralPart: function(reader) {
+        this.versionMadeBy = reader.readInt(2);
+        this.versionNeeded = reader.readInt(2);
+        this.bitFlag = reader.readInt(2);
+        this.compressionMethod = reader.readString(2);
+        this.date = reader.readDate();
+        this.crc32 = reader.readInt(4);
+        this.compressedSize = reader.readInt(4);
+        this.uncompressedSize = reader.readInt(4);
+        this.fileNameLength = reader.readInt(2);
+        this.extraFieldsLength = reader.readInt(2);
+        this.fileCommentLength = reader.readInt(2);
+        this.diskNumberStart = reader.readInt(2);
+        this.internalFileAttributes = reader.readInt(2);
+        this.externalFileAttributes = reader.readInt(4);
+        this.localHeaderOffset = reader.readInt(4);
+
+        if (this.isEncrypted()) {
+            throw new Error("Encrypted zip are not supported");
+        }
+
+        this.fileName = reader.readString(this.fileNameLength);
+        this.readExtraFields(reader);
+        this.parseZIP64ExtraField(reader);
+        this.fileComment = reader.readString(this.fileCommentLength);
+    },
+
+    /**
+     * Parse the external file attributes and get the unix/dos permissions.
+     */
+    processAttributes: function () {
+        this.unixPermissions = null;
+        this.dosPermissions = null;
+        var madeBy = this.versionMadeBy >> 8;
+
+        // Check if we have the DOS directory flag set.
+        // We look for it in the DOS and UNIX permissions
+        // but some unknown platform could set it as a compatibility flag.
+        this.dir = this.externalFileAttributes & 0x0010 ? true : false;
+
+        if(madeBy === MADE_BY_DOS) {
+            // first 6 bits (0 to 5)
+            this.dosPermissions = this.externalFileAttributes & 0x3F;
+        }
+
+        if(madeBy === MADE_BY_UNIX) {
+            this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;
+            // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);
+        }
+
+        // fail safe : if the name ends with a / it probably means a folder
+        if (!this.dir && this.fileName.slice(-1) === '/') {
+            this.dir = true;
+        }
+    },
+
+    /**
+     * Parse the ZIP64 extra field and merge the info in the current ZipEntry.
+     * @param {DataReader} reader the reader to use.
+     */
+    parseZIP64ExtraField: function(reader) {
+
+        if (!this.extraFields[0x0001]) {
+            return;
+        }
+
+        // should be something, preparing the extra reader
+        var extraReader = new StringReader(this.extraFields[0x0001].value);
+
+        // I really hope that these 64bits integer can fit in 32 bits integer, because js
+        // won't let us have more.
+        if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {
+            this.uncompressedSize = extraReader.readInt(8);
+        }
+        if (this.compressedSize === utils.MAX_VALUE_32BITS) {
+            this.compressedSize = extraReader.readInt(8);
+        }
+        if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {
+            this.localHeaderOffset = extraReader.readInt(8);
+        }
+        if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {
+            this.diskNumberStart = extraReader.readInt(4);
+        }
+    },
+    /**
+     * Read the central part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readExtraFields: function(reader) {
+        var start = reader.index,
+            extraFieldId,
+            extraFieldLength,
+            extraFieldValue;
+
+        this.extraFields = this.extraFields || {};
+
+        while (reader.index < start + this.extraFieldsLength) {
+            extraFieldId = reader.readInt(2);
+            extraFieldLength = reader.readInt(2);
+            extraFieldValue = reader.readString(extraFieldLength);
+
+            this.extraFields[extraFieldId] = {
+                id: extraFieldId,
+                length: extraFieldLength,
+                value: extraFieldValue
+            };
+        }
+    },
+    /**
+     * Apply an UTF8 transformation if needed.
+     */
+    handleUTF8: function() {
+        if (this.useUTF8()) {
+            this.fileName = jszipProto.utf8decode(this.fileName);
+            this.fileComment = jszipProto.utf8decode(this.fileComment);
+        } else {
+            var upath = this.findExtraFieldUnicodePath();
+            if (upath !== null) {
+                this.fileName = upath;
+            }
+            var ucomment = this.findExtraFieldUnicodeComment();
+            if (ucomment !== null) {
+                this.fileComment = ucomment;
+            }
+        }
+    },
+
+    /**
+     * Find the unicode path declared in the extra field, if any.
+     * @return {String} the unicode path, null otherwise.
+     */
+    findExtraFieldUnicodePath: function() {
+        var upathField = this.extraFields[0x7075];
+        if (upathField) {
+            var extraReader = new StringReader(upathField.value);
+
+            // wrong version
+            if (extraReader.readInt(1) !== 1) {
+                return null;
+            }
+
+            // the crc of the filename changed, this field is out of date.
+            if (jszipProto.crc32(this.fileName) !== extraReader.readInt(4)) {
+                return null;
+            }
+
+            return jszipProto.utf8decode(extraReader.readString(upathField.length - 5));
+        }
+        return null;
+    },
+
+    /**
+     * Find the unicode comment declared in the extra field, if any.
+     * @return {String} the unicode comment, null otherwise.
+     */
+    findExtraFieldUnicodeComment: function() {
+        var ucommentField = this.extraFields[0x6375];
+        if (ucommentField) {
+            var extraReader = new StringReader(ucommentField.value);
+
+            // wrong version
+            if (extraReader.readInt(1) !== 1) {
+                return null;
+            }
+
+            // the crc of the comment changed, this field is out of date.
+            if (jszipProto.crc32(this.fileComment) !== extraReader.readInt(4)) {
+                return null;
+            }
+
+            return jszipProto.utf8decode(extraReader.readString(ucommentField.length - 5));
+        }
+        return null;
+    }
+};
+module.exports = ZipEntry;
+
+},{"./compressedObject":2,"./object":13,"./stringReader":15,"./utils":21}],24:[function(_dereq_,module,exports){
+// Top level file is just a mixin of submodules & constants
+'use strict';
+
+var assign    = _dereq_('./lib/utils/common').assign;
+
+var deflate   = _dereq_('./lib/deflate');
+var inflate   = _dereq_('./lib/inflate');
+var constants = _dereq_('./lib/zlib/constants');
+
+var pako = {};
+
+assign(pako, deflate, inflate, constants);
+
+module.exports = pako;
+},{"./lib/deflate":25,"./lib/inflate":26,"./lib/utils/common":27,"./lib/zlib/constants":30}],25:[function(_dereq_,module,exports){
+'use strict';
+
+
+var zlib_deflate = _dereq_('./zlib/deflate.js');
+var utils = _dereq_('./utils/common');
+var strings = _dereq_('./utils/strings');
+var msg = _dereq_('./zlib/messages');
+var zstream = _dereq_('./zlib/zstream');
+
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+var Z_NO_FLUSH      = 0;
+var Z_FINISH        = 4;
+
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+
+var Z_DEFAULT_COMPRESSION = -1;
+
+var Z_DEFAULT_STRATEGY    = 0;
+
+var Z_DEFLATED  = 8;
+
+/* ===========================================================================*/
+
+
+/**
+ * class Deflate
+ *
+ * Generic JS-style wrapper for zlib calls. If you don't need
+ * streaming behaviour - use more simple functions: [[deflate]],
+ * [[deflateRaw]] and [[gzip]].
+ **/
+
+/* internal
+ * Deflate.chunks -> Array
+ *
+ * Chunks of output data, if [[Deflate#onData]] not overriden.
+ **/
+
+/**
+ * Deflate.result -> Uint8Array|Array
+ *
+ * Compressed result, generated by default [[Deflate#onData]]
+ * and [[Deflate#onEnd]] handlers. Filled after you push last chunk
+ * (call [[Deflate#push]] with `Z_FINISH` / `true` param).
+ **/
+
+/**
+ * Deflate.err -> Number
+ *
+ * Error code after deflate finished. 0 (Z_OK) on success.
+ * You will not need it in real life, because deflate errors
+ * are possible only on wrong options or bad `onData` / `onEnd`
+ * custom handlers.
+ **/
+
+/**
+ * Deflate.msg -> String
+ *
+ * Error message, if [[Deflate.err]] != 0
+ **/
+
+
+/**
+ * new Deflate(options)
+ * - options (Object): zlib deflate options.
+ *
+ * Creates new deflator instance with specified params. Throws exception
+ * on bad params. Supported options:
+ *
+ * - `level`
+ * - `windowBits`
+ * - `memLevel`
+ * - `strategy`
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Additional options, for internal needs:
+ *
+ * - `chunkSize` - size of generated data chunks (16K by default)
+ * - `raw` (Boolean) - do raw deflate
+ * - `gzip` (Boolean) - create gzip wrapper
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
+ *    (each char code [0..255])
+ * - `header` (Object) - custom header for gzip
+ *   - `text` (Boolean) - true if compressed data believed to be text
+ *   - `time` (Number) - modification time, unix timestamp
+ *   - `os` (Number) - operation system code
+ *   - `extra` (Array) - array of bytes with extra data (max 65536)
+ *   - `name` (String) - file name (binary string)
+ *   - `comment` (String) - comment (binary string)
+ *   - `hcrc` (Boolean) - true if header crc should be added
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+ *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+ *
+ * var deflate = new pako.Deflate({ level: 3});
+ *
+ * deflate.push(chunk1, false);
+ * deflate.push(chunk2, true);  // true -> last chunk
+ *
+ * if (deflate.err) { throw new Error(deflate.err); }
+ *
+ * console.log(deflate.result);
+ * ```
+ **/
+var Deflate = function(options) {
+
+  this.options = utils.assign({
+    level: Z_DEFAULT_COMPRESSION,
+    method: Z_DEFLATED,
+    chunkSize: 16384,
+    windowBits: 15,
+    memLevel: 8,
+    strategy: Z_DEFAULT_STRATEGY,
+    to: ''
+  }, options || {});
+
+  var opt = this.options;
+
+  if (opt.raw && (opt.windowBits > 0)) {
+    opt.windowBits = -opt.windowBits;
+  }
+
+  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {
+    opt.windowBits += 16;
+  }
+
+  this.err    = 0;      // error code, if happens (0 = Z_OK)
+  this.msg    = '';     // error message
+  this.ended  = false;  // used to avoid multiple onEnd() calls
+  this.chunks = [];     // chunks of compressed data
+
+  this.strm = new zstream();
+  this.strm.avail_out = 0;
+
+  var status = zlib_deflate.deflateInit2(
+    this.strm,
+    opt.level,
+    opt.method,
+    opt.windowBits,
+    opt.memLevel,
+    opt.strategy
+  );
+
+  if (status !== Z_OK) {
+    throw new Error(msg[status]);
+  }
+
+  if (opt.header) {
+    zlib_deflate.deflateSetHeader(this.strm, opt.header);
+  }
+};
+
+/**
+ * Deflate#push(data[, mode]) -> Boolean
+ * - data (Uint8Array|Array|String): input data. Strings will be converted to
+ *   utf8 byte sequence.
+ * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
+ *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
+ *
+ * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with
+ * new compressed chunks. Returns `true` on success. The last data block must have
+ * mode Z_FINISH (or `true`). That flush internal pending buffers and call
+ * [[Deflate#onEnd]].
+ *
+ * On fail call [[Deflate#onEnd]] with error code and return false.
+ *
+ * We strongly recommend to use `Uint8Array` on input for best speed (output
+ * array format is detected automatically). Also, don't skip last param and always
+ * use the same type in your code (boolean or number). That will improve JS speed.
+ *
+ * For regular `Array`-s make sure all elements are [0..255].
+ *
+ * ##### Example
+ *
+ * ```javascript
+ * push(chunk, false); // push one of data chunks
+ * ...
+ * push(chunk, true);  // push last chunk
+ * ```
+ **/
+Deflate.prototype.push = function(data, mode) {
+  var strm = this.strm;
+  var chunkSize = this.options.chunkSize;
+  var status, _mode;
+
+  if (this.ended) { return false; }
+
+  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);
+
+  // Convert data if needed
+  if (typeof data === 'string') {
+    // If we need to compress text, change encoding to utf8.
+    strm.input = strings.string2buf(data);
+  } else {
+    strm.input = data;
+  }
+
+  strm.next_in = 0;
+  strm.avail_in = strm.input.length;
+
+  do {
+    if (strm.avail_out === 0) {
+      strm.output = new utils.Buf8(chunkSize);
+      strm.next_out = 0;
+      strm.avail_out = chunkSize;
+    }
+    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */
+
+    if (status !== Z_STREAM_END && status !== Z_OK) {
+      this.onEnd(status);
+      this.ended = true;
+      return false;
+    }
+    if (strm.avail_out === 0 || (strm.avail_in === 0 && _mode === Z_FINISH)) {
+      if (this.options.to === 'string') {
+        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));
+      } else {
+        this.onData(utils.shrinkBuf(strm.output, strm.next_out));
+      }
+    }
+  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);
+
+  // Finalize on the last chunk.
+  if (_mode === Z_FINISH) {
+    status = zlib_deflate.deflateEnd(this.strm);
+    this.onEnd(status);
+    this.ended = true;
+    return status === Z_OK;
+  }
+
+  return true;
+};
+
+
+/**
+ * Deflate#onData(chunk) -> Void
+ * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
+ *   on js engine support. When string output requested, each chunk
+ *   will be string.
+ *
+ * By default, stores data blocks in `chunks[]` property and glue
+ * those in `onEnd`. Override this handler, if you need another behaviour.
+ **/
+Deflate.prototype.onData = function(chunk) {
+  this.chunks.push(chunk);
+};
+
+
+/**
+ * Deflate#onEnd(status) -> Void
+ * - status (Number): deflate status. 0 (Z_OK) on success,
+ *   other if not.
+ *
+ * Called once after you tell deflate that input stream complete
+ * or error happenned. By default - join collected chunks,
+ * free memory and fill `results` / `err` properties.
+ **/
+Deflate.prototype.onEnd = function(status) {
+  // On success - join
+  if (status === Z_OK) {
+    if (this.options.to === 'string') {
+      this.result = this.chunks.join('');
+    } else {
+      this.result = utils.flattenChunks(this.chunks);
+    }
+  }
+  this.chunks = [];
+  this.err = status;
+  this.msg = this.strm.msg;
+};
+
+
+/**
+ * deflate(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * Compress `data` with deflate alrorythm and `options`.
+ *
+ * Supported options are:
+ *
+ * - level
+ * - windowBits
+ * - memLevel
+ * - strategy
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Sugar (options):
+ *
+ * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
+ *   negative windowBits implicitly.
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
+ *    (each char code [0..255])
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);
+ *
+ * console.log(pako.deflate(data));
+ * ```
+ **/
+function deflate(input, options) {
+  var deflator = new Deflate(options);
+
+  deflator.push(input, true);
+
+  // That will never happens, if you don't cheat with options :)
+  if (deflator.err) { throw deflator.msg; }
+
+  return deflator.result;
+}
+
+
+/**
+ * deflateRaw(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * The same as [[deflate]], but creates raw data, without wrapper
+ * (header and adler32 crc).
+ **/
+function deflateRaw(input, options) {
+  options = options || {};
+  options.raw = true;
+  return deflate(input, options);
+}
+
+
+/**
+ * gzip(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * The same as [[deflate]], but create gzip wrapper instead of
+ * deflate one.
+ **/
+function gzip(input, options) {
+  options = options || {};
+  options.gzip = true;
+  return deflate(input, options);
+}
+
+
+exports.Deflate = Deflate;
+exports.deflate = deflate;
+exports.deflateRaw = deflateRaw;
+exports.gzip = gzip;
+},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(_dereq_,module,exports){
+'use strict';
+
+
+var zlib_inflate = _dereq_('./zlib/inflate.js');
+var utils = _dereq_('./utils/common');
+var strings = _dereq_('./utils/strings');
+var c = _dereq_('./zlib/constants');
+var msg = _dereq_('./zlib/messages');
+var zstream = _dereq_('./zlib/zstream');
+var gzheader = _dereq_('./zlib/gzheader');
+
+
+/**
+ * class Inflate
+ *
+ * Generic JS-style wrapper for zlib calls. If you don't need
+ * streaming behaviour - use more simple functions: [[inflate]]
+ * and [[inflateRaw]].
+ **/
+
+/* internal
+ * inflate.chunks -> Array
+ *
+ * Chunks of output data, if [[Inflate#onData]] not overriden.
+ **/
+
+/**
+ * Inflate.result -> Uint8Array|Array|String
+ *
+ * Uncompressed result, generated by default [[Inflate#onData]]
+ * and [[Inflate#onEnd]] handlers. Filled after you push last chunk
+ * (call [[Inflate#push]] with `Z_FINISH` / `true` param).
+ **/
+
+/**
+ * Inflate.err -> Number
+ *
+ * Error code after inflate finished. 0 (Z_OK) on success.
+ * Should be checked if broken data possible.
+ **/
+
+/**
+ * Inflate.msg -> String
+ *
+ * Error message, if [[Inflate.err]] != 0
+ **/
+
+
+/**
+ * new Inflate(options)
+ * - options (Object): zlib inflate options.
+ *
+ * Creates new inflator instance with specified params. Throws exception
+ * on bad params. Supported options:
+ *
+ * - `windowBits`
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Additional options, for internal needs:
+ *
+ * - `chunkSize` - size of generated data chunks (16K by default)
+ * - `raw` (Boolean) - do raw inflate
+ * - `to` (String) - if equal to 'string', then result will be converted
+ *   from utf8 to utf16 (javascript) string. When string output requested,
+ *   chunk length can differ from `chunkSize`, depending on content.
+ *
+ * By default, when no options set, autodetect deflate/gzip data format via
+ * wrapper header.
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+ *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+ *
+ * var inflate = new pako.Inflate({ level: 3});
+ *
+ * inflate.push(chunk1, false);
+ * inflate.push(chunk2, true);  // true -> last chunk
+ *
+ * if (inflate.err) { throw new Error(inflate.err); }
+ *
+ * console.log(inflate.result);
+ * ```
+ **/
+var Inflate = function(options) {
+
+  this.options = utils.assign({
+    chunkSize: 16384,
+    windowBits: 0,
+    to: ''
+  }, options || {});
+
+  var opt = this.options;
+
+  // Force window size for `raw` data, if not set directly,
+  // because we have no header for autodetect.
+  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {
+    opt.windowBits = -opt.windowBits;
+    if (opt.windowBits === 0) { opt.windowBits = -15; }
+  }
+
+  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate
+  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&
+      !(options && options.windowBits)) {
+    opt.windowBits += 32;
+  }
+
+  // Gzip header has no info about windows size, we can do autodetect only
+  // for deflate. So, if window size not set, force it to max when gzip possible
+  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {
+    // bit 3 (16) -> gzipped data
+    // bit 4 (32) -> autodetect gzip/deflate
+    if ((opt.windowBits & 15) === 0) {
+      opt.windowBits |= 15;
+    }
+  }
+
+  this.err    = 0;      // error code, if happens (0 = Z_OK)
+  this.msg    = '';     // error message
+  this.ended  = false;  // used to avoid multiple onEnd() calls
+  this.chunks = [];     // chunks of compressed data
+
+  this.strm   = new zstream();
+  this.strm.avail_out = 0;
+
+  var status  = zlib_inflate.inflateInit2(
+    this.strm,
+    opt.windowBits
+  );
+
+  if (status !== c.Z_OK) {
+    throw new Error(msg[status]);
+  }
+
+  this.header = new gzheader();
+
+  zlib_inflate.inflateGetHeader(this.strm, this.header);
+};
+
+/**
+ * Inflate#push(data[, mode]) -> Boolean
+ * - data (Uint8Array|Array|String): input data
+ * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
+ *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
+ *
+ * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with
+ * new output chunks. Returns `true` on success. The last data block must have
+ * mode Z_FINISH (or `true`). That flush internal pending buffers and call
+ * [[Inflate#onEnd]].
+ *
+ * On fail call [[Inflate#onEnd]] with error code and return false.
+ *
+ * We strongly recommend to use `Uint8Array` on input for best speed (output
+ * format is detected automatically). Also, don't skip last param and always
+ * use the same type in your code (boolean or number). That will improve JS speed.
+ *
+ * For regular `Array`-s make sure all elements are [0..255].
+ *
+ * ##### Example
+ *
+ * ```javascript
+ * push(chunk, false); // push one of data chunks
+ * ...
+ * push(chunk, true);  // push last chunk
+ * ```
+ **/
+Inflate.prototype.push = function(data, mode) {
+  var strm = this.strm;
+  var chunkSize = this.options.chunkSize;
+  var status, _mode;
+  var next_out_utf8, tail, utf8str;
+
+  if (this.ended) { return false; }
+  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);
+
+  // Convert data if needed
+  if (typeof data === 'string') {
+    // Only binary strings can be decompressed on practice
+    strm.input = strings.binstring2buf(data);
+  } else {
+    strm.input = data;
+  }
+
+  strm.next_in = 0;
+  strm.avail_in = strm.input.length;
+
+  do {
+    if (strm.avail_out === 0) {
+      strm.output = new utils.Buf8(chunkSize);
+      strm.next_out = 0;
+      strm.avail_out = chunkSize;
+    }
+
+    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */
+
+    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {
+      this.onEnd(status);
+      this.ended = true;
+      return false;
+    }
+
+    if (strm.next_out) {
+      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && _mode === c.Z_FINISH)) {
+
+        if (this.options.to === 'string') {
+
+          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
+
+          tail = strm.next_out - next_out_utf8;
+          utf8str = strings.buf2string(strm.output, next_out_utf8);
+
+          // move tail
+          strm.next_out = tail;
+          strm.avail_out = chunkSize - tail;
+          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }
+
+          this.onData(utf8str);
+
+        } else {
+          this.onData(utils.shrinkBuf(strm.output, strm.next_out));
+        }
+      }
+    }
+  } while ((strm.avail_in > 0) && status !== c.Z_STREAM_END);
+
+  if (status === c.Z_STREAM_END) {
+    _mode = c.Z_FINISH;
+  }
+  // Finalize on the last chunk.
+  if (_mode === c.Z_FINISH) {
+    status = zlib_inflate.inflateEnd(this.strm);
+    this.onEnd(status);
+    this.ended = true;
+    return status === c.Z_OK;
+  }
+
+  return true;
+};
+
+
+/**
+ * Inflate#onData(chunk) -> Void
+ * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
+ *   on js engine support. When string output requested, each chunk
+ *   will be string.
+ *
+ * By default, stores data blocks in `chunks[]` property and glue
+ * those in `onEnd`. Override this handler, if you need another behaviour.
+ **/
+Inflate.prototype.onData = function(chunk) {
+  this.chunks.push(chunk);
+};
+
+
+/**
+ * Inflate#onEnd(status) -> Void
+ * - status (Number): inflate status. 0 (Z_OK) on success,
+ *   other if not.
+ *
+ * Called once after you tell inflate that input stream complete
+ * or error happenned. By default - join collected chunks,
+ * free memory and fill `results` / `err` properties.
+ **/
+Inflate.prototype.onEnd = function(status) {
+  // On success - join
+  if (status === c.Z_OK) {
+    if (this.options.to === 'string') {
+      // Glue & convert here, until we teach pako to send
+      // utf8 alligned strings to onData
+      this.result = this.chunks.join('');
+    } else {
+      this.result = utils.flattenChunks(this.chunks);
+    }
+  }
+  this.chunks = [];
+  this.err = status;
+  this.msg = this.strm.msg;
+};
+
+
+/**
+ * inflate(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * Decompress `data` with inflate/ungzip and `options`. Autodetect
+ * format via wrapper header by default. That's why we don't provide
+ * separate `ungzip` method.
+ *
+ * Supported options are:
+ *
+ * - windowBits
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information.
+ *
+ * Sugar (options):
+ *
+ * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
+ *   negative windowBits implicitly.
+ * - `to` (String) - if equal to 'string', then result will be converted
+ *   from utf8 to utf16 (javascript) string. When string output requested,
+ *   chunk length can differ from `chunkSize`, depending on content.
+ *
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])
+ *   , output;
+ *
+ * try {
+ *   output = pako.inflate(input);
+ * } catch (err)
+ *   console.log(err);
+ * }
+ * ```
+ **/
+function inflate(input, options) {
+  var inflator = new Inflate(options);
+
+  inflator.push(input, true);
+
+  // That will never happens, if you don't cheat with options :)
+  if (inflator.err) { throw inflator.msg; }
+
+  return inflator.result;
+}
+
+
+/**
+ * inflateRaw(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * The same as [[inflate]], but creates raw data, without wrapper
+ * (header and adler32 crc).
+ **/
+function inflateRaw(input, options) {
+  options = options || {};
+  options.raw = true;
+  return inflate(input, options);
+}
+
+
+/**
+ * ungzip(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * Just shortcut to [[inflate]], because it autodetects format
+ * by header.content. Done for convenience.
+ **/
+
+
+exports.Inflate = Inflate;
+exports.inflate = inflate;
+exports.inflateRaw = inflateRaw;
+exports.ungzip  = inflate;
+
+},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(_dereq_,module,exports){
+'use strict';
+
+
+var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&
+                (typeof Uint16Array !== 'undefined') &&
+                (typeof Int32Array !== 'undefined');
+
+
+exports.assign = function (obj /*from1, from2, from3, ...*/) {
+  var sources = Array.prototype.slice.call(arguments, 1);
+  while (sources.length) {
+    var source = sources.shift();
+    if (!source) { continue; }
+
+    if (typeof(source) !== 'object') {
+      throw new TypeError(source + 'must be non-object');
+    }
+
+    for (var p in source) {
+      if (source.hasOwnProperty(p)) {
+        obj[p] = source[p];
+      }
+    }
+  }
+
+  return obj;
+};
+
+
+// reduce buffer size, avoiding mem copy
+exports.shrinkBuf = function (buf, size) {
+  if (buf.length === size) { return buf; }
+  if (buf.subarray) { return buf.subarray(0, size); }
+  buf.length = size;
+  return buf;
+};
+
+
+var fnTyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    if (src.subarray && dest.subarray) {
+      dest.set(src.subarray(src_offs, src_offs+len), dest_offs);
+      return;
+    }
+    // Fallback to ordinary array
+    for(var i=0; i<len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function(chunks) {
+    var i, l, len, pos, chunk, result;
+
+    // calculate data length
+    len = 0;
+    for (i=0, l=chunks.length; i<l; i++) {
+      len += chunks[i].length;
+    }
+
+    // join chunks
+    result = new Uint8Array(len);
+    pos = 0;
+    for (i=0, l=chunks.length; i<l; i++) {
+      chunk = chunks[i];
+      result.set(chunk, pos);
+      pos += chunk.length;
+    }
+
+    return result;
+  }
+};
+
+var fnUntyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    for(var i=0; i<len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function(chunks) {
+    return [].concat.apply([], chunks);
+  }
+};
+
+
+// Enable/Disable typed arrays use, for testing
+//
+exports.setTyped = function (on) {
+  if (on) {
+    exports.Buf8  = Uint8Array;
+    exports.Buf16 = Uint16Array;
+    exports.Buf32 = Int32Array;
+    exports.assign(exports, fnTyped);
+  } else {
+    exports.Buf8  = Array;
+    exports.Buf16 = Array;
+    exports.Buf32 = Array;
+    exports.assign(exports, fnUntyped);
+  }
+};
+
+exports.setTyped(TYPED_OK);
+},{}],28:[function(_dereq_,module,exports){
+// String encode/decode helpers
+'use strict';
+
+
+var utils = _dereq_('./common');
+
+
+// Quick check if we can use fast array to bin string conversion
+//
+// - apply(Array) can fail on Android 2.2
+// - apply(Uint8Array) can fail on iOS 5.1 Safary
+//
+var STR_APPLY_OK = true;
+var STR_APPLY_UIA_OK = true;
+
+try { String.fromCharCode.apply(null, [0]); } catch(__) { STR_APPLY_OK = false; }
+try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch(__) { STR_APPLY_UIA_OK = false; }
+
+
+// Table with utf8 lengths (calculated by first byte of sequence)
+// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
+// because max possible codepoint is 0x10ffff
+var _utf8len = new utils.Buf8(256);
+for (var i=0; i<256; i++) {
+  _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
+}
+_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
+
+
+// convert string to array (typed, when possible)
+exports.string2buf = function (str) {
+  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+
+  // count binary size
+  for (m_pos = 0; m_pos < str_len; m_pos++) {
+    c = str.charCodeAt(m_pos);
+    if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+      c2 = str.charCodeAt(m_pos+1);
+      if ((c2 & 0xfc00) === 0xdc00) {
+        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+        m_pos++;
+      }
+    }
+    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
+  }
+
+  // allocate buffer
+  buf = new utils.Buf8(buf_len);
+
+  // convert
+  for (i=0, m_pos = 0; i < buf_len; m_pos++) {
+    c = str.charCodeAt(m_pos);
+    if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+      c2 = str.charCodeAt(m_pos+1);
+      if ((c2 & 0xfc00) === 0xdc00) {
+        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+        m_pos++;
+      }
+    }
+    if (c < 0x80) {
+      /* one byte */
+      buf[i++] = c;
+    } else if (c < 0x800) {
+      /* two bytes */
+      buf[i++] = 0xC0 | (c >>> 6);
+      buf[i++] = 0x80 | (c & 0x3f);
+    } else if (c < 0x10000) {
+      /* three bytes */
+      buf[i++] = 0xE0 | (c >>> 12);
+      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+      buf[i++] = 0x80 | (c & 0x3f);
+    } else {
+      /* four bytes */
+      buf[i++] = 0xf0 | (c >>> 18);
+      buf[i++] = 0x80 | (c >>> 12 & 0x3f);
+      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+      buf[i++] = 0x80 | (c & 0x3f);
+    }
+  }
+
+  return buf;
+};
+
+// Helper (used in 2 places)
+function buf2binstring(buf, len) {
+  // use fallback for big arrays to avoid stack overflow
+  if (len < 65537) {
+    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {
+      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
+    }
+  }
+
+  var result = '';
+  for(var i=0; i < len; i++) {
+    result += String.fromCharCode(buf[i]);
+  }
+  return result;
+}
+
+
+// Convert byte array to binary string
+exports.buf2binstring = function(buf) {
+  return buf2binstring(buf, buf.length);
+};
+
+
+// Convert binary string (typed, when possible)
+exports.binstring2buf = function(str) {
+  var buf = new utils.Buf8(str.length);
+  for(var i=0, len=buf.length; i < len; i++) {
+    buf[i] = str.charCodeAt(i);
+  }
+  return buf;
+};
+
+
+// convert array to string
+exports.buf2string = function (buf, max) {
+  var i, out, c, c_len;
+  var len = max || buf.length;
+
+  // Reserve max possible length (2 words per char)
+  // NB: by unknown reasons, Array is significantly faster for
+  //     String.fromCharCode.apply than Uint16Array.
+  var utf16buf = new Array(len*2);
+
+  for (out=0, i=0; i<len;) {
+    c = buf[i++];
+    // quick process ascii
+    if (c < 0x80) { utf16buf[out++] = c; continue; }
+
+    c_len = _utf8len[c];
+    // skip 5 & 6 byte codes
+    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
+
+    // apply mask on first byte
+    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+    // join the rest
+    while (c_len > 1 && i < len) {
+      c = (c << 6) | (buf[i++] & 0x3f);
+      c_len--;
+    }
+
+    // terminated by end of string?
+    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
+
+    if (c < 0x10000) {
+      utf16buf[out++] = c;
+    } else {
+      c -= 0x10000;
+      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
+      utf16buf[out++] = 0xdc00 | (c & 0x3ff);
+    }
+  }
+
+  return buf2binstring(utf16buf, out);
+};
+
+
+// Calculate max possible position in utf8 buffer,
+// that will not break sequence. If that's not possible
+// - (very small limits) return max size as is.
+//
+// buf[] - utf8 bytes array
+// max   - length limit (mandatory);
+exports.utf8border = function(buf, max) {
+  var pos;
+
+  max = max || buf.length;
+  if (max > buf.length) { max = buf.length; }
+
+  // go back from last position, until start of sequence found
+  pos = max-1;
+  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
+
+  // Fuckup - very small and broken sequence,
+  // return max, because we should return something anyway.
+  if (pos < 0) { return max; }
+
+  // If we came to start of buffer - that means vuffer is too small,
+  // return max too.
+  if (pos === 0) { return max; }
+
+  return (pos + _utf8len[buf[pos]] > max) ? pos : max;
+};
+
+},{"./common":27}],29:[function(_dereq_,module,exports){
+'use strict';
+
+// Note: adler32 takes 12% for level 0 and 2% for level 6.
+// It doesn't worth to make additional optimizationa as in original.
+// Small size is preferable.
+
+function adler32(adler, buf, len, pos) {
+  var s1 = (adler & 0xffff) |0
+    , s2 = ((adler >>> 16) & 0xffff) |0
+    , n = 0;
+
+  while (len !== 0) {
+    // Set limit ~ twice less than 5552, to keep
+    // s2 in 31-bits, because we force signed ints.
+    // in other case %= will fail.
+    n = len > 2000 ? 2000 : len;
+    len -= n;
+
+    do {
+      s1 = (s1 + buf[pos++]) |0;
+      s2 = (s2 + s1) |0;
+    } while (--n);
+
+    s1 %= 65521;
+    s2 %= 65521;
+  }
+
+  return (s1 | (s2 << 16)) |0;
+}
+
+
+module.exports = adler32;
+},{}],30:[function(_dereq_,module,exports){
+module.exports = {
+
+  /* Allowed flush values; see deflate() and inflate() below for details */
+  Z_NO_FLUSH:         0,
+  Z_PARTIAL_FLUSH:    1,
+  Z_SYNC_FLUSH:       2,
+  Z_FULL_FLUSH:       3,
+  Z_FINISH:           4,
+  Z_BLOCK:            5,
+  Z_TREES:            6,
+
+  /* Return codes for the compression/decompression functions. Negative values
+  * are errors, positive values are used for special but normal events.
+  */
+  Z_OK:               0,
+  Z_STREAM_END:       1,
+  Z_NEED_DICT:        2,
+  Z_ERRNO:           -1,
+  Z_STREAM_ERROR:    -2,
+  Z_DATA_ERROR:      -3,
+  //Z_MEM_ERROR:     -4,
+  Z_BUF_ERROR:       -5,
+  //Z_VERSION_ERROR: -6,
+
+  /* compression levels */
+  Z_NO_COMPRESSION:         0,
+  Z_BEST_SPEED:             1,
+  Z_BEST_COMPRESSION:       9,
+  Z_DEFAULT_COMPRESSION:   -1,
+
+
+  Z_FILTERED:               1,
+  Z_HUFFMAN_ONLY:           2,
+  Z_RLE:                    3,
+  Z_FIXED:                  4,
+  Z_DEFAULT_STRATEGY:       0,
+
+  /* Possible values of the data_type field (though see inflate()) */
+  Z_BINARY:                 0,
+  Z_TEXT:                   1,
+  //Z_ASCII:                1, // = Z_TEXT (deprecated)
+  Z_UNKNOWN:                2,
+
+  /* The deflate compression method */
+  Z_DEFLATED:               8
+  //Z_NULL:                 null // Use -1 or null inline, depending on var type
+};
+},{}],31:[function(_dereq_,module,exports){
+'use strict';
+
+// Note: we can't get significant speed boost here.
+// So write code to minimize size - no pregenerated tables
+// and array tools dependencies.
+
+
+// Use ordinary array, since untyped makes no boost here
+function makeTable() {
+  var c, table = [];
+
+  for(var n =0; n < 256; n++){
+    c = n;
+    for(var k =0; k < 8; k++){
+      c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
+    }
+    table[n] = c;
+  }
+
+  return table;
+}
+
+// Create table on load. Just 255 signed longs. Not a problem.
+var crcTable = makeTable();
+
+
+function crc32(crc, buf, len, pos) {
+  var t = crcTable
+    , end = pos + len;
+
+  crc = crc ^ (-1);
+
+  for (var i = pos; i < end; i++ ) {
+    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
+  }
+
+  return (crc ^ (-1)); // >>> 0;
+}
+
+
+module.exports = crc32;
+},{}],32:[function(_dereq_,module,exports){
+'use strict';
+
+var utils   = _dereq_('../utils/common');
+var trees   = _dereq_('./trees');
+var adler32 = _dereq_('./adler32');
+var crc32   = _dereq_('./crc32');
+var msg   = _dereq_('./messages');
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+var Z_NO_FLUSH      = 0;
+var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+//var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+//var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+//var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+
+/* compression levels */
+//var Z_NO_COMPRESSION      = 0;
+//var Z_BEST_SPEED          = 1;
+//var Z_BEST_COMPRESSION    = 9;
+var Z_DEFAULT_COMPRESSION = -1;
+
+
+var Z_FILTERED            = 1;
+var Z_HUFFMAN_ONLY        = 2;
+var Z_RLE                 = 3;
+var Z_FIXED               = 4;
+var Z_DEFAULT_STRATEGY    = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+//var Z_BINARY              = 0;
+//var Z_TEXT                = 1;
+//var Z_ASCII               = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+/*============================================================================*/
+
+
+var MAX_MEM_LEVEL = 9;
+/* Maximum value for memLevel in deflateInit2 */
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_MEM_LEVEL = 8;
+
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+var D_CODES       = 30;
+/* number of distance codes */
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+var HEAP_SIZE     = 2*L_CODES + 1;
+/* maximum heap size */
+var MAX_BITS  = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var MIN_MATCH = 3;
+var MAX_MATCH = 258;
+var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
+
+var PRESET_DICT = 0x20;
+
+var INIT_STATE = 42;
+var EXTRA_STATE = 69;
+var NAME_STATE = 73;
+var COMMENT_STATE = 91;
+var HCRC_STATE = 103;
+var BUSY_STATE = 113;
+var FINISH_STATE = 666;
+
+var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
+var BS_BLOCK_DONE     = 2; /* block flush performed */
+var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
+var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */
+
+var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
+
+function err(strm, errorCode) {
+  strm.msg = msg[errorCode];
+  return errorCode;
+}
+
+function rank(f) {
+  return ((f) << 1) - ((f) > 4 ? 9 : 0);
+}
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+
+/* =========================================================================
+ * Flush as much pending output as possible. All deflate() output goes
+ * through this function so some applications may wish to modify it
+ * to avoid allocating a large strm->output buffer and copying into it.
+ * (See also read_buf()).
+ */
+function flush_pending(strm) {
+  var s = strm.state;
+
+  //_tr_flush_bits(s);
+  var len = s.pending;
+  if (len > strm.avail_out) {
+    len = strm.avail_out;
+  }
+  if (len === 0) { return; }
+
+  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
+  strm.next_out += len;
+  s.pending_out += len;
+  strm.total_out += len;
+  strm.avail_out -= len;
+  s.pending -= len;
+  if (s.pending === 0) {
+    s.pending_out = 0;
+  }
+}
+
+
+function flush_block_only (s, last) {
+  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
+  s.block_start = s.strstart;
+  flush_pending(s.strm);
+}
+
+
+function put_byte(s, b) {
+  s.pending_buf[s.pending++] = b;
+}
+
+
+/* =========================================================================
+ * Put a short in the pending buffer. The 16-bit value is put in MSB order.
+ * IN assertion: the stream state is correct and there is enough room in
+ * pending_buf.
+ */
+function putShortMSB(s, b) {
+//  put_byte(s, (Byte)(b >> 8));
+//  put_byte(s, (Byte)(b & 0xff));
+  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
+  s.pending_buf[s.pending++] = b & 0xff;
+}
+
+
+/* ===========================================================================
+ * Read a new buffer from the current input stream, update the adler32
+ * and total number of bytes read.  All deflate() input goes through
+ * this function so some applications may wish to modify it to avoid
+ * allocating a large strm->input buffer and copying from it.
+ * (See also flush_pending()).
+ */
+function read_buf(strm, buf, start, size) {
+  var len = strm.avail_in;
+
+  if (len > size) { len = size; }
+  if (len === 0) { return 0; }
+
+  strm.avail_in -= len;
+
+  utils.arraySet(buf, strm.input, strm.next_in, len, start);
+  if (strm.state.wrap === 1) {
+    strm.adler = adler32(strm.adler, buf, len, start);
+  }
+
+  else if (strm.state.wrap === 2) {
+    strm.adler = crc32(strm.adler, buf, len, start);
+  }
+
+  strm.next_in += len;
+  strm.total_in += len;
+
+  return len;
+}
+
+
+/* ===========================================================================
+ * Set match_start to the longest match starting at the given string and
+ * return its length. Matches shorter or equal to prev_length are discarded,
+ * in which case the result is equal to prev_length and match_start is
+ * garbage.
+ * IN assertions: cur_match is the head of the hash chain for the current
+ *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
+ * OUT assertion: the match length is not greater than s->lookahead.
+ */
+function longest_match(s, cur_match) {
+  var chain_length = s.max_chain_length;      /* max hash chain length */
+  var scan = s.strstart; /* current string */
+  var match;                       /* matched string */
+  var len;                           /* length of current match */
+  var best_len = s.prev_length;              /* best match length so far */
+  var nice_match = s.nice_match;             /* stop if match long enough */
+  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
+      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
+
+  var _win = s.window; // shortcut
+
+  var wmask = s.w_mask;
+  var prev  = s.prev;
+
+  /* Stop when cur_match becomes <= limit. To simplify the code,
+   * we prevent matches with the string of window index 0.
+   */
+
+  var strend = s.strstart + MAX_MATCH;
+  var scan_end1  = _win[scan + best_len - 1];
+  var scan_end   = _win[scan + best_len];
+
+  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
+   * It is easy to get rid of this optimization if necessary.
+   */
+  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
+
+  /* Do not waste too much time if we already have a good match: */
+  if (s.prev_length >= s.good_match) {
+    chain_length >>= 2;
+  }
+  /* Do not look for matches beyond the end of the input. This is necessary
+   * to make deflate deterministic.
+   */
+  if (nice_match > s.lookahead) { nice_match = s.lookahead; }
+
+  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+
+  do {
+    // Assert(cur_match < s->strstart, "no future");
+    match = cur_match;
+
+    /* Skip to next match if the match length cannot increase
+     * or if the match length is less than 2.  Note that the checks below
+     * for insufficient lookahead only occur occasionally for performance
+     * reasons.  Therefore uninitialized memory will be accessed, and
+     * conditional jumps will be made that depend on those values.
+     * However the length of the match is limited to the lookahead, so
+     * the output of deflate is not affected by the uninitialized values.
+     */
+
+    if (_win[match + best_len]     !== scan_end  ||
+        _win[match + best_len - 1] !== scan_end1 ||
+        _win[match]                !== _win[scan] ||
+        _win[++match]              !== _win[scan + 1]) {
+      continue;
+    }
+
+    /* The check at best_len-1 can be removed because it will be made
+     * again later. (This heuristic is not always a win.)
+     * It is not necessary to compare scan[2] and match[2] since they
+     * are always equal when the other bytes match, given that
+     * the hash keys are equal and that HASH_BITS >= 8.
+     */
+    scan += 2;
+    match++;
+    // Assert(*scan == *match, "match[2]?");
+
+    /* We check for insufficient lookahead only every 8th comparison;
+     * the 256th check will be made at strstart+258.
+     */
+    do {
+      /*jshint noempty:false*/
+    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             scan < strend);
+
+    // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+
+    len = MAX_MATCH - (strend - scan);
+    scan = strend - MAX_MATCH;
+
+    if (len > best_len) {
+      s.match_start = cur_match;
+      best_len = len;
+      if (len >= nice_match) {
+        break;
+      }
+      scan_end1  = _win[scan + best_len - 1];
+      scan_end   = _win[scan + best_len];
+    }
+  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
+
+  if (best_len <= s.lookahead) {
+    return best_len;
+  }
+  return s.lookahead;
+}
+
+
+/* ===========================================================================
+ * Fill the window when the lookahead becomes insufficient.
+ * Updates strstart and lookahead.
+ *
+ * IN assertion: lookahead < MIN_LOOKAHEAD
+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
+ *    At least one byte has been read, or avail_in == 0; reads are
+ *    performed for at least two bytes (required for the zip translate_eol
+ *    option -- not supported here).
+ */
+function fill_window(s) {
+  var _w_size = s.w_size;
+  var p, n, m, more, str;
+
+  //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+
+  do {
+    more = s.window_size - s.lookahead - s.strstart;
+
+    // JS ints have 32 bit, block below not needed
+    /* Deal with !@#$% 64K limit: */
+    //if (sizeof(int) <= 2) {
+    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+    //        more = wsize;
+    //
+    //  } else if (more == (unsigned)(-1)) {
+    //        /* Very unlikely, but possible on 16 bit machine if
+    //         * strstart == 0 && lookahead == 1 (input done a byte at time)
+    //         */
+    //        more--;
+    //    }
+    //}
+
+
+    /* If the window is almost full and there is insufficient lookahead,
+     * move the upper half to the lower one to make room in the upper half.
+     */
+    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
+
+      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
+      s.match_start -= _w_size;
+      s.strstart -= _w_size;
+      /* we now have strstart >= MAX_DIST */
+      s.block_start -= _w_size;
+
+      /* Slide the hash table (could be avoided with 32 bit values
+       at the expense of memory usage). We slide even when level == 0
+       to keep the hash table consistent if we switch back to level > 0
+       later. (Using level 0 permanently is not an optimal usage of
+       zlib, so we don't care about this pathological case.)
+       */
+
+      n = s.hash_size;
+      p = n;
+      do {
+        m = s.head[--p];
+        s.head[p] = (m >= _w_size ? m - _w_size : 0);
+      } while (--n);
+
+      n = _w_size;
+      p = n;
+      do {
+        m = s.prev[--p];
+        s.prev[p] = (m >= _w_size ? m - _w_size : 0);
+        /* If n is not on any hash chain, prev[n] is garbage but
+         * its value will never be used.
+         */
+      } while (--n);
+
+      more += _w_size;
+    }
+    if (s.strm.avail_in === 0) {
+      break;
+    }
+
+    /* If there was no sliding:
+     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+     *    more == window_size - lookahead - strstart
+     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+     * => more >= window_size - 2*WSIZE + 2
+     * In the BIG_MEM or MMAP case (not yet supported),
+     *   window_size == input_size + MIN_LOOKAHEAD  &&
+     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+     * Otherwise, window_size == 2*WSIZE so more >= 2.
+     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+     */
+    //Assert(more >= 2, "more < 2");
+    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
+    s.lookahead += n;
+
+    /* Initialize the hash value now that we have some input: */
+    if (s.lookahead + s.insert >= MIN_MATCH) {
+      str = s.strstart - s.insert;
+      s.ins_h = s.window[str];
+
+      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
+//#if MIN_MATCH != 3
+//        Call update_hash() MIN_MATCH-3 more times
+//#endif
+      while (s.insert) {
+        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH-1]) & s.hash_mask;
+
+        s.prev[str & s.w_mask] = s.head[s.ins_h];
+        s.head[s.ins_h] = str;
+        str++;
+        s.insert--;
+        if (s.lookahead + s.insert < MIN_MATCH) {
+          break;
+        }
+      }
+    }
+    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+     * but this is not important since only literal bytes will be emitted.
+     */
+
+  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
+
+  /* If the WIN_INIT bytes after the end of the current data have never been
+   * written, then zero those bytes in order to avoid memory check reports of
+   * the use of uninitialized (or uninitialised as Julian writes) bytes by
+   * the longest match routines.  Update the high water mark for the next
+   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+   */
+//  if (s.high_water < s.window_size) {
+//    var curr = s.strstart + s.lookahead;
+//    var init = 0;
+//
+//    if (s.high_water < curr) {
+//      /* Previous high water mark below current data -- zero WIN_INIT
+//       * bytes or up to end of window, whichever is less.
+//       */
+//      init = s.window_size - curr;
+//      if (init > WIN_INIT)
+//        init = WIN_INIT;
+//      zmemzero(s->window + curr, (unsigned)init);
+//      s->high_water = curr + init;
+//    }
+//    else if (s->high_water < (ulg)curr + WIN_INIT) {
+//      /* High water mark at or above current data, but below current data
+//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+//       * to end of window, whichever is less.
+//       */
+//      init = (ulg)curr + WIN_INIT - s->high_water;
+//      if (init > s->window_size - s->high_water)
+//        init = s->window_size - s->high_water;
+//      zmemzero(s->window + s->high_water, (unsigned)init);
+//      s->high_water += init;
+//    }
+//  }
+//
+//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+//    "not enough room for search");
+}
+
+/* ===========================================================================
+ * Copy without compression as much as possible from the input stream, return
+ * the current block state.
+ * This function does not insert new strings in the dictionary since
+ * uncompressible data is probably not useful. This function is used
+ * only for the level=0 compression option.
+ * NOTE: this function should be optimized to avoid extra copying from
+ * window to pending_buf.
+ */
+function deflate_stored(s, flush) {
+  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
+   * to pending_buf_size, and each stored block has a 5 byte header:
+   */
+  var max_block_size = 0xffff;
+
+  if (max_block_size > s.pending_buf_size - 5) {
+    max_block_size = s.pending_buf_size - 5;
+  }
+
+  /* Copy as much as possible from input to output: */
+  for (;;) {
+    /* Fill the window as much as possible: */
+    if (s.lookahead <= 1) {
+
+      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
+      //  s->block_start >= (long)s->w_size, "slide too late");
+//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
+//        s.block_start >= s.w_size)) {
+//        throw  new Error("slide too late");
+//      }
+
+      fill_window(s);
+      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+
+      if (s.lookahead === 0) {
+        break;
+      }
+      /* flush the current block */
+    }
+    //Assert(s->block_start >= 0L, "block gone");
+//    if (s.block_start < 0) throw new Error("block gone");
+
+    s.strstart += s.lookahead;
+    s.lookahead = 0;
+
+    /* Emit a stored block if pending_buf will be full: */
+    var max_start = s.block_start + max_block_size;
+
+    if (s.strstart === 0 || s.strstart >= max_start) {
+      /* strstart == 0 is possible when wraparound on 16-bit machine */
+      s.lookahead = s.strstart - max_start;
+      s.strstart = max_start;
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+
+
+    }
+    /* Flush if we may have to slide, otherwise block_start may become
+     * negative and the data will be gone:
+     */
+    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+
+  s.insert = 0;
+
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+
+  if (s.strstart > s.block_start) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_NEED_MORE;
+}
+
+/* ===========================================================================
+ * Compress as much as possible from the input stream, return the current
+ * block state.
+ * This function does not perform lazy evaluation of matches and inserts
+ * new strings in the dictionary only for unmatched strings or for short
+ * matches. It is used only for the fast compression options.
+ */
+function deflate_fast(s, flush) {
+  var hash_head;        /* head of the hash chain */
+  var bflush;           /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) {
+        break; /* flush the current block */
+      }
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     * At this point we have always match_length < MIN_MATCH
+     */
+    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+    }
+    if (s.match_length >= MIN_MATCH) {
+      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
+
+      /*** _tr_tally_dist(s, s.strstart - s.match_start,
+                     s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+
+      /* Insert new strings in the hash table only if the match length
+       * is not too large. This saves time but degrades compression.
+       */
+      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
+        s.match_length--; /* string at strstart already in table */
+        do {
+          s.strstart++;
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+          /* strstart never exceeds WSIZE-MAX_MATCH, so there are
+           * always MIN_MATCH bytes ahead.
+           */
+        } while (--s.match_length !== 0);
+        s.strstart++;
+      } else
+      {
+        s.strstart += s.match_length;
+        s.match_length = 0;
+        s.ins_h = s.window[s.strstart];
+        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;
+
+//#if MIN_MATCH != 3
+//                Call UPDATE_HASH() MIN_MATCH-3 more times
+//#endif
+        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
+         * matter since it will be recomputed at next deflate call.
+         */
+      }
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s.window[s.strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = ((s.strstart < (MIN_MATCH-1)) ? s.strstart : MIN_MATCH-1);
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * Same as above, but achieves better compression. We use a lazy
+ * evaluation for matches: a match is finally adopted only if there is
+ * no better match at the next window position.
+ */
+function deflate_slow(s, flush) {
+  var hash_head;          /* head of hash chain */
+  var bflush;              /* set if current block must be flushed */
+
+  var max_insert;
+
+  /* Process the input block. */
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     */
+    s.prev_length = s.match_length;
+    s.prev_match = s.match_start;
+    s.match_length = MIN_MATCH-1;
+
+    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
+        s.strstart - hash_head <= (s.w_size-MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+
+      if (s.match_length <= 5 &&
+         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
+
+        /* If prev_match is also MIN_MATCH, match_start is garbage
+         * but we will ignore the current match anyway.
+         */
+        s.match_length = MIN_MATCH-1;
+      }
+    }
+    /* If there was a match at the previous step and the current
+     * match is not better, output the previous match:
+     */
+    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
+      max_insert = s.strstart + s.lookahead - MIN_MATCH;
+      /* Do not insert strings in hash table beyond this. */
+
+      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
+
+      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
+                     s.prev_length - MIN_MATCH, bflush);***/
+      bflush = trees._tr_tally(s, s.strstart - 1- s.prev_match, s.prev_length - MIN_MATCH);
+      /* Insert in hash table all strings up to the end of the match.
+       * strstart-1 and strstart are already inserted. If there is not
+       * enough lookahead, the last two strings are not inserted in
+       * the hash table.
+       */
+      s.lookahead -= s.prev_length-1;
+      s.prev_length -= 2;
+      do {
+        if (++s.strstart <= max_insert) {
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+        }
+      } while (--s.prev_length !== 0);
+      s.match_available = 0;
+      s.match_length = MIN_MATCH-1;
+      s.strstart++;
+
+      if (bflush) {
+        /*** FLUSH_BLOCK(s, 0); ***/
+        flush_block_only(s, false);
+        if (s.strm.avail_out === 0) {
+          return BS_NEED_MORE;
+        }
+        /***/
+      }
+
+    } else if (s.match_available) {
+      /* If there was no match at the previous position, output a
+       * single literal. If there was a match but the current match
+       * is longer, truncate the previous match to a single literal.
+       */
+      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);
+
+      if (bflush) {
+        /*** FLUSH_BLOCK_ONLY(s, 0) ***/
+        flush_block_only(s, false);
+        /***/
+      }
+      s.strstart++;
+      s.lookahead--;
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+    } else {
+      /* There is no previous match to compare with, wait for
+       * the next step to decide.
+       */
+      s.match_available = 1;
+      s.strstart++;
+      s.lookahead--;
+    }
+  }
+  //Assert (flush != Z_NO_FLUSH, "no flush?");
+  if (s.match_available) {
+    //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);
+
+    s.match_available = 0;
+  }
+  s.insert = s.strstart < MIN_MATCH-1 ? s.strstart : MIN_MATCH-1;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_BLOCK_DONE;
+}
+
+
+/* ===========================================================================
+ * For Z_RLE, simply look for runs of bytes, generate matches only of distance
+ * one.  Do not maintain a hash table.  (It will be regenerated if this run of
+ * deflate switches away from Z_RLE.)
+ */
+function deflate_rle(s, flush) {
+  var bflush;            /* set if current block must be flushed */
+  var prev;              /* byte at distance one to match */
+  var scan, strend;      /* scan goes up to strend for length of run */
+
+  var _win = s.window;
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the longest run, plus one for the unrolled loop.
+     */
+    if (s.lookahead <= MAX_MATCH) {
+      fill_window(s);
+      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* See how many times the previous byte repeats */
+    s.match_length = 0;
+    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
+      scan = s.strstart - 1;
+      prev = _win[scan];
+      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
+        strend = s.strstart + MAX_MATCH;
+        do {
+          /*jshint noempty:false*/
+        } while (prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 scan < strend);
+        s.match_length = MAX_MATCH - (strend - scan);
+        if (s.match_length > s.lookahead) {
+          s.match_length = s.lookahead;
+        }
+      }
+      //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
+    }
+
+    /* Emit match if have run of MIN_MATCH or longer, else emit literal */
+    if (s.match_length >= MIN_MATCH) {
+      //check_match(s, s.strstart, s.strstart - 1, s.match_length);
+
+      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+      s.strstart += s.match_length;
+      s.match_length = 0;
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s->window[s->strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
+ * (It will be regenerated if this run of deflate switches away from Huffman.)
+ */
+function deflate_huff(s, flush) {
+  var bflush;             /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we have a literal to write. */
+    if (s.lookahead === 0) {
+      fill_window(s);
+      if (s.lookahead === 0) {
+        if (flush === Z_NO_FLUSH) {
+          return BS_NEED_MORE;
+        }
+        break;      /* flush the current block */
+      }
+    }
+
+    /* Output a literal byte */
+    s.match_length = 0;
+    //Tracevv((stderr,"%c", s->window[s->strstart]));
+    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+    s.lookahead--;
+    s.strstart++;
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* Values for max_lazy_match, good_match and max_chain_length, depending on
+ * the desired pack level (0..9). The values given below have been tuned to
+ * exclude worst case performance for pathological files. Better values may be
+ * found for specific files.
+ */
+var Config = function (good_length, max_lazy, nice_length, max_chain, func) {
+  this.good_length = good_length;
+  this.max_lazy = max_lazy;
+  this.nice_length = nice_length;
+  this.max_chain = max_chain;
+  this.func = func;
+};
+
+var configuration_table;
+
+configuration_table = [
+  /*      good lazy nice chain */
+  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
+  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
+  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
+  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */
+
+  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
+  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
+  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
+  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
+  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
+  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
+];
+
+
+/* ===========================================================================
+ * Initialize the "longest match" routines for a new zlib stream
+ */
+function lm_init(s) {
+  s.window_size = 2 * s.w_size;
+
+  /*** CLEAR_HASH(s); ***/
+  zero(s.head); // Fill with NIL (= 0);
+
+  /* Set the default configuration parameters:
+   */
+  s.max_lazy_match = configuration_table[s.level].max_lazy;
+  s.good_match = configuration_table[s.level].good_length;
+  s.nice_match = configuration_table[s.level].nice_length;
+  s.max_chain_length = configuration_table[s.level].max_chain;
+
+  s.strstart = 0;
+  s.block_start = 0;
+  s.lookahead = 0;
+  s.insert = 0;
+  s.match_length = s.prev_length = MIN_MATCH - 1;
+  s.match_available = 0;
+  s.ins_h = 0;
+}
+
+
+function DeflateState() {
+  this.strm = null;            /* pointer back to this zlib stream */
+  this.status = 0;            /* as the name implies */
+  this.pending_buf = null;      /* output still pending */
+  this.pending_buf_size = 0;  /* size of pending_buf */
+  this.pending_out = 0;       /* next pending byte to output to the stream */
+  this.pending = 0;           /* nb of bytes in the pending buffer */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.gzhead = null;         /* gzip header information to write */
+  this.gzindex = 0;           /* where in extra, name, or comment */
+  this.method = Z_DEFLATED; /* can only be DEFLATED */
+  this.last_flush = -1;   /* value of flush param for previous deflate call */
+
+  this.w_size = 0;  /* LZ77 window size (32K by default) */
+  this.w_bits = 0;  /* log2(w_size)  (8..16) */
+  this.w_mask = 0;  /* w_size - 1 */
+
+  this.window = null;
+  /* Sliding window. Input bytes are read into the second half of the window,
+   * and move to the first half later to keep a dictionary of at least wSize
+   * bytes. With this organization, matches are limited to a distance of
+   * wSize-MAX_MATCH bytes, but this ensures that IO is always
+   * performed with a length multiple of the block size.
+   */
+
+  this.window_size = 0;
+  /* Actual size of window: 2*wSize, except when the user input buffer
+   * is directly used as sliding window.
+   */
+
+  this.prev = null;
+  /* Link to older string with same hash index. To limit the size of this
+   * array to 64K, this link is maintained only for the last 32K strings.
+   * An index in this array is thus a window index modulo 32K.
+   */
+
+  this.head = null;   /* Heads of the hash chains or NIL. */
+
+  this.ins_h = 0;       /* hash index of string to be inserted */
+  this.hash_size = 0;   /* number of elements in hash table */
+  this.hash_bits = 0;   /* log2(hash_size) */
+  this.hash_mask = 0;   /* hash_size-1 */
+
+  this.hash_shift = 0;
+  /* Number of bits by which ins_h must be shifted at each input
+   * step. It must be such that after MIN_MATCH steps, the oldest
+   * byte no longer takes part in the hash key, that is:
+   *   hash_shift * MIN_MATCH >= hash_bits
+   */
+
+  this.block_start = 0;
+  /* Window position at the beginning of the current output block. Gets
+   * negative when the window is moved backwards.
+   */
+
+  this.match_length = 0;      /* length of best match */
+  this.prev_match = 0;        /* previous match */
+  this.match_available = 0;   /* set if previous match exists */
+  this.strstart = 0;          /* start of string to insert */
+  this.match_start = 0;       /* start of matching string */
+  this.lookahead = 0;         /* number of valid bytes ahead in window */
+
+  this.prev_length = 0;
+  /* Length of the best match at previous step. Matches not greater than this
+   * are discarded. This is used in the lazy match evaluation.
+   */
+
+  this.max_chain_length = 0;
+  /* To speed up deflation, hash chains are never searched beyond this
+   * length.  A higher limit improves compression ratio but degrades the
+   * speed.
+   */
+
+  this.max_lazy_match = 0;
+  /* Attempt to find a better match only when the current match is strictly
+   * smaller than this value. This mechanism is used only for compression
+   * levels >= 4.
+   */
+  // That's alias to max_lazy_match, don't use directly
+  //this.max_insert_length = 0;
+  /* Insert new strings in the hash table only if the match length is not
+   * greater than this length. This saves time but degrades compression.
+   * max_insert_length is used only for compression levels <= 3.
+   */
+
+  this.level = 0;     /* compression level (1..9) */
+  this.strategy = 0;  /* favor or force Huffman coding*/
+
+  this.good_match = 0;
+  /* Use a faster search when the previous match is longer than this */
+
+  this.nice_match = 0; /* Stop searching when current match exceeds this */
+
+              /* used by trees.c: */
+
+  /* Didn't use ct_data typedef below to suppress compiler warning */
+
+  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
+  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
+  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
+
+  // Use flat array of DOUBLE size, with interleaved fata,
+  // because JS does not support effective
+  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
+  this.dyn_dtree  = new utils.Buf16((2*D_CODES+1) * 2);
+  this.bl_tree    = new utils.Buf16((2*BL_CODES+1) * 2);
+  zero(this.dyn_ltree);
+  zero(this.dyn_dtree);
+  zero(this.bl_tree);
+
+  this.l_desc   = null;         /* desc. for literal tree */
+  this.d_desc   = null;         /* desc. for distance tree */
+  this.bl_desc  = null;         /* desc. for bit length tree */
+
+  //ush bl_count[MAX_BITS+1];
+  this.bl_count = new utils.Buf16(MAX_BITS+1);
+  /* number of codes at each bit length for an optimal tree */
+
+  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
+  this.heap = new utils.Buf16(2*L_CODES+1);  /* heap used to build the Huffman trees */
+  zero(this.heap);
+
+  this.heap_len = 0;               /* number of elements in the heap */
+  this.heap_max = 0;               /* element of largest frequency */
+  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
+   * The same heap array is used to build all trees.
+   */
+
+  this.depth = new utils.Buf16(2*L_CODES+1); //uch depth[2*L_CODES+1];
+  zero(this.depth);
+  /* Depth of each subtree used as tie breaker for trees of equal frequency
+   */
+
+  this.l_buf = 0;          /* buffer index for literals or lengths */
+
+  this.lit_bufsize = 0;
+  /* Size of match buffer for literals/lengths.  There are 4 reasons for
+   * limiting lit_bufsize to 64K:
+   *   - frequencies can be kept in 16 bit counters
+   *   - if compression is not successful for the first block, all input
+   *     data is still in the window so we can still emit a stored block even
+   *     when input comes from standard input.  (This can also be done for
+   *     all blocks if lit_bufsize is not greater than 32K.)
+   *   - if compression is not successful for a file smaller than 64K, we can
+   *     even emit a stored file instead of a stored block (saving 5 bytes).
+   *     This is applicable only for zip (not gzip or zlib).
+   *   - creating new Huffman trees less frequently may not provide fast
+   *     adaptation to changes in the input data statistics. (Take for
+   *     example a binary file with poorly compressible code followed by
+   *     a highly compressible string table.) Smaller buffer sizes give
+   *     fast adaptation but have of course the overhead of transmitting
+   *     trees more frequently.
+   *   - I can't count above 4
+   */
+
+  this.last_lit = 0;      /* running index in l_buf */
+
+  this.d_buf = 0;
+  /* Buffer index for distances. To simplify the code, d_buf and l_buf have
+   * the same number of elements. To use different lengths, an extra flag
+   * array would be necessary.
+   */
+
+  this.opt_len = 0;       /* bit length of current block with optimal trees */
+  this.static_len = 0;    /* bit length of current block with static trees */
+  this.matches = 0;       /* number of string matches in current block */
+  this.insert = 0;        /* bytes at end of window left to insert */
+
+
+  this.bi_buf = 0;
+  /* Output buffer. bits are inserted starting at the bottom (least
+   * significant bits).
+   */
+  this.bi_valid = 0;
+  /* Number of valid bits in bi_buf.  All bits above the last valid bit
+   * are always zero.
+   */
+
+  // Used for window memory init. We safely ignore it for JS. That makes
+  // sense only for pointers and memory check tools.
+  //this.high_water = 0;
+  /* High water mark offset in window for initialized bytes -- bytes above
+   * this are set to zero in order to avoid memory check warnings when
+   * longest match routines access bytes past the input.  This is then
+   * updated to the new high water mark.
+   */
+}
+
+
+function deflateResetKeep(strm) {
+  var s;
+
+  if (!strm || !strm.state) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.total_in = strm.total_out = 0;
+  strm.data_type = Z_UNKNOWN;
+
+  s = strm.state;
+  s.pending = 0;
+  s.pending_out = 0;
+
+  if (s.wrap < 0) {
+    s.wrap = -s.wrap;
+    /* was made negative by deflate(..., Z_FINISH); */
+  }
+  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
+  strm.adler = (s.wrap === 2) ?
+    0  // crc32(0, Z_NULL, 0)
+  :
+    1; // adler32(0, Z_NULL, 0)
+  s.last_flush = Z_NO_FLUSH;
+  trees._tr_init(s);
+  return Z_OK;
+}
+
+
+function deflateReset(strm) {
+  var ret = deflateResetKeep(strm);
+  if (ret === Z_OK) {
+    lm_init(strm.state);
+  }
+  return ret;
+}
+
+
+function deflateSetHeader(strm, head) {
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
+  strm.state.gzhead = head;
+  return Z_OK;
+}
+
+
+function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
+  if (!strm) { // === Z_NULL
+    return Z_STREAM_ERROR;
+  }
+  var wrap = 1;
+
+  if (level === Z_DEFAULT_COMPRESSION) {
+    level = 6;
+  }
+
+  if (windowBits < 0) { /* suppress zlib wrapper */
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+
+  else if (windowBits > 15) {
+    wrap = 2;           /* write gzip wrapper instead */
+    windowBits -= 16;
+  }
+
+
+  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
+    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
+    strategy < 0 || strategy > Z_FIXED) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+
+  if (windowBits === 8) {
+    windowBits = 9;
+  }
+  /* until 256-byte window bug fixed */
+
+  var s = new DeflateState();
+
+  strm.state = s;
+  s.strm = strm;
+
+  s.wrap = wrap;
+  s.gzhead = null;
+  s.w_bits = windowBits;
+  s.w_size = 1 << s.w_bits;
+  s.w_mask = s.w_size - 1;
+
+  s.hash_bits = memLevel + 7;
+  s.hash_size = 1 << s.hash_bits;
+  s.hash_mask = s.hash_size - 1;
+  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
+
+  s.window = new utils.Buf8(s.w_size * 2);
+  s.head = new utils.Buf16(s.hash_size);
+  s.prev = new utils.Buf16(s.w_size);
+
+  // Don't need mem init magic for JS.
+  //s.high_water = 0;  /* nothing written to s->window yet */
+
+  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
+
+  s.pending_buf_size = s.lit_bufsize * 4;
+  s.pending_buf = new utils.Buf8(s.pending_buf_size);
+
+  s.d_buf = s.lit_bufsize >> 1;
+  s.l_buf = (1 + 2) * s.lit_bufsize;
+
+  s.level = level;
+  s.strategy = strategy;
+  s.method = method;
+
+  return deflateReset(strm);
+}
+
+function deflateInit(strm, level) {
+  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
+}
+
+
+function deflate(strm, flush) {
+  var old_flush, s;
+  var beg, val; // for gzip header write only
+
+  if (!strm || !strm.state ||
+    flush > Z_BLOCK || flush < 0) {
+    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
+  }
+
+  s = strm.state;
+
+  if (!strm.output ||
+      (!strm.input && strm.avail_in !== 0) ||
+      (s.status === FINISH_STATE && flush !== Z_FINISH)) {
+    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
+  }
+
+  s.strm = strm; /* just in case */
+  old_flush = s.last_flush;
+  s.last_flush = flush;
+
+  /* Write the header */
+  if (s.status === INIT_STATE) {
+
+    if (s.wrap === 2) { // GZIP header
+      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
+      put_byte(s, 31);
+      put_byte(s, 139);
+      put_byte(s, 8);
+      if (!s.gzhead) { // s->gzhead == Z_NULL
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, OS_CODE);
+        s.status = BUSY_STATE;
+      }
+      else {
+        put_byte(s, (s.gzhead.text ? 1 : 0) +
+                    (s.gzhead.hcrc ? 2 : 0) +
+                    (!s.gzhead.extra ? 0 : 4) +
+                    (!s.gzhead.name ? 0 : 8) +
+                    (!s.gzhead.comment ? 0 : 16)
+                );
+        put_byte(s, s.gzhead.time & 0xff);
+        put_byte(s, (s.gzhead.time >> 8) & 0xff);
+        put_byte(s, (s.gzhead.time >> 16) & 0xff);
+        put_byte(s, (s.gzhead.time >> 24) & 0xff);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, s.gzhead.os & 0xff);
+        if (s.gzhead.extra && s.gzhead.extra.length) {
+          put_byte(s, s.gzhead.extra.length & 0xff);
+          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
+        }
+        if (s.gzhead.hcrc) {
+          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
+        }
+        s.gzindex = 0;
+        s.status = EXTRA_STATE;
+      }
+    }
+    else // DEFLATE header
+    {
+      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
+      var level_flags = -1;
+
+      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
+        level_flags = 0;
+      } else if (s.level < 6) {
+        level_flags = 1;
+      } else if (s.level === 6) {
+        level_flags = 2;
+      } else {
+        level_flags = 3;
+      }
+      header |= (level_flags << 6);
+      if (s.strstart !== 0) { header |= PRESET_DICT; }
+      header += 31 - (header % 31);
+
+      s.status = BUSY_STATE;
+      putShortMSB(s, header);
+
+      /* Save the adler32 of the preset dictionary: */
+      if (s.strstart !== 0) {
+        putShortMSB(s, strm.adler >>> 16);
+        putShortMSB(s, strm.adler & 0xffff);
+      }
+      strm.adler = 1; // adler32(0L, Z_NULL, 0);
+    }
+  }
+
+//#ifdef GZIP
+  if (s.status === EXTRA_STATE) {
+    if (s.gzhead.extra/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+
+      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            break;
+          }
+        }
+        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
+        s.gzindex++;
+      }
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (s.gzindex === s.gzhead.extra.length) {
+        s.gzindex = 0;
+        s.status = NAME_STATE;
+      }
+    }
+    else {
+      s.status = NAME_STATE;
+    }
+  }
+  if (s.status === NAME_STATE) {
+    if (s.gzhead.name/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.name.length) {
+          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg){
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.gzindex = 0;
+        s.status = COMMENT_STATE;
+      }
+    }
+    else {
+      s.status = COMMENT_STATE;
+    }
+  }
+  if (s.status === COMMENT_STATE) {
+    if (s.gzhead.comment/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.comment.length) {
+          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.status = HCRC_STATE;
+      }
+    }
+    else {
+      s.status = HCRC_STATE;
+    }
+  }
+  if (s.status === HCRC_STATE) {
+    if (s.gzhead.hcrc) {
+      if (s.pending + 2 > s.pending_buf_size) {
+        flush_pending(strm);
+      }
+      if (s.pending + 2 <= s.pending_buf_size) {
+        put_byte(s, strm.adler & 0xff);
+        put_byte(s, (strm.adler >> 8) & 0xff);
+        strm.adler = 0; //crc32(0L, Z_NULL, 0);
+        s.status = BUSY_STATE;
+      }
+    }
+    else {
+      s.status = BUSY_STATE;
+    }
+  }
+//#endif
+
+  /* Flush as much pending output as possible */
+  if (s.pending !== 0) {
+    flush_pending(strm);
+    if (strm.avail_out === 0) {
+      /* Since avail_out is 0, deflate will be called again with
+       * more output space, but possibly with both pending and
+       * avail_in equal to zero. There won't be anything to do,
+       * but this is not an error situation so make sure we
+       * return OK instead of BUF_ERROR at next call of deflate:
+       */
+      s.last_flush = -1;
+      return Z_OK;
+    }
+
+    /* Make sure there is something to do and avoid duplicate consecutive
+     * flushes. For repeated and useless calls with Z_FINISH, we keep
+     * returning Z_STREAM_END instead of Z_BUF_ERROR.
+     */
+  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
+    flush !== Z_FINISH) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* User must not provide more input after the first FINISH: */
+  if (s.status === FINISH_STATE && strm.avail_in !== 0) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* Start a new block or continue the current one.
+   */
+  if (strm.avail_in !== 0 || s.lookahead !== 0 ||
+    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
+    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
+      (s.strategy === Z_RLE ? deflate_rle(s, flush) :
+        configuration_table[s.level].func(s, flush));
+
+    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
+      s.status = FINISH_STATE;
+    }
+    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
+      if (strm.avail_out === 0) {
+        s.last_flush = -1;
+        /* avoid BUF_ERROR next call, see above */
+      }
+      return Z_OK;
+      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
+       * of deflate should use the same flush parameter to make sure
+       * that the flush is complete. So we don't have to output an
+       * empty block here, this will be done at next call. This also
+       * ensures that for a very small output buffer, we emit at most
+       * one empty block.
+       */
+    }
+    if (bstate === BS_BLOCK_DONE) {
+      if (flush === Z_PARTIAL_FLUSH) {
+        trees._tr_align(s);
+      }
+      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
+
+        trees._tr_stored_block(s, 0, 0, false);
+        /* For a full flush, this empty block will be recognized
+         * as a special marker by inflate_sync().
+         */
+        if (flush === Z_FULL_FLUSH) {
+          /*** CLEAR_HASH(s); ***/             /* forget history */
+          zero(s.head); // Fill with NIL (= 0);
+
+          if (s.lookahead === 0) {
+            s.strstart = 0;
+            s.block_start = 0;
+            s.insert = 0;
+          }
+        }
+      }
+      flush_pending(strm);
+      if (strm.avail_out === 0) {
+        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
+        return Z_OK;
+      }
+    }
+  }
+  //Assert(strm->avail_out > 0, "bug2");
+  //if (strm.avail_out <= 0) { throw new Error("bug2");}
+
+  if (flush !== Z_FINISH) { return Z_OK; }
+  if (s.wrap <= 0) { return Z_STREAM_END; }
+
+  /* Write the trailer */
+  if (s.wrap === 2) {
+    put_byte(s, strm.adler & 0xff);
+    put_byte(s, (strm.adler >> 8) & 0xff);
+    put_byte(s, (strm.adler >> 16) & 0xff);
+    put_byte(s, (strm.adler >> 24) & 0xff);
+    put_byte(s, strm.total_in & 0xff);
+    put_byte(s, (strm.total_in >> 8) & 0xff);
+    put_byte(s, (strm.total_in >> 16) & 0xff);
+    put_byte(s, (strm.total_in >> 24) & 0xff);
+  }
+  else
+  {
+    putShortMSB(s, strm.adler >>> 16);
+    putShortMSB(s, strm.adler & 0xffff);
+  }
+
+  flush_pending(strm);
+  /* If avail_out is zero, the application will call deflate again
+   * to flush the rest.
+   */
+  if (s.wrap > 0) { s.wrap = -s.wrap; }
+  /* write the trailer only once! */
+  return s.pending !== 0 ? Z_OK : Z_STREAM_END;
+}
+
+function deflateEnd(strm) {
+  var status;
+
+  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  status = strm.state.status;
+  if (status !== INIT_STATE &&
+    status !== EXTRA_STATE &&
+    status !== NAME_STATE &&
+    status !== COMMENT_STATE &&
+    status !== HCRC_STATE &&
+    status !== BUSY_STATE &&
+    status !== FINISH_STATE
+  ) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.state = null;
+
+  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
+}
+
+/* =========================================================================
+ * Copy the source state to the destination state
+ */
+//function deflateCopy(dest, source) {
+//
+//}
+
+exports.deflateInit = deflateInit;
+exports.deflateInit2 = deflateInit2;
+exports.deflateReset = deflateReset;
+exports.deflateResetKeep = deflateResetKeep;
+exports.deflateSetHeader = deflateSetHeader;
+exports.deflate = deflate;
+exports.deflateEnd = deflateEnd;
+exports.deflateInfo = 'pako deflate (from Nodeca project)';
+
+/* Not implemented
+exports.deflateBound = deflateBound;
+exports.deflateCopy = deflateCopy;
+exports.deflateSetDictionary = deflateSetDictionary;
+exports.deflateParams = deflateParams;
+exports.deflatePending = deflatePending;
+exports.deflatePrime = deflatePrime;
+exports.deflateTune = deflateTune;
+*/
+},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(_dereq_,module,exports){
+'use strict';
+
+
+function GZheader() {
+  /* true if compressed data believed to be text */
+  this.text       = 0;
+  /* modification time */
+  this.time       = 0;
+  /* extra flags (not used when writing a gzip file) */
+  this.xflags     = 0;
+  /* operating system */
+  this.os         = 0;
+  /* pointer to extra field or Z_NULL if none */
+  this.extra      = null;
+  /* extra field length (valid if extra != Z_NULL) */
+  this.extra_len  = 0; // Actually, we don't need it in JS,
+                       // but leave for few code modifications
+
+  //
+  // Setup limits is not necessary because in js we should not preallocate memory 
+  // for inflate use constant limit in 65536 bytes
+  //
+
+  /* space at extra (only when reading header) */
+  // this.extra_max  = 0;
+  /* pointer to zero-terminated file name or Z_NULL */
+  this.name       = '';
+  /* space at name (only when reading header) */
+  // this.name_max   = 0;
+  /* pointer to zero-terminated comment or Z_NULL */
+  this.comment    = '';
+  /* space at comment (only when reading header) */
+  // this.comm_max   = 0;
+  /* true if there was or will be a header crc */
+  this.hcrc       = 0;
+  /* true when done reading gzip header (not used when writing a gzip file) */
+  this.done       = false;
+}
+
+module.exports = GZheader;
+},{}],34:[function(_dereq_,module,exports){
+'use strict';
+
+// See state defs from inflate.js
+var BAD = 30;       /* got a data error -- remain here until reset */
+var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+
+/*
+   Decode literal, length, and distance codes and write out the resulting
+   literal and match bytes until either not enough input or output is
+   available, an end-of-block is encountered, or a data error is encountered.
+   When large enough input and output buffers are supplied to inflate(), for
+   example, a 16K input buffer and a 64K output buffer, more than 95% of the
+   inflate execution time is spent in this routine.
+
+   Entry assumptions:
+
+        state.mode === LEN
+        strm.avail_in >= 6
+        strm.avail_out >= 258
+        start >= strm.avail_out
+        state.bits < 8
+
+   On return, state.mode is one of:
+
+        LEN -- ran out of enough output space or enough available input
+        TYPE -- reached end of block code, inflate() to interpret next block
+        BAD -- error in block data
+
+   Notes:
+
+    - The maximum input bits used by a length/distance pair is 15 bits for the
+      length code, 5 bits for the length extra, 15 bits for the distance code,
+      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
+      Therefore if strm.avail_in >= 6, then there is enough input to avoid
+      checking for available input while decoding.
+
+    - The maximum bytes that a single length/distance pair can output is 258
+      bytes, which is the maximum length that can be coded.  inflate_fast()
+      requires strm.avail_out >= 258 for each loop to avoid checking for
+      output space.
+ */
+module.exports = function inflate_fast(strm, start) {
+  var state;
+  var _in;                    /* local strm.input */
+  var last;                   /* have enough input while in < last */
+  var _out;                   /* local strm.output */
+  var beg;                    /* inflate()'s initial strm.output */
+  var end;                    /* while out < end, enough space available */
+//#ifdef INFLATE_STRICT
+  var dmax;                   /* maximum distance from zlib header */
+//#endif
+  var wsize;                  /* window size or zero if not using window */
+  var whave;                  /* valid bytes in the window */
+  var wnext;                  /* window write index */
+  var window;                 /* allocated sliding window, if wsize != 0 */
+  var hold;                   /* local strm.hold */
+  var bits;                   /* local strm.bits */
+  var lcode;                  /* local strm.lencode */
+  var dcode;                  /* local strm.distcode */
+  var lmask;                  /* mask for first level of length codes */
+  var dmask;                  /* mask for first level of distance codes */
+  var here;                   /* retrieved table entry */
+  var op;                     /* code bits, operation, extra bits, or */
+                              /*  window position, window bytes to copy */
+  var len;                    /* match length, unused bytes */
+  var dist;                   /* match distance */
+  var from;                   /* where to copy match from */
+  var from_source;
+
+
+  var input, output; // JS specific, because we have no pointers
+
+  /* copy state to local variables */
+  state = strm.state;
+  //here = state.here;
+  _in = strm.next_in;
+  input = strm.input;
+  last = _in + (strm.avail_in - 5);
+  _out = strm.next_out;
+  output = strm.output;
+  beg = _out - (start - strm.avail_out);
+  end = _out + (strm.avail_out - 257);
+//#ifdef INFLATE_STRICT
+  dmax = state.dmax;
+//#endif
+  wsize = state.wsize;
+  whave = state.whave;
+  wnext = state.wnext;
+  window = state.window;
+  hold = state.hold;
+  bits = state.bits;
+  lcode = state.lencode;
+  dcode = state.distcode;
+  lmask = (1 << state.lenbits) - 1;
+  dmask = (1 << state.distbits) - 1;
+
+
+  /* decode literals and length/distances until end-of-block or not enough
+     input data or output space */
+
+  top:
+  do {
+    if (bits < 15) {
+      hold += input[_in++] << bits;
+      bits += 8;
+      hold += input[_in++] << bits;
+      bits += 8;
+    }
+
+    here = lcode[hold & lmask];
+
+    dolen:
+    for (;;) { // Goto emulation
+      op = here >>> 24/*here.bits*/;
+      hold >>>= op;
+      bits -= op;
+      op = (here >>> 16) & 0xff/*here.op*/;
+      if (op === 0) {                          /* literal */
+        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+        //        "inflate:         literal '%c'\n" :
+        //        "inflate:         literal 0x%02x\n", here.val));
+        output[_out++] = here & 0xffff/*here.val*/;
+      }
+      else if (op & 16) {                     /* length base */
+        len = here & 0xffff/*here.val*/;
+        op &= 15;                           /* number of extra bits */
+        if (op) {
+          if (bits < op) {
+            hold += input[_in++] << bits;
+            bits += 8;
+          }
+          len += hold & ((1 << op) - 1);
+          hold >>>= op;
+          bits -= op;
+        }
+        //Tracevv((stderr, "inflate:         length %u\n", len));
+        if (bits < 15) {
+          hold += input[_in++] << bits;
+          bits += 8;
+          hold += input[_in++] << bits;
+          bits += 8;
+        }
+        here = dcode[hold & dmask];
+
+        dodist:
+        for (;;) { // goto emulation
+          op = here >>> 24/*here.bits*/;
+          hold >>>= op;
+          bits -= op;
+          op = (here >>> 16) & 0xff/*here.op*/;
+
+          if (op & 16) {                      /* distance base */
+            dist = here & 0xffff/*here.val*/;
+            op &= 15;                       /* number of extra bits */
+            if (bits < op) {
+              hold += input[_in++] << bits;
+              bits += 8;
+              if (bits < op) {
+                hold += input[_in++] << bits;
+                bits += 8;
+              }
+            }
+            dist += hold & ((1 << op) - 1);
+//#ifdef INFLATE_STRICT
+            if (dist > dmax) {
+              strm.msg = 'invalid distance too far back';
+              state.mode = BAD;
+              break top;
+            }
+//#endif
+            hold >>>= op;
+            bits -= op;
+            //Tracevv((stderr, "inflate:         distance %u\n", dist));
+            op = _out - beg;                /* max distance in output */
+            if (dist > op) {                /* see if copy from window */
+              op = dist - op;               /* distance back in window */
+              if (op > whave) {
+                if (state.sane) {
+                  strm.msg = 'invalid distance too far back';
+                  state.mode = BAD;
+                  break top;
+                }
+
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//                if (len <= op - whave) {
+//                  do {
+//                    output[_out++] = 0;
+//                  } while (--len);
+//                  continue top;
+//                }
+//                len -= op - whave;
+//                do {
+//                  output[_out++] = 0;
+//                } while (--op > whave);
+//                if (op === 0) {
+//                  from = _out - dist;
+//                  do {
+//                    output[_out++] = output[from++];
+//                  } while (--len);
+//                  continue top;
+//                }
+//#endif
+              }
+              from = 0; // window index
+              from_source = window;
+              if (wnext === 0) {           /* very common case */
+                from += wsize - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              else if (wnext < op) {      /* wrap around window */
+                from += wsize + wnext - op;
+                op -= wnext;
+                if (op < len) {         /* some from end of window */
+                  len -= op;
+                  do {
+                    output[_out++] = window[from++];
+                  } while (--op);
+                  from = 0;
+                  if (wnext < len) {  /* some from start of window */
+                    op = wnext;
+                    len -= op;
+                    do {
+                      output[_out++] = window[from++];
+                    } while (--op);
+                    from = _out - dist;      /* rest from output */
+                    from_source = output;
+                  }
+                }
+              }
+              else {                      /* contiguous in window */
+                from += wnext - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              while (len > 2) {
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                len -= 3;
+              }
+              if (len) {
+                output[_out++] = from_source[from++];
+                if (len > 1) {
+                  output[_out++] = from_source[from++];
+                }
+              }
+            }
+            else {
+              from = _out - dist;          /* copy direct from output */
+              do {                        /* minimum length is three */
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                len -= 3;
+              } while (len > 2);
+              if (len) {
+                output[_out++] = output[from++];
+                if (len > 1) {
+                  output[_out++] = output[from++];
+                }
+              }
+            }
+          }
+          else if ((op & 64) === 0) {          /* 2nd level distance code */
+            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+            continue dodist;
+          }
+          else {
+            strm.msg = 'invalid distance code';
+            state.mode = BAD;
+            break top;
+          }
+
+          break; // need to emulate goto via "continue"
+        }
+      }
+      else if ((op & 64) === 0) {              /* 2nd level length code */
+        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+        continue dolen;
+      }
+      else if (op & 32) {                     /* end-of-block */
+        //Tracevv((stderr, "inflate:         end of block\n"));
+        state.mode = TYPE;
+        break top;
+      }
+      else {
+        strm.msg = 'invalid literal/length code';
+        state.mode = BAD;
+        break top;
+      }
+
+      break; // need to emulate goto via "continue"
+    }
+  } while (_in < last && _out < end);
+
+  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
+  len = bits >> 3;
+  _in -= len;
+  bits -= len << 3;
+  hold &= (1 << bits) - 1;
+
+  /* update state and return */
+  strm.next_in = _in;
+  strm.next_out = _out;
+  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
+  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
+  state.hold = hold;
+  state.bits = bits;
+  return;
+};
+
+},{}],35:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+var adler32 = _dereq_('./adler32');
+var crc32   = _dereq_('./crc32');
+var inflate_fast = _dereq_('./inffast');
+var inflate_table = _dereq_('./inftrees');
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+//var Z_NO_FLUSH      = 0;
+//var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+//var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+
+/* STATES ====================================================================*/
+/* ===========================================================================*/
+
+
+var    HEAD = 1;       /* i: waiting for magic header */
+var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
+var    TIME = 3;       /* i: waiting for modification time (gzip) */
+var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
+var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
+var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
+var    NAME = 7;       /* i: waiting for end of file name (gzip) */
+var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
+var    HCRC = 9;       /* i: waiting for header crc (gzip) */
+var    DICTID = 10;    /* i: waiting for dictionary check value */
+var    DICT = 11;      /* waiting for inflateSetDictionary() call */
+var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
+var        STORED = 14;    /* i: waiting for stored size (length and complement) */
+var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
+var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
+var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
+var        LENLENS = 18;   /* i: waiting for code length code lengths */
+var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
+var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
+var            LEN = 21;       /* i: waiting for length/lit/eob code */
+var            LENEXT = 22;    /* i: waiting for length extra bits */
+var            DIST = 23;      /* i: waiting for distance code */
+var            DISTEXT = 24;   /* i: waiting for distance extra bits */
+var            MATCH = 25;     /* o: waiting for output space to copy string */
+var            LIT = 26;       /* o: waiting for output space to write literal */
+var    CHECK = 27;     /* i: waiting for 32-bit check value */
+var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
+var    DONE = 29;      /* finished check, done -- remain here until reset */
+var    BAD = 30;       /* got a data error -- remain here until reset */
+var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
+var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */
+
+/* ===========================================================================*/
+
+
+
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);
+
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_WBITS = MAX_WBITS;
+
+
+function ZSWAP32(q) {
+  return  (((q >>> 24) & 0xff) +
+          ((q >>> 8) & 0xff00) +
+          ((q & 0xff00) << 8) +
+          ((q & 0xff) << 24));
+}
+
+
+function InflateState() {
+  this.mode = 0;             /* current inflate mode */
+  this.last = false;          /* true if processing last block */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.havedict = false;      /* true if dictionary provided */
+  this.flags = 0;             /* gzip header method and flags (0 if zlib) */
+  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
+  this.check = 0;             /* protected copy of check value */
+  this.total = 0;             /* protected copy of output count */
+  // TODO: may be {}
+  this.head = null;           /* where to save gzip header information */
+
+  /* sliding window */
+  this.wbits = 0;             /* log base 2 of requested window size */
+  this.wsize = 0;             /* window size or zero if not using window */
+  this.whave = 0;             /* valid bytes in the window */
+  this.wnext = 0;             /* window write index */
+  this.window = null;         /* allocated sliding window, if needed */
+
+  /* bit accumulator */
+  this.hold = 0;              /* input bit accumulator */
+  this.bits = 0;              /* number of bits in "in" */
+
+  /* for string and stored block copying */
+  this.length = 0;            /* literal or length of data to copy */
+  this.offset = 0;            /* distance back to copy string from */
+
+  /* for table and code decoding */
+  this.extra = 0;             /* extra bits needed */
+
+  /* fixed and dynamic code tables */
+  this.lencode = null;          /* starting table for length/literal codes */
+  this.distcode = null;         /* starting table for distance codes */
+  this.lenbits = 0;           /* index bits for lencode */
+  this.distbits = 0;          /* index bits for distcode */
+
+  /* dynamic table building */
+  this.ncode = 0;             /* number of code length code lengths */
+  this.nlen = 0;              /* number of length code lengths */
+  this.ndist = 0;             /* number of distance code lengths */
+  this.have = 0;              /* number of code lengths in lens[] */
+  this.next = null;              /* next available space in codes[] */
+
+  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
+  this.work = new utils.Buf16(288); /* work area for code table building */
+
+  /*
+   because we don't have pointers in js, we use lencode and distcode directly
+   as buffers so we don't need codes
+  */
+  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
+  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
+  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
+  this.sane = 0;                   /* if false, allow invalid distance too far */
+  this.back = 0;                   /* bits back of last unprocessed length/lit */
+  this.was = 0;                    /* initial length of match */
+}
+
+function inflateResetKeep(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  strm.total_in = strm.total_out = state.total = 0;
+  strm.msg = ''; /*Z_NULL*/
+  if (state.wrap) {       /* to support ill-conceived Java test suite */
+    strm.adler = state.wrap & 1;
+  }
+  state.mode = HEAD;
+  state.last = 0;
+  state.havedict = 0;
+  state.dmax = 32768;
+  state.head = null/*Z_NULL*/;
+  state.hold = 0;
+  state.bits = 0;
+  //state.lencode = state.distcode = state.next = state.codes;
+  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
+  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
+
+  state.sane = 1;
+  state.back = -1;
+  //Tracev((stderr, "inflate: reset\n"));
+  return Z_OK;
+}
+
+function inflateReset(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  state.wsize = 0;
+  state.whave = 0;
+  state.wnext = 0;
+  return inflateResetKeep(strm);
+
+}
+
+function inflateReset2(strm, windowBits) {
+  var wrap;
+  var state;
+
+  /* get the state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+
+  /* extract wrap request from windowBits parameter */
+  if (windowBits < 0) {
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+  else {
+    wrap = (windowBits >> 4) + 1;
+    if (windowBits < 48) {
+      windowBits &= 15;
+    }
+  }
+
+  /* set number of window bits, free window if different */
+  if (windowBits && (windowBits < 8 || windowBits > 15)) {
+    return Z_STREAM_ERROR;
+  }
+  if (state.window !== null && state.wbits !== windowBits) {
+    state.window = null;
+  }
+
+  /* update state and reset the rest of it */
+  state.wrap = wrap;
+  state.wbits = windowBits;
+  return inflateReset(strm);
+}
+
+function inflateInit2(strm, windowBits) {
+  var ret;
+  var state;
+
+  if (!strm) { return Z_STREAM_ERROR; }
+  //strm.msg = Z_NULL;                 /* in case we return an error */
+
+  state = new InflateState();
+
+  //if (state === Z_NULL) return Z_MEM_ERROR;
+  //Tracev((stderr, "inflate: allocated\n"));
+  strm.state = state;
+  state.window = null/*Z_NULL*/;
+  ret = inflateReset2(strm, windowBits);
+  if (ret !== Z_OK) {
+    strm.state = null/*Z_NULL*/;
+  }
+  return ret;
+}
+
+function inflateInit(strm) {
+  return inflateInit2(strm, DEF_WBITS);
+}
+
+
+/*
+ Return state with length and distance decoding tables and index sizes set to
+ fixed code decoding.  Normally this returns fixed tables from inffixed.h.
+ If BUILDFIXED is defined, then instead this routine builds the tables the
+ first time it's called, and returns those tables the first time and
+ thereafter.  This reduces the size of the code by about 2K bytes, in
+ exchange for a little execution time.  However, BUILDFIXED should not be
+ used for threaded applications, since the rewriting of the tables and virgin
+ may not be thread-safe.
+ */
+var virgin = true;
+
+var lenfix, distfix; // We have no pointers in JS, so keep tables separate
+
+function fixedtables(state) {
+  /* build fixed huffman tables if first call (may not be thread safe) */
+  if (virgin) {
+    var sym;
+
+    lenfix = new utils.Buf32(512);
+    distfix = new utils.Buf32(32);
+
+    /* literal/length table */
+    sym = 0;
+    while (sym < 144) { state.lens[sym++] = 8; }
+    while (sym < 256) { state.lens[sym++] = 9; }
+    while (sym < 280) { state.lens[sym++] = 7; }
+    while (sym < 288) { state.lens[sym++] = 8; }
+
+    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, {bits: 9});
+
+    /* distance table */
+    sym = 0;
+    while (sym < 32) { state.lens[sym++] = 5; }
+
+    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, {bits: 5});
+
+    /* do this just once */
+    virgin = false;
+  }
+
+  state.lencode = lenfix;
+  state.lenbits = 9;
+  state.distcode = distfix;
+  state.distbits = 5;
+}
+
+
+/*
+ Update the window with the last wsize (normally 32K) bytes written before
+ returning.  If window does not exist yet, create it.  This is only called
+ when a window is already in use, or when output has been written during this
+ inflate call, but the end of the deflate stream has not been reached yet.
+ It is also called to create a window for dictionary data when a dictionary
+ is loaded.
+
+ Providing output buffers larger than 32K to inflate() should provide a speed
+ advantage, since only the last 32K of output is copied to the sliding window
+ upon return from inflate(), and since all distances after the first 32K of
+ output will fall in the output data, making match copies simpler and faster.
+ The advantage may be dependent on the size of the processor's data caches.
+ */
+function updatewindow(strm, src, end, copy) {
+  var dist;
+  var state = strm.state;
+
+  /* if it hasn't been done already, allocate space for the window */
+  if (state.window === null) {
+    state.wsize = 1 << state.wbits;
+    state.wnext = 0;
+    state.whave = 0;
+
+    state.window = new utils.Buf8(state.wsize);
+  }
+
+  /* copy state->wsize or less output bytes into the circular window */
+  if (copy >= state.wsize) {
+    utils.arraySet(state.window,src, end - state.wsize, state.wsize, 0);
+    state.wnext = 0;
+    state.whave = state.wsize;
+  }
+  else {
+    dist = state.wsize - state.wnext;
+    if (dist > copy) {
+      dist = copy;
+    }
+    //zmemcpy(state->window + state->wnext, end - copy, dist);
+    utils.arraySet(state.window,src, end - copy, dist, state.wnext);
+    copy -= dist;
+    if (copy) {
+      //zmemcpy(state->window, end - copy, copy);
+      utils.arraySet(state.window,src, end - copy, copy, 0);
+      state.wnext = copy;
+      state.whave = state.wsize;
+    }
+    else {
+      state.wnext += dist;
+      if (state.wnext === state.wsize) { state.wnext = 0; }
+      if (state.whave < state.wsize) { state.whave += dist; }
+    }
+  }
+  return 0;
+}
+
+function inflate(strm, flush) {
+  var state;
+  var input, output;          // input/output buffers
+  var next;                   /* next input INDEX */
+  var put;                    /* next output INDEX */
+  var have, left;             /* available input and output */
+  var hold;                   /* bit buffer */
+  var bits;                   /* bits in bit buffer */
+  var _in, _out;              /* save starting available input and output */
+  var copy;                   /* number of stored or match bytes to copy */
+  var from;                   /* where to copy match bytes from */
+  var from_source;
+  var here = 0;               /* current decoding table entry */
+  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
+  //var last;                   /* parent table entry */
+  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
+  var len;                    /* length to copy for repeats, bits to drop */
+  var ret;                    /* return code */
+  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
+  var opts;
+
+  var n; // temporary var for NEED_BITS
+
+  var order = /* permutation of code lengths */
+    [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
+
+
+  if (!strm || !strm.state || !strm.output ||
+      (!strm.input && strm.avail_in !== 0)) {
+    return Z_STREAM_ERROR;
+  }
+
+  state = strm.state;
+  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */
+
+
+  //--- LOAD() ---
+  put = strm.next_out;
+  output = strm.output;
+  left = strm.avail_out;
+  next = strm.next_in;
+  input = strm.input;
+  have = strm.avail_in;
+  hold = state.hold;
+  bits = state.bits;
+  //---
+
+  _in = have;
+  _out = left;
+  ret = Z_OK;
+
+  inf_leave: // goto emulation
+  for (;;) {
+    switch (state.mode) {
+    case HEAD:
+      if (state.wrap === 0) {
+        state.mode = TYPEDO;
+        break;
+      }
+      //=== NEEDBITS(16);
+      while (bits < 16) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
+        state.check = 0/*crc32(0L, Z_NULL, 0)*/;
+        //=== CRC2(state.check, hold);
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        state.check = crc32(state.check, hbuf, 2, 0);
+        //===//
+
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = FLAGS;
+        break;
+      }
+      state.flags = 0;           /* expect zlib header */
+      if (state.head) {
+        state.head.done = false;
+      }
+      if (!(state.wrap & 1) ||   /* check if zlib header allowed */
+        (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
+        strm.msg = 'incorrect header check';
+        state.mode = BAD;
+        break;
+      }
+      if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
+        strm.msg = 'unknown compression method';
+        state.mode = BAD;
+        break;
+      }
+      //--- DROPBITS(4) ---//
+      hold >>>= 4;
+      bits -= 4;
+      //---//
+      len = (hold & 0x0f)/*BITS(4)*/ + 8;
+      if (state.wbits === 0) {
+        state.wbits = len;
+      }
+      else if (len > state.wbits) {
+        strm.msg = 'invalid window size';
+        state.mode = BAD;
+        break;
+      }
+      state.dmax = 1 << len;
+      //Tracev((stderr, "inflate:   zlib header ok\n"));
+      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+      state.mode = hold & 0x200 ? DICTID : TYPE;
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      break;
+    case FLAGS:
+      //=== NEEDBITS(16); */
+      while (bits < 16) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      state.flags = hold;
+      if ((state.flags & 0xff) !== Z_DEFLATED) {
+        strm.msg = 'unknown compression method';
+        state.mode = BAD;
+        break;
+      }
+      if (state.flags & 0xe000) {
+        strm.msg = 'unknown header flags set';
+        state.mode = BAD;
+        break;
+      }
+      if (state.head) {
+        state.head.text = ((hold >> 8) & 1);
+      }
+      if (state.flags & 0x0200) {
+        //=== CRC2(state.check, hold);
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        state.check = crc32(state.check, hbuf, 2, 0);
+        //===//
+      }
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = TIME;
+      /* falls through */
+    case TIME:
+      //=== NEEDBITS(32); */
+      while (bits < 32) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if (state.head) {
+        state.head.time = hold;
+      }
+      if (state.flags & 0x0200) {
+        //=== CRC4(state.check, hold)
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        hbuf[2] = (hold >>> 16) & 0xff;
+        hbuf[3] = (hold >>> 24) & 0xff;
+        state.check = crc32(state.check, hbuf, 4, 0);
+        //===
+      }
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = OS;
+      /* falls through */
+    case OS:
+      //=== NEEDBITS(16); */
+      while (bits < 16) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if (state.head) {
+        state.head.xflags = (hold & 0xff);
+        state.head.os = (hold >> 8);
+      }
+      if (state.flags & 0x0200) {
+        //=== CRC2(state.check, hold);
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        state.check = crc32(state.check, hbuf, 2, 0);
+        //===//
+      }
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = EXLEN;
+      /* falls through */
+    case EXLEN:
+      if (state.flags & 0x0400) {
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.length = hold;
+        if (state.head) {
+          state.head.extra_len = hold;
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+      }
+      else if (state.head) {
+        state.head.extra = null/*Z_NULL*/;
+      }
+      state.mode = EXTRA;
+      /* falls through */
+    case EXTRA:
+      if (state.flags & 0x0400) {
+        copy = state.length;
+        if (copy > have) { copy = have; }
+        if (copy) {
+          if (state.head) {
+            len = state.head.extra_len - state.length;
+            if (!state.head.extra) {
+              // Use untyped array for more conveniend processing later
+              state.head.extra = new Array(state.head.extra_len);
+            }
+            utils.arraySet(
+              state.head.extra,
+              input,
+              next,
+              // extra field is limited to 65536 bytes
+              // - no need for additional size check
+              copy,
+              /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
+              len
+            );
+            //zmemcpy(state.head.extra + len, next,
+            //        len + copy > state.head.extra_max ?
+            //        state.head.extra_max - len : copy);
+          }
+          if (state.flags & 0x0200) {
+            state.check = crc32(state.check, input, copy, next);
+          }
+          have -= copy;
+          next += copy;
+          state.length -= copy;
+        }
+        if (state.length) { break inf_leave; }
+      }
+      state.length = 0;
+      state.mode = NAME;
+      /* falls through */
+    case NAME:
+      if (state.flags & 0x0800) {
+        if (have === 0) { break inf_leave; }
+        copy = 0;
+        do {
+          // TODO: 2 or 1 bytes?
+          len = input[next + copy++];
+          /* use constant limit because in js we should not preallocate memory */
+          if (state.head && len &&
+              (state.length < 65536 /*state.head.name_max*/)) {
+            state.head.name += String.fromCharCode(len);
+          }
+        } while (len && copy < have);
+
+        if (state.flags & 0x0200) {
+          state.check = crc32(state.check, input, copy, next);
+        }
+        have -= copy;
+        next += copy;
+        if (len) { break inf_leave; }
+      }
+      else if (state.head) {
+        state.head.name = null;
+      }
+      state.length = 0;
+      state.mode = COMMENT;
+      /* falls through */
+    case COMMENT:
+      if (state.flags & 0x1000) {
+        if (have === 0) { break inf_leave; }
+        copy = 0;
+        do {
+          len = input[next + copy++];
+          /* use constant limit because in js we should not preallocate memory */
+          if (state.head && len &&
+              (state.length < 65536 /*state.head.comm_max*/)) {
+            state.head.comment += String.fromCharCode(len);
+          }
+        } while (len && copy < have);
+        if (state.flags & 0x0200) {
+          state.check = crc32(state.check, input, copy, next);
+        }
+        have -= copy;
+        next += copy;
+        if (len) { break inf_leave; }
+      }
+      else if (state.head) {
+        state.head.comment = null;
+      }
+      state.mode = HCRC;
+      /* falls through */
+    case HCRC:
+      if (state.flags & 0x0200) {
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (hold !== (state.check & 0xffff)) {
+          strm.msg = 'header crc mismatch';
+          state.mode = BAD;
+          break;
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+      }
+      if (state.head) {
+        state.head.hcrc = ((state.flags >> 9) & 1);
+        state.head.done = true;
+      }
+      strm.adler = state.check = 0 /*crc32(0L, Z_NULL, 0)*/;
+      state.mode = TYPE;
+      break;
+    case DICTID:
+      //=== NEEDBITS(32); */
+      while (bits < 32) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      strm.adler = state.check = ZSWAP32(hold);
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = DICT;
+      /* falls through */
+    case DICT:
+      if (state.havedict === 0) {
+        //--- RESTORE() ---
+        strm.next_out = put;
+        strm.avail_out = left;
+        strm.next_in = next;
+        strm.avail_in = have;
+        state.hold = hold;
+        state.bits = bits;
+        //---
+        return Z_NEED_DICT;
+      }
+      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+      state.mode = TYPE;
+      /* falls through */
+    case TYPE:
+      if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
+      /* falls through */
+    case TYPEDO:
+      if (state.last) {
+        //--- BYTEBITS() ---//
+        hold >>>= bits & 7;
+        bits -= bits & 7;
+        //---//
+        state.mode = CHECK;
+        break;
+      }
+      //=== NEEDBITS(3); */
+      while (bits < 3) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      state.last = (hold & 0x01)/*BITS(1)*/;
+      //--- DROPBITS(1) ---//
+      hold >>>= 1;
+      bits -= 1;
+      //---//
+
+      switch ((hold & 0x03)/*BITS(2)*/) {
+      case 0:                             /* stored block */
+        //Tracev((stderr, "inflate:     stored block%s\n",
+        //        state.last ? " (last)" : ""));
+        state.mode = STORED;
+        break;
+      case 1:                             /* fixed block */
+        fixedtables(state);
+        //Tracev((stderr, "inflate:     fixed codes block%s\n",
+        //        state.last ? " (last)" : ""));
+        state.mode = LEN_;             /* decode codes */
+        if (flush === Z_TREES) {
+          //--- DROPBITS(2) ---//
+          hold >>>= 2;
+          bits -= 2;
+          //---//
+          break inf_leave;
+        }
+        break;
+      case 2:                             /* dynamic block */
+        //Tracev((stderr, "inflate:     dynamic codes block%s\n",
+        //        state.last ? " (last)" : ""));
+        state.mode = TABLE;
+        break;
+      case 3:
+        strm.msg = 'invalid block type';
+        state.mode = BAD;
+      }
+      //--- DROPBITS(2) ---//
+      hold >>>= 2;
+      bits -= 2;
+      //---//
+      break;
+    case STORED:
+      //--- BYTEBITS() ---// /* go to byte boundary */
+      hold >>>= bits & 7;
+      bits -= bits & 7;
+      //---//
+      //=== NEEDBITS(32); */
+      while (bits < 32) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
+        strm.msg = 'invalid stored block lengths';
+        state.mode = BAD;
+        break;
+      }
+      state.length = hold & 0xffff;
+      //Tracev((stderr, "inflate:       stored length %u\n",
+      //        state.length));
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = COPY_;
+      if (flush === Z_TREES) { break inf_leave; }
+      /* falls through */
+    case COPY_:
+      state.mode = COPY;
+      /* falls through */
+    case COPY:
+      copy = state.length;
+      if (copy) {
+        if (copy > have) { copy = have; }
+        if (copy > left) { copy = left; }
+        if (copy === 0) { break inf_leave; }
+        //--- zmemcpy(put, next, copy); ---
+        utils.arraySet(output, input, next, copy, put);
+        //---//
+        have -= copy;
+        next += copy;
+        left -= copy;
+        put += copy;
+        state.length -= copy;
+        break;
+      }
+      //Tracev((stderr, "inflate:       stored end\n"));
+      state.mode = TYPE;
+      break;
+    case TABLE:
+      //=== NEEDBITS(14); */
+      while (bits < 14) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
+      //--- DROPBITS(5) ---//
+      hold >>>= 5;
+      bits -= 5;
+      //---//
+      state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
+      //--- DROPBITS(5) ---//
+      hold >>>= 5;
+      bits -= 5;
+      //---//
+      state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
+      //--- DROPBITS(4) ---//
+      hold >>>= 4;
+      bits -= 4;
+      //---//
+//#ifndef PKZIP_BUG_WORKAROUND
+      if (state.nlen > 286 || state.ndist > 30) {
+        strm.msg = 'too many length or distance symbols';
+        state.mode = BAD;
+        break;
+      }
+//#endif
+      //Tracev((stderr, "inflate:       table sizes ok\n"));
+      state.have = 0;
+      state.mode = LENLENS;
+      /* falls through */
+    case LENLENS:
+      while (state.have < state.ncode) {
+        //=== NEEDBITS(3);
+        while (bits < 3) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
+        //--- DROPBITS(3) ---//
+        hold >>>= 3;
+        bits -= 3;
+        //---//
+      }
+      while (state.have < 19) {
+        state.lens[order[state.have++]] = 0;
+      }
+      // We have separate tables & no pointers. 2 commented lines below not needed.
+      //state.next = state.codes;
+      //state.lencode = state.next;
+      // Switch to use dynamic table
+      state.lencode = state.lendyn;
+      state.lenbits = 7;
+
+      opts = {bits: state.lenbits};
+      ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
+      state.lenbits = opts.bits;
+
+      if (ret) {
+        strm.msg = 'invalid code lengths set';
+        state.mode = BAD;
+        break;
+      }
+      //Tracev((stderr, "inflate:       code lengths ok\n"));
+      state.have = 0;
+      state.mode = CODELENS;
+      /* falls through */
+    case CODELENS:
+      while (state.have < state.nlen + state.ndist) {
+        for (;;) {
+          here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        if (here_val < 16) {
+          //--- DROPBITS(here.bits) ---//
+          hold >>>= here_bits;
+          bits -= here_bits;
+          //---//
+          state.lens[state.have++] = here_val;
+        }
+        else {
+          if (here_val === 16) {
+            //=== NEEDBITS(here.bits + 2);
+            n = here_bits + 2;
+            while (bits < n) {
+              if (have === 0) { break inf_leave; }
+              have--;
+              hold += input[next++] << bits;
+              bits += 8;
+            }
+            //===//
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            if (state.have === 0) {
+              strm.msg = 'invalid bit length repeat';
+              state.mode = BAD;
+              break;
+            }
+            len = state.lens[state.have - 1];
+            copy = 3 + (hold & 0x03);//BITS(2);
+            //--- DROPBITS(2) ---//
+            hold >>>= 2;
+            bits -= 2;
+            //---//
+          }
+          else if (here_val === 17) {
+            //=== NEEDBITS(here.bits + 3);
+            n = here_bits + 3;
+            while (bits < n) {
+              if (have === 0) { break inf_leave; }
+              have--;
+              hold += input[next++] << bits;
+              bits += 8;
+            }
+            //===//
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            len = 0;
+            copy = 3 + (hold & 0x07);//BITS(3);
+            //--- DROPBITS(3) ---//
+            hold >>>= 3;
+            bits -= 3;
+            //---//
+          }
+          else {
+            //=== NEEDBITS(here.bits + 7);
+            n = here_bits + 7;
+            while (bits < n) {
+              if (have === 0) { break inf_leave; }
+              have--;
+              hold += input[next++] << bits;
+              bits += 8;
+            }
+            //===//
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            len = 0;
+            copy = 11 + (hold & 0x7f);//BITS(7);
+            //--- DROPBITS(7) ---//
+            hold >>>= 7;
+            bits -= 7;
+            //---//
+          }
+          if (state.have + copy > state.nlen + state.ndist) {
+            strm.msg = 'invalid bit length repeat';
+            state.mode = BAD;
+            break;
+          }
+          while (copy--) {
+            state.lens[state.have++] = len;
+          }
+        }
+      }
+
+      /* handle error breaks in while */
+      if (state.mode === BAD) { break; }
+
+      /* check for end-of-block code (better have one) */
+      if (state.lens[256] === 0) {
+        strm.msg = 'invalid code -- missing end-of-block';
+        state.mode = BAD;
+        break;
+      }
+
+      /* build code tables -- note: do not change the lenbits or distbits
+         values here (9 and 6) without reading the comments in inftrees.h
+         concerning the ENOUGH constants, which depend on those values */
+      state.lenbits = 9;
+
+      opts = {bits: state.lenbits};
+      ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
+      // We have separate tables & no pointers. 2 commented lines below not needed.
+      // state.next_index = opts.table_index;
+      state.lenbits = opts.bits;
+      // state.lencode = state.next;
+
+      if (ret) {
+        strm.msg = 'invalid literal/lengths set';
+        state.mode = BAD;
+        break;
+      }
+
+      state.distbits = 6;
+      //state.distcode.copy(state.codes);
+      // Switch to use dynamic table
+      state.distcode = state.distdyn;
+      opts = {bits: state.distbits};
+      ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
+      // We have separate tables & no pointers. 2 commented lines below not needed.
+      // state.next_index = opts.table_index;
+      state.distbits = opts.bits;
+      // state.distcode = state.next;
+
+      if (ret) {
+        strm.msg = 'invalid distances set';
+        state.mode = BAD;
+        break;
+      }
+      //Tracev((stderr, 'inflate:       codes ok\n'));
+      state.mode = LEN_;
+      if (flush === Z_TREES) { break inf_leave; }
+      /* falls through */
+    case LEN_:
+      state.mode = LEN;
+      /* falls through */
+    case LEN:
+      if (have >= 6 && left >= 258) {
+        //--- RESTORE() ---
+        strm.next_out = put;
+        strm.avail_out = left;
+        strm.next_in = next;
+        strm.avail_in = have;
+        state.hold = hold;
+        state.bits = bits;
+        //---
+        inflate_fast(strm, _out);
+        //--- LOAD() ---
+        put = strm.next_out;
+        output = strm.output;
+        left = strm.avail_out;
+        next = strm.next_in;
+        input = strm.input;
+        have = strm.avail_in;
+        hold = state.hold;
+        bits = state.bits;
+        //---
+
+        if (state.mode === TYPE) {
+          state.back = -1;
+        }
+        break;
+      }
+      state.back = 0;
+      for (;;) {
+        here = state.lencode[hold & ((1 << state.lenbits) -1)];  /*BITS(state.lenbits)*/
+        here_bits = here >>> 24;
+        here_op = (here >>> 16) & 0xff;
+        here_val = here & 0xffff;
+
+        if (here_bits <= bits) { break; }
+        //--- PULLBYTE() ---//
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+        //---//
+      }
+      if (here_op && (here_op & 0xf0) === 0) {
+        last_bits = here_bits;
+        last_op = here_op;
+        last_val = here_val;
+        for (;;) {
+          here = state.lencode[last_val +
+                  ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((last_bits + here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        //--- DROPBITS(last.bits) ---//
+        hold >>>= last_bits;
+        bits -= last_bits;
+        //---//
+        state.back += last_bits;
+      }
+      //--- DROPBITS(here.bits) ---//
+      hold >>>= here_bits;
+      bits -= here_bits;
+      //---//
+      state.back += here_bits;
+      state.length = here_val;
+      if (here_op === 0) {
+        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+        //        "inflate:         literal '%c'\n" :
+        //        "inflate:         literal 0x%02x\n", here.val));
+        state.mode = LIT;
+        break;
+      }
+      if (here_op & 32) {
+        //Tracevv((stderr, "inflate:         end of block\n"));
+        state.back = -1;
+        state.mode = TYPE;
+        break;
+      }
+      if (here_op & 64) {
+        strm.msg = 'invalid literal/length code';
+        state.mode = BAD;
+        break;
+      }
+      state.extra = here_op & 15;
+      state.mode = LENEXT;
+      /* falls through */
+    case LENEXT:
+      if (state.extra) {
+        //=== NEEDBITS(state.extra);
+        n = state.extra;
+        while (bits < n) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.length += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;
+        //--- DROPBITS(state.extra) ---//
+        hold >>>= state.extra;
+        bits -= state.extra;
+        //---//
+        state.back += state.extra;
+      }
+      //Tracevv((stderr, "inflate:         length %u\n", state.length));
+      state.was = state.length;
+      state.mode = DIST;
+      /* falls through */
+    case DIST:
+      for (;;) {
+        here = state.distcode[hold & ((1 << state.distbits) -1)];/*BITS(state.distbits)*/
+        here_bits = here >>> 24;
+        here_op = (here >>> 16) & 0xff;
+        here_val = here & 0xffff;
+
+        if ((here_bits) <= bits) { break; }
+        //--- PULLBYTE() ---//
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+        //---//
+      }
+      if ((here_op & 0xf0) === 0) {
+        last_bits = here_bits;
+        last_op = here_op;
+        last_val = here_val;
+        for (;;) {
+          here = state.distcode[last_val +
+                  ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((last_bits + here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        //--- DROPBITS(last.bits) ---//
+        hold >>>= last_bits;
+        bits -= last_bits;
+        //---//
+        state.back += last_bits;
+      }
+      //--- DROPBITS(here.bits) ---//
+      hold >>>= here_bits;
+      bits -= here_bits;
+      //---//
+      state.back += here_bits;
+      if (here_op & 64) {
+        strm.msg = 'invalid distance code';
+        state.mode = BAD;
+        break;
+      }
+      state.offset = here_val;
+      state.extra = (here_op) & 15;
+      state.mode = DISTEXT;
+      /* falls through */
+    case DISTEXT:
+      if (state.extra) {
+        //=== NEEDBITS(state.extra);
+        n = state.extra;
+        while (bits < n) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.offset += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;
+        //--- DROPBITS(state.extra) ---//
+        hold >>>= state.extra;
+        bits -= state.extra;
+        //---//
+        state.back += state.extra;
+      }
+//#ifdef INFLATE_STRICT
+      if (state.offset > state.dmax) {
+        strm.msg = 'invalid distance too far back';
+        state.mode = BAD;
+        break;
+      }
+//#endif
+      //Tracevv((stderr, "inflate:         distance %u\n", state.offset));
+      state.mode = MATCH;
+      /* falls through */
+    case MATCH:
+      if (left === 0) { break inf_leave; }
+      copy = _out - left;
+      if (state.offset > copy) {         /* copy from window */
+        copy = state.offset - copy;
+        if (copy > state.whave) {
+          if (state.sane) {
+            strm.msg = 'invalid distance too far back';
+            state.mode = BAD;
+            break;
+          }
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//          Trace((stderr, "inflate.c too far\n"));
+//          copy -= state.whave;
+//          if (copy > state.length) { copy = state.length; }
+//          if (copy > left) { copy = left; }
+//          left -= copy;
+//          state.length -= copy;
+//          do {
+//            output[put++] = 0;
+//          } while (--copy);
+//          if (state.length === 0) { state.mode = LEN; }
+//          break;
+//#endif
+        }
+        if (copy > state.wnext) {
+          copy -= state.wnext;
+          from = state.wsize - copy;
+        }
+        else {
+          from = state.wnext - copy;
+        }
+        if (copy > state.length) { copy = state.length; }
+        from_source = state.window;
+      }
+      else {                              /* copy from output */
+        from_source = output;
+        from = put - state.offset;
+        copy = state.length;
+      }
+      if (copy > left) { copy = left; }
+      left -= copy;
+      state.length -= copy;
+      do {
+        output[put++] = from_source[from++];
+      } while (--copy);
+      if (state.length === 0) { state.mode = LEN; }
+      break;
+    case LIT:
+      if (left === 0) { break inf_leave; }
+      output[put++] = state.length;
+      left--;
+      state.mode = LEN;
+      break;
+    case CHECK:
+      if (state.wrap) {
+        //=== NEEDBITS(32);
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          // Use '|' insdead of '+' to make sure that result is signed
+          hold |= input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        _out -= left;
+        strm.total_out += _out;
+        state.total += _out;
+        if (_out) {
+          strm.adler = state.check =
+              /*UPDATE(state.check, put - _out, _out);*/
+              (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));
+
+        }
+        _out = left;
+        // NB: crc32 stored as signed 32-bit int, ZSWAP32 returns signed too
+        if ((state.flags ? hold : ZSWAP32(hold)) !== state.check) {
+          strm.msg = 'incorrect data check';
+          state.mode = BAD;
+          break;
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        //Tracev((stderr, "inflate:   check matches trailer\n"));
+      }
+      state.mode = LENGTH;
+      /* falls through */
+    case LENGTH:
+      if (state.wrap && state.flags) {
+        //=== NEEDBITS(32);
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (hold !== (state.total & 0xffffffff)) {
+          strm.msg = 'incorrect length check';
+          state.mode = BAD;
+          break;
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        //Tracev((stderr, "inflate:   length matches trailer\n"));
+      }
+      state.mode = DONE;
+      /* falls through */
+    case DONE:
+      ret = Z_STREAM_END;
+      break inf_leave;
+    case BAD:
+      ret = Z_DATA_ERROR;
+      break inf_leave;
+    case MEM:
+      return Z_MEM_ERROR;
+    case SYNC:
+      /* falls through */
+    default:
+      return Z_STREAM_ERROR;
+    }
+  }
+
+  // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
+
+  /*
+     Return from inflate(), updating the total counts and the check value.
+     If there was no progress during the inflate() call, return a buffer
+     error.  Call updatewindow() to create and/or update the window state.
+     Note: a memory error from inflate() is non-recoverable.
+   */
+
+  //--- RESTORE() ---
+  strm.next_out = put;
+  strm.avail_out = left;
+  strm.next_in = next;
+  strm.avail_in = have;
+  state.hold = hold;
+  state.bits = bits;
+  //---
+
+  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
+                      (state.mode < CHECK || flush !== Z_FINISH))) {
+    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
+      state.mode = MEM;
+      return Z_MEM_ERROR;
+    }
+  }
+  _in -= strm.avail_in;
+  _out -= strm.avail_out;
+  strm.total_in += _in;
+  strm.total_out += _out;
+  state.total += _out;
+  if (state.wrap && _out) {
+    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
+      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
+  }
+  strm.data_type = state.bits + (state.last ? 64 : 0) +
+                    (state.mode === TYPE ? 128 : 0) +
+                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
+  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
+    ret = Z_BUF_ERROR;
+  }
+  return ret;
+}
+
+function inflateEnd(strm) {
+
+  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  var state = strm.state;
+  if (state.window) {
+    state.window = null;
+  }
+  strm.state = null;
+  return Z_OK;
+}
+
+function inflateGetHeader(strm, head) {
+  var state;
+
+  /* check state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }
+
+  /* save header structure */
+  state.head = head;
+  head.done = false;
+  return Z_OK;
+}
+
+
+exports.inflateReset = inflateReset;
+exports.inflateReset2 = inflateReset2;
+exports.inflateResetKeep = inflateResetKeep;
+exports.inflateInit = inflateInit;
+exports.inflateInit2 = inflateInit2;
+exports.inflate = inflate;
+exports.inflateEnd = inflateEnd;
+exports.inflateGetHeader = inflateGetHeader;
+exports.inflateInfo = 'pako inflate (from Nodeca project)';
+
+/* Not implemented
+exports.inflateCopy = inflateCopy;
+exports.inflateGetDictionary = inflateGetDictionary;
+exports.inflateMark = inflateMark;
+exports.inflatePrime = inflatePrime;
+exports.inflateSetDictionary = inflateSetDictionary;
+exports.inflateSync = inflateSync;
+exports.inflateSyncPoint = inflateSyncPoint;
+exports.inflateUndermine = inflateUndermine;
+*/
+},{"../utils/common":27,"./adler32":29,"./crc32":31,"./inffast":34,"./inftrees":36}],36:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+
+var MAXBITS = 15;
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+var lbase = [ /* Length codes 257..285 base */
+  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
+  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
+];
+
+var lext = [ /* Length codes 257..285 extra */
+  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
+  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
+];
+
+var dbase = [ /* Distance codes 0..29 base */
+  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
+  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
+  8193, 12289, 16385, 24577, 0, 0
+];
+
+var dext = [ /* Distance codes 0..29 extra */
+  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
+  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
+  28, 28, 29, 29, 64, 64
+];
+
+module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
+{
+  var bits = opts.bits;
+      //here = opts.here; /* table entry for duplication */
+
+  var len = 0;               /* a code's length in bits */
+  var sym = 0;               /* index of code symbols */
+  var min = 0, max = 0;          /* minimum and maximum code lengths */
+  var root = 0;              /* number of index bits for root table */
+  var curr = 0;              /* number of index bits for current table */
+  var drop = 0;              /* code bits to drop for sub-table */
+  var left = 0;                   /* number of prefix codes available */
+  var used = 0;              /* code entries in table used */
+  var huff = 0;              /* Huffman code */
+  var incr;              /* for incrementing code, index */
+  var fill;              /* index for replicating entries */
+  var low;               /* low bits for current root entry */
+  var mask;              /* mask for low root bits */
+  var next;             /* next available space in table */
+  var base = null;     /* base value table to use */
+  var base_index = 0;
+//  var shoextra;    /* extra bits table to use */
+  var end;                    /* use base and extra for symbol > end */
+  var count = new utils.Buf16(MAXBITS+1); //[MAXBITS+1];    /* number of codes of each length */
+  var offs = new utils.Buf16(MAXBITS+1); //[MAXBITS+1];     /* offsets in table for each length */
+  var extra = null;
+  var extra_index = 0;
+
+  var here_bits, here_op, here_val;
+
+  /*
+   Process a set of code lengths to create a canonical Huffman code.  The
+   code lengths are lens[0..codes-1].  Each length corresponds to the
+   symbols 0..codes-1.  The Huffman code is generated by first sorting the
+   symbols by length from short to long, and retaining the symbol order
+   for codes with equal lengths.  Then the code starts with all zero bits
+   for the first code of the shortest length, and the codes are integer
+   increments for the same length, and zeros are appended as the length
+   increases.  For the deflate format, these bits are stored backwards
+   from their more natural integer increment ordering, and so when the
+   decoding tables are built in the large loop below, the integer codes
+   are incremented backwards.
+
+   This routine assumes, but does not check, that all of the entries in
+   lens[] are in the range 0..MAXBITS.  The caller must assure this.
+   1..MAXBITS is interpreted as that code length.  zero means that that
+   symbol does not occur in this code.
+
+   The codes are sorted by computing a count of codes for each length,
+   creating from that a table of starting indices for each length in the
+   sorted table, and then entering the symbols in order in the sorted
+   table.  The sorted table is work[], with that space being provided by
+   the caller.
+
+   The length counts are used for other purposes as well, i.e. finding
+   the minimum and maximum length codes, determining if there are any
+   codes at all, checking for a valid set of lengths, and looking ahead
+   at length counts to determine sub-table sizes when building the
+   decoding tables.
+   */
+
+  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
+  for (len = 0; len <= MAXBITS; len++) {
+    count[len] = 0;
+  }
+  for (sym = 0; sym < codes; sym++) {
+    count[lens[lens_index + sym]]++;
+  }
+
+  /* bound code lengths, force root to be within code lengths */
+  root = bits;
+  for (max = MAXBITS; max >= 1; max--) {
+    if (count[max] !== 0) { break; }
+  }
+  if (root > max) {
+    root = max;
+  }
+  if (max === 0) {                     /* no symbols to code at all */
+    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
+    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
+    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+
+    //table.op[opts.table_index] = 64;
+    //table.bits[opts.table_index] = 1;
+    //table.val[opts.table_index++] = 0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+    opts.bits = 1;
+    return 0;     /* no symbols, but wait for decoding to report error */
+  }
+  for (min = 1; min < max; min++) {
+    if (count[min] !== 0) { break; }
+  }
+  if (root < min) {
+    root = min;
+  }
+
+  /* check for an over-subscribed or incomplete set of lengths */
+  left = 1;
+  for (len = 1; len <= MAXBITS; len++) {
+    left <<= 1;
+    left -= count[len];
+    if (left < 0) {
+      return -1;
+    }        /* over-subscribed */
+  }
+  if (left > 0 && (type === CODES || max !== 1)) {
+    return -1;                      /* incomplete set */
+  }
+
+  /* generate offsets into symbol table for each length for sorting */
+  offs[1] = 0;
+  for (len = 1; len < MAXBITS; len++) {
+    offs[len + 1] = offs[len] + count[len];
+  }
+
+  /* sort symbols by length, by symbol order within each length */
+  for (sym = 0; sym < codes; sym++) {
+    if (lens[lens_index + sym] !== 0) {
+      work[offs[lens[lens_index + sym]]++] = sym;
+    }
+  }
+
+  /*
+   Create and fill in decoding tables.  In this loop, the table being
+   filled is at next and has curr index bits.  The code being used is huff
+   with length len.  That code is converted to an index by dropping drop
+   bits off of the bottom.  For codes where len is less than drop + curr,
+   those top drop + curr - len bits are incremented through all values to
+   fill the table with replicated entries.
+
+   root is the number of index bits for the root table.  When len exceeds
+   root, sub-tables are created pointed to by the root entry with an index
+   of the low root bits of huff.  This is saved in low to check for when a
+   new sub-table should be started.  drop is zero when the root table is
+   being filled, and drop is root when sub-tables are being filled.
+
+   When a new sub-table is needed, it is necessary to look ahead in the
+   code lengths to determine what size sub-table is needed.  The length
+   counts are used for this, and so count[] is decremented as codes are
+   entered in the tables.
+
+   used keeps track of how many table entries have been allocated from the
+   provided *table space.  It is checked for LENS and DIST tables against
+   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
+   the initial root table size constants.  See the comments in inftrees.h
+   for more information.
+
+   sym increments through all symbols, and the loop terminates when
+   all codes of length max, i.e. all codes, have been processed.  This
+   routine permits incomplete codes, so another loop after this one fills
+   in the rest of the decoding tables with invalid code markers.
+   */
+
+  /* set up for code type */
+  // poor man optimization - use if-else instead of switch,
+  // to avoid deopts in old v8
+  if (type === CODES) {
+      base = extra = work;    /* dummy value--not used */
+      end = 19;
+  } else if (type === LENS) {
+      base = lbase;
+      base_index -= 257;
+      extra = lext;
+      extra_index -= 257;
+      end = 256;
+  } else {                    /* DISTS */
+      base = dbase;
+      extra = dext;
+      end = -1;
+  }
+
+  /* initialize opts for loop */
+  huff = 0;                   /* starting code */
+  sym = 0;                    /* starting code symbol */
+  len = min;                  /* starting code length */
+  next = table_index;              /* current table to fill in */
+  curr = root;                /* current table index bits */
+  drop = 0;                   /* current bits to drop from code for index */
+  low = -1;                   /* trigger new sub-table when len > root */
+  used = 1 << root;          /* use root table entries */
+  mask = used - 1;            /* mask for comparing low */
+
+  /* check available table space */
+  if ((type === LENS && used > ENOUGH_LENS) ||
+    (type === DISTS && used > ENOUGH_DISTS)) {
+    return 1;
+  }
+
+  var i=0;
+  /* process all codes and make table entries */
+  for (;;) {
+    i++;
+    /* create table entry */
+    here_bits = len - drop;
+    if (work[sym] < end) {
+      here_op = 0;
+      here_val = work[sym];
+    }
+    else if (work[sym] > end) {
+      here_op = extra[extra_index + work[sym]];
+      here_val = base[base_index + work[sym]];
+    }
+    else {
+      here_op = 32 + 64;         /* end of block */
+      here_val = 0;
+    }
+
+    /* replicate for those indices with low len bits equal to huff */
+    incr = 1 << (len - drop);
+    fill = 1 << curr;
+    min = fill;                 /* save offset to next table */
+    do {
+      fill -= incr;
+      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
+    } while (fill !== 0);
+
+    /* backwards increment the len-bit code huff */
+    incr = 1 << (len - 1);
+    while (huff & incr) {
+      incr >>= 1;
+    }
+    if (incr !== 0) {
+      huff &= incr - 1;
+      huff += incr;
+    } else {
+      huff = 0;
+    }
+
+    /* go to next symbol, update count, len */
+    sym++;
+    if (--count[len] === 0) {
+      if (len === max) { break; }
+      len = lens[lens_index + work[sym]];
+    }
+
+    /* create new sub-table if needed */
+    if (len > root && (huff & mask) !== low) {
+      /* if first time, transition to sub-tables */
+      if (drop === 0) {
+        drop = root;
+      }
+
+      /* increment past last table */
+      next += min;            /* here min is 1 << curr */
+
+      /* determine length of next table */
+      curr = len - drop;
+      left = 1 << curr;
+      while (curr + drop < max) {
+        left -= count[curr + drop];
+        if (left <= 0) { break; }
+        curr++;
+        left <<= 1;
+      }
+
+      /* check for enough space */
+      used += 1 << curr;
+      if ((type === LENS && used > ENOUGH_LENS) ||
+        (type === DISTS && used > ENOUGH_DISTS)) {
+        return 1;
+      }
+
+      /* point entry in root table to sub-table */
+      low = huff & mask;
+      /*table.op[low] = curr;
+      table.bits[low] = root;
+      table.val[low] = next - opts.table_index;*/
+      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
+    }
+  }
+
+  /* fill in remaining table entry if code is incomplete (guaranteed to have
+   at most one remaining entry, since if the code is incomplete, the
+   maximum code length that was allowed to get this far is one bit) */
+  if (huff !== 0) {
+    //table.op[next + huff] = 64;            /* invalid code marker */
+    //table.bits[next + huff] = len - drop;
+    //table.val[next + huff] = 0;
+    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
+  }
+
+  /* set return parameters */
+  //opts.table_index += used;
+  opts.bits = root;
+  return 0;
+};
+
+},{"../utils/common":27}],37:[function(_dereq_,module,exports){
+'use strict';
+
+module.exports = {
+  '2':    'need dictionary',     /* Z_NEED_DICT       2  */
+  '1':    'stream end',          /* Z_STREAM_END      1  */
+  '0':    '',                    /* Z_OK              0  */
+  '-1':   'file error',          /* Z_ERRNO         (-1) */
+  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */
+  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */
+  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */
+  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */
+  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */
+};
+},{}],38:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+//var Z_FILTERED          = 1;
+//var Z_HUFFMAN_ONLY      = 2;
+//var Z_RLE               = 3;
+var Z_FIXED               = 4;
+//var Z_DEFAULT_STRATEGY  = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+var Z_BINARY              = 0;
+var Z_TEXT                = 1;
+//var Z_ASCII             = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+/*============================================================================*/
+
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+// From zutil.h
+
+var STORED_BLOCK = 0;
+var STATIC_TREES = 1;
+var DYN_TREES    = 2;
+/* The three kinds of block type */
+
+var MIN_MATCH    = 3;
+var MAX_MATCH    = 258;
+/* The minimum and maximum match lengths */
+
+// From deflate.h
+/* ===========================================================================
+ * Internal compression state.
+ */
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+
+var D_CODES       = 30;
+/* number of distance codes */
+
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+
+var HEAP_SIZE     = 2*L_CODES + 1;
+/* maximum heap size */
+
+var MAX_BITS      = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var Buf_size      = 16;
+/* size of bit buffer in bi_buf */
+
+
+/* ===========================================================================
+ * Constants
+ */
+
+var MAX_BL_BITS = 7;
+/* Bit length codes must not exceed MAX_BL_BITS bits */
+
+var END_BLOCK   = 256;
+/* end of block literal code */
+
+var REP_3_6     = 16;
+/* repeat previous bit length 3-6 times (2 bits of repeat count) */
+
+var REPZ_3_10   = 17;
+/* repeat a zero length 3-10 times  (3 bits of repeat count) */
+
+var REPZ_11_138 = 18;
+/* repeat a zero length 11-138 times  (7 bits of repeat count) */
+
+var extra_lbits =   /* extra bits for each length code */
+  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];
+
+var extra_dbits =   /* extra bits for each distance code */
+  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];
+
+var extra_blbits =  /* extra bits for each bit length code */
+  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];
+
+var bl_order =
+  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
+/* The lengths of the bit length codes are sent in order of decreasing
+ * probability, to avoid transmitting the lengths for unused bit length codes.
+ */
+
+/* ===========================================================================
+ * Local data. These are initialized only once.
+ */
+
+// We pre-fill arrays with 0 to avoid uninitialized gaps
+
+var DIST_CODE_LEN = 512; /* see definition of array dist_code below */
+
+// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1
+var static_ltree  = new Array((L_CODES+2) * 2);
+zero(static_ltree);
+/* The static literal tree. Since the bit lengths are imposed, there is no
+ * need for the L_CODES extra codes used during heap construction. However
+ * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
+ * below).
+ */
+
+var static_dtree  = new Array(D_CODES * 2);
+zero(static_dtree);
+/* The static distance tree. (Actually a trivial tree since all codes use
+ * 5 bits.)
+ */
+
+var _dist_code    = new Array(DIST_CODE_LEN);
+zero(_dist_code);
+/* Distance codes. The first 256 values correspond to the distances
+ * 3 .. 258, the last 256 values correspond to the top 8 bits of
+ * the 15 bit distances.
+ */
+
+var _length_code  = new Array(MAX_MATCH-MIN_MATCH+1);
+zero(_length_code);
+/* length code for each normalized match length (0 == MIN_MATCH) */
+
+var base_length   = new Array(LENGTH_CODES);
+zero(base_length);
+/* First normalized length for each code (0 = MIN_MATCH) */
+
+var base_dist     = new Array(D_CODES);
+zero(base_dist);
+/* First normalized distance for each code (0 = distance of 1) */
+
+
+var StaticTreeDesc = function (static_tree, extra_bits, extra_base, elems, max_length) {
+
+  this.static_tree  = static_tree;  /* static tree or NULL */
+  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
+  this.extra_base   = extra_base;   /* base index for extra_bits */
+  this.elems        = elems;        /* max number of elements in the tree */
+  this.max_length   = max_length;   /* max bit length for the codes */
+
+  // show if `static_tree` has data or dummy - needed for monomorphic objects
+  this.has_stree    = static_tree && static_tree.length;
+};
+
+
+var static_l_desc;
+var static_d_desc;
+var static_bl_desc;
+
+
+var TreeDesc = function(dyn_tree, stat_desc) {
+  this.dyn_tree = dyn_tree;     /* the dynamic tree */
+  this.max_code = 0;            /* largest code with non zero frequency */
+  this.stat_desc = stat_desc;   /* the corresponding static tree */
+};
+
+
+
+function d_code(dist) {
+  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
+}
+
+
+/* ===========================================================================
+ * Output a short LSB first on the stream.
+ * IN assertion: there is enough room in pendingBuf.
+ */
+function put_short (s, w) {
+//    put_byte(s, (uch)((w) & 0xff));
+//    put_byte(s, (uch)((ush)(w) >> 8));
+  s.pending_buf[s.pending++] = (w) & 0xff;
+  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
+}
+
+
+/* ===========================================================================
+ * Send a value on a given number of bits.
+ * IN assertion: length <= 16 and value fits in length bits.
+ */
+function send_bits(s, value, length) {
+  if (s.bi_valid > (Buf_size - length)) {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    put_short(s, s.bi_buf);
+    s.bi_buf = value >> (Buf_size - s.bi_valid);
+    s.bi_valid += length - Buf_size;
+  } else {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    s.bi_valid += length;
+  }
+}
+
+
+function send_code(s, c, tree) {
+  send_bits(s, tree[c*2]/*.Code*/, tree[c*2 + 1]/*.Len*/);
+}
+
+
+/* ===========================================================================
+ * Reverse the first len bits of a code, using straightforward code (a faster
+ * method would use a table)
+ * IN assertion: 1 <= len <= 15
+ */
+function bi_reverse(code, len) {
+  var res = 0;
+  do {
+    res |= code & 1;
+    code >>>= 1;
+    res <<= 1;
+  } while (--len > 0);
+  return res >>> 1;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer, keeping at most 7 bits in it.
+ */
+function bi_flush(s) {
+  if (s.bi_valid === 16) {
+    put_short(s, s.bi_buf);
+    s.bi_buf = 0;
+    s.bi_valid = 0;
+
+  } else if (s.bi_valid >= 8) {
+    s.pending_buf[s.pending++] = s.bi_buf & 0xff;
+    s.bi_buf >>= 8;
+    s.bi_valid -= 8;
+  }
+}
+
+
+/* ===========================================================================
+ * Compute the optimal bit lengths for a tree and update the total bit length
+ * for the current block.
+ * IN assertion: the fields freq and dad are set, heap[heap_max] and
+ *    above are the tree nodes sorted by increasing frequency.
+ * OUT assertions: the field len is set to the optimal bit length, the
+ *     array bl_count contains the frequencies for each bit length.
+ *     The length opt_len is updated; static_len is also updated if stree is
+ *     not null.
+ */
+function gen_bitlen(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc;    /* the tree descriptor */
+{
+  var tree            = desc.dyn_tree;
+  var max_code        = desc.max_code;
+  var stree           = desc.stat_desc.static_tree;
+  var has_stree       = desc.stat_desc.has_stree;
+  var extra           = desc.stat_desc.extra_bits;
+  var base            = desc.stat_desc.extra_base;
+  var max_length      = desc.stat_desc.max_length;
+  var h;              /* heap index */
+  var n, m;           /* iterate over the tree elements */
+  var bits;           /* bit length */
+  var xbits;          /* extra bits */
+  var f;              /* frequency */
+  var overflow = 0;   /* number of elements with bit length too large */
+
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    s.bl_count[bits] = 0;
+  }
+
+  /* In a first pass, compute the optimal bit lengths (which may
+   * overflow in the case of the bit length tree).
+   */
+  tree[s.heap[s.heap_max]*2 + 1]/*.Len*/ = 0; /* root of the heap */
+
+  for (h = s.heap_max+1; h < HEAP_SIZE; h++) {
+    n = s.heap[h];
+    bits = tree[tree[n*2 +1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
+    if (bits > max_length) {
+      bits = max_length;
+      overflow++;
+    }
+    tree[n*2 + 1]/*.Len*/ = bits;
+    /* We overwrite tree[n].Dad which is no longer needed */
+
+    if (n > max_code) { continue; } /* not a leaf node */
+
+    s.bl_count[bits]++;
+    xbits = 0;
+    if (n >= base) {
+      xbits = extra[n-base];
+    }
+    f = tree[n * 2]/*.Freq*/;
+    s.opt_len += f * (bits + xbits);
+    if (has_stree) {
+      s.static_len += f * (stree[n*2 + 1]/*.Len*/ + xbits);
+    }
+  }
+  if (overflow === 0) { return; }
+
+  // Trace((stderr,"\nbit length overflow\n"));
+  /* This happens for example on obj2 and pic of the Calgary corpus */
+
+  /* Find the first bit length which could increase: */
+  do {
+    bits = max_length-1;
+    while (s.bl_count[bits] === 0) { bits--; }
+    s.bl_count[bits]--;      /* move one leaf down the tree */
+    s.bl_count[bits+1] += 2; /* move one overflow item as its brother */
+    s.bl_count[max_length]--;
+    /* The brother of the overflow item also moves one step up,
+     * but this does not affect bl_count[max_length]
+     */
+    overflow -= 2;
+  } while (overflow > 0);
+
+  /* Now recompute all bit lengths, scanning in increasing frequency.
+   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
+   * lengths instead of fixing only the wrong ones. This idea is taken
+   * from 'ar' written by Haruhiko Okumura.)
+   */
+  for (bits = max_length; bits !== 0; bits--) {
+    n = s.bl_count[bits];
+    while (n !== 0) {
+      m = s.heap[--h];
+      if (m > max_code) { continue; }
+      if (tree[m*2 + 1]/*.Len*/ !== bits) {
+        // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
+        s.opt_len += (bits - tree[m*2 + 1]/*.Len*/)*tree[m*2]/*.Freq*/;
+        tree[m*2 + 1]/*.Len*/ = bits;
+      }
+      n--;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Generate the codes for a given tree and bit counts (which need not be
+ * optimal).
+ * IN assertion: the array bl_count contains the bit length statistics for
+ * the given tree and the field len is set for all tree elements.
+ * OUT assertion: the field code is set for all tree elements of non
+ *     zero code length.
+ */
+function gen_codes(tree, max_code, bl_count)
+//    ct_data *tree;             /* the tree to decorate */
+//    int max_code;              /* largest code with non zero frequency */
+//    ushf *bl_count;            /* number of codes at each bit length */
+{
+  var next_code = new Array(MAX_BITS+1); /* next code value for each bit length */
+  var code = 0;              /* running code value */
+  var bits;                  /* bit index */
+  var n;                     /* code index */
+
+  /* The distribution counts are first used to generate the code values
+   * without bit reversal.
+   */
+  for (bits = 1; bits <= MAX_BITS; bits++) {
+    next_code[bits] = code = (code + bl_count[bits-1]) << 1;
+  }
+  /* Check that the bit counts in bl_count are consistent. The last code
+   * must be all ones.
+   */
+  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
+  //        "inconsistent bit counts");
+  //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
+
+  for (n = 0;  n <= max_code; n++) {
+    var len = tree[n*2 + 1]/*.Len*/;
+    if (len === 0) { continue; }
+    /* Now reverse the bits */
+    tree[n*2]/*.Code*/ = bi_reverse(next_code[len]++, len);
+
+    //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
+    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
+  }
+}
+
+
+/* ===========================================================================
+ * Initialize the various 'constant' tables.
+ */
+function tr_static_init() {
+  var n;        /* iterates over tree elements */
+  var bits;     /* bit counter */
+  var length;   /* length value */
+  var code;     /* code value */
+  var dist;     /* distance index */
+  var bl_count = new Array(MAX_BITS+1);
+  /* number of codes at each bit length for an optimal tree */
+
+  // do check in _tr_init()
+  //if (static_init_done) return;
+
+  /* For some embedded targets, global variables are not initialized: */
+/*#ifdef NO_INIT_GLOBAL_POINTERS
+  static_l_desc.static_tree = static_ltree;
+  static_l_desc.extra_bits = extra_lbits;
+  static_d_desc.static_tree = static_dtree;
+  static_d_desc.extra_bits = extra_dbits;
+  static_bl_desc.extra_bits = extra_blbits;
+#endif*/
+
+  /* Initialize the mapping length (0..255) -> length code (0..28) */
+  length = 0;
+  for (code = 0; code < LENGTH_CODES-1; code++) {
+    base_length[code] = length;
+    for (n = 0; n < (1<<extra_lbits[code]); n++) {
+      _length_code[length++] = code;
+    }
+  }
+  //Assert (length == 256, "tr_static_init: length != 256");
+  /* Note that the length 255 (match length 258) can be represented
+   * in two different ways: code 284 + 5 bits or code 285, so we
+   * overwrite length_code[255] to use the best encoding:
+   */
+  _length_code[length-1] = code;
+
+  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
+  dist = 0;
+  for (code = 0 ; code < 16; code++) {
+    base_dist[code] = dist;
+    for (n = 0; n < (1<<extra_dbits[code]); n++) {
+      _dist_code[dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: dist != 256");
+  dist >>= 7; /* from now on, all distances are divided by 128 */
+  for ( ; code < D_CODES; code++) {
+    base_dist[code] = dist << 7;
+    for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
+      _dist_code[256 + dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: 256+dist != 512");
+
+  /* Construct the codes of the static literal tree */
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    bl_count[bits] = 0;
+  }
+
+  n = 0;
+  while (n <= 143) {
+    static_ltree[n*2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  while (n <= 255) {
+    static_ltree[n*2 + 1]/*.Len*/ = 9;
+    n++;
+    bl_count[9]++;
+  }
+  while (n <= 279) {
+    static_ltree[n*2 + 1]/*.Len*/ = 7;
+    n++;
+    bl_count[7]++;
+  }
+  while (n <= 287) {
+    static_ltree[n*2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  /* Codes 286 and 287 do not exist, but we must include them in the
+   * tree construction to get a canonical Huffman tree (longest code
+   * all ones)
+   */
+  gen_codes(static_ltree, L_CODES+1, bl_count);
+
+  /* The static distance tree is trivial: */
+  for (n = 0; n < D_CODES; n++) {
+    static_dtree[n*2 + 1]/*.Len*/ = 5;
+    static_dtree[n*2]/*.Code*/ = bi_reverse(n, 5);
+  }
+
+  // Now data ready and we can init static trees
+  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS);
+  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
+  static_bl_desc =new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);
+
+  //static_init_done = true;
+}
+
+
+/* ===========================================================================
+ * Initialize a new block.
+ */
+function init_block(s) {
+  var n; /* iterates over tree elements */
+
+  /* Initialize the trees. */
+  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n*2]/*.Freq*/ = 0; }
+  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n*2]/*.Freq*/ = 0; }
+  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n*2]/*.Freq*/ = 0; }
+
+  s.dyn_ltree[END_BLOCK*2]/*.Freq*/ = 1;
+  s.opt_len = s.static_len = 0;
+  s.last_lit = s.matches = 0;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer and align the output on a byte boundary
+ */
+function bi_windup(s)
+{
+  if (s.bi_valid > 8) {
+    put_short(s, s.bi_buf);
+  } else if (s.bi_valid > 0) {
+    //put_byte(s, (Byte)s->bi_buf);
+    s.pending_buf[s.pending++] = s.bi_buf;
+  }
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+}
+
+/* ===========================================================================
+ * Copy a stored block, storing first the length and its
+ * one's complement if requested.
+ */
+function copy_block(s, buf, len, header)
+//DeflateState *s;
+//charf    *buf;    /* the input data */
+//unsigned len;     /* its length */
+//int      header;  /* true if block header must be written */
+{
+  bi_windup(s);        /* align on byte boundary */
+
+  if (header) {
+    put_short(s, len);
+    put_short(s, ~len);
+  }
+//  while (len--) {
+//    put_byte(s, *buf++);
+//  }
+  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
+  s.pending += len;
+}
+
+/* ===========================================================================
+ * Compares to subtrees, using the tree depth as tie breaker when
+ * the subtrees have equal frequency. This minimizes the worst case length.
+ */
+function smaller(tree, n, m, depth) {
+  var _n2 = n*2;
+  var _m2 = m*2;
+  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
+         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
+}
+
+/* ===========================================================================
+ * Restore the heap property by moving down the tree starting at node k,
+ * exchanging a node with the smallest of its two sons if necessary, stopping
+ * when the heap property is re-established (each father smaller than its
+ * two sons).
+ */
+function pqdownheap(s, tree, k)
+//    deflate_state *s;
+//    ct_data *tree;  /* the tree to restore */
+//    int k;               /* node to move down */
+{
+  var v = s.heap[k];
+  var j = k << 1;  /* left son of k */
+  while (j <= s.heap_len) {
+    /* Set j to the smallest of the two sons: */
+    if (j < s.heap_len &&
+      smaller(tree, s.heap[j+1], s.heap[j], s.depth)) {
+      j++;
+    }
+    /* Exit if v is smaller than both sons */
+    if (smaller(tree, v, s.heap[j], s.depth)) { break; }
+
+    /* Exchange v with the smallest son */
+    s.heap[k] = s.heap[j];
+    k = j;
+
+    /* And continue down the tree, setting j to the left son of k */
+    j <<= 1;
+  }
+  s.heap[k] = v;
+}
+
+
+// inlined manually
+// var SMALLEST = 1;
+
+/* ===========================================================================
+ * Send the block data compressed using the given Huffman trees
+ */
+function compress_block(s, ltree, dtree)
+//    deflate_state *s;
+//    const ct_data *ltree; /* literal tree */
+//    const ct_data *dtree; /* distance tree */
+{
+  var dist;           /* distance of matched string */
+  var lc;             /* match length or unmatched char (if dist == 0) */
+  var lx = 0;         /* running index in l_buf */
+  var code;           /* the code to send */
+  var extra;          /* number of extra bits to send */
+
+  if (s.last_lit !== 0) {
+    do {
+      dist = (s.pending_buf[s.d_buf + lx*2] << 8) | (s.pending_buf[s.d_buf + lx*2 + 1]);
+      lc = s.pending_buf[s.l_buf + lx];
+      lx++;
+
+      if (dist === 0) {
+        send_code(s, lc, ltree); /* send a literal byte */
+        //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
+      } else {
+        /* Here, lc is the match length - MIN_MATCH */
+        code = _length_code[lc];
+        send_code(s, code+LITERALS+1, ltree); /* send the length code */
+        extra = extra_lbits[code];
+        if (extra !== 0) {
+          lc -= base_length[code];
+          send_bits(s, lc, extra);       /* send the extra length bits */
+        }
+        dist--; /* dist is now the match distance - 1 */
+        code = d_code(dist);
+        //Assert (code < D_CODES, "bad d_code");
+
+        send_code(s, code, dtree);       /* send the distance code */
+        extra = extra_dbits[code];
+        if (extra !== 0) {
+          dist -= base_dist[code];
+          send_bits(s, dist, extra);   /* send the extra distance bits */
+        }
+      } /* literal or match pair ? */
+
+      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
+      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
+      //       "pendingBuf overflow");
+
+    } while (lx < s.last_lit);
+  }
+
+  send_code(s, END_BLOCK, ltree);
+}
+
+
+/* ===========================================================================
+ * Construct one Huffman tree and assigns the code bit strings and lengths.
+ * Update the total bit length for the current block.
+ * IN assertion: the field freq is set for all tree elements.
+ * OUT assertions: the fields len and code are set to the optimal bit length
+ *     and corresponding code. The length opt_len is updated; static_len is
+ *     also updated if stree is not null. The field max_code is set.
+ */
+function build_tree(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc; /* the tree descriptor */
+{
+  var tree     = desc.dyn_tree;
+  var stree    = desc.stat_desc.static_tree;
+  var has_stree = desc.stat_desc.has_stree;
+  var elems    = desc.stat_desc.elems;
+  var n, m;          /* iterate over heap elements */
+  var max_code = -1; /* largest code with non zero frequency */
+  var node;          /* new node being created */
+
+  /* Construct the initial heap, with least frequent element in
+   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
+   * heap[0] is not used.
+   */
+  s.heap_len = 0;
+  s.heap_max = HEAP_SIZE;
+
+  for (n = 0; n < elems; n++) {
+    if (tree[n * 2]/*.Freq*/ !== 0) {
+      s.heap[++s.heap_len] = max_code = n;
+      s.depth[n] = 0;
+
+    } else {
+      tree[n*2 + 1]/*.Len*/ = 0;
+    }
+  }
+
+  /* The pkzip format requires that at least one distance code exists,
+   * and that at least one bit should be sent even if there is only one
+   * possible code. So to avoid special checks later on we force at least
+   * two codes of non zero frequency.
+   */
+  while (s.heap_len < 2) {
+    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
+    tree[node * 2]/*.Freq*/ = 1;
+    s.depth[node] = 0;
+    s.opt_len--;
+
+    if (has_stree) {
+      s.static_len -= stree[node*2 + 1]/*.Len*/;
+    }
+    /* node is 0 or 1 so it does not have extra bits */
+  }
+  desc.max_code = max_code;
+
+  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
+   * establish sub-heaps of increasing lengths:
+   */
+  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
+
+  /* Construct the Huffman tree by repeatedly combining the least two
+   * frequent nodes.
+   */
+  node = elems;              /* next internal node of the tree */
+  do {
+    //pqremove(s, tree, n);  /* n = node of least frequency */
+    /*** pqremove ***/
+    n = s.heap[1/*SMALLEST*/];
+    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+    /***/
+
+    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
+
+    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
+    s.heap[--s.heap_max] = m;
+
+    /* Create a new node father of n and m */
+    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
+    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
+    tree[n*2 + 1]/*.Dad*/ = tree[m*2 + 1]/*.Dad*/ = node;
+
+    /* and insert the new node in the heap */
+    s.heap[1/*SMALLEST*/] = node++;
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+
+  } while (s.heap_len >= 2);
+
+  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
+
+  /* At this point, the fields freq and dad are set. We can now
+   * generate the bit lengths.
+   */
+  gen_bitlen(s, desc);
+
+  /* The field len is now set, we can generate the bit codes */
+  gen_codes(tree, max_code, s.bl_count);
+}
+
+
+/* ===========================================================================
+ * Scan a literal or distance tree to determine the frequencies of the codes
+ * in the bit length tree.
+ */
+function scan_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree;   /* the tree to be scanned */
+//    int max_code;    /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+  tree[(max_code+1)*2 + 1]/*.Len*/ = 0xffff; /* guard */
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n+1)*2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      s.bl_tree[curlen * 2]/*.Freq*/ += count;
+
+    } else if (curlen !== 0) {
+
+      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
+      s.bl_tree[REP_3_6*2]/*.Freq*/++;
+
+    } else if (count <= 10) {
+      s.bl_tree[REPZ_3_10*2]/*.Freq*/++;
+
+    } else {
+      s.bl_tree[REPZ_11_138*2]/*.Freq*/++;
+    }
+
+    count = 0;
+    prevlen = curlen;
+
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Send a literal or distance tree in compressed form, using the codes in
+ * bl_tree.
+ */
+function send_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree; /* the tree to be scanned */
+//    int max_code;       /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  /* tree[max_code+1].Len = -1; */  /* guard already set */
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n+1)*2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
+
+    } else if (curlen !== 0) {
+      if (curlen !== prevlen) {
+        send_code(s, curlen, s.bl_tree);
+        count--;
+      }
+      //Assert(count >= 3 && count <= 6, " 3_6?");
+      send_code(s, REP_3_6, s.bl_tree);
+      send_bits(s, count-3, 2);
+
+    } else if (count <= 10) {
+      send_code(s, REPZ_3_10, s.bl_tree);
+      send_bits(s, count-3, 3);
+
+    } else {
+      send_code(s, REPZ_11_138, s.bl_tree);
+      send_bits(s, count-11, 7);
+    }
+
+    count = 0;
+    prevlen = curlen;
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Construct the Huffman tree for the bit lengths and return the index in
+ * bl_order of the last bit length code to send.
+ */
+function build_bl_tree(s) {
+  var max_blindex;  /* index of last bit length code of non zero freq */
+
+  /* Determine the bit length frequencies for literal and distance trees */
+  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
+  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
+
+  /* Build the bit length tree: */
+  build_tree(s, s.bl_desc);
+  /* opt_len now includes the length of the tree representations, except
+   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
+   */
+
+  /* Determine the number of bit length codes to send. The pkzip format
+   * requires that at least 4 bit length codes be sent. (appnote.txt says
+   * 3 but the actual value used is 4.)
+   */
+  for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {
+    if (s.bl_tree[bl_order[max_blindex]*2 + 1]/*.Len*/ !== 0) {
+      break;
+    }
+  }
+  /* Update opt_len to include the bit length tree and counts */
+  s.opt_len += 3*(max_blindex+1) + 5+5+4;
+  //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
+  //        s->opt_len, s->static_len));
+
+  return max_blindex;
+}
+
+
+/* ===========================================================================
+ * Send the header for a block using dynamic Huffman trees: the counts, the
+ * lengths of the bit length codes, the literal tree and the distance tree.
+ * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
+ */
+function send_all_trees(s, lcodes, dcodes, blcodes)
+//    deflate_state *s;
+//    int lcodes, dcodes, blcodes; /* number of codes for each tree */
+{
+  var rank;                    /* index in bl_order */
+
+  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
+  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
+  //        "too many codes");
+  //Tracev((stderr, "\nbl counts: "));
+  send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
+  send_bits(s, dcodes-1,   5);
+  send_bits(s, blcodes-4,  4); /* not -3 as stated in appnote.txt */
+  for (rank = 0; rank < blcodes; rank++) {
+    //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
+    send_bits(s, s.bl_tree[bl_order[rank]*2 + 1]/*.Len*/, 3);
+  }
+  //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_ltree, lcodes-1); /* literal tree */
+  //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_dtree, dcodes-1); /* distance tree */
+  //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
+}
+
+
+/* ===========================================================================
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
+ * - TEXT if the two conditions below are satisfied:
+ *    a) There are no non-portable control characters belonging to the
+ *       "black list" (0..6, 14..25, 28..31).
+ *    b) There is at least one printable character belonging to the
+ *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * - BINARY otherwise.
+ * - The following partially-portable control characters form a
+ *   "gray list" that is ignored in this detection algorithm:
+ *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
+ * IN assertion: the fields Freq of dyn_ltree are set.
+ */
+function detect_data_type(s) {
+  /* black_mask is the bit mask of black-listed bytes
+   * set bits 0..6, 14..25, and 28..31
+   * 0xf3ffc07f = binary 11110011111111111100000001111111
+   */
+  var black_mask = 0xf3ffc07f;
+  var n;
+
+  /* Check for non-textual ("black-listed") bytes. */
+  for (n = 0; n <= 31; n++, black_mask >>>= 1) {
+    if ((black_mask & 1) && (s.dyn_ltree[n*2]/*.Freq*/ !== 0)) {
+      return Z_BINARY;
+    }
+  }
+
+  /* Check for textual ("white-listed") bytes. */
+  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
+      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
+    return Z_TEXT;
+  }
+  for (n = 32; n < LITERALS; n++) {
+    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
+      return Z_TEXT;
+    }
+  }
+
+  /* There are no "black-listed" or "white-listed" bytes:
+   * this stream either is empty or has tolerated ("gray-listed") bytes only.
+   */
+  return Z_BINARY;
+}
+
+
+var static_init_done = false;
+
+/* ===========================================================================
+ * Initialize the tree data structures for a new zlib stream.
+ */
+function _tr_init(s)
+{
+
+  if (!static_init_done) {
+    tr_static_init();
+    static_init_done = true;
+  }
+
+  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
+  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
+  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
+
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+
+  /* Initialize the first block of the first file: */
+  init_block(s);
+}
+
+
+/* ===========================================================================
+ * Send a stored block
+ */
+function _tr_stored_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  send_bits(s, (STORED_BLOCK<<1)+(last ? 1 : 0), 3);    /* send block type */
+  copy_block(s, buf, stored_len, true); /* with header */
+}
+
+
+/* ===========================================================================
+ * Send one empty static block to give enough lookahead for inflate.
+ * This takes 10 bits, of which 7 may remain in the bit buffer.
+ */
+function _tr_align(s) {
+  send_bits(s, STATIC_TREES<<1, 3);
+  send_code(s, END_BLOCK, static_ltree);
+  bi_flush(s);
+}
+
+
+/* ===========================================================================
+ * Determine the best encoding for the current block: dynamic trees, static
+ * trees or store, and output the encoded block to the zip file.
+ */
+function _tr_flush_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block, or NULL if too old */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
+  var max_blindex = 0;        /* index of last bit length code of non zero freq */
+
+  /* Build the Huffman trees unless a stored block is forced */
+  if (s.level > 0) {
+
+    /* Check if the file is binary or text */
+    if (s.strm.data_type === Z_UNKNOWN) {
+      s.strm.data_type = detect_data_type(s);
+    }
+
+    /* Construct the literal and distance trees */
+    build_tree(s, s.l_desc);
+    // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+
+    build_tree(s, s.d_desc);
+    // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+    /* At this point, opt_len and static_len are the total bit lengths of
+     * the compressed block data, excluding the tree representations.
+     */
+
+    /* Build the bit length tree for the above two trees, and get the index
+     * in bl_order of the last bit length code to send.
+     */
+    max_blindex = build_bl_tree(s);
+
+    /* Determine the best encoding. Compute the block lengths in bytes. */
+    opt_lenb = (s.opt_len+3+7) >>> 3;
+    static_lenb = (s.static_len+3+7) >>> 3;
+
+    // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
+    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
+    //        s->last_lit));
+
+    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
+
+  } else {
+    // Assert(buf != (char*)0, "lost buf");
+    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
+  }
+
+  if ((stored_len+4 <= opt_lenb) && (buf !== -1)) {
+    /* 4: two words for the lengths */
+
+    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
+     * Otherwise we can't have processed more than WSIZE input bytes since
+     * the last block flush, because compression would have been
+     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
+     * transform a block into a stored block.
+     */
+    _tr_stored_block(s, buf, stored_len, last);
+
+  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
+
+    send_bits(s, (STATIC_TREES<<1) + (last ? 1 : 0), 3);
+    compress_block(s, static_ltree, static_dtree);
+
+  } else {
+    send_bits(s, (DYN_TREES<<1) + (last ? 1 : 0), 3);
+    send_all_trees(s, s.l_desc.max_code+1, s.d_desc.max_code+1, max_blindex+1);
+    compress_block(s, s.dyn_ltree, s.dyn_dtree);
+  }
+  // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
+  /* The above check is made mod 2^32, for files larger than 512 MB
+   * and uLong implemented on 32 bits.
+   */
+  init_block(s);
+
+  if (last) {
+    bi_windup(s);
+  }
+  // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
+  //       s->compressed_len-7*last));
+}
+
+/* ===========================================================================
+ * Save the match info and tally the frequency counts. Return true if
+ * the current block must be flushed.
+ */
+function _tr_tally(s, dist, lc)
+//    deflate_state *s;
+//    unsigned dist;  /* distance of matched string */
+//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
+{
+  //var out_length, in_length, dcode;
+
+  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
+  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;
+
+  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
+  s.last_lit++;
+
+  if (dist === 0) {
+    /* lc is the unmatched char */
+    s.dyn_ltree[lc*2]/*.Freq*/++;
+  } else {
+    s.matches++;
+    /* Here, lc is the match length - MIN_MATCH */
+    dist--;             /* dist = match distance - 1 */
+    //Assert((ush)dist < (ush)MAX_DIST(s) &&
+    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
+    //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
+
+    s.dyn_ltree[(_length_code[lc]+LITERALS+1) * 2]/*.Freq*/++;
+    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
+  }
+
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+
+//#ifdef TRUNCATE_BLOCK
+//  /* Try to guess if it is profitable to stop the current block here */
+//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
+//    /* Compute an upper bound for the compressed length */
+//    out_length = s.last_lit*8;
+//    in_length = s.strstart - s.block_start;
+//
+//    for (dcode = 0; dcode < D_CODES; dcode++) {
+//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
+//    }
+//    out_length >>>= 3;
+//    //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
+//    //       s->last_lit, in_length, out_length,
+//    //       100L - out_length*100L/in_length));
+//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
+//      return true;
+//    }
+//  }
+//#endif
+
+  return (s.last_lit === s.lit_bufsize-1);
+  /* We avoid equality with lit_bufsize because of wraparound at 64K
+   * on 16 bit machines and because stored blocks are restricted to
+   * 64K-1 bytes.
+   */
+}
+
+exports._tr_init  = _tr_init;
+exports._tr_stored_block = _tr_stored_block;
+exports._tr_flush_block  = _tr_flush_block;
+exports._tr_tally = _tr_tally;
+exports._tr_align = _tr_align;
+},{"../utils/common":27}],39:[function(_dereq_,module,exports){
+'use strict';
+
+
+function ZStream() {
+  /* next input byte */
+  this.input = null; // JS specific, because we have no pointers
+  this.next_in = 0;
+  /* number of bytes available at input */
+  this.avail_in = 0;
+  /* total number of input bytes read so far */
+  this.total_in = 0;
+  /* next output byte should be put there */
+  this.output = null; // JS specific, because we have no pointers
+  this.next_out = 0;
+  /* remaining free space at output */
+  this.avail_out = 0;
+  /* total number of bytes output so far */
+  this.total_out = 0;
+  /* last error message, NULL if no error */
+  this.msg = ''/*Z_NULL*/;
+  /* not visible by applications */
+  this.state = null;
+  /* best guess about the data type: binary or text */
+  this.data_type = 2/*Z_UNKNOWN*/;
+  /* adler32 value of the uncompressed data */
+  this.adler = 0;
+}
+
+module.exports = ZStream;
+},{}]},{},[9])
+(9)
+});
+
+/*! pdfmake v0.1.36, @license MIT, @link http://pdfmake.org */
+(function webpackUniversalModuleDefinition(root, factory) {
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory();
+	else if(typeof define === 'function' && define.amd)
+		define([], factory);
+	else {
+		var a = factory();
+		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
+	}
+})(typeof self !== 'undefined' ? self : this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, {
+/******/ 				configurable: false,
+/******/ 				enumerable: true,
+/******/ 				get: getter
+/******/ 			});
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 122);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+function isString(variable) {
+	return typeof variable === 'string' || variable instanceof String;
+}
+
+function isNumber(variable) {
+	return typeof variable === 'number' || variable instanceof Number;
+}
+
+function isBoolean(variable) {
+	return typeof variable === 'boolean';
+}
+
+function isArray(variable) {
+	return Array.isArray(variable);
+}
+
+function isFunction(variable) {
+	return typeof variable === 'function';
+}
+
+function isObject(variable) {
+	return variable !== null && typeof variable === 'object';
+}
+
+function isNull(variable) {
+	return variable === null;
+}
+
+function isUndefined(variable) {
+	return variable === undefined;
+}
+
+function pack() {
+	var result = {};
+
+	for (var i = 0, l = arguments.length; i < l; i++) {
+		var obj = arguments[i];
+
+		if (obj) {
+			for (var key in obj) {
+				if (obj.hasOwnProperty(key)) {
+					result[key] = obj[key];
+				}
+			}
+		}
+	}
+
+	return result;
+}
+
+function offsetVector(vector, x, y) {
+	switch (vector.type) {
+		case 'ellipse':
+		case 'rect':
+			vector.x += x;
+			vector.y += y;
+			break;
+		case 'line':
+			vector.x1 += x;
+			vector.x2 += x;
+			vector.y1 += y;
+			vector.y2 += y;
+			break;
+		case 'polyline':
+			for (var i = 0, l = vector.points.length; i < l; i++) {
+				vector.points[i].x += x;
+				vector.points[i].y += y;
+			}
+			break;
+	}
+}
+
+function fontStringify(key, val) {
+	if (key === 'font') {
+		return 'font';
+	}
+	return val;
+}
+
+module.exports = {
+	isString: isString,
+	isNumber: isNumber,
+	isBoolean: isBoolean,
+	isArray: isArray,
+	isFunction: isFunction,
+	isObject: isObject,
+	isNull: isNull,
+	isUndefined: isUndefined,
+	pack: pack,
+	fontStringify: fontStringify,
+	offsetVector: offsetVector
+};
+
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * @license  MIT
+ */
+/* eslint-disable no-proto */
+
+
+
+var base64 = __webpack_require__(124)
+var ieee754 = __webpack_require__(125)
+var isArray = __webpack_require__(76)
+
+exports.Buffer = Buffer
+exports.SlowBuffer = SlowBuffer
+exports.INSPECT_MAX_BYTES = 50
+
+/**
+ * If `Buffer.TYPED_ARRAY_SUPPORT`:
+ *   === true    Use Uint8Array implementation (fastest)
+ *   === false   Use Object implementation (most compatible, even IE6)
+ *
+ * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
+ * Opera 11.6+, iOS 4.2+.
+ *
+ * Due to various browser bugs, sometimes the Object implementation will be used even
+ * when the browser supports typed arrays.
+ *
+ * Note:
+ *
+ *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
+ *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
+ *
+ *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
+ *
+ *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
+ *     incorrect length in some situations.
+
+ * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
+ * get the Object implementation, which is slower but behaves correctly.
+ */
+Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
+  ? global.TYPED_ARRAY_SUPPORT
+  : typedArraySupport()
+
+/*
+ * Export kMaxLength after typed array support is determined.
+ */
+exports.kMaxLength = kMaxLength()
+
+function typedArraySupport () {
+  try {
+    var arr = new Uint8Array(1)
+    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
+    return arr.foo() === 42 && // typed array instances can be augmented
+        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
+        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
+  } catch (e) {
+    return false
+  }
+}
+
+function kMaxLength () {
+  return Buffer.TYPED_ARRAY_SUPPORT
+    ? 0x7fffffff
+    : 0x3fffffff
+}
+
+function createBuffer (that, length) {
+  if (kMaxLength() < length) {
+    throw new RangeError('Invalid typed array length')
+  }
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    // Return an augmented `Uint8Array` instance, for best performance
+    that = new Uint8Array(length)
+    that.__proto__ = Buffer.prototype
+  } else {
+    // Fallback: Return an object instance of the Buffer class
+    if (that === null) {
+      that = new Buffer(length)
+    }
+    that.length = length
+  }
+
+  return that
+}
+
+/**
+ * The Buffer constructor returns instances of `Uint8Array` that have their
+ * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
+ * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
+ * and the `Uint8Array` methods. Square bracket notation works as expected -- it
+ * returns a single octet.
+ *
+ * The `Uint8Array` prototype remains unmodified.
+ */
+
+function Buffer (arg, encodingOrOffset, length) {
+  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
+    return new Buffer(arg, encodingOrOffset, length)
+  }
+
+  // Common case.
+  if (typeof arg === 'number') {
+    if (typeof encodingOrOffset === 'string') {
+      throw new Error(
+        'If encoding is specified then the first argument must be a string'
+      )
+    }
+    return allocUnsafe(this, arg)
+  }
+  return from(this, arg, encodingOrOffset, length)
+}
+
+Buffer.poolSize = 8192 // not used by this implementation
+
+// TODO: Legacy, not needed anymore. Remove in next major version.
+Buffer._augment = function (arr) {
+  arr.__proto__ = Buffer.prototype
+  return arr
+}
+
+function from (that, value, encodingOrOffset, length) {
+  if (typeof value === 'number') {
+    throw new TypeError('"value" argument must not be a number')
+  }
+
+  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
+    return fromArrayBuffer(that, value, encodingOrOffset, length)
+  }
+
+  if (typeof value === 'string') {
+    return fromString(that, value, encodingOrOffset)
+  }
+
+  return fromObject(that, value)
+}
+
+/**
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
+ * if value is a number.
+ * Buffer.from(str[, encoding])
+ * Buffer.from(array)
+ * Buffer.from(buffer)
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
+ **/
+Buffer.from = function (value, encodingOrOffset, length) {
+  return from(null, value, encodingOrOffset, length)
+}
+
+if (Buffer.TYPED_ARRAY_SUPPORT) {
+  Buffer.prototype.__proto__ = Uint8Array.prototype
+  Buffer.__proto__ = Uint8Array
+  if (typeof Symbol !== 'undefined' && Symbol.species &&
+      Buffer[Symbol.species] === Buffer) {
+    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
+    Object.defineProperty(Buffer, Symbol.species, {
+      value: null,
+      configurable: true
+    })
+  }
+}
+
+function assertSize (size) {
+  if (typeof size !== 'number') {
+    throw new TypeError('"size" argument must be a number')
+  } else if (size < 0) {
+    throw new RangeError('"size" argument must not be negative')
+  }
+}
+
+function alloc (that, size, fill, encoding) {
+  assertSize(size)
+  if (size <= 0) {
+    return createBuffer(that, size)
+  }
+  if (fill !== undefined) {
+    // Only pay attention to encoding if it's a string. This
+    // prevents accidentally sending in a number that would
+    // be interpretted as a start offset.
+    return typeof encoding === 'string'
+      ? createBuffer(that, size).fill(fill, encoding)
+      : createBuffer(that, size).fill(fill)
+  }
+  return createBuffer(that, size)
+}
+
+/**
+ * Creates a new filled Buffer instance.
+ * alloc(size[, fill[, encoding]])
+ **/
+Buffer.alloc = function (size, fill, encoding) {
+  return alloc(null, size, fill, encoding)
+}
+
+function allocUnsafe (that, size) {
+  assertSize(size)
+  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
+  if (!Buffer.TYPED_ARRAY_SUPPORT) {
+    for (var i = 0; i < size; ++i) {
+      that[i] = 0
+    }
+  }
+  return that
+}
+
+/**
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
+ * */
+Buffer.allocUnsafe = function (size) {
+  return allocUnsafe(null, size)
+}
+/**
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
+ */
+Buffer.allocUnsafeSlow = function (size) {
+  return allocUnsafe(null, size)
+}
+
+function fromString (that, string, encoding) {
+  if (typeof encoding !== 'string' || encoding === '') {
+    encoding = 'utf8'
+  }
+
+  if (!Buffer.isEncoding(encoding)) {
+    throw new TypeError('"encoding" must be a valid string encoding')
+  }
+
+  var length = byteLength(string, encoding) | 0
+  that = createBuffer(that, length)
+
+  var actual = that.write(string, encoding)
+
+  if (actual !== length) {
+    // Writing a hex string, for example, that contains invalid characters will
+    // cause everything after the first invalid character to be ignored. (e.g.
+    // 'abxxcd' will be treated as 'ab')
+    that = that.slice(0, actual)
+  }
+
+  return that
+}
+
+function fromArrayLike (that, array) {
+  var length = array.length < 0 ? 0 : checked(array.length) | 0
+  that = createBuffer(that, length)
+  for (var i = 0; i < length; i += 1) {
+    that[i] = array[i] & 255
+  }
+  return that
+}
+
+function fromArrayBuffer (that, array, byteOffset, length) {
+  array.byteLength // this throws if `array` is not a valid ArrayBuffer
+
+  if (byteOffset < 0 || array.byteLength < byteOffset) {
+    throw new RangeError('\'offset\' is out of bounds')
+  }
+
+  if (array.byteLength < byteOffset + (length || 0)) {
+    throw new RangeError('\'length\' is out of bounds')
+  }
+
+  if (byteOffset === undefined && length === undefined) {
+    array = new Uint8Array(array)
+  } else if (length === undefined) {
+    array = new Uint8Array(array, byteOffset)
+  } else {
+    array = new Uint8Array(array, byteOffset, length)
+  }
+
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    // Return an augmented `Uint8Array` instance, for best performance
+    that = array
+    that.__proto__ = Buffer.prototype
+  } else {
+    // Fallback: Return an object instance of the Buffer class
+    that = fromArrayLike(that, array)
+  }
+  return that
+}
+
+function fromObject (that, obj) {
+  if (Buffer.isBuffer(obj)) {
+    var len = checked(obj.length) | 0
+    that = createBuffer(that, len)
+
+    if (that.length === 0) {
+      return that
+    }
+
+    obj.copy(that, 0, 0, len)
+    return that
+  }
+
+  if (obj) {
+    if ((typeof ArrayBuffer !== 'undefined' &&
+        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
+      if (typeof obj.length !== 'number' || isnan(obj.length)) {
+        return createBuffer(that, 0)
+      }
+      return fromArrayLike(that, obj)
+    }
+
+    if (obj.type === 'Buffer' && isArray(obj.data)) {
+      return fromArrayLike(that, obj.data)
+    }
+  }
+
+  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
+}
+
+function checked (length) {
+  // Note: cannot use `length < kMaxLength()` here because that fails when
+  // length is NaN (which is otherwise coerced to zero.)
+  if (length >= kMaxLength()) {
+    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
+                         'size: 0x' + kMaxLength().toString(16) + ' bytes')
+  }
+  return length | 0
+}
+
+function SlowBuffer (length) {
+  if (+length != length) { // eslint-disable-line eqeqeq
+    length = 0
+  }
+  return Buffer.alloc(+length)
+}
+
+Buffer.isBuffer = function isBuffer (b) {
+  return !!(b != null && b._isBuffer)
+}
+
+Buffer.compare = function compare (a, b) {
+  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
+    throw new TypeError('Arguments must be Buffers')
+  }
+
+  if (a === b) return 0
+
+  var x = a.length
+  var y = b.length
+
+  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
+    if (a[i] !== b[i]) {
+      x = a[i]
+      y = b[i]
+      break
+    }
+  }
+
+  if (x < y) return -1
+  if (y < x) return 1
+  return 0
+}
+
+Buffer.isEncoding = function isEncoding (encoding) {
+  switch (String(encoding).toLowerCase()) {
+    case 'hex':
+    case 'utf8':
+    case 'utf-8':
+    case 'ascii':
+    case 'latin1':
+    case 'binary':
+    case 'base64':
+    case 'ucs2':
+    case 'ucs-2':
+    case 'utf16le':
+    case 'utf-16le':
+      return true
+    default:
+      return false
+  }
+}
+
+Buffer.concat = function concat (list, length) {
+  if (!isArray(list)) {
+    throw new TypeError('"list" argument must be an Array of Buffers')
+  }
+
+  if (list.length === 0) {
+    return Buffer.alloc(0)
+  }
+
+  var i
+  if (length === undefined) {
+    length = 0
+    for (i = 0; i < list.length; ++i) {
+      length += list[i].length
+    }
+  }
+
+  var buffer = Buffer.allocUnsafe(length)
+  var pos = 0
+  for (i = 0; i < list.length; ++i) {
+    var buf = list[i]
+    if (!Buffer.isBuffer(buf)) {
+      throw new TypeError('"list" argument must be an Array of Buffers')
+    }
+    buf.copy(buffer, pos)
+    pos += buf.length
+  }
+  return buffer
+}
+
+function byteLength (string, encoding) {
+  if (Buffer.isBuffer(string)) {
+    return string.length
+  }
+  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
+      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
+    return string.byteLength
+  }
+  if (typeof string !== 'string') {
+    string = '' + string
+  }
+
+  var len = string.length
+  if (len === 0) return 0
+
+  // Use a for loop to avoid recursion
+  var loweredCase = false
+  for (;;) {
+    switch (encoding) {
+      case 'ascii':
+      case 'latin1':
+      case 'binary':
+        return len
+      case 'utf8':
+      case 'utf-8':
+      case undefined:
+        return utf8ToBytes(string).length
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return len * 2
+      case 'hex':
+        return len >>> 1
+      case 'base64':
+        return base64ToBytes(string).length
+      default:
+        if (loweredCase) return utf8ToBytes(string).length // assume utf8
+        encoding = ('' + encoding).toLowerCase()
+        loweredCase = true
+    }
+  }
+}
+Buffer.byteLength = byteLength
+
+function slowToString (encoding, start, end) {
+  var loweredCase = false
+
+  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
+  // property of a typed array.
+
+  // This behaves neither like String nor Uint8Array in that we set start/end
+  // to their upper/lower bounds if the value passed is out of range.
+  // undefined is handled specially as per ECMA-262 6th Edition,
+  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
+  if (start === undefined || start < 0) {
+    start = 0
+  }
+  // Return early if start > this.length. Done here to prevent potential uint32
+  // coercion fail below.
+  if (start > this.length) {
+    return ''
+  }
+
+  if (end === undefined || end > this.length) {
+    end = this.length
+  }
+
+  if (end <= 0) {
+    return ''
+  }
+
+  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
+  end >>>= 0
+  start >>>= 0
+
+  if (end <= start) {
+    return ''
+  }
+
+  if (!encoding) encoding = 'utf8'
+
+  while (true) {
+    switch (encoding) {
+      case 'hex':
+        return hexSlice(this, start, end)
+
+      case 'utf8':
+      case 'utf-8':
+        return utf8Slice(this, start, end)
+
+      case 'ascii':
+        return asciiSlice(this, start, end)
+
+      case 'latin1':
+      case 'binary':
+        return latin1Slice(this, start, end)
+
+      case 'base64':
+        return base64Slice(this, start, end)
+
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return utf16leSlice(this, start, end)
+
+      default:
+        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+        encoding = (encoding + '').toLowerCase()
+        loweredCase = true
+    }
+  }
+}
+
+// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
+// Buffer instances.
+Buffer.prototype._isBuffer = true
+
+function swap (b, n, m) {
+  var i = b[n]
+  b[n] = b[m]
+  b[m] = i
+}
+
+Buffer.prototype.swap16 = function swap16 () {
+  var len = this.length
+  if (len % 2 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 16-bits')
+  }
+  for (var i = 0; i < len; i += 2) {
+    swap(this, i, i + 1)
+  }
+  return this
+}
+
+Buffer.prototype.swap32 = function swap32 () {
+  var len = this.length
+  if (len % 4 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 32-bits')
+  }
+  for (var i = 0; i < len; i += 4) {
+    swap(this, i, i + 3)
+    swap(this, i + 1, i + 2)
+  }
+  return this
+}
+
+Buffer.prototype.swap64 = function swap64 () {
+  var len = this.length
+  if (len % 8 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 64-bits')
+  }
+  for (var i = 0; i < len; i += 8) {
+    swap(this, i, i + 7)
+    swap(this, i + 1, i + 6)
+    swap(this, i + 2, i + 5)
+    swap(this, i + 3, i + 4)
+  }
+  return this
+}
+
+Buffer.prototype.toString = function toString () {
+  var length = this.length | 0
+  if (length === 0) return ''
+  if (arguments.length === 0) return utf8Slice(this, 0, length)
+  return slowToString.apply(this, arguments)
+}
+
+Buffer.prototype.equals = function equals (b) {
+  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
+  if (this === b) return true
+  return Buffer.compare(this, b) === 0
+}
+
+Buffer.prototype.inspect = function inspect () {
+  var str = ''
+  var max = exports.INSPECT_MAX_BYTES
+  if (this.length > 0) {
+    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
+    if (this.length > max) str += ' ... '
+  }
+  return '<Buffer ' + str + '>'
+}
+
+Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
+  if (!Buffer.isBuffer(target)) {
+    throw new TypeError('Argument must be a Buffer')
+  }
+
+  if (start === undefined) {
+    start = 0
+  }
+  if (end === undefined) {
+    end = target ? target.length : 0
+  }
+  if (thisStart === undefined) {
+    thisStart = 0
+  }
+  if (thisEnd === undefined) {
+    thisEnd = this.length
+  }
+
+  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
+    throw new RangeError('out of range index')
+  }
+
+  if (thisStart >= thisEnd && start >= end) {
+    return 0
+  }
+  if (thisStart >= thisEnd) {
+    return -1
+  }
+  if (start >= end) {
+    return 1
+  }
+
+  start >>>= 0
+  end >>>= 0
+  thisStart >>>= 0
+  thisEnd >>>= 0
+
+  if (this === target) return 0
+
+  var x = thisEnd - thisStart
+  var y = end - start
+  var len = Math.min(x, y)
+
+  var thisCopy = this.slice(thisStart, thisEnd)
+  var targetCopy = target.slice(start, end)
+
+  for (var i = 0; i < len; ++i) {
+    if (thisCopy[i] !== targetCopy[i]) {
+      x = thisCopy[i]
+      y = targetCopy[i]
+      break
+    }
+  }
+
+  if (x < y) return -1
+  if (y < x) return 1
+  return 0
+}
+
+// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
+// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
+//
+// Arguments:
+// - buffer - a Buffer to search
+// - val - a string, Buffer, or number
+// - byteOffset - an index into `buffer`; will be clamped to an int32
+// - encoding - an optional encoding, relevant is val is a string
+// - dir - true for indexOf, false for lastIndexOf
+function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
+  // Empty buffer means no match
+  if (buffer.length === 0) return -1
+
+  // Normalize byteOffset
+  if (typeof byteOffset === 'string') {
+    encoding = byteOffset
+    byteOffset = 0
+  } else if (byteOffset > 0x7fffffff) {
+    byteOffset = 0x7fffffff
+  } else if (byteOffset < -0x80000000) {
+    byteOffset = -0x80000000
+  }
+  byteOffset = +byteOffset  // Coerce to Number.
+  if (isNaN(byteOffset)) {
+    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
+    byteOffset = dir ? 0 : (buffer.length - 1)
+  }
+
+  // Normalize byteOffset: negative offsets start from the end of the buffer
+  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
+  if (byteOffset >= buffer.length) {
+    if (dir) return -1
+    else byteOffset = buffer.length - 1
+  } else if (byteOffset < 0) {
+    if (dir) byteOffset = 0
+    else return -1
+  }
+
+  // Normalize val
+  if (typeof val === 'string') {
+    val = Buffer.from(val, encoding)
+  }
+
+  // Finally, search either indexOf (if dir is true) or lastIndexOf
+  if (Buffer.isBuffer(val)) {
+    // Special case: looking for empty string/buffer always fails
+    if (val.length === 0) {
+      return -1
+    }
+    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
+  } else if (typeof val === 'number') {
+    val = val & 0xFF // Search for a byte value [0-255]
+    if (Buffer.TYPED_ARRAY_SUPPORT &&
+        typeof Uint8Array.prototype.indexOf === 'function') {
+      if (dir) {
+        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
+      } else {
+        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
+      }
+    }
+    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
+  }
+
+  throw new TypeError('val must be string, number or Buffer')
+}
+
+function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
+  var indexSize = 1
+  var arrLength = arr.length
+  var valLength = val.length
+
+  if (encoding !== undefined) {
+    encoding = String(encoding).toLowerCase()
+    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
+        encoding === 'utf16le' || encoding === 'utf-16le') {
+      if (arr.length < 2 || val.length < 2) {
+        return -1
+      }
+      indexSize = 2
+      arrLength /= 2
+      valLength /= 2
+      byteOffset /= 2
+    }
+  }
+
+  function read (buf, i) {
+    if (indexSize === 1) {
+      return buf[i]
+    } else {
+      return buf.readUInt16BE(i * indexSize)
+    }
+  }
+
+  var i
+  if (dir) {
+    var foundIndex = -1
+    for (i = byteOffset; i < arrLength; i++) {
+      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
+        if (foundIndex === -1) foundIndex = i
+        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
+      } else {
+        if (foundIndex !== -1) i -= i - foundIndex
+        foundIndex = -1
+      }
+    }
+  } else {
+    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
+    for (i = byteOffset; i >= 0; i--) {
+      var found = true
+      for (var j = 0; j < valLength; j++) {
+        if (read(arr, i + j) !== read(val, j)) {
+          found = false
+          break
+        }
+      }
+      if (found) return i
+    }
+  }
+
+  return -1
+}
+
+Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
+  return this.indexOf(val, byteOffset, encoding) !== -1
+}
+
+Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
+  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
+}
+
+Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
+  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
+}
+
+function hexWrite (buf, string, offset, length) {
+  offset = Number(offset) || 0
+  var remaining = buf.length - offset
+  if (!length) {
+    length = remaining
+  } else {
+    length = Number(length)
+    if (length > remaining) {
+      length = remaining
+    }
+  }
+
+  // must be an even number of digits
+  var strLen = string.length
+  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
+
+  if (length > strLen / 2) {
+    length = strLen / 2
+  }
+  for (var i = 0; i < length; ++i) {
+    var parsed = parseInt(string.substr(i * 2, 2), 16)
+    if (isNaN(parsed)) return i
+    buf[offset + i] = parsed
+  }
+  return i
+}
+
+function utf8Write (buf, string, offset, length) {
+  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+function asciiWrite (buf, string, offset, length) {
+  return blitBuffer(asciiToBytes(string), buf, offset, length)
+}
+
+function latin1Write (buf, string, offset, length) {
+  return asciiWrite(buf, string, offset, length)
+}
+
+function base64Write (buf, string, offset, length) {
+  return blitBuffer(base64ToBytes(string), buf, offset, length)
+}
+
+function ucs2Write (buf, string, offset, length) {
+  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+Buffer.prototype.write = function write (string, offset, length, encoding) {
+  // Buffer#write(string)
+  if (offset === undefined) {
+    encoding = 'utf8'
+    length = this.length
+    offset = 0
+  // Buffer#write(string, encoding)
+  } else if (length === undefined && typeof offset === 'string') {
+    encoding = offset
+    length = this.length
+    offset = 0
+  // Buffer#write(string, offset[, length][, encoding])
+  } else if (isFinite(offset)) {
+    offset = offset | 0
+    if (isFinite(length)) {
+      length = length | 0
+      if (encoding === undefined) encoding = 'utf8'
+    } else {
+      encoding = length
+      length = undefined
+    }
+  // legacy write(string, encoding, offset, length) - remove in v0.13
+  } else {
+    throw new Error(
+      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
+    )
+  }
+
+  var remaining = this.length - offset
+  if (length === undefined || length > remaining) length = remaining
+
+  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
+    throw new RangeError('Attempt to write outside buffer bounds')
+  }
+
+  if (!encoding) encoding = 'utf8'
+
+  var loweredCase = false
+  for (;;) {
+    switch (encoding) {
+      case 'hex':
+        return hexWrite(this, string, offset, length)
+
+      case 'utf8':
+      case 'utf-8':
+        return utf8Write(this, string, offset, length)
+
+      case 'ascii':
+        return asciiWrite(this, string, offset, length)
+
+      case 'latin1':
+      case 'binary':
+        return latin1Write(this, string, offset, length)
+
+      case 'base64':
+        // Warning: maxLength not taken into account in base64Write
+        return base64Write(this, string, offset, length)
+
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return ucs2Write(this, string, offset, length)
+
+      default:
+        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+        encoding = ('' + encoding).toLowerCase()
+        loweredCase = true
+    }
+  }
+}
+
+Buffer.prototype.toJSON = function toJSON () {
+  return {
+    type: 'Buffer',
+    data: Array.prototype.slice.call(this._arr || this, 0)
+  }
+}
+
+function base64Slice (buf, start, end) {
+  if (start === 0 && end === buf.length) {
+    return base64.fromByteArray(buf)
+  } else {
+    return base64.fromByteArray(buf.slice(start, end))
+  }
+}
+
+function utf8Slice (buf, start, end) {
+  end = Math.min(buf.length, end)
+  var res = []
+
+  var i = start
+  while (i < end) {
+    var firstByte = buf[i]
+    var codePoint = null
+    var bytesPerSequence = (firstByte > 0xEF) ? 4
+      : (firstByte > 0xDF) ? 3
+      : (firstByte > 0xBF) ? 2
+      : 1
+
+    if (i + bytesPerSequence <= end) {
+      var secondByte, thirdByte, fourthByte, tempCodePoint
+
+      switch (bytesPerSequence) {
+        case 1:
+          if (firstByte < 0x80) {
+            codePoint = firstByte
+          }
+          break
+        case 2:
+          secondByte = buf[i + 1]
+          if ((secondByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
+            if (tempCodePoint > 0x7F) {
+              codePoint = tempCodePoint
+            }
+          }
+          break
+        case 3:
+          secondByte = buf[i + 1]
+          thirdByte = buf[i + 2]
+          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
+            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
+              codePoint = tempCodePoint
+            }
+          }
+          break
+        case 4:
+          secondByte = buf[i + 1]
+          thirdByte = buf[i + 2]
+          fourthByte = buf[i + 3]
+          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
+            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
+              codePoint = tempCodePoint
+            }
+          }
+      }
+    }
+
+    if (codePoint === null) {
+      // we did not generate a valid codePoint so insert a
+      // replacement char (U+FFFD) and advance only 1 byte
+      codePoint = 0xFFFD
+      bytesPerSequence = 1
+    } else if (codePoint > 0xFFFF) {
+      // encode to utf16 (surrogate pair dance)
+      codePoint -= 0x10000
+      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
+      codePoint = 0xDC00 | codePoint & 0x3FF
+    }
+
+    res.push(codePoint)
+    i += bytesPerSequence
+  }
+
+  return decodeCodePointsArray(res)
+}
+
+// Based on http://stackoverflow.com/a/22747272/680742, the browser with
+// the lowest limit is Chrome, with 0x10000 args.
+// We go 1 magnitude less, for safety
+var MAX_ARGUMENTS_LENGTH = 0x1000
+
+function decodeCodePointsArray (codePoints) {
+  var len = codePoints.length
+  if (len <= MAX_ARGUMENTS_LENGTH) {
+    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
+  }
+
+  // Decode in chunks to avoid "call stack size exceeded".
+  var res = ''
+  var i = 0
+  while (i < len) {
+    res += String.fromCharCode.apply(
+      String,
+      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
+    )
+  }
+  return res
+}
+
+function asciiSlice (buf, start, end) {
+  var ret = ''
+  end = Math.min(buf.length, end)
+
+  for (var i = start; i < end; ++i) {
+    ret += String.fromCharCode(buf[i] & 0x7F)
+  }
+  return ret
+}
+
+function latin1Slice (buf, start, end) {
+  var ret = ''
+  end = Math.min(buf.length, end)
+
+  for (var i = start; i < end; ++i) {
+    ret += String.fromCharCode(buf[i])
+  }
+  return ret
+}
+
+function hexSlice (buf, start, end) {
+  var len = buf.length
+
+  if (!start || start < 0) start = 0
+  if (!end || end < 0 || end > len) end = len
+
+  var out = ''
+  for (var i = start; i < end; ++i) {
+    out += toHex(buf[i])
+  }
+  return out
+}
+
+function utf16leSlice (buf, start, end) {
+  var bytes = buf.slice(start, end)
+  var res = ''
+  for (var i = 0; i < bytes.length; i += 2) {
+    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
+  }
+  return res
+}
+
+Buffer.prototype.slice = function slice (start, end) {
+  var len = this.length
+  start = ~~start
+  end = end === undefined ? len : ~~end
+
+  if (start < 0) {
+    start += len
+    if (start < 0) start = 0
+  } else if (start > len) {
+    start = len
+  }
+
+  if (end < 0) {
+    end += len
+    if (end < 0) end = 0
+  } else if (end > len) {
+    end = len
+  }
+
+  if (end < start) end = start
+
+  var newBuf
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    newBuf = this.subarray(start, end)
+    newBuf.__proto__ = Buffer.prototype
+  } else {
+    var sliceLen = end - start
+    newBuf = new Buffer(sliceLen, undefined)
+    for (var i = 0; i < sliceLen; ++i) {
+      newBuf[i] = this[i + start]
+    }
+  }
+
+  return newBuf
+}
+
+/*
+ * Need to make sure that buffer isn't trying to write out of bounds.
+ */
+function checkOffset (offset, ext, length) {
+  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
+  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
+}
+
+Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+  var val = this[offset]
+  var mul = 1
+  var i = 0
+  while (++i < byteLength && (mul *= 0x100)) {
+    val += this[offset + i] * mul
+  }
+
+  return val
+}
+
+Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) {
+    checkOffset(offset, byteLength, this.length)
+  }
+
+  var val = this[offset + --byteLength]
+  var mul = 1
+  while (byteLength > 0 && (mul *= 0x100)) {
+    val += this[offset + --byteLength] * mul
+  }
+
+  return val
+}
+
+Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 1, this.length)
+  return this[offset]
+}
+
+Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  return this[offset] | (this[offset + 1] << 8)
+}
+
+Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  return (this[offset] << 8) | this[offset + 1]
+}
+
+Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return ((this[offset]) |
+      (this[offset + 1] << 8) |
+      (this[offset + 2] << 16)) +
+      (this[offset + 3] * 0x1000000)
+}
+
+Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return (this[offset] * 0x1000000) +
+    ((this[offset + 1] << 16) |
+    (this[offset + 2] << 8) |
+    this[offset + 3])
+}
+
+Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+  var val = this[offset]
+  var mul = 1
+  var i = 0
+  while (++i < byteLength && (mul *= 0x100)) {
+    val += this[offset + i] * mul
+  }
+  mul *= 0x80
+
+  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+  return val
+}
+
+Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+  var i = byteLength
+  var mul = 1
+  var val = this[offset + --i]
+  while (i > 0 && (mul *= 0x100)) {
+    val += this[offset + --i] * mul
+  }
+  mul *= 0x80
+
+  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+  return val
+}
+
+Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 1, this.length)
+  if (!(this[offset] & 0x80)) return (this[offset])
+  return ((0xff - this[offset] + 1) * -1)
+}
+
+Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  var val = this[offset] | (this[offset + 1] << 8)
+  return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  var val = this[offset + 1] | (this[offset] << 8)
+  return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return (this[offset]) |
+    (this[offset + 1] << 8) |
+    (this[offset + 2] << 16) |
+    (this[offset + 3] << 24)
+}
+
+Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return (this[offset] << 24) |
+    (this[offset + 1] << 16) |
+    (this[offset + 2] << 8) |
+    (this[offset + 3])
+}
+
+Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+  return ieee754.read(this, offset, true, 23, 4)
+}
+
+Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+  return ieee754.read(this, offset, false, 23, 4)
+}
+
+Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 8, this.length)
+  return ieee754.read(this, offset, true, 52, 8)
+}
+
+Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 8, this.length)
+  return ieee754.read(this, offset, false, 52, 8)
+}
+
+function checkInt (buf, value, offset, ext, max, min) {
+  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
+  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
+  if (offset + ext > buf.length) throw new RangeError('Index out of range')
+}
+
+Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) {
+    var maxBytes = Math.pow(2, 8 * byteLength) - 1
+    checkInt(this, value, offset, byteLength, maxBytes, 0)
+  }
+
+  var mul = 1
+  var i = 0
+  this[offset] = value & 0xFF
+  while (++i < byteLength && (mul *= 0x100)) {
+    this[offset + i] = (value / mul) & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) {
+    var maxBytes = Math.pow(2, 8 * byteLength) - 1
+    checkInt(this, value, offset, byteLength, maxBytes, 0)
+  }
+
+  var i = byteLength - 1
+  var mul = 1
+  this[offset + i] = value & 0xFF
+  while (--i >= 0 && (mul *= 0x100)) {
+    this[offset + i] = (value / mul) & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
+  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+  this[offset] = (value & 0xff)
+  return offset + 1
+}
+
+function objectWriteUInt16 (buf, value, offset, littleEndian) {
+  if (value < 0) value = 0xffff + value + 1
+  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
+    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
+      (littleEndian ? i : 1 - i) * 8
+  }
+}
+
+Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value & 0xff)
+    this[offset + 1] = (value >>> 8)
+  } else {
+    objectWriteUInt16(this, value, offset, true)
+  }
+  return offset + 2
+}
+
+Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 8)
+    this[offset + 1] = (value & 0xff)
+  } else {
+    objectWriteUInt16(this, value, offset, false)
+  }
+  return offset + 2
+}
+
+function objectWriteUInt32 (buf, value, offset, littleEndian) {
+  if (value < 0) value = 0xffffffff + value + 1
+  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
+    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
+  }
+}
+
+Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset + 3] = (value >>> 24)
+    this[offset + 2] = (value >>> 16)
+    this[offset + 1] = (value >>> 8)
+    this[offset] = (value & 0xff)
+  } else {
+    objectWriteUInt32(this, value, offset, true)
+  }
+  return offset + 4
+}
+
+Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 24)
+    this[offset + 1] = (value >>> 16)
+    this[offset + 2] = (value >>> 8)
+    this[offset + 3] = (value & 0xff)
+  } else {
+    objectWriteUInt32(this, value, offset, false)
+  }
+  return offset + 4
+}
+
+Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) {
+    var limit = Math.pow(2, 8 * byteLength - 1)
+
+    checkInt(this, value, offset, byteLength, limit - 1, -limit)
+  }
+
+  var i = 0
+  var mul = 1
+  var sub = 0
+  this[offset] = value & 0xFF
+  while (++i < byteLength && (mul *= 0x100)) {
+    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
+      sub = 1
+    }
+    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) {
+    var limit = Math.pow(2, 8 * byteLength - 1)
+
+    checkInt(this, value, offset, byteLength, limit - 1, -limit)
+  }
+
+  var i = byteLength - 1
+  var mul = 1
+  var sub = 0
+  this[offset + i] = value & 0xFF
+  while (--i >= 0 && (mul *= 0x100)) {
+    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
+      sub = 1
+    }
+    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
+  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+  if (value < 0) value = 0xff + value + 1
+  this[offset] = (value & 0xff)
+  return offset + 1
+}
+
+Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value & 0xff)
+    this[offset + 1] = (value >>> 8)
+  } else {
+    objectWriteUInt16(this, value, offset, true)
+  }
+  return offset + 2
+}
+
+Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 8)
+    this[offset + 1] = (value & 0xff)
+  } else {
+    objectWriteUInt16(this, value, offset, false)
+  }
+  return offset + 2
+}
+
+Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value & 0xff)
+    this[offset + 1] = (value >>> 8)
+    this[offset + 2] = (value >>> 16)
+    this[offset + 3] = (value >>> 24)
+  } else {
+    objectWriteUInt32(this, value, offset, true)
+  }
+  return offset + 4
+}
+
+Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+  if (value < 0) value = 0xffffffff + value + 1
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 24)
+    this[offset + 1] = (value >>> 16)
+    this[offset + 2] = (value >>> 8)
+    this[offset + 3] = (value & 0xff)
+  } else {
+    objectWriteUInt32(this, value, offset, false)
+  }
+  return offset + 4
+}
+
+function checkIEEE754 (buf, value, offset, ext, max, min) {
+  if (offset + ext > buf.length) throw new RangeError('Index out of range')
+  if (offset < 0) throw new RangeError('Index out of range')
+}
+
+function writeFloat (buf, value, offset, littleEndian, noAssert) {
+  if (!noAssert) {
+    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
+  }
+  ieee754.write(buf, value, offset, littleEndian, 23, 4)
+  return offset + 4
+}
+
+Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
+  return writeFloat(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
+  return writeFloat(this, value, offset, false, noAssert)
+}
+
+function writeDouble (buf, value, offset, littleEndian, noAssert) {
+  if (!noAssert) {
+    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
+  }
+  ieee754.write(buf, value, offset, littleEndian, 52, 8)
+  return offset + 8
+}
+
+Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
+  return writeDouble(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
+  return writeDouble(this, value, offset, false, noAssert)
+}
+
+// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
+Buffer.prototype.copy = function copy (target, targetStart, start, end) {
+  if (!start) start = 0
+  if (!end && end !== 0) end = this.length
+  if (targetStart >= target.length) targetStart = target.length
+  if (!targetStart) targetStart = 0
+  if (end > 0 && end < start) end = start
+
+  // Copy 0 bytes; we're done
+  if (end === start) return 0
+  if (target.length === 0 || this.length === 0) return 0
+
+  // Fatal error conditions
+  if (targetStart < 0) {
+    throw new RangeError('targetStart out of bounds')
+  }
+  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
+  if (end < 0) throw new RangeError('sourceEnd out of bounds')
+
+  // Are we oob?
+  if (end > this.length) end = this.length
+  if (target.length - targetStart < end - start) {
+    end = target.length - targetStart + start
+  }
+
+  var len = end - start
+  var i
+
+  if (this === target && start < targetStart && targetStart < end) {
+    // descending copy from end
+    for (i = len - 1; i >= 0; --i) {
+      target[i + targetStart] = this[i + start]
+    }
+  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
+    // ascending copy from start
+    for (i = 0; i < len; ++i) {
+      target[i + targetStart] = this[i + start]
+    }
+  } else {
+    Uint8Array.prototype.set.call(
+      target,
+      this.subarray(start, start + len),
+      targetStart
+    )
+  }
+
+  return len
+}
+
+// Usage:
+//    buffer.fill(number[, offset[, end]])
+//    buffer.fill(buffer[, offset[, end]])
+//    buffer.fill(string[, offset[, end]][, encoding])
+Buffer.prototype.fill = function fill (val, start, end, encoding) {
+  // Handle string cases:
+  if (typeof val === 'string') {
+    if (typeof start === 'string') {
+      encoding = start
+      start = 0
+      end = this.length
+    } else if (typeof end === 'string') {
+      encoding = end
+      end = this.length
+    }
+    if (val.length === 1) {
+      var code = val.charCodeAt(0)
+      if (code < 256) {
+        val = code
+      }
+    }
+    if (encoding !== undefined && typeof encoding !== 'string') {
+      throw new TypeError('encoding must be a string')
+    }
+    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
+      throw new TypeError('Unknown encoding: ' + encoding)
+    }
+  } else if (typeof val === 'number') {
+    val = val & 255
+  }
+
+  // Invalid ranges are not set to a default, so can range check early.
+  if (start < 0 || this.length < start || this.length < end) {
+    throw new RangeError('Out of range index')
+  }
+
+  if (end <= start) {
+    return this
+  }
+
+  start = start >>> 0
+  end = end === undefined ? this.length : end >>> 0
+
+  if (!val) val = 0
+
+  var i
+  if (typeof val === 'number') {
+    for (i = start; i < end; ++i) {
+      this[i] = val
+    }
+  } else {
+    var bytes = Buffer.isBuffer(val)
+      ? val
+      : utf8ToBytes(new Buffer(val, encoding).toString())
+    var len = bytes.length
+    for (i = 0; i < end - start; ++i) {
+      this[i + start] = bytes[i % len]
+    }
+  }
+
+  return this
+}
+
+// HELPER FUNCTIONS
+// ================
+
+var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
+
+function base64clean (str) {
+  // Node strips out invalid characters like \n and \t from the string, base64-js does not
+  str = stringtrim(str).replace(INVALID_BASE64_RE, '')
+  // Node converts strings with length < 2 to ''
+  if (str.length < 2) return ''
+  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
+  while (str.length % 4 !== 0) {
+    str = str + '='
+  }
+  return str
+}
+
+function stringtrim (str) {
+  if (str.trim) return str.trim()
+  return str.replace(/^\s+|\s+$/g, '')
+}
+
+function toHex (n) {
+  if (n < 16) return '0' + n.toString(16)
+  return n.toString(16)
+}
+
+function utf8ToBytes (string, units) {
+  units = units || Infinity
+  var codePoint
+  var length = string.length
+  var leadSurrogate = null
+  var bytes = []
+
+  for (var i = 0; i < length; ++i) {
+    codePoint = string.charCodeAt(i)
+
+    // is surrogate component
+    if (codePoint > 0xD7FF && codePoint < 0xE000) {
+      // last char was a lead
+      if (!leadSurrogate) {
+        // no lead yet
+        if (codePoint > 0xDBFF) {
+          // unexpected trail
+          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+          continue
+        } else if (i + 1 === length) {
+          // unpaired lead
+          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+          continue
+        }
+
+        // valid lead
+        leadSurrogate = codePoint
+
+        continue
+      }
+
+      // 2 leads in a row
+      if (codePoint < 0xDC00) {
+        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+        leadSurrogate = codePoint
+        continue
+      }
+
+      // valid surrogate pair
+      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
+    } else if (leadSurrogate) {
+      // valid bmp char, but last char was a lead
+      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+    }
+
+    leadSurrogate = null
+
+    // encode utf8
+    if (codePoint < 0x80) {
+      if ((units -= 1) < 0) break
+      bytes.push(codePoint)
+    } else if (codePoint < 0x800) {
+      if ((units -= 2) < 0) break
+      bytes.push(
+        codePoint >> 0x6 | 0xC0,
+        codePoint & 0x3F | 0x80
+      )
+    } else if (codePoint < 0x10000) {
+      if ((units -= 3) < 0) break
+      bytes.push(
+        codePoint >> 0xC | 0xE0,
+        codePoint >> 0x6 & 0x3F | 0x80,
+        codePoint & 0x3F | 0x80
+      )
+    } else if (codePoint < 0x110000) {
+      if ((units -= 4) < 0) break
+      bytes.push(
+        codePoint >> 0x12 | 0xF0,
+        codePoint >> 0xC & 0x3F | 0x80,
+        codePoint >> 0x6 & 0x3F | 0x80,
+        codePoint & 0x3F | 0x80
+      )
+    } else {
+      throw new Error('Invalid code point')
+    }
+  }
+
+  return bytes
+}
+
+function asciiToBytes (str) {
+  var byteArray = []
+  for (var i = 0; i < str.length; ++i) {
+    // Node's code seems to be doing this and not & 0x7F..
+    byteArray.push(str.charCodeAt(i) & 0xFF)
+  }
+  return byteArray
+}
+
+function utf16leToBytes (str, units) {
+  var c, hi, lo
+  var byteArray = []
+  for (var i = 0; i < str.length; ++i) {
+    if ((units -= 2) < 0) break
+
+    c = str.charCodeAt(i)
+    hi = c >> 8
+    lo = c % 256
+    byteArray.push(lo)
+    byteArray.push(hi)
+  }
+
+  return byteArray
+}
+
+function base64ToBytes (str) {
+  return base64.toByteArray(base64clean(str))
+}
+
+function blitBuffer (src, dst, offset, length) {
+  for (var i = 0; i < length; ++i) {
+    if ((i + offset >= dst.length) || (i >= src.length)) break
+    dst[i + offset] = src[i]
+  }
+  return i
+}
+
+function isnan (val) {
+  return val !== val // eslint-disable-line no-self-compare
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports) {
+
+var core = module.exports = { version: '2.5.3' };
+if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
+
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var global = __webpack_require__(10);
+var core = __webpack_require__(2);
+var ctx = __webpack_require__(20);
+var hide = __webpack_require__(13);
+var PROTOTYPE = 'prototype';
+
+var $export = function (type, name, source) {
+  var IS_FORCED = type & $export.F;
+  var IS_GLOBAL = type & $export.G;
+  var IS_STATIC = type & $export.S;
+  var IS_PROTO = type & $export.P;
+  var IS_BIND = type & $export.B;
+  var IS_WRAP = type & $export.W;
+  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
+  var expProto = exports[PROTOTYPE];
+  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
+  var key, own, out;
+  if (IS_GLOBAL) source = name;
+  for (key in source) {
+    // contains in native
+    own = !IS_FORCED && target && target[key] !== undefined;
+    if (own && key in exports) continue;
+    // export native or passed
+    out = own ? target[key] : source[key];
+    // prevent global pollution for namespaces
+    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+    // bind timers to global for call from export context
+    : IS_BIND && own ? ctx(out, global)
+    // wrap global constructors for prevent change them in library
+    : IS_WRAP && target[key] == out ? (function (C) {
+      var F = function (a, b, c) {
+        if (this instanceof C) {
+          switch (arguments.length) {
+            case 0: return new C();
+            case 1: return new C(a);
+            case 2: return new C(a, b);
+          } return new C(a, b, c);
+        } return C.apply(this, arguments);
+      };
+      F[PROTOTYPE] = C[PROTOTYPE];
+      return F;
+    // make static versions for prototype methods
+    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+    if (IS_PROTO) {
+      (exports.virtual || (exports.virtual = {}))[key] = out;
+      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
+    }
+  }
+};
+// type bitmap
+$export.F = 1;   // forced
+$export.G = 2;   // global
+$export.S = 4;   // static
+$export.P = 8;   // proto
+$export.B = 16;  // bind
+$export.W = 32;  // wrap
+$export.U = 64;  // safe
+$export.R = 128; // real proto method for `library`
+module.exports = $export;
+
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var store = __webpack_require__(65)('wks');
+var uid = __webpack_require__(38);
+var Symbol = __webpack_require__(10).Symbol;
+var USE_SYMBOL = typeof Symbol == 'function';
+
+var $exports = module.exports = function (name) {
+  return store[name] || (store[name] =
+    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
+};
+
+$exports.store = store;
+
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Thank's IE8 for his funny defineProperty
+module.exports = !__webpack_require__(19)(function () {
+  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
+});
+
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var anObject = __webpack_require__(14);
+var IE8_DOM_DEFINE = __webpack_require__(95);
+var toPrimitive = __webpack_require__(58);
+var dP = Object.defineProperty;
+
+exports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
+  anObject(O);
+  P = toPrimitive(P, true);
+  anObject(Attributes);
+  if (IE8_DOM_DEFINE) try {
+    return dP(O, P, Attributes);
+  } catch (e) { /* empty */ }
+  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
+  if ('value' in Attributes) O[P] = Attributes.value;
+  return O;
+};
+
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+	return this;
+})();
+
+try {
+	// This works if eval is allowed (see CSP)
+	g = g || Function("return this")() || (1,eval)("this");
+} catch(e) {
+	// This works if the window reference is available
+	if(typeof window === "object")
+		g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer, __dirname) {
+
+function VirtualFileSystem() {
+	this.fileSystem = {};
+	this.baseSystem = {};
+}
+
+VirtualFileSystem.prototype.readFileSync = function (filename) {
+	filename = fixFilename(filename);
+
+	var base64content = this.baseSystem[filename];
+	if (base64content) {
+		return new Buffer(base64content, 'base64');
+	}
+
+	var content = this.fileSystem[filename];
+	if (content) {
+		return content;
+	}
+
+	throw 'File \'' + filename + '\' not found in virtual file system';
+};
+
+VirtualFileSystem.prototype.writeFileSync = function (filename, content) {
+	this.fileSystem[fixFilename(filename)] = content;
+};
+
+VirtualFileSystem.prototype.bindFS = function (data) {
+	this.baseSystem = data || {};
+};
+
+
+function fixFilename(filename) {
+	if (filename.indexOf(__dirname) === 0) {
+		filename = filename.substring(__dirname.length);
+	}
+
+	if (filename.indexOf('/') === 0) {
+		filename = filename.substring(1);
+	}
+
+	return filename;
+}
+
+module.exports = new VirtualFileSystem();
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, "/"))
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports) {
+
+module.exports = function (it) {
+  return typeof it === 'object' ? it !== null : typeof it === 'function';
+};
+
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports) {
+
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+var global = module.exports = typeof window != 'undefined' && window.Math == Math
+  ? window : typeof self != 'undefined' && self.Math == Math ? self
+  // eslint-disable-next-line no-new-func
+  : Function('return this')();
+if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
+
+
+/***/ }),
+/* 11 */
+/***/ (function(module, exports) {
+
+// shim for using process in browser
+var process = module.exports = {};
+
+// cached from whatever global is present so that test runners that stub it
+// don't break things.  But we need to wrap it in a try catch in case it is
+// wrapped in strict mode code which doesn't define any globals.  It's inside a
+// function because try/catches deoptimize in certain engines.
+
+var cachedSetTimeout;
+var cachedClearTimeout;
+
+function defaultSetTimout() {
+    throw new Error('setTimeout has not been defined');
+}
+function defaultClearTimeout () {
+    throw new Error('clearTimeout has not been defined');
+}
+(function () {
+    try {
+        if (typeof setTimeout === 'function') {
+            cachedSetTimeout = setTimeout;
+        } else {
+            cachedSetTimeout = defaultSetTimout;
+        }
+    } catch (e) {
+        cachedSetTimeout = defaultSetTimout;
+    }
+    try {
+        if (typeof clearTimeout === 'function') {
+            cachedClearTimeout = clearTimeout;
+        } else {
+            cachedClearTimeout = defaultClearTimeout;
+        }
+    } catch (e) {
+        cachedClearTimeout = defaultClearTimeout;
+    }
+} ())
+function runTimeout(fun) {
+    if (cachedSetTimeout === setTimeout) {
+        //normal enviroments in sane situations
+        return setTimeout(fun, 0);
+    }
+    // if setTimeout wasn't available but was latter defined
+    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+        cachedSetTimeout = setTimeout;
+        return setTimeout(fun, 0);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedSetTimeout(fun, 0);
+    } catch(e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+            return cachedSetTimeout.call(null, fun, 0);
+        } catch(e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+            return cachedSetTimeout.call(this, fun, 0);
+        }
+    }
+
+
+}
+function runClearTimeout(marker) {
+    if (cachedClearTimeout === clearTimeout) {
+        //normal enviroments in sane situations
+        return clearTimeout(marker);
+    }
+    // if clearTimeout wasn't available but was latter defined
+    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+        cachedClearTimeout = clearTimeout;
+        return clearTimeout(marker);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedClearTimeout(marker);
+    } catch (e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
+            return cachedClearTimeout.call(null, marker);
+        } catch (e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+            return cachedClearTimeout.call(this, marker);
+        }
+    }
+
+
+
+}
+var queue = [];
+var draining = false;
+var currentQueue;
+var queueIndex = -1;
+
+function cleanUpNextTick() {
+    if (!draining || !currentQueue) {
+        return;
+    }
+    draining = false;
+    if (currentQueue.length) {
+        queue = currentQueue.concat(queue);
+    } else {
+        queueIndex = -1;
+    }
+    if (queue.length) {
+        drainQueue();
+    }
+}
+
+function drainQueue() {
+    if (draining) {
+        return;
+    }
+    var timeout = runTimeout(cleanUpNextTick);
+    draining = true;
+
+    var len = queue.length;
+    while(len) {
+        currentQueue = queue;
+        queue = [];
+        while (++queueIndex < len) {
+            if (currentQueue) {
+                currentQueue[queueIndex].run();
+            }
+        }
+        queueIndex = -1;
+        len = queue.length;
+    }
+    currentQueue = null;
+    draining = false;
+    runClearTimeout(timeout);
+}
+
+process.nextTick = function (fun) {
+    var args = new Array(arguments.length - 1);
+    if (arguments.length > 1) {
+        for (var i = 1; i < arguments.length; i++) {
+            args[i - 1] = arguments[i];
+        }
+    }
+    queue.push(new Item(fun, args));
+    if (queue.length === 1 && !draining) {
+        runTimeout(drainQueue);
+    }
+};
+
+// v8 likes predictible objects
+function Item(fun, array) {
+    this.fun = fun;
+    this.array = array;
+}
+Item.prototype.run = function () {
+    this.fun.apply(null, this.array);
+};
+process.title = 'browser';
+process.browser = true;
+process.env = {};
+process.argv = [];
+process.version = ''; // empty string to avoid regexp issues
+process.versions = {};
+
+function noop() {}
+
+process.on = noop;
+process.addListener = noop;
+process.once = noop;
+process.off = noop;
+process.removeListener = noop;
+process.removeAllListeners = noop;
+process.emit = noop;
+process.prependListener = noop;
+process.prependOnceListener = noop;
+
+process.listeners = function (name) { return [] }
+
+process.binding = function (name) {
+    throw new Error('process.binding is not supported');
+};
+
+process.cwd = function () { return '/' };
+process.chdir = function (dir) {
+    throw new Error('process.chdir is not supported');
+};
+process.umask = function() { return 0; };
+
+
+/***/ }),
+/* 12 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var NumberT, PropertyDescriptor;
+
+  NumberT = __webpack_require__(22).Number;
+
+  exports.resolveLength = function(length, stream, parent) {
+    var res;
+    if (typeof length === 'number') {
+      res = length;
+    } else if (typeof length === 'function') {
+      res = length.call(parent, parent);
+    } else if (parent && typeof length === 'string') {
+      res = parent[length];
+    } else if (stream && length instanceof NumberT) {
+      res = length.decode(stream);
+    }
+    if (isNaN(res)) {
+      throw new Error('Not a fixed size');
+    }
+    return res;
+  };
+
+  PropertyDescriptor = (function() {
+    function PropertyDescriptor(opts) {
+      var key, val;
+      if (opts == null) {
+        opts = {};
+      }
+      this.enumerable = true;
+      this.configurable = true;
+      for (key in opts) {
+        val = opts[key];
+        this[key] = val;
+      }
+    }
+
+    return PropertyDescriptor;
+
+  })();
+
+  exports.PropertyDescriptor = PropertyDescriptor;
+
+}).call(this);
+
+
+/***/ }),
+/* 13 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var dP = __webpack_require__(6);
+var createDesc = __webpack_require__(27);
+module.exports = __webpack_require__(5) ? function (object, key, value) {
+  return dP.f(object, key, createDesc(1, value));
+} : function (object, key, value) {
+  object[key] = value;
+  return object;
+};
+
+
+/***/ }),
+/* 14 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(9);
+module.exports = function (it) {
+  if (!isObject(it)) throw TypeError(it + ' is not an object!');
+  return it;
+};
+
+
+/***/ }),
+/* 15 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+module.exports = Stream;
+
+var EE = __webpack_require__(31).EventEmitter;
+var inherits = __webpack_require__(21);
+
+inherits(Stream, EE);
+Stream.Readable = __webpack_require__(45);
+Stream.Writable = __webpack_require__(146);
+Stream.Duplex = __webpack_require__(147);
+Stream.Transform = __webpack_require__(148);
+Stream.PassThrough = __webpack_require__(149);
+
+// Backwards-compat with node 0.4.x
+Stream.Stream = Stream;
+
+
+
+// old-style streams.  Note that the pipe method (the only relevant
+// part of this class) is overridden in the Readable class.
+
+function Stream() {
+  EE.call(this);
+}
+
+Stream.prototype.pipe = function(dest, options) {
+  var source = this;
+
+  function ondata(chunk) {
+    if (dest.writable) {
+      if (false === dest.write(chunk) && source.pause) {
+        source.pause();
+      }
+    }
+  }
+
+  source.on('data', ondata);
+
+  function ondrain() {
+    if (source.readable && source.resume) {
+      source.resume();
+    }
+  }
+
+  dest.on('drain', ondrain);
+
+  // If the 'end' option is not supplied, dest.end() will be called when
+  // source gets the 'end' or 'close' events.  Only dest.end() once.
+  if (!dest._isStdio && (!options || options.end !== false)) {
+    source.on('end', onend);
+    source.on('close', onclose);
+  }
+
+  var didOnEnd = false;
+  function onend() {
+    if (didOnEnd) return;
+    didOnEnd = true;
+
+    dest.end();
+  }
+
+
+  function onclose() {
+    if (didOnEnd) return;
+    didOnEnd = true;
+
+    if (typeof dest.destroy === 'function') dest.destroy();
+  }
+
+  // don't leave dangling pipes when there are errors.
+  function onerror(er) {
+    cleanup();
+    if (EE.listenerCount(this, 'error') === 0) {
+      throw er; // Unhandled stream error in pipe.
+    }
+  }
+
+  source.on('error', onerror);
+  dest.on('error', onerror);
+
+  // remove all the event listeners that were added.
+  function cleanup() {
+    source.removeListener('data', ondata);
+    dest.removeListener('drain', ondrain);
+
+    source.removeListener('end', onend);
+    source.removeListener('close', onclose);
+
+    source.removeListener('error', onerror);
+    dest.removeListener('error', onerror);
+
+    source.removeListener('end', cleanup);
+    source.removeListener('close', cleanup);
+
+    dest.removeListener('close', cleanup);
+  }
+
+  source.on('end', cleanup);
+  source.on('close', cleanup);
+
+  dest.on('close', cleanup);
+
+  dest.emit('pipe', source);
+
+  // Allow for unix-like usage: A.pipe(B).pipe(C)
+  return dest;
+};
+
+
+/***/ }),
+/* 16 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// a duplex stream is just a stream that is both readable and writable.
+// Since JS doesn't have multiple prototypal inheritance, this class
+// prototypally inherits from Readable, and then parasitically from
+// Writable.
+
+
+
+/*<replacement>*/
+
+var processNextTick = __webpack_require__(32).nextTick;
+/*</replacement>*/
+
+/*<replacement>*/
+var objectKeys = Object.keys || function (obj) {
+  var keys = [];
+  for (var key in obj) {
+    keys.push(key);
+  }return keys;
+};
+/*</replacement>*/
+
+module.exports = Duplex;
+
+/*<replacement>*/
+var util = __webpack_require__(25);
+util.inherits = __webpack_require__(21);
+/*</replacement>*/
+
+var Readable = __webpack_require__(83);
+var Writable = __webpack_require__(46);
+
+util.inherits(Duplex, Readable);
+
+var keys = objectKeys(Writable.prototype);
+for (var v = 0; v < keys.length; v++) {
+  var method = keys[v];
+  if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
+}
+
+function Duplex(options) {
+  if (!(this instanceof Duplex)) return new Duplex(options);
+
+  Readable.call(this, options);
+  Writable.call(this, options);
+
+  if (options && options.readable === false) this.readable = false;
+
+  if (options && options.writable === false) this.writable = false;
+
+  this.allowHalfOpen = true;
+  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
+
+  this.once('end', onend);
+}
+
+// the no-half-open enforcer
+function onend() {
+  // if we allow half-open state, or if the writable side ended,
+  // then we're ok.
+  if (this.allowHalfOpen || this._writableState.ended) return;
+
+  // no more data can be written.
+  // But allow more writes to happen in this tick.
+  processNextTick(onEndNT, this);
+}
+
+function onEndNT(self) {
+  self.end();
+}
+
+Object.defineProperty(Duplex.prototype, 'destroyed', {
+  get: function () {
+    if (this._readableState === undefined || this._writableState === undefined) {
+      return false;
+    }
+    return this._readableState.destroyed && this._writableState.destroyed;
+  },
+  set: function (value) {
+    // we ignore the value if the stream
+    // has not been initialized yet
+    if (this._readableState === undefined || this._writableState === undefined) {
+      return;
+    }
+
+    // backward compatibility, the user is explicitly
+    // managing destroyed
+    this._readableState.destroyed = value;
+    this._writableState.destroyed = value;
+  }
+});
+
+Duplex.prototype._destroy = function (err, cb) {
+  this.push(null);
+  this.end();
+
+  processNextTick(cb, err);
+};
+
+function forEach(xs, f) {
+  for (var i = 0, l = xs.length; i < l; i++) {
+    f(xs[i], i);
+  }
+}
+
+/***/ }),
+/* 17 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// to indexed object, toObject with fallback for non-array-like ES3 strings
+var IObject = __webpack_require__(54);
+var defined = __webpack_require__(56);
+module.exports = function (it) {
+  return IObject(defined(it));
+};
+
+
+/***/ }),
+/* 18 */
+/***/ (function(module, exports) {
+
+var hasOwnProperty = {}.hasOwnProperty;
+module.exports = function (it, key) {
+  return hasOwnProperty.call(it, key);
+};
+
+
+/***/ }),
+/* 19 */
+/***/ (function(module, exports) {
+
+module.exports = function (exec) {
+  try {
+    return !!exec();
+  } catch (e) {
+    return true;
+  }
+};
+
+
+/***/ }),
+/* 20 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// optional / simple context binding
+var aFunction = __webpack_require__(97);
+module.exports = function (fn, that, length) {
+  aFunction(fn);
+  if (that === undefined) return fn;
+  switch (length) {
+    case 1: return function (a) {
+      return fn.call(that, a);
+    };
+    case 2: return function (a, b) {
+      return fn.call(that, a, b);
+    };
+    case 3: return function (a, b, c) {
+      return fn.call(that, a, b, c);
+    };
+  }
+  return function (/* ...args */) {
+    return fn.apply(that, arguments);
+  };
+};
+
+
+/***/ }),
+/* 21 */
+/***/ (function(module, exports) {
+
+if (typeof Object.create === 'function') {
+  // implementation from standard node.js 'util' module
+  module.exports = function inherits(ctor, superCtor) {
+    ctor.super_ = superCtor
+    ctor.prototype = Object.create(superCtor.prototype, {
+      constructor: {
+        value: ctor,
+        enumerable: false,
+        writable: true,
+        configurable: true
+      }
+    });
+  };
+} else {
+  // old school shim for old browsers
+  module.exports = function inherits(ctor, superCtor) {
+    ctor.super_ = superCtor
+    var TempCtor = function () {}
+    TempCtor.prototype = superCtor.prototype
+    ctor.prototype = new TempCtor()
+    ctor.prototype.constructor = ctor
+  }
+}
+
+
+/***/ }),
+/* 22 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var DecodeStream, Fixed, NumberT,
+    __hasProp = {}.hasOwnProperty,
+    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
+
+  DecodeStream = __webpack_require__(51);
+
+  NumberT = (function() {
+    function NumberT(type, endian) {
+      this.type = type;
+      this.endian = endian != null ? endian : 'BE';
+      this.fn = this.type;
+      if (this.type[this.type.length - 1] !== '8') {
+        this.fn += this.endian;
+      }
+    }
+
+    NumberT.prototype.size = function() {
+      return DecodeStream.TYPES[this.type];
+    };
+
+    NumberT.prototype.decode = function(stream) {
+      return stream['read' + this.fn]();
+    };
+
+    NumberT.prototype.encode = function(stream, val) {
+      return stream['write' + this.fn](val);
+    };
+
+    return NumberT;
+
+  })();
+
+  exports.Number = NumberT;
+
+  exports.uint8 = new NumberT('UInt8');
+
+  exports.uint16be = exports.uint16 = new NumberT('UInt16', 'BE');
+
+  exports.uint16le = new NumberT('UInt16', 'LE');
+
+  exports.uint24be = exports.uint24 = new NumberT('UInt24', 'BE');
+
+  exports.uint24le = new NumberT('UInt24', 'LE');
+
+  exports.uint32be = exports.uint32 = new NumberT('UInt32', 'BE');
+
+  exports.uint32le = new NumberT('UInt32', 'LE');
+
+  exports.int8 = new NumberT('Int8');
+
+  exports.int16be = exports.int16 = new NumberT('Int16', 'BE');
+
+  exports.int16le = new NumberT('Int16', 'LE');
+
+  exports.int24be = exports.int24 = new NumberT('Int24', 'BE');
+
+  exports.int24le = new NumberT('Int24', 'LE');
+
+  exports.int32be = exports.int32 = new NumberT('Int32', 'BE');
+
+  exports.int32le = new NumberT('Int32', 'LE');
+
+  exports.floatbe = exports.float = new NumberT('Float', 'BE');
+
+  exports.floatle = new NumberT('Float', 'LE');
+
+  exports.doublebe = exports.double = new NumberT('Double', 'BE');
+
+  exports.doublele = new NumberT('Double', 'LE');
+
+  Fixed = (function(_super) {
+    __extends(Fixed, _super);
+
+    function Fixed(size, endian, fracBits) {
+      if (fracBits == null) {
+        fracBits = size >> 1;
+      }
+      Fixed.__super__.constructor.call(this, "Int" + size, endian);
+      this._point = 1 << fracBits;
+    }
+
+    Fixed.prototype.decode = function(stream) {
+      return Fixed.__super__.decode.call(this, stream) / this._point;
+    };
+
+    Fixed.prototype.encode = function(stream, val) {
+      return Fixed.__super__.encode.call(this, stream, val * this._point | 0);
+    };
+
+    return Fixed;
+
+  })(NumberT);
+
+  exports.Fixed = Fixed;
+
+  exports.fixed16be = exports.fixed16 = new Fixed(16, 'BE');
+
+  exports.fixed16le = new Fixed(16, 'LE');
+
+  exports.fixed32be = exports.fixed32 = new Fixed(32, 'BE');
+
+  exports.fixed32le = new Fixed(32, 'LE');
+
+}).call(this);
+
+
+/***/ }),
+/* 23 */
+/***/ (function(module, exports) {
+
+module.exports = {};
+
+
+/***/ }),
+/* 24 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var $at = __webpack_require__(207)(true);
+
+// 21.1.3.27 String.prototype[@@iterator]()
+__webpack_require__(61)(String, 'String', function (iterated) {
+  this._t = String(iterated); // target
+  this._i = 0;                // next index
+// 21.1.5.2.1 %StringIteratorPrototype%.next()
+}, function () {
+  var O = this._t;
+  var index = this._i;
+  var point;
+  if (index >= O.length) return { value: undefined, done: true };
+  point = $at(O, index);
+  this._i += point.length;
+  return { value: point, done: false };
+});
+
+
+/***/ }),
+/* 25 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// NOTE: These type checking functions intentionally don't use `instanceof`
+// because it is fragile and can be easily faked with `Object.create()`.
+
+function isArray(arg) {
+  if (Array.isArray) {
+    return Array.isArray(arg);
+  }
+  return objectToString(arg) === '[object Array]';
+}
+exports.isArray = isArray;
+
+function isBoolean(arg) {
+  return typeof arg === 'boolean';
+}
+exports.isBoolean = isBoolean;
+
+function isNull(arg) {
+  return arg === null;
+}
+exports.isNull = isNull;
+
+function isNullOrUndefined(arg) {
+  return arg == null;
+}
+exports.isNullOrUndefined = isNullOrUndefined;
+
+function isNumber(arg) {
+  return typeof arg === 'number';
+}
+exports.isNumber = isNumber;
+
+function isString(arg) {
+  return typeof arg === 'string';
+}
+exports.isString = isString;
+
+function isSymbol(arg) {
+  return typeof arg === 'symbol';
+}
+exports.isSymbol = isSymbol;
+
+function isUndefined(arg) {
+  return arg === void 0;
+}
+exports.isUndefined = isUndefined;
+
+function isRegExp(re) {
+  return objectToString(re) === '[object RegExp]';
+}
+exports.isRegExp = isRegExp;
+
+function isObject(arg) {
+  return typeof arg === 'object' && arg !== null;
+}
+exports.isObject = isObject;
+
+function isDate(d) {
+  return objectToString(d) === '[object Date]';
+}
+exports.isDate = isDate;
+
+function isError(e) {
+  return (objectToString(e) === '[object Error]' || e instanceof Error);
+}
+exports.isError = isError;
+
+function isFunction(arg) {
+  return typeof arg === 'function';
+}
+exports.isFunction = isFunction;
+
+function isPrimitive(arg) {
+  return arg === null ||
+         typeof arg === 'boolean' ||
+         typeof arg === 'number' ||
+         typeof arg === 'string' ||
+         typeof arg === 'symbol' ||  // ES6 symbol
+         typeof arg === 'undefined';
+}
+exports.isPrimitive = isPrimitive;
+
+exports.isBuffer = Buffer.isBuffer;
+
+function objectToString(o) {
+  return Object.prototype.toString.call(o);
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 26 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+
+/*
+PDFObject - converts JavaScript types into their corrisponding PDF types.
+By Devon Govett
+ */
+
+(function() {
+  var PDFObject, PDFReference;
+
+  PDFObject = (function() {
+    var escapable, escapableRe, pad, swapBytes;
+
+    function PDFObject() {}
+
+    pad = function(str, length) {
+      return (Array(length + 1).join('0') + str).slice(-length);
+    };
+
+    escapableRe = /[\n\r\t\b\f\(\)\\]/g;
+
+    escapable = {
+      '\n': '\\n',
+      '\r': '\\r',
+      '\t': '\\t',
+      '\b': '\\b',
+      '\f': '\\f',
+      '\\': '\\\\',
+      '(': '\\(',
+      ')': '\\)'
+    };
+
+    swapBytes = function(buff) {
+      var a, i, j, l, ref;
+      l = buff.length;
+      if (l & 0x01) {
+        throw new Error("Buffer length must be even");
+      } else {
+        for (i = j = 0, ref = l - 1; j < ref; i = j += 2) {
+          a = buff[i];
+          buff[i] = buff[i + 1];
+          buff[i + 1] = a;
+        }
+      }
+      return buff;
+    };
+
+    PDFObject.convert = function(object) {
+      var e, i, isUnicode, items, j, key, out, ref, string, val;
+      if (typeof object === 'string') {
+        return '/' + object;
+      } else if (object instanceof String) {
+        string = object;
+        isUnicode = false;
+        for (i = j = 0, ref = string.length; j < ref; i = j += 1) {
+          if (string.charCodeAt(i) > 0x7f) {
+            isUnicode = true;
+            break;
+          }
+        }
+        if (isUnicode) {
+          string = swapBytes(new Buffer('\ufeff' + string, 'utf16le')).toString('binary');
+        }
+        string = string.replace(escapableRe, function(c) {
+          return escapable[c];
+        });
+        return '(' + string + ')';
+      } else if (Buffer.isBuffer(object)) {
+        return '<' + object.toString('hex') + '>';
+      } else if (object instanceof PDFReference) {
+        return object.toString();
+      } else if (object instanceof Date) {
+        return '(D:' + pad(object.getUTCFullYear(), 4) + pad(object.getUTCMonth() + 1, 2) + pad(object.getUTCDate(), 2) + pad(object.getUTCHours(), 2) + pad(object.getUTCMinutes(), 2) + pad(object.getUTCSeconds(), 2) + 'Z)';
+      } else if (Array.isArray(object)) {
+        items = ((function() {
+          var k, len, results;
+          results = [];
+          for (k = 0, len = object.length; k < len; k++) {
+            e = object[k];
+            results.push(PDFObject.convert(e));
+          }
+          return results;
+        })()).join(' ');
+        return '[' + items + ']';
+      } else if ({}.toString.call(object) === '[object Object]') {
+        out = ['<<'];
+        for (key in object) {
+          val = object[key];
+          out.push('/' + key + ' ' + PDFObject.convert(val));
+        }
+        out.push('>>');
+        return out.join('\n');
+      } else if (typeof object === 'number') {
+        return PDFObject.number(object);
+      } else {
+        return '' + object;
+      }
+    };
+
+    PDFObject.number = function(n) {
+      if (n > -1e21 && n < 1e21) {
+        return Math.round(n * 1e6) / 1e6;
+      }
+      throw new Error("unsupported number: " + n);
+    };
+
+    return PDFObject;
+
+  })();
+
+  module.exports = PDFObject;
+
+  PDFReference = __webpack_require__(87);
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 27 */
+/***/ (function(module, exports) {
+
+module.exports = function (bitmap, value) {
+  return {
+    enumerable: !(bitmap & 1),
+    configurable: !(bitmap & 2),
+    writable: !(bitmap & 4),
+    value: value
+  };
+};
+
+
+/***/ }),
+/* 28 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(201);
+var global = __webpack_require__(10);
+var hide = __webpack_require__(13);
+var Iterators = __webpack_require__(23);
+var TO_STRING_TAG = __webpack_require__(4)('toStringTag');
+
+var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
+  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
+  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
+  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
+  'TextTrackList,TouchList').split(',');
+
+for (var i = 0; i < DOMIterables.length; i++) {
+  var NAME = DOMIterables[i];
+  var Collection = global[NAME];
+  var proto = Collection && Collection.prototype;
+  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
+  Iterators[NAME] = Iterators.Array;
+}
+
+
+/***/ }),
+/* 29 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.14 / 15.2.3.14 Object.keys(O)
+var $keys = __webpack_require__(101);
+var enumBugKeys = __webpack_require__(66);
+
+module.exports = Object.keys || function keys(O) {
+  return $keys(O, enumBugKeys);
+};
+
+
+/***/ }),
+/* 30 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.1.13 ToObject(argument)
+var defined = __webpack_require__(56);
+module.exports = function (it) {
+  return Object(defined(it));
+};
+
+
+/***/ }),
+/* 31 */
+/***/ (function(module, exports) {
+
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+function EventEmitter() {
+  this._events = this._events || {};
+  this._maxListeners = this._maxListeners || undefined;
+}
+module.exports = EventEmitter;
+
+// Backwards-compat with node 0.10.x
+EventEmitter.EventEmitter = EventEmitter;
+
+EventEmitter.prototype._events = undefined;
+EventEmitter.prototype._maxListeners = undefined;
+
+// By default EventEmitters will print a warning if more than 10 listeners are
+// added to it. This is a useful default which helps finding memory leaks.
+EventEmitter.defaultMaxListeners = 10;
+
+// Obviously not all Emitters should be limited to 10. This function allows
+// that to be increased. Set to zero for unlimited.
+EventEmitter.prototype.setMaxListeners = function(n) {
+  if (!isNumber(n) || n < 0 || isNaN(n))
+    throw TypeError('n must be a positive number');
+  this._maxListeners = n;
+  return this;
+};
+
+EventEmitter.prototype.emit = function(type) {
+  var er, handler, len, args, i, listeners;
+
+  if (!this._events)
+    this._events = {};
+
+  // If there is no 'error' event listener then throw.
+  if (type === 'error') {
+    if (!this._events.error ||
+        (isObject(this._events.error) && !this._events.error.length)) {
+      er = arguments[1];
+      if (er instanceof Error) {
+        throw er; // Unhandled 'error' event
+      } else {
+        // At least give some kind of context to the user
+        var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
+        err.context = er;
+        throw err;
+      }
+    }
+  }
+
+  handler = this._events[type];
+
+  if (isUndefined(handler))
+    return false;
+
+  if (isFunction(handler)) {
+    switch (arguments.length) {
+      // fast cases
+      case 1:
+        handler.call(this);
+        break;
+      case 2:
+        handler.call(this, arguments[1]);
+        break;
+      case 3:
+        handler.call(this, arguments[1], arguments[2]);
+        break;
+      // slower
+      default:
+        args = Array.prototype.slice.call(arguments, 1);
+        handler.apply(this, args);
+    }
+  } else if (isObject(handler)) {
+    args = Array.prototype.slice.call(arguments, 1);
+    listeners = handler.slice();
+    len = listeners.length;
+    for (i = 0; i < len; i++)
+      listeners[i].apply(this, args);
+  }
+
+  return true;
+};
+
+EventEmitter.prototype.addListener = function(type, listener) {
+  var m;
+
+  if (!isFunction(listener))
+    throw TypeError('listener must be a function');
+
+  if (!this._events)
+    this._events = {};
+
+  // To avoid recursion in the case that type === "newListener"! Before
+  // adding it to the listeners, first emit "newListener".
+  if (this._events.newListener)
+    this.emit('newListener', type,
+              isFunction(listener.listener) ?
+              listener.listener : listener);
+
+  if (!this._events[type])
+    // Optimize the case of one listener. Don't need the extra array object.
+    this._events[type] = listener;
+  else if (isObject(this._events[type]))
+    // If we've already got an array, just append.
+    this._events[type].push(listener);
+  else
+    // Adding the second element, need to change to array.
+    this._events[type] = [this._events[type], listener];
+
+  // Check for listener leak
+  if (isObject(this._events[type]) && !this._events[type].warned) {
+    if (!isUndefined(this._maxListeners)) {
+      m = this._maxListeners;
+    } else {
+      m = EventEmitter.defaultMaxListeners;
+    }
+
+    if (m && m > 0 && this._events[type].length > m) {
+      this._events[type].warned = true;
+      console.error('(node) warning: possible EventEmitter memory ' +
+                    'leak detected. %d listeners added. ' +
+                    'Use emitter.setMaxListeners() to increase limit.',
+                    this._events[type].length);
+      if (typeof console.trace === 'function') {
+        // not supported in IE 10
+        console.trace();
+      }
+    }
+  }
+
+  return this;
+};
+
+EventEmitter.prototype.on = EventEmitter.prototype.addListener;
+
+EventEmitter.prototype.once = function(type, listener) {
+  if (!isFunction(listener))
+    throw TypeError('listener must be a function');
+
+  var fired = false;
+
+  function g() {
+    this.removeListener(type, g);
+
+    if (!fired) {
+      fired = true;
+      listener.apply(this, arguments);
+    }
+  }
+
+  g.listener = listener;
+  this.on(type, g);
+
+  return this;
+};
+
+// emits a 'removeListener' event iff the listener was removed
+EventEmitter.prototype.removeListener = function(type, listener) {
+  var list, position, length, i;
+
+  if (!isFunction(listener))
+    throw TypeError('listener must be a function');
+
+  if (!this._events || !this._events[type])
+    return this;
+
+  list = this._events[type];
+  length = list.length;
+  position = -1;
+
+  if (list === listener ||
+      (isFunction(list.listener) && list.listener === listener)) {
+    delete this._events[type];
+    if (this._events.removeListener)
+      this.emit('removeListener', type, listener);
+
+  } else if (isObject(list)) {
+    for (i = length; i-- > 0;) {
+      if (list[i] === listener ||
+          (list[i].listener && list[i].listener === listener)) {
+        position = i;
+        break;
+      }
+    }
+
+    if (position < 0)
+      return this;
+
+    if (list.length === 1) {
+      list.length = 0;
+      delete this._events[type];
+    } else {
+      list.splice(position, 1);
+    }
+
+    if (this._events.removeListener)
+      this.emit('removeListener', type, listener);
+  }
+
+  return this;
+};
+
+EventEmitter.prototype.removeAllListeners = function(type) {
+  var key, listeners;
+
+  if (!this._events)
+    return this;
+
+  // not listening for removeListener, no need to emit
+  if (!this._events.removeListener) {
+    if (arguments.length === 0)
+      this._events = {};
+    else if (this._events[type])
+      delete this._events[type];
+    return this;
+  }
+
+  // emit removeListener for all listeners on all events
+  if (arguments.length === 0) {
+    for (key in this._events) {
+      if (key === 'removeListener') continue;
+      this.removeAllListeners(key);
+    }
+    this.removeAllListeners('removeListener');
+    this._events = {};
+    return this;
+  }
+
+  listeners = this._events[type];
+
+  if (isFunction(listeners)) {
+    this.removeListener(type, listeners);
+  } else if (listeners) {
+    // LIFO order
+    while (listeners.length)
+      this.removeListener(type, listeners[listeners.length - 1]);
+  }
+  delete this._events[type];
+
+  return this;
+};
+
+EventEmitter.prototype.listeners = function(type) {
+  var ret;
+  if (!this._events || !this._events[type])
+    ret = [];
+  else if (isFunction(this._events[type]))
+    ret = [this._events[type]];
+  else
+    ret = this._events[type].slice();
+  return ret;
+};
+
+EventEmitter.prototype.listenerCount = function(type) {
+  if (this._events) {
+    var evlistener = this._events[type];
+
+    if (isFunction(evlistener))
+      return 1;
+    else if (evlistener)
+      return evlistener.length;
+  }
+  return 0;
+};
+
+EventEmitter.listenerCount = function(emitter, type) {
+  return emitter.listenerCount(type);
+};
+
+function isFunction(arg) {
+  return typeof arg === 'function';
+}
+
+function isNumber(arg) {
+  return typeof arg === 'number';
+}
+
+function isObject(arg) {
+  return typeof arg === 'object' && arg !== null;
+}
+
+function isUndefined(arg) {
+  return arg === void 0;
+}
+
+
+/***/ }),
+/* 32 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(process) {
+
+if (!process.version ||
+    process.version.indexOf('v0.') === 0 ||
+    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
+  module.exports = { nextTick: nextTick };
+} else {
+  module.exports = process
+}
+
+function nextTick(fn, arg1, arg2, arg3) {
+  if (typeof fn !== 'function') {
+    throw new TypeError('"callback" argument must be a function');
+  }
+  var len = arguments.length;
+  var args, i;
+  switch (len) {
+  case 0:
+  case 1:
+    return process.nextTick(fn);
+  case 2:
+    return process.nextTick(function afterTickOne() {
+      fn.call(null, arg1);
+    });
+  case 3:
+    return process.nextTick(function afterTickTwo() {
+      fn.call(null, arg1, arg2);
+    });
+  case 4:
+    return process.nextTick(function afterTickThree() {
+      fn.call(null, arg1, arg2, arg3);
+    });
+  default:
+    args = new Array(len - 1);
+    i = 0;
+    while (i < args.length) {
+      args[i++] = arguments[i];
+    }
+    return process.nextTick(function afterTick() {
+      fn.apply(null, args);
+    });
+  }
+}
+
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11)))
+
+/***/ }),
+/* 33 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* eslint-disable node/no-deprecated-api */
+var buffer = __webpack_require__(1)
+var Buffer = buffer.Buffer
+
+// alternative to using Object.keys for old browsers
+function copyProps (src, dst) {
+  for (var key in src) {
+    dst[key] = src[key]
+  }
+}
+if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
+  module.exports = buffer
+} else {
+  // Copy properties from require('buffer')
+  copyProps(buffer, exports)
+  exports.Buffer = SafeBuffer
+}
+
+function SafeBuffer (arg, encodingOrOffset, length) {
+  return Buffer(arg, encodingOrOffset, length)
+}
+
+// Copy static methods from Buffer
+copyProps(Buffer, SafeBuffer)
+
+SafeBuffer.from = function (arg, encodingOrOffset, length) {
+  if (typeof arg === 'number') {
+    throw new TypeError('Argument must not be a number')
+  }
+  return Buffer(arg, encodingOrOffset, length)
+}
+
+SafeBuffer.alloc = function (size, fill, encoding) {
+  if (typeof size !== 'number') {
+    throw new TypeError('Argument must be a number')
+  }
+  var buf = Buffer(size)
+  if (fill !== undefined) {
+    if (typeof encoding === 'string') {
+      buf.fill(fill, encoding)
+    } else {
+      buf.fill(fill)
+    }
+  } else {
+    buf.fill(0)
+  }
+  return buf
+}
+
+SafeBuffer.allocUnsafe = function (size) {
+  if (typeof size !== 'number') {
+    throw new TypeError('Argument must be a number')
+  }
+  return Buffer(size)
+}
+
+SafeBuffer.allocUnsafeSlow = function (size) {
+  if (typeof size !== 'number') {
+    throw new TypeError('Argument must be a number')
+  }
+  return buffer.SlowBuffer(size)
+}
+
+
+/***/ }),
+/* 34 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+
+var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&
+                (typeof Uint16Array !== 'undefined') &&
+                (typeof Int32Array !== 'undefined');
+
+function _has(obj, key) {
+  return Object.prototype.hasOwnProperty.call(obj, key);
+}
+
+exports.assign = function (obj /*from1, from2, from3, ...*/) {
+  var sources = Array.prototype.slice.call(arguments, 1);
+  while (sources.length) {
+    var source = sources.shift();
+    if (!source) { continue; }
+
+    if (typeof source !== 'object') {
+      throw new TypeError(source + 'must be non-object');
+    }
+
+    for (var p in source) {
+      if (_has(source, p)) {
+        obj[p] = source[p];
+      }
+    }
+  }
+
+  return obj;
+};
+
+
+// reduce buffer size, avoiding mem copy
+exports.shrinkBuf = function (buf, size) {
+  if (buf.length === size) { return buf; }
+  if (buf.subarray) { return buf.subarray(0, size); }
+  buf.length = size;
+  return buf;
+};
+
+
+var fnTyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    if (src.subarray && dest.subarray) {
+      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
+      return;
+    }
+    // Fallback to ordinary array
+    for (var i = 0; i < len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function (chunks) {
+    var i, l, len, pos, chunk, result;
+
+    // calculate data length
+    len = 0;
+    for (i = 0, l = chunks.length; i < l; i++) {
+      len += chunks[i].length;
+    }
+
+    // join chunks
+    result = new Uint8Array(len);
+    pos = 0;
+    for (i = 0, l = chunks.length; i < l; i++) {
+      chunk = chunks[i];
+      result.set(chunk, pos);
+      pos += chunk.length;
+    }
+
+    return result;
+  }
+};
+
+var fnUntyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    for (var i = 0; i < len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function (chunks) {
+    return [].concat.apply([], chunks);
+  }
+};
+
+
+// Enable/Disable typed arrays use, for testing
+//
+exports.setTyped = function (on) {
+  if (on) {
+    exports.Buf8  = Uint8Array;
+    exports.Buf16 = Uint16Array;
+    exports.Buf32 = Int32Array;
+    exports.assign(exports, fnTyped);
+  } else {
+    exports.Buf8  = Array;
+    exports.Buf16 = Array;
+    exports.Buf32 = Array;
+    exports.assign(exports, fnUntyped);
+  }
+};
+
+exports.setTyped(TYPED_OK);
+
+
+/***/ }),
+/* 35 */
+/***/ (function(module, exports) {
+
+exports.f = {}.propertyIsEnumerable;
+
+
+/***/ }),
+/* 36 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+var anObject = __webpack_require__(14);
+var dPs = __webpack_require__(100);
+var enumBugKeys = __webpack_require__(66);
+var IE_PROTO = __webpack_require__(64)('IE_PROTO');
+var Empty = function () { /* empty */ };
+var PROTOTYPE = 'prototype';
+
+// Create object with fake `null` prototype: use iframe Object with cleared prototype
+var createDict = function () {
+  // Thrash, waste and sodomy: IE GC bug
+  var iframe = __webpack_require__(96)('iframe');
+  var i = enumBugKeys.length;
+  var lt = '<';
+  var gt = '>';
+  var iframeDocument;
+  iframe.style.display = 'none';
+  __webpack_require__(205).appendChild(iframe);
+  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+  // createDict = iframe.contentWindow.Object;
+  // html.removeChild(iframe);
+  iframeDocument = iframe.contentWindow.document;
+  iframeDocument.open();
+  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
+  iframeDocument.close();
+  createDict = iframeDocument.F;
+  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
+  return createDict();
+};
+
+module.exports = Object.create || function create(O, Properties) {
+  var result;
+  if (O !== null) {
+    Empty[PROTOTYPE] = anObject(O);
+    result = new Empty();
+    Empty[PROTOTYPE] = null;
+    // add "__proto__" for Object.getPrototypeOf polyfill
+    result[IE_PROTO] = O;
+  } else result = createDict();
+  return Properties === undefined ? result : dPs(result, Properties);
+};
+
+
+/***/ }),
+/* 37 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.1.15 ToLength
+var toInteger = __webpack_require__(63);
+var min = Math.min;
+module.exports = function (it) {
+  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+};
+
+
+/***/ }),
+/* 38 */
+/***/ (function(module, exports) {
+
+var id = 0;
+var px = Math.random();
+module.exports = function (key) {
+  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+};
+
+
+/***/ }),
+/* 39 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var def = __webpack_require__(6).f;
+var has = __webpack_require__(18);
+var TAG = __webpack_require__(4)('toStringTag');
+
+module.exports = function (it, tag, stat) {
+  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
+};
+
+
+/***/ }),
+/* 40 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var META = __webpack_require__(38)('meta');
+var isObject = __webpack_require__(9);
+var has = __webpack_require__(18);
+var setDesc = __webpack_require__(6).f;
+var id = 0;
+var isExtensible = Object.isExtensible || function () {
+  return true;
+};
+var FREEZE = !__webpack_require__(19)(function () {
+  return isExtensible(Object.preventExtensions({}));
+});
+var setMeta = function (it) {
+  setDesc(it, META, { value: {
+    i: 'O' + ++id, // object ID
+    w: {}          // weak collections IDs
+  } });
+};
+var fastKey = function (it, create) {
+  // return primitive with prefix
+  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+  if (!has(it, META)) {
+    // can't set metadata to uncaught frozen object
+    if (!isExtensible(it)) return 'F';
+    // not necessary to add metadata
+    if (!create) return 'E';
+    // add missing metadata
+    setMeta(it);
+  // return object ID
+  } return it[META].i;
+};
+var getWeak = function (it, create) {
+  if (!has(it, META)) {
+    // can't set metadata to uncaught frozen object
+    if (!isExtensible(it)) return true;
+    // not necessary to add metadata
+    if (!create) return false;
+    // add missing metadata
+    setMeta(it);
+  // return hash weak collections IDs
+  } return it[META].w;
+};
+// add metadata on freeze-family methods calling
+var onFreeze = function (it) {
+  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
+  return it;
+};
+var meta = module.exports = {
+  KEY: META,
+  NEED: false,
+  fastKey: fastKey,
+  getWeak: getWeak,
+  onFreeze: onFreeze
+};
+
+
+/***/ }),
+/* 41 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ctx = __webpack_require__(20);
+var call = __webpack_require__(111);
+var isArrayIter = __webpack_require__(112);
+var anObject = __webpack_require__(14);
+var toLength = __webpack_require__(37);
+var getIterFn = __webpack_require__(67);
+var BREAK = {};
+var RETURN = {};
+var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
+  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
+  var f = ctx(fn, that, entries ? 2 : 1);
+  var index = 0;
+  var length, step, iterator, result;
+  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
+  // fast case for arrays with default iterator
+  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
+    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+    if (result === BREAK || result === RETURN) return result;
+  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
+    result = call(iterator, f, step.value, entries);
+    if (result === BREAK || result === RETURN) return result;
+  }
+};
+exports.BREAK = BREAK;
+exports.RETURN = RETURN;
+
+
+/***/ }),
+/* 42 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var isString = __webpack_require__(0).isString;
+var isNumber = __webpack_require__(0).isNumber;
+var isObject = __webpack_require__(0).isObject;
+var isArray = __webpack_require__(0).isArray;
+var LineBreaker = __webpack_require__(78);
+
+var LEADING = /^(\s)+/g;
+var TRAILING = /(\s)+$/g;
+
+/**
+ * Creates an instance of TextTools - text measurement utility
+ *
+ * @constructor
+ * @param {FontProvider} fontProvider
+ */
+function TextTools(fontProvider) {
+	this.fontProvider = fontProvider;
+}
+
+/**
+ * Converts an array of strings (or inline-definition-objects) into a collection
+ * of inlines and calculated minWidth/maxWidth.
+ * and their min/max widths
+ * @param  {Object} textArray - an array of inline-definition-objects (or strings)
+ * @param  {Object} styleContextStack current style stack
+ * @return {Object}                   collection of inlines, minWidth, maxWidth
+ */
+TextTools.prototype.buildInlines = function (textArray, styleContextStack) {
+	var measured = measure(this.fontProvider, textArray, styleContextStack);
+
+	var minWidth = 0,
+		maxWidth = 0,
+		currentLineWidth;
+
+	measured.forEach(function (inline) {
+		minWidth = Math.max(minWidth, inline.width - inline.leadingCut - inline.trailingCut);
+
+		if (!currentLineWidth) {
+			currentLineWidth = {width: 0, leadingCut: inline.leadingCut, trailingCut: 0};
+		}
+
+		currentLineWidth.width += inline.width;
+		currentLineWidth.trailingCut = inline.trailingCut;
+
+		maxWidth = Math.max(maxWidth, getTrimmedWidth(currentLineWidth));
+
+		if (inline.lineEnd) {
+			currentLineWidth = null;
+		}
+	});
+
+	if (getStyleProperty({}, styleContextStack, 'noWrap', false)) {
+		minWidth = maxWidth;
+	}
+
+	return {
+		items: measured,
+		minWidth: minWidth,
+		maxWidth: maxWidth
+	};
+
+	function getTrimmedWidth(item) {
+		return Math.max(0, item.width - item.leadingCut - item.trailingCut);
+	}
+};
+
+/**
+ * Returns size of the specified string (without breaking it) using the current style
+ * @param  {String} text              text to be measured
+ * @param  {Object} styleContextStack current style stack
+ * @return {Object}                   size of the specified string
+ */
+TextTools.prototype.sizeOfString = function (text, styleContextStack) {
+	text = text ? text.toString().replace(/\t/g, '    ') : '';
+
+	//TODO: refactor - extract from measure
+	var fontName = getStyleProperty({}, styleContextStack, 'font', 'Roboto');
+	var fontSize = getStyleProperty({}, styleContextStack, 'fontSize', 12);
+	var fontFeatures = getStyleProperty({}, styleContextStack, 'fontFeatures', null);
+	var bold = getStyleProperty({}, styleContextStack, 'bold', false);
+	var italics = getStyleProperty({}, styleContextStack, 'italics', false);
+	var lineHeight = getStyleProperty({}, styleContextStack, 'lineHeight', 1);
+	var characterSpacing = getStyleProperty({}, styleContextStack, 'characterSpacing', 0);
+
+	var font = this.fontProvider.provideFont(fontName, bold, italics);
+
+	return {
+		width: widthOfString(text, font, fontSize, characterSpacing, fontFeatures),
+		height: font.lineHeight(fontSize) * lineHeight,
+		fontSize: fontSize,
+		lineHeight: lineHeight,
+		ascender: font.ascender / 1000 * fontSize,
+		descender: font.descender / 1000 * fontSize
+	};
+};
+
+TextTools.prototype.widthOfString = function (text, font, fontSize, characterSpacing, fontFeatures) {
+	return widthOfString(text, font, fontSize, characterSpacing, fontFeatures);
+};
+
+function splitWords(text, noWrap) {
+	var results = [];
+	text = text.replace(/\t/g, '    ');
+
+	if (noWrap) {
+		results.push({text: text});
+		return results;
+	}
+
+	var breaker = new LineBreaker(text);
+	var last = 0;
+	var bk;
+
+	while (bk = breaker.nextBreak()) {
+		var word = text.slice(last, bk.position);
+
+		if (bk.required || word.match(/\r?\n$|\r$/)) { // new line
+			word = word.replace(/\r?\n$|\r$/, '');
+			results.push({text: word, lineEnd: true});
+		} else {
+			results.push({text: word});
+		}
+
+		last = bk.position;
+	}
+
+	return results;
+}
+
+function copyStyle(source, destination) {
+	destination = destination || {};
+	source = source || {}; //TODO: default style
+
+	for (var key in source) {
+		if (key != 'text' && source.hasOwnProperty(key)) {
+			destination[key] = source[key];
+		}
+	}
+
+	return destination;
+}
+
+function normalizeTextArray(array, styleContextStack) {
+	function flatten(array) {
+		return array.reduce(function (prev, cur) {
+			var current = isArray(cur.text) ? flatten(cur.text) : cur;
+			var more = [].concat(current).some(Array.isArray);
+			return prev.concat(more ? flatten(current) : current);
+		}, []);
+	}
+
+	var results = [];
+
+	if (!isArray(array)) {
+		array = [array];
+	}
+
+	array = flatten(array);
+
+	for (var i = 0, l = array.length; i < l; i++) {
+		var item = array[i];
+		var style = null;
+		var words;
+
+		var noWrap = getStyleProperty(item || {}, styleContextStack, 'noWrap', false);
+		if (isObject(item)) {
+			words = splitWords(normalizeString(item.text), noWrap);
+			style = copyStyle(item);
+		} else {
+			words = splitWords(normalizeString(item), noWrap);
+		}
+
+		for (var i2 = 0, l2 = words.length; i2 < l2; i2++) {
+			var result = {
+				text: words[i2].text
+			};
+
+			if (words[i2].lineEnd) {
+				result.lineEnd = true;
+			}
+
+			copyStyle(style, result);
+
+			results.push(result);
+		}
+	}
+
+	return results;
+}
+
+function normalizeString(value) {
+	if (value === undefined || value === null) {
+		return '';
+	} else if (isNumber(value)) {
+		return value.toString();
+	} else if (isString(value)) {
+		return value;
+	} else {
+		return value.toString();
+	}
+}
+
+function getStyleProperty(item, styleContextStack, property, defaultValue) {
+	var value;
+
+	if (item[property] !== undefined && item[property] !== null) {
+		// item defines this property
+		return item[property];
+	}
+
+	if (!styleContextStack) {
+		return defaultValue;
+	}
+
+	styleContextStack.auto(item, function () {
+		value = styleContextStack.getProperty(property);
+	});
+
+	if (value !== null && value !== undefined) {
+		return value;
+	} else {
+		return defaultValue;
+	}
+}
+
+function measure(fontProvider, textArray, styleContextStack) {
+	var normalized = normalizeTextArray(textArray, styleContextStack);
+
+	if (normalized.length) {
+		var leadingIndent = getStyleProperty(normalized[0], styleContextStack, 'leadingIndent', 0);
+
+		if (leadingIndent) {
+			normalized[0].leadingCut = -leadingIndent;
+			normalized[0].leadingIndent = leadingIndent;
+		}
+	}
+
+	normalized.forEach(function (item) {
+		var fontName = getStyleProperty(item, styleContextStack, 'font', 'Roboto');
+		var fontSize = getStyleProperty(item, styleContextStack, 'fontSize', 12);
+		var fontFeatures = getStyleProperty(item, styleContextStack, 'fontFeatures', null);
+		var bold = getStyleProperty(item, styleContextStack, 'bold', false);
+		var italics = getStyleProperty(item, styleContextStack, 'italics', false);
+		var color = getStyleProperty(item, styleContextStack, 'color', 'black');
+		var decoration = getStyleProperty(item, styleContextStack, 'decoration', null);
+		var decorationColor = getStyleProperty(item, styleContextStack, 'decorationColor', null);
+		var decorationStyle = getStyleProperty(item, styleContextStack, 'decorationStyle', null);
+		var background = getStyleProperty(item, styleContextStack, 'background', null);
+		var lineHeight = getStyleProperty(item, styleContextStack, 'lineHeight', 1);
+		var characterSpacing = getStyleProperty(item, styleContextStack, 'characterSpacing', 0);
+		var link = getStyleProperty(item, styleContextStack, 'link', null);
+		var linkToPage = getStyleProperty(item, styleContextStack, 'linkToPage', null);
+		var noWrap = getStyleProperty(item, styleContextStack, 'noWrap', null);
+		var preserveLeadingSpaces = getStyleProperty(item, styleContextStack, 'preserveLeadingSpaces', false);
+
+		var font = fontProvider.provideFont(fontName, bold, italics);
+
+		item.width = widthOfString(item.text, font, fontSize, characterSpacing, fontFeatures);
+		item.height = font.lineHeight(fontSize) * lineHeight;
+
+		var leadingSpaces = item.text.match(LEADING);
+
+		if (!item.leadingCut) {
+			item.leadingCut = 0;
+		}
+
+		if (leadingSpaces && !preserveLeadingSpaces) {
+			item.leadingCut += widthOfString(leadingSpaces[0], font, fontSize, characterSpacing, fontFeatures);
+		}
+
+		var trailingSpaces = item.text.match(TRAILING);
+		if (trailingSpaces) {
+			item.trailingCut = widthOfString(trailingSpaces[0], font, fontSize, characterSpacing, fontFeatures);
+		} else {
+			item.trailingCut = 0;
+		}
+
+		item.alignment = getStyleProperty(item, styleContextStack, 'alignment', 'left');
+		item.font = font;
+		item.fontSize = fontSize;
+		item.fontFeatures = fontFeatures;
+		item.characterSpacing = characterSpacing;
+		item.color = color;
+		item.decoration = decoration;
+		item.decorationColor = decorationColor;
+		item.decorationStyle = decorationStyle;
+		item.background = background;
+		item.link = link;
+		item.linkToPage = linkToPage;
+		item.noWrap = noWrap;
+	});
+
+	return normalized;
+}
+
+function widthOfString(text, font, fontSize, characterSpacing, fontFeatures) {
+	return font.widthOfString(text, fontSize, fontFeatures) + ((characterSpacing || 0) * (text.length - 1));
+}
+
+module.exports = TextTools;
+
+
+/***/ }),
+/* 43 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+var UnicodeTrie, inflate;
+
+inflate = __webpack_require__(79);
+
+UnicodeTrie = (function() {
+  var DATA_BLOCK_LENGTH, DATA_GRANULARITY, DATA_MASK, INDEX_1_OFFSET, INDEX_2_BLOCK_LENGTH, INDEX_2_BMP_LENGTH, INDEX_2_MASK, INDEX_SHIFT, LSCP_INDEX_2_LENGTH, LSCP_INDEX_2_OFFSET, OMITTED_BMP_INDEX_1_LENGTH, SHIFT_1, SHIFT_1_2, SHIFT_2, UTF8_2B_INDEX_2_LENGTH, UTF8_2B_INDEX_2_OFFSET;
+
+  SHIFT_1 = 6 + 5;
+
+  SHIFT_2 = 5;
+
+  SHIFT_1_2 = SHIFT_1 - SHIFT_2;
+
+  OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;
+
+  INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;
+
+  INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;
+
+  INDEX_SHIFT = 2;
+
+  DATA_BLOCK_LENGTH = 1 << SHIFT_2;
+
+  DATA_MASK = DATA_BLOCK_LENGTH - 1;
+
+  LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;
+
+  LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;
+
+  INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + LSCP_INDEX_2_LENGTH;
+
+  UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;
+
+  UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6;
+
+  INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;
+
+  DATA_GRANULARITY = 1 << INDEX_SHIFT;
+
+  function UnicodeTrie(data) {
+    var isBuffer, uncompressedLength, view;
+    isBuffer = typeof data.readUInt32BE === 'function' && typeof data.slice === 'function';
+    if (isBuffer || data instanceof Uint8Array) {
+      if (isBuffer) {
+        this.highStart = data.readUInt32BE(0);
+        this.errorValue = data.readUInt32BE(4);
+        uncompressedLength = data.readUInt32BE(8);
+        data = data.slice(12);
+      } else {
+        view = new DataView(data.buffer);
+        this.highStart = view.getUint32(0);
+        this.errorValue = view.getUint32(4);
+        uncompressedLength = view.getUint32(8);
+        data = data.subarray(12);
+      }
+      data = inflate(data, new Uint8Array(uncompressedLength));
+      data = inflate(data, new Uint8Array(uncompressedLength));
+      this.data = new Uint32Array(data.buffer);
+    } else {
+      this.data = data.data, this.highStart = data.highStart, this.errorValue = data.errorValue;
+    }
+  }
+
+  UnicodeTrie.prototype.get = function(codePoint) {
+    var index;
+    if (codePoint < 0 || codePoint > 0x10ffff) {
+      return this.errorValue;
+    }
+    if (codePoint < 0xd800 || (codePoint > 0xdbff && codePoint <= 0xffff)) {
+      index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);
+      return this.data[index];
+    }
+    if (codePoint <= 0xffff) {
+      index = (this.data[LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);
+      return this.data[index];
+    }
+    if (codePoint < this.highStart) {
+      index = this.data[(INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH) + (codePoint >> SHIFT_1)];
+      index = this.data[index + ((codePoint >> SHIFT_2) & INDEX_2_MASK)];
+      index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);
+      return this.data[index];
+    }
+    return this.data[this.data.length - DATA_GRANULARITY];
+  };
+
+  return UnicodeTrie;
+
+})();
+
+module.exports = UnicodeTrie;
+
+
+/***/ }),
+/* 44 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var isString = __webpack_require__(0).isString;
+
+function buildColumnWidths(columns, availableWidth) {
+	var autoColumns = [],
+		autoMin = 0, autoMax = 0,
+		starColumns = [],
+		starMaxMin = 0,
+		starMaxMax = 0,
+		fixedColumns = [],
+		initial_availableWidth = availableWidth;
+
+	columns.forEach(function (column) {
+		if (isAutoColumn(column)) {
+			autoColumns.push(column);
+			autoMin += column._minWidth;
+			autoMax += column._maxWidth;
+		} else if (isStarColumn(column)) {
+			starColumns.push(column);
+			starMaxMin = Math.max(starMaxMin, column._minWidth);
+			starMaxMax = Math.max(starMaxMax, column._maxWidth);
+		} else {
+			fixedColumns.push(column);
+		}
+	});
+
+	fixedColumns.forEach(function (col) {
+		// width specified as %
+		if (isString(col.width) && /\d+%/.test(col.width)) {
+			col.width = parseFloat(col.width) * initial_availableWidth / 100;
+		}
+		if (col.width < (col._minWidth) && col.elasticWidth) {
+			col._calcWidth = col._minWidth;
+		} else {
+			col._calcWidth = col.width;
+		}
+
+		availableWidth -= col._calcWidth;
+	});
+
+	// http://www.freesoft.org/CIE/RFC/1942/18.htm
+	// http://www.w3.org/TR/CSS2/tables.html#width-layout
+	// http://dev.w3.org/csswg/css3-tables-algorithms/Overview.src.htm
+	var minW = autoMin + starMaxMin * starColumns.length;
+	var maxW = autoMax + starMaxMax * starColumns.length;
+	if (minW >= availableWidth) {
+		// case 1 - there's no way to fit all columns within available width
+		// that's actually pretty bad situation with PDF as we have no horizontal scroll
+		// no easy workaround (unless we decide, in the future, to split single words)
+		// currently we simply use minWidths for all columns
+		autoColumns.forEach(function (col) {
+			col._calcWidth = col._minWidth;
+		});
+
+		starColumns.forEach(function (col) {
+			col._calcWidth = starMaxMin; // starMaxMin already contains padding
+		});
+	} else {
+		if (maxW < availableWidth) {
+			// case 2 - we can fit rest of the table within available space
+			autoColumns.forEach(function (col) {
+				col._calcWidth = col._maxWidth;
+				availableWidth -= col._calcWidth;
+			});
+		} else {
+			// maxW is too large, but minW fits within available width
+			var W = availableWidth - minW;
+			var D = maxW - minW;
+
+			autoColumns.forEach(function (col) {
+				var d = col._maxWidth - col._minWidth;
+				col._calcWidth = col._minWidth + d * W / D;
+				availableWidth -= col._calcWidth;
+			});
+		}
+
+		if (starColumns.length > 0) {
+			var starSize = availableWidth / starColumns.length;
+
+			starColumns.forEach(function (col) {
+				col._calcWidth = starSize;
+			});
+		}
+	}
+}
+
+function isAutoColumn(column) {
+	return column.width === 'auto';
+}
+
+function isStarColumn(column) {
+	return column.width === null || column.width === undefined || column.width === '*' || column.width === 'star';
+}
+
+//TODO: refactor and reuse in measureTable
+function measureMinMax(columns) {
+	var result = {min: 0, max: 0};
+
+	var maxStar = {min: 0, max: 0};
+	var starCount = 0;
+
+	for (var i = 0, l = columns.length; i < l; i++) {
+		var c = columns[i];
+
+		if (isStarColumn(c)) {
+			maxStar.min = Math.max(maxStar.min, c._minWidth);
+			maxStar.max = Math.max(maxStar.max, c._maxWidth);
+			starCount++;
+		} else if (isAutoColumn(c)) {
+			result.min += c._minWidth;
+			result.max += c._maxWidth;
+		} else {
+			result.min += ((c.width !== undefined && c.width) || c._minWidth);
+			result.max += ((c.width !== undefined && c.width) || c._maxWidth);
+		}
+	}
+
+	if (starCount) {
+		result.min += starCount * maxStar.min;
+		result.max += starCount * maxStar.max;
+	}
+
+	return result;
+}
+
+/**
+ * Calculates column widths
+ * @private
+ */
+module.exports = {
+	buildColumnWidths: buildColumnWidths,
+	measureMinMax: measureMinMax,
+	isAutoColumn: isAutoColumn,
+	isStarColumn: isStarColumn
+};
+
+
+/***/ }),
+/* 45 */
+/***/ (function(module, exports, __webpack_require__) {
+
+exports = module.exports = __webpack_require__(83);
+exports.Stream = exports;
+exports.Readable = exports;
+exports.Writable = __webpack_require__(46);
+exports.Duplex = __webpack_require__(16);
+exports.Transform = __webpack_require__(86);
+exports.PassThrough = __webpack_require__(145);
+
+
+/***/ }),
+/* 46 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// A bit simpler than readable streams.
+// Implement an async ._write(chunk, encoding, cb), and it'll handle all
+// the drain event emission and buffering.
+
+
+
+/*<replacement>*/
+
+var processNextTick = __webpack_require__(32).nextTick;
+/*</replacement>*/
+
+module.exports = Writable;
+
+/* <replacement> */
+function WriteReq(chunk, encoding, cb) {
+  this.chunk = chunk;
+  this.encoding = encoding;
+  this.callback = cb;
+  this.next = null;
+}
+
+// It seems a linked list but it is not
+// there will be only 2 of these for each stream
+function CorkedRequest(state) {
+  var _this = this;
+
+  this.next = null;
+  this.entry = null;
+  this.finish = function () {
+    onCorkedFinish(_this, state);
+  };
+}
+/* </replacement> */
+
+/*<replacement>*/
+var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
+/*</replacement>*/
+
+/*<replacement>*/
+var Duplex;
+/*</replacement>*/
+
+Writable.WritableState = WritableState;
+
+/*<replacement>*/
+var util = __webpack_require__(25);
+util.inherits = __webpack_require__(21);
+/*</replacement>*/
+
+/*<replacement>*/
+var internalUtil = {
+  deprecate: __webpack_require__(144)
+};
+/*</replacement>*/
+
+/*<replacement>*/
+var Stream = __webpack_require__(84);
+/*</replacement>*/
+
+/*<replacement>*/
+
+var Buffer = __webpack_require__(33).Buffer;
+var OurUint8Array = global.Uint8Array || function () {};
+function _uint8ArrayToBuffer(chunk) {
+  return Buffer.from(chunk);
+}
+function _isUint8Array(obj) {
+  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
+}
+
+/*</replacement>*/
+
+var destroyImpl = __webpack_require__(85);
+
+util.inherits(Writable, Stream);
+
+function nop() {}
+
+function WritableState(options, stream) {
+  Duplex = Duplex || __webpack_require__(16);
+
+  options = options || {};
+
+  // Duplex streams are both readable and writable, but share
+  // the same options object.
+  // However, some cases require setting options to different
+  // values for the readable and the writable sides of the duplex stream.
+  // These options can be provided separately as readableXXX and writableXXX.
+  var isDuplex = stream instanceof Duplex;
+
+  // object stream flag to indicate whether or not this stream
+  // contains buffers or objects.
+  this.objectMode = !!options.objectMode;
+
+  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
+
+  // the point at which write() starts returning false
+  // Note: 0 is a valid value, means that we always return false if
+  // the entire buffer is not flushed immediately on write()
+  var hwm = options.highWaterMark;
+  var writableHwm = options.writableHighWaterMark;
+  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
+
+  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
+
+  // cast to ints.
+  this.highWaterMark = Math.floor(this.highWaterMark);
+
+  // if _final has been called
+  this.finalCalled = false;
+
+  // drain event flag.
+  this.needDrain = false;
+  // at the start of calling end()
+  this.ending = false;
+  // when end() has been called, and returned
+  this.ended = false;
+  // when 'finish' is emitted
+  this.finished = false;
+
+  // has it been destroyed
+  this.destroyed = false;
+
+  // should we decode strings into buffers before passing to _write?
+  // this is here so that some node-core streams can optimize string
+  // handling at a lower level.
+  var noDecode = options.decodeStrings === false;
+  this.decodeStrings = !noDecode;
+
+  // Crypto is kind of old and crusty.  Historically, its default string
+  // encoding is 'binary' so we have to make this configurable.
+  // Everything else in the universe uses 'utf8', though.
+  this.defaultEncoding = options.defaultEncoding || 'utf8';
+
+  // not an actual buffer we keep track of, but a measurement
+  // of how much we're waiting to get pushed to some underlying
+  // socket or file.
+  this.length = 0;
+
+  // a flag to see when we're in the middle of a write.
+  this.writing = false;
+
+  // when true all writes will be buffered until .uncork() call
+  this.corked = 0;
+
+  // a flag to be able to tell if the onwrite cb is called immediately,
+  // or on a later tick.  We set this to true at first, because any
+  // actions that shouldn't happen until "later" should generally also
+  // not happen before the first write call.
+  this.sync = true;
+
+  // a flag to know if we're processing previously buffered items, which
+  // may call the _write() callback in the same tick, so that we don't
+  // end up in an overlapped onwrite situation.
+  this.bufferProcessing = false;
+
+  // the callback that's passed to _write(chunk,cb)
+  this.onwrite = function (er) {
+    onwrite(stream, er);
+  };
+
+  // the callback that the user supplies to write(chunk,encoding,cb)
+  this.writecb = null;
+
+  // the amount that is being written when _write is called.
+  this.writelen = 0;
+
+  this.bufferedRequest = null;
+  this.lastBufferedRequest = null;
+
+  // number of pending user-supplied write callbacks
+  // this must be 0 before 'finish' can be emitted
+  this.pendingcb = 0;
+
+  // emit prefinish if the only thing we're waiting for is _write cbs
+  // This is relevant for synchronous Transform streams
+  this.prefinished = false;
+
+  // True if the error was already emitted and should not be thrown again
+  this.errorEmitted = false;
+
+  // count buffered requests
+  this.bufferedRequestCount = 0;
+
+  // allocate the first CorkedRequest, there is always
+  // one allocated and free to use, and we maintain at most two
+  this.corkedRequestsFree = new CorkedRequest(this);
+}
+
+WritableState.prototype.getBuffer = function getBuffer() {
+  var current = this.bufferedRequest;
+  var out = [];
+  while (current) {
+    out.push(current);
+    current = current.next;
+  }
+  return out;
+};
+
+(function () {
+  try {
+    Object.defineProperty(WritableState.prototype, 'buffer', {
+      get: internalUtil.deprecate(function () {
+        return this.getBuffer();
+      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
+    });
+  } catch (_) {}
+})();
+
+// Test _writableState for inheritance to account for Duplex streams,
+// whose prototype chain only points to Readable.
+var realHasInstance;
+if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
+  realHasInstance = Function.prototype[Symbol.hasInstance];
+  Object.defineProperty(Writable, Symbol.hasInstance, {
+    value: function (object) {
+      if (realHasInstance.call(this, object)) return true;
+      if (this !== Writable) return false;
+
+      return object && object._writableState instanceof WritableState;
+    }
+  });
+} else {
+  realHasInstance = function (object) {
+    return object instanceof this;
+  };
+}
+
+function Writable(options) {
+  Duplex = Duplex || __webpack_require__(16);
+
+  // Writable ctor is applied to Duplexes, too.
+  // `realHasInstance` is necessary because using plain `instanceof`
+  // would return false, as no `_writableState` property is attached.
+
+  // Trying to use the custom `instanceof` for Writable here will also break the
+  // Node.js LazyTransform implementation, which has a non-trivial getter for
+  // `_writableState` that would lead to infinite recursion.
+  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
+    return new Writable(options);
+  }
+
+  this._writableState = new WritableState(options, this);
+
+  // legacy.
+  this.writable = true;
+
+  if (options) {
+    if (typeof options.write === 'function') this._write = options.write;
+
+    if (typeof options.writev === 'function') this._writev = options.writev;
+
+    if (typeof options.destroy === 'function') this._destroy = options.destroy;
+
+    if (typeof options.final === 'function') this._final = options.final;
+  }
+
+  Stream.call(this);
+}
+
+// Otherwise people can pipe Writable streams, which is just wrong.
+Writable.prototype.pipe = function () {
+  this.emit('error', new Error('Cannot pipe, not readable'));
+};
+
+function writeAfterEnd(stream, cb) {
+  var er = new Error('write after end');
+  // TODO: defer error events consistently everywhere, not just the cb
+  stream.emit('error', er);
+  processNextTick(cb, er);
+}
+
+// Checks that a user-supplied chunk is valid, especially for the particular
+// mode the stream is in. Currently this means that `null` is never accepted
+// and undefined/non-string values are only allowed in object mode.
+function validChunk(stream, state, chunk, cb) {
+  var valid = true;
+  var er = false;
+
+  if (chunk === null) {
+    er = new TypeError('May not write null values to stream');
+  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
+    er = new TypeError('Invalid non-string/buffer chunk');
+  }
+  if (er) {
+    stream.emit('error', er);
+    processNextTick(cb, er);
+    valid = false;
+  }
+  return valid;
+}
+
+Writable.prototype.write = function (chunk, encoding, cb) {
+  var state = this._writableState;
+  var ret = false;
+  var isBuf = !state.objectMode && _isUint8Array(chunk);
+
+  if (isBuf && !Buffer.isBuffer(chunk)) {
+    chunk = _uint8ArrayToBuffer(chunk);
+  }
+
+  if (typeof encoding === 'function') {
+    cb = encoding;
+    encoding = null;
+  }
+
+  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
+
+  if (typeof cb !== 'function') cb = nop;
+
+  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
+    state.pendingcb++;
+    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
+  }
+
+  return ret;
+};
+
+Writable.prototype.cork = function () {
+  var state = this._writableState;
+
+  state.corked++;
+};
+
+Writable.prototype.uncork = function () {
+  var state = this._writableState;
+
+  if (state.corked) {
+    state.corked--;
+
+    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
+  }
+};
+
+Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
+  // node::ParseEncoding() requires lower case.
+  if (typeof encoding === 'string') encoding = encoding.toLowerCase();
+  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
+  this._writableState.defaultEncoding = encoding;
+  return this;
+};
+
+function decodeChunk(state, chunk, encoding) {
+  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
+    chunk = Buffer.from(chunk, encoding);
+  }
+  return chunk;
+}
+
+// if we're already writing something, then just put this
+// in the queue, and wait our turn.  Otherwise, call _write
+// If we return false, then we need a drain event, so set that flag.
+function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
+  if (!isBuf) {
+    var newChunk = decodeChunk(state, chunk, encoding);
+    if (chunk !== newChunk) {
+      isBuf = true;
+      encoding = 'buffer';
+      chunk = newChunk;
+    }
+  }
+  var len = state.objectMode ? 1 : chunk.length;
+
+  state.length += len;
+
+  var ret = state.length < state.highWaterMark;
+  // we must ensure that previous needDrain will not be reset to false.
+  if (!ret) state.needDrain = true;
+
+  if (state.writing || state.corked) {
+    var last = state.lastBufferedRequest;
+    state.lastBufferedRequest = {
+      chunk: chunk,
+      encoding: encoding,
+      isBuf: isBuf,
+      callback: cb,
+      next: null
+    };
+    if (last) {
+      last.next = state.lastBufferedRequest;
+    } else {
+      state.bufferedRequest = state.lastBufferedRequest;
+    }
+    state.bufferedRequestCount += 1;
+  } else {
+    doWrite(stream, state, false, len, chunk, encoding, cb);
+  }
+
+  return ret;
+}
+
+function doWrite(stream, state, writev, len, chunk, encoding, cb) {
+  state.writelen = len;
+  state.writecb = cb;
+  state.writing = true;
+  state.sync = true;
+  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
+  state.sync = false;
+}
+
+function onwriteError(stream, state, sync, er, cb) {
+  --state.pendingcb;
+
+  if (sync) {
+    // defer the callback if we are being called synchronously
+    // to avoid piling up things on the stack
+    processNextTick(cb, er);
+    // this can emit finish, and it will always happen
+    // after error
+    processNextTick(finishMaybe, stream, state);
+    stream._writableState.errorEmitted = true;
+    stream.emit('error', er);
+  } else {
+    // the caller expect this to happen before if
+    // it is async
+    cb(er);
+    stream._writableState.errorEmitted = true;
+    stream.emit('error', er);
+    // this can emit finish, but finish must
+    // always follow error
+    finishMaybe(stream, state);
+  }
+}
+
+function onwriteStateUpdate(state) {
+  state.writing = false;
+  state.writecb = null;
+  state.length -= state.writelen;
+  state.writelen = 0;
+}
+
+function onwrite(stream, er) {
+  var state = stream._writableState;
+  var sync = state.sync;
+  var cb = state.writecb;
+
+  onwriteStateUpdate(state);
+
+  if (er) onwriteError(stream, state, sync, er, cb);else {
+    // Check if we're actually ready to finish, but don't emit yet
+    var finished = needFinish(state);
+
+    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
+      clearBuffer(stream, state);
+    }
+
+    if (sync) {
+      /*<replacement>*/
+      asyncWrite(afterWrite, stream, state, finished, cb);
+      /*</replacement>*/
+    } else {
+      afterWrite(stream, state, finished, cb);
+    }
+  }
+}
+
+function afterWrite(stream, state, finished, cb) {
+  if (!finished) onwriteDrain(stream, state);
+  state.pendingcb--;
+  cb();
+  finishMaybe(stream, state);
+}
+
+// Must force callback to be called on nextTick, so that we don't
+// emit 'drain' before the write() consumer gets the 'false' return
+// value, and has a chance to attach a 'drain' listener.
+function onwriteDrain(stream, state) {
+  if (state.length === 0 && state.needDrain) {
+    state.needDrain = false;
+    stream.emit('drain');
+  }
+}
+
+// if there's something in the buffer waiting, then process it
+function clearBuffer(stream, state) {
+  state.bufferProcessing = true;
+  var entry = state.bufferedRequest;
+
+  if (stream._writev && entry && entry.next) {
+    // Fast case, write everything using _writev()
+    var l = state.bufferedRequestCount;
+    var buffer = new Array(l);
+    var holder = state.corkedRequestsFree;
+    holder.entry = entry;
+
+    var count = 0;
+    var allBuffers = true;
+    while (entry) {
+      buffer[count] = entry;
+      if (!entry.isBuf) allBuffers = false;
+      entry = entry.next;
+      count += 1;
+    }
+    buffer.allBuffers = allBuffers;
+
+    doWrite(stream, state, true, state.length, buffer, '', holder.finish);
+
+    // doWrite is almost always async, defer these to save a bit of time
+    // as the hot path ends with doWrite
+    state.pendingcb++;
+    state.lastBufferedRequest = null;
+    if (holder.next) {
+      state.corkedRequestsFree = holder.next;
+      holder.next = null;
+    } else {
+      state.corkedRequestsFree = new CorkedRequest(state);
+    }
+    state.bufferedRequestCount = 0;
+  } else {
+    // Slow case, write chunks one-by-one
+    while (entry) {
+      var chunk = entry.chunk;
+      var encoding = entry.encoding;
+      var cb = entry.callback;
+      var len = state.objectMode ? 1 : chunk.length;
+
+      doWrite(stream, state, false, len, chunk, encoding, cb);
+      entry = entry.next;
+      state.bufferedRequestCount--;
+      // if we didn't call the onwrite immediately, then
+      // it means that we need to wait until it does.
+      // also, that means that the chunk and cb are currently
+      // being processed, so move the buffer counter past them.
+      if (state.writing) {
+        break;
+      }
+    }
+
+    if (entry === null) state.lastBufferedRequest = null;
+  }
+
+  state.bufferedRequest = entry;
+  state.bufferProcessing = false;
+}
+
+Writable.prototype._write = function (chunk, encoding, cb) {
+  cb(new Error('_write() is not implemented'));
+};
+
+Writable.prototype._writev = null;
+
+Writable.prototype.end = function (chunk, encoding, cb) {
+  var state = this._writableState;
+
+  if (typeof chunk === 'function') {
+    cb = chunk;
+    chunk = null;
+    encoding = null;
+  } else if (typeof encoding === 'function') {
+    cb = encoding;
+    encoding = null;
+  }
+
+  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
+
+  // .end() fully uncorks
+  if (state.corked) {
+    state.corked = 1;
+    this.uncork();
+  }
+
+  // ignore unnecessary end() calls.
+  if (!state.ending && !state.finished) endWritable(this, state, cb);
+};
+
+function needFinish(state) {
+  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
+}
+function callFinal(stream, state) {
+  stream._final(function (err) {
+    state.pendingcb--;
+    if (err) {
+      stream.emit('error', err);
+    }
+    state.prefinished = true;
+    stream.emit('prefinish');
+    finishMaybe(stream, state);
+  });
+}
+function prefinish(stream, state) {
+  if (!state.prefinished && !state.finalCalled) {
+    if (typeof stream._final === 'function') {
+      state.pendingcb++;
+      state.finalCalled = true;
+      processNextTick(callFinal, stream, state);
+    } else {
+      state.prefinished = true;
+      stream.emit('prefinish');
+    }
+  }
+}
+
+function finishMaybe(stream, state) {
+  var need = needFinish(state);
+  if (need) {
+    prefinish(stream, state);
+    if (state.pendingcb === 0) {
+      state.finished = true;
+      stream.emit('finish');
+    }
+  }
+  return need;
+}
+
+function endWritable(stream, state, cb) {
+  state.ending = true;
+  finishMaybe(stream, state);
+  if (cb) {
+    if (state.finished) processNextTick(cb);else stream.once('finish', cb);
+  }
+  state.ended = true;
+  stream.writable = false;
+}
+
+function onCorkedFinish(corkReq, state, err) {
+  var entry = corkReq.entry;
+  corkReq.entry = null;
+  while (entry) {
+    var cb = entry.callback;
+    state.pendingcb--;
+    cb(err);
+    entry = entry.next;
+  }
+  if (state.corkedRequestsFree) {
+    state.corkedRequestsFree.next = corkReq;
+  } else {
+    state.corkedRequestsFree = corkReq;
+  }
+}
+
+Object.defineProperty(Writable.prototype, 'destroyed', {
+  get: function () {
+    if (this._writableState === undefined) {
+      return false;
+    }
+    return this._writableState.destroyed;
+  },
+  set: function (value) {
+    // we ignore the value if the stream
+    // has not been initialized yet
+    if (!this._writableState) {
+      return;
+    }
+
+    // backward compatibility, the user is explicitly
+    // managing destroyed
+    this._writableState.destroyed = value;
+  }
+});
+
+Writable.prototype.destroy = destroyImpl.destroy;
+Writable.prototype._undestroy = destroyImpl.undestroy;
+Writable.prototype._destroy = function (err, cb) {
+  this.end();
+  cb(err);
+};
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11), __webpack_require__(142).setImmediate, __webpack_require__(7)))
+
+/***/ }),
+/* 47 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var Buffer = __webpack_require__(33).Buffer;
+
+var isEncoding = Buffer.isEncoding || function (encoding) {
+  encoding = '' + encoding;
+  switch (encoding && encoding.toLowerCase()) {
+    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
+      return true;
+    default:
+      return false;
+  }
+};
+
+function _normalizeEncoding(enc) {
+  if (!enc) return 'utf8';
+  var retried;
+  while (true) {
+    switch (enc) {
+      case 'utf8':
+      case 'utf-8':
+        return 'utf8';
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return 'utf16le';
+      case 'latin1':
+      case 'binary':
+        return 'latin1';
+      case 'base64':
+      case 'ascii':
+      case 'hex':
+        return enc;
+      default:
+        if (retried) return; // undefined
+        enc = ('' + enc).toLowerCase();
+        retried = true;
+    }
+  }
+};
+
+// Do not cache `Buffer.isEncoding` when checking encoding names as some
+// modules monkey-patch it to support additional encodings
+function normalizeEncoding(enc) {
+  var nenc = _normalizeEncoding(enc);
+  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
+  return nenc || enc;
+}
+
+// StringDecoder provides an interface for efficiently splitting a series of
+// buffers into a series of JS strings without breaking apart multi-byte
+// characters.
+exports.StringDecoder = StringDecoder;
+function StringDecoder(encoding) {
+  this.encoding = normalizeEncoding(encoding);
+  var nb;
+  switch (this.encoding) {
+    case 'utf16le':
+      this.text = utf16Text;
+      this.end = utf16End;
+      nb = 4;
+      break;
+    case 'utf8':
+      this.fillLast = utf8FillLast;
+      nb = 4;
+      break;
+    case 'base64':
+      this.text = base64Text;
+      this.end = base64End;
+      nb = 3;
+      break;
+    default:
+      this.write = simpleWrite;
+      this.end = simpleEnd;
+      return;
+  }
+  this.lastNeed = 0;
+  this.lastTotal = 0;
+  this.lastChar = Buffer.allocUnsafe(nb);
+}
+
+StringDecoder.prototype.write = function (buf) {
+  if (buf.length === 0) return '';
+  var r;
+  var i;
+  if (this.lastNeed) {
+    r = this.fillLast(buf);
+    if (r === undefined) return '';
+    i = this.lastNeed;
+    this.lastNeed = 0;
+  } else {
+    i = 0;
+  }
+  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
+  return r || '';
+};
+
+StringDecoder.prototype.end = utf8End;
+
+// Returns only complete characters in a Buffer
+StringDecoder.prototype.text = utf8Text;
+
+// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
+StringDecoder.prototype.fillLast = function (buf) {
+  if (this.lastNeed <= buf.length) {
+    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
+    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
+  }
+  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
+  this.lastNeed -= buf.length;
+};
+
+// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
+// continuation byte.
+function utf8CheckByte(byte) {
+  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
+  return -1;
+}
+
+// Checks at most 3 bytes at the end of a Buffer in order to detect an
+// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
+// needed to complete the UTF-8 character (if applicable) are returned.
+function utf8CheckIncomplete(self, buf, i) {
+  var j = buf.length - 1;
+  if (j < i) return 0;
+  var nb = utf8CheckByte(buf[j]);
+  if (nb >= 0) {
+    if (nb > 0) self.lastNeed = nb - 1;
+    return nb;
+  }
+  if (--j < i) return 0;
+  nb = utf8CheckByte(buf[j]);
+  if (nb >= 0) {
+    if (nb > 0) self.lastNeed = nb - 2;
+    return nb;
+  }
+  if (--j < i) return 0;
+  nb = utf8CheckByte(buf[j]);
+  if (nb >= 0) {
+    if (nb > 0) {
+      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
+    }
+    return nb;
+  }
+  return 0;
+}
+
+// Validates as many continuation bytes for a multi-byte UTF-8 character as
+// needed or are available. If we see a non-continuation byte where we expect
+// one, we "replace" the validated continuation bytes we've seen so far with
+// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
+// behavior. The continuation byte check is included three times in the case
+// where all of the continuation bytes for a character exist in the same buffer.
+// It is also done this way as a slight performance increase instead of using a
+// loop.
+function utf8CheckExtraBytes(self, buf, p) {
+  if ((buf[0] & 0xC0) !== 0x80) {
+    self.lastNeed = 0;
+    return '\ufffd'.repeat(p);
+  }
+  if (self.lastNeed > 1 && buf.length > 1) {
+    if ((buf[1] & 0xC0) !== 0x80) {
+      self.lastNeed = 1;
+      return '\ufffd'.repeat(p + 1);
+    }
+    if (self.lastNeed > 2 && buf.length > 2) {
+      if ((buf[2] & 0xC0) !== 0x80) {
+        self.lastNeed = 2;
+        return '\ufffd'.repeat(p + 2);
+      }
+    }
+  }
+}
+
+// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
+function utf8FillLast(buf) {
+  var p = this.lastTotal - this.lastNeed;
+  var r = utf8CheckExtraBytes(this, buf, p);
+  if (r !== undefined) return r;
+  if (this.lastNeed <= buf.length) {
+    buf.copy(this.lastChar, p, 0, this.lastNeed);
+    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
+  }
+  buf.copy(this.lastChar, p, 0, buf.length);
+  this.lastNeed -= buf.length;
+}
+
+// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
+// partial character, the character's bytes are buffered until the required
+// number of bytes are available.
+function utf8Text(buf, i) {
+  var total = utf8CheckIncomplete(this, buf, i);
+  if (!this.lastNeed) return buf.toString('utf8', i);
+  this.lastTotal = total;
+  var end = buf.length - (total - this.lastNeed);
+  buf.copy(this.lastChar, 0, end);
+  return buf.toString('utf8', i, end);
+}
+
+// For UTF-8, a replacement character for each buffered byte of a (partial)
+// character needs to be added to the output.
+function utf8End(buf) {
+  var r = buf && buf.length ? this.write(buf) : '';
+  if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
+  return r;
+}
+
+// UTF-16LE typically needs two bytes per character, but even if we have an even
+// number of bytes available, we need to check if we end on a leading/high
+// surrogate. In that case, we need to wait for the next two bytes in order to
+// decode the last character properly.
+function utf16Text(buf, i) {
+  if ((buf.length - i) % 2 === 0) {
+    var r = buf.toString('utf16le', i);
+    if (r) {
+      var c = r.charCodeAt(r.length - 1);
+      if (c >= 0xD800 && c <= 0xDBFF) {
+        this.lastNeed = 2;
+        this.lastTotal = 4;
+        this.lastChar[0] = buf[buf.length - 2];
+        this.lastChar[1] = buf[buf.length - 1];
+        return r.slice(0, -1);
+      }
+    }
+    return r;
+  }
+  this.lastNeed = 1;
+  this.lastTotal = 2;
+  this.lastChar[0] = buf[buf.length - 1];
+  return buf.toString('utf16le', i, buf.length - 1);
+}
+
+// For UTF-16LE we do not explicitly append special replacement characters if we
+// end on a partial character, we simply let v8 handle that.
+function utf16End(buf) {
+  var r = buf && buf.length ? this.write(buf) : '';
+  if (this.lastNeed) {
+    var end = this.lastTotal - this.lastNeed;
+    return r + this.lastChar.toString('utf16le', 0, end);
+  }
+  return r;
+}
+
+function base64Text(buf, i) {
+  var n = (buf.length - i) % 3;
+  if (n === 0) return buf.toString('base64', i);
+  this.lastNeed = 3 - n;
+  this.lastTotal = 3;
+  if (n === 1) {
+    this.lastChar[0] = buf[buf.length - 1];
+  } else {
+    this.lastChar[0] = buf[buf.length - 2];
+    this.lastChar[1] = buf[buf.length - 1];
+  }
+  return buf.toString('base64', i, buf.length - n);
+}
+
+function base64End(buf) {
+  var r = buf && buf.length ? this.write(buf) : '';
+  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
+  return r;
+}
+
+// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
+function simpleWrite(buf) {
+  return buf.toString(this.encoding);
+}
+
+function simpleEnd(buf) {
+  return buf && buf.length ? this.write(buf) : '';
+}
+
+/***/ }),
+/* 48 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(process) {
+
+var Buffer = __webpack_require__(1).Buffer;
+var Transform = __webpack_require__(15).Transform;
+var binding = __webpack_require__(150);
+var util = __webpack_require__(49);
+var assert = __webpack_require__(88).ok;
+var kMaxLength = __webpack_require__(1).kMaxLength;
+var kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';
+
+// zlib doesn't provide these, so kludge them in following the same
+// const naming scheme zlib uses.
+binding.Z_MIN_WINDOWBITS = 8;
+binding.Z_MAX_WINDOWBITS = 15;
+binding.Z_DEFAULT_WINDOWBITS = 15;
+
+// fewer than 64 bytes per chunk is stupid.
+// technically it could work with as few as 8, but even 64 bytes
+// is absurdly low.  Usually a MB or more is best.
+binding.Z_MIN_CHUNK = 64;
+binding.Z_MAX_CHUNK = Infinity;
+binding.Z_DEFAULT_CHUNK = 16 * 1024;
+
+binding.Z_MIN_MEMLEVEL = 1;
+binding.Z_MAX_MEMLEVEL = 9;
+binding.Z_DEFAULT_MEMLEVEL = 8;
+
+binding.Z_MIN_LEVEL = -1;
+binding.Z_MAX_LEVEL = 9;
+binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;
+
+// expose all the zlib constants
+var bkeys = Object.keys(binding);
+for (var bk = 0; bk < bkeys.length; bk++) {
+  var bkey = bkeys[bk];
+  if (bkey.match(/^Z/)) {
+    Object.defineProperty(exports, bkey, {
+      enumerable: true, value: binding[bkey], writable: false
+    });
+  }
+}
+
+// translation table for return codes.
+var codes = {
+  Z_OK: binding.Z_OK,
+  Z_STREAM_END: binding.Z_STREAM_END,
+  Z_NEED_DICT: binding.Z_NEED_DICT,
+  Z_ERRNO: binding.Z_ERRNO,
+  Z_STREAM_ERROR: binding.Z_STREAM_ERROR,
+  Z_DATA_ERROR: binding.Z_DATA_ERROR,
+  Z_MEM_ERROR: binding.Z_MEM_ERROR,
+  Z_BUF_ERROR: binding.Z_BUF_ERROR,
+  Z_VERSION_ERROR: binding.Z_VERSION_ERROR
+};
+
+var ckeys = Object.keys(codes);
+for (var ck = 0; ck < ckeys.length; ck++) {
+  var ckey = ckeys[ck];
+  codes[codes[ckey]] = ckey;
+}
+
+Object.defineProperty(exports, 'codes', {
+  enumerable: true, value: Object.freeze(codes), writable: false
+});
+
+exports.Deflate = Deflate;
+exports.Inflate = Inflate;
+exports.Gzip = Gzip;
+exports.Gunzip = Gunzip;
+exports.DeflateRaw = DeflateRaw;
+exports.InflateRaw = InflateRaw;
+exports.Unzip = Unzip;
+
+exports.createDeflate = function (o) {
+  return new Deflate(o);
+};
+
+exports.createInflate = function (o) {
+  return new Inflate(o);
+};
+
+exports.createDeflateRaw = function (o) {
+  return new DeflateRaw(o);
+};
+
+exports.createInflateRaw = function (o) {
+  return new InflateRaw(o);
+};
+
+exports.createGzip = function (o) {
+  return new Gzip(o);
+};
+
+exports.createGunzip = function (o) {
+  return new Gunzip(o);
+};
+
+exports.createUnzip = function (o) {
+  return new Unzip(o);
+};
+
+// Convenience methods.
+// compress/decompress a string or buffer in one step.
+exports.deflate = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new Deflate(opts), buffer, callback);
+};
+
+exports.deflateSync = function (buffer, opts) {
+  return zlibBufferSync(new Deflate(opts), buffer);
+};
+
+exports.gzip = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new Gzip(opts), buffer, callback);
+};
+
+exports.gzipSync = function (buffer, opts) {
+  return zlibBufferSync(new Gzip(opts), buffer);
+};
+
+exports.deflateRaw = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new DeflateRaw(opts), buffer, callback);
+};
+
+exports.deflateRawSync = function (buffer, opts) {
+  return zlibBufferSync(new DeflateRaw(opts), buffer);
+};
+
+exports.unzip = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new Unzip(opts), buffer, callback);
+};
+
+exports.unzipSync = function (buffer, opts) {
+  return zlibBufferSync(new Unzip(opts), buffer);
+};
+
+exports.inflate = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new Inflate(opts), buffer, callback);
+};
+
+exports.inflateSync = function (buffer, opts) {
+  return zlibBufferSync(new Inflate(opts), buffer);
+};
+
+exports.gunzip = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new Gunzip(opts), buffer, callback);
+};
+
+exports.gunzipSync = function (buffer, opts) {
+  return zlibBufferSync(new Gunzip(opts), buffer);
+};
+
+exports.inflateRaw = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new InflateRaw(opts), buffer, callback);
+};
+
+exports.inflateRawSync = function (buffer, opts) {
+  return zlibBufferSync(new InflateRaw(opts), buffer);
+};
+
+function zlibBuffer(engine, buffer, callback) {
+  var buffers = [];
+  var nread = 0;
+
+  engine.on('error', onError);
+  engine.on('end', onEnd);
+
+  engine.end(buffer);
+  flow();
+
+  function flow() {
+    var chunk;
+    while (null !== (chunk = engine.read())) {
+      buffers.push(chunk);
+      nread += chunk.length;
+    }
+    engine.once('readable', flow);
+  }
+
+  function onError(err) {
+    engine.removeListener('end', onEnd);
+    engine.removeListener('readable', flow);
+    callback(err);
+  }
+
+  function onEnd() {
+    var buf;
+    var err = null;
+
+    if (nread >= kMaxLength) {
+      err = new RangeError(kRangeErrorMessage);
+    } else {
+      buf = Buffer.concat(buffers, nread);
+    }
+
+    buffers = [];
+    engine.close();
+    callback(err, buf);
+  }
+}
+
+function zlibBufferSync(engine, buffer) {
+  if (typeof buffer === 'string') buffer = Buffer.from(buffer);
+
+  if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');
+
+  var flushFlag = engine._finishFlushFlag;
+
+  return engine._processChunk(buffer, flushFlag);
+}
+
+// generic zlib
+// minimal 2-byte header
+function Deflate(opts) {
+  if (!(this instanceof Deflate)) return new Deflate(opts);
+  Zlib.call(this, opts, binding.DEFLATE);
+}
+
+function Inflate(opts) {
+  if (!(this instanceof Inflate)) return new Inflate(opts);
+  Zlib.call(this, opts, binding.INFLATE);
+}
+
+// gzip - bigger header, same deflate compression
+function Gzip(opts) {
+  if (!(this instanceof Gzip)) return new Gzip(opts);
+  Zlib.call(this, opts, binding.GZIP);
+}
+
+function Gunzip(opts) {
+  if (!(this instanceof Gunzip)) return new Gunzip(opts);
+  Zlib.call(this, opts, binding.GUNZIP);
+}
+
+// raw - no header
+function DeflateRaw(opts) {
+  if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);
+  Zlib.call(this, opts, binding.DEFLATERAW);
+}
+
+function InflateRaw(opts) {
+  if (!(this instanceof InflateRaw)) return new InflateRaw(opts);
+  Zlib.call(this, opts, binding.INFLATERAW);
+}
+
+// auto-detect header.
+function Unzip(opts) {
+  if (!(this instanceof Unzip)) return new Unzip(opts);
+  Zlib.call(this, opts, binding.UNZIP);
+}
+
+function isValidFlushFlag(flag) {
+  return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK;
+}
+
+// the Zlib class they all inherit from
+// This thing manages the queue of requests, and returns
+// true or false if there is anything in the queue when
+// you call the .write() method.
+
+function Zlib(opts, mode) {
+  var _this = this;
+
+  this._opts = opts = opts || {};
+  this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;
+
+  Transform.call(this, opts);
+
+  if (opts.flush && !isValidFlushFlag(opts.flush)) {
+    throw new Error('Invalid flush flag: ' + opts.flush);
+  }
+  if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {
+    throw new Error('Invalid flush flag: ' + opts.finishFlush);
+  }
+
+  this._flushFlag = opts.flush || binding.Z_NO_FLUSH;
+  this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH;
+
+  if (opts.chunkSize) {
+    if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {
+      throw new Error('Invalid chunk size: ' + opts.chunkSize);
+    }
+  }
+
+  if (opts.windowBits) {
+    if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {
+      throw new Error('Invalid windowBits: ' + opts.windowBits);
+    }
+  }
+
+  if (opts.level) {
+    if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {
+      throw new Error('Invalid compression level: ' + opts.level);
+    }
+  }
+
+  if (opts.memLevel) {
+    if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {
+      throw new Error('Invalid memLevel: ' + opts.memLevel);
+    }
+  }
+
+  if (opts.strategy) {
+    if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {
+      throw new Error('Invalid strategy: ' + opts.strategy);
+    }
+  }
+
+  if (opts.dictionary) {
+    if (!Buffer.isBuffer(opts.dictionary)) {
+      throw new Error('Invalid dictionary: it should be a Buffer instance');
+    }
+  }
+
+  this._handle = new binding.Zlib(mode);
+
+  var self = this;
+  this._hadError = false;
+  this._handle.onerror = function (message, errno) {
+    // there is no way to cleanly recover.
+    // continuing only obscures problems.
+    _close(self);
+    self._hadError = true;
+
+    var error = new Error(message);
+    error.errno = errno;
+    error.code = exports.codes[errno];
+    self.emit('error', error);
+  };
+
+  var level = exports.Z_DEFAULT_COMPRESSION;
+  if (typeof opts.level === 'number') level = opts.level;
+
+  var strategy = exports.Z_DEFAULT_STRATEGY;
+  if (typeof opts.strategy === 'number') strategy = opts.strategy;
+
+  this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);
+
+  this._buffer = Buffer.allocUnsafe(this._chunkSize);
+  this._offset = 0;
+  this._level = level;
+  this._strategy = strategy;
+
+  this.once('end', this.close);
+
+  Object.defineProperty(this, '_closed', {
+    get: function () {
+      return !_this._handle;
+    },
+    configurable: true,
+    enumerable: true
+  });
+}
+
+util.inherits(Zlib, Transform);
+
+Zlib.prototype.params = function (level, strategy, callback) {
+  if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {
+    throw new RangeError('Invalid compression level: ' + level);
+  }
+  if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {
+    throw new TypeError('Invalid strategy: ' + strategy);
+  }
+
+  if (this._level !== level || this._strategy !== strategy) {
+    var self = this;
+    this.flush(binding.Z_SYNC_FLUSH, function () {
+      assert(self._handle, 'zlib binding closed');
+      self._handle.params(level, strategy);
+      if (!self._hadError) {
+        self._level = level;
+        self._strategy = strategy;
+        if (callback) callback();
+      }
+    });
+  } else {
+    process.nextTick(callback);
+  }
+};
+
+Zlib.prototype.reset = function () {
+  assert(this._handle, 'zlib binding closed');
+  return this._handle.reset();
+};
+
+// This is the _flush function called by the transform class,
+// internally, when the last chunk has been written.
+Zlib.prototype._flush = function (callback) {
+  this._transform(Buffer.alloc(0), '', callback);
+};
+
+Zlib.prototype.flush = function (kind, callback) {
+  var _this2 = this;
+
+  var ws = this._writableState;
+
+  if (typeof kind === 'function' || kind === undefined && !callback) {
+    callback = kind;
+    kind = binding.Z_FULL_FLUSH;
+  }
+
+  if (ws.ended) {
+    if (callback) process.nextTick(callback);
+  } else if (ws.ending) {
+    if (callback) this.once('end', callback);
+  } else if (ws.needDrain) {
+    if (callback) {
+      this.once('drain', function () {
+        return _this2.flush(kind, callback);
+      });
+    }
+  } else {
+    this._flushFlag = kind;
+    this.write(Buffer.alloc(0), '', callback);
+  }
+};
+
+Zlib.prototype.close = function (callback) {
+  _close(this, callback);
+  process.nextTick(emitCloseNT, this);
+};
+
+function _close(engine, callback) {
+  if (callback) process.nextTick(callback);
+
+  // Caller may invoke .close after a zlib error (which will null _handle).
+  if (!engine._handle) return;
+
+  engine._handle.close();
+  engine._handle = null;
+}
+
+function emitCloseNT(self) {
+  self.emit('close');
+}
+
+Zlib.prototype._transform = function (chunk, encoding, cb) {
+  var flushFlag;
+  var ws = this._writableState;
+  var ending = ws.ending || ws.ended;
+  var last = ending && (!chunk || ws.length === chunk.length);
+
+  if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));
+
+  if (!this._handle) return cb(new Error('zlib binding closed'));
+
+  // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag
+  // (or whatever flag was provided using opts.finishFlush).
+  // If it's explicitly flushing at some other time, then we use
+  // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression
+  // goodness.
+  if (last) flushFlag = this._finishFlushFlag;else {
+    flushFlag = this._flushFlag;
+    // once we've flushed the last of the queue, stop flushing and
+    // go back to the normal behavior.
+    if (chunk.length >= ws.length) {
+      this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;
+    }
+  }
+
+  this._processChunk(chunk, flushFlag, cb);
+};
+
+Zlib.prototype._processChunk = function (chunk, flushFlag, cb) {
+  var availInBefore = chunk && chunk.length;
+  var availOutBefore = this._chunkSize - this._offset;
+  var inOff = 0;
+
+  var self = this;
+
+  var async = typeof cb === 'function';
+
+  if (!async) {
+    var buffers = [];
+    var nread = 0;
+
+    var error;
+    this.on('error', function (er) {
+      error = er;
+    });
+
+    assert(this._handle, 'zlib binding closed');
+    do {
+      var res = this._handle.writeSync(flushFlag, chunk, // in
+      inOff, // in_off
+      availInBefore, // in_len
+      this._buffer, // out
+      this._offset, //out_off
+      availOutBefore); // out_len
+    } while (!this._hadError && callback(res[0], res[1]));
+
+    if (this._hadError) {
+      throw error;
+    }
+
+    if (nread >= kMaxLength) {
+      _close(this);
+      throw new RangeError(kRangeErrorMessage);
+    }
+
+    var buf = Buffer.concat(buffers, nread);
+    _close(this);
+
+    return buf;
+  }
+
+  assert(this._handle, 'zlib binding closed');
+  var req = this._handle.write(flushFlag, chunk, // in
+  inOff, // in_off
+  availInBefore, // in_len
+  this._buffer, // out
+  this._offset, //out_off
+  availOutBefore); // out_len
+
+  req.buffer = chunk;
+  req.callback = callback;
+
+  function callback(availInAfter, availOutAfter) {
+    // When the callback is used in an async write, the callback's
+    // context is the `req` object that was created. The req object
+    // is === this._handle, and that's why it's important to null
+    // out the values after they are done being used. `this._handle`
+    // can stay in memory longer than the callback and buffer are needed.
+    if (this) {
+      this.buffer = null;
+      this.callback = null;
+    }
+
+    if (self._hadError) return;
+
+    var have = availOutBefore - availOutAfter;
+    assert(have >= 0, 'have should not go down');
+
+    if (have > 0) {
+      var out = self._buffer.slice(self._offset, self._offset + have);
+      self._offset += have;
+      // serve some output to the consumer.
+      if (async) {
+        self.push(out);
+      } else {
+        buffers.push(out);
+        nread += out.length;
+      }
+    }
+
+    // exhausted the output buffer, or used all the input create a new one.
+    if (availOutAfter === 0 || self._offset >= self._chunkSize) {
+      availOutBefore = self._chunkSize;
+      self._offset = 0;
+      self._buffer = Buffer.allocUnsafe(self._chunkSize);
+    }
+
+    if (availOutAfter === 0) {
+      // Not actually done.  Need to reprocess.
+      // Also, update the availInBefore to the availInAfter value,
+      // so that if we have to hit it a third (fourth, etc.) time,
+      // it'll have the correct byte counts.
+      inOff += availInBefore - availInAfter;
+      availInBefore = availInAfter;
+
+      if (!async) return true;
+
+      var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);
+      newReq.callback = callback; // this same function
+      newReq.buffer = chunk;
+      return;
+    }
+
+    if (!async) return false;
+
+    // finished with the chunk.
+    cb();
+  }
+};
+
+util.inherits(Deflate, Zlib);
+util.inherits(Inflate, Zlib);
+util.inherits(Gzip, Zlib);
+util.inherits(Gunzip, Zlib);
+util.inherits(DeflateRaw, Zlib);
+util.inherits(InflateRaw, Zlib);
+util.inherits(Unzip, Zlib);
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11)))
+
+/***/ }),
+/* 49 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+var formatRegExp = /%[sdj%]/g;
+exports.format = function(f) {
+  if (!isString(f)) {
+    var objects = [];
+    for (var i = 0; i < arguments.length; i++) {
+      objects.push(inspect(arguments[i]));
+    }
+    return objects.join(' ');
+  }
+
+  var i = 1;
+  var args = arguments;
+  var len = args.length;
+  var str = String(f).replace(formatRegExp, function(x) {
+    if (x === '%%') return '%';
+    if (i >= len) return x;
+    switch (x) {
+      case '%s': return String(args[i++]);
+      case '%d': return Number(args[i++]);
+      case '%j':
+        try {
+          return JSON.stringify(args[i++]);
+        } catch (_) {
+          return '[Circular]';
+        }
+      default:
+        return x;
+    }
+  });
+  for (var x = args[i]; i < len; x = args[++i]) {
+    if (isNull(x) || !isObject(x)) {
+      str += ' ' + x;
+    } else {
+      str += ' ' + inspect(x);
+    }
+  }
+  return str;
+};
+
+
+// Mark that a method should not be used.
+// Returns a modified function which warns once by default.
+// If --no-deprecation is set, then it is a no-op.
+exports.deprecate = function(fn, msg) {
+  // Allow for deprecating things in the process of starting up.
+  if (isUndefined(global.process)) {
+    return function() {
+      return exports.deprecate(fn, msg).apply(this, arguments);
+    };
+  }
+
+  if (process.noDeprecation === true) {
+    return fn;
+  }
+
+  var warned = false;
+  function deprecated() {
+    if (!warned) {
+      if (process.throwDeprecation) {
+        throw new Error(msg);
+      } else if (process.traceDeprecation) {
+        console.trace(msg);
+      } else {
+        console.error(msg);
+      }
+      warned = true;
+    }
+    return fn.apply(this, arguments);
+  }
+
+  return deprecated;
+};
+
+
+var debugs = {};
+var debugEnviron;
+exports.debuglog = function(set) {
+  if (isUndefined(debugEnviron))
+    debugEnviron = process.env.NODE_DEBUG || '';
+  set = set.toUpperCase();
+  if (!debugs[set]) {
+    if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
+      var pid = process.pid;
+      debugs[set] = function() {
+        var msg = exports.format.apply(exports, arguments);
+        console.error('%s %d: %s', set, pid, msg);
+      };
+    } else {
+      debugs[set] = function() {};
+    }
+  }
+  return debugs[set];
+};
+
+
+/**
+ * Echos the value of a value. Trys to print the value out
+ * in the best way possible given the different types.
+ *
+ * @param {Object} obj The object to print out.
+ * @param {Object} opts Optional options object that alters the output.
+ */
+/* legacy: obj, showHidden, depth, colors*/
+function inspect(obj, opts) {
+  // default options
+  var ctx = {
+    seen: [],
+    stylize: stylizeNoColor
+  };
+  // legacy...
+  if (arguments.length >= 3) ctx.depth = arguments[2];
+  if (arguments.length >= 4) ctx.colors = arguments[3];
+  if (isBoolean(opts)) {
+    // legacy...
+    ctx.showHidden = opts;
+  } else if (opts) {
+    // got an "options" object
+    exports._extend(ctx, opts);
+  }
+  // set default options
+  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
+  if (isUndefined(ctx.depth)) ctx.depth = 2;
+  if (isUndefined(ctx.colors)) ctx.colors = false;
+  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
+  if (ctx.colors) ctx.stylize = stylizeWithColor;
+  return formatValue(ctx, obj, ctx.depth);
+}
+exports.inspect = inspect;
+
+
+// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
+inspect.colors = {
+  'bold' : [1, 22],
+  'italic' : [3, 23],
+  'underline' : [4, 24],
+  'inverse' : [7, 27],
+  'white' : [37, 39],
+  'grey' : [90, 39],
+  'black' : [30, 39],
+  'blue' : [34, 39],
+  'cyan' : [36, 39],
+  'green' : [32, 39],
+  'magenta' : [35, 39],
+  'red' : [31, 39],
+  'yellow' : [33, 39]
+};
+
+// Don't use 'blue' not visible on cmd.exe
+inspect.styles = {
+  'special': 'cyan',
+  'number': 'yellow',
+  'boolean': 'yellow',
+  'undefined': 'grey',
+  'null': 'bold',
+  'string': 'green',
+  'date': 'magenta',
+  // "name": intentionally not styling
+  'regexp': 'red'
+};
+
+
+function stylizeWithColor(str, styleType) {
+  var style = inspect.styles[styleType];
+
+  if (style) {
+    return '\u001b[' + inspect.colors[style][0] + 'm' + str +
+           '\u001b[' + inspect.colors[style][1] + 'm';
+  } else {
+    return str;
+  }
+}
+
+
+function stylizeNoColor(str, styleType) {
+  return str;
+}
+
+
+function arrayToHash(array) {
+  var hash = {};
+
+  array.forEach(function(val, idx) {
+    hash[val] = true;
+  });
+
+  return hash;
+}
+
+
+function formatValue(ctx, value, recurseTimes) {
+  // Provide a hook for user-specified inspect functions.
+  // Check that value is an object with an inspect function on it
+  if (ctx.customInspect &&
+      value &&
+      isFunction(value.inspect) &&
+      // Filter out the util module, it's inspect function is special
+      value.inspect !== exports.inspect &&
+      // Also filter out any prototype objects using the circular check.
+      !(value.constructor && value.constructor.prototype === value)) {
+    var ret = value.inspect(recurseTimes, ctx);
+    if (!isString(ret)) {
+      ret = formatValue(ctx, ret, recurseTimes);
+    }
+    return ret;
+  }
+
+  // Primitive types cannot have properties
+  var primitive = formatPrimitive(ctx, value);
+  if (primitive) {
+    return primitive;
+  }
+
+  // Look up the keys of the object.
+  var keys = Object.keys(value);
+  var visibleKeys = arrayToHash(keys);
+
+  if (ctx.showHidden) {
+    keys = Object.getOwnPropertyNames(value);
+  }
+
+  // IE doesn't make error fields non-enumerable
+  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
+  if (isError(value)
+      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
+    return formatError(value);
+  }
+
+  // Some type of object without properties can be shortcutted.
+  if (keys.length === 0) {
+    if (isFunction(value)) {
+      var name = value.name ? ': ' + value.name : '';
+      return ctx.stylize('[Function' + name + ']', 'special');
+    }
+    if (isRegExp(value)) {
+      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+    }
+    if (isDate(value)) {
+      return ctx.stylize(Date.prototype.toString.call(value), 'date');
+    }
+    if (isError(value)) {
+      return formatError(value);
+    }
+  }
+
+  var base = '', array = false, braces = ['{', '}'];
+
+  // Make Array say that they are Array
+  if (isArray(value)) {
+    array = true;
+    braces = ['[', ']'];
+  }
+
+  // Make functions say that they are functions
+  if (isFunction(value)) {
+    var n = value.name ? ': ' + value.name : '';
+    base = ' [Function' + n + ']';
+  }
+
+  // Make RegExps say that they are RegExps
+  if (isRegExp(value)) {
+    base = ' ' + RegExp.prototype.toString.call(value);
+  }
+
+  // Make dates with properties first say the date
+  if (isDate(value)) {
+    base = ' ' + Date.prototype.toUTCString.call(value);
+  }
+
+  // Make error with message first say the error
+  if (isError(value)) {
+    base = ' ' + formatError(value);
+  }
+
+  if (keys.length === 0 && (!array || value.length == 0)) {
+    return braces[0] + base + braces[1];
+  }
+
+  if (recurseTimes < 0) {
+    if (isRegExp(value)) {
+      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+    } else {
+      return ctx.stylize('[Object]', 'special');
+    }
+  }
+
+  ctx.seen.push(value);
+
+  var output;
+  if (array) {
+    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
+  } else {
+    output = keys.map(function(key) {
+      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
+    });
+  }
+
+  ctx.seen.pop();
+
+  return reduceToSingleString(output, base, braces);
+}
+
+
+function formatPrimitive(ctx, value) {
+  if (isUndefined(value))
+    return ctx.stylize('undefined', 'undefined');
+  if (isString(value)) {
+    var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
+                                             .replace(/'/g, "\\'")
+                                             .replace(/\\"/g, '"') + '\'';
+    return ctx.stylize(simple, 'string');
+  }
+  if (isNumber(value))
+    return ctx.stylize('' + value, 'number');
+  if (isBoolean(value))
+    return ctx.stylize('' + value, 'boolean');
+  // For some reason typeof null is "object", so special case here.
+  if (isNull(value))
+    return ctx.stylize('null', 'null');
+}
+
+
+function formatError(value) {
+  return '[' + Error.prototype.toString.call(value) + ']';
+}
+
+
+function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
+  var output = [];
+  for (var i = 0, l = value.length; i < l; ++i) {
+    if (hasOwnProperty(value, String(i))) {
+      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+          String(i), true));
+    } else {
+      output.push('');
+    }
+  }
+  keys.forEach(function(key) {
+    if (!key.match(/^\d+$/)) {
+      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+          key, true));
+    }
+  });
+  return output;
+}
+
+
+function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
+  var name, str, desc;
+  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
+  if (desc.get) {
+    if (desc.set) {
+      str = ctx.stylize('[Getter/Setter]', 'special');
+    } else {
+      str = ctx.stylize('[Getter]', 'special');
+    }
+  } else {
+    if (desc.set) {
+      str = ctx.stylize('[Setter]', 'special');
+    }
+  }
+  if (!hasOwnProperty(visibleKeys, key)) {
+    name = '[' + key + ']';
+  }
+  if (!str) {
+    if (ctx.seen.indexOf(desc.value) < 0) {
+      if (isNull(recurseTimes)) {
+        str = formatValue(ctx, desc.value, null);
+      } else {
+        str = formatValue(ctx, desc.value, recurseTimes - 1);
+      }
+      if (str.indexOf('\n') > -1) {
+        if (array) {
+          str = str.split('\n').map(function(line) {
+            return '  ' + line;
+          }).join('\n').substr(2);
+        } else {
+          str = '\n' + str.split('\n').map(function(line) {
+            return '   ' + line;
+          }).join('\n');
+        }
+      }
+    } else {
+      str = ctx.stylize('[Circular]', 'special');
+    }
+  }
+  if (isUndefined(name)) {
+    if (array && key.match(/^\d+$/)) {
+      return str;
+    }
+    name = JSON.stringify('' + key);
+    if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
+      name = name.substr(1, name.length - 2);
+      name = ctx.stylize(name, 'name');
+    } else {
+      name = name.replace(/'/g, "\\'")
+                 .replace(/\\"/g, '"')
+                 .replace(/(^"|"$)/g, "'");
+      name = ctx.stylize(name, 'string');
+    }
+  }
+
+  return name + ': ' + str;
+}
+
+
+function reduceToSingleString(output, base, braces) {
+  var numLinesEst = 0;
+  var length = output.reduce(function(prev, cur) {
+    numLinesEst++;
+    if (cur.indexOf('\n') >= 0) numLinesEst++;
+    return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
+  }, 0);
+
+  if (length > 60) {
+    return braces[0] +
+           (base === '' ? '' : base + '\n ') +
+           ' ' +
+           output.join(',\n  ') +
+           ' ' +
+           braces[1];
+  }
+
+  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
+}
+
+
+// NOTE: These type checking functions intentionally don't use `instanceof`
+// because it is fragile and can be easily faked with `Object.create()`.
+function isArray(ar) {
+  return Array.isArray(ar);
+}
+exports.isArray = isArray;
+
+function isBoolean(arg) {
+  return typeof arg === 'boolean';
+}
+exports.isBoolean = isBoolean;
+
+function isNull(arg) {
+  return arg === null;
+}
+exports.isNull = isNull;
+
+function isNullOrUndefined(arg) {
+  return arg == null;
+}
+exports.isNullOrUndefined = isNullOrUndefined;
+
+function isNumber(arg) {
+  return typeof arg === 'number';
+}
+exports.isNumber = isNumber;
+
+function isString(arg) {
+  return typeof arg === 'string';
+}
+exports.isString = isString;
+
+function isSymbol(arg) {
+  return typeof arg === 'symbol';
+}
+exports.isSymbol = isSymbol;
+
+function isUndefined(arg) {
+  return arg === void 0;
+}
+exports.isUndefined = isUndefined;
+
+function isRegExp(re) {
+  return isObject(re) && objectToString(re) === '[object RegExp]';
+}
+exports.isRegExp = isRegExp;
+
+function isObject(arg) {
+  return typeof arg === 'object' && arg !== null;
+}
+exports.isObject = isObject;
+
+function isDate(d) {
+  return isObject(d) && objectToString(d) === '[object Date]';
+}
+exports.isDate = isDate;
+
+function isError(e) {
+  return isObject(e) &&
+      (objectToString(e) === '[object Error]' || e instanceof Error);
+}
+exports.isError = isError;
+
+function isFunction(arg) {
+  return typeof arg === 'function';
+}
+exports.isFunction = isFunction;
+
+function isPrimitive(arg) {
+  return arg === null ||
+         typeof arg === 'boolean' ||
+         typeof arg === 'number' ||
+         typeof arg === 'string' ||
+         typeof arg === 'symbol' ||  // ES6 symbol
+         typeof arg === 'undefined';
+}
+exports.isPrimitive = isPrimitive;
+
+exports.isBuffer = __webpack_require__(151);
+
+function objectToString(o) {
+  return Object.prototype.toString.call(o);
+}
+
+
+function pad(n) {
+  return n < 10 ? '0' + n.toString(10) : n.toString(10);
+}
+
+
+var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
+              'Oct', 'Nov', 'Dec'];
+
+// 26 Feb 16:19:34
+function timestamp() {
+  var d = new Date();
+  var time = [pad(d.getHours()),
+              pad(d.getMinutes()),
+              pad(d.getSeconds())].join(':');
+  return [d.getDate(), months[d.getMonth()], time].join(' ');
+}
+
+
+// log is just a thin wrapper to console.log that prepends a timestamp
+exports.log = function() {
+  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
+};
+
+
+/**
+ * Inherit the prototype methods from one constructor into another.
+ *
+ * The Function.prototype.inherits from lang.js rewritten as a standalone
+ * function (not on Function.prototype). NOTE: If this file is to be loaded
+ * during bootstrapping this function needs to be rewritten using some native
+ * functions as prototype setup using normal JavaScript does not work as
+ * expected during bootstrapping (see mirror.js in r114903).
+ *
+ * @param {function} ctor Constructor function which needs to inherit the
+ *     prototype.
+ * @param {function} superCtor Constructor function to inherit prototype from.
+ */
+exports.inherits = __webpack_require__(152);
+
+exports._extend = function(origin, add) {
+  // Don't do anything if add isn't an object
+  if (!add || !isObject(add)) return origin;
+
+  var keys = Object.keys(add);
+  var i = keys.length;
+  while (i--) {
+    origin[keys[i]] = add[keys[i]];
+  }
+  return origin;
+};
+
+function hasOwnProperty(obj, prop) {
+  return Object.prototype.hasOwnProperty.call(obj, prop);
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7), __webpack_require__(11)))
+
+/***/ }),
+/* 50 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+(function() {
+  var EmbeddedFont, PDFFont, StandardFont, fontkit;
+
+  fontkit = __webpack_require__(167);
+
+  PDFFont = (function() {
+    PDFFont.open = function(document, src, family, id) {
+      var font;
+      if (typeof src === 'string') {
+        if (StandardFont.isStandardFont(src)) {
+          return new StandardFont(document, src, id);
+        }
+        font = fontkit.openSync(src, family);
+      } else if (Buffer.isBuffer(src)) {
+        font = fontkit.create(src, family);
+      } else if (src instanceof Uint8Array) {
+        font = fontkit.create(new Buffer(src), family);
+      } else if (src instanceof ArrayBuffer) {
+        font = fontkit.create(new Buffer(new Uint8Array(src)), family);
+      }
+      if (font == null) {
+        throw new Error('Not a supported font format or standard PDF font.');
+      }
+      return new EmbeddedFont(document, font, id);
+    };
+
+    function PDFFont() {
+      throw new Error('Cannot construct a PDFFont directly.');
+    }
+
+    PDFFont.prototype.encode = function(text) {
+      throw new Error('Must be implemented by subclasses');
+    };
+
+    PDFFont.prototype.widthOfString = function(text) {
+      throw new Error('Must be implemented by subclasses');
+    };
+
+    PDFFont.prototype.ref = function() {
+      return this.dictionary != null ? this.dictionary : this.dictionary = this.document.ref();
+    };
+
+    PDFFont.prototype.finalize = function() {
+      if (this.embedded || (this.dictionary == null)) {
+        return;
+      }
+      this.embed();
+      return this.embedded = true;
+    };
+
+    PDFFont.prototype.embed = function() {
+      throw new Error('Must be implemented by subclasses');
+    };
+
+    PDFFont.prototype.lineHeight = function(size, includeGap) {
+      var gap;
+      if (includeGap == null) {
+        includeGap = false;
+      }
+      gap = includeGap ? this.lineGap : 0;
+      return (this.ascender + gap - this.descender) / 1000 * size;
+    };
+
+    return PDFFont;
+
+  })();
+
+  module.exports = PDFFont;
+
+  StandardFont = __webpack_require__(292);
+
+  EmbeddedFont = __webpack_require__(294);
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 51 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.7.1
+(function() {
+  var DecodeStream, iconv;
+
+  try {
+    iconv = __webpack_require__(52);
+  } catch (_error) {}
+
+  DecodeStream = (function() {
+    var key;
+
+    function DecodeStream(buffer) {
+      this.buffer = buffer;
+      this.pos = 0;
+      this.length = this.buffer.length;
+    }
+
+    DecodeStream.TYPES = {
+      UInt8: 1,
+      UInt16: 2,
+      UInt24: 3,
+      UInt32: 4,
+      Int8: 1,
+      Int16: 2,
+      Int24: 3,
+      Int32: 4,
+      Float: 4,
+      Double: 8
+    };
+
+    for (key in Buffer.prototype) {
+      if (key.slice(0, 4) === 'read') {
+        (function(key) {
+          var bytes;
+          bytes = DecodeStream.TYPES[key.replace(/read|[BL]E/g, '')];
+          return DecodeStream.prototype[key] = function() {
+            var ret;
+            ret = this.buffer[key](this.pos);
+            this.pos += bytes;
+            return ret;
+          };
+        })(key);
+      }
+    }
+
+    DecodeStream.prototype.readString = function(length, encoding) {
+      var buf, byte, i, _i, _ref;
+      if (encoding == null) {
+        encoding = 'ascii';
+      }
+      switch (encoding) {
+        case 'utf16le':
+        case 'ucs2':
+        case 'utf8':
+        case 'ascii':
+          return this.buffer.toString(encoding, this.pos, this.pos += length);
+        case 'utf16be':
+          buf = new Buffer(this.readBuffer(length));
+          for (i = _i = 0, _ref = buf.length - 1; _i < _ref; i = _i += 2) {
+            byte = buf[i];
+            buf[i] = buf[i + 1];
+            buf[i + 1] = byte;
+          }
+          return buf.toString('utf16le');
+        default:
+          buf = this.readBuffer(length);
+          if (iconv) {
+            try {
+              return iconv.decode(buf, encoding);
+            } catch (_error) {}
+          }
+          return buf;
+      }
+    };
+
+    DecodeStream.prototype.readBuffer = function(length) {
+      return this.buffer.slice(this.pos, this.pos += length);
+    };
+
+    DecodeStream.prototype.readUInt24BE = function() {
+      return (this.readUInt16BE() << 8) + this.readUInt8();
+    };
+
+    DecodeStream.prototype.readUInt24LE = function() {
+      return this.readUInt16LE() + (this.readUInt8() << 16);
+    };
+
+    DecodeStream.prototype.readInt24BE = function() {
+      return (this.readInt16BE() << 8) + this.readUInt8();
+    };
+
+    DecodeStream.prototype.readInt24LE = function() {
+      return this.readUInt16LE() + (this.readInt8() << 16);
+    };
+
+    return DecodeStream;
+
+  })();
+
+  module.exports = DecodeStream;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 52 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(process) {
+
+// Some environments don't have global Buffer (e.g. React Native).
+// Solution would be installing npm modules "buffer" and "stream" explicitly.
+var Buffer = __webpack_require__(1).Buffer;
+
+var bomHandling = __webpack_require__(170),
+    iconv = module.exports;
+
+// All codecs and aliases are kept here, keyed by encoding name/alias.
+// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.
+iconv.encodings = null;
+
+// Characters emitted in case of error.
+iconv.defaultCharUnicode = '�';
+iconv.defaultCharSingleByte = '?';
+
+// Public API.
+iconv.encode = function encode(str, encoding, options) {
+    str = "" + (str || ""); // Ensure string.
+
+    var encoder = iconv.getEncoder(encoding, options);
+
+    var res = encoder.write(str);
+    var trail = encoder.end();
+    
+    return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;
+}
+
+iconv.decode = function decode(buf, encoding, options) {
+    if (typeof buf === 'string') {
+        if (!iconv.skipDecodeWarning) {
+            console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');
+            iconv.skipDecodeWarning = true;
+        }
+
+        buf = new Buffer("" + (buf || ""), "binary"); // Ensure buffer.
+    }
+
+    var decoder = iconv.getDecoder(encoding, options);
+
+    var res = decoder.write(buf);
+    var trail = decoder.end();
+
+    return trail ? (res + trail) : res;
+}
+
+iconv.encodingExists = function encodingExists(enc) {
+    try {
+        iconv.getCodec(enc);
+        return true;
+    } catch (e) {
+        return false;
+    }
+}
+
+// Legacy aliases to convert functions
+iconv.toEncoding = iconv.encode;
+iconv.fromEncoding = iconv.decode;
+
+// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.
+iconv._codecDataCache = {};
+iconv.getCodec = function getCodec(encoding) {
+    if (!iconv.encodings)
+        iconv.encodings = __webpack_require__(171); // Lazy load all encoding definitions.
+    
+    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
+    var enc = (''+encoding).toLowerCase().replace(/[^0-9a-z]|:\d{4}$/g, "");
+
+    // Traverse iconv.encodings to find actual codec.
+    var codecOptions = {};
+    while (true) {
+        var codec = iconv._codecDataCache[enc];
+        if (codec)
+            return codec;
+
+        var codecDef = iconv.encodings[enc];
+
+        switch (typeof codecDef) {
+            case "string": // Direct alias to other encoding.
+                enc = codecDef;
+                break;
+
+            case "object": // Alias with options. Can be layered.
+                for (var key in codecDef)
+                    codecOptions[key] = codecDef[key];
+
+                if (!codecOptions.encodingName)
+                    codecOptions.encodingName = enc;
+                
+                enc = codecDef.type;
+                break;
+
+            case "function": // Codec itself.
+                if (!codecOptions.encodingName)
+                    codecOptions.encodingName = enc;
+
+                // The codec function must load all tables and return object with .encoder and .decoder methods.
+                // It'll be called only once (for each different options object).
+                codec = new codecDef(codecOptions, iconv);
+
+                iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.
+                return codec;
+
+            default:
+                throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')");
+        }
+    }
+}
+
+iconv.getEncoder = function getEncoder(encoding, options) {
+    var codec = iconv.getCodec(encoding),
+        encoder = new codec.encoder(options, codec);
+
+    if (codec.bomAware && options && options.addBOM)
+        encoder = new bomHandling.PrependBOM(encoder, options);
+
+    return encoder;
+}
+
+iconv.getDecoder = function getDecoder(encoding, options) {
+    var codec = iconv.getCodec(encoding),
+        decoder = new codec.decoder(options, codec);
+
+    if (codec.bomAware && !(options && options.stripBOM === false))
+        decoder = new bomHandling.StripBOM(decoder, options);
+
+    return decoder;
+}
+
+
+// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json.
+var nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node;
+if (nodeVer) {
+
+    // Load streaming support in Node v0.10+
+    var nodeVerArr = nodeVer.split(".").map(Number);
+    if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {
+        __webpack_require__(185)(iconv);
+    }
+
+    // Load Node primitive extensions.
+    __webpack_require__(186)(iconv);
+}
+
+if (false) {
+    console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.");
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11)))
+
+/***/ }),
+/* 53 */
+/***/ (function(module, exports) {
+
+module.exports = [["0","\u0000",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1","　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","！＂＃￥％",88,"￣"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰￢￤"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]
+
+/***/ }),
+/* 54 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// fallback for non-array-like ES3 and non-enumerable old V8 strings
+var cof = __webpack_require__(55);
+// eslint-disable-next-line no-prototype-builtins
+module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
+  return cof(it) == 'String' ? it.split('') : Object(it);
+};
+
+
+/***/ }),
+/* 55 */
+/***/ (function(module, exports) {
+
+var toString = {}.toString;
+
+module.exports = function (it) {
+  return toString.call(it).slice(8, -1);
+};
+
+
+/***/ }),
+/* 56 */
+/***/ (function(module, exports) {
+
+// 7.2.1 RequireObjectCoercible(argument)
+module.exports = function (it) {
+  if (it == undefined) throw TypeError("Can't call method on  " + it);
+  return it;
+};
+
+
+/***/ }),
+/* 57 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var pIE = __webpack_require__(35);
+var createDesc = __webpack_require__(27);
+var toIObject = __webpack_require__(17);
+var toPrimitive = __webpack_require__(58);
+var has = __webpack_require__(18);
+var IE8_DOM_DEFINE = __webpack_require__(95);
+var gOPD = Object.getOwnPropertyDescriptor;
+
+exports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P) {
+  O = toIObject(O);
+  P = toPrimitive(P, true);
+  if (IE8_DOM_DEFINE) try {
+    return gOPD(O, P);
+  } catch (e) { /* empty */ }
+  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
+};
+
+
+/***/ }),
+/* 58 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.1.1 ToPrimitive(input [, PreferredType])
+var isObject = __webpack_require__(9);
+// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+// and the second argument - flag - preferred type is a string
+module.exports = function (it, S) {
+  if (!isObject(it)) return it;
+  var fn, val;
+  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
+  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+  throw TypeError("Can't convert object to primitive value");
+};
+
+
+/***/ }),
+/* 59 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// most Object methods by ES6 should accept primitives
+var $export = __webpack_require__(3);
+var core = __webpack_require__(2);
+var fails = __webpack_require__(19);
+module.exports = function (KEY, exec) {
+  var fn = (core.Object || {})[KEY] || Object[KEY];
+  var exp = {};
+  exp[KEY] = exec(fn);
+  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
+};
+
+
+/***/ }),
+/* 60 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(200), __esModule: true };
+
+/***/ }),
+/* 61 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var LIBRARY = __webpack_require__(62);
+var $export = __webpack_require__(3);
+var redefine = __webpack_require__(99);
+var hide = __webpack_require__(13);
+var has = __webpack_require__(18);
+var Iterators = __webpack_require__(23);
+var $iterCreate = __webpack_require__(203);
+var setToStringTag = __webpack_require__(39);
+var getPrototypeOf = __webpack_require__(206);
+var ITERATOR = __webpack_require__(4)('iterator');
+var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
+var FF_ITERATOR = '@@iterator';
+var KEYS = 'keys';
+var VALUES = 'values';
+
+var returnThis = function () { return this; };
+
+module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
+  $iterCreate(Constructor, NAME, next);
+  var getMethod = function (kind) {
+    if (!BUGGY && kind in proto) return proto[kind];
+    switch (kind) {
+      case KEYS: return function keys() { return new Constructor(this, kind); };
+      case VALUES: return function values() { return new Constructor(this, kind); };
+    } return function entries() { return new Constructor(this, kind); };
+  };
+  var TAG = NAME + ' Iterator';
+  var DEF_VALUES = DEFAULT == VALUES;
+  var VALUES_BUG = false;
+  var proto = Base.prototype;
+  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
+  var $default = (!BUGGY && $native) || getMethod(DEFAULT);
+  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
+  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
+  var methods, key, IteratorPrototype;
+  // Fix native
+  if ($anyNative) {
+    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
+    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
+      // Set @@toStringTag to native iterators
+      setToStringTag(IteratorPrototype, TAG, true);
+      // fix for some old engines
+      if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);
+    }
+  }
+  // fix Array#{values, @@iterator}.name in V8 / FF
+  if (DEF_VALUES && $native && $native.name !== VALUES) {
+    VALUES_BUG = true;
+    $default = function values() { return $native.call(this); };
+  }
+  // Define iterator
+  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
+    hide(proto, ITERATOR, $default);
+  }
+  // Plug for library
+  Iterators[NAME] = $default;
+  Iterators[TAG] = returnThis;
+  if (DEFAULT) {
+    methods = {
+      values: DEF_VALUES ? $default : getMethod(VALUES),
+      keys: IS_SET ? $default : getMethod(KEYS),
+      entries: $entries
+    };
+    if (FORCED) for (key in methods) {
+      if (!(key in proto)) redefine(proto, key, methods[key]);
+    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
+  }
+  return methods;
+};
+
+
+/***/ }),
+/* 62 */
+/***/ (function(module, exports) {
+
+module.exports = true;
+
+
+/***/ }),
+/* 63 */
+/***/ (function(module, exports) {
+
+// 7.1.4 ToInteger
+var ceil = Math.ceil;
+var floor = Math.floor;
+module.exports = function (it) {
+  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+};
+
+
+/***/ }),
+/* 64 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var shared = __webpack_require__(65)('keys');
+var uid = __webpack_require__(38);
+module.exports = function (key) {
+  return shared[key] || (shared[key] = uid(key));
+};
+
+
+/***/ }),
+/* 65 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var global = __webpack_require__(10);
+var SHARED = '__core-js_shared__';
+var store = global[SHARED] || (global[SHARED] = {});
+module.exports = function (key) {
+  return store[key] || (store[key] = {});
+};
+
+
+/***/ }),
+/* 66 */
+/***/ (function(module, exports) {
+
+// IE 8- don't enum bug keys
+module.exports = (
+  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
+).split(',');
+
+
+/***/ }),
+/* 67 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var classof = __webpack_require__(68);
+var ITERATOR = __webpack_require__(4)('iterator');
+var Iterators = __webpack_require__(23);
+module.exports = __webpack_require__(2).getIteratorMethod = function (it) {
+  if (it != undefined) return it[ITERATOR]
+    || it['@@iterator']
+    || Iterators[classof(it)];
+};
+
+
+/***/ }),
+/* 68 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// getting tag from 19.1.3.6 Object.prototype.toString()
+var cof = __webpack_require__(55);
+var TAG = __webpack_require__(4)('toStringTag');
+// ES3 wrong here
+var ARG = cof(function () { return arguments; }()) == 'Arguments';
+
+// fallback for IE11 Script Access Denied error
+var tryGet = function (it, key) {
+  try {
+    return it[key];
+  } catch (e) { /* empty */ }
+};
+
+module.exports = function (it) {
+  var O, T, B;
+  return it === undefined ? 'Undefined' : it === null ? 'Null'
+    // @@toStringTag case
+    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
+    // builtinTag case
+    : ARG ? cof(O)
+    // ES3 arguments fallback
+    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
+};
+
+
+/***/ }),
+/* 69 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _iterator = __webpack_require__(103);
+
+var _iterator2 = _interopRequireDefault(_iterator);
+
+var _symbol = __webpack_require__(216);
+
+var _symbol2 = _interopRequireDefault(_symbol);
+
+var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {
+  return typeof obj === "undefined" ? "undefined" : _typeof(obj);
+} : function (obj) {
+  return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);
+};
+
+/***/ }),
+/* 70 */
+/***/ (function(module, exports, __webpack_require__) {
+
+exports.f = __webpack_require__(4);
+
+
+/***/ }),
+/* 71 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var global = __webpack_require__(10);
+var core = __webpack_require__(2);
+var LIBRARY = __webpack_require__(62);
+var wksExt = __webpack_require__(70);
+var defineProperty = __webpack_require__(6).f;
+module.exports = function (name) {
+  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
+  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
+};
+
+
+/***/ }),
+/* 72 */
+/***/ (function(module, exports) {
+
+exports.f = Object.getOwnPropertySymbols;
+
+
+/***/ }),
+/* 73 */
+/***/ (function(module, exports) {
+
+
+
+/***/ }),
+/* 74 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(223), __esModule: true };
+
+/***/ }),
+/* 75 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(9);
+module.exports = function (it, TYPE) {
+  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
+  return it;
+};
+
+
+/***/ }),
+/* 76 */
+/***/ (function(module, exports) {
+
+var toString = {}.toString;
+
+module.exports = Array.isArray || function (arr) {
+  return toString.call(arr) == '[object Array]';
+};
+
+
+/***/ }),
+/* 77 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+function TraversalTracker() {
+	this.events = {};
+}
+
+TraversalTracker.prototype.startTracking = function (event, callback) {
+	var callbacks = this.events[event] || (this.events[event] = []);
+
+	if (callbacks.indexOf(callback) < 0) {
+		callbacks.push(callback);
+	}
+};
+
+TraversalTracker.prototype.stopTracking = function (event, callback) {
+	var callbacks = this.events[event];
+
+	if (!callbacks) {
+		return;
+	}
+
+	var index = callbacks.indexOf(callback);
+	if (index >= 0) {
+		callbacks.splice(index, 1);
+	}
+};
+
+TraversalTracker.prototype.emit = function (event) {
+	var args = Array.prototype.slice.call(arguments, 1);
+	var callbacks = this.events[event];
+
+	if (!callbacks) {
+		return;
+	}
+
+	callbacks.forEach(function (callback) {
+		callback.apply(this, args);
+	});
+};
+
+TraversalTracker.prototype.auto = function (event, callback, innerFunction) {
+	this.startTracking(event, callback);
+	innerFunction();
+	this.stopTracking(event, callback);
+};
+
+module.exports = TraversalTracker;
+
+
+/***/ }),
+/* 78 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var AI, AL, BA, BK, CB, CI_BRK, CJ, CP_BRK, CR, DI_BRK, ID, IN_BRK, LF, LineBreaker, NL, NS, PR_BRK, SA, SG, SP, UnicodeTrie, WJ, XX, base64, characterClasses, classTrie, data, fs, pairTable, _ref, _ref1;
+
+  UnicodeTrie = __webpack_require__(43);
+
+  
+
+  base64 = __webpack_require__(131);
+
+  _ref = __webpack_require__(132), BK = _ref.BK, CR = _ref.CR, LF = _ref.LF, NL = _ref.NL, CB = _ref.CB, BA = _ref.BA, SP = _ref.SP, WJ = _ref.WJ, SP = _ref.SP, BK = _ref.BK, LF = _ref.LF, NL = _ref.NL, AI = _ref.AI, AL = _ref.AL, SA = _ref.SA, SG = _ref.SG, XX = _ref.XX, CJ = _ref.CJ, ID = _ref.ID, NS = _ref.NS, characterClasses = _ref.characterClasses;
+
+  _ref1 = __webpack_require__(133), DI_BRK = _ref1.DI_BRK, IN_BRK = _ref1.IN_BRK, CI_BRK = _ref1.CI_BRK, CP_BRK = _ref1.CP_BRK, PR_BRK = _ref1.PR_BRK, pairTable = _ref1.pairTable;
+
+  data = base64.toByteArray("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");
+
+  classTrie = new UnicodeTrie(data);
+
+  LineBreaker = (function() {
+    var Break, mapClass, mapFirst;
+
+    function LineBreaker(string) {
+      this.string = string;
+      this.pos = 0;
+      this.lastPos = 0;
+      this.curClass = null;
+      this.nextClass = null;
+    }
+
+    LineBreaker.prototype.nextCodePoint = function() {
+      var code, next;
+      code = this.string.charCodeAt(this.pos++);
+      next = this.string.charCodeAt(this.pos);
+      if ((0xd800 <= code && code <= 0xdbff) && (0xdc00 <= next && next <= 0xdfff)) {
+        this.pos++;
+        return ((code - 0xd800) * 0x400) + (next - 0xdc00) + 0x10000;
+      }
+      return code;
+    };
+
+    mapClass = function(c) {
+      switch (c) {
+        case AI:
+          return AL;
+        case SA:
+        case SG:
+        case XX:
+          return AL;
+        case CJ:
+          return NS;
+        default:
+          return c;
+      }
+    };
+
+    mapFirst = function(c) {
+      switch (c) {
+        case LF:
+        case NL:
+          return BK;
+        case CB:
+          return BA;
+        case SP:
+          return WJ;
+        default:
+          return c;
+      }
+    };
+
+    LineBreaker.prototype.nextCharClass = function(first) {
+      if (first == null) {
+        first = false;
+      }
+      return mapClass(classTrie.get(this.nextCodePoint()));
+    };
+
+    Break = (function() {
+      function Break(position, required) {
+        this.position = position;
+        this.required = required != null ? required : false;
+      }
+
+      return Break;
+
+    })();
+
+    LineBreaker.prototype.nextBreak = function() {
+      var cur, lastClass, shouldBreak;
+      if (this.curClass == null) {
+        this.curClass = mapFirst(this.nextCharClass());
+      }
+      while (this.pos < this.string.length) {
+        this.lastPos = this.pos;
+        lastClass = this.nextClass;
+        this.nextClass = this.nextCharClass();
+        if (this.curClass === BK || (this.curClass === CR && this.nextClass !== LF)) {
+          this.curClass = mapFirst(mapClass(this.nextClass));
+          return new Break(this.lastPos, true);
+        }
+        cur = (function() {
+          switch (this.nextClass) {
+            case SP:
+              return this.curClass;
+            case BK:
+            case LF:
+            case NL:
+              return BK;
+            case CR:
+              return CR;
+            case CB:
+              return BA;
+          }
+        }).call(this);
+        if (cur != null) {
+          this.curClass = cur;
+          if (this.nextClass === CB) {
+            return new Break(this.lastPos);
+          }
+          continue;
+        }
+        shouldBreak = false;
+        switch (pairTable[this.curClass][this.nextClass]) {
+          case DI_BRK:
+            shouldBreak = true;
+            break;
+          case IN_BRK:
+            shouldBreak = lastClass === SP;
+            break;
+          case CI_BRK:
+            shouldBreak = lastClass === SP;
+            if (!shouldBreak) {
+              continue;
+            }
+            break;
+          case CP_BRK:
+            if (lastClass !== SP) {
+              continue;
+            }
+        }
+        this.curClass = this.nextClass;
+        if (shouldBreak) {
+          return new Break(this.lastPos);
+        }
+      }
+      if (this.pos >= this.string.length) {
+        if (this.lastPos < this.string.length) {
+          this.lastPos = this.string.length;
+          return new Break(this.string.length);
+        } else {
+          return null;
+        }
+      }
+    };
+
+    return LineBreaker;
+
+  })();
+
+  module.exports = LineBreaker;
+
+}).call(this);
+
+
+/***/ }),
+/* 79 */
+/***/ (function(module, exports) {
+
+var TINF_OK = 0;
+var TINF_DATA_ERROR = -3;
+
+function Tree() {
+  this.table = new Uint16Array(16);   /* table of code length counts */
+  this.trans = new Uint16Array(288);  /* code -> symbol translation table */
+}
+
+function Data(source, dest) {
+  this.source = source;
+  this.sourceIndex = 0;
+  this.tag = 0;
+  this.bitcount = 0;
+  
+  this.dest = dest;
+  this.destLen = 0;
+  
+  this.ltree = new Tree();  /* dynamic length/symbol tree */
+  this.dtree = new Tree();  /* dynamic distance tree */
+}
+
+/* --------------------------------------------------- *
+ * -- uninitialized global data (static structures) -- *
+ * --------------------------------------------------- */
+
+var sltree = new Tree();
+var sdtree = new Tree();
+
+/* extra bits and base tables for length codes */
+var length_bits = new Uint8Array(30);
+var length_base = new Uint16Array(30);
+
+/* extra bits and base tables for distance codes */
+var dist_bits = new Uint8Array(30);
+var dist_base = new Uint16Array(30);
+
+/* special ordering of code length codes */
+var clcidx = new Uint8Array([
+  16, 17, 18, 0, 8, 7, 9, 6,
+  10, 5, 11, 4, 12, 3, 13, 2,
+  14, 1, 15
+]);
+
+/* used by tinf_decode_trees, avoids allocations every call */
+var code_tree = new Tree();
+var lengths = new Uint8Array(288 + 32);
+
+/* ----------------------- *
+ * -- utility functions -- *
+ * ----------------------- */
+
+/* build extra bits and base tables */
+function tinf_build_bits_base(bits, base, delta, first) {
+  var i, sum;
+
+  /* build bits table */
+  for (i = 0; i < delta; ++i) bits[i] = 0;
+  for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;
+
+  /* build base table */
+  for (sum = first, i = 0; i < 30; ++i) {
+    base[i] = sum;
+    sum += 1 << bits[i];
+  }
+}
+
+/* build the fixed huffman trees */
+function tinf_build_fixed_trees(lt, dt) {
+  var i;
+
+  /* build fixed length tree */
+  for (i = 0; i < 7; ++i) lt.table[i] = 0;
+
+  lt.table[7] = 24;
+  lt.table[8] = 152;
+  lt.table[9] = 112;
+
+  for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;
+  for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;
+  for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;
+  for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;
+
+  /* build fixed distance tree */
+  for (i = 0; i < 5; ++i) dt.table[i] = 0;
+
+  dt.table[5] = 32;
+
+  for (i = 0; i < 32; ++i) dt.trans[i] = i;
+}
+
+/* given an array of code lengths, build a tree */
+var offs = new Uint16Array(16);
+
+function tinf_build_tree(t, lengths, off, num) {
+  var i, sum;
+
+  /* clear code length count table */
+  for (i = 0; i < 16; ++i) t.table[i] = 0;
+
+  /* scan symbol lengths, and sum code length counts */
+  for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;
+
+  t.table[0] = 0;
+
+  /* compute offset table for distribution sort */
+  for (sum = 0, i = 0; i < 16; ++i) {
+    offs[i] = sum;
+    sum += t.table[i];
+  }
+
+  /* create code->symbol translation table (symbols sorted by code) */
+  for (i = 0; i < num; ++i) {
+    if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;
+  }
+}
+
+/* ---------------------- *
+ * -- decode functions -- *
+ * ---------------------- */
+
+/* get one bit from source stream */
+function tinf_getbit(d) {
+  /* check if tag is empty */
+  if (!d.bitcount--) {
+    /* load next tag */
+    d.tag = d.source[d.sourceIndex++];
+    d.bitcount = 7;
+  }
+
+  /* shift bit out of tag */
+  var bit = d.tag & 1;
+  d.tag >>>= 1;
+
+  return bit;
+}
+
+/* read a num bit value from a stream and add base */
+function tinf_read_bits(d, num, base) {
+  if (!num)
+    return base;
+
+  while (d.bitcount < 24) {
+    d.tag |= d.source[d.sourceIndex++] << d.bitcount;
+    d.bitcount += 8;
+  }
+
+  var val = d.tag & (0xffff >>> (16 - num));
+  d.tag >>>= num;
+  d.bitcount -= num;
+  return val + base;
+}
+
+/* given a data stream and a tree, decode a symbol */
+function tinf_decode_symbol(d, t) {
+  while (d.bitcount < 24) {
+    d.tag |= d.source[d.sourceIndex++] << d.bitcount;
+    d.bitcount += 8;
+  }
+  
+  var sum = 0, cur = 0, len = 0;
+  var tag = d.tag;
+
+  /* get more bits while code value is above sum */
+  do {
+    cur = 2 * cur + (tag & 1);
+    tag >>>= 1;
+    ++len;
+
+    sum += t.table[len];
+    cur -= t.table[len];
+  } while (cur >= 0);
+  
+  d.tag = tag;
+  d.bitcount -= len;
+
+  return t.trans[sum + cur];
+}
+
+/* given a data stream, decode dynamic trees from it */
+function tinf_decode_trees(d, lt, dt) {
+  var hlit, hdist, hclen;
+  var i, num, length;
+
+  /* get 5 bits HLIT (257-286) */
+  hlit = tinf_read_bits(d, 5, 257);
+
+  /* get 5 bits HDIST (1-32) */
+  hdist = tinf_read_bits(d, 5, 1);
+
+  /* get 4 bits HCLEN (4-19) */
+  hclen = tinf_read_bits(d, 4, 4);
+
+  for (i = 0; i < 19; ++i) lengths[i] = 0;
+
+  /* read code lengths for code length alphabet */
+  for (i = 0; i < hclen; ++i) {
+    /* get 3 bits code length (0-7) */
+    var clen = tinf_read_bits(d, 3, 0);
+    lengths[clcidx[i]] = clen;
+  }
+
+  /* build code length tree */
+  tinf_build_tree(code_tree, lengths, 0, 19);
+
+  /* decode code lengths for the dynamic trees */
+  for (num = 0; num < hlit + hdist;) {
+    var sym = tinf_decode_symbol(d, code_tree);
+
+    switch (sym) {
+      case 16:
+        /* copy previous code length 3-6 times (read 2 bits) */
+        var prev = lengths[num - 1];
+        for (length = tinf_read_bits(d, 2, 3); length; --length) {
+          lengths[num++] = prev;
+        }
+        break;
+      case 17:
+        /* repeat code length 0 for 3-10 times (read 3 bits) */
+        for (length = tinf_read_bits(d, 3, 3); length; --length) {
+          lengths[num++] = 0;
+        }
+        break;
+      case 18:
+        /* repeat code length 0 for 11-138 times (read 7 bits) */
+        for (length = tinf_read_bits(d, 7, 11); length; --length) {
+          lengths[num++] = 0;
+        }
+        break;
+      default:
+        /* values 0-15 represent the actual code lengths */
+        lengths[num++] = sym;
+        break;
+    }
+  }
+
+  /* build dynamic trees */
+  tinf_build_tree(lt, lengths, 0, hlit);
+  tinf_build_tree(dt, lengths, hlit, hdist);
+}
+
+/* ----------------------------- *
+ * -- block inflate functions -- *
+ * ----------------------------- */
+
+/* given a stream and two trees, inflate a block of data */
+function tinf_inflate_block_data(d, lt, dt) {
+  while (1) {
+    var sym = tinf_decode_symbol(d, lt);
+
+    /* check for end of block */
+    if (sym === 256) {
+      return TINF_OK;
+    }
+
+    if (sym < 256) {
+      d.dest[d.destLen++] = sym;
+    } else {
+      var length, dist, offs;
+      var i;
+
+      sym -= 257;
+
+      /* possibly get more bits from length code */
+      length = tinf_read_bits(d, length_bits[sym], length_base[sym]);
+
+      dist = tinf_decode_symbol(d, dt);
+
+      /* possibly get more bits from distance code */
+      offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);
+
+      /* copy match */
+      for (i = offs; i < offs + length; ++i) {
+        d.dest[d.destLen++] = d.dest[i];
+      }
+    }
+  }
+}
+
+/* inflate an uncompressed block of data */
+function tinf_inflate_uncompressed_block(d) {
+  var length, invlength;
+  var i;
+  
+  /* unread from bitbuffer */
+  while (d.bitcount > 8) {
+    d.sourceIndex--;
+    d.bitcount -= 8;
+  }
+
+  /* get length */
+  length = d.source[d.sourceIndex + 1];
+  length = 256 * length + d.source[d.sourceIndex];
+
+  /* get one's complement of length */
+  invlength = d.source[d.sourceIndex + 3];
+  invlength = 256 * invlength + d.source[d.sourceIndex + 2];
+
+  /* check length */
+  if (length !== (~invlength & 0x0000ffff))
+    return TINF_DATA_ERROR;
+
+  d.sourceIndex += 4;
+
+  /* copy block */
+  for (i = length; i; --i)
+    d.dest[d.destLen++] = d.source[d.sourceIndex++];
+
+  /* make sure we start next block on a byte boundary */
+  d.bitcount = 0;
+
+  return TINF_OK;
+}
+
+/* inflate stream from source to dest */
+function tinf_uncompress(source, dest) {
+  var d = new Data(source, dest);
+  var bfinal, btype, res;
+
+  do {
+    /* read final block flag */
+    bfinal = tinf_getbit(d);
+
+    /* read block type (2 bits) */
+    btype = tinf_read_bits(d, 2, 0);
+
+    /* decompress block */
+    switch (btype) {
+      case 0:
+        /* decompress uncompressed block */
+        res = tinf_inflate_uncompressed_block(d);
+        break;
+      case 1:
+        /* decompress block with fixed huffman trees */
+        res = tinf_inflate_block_data(d, sltree, sdtree);
+        break;
+      case 2:
+        /* decompress block with dynamic huffman trees */
+        tinf_decode_trees(d, d.ltree, d.dtree);
+        res = tinf_inflate_block_data(d, d.ltree, d.dtree);
+        break;
+      default:
+        res = TINF_DATA_ERROR;
+    }
+
+    if (res !== TINF_OK)
+      throw new Error('Data error');
+
+  } while (!bfinal);
+
+  if (d.destLen < d.dest.length) {
+    if (typeof d.dest.slice === 'function')
+      return d.dest.slice(0, d.destLen);
+    else
+      return d.dest.subarray(0, d.destLen);
+  }
+  
+  return d.dest;
+}
+
+/* -------------------- *
+ * -- initialization -- *
+ * -------------------- */
+
+/* build fixed huffman trees */
+tinf_build_fixed_trees(sltree, sdtree);
+
+/* build extra bits and base tables */
+tinf_build_bits_base(length_bits, length_base, 4, 3);
+tinf_build_bits_base(dist_bits, dist_base, 2, 1);
+
+/* fix a special case */
+length_bits[28] = 0;
+length_base[28] = 258;
+
+module.exports = tinf_uncompress;
+
+
+/***/ }),
+/* 80 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var isString = __webpack_require__(0).isString;
+var isArray = __webpack_require__(0).isArray;
+var isUndefined = __webpack_require__(0).isUndefined;
+var isNull = __webpack_require__(0).isNull;
+
+/**
+ * Creates an instance of StyleContextStack used for style inheritance and style overrides
+ *
+ * @constructor
+ * @this {StyleContextStack}
+ * @param {Object} named styles dictionary
+ * @param {Object} optional default style definition
+ */
+function StyleContextStack(styleDictionary, defaultStyle) {
+	this.defaultStyle = defaultStyle || {};
+	this.styleDictionary = styleDictionary;
+	this.styleOverrides = [];
+}
+
+/**
+ * Creates cloned version of current stack
+ * @return {StyleContextStack} current stack snapshot
+ */
+StyleContextStack.prototype.clone = function () {
+	var stack = new StyleContextStack(this.styleDictionary, this.defaultStyle);
+
+	this.styleOverrides.forEach(function (item) {
+		stack.styleOverrides.push(item);
+	});
+
+	return stack;
+};
+
+/**
+ * Pushes style-name or style-overrides-object onto the stack for future evaluation
+ *
+ * @param {String|Object} styleNameOrOverride style-name (referring to styleDictionary) or
+ *                                            a new dictionary defining overriding properties
+ */
+StyleContextStack.prototype.push = function (styleNameOrOverride) {
+	this.styleOverrides.push(styleNameOrOverride);
+};
+
+/**
+ * Removes last style-name or style-overrides-object from the stack
+ *
+ * @param {Number} howMany - optional number of elements to be popped (if not specified,
+ *                           one element will be removed from the stack)
+ */
+StyleContextStack.prototype.pop = function (howMany) {
+	howMany = howMany || 1;
+
+	while (howMany-- > 0) {
+		this.styleOverrides.pop();
+	}
+};
+
+/**
+ * Creates a set of named styles or/and a style-overrides-object based on the item,
+ * pushes those elements onto the stack for future evaluation and returns the number
+ * of elements pushed, so they can be easily poped then.
+ *
+ * @param {Object} item - an object with optional style property and/or style overrides
+ * @return the number of items pushed onto the stack
+ */
+StyleContextStack.prototype.autopush = function (item) {
+	if (isString(item)) {
+		return 0;
+	}
+
+	var styleNames = [];
+
+	if (item.style) {
+		if (isArray(item.style)) {
+			styleNames = item.style;
+		} else {
+			styleNames = [item.style];
+		}
+	}
+
+	for (var i = 0, l = styleNames.length; i < l; i++) {
+		this.push(styleNames[i]);
+	}
+
+	var styleProperties = [
+		'font',
+		'fontSize',
+		'fontFeatures',
+		'bold',
+		'italics',
+		'alignment',
+		'color',
+		'columnGap',
+		'fillColor',
+		'decoration',
+		'decorationStyle',
+		'decorationColor',
+		'background',
+		'lineHeight',
+		'characterSpacing',
+		'noWrap',
+		'markerColor',
+		'leadingIndent'
+			//'tableCellPadding'
+			// 'cellBorder',
+			// 'headerCellBorder',
+			// 'oddRowCellBorder',
+			// 'evenRowCellBorder',
+			// 'tableBorder'
+	];
+	var styleOverrideObject = {};
+	var pushStyleOverrideObject = false;
+
+	styleProperties.forEach(function (key) {
+		if (!isUndefined(item[key]) && !isNull(item[key])) {
+			styleOverrideObject[key] = item[key];
+			pushStyleOverrideObject = true;
+		}
+	});
+
+	if (pushStyleOverrideObject) {
+		this.push(styleOverrideObject);
+	}
+
+	return styleNames.length + (pushStyleOverrideObject ? 1 : 0);
+};
+
+/**
+ * Automatically pushes elements onto the stack, using autopush based on item,
+ * executes callback and then pops elements back. Returns value returned by callback
+ *
+ * @param  {Object}   item - an object with optional style property and/or style overrides
+ * @param  {Function} function to be called between autopush and pop
+ * @return {Object} value returned by callback
+ */
+StyleContextStack.prototype.auto = function (item, callback) {
+	var pushedItems = this.autopush(item);
+	var result = callback();
+
+	if (pushedItems > 0) {
+		this.pop(pushedItems);
+	}
+
+	return result;
+};
+
+/**
+ * Evaluates stack and returns value of a named property
+ *
+ * @param {String} property - property name
+ * @return property value or null if not found
+ */
+StyleContextStack.prototype.getProperty = function (property) {
+	if (this.styleOverrides) {
+		for (var i = this.styleOverrides.length - 1; i >= 0; i--) {
+			var item = this.styleOverrides[i];
+
+			if (isString(item)) {
+				// named-style-override
+				var style = this.styleDictionary[item];
+				if (style && !isUndefined(style[property]) && !isNull(style[property])) {
+					return style[property];
+				}
+			} else if (!isUndefined(item[property]) && !isNull(item[property])) {
+				// style-overrides-object
+				return item[property];
+			}
+		}
+	}
+
+	return this.defaultStyle && this.defaultStyle[property];
+};
+
+module.exports = StyleContextStack;
+
+
+/***/ }),
+/* 81 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var TraversalTracker = __webpack_require__(77);
+var isString = __webpack_require__(0).isString;
+
+/**
+ * Creates an instance of DocumentContext - a store for current x, y positions and available width/height.
+ * It facilitates column divisions and vertical sync
+ */
+function DocumentContext(pageSize, pageMargins) {
+	this.pages = [];
+
+	this.pageMargins = pageMargins;
+
+	this.x = pageMargins.left;
+	this.availableWidth = pageSize.width - pageMargins.left - pageMargins.right;
+	this.availableHeight = 0;
+	this.page = -1;
+
+	this.snapshots = [];
+
+	this.endingCell = null;
+
+	this.tracker = new TraversalTracker();
+
+	this.addPage(pageSize);
+
+	this.hasBackground = false;
+}
+
+DocumentContext.prototype.beginColumnGroup = function () {
+	this.snapshots.push({
+		x: this.x,
+		y: this.y,
+		availableHeight: this.availableHeight,
+		availableWidth: this.availableWidth,
+		page: this.page,
+		bottomMost: {
+			x: this.x,
+			y: this.y,
+			availableHeight: this.availableHeight,
+			availableWidth: this.availableWidth,
+			page: this.page
+		},
+		endingCell: this.endingCell,
+		lastColumnWidth: this.lastColumnWidth
+	});
+
+	this.lastColumnWidth = 0;
+};
+
+DocumentContext.prototype.beginColumn = function (width, offset, endingCell) {
+	var saved = this.snapshots[this.snapshots.length - 1];
+
+	this.calculateBottomMost(saved);
+
+	this.endingCell = endingCell;
+	this.page = saved.page;
+	this.x = this.x + this.lastColumnWidth + (offset || 0);
+	this.y = saved.y;
+	this.availableWidth = width;	//saved.availableWidth - offset;
+	this.availableHeight = saved.availableHeight;
+
+	this.lastColumnWidth = width;
+};
+
+DocumentContext.prototype.calculateBottomMost = function (destContext) {
+	if (this.endingCell) {
+		this.saveContextInEndingCell(this.endingCell);
+		this.endingCell = null;
+	} else {
+		destContext.bottomMost = bottomMostContext(this, destContext.bottomMost);
+	}
+};
+
+DocumentContext.prototype.markEnding = function (endingCell) {
+	this.page = endingCell._columnEndingContext.page;
+	this.x = endingCell._columnEndingContext.x;
+	this.y = endingCell._columnEndingContext.y;
+	this.availableWidth = endingCell._columnEndingContext.availableWidth;
+	this.availableHeight = endingCell._columnEndingContext.availableHeight;
+	this.lastColumnWidth = endingCell._columnEndingContext.lastColumnWidth;
+};
+
+DocumentContext.prototype.saveContextInEndingCell = function (endingCell) {
+	endingCell._columnEndingContext = {
+		page: this.page,
+		x: this.x,
+		y: this.y,
+		availableHeight: this.availableHeight,
+		availableWidth: this.availableWidth,
+		lastColumnWidth: this.lastColumnWidth
+	};
+};
+
+DocumentContext.prototype.completeColumnGroup = function (height) {
+	var saved = this.snapshots.pop();
+
+	this.calculateBottomMost(saved);
+
+	this.endingCell = null;
+	this.x = saved.x;
+
+	var y = saved.bottomMost.y;
+	if (height) {
+		if (saved.page === saved.bottomMost.page) {
+			if ((saved.y + height) > y) {
+				y = saved.y + height;
+			}
+		} else {
+			y += height;
+		}
+	}
+
+	this.y = y;
+	this.page = saved.bottomMost.page;
+	this.availableWidth = saved.availableWidth;
+	this.availableHeight = saved.bottomMost.availableHeight;
+	if (height) {
+		this.availableHeight -= (y - saved.bottomMost.y);
+	}
+	this.lastColumnWidth = saved.lastColumnWidth;
+};
+
+DocumentContext.prototype.addMargin = function (left, right) {
+	this.x += left;
+	this.availableWidth -= left + (right || 0);
+};
+
+DocumentContext.prototype.moveDown = function (offset) {
+	this.y += offset;
+	this.availableHeight -= offset;
+
+	return this.availableHeight > 0;
+};
+
+DocumentContext.prototype.initializePage = function () {
+	this.y = this.pageMargins.top;
+	this.availableHeight = this.getCurrentPage().pageSize.height - this.pageMargins.top - this.pageMargins.bottom;
+	this.pageSnapshot().availableWidth = this.getCurrentPage().pageSize.width - this.pageMargins.left - this.pageMargins.right;
+};
+
+DocumentContext.prototype.pageSnapshot = function () {
+	if (this.snapshots[0]) {
+		return this.snapshots[0];
+	} else {
+		return this;
+	}
+};
+
+DocumentContext.prototype.moveTo = function (x, y) {
+	if (x !== undefined && x !== null) {
+		this.x = x;
+		this.availableWidth = this.getCurrentPage().pageSize.width - this.x - this.pageMargins.right;
+	}
+	if (y !== undefined && y !== null) {
+		this.y = y;
+		this.availableHeight = this.getCurrentPage().pageSize.height - this.y - this.pageMargins.bottom;
+	}
+};
+
+DocumentContext.prototype.beginDetachedBlock = function () {
+	this.snapshots.push({
+		x: this.x,
+		y: this.y,
+		availableHeight: this.availableHeight,
+		availableWidth: this.availableWidth,
+		page: this.page,
+		endingCell: this.endingCell,
+		lastColumnWidth: this.lastColumnWidth
+	});
+};
+
+DocumentContext.prototype.endDetachedBlock = function () {
+	var saved = this.snapshots.pop();
+
+	this.x = saved.x;
+	this.y = saved.y;
+	this.availableWidth = saved.availableWidth;
+	this.availableHeight = saved.availableHeight;
+	this.page = saved.page;
+	this.endingCell = saved.endingCell;
+	this.lastColumnWidth = saved.lastColumnWidth;
+};
+
+function pageOrientation(pageOrientationString, currentPageOrientation) {
+	if (pageOrientationString === undefined) {
+		return currentPageOrientation;
+	} else if (isString(pageOrientationString) && (pageOrientationString.toLowerCase() === 'landscape')) {
+		return 'landscape';
+	} else {
+		return 'portrait';
+	}
+}
+
+var getPageSize = function (currentPage, newPageOrientation) {
+
+	newPageOrientation = pageOrientation(newPageOrientation, currentPage.pageSize.orientation);
+
+	if (newPageOrientation !== currentPage.pageSize.orientation) {
+		return {
+			orientation: newPageOrientation,
+			width: currentPage.pageSize.height,
+			height: currentPage.pageSize.width
+		};
+	} else {
+		return {
+			orientation: currentPage.pageSize.orientation,
+			width: currentPage.pageSize.width,
+			height: currentPage.pageSize.height
+		};
+	}
+
+};
+
+
+DocumentContext.prototype.moveToNextPage = function (pageOrientation) {
+	var nextPageIndex = this.page + 1;
+
+	var prevPage = this.page;
+	var prevY = this.y;
+
+	var createNewPage = nextPageIndex >= this.pages.length;
+	if (createNewPage) {
+		var currentAvailableWidth = this.availableWidth;
+		var currentPageOrientation = this.getCurrentPage().pageSize.orientation;
+
+		var pageSize = getPageSize(this.getCurrentPage(), pageOrientation);
+		this.addPage(pageSize);
+
+		if (currentPageOrientation === pageSize.orientation) {
+			this.availableWidth = currentAvailableWidth;
+		}
+	} else {
+		this.page = nextPageIndex;
+		this.initializePage();
+	}
+
+	return {
+		newPageCreated: createNewPage,
+		prevPage: prevPage,
+		prevY: prevY,
+		y: this.y
+	};
+};
+
+
+DocumentContext.prototype.addPage = function (pageSize) {
+	var page = {items: [], pageSize: pageSize};
+	this.pages.push(page);
+	this.page = this.pages.length - 1;
+	this.initializePage();
+
+	this.tracker.emit('pageAdded');
+
+	return page;
+};
+
+DocumentContext.prototype.getCurrentPage = function () {
+	if (this.page < 0 || this.page >= this.pages.length) {
+		return null;
+	}
+
+	return this.pages[this.page];
+};
+
+DocumentContext.prototype.getCurrentPosition = function () {
+	var pageSize = this.getCurrentPage().pageSize;
+	var innerHeight = pageSize.height - this.pageMargins.top - this.pageMargins.bottom;
+	var innerWidth = pageSize.width - this.pageMargins.left - this.pageMargins.right;
+
+	return {
+		pageNumber: this.page + 1,
+		pageOrientation: pageSize.orientation,
+		pageInnerHeight: innerHeight,
+		pageInnerWidth: innerWidth,
+		left: this.x,
+		top: this.y,
+		verticalRatio: ((this.y - this.pageMargins.top) / innerHeight),
+		horizontalRatio: ((this.x - this.pageMargins.left) / innerWidth)
+	};
+};
+
+function bottomMostContext(c1, c2) {
+	var r;
+
+	if (c1.page > c2.page) {
+		r = c1;
+	} else if (c2.page > c1.page) {
+		r = c2;
+	} else {
+		r = (c1.y > c2.y) ? c1 : c2;
+	}
+
+	return {
+		page: r.page,
+		x: r.x,
+		y: r.y,
+		availableHeight: r.availableHeight,
+		availableWidth: r.availableWidth
+	};
+}
+
+module.exports = DocumentContext;
+
+
+/***/ }),
+/* 82 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/**
+ * Creates an instance of Line
+ *
+ * @constructor
+ * @this {Line}
+ * @param {Number} Maximum width this line can have
+ */
+function Line(maxWidth) {
+	this.maxWidth = maxWidth;
+	this.leadingCut = 0;
+	this.trailingCut = 0;
+	this.inlineWidths = 0;
+	this.inlines = [];
+}
+
+Line.prototype.getAscenderHeight = function () {
+	var y = 0;
+
+	this.inlines.forEach(function (inline) {
+		y = Math.max(y, inline.font.ascender / 1000 * inline.fontSize);
+	});
+	return y;
+};
+
+Line.prototype.hasEnoughSpaceForInline = function (inline) {
+	if (this.inlines.length === 0) {
+		return true;
+	}
+	if (this.newLineForced) {
+		return false;
+	}
+
+	return this.inlineWidths + inline.width - this.leadingCut - (inline.trailingCut || 0) <= this.maxWidth;
+};
+
+Line.prototype.addInline = function (inline) {
+	if (this.inlines.length === 0) {
+		this.leadingCut = inline.leadingCut || 0;
+	}
+	this.trailingCut = inline.trailingCut || 0;
+
+	inline.x = this.inlineWidths - this.leadingCut;
+
+	this.inlines.push(inline);
+	this.inlineWidths += inline.width;
+
+	if (inline.lineEnd) {
+		this.newLineForced = true;
+	}
+};
+
+Line.prototype.getWidth = function () {
+	return this.inlineWidths - this.leadingCut - this.trailingCut;
+};
+
+/**
+ * Returns line height
+ * @return {Number}
+ */
+Line.prototype.getHeight = function () {
+	var max = 0;
+
+	this.inlines.forEach(function (item) {
+		max = Math.max(max, item.height || 0);
+	});
+
+	return max;
+};
+
+module.exports = Line;
+
+
+/***/ }),
+/* 83 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+/*<replacement>*/
+
+var processNextTick = __webpack_require__(32).nextTick;
+/*</replacement>*/
+
+module.exports = Readable;
+
+/*<replacement>*/
+var isArray = __webpack_require__(76);
+/*</replacement>*/
+
+/*<replacement>*/
+var Duplex;
+/*</replacement>*/
+
+Readable.ReadableState = ReadableState;
+
+/*<replacement>*/
+var EE = __webpack_require__(31).EventEmitter;
+
+var EElistenerCount = function (emitter, type) {
+  return emitter.listeners(type).length;
+};
+/*</replacement>*/
+
+/*<replacement>*/
+var Stream = __webpack_require__(84);
+/*</replacement>*/
+
+/*<replacement>*/
+
+var Buffer = __webpack_require__(33).Buffer;
+var OurUint8Array = global.Uint8Array || function () {};
+function _uint8ArrayToBuffer(chunk) {
+  return Buffer.from(chunk);
+}
+function _isUint8Array(obj) {
+  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
+}
+
+/*</replacement>*/
+
+/*<replacement>*/
+var util = __webpack_require__(25);
+util.inherits = __webpack_require__(21);
+/*</replacement>*/
+
+/*<replacement>*/
+var debugUtil = __webpack_require__(139);
+var debug = void 0;
+if (debugUtil && debugUtil.debuglog) {
+  debug = debugUtil.debuglog('stream');
+} else {
+  debug = function () {};
+}
+/*</replacement>*/
+
+var BufferList = __webpack_require__(140);
+var destroyImpl = __webpack_require__(85);
+var StringDecoder;
+
+util.inherits(Readable, Stream);
+
+var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
+
+function prependListener(emitter, event, fn) {
+  // Sadly this is not cacheable as some libraries bundle their own
+  // event emitter implementation with them.
+  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
+
+  // This is a hack to make sure that our error handler is attached before any
+  // userland ones.  NEVER DO THIS. This is here only because this code needs
+  // to continue to work with older versions of Node.js that do not include
+  // the prependListener() method. The goal is to eventually remove this hack.
+  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
+}
+
+function ReadableState(options, stream) {
+  Duplex = Duplex || __webpack_require__(16);
+
+  options = options || {};
+
+  // Duplex streams are both readable and writable, but share
+  // the same options object.
+  // However, some cases require setting options to different
+  // values for the readable and the writable sides of the duplex stream.
+  // These options can be provided separately as readableXXX and writableXXX.
+  var isDuplex = stream instanceof Duplex;
+
+  // object stream flag. Used to make read(n) ignore n and to
+  // make all the buffer merging and length checks go away
+  this.objectMode = !!options.objectMode;
+
+  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
+
+  // the point at which it stops calling _read() to fill the buffer
+  // Note: 0 is a valid value, means "don't call _read preemptively ever"
+  var hwm = options.highWaterMark;
+  var readableHwm = options.readableHighWaterMark;
+  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
+
+  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
+
+  // cast to ints.
+  this.highWaterMark = Math.floor(this.highWaterMark);
+
+  // A linked list is used to store data chunks instead of an array because the
+  // linked list can remove elements from the beginning faster than
+  // array.shift()
+  this.buffer = new BufferList();
+  this.length = 0;
+  this.pipes = null;
+  this.pipesCount = 0;
+  this.flowing = null;
+  this.ended = false;
+  this.endEmitted = false;
+  this.reading = false;
+
+  // a flag to be able to tell if the event 'readable'/'data' is emitted
+  // immediately, or on a later tick.  We set this to true at first, because
+  // any actions that shouldn't happen until "later" should generally also
+  // not happen before the first read call.
+  this.sync = true;
+
+  // whenever we return null, then we set a flag to say
+  // that we're awaiting a 'readable' event emission.
+  this.needReadable = false;
+  this.emittedReadable = false;
+  this.readableListening = false;
+  this.resumeScheduled = false;
+
+  // has it been destroyed
+  this.destroyed = false;
+
+  // Crypto is kind of old and crusty.  Historically, its default string
+  // encoding is 'binary' so we have to make this configurable.
+  // Everything else in the universe uses 'utf8', though.
+  this.defaultEncoding = options.defaultEncoding || 'utf8';
+
+  // the number of writers that are awaiting a drain event in .pipe()s
+  this.awaitDrain = 0;
+
+  // if true, a maybeReadMore has been scheduled
+  this.readingMore = false;
+
+  this.decoder = null;
+  this.encoding = null;
+  if (options.encoding) {
+    if (!StringDecoder) StringDecoder = __webpack_require__(47).StringDecoder;
+    this.decoder = new StringDecoder(options.encoding);
+    this.encoding = options.encoding;
+  }
+}
+
+function Readable(options) {
+  Duplex = Duplex || __webpack_require__(16);
+
+  if (!(this instanceof Readable)) return new Readable(options);
+
+  this._readableState = new ReadableState(options, this);
+
+  // legacy
+  this.readable = true;
+
+  if (options) {
+    if (typeof options.read === 'function') this._read = options.read;
+
+    if (typeof options.destroy === 'function') this._destroy = options.destroy;
+  }
+
+  Stream.call(this);
+}
+
+Object.defineProperty(Readable.prototype, 'destroyed', {
+  get: function () {
+    if (this._readableState === undefined) {
+      return false;
+    }
+    return this._readableState.destroyed;
+  },
+  set: function (value) {
+    // we ignore the value if the stream
+    // has not been initialized yet
+    if (!this._readableState) {
+      return;
+    }
+
+    // backward compatibility, the user is explicitly
+    // managing destroyed
+    this._readableState.destroyed = value;
+  }
+});
+
+Readable.prototype.destroy = destroyImpl.destroy;
+Readable.prototype._undestroy = destroyImpl.undestroy;
+Readable.prototype._destroy = function (err, cb) {
+  this.push(null);
+  cb(err);
+};
+
+// Manually shove something into the read() buffer.
+// This returns true if the highWaterMark has not been hit yet,
+// similar to how Writable.write() returns true if you should
+// write() some more.
+Readable.prototype.push = function (chunk, encoding) {
+  var state = this._readableState;
+  var skipChunkCheck;
+
+  if (!state.objectMode) {
+    if (typeof chunk === 'string') {
+      encoding = encoding || state.defaultEncoding;
+      if (encoding !== state.encoding) {
+        chunk = Buffer.from(chunk, encoding);
+        encoding = '';
+      }
+      skipChunkCheck = true;
+    }
+  } else {
+    skipChunkCheck = true;
+  }
+
+  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
+};
+
+// Unshift should *always* be something directly out of read()
+Readable.prototype.unshift = function (chunk) {
+  return readableAddChunk(this, chunk, null, true, false);
+};
+
+function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
+  var state = stream._readableState;
+  if (chunk === null) {
+    state.reading = false;
+    onEofChunk(stream, state);
+  } else {
+    var er;
+    if (!skipChunkCheck) er = chunkInvalid(state, chunk);
+    if (er) {
+      stream.emit('error', er);
+    } else if (state.objectMode || chunk && chunk.length > 0) {
+      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
+        chunk = _uint8ArrayToBuffer(chunk);
+      }
+
+      if (addToFront) {
+        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
+      } else if (state.ended) {
+        stream.emit('error', new Error('stream.push() after EOF'));
+      } else {
+        state.reading = false;
+        if (state.decoder && !encoding) {
+          chunk = state.decoder.write(chunk);
+          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
+        } else {
+          addChunk(stream, state, chunk, false);
+        }
+      }
+    } else if (!addToFront) {
+      state.reading = false;
+    }
+  }
+
+  return needMoreData(state);
+}
+
+function addChunk(stream, state, chunk, addToFront) {
+  if (state.flowing && state.length === 0 && !state.sync) {
+    stream.emit('data', chunk);
+    stream.read(0);
+  } else {
+    // update the buffer info.
+    state.length += state.objectMode ? 1 : chunk.length;
+    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
+
+    if (state.needReadable) emitReadable(stream);
+  }
+  maybeReadMore(stream, state);
+}
+
+function chunkInvalid(state, chunk) {
+  var er;
+  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
+    er = new TypeError('Invalid non-string/buffer chunk');
+  }
+  return er;
+}
+
+// if it's past the high water mark, we can push in some more.
+// Also, if we have no data yet, we can stand some
+// more bytes.  This is to work around cases where hwm=0,
+// such as the repl.  Also, if the push() triggered a
+// readable event, and the user called read(largeNumber) such that
+// needReadable was set, then we ought to push more, so that another
+// 'readable' event will be triggered.
+function needMoreData(state) {
+  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
+}
+
+Readable.prototype.isPaused = function () {
+  return this._readableState.flowing === false;
+};
+
+// backwards compatibility.
+Readable.prototype.setEncoding = function (enc) {
+  if (!StringDecoder) StringDecoder = __webpack_require__(47).StringDecoder;
+  this._readableState.decoder = new StringDecoder(enc);
+  this._readableState.encoding = enc;
+  return this;
+};
+
+// Don't raise the hwm > 8MB
+var MAX_HWM = 0x800000;
+function computeNewHighWaterMark(n) {
+  if (n >= MAX_HWM) {
+    n = MAX_HWM;
+  } else {
+    // Get the next highest power of 2 to prevent increasing hwm excessively in
+    // tiny amounts
+    n--;
+    n |= n >>> 1;
+    n |= n >>> 2;
+    n |= n >>> 4;
+    n |= n >>> 8;
+    n |= n >>> 16;
+    n++;
+  }
+  return n;
+}
+
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function howMuchToRead(n, state) {
+  if (n <= 0 || state.length === 0 && state.ended) return 0;
+  if (state.objectMode) return 1;
+  if (n !== n) {
+    // Only flow one buffer at a time
+    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
+  }
+  // If we're asking for more than the current hwm, then raise the hwm.
+  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
+  if (n <= state.length) return n;
+  // Don't have enough
+  if (!state.ended) {
+    state.needReadable = true;
+    return 0;
+  }
+  return state.length;
+}
+
+// you can override either this method, or the async _read(n) below.
+Readable.prototype.read = function (n) {
+  debug('read', n);
+  n = parseInt(n, 10);
+  var state = this._readableState;
+  var nOrig = n;
+
+  if (n !== 0) state.emittedReadable = false;
+
+  // if we're doing read(0) to trigger a readable event, but we
+  // already have a bunch of data in the buffer, then just trigger
+  // the 'readable' event and move on.
+  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
+    debug('read: emitReadable', state.length, state.ended);
+    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
+    return null;
+  }
+
+  n = howMuchToRead(n, state);
+
+  // if we've ended, and we're now clear, then finish it up.
+  if (n === 0 && state.ended) {
+    if (state.length === 0) endReadable(this);
+    return null;
+  }
+
+  // All the actual chunk generation logic needs to be
+  // *below* the call to _read.  The reason is that in certain
+  // synthetic stream cases, such as passthrough streams, _read
+  // may be a completely synchronous operation which may change
+  // the state of the read buffer, providing enough data when
+  // before there was *not* enough.
+  //
+  // So, the steps are:
+  // 1. Figure out what the state of things will be after we do
+  // a read from the buffer.
+  //
+  // 2. If that resulting state will trigger a _read, then call _read.
+  // Note that this may be asynchronous, or synchronous.  Yes, it is
+  // deeply ugly to write APIs this way, but that still doesn't mean
+  // that the Readable class should behave improperly, as streams are
+  // designed to be sync/async agnostic.
+  // Take note if the _read call is sync or async (ie, if the read call
+  // has returned yet), so that we know whether or not it's safe to emit
+  // 'readable' etc.
+  //
+  // 3. Actually pull the requested chunks out of the buffer and return.
+
+  // if we need a readable event, then we need to do some reading.
+  var doRead = state.needReadable;
+  debug('need readable', doRead);
+
+  // if we currently have less than the highWaterMark, then also read some
+  if (state.length === 0 || state.length - n < state.highWaterMark) {
+    doRead = true;
+    debug('length less than watermark', doRead);
+  }
+
+  // however, if we've ended, then there's no point, and if we're already
+  // reading, then it's unnecessary.
+  if (state.ended || state.reading) {
+    doRead = false;
+    debug('reading or ended', doRead);
+  } else if (doRead) {
+    debug('do read');
+    state.reading = true;
+    state.sync = true;
+    // if the length is currently zero, then we *need* a readable event.
+    if (state.length === 0) state.needReadable = true;
+    // call internal read method
+    this._read(state.highWaterMark);
+    state.sync = false;
+    // If _read pushed data synchronously, then `reading` will be false,
+    // and we need to re-evaluate how much data we can return to the user.
+    if (!state.reading) n = howMuchToRead(nOrig, state);
+  }
+
+  var ret;
+  if (n > 0) ret = fromList(n, state);else ret = null;
+
+  if (ret === null) {
+    state.needReadable = true;
+    n = 0;
+  } else {
+    state.length -= n;
+  }
+
+  if (state.length === 0) {
+    // If we have nothing in the buffer, then we want to know
+    // as soon as we *do* get something into the buffer.
+    if (!state.ended) state.needReadable = true;
+
+    // If we tried to read() past the EOF, then emit end on the next tick.
+    if (nOrig !== n && state.ended) endReadable(this);
+  }
+
+  if (ret !== null) this.emit('data', ret);
+
+  return ret;
+};
+
+function onEofChunk(stream, state) {
+  if (state.ended) return;
+  if (state.decoder) {
+    var chunk = state.decoder.end();
+    if (chunk && chunk.length) {
+      state.buffer.push(chunk);
+      state.length += state.objectMode ? 1 : chunk.length;
+    }
+  }
+  state.ended = true;
+
+  // emit 'readable' now to make sure it gets picked up.
+  emitReadable(stream);
+}
+
+// Don't emit readable right away in sync mode, because this can trigger
+// another read() call => stack overflow.  This way, it might trigger
+// a nextTick recursion warning, but that's not so bad.
+function emitReadable(stream) {
+  var state = stream._readableState;
+  state.needReadable = false;
+  if (!state.emittedReadable) {
+    debug('emitReadable', state.flowing);
+    state.emittedReadable = true;
+    if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
+  }
+}
+
+function emitReadable_(stream) {
+  debug('emit readable');
+  stream.emit('readable');
+  flow(stream);
+}
+
+// at this point, the user has presumably seen the 'readable' event,
+// and called read() to consume some data.  that may have triggered
+// in turn another _read(n) call, in which case reading = true if
+// it's in progress.
+// However, if we're not ended, or reading, and the length < hwm,
+// then go ahead and try to read some more preemptively.
+function maybeReadMore(stream, state) {
+  if (!state.readingMore) {
+    state.readingMore = true;
+    processNextTick(maybeReadMore_, stream, state);
+  }
+}
+
+function maybeReadMore_(stream, state) {
+  var len = state.length;
+  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
+    debug('maybeReadMore read 0');
+    stream.read(0);
+    if (len === state.length)
+      // didn't get any data, stop spinning.
+      break;else len = state.length;
+  }
+  state.readingMore = false;
+}
+
+// abstract method.  to be overridden in specific implementation classes.
+// call cb(er, data) where data is <= n in length.
+// for virtual (non-string, non-buffer) streams, "length" is somewhat
+// arbitrary, and perhaps not very meaningful.
+Readable.prototype._read = function (n) {
+  this.emit('error', new Error('_read() is not implemented'));
+};
+
+Readable.prototype.pipe = function (dest, pipeOpts) {
+  var src = this;
+  var state = this._readableState;
+
+  switch (state.pipesCount) {
+    case 0:
+      state.pipes = dest;
+      break;
+    case 1:
+      state.pipes = [state.pipes, dest];
+      break;
+    default:
+      state.pipes.push(dest);
+      break;
+  }
+  state.pipesCount += 1;
+  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
+
+  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
+
+  var endFn = doEnd ? onend : unpipe;
+  if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
+
+  dest.on('unpipe', onunpipe);
+  function onunpipe(readable, unpipeInfo) {
+    debug('onunpipe');
+    if (readable === src) {
+      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
+        unpipeInfo.hasUnpiped = true;
+        cleanup();
+      }
+    }
+  }
+
+  function onend() {
+    debug('onend');
+    dest.end();
+  }
+
+  // when the dest drains, it reduces the awaitDrain counter
+  // on the source.  This would be more elegant with a .once()
+  // handler in flow(), but adding and removing repeatedly is
+  // too slow.
+  var ondrain = pipeOnDrain(src);
+  dest.on('drain', ondrain);
+
+  var cleanedUp = false;
+  function cleanup() {
+    debug('cleanup');
+    // cleanup event handlers once the pipe is broken
+    dest.removeListener('close', onclose);
+    dest.removeListener('finish', onfinish);
+    dest.removeListener('drain', ondrain);
+    dest.removeListener('error', onerror);
+    dest.removeListener('unpipe', onunpipe);
+    src.removeListener('end', onend);
+    src.removeListener('end', unpipe);
+    src.removeListener('data', ondata);
+
+    cleanedUp = true;
+
+    // if the reader is waiting for a drain event from this
+    // specific writer, then it would cause it to never start
+    // flowing again.
+    // So, if this is awaiting a drain, then we just call it now.
+    // If we don't know, then assume that we are waiting for one.
+    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
+  }
+
+  // If the user pushes more data while we're writing to dest then we'll end up
+  // in ondata again. However, we only want to increase awaitDrain once because
+  // dest will only emit one 'drain' event for the multiple writes.
+  // => Introduce a guard on increasing awaitDrain.
+  var increasedAwaitDrain = false;
+  src.on('data', ondata);
+  function ondata(chunk) {
+    debug('ondata');
+    increasedAwaitDrain = false;
+    var ret = dest.write(chunk);
+    if (false === ret && !increasedAwaitDrain) {
+      // If the user unpiped during `dest.write()`, it is possible
+      // to get stuck in a permanently paused state if that write
+      // also returned false.
+      // => Check whether `dest` is still a piping destination.
+      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
+        debug('false write response, pause', src._readableState.awaitDrain);
+        src._readableState.awaitDrain++;
+        increasedAwaitDrain = true;
+      }
+      src.pause();
+    }
+  }
+
+  // if the dest has an error, then stop piping into it.
+  // however, don't suppress the throwing behavior for this.
+  function onerror(er) {
+    debug('onerror', er);
+    unpipe();
+    dest.removeListener('error', onerror);
+    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
+  }
+
+  // Make sure our error handler is attached before userland ones.
+  prependListener(dest, 'error', onerror);
+
+  // Both close and finish should trigger unpipe, but only once.
+  function onclose() {
+    dest.removeListener('finish', onfinish);
+    unpipe();
+  }
+  dest.once('close', onclose);
+  function onfinish() {
+    debug('onfinish');
+    dest.removeListener('close', onclose);
+    unpipe();
+  }
+  dest.once('finish', onfinish);
+
+  function unpipe() {
+    debug('unpipe');
+    src.unpipe(dest);
+  }
+
+  // tell the dest that it's being piped to
+  dest.emit('pipe', src);
+
+  // start the flow if it hasn't been started already.
+  if (!state.flowing) {
+    debug('pipe resume');
+    src.resume();
+  }
+
+  return dest;
+};
+
+function pipeOnDrain(src) {
+  return function () {
+    var state = src._readableState;
+    debug('pipeOnDrain', state.awaitDrain);
+    if (state.awaitDrain) state.awaitDrain--;
+    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
+      state.flowing = true;
+      flow(src);
+    }
+  };
+}
+
+Readable.prototype.unpipe = function (dest) {
+  var state = this._readableState;
+  var unpipeInfo = { hasUnpiped: false };
+
+  // if we're not piping anywhere, then do nothing.
+  if (state.pipesCount === 0) return this;
+
+  // just one destination.  most common case.
+  if (state.pipesCount === 1) {
+    // passed in one, but it's not the right one.
+    if (dest && dest !== state.pipes) return this;
+
+    if (!dest) dest = state.pipes;
+
+    // got a match.
+    state.pipes = null;
+    state.pipesCount = 0;
+    state.flowing = false;
+    if (dest) dest.emit('unpipe', this, unpipeInfo);
+    return this;
+  }
+
+  // slow case. multiple pipe destinations.
+
+  if (!dest) {
+    // remove all.
+    var dests = state.pipes;
+    var len = state.pipesCount;
+    state.pipes = null;
+    state.pipesCount = 0;
+    state.flowing = false;
+
+    for (var i = 0; i < len; i++) {
+      dests[i].emit('unpipe', this, unpipeInfo);
+    }return this;
+  }
+
+  // try to find the right one.
+  var index = indexOf(state.pipes, dest);
+  if (index === -1) return this;
+
+  state.pipes.splice(index, 1);
+  state.pipesCount -= 1;
+  if (state.pipesCount === 1) state.pipes = state.pipes[0];
+
+  dest.emit('unpipe', this, unpipeInfo);
+
+  return this;
+};
+
+// set up data events if they are asked for
+// Ensure readable listeners eventually get something
+Readable.prototype.on = function (ev, fn) {
+  var res = Stream.prototype.on.call(this, ev, fn);
+
+  if (ev === 'data') {
+    // Start flowing on next tick if stream isn't explicitly paused
+    if (this._readableState.flowing !== false) this.resume();
+  } else if (ev === 'readable') {
+    var state = this._readableState;
+    if (!state.endEmitted && !state.readableListening) {
+      state.readableListening = state.needReadable = true;
+      state.emittedReadable = false;
+      if (!state.reading) {
+        processNextTick(nReadingNextTick, this);
+      } else if (state.length) {
+        emitReadable(this);
+      }
+    }
+  }
+
+  return res;
+};
+Readable.prototype.addListener = Readable.prototype.on;
+
+function nReadingNextTick(self) {
+  debug('readable nexttick read 0');
+  self.read(0);
+}
+
+// pause() and resume() are remnants of the legacy readable stream API
+// If the user uses them, then switch into old mode.
+Readable.prototype.resume = function () {
+  var state = this._readableState;
+  if (!state.flowing) {
+    debug('resume');
+    state.flowing = true;
+    resume(this, state);
+  }
+  return this;
+};
+
+function resume(stream, state) {
+  if (!state.resumeScheduled) {
+    state.resumeScheduled = true;
+    processNextTick(resume_, stream, state);
+  }
+}
+
+function resume_(stream, state) {
+  if (!state.reading) {
+    debug('resume read 0');
+    stream.read(0);
+  }
+
+  state.resumeScheduled = false;
+  state.awaitDrain = 0;
+  stream.emit('resume');
+  flow(stream);
+  if (state.flowing && !state.reading) stream.read(0);
+}
+
+Readable.prototype.pause = function () {
+  debug('call pause flowing=%j', this._readableState.flowing);
+  if (false !== this._readableState.flowing) {
+    debug('pause');
+    this._readableState.flowing = false;
+    this.emit('pause');
+  }
+  return this;
+};
+
+function flow(stream) {
+  var state = stream._readableState;
+  debug('flow', state.flowing);
+  while (state.flowing && stream.read() !== null) {}
+}
+
+// wrap an old-style stream as the async data source.
+// This is *not* part of the readable stream interface.
+// It is an ugly unfortunate mess of history.
+Readable.prototype.wrap = function (stream) {
+  var _this = this;
+
+  var state = this._readableState;
+  var paused = false;
+
+  stream.on('end', function () {
+    debug('wrapped end');
+    if (state.decoder && !state.ended) {
+      var chunk = state.decoder.end();
+      if (chunk && chunk.length) _this.push(chunk);
+    }
+
+    _this.push(null);
+  });
+
+  stream.on('data', function (chunk) {
+    debug('wrapped data');
+    if (state.decoder) chunk = state.decoder.write(chunk);
+
+    // don't skip over falsy values in objectMode
+    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
+
+    var ret = _this.push(chunk);
+    if (!ret) {
+      paused = true;
+      stream.pause();
+    }
+  });
+
+  // proxy all the other methods.
+  // important when wrapping filters and duplexes.
+  for (var i in stream) {
+    if (this[i] === undefined && typeof stream[i] === 'function') {
+      this[i] = function (method) {
+        return function () {
+          return stream[method].apply(stream, arguments);
+        };
+      }(i);
+    }
+  }
+
+  // proxy certain important events.
+  for (var n = 0; n < kProxyEvents.length; n++) {
+    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
+  }
+
+  // when we try to consume some more bytes, simply unpause the
+  // underlying stream.
+  this._read = function (n) {
+    debug('wrapped _read', n);
+    if (paused) {
+      paused = false;
+      stream.resume();
+    }
+  };
+
+  return this;
+};
+
+// exposed for testing purposes only.
+Readable._fromList = fromList;
+
+// Pluck off n bytes from an array of buffers.
+// Length is the combined lengths of all the buffers in the list.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function fromList(n, state) {
+  // nothing buffered
+  if (state.length === 0) return null;
+
+  var ret;
+  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
+    // read it all, truncate the list
+    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
+    state.buffer.clear();
+  } else {
+    // read part of list
+    ret = fromListPartial(n, state.buffer, state.decoder);
+  }
+
+  return ret;
+}
+
+// Extracts only enough buffered data to satisfy the amount requested.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function fromListPartial(n, list, hasStrings) {
+  var ret;
+  if (n < list.head.data.length) {
+    // slice is the same for buffers and strings
+    ret = list.head.data.slice(0, n);
+    list.head.data = list.head.data.slice(n);
+  } else if (n === list.head.data.length) {
+    // first chunk is a perfect match
+    ret = list.shift();
+  } else {
+    // result spans more than one buffer
+    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
+  }
+  return ret;
+}
+
+// Copies a specified amount of characters from the list of buffered data
+// chunks.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function copyFromBufferString(n, list) {
+  var p = list.head;
+  var c = 1;
+  var ret = p.data;
+  n -= ret.length;
+  while (p = p.next) {
+    var str = p.data;
+    var nb = n > str.length ? str.length : n;
+    if (nb === str.length) ret += str;else ret += str.slice(0, n);
+    n -= nb;
+    if (n === 0) {
+      if (nb === str.length) {
+        ++c;
+        if (p.next) list.head = p.next;else list.head = list.tail = null;
+      } else {
+        list.head = p;
+        p.data = str.slice(nb);
+      }
+      break;
+    }
+    ++c;
+  }
+  list.length -= c;
+  return ret;
+}
+
+// Copies a specified amount of bytes from the list of buffered data chunks.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function copyFromBuffer(n, list) {
+  var ret = Buffer.allocUnsafe(n);
+  var p = list.head;
+  var c = 1;
+  p.data.copy(ret);
+  n -= p.data.length;
+  while (p = p.next) {
+    var buf = p.data;
+    var nb = n > buf.length ? buf.length : n;
+    buf.copy(ret, ret.length - n, 0, nb);
+    n -= nb;
+    if (n === 0) {
+      if (nb === buf.length) {
+        ++c;
+        if (p.next) list.head = p.next;else list.head = list.tail = null;
+      } else {
+        list.head = p;
+        p.data = buf.slice(nb);
+      }
+      break;
+    }
+    ++c;
+  }
+  list.length -= c;
+  return ret;
+}
+
+function endReadable(stream) {
+  var state = stream._readableState;
+
+  // If we get here before consuming all the bytes, then that is a
+  // bug in node.  Should never happen.
+  if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
+
+  if (!state.endEmitted) {
+    state.ended = true;
+    processNextTick(endReadableNT, state, stream);
+  }
+}
+
+function endReadableNT(state, stream) {
+  // Check that we didn't get one last unshift.
+  if (!state.endEmitted && state.length === 0) {
+    state.endEmitted = true;
+    stream.readable = false;
+    stream.emit('end');
+  }
+}
+
+function forEach(xs, f) {
+  for (var i = 0, l = xs.length; i < l; i++) {
+    f(xs[i], i);
+  }
+}
+
+function indexOf(xs, x) {
+  for (var i = 0, l = xs.length; i < l; i++) {
+    if (xs[i] === x) return i;
+  }
+  return -1;
+}
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7), __webpack_require__(11)))
+
+/***/ }),
+/* 84 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(31).EventEmitter;
+
+
+/***/ }),
+/* 85 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/*<replacement>*/
+
+var processNextTick = __webpack_require__(32).nextTick;
+/*</replacement>*/
+
+// undocumented cb() API, needed for core, not for public API
+function destroy(err, cb) {
+  var _this = this;
+
+  var readableDestroyed = this._readableState && this._readableState.destroyed;
+  var writableDestroyed = this._writableState && this._writableState.destroyed;
+
+  if (readableDestroyed || writableDestroyed) {
+    if (cb) {
+      cb(err);
+    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
+      processNextTick(emitErrorNT, this, err);
+    }
+    return this;
+  }
+
+  // we set destroyed to true before firing error callbacks in order
+  // to make it re-entrance safe in case destroy() is called within callbacks
+
+  if (this._readableState) {
+    this._readableState.destroyed = true;
+  }
+
+  // if this is a duplex stream mark the writable part as destroyed as well
+  if (this._writableState) {
+    this._writableState.destroyed = true;
+  }
+
+  this._destroy(err || null, function (err) {
+    if (!cb && err) {
+      processNextTick(emitErrorNT, _this, err);
+      if (_this._writableState) {
+        _this._writableState.errorEmitted = true;
+      }
+    } else if (cb) {
+      cb(err);
+    }
+  });
+
+  return this;
+}
+
+function undestroy() {
+  if (this._readableState) {
+    this._readableState.destroyed = false;
+    this._readableState.reading = false;
+    this._readableState.ended = false;
+    this._readableState.endEmitted = false;
+  }
+
+  if (this._writableState) {
+    this._writableState.destroyed = false;
+    this._writableState.ended = false;
+    this._writableState.ending = false;
+    this._writableState.finished = false;
+    this._writableState.errorEmitted = false;
+  }
+}
+
+function emitErrorNT(self, err) {
+  self.emit('error', err);
+}
+
+module.exports = {
+  destroy: destroy,
+  undestroy: undestroy
+};
+
+/***/ }),
+/* 86 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// a transform stream is a readable/writable stream where you do
+// something with the data.  Sometimes it's called a "filter",
+// but that's not a great name for it, since that implies a thing where
+// some bits pass through, and others are simply ignored.  (That would
+// be a valid example of a transform, of course.)
+//
+// While the output is causally related to the input, it's not a
+// necessarily symmetric or synchronous transformation.  For example,
+// a zlib stream might take multiple plain-text writes(), and then
+// emit a single compressed chunk some time in the future.
+//
+// Here's how this works:
+//
+// The Transform stream has all the aspects of the readable and writable
+// stream classes.  When you write(chunk), that calls _write(chunk,cb)
+// internally, and returns false if there's a lot of pending writes
+// buffered up.  When you call read(), that calls _read(n) until
+// there's enough pending readable data buffered up.
+//
+// In a transform stream, the written data is placed in a buffer.  When
+// _read(n) is called, it transforms the queued up data, calling the
+// buffered _write cb's as it consumes chunks.  If consuming a single
+// written chunk would result in multiple output chunks, then the first
+// outputted bit calls the readcb, and subsequent chunks just go into
+// the read buffer, and will cause it to emit 'readable' if necessary.
+//
+// This way, back-pressure is actually determined by the reading side,
+// since _read has to be called to start processing a new chunk.  However,
+// a pathological inflate type of transform can cause excessive buffering
+// here.  For example, imagine a stream where every byte of input is
+// interpreted as an integer from 0-255, and then results in that many
+// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in
+// 1kb of data being output.  In this case, you could write a very small
+// amount of input, and end up with a very large amount of output.  In
+// such a pathological inflating mechanism, there'd be no way to tell
+// the system to stop doing the transform.  A single 4MB write could
+// cause the system to run out of memory.
+//
+// However, even in such a pathological case, only a single written chunk
+// would be consumed, and then the rest would wait (un-transformed) until
+// the results of the previous transformed chunk were consumed.
+
+
+
+module.exports = Transform;
+
+var Duplex = __webpack_require__(16);
+
+/*<replacement>*/
+var util = __webpack_require__(25);
+util.inherits = __webpack_require__(21);
+/*</replacement>*/
+
+util.inherits(Transform, Duplex);
+
+function afterTransform(er, data) {
+  var ts = this._transformState;
+  ts.transforming = false;
+
+  var cb = ts.writecb;
+
+  if (!cb) {
+    return this.emit('error', new Error('write callback called multiple times'));
+  }
+
+  ts.writechunk = null;
+  ts.writecb = null;
+
+  if (data != null) // single equals check for both `null` and `undefined`
+    this.push(data);
+
+  cb(er);
+
+  var rs = this._readableState;
+  rs.reading = false;
+  if (rs.needReadable || rs.length < rs.highWaterMark) {
+    this._read(rs.highWaterMark);
+  }
+}
+
+function Transform(options) {
+  if (!(this instanceof Transform)) return new Transform(options);
+
+  Duplex.call(this, options);
+
+  this._transformState = {
+    afterTransform: afterTransform.bind(this),
+    needTransform: false,
+    transforming: false,
+    writecb: null,
+    writechunk: null,
+    writeencoding: null
+  };
+
+  // start out asking for a readable event once data is transformed.
+  this._readableState.needReadable = true;
+
+  // we have implemented the _read method, and done the other things
+  // that Readable wants before the first _read call, so unset the
+  // sync guard flag.
+  this._readableState.sync = false;
+
+  if (options) {
+    if (typeof options.transform === 'function') this._transform = options.transform;
+
+    if (typeof options.flush === 'function') this._flush = options.flush;
+  }
+
+  // When the writable side finishes, then flush out anything remaining.
+  this.on('prefinish', prefinish);
+}
+
+function prefinish() {
+  var _this = this;
+
+  if (typeof this._flush === 'function') {
+    this._flush(function (er, data) {
+      done(_this, er, data);
+    });
+  } else {
+    done(this, null, null);
+  }
+}
+
+Transform.prototype.push = function (chunk, encoding) {
+  this._transformState.needTransform = false;
+  return Duplex.prototype.push.call(this, chunk, encoding);
+};
+
+// This is the part where you do stuff!
+// override this function in implementation classes.
+// 'chunk' is an input chunk.
+//
+// Call `push(newChunk)` to pass along transformed output
+// to the readable side.  You may call 'push' zero or more times.
+//
+// Call `cb(err)` when you are done with this chunk.  If you pass
+// an error, then that'll put the hurt on the whole operation.  If you
+// never call cb(), then you'll never get another chunk.
+Transform.prototype._transform = function (chunk, encoding, cb) {
+  throw new Error('_transform() is not implemented');
+};
+
+Transform.prototype._write = function (chunk, encoding, cb) {
+  var ts = this._transformState;
+  ts.writecb = cb;
+  ts.writechunk = chunk;
+  ts.writeencoding = encoding;
+  if (!ts.transforming) {
+    var rs = this._readableState;
+    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
+  }
+};
+
+// Doesn't matter what the args are here.
+// _transform does all the work.
+// That we got here means that the readable side wants more data.
+Transform.prototype._read = function (n) {
+  var ts = this._transformState;
+
+  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
+    ts.transforming = true;
+    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
+  } else {
+    // mark that we need a transform, so that any data that comes in
+    // will get processed, now that we've asked for it.
+    ts.needTransform = true;
+  }
+};
+
+Transform.prototype._destroy = function (err, cb) {
+  var _this2 = this;
+
+  Duplex.prototype._destroy.call(this, err, function (err2) {
+    cb(err2);
+    _this2.emit('close');
+  });
+};
+
+function done(stream, er, data) {
+  if (er) return stream.emit('error', er);
+
+  if (data != null) // single equals check for both `null` and `undefined`
+    stream.push(data);
+
+  // if there's nothing in the write buffer, then that means
+  // that nothing more will ever be provided
+  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
+
+  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
+
+  return stream.push(null);
+}
+
+/***/ }),
+/* 87 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+
+/*
+PDFReference - represents a reference to another object in the PDF object heirarchy
+By Devon Govett
+ */
+
+(function() {
+  var PDFObject, PDFReference, stream, zlib,
+    bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  zlib = __webpack_require__(48);
+
+  stream = __webpack_require__(15);
+
+  PDFReference = (function(superClass) {
+    extend(PDFReference, superClass);
+
+    function PDFReference(document, id, data) {
+      this.document = document;
+      this.id = id;
+      this.data = data != null ? data : {};
+      this.finalize = bind(this.finalize, this);
+      PDFReference.__super__.constructor.call(this, {
+        decodeStrings: false
+      });
+      this.gen = 0;
+      this.deflate = null;
+      this.compress = this.document.compress && !this.data.Filter;
+      this.uncompressedLength = 0;
+      this.chunks = [];
+    }
+
+    PDFReference.prototype.initDeflate = function() {
+      this.data.Filter = 'FlateDecode';
+      this.deflate = zlib.createDeflate();
+      this.deflate.on('data', (function(_this) {
+        return function(chunk) {
+          _this.chunks.push(chunk);
+          return _this.data.Length += chunk.length;
+        };
+      })(this));
+      return this.deflate.on('end', this.finalize);
+    };
+
+    PDFReference.prototype._write = function(chunk, encoding, callback) {
+      var base;
+      if (!Buffer.isBuffer(chunk)) {
+        chunk = new Buffer(chunk + '\n', 'binary');
+      }
+      this.uncompressedLength += chunk.length;
+      if ((base = this.data).Length == null) {
+        base.Length = 0;
+      }
+      if (this.compress) {
+        if (!this.deflate) {
+          this.initDeflate();
+        }
+        this.deflate.write(chunk);
+      } else {
+        this.chunks.push(chunk);
+        this.data.Length += chunk.length;
+      }
+      return callback();
+    };
+
+    PDFReference.prototype.end = function(chunk) {
+      PDFReference.__super__.end.apply(this, arguments);
+      if (this.deflate) {
+        return this.deflate.end();
+      } else {
+        return this.finalize();
+      }
+    };
+
+    PDFReference.prototype.finalize = function() {
+      var chunk, i, len, ref;
+      this.offset = this.document._offset;
+      this.document._write(this.id + " " + this.gen + " obj");
+      this.document._write(PDFObject.convert(this.data));
+      if (this.chunks.length) {
+        this.document._write('stream');
+        ref = this.chunks;
+        for (i = 0, len = ref.length; i < len; i++) {
+          chunk = ref[i];
+          this.document._write(chunk);
+        }
+        this.chunks.length = 0;
+        this.document._write('\nendstream');
+      }
+      this.document._write('endobj');
+      return this.document._refEnd(this);
+    };
+
+    PDFReference.prototype.toString = function() {
+      return this.id + " " + this.gen + " R";
+    };
+
+    return PDFReference;
+
+  })(stream.Writable);
+
+  module.exports = PDFReference;
+
+  PDFObject = __webpack_require__(26);
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 88 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {
+
+// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
+// original notice:
+
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * @license  MIT
+ */
+function compare(a, b) {
+  if (a === b) {
+    return 0;
+  }
+
+  var x = a.length;
+  var y = b.length;
+
+  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
+    if (a[i] !== b[i]) {
+      x = a[i];
+      y = b[i];
+      break;
+    }
+  }
+
+  if (x < y) {
+    return -1;
+  }
+  if (y < x) {
+    return 1;
+  }
+  return 0;
+}
+function isBuffer(b) {
+  if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
+    return global.Buffer.isBuffer(b);
+  }
+  return !!(b != null && b._isBuffer);
+}
+
+// based on node assert, original notice:
+
+// http://wiki.commonjs.org/wiki/Unit_Testing/1.0
+//
+// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
+//
+// Originally from narwhal.js (http://narwhaljs.org)
+// Copyright (c) 2009 Thomas Robinson <280north.com>
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the 'Software'), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+var util = __webpack_require__(49);
+var hasOwn = Object.prototype.hasOwnProperty;
+var pSlice = Array.prototype.slice;
+var functionsHaveNames = (function () {
+  return function foo() {}.name === 'foo';
+}());
+function pToString (obj) {
+  return Object.prototype.toString.call(obj);
+}
+function isView(arrbuf) {
+  if (isBuffer(arrbuf)) {
+    return false;
+  }
+  if (typeof global.ArrayBuffer !== 'function') {
+    return false;
+  }
+  if (typeof ArrayBuffer.isView === 'function') {
+    return ArrayBuffer.isView(arrbuf);
+  }
+  if (!arrbuf) {
+    return false;
+  }
+  if (arrbuf instanceof DataView) {
+    return true;
+  }
+  if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
+    return true;
+  }
+  return false;
+}
+// 1. The assert module provides functions that throw
+// AssertionError's when particular conditions are not met. The
+// assert module must conform to the following interface.
+
+var assert = module.exports = ok;
+
+// 2. The AssertionError is defined in assert.
+// new assert.AssertionError({ message: message,
+//                             actual: actual,
+//                             expected: expected })
+
+var regex = /\s*function\s+([^\(\s]*)\s*/;
+// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
+function getName(func) {
+  if (!util.isFunction(func)) {
+    return;
+  }
+  if (functionsHaveNames) {
+    return func.name;
+  }
+  var str = func.toString();
+  var match = str.match(regex);
+  return match && match[1];
+}
+assert.AssertionError = function AssertionError(options) {
+  this.name = 'AssertionError';
+  this.actual = options.actual;
+  this.expected = options.expected;
+  this.operator = options.operator;
+  if (options.message) {
+    this.message = options.message;
+    this.generatedMessage = false;
+  } else {
+    this.message = getMessage(this);
+    this.generatedMessage = true;
+  }
+  var stackStartFunction = options.stackStartFunction || fail;
+  if (Error.captureStackTrace) {
+    Error.captureStackTrace(this, stackStartFunction);
+  } else {
+    // non v8 browsers so we can have a stacktrace
+    var err = new Error();
+    if (err.stack) {
+      var out = err.stack;
+
+      // try to strip useless frames
+      var fn_name = getName(stackStartFunction);
+      var idx = out.indexOf('\n' + fn_name);
+      if (idx >= 0) {
+        // once we have located the function frame
+        // we need to strip out everything before it (and its line)
+        var next_line = out.indexOf('\n', idx + 1);
+        out = out.substring(next_line + 1);
+      }
+
+      this.stack = out;
+    }
+  }
+};
+
+// assert.AssertionError instanceof Error
+util.inherits(assert.AssertionError, Error);
+
+function truncate(s, n) {
+  if (typeof s === 'string') {
+    return s.length < n ? s : s.slice(0, n);
+  } else {
+    return s;
+  }
+}
+function inspect(something) {
+  if (functionsHaveNames || !util.isFunction(something)) {
+    return util.inspect(something);
+  }
+  var rawname = getName(something);
+  var name = rawname ? ': ' + rawname : '';
+  return '[Function' +  name + ']';
+}
+function getMessage(self) {
+  return truncate(inspect(self.actual), 128) + ' ' +
+         self.operator + ' ' +
+         truncate(inspect(self.expected), 128);
+}
+
+// At present only the three keys mentioned above are used and
+// understood by the spec. Implementations or sub modules can pass
+// other keys to the AssertionError's constructor - they will be
+// ignored.
+
+// 3. All of the following functions must throw an AssertionError
+// when a corresponding condition is not met, with a message that
+// may be undefined if not provided.  All assertion methods provide
+// both the actual and expected values to the assertion error for
+// display purposes.
+
+function fail(actual, expected, message, operator, stackStartFunction) {
+  throw new assert.AssertionError({
+    message: message,
+    actual: actual,
+    expected: expected,
+    operator: operator,
+    stackStartFunction: stackStartFunction
+  });
+}
+
+// EXTENSION! allows for well behaved errors defined elsewhere.
+assert.fail = fail;
+
+// 4. Pure assertion tests whether a value is truthy, as determined
+// by !!guard.
+// assert.ok(guard, message_opt);
+// This statement is equivalent to assert.equal(true, !!guard,
+// message_opt);. To test strictly for the value true, use
+// assert.strictEqual(true, guard, message_opt);.
+
+function ok(value, message) {
+  if (!value) fail(value, true, message, '==', assert.ok);
+}
+assert.ok = ok;
+
+// 5. The equality assertion tests shallow, coercive equality with
+// ==.
+// assert.equal(actual, expected, message_opt);
+
+assert.equal = function equal(actual, expected, message) {
+  if (actual != expected) fail(actual, expected, message, '==', assert.equal);
+};
+
+// 6. The non-equality assertion tests for whether two objects are not equal
+// with != assert.notEqual(actual, expected, message_opt);
+
+assert.notEqual = function notEqual(actual, expected, message) {
+  if (actual == expected) {
+    fail(actual, expected, message, '!=', assert.notEqual);
+  }
+};
+
+// 7. The equivalence assertion tests a deep equality relation.
+// assert.deepEqual(actual, expected, message_opt);
+
+assert.deepEqual = function deepEqual(actual, expected, message) {
+  if (!_deepEqual(actual, expected, false)) {
+    fail(actual, expected, message, 'deepEqual', assert.deepEqual);
+  }
+};
+
+assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
+  if (!_deepEqual(actual, expected, true)) {
+    fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
+  }
+};
+
+function _deepEqual(actual, expected, strict, memos) {
+  // 7.1. All identical values are equivalent, as determined by ===.
+  if (actual === expected) {
+    return true;
+  } else if (isBuffer(actual) && isBuffer(expected)) {
+    return compare(actual, expected) === 0;
+
+  // 7.2. If the expected value is a Date object, the actual value is
+  // equivalent if it is also a Date object that refers to the same time.
+  } else if (util.isDate(actual) && util.isDate(expected)) {
+    return actual.getTime() === expected.getTime();
+
+  // 7.3 If the expected value is a RegExp object, the actual value is
+  // equivalent if it is also a RegExp object with the same source and
+  // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
+  } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
+    return actual.source === expected.source &&
+           actual.global === expected.global &&
+           actual.multiline === expected.multiline &&
+           actual.lastIndex === expected.lastIndex &&
+           actual.ignoreCase === expected.ignoreCase;
+
+  // 7.4. Other pairs that do not both pass typeof value == 'object',
+  // equivalence is determined by ==.
+  } else if ((actual === null || typeof actual !== 'object') &&
+             (expected === null || typeof expected !== 'object')) {
+    return strict ? actual === expected : actual == expected;
+
+  // If both values are instances of typed arrays, wrap their underlying
+  // ArrayBuffers in a Buffer each to increase performance
+  // This optimization requires the arrays to have the same type as checked by
+  // Object.prototype.toString (aka pToString). Never perform binary
+  // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
+  // bit patterns are not identical.
+  } else if (isView(actual) && isView(expected) &&
+             pToString(actual) === pToString(expected) &&
+             !(actual instanceof Float32Array ||
+               actual instanceof Float64Array)) {
+    return compare(new Uint8Array(actual.buffer),
+                   new Uint8Array(expected.buffer)) === 0;
+
+  // 7.5 For all other Object pairs, including Array objects, equivalence is
+  // determined by having the same number of owned properties (as verified
+  // with Object.prototype.hasOwnProperty.call), the same set of keys
+  // (although not necessarily the same order), equivalent values for every
+  // corresponding key, and an identical 'prototype' property. Note: this
+  // accounts for both named and indexed properties on Arrays.
+  } else if (isBuffer(actual) !== isBuffer(expected)) {
+    return false;
+  } else {
+    memos = memos || {actual: [], expected: []};
+
+    var actualIndex = memos.actual.indexOf(actual);
+    if (actualIndex !== -1) {
+      if (actualIndex === memos.expected.indexOf(expected)) {
+        return true;
+      }
+    }
+
+    memos.actual.push(actual);
+    memos.expected.push(expected);
+
+    return objEquiv(actual, expected, strict, memos);
+  }
+}
+
+function isArguments(object) {
+  return Object.prototype.toString.call(object) == '[object Arguments]';
+}
+
+function objEquiv(a, b, strict, actualVisitedObjects) {
+  if (a === null || a === undefined || b === null || b === undefined)
+    return false;
+  // if one is a primitive, the other must be same
+  if (util.isPrimitive(a) || util.isPrimitive(b))
+    return a === b;
+  if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
+    return false;
+  var aIsArgs = isArguments(a);
+  var bIsArgs = isArguments(b);
+  if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
+    return false;
+  if (aIsArgs) {
+    a = pSlice.call(a);
+    b = pSlice.call(b);
+    return _deepEqual(a, b, strict);
+  }
+  var ka = objectKeys(a);
+  var kb = objectKeys(b);
+  var key, i;
+  // having the same number of owned properties (keys incorporates
+  // hasOwnProperty)
+  if (ka.length !== kb.length)
+    return false;
+  //the same set of keys (although not necessarily the same order),
+  ka.sort();
+  kb.sort();
+  //~~~cheap key test
+  for (i = ka.length - 1; i >= 0; i--) {
+    if (ka[i] !== kb[i])
+      return false;
+  }
+  //equivalent values for every corresponding key, and
+  //~~~possibly expensive deep test
+  for (i = ka.length - 1; i >= 0; i--) {
+    key = ka[i];
+    if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
+      return false;
+  }
+  return true;
+}
+
+// 8. The non-equivalence assertion tests for any deep inequality.
+// assert.notDeepEqual(actual, expected, message_opt);
+
+assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
+  if (_deepEqual(actual, expected, false)) {
+    fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
+  }
+};
+
+assert.notDeepStrictEqual = notDeepStrictEqual;
+function notDeepStrictEqual(actual, expected, message) {
+  if (_deepEqual(actual, expected, true)) {
+    fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
+  }
+}
+
+
+// 9. The strict equality assertion tests strict equality, as determined by ===.
+// assert.strictEqual(actual, expected, message_opt);
+
+assert.strictEqual = function strictEqual(actual, expected, message) {
+  if (actual !== expected) {
+    fail(actual, expected, message, '===', assert.strictEqual);
+  }
+};
+
+// 10. The strict non-equality assertion tests for strict inequality, as
+// determined by !==.  assert.notStrictEqual(actual, expected, message_opt);
+
+assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
+  if (actual === expected) {
+    fail(actual, expected, message, '!==', assert.notStrictEqual);
+  }
+};
+
+function expectedException(actual, expected) {
+  if (!actual || !expected) {
+    return false;
+  }
+
+  if (Object.prototype.toString.call(expected) == '[object RegExp]') {
+    return expected.test(actual);
+  }
+
+  try {
+    if (actual instanceof expected) {
+      return true;
+    }
+  } catch (e) {
+    // Ignore.  The instanceof check doesn't work for arrow functions.
+  }
+
+  if (Error.isPrototypeOf(expected)) {
+    return false;
+  }
+
+  return expected.call({}, actual) === true;
+}
+
+function _tryBlock(block) {
+  var error;
+  try {
+    block();
+  } catch (e) {
+    error = e;
+  }
+  return error;
+}
+
+function _throws(shouldThrow, block, expected, message) {
+  var actual;
+
+  if (typeof block !== 'function') {
+    throw new TypeError('"block" argument must be a function');
+  }
+
+  if (typeof expected === 'string') {
+    message = expected;
+    expected = null;
+  }
+
+  actual = _tryBlock(block);
+
+  message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
+            (message ? ' ' + message : '.');
+
+  if (shouldThrow && !actual) {
+    fail(actual, expected, 'Missing expected exception' + message);
+  }
+
+  var userProvidedMessage = typeof message === 'string';
+  var isUnwantedException = !shouldThrow && util.isError(actual);
+  var isUnexpectedException = !shouldThrow && actual && !expected;
+
+  if ((isUnwantedException &&
+      userProvidedMessage &&
+      expectedException(actual, expected)) ||
+      isUnexpectedException) {
+    fail(actual, expected, 'Got unwanted exception' + message);
+  }
+
+  if ((shouldThrow && actual && expected &&
+      !expectedException(actual, expected)) || (!shouldThrow && actual)) {
+    throw actual;
+  }
+}
+
+// 11. Expected to throw an error:
+// assert.throws(block, Error_opt, message_opt);
+
+assert.throws = function(block, /*optional*/error, /*optional*/message) {
+  _throws(true, block, error, message);
+};
+
+// EXTENSION! This is annoying to write outside this module.
+assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
+  _throws(false, block, error, message);
+};
+
+assert.ifError = function(err) { if (err) throw err; };
+
+var objectKeys = Object.keys || function (obj) {
+  var keys = [];
+  for (var key in obj) {
+    if (hasOwn.call(obj, key)) keys.push(key);
+  }
+  return keys;
+};
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
+
+/***/ }),
+/* 89 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Note: adler32 takes 12% for level 0 and 2% for level 6.
+// It isn't worth it to make additional optimizations as in original.
+// Small size is preferable.
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+function adler32(adler, buf, len, pos) {
+  var s1 = (adler & 0xffff) |0,
+      s2 = ((adler >>> 16) & 0xffff) |0,
+      n = 0;
+
+  while (len !== 0) {
+    // Set limit ~ twice less than 5552, to keep
+    // s2 in 31-bits, because we force signed ints.
+    // in other case %= will fail.
+    n = len > 2000 ? 2000 : len;
+    len -= n;
+
+    do {
+      s1 = (s1 + buf[pos++]) |0;
+      s2 = (s2 + s1) |0;
+    } while (--n);
+
+    s1 %= 65521;
+    s2 %= 65521;
+  }
+
+  return (s1 | (s2 << 16)) |0;
+}
+
+
+module.exports = adler32;
+
+
+/***/ }),
+/* 90 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Note: we can't get significant speed boost here.
+// So write code to minimize size - no pregenerated tables
+// and array tools dependencies.
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+// Use ordinary array, since untyped makes no boost here
+function makeTable() {
+  var c, table = [];
+
+  for (var n = 0; n < 256; n++) {
+    c = n;
+    for (var k = 0; k < 8; k++) {
+      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
+    }
+    table[n] = c;
+  }
+
+  return table;
+}
+
+// Create table on load. Just 255 signed longs. Not a problem.
+var crcTable = makeTable();
+
+
+function crc32(crc, buf, len, pos) {
+  var t = crcTable,
+      end = pos + len;
+
+  crc ^= -1;
+
+  for (var i = pos; i < end; i++) {
+    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
+  }
+
+  return (crc ^ (-1)); // >>> 0;
+}
+
+
+module.exports = crc32;
+
+
+/***/ }),
+/* 91 */
+/***/ (function(module, exports) {
+
+module.exports = [["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31,"　"],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]]
+
+/***/ }),
+/* 92 */
+/***/ (function(module, exports) {
+
+module.exports = [["0","\u0000",127],["a140","　，、。．‧；：？！︰…‥﹐﹑﹒·﹔﹕﹖﹗｜–︱—︳╴︴﹏（）︵︶｛｝︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯￣＿ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢",4,"～∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣／"],["a240","＼∕﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳０",9,"Ⅰ",9,"〡",8,"十卄卅Ａ",25,"ａ",21],["a340","ｗｘｙｚΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]
+
+/***/ }),
+/* 93 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var ArrayT, NumberT, utils;
+
+  NumberT = __webpack_require__(22).Number;
+
+  utils = __webpack_require__(12);
+
+  ArrayT = (function() {
+    function ArrayT(type, length, lengthType) {
+      this.type = type;
+      this.length = length;
+      this.lengthType = lengthType != null ? lengthType : 'count';
+    }
+
+    ArrayT.prototype.decode = function(stream, parent) {
+      var ctx, i, length, pos, res, target, _i;
+      pos = stream.pos;
+      res = [];
+      ctx = parent;
+      if (this.length != null) {
+        length = utils.resolveLength(this.length, stream, parent);
+      }
+      if (this.length instanceof NumberT) {
+        Object.defineProperties(res, {
+          parent: {
+            value: parent
+          },
+          _startOffset: {
+            value: pos
+          },
+          _currentOffset: {
+            value: 0,
+            writable: true
+          },
+          _length: {
+            value: length
+          }
+        });
+        ctx = res;
+      }
+      if ((length == null) || this.lengthType === 'bytes') {
+        target = length != null ? stream.pos + length : (parent != null ? parent._length : void 0) ? parent._startOffset + parent._length : stream.length;
+        while (stream.pos < target) {
+          res.push(this.type.decode(stream, ctx));
+        }
+      } else {
+        for (i = _i = 0; _i < length; i = _i += 1) {
+          res.push(this.type.decode(stream, ctx));
+        }
+      }
+      return res;
+    };
+
+    ArrayT.prototype.size = function(array, ctx) {
+      var item, size, _i, _len;
+      if (!array) {
+        return this.type.size(null, ctx) * utils.resolveLength(this.length, null, ctx);
+      }
+      size = 0;
+      if (this.length instanceof NumberT) {
+        size += this.length.size();
+        ctx = {
+          parent: ctx
+        };
+      }
+      for (_i = 0, _len = array.length; _i < _len; _i++) {
+        item = array[_i];
+        size += this.type.size(item, ctx);
+      }
+      return size;
+    };
+
+    ArrayT.prototype.encode = function(stream, array, parent) {
+      var ctx, i, item, ptr, _i, _len;
+      ctx = parent;
+      if (this.length instanceof NumberT) {
+        ctx = {
+          pointers: [],
+          startOffset: stream.pos,
+          parent: parent
+        };
+        ctx.pointerOffset = stream.pos + this.size(array, ctx);
+        this.length.encode(stream, array.length);
+      }
+      for (_i = 0, _len = array.length; _i < _len; _i++) {
+        item = array[_i];
+        this.type.encode(stream, item, ctx);
+      }
+      if (this.length instanceof NumberT) {
+        i = 0;
+        while (i < ctx.pointers.length) {
+          ptr = ctx.pointers[i++];
+          ptr.type.encode(stream, ptr.val);
+        }
+      }
+    };
+
+    return ArrayT;
+
+  })();
+
+  module.exports = ArrayT;
+
+}).call(this);
+
+
+/***/ }),
+/* 94 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Struct, utils;
+
+  utils = __webpack_require__(12);
+
+  Struct = (function() {
+    function Struct(fields) {
+      this.fields = fields != null ? fields : {};
+    }
+
+    Struct.prototype.decode = function(stream, parent, length) {
+      var res, _ref;
+      if (length == null) {
+        length = 0;
+      }
+      res = this._setup(stream, parent, length);
+      this._parseFields(stream, res, this.fields);
+      if ((_ref = this.process) != null) {
+        _ref.call(res, stream);
+      }
+      return res;
+    };
+
+    Struct.prototype._setup = function(stream, parent, length) {
+      var res;
+      res = {};
+      Object.defineProperties(res, {
+        parent: {
+          value: parent
+        },
+        _startOffset: {
+          value: stream.pos
+        },
+        _currentOffset: {
+          value: 0,
+          writable: true
+        },
+        _length: {
+          value: length
+        }
+      });
+      return res;
+    };
+
+    Struct.prototype._parseFields = function(stream, res, fields) {
+      var key, type, val;
+      for (key in fields) {
+        type = fields[key];
+        if (typeof type === 'function') {
+          val = type.call(res, res);
+        } else {
+          val = type.decode(stream, res);
+        }
+        if (val !== void 0) {
+          if (val instanceof utils.PropertyDescriptor) {
+            Object.defineProperty(res, key, val);
+          } else {
+            res[key] = val;
+          }
+        }
+        res._currentOffset = stream.pos - res._startOffset;
+      }
+    };
+
+    Struct.prototype.size = function(val, parent, includePointers) {
+      var ctx, key, size, type, _ref;
+      if (val == null) {
+        val = {};
+      }
+      if (includePointers == null) {
+        includePointers = true;
+      }
+      ctx = {
+        parent: parent,
+        val: val,
+        pointerSize: 0
+      };
+      size = 0;
+      _ref = this.fields;
+      for (key in _ref) {
+        type = _ref[key];
+        if (type.size != null) {
+          size += type.size(val[key], ctx);
+        }
+      }
+      if (includePointers) {
+        size += ctx.pointerSize;
+      }
+      return size;
+    };
+
+    Struct.prototype.encode = function(stream, val, parent) {
+      var ctx, i, key, ptr, type, _ref, _ref1;
+      if ((_ref = this.preEncode) != null) {
+        _ref.call(val, stream);
+      }
+      ctx = {
+        pointers: [],
+        startOffset: stream.pos,
+        parent: parent,
+        val: val,
+        pointerSize: 0
+      };
+      ctx.pointerOffset = stream.pos + this.size(val, ctx, false);
+      _ref1 = this.fields;
+      for (key in _ref1) {
+        type = _ref1[key];
+        if (type.encode != null) {
+          type.encode(stream, val[key], ctx);
+        }
+      }
+      i = 0;
+      while (i < ctx.pointers.length) {
+        ptr = ctx.pointers[i++];
+        ptr.type.encode(stream, ptr.val, ptr.parent);
+      }
+    };
+
+    return Struct;
+
+  })();
+
+  module.exports = Struct;
+
+}).call(this);
+
+
+/***/ }),
+/* 95 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = !__webpack_require__(5) && !__webpack_require__(19)(function () {
+  return Object.defineProperty(__webpack_require__(96)('div'), 'a', { get: function () { return 7; } }).a != 7;
+});
+
+
+/***/ }),
+/* 96 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(9);
+var document = __webpack_require__(10).document;
+// typeof document.createElement is 'object' in old IE
+var is = isObject(document) && isObject(document.createElement);
+module.exports = function (it) {
+  return is ? document.createElement(it) : {};
+};
+
+
+/***/ }),
+/* 97 */
+/***/ (function(module, exports) {
+
+module.exports = function (it) {
+  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
+  return it;
+};
+
+
+/***/ }),
+/* 98 */
+/***/ (function(module, exports) {
+
+module.exports = function (done, value) {
+  return { value: value, done: !!done };
+};
+
+
+/***/ }),
+/* 99 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(13);
+
+
+/***/ }),
+/* 100 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var dP = __webpack_require__(6);
+var anObject = __webpack_require__(14);
+var getKeys = __webpack_require__(29);
+
+module.exports = __webpack_require__(5) ? Object.defineProperties : function defineProperties(O, Properties) {
+  anObject(O);
+  var keys = getKeys(Properties);
+  var length = keys.length;
+  var i = 0;
+  var P;
+  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
+  return O;
+};
+
+
+/***/ }),
+/* 101 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var has = __webpack_require__(18);
+var toIObject = __webpack_require__(17);
+var arrayIndexOf = __webpack_require__(204)(false);
+var IE_PROTO = __webpack_require__(64)('IE_PROTO');
+
+module.exports = function (object, names) {
+  var O = toIObject(object);
+  var i = 0;
+  var result = [];
+  var key;
+  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
+  // Don't enum bug & hidden keys
+  while (names.length > i) if (has(O, key = names[i++])) {
+    ~arrayIndexOf(result, key) || result.push(key);
+  }
+  return result;
+};
+
+
+/***/ }),
+/* 102 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toInteger = __webpack_require__(63);
+var max = Math.max;
+var min = Math.min;
+module.exports = function (index, length) {
+  index = toInteger(index);
+  return index < 0 ? max(index + length, 0) : min(index, length);
+};
+
+
+/***/ }),
+/* 103 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(215), __esModule: true };
+
+/***/ }),
+/* 104 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.2.2 IsArray(argument)
+var cof = __webpack_require__(55);
+module.exports = Array.isArray || function isArray(arg) {
+  return cof(arg) == 'Array';
+};
+
+
+/***/ }),
+/* 105 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
+var $keys = __webpack_require__(101);
+var hiddenKeys = __webpack_require__(66).concat('length', 'prototype');
+
+exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
+  return $keys(O, hiddenKeys);
+};
+
+
+/***/ }),
+/* 106 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+exports.default = function (instance, Constructor) {
+  if (!(instance instanceof Constructor)) {
+    throw new TypeError("Cannot call a class as a function");
+  }
+};
+
+/***/ }),
+/* 107 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _defineProperty = __webpack_require__(74);
+
+var _defineProperty2 = _interopRequireDefault(_defineProperty);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function () {
+  function defineProperties(target, props) {
+    for (var i = 0; i < props.length; i++) {
+      var descriptor = props[i];
+      descriptor.enumerable = descriptor.enumerable || false;
+      descriptor.configurable = true;
+      if ("value" in descriptor) descriptor.writable = true;
+      (0, _defineProperty2.default)(target, descriptor.key, descriptor);
+    }
+  }
+
+  return function (Constructor, protoProps, staticProps) {
+    if (protoProps) defineProperties(Constructor.prototype, protoProps);
+    if (staticProps) defineProperties(Constructor, staticProps);
+    return Constructor;
+  };
+}();
+
+/***/ }),
+/* 108 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var dP = __webpack_require__(6).f;
+var create = __webpack_require__(36);
+var redefineAll = __webpack_require__(109);
+var ctx = __webpack_require__(20);
+var anInstance = __webpack_require__(110);
+var forOf = __webpack_require__(41);
+var $iterDefine = __webpack_require__(61);
+var step = __webpack_require__(98);
+var setSpecies = __webpack_require__(228);
+var DESCRIPTORS = __webpack_require__(5);
+var fastKey = __webpack_require__(40).fastKey;
+var validate = __webpack_require__(75);
+var SIZE = DESCRIPTORS ? '_s' : 'size';
+
+var getEntry = function (that, key) {
+  // fast case
+  var index = fastKey(key);
+  var entry;
+  if (index !== 'F') return that._i[index];
+  // frozen object case
+  for (entry = that._f; entry; entry = entry.n) {
+    if (entry.k == key) return entry;
+  }
+};
+
+module.exports = {
+  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
+    var C = wrapper(function (that, iterable) {
+      anInstance(that, C, NAME, '_i');
+      that._t = NAME;         // collection type
+      that._i = create(null); // index
+      that._f = undefined;    // first entry
+      that._l = undefined;    // last entry
+      that[SIZE] = 0;         // size
+      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
+    });
+    redefineAll(C.prototype, {
+      // 23.1.3.1 Map.prototype.clear()
+      // 23.2.3.2 Set.prototype.clear()
+      clear: function clear() {
+        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
+          entry.r = true;
+          if (entry.p) entry.p = entry.p.n = undefined;
+          delete data[entry.i];
+        }
+        that._f = that._l = undefined;
+        that[SIZE] = 0;
+      },
+      // 23.1.3.3 Map.prototype.delete(key)
+      // 23.2.3.4 Set.prototype.delete(value)
+      'delete': function (key) {
+        var that = validate(this, NAME);
+        var entry = getEntry(that, key);
+        if (entry) {
+          var next = entry.n;
+          var prev = entry.p;
+          delete that._i[entry.i];
+          entry.r = true;
+          if (prev) prev.n = next;
+          if (next) next.p = prev;
+          if (that._f == entry) that._f = next;
+          if (that._l == entry) that._l = prev;
+          that[SIZE]--;
+        } return !!entry;
+      },
+      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+      forEach: function forEach(callbackfn /* , that = undefined */) {
+        validate(this, NAME);
+        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+        var entry;
+        while (entry = entry ? entry.n : this._f) {
+          f(entry.v, entry.k, this);
+          // revert to the last existing entry
+          while (entry && entry.r) entry = entry.p;
+        }
+      },
+      // 23.1.3.7 Map.prototype.has(key)
+      // 23.2.3.7 Set.prototype.has(value)
+      has: function has(key) {
+        return !!getEntry(validate(this, NAME), key);
+      }
+    });
+    if (DESCRIPTORS) dP(C.prototype, 'size', {
+      get: function () {
+        return validate(this, NAME)[SIZE];
+      }
+    });
+    return C;
+  },
+  def: function (that, key, value) {
+    var entry = getEntry(that, key);
+    var prev, index;
+    // change existing entry
+    if (entry) {
+      entry.v = value;
+    // create new entry
+    } else {
+      that._l = entry = {
+        i: index = fastKey(key, true), // <- index
+        k: key,                        // <- key
+        v: value,                      // <- value
+        p: prev = that._l,             // <- previous entry
+        n: undefined,                  // <- next entry
+        r: false                       // <- removed
+      };
+      if (!that._f) that._f = entry;
+      if (prev) prev.n = entry;
+      that[SIZE]++;
+      // add to index
+      if (index !== 'F') that._i[index] = entry;
+    } return that;
+  },
+  getEntry: getEntry,
+  setStrong: function (C, NAME, IS_MAP) {
+    // add .keys, .values, .entries, [@@iterator]
+    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+    $iterDefine(C, NAME, function (iterated, kind) {
+      this._t = validate(iterated, NAME); // target
+      this._k = kind;                     // kind
+      this._l = undefined;                // previous
+    }, function () {
+      var that = this;
+      var kind = that._k;
+      var entry = that._l;
+      // revert to the last existing entry
+      while (entry && entry.r) entry = entry.p;
+      // get next entry
+      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
+        // or finish the iteration
+        that._t = undefined;
+        return step(1);
+      }
+      // return step by kind
+      if (kind == 'keys') return step(0, entry.k);
+      if (kind == 'values') return step(0, entry.v);
+      return step(0, [entry.k, entry.v]);
+    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
+
+    // add [@@species], 23.1.2.2, 23.2.2.2
+    setSpecies(NAME);
+  }
+};
+
+
+/***/ }),
+/* 109 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var hide = __webpack_require__(13);
+module.exports = function (target, src, safe) {
+  for (var key in src) {
+    if (safe && target[key]) target[key] = src[key];
+    else hide(target, key, src[key]);
+  } return target;
+};
+
+
+/***/ }),
+/* 110 */
+/***/ (function(module, exports) {
+
+module.exports = function (it, Constructor, name, forbiddenField) {
+  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
+    throw TypeError(name + ': incorrect invocation!');
+  } return it;
+};
+
+
+/***/ }),
+/* 111 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// call something on iterator step with safe closing on error
+var anObject = __webpack_require__(14);
+module.exports = function (iterator, fn, value, entries) {
+  try {
+    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+  // 7.4.6 IteratorClose(iterator, completion)
+  } catch (e) {
+    var ret = iterator['return'];
+    if (ret !== undefined) anObject(ret.call(iterator));
+    throw e;
+  }
+};
+
+
+/***/ }),
+/* 112 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// check on default Array iterator
+var Iterators = __webpack_require__(23);
+var ITERATOR = __webpack_require__(4)('iterator');
+var ArrayProto = Array.prototype;
+
+module.exports = function (it) {
+  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+};
+
+
+/***/ }),
+/* 113 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var global = __webpack_require__(10);
+var $export = __webpack_require__(3);
+var meta = __webpack_require__(40);
+var fails = __webpack_require__(19);
+var hide = __webpack_require__(13);
+var redefineAll = __webpack_require__(109);
+var forOf = __webpack_require__(41);
+var anInstance = __webpack_require__(110);
+var isObject = __webpack_require__(9);
+var setToStringTag = __webpack_require__(39);
+var dP = __webpack_require__(6).f;
+var each = __webpack_require__(229)(0);
+var DESCRIPTORS = __webpack_require__(5);
+
+module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
+  var Base = global[NAME];
+  var C = Base;
+  var ADDER = IS_MAP ? 'set' : 'add';
+  var proto = C && C.prototype;
+  var O = {};
+  if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
+    new C().entries().next();
+  }))) {
+    // create collection constructor
+    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
+    redefineAll(C.prototype, methods);
+    meta.NEED = true;
+  } else {
+    C = wrapper(function (target, iterable) {
+      anInstance(target, C, NAME, '_c');
+      target._c = new Base();
+      if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);
+    });
+    each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {
+      var IS_ADDER = KEY == 'add' || KEY == 'set';
+      if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {
+        anInstance(this, C, KEY);
+        if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;
+        var result = this._c[KEY](a === 0 ? 0 : a, b);
+        return IS_ADDER ? this : result;
+      });
+    });
+    IS_WEAK || dP(C.prototype, 'size', {
+      get: function () {
+        return this._c.size;
+      }
+    });
+  }
+
+  setToStringTag(C, NAME);
+
+  O[NAME] = C;
+  $export($export.G + $export.W + $export.F, O);
+
+  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
+
+  return C;
+};
+
+
+/***/ }),
+/* 114 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var classof = __webpack_require__(68);
+var from = __webpack_require__(233);
+module.exports = function (NAME) {
+  return function toJSON() {
+    if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic");
+    return from(this);
+  };
+};
+
+
+/***/ }),
+/* 115 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// https://tc39.github.io/proposal-setmap-offrom/
+var $export = __webpack_require__(3);
+
+module.exports = function (COLLECTION) {
+  $export($export.S, COLLECTION, { of: function of() {
+    var length = arguments.length;
+    var A = new Array(length);
+    while (length--) A[length] = arguments[length];
+    return new this(A);
+  } });
+};
+
+
+/***/ }),
+/* 116 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// https://tc39.github.io/proposal-setmap-offrom/
+var $export = __webpack_require__(3);
+var aFunction = __webpack_require__(97);
+var ctx = __webpack_require__(20);
+var forOf = __webpack_require__(41);
+
+module.exports = function (COLLECTION) {
+  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
+    var mapFn = arguments[1];
+    var mapping, A, n, cb;
+    aFunction(this);
+    mapping = mapFn !== undefined;
+    if (mapping) aFunction(mapFn);
+    if (source == undefined) return new this();
+    A = [];
+    if (mapping) {
+      n = 0;
+      cb = ctx(mapFn, arguments[2], 2);
+      forOf(source, false, function (nextItem) {
+        A.push(cb(nextItem, n++));
+      });
+    } else {
+      forOf(source, false, A.push, A);
+    }
+    return new this(A);
+  } });
+};
+
+
+/***/ }),
+/* 117 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
+var BrotliInput = __webpack_require__(118).BrotliInput;
+var BrotliOutput = __webpack_require__(118).BrotliOutput;
+var BrotliBitReader = __webpack_require__(285);
+var BrotliDictionary = __webpack_require__(119);
+var HuffmanCode = __webpack_require__(120).HuffmanCode;
+var BrotliBuildHuffmanTable = __webpack_require__(120).BrotliBuildHuffmanTable;
+var Context = __webpack_require__(289);
+var Prefix = __webpack_require__(290);
+var Transform = __webpack_require__(291);
+
+var kDefaultCodeLength = 8;
+var kCodeLengthRepeatCode = 16;
+var kNumLiteralCodes = 256;
+var kNumInsertAndCopyCodes = 704;
+var kNumBlockLengthCodes = 26;
+var kLiteralContextBits = 6;
+var kDistanceContextBits = 2;
+
+var HUFFMAN_TABLE_BITS = 8;
+var HUFFMAN_TABLE_MASK = 0xff;
+/* Maximum possible Huffman table size for an alphabet size of 704, max code
+ * length 15 and root table bits 8. */
+var HUFFMAN_MAX_TABLE_SIZE = 1080;
+
+var CODE_LENGTH_CODES = 18;
+var kCodeLengthCodeOrder = new Uint8Array([
+  1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+]);
+
+var NUM_DISTANCE_SHORT_CODES = 16;
+var kDistanceShortCodeIndexOffset = new Uint8Array([
+  3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2
+]);
+
+var kDistanceShortCodeValueOffset = new Int8Array([
+  0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3
+]);
+
+var kMaxHuffmanTableSize = new Uint16Array([
+  256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,
+  854, 886, 920, 952, 984, 1016, 1048, 1080
+]);
+
+function DecodeWindowBits(br) {
+  var n;
+  if (br.readBits(1) === 0) {
+    return 16;
+  }
+  
+  n = br.readBits(3);
+  if (n > 0) {
+    return 17 + n;
+  }
+  
+  n = br.readBits(3);
+  if (n > 0) {
+    return 8 + n;
+  }
+  
+  return 17;
+}
+
+/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */
+function DecodeVarLenUint8(br) {
+  if (br.readBits(1)) {
+    var nbits = br.readBits(3);
+    if (nbits === 0) {
+      return 1;
+    } else {
+      return br.readBits(nbits) + (1 << nbits);
+    }
+  }
+  return 0;
+}
+
+function MetaBlockLength() {
+  this.meta_block_length = 0;
+  this.input_end = 0;
+  this.is_uncompressed = 0;
+  this.is_metadata = false;
+}
+
+function DecodeMetaBlockLength(br) {
+  var out = new MetaBlockLength;  
+  var size_nibbles;
+  var size_bytes;
+  var i;
+  
+  out.input_end = br.readBits(1);
+  if (out.input_end && br.readBits(1)) {
+    return out;
+  }
+  
+  size_nibbles = br.readBits(2) + 4;
+  if (size_nibbles === 7) {
+    out.is_metadata = true;
+    
+    if (br.readBits(1) !== 0)
+      throw new Error('Invalid reserved bit');
+    
+    size_bytes = br.readBits(2);
+    if (size_bytes === 0)
+      return out;
+    
+    for (i = 0; i < size_bytes; i++) {
+      var next_byte = br.readBits(8);
+      if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)
+        throw new Error('Invalid size byte');
+      
+      out.meta_block_length |= next_byte << (i * 8);
+    }
+  } else {
+    for (i = 0; i < size_nibbles; ++i) {
+      var next_nibble = br.readBits(4);
+      if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)
+        throw new Error('Invalid size nibble');
+      
+      out.meta_block_length |= next_nibble << (i * 4);
+    }
+  }
+  
+  ++out.meta_block_length;
+  
+  if (!out.input_end && !out.is_metadata) {
+    out.is_uncompressed = br.readBits(1);
+  }
+  
+  return out;
+}
+
+/* Decodes the next Huffman code from bit-stream. */
+function ReadSymbol(table, index, br) {
+  var start_index = index;
+  
+  var nbits;
+  br.fillBitWindow();
+  index += (br.val_ >>> br.bit_pos_) & HUFFMAN_TABLE_MASK;
+  nbits = table[index].bits - HUFFMAN_TABLE_BITS;
+  if (nbits > 0) {
+    br.bit_pos_ += HUFFMAN_TABLE_BITS;
+    index += table[index].value;
+    index += (br.val_ >>> br.bit_pos_) & ((1 << nbits) - 1);
+  }
+  br.bit_pos_ += table[index].bits;
+  return table[index].value;
+}
+
+function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {
+  var symbol = 0;
+  var prev_code_len = kDefaultCodeLength;
+  var repeat = 0;
+  var repeat_code_len = 0;
+  var space = 32768;
+  
+  var table = [];
+  for (var i = 0; i < 32; i++)
+    table.push(new HuffmanCode(0, 0));
+  
+  BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES);
+
+  while (symbol < num_symbols && space > 0) {
+    var p = 0;
+    var code_len;
+    
+    br.readMoreInput();
+    br.fillBitWindow();
+    p += (br.val_ >>> br.bit_pos_) & 31;
+    br.bit_pos_ += table[p].bits;
+    code_len = table[p].value & 0xff;
+    if (code_len < kCodeLengthRepeatCode) {
+      repeat = 0;
+      code_lengths[symbol++] = code_len;
+      if (code_len !== 0) {
+        prev_code_len = code_len;
+        space -= 32768 >> code_len;
+      }
+    } else {
+      var extra_bits = code_len - 14;
+      var old_repeat;
+      var repeat_delta;
+      var new_len = 0;
+      if (code_len === kCodeLengthRepeatCode) {
+        new_len = prev_code_len;
+      }
+      if (repeat_code_len !== new_len) {
+        repeat = 0;
+        repeat_code_len = new_len;
+      }
+      old_repeat = repeat;
+      if (repeat > 0) {
+        repeat -= 2;
+        repeat <<= extra_bits;
+      }
+      repeat += br.readBits(extra_bits) + 3;
+      repeat_delta = repeat - old_repeat;
+      if (symbol + repeat_delta > num_symbols) {
+        throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols');
+      }
+      
+      for (var x = 0; x < repeat_delta; x++)
+        code_lengths[symbol + x] = repeat_code_len;
+      
+      symbol += repeat_delta;
+      
+      if (repeat_code_len !== 0) {
+        space -= repeat_delta << (15 - repeat_code_len);
+      }
+    }
+  }
+  if (space !== 0) {
+    throw new Error("[ReadHuffmanCodeLengths] space = " + space);
+  }
+  
+  for (; symbol < num_symbols; symbol++)
+    code_lengths[symbol] = 0;
+}
+
+function ReadHuffmanCode(alphabet_size, tables, table, br) {
+  var table_size = 0;
+  var simple_code_or_skip;
+  var code_lengths = new Uint8Array(alphabet_size);
+  
+  br.readMoreInput();
+  
+  /* simple_code_or_skip is used as follows:
+     1 for simple code;
+     0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */
+  simple_code_or_skip = br.readBits(2);
+  if (simple_code_or_skip === 1) {
+    /* Read symbols, codes & code lengths directly. */
+    var i;
+    var max_bits_counter = alphabet_size - 1;
+    var max_bits = 0;
+    var symbols = new Int32Array(4);
+    var num_symbols = br.readBits(2) + 1;
+    while (max_bits_counter) {
+      max_bits_counter >>= 1;
+      ++max_bits;
+    }
+
+    for (i = 0; i < num_symbols; ++i) {
+      symbols[i] = br.readBits(max_bits) % alphabet_size;
+      code_lengths[symbols[i]] = 2;
+    }
+    code_lengths[symbols[0]] = 1;
+    switch (num_symbols) {
+      case 1:
+        break;
+      case 3:
+        if ((symbols[0] === symbols[1]) ||
+            (symbols[0] === symbols[2]) ||
+            (symbols[1] === symbols[2])) {
+          throw new Error('[ReadHuffmanCode] invalid symbols');
+        }
+        break;
+      case 2:
+        if (symbols[0] === symbols[1]) {
+          throw new Error('[ReadHuffmanCode] invalid symbols');
+        }
+        
+        code_lengths[symbols[1]] = 1;
+        break;
+      case 4:
+        if ((symbols[0] === symbols[1]) ||
+            (symbols[0] === symbols[2]) ||
+            (symbols[0] === symbols[3]) ||
+            (symbols[1] === symbols[2]) ||
+            (symbols[1] === symbols[3]) ||
+            (symbols[2] === symbols[3])) {
+          throw new Error('[ReadHuffmanCode] invalid symbols');
+        }
+        
+        if (br.readBits(1)) {
+          code_lengths[symbols[2]] = 3;
+          code_lengths[symbols[3]] = 3;
+        } else {
+          code_lengths[symbols[0]] = 2;
+        }
+        break;
+    }
+  } else {  /* Decode Huffman-coded code lengths. */
+    var i;
+    var code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES);
+    var space = 32;
+    var num_codes = 0;
+    /* Static Huffman code for the code length code lengths */
+    var huff = [
+      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), 
+      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),
+      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), 
+      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)
+    ];
+    for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) {
+      var code_len_idx = kCodeLengthCodeOrder[i];
+      var p = 0;
+      var v;
+      br.fillBitWindow();
+      p += (br.val_ >>> br.bit_pos_) & 15;
+      br.bit_pos_ += huff[p].bits;
+      v = huff[p].value;
+      code_length_code_lengths[code_len_idx] = v;
+      if (v !== 0) {
+        space -= (32 >> v);
+        ++num_codes;
+      }
+    }
+    
+    if (!(num_codes === 1 || space === 0))
+      throw new Error('[ReadHuffmanCode] invalid num_codes or space');
+    
+    ReadHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br);
+  }
+  
+  table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size);
+  
+  if (table_size === 0) {
+    throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");
+  }
+  
+  return table_size;
+}
+
+function ReadBlockLength(table, index, br) {
+  var code;
+  var nbits;
+  code = ReadSymbol(table, index, br);
+  nbits = Prefix.kBlockLengthPrefixCode[code].nbits;
+  return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);
+}
+
+function TranslateShortCodes(code, ringbuffer, index) {
+  var val;
+  if (code < NUM_DISTANCE_SHORT_CODES) {
+    index += kDistanceShortCodeIndexOffset[code];
+    index &= 3;
+    val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];
+  } else {
+    val = code - NUM_DISTANCE_SHORT_CODES + 1;
+  }
+  return val;
+}
+
+function MoveToFront(v, index) {
+  var value = v[index];
+  var i = index;
+  for (; i; --i) v[i] = v[i - 1];
+  v[0] = value;
+}
+
+function InverseMoveToFrontTransform(v, v_len) {
+  var mtf = new Uint8Array(256);
+  var i;
+  for (i = 0; i < 256; ++i) {
+    mtf[i] = i;
+  }
+  for (i = 0; i < v_len; ++i) {
+    var index = v[i];
+    v[i] = mtf[index];
+    if (index) MoveToFront(mtf, index);
+  }
+}
+
+/* Contains a collection of huffman trees with the same alphabet size. */
+function HuffmanTreeGroup(alphabet_size, num_htrees) {
+  this.alphabet_size = alphabet_size;
+  this.num_htrees = num_htrees;
+  this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[(alphabet_size + 31) >>> 5]);  
+  this.htrees = new Uint32Array(num_htrees);
+}
+
+HuffmanTreeGroup.prototype.decode = function(br) {
+  var i;
+  var table_size;
+  var next = 0;
+  for (i = 0; i < this.num_htrees; ++i) {
+    this.htrees[i] = next;
+    table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br);
+    next += table_size;
+  }
+};
+
+function DecodeContextMap(context_map_size, br) {
+  var out = { num_htrees: null, context_map: null };
+  var use_rle_for_zeros;
+  var max_run_length_prefix = 0;
+  var table;
+  var i;
+  
+  br.readMoreInput();
+  var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;
+
+  var context_map = out.context_map = new Uint8Array(context_map_size);
+  if (num_htrees <= 1) {
+    return out;
+  }
+
+  use_rle_for_zeros = br.readBits(1);
+  if (use_rle_for_zeros) {
+    max_run_length_prefix = br.readBits(4) + 1;
+  }
+  
+  table = [];
+  for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {
+    table[i] = new HuffmanCode(0, 0);
+  }
+  
+  ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br);
+  
+  for (i = 0; i < context_map_size;) {
+    var code;
+
+    br.readMoreInput();
+    code = ReadSymbol(table, 0, br);
+    if (code === 0) {
+      context_map[i] = 0;
+      ++i;
+    } else if (code <= max_run_length_prefix) {
+      var reps = 1 + (1 << code) + br.readBits(code);
+      while (--reps) {
+        if (i >= context_map_size) {
+          throw new Error("[DecodeContextMap] i >= context_map_size");
+        }
+        context_map[i] = 0;
+        ++i;
+      }
+    } else {
+      context_map[i] = code - max_run_length_prefix;
+      ++i;
+    }
+  }
+  if (br.readBits(1)) {
+    InverseMoveToFrontTransform(context_map, context_map_size);
+  }
+  
+  return out;
+}
+
+function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {
+  var ringbuffer = tree_type * 2;
+  var index = tree_type;
+  var type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br);
+  var block_type;
+  if (type_code === 0) {
+    block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];
+  } else if (type_code === 1) {
+    block_type = ringbuffers[ringbuffer + ((indexes[index] - 1) & 1)] + 1;
+  } else {
+    block_type = type_code - 2;
+  }
+  if (block_type >= max_block_type) {
+    block_type -= max_block_type;
+  }
+  block_types[tree_type] = block_type;
+  ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;
+  ++indexes[index];
+}
+
+function CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {
+  var rb_size = ringbuffer_mask + 1;
+  var rb_pos = pos & ringbuffer_mask;
+  var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;
+  var nbytes;
+
+  /* For short lengths copy byte-by-byte */
+  if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {
+    while (len-- > 0) {
+      br.readMoreInput();
+      ringbuffer[rb_pos++] = br.readBits(8);
+      if (rb_pos === rb_size) {
+        output.write(ringbuffer, rb_size);
+        rb_pos = 0;
+      }
+    }
+    return;
+  }
+
+  if (br.bit_end_pos_ < 32) {
+    throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32');
+  }
+
+  /* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */
+  while (br.bit_pos_ < 32) {
+    ringbuffer[rb_pos] = (br.val_ >>> br.bit_pos_);
+    br.bit_pos_ += 8;
+    ++rb_pos;
+    --len;
+  }
+
+  /* Copy remaining bytes from br.buf_ to ringbuffer. */
+  nbytes = (br.bit_end_pos_ - br.bit_pos_) >> 3;
+  if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {
+    var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;
+    for (var x = 0; x < tail; x++)
+      ringbuffer[rb_pos + x] = br.buf_[br_pos + x];
+    
+    nbytes -= tail;
+    rb_pos += tail;
+    len -= tail;
+    br_pos = 0;
+  }
+
+  for (var x = 0; x < nbytes; x++)
+    ringbuffer[rb_pos + x] = br.buf_[br_pos + x];
+  
+  rb_pos += nbytes;
+  len -= nbytes;
+
+  /* If we wrote past the logical end of the ringbuffer, copy the tail of the
+     ringbuffer to its beginning and flush the ringbuffer to the output. */
+  if (rb_pos >= rb_size) {
+    output.write(ringbuffer, rb_size);
+    rb_pos -= rb_size;    
+    for (var x = 0; x < rb_pos; x++)
+      ringbuffer[x] = ringbuffer[rb_size + x];
+  }
+
+  /* If we have more to copy than the remaining size of the ringbuffer, then we
+     first fill the ringbuffer from the input and then flush the ringbuffer to
+     the output */
+  while (rb_pos + len >= rb_size) {
+    nbytes = rb_size - rb_pos;
+    if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {
+      throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');
+    }
+    output.write(ringbuffer, rb_size);
+    len -= nbytes;
+    rb_pos = 0;
+  }
+
+  /* Copy straight from the input onto the ringbuffer. The ringbuffer will be
+     flushed to the output at a later time. */
+  if (br.input_.read(ringbuffer, rb_pos, len) < len) {
+    throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');
+  }
+
+  /* Restore the state of the bit reader. */
+  br.reset();
+}
+
+/* Advances the bit reader position to the next byte boundary and verifies
+   that any skipped bits are set to zero. */
+function JumpToByteBoundary(br) {
+  var new_bit_pos = (br.bit_pos_ + 7) & ~7;
+  var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);
+  return pad_bits == 0;
+}
+
+function BrotliDecompressedSize(buffer) {
+  var input = new BrotliInput(buffer);
+  var br = new BrotliBitReader(input);
+  DecodeWindowBits(br);
+  var out = DecodeMetaBlockLength(br);
+  return out.meta_block_length;
+}
+
+exports.BrotliDecompressedSize = BrotliDecompressedSize;
+
+function BrotliDecompressBuffer(buffer, output_size) {
+  var input = new BrotliInput(buffer);
+  
+  if (output_size == null) {
+    output_size = BrotliDecompressedSize(buffer);
+  }
+  
+  var output_buffer = new Uint8Array(output_size);
+  var output = new BrotliOutput(output_buffer);
+  
+  BrotliDecompress(input, output);
+  
+  if (output.pos < output.buffer.length) {
+    output.buffer = output.buffer.subarray(0, output.pos);
+  }
+  
+  return output.buffer;
+}
+
+exports.BrotliDecompressBuffer = BrotliDecompressBuffer;
+
+function BrotliDecompress(input, output) {
+  var i;
+  var pos = 0;
+  var input_end = 0;
+  var window_bits = 0;
+  var max_backward_distance;
+  var max_distance = 0;
+  var ringbuffer_size;
+  var ringbuffer_mask;
+  var ringbuffer;
+  var ringbuffer_end;
+  /* This ring buffer holds a few past copy distances that will be used by */
+  /* some special distance codes. */
+  var dist_rb = [ 16, 15, 11, 4 ];
+  var dist_rb_idx = 0;
+  /* The previous 2 bytes used for context. */
+  var prev_byte1 = 0;
+  var prev_byte2 = 0;
+  var hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)];
+  var block_type_trees;
+  var block_len_trees;
+  var br;
+
+  /* We need the slack region for the following reasons:
+       - always doing two 8-byte copies for fast backward copying
+       - transforms
+       - flushing the input ringbuffer when decoding uncompressed blocks */
+  var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;
+
+  br = new BrotliBitReader(input);
+
+  /* Decode window size. */
+  window_bits = DecodeWindowBits(br);
+  max_backward_distance = (1 << window_bits) - 16;
+
+  ringbuffer_size = 1 << window_bits;
+  ringbuffer_mask = ringbuffer_size - 1;
+  ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength);
+  ringbuffer_end = ringbuffer_size;
+
+  block_type_trees = [];
+  block_len_trees = [];
+  for (var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {
+    block_type_trees[x] = new HuffmanCode(0, 0);
+    block_len_trees[x] = new HuffmanCode(0, 0);
+  }
+
+  while (!input_end) {
+    var meta_block_remaining_len = 0;
+    var is_uncompressed;
+    var block_length = [ 1 << 28, 1 << 28, 1 << 28 ];
+    var block_type = [ 0 ];
+    var num_block_types = [ 1, 1, 1 ];
+    var block_type_rb = [ 0, 1, 0, 1, 0, 1 ];
+    var block_type_rb_index = [ 0 ];
+    var distance_postfix_bits;
+    var num_direct_distance_codes;
+    var distance_postfix_mask;
+    var num_distance_codes;
+    var context_map = null;
+    var context_modes = null;
+    var num_literal_htrees;
+    var dist_context_map = null;
+    var num_dist_htrees;
+    var context_offset = 0;
+    var context_map_slice = null;
+    var literal_htree_index = 0;
+    var dist_context_offset = 0;
+    var dist_context_map_slice = null;
+    var dist_htree_index = 0;
+    var context_lookup_offset1 = 0;
+    var context_lookup_offset2 = 0;
+    var context_mode;
+    var htree_command;
+
+    for (i = 0; i < 3; ++i) {
+      hgroup[i].codes = null;
+      hgroup[i].htrees = null;
+    }
+
+    br.readMoreInput();
+    
+    var _out = DecodeMetaBlockLength(br);
+    meta_block_remaining_len = _out.meta_block_length;
+    if (pos + meta_block_remaining_len > output.buffer.length) {
+      /* We need to grow the output buffer to fit the additional data. */
+      var tmp = new Uint8Array( pos + meta_block_remaining_len );
+      tmp.set( output.buffer );
+      output.buffer = tmp;
+    }    
+    input_end = _out.input_end;
+    is_uncompressed = _out.is_uncompressed;
+    
+    if (_out.is_metadata) {
+      JumpToByteBoundary(br);
+      
+      for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {
+        br.readMoreInput();
+        /* Read one byte and ignore it. */
+        br.readBits(8);
+      }
+      
+      continue;
+    }
+    
+    if (meta_block_remaining_len === 0) {
+      continue;
+    }
+    
+    if (is_uncompressed) {
+      br.bit_pos_ = (br.bit_pos_ + 7) & ~7;
+      CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos,
+                                    ringbuffer, ringbuffer_mask, br);
+      pos += meta_block_remaining_len;
+      continue;
+    }
+    
+    for (i = 0; i < 3; ++i) {
+      num_block_types[i] = DecodeVarLenUint8(br) + 1;
+      if (num_block_types[i] >= 2) {
+        ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
+        ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
+        block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
+        block_type_rb_index[i] = 1;
+      }
+    }
+    
+    br.readMoreInput();
+    
+    distance_postfix_bits = br.readBits(2);
+    num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);
+    distance_postfix_mask = (1 << distance_postfix_bits) - 1;
+    num_distance_codes = (num_direct_distance_codes + (48 << distance_postfix_bits));
+    context_modes = new Uint8Array(num_block_types[0]);
+
+    for (i = 0; i < num_block_types[0]; ++i) {
+       br.readMoreInput();
+       context_modes[i] = (br.readBits(2) << 1);
+    }
+    
+    var _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br);
+    num_literal_htrees = _o1.num_htrees;
+    context_map = _o1.context_map;
+    
+    var _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br);
+    num_dist_htrees = _o2.num_htrees;
+    dist_context_map = _o2.context_map;
+    
+    hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees);
+    hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]);
+    hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees);
+
+    for (i = 0; i < 3; ++i) {
+      hgroup[i].decode(br);
+    }
+
+    context_map_slice = 0;
+    dist_context_map_slice = 0;
+    context_mode = context_modes[block_type[0]];
+    context_lookup_offset1 = Context.lookupOffsets[context_mode];
+    context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
+    htree_command = hgroup[1].htrees[0];
+
+    while (meta_block_remaining_len > 0) {
+      var cmd_code;
+      var range_idx;
+      var insert_code;
+      var copy_code;
+      var insert_length;
+      var copy_length;
+      var distance_code;
+      var distance;
+      var context;
+      var j;
+      var copy_dst;
+
+      br.readMoreInput();
+      
+      if (block_length[1] === 0) {
+        DecodeBlockType(num_block_types[1],
+                        block_type_trees, 1, block_type, block_type_rb,
+                        block_type_rb_index, br);
+        block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br);
+        htree_command = hgroup[1].htrees[block_type[1]];
+      }
+      --block_length[1];
+      cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br);
+      range_idx = cmd_code >> 6;
+      if (range_idx >= 2) {
+        range_idx -= 2;
+        distance_code = -1;
+      } else {
+        distance_code = 0;
+      }
+      insert_code = Prefix.kInsertRangeLut[range_idx] + ((cmd_code >> 3) & 7);
+      copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);
+      insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset +
+          br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits);
+      copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset +
+          br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits);
+      prev_byte1 = ringbuffer[pos-1 & ringbuffer_mask];
+      prev_byte2 = ringbuffer[pos-2 & ringbuffer_mask];
+      for (j = 0; j < insert_length; ++j) {
+        br.readMoreInput();
+
+        if (block_length[0] === 0) {
+          DecodeBlockType(num_block_types[0],
+                          block_type_trees, 0, block_type, block_type_rb,
+                          block_type_rb_index, br);
+          block_length[0] = ReadBlockLength(block_len_trees, 0, br);
+          context_offset = block_type[0] << kLiteralContextBits;
+          context_map_slice = context_offset;
+          context_mode = context_modes[block_type[0]];
+          context_lookup_offset1 = Context.lookupOffsets[context_mode];
+          context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
+        }
+        context = (Context.lookup[context_lookup_offset1 + prev_byte1] |
+                   Context.lookup[context_lookup_offset2 + prev_byte2]);
+        literal_htree_index = context_map[context_map_slice + context];
+        --block_length[0];
+        prev_byte2 = prev_byte1;
+        prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br);
+        ringbuffer[pos & ringbuffer_mask] = prev_byte1;
+        if ((pos & ringbuffer_mask) === ringbuffer_mask) {
+          output.write(ringbuffer, ringbuffer_size);
+        }
+        ++pos;
+      }
+      meta_block_remaining_len -= insert_length;
+      if (meta_block_remaining_len <= 0) break;
+
+      if (distance_code < 0) {
+        var context;
+        
+        br.readMoreInput();
+        if (block_length[2] === 0) {
+          DecodeBlockType(num_block_types[2],
+                          block_type_trees, 2, block_type, block_type_rb,
+                          block_type_rb_index, br);
+          block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br);
+          dist_context_offset = block_type[2] << kDistanceContextBits;
+          dist_context_map_slice = dist_context_offset;
+        }
+        --block_length[2];
+        context = (copy_length > 4 ? 3 : copy_length - 2) & 0xff;
+        dist_htree_index = dist_context_map[dist_context_map_slice + context];
+        distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br);
+        if (distance_code >= num_direct_distance_codes) {
+          var nbits;
+          var postfix;
+          var offset;
+          distance_code -= num_direct_distance_codes;
+          postfix = distance_code & distance_postfix_mask;
+          distance_code >>= distance_postfix_bits;
+          nbits = (distance_code >> 1) + 1;
+          offset = ((2 + (distance_code & 1)) << nbits) - 4;
+          distance_code = num_direct_distance_codes +
+              ((offset + br.readBits(nbits)) <<
+               distance_postfix_bits) + postfix;
+        }
+      }
+
+      /* Convert the distance code to the actual distance by possibly looking */
+      /* up past distnaces from the ringbuffer. */
+      distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx);
+      if (distance < 0) {
+        throw new Error('[BrotliDecompress] invalid distance');
+      }
+
+      if (pos < max_backward_distance &&
+          max_distance !== max_backward_distance) {
+        max_distance = pos;
+      } else {
+        max_distance = max_backward_distance;
+      }
+
+      copy_dst = pos & ringbuffer_mask;
+
+      if (distance > max_distance) {
+        if (copy_length >= BrotliDictionary.minDictionaryWordLength &&
+            copy_length <= BrotliDictionary.maxDictionaryWordLength) {
+          var offset = BrotliDictionary.offsetsByLength[copy_length];
+          var word_id = distance - max_distance - 1;
+          var shift = BrotliDictionary.sizeBitsByLength[copy_length];
+          var mask = (1 << shift) - 1;
+          var word_idx = word_id & mask;
+          var transform_idx = word_id >> shift;
+          offset += word_idx * copy_length;
+          if (transform_idx < Transform.kNumTransforms) {
+            var len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx);
+            copy_dst += len;
+            pos += len;
+            meta_block_remaining_len -= len;
+            if (copy_dst >= ringbuffer_end) {
+              output.write(ringbuffer, ringbuffer_size);
+              
+              for (var _x = 0; _x < (copy_dst - ringbuffer_end); _x++)
+                ringbuffer[_x] = ringbuffer[ringbuffer_end + _x];
+            }
+          } else {
+            throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
+              " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
+          }
+        } else {
+          throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
+            " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
+        }
+      } else {
+        if (distance_code > 0) {
+          dist_rb[dist_rb_idx & 3] = distance;
+          ++dist_rb_idx;
+        }
+
+        if (copy_length > meta_block_remaining_len) {
+          throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
+            " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
+        }
+
+        for (j = 0; j < copy_length; ++j) {
+          ringbuffer[pos & ringbuffer_mask] = ringbuffer[(pos - distance) & ringbuffer_mask];
+          if ((pos & ringbuffer_mask) === ringbuffer_mask) {
+            output.write(ringbuffer, ringbuffer_size);
+          }
+          ++pos;
+          --meta_block_remaining_len;
+        }
+      }
+
+      /* When we get here, we must have inserted at least one literal and */
+      /* made a copy of at least length two, therefore accessing the last 2 */
+      /* bytes is valid. */
+      prev_byte1 = ringbuffer[(pos - 1) & ringbuffer_mask];
+      prev_byte2 = ringbuffer[(pos - 2) & ringbuffer_mask];
+    }
+
+    /* Protect pos from overflow, wrap it around at every GB of input data */
+    pos &= 0x3fffffff;
+  }
+
+  output.write(ringbuffer, pos & ringbuffer_mask);
+}
+
+exports.BrotliDecompress = BrotliDecompress;
+
+BrotliDictionary.init();
+
+
+/***/ }),
+/* 118 */
+/***/ (function(module, exports) {
+
+function BrotliInput(buffer) {
+  this.buffer = buffer;
+  this.pos = 0;
+}
+
+BrotliInput.prototype.read = function(buf, i, count) {
+  if (this.pos + count > this.buffer.length) {
+    count = this.buffer.length - this.pos;
+  }
+  
+  for (var p = 0; p < count; p++)
+    buf[i + p] = this.buffer[this.pos + p];
+  
+  this.pos += count;
+  return count;
+}
+
+exports.BrotliInput = BrotliInput;
+
+function BrotliOutput(buf) {
+  this.buffer = buf;
+  this.pos = 0;
+}
+
+BrotliOutput.prototype.write = function(buf, count) {
+  if (this.pos + count > this.buffer.length)
+    throw new Error('Output buffer is not large enough');
+  
+  this.buffer.set(buf.subarray(0, count), this.pos);
+  this.pos += count;
+  return count;
+};
+
+exports.BrotliOutput = BrotliOutput;
+
+
+/***/ }),
+/* 119 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Collection of static dictionary words.
+*/
+
+var data = __webpack_require__(286);
+exports.init = function() {
+  exports.dictionary = data.init();
+};
+
+exports.offsetsByLength = new Uint32Array([
+     0,     0,     0,     0,     0,  4096,  9216, 21504, 35840, 44032,
+ 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,
+ 115968, 118528, 119872, 121280, 122016,
+]);
+
+exports.sizeBitsByLength = new Uint8Array([
+  0,  0,  0,  0, 10, 10, 11, 11, 10, 10,
+ 10, 10, 10,  9,  9,  8,  7,  7,  8,  7,
+  7,  6,  6,  5,  5,
+]);
+
+exports.minDictionaryWordLength = 4;
+exports.maxDictionaryWordLength = 24;
+
+
+/***/ }),
+/* 120 */
+/***/ (function(module, exports) {
+
+function HuffmanCode(bits, value) {
+  this.bits = bits;   /* number of bits used for this symbol */
+  this.value = value; /* symbol value or table offset */
+}
+
+exports.HuffmanCode = HuffmanCode;
+
+var MAX_LENGTH = 15;
+
+/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the
+   bit-wise reversal of the len least significant bits of key. */
+function GetNextKey(key, len) {
+  var step = 1 << (len - 1);
+  while (key & step) {
+    step >>= 1;
+  }
+  return (key & (step - 1)) + step;
+}
+
+/* Stores code in table[0], table[step], table[2*step], ..., table[end] */
+/* Assumes that end is an integer multiple of step */
+function ReplicateValue(table, i, step, end, code) {
+  do {
+    end -= step;
+    table[i + end] = new HuffmanCode(code.bits, code.value);
+  } while (end > 0);
+}
+
+/* Returns the table width of the next 2nd level table. count is the histogram
+   of bit lengths for the remaining symbols, len is the code length of the next
+   processed symbol */
+function NextTableBitSize(count, len, root_bits) {
+  var left = 1 << (len - root_bits);
+  while (len < MAX_LENGTH) {
+    left -= count[len];
+    if (left <= 0) break;
+    ++len;
+    left <<= 1;
+  }
+  return len - root_bits;
+}
+
+exports.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {
+  var start_table = table;
+  var code;            /* current table entry */
+  var len;             /* current code length */
+  var symbol;          /* symbol index in original or sorted table */
+  var key;             /* reversed prefix code */
+  var step;            /* step size to replicate values in current table */
+  var low;             /* low bits for current root entry */
+  var mask;            /* mask for low bits */
+  var table_bits;      /* key length of current table */
+  var table_size;      /* size of current table */
+  var total_size;      /* sum of root table size and 2nd level table sizes */
+  var sorted;          /* symbols sorted by code length */
+  var count = new Int32Array(MAX_LENGTH + 1);  /* number of codes of each length */
+  var offset = new Int32Array(MAX_LENGTH + 1);  /* offsets in sorted table for each length */
+
+  sorted = new Int32Array(code_lengths_size);
+
+  /* build histogram of code lengths */
+  for (symbol = 0; symbol < code_lengths_size; symbol++) {
+    count[code_lengths[symbol]]++;
+  }
+
+  /* generate offsets into sorted symbol table by code length */
+  offset[1] = 0;
+  for (len = 1; len < MAX_LENGTH; len++) {
+    offset[len + 1] = offset[len] + count[len];
+  }
+
+  /* sort symbols by length, by symbol order within each length */
+  for (symbol = 0; symbol < code_lengths_size; symbol++) {
+    if (code_lengths[symbol] !== 0) {
+      sorted[offset[code_lengths[symbol]]++] = symbol;
+    }
+  }
+  
+  table_bits = root_bits;
+  table_size = 1 << table_bits;
+  total_size = table_size;
+
+  /* special case code with only one value */
+  if (offset[MAX_LENGTH] === 1) {
+    for (key = 0; key < total_size; ++key) {
+      root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff);
+    }
+    
+    return total_size;
+  }
+
+  /* fill in root table */
+  key = 0;
+  symbol = 0;
+  for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {
+    for (; count[len] > 0; --count[len]) {
+      code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff);
+      ReplicateValue(root_table, table + key, step, table_size, code);
+      key = GetNextKey(key, len);
+    }
+  }
+
+  /* fill in 2nd level tables and add pointers to root table */
+  mask = total_size - 1;
+  low = -1;
+  for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {
+    for (; count[len] > 0; --count[len]) {
+      if ((key & mask) !== low) {
+        table += table_size;
+        table_bits = NextTableBitSize(count, len, root_bits);
+        table_size = 1 << table_bits;
+        total_size += table_size;
+        low = key & mask;
+        root_table[start_table + low] = new HuffmanCode((table_bits + root_bits) & 0xff, ((table - start_table) - low) & 0xffff);
+      }
+      code = new HuffmanCode((len - root_bits) & 0xff, sorted[symbol++] & 0xffff);
+      ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code);
+      key = GetNextKey(key, len);
+    }
+  }
+  
+  return total_size;
+}
+
+
+/***/ }),
+/* 121 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+
+/*
+PDFImage - embeds images in PDF documents
+By Devon Govett
+ */
+
+(function() {
+  var Data, JPEG, PDFImage, PNG, fs;
+
+  fs = __webpack_require__(8);
+
+  Data = __webpack_require__(298);
+
+  JPEG = __webpack_require__(299);
+
+  PNG = __webpack_require__(300);
+
+  PDFImage = (function() {
+    function PDFImage() {}
+
+    PDFImage.open = function(src, label) {
+      var data, match;
+      if (Buffer.isBuffer(src)) {
+        data = src;
+      } else if (src instanceof ArrayBuffer) {
+        data = new Buffer(new Uint8Array(src));
+      } else {
+        if (match = /^data:.+;base64,(.*)$/.exec(src)) {
+          data = new Buffer(match[1], 'base64');
+        } else {
+          data = fs.readFileSync(src);
+          if (!data) {
+            return;
+          }
+        }
+      }
+      if (data[0] === 0xff && data[1] === 0xd8) {
+        return new JPEG(data, label);
+      } else if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') {
+        return new PNG(data, label);
+      } else {
+        throw new Error('Unknown image format.');
+      }
+    };
+
+    return PDFImage;
+
+  })();
+
+  module.exports = PDFImage;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 122 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global) {module.exports = global["pdfMake"] = __webpack_require__(123);
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
+
+/***/ }),
+/* 123 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer, global) {
+
+var PdfPrinter = __webpack_require__(126);
+var isFunction = __webpack_require__(0).isFunction;
+var FileSaver = __webpack_require__(306);
+var saveAs = FileSaver.saveAs;
+
+var defaultClientFonts = {
+	Roboto: {
+		normal: 'Roboto-Regular.ttf',
+		bold: 'Roboto-Medium.ttf',
+		italics: 'Roboto-Italic.ttf',
+		bolditalics: 'Roboto-MediumItalic.ttf'
+	}
+};
+
+function Document(docDefinition, tableLayouts, fonts, vfs) {
+	this.docDefinition = docDefinition;
+	this.tableLayouts = tableLayouts || null;
+	this.fonts = fonts || defaultClientFonts;
+	this.vfs = vfs;
+}
+
+function canCreatePdf() {
+	// Ensure the browser provides the level of support needed
+	if (!Object.keys) {
+		return false;
+	}
+	return true;
+}
+
+Document.prototype._createDoc = function (options, callback) {
+	options = options || {};
+	if (this.tableLayouts) {
+		options.tableLayouts = this.tableLayouts;
+	}
+
+	var printer = new PdfPrinter(this.fonts);
+	__webpack_require__(8).bindFS(this.vfs); // bind virtual file system to file system
+
+	var doc = printer.createPdfKitDocument(this.docDefinition, options);
+	var chunks = [];
+	var result;
+
+	doc.on('readable', function () {
+		var chunk;
+		while ((chunk = doc.read(9007199254740991)) !== null) {
+			chunks.push(chunk);
+		}
+	});
+	doc.on('end', function () {
+		result = Buffer.concat(chunks);
+		callback(result, doc._pdfMakePages);
+	});
+	doc.end();
+};
+
+Document.prototype._getPages = function (options, cb) {
+	if (!cb) {
+		throw '_getPages is an async method and needs a callback argument';
+	}
+	this._createDoc(options, function (ignoreBuffer, pages) {
+		cb(pages);
+	});
+};
+
+Document.prototype._bufferToBlob = function (buffer) {
+	var blob;
+	try {
+		blob = new Blob([buffer], {type: 'application/pdf'});
+	} catch (e) {
+		// Old browser which can't handle it without making it an byte array (ie10)
+		if (e.name === 'InvalidStateError') {
+			var byteArray = new Uint8Array(buffer);
+			blob = new Blob([byteArray.buffer], {type: 'application/pdf'});
+		}
+	}
+
+	if (!blob) {
+		throw 'Could not generate blob';
+	}
+
+	return blob;
+};
+
+Document.prototype._openWindow = function () {
+	// we have to open the window immediately and store the reference
+	// otherwise popup blockers will stop us
+	var win = window.open('', '_blank');
+	if (win === null) {
+		throw 'Open PDF in new window blocked by browser';
+	}
+
+	return win;
+};
+
+Document.prototype._openPdf = function (options, win) {
+	if (!win) {
+		win = this._openWindow();
+	}
+	try {
+		this.getBlob(function (result) {
+			var urlCreator = window.URL || window.webkitURL;
+			var pdfUrl = urlCreator.createObjectURL(result);
+			win.location.href = pdfUrl;
+		}, options);
+	} catch (e) {
+		win.close();
+		throw e;
+	}
+};
+
+Document.prototype.open = function (options, win) {
+	options = options || {};
+	options.autoPrint = false;
+	win = win || null;
+
+	this._openPdf(options, win);
+};
+
+
+Document.prototype.print = function (options, win) {
+	options = options || {};
+	options.autoPrint = true;
+	win = win || null;
+
+	this._openPdf(options, win);
+};
+
+Document.prototype.download = function (defaultFileName, cb, options) {
+	if (isFunction(defaultFileName)) {
+		cb = defaultFileName;
+		defaultFileName = null;
+	}
+
+	defaultFileName = defaultFileName || 'file.pdf';
+	this.getBlob(function (result) {
+		saveAs(result, defaultFileName);
+
+		if (isFunction(cb)) {
+			cb();
+		}
+	}, options);
+};
+
+Document.prototype.getBase64 = function (cb, options) {
+	if (!cb) {
+		throw 'getBase64 is an async method and needs a callback argument';
+	}
+	this.getBuffer(function (buffer) {
+		cb(buffer.toString('base64'));
+	}, options);
+};
+
+Document.prototype.getDataUrl = function (cb, options) {
+	if (!cb) {
+		throw 'getDataUrl is an async method and needs a callback argument';
+	}
+	this.getBuffer(function (buffer) {
+		cb('data:application/pdf;base64,' + buffer.toString('base64'));
+	}, options);
+};
+
+Document.prototype.getBlob = function (cb, options) {
+	if (!cb) {
+		throw 'getBlob is an async method and needs a callback argument';
+	}
+	var that = this;
+	this.getBuffer(function (result) {
+		var blob = that._bufferToBlob(result);
+		cb(blob);
+	}, options);
+};
+
+Document.prototype.getBuffer = function (cb, options) {
+	if (!cb) {
+		throw 'getBuffer is an async method and needs a callback argument';
+	}
+	this._createDoc(options, function (buffer) {
+		cb(buffer);
+	});
+};
+
+module.exports = {
+	createPdf: function (docDefinition) {
+		if (!canCreatePdf()) {
+			throw 'Your browser does not provide the level of support needed';
+		}
+		return new Document(docDefinition, global.pdfMake.tableLayouts, global.pdfMake.fonts, global.pdfMake.vfs);
+	}
+};
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, __webpack_require__(7)))
+
+/***/ }),
+/* 124 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.byteLength = byteLength
+exports.toByteArray = toByteArray
+exports.fromByteArray = fromByteArray
+
+var lookup = []
+var revLookup = []
+var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
+
+var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+for (var i = 0, len = code.length; i < len; ++i) {
+  lookup[i] = code[i]
+  revLookup[code.charCodeAt(i)] = i
+}
+
+// Support decoding URL-safe base64 strings, as Node.js does.
+// See: https://en.wikipedia.org/wiki/Base64#URL_applications
+revLookup['-'.charCodeAt(0)] = 62
+revLookup['_'.charCodeAt(0)] = 63
+
+function placeHoldersCount (b64) {
+  var len = b64.length
+  if (len % 4 > 0) {
+    throw new Error('Invalid string. Length must be a multiple of 4')
+  }
+
+  // the number of equal signs (place holders)
+  // if there are two placeholders, than the two characters before it
+  // represent one byte
+  // if there is only one, then the three characters before it represent 2 bytes
+  // this is just a cheap hack to not do indexOf twice
+  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
+}
+
+function byteLength (b64) {
+  // base64 is 4/3 + up to two characters of the original data
+  return (b64.length * 3 / 4) - placeHoldersCount(b64)
+}
+
+function toByteArray (b64) {
+  var i, l, tmp, placeHolders, arr
+  var len = b64.length
+  placeHolders = placeHoldersCount(b64)
+
+  arr = new Arr((len * 3 / 4) - placeHolders)
+
+  // if there are placeholders, only get up to the last complete 4 chars
+  l = placeHolders > 0 ? len - 4 : len
+
+  var L = 0
+
+  for (i = 0; i < l; i += 4) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
+    arr[L++] = (tmp >> 16) & 0xFF
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  if (placeHolders === 2) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
+    arr[L++] = tmp & 0xFF
+  } else if (placeHolders === 1) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  return arr
+}
+
+function tripletToBase64 (num) {
+  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
+}
+
+function encodeChunk (uint8, start, end) {
+  var tmp
+  var output = []
+  for (var i = start; i < end; i += 3) {
+    tmp = ((uint8[i] << 16) & 0xFF0000) + ((uint8[i + 1] << 8) & 0xFF00) + (uint8[i + 2] & 0xFF)
+    output.push(tripletToBase64(tmp))
+  }
+  return output.join('')
+}
+
+function fromByteArray (uint8) {
+  var tmp
+  var len = uint8.length
+  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
+  var output = ''
+  var parts = []
+  var maxChunkLength = 16383 // must be multiple of 3
+
+  // go through the array every three bytes, we'll deal with trailing stuff later
+  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
+    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
+  }
+
+  // pad the end with zeros, but make sure to not forget the extra bytes
+  if (extraBytes === 1) {
+    tmp = uint8[len - 1]
+    output += lookup[tmp >> 2]
+    output += lookup[(tmp << 4) & 0x3F]
+    output += '=='
+  } else if (extraBytes === 2) {
+    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
+    output += lookup[tmp >> 10]
+    output += lookup[(tmp >> 4) & 0x3F]
+    output += lookup[(tmp << 2) & 0x3F]
+    output += '='
+  }
+
+  parts.push(output)
+
+  return parts.join('')
+}
+
+
+/***/ }),
+/* 125 */
+/***/ (function(module, exports) {
+
+exports.read = function (buffer, offset, isLE, mLen, nBytes) {
+  var e, m
+  var eLen = nBytes * 8 - mLen - 1
+  var eMax = (1 << eLen) - 1
+  var eBias = eMax >> 1
+  var nBits = -7
+  var i = isLE ? (nBytes - 1) : 0
+  var d = isLE ? -1 : 1
+  var s = buffer[offset + i]
+
+  i += d
+
+  e = s & ((1 << (-nBits)) - 1)
+  s >>= (-nBits)
+  nBits += eLen
+  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+  m = e & ((1 << (-nBits)) - 1)
+  e >>= (-nBits)
+  nBits += mLen
+  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+  if (e === 0) {
+    e = 1 - eBias
+  } else if (e === eMax) {
+    return m ? NaN : ((s ? -1 : 1) * Infinity)
+  } else {
+    m = m + Math.pow(2, mLen)
+    e = e - eBias
+  }
+  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
+}
+
+exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
+  var e, m, c
+  var eLen = nBytes * 8 - mLen - 1
+  var eMax = (1 << eLen) - 1
+  var eBias = eMax >> 1
+  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
+  var i = isLE ? 0 : (nBytes - 1)
+  var d = isLE ? 1 : -1
+  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
+
+  value = Math.abs(value)
+
+  if (isNaN(value) || value === Infinity) {
+    m = isNaN(value) ? 1 : 0
+    e = eMax
+  } else {
+    e = Math.floor(Math.log(value) / Math.LN2)
+    if (value * (c = Math.pow(2, -e)) < 1) {
+      e--
+      c *= 2
+    }
+    if (e + eBias >= 1) {
+      value += rt / c
+    } else {
+      value += rt * Math.pow(2, 1 - eBias)
+    }
+    if (value * c >= 2) {
+      e++
+      c /= 2
+    }
+
+    if (e + eBias >= eMax) {
+      m = 0
+      e = eMax
+    } else if (e + eBias >= 1) {
+      m = (value * c - 1) * Math.pow(2, mLen)
+      e = e + eBias
+    } else {
+      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
+      e = 0
+    }
+  }
+
+  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
+
+  e = (e << mLen) | m
+  eLen += mLen
+  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
+
+  buffer[offset + i - d] |= s * 128
+}
+
+
+/***/ }),
+/* 126 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/*eslint no-unused-vars: ["error", {"args": "none"}]*/
+
+
+var FontProvider = __webpack_require__(127);
+var LayoutBuilder = __webpack_require__(128);
+var PdfKit = __webpack_require__(138);
+var sizes = __webpack_require__(303);
+var ImageMeasure = __webpack_require__(304);
+var textDecorator = __webpack_require__(305);
+var TextTools = __webpack_require__(42);
+var isFunction = __webpack_require__(0).isFunction;
+var isString = __webpack_require__(0).isString;
+var isNumber = __webpack_require__(0).isNumber;
+var isBoolean = __webpack_require__(0).isBoolean;
+var isArray = __webpack_require__(0).isArray;
+
+////////////////////////////////////////
+// PdfPrinter
+
+/**
+ * @class Creates an instance of a PdfPrinter which turns document definition into a pdf
+ *
+ * @param {Object} fontDescriptors font definition dictionary
+ *
+ * @example
+ * var fontDescriptors = {
+ *	Roboto: {
+ *		normal: 'fonts/Roboto-Regular.ttf',
+ *		bold: 'fonts/Roboto-Medium.ttf',
+ *		italics: 'fonts/Roboto-Italic.ttf',
+ *		bolditalics: 'fonts/Roboto-MediumItalic.ttf'
+ *	}
+ * };
+ *
+ * var printer = new PdfPrinter(fontDescriptors);
+ */
+function PdfPrinter(fontDescriptors) {
+	this.fontDescriptors = fontDescriptors;
+}
+
+/**
+ * Executes layout engine for the specified document and renders it into a pdfkit document
+ * ready to be saved.
+ *
+ * @param {Object} docDefinition document definition
+ * @param {Object} docDefinition.content an array describing the pdf structure (for more information take a look at the examples in the /examples folder)
+ * @param {Object} [docDefinition.defaultStyle] default (implicit) style definition
+ * @param {Object} [docDefinition.styles] dictionary defining all styles which can be used in the document
+ * @param {Object} [docDefinition.pageSize] page size (pdfkit units, A4 dimensions by default)
+ * @param {Number} docDefinition.pageSize.width width
+ * @param {Number} docDefinition.pageSize.height height
+ * @param {Object} [docDefinition.pageMargins] page margins (pdfkit units)
+ * @param {Number} docDefinition.maxPagesNumber maximum number of pages to render
+ *
+ * @example
+ *
+ * var docDefinition = {
+ * 	info: {
+ *		title: 'awesome Document',
+ *		author: 'john doe',
+ *		subject: 'subject of document',
+ *		keywords: 'keywords for document',
+ * 	},
+ *	content: [
+ *		'First paragraph',
+ *		'Second paragraph, this time a little bit longer',
+ *		{ text: 'Third paragraph, slightly bigger font size', fontSize: 20 },
+ *		{ text: 'Another paragraph using a named style', style: 'header' },
+ *		{ text: ['playing with ', 'inlines' ] },
+ *		{ text: ['and ', { text: 'restyling ', bold: true }, 'them'] },
+ *	],
+ *	styles: {
+ *		header: { fontSize: 30, bold: true }
+ *	}
+ * }
+ *
+ * var pdfKitDoc = printer.createPdfKitDocument(docDefinition);
+ *
+ * pdfKitDoc.pipe(fs.createWriteStream('sample.pdf'));
+ * pdfKitDoc.end();
+ *
+ * @return {Object} a pdfKit document object which can be saved or encode to data-url
+ */
+PdfPrinter.prototype.createPdfKitDocument = function (docDefinition, options) {
+	options = options || {};
+
+	var pageSize = fixPageSize(docDefinition.pageSize, docDefinition.pageOrientation);
+	var compressPdf = isBoolean(docDefinition.compress) ? docDefinition.compress : true;
+
+	this.pdfKitDoc = new PdfKit({size: [pageSize.width, pageSize.height], autoFirstPage: false, compress: compressPdf});
+	setMetadata(docDefinition, this.pdfKitDoc);
+
+	this.fontProvider = new FontProvider(this.fontDescriptors, this.pdfKitDoc);
+
+	docDefinition.images = docDefinition.images || {};
+
+	var builder = new LayoutBuilder(pageSize, fixPageMargins(docDefinition.pageMargins || 40), new ImageMeasure(this.pdfKitDoc, docDefinition.images));
+
+	registerDefaultTableLayouts(builder);
+	if (options.tableLayouts) {
+		builder.registerTableLayouts(options.tableLayouts);
+	}
+
+	var pages = builder.layoutDocument(docDefinition.content, this.fontProvider, docDefinition.styles || {}, docDefinition.defaultStyle || {fontSize: 12, font: 'Roboto'}, docDefinition.background, docDefinition.header, docDefinition.footer, docDefinition.images, docDefinition.watermark, docDefinition.pageBreakBefore);
+	var maxNumberPages = docDefinition.maxPagesNumber || -1;
+	if (isNumber(maxNumberPages) && maxNumberPages > -1) {
+		pages = pages.slice(0, maxNumberPages);
+	}
+
+	// if pageSize.height is set to Infinity, calculate the actual height of the page that
+	// was laid out using the height of each of the items in the page.
+	if (pageSize.height === Infinity) {
+		var pageHeight = calculatePageHeight(pages, docDefinition.pageMargins);
+		this.pdfKitDoc.options.size = [pageSize.width, pageHeight];
+	}
+
+	renderPages(pages, this.fontProvider, this.pdfKitDoc, options.progressCallback);
+
+	if (options.autoPrint) {
+		var printActionRef = this.pdfKitDoc.ref({
+			Type: 'Action',
+			S: 'Named',
+			N: 'Print'
+		});
+		this.pdfKitDoc._root.data.OpenAction = printActionRef;
+		printActionRef.end();
+	}
+	return this.pdfKitDoc;
+};
+
+function setMetadata(docDefinition, pdfKitDoc) {
+	// PDF standard has these properties reserved: Title, Author, Subject, Keywords,
+	// Creator, Producer, CreationDate, ModDate, Trapped.
+	// To keep the pdfmake api consistent, the info field are defined lowercase.
+	// Custom properties don't contain a space.
+	function standardizePropertyKey(key) {
+		var standardProperties = ['Title', 'Author', 'Subject', 'Keywords',
+			'Creator', 'Producer', 'CreationDate', 'ModDate', 'Trapped'];
+		var standardizedKey = key.charAt(0).toUpperCase() + key.slice(1);
+		if (standardProperties.indexOf(standardizedKey) !== -1) {
+			return standardizedKey;
+		}
+
+		return key.replace(/\s+/g, '');
+	}
+
+	pdfKitDoc.info.Producer = 'pdfmake';
+	pdfKitDoc.info.Creator = 'pdfmake';
+
+	if (docDefinition.info) {
+		for (var key in docDefinition.info) {
+			var value = docDefinition.info[key];
+			if (value) {
+				key = standardizePropertyKey(key);
+				pdfKitDoc.info[key] = value;
+			}
+		}
+	}
+}
+
+function calculatePageHeight(pages, margins) {
+	function getItemHeight(item) {
+		if (isFunction(item.item.getHeight)) {
+			return item.item.getHeight();
+		} else if (item.item._height) {
+			return item.item._height;
+		} else {
+			// TODO: add support for next item types
+			return 0;
+		}
+	}
+
+	var fixedMargins = fixPageMargins(margins || 40);
+	var height = fixedMargins.top + fixedMargins.bottom;
+	pages.forEach(function (page) {
+		page.items.forEach(function (item) {
+			height += getItemHeight(item);
+		});
+	});
+	return height;
+}
+
+function fixPageSize(pageSize, pageOrientation) {
+	function isNeedSwapPageSizes(pageOrientation) {
+		if (isString(pageOrientation)) {
+			pageOrientation = pageOrientation.toLowerCase();
+			return ((pageOrientation === 'portrait') && (size.width > size.height)) ||
+				((pageOrientation === 'landscape') && (size.width < size.height));
+		}
+		return false;
+	}
+
+	// if pageSize.height is set to auto, set the height to infinity so there are no page breaks.
+	if (pageSize && pageSize.height === 'auto') {
+		pageSize.height = Infinity;
+	}
+
+	var size = pageSize2widthAndHeight(pageSize || 'A4');
+	if (isNeedSwapPageSizes(pageOrientation)) { // swap page sizes
+		size = {width: size.height, height: size.width};
+	}
+	size.orientation = size.width > size.height ? 'landscape' : 'portrait';
+	return size;
+}
+
+function fixPageMargins(margin) {
+	if (!margin) {
+		return null;
+	}
+
+	if (isNumber(margin)) {
+		margin = {left: margin, right: margin, top: margin, bottom: margin};
+	} else if (isArray(margin)) {
+		if (margin.length === 2) {
+			margin = {left: margin[0], top: margin[1], right: margin[0], bottom: margin[1]};
+		} else if (margin.length === 4) {
+			margin = {left: margin[0], top: margin[1], right: margin[2], bottom: margin[3]};
+		} else {
+			throw 'Invalid pageMargins definition';
+		}
+	}
+
+	return margin;
+}
+
+function registerDefaultTableLayouts(layoutBuilder) {
+	layoutBuilder.registerTableLayouts({
+		noBorders: {
+			hLineWidth: function (i) {
+				return 0;
+			},
+			vLineWidth: function (i) {
+				return 0;
+			},
+			paddingLeft: function (i) {
+				return i && 4 || 0;
+			},
+			paddingRight: function (i, node) {
+				return (i < node.table.widths.length - 1) ? 4 : 0;
+			}
+		},
+		headerLineOnly: {
+			hLineWidth: function (i, node) {
+				if (i === 0 || i === node.table.body.length) {
+					return 0;
+				}
+				return (i === node.table.headerRows) ? 2 : 0;
+			},
+			vLineWidth: function (i) {
+				return 0;
+			},
+			paddingLeft: function (i) {
+				return i === 0 ? 0 : 8;
+			},
+			paddingRight: function (i, node) {
+				return (i === node.table.widths.length - 1) ? 0 : 8;
+			}
+		},
+		lightHorizontalLines: {
+			hLineWidth: function (i, node) {
+				if (i === 0 || i === node.table.body.length) {
+					return 0;
+				}
+				return (i === node.table.headerRows) ? 2 : 1;
+			},
+			vLineWidth: function (i) {
+				return 0;
+			},
+			hLineColor: function (i) {
+				return i === 1 ? 'black' : '#aaa';
+			},
+			paddingLeft: function (i) {
+				return i === 0 ? 0 : 8;
+			},
+			paddingRight: function (i, node) {
+				return (i === node.table.widths.length - 1) ? 0 : 8;
+			}
+		}
+	});
+}
+
+function pageSize2widthAndHeight(pageSize) {
+	if (isString(pageSize)) {
+		var size = sizes[pageSize.toUpperCase()];
+		if (!size) {
+			throw 'Page size ' + pageSize + ' not recognized';
+		}
+		return {width: size[0], height: size[1]};
+	}
+
+	return pageSize;
+}
+
+function updatePageOrientationInOptions(currentPage, pdfKitDoc) {
+	var previousPageOrientation = pdfKitDoc.options.size[0] > pdfKitDoc.options.size[1] ? 'landscape' : 'portrait';
+
+	if (currentPage.pageSize.orientation !== previousPageOrientation) {
+		var width = pdfKitDoc.options.size[0];
+		var height = pdfKitDoc.options.size[1];
+		pdfKitDoc.options.size = [height, width];
+	}
+}
+
+function renderPages(pages, fontProvider, pdfKitDoc, progressCallback) {
+	pdfKitDoc._pdfMakePages = pages;
+	pdfKitDoc.addPage();
+
+	var totalItems = 0;
+	if (progressCallback) {
+		pages.forEach(function (page) {
+			totalItems += page.items.length;
+		});
+	}
+
+	var renderedItems = 0;
+	progressCallback = progressCallback || function () {};
+
+	for (var i = 0; i < pages.length; i++) {
+		if (i > 0) {
+			updatePageOrientationInOptions(pages[i], pdfKitDoc);
+			pdfKitDoc.addPage(pdfKitDoc.options);
+		}
+
+		var page = pages[i];
+		for (var ii = 0, il = page.items.length; ii < il; ii++) {
+			var item = page.items[ii];
+			switch (item.type) {
+				case 'vector':
+					renderVector(item.item, pdfKitDoc);
+					break;
+				case 'line':
+					renderLine(item.item, item.item.x, item.item.y, pdfKitDoc);
+					break;
+				case 'image':
+					renderImage(item.item, item.item.x, item.item.y, pdfKitDoc);
+					break;
+				case 'beginClip':
+					beginClip(item.item, pdfKitDoc);
+					break;
+				case 'endClip':
+					endClip(pdfKitDoc);
+					break;
+			}
+			renderedItems++;
+			progressCallback(renderedItems / totalItems);
+		}
+		if (page.watermark) {
+			renderWatermark(page, pdfKitDoc);
+		}
+	}
+}
+
+function renderLine(line, x, y, pdfKitDoc) {
+	if (line._pageNodeRef) {
+		var newWidth;
+		var diffWidth;
+		var textTools = new TextTools(null);
+		var pageNumber = line._pageNodeRef.positions[0].pageNumber.toString();
+
+		line.inlines[0].text = pageNumber;
+		line.inlines[0].linkToPage = pageNumber;
+		newWidth = textTools.widthOfString(line.inlines[0].text, line.inlines[0].font, line.inlines[0].fontSize, line.inlines[0].characterSpacing, line.inlines[0].fontFeatures);
+		diffWidth = line.inlines[0].width - newWidth;
+		line.inlines[0].width = newWidth;
+
+		switch (line.inlines[0].alignment) {
+			case 'right':
+				line.inlines[0].x += diffWidth;
+				break;
+			case 'center':
+				line.inlines[0].x += diffWidth / 2;
+				break;
+		}
+	}
+
+	x = x || 0;
+	y = y || 0;
+
+	var lineHeight = line.getHeight();
+	var ascenderHeight = line.getAscenderHeight();
+	var descent = lineHeight - ascenderHeight;
+
+	textDecorator.drawBackground(line, x, y, pdfKitDoc);
+
+	//TODO: line.optimizeInlines();
+	for (var i = 0, l = line.inlines.length; i < l; i++) {
+		var inline = line.inlines[i];
+		var shiftToBaseline = lineHeight - ((inline.font.ascender / 1000) * inline.fontSize) - descent;
+		var options = {
+			lineBreak: false,
+			textWidth: inline.width,
+			characterSpacing: inline.characterSpacing,
+			wordCount: 1,
+			link: inline.link
+		};
+
+		if (inline.fontFeatures) {
+			options.features = inline.fontFeatures;
+		}
+
+		pdfKitDoc.fill(inline.color || 'black');
+
+		pdfKitDoc._font = inline.font;
+		pdfKitDoc.fontSize(inline.fontSize);
+		pdfKitDoc.text(inline.text, x + inline.x, y + shiftToBaseline, options);
+
+		if (inline.linkToPage) {
+			var _ref = pdfKitDoc.ref({Type: 'Action', S: 'GoTo', D: [inline.linkToPage, 0, 0]}).end();
+			pdfKitDoc.annotate(x + inline.x, y + shiftToBaseline, inline.width, inline.height, {Subtype: 'Link', Dest: [inline.linkToPage - 1, 'XYZ', null, null, null]});
+		}
+
+	}
+
+	textDecorator.drawDecorations(line, x, y, pdfKitDoc);
+}
+
+function renderWatermark(page, pdfKitDoc) {
+	var watermark = page.watermark;
+
+	pdfKitDoc.fill(watermark.color);
+	pdfKitDoc.opacity(watermark.opacity);
+
+	pdfKitDoc.save();
+
+	var angle = Math.atan2(pdfKitDoc.page.height, pdfKitDoc.page.width) * -180 / Math.PI;
+	pdfKitDoc.rotate(angle, {origin: [pdfKitDoc.page.width / 2, pdfKitDoc.page.height / 2]});
+
+	var x = pdfKitDoc.page.width / 2 - watermark.size.size.width / 2;
+	var y = pdfKitDoc.page.height / 2 - watermark.size.size.height / 4;
+
+	pdfKitDoc._font = watermark.font;
+	pdfKitDoc.fontSize(watermark.size.fontSize);
+	pdfKitDoc.text(watermark.text, x, y, {lineBreak: false});
+
+	pdfKitDoc.restore();
+}
+
+function renderVector(vector, pdfKitDoc) {
+	//TODO: pdf optimization (there's no need to write all properties everytime)
+	pdfKitDoc.lineWidth(vector.lineWidth || 1);
+	if (vector.dash) {
+		pdfKitDoc.dash(vector.dash.length, {space: vector.dash.space || vector.dash.length, phase: vector.dash.phase || 0});
+	} else {
+		pdfKitDoc.undash();
+	}
+	pdfKitDoc.lineJoin(vector.lineJoin || 'miter');
+	pdfKitDoc.lineCap(vector.lineCap || 'butt');
+
+	//TODO: clipping
+
+	switch (vector.type) {
+		case 'ellipse':
+			pdfKitDoc.ellipse(vector.x, vector.y, vector.r1, vector.r2);
+			break;
+		case 'rect':
+			if (vector.r) {
+				pdfKitDoc.roundedRect(vector.x, vector.y, vector.w, vector.h, vector.r);
+			} else {
+				pdfKitDoc.rect(vector.x, vector.y, vector.w, vector.h);
+			}
+
+			if (vector.linearGradient) {
+				var gradient = pdfKitDoc.linearGradient(vector.x, vector.y, vector.x + vector.w, vector.y);
+				var step = 1 / (vector.linearGradient.length - 1);
+
+				for (var i = 0; i < vector.linearGradient.length; i++) {
+					gradient.stop(i * step, vector.linearGradient[i]);
+				}
+
+				vector.color = gradient;
+			}
+			break;
+		case 'line':
+			pdfKitDoc.moveTo(vector.x1, vector.y1);
+			pdfKitDoc.lineTo(vector.x2, vector.y2);
+			break;
+		case 'polyline':
+			if (vector.points.length === 0) {
+				break;
+			}
+
+			pdfKitDoc.moveTo(vector.points[0].x, vector.points[0].y);
+			for (var i = 1, l = vector.points.length; i < l; i++) {
+				pdfKitDoc.lineTo(vector.points[i].x, vector.points[i].y);
+			}
+
+			if (vector.points.length > 1) {
+				var p1 = vector.points[0];
+				var pn = vector.points[vector.points.length - 1];
+
+				if (vector.closePath || p1.x === pn.x && p1.y === pn.y) {
+					pdfKitDoc.closePath();
+				}
+			}
+			break;
+		case 'path':
+			pdfKitDoc.path(vector.d);
+			break;
+	}
+
+	if (vector.color && vector.lineColor) {
+		pdfKitDoc.fillColor(vector.color, vector.fillOpacity || 1);
+		pdfKitDoc.strokeColor(vector.lineColor, vector.strokeOpacity || 1);
+		pdfKitDoc.fillAndStroke();
+	} else if (vector.color) {
+		pdfKitDoc.fillColor(vector.color, vector.fillOpacity || 1);
+		pdfKitDoc.fill();
+	} else {
+		pdfKitDoc.strokeColor(vector.lineColor || 'black', vector.strokeOpacity || 1);
+		pdfKitDoc.stroke();
+	}
+}
+
+function renderImage(image, x, y, pdfKitDoc) {
+	pdfKitDoc.image(image.image, image.x, image.y, {width: image._width, height: image._height});
+	if (image.link) {
+		pdfKitDoc.link(image.x, image.y, image._width, image._height, image.link);
+	}
+}
+
+function beginClip(rect, pdfKitDoc) {
+	pdfKitDoc.save();
+	pdfKitDoc.addContent('' + rect.x + ' ' + rect.y + ' ' + rect.width + ' ' + rect.height + ' re');
+	pdfKitDoc.clip();
+}
+
+function endClip(pdfKitDoc) {
+	pdfKitDoc.restore();
+}
+
+module.exports = PdfPrinter;
+
+
+/***/ }),
+/* 127 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var isArray = __webpack_require__(0).isArray;
+
+function typeName(bold, italics) {
+	var type = 'normal';
+	if (bold && italics) {
+		type = 'bolditalics';
+	} else if (bold) {
+		type = 'bold';
+	} else if (italics) {
+		type = 'italics';
+	}
+	return type;
+}
+
+function FontProvider(fontDescriptors, pdfKitDoc) {
+	this.fonts = {};
+	this.pdfKitDoc = pdfKitDoc;
+	this.fontCache = {};
+
+	for (var font in fontDescriptors) {
+		if (fontDescriptors.hasOwnProperty(font)) {
+			var fontDef = fontDescriptors[font];
+
+			this.fonts[font] = {
+				normal: fontDef.normal,
+				bold: fontDef.bold,
+				italics: fontDef.italics,
+				bolditalics: fontDef.bolditalics
+			};
+		}
+	}
+}
+
+FontProvider.prototype.provideFont = function (familyName, bold, italics) {
+	var type = typeName(bold, italics);
+	if (!this.fonts[familyName] || !this.fonts[familyName][type]) {
+		throw new Error('Font \'' + familyName + '\' in style \'' + type + '\' is not defined in the font section of the document definition.');
+	}
+
+	this.fontCache[familyName] = this.fontCache[familyName] || {};
+
+	if (!this.fontCache[familyName][type]) {
+		var def = this.fonts[familyName][type];
+		if (!isArray(def)) {
+			def = [def];
+		}
+		this.fontCache[familyName][type] = this.pdfKitDoc.font.apply(this.pdfKitDoc, def)._font;
+	}
+
+	return this.fontCache[familyName][type];
+};
+
+module.exports = FontProvider;
+
+
+/***/ }),
+/* 128 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var TraversalTracker = __webpack_require__(77);
+var DocPreprocessor = __webpack_require__(129);
+var DocMeasure = __webpack_require__(130);
+var DocumentContext = __webpack_require__(81);
+var PageElementWriter = __webpack_require__(135);
+var ColumnCalculator = __webpack_require__(44);
+var TableProcessor = __webpack_require__(137);
+var Line = __webpack_require__(82);
+var isString = __webpack_require__(0).isString;
+var isArray = __webpack_require__(0).isArray;
+var pack = __webpack_require__(0).pack;
+var offsetVector = __webpack_require__(0).offsetVector;
+var fontStringify = __webpack_require__(0).fontStringify;
+var isFunction = __webpack_require__(0).isFunction;
+var TextTools = __webpack_require__(42);
+var StyleContextStack = __webpack_require__(80);
+
+function addAll(target, otherArray) {
+	otherArray.forEach(function (item) {
+		target.push(item);
+	});
+}
+
+/**
+ * Creates an instance of LayoutBuilder - layout engine which turns document-definition-object
+ * into a set of pages, lines, inlines and vectors ready to be rendered into a PDF
+ *
+ * @param {Object} pageSize - an object defining page width and height
+ * @param {Object} pageMargins - an object defining top, left, right and bottom margins
+ */
+function LayoutBuilder(pageSize, pageMargins, imageMeasure) {
+	this.pageSize = pageSize;
+	this.pageMargins = pageMargins;
+	this.tracker = new TraversalTracker();
+	this.imageMeasure = imageMeasure;
+	this.tableLayouts = {};
+}
+
+LayoutBuilder.prototype.registerTableLayouts = function (tableLayouts) {
+	this.tableLayouts = pack(this.tableLayouts, tableLayouts);
+};
+
+/**
+ * Executes layout engine on document-definition-object and creates an array of pages
+ * containing positioned Blocks, Lines and inlines
+ *
+ * @param {Object} docStructure document-definition-object
+ * @param {Object} fontProvider font provider
+ * @param {Object} styleDictionary dictionary with style definitions
+ * @param {Object} defaultStyle default style definition
+ * @return {Array} an array of pages
+ */
+LayoutBuilder.prototype.layoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {
+
+	function addPageBreaksIfNecessary(linearNodeList, pages) {
+
+		if (!isFunction(pageBreakBeforeFct)) {
+			return false;
+		}
+
+		linearNodeList = linearNodeList.filter(function (node) {
+			return node.positions.length > 0;
+		});
+
+		linearNodeList.forEach(function (node) {
+			var nodeInfo = {};
+			[
+				'id', 'text', 'ul', 'ol', 'table', 'image', 'qr', 'canvas', 'columns',
+				'headlineLevel', 'style', 'pageBreak', 'pageOrientation',
+				'width', 'height'
+			].forEach(function (key) {
+				if (node[key] !== undefined) {
+					nodeInfo[key] = node[key];
+				}
+			});
+			nodeInfo.startPosition = node.positions[0];
+			nodeInfo.pageNumbers = node.positions.map(function (node) {
+				return node.pageNumber;
+			}).filter(function (element, position, array) {
+				return array.indexOf(element) === position;
+			});
+			nodeInfo.pages = pages.length;
+			nodeInfo.stack = isArray(node.stack);
+
+			node.nodeInfo = nodeInfo;
+		});
+
+		return linearNodeList.some(function (node, index, followingNodeList) {
+			if (node.pageBreak !== 'before' && !node.pageBreakCalculated) {
+				node.pageBreakCalculated = true;
+				var pageNumber = node.nodeInfo.pageNumbers[0];
+
+				var followingNodesOnPage = followingNodeList.slice(index + 1).filter(function (node0) {
+					return node0.nodeInfo.pageNumbers.indexOf(pageNumber) > -1;
+				});
+
+				var nodesOnNextPage = followingNodeList.slice(index + 1).filter(function (node0) {
+					return node0.nodeInfo.pageNumbers.indexOf(pageNumber + 1) > -1;
+				});
+
+				var previousNodesOnPage = followingNodeList.slice(0, index).filter(function (node0) {
+					return node0.nodeInfo.pageNumbers.indexOf(pageNumber) > -1;
+				});
+
+				if (
+					pageBreakBeforeFct(
+						node.nodeInfo,
+						followingNodesOnPage.map(function (node) {
+							return node.nodeInfo;
+						}),
+						nodesOnNextPage.map(function (node) {
+							return node.nodeInfo;
+						}),
+						previousNodesOnPage.map(function (node) {
+							return node.nodeInfo;
+						}))) {
+					node.pageBreak = 'before';
+					return true;
+				}
+			}
+		});
+	}
+
+	this.docPreprocessor = new DocPreprocessor();
+	this.docMeasure = new DocMeasure(fontProvider, styleDictionary, defaultStyle, this.imageMeasure, this.tableLayouts, images);
+
+
+	function resetXYs(result) {
+		result.linearNodeList.forEach(function (node) {
+			node.resetXY();
+		});
+	}
+
+	var result = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);
+	while (addPageBreaksIfNecessary(result.linearNodeList, result.pages)) {
+		resetXYs(result);
+		result = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);
+	}
+
+	return result.pages;
+};
+
+LayoutBuilder.prototype.tryLayoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {
+
+	this.linearNodeList = [];
+	docStructure = this.docPreprocessor.preprocessDocument(docStructure);
+	docStructure = this.docMeasure.measureDocument(docStructure);
+
+	this.writer = new PageElementWriter(
+		new DocumentContext(this.pageSize, this.pageMargins), this.tracker);
+
+	var _this = this;
+	this.writer.context().tracker.startTracking('pageAdded', function () {
+		_this.addBackground(background);
+	});
+
+	this.addBackground(background);
+	this.processNode(docStructure);
+	this.addHeadersAndFooters(header, footer);
+	if (watermark != null) {
+		this.addWatermark(watermark, fontProvider, defaultStyle);
+	}
+
+	return {pages: this.writer.context().pages, linearNodeList: this.linearNodeList};
+};
+
+
+LayoutBuilder.prototype.addBackground = function (background) {
+	var backgroundGetter = isFunction(background) ? background : function () {
+		return background;
+	};
+
+	var pageBackground = backgroundGetter(this.writer.context().page + 1);
+
+	if (pageBackground) {
+		var pageSize = this.writer.context().getCurrentPage().pageSize;
+		this.writer.beginUnbreakableBlock(pageSize.width, pageSize.height);
+		pageBackground = this.docPreprocessor.preprocessDocument(pageBackground);
+		this.processNode(this.docMeasure.measureDocument(pageBackground));
+		this.writer.commitUnbreakableBlock(0, 0);
+		this.writer.context().hasBackground = true;
+	}
+};
+
+LayoutBuilder.prototype.addStaticRepeatable = function (headerOrFooter, sizeFunction) {
+	this.addDynamicRepeatable(function () {
+		return JSON.parse(JSON.stringify(headerOrFooter)); // copy to new object
+	}, sizeFunction);
+};
+
+LayoutBuilder.prototype.addDynamicRepeatable = function (nodeGetter, sizeFunction) {
+	var pages = this.writer.context().pages;
+
+	for (var pageIndex = 0, l = pages.length; pageIndex < l; pageIndex++) {
+		this.writer.context().page = pageIndex;
+
+		var node = nodeGetter(pageIndex + 1, l, this.writer.context().pages[pageIndex].pageSize);
+
+		if (node) {
+			var sizes = sizeFunction(this.writer.context().getCurrentPage().pageSize, this.pageMargins);
+			this.writer.beginUnbreakableBlock(sizes.width, sizes.height);
+			node = this.docPreprocessor.preprocessDocument(node);
+			this.processNode(this.docMeasure.measureDocument(node));
+			this.writer.commitUnbreakableBlock(sizes.x, sizes.y);
+		}
+	}
+};
+
+LayoutBuilder.prototype.addHeadersAndFooters = function (header, footer) {
+	var headerSizeFct = function (pageSize, pageMargins) {
+		return {
+			x: 0,
+			y: 0,
+			width: pageSize.width,
+			height: pageMargins.top
+		};
+	};
+
+	var footerSizeFct = function (pageSize, pageMargins) {
+		return {
+			x: 0,
+			y: pageSize.height - pageMargins.bottom,
+			width: pageSize.width,
+			height: pageMargins.bottom
+		};
+	};
+
+	if (isFunction(header)) {
+		this.addDynamicRepeatable(header, headerSizeFct);
+	} else if (header) {
+		this.addStaticRepeatable(header, headerSizeFct);
+	}
+
+	if (isFunction(footer)) {
+		this.addDynamicRepeatable(footer, footerSizeFct);
+	} else if (footer) {
+		this.addStaticRepeatable(footer, footerSizeFct);
+	}
+};
+
+LayoutBuilder.prototype.addWatermark = function (watermark, fontProvider, defaultStyle) {
+	if (isString(watermark)) {
+		watermark = {'text': watermark};
+	}
+
+	if (!watermark.text) { // empty watermark text
+		return;
+	}
+
+	watermark.font = watermark.font || defaultStyle.font || 'Roboto';
+	watermark.color = watermark.color || 'black';
+	watermark.opacity = watermark.opacity || 0.6;
+	watermark.bold = watermark.bold || false;
+	watermark.italics = watermark.italics || false;
+
+	var watermarkObject = {
+		text: watermark.text,
+		font: fontProvider.provideFont(watermark.font, watermark.bold, watermark.italics),
+		size: getSize(this.pageSize, watermark, fontProvider),
+		color: watermark.color,
+		opacity: watermark.opacity
+	};
+
+	var pages = this.writer.context().pages;
+	for (var i = 0, l = pages.length; i < l; i++) {
+		pages[i].watermark = watermarkObject;
+	}
+
+	function getSize(pageSize, watermark, fontProvider) {
+		var width = pageSize.width;
+		var height = pageSize.height;
+		var targetWidth = Math.sqrt(width * width + height * height) * 0.8; /* page diagonal * sample factor */
+		var textTools = new TextTools(fontProvider);
+		var styleContextStack = new StyleContextStack(null, {font: watermark.font, bold: watermark.bold, italics: watermark.italics});
+		var size;
+
+		/**
+		 * Binary search the best font size.
+		 * Initial bounds [0, 1000]
+		 * Break when range < 1
+		 */
+		var a = 0;
+		var b = 1000;
+		var c = (a + b) / 2;
+		while (Math.abs(a - b) > 1) {
+			styleContextStack.push({
+				fontSize: c
+			});
+			size = textTools.sizeOfString(watermark.text, styleContextStack);
+			if (size.width > targetWidth) {
+				b = c;
+				c = (a + b) / 2;
+			} else if (size.width < targetWidth) {
+				a = c;
+				c = (a + b) / 2;
+			}
+			styleContextStack.pop();
+		}
+		/*
+		 End binary search
+		 */
+		return {size: size, fontSize: c};
+	}
+};
+
+function decorateNode(node) {
+	var x = node.x, y = node.y;
+	node.positions = [];
+
+	if (isArray(node.canvas)) {
+		node.canvas.forEach(function (vector) {
+			var x = vector.x, y = vector.y, x1 = vector.x1, y1 = vector.y1, x2 = vector.x2, y2 = vector.y2;
+			vector.resetXY = function () {
+				vector.x = x;
+				vector.y = y;
+				vector.x1 = x1;
+				vector.y1 = y1;
+				vector.x2 = x2;
+				vector.y2 = y2;
+			};
+		});
+	}
+
+	node.resetXY = function () {
+		node.x = x;
+		node.y = y;
+		if (isArray(node.canvas)) {
+			node.canvas.forEach(function (vector) {
+				vector.resetXY();
+			});
+		}
+	};
+}
+
+LayoutBuilder.prototype.processNode = function (node) {
+	var self = this;
+
+	this.linearNodeList.push(node);
+	decorateNode(node);
+
+	applyMargins(function () {
+		var unbreakable = node.unbreakable;
+		if (unbreakable) {
+			self.writer.beginUnbreakableBlock();
+		}
+
+		var absPosition = node.absolutePosition;
+		if (absPosition) {
+			self.writer.context().beginDetachedBlock();
+			self.writer.context().moveTo(absPosition.x || 0, absPosition.y || 0);
+		}
+
+		var relPosition = node.relativePosition;
+		if (relPosition) {
+			self.writer.context().beginDetachedBlock();
+			self.writer.context().moveTo((relPosition.x || 0) + self.writer.context().x, (relPosition.y || 0) + self.writer.context().y);
+		}
+
+		if (node.stack) {
+			self.processVerticalContainer(node);
+		} else if (node.columns) {
+			self.processColumns(node);
+		} else if (node.ul) {
+			self.processList(false, node);
+		} else if (node.ol) {
+			self.processList(true, node);
+		} else if (node.table) {
+			self.processTable(node);
+		} else if (node.text !== undefined) {
+			self.processLeaf(node);
+		} else if (node.toc) {
+			self.processToc(node);
+		} else if (node.image) {
+			self.processImage(node);
+		} else if (node.canvas) {
+			self.processCanvas(node);
+		} else if (node.qr) {
+			self.processQr(node);
+		} else if (!node._span) {
+			throw 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);
+		}
+
+		if (absPosition || relPosition) {
+			self.writer.context().endDetachedBlock();
+		}
+
+		if (unbreakable) {
+			self.writer.commitUnbreakableBlock();
+		}
+	});
+
+	function applyMargins(callback) {
+		var margin = node._margin;
+
+		if (node.pageBreak === 'before') {
+			self.writer.moveToNextPage(node.pageOrientation);
+		}
+
+		if (margin) {
+			self.writer.context().moveDown(margin[1]);
+			self.writer.context().addMargin(margin[0], margin[2]);
+		}
+
+		callback();
+
+		if (margin) {
+			self.writer.context().addMargin(-margin[0], -margin[2]);
+			self.writer.context().moveDown(margin[3]);
+		}
+
+		if (node.pageBreak === 'after') {
+			self.writer.moveToNextPage(node.pageOrientation);
+		}
+	}
+};
+
+// vertical container
+LayoutBuilder.prototype.processVerticalContainer = function (node) {
+	var self = this;
+	node.stack.forEach(function (item) {
+		self.processNode(item);
+		addAll(node.positions, item.positions);
+
+		//TODO: paragraph gap
+	});
+};
+
+// columns
+LayoutBuilder.prototype.processColumns = function (columnNode) {
+	var columns = columnNode.columns;
+	var availableWidth = this.writer.context().availableWidth;
+	var gaps = gapArray(columnNode._gap);
+
+	if (gaps) {
+		availableWidth -= (gaps.length - 1) * columnNode._gap;
+	}
+
+	ColumnCalculator.buildColumnWidths(columns, availableWidth);
+	var result = this.processRow(columns, columns, gaps);
+	addAll(columnNode.positions, result.positions);
+
+
+	function gapArray(gap) {
+		if (!gap) {
+			return null;
+		}
+
+		var gaps = [];
+		gaps.push(0);
+
+		for (var i = columns.length - 1; i > 0; i--) {
+			gaps.push(gap);
+		}
+
+		return gaps;
+	}
+};
+
+LayoutBuilder.prototype.processRow = function (columns, widths, gaps, tableBody, tableRow, height) {
+	var self = this;
+	var pageBreaks = [], positions = [];
+
+	this.tracker.auto('pageChanged', storePageBreakData, function () {
+		widths = widths || columns;
+
+		self.writer.context().beginColumnGroup();
+
+		for (var i = 0, l = columns.length; i < l; i++) {
+			var column = columns[i];
+			var width = widths[i]._calcWidth;
+			var leftOffset = colLeftOffset(i);
+
+			if (column.colSpan && column.colSpan > 1) {
+				for (var j = 1; j < column.colSpan; j++) {
+					width += widths[++i]._calcWidth + gaps[i];
+				}
+			}
+
+			self.writer.context().beginColumn(width, leftOffset, getEndingCell(column, i));
+			if (!column._span) {
+				self.processNode(column);
+				addAll(positions, column.positions);
+			} else if (column._columnEndingContext) {
+				// row-span ending
+				self.writer.context().markEnding(column);
+			}
+		}
+
+		self.writer.context().completeColumnGroup(height);
+	});
+
+	return {pageBreaks: pageBreaks, positions: positions};
+
+	function storePageBreakData(data) {
+		var pageDesc;
+
+		for (var i = 0, l = pageBreaks.length; i < l; i++) {
+			var desc = pageBreaks[i];
+			if (desc.prevPage === data.prevPage) {
+				pageDesc = desc;
+				break;
+			}
+		}
+
+		if (!pageDesc) {
+			pageDesc = data;
+			pageBreaks.push(pageDesc);
+		}
+		pageDesc.prevY = Math.max(pageDesc.prevY, data.prevY);
+		pageDesc.y = Math.min(pageDesc.y, data.y);
+	}
+
+	function colLeftOffset(i) {
+		if (gaps && gaps.length > i) {
+			return gaps[i];
+		}
+		return 0;
+	}
+
+	function getEndingCell(column, columnIndex) {
+		if (column.rowSpan && column.rowSpan > 1) {
+			var endingRow = tableRow + column.rowSpan - 1;
+			if (endingRow >= tableBody.length) {
+				throw 'Row span for column ' + columnIndex + ' (with indexes starting from 0) exceeded row count';
+			}
+			return tableBody[endingRow][columnIndex];
+		}
+
+		return null;
+	}
+};
+
+// lists
+LayoutBuilder.prototype.processList = function (orderedList, node) {
+	var self = this,
+		items = orderedList ? node.ol : node.ul,
+		gapSize = node._gapSize;
+
+	this.writer.context().addMargin(gapSize.width);
+
+	var nextMarker;
+	this.tracker.auto('lineAdded', addMarkerToFirstLeaf, function () {
+		items.forEach(function (item) {
+			nextMarker = item.listMarker;
+			self.processNode(item);
+			addAll(node.positions, item.positions);
+		});
+	});
+
+	this.writer.context().addMargin(-gapSize.width);
+
+	function addMarkerToFirstLeaf(line) {
+		// I'm not very happy with the way list processing is implemented
+		// (both code and algorithm should be rethinked)
+		if (nextMarker) {
+			var marker = nextMarker;
+			nextMarker = null;
+
+			if (marker.canvas) {
+				var vector = marker.canvas[0];
+
+				offsetVector(vector, -marker._minWidth, 0);
+				self.writer.addVector(vector);
+			} else if (marker._inlines) {
+				var markerLine = new Line(self.pageSize.width);
+				markerLine.addInline(marker._inlines[0]);
+				markerLine.x = -marker._minWidth;
+				markerLine.y = line.getAscenderHeight() - markerLine.getAscenderHeight();
+				self.writer.addLine(markerLine, true);
+			}
+		}
+	}
+};
+
+// tables
+LayoutBuilder.prototype.processTable = function (tableNode) {
+	var processor = new TableProcessor(tableNode);
+
+	processor.beginTable(this.writer);
+
+	var rowHeights = tableNode.table.heights;
+	for (var i = 0, l = tableNode.table.body.length; i < l; i++) {
+		processor.beginRow(i, this.writer);
+
+		var height;
+		if (isFunction(rowHeights)) {
+			height = rowHeights(i);
+		} else if (isArray(rowHeights)) {
+			height = rowHeights[i];
+		} else {
+			height = rowHeights;
+		}
+
+		if (height === 'auto') {
+			height = undefined;
+		}
+
+		var result = this.processRow(tableNode.table.body[i], tableNode.table.widths, tableNode._offsets.offsets, tableNode.table.body, i, height);
+		addAll(tableNode.positions, result.positions);
+
+		processor.endRow(i, this.writer, result.pageBreaks);
+	}
+
+	processor.endTable(this.writer);
+};
+
+// leafs (texts)
+LayoutBuilder.prototype.processLeaf = function (node) {
+	var line = this.buildNextLine(node);
+	var currentHeight = (line) ? line.getHeight() : 0;
+	var maxHeight = node.maxHeight || -1;
+
+	if (node._tocItemRef) {
+		line._pageNodeRef = node._tocItemRef;
+	}
+
+	if (node._pageRef) {
+		line._pageNodeRef = node._pageRef._nodeRef;
+	}
+
+	while (line && (maxHeight === -1 || currentHeight < maxHeight)) {
+		var positions = this.writer.addLine(line);
+		node.positions.push(positions);
+		line = this.buildNextLine(node);
+		if (line) {
+			currentHeight += line.getHeight();
+		}
+	}
+};
+
+LayoutBuilder.prototype.processToc = function (node) {
+	if (node.toc.title) {
+		this.processNode(node.toc.title);
+	}
+	this.processNode(node.toc._table);
+};
+
+LayoutBuilder.prototype.buildNextLine = function (textNode) {
+
+	function cloneInline(inline) {
+		var newInline = inline.constructor();
+		for (var key in inline) {
+			newInline[key] = inline[key];
+		}
+		return newInline;
+	}
+
+	if (!textNode._inlines || textNode._inlines.length === 0) {
+		return null;
+	}
+
+	var line = new Line(this.writer.context().availableWidth);
+	var textTools = new TextTools(null);
+
+	while (textNode._inlines && textNode._inlines.length > 0 && line.hasEnoughSpaceForInline(textNode._inlines[0])) {
+		var inline = textNode._inlines.shift();
+
+		if (!inline.noWrap && inline.text.length > 1 && inline.width > line.maxWidth) {
+			var widthPerChar = inline.width / inline.text.length;
+			var maxChars = Math.floor(line.maxWidth / widthPerChar);
+			if (maxChars < 1) {
+				maxChars = 1;
+			}
+			if (maxChars < inline.text.length) {
+				var newInline = cloneInline(inline);
+
+				newInline.text = inline.text.substr(maxChars);
+				inline.text = inline.text.substr(0, maxChars);
+
+				newInline.width = textTools.widthOfString(newInline.text, newInline.font, newInline.fontSize, newInline.characterSpacing, newInline.fontFeatures);
+				inline.width = textTools.widthOfString(inline.text, inline.font, inline.fontSize, inline.characterSpacing, inline.fontFeatures);
+
+				textNode._inlines.unshift(newInline);
+			}
+		}
+
+		line.addInline(inline);
+	}
+
+	line.lastLineInParagraph = textNode._inlines.length === 0;
+
+	return line;
+};
+
+// images
+LayoutBuilder.prototype.processImage = function (node) {
+	var position = this.writer.addImage(node);
+	node.positions.push(position);
+};
+
+LayoutBuilder.prototype.processCanvas = function (node) {
+	var height = node._minHeight;
+
+	if (node.absolutePosition === undefined && this.writer.context().availableHeight < height) {
+		// TODO: support for canvas larger than a page
+		// TODO: support for other overflow methods
+
+		this.writer.moveToNextPage();
+	}
+
+	this.writer.alignCanvas(node);
+
+	node.canvas.forEach(function (vector) {
+		var position = this.writer.addVector(vector);
+		node.positions.push(position);
+	}, this);
+
+	this.writer.context().moveDown(height);
+};
+
+LayoutBuilder.prototype.processQr = function (node) {
+	var position = this.writer.addQr(node);
+	node.positions.push(position);
+};
+
+module.exports = LayoutBuilder;
+
+
+/***/ }),
+/* 129 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer) {
+
+var isString = __webpack_require__(0).isString;
+var isNumber = __webpack_require__(0).isNumber;
+var isBoolean = __webpack_require__(0).isBoolean;
+var isArray = __webpack_require__(0).isArray;
+var isUndefined = __webpack_require__(0).isUndefined;
+var fontStringify = __webpack_require__(0).fontStringify;
+
+function DocPreprocessor() {
+
+}
+
+DocPreprocessor.prototype.preprocessDocument = function (docStructure) {
+	this.tocs = [];
+	this.nodeReferences = [];
+	return this.preprocessNode(docStructure);
+};
+
+DocPreprocessor.prototype.preprocessNode = function (node) {
+	// expand shortcuts and casting values
+	if (isArray(node)) {
+		node = {stack: node};
+	} else if (isString(node)) {
+		node = {text: node};
+	} else if (isNumber(node) || isBoolean(node)) {
+		node = {text: node.toString()};
+	} else if (node === null) {
+		node = {text: ''};
+	} else if (Object.keys(node).length === 0) { // empty object
+		node = {text: ''};
+	}
+
+	if (node.columns) {
+		return this.preprocessColumns(node);
+	} else if (node.stack) {
+		return this.preprocessVerticalContainer(node);
+	} else if (node.ul) {
+		return this.preprocessList(node);
+	} else if (node.ol) {
+		return this.preprocessList(node);
+	} else if (node.table) {
+		return this.preprocessTable(node);
+	} else if (node.text !== undefined) {
+		return this.preprocessText(node);
+	} else if (node.toc) {
+		return this.preprocessToc(node);
+	} else if (node.image) {
+		return this.preprocessImage(node);
+	} else if (node.canvas) {
+		return this.preprocessCanvas(node);
+	} else if (node.qr) {
+		return this.preprocessQr(node);
+	} else if (node.pageReference || node.textReference) {
+		return this.preprocessText(node);
+	} else {
+		throw 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);
+	}
+};
+
+DocPreprocessor.prototype.preprocessColumns = function (node) {
+	var columns = node.columns;
+
+	for (var i = 0, l = columns.length; i < l; i++) {
+		columns[i] = this.preprocessNode(columns[i]);
+	}
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessVerticalContainer = function (node) {
+	var items = node.stack;
+
+	for (var i = 0, l = items.length; i < l; i++) {
+		items[i] = this.preprocessNode(items[i]);
+	}
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessList = function (node) {
+	var items = node.ul || node.ol;
+
+	for (var i = 0, l = items.length; i < l; i++) {
+		items[i] = this.preprocessNode(items[i]);
+	}
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessTable = function (node) {
+	var col, row, cols, rows;
+
+	for (col = 0, cols = node.table.body[0].length; col < cols; col++) {
+		for (row = 0, rows = node.table.body.length; row < rows; row++) {
+			var rowData = node.table.body[row];
+			var data = rowData[col];
+			if (data !== undefined) {
+				if (data === null) { // transform to object
+					data = '';
+				}
+				if (!data._span) {
+					rowData[col] = this.preprocessNode(data);
+				}
+			}
+		}
+	}
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessText = function (node) {
+	if (node.tocItem) {
+		if (!isArray(node.tocItem)) {
+			node.tocItem = [node.tocItem];
+		}
+
+		for (var i = 0, l = node.tocItem.length; i < l; i++) {
+			if (!isString(node.tocItem[i])) {
+				node.tocItem[i] = '_default_';
+			}
+
+			var tocItemId = node.tocItem[i];
+
+			if (!this.tocs[tocItemId]) {
+				this.tocs[tocItemId] = {toc: {_items: [], _pseudo: true}};
+			}
+
+			this.tocs[tocItemId].toc._items.push(node);
+		}
+	}
+
+	if (node.id) {
+		if (this.nodeReferences[node.id]) {
+			if (!this.nodeReferences[node.id]._pseudo) {
+				throw "Node id '" + node.id + "' already exists";
+			}
+
+			this.nodeReferences[node.id]._nodeRef = node;
+			this.nodeReferences[node.id]._pseudo = false;
+		} else {
+			this.nodeReferences[node.id] = {_nodeRef: node};
+		}
+	}
+
+	if (node.pageReference) {
+		if (!this.nodeReferences[node.pageReference]) {
+			this.nodeReferences[node.pageReference] = {_nodeRef: {}, _pseudo: true};
+		}
+		node.text = '00000';
+		node._pageRef = this.nodeReferences[node.pageReference];
+	}
+
+	if (node.textReference) {
+		if (!this.nodeReferences[node.textReference]) {
+			this.nodeReferences[node.textReference] = {_nodeRef: {}, _pseudo: true};
+		}
+
+		node.text = '';
+		node._textRef = this.nodeReferences[node.textReference];
+	}
+
+	if (node.text && node.text.text) {
+		node.text = [this.preprocessNode(node.text)];
+	}
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessToc = function (node) {
+	if (!node.toc.id) {
+		node.toc.id = '_default_';
+	}
+
+	node.toc.title = node.toc.title ? this.preprocessNode(node.toc.title) : null;
+	node.toc._items = [];
+
+	if (this.tocs[node.toc.id]) {
+		if (!this.tocs[node.toc.id].toc._pseudo) {
+			throw "TOC '" + node.toc.id + "' already exists";
+		}
+
+		node.toc._items = this.tocs[node.toc.id].toc._items;
+	}
+
+	this.tocs[node.toc.id] = node;
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessImage = function (node) {
+	if (!isUndefined(node.image.type) && !isUndefined(node.image.data) && (node.image.type === 'Buffer') && isArray(node.image.data)) {
+		node.image = Buffer.from(node.image.data);
+	}
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessCanvas = function (node) {
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessQr = function (node) {
+	return node;
+};
+
+module.exports = DocPreprocessor;
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 130 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/*eslint no-unused-vars: ["error", {"args": "none"}]*/
+
+
+
+var TextTools = __webpack_require__(42);
+var StyleContextStack = __webpack_require__(80);
+var ColumnCalculator = __webpack_require__(44);
+var isString = __webpack_require__(0).isString;
+var isNumber = __webpack_require__(0).isNumber;
+var isObject = __webpack_require__(0).isObject;
+var isArray = __webpack_require__(0).isArray;
+var fontStringify = __webpack_require__(0).fontStringify;
+var pack = __webpack_require__(0).pack;
+var qrEncoder = __webpack_require__(134);
+
+/**
+ * @private
+ */
+function DocMeasure(fontProvider, styleDictionary, defaultStyle, imageMeasure, tableLayouts, images) {
+	this.textTools = new TextTools(fontProvider);
+	this.styleStack = new StyleContextStack(styleDictionary, defaultStyle);
+	this.imageMeasure = imageMeasure;
+	this.tableLayouts = tableLayouts;
+	this.images = images;
+	this.autoImageIndex = 1;
+}
+
+/**
+ * Measures all nodes and sets min/max-width properties required for the second
+ * layout-pass.
+ * @param  {Object} docStructure document-definition-object
+ * @return {Object}              document-measurement-object
+ */
+DocMeasure.prototype.measureDocument = function (docStructure) {
+	return this.measureNode(docStructure);
+};
+
+DocMeasure.prototype.measureNode = function (node) {
+
+	var self = this;
+
+	return this.styleStack.auto(node, function () {
+		// TODO: refactor + rethink whether this is the proper way to handle margins
+		node._margin = getNodeMargin(node);
+
+		if (node.columns) {
+			return extendMargins(self.measureColumns(node));
+		} else if (node.stack) {
+			return extendMargins(self.measureVerticalContainer(node));
+		} else if (node.ul) {
+			return extendMargins(self.measureUnorderedList(node));
+		} else if (node.ol) {
+			return extendMargins(self.measureOrderedList(node));
+		} else if (node.table) {
+			return extendMargins(self.measureTable(node));
+		} else if (node.text !== undefined) {
+			return extendMargins(self.measureLeaf(node));
+		} else if (node.toc) {
+			return extendMargins(self.measureToc(node));
+		} else if (node.image) {
+			return extendMargins(self.measureImage(node));
+		} else if (node.canvas) {
+			return extendMargins(self.measureCanvas(node));
+		} else if (node.qr) {
+			return extendMargins(self.measureQr(node));
+		} else {
+			throw 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);
+		}
+	});
+
+	function extendMargins(node) {
+		var margin = node._margin;
+
+		if (margin) {
+			node._minWidth += margin[0] + margin[2];
+			node._maxWidth += margin[0] + margin[2];
+		}
+
+		return node;
+	}
+
+	function getNodeMargin() {
+
+		function processSingleMargins(node, currentMargin) {
+			if (node.marginLeft || node.marginTop || node.marginRight || node.marginBottom) {
+				return [
+					node.marginLeft || currentMargin[0] || 0,
+					node.marginTop || currentMargin[1] || 0,
+					node.marginRight || currentMargin[2] || 0,
+					node.marginBottom || currentMargin[3] || 0
+				];
+			}
+			return currentMargin;
+		}
+
+		function flattenStyleArray(styleArray) {
+			var flattenedStyles = {};
+			for (var i = styleArray.length - 1; i >= 0; i--) {
+				var styleName = styleArray[i];
+				var style = self.styleStack.styleDictionary[styleName];
+				for (var key in style) {
+					if (style.hasOwnProperty(key)) {
+						flattenedStyles[key] = style[key];
+					}
+				}
+			}
+			return flattenedStyles;
+		}
+
+		function convertMargin(margin) {
+			if (isNumber(margin)) {
+				margin = [margin, margin, margin, margin];
+			} else if (isArray(margin)) {
+				if (margin.length === 2) {
+					margin = [margin[0], margin[1], margin[0], margin[1]];
+				}
+			}
+			return margin;
+		}
+
+		var margin = [undefined, undefined, undefined, undefined];
+
+		if (node.style) {
+			var styleArray = isArray(node.style) ? node.style : [node.style];
+			var flattenedStyleArray = flattenStyleArray(styleArray);
+
+			if (flattenedStyleArray) {
+				margin = processSingleMargins(flattenedStyleArray, margin);
+			}
+
+			if (flattenedStyleArray.margin) {
+				margin = convertMargin(flattenedStyleArray.margin);
+			}
+		}
+
+		margin = processSingleMargins(node, margin);
+
+		if (node.margin) {
+			margin = convertMargin(node.margin);
+		}
+
+		if (margin[0] === undefined && margin[1] === undefined && margin[2] === undefined && margin[3] === undefined) {
+			return null;
+		} else {
+			return margin;
+		}
+	}
+};
+
+DocMeasure.prototype.convertIfBase64Image = function (node) {
+	if (/^data:image\/(jpeg|jpg|png);base64,/.test(node.image)) {
+		var label = '$$pdfmake$$' + this.autoImageIndex++;
+		this.images[label] = node.image;
+		node.image = label;
+	}
+};
+
+DocMeasure.prototype.measureImage = function (node) {
+	if (this.images) {
+		this.convertIfBase64Image(node);
+	}
+
+	var imageSize = this.imageMeasure.measureImage(node.image);
+
+	if (node.fit) {
+		var factor = (imageSize.width / imageSize.height > node.fit[0] / node.fit[1]) ? node.fit[0] / imageSize.width : node.fit[1] / imageSize.height;
+		node._width = node._minWidth = node._maxWidth = imageSize.width * factor;
+		node._height = imageSize.height * factor;
+	} else {
+		node._width = node._minWidth = node._maxWidth = node.width || imageSize.width;
+		node._height = node.height || (imageSize.height * node._width / imageSize.width);
+
+		if (isNumber(node.maxWidth) && node.maxWidth < node._width) {
+			node._width = node._minWidth = node._maxWidth = node.maxWidth;
+			node._height = node._width * imageSize.height / imageSize.width;
+		}
+
+		if (isNumber(node.maxHeight) && node.maxHeight < node._height) {
+			node._height = node.maxHeight;
+			node._width = node._minWidth = node._maxWidth = node._height * imageSize.width / imageSize.height;
+		}
+
+		if (isNumber(node.minWidth) && node.minWidth > node._width) {
+			node._width = node._minWidth = node._maxWidth = node.minWidth;
+			node._height = node._width * imageSize.height / imageSize.width;
+		}
+
+		if (isNumber(node.minHeight) && node.minHeight > node._height) {
+			node._height = node.minHeight;
+			node._width = node._minWidth = node._maxWidth = node._height * imageSize.width / imageSize.height;
+		}
+	}
+
+	node._alignment = this.styleStack.getProperty('alignment');
+	return node;
+};
+
+DocMeasure.prototype.measureLeaf = function (node) {
+
+	if (node._textRef && node._textRef._nodeRef.text) {
+		node.text = node._textRef._nodeRef.text;
+	}
+
+	// Make sure style properties of the node itself are considered when building inlines.
+	// We could also just pass [node] to buildInlines, but that fails for bullet points.
+	var styleStack = this.styleStack.clone();
+	styleStack.push(node);
+
+	var data = this.textTools.buildInlines(node.text, styleStack);
+
+	node._inlines = data.items;
+	node._minWidth = data.minWidth;
+	node._maxWidth = data.maxWidth;
+
+	return node;
+};
+
+DocMeasure.prototype.measureToc = function (node) {
+	if (node.toc.title) {
+		node.toc.title = this.measureNode(node.toc.title);
+	}
+
+	var body = [];
+	var textStyle = node.toc.textStyle || {};
+	var numberStyle = node.toc.numberStyle || textStyle;
+	var textMargin = node.toc.textMargin || [0, 0, 0, 0];
+	for (var i = 0, l = node.toc._items.length; i < l; i++) {
+		var item = node.toc._items[i];
+		var lineStyle = node.toc._items[i].tocStyle || textStyle;
+		var lineMargin = node.toc._items[i].tocMargin || textMargin;
+		body.push([
+			{text: item.text, alignment: 'left', style: lineStyle, margin: lineMargin},
+			{text: '00000', alignment: 'right', _tocItemRef: item, style: numberStyle, margin: [0, lineMargin[1], 0, lineMargin[3]]}
+		]);
+	}
+
+
+	node.toc._table = {
+		table: {
+			dontBreakRows: true,
+			widths: ['*', 'auto'],
+			body: body
+		},
+		layout: 'noBorders'
+	};
+
+	node.toc._table = this.measureNode(node.toc._table);
+
+	return node;
+};
+
+DocMeasure.prototype.measureVerticalContainer = function (node) {
+	var items = node.stack;
+
+	node._minWidth = 0;
+	node._maxWidth = 0;
+
+	for (var i = 0, l = items.length; i < l; i++) {
+		items[i] = this.measureNode(items[i]);
+
+		node._minWidth = Math.max(node._minWidth, items[i]._minWidth);
+		node._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth);
+	}
+
+	return node;
+};
+
+DocMeasure.prototype.gapSizeForList = function () {
+	return this.textTools.sizeOfString('9. ', this.styleStack);
+};
+
+DocMeasure.prototype.buildUnorderedMarker = function (styleStack, gapSize, type) {
+	function buildDisc(gapSize, color) {
+		// TODO: ascender-based calculations
+		var radius = gapSize.fontSize / 6;
+		return {
+			canvas: [{
+					x: radius,
+					y: (gapSize.height / gapSize.lineHeight) + gapSize.descender - gapSize.fontSize / 3,
+					r1: radius,
+					r2: radius,
+					type: 'ellipse',
+					color: color
+				}]
+		};
+	}
+
+	function buildSquare(gapSize, color) {
+		// TODO: ascender-based calculations
+		var size = gapSize.fontSize / 3;
+		return {
+			canvas: [{
+					x: 0,
+					y: (gapSize.height / gapSize.lineHeight) + gapSize.descender - (gapSize.fontSize / 3) - (size / 2),
+					h: size,
+					w: size,
+					type: 'rect',
+					color: color
+				}]
+		};
+	}
+
+	function buildCircle(gapSize, color) {
+		// TODO: ascender-based calculations
+		var radius = gapSize.fontSize / 6;
+		return {
+			canvas: [{
+					x: radius,
+					y: (gapSize.height / gapSize.lineHeight) + gapSize.descender - gapSize.fontSize / 3,
+					r1: radius,
+					r2: radius,
+					type: 'ellipse',
+					lineColor: color
+				}]
+		};
+	}
+
+	var marker;
+	var color = styleStack.getProperty('markerColor') || styleStack.getProperty('color') || 'black';
+
+	switch (type) {
+		case 'circle':
+			marker = buildCircle(gapSize, color);
+			break;
+
+		case 'square':
+			marker = buildSquare(gapSize, color);
+			break;
+
+		case 'none':
+			marker = {};
+			break;
+
+		case 'disc':
+		default:
+			marker = buildDisc(gapSize, color);
+			break;
+	}
+
+	marker._minWidth = marker._maxWidth = gapSize.width;
+	marker._minHeight = marker._maxHeight = gapSize.height;
+
+	return marker;
+};
+
+DocMeasure.prototype.buildOrderedMarker = function (counter, styleStack, type, separator) {
+	function prepareAlpha(counter) {
+		function toAlpha(num) {
+			return (num >= 26 ? toAlpha((num / 26 >> 0) - 1) : '') + 'abcdefghijklmnopqrstuvwxyz'[num % 26 >> 0];
+		}
+
+		if (counter < 1) {
+			return counter.toString();
+		}
+
+		return toAlpha(counter - 1);
+	}
+
+	function prepareRoman(counter) {
+		if (counter < 1 || counter > 4999) {
+			return counter.toString();
+		}
+		var num = counter;
+		var lookup = {M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1}, roman = '', i;
+		for (i in lookup) {
+			while (num >= lookup[i]) {
+				roman += i;
+				num -= lookup[i];
+			}
+		}
+		return roman;
+	}
+
+	function prepareDecimal(counter) {
+		return counter.toString();
+	}
+
+	var counterText;
+	switch (type) {
+		case 'none':
+			counterText = null;
+			break;
+
+		case 'upper-alpha':
+			counterText = prepareAlpha(counter).toUpperCase();
+			break;
+
+		case 'lower-alpha':
+			counterText = prepareAlpha(counter);
+			break;
+
+		case 'upper-roman':
+			counterText = prepareRoman(counter);
+			break;
+
+		case 'lower-roman':
+			counterText = prepareRoman(counter).toLowerCase();
+			break;
+
+		case 'decimal':
+		default:
+			counterText = prepareDecimal(counter);
+			break;
+	}
+
+	if (counterText === null) {
+		return {};
+	}
+
+	if (separator) {
+		if (isArray(separator)) {
+			if (separator[0]) {
+				counterText = separator[0] + counterText;
+			}
+
+			if (separator[1]) {
+				counterText += separator[1];
+			}
+			counterText += ' ';
+		} else {
+			counterText += separator + ' ';
+		}
+	}
+
+	var textArray = {text: counterText};
+	var markerColor = styleStack.getProperty('markerColor');
+	if (markerColor) {
+		textArray.color = markerColor;
+	}
+
+	return {_inlines: this.textTools.buildInlines(textArray, styleStack).items};
+};
+
+DocMeasure.prototype.measureUnorderedList = function (node) {
+	var style = this.styleStack.clone();
+	var items = node.ul;
+	node.type = node.type || 'disc';
+	node._gapSize = this.gapSizeForList();
+	node._minWidth = 0;
+	node._maxWidth = 0;
+
+	for (var i = 0, l = items.length; i < l; i++) {
+		var item = items[i] = this.measureNode(items[i]);
+
+		if (!item.ol && !item.ul) {
+			item.listMarker = this.buildUnorderedMarker(style, node._gapSize, item.listType || node.type);
+		}
+
+		node._minWidth = Math.max(node._minWidth, items[i]._minWidth + node._gapSize.width);
+		node._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth + node._gapSize.width);
+	}
+
+	return node;
+};
+
+DocMeasure.prototype.measureOrderedList = function (node) {
+	var style = this.styleStack.clone();
+	var items = node.ol;
+	node.type = node.type || 'decimal';
+	node.separator = node.separator || '.';
+	node.reversed = node.reversed || false;
+	if (!node.start) {
+		node.start = node.reversed ? items.length : 1;
+	}
+	node._gapSize = this.gapSizeForList();
+	node._minWidth = 0;
+	node._maxWidth = 0;
+
+	var counter = node.start;
+	for (var i = 0, l = items.length; i < l; i++) {
+		var item = items[i] = this.measureNode(items[i]);
+
+		if (!item.ol && !item.ul) {
+			item.listMarker = this.buildOrderedMarker(item.counter || counter, style, item.listType || node.type, node.separator);
+			if (item.listMarker._inlines) {
+				node._gapSize.width = Math.max(node._gapSize.width, item.listMarker._inlines[0].width);
+			}
+		}  // TODO: else - nested lists numbering
+
+		node._minWidth = Math.max(node._minWidth, items[i]._minWidth);
+		node._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth);
+
+		if (node.reversed) {
+			counter--;
+		} else {
+			counter++;
+		}
+	}
+
+	node._minWidth += node._gapSize.width;
+	node._maxWidth += node._gapSize.width;
+
+	for (var i = 0, l = items.length; i < l; i++) {
+		var item = items[i];
+		if (!item.ol && !item.ul) {
+			item.listMarker._minWidth = item.listMarker._maxWidth = node._gapSize.width;
+		}
+	}
+
+	return node;
+};
+
+DocMeasure.prototype.measureColumns = function (node) {
+	var columns = node.columns;
+	node._gap = this.styleStack.getProperty('columnGap') || 0;
+
+	for (var i = 0, l = columns.length; i < l; i++) {
+		columns[i] = this.measureNode(columns[i]);
+	}
+
+	var measures = ColumnCalculator.measureMinMax(columns);
+
+	var numGaps = (columns.length > 0) ? (columns.length - 1) : 0;
+	node._minWidth = measures.min + node._gap * numGaps;
+	node._maxWidth = measures.max + node._gap * numGaps;
+
+	return node;
+};
+
+DocMeasure.prototype.measureTable = function (node) {
+	extendTableWidths(node);
+	node._layout = getLayout(this.tableLayouts);
+	node._offsets = getOffsets(node._layout);
+
+	var colSpans = [];
+	var col, row, cols, rows;
+
+	for (col = 0, cols = node.table.body[0].length; col < cols; col++) {
+		var c = node.table.widths[col];
+		c._minWidth = 0;
+		c._maxWidth = 0;
+
+		for (row = 0, rows = node.table.body.length; row < rows; row++) {
+			var rowData = node.table.body[row];
+			var data = rowData[col];
+			if (data === undefined) {
+				console.error('Malformed table row ', rowData, 'in node ', node);
+				throw 'Malformed table row, a cell is undefined.';
+			}
+			if (data === null) { // transform to object
+				data = '';
+			}
+
+			if (!data._span) {
+				data = rowData[col] = this.styleStack.auto(data, measureCb(this, data));
+
+				if (data.colSpan && data.colSpan > 1) {
+					markSpans(rowData, col, data.colSpan);
+					colSpans.push({col: col, span: data.colSpan, minWidth: data._minWidth, maxWidth: data._maxWidth});
+				} else {
+					c._minWidth = Math.max(c._minWidth, data._minWidth);
+					c._maxWidth = Math.max(c._maxWidth, data._maxWidth);
+				}
+			}
+
+			if (data.rowSpan && data.rowSpan > 1) {
+				markVSpans(node.table, row, col, data.rowSpan);
+			}
+		}
+	}
+
+	extendWidthsForColSpans();
+
+	var measures = ColumnCalculator.measureMinMax(node.table.widths);
+
+	node._minWidth = measures.min + node._offsets.total;
+	node._maxWidth = measures.max + node._offsets.total;
+
+	return node;
+
+	function measureCb(_this, data) {
+		return function () {
+			if (isObject(data)) {
+				data.fillColor = _this.styleStack.getProperty('fillColor');
+			}
+			return _this.measureNode(data);
+		};
+	}
+
+	function getLayout(tableLayouts) {
+		var layout = node.layout;
+
+		if (isString(layout)) {
+			layout = tableLayouts[layout];
+		}
+
+		var defaultLayout = {
+			hLineWidth: function (i, node) {
+				return 1;
+			},
+			vLineWidth: function (i, node) {
+				return 1;
+			},
+			hLineColor: function (i, node) {
+				return 'black';
+			},
+			vLineColor: function (i, node) {
+				return 'black';
+			},
+			paddingLeft: function (i, node) {
+				return 4;
+			},
+			paddingRight: function (i, node) {
+				return 4;
+			},
+			paddingTop: function (i, node) {
+				return 2;
+			},
+			paddingBottom: function (i, node) {
+				return 2;
+			},
+			fillColor: function (i, node) {
+				return null;
+			},
+			defaultBorder: true
+		};
+
+		return pack(defaultLayout, layout);
+	}
+
+	function getOffsets(layout) {
+		var offsets = [];
+		var totalOffset = 0;
+		var prevRightPadding = 0;
+
+		for (var i = 0, l = node.table.widths.length; i < l; i++) {
+			var lOffset = prevRightPadding + layout.vLineWidth(i, node) + layout.paddingLeft(i, node);
+			offsets.push(lOffset);
+			totalOffset += lOffset;
+			prevRightPadding = layout.paddingRight(i, node);
+		}
+
+		totalOffset += prevRightPadding + layout.vLineWidth(node.table.widths.length, node);
+
+		return {
+			total: totalOffset,
+			offsets: offsets
+		};
+	}
+
+	function extendWidthsForColSpans() {
+		var q, j;
+
+		for (var i = 0, l = colSpans.length; i < l; i++) {
+			var span = colSpans[i];
+
+			var currentMinMax = getMinMax(span.col, span.span, node._offsets);
+			var minDifference = span.minWidth - currentMinMax.minWidth;
+			var maxDifference = span.maxWidth - currentMinMax.maxWidth;
+
+			if (minDifference > 0) {
+				q = minDifference / span.span;
+
+				for (j = 0; j < span.span; j++) {
+					node.table.widths[span.col + j]._minWidth += q;
+				}
+			}
+
+			if (maxDifference > 0) {
+				q = maxDifference / span.span;
+
+				for (j = 0; j < span.span; j++) {
+					node.table.widths[span.col + j]._maxWidth += q;
+				}
+			}
+		}
+	}
+
+	function getMinMax(col, span, offsets) {
+		var result = {minWidth: 0, maxWidth: 0};
+
+		for (var i = 0; i < span; i++) {
+			result.minWidth += node.table.widths[col + i]._minWidth + (i ? offsets.offsets[col + i] : 0);
+			result.maxWidth += node.table.widths[col + i]._maxWidth + (i ? offsets.offsets[col + i] : 0);
+		}
+
+		return result;
+	}
+
+	function markSpans(rowData, col, span) {
+		for (var i = 1; i < span; i++) {
+			rowData[col + i] = {
+				_span: true,
+				_minWidth: 0,
+				_maxWidth: 0,
+				rowSpan: rowData[col].rowSpan
+			};
+		}
+	}
+
+	function markVSpans(table, row, col, span) {
+		for (var i = 1; i < span; i++) {
+			table.body[row + i][col] = {
+				_span: true,
+				_minWidth: 0,
+				_maxWidth: 0,
+				fillColor: table.body[row][col].fillColor
+			};
+		}
+	}
+
+	function extendTableWidths(node) {
+		if (!node.table.widths) {
+			node.table.widths = 'auto';
+		}
+
+		if (isString(node.table.widths)) {
+			node.table.widths = [node.table.widths];
+
+			while (node.table.widths.length < node.table.body[0].length) {
+				node.table.widths.push(node.table.widths[node.table.widths.length - 1]);
+			}
+		}
+
+		for (var i = 0, l = node.table.widths.length; i < l; i++) {
+			var w = node.table.widths[i];
+			if (isNumber(w) || isString(w)) {
+				node.table.widths[i] = {width: w};
+			}
+		}
+	}
+};
+
+DocMeasure.prototype.measureCanvas = function (node) {
+	var w = 0, h = 0;
+
+	for (var i = 0, l = node.canvas.length; i < l; i++) {
+		var vector = node.canvas[i];
+
+		switch (vector.type) {
+			case 'ellipse':
+				w = Math.max(w, vector.x + vector.r1);
+				h = Math.max(h, vector.y + vector.r2);
+				break;
+			case 'rect':
+				w = Math.max(w, vector.x + vector.w);
+				h = Math.max(h, vector.y + vector.h);
+				break;
+			case 'line':
+				w = Math.max(w, vector.x1, vector.x2);
+				h = Math.max(h, vector.y1, vector.y2);
+				break;
+			case 'polyline':
+				for (var i2 = 0, l2 = vector.points.length; i2 < l2; i2++) {
+					w = Math.max(w, vector.points[i2].x);
+					h = Math.max(h, vector.points[i2].y);
+				}
+				break;
+		}
+	}
+
+	node._minWidth = node._maxWidth = w;
+	node._minHeight = node._maxHeight = h;
+	node._alignment = this.styleStack.getProperty('alignment');
+
+	return node;
+};
+
+DocMeasure.prototype.measureQr = function (node) {
+	node = qrEncoder.measure(node);
+	node._alignment = this.styleStack.getProperty('alignment');
+	return node;
+};
+
+module.exports = DocMeasure;
+
+
+/***/ }),
+/* 131 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+
+;(function (exports) {
+	'use strict';
+
+  var Arr = (typeof Uint8Array !== 'undefined')
+    ? Uint8Array
+    : Array
+
+	var PLUS   = '+'.charCodeAt(0)
+	var SLASH  = '/'.charCodeAt(0)
+	var NUMBER = '0'.charCodeAt(0)
+	var LOWER  = 'a'.charCodeAt(0)
+	var UPPER  = 'A'.charCodeAt(0)
+	var PLUS_URL_SAFE = '-'.charCodeAt(0)
+	var SLASH_URL_SAFE = '_'.charCodeAt(0)
+
+	function decode (elt) {
+		var code = elt.charCodeAt(0)
+		if (code === PLUS ||
+		    code === PLUS_URL_SAFE)
+			return 62 // '+'
+		if (code === SLASH ||
+		    code === SLASH_URL_SAFE)
+			return 63 // '/'
+		if (code < NUMBER)
+			return -1 //no match
+		if (code < NUMBER + 10)
+			return code - NUMBER + 26 + 26
+		if (code < UPPER + 26)
+			return code - UPPER
+		if (code < LOWER + 26)
+			return code - LOWER + 26
+	}
+
+	function b64ToByteArray (b64) {
+		var i, j, l, tmp, placeHolders, arr
+
+		if (b64.length % 4 > 0) {
+			throw new Error('Invalid string. Length must be a multiple of 4')
+		}
+
+		// the number of equal signs (place holders)
+		// if there are two placeholders, than the two characters before it
+		// represent one byte
+		// if there is only one, then the three characters before it represent 2 bytes
+		// this is just a cheap hack to not do indexOf twice
+		var len = b64.length
+		placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
+
+		// base64 is 4/3 + up to two characters of the original data
+		arr = new Arr(b64.length * 3 / 4 - placeHolders)
+
+		// if there are placeholders, only get up to the last complete 4 chars
+		l = placeHolders > 0 ? b64.length - 4 : b64.length
+
+		var L = 0
+
+		function push (v) {
+			arr[L++] = v
+		}
+
+		for (i = 0, j = 0; i < l; i += 4, j += 3) {
+			tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
+			push((tmp & 0xFF0000) >> 16)
+			push((tmp & 0xFF00) >> 8)
+			push(tmp & 0xFF)
+		}
+
+		if (placeHolders === 2) {
+			tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
+			push(tmp & 0xFF)
+		} else if (placeHolders === 1) {
+			tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
+			push((tmp >> 8) & 0xFF)
+			push(tmp & 0xFF)
+		}
+
+		return arr
+	}
+
+	function uint8ToBase64 (uint8) {
+		var i,
+			extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
+			output = "",
+			temp, length
+
+		function encode (num) {
+			return lookup.charAt(num)
+		}
+
+		function tripletToBase64 (num) {
+			return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
+		}
+
+		// go through the array every three bytes, we'll deal with trailing stuff later
+		for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
+			temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
+			output += tripletToBase64(temp)
+		}
+
+		// pad the end with zeros, but make sure to not forget the extra bytes
+		switch (extraBytes) {
+			case 1:
+				temp = uint8[uint8.length - 1]
+				output += encode(temp >> 2)
+				output += encode((temp << 4) & 0x3F)
+				output += '=='
+				break
+			case 2:
+				temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
+				output += encode(temp >> 10)
+				output += encode((temp >> 4) & 0x3F)
+				output += encode((temp << 2) & 0x3F)
+				output += '='
+				break
+		}
+
+		return output
+	}
+
+	exports.toByteArray = b64ToByteArray
+	exports.fromByteArray = uint8ToBase64
+}( false ? (this.base64js = {}) : exports))
+
+
+/***/ }),
+/* 132 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var AI, AL, B2, BA, BB, BK, CB, CJ, CL, CM, CP, CR, EX, GL, H2, H3, HL, HY, ID, IN, IS, JL, JT, JV, LF, NL, NS, NU, OP, PO, PR, QU, RI, SA, SG, SP, SY, WJ, XX, ZW;
+
+  exports.OP = OP = 0;
+
+  exports.CL = CL = 1;
+
+  exports.CP = CP = 2;
+
+  exports.QU = QU = 3;
+
+  exports.GL = GL = 4;
+
+  exports.NS = NS = 5;
+
+  exports.EX = EX = 6;
+
+  exports.SY = SY = 7;
+
+  exports.IS = IS = 8;
+
+  exports.PR = PR = 9;
+
+  exports.PO = PO = 10;
+
+  exports.NU = NU = 11;
+
+  exports.AL = AL = 12;
+
+  exports.HL = HL = 13;
+
+  exports.ID = ID = 14;
+
+  exports.IN = IN = 15;
+
+  exports.HY = HY = 16;
+
+  exports.BA = BA = 17;
+
+  exports.BB = BB = 18;
+
+  exports.B2 = B2 = 19;
+
+  exports.ZW = ZW = 20;
+
+  exports.CM = CM = 21;
+
+  exports.WJ = WJ = 22;
+
+  exports.H2 = H2 = 23;
+
+  exports.H3 = H3 = 24;
+
+  exports.JL = JL = 25;
+
+  exports.JV = JV = 26;
+
+  exports.JT = JT = 27;
+
+  exports.RI = RI = 28;
+
+  exports.AI = AI = 29;
+
+  exports.BK = BK = 30;
+
+  exports.CB = CB = 31;
+
+  exports.CJ = CJ = 32;
+
+  exports.CR = CR = 33;
+
+  exports.LF = LF = 34;
+
+  exports.NL = NL = 35;
+
+  exports.SA = SA = 36;
+
+  exports.SG = SG = 37;
+
+  exports.SP = SP = 38;
+
+  exports.XX = XX = 39;
+
+}).call(this);
+
+
+/***/ }),
+/* 133 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var CI_BRK, CP_BRK, DI_BRK, IN_BRK, PR_BRK;
+
+  exports.DI_BRK = DI_BRK = 0;
+
+  exports.IN_BRK = IN_BRK = 1;
+
+  exports.CI_BRK = CI_BRK = 2;
+
+  exports.CP_BRK = CP_BRK = 3;
+
+  exports.PR_BRK = PR_BRK = 4;
+
+  exports.pairTable = [[PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, CP_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK]];
+
+}).call(this);
+
+
+/***/ }),
+/* 134 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/*eslint no-unused-vars: ["error", {"args": "none"}]*/
+/*eslint no-redeclare: "off"*/
+
+
+/* qr.js -- QR code generator in Javascript (revision 2011-01-19)
+ * Written by Kang Seonghoon <public+qrjs@mearie.org>.
+ *
+ * This source code is in the public domain; if your jurisdiction does not
+ * recognize the public domain the terms of Creative Commons CC0 license
+ * apply. In the other words, you can always do what you want.
+ */
+
+
+// per-version information (cf. JIS X 0510:2004 pp. 30--36, 71)
+//
+// [0]: the degree of generator polynomial by ECC levels
+// [1]: # of code blocks by ECC levels
+// [2]: left-top positions of alignment patterns
+//
+// the number in this table (in particular, [0]) does not exactly match with
+// the numbers in the specficiation. see augumenteccs below for the reason.
+var VERSIONS = [
+	null,
+	[[10, 7, 17, 13], [1, 1, 1, 1], []],
+	[[16, 10, 28, 22], [1, 1, 1, 1], [4, 16]],
+	[[26, 15, 22, 18], [1, 1, 2, 2], [4, 20]],
+	[[18, 20, 16, 26], [2, 1, 4, 2], [4, 24]],
+	[[24, 26, 22, 18], [2, 1, 4, 4], [4, 28]],
+	[[16, 18, 28, 24], [4, 2, 4, 4], [4, 32]],
+	[[18, 20, 26, 18], [4, 2, 5, 6], [4, 20, 36]],
+	[[22, 24, 26, 22], [4, 2, 6, 6], [4, 22, 40]],
+	[[22, 30, 24, 20], [5, 2, 8, 8], [4, 24, 44]],
+	[[26, 18, 28, 24], [5, 4, 8, 8], [4, 26, 48]],
+	[[30, 20, 24, 28], [5, 4, 11, 8], [4, 28, 52]],
+	[[22, 24, 28, 26], [8, 4, 11, 10], [4, 30, 56]],
+	[[22, 26, 22, 24], [9, 4, 16, 12], [4, 32, 60]],
+	[[24, 30, 24, 20], [9, 4, 16, 16], [4, 24, 44, 64]],
+	[[24, 22, 24, 30], [10, 6, 18, 12], [4, 24, 46, 68]],
+	[[28, 24, 30, 24], [10, 6, 16, 17], [4, 24, 48, 72]],
+	[[28, 28, 28, 28], [11, 6, 19, 16], [4, 28, 52, 76]],
+	[[26, 30, 28, 28], [13, 6, 21, 18], [4, 28, 54, 80]],
+	[[26, 28, 26, 26], [14, 7, 25, 21], [4, 28, 56, 84]],
+	[[26, 28, 28, 30], [16, 8, 25, 20], [4, 32, 60, 88]],
+	[[26, 28, 30, 28], [17, 8, 25, 23], [4, 26, 48, 70, 92]],
+	[[28, 28, 24, 30], [17, 9, 34, 23], [4, 24, 48, 72, 96]],
+	[[28, 30, 30, 30], [18, 9, 30, 25], [4, 28, 52, 76, 100]],
+	[[28, 30, 30, 30], [20, 10, 32, 27], [4, 26, 52, 78, 104]],
+	[[28, 26, 30, 30], [21, 12, 35, 29], [4, 30, 56, 82, 108]],
+	[[28, 28, 30, 28], [23, 12, 37, 34], [4, 28, 56, 84, 112]],
+	[[28, 30, 30, 30], [25, 12, 40, 34], [4, 32, 60, 88, 116]],
+	[[28, 30, 30, 30], [26, 13, 42, 35], [4, 24, 48, 72, 96, 120]],
+	[[28, 30, 30, 30], [28, 14, 45, 38], [4, 28, 52, 76, 100, 124]],
+	[[28, 30, 30, 30], [29, 15, 48, 40], [4, 24, 50, 76, 102, 128]],
+	[[28, 30, 30, 30], [31, 16, 51, 43], [4, 28, 54, 80, 106, 132]],
+	[[28, 30, 30, 30], [33, 17, 54, 45], [4, 32, 58, 84, 110, 136]],
+	[[28, 30, 30, 30], [35, 18, 57, 48], [4, 28, 56, 84, 112, 140]],
+	[[28, 30, 30, 30], [37, 19, 60, 51], [4, 32, 60, 88, 116, 144]],
+	[[28, 30, 30, 30], [38, 19, 63, 53], [4, 28, 52, 76, 100, 124, 148]],
+	[[28, 30, 30, 30], [40, 20, 66, 56], [4, 22, 48, 74, 100, 126, 152]],
+	[[28, 30, 30, 30], [43, 21, 70, 59], [4, 26, 52, 78, 104, 130, 156]],
+	[[28, 30, 30, 30], [45, 22, 74, 62], [4, 30, 56, 82, 108, 134, 160]],
+	[[28, 30, 30, 30], [47, 24, 77, 65], [4, 24, 52, 80, 108, 136, 164]],
+	[[28, 30, 30, 30], [49, 25, 81, 68], [4, 28, 56, 84, 112, 140, 168]]];
+
+// mode constants (cf. Table 2 in JIS X 0510:2004 p. 16)
+var MODE_TERMINATOR = 0;
+var MODE_NUMERIC = 1, MODE_ALPHANUMERIC = 2, MODE_OCTET = 4, MODE_KANJI = 8;
+
+// validation regexps
+var NUMERIC_REGEXP = /^\d*$/;
+var ALPHANUMERIC_REGEXP = /^[A-Za-z0-9 $%*+\-./:]*$/;
+var ALPHANUMERIC_OUT_REGEXP = /^[A-Z0-9 $%*+\-./:]*$/;
+
+// ECC levels (cf. Table 22 in JIS X 0510:2004 p. 45)
+var ECCLEVEL_L = 1, ECCLEVEL_M = 0, ECCLEVEL_Q = 3, ECCLEVEL_H = 2;
+
+// GF(2^8)-to-integer mapping with a reducing polynomial x^8+x^4+x^3+x^2+1
+// invariant: GF256_MAP[GF256_INVMAP[i]] == i for all i in [1,256)
+var GF256_MAP = [], GF256_INVMAP = [-1];
+for (var i = 0, v = 1; i < 255; ++i) {
+	GF256_MAP.push(v);
+	GF256_INVMAP[v] = i;
+	v = (v * 2) ^ (v >= 128 ? 0x11d : 0);
+}
+
+// generator polynomials up to degree 30
+// (should match with polynomials in JIS X 0510:2004 Appendix A)
+//
+// generator polynomial of degree K is product of (x-\alpha^0), (x-\alpha^1),
+// ..., (x-\alpha^(K-1)). by convention, we omit the K-th coefficient (always 1)
+// from the result; also other coefficients are written in terms of the exponent
+// to \alpha to avoid the redundant calculation. (see also calculateecc below.)
+var GF256_GENPOLY = [[]];
+for (var i = 0; i < 30; ++i) {
+	var prevpoly = GF256_GENPOLY[i], poly = [];
+	for (var j = 0; j <= i; ++j) {
+		var a = (j < i ? GF256_MAP[prevpoly[j]] : 0);
+		var b = GF256_MAP[(i + (prevpoly[j - 1] || 0)) % 255];
+		poly.push(GF256_INVMAP[a ^ b]);
+	}
+	GF256_GENPOLY.push(poly);
+}
+
+// alphanumeric character mapping (cf. Table 5 in JIS X 0510:2004 p. 19)
+var ALPHANUMERIC_MAP = {};
+for (var i = 0; i < 45; ++i) {
+	ALPHANUMERIC_MAP['0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'.charAt(i)] = i;
+}
+
+// mask functions in terms of row # and column #
+// (cf. Table 20 in JIS X 0510:2004 p. 42)
+/*jshint unused: false */
+var MASKFUNCS = [
+	function (i, j) {
+		return (i + j) % 2 === 0;
+	},
+	function (i, j) {
+		return i % 2 === 0;
+	},
+	function (i, j) {
+		return j % 3 === 0;
+	},
+	function (i, j) {
+		return (i + j) % 3 === 0;
+	},
+	function (i, j) {
+		return (((i / 2) | 0) + ((j / 3) | 0)) % 2 === 0;
+	},
+	function (i, j) {
+		return (i * j) % 2 + (i * j) % 3 === 0;
+	},
+	function (i, j) {
+		return ((i * j) % 2 + (i * j) % 3) % 2 === 0;
+	},
+	function (i, j) {
+		return ((i + j) % 2 + (i * j) % 3) % 2 === 0;
+	}];
+
+// returns true when the version information has to be embeded.
+var needsverinfo = function (ver) {
+	return ver > 6;
+};
+
+// returns the size of entire QR code for given version.
+var getsizebyver = function (ver) {
+	return 4 * ver + 17;
+};
+
+// returns the number of bits available for code words in this version.
+var nfullbits = function (ver) {
+	/*
+	 * |<--------------- n --------------->|
+	 * |        |<----- n-17 ---->|        |
+	 * +-------+                ///+-------+ ----
+	 * |       |                ///|       |    ^
+	 * |  9x9  |       @@@@@    ///|  9x8  |    |
+	 * |       | # # # @5x5@ # # # |       |    |
+	 * +-------+       @@@@@       +-------+    |
+	 *       #                               ---|
+	 *                                        ^ |
+	 *       #                                |
+	 *     @@@@@       @@@@@       @@@@@      | n
+	 *     @5x5@       @5x5@       @5x5@   n-17
+	 *     @@@@@       @@@@@       @@@@@      | |
+	 *       #                                | |
+	 * //////                                 v |
+	 * //////#                               ---|
+	 * +-------+       @@@@@       @@@@@        |
+	 * |       |       @5x5@       @5x5@        |
+	 * |  8x9  |       @@@@@       @@@@@        |
+	 * |       |                                v
+	 * +-------+                             ----
+	 *
+	 * when the entire code has n^2 modules and there are m^2-3 alignment
+	 * patterns, we have:
+	 * - 225 (= 9x9 + 9x8 + 8x9) modules for finder patterns and
+	 *   format information;
+	 * - 2n-34 (= 2(n-17)) modules for timing patterns;
+	 * - 36 (= 3x6 + 6x3) modules for version information, if any;
+	 * - 25m^2-75 (= (m^2-3)(5x5)) modules for alignment patterns
+	 *   if any, but 10m-20 (= 2(m-2)x5) of them overlaps with
+	 *   timing patterns.
+	 */
+	var v = VERSIONS[ver];
+	var nbits = 16 * ver * ver + 128 * ver + 64; // finder, timing and format info.
+	if (needsverinfo(ver))
+		nbits -= 36; // version information
+	if (v[2].length) { // alignment patterns
+		nbits -= 25 * v[2].length * v[2].length - 10 * v[2].length - 55;
+	}
+	return nbits;
+};
+
+// returns the number of bits available for data portions (i.e. excludes ECC
+// bits but includes mode and length bits) in this version and ECC level.
+var ndatabits = function (ver, ecclevel) {
+	var nbits = nfullbits(ver) & ~7; // no sub-octet code words
+	var v = VERSIONS[ver];
+	nbits -= 8 * v[0][ecclevel] * v[1][ecclevel]; // ecc bits
+	return nbits;
+};
+
+// returns the number of bits required for the length of data.
+// (cf. Table 3 in JIS X 0510:2004 p. 16)
+var ndatalenbits = function (ver, mode) {
+	switch (mode) {
+		case MODE_NUMERIC:
+			return (ver < 10 ? 10 : ver < 27 ? 12 : 14);
+		case MODE_ALPHANUMERIC:
+			return (ver < 10 ? 9 : ver < 27 ? 11 : 13);
+		case MODE_OCTET:
+			return (ver < 10 ? 8 : 16);
+		case MODE_KANJI:
+			return (ver < 10 ? 8 : ver < 27 ? 10 : 12);
+	}
+};
+
+// returns the maximum length of data possible in given configuration.
+var getmaxdatalen = function (ver, mode, ecclevel) {
+	var nbits = ndatabits(ver, ecclevel) - 4 - ndatalenbits(ver, mode); // 4 for mode bits
+	switch (mode) {
+		case MODE_NUMERIC:
+			return ((nbits / 10) | 0) * 3 + (nbits % 10 < 4 ? 0 : nbits % 10 < 7 ? 1 : 2);
+		case MODE_ALPHANUMERIC:
+			return ((nbits / 11) | 0) * 2 + (nbits % 11 < 6 ? 0 : 1);
+		case MODE_OCTET:
+			return (nbits / 8) | 0;
+		case MODE_KANJI:
+			return (nbits / 13) | 0;
+	}
+};
+
+// checks if the given data can be encoded in given mode, and returns
+// the converted data for the further processing if possible. otherwise
+// returns null.
+//
+// this function does not check the length of data; it is a duty of
+// encode function below (as it depends on the version and ECC level too).
+var validatedata = function (mode, data) {
+	switch (mode) {
+		case MODE_NUMERIC:
+			if (!data.match(NUMERIC_REGEXP))
+				return null;
+			return data;
+
+		case MODE_ALPHANUMERIC:
+			if (!data.match(ALPHANUMERIC_REGEXP))
+				return null;
+			return data.toUpperCase();
+
+		case MODE_OCTET:
+			if (typeof data === 'string') { // encode as utf-8 string
+				var newdata = [];
+				for (var i = 0; i < data.length; ++i) {
+					var ch = data.charCodeAt(i);
+					if (ch < 0x80) {
+						newdata.push(ch);
+					} else if (ch < 0x800) {
+						newdata.push(0xc0 | (ch >> 6),
+							0x80 | (ch & 0x3f));
+					} else if (ch < 0x10000) {
+						newdata.push(0xe0 | (ch >> 12),
+							0x80 | ((ch >> 6) & 0x3f),
+							0x80 | (ch & 0x3f));
+					} else {
+						newdata.push(0xf0 | (ch >> 18),
+							0x80 | ((ch >> 12) & 0x3f),
+							0x80 | ((ch >> 6) & 0x3f),
+							0x80 | (ch & 0x3f));
+					}
+				}
+				return newdata;
+			} else {
+				return data;
+			}
+	}
+};
+
+// returns the code words (sans ECC bits) for given data and configurations.
+// requires data to be preprocessed by validatedata. no length check is
+// performed, and everything has to be checked before calling this function.
+var encode = function (ver, mode, data, maxbuflen) {
+	var buf = [];
+	var bits = 0, remaining = 8;
+	var datalen = data.length;
+
+	// this function is intentionally no-op when n=0.
+	var pack = function (x, n) {
+		if (n >= remaining) {
+			buf.push(bits | (x >> (n -= remaining)));
+			while (n >= 8)
+				buf.push((x >> (n -= 8)) & 255);
+			bits = 0;
+			remaining = 8;
+		}
+		if (n > 0)
+			bits |= (x & ((1 << n) - 1)) << (remaining -= n);
+	};
+
+	var nlenbits = ndatalenbits(ver, mode);
+	pack(mode, 4);
+	pack(datalen, nlenbits);
+
+	switch (mode) {
+		case MODE_NUMERIC:
+			for (var i = 2; i < datalen; i += 3) {
+				pack(parseInt(data.substring(i - 2, i + 1), 10), 10);
+			}
+			pack(parseInt(data.substring(i - 2), 10), [0, 4, 7][datalen % 3]);
+			break;
+
+		case MODE_ALPHANUMERIC:
+			for (var i = 1; i < datalen; i += 2) {
+				pack(ALPHANUMERIC_MAP[data.charAt(i - 1)] * 45 +
+					ALPHANUMERIC_MAP[data.charAt(i)], 11);
+			}
+			if (datalen % 2 == 1) {
+				pack(ALPHANUMERIC_MAP[data.charAt(i - 1)], 6);
+			}
+			break;
+
+		case MODE_OCTET:
+			for (var i = 0; i < datalen; ++i) {
+				pack(data[i], 8);
+			}
+			break;
+	}
+
+	// final bits. it is possible that adding terminator causes the buffer
+	// to overflow, but then the buffer truncated to the maximum size will
+	// be valid as the truncated terminator mode bits and padding is
+	// identical in appearance (cf. JIS X 0510:2004 sec 8.4.8).
+	pack(MODE_TERMINATOR, 4);
+	if (remaining < 8)
+		buf.push(bits);
+
+	// the padding to fill up the remaining space. we should not add any
+	// words when the overflow already occurred.
+	while (buf.length + 1 < maxbuflen)
+		buf.push(0xec, 0x11);
+	if (buf.length < maxbuflen)
+		buf.push(0xec);
+	return buf;
+};
+
+// calculates ECC code words for given code words and generator polynomial.
+//
+// this is quite similar to CRC calculation as both Reed-Solomon and CRC use
+// the certain kind of cyclic codes, which is effectively the division of
+// zero-augumented polynomial by the generator polynomial. the only difference
+// is that Reed-Solomon uses GF(2^8), instead of CRC's GF(2), and Reed-Solomon
+// uses the different generator polynomial than CRC's.
+var calculateecc = function (poly, genpoly) {
+	var modulus = poly.slice(0);
+	var polylen = poly.length, genpolylen = genpoly.length;
+	for (var i = 0; i < genpolylen; ++i)
+		modulus.push(0);
+	for (var i = 0; i < polylen; ) {
+		var quotient = GF256_INVMAP[modulus[i++]];
+		if (quotient >= 0) {
+			for (var j = 0; j < genpolylen; ++j) {
+				modulus[i + j] ^= GF256_MAP[(quotient + genpoly[j]) % 255];
+			}
+		}
+	}
+	return modulus.slice(polylen);
+};
+
+// auguments ECC code words to given code words. the resulting words are
+// ready to be encoded in the matrix.
+//
+// the much of actual augumenting procedure follows JIS X 0510:2004 sec 8.7.
+// the code is simplified using the fact that the size of each code & ECC
+// blocks is almost same; for example, when we have 4 blocks and 46 data words
+// the number of code words in those blocks are 11, 11, 12, 12 respectively.
+var augumenteccs = function (poly, nblocks, genpoly) {
+	var subsizes = [];
+	var subsize = (poly.length / nblocks) | 0, subsize0 = 0;
+	var pivot = nblocks - poly.length % nblocks;
+	for (var i = 0; i < pivot; ++i) {
+		subsizes.push(subsize0);
+		subsize0 += subsize;
+	}
+	for (var i = pivot; i < nblocks; ++i) {
+		subsizes.push(subsize0);
+		subsize0 += subsize + 1;
+	}
+	subsizes.push(subsize0);
+
+	var eccs = [];
+	for (var i = 0; i < nblocks; ++i) {
+		eccs.push(calculateecc(poly.slice(subsizes[i], subsizes[i + 1]), genpoly));
+	}
+
+	var result = [];
+	var nitemsperblock = (poly.length / nblocks) | 0;
+	for (var i = 0; i < nitemsperblock; ++i) {
+		for (var j = 0; j < nblocks; ++j) {
+			result.push(poly[subsizes[j] + i]);
+		}
+	}
+	for (var j = pivot; j < nblocks; ++j) {
+		result.push(poly[subsizes[j + 1] - 1]);
+	}
+	for (var i = 0; i < genpoly.length; ++i) {
+		for (var j = 0; j < nblocks; ++j) {
+			result.push(eccs[j][i]);
+		}
+	}
+	return result;
+};
+
+// auguments BCH(p+q,q) code to the polynomial over GF(2), given the proper
+// genpoly. the both input and output are in binary numbers, and unlike
+// calculateecc genpoly should include the 1 bit for the highest degree.
+//
+// actual polynomials used for this procedure are as follows:
+// - p=10, q=5, genpoly=x^10+x^8+x^5+x^4+x^2+x+1 (JIS X 0510:2004 Appendix C)
+// - p=18, q=6, genpoly=x^12+x^11+x^10+x^9+x^8+x^5+x^2+1 (ibid. Appendix D)
+var augumentbch = function (poly, p, genpoly, q) {
+	var modulus = poly << q;
+	for (var i = p - 1; i >= 0; --i) {
+		if ((modulus >> (q + i)) & 1)
+			modulus ^= genpoly << i;
+	}
+	return (poly << q) | modulus;
+};
+
+// creates the base matrix for given version. it returns two matrices, one of
+// them is the actual one and the another represents the "reserved" portion
+// (e.g. finder and timing patterns) of the matrix.
+//
+// some entries in the matrix may be undefined, rather than 0 or 1. this is
+// intentional (no initialization needed!), and putdata below will fill
+// the remaining ones.
+var makebasematrix = function (ver) {
+	var v = VERSIONS[ver], n = getsizebyver(ver);
+	var matrix = [], reserved = [];
+	for (var i = 0; i < n; ++i) {
+		matrix.push([]);
+		reserved.push([]);
+	}
+
+	var blit = function (y, x, h, w, bits) {
+		for (var i = 0; i < h; ++i) {
+			for (var j = 0; j < w; ++j) {
+				matrix[y + i][x + j] = (bits[i] >> j) & 1;
+				reserved[y + i][x + j] = 1;
+			}
+		}
+	};
+
+	// finder patterns and a part of timing patterns
+	// will also mark the format information area (not yet written) as reserved.
+	blit(0, 0, 9, 9, [0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x17f, 0x00, 0x40]);
+	blit(n - 8, 0, 8, 9, [0x100, 0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x7f]);
+	blit(0, n - 8, 9, 8, [0xfe, 0x82, 0xba, 0xba, 0xba, 0x82, 0xfe, 0x00, 0x00]);
+
+	// the rest of timing patterns
+	for (var i = 9; i < n - 8; ++i) {
+		matrix[6][i] = matrix[i][6] = ~i & 1;
+		reserved[6][i] = reserved[i][6] = 1;
+	}
+
+	// alignment patterns
+	var aligns = v[2], m = aligns.length;
+	for (var i = 0; i < m; ++i) {
+		var minj = (i === 0 || i === m - 1 ? 1 : 0), maxj = (i === 0 ? m - 1 : m);
+		for (var j = minj; j < maxj; ++j) {
+			blit(aligns[i], aligns[j], 5, 5, [0x1f, 0x11, 0x15, 0x11, 0x1f]);
+		}
+	}
+
+	// version information
+	if (needsverinfo(ver)) {
+		var code = augumentbch(ver, 6, 0x1f25, 12);
+		var k = 0;
+		for (var i = 0; i < 6; ++i) {
+			for (var j = 0; j < 3; ++j) {
+				matrix[i][(n - 11) + j] = matrix[(n - 11) + j][i] = (code >> k++) & 1;
+				reserved[i][(n - 11) + j] = reserved[(n - 11) + j][i] = 1;
+			}
+		}
+	}
+
+	return {matrix: matrix, reserved: reserved};
+};
+
+// fills the data portion (i.e. unmarked in reserved) of the matrix with given
+// code words. the size of code words should be no more than available bits,
+// and remaining bits are padded to 0 (cf. JIS X 0510:2004 sec 8.7.3).
+var putdata = function (matrix, reserved, buf) {
+	var n = matrix.length;
+	var k = 0, dir = -1;
+	for (var i = n - 1; i >= 0; i -= 2) {
+		if (i == 6)
+			--i; // skip the entire timing pattern column
+		var jj = (dir < 0 ? n - 1 : 0);
+		for (var j = 0; j < n; ++j) {
+			for (var ii = i; ii > i - 2; --ii) {
+				if (!reserved[jj][ii]) {
+					// may overflow, but (undefined >> x)
+					// is 0 so it will auto-pad to zero.
+					matrix[jj][ii] = (buf[k >> 3] >> (~k & 7)) & 1;
+					++k;
+				}
+			}
+			jj += dir;
+		}
+		dir = -dir;
+	}
+	return matrix;
+};
+
+// XOR-masks the data portion of the matrix. repeating the call with the same
+// arguments will revert the prior call (convenient in the matrix evaluation).
+var maskdata = function (matrix, reserved, mask) {
+	var maskf = MASKFUNCS[mask];
+	var n = matrix.length;
+	for (var i = 0; i < n; ++i) {
+		for (var j = 0; j < n; ++j) {
+			if (!reserved[i][j])
+				matrix[i][j] ^= maskf(i, j);
+		}
+	}
+	return matrix;
+};
+
+// puts the format information.
+var putformatinfo = function (matrix, reserved, ecclevel, mask) {
+	var n = matrix.length;
+	var code = augumentbch((ecclevel << 3) | mask, 5, 0x537, 10) ^ 0x5412;
+	for (var i = 0; i < 15; ++i) {
+		var r = [0, 1, 2, 3, 4, 5, 7, 8, n - 7, n - 6, n - 5, n - 4, n - 3, n - 2, n - 1][i];
+		var c = [n - 1, n - 2, n - 3, n - 4, n - 5, n - 6, n - 7, n - 8, 7, 5, 4, 3, 2, 1, 0][i];
+		matrix[r][8] = matrix[8][c] = (code >> i) & 1;
+		// we don't have to mark those bits reserved; always done
+		// in makebasematrix above.
+	}
+	return matrix;
+};
+
+// evaluates the resulting matrix and returns the score (lower is better).
+// (cf. JIS X 0510:2004 sec 8.8.2)
+//
+// the evaluation procedure tries to avoid the problematic patterns naturally
+// occuring from the original matrix. for example, it penaltizes the patterns
+// which just look like the finder pattern which will confuse the decoder.
+// we choose the mask which results in the lowest score among 8 possible ones.
+//
+// note: zxing seems to use the same procedure and in many cases its choice
+// agrees to ours, but sometimes it does not. practically it doesn't matter.
+var evaluatematrix = function (matrix) {
+	// N1+(k-5) points for each consecutive row of k same-colored modules,
+	// where k >= 5. no overlapping row counts.
+	var PENALTY_CONSECUTIVE = 3;
+	// N2 points for each 2x2 block of same-colored modules.
+	// overlapping block does count.
+	var PENALTY_TWOBYTWO = 3;
+	// N3 points for each pattern with >4W:1B:1W:3B:1W:1B or
+	// 1B:1W:3B:1W:1B:>4W, or their multiples (e.g. highly unlikely,
+	// but 13W:3B:3W:9B:3W:3B counts).
+	var PENALTY_FINDERLIKE = 40;
+	// N4*k points for every (5*k)% deviation from 50% black density.
+	// i.e. k=1 for 55~60% and 40~45%, k=2 for 60~65% and 35~40%, etc.
+	var PENALTY_DENSITY = 10;
+
+	var evaluategroup = function (groups) { // assumes [W,B,W,B,W,...,B,W]
+		var score = 0;
+		for (var i = 0; i < groups.length; ++i) {
+			if (groups[i] >= 5)
+				score += PENALTY_CONSECUTIVE + (groups[i] - 5);
+		}
+		for (var i = 5; i < groups.length; i += 2) {
+			var p = groups[i];
+			if (groups[i - 1] == p && groups[i - 2] == 3 * p && groups[i - 3] == p &&
+				groups[i - 4] == p && (groups[i - 5] >= 4 * p || groups[i + 1] >= 4 * p)) {
+				// this part differs from zxing...
+				score += PENALTY_FINDERLIKE;
+			}
+		}
+		return score;
+	};
+
+	var n = matrix.length;
+	var score = 0, nblacks = 0;
+	for (var i = 0; i < n; ++i) {
+		var row = matrix[i];
+		var groups;
+
+		// evaluate the current row
+		groups = [0]; // the first empty group of white
+		for (var j = 0; j < n; ) {
+			var k;
+			for (k = 0; j < n && row[j]; ++k)
+				++j;
+			groups.push(k);
+			for (k = 0; j < n && !row[j]; ++k)
+				++j;
+			groups.push(k);
+		}
+		score += evaluategroup(groups);
+
+		// evaluate the current column
+		groups = [0];
+		for (var j = 0; j < n; ) {
+			var k;
+			for (k = 0; j < n && matrix[j][i]; ++k)
+				++j;
+			groups.push(k);
+			for (k = 0; j < n && !matrix[j][i]; ++k)
+				++j;
+			groups.push(k);
+		}
+		score += evaluategroup(groups);
+
+		// check the 2x2 box and calculate the density
+		var nextrow = matrix[i + 1] || [];
+		nblacks += row[0];
+		for (var j = 1; j < n; ++j) {
+			var p = row[j];
+			nblacks += p;
+			// at least comparison with next row should be strict...
+			if (row[j - 1] == p && nextrow[j] === p && nextrow[j - 1] === p) {
+				score += PENALTY_TWOBYTWO;
+			}
+		}
+	}
+
+	score += PENALTY_DENSITY * ((Math.abs(nblacks / n / n - 0.5) / 0.05) | 0);
+	return score;
+};
+
+// returns the fully encoded QR code matrix which contains given data.
+// it also chooses the best mask automatically when mask is -1.
+var generate = function (data, ver, mode, ecclevel, mask) {
+	var v = VERSIONS[ver];
+	var buf = encode(ver, mode, data, ndatabits(ver, ecclevel) >> 3);
+	buf = augumenteccs(buf, v[1][ecclevel], GF256_GENPOLY[v[0][ecclevel]]);
+
+	var result = makebasematrix(ver);
+	var matrix = result.matrix, reserved = result.reserved;
+	putdata(matrix, reserved, buf);
+
+	if (mask < 0) {
+		// find the best mask
+		maskdata(matrix, reserved, 0);
+		putformatinfo(matrix, reserved, ecclevel, 0);
+		var bestmask = 0, bestscore = evaluatematrix(matrix);
+		maskdata(matrix, reserved, 0);
+		for (mask = 1; mask < 8; ++mask) {
+			maskdata(matrix, reserved, mask);
+			putformatinfo(matrix, reserved, ecclevel, mask);
+			var score = evaluatematrix(matrix);
+			if (bestscore > score) {
+				bestscore = score;
+				bestmask = mask;
+			}
+			maskdata(matrix, reserved, mask);
+		}
+		mask = bestmask;
+	}
+
+	maskdata(matrix, reserved, mask);
+	putformatinfo(matrix, reserved, ecclevel, mask);
+	return matrix;
+};
+
+// the public interface is trivial; the options available are as follows:
+//
+// - version: an integer in [1,40]. when omitted (or -1) the smallest possible
+//   version is chosen.
+// - mode: one of 'numeric', 'alphanumeric', 'octet'. when omitted the smallest
+//   possible mode is chosen.
+// - eccLevel: one of 'L', 'M', 'Q', 'H'. defaults to 'L'.
+// - mask: an integer in [0,7]. when omitted (or -1) the best mask is chosen.
+//
+
+function generateFrame(data, options) {
+	var MODES = {'numeric': MODE_NUMERIC, 'alphanumeric': MODE_ALPHANUMERIC,
+		'octet': MODE_OCTET};
+	var ECCLEVELS = {'L': ECCLEVEL_L, 'M': ECCLEVEL_M, 'Q': ECCLEVEL_Q,
+		'H': ECCLEVEL_H};
+
+	options = options || {};
+	var ver = options.version || -1;
+	var ecclevel = ECCLEVELS[(options.eccLevel || 'L').toUpperCase()];
+	var mode = options.mode ? MODES[options.mode.toLowerCase()] : -1;
+	var mask = 'mask' in options ? options.mask : -1;
+
+	if (mode < 0) {
+		if (typeof data === 'string') {
+			if (data.match(NUMERIC_REGEXP)) {
+				mode = MODE_NUMERIC;
+			} else if (data.match(ALPHANUMERIC_OUT_REGEXP)) {
+				// while encode supports case-insensitive encoding, we restrict the data to be uppercased when auto-selecting the mode.
+				mode = MODE_ALPHANUMERIC;
+			} else {
+				mode = MODE_OCTET;
+			}
+		} else {
+			mode = MODE_OCTET;
+		}
+	} else if (!(mode == MODE_NUMERIC || mode == MODE_ALPHANUMERIC ||
+		mode == MODE_OCTET)) {
+		throw 'invalid or unsupported mode';
+	}
+
+	data = validatedata(mode, data);
+	if (data === null)
+		throw 'invalid data format';
+
+	if (ecclevel < 0 || ecclevel > 3)
+		throw 'invalid ECC level';
+
+	if (ver < 0) {
+		for (ver = 1; ver <= 40; ++ver) {
+			if (data.length <= getmaxdatalen(ver, mode, ecclevel))
+				break;
+		}
+		if (ver > 40)
+			throw 'too large data for the Qr format';
+	} else if (ver < 1 || ver > 40) {
+		throw 'invalid Qr version! should be between 1 and 40';
+	}
+
+	if (mask != -1 && (mask < 0 || mask > 8))
+		throw 'invalid mask';
+	//console.log('version:', ver, 'mode:', mode, 'ECC:', ecclevel, 'mask:', mask )
+	return generate(data, ver, mode, ecclevel, mask);
+}
+
+
+// options
+// - modulesize: a number. this is a size of each modules in pixels, and
+//   defaults to 5px.
+// - margin: a number. this is a size of margin in *modules*, and defaults to
+//   4 (white modules). the specficiation mandates the margin no less than 4
+//   modules, so it is better not to alter this value unless you know what
+//   you're doing.
+function buildCanvas(data, options) {
+
+	var canvas = [];
+	var background = options.background || '#fff';
+	var foreground = options.foreground || '#000';
+	//var margin = options.margin || 4;
+	var matrix = generateFrame(data, options);
+	var n = matrix.length;
+	var modSize = Math.floor(options.fit ? options.fit / n : 5);
+	var size = n * modSize;
+
+	canvas.push({
+		type: 'rect',
+		x: 0, y: 0, w: size, h: size, lineWidth: 0, color: background
+	});
+
+	for (var i = 0; i < n; ++i) {
+		for (var j = 0; j < n; ++j) {
+			if (matrix[i][j]) {
+				canvas.push({
+					type: 'rect',
+					x: modSize * j,
+					y: modSize * i,
+					w: modSize,
+					h: modSize,
+					lineWidth: 0,
+					color: foreground
+				});
+			}
+		}
+	}
+
+	return {
+		canvas: canvas,
+		size: size
+	};
+
+}
+
+function measure(node) {
+	var cd = buildCanvas(node.qr, node);
+	node._canvas = cd.canvas;
+	node._width = node._height = node._minWidth = node._maxWidth = node._minHeight = node._maxHeight = cd.size;
+	return node;
+}
+
+module.exports = {
+	measure: measure
+};
+
+/***/ }),
+/* 135 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var ElementWriter = __webpack_require__(136);
+
+/**
+ * Creates an instance of PageElementWriter - an extended ElementWriter
+ * which can handle:
+ * - page-breaks (it adds new pages when there's not enough space left),
+ * - repeatable fragments (like table-headers, which are repeated everytime
+ *                         a page-break occurs)
+ * - transactions (used for unbreakable-blocks when we want to make sure
+ *                 whole block will be rendered on the same page)
+ */
+function PageElementWriter(context, tracker) {
+	this.transactionLevel = 0;
+	this.repeatables = [];
+	this.tracker = tracker;
+	this.writer = new ElementWriter(context, tracker);
+}
+
+function fitOnPage(self, addFct) {
+	var position = addFct(self);
+	if (!position) {
+		self.moveToNextPage();
+		position = addFct(self);
+	}
+	return position;
+}
+
+PageElementWriter.prototype.addLine = function (line, dontUpdateContextPosition, index) {
+	return fitOnPage(this, function (self) {
+		return self.writer.addLine(line, dontUpdateContextPosition, index);
+	});
+};
+
+PageElementWriter.prototype.addImage = function (image, index) {
+	return fitOnPage(this, function (self) {
+		return self.writer.addImage(image, index);
+	});
+};
+
+PageElementWriter.prototype.addQr = function (qr, index) {
+	return fitOnPage(this, function (self) {
+		return self.writer.addQr(qr, index);
+	});
+};
+
+PageElementWriter.prototype.addVector = function (vector, ignoreContextX, ignoreContextY, index) {
+	return this.writer.addVector(vector, ignoreContextX, ignoreContextY, index);
+};
+
+PageElementWriter.prototype.beginClip = function (width, height) {
+	return this.writer.beginClip(width, height);
+};
+
+PageElementWriter.prototype.endClip = function () {
+	return this.writer.endClip();
+};
+
+PageElementWriter.prototype.alignCanvas = function (node) {
+	this.writer.alignCanvas(node);
+};
+
+PageElementWriter.prototype.addFragment = function (fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition) {
+	if (!this.writer.addFragment(fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition)) {
+		this.moveToNextPage();
+		this.writer.addFragment(fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition);
+	}
+};
+
+PageElementWriter.prototype.moveToNextPage = function (pageOrientation) {
+
+	var nextPage = this.writer.context.moveToNextPage(pageOrientation);
+
+	if (nextPage.newPageCreated) {
+		this.repeatables.forEach(function (rep) {
+			this.writer.addFragment(rep, true);
+		}, this);
+	} else {
+		this.repeatables.forEach(function (rep) {
+			this.writer.context.moveDown(rep.height);
+		}, this);
+	}
+
+	this.writer.tracker.emit('pageChanged', {
+		prevPage: nextPage.prevPage,
+		prevY: nextPage.prevY,
+		y: nextPage.y
+	});
+};
+
+PageElementWriter.prototype.beginUnbreakableBlock = function (width, height) {
+	if (this.transactionLevel++ === 0) {
+		this.originalX = this.writer.context.x;
+		this.writer.pushContext(width, height);
+	}
+};
+
+PageElementWriter.prototype.commitUnbreakableBlock = function (forcedX, forcedY) {
+	if (--this.transactionLevel === 0) {
+		var unbreakableContext = this.writer.context;
+		this.writer.popContext();
+
+		var nbPages = unbreakableContext.pages.length;
+		if (nbPages > 0) {
+			// no support for multi-page unbreakableBlocks
+			var fragment = unbreakableContext.pages[0];
+			fragment.xOffset = forcedX;
+			fragment.yOffset = forcedY;
+
+			//TODO: vectors can influence height in some situations
+			if (nbPages > 1) {
+				// on out-of-context blocs (headers, footers, background) height should be the whole DocumentContext height
+				if (forcedX !== undefined || forcedY !== undefined) {
+					fragment.height = unbreakableContext.getCurrentPage().pageSize.height - unbreakableContext.pageMargins.top - unbreakableContext.pageMargins.bottom;
+				} else {
+					fragment.height = this.writer.context.getCurrentPage().pageSize.height - this.writer.context.pageMargins.top - this.writer.context.pageMargins.bottom;
+					for (var i = 0, l = this.repeatables.length; i < l; i++) {
+						fragment.height -= this.repeatables[i].height;
+					}
+				}
+			} else {
+				fragment.height = unbreakableContext.y;
+			}
+
+			if (forcedX !== undefined || forcedY !== undefined) {
+				this.writer.addFragment(fragment, true, true, true);
+			} else {
+				this.addFragment(fragment);
+			}
+		}
+	}
+};
+
+PageElementWriter.prototype.currentBlockToRepeatable = function () {
+	var unbreakableContext = this.writer.context;
+	var rep = {items: []};
+
+	unbreakableContext.pages[0].items.forEach(function (item) {
+		rep.items.push(item);
+	});
+
+	rep.xOffset = this.originalX;
+
+	//TODO: vectors can influence height in some situations
+	rep.height = unbreakableContext.y;
+
+	return rep;
+};
+
+PageElementWriter.prototype.pushToRepeatables = function (rep) {
+	this.repeatables.push(rep);
+};
+
+PageElementWriter.prototype.popFromRepeatables = function () {
+	this.repeatables.pop();
+};
+
+PageElementWriter.prototype.context = function () {
+	return this.writer.context;
+};
+
+module.exports = PageElementWriter;
+
+
+/***/ }),
+/* 136 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var Line = __webpack_require__(82);
+var isNumber = __webpack_require__(0).isNumber;
+var pack = __webpack_require__(0).pack;
+var offsetVector = __webpack_require__(0).offsetVector;
+var DocumentContext = __webpack_require__(81);
+
+/**
+ * Creates an instance of ElementWriter - a line/vector writer, which adds
+ * elements to current page and sets their positions based on the context
+ */
+function ElementWriter(context, tracker) {
+	this.context = context;
+	this.contextStack = [];
+	this.tracker = tracker;
+}
+
+function addPageItem(page, item, index) {
+	if (index === null || index === undefined || index < 0 || index > page.items.length) {
+		page.items.push(item);
+	} else {
+		page.items.splice(index, 0, item);
+	}
+}
+
+ElementWriter.prototype.addLine = function (line, dontUpdateContextPosition, index) {
+	var height = line.getHeight();
+	var context = this.context;
+	var page = context.getCurrentPage(),
+		position = this.getCurrentPositionOnPage();
+
+	if (context.availableHeight < height || !page) {
+		return false;
+	}
+
+	line.x = context.x + (line.x || 0);
+	line.y = context.y + (line.y || 0);
+
+	this.alignLine(line);
+
+	addPageItem(page, {
+		type: 'line',
+		item: line
+	}, index);
+	this.tracker.emit('lineAdded', line);
+
+	if (!dontUpdateContextPosition) {
+		context.moveDown(height);
+	}
+
+	return position;
+};
+
+ElementWriter.prototype.alignLine = function (line) {
+	var width = this.context.availableWidth;
+	var lineWidth = line.getWidth();
+
+	var alignment = line.inlines && line.inlines.length > 0 && line.inlines[0].alignment;
+
+	var offset = 0;
+	switch (alignment) {
+		case 'right':
+			offset = width - lineWidth;
+			break;
+		case 'center':
+			offset = (width - lineWidth) / 2;
+			break;
+	}
+
+	if (offset) {
+		line.x = (line.x || 0) + offset;
+	}
+
+	if (alignment === 'justify' &&
+		!line.newLineForced &&
+		!line.lastLineInParagraph &&
+		line.inlines.length > 1) {
+		var additionalSpacing = (width - lineWidth) / (line.inlines.length - 1);
+
+		for (var i = 1, l = line.inlines.length; i < l; i++) {
+			offset = i * additionalSpacing;
+
+			line.inlines[i].x += offset;
+			line.inlines[i].justifyShift = additionalSpacing;
+		}
+	}
+};
+
+ElementWriter.prototype.addImage = function (image, index) {
+	var context = this.context;
+	var page = context.getCurrentPage(),
+		position = this.getCurrentPositionOnPage();
+
+	if (!page || (image.absolutePosition === undefined && context.availableHeight < image._height && page.items.length > 0)) {
+		return false;
+	}
+
+	if (image._x === undefined) {
+		image._x = image.x || 0;
+	}
+
+	image.x = context.x + image._x;
+	image.y = context.y;
+
+	this.alignImage(image);
+
+	addPageItem(page, {
+		type: 'image',
+		item: image
+	}, index);
+
+	context.moveDown(image._height);
+
+	return position;
+};
+
+ElementWriter.prototype.addQr = function (qr, index) {
+	var context = this.context;
+	var page = context.getCurrentPage(),
+		position = this.getCurrentPositionOnPage();
+
+	if (!page || (qr.absolutePosition === undefined && context.availableHeight < qr._height)) {
+		return false;
+	}
+
+	if (qr._x === undefined) {
+		qr._x = qr.x || 0;
+	}
+
+	qr.x = context.x + qr._x;
+	qr.y = context.y;
+
+	this.alignImage(qr);
+
+	for (var i = 0, l = qr._canvas.length; i < l; i++) {
+		var vector = qr._canvas[i];
+		vector.x += qr.x;
+		vector.y += qr.y;
+		this.addVector(vector, true, true, index);
+	}
+
+	context.moveDown(qr._height);
+
+	return position;
+};
+
+ElementWriter.prototype.alignImage = function (image) {
+	var width = this.context.availableWidth;
+	var imageWidth = image._minWidth;
+	var offset = 0;
+	switch (image._alignment) {
+		case 'right':
+			offset = width - imageWidth;
+			break;
+		case 'center':
+			offset = (width - imageWidth) / 2;
+			break;
+	}
+
+	if (offset) {
+		image.x = (image.x || 0) + offset;
+	}
+};
+
+ElementWriter.prototype.alignCanvas = function (node) {
+	var width = this.context.availableWidth;
+	var canvasWidth = node._minWidth;
+	var offset = 0;
+	switch (node._alignment) {
+		case 'right':
+			offset = width - canvasWidth;
+			break;
+		case 'center':
+			offset = (width - canvasWidth) / 2;
+			break;
+	}
+	if (offset) {
+		node.canvas.forEach(function (vector) {
+			offsetVector(vector, offset, 0);
+		});
+	}
+};
+
+ElementWriter.prototype.addVector = function (vector, ignoreContextX, ignoreContextY, index) {
+	var context = this.context;
+	var page = context.getCurrentPage(),
+		position = this.getCurrentPositionOnPage();
+
+	if (page) {
+		offsetVector(vector, ignoreContextX ? 0 : context.x, ignoreContextY ? 0 : context.y);
+		addPageItem(page, {
+			type: 'vector',
+			item: vector
+		}, index);
+		return position;
+	}
+};
+
+ElementWriter.prototype.beginClip = function (width, height) {
+	var ctx = this.context;
+	var page = ctx.getCurrentPage();
+	page.items.push({
+		type: 'beginClip',
+		item: {x: ctx.x, y: ctx.y, width: width, height: height}
+	});
+	return true;
+};
+
+ElementWriter.prototype.endClip = function () {
+	var ctx = this.context;
+	var page = ctx.getCurrentPage();
+	page.items.push({
+		type: 'endClip'
+	});
+	return true;
+};
+
+function cloneLine(line) {
+	var result = new Line(line.maxWidth);
+
+	for (var key in line) {
+		if (line.hasOwnProperty(key)) {
+			result[key] = line[key];
+		}
+	}
+
+	return result;
+}
+
+ElementWriter.prototype.addFragment = function (block, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition) {
+	var ctx = this.context;
+	var page = ctx.getCurrentPage();
+
+	if (!useBlockXOffset && block.height > ctx.availableHeight) {
+		return false;
+	}
+
+	block.items.forEach(function (item) {
+		switch (item.type) {
+			case 'line':
+				var l = cloneLine(item.item);
+
+				l.x = (l.x || 0) + (useBlockXOffset ? (block.xOffset || 0) : ctx.x);
+				l.y = (l.y || 0) + (useBlockYOffset ? (block.yOffset || 0) : ctx.y);
+
+				page.items.push({
+					type: 'line',
+					item: l
+				});
+				break;
+
+			case 'vector':
+				var v = pack(item.item);
+
+				offsetVector(v, useBlockXOffset ? (block.xOffset || 0) : ctx.x, useBlockYOffset ? (block.yOffset || 0) : ctx.y);
+				page.items.push({
+					type: 'vector',
+					item: v
+				});
+				break;
+
+			case 'image':
+				var img = pack(item.item);
+
+				img.x = (img.x || 0) + (useBlockXOffset ? (block.xOffset || 0) : ctx.x);
+				img.y = (img.y || 0) + (useBlockYOffset ? (block.yOffset || 0) : ctx.y);
+
+				page.items.push({
+					type: 'image',
+					item: img
+				});
+				break;
+		}
+	});
+
+	if (!dontUpdateContextPosition) {
+		ctx.moveDown(block.height);
+	}
+
+	return true;
+};
+
+/**
+ * Pushes the provided context onto the stack or creates a new one
+ *
+ * pushContext(context) - pushes the provided context and makes it current
+ * pushContext(width, height) - creates and pushes a new context with the specified width and height
+ * pushContext() - creates a new context for unbreakable blocks (with current availableWidth and full-page-height)
+ */
+ElementWriter.prototype.pushContext = function (contextOrWidth, height) {
+	if (contextOrWidth === undefined) {
+		height = this.context.getCurrentPage().height - this.context.pageMargins.top - this.context.pageMargins.bottom;
+		contextOrWidth = this.context.availableWidth;
+	}
+
+	if (isNumber(contextOrWidth)) {
+		contextOrWidth = new DocumentContext({width: contextOrWidth, height: height}, {left: 0, right: 0, top: 0, bottom: 0});
+	}
+
+	this.contextStack.push(this.context);
+	this.context = contextOrWidth;
+};
+
+ElementWriter.prototype.popContext = function () {
+	this.context = this.contextStack.pop();
+};
+
+ElementWriter.prototype.getCurrentPositionOnPage = function () {
+	return (this.contextStack[0] || this.context).getCurrentPosition();
+};
+
+
+module.exports = ElementWriter;
+
+
+/***/ }),
+/* 137 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var ColumnCalculator = __webpack_require__(44);
+var isFunction = __webpack_require__(0).isFunction;
+
+function TableProcessor(tableNode) {
+	this.tableNode = tableNode;
+}
+
+TableProcessor.prototype.beginTable = function (writer) {
+	var tableNode;
+	var availableWidth;
+	var self = this;
+
+	tableNode = this.tableNode;
+	this.offsets = tableNode._offsets;
+	this.layout = tableNode._layout;
+
+	availableWidth = writer.context().availableWidth - this.offsets.total;
+	ColumnCalculator.buildColumnWidths(tableNode.table.widths, availableWidth);
+
+	this.tableWidth = tableNode._offsets.total + getTableInnerContentWidth();
+	this.rowSpanData = prepareRowSpanData();
+	this.cleanUpRepeatables = false;
+
+	this.headerRows = tableNode.table.headerRows || 0;
+	this.rowsWithoutPageBreak = this.headerRows + (tableNode.table.keepWithHeaderRows || 0);
+	this.dontBreakRows = tableNode.table.dontBreakRows || false;
+
+	if (this.rowsWithoutPageBreak) {
+		writer.beginUnbreakableBlock();
+	}
+
+	// update the border properties of all cells before drawing any lines
+	prepareCellBorders(this.tableNode.table.body);
+
+	this.drawHorizontalLine(0, writer);
+
+	function getTableInnerContentWidth() {
+		var width = 0;
+
+		tableNode.table.widths.forEach(function (w) {
+			width += w._calcWidth;
+		});
+
+		return width;
+	}
+
+	function prepareRowSpanData() {
+		var rsd = [];
+		var x = 0;
+		var lastWidth = 0;
+
+		rsd.push({left: 0, rowSpan: 0});
+
+		for (var i = 0, l = self.tableNode.table.body[0].length; i < l; i++) {
+			var paddings = self.layout.paddingLeft(i, self.tableNode) + self.layout.paddingRight(i, self.tableNode);
+			var lBorder = self.layout.vLineWidth(i, self.tableNode);
+			lastWidth = paddings + lBorder + self.tableNode.table.widths[i]._calcWidth;
+			rsd[rsd.length - 1].width = lastWidth;
+			x += lastWidth;
+			rsd.push({left: x, rowSpan: 0, width: 0});
+		}
+
+		return rsd;
+	}
+
+	// Iterate through all cells. If the current cell is the start of a
+	// rowSpan/colSpan, update the border property of the cells on its
+	// bottom/right accordingly. This is needed since each iteration of the
+	// line-drawing loops draws lines for a single cell, not for an entire
+	// rowSpan/colSpan.
+	function prepareCellBorders(body) {
+		for (var rowIndex = 0; rowIndex < body.length; rowIndex++) {
+			var row = body[rowIndex];
+
+			for (var colIndex = 0; colIndex < row.length; colIndex++) {
+				var cell = row[colIndex];
+
+				if (cell.border) {
+					var rowSpan = cell.rowSpan || 1;
+					var colSpan = cell.colSpan || 1;
+
+					for (var rowOffset = 0; rowOffset < rowSpan; rowOffset++) {
+						// set left border
+						if (cell.border[0] !== undefined && rowOffset > 0) {
+							setBorder(rowIndex + rowOffset, colIndex, 0, cell.border[0]);
+						}
+
+						// set right border
+						if (cell.border[2] !== undefined) {
+							setBorder(rowIndex + rowOffset, colIndex + colSpan - 1, 2, cell.border[2]);
+						}
+					}
+
+					for (var colOffset = 0; colOffset < colSpan; colOffset++) {
+						// set top border
+						if (cell.border[1] !== undefined && colOffset > 0) {
+							setBorder(rowIndex, colIndex + colOffset, 1, cell.border[1]);
+						}
+
+						// set bottom border
+						if (cell.border[3] !== undefined) {
+							setBorder(rowIndex + rowSpan - 1, colIndex + colOffset, 3, cell.border[3]);
+						}
+					}
+				}
+			}
+		}
+
+		// helper function to set the border for a given cell
+		function setBorder(rowIndex, colIndex, borderIndex, borderValue) {
+			var cell = body[rowIndex][colIndex];
+			cell.border = cell.border || {};
+			cell.border[borderIndex] = borderValue;
+		}
+	}
+};
+
+TableProcessor.prototype.onRowBreak = function (rowIndex, writer) {
+	var self = this;
+	return function () {
+		var offset = self.rowPaddingTop + (!self.headerRows ? self.topLineWidth : 0);
+		writer.context().availableHeight -= self.reservedAtBottom;
+		writer.context().moveDown(offset);
+	};
+};
+
+TableProcessor.prototype.beginRow = function (rowIndex, writer) {
+	this.topLineWidth = this.layout.hLineWidth(rowIndex, this.tableNode);
+	this.rowPaddingTop = this.layout.paddingTop(rowIndex, this.tableNode);
+	this.bottomLineWidth = this.layout.hLineWidth(rowIndex + 1, this.tableNode);
+	this.rowPaddingBottom = this.layout.paddingBottom(rowIndex, this.tableNode);
+
+	this.rowCallback = this.onRowBreak(rowIndex, writer);
+	writer.tracker.startTracking('pageChanged', this.rowCallback);
+	if (this.dontBreakRows) {
+		writer.beginUnbreakableBlock();
+	}
+	this.rowTopY = writer.context().y;
+	this.reservedAtBottom = this.bottomLineWidth + this.rowPaddingBottom;
+
+	writer.context().availableHeight -= this.reservedAtBottom;
+
+	writer.context().moveDown(this.rowPaddingTop);
+};
+
+TableProcessor.prototype.drawHorizontalLine = function (lineIndex, writer, overrideY) {
+	var lineWidth = this.layout.hLineWidth(lineIndex, this.tableNode);
+	if (lineWidth) {
+		var offset = lineWidth / 2;
+		var currentLine = null;
+		var body = this.tableNode.table.body;
+
+		for (var i = 0, l = this.rowSpanData.length; i < l; i++) {
+			var data = this.rowSpanData[i];
+			var shouldDrawLine = !data.rowSpan;
+
+			// draw only if the current cell requires a top border or the cell in the
+			// row above requires a bottom border
+			if (shouldDrawLine && i < l - 1) {
+				var topBorder = false, bottomBorder = false;
+
+				// the current cell
+				if (lineIndex < body.length) {
+					var cell = body[lineIndex][i];
+					topBorder = cell.border ? cell.border[1] : this.layout.defaultBorder;
+				}
+
+				// the cell in the row above
+				if (lineIndex > 0) {
+					var cellAbove = body[lineIndex - 1][i];
+					bottomBorder = cellAbove.border ? cellAbove.border[3] : this.layout.defaultBorder;
+				}
+
+				shouldDrawLine = topBorder || bottomBorder;
+			}
+
+			if (!currentLine && shouldDrawLine) {
+				currentLine = {left: data.left, width: 0};
+			}
+
+			if (shouldDrawLine) {
+				currentLine.width += (data.width || 0);
+			}
+
+			var y = (overrideY || 0) + offset;
+
+			if (!shouldDrawLine || i === l - 1) {
+				if (currentLine && currentLine.width) {
+					writer.addVector({
+						type: 'line',
+						x1: currentLine.left,
+						x2: currentLine.left + currentLine.width,
+						y1: y,
+						y2: y,
+						lineWidth: lineWidth,
+						lineColor: isFunction(this.layout.hLineColor) ? this.layout.hLineColor(lineIndex, this.tableNode) : this.layout.hLineColor
+					}, false, overrideY);
+					currentLine = null;
+				}
+			}
+		}
+
+		writer.context().moveDown(lineWidth);
+	}
+};
+
+TableProcessor.prototype.drawVerticalLine = function (x, y0, y1, vLineIndex, writer) {
+	var width = this.layout.vLineWidth(vLineIndex, this.tableNode);
+	if (width === 0) {
+		return;
+	}
+	writer.addVector({
+		type: 'line',
+		x1: x + width / 2,
+		x2: x + width / 2,
+		y1: y0,
+		y2: y1,
+		lineWidth: width,
+		lineColor: isFunction(this.layout.vLineColor) ? this.layout.vLineColor(vLineIndex, this.tableNode) : this.layout.vLineColor
+	}, false, true);
+};
+
+TableProcessor.prototype.endTable = function (writer) {
+	if (this.cleanUpRepeatables) {
+		writer.popFromRepeatables();
+		this.headerRepeatableHeight = null;
+	}
+};
+
+TableProcessor.prototype.endRow = function (rowIndex, writer, pageBreaks) {
+	var l, i;
+	var self = this;
+	writer.tracker.stopTracking('pageChanged', this.rowCallback);
+	writer.context().moveDown(this.layout.paddingBottom(rowIndex, this.tableNode));
+	writer.context().availableHeight += this.reservedAtBottom;
+
+	var endingPage = writer.context().page;
+	var endingY = writer.context().y;
+
+	var xs = getLineXs();
+
+	var ys = [];
+
+	var hasBreaks = pageBreaks && pageBreaks.length > 0;
+	var body = this.tableNode.table.body;
+
+	ys.push({
+		y0: this.rowTopY,
+		page: hasBreaks ? pageBreaks[0].prevPage : endingPage
+	});
+
+	if (hasBreaks) {
+		for (i = 0, l = pageBreaks.length; i < l; i++) {
+			var pageBreak = pageBreaks[i];
+			ys[ys.length - 1].y1 = pageBreak.prevY;
+
+			ys.push({y0: pageBreak.y, page: pageBreak.prevPage + 1});
+
+			if (this.headerRepeatableHeight) {
+				ys[ys.length - 1].y0 += this.headerRepeatableHeight;
+			}
+		}
+	}
+
+	ys[ys.length - 1].y1 = endingY;
+
+	var skipOrphanePadding = (ys[0].y1 - ys[0].y0 === this.rowPaddingTop);
+	for (var yi = (skipOrphanePadding ? 1 : 0), yl = ys.length; yi < yl; yi++) {
+		var willBreak = yi < ys.length - 1;
+		var rowBreakWithoutHeader = (yi > 0 && !this.headerRows);
+		var hzLineOffset = rowBreakWithoutHeader ? 0 : this.topLineWidth;
+		var y1 = ys[yi].y0;
+		var y2 = ys[yi].y1;
+
+		if (willBreak) {
+			y2 = y2 + this.rowPaddingBottom;
+		}
+
+		if (writer.context().page != ys[yi].page) {
+			writer.context().page = ys[yi].page;
+
+			//TODO: buggy, availableHeight should be updated on every pageChanged event
+			// TableProcessor should be pageChanged listener, instead of processRow
+			this.reservedAtBottom = 0;
+		}
+
+		for (i = 0, l = xs.length; i < l; i++) {
+			var leftBorder = false, rightBorder = false;
+			var colIndex = xs[i].index;
+
+			// the current cell
+			if (colIndex < body[rowIndex].length) {
+				var cell = body[rowIndex][colIndex];
+				leftBorder = cell.border ? cell.border[0] : this.layout.defaultBorder;
+			}
+
+			// the cell from before column
+			if (colIndex > 0) {
+				var cell = body[rowIndex][colIndex - 1];
+				rightBorder = cell.border ? cell.border[2] : this.layout.defaultBorder;
+			}
+
+			if (leftBorder || rightBorder) {
+				this.drawVerticalLine(xs[i].x, y1 - hzLineOffset, y2 + this.bottomLineWidth, xs[i].index, writer);
+			}
+
+			if (i < l - 1) {
+				var fillColor = body[rowIndex][colIndex].fillColor;
+				if (!fillColor) {
+					fillColor = isFunction(this.layout.fillColor) ? this.layout.fillColor(rowIndex, this.tableNode, colIndex) : this.layout.fillColor;
+				}
+				if (fillColor) {
+					var wBorder = (leftBorder || rightBorder) ? this.layout.vLineWidth(colIndex, this.tableNode) : 0;
+					var xf = xs[i].x + wBorder;
+					var yf = this.dontBreakRows ? y1 : y1 - hzLineOffset;
+					writer.addVector({
+						type: 'rect',
+						x: xf,
+						y: yf,
+						w: xs[i + 1].x - xf,
+						h: y2 + this.bottomLineWidth - yf,
+						lineWidth: 0,
+						color: fillColor
+					}, false, true, writer.context().hasBackground ? 1 : 0);
+				}
+			}
+		}
+
+		if (willBreak && this.layout.hLineWhenBroken !== false) {
+			this.drawHorizontalLine(rowIndex + 1, writer, y2);
+		}
+		if (rowBreakWithoutHeader && this.layout.hLineWhenBroken !== false) {
+			this.drawHorizontalLine(rowIndex, writer, y1);
+		}
+	}
+
+	writer.context().page = endingPage;
+	writer.context().y = endingY;
+
+	var row = this.tableNode.table.body[rowIndex];
+	for (i = 0, l = row.length; i < l; i++) {
+		if (row[i].rowSpan) {
+			this.rowSpanData[i].rowSpan = row[i].rowSpan;
+
+			// fix colSpans
+			if (row[i].colSpan && row[i].colSpan > 1) {
+				for (var j = 1; j < row[i].rowSpan; j++) {
+					this.tableNode.table.body[rowIndex + j][i]._colSpan = row[i].colSpan;
+				}
+			}
+		}
+
+		if (this.rowSpanData[i].rowSpan > 0) {
+			this.rowSpanData[i].rowSpan--;
+		}
+	}
+
+	this.drawHorizontalLine(rowIndex + 1, writer);
+
+	if (this.headerRows && rowIndex === this.headerRows - 1) {
+		this.headerRepeatable = writer.currentBlockToRepeatable();
+	}
+
+	if (this.dontBreakRows) {
+		writer.tracker.auto('pageChanged',
+			function () {
+				if (!self.headerRows && self.layout.hLineWhenBroken !== false) {
+					self.drawHorizontalLine(rowIndex, writer);
+				}
+			},
+			function () {
+				writer.commitUnbreakableBlock();
+			}
+		);
+	}
+
+	if (this.headerRepeatable && (rowIndex === (this.rowsWithoutPageBreak - 1) || rowIndex === this.tableNode.table.body.length - 1)) {
+		this.headerRepeatableHeight = this.headerRepeatable.height;
+		writer.commitUnbreakableBlock();
+		writer.pushToRepeatables(this.headerRepeatable);
+		this.cleanUpRepeatables = true;
+		this.headerRepeatable = null;
+	}
+
+	function getLineXs() {
+		var result = [];
+		var cols = 0;
+
+		for (var i = 0, l = self.tableNode.table.body[rowIndex].length; i < l; i++) {
+			if (!cols) {
+				result.push({x: self.rowSpanData[i].left, index: i});
+
+				var item = self.tableNode.table.body[rowIndex][i];
+				cols = (item._colSpan || item.colSpan || 0);
+			}
+			if (cols > 0) {
+				cols--;
+			}
+		}
+
+		result.push({x: self.rowSpanData[self.rowSpanData.length - 1].left, index: self.rowSpanData.length - 1});
+
+		return result;
+	}
+};
+
+module.exports = TableProcessor;
+
+
+/***/ }),
+/* 138 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+
+/*
+PDFDocument - represents an entire PDF document
+By Devon Govett
+ */
+
+(function() {
+  var PDFDocument, PDFObject, PDFPage, PDFReference, fs, stream,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  stream = __webpack_require__(15);
+
+  fs = __webpack_require__(8);
+
+  PDFObject = __webpack_require__(26);
+
+  PDFReference = __webpack_require__(87);
+
+  PDFPage = __webpack_require__(161);
+
+  PDFDocument = (function(superClass) {
+    var mixin;
+
+    extend(PDFDocument, superClass);
+
+    function PDFDocument(options1) {
+      var key, ref1, ref2, val;
+      this.options = options1 != null ? options1 : {};
+      PDFDocument.__super__.constructor.apply(this, arguments);
+      this.version = 1.3;
+      this.compress = (ref1 = this.options.compress) != null ? ref1 : true;
+      this._pageBuffer = [];
+      this._pageBufferStart = 0;
+      this._offsets = [];
+      this._waiting = 0;
+      this._ended = false;
+      this._offset = 0;
+      this._root = this.ref({
+        Type: 'Catalog',
+        Pages: this.ref({
+          Type: 'Pages',
+          Count: 0,
+          Kids: []
+        })
+      });
+      this.page = null;
+      this.initColor();
+      this.initVector();
+      this.initFonts();
+      this.initText();
+      this.initImages();
+      this.info = {
+        Producer: 'PDFKit',
+        Creator: 'PDFKit',
+        CreationDate: new Date()
+      };
+      if (this.options.info) {
+        ref2 = this.options.info;
+        for (key in ref2) {
+          val = ref2[key];
+          this.info[key] = val;
+        }
+      }
+      this._write("%PDF-" + this.version);
+      this._write("%\xFF\xFF\xFF\xFF");
+      if (this.options.autoFirstPage !== false) {
+        this.addPage();
+      }
+    }
+
+    mixin = function(methods) {
+      var method, name, results;
+      results = [];
+      for (name in methods) {
+        method = methods[name];
+        results.push(PDFDocument.prototype[name] = method);
+      }
+      return results;
+    };
+
+    mixin(__webpack_require__(162));
+
+    mixin(__webpack_require__(164));
+
+    mixin(__webpack_require__(166));
+
+    mixin(__webpack_require__(295));
+
+    mixin(__webpack_require__(297));
+
+    mixin(__webpack_require__(302));
+
+    PDFDocument.prototype.addPage = function(options) {
+      var pages;
+      if (options == null) {
+        options = this.options;
+      }
+      if (!this.options.bufferPages) {
+        this.flushPages();
+      }
+      this.page = new PDFPage(this, options);
+      this._pageBuffer.push(this.page);
+      pages = this._root.data.Pages.data;
+      pages.Kids.push(this.page.dictionary);
+      pages.Count++;
+      this.x = this.page.margins.left;
+      this.y = this.page.margins.top;
+      this._ctm = [1, 0, 0, 1, 0, 0];
+      this.transform(1, 0, 0, -1, 0, this.page.height);
+      this.emit('pageAdded');
+      return this;
+    };
+
+    PDFDocument.prototype.bufferedPageRange = function() {
+      return {
+        start: this._pageBufferStart,
+        count: this._pageBuffer.length
+      };
+    };
+
+    PDFDocument.prototype.switchToPage = function(n) {
+      var page;
+      if (!(page = this._pageBuffer[n - this._pageBufferStart])) {
+        throw new Error("switchToPage(" + n + ") out of bounds, current buffer covers pages " + this._pageBufferStart + " to " + (this._pageBufferStart + this._pageBuffer.length - 1));
+      }
+      return this.page = page;
+    };
+
+    PDFDocument.prototype.flushPages = function() {
+      var i, len, page, pages;
+      pages = this._pageBuffer;
+      this._pageBuffer = [];
+      this._pageBufferStart += pages.length;
+      for (i = 0, len = pages.length; i < len; i++) {
+        page = pages[i];
+        page.end();
+      }
+    };
+
+    PDFDocument.prototype.ref = function(data) {
+      var ref;
+      ref = new PDFReference(this, this._offsets.length + 1, data);
+      this._offsets.push(null);
+      this._waiting++;
+      return ref;
+    };
+
+    PDFDocument.prototype._read = function() {};
+
+    PDFDocument.prototype._write = function(data) {
+      if (!Buffer.isBuffer(data)) {
+        data = new Buffer(data + '\n', 'binary');
+      }
+      this.push(data);
+      return this._offset += data.length;
+    };
+
+    PDFDocument.prototype.addContent = function(data) {
+      this.page.write(data);
+      return this;
+    };
+
+    PDFDocument.prototype._refEnd = function(ref) {
+      this._offsets[ref.id - 1] = ref.offset;
+      if (--this._waiting === 0 && this._ended) {
+        this._finalize();
+        return this._ended = false;
+      }
+    };
+
+    PDFDocument.prototype.write = function(filename, fn) {
+      var err;
+      err = new Error('PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. Please pipe the document into a Node stream.');
+      console.warn(err.stack);
+      this.pipe(fs.createWriteStream(filename));
+      this.end();
+      return this.once('end', fn);
+    };
+
+    PDFDocument.prototype.output = function(fn) {
+      throw new Error('PDFDocument#output is deprecated, and has been removed from PDFKit. Please pipe the document into a Node stream.');
+    };
+
+    PDFDocument.prototype.end = function() {
+      var font, key, name, ref1, ref2, val;
+      this.flushPages();
+      this._info = this.ref();
+      ref1 = this.info;
+      for (key in ref1) {
+        val = ref1[key];
+        if (typeof val === 'string') {
+          val = new String(val);
+        }
+        this._info.data[key] = val;
+      }
+      this._info.end();
+      ref2 = this._fontFamilies;
+      for (name in ref2) {
+        font = ref2[name];
+        font.finalize();
+      }
+      this._root.end();
+      this._root.data.Pages.end();
+      if (this._waiting === 0) {
+        return this._finalize();
+      } else {
+        return this._ended = true;
+      }
+    };
+
+    PDFDocument.prototype._finalize = function(fn) {
+      var i, len, offset, ref1, xRefOffset;
+      xRefOffset = this._offset;
+      this._write("xref");
+      this._write("0 " + (this._offsets.length + 1));
+      this._write("0000000000 65535 f ");
+      ref1 = this._offsets;
+      for (i = 0, len = ref1.length; i < len; i++) {
+        offset = ref1[i];
+        offset = ('0000000000' + offset).slice(-10);
+        this._write(offset + ' 00000 n ');
+      }
+      this._write('trailer');
+      this._write(PDFObject.convert({
+        Size: this._offsets.length + 1,
+        Root: this._root,
+        Info: this._info
+      }));
+      this._write('startxref');
+      this._write("" + xRefOffset);
+      this._write('%%EOF');
+      return this.push(null);
+    };
+
+    PDFDocument.prototype.toString = function() {
+      return "[object PDFDocument]";
+    };
+
+    return PDFDocument;
+
+  })(stream.Readable);
+
+  module.exports = PDFDocument;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 139 */
+/***/ (function(module, exports) {
+
+/* (ignored) */
+
+/***/ }),
+/* 140 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var Buffer = __webpack_require__(33).Buffer;
+var util = __webpack_require__(141);
+
+function copyBuffer(src, target, offset) {
+  src.copy(target, offset);
+}
+
+module.exports = function () {
+  function BufferList() {
+    _classCallCheck(this, BufferList);
+
+    this.head = null;
+    this.tail = null;
+    this.length = 0;
+  }
+
+  BufferList.prototype.push = function push(v) {
+    var entry = { data: v, next: null };
+    if (this.length > 0) this.tail.next = entry;else this.head = entry;
+    this.tail = entry;
+    ++this.length;
+  };
+
+  BufferList.prototype.unshift = function unshift(v) {
+    var entry = { data: v, next: this.head };
+    if (this.length === 0) this.tail = entry;
+    this.head = entry;
+    ++this.length;
+  };
+
+  BufferList.prototype.shift = function shift() {
+    if (this.length === 0) return;
+    var ret = this.head.data;
+    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
+    --this.length;
+    return ret;
+  };
+
+  BufferList.prototype.clear = function clear() {
+    this.head = this.tail = null;
+    this.length = 0;
+  };
+
+  BufferList.prototype.join = function join(s) {
+    if (this.length === 0) return '';
+    var p = this.head;
+    var ret = '' + p.data;
+    while (p = p.next) {
+      ret += s + p.data;
+    }return ret;
+  };
+
+  BufferList.prototype.concat = function concat(n) {
+    if (this.length === 0) return Buffer.alloc(0);
+    if (this.length === 1) return this.head.data;
+    var ret = Buffer.allocUnsafe(n >>> 0);
+    var p = this.head;
+    var i = 0;
+    while (p) {
+      copyBuffer(p.data, ret, i);
+      i += p.data.length;
+      p = p.next;
+    }
+    return ret;
+  };
+
+  return BufferList;
+}();
+
+if (util && util.inspect && util.inspect.custom) {
+  module.exports.prototype[util.inspect.custom] = function () {
+    var obj = util.inspect({ length: this.length });
+    return this.constructor.name + ' ' + obj;
+  };
+}
+
+/***/ }),
+/* 141 */
+/***/ (function(module, exports) {
+
+/* (ignored) */
+
+/***/ }),
+/* 142 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global) {var apply = Function.prototype.apply;
+
+// DOM APIs, for completeness
+
+exports.setTimeout = function() {
+  return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);
+};
+exports.setInterval = function() {
+  return new Timeout(apply.call(setInterval, window, arguments), clearInterval);
+};
+exports.clearTimeout =
+exports.clearInterval = function(timeout) {
+  if (timeout) {
+    timeout.close();
+  }
+};
+
+function Timeout(id, clearFn) {
+  this._id = id;
+  this._clearFn = clearFn;
+}
+Timeout.prototype.unref = Timeout.prototype.ref = function() {};
+Timeout.prototype.close = function() {
+  this._clearFn.call(window, this._id);
+};
+
+// Does not start the time, just sets up the members needed.
+exports.enroll = function(item, msecs) {
+  clearTimeout(item._idleTimeoutId);
+  item._idleTimeout = msecs;
+};
+
+exports.unenroll = function(item) {
+  clearTimeout(item._idleTimeoutId);
+  item._idleTimeout = -1;
+};
+
+exports._unrefActive = exports.active = function(item) {
+  clearTimeout(item._idleTimeoutId);
+
+  var msecs = item._idleTimeout;
+  if (msecs >= 0) {
+    item._idleTimeoutId = setTimeout(function onTimeout() {
+      if (item._onTimeout)
+        item._onTimeout();
+    }, msecs);
+  }
+};
+
+// setimmediate attaches itself to the global object
+__webpack_require__(143);
+// On some exotic environments, it's not clear which object `setimmeidate` was
+// able to install onto.  Search each possibility in the same order as the
+// `setimmediate` library.
+exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) ||
+                       (typeof global !== "undefined" && global.setImmediate) ||
+                       (this && this.setImmediate);
+exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) ||
+                         (typeof global !== "undefined" && global.clearImmediate) ||
+                         (this && this.clearImmediate);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
+
+/***/ }),
+/* 143 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {
+    "use strict";
+
+    if (global.setImmediate) {
+        return;
+    }
+
+    var nextHandle = 1; // Spec says greater than zero
+    var tasksByHandle = {};
+    var currentlyRunningATask = false;
+    var doc = global.document;
+    var registerImmediate;
+
+    function setImmediate(callback) {
+      // Callback can either be a function or a string
+      if (typeof callback !== "function") {
+        callback = new Function("" + callback);
+      }
+      // Copy function arguments
+      var args = new Array(arguments.length - 1);
+      for (var i = 0; i < args.length; i++) {
+          args[i] = arguments[i + 1];
+      }
+      // Store and register the task
+      var task = { callback: callback, args: args };
+      tasksByHandle[nextHandle] = task;
+      registerImmediate(nextHandle);
+      return nextHandle++;
+    }
+
+    function clearImmediate(handle) {
+        delete tasksByHandle[handle];
+    }
+
+    function run(task) {
+        var callback = task.callback;
+        var args = task.args;
+        switch (args.length) {
+        case 0:
+            callback();
+            break;
+        case 1:
+            callback(args[0]);
+            break;
+        case 2:
+            callback(args[0], args[1]);
+            break;
+        case 3:
+            callback(args[0], args[1], args[2]);
+            break;
+        default:
+            callback.apply(undefined, args);
+            break;
+        }
+    }
+
+    function runIfPresent(handle) {
+        // From the spec: "Wait until any invocations of this algorithm started before this one have completed."
+        // So if we're currently running a task, we'll need to delay this invocation.
+        if (currentlyRunningATask) {
+            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
+            // "too much recursion" error.
+            setTimeout(runIfPresent, 0, handle);
+        } else {
+            var task = tasksByHandle[handle];
+            if (task) {
+                currentlyRunningATask = true;
+                try {
+                    run(task);
+                } finally {
+                    clearImmediate(handle);
+                    currentlyRunningATask = false;
+                }
+            }
+        }
+    }
+
+    function installNextTickImplementation() {
+        registerImmediate = function(handle) {
+            process.nextTick(function () { runIfPresent(handle); });
+        };
+    }
+
+    function canUsePostMessage() {
+        // The test against `importScripts` prevents this implementation from being installed inside a web worker,
+        // where `global.postMessage` means something completely different and can't be used for this purpose.
+        if (global.postMessage && !global.importScripts) {
+            var postMessageIsAsynchronous = true;
+            var oldOnMessage = global.onmessage;
+            global.onmessage = function() {
+                postMessageIsAsynchronous = false;
+            };
+            global.postMessage("", "*");
+            global.onmessage = oldOnMessage;
+            return postMessageIsAsynchronous;
+        }
+    }
+
+    function installPostMessageImplementation() {
+        // Installs an event handler on `global` for the `message` event: see
+        // * https://developer.mozilla.org/en/DOM/window.postMessage
+        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
+
+        var messagePrefix = "setImmediate$" + Math.random() + "$";
+        var onGlobalMessage = function(event) {
+            if (event.source === global &&
+                typeof event.data === "string" &&
+                event.data.indexOf(messagePrefix) === 0) {
+                runIfPresent(+event.data.slice(messagePrefix.length));
+            }
+        };
+
+        if (global.addEventListener) {
+            global.addEventListener("message", onGlobalMessage, false);
+        } else {
+            global.attachEvent("onmessage", onGlobalMessage);
+        }
+
+        registerImmediate = function(handle) {
+            global.postMessage(messagePrefix + handle, "*");
+        };
+    }
+
+    function installMessageChannelImplementation() {
+        var channel = new MessageChannel();
+        channel.port1.onmessage = function(event) {
+            var handle = event.data;
+            runIfPresent(handle);
+        };
+
+        registerImmediate = function(handle) {
+            channel.port2.postMessage(handle);
+        };
+    }
+
+    function installReadyStateChangeImplementation() {
+        var html = doc.documentElement;
+        registerImmediate = function(handle) {
+            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
+            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
+            var script = doc.createElement("script");
+            script.onreadystatechange = function () {
+                runIfPresent(handle);
+                script.onreadystatechange = null;
+                html.removeChild(script);
+                script = null;
+            };
+            html.appendChild(script);
+        };
+    }
+
+    function installSetTimeoutImplementation() {
+        registerImmediate = function(handle) {
+            setTimeout(runIfPresent, 0, handle);
+        };
+    }
+
+    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
+    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
+    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
+
+    // Don't get fooled by e.g. browserify environments.
+    if ({}.toString.call(global.process) === "[object process]") {
+        // For Node.js before 0.9
+        installNextTickImplementation();
+
+    } else if (canUsePostMessage()) {
+        // For non-IE10 modern browsers
+        installPostMessageImplementation();
+
+    } else if (global.MessageChannel) {
+        // For web workers, where supported
+        installMessageChannelImplementation();
+
+    } else if (doc && "onreadystatechange" in doc.createElement("script")) {
+        // For IE 6–8
+        installReadyStateChangeImplementation();
+
+    } else {
+        // For older browsers
+        installSetTimeoutImplementation();
+    }
+
+    attachTo.setImmediate = setImmediate;
+    attachTo.clearImmediate = clearImmediate;
+}(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7), __webpack_require__(11)))
+
+/***/ }),
+/* 144 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global) {
+/**
+ * Module exports.
+ */
+
+module.exports = deprecate;
+
+/**
+ * Mark that a method should not be used.
+ * Returns a modified function which warns once by default.
+ *
+ * If `localStorage.noDeprecation = true` is set, then it is a no-op.
+ *
+ * If `localStorage.throwDeprecation = true` is set, then deprecated functions
+ * will throw an Error when invoked.
+ *
+ * If `localStorage.traceDeprecation = true` is set, then deprecated functions
+ * will invoke `console.trace()` instead of `console.error()`.
+ *
+ * @param {Function} fn - the function to deprecate
+ * @param {String} msg - the string to print to the console when `fn` is invoked
+ * @returns {Function} a new "deprecated" version of `fn`
+ * @api public
+ */
+
+function deprecate (fn, msg) {
+  if (config('noDeprecation')) {
+    return fn;
+  }
+
+  var warned = false;
+  function deprecated() {
+    if (!warned) {
+      if (config('throwDeprecation')) {
+        throw new Error(msg);
+      } else if (config('traceDeprecation')) {
+        console.trace(msg);
+      } else {
+        console.warn(msg);
+      }
+      warned = true;
+    }
+    return fn.apply(this, arguments);
+  }
+
+  return deprecated;
+}
+
+/**
+ * Checks `localStorage` for boolean values for the given `name`.
+ *
+ * @param {String} name
+ * @returns {Boolean}
+ * @api private
+ */
+
+function config (name) {
+  // accessing global.localStorage can trigger a DOMException in sandboxed iframes
+  try {
+    if (!global.localStorage) return false;
+  } catch (_) {
+    return false;
+  }
+  var val = global.localStorage[name];
+  if (null == val) return false;
+  return String(val).toLowerCase() === 'true';
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
+
+/***/ }),
+/* 145 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// a passthrough stream.
+// basically just the most minimal sort of Transform stream.
+// Every written chunk gets output as-is.
+
+
+
+module.exports = PassThrough;
+
+var Transform = __webpack_require__(86);
+
+/*<replacement>*/
+var util = __webpack_require__(25);
+util.inherits = __webpack_require__(21);
+/*</replacement>*/
+
+util.inherits(PassThrough, Transform);
+
+function PassThrough(options) {
+  if (!(this instanceof PassThrough)) return new PassThrough(options);
+
+  Transform.call(this, options);
+}
+
+PassThrough.prototype._transform = function (chunk, encoding, cb) {
+  cb(null, chunk);
+};
+
+/***/ }),
+/* 146 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(46);
+
+
+/***/ }),
+/* 147 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(16);
+
+
+/***/ }),
+/* 148 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(45).Transform
+
+
+/***/ }),
+/* 149 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(45).PassThrough
+
+
+/***/ }),
+/* 150 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer, process) {
+/* eslint camelcase: "off" */
+
+var assert = __webpack_require__(88);
+
+var Zstream = __webpack_require__(153);
+var zlib_deflate = __webpack_require__(154);
+var zlib_inflate = __webpack_require__(157);
+var constants = __webpack_require__(160);
+
+for (var key in constants) {
+  exports[key] = constants[key];
+}
+
+// zlib modes
+exports.NONE = 0;
+exports.DEFLATE = 1;
+exports.INFLATE = 2;
+exports.GZIP = 3;
+exports.GUNZIP = 4;
+exports.DEFLATERAW = 5;
+exports.INFLATERAW = 6;
+exports.UNZIP = 7;
+
+var GZIP_HEADER_ID1 = 0x1f;
+var GZIP_HEADER_ID2 = 0x8b;
+
+/**
+ * Emulate Node's zlib C++ layer for use by the JS layer in index.js
+ */
+function Zlib(mode) {
+  if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {
+    throw new TypeError('Bad argument');
+  }
+
+  this.dictionary = null;
+  this.err = 0;
+  this.flush = 0;
+  this.init_done = false;
+  this.level = 0;
+  this.memLevel = 0;
+  this.mode = mode;
+  this.strategy = 0;
+  this.windowBits = 0;
+  this.write_in_progress = false;
+  this.pending_close = false;
+  this.gzip_id_bytes_read = 0;
+}
+
+Zlib.prototype.close = function () {
+  if (this.write_in_progress) {
+    this.pending_close = true;
+    return;
+  }
+
+  this.pending_close = false;
+
+  assert(this.init_done, 'close before init');
+  assert(this.mode <= exports.UNZIP);
+
+  if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {
+    zlib_deflate.deflateEnd(this.strm);
+  } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {
+    zlib_inflate.inflateEnd(this.strm);
+  }
+
+  this.mode = exports.NONE;
+
+  this.dictionary = null;
+};
+
+Zlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {
+  return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);
+};
+
+Zlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {
+  return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);
+};
+
+Zlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {
+  assert.equal(arguments.length, 8);
+
+  assert(this.init_done, 'write before init');
+  assert(this.mode !== exports.NONE, 'already finalized');
+  assert.equal(false, this.write_in_progress, 'write already in progress');
+  assert.equal(false, this.pending_close, 'close is pending');
+
+  this.write_in_progress = true;
+
+  assert.equal(false, flush === undefined, 'must provide flush value');
+
+  this.write_in_progress = true;
+
+  if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {
+    throw new Error('Invalid flush value');
+  }
+
+  if (input == null) {
+    input = Buffer.alloc(0);
+    in_len = 0;
+    in_off = 0;
+  }
+
+  this.strm.avail_in = in_len;
+  this.strm.input = input;
+  this.strm.next_in = in_off;
+  this.strm.avail_out = out_len;
+  this.strm.output = out;
+  this.strm.next_out = out_off;
+  this.flush = flush;
+
+  if (!async) {
+    // sync version
+    this._process();
+
+    if (this._checkError()) {
+      return this._afterSync();
+    }
+    return;
+  }
+
+  // async version
+  var self = this;
+  process.nextTick(function () {
+    self._process();
+    self._after();
+  });
+
+  return this;
+};
+
+Zlib.prototype._afterSync = function () {
+  var avail_out = this.strm.avail_out;
+  var avail_in = this.strm.avail_in;
+
+  this.write_in_progress = false;
+
+  return [avail_in, avail_out];
+};
+
+Zlib.prototype._process = function () {
+  var next_expected_header_byte = null;
+
+  // If the avail_out is left at 0, then it means that it ran out
+  // of room.  If there was avail_out left over, then it means
+  // that all of the input was consumed.
+  switch (this.mode) {
+    case exports.DEFLATE:
+    case exports.GZIP:
+    case exports.DEFLATERAW:
+      this.err = zlib_deflate.deflate(this.strm, this.flush);
+      break;
+    case exports.UNZIP:
+      if (this.strm.avail_in > 0) {
+        next_expected_header_byte = this.strm.next_in;
+      }
+
+      switch (this.gzip_id_bytes_read) {
+        case 0:
+          if (next_expected_header_byte === null) {
+            break;
+          }
+
+          if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {
+            this.gzip_id_bytes_read = 1;
+            next_expected_header_byte++;
+
+            if (this.strm.avail_in === 1) {
+              // The only available byte was already read.
+              break;
+            }
+          } else {
+            this.mode = exports.INFLATE;
+            break;
+          }
+
+        // fallthrough
+        case 1:
+          if (next_expected_header_byte === null) {
+            break;
+          }
+
+          if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {
+            this.gzip_id_bytes_read = 2;
+            this.mode = exports.GUNZIP;
+          } else {
+            // There is no actual difference between INFLATE and INFLATERAW
+            // (after initialization).
+            this.mode = exports.INFLATE;
+          }
+
+          break;
+        default:
+          throw new Error('invalid number of gzip magic number bytes read');
+      }
+
+    // fallthrough
+    case exports.INFLATE:
+    case exports.GUNZIP:
+    case exports.INFLATERAW:
+      this.err = zlib_inflate.inflate(this.strm, this.flush
+
+      // If data was encoded with dictionary
+      );if (this.err === exports.Z_NEED_DICT && this.dictionary) {
+        // Load it
+        this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);
+        if (this.err === exports.Z_OK) {
+          // And try to decode again
+          this.err = zlib_inflate.inflate(this.strm, this.flush);
+        } else if (this.err === exports.Z_DATA_ERROR) {
+          // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.
+          // Make it possible for After() to tell a bad dictionary from bad
+          // input.
+          this.err = exports.Z_NEED_DICT;
+        }
+      }
+      while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {
+        // Bytes remain in input buffer. Perhaps this is another compressed
+        // member in the same archive, or just trailing garbage.
+        // Trailing zero bytes are okay, though, since they are frequently
+        // used for padding.
+
+        this.reset();
+        this.err = zlib_inflate.inflate(this.strm, this.flush);
+      }
+      break;
+    default:
+      throw new Error('Unknown mode ' + this.mode);
+  }
+};
+
+Zlib.prototype._checkError = function () {
+  // Acceptable error states depend on the type of zlib stream.
+  switch (this.err) {
+    case exports.Z_OK:
+    case exports.Z_BUF_ERROR:
+      if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {
+        this._error('unexpected end of file');
+        return false;
+      }
+      break;
+    case exports.Z_STREAM_END:
+      // normal statuses, not fatal
+      break;
+    case exports.Z_NEED_DICT:
+      if (this.dictionary == null) {
+        this._error('Missing dictionary');
+      } else {
+        this._error('Bad dictionary');
+      }
+      return false;
+    default:
+      // something else.
+      this._error('Zlib error');
+      return false;
+  }
+
+  return true;
+};
+
+Zlib.prototype._after = function () {
+  if (!this._checkError()) {
+    return;
+  }
+
+  var avail_out = this.strm.avail_out;
+  var avail_in = this.strm.avail_in;
+
+  this.write_in_progress = false;
+
+  // call the write() cb
+  this.callback(avail_in, avail_out);
+
+  if (this.pending_close) {
+    this.close();
+  }
+};
+
+Zlib.prototype._error = function (message) {
+  if (this.strm.msg) {
+    message = this.strm.msg;
+  }
+  this.onerror(message, this.err
+
+  // no hope of rescue.
+  );this.write_in_progress = false;
+  if (this.pending_close) {
+    this.close();
+  }
+};
+
+Zlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {
+  assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');
+
+  assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');
+  assert(level >= -1 && level <= 9, 'invalid compression level');
+
+  assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');
+
+  assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');
+
+  this._init(level, windowBits, memLevel, strategy, dictionary);
+  this._setDictionary();
+};
+
+Zlib.prototype.params = function () {
+  throw new Error('deflateParams Not supported');
+};
+
+Zlib.prototype.reset = function () {
+  this._reset();
+  this._setDictionary();
+};
+
+Zlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {
+  this.level = level;
+  this.windowBits = windowBits;
+  this.memLevel = memLevel;
+  this.strategy = strategy;
+
+  this.flush = exports.Z_NO_FLUSH;
+
+  this.err = exports.Z_OK;
+
+  if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {
+    this.windowBits += 16;
+  }
+
+  if (this.mode === exports.UNZIP) {
+    this.windowBits += 32;
+  }
+
+  if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {
+    this.windowBits = -1 * this.windowBits;
+  }
+
+  this.strm = new Zstream();
+
+  switch (this.mode) {
+    case exports.DEFLATE:
+    case exports.GZIP:
+    case exports.DEFLATERAW:
+      this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);
+      break;
+    case exports.INFLATE:
+    case exports.GUNZIP:
+    case exports.INFLATERAW:
+    case exports.UNZIP:
+      this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);
+      break;
+    default:
+      throw new Error('Unknown mode ' + this.mode);
+  }
+
+  if (this.err !== exports.Z_OK) {
+    this._error('Init error');
+  }
+
+  this.dictionary = dictionary;
+
+  this.write_in_progress = false;
+  this.init_done = true;
+};
+
+Zlib.prototype._setDictionary = function () {
+  if (this.dictionary == null) {
+    return;
+  }
+
+  this.err = exports.Z_OK;
+
+  switch (this.mode) {
+    case exports.DEFLATE:
+    case exports.DEFLATERAW:
+      this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);
+      break;
+    default:
+      break;
+  }
+
+  if (this.err !== exports.Z_OK) {
+    this._error('Failed to set dictionary');
+  }
+};
+
+Zlib.prototype._reset = function () {
+  this.err = exports.Z_OK;
+
+  switch (this.mode) {
+    case exports.DEFLATE:
+    case exports.DEFLATERAW:
+    case exports.GZIP:
+      this.err = zlib_deflate.deflateReset(this.strm);
+      break;
+    case exports.INFLATE:
+    case exports.INFLATERAW:
+    case exports.GUNZIP:
+      this.err = zlib_inflate.inflateReset(this.strm);
+      break;
+    default:
+      break;
+  }
+
+  if (this.err !== exports.Z_OK) {
+    this._error('Failed to reset stream');
+  }
+};
+
+exports.Zlib = Zlib;
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, __webpack_require__(11)))
+
+/***/ }),
+/* 151 */
+/***/ (function(module, exports) {
+
+module.exports = function isBuffer(arg) {
+  return arg && typeof arg === 'object'
+    && typeof arg.copy === 'function'
+    && typeof arg.fill === 'function'
+    && typeof arg.readUInt8 === 'function';
+}
+
+/***/ }),
+/* 152 */
+/***/ (function(module, exports) {
+
+if (typeof Object.create === 'function') {
+  // implementation from standard node.js 'util' module
+  module.exports = function inherits(ctor, superCtor) {
+    ctor.super_ = superCtor
+    ctor.prototype = Object.create(superCtor.prototype, {
+      constructor: {
+        value: ctor,
+        enumerable: false,
+        writable: true,
+        configurable: true
+      }
+    });
+  };
+} else {
+  // old school shim for old browsers
+  module.exports = function inherits(ctor, superCtor) {
+    ctor.super_ = superCtor
+    var TempCtor = function () {}
+    TempCtor.prototype = superCtor.prototype
+    ctor.prototype = new TempCtor()
+    ctor.prototype.constructor = ctor
+  }
+}
+
+
+/***/ }),
+/* 153 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+function ZStream() {
+  /* next input byte */
+  this.input = null; // JS specific, because we have no pointers
+  this.next_in = 0;
+  /* number of bytes available at input */
+  this.avail_in = 0;
+  /* total number of input bytes read so far */
+  this.total_in = 0;
+  /* next output byte should be put there */
+  this.output = null; // JS specific, because we have no pointers
+  this.next_out = 0;
+  /* remaining free space at output */
+  this.avail_out = 0;
+  /* total number of bytes output so far */
+  this.total_out = 0;
+  /* last error message, NULL if no error */
+  this.msg = ''/*Z_NULL*/;
+  /* not visible by applications */
+  this.state = null;
+  /* best guess about the data type: binary or text */
+  this.data_type = 2/*Z_UNKNOWN*/;
+  /* adler32 value of the uncompressed data */
+  this.adler = 0;
+}
+
+module.exports = ZStream;
+
+
+/***/ }),
+/* 154 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils   = __webpack_require__(34);
+var trees   = __webpack_require__(155);
+var adler32 = __webpack_require__(89);
+var crc32   = __webpack_require__(90);
+var msg     = __webpack_require__(156);
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+var Z_NO_FLUSH      = 0;
+var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+//var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+//var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+//var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+
+/* compression levels */
+//var Z_NO_COMPRESSION      = 0;
+//var Z_BEST_SPEED          = 1;
+//var Z_BEST_COMPRESSION    = 9;
+var Z_DEFAULT_COMPRESSION = -1;
+
+
+var Z_FILTERED            = 1;
+var Z_HUFFMAN_ONLY        = 2;
+var Z_RLE                 = 3;
+var Z_FIXED               = 4;
+var Z_DEFAULT_STRATEGY    = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+//var Z_BINARY              = 0;
+//var Z_TEXT                = 1;
+//var Z_ASCII               = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+/*============================================================================*/
+
+
+var MAX_MEM_LEVEL = 9;
+/* Maximum value for memLevel in deflateInit2 */
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_MEM_LEVEL = 8;
+
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+var D_CODES       = 30;
+/* number of distance codes */
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+var HEAP_SIZE     = 2 * L_CODES + 1;
+/* maximum heap size */
+var MAX_BITS  = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var MIN_MATCH = 3;
+var MAX_MATCH = 258;
+var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
+
+var PRESET_DICT = 0x20;
+
+var INIT_STATE = 42;
+var EXTRA_STATE = 69;
+var NAME_STATE = 73;
+var COMMENT_STATE = 91;
+var HCRC_STATE = 103;
+var BUSY_STATE = 113;
+var FINISH_STATE = 666;
+
+var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
+var BS_BLOCK_DONE     = 2; /* block flush performed */
+var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
+var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */
+
+var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
+
+function err(strm, errorCode) {
+  strm.msg = msg[errorCode];
+  return errorCode;
+}
+
+function rank(f) {
+  return ((f) << 1) - ((f) > 4 ? 9 : 0);
+}
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+
+/* =========================================================================
+ * Flush as much pending output as possible. All deflate() output goes
+ * through this function so some applications may wish to modify it
+ * to avoid allocating a large strm->output buffer and copying into it.
+ * (See also read_buf()).
+ */
+function flush_pending(strm) {
+  var s = strm.state;
+
+  //_tr_flush_bits(s);
+  var len = s.pending;
+  if (len > strm.avail_out) {
+    len = strm.avail_out;
+  }
+  if (len === 0) { return; }
+
+  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
+  strm.next_out += len;
+  s.pending_out += len;
+  strm.total_out += len;
+  strm.avail_out -= len;
+  s.pending -= len;
+  if (s.pending === 0) {
+    s.pending_out = 0;
+  }
+}
+
+
+function flush_block_only(s, last) {
+  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
+  s.block_start = s.strstart;
+  flush_pending(s.strm);
+}
+
+
+function put_byte(s, b) {
+  s.pending_buf[s.pending++] = b;
+}
+
+
+/* =========================================================================
+ * Put a short in the pending buffer. The 16-bit value is put in MSB order.
+ * IN assertion: the stream state is correct and there is enough room in
+ * pending_buf.
+ */
+function putShortMSB(s, b) {
+//  put_byte(s, (Byte)(b >> 8));
+//  put_byte(s, (Byte)(b & 0xff));
+  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
+  s.pending_buf[s.pending++] = b & 0xff;
+}
+
+
+/* ===========================================================================
+ * Read a new buffer from the current input stream, update the adler32
+ * and total number of bytes read.  All deflate() input goes through
+ * this function so some applications may wish to modify it to avoid
+ * allocating a large strm->input buffer and copying from it.
+ * (See also flush_pending()).
+ */
+function read_buf(strm, buf, start, size) {
+  var len = strm.avail_in;
+
+  if (len > size) { len = size; }
+  if (len === 0) { return 0; }
+
+  strm.avail_in -= len;
+
+  // zmemcpy(buf, strm->next_in, len);
+  utils.arraySet(buf, strm.input, strm.next_in, len, start);
+  if (strm.state.wrap === 1) {
+    strm.adler = adler32(strm.adler, buf, len, start);
+  }
+
+  else if (strm.state.wrap === 2) {
+    strm.adler = crc32(strm.adler, buf, len, start);
+  }
+
+  strm.next_in += len;
+  strm.total_in += len;
+
+  return len;
+}
+
+
+/* ===========================================================================
+ * Set match_start to the longest match starting at the given string and
+ * return its length. Matches shorter or equal to prev_length are discarded,
+ * in which case the result is equal to prev_length and match_start is
+ * garbage.
+ * IN assertions: cur_match is the head of the hash chain for the current
+ *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
+ * OUT assertion: the match length is not greater than s->lookahead.
+ */
+function longest_match(s, cur_match) {
+  var chain_length = s.max_chain_length;      /* max hash chain length */
+  var scan = s.strstart; /* current string */
+  var match;                       /* matched string */
+  var len;                           /* length of current match */
+  var best_len = s.prev_length;              /* best match length so far */
+  var nice_match = s.nice_match;             /* stop if match long enough */
+  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
+      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
+
+  var _win = s.window; // shortcut
+
+  var wmask = s.w_mask;
+  var prev  = s.prev;
+
+  /* Stop when cur_match becomes <= limit. To simplify the code,
+   * we prevent matches with the string of window index 0.
+   */
+
+  var strend = s.strstart + MAX_MATCH;
+  var scan_end1  = _win[scan + best_len - 1];
+  var scan_end   = _win[scan + best_len];
+
+  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
+   * It is easy to get rid of this optimization if necessary.
+   */
+  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
+
+  /* Do not waste too much time if we already have a good match: */
+  if (s.prev_length >= s.good_match) {
+    chain_length >>= 2;
+  }
+  /* Do not look for matches beyond the end of the input. This is necessary
+   * to make deflate deterministic.
+   */
+  if (nice_match > s.lookahead) { nice_match = s.lookahead; }
+
+  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+
+  do {
+    // Assert(cur_match < s->strstart, "no future");
+    match = cur_match;
+
+    /* Skip to next match if the match length cannot increase
+     * or if the match length is less than 2.  Note that the checks below
+     * for insufficient lookahead only occur occasionally for performance
+     * reasons.  Therefore uninitialized memory will be accessed, and
+     * conditional jumps will be made that depend on those values.
+     * However the length of the match is limited to the lookahead, so
+     * the output of deflate is not affected by the uninitialized values.
+     */
+
+    if (_win[match + best_len]     !== scan_end  ||
+        _win[match + best_len - 1] !== scan_end1 ||
+        _win[match]                !== _win[scan] ||
+        _win[++match]              !== _win[scan + 1]) {
+      continue;
+    }
+
+    /* The check at best_len-1 can be removed because it will be made
+     * again later. (This heuristic is not always a win.)
+     * It is not necessary to compare scan[2] and match[2] since they
+     * are always equal when the other bytes match, given that
+     * the hash keys are equal and that HASH_BITS >= 8.
+     */
+    scan += 2;
+    match++;
+    // Assert(*scan == *match, "match[2]?");
+
+    /* We check for insufficient lookahead only every 8th comparison;
+     * the 256th check will be made at strstart+258.
+     */
+    do {
+      /*jshint noempty:false*/
+    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             scan < strend);
+
+    // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+
+    len = MAX_MATCH - (strend - scan);
+    scan = strend - MAX_MATCH;
+
+    if (len > best_len) {
+      s.match_start = cur_match;
+      best_len = len;
+      if (len >= nice_match) {
+        break;
+      }
+      scan_end1  = _win[scan + best_len - 1];
+      scan_end   = _win[scan + best_len];
+    }
+  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
+
+  if (best_len <= s.lookahead) {
+    return best_len;
+  }
+  return s.lookahead;
+}
+
+
+/* ===========================================================================
+ * Fill the window when the lookahead becomes insufficient.
+ * Updates strstart and lookahead.
+ *
+ * IN assertion: lookahead < MIN_LOOKAHEAD
+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
+ *    At least one byte has been read, or avail_in == 0; reads are
+ *    performed for at least two bytes (required for the zip translate_eol
+ *    option -- not supported here).
+ */
+function fill_window(s) {
+  var _w_size = s.w_size;
+  var p, n, m, more, str;
+
+  //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+
+  do {
+    more = s.window_size - s.lookahead - s.strstart;
+
+    // JS ints have 32 bit, block below not needed
+    /* Deal with !@#$% 64K limit: */
+    //if (sizeof(int) <= 2) {
+    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+    //        more = wsize;
+    //
+    //  } else if (more == (unsigned)(-1)) {
+    //        /* Very unlikely, but possible on 16 bit machine if
+    //         * strstart == 0 && lookahead == 1 (input done a byte at time)
+    //         */
+    //        more--;
+    //    }
+    //}
+
+
+    /* If the window is almost full and there is insufficient lookahead,
+     * move the upper half to the lower one to make room in the upper half.
+     */
+    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
+
+      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
+      s.match_start -= _w_size;
+      s.strstart -= _w_size;
+      /* we now have strstart >= MAX_DIST */
+      s.block_start -= _w_size;
+
+      /* Slide the hash table (could be avoided with 32 bit values
+       at the expense of memory usage). We slide even when level == 0
+       to keep the hash table consistent if we switch back to level > 0
+       later. (Using level 0 permanently is not an optimal usage of
+       zlib, so we don't care about this pathological case.)
+       */
+
+      n = s.hash_size;
+      p = n;
+      do {
+        m = s.head[--p];
+        s.head[p] = (m >= _w_size ? m - _w_size : 0);
+      } while (--n);
+
+      n = _w_size;
+      p = n;
+      do {
+        m = s.prev[--p];
+        s.prev[p] = (m >= _w_size ? m - _w_size : 0);
+        /* If n is not on any hash chain, prev[n] is garbage but
+         * its value will never be used.
+         */
+      } while (--n);
+
+      more += _w_size;
+    }
+    if (s.strm.avail_in === 0) {
+      break;
+    }
+
+    /* If there was no sliding:
+     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+     *    more == window_size - lookahead - strstart
+     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+     * => more >= window_size - 2*WSIZE + 2
+     * In the BIG_MEM or MMAP case (not yet supported),
+     *   window_size == input_size + MIN_LOOKAHEAD  &&
+     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+     * Otherwise, window_size == 2*WSIZE so more >= 2.
+     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+     */
+    //Assert(more >= 2, "more < 2");
+    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
+    s.lookahead += n;
+
+    /* Initialize the hash value now that we have some input: */
+    if (s.lookahead + s.insert >= MIN_MATCH) {
+      str = s.strstart - s.insert;
+      s.ins_h = s.window[str];
+
+      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
+//#if MIN_MATCH != 3
+//        Call update_hash() MIN_MATCH-3 more times
+//#endif
+      while (s.insert) {
+        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
+
+        s.prev[str & s.w_mask] = s.head[s.ins_h];
+        s.head[s.ins_h] = str;
+        str++;
+        s.insert--;
+        if (s.lookahead + s.insert < MIN_MATCH) {
+          break;
+        }
+      }
+    }
+    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+     * but this is not important since only literal bytes will be emitted.
+     */
+
+  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
+
+  /* If the WIN_INIT bytes after the end of the current data have never been
+   * written, then zero those bytes in order to avoid memory check reports of
+   * the use of uninitialized (or uninitialised as Julian writes) bytes by
+   * the longest match routines.  Update the high water mark for the next
+   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+   */
+//  if (s.high_water < s.window_size) {
+//    var curr = s.strstart + s.lookahead;
+//    var init = 0;
+//
+//    if (s.high_water < curr) {
+//      /* Previous high water mark below current data -- zero WIN_INIT
+//       * bytes or up to end of window, whichever is less.
+//       */
+//      init = s.window_size - curr;
+//      if (init > WIN_INIT)
+//        init = WIN_INIT;
+//      zmemzero(s->window + curr, (unsigned)init);
+//      s->high_water = curr + init;
+//    }
+//    else if (s->high_water < (ulg)curr + WIN_INIT) {
+//      /* High water mark at or above current data, but below current data
+//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+//       * to end of window, whichever is less.
+//       */
+//      init = (ulg)curr + WIN_INIT - s->high_water;
+//      if (init > s->window_size - s->high_water)
+//        init = s->window_size - s->high_water;
+//      zmemzero(s->window + s->high_water, (unsigned)init);
+//      s->high_water += init;
+//    }
+//  }
+//
+//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+//    "not enough room for search");
+}
+
+/* ===========================================================================
+ * Copy without compression as much as possible from the input stream, return
+ * the current block state.
+ * This function does not insert new strings in the dictionary since
+ * uncompressible data is probably not useful. This function is used
+ * only for the level=0 compression option.
+ * NOTE: this function should be optimized to avoid extra copying from
+ * window to pending_buf.
+ */
+function deflate_stored(s, flush) {
+  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
+   * to pending_buf_size, and each stored block has a 5 byte header:
+   */
+  var max_block_size = 0xffff;
+
+  if (max_block_size > s.pending_buf_size - 5) {
+    max_block_size = s.pending_buf_size - 5;
+  }
+
+  /* Copy as much as possible from input to output: */
+  for (;;) {
+    /* Fill the window as much as possible: */
+    if (s.lookahead <= 1) {
+
+      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
+      //  s->block_start >= (long)s->w_size, "slide too late");
+//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
+//        s.block_start >= s.w_size)) {
+//        throw  new Error("slide too late");
+//      }
+
+      fill_window(s);
+      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+
+      if (s.lookahead === 0) {
+        break;
+      }
+      /* flush the current block */
+    }
+    //Assert(s->block_start >= 0L, "block gone");
+//    if (s.block_start < 0) throw new Error("block gone");
+
+    s.strstart += s.lookahead;
+    s.lookahead = 0;
+
+    /* Emit a stored block if pending_buf will be full: */
+    var max_start = s.block_start + max_block_size;
+
+    if (s.strstart === 0 || s.strstart >= max_start) {
+      /* strstart == 0 is possible when wraparound on 16-bit machine */
+      s.lookahead = s.strstart - max_start;
+      s.strstart = max_start;
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+
+
+    }
+    /* Flush if we may have to slide, otherwise block_start may become
+     * negative and the data will be gone:
+     */
+    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+
+  s.insert = 0;
+
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+
+  if (s.strstart > s.block_start) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_NEED_MORE;
+}
+
+/* ===========================================================================
+ * Compress as much as possible from the input stream, return the current
+ * block state.
+ * This function does not perform lazy evaluation of matches and inserts
+ * new strings in the dictionary only for unmatched strings or for short
+ * matches. It is used only for the fast compression options.
+ */
+function deflate_fast(s, flush) {
+  var hash_head;        /* head of the hash chain */
+  var bflush;           /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) {
+        break; /* flush the current block */
+      }
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     * At this point we have always match_length < MIN_MATCH
+     */
+    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+    }
+    if (s.match_length >= MIN_MATCH) {
+      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
+
+      /*** _tr_tally_dist(s, s.strstart - s.match_start,
+                     s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+
+      /* Insert new strings in the hash table only if the match length
+       * is not too large. This saves time but degrades compression.
+       */
+      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
+        s.match_length--; /* string at strstart already in table */
+        do {
+          s.strstart++;
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+          /* strstart never exceeds WSIZE-MAX_MATCH, so there are
+           * always MIN_MATCH bytes ahead.
+           */
+        } while (--s.match_length !== 0);
+        s.strstart++;
+      } else
+      {
+        s.strstart += s.match_length;
+        s.match_length = 0;
+        s.ins_h = s.window[s.strstart];
+        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;
+
+//#if MIN_MATCH != 3
+//                Call UPDATE_HASH() MIN_MATCH-3 more times
+//#endif
+        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
+         * matter since it will be recomputed at next deflate call.
+         */
+      }
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s.window[s.strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * Same as above, but achieves better compression. We use a lazy
+ * evaluation for matches: a match is finally adopted only if there is
+ * no better match at the next window position.
+ */
+function deflate_slow(s, flush) {
+  var hash_head;          /* head of hash chain */
+  var bflush;              /* set if current block must be flushed */
+
+  var max_insert;
+
+  /* Process the input block. */
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     */
+    s.prev_length = s.match_length;
+    s.prev_match = s.match_start;
+    s.match_length = MIN_MATCH - 1;
+
+    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
+        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+
+      if (s.match_length <= 5 &&
+         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
+
+        /* If prev_match is also MIN_MATCH, match_start is garbage
+         * but we will ignore the current match anyway.
+         */
+        s.match_length = MIN_MATCH - 1;
+      }
+    }
+    /* If there was a match at the previous step and the current
+     * match is not better, output the previous match:
+     */
+    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
+      max_insert = s.strstart + s.lookahead - MIN_MATCH;
+      /* Do not insert strings in hash table beyond this. */
+
+      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
+
+      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
+                     s.prev_length - MIN_MATCH, bflush);***/
+      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
+      /* Insert in hash table all strings up to the end of the match.
+       * strstart-1 and strstart are already inserted. If there is not
+       * enough lookahead, the last two strings are not inserted in
+       * the hash table.
+       */
+      s.lookahead -= s.prev_length - 1;
+      s.prev_length -= 2;
+      do {
+        if (++s.strstart <= max_insert) {
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+        }
+      } while (--s.prev_length !== 0);
+      s.match_available = 0;
+      s.match_length = MIN_MATCH - 1;
+      s.strstart++;
+
+      if (bflush) {
+        /*** FLUSH_BLOCK(s, 0); ***/
+        flush_block_only(s, false);
+        if (s.strm.avail_out === 0) {
+          return BS_NEED_MORE;
+        }
+        /***/
+      }
+
+    } else if (s.match_available) {
+      /* If there was no match at the previous position, output a
+       * single literal. If there was a match but the current match
+       * is longer, truncate the previous match to a single literal.
+       */
+      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
+
+      if (bflush) {
+        /*** FLUSH_BLOCK_ONLY(s, 0) ***/
+        flush_block_only(s, false);
+        /***/
+      }
+      s.strstart++;
+      s.lookahead--;
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+    } else {
+      /* There is no previous match to compare with, wait for
+       * the next step to decide.
+       */
+      s.match_available = 1;
+      s.strstart++;
+      s.lookahead--;
+    }
+  }
+  //Assert (flush != Z_NO_FLUSH, "no flush?");
+  if (s.match_available) {
+    //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
+
+    s.match_available = 0;
+  }
+  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_BLOCK_DONE;
+}
+
+
+/* ===========================================================================
+ * For Z_RLE, simply look for runs of bytes, generate matches only of distance
+ * one.  Do not maintain a hash table.  (It will be regenerated if this run of
+ * deflate switches away from Z_RLE.)
+ */
+function deflate_rle(s, flush) {
+  var bflush;            /* set if current block must be flushed */
+  var prev;              /* byte at distance one to match */
+  var scan, strend;      /* scan goes up to strend for length of run */
+
+  var _win = s.window;
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the longest run, plus one for the unrolled loop.
+     */
+    if (s.lookahead <= MAX_MATCH) {
+      fill_window(s);
+      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* See how many times the previous byte repeats */
+    s.match_length = 0;
+    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
+      scan = s.strstart - 1;
+      prev = _win[scan];
+      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
+        strend = s.strstart + MAX_MATCH;
+        do {
+          /*jshint noempty:false*/
+        } while (prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 scan < strend);
+        s.match_length = MAX_MATCH - (strend - scan);
+        if (s.match_length > s.lookahead) {
+          s.match_length = s.lookahead;
+        }
+      }
+      //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
+    }
+
+    /* Emit match if have run of MIN_MATCH or longer, else emit literal */
+    if (s.match_length >= MIN_MATCH) {
+      //check_match(s, s.strstart, s.strstart - 1, s.match_length);
+
+      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+      s.strstart += s.match_length;
+      s.match_length = 0;
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s->window[s->strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
+ * (It will be regenerated if this run of deflate switches away from Huffman.)
+ */
+function deflate_huff(s, flush) {
+  var bflush;             /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we have a literal to write. */
+    if (s.lookahead === 0) {
+      fill_window(s);
+      if (s.lookahead === 0) {
+        if (flush === Z_NO_FLUSH) {
+          return BS_NEED_MORE;
+        }
+        break;      /* flush the current block */
+      }
+    }
+
+    /* Output a literal byte */
+    s.match_length = 0;
+    //Tracevv((stderr,"%c", s->window[s->strstart]));
+    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+    s.lookahead--;
+    s.strstart++;
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* Values for max_lazy_match, good_match and max_chain_length, depending on
+ * the desired pack level (0..9). The values given below have been tuned to
+ * exclude worst case performance for pathological files. Better values may be
+ * found for specific files.
+ */
+function Config(good_length, max_lazy, nice_length, max_chain, func) {
+  this.good_length = good_length;
+  this.max_lazy = max_lazy;
+  this.nice_length = nice_length;
+  this.max_chain = max_chain;
+  this.func = func;
+}
+
+var configuration_table;
+
+configuration_table = [
+  /*      good lazy nice chain */
+  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
+  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
+  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
+  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */
+
+  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
+  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
+  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
+  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
+  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
+  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
+];
+
+
+/* ===========================================================================
+ * Initialize the "longest match" routines for a new zlib stream
+ */
+function lm_init(s) {
+  s.window_size = 2 * s.w_size;
+
+  /*** CLEAR_HASH(s); ***/
+  zero(s.head); // Fill with NIL (= 0);
+
+  /* Set the default configuration parameters:
+   */
+  s.max_lazy_match = configuration_table[s.level].max_lazy;
+  s.good_match = configuration_table[s.level].good_length;
+  s.nice_match = configuration_table[s.level].nice_length;
+  s.max_chain_length = configuration_table[s.level].max_chain;
+
+  s.strstart = 0;
+  s.block_start = 0;
+  s.lookahead = 0;
+  s.insert = 0;
+  s.match_length = s.prev_length = MIN_MATCH - 1;
+  s.match_available = 0;
+  s.ins_h = 0;
+}
+
+
+function DeflateState() {
+  this.strm = null;            /* pointer back to this zlib stream */
+  this.status = 0;            /* as the name implies */
+  this.pending_buf = null;      /* output still pending */
+  this.pending_buf_size = 0;  /* size of pending_buf */
+  this.pending_out = 0;       /* next pending byte to output to the stream */
+  this.pending = 0;           /* nb of bytes in the pending buffer */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.gzhead = null;         /* gzip header information to write */
+  this.gzindex = 0;           /* where in extra, name, or comment */
+  this.method = Z_DEFLATED; /* can only be DEFLATED */
+  this.last_flush = -1;   /* value of flush param for previous deflate call */
+
+  this.w_size = 0;  /* LZ77 window size (32K by default) */
+  this.w_bits = 0;  /* log2(w_size)  (8..16) */
+  this.w_mask = 0;  /* w_size - 1 */
+
+  this.window = null;
+  /* Sliding window. Input bytes are read into the second half of the window,
+   * and move to the first half later to keep a dictionary of at least wSize
+   * bytes. With this organization, matches are limited to a distance of
+   * wSize-MAX_MATCH bytes, but this ensures that IO is always
+   * performed with a length multiple of the block size.
+   */
+
+  this.window_size = 0;
+  /* Actual size of window: 2*wSize, except when the user input buffer
+   * is directly used as sliding window.
+   */
+
+  this.prev = null;
+  /* Link to older string with same hash index. To limit the size of this
+   * array to 64K, this link is maintained only for the last 32K strings.
+   * An index in this array is thus a window index modulo 32K.
+   */
+
+  this.head = null;   /* Heads of the hash chains or NIL. */
+
+  this.ins_h = 0;       /* hash index of string to be inserted */
+  this.hash_size = 0;   /* number of elements in hash table */
+  this.hash_bits = 0;   /* log2(hash_size) */
+  this.hash_mask = 0;   /* hash_size-1 */
+
+  this.hash_shift = 0;
+  /* Number of bits by which ins_h must be shifted at each input
+   * step. It must be such that after MIN_MATCH steps, the oldest
+   * byte no longer takes part in the hash key, that is:
+   *   hash_shift * MIN_MATCH >= hash_bits
+   */
+
+  this.block_start = 0;
+  /* Window position at the beginning of the current output block. Gets
+   * negative when the window is moved backwards.
+   */
+
+  this.match_length = 0;      /* length of best match */
+  this.prev_match = 0;        /* previous match */
+  this.match_available = 0;   /* set if previous match exists */
+  this.strstart = 0;          /* start of string to insert */
+  this.match_start = 0;       /* start of matching string */
+  this.lookahead = 0;         /* number of valid bytes ahead in window */
+
+  this.prev_length = 0;
+  /* Length of the best match at previous step. Matches not greater than this
+   * are discarded. This is used in the lazy match evaluation.
+   */
+
+  this.max_chain_length = 0;
+  /* To speed up deflation, hash chains are never searched beyond this
+   * length.  A higher limit improves compression ratio but degrades the
+   * speed.
+   */
+
+  this.max_lazy_match = 0;
+  /* Attempt to find a better match only when the current match is strictly
+   * smaller than this value. This mechanism is used only for compression
+   * levels >= 4.
+   */
+  // That's alias to max_lazy_match, don't use directly
+  //this.max_insert_length = 0;
+  /* Insert new strings in the hash table only if the match length is not
+   * greater than this length. This saves time but degrades compression.
+   * max_insert_length is used only for compression levels <= 3.
+   */
+
+  this.level = 0;     /* compression level (1..9) */
+  this.strategy = 0;  /* favor or force Huffman coding*/
+
+  this.good_match = 0;
+  /* Use a faster search when the previous match is longer than this */
+
+  this.nice_match = 0; /* Stop searching when current match exceeds this */
+
+              /* used by trees.c: */
+
+  /* Didn't use ct_data typedef below to suppress compiler warning */
+
+  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
+  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
+  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
+
+  // Use flat array of DOUBLE size, with interleaved fata,
+  // because JS does not support effective
+  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
+  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);
+  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);
+  zero(this.dyn_ltree);
+  zero(this.dyn_dtree);
+  zero(this.bl_tree);
+
+  this.l_desc   = null;         /* desc. for literal tree */
+  this.d_desc   = null;         /* desc. for distance tree */
+  this.bl_desc  = null;         /* desc. for bit length tree */
+
+  //ush bl_count[MAX_BITS+1];
+  this.bl_count = new utils.Buf16(MAX_BITS + 1);
+  /* number of codes at each bit length for an optimal tree */
+
+  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
+  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */
+  zero(this.heap);
+
+  this.heap_len = 0;               /* number of elements in the heap */
+  this.heap_max = 0;               /* element of largest frequency */
+  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
+   * The same heap array is used to build all trees.
+   */
+
+  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];
+  zero(this.depth);
+  /* Depth of each subtree used as tie breaker for trees of equal frequency
+   */
+
+  this.l_buf = 0;          /* buffer index for literals or lengths */
+
+  this.lit_bufsize = 0;
+  /* Size of match buffer for literals/lengths.  There are 4 reasons for
+   * limiting lit_bufsize to 64K:
+   *   - frequencies can be kept in 16 bit counters
+   *   - if compression is not successful for the first block, all input
+   *     data is still in the window so we can still emit a stored block even
+   *     when input comes from standard input.  (This can also be done for
+   *     all blocks if lit_bufsize is not greater than 32K.)
+   *   - if compression is not successful for a file smaller than 64K, we can
+   *     even emit a stored file instead of a stored block (saving 5 bytes).
+   *     This is applicable only for zip (not gzip or zlib).
+   *   - creating new Huffman trees less frequently may not provide fast
+   *     adaptation to changes in the input data statistics. (Take for
+   *     example a binary file with poorly compressible code followed by
+   *     a highly compressible string table.) Smaller buffer sizes give
+   *     fast adaptation but have of course the overhead of transmitting
+   *     trees more frequently.
+   *   - I can't count above 4
+   */
+
+  this.last_lit = 0;      /* running index in l_buf */
+
+  this.d_buf = 0;
+  /* Buffer index for distances. To simplify the code, d_buf and l_buf have
+   * the same number of elements. To use different lengths, an extra flag
+   * array would be necessary.
+   */
+
+  this.opt_len = 0;       /* bit length of current block with optimal trees */
+  this.static_len = 0;    /* bit length of current block with static trees */
+  this.matches = 0;       /* number of string matches in current block */
+  this.insert = 0;        /* bytes at end of window left to insert */
+
+
+  this.bi_buf = 0;
+  /* Output buffer. bits are inserted starting at the bottom (least
+   * significant bits).
+   */
+  this.bi_valid = 0;
+  /* Number of valid bits in bi_buf.  All bits above the last valid bit
+   * are always zero.
+   */
+
+  // Used for window memory init. We safely ignore it for JS. That makes
+  // sense only for pointers and memory check tools.
+  //this.high_water = 0;
+  /* High water mark offset in window for initialized bytes -- bytes above
+   * this are set to zero in order to avoid memory check warnings when
+   * longest match routines access bytes past the input.  This is then
+   * updated to the new high water mark.
+   */
+}
+
+
+function deflateResetKeep(strm) {
+  var s;
+
+  if (!strm || !strm.state) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.total_in = strm.total_out = 0;
+  strm.data_type = Z_UNKNOWN;
+
+  s = strm.state;
+  s.pending = 0;
+  s.pending_out = 0;
+
+  if (s.wrap < 0) {
+    s.wrap = -s.wrap;
+    /* was made negative by deflate(..., Z_FINISH); */
+  }
+  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
+  strm.adler = (s.wrap === 2) ?
+    0  // crc32(0, Z_NULL, 0)
+  :
+    1; // adler32(0, Z_NULL, 0)
+  s.last_flush = Z_NO_FLUSH;
+  trees._tr_init(s);
+  return Z_OK;
+}
+
+
+function deflateReset(strm) {
+  var ret = deflateResetKeep(strm);
+  if (ret === Z_OK) {
+    lm_init(strm.state);
+  }
+  return ret;
+}
+
+
+function deflateSetHeader(strm, head) {
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
+  strm.state.gzhead = head;
+  return Z_OK;
+}
+
+
+function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
+  if (!strm) { // === Z_NULL
+    return Z_STREAM_ERROR;
+  }
+  var wrap = 1;
+
+  if (level === Z_DEFAULT_COMPRESSION) {
+    level = 6;
+  }
+
+  if (windowBits < 0) { /* suppress zlib wrapper */
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+
+  else if (windowBits > 15) {
+    wrap = 2;           /* write gzip wrapper instead */
+    windowBits -= 16;
+  }
+
+
+  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
+    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
+    strategy < 0 || strategy > Z_FIXED) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+
+  if (windowBits === 8) {
+    windowBits = 9;
+  }
+  /* until 256-byte window bug fixed */
+
+  var s = new DeflateState();
+
+  strm.state = s;
+  s.strm = strm;
+
+  s.wrap = wrap;
+  s.gzhead = null;
+  s.w_bits = windowBits;
+  s.w_size = 1 << s.w_bits;
+  s.w_mask = s.w_size - 1;
+
+  s.hash_bits = memLevel + 7;
+  s.hash_size = 1 << s.hash_bits;
+  s.hash_mask = s.hash_size - 1;
+  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
+
+  s.window = new utils.Buf8(s.w_size * 2);
+  s.head = new utils.Buf16(s.hash_size);
+  s.prev = new utils.Buf16(s.w_size);
+
+  // Don't need mem init magic for JS.
+  //s.high_water = 0;  /* nothing written to s->window yet */
+
+  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
+
+  s.pending_buf_size = s.lit_bufsize * 4;
+
+  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
+  //s->pending_buf = (uchf *) overlay;
+  s.pending_buf = new utils.Buf8(s.pending_buf_size);
+
+  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)
+  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
+  s.d_buf = 1 * s.lit_bufsize;
+
+  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
+  s.l_buf = (1 + 2) * s.lit_bufsize;
+
+  s.level = level;
+  s.strategy = strategy;
+  s.method = method;
+
+  return deflateReset(strm);
+}
+
+function deflateInit(strm, level) {
+  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
+}
+
+
+function deflate(strm, flush) {
+  var old_flush, s;
+  var beg, val; // for gzip header write only
+
+  if (!strm || !strm.state ||
+    flush > Z_BLOCK || flush < 0) {
+    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
+  }
+
+  s = strm.state;
+
+  if (!strm.output ||
+      (!strm.input && strm.avail_in !== 0) ||
+      (s.status === FINISH_STATE && flush !== Z_FINISH)) {
+    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
+  }
+
+  s.strm = strm; /* just in case */
+  old_flush = s.last_flush;
+  s.last_flush = flush;
+
+  /* Write the header */
+  if (s.status === INIT_STATE) {
+
+    if (s.wrap === 2) { // GZIP header
+      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
+      put_byte(s, 31);
+      put_byte(s, 139);
+      put_byte(s, 8);
+      if (!s.gzhead) { // s->gzhead == Z_NULL
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, OS_CODE);
+        s.status = BUSY_STATE;
+      }
+      else {
+        put_byte(s, (s.gzhead.text ? 1 : 0) +
+                    (s.gzhead.hcrc ? 2 : 0) +
+                    (!s.gzhead.extra ? 0 : 4) +
+                    (!s.gzhead.name ? 0 : 8) +
+                    (!s.gzhead.comment ? 0 : 16)
+                );
+        put_byte(s, s.gzhead.time & 0xff);
+        put_byte(s, (s.gzhead.time >> 8) & 0xff);
+        put_byte(s, (s.gzhead.time >> 16) & 0xff);
+        put_byte(s, (s.gzhead.time >> 24) & 0xff);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, s.gzhead.os & 0xff);
+        if (s.gzhead.extra && s.gzhead.extra.length) {
+          put_byte(s, s.gzhead.extra.length & 0xff);
+          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
+        }
+        if (s.gzhead.hcrc) {
+          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
+        }
+        s.gzindex = 0;
+        s.status = EXTRA_STATE;
+      }
+    }
+    else // DEFLATE header
+    {
+      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
+      var level_flags = -1;
+
+      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
+        level_flags = 0;
+      } else if (s.level < 6) {
+        level_flags = 1;
+      } else if (s.level === 6) {
+        level_flags = 2;
+      } else {
+        level_flags = 3;
+      }
+      header |= (level_flags << 6);
+      if (s.strstart !== 0) { header |= PRESET_DICT; }
+      header += 31 - (header % 31);
+
+      s.status = BUSY_STATE;
+      putShortMSB(s, header);
+
+      /* Save the adler32 of the preset dictionary: */
+      if (s.strstart !== 0) {
+        putShortMSB(s, strm.adler >>> 16);
+        putShortMSB(s, strm.adler & 0xffff);
+      }
+      strm.adler = 1; // adler32(0L, Z_NULL, 0);
+    }
+  }
+
+//#ifdef GZIP
+  if (s.status === EXTRA_STATE) {
+    if (s.gzhead.extra/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+
+      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            break;
+          }
+        }
+        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
+        s.gzindex++;
+      }
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (s.gzindex === s.gzhead.extra.length) {
+        s.gzindex = 0;
+        s.status = NAME_STATE;
+      }
+    }
+    else {
+      s.status = NAME_STATE;
+    }
+  }
+  if (s.status === NAME_STATE) {
+    if (s.gzhead.name/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.name.length) {
+          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.gzindex = 0;
+        s.status = COMMENT_STATE;
+      }
+    }
+    else {
+      s.status = COMMENT_STATE;
+    }
+  }
+  if (s.status === COMMENT_STATE) {
+    if (s.gzhead.comment/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.comment.length) {
+          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.status = HCRC_STATE;
+      }
+    }
+    else {
+      s.status = HCRC_STATE;
+    }
+  }
+  if (s.status === HCRC_STATE) {
+    if (s.gzhead.hcrc) {
+      if (s.pending + 2 > s.pending_buf_size) {
+        flush_pending(strm);
+      }
+      if (s.pending + 2 <= s.pending_buf_size) {
+        put_byte(s, strm.adler & 0xff);
+        put_byte(s, (strm.adler >> 8) & 0xff);
+        strm.adler = 0; //crc32(0L, Z_NULL, 0);
+        s.status = BUSY_STATE;
+      }
+    }
+    else {
+      s.status = BUSY_STATE;
+    }
+  }
+//#endif
+
+  /* Flush as much pending output as possible */
+  if (s.pending !== 0) {
+    flush_pending(strm);
+    if (strm.avail_out === 0) {
+      /* Since avail_out is 0, deflate will be called again with
+       * more output space, but possibly with both pending and
+       * avail_in equal to zero. There won't be anything to do,
+       * but this is not an error situation so make sure we
+       * return OK instead of BUF_ERROR at next call of deflate:
+       */
+      s.last_flush = -1;
+      return Z_OK;
+    }
+
+    /* Make sure there is something to do and avoid duplicate consecutive
+     * flushes. For repeated and useless calls with Z_FINISH, we keep
+     * returning Z_STREAM_END instead of Z_BUF_ERROR.
+     */
+  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
+    flush !== Z_FINISH) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* User must not provide more input after the first FINISH: */
+  if (s.status === FINISH_STATE && strm.avail_in !== 0) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* Start a new block or continue the current one.
+   */
+  if (strm.avail_in !== 0 || s.lookahead !== 0 ||
+    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
+    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
+      (s.strategy === Z_RLE ? deflate_rle(s, flush) :
+        configuration_table[s.level].func(s, flush));
+
+    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
+      s.status = FINISH_STATE;
+    }
+    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
+      if (strm.avail_out === 0) {
+        s.last_flush = -1;
+        /* avoid BUF_ERROR next call, see above */
+      }
+      return Z_OK;
+      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
+       * of deflate should use the same flush parameter to make sure
+       * that the flush is complete. So we don't have to output an
+       * empty block here, this will be done at next call. This also
+       * ensures that for a very small output buffer, we emit at most
+       * one empty block.
+       */
+    }
+    if (bstate === BS_BLOCK_DONE) {
+      if (flush === Z_PARTIAL_FLUSH) {
+        trees._tr_align(s);
+      }
+      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
+
+        trees._tr_stored_block(s, 0, 0, false);
+        /* For a full flush, this empty block will be recognized
+         * as a special marker by inflate_sync().
+         */
+        if (flush === Z_FULL_FLUSH) {
+          /*** CLEAR_HASH(s); ***/             /* forget history */
+          zero(s.head); // Fill with NIL (= 0);
+
+          if (s.lookahead === 0) {
+            s.strstart = 0;
+            s.block_start = 0;
+            s.insert = 0;
+          }
+        }
+      }
+      flush_pending(strm);
+      if (strm.avail_out === 0) {
+        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
+        return Z_OK;
+      }
+    }
+  }
+  //Assert(strm->avail_out > 0, "bug2");
+  //if (strm.avail_out <= 0) { throw new Error("bug2");}
+
+  if (flush !== Z_FINISH) { return Z_OK; }
+  if (s.wrap <= 0) { return Z_STREAM_END; }
+
+  /* Write the trailer */
+  if (s.wrap === 2) {
+    put_byte(s, strm.adler & 0xff);
+    put_byte(s, (strm.adler >> 8) & 0xff);
+    put_byte(s, (strm.adler >> 16) & 0xff);
+    put_byte(s, (strm.adler >> 24) & 0xff);
+    put_byte(s, strm.total_in & 0xff);
+    put_byte(s, (strm.total_in >> 8) & 0xff);
+    put_byte(s, (strm.total_in >> 16) & 0xff);
+    put_byte(s, (strm.total_in >> 24) & 0xff);
+  }
+  else
+  {
+    putShortMSB(s, strm.adler >>> 16);
+    putShortMSB(s, strm.adler & 0xffff);
+  }
+
+  flush_pending(strm);
+  /* If avail_out is zero, the application will call deflate again
+   * to flush the rest.
+   */
+  if (s.wrap > 0) { s.wrap = -s.wrap; }
+  /* write the trailer only once! */
+  return s.pending !== 0 ? Z_OK : Z_STREAM_END;
+}
+
+function deflateEnd(strm) {
+  var status;
+
+  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  status = strm.state.status;
+  if (status !== INIT_STATE &&
+    status !== EXTRA_STATE &&
+    status !== NAME_STATE &&
+    status !== COMMENT_STATE &&
+    status !== HCRC_STATE &&
+    status !== BUSY_STATE &&
+    status !== FINISH_STATE
+  ) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.state = null;
+
+  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
+}
+
+
+/* =========================================================================
+ * Initializes the compression dictionary from the given byte
+ * sequence without producing any compressed output.
+ */
+function deflateSetDictionary(strm, dictionary) {
+  var dictLength = dictionary.length;
+
+  var s;
+  var str, n;
+  var wrap;
+  var avail;
+  var next;
+  var input;
+  var tmpDict;
+
+  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  s = strm.state;
+  wrap = s.wrap;
+
+  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {
+    return Z_STREAM_ERROR;
+  }
+
+  /* when using zlib wrappers, compute Adler-32 for provided dictionary */
+  if (wrap === 1) {
+    /* adler32(strm->adler, dictionary, dictLength); */
+    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
+  }
+
+  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */
+
+  /* if dictionary would fill window, just replace the history */
+  if (dictLength >= s.w_size) {
+    if (wrap === 0) {            /* already empty otherwise */
+      /*** CLEAR_HASH(s); ***/
+      zero(s.head); // Fill with NIL (= 0);
+      s.strstart = 0;
+      s.block_start = 0;
+      s.insert = 0;
+    }
+    /* use the tail */
+    // dictionary = dictionary.slice(dictLength - s.w_size);
+    tmpDict = new utils.Buf8(s.w_size);
+    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
+    dictionary = tmpDict;
+    dictLength = s.w_size;
+  }
+  /* insert dictionary into window and hash */
+  avail = strm.avail_in;
+  next = strm.next_in;
+  input = strm.input;
+  strm.avail_in = dictLength;
+  strm.next_in = 0;
+  strm.input = dictionary;
+  fill_window(s);
+  while (s.lookahead >= MIN_MATCH) {
+    str = s.strstart;
+    n = s.lookahead - (MIN_MATCH - 1);
+    do {
+      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
+
+      s.prev[str & s.w_mask] = s.head[s.ins_h];
+
+      s.head[s.ins_h] = str;
+      str++;
+    } while (--n);
+    s.strstart = str;
+    s.lookahead = MIN_MATCH - 1;
+    fill_window(s);
+  }
+  s.strstart += s.lookahead;
+  s.block_start = s.strstart;
+  s.insert = s.lookahead;
+  s.lookahead = 0;
+  s.match_length = s.prev_length = MIN_MATCH - 1;
+  s.match_available = 0;
+  strm.next_in = next;
+  strm.input = input;
+  strm.avail_in = avail;
+  s.wrap = wrap;
+  return Z_OK;
+}
+
+
+exports.deflateInit = deflateInit;
+exports.deflateInit2 = deflateInit2;
+exports.deflateReset = deflateReset;
+exports.deflateResetKeep = deflateResetKeep;
+exports.deflateSetHeader = deflateSetHeader;
+exports.deflate = deflate;
+exports.deflateEnd = deflateEnd;
+exports.deflateSetDictionary = deflateSetDictionary;
+exports.deflateInfo = 'pako deflate (from Nodeca project)';
+
+/* Not implemented
+exports.deflateBound = deflateBound;
+exports.deflateCopy = deflateCopy;
+exports.deflateParams = deflateParams;
+exports.deflatePending = deflatePending;
+exports.deflatePrime = deflatePrime;
+exports.deflateTune = deflateTune;
+*/
+
+
+/***/ }),
+/* 155 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils = __webpack_require__(34);
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+//var Z_FILTERED          = 1;
+//var Z_HUFFMAN_ONLY      = 2;
+//var Z_RLE               = 3;
+var Z_FIXED               = 4;
+//var Z_DEFAULT_STRATEGY  = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+var Z_BINARY              = 0;
+var Z_TEXT                = 1;
+//var Z_ASCII             = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+/*============================================================================*/
+
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+// From zutil.h
+
+var STORED_BLOCK = 0;
+var STATIC_TREES = 1;
+var DYN_TREES    = 2;
+/* The three kinds of block type */
+
+var MIN_MATCH    = 3;
+var MAX_MATCH    = 258;
+/* The minimum and maximum match lengths */
+
+// From deflate.h
+/* ===========================================================================
+ * Internal compression state.
+ */
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+
+var D_CODES       = 30;
+/* number of distance codes */
+
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+
+var HEAP_SIZE     = 2 * L_CODES + 1;
+/* maximum heap size */
+
+var MAX_BITS      = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var Buf_size      = 16;
+/* size of bit buffer in bi_buf */
+
+
+/* ===========================================================================
+ * Constants
+ */
+
+var MAX_BL_BITS = 7;
+/* Bit length codes must not exceed MAX_BL_BITS bits */
+
+var END_BLOCK   = 256;
+/* end of block literal code */
+
+var REP_3_6     = 16;
+/* repeat previous bit length 3-6 times (2 bits of repeat count) */
+
+var REPZ_3_10   = 17;
+/* repeat a zero length 3-10 times  (3 bits of repeat count) */
+
+var REPZ_11_138 = 18;
+/* repeat a zero length 11-138 times  (7 bits of repeat count) */
+
+/* eslint-disable comma-spacing,array-bracket-spacing */
+var extra_lbits =   /* extra bits for each length code */
+  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];
+
+var extra_dbits =   /* extra bits for each distance code */
+  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];
+
+var extra_blbits =  /* extra bits for each bit length code */
+  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];
+
+var bl_order =
+  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
+/* eslint-enable comma-spacing,array-bracket-spacing */
+
+/* The lengths of the bit length codes are sent in order of decreasing
+ * probability, to avoid transmitting the lengths for unused bit length codes.
+ */
+
+/* ===========================================================================
+ * Local data. These are initialized only once.
+ */
+
+// We pre-fill arrays with 0 to avoid uninitialized gaps
+
+var DIST_CODE_LEN = 512; /* see definition of array dist_code below */
+
+// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1
+var static_ltree  = new Array((L_CODES + 2) * 2);
+zero(static_ltree);
+/* The static literal tree. Since the bit lengths are imposed, there is no
+ * need for the L_CODES extra codes used during heap construction. However
+ * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
+ * below).
+ */
+
+var static_dtree  = new Array(D_CODES * 2);
+zero(static_dtree);
+/* The static distance tree. (Actually a trivial tree since all codes use
+ * 5 bits.)
+ */
+
+var _dist_code    = new Array(DIST_CODE_LEN);
+zero(_dist_code);
+/* Distance codes. The first 256 values correspond to the distances
+ * 3 .. 258, the last 256 values correspond to the top 8 bits of
+ * the 15 bit distances.
+ */
+
+var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);
+zero(_length_code);
+/* length code for each normalized match length (0 == MIN_MATCH) */
+
+var base_length   = new Array(LENGTH_CODES);
+zero(base_length);
+/* First normalized length for each code (0 = MIN_MATCH) */
+
+var base_dist     = new Array(D_CODES);
+zero(base_dist);
+/* First normalized distance for each code (0 = distance of 1) */
+
+
+function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
+
+  this.static_tree  = static_tree;  /* static tree or NULL */
+  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
+  this.extra_base   = extra_base;   /* base index for extra_bits */
+  this.elems        = elems;        /* max number of elements in the tree */
+  this.max_length   = max_length;   /* max bit length for the codes */
+
+  // show if `static_tree` has data or dummy - needed for monomorphic objects
+  this.has_stree    = static_tree && static_tree.length;
+}
+
+
+var static_l_desc;
+var static_d_desc;
+var static_bl_desc;
+
+
+function TreeDesc(dyn_tree, stat_desc) {
+  this.dyn_tree = dyn_tree;     /* the dynamic tree */
+  this.max_code = 0;            /* largest code with non zero frequency */
+  this.stat_desc = stat_desc;   /* the corresponding static tree */
+}
+
+
+
+function d_code(dist) {
+  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
+}
+
+
+/* ===========================================================================
+ * Output a short LSB first on the stream.
+ * IN assertion: there is enough room in pendingBuf.
+ */
+function put_short(s, w) {
+//    put_byte(s, (uch)((w) & 0xff));
+//    put_byte(s, (uch)((ush)(w) >> 8));
+  s.pending_buf[s.pending++] = (w) & 0xff;
+  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
+}
+
+
+/* ===========================================================================
+ * Send a value on a given number of bits.
+ * IN assertion: length <= 16 and value fits in length bits.
+ */
+function send_bits(s, value, length) {
+  if (s.bi_valid > (Buf_size - length)) {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    put_short(s, s.bi_buf);
+    s.bi_buf = value >> (Buf_size - s.bi_valid);
+    s.bi_valid += length - Buf_size;
+  } else {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    s.bi_valid += length;
+  }
+}
+
+
+function send_code(s, c, tree) {
+  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);
+}
+
+
+/* ===========================================================================
+ * Reverse the first len bits of a code, using straightforward code (a faster
+ * method would use a table)
+ * IN assertion: 1 <= len <= 15
+ */
+function bi_reverse(code, len) {
+  var res = 0;
+  do {
+    res |= code & 1;
+    code >>>= 1;
+    res <<= 1;
+  } while (--len > 0);
+  return res >>> 1;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer, keeping at most 7 bits in it.
+ */
+function bi_flush(s) {
+  if (s.bi_valid === 16) {
+    put_short(s, s.bi_buf);
+    s.bi_buf = 0;
+    s.bi_valid = 0;
+
+  } else if (s.bi_valid >= 8) {
+    s.pending_buf[s.pending++] = s.bi_buf & 0xff;
+    s.bi_buf >>= 8;
+    s.bi_valid -= 8;
+  }
+}
+
+
+/* ===========================================================================
+ * Compute the optimal bit lengths for a tree and update the total bit length
+ * for the current block.
+ * IN assertion: the fields freq and dad are set, heap[heap_max] and
+ *    above are the tree nodes sorted by increasing frequency.
+ * OUT assertions: the field len is set to the optimal bit length, the
+ *     array bl_count contains the frequencies for each bit length.
+ *     The length opt_len is updated; static_len is also updated if stree is
+ *     not null.
+ */
+function gen_bitlen(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc;    /* the tree descriptor */
+{
+  var tree            = desc.dyn_tree;
+  var max_code        = desc.max_code;
+  var stree           = desc.stat_desc.static_tree;
+  var has_stree       = desc.stat_desc.has_stree;
+  var extra           = desc.stat_desc.extra_bits;
+  var base            = desc.stat_desc.extra_base;
+  var max_length      = desc.stat_desc.max_length;
+  var h;              /* heap index */
+  var n, m;           /* iterate over the tree elements */
+  var bits;           /* bit length */
+  var xbits;          /* extra bits */
+  var f;              /* frequency */
+  var overflow = 0;   /* number of elements with bit length too large */
+
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    s.bl_count[bits] = 0;
+  }
+
+  /* In a first pass, compute the optimal bit lengths (which may
+   * overflow in the case of the bit length tree).
+   */
+  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */
+
+  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
+    n = s.heap[h];
+    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
+    if (bits > max_length) {
+      bits = max_length;
+      overflow++;
+    }
+    tree[n * 2 + 1]/*.Len*/ = bits;
+    /* We overwrite tree[n].Dad which is no longer needed */
+
+    if (n > max_code) { continue; } /* not a leaf node */
+
+    s.bl_count[bits]++;
+    xbits = 0;
+    if (n >= base) {
+      xbits = extra[n - base];
+    }
+    f = tree[n * 2]/*.Freq*/;
+    s.opt_len += f * (bits + xbits);
+    if (has_stree) {
+      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);
+    }
+  }
+  if (overflow === 0) { return; }
+
+  // Trace((stderr,"\nbit length overflow\n"));
+  /* This happens for example on obj2 and pic of the Calgary corpus */
+
+  /* Find the first bit length which could increase: */
+  do {
+    bits = max_length - 1;
+    while (s.bl_count[bits] === 0) { bits--; }
+    s.bl_count[bits]--;      /* move one leaf down the tree */
+    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */
+    s.bl_count[max_length]--;
+    /* The brother of the overflow item also moves one step up,
+     * but this does not affect bl_count[max_length]
+     */
+    overflow -= 2;
+  } while (overflow > 0);
+
+  /* Now recompute all bit lengths, scanning in increasing frequency.
+   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
+   * lengths instead of fixing only the wrong ones. This idea is taken
+   * from 'ar' written by Haruhiko Okumura.)
+   */
+  for (bits = max_length; bits !== 0; bits--) {
+    n = s.bl_count[bits];
+    while (n !== 0) {
+      m = s.heap[--h];
+      if (m > max_code) { continue; }
+      if (tree[m * 2 + 1]/*.Len*/ !== bits) {
+        // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
+        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;
+        tree[m * 2 + 1]/*.Len*/ = bits;
+      }
+      n--;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Generate the codes for a given tree and bit counts (which need not be
+ * optimal).
+ * IN assertion: the array bl_count contains the bit length statistics for
+ * the given tree and the field len is set for all tree elements.
+ * OUT assertion: the field code is set for all tree elements of non
+ *     zero code length.
+ */
+function gen_codes(tree, max_code, bl_count)
+//    ct_data *tree;             /* the tree to decorate */
+//    int max_code;              /* largest code with non zero frequency */
+//    ushf *bl_count;            /* number of codes at each bit length */
+{
+  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */
+  var code = 0;              /* running code value */
+  var bits;                  /* bit index */
+  var n;                     /* code index */
+
+  /* The distribution counts are first used to generate the code values
+   * without bit reversal.
+   */
+  for (bits = 1; bits <= MAX_BITS; bits++) {
+    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;
+  }
+  /* Check that the bit counts in bl_count are consistent. The last code
+   * must be all ones.
+   */
+  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
+  //        "inconsistent bit counts");
+  //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
+
+  for (n = 0;  n <= max_code; n++) {
+    var len = tree[n * 2 + 1]/*.Len*/;
+    if (len === 0) { continue; }
+    /* Now reverse the bits */
+    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);
+
+    //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
+    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
+  }
+}
+
+
+/* ===========================================================================
+ * Initialize the various 'constant' tables.
+ */
+function tr_static_init() {
+  var n;        /* iterates over tree elements */
+  var bits;     /* bit counter */
+  var length;   /* length value */
+  var code;     /* code value */
+  var dist;     /* distance index */
+  var bl_count = new Array(MAX_BITS + 1);
+  /* number of codes at each bit length for an optimal tree */
+
+  // do check in _tr_init()
+  //if (static_init_done) return;
+
+  /* For some embedded targets, global variables are not initialized: */
+/*#ifdef NO_INIT_GLOBAL_POINTERS
+  static_l_desc.static_tree = static_ltree;
+  static_l_desc.extra_bits = extra_lbits;
+  static_d_desc.static_tree = static_dtree;
+  static_d_desc.extra_bits = extra_dbits;
+  static_bl_desc.extra_bits = extra_blbits;
+#endif*/
+
+  /* Initialize the mapping length (0..255) -> length code (0..28) */
+  length = 0;
+  for (code = 0; code < LENGTH_CODES - 1; code++) {
+    base_length[code] = length;
+    for (n = 0; n < (1 << extra_lbits[code]); n++) {
+      _length_code[length++] = code;
+    }
+  }
+  //Assert (length == 256, "tr_static_init: length != 256");
+  /* Note that the length 255 (match length 258) can be represented
+   * in two different ways: code 284 + 5 bits or code 285, so we
+   * overwrite length_code[255] to use the best encoding:
+   */
+  _length_code[length - 1] = code;
+
+  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
+  dist = 0;
+  for (code = 0; code < 16; code++) {
+    base_dist[code] = dist;
+    for (n = 0; n < (1 << extra_dbits[code]); n++) {
+      _dist_code[dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: dist != 256");
+  dist >>= 7; /* from now on, all distances are divided by 128 */
+  for (; code < D_CODES; code++) {
+    base_dist[code] = dist << 7;
+    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
+      _dist_code[256 + dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: 256+dist != 512");
+
+  /* Construct the codes of the static literal tree */
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    bl_count[bits] = 0;
+  }
+
+  n = 0;
+  while (n <= 143) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  while (n <= 255) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 9;
+    n++;
+    bl_count[9]++;
+  }
+  while (n <= 279) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 7;
+    n++;
+    bl_count[7]++;
+  }
+  while (n <= 287) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  /* Codes 286 and 287 do not exist, but we must include them in the
+   * tree construction to get a canonical Huffman tree (longest code
+   * all ones)
+   */
+  gen_codes(static_ltree, L_CODES + 1, bl_count);
+
+  /* The static distance tree is trivial: */
+  for (n = 0; n < D_CODES; n++) {
+    static_dtree[n * 2 + 1]/*.Len*/ = 5;
+    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);
+  }
+
+  // Now data ready and we can init static trees
+  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
+  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
+  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);
+
+  //static_init_done = true;
+}
+
+
+/* ===========================================================================
+ * Initialize a new block.
+ */
+function init_block(s) {
+  var n; /* iterates over tree elements */
+
+  /* Initialize the trees. */
+  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }
+  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }
+  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }
+
+  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;
+  s.opt_len = s.static_len = 0;
+  s.last_lit = s.matches = 0;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer and align the output on a byte boundary
+ */
+function bi_windup(s)
+{
+  if (s.bi_valid > 8) {
+    put_short(s, s.bi_buf);
+  } else if (s.bi_valid > 0) {
+    //put_byte(s, (Byte)s->bi_buf);
+    s.pending_buf[s.pending++] = s.bi_buf;
+  }
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+}
+
+/* ===========================================================================
+ * Copy a stored block, storing first the length and its
+ * one's complement if requested.
+ */
+function copy_block(s, buf, len, header)
+//DeflateState *s;
+//charf    *buf;    /* the input data */
+//unsigned len;     /* its length */
+//int      header;  /* true if block header must be written */
+{
+  bi_windup(s);        /* align on byte boundary */
+
+  if (header) {
+    put_short(s, len);
+    put_short(s, ~len);
+  }
+//  while (len--) {
+//    put_byte(s, *buf++);
+//  }
+  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
+  s.pending += len;
+}
+
+/* ===========================================================================
+ * Compares to subtrees, using the tree depth as tie breaker when
+ * the subtrees have equal frequency. This minimizes the worst case length.
+ */
+function smaller(tree, n, m, depth) {
+  var _n2 = n * 2;
+  var _m2 = m * 2;
+  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
+         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
+}
+
+/* ===========================================================================
+ * Restore the heap property by moving down the tree starting at node k,
+ * exchanging a node with the smallest of its two sons if necessary, stopping
+ * when the heap property is re-established (each father smaller than its
+ * two sons).
+ */
+function pqdownheap(s, tree, k)
+//    deflate_state *s;
+//    ct_data *tree;  /* the tree to restore */
+//    int k;               /* node to move down */
+{
+  var v = s.heap[k];
+  var j = k << 1;  /* left son of k */
+  while (j <= s.heap_len) {
+    /* Set j to the smallest of the two sons: */
+    if (j < s.heap_len &&
+      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
+      j++;
+    }
+    /* Exit if v is smaller than both sons */
+    if (smaller(tree, v, s.heap[j], s.depth)) { break; }
+
+    /* Exchange v with the smallest son */
+    s.heap[k] = s.heap[j];
+    k = j;
+
+    /* And continue down the tree, setting j to the left son of k */
+    j <<= 1;
+  }
+  s.heap[k] = v;
+}
+
+
+// inlined manually
+// var SMALLEST = 1;
+
+/* ===========================================================================
+ * Send the block data compressed using the given Huffman trees
+ */
+function compress_block(s, ltree, dtree)
+//    deflate_state *s;
+//    const ct_data *ltree; /* literal tree */
+//    const ct_data *dtree; /* distance tree */
+{
+  var dist;           /* distance of matched string */
+  var lc;             /* match length or unmatched char (if dist == 0) */
+  var lx = 0;         /* running index in l_buf */
+  var code;           /* the code to send */
+  var extra;          /* number of extra bits to send */
+
+  if (s.last_lit !== 0) {
+    do {
+      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);
+      lc = s.pending_buf[s.l_buf + lx];
+      lx++;
+
+      if (dist === 0) {
+        send_code(s, lc, ltree); /* send a literal byte */
+        //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
+      } else {
+        /* Here, lc is the match length - MIN_MATCH */
+        code = _length_code[lc];
+        send_code(s, code + LITERALS + 1, ltree); /* send the length code */
+        extra = extra_lbits[code];
+        if (extra !== 0) {
+          lc -= base_length[code];
+          send_bits(s, lc, extra);       /* send the extra length bits */
+        }
+        dist--; /* dist is now the match distance - 1 */
+        code = d_code(dist);
+        //Assert (code < D_CODES, "bad d_code");
+
+        send_code(s, code, dtree);       /* send the distance code */
+        extra = extra_dbits[code];
+        if (extra !== 0) {
+          dist -= base_dist[code];
+          send_bits(s, dist, extra);   /* send the extra distance bits */
+        }
+      } /* literal or match pair ? */
+
+      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
+      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
+      //       "pendingBuf overflow");
+
+    } while (lx < s.last_lit);
+  }
+
+  send_code(s, END_BLOCK, ltree);
+}
+
+
+/* ===========================================================================
+ * Construct one Huffman tree and assigns the code bit strings and lengths.
+ * Update the total bit length for the current block.
+ * IN assertion: the field freq is set for all tree elements.
+ * OUT assertions: the fields len and code are set to the optimal bit length
+ *     and corresponding code. The length opt_len is updated; static_len is
+ *     also updated if stree is not null. The field max_code is set.
+ */
+function build_tree(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc; /* the tree descriptor */
+{
+  var tree     = desc.dyn_tree;
+  var stree    = desc.stat_desc.static_tree;
+  var has_stree = desc.stat_desc.has_stree;
+  var elems    = desc.stat_desc.elems;
+  var n, m;          /* iterate over heap elements */
+  var max_code = -1; /* largest code with non zero frequency */
+  var node;          /* new node being created */
+
+  /* Construct the initial heap, with least frequent element in
+   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
+   * heap[0] is not used.
+   */
+  s.heap_len = 0;
+  s.heap_max = HEAP_SIZE;
+
+  for (n = 0; n < elems; n++) {
+    if (tree[n * 2]/*.Freq*/ !== 0) {
+      s.heap[++s.heap_len] = max_code = n;
+      s.depth[n] = 0;
+
+    } else {
+      tree[n * 2 + 1]/*.Len*/ = 0;
+    }
+  }
+
+  /* The pkzip format requires that at least one distance code exists,
+   * and that at least one bit should be sent even if there is only one
+   * possible code. So to avoid special checks later on we force at least
+   * two codes of non zero frequency.
+   */
+  while (s.heap_len < 2) {
+    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
+    tree[node * 2]/*.Freq*/ = 1;
+    s.depth[node] = 0;
+    s.opt_len--;
+
+    if (has_stree) {
+      s.static_len -= stree[node * 2 + 1]/*.Len*/;
+    }
+    /* node is 0 or 1 so it does not have extra bits */
+  }
+  desc.max_code = max_code;
+
+  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
+   * establish sub-heaps of increasing lengths:
+   */
+  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
+
+  /* Construct the Huffman tree by repeatedly combining the least two
+   * frequent nodes.
+   */
+  node = elems;              /* next internal node of the tree */
+  do {
+    //pqremove(s, tree, n);  /* n = node of least frequency */
+    /*** pqremove ***/
+    n = s.heap[1/*SMALLEST*/];
+    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+    /***/
+
+    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
+
+    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
+    s.heap[--s.heap_max] = m;
+
+    /* Create a new node father of n and m */
+    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
+    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
+    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;
+
+    /* and insert the new node in the heap */
+    s.heap[1/*SMALLEST*/] = node++;
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+
+  } while (s.heap_len >= 2);
+
+  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
+
+  /* At this point, the fields freq and dad are set. We can now
+   * generate the bit lengths.
+   */
+  gen_bitlen(s, desc);
+
+  /* The field len is now set, we can generate the bit codes */
+  gen_codes(tree, max_code, s.bl_count);
+}
+
+
+/* ===========================================================================
+ * Scan a literal or distance tree to determine the frequencies of the codes
+ * in the bit length tree.
+ */
+function scan_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree;   /* the tree to be scanned */
+//    int max_code;    /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      s.bl_tree[curlen * 2]/*.Freq*/ += count;
+
+    } else if (curlen !== 0) {
+
+      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
+      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;
+
+    } else if (count <= 10) {
+      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;
+
+    } else {
+      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
+    }
+
+    count = 0;
+    prevlen = curlen;
+
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Send a literal or distance tree in compressed form, using the codes in
+ * bl_tree.
+ */
+function send_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree; /* the tree to be scanned */
+//    int max_code;       /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  /* tree[max_code+1].Len = -1; */  /* guard already set */
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
+
+    } else if (curlen !== 0) {
+      if (curlen !== prevlen) {
+        send_code(s, curlen, s.bl_tree);
+        count--;
+      }
+      //Assert(count >= 3 && count <= 6, " 3_6?");
+      send_code(s, REP_3_6, s.bl_tree);
+      send_bits(s, count - 3, 2);
+
+    } else if (count <= 10) {
+      send_code(s, REPZ_3_10, s.bl_tree);
+      send_bits(s, count - 3, 3);
+
+    } else {
+      send_code(s, REPZ_11_138, s.bl_tree);
+      send_bits(s, count - 11, 7);
+    }
+
+    count = 0;
+    prevlen = curlen;
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Construct the Huffman tree for the bit lengths and return the index in
+ * bl_order of the last bit length code to send.
+ */
+function build_bl_tree(s) {
+  var max_blindex;  /* index of last bit length code of non zero freq */
+
+  /* Determine the bit length frequencies for literal and distance trees */
+  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
+  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
+
+  /* Build the bit length tree: */
+  build_tree(s, s.bl_desc);
+  /* opt_len now includes the length of the tree representations, except
+   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
+   */
+
+  /* Determine the number of bit length codes to send. The pkzip format
+   * requires that at least 4 bit length codes be sent. (appnote.txt says
+   * 3 but the actual value used is 4.)
+   */
+  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
+    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {
+      break;
+    }
+  }
+  /* Update opt_len to include the bit length tree and counts */
+  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
+  //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
+  //        s->opt_len, s->static_len));
+
+  return max_blindex;
+}
+
+
+/* ===========================================================================
+ * Send the header for a block using dynamic Huffman trees: the counts, the
+ * lengths of the bit length codes, the literal tree and the distance tree.
+ * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
+ */
+function send_all_trees(s, lcodes, dcodes, blcodes)
+//    deflate_state *s;
+//    int lcodes, dcodes, blcodes; /* number of codes for each tree */
+{
+  var rank;                    /* index in bl_order */
+
+  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
+  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
+  //        "too many codes");
+  //Tracev((stderr, "\nbl counts: "));
+  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
+  send_bits(s, dcodes - 1,   5);
+  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */
+  for (rank = 0; rank < blcodes; rank++) {
+    //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
+    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);
+  }
+  //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */
+  //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */
+  //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
+}
+
+
+/* ===========================================================================
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
+ * - TEXT if the two conditions below are satisfied:
+ *    a) There are no non-portable control characters belonging to the
+ *       "black list" (0..6, 14..25, 28..31).
+ *    b) There is at least one printable character belonging to the
+ *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * - BINARY otherwise.
+ * - The following partially-portable control characters form a
+ *   "gray list" that is ignored in this detection algorithm:
+ *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
+ * IN assertion: the fields Freq of dyn_ltree are set.
+ */
+function detect_data_type(s) {
+  /* black_mask is the bit mask of black-listed bytes
+   * set bits 0..6, 14..25, and 28..31
+   * 0xf3ffc07f = binary 11110011111111111100000001111111
+   */
+  var black_mask = 0xf3ffc07f;
+  var n;
+
+  /* Check for non-textual ("black-listed") bytes. */
+  for (n = 0; n <= 31; n++, black_mask >>>= 1) {
+    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {
+      return Z_BINARY;
+    }
+  }
+
+  /* Check for textual ("white-listed") bytes. */
+  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
+      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
+    return Z_TEXT;
+  }
+  for (n = 32; n < LITERALS; n++) {
+    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
+      return Z_TEXT;
+    }
+  }
+
+  /* There are no "black-listed" or "white-listed" bytes:
+   * this stream either is empty or has tolerated ("gray-listed") bytes only.
+   */
+  return Z_BINARY;
+}
+
+
+var static_init_done = false;
+
+/* ===========================================================================
+ * Initialize the tree data structures for a new zlib stream.
+ */
+function _tr_init(s)
+{
+
+  if (!static_init_done) {
+    tr_static_init();
+    static_init_done = true;
+  }
+
+  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
+  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
+  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
+
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+
+  /* Initialize the first block of the first file: */
+  init_block(s);
+}
+
+
+/* ===========================================================================
+ * Send a stored block
+ */
+function _tr_stored_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */
+  copy_block(s, buf, stored_len, true); /* with header */
+}
+
+
+/* ===========================================================================
+ * Send one empty static block to give enough lookahead for inflate.
+ * This takes 10 bits, of which 7 may remain in the bit buffer.
+ */
+function _tr_align(s) {
+  send_bits(s, STATIC_TREES << 1, 3);
+  send_code(s, END_BLOCK, static_ltree);
+  bi_flush(s);
+}
+
+
+/* ===========================================================================
+ * Determine the best encoding for the current block: dynamic trees, static
+ * trees or store, and output the encoded block to the zip file.
+ */
+function _tr_flush_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block, or NULL if too old */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
+  var max_blindex = 0;        /* index of last bit length code of non zero freq */
+
+  /* Build the Huffman trees unless a stored block is forced */
+  if (s.level > 0) {
+
+    /* Check if the file is binary or text */
+    if (s.strm.data_type === Z_UNKNOWN) {
+      s.strm.data_type = detect_data_type(s);
+    }
+
+    /* Construct the literal and distance trees */
+    build_tree(s, s.l_desc);
+    // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+
+    build_tree(s, s.d_desc);
+    // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+    /* At this point, opt_len and static_len are the total bit lengths of
+     * the compressed block data, excluding the tree representations.
+     */
+
+    /* Build the bit length tree for the above two trees, and get the index
+     * in bl_order of the last bit length code to send.
+     */
+    max_blindex = build_bl_tree(s);
+
+    /* Determine the best encoding. Compute the block lengths in bytes. */
+    opt_lenb = (s.opt_len + 3 + 7) >>> 3;
+    static_lenb = (s.static_len + 3 + 7) >>> 3;
+
+    // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
+    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
+    //        s->last_lit));
+
+    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
+
+  } else {
+    // Assert(buf != (char*)0, "lost buf");
+    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
+  }
+
+  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {
+    /* 4: two words for the lengths */
+
+    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
+     * Otherwise we can't have processed more than WSIZE input bytes since
+     * the last block flush, because compression would have been
+     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
+     * transform a block into a stored block.
+     */
+    _tr_stored_block(s, buf, stored_len, last);
+
+  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
+
+    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
+    compress_block(s, static_ltree, static_dtree);
+
+  } else {
+    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
+    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
+    compress_block(s, s.dyn_ltree, s.dyn_dtree);
+  }
+  // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
+  /* The above check is made mod 2^32, for files larger than 512 MB
+   * and uLong implemented on 32 bits.
+   */
+  init_block(s);
+
+  if (last) {
+    bi_windup(s);
+  }
+  // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
+  //       s->compressed_len-7*last));
+}
+
+/* ===========================================================================
+ * Save the match info and tally the frequency counts. Return true if
+ * the current block must be flushed.
+ */
+function _tr_tally(s, dist, lc)
+//    deflate_state *s;
+//    unsigned dist;  /* distance of matched string */
+//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
+{
+  //var out_length, in_length, dcode;
+
+  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
+  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;
+
+  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
+  s.last_lit++;
+
+  if (dist === 0) {
+    /* lc is the unmatched char */
+    s.dyn_ltree[lc * 2]/*.Freq*/++;
+  } else {
+    s.matches++;
+    /* Here, lc is the match length - MIN_MATCH */
+    dist--;             /* dist = match distance - 1 */
+    //Assert((ush)dist < (ush)MAX_DIST(s) &&
+    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
+    //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
+
+    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;
+    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
+  }
+
+// (!) This block is disabled in zlib defaults,
+// don't enable it for binary compatibility
+
+//#ifdef TRUNCATE_BLOCK
+//  /* Try to guess if it is profitable to stop the current block here */
+//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
+//    /* Compute an upper bound for the compressed length */
+//    out_length = s.last_lit*8;
+//    in_length = s.strstart - s.block_start;
+//
+//    for (dcode = 0; dcode < D_CODES; dcode++) {
+//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
+//    }
+//    out_length >>>= 3;
+//    //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
+//    //       s->last_lit, in_length, out_length,
+//    //       100L - out_length*100L/in_length));
+//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
+//      return true;
+//    }
+//  }
+//#endif
+
+  return (s.last_lit === s.lit_bufsize - 1);
+  /* We avoid equality with lit_bufsize because of wraparound at 64K
+   * on 16 bit machines and because stored blocks are restricted to
+   * 64K-1 bytes.
+   */
+}
+
+exports._tr_init  = _tr_init;
+exports._tr_stored_block = _tr_stored_block;
+exports._tr_flush_block  = _tr_flush_block;
+exports._tr_tally = _tr_tally;
+exports._tr_align = _tr_align;
+
+
+/***/ }),
+/* 156 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+module.exports = {
+  2:      'need dictionary',     /* Z_NEED_DICT       2  */
+  1:      'stream end',          /* Z_STREAM_END      1  */
+  0:      '',                    /* Z_OK              0  */
+  '-1':   'file error',          /* Z_ERRNO         (-1) */
+  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */
+  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */
+  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */
+  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */
+  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */
+};
+
+
+/***/ }),
+/* 157 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils         = __webpack_require__(34);
+var adler32       = __webpack_require__(89);
+var crc32         = __webpack_require__(90);
+var inflate_fast  = __webpack_require__(158);
+var inflate_table = __webpack_require__(159);
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+//var Z_NO_FLUSH      = 0;
+//var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+//var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+
+/* STATES ====================================================================*/
+/* ===========================================================================*/
+
+
+var    HEAD = 1;       /* i: waiting for magic header */
+var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
+var    TIME = 3;       /* i: waiting for modification time (gzip) */
+var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
+var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
+var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
+var    NAME = 7;       /* i: waiting for end of file name (gzip) */
+var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
+var    HCRC = 9;       /* i: waiting for header crc (gzip) */
+var    DICTID = 10;    /* i: waiting for dictionary check value */
+var    DICT = 11;      /* waiting for inflateSetDictionary() call */
+var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
+var        STORED = 14;    /* i: waiting for stored size (length and complement) */
+var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
+var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
+var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
+var        LENLENS = 18;   /* i: waiting for code length code lengths */
+var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
+var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
+var            LEN = 21;       /* i: waiting for length/lit/eob code */
+var            LENEXT = 22;    /* i: waiting for length extra bits */
+var            DIST = 23;      /* i: waiting for distance code */
+var            DISTEXT = 24;   /* i: waiting for distance extra bits */
+var            MATCH = 25;     /* o: waiting for output space to copy string */
+var            LIT = 26;       /* o: waiting for output space to write literal */
+var    CHECK = 27;     /* i: waiting for 32-bit check value */
+var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
+var    DONE = 29;      /* finished check, done -- remain here until reset */
+var    BAD = 30;       /* got a data error -- remain here until reset */
+var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
+var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */
+
+/* ===========================================================================*/
+
+
+
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);
+
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_WBITS = MAX_WBITS;
+
+
+function zswap32(q) {
+  return  (((q >>> 24) & 0xff) +
+          ((q >>> 8) & 0xff00) +
+          ((q & 0xff00) << 8) +
+          ((q & 0xff) << 24));
+}
+
+
+function InflateState() {
+  this.mode = 0;             /* current inflate mode */
+  this.last = false;          /* true if processing last block */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.havedict = false;      /* true if dictionary provided */
+  this.flags = 0;             /* gzip header method and flags (0 if zlib) */
+  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
+  this.check = 0;             /* protected copy of check value */
+  this.total = 0;             /* protected copy of output count */
+  // TODO: may be {}
+  this.head = null;           /* where to save gzip header information */
+
+  /* sliding window */
+  this.wbits = 0;             /* log base 2 of requested window size */
+  this.wsize = 0;             /* window size or zero if not using window */
+  this.whave = 0;             /* valid bytes in the window */
+  this.wnext = 0;             /* window write index */
+  this.window = null;         /* allocated sliding window, if needed */
+
+  /* bit accumulator */
+  this.hold = 0;              /* input bit accumulator */
+  this.bits = 0;              /* number of bits in "in" */
+
+  /* for string and stored block copying */
+  this.length = 0;            /* literal or length of data to copy */
+  this.offset = 0;            /* distance back to copy string from */
+
+  /* for table and code decoding */
+  this.extra = 0;             /* extra bits needed */
+
+  /* fixed and dynamic code tables */
+  this.lencode = null;          /* starting table for length/literal codes */
+  this.distcode = null;         /* starting table for distance codes */
+  this.lenbits = 0;           /* index bits for lencode */
+  this.distbits = 0;          /* index bits for distcode */
+
+  /* dynamic table building */
+  this.ncode = 0;             /* number of code length code lengths */
+  this.nlen = 0;              /* number of length code lengths */
+  this.ndist = 0;             /* number of distance code lengths */
+  this.have = 0;              /* number of code lengths in lens[] */
+  this.next = null;              /* next available space in codes[] */
+
+  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
+  this.work = new utils.Buf16(288); /* work area for code table building */
+
+  /*
+   because we don't have pointers in js, we use lencode and distcode directly
+   as buffers so we don't need codes
+  */
+  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
+  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
+  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
+  this.sane = 0;                   /* if false, allow invalid distance too far */
+  this.back = 0;                   /* bits back of last unprocessed length/lit */
+  this.was = 0;                    /* initial length of match */
+}
+
+function inflateResetKeep(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  strm.total_in = strm.total_out = state.total = 0;
+  strm.msg = ''; /*Z_NULL*/
+  if (state.wrap) {       /* to support ill-conceived Java test suite */
+    strm.adler = state.wrap & 1;
+  }
+  state.mode = HEAD;
+  state.last = 0;
+  state.havedict = 0;
+  state.dmax = 32768;
+  state.head = null/*Z_NULL*/;
+  state.hold = 0;
+  state.bits = 0;
+  //state.lencode = state.distcode = state.next = state.codes;
+  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
+  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
+
+  state.sane = 1;
+  state.back = -1;
+  //Tracev((stderr, "inflate: reset\n"));
+  return Z_OK;
+}
+
+function inflateReset(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  state.wsize = 0;
+  state.whave = 0;
+  state.wnext = 0;
+  return inflateResetKeep(strm);
+
+}
+
+function inflateReset2(strm, windowBits) {
+  var wrap;
+  var state;
+
+  /* get the state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+
+  /* extract wrap request from windowBits parameter */
+  if (windowBits < 0) {
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+  else {
+    wrap = (windowBits >> 4) + 1;
+    if (windowBits < 48) {
+      windowBits &= 15;
+    }
+  }
+
+  /* set number of window bits, free window if different */
+  if (windowBits && (windowBits < 8 || windowBits > 15)) {
+    return Z_STREAM_ERROR;
+  }
+  if (state.window !== null && state.wbits !== windowBits) {
+    state.window = null;
+  }
+
+  /* update state and reset the rest of it */
+  state.wrap = wrap;
+  state.wbits = windowBits;
+  return inflateReset(strm);
+}
+
+function inflateInit2(strm, windowBits) {
+  var ret;
+  var state;
+
+  if (!strm) { return Z_STREAM_ERROR; }
+  //strm.msg = Z_NULL;                 /* in case we return an error */
+
+  state = new InflateState();
+
+  //if (state === Z_NULL) return Z_MEM_ERROR;
+  //Tracev((stderr, "inflate: allocated\n"));
+  strm.state = state;
+  state.window = null/*Z_NULL*/;
+  ret = inflateReset2(strm, windowBits);
+  if (ret !== Z_OK) {
+    strm.state = null/*Z_NULL*/;
+  }
+  return ret;
+}
+
+function inflateInit(strm) {
+  return inflateInit2(strm, DEF_WBITS);
+}
+
+
+/*
+ Return state with length and distance decoding tables and index sizes set to
+ fixed code decoding.  Normally this returns fixed tables from inffixed.h.
+ If BUILDFIXED is defined, then instead this routine builds the tables the
+ first time it's called, and returns those tables the first time and
+ thereafter.  This reduces the size of the code by about 2K bytes, in
+ exchange for a little execution time.  However, BUILDFIXED should not be
+ used for threaded applications, since the rewriting of the tables and virgin
+ may not be thread-safe.
+ */
+var virgin = true;
+
+var lenfix, distfix; // We have no pointers in JS, so keep tables separate
+
+function fixedtables(state) {
+  /* build fixed huffman tables if first call (may not be thread safe) */
+  if (virgin) {
+    var sym;
+
+    lenfix = new utils.Buf32(512);
+    distfix = new utils.Buf32(32);
+
+    /* literal/length table */
+    sym = 0;
+    while (sym < 144) { state.lens[sym++] = 8; }
+    while (sym < 256) { state.lens[sym++] = 9; }
+    while (sym < 280) { state.lens[sym++] = 7; }
+    while (sym < 288) { state.lens[sym++] = 8; }
+
+    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });
+
+    /* distance table */
+    sym = 0;
+    while (sym < 32) { state.lens[sym++] = 5; }
+
+    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });
+
+    /* do this just once */
+    virgin = false;
+  }
+
+  state.lencode = lenfix;
+  state.lenbits = 9;
+  state.distcode = distfix;
+  state.distbits = 5;
+}
+
+
+/*
+ Update the window with the last wsize (normally 32K) bytes written before
+ returning.  If window does not exist yet, create it.  This is only called
+ when a window is already in use, or when output has been written during this
+ inflate call, but the end of the deflate stream has not been reached yet.
+ It is also called to create a window for dictionary data when a dictionary
+ is loaded.
+
+ Providing output buffers larger than 32K to inflate() should provide a speed
+ advantage, since only the last 32K of output is copied to the sliding window
+ upon return from inflate(), and since all distances after the first 32K of
+ output will fall in the output data, making match copies simpler and faster.
+ The advantage may be dependent on the size of the processor's data caches.
+ */
+function updatewindow(strm, src, end, copy) {
+  var dist;
+  var state = strm.state;
+
+  /* if it hasn't been done already, allocate space for the window */
+  if (state.window === null) {
+    state.wsize = 1 << state.wbits;
+    state.wnext = 0;
+    state.whave = 0;
+
+    state.window = new utils.Buf8(state.wsize);
+  }
+
+  /* copy state->wsize or less output bytes into the circular window */
+  if (copy >= state.wsize) {
+    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
+    state.wnext = 0;
+    state.whave = state.wsize;
+  }
+  else {
+    dist = state.wsize - state.wnext;
+    if (dist > copy) {
+      dist = copy;
+    }
+    //zmemcpy(state->window + state->wnext, end - copy, dist);
+    utils.arraySet(state.window, src, end - copy, dist, state.wnext);
+    copy -= dist;
+    if (copy) {
+      //zmemcpy(state->window, end - copy, copy);
+      utils.arraySet(state.window, src, end - copy, copy, 0);
+      state.wnext = copy;
+      state.whave = state.wsize;
+    }
+    else {
+      state.wnext += dist;
+      if (state.wnext === state.wsize) { state.wnext = 0; }
+      if (state.whave < state.wsize) { state.whave += dist; }
+    }
+  }
+  return 0;
+}
+
+function inflate(strm, flush) {
+  var state;
+  var input, output;          // input/output buffers
+  var next;                   /* next input INDEX */
+  var put;                    /* next output INDEX */
+  var have, left;             /* available input and output */
+  var hold;                   /* bit buffer */
+  var bits;                   /* bits in bit buffer */
+  var _in, _out;              /* save starting available input and output */
+  var copy;                   /* number of stored or match bytes to copy */
+  var from;                   /* where to copy match bytes from */
+  var from_source;
+  var here = 0;               /* current decoding table entry */
+  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
+  //var last;                   /* parent table entry */
+  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
+  var len;                    /* length to copy for repeats, bits to drop */
+  var ret;                    /* return code */
+  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
+  var opts;
+
+  var n; // temporary var for NEED_BITS
+
+  var order = /* permutation of code lengths */
+    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];
+
+
+  if (!strm || !strm.state || !strm.output ||
+      (!strm.input && strm.avail_in !== 0)) {
+    return Z_STREAM_ERROR;
+  }
+
+  state = strm.state;
+  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */
+
+
+  //--- LOAD() ---
+  put = strm.next_out;
+  output = strm.output;
+  left = strm.avail_out;
+  next = strm.next_in;
+  input = strm.input;
+  have = strm.avail_in;
+  hold = state.hold;
+  bits = state.bits;
+  //---
+
+  _in = have;
+  _out = left;
+  ret = Z_OK;
+
+  inf_leave: // goto emulation
+  for (;;) {
+    switch (state.mode) {
+      case HEAD:
+        if (state.wrap === 0) {
+          state.mode = TYPEDO;
+          break;
+        }
+        //=== NEEDBITS(16);
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
+          state.check = 0/*crc32(0L, Z_NULL, 0)*/;
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+          state.mode = FLAGS;
+          break;
+        }
+        state.flags = 0;           /* expect zlib header */
+        if (state.head) {
+          state.head.done = false;
+        }
+        if (!(state.wrap & 1) ||   /* check if zlib header allowed */
+          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
+          strm.msg = 'incorrect header check';
+          state.mode = BAD;
+          break;
+        }
+        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
+          strm.msg = 'unknown compression method';
+          state.mode = BAD;
+          break;
+        }
+        //--- DROPBITS(4) ---//
+        hold >>>= 4;
+        bits -= 4;
+        //---//
+        len = (hold & 0x0f)/*BITS(4)*/ + 8;
+        if (state.wbits === 0) {
+          state.wbits = len;
+        }
+        else if (len > state.wbits) {
+          strm.msg = 'invalid window size';
+          state.mode = BAD;
+          break;
+        }
+        state.dmax = 1 << len;
+        //Tracev((stderr, "inflate:   zlib header ok\n"));
+        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+        state.mode = hold & 0x200 ? DICTID : TYPE;
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        break;
+      case FLAGS:
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.flags = hold;
+        if ((state.flags & 0xff) !== Z_DEFLATED) {
+          strm.msg = 'unknown compression method';
+          state.mode = BAD;
+          break;
+        }
+        if (state.flags & 0xe000) {
+          strm.msg = 'unknown header flags set';
+          state.mode = BAD;
+          break;
+        }
+        if (state.head) {
+          state.head.text = ((hold >> 8) & 1);
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = TIME;
+        /* falls through */
+      case TIME:
+        //=== NEEDBITS(32); */
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (state.head) {
+          state.head.time = hold;
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC4(state.check, hold)
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          hbuf[2] = (hold >>> 16) & 0xff;
+          hbuf[3] = (hold >>> 24) & 0xff;
+          state.check = crc32(state.check, hbuf, 4, 0);
+          //===
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = OS;
+        /* falls through */
+      case OS:
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (state.head) {
+          state.head.xflags = (hold & 0xff);
+          state.head.os = (hold >> 8);
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = EXLEN;
+        /* falls through */
+      case EXLEN:
+        if (state.flags & 0x0400) {
+          //=== NEEDBITS(16); */
+          while (bits < 16) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.length = hold;
+          if (state.head) {
+            state.head.extra_len = hold;
+          }
+          if (state.flags & 0x0200) {
+            //=== CRC2(state.check, hold);
+            hbuf[0] = hold & 0xff;
+            hbuf[1] = (hold >>> 8) & 0xff;
+            state.check = crc32(state.check, hbuf, 2, 0);
+            //===//
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+        }
+        else if (state.head) {
+          state.head.extra = null/*Z_NULL*/;
+        }
+        state.mode = EXTRA;
+        /* falls through */
+      case EXTRA:
+        if (state.flags & 0x0400) {
+          copy = state.length;
+          if (copy > have) { copy = have; }
+          if (copy) {
+            if (state.head) {
+              len = state.head.extra_len - state.length;
+              if (!state.head.extra) {
+                // Use untyped array for more convenient processing later
+                state.head.extra = new Array(state.head.extra_len);
+              }
+              utils.arraySet(
+                state.head.extra,
+                input,
+                next,
+                // extra field is limited to 65536 bytes
+                // - no need for additional size check
+                copy,
+                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
+                len
+              );
+              //zmemcpy(state.head.extra + len, next,
+              //        len + copy > state.head.extra_max ?
+              //        state.head.extra_max - len : copy);
+            }
+            if (state.flags & 0x0200) {
+              state.check = crc32(state.check, input, copy, next);
+            }
+            have -= copy;
+            next += copy;
+            state.length -= copy;
+          }
+          if (state.length) { break inf_leave; }
+        }
+        state.length = 0;
+        state.mode = NAME;
+        /* falls through */
+      case NAME:
+        if (state.flags & 0x0800) {
+          if (have === 0) { break inf_leave; }
+          copy = 0;
+          do {
+            // TODO: 2 or 1 bytes?
+            len = input[next + copy++];
+            /* use constant limit because in js we should not preallocate memory */
+            if (state.head && len &&
+                (state.length < 65536 /*state.head.name_max*/)) {
+              state.head.name += String.fromCharCode(len);
+            }
+          } while (len && copy < have);
+
+          if (state.flags & 0x0200) {
+            state.check = crc32(state.check, input, copy, next);
+          }
+          have -= copy;
+          next += copy;
+          if (len) { break inf_leave; }
+        }
+        else if (state.head) {
+          state.head.name = null;
+        }
+        state.length = 0;
+        state.mode = COMMENT;
+        /* falls through */
+      case COMMENT:
+        if (state.flags & 0x1000) {
+          if (have === 0) { break inf_leave; }
+          copy = 0;
+          do {
+            len = input[next + copy++];
+            /* use constant limit because in js we should not preallocate memory */
+            if (state.head && len &&
+                (state.length < 65536 /*state.head.comm_max*/)) {
+              state.head.comment += String.fromCharCode(len);
+            }
+          } while (len && copy < have);
+          if (state.flags & 0x0200) {
+            state.check = crc32(state.check, input, copy, next);
+          }
+          have -= copy;
+          next += copy;
+          if (len) { break inf_leave; }
+        }
+        else if (state.head) {
+          state.head.comment = null;
+        }
+        state.mode = HCRC;
+        /* falls through */
+      case HCRC:
+        if (state.flags & 0x0200) {
+          //=== NEEDBITS(16); */
+          while (bits < 16) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          if (hold !== (state.check & 0xffff)) {
+            strm.msg = 'header crc mismatch';
+            state.mode = BAD;
+            break;
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+        }
+        if (state.head) {
+          state.head.hcrc = ((state.flags >> 9) & 1);
+          state.head.done = true;
+        }
+        strm.adler = state.check = 0;
+        state.mode = TYPE;
+        break;
+      case DICTID:
+        //=== NEEDBITS(32); */
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        strm.adler = state.check = zswap32(hold);
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = DICT;
+        /* falls through */
+      case DICT:
+        if (state.havedict === 0) {
+          //--- RESTORE() ---
+          strm.next_out = put;
+          strm.avail_out = left;
+          strm.next_in = next;
+          strm.avail_in = have;
+          state.hold = hold;
+          state.bits = bits;
+          //---
+          return Z_NEED_DICT;
+        }
+        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+        state.mode = TYPE;
+        /* falls through */
+      case TYPE:
+        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
+        /* falls through */
+      case TYPEDO:
+        if (state.last) {
+          //--- BYTEBITS() ---//
+          hold >>>= bits & 7;
+          bits -= bits & 7;
+          //---//
+          state.mode = CHECK;
+          break;
+        }
+        //=== NEEDBITS(3); */
+        while (bits < 3) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.last = (hold & 0x01)/*BITS(1)*/;
+        //--- DROPBITS(1) ---//
+        hold >>>= 1;
+        bits -= 1;
+        //---//
+
+        switch ((hold & 0x03)/*BITS(2)*/) {
+          case 0:                             /* stored block */
+            //Tracev((stderr, "inflate:     stored block%s\n",
+            //        state.last ? " (last)" : ""));
+            state.mode = STORED;
+            break;
+          case 1:                             /* fixed block */
+            fixedtables(state);
+            //Tracev((stderr, "inflate:     fixed codes block%s\n",
+            //        state.last ? " (last)" : ""));
+            state.mode = LEN_;             /* decode codes */
+            if (flush === Z_TREES) {
+              //--- DROPBITS(2) ---//
+              hold >>>= 2;
+              bits -= 2;
+              //---//
+              break inf_leave;
+            }
+            break;
+          case 2:                             /* dynamic block */
+            //Tracev((stderr, "inflate:     dynamic codes block%s\n",
+            //        state.last ? " (last)" : ""));
+            state.mode = TABLE;
+            break;
+          case 3:
+            strm.msg = 'invalid block type';
+            state.mode = BAD;
+        }
+        //--- DROPBITS(2) ---//
+        hold >>>= 2;
+        bits -= 2;
+        //---//
+        break;
+      case STORED:
+        //--- BYTEBITS() ---// /* go to byte boundary */
+        hold >>>= bits & 7;
+        bits -= bits & 7;
+        //---//
+        //=== NEEDBITS(32); */
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
+          strm.msg = 'invalid stored block lengths';
+          state.mode = BAD;
+          break;
+        }
+        state.length = hold & 0xffff;
+        //Tracev((stderr, "inflate:       stored length %u\n",
+        //        state.length));
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = COPY_;
+        if (flush === Z_TREES) { break inf_leave; }
+        /* falls through */
+      case COPY_:
+        state.mode = COPY;
+        /* falls through */
+      case COPY:
+        copy = state.length;
+        if (copy) {
+          if (copy > have) { copy = have; }
+          if (copy > left) { copy = left; }
+          if (copy === 0) { break inf_leave; }
+          //--- zmemcpy(put, next, copy); ---
+          utils.arraySet(output, input, next, copy, put);
+          //---//
+          have -= copy;
+          next += copy;
+          left -= copy;
+          put += copy;
+          state.length -= copy;
+          break;
+        }
+        //Tracev((stderr, "inflate:       stored end\n"));
+        state.mode = TYPE;
+        break;
+      case TABLE:
+        //=== NEEDBITS(14); */
+        while (bits < 14) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
+        //--- DROPBITS(5) ---//
+        hold >>>= 5;
+        bits -= 5;
+        //---//
+        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
+        //--- DROPBITS(5) ---//
+        hold >>>= 5;
+        bits -= 5;
+        //---//
+        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
+        //--- DROPBITS(4) ---//
+        hold >>>= 4;
+        bits -= 4;
+        //---//
+//#ifndef PKZIP_BUG_WORKAROUND
+        if (state.nlen > 286 || state.ndist > 30) {
+          strm.msg = 'too many length or distance symbols';
+          state.mode = BAD;
+          break;
+        }
+//#endif
+        //Tracev((stderr, "inflate:       table sizes ok\n"));
+        state.have = 0;
+        state.mode = LENLENS;
+        /* falls through */
+      case LENLENS:
+        while (state.have < state.ncode) {
+          //=== NEEDBITS(3);
+          while (bits < 3) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
+          //--- DROPBITS(3) ---//
+          hold >>>= 3;
+          bits -= 3;
+          //---//
+        }
+        while (state.have < 19) {
+          state.lens[order[state.have++]] = 0;
+        }
+        // We have separate tables & no pointers. 2 commented lines below not needed.
+        //state.next = state.codes;
+        //state.lencode = state.next;
+        // Switch to use dynamic table
+        state.lencode = state.lendyn;
+        state.lenbits = 7;
+
+        opts = { bits: state.lenbits };
+        ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
+        state.lenbits = opts.bits;
+
+        if (ret) {
+          strm.msg = 'invalid code lengths set';
+          state.mode = BAD;
+          break;
+        }
+        //Tracev((stderr, "inflate:       code lengths ok\n"));
+        state.have = 0;
+        state.mode = CODELENS;
+        /* falls through */
+      case CODELENS:
+        while (state.have < state.nlen + state.ndist) {
+          for (;;) {
+            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
+            here_bits = here >>> 24;
+            here_op = (here >>> 16) & 0xff;
+            here_val = here & 0xffff;
+
+            if ((here_bits) <= bits) { break; }
+            //--- PULLBYTE() ---//
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+            //---//
+          }
+          if (here_val < 16) {
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            state.lens[state.have++] = here_val;
+          }
+          else {
+            if (here_val === 16) {
+              //=== NEEDBITS(here.bits + 2);
+              n = here_bits + 2;
+              while (bits < n) {
+                if (have === 0) { break inf_leave; }
+                have--;
+                hold += input[next++] << bits;
+                bits += 8;
+              }
+              //===//
+              //--- DROPBITS(here.bits) ---//
+              hold >>>= here_bits;
+              bits -= here_bits;
+              //---//
+              if (state.have === 0) {
+                strm.msg = 'invalid bit length repeat';
+                state.mode = BAD;
+                break;
+              }
+              len = state.lens[state.have - 1];
+              copy = 3 + (hold & 0x03);//BITS(2);
+              //--- DROPBITS(2) ---//
+              hold >>>= 2;
+              bits -= 2;
+              //---//
+            }
+            else if (here_val === 17) {
+              //=== NEEDBITS(here.bits + 3);
+              n = here_bits + 3;
+              while (bits < n) {
+                if (have === 0) { break inf_leave; }
+                have--;
+                hold += input[next++] << bits;
+                bits += 8;
+              }
+              //===//
+              //--- DROPBITS(here.bits) ---//
+              hold >>>= here_bits;
+              bits -= here_bits;
+              //---//
+              len = 0;
+              copy = 3 + (hold & 0x07);//BITS(3);
+              //--- DROPBITS(3) ---//
+              hold >>>= 3;
+              bits -= 3;
+              //---//
+            }
+            else {
+              //=== NEEDBITS(here.bits + 7);
+              n = here_bits + 7;
+              while (bits < n) {
+                if (have === 0) { break inf_leave; }
+                have--;
+                hold += input[next++] << bits;
+                bits += 8;
+              }
+              //===//
+              //--- DROPBITS(here.bits) ---//
+              hold >>>= here_bits;
+              bits -= here_bits;
+              //---//
+              len = 0;
+              copy = 11 + (hold & 0x7f);//BITS(7);
+              //--- DROPBITS(7) ---//
+              hold >>>= 7;
+              bits -= 7;
+              //---//
+            }
+            if (state.have + copy > state.nlen + state.ndist) {
+              strm.msg = 'invalid bit length repeat';
+              state.mode = BAD;
+              break;
+            }
+            while (copy--) {
+              state.lens[state.have++] = len;
+            }
+          }
+        }
+
+        /* handle error breaks in while */
+        if (state.mode === BAD) { break; }
+
+        /* check for end-of-block code (better have one) */
+        if (state.lens[256] === 0) {
+          strm.msg = 'invalid code -- missing end-of-block';
+          state.mode = BAD;
+          break;
+        }
+
+        /* build code tables -- note: do not change the lenbits or distbits
+           values here (9 and 6) without reading the comments in inftrees.h
+           concerning the ENOUGH constants, which depend on those values */
+        state.lenbits = 9;
+
+        opts = { bits: state.lenbits };
+        ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
+        // We have separate tables & no pointers. 2 commented lines below not needed.
+        // state.next_index = opts.table_index;
+        state.lenbits = opts.bits;
+        // state.lencode = state.next;
+
+        if (ret) {
+          strm.msg = 'invalid literal/lengths set';
+          state.mode = BAD;
+          break;
+        }
+
+        state.distbits = 6;
+        //state.distcode.copy(state.codes);
+        // Switch to use dynamic table
+        state.distcode = state.distdyn;
+        opts = { bits: state.distbits };
+        ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
+        // We have separate tables & no pointers. 2 commented lines below not needed.
+        // state.next_index = opts.table_index;
+        state.distbits = opts.bits;
+        // state.distcode = state.next;
+
+        if (ret) {
+          strm.msg = 'invalid distances set';
+          state.mode = BAD;
+          break;
+        }
+        //Tracev((stderr, 'inflate:       codes ok\n'));
+        state.mode = LEN_;
+        if (flush === Z_TREES) { break inf_leave; }
+        /* falls through */
+      case LEN_:
+        state.mode = LEN;
+        /* falls through */
+      case LEN:
+        if (have >= 6 && left >= 258) {
+          //--- RESTORE() ---
+          strm.next_out = put;
+          strm.avail_out = left;
+          strm.next_in = next;
+          strm.avail_in = have;
+          state.hold = hold;
+          state.bits = bits;
+          //---
+          inflate_fast(strm, _out);
+          //--- LOAD() ---
+          put = strm.next_out;
+          output = strm.output;
+          left = strm.avail_out;
+          next = strm.next_in;
+          input = strm.input;
+          have = strm.avail_in;
+          hold = state.hold;
+          bits = state.bits;
+          //---
+
+          if (state.mode === TYPE) {
+            state.back = -1;
+          }
+          break;
+        }
+        state.back = 0;
+        for (;;) {
+          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if (here_bits <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        if (here_op && (here_op & 0xf0) === 0) {
+          last_bits = here_bits;
+          last_op = here_op;
+          last_val = here_val;
+          for (;;) {
+            here = state.lencode[last_val +
+                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+            here_bits = here >>> 24;
+            here_op = (here >>> 16) & 0xff;
+            here_val = here & 0xffff;
+
+            if ((last_bits + here_bits) <= bits) { break; }
+            //--- PULLBYTE() ---//
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+            //---//
+          }
+          //--- DROPBITS(last.bits) ---//
+          hold >>>= last_bits;
+          bits -= last_bits;
+          //---//
+          state.back += last_bits;
+        }
+        //--- DROPBITS(here.bits) ---//
+        hold >>>= here_bits;
+        bits -= here_bits;
+        //---//
+        state.back += here_bits;
+        state.length = here_val;
+        if (here_op === 0) {
+          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+          //        "inflate:         literal '%c'\n" :
+          //        "inflate:         literal 0x%02x\n", here.val));
+          state.mode = LIT;
+          break;
+        }
+        if (here_op & 32) {
+          //Tracevv((stderr, "inflate:         end of block\n"));
+          state.back = -1;
+          state.mode = TYPE;
+          break;
+        }
+        if (here_op & 64) {
+          strm.msg = 'invalid literal/length code';
+          state.mode = BAD;
+          break;
+        }
+        state.extra = here_op & 15;
+        state.mode = LENEXT;
+        /* falls through */
+      case LENEXT:
+        if (state.extra) {
+          //=== NEEDBITS(state.extra);
+          n = state.extra;
+          while (bits < n) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
+          //--- DROPBITS(state.extra) ---//
+          hold >>>= state.extra;
+          bits -= state.extra;
+          //---//
+          state.back += state.extra;
+        }
+        //Tracevv((stderr, "inflate:         length %u\n", state.length));
+        state.was = state.length;
+        state.mode = DIST;
+        /* falls through */
+      case DIST:
+        for (;;) {
+          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        if ((here_op & 0xf0) === 0) {
+          last_bits = here_bits;
+          last_op = here_op;
+          last_val = here_val;
+          for (;;) {
+            here = state.distcode[last_val +
+                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+            here_bits = here >>> 24;
+            here_op = (here >>> 16) & 0xff;
+            here_val = here & 0xffff;
+
+            if ((last_bits + here_bits) <= bits) { break; }
+            //--- PULLBYTE() ---//
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+            //---//
+          }
+          //--- DROPBITS(last.bits) ---//
+          hold >>>= last_bits;
+          bits -= last_bits;
+          //---//
+          state.back += last_bits;
+        }
+        //--- DROPBITS(here.bits) ---//
+        hold >>>= here_bits;
+        bits -= here_bits;
+        //---//
+        state.back += here_bits;
+        if (here_op & 64) {
+          strm.msg = 'invalid distance code';
+          state.mode = BAD;
+          break;
+        }
+        state.offset = here_val;
+        state.extra = (here_op) & 15;
+        state.mode = DISTEXT;
+        /* falls through */
+      case DISTEXT:
+        if (state.extra) {
+          //=== NEEDBITS(state.extra);
+          n = state.extra;
+          while (bits < n) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
+          //--- DROPBITS(state.extra) ---//
+          hold >>>= state.extra;
+          bits -= state.extra;
+          //---//
+          state.back += state.extra;
+        }
+//#ifdef INFLATE_STRICT
+        if (state.offset > state.dmax) {
+          strm.msg = 'invalid distance too far back';
+          state.mode = BAD;
+          break;
+        }
+//#endif
+        //Tracevv((stderr, "inflate:         distance %u\n", state.offset));
+        state.mode = MATCH;
+        /* falls through */
+      case MATCH:
+        if (left === 0) { break inf_leave; }
+        copy = _out - left;
+        if (state.offset > copy) {         /* copy from window */
+          copy = state.offset - copy;
+          if (copy > state.whave) {
+            if (state.sane) {
+              strm.msg = 'invalid distance too far back';
+              state.mode = BAD;
+              break;
+            }
+// (!) This block is disabled in zlib defaults,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//          Trace((stderr, "inflate.c too far\n"));
+//          copy -= state.whave;
+//          if (copy > state.length) { copy = state.length; }
+//          if (copy > left) { copy = left; }
+//          left -= copy;
+//          state.length -= copy;
+//          do {
+//            output[put++] = 0;
+//          } while (--copy);
+//          if (state.length === 0) { state.mode = LEN; }
+//          break;
+//#endif
+          }
+          if (copy > state.wnext) {
+            copy -= state.wnext;
+            from = state.wsize - copy;
+          }
+          else {
+            from = state.wnext - copy;
+          }
+          if (copy > state.length) { copy = state.length; }
+          from_source = state.window;
+        }
+        else {                              /* copy from output */
+          from_source = output;
+          from = put - state.offset;
+          copy = state.length;
+        }
+        if (copy > left) { copy = left; }
+        left -= copy;
+        state.length -= copy;
+        do {
+          output[put++] = from_source[from++];
+        } while (--copy);
+        if (state.length === 0) { state.mode = LEN; }
+        break;
+      case LIT:
+        if (left === 0) { break inf_leave; }
+        output[put++] = state.length;
+        left--;
+        state.mode = LEN;
+        break;
+      case CHECK:
+        if (state.wrap) {
+          //=== NEEDBITS(32);
+          while (bits < 32) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            // Use '|' instead of '+' to make sure that result is signed
+            hold |= input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          _out -= left;
+          strm.total_out += _out;
+          state.total += _out;
+          if (_out) {
+            strm.adler = state.check =
+                /*UPDATE(state.check, put - _out, _out);*/
+                (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));
+
+          }
+          _out = left;
+          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
+          if ((state.flags ? hold : zswap32(hold)) !== state.check) {
+            strm.msg = 'incorrect data check';
+            state.mode = BAD;
+            break;
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+          //Tracev((stderr, "inflate:   check matches trailer\n"));
+        }
+        state.mode = LENGTH;
+        /* falls through */
+      case LENGTH:
+        if (state.wrap && state.flags) {
+          //=== NEEDBITS(32);
+          while (bits < 32) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          if (hold !== (state.total & 0xffffffff)) {
+            strm.msg = 'incorrect length check';
+            state.mode = BAD;
+            break;
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+          //Tracev((stderr, "inflate:   length matches trailer\n"));
+        }
+        state.mode = DONE;
+        /* falls through */
+      case DONE:
+        ret = Z_STREAM_END;
+        break inf_leave;
+      case BAD:
+        ret = Z_DATA_ERROR;
+        break inf_leave;
+      case MEM:
+        return Z_MEM_ERROR;
+      case SYNC:
+        /* falls through */
+      default:
+        return Z_STREAM_ERROR;
+    }
+  }
+
+  // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
+
+  /*
+     Return from inflate(), updating the total counts and the check value.
+     If there was no progress during the inflate() call, return a buffer
+     error.  Call updatewindow() to create and/or update the window state.
+     Note: a memory error from inflate() is non-recoverable.
+   */
+
+  //--- RESTORE() ---
+  strm.next_out = put;
+  strm.avail_out = left;
+  strm.next_in = next;
+  strm.avail_in = have;
+  state.hold = hold;
+  state.bits = bits;
+  //---
+
+  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
+                      (state.mode < CHECK || flush !== Z_FINISH))) {
+    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
+      state.mode = MEM;
+      return Z_MEM_ERROR;
+    }
+  }
+  _in -= strm.avail_in;
+  _out -= strm.avail_out;
+  strm.total_in += _in;
+  strm.total_out += _out;
+  state.total += _out;
+  if (state.wrap && _out) {
+    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
+      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
+  }
+  strm.data_type = state.bits + (state.last ? 64 : 0) +
+                    (state.mode === TYPE ? 128 : 0) +
+                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
+  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
+    ret = Z_BUF_ERROR;
+  }
+  return ret;
+}
+
+function inflateEnd(strm) {
+
+  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  var state = strm.state;
+  if (state.window) {
+    state.window = null;
+  }
+  strm.state = null;
+  return Z_OK;
+}
+
+function inflateGetHeader(strm, head) {
+  var state;
+
+  /* check state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }
+
+  /* save header structure */
+  state.head = head;
+  head.done = false;
+  return Z_OK;
+}
+
+function inflateSetDictionary(strm, dictionary) {
+  var dictLength = dictionary.length;
+
+  var state;
+  var dictid;
+  var ret;
+
+  /* check state */
+  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }
+  state = strm.state;
+
+  if (state.wrap !== 0 && state.mode !== DICT) {
+    return Z_STREAM_ERROR;
+  }
+
+  /* check for correct dictionary identifier */
+  if (state.mode === DICT) {
+    dictid = 1; /* adler32(0, null, 0)*/
+    /* dictid = adler32(dictid, dictionary, dictLength); */
+    dictid = adler32(dictid, dictionary, dictLength, 0);
+    if (dictid !== state.check) {
+      return Z_DATA_ERROR;
+    }
+  }
+  /* copy dictionary to window using updatewindow(), which will amend the
+   existing dictionary if appropriate */
+  ret = updatewindow(strm, dictionary, dictLength, dictLength);
+  if (ret) {
+    state.mode = MEM;
+    return Z_MEM_ERROR;
+  }
+  state.havedict = 1;
+  // Tracev((stderr, "inflate:   dictionary set\n"));
+  return Z_OK;
+}
+
+exports.inflateReset = inflateReset;
+exports.inflateReset2 = inflateReset2;
+exports.inflateResetKeep = inflateResetKeep;
+exports.inflateInit = inflateInit;
+exports.inflateInit2 = inflateInit2;
+exports.inflate = inflate;
+exports.inflateEnd = inflateEnd;
+exports.inflateGetHeader = inflateGetHeader;
+exports.inflateSetDictionary = inflateSetDictionary;
+exports.inflateInfo = 'pako inflate (from Nodeca project)';
+
+/* Not implemented
+exports.inflateCopy = inflateCopy;
+exports.inflateGetDictionary = inflateGetDictionary;
+exports.inflateMark = inflateMark;
+exports.inflatePrime = inflatePrime;
+exports.inflateSync = inflateSync;
+exports.inflateSyncPoint = inflateSyncPoint;
+exports.inflateUndermine = inflateUndermine;
+*/
+
+
+/***/ }),
+/* 158 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+// See state defs from inflate.js
+var BAD = 30;       /* got a data error -- remain here until reset */
+var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+
+/*
+   Decode literal, length, and distance codes and write out the resulting
+   literal and match bytes until either not enough input or output is
+   available, an end-of-block is encountered, or a data error is encountered.
+   When large enough input and output buffers are supplied to inflate(), for
+   example, a 16K input buffer and a 64K output buffer, more than 95% of the
+   inflate execution time is spent in this routine.
+
+   Entry assumptions:
+
+        state.mode === LEN
+        strm.avail_in >= 6
+        strm.avail_out >= 258
+        start >= strm.avail_out
+        state.bits < 8
+
+   On return, state.mode is one of:
+
+        LEN -- ran out of enough output space or enough available input
+        TYPE -- reached end of block code, inflate() to interpret next block
+        BAD -- error in block data
+
+   Notes:
+
+    - The maximum input bits used by a length/distance pair is 15 bits for the
+      length code, 5 bits for the length extra, 15 bits for the distance code,
+      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
+      Therefore if strm.avail_in >= 6, then there is enough input to avoid
+      checking for available input while decoding.
+
+    - The maximum bytes that a single length/distance pair can output is 258
+      bytes, which is the maximum length that can be coded.  inflate_fast()
+      requires strm.avail_out >= 258 for each loop to avoid checking for
+      output space.
+ */
+module.exports = function inflate_fast(strm, start) {
+  var state;
+  var _in;                    /* local strm.input */
+  var last;                   /* have enough input while in < last */
+  var _out;                   /* local strm.output */
+  var beg;                    /* inflate()'s initial strm.output */
+  var end;                    /* while out < end, enough space available */
+//#ifdef INFLATE_STRICT
+  var dmax;                   /* maximum distance from zlib header */
+//#endif
+  var wsize;                  /* window size or zero if not using window */
+  var whave;                  /* valid bytes in the window */
+  var wnext;                  /* window write index */
+  // Use `s_window` instead `window`, avoid conflict with instrumentation tools
+  var s_window;               /* allocated sliding window, if wsize != 0 */
+  var hold;                   /* local strm.hold */
+  var bits;                   /* local strm.bits */
+  var lcode;                  /* local strm.lencode */
+  var dcode;                  /* local strm.distcode */
+  var lmask;                  /* mask for first level of length codes */
+  var dmask;                  /* mask for first level of distance codes */
+  var here;                   /* retrieved table entry */
+  var op;                     /* code bits, operation, extra bits, or */
+                              /*  window position, window bytes to copy */
+  var len;                    /* match length, unused bytes */
+  var dist;                   /* match distance */
+  var from;                   /* where to copy match from */
+  var from_source;
+
+
+  var input, output; // JS specific, because we have no pointers
+
+  /* copy state to local variables */
+  state = strm.state;
+  //here = state.here;
+  _in = strm.next_in;
+  input = strm.input;
+  last = _in + (strm.avail_in - 5);
+  _out = strm.next_out;
+  output = strm.output;
+  beg = _out - (start - strm.avail_out);
+  end = _out + (strm.avail_out - 257);
+//#ifdef INFLATE_STRICT
+  dmax = state.dmax;
+//#endif
+  wsize = state.wsize;
+  whave = state.whave;
+  wnext = state.wnext;
+  s_window = state.window;
+  hold = state.hold;
+  bits = state.bits;
+  lcode = state.lencode;
+  dcode = state.distcode;
+  lmask = (1 << state.lenbits) - 1;
+  dmask = (1 << state.distbits) - 1;
+
+
+  /* decode literals and length/distances until end-of-block or not enough
+     input data or output space */
+
+  top:
+  do {
+    if (bits < 15) {
+      hold += input[_in++] << bits;
+      bits += 8;
+      hold += input[_in++] << bits;
+      bits += 8;
+    }
+
+    here = lcode[hold & lmask];
+
+    dolen:
+    for (;;) { // Goto emulation
+      op = here >>> 24/*here.bits*/;
+      hold >>>= op;
+      bits -= op;
+      op = (here >>> 16) & 0xff/*here.op*/;
+      if (op === 0) {                          /* literal */
+        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+        //        "inflate:         literal '%c'\n" :
+        //        "inflate:         literal 0x%02x\n", here.val));
+        output[_out++] = here & 0xffff/*here.val*/;
+      }
+      else if (op & 16) {                     /* length base */
+        len = here & 0xffff/*here.val*/;
+        op &= 15;                           /* number of extra bits */
+        if (op) {
+          if (bits < op) {
+            hold += input[_in++] << bits;
+            bits += 8;
+          }
+          len += hold & ((1 << op) - 1);
+          hold >>>= op;
+          bits -= op;
+        }
+        //Tracevv((stderr, "inflate:         length %u\n", len));
+        if (bits < 15) {
+          hold += input[_in++] << bits;
+          bits += 8;
+          hold += input[_in++] << bits;
+          bits += 8;
+        }
+        here = dcode[hold & dmask];
+
+        dodist:
+        for (;;) { // goto emulation
+          op = here >>> 24/*here.bits*/;
+          hold >>>= op;
+          bits -= op;
+          op = (here >>> 16) & 0xff/*here.op*/;
+
+          if (op & 16) {                      /* distance base */
+            dist = here & 0xffff/*here.val*/;
+            op &= 15;                       /* number of extra bits */
+            if (bits < op) {
+              hold += input[_in++] << bits;
+              bits += 8;
+              if (bits < op) {
+                hold += input[_in++] << bits;
+                bits += 8;
+              }
+            }
+            dist += hold & ((1 << op) - 1);
+//#ifdef INFLATE_STRICT
+            if (dist > dmax) {
+              strm.msg = 'invalid distance too far back';
+              state.mode = BAD;
+              break top;
+            }
+//#endif
+            hold >>>= op;
+            bits -= op;
+            //Tracevv((stderr, "inflate:         distance %u\n", dist));
+            op = _out - beg;                /* max distance in output */
+            if (dist > op) {                /* see if copy from window */
+              op = dist - op;               /* distance back in window */
+              if (op > whave) {
+                if (state.sane) {
+                  strm.msg = 'invalid distance too far back';
+                  state.mode = BAD;
+                  break top;
+                }
+
+// (!) This block is disabled in zlib defaults,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//                if (len <= op - whave) {
+//                  do {
+//                    output[_out++] = 0;
+//                  } while (--len);
+//                  continue top;
+//                }
+//                len -= op - whave;
+//                do {
+//                  output[_out++] = 0;
+//                } while (--op > whave);
+//                if (op === 0) {
+//                  from = _out - dist;
+//                  do {
+//                    output[_out++] = output[from++];
+//                  } while (--len);
+//                  continue top;
+//                }
+//#endif
+              }
+              from = 0; // window index
+              from_source = s_window;
+              if (wnext === 0) {           /* very common case */
+                from += wsize - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = s_window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              else if (wnext < op) {      /* wrap around window */
+                from += wsize + wnext - op;
+                op -= wnext;
+                if (op < len) {         /* some from end of window */
+                  len -= op;
+                  do {
+                    output[_out++] = s_window[from++];
+                  } while (--op);
+                  from = 0;
+                  if (wnext < len) {  /* some from start of window */
+                    op = wnext;
+                    len -= op;
+                    do {
+                      output[_out++] = s_window[from++];
+                    } while (--op);
+                    from = _out - dist;      /* rest from output */
+                    from_source = output;
+                  }
+                }
+              }
+              else {                      /* contiguous in window */
+                from += wnext - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = s_window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              while (len > 2) {
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                len -= 3;
+              }
+              if (len) {
+                output[_out++] = from_source[from++];
+                if (len > 1) {
+                  output[_out++] = from_source[from++];
+                }
+              }
+            }
+            else {
+              from = _out - dist;          /* copy direct from output */
+              do {                        /* minimum length is three */
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                len -= 3;
+              } while (len > 2);
+              if (len) {
+                output[_out++] = output[from++];
+                if (len > 1) {
+                  output[_out++] = output[from++];
+                }
+              }
+            }
+          }
+          else if ((op & 64) === 0) {          /* 2nd level distance code */
+            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+            continue dodist;
+          }
+          else {
+            strm.msg = 'invalid distance code';
+            state.mode = BAD;
+            break top;
+          }
+
+          break; // need to emulate goto via "continue"
+        }
+      }
+      else if ((op & 64) === 0) {              /* 2nd level length code */
+        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+        continue dolen;
+      }
+      else if (op & 32) {                     /* end-of-block */
+        //Tracevv((stderr, "inflate:         end of block\n"));
+        state.mode = TYPE;
+        break top;
+      }
+      else {
+        strm.msg = 'invalid literal/length code';
+        state.mode = BAD;
+        break top;
+      }
+
+      break; // need to emulate goto via "continue"
+    }
+  } while (_in < last && _out < end);
+
+  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
+  len = bits >> 3;
+  _in -= len;
+  bits -= len << 3;
+  hold &= (1 << bits) - 1;
+
+  /* update state and return */
+  strm.next_in = _in;
+  strm.next_out = _out;
+  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
+  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
+  state.hold = hold;
+  state.bits = bits;
+  return;
+};
+
+
+/***/ }),
+/* 159 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils = __webpack_require__(34);
+
+var MAXBITS = 15;
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+var lbase = [ /* Length codes 257..285 base */
+  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
+  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
+];
+
+var lext = [ /* Length codes 257..285 extra */
+  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
+  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
+];
+
+var dbase = [ /* Distance codes 0..29 base */
+  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
+  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
+  8193, 12289, 16385, 24577, 0, 0
+];
+
+var dext = [ /* Distance codes 0..29 extra */
+  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
+  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
+  28, 28, 29, 29, 64, 64
+];
+
+module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
+{
+  var bits = opts.bits;
+      //here = opts.here; /* table entry for duplication */
+
+  var len = 0;               /* a code's length in bits */
+  var sym = 0;               /* index of code symbols */
+  var min = 0, max = 0;          /* minimum and maximum code lengths */
+  var root = 0;              /* number of index bits for root table */
+  var curr = 0;              /* number of index bits for current table */
+  var drop = 0;              /* code bits to drop for sub-table */
+  var left = 0;                   /* number of prefix codes available */
+  var used = 0;              /* code entries in table used */
+  var huff = 0;              /* Huffman code */
+  var incr;              /* for incrementing code, index */
+  var fill;              /* index for replicating entries */
+  var low;               /* low bits for current root entry */
+  var mask;              /* mask for low root bits */
+  var next;             /* next available space in table */
+  var base = null;     /* base value table to use */
+  var base_index = 0;
+//  var shoextra;    /* extra bits table to use */
+  var end;                    /* use base and extra for symbol > end */
+  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */
+  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */
+  var extra = null;
+  var extra_index = 0;
+
+  var here_bits, here_op, here_val;
+
+  /*
+   Process a set of code lengths to create a canonical Huffman code.  The
+   code lengths are lens[0..codes-1].  Each length corresponds to the
+   symbols 0..codes-1.  The Huffman code is generated by first sorting the
+   symbols by length from short to long, and retaining the symbol order
+   for codes with equal lengths.  Then the code starts with all zero bits
+   for the first code of the shortest length, and the codes are integer
+   increments for the same length, and zeros are appended as the length
+   increases.  For the deflate format, these bits are stored backwards
+   from their more natural integer increment ordering, and so when the
+   decoding tables are built in the large loop below, the integer codes
+   are incremented backwards.
+
+   This routine assumes, but does not check, that all of the entries in
+   lens[] are in the range 0..MAXBITS.  The caller must assure this.
+   1..MAXBITS is interpreted as that code length.  zero means that that
+   symbol does not occur in this code.
+
+   The codes are sorted by computing a count of codes for each length,
+   creating from that a table of starting indices for each length in the
+   sorted table, and then entering the symbols in order in the sorted
+   table.  The sorted table is work[], with that space being provided by
+   the caller.
+
+   The length counts are used for other purposes as well, i.e. finding
+   the minimum and maximum length codes, determining if there are any
+   codes at all, checking for a valid set of lengths, and looking ahead
+   at length counts to determine sub-table sizes when building the
+   decoding tables.
+   */
+
+  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
+  for (len = 0; len <= MAXBITS; len++) {
+    count[len] = 0;
+  }
+  for (sym = 0; sym < codes; sym++) {
+    count[lens[lens_index + sym]]++;
+  }
+
+  /* bound code lengths, force root to be within code lengths */
+  root = bits;
+  for (max = MAXBITS; max >= 1; max--) {
+    if (count[max] !== 0) { break; }
+  }
+  if (root > max) {
+    root = max;
+  }
+  if (max === 0) {                     /* no symbols to code at all */
+    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
+    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
+    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+
+    //table.op[opts.table_index] = 64;
+    //table.bits[opts.table_index] = 1;
+    //table.val[opts.table_index++] = 0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+    opts.bits = 1;
+    return 0;     /* no symbols, but wait for decoding to report error */
+  }
+  for (min = 1; min < max; min++) {
+    if (count[min] !== 0) { break; }
+  }
+  if (root < min) {
+    root = min;
+  }
+
+  /* check for an over-subscribed or incomplete set of lengths */
+  left = 1;
+  for (len = 1; len <= MAXBITS; len++) {
+    left <<= 1;
+    left -= count[len];
+    if (left < 0) {
+      return -1;
+    }        /* over-subscribed */
+  }
+  if (left > 0 && (type === CODES || max !== 1)) {
+    return -1;                      /* incomplete set */
+  }
+
+  /* generate offsets into symbol table for each length for sorting */
+  offs[1] = 0;
+  for (len = 1; len < MAXBITS; len++) {
+    offs[len + 1] = offs[len] + count[len];
+  }
+
+  /* sort symbols by length, by symbol order within each length */
+  for (sym = 0; sym < codes; sym++) {
+    if (lens[lens_index + sym] !== 0) {
+      work[offs[lens[lens_index + sym]]++] = sym;
+    }
+  }
+
+  /*
+   Create and fill in decoding tables.  In this loop, the table being
+   filled is at next and has curr index bits.  The code being used is huff
+   with length len.  That code is converted to an index by dropping drop
+   bits off of the bottom.  For codes where len is less than drop + curr,
+   those top drop + curr - len bits are incremented through all values to
+   fill the table with replicated entries.
+
+   root is the number of index bits for the root table.  When len exceeds
+   root, sub-tables are created pointed to by the root entry with an index
+   of the low root bits of huff.  This is saved in low to check for when a
+   new sub-table should be started.  drop is zero when the root table is
+   being filled, and drop is root when sub-tables are being filled.
+
+   When a new sub-table is needed, it is necessary to look ahead in the
+   code lengths to determine what size sub-table is needed.  The length
+   counts are used for this, and so count[] is decremented as codes are
+   entered in the tables.
+
+   used keeps track of how many table entries have been allocated from the
+   provided *table space.  It is checked for LENS and DIST tables against
+   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
+   the initial root table size constants.  See the comments in inftrees.h
+   for more information.
+
+   sym increments through all symbols, and the loop terminates when
+   all codes of length max, i.e. all codes, have been processed.  This
+   routine permits incomplete codes, so another loop after this one fills
+   in the rest of the decoding tables with invalid code markers.
+   */
+
+  /* set up for code type */
+  // poor man optimization - use if-else instead of switch,
+  // to avoid deopts in old v8
+  if (type === CODES) {
+    base = extra = work;    /* dummy value--not used */
+    end = 19;
+
+  } else if (type === LENS) {
+    base = lbase;
+    base_index -= 257;
+    extra = lext;
+    extra_index -= 257;
+    end = 256;
+
+  } else {                    /* DISTS */
+    base = dbase;
+    extra = dext;
+    end = -1;
+  }
+
+  /* initialize opts for loop */
+  huff = 0;                   /* starting code */
+  sym = 0;                    /* starting code symbol */
+  len = min;                  /* starting code length */
+  next = table_index;              /* current table to fill in */
+  curr = root;                /* current table index bits */
+  drop = 0;                   /* current bits to drop from code for index */
+  low = -1;                   /* trigger new sub-table when len > root */
+  used = 1 << root;          /* use root table entries */
+  mask = used - 1;            /* mask for comparing low */
+
+  /* check available table space */
+  if ((type === LENS && used > ENOUGH_LENS) ||
+    (type === DISTS && used > ENOUGH_DISTS)) {
+    return 1;
+  }
+
+  /* process all codes and make table entries */
+  for (;;) {
+    /* create table entry */
+    here_bits = len - drop;
+    if (work[sym] < end) {
+      here_op = 0;
+      here_val = work[sym];
+    }
+    else if (work[sym] > end) {
+      here_op = extra[extra_index + work[sym]];
+      here_val = base[base_index + work[sym]];
+    }
+    else {
+      here_op = 32 + 64;         /* end of block */
+      here_val = 0;
+    }
+
+    /* replicate for those indices with low len bits equal to huff */
+    incr = 1 << (len - drop);
+    fill = 1 << curr;
+    min = fill;                 /* save offset to next table */
+    do {
+      fill -= incr;
+      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
+    } while (fill !== 0);
+
+    /* backwards increment the len-bit code huff */
+    incr = 1 << (len - 1);
+    while (huff & incr) {
+      incr >>= 1;
+    }
+    if (incr !== 0) {
+      huff &= incr - 1;
+      huff += incr;
+    } else {
+      huff = 0;
+    }
+
+    /* go to next symbol, update count, len */
+    sym++;
+    if (--count[len] === 0) {
+      if (len === max) { break; }
+      len = lens[lens_index + work[sym]];
+    }
+
+    /* create new sub-table if needed */
+    if (len > root && (huff & mask) !== low) {
+      /* if first time, transition to sub-tables */
+      if (drop === 0) {
+        drop = root;
+      }
+
+      /* increment past last table */
+      next += min;            /* here min is 1 << curr */
+
+      /* determine length of next table */
+      curr = len - drop;
+      left = 1 << curr;
+      while (curr + drop < max) {
+        left -= count[curr + drop];
+        if (left <= 0) { break; }
+        curr++;
+        left <<= 1;
+      }
+
+      /* check for enough space */
+      used += 1 << curr;
+      if ((type === LENS && used > ENOUGH_LENS) ||
+        (type === DISTS && used > ENOUGH_DISTS)) {
+        return 1;
+      }
+
+      /* point entry in root table to sub-table */
+      low = huff & mask;
+      /*table.op[low] = curr;
+      table.bits[low] = root;
+      table.val[low] = next - opts.table_index;*/
+      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
+    }
+  }
+
+  /* fill in remaining table entry if code is incomplete (guaranteed to have
+   at most one remaining entry, since if the code is incomplete, the
+   maximum code length that was allowed to get this far is one bit) */
+  if (huff !== 0) {
+    //table.op[next + huff] = 64;            /* invalid code marker */
+    //table.bits[next + huff] = len - drop;
+    //table.val[next + huff] = 0;
+    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
+  }
+
+  /* set return parameters */
+  //opts.table_index += used;
+  opts.bits = root;
+  return 0;
+};
+
+
+/***/ }),
+/* 160 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+module.exports = {
+
+  /* Allowed flush values; see deflate() and inflate() below for details */
+  Z_NO_FLUSH:         0,
+  Z_PARTIAL_FLUSH:    1,
+  Z_SYNC_FLUSH:       2,
+  Z_FULL_FLUSH:       3,
+  Z_FINISH:           4,
+  Z_BLOCK:            5,
+  Z_TREES:            6,
+
+  /* Return codes for the compression/decompression functions. Negative values
+  * are errors, positive values are used for special but normal events.
+  */
+  Z_OK:               0,
+  Z_STREAM_END:       1,
+  Z_NEED_DICT:        2,
+  Z_ERRNO:           -1,
+  Z_STREAM_ERROR:    -2,
+  Z_DATA_ERROR:      -3,
+  //Z_MEM_ERROR:     -4,
+  Z_BUF_ERROR:       -5,
+  //Z_VERSION_ERROR: -6,
+
+  /* compression levels */
+  Z_NO_COMPRESSION:         0,
+  Z_BEST_SPEED:             1,
+  Z_BEST_COMPRESSION:       9,
+  Z_DEFAULT_COMPRESSION:   -1,
+
+
+  Z_FILTERED:               1,
+  Z_HUFFMAN_ONLY:           2,
+  Z_RLE:                    3,
+  Z_FIXED:                  4,
+  Z_DEFAULT_STRATEGY:       0,
+
+  /* Possible values of the data_type field (though see inflate()) */
+  Z_BINARY:                 0,
+  Z_TEXT:                   1,
+  //Z_ASCII:                1, // = Z_TEXT (deprecated)
+  Z_UNKNOWN:                2,
+
+  /* The deflate compression method */
+  Z_DEFLATED:               8
+  //Z_NULL:                 null // Use -1 or null inline, depending on var type
+};
+
+
+/***/ }),
+/* 161 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.12.6
+
+/*
+PDFPage - represents a single page in the PDF document
+By Devon Govett
+ */
+
+(function() {
+  var PDFPage;
+
+  PDFPage = (function() {
+    var DEFAULT_MARGINS, SIZES;
+
+    function PDFPage(document, options) {
+      var dimensions;
+      this.document = document;
+      if (options == null) {
+        options = {};
+      }
+      this.size = options.size || 'letter';
+      this.layout = options.layout || 'portrait';
+      if (typeof options.margin === 'number') {
+        this.margins = {
+          top: options.margin,
+          left: options.margin,
+          bottom: options.margin,
+          right: options.margin
+        };
+      } else {
+        this.margins = options.margins || DEFAULT_MARGINS;
+      }
+      dimensions = Array.isArray(this.size) ? this.size : SIZES[this.size.toUpperCase()];
+      this.width = dimensions[this.layout === 'portrait' ? 0 : 1];
+      this.height = dimensions[this.layout === 'portrait' ? 1 : 0];
+      this.content = this.document.ref();
+      this.resources = this.document.ref({
+        ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']
+      });
+      Object.defineProperties(this, {
+        fonts: {
+          get: (function(_this) {
+            return function() {
+              var base;
+              return (base = _this.resources.data).Font != null ? base.Font : base.Font = {};
+            };
+          })(this)
+        },
+        xobjects: {
+          get: (function(_this) {
+            return function() {
+              var base;
+              return (base = _this.resources.data).XObject != null ? base.XObject : base.XObject = {};
+            };
+          })(this)
+        },
+        ext_gstates: {
+          get: (function(_this) {
+            return function() {
+              var base;
+              return (base = _this.resources.data).ExtGState != null ? base.ExtGState : base.ExtGState = {};
+            };
+          })(this)
+        },
+        patterns: {
+          get: (function(_this) {
+            return function() {
+              var base;
+              return (base = _this.resources.data).Pattern != null ? base.Pattern : base.Pattern = {};
+            };
+          })(this)
+        },
+        annotations: {
+          get: (function(_this) {
+            return function() {
+              var base;
+              return (base = _this.dictionary.data).Annots != null ? base.Annots : base.Annots = [];
+            };
+          })(this)
+        }
+      });
+      this.dictionary = this.document.ref({
+        Type: 'Page',
+        Parent: this.document._root.data.Pages,
+        MediaBox: [0, 0, this.width, this.height],
+        Contents: this.content,
+        Resources: this.resources
+      });
+    }
+
+    PDFPage.prototype.maxY = function() {
+      return this.height - this.margins.bottom;
+    };
+
+    PDFPage.prototype.write = function(chunk) {
+      return this.content.write(chunk);
+    };
+
+    PDFPage.prototype.end = function() {
+      this.dictionary.end();
+      this.resources.end();
+      return this.content.end();
+    };
+
+    DEFAULT_MARGINS = {
+      top: 72,
+      left: 72,
+      bottom: 72,
+      right: 72
+    };
+
+    SIZES = {
+      '4A0': [4767.87, 6740.79],
+      '2A0': [3370.39, 4767.87],
+      A0: [2383.94, 3370.39],
+      A1: [1683.78, 2383.94],
+      A2: [1190.55, 1683.78],
+      A3: [841.89, 1190.55],
+      A4: [595.28, 841.89],
+      A5: [419.53, 595.28],
+      A6: [297.64, 419.53],
+      A7: [209.76, 297.64],
+      A8: [147.40, 209.76],
+      A9: [104.88, 147.40],
+      A10: [73.70, 104.88],
+      B0: [2834.65, 4008.19],
+      B1: [2004.09, 2834.65],
+      B2: [1417.32, 2004.09],
+      B3: [1000.63, 1417.32],
+      B4: [708.66, 1000.63],
+      B5: [498.90, 708.66],
+      B6: [354.33, 498.90],
+      B7: [249.45, 354.33],
+      B8: [175.75, 249.45],
+      B9: [124.72, 175.75],
+      B10: [87.87, 124.72],
+      C0: [2599.37, 3676.54],
+      C1: [1836.85, 2599.37],
+      C2: [1298.27, 1836.85],
+      C3: [918.43, 1298.27],
+      C4: [649.13, 918.43],
+      C5: [459.21, 649.13],
+      C6: [323.15, 459.21],
+      C7: [229.61, 323.15],
+      C8: [161.57, 229.61],
+      C9: [113.39, 161.57],
+      C10: [79.37, 113.39],
+      RA0: [2437.80, 3458.27],
+      RA1: [1729.13, 2437.80],
+      RA2: [1218.90, 1729.13],
+      RA3: [864.57, 1218.90],
+      RA4: [609.45, 864.57],
+      SRA0: [2551.18, 3628.35],
+      SRA1: [1814.17, 2551.18],
+      SRA2: [1275.59, 1814.17],
+      SRA3: [907.09, 1275.59],
+      SRA4: [637.80, 907.09],
+      EXECUTIVE: [521.86, 756.00],
+      FOLIO: [612.00, 936.00],
+      LEGAL: [612.00, 1008.00],
+      LETTER: [612.00, 792.00],
+      TABLOID: [792.00, 1224.00]
+    };
+
+    return PDFPage;
+
+  })();
+
+  module.exports = PDFPage;
+
+}).call(this);
+
+
+/***/ }),
+/* 162 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var PDFGradient, PDFLinearGradient, PDFRadialGradient, namedColors, ref;
+
+  ref = __webpack_require__(163), PDFGradient = ref.PDFGradient, PDFLinearGradient = ref.PDFLinearGradient, PDFRadialGradient = ref.PDFRadialGradient;
+
+  module.exports = {
+    initColor: function() {
+      this._opacityRegistry = {};
+      this._opacityCount = 0;
+      return this._gradCount = 0;
+    },
+    _normalizeColor: function(color) {
+      var hex, part;
+      if (color instanceof PDFGradient) {
+        return color;
+      }
+      if (typeof color === 'string') {
+        if (color.charAt(0) === '#') {
+          if (color.length === 4) {
+            color = color.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i, "#$1$1$2$2$3$3");
+          }
+          hex = parseInt(color.slice(1), 16);
+          color = [hex >> 16, hex >> 8 & 0xff, hex & 0xff];
+        } else if (namedColors[color]) {
+          color = namedColors[color];
+        }
+      }
+      if (Array.isArray(color)) {
+        if (color.length === 3) {
+          color = (function() {
+            var i, len, results;
+            results = [];
+            for (i = 0, len = color.length; i < len; i++) {
+              part = color[i];
+              results.push(part / 255);
+            }
+            return results;
+          })();
+        } else if (color.length === 4) {
+          color = (function() {
+            var i, len, results;
+            results = [];
+            for (i = 0, len = color.length; i < len; i++) {
+              part = color[i];
+              results.push(part / 100);
+            }
+            return results;
+          })();
+        }
+        return color;
+      }
+      return null;
+    },
+    _setColor: function(color, stroke) {
+      var op, space;
+      color = this._normalizeColor(color);
+      if (!color) {
+        return false;
+      }
+      op = stroke ? 'SCN' : 'scn';
+      if (color instanceof PDFGradient) {
+        this._setColorSpace('Pattern', stroke);
+        color.apply(op);
+      } else {
+        space = color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB';
+        this._setColorSpace(space, stroke);
+        color = color.join(' ');
+        this.addContent(color + " " + op);
+      }
+      return true;
+    },
+    _setColorSpace: function(space, stroke) {
+      var op;
+      op = stroke ? 'CS' : 'cs';
+      return this.addContent("/" + space + " " + op);
+    },
+    fillColor: function(color, opacity) {
+      var set;
+      set = this._setColor(color, false);
+      if (set) {
+        this.fillOpacity(opacity);
+      }
+      this._fillColor = [color, opacity];
+      return this;
+    },
+    strokeColor: function(color, opacity) {
+      var set;
+      set = this._setColor(color, true);
+      if (set) {
+        this.strokeOpacity(opacity);
+      }
+      return this;
+    },
+    opacity: function(opacity) {
+      this._doOpacity(opacity, opacity);
+      return this;
+    },
+    fillOpacity: function(opacity) {
+      this._doOpacity(opacity, null);
+      return this;
+    },
+    strokeOpacity: function(opacity) {
+      this._doOpacity(null, opacity);
+      return this;
+    },
+    _doOpacity: function(fillOpacity, strokeOpacity) {
+      var dictionary, id, key, name, ref1;
+      if (!((fillOpacity != null) || (strokeOpacity != null))) {
+        return;
+      }
+      if (fillOpacity != null) {
+        fillOpacity = Math.max(0, Math.min(1, fillOpacity));
+      }
+      if (strokeOpacity != null) {
+        strokeOpacity = Math.max(0, Math.min(1, strokeOpacity));
+      }
+      key = fillOpacity + "_" + strokeOpacity;
+      if (this._opacityRegistry[key]) {
+        ref1 = this._opacityRegistry[key], dictionary = ref1[0], name = ref1[1];
+      } else {
+        dictionary = {
+          Type: 'ExtGState'
+        };
+        if (fillOpacity != null) {
+          dictionary.ca = fillOpacity;
+        }
+        if (strokeOpacity != null) {
+          dictionary.CA = strokeOpacity;
+        }
+        dictionary = this.ref(dictionary);
+        dictionary.end();
+        id = ++this._opacityCount;
+        name = "Gs" + id;
+        this._opacityRegistry[key] = [dictionary, name];
+      }
+      this.page.ext_gstates[name] = dictionary;
+      return this.addContent("/" + name + " gs");
+    },
+    linearGradient: function(x1, y1, x2, y2) {
+      return new PDFLinearGradient(this, x1, y1, x2, y2);
+    },
+    radialGradient: function(x1, y1, r1, x2, y2, r2) {
+      return new PDFRadialGradient(this, x1, y1, r1, x2, y2, r2);
+    }
+  };
+
+  namedColors = {
+    aliceblue: [240, 248, 255],
+    antiquewhite: [250, 235, 215],
+    aqua: [0, 255, 255],
+    aquamarine: [127, 255, 212],
+    azure: [240, 255, 255],
+    beige: [245, 245, 220],
+    bisque: [255, 228, 196],
+    black: [0, 0, 0],
+    blanchedalmond: [255, 235, 205],
+    blue: [0, 0, 255],
+    blueviolet: [138, 43, 226],
+    brown: [165, 42, 42],
+    burlywood: [222, 184, 135],
+    cadetblue: [95, 158, 160],
+    chartreuse: [127, 255, 0],
+    chocolate: [210, 105, 30],
+    coral: [255, 127, 80],
+    cornflowerblue: [100, 149, 237],
+    cornsilk: [255, 248, 220],
+    crimson: [220, 20, 60],
+    cyan: [0, 255, 255],
+    darkblue: [0, 0, 139],
+    darkcyan: [0, 139, 139],
+    darkgoldenrod: [184, 134, 11],
+    darkgray: [169, 169, 169],
+    darkgreen: [0, 100, 0],
+    darkgrey: [169, 169, 169],
+    darkkhaki: [189, 183, 107],
+    darkmagenta: [139, 0, 139],
+    darkolivegreen: [85, 107, 47],
+    darkorange: [255, 140, 0],
+    darkorchid: [153, 50, 204],
+    darkred: [139, 0, 0],
+    darksalmon: [233, 150, 122],
+    darkseagreen: [143, 188, 143],
+    darkslateblue: [72, 61, 139],
+    darkslategray: [47, 79, 79],
+    darkslategrey: [47, 79, 79],
+    darkturquoise: [0, 206, 209],
+    darkviolet: [148, 0, 211],
+    deeppink: [255, 20, 147],
+    deepskyblue: [0, 191, 255],
+    dimgray: [105, 105, 105],
+    dimgrey: [105, 105, 105],
+    dodgerblue: [30, 144, 255],
+    firebrick: [178, 34, 34],
+    floralwhite: [255, 250, 240],
+    forestgreen: [34, 139, 34],
+    fuchsia: [255, 0, 255],
+    gainsboro: [220, 220, 220],
+    ghostwhite: [248, 248, 255],
+    gold: [255, 215, 0],
+    goldenrod: [218, 165, 32],
+    gray: [128, 128, 128],
+    grey: [128, 128, 128],
+    green: [0, 128, 0],
+    greenyellow: [173, 255, 47],
+    honeydew: [240, 255, 240],
+    hotpink: [255, 105, 180],
+    indianred: [205, 92, 92],
+    indigo: [75, 0, 130],
+    ivory: [255, 255, 240],
+    khaki: [240, 230, 140],
+    lavender: [230, 230, 250],
+    lavenderblush: [255, 240, 245],
+    lawngreen: [124, 252, 0],
+    lemonchiffon: [255, 250, 205],
+    lightblue: [173, 216, 230],
+    lightcoral: [240, 128, 128],
+    lightcyan: [224, 255, 255],
+    lightgoldenrodyellow: [250, 250, 210],
+    lightgray: [211, 211, 211],
+    lightgreen: [144, 238, 144],
+    lightgrey: [211, 211, 211],
+    lightpink: [255, 182, 193],
+    lightsalmon: [255, 160, 122],
+    lightseagreen: [32, 178, 170],
+    lightskyblue: [135, 206, 250],
+    lightslategray: [119, 136, 153],
+    lightslategrey: [119, 136, 153],
+    lightsteelblue: [176, 196, 222],
+    lightyellow: [255, 255, 224],
+    lime: [0, 255, 0],
+    limegreen: [50, 205, 50],
+    linen: [250, 240, 230],
+    magenta: [255, 0, 255],
+    maroon: [128, 0, 0],
+    mediumaquamarine: [102, 205, 170],
+    mediumblue: [0, 0, 205],
+    mediumorchid: [186, 85, 211],
+    mediumpurple: [147, 112, 219],
+    mediumseagreen: [60, 179, 113],
+    mediumslateblue: [123, 104, 238],
+    mediumspringgreen: [0, 250, 154],
+    mediumturquoise: [72, 209, 204],
+    mediumvioletred: [199, 21, 133],
+    midnightblue: [25, 25, 112],
+    mintcream: [245, 255, 250],
+    mistyrose: [255, 228, 225],
+    moccasin: [255, 228, 181],
+    navajowhite: [255, 222, 173],
+    navy: [0, 0, 128],
+    oldlace: [253, 245, 230],
+    olive: [128, 128, 0],
+    olivedrab: [107, 142, 35],
+    orange: [255, 165, 0],
+    orangered: [255, 69, 0],
+    orchid: [218, 112, 214],
+    palegoldenrod: [238, 232, 170],
+    palegreen: [152, 251, 152],
+    paleturquoise: [175, 238, 238],
+    palevioletred: [219, 112, 147],
+    papayawhip: [255, 239, 213],
+    peachpuff: [255, 218, 185],
+    peru: [205, 133, 63],
+    pink: [255, 192, 203],
+    plum: [221, 160, 221],
+    powderblue: [176, 224, 230],
+    purple: [128, 0, 128],
+    red: [255, 0, 0],
+    rosybrown: [188, 143, 143],
+    royalblue: [65, 105, 225],
+    saddlebrown: [139, 69, 19],
+    salmon: [250, 128, 114],
+    sandybrown: [244, 164, 96],
+    seagreen: [46, 139, 87],
+    seashell: [255, 245, 238],
+    sienna: [160, 82, 45],
+    silver: [192, 192, 192],
+    skyblue: [135, 206, 235],
+    slateblue: [106, 90, 205],
+    slategray: [112, 128, 144],
+    slategrey: [112, 128, 144],
+    snow: [255, 250, 250],
+    springgreen: [0, 255, 127],
+    steelblue: [70, 130, 180],
+    tan: [210, 180, 140],
+    teal: [0, 128, 128],
+    thistle: [216, 191, 216],
+    tomato: [255, 99, 71],
+    turquoise: [64, 224, 208],
+    violet: [238, 130, 238],
+    wheat: [245, 222, 179],
+    white: [255, 255, 255],
+    whitesmoke: [245, 245, 245],
+    yellow: [255, 255, 0],
+    yellowgreen: [154, 205, 50]
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 163 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var PDFGradient, PDFLinearGradient, PDFRadialGradient,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  PDFGradient = (function() {
+    function PDFGradient(doc) {
+      this.doc = doc;
+      this.stops = [];
+      this.embedded = false;
+      this.transform = [1, 0, 0, 1, 0, 0];
+      this._colorSpace = 'DeviceRGB';
+    }
+
+    PDFGradient.prototype.stop = function(pos, color, opacity) {
+      if (opacity == null) {
+        opacity = 1;
+      }
+      opacity = Math.max(0, Math.min(1, opacity));
+      this.stops.push([pos, this.doc._normalizeColor(color), opacity]);
+      return this;
+    };
+
+    PDFGradient.prototype.setTransform = function(m11, m12, m21, m22, dx, dy) {
+      this.transform = [m11, m12, m21, m22, dx, dy];
+      return this;
+    };
+
+    PDFGradient.prototype.embed = function(m) {
+      var bounds, encode, fn, form, grad, gstate, i, j, k, last, len, opacityPattern, pageBBox, pattern, ref, ref1, shader, stop, stops, v;
+      if (this.stops.length === 0) {
+        return;
+      }
+      this.embedded = true;
+      this.matrix = m;
+      last = this.stops[this.stops.length - 1];
+      if (last[0] < 1) {
+        this.stops.push([1, last[1], last[2]]);
+      }
+      bounds = [];
+      encode = [];
+      stops = [];
+      for (i = j = 0, ref = this.stops.length - 1; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        encode.push(0, 1);
+        if (i + 2 !== this.stops.length) {
+          bounds.push(this.stops[i + 1][0]);
+        }
+        fn = this.doc.ref({
+          FunctionType: 2,
+          Domain: [0, 1],
+          C0: this.stops[i + 0][1],
+          C1: this.stops[i + 1][1],
+          N: 1
+        });
+        stops.push(fn);
+        fn.end();
+      }
+      if (stops.length === 1) {
+        fn = stops[0];
+      } else {
+        fn = this.doc.ref({
+          FunctionType: 3,
+          Domain: [0, 1],
+          Functions: stops,
+          Bounds: bounds,
+          Encode: encode
+        });
+        fn.end();
+      }
+      this.id = 'Sh' + (++this.doc._gradCount);
+      shader = this.shader(fn);
+      shader.end();
+      pattern = this.doc.ref({
+        Type: 'Pattern',
+        PatternType: 2,
+        Shading: shader,
+        Matrix: (function() {
+          var k, len, ref1, results;
+          ref1 = this.matrix;
+          results = [];
+          for (k = 0, len = ref1.length; k < len; k++) {
+            v = ref1[k];
+            results.push(+v.toFixed(5));
+          }
+          return results;
+        }).call(this)
+      });
+      pattern.end();
+      if (this.stops.some(function(stop) {
+        return stop[2] < 1;
+      })) {
+        grad = this.opacityGradient();
+        grad._colorSpace = 'DeviceGray';
+        ref1 = this.stops;
+        for (k = 0, len = ref1.length; k < len; k++) {
+          stop = ref1[k];
+          grad.stop(stop[0], [stop[2]]);
+        }
+        grad = grad.embed(this.matrix);
+        pageBBox = [0, 0, this.doc.page.width, this.doc.page.height];
+        form = this.doc.ref({
+          Type: 'XObject',
+          Subtype: 'Form',
+          FormType: 1,
+          BBox: pageBBox,
+          Group: {
+            Type: 'Group',
+            S: 'Transparency',
+            CS: 'DeviceGray'
+          },
+          Resources: {
+            ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],
+            Pattern: {
+              Sh1: grad
+            }
+          }
+        });
+        form.write("/Pattern cs /Sh1 scn");
+        form.end((pageBBox.join(" ")) + " re f");
+        gstate = this.doc.ref({
+          Type: 'ExtGState',
+          SMask: {
+            Type: 'Mask',
+            S: 'Luminosity',
+            G: form
+          }
+        });
+        gstate.end();
+        opacityPattern = this.doc.ref({
+          Type: 'Pattern',
+          PatternType: 1,
+          PaintType: 1,
+          TilingType: 2,
+          BBox: pageBBox,
+          XStep: pageBBox[2],
+          YStep: pageBBox[3],
+          Resources: {
+            ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],
+            Pattern: {
+              Sh1: pattern
+            },
+            ExtGState: {
+              Gs1: gstate
+            }
+          }
+        });
+        opacityPattern.write("/Gs1 gs /Pattern cs /Sh1 scn");
+        opacityPattern.end((pageBBox.join(" ")) + " re f");
+        this.doc.page.patterns[this.id] = opacityPattern;
+      } else {
+        this.doc.page.patterns[this.id] = pattern;
+      }
+      return pattern;
+    };
+
+    PDFGradient.prototype.apply = function(op) {
+      var dx, dy, m, m0, m1, m11, m12, m2, m21, m22, m3, m4, m5, ref, ref1;
+      ref = this.doc._ctm.slice(), m0 = ref[0], m1 = ref[1], m2 = ref[2], m3 = ref[3], m4 = ref[4], m5 = ref[5];
+      ref1 = this.transform, m11 = ref1[0], m12 = ref1[1], m21 = ref1[2], m22 = ref1[3], dx = ref1[4], dy = ref1[5];
+      m = [m0 * m11 + m2 * m12, m1 * m11 + m3 * m12, m0 * m21 + m2 * m22, m1 * m21 + m3 * m22, m0 * dx + m2 * dy + m4, m1 * dx + m3 * dy + m5];
+      if (!(this.embedded && m.join(" ") === this.matrix.join(" "))) {
+        this.embed(m);
+      }
+      return this.doc.addContent("/" + this.id + " " + op);
+    };
+
+    return PDFGradient;
+
+  })();
+
+  PDFLinearGradient = (function(superClass) {
+    extend(PDFLinearGradient, superClass);
+
+    function PDFLinearGradient(doc, x1, y1, x2, y2) {
+      this.doc = doc;
+      this.x1 = x1;
+      this.y1 = y1;
+      this.x2 = x2;
+      this.y2 = y2;
+      PDFLinearGradient.__super__.constructor.apply(this, arguments);
+    }
+
+    PDFLinearGradient.prototype.shader = function(fn) {
+      return this.doc.ref({
+        ShadingType: 2,
+        ColorSpace: this._colorSpace,
+        Coords: [this.x1, this.y1, this.x2, this.y2],
+        Function: fn,
+        Extend: [true, true]
+      });
+    };
+
+    PDFLinearGradient.prototype.opacityGradient = function() {
+      return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2);
+    };
+
+    return PDFLinearGradient;
+
+  })(PDFGradient);
+
+  PDFRadialGradient = (function(superClass) {
+    extend(PDFRadialGradient, superClass);
+
+    function PDFRadialGradient(doc, x1, y1, r1, x2, y2, r2) {
+      this.doc = doc;
+      this.x1 = x1;
+      this.y1 = y1;
+      this.r1 = r1;
+      this.x2 = x2;
+      this.y2 = y2;
+      this.r2 = r2;
+      PDFRadialGradient.__super__.constructor.apply(this, arguments);
+    }
+
+    PDFRadialGradient.prototype.shader = function(fn) {
+      return this.doc.ref({
+        ShadingType: 3,
+        ColorSpace: this._colorSpace,
+        Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2],
+        Function: fn,
+        Extend: [true, true]
+      });
+    };
+
+    PDFRadialGradient.prototype.opacityGradient = function() {
+      return new PDFRadialGradient(this.doc, this.x1, this.y1, this.r1, this.x2, this.y2, this.r2);
+    };
+
+    return PDFRadialGradient;
+
+  })(PDFGradient);
+
+  module.exports = {
+    PDFGradient: PDFGradient,
+    PDFLinearGradient: PDFLinearGradient,
+    PDFRadialGradient: PDFRadialGradient
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 164 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var KAPPA, SVGPath, number,
+    slice = [].slice;
+
+  SVGPath = __webpack_require__(165);
+
+  number = __webpack_require__(26).number;
+
+  KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);
+
+  module.exports = {
+    initVector: function() {
+      this._ctm = [1, 0, 0, 1, 0, 0];
+      return this._ctmStack = [];
+    },
+    save: function() {
+      this._ctmStack.push(this._ctm.slice());
+      return this.addContent('q');
+    },
+    restore: function() {
+      this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0];
+      return this.addContent('Q');
+    },
+    closePath: function() {
+      return this.addContent('h');
+    },
+    lineWidth: function(w) {
+      return this.addContent((number(w)) + " w");
+    },
+    _CAP_STYLES: {
+      BUTT: 0,
+      ROUND: 1,
+      SQUARE: 2
+    },
+    lineCap: function(c) {
+      if (typeof c === 'string') {
+        c = this._CAP_STYLES[c.toUpperCase()];
+      }
+      return this.addContent(c + " J");
+    },
+    _JOIN_STYLES: {
+      MITER: 0,
+      ROUND: 1,
+      BEVEL: 2
+    },
+    lineJoin: function(j) {
+      if (typeof j === 'string') {
+        j = this._JOIN_STYLES[j.toUpperCase()];
+      }
+      return this.addContent(j + " j");
+    },
+    miterLimit: function(m) {
+      return this.addContent((number(m)) + " M");
+    },
+    dash: function(length, options) {
+      var phase, ref, space, v;
+      if (options == null) {
+        options = {};
+      }
+      if (length == null) {
+        return this;
+      }
+      if (Array.isArray(length)) {
+        length = ((function() {
+          var i, len, results;
+          results = [];
+          for (i = 0, len = length.length; i < len; i++) {
+            v = length[i];
+            results.push(number(v));
+          }
+          return results;
+        })()).join(' ');
+        phase = options.phase || 0;
+        return this.addContent("[" + length + "] " + (number(phase)) + " d");
+      } else {
+        space = (ref = options.space) != null ? ref : length;
+        phase = options.phase || 0;
+        return this.addContent("[" + (number(length)) + " " + (number(space)) + "] " + (number(phase)) + " d");
+      }
+    },
+    undash: function() {
+      return this.addContent("[] 0 d");
+    },
+    moveTo: function(x, y) {
+      return this.addContent((number(x)) + " " + (number(y)) + " m");
+    },
+    lineTo: function(x, y) {
+      return this.addContent((number(x)) + " " + (number(y)) + " l");
+    },
+    bezierCurveTo: function(cp1x, cp1y, cp2x, cp2y, x, y) {
+      return this.addContent((number(cp1x)) + " " + (number(cp1y)) + " " + (number(cp2x)) + " " + (number(cp2y)) + " " + (number(x)) + " " + (number(y)) + " c");
+    },
+    quadraticCurveTo: function(cpx, cpy, x, y) {
+      return this.addContent((number(cpx)) + " " + (number(cpy)) + " " + (number(x)) + " " + (number(y)) + " v");
+    },
+    rect: function(x, y, w, h) {
+      return this.addContent((number(x)) + " " + (number(y)) + " " + (number(w)) + " " + (number(h)) + " re");
+    },
+    roundedRect: function(x, y, w, h, r) {
+      var c;
+      if (r == null) {
+        r = 0;
+      }
+      r = Math.min(r, 0.5 * w, 0.5 * h);
+      c = r * (1.0 - KAPPA);
+      this.moveTo(x + r, y);
+      this.lineTo(x + w - r, y);
+      this.bezierCurveTo(x + w - c, y, x + w, y + c, x + w, y + r);
+      this.lineTo(x + w, y + h - r);
+      this.bezierCurveTo(x + w, y + h - c, x + w - c, y + h, x + w - r, y + h);
+      this.lineTo(x + r, y + h);
+      this.bezierCurveTo(x + c, y + h, x, y + h - c, x, y + h - r);
+      this.lineTo(x, y + r);
+      this.bezierCurveTo(x, y + c, x + c, y, x + r, y);
+      return this.closePath();
+    },
+    ellipse: function(x, y, r1, r2) {
+      var ox, oy, xe, xm, ye, ym;
+      if (r2 == null) {
+        r2 = r1;
+      }
+      x -= r1;
+      y -= r2;
+      ox = r1 * KAPPA;
+      oy = r2 * KAPPA;
+      xe = x + r1 * 2;
+      ye = y + r2 * 2;
+      xm = x + r1;
+      ym = y + r2;
+      this.moveTo(x, ym);
+      this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);
+      this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);
+      this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);
+      this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);
+      return this.closePath();
+    },
+    circle: function(x, y, radius) {
+      return this.ellipse(x, y, radius);
+    },
+    arc: function(x, y, radius, startAngle, endAngle, anticlockwise) {
+      var HALF_PI, TWO_PI, ax, ay, cp1x, cp1y, cp2x, cp2y, curAng, deltaAng, deltaCx, deltaCy, dir, handleLen, i, numSegs, ref, segAng, segIdx;
+      if (anticlockwise == null) {
+        anticlockwise = false;
+      }
+      TWO_PI = 2.0 * Math.PI;
+      HALF_PI = 0.5 * Math.PI;
+      deltaAng = endAngle - startAngle;
+      if (Math.abs(deltaAng) > TWO_PI) {
+        deltaAng = TWO_PI;
+      } else if (deltaAng !== 0 && anticlockwise !== (deltaAng < 0)) {
+        dir = anticlockwise ? -1 : 1;
+        deltaAng = dir * TWO_PI + deltaAng;
+      }
+      numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI);
+      segAng = deltaAng / numSegs;
+      handleLen = (segAng / HALF_PI) * KAPPA * radius;
+      curAng = startAngle;
+      deltaCx = -Math.sin(curAng) * handleLen;
+      deltaCy = Math.cos(curAng) * handleLen;
+      ax = x + Math.cos(curAng) * radius;
+      ay = y + Math.sin(curAng) * radius;
+      this.moveTo(ax, ay);
+      for (segIdx = i = 0, ref = numSegs; 0 <= ref ? i < ref : i > ref; segIdx = 0 <= ref ? ++i : --i) {
+        cp1x = ax + deltaCx;
+        cp1y = ay + deltaCy;
+        curAng += segAng;
+        ax = x + Math.cos(curAng) * radius;
+        ay = y + Math.sin(curAng) * radius;
+        deltaCx = -Math.sin(curAng) * handleLen;
+        deltaCy = Math.cos(curAng) * handleLen;
+        cp2x = ax - deltaCx;
+        cp2y = ay - deltaCy;
+        this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay);
+      }
+      return this;
+    },
+    polygon: function() {
+      var i, len, point, points;
+      points = 1 <= arguments.length ? slice.call(arguments, 0) : [];
+      this.moveTo.apply(this, points.shift());
+      for (i = 0, len = points.length; i < len; i++) {
+        point = points[i];
+        this.lineTo.apply(this, point);
+      }
+      return this.closePath();
+    },
+    path: function(path) {
+      SVGPath.apply(this, path);
+      return this;
+    },
+    _windingRule: function(rule) {
+      if (/even-?odd/.test(rule)) {
+        return '*';
+      }
+      return '';
+    },
+    fill: function(color, rule) {
+      if (/(even-?odd)|(non-?zero)/.test(color)) {
+        rule = color;
+        color = null;
+      }
+      if (color) {
+        this.fillColor(color);
+      }
+      return this.addContent('f' + this._windingRule(rule));
+    },
+    stroke: function(color) {
+      if (color) {
+        this.strokeColor(color);
+      }
+      return this.addContent('S');
+    },
+    fillAndStroke: function(fillColor, strokeColor, rule) {
+      var isFillRule;
+      if (strokeColor == null) {
+        strokeColor = fillColor;
+      }
+      isFillRule = /(even-?odd)|(non-?zero)/;
+      if (isFillRule.test(fillColor)) {
+        rule = fillColor;
+        fillColor = null;
+      }
+      if (isFillRule.test(strokeColor)) {
+        rule = strokeColor;
+        strokeColor = fillColor;
+      }
+      if (fillColor) {
+        this.fillColor(fillColor);
+        this.strokeColor(strokeColor);
+      }
+      return this.addContent('B' + this._windingRule(rule));
+    },
+    clip: function(rule) {
+      return this.addContent('W' + this._windingRule(rule) + ' n');
+    },
+    transform: function(m11, m12, m21, m22, dx, dy) {
+      var m, m0, m1, m2, m3, m4, m5, v, values;
+      m = this._ctm;
+      m0 = m[0], m1 = m[1], m2 = m[2], m3 = m[3], m4 = m[4], m5 = m[5];
+      m[0] = m0 * m11 + m2 * m12;
+      m[1] = m1 * m11 + m3 * m12;
+      m[2] = m0 * m21 + m2 * m22;
+      m[3] = m1 * m21 + m3 * m22;
+      m[4] = m0 * dx + m2 * dy + m4;
+      m[5] = m1 * dx + m3 * dy + m5;
+      values = ((function() {
+        var i, len, ref, results;
+        ref = [m11, m12, m21, m22, dx, dy];
+        results = [];
+        for (i = 0, len = ref.length; i < len; i++) {
+          v = ref[i];
+          results.push(number(v));
+        }
+        return results;
+      })()).join(' ');
+      return this.addContent(values + " cm");
+    },
+    translate: function(x, y) {
+      return this.transform(1, 0, 0, 1, x, y);
+    },
+    rotate: function(angle, options) {
+      var cos, rad, ref, sin, x, x1, y, y1;
+      if (options == null) {
+        options = {};
+      }
+      rad = angle * Math.PI / 180;
+      cos = Math.cos(rad);
+      sin = Math.sin(rad);
+      x = y = 0;
+      if (options.origin != null) {
+        ref = options.origin, x = ref[0], y = ref[1];
+        x1 = x * cos - y * sin;
+        y1 = x * sin + y * cos;
+        x -= x1;
+        y -= y1;
+      }
+      return this.transform(cos, sin, -sin, cos, x, y);
+    },
+    scale: function(xFactor, yFactor, options) {
+      var ref, x, y;
+      if (yFactor == null) {
+        yFactor = xFactor;
+      }
+      if (options == null) {
+        options = {};
+      }
+      if (typeof yFactor === "object") {
+        options = yFactor;
+        yFactor = xFactor;
+      }
+      x = y = 0;
+      if (options.origin != null) {
+        ref = options.origin, x = ref[0], y = ref[1];
+        x -= xFactor * x;
+        y -= yFactor * y;
+      }
+      return this.transform(xFactor, 0, 0, yFactor, x, y);
+    }
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 165 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var SVGPath;
+
+  SVGPath = (function() {
+    var apply, arcToSegments, cx, cy, parameters, parse, px, py, runners, segmentToBezier, solveArc, sx, sy;
+
+    function SVGPath() {}
+
+    SVGPath.apply = function(doc, path) {
+      var commands;
+      commands = parse(path);
+      return apply(commands, doc);
+    };
+
+    parameters = {
+      A: 7,
+      a: 7,
+      C: 6,
+      c: 6,
+      H: 1,
+      h: 1,
+      L: 2,
+      l: 2,
+      M: 2,
+      m: 2,
+      Q: 4,
+      q: 4,
+      S: 4,
+      s: 4,
+      T: 2,
+      t: 2,
+      V: 1,
+      v: 1,
+      Z: 0,
+      z: 0
+    };
+
+    parse = function(path) {
+      var args, c, cmd, curArg, foundDecimal, j, len, params, ret;
+      ret = [];
+      args = [];
+      curArg = "";
+      foundDecimal = false;
+      params = 0;
+      for (j = 0, len = path.length; j < len; j++) {
+        c = path[j];
+        if (parameters[c] != null) {
+          params = parameters[c];
+          if (cmd) {
+            if (curArg.length > 0) {
+              args[args.length] = +curArg;
+            }
+            ret[ret.length] = {
+              cmd: cmd,
+              args: args
+            };
+            args = [];
+            curArg = "";
+            foundDecimal = false;
+          }
+          cmd = c;
+        } else if ((c === " " || c === ",") || (c === "-" && curArg.length > 0 && curArg[curArg.length - 1] !== 'e') || (c === "." && foundDecimal)) {
+          if (curArg.length === 0) {
+            continue;
+          }
+          if (args.length === params) {
+            ret[ret.length] = {
+              cmd: cmd,
+              args: args
+            };
+            args = [+curArg];
+            if (cmd === "M") {
+              cmd = "L";
+            }
+            if (cmd === "m") {
+              cmd = "l";
+            }
+          } else {
+            args[args.length] = +curArg;
+          }
+          foundDecimal = c === ".";
+          curArg = c === '-' || c === '.' ? c : '';
+        } else {
+          curArg += c;
+          if (c === '.') {
+            foundDecimal = true;
+          }
+        }
+      }
+      if (curArg.length > 0) {
+        if (args.length === params) {
+          ret[ret.length] = {
+            cmd: cmd,
+            args: args
+          };
+          args = [+curArg];
+          if (cmd === "M") {
+            cmd = "L";
+          }
+          if (cmd === "m") {
+            cmd = "l";
+          }
+        } else {
+          args[args.length] = +curArg;
+        }
+      }
+      ret[ret.length] = {
+        cmd: cmd,
+        args: args
+      };
+      return ret;
+    };
+
+    cx = cy = px = py = sx = sy = 0;
+
+    apply = function(commands, doc) {
+      var c, i, j, len, name;
+      cx = cy = px = py = sx = sy = 0;
+      for (i = j = 0, len = commands.length; j < len; i = ++j) {
+        c = commands[i];
+        if (typeof runners[name = c.cmd] === "function") {
+          runners[name](doc, c.args);
+        }
+      }
+      return cx = cy = px = py = 0;
+    };
+
+    runners = {
+      M: function(doc, a) {
+        cx = a[0];
+        cy = a[1];
+        px = py = null;
+        sx = cx;
+        sy = cy;
+        return doc.moveTo(cx, cy);
+      },
+      m: function(doc, a) {
+        cx += a[0];
+        cy += a[1];
+        px = py = null;
+        sx = cx;
+        sy = cy;
+        return doc.moveTo(cx, cy);
+      },
+      C: function(doc, a) {
+        cx = a[4];
+        cy = a[5];
+        px = a[2];
+        py = a[3];
+        return doc.bezierCurveTo.apply(doc, a);
+      },
+      c: function(doc, a) {
+        doc.bezierCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy, a[4] + cx, a[5] + cy);
+        px = cx + a[2];
+        py = cy + a[3];
+        cx += a[4];
+        return cy += a[5];
+      },
+      S: function(doc, a) {
+        if (px === null) {
+          px = cx;
+          py = cy;
+        }
+        doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);
+        px = a[0];
+        py = a[1];
+        cx = a[2];
+        return cy = a[3];
+      },
+      s: function(doc, a) {
+        if (px === null) {
+          px = cx;
+          py = cy;
+        }
+        doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), cx + a[0], cy + a[1], cx + a[2], cy + a[3]);
+        px = cx + a[0];
+        py = cy + a[1];
+        cx += a[2];
+        return cy += a[3];
+      },
+      Q: function(doc, a) {
+        px = a[0];
+        py = a[1];
+        cx = a[2];
+        cy = a[3];
+        return doc.quadraticCurveTo(a[0], a[1], cx, cy);
+      },
+      q: function(doc, a) {
+        doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);
+        px = cx + a[0];
+        py = cy + a[1];
+        cx += a[2];
+        return cy += a[3];
+      },
+      T: function(doc, a) {
+        if (px === null) {
+          px = cx;
+          py = cy;
+        } else {
+          px = cx - (px - cx);
+          py = cy - (py - cy);
+        }
+        doc.quadraticCurveTo(px, py, a[0], a[1]);
+        px = cx - (px - cx);
+        py = cy - (py - cy);
+        cx = a[0];
+        return cy = a[1];
+      },
+      t: function(doc, a) {
+        if (px === null) {
+          px = cx;
+          py = cy;
+        } else {
+          px = cx - (px - cx);
+          py = cy - (py - cy);
+        }
+        doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]);
+        cx += a[0];
+        return cy += a[1];
+      },
+      A: function(doc, a) {
+        solveArc(doc, cx, cy, a);
+        cx = a[5];
+        return cy = a[6];
+      },
+      a: function(doc, a) {
+        a[5] += cx;
+        a[6] += cy;
+        solveArc(doc, cx, cy, a);
+        cx = a[5];
+        return cy = a[6];
+      },
+      L: function(doc, a) {
+        cx = a[0];
+        cy = a[1];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      l: function(doc, a) {
+        cx += a[0];
+        cy += a[1];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      H: function(doc, a) {
+        cx = a[0];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      h: function(doc, a) {
+        cx += a[0];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      V: function(doc, a) {
+        cy = a[0];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      v: function(doc, a) {
+        cy += a[0];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      Z: function(doc) {
+        doc.closePath();
+        cx = sx;
+        return cy = sy;
+      },
+      z: function(doc) {
+        doc.closePath();
+        cx = sx;
+        return cy = sy;
+      }
+    };
+
+    solveArc = function(doc, x, y, coords) {
+      var bez, ex, ey, j, large, len, results, rot, rx, ry, seg, segs, sweep;
+      rx = coords[0], ry = coords[1], rot = coords[2], large = coords[3], sweep = coords[4], ex = coords[5], ey = coords[6];
+      segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);
+      results = [];
+      for (j = 0, len = segs.length; j < len; j++) {
+        seg = segs[j];
+        bez = segmentToBezier.apply(null, seg);
+        results.push(doc.bezierCurveTo.apply(doc, bez));
+      }
+      return results;
+    };
+
+    arcToSegments = function(x, y, rx, ry, large, sweep, rotateX, ox, oy) {
+      var a00, a01, a10, a11, cos_th, d, i, j, pl, ref, result, segments, sfactor, sfactor_sq, sin_th, th, th0, th1, th2, th3, th_arc, x0, x1, xc, y0, y1, yc;
+      th = rotateX * (Math.PI / 180);
+      sin_th = Math.sin(th);
+      cos_th = Math.cos(th);
+      rx = Math.abs(rx);
+      ry = Math.abs(ry);
+      px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;
+      py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;
+      pl = (px * px) / (rx * rx) + (py * py) / (ry * ry);
+      if (pl > 1) {
+        pl = Math.sqrt(pl);
+        rx *= pl;
+        ry *= pl;
+      }
+      a00 = cos_th / rx;
+      a01 = sin_th / rx;
+      a10 = (-sin_th) / ry;
+      a11 = cos_th / ry;
+      x0 = a00 * ox + a01 * oy;
+      y0 = a10 * ox + a11 * oy;
+      x1 = a00 * x + a01 * y;
+      y1 = a10 * x + a11 * y;
+      d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);
+      sfactor_sq = 1 / d - 0.25;
+      if (sfactor_sq < 0) {
+        sfactor_sq = 0;
+      }
+      sfactor = Math.sqrt(sfactor_sq);
+      if (sweep === large) {
+        sfactor = -sfactor;
+      }
+      xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);
+      yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);
+      th0 = Math.atan2(y0 - yc, x0 - xc);
+      th1 = Math.atan2(y1 - yc, x1 - xc);
+      th_arc = th1 - th0;
+      if (th_arc < 0 && sweep === 1) {
+        th_arc += 2 * Math.PI;
+      } else if (th_arc > 0 && sweep === 0) {
+        th_arc -= 2 * Math.PI;
+      }
+      segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));
+      result = [];
+      for (i = j = 0, ref = segments; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        th2 = th0 + i * th_arc / segments;
+        th3 = th0 + (i + 1) * th_arc / segments;
+        result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];
+      }
+      return result;
+    };
+
+    segmentToBezier = function(cx, cy, th0, th1, rx, ry, sin_th, cos_th) {
+      var a00, a01, a10, a11, t, th_half, x1, x2, x3, y1, y2, y3;
+      a00 = cos_th * rx;
+      a01 = -sin_th * ry;
+      a10 = sin_th * rx;
+      a11 = cos_th * ry;
+      th_half = 0.5 * (th1 - th0);
+      t = (8 / 3) * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5) / Math.sin(th_half);
+      x1 = cx + Math.cos(th0) - t * Math.sin(th0);
+      y1 = cy + Math.sin(th0) + t * Math.cos(th0);
+      x3 = cx + Math.cos(th1);
+      y3 = cy + Math.sin(th1);
+      x2 = x3 + t * Math.sin(th1);
+      y2 = y3 - t * Math.cos(th1);
+      return [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];
+    };
+
+    return SVGPath;
+
+  })();
+
+  module.exports = SVGPath;
+
+}).call(this);
+
+
+/***/ }),
+/* 166 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var PDFFont;
+
+  PDFFont = __webpack_require__(50);
+
+  module.exports = {
+    initFonts: function() {
+      this._fontFamilies = {};
+      this._fontCount = 0;
+      this._fontSize = 12;
+      this._font = null;
+      this._registeredFonts = {};
+      
+    },
+    font: function(src, family, size) {
+      var cacheKey, font, id, ref;
+      if (typeof family === 'number') {
+        size = family;
+        family = null;
+      }
+      if (typeof src === 'string' && this._registeredFonts[src]) {
+        cacheKey = src;
+        ref = this._registeredFonts[src], src = ref.src, family = ref.family;
+      } else {
+        cacheKey = family || src;
+        if (typeof cacheKey !== 'string') {
+          cacheKey = null;
+        }
+      }
+      if (size != null) {
+        this.fontSize(size);
+      }
+      if (font = this._fontFamilies[cacheKey]) {
+        this._font = font;
+        return this;
+      }
+      id = 'F' + (++this._fontCount);
+      this._font = PDFFont.open(this, src, family, id);
+      if (font = this._fontFamilies[this._font.name]) {
+        this._font = font;
+        return this;
+      }
+      if (cacheKey) {
+        this._fontFamilies[cacheKey] = this._font;
+      }
+      if (this._font.name) {
+        this._fontFamilies[this._font.name] = this._font;
+      }
+      return this;
+    },
+    fontSize: function(_fontSize) {
+      this._fontSize = _fontSize;
+      return this;
+    },
+    currentLineHeight: function(includeGap) {
+      if (includeGap == null) {
+        includeGap = false;
+      }
+      return this._font.lineHeight(this._fontSize, includeGap);
+    },
+    registerFont: function(name, src, family) {
+      this._registeredFonts[name] = {
+        src: src,
+        family: family
+      };
+      return this;
+    }
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 167 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer, process) {
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var r = _interopDefault(__webpack_require__(168));
+var _Object$getOwnPropertyDescriptor = _interopDefault(__webpack_require__(197));
+var _getIterator = _interopDefault(__webpack_require__(60));
+var _Object$freeze = _interopDefault(__webpack_require__(209));
+var _Object$keys = _interopDefault(__webpack_require__(212));
+var _typeof = _interopDefault(__webpack_require__(69));
+var _Object$defineProperty = _interopDefault(__webpack_require__(74));
+var _classCallCheck = _interopDefault(__webpack_require__(106));
+var _createClass = _interopDefault(__webpack_require__(107));
+var _Map = _interopDefault(__webpack_require__(225));
+var _possibleConstructorReturn = _interopDefault(__webpack_require__(236));
+var _inherits = _interopDefault(__webpack_require__(237));
+var restructure_src_utils = __webpack_require__(12);
+var _Object$defineProperties = _interopDefault(__webpack_require__(245));
+var isEqual = _interopDefault(__webpack_require__(248));
+var _Object$assign = _interopDefault(__webpack_require__(251));
+var _String$fromCodePoint = _interopDefault(__webpack_require__(255));
+var _Array$from = _interopDefault(__webpack_require__(258));
+var _Set = _interopDefault(__webpack_require__(263));
+var unicode = _interopDefault(__webpack_require__(269));
+var UnicodeTrie = _interopDefault(__webpack_require__(43));
+var StateMachine = _interopDefault(__webpack_require__(271));
+var _Number$EPSILON = _interopDefault(__webpack_require__(280));
+var cloneDeep = _interopDefault(__webpack_require__(283));
+var inflate = _interopDefault(__webpack_require__(79));
+var brotli = _interopDefault(__webpack_require__(284));
+
+
+
+var fontkit = {};
+fontkit.logErrors = false;
+
+var formats = [];
+fontkit.registerFormat = function (format) {
+  formats.push(format);
+};
+
+fontkit.openSync = function (filename, postscriptName) {
+  var buffer = __webpack_require__(8).readFileSync(filename);
+  return fontkit.create(buffer, postscriptName);
+};
+
+fontkit.open = function (filename, postscriptName, callback) {
+  if (typeof postscriptName === 'function') {
+    callback = postscriptName;
+    postscriptName = null;
+  }
+
+  __webpack_require__(8).readFile(filename, function (err, buffer) {
+    if (err) {
+      return callback(err);
+    }
+
+    try {
+      var font = fontkit.create(buffer, postscriptName);
+    } catch (e) {
+      return callback(e);
+    }
+
+    return callback(null, font);
+  });
+
+  return;
+};
+
+fontkit.create = function (buffer, postscriptName) {
+  for (var i = 0; i < formats.length; i++) {
+    var format = formats[i];
+    if (format.probe(buffer)) {
+      var font = new format(new r.DecodeStream(buffer));
+      if (postscriptName) {
+        return font.getFont(postscriptName);
+      }
+
+      return font;
+    }
+  }
+
+  throw new Error('Unknown font format');
+};
+
+/**
+ * This decorator caches the results of a getter or method such that
+ * the results are lazily computed once, and then cached.
+ * @private
+ */
+function cache(target, key, descriptor) {
+  if (descriptor.get) {
+    var get = descriptor.get;
+    descriptor.get = function () {
+      var value = get.call(this);
+      _Object$defineProperty(this, key, { value: value });
+      return value;
+    };
+  } else if (typeof descriptor.value === 'function') {
+    var fn = descriptor.value;
+
+    return {
+      get: function get() {
+        var cache = new _Map();
+        function memoized() {
+          for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+            args[_key] = arguments[_key];
+          }
+
+          var key = args.length > 0 ? args[0] : 'value';
+          if (cache.has(key)) {
+            return cache.get(key);
+          }
+
+          var result = fn.apply(this, args);
+          cache.set(key, result);
+          return result;
+        };
+
+        _Object$defineProperty(this, key, { value: memoized });
+        return memoized;
+      }
+    };
+  }
+}
+
+var SubHeader = new r.Struct({
+  firstCode: r.uint16,
+  entryCount: r.uint16,
+  idDelta: r.int16,
+  idRangeOffset: r.uint16
+});
+
+var CmapGroup = new r.Struct({
+  startCharCode: r.uint32,
+  endCharCode: r.uint32,
+  glyphID: r.uint32
+});
+
+var UnicodeValueRange = new r.Struct({
+  startUnicodeValue: r.uint24,
+  additionalCount: r.uint8
+});
+
+var UVSMapping = new r.Struct({
+  unicodeValue: r.uint24,
+  glyphID: r.uint16
+});
+
+var DefaultUVS = new r.Array(UnicodeValueRange, r.uint32);
+var NonDefaultUVS = new r.Array(UVSMapping, r.uint32);
+
+var VarSelectorRecord = new r.Struct({
+  varSelector: r.uint24,
+  defaultUVS: new r.Pointer(r.uint32, DefaultUVS, { type: 'parent' }),
+  nonDefaultUVS: new r.Pointer(r.uint32, NonDefaultUVS, { type: 'parent' })
+});
+
+var CmapSubtable = new r.VersionedStruct(r.uint16, {
+  0: { // Byte encoding
+    length: r.uint16, // Total table length in bytes (set to 262 for format 0)
+    language: r.uint16, // Language code for this encoding subtable, or zero if language-independent
+    codeMap: new r.LazyArray(r.uint8, 256)
+  },
+
+  2: { // High-byte mapping (CJK)
+    length: r.uint16,
+    language: r.uint16,
+    subHeaderKeys: new r.Array(r.uint16, 256),
+    subHeaderCount: function subHeaderCount(t) {
+      return Math.max.apply(Math, t.subHeaderKeys);
+    },
+    subHeaders: new r.LazyArray(SubHeader, 'subHeaderCount'),
+    glyphIndexArray: new r.LazyArray(r.uint16, 'subHeaderCount')
+  },
+
+  4: { // Segment mapping to delta values
+    length: r.uint16, // Total table length in bytes
+    language: r.uint16, // Language code
+    segCountX2: r.uint16,
+    segCount: function segCount(t) {
+      return t.segCountX2 >> 1;
+    },
+    searchRange: r.uint16,
+    entrySelector: r.uint16,
+    rangeShift: r.uint16,
+    endCode: new r.LazyArray(r.uint16, 'segCount'),
+    reservedPad: new r.Reserved(r.uint16), // This value should be zero
+    startCode: new r.LazyArray(r.uint16, 'segCount'),
+    idDelta: new r.LazyArray(r.int16, 'segCount'),
+    idRangeOffset: new r.LazyArray(r.uint16, 'segCount'),
+    glyphIndexArray: new r.LazyArray(r.uint16, function (t) {
+      return (t.length - t._currentOffset) / 2;
+    })
+  },
+
+  6: { // Trimmed table
+    length: r.uint16,
+    language: r.uint16,
+    firstCode: r.uint16,
+    entryCount: r.uint16,
+    glyphIndices: new r.LazyArray(r.uint16, 'entryCount')
+  },
+
+  8: { // mixed 16-bit and 32-bit coverage
+    reserved: new r.Reserved(r.uint16),
+    length: r.uint32,
+    language: r.uint16,
+    is32: new r.LazyArray(r.uint8, 8192),
+    nGroups: r.uint32,
+    groups: new r.LazyArray(CmapGroup, 'nGroups')
+  },
+
+  10: { // Trimmed Array
+    reserved: new r.Reserved(r.uint16),
+    length: r.uint32,
+    language: r.uint32,
+    firstCode: r.uint32,
+    entryCount: r.uint32,
+    glyphIndices: new r.LazyArray(r.uint16, 'numChars')
+  },
+
+  12: { // Segmented coverage
+    reserved: new r.Reserved(r.uint16),
+    length: r.uint32,
+    language: r.uint32,
+    nGroups: r.uint32,
+    groups: new r.LazyArray(CmapGroup, 'nGroups')
+  },
+
+  13: { // Many-to-one range mappings (same as 12 except for group.startGlyphID)
+    reserved: new r.Reserved(r.uint16),
+    length: r.uint32,
+    language: r.uint32,
+    nGroups: r.uint32,
+    groups: new r.LazyArray(CmapGroup, 'nGroups')
+  },
+
+  14: { // Unicode Variation Sequences
+    length: r.uint32,
+    numRecords: r.uint32,
+    varSelectors: new r.LazyArray(VarSelectorRecord, 'numRecords')
+  }
+});
+
+var CmapEntry = new r.Struct({
+  platformID: r.uint16, // Platform identifier
+  encodingID: r.uint16, // Platform-specific encoding identifier
+  table: new r.Pointer(r.uint32, CmapSubtable, { type: 'parent', lazy: true })
+});
+
+// character to glyph mapping
+var cmap = new r.Struct({
+  version: r.uint16,
+  numSubtables: r.uint16,
+  tables: new r.Array(CmapEntry, 'numSubtables')
+});
+
+// font header
+var head = new r.Struct({
+  version: r.int32, // 0x00010000 (version 1.0)
+  revision: r.int32, // set by font manufacturer
+  checkSumAdjustment: r.uint32,
+  magicNumber: r.uint32, // set to 0x5F0F3CF5
+  flags: r.uint16,
+  unitsPerEm: r.uint16, // range from 64 to 16384
+  created: new r.Array(r.int32, 2),
+  modified: new r.Array(r.int32, 2),
+  xMin: r.int16, // for all glyph bounding boxes
+  yMin: r.int16, // for all glyph bounding boxes
+  xMax: r.int16, // for all glyph bounding boxes
+  yMax: r.int16, // for all glyph bounding boxes
+  macStyle: new r.Bitfield(r.uint16, ['bold', 'italic', 'underline', 'outline', 'shadow', 'condensed', 'extended']),
+  lowestRecPPEM: r.uint16, // smallest readable size in pixels
+  fontDirectionHint: r.int16,
+  indexToLocFormat: r.int16, // 0 for short offsets, 1 for long
+  glyphDataFormat: r.int16 // 0 for current format
+});
+
+// horizontal header
+var hhea = new r.Struct({
+  version: r.int32,
+  ascent: r.int16, // Distance from baseline of highest ascender
+  descent: r.int16, // Distance from baseline of lowest descender
+  lineGap: r.int16, // Typographic line gap
+  advanceWidthMax: r.uint16, // Maximum advance width value in 'hmtx' table
+  minLeftSideBearing: r.int16, // Maximum advance width value in 'hmtx' table
+  minRightSideBearing: r.int16, // Minimum right sidebearing value
+  xMaxExtent: r.int16,
+  caretSlopeRise: r.int16, // Used to calculate the slope of the cursor (rise/run); 1 for vertical
+  caretSlopeRun: r.int16, // 0 for vertical
+  caretOffset: r.int16, // Set to 0 for non-slanted fonts
+  reserved: new r.Reserved(r.int16, 4),
+  metricDataFormat: r.int16, // 0 for current format
+  numberOfMetrics: r.uint16 // Number of advance widths in 'hmtx' table
+});
+
+var HmtxEntry = new r.Struct({
+  advance: r.uint16,
+  bearing: r.int16
+});
+
+var hmtx = new r.Struct({
+  metrics: new r.LazyArray(HmtxEntry, function (t) {
+    return t.parent.hhea.numberOfMetrics;
+  }),
+  bearings: new r.LazyArray(r.int16, function (t) {
+    return t.parent.maxp.numGlyphs - t.parent.hhea.numberOfMetrics;
+  })
+});
+
+// maxiumum profile
+var maxp = new r.Struct({
+  version: r.int32,
+  numGlyphs: r.uint16, // The number of glyphs in the font
+  maxPoints: r.uint16, // Maximum points in a non-composite glyph
+  maxContours: r.uint16, // Maximum contours in a non-composite glyph
+  maxComponentPoints: r.uint16, // Maximum points in a composite glyph
+  maxComponentContours: r.uint16, // Maximum contours in a composite glyph
+  maxZones: r.uint16, // 1 if instructions do not use the twilight zone, 2 otherwise
+  maxTwilightPoints: r.uint16, // Maximum points used in Z0
+  maxStorage: r.uint16, // Number of Storage Area locations
+  maxFunctionDefs: r.uint16, // Number of FDEFs
+  maxInstructionDefs: r.uint16, // Number of IDEFs
+  maxStackElements: r.uint16, // Maximum stack depth
+  maxSizeOfInstructions: r.uint16, // Maximum byte count for glyph instructions
+  maxComponentElements: r.uint16, // Maximum number of components referenced at “top level” for any composite glyph
+  maxComponentDepth: r.uint16 // Maximum levels of recursion; 1 for simple components
+});
+
+/**
+ * Gets an encoding name from platform, encoding, and language ids.
+ * Returned encoding names can be used in iconv-lite to decode text.
+ */
+function getEncoding(platformID, encodingID) {
+  var languageID = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+
+  if (platformID === 1 && MAC_LANGUAGE_ENCODINGS[languageID]) {
+    return MAC_LANGUAGE_ENCODINGS[languageID];
+  }
+
+  return ENCODINGS[platformID][encodingID];
+}
+
+// Map of platform ids to encoding ids.
+var ENCODINGS = [
+// unicode
+['utf16be', 'utf16be', 'utf16be', 'utf16be', 'utf16be', 'utf16be'],
+
+// macintosh
+// Mappings available at http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/
+// 0	Roman                 17	Malayalam
+// 1	Japanese	            18	Sinhalese
+// 2	Traditional Chinese	  19	Burmese
+// 3	Korean	              20	Khmer
+// 4	Arabic	              21	Thai
+// 5	Hebrew	              22	Laotian
+// 6	Greek	                23	Georgian
+// 7	Russian	              24	Armenian
+// 8	RSymbol	              25	Simplified Chinese
+// 9	Devanagari	          26	Tibetan
+// 10	Gurmukhi	            27	Mongolian
+// 11	Gujarati	            28	Geez
+// 12	Oriya	                29	Slavic
+// 13	Bengali	              30	Vietnamese
+// 14	Tamil	                31	Sindhi
+// 15	Telugu	              32	(Uninterpreted)
+// 16	Kannada
+['macroman', 'shift-jis', 'big5', 'euc-kr', 'iso-8859-6', 'iso-8859-8', 'macgreek', 'maccyrillic', 'symbol', 'Devanagari', 'Gurmukhi', 'Gujarati', 'Oriya', 'Bengali', 'Tamil', 'Telugu', 'Kannada', 'Malayalam', 'Sinhalese', 'Burmese', 'Khmer', 'macthai', 'Laotian', 'Georgian', 'Armenian', 'gb-2312-80', 'Tibetan', 'Mongolian', 'Geez', 'maccenteuro', 'Vietnamese', 'Sindhi'],
+
+// ISO (deprecated)
+['ascii'],
+
+// windows
+// Docs here: http://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx
+['symbol', 'utf16be', 'shift-jis', 'gb18030', 'big5', 'wansung', 'johab', null, null, null, 'utf16be']];
+
+// Overrides for Mac scripts by language id.
+// See http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt
+var MAC_LANGUAGE_ENCODINGS = {
+  15: 'maciceland',
+  17: 'macturkish',
+  18: 'maccroatian',
+  24: 'maccenteuro',
+  25: 'maccenteuro',
+  26: 'maccenteuro',
+  27: 'maccenteuro',
+  28: 'maccenteuro',
+  30: 'maciceland',
+  37: 'macromania',
+  38: 'maccenteuro',
+  39: 'maccenteuro',
+  40: 'maccenteuro',
+  143: 'macinuit', // Unsupported by iconv-lite
+  146: 'macgaelic' // Unsupported by iconv-lite
+};
+
+// Map of platform ids to BCP-47 language codes.
+var LANGUAGES = [
+// unicode
+[], { // macintosh
+  0: 'en', 30: 'fo', 60: 'ks', 90: 'rw',
+  1: 'fr', 31: 'fa', 61: 'ku', 91: 'rn',
+  2: 'de', 32: 'ru', 62: 'sd', 92: 'ny',
+  3: 'it', 33: 'zh', 63: 'bo', 93: 'mg',
+  4: 'nl', 34: 'nl-BE', 64: 'ne', 94: 'eo',
+  5: 'sv', 35: 'ga', 65: 'sa', 128: 'cy',
+  6: 'es', 36: 'sq', 66: 'mr', 129: 'eu',
+  7: 'da', 37: 'ro', 67: 'bn', 130: 'ca',
+  8: 'pt', 38: 'cz', 68: 'as', 131: 'la',
+  9: 'no', 39: 'sk', 69: 'gu', 132: 'qu',
+  10: 'he', 40: 'si', 70: 'pa', 133: 'gn',
+  11: 'ja', 41: 'yi', 71: 'or', 134: 'ay',
+  12: 'ar', 42: 'sr', 72: 'ml', 135: 'tt',
+  13: 'fi', 43: 'mk', 73: 'kn', 136: 'ug',
+  14: 'el', 44: 'bg', 74: 'ta', 137: 'dz',
+  15: 'is', 45: 'uk', 75: 'te', 138: 'jv',
+  16: 'mt', 46: 'be', 76: 'si', 139: 'su',
+  17: 'tr', 47: 'uz', 77: 'my', 140: 'gl',
+  18: 'hr', 48: 'kk', 78: 'km', 141: 'af',
+  19: 'zh-Hant', 49: 'az-Cyrl', 79: 'lo', 142: 'br',
+  20: 'ur', 50: 'az-Arab', 80: 'vi', 143: 'iu',
+  21: 'hi', 51: 'hy', 81: 'id', 144: 'gd',
+  22: 'th', 52: 'ka', 82: 'tl', 145: 'gv',
+  23: 'ko', 53: 'mo', 83: 'ms', 146: 'ga',
+  24: 'lt', 54: 'ky', 84: 'ms-Arab', 147: 'to',
+  25: 'pl', 55: 'tg', 85: 'am', 148: 'el-polyton',
+  26: 'hu', 56: 'tk', 86: 'ti', 149: 'kl',
+  27: 'es', 57: 'mn-CN', 87: 'om', 150: 'az',
+  28: 'lv', 58: 'mn', 88: 'so', 151: 'nn',
+  29: 'se', 59: 'ps', 89: 'sw'
+},
+
+// ISO (deprecated)
+[], { // windows                                        
+  0x0436: 'af', 0x4009: 'en-IN', 0x0487: 'rw', 0x0432: 'tn',
+  0x041C: 'sq', 0x1809: 'en-IE', 0x0441: 'sw', 0x045B: 'si',
+  0x0484: 'gsw', 0x2009: 'en-JM', 0x0457: 'kok', 0x041B: 'sk',
+  0x045E: 'am', 0x4409: 'en-MY', 0x0412: 'ko', 0x0424: 'sl',
+  0x1401: 'ar-DZ', 0x1409: 'en-NZ', 0x0440: 'ky', 0x2C0A: 'es-AR',
+  0x3C01: 'ar-BH', 0x3409: 'en-PH', 0x0454: 'lo', 0x400A: 'es-BO',
+  0x0C01: 'ar', 0x4809: 'en-SG', 0x0426: 'lv', 0x340A: 'es-CL',
+  0x0801: 'ar-IQ', 0x1C09: 'en-ZA', 0x0427: 'lt', 0x240A: 'es-CO',
+  0x2C01: 'ar-JO', 0x2C09: 'en-TT', 0x082E: 'dsb', 0x140A: 'es-CR',
+  0x3401: 'ar-KW', 0x0809: 'en-GB', 0x046E: 'lb', 0x1C0A: 'es-DO',
+  0x3001: 'ar-LB', 0x0409: 'en', 0x042F: 'mk', 0x300A: 'es-EC',
+  0x1001: 'ar-LY', 0x3009: 'en-ZW', 0x083E: 'ms-BN', 0x440A: 'es-SV',
+  0x1801: 'ary', 0x0425: 'et', 0x043E: 'ms', 0x100A: 'es-GT',
+  0x2001: 'ar-OM', 0x0438: 'fo', 0x044C: 'ml', 0x480A: 'es-HN',
+  0x4001: 'ar-QA', 0x0464: 'fil', 0x043A: 'mt', 0x080A: 'es-MX',
+  0x0401: 'ar-SA', 0x040B: 'fi', 0x0481: 'mi', 0x4C0A: 'es-NI',
+  0x2801: 'ar-SY', 0x080C: 'fr-BE', 0x047A: 'arn', 0x180A: 'es-PA',
+  0x1C01: 'aeb', 0x0C0C: 'fr-CA', 0x044E: 'mr', 0x3C0A: 'es-PY',
+  0x3801: 'ar-AE', 0x040C: 'fr', 0x047C: 'moh', 0x280A: 'es-PE',
+  0x2401: 'ar-YE', 0x140C: 'fr-LU', 0x0450: 'mn', 0x500A: 'es-PR',
+  0x042B: 'hy', 0x180C: 'fr-MC', 0x0850: 'mn-CN', 0x0C0A: 'es',
+  0x044D: 'as', 0x100C: 'fr-CH', 0x0461: 'ne', 0x040A: 'es',
+  0x082C: 'az-Cyrl', 0x0462: 'fy', 0x0414: 'nb', 0x540A: 'es-US',
+  0x042C: 'az', 0x0456: 'gl', 0x0814: 'nn', 0x380A: 'es-UY',
+  0x046D: 'ba', 0x0437: 'ka', 0x0482: 'oc', 0x200A: 'es-VE',
+  0x042D: 'eu', 0x0C07: 'de-AT', 0x0448: 'or', 0x081D: 'sv-FI',
+  0x0423: 'be', 0x0407: 'de', 0x0463: 'ps', 0x041D: 'sv',
+  0x0845: 'bn', 0x1407: 'de-LI', 0x0415: 'pl', 0x045A: 'syr',
+  0x0445: 'bn-IN', 0x1007: 'de-LU', 0x0416: 'pt', 0x0428: 'tg',
+  0x201A: 'bs-Cyrl', 0x0807: 'de-CH', 0x0816: 'pt-PT', 0x085F: 'tzm',
+  0x141A: 'bs', 0x0408: 'el', 0x0446: 'pa', 0x0449: 'ta',
+  0x047E: 'br', 0x046F: 'kl', 0x046B: 'qu-BO', 0x0444: 'tt',
+  0x0402: 'bg', 0x0447: 'gu', 0x086B: 'qu-EC', 0x044A: 'te',
+  0x0403: 'ca', 0x0468: 'ha', 0x0C6B: 'qu', 0x041E: 'th',
+  0x0C04: 'zh-HK', 0x040D: 'he', 0x0418: 'ro', 0x0451: 'bo',
+  0x1404: 'zh-MO', 0x0439: 'hi', 0x0417: 'rm', 0x041F: 'tr',
+  0x0804: 'zh', 0x040E: 'hu', 0x0419: 'ru', 0x0442: 'tk',
+  0x1004: 'zh-SG', 0x040F: 'is', 0x243B: 'smn', 0x0480: 'ug',
+  0x0404: 'zh-TW', 0x0470: 'ig', 0x103B: 'smj-NO', 0x0422: 'uk',
+  0x0483: 'co', 0x0421: 'id', 0x143B: 'smj', 0x042E: 'hsb',
+  0x041A: 'hr', 0x045D: 'iu', 0x0C3B: 'se-FI', 0x0420: 'ur',
+  0x101A: 'hr-BA', 0x085D: 'iu-Latn', 0x043B: 'se', 0x0843: 'uz-Cyrl',
+  0x0405: 'cs', 0x083C: 'ga', 0x083B: 'se-SE', 0x0443: 'uz',
+  0x0406: 'da', 0x0434: 'xh', 0x203B: 'sms', 0x042A: 'vi',
+  0x048C: 'prs', 0x0435: 'zu', 0x183B: 'sma-NO', 0x0452: 'cy',
+  0x0465: 'dv', 0x0410: 'it', 0x1C3B: 'sms', 0x0488: 'wo',
+  0x0813: 'nl-BE', 0x0810: 'it-CH', 0x044F: 'sa', 0x0485: 'sah',
+  0x0413: 'nl', 0x0411: 'ja', 0x1C1A: 'sr-Cyrl-BA', 0x0478: 'ii',
+  0x0C09: 'en-AU', 0x044B: 'kn', 0x0C1A: 'sr', 0x046A: 'yo',
+  0x2809: 'en-BZ', 0x043F: 'kk', 0x181A: 'sr-Latn-BA',
+  0x1009: 'en-CA', 0x0453: 'km', 0x081A: 'sr-Latn',
+  0x2409: 'en-029', 0x0486: 'quc', 0x046C: 'nso'
+}];
+
+var NameRecord = new r.Struct({
+  platformID: r.uint16,
+  encodingID: r.uint16,
+  languageID: r.uint16,
+  nameID: r.uint16,
+  length: r.uint16,
+  string: new r.Pointer(r.uint16, new r.String('length', function (t) {
+    return getEncoding(t.platformID, t.encodingID, t.languageID);
+  }), { type: 'parent', relativeTo: 'parent.stringOffset', allowNull: false })
+});
+
+var LangTagRecord = new r.Struct({
+  length: r.uint16,
+  tag: new r.Pointer(r.uint16, new r.String('length', 'utf16be'), { type: 'parent', relativeTo: 'stringOffset' })
+});
+
+var NameTable = new r.VersionedStruct(r.uint16, {
+  0: {
+    count: r.uint16,
+    stringOffset: r.uint16,
+    records: new r.Array(NameRecord, 'count')
+  },
+  1: {
+    count: r.uint16,
+    stringOffset: r.uint16,
+    records: new r.Array(NameRecord, 'count'),
+    langTagCount: r.uint16,
+    langTags: new r.Array(LangTagRecord, 'langTagCount')
+  }
+});
+
+var NAMES = ['copyright', 'fontFamily', 'fontSubfamily', 'uniqueSubfamily', 'fullName', 'version', 'postscriptName', // Note: A font may have only one PostScript name and that name must be ASCII.
+'trademark', 'manufacturer', 'designer', 'description', 'vendorURL', 'designerURL', 'license', 'licenseURL', null, // reserved
+'preferredFamily', 'preferredSubfamily', 'compatibleFull', 'sampleText', 'postscriptCIDFontName', 'wwsFamilyName', 'wwsSubfamilyName'];
+
+NameTable.process = function (stream) {
+  var records = {};
+  for (var _iterator = this.records, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var record = _ref;
+
+    // find out what language this is for
+    var language = LANGUAGES[record.platformID][record.languageID];
+
+    if (language == null && this.langTags != null && record.languageID >= 0x8000) {
+      language = this.langTags[record.languageID - 0x8000].tag;
+    }
+
+    if (language == null) {
+      language = record.platformID + '-' + record.languageID;
+    }
+
+    // if the nameID is >= 256, it is a font feature record (AAT)
+    var key = record.nameID >= 256 ? 'fontFeatures' : NAMES[record.nameID] || record.nameID;
+    if (records[key] == null) {
+      records[key] = {};
+    }
+
+    var obj = records[key];
+    if (record.nameID >= 256) {
+      obj = obj[record.nameID] || (obj[record.nameID] = {});
+    }
+
+    if (typeof record.string === 'string' || typeof obj[language] !== 'string') {
+      obj[language] = record.string;
+    }
+  }
+
+  this.records = records;
+};
+
+NameTable.preEncode = function () {
+  if (Array.isArray(this.records)) return;
+  this.version = 0;
+
+  var records = [];
+  for (var key in this.records) {
+    var val = this.records[key];
+    if (key === 'fontFeatures') continue;
+
+    records.push({
+      platformID: 3,
+      encodingID: 1,
+      languageID: 0x409,
+      nameID: NAMES.indexOf(key),
+      length: Buffer.byteLength(val.en, 'utf16le'),
+      string: val.en
+    });
+
+    if (key === 'postscriptName') {
+      records.push({
+        platformID: 1,
+        encodingID: 0,
+        languageID: 0,
+        nameID: NAMES.indexOf(key),
+        length: val.en.length,
+        string: val.en
+      });
+    }
+  }
+
+  this.records = records;
+  this.count = records.length;
+  this.stringOffset = NameTable.size(this, null, false);
+};
+
+var OS2 = new r.VersionedStruct(r.uint16, {
+  header: {
+    xAvgCharWidth: r.int16, // average weighted advance width of lower case letters and space
+    usWeightClass: r.uint16, // visual weight of stroke in glyphs
+    usWidthClass: r.uint16, // relative change from the normal aspect ratio (width to height ratio)
+    fsType: new r.Bitfield(r.uint16, [// Indicates font embedding licensing rights
+    null, 'noEmbedding', 'viewOnly', 'editable', null, null, null, null, 'noSubsetting', 'bitmapOnly']),
+    ySubscriptXSize: r.int16, // recommended horizontal size in pixels for subscripts
+    ySubscriptYSize: r.int16, // recommended vertical size in pixels for subscripts
+    ySubscriptXOffset: r.int16, // recommended horizontal offset for subscripts
+    ySubscriptYOffset: r.int16, // recommended vertical offset form the baseline for subscripts
+    ySuperscriptXSize: r.int16, // recommended horizontal size in pixels for superscripts
+    ySuperscriptYSize: r.int16, // recommended vertical size in pixels for superscripts
+    ySuperscriptXOffset: r.int16, // recommended horizontal offset for superscripts
+    ySuperscriptYOffset: r.int16, // recommended vertical offset from the baseline for superscripts
+    yStrikeoutSize: r.int16, // width of the strikeout stroke
+    yStrikeoutPosition: r.int16, // position of the strikeout stroke relative to the baseline
+    sFamilyClass: r.int16, // classification of font-family design
+    panose: new r.Array(r.uint8, 10), // describe the visual characteristics of a given typeface
+    ulCharRange: new r.Array(r.uint32, 4),
+    vendorID: new r.String(4), // four character identifier for the font vendor
+    fsSelection: new r.Bitfield(r.uint16, [// bit field containing information about the font
+    'italic', 'underscore', 'negative', 'outlined', 'strikeout', 'bold', 'regular', 'useTypoMetrics', 'wws', 'oblique']),
+    usFirstCharIndex: r.uint16, // The minimum Unicode index in this font
+    usLastCharIndex: r.uint16 // The maximum Unicode index in this font
+  },
+
+  // The Apple version of this table ends here, but the Microsoft one continues on...
+  0: {},
+
+  1: {
+    typoAscender: r.int16,
+    typoDescender: r.int16,
+    typoLineGap: r.int16,
+    winAscent: r.uint16,
+    winDescent: r.uint16,
+    codePageRange: new r.Array(r.uint32, 2)
+  },
+
+  2: {
+    // these should be common with version 1 somehow
+    typoAscender: r.int16,
+    typoDescender: r.int16,
+    typoLineGap: r.int16,
+    winAscent: r.uint16,
+    winDescent: r.uint16,
+    codePageRange: new r.Array(r.uint32, 2),
+
+    xHeight: r.int16,
+    capHeight: r.int16,
+    defaultChar: r.uint16,
+    breakChar: r.uint16,
+    maxContent: r.uint16
+  },
+
+  5: {
+    typoAscender: r.int16,
+    typoDescender: r.int16,
+    typoLineGap: r.int16,
+    winAscent: r.uint16,
+    winDescent: r.uint16,
+    codePageRange: new r.Array(r.uint32, 2),
+
+    xHeight: r.int16,
+    capHeight: r.int16,
+    defaultChar: r.uint16,
+    breakChar: r.uint16,
+    maxContent: r.uint16,
+
+    usLowerOpticalPointSize: r.uint16,
+    usUpperOpticalPointSize: r.uint16
+  }
+});
+
+var versions = OS2.versions;
+versions[3] = versions[4] = versions[2];
+
+// PostScript information
+var post = new r.VersionedStruct(r.fixed32, {
+  header: { // these fields exist at the top of all versions
+    italicAngle: r.fixed32, // Italic angle in counter-clockwise degrees from the vertical.
+    underlinePosition: r.int16, // Suggested distance of the top of the underline from the baseline
+    underlineThickness: r.int16, // Suggested values for the underline thickness
+    isFixedPitch: r.uint32, // Whether the font is monospaced
+    minMemType42: r.uint32, // Minimum memory usage when a TrueType font is downloaded as a Type 42 font
+    maxMemType42: r.uint32, // Maximum memory usage when a TrueType font is downloaded as a Type 42 font
+    minMemType1: r.uint32, // Minimum memory usage when a TrueType font is downloaded as a Type 1 font
+    maxMemType1: r.uint32 // Maximum memory usage when a TrueType font is downloaded as a Type 1 font
+  },
+
+  1: {}, // version 1 has no additional fields
+
+  2: {
+    numberOfGlyphs: r.uint16,
+    glyphNameIndex: new r.Array(r.uint16, 'numberOfGlyphs'),
+    names: new r.Array(new r.String(r.uint8))
+  },
+
+  2.5: {
+    numberOfGlyphs: r.uint16,
+    offsets: new r.Array(r.uint8, 'numberOfGlyphs')
+  },
+
+  3: {}, // version 3 has no additional fields
+
+  4: {
+    map: new r.Array(r.uint32, function (t) {
+      return t.parent.maxp.numGlyphs;
+    })
+  }
+});
+
+// An array of predefined values accessible by instructions
+var cvt = new r.Struct({
+  controlValues: new r.Array(r.int16)
+});
+
+// A list of instructions that are executed once when a font is first used.
+// These instructions are known as the font program. The main use of this table
+// is for the definition of functions that are used in many different glyph programs.
+var fpgm = new r.Struct({
+  instructions: new r.Array(r.uint8)
+});
+
+var loca = new r.VersionedStruct('head.indexToLocFormat', {
+  0: {
+    offsets: new r.Array(r.uint16)
+  },
+  1: {
+    offsets: new r.Array(r.uint32)
+  }
+});
+
+loca.process = function () {
+  if (this.version === 0) {
+    for (var i = 0; i < this.offsets.length; i++) {
+      this.offsets[i] <<= 1;
+    }
+  }
+};
+
+loca.preEncode = function () {
+  if (this.version != null) return;
+
+  // assume this.offsets is a sorted array
+  this.version = this.offsets[this.offsets.length - 1] > 0xffff ? 1 : 0;
+
+  if (this.version === 0) {
+    for (var i = 0; i < this.offsets.length; i++) {
+      this.offsets[i] >>>= 1;
+    }
+  }
+};
+
+// Set of instructions executed whenever the point size or font transformation change
+var prep = new r.Struct({
+  controlValueProgram: new r.Array(r.uint8)
+});
+
+// only used for encoding
+var glyf = new r.Array(new r.Buffer());
+
+var CFFIndex = function () {
+  function CFFIndex(type) {
+    _classCallCheck(this, CFFIndex);
+
+    this.type = type;
+  }
+
+  CFFIndex.prototype.getCFFVersion = function getCFFVersion(ctx) {
+    while (ctx && !ctx.hdrSize) {
+      ctx = ctx.parent;
+    }
+
+    return ctx ? ctx.version : -1;
+  };
+
+  CFFIndex.prototype.decode = function decode(stream, parent) {
+    var version = this.getCFFVersion(parent);
+    var count = version >= 2 ? stream.readUInt32BE() : stream.readUInt16BE();
+
+    if (count === 0) {
+      return [];
+    }
+
+    var offSize = stream.readUInt8();
+    var offsetType = void 0;
+    if (offSize === 1) {
+      offsetType = r.uint8;
+    } else if (offSize === 2) {
+      offsetType = r.uint16;
+    } else if (offSize === 3) {
+      offsetType = r.uint24;
+    } else if (offSize === 4) {
+      offsetType = r.uint32;
+    } else {
+      throw new Error("Bad offset size in CFFIndex: " + offSize + " " + stream.pos);
+    }
+
+    var ret = [];
+    var startPos = stream.pos + (count + 1) * offSize - 1;
+
+    var start = offsetType.decode(stream);
+    for (var i = 0; i < count; i++) {
+      var end = offsetType.decode(stream);
+
+      if (this.type != null) {
+        var pos = stream.pos;
+        stream.pos = startPos + start;
+
+        parent.length = end - start;
+        ret.push(this.type.decode(stream, parent));
+        stream.pos = pos;
+      } else {
+        ret.push({
+          offset: startPos + start,
+          length: end - start
+        });
+      }
+
+      start = end;
+    }
+
+    stream.pos = startPos + start;
+    return ret;
+  };
+
+  CFFIndex.prototype.size = function size(arr, parent) {
+    var size = 2;
+    if (arr.length === 0) {
+      return size;
+    }
+
+    var type = this.type || new r.Buffer();
+
+    // find maximum offset to detminine offset type
+    var offset = 1;
+    for (var i = 0; i < arr.length; i++) {
+      var item = arr[i];
+      offset += type.size(item, parent);
+    }
+
+    var offsetType = void 0;
+    if (offset <= 0xff) {
+      offsetType = r.uint8;
+    } else if (offset <= 0xffff) {
+      offsetType = r.uint16;
+    } else if (offset <= 0xffffff) {
+      offsetType = r.uint24;
+    } else if (offset <= 0xffffffff) {
+      offsetType = r.uint32;
+    } else {
+      throw new Error("Bad offset in CFFIndex");
+    }
+
+    size += 1 + offsetType.size() * (arr.length + 1);
+    size += offset - 1;
+
+    return size;
+  };
+
+  CFFIndex.prototype.encode = function encode(stream, arr, parent) {
+    stream.writeUInt16BE(arr.length);
+    if (arr.length === 0) {
+      return;
+    }
+
+    var type = this.type || new r.Buffer();
+
+    // find maximum offset to detminine offset type
+    var sizes = [];
+    var offset = 1;
+    for (var _iterator = arr, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var item = _ref;
+
+      var s = type.size(item, parent);
+      sizes.push(s);
+      offset += s;
+    }
+
+    var offsetType = void 0;
+    if (offset <= 0xff) {
+      offsetType = r.uint8;
+    } else if (offset <= 0xffff) {
+      offsetType = r.uint16;
+    } else if (offset <= 0xffffff) {
+      offsetType = r.uint24;
+    } else if (offset <= 0xffffffff) {
+      offsetType = r.uint32;
+    } else {
+      throw new Error("Bad offset in CFFIndex");
+    }
+
+    // write offset size
+    stream.writeUInt8(offsetType.size());
+
+    // write elements
+    offset = 1;
+    offsetType.encode(stream, offset);
+
+    for (var _iterator2 = sizes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var size = _ref2;
+
+      offset += size;
+      offsetType.encode(stream, offset);
+    }
+
+    for (var _iterator3 = arr, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+      var _ref3;
+
+      if (_isArray3) {
+        if (_i3 >= _iterator3.length) break;
+        _ref3 = _iterator3[_i3++];
+      } else {
+        _i3 = _iterator3.next();
+        if (_i3.done) break;
+        _ref3 = _i3.value;
+      }
+
+      var _item = _ref3;
+
+      type.encode(stream, _item, parent);
+    }
+
+    return;
+  };
+
+  return CFFIndex;
+}();
+
+var FLOAT_EOF = 0xf;
+var FLOAT_LOOKUP = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-'];
+
+var FLOAT_ENCODE_LOOKUP = {
+  '.': 10,
+  'E': 11,
+  'E-': 12,
+  '-': 14
+};
+
+var CFFOperand = function () {
+  function CFFOperand() {
+    _classCallCheck(this, CFFOperand);
+  }
+
+  CFFOperand.decode = function decode(stream, value) {
+    if (32 <= value && value <= 246) {
+      return value - 139;
+    }
+
+    if (247 <= value && value <= 250) {
+      return (value - 247) * 256 + stream.readUInt8() + 108;
+    }
+
+    if (251 <= value && value <= 254) {
+      return -(value - 251) * 256 - stream.readUInt8() - 108;
+    }
+
+    if (value === 28) {
+      return stream.readInt16BE();
+    }
+
+    if (value === 29) {
+      return stream.readInt32BE();
+    }
+
+    if (value === 30) {
+      var str = '';
+      while (true) {
+        var b = stream.readUInt8();
+
+        var n1 = b >> 4;
+        if (n1 === FLOAT_EOF) {
+          break;
+        }
+        str += FLOAT_LOOKUP[n1];
+
+        var n2 = b & 15;
+        if (n2 === FLOAT_EOF) {
+          break;
+        }
+        str += FLOAT_LOOKUP[n2];
+      }
+
+      return parseFloat(str);
+    }
+
+    return null;
+  };
+
+  CFFOperand.size = function size(value) {
+    // if the value needs to be forced to the largest size (32 bit)
+    // e.g. for unknown pointers, set to 32768
+    if (value.forceLarge) {
+      value = 32768;
+    }
+
+    if ((value | 0) !== value) {
+      // floating point
+      var str = '' + value;
+      return 1 + Math.ceil((str.length + 1) / 2);
+    } else if (-107 <= value && value <= 107) {
+      return 1;
+    } else if (108 <= value && value <= 1131 || -1131 <= value && value <= -108) {
+      return 2;
+    } else if (-32768 <= value && value <= 32767) {
+      return 3;
+    } else {
+      return 5;
+    }
+  };
+
+  CFFOperand.encode = function encode(stream, value) {
+    // if the value needs to be forced to the largest size (32 bit)
+    // e.g. for unknown pointers, save the old value and set to 32768
+    var val = Number(value);
+
+    if (value.forceLarge) {
+      stream.writeUInt8(29);
+      return stream.writeInt32BE(val);
+    } else if ((val | 0) !== val) {
+      // floating point
+      stream.writeUInt8(30);
+
+      var str = '' + val;
+      for (var i = 0; i < str.length; i += 2) {
+        var c1 = str[i];
+        var n1 = FLOAT_ENCODE_LOOKUP[c1] || +c1;
+
+        if (i === str.length - 1) {
+          var n2 = FLOAT_EOF;
+        } else {
+          var c2 = str[i + 1];
+          var n2 = FLOAT_ENCODE_LOOKUP[c2] || +c2;
+        }
+
+        stream.writeUInt8(n1 << 4 | n2 & 15);
+      }
+
+      if (n2 !== FLOAT_EOF) {
+        return stream.writeUInt8(FLOAT_EOF << 4);
+      }
+    } else if (-107 <= val && val <= 107) {
+      return stream.writeUInt8(val + 139);
+    } else if (108 <= val && val <= 1131) {
+      val -= 108;
+      stream.writeUInt8((val >> 8) + 247);
+      return stream.writeUInt8(val & 0xff);
+    } else if (-1131 <= val && val <= -108) {
+      val = -val - 108;
+      stream.writeUInt8((val >> 8) + 251);
+      return stream.writeUInt8(val & 0xff);
+    } else if (-32768 <= val && val <= 32767) {
+      stream.writeUInt8(28);
+      return stream.writeInt16BE(val);
+    } else {
+      stream.writeUInt8(29);
+      return stream.writeInt32BE(val);
+    }
+  };
+
+  return CFFOperand;
+}();
+
+var CFFDict = function () {
+  function CFFDict() {
+    var ops = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+
+    _classCallCheck(this, CFFDict);
+
+    this.ops = ops;
+    this.fields = {};
+    for (var _iterator = ops, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var field = _ref;
+
+      var key = Array.isArray(field[0]) ? field[0][0] << 8 | field[0][1] : field[0];
+      this.fields[key] = field;
+    }
+  }
+
+  CFFDict.prototype.decodeOperands = function decodeOperands(type, stream, ret, operands) {
+    var _this = this;
+
+    if (Array.isArray(type)) {
+      return operands.map(function (op, i) {
+        return _this.decodeOperands(type[i], stream, ret, [op]);
+      });
+    } else if (type.decode != null) {
+      return type.decode(stream, ret, operands);
+    } else {
+      switch (type) {
+        case 'number':
+        case 'offset':
+        case 'sid':
+          return operands[0];
+        case 'boolean':
+          return !!operands[0];
+        default:
+          return operands;
+      }
+    }
+  };
+
+  CFFDict.prototype.encodeOperands = function encodeOperands(type, stream, ctx, operands) {
+    var _this2 = this;
+
+    if (Array.isArray(type)) {
+      return operands.map(function (op, i) {
+        return _this2.encodeOperands(type[i], stream, ctx, op)[0];
+      });
+    } else if (type.encode != null) {
+      return type.encode(stream, operands, ctx);
+    } else if (typeof operands === 'number') {
+      return [operands];
+    } else if (typeof operands === 'boolean') {
+      return [+operands];
+    } else if (Array.isArray(operands)) {
+      return operands;
+    } else {
+      return [operands];
+    }
+  };
+
+  CFFDict.prototype.decode = function decode(stream, parent) {
+    var end = stream.pos + parent.length;
+    var ret = {};
+    var operands = [];
+
+    // define hidden properties
+    _Object$defineProperties(ret, {
+      parent: { value: parent },
+      _startOffset: { value: stream.pos }
+    });
+
+    // fill in defaults
+    for (var key in this.fields) {
+      var field = this.fields[key];
+      ret[field[1]] = field[3];
+    }
+
+    while (stream.pos < end) {
+      var b = stream.readUInt8();
+      if (b < 28) {
+        if (b === 12) {
+          b = b << 8 | stream.readUInt8();
+        }
+
+        var _field = this.fields[b];
+        if (!_field) {
+          throw new Error('Unknown operator ' + b);
+        }
+
+        var val = this.decodeOperands(_field[2], stream, ret, operands);
+        if (val != null) {
+          if (val instanceof restructure_src_utils.PropertyDescriptor) {
+            _Object$defineProperty(ret, _field[1], val);
+          } else {
+            ret[_field[1]] = val;
+          }
+        }
+
+        operands = [];
+      } else {
+        operands.push(CFFOperand.decode(stream, b));
+      }
+    }
+
+    return ret;
+  };
+
+  CFFDict.prototype.size = function size(dict, parent) {
+    var includePointers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+
+    var ctx = {
+      parent: parent,
+      val: dict,
+      pointerSize: 0,
+      startOffset: parent.startOffset || 0
+    };
+
+    var len = 0;
+
+    for (var k in this.fields) {
+      var field = this.fields[k];
+      var val = dict[field[1]];
+      if (val == null || isEqual(val, field[3])) {
+        continue;
+      }
+
+      var operands = this.encodeOperands(field[2], null, ctx, val);
+      for (var _iterator2 = operands, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var op = _ref2;
+
+        len += CFFOperand.size(op);
+      }
+
+      var key = Array.isArray(field[0]) ? field[0] : [field[0]];
+      len += key.length;
+    }
+
+    if (includePointers) {
+      len += ctx.pointerSize;
+    }
+
+    return len;
+  };
+
+  CFFDict.prototype.encode = function encode(stream, dict, parent) {
+    var ctx = {
+      pointers: [],
+      startOffset: stream.pos,
+      parent: parent,
+      val: dict,
+      pointerSize: 0
+    };
+
+    ctx.pointerOffset = stream.pos + this.size(dict, ctx, false);
+
+    for (var _iterator3 = this.ops, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+      var _ref3;
+
+      if (_isArray3) {
+        if (_i3 >= _iterator3.length) break;
+        _ref3 = _iterator3[_i3++];
+      } else {
+        _i3 = _iterator3.next();
+        if (_i3.done) break;
+        _ref3 = _i3.value;
+      }
+
+      var field = _ref3;
+
+      var val = dict[field[1]];
+      if (val == null || isEqual(val, field[3])) {
+        continue;
+      }
+
+      var operands = this.encodeOperands(field[2], stream, ctx, val);
+      for (var _iterator4 = operands, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+        var _ref4;
+
+        if (_isArray4) {
+          if (_i4 >= _iterator4.length) break;
+          _ref4 = _iterator4[_i4++];
+        } else {
+          _i4 = _iterator4.next();
+          if (_i4.done) break;
+          _ref4 = _i4.value;
+        }
+
+        var op = _ref4;
+
+        CFFOperand.encode(stream, op);
+      }
+
+      var key = Array.isArray(field[0]) ? field[0] : [field[0]];
+      for (var _iterator5 = key, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
+        var _ref5;
+
+        if (_isArray5) {
+          if (_i5 >= _iterator5.length) break;
+          _ref5 = _iterator5[_i5++];
+        } else {
+          _i5 = _iterator5.next();
+          if (_i5.done) break;
+          _ref5 = _i5.value;
+        }
+
+        var _op = _ref5;
+
+        stream.writeUInt8(_op);
+      }
+    }
+
+    var i = 0;
+    while (i < ctx.pointers.length) {
+      var ptr = ctx.pointers[i++];
+      ptr.type.encode(stream, ptr.val, ptr.parent);
+    }
+
+    return;
+  };
+
+  return CFFDict;
+}();
+
+var CFFPointer = function (_r$Pointer) {
+  _inherits(CFFPointer, _r$Pointer);
+
+  function CFFPointer(type) {
+    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+    _classCallCheck(this, CFFPointer);
+
+    if (options.type == null) {
+      options.type = 'global';
+    }
+
+    return _possibleConstructorReturn(this, _r$Pointer.call(this, null, type, options));
+  }
+
+  CFFPointer.prototype.decode = function decode(stream, parent, operands) {
+    this.offsetType = {
+      decode: function decode() {
+        return operands[0];
+      }
+    };
+
+    return _r$Pointer.prototype.decode.call(this, stream, parent, operands);
+  };
+
+  CFFPointer.prototype.encode = function encode(stream, value, ctx) {
+    if (!stream) {
+      // compute the size (so ctx.pointerSize is correct)
+      this.offsetType = {
+        size: function size() {
+          return 0;
+        }
+      };
+
+      this.size(value, ctx);
+      return [new Ptr(0)];
+    }
+
+    var ptr = null;
+    this.offsetType = {
+      encode: function encode(stream, val) {
+        return ptr = val;
+      }
+    };
+
+    _r$Pointer.prototype.encode.call(this, stream, value, ctx);
+    return [new Ptr(ptr)];
+  };
+
+  return CFFPointer;
+}(r.Pointer);
+
+var Ptr = function () {
+  function Ptr(val) {
+    _classCallCheck(this, Ptr);
+
+    this.val = val;
+    this.forceLarge = true;
+  }
+
+  Ptr.prototype.valueOf = function valueOf() {
+    return this.val;
+  };
+
+  return Ptr;
+}();
+
+var CFFBlendOp = function () {
+  function CFFBlendOp() {
+    _classCallCheck(this, CFFBlendOp);
+  }
+
+  CFFBlendOp.decode = function decode(stream, parent, operands) {
+    var numBlends = operands.pop();
+
+    // TODO: actually blend. For now just consume the deltas
+    // since we don't use any of the values anyway.
+    while (operands.length > numBlends) {
+      operands.pop();
+    }
+  };
+
+  return CFFBlendOp;
+}();
+
+var CFFPrivateDict = new CFFDict([
+// key       name                    type                                          default
+[6, 'BlueValues', 'delta', null], [7, 'OtherBlues', 'delta', null], [8, 'FamilyBlues', 'delta', null], [9, 'FamilyOtherBlues', 'delta', null], [[12, 9], 'BlueScale', 'number', 0.039625], [[12, 10], 'BlueShift', 'number', 7], [[12, 11], 'BlueFuzz', 'number', 1], [10, 'StdHW', 'number', null], [11, 'StdVW', 'number', null], [[12, 12], 'StemSnapH', 'delta', null], [[12, 13], 'StemSnapV', 'delta', null], [[12, 14], 'ForceBold', 'boolean', false], [[12, 17], 'LanguageGroup', 'number', 0], [[12, 18], 'ExpansionFactor', 'number', 0.06], [[12, 19], 'initialRandomSeed', 'number', 0], [20, 'defaultWidthX', 'number', 0], [21, 'nominalWidthX', 'number', 0], [22, 'vsindex', 'number', 0], [23, 'blend', CFFBlendOp, null], [19, 'Subrs', new CFFPointer(new CFFIndex(), { type: 'local' }), null]]);
+
+// Automatically generated from Appendix A of the CFF specification; do
+// not edit. Length should be 391.
+var standardStrings = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", "Semibold"];
+
+var StandardEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls'];
+
+var ExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
+
+var ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron'];
+
+var ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
+
+var ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior'];
+
+//########################
+// Scripts and Languages #
+//########################
+
+var LangSysTable = new r.Struct({
+  reserved: new r.Reserved(r.uint16),
+  reqFeatureIndex: r.uint16,
+  featureCount: r.uint16,
+  featureIndexes: new r.Array(r.uint16, 'featureCount')
+});
+
+var LangSysRecord = new r.Struct({
+  tag: new r.String(4),
+  langSys: new r.Pointer(r.uint16, LangSysTable, { type: 'parent' })
+});
+
+var Script = new r.Struct({
+  defaultLangSys: new r.Pointer(r.uint16, LangSysTable),
+  count: r.uint16,
+  langSysRecords: new r.Array(LangSysRecord, 'count')
+});
+
+var ScriptRecord = new r.Struct({
+  tag: new r.String(4),
+  script: new r.Pointer(r.uint16, Script, { type: 'parent' })
+});
+
+var ScriptList = new r.Array(ScriptRecord, r.uint16);
+
+//#######################
+// Features and Lookups #
+//#######################
+
+var Feature = new r.Struct({
+  featureParams: r.uint16, // pointer
+  lookupCount: r.uint16,
+  lookupListIndexes: new r.Array(r.uint16, 'lookupCount')
+});
+
+var FeatureRecord = new r.Struct({
+  tag: new r.String(4),
+  feature: new r.Pointer(r.uint16, Feature, { type: 'parent' })
+});
+
+var FeatureList = new r.Array(FeatureRecord, r.uint16);
+
+var LookupFlags = new r.Struct({
+  markAttachmentType: r.uint8,
+  flags: new r.Bitfield(r.uint8, ['rightToLeft', 'ignoreBaseGlyphs', 'ignoreLigatures', 'ignoreMarks', 'useMarkFilteringSet'])
+});
+
+function LookupList(SubTable) {
+  var Lookup = new r.Struct({
+    lookupType: r.uint16,
+    flags: LookupFlags,
+    subTableCount: r.uint16,
+    subTables: new r.Array(new r.Pointer(r.uint16, SubTable), 'subTableCount'),
+    markFilteringSet: new r.Optional(r.uint16, function (t) {
+      return t.flags.flags.useMarkFilteringSet;
+    })
+  });
+
+  return new r.LazyArray(new r.Pointer(r.uint16, Lookup), r.uint16);
+}
+
+//#################
+// Coverage Table #
+//#################
+
+var RangeRecord = new r.Struct({
+  start: r.uint16,
+  end: r.uint16,
+  startCoverageIndex: r.uint16
+});
+
+var Coverage = new r.VersionedStruct(r.uint16, {
+  1: {
+    glyphCount: r.uint16,
+    glyphs: new r.Array(r.uint16, 'glyphCount')
+  },
+  2: {
+    rangeCount: r.uint16,
+    rangeRecords: new r.Array(RangeRecord, 'rangeCount')
+  }
+});
+
+//#########################
+// Class Definition Table #
+//#########################
+
+var ClassRangeRecord = new r.Struct({
+  start: r.uint16,
+  end: r.uint16,
+  class: r.uint16
+});
+
+var ClassDef = new r.VersionedStruct(r.uint16, {
+  1: { // Class array
+    startGlyph: r.uint16,
+    glyphCount: r.uint16,
+    classValueArray: new r.Array(r.uint16, 'glyphCount')
+  },
+  2: { // Class ranges
+    classRangeCount: r.uint16,
+    classRangeRecord: new r.Array(ClassRangeRecord, 'classRangeCount')
+  }
+});
+
+//###############
+// Device Table #
+//###############
+
+var Device = new r.Struct({
+  a: r.uint16, // startSize for hinting Device, outerIndex for VariationIndex
+  b: r.uint16, // endSize for Device, innerIndex for VariationIndex
+  deltaFormat: r.uint16
+});
+
+//#############################################
+// Contextual Substitution/Positioning Tables #
+//#############################################
+
+var LookupRecord = new r.Struct({
+  sequenceIndex: r.uint16,
+  lookupListIndex: r.uint16
+});
+
+var Rule = new r.Struct({
+  glyphCount: r.uint16,
+  lookupCount: r.uint16,
+  input: new r.Array(r.uint16, function (t) {
+    return t.glyphCount - 1;
+  }),
+  lookupRecords: new r.Array(LookupRecord, 'lookupCount')
+});
+
+var RuleSet = new r.Array(new r.Pointer(r.uint16, Rule), r.uint16);
+
+var ClassRule = new r.Struct({
+  glyphCount: r.uint16,
+  lookupCount: r.uint16,
+  classes: new r.Array(r.uint16, function (t) {
+    return t.glyphCount - 1;
+  }),
+  lookupRecords: new r.Array(LookupRecord, 'lookupCount')
+});
+
+var ClassSet = new r.Array(new r.Pointer(r.uint16, ClassRule), r.uint16);
+
+var Context = new r.VersionedStruct(r.uint16, {
+  1: { // Simple context
+    coverage: new r.Pointer(r.uint16, Coverage),
+    ruleSetCount: r.uint16,
+    ruleSets: new r.Array(new r.Pointer(r.uint16, RuleSet), 'ruleSetCount')
+  },
+  2: { // Class-based context
+    coverage: new r.Pointer(r.uint16, Coverage),
+    classDef: new r.Pointer(r.uint16, ClassDef),
+    classSetCnt: r.uint16,
+    classSet: new r.Array(new r.Pointer(r.uint16, ClassSet), 'classSetCnt')
+  },
+  3: {
+    glyphCount: r.uint16,
+    lookupCount: r.uint16,
+    coverages: new r.Array(new r.Pointer(r.uint16, Coverage), 'glyphCount'),
+    lookupRecords: new r.Array(LookupRecord, 'lookupCount')
+  }
+});
+
+//######################################################
+// Chaining Contextual Substitution/Positioning Tables #
+//######################################################
+
+var ChainRule = new r.Struct({
+  backtrackGlyphCount: r.uint16,
+  backtrack: new r.Array(r.uint16, 'backtrackGlyphCount'),
+  inputGlyphCount: r.uint16,
+  input: new r.Array(r.uint16, function (t) {
+    return t.inputGlyphCount - 1;
+  }),
+  lookaheadGlyphCount: r.uint16,
+  lookahead: new r.Array(r.uint16, 'lookaheadGlyphCount'),
+  lookupCount: r.uint16,
+  lookupRecords: new r.Array(LookupRecord, 'lookupCount')
+});
+
+var ChainRuleSet = new r.Array(new r.Pointer(r.uint16, ChainRule), r.uint16);
+
+var ChainingContext = new r.VersionedStruct(r.uint16, {
+  1: { // Simple context glyph substitution
+    coverage: new r.Pointer(r.uint16, Coverage),
+    chainCount: r.uint16,
+    chainRuleSets: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')
+  },
+
+  2: { // Class-based chaining context
+    coverage: new r.Pointer(r.uint16, Coverage),
+    backtrackClassDef: new r.Pointer(r.uint16, ClassDef),
+    inputClassDef: new r.Pointer(r.uint16, ClassDef),
+    lookaheadClassDef: new r.Pointer(r.uint16, ClassDef),
+    chainCount: r.uint16,
+    chainClassSet: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')
+  },
+
+  3: { // Coverage-based chaining context
+    backtrackGlyphCount: r.uint16,
+    backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),
+    inputGlyphCount: r.uint16,
+    inputCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'inputGlyphCount'),
+    lookaheadGlyphCount: r.uint16,
+    lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),
+    lookupCount: r.uint16,
+    lookupRecords: new r.Array(LookupRecord, 'lookupCount')
+  }
+});
+
+var _;
+
+/*******************
+ * Variation Store *
+ *******************/
+
+var F2DOT14 = new r.Fixed(16, 'BE', 14);
+var RegionAxisCoordinates = new r.Struct({
+  startCoord: F2DOT14,
+  peakCoord: F2DOT14,
+  endCoord: F2DOT14
+});
+
+var VariationRegionList = new r.Struct({
+  axisCount: r.uint16,
+  regionCount: r.uint16,
+  variationRegions: new r.Array(new r.Array(RegionAxisCoordinates, 'axisCount'), 'regionCount')
+});
+
+var DeltaSet = new r.Struct({
+  shortDeltas: new r.Array(r.int16, function (t) {
+    return t.parent.shortDeltaCount;
+  }),
+  regionDeltas: new r.Array(r.int8, function (t) {
+    return t.parent.regionIndexCount - t.parent.shortDeltaCount;
+  }),
+  deltas: function deltas(t) {
+    return t.shortDeltas.concat(t.regionDeltas);
+  }
+});
+
+var ItemVariationData = new r.Struct({
+  itemCount: r.uint16,
+  shortDeltaCount: r.uint16,
+  regionIndexCount: r.uint16,
+  regionIndexes: new r.Array(r.uint16, 'regionIndexCount'),
+  deltaSets: new r.Array(DeltaSet, 'itemCount')
+});
+
+var ItemVariationStore = new r.Struct({
+  format: r.uint16,
+  variationRegionList: new r.Pointer(r.uint32, VariationRegionList),
+  variationDataCount: r.uint16,
+  itemVariationData: new r.Array(new r.Pointer(r.uint32, ItemVariationData), 'variationDataCount')
+});
+
+/**********************
+ * Feature Variations *
+ **********************/
+
+var ConditionTable = new r.VersionedStruct(r.uint16, {
+  1: (_ = {
+    axisIndex: r.uint16
+  }, _['axisIndex'] = r.uint16, _.filterRangeMinValue = F2DOT14, _.filterRangeMaxValue = F2DOT14, _)
+});
+
+var ConditionSet = new r.Struct({
+  conditionCount: r.uint16,
+  conditionTable: new r.Array(new r.Pointer(r.uint32, ConditionTable), 'conditionCount')
+});
+
+var FeatureTableSubstitutionRecord = new r.Struct({
+  featureIndex: r.uint16,
+  alternateFeatureTable: new r.Pointer(r.uint32, Feature, { type: 'parent' })
+});
+
+var FeatureTableSubstitution = new r.Struct({
+  version: r.fixed32,
+  substitutionCount: r.uint16,
+  substitutions: new r.Array(FeatureTableSubstitutionRecord, 'substitutionCount')
+});
+
+var FeatureVariationRecord = new r.Struct({
+  conditionSet: new r.Pointer(r.uint32, ConditionSet, { type: 'parent' }),
+  featureTableSubstitution: new r.Pointer(r.uint32, FeatureTableSubstitution, { type: 'parent' })
+});
+
+var FeatureVariations = new r.Struct({
+  majorVersion: r.uint16,
+  minorVersion: r.uint16,
+  featureVariationRecordCount: r.uint32,
+  featureVariationRecords: new r.Array(FeatureVariationRecord, 'featureVariationRecordCount')
+});
+
+// Checks if an operand is an index of a predefined value,
+// otherwise delegates to the provided type.
+
+var PredefinedOp = function () {
+  function PredefinedOp(predefinedOps, type) {
+    _classCallCheck(this, PredefinedOp);
+
+    this.predefinedOps = predefinedOps;
+    this.type = type;
+  }
+
+  PredefinedOp.prototype.decode = function decode(stream, parent, operands) {
+    if (this.predefinedOps[operands[0]]) {
+      return this.predefinedOps[operands[0]];
+    }
+
+    return this.type.decode(stream, parent, operands);
+  };
+
+  PredefinedOp.prototype.size = function size(value, ctx) {
+    return this.type.size(value, ctx);
+  };
+
+  PredefinedOp.prototype.encode = function encode(stream, value, ctx) {
+    var index = this.predefinedOps.indexOf(value);
+    if (index !== -1) {
+      return index;
+    }
+
+    return this.type.encode(stream, value, ctx);
+  };
+
+  return PredefinedOp;
+}();
+
+var CFFEncodingVersion = function (_r$Number) {
+  _inherits(CFFEncodingVersion, _r$Number);
+
+  function CFFEncodingVersion() {
+    _classCallCheck(this, CFFEncodingVersion);
+
+    return _possibleConstructorReturn(this, _r$Number.call(this, 'UInt8'));
+  }
+
+  CFFEncodingVersion.prototype.decode = function decode(stream) {
+    return r.uint8.decode(stream) & 0x7f;
+  };
+
+  return CFFEncodingVersion;
+}(r.Number);
+
+var Range1 = new r.Struct({
+  first: r.uint16,
+  nLeft: r.uint8
+});
+
+var Range2 = new r.Struct({
+  first: r.uint16,
+  nLeft: r.uint16
+});
+
+var CFFCustomEncoding = new r.VersionedStruct(new CFFEncodingVersion(), {
+  0: {
+    nCodes: r.uint8,
+    codes: new r.Array(r.uint8, 'nCodes')
+  },
+
+  1: {
+    nRanges: r.uint8,
+    ranges: new r.Array(Range1, 'nRanges')
+  }
+
+  // TODO: supplement?
+});
+
+var CFFEncoding = new PredefinedOp([StandardEncoding, ExpertEncoding], new CFFPointer(CFFCustomEncoding, { lazy: true }));
+
+// Decodes an array of ranges until the total
+// length is equal to the provided length.
+
+var RangeArray = function (_r$Array) {
+  _inherits(RangeArray, _r$Array);
+
+  function RangeArray() {
+    _classCallCheck(this, RangeArray);
+
+    return _possibleConstructorReturn(this, _r$Array.apply(this, arguments));
+  }
+
+  RangeArray.prototype.decode = function decode(stream, parent) {
+    var length = restructure_src_utils.resolveLength(this.length, stream, parent);
+    var count = 0;
+    var res = [];
+    while (count < length) {
+      var range = this.type.decode(stream, parent);
+      range.offset = count;
+      count += range.nLeft + 1;
+      res.push(range);
+    }
+
+    return res;
+  };
+
+  return RangeArray;
+}(r.Array);
+
+var CFFCustomCharset = new r.VersionedStruct(r.uint8, {
+  0: {
+    glyphs: new r.Array(r.uint16, function (t) {
+      return t.parent.CharStrings.length - 1;
+    })
+  },
+
+  1: {
+    ranges: new RangeArray(Range1, function (t) {
+      return t.parent.CharStrings.length - 1;
+    })
+  },
+
+  2: {
+    ranges: new RangeArray(Range2, function (t) {
+      return t.parent.CharStrings.length - 1;
+    })
+  }
+});
+
+var CFFCharset = new PredefinedOp([ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset], new CFFPointer(CFFCustomCharset, { lazy: true }));
+
+var FDRange3 = new r.Struct({
+  first: r.uint16,
+  fd: r.uint8
+});
+
+var FDRange4 = new r.Struct({
+  first: r.uint32,
+  fd: r.uint16
+});
+
+var FDSelect = new r.VersionedStruct(r.uint8, {
+  0: {
+    fds: new r.Array(r.uint8, function (t) {
+      return t.parent.CharStrings.length;
+    })
+  },
+
+  3: {
+    nRanges: r.uint16,
+    ranges: new r.Array(FDRange3, 'nRanges'),
+    sentinel: r.uint16
+  },
+
+  4: {
+    nRanges: r.uint32,
+    ranges: new r.Array(FDRange4, 'nRanges'),
+    sentinel: r.uint32
+  }
+});
+
+var ptr = new CFFPointer(CFFPrivateDict);
+
+var CFFPrivateOp = function () {
+  function CFFPrivateOp() {
+    _classCallCheck(this, CFFPrivateOp);
+  }
+
+  CFFPrivateOp.prototype.decode = function decode(stream, parent, operands) {
+    parent.length = operands[0];
+    return ptr.decode(stream, parent, [operands[1]]);
+  };
+
+  CFFPrivateOp.prototype.size = function size(dict, ctx) {
+    return [CFFPrivateDict.size(dict, ctx, false), ptr.size(dict, ctx)[0]];
+  };
+
+  CFFPrivateOp.prototype.encode = function encode(stream, dict, ctx) {
+    return [CFFPrivateDict.size(dict, ctx, false), ptr.encode(stream, dict, ctx)[0]];
+  };
+
+  return CFFPrivateOp;
+}();
+
+var FontDict = new CFFDict([
+// key       name                   type(s)                                 default
+[18, 'Private', new CFFPrivateOp(), null], [[12, 38], 'FontName', 'sid', null]]);
+
+var CFFTopDict = new CFFDict([
+// key       name                   type(s)                                 default
+[[12, 30], 'ROS', ['sid', 'sid', 'number'], null], [0, 'version', 'sid', null], [1, 'Notice', 'sid', null], [[12, 0], 'Copyright', 'sid', null], [2, 'FullName', 'sid', null], [3, 'FamilyName', 'sid', null], [4, 'Weight', 'sid', null], [[12, 1], 'isFixedPitch', 'boolean', false], [[12, 2], 'ItalicAngle', 'number', 0], [[12, 3], 'UnderlinePosition', 'number', -100], [[12, 4], 'UnderlineThickness', 'number', 50], [[12, 5], 'PaintType', 'number', 0], [[12, 6], 'CharstringType', 'number', 2], [[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [13, 'UniqueID', 'number', null], [5, 'FontBBox', 'array', [0, 0, 0, 0]], [[12, 8], 'StrokeWidth', 'number', 0], [14, 'XUID', 'array', null], [15, 'charset', CFFCharset, ISOAdobeCharset], [16, 'Encoding', CFFEncoding, StandardEncoding], [17, 'CharStrings', new CFFPointer(new CFFIndex()), null], [18, 'Private', new CFFPrivateOp(), null], [[12, 20], 'SyntheticBase', 'number', null], [[12, 21], 'PostScript', 'sid', null], [[12, 22], 'BaseFontName', 'sid', null], [[12, 23], 'BaseFontBlend', 'delta', null],
+
+// CID font specific
+[[12, 31], 'CIDFontVersion', 'number', 0], [[12, 32], 'CIDFontRevision', 'number', 0], [[12, 33], 'CIDFontType', 'number', 0], [[12, 34], 'CIDCount', 'number', 8720], [[12, 35], 'UIDBase', 'number', null], [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null], [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null], [[12, 38], 'FontName', 'sid', null]]);
+
+var VariationStore = new r.Struct({
+  length: r.uint16,
+  itemVariationStore: ItemVariationStore
+});
+
+var CFF2TopDict = new CFFDict([[[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [17, 'CharStrings', new CFFPointer(new CFFIndex()), null], [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null], [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null], [24, 'vstore', new CFFPointer(VariationStore), null], [25, 'maxstack', 'number', 193]]);
+
+var CFFTop = new r.VersionedStruct(r.fixed16, {
+  1: {
+    hdrSize: r.uint8,
+    offSize: r.uint8,
+    nameIndex: new CFFIndex(new r.String('length')),
+    topDictIndex: new CFFIndex(CFFTopDict),
+    stringIndex: new CFFIndex(new r.String('length')),
+    globalSubrIndex: new CFFIndex()
+  },
+
+  2: {
+    hdrSize: r.uint8,
+    length: r.uint16,
+    topDict: CFF2TopDict,
+    globalSubrIndex: new CFFIndex()
+  }
+});
+
+var CFFFont = function () {
+  function CFFFont(stream) {
+    _classCallCheck(this, CFFFont);
+
+    this.stream = stream;
+    this.decode();
+  }
+
+  CFFFont.decode = function decode(stream) {
+    return new CFFFont(stream);
+  };
+
+  CFFFont.prototype.decode = function decode() {
+    var start = this.stream.pos;
+    var top = CFFTop.decode(this.stream);
+    for (var key in top) {
+      var val = top[key];
+      this[key] = val;
+    }
+
+    if (this.version < 2) {
+      if (this.topDictIndex.length !== 1) {
+        throw new Error("Only a single font is allowed in CFF");
+      }
+
+      this.topDict = this.topDictIndex[0];
+    }
+
+    this.isCIDFont = this.topDict.ROS != null;
+    return this;
+  };
+
+  CFFFont.prototype.string = function string(sid) {
+    if (this.version >= 2) {
+      return null;
+    }
+
+    if (sid < standardStrings.length) {
+      return standardStrings[sid];
+    }
+
+    return this.stringIndex[sid - standardStrings.length];
+  };
+
+  CFFFont.prototype.getCharString = function getCharString(glyph) {
+    this.stream.pos = this.topDict.CharStrings[glyph].offset;
+    return this.stream.readBuffer(this.topDict.CharStrings[glyph].length);
+  };
+
+  CFFFont.prototype.getGlyphName = function getGlyphName(gid) {
+    // CFF2 glyph names are in the post table.
+    if (this.version >= 2) {
+      return null;
+    }
+
+    // CID-keyed fonts don't have glyph names
+    if (this.isCIDFont) {
+      return null;
+    }
+
+    var charset = this.topDict.charset;
+
+    if (Array.isArray(charset)) {
+      return charset[gid];
+    }
+
+    if (gid === 0) {
+      return '.notdef';
+    }
+
+    gid -= 1;
+
+    switch (charset.version) {
+      case 0:
+        return this.string(charset.glyphs[gid]);
+
+      case 1:
+      case 2:
+        for (var i = 0; i < charset.ranges.length; i++) {
+          var range = charset.ranges[i];
+          if (range.offset <= gid && gid <= range.offset + range.nLeft) {
+            return this.string(range.first + (gid - range.offset));
+          }
+        }
+        break;
+    }
+
+    return null;
+  };
+
+  CFFFont.prototype.fdForGlyph = function fdForGlyph(gid) {
+    if (!this.topDict.FDSelect) {
+      return null;
+    }
+
+    switch (this.topDict.FDSelect.version) {
+      case 0:
+        return this.topDict.FDSelect.fds[gid];
+
+      case 3:
+      case 4:
+        var ranges = this.topDict.FDSelect.ranges;
+
+        var low = 0;
+        var high = ranges.length - 1;
+
+        while (low <= high) {
+          var mid = low + high >> 1;
+
+          if (gid < ranges[mid].first) {
+            high = mid - 1;
+          } else if (mid < high && gid > ranges[mid + 1].first) {
+            low = mid + 1;
+          } else {
+            return ranges[mid].fd;
+          }
+        }
+      default:
+        throw new Error('Unknown FDSelect version: ' + this.topDict.FDSelect.version);
+    }
+  };
+
+  CFFFont.prototype.privateDictForGlyph = function privateDictForGlyph(gid) {
+    if (this.topDict.FDSelect) {
+      var fd = this.fdForGlyph(gid);
+      if (this.topDict.FDArray[fd]) {
+        return this.topDict.FDArray[fd].Private;
+      }
+
+      return null;
+    }
+
+    if (this.version < 2) {
+      return this.topDict.Private;
+    }
+
+    return this.topDict.FDArray[0].Private;
+  };
+
+  _createClass(CFFFont, [{
+    key: 'postscriptName',
+    get: function get() {
+      if (this.version < 2) {
+        return this.nameIndex[0];
+      }
+
+      return null;
+    }
+  }, {
+    key: 'fullName',
+    get: function get() {
+      return this.string(this.topDict.FullName);
+    }
+  }, {
+    key: 'familyName',
+    get: function get() {
+      return this.string(this.topDict.FamilyName);
+    }
+  }]);
+
+  return CFFFont;
+}();
+
+var VerticalOrigin = new r.Struct({
+  glyphIndex: r.uint16,
+  vertOriginY: r.int16
+});
+
+var VORG = new r.Struct({
+  majorVersion: r.uint16,
+  minorVersion: r.uint16,
+  defaultVertOriginY: r.int16,
+  numVertOriginYMetrics: r.uint16,
+  metrics: new r.Array(VerticalOrigin, 'numVertOriginYMetrics')
+});
+
+var BigMetrics = new r.Struct({
+  height: r.uint8,
+  width: r.uint8,
+  horiBearingX: r.int8,
+  horiBearingY: r.int8,
+  horiAdvance: r.uint8,
+  vertBearingX: r.int8,
+  vertBearingY: r.int8,
+  vertAdvance: r.uint8
+});
+
+var SmallMetrics = new r.Struct({
+  height: r.uint8,
+  width: r.uint8,
+  bearingX: r.int8,
+  bearingY: r.int8,
+  advance: r.uint8
+});
+
+var EBDTComponent = new r.Struct({
+  glyph: r.uint16,
+  xOffset: r.int8,
+  yOffset: r.int8
+});
+
+var ByteAligned = function ByteAligned() {
+  _classCallCheck(this, ByteAligned);
+};
+
+var BitAligned = function BitAligned() {
+  _classCallCheck(this, BitAligned);
+};
+
+var glyph = new r.VersionedStruct('version', {
+  1: {
+    metrics: SmallMetrics,
+    data: ByteAligned
+  },
+
+  2: {
+    metrics: SmallMetrics,
+    data: BitAligned
+  },
+
+  // format 3 is deprecated
+  // format 4 is not supported by Microsoft
+
+  5: {
+    data: BitAligned
+  },
+
+  6: {
+    metrics: BigMetrics,
+    data: ByteAligned
+  },
+
+  7: {
+    metrics: BigMetrics,
+    data: BitAligned
+  },
+
+  8: {
+    metrics: SmallMetrics,
+    pad: new r.Reserved(r.uint8),
+    numComponents: r.uint16,
+    components: new r.Array(EBDTComponent, 'numComponents')
+  },
+
+  9: {
+    metrics: BigMetrics,
+    pad: new r.Reserved(r.uint8),
+    numComponents: r.uint16,
+    components: new r.Array(EBDTComponent, 'numComponents')
+  },
+
+  17: {
+    metrics: SmallMetrics,
+    dataLen: r.uint32,
+    data: new r.Buffer('dataLen')
+  },
+
+  18: {
+    metrics: BigMetrics,
+    dataLen: r.uint32,
+    data: new r.Buffer('dataLen')
+  },
+
+  19: {
+    dataLen: r.uint32,
+    data: new r.Buffer('dataLen')
+  }
+});
+
+var SBitLineMetrics = new r.Struct({
+  ascender: r.int8,
+  descender: r.int8,
+  widthMax: r.uint8,
+  caretSlopeNumerator: r.int8,
+  caretSlopeDenominator: r.int8,
+  caretOffset: r.int8,
+  minOriginSB: r.int8,
+  minAdvanceSB: r.int8,
+  maxBeforeBL: r.int8,
+  minAfterBL: r.int8,
+  pad: new r.Reserved(r.int8, 2)
+});
+
+var CodeOffsetPair = new r.Struct({
+  glyphCode: r.uint16,
+  offset: r.uint16
+});
+
+var IndexSubtable = new r.VersionedStruct(r.uint16, {
+  header: {
+    imageFormat: r.uint16,
+    imageDataOffset: r.uint32
+  },
+
+  1: {
+    offsetArray: new r.Array(r.uint32, function (t) {
+      return t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1;
+    })
+  },
+
+  2: {
+    imageSize: r.uint32,
+    bigMetrics: BigMetrics
+  },
+
+  3: {
+    offsetArray: new r.Array(r.uint16, function (t) {
+      return t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1;
+    })
+  },
+
+  4: {
+    numGlyphs: r.uint32,
+    glyphArray: new r.Array(CodeOffsetPair, function (t) {
+      return t.numGlyphs + 1;
+    })
+  },
+
+  5: {
+    imageSize: r.uint32,
+    bigMetrics: BigMetrics,
+    numGlyphs: r.uint32,
+    glyphCodeArray: new r.Array(r.uint16, 'numGlyphs')
+  }
+});
+
+var IndexSubtableArray = new r.Struct({
+  firstGlyphIndex: r.uint16,
+  lastGlyphIndex: r.uint16,
+  subtable: new r.Pointer(r.uint32, IndexSubtable)
+});
+
+var BitmapSizeTable = new r.Struct({
+  indexSubTableArray: new r.Pointer(r.uint32, new r.Array(IndexSubtableArray, 1), { type: 'parent' }),
+  indexTablesSize: r.uint32,
+  numberOfIndexSubTables: r.uint32,
+  colorRef: r.uint32,
+  hori: SBitLineMetrics,
+  vert: SBitLineMetrics,
+  startGlyphIndex: r.uint16,
+  endGlyphIndex: r.uint16,
+  ppemX: r.uint8,
+  ppemY: r.uint8,
+  bitDepth: r.uint8,
+  flags: new r.Bitfield(r.uint8, ['horizontal', 'vertical'])
+});
+
+var EBLC = new r.Struct({
+  version: r.uint32, // 0x00020000
+  numSizes: r.uint32,
+  sizes: new r.Array(BitmapSizeTable, 'numSizes')
+});
+
+var ImageTable = new r.Struct({
+  ppem: r.uint16,
+  resolution: r.uint16,
+  imageOffsets: new r.Array(new r.Pointer(r.uint32, 'void'), function (t) {
+    return t.parent.parent.maxp.numGlyphs + 1;
+  })
+});
+
+// This is the Apple sbix table, used by the "Apple Color Emoji" font.
+// It includes several image tables with images for each bitmap glyph
+// of several different sizes.
+var sbix = new r.Struct({
+  version: r.uint16,
+  flags: new r.Bitfield(r.uint16, ['renderOutlines']),
+  numImgTables: r.uint32,
+  imageTables: new r.Array(new r.Pointer(r.uint32, ImageTable), 'numImgTables')
+});
+
+var LayerRecord = new r.Struct({
+  gid: r.uint16, // Glyph ID of layer glyph (must be in z-order from bottom to top).
+  paletteIndex: r.uint16 // Index value to use in the appropriate palette. This value must
+}); // be less than numPaletteEntries in the CPAL table, except for
+// the special case noted below. Each palette entry is 16 bits.
+// A palette index of 0xFFFF is a special case indicating that
+// the text foreground color should be used.
+
+var BaseGlyphRecord = new r.Struct({
+  gid: r.uint16, // Glyph ID of reference glyph. This glyph is for reference only
+  // and is not rendered for color.
+  firstLayerIndex: r.uint16, // Index (from beginning of the Layer Records) to the layer record.
+  // There will be numLayers consecutive entries for this base glyph.
+  numLayers: r.uint16
+});
+
+var COLR = new r.Struct({
+  version: r.uint16,
+  numBaseGlyphRecords: r.uint16,
+  baseGlyphRecord: new r.Pointer(r.uint32, new r.Array(BaseGlyphRecord, 'numBaseGlyphRecords')),
+  layerRecords: new r.Pointer(r.uint32, new r.Array(LayerRecord, 'numLayerRecords'), { lazy: true }),
+  numLayerRecords: r.uint16
+});
+
+var ColorRecord = new r.Struct({
+  blue: r.uint8,
+  green: r.uint8,
+  red: r.uint8,
+  alpha: r.uint8
+});
+
+var CPAL = new r.VersionedStruct(r.uint16, {
+  header: {
+    numPaletteEntries: r.uint16,
+    numPalettes: r.uint16,
+    numColorRecords: r.uint16,
+    colorRecords: new r.Pointer(r.uint32, new r.Array(ColorRecord, 'numColorRecords')),
+    colorRecordIndices: new r.Array(r.uint16, 'numPalettes')
+  },
+  0: {},
+  1: {
+    offsetPaletteTypeArray: new r.Pointer(r.uint32, new r.Array(r.uint32, 'numPalettes')),
+    offsetPaletteLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPalettes')),
+    offsetPaletteEntryLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPaletteEntries'))
+  }
+});
+
+var BaseCoord = new r.VersionedStruct(r.uint16, {
+  1: { // Design units only
+    coordinate: r.int16 // X or Y value, in design units
+  },
+
+  2: { // Design units plus contour point
+    coordinate: r.int16, // X or Y value, in design units
+    referenceGlyph: r.uint16, // GlyphID of control glyph
+    baseCoordPoint: r.uint16 // Index of contour point on the referenceGlyph
+  },
+
+  3: { // Design units plus Device table
+    coordinate: r.int16, // X or Y value, in design units
+    deviceTable: new r.Pointer(r.uint16, Device) // Device table for X or Y value
+  }
+});
+
+var BaseValues = new r.Struct({
+  defaultIndex: r.uint16, // Index of default baseline for this script-same index in the BaseTagList
+  baseCoordCount: r.uint16,
+  baseCoords: new r.Array(new r.Pointer(r.uint16, BaseCoord), 'baseCoordCount')
+});
+
+var FeatMinMaxRecord = new r.Struct({
+  tag: new r.String(4), // 4-byte feature identification tag-must match FeatureTag in FeatureList
+  minCoord: new r.Pointer(r.uint16, BaseCoord, { type: 'parent' }), // May be NULL
+  maxCoord: new r.Pointer(r.uint16, BaseCoord, { type: 'parent' }) // May be NULL
+});
+
+var MinMax = new r.Struct({
+  minCoord: new r.Pointer(r.uint16, BaseCoord), // May be NULL
+  maxCoord: new r.Pointer(r.uint16, BaseCoord), // May be NULL
+  featMinMaxCount: r.uint16, // May be 0
+  featMinMaxRecords: new r.Array(FeatMinMaxRecord, 'featMinMaxCount') // In alphabetical order
+});
+
+var BaseLangSysRecord = new r.Struct({
+  tag: new r.String(4), // 4-byte language system identification tag
+  minMax: new r.Pointer(r.uint16, MinMax, { type: 'parent' })
+});
+
+var BaseScript = new r.Struct({
+  baseValues: new r.Pointer(r.uint16, BaseValues), // May be NULL
+  defaultMinMax: new r.Pointer(r.uint16, MinMax), // May be NULL
+  baseLangSysCount: r.uint16, // May be 0
+  baseLangSysRecords: new r.Array(BaseLangSysRecord, 'baseLangSysCount') // in alphabetical order by BaseLangSysTag
+});
+
+var BaseScriptRecord = new r.Struct({
+  tag: new r.String(4), // 4-byte script identification tag
+  script: new r.Pointer(r.uint16, BaseScript, { type: 'parent' })
+});
+
+var BaseScriptList = new r.Array(BaseScriptRecord, r.uint16);
+
+// Array of 4-byte baseline identification tags-must be in alphabetical order
+var BaseTagList = new r.Array(new r.String(4), r.uint16);
+
+var Axis = new r.Struct({
+  baseTagList: new r.Pointer(r.uint16, BaseTagList), // May be NULL
+  baseScriptList: new r.Pointer(r.uint16, BaseScriptList)
+});
+
+var BASE = new r.VersionedStruct(r.uint32, {
+  header: {
+    horizAxis: new r.Pointer(r.uint16, Axis), // May be NULL
+    vertAxis: new r.Pointer(r.uint16, Axis) // May be NULL
+  },
+
+  0x00010000: {},
+  0x00010001: {
+    itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)
+  }
+});
+
+var AttachPoint = new r.Array(r.uint16, r.uint16);
+var AttachList = new r.Struct({
+  coverage: new r.Pointer(r.uint16, Coverage),
+  glyphCount: r.uint16,
+  attachPoints: new r.Array(new r.Pointer(r.uint16, AttachPoint), 'glyphCount')
+});
+
+var CaretValue = new r.VersionedStruct(r.uint16, {
+  1: { // Design units only
+    coordinate: r.int16
+  },
+
+  2: { // Contour point
+    caretValuePoint: r.uint16
+  },
+
+  3: { // Design units plus Device table
+    coordinate: r.int16,
+    deviceTable: new r.Pointer(r.uint16, Device)
+  }
+});
+
+var LigGlyph = new r.Array(new r.Pointer(r.uint16, CaretValue), r.uint16);
+
+var LigCaretList = new r.Struct({
+  coverage: new r.Pointer(r.uint16, Coverage),
+  ligGlyphCount: r.uint16,
+  ligGlyphs: new r.Array(new r.Pointer(r.uint16, LigGlyph), 'ligGlyphCount')
+});
+
+var MarkGlyphSetsDef = new r.Struct({
+  markSetTableFormat: r.uint16,
+  markSetCount: r.uint16,
+  coverage: new r.Array(new r.Pointer(r.uint32, Coverage), 'markSetCount')
+});
+
+var GDEF = new r.VersionedStruct(r.uint32, {
+  header: {
+    glyphClassDef: new r.Pointer(r.uint16, ClassDef),
+    attachList: new r.Pointer(r.uint16, AttachList),
+    ligCaretList: new r.Pointer(r.uint16, LigCaretList),
+    markAttachClassDef: new r.Pointer(r.uint16, ClassDef)
+  },
+
+  0x00010000: {},
+  0x00010002: {
+    markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef)
+  },
+  0x00010003: {
+    markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef),
+    itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)
+  }
+});
+
+var ValueFormat = new r.Bitfield(r.uint16, ['xPlacement', 'yPlacement', 'xAdvance', 'yAdvance', 'xPlaDevice', 'yPlaDevice', 'xAdvDevice', 'yAdvDevice']);
+
+var types = {
+  xPlacement: r.int16,
+  yPlacement: r.int16,
+  xAdvance: r.int16,
+  yAdvance: r.int16,
+  xPlaDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: 'rel' }),
+  yPlaDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: 'rel' }),
+  xAdvDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: 'rel' }),
+  yAdvDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: 'rel' })
+};
+
+var ValueRecord = function () {
+  function ValueRecord() {
+    var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'valueFormat';
+
+    _classCallCheck(this, ValueRecord);
+
+    this.key = key;
+  }
+
+  ValueRecord.prototype.buildStruct = function buildStruct(parent) {
+    var struct = parent;
+    while (!struct[this.key] && struct.parent) {
+      struct = struct.parent;
+    }
+
+    if (!struct[this.key]) return;
+
+    var fields = {};
+    fields.rel = function () {
+      return struct._startOffset;
+    };
+
+    var format = struct[this.key];
+    for (var key in format) {
+      if (format[key]) {
+        fields[key] = types[key];
+      }
+    }
+
+    return new r.Struct(fields);
+  };
+
+  ValueRecord.prototype.size = function size(val, ctx) {
+    return this.buildStruct(ctx).size(val, ctx);
+  };
+
+  ValueRecord.prototype.decode = function decode(stream, parent) {
+    var res = this.buildStruct(parent).decode(stream, parent);
+    delete res.rel;
+    return res;
+  };
+
+  return ValueRecord;
+}();
+
+var PairValueRecord = new r.Struct({
+  secondGlyph: r.uint16,
+  value1: new ValueRecord('valueFormat1'),
+  value2: new ValueRecord('valueFormat2')
+});
+
+var PairSet = new r.Array(PairValueRecord, r.uint16);
+
+var Class2Record = new r.Struct({
+  value1: new ValueRecord('valueFormat1'),
+  value2: new ValueRecord('valueFormat2')
+});
+
+var Anchor = new r.VersionedStruct(r.uint16, {
+  1: { // Design units only
+    xCoordinate: r.int16,
+    yCoordinate: r.int16
+  },
+
+  2: { // Design units plus contour point
+    xCoordinate: r.int16,
+    yCoordinate: r.int16,
+    anchorPoint: r.uint16
+  },
+
+  3: { // Design units plus Device tables
+    xCoordinate: r.int16,
+    yCoordinate: r.int16,
+    xDeviceTable: new r.Pointer(r.uint16, Device),
+    yDeviceTable: new r.Pointer(r.uint16, Device)
+  }
+});
+
+var EntryExitRecord = new r.Struct({
+  entryAnchor: new r.Pointer(r.uint16, Anchor, { type: 'parent' }),
+  exitAnchor: new r.Pointer(r.uint16, Anchor, { type: 'parent' })
+});
+
+var MarkRecord = new r.Struct({
+  class: r.uint16,
+  markAnchor: new r.Pointer(r.uint16, Anchor, { type: 'parent' })
+});
+
+var MarkArray = new r.Array(MarkRecord, r.uint16);
+
+var BaseRecord = new r.Array(new r.Pointer(r.uint16, Anchor), function (t) {
+  return t.parent.classCount;
+});
+var BaseArray = new r.Array(BaseRecord, r.uint16);
+
+var ComponentRecord = new r.Array(new r.Pointer(r.uint16, Anchor), function (t) {
+  return t.parent.parent.classCount;
+});
+var LigatureAttach = new r.Array(ComponentRecord, r.uint16);
+var LigatureArray = new r.Array(new r.Pointer(r.uint16, LigatureAttach), r.uint16);
+
+var GPOSLookup = new r.VersionedStruct('lookupType', {
+  1: new r.VersionedStruct(r.uint16, { // Single Adjustment
+    1: { // Single positioning value
+      coverage: new r.Pointer(r.uint16, Coverage),
+      valueFormat: ValueFormat,
+      value: new ValueRecord()
+    },
+    2: {
+      coverage: new r.Pointer(r.uint16, Coverage),
+      valueFormat: ValueFormat,
+      valueCount: r.uint16,
+      values: new r.LazyArray(new ValueRecord(), 'valueCount')
+    }
+  }),
+
+  2: new r.VersionedStruct(r.uint16, { // Pair Adjustment Positioning
+    1: { // Adjustments for glyph pairs
+      coverage: new r.Pointer(r.uint16, Coverage),
+      valueFormat1: ValueFormat,
+      valueFormat2: ValueFormat,
+      pairSetCount: r.uint16,
+      pairSets: new r.LazyArray(new r.Pointer(r.uint16, PairSet), 'pairSetCount')
+    },
+
+    2: { // Class pair adjustment
+      coverage: new r.Pointer(r.uint16, Coverage),
+      valueFormat1: ValueFormat,
+      valueFormat2: ValueFormat,
+      classDef1: new r.Pointer(r.uint16, ClassDef),
+      classDef2: new r.Pointer(r.uint16, ClassDef),
+      class1Count: r.uint16,
+      class2Count: r.uint16,
+      classRecords: new r.LazyArray(new r.LazyArray(Class2Record, 'class2Count'), 'class1Count')
+    }
+  }),
+
+  3: { // Cursive Attachment Positioning
+    format: r.uint16,
+    coverage: new r.Pointer(r.uint16, Coverage),
+    entryExitCount: r.uint16,
+    entryExitRecords: new r.Array(EntryExitRecord, 'entryExitCount')
+  },
+
+  4: { // MarkToBase Attachment Positioning
+    format: r.uint16,
+    markCoverage: new r.Pointer(r.uint16, Coverage),
+    baseCoverage: new r.Pointer(r.uint16, Coverage),
+    classCount: r.uint16,
+    markArray: new r.Pointer(r.uint16, MarkArray),
+    baseArray: new r.Pointer(r.uint16, BaseArray)
+  },
+
+  5: { // MarkToLigature Attachment Positioning
+    format: r.uint16,
+    markCoverage: new r.Pointer(r.uint16, Coverage),
+    ligatureCoverage: new r.Pointer(r.uint16, Coverage),
+    classCount: r.uint16,
+    markArray: new r.Pointer(r.uint16, MarkArray),
+    ligatureArray: new r.Pointer(r.uint16, LigatureArray)
+  },
+
+  6: { // MarkToMark Attachment Positioning
+    format: r.uint16,
+    mark1Coverage: new r.Pointer(r.uint16, Coverage),
+    mark2Coverage: new r.Pointer(r.uint16, Coverage),
+    classCount: r.uint16,
+    mark1Array: new r.Pointer(r.uint16, MarkArray),
+    mark2Array: new r.Pointer(r.uint16, BaseArray)
+  },
+
+  7: Context, // Contextual positioning
+  8: ChainingContext, // Chaining contextual positioning
+
+  9: { // Extension Positioning
+    posFormat: r.uint16,
+    lookupType: r.uint16, // cannot also be 9
+    extension: new r.Pointer(r.uint32, GPOSLookup)
+  }
+});
+
+// Fix circular reference
+GPOSLookup.versions[9].extension.type = GPOSLookup;
+
+var GPOS = new r.VersionedStruct(r.uint32, {
+  header: {
+    scriptList: new r.Pointer(r.uint16, ScriptList),
+    featureList: new r.Pointer(r.uint16, FeatureList),
+    lookupList: new r.Pointer(r.uint16, new LookupList(GPOSLookup))
+  },
+
+  0x00010000: {},
+  0x00010001: {
+    featureVariations: new r.Pointer(r.uint32, FeatureVariations)
+  }
+});
+
+var Sequence = new r.Array(r.uint16, r.uint16);
+var AlternateSet = Sequence;
+
+var Ligature = new r.Struct({
+  glyph: r.uint16,
+  compCount: r.uint16,
+  components: new r.Array(r.uint16, function (t) {
+    return t.compCount - 1;
+  })
+});
+
+var LigatureSet = new r.Array(new r.Pointer(r.uint16, Ligature), r.uint16);
+
+var GSUBLookup = new r.VersionedStruct('lookupType', {
+  1: new r.VersionedStruct(r.uint16, { // Single Substitution
+    1: {
+      coverage: new r.Pointer(r.uint16, Coverage),
+      deltaGlyphID: r.int16
+    },
+    2: {
+      coverage: new r.Pointer(r.uint16, Coverage),
+      glyphCount: r.uint16,
+      substitute: new r.LazyArray(r.uint16, 'glyphCount')
+    }
+  }),
+
+  2: { // Multiple Substitution
+    substFormat: r.uint16,
+    coverage: new r.Pointer(r.uint16, Coverage),
+    count: r.uint16,
+    sequences: new r.LazyArray(new r.Pointer(r.uint16, Sequence), 'count')
+  },
+
+  3: { // Alternate Substitution
+    substFormat: r.uint16,
+    coverage: new r.Pointer(r.uint16, Coverage),
+    count: r.uint16,
+    alternateSet: new r.LazyArray(new r.Pointer(r.uint16, AlternateSet), 'count')
+  },
+
+  4: { // Ligature Substitution
+    substFormat: r.uint16,
+    coverage: new r.Pointer(r.uint16, Coverage),
+    count: r.uint16,
+    ligatureSets: new r.LazyArray(new r.Pointer(r.uint16, LigatureSet), 'count')
+  },
+
+  5: Context, // Contextual Substitution
+  6: ChainingContext, // Chaining Contextual Substitution
+
+  7: { // Extension Substitution
+    substFormat: r.uint16,
+    lookupType: r.uint16, // cannot also be 7
+    extension: new r.Pointer(r.uint32, GSUBLookup)
+  },
+
+  8: { // Reverse Chaining Contextual Single Substitution
+    substFormat: r.uint16,
+    coverage: new r.Pointer(r.uint16, Coverage),
+    backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),
+    lookaheadGlyphCount: r.uint16,
+    lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),
+    glyphCount: r.uint16,
+    substitutes: new r.Array(r.uint16, 'glyphCount')
+  }
+});
+
+// Fix circular reference
+GSUBLookup.versions[7].extension.type = GSUBLookup;
+
+var GSUB = new r.VersionedStruct(r.uint32, {
+  header: {
+    scriptList: new r.Pointer(r.uint16, ScriptList),
+    featureList: new r.Pointer(r.uint16, FeatureList),
+    lookupList: new r.Pointer(r.uint16, new LookupList(GSUBLookup))
+  },
+
+  0x00010000: {},
+  0x00010001: {
+    featureVariations: new r.Pointer(r.uint32, FeatureVariations)
+  }
+});
+
+var JstfGSUBModList = new r.Array(r.uint16, r.uint16);
+
+var JstfPriority = new r.Struct({
+  shrinkageEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
+  shrinkageDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
+  shrinkageEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
+  shrinkageDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
+  shrinkageJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup)),
+  extensionEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
+  extensionDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
+  extensionEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
+  extensionDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
+  extensionJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup))
+});
+
+var JstfLangSys = new r.Array(new r.Pointer(r.uint16, JstfPriority), r.uint16);
+
+var JstfLangSysRecord = new r.Struct({
+  tag: new r.String(4),
+  jstfLangSys: new r.Pointer(r.uint16, JstfLangSys)
+});
+
+var JstfScript = new r.Struct({
+  extenderGlyphs: new r.Pointer(r.uint16, new r.Array(r.uint16, r.uint16)), // array of glyphs to extend line length
+  defaultLangSys: new r.Pointer(r.uint16, JstfLangSys),
+  langSysCount: r.uint16,
+  langSysRecords: new r.Array(JstfLangSysRecord, 'langSysCount')
+});
+
+var JstfScriptRecord = new r.Struct({
+  tag: new r.String(4),
+  script: new r.Pointer(r.uint16, JstfScript, { type: 'parent' })
+});
+
+var JSTF = new r.Struct({
+  version: r.uint32, // should be 0x00010000
+  scriptCount: r.uint16,
+  scriptList: new r.Array(JstfScriptRecord, 'scriptCount')
+});
+
+// TODO: add this to restructure
+
+var VariableSizeNumber = function () {
+  function VariableSizeNumber(size) {
+    _classCallCheck(this, VariableSizeNumber);
+
+    this._size = size;
+  }
+
+  VariableSizeNumber.prototype.decode = function decode(stream, parent) {
+    switch (this.size(0, parent)) {
+      case 1:
+        return stream.readUInt8();
+      case 2:
+        return stream.readUInt16BE();
+      case 3:
+        return stream.readUInt24BE();
+      case 4:
+        return stream.readUInt32BE();
+    }
+  };
+
+  VariableSizeNumber.prototype.size = function size(val, parent) {
+    return restructure_src_utils.resolveLength(this._size, null, parent);
+  };
+
+  return VariableSizeNumber;
+}();
+
+var MapDataEntry = new r.Struct({
+  entry: new VariableSizeNumber(function (t) {
+    return ((t.parent.entryFormat & 0x0030) >> 4) + 1;
+  }),
+  outerIndex: function outerIndex(t) {
+    return t.entry >> (t.parent.entryFormat & 0x000F) + 1;
+  },
+  innerIndex: function innerIndex(t) {
+    return t.entry & (1 << (t.parent.entryFormat & 0x000F) + 1) - 1;
+  }
+});
+
+var DeltaSetIndexMap = new r.Struct({
+  entryFormat: r.uint16,
+  mapCount: r.uint16,
+  mapData: new r.Array(MapDataEntry, 'mapCount')
+});
+
+var HVAR = new r.Struct({
+  majorVersion: r.uint16,
+  minorVersion: r.uint16,
+  itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore),
+  advanceWidthMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),
+  LSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),
+  RSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap)
+});
+
+var Signature = new r.Struct({
+  format: r.uint32,
+  length: r.uint32,
+  offset: r.uint32
+});
+
+var SignatureBlock = new r.Struct({
+  reserved: new r.Reserved(r.uint16, 2),
+  cbSignature: r.uint32, // Length (in bytes) of the PKCS#7 packet in pbSignature
+  signature: new r.Buffer('cbSignature')
+});
+
+var DSIG = new r.Struct({
+  ulVersion: r.uint32, // Version number of the DSIG table (0x00000001)
+  usNumSigs: r.uint16, // Number of signatures in the table
+  usFlag: r.uint16, // Permission flags
+  signatures: new r.Array(Signature, 'usNumSigs'),
+  signatureBlocks: new r.Array(SignatureBlock, 'usNumSigs')
+});
+
+var GaspRange = new r.Struct({
+  rangeMaxPPEM: r.uint16, // Upper limit of range, in ppem
+  rangeGaspBehavior: new r.Bitfield(r.uint16, [// Flags describing desired rasterizer behavior
+  'grayscale', 'gridfit', 'symmetricSmoothing', 'symmetricGridfit' // only in version 1, for ClearType
+  ])
+});
+
+var gasp = new r.Struct({
+  version: r.uint16, // set to 0
+  numRanges: r.uint16,
+  gaspRanges: new r.Array(GaspRange, 'numRanges') // Sorted by ppem
+});
+
+var DeviceRecord = new r.Struct({
+  pixelSize: r.uint8,
+  maximumWidth: r.uint8,
+  widths: new r.Array(r.uint8, function (t) {
+    return t.parent.parent.maxp.numGlyphs;
+  })
+});
+
+// The Horizontal Device Metrics table stores integer advance widths scaled to particular pixel sizes
+var hdmx = new r.Struct({
+  version: r.uint16,
+  numRecords: r.int16,
+  sizeDeviceRecord: r.int32,
+  records: new r.Array(DeviceRecord, 'numRecords')
+});
+
+var KernPair = new r.Struct({
+  left: r.uint16,
+  right: r.uint16,
+  value: r.int16
+});
+
+var ClassTable = new r.Struct({
+  firstGlyph: r.uint16,
+  nGlyphs: r.uint16,
+  offsets: new r.Array(r.uint16, 'nGlyphs'),
+  max: function max(t) {
+    return t.offsets.length && Math.max.apply(Math, t.offsets);
+  }
+});
+
+var Kern2Array = new r.Struct({
+  off: function off(t) {
+    return t._startOffset - t.parent.parent._startOffset;
+  },
+  len: function len(t) {
+    return ((t.parent.leftTable.max - t.off) / t.parent.rowWidth + 1) * (t.parent.rowWidth / 2);
+  },
+  values: new r.LazyArray(r.int16, 'len')
+});
+
+var KernSubtable = new r.VersionedStruct('format', {
+  0: {
+    nPairs: r.uint16,
+    searchRange: r.uint16,
+    entrySelector: r.uint16,
+    rangeShift: r.uint16,
+    pairs: new r.Array(KernPair, 'nPairs')
+  },
+
+  2: {
+    rowWidth: r.uint16,
+    leftTable: new r.Pointer(r.uint16, ClassTable, { type: 'parent' }),
+    rightTable: new r.Pointer(r.uint16, ClassTable, { type: 'parent' }),
+    array: new r.Pointer(r.uint16, Kern2Array, { type: 'parent' })
+  },
+
+  3: {
+    glyphCount: r.uint16,
+    kernValueCount: r.uint8,
+    leftClassCount: r.uint8,
+    rightClassCount: r.uint8,
+    flags: r.uint8,
+    kernValue: new r.Array(r.int16, 'kernValueCount'),
+    leftClass: new r.Array(r.uint8, 'glyphCount'),
+    rightClass: new r.Array(r.uint8, 'glyphCount'),
+    kernIndex: new r.Array(r.uint8, function (t) {
+      return t.leftClassCount * t.rightClassCount;
+    })
+  }
+});
+
+var KernTable = new r.VersionedStruct('version', {
+  0: { // Microsoft uses this format
+    subVersion: r.uint16, // Microsoft has an extra sub-table version number
+    length: r.uint16, // Length of the subtable, in bytes
+    format: r.uint8, // Format of subtable
+    coverage: new r.Bitfield(r.uint8, ['horizontal', // 1 if table has horizontal data, 0 if vertical
+    'minimum', // If set to 1, the table has minimum values. If set to 0, the table has kerning values.
+    'crossStream', // If set to 1, kerning is perpendicular to the flow of the text
+    'override' // If set to 1 the value in this table replaces the accumulated value
+    ]),
+    subtable: KernSubtable,
+    padding: new r.Reserved(r.uint8, function (t) {
+      return t.length - t._currentOffset;
+    })
+  },
+  1: { // Apple uses this format
+    length: r.uint32,
+    coverage: new r.Bitfield(r.uint8, [null, null, null, null, null, 'variation', // Set if table has variation kerning values
+    'crossStream', // Set if table has cross-stream kerning values
+    'vertical' // Set if table has vertical kerning values
+    ]),
+    format: r.uint8,
+    tupleIndex: r.uint16,
+    subtable: KernSubtable,
+    padding: new r.Reserved(r.uint8, function (t) {
+      return t.length - t._currentOffset;
+    })
+  }
+});
+
+var kern = new r.VersionedStruct(r.uint16, {
+  0: { // Microsoft Version
+    nTables: r.uint16,
+    tables: new r.Array(KernTable, 'nTables')
+  },
+
+  1: { // Apple Version
+    reserved: new r.Reserved(r.uint16), // the other half of the version number
+    nTables: r.uint32,
+    tables: new r.Array(KernTable, 'nTables')
+  }
+});
+
+// Linear Threshold table
+// Records the ppem for each glyph at which the scaling becomes linear again,
+// despite instructions effecting the advance width
+var LTSH = new r.Struct({
+  version: r.uint16,
+  numGlyphs: r.uint16,
+  yPels: new r.Array(r.uint8, 'numGlyphs')
+});
+
+// PCL 5 Table
+// NOTE: The PCLT table is strongly discouraged for OpenType fonts with TrueType outlines
+var PCLT = new r.Struct({
+  version: r.uint16,
+  fontNumber: r.uint32,
+  pitch: r.uint16,
+  xHeight: r.uint16,
+  style: r.uint16,
+  typeFamily: r.uint16,
+  capHeight: r.uint16,
+  symbolSet: r.uint16,
+  typeface: new r.String(16),
+  characterComplement: new r.String(8),
+  fileName: new r.String(6),
+  strokeWeight: new r.String(1),
+  widthType: new r.String(1),
+  serifStyle: r.uint8,
+  reserved: new r.Reserved(r.uint8)
+});
+
+// VDMX tables contain ascender/descender overrides for certain (usually small)
+// sizes. This is needed in order to match font metrics on Windows.
+
+var Ratio = new r.Struct({
+  bCharSet: r.uint8, // Character set
+  xRatio: r.uint8, // Value to use for x-Ratio
+  yStartRatio: r.uint8, // Starting y-Ratio value
+  yEndRatio: r.uint8 // Ending y-Ratio value
+});
+
+var vTable = new r.Struct({
+  yPelHeight: r.uint16, // yPelHeight to which values apply
+  yMax: r.int16, // Maximum value (in pels) for this yPelHeight
+  yMin: r.int16 // Minimum value (in pels) for this yPelHeight
+});
+
+var VdmxGroup = new r.Struct({
+  recs: r.uint16, // Number of height records in this group
+  startsz: r.uint8, // Starting yPelHeight
+  endsz: r.uint8, // Ending yPelHeight
+  entries: new r.Array(vTable, 'recs') // The VDMX records
+});
+
+var VDMX = new r.Struct({
+  version: r.uint16, // Version number (0 or 1)
+  numRecs: r.uint16, // Number of VDMX groups present
+  numRatios: r.uint16, // Number of aspect ratio groupings
+  ratioRanges: new r.Array(Ratio, 'numRatios'), // Ratio ranges
+  offsets: new r.Array(r.uint16, 'numRatios'), // Offset to the VDMX group for this ratio range
+  groups: new r.Array(VdmxGroup, 'numRecs') // The actual VDMX groupings
+});
+
+// Vertical Header Table
+var vhea = new r.Struct({
+  version: r.uint16, // Version number of the Vertical Header Table
+  ascent: r.int16, // The vertical typographic ascender for this font
+  descent: r.int16, // The vertical typographic descender for this font
+  lineGap: r.int16, // The vertical typographic line gap for this font
+  advanceHeightMax: r.int16, // The maximum advance height measurement found in the font
+  minTopSideBearing: r.int16, // The minimum top side bearing measurement found in the font
+  minBottomSideBearing: r.int16, // The minimum bottom side bearing measurement found in the font
+  yMaxExtent: r.int16,
+  caretSlopeRise: r.int16, // Caret slope (rise/run)
+  caretSlopeRun: r.int16,
+  caretOffset: r.int16, // Set value equal to 0 for nonslanted fonts
+  reserved: new r.Reserved(r.int16, 4),
+  metricDataFormat: r.int16, // Set to 0
+  numberOfMetrics: r.uint16 // Number of advance heights in the Vertical Metrics table
+});
+
+var VmtxEntry = new r.Struct({
+  advance: r.uint16, // The advance height of the glyph
+  bearing: r.int16 // The top sidebearing of the glyph
+});
+
+// Vertical Metrics Table
+var vmtx = new r.Struct({
+  metrics: new r.LazyArray(VmtxEntry, function (t) {
+    return t.parent.vhea.numberOfMetrics;
+  }),
+  bearings: new r.LazyArray(r.int16, function (t) {
+    return t.parent.maxp.numGlyphs - t.parent.vhea.numberOfMetrics;
+  })
+});
+
+var shortFrac = new r.Fixed(16, 'BE', 14);
+
+var Correspondence = new r.Struct({
+  fromCoord: shortFrac,
+  toCoord: shortFrac
+});
+
+var Segment = new r.Struct({
+  pairCount: r.uint16,
+  correspondence: new r.Array(Correspondence, 'pairCount')
+});
+
+var avar = new r.Struct({
+  version: r.fixed32,
+  axisCount: r.uint32,
+  segment: new r.Array(Segment, 'axisCount')
+});
+
+var UnboundedArrayAccessor = function () {
+  function UnboundedArrayAccessor(type, stream, parent) {
+    _classCallCheck(this, UnboundedArrayAccessor);
+
+    this.type = type;
+    this.stream = stream;
+    this.parent = parent;
+    this.base = this.stream.pos;
+    this._items = [];
+  }
+
+  UnboundedArrayAccessor.prototype.getItem = function getItem(index) {
+    if (this._items[index] == null) {
+      var pos = this.stream.pos;
+      this.stream.pos = this.base + this.type.size(null, this.parent) * index;
+      this._items[index] = this.type.decode(this.stream, this.parent);
+      this.stream.pos = pos;
+    }
+
+    return this._items[index];
+  };
+
+  UnboundedArrayAccessor.prototype.inspect = function inspect() {
+    return '[UnboundedArray ' + this.type.constructor.name + ']';
+  };
+
+  return UnboundedArrayAccessor;
+}();
+
+var UnboundedArray = function (_r$Array) {
+  _inherits(UnboundedArray, _r$Array);
+
+  function UnboundedArray(type) {
+    _classCallCheck(this, UnboundedArray);
+
+    return _possibleConstructorReturn(this, _r$Array.call(this, type, 0));
+  }
+
+  UnboundedArray.prototype.decode = function decode(stream, parent) {
+    return new UnboundedArrayAccessor(this.type, stream, parent);
+  };
+
+  return UnboundedArray;
+}(r.Array);
+
+var LookupTable = function LookupTable() {
+  var ValueType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : r.uint16;
+
+  // Helper class that makes internal structures invisible to pointers
+  var Shadow = function () {
+    function Shadow(type) {
+      _classCallCheck(this, Shadow);
+
+      this.type = type;
+    }
+
+    Shadow.prototype.decode = function decode(stream, ctx) {
+      ctx = ctx.parent.parent;
+      return this.type.decode(stream, ctx);
+    };
+
+    Shadow.prototype.size = function size(val, ctx) {
+      ctx = ctx.parent.parent;
+      return this.type.size(val, ctx);
+    };
+
+    Shadow.prototype.encode = function encode(stream, val, ctx) {
+      ctx = ctx.parent.parent;
+      return this.type.encode(stream, val, ctx);
+    };
+
+    return Shadow;
+  }();
+
+  ValueType = new Shadow(ValueType);
+
+  var BinarySearchHeader = new r.Struct({
+    unitSize: r.uint16,
+    nUnits: r.uint16,
+    searchRange: r.uint16,
+    entrySelector: r.uint16,
+    rangeShift: r.uint16
+  });
+
+  var LookupSegmentSingle = new r.Struct({
+    lastGlyph: r.uint16,
+    firstGlyph: r.uint16,
+    value: ValueType
+  });
+
+  var LookupSegmentArray = new r.Struct({
+    lastGlyph: r.uint16,
+    firstGlyph: r.uint16,
+    values: new r.Pointer(r.uint16, new r.Array(ValueType, function (t) {
+      return t.lastGlyph - t.firstGlyph + 1;
+    }), { type: 'parent' })
+  });
+
+  var LookupSingle = new r.Struct({
+    glyph: r.uint16,
+    value: ValueType
+  });
+
+  return new r.VersionedStruct(r.uint16, {
+    0: {
+      values: new UnboundedArray(ValueType) // length == number of glyphs maybe?
+    },
+    2: {
+      binarySearchHeader: BinarySearchHeader,
+      segments: new r.Array(LookupSegmentSingle, function (t) {
+        return t.binarySearchHeader.nUnits;
+      })
+    },
+    4: {
+      binarySearchHeader: BinarySearchHeader,
+      segments: new r.Array(LookupSegmentArray, function (t) {
+        return t.binarySearchHeader.nUnits;
+      })
+    },
+    6: {
+      binarySearchHeader: BinarySearchHeader,
+      segments: new r.Array(LookupSingle, function (t) {
+        return t.binarySearchHeader.nUnits;
+      })
+    },
+    8: {
+      firstGlyph: r.uint16,
+      count: r.uint16,
+      values: new r.Array(ValueType, 'count')
+    }
+  });
+};
+
+function StateTable() {
+  var entryData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var lookupType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : r.uint16;
+
+  var entry = _Object$assign({
+    newState: r.uint16,
+    flags: r.uint16
+  }, entryData);
+
+  var Entry = new r.Struct(entry);
+  var StateArray = new UnboundedArray(new r.Array(r.uint16, function (t) {
+    return t.nClasses;
+  }));
+
+  var StateHeader = new r.Struct({
+    nClasses: r.uint32,
+    classTable: new r.Pointer(r.uint32, new LookupTable(lookupType)),
+    stateArray: new r.Pointer(r.uint32, StateArray),
+    entryTable: new r.Pointer(r.uint32, new UnboundedArray(Entry))
+  });
+
+  return StateHeader;
+}
+
+// This is the old version of the StateTable structure
+function StateTable1() {
+  var entryData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var lookupType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : r.uint16;
+
+  var ClassLookupTable = new r.Struct({
+    version: function version() {
+      return 8;
+    },
+    // simulate LookupTable
+    firstGlyph: r.uint16,
+    values: new r.Array(r.uint8, r.uint16)
+  });
+
+  var entry = _Object$assign({
+    newStateOffset: r.uint16,
+    // convert offset to stateArray index
+    newState: function newState(t) {
+      return (t.newStateOffset - (t.parent.stateArray.base - t.parent._startOffset)) / t.parent.nClasses;
+    },
+    flags: r.uint16
+  }, entryData);
+
+  var Entry = new r.Struct(entry);
+  var StateArray = new UnboundedArray(new r.Array(r.uint8, function (t) {
+    return t.nClasses;
+  }));
+
+  var StateHeader1 = new r.Struct({
+    nClasses: r.uint16,
+    classTable: new r.Pointer(r.uint16, ClassLookupTable),
+    stateArray: new r.Pointer(r.uint16, StateArray),
+    entryTable: new r.Pointer(r.uint16, new UnboundedArray(Entry))
+  });
+
+  return StateHeader1;
+}
+
+var BslnSubtable = new r.VersionedStruct('format', {
+  0: { // Distance-based, no mapping
+    deltas: new r.Array(r.int16, 32)
+  },
+
+  1: { // Distance-based, with mapping
+    deltas: new r.Array(r.int16, 32),
+    mappingData: new LookupTable(r.uint16)
+  },
+
+  2: { // Control point-based, no mapping
+    standardGlyph: r.uint16,
+    controlPoints: new r.Array(r.uint16, 32)
+  },
+
+  3: { // Control point-based, with mapping
+    standardGlyph: r.uint16,
+    controlPoints: new r.Array(r.uint16, 32),
+    mappingData: new LookupTable(r.uint16)
+  }
+});
+
+var bsln = new r.Struct({
+  version: r.fixed32,
+  format: r.uint16,
+  defaultBaseline: r.uint16,
+  subtable: BslnSubtable
+});
+
+var Setting = new r.Struct({
+  setting: r.uint16,
+  nameIndex: r.int16,
+  name: function name(t) {
+    return t.parent.parent.parent.name.records.fontFeatures[t.nameIndex];
+  }
+});
+
+var FeatureName = new r.Struct({
+  feature: r.uint16,
+  nSettings: r.uint16,
+  settingTable: new r.Pointer(r.uint32, new r.Array(Setting, 'nSettings'), { type: 'parent' }),
+  featureFlags: new r.Bitfield(r.uint8, [null, null, null, null, null, null, 'hasDefault', 'exclusive']),
+  defaultSetting: r.uint8,
+  nameIndex: r.int16,
+  name: function name(t) {
+    return t.parent.parent.name.records.fontFeatures[t.nameIndex];
+  }
+});
+
+var feat = new r.Struct({
+  version: r.fixed32,
+  featureNameCount: r.uint16,
+  reserved1: new r.Reserved(r.uint16),
+  reserved2: new r.Reserved(r.uint32),
+  featureNames: new r.Array(FeatureName, 'featureNameCount')
+});
+
+var Axis$1 = new r.Struct({
+  axisTag: new r.String(4),
+  minValue: r.fixed32,
+  defaultValue: r.fixed32,
+  maxValue: r.fixed32,
+  flags: r.uint16,
+  nameID: r.uint16,
+  name: function name(t) {
+    return t.parent.parent.name.records.fontFeatures[t.nameID];
+  }
+});
+
+var Instance = new r.Struct({
+  nameID: r.uint16,
+  name: function name(t) {
+    return t.parent.parent.name.records.fontFeatures[t.nameID];
+  },
+  flags: r.uint16,
+  coord: new r.Array(r.fixed32, function (t) {
+    return t.parent.axisCount;
+  }),
+  postscriptNameID: new r.Optional(r.uint16, function (t) {
+    return t.parent.instanceSize - t._currentOffset > 0;
+  })
+});
+
+var fvar = new r.Struct({
+  version: r.fixed32,
+  offsetToData: r.uint16,
+  countSizePairs: r.uint16,
+  axisCount: r.uint16,
+  axisSize: r.uint16,
+  instanceCount: r.uint16,
+  instanceSize: r.uint16,
+  axis: new r.Array(Axis$1, 'axisCount'),
+  instance: new r.Array(Instance, 'instanceCount')
+});
+
+var shortFrac$1 = new r.Fixed(16, 'BE', 14);
+
+var Offset = function () {
+  function Offset() {
+    _classCallCheck(this, Offset);
+  }
+
+  Offset.decode = function decode(stream, parent) {
+    // In short format, offsets are multiplied by 2.
+    // This doesn't seem to be documented by Apple, but it
+    // is implemented this way in Freetype.
+    return parent.flags ? stream.readUInt32BE() : stream.readUInt16BE() * 2;
+  };
+
+  return Offset;
+}();
+
+var gvar = new r.Struct({
+  version: r.uint16,
+  reserved: new r.Reserved(r.uint16),
+  axisCount: r.uint16,
+  globalCoordCount: r.uint16,
+  globalCoords: new r.Pointer(r.uint32, new r.Array(new r.Array(shortFrac$1, 'axisCount'), 'globalCoordCount')),
+  glyphCount: r.uint16,
+  flags: r.uint16,
+  offsetToData: r.uint32,
+  offsets: new r.Array(new r.Pointer(Offset, 'void', { relativeTo: 'offsetToData', allowNull: false }), function (t) {
+    return t.glyphCount + 1;
+  })
+});
+
+var ClassTable$1 = new r.Struct({
+  length: r.uint16,
+  coverage: r.uint16,
+  subFeatureFlags: r.uint32,
+  stateTable: new StateTable1()
+});
+
+var WidthDeltaRecord = new r.Struct({
+  justClass: r.uint32,
+  beforeGrowLimit: r.fixed32,
+  beforeShrinkLimit: r.fixed32,
+  afterGrowLimit: r.fixed32,
+  afterShrinkLimit: r.fixed32,
+  growFlags: r.uint16,
+  shrinkFlags: r.uint16
+});
+
+var WidthDeltaCluster = new r.Array(WidthDeltaRecord, r.uint32);
+
+var ActionData = new r.VersionedStruct('actionType', {
+  0: { // Decomposition action
+    lowerLimit: r.fixed32,
+    upperLimit: r.fixed32,
+    order: r.uint16,
+    glyphs: new r.Array(r.uint16, r.uint16)
+  },
+
+  1: { // Unconditional add glyph action
+    addGlyph: r.uint16
+  },
+
+  2: { // Conditional add glyph action
+    substThreshold: r.fixed32,
+    addGlyph: r.uint16,
+    substGlyph: r.uint16
+  },
+
+  3: {}, // Stretch glyph action (no data, not supported by CoreText)
+
+  4: { // Ductile glyph action (not supported by CoreText)
+    variationAxis: r.uint32,
+    minimumLimit: r.fixed32,
+    noStretchValue: r.fixed32,
+    maximumLimit: r.fixed32
+  },
+
+  5: { // Repeated add glyph action
+    flags: r.uint16,
+    glyph: r.uint16
+  }
+});
+
+var Action = new r.Struct({
+  actionClass: r.uint16,
+  actionType: r.uint16,
+  actionLength: r.uint32,
+  actionData: ActionData,
+  padding: new r.Reserved(r.uint8, function (t) {
+    return t.actionLength - t._currentOffset;
+  })
+});
+
+var PostcompensationAction = new r.Array(Action, r.uint32);
+var PostCompensationTable = new r.Struct({
+  lookupTable: new LookupTable(new r.Pointer(r.uint16, PostcompensationAction))
+});
+
+var JustificationTable = new r.Struct({
+  classTable: new r.Pointer(r.uint16, ClassTable$1, { type: 'parent' }),
+  wdcOffset: r.uint16,
+  postCompensationTable: new r.Pointer(r.uint16, PostCompensationTable, { type: 'parent' }),
+  widthDeltaClusters: new LookupTable(new r.Pointer(r.uint16, WidthDeltaCluster, { type: 'parent', relativeTo: 'wdcOffset' }))
+});
+
+var just = new r.Struct({
+  version: r.uint32,
+  format: r.uint16,
+  horizontal: new r.Pointer(r.uint16, JustificationTable),
+  vertical: new r.Pointer(r.uint16, JustificationTable)
+});
+
+var LigatureData = {
+  action: r.uint16
+};
+
+var ContextualData = {
+  markIndex: r.uint16,
+  currentIndex: r.uint16
+};
+
+var InsertionData = {
+  currentInsertIndex: r.uint16,
+  markedInsertIndex: r.uint16
+};
+
+var SubstitutionTable = new r.Struct({
+  items: new UnboundedArray(new r.Pointer(r.uint32, new LookupTable()))
+});
+
+var SubtableData = new r.VersionedStruct('type', {
+  0: { // Indic Rearrangement Subtable
+    stateTable: new StateTable()
+  },
+
+  1: { // Contextual Glyph Substitution Subtable
+    stateTable: new StateTable(ContextualData),
+    substitutionTable: new r.Pointer(r.uint32, SubstitutionTable)
+  },
+
+  2: { // Ligature subtable
+    stateTable: new StateTable(LigatureData),
+    ligatureActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint32)),
+    components: new r.Pointer(r.uint32, new UnboundedArray(r.uint16)),
+    ligatureList: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))
+  },
+
+  4: { // Non-contextual Glyph Substitution Subtable
+    lookupTable: new LookupTable()
+  },
+
+  5: { // Glyph Insertion Subtable
+    stateTable: new StateTable(InsertionData),
+    insertionActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))
+  }
+});
+
+var Subtable = new r.Struct({
+  length: r.uint32,
+  coverage: r.uint24,
+  type: r.uint8,
+  subFeatureFlags: r.uint32,
+  table: SubtableData,
+  padding: new r.Reserved(r.uint8, function (t) {
+    return t.length - t._currentOffset;
+  })
+});
+
+var FeatureEntry = new r.Struct({
+  featureType: r.uint16,
+  featureSetting: r.uint16,
+  enableFlags: r.uint32,
+  disableFlags: r.uint32
+});
+
+var MorxChain = new r.Struct({
+  defaultFlags: r.uint32,
+  chainLength: r.uint32,
+  nFeatureEntries: r.uint32,
+  nSubtables: r.uint32,
+  features: new r.Array(FeatureEntry, 'nFeatureEntries'),
+  subtables: new r.Array(Subtable, 'nSubtables')
+});
+
+var morx = new r.Struct({
+  version: r.uint16,
+  unused: new r.Reserved(r.uint16),
+  nChains: r.uint32,
+  chains: new r.Array(MorxChain, 'nChains')
+});
+
+var OpticalBounds = new r.Struct({
+  left: r.int16,
+  top: r.int16,
+  right: r.int16,
+  bottom: r.int16
+});
+
+var opbd = new r.Struct({
+  version: r.fixed32,
+  format: r.uint16,
+  lookupTable: new LookupTable(OpticalBounds)
+});
+
+var tables = {};
+// Required Tables
+tables.cmap = cmap;
+tables.head = head;
+tables.hhea = hhea;
+tables.hmtx = hmtx;
+tables.maxp = maxp;
+tables.name = NameTable;
+tables['OS/2'] = OS2;
+tables.post = post;
+
+// TrueType Outlines
+tables.fpgm = fpgm;
+tables.loca = loca;
+tables.prep = prep;
+tables['cvt '] = cvt;
+tables.glyf = glyf;
+
+// PostScript Outlines
+tables['CFF '] = CFFFont;
+tables['CFF2'] = CFFFont;
+tables.VORG = VORG;
+
+// Bitmap Glyphs
+tables.EBLC = EBLC;
+tables.CBLC = tables.EBLC;
+tables.sbix = sbix;
+tables.COLR = COLR;
+tables.CPAL = CPAL;
+
+// Advanced OpenType Tables
+tables.BASE = BASE;
+tables.GDEF = GDEF;
+tables.GPOS = GPOS;
+tables.GSUB = GSUB;
+tables.JSTF = JSTF;
+
+// OpenType variations tables
+tables.HVAR = HVAR;
+
+// Other OpenType Tables
+tables.DSIG = DSIG;
+tables.gasp = gasp;
+tables.hdmx = hdmx;
+tables.kern = kern;
+tables.LTSH = LTSH;
+tables.PCLT = PCLT;
+tables.VDMX = VDMX;
+tables.vhea = vhea;
+tables.vmtx = vmtx;
+
+// Apple Advanced Typography Tables
+tables.avar = avar;
+tables.bsln = bsln;
+tables.feat = feat;
+tables.fvar = fvar;
+tables.gvar = gvar;
+tables.just = just;
+tables.morx = morx;
+tables.opbd = opbd;
+
+var TableEntry = new r.Struct({
+  tag: new r.String(4),
+  checkSum: r.uint32,
+  offset: new r.Pointer(r.uint32, 'void', { type: 'global' }),
+  length: r.uint32
+});
+
+var Directory = new r.Struct({
+  tag: new r.String(4),
+  numTables: r.uint16,
+  searchRange: r.uint16,
+  entrySelector: r.uint16,
+  rangeShift: r.uint16,
+  tables: new r.Array(TableEntry, 'numTables')
+});
+
+Directory.process = function () {
+  var tables = {};
+  for (var _iterator = this.tables, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var table = _ref;
+
+    tables[table.tag] = table;
+  }
+
+  this.tables = tables;
+};
+
+Directory.preEncode = function (stream) {
+  var tables$$ = [];
+  for (var tag in this.tables) {
+    var table = this.tables[tag];
+    if (table) {
+      tables$$.push({
+        tag: tag,
+        checkSum: 0,
+        offset: new r.VoidPointer(tables[tag], table),
+        length: tables[tag].size(table)
+      });
+    }
+  }
+
+  this.tag = 'true';
+  this.numTables = tables$$.length;
+  this.tables = tables$$;
+
+  this.searchRange = Math.floor(Math.log(this.numTables) / Math.LN2) * 16;
+  this.entrySelector = Math.floor(this.searchRange / Math.LN2);
+  this.rangeShift = this.numTables * 16 - this.searchRange;
+};
+
+function binarySearch(arr, cmp) {
+  var min = 0;
+  var max = arr.length - 1;
+  while (min <= max) {
+    var mid = min + max >> 1;
+    var res = cmp(arr[mid]);
+
+    if (res < 0) {
+      max = mid - 1;
+    } else if (res > 0) {
+      min = mid + 1;
+    } else {
+      return mid;
+    }
+  }
+
+  return -1;
+}
+
+function range(index, end) {
+  var range = [];
+  while (index < end) {
+    range.push(index++);
+  }
+  return range;
+}
+
+var _class$1;
+function _applyDecoratedDescriptor$1(target, property, decorators, descriptor, context) {
+  var desc = {};
+  Object['ke' + 'ys'](descriptor).forEach(function (key) {
+    desc[key] = descriptor[key];
+  });
+  desc.enumerable = !!desc.enumerable;
+  desc.configurable = !!desc.configurable;
+
+  if ('value' in desc || desc.initializer) {
+    desc.writable = true;
+  }
+
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+    return decorator(target, property, desc) || desc;
+  }, desc);
+
+  if (context && desc.initializer !== void 0) {
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+    desc.initializer = undefined;
+  }
+
+  if (desc.initializer === void 0) {
+    Object['define' + 'Property'](target, property, desc);
+    desc = null;
+  }
+
+  return desc;
+}
+
+// iconv-lite is an optional dependency.
+try {
+  var iconv = __webpack_require__(52);
+} catch (err) {}
+
+var CmapProcessor = (_class$1 = function () {
+  function CmapProcessor(cmapTable) {
+    _classCallCheck(this, CmapProcessor);
+
+    // Attempt to find a Unicode cmap first
+    this.encoding = null;
+    this.cmap = this.findSubtable(cmapTable, [
+    // 32-bit subtables
+    [3, 10], [0, 6], [0, 4],
+
+    // 16-bit subtables
+    [3, 1], [0, 3], [0, 2], [0, 1], [0, 0]]);
+
+    // If not unicode cmap was found, and iconv-lite is installed,
+    // take the first table with a supported encoding.
+    if (!this.cmap && iconv) {
+      for (var _iterator = cmapTable.tables, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var cmap = _ref;
+
+        var encoding = getEncoding(cmap.platformID, cmap.encodingID, cmap.table.language - 1);
+        if (iconv.encodingExists(encoding)) {
+          this.cmap = cmap.table;
+          this.encoding = encoding;
+        }
+      }
+    }
+
+    if (!this.cmap) {
+      throw new Error("Could not find a supported cmap table");
+    }
+
+    this.uvs = this.findSubtable(cmapTable, [[0, 5]]);
+    if (this.uvs && this.uvs.version !== 14) {
+      this.uvs = null;
+    }
+  }
+
+  CmapProcessor.prototype.findSubtable = function findSubtable(cmapTable, pairs) {
+    for (var _iterator2 = pairs, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var _ref3 = _ref2,
+          platformID = _ref3[0],
+          encodingID = _ref3[1];
+
+      for (var _iterator3 = cmapTable.tables, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref4;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref4 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref4 = _i3.value;
+        }
+
+        var cmap = _ref4;
+
+        if (cmap.platformID === platformID && cmap.encodingID === encodingID) {
+          return cmap.table;
+        }
+      }
+    }
+
+    return null;
+  };
+
+  CmapProcessor.prototype.lookup = function lookup(codepoint, variationSelector) {
+    // If there is no Unicode cmap in this font, we need to re-encode
+    // the codepoint in the encoding that the cmap supports.
+    if (this.encoding) {
+      var buf = iconv.encode(_String$fromCodePoint(codepoint), this.encoding);
+      codepoint = 0;
+      for (var i = 0; i < buf.length; i++) {
+        codepoint = codepoint << 8 | buf[i];
+      }
+
+      // Otherwise, try to get a Unicode variation selector for this codepoint if one is provided.
+    } else if (variationSelector) {
+      var gid = this.getVariationSelector(codepoint, variationSelector);
+      if (gid) {
+        return gid;
+      }
+    }
+
+    var cmap = this.cmap;
+    switch (cmap.version) {
+      case 0:
+        return cmap.codeMap.get(codepoint) || 0;
+
+      case 4:
+        {
+          var min = 0;
+          var max = cmap.segCount - 1;
+          while (min <= max) {
+            var mid = min + max >> 1;
+
+            if (codepoint < cmap.startCode.get(mid)) {
+              max = mid - 1;
+            } else if (codepoint > cmap.endCode.get(mid)) {
+              min = mid + 1;
+            } else {
+              var rangeOffset = cmap.idRangeOffset.get(mid);
+              var _gid = void 0;
+
+              if (rangeOffset === 0) {
+                _gid = codepoint + cmap.idDelta.get(mid);
+              } else {
+                var index = rangeOffset / 2 + (codepoint - cmap.startCode.get(mid)) - (cmap.segCount - mid);
+                _gid = cmap.glyphIndexArray.get(index) || 0;
+                if (_gid !== 0) {
+                  _gid += cmap.idDelta.get(mid);
+                }
+              }
+
+              return _gid & 0xffff;
+            }
+          }
+
+          return 0;
+        }
+
+      case 8:
+        throw new Error('TODO: cmap format 8');
+
+      case 6:
+      case 10:
+        return cmap.glyphIndices.get(codepoint - cmap.firstCode) || 0;
+
+      case 12:
+      case 13:
+        {
+          var _min = 0;
+          var _max = cmap.nGroups - 1;
+          while (_min <= _max) {
+            var _mid = _min + _max >> 1;
+            var group = cmap.groups.get(_mid);
+
+            if (codepoint < group.startCharCode) {
+              _max = _mid - 1;
+            } else if (codepoint > group.endCharCode) {
+              _min = _mid + 1;
+            } else {
+              if (cmap.version === 12) {
+                return group.glyphID + (codepoint - group.startCharCode);
+              } else {
+                return group.glyphID;
+              }
+            }
+          }
+
+          return 0;
+        }
+
+      case 14:
+        throw new Error('TODO: cmap format 14');
+
+      default:
+        throw new Error('Unknown cmap format ' + cmap.version);
+    }
+  };
+
+  CmapProcessor.prototype.getVariationSelector = function getVariationSelector(codepoint, variationSelector) {
+    if (!this.uvs) {
+      return 0;
+    }
+
+    var selectors = this.uvs.varSelectors.toArray();
+    var i = binarySearch(selectors, function (x) {
+      return variationSelector - x.varSelector;
+    });
+    var sel = selectors[i];
+
+    if (i !== -1 && sel.defaultUVS) {
+      i = binarySearch(sel.defaultUVS, function (x) {
+        return codepoint < x.startUnicodeValue ? -1 : codepoint > x.startUnicodeValue + x.additionalCount ? +1 : 0;
+      });
+    }
+
+    if (i !== -1 && sel.nonDefaultUVS) {
+      i = binarySearch(sel.nonDefaultUVS, function (x) {
+        return codepoint - x.unicodeValue;
+      });
+      if (i !== -1) {
+        return sel.nonDefaultUVS[i].glyphID;
+      }
+    }
+
+    return 0;
+  };
+
+  CmapProcessor.prototype.getCharacterSet = function getCharacterSet() {
+    var cmap = this.cmap;
+    switch (cmap.version) {
+      case 0:
+        return range(0, cmap.codeMap.length);
+
+      case 4:
+        {
+          var res = [];
+          var endCodes = cmap.endCode.toArray();
+          for (var i = 0; i < endCodes.length; i++) {
+            var tail = endCodes[i] + 1;
+            var start = cmap.startCode.get(i);
+            res.push.apply(res, range(start, tail));
+          }
+
+          return res;
+        }
+
+      case 8:
+        throw new Error('TODO: cmap format 8');
+
+      case 6:
+      case 10:
+        return range(cmap.firstCode, cmap.firstCode + cmap.glyphIndices.length);
+
+      case 12:
+      case 13:
+        {
+          var _res = [];
+          for (var _iterator4 = cmap.groups.toArray(), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+            var _ref5;
+
+            if (_isArray4) {
+              if (_i4 >= _iterator4.length) break;
+              _ref5 = _iterator4[_i4++];
+            } else {
+              _i4 = _iterator4.next();
+              if (_i4.done) break;
+              _ref5 = _i4.value;
+            }
+
+            var group = _ref5;
+
+            _res.push.apply(_res, range(group.startCharCode, group.endCharCode + 1));
+          }
+
+          return _res;
+        }
+
+      case 14:
+        throw new Error('TODO: cmap format 14');
+
+      default:
+        throw new Error('Unknown cmap format ' + cmap.version);
+    }
+  };
+
+  CmapProcessor.prototype.codePointsForGlyph = function codePointsForGlyph(gid) {
+    var cmap = this.cmap;
+    switch (cmap.version) {
+      case 0:
+        {
+          var res = [];
+          for (var i = 0; i < 256; i++) {
+            if (cmap.codeMap.get(i) === gid) {
+              res.push(i);
+            }
+          }
+
+          return res;
+        }
+
+      case 4:
+        {
+          var _res2 = [];
+          for (var _i5 = 0; _i5 < cmap.segCount; _i5++) {
+            var end = cmap.endCode.get(_i5);
+            var start = cmap.startCode.get(_i5);
+            var rangeOffset = cmap.idRangeOffset.get(_i5);
+            var delta = cmap.idDelta.get(_i5);
+
+            for (var c = start; c <= end; c++) {
+              var g = 0;
+              if (rangeOffset === 0) {
+                g = c + delta;
+              } else {
+                var index = rangeOffset / 2 + (c - start) - (cmap.segCount - _i5);
+                g = cmap.glyphIndexArray.get(index) || 0;
+                if (g !== 0) {
+                  g += delta;
+                }
+              }
+
+              if (g === gid) {
+                _res2.push(c);
+              }
+            }
+          }
+
+          return _res2;
+        }
+
+      case 12:
+        {
+          var _res3 = [];
+          for (var _iterator5 = cmap.groups.toArray(), _isArray5 = Array.isArray(_iterator5), _i6 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
+            var _ref6;
+
+            if (_isArray5) {
+              if (_i6 >= _iterator5.length) break;
+              _ref6 = _iterator5[_i6++];
+            } else {
+              _i6 = _iterator5.next();
+              if (_i6.done) break;
+              _ref6 = _i6.value;
+            }
+
+            var group = _ref6;
+
+            if (gid >= group.glyphID && gid <= group.glyphID + (group.endCharCode - group.startCharCode)) {
+              _res3.push(group.startCharCode + (gid - group.glyphID));
+            }
+          }
+
+          return _res3;
+        }
+
+      case 13:
+        {
+          var _res4 = [];
+          for (var _iterator6 = cmap.groups.toArray(), _isArray6 = Array.isArray(_iterator6), _i7 = 0, _iterator6 = _isArray6 ? _iterator6 : _getIterator(_iterator6);;) {
+            var _ref7;
+
+            if (_isArray6) {
+              if (_i7 >= _iterator6.length) break;
+              _ref7 = _iterator6[_i7++];
+            } else {
+              _i7 = _iterator6.next();
+              if (_i7.done) break;
+              _ref7 = _i7.value;
+            }
+
+            var _group = _ref7;
+
+            if (gid === _group.glyphID) {
+              _res4.push.apply(_res4, range(_group.startCharCode, _group.endCharCode + 1));
+            }
+          }
+
+          return _res4;
+        }
+
+      default:
+        throw new Error('Unknown cmap format ' + cmap.version);
+    }
+  };
+
+  return CmapProcessor;
+}(), (_applyDecoratedDescriptor$1(_class$1.prototype, 'getCharacterSet', [cache], _Object$getOwnPropertyDescriptor(_class$1.prototype, 'getCharacterSet'), _class$1.prototype), _applyDecoratedDescriptor$1(_class$1.prototype, 'codePointsForGlyph', [cache], _Object$getOwnPropertyDescriptor(_class$1.prototype, 'codePointsForGlyph'), _class$1.prototype)), _class$1);
+
+var KernProcessor = function () {
+  function KernProcessor(font) {
+    _classCallCheck(this, KernProcessor);
+
+    this.kern = font.kern;
+  }
+
+  KernProcessor.prototype.process = function process(glyphs, positions) {
+    for (var glyphIndex = 0; glyphIndex < glyphs.length - 1; glyphIndex++) {
+      var left = glyphs[glyphIndex].id;
+      var right = glyphs[glyphIndex + 1].id;
+      positions[glyphIndex].xAdvance += this.getKerning(left, right);
+    }
+  };
+
+  KernProcessor.prototype.getKerning = function getKerning(left, right) {
+    var res = 0;
+
+    for (var _iterator = this.kern.tables, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var table = _ref;
+
+      if (table.coverage.crossStream) {
+        continue;
+      }
+
+      switch (table.version) {
+        case 0:
+          if (!table.coverage.horizontal) {
+            continue;
+          }
+
+          break;
+        case 1:
+          if (table.coverage.vertical || table.coverage.variation) {
+            continue;
+          }
+
+          break;
+        default:
+          throw new Error('Unsupported kerning table version ' + table.version);
+      }
+
+      var val = 0;
+      var s = table.subtable;
+      switch (table.format) {
+        case 0:
+          var pairIdx = binarySearch(s.pairs, function (pair) {
+            return left - pair.left || right - pair.right;
+          });
+
+          if (pairIdx >= 0) {
+            val = s.pairs[pairIdx].value;
+          }
+
+          break;
+
+        case 2:
+          var leftOffset = 0,
+              rightOffset = 0;
+          if (left >= s.leftTable.firstGlyph && left < s.leftTable.firstGlyph + s.leftTable.nGlyphs) {
+            leftOffset = s.leftTable.offsets[left - s.leftTable.firstGlyph];
+          } else {
+            leftOffset = s.array.off;
+          }
+
+          if (right >= s.rightTable.firstGlyph && right < s.rightTable.firstGlyph + s.rightTable.nGlyphs) {
+            rightOffset = s.rightTable.offsets[right - s.rightTable.firstGlyph];
+          }
+
+          var index = (leftOffset + rightOffset - s.array.off) / 2;
+          val = s.array.values.get(index);
+          break;
+
+        case 3:
+          if (left >= s.glyphCount || right >= s.glyphCount) {
+            return 0;
+          }
+
+          val = s.kernValue[s.kernIndex[s.leftClass[left] * s.rightClassCount + s.rightClass[right]]];
+          break;
+
+        default:
+          throw new Error('Unsupported kerning sub-table format ' + table.format);
+      }
+
+      // Microsoft supports the override flag, which resets the result
+      // Otherwise, the sum of the results from all subtables is returned
+      if (table.coverage.override) {
+        res = val;
+      } else {
+        res += val;
+      }
+    }
+
+    return res;
+  };
+
+  return KernProcessor;
+}();
+
+/**
+ * This class is used when GPOS does not define 'mark' or 'mkmk' features
+ * for positioning marks relative to base glyphs. It uses the unicode
+ * combining class property to position marks.
+ *
+ * Based on code from Harfbuzz, thanks!
+ * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-fallback.cc
+ */
+
+var UnicodeLayoutEngine = function () {
+  function UnicodeLayoutEngine(font) {
+    _classCallCheck(this, UnicodeLayoutEngine);
+
+    this.font = font;
+  }
+
+  UnicodeLayoutEngine.prototype.positionGlyphs = function positionGlyphs(glyphs, positions) {
+    // find each base + mark cluster, and position the marks relative to the base
+    var clusterStart = 0;
+    var clusterEnd = 0;
+    for (var index = 0; index < glyphs.length; index++) {
+      var glyph = glyphs[index];
+      if (glyph.isMark) {
+        // TODO: handle ligatures
+        clusterEnd = index;
+      } else {
+        if (clusterStart !== clusterEnd) {
+          this.positionCluster(glyphs, positions, clusterStart, clusterEnd);
+        }
+
+        clusterStart = clusterEnd = index;
+      }
+    }
+
+    if (clusterStart !== clusterEnd) {
+      this.positionCluster(glyphs, positions, clusterStart, clusterEnd);
+    }
+
+    return positions;
+  };
+
+  UnicodeLayoutEngine.prototype.positionCluster = function positionCluster(glyphs, positions, clusterStart, clusterEnd) {
+    var base = glyphs[clusterStart];
+    var baseBox = base.cbox.copy();
+
+    // adjust bounding box for ligature glyphs
+    if (base.codePoints.length > 1) {
+      // LTR. TODO: RTL support.
+      baseBox.minX += (base.codePoints.length - 1) * baseBox.width / base.codePoints.length;
+    }
+
+    var xOffset = -positions[clusterStart].xAdvance;
+    var yOffset = 0;
+    var yGap = this.font.unitsPerEm / 16;
+
+    // position each of the mark glyphs relative to the base glyph
+    for (var index = clusterStart + 1; index <= clusterEnd; index++) {
+      var mark = glyphs[index];
+      var markBox = mark.cbox;
+      var position = positions[index];
+
+      var combiningClass = this.getCombiningClass(mark.codePoints[0]);
+
+      if (combiningClass !== 'Not_Reordered') {
+        position.xOffset = position.yOffset = 0;
+
+        // x positioning
+        switch (combiningClass) {
+          case 'Double_Above':
+          case 'Double_Below':
+            // LTR. TODO: RTL support.
+            position.xOffset += baseBox.minX - markBox.width / 2 - markBox.minX;
+            break;
+
+          case 'Attached_Below_Left':
+          case 'Below_Left':
+          case 'Above_Left':
+            // left align
+            position.xOffset += baseBox.minX - markBox.minX;
+            break;
+
+          case 'Attached_Above_Right':
+          case 'Below_Right':
+          case 'Above_Right':
+            // right align
+            position.xOffset += baseBox.maxX - markBox.width - markBox.minX;
+            break;
+
+          default:
+            // Attached_Below, Attached_Above, Below, Above, other
+            // center align
+            position.xOffset += baseBox.minX + (baseBox.width - markBox.width) / 2 - markBox.minX;
+        }
+
+        // y positioning
+        switch (combiningClass) {
+          case 'Double_Below':
+          case 'Below_Left':
+          case 'Below':
+          case 'Below_Right':
+          case 'Attached_Below_Left':
+          case 'Attached_Below':
+            // add a small gap between the glyphs if they are not attached
+            if (combiningClass === 'Attached_Below_Left' || combiningClass === 'Attached_Below') {
+              baseBox.minY += yGap;
+            }
+
+            position.yOffset = -baseBox.minY - markBox.maxY;
+            baseBox.minY += markBox.height;
+            break;
+
+          case 'Double_Above':
+          case 'Above_Left':
+          case 'Above':
+          case 'Above_Right':
+          case 'Attached_Above':
+          case 'Attached_Above_Right':
+            // add a small gap between the glyphs if they are not attached
+            if (combiningClass === 'Attached_Above' || combiningClass === 'Attached_Above_Right') {
+              baseBox.maxY += yGap;
+            }
+
+            position.yOffset = baseBox.maxY - markBox.minY;
+            baseBox.maxY += markBox.height;
+            break;
+        }
+
+        position.xAdvance = position.yAdvance = 0;
+        position.xOffset += xOffset;
+        position.yOffset += yOffset;
+      } else {
+        xOffset -= position.xAdvance;
+        yOffset -= position.yAdvance;
+      }
+    }
+
+    return;
+  };
+
+  UnicodeLayoutEngine.prototype.getCombiningClass = function getCombiningClass(codePoint) {
+    var combiningClass = unicode.getCombiningClass(codePoint);
+
+    // Thai / Lao need some per-character work
+    if ((codePoint & ~0xff) === 0x0e00) {
+      if (combiningClass === 'Not_Reordered') {
+        switch (codePoint) {
+          case 0x0e31:
+          case 0x0e34:
+          case 0x0e35:
+          case 0x0e36:
+          case 0x0e37:
+          case 0x0e47:
+          case 0x0e4c:
+          case 0x0e3d:
+          case 0x0e4e:
+            return 'Above_Right';
+
+          case 0x0eb1:
+          case 0x0eb4:
+          case 0x0eb5:
+          case 0x0eb6:
+          case 0x0eb7:
+          case 0x0ebb:
+          case 0x0ecc:
+          case 0x0ecd:
+            return 'Above';
+
+          case 0x0ebc:
+            return 'Below';
+        }
+      } else if (codePoint === 0x0e3a) {
+        // virama
+        return 'Below_Right';
+      }
+    }
+
+    switch (combiningClass) {
+      // Hebrew
+
+      case 'CCC10': // sheva
+      case 'CCC11': // hataf segol
+      case 'CCC12': // hataf patah
+      case 'CCC13': // hataf qamats
+      case 'CCC14': // hiriq
+      case 'CCC15': // tsere
+      case 'CCC16': // segol
+      case 'CCC17': // patah
+      case 'CCC18': // qamats
+      case 'CCC20': // qubuts
+      case 'CCC22':
+        // meteg
+        return 'Below';
+
+      case 'CCC23':
+        // rafe
+        return 'Attached_Above';
+
+      case 'CCC24':
+        // shin dot
+        return 'Above_Right';
+
+      case 'CCC25': // sin dot
+      case 'CCC19':
+        // holam
+        return 'Above_Left';
+
+      case 'CCC26':
+        // point varika
+        return 'Above';
+
+      case 'CCC21':
+        // dagesh
+        break;
+
+      // Arabic and Syriac
+
+      case 'CCC27': // fathatan
+      case 'CCC28': // dammatan
+      case 'CCC30': // fatha
+      case 'CCC31': // damma
+      case 'CCC33': // shadda
+      case 'CCC34': // sukun
+      case 'CCC35': // superscript alef
+      case 'CCC36':
+        // superscript alaph
+        return 'Above';
+
+      case 'CCC29': // kasratan
+      case 'CCC32':
+        // kasra
+        return 'Below';
+
+      // Thai
+
+      case 'CCC103':
+        // sara u / sara uu
+        return 'Below_Right';
+
+      case 'CCC107':
+        // mai
+        return 'Above_Right';
+
+      // Lao
+
+      case 'CCC118':
+        // sign u / sign uu
+        return 'Below';
+
+      case 'CCC122':
+        // mai
+        return 'Above';
+
+      // Tibetan
+
+      case 'CCC129': // sign aa
+      case 'CCC132':
+        // sign u
+        return 'Below';
+
+      case 'CCC130':
+        // sign i
+        return 'Above';
+    }
+
+    return combiningClass;
+  };
+
+  return UnicodeLayoutEngine;
+}();
+
+/**
+ * Represents a glyph bounding box
+ */
+var BBox = function () {
+  function BBox() {
+    var minX = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Infinity;
+    var minY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Infinity;
+    var maxX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -Infinity;
+    var maxY = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -Infinity;
+
+    _classCallCheck(this, BBox);
+
+    /**
+     * The minimum X position in the bounding box
+     * @type {number}
+     */
+    this.minX = minX;
+
+    /**
+     * The minimum Y position in the bounding box
+     * @type {number}
+     */
+    this.minY = minY;
+
+    /**
+     * The maxmimum X position in the bounding box
+     * @type {number}
+     */
+    this.maxX = maxX;
+
+    /**
+     * The maxmimum Y position in the bounding box
+     * @type {number}
+     */
+    this.maxY = maxY;
+  }
+
+  /**
+   * The width of the bounding box
+   * @type {number}
+   */
+
+
+  BBox.prototype.addPoint = function addPoint(x, y) {
+    if (Math.abs(x) !== Infinity) {
+      if (x < this.minX) {
+        this.minX = x;
+      }
+
+      if (x > this.maxX) {
+        this.maxX = x;
+      }
+    }
+
+    if (Math.abs(y) !== Infinity) {
+      if (y < this.minY) {
+        this.minY = y;
+      }
+
+      if (y > this.maxY) {
+        this.maxY = y;
+      }
+    }
+  };
+
+  BBox.prototype.copy = function copy() {
+    return new BBox(this.minX, this.minY, this.maxX, this.maxY);
+  };
+
+  _createClass(BBox, [{
+    key: "width",
+    get: function get() {
+      return this.maxX - this.minX;
+    }
+
+    /**
+     * The height of the bounding box
+     * @type {number}
+     */
+
+  }, {
+    key: "height",
+    get: function get() {
+      return this.maxY - this.minY;
+    }
+  }]);
+
+  return BBox;
+}();
+
+// This maps the Unicode Script property to an OpenType script tag
+// Data from http://www.microsoft.com/typography/otspec/scripttags.htm
+// and http://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt.
+var UNICODE_SCRIPTS = {
+  Caucasian_Albanian: 'aghb',
+  Arabic: 'arab',
+  Imperial_Aramaic: 'armi',
+  Armenian: 'armn',
+  Avestan: 'avst',
+  Balinese: 'bali',
+  Bamum: 'bamu',
+  Bassa_Vah: 'bass',
+  Batak: 'batk',
+  Bengali: ['bng2', 'beng'],
+  Bopomofo: 'bopo',
+  Brahmi: 'brah',
+  Braille: 'brai',
+  Buginese: 'bugi',
+  Buhid: 'buhd',
+  Chakma: 'cakm',
+  Canadian_Aboriginal: 'cans',
+  Carian: 'cari',
+  Cham: 'cham',
+  Cherokee: 'cher',
+  Coptic: 'copt',
+  Cypriot: 'cprt',
+  Cyrillic: 'cyrl',
+  Devanagari: ['dev2', 'deva'],
+  Deseret: 'dsrt',
+  Duployan: 'dupl',
+  Egyptian_Hieroglyphs: 'egyp',
+  Elbasan: 'elba',
+  Ethiopic: 'ethi',
+  Georgian: 'geor',
+  Glagolitic: 'glag',
+  Gothic: 'goth',
+  Grantha: 'gran',
+  Greek: 'grek',
+  Gujarati: ['gjr2', 'gujr'],
+  Gurmukhi: ['gur2', 'guru'],
+  Hangul: 'hang',
+  Han: 'hani',
+  Hanunoo: 'hano',
+  Hebrew: 'hebr',
+  Hiragana: 'hira',
+  Pahawh_Hmong: 'hmng',
+  Katakana_Or_Hiragana: 'hrkt',
+  Old_Italic: 'ital',
+  Javanese: 'java',
+  Kayah_Li: 'kali',
+  Katakana: 'kana',
+  Kharoshthi: 'khar',
+  Khmer: 'khmr',
+  Khojki: 'khoj',
+  Kannada: ['knd2', 'knda'],
+  Kaithi: 'kthi',
+  Tai_Tham: 'lana',
+  Lao: 'lao ',
+  Latin: 'latn',
+  Lepcha: 'lepc',
+  Limbu: 'limb',
+  Linear_A: 'lina',
+  Linear_B: 'linb',
+  Lisu: 'lisu',
+  Lycian: 'lyci',
+  Lydian: 'lydi',
+  Mahajani: 'mahj',
+  Mandaic: 'mand',
+  Manichaean: 'mani',
+  Mende_Kikakui: 'mend',
+  Meroitic_Cursive: 'merc',
+  Meroitic_Hieroglyphs: 'mero',
+  Malayalam: ['mlm2', 'mlym'],
+  Modi: 'modi',
+  Mongolian: 'mong',
+  Mro: 'mroo',
+  Meetei_Mayek: 'mtei',
+  Myanmar: ['mym2', 'mymr'],
+  Old_North_Arabian: 'narb',
+  Nabataean: 'nbat',
+  Nko: 'nko ',
+  Ogham: 'ogam',
+  Ol_Chiki: 'olck',
+  Old_Turkic: 'orkh',
+  Oriya: ['ory2', 'orya'],
+  Osmanya: 'osma',
+  Palmyrene: 'palm',
+  Pau_Cin_Hau: 'pauc',
+  Old_Permic: 'perm',
+  Phags_Pa: 'phag',
+  Inscriptional_Pahlavi: 'phli',
+  Psalter_Pahlavi: 'phlp',
+  Phoenician: 'phnx',
+  Miao: 'plrd',
+  Inscriptional_Parthian: 'prti',
+  Rejang: 'rjng',
+  Runic: 'runr',
+  Samaritan: 'samr',
+  Old_South_Arabian: 'sarb',
+  Saurashtra: 'saur',
+  Shavian: 'shaw',
+  Sharada: 'shrd',
+  Siddham: 'sidd',
+  Khudawadi: 'sind',
+  Sinhala: 'sinh',
+  Sora_Sompeng: 'sora',
+  Sundanese: 'sund',
+  Syloti_Nagri: 'sylo',
+  Syriac: 'syrc',
+  Tagbanwa: 'tagb',
+  Takri: 'takr',
+  Tai_Le: 'tale',
+  New_Tai_Lue: 'talu',
+  Tamil: ['tml2', 'taml'],
+  Tai_Viet: 'tavt',
+  Telugu: ['tel2', 'telu'],
+  Tifinagh: 'tfng',
+  Tagalog: 'tglg',
+  Thaana: 'thaa',
+  Thai: 'thai',
+  Tibetan: 'tibt',
+  Tirhuta: 'tirh',
+  Ugaritic: 'ugar',
+  Vai: 'vai ',
+  Warang_Citi: 'wara',
+  Old_Persian: 'xpeo',
+  Cuneiform: 'xsux',
+  Yi: 'yi  ',
+  Inherited: 'zinh',
+  Common: 'zyyy',
+  Unknown: 'zzzz'
+};
+
+var OPENTYPE_SCRIPTS = {};
+for (var script in UNICODE_SCRIPTS) {
+  var tag = UNICODE_SCRIPTS[script];
+  if (Array.isArray(tag)) {
+    for (var _iterator = tag, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var t = _ref;
+
+      OPENTYPE_SCRIPTS[t] = script;
+    }
+  } else {
+    OPENTYPE_SCRIPTS[tag] = script;
+  }
+}
+
+function fromOpenType(tag) {
+  return OPENTYPE_SCRIPTS[tag];
+}
+
+function forString(string) {
+  var len = string.length;
+  var idx = 0;
+  while (idx < len) {
+    var code = string.charCodeAt(idx++);
+
+    // Check if this is a high surrogate
+    if (0xd800 <= code && code <= 0xdbff && idx < len) {
+      var next = string.charCodeAt(idx);
+
+      // Check if this is a low surrogate
+      if (0xdc00 <= next && next <= 0xdfff) {
+        idx++;
+        code = ((code & 0x3FF) << 10) + (next & 0x3FF) + 0x10000;
+      }
+    }
+
+    var _script = unicode.getScript(code);
+    if (_script !== 'Common' && _script !== 'Inherited' && _script !== 'Unknown') {
+      return UNICODE_SCRIPTS[_script];
+    }
+  }
+
+  return UNICODE_SCRIPTS.Unknown;
+}
+
+function forCodePoints(codePoints) {
+  for (var i = 0; i < codePoints.length; i++) {
+    var codePoint = codePoints[i];
+    var _script2 = unicode.getScript(codePoint);
+    if (_script2 !== 'Common' && _script2 !== 'Inherited' && _script2 !== 'Unknown') {
+      return UNICODE_SCRIPTS[_script2];
+    }
+  }
+
+  return UNICODE_SCRIPTS.Unknown;
+}
+
+// The scripts in this map are written from right to left
+var RTL = {
+  arab: true, // Arabic
+  hebr: true, // Hebrew
+  syrc: true, // Syriac
+  thaa: true, // Thaana
+  cprt: true, // Cypriot Syllabary
+  khar: true, // Kharosthi
+  phnx: true, // Phoenician
+  'nko ': true, // N'Ko
+  lydi: true, // Lydian
+  avst: true, // Avestan
+  armi: true, // Imperial Aramaic
+  phli: true, // Inscriptional Pahlavi
+  prti: true, // Inscriptional Parthian
+  sarb: true, // Old South Arabian
+  orkh: true, // Old Turkic, Orkhon Runic
+  samr: true, // Samaritan
+  mand: true, // Mandaic, Mandaean
+  merc: true, // Meroitic Cursive
+  mero: true, // Meroitic Hieroglyphs
+
+  // Unicode 7.0 (not listed on http://www.microsoft.com/typography/otspec/scripttags.htm)
+  mani: true, // Manichaean
+  mend: true, // Mende Kikakui
+  nbat: true, // Nabataean
+  narb: true, // Old North Arabian
+  palm: true, // Palmyrene
+  phlp: true // Psalter Pahlavi
+};
+
+function direction(script) {
+  if (RTL[script]) {
+    return 'rtl';
+  }
+
+  return 'ltr';
+}
+
+/**
+ * Represents a run of Glyph and GlyphPosition objects.
+ * Returned by the font layout method.
+ */
+
+var GlyphRun = function () {
+  function GlyphRun(glyphs, features, script, language, direction$$) {
+    _classCallCheck(this, GlyphRun);
+
+    /**
+     * An array of Glyph objects in the run
+     * @type {Glyph[]}
+     */
+    this.glyphs = glyphs;
+
+    /**
+     * An array of GlyphPosition objects for each glyph in the run
+     * @type {GlyphPosition[]}
+     */
+    this.positions = null;
+
+    /**
+     * The script that was requested for shaping. This was either passed in or detected automatically.
+     * @type {string}
+     */
+    this.script = script;
+
+    /**
+     * The language requested for shaping, as passed in. If `null`, the default language for the
+     * script was used.
+     * @type {string}
+     */
+    this.language = language || null;
+
+    /**
+     * The direction requested for shaping, as passed in (either ltr or rtl).
+     * If `null`, the default direction of the script is used.
+     * @type {string}
+     */
+    this.direction = direction$$ || direction(script);
+
+    /**
+     * The features requested during shaping. This is a combination of user
+     * specified features and features chosen by the shaper.
+     * @type {object}
+     */
+    this.features = {};
+
+    // Convert features to an object
+    if (Array.isArray(features)) {
+      for (var _iterator = features, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var tag = _ref;
+
+        this.features[tag] = true;
+      }
+    } else if ((typeof features === 'undefined' ? 'undefined' : _typeof(features)) === 'object') {
+      this.features = features;
+    }
+  }
+
+  /**
+   * The total advance width of the run.
+   * @type {number}
+   */
+
+
+  _createClass(GlyphRun, [{
+    key: 'advanceWidth',
+    get: function get() {
+      var width = 0;
+      for (var _iterator2 = this.positions, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var position = _ref2;
+
+        width += position.xAdvance;
+      }
+
+      return width;
+    }
+
+    /**
+     * The total advance height of the run.
+     * @type {number}
+     */
+
+  }, {
+    key: 'advanceHeight',
+    get: function get() {
+      var height = 0;
+      for (var _iterator3 = this.positions, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref3 = _i3.value;
+        }
+
+        var position = _ref3;
+
+        height += position.yAdvance;
+      }
+
+      return height;
+    }
+
+    /**
+     * The bounding box containing all glyphs in the run.
+     * @type {BBox}
+     */
+
+  }, {
+    key: 'bbox',
+    get: function get() {
+      var bbox = new BBox();
+
+      var x = 0;
+      var y = 0;
+      for (var index = 0; index < this.glyphs.length; index++) {
+        var glyph = this.glyphs[index];
+        var p = this.positions[index];
+        var b = glyph.bbox;
+
+        bbox.addPoint(b.minX + x + p.xOffset, b.minY + y + p.yOffset);
+        bbox.addPoint(b.maxX + x + p.xOffset, b.maxY + y + p.yOffset);
+
+        x += p.xAdvance;
+        y += p.yAdvance;
+      }
+
+      return bbox;
+    }
+  }]);
+
+  return GlyphRun;
+}();
+
+/**
+ * Represents positioning information for a glyph in a GlyphRun.
+ */
+var GlyphPosition = function GlyphPosition() {
+  var xAdvance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+  var yAdvance = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+  var xOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+  var yOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+
+  _classCallCheck(this, GlyphPosition);
+
+  /**
+   * The amount to move the virtual pen in the X direction after rendering this glyph.
+   * @type {number}
+   */
+  this.xAdvance = xAdvance;
+
+  /**
+   * The amount to move the virtual pen in the Y direction after rendering this glyph.
+   * @type {number}
+   */
+  this.yAdvance = yAdvance;
+
+  /**
+   * The offset from the pen position in the X direction at which to render this glyph.
+   * @type {number}
+   */
+  this.xOffset = xOffset;
+
+  /**
+   * The offset from the pen position in the Y direction at which to render this glyph.
+   * @type {number}
+   */
+  this.yOffset = yOffset;
+};
+
+// see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html
+// and /System/Library/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h on a Mac
+var features = {
+  allTypographicFeatures: {
+    code: 0,
+    exclusive: false,
+    allTypeFeatures: 0
+  },
+  ligatures: {
+    code: 1,
+    exclusive: false,
+    requiredLigatures: 0,
+    commonLigatures: 2,
+    rareLigatures: 4,
+    // logos: 6
+    rebusPictures: 8,
+    diphthongLigatures: 10,
+    squaredLigatures: 12,
+    abbrevSquaredLigatures: 14,
+    symbolLigatures: 16,
+    contextualLigatures: 18,
+    historicalLigatures: 20
+  },
+  cursiveConnection: {
+    code: 2,
+    exclusive: true,
+    unconnected: 0,
+    partiallyConnected: 1,
+    cursive: 2
+  },
+  letterCase: {
+    code: 3,
+    exclusive: true
+  },
+  // upperAndLowerCase: 0          # deprecated
+  // allCaps: 1                    # deprecated
+  // allLowerCase: 2               # deprecated
+  // smallCaps: 3                  # deprecated
+  // initialCaps: 4                # deprecated
+  // initialCapsAndSmallCaps: 5    # deprecated
+  verticalSubstitution: {
+    code: 4,
+    exclusive: false,
+    substituteVerticalForms: 0
+  },
+  linguisticRearrangement: {
+    code: 5,
+    exclusive: false,
+    linguisticRearrangement: 0
+  },
+  numberSpacing: {
+    code: 6,
+    exclusive: true,
+    monospacedNumbers: 0,
+    proportionalNumbers: 1,
+    thirdWidthNumbers: 2,
+    quarterWidthNumbers: 3
+  },
+  smartSwash: {
+    code: 8,
+    exclusive: false,
+    wordInitialSwashes: 0,
+    wordFinalSwashes: 2,
+    // lineInitialSwashes: 4
+    // lineFinalSwashes: 6
+    nonFinalSwashes: 8
+  },
+  diacritics: {
+    code: 9,
+    exclusive: true,
+    showDiacritics: 0,
+    hideDiacritics: 1,
+    decomposeDiacritics: 2
+  },
+  verticalPosition: {
+    code: 10,
+    exclusive: true,
+    normalPosition: 0,
+    superiors: 1,
+    inferiors: 2,
+    ordinals: 3,
+    scientificInferiors: 4
+  },
+  fractions: {
+    code: 11,
+    exclusive: true,
+    noFractions: 0,
+    verticalFractions: 1,
+    diagonalFractions: 2
+  },
+  overlappingCharacters: {
+    code: 13,
+    exclusive: false,
+    preventOverlap: 0
+  },
+  typographicExtras: {
+    code: 14,
+    exclusive: false,
+    // hyphensToEmDash: 0
+    // hyphenToEnDash: 2
+    slashedZero: 4
+  },
+  // formInterrobang: 6
+  // smartQuotes: 8
+  // periodsToEllipsis: 10
+  mathematicalExtras: {
+    code: 15,
+    exclusive: false,
+    // hyphenToMinus: 0
+    // asteristoMultiply: 2
+    // slashToDivide: 4
+    // inequalityLigatures: 6
+    // exponents: 8
+    mathematicalGreek: 10
+  },
+  ornamentSets: {
+    code: 16,
+    exclusive: true,
+    noOrnaments: 0,
+    dingbats: 1,
+    piCharacters: 2,
+    fleurons: 3,
+    decorativeBorders: 4,
+    internationalSymbols: 5,
+    mathSymbols: 6
+  },
+  characterAlternatives: {
+    code: 17,
+    exclusive: true,
+    noAlternates: 0
+  },
+  // user defined options
+  designComplexity: {
+    code: 18,
+    exclusive: true,
+    designLevel1: 0,
+    designLevel2: 1,
+    designLevel3: 2,
+    designLevel4: 3,
+    designLevel5: 4
+  },
+  styleOptions: {
+    code: 19,
+    exclusive: true,
+    noStyleOptions: 0,
+    displayText: 1,
+    engravedText: 2,
+    illuminatedCaps: 3,
+    titlingCaps: 4,
+    tallCaps: 5
+  },
+  characterShape: {
+    code: 20,
+    exclusive: true,
+    traditionalCharacters: 0,
+    simplifiedCharacters: 1,
+    JIS1978Characters: 2,
+    JIS1983Characters: 3,
+    JIS1990Characters: 4,
+    traditionalAltOne: 5,
+    traditionalAltTwo: 6,
+    traditionalAltThree: 7,
+    traditionalAltFour: 8,
+    traditionalAltFive: 9,
+    expertCharacters: 10,
+    JIS2004Characters: 11,
+    hojoCharacters: 12,
+    NLCCharacters: 13,
+    traditionalNamesCharacters: 14
+  },
+  numberCase: {
+    code: 21,
+    exclusive: true,
+    lowerCaseNumbers: 0,
+    upperCaseNumbers: 1
+  },
+  textSpacing: {
+    code: 22,
+    exclusive: true,
+    proportionalText: 0,
+    monospacedText: 1,
+    halfWidthText: 2,
+    thirdWidthText: 3,
+    quarterWidthText: 4,
+    altProportionalText: 5,
+    altHalfWidthText: 6
+  },
+  transliteration: {
+    code: 23,
+    exclusive: true,
+    noTransliteration: 0
+  },
+  // hanjaToHangul: 1
+  // hiraganaToKatakana: 2
+  // katakanaToHiragana: 3
+  // kanaToRomanization: 4
+  // romanizationToHiragana: 5
+  // romanizationToKatakana: 6
+  // hanjaToHangulAltOne: 7
+  // hanjaToHangulAltTwo: 8
+  // hanjaToHangulAltThree: 9
+  annotation: {
+    code: 24,
+    exclusive: true,
+    noAnnotation: 0,
+    boxAnnotation: 1,
+    roundedBoxAnnotation: 2,
+    circleAnnotation: 3,
+    invertedCircleAnnotation: 4,
+    parenthesisAnnotation: 5,
+    periodAnnotation: 6,
+    romanNumeralAnnotation: 7,
+    diamondAnnotation: 8,
+    invertedBoxAnnotation: 9,
+    invertedRoundedBoxAnnotation: 10
+  },
+  kanaSpacing: {
+    code: 25,
+    exclusive: true,
+    fullWidthKana: 0,
+    proportionalKana: 1
+  },
+  ideographicSpacing: {
+    code: 26,
+    exclusive: true,
+    fullWidthIdeographs: 0,
+    proportionalIdeographs: 1,
+    halfWidthIdeographs: 2
+  },
+  unicodeDecomposition: {
+    code: 27,
+    exclusive: false,
+    canonicalComposition: 0,
+    compatibilityComposition: 2,
+    transcodingComposition: 4
+  },
+  rubyKana: {
+    code: 28,
+    exclusive: false,
+    // noRubyKana: 0     # deprecated - use rubyKanaOff instead
+    // rubyKana: 1     # deprecated - use rubyKanaOn instead
+    rubyKana: 2
+  },
+  CJKSymbolAlternatives: {
+    code: 29,
+    exclusive: true,
+    noCJKSymbolAlternatives: 0,
+    CJKSymbolAltOne: 1,
+    CJKSymbolAltTwo: 2,
+    CJKSymbolAltThree: 3,
+    CJKSymbolAltFour: 4,
+    CJKSymbolAltFive: 5
+  },
+  ideographicAlternatives: {
+    code: 30,
+    exclusive: true,
+    noIdeographicAlternatives: 0,
+    ideographicAltOne: 1,
+    ideographicAltTwo: 2,
+    ideographicAltThree: 3,
+    ideographicAltFour: 4,
+    ideographicAltFive: 5
+  },
+  CJKVerticalRomanPlacement: {
+    code: 31,
+    exclusive: true,
+    CJKVerticalRomanCentered: 0,
+    CJKVerticalRomanHBaseline: 1
+  },
+  italicCJKRoman: {
+    code: 32,
+    exclusive: false,
+    // noCJKItalicRoman: 0     # deprecated - use CJKItalicRomanOff instead
+    // CJKItalicRoman: 1     # deprecated - use CJKItalicRomanOn instead
+    CJKItalicRoman: 2
+  },
+  caseSensitiveLayout: {
+    code: 33,
+    exclusive: false,
+    caseSensitiveLayout: 0,
+    caseSensitiveSpacing: 2
+  },
+  alternateKana: {
+    code: 34,
+    exclusive: false,
+    alternateHorizKana: 0,
+    alternateVertKana: 2
+  },
+  stylisticAlternatives: {
+    code: 35,
+    exclusive: false,
+    noStylisticAlternates: 0,
+    stylisticAltOne: 2,
+    stylisticAltTwo: 4,
+    stylisticAltThree: 6,
+    stylisticAltFour: 8,
+    stylisticAltFive: 10,
+    stylisticAltSix: 12,
+    stylisticAltSeven: 14,
+    stylisticAltEight: 16,
+    stylisticAltNine: 18,
+    stylisticAltTen: 20,
+    stylisticAltEleven: 22,
+    stylisticAltTwelve: 24,
+    stylisticAltThirteen: 26,
+    stylisticAltFourteen: 28,
+    stylisticAltFifteen: 30,
+    stylisticAltSixteen: 32,
+    stylisticAltSeventeen: 34,
+    stylisticAltEighteen: 36,
+    stylisticAltNineteen: 38,
+    stylisticAltTwenty: 40
+  },
+  contextualAlternates: {
+    code: 36,
+    exclusive: false,
+    contextualAlternates: 0,
+    swashAlternates: 2,
+    contextualSwashAlternates: 4
+  },
+  lowerCase: {
+    code: 37,
+    exclusive: true,
+    defaultLowerCase: 0,
+    lowerCaseSmallCaps: 1,
+    lowerCasePetiteCaps: 2
+  },
+  upperCase: {
+    code: 38,
+    exclusive: true,
+    defaultUpperCase: 0,
+    upperCaseSmallCaps: 1,
+    upperCasePetiteCaps: 2
+  },
+  languageTag: { // indices into ltag table
+    code: 39,
+    exclusive: true
+  },
+  CJKRomanSpacing: {
+    code: 103,
+    exclusive: true,
+    halfWidthCJKRoman: 0,
+    proportionalCJKRoman: 1,
+    defaultCJKRoman: 2,
+    fullWidthCJKRoman: 3
+  }
+};
+
+var feature = function feature(name, selector) {
+  return [features[name].code, features[name][selector]];
+};
+
+var OTMapping = {
+  rlig: feature('ligatures', 'requiredLigatures'),
+  clig: feature('ligatures', 'contextualLigatures'),
+  dlig: feature('ligatures', 'rareLigatures'),
+  hlig: feature('ligatures', 'historicalLigatures'),
+  liga: feature('ligatures', 'commonLigatures'),
+  hist: feature('ligatures', 'historicalLigatures'), // ??
+
+  smcp: feature('lowerCase', 'lowerCaseSmallCaps'),
+  pcap: feature('lowerCase', 'lowerCasePetiteCaps'),
+
+  frac: feature('fractions', 'diagonalFractions'),
+  dnom: feature('fractions', 'diagonalFractions'), // ??
+  numr: feature('fractions', 'diagonalFractions'), // ??
+  afrc: feature('fractions', 'verticalFractions'),
+  // aalt
+  // abvf, abvm, abvs, akhn, blwf, blwm, blws, cfar, cjct, cpsp, falt, isol, jalt, ljmo, mset?
+  // ltra, ltrm, nukt, pref, pres, pstf, psts, rand, rkrf, rphf, rtla, rtlm, size, tjmo, tnum?
+  // unic, vatu, vhal, vjmo, vpal, vrt2
+  // dist -> trak table?
+  // kern, vkrn -> kern table
+  // lfbd + opbd + rtbd -> opbd table?
+  // mark, mkmk -> acnt table?
+  // locl -> languageTag + ltag table
+
+  case: feature('caseSensitiveLayout', 'caseSensitiveLayout'), // also caseSensitiveSpacing
+  ccmp: feature('unicodeDecomposition', 'canonicalComposition'), // compatibilityComposition?
+  cpct: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'), // guess..., probably not given below
+  valt: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),
+  swsh: feature('contextualAlternates', 'swashAlternates'),
+  cswh: feature('contextualAlternates', 'contextualSwashAlternates'),
+  curs: feature('cursiveConnection', 'cursive'), // ??
+  c2pc: feature('upperCase', 'upperCasePetiteCaps'),
+  c2sc: feature('upperCase', 'upperCaseSmallCaps'),
+
+  init: feature('smartSwash', 'wordInitialSwashes'), // ??
+  fin2: feature('smartSwash', 'wordFinalSwashes'), // ??
+  medi: feature('smartSwash', 'nonFinalSwashes'), // ??
+  med2: feature('smartSwash', 'nonFinalSwashes'), // ??
+  fin3: feature('smartSwash', 'wordFinalSwashes'), // ??
+  fina: feature('smartSwash', 'wordFinalSwashes'), // ??
+
+  pkna: feature('kanaSpacing', 'proportionalKana'),
+  half: feature('textSpacing', 'halfWidthText'), // also HalfWidthCJKRoman, HalfWidthIdeographs?
+  halt: feature('textSpacing', 'altHalfWidthText'),
+
+  hkna: feature('alternateKana', 'alternateHorizKana'),
+  vkna: feature('alternateKana', 'alternateVertKana'),
+  // hngl: feature 'transliteration', 'hanjaToHangulSelector' # deprecated
+
+  ital: feature('italicCJKRoman', 'CJKItalicRoman'),
+  lnum: feature('numberCase', 'upperCaseNumbers'),
+  onum: feature('numberCase', 'lowerCaseNumbers'),
+  mgrk: feature('mathematicalExtras', 'mathematicalGreek'),
+
+  // nalt: not enough info. what type of annotation?
+  // ornm: ditto, which ornament style?
+
+  calt: feature('contextualAlternates', 'contextualAlternates'), // or more?
+  vrt2: feature('verticalSubstitution', 'substituteVerticalForms'), // oh... below?
+  vert: feature('verticalSubstitution', 'substituteVerticalForms'),
+  tnum: feature('numberSpacing', 'monospacedNumbers'),
+  pnum: feature('numberSpacing', 'proportionalNumbers'),
+  sups: feature('verticalPosition', 'superiors'),
+  subs: feature('verticalPosition', 'inferiors'),
+  ordn: feature('verticalPosition', 'ordinals'),
+  pwid: feature('textSpacing', 'proportionalText'),
+  hwid: feature('textSpacing', 'halfWidthText'),
+  qwid: feature('textSpacing', 'quarterWidthText'), // also QuarterWidthNumbers?
+  twid: feature('textSpacing', 'thirdWidthText'), // also ThirdWidthNumbers?
+  fwid: feature('textSpacing', 'proportionalText'), //??
+  palt: feature('textSpacing', 'altProportionalText'),
+  trad: feature('characterShape', 'traditionalCharacters'),
+  smpl: feature('characterShape', 'simplifiedCharacters'),
+  jp78: feature('characterShape', 'JIS1978Characters'),
+  jp83: feature('characterShape', 'JIS1983Characters'),
+  jp90: feature('characterShape', 'JIS1990Characters'),
+  jp04: feature('characterShape', 'JIS2004Characters'),
+  expt: feature('characterShape', 'expertCharacters'),
+  hojo: feature('characterShape', 'hojoCharacters'),
+  nlck: feature('characterShape', 'NLCCharacters'),
+  tnam: feature('characterShape', 'traditionalNamesCharacters'),
+  ruby: feature('rubyKana', 'rubyKana'),
+  titl: feature('styleOptions', 'titlingCaps'),
+  zero: feature('typographicExtras', 'slashedZero'),
+
+  ss01: feature('stylisticAlternatives', 'stylisticAltOne'),
+  ss02: feature('stylisticAlternatives', 'stylisticAltTwo'),
+  ss03: feature('stylisticAlternatives', 'stylisticAltThree'),
+  ss04: feature('stylisticAlternatives', 'stylisticAltFour'),
+  ss05: feature('stylisticAlternatives', 'stylisticAltFive'),
+  ss06: feature('stylisticAlternatives', 'stylisticAltSix'),
+  ss07: feature('stylisticAlternatives', 'stylisticAltSeven'),
+  ss08: feature('stylisticAlternatives', 'stylisticAltEight'),
+  ss09: feature('stylisticAlternatives', 'stylisticAltNine'),
+  ss10: feature('stylisticAlternatives', 'stylisticAltTen'),
+  ss11: feature('stylisticAlternatives', 'stylisticAltEleven'),
+  ss12: feature('stylisticAlternatives', 'stylisticAltTwelve'),
+  ss13: feature('stylisticAlternatives', 'stylisticAltThirteen'),
+  ss14: feature('stylisticAlternatives', 'stylisticAltFourteen'),
+  ss15: feature('stylisticAlternatives', 'stylisticAltFifteen'),
+  ss16: feature('stylisticAlternatives', 'stylisticAltSixteen'),
+  ss17: feature('stylisticAlternatives', 'stylisticAltSeventeen'),
+  ss18: feature('stylisticAlternatives', 'stylisticAltEighteen'),
+  ss19: feature('stylisticAlternatives', 'stylisticAltNineteen'),
+  ss20: feature('stylisticAlternatives', 'stylisticAltTwenty')
+};
+
+// salt: feature 'stylisticAlternatives', 'stylisticAltOne' # hmm, which one to choose
+
+// Add cv01-cv99 features
+for (var i = 1; i <= 99; i++) {
+  OTMapping['cv' + ('00' + i).slice(-2)] = [features.characterAlternatives.code, i];
+}
+
+// create inverse mapping
+var AATMapping = {};
+for (var ot in OTMapping) {
+  var aat = OTMapping[ot];
+  if (AATMapping[aat[0]] == null) {
+    AATMapping[aat[0]] = {};
+  }
+
+  AATMapping[aat[0]][aat[1]] = ot;
+}
+
+// Maps an array of OpenType features to AAT features
+// in the form of {featureType:{featureSetting:true}}
+function mapOTToAAT(features) {
+  var res = {};
+  for (var k in features) {
+    var r = void 0;
+    if (r = OTMapping[k]) {
+      if (res[r[0]] == null) {
+        res[r[0]] = {};
+      }
+
+      res[r[0]][r[1]] = features[k];
+    }
+  }
+
+  return res;
+}
+
+// Maps strings in a [featureType, featureSetting]
+// to their equivalent number codes
+function mapFeatureStrings(f) {
+  var type = f[0],
+      setting = f[1];
+
+  if (isNaN(type)) {
+    var typeCode = features[type] && features[type].code;
+  } else {
+    var typeCode = type;
+  }
+
+  if (isNaN(setting)) {
+    var settingCode = features[type] && features[type][setting];
+  } else {
+    var settingCode = setting;
+  }
+
+  return [typeCode, settingCode];
+}
+
+// Maps AAT features to an array of OpenType features
+// Supports both arrays in the form of [[featureType, featureSetting]]
+// and objects in the form of {featureType:{featureSetting:true}}
+// featureTypes and featureSettings can be either strings or number codes
+function mapAATToOT(features) {
+  var res = {};
+  if (Array.isArray(features)) {
+    for (var k = 0; k < features.length; k++) {
+      var r = void 0;
+      var f = mapFeatureStrings(features[k]);
+      if (r = AATMapping[f[0]] && AATMapping[f[0]][f[1]]) {
+        res[r] = true;
+      }
+    }
+  } else if ((typeof features === 'undefined' ? 'undefined' : _typeof(features)) === 'object') {
+    for (var type in features) {
+      var _feature = features[type];
+      for (var setting in _feature) {
+        var _r = void 0;
+        var _f = mapFeatureStrings([type, setting]);
+        if (_feature[setting] && (_r = AATMapping[_f[0]] && AATMapping[_f[0]][_f[1]])) {
+          res[_r] = true;
+        }
+      }
+    }
+  }
+
+  return _Object$keys(res);
+}
+
+var _class$3;
+function _applyDecoratedDescriptor$3(target, property, decorators, descriptor, context) {
+  var desc = {};
+  Object['ke' + 'ys'](descriptor).forEach(function (key) {
+    desc[key] = descriptor[key];
+  });
+  desc.enumerable = !!desc.enumerable;
+  desc.configurable = !!desc.configurable;
+
+  if ('value' in desc || desc.initializer) {
+    desc.writable = true;
+  }
+
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+    return decorator(target, property, desc) || desc;
+  }, desc);
+
+  if (context && desc.initializer !== void 0) {
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+    desc.initializer = undefined;
+  }
+
+  if (desc.initializer === void 0) {
+    Object['define' + 'Property'](target, property, desc);
+    desc = null;
+  }
+
+  return desc;
+}
+
+var AATLookupTable = (_class$3 = function () {
+  function AATLookupTable(table) {
+    _classCallCheck(this, AATLookupTable);
+
+    this.table = table;
+  }
+
+  AATLookupTable.prototype.lookup = function lookup(glyph) {
+    switch (this.table.version) {
+      case 0:
+        // simple array format
+        return this.table.values.getItem(glyph);
+
+      case 2: // segment format
+      case 4:
+        {
+          var min = 0;
+          var max = this.table.binarySearchHeader.nUnits - 1;
+
+          while (min <= max) {
+            var mid = min + max >> 1;
+            var seg = this.table.segments[mid];
+
+            // special end of search value
+            if (seg.firstGlyph === 0xffff) {
+              return null;
+            }
+
+            if (glyph < seg.firstGlyph) {
+              max = mid - 1;
+            } else if (glyph > seg.lastGlyph) {
+              min = mid + 1;
+            } else {
+              if (this.table.version === 2) {
+                return seg.value;
+              } else {
+                return seg.values[glyph - seg.firstGlyph];
+              }
+            }
+          }
+
+          return null;
+        }
+
+      case 6:
+        {
+          // lookup single
+          var _min = 0;
+          var _max = this.table.binarySearchHeader.nUnits - 1;
+
+          while (_min <= _max) {
+            var mid = _min + _max >> 1;
+            var seg = this.table.segments[mid];
+
+            // special end of search value
+            if (seg.glyph === 0xffff) {
+              return null;
+            }
+
+            if (glyph < seg.glyph) {
+              _max = mid - 1;
+            } else if (glyph > seg.glyph) {
+              _min = mid + 1;
+            } else {
+              return seg.value;
+            }
+          }
+
+          return null;
+        }
+
+      case 8:
+        // lookup trimmed
+        return this.table.values[glyph - this.table.firstGlyph];
+
+      default:
+        throw new Error('Unknown lookup table format: ' + this.table.version);
+    }
+  };
+
+  AATLookupTable.prototype.glyphsForValue = function glyphsForValue(classValue) {
+    var res = [];
+
+    switch (this.table.version) {
+      case 2: // segment format
+      case 4:
+        {
+          for (var _iterator = this.table.segments, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+            var _ref;
+
+            if (_isArray) {
+              if (_i >= _iterator.length) break;
+              _ref = _iterator[_i++];
+            } else {
+              _i = _iterator.next();
+              if (_i.done) break;
+              _ref = _i.value;
+            }
+
+            var segment = _ref;
+
+            if (this.table.version === 2 && segment.value === classValue) {
+              res.push.apply(res, range(segment.firstGlyph, segment.lastGlyph + 1));
+            } else {
+              for (var index = 0; index < segment.values.length; index++) {
+                if (segment.values[index] === classValue) {
+                  res.push(segment.firstGlyph + index);
+                }
+              }
+            }
+          }
+
+          break;
+        }
+
+      case 6:
+        {
+          // lookup single
+          for (var _iterator2 = this.table.segments, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+            var _ref2;
+
+            if (_isArray2) {
+              if (_i2 >= _iterator2.length) break;
+              _ref2 = _iterator2[_i2++];
+            } else {
+              _i2 = _iterator2.next();
+              if (_i2.done) break;
+              _ref2 = _i2.value;
+            }
+
+            var _segment = _ref2;
+
+            if (_segment.value === classValue) {
+              res.push(_segment.glyph);
+            }
+          }
+
+          break;
+        }
+
+      case 8:
+        {
+          // lookup trimmed
+          for (var i = 0; i < this.table.values.length; i++) {
+            if (this.table.values[i] === classValue) {
+              res.push(this.table.firstGlyph + i);
+            }
+          }
+
+          break;
+        }
+
+      default:
+        throw new Error('Unknown lookup table format: ' + this.table.version);
+    }
+
+    return res;
+  };
+
+  return AATLookupTable;
+}(), (_applyDecoratedDescriptor$3(_class$3.prototype, 'glyphsForValue', [cache], _Object$getOwnPropertyDescriptor(_class$3.prototype, 'glyphsForValue'), _class$3.prototype)), _class$3);
+
+var START_OF_TEXT_STATE = 0;
+var END_OF_TEXT_CLASS = 0;
+var OUT_OF_BOUNDS_CLASS = 1;
+var DELETED_GLYPH_CLASS = 2;
+var DONT_ADVANCE = 0x4000;
+
+var AATStateMachine = function () {
+  function AATStateMachine(stateTable) {
+    _classCallCheck(this, AATStateMachine);
+
+    this.stateTable = stateTable;
+    this.lookupTable = new AATLookupTable(stateTable.classTable);
+  }
+
+  AATStateMachine.prototype.process = function process(glyphs, reverse, processEntry) {
+    var currentState = START_OF_TEXT_STATE; // START_OF_LINE_STATE is used for kashida glyph insertions sometimes I think?
+    var index = reverse ? glyphs.length - 1 : 0;
+    var dir = reverse ? -1 : 1;
+
+    while (dir === 1 && index <= glyphs.length || dir === -1 && index >= -1) {
+      var glyph = null;
+      var classCode = OUT_OF_BOUNDS_CLASS;
+      var shouldAdvance = true;
+
+      if (index === glyphs.length || index === -1) {
+        classCode = END_OF_TEXT_CLASS;
+      } else {
+        glyph = glyphs[index];
+        if (glyph.id === 0xffff) {
+          // deleted glyph
+          classCode = DELETED_GLYPH_CLASS;
+        } else {
+          classCode = this.lookupTable.lookup(glyph.id);
+          if (classCode == null) {
+            classCode = OUT_OF_BOUNDS_CLASS;
+          }
+        }
+      }
+
+      var row = this.stateTable.stateArray.getItem(currentState);
+      var entryIndex = row[classCode];
+      var entry = this.stateTable.entryTable.getItem(entryIndex);
+
+      if (classCode !== END_OF_TEXT_CLASS && classCode !== DELETED_GLYPH_CLASS) {
+        processEntry(glyph, entry, index);
+        shouldAdvance = !(entry.flags & DONT_ADVANCE);
+      }
+
+      currentState = entry.newState;
+      if (shouldAdvance) {
+        index += dir;
+      }
+    }
+
+    return glyphs;
+  };
+
+  /**
+   * Performs a depth-first traversal of the glyph strings
+   * represented by the state machine.
+   */
+
+
+  AATStateMachine.prototype.traverse = function traverse(opts) {
+    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+    var visited = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new _Set();
+
+    if (visited.has(state)) {
+      return;
+    }
+
+    visited.add(state);
+
+    var _stateTable = this.stateTable,
+        nClasses = _stateTable.nClasses,
+        stateArray = _stateTable.stateArray,
+        entryTable = _stateTable.entryTable;
+
+    var row = stateArray.getItem(state);
+
+    // Skip predefined classes
+    for (var classCode = 4; classCode < nClasses; classCode++) {
+      var entryIndex = row[classCode];
+      var entry = entryTable.getItem(entryIndex);
+
+      // Try all glyphs in the class
+      for (var _iterator = this.lookupTable.glyphsForValue(classCode), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var glyph = _ref;
+
+        if (opts.enter) {
+          opts.enter(glyph, entry);
+        }
+
+        if (entry.newState !== 0) {
+          this.traverse(opts, entry.newState, visited);
+        }
+
+        if (opts.exit) {
+          opts.exit(glyph, entry);
+        }
+      }
+    }
+  };
+
+  return AATStateMachine;
+}();
+
+var _class$2;
+function _applyDecoratedDescriptor$2(target, property, decorators, descriptor, context) {
+  var desc = {};
+  Object['ke' + 'ys'](descriptor).forEach(function (key) {
+    desc[key] = descriptor[key];
+  });
+  desc.enumerable = !!desc.enumerable;
+  desc.configurable = !!desc.configurable;
+
+  if ('value' in desc || desc.initializer) {
+    desc.writable = true;
+  }
+
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+    return decorator(target, property, desc) || desc;
+  }, desc);
+
+  if (context && desc.initializer !== void 0) {
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+    desc.initializer = undefined;
+  }
+
+  if (desc.initializer === void 0) {
+    Object['define' + 'Property'](target, property, desc);
+    desc = null;
+  }
+
+  return desc;
+}
+
+// indic replacement flags
+var MARK_FIRST = 0x8000;
+var MARK_LAST = 0x2000;
+var VERB = 0x000F;
+
+// contextual substitution and glyph insertion flag
+var SET_MARK = 0x8000;
+
+// ligature entry flags
+var SET_COMPONENT = 0x8000;
+var PERFORM_ACTION = 0x2000;
+
+// ligature action masks
+var LAST_MASK = 0x80000000;
+var STORE_MASK = 0x40000000;
+var OFFSET_MASK = 0x3FFFFFFF;
+
+var REVERSE_DIRECTION = 0x400000;
+var CURRENT_INSERT_BEFORE = 0x0800;
+var MARKED_INSERT_BEFORE = 0x0400;
+var CURRENT_INSERT_COUNT = 0x03E0;
+var MARKED_INSERT_COUNT = 0x001F;
+
+var AATMorxProcessor = (_class$2 = function () {
+  function AATMorxProcessor(font) {
+    _classCallCheck(this, AATMorxProcessor);
+
+    this.processIndicRearragement = this.processIndicRearragement.bind(this);
+    this.processContextualSubstitution = this.processContextualSubstitution.bind(this);
+    this.processLigature = this.processLigature.bind(this);
+    this.processNoncontextualSubstitutions = this.processNoncontextualSubstitutions.bind(this);
+    this.processGlyphInsertion = this.processGlyphInsertion.bind(this);
+    this.font = font;
+    this.morx = font.morx;
+    this.inputCache = null;
+  }
+
+  // Processes an array of glyphs and applies the specified features
+  // Features should be in the form of {featureType:{featureSetting:true}}
+
+
+  AATMorxProcessor.prototype.process = function process(glyphs) {
+    var features = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+    for (var _iterator = this.morx.chains, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var chain = _ref;
+
+      var flags = chain.defaultFlags;
+
+      // enable/disable the requested features
+      for (var _iterator2 = chain.features, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var feature = _ref2;
+
+        var f = void 0;
+        if ((f = features[feature.featureType]) && f[feature.featureSetting]) {
+          flags &= feature.disableFlags;
+          flags |= feature.enableFlags;
+        }
+      }
+
+      for (var _iterator3 = chain.subtables, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref3 = _i3.value;
+        }
+
+        var subtable = _ref3;
+
+        if (subtable.subFeatureFlags & flags) {
+          this.processSubtable(subtable, glyphs);
+        }
+      }
+    }
+
+    // remove deleted glyphs
+    var index = glyphs.length - 1;
+    while (index >= 0) {
+      if (glyphs[index].id === 0xffff) {
+        glyphs.splice(index, 1);
+      }
+
+      index--;
+    }
+
+    return glyphs;
+  };
+
+  AATMorxProcessor.prototype.processSubtable = function processSubtable(subtable, glyphs) {
+    this.subtable = subtable;
+    this.glyphs = glyphs;
+    if (this.subtable.type === 4) {
+      this.processNoncontextualSubstitutions(this.subtable, this.glyphs);
+      return;
+    }
+
+    this.ligatureStack = [];
+    this.markedGlyph = null;
+    this.firstGlyph = null;
+    this.lastGlyph = null;
+    this.markedIndex = null;
+
+    var stateMachine = this.getStateMachine(subtable);
+    var process = this.getProcessor();
+
+    var reverse = !!(this.subtable.coverage & REVERSE_DIRECTION);
+    return stateMachine.process(this.glyphs, reverse, process);
+  };
+
+  AATMorxProcessor.prototype.getStateMachine = function getStateMachine(subtable) {
+    return new AATStateMachine(subtable.table.stateTable);
+  };
+
+  AATMorxProcessor.prototype.getProcessor = function getProcessor() {
+    switch (this.subtable.type) {
+      case 0:
+        return this.processIndicRearragement;
+      case 1:
+        return this.processContextualSubstitution;
+      case 2:
+        return this.processLigature;
+      case 4:
+        return this.processNoncontextualSubstitutions;
+      case 5:
+        return this.processGlyphInsertion;
+      default:
+        throw new Error('Invalid morx subtable type: ' + this.subtable.type);
+    }
+  };
+
+  AATMorxProcessor.prototype.processIndicRearragement = function processIndicRearragement(glyph, entry, index) {
+    if (entry.flags & MARK_FIRST) {
+      this.firstGlyph = index;
+    }
+
+    if (entry.flags & MARK_LAST) {
+      this.lastGlyph = index;
+    }
+
+    reorderGlyphs(this.glyphs, entry.flags & VERB, this.firstGlyph, this.lastGlyph);
+  };
+
+  AATMorxProcessor.prototype.processContextualSubstitution = function processContextualSubstitution(glyph, entry, index) {
+    var subsitutions = this.subtable.table.substitutionTable.items;
+    if (entry.markIndex !== 0xffff) {
+      var lookup = subsitutions.getItem(entry.markIndex);
+      var lookupTable = new AATLookupTable(lookup);
+      glyph = this.glyphs[this.markedGlyph];
+      var gid = lookupTable.lookup(glyph.id);
+      if (gid) {
+        this.glyphs[this.markedGlyph] = this.font.getGlyph(gid, glyph.codePoints);
+      }
+    }
+
+    if (entry.currentIndex !== 0xffff) {
+      var _lookup = subsitutions.getItem(entry.currentIndex);
+      var _lookupTable = new AATLookupTable(_lookup);
+      glyph = this.glyphs[index];
+      var gid = _lookupTable.lookup(glyph.id);
+      if (gid) {
+        this.glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);
+      }
+    }
+
+    if (entry.flags & SET_MARK) {
+      this.markedGlyph = index;
+    }
+  };
+
+  AATMorxProcessor.prototype.processLigature = function processLigature(glyph, entry, index) {
+    if (entry.flags & SET_COMPONENT) {
+      this.ligatureStack.push(index);
+    }
+
+    if (entry.flags & PERFORM_ACTION) {
+      var _ligatureStack;
+
+      var actions = this.subtable.table.ligatureActions;
+      var components = this.subtable.table.components;
+      var ligatureList = this.subtable.table.ligatureList;
+
+      var actionIndex = entry.action;
+      var last = false;
+      var ligatureIndex = 0;
+      var codePoints = [];
+      var ligatureGlyphs = [];
+
+      while (!last) {
+        var _codePoints;
+
+        var componentGlyph = this.ligatureStack.pop();
+        (_codePoints = codePoints).unshift.apply(_codePoints, this.glyphs[componentGlyph].codePoints);
+
+        var action = actions.getItem(actionIndex++);
+        last = !!(action & LAST_MASK);
+        var store = !!(action & STORE_MASK);
+        var offset = (action & OFFSET_MASK) << 2 >> 2; // sign extend 30 to 32 bits
+        offset += this.glyphs[componentGlyph].id;
+
+        var component = components.getItem(offset);
+        ligatureIndex += component;
+
+        if (last || store) {
+          var ligatureEntry = ligatureList.getItem(ligatureIndex);
+          this.glyphs[componentGlyph] = this.font.getGlyph(ligatureEntry, codePoints);
+          ligatureGlyphs.push(componentGlyph);
+          ligatureIndex = 0;
+          codePoints = [];
+        } else {
+          this.glyphs[componentGlyph] = this.font.getGlyph(0xffff);
+        }
+      }
+
+      // Put ligature glyph indexes back on the stack
+      (_ligatureStack = this.ligatureStack).push.apply(_ligatureStack, ligatureGlyphs);
+    }
+  };
+
+  AATMorxProcessor.prototype.processNoncontextualSubstitutions = function processNoncontextualSubstitutions(subtable, glyphs, index) {
+    var lookupTable = new AATLookupTable(subtable.table.lookupTable);
+
+    for (index = 0; index < glyphs.length; index++) {
+      var glyph = glyphs[index];
+      if (glyph.id !== 0xffff) {
+        var gid = lookupTable.lookup(glyph.id);
+        if (gid) {
+          // 0 means do nothing
+          glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);
+        }
+      }
+    }
+  };
+
+  AATMorxProcessor.prototype._insertGlyphs = function _insertGlyphs(glyphIndex, insertionActionIndex, count, isBefore) {
+    var _glyphs;
+
+    var insertions = [];
+    while (count--) {
+      var gid = this.subtable.table.insertionActions.getItem(insertionActionIndex++);
+      insertions.push(this.font.getGlyph(gid));
+    }
+
+    if (!isBefore) {
+      glyphIndex++;
+    }
+
+    (_glyphs = this.glyphs).splice.apply(_glyphs, [glyphIndex, 0].concat(insertions));
+  };
+
+  AATMorxProcessor.prototype.processGlyphInsertion = function processGlyphInsertion(glyph, entry, index) {
+    if (entry.flags & SET_MARK) {
+      this.markedIndex = index;
+    }
+
+    if (entry.markedInsertIndex !== 0xffff) {
+      var count = (entry.flags & MARKED_INSERT_COUNT) >>> 5;
+      var isBefore = !!(entry.flags & MARKED_INSERT_BEFORE);
+      this._insertGlyphs(this.markedIndex, entry.markedInsertIndex, count, isBefore);
+    }
+
+    if (entry.currentInsertIndex !== 0xffff) {
+      var _count = (entry.flags & CURRENT_INSERT_COUNT) >>> 5;
+      var _isBefore = !!(entry.flags & CURRENT_INSERT_BEFORE);
+      this._insertGlyphs(index, entry.currentInsertIndex, _count, _isBefore);
+    }
+  };
+
+  AATMorxProcessor.prototype.getSupportedFeatures = function getSupportedFeatures() {
+    var features = [];
+    for (var _iterator4 = this.morx.chains, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+      var _ref4;
+
+      if (_isArray4) {
+        if (_i4 >= _iterator4.length) break;
+        _ref4 = _iterator4[_i4++];
+      } else {
+        _i4 = _iterator4.next();
+        if (_i4.done) break;
+        _ref4 = _i4.value;
+      }
+
+      var chain = _ref4;
+
+      for (var _iterator5 = chain.features, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
+        var _ref5;
+
+        if (_isArray5) {
+          if (_i5 >= _iterator5.length) break;
+          _ref5 = _iterator5[_i5++];
+        } else {
+          _i5 = _iterator5.next();
+          if (_i5.done) break;
+          _ref5 = _i5.value;
+        }
+
+        var feature = _ref5;
+
+        features.push([feature.featureType, feature.featureSetting]);
+      }
+    }
+
+    return features;
+  };
+
+  AATMorxProcessor.prototype.generateInputs = function generateInputs(gid) {
+    if (!this.inputCache) {
+      this.generateInputCache();
+    }
+
+    return this.inputCache[gid] || [];
+  };
+
+  AATMorxProcessor.prototype.generateInputCache = function generateInputCache() {
+    this.inputCache = {};
+
+    for (var _iterator6 = this.morx.chains, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _getIterator(_iterator6);;) {
+      var _ref6;
+
+      if (_isArray6) {
+        if (_i6 >= _iterator6.length) break;
+        _ref6 = _iterator6[_i6++];
+      } else {
+        _i6 = _iterator6.next();
+        if (_i6.done) break;
+        _ref6 = _i6.value;
+      }
+
+      var chain = _ref6;
+
+      var flags = chain.defaultFlags;
+
+      for (var _iterator7 = chain.subtables, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _getIterator(_iterator7);;) {
+        var _ref7;
+
+        if (_isArray7) {
+          if (_i7 >= _iterator7.length) break;
+          _ref7 = _iterator7[_i7++];
+        } else {
+          _i7 = _iterator7.next();
+          if (_i7.done) break;
+          _ref7 = _i7.value;
+        }
+
+        var subtable = _ref7;
+
+        if (subtable.subFeatureFlags & flags) {
+          this.generateInputsForSubtable(subtable);
+        }
+      }
+    }
+  };
+
+  AATMorxProcessor.prototype.generateInputsForSubtable = function generateInputsForSubtable(subtable) {
+    var _this = this;
+
+    // Currently, only supporting ligature subtables.
+    if (subtable.type !== 2) {
+      return;
+    }
+
+    var reverse = !!(subtable.coverage & REVERSE_DIRECTION);
+    if (reverse) {
+      throw new Error('Reverse subtable, not supported.');
+    }
+
+    this.subtable = subtable;
+    this.ligatureStack = [];
+
+    var stateMachine = this.getStateMachine(subtable);
+    var process = this.getProcessor();
+
+    var input = [];
+    var stack = [];
+    this.glyphs = [];
+
+    stateMachine.traverse({
+      enter: function enter(glyph, entry) {
+        var glyphs = _this.glyphs;
+        stack.push({
+          glyphs: glyphs.slice(),
+          ligatureStack: _this.ligatureStack.slice()
+        });
+
+        // Add glyph to input and glyphs to process.
+        var g = _this.font.getGlyph(glyph);
+        input.push(g);
+        glyphs.push(input[input.length - 1]);
+
+        // Process ligature substitution
+        process(glyphs[glyphs.length - 1], entry, glyphs.length - 1);
+
+        // Add input to result if only one matching (non-deleted) glyph remains.
+        var count = 0;
+        var found = 0;
+        for (var i = 0; i < glyphs.length && count <= 1; i++) {
+          if (glyphs[i].id !== 0xffff) {
+            count++;
+            found = glyphs[i].id;
+          }
+        }
+
+        if (count === 1) {
+          var result = input.map(function (g) {
+            return g.id;
+          });
+          var _cache = _this.inputCache[found];
+          if (_cache) {
+            _cache.push(result);
+          } else {
+            _this.inputCache[found] = [result];
+          }
+        }
+      },
+
+      exit: function exit() {
+        var _stack$pop = stack.pop();
+
+        _this.glyphs = _stack$pop.glyphs;
+        _this.ligatureStack = _stack$pop.ligatureStack;
+
+        input.pop();
+      }
+    });
+  };
+
+  return AATMorxProcessor;
+}(), (_applyDecoratedDescriptor$2(_class$2.prototype, 'getStateMachine', [cache], _Object$getOwnPropertyDescriptor(_class$2.prototype, 'getStateMachine'), _class$2.prototype)), _class$2);
+
+function swap(glyphs, rangeA, rangeB) {
+  var reverseA = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
+  var reverseB = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
+
+  var end = glyphs.splice(rangeB[0] - (rangeB[1] - 1), rangeB[1]);
+  if (reverseB) {
+    end.reverse();
+  }
+
+  var start = glyphs.splice.apply(glyphs, [rangeA[0], rangeA[1]].concat(end));
+  if (reverseA) {
+    start.reverse();
+  }
+
+  glyphs.splice.apply(glyphs, [rangeB[0] - (rangeA[1] - 1), 0].concat(start));
+  return glyphs;
+}
+
+function reorderGlyphs(glyphs, verb, firstGlyph, lastGlyph) {
+  var length = lastGlyph - firstGlyph + 1;
+  switch (verb) {
+    case 0:
+      // no change
+      return glyphs;
+
+    case 1:
+      // Ax => xA
+      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 0]);
+
+    case 2:
+      // xD => Dx
+      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 1]);
+
+    case 3:
+      // AxD => DxA
+      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 1]);
+
+    case 4:
+      // ABx => xAB
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0]);
+
+    case 5:
+      // ABx => xBA
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0], true, false);
+
+    case 6:
+      // xCD => CDx
+      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2]);
+
+    case 7:
+      // xCD => DCx
+      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2], false, true);
+
+    case 8:
+      // AxCD => CDxA
+      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2]);
+
+    case 9:
+      // AxCD => DCxA
+      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2], false, true);
+
+    case 10:
+      // ABxD => DxAB
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1]);
+
+    case 11:
+      // ABxD => DxBA
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1], true, false);
+
+    case 12:
+      // ABxCD => CDxAB
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2]);
+
+    case 13:
+      // ABxCD => CDxBA
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, false);
+
+    case 14:
+      // ABxCD => DCxAB
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], false, true);
+
+    case 15:
+      // ABxCD => DCxBA
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, true);
+
+    default:
+      throw new Error('Unknown verb: ' + verb);
+  }
+}
+
+var AATLayoutEngine = function () {
+  function AATLayoutEngine(font) {
+    _classCallCheck(this, AATLayoutEngine);
+
+    this.font = font;
+    this.morxProcessor = new AATMorxProcessor(font);
+    this.fallbackPosition = false;
+  }
+
+  AATLayoutEngine.prototype.substitute = function substitute(glyphRun) {
+    // AAT expects the glyphs to be in visual order prior to morx processing,
+    // so reverse the glyphs if the script is right-to-left.
+    if (glyphRun.direction === 'rtl') {
+      glyphRun.glyphs.reverse();
+    }
+
+    this.morxProcessor.process(glyphRun.glyphs, mapOTToAAT(glyphRun.features));
+  };
+
+  AATLayoutEngine.prototype.getAvailableFeatures = function getAvailableFeatures(script, language) {
+    return mapAATToOT(this.morxProcessor.getSupportedFeatures());
+  };
+
+  AATLayoutEngine.prototype.stringsForGlyph = function stringsForGlyph(gid) {
+    var glyphStrings = this.morxProcessor.generateInputs(gid);
+    var result = new _Set();
+
+    for (var _iterator = glyphStrings, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var glyphs = _ref;
+
+      this._addStrings(glyphs, 0, result, '');
+    }
+
+    return result;
+  };
+
+  AATLayoutEngine.prototype._addStrings = function _addStrings(glyphs, index, strings, string) {
+    var codePoints = this.font._cmapProcessor.codePointsForGlyph(glyphs[index]);
+
+    for (var _iterator2 = codePoints, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var codePoint = _ref2;
+
+      var s = string + _String$fromCodePoint(codePoint);
+      if (index < glyphs.length - 1) {
+        this._addStrings(glyphs, index + 1, strings, s);
+      } else {
+        strings.add(s);
+      }
+    }
+  };
+
+  return AATLayoutEngine;
+}();
+
+/**
+ * ShapingPlans are used by the OpenType shapers to store which
+ * features should by applied, and in what order to apply them.
+ * The features are applied in groups called stages. A feature
+ * can be applied globally to all glyphs, or locally to only
+ * specific glyphs.
+ *
+ * @private
+ */
+
+var ShapingPlan = function () {
+  function ShapingPlan(font, script, direction) {
+    _classCallCheck(this, ShapingPlan);
+
+    this.font = font;
+    this.script = script;
+    this.direction = direction;
+    this.stages = [];
+    this.globalFeatures = {};
+    this.allFeatures = {};
+  }
+
+  /**
+   * Adds the given features to the last stage.
+   * Ignores features that have already been applied.
+   */
+
+
+  ShapingPlan.prototype._addFeatures = function _addFeatures(features, global) {
+    var stageIndex = this.stages.length - 1;
+    var stage = this.stages[stageIndex];
+    for (var _iterator = features, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var feature = _ref;
+
+      if (this.allFeatures[feature] == null) {
+        stage.push(feature);
+        this.allFeatures[feature] = stageIndex;
+
+        if (global) {
+          this.globalFeatures[feature] = true;
+        }
+      }
+    }
+  };
+
+  /**
+   * Add features to the last stage
+   */
+
+
+  ShapingPlan.prototype.add = function add(arg) {
+    var global = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+    if (this.stages.length === 0) {
+      this.stages.push([]);
+    }
+
+    if (typeof arg === 'string') {
+      arg = [arg];
+    }
+
+    if (Array.isArray(arg)) {
+      this._addFeatures(arg, global);
+    } else if ((typeof arg === 'undefined' ? 'undefined' : _typeof(arg)) === 'object') {
+      this._addFeatures(arg.global || [], true);
+      this._addFeatures(arg.local || [], false);
+    } else {
+      throw new Error("Unsupported argument to ShapingPlan#add");
+    }
+  };
+
+  /**
+   * Add a new stage
+   */
+
+
+  ShapingPlan.prototype.addStage = function addStage(arg, global) {
+    if (typeof arg === 'function') {
+      this.stages.push(arg, []);
+    } else {
+      this.stages.push([]);
+      this.add(arg, global);
+    }
+  };
+
+  ShapingPlan.prototype.setFeatureOverrides = function setFeatureOverrides(features) {
+    if (Array.isArray(features)) {
+      this.add(features);
+    } else if ((typeof features === 'undefined' ? 'undefined' : _typeof(features)) === 'object') {
+      for (var tag in features) {
+        if (features[tag]) {
+          this.add(tag);
+        } else if (this.allFeatures[tag] != null) {
+          var stage = this.stages[this.allFeatures[tag]];
+          stage.splice(stage.indexOf(tag), 1);
+          delete this.allFeatures[tag];
+          delete this.globalFeatures[tag];
+        }
+      }
+    }
+  };
+
+  /**
+   * Assigns the global features to the given glyphs
+   */
+
+
+  ShapingPlan.prototype.assignGlobalFeatures = function assignGlobalFeatures(glyphs) {
+    for (var _iterator2 = glyphs, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var glyph = _ref2;
+
+      for (var feature in this.globalFeatures) {
+        glyph.features[feature] = true;
+      }
+    }
+  };
+
+  /**
+   * Executes the planned stages using the given OTProcessor
+   */
+
+
+  ShapingPlan.prototype.process = function process(processor, glyphs, positions) {
+    for (var _iterator3 = this.stages, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+      var _ref3;
+
+      if (_isArray3) {
+        if (_i3 >= _iterator3.length) break;
+        _ref3 = _iterator3[_i3++];
+      } else {
+        _i3 = _iterator3.next();
+        if (_i3.done) break;
+        _ref3 = _i3.value;
+      }
+
+      var stage = _ref3;
+
+      if (typeof stage === 'function') {
+        if (!positions) {
+          stage(this.font, glyphs, this);
+        }
+      } else if (stage.length > 0) {
+        processor.applyFeatures(stage, glyphs, positions);
+      }
+    }
+  };
+
+  return ShapingPlan;
+}();
+
+var _class$4;
+var _temp;
+var VARIATION_FEATURES = ['rvrn'];
+var COMMON_FEATURES = ['ccmp', 'locl', 'rlig', 'mark', 'mkmk'];
+var FRACTIONAL_FEATURES = ['frac', 'numr', 'dnom'];
+var HORIZONTAL_FEATURES = ['calt', 'clig', 'liga', 'rclt', 'curs', 'kern'];
+var DIRECTIONAL_FEATURES = {
+  ltr: ['ltra', 'ltrm'],
+  rtl: ['rtla', 'rtlm']
+};
+
+var DefaultShaper = (_temp = _class$4 = function () {
+  function DefaultShaper() {
+    _classCallCheck(this, DefaultShaper);
+  }
+
+  DefaultShaper.plan = function plan(_plan, glyphs, features) {
+    // Plan the features we want to apply
+    this.planPreprocessing(_plan);
+    this.planFeatures(_plan);
+    this.planPostprocessing(_plan, features);
+
+    // Assign the global features to all the glyphs
+    _plan.assignGlobalFeatures(glyphs);
+
+    // Assign local features to glyphs
+    this.assignFeatures(_plan, glyphs);
+  };
+
+  DefaultShaper.planPreprocessing = function planPreprocessing(plan) {
+    plan.add({
+      global: [].concat(VARIATION_FEATURES, DIRECTIONAL_FEATURES[plan.direction]),
+      local: FRACTIONAL_FEATURES
+    });
+  };
+
+  DefaultShaper.planFeatures = function planFeatures(plan) {
+    // Do nothing by default. Let subclasses override this.
+  };
+
+  DefaultShaper.planPostprocessing = function planPostprocessing(plan, userFeatures) {
+    plan.add([].concat(COMMON_FEATURES, HORIZONTAL_FEATURES));
+    plan.setFeatureOverrides(userFeatures);
+  };
+
+  DefaultShaper.assignFeatures = function assignFeatures(plan, glyphs) {
+    // Enable contextual fractions
+    for (var i = 0; i < glyphs.length; i++) {
+      var glyph = glyphs[i];
+      if (glyph.codePoints[0] === 0x2044) {
+        // fraction slash
+        var start = i;
+        var end = i + 1;
+
+        // Apply numerator
+        while (start > 0 && unicode.isDigit(glyphs[start - 1].codePoints[0])) {
+          glyphs[start - 1].features.numr = true;
+          glyphs[start - 1].features.frac = true;
+          start--;
+        }
+
+        // Apply denominator
+        while (end < glyphs.length && unicode.isDigit(glyphs[end].codePoints[0])) {
+          glyphs[end].features.dnom = true;
+          glyphs[end].features.frac = true;
+          end++;
+        }
+
+        // Apply fraction slash
+        glyph.features.frac = true;
+        i = end - 1;
+      }
+    }
+  };
+
+  return DefaultShaper;
+}(), _class$4.zeroMarkWidths = 'AFTER_GPOS', _temp);
+
+var trie = new UnicodeTrie(Buffer("AAEQAAAAAAAAADGgAZUBav7t2CtPA0EUBeDZB00pin9AJZIEgyUEj0QhweDAgQOJxCBRBElQSBwSicLgkOAwnNKZ5GaY2c7uzj4o5yZfZrrbefbuIx2nSq3CGmzAWH/+K+UO7MIe7MMhHMMpnMMFXMIVXIt2t3CnP088iPqjqNN8e4Ij7Rle4LUH82rLm6i/92A+RERERERERERNmfz/89GDeRARERERzbN8ceps2Iwt9H0C9/AJ6yOlDkbTczcot5VSm8Pm1vcFWfb7+BKOLTuOd2UlTX4wGP85Eg953lWPFbnuN7PkjtLmalOWbNenkHOSa7T3KmR9MVTZ2zZkVj1kHa68MueVKH0R4zqQ44WEXLM8VjcWHP0PtKLfPzQnMtGn3W4QYf6qxFxceVI394r2xnV+1rih0fV1Vzf3fO1n3evL5J78ruvZ5ptX2Rwy92Tfb1wlEqut3U+sZ3HXOeJ7/zDrbyuP6+Zz0fqa6Nv3vhY7Yu1xWnGevmsvsUpTT/RYIe8waUH/rvHMWKFzLfN8L+rTfp645mfX7ftlnfDtYxN59w0=","base64"));
+var FEATURES = ['isol', 'fina', 'fin2', 'fin3', 'medi', 'med2', 'init'];
+
+var ShapingClasses = {
+  Non_Joining: 0,
+  Left_Joining: 1,
+  Right_Joining: 2,
+  Dual_Joining: 3,
+  Join_Causing: 3,
+  ALAPH: 4,
+  'DALATH RISH': 5,
+  Transparent: 6
+};
+
+var ISOL = 'isol';
+var FINA = 'fina';
+var FIN2 = 'fin2';
+var FIN3 = 'fin3';
+var MEDI = 'medi';
+var MED2 = 'med2';
+var INIT = 'init';
+var NONE = null;
+
+// Each entry is [prevAction, curAction, nextState]
+var STATE_TABLE = [
+//   Non_Joining,        Left_Joining,       Right_Joining,     Dual_Joining,           ALAPH,            DALATH RISH
+// State 0: prev was U,  not willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 6]],
+
+// State 1: prev was R or ISOL/ALAPH,  not willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, FIN2, 5], [NONE, ISOL, 6]],
+
+// State 2: prev was D/L in ISOL form,  willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [INIT, FINA, 1], [INIT, FINA, 3], [INIT, FINA, 4], [INIT, FINA, 6]],
+
+// State 3: prev was D in FINA form,  willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [MEDI, FINA, 1], [MEDI, FINA, 3], [MEDI, FINA, 4], [MEDI, FINA, 6]],
+
+// State 4: prev was FINA ALAPH,  not willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [MED2, ISOL, 1], [MED2, ISOL, 2], [MED2, FIN2, 5], [MED2, ISOL, 6]],
+
+// State 5: prev was FIN2/FIN3 ALAPH,  not willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [ISOL, ISOL, 1], [ISOL, ISOL, 2], [ISOL, FIN2, 5], [ISOL, ISOL, 6]],
+
+// State 6: prev was DALATH/RISH,  not willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, FIN3, 5], [NONE, ISOL, 6]]];
+
+/**
+ * This is a shaper for Arabic, and other cursive scripts.
+ * It uses data from ArabicShaping.txt in the Unicode database,
+ * compiled to a UnicodeTrie by generate-data.coffee.
+ *
+ * The shaping state machine was ported from Harfbuzz.
+ * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-arabic.cc
+ */
+
+var ArabicShaper = function (_DefaultShaper) {
+  _inherits(ArabicShaper, _DefaultShaper);
+
+  function ArabicShaper() {
+    _classCallCheck(this, ArabicShaper);
+
+    return _possibleConstructorReturn(this, _DefaultShaper.apply(this, arguments));
+  }
+
+  ArabicShaper.planFeatures = function planFeatures(plan) {
+    plan.add(['ccmp', 'locl']);
+    for (var i = 0; i < FEATURES.length; i++) {
+      var feature = FEATURES[i];
+      plan.addStage(feature, false);
+    }
+
+    plan.addStage('mset');
+  };
+
+  ArabicShaper.assignFeatures = function assignFeatures(plan, glyphs) {
+    _DefaultShaper.assignFeatures.call(this, plan, glyphs);
+
+    var prev = -1;
+    var state = 0;
+    var actions = [];
+
+    // Apply the state machine to map glyphs to features
+    for (var i = 0; i < glyphs.length; i++) {
+      var curAction = void 0,
+          prevAction = void 0;
+      var glyph = glyphs[i];
+      var type = getShapingClass(glyph.codePoints[0]);
+      if (type === ShapingClasses.Transparent) {
+        actions[i] = NONE;
+        continue;
+      }
+
+      var _STATE_TABLE$state$ty = STATE_TABLE[state][type];
+      prevAction = _STATE_TABLE$state$ty[0];
+      curAction = _STATE_TABLE$state$ty[1];
+      state = _STATE_TABLE$state$ty[2];
+
+
+      if (prevAction !== NONE && prev !== -1) {
+        actions[prev] = prevAction;
+      }
+
+      actions[i] = curAction;
+      prev = i;
+    }
+
+    // Apply the chosen features to their respective glyphs
+    for (var index = 0; index < glyphs.length; index++) {
+      var feature = void 0;
+      var glyph = glyphs[index];
+      if (feature = actions[index]) {
+        glyph.features[feature] = true;
+      }
+    }
+  };
+
+  return ArabicShaper;
+}(DefaultShaper);
+
+function getShapingClass(codePoint) {
+  var res = trie.get(codePoint);
+  if (res) {
+    return res - 1;
+  }
+
+  var category = unicode.getCategory(codePoint);
+  if (category === 'Mn' || category === 'Me' || category === 'Cf') {
+    return ShapingClasses.Transparent;
+  }
+
+  return ShapingClasses.Non_Joining;
+}
+
+var GlyphIterator = function () {
+  function GlyphIterator(glyphs, options) {
+    _classCallCheck(this, GlyphIterator);
+
+    this.glyphs = glyphs;
+    this.reset(options);
+  }
+
+  GlyphIterator.prototype.reset = function reset() {
+    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+    var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+    this.options = options;
+    this.flags = options.flags || {};
+    this.markAttachmentType = options.markAttachmentType || 0;
+    this.index = index;
+  };
+
+  GlyphIterator.prototype.shouldIgnore = function shouldIgnore(glyph) {
+    return this.flags.ignoreMarks && glyph.isMark || this.flags.ignoreBaseGlyphs && glyph.isBase || this.flags.ignoreLigatures && glyph.isLigature || this.markAttachmentType && glyph.isMark && glyph.markAttachmentType !== this.markAttachmentType;
+  };
+
+  GlyphIterator.prototype.move = function move(dir) {
+    this.index += dir;
+    while (0 <= this.index && this.index < this.glyphs.length && this.shouldIgnore(this.glyphs[this.index])) {
+      this.index += dir;
+    }
+
+    if (0 > this.index || this.index >= this.glyphs.length) {
+      return null;
+    }
+
+    return this.glyphs[this.index];
+  };
+
+  GlyphIterator.prototype.next = function next() {
+    return this.move(+1);
+  };
+
+  GlyphIterator.prototype.prev = function prev() {
+    return this.move(-1);
+  };
+
+  GlyphIterator.prototype.peek = function peek() {
+    var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
+
+    var idx = this.index;
+    var res = this.increment(count);
+    this.index = idx;
+    return res;
+  };
+
+  GlyphIterator.prototype.peekIndex = function peekIndex() {
+    var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
+
+    var idx = this.index;
+    this.increment(count);
+    var res = this.index;
+    this.index = idx;
+    return res;
+  };
+
+  GlyphIterator.prototype.increment = function increment() {
+    var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
+
+    var dir = count < 0 ? -1 : 1;
+    count = Math.abs(count);
+    while (count--) {
+      this.move(dir);
+    }
+
+    return this.glyphs[this.index];
+  };
+
+  _createClass(GlyphIterator, [{
+    key: "cur",
+    get: function get() {
+      return this.glyphs[this.index] || null;
+    }
+  }]);
+
+  return GlyphIterator;
+}();
+
+var DEFAULT_SCRIPTS = ['DFLT', 'dflt', 'latn'];
+
+var OTProcessor = function () {
+  function OTProcessor(font, table) {
+    _classCallCheck(this, OTProcessor);
+
+    this.font = font;
+    this.table = table;
+
+    this.script = null;
+    this.scriptTag = null;
+
+    this.language = null;
+    this.languageTag = null;
+
+    this.features = {};
+    this.lookups = {};
+
+    // Setup variation substitutions
+    this.variationsIndex = font._variationProcessor ? this.findVariationsIndex(font._variationProcessor.normalizedCoords) : -1;
+
+    // initialize to default script + language
+    this.selectScript();
+
+    // current context (set by applyFeatures)
+    this.glyphs = [];
+    this.positions = []; // only used by GPOS
+    this.ligatureID = 1;
+    this.currentFeature = null;
+  }
+
+  OTProcessor.prototype.findScript = function findScript(script) {
+    if (this.table.scriptList == null) {
+      return null;
+    }
+
+    if (!Array.isArray(script)) {
+      script = [script];
+    }
+
+    for (var _iterator = script, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var s = _ref;
+
+      for (var _iterator2 = this.table.scriptList, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var entry = _ref2;
+
+        if (entry.tag === s) {
+          return entry;
+        }
+      }
+    }
+
+    return null;
+  };
+
+  OTProcessor.prototype.selectScript = function selectScript(script, language, direction$$) {
+    var changed = false;
+    var entry = void 0;
+    if (!this.script || script !== this.scriptTag) {
+      entry = this.findScript(script);
+      if (!entry) {
+        entry = this.findScript(DEFAULT_SCRIPTS);
+      }
+
+      if (!entry) {
+        return this.scriptTag;
+      }
+
+      this.scriptTag = entry.tag;
+      this.script = entry.script;
+      this.language = null;
+      this.languageTag = null;
+      changed = true;
+    }
+
+    if (!direction$$ || direction$$ !== this.direction) {
+      this.direction = direction$$ || direction(script);
+    }
+
+    if (language && language.length < 4) {
+      language += ' '.repeat(4 - language.length);
+    }
+
+    if (!language || language !== this.languageTag) {
+      this.language = null;
+
+      for (var _iterator3 = this.script.langSysRecords, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref3 = _i3.value;
+        }
+
+        var lang = _ref3;
+
+        if (lang.tag === language) {
+          this.language = lang.langSys;
+          this.languageTag = lang.tag;
+          break;
+        }
+      }
+
+      if (!this.language) {
+        this.language = this.script.defaultLangSys;
+        this.languageTag = null;
+      }
+
+      changed = true;
+    }
+
+    // Build a feature lookup table
+    if (changed) {
+      this.features = {};
+      if (this.language) {
+        for (var _iterator4 = this.language.featureIndexes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+          var _ref4;
+
+          if (_isArray4) {
+            if (_i4 >= _iterator4.length) break;
+            _ref4 = _iterator4[_i4++];
+          } else {
+            _i4 = _iterator4.next();
+            if (_i4.done) break;
+            _ref4 = _i4.value;
+          }
+
+          var featureIndex = _ref4;
+
+          var record = this.table.featureList[featureIndex];
+          var substituteFeature = this.substituteFeatureForVariations(featureIndex);
+          this.features[record.tag] = substituteFeature || record.feature;
+        }
+      }
+    }
+
+    return this.scriptTag;
+  };
+
+  OTProcessor.prototype.lookupsForFeatures = function lookupsForFeatures() {
+    var userFeatures = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+    var exclude = arguments[1];
+
+    var lookups = [];
+    for (var _iterator5 = userFeatures, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
+      var _ref5;
+
+      if (_isArray5) {
+        if (_i5 >= _iterator5.length) break;
+        _ref5 = _iterator5[_i5++];
+      } else {
+        _i5 = _iterator5.next();
+        if (_i5.done) break;
+        _ref5 = _i5.value;
+      }
+
+      var tag = _ref5;
+
+      var feature = this.features[tag];
+      if (!feature) {
+        continue;
+      }
+
+      for (var _iterator6 = feature.lookupListIndexes, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _getIterator(_iterator6);;) {
+        var _ref6;
+
+        if (_isArray6) {
+          if (_i6 >= _iterator6.length) break;
+          _ref6 = _iterator6[_i6++];
+        } else {
+          _i6 = _iterator6.next();
+          if (_i6.done) break;
+          _ref6 = _i6.value;
+        }
+
+        var lookupIndex = _ref6;
+
+        if (exclude && exclude.indexOf(lookupIndex) !== -1) {
+          continue;
+        }
+
+        lookups.push({
+          feature: tag,
+          index: lookupIndex,
+          lookup: this.table.lookupList.get(lookupIndex)
+        });
+      }
+    }
+
+    lookups.sort(function (a, b) {
+      return a.index - b.index;
+    });
+    return lookups;
+  };
+
+  OTProcessor.prototype.substituteFeatureForVariations = function substituteFeatureForVariations(featureIndex) {
+    if (this.variationsIndex === -1) {
+      return null;
+    }
+
+    var record = this.table.featureVariations.featureVariationRecords[this.variationsIndex];
+    var substitutions = record.featureTableSubstitution.substitutions;
+    for (var _iterator7 = substitutions, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _getIterator(_iterator7);;) {
+      var _ref7;
+
+      if (_isArray7) {
+        if (_i7 >= _iterator7.length) break;
+        _ref7 = _iterator7[_i7++];
+      } else {
+        _i7 = _iterator7.next();
+        if (_i7.done) break;
+        _ref7 = _i7.value;
+      }
+
+      var substitution = _ref7;
+
+      if (substitution.featureIndex === featureIndex) {
+        return substitution.alternateFeatureTable;
+      }
+    }
+
+    return null;
+  };
+
+  OTProcessor.prototype.findVariationsIndex = function findVariationsIndex(coords) {
+    var variations = this.table.featureVariations;
+    if (!variations) {
+      return -1;
+    }
+
+    var records = variations.featureVariationRecords;
+    for (var i = 0; i < records.length; i++) {
+      var conditions = records[i].conditionSet.conditionTable;
+      if (this.variationConditionsMatch(conditions, coords)) {
+        return i;
+      }
+    }
+
+    return -1;
+  };
+
+  OTProcessor.prototype.variationConditionsMatch = function variationConditionsMatch(conditions, coords) {
+    return conditions.every(function (condition) {
+      var coord = condition.axisIndex < coords.length ? coords[condition.axisIndex] : 0;
+      return condition.filterRangeMinValue <= coord && coord <= condition.filterRangeMaxValue;
+    });
+  };
+
+  OTProcessor.prototype.applyFeatures = function applyFeatures(userFeatures, glyphs, advances) {
+    var lookups = this.lookupsForFeatures(userFeatures);
+    this.applyLookups(lookups, glyphs, advances);
+  };
+
+  OTProcessor.prototype.applyLookups = function applyLookups(lookups, glyphs, positions) {
+    this.glyphs = glyphs;
+    this.positions = positions;
+    this.glyphIterator = new GlyphIterator(glyphs);
+
+    for (var _iterator8 = lookups, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _getIterator(_iterator8);;) {
+      var _ref8;
+
+      if (_isArray8) {
+        if (_i8 >= _iterator8.length) break;
+        _ref8 = _iterator8[_i8++];
+      } else {
+        _i8 = _iterator8.next();
+        if (_i8.done) break;
+        _ref8 = _i8.value;
+      }
+
+      var _ref9 = _ref8,
+          feature = _ref9.feature,
+          lookup = _ref9.lookup;
+
+      this.currentFeature = feature;
+      this.glyphIterator.reset(lookup.flags);
+
+      while (this.glyphIterator.index < glyphs.length) {
+        if (!(feature in this.glyphIterator.cur.features)) {
+          this.glyphIterator.next();
+          continue;
+        }
+
+        for (var _iterator9 = lookup.subTables, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _getIterator(_iterator9);;) {
+          var _ref10;
+
+          if (_isArray9) {
+            if (_i9 >= _iterator9.length) break;
+            _ref10 = _iterator9[_i9++];
+          } else {
+            _i9 = _iterator9.next();
+            if (_i9.done) break;
+            _ref10 = _i9.value;
+          }
+
+          var table = _ref10;
+
+          var res = this.applyLookup(lookup.lookupType, table);
+          if (res) {
+            break;
+          }
+        }
+
+        this.glyphIterator.next();
+      }
+    }
+  };
+
+  OTProcessor.prototype.applyLookup = function applyLookup(lookup, table) {
+    throw new Error("applyLookup must be implemented by subclasses");
+  };
+
+  OTProcessor.prototype.applyLookupList = function applyLookupList(lookupRecords) {
+    var options = this.glyphIterator.options;
+    var glyphIndex = this.glyphIterator.index;
+
+    for (var _iterator10 = lookupRecords, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _getIterator(_iterator10);;) {
+      var _ref11;
+
+      if (_isArray10) {
+        if (_i10 >= _iterator10.length) break;
+        _ref11 = _iterator10[_i10++];
+      } else {
+        _i10 = _iterator10.next();
+        if (_i10.done) break;
+        _ref11 = _i10.value;
+      }
+
+      var lookupRecord = _ref11;
+
+      // Reset flags and find glyph index for this lookup record
+      this.glyphIterator.reset(options, glyphIndex);
+      this.glyphIterator.increment(lookupRecord.sequenceIndex);
+
+      // Get the lookup and setup flags for subtables
+      var lookup = this.table.lookupList.get(lookupRecord.lookupListIndex);
+      this.glyphIterator.reset(lookup.flags, this.glyphIterator.index);
+
+      // Apply lookup subtables until one matches
+      for (var _iterator11 = lookup.subTables, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _getIterator(_iterator11);;) {
+        var _ref12;
+
+        if (_isArray11) {
+          if (_i11 >= _iterator11.length) break;
+          _ref12 = _iterator11[_i11++];
+        } else {
+          _i11 = _iterator11.next();
+          if (_i11.done) break;
+          _ref12 = _i11.value;
+        }
+
+        var table = _ref12;
+
+        if (this.applyLookup(lookup.lookupType, table)) {
+          break;
+        }
+      }
+    }
+
+    this.glyphIterator.reset(options, glyphIndex);
+    return true;
+  };
+
+  OTProcessor.prototype.coverageIndex = function coverageIndex(coverage, glyph) {
+    if (glyph == null) {
+      glyph = this.glyphIterator.cur.id;
+    }
+
+    switch (coverage.version) {
+      case 1:
+        return coverage.glyphs.indexOf(glyph);
+
+      case 2:
+        for (var _iterator12 = coverage.rangeRecords, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _getIterator(_iterator12);;) {
+          var _ref13;
+
+          if (_isArray12) {
+            if (_i12 >= _iterator12.length) break;
+            _ref13 = _iterator12[_i12++];
+          } else {
+            _i12 = _iterator12.next();
+            if (_i12.done) break;
+            _ref13 = _i12.value;
+          }
+
+          var range = _ref13;
+
+          if (range.start <= glyph && glyph <= range.end) {
+            return range.startCoverageIndex + glyph - range.start;
+          }
+        }
+
+        break;
+    }
+
+    return -1;
+  };
+
+  OTProcessor.prototype.match = function match(sequenceIndex, sequence, fn, matched) {
+    var pos = this.glyphIterator.index;
+    var glyph = this.glyphIterator.increment(sequenceIndex);
+    var idx = 0;
+
+    while (idx < sequence.length && glyph && fn(sequence[idx], glyph)) {
+      if (matched) {
+        matched.push(this.glyphIterator.index);
+      }
+
+      idx++;
+      glyph = this.glyphIterator.next();
+    }
+
+    this.glyphIterator.index = pos;
+    if (idx < sequence.length) {
+      return false;
+    }
+
+    return matched || true;
+  };
+
+  OTProcessor.prototype.sequenceMatches = function sequenceMatches(sequenceIndex, sequence) {
+    return this.match(sequenceIndex, sequence, function (component, glyph) {
+      return component === glyph.id;
+    });
+  };
+
+  OTProcessor.prototype.sequenceMatchIndices = function sequenceMatchIndices(sequenceIndex, sequence) {
+    var _this = this;
+
+    return this.match(sequenceIndex, sequence, function (component, glyph) {
+      // If the current feature doesn't apply to this glyph,
+      if (!(_this.currentFeature in glyph.features)) {
+        return false;
+      }
+
+      return component === glyph.id;
+    }, []);
+  };
+
+  OTProcessor.prototype.coverageSequenceMatches = function coverageSequenceMatches(sequenceIndex, sequence) {
+    var _this2 = this;
+
+    return this.match(sequenceIndex, sequence, function (coverage, glyph) {
+      return _this2.coverageIndex(coverage, glyph.id) >= 0;
+    });
+  };
+
+  OTProcessor.prototype.getClassID = function getClassID(glyph, classDef) {
+    switch (classDef.version) {
+      case 1:
+        // Class array
+        var i = glyph - classDef.startGlyph;
+        if (i >= 0 && i < classDef.classValueArray.length) {
+          return classDef.classValueArray[i];
+        }
+
+        break;
+
+      case 2:
+        for (var _iterator13 = classDef.classRangeRecord, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _getIterator(_iterator13);;) {
+          var _ref14;
+
+          if (_isArray13) {
+            if (_i13 >= _iterator13.length) break;
+            _ref14 = _iterator13[_i13++];
+          } else {
+            _i13 = _iterator13.next();
+            if (_i13.done) break;
+            _ref14 = _i13.value;
+          }
+
+          var range = _ref14;
+
+          if (range.start <= glyph && glyph <= range.end) {
+            return range.class;
+          }
+        }
+
+        break;
+    }
+
+    return 0;
+  };
+
+  OTProcessor.prototype.classSequenceMatches = function classSequenceMatches(sequenceIndex, sequence, classDef) {
+    var _this3 = this;
+
+    return this.match(sequenceIndex, sequence, function (classID, glyph) {
+      return classID === _this3.getClassID(glyph.id, classDef);
+    });
+  };
+
+  OTProcessor.prototype.applyContext = function applyContext(table) {
+    switch (table.version) {
+      case 1:
+        var index = this.coverageIndex(table.coverage);
+        if (index === -1) {
+          return false;
+        }
+
+        var set = table.ruleSets[index];
+        for (var _iterator14 = set, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _getIterator(_iterator14);;) {
+          var _ref15;
+
+          if (_isArray14) {
+            if (_i14 >= _iterator14.length) break;
+            _ref15 = _iterator14[_i14++];
+          } else {
+            _i14 = _iterator14.next();
+            if (_i14.done) break;
+            _ref15 = _i14.value;
+          }
+
+          var rule = _ref15;
+
+          if (this.sequenceMatches(1, rule.input)) {
+            return this.applyLookupList(rule.lookupRecords);
+          }
+        }
+
+        break;
+
+      case 2:
+        if (this.coverageIndex(table.coverage) === -1) {
+          return false;
+        }
+
+        index = this.getClassID(this.glyphIterator.cur.id, table.classDef);
+        if (index === -1) {
+          return false;
+        }
+
+        set = table.classSet[index];
+        for (var _iterator15 = set, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _getIterator(_iterator15);;) {
+          var _ref16;
+
+          if (_isArray15) {
+            if (_i15 >= _iterator15.length) break;
+            _ref16 = _iterator15[_i15++];
+          } else {
+            _i15 = _iterator15.next();
+            if (_i15.done) break;
+            _ref16 = _i15.value;
+          }
+
+          var _rule = _ref16;
+
+          if (this.classSequenceMatches(1, _rule.classes, table.classDef)) {
+            return this.applyLookupList(_rule.lookupRecords);
+          }
+        }
+
+        break;
+
+      case 3:
+        if (this.coverageSequenceMatches(0, table.coverages)) {
+          return this.applyLookupList(table.lookupRecords);
+        }
+
+        break;
+    }
+
+    return false;
+  };
+
+  OTProcessor.prototype.applyChainingContext = function applyChainingContext(table) {
+    switch (table.version) {
+      case 1:
+        var index = this.coverageIndex(table.coverage);
+        if (index === -1) {
+          return false;
+        }
+
+        var set = table.chainRuleSets[index];
+        for (var _iterator16 = set, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _getIterator(_iterator16);;) {
+          var _ref17;
+
+          if (_isArray16) {
+            if (_i16 >= _iterator16.length) break;
+            _ref17 = _iterator16[_i16++];
+          } else {
+            _i16 = _iterator16.next();
+            if (_i16.done) break;
+            _ref17 = _i16.value;
+          }
+
+          var rule = _ref17;
+
+          if (this.sequenceMatches(-rule.backtrack.length, rule.backtrack) && this.sequenceMatches(1, rule.input) && this.sequenceMatches(1 + rule.input.length, rule.lookahead)) {
+            return this.applyLookupList(rule.lookupRecords);
+          }
+        }
+
+        break;
+
+      case 2:
+        if (this.coverageIndex(table.coverage) === -1) {
+          return false;
+        }
+
+        index = this.getClassID(this.glyphIterator.cur.id, table.inputClassDef);
+        var rules = table.chainClassSet[index];
+        if (!rules) {
+          return false;
+        }
+
+        for (var _iterator17 = rules, _isArray17 = Array.isArray(_iterator17), _i17 = 0, _iterator17 = _isArray17 ? _iterator17 : _getIterator(_iterator17);;) {
+          var _ref18;
+
+          if (_isArray17) {
+            if (_i17 >= _iterator17.length) break;
+            _ref18 = _iterator17[_i17++];
+          } else {
+            _i17 = _iterator17.next();
+            if (_i17.done) break;
+            _ref18 = _i17.value;
+          }
+
+          var _rule2 = _ref18;
+
+          if (this.classSequenceMatches(-_rule2.backtrack.length, _rule2.backtrack, table.backtrackClassDef) && this.classSequenceMatches(1, _rule2.input, table.inputClassDef) && this.classSequenceMatches(1 + _rule2.input.length, _rule2.lookahead, table.lookaheadClassDef)) {
+            return this.applyLookupList(_rule2.lookupRecords);
+          }
+        }
+
+        break;
+
+      case 3:
+        if (this.coverageSequenceMatches(-table.backtrackGlyphCount, table.backtrackCoverage) && this.coverageSequenceMatches(0, table.inputCoverage) && this.coverageSequenceMatches(table.inputGlyphCount, table.lookaheadCoverage)) {
+          return this.applyLookupList(table.lookupRecords);
+        }
+
+        break;
+    }
+
+    return false;
+  };
+
+  return OTProcessor;
+}();
+
+var GlyphInfo = function () {
+  function GlyphInfo(font, id) {
+    var codePoints = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
+    var features = arguments[3];
+
+    _classCallCheck(this, GlyphInfo);
+
+    this._font = font;
+    this.codePoints = codePoints;
+    this.id = id;
+
+    this.features = {};
+    if (Array.isArray(features)) {
+      for (var i = 0; i < features.length; i++) {
+        var feature = features[i];
+        this.features[feature] = true;
+      }
+    } else if ((typeof features === 'undefined' ? 'undefined' : _typeof(features)) === 'object') {
+      _Object$assign(this.features, features);
+    }
+
+    this.ligatureID = null;
+    this.ligatureComponent = null;
+    this.isLigated = false;
+    this.cursiveAttachment = null;
+    this.markAttachment = null;
+    this.shaperInfo = null;
+    this.substituted = false;
+    this.isMultiplied = false;
+  }
+
+  GlyphInfo.prototype.copy = function copy() {
+    return new GlyphInfo(this._font, this.id, this.codePoints, this.features);
+  };
+
+  _createClass(GlyphInfo, [{
+    key: 'id',
+    get: function get() {
+      return this._id;
+    },
+    set: function set(id) {
+      this._id = id;
+      this.substituted = true;
+
+      var GDEF = this._font.GDEF;
+      if (GDEF && GDEF.glyphClassDef) {
+        // TODO: clean this up
+        var classID = OTProcessor.prototype.getClassID(id, GDEF.glyphClassDef);
+        this.isBase = classID === 1;
+        this.isLigature = classID === 2;
+        this.isMark = classID === 3;
+        this.markAttachmentType = GDEF.markAttachClassDef ? OTProcessor.prototype.getClassID(id, GDEF.markAttachClassDef) : 0;
+      } else {
+        this.isMark = this.codePoints.every(unicode.isMark);
+        this.isBase = !this.isMark;
+        this.isLigature = this.codePoints.length > 1;
+        this.markAttachmentType = 0;
+      }
+    }
+  }]);
+
+  return GlyphInfo;
+}();
+
+var _class$5;
+var _temp$1;
+/**
+ * This is a shaper for the Hangul script, used by the Korean language.
+ * It does the following:
+ *   - decompose if unsupported by the font:
+ *     <LV>   -> <L,V>
+ *     <LVT>  -> <L,V,T>
+ *     <LV,T> -> <L,V,T>
+ *
+ *   - compose if supported by the font:
+ *     <L,V>   -> <LV>
+ *     <L,V,T> -> <LVT>
+ *     <LV,T>  -> <LVT>
+ *
+ *   - reorder tone marks (S is any valid syllable):
+ *     <S, M> -> <M, S>
+ *
+ *   - apply ljmo, vjmo, and tjmo OpenType features to decomposed Jamo sequences.
+ *
+ * This logic is based on the following documents:
+ *   - http://www.microsoft.com/typography/OpenTypeDev/hangul/intro.htm
+ *   - http://ktug.org/~nomos/harfbuzz-hangul/hangulshaper.pdf
+ */
+var HangulShaper = (_temp$1 = _class$5 = function (_DefaultShaper) {
+  _inherits(HangulShaper, _DefaultShaper);
+
+  function HangulShaper() {
+    _classCallCheck(this, HangulShaper);
+
+    return _possibleConstructorReturn(this, _DefaultShaper.apply(this, arguments));
+  }
+
+  HangulShaper.planFeatures = function planFeatures(plan) {
+    plan.add(['ljmo', 'vjmo', 'tjmo'], false);
+  };
+
+  HangulShaper.assignFeatures = function assignFeatures(plan, glyphs) {
+    var state = 0;
+    var i = 0;
+    while (i < glyphs.length) {
+      var action = void 0;
+      var glyph = glyphs[i];
+      var code = glyph.codePoints[0];
+      var type = getType(code);
+
+      var _STATE_TABLE$state$ty = STATE_TABLE$1[state][type];
+      action = _STATE_TABLE$state$ty[0];
+      state = _STATE_TABLE$state$ty[1];
+
+
+      switch (action) {
+        case DECOMPOSE:
+          // Decompose the composed syllable if it is not supported by the font.
+          if (!plan.font.hasGlyphForCodePoint(code)) {
+            i = decompose(glyphs, i, plan.font);
+          }
+          break;
+
+        case COMPOSE:
+          // Found a decomposed syllable. Try to compose if supported by the font.
+          i = compose(glyphs, i, plan.font);
+          break;
+
+        case TONE_MARK:
+          // Got a valid syllable, followed by a tone mark. Move the tone mark to the beginning of the syllable.
+          reorderToneMark(glyphs, i, plan.font);
+          break;
+
+        case INVALID:
+          // Tone mark has no valid syllable to attach to, so insert a dotted circle
+          i = insertDottedCircle(glyphs, i, plan.font);
+          break;
+      }
+
+      i++;
+    }
+  };
+
+  return HangulShaper;
+}(DefaultShaper), _class$5.zeroMarkWidths = 'NONE', _temp$1);
+var HANGUL_BASE = 0xac00;
+var HANGUL_END = 0xd7a4;
+var HANGUL_COUNT = HANGUL_END - HANGUL_BASE + 1;
+var L_BASE = 0x1100; // lead
+var V_BASE = 0x1161; // vowel
+var T_BASE = 0x11a7; // trail
+var L_COUNT = 19;
+var V_COUNT = 21;
+var T_COUNT = 28;
+var L_END = L_BASE + L_COUNT - 1;
+var V_END = V_BASE + V_COUNT - 1;
+var T_END = T_BASE + T_COUNT - 1;
+var DOTTED_CIRCLE = 0x25cc;
+
+var isL = function isL(code) {
+  return 0x1100 <= code && code <= 0x115f || 0xa960 <= code && code <= 0xa97c;
+};
+var isV = function isV(code) {
+  return 0x1160 <= code && code <= 0x11a7 || 0xd7b0 <= code && code <= 0xd7c6;
+};
+var isT = function isT(code) {
+  return 0x11a8 <= code && code <= 0x11ff || 0xd7cb <= code && code <= 0xd7fb;
+};
+var isTone = function isTone(code) {
+  return 0x302e <= code && code <= 0x302f;
+};
+var isLVT = function isLVT(code) {
+  return HANGUL_BASE <= code && code <= HANGUL_END;
+};
+var isLV = function isLV(code) {
+  return code - HANGUL_BASE < HANGUL_COUNT && (code - HANGUL_BASE) % T_COUNT === 0;
+};
+var isCombiningL = function isCombiningL(code) {
+  return L_BASE <= code && code <= L_END;
+};
+var isCombiningV = function isCombiningV(code) {
+  return V_BASE <= code && code <= V_END;
+};
+var isCombiningT = function isCombiningT(code) {
+  return T_BASE + 1 && 1 <= code && code <= T_END;
+};
+
+// Character categories
+var X = 0; // Other character
+var L = 1; // Leading consonant
+var V = 2; // Medial vowel
+var T = 3; // Trailing consonant
+var LV = 4; // Composed <LV> syllable
+var LVT = 5; // Composed <LVT> syllable
+var M = 6; // Tone mark
+
+// This function classifies a character using the above categories.
+function getType(code) {
+  if (isL(code)) {
+    return L;
+  }
+  if (isV(code)) {
+    return V;
+  }
+  if (isT(code)) {
+    return T;
+  }
+  if (isLV(code)) {
+    return LV;
+  }
+  if (isLVT(code)) {
+    return LVT;
+  }
+  if (isTone(code)) {
+    return M;
+  }
+  return X;
+}
+
+// State machine actions
+var NO_ACTION = 0;
+var DECOMPOSE = 1;
+var COMPOSE = 2;
+var TONE_MARK = 4;
+var INVALID = 5;
+
+// Build a state machine that accepts valid syllables, and applies actions along the way.
+// The logic this is implementing is documented at the top of the file.
+var STATE_TABLE$1 = [
+//       X                 L                 V                T                  LV                LVT               M
+// State 0: start state
+[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [INVALID, 0]],
+
+// State 1: <L>
+[[NO_ACTION, 0], [NO_ACTION, 1], [COMPOSE, 2], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [INVALID, 0]],
+
+// State 2: <L,V> or <LV>
+[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [COMPOSE, 3], [DECOMPOSE, 2], [DECOMPOSE, 3], [TONE_MARK, 0]],
+
+// State 3: <L,V,T> or <LVT>
+[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [TONE_MARK, 0]]];
+
+function getGlyph(font, code, features) {
+  return new GlyphInfo(font, font.glyphForCodePoint(code).id, [code], features);
+}
+
+function decompose(glyphs, i, font) {
+  var glyph = glyphs[i];
+  var code = glyph.codePoints[0];
+
+  var s = code - HANGUL_BASE;
+  var t = T_BASE + s % T_COUNT;
+  s = s / T_COUNT | 0;
+  var l = L_BASE + s / V_COUNT | 0;
+  var v = V_BASE + s % V_COUNT;
+
+  // Don't decompose if all of the components are not available
+  if (!font.hasGlyphForCodePoint(l) || !font.hasGlyphForCodePoint(v) || t !== T_BASE && !font.hasGlyphForCodePoint(t)) {
+    return i;
+  }
+
+  // Replace the current glyph with decomposed L, V, and T glyphs,
+  // and apply the proper OpenType features to each component.
+  var ljmo = getGlyph(font, l, glyph.features);
+  ljmo.features.ljmo = true;
+
+  var vjmo = getGlyph(font, v, glyph.features);
+  vjmo.features.vjmo = true;
+
+  var insert = [ljmo, vjmo];
+
+  if (t > T_BASE) {
+    var tjmo = getGlyph(font, t, glyph.features);
+    tjmo.features.tjmo = true;
+    insert.push(tjmo);
+  }
+
+  glyphs.splice.apply(glyphs, [i, 1].concat(insert));
+  return i + insert.length - 1;
+}
+
+function compose(glyphs, i, font) {
+  var glyph = glyphs[i];
+  var code = glyphs[i].codePoints[0];
+  var type = getType(code);
+
+  var prev = glyphs[i - 1].codePoints[0];
+  var prevType = getType(prev);
+
+  // Figure out what type of syllable we're dealing with
+  var lv = void 0,
+      ljmo = void 0,
+      vjmo = void 0,
+      tjmo = void 0;
+  if (prevType === LV && type === T) {
+    // <LV,T>
+    lv = prev;
+    tjmo = glyph;
+  } else {
+    if (type === V) {
+      // <L,V>
+      ljmo = glyphs[i - 1];
+      vjmo = glyph;
+    } else {
+      // <L,V,T>
+      ljmo = glyphs[i - 2];
+      vjmo = glyphs[i - 1];
+      tjmo = glyph;
+    }
+
+    var l = ljmo.codePoints[0];
+    var v = vjmo.codePoints[0];
+
+    // Make sure L and V are combining characters
+    if (isCombiningL(l) && isCombiningV(v)) {
+      lv = HANGUL_BASE + ((l - L_BASE) * V_COUNT + (v - V_BASE)) * T_COUNT;
+    }
+  }
+
+  var t = tjmo && tjmo.codePoints[0] || T_BASE;
+  if (lv != null && (t === T_BASE || isCombiningT(t))) {
+    var s = lv + (t - T_BASE);
+
+    // Replace with a composed glyph if supported by the font,
+    // otherwise apply the proper OpenType features to each component.
+    if (font.hasGlyphForCodePoint(s)) {
+      var del = prevType === V ? 3 : 2;
+      glyphs.splice(i - del + 1, del, getGlyph(font, s, glyph.features));
+      return i - del + 1;
+    }
+  }
+
+  // Didn't compose (either a non-combining component or unsupported by font).
+  if (ljmo) {
+    ljmo.features.ljmo = true;
+  }
+  if (vjmo) {
+    vjmo.features.vjmo = true;
+  }
+  if (tjmo) {
+    tjmo.features.tjmo = true;
+  }
+
+  if (prevType === LV) {
+    // Sequence was originally <L,V>, which got combined earlier.
+    // Either the T was non-combining, or the LVT glyph wasn't supported.
+    // Decompose the glyph again and apply OT features.
+    decompose(glyphs, i - 1, font);
+    return i + 1;
+  }
+
+  return i;
+}
+
+function getLength(code) {
+  switch (getType(code)) {
+    case LV:
+    case LVT:
+      return 1;
+    case V:
+      return 2;
+    case T:
+      return 3;
+  }
+}
+
+function reorderToneMark(glyphs, i, font) {
+  var glyph = glyphs[i];
+  var code = glyphs[i].codePoints[0];
+
+  // Move tone mark to the beginning of the previous syllable, unless it is zero width
+  if (font.glyphForCodePoint(code).advanceWidth === 0) {
+    return;
+  }
+
+  var prev = glyphs[i - 1].codePoints[0];
+  var len = getLength(prev);
+
+  glyphs.splice(i, 1);
+  return glyphs.splice(i - len, 0, glyph);
+}
+
+function insertDottedCircle(glyphs, i, font) {
+  var glyph = glyphs[i];
+  var code = glyphs[i].codePoints[0];
+
+  if (font.hasGlyphForCodePoint(DOTTED_CIRCLE)) {
+    var dottedCircle = getGlyph(font, DOTTED_CIRCLE, glyph.features);
+
+    // If the tone mark is zero width, insert the dotted circle before, otherwise after
+    var idx = font.glyphForCodePoint(code).advanceWidth === 0 ? i : i + 1;
+    glyphs.splice(idx, 0, dottedCircle);
+    i++;
+  }
+
+  return i;
+}
+
+var stateTable = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 11, 12, 13, 14, 15, 16, 17], [0, 0, 0, 18, 19, 20, 21, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 28, 29, 30, 31, 32, 33, 0, 34, 0, 0, 35, 36, 0, 0, 37, 0], [0, 0, 0, 38, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 39, 0, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 43, 44, 44, 8, 9, 0, 0, 0, 0, 12, 43, 0, 0, 0, 0], [0, 0, 0, 0, 43, 44, 44, 8, 9, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0], [0, 0, 0, 45, 46, 47, 48, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 50, 0, 0, 51, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 53, 54, 55, 56, 57, 58, 0, 59, 0, 0, 60, 61, 0, 0, 62, 0], [0, 0, 0, 4, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 63, 64, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 63, 0, 0], [0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 11, 12, 13, 0, 2, 16, 0], [0, 0, 0, 18, 65, 20, 21, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 0, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 0, 0], [0, 0, 0, 69, 0, 70, 70, 0, 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 73, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 75, 0, 0, 0, 76, 77, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 79, 80, 80, 22, 23, 0, 0, 0, 0, 25, 79, 0, 0, 0, 0], [0, 0, 0, 18, 19, 20, 74, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 81, 82, 83, 84, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 86, 0, 0, 87, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 18, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 89, 90, 0, 0, 76, 77, 0, 23, 0, 24, 0, 0, 0, 78, 0, 89, 0, 0], [0, 0, 0, 0, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 0, 0], [0, 0, 0, 94, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 96, 0, 0, 0, 97, 98, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 35, 100, 0, 0, 0, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0], [0, 0, 0, 102, 103, 104, 105, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 107, 0, 0, 108, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 28, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 110, 111, 0, 0, 97, 98, 0, 33, 0, 34, 0, 0, 0, 99, 0, 110, 0, 0], [0, 0, 0, 0, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 0, 0], [0, 0, 0, 0, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 0, 0, 115, 116, 117, 118, 8, 9, 0, 10, 0, 0, 119, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 39, 0, 122, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 124, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0], [0, 39, 0, 0, 0, 121, 125, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 126, 126, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 46, 47, 48, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 47, 47, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 127, 127, 49, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 128, 127, 127, 49, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 129, 130, 131, 132, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 135, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 136, 0, 0, 0, 137, 138, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 140, 141, 141, 57, 58, 0, 0, 0, 0, 60, 140, 0, 0, 0, 0], [0, 0, 0, 0, 140, 141, 141, 57, 58, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0], [0, 0, 0, 142, 143, 144, 145, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 147, 0, 0, 148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 53, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 150, 151, 0, 0, 137, 138, 0, 58, 0, 59, 0, 0, 0, 139, 0, 150, 0, 0], [0, 0, 0, 0, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 0, 0], [0, 0, 0, 155, 116, 156, 157, 8, 9, 0, 10, 0, 0, 158, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 75, 3, 4, 5, 159, 160, 8, 161, 0, 162, 0, 11, 12, 163, 0, 75, 16, 0], [0, 0, 0, 0, 0, 40, 164, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0], [0, 124, 64, 0, 0, 40, 164, 0, 9, 0, 10, 0, 0, 0, 42, 0, 124, 0, 0], [0, 0, 0, 0, 0, 70, 70, 0, 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 166, 0, 0, 167, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 0, 0, 0, 79, 80, 80, 22, 23, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0], [0, 0, 0, 169, 170, 171, 172, 22, 23, 0, 24, 0, 0, 173, 174, 0, 0, 27, 0], [0, 0, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 75, 0, 176, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 178, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0], [0, 75, 0, 0, 0, 175, 179, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 180, 180, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 82, 83, 84, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 83, 83, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 181, 181, 85, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 182, 181, 181, 85, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 183, 184, 185, 186, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 189, 170, 190, 191, 22, 23, 0, 24, 0, 0, 192, 174, 0, 0, 27, 0], [0, 0, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 76, 193, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 0, 194, 0, 0, 0, 0], [0, 178, 90, 0, 0, 76, 193, 0, 23, 0, 24, 0, 0, 0, 78, 0, 178, 0, 0], [0, 0, 0, 0, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0], [0, 0, 0, 195, 196, 197, 198, 32, 33, 0, 34, 0, 0, 199, 200, 0, 0, 37, 0], [0, 0, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 96, 0, 202, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 204, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0], [0, 96, 0, 0, 0, 201, 205, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 206, 206, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 103, 104, 105, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 104, 104, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 207, 207, 106, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 208, 207, 207, 106, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 209, 210, 211, 212, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 215, 196, 216, 217, 32, 33, 0, 34, 0, 0, 218, 200, 0, 0, 37, 0], [0, 0, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 97, 219, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0], [0, 204, 111, 0, 0, 97, 219, 0, 33, 0, 34, 0, 0, 0, 99, 0, 204, 0, 0], [0, 0, 0, 221, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 223, 0, 0, 0, 40, 224, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 119, 225, 0, 0, 0, 0], [0, 0, 0, 115, 116, 117, 222, 8, 9, 0, 10, 0, 0, 119, 120, 0, 0, 16, 0], [0, 0, 0, 115, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 226, 64, 0, 0, 40, 224, 0, 9, 0, 10, 0, 0, 0, 42, 0, 226, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 39, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 44, 44, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 228, 229, 0, 9, 0, 10, 0, 0, 230, 0, 0, 0, 0, 0], [0, 39, 0, 122, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 231, 231, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 130, 131, 132, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 131, 131, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 233, 233, 133, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 234, 233, 233, 133, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 235, 236, 237, 238, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 0, 0, 240, 241, 242, 243, 57, 58, 0, 59, 0, 0, 244, 245, 0, 0, 62, 0], [0, 0, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 136, 0, 247, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 249, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0], [0, 136, 0, 0, 0, 246, 250, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 251, 251, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 143, 144, 145, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 144, 144, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 252, 252, 146, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 253, 252, 252, 146, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 254, 255, 256, 257, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 260, 241, 261, 262, 57, 58, 0, 59, 0, 0, 263, 245, 0, 0, 62, 0], [0, 0, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 137, 264, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0], [0, 249, 151, 0, 0, 137, 264, 0, 58, 0, 59, 0, 0, 0, 139, 0, 249, 0, 0], [0, 0, 0, 221, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 158, 225, 0, 0, 0, 0], [0, 0, 0, 155, 116, 156, 222, 8, 9, 0, 10, 0, 0, 158, 120, 0, 0, 16, 0], [0, 0, 0, 155, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 43, 266, 266, 8, 161, 0, 24, 0, 0, 12, 267, 0, 0, 0, 0], [0, 75, 0, 176, 43, 268, 268, 269, 161, 0, 24, 0, 0, 0, 267, 0, 75, 0, 0], [0, 0, 0, 0, 0, 270, 0, 0, 271, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0], [0, 273, 274, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 273, 0, 0], [0, 0, 0, 40, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 121, 275, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 277, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 279, 0, 0, 0, 76, 280, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 173, 281, 0, 0, 0, 0], [0, 0, 0, 169, 170, 171, 278, 22, 23, 0, 24, 0, 0, 173, 174, 0, 0, 27, 0], [0, 0, 0, 169, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 282, 90, 0, 0, 76, 280, 0, 23, 0, 24, 0, 0, 0, 78, 0, 282, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 75, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 80, 80, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 284, 285, 0, 23, 0, 24, 0, 0, 286, 0, 0, 0, 0, 0], [0, 75, 0, 176, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 287, 287, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 184, 185, 186, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 185, 185, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 289, 289, 187, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 290, 289, 289, 187, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 291, 292, 293, 294, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 277, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 192, 281, 0, 0, 0, 0], [0, 0, 0, 189, 170, 190, 278, 22, 23, 0, 24, 0, 0, 192, 174, 0, 0, 27, 0], [0, 0, 0, 189, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 76, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 175, 296, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 297, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 299, 0, 0, 0, 97, 300, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 199, 301, 0, 0, 0, 0], [0, 0, 0, 195, 196, 197, 298, 32, 33, 0, 34, 0, 0, 199, 200, 0, 0, 37, 0], [0, 0, 0, 195, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 302, 111, 0, 0, 97, 300, 0, 33, 0, 34, 0, 0, 0, 99, 0, 302, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 96, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 101, 101, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 304, 305, 0, 33, 0, 34, 0, 0, 306, 0, 0, 0, 0, 0], [0, 96, 0, 202, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 307, 307, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 210, 211, 212, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 211, 211, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 309, 309, 213, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 310, 309, 309, 213, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 311, 312, 313, 314, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 297, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 218, 301, 0, 0, 0, 0], [0, 0, 0, 215, 196, 216, 298, 32, 33, 0, 34, 0, 0, 218, 200, 0, 0, 37, 0], [0, 0, 0, 215, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 97, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 201, 316, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0], [0, 0, 0, 317, 318, 319, 320, 8, 9, 0, 10, 0, 0, 321, 322, 0, 0, 16, 0], [0, 223, 0, 323, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 223, 0, 0, 0, 121, 324, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 325, 318, 326, 327, 8, 9, 0, 10, 0, 0, 328, 322, 0, 0, 16, 0], [0, 0, 0, 64, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 228, 121, 0, 9, 0, 10, 0, 0, 230, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0], [0, 0, 0, 0, 0, 329, 329, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 236, 237, 238, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 237, 237, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 331, 331, 239, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 332, 331, 331, 239, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 333, 40, 121, 334, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 335, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 337, 0, 0, 0, 137, 338, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 244, 339, 0, 0, 0, 0], [0, 0, 0, 240, 241, 242, 336, 57, 58, 0, 59, 0, 0, 244, 245, 0, 0, 62, 0], [0, 0, 0, 240, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 340, 151, 0, 0, 137, 338, 0, 58, 0, 59, 0, 0, 0, 139, 0, 340, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 136, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 141, 141, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 342, 343, 0, 58, 0, 59, 0, 0, 344, 0, 0, 0, 0, 0], [0, 136, 0, 247, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 345, 345, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 255, 256, 257, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 256, 256, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 347, 347, 258, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 348, 347, 347, 258, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 349, 350, 351, 352, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 335, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 263, 339, 0, 0, 0, 0], [0, 0, 0, 260, 241, 261, 336, 57, 58, 0, 59, 0, 0, 263, 245, 0, 0, 62, 0], [0, 0, 0, 260, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 137, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 246, 354, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 126, 126, 8, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 355, 90, 0, 0, 121, 125, 0, 9, 0, 10, 0, 0, 0, 42, 0, 355, 0, 0], [0, 0, 0, 0, 0, 356, 356, 269, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 357, 358, 359, 360, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 270, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 364, 116, 365, 366, 8, 161, 0, 162, 0, 0, 367, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 40, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 0, 281, 0, 0, 0, 0], [0, 0, 0, 369, 370, 371, 372, 22, 23, 0, 24, 0, 0, 373, 374, 0, 0, 27, 0], [0, 279, 0, 375, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 279, 0, 0, 0, 175, 376, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 377, 370, 378, 379, 22, 23, 0, 24, 0, 0, 380, 374, 0, 0, 27, 0], [0, 0, 0, 90, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 286, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 284, 175, 0, 23, 0, 24, 0, 0, 286, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0], [0, 0, 0, 0, 0, 381, 381, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 292, 293, 294, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 293, 293, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 383, 383, 295, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 384, 383, 383, 295, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 385, 76, 175, 386, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 76, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 0, 301, 0, 0, 0, 0], [0, 0, 0, 387, 388, 389, 390, 32, 33, 0, 34, 0, 0, 391, 392, 0, 0, 37, 0], [0, 299, 0, 393, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 299, 0, 0, 0, 201, 394, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 395, 388, 396, 397, 32, 33, 0, 34, 0, 0, 398, 392, 0, 0, 37, 0], [0, 0, 0, 111, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 304, 201, 0, 33, 0, 34, 0, 0, 306, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0], [0, 0, 0, 0, 0, 399, 399, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 312, 313, 314, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 313, 313, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 401, 401, 315, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 402, 401, 401, 315, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 403, 97, 201, 404, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 97, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 405, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 407, 0, 0, 0, 40, 408, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 321, 409, 0, 0, 0, 0], [0, 0, 0, 317, 318, 319, 406, 8, 9, 0, 10, 0, 0, 321, 322, 0, 0, 16, 0], [0, 0, 0, 317, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 410, 64, 0, 0, 40, 408, 0, 9, 0, 10, 0, 0, 0, 42, 0, 410, 0, 0], [0, 223, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 223, 0, 323, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 405, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 328, 409, 0, 0, 0, 0], [0, 0, 0, 325, 318, 326, 406, 8, 9, 0, 10, 0, 0, 328, 322, 0, 0, 16, 0], [0, 0, 0, 325, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0], [0, 0, 0, 0, 0, 411, 411, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 40, 121, 334, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 413, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 0, 339, 0, 0, 0, 0], [0, 0, 0, 414, 415, 416, 417, 57, 58, 0, 59, 0, 0, 418, 419, 0, 0, 62, 0], [0, 337, 0, 420, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 337, 0, 0, 0, 246, 421, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 422, 415, 423, 424, 57, 58, 0, 59, 0, 0, 425, 419, 0, 0, 62, 0], [0, 0, 0, 151, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 344, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 342, 246, 0, 58, 0, 59, 0, 0, 344, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0], [0, 0, 0, 0, 0, 426, 426, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 350, 351, 352, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 351, 351, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 428, 428, 353, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 429, 428, 428, 353, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 430, 137, 246, 431, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 137, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 432, 116, 433, 434, 8, 161, 0, 162, 0, 0, 435, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 180, 180, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 358, 359, 360, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 359, 359, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 436, 436, 361, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 437, 436, 436, 361, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 438, 439, 440, 441, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 443, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 443, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 444, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 367, 225, 0, 0, 0, 0], [0, 0, 0, 364, 116, 365, 445, 8, 161, 0, 162, 0, 0, 367, 120, 0, 0, 16, 0], [0, 0, 0, 364, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 446, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 448, 0, 0, 0, 76, 449, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 373, 450, 0, 0, 0, 0], [0, 0, 0, 369, 370, 371, 447, 22, 23, 0, 24, 0, 0, 373, 374, 0, 0, 27, 0], [0, 0, 0, 369, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 451, 90, 0, 0, 76, 449, 0, 23, 0, 24, 0, 0, 0, 78, 0, 451, 0, 0], [0, 279, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 279, 0, 375, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 446, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 380, 450, 0, 0, 0, 0], [0, 0, 0, 377, 370, 378, 447, 22, 23, 0, 24, 0, 0, 380, 374, 0, 0, 27, 0], [0, 0, 0, 377, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0], [0, 0, 0, 0, 0, 452, 452, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 76, 175, 386, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 454, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 455, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 457, 0, 0, 0, 97, 458, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 391, 459, 0, 0, 0, 0], [0, 0, 0, 387, 388, 389, 456, 32, 33, 0, 34, 0, 0, 391, 392, 0, 0, 37, 0], [0, 0, 0, 387, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 460, 111, 0, 0, 97, 458, 0, 33, 0, 34, 0, 0, 0, 99, 0, 460, 0, 0], [0, 299, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 299, 0, 393, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 455, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 398, 459, 0, 0, 0, 0], [0, 0, 0, 395, 388, 396, 456, 32, 33, 0, 34, 0, 0, 398, 392, 0, 0, 37, 0], [0, 0, 0, 395, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0], [0, 0, 0, 0, 0, 461, 461, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 97, 201, 404, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 463, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 0, 409, 0, 0, 0, 0], [0, 0, 0, 464, 465, 466, 467, 8, 9, 0, 10, 0, 0, 468, 469, 0, 0, 16, 0], [0, 407, 0, 470, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 407, 0, 0, 0, 121, 471, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 472, 465, 473, 474, 8, 9, 0, 10, 0, 0, 475, 469, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0], [0, 0, 0, 0, 0, 0, 476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 477, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 479, 0, 0, 0, 137, 480, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 418, 481, 0, 0, 0, 0], [0, 0, 0, 414, 415, 416, 478, 57, 58, 0, 59, 0, 0, 418, 419, 0, 0, 62, 0], [0, 0, 0, 414, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 482, 151, 0, 0, 137, 480, 0, 58, 0, 59, 0, 0, 0, 139, 0, 482, 0, 0], [0, 337, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 337, 0, 420, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 477, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 425, 481, 0, 0, 0, 0], [0, 0, 0, 422, 415, 423, 478, 57, 58, 0, 59, 0, 0, 425, 419, 0, 0, 62, 0], [0, 0, 0, 422, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0], [0, 0, 0, 0, 0, 483, 483, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 137, 246, 431, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 485, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 444, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 435, 225, 0, 0, 0, 0], [0, 0, 0, 432, 116, 433, 445, 8, 161, 0, 162, 0, 0, 435, 120, 0, 0, 16, 0], [0, 0, 0, 432, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 486, 486, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 439, 440, 441, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 440, 440, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 488, 488, 442, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 489, 488, 488, 442, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 490, 491, 492, 493, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 495, 0, 496, 497, 0, 161, 0, 162, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 0, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0], [0, 0, 0, 0, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 0, 450, 0, 0, 0, 0], [0, 0, 0, 499, 500, 501, 502, 22, 23, 0, 24, 0, 0, 503, 504, 0, 0, 27, 0], [0, 448, 0, 505, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 448, 0, 0, 0, 175, 506, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 507, 500, 508, 509, 22, 23, 0, 24, 0, 0, 510, 504, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 292, 0, 0], [0, 0, 0, 0, 0, 0, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 0, 459, 0, 0, 0, 0], [0, 0, 0, 512, 513, 514, 515, 32, 33, 0, 34, 0, 0, 516, 517, 0, 0, 37, 0], [0, 457, 0, 518, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 457, 0, 0, 0, 201, 519, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 520, 513, 521, 522, 32, 33, 0, 34, 0, 0, 523, 517, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0], [0, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 525, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 527, 0, 0, 0, 40, 528, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 468, 529, 0, 0, 0, 0], [0, 0, 0, 464, 465, 466, 526, 8, 9, 0, 10, 0, 0, 468, 469, 0, 0, 16, 0], [0, 0, 0, 464, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 530, 64, 0, 0, 40, 528, 0, 9, 0, 10, 0, 0, 0, 42, 0, 530, 0, 0], [0, 407, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 407, 0, 470, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 525, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 475, 529, 0, 0, 0, 0], [0, 0, 0, 472, 465, 473, 526, 8, 9, 0, 10, 0, 0, 475, 469, 0, 0, 16, 0], [0, 0, 0, 472, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0], [0, 0, 0, 0, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 0, 481, 0, 0, 0, 0], [0, 0, 0, 531, 532, 533, 534, 57, 58, 0, 59, 0, 0, 535, 536, 0, 0, 62, 0], [0, 479, 0, 537, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 479, 0, 0, 0, 246, 538, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 539, 532, 540, 541, 57, 58, 0, 59, 0, 0, 542, 536, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 0, 0], [0, 0, 0, 0, 0, 0, 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 0, 0], [0, 0, 0, 0, 0, 544, 544, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 491, 492, 493, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 492, 492, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 546, 546, 494, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 547, 546, 546, 494, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 548, 549, 368, 550, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 274, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 495, 0, 496, 368, 0, 161, 0, 162, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 495, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 551, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 553, 0, 0, 0, 76, 554, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 503, 555, 0, 0, 0, 0], [0, 0, 0, 499, 500, 501, 552, 22, 23, 0, 24, 0, 0, 503, 504, 0, 0, 27, 0], [0, 0, 0, 499, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 556, 90, 0, 0, 76, 554, 0, 23, 0, 24, 0, 0, 0, 78, 0, 556, 0, 0], [0, 448, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 448, 0, 505, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 551, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 510, 555, 0, 0, 0, 0], [0, 0, 0, 507, 500, 508, 552, 22, 23, 0, 24, 0, 0, 510, 504, 0, 0, 27, 0], [0, 0, 0, 507, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0], [0, 0, 0, 557, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 559, 0, 0, 0, 97, 560, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 516, 561, 0, 0, 0, 0], [0, 0, 0, 512, 513, 514, 558, 32, 33, 0, 34, 0, 0, 516, 517, 0, 0, 37, 0], [0, 0, 0, 512, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 562, 111, 0, 0, 97, 560, 0, 33, 0, 34, 0, 0, 0, 99, 0, 562, 0, 0], [0, 457, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 457, 0, 518, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 557, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 523, 561, 0, 0, 0, 0], [0, 0, 0, 520, 513, 521, 558, 32, 33, 0, 34, 0, 0, 523, 517, 0, 0, 37, 0], [0, 0, 0, 520, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0], [0, 0, 0, 0, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 0, 529, 0, 0, 0, 0], [0, 0, 0, 563, 66, 564, 565, 8, 9, 0, 10, 0, 0, 566, 68, 0, 0, 16, 0], [0, 527, 0, 567, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 527, 0, 0, 0, 121, 568, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 569, 66, 570, 571, 8, 9, 0, 10, 0, 0, 572, 68, 0, 0, 16, 0], [0, 0, 0, 573, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 575, 0, 0, 0, 137, 576, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 535, 577, 0, 0, 0, 0], [0, 0, 0, 531, 532, 533, 574, 57, 58, 0, 59, 0, 0, 535, 536, 0, 0, 62, 0], [0, 0, 0, 531, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 578, 151, 0, 0, 137, 576, 0, 58, 0, 59, 0, 0, 0, 139, 0, 578, 0, 0], [0, 479, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 479, 0, 537, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 573, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 542, 577, 0, 0, 0, 0], [0, 0, 0, 539, 532, 540, 574, 57, 58, 0, 59, 0, 0, 542, 536, 0, 0, 62, 0], [0, 0, 0, 539, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0], [0, 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 439, 0, 0], [0, 0, 0, 0, 0, 579, 579, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 549, 368, 550, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 581, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 0, 555, 0, 0, 0, 0], [0, 0, 0, 582, 91, 583, 584, 22, 23, 0, 24, 0, 0, 585, 93, 0, 0, 27, 0], [0, 553, 0, 586, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 553, 0, 0, 0, 175, 587, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 588, 91, 589, 590, 22, 23, 0, 24, 0, 0, 591, 93, 0, 0, 27, 0], [0, 0, 0, 0, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 0, 561, 0, 0, 0, 0], [0, 0, 0, 592, 112, 593, 594, 32, 33, 0, 34, 0, 0, 595, 114, 0, 0, 37, 0], [0, 559, 0, 596, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 559, 0, 0, 0, 201, 597, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 598, 112, 599, 600, 32, 33, 0, 34, 0, 0, 601, 114, 0, 0, 37, 0], [0, 0, 0, 602, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 566, 165, 0, 0, 0, 0], [0, 0, 0, 563, 66, 564, 67, 8, 9, 0, 10, 0, 0, 566, 68, 0, 0, 16, 0], [0, 0, 0, 563, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 527, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 527, 0, 567, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 602, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 572, 165, 0, 0, 0, 0], [0, 0, 0, 569, 66, 570, 67, 8, 9, 0, 10, 0, 0, 572, 68, 0, 0, 16, 0], [0, 0, 0, 569, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 0, 577, 0, 0, 0, 0], [0, 0, 0, 603, 152, 604, 605, 57, 58, 0, 59, 0, 0, 606, 154, 0, 0, 62, 0], [0, 575, 0, 607, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 575, 0, 0, 0, 246, 608, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 609, 152, 610, 611, 57, 58, 0, 59, 0, 0, 612, 154, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 491, 0, 0], [0, 0, 0, 0, 0, 0, 613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 614, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 585, 194, 0, 0, 0, 0], [0, 0, 0, 582, 91, 583, 92, 22, 23, 0, 24, 0, 0, 585, 93, 0, 0, 27, 0], [0, 0, 0, 582, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 553, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 553, 0, 586, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 614, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 591, 194, 0, 0, 0, 0], [0, 0, 0, 588, 91, 589, 92, 22, 23, 0, 24, 0, 0, 591, 93, 0, 0, 27, 0], [0, 0, 0, 588, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 615, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 595, 220, 0, 0, 0, 0], [0, 0, 0, 592, 112, 593, 113, 32, 33, 0, 34, 0, 0, 595, 114, 0, 0, 37, 0], [0, 0, 0, 592, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 559, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 559, 0, 596, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 615, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 601, 220, 0, 0, 0, 0], [0, 0, 0, 598, 112, 599, 113, 32, 33, 0, 34, 0, 0, 601, 114, 0, 0, 37, 0], [0, 0, 0, 598, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 616, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 606, 265, 0, 0, 0, 0], [0, 0, 0, 603, 152, 604, 153, 57, 58, 0, 59, 0, 0, 606, 154, 0, 0, 62, 0], [0, 0, 0, 603, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 575, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 575, 0, 607, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 616, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 612, 265, 0, 0, 0, 0], [0, 0, 0, 609, 152, 610, 153, 57, 58, 0, 59, 0, 0, 612, 154, 0, 0, 62, 0], [0, 0, 0, 609, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 549, 0, 0], [0, 0, 0, 0, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0]];
+var accepting = [false, true, true, true, true, true, false, false, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, false, false, true, true, true, true, true, true, true, true, true, true, false, true, true, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, false, false, true, false, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, true, true, false, false, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, false, false, true, true, false, false, true, true, true, false, true, false, true, true, true, true, false, false, false, true, false, true, true, true, true, false, false, false, true, true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, true, true, true, false, false, false, false, false, false, false, true, true, false, false, true, true, false, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, true, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, false, true, true, false, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, true, false, true, true, true, true, false, false, false, true, false, true, true, true, true, true, false, true, true, true, false, true, true, true, true, true, false, true, true, true, true, false, true, true, true, true, true, false, true, true, false, true, true, true];
+var tags = [[], ["broken_cluster"], ["consonant_syllable"], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["consonant_syllable"], ["broken_cluster"], ["symbol_cluster"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["broken_cluster"], ["broken_cluster"], ["consonant_syllable", "broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["symbol_cluster"], [], ["symbol_cluster"], ["symbol_cluster"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], [], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["symbol_cluster"], ["symbol_cluster"], ["symbol_cluster"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], [], ["consonant_syllable"], ["consonant_syllable"], [], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], [], ["vowel_syllable"], ["vowel_syllable"], [], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], [], [], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["broken_cluster"], ["symbol_cluster"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], [], [], ["consonant_syllable"], ["consonant_syllable"], [], [], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], [], [], ["vowel_syllable"], ["vowel_syllable"], [], [], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], [], [], ["broken_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], [], [], ["consonant_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], [], [], ["vowel_syllable"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], [], [], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], ["standalone_cluster"], [], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], [], [], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], [], [], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], [], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], [], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], ["consonant_syllable"], ["vowel_syllable"], ["standalone_cluster"]];
+var indicMachine = {
+	stateTable: stateTable,
+	accepting: accepting,
+	tags: tags
+};
+
+var categories = ["O", "IND", "S", "GB", "B", "FM", "CGJ", "VMAbv", "VMPst", "VAbv", "VPst", "CMBlw", "VPre", "VBlw", "H", "VMBlw", "CMAbv", "MBlw", "CS", "R", "SUB", "MPst", "MPre", "FAbv", "FPst", "FBlw", "SMAbv", "SMBlw", "VMPre", "ZWNJ", "ZWJ", "WJ", "VS", "N", "HN", "MAbv"];
+var decompositions$1 = { "2507": [2503, 2494], "2508": [2503, 2519], "2888": [2887, 2902], "2891": [2887, 2878], "2892": [2887, 2903], "3018": [3014, 3006], "3019": [3015, 3006], "3020": [3014, 3031], "3144": [3142, 3158], "3264": [3263, 3285], "3271": [3270, 3285], "3272": [3270, 3286], "3274": [3270, 3266], "3275": [3270, 3266, 3285], "3402": [3398, 3390], "3403": [3399, 3390], "3404": [3398, 3415], "3546": [3545, 3530], "3548": [3545, 3535], "3549": [3545, 3535, 3530], "3550": [3545, 3551], "3635": [3661, 3634], "3763": [3789, 3762], "3955": [3953, 3954], "3957": [3953, 3956], "3958": [4018, 3968], "3959": [4018, 3953, 3968], "3960": [4019, 3968], "3961": [4019, 3953, 3968], "3969": [3953, 3968], "6971": [6970, 6965], "6973": [6972, 6965], "6976": [6974, 6965], "6977": [6975, 6965], "6979": [6978, 6965], "69934": [69937, 69927], "69935": [69938, 69927], "70475": [70471, 70462], "70476": [70471, 70487], "70843": [70841, 70842], "70844": [70841, 70832], "70846": [70841, 70845], "71098": [71096, 71087], "71099": [71097, 71087] };
+var stateTable$1 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [2, 2, 3, 4, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 17, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 2, 0, 24, 0, 25], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 0, 0, 27, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 39, 0, 0, 47], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 9, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 9, 0, 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 0, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 4, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 48, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 49, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 16, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 16, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 0, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 33, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 0, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 33, 0, 0, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 0, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 52, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 53, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 40, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 40, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 0, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 48, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 0, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 52, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0]];
+var accepting$1 = [false, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true];
+var tags$1 = [[], ["broken_cluster"], ["independent_cluster"], ["symbol_cluster"], ["standard_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["numeral_cluster"], ["broken_cluster"], ["independent_cluster"], ["symbol_cluster"], ["symbol_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["virama_terminated_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["broken_cluster"], ["broken_cluster"], ["numeral_cluster"], ["number_joiner_terminated_cluster"], ["standard_cluster"], ["standard_cluster"], ["numeral_cluster"]];
+var useData = {
+	categories: categories,
+	decompositions: decompositions$1,
+	stateTable: stateTable$1,
+	accepting: accepting$1,
+	tags: tags$1
+};
+
+// Cateories used in the OpenType spec:
+// https://www.microsoft.com/typography/otfntdev/devanot/shaping.aspx
+var CATEGORIES = {
+  X: 1 << 0,
+  C: 1 << 1,
+  V: 1 << 2,
+  N: 1 << 3,
+  H: 1 << 4,
+  ZWNJ: 1 << 5,
+  ZWJ: 1 << 6,
+  M: 1 << 7,
+  SM: 1 << 8,
+  VD: 1 << 9,
+  A: 1 << 10,
+  Placeholder: 1 << 11,
+  Dotted_Circle: 1 << 12,
+  RS: 1 << 13, // Register Shifter, used in Khmer OT spec.
+  Coeng: 1 << 14, // Khmer-style Virama.
+  Repha: 1 << 15, // Atomically-encoded logical or visual repha.
+  Ra: 1 << 16,
+  CM: 1 << 17, // Consonant-Medial.
+  Symbol: 1 << 18 // Avagraha, etc that take marks (SM,A,VD).
+};
+
+// Visual positions in a syllable from left to right.
+var POSITIONS = {
+  Start: 1 << 0,
+
+  Ra_To_Become_Reph: 1 << 1,
+  Pre_M: 1 << 2,
+  Pre_C: 1 << 3,
+
+  Base_C: 1 << 4,
+  After_Main: 1 << 5,
+
+  Above_C: 1 << 6,
+
+  Before_Sub: 1 << 7,
+  Below_C: 1 << 8,
+  After_Sub: 1 << 9,
+
+  Before_Post: 1 << 10,
+  Post_C: 1 << 11,
+  After_Post: 1 << 12,
+
+  Final_C: 1 << 13,
+  SMVD: 1 << 14,
+
+  End: 1 << 15
+};
+
+var CONSONANT_FLAGS = CATEGORIES.C | CATEGORIES.Ra | CATEGORIES.CM | CATEGORIES.V | CATEGORIES.Placeholder | CATEGORIES.Dotted_Circle;
+var JOINER_FLAGS = CATEGORIES.ZWJ | CATEGORIES.ZWNJ;
+var HALANT_OR_COENG_FLAGS = CATEGORIES.H | CATEGORIES.Coeng;
+
+var INDIC_CONFIGS = {
+  Default: {
+    hasOldSpec: false,
+    virama: 0,
+    basePos: 'Last',
+    rephPos: POSITIONS.Before_Post,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Devanagari: {
+    hasOldSpec: true,
+    virama: 0x094D,
+    basePos: 'Last',
+    rephPos: POSITIONS.Before_Post,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Bengali: {
+    hasOldSpec: true,
+    virama: 0x09CD,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Sub,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Gurmukhi: {
+    hasOldSpec: true,
+    virama: 0x0A4D,
+    basePos: 'Last',
+    rephPos: POSITIONS.Before_Sub,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Gujarati: {
+    hasOldSpec: true,
+    virama: 0x0ACD,
+    basePos: 'Last',
+    rephPos: POSITIONS.Before_Post,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Oriya: {
+    hasOldSpec: true,
+    virama: 0x0B4D,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Main,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Tamil: {
+    hasOldSpec: true,
+    virama: 0x0BCD,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Post,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Telugu: {
+    hasOldSpec: true,
+    virama: 0x0C4D,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Post,
+    rephMode: 'Explicit',
+    blwfMode: 'Post_Only'
+  },
+
+  Kannada: {
+    hasOldSpec: true,
+    virama: 0x0CCD,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Post,
+    rephMode: 'Implicit',
+    blwfMode: 'Post_Only'
+  },
+
+  Malayalam: {
+    hasOldSpec: true,
+    virama: 0x0D4D,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Main,
+    rephMode: 'Log_Repha',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  // Handled by UniversalShaper
+  // Sinhala: {
+  //   hasOldSpec: false,
+  //   virama: 0x0DCA,
+  //   basePos: 'Last_Sinhala',
+  //   rephPos: POSITIONS.After_Main,
+  //   rephMode: 'Explicit',
+  //   blwfMode: 'Pre_And_Post'
+  // },
+
+  Khmer: {
+    hasOldSpec: false,
+    virama: 0x17D2,
+    basePos: 'First',
+    rephPos: POSITIONS.Ra_To_Become_Reph,
+    rephMode: 'Vis_Repha',
+    blwfMode: 'Pre_And_Post'
+  }
+};
+
+// Additional decompositions that aren't in Unicode
+var INDIC_DECOMPOSITIONS = {
+  // Khmer
+  0x17BE: [0x17C1, 0x17BE],
+  0x17BF: [0x17C1, 0x17BF],
+  0x17C0: [0x17C1, 0x17C0],
+  0x17C4: [0x17C1, 0x17C4],
+  0x17C5: [0x17C1, 0x17C5]
+};
+
+var _class$6;
+var _temp$2;
+var decompositions = useData.decompositions;
+
+var trie$1 = new UnicodeTrie(Buffer("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","base64"));
+var stateMachine = new StateMachine(indicMachine);
+
+/**
+ * The IndicShaper supports indic scripts e.g. Devanagari, Kannada, etc.
+ * Based on code from Harfbuzz: https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-indic.cc
+ */
+var IndicShaper = (_temp$2 = _class$6 = function (_DefaultShaper) {
+  _inherits(IndicShaper, _DefaultShaper);
+
+  function IndicShaper() {
+    _classCallCheck(this, IndicShaper);
+
+    return _possibleConstructorReturn(this, _DefaultShaper.apply(this, arguments));
+  }
+
+  IndicShaper.planFeatures = function planFeatures(plan) {
+    plan.addStage(setupSyllables);
+
+    plan.addStage(['locl', 'ccmp']);
+
+    plan.addStage(initialReordering);
+
+    plan.addStage('nukt');
+    plan.addStage('akhn');
+    plan.addStage('rphf', false);
+    plan.addStage('rkrf');
+    plan.addStage('pref', false);
+    plan.addStage('blwf', false);
+    plan.addStage('abvf', false);
+    plan.addStage('half', false);
+    plan.addStage('pstf', false);
+    plan.addStage('vatu');
+    plan.addStage('cjct');
+    plan.addStage('cfar', false);
+
+    plan.addStage(finalReordering);
+
+    plan.addStage({
+      local: ['init'],
+      global: ['pres', 'abvs', 'blws', 'psts', 'haln', 'dist', 'abvm', 'blwm', 'calt', 'clig']
+    });
+
+    // Setup the indic config for the selected script
+    plan.unicodeScript = fromOpenType(plan.script);
+    plan.indicConfig = INDIC_CONFIGS[plan.unicodeScript] || INDIC_CONFIGS.Default;
+    plan.isOldSpec = plan.indicConfig.hasOldSpec && plan.script[plan.script.length - 1] !== '2';
+
+    // TODO: turn off kern (Khmer) and liga features.
+  };
+
+  IndicShaper.assignFeatures = function assignFeatures(plan, glyphs) {
+    var _loop = function _loop(i) {
+      var codepoint = glyphs[i].codePoints[0];
+      var d = INDIC_DECOMPOSITIONS[codepoint] || decompositions[codepoint];
+      if (d) {
+        var decomposed = d.map(function (c) {
+          var g = plan.font.glyphForCodePoint(c);
+          return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);
+        });
+
+        glyphs.splice.apply(glyphs, [i, 1].concat(decomposed));
+      }
+    };
+
+    // Decompose split matras
+    // TODO: do this in a more general unicode normalizer
+    for (var i = glyphs.length - 1; i >= 0; i--) {
+      _loop(i);
+    }
+  };
+
+  return IndicShaper;
+}(DefaultShaper), _class$6.zeroMarkWidths = 'NONE', _temp$2);
+function indicCategory(glyph) {
+  return trie$1.get(glyph.codePoints[0]) >> 8;
+}
+
+function indicPosition(glyph) {
+  return 1 << (trie$1.get(glyph.codePoints[0]) & 0xff);
+}
+
+var IndicInfo = function IndicInfo(category, position, syllableType, syllable) {
+  _classCallCheck(this, IndicInfo);
+
+  this.category = category;
+  this.position = position;
+  this.syllableType = syllableType;
+  this.syllable = syllable;
+};
+
+function setupSyllables(font, glyphs) {
+  var syllable = 0;
+  var last = 0;
+  for (var _iterator = stateMachine.match(glyphs.map(indicCategory)), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var _ref2 = _ref,
+        start = _ref2[0],
+        end = _ref2[1],
+        tags = _ref2[2];
+
+    if (start > last) {
+      ++syllable;
+      for (var _i2 = last; _i2 < start; _i2++) {
+        glyphs[_i2].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);
+      }
+    }
+
+    ++syllable;
+
+    // Create shaper info
+    for (var _i3 = start; _i3 <= end; _i3++) {
+      glyphs[_i3].shaperInfo = new IndicInfo(1 << indicCategory(glyphs[_i3]), indicPosition(glyphs[_i3]), tags[0], syllable);
+    }
+
+    last = end + 1;
+  }
+
+  if (last < glyphs.length) {
+    ++syllable;
+    for (var i = last; i < glyphs.length; i++) {
+      glyphs[i].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);
+    }
+  }
+}
+
+function isConsonant(glyph) {
+  return glyph.shaperInfo.category & CONSONANT_FLAGS;
+}
+
+function isJoiner(glyph) {
+  return glyph.shaperInfo.category & JOINER_FLAGS;
+}
+
+function isHalantOrCoeng(glyph) {
+  return glyph.shaperInfo.category & HALANT_OR_COENG_FLAGS;
+}
+
+function wouldSubstitute(glyphs, feature) {
+  for (var _iterator2 = glyphs, _isArray2 = Array.isArray(_iterator2), _i4 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+    var _glyph$features;
+
+    var _ref3;
+
+    if (_isArray2) {
+      if (_i4 >= _iterator2.length) break;
+      _ref3 = _iterator2[_i4++];
+    } else {
+      _i4 = _iterator2.next();
+      if (_i4.done) break;
+      _ref3 = _i4.value;
+    }
+
+    var glyph = _ref3;
+
+    glyph.features = (_glyph$features = {}, _glyph$features[feature] = true, _glyph$features);
+  }
+
+  var GSUB = glyphs[0]._font._layoutEngine.engine.GSUBProcessor;
+  GSUB.applyFeatures([feature], glyphs);
+
+  return glyphs.length === 1;
+}
+
+function consonantPosition(font, consonant, virama) {
+  var glyphs = [virama, consonant, virama];
+  if (wouldSubstitute(glyphs.slice(0, 2), 'blwf') || wouldSubstitute(glyphs.slice(1, 3), 'blwf')) {
+    return POSITIONS.Below_C;
+  } else if (wouldSubstitute(glyphs.slice(0, 2), 'pstf') || wouldSubstitute(glyphs.slice(1, 3), 'pstf')) {
+    return POSITIONS.Post_C;
+  } else if (wouldSubstitute(glyphs.slice(0, 2), 'pref') || wouldSubstitute(glyphs.slice(1, 3), 'pref')) {
+    return POSITIONS.Post_C;
+  }
+
+  return POSITIONS.Base_C;
+}
+
+function initialReordering(font, glyphs, plan) {
+  var indicConfig = plan.indicConfig;
+  var features = font._layoutEngine.engine.GSUBProcessor.features;
+
+  var dottedCircle = font.glyphForCodePoint(0x25cc).id;
+  var virama = font.glyphForCodePoint(indicConfig.virama).id;
+  if (virama) {
+    var info = new GlyphInfo(font, virama, [indicConfig.virama]);
+    for (var i = 0; i < glyphs.length; i++) {
+      if (glyphs[i].shaperInfo.position === POSITIONS.Base_C) {
+        glyphs[i].shaperInfo.position = consonantPosition(font, glyphs[i].copy(), info);
+      }
+    }
+  }
+
+  for (var start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {
+    var _glyphs$start$shaperI = glyphs[start].shaperInfo,
+        category = _glyphs$start$shaperI.category,
+        syllableType = _glyphs$start$shaperI.syllableType;
+
+
+    if (syllableType === 'symbol_cluster' || syllableType === 'non_indic_cluster') {
+      continue;
+    }
+
+    if (syllableType === 'broken_cluster' && dottedCircle) {
+      var g = new GlyphInfo(font, dottedCircle, [0x25cc]);
+      g.shaperInfo = new IndicInfo(1 << indicCategory(g), indicPosition(g), glyphs[start].shaperInfo.syllableType, glyphs[start].shaperInfo.syllable);
+
+      // Insert after possible Repha.
+      var _i5 = start;
+      while (_i5 < end && glyphs[_i5].shaperInfo.category === CATEGORIES.Repha) {
+        _i5++;
+      }
+
+      glyphs.splice(_i5++, 0, g);
+      end++;
+    }
+
+    // 1. Find base consonant:
+    //
+    // The shaping engine finds the base consonant of the syllable, using the
+    // following algorithm: starting from the end of the syllable, move backwards
+    // until a consonant is found that does not have a below-base or post-base
+    // form (post-base forms have to follow below-base forms), or that is not a
+    // pre-base reordering Ra, or arrive at the first consonant. The consonant
+    // stopped at will be the base.
+
+    var base = end;
+    var limit = start;
+    var hasReph = false;
+
+    // If the syllable starts with Ra + Halant (in a script that has Reph)
+    // and has more than one consonant, Ra is excluded from candidates for
+    // base consonants.
+    if (indicConfig.rephPos !== POSITIONS.Ra_To_Become_Reph && features.rphf && start + 3 <= end && (indicConfig.rephMode === 'Implicit' && !isJoiner(glyphs[start + 2]) || indicConfig.rephMode === 'Explicit' && glyphs[start + 2].shaperInfo.category === CATEGORIES.ZWJ)) {
+      // See if it matches the 'rphf' feature.
+      var _g = [glyphs[start].copy(), glyphs[start + 1].copy(), glyphs[start + 2].copy()];
+      if (wouldSubstitute(_g.slice(0, 2), 'rphf') || indicConfig.rephMode === 'Explicit' && wouldSubstitute(_g, 'rphf')) {
+        limit += 2;
+        while (limit < end && isJoiner(glyphs[limit])) {
+          limit++;
+        }
+        base = start;
+        hasReph = true;
+      }
+    } else if (indicConfig.rephMode === 'Log_Repha' && glyphs[start].shaperInfo.category === CATEGORIES.Repha) {
+      limit++;
+      while (limit < end && isJoiner(glyphs[limit])) {
+        limit++;
+      }
+      base = start;
+      hasReph = true;
+    }
+
+    switch (indicConfig.basePos) {
+      case 'Last':
+        {
+          // starting from the end of the syllable, move backwards
+          var _i6 = end;
+          var seenBelow = false;
+
+          do {
+            var _info = glyphs[--_i6].shaperInfo;
+
+            // until a consonant is found
+            if (isConsonant(glyphs[_i6])) {
+              // that does not have a below-base or post-base form
+              // (post-base forms have to follow below-base forms),
+              if (_info.position !== POSITIONS.Below_C && (_info.position !== POSITIONS.Post_C || seenBelow)) {
+                base = _i6;
+                break;
+              }
+
+              // or that is not a pre-base reordering Ra,
+              //
+              // IMPLEMENTATION NOTES:
+              //
+              // Our pre-base reordering Ra's are marked POS_POST_C, so will be skipped
+              // by the logic above already.
+              //
+
+              // or arrive at the first consonant. The consonant stopped at will
+              // be the base.
+              if (_info.position === POSITIONS.Below_C) {
+                seenBelow = true;
+              }
+
+              base = _i6;
+            } else if (start < _i6 && _info.category === CATEGORIES.ZWJ && glyphs[_i6 - 1].shaperInfo.category === CATEGORIES.H) {
+              // A ZWJ after a Halant stops the base search, and requests an explicit
+              // half form.
+              // A ZWJ before a Halant, requests a subjoined form instead, and hence
+              // search continues.  This is particularly important for Bengali
+              // sequence Ra,H,Ya that should form Ya-Phalaa by subjoining Ya.
+              break;
+            }
+          } while (_i6 > limit);
+          break;
+        }
+
+      case 'First':
+        {
+          // The first consonant is always the base.
+          base = start;
+
+          // Mark all subsequent consonants as below.
+          for (var _i7 = base + 1; _i7 < end; _i7++) {
+            if (isConsonant(glyphs[_i7])) {
+              glyphs[_i7].shaperInfo.position = POSITIONS.Below_C;
+            }
+          }
+        }
+    }
+
+    // If the syllable starts with Ra + Halant (in a script that has Reph)
+    // and has more than one consonant, Ra is excluded from candidates for
+    // base consonants.
+    //
+    //  Only do this for unforced Reph. (ie. not for Ra,H,ZWJ)
+    if (hasReph && base === start && limit - base <= 2) {
+      hasReph = false;
+    }
+
+    // 2. Decompose and reorder Matras:
+    //
+    // Each matra and any syllable modifier sign in the cluster are moved to the
+    // appropriate position relative to the consonant(s) in the cluster. The
+    // shaping engine decomposes two- or three-part matras into their constituent
+    // parts before any repositioning. Matra characters are classified by which
+    // consonant in a conjunct they have affinity for and are reordered to the
+    // following positions:
+    //
+    //   o Before first half form in the syllable
+    //   o After subjoined consonants
+    //   o After post-form consonant
+    //   o After main consonant (for above marks)
+    //
+    // IMPLEMENTATION NOTES:
+    //
+    // The normalize() routine has already decomposed matras for us, so we don't
+    // need to worry about that.
+
+    // 3.  Reorder marks to canonical order:
+    //
+    // Adjacent nukta and halant or nukta and vedic sign are always repositioned
+    // if necessary, so that the nukta is first.
+    //
+    // IMPLEMENTATION NOTES:
+    //
+    // We don't need to do this: the normalize() routine already did this for us.
+
+    // Reorder characters
+
+    for (var _i8 = start; _i8 < base; _i8++) {
+      var _info2 = glyphs[_i8].shaperInfo;
+      _info2.position = Math.min(POSITIONS.Pre_C, _info2.position);
+    }
+
+    if (base < end) {
+      glyphs[base].shaperInfo.position = POSITIONS.Base_C;
+    }
+
+    // Mark final consonants.  A final consonant is one appearing after a matra,
+    // like in Khmer.
+    for (var _i9 = base + 1; _i9 < end; _i9++) {
+      if (glyphs[_i9].shaperInfo.category === CATEGORIES.M) {
+        for (var j = _i9 + 1; j < end; j++) {
+          if (isConsonant(glyphs[j])) {
+            glyphs[j].shaperInfo.position = POSITIONS.Final_C;
+            break;
+          }
+        }
+        break;
+      }
+    }
+
+    // Handle beginning Ra
+    if (hasReph) {
+      glyphs[start].shaperInfo.position = POSITIONS.Ra_To_Become_Reph;
+    }
+
+    // For old-style Indic script tags, move the first post-base Halant after
+    // last consonant.
+    //
+    // Reports suggest that in some scripts Uniscribe does this only if there
+    // is *not* a Halant after last consonant already (eg. Kannada), while it
+    // does it unconditionally in other scripts (eg. Malayalam).  We don't
+    // currently know about other scripts, so we single out Malayalam for now.
+    //
+    // Kannada test case:
+    // U+0C9A,U+0CCD,U+0C9A,U+0CCD
+    // With some versions of Lohit Kannada.
+    // https://bugs.freedesktop.org/show_bug.cgi?id=59118
+    //
+    // Malayalam test case:
+    // U+0D38,U+0D4D,U+0D31,U+0D4D,U+0D31,U+0D4D
+    // With lohit-ttf-20121122/Lohit-Malayalam.ttf
+    if (plan.isOldSpec) {
+      var disallowDoubleHalants = plan.unicodeScript !== 'Malayalam';
+      for (var _i10 = base + 1; _i10 < end; _i10++) {
+        if (glyphs[_i10].shaperInfo.category === CATEGORIES.H) {
+          var _j = void 0;
+          for (_j = end - 1; _j > _i10; _j--) {
+            if (isConsonant(glyphs[_j]) || disallowDoubleHalants && glyphs[_j].shaperInfo.category === CATEGORIES.H) {
+              break;
+            }
+          }
+
+          if (glyphs[_j].shaperInfo.category !== CATEGORIES.H && _j > _i10) {
+            // Move Halant to after last consonant.
+            var t = glyphs[_i10];
+            glyphs.splice.apply(glyphs, [_i10, 0].concat(glyphs.splice(_i10 + 1, _j - _i10)));
+            glyphs[_j] = t;
+          }
+
+          break;
+        }
+      }
+    }
+
+    // Attach misc marks to previous char to move with them.
+    var lastPos = POSITIONS.Start;
+    for (var _i11 = start; _i11 < end; _i11++) {
+      var _info3 = glyphs[_i11].shaperInfo;
+      if (_info3.category & (JOINER_FLAGS | CATEGORIES.N | CATEGORIES.RS | CATEGORIES.CM | HALANT_OR_COENG_FLAGS & _info3.category)) {
+        _info3.position = lastPos;
+        if (_info3.category === CATEGORIES.H && _info3.position === POSITIONS.Pre_M) {
+          // Uniscribe doesn't move the Halant with Left Matra.
+          // TEST: U+092B,U+093F,U+094DE
+          // We follow.  This is important for the Sinhala
+          // U+0DDA split matra since it decomposes to U+0DD9,U+0DCA
+          // where U+0DD9 is a left matra and U+0DCA is the virama.
+          // We don't want to move the virama with the left matra.
+          // TEST: U+0D9A,U+0DDA
+          for (var _j2 = _i11; _j2 > start; _j2--) {
+            if (glyphs[_j2 - 1].shaperInfo.position !== POSITIONS.Pre_M) {
+              _info3.position = glyphs[_j2 - 1].shaperInfo.position;
+              break;
+            }
+          }
+        }
+      } else if (_info3.position !== POSITIONS.SMVD) {
+        lastPos = _info3.position;
+      }
+    }
+
+    // For post-base consonants let them own anything before them
+    // since the last consonant or matra.
+    var last = base;
+    for (var _i12 = base + 1; _i12 < end; _i12++) {
+      if (isConsonant(glyphs[_i12])) {
+        for (var _j3 = last + 1; _j3 < _i12; _j3++) {
+          if (glyphs[_j3].shaperInfo.position < POSITIONS.SMVD) {
+            glyphs[_j3].shaperInfo.position = glyphs[_i12].shaperInfo.position;
+          }
+        }
+        last = _i12;
+      } else if (glyphs[_i12].shaperInfo.category === CATEGORIES.M) {
+        last = _i12;
+      }
+    }
+
+    var arr = glyphs.slice(start, end);
+    arr.sort(function (a, b) {
+      return a.shaperInfo.position - b.shaperInfo.position;
+    });
+    glyphs.splice.apply(glyphs, [start, arr.length].concat(arr));
+
+    // Find base again
+    for (var _i13 = start; _i13 < end; _i13++) {
+      if (glyphs[_i13].shaperInfo.position === POSITIONS.Base_C) {
+        base = _i13;
+        break;
+      }
+    }
+
+    // Setup features now
+
+    // Reph
+    for (var _i14 = start; _i14 < end && glyphs[_i14].shaperInfo.position === POSITIONS.Ra_To_Become_Reph; _i14++) {
+      glyphs[_i14].features.rphf = true;
+    }
+
+    // Pre-base
+    var blwf = !plan.isOldSpec && indicConfig.blwfMode === 'Pre_And_Post';
+    for (var _i15 = start; _i15 < base; _i15++) {
+      glyphs[_i15].features.half = true;
+      if (blwf) {
+        glyphs[_i15].features.blwf = true;
+      }
+    }
+
+    // Post-base
+    for (var _i16 = base + 1; _i16 < end; _i16++) {
+      glyphs[_i16].features.abvf = true;
+      glyphs[_i16].features.pstf = true;
+      glyphs[_i16].features.blwf = true;
+    }
+
+    if (plan.isOldSpec && plan.unicodeScript === 'Devanagari') {
+      // Old-spec eye-lash Ra needs special handling.  From the
+      // spec:
+      //
+      // "The feature 'below-base form' is applied to consonants
+      // having below-base forms and following the base consonant.
+      // The exception is vattu, which may appear below half forms
+      // as well as below the base glyph. The feature 'below-base
+      // form' will be applied to all such occurrences of Ra as well."
+      //
+      // Test case: U+0924,U+094D,U+0930,U+094d,U+0915
+      // with Sanskrit 2003 font.
+      //
+      // However, note that Ra,Halant,ZWJ is the correct way to
+      // request eyelash form of Ra, so we wouldbn't inhibit it
+      // in that sequence.
+      //
+      // Test case: U+0924,U+094D,U+0930,U+094d,U+200D,U+0915
+      for (var _i17 = start; _i17 + 1 < base; _i17++) {
+        if (glyphs[_i17].shaperInfo.category === CATEGORIES.Ra && glyphs[_i17 + 1].shaperInfo.category === CATEGORIES.H && (_i17 + 1 === base || glyphs[_i17 + 2].shaperInfo.category === CATEGORIES.ZWJ)) {
+          glyphs[_i17].features.blwf = true;
+          glyphs[_i17 + 1].features.blwf = true;
+        }
+      }
+    }
+
+    var prefLen = 2;
+    if (features.pref && base + prefLen < end) {
+      // Find a Halant,Ra sequence and mark it for pre-base reordering processing.
+      for (var _i18 = base + 1; _i18 + prefLen - 1 < end; _i18++) {
+        var _g2 = [glyphs[_i18].copy(), glyphs[_i18 + 1].copy()];
+        if (wouldSubstitute(_g2, 'pref')) {
+          for (var _j4 = 0; _j4 < prefLen; _j4++) {
+            glyphs[_i18++].features.pref = true;
+          }
+
+          // Mark the subsequent stuff with 'cfar'.  Used in Khmer.
+          // Read the feature spec.
+          // This allows distinguishing the following cases with MS Khmer fonts:
+          // U+1784,U+17D2,U+179A,U+17D2,U+1782
+          // U+1784,U+17D2,U+1782,U+17D2,U+179A
+          if (features.cfar) {
+            for (; _i18 < end; _i18++) {
+              glyphs[_i18].features.cfar = true;
+            }
+          }
+
+          break;
+        }
+      }
+    }
+
+    // Apply ZWJ/ZWNJ effects
+    for (var _i19 = start + 1; _i19 < end; _i19++) {
+      if (isJoiner(glyphs[_i19])) {
+        var nonJoiner = glyphs[_i19].shaperInfo.category === CATEGORIES.ZWNJ;
+        var _j5 = _i19;
+
+        do {
+          _j5--;
+
+          // ZWJ/ZWNJ should disable CJCT.  They do that by simply
+          // being there, since we don't skip them for the CJCT
+          // feature (ie. F_MANUAL_ZWJ)
+
+          // A ZWNJ disables HALF.
+          if (nonJoiner) {
+            delete glyphs[_j5].features.half;
+          }
+        } while (_j5 > start && !isConsonant(glyphs[_j5]));
+      }
+    }
+  }
+}
+
+function finalReordering(font, glyphs, plan) {
+  var indicConfig = plan.indicConfig;
+  var features = font._layoutEngine.engine.GSUBProcessor.features;
+
+  for (var start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {
+    // 4. Final reordering:
+    //
+    // After the localized forms and basic shaping forms GSUB features have been
+    // applied (see below), the shaping engine performs some final glyph
+    // reordering before applying all the remaining font features to the entire
+    // cluster.
+
+    var tryPref = !!features.pref;
+
+    // Find base again
+    var base = start;
+    for (; base < end; base++) {
+      if (glyphs[base].shaperInfo.position >= POSITIONS.Base_C) {
+        if (tryPref && base + 1 < end) {
+          for (var i = base + 1; i < end; i++) {
+            if (glyphs[i].features.pref) {
+              if (!(glyphs[i].substituted && glyphs[i].isLigated && !glyphs[i].isMultiplied)) {
+                // Ok, this was a 'pref' candidate but didn't form any.
+                // Base is around here...
+                base = i;
+                while (base < end && isHalantOrCoeng(glyphs[base])) {
+                  base++;
+                }
+                glyphs[base].shaperInfo.position = POSITIONS.BASE_C;
+                tryPref = false;
+              }
+              break;
+            }
+          }
+        }
+
+        // For Malayalam, skip over unformed below- (but NOT post-) forms.
+        if (plan.unicodeScript === 'Malayalam') {
+          for (var _i20 = base + 1; _i20 < end; _i20++) {
+            while (_i20 < end && isJoiner(glyphs[_i20])) {
+              _i20++;
+            }
+
+            if (_i20 === end || !isHalantOrCoeng(glyphs[_i20])) {
+              break;
+            }
+
+            _i20++; // Skip halant.
+            while (_i20 < end && isJoiner(glyphs[_i20])) {
+              _i20++;
+            }
+
+            if (_i20 < end && isConsonant(glyphs[_i20]) && glyphs[_i20].shaperInfo.position === POSITIONS.Below_C) {
+              base = _i20;
+              glyphs[base].shaperInfo.position = POSITIONS.Base_C;
+            }
+          }
+        }
+
+        if (start < base && glyphs[base].shaperInfo.position > POSITIONS.Base_C) {
+          base--;
+        }
+        break;
+      }
+    }
+
+    if (base === end && start < base && glyphs[base - 1].shaperInfo.category === CATEGORIES.ZWJ) {
+      base--;
+    }
+
+    if (base < end) {
+      while (start < base && glyphs[base].shaperInfo.category & (CATEGORIES.N | HALANT_OR_COENG_FLAGS)) {
+        base--;
+      }
+    }
+
+    // o Reorder matras:
+    //
+    // If a pre-base matra character had been reordered before applying basic
+    // features, the glyph can be moved closer to the main consonant based on
+    // whether half-forms had been formed. Actual position for the matra is
+    // defined as “after last standalone halant glyph, after initial matra
+    // position and before the main consonant”. If ZWJ or ZWNJ follow this
+    // halant, position is moved after it.
+    //
+
+    if (start + 1 < end && start < base) {
+      // Otherwise there can't be any pre-base matra characters.
+      // If we lost track of base, alas, position before last thingy.
+      var newPos = base === end ? base - 2 : base - 1;
+
+      // Malayalam / Tamil do not have "half" forms or explicit virama forms.
+      // The glyphs formed by 'half' are Chillus or ligated explicit viramas.
+      // We want to position matra after them.
+      if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {
+        while (newPos > start && !(glyphs[newPos].shaperInfo.category & (CATEGORIES.M | HALANT_OR_COENG_FLAGS))) {
+          newPos--;
+        }
+
+        // If we found no Halant we are done.
+        // Otherwise only proceed if the Halant does
+        // not belong to the Matra itself!
+        if (isHalantOrCoeng(glyphs[newPos]) && glyphs[newPos].shaperInfo.position !== POSITIONS.Pre_M) {
+          // If ZWJ or ZWNJ follow this halant, position is moved after it.
+          if (newPos + 1 < end && isJoiner(glyphs[newPos + 1])) {
+            newPos++;
+          }
+        } else {
+          newPos = start; // No move.
+        }
+      }
+
+      if (start < newPos && glyphs[newPos].shaperInfo.position !== POSITIONS.Pre_M) {
+        // Now go see if there's actually any matras...
+        for (var _i21 = newPos; _i21 > start; _i21--) {
+          if (glyphs[_i21 - 1].shaperInfo.position === POSITIONS.Pre_M) {
+            var oldPos = _i21 - 1;
+            if (oldPos < base && base <= newPos) {
+              // Shouldn't actually happen.
+              base--;
+            }
+
+            var tmp = glyphs[oldPos];
+            glyphs.splice.apply(glyphs, [oldPos, 0].concat(glyphs.splice(oldPos + 1, newPos - oldPos)));
+            glyphs[newPos] = tmp;
+
+            newPos--;
+          }
+        }
+      }
+    }
+
+    // o Reorder reph:
+    //
+    // Reph’s original position is always at the beginning of the syllable,
+    // (i.e. it is not reordered at the character reordering stage). However,
+    // it will be reordered according to the basic-forms shaping results.
+    // Possible positions for reph, depending on the script, are; after main,
+    // before post-base consonant forms, and after post-base consonant forms.
+
+    // Two cases:
+    //
+    // - If repha is encoded as a sequence of characters (Ra,H or Ra,H,ZWJ), then
+    //   we should only move it if the sequence ligated to the repha form.
+    //
+    // - If repha is encoded separately and in the logical position, we should only
+    //   move it if it did NOT ligate.  If it ligated, it's probably the font trying
+    //   to make it work without the reordering.
+    if (start + 1 < end && glyphs[start].shaperInfo.position === POSITIONS.Ra_To_Become_Reph && glyphs[start].shaperInfo.category === CATEGORIES.Repha !== (glyphs[start].isLigated && !glyphs[start].isMultiplied)) {
+      var newRephPos = void 0;
+      var rephPos = indicConfig.rephPos;
+      var found = false;
+
+      // 1. If reph should be positioned after post-base consonant forms,
+      //    proceed to step 5.
+      if (rephPos !== POSITIONS.After_Post) {
+        //  2. If the reph repositioning class is not after post-base: target
+        //     position is after the first explicit halant glyph between the
+        //     first post-reph consonant and last main consonant. If ZWJ or ZWNJ
+        //     are following this halant, position is moved after it. If such
+        //     position is found, this is the target position. Otherwise,
+        //     proceed to the next step.
+        //
+        //     Note: in old-implementation fonts, where classifications were
+        //     fixed in shaping engine, there was no case where reph position
+        //     will be found on this step.
+        newRephPos = start + 1;
+        while (newRephPos < base && !isHalantOrCoeng(glyphs[newRephPos])) {
+          newRephPos++;
+        }
+
+        if (newRephPos < base && isHalantOrCoeng(glyphs[newRephPos])) {
+          // ->If ZWJ or ZWNJ are following this halant, position is moved after it.
+          if (newRephPos + 1 < base && isJoiner(glyphs[newRephPos + 1])) {
+            newRephPos++;
+          }
+
+          found = true;
+        }
+
+        // 3. If reph should be repositioned after the main consonant: find the
+        //    first consonant not ligated with main, or find the first
+        //    consonant that is not a potential pre-base reordering Ra.
+        if (!found && rephPos === POSITIONS.After_Main) {
+          newRephPos = base;
+          while (newRephPos + 1 < end && glyphs[newRephPos + 1].shaperInfo.position <= POSITIONS.After_Main) {
+            newRephPos++;
+          }
+
+          found = newRephPos < end;
+        }
+
+        // 4. If reph should be positioned before post-base consonant, find
+        //    first post-base classified consonant not ligated with main. If no
+        //    consonant is found, the target position should be before the
+        //    first matra, syllable modifier sign or vedic sign.
+        //
+        // This is our take on what step 4 is trying to say (and failing, BADLY).
+        if (!found && rephPos === POSITIONS.After_Sub) {
+          newRephPos = base;
+          while (newRephPos + 1 < end && !(glyphs[newRephPos + 1].shaperInfo.position & (POSITIONS.Post_C | POSITIONS.After_Post | POSITIONS.SMVD))) {
+            newRephPos++;
+          }
+
+          found = newRephPos < end;
+        }
+      }
+
+      //  5. If no consonant is found in steps 3 or 4, move reph to a position
+      //     immediately before the first post-base matra, syllable modifier
+      //     sign or vedic sign that has a reordering class after the intended
+      //     reph position. For example, if the reordering position for reph
+      //     is post-main, it will skip above-base matras that also have a
+      //     post-main position.
+      if (!found) {
+        // Copied from step 2.
+        newRephPos = start + 1;
+        while (newRephPos < base && !isHalantOrCoeng(glyphs[newRephPos])) {
+          newRephPos++;
+        }
+
+        if (newRephPos < base && isHalantOrCoeng(glyphs[newRephPos])) {
+          // ->If ZWJ or ZWNJ are following this halant, position is moved after it.
+          if (newRephPos + 1 < base && isJoiner(glyphs[newRephPos + 1])) {
+            newRephPos++;
+          }
+
+          found = true;
+        }
+      }
+
+      // 6. Otherwise, reorder reph to the end of the syllable.
+      if (!found) {
+        newRephPos = end - 1;
+        while (newRephPos > start && glyphs[newRephPos].shaperInfo.position === POSITIONS.SMVD) {
+          newRephPos--;
+        }
+
+        // If the Reph is to be ending up after a Matra,Halant sequence,
+        // position it before that Halant so it can interact with the Matra.
+        // However, if it's a plain Consonant,Halant we shouldn't do that.
+        // Uniscribe doesn't do this.
+        // TEST: U+0930,U+094D,U+0915,U+094B,U+094D
+        if (isHalantOrCoeng(glyphs[newRephPos])) {
+          for (var _i22 = base + 1; _i22 < newRephPos; _i22++) {
+            if (glyphs[_i22].shaperInfo.category === CATEGORIES.M) {
+              newRephPos--;
+            }
+          }
+        }
+      }
+
+      var reph = glyphs[start];
+      glyphs.splice.apply(glyphs, [start, 0].concat(glyphs.splice(start + 1, newRephPos - start)));
+      glyphs[newRephPos] = reph;
+
+      if (start < base && base <= newRephPos) {
+        base--;
+      }
+    }
+
+    // o Reorder pre-base reordering consonants:
+    //
+    // If a pre-base reordering consonant is found, reorder it according to
+    // the following rules:
+    if (tryPref && base + 1 < end) {
+      for (var _i23 = base + 1; _i23 < end; _i23++) {
+        if (glyphs[_i23].features.pref) {
+          // 1. Only reorder a glyph produced by substitution during application
+          //    of the <pref> feature. (Note that a font may shape a Ra consonant with
+          //    the feature generally but block it in certain contexts.)
+
+          // Note: We just check that something got substituted.  We don't check that
+          // the <pref> feature actually did it...
+          //
+          // Reorder pref only if it ligated.
+          if (glyphs[_i23].isLigated && !glyphs[_i23].isMultiplied) {
+            // 2. Try to find a target position the same way as for pre-base matra.
+            //    If it is found, reorder pre-base consonant glyph.
+            //
+            // 3. If position is not found, reorder immediately before main
+            //    consonant.
+            var _newPos = base;
+
+            // Malayalam / Tamil do not have "half" forms or explicit virama forms.
+            // The glyphs formed by 'half' are Chillus or ligated explicit viramas.
+            // We want to position matra after them.
+            if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {
+              while (_newPos > start && !(glyphs[_newPos - 1].shaperInfo.category & (CATEGORIES.M | HALANT_OR_COENG_FLAGS))) {
+                _newPos--;
+              }
+
+              // In Khmer coeng model, a H,Ra can go *after* matras.  If it goes after a
+              // split matra, it should be reordered to *before* the left part of such matra.
+              if (_newPos > start && glyphs[_newPos - 1].shaperInfo.category === CATEGORIES.M) {
+                var _oldPos2 = _i23;
+                for (var j = base + 1; j < _oldPos2; j++) {
+                  if (glyphs[j].shaperInfo.category === CATEGORIES.M) {
+                    _newPos--;
+                    break;
+                  }
+                }
+              }
+            }
+
+            if (_newPos > start && isHalantOrCoeng(glyphs[_newPos - 1])) {
+              // -> If ZWJ or ZWNJ follow this halant, position is moved after it.
+              if (_newPos < end && isJoiner(glyphs[_newPos])) {
+                _newPos++;
+              }
+            }
+
+            var _oldPos = _i23;
+            var _tmp = glyphs[_oldPos];
+            glyphs.splice.apply(glyphs, [_newPos + 1, 0].concat(glyphs.splice(_newPos, _oldPos - _newPos)));
+            glyphs[_newPos] = _tmp;
+
+            if (_newPos <= base && base < _oldPos) {
+              base++;
+            }
+          }
+
+          break;
+        }
+      }
+    }
+
+    // Apply 'init' to the Left Matra if it's a word start.
+    if (glyphs[start].shaperInfo.position === POSITIONS.Pre_M && (!start || !/Cf|Mn/.test(unicode.getCategory(glyphs[start - 1].codePoints[0])))) {
+      glyphs[start].features.init = true;
+    }
+  }
+}
+
+function nextSyllable(glyphs, start) {
+  if (start >= glyphs.length) return start;
+  var syllable = glyphs[start].shaperInfo.syllable;
+  while (++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable) {}
+  return start;
+}
+
+var _class$7;
+var _temp$3;
+var categories$1 = useData.categories;
+var decompositions$2 = useData.decompositions;
+var trie$2 = new UnicodeTrie(Buffer("AAIAAAAAAAAAAKnQAVEMrvPtnH+oHUcVx+fd99799W5e8mx+9NkYm7YUI2KtimkVDG3FWgVTFY1Fqa2VJirYB0IaUFLBaKGJViXir6oxKCSBoi0UTKtg2yA26h+milYNtMH+0WK1VQyvtBS/487hnncyMzuzu7N7n7kHPszu7OzMmTNzdmdmfzzfUmpiUqkemAMbwSZwKbjcxM1XEL4VvB28G3zAk+56cLMlfgdYADvBbvBF8GWwH9xl+CFLfwj8BPwU/MKS38/AMfA86v9ro9ucQcdR+CjCP4CT4EnwDPg3eAFMTik1A+bAPNgINoFLwGawZSpLfzXCrWAb+AjYDm4BO8FusAfsA/vBXeAgOALuNfv3g4fAcXACPAaeAE+B58Bp8NJUpnN7WqlZsHY629+A8GLwWvAG8BZwJXinOf5ehB8EN4AdYGE6q7dmF9uugs8hvz0V58nZK/L+Kva/BX4ADoN7prP6HgUPgkfA73L0eQzHnwBPgX+Y80+DF8FUW6lBO4tbjXA9uAi8pj3sS2/E9mawBVwNtoJt5pzrTXgzwk+B7awP7sT+7nY6WxFfQBlfAl8H3wU/Anezcu/D9s/BMRN3HOEJ8EdwMkC/J5HmmXZmq2fBIjgEVEepbieLX4Fw0MnSrzRxmrVsm7MB8ReDV4vjr3ekJy7rZGVPMb196Xm6oug83oRyt4CrwDVgK9gGPtzxn3uTOD6YPDPNJ5Hm0+AznazffJ7Z4KSnXncg3VfAN8EBhx42/z/UGdbrx52sr9yH8AFTrt5+2GzfnWPbKuw7ZszZyNh/xowZM2bMmDFjxsQyZ5lPNs3h9nBNYHuAfr9ic9ffiHnsJzznU91/j3P+2snWYf6G8O/gn+A0eMnEt7vQp5ulX4NwHmwEm7rZ8UsRXg6uMPvXIHwPuK7rLl+nu9FzfMyYMWPGpGVuslmarv+YMWPSkNq/d2D8uNDNngvdivA2y3jy9m72bF9v3ymOf2MExp8fG2TsAcfA2wJYBJetWBq3i+0fwPafwLmzSl0LFmZNPMLHZ4fpnsX2AdjgcXB+T6kPge+AG7D/vXYW/tLsc9r9M+MkVyLNR1m6g9g+ZfYvmMExcHCm+ftP0+T5y/e17Uw/PYLwHnC0m80TH+zG30/3mjSDnPS2/B4pUJ4rX3n+b5H3o92l6UjfvZ7y/oJzToGnu8O66XTPYf8/Jr8XWL6TPXf9bPnHtmVs+89AnxVgDVgPLgKvAg+Y/F6H7c1gC7jKHH8XeJ/x15vAjt4wvwVs7wKfBXvAPvA18G1wsJevj36f5gjS3etIq+ft9+PYQ73h/nFsn2D7f+5l75bo/VPYftpTblFb2/Jo2pdjfL0uXOX/qxfnp8vZVk2Xv9hbmu+LxvYt3A/7/WZsPoptPkr9bdCv1ya+d4TuMO8Tre5n4XkILwSbzP4l/WHazX1//r2O/z7cFHnvSYW8R/Vm02ZXIHxHze1Xdf9bbn7p0z2kDroNr2X9WL+7937sX9fP+v9h9n6jTrfI3jG9EfsfN3G35PR/G4uRfY3eMTwdkFa/C3hrf2kcfy/xYTOmprrfZsLbEe7rDPW/U9Rrv9k/ahmTL0cWWxP/YxRkgtES+zwNhZPs+FQgMj/liEsto2HxsZBQX2pZoLZqWc5riXDaQBLSt1L3hcnE+Vct7aYVKCEhbXk2+b7NZ84mmXAwCiL14Ne85S62MYPcXi5StM/YxlJF2lfabznZsC6/C807xvZV+yFve9d1KY//d3HNO8pKUXuTDh0Gpp7B852q6QFMgdWM2dfbAxOuEPQEfcEsO5fquJLZrMfyCtWP0heZF6oSdiH9u4aQvJRIJ/eL6BBynItLp5D2JRkY5L5u3xAf6lviXHWSZcfaKO/+5zvO/c9Xtq8uRXSObd+8bS0zJrS1rxTyX7k/a0nrk5D+mHeOC90uq1Q216X57lykfqHt62uTGJ2rat+i/kttyq/RSi29PlclZf2Xxq55ZeSV34T96d5X5PqZJ9I3ZX2lnkXt3xL1Kyrav/LutbZ6uGxuS6ss6V3pXOXY4kP7EBfyJT7+4TJQS9uf74f6n+3+6ZIi9bCtieatFfCxUMx4KMYfy/pzrB30vm88q9SZ11K+n9eeNN612UFKWX8uI9TmRca7TbWvKy2JvF6naF+b/0uRupZp35cZikhZvyniY2R/CbdB3vXynIC6hbRBHf4l1xps6w4x/lVEtxRtGZMuRA8uNh/jfYV8kdpsBUszcODrD7E2JT2KrB3V6XMhbdNjcXItxzaOJWkpf976/I5glQn1sbLP86U9FQvz4l0S28/lcWUJbbrE2l+Z/TlHvi4/kvZXLMyrmy1PW7x8hl6UFgvlmNM1Jq3aJ3Se0yJcpdwS6mOp/ZgLX5N1rdFKaIzH9ztquMbqq+/qCFRk+hRoyZvrTHuO8fNd/djmEzZJ3TdisN1bNQNl7y96DV/3mVkTtwasVdk1ai6ybGlDek8nT1fXc4M5tVSPvhqOsWQeXQs8L1n3IradU8OxCeVjK7dr7Dpl0cMHnUvt18TzfVsfb/pZY56fV2GnVPVIYaOi9xcZJ8cmKcu3wcuPsVHV5cdKFfZXNZefp5sWft+wzR1cczKCxh99NRx76HvwOpWNv6YZtAajt6WPyPswtVVs/VOJ7xpYx3VR31er7gMxNuV9Q443CDlW43KuYSXblsybfKYt58trfez7A1X7Tdm+V7TcoudL+LpVGf2khN63U5OyD5Af0NoUv06l7Jc0Rte+so4xL9Ayy3Rz+SufY5Jf267xcm7J4dd3kumIOrmk7Pl549bUY1puI91Gdb8Tpu+9tjmhXFdwtfVsTv5SQvXKW0cK4eXgPBO6iJ07NNVOHH7/tF1jyJdnWbrU/Uau3VNI156QZ2ZaZFu76i6vQXy9YJ2H9QZ97aF3p1xlx1yfuYRcd0Kl7NyaX190+pUOKI0tvus5j7/nSWKLo3FER8R3LHEx8gqwge1POgi1l1yfirV3zHpISHxs3vLeFXOellcG1DFGbGP00PPkeKEOaXIsqhzbruOh9Qk5L08nW2grJ0avsvWocv0zRh/fGCG0TV35hB4v0rds5Vddjm/sFCKx+aXSt2yalPZsolxXW46CDnXp0YQ0rdso9OUYPSYT6+yzuxxzlrVfFfavQ/LKqsP+dbVzE/0qRb8pKin6V9U6Fnn24pqHufLMWy90nV+0DkXmcrb0Uq+6pU7/qcs/67SHTeTaaBk9ipyXQvLqW1U7uPKpux/ESlP9umydR8H3UjzHoXxj0/J1Yr5ubHsPrWOJqxK+hk5r+EVtH3pe1XWIXa+1vQ9YJ/oZre1bGReh3xKWeX7BxfYstwh5errGJi59be8482cSsfUPQT4Xlc9K+XMmatcY0fo2+SxYQs/4XO8M03Ng/TxujYH+FRELSdH+6mtveu8itb1Cy7C9X8GfsVOcfN86RHg56wJ0ob5qOz/E/rIdq7YhF34/0cfoeWKVftJjIbWDbDfXeXR/prBOKWJ/3dd43+sr+32TvgEIEZ6/7Zt5/l7ghMm77u+ey4gcz5xfktA5vE9C5vy2Y3lpXeX40tHcLMX42qZHS/ltZluXiSlDxillt3VdIvufbc0j75wy5aWaOxWRUZmfl5nDSh3LzoWbXJOg8uumKkndp1PnH2IPfe+U33z7vjWhdPQuWMh4raqxWMh9X89RZtSZ7/JpyXs3NWQcETN3CZHU/lmVnstZB1+ZfM5A/1VJ2V9t8wTXN1S+f27mzaulbCxJHePwC1Tz/0K1/VdPvtOsba+vL7ZxM1/jakJ/V9/yfdtNx+i7bhVRRll/rrK+sk3qLt/3T0afH+tzz1HDfxzZ/HlGDduK1y/GL21zvKptQGWFSpVlFm0z+ZxD/vdAt9EqQ971NkRHW7qytog53+cfVfeFGLStfddfYka5x6dl+yi//4z6/559aUn4/+/k2pv8BqfM/0qVCnu+If2OJPRZUcyzJF/5RQm5xtM9ln+LRN+8U9+iMQS1Veg9q2z/TlV3Ett3/rLOIXOookidy/5X3GYD+S8a1z2e0vH695T9vhEqdbY//0dU3jWZ2rYq/cvCRT8r08/NLlT5/zySdSurv1ybLiup5tAp5+NNzfPJ5r61warapajItfTQNeK610/rWEMPyb+uOo/ierRNbGU01Z+rqneIPWNsT9t1rD+OYr8rm0eKvp/Ch1P4Yepyy+hWVD/f+VWXX5X+TZdfZZ+KLb9J+S8=","base64"));
+var stateMachine$1 = new StateMachine(useData);
+
+/**
+ * This shaper is an implementation of the Universal Shaping Engine, which
+ * uses Unicode data to shape a number of scripts without a dedicated shaping engine.
+ * See https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm.
+ */
+var UniversalShaper = (_temp$3 = _class$7 = function (_DefaultShaper) {
+  _inherits(UniversalShaper, _DefaultShaper);
+
+  function UniversalShaper() {
+    _classCallCheck(this, UniversalShaper);
+
+    return _possibleConstructorReturn(this, _DefaultShaper.apply(this, arguments));
+  }
+
+  UniversalShaper.planFeatures = function planFeatures(plan) {
+    plan.addStage(setupSyllables$1);
+
+    // Default glyph pre-processing group
+    plan.addStage(['locl', 'ccmp', 'nukt', 'akhn']);
+
+    // Reordering group
+    plan.addStage(clearSubstitutionFlags);
+    plan.addStage(['rphf'], false);
+    plan.addStage(recordRphf);
+    plan.addStage(clearSubstitutionFlags);
+    plan.addStage(['pref']);
+    plan.addStage(recordPref);
+
+    // Orthographic unit shaping group
+    plan.addStage(['rkrf', 'abvf', 'blwf', 'half', 'pstf', 'vatu', 'cjct']);
+    plan.addStage(reorder);
+
+    // Topographical features
+    // Scripts that need this are handled by the Arabic shaper, not implemented here for now.
+    // plan.addStage(['isol', 'init', 'medi', 'fina', 'med2', 'fin2', 'fin3'], false);
+
+    // Standard topographic presentation and positional feature application
+    plan.addStage(['abvs', 'blws', 'pres', 'psts', 'dist', 'abvm', 'blwm']);
+  };
+
+  UniversalShaper.assignFeatures = function assignFeatures(plan, glyphs) {
+    var _loop = function _loop(i) {
+      var codepoint = glyphs[i].codePoints[0];
+      if (decompositions$2[codepoint]) {
+        var decomposed = decompositions$2[codepoint].map(function (c) {
+          var g = plan.font.glyphForCodePoint(c);
+          return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);
+        });
+
+        glyphs.splice.apply(glyphs, [i, 1].concat(decomposed));
+      }
+    };
+
+    // Decompose split vowels
+    // TODO: do this in a more general unicode normalizer
+    for (var i = glyphs.length - 1; i >= 0; i--) {
+      _loop(i);
+    }
+  };
+
+  return UniversalShaper;
+}(DefaultShaper), _class$7.zeroMarkWidths = 'BEFORE_GPOS', _temp$3);
+function useCategory(glyph) {
+  return trie$2.get(glyph.codePoints[0]);
+}
+
+var USEInfo = function USEInfo(category, syllableType, syllable) {
+  _classCallCheck(this, USEInfo);
+
+  this.category = category;
+  this.syllableType = syllableType;
+  this.syllable = syllable;
+};
+
+function setupSyllables$1(font, glyphs) {
+  var syllable = 0;
+  for (var _iterator = stateMachine$1.match(glyphs.map(useCategory)), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var _ref2 = _ref,
+        start = _ref2[0],
+        end = _ref2[1],
+        tags = _ref2[2];
+
+    ++syllable;
+
+    // Create shaper info
+    for (var i = start; i <= end; i++) {
+      glyphs[i].shaperInfo = new USEInfo(categories$1[useCategory(glyphs[i])], tags[0], syllable);
+    }
+
+    // Assign rphf feature
+    var limit = glyphs[start].shaperInfo.category === 'R' ? 1 : Math.min(3, end - start);
+    for (var _i2 = start; _i2 < start + limit; _i2++) {
+      glyphs[_i2].features.rphf = true;
+    }
+  }
+}
+
+function clearSubstitutionFlags(font, glyphs) {
+  for (var _iterator2 = glyphs, _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+    var _ref3;
+
+    if (_isArray2) {
+      if (_i3 >= _iterator2.length) break;
+      _ref3 = _iterator2[_i3++];
+    } else {
+      _i3 = _iterator2.next();
+      if (_i3.done) break;
+      _ref3 = _i3.value;
+    }
+
+    var glyph = _ref3;
+
+    glyph.substituted = false;
+  }
+}
+
+function recordRphf(font, glyphs) {
+  for (var _iterator3 = glyphs, _isArray3 = Array.isArray(_iterator3), _i4 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+    var _ref4;
+
+    if (_isArray3) {
+      if (_i4 >= _iterator3.length) break;
+      _ref4 = _iterator3[_i4++];
+    } else {
+      _i4 = _iterator3.next();
+      if (_i4.done) break;
+      _ref4 = _i4.value;
+    }
+
+    var glyph = _ref4;
+
+    if (glyph.substituted && glyph.features.rphf) {
+      // Mark a substituted repha.
+      glyph.shaperInfo.category = 'R';
+    }
+  }
+}
+
+function recordPref(font, glyphs) {
+  for (var _iterator4 = glyphs, _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+    var _ref5;
+
+    if (_isArray4) {
+      if (_i5 >= _iterator4.length) break;
+      _ref5 = _iterator4[_i5++];
+    } else {
+      _i5 = _iterator4.next();
+      if (_i5.done) break;
+      _ref5 = _i5.value;
+    }
+
+    var glyph = _ref5;
+
+    if (glyph.substituted) {
+      // Mark a substituted pref as VPre, as they behave the same way.
+      glyph.shaperInfo.category = 'VPre';
+    }
+  }
+}
+
+function reorder(font, glyphs) {
+  var dottedCircle = font.glyphForCodePoint(0x25cc).id;
+
+  for (var start = 0, end = nextSyllable$1(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable$1(glyphs, start)) {
+    var i = void 0,
+        j = void 0;
+    var info = glyphs[start].shaperInfo;
+    var type = info.syllableType;
+
+    // Only a few syllable types need reordering.
+    if (type !== 'virama_terminated_cluster' && type !== 'standard_cluster' && type !== 'broken_cluster') {
+      continue;
+    }
+
+    // Insert a dotted circle glyph in broken clusters.
+    if (type === 'broken_cluster' && dottedCircle) {
+      var g = new GlyphInfo(font, dottedCircle, [0x25cc]);
+      g.shaperInfo = info;
+
+      // Insert after possible Repha.
+      for (i = start; i < end && glyphs[i].shaperInfo.category === 'R'; i++) {}
+      glyphs.splice(++i, 0, g);
+      end++;
+    }
+
+    // Move things forward.
+    if (info.category === 'R' && end - start > 1) {
+      // Got a repha. Reorder it to after first base, before first halant.
+      for (i = start + 1; i < end; i++) {
+        info = glyphs[i].shaperInfo;
+        if (isBase(info) || isHalant(glyphs[i])) {
+          // If we hit a halant, move before it; otherwise it's a base: move to it's
+          // place, and shift things in between backward.
+          if (isHalant(glyphs[i])) {
+            i--;
+          }
+
+          glyphs.splice.apply(glyphs, [start, 0].concat(glyphs.splice(start + 1, i - start), [glyphs[i]]));
+          break;
+        }
+      }
+    }
+
+    // Move things back.
+    for (i = start, j = end; i < end; i++) {
+      info = glyphs[i].shaperInfo;
+      if (isBase(info) || isHalant(glyphs[i])) {
+        // If we hit a halant, move after it; otherwise it's a base: move to it's
+        // place, and shift things in between backward.
+        j = isHalant(glyphs[i]) ? i + 1 : i;
+      } else if ((info.category === 'VPre' || info.category === 'VMPre') && j < i) {
+        glyphs.splice.apply(glyphs, [j, 1, glyphs[i]].concat(glyphs.splice(j, i - j)));
+      }
+    }
+  }
+}
+
+function nextSyllable$1(glyphs, start) {
+  if (start >= glyphs.length) return start;
+  var syllable = glyphs[start].shaperInfo.syllable;
+  while (++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable) {}
+  return start;
+}
+
+function isHalant(glyph) {
+  return glyph.shaperInfo.category === 'H' && !glyph.isLigated;
+}
+
+function isBase(info) {
+  return info.category === 'B' || info.category === 'GB';
+}
+
+var SHAPERS = {
+  arab: ArabicShaper, // Arabic
+  mong: ArabicShaper, // Mongolian
+  syrc: ArabicShaper, // Syriac
+  'nko ': ArabicShaper, // N'Ko
+  phag: ArabicShaper, // Phags Pa
+  mand: ArabicShaper, // Mandaic
+  mani: ArabicShaper, // Manichaean
+  phlp: ArabicShaper, // Psalter Pahlavi
+
+  hang: HangulShaper, // Hangul
+
+  bng2: IndicShaper, // Bengali
+  beng: IndicShaper, // Bengali
+  dev2: IndicShaper, // Devanagari
+  deva: IndicShaper, // Devanagari
+  gjr2: IndicShaper, // Gujarati
+  gujr: IndicShaper, // Gujarati
+  guru: IndicShaper, // Gurmukhi
+  gur2: IndicShaper, // Gurmukhi
+  knda: IndicShaper, // Kannada
+  knd2: IndicShaper, // Kannada
+  mlm2: IndicShaper, // Malayalam
+  mlym: IndicShaper, // Malayalam
+  ory2: IndicShaper, // Oriya
+  orya: IndicShaper, // Oriya
+  taml: IndicShaper, // Tamil
+  tml2: IndicShaper, // Tamil
+  telu: IndicShaper, // Telugu
+  tel2: IndicShaper, // Telugu
+  khmr: IndicShaper, // Khmer
+
+  bali: UniversalShaper, // Balinese
+  batk: UniversalShaper, // Batak
+  brah: UniversalShaper, // Brahmi
+  bugi: UniversalShaper, // Buginese
+  buhd: UniversalShaper, // Buhid
+  cakm: UniversalShaper, // Chakma
+  cham: UniversalShaper, // Cham
+  dupl: UniversalShaper, // Duployan
+  egyp: UniversalShaper, // Egyptian Hieroglyphs
+  gran: UniversalShaper, // Grantha
+  hano: UniversalShaper, // Hanunoo
+  java: UniversalShaper, // Javanese
+  kthi: UniversalShaper, // Kaithi
+  kali: UniversalShaper, // Kayah Li
+  khar: UniversalShaper, // Kharoshthi
+  khoj: UniversalShaper, // Khojki
+  sind: UniversalShaper, // Khudawadi
+  lepc: UniversalShaper, // Lepcha
+  limb: UniversalShaper, // Limbu
+  mahj: UniversalShaper, // Mahajani
+  // mand: UniversalShaper, // Mandaic
+  // mani: UniversalShaper, // Manichaean
+  mtei: UniversalShaper, // Meitei Mayek
+  modi: UniversalShaper, // Modi
+  // mong: UniversalShaper, // Mongolian
+  // 'nko ': UniversalShaper, // N’Ko
+  hmng: UniversalShaper, // Pahawh Hmong
+  // phag: UniversalShaper, // Phags-pa
+  // phlp: UniversalShaper, // Psalter Pahlavi
+  rjng: UniversalShaper, // Rejang
+  saur: UniversalShaper, // Saurashtra
+  shrd: UniversalShaper, // Sharada
+  sidd: UniversalShaper, // Siddham
+  sinh: UniversalShaper, // Sinhala
+  sund: UniversalShaper, // Sundanese
+  sylo: UniversalShaper, // Syloti Nagri
+  tglg: UniversalShaper, // Tagalog
+  tagb: UniversalShaper, // Tagbanwa
+  tale: UniversalShaper, // Tai Le
+  lana: UniversalShaper, // Tai Tham
+  tavt: UniversalShaper, // Tai Viet
+  takr: UniversalShaper, // Takri
+  tibt: UniversalShaper, // Tibetan
+  tfng: UniversalShaper, // Tifinagh
+  tirh: UniversalShaper, // Tirhuta
+
+  latn: DefaultShaper, // Latin
+  DFLT: DefaultShaper // Default
+};
+
+function choose(script) {
+  if (!Array.isArray(script)) {
+    script = [script];
+  }
+
+  for (var _iterator = script, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var s = _ref;
+
+    var shaper = SHAPERS[s];
+    if (shaper) {
+      return shaper;
+    }
+  }
+
+  return DefaultShaper;
+}
+
+var GSUBProcessor = function (_OTProcessor) {
+  _inherits(GSUBProcessor, _OTProcessor);
+
+  function GSUBProcessor() {
+    _classCallCheck(this, GSUBProcessor);
+
+    return _possibleConstructorReturn(this, _OTProcessor.apply(this, arguments));
+  }
+
+  GSUBProcessor.prototype.applyLookup = function applyLookup(lookupType, table) {
+    var _this2 = this;
+
+    switch (lookupType) {
+      case 1:
+        {
+          // Single Substitution
+          var index = this.coverageIndex(table.coverage);
+          if (index === -1) {
+            return false;
+          }
+
+          var glyph = this.glyphIterator.cur;
+          switch (table.version) {
+            case 1:
+              glyph.id = glyph.id + table.deltaGlyphID & 0xffff;
+              break;
+
+            case 2:
+              glyph.id = table.substitute.get(index);
+              break;
+          }
+
+          return true;
+        }
+
+      case 2:
+        {
+          // Multiple Substitution
+          var _index = this.coverageIndex(table.coverage);
+          if (_index !== -1) {
+            var _glyphs;
+
+            var sequence = table.sequences.get(_index);
+            this.glyphIterator.cur.id = sequence[0];
+            this.glyphIterator.cur.ligatureComponent = 0;
+
+            var features = this.glyphIterator.cur.features;
+            var curGlyph = this.glyphIterator.cur;
+            var replacement = sequence.slice(1).map(function (gid, i) {
+              var glyph = new GlyphInfo(_this2.font, gid, undefined, features);
+              glyph.shaperInfo = curGlyph.shaperInfo;
+              glyph.isLigated = curGlyph.isLigated;
+              glyph.ligatureComponent = i + 1;
+              glyph.substituted = true;
+              glyph.isMultiplied = true;
+              return glyph;
+            });
+
+            (_glyphs = this.glyphs).splice.apply(_glyphs, [this.glyphIterator.index + 1, 0].concat(replacement));
+            return true;
+          }
+
+          return false;
+        }
+
+      case 3:
+        {
+          // Alternate Substitution
+          var _index2 = this.coverageIndex(table.coverage);
+          if (_index2 !== -1) {
+            var USER_INDEX = 0; // TODO
+            this.glyphIterator.cur.id = table.alternateSet.get(_index2)[USER_INDEX];
+            return true;
+          }
+
+          return false;
+        }
+
+      case 4:
+        {
+          // Ligature Substitution
+          var _index3 = this.coverageIndex(table.coverage);
+          if (_index3 === -1) {
+            return false;
+          }
+
+          for (var _iterator = table.ligatureSets.get(_index3), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+            var _ref;
+
+            if (_isArray) {
+              if (_i >= _iterator.length) break;
+              _ref = _iterator[_i++];
+            } else {
+              _i = _iterator.next();
+              if (_i.done) break;
+              _ref = _i.value;
+            }
+
+            var ligature = _ref;
+
+            var matched = this.sequenceMatchIndices(1, ligature.components);
+            if (!matched) {
+              continue;
+            }
+
+            var _curGlyph = this.glyphIterator.cur;
+
+            // Concatenate all of the characters the new ligature will represent
+            var characters = _curGlyph.codePoints.slice();
+            for (var _iterator2 = matched, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+              var _ref2;
+
+              if (_isArray2) {
+                if (_i2 >= _iterator2.length) break;
+                _ref2 = _iterator2[_i2++];
+              } else {
+                _i2 = _iterator2.next();
+                if (_i2.done) break;
+                _ref2 = _i2.value;
+              }
+
+              var _index4 = _ref2;
+
+              characters.push.apply(characters, this.glyphs[_index4].codePoints);
+            }
+
+            // Create the replacement ligature glyph
+            var ligatureGlyph = new GlyphInfo(this.font, ligature.glyph, characters, _curGlyph.features);
+            ligatureGlyph.shaperInfo = _curGlyph.shaperInfo;
+            ligatureGlyph.isLigated = true;
+            ligatureGlyph.substituted = true;
+
+            // From Harfbuzz:
+            // - If it *is* a mark ligature, we don't allocate a new ligature id, and leave
+            //   the ligature to keep its old ligature id.  This will allow it to attach to
+            //   a base ligature in GPOS.  Eg. if the sequence is: LAM,LAM,SHADDA,FATHA,HEH,
+            //   and LAM,LAM,HEH for a ligature, they will leave SHADDA and FATHA with a
+            //   ligature id and component value of 2.  Then if SHADDA,FATHA form a ligature
+            //   later, we don't want them to lose their ligature id/component, otherwise
+            //   GPOS will fail to correctly position the mark ligature on top of the
+            //   LAM,LAM,HEH ligature. See https://bugzilla.gnome.org/show_bug.cgi?id=676343
+            //
+            // - If a ligature is formed of components that some of which are also ligatures
+            //   themselves, and those ligature components had marks attached to *their*
+            //   components, we have to attach the marks to the new ligature component
+            //   positions!  Now *that*'s tricky!  And these marks may be following the
+            //   last component of the whole sequence, so we should loop forward looking
+            //   for them and update them.
+            //
+            //   Eg. the sequence is LAM,LAM,SHADDA,FATHA,HEH, and the font first forms a
+            //   'calt' ligature of LAM,HEH, leaving the SHADDA and FATHA with a ligature
+            //   id and component == 1.  Now, during 'liga', the LAM and the LAM-HEH ligature
+            //   form a LAM-LAM-HEH ligature.  We need to reassign the SHADDA and FATHA to
+            //   the new ligature with a component value of 2.
+            //
+            //   This in fact happened to a font...  See https://bugzilla.gnome.org/show_bug.cgi?id=437633
+            var isMarkLigature = _curGlyph.isMark;
+            for (var i = 0; i < matched.length && isMarkLigature; i++) {
+              isMarkLigature = this.glyphs[matched[i]].isMark;
+            }
+
+            ligatureGlyph.ligatureID = isMarkLigature ? null : this.ligatureID++;
+
+            var lastLigID = _curGlyph.ligatureID;
+            var lastNumComps = _curGlyph.codePoints.length;
+            var curComps = lastNumComps;
+            var idx = this.glyphIterator.index + 1;
+
+            // Set ligatureID and ligatureComponent on glyphs that were skipped in the matched sequence.
+            // This allows GPOS to attach marks to the correct ligature components.
+            for (var _iterator3 = matched, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+              var _ref3;
+
+              if (_isArray3) {
+                if (_i3 >= _iterator3.length) break;
+                _ref3 = _iterator3[_i3++];
+              } else {
+                _i3 = _iterator3.next();
+                if (_i3.done) break;
+                _ref3 = _i3.value;
+              }
+
+              var matchIndex = _ref3;
+
+              // Don't assign new ligature components for mark ligatures (see above)
+              if (isMarkLigature) {
+                idx = matchIndex;
+              } else {
+                while (idx < matchIndex) {
+                  var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[idx].ligatureComponent || 1, lastNumComps);
+                  this.glyphs[idx].ligatureID = ligatureGlyph.ligatureID;
+                  this.glyphs[idx].ligatureComponent = ligatureComponent;
+                  idx++;
+                }
+              }
+
+              lastLigID = this.glyphs[idx].ligatureID;
+              lastNumComps = this.glyphs[idx].codePoints.length;
+              curComps += lastNumComps;
+              idx++; // skip base glyph
+            }
+
+            // Adjust ligature components for any marks following
+            if (lastLigID && !isMarkLigature) {
+              for (var _i4 = idx; _i4 < this.glyphs.length; _i4++) {
+                if (this.glyphs[_i4].ligatureID === lastLigID) {
+                  var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[_i4].ligatureComponent || 1, lastNumComps);
+                  this.glyphs[_i4].ligatureComponent = ligatureComponent;
+                } else {
+                  break;
+                }
+              }
+            }
+
+            // Delete the matched glyphs, and replace the current glyph with the ligature glyph
+            for (var _i5 = matched.length - 1; _i5 >= 0; _i5--) {
+              this.glyphs.splice(matched[_i5], 1);
+            }
+
+            this.glyphs[this.glyphIterator.index] = ligatureGlyph;
+            return true;
+          }
+
+          return false;
+        }
+
+      case 5:
+        // Contextual Substitution
+        return this.applyContext(table);
+
+      case 6:
+        // Chaining Contextual Substitution
+        return this.applyChainingContext(table);
+
+      case 7:
+        // Extension Substitution
+        return this.applyLookup(table.lookupType, table.extension);
+
+      default:
+        throw new Error('GSUB lookupType ' + lookupType + ' is not supported');
+    }
+  };
+
+  return GSUBProcessor;
+}(OTProcessor);
+
+var GPOSProcessor = function (_OTProcessor) {
+  _inherits(GPOSProcessor, _OTProcessor);
+
+  function GPOSProcessor() {
+    _classCallCheck(this, GPOSProcessor);
+
+    return _possibleConstructorReturn(this, _OTProcessor.apply(this, arguments));
+  }
+
+  GPOSProcessor.prototype.applyPositionValue = function applyPositionValue(sequenceIndex, value) {
+    var position = this.positions[this.glyphIterator.peekIndex(sequenceIndex)];
+    if (value.xAdvance != null) {
+      position.xAdvance += value.xAdvance;
+    }
+
+    if (value.yAdvance != null) {
+      position.yAdvance += value.yAdvance;
+    }
+
+    if (value.xPlacement != null) {
+      position.xOffset += value.xPlacement;
+    }
+
+    if (value.yPlacement != null) {
+      position.yOffset += value.yPlacement;
+    }
+
+    // Adjustments for font variations
+    var variationProcessor = this.font._variationProcessor;
+    var variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;
+    if (variationProcessor && variationStore) {
+      if (value.xPlaDevice) {
+        position.xOffset += variationProcessor.getDelta(variationStore, value.xPlaDevice.a, value.xPlaDevice.b);
+      }
+
+      if (value.yPlaDevice) {
+        position.yOffset += variationProcessor.getDelta(variationStore, value.yPlaDevice.a, value.yPlaDevice.b);
+      }
+
+      if (value.xAdvDevice) {
+        position.xAdvance += variationProcessor.getDelta(variationStore, value.xAdvDevice.a, value.xAdvDevice.b);
+      }
+
+      if (value.yAdvDevice) {
+        position.yAdvance += variationProcessor.getDelta(variationStore, value.yAdvDevice.a, value.yAdvDevice.b);
+      }
+    }
+
+    // TODO: device tables
+  };
+
+  GPOSProcessor.prototype.applyLookup = function applyLookup(lookupType, table) {
+    switch (lookupType) {
+      case 1:
+        {
+          // Single positioning value
+          var index = this.coverageIndex(table.coverage);
+          if (index === -1) {
+            return false;
+          }
+
+          switch (table.version) {
+            case 1:
+              this.applyPositionValue(0, table.value);
+              break;
+
+            case 2:
+              this.applyPositionValue(0, table.values.get(index));
+              break;
+          }
+
+          return true;
+        }
+
+      case 2:
+        {
+          // Pair Adjustment Positioning
+          var nextGlyph = this.glyphIterator.peek();
+          if (!nextGlyph) {
+            return false;
+          }
+
+          var _index = this.coverageIndex(table.coverage);
+          if (_index === -1) {
+            return false;
+          }
+
+          switch (table.version) {
+            case 1:
+              // Adjustments for glyph pairs
+              var set = table.pairSets.get(_index);
+
+              for (var _iterator = set, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+                var _ref;
+
+                if (_isArray) {
+                  if (_i >= _iterator.length) break;
+                  _ref = _iterator[_i++];
+                } else {
+                  _i = _iterator.next();
+                  if (_i.done) break;
+                  _ref = _i.value;
+                }
+
+                var _pair = _ref;
+
+                if (_pair.secondGlyph === nextGlyph.id) {
+                  this.applyPositionValue(0, _pair.value1);
+                  this.applyPositionValue(1, _pair.value2);
+                  return true;
+                }
+              }
+
+              return false;
+
+            case 2:
+              // Class pair adjustment
+              var class1 = this.getClassID(this.glyphIterator.cur.id, table.classDef1);
+              var class2 = this.getClassID(nextGlyph.id, table.classDef2);
+              if (class1 === -1 || class2 === -1) {
+                return false;
+              }
+
+              var pair = table.classRecords.get(class1).get(class2);
+              this.applyPositionValue(0, pair.value1);
+              this.applyPositionValue(1, pair.value2);
+              return true;
+          }
+        }
+
+      case 3:
+        {
+          // Cursive Attachment Positioning
+          var nextIndex = this.glyphIterator.peekIndex();
+          var _nextGlyph = this.glyphs[nextIndex];
+          if (!_nextGlyph) {
+            return false;
+          }
+
+          var curRecord = table.entryExitRecords[this.coverageIndex(table.coverage)];
+          if (!curRecord || !curRecord.exitAnchor) {
+            return false;
+          }
+
+          var nextRecord = table.entryExitRecords[this.coverageIndex(table.coverage, _nextGlyph.id)];
+          if (!nextRecord || !nextRecord.entryAnchor) {
+            return false;
+          }
+
+          var entry = this.getAnchor(nextRecord.entryAnchor);
+          var exit = this.getAnchor(curRecord.exitAnchor);
+
+          var cur = this.positions[this.glyphIterator.index];
+          var next = this.positions[nextIndex];
+
+          switch (this.direction) {
+            case 'ltr':
+              cur.xAdvance = exit.x + cur.xOffset;
+
+              var d = entry.x + next.xOffset;
+              next.xAdvance -= d;
+              next.xOffset -= d;
+              break;
+
+            case 'rtl':
+              d = exit.x + cur.xOffset;
+              cur.xAdvance -= d;
+              cur.xOffset -= d;
+              next.xAdvance = entry.x + next.xOffset;
+              break;
+          }
+
+          if (this.glyphIterator.flags.rightToLeft) {
+            this.glyphIterator.cur.cursiveAttachment = nextIndex;
+            cur.yOffset = entry.y - exit.y;
+          } else {
+            _nextGlyph.cursiveAttachment = this.glyphIterator.index;
+            cur.yOffset = exit.y - entry.y;
+          }
+
+          return true;
+        }
+
+      case 4:
+        {
+          // Mark to base positioning
+          var markIndex = this.coverageIndex(table.markCoverage);
+          if (markIndex === -1) {
+            return false;
+          }
+
+          // search backward for a base glyph
+          var baseGlyphIndex = this.glyphIterator.index;
+          while (--baseGlyphIndex >= 0 && (this.glyphs[baseGlyphIndex].isMark || this.glyphs[baseGlyphIndex].ligatureComponent > 0)) {}
+
+          if (baseGlyphIndex < 0) {
+            return false;
+          }
+
+          var baseIndex = this.coverageIndex(table.baseCoverage, this.glyphs[baseGlyphIndex].id);
+          if (baseIndex === -1) {
+            return false;
+          }
+
+          var markRecord = table.markArray[markIndex];
+          var baseAnchor = table.baseArray[baseIndex][markRecord.class];
+          this.applyAnchor(markRecord, baseAnchor, baseGlyphIndex);
+          return true;
+        }
+
+      case 5:
+        {
+          // Mark to ligature positioning
+          var _markIndex = this.coverageIndex(table.markCoverage);
+          if (_markIndex === -1) {
+            return false;
+          }
+
+          // search backward for a base glyph
+          var _baseGlyphIndex = this.glyphIterator.index;
+          while (--_baseGlyphIndex >= 0 && this.glyphs[_baseGlyphIndex].isMark) {}
+
+          if (_baseGlyphIndex < 0) {
+            return false;
+          }
+
+          var ligIndex = this.coverageIndex(table.ligatureCoverage, this.glyphs[_baseGlyphIndex].id);
+          if (ligIndex === -1) {
+            return false;
+          }
+
+          var ligAttach = table.ligatureArray[ligIndex];
+          var markGlyph = this.glyphIterator.cur;
+          var ligGlyph = this.glyphs[_baseGlyphIndex];
+          var compIndex = ligGlyph.ligatureID && ligGlyph.ligatureID === markGlyph.ligatureID && markGlyph.ligatureComponent > 0 ? Math.min(markGlyph.ligatureComponent, ligGlyph.codePoints.length) - 1 : ligGlyph.codePoints.length - 1;
+
+          var _markRecord = table.markArray[_markIndex];
+          var _baseAnchor = ligAttach[compIndex][_markRecord.class];
+          this.applyAnchor(_markRecord, _baseAnchor, _baseGlyphIndex);
+          return true;
+        }
+
+      case 6:
+        {
+          // Mark to mark positioning
+          var mark1Index = this.coverageIndex(table.mark1Coverage);
+          if (mark1Index === -1) {
+            return false;
+          }
+
+          // get the previous mark to attach to
+          var prevIndex = this.glyphIterator.peekIndex(-1);
+          var prev = this.glyphs[prevIndex];
+          if (!prev || !prev.isMark) {
+            return false;
+          }
+
+          var _cur = this.glyphIterator.cur;
+
+          // The following logic was borrowed from Harfbuzz
+          var good = false;
+          if (_cur.ligatureID === prev.ligatureID) {
+            if (!_cur.ligatureID) {
+              // Marks belonging to the same base
+              good = true;
+            } else if (_cur.ligatureComponent === prev.ligatureComponent) {
+              // Marks belonging to the same ligature component
+              good = true;
+            }
+          } else {
+            // If ligature ids don't match, it may be the case that one of the marks
+            // itself is a ligature, in which case match.
+            if (_cur.ligatureID && !_cur.ligatureComponent || prev.ligatureID && !prev.ligatureComponent) {
+              good = true;
+            }
+          }
+
+          if (!good) {
+            return false;
+          }
+
+          var mark2Index = this.coverageIndex(table.mark2Coverage, prev.id);
+          if (mark2Index === -1) {
+            return false;
+          }
+
+          var _markRecord2 = table.mark1Array[mark1Index];
+          var _baseAnchor2 = table.mark2Array[mark2Index][_markRecord2.class];
+          this.applyAnchor(_markRecord2, _baseAnchor2, prevIndex);
+          return true;
+        }
+
+      case 7:
+        // Contextual positioning
+        return this.applyContext(table);
+
+      case 8:
+        // Chaining contextual positioning
+        return this.applyChainingContext(table);
+
+      case 9:
+        // Extension positioning
+        return this.applyLookup(table.lookupType, table.extension);
+
+      default:
+        throw new Error('Unsupported GPOS table: ' + lookupType);
+    }
+  };
+
+  GPOSProcessor.prototype.applyAnchor = function applyAnchor(markRecord, baseAnchor, baseGlyphIndex) {
+    var baseCoords = this.getAnchor(baseAnchor);
+    var markCoords = this.getAnchor(markRecord.markAnchor);
+
+    var basePos = this.positions[baseGlyphIndex];
+    var markPos = this.positions[this.glyphIterator.index];
+
+    markPos.xOffset = baseCoords.x - markCoords.x;
+    markPos.yOffset = baseCoords.y - markCoords.y;
+    this.glyphIterator.cur.markAttachment = baseGlyphIndex;
+  };
+
+  GPOSProcessor.prototype.getAnchor = function getAnchor(anchor) {
+    // TODO: contour point, device tables
+    var x = anchor.xCoordinate;
+    var y = anchor.yCoordinate;
+
+    // Adjustments for font variations
+    var variationProcessor = this.font._variationProcessor;
+    var variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;
+    if (variationProcessor && variationStore) {
+      if (anchor.xDeviceTable) {
+        x += variationProcessor.getDelta(variationStore, anchor.xDeviceTable.a, anchor.xDeviceTable.b);
+      }
+
+      if (anchor.yDeviceTable) {
+        y += variationProcessor.getDelta(variationStore, anchor.yDeviceTable.a, anchor.yDeviceTable.b);
+      }
+    }
+
+    return { x: x, y: y };
+  };
+
+  GPOSProcessor.prototype.applyFeatures = function applyFeatures(userFeatures, glyphs, advances) {
+    _OTProcessor.prototype.applyFeatures.call(this, userFeatures, glyphs, advances);
+
+    for (var i = 0; i < this.glyphs.length; i++) {
+      this.fixCursiveAttachment(i);
+    }
+
+    this.fixMarkAttachment();
+  };
+
+  GPOSProcessor.prototype.fixCursiveAttachment = function fixCursiveAttachment(i) {
+    var glyph = this.glyphs[i];
+    if (glyph.cursiveAttachment != null) {
+      var j = glyph.cursiveAttachment;
+
+      glyph.cursiveAttachment = null;
+      this.fixCursiveAttachment(j);
+
+      this.positions[i].yOffset += this.positions[j].yOffset;
+    }
+  };
+
+  GPOSProcessor.prototype.fixMarkAttachment = function fixMarkAttachment() {
+    for (var i = 0; i < this.glyphs.length; i++) {
+      var glyph = this.glyphs[i];
+      if (glyph.markAttachment != null) {
+        var j = glyph.markAttachment;
+
+        this.positions[i].xOffset += this.positions[j].xOffset;
+        this.positions[i].yOffset += this.positions[j].yOffset;
+
+        if (this.direction === 'ltr') {
+          for (var k = j; k < i; k++) {
+            this.positions[i].xOffset -= this.positions[k].xAdvance;
+            this.positions[i].yOffset -= this.positions[k].yAdvance;
+          }
+        } else {
+          for (var _k = j + 1; _k < i + 1; _k++) {
+            this.positions[i].xOffset += this.positions[_k].xAdvance;
+            this.positions[i].yOffset += this.positions[_k].yAdvance;
+          }
+        }
+      }
+    }
+  };
+
+  return GPOSProcessor;
+}(OTProcessor);
+
+var OTLayoutEngine = function () {
+  function OTLayoutEngine(font) {
+    _classCallCheck(this, OTLayoutEngine);
+
+    this.font = font;
+    this.glyphInfos = null;
+    this.plan = null;
+    this.GSUBProcessor = null;
+    this.GPOSProcessor = null;
+    this.fallbackPosition = true;
+
+    if (font.GSUB) {
+      this.GSUBProcessor = new GSUBProcessor(font, font.GSUB);
+    }
+
+    if (font.GPOS) {
+      this.GPOSProcessor = new GPOSProcessor(font, font.GPOS);
+    }
+  }
+
+  OTLayoutEngine.prototype.setup = function setup(glyphRun) {
+    var _this = this;
+
+    // Map glyphs to GlyphInfo objects so data can be passed between
+    // GSUB and GPOS without mutating the real (shared) Glyph objects.
+    this.glyphInfos = glyphRun.glyphs.map(function (glyph) {
+      return new GlyphInfo(_this.font, glyph.id, [].concat(glyph.codePoints));
+    });
+
+    // Select a script based on what is available in GSUB/GPOS.
+    var script = null;
+    if (this.GPOSProcessor) {
+      script = this.GPOSProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);
+    }
+
+    if (this.GSUBProcessor) {
+      script = this.GSUBProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);
+    }
+
+    // Choose a shaper based on the script, and setup a shaping plan.
+    // This determines which features to apply to which glyphs.
+    this.shaper = choose(script);
+    this.plan = new ShapingPlan(this.font, script, glyphRun.direction);
+    this.shaper.plan(this.plan, this.glyphInfos, glyphRun.features);
+
+    // Assign chosen features to output glyph run
+    for (var key in this.plan.allFeatures) {
+      glyphRun.features[key] = true;
+    }
+  };
+
+  OTLayoutEngine.prototype.substitute = function substitute(glyphRun) {
+    var _this2 = this;
+
+    if (this.GSUBProcessor) {
+      this.plan.process(this.GSUBProcessor, this.glyphInfos);
+
+      // Map glyph infos back to normal Glyph objects
+      glyphRun.glyphs = this.glyphInfos.map(function (glyphInfo) {
+        return _this2.font.getGlyph(glyphInfo.id, glyphInfo.codePoints);
+      });
+    }
+  };
+
+  OTLayoutEngine.prototype.position = function position(glyphRun) {
+    if (this.shaper.zeroMarkWidths === 'BEFORE_GPOS') {
+      this.zeroMarkAdvances(glyphRun.positions);
+    }
+
+    if (this.GPOSProcessor) {
+      this.plan.process(this.GPOSProcessor, this.glyphInfos, glyphRun.positions);
+    }
+
+    if (this.shaper.zeroMarkWidths === 'AFTER_GPOS') {
+      this.zeroMarkAdvances(glyphRun.positions);
+    }
+
+    // Reverse the glyphs and positions if the script is right-to-left
+    if (glyphRun.direction === 'rtl') {
+      glyphRun.glyphs.reverse();
+      glyphRun.positions.reverse();
+    }
+
+    return this.GPOSProcessor && this.GPOSProcessor.features;
+  };
+
+  OTLayoutEngine.prototype.zeroMarkAdvances = function zeroMarkAdvances(positions) {
+    for (var i = 0; i < this.glyphInfos.length; i++) {
+      if (this.glyphInfos[i].isMark) {
+        positions[i].xAdvance = 0;
+        positions[i].yAdvance = 0;
+      }
+    }
+  };
+
+  OTLayoutEngine.prototype.cleanup = function cleanup() {
+    this.glyphInfos = null;
+    this.plan = null;
+    this.shaper = null;
+  };
+
+  OTLayoutEngine.prototype.getAvailableFeatures = function getAvailableFeatures(script, language) {
+    var features = [];
+
+    if (this.GSUBProcessor) {
+      this.GSUBProcessor.selectScript(script, language);
+      features.push.apply(features, _Object$keys(this.GSUBProcessor.features));
+    }
+
+    if (this.GPOSProcessor) {
+      this.GPOSProcessor.selectScript(script, language);
+      features.push.apply(features, _Object$keys(this.GPOSProcessor.features));
+    }
+
+    return features;
+  };
+
+  return OTLayoutEngine;
+}();
+
+var LayoutEngine = function () {
+  function LayoutEngine(font) {
+    _classCallCheck(this, LayoutEngine);
+
+    this.font = font;
+    this.unicodeLayoutEngine = null;
+    this.kernProcessor = null;
+
+    // Choose an advanced layout engine. We try the AAT morx table first since more
+    // scripts are currently supported because the shaping logic is built into the font.
+    if (this.font.morx) {
+      this.engine = new AATLayoutEngine(this.font);
+    } else if (this.font.GSUB || this.font.GPOS) {
+      this.engine = new OTLayoutEngine(this.font);
+    }
+  }
+
+  LayoutEngine.prototype.layout = function layout(string, features, script, language, direction) {
+    // Make the features parameter optional
+    if (typeof features === 'string') {
+      direction = language;
+      language = script;
+      script = features;
+      features = [];
+    }
+
+    // Map string to glyphs if needed
+    if (typeof string === 'string') {
+      // Attempt to detect the script from the string if not provided.
+      if (script == null) {
+        script = forString(string);
+      }
+
+      var glyphs = this.font.glyphsForString(string);
+    } else {
+      // Attempt to detect the script from the glyph code points if not provided.
+      if (script == null) {
+        var codePoints = [];
+        for (var _iterator = string, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+          var _ref;
+
+          if (_isArray) {
+            if (_i >= _iterator.length) break;
+            _ref = _iterator[_i++];
+          } else {
+            _i = _iterator.next();
+            if (_i.done) break;
+            _ref = _i.value;
+          }
+
+          var glyph = _ref;
+
+          codePoints.push.apply(codePoints, glyph.codePoints);
+        }
+
+        script = forCodePoints(codePoints);
+      }
+
+      var glyphs = string;
+    }
+
+    var glyphRun = new GlyphRun(glyphs, features, script, language, direction);
+
+    // Return early if there are no glyphs
+    if (glyphs.length === 0) {
+      glyphRun.positions = [];
+      return glyphRun;
+    }
+
+    // Setup the advanced layout engine
+    if (this.engine && this.engine.setup) {
+      this.engine.setup(glyphRun);
+    }
+
+    // Substitute and position the glyphs
+    this.substitute(glyphRun);
+    this.position(glyphRun);
+
+    this.hideDefaultIgnorables(glyphRun.glyphs, glyphRun.positions);
+
+    // Let the layout engine clean up any state it might have
+    if (this.engine && this.engine.cleanup) {
+      this.engine.cleanup();
+    }
+
+    return glyphRun;
+  };
+
+  LayoutEngine.prototype.substitute = function substitute(glyphRun) {
+    // Call the advanced layout engine to make substitutions
+    if (this.engine && this.engine.substitute) {
+      this.engine.substitute(glyphRun);
+    }
+  };
+
+  LayoutEngine.prototype.position = function position(glyphRun) {
+    // Get initial glyph positions
+    glyphRun.positions = glyphRun.glyphs.map(function (glyph) {
+      return new GlyphPosition(glyph.advanceWidth);
+    });
+    var positioned = null;
+
+    // Call the advanced layout engine. Returns the features applied.
+    if (this.engine && this.engine.position) {
+      positioned = this.engine.position(glyphRun);
+    }
+
+    // if there is no GPOS table, use unicode properties to position marks.
+    if (!positioned && (!this.engine || this.engine.fallbackPosition)) {
+      if (!this.unicodeLayoutEngine) {
+        this.unicodeLayoutEngine = new UnicodeLayoutEngine(this.font);
+      }
+
+      this.unicodeLayoutEngine.positionGlyphs(glyphRun.glyphs, glyphRun.positions);
+    }
+
+    // if kerning is not supported by GPOS, do kerning with the TrueType/AAT kern table
+    if ((!positioned || !positioned.kern) && glyphRun.features.kern !== false && this.font.kern) {
+      if (!this.kernProcessor) {
+        this.kernProcessor = new KernProcessor(this.font);
+      }
+
+      this.kernProcessor.process(glyphRun.glyphs, glyphRun.positions);
+      glyphRun.features.kern = true;
+    }
+  };
+
+  LayoutEngine.prototype.hideDefaultIgnorables = function hideDefaultIgnorables(glyphs, positions) {
+    var space = this.font.glyphForCodePoint(0x20);
+    for (var i = 0; i < glyphs.length; i++) {
+      if (this.isDefaultIgnorable(glyphs[i].codePoints[0])) {
+        glyphs[i] = space;
+        positions[i].xAdvance = 0;
+        positions[i].yAdvance = 0;
+      }
+    }
+  };
+
+  LayoutEngine.prototype.isDefaultIgnorable = function isDefaultIgnorable(ch) {
+    // From DerivedCoreProperties.txt in the Unicode database,
+    // minus U+115F, U+1160, U+3164 and U+FFA0, which is what
+    // Harfbuzz and Uniscribe do.
+    var plane = ch >> 16;
+    if (plane === 0) {
+      // BMP
+      switch (ch >> 8) {
+        case 0x00:
+          return ch === 0x00AD;
+        case 0x03:
+          return ch === 0x034F;
+        case 0x06:
+          return ch === 0x061C;
+        case 0x17:
+          return 0x17B4 <= ch && ch <= 0x17B5;
+        case 0x18:
+          return 0x180B <= ch && ch <= 0x180E;
+        case 0x20:
+          return 0x200B <= ch && ch <= 0x200F || 0x202A <= ch && ch <= 0x202E || 0x2060 <= ch && ch <= 0x206F;
+        case 0xFE:
+          return 0xFE00 <= ch && ch <= 0xFE0F || ch === 0xFEFF;
+        case 0xFF:
+          return 0xFFF0 <= ch && ch <= 0xFFF8;
+        default:
+          return false;
+      }
+    } else {
+      // Other planes
+      switch (plane) {
+        case 0x01:
+          return 0x1BCA0 <= ch && ch <= 0x1BCA3 || 0x1D173 <= ch && ch <= 0x1D17A;
+        case 0x0E:
+          return 0xE0000 <= ch && ch <= 0xE0FFF;
+        default:
+          return false;
+      }
+    }
+  };
+
+  LayoutEngine.prototype.getAvailableFeatures = function getAvailableFeatures(script, language) {
+    var features = [];
+
+    if (this.engine) {
+      features.push.apply(features, this.engine.getAvailableFeatures(script, language));
+    }
+
+    if (this.font.kern && features.indexOf('kern') === -1) {
+      features.push('kern');
+    }
+
+    return features;
+  };
+
+  LayoutEngine.prototype.stringsForGlyph = function stringsForGlyph(gid) {
+    var result = new _Set();
+
+    var codePoints = this.font._cmapProcessor.codePointsForGlyph(gid);
+    for (var _iterator2 = codePoints, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var codePoint = _ref2;
+
+      result.add(_String$fromCodePoint(codePoint));
+    }
+
+    if (this.engine && this.engine.stringsForGlyph) {
+      for (var _iterator3 = this.engine.stringsForGlyph(gid), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref3 = _i3.value;
+        }
+
+        var string = _ref3;
+
+        result.add(string);
+      }
+    }
+
+    return _Array$from(result);
+  };
+
+  return LayoutEngine;
+}();
+
+var SVG_COMMANDS = {
+  moveTo: 'M',
+  lineTo: 'L',
+  quadraticCurveTo: 'Q',
+  bezierCurveTo: 'C',
+  closePath: 'Z'
+};
+
+/**
+ * Path objects are returned by glyphs and represent the actual
+ * vector outlines for each glyph in the font. Paths can be converted
+ * to SVG path data strings, or to functions that can be applied to
+ * render the path to a graphics context.
+ */
+
+var Path = function () {
+  function Path() {
+    _classCallCheck(this, Path);
+
+    this.commands = [];
+    this._bbox = null;
+    this._cbox = null;
+  }
+
+  /**
+   * Compiles the path to a JavaScript function that can be applied with
+   * a graphics context in order to render the path.
+   * @return {string}
+   */
+
+
+  Path.prototype.toFunction = function toFunction() {
+    var cmds = this.commands.map(function (c) {
+      return '  ctx.' + c.command + '(' + c.args.join(', ') + ');';
+    });
+    return new Function('ctx', cmds.join('\n'));
+  };
+
+  /**
+   * Converts the path to an SVG path data string
+   * @return {string}
+   */
+
+
+  Path.prototype.toSVG = function toSVG() {
+    var cmds = this.commands.map(function (c) {
+      var args = c.args.map(function (arg) {
+        return Math.round(arg * 100) / 100;
+      });
+      return '' + SVG_COMMANDS[c.command] + args.join(' ');
+    });
+
+    return cmds.join('');
+  };
+
+  /**
+   * Gets the "control box" of a path.
+   * This is like the bounding box, but it includes all points including
+   * control points of bezier segments and is much faster to compute than
+   * the real bounding box.
+   * @type {BBox}
+   */
+
+
+  /**
+   * Applies a mapping function to each point in the path.
+   * @param {function} fn
+   * @return {Path}
+   */
+  Path.prototype.mapPoints = function mapPoints(fn) {
+    var path = new Path();
+
+    for (var _iterator = this.commands, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var c = _ref;
+
+      var args = [];
+      for (var _i2 = 0; _i2 < c.args.length; _i2 += 2) {
+        var _fn = fn(c.args[_i2], c.args[_i2 + 1]),
+            x = _fn[0],
+            y = _fn[1];
+
+        args.push(x, y);
+      }
+
+      path[c.command].apply(path, args);
+    }
+
+    return path;
+  };
+
+  /**
+   * Transforms the path by the given matrix.
+   */
+
+
+  Path.prototype.transform = function transform(m0, m1, m2, m3, m4, m5) {
+    return this.mapPoints(function (x, y) {
+      x = m0 * x + m2 * y + m4;
+      y = m1 * x + m3 * y + m5;
+      return [x, y];
+    });
+  };
+
+  /**
+   * Translates the path by the given offset.
+   */
+
+
+  Path.prototype.translate = function translate(x, y) {
+    return this.transform(1, 0, 0, 1, x, y);
+  };
+
+  /**
+   * Rotates the path by the given angle (in radians).
+   */
+
+
+  Path.prototype.rotate = function rotate(angle) {
+    var cos = Math.cos(angle);
+    var sin = Math.sin(angle);
+    return this.transform(cos, sin, -sin, cos, 0, 0);
+  };
+
+  /**
+   * Scales the path.
+   */
+
+
+  Path.prototype.scale = function scale(scaleX) {
+    var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;
+
+    return this.transform(scaleX, 0, 0, scaleY, 0, 0);
+  };
+
+  _createClass(Path, [{
+    key: 'cbox',
+    get: function get() {
+      if (!this._cbox) {
+        var cbox = new BBox();
+        for (var _iterator2 = this.commands, _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+          var _ref2;
+
+          if (_isArray2) {
+            if (_i3 >= _iterator2.length) break;
+            _ref2 = _iterator2[_i3++];
+          } else {
+            _i3 = _iterator2.next();
+            if (_i3.done) break;
+            _ref2 = _i3.value;
+          }
+
+          var command = _ref2;
+
+          for (var _i4 = 0; _i4 < command.args.length; _i4 += 2) {
+            cbox.addPoint(command.args[_i4], command.args[_i4 + 1]);
+          }
+        }
+
+        this._cbox = _Object$freeze(cbox);
+      }
+
+      return this._cbox;
+    }
+
+    /**
+     * Gets the exact bounding box of the path by evaluating curve segments.
+     * Slower to compute than the control box, but more accurate.
+     * @type {BBox}
+     */
+
+  }, {
+    key: 'bbox',
+    get: function get() {
+      if (this._bbox) {
+        return this._bbox;
+      }
+
+      var bbox = new BBox();
+      var cx = 0,
+          cy = 0;
+
+      var f = function f(t) {
+        return Math.pow(1 - t, 3) * p0[i] + 3 * Math.pow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + Math.pow(t, 3) * p3[i];
+      };
+
+      for (var _iterator3 = this.commands, _isArray3 = Array.isArray(_iterator3), _i5 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i5 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i5++];
+        } else {
+          _i5 = _iterator3.next();
+          if (_i5.done) break;
+          _ref3 = _i5.value;
+        }
+
+        var c = _ref3;
+
+        switch (c.command) {
+          case 'moveTo':
+          case 'lineTo':
+            var _c$args = c.args,
+                x = _c$args[0],
+                y = _c$args[1];
+
+            bbox.addPoint(x, y);
+            cx = x;
+            cy = y;
+            break;
+
+          case 'quadraticCurveTo':
+          case 'bezierCurveTo':
+            if (c.command === 'quadraticCurveTo') {
+              // http://fontforge.org/bezier.html
+              var _c$args2 = c.args,
+                  qp1x = _c$args2[0],
+                  qp1y = _c$args2[1],
+                  p3x = _c$args2[2],
+                  p3y = _c$args2[3];
+
+              var cp1x = cx + 2 / 3 * (qp1x - cx); // CP1 = QP0 + 2/3 * (QP1-QP0)
+              var cp1y = cy + 2 / 3 * (qp1y - cy);
+              var cp2x = p3x + 2 / 3 * (qp1x - p3x); // CP2 = QP2 + 2/3 * (QP1-QP2)
+              var cp2y = p3y + 2 / 3 * (qp1y - p3y);
+            } else {
+              var _c$args3 = c.args,
+                  cp1x = _c$args3[0],
+                  cp1y = _c$args3[1],
+                  cp2x = _c$args3[2],
+                  cp2y = _c$args3[3],
+                  p3x = _c$args3[4],
+                  p3y = _c$args3[5];
+            }
+
+            // http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+            bbox.addPoint(p3x, p3y);
+
+            var p0 = [cx, cy];
+            var p1 = [cp1x, cp1y];
+            var p2 = [cp2x, cp2y];
+            var p3 = [p3x, p3y];
+
+            for (var i = 0; i <= 1; i++) {
+              var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];
+              var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];
+              c = 3 * p1[i] - 3 * p0[i];
+
+              if (a === 0) {
+                if (b === 0) {
+                  continue;
+                }
+
+                var t = -c / b;
+                if (0 < t && t < 1) {
+                  if (i === 0) {
+                    bbox.addPoint(f(t), bbox.maxY);
+                  } else if (i === 1) {
+                    bbox.addPoint(bbox.maxX, f(t));
+                  }
+                }
+
+                continue;
+              }
+
+              var b2ac = Math.pow(b, 2) - 4 * c * a;
+              if (b2ac < 0) {
+                continue;
+              }
+
+              var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);
+              if (0 < t1 && t1 < 1) {
+                if (i === 0) {
+                  bbox.addPoint(f(t1), bbox.maxY);
+                } else if (i === 1) {
+                  bbox.addPoint(bbox.maxX, f(t1));
+                }
+              }
+
+              var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);
+              if (0 < t2 && t2 < 1) {
+                if (i === 0) {
+                  bbox.addPoint(f(t2), bbox.maxY);
+                } else if (i === 1) {
+                  bbox.addPoint(bbox.maxX, f(t2));
+                }
+              }
+            }
+
+            cx = p3x;
+            cy = p3y;
+            break;
+        }
+      }
+
+      return this._bbox = _Object$freeze(bbox);
+    }
+  }]);
+
+  return Path;
+}();
+
+var _arr = ['moveTo', 'lineTo', 'quadraticCurveTo', 'bezierCurveTo', 'closePath'];
+
+var _loop = function _loop() {
+  var command = _arr[_i6];
+  Path.prototype[command] = function () {
+    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+      args[_key] = arguments[_key];
+    }
+
+    this._bbox = this._cbox = null;
+    this.commands.push({
+      command: command,
+      args: args
+    });
+
+    return this;
+  };
+};
+
+for (var _i6 = 0; _i6 < _arr.length; _i6++) {
+  _loop();
+}
+
+var StandardNames = ['.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];
+
+var _class$8;
+function _applyDecoratedDescriptor$4(target, property, decorators, descriptor, context) {
+  var desc = {};
+  Object['ke' + 'ys'](descriptor).forEach(function (key) {
+    desc[key] = descriptor[key];
+  });
+  desc.enumerable = !!desc.enumerable;
+  desc.configurable = !!desc.configurable;
+
+  if ('value' in desc || desc.initializer) {
+    desc.writable = true;
+  }
+
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+    return decorator(target, property, desc) || desc;
+  }, desc);
+
+  if (context && desc.initializer !== void 0) {
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+    desc.initializer = undefined;
+  }
+
+  if (desc.initializer === void 0) {
+    Object['define' + 'Property'](target, property, desc);
+    desc = null;
+  }
+
+  return desc;
+}
+
+/**
+ * Glyph objects represent a glyph in the font. They have various properties for accessing metrics and
+ * the actual vector path the glyph represents, and methods for rendering the glyph to a graphics context.
+ *
+ * You do not create glyph objects directly. They are created by various methods on the font object.
+ * There are several subclasses of the base Glyph class internally that may be returned depending
+ * on the font format, but they all inherit from this class.
+ */
+var Glyph = (_class$8 = function () {
+  function Glyph(id, codePoints, font) {
+    _classCallCheck(this, Glyph);
+
+    /**
+     * The glyph id in the font
+     * @type {number}
+     */
+    this.id = id;
+
+    /**
+     * An array of unicode code points that are represented by this glyph.
+     * There can be multiple code points in the case of ligatures and other glyphs
+     * that represent multiple visual characters.
+     * @type {number[]}
+     */
+    this.codePoints = codePoints;
+    this._font = font;
+
+    // TODO: get this info from GDEF if available
+    this.isMark = this.codePoints.every(unicode.isMark);
+    this.isLigature = this.codePoints.length > 1;
+  }
+
+  Glyph.prototype._getPath = function _getPath() {
+    return new Path();
+  };
+
+  Glyph.prototype._getCBox = function _getCBox() {
+    return this.path.cbox;
+  };
+
+  Glyph.prototype._getBBox = function _getBBox() {
+    return this.path.bbox;
+  };
+
+  Glyph.prototype._getTableMetrics = function _getTableMetrics(table) {
+    if (this.id < table.metrics.length) {
+      return table.metrics.get(this.id);
+    }
+
+    var metric = table.metrics.get(table.metrics.length - 1);
+    var res = {
+      advance: metric ? metric.advance : 0,
+      bearing: table.bearings.get(this.id - table.metrics.length) || 0
+    };
+
+    return res;
+  };
+
+  Glyph.prototype._getMetrics = function _getMetrics(cbox) {
+    if (this._metrics) {
+      return this._metrics;
+    }
+
+    var _getTableMetrics2 = this._getTableMetrics(this._font.hmtx),
+        advanceWidth = _getTableMetrics2.advance,
+        leftBearing = _getTableMetrics2.bearing;
+
+    // For vertical metrics, use vmtx if available, or fall back to global data from OS/2 or hhea
+
+
+    if (this._font.vmtx) {
+      var _getTableMetrics3 = this._getTableMetrics(this._font.vmtx),
+          advanceHeight = _getTableMetrics3.advance,
+          topBearing = _getTableMetrics3.bearing;
+    } else {
+      var os2 = void 0;
+      if (typeof cbox === 'undefined' || cbox === null) {
+        cbox = this.cbox;
+      }
+
+      if ((os2 = this._font['OS/2']) && os2.version > 0) {
+        var advanceHeight = Math.abs(os2.typoAscender - os2.typoDescender);
+        var topBearing = os2.typoAscender - cbox.maxY;
+      } else {
+        var hhea = this._font.hhea;
+
+        var advanceHeight = Math.abs(hhea.ascent - hhea.descent);
+        var topBearing = hhea.ascent - cbox.maxY;
+      }
+    }
+
+    if (this._font._variationProcessor && this._font.HVAR) {
+      advanceWidth += this._font._variationProcessor.getAdvanceAdjustment(this.id, this._font.HVAR);
+    }
+
+    return this._metrics = { advanceWidth: advanceWidth, advanceHeight: advanceHeight, leftBearing: leftBearing, topBearing: topBearing };
+  };
+
+  /**
+   * The glyph’s control box.
+   * This is often the same as the bounding box, but is faster to compute.
+   * Because of the way bezier curves are defined, some of the control points
+   * can be outside of the bounding box. Where `bbox` takes this into account,
+   * `cbox` does not. Thus, cbox is less accurate, but faster to compute.
+   * See [here](http://www.freetype.org/freetype2/docs/glyphs/glyphs-6.html#section-2)
+   * for a more detailed description.
+   *
+   * @type {BBox}
+   */
+
+
+  /**
+   * Returns a path scaled to the given font size.
+   * @param {number} size
+   * @return {Path}
+   */
+  Glyph.prototype.getScaledPath = function getScaledPath(size) {
+    var scale = 1 / this._font.unitsPerEm * size;
+    return this.path.scale(scale);
+  };
+
+  /**
+   * The glyph's advance width.
+   * @type {number}
+   */
+
+
+  Glyph.prototype._getName = function _getName() {
+    var post = this._font.post;
+
+    if (!post) {
+      return null;
+    }
+
+    switch (post.version) {
+      case 1:
+        return StandardNames[this.id];
+
+      case 2:
+        var id = post.glyphNameIndex[this.id];
+        if (id < StandardNames.length) {
+          return StandardNames[id];
+        }
+
+        return post.names[id - StandardNames.length];
+
+      case 2.5:
+        return StandardNames[this.id + post.offsets[this.id]];
+
+      case 4:
+        return String.fromCharCode(post.map[this.id]);
+    }
+  };
+
+  /**
+   * The glyph's name
+   * @type {string}
+   */
+
+
+  /**
+   * Renders the glyph to the given graphics context, at the specified font size.
+   * @param {CanvasRenderingContext2d} ctx
+   * @param {number} size
+   */
+  Glyph.prototype.render = function render(ctx, size) {
+    ctx.save();
+
+    var scale = 1 / this._font.head.unitsPerEm * size;
+    ctx.scale(scale, scale);
+
+    var fn = this.path.toFunction();
+    fn(ctx);
+    ctx.fill();
+
+    ctx.restore();
+  };
+
+  _createClass(Glyph, [{
+    key: 'cbox',
+    get: function get() {
+      return this._getCBox();
+    }
+
+    /**
+     * The glyph’s bounding box, i.e. the rectangle that encloses the
+     * glyph outline as tightly as possible.
+     * @type {BBox}
+     */
+
+  }, {
+    key: 'bbox',
+    get: function get() {
+      return this._getBBox();
+    }
+
+    /**
+     * A vector Path object representing the glyph outline.
+     * @type {Path}
+     */
+
+  }, {
+    key: 'path',
+    get: function get() {
+      // Cache the path so we only decode it once
+      // Decoding is actually performed by subclasses
+      return this._getPath();
+    }
+  }, {
+    key: 'advanceWidth',
+    get: function get() {
+      return this._getMetrics().advanceWidth;
+    }
+
+    /**
+     * The glyph's advance height.
+     * @type {number}
+     */
+
+  }, {
+    key: 'advanceHeight',
+    get: function get() {
+      return this._getMetrics().advanceHeight;
+    }
+  }, {
+    key: 'ligatureCaretPositions',
+    get: function get() {}
+  }, {
+    key: 'name',
+    get: function get() {
+      return this._getName();
+    }
+  }]);
+
+  return Glyph;
+}(), (_applyDecoratedDescriptor$4(_class$8.prototype, 'cbox', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'cbox'), _class$8.prototype), _applyDecoratedDescriptor$4(_class$8.prototype, 'bbox', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'bbox'), _class$8.prototype), _applyDecoratedDescriptor$4(_class$8.prototype, 'path', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'path'), _class$8.prototype), _applyDecoratedDescriptor$4(_class$8.prototype, 'advanceWidth', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'advanceWidth'), _class$8.prototype), _applyDecoratedDescriptor$4(_class$8.prototype, 'advanceHeight', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'advanceHeight'), _class$8.prototype), _applyDecoratedDescriptor$4(_class$8.prototype, 'name', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'name'), _class$8.prototype)), _class$8);
+
+// The header for both simple and composite glyphs
+var GlyfHeader = new r.Struct({
+  numberOfContours: r.int16, // if negative, this is a composite glyph
+  xMin: r.int16,
+  yMin: r.int16,
+  xMax: r.int16,
+  yMax: r.int16
+});
+
+// Flags for simple glyphs
+var ON_CURVE = 1 << 0;
+var X_SHORT_VECTOR = 1 << 1;
+var Y_SHORT_VECTOR = 1 << 2;
+var REPEAT = 1 << 3;
+var SAME_X = 1 << 4;
+var SAME_Y = 1 << 5;
+
+// Flags for composite glyphs
+var ARG_1_AND_2_ARE_WORDS = 1 << 0;
+var WE_HAVE_A_SCALE = 1 << 3;
+var MORE_COMPONENTS = 1 << 5;
+var WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;
+var WE_HAVE_A_TWO_BY_TWO = 1 << 7;
+var WE_HAVE_INSTRUCTIONS = 1 << 8;
+// Represents a point in a simple glyph
+var Point = function () {
+  function Point(onCurve, endContour) {
+    var x = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+    var y = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+
+    _classCallCheck(this, Point);
+
+    this.onCurve = onCurve;
+    this.endContour = endContour;
+    this.x = x;
+    this.y = y;
+  }
+
+  Point.prototype.copy = function copy() {
+    return new Point(this.onCurve, this.endContour, this.x, this.y);
+  };
+
+  return Point;
+}();
+
+// Represents a component in a composite glyph
+
+var Component = function Component(glyphID, dx, dy) {
+  _classCallCheck(this, Component);
+
+  this.glyphID = glyphID;
+  this.dx = dx;
+  this.dy = dy;
+  this.pos = 0;
+  this.scaleX = this.scaleY = 1;
+  this.scale01 = this.scale10 = 0;
+};
+
+/**
+ * Represents a TrueType glyph.
+ */
+
+
+var TTFGlyph = function (_Glyph) {
+  _inherits(TTFGlyph, _Glyph);
+
+  function TTFGlyph() {
+    _classCallCheck(this, TTFGlyph);
+
+    return _possibleConstructorReturn(this, _Glyph.apply(this, arguments));
+  }
+
+  // Parses just the glyph header and returns the bounding box
+  TTFGlyph.prototype._getCBox = function _getCBox(internal) {
+    // We need to decode the glyph if variation processing is requested,
+    // so it's easier just to recompute the path's cbox after decoding.
+    if (this._font._variationProcessor && !internal) {
+      return this.path.cbox;
+    }
+
+    var stream = this._font._getTableStream('glyf');
+    stream.pos += this._font.loca.offsets[this.id];
+    var glyph = GlyfHeader.decode(stream);
+
+    var cbox = new BBox(glyph.xMin, glyph.yMin, glyph.xMax, glyph.yMax);
+    return _Object$freeze(cbox);
+  };
+
+  // Parses a single glyph coordinate
+
+
+  TTFGlyph.prototype._parseGlyphCoord = function _parseGlyphCoord(stream, prev, short, same) {
+    if (short) {
+      var val = stream.readUInt8();
+      if (!same) {
+        val = -val;
+      }
+
+      val += prev;
+    } else {
+      if (same) {
+        var val = prev;
+      } else {
+        var val = prev + stream.readInt16BE();
+      }
+    }
+
+    return val;
+  };
+
+  // Decodes the glyph data into points for simple glyphs,
+  // or components for composite glyphs
+
+
+  TTFGlyph.prototype._decode = function _decode() {
+    var glyfPos = this._font.loca.offsets[this.id];
+    var nextPos = this._font.loca.offsets[this.id + 1];
+
+    // Nothing to do if there is no data for this glyph
+    if (glyfPos === nextPos) {
+      return null;
+    }
+
+    var stream = this._font._getTableStream('glyf');
+    stream.pos += glyfPos;
+    var startPos = stream.pos;
+
+    var glyph = GlyfHeader.decode(stream);
+
+    if (glyph.numberOfContours > 0) {
+      this._decodeSimple(glyph, stream);
+    } else if (glyph.numberOfContours < 0) {
+      this._decodeComposite(glyph, stream, startPos);
+    }
+
+    return glyph;
+  };
+
+  TTFGlyph.prototype._decodeSimple = function _decodeSimple(glyph, stream) {
+    // this is a simple glyph
+    glyph.points = [];
+
+    var endPtsOfContours = new r.Array(r.uint16, glyph.numberOfContours).decode(stream);
+    glyph.instructions = new r.Array(r.uint8, r.uint16).decode(stream);
+
+    var flags = [];
+    var numCoords = endPtsOfContours[endPtsOfContours.length - 1] + 1;
+
+    while (flags.length < numCoords) {
+      var flag = stream.readUInt8();
+      flags.push(flag);
+
+      // check for repeat flag
+      if (flag & REPEAT) {
+        var count = stream.readUInt8();
+        for (var j = 0; j < count; j++) {
+          flags.push(flag);
+        }
+      }
+    }
+
+    for (var i = 0; i < flags.length; i++) {
+      var flag = flags[i];
+      var point = new Point(!!(flag & ON_CURVE), endPtsOfContours.indexOf(i) >= 0, 0, 0);
+      glyph.points.push(point);
+    }
+
+    var px = 0;
+    for (var i = 0; i < flags.length; i++) {
+      var flag = flags[i];
+      glyph.points[i].x = px = this._parseGlyphCoord(stream, px, flag & X_SHORT_VECTOR, flag & SAME_X);
+    }
+
+    var py = 0;
+    for (var i = 0; i < flags.length; i++) {
+      var flag = flags[i];
+      glyph.points[i].y = py = this._parseGlyphCoord(stream, py, flag & Y_SHORT_VECTOR, flag & SAME_Y);
+    }
+
+    if (this._font._variationProcessor) {
+      var points = glyph.points.slice();
+      points.push.apply(points, this._getPhantomPoints(glyph));
+
+      this._font._variationProcessor.transformPoints(this.id, points);
+      glyph.phantomPoints = points.slice(-4);
+    }
+
+    return;
+  };
+
+  TTFGlyph.prototype._decodeComposite = function _decodeComposite(glyph, stream) {
+    var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+
+    // this is a composite glyph
+    glyph.components = [];
+    var haveInstructions = false;
+    var flags = MORE_COMPONENTS;
+
+    while (flags & MORE_COMPONENTS) {
+      flags = stream.readUInt16BE();
+      var gPos = stream.pos - offset;
+      var glyphID = stream.readUInt16BE();
+      if (!haveInstructions) {
+        haveInstructions = (flags & WE_HAVE_INSTRUCTIONS) !== 0;
+      }
+
+      if (flags & ARG_1_AND_2_ARE_WORDS) {
+        var dx = stream.readInt16BE();
+        var dy = stream.readInt16BE();
+      } else {
+        var dx = stream.readInt8();
+        var dy = stream.readInt8();
+      }
+
+      var component = new Component(glyphID, dx, dy);
+      component.pos = gPos;
+
+      if (flags & WE_HAVE_A_SCALE) {
+        // fixed number with 14 bits of fraction
+        component.scaleX = component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+      } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {
+        component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+        component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+      } else if (flags & WE_HAVE_A_TWO_BY_TWO) {
+        component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+        component.scale01 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+        component.scale10 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+        component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+      }
+
+      glyph.components.push(component);
+    }
+
+    if (this._font._variationProcessor) {
+      var points = [];
+      for (var j = 0; j < glyph.components.length; j++) {
+        var component = glyph.components[j];
+        points.push(new Point(true, true, component.dx, component.dy));
+      }
+
+      points.push.apply(points, this._getPhantomPoints(glyph));
+
+      this._font._variationProcessor.transformPoints(this.id, points);
+      glyph.phantomPoints = points.splice(-4, 4);
+
+      for (var i = 0; i < points.length; i++) {
+        var point = points[i];
+        glyph.components[i].dx = point.x;
+        glyph.components[i].dy = point.y;
+      }
+    }
+
+    return haveInstructions;
+  };
+
+  TTFGlyph.prototype._getPhantomPoints = function _getPhantomPoints(glyph) {
+    var cbox = this._getCBox(true);
+    if (this._metrics == null) {
+      this._metrics = Glyph.prototype._getMetrics.call(this, cbox);
+    }
+
+    var _metrics = this._metrics,
+        advanceWidth = _metrics.advanceWidth,
+        advanceHeight = _metrics.advanceHeight,
+        leftBearing = _metrics.leftBearing,
+        topBearing = _metrics.topBearing;
+
+
+    return [new Point(false, true, glyph.xMin - leftBearing, 0), new Point(false, true, glyph.xMin - leftBearing + advanceWidth, 0), new Point(false, true, 0, glyph.yMax + topBearing), new Point(false, true, 0, glyph.yMax + topBearing + advanceHeight)];
+  };
+
+  // Decodes font data, resolves composite glyphs, and returns an array of contours
+
+
+  TTFGlyph.prototype._getContours = function _getContours() {
+    var glyph = this._decode();
+    if (!glyph) {
+      return [];
+    }
+
+    var points = [];
+
+    if (glyph.numberOfContours < 0) {
+      // resolve composite glyphs
+      for (var _iterator = glyph.components, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var component = _ref;
+
+        var _contours = this._font.getGlyph(component.glyphID)._getContours();
+        for (var i = 0; i < _contours.length; i++) {
+          var contour = _contours[i];
+          for (var j = 0; j < contour.length; j++) {
+            var _point = contour[j];
+            var x = _point.x * component.scaleX + _point.y * component.scale01 + component.dx;
+            var y = _point.y * component.scaleY + _point.x * component.scale10 + component.dy;
+            points.push(new Point(_point.onCurve, _point.endContour, x, y));
+          }
+        }
+      }
+    } else {
+      points = glyph.points || [];
+    }
+
+    // Recompute and cache metrics if we performed variation processing, and don't have an HVAR table
+    if (glyph.phantomPoints && !this._font.directory.tables.HVAR) {
+      this._metrics.advanceWidth = glyph.phantomPoints[1].x - glyph.phantomPoints[0].x;
+      this._metrics.advanceHeight = glyph.phantomPoints[3].y - glyph.phantomPoints[2].y;
+      this._metrics.leftBearing = glyph.xMin - glyph.phantomPoints[0].x;
+      this._metrics.topBearing = glyph.phantomPoints[2].y - glyph.yMax;
+    }
+
+    var contours = [];
+    var cur = [];
+    for (var k = 0; k < points.length; k++) {
+      var point = points[k];
+      cur.push(point);
+      if (point.endContour) {
+        contours.push(cur);
+        cur = [];
+      }
+    }
+
+    return contours;
+  };
+
+  TTFGlyph.prototype._getMetrics = function _getMetrics() {
+    if (this._metrics) {
+      return this._metrics;
+    }
+
+    var cbox = this._getCBox(true);
+    _Glyph.prototype._getMetrics.call(this, cbox);
+
+    if (this._font._variationProcessor && !this._font.HVAR) {
+      // No HVAR table, decode the glyph. This triggers recomputation of metrics.
+      this.path;
+    }
+
+    return this._metrics;
+  };
+
+  // Converts contours to a Path object that can be rendered
+
+
+  TTFGlyph.prototype._getPath = function _getPath() {
+    var contours = this._getContours();
+    var path = new Path();
+
+    for (var i = 0; i < contours.length; i++) {
+      var contour = contours[i];
+      var firstPt = contour[0];
+      var lastPt = contour[contour.length - 1];
+      var start = 0;
+
+      if (firstPt.onCurve) {
+        // The first point will be consumed by the moveTo command, so skip in the loop
+        var curvePt = null;
+        start = 1;
+      } else {
+        if (lastPt.onCurve) {
+          // Start at the last point if the first point is off curve and the last point is on curve
+          firstPt = lastPt;
+        } else {
+          // Start at the middle if both the first and last points are off curve
+          firstPt = new Point(false, false, (firstPt.x + lastPt.x) / 2, (firstPt.y + lastPt.y) / 2);
+        }
+
+        var curvePt = firstPt;
+      }
+
+      path.moveTo(firstPt.x, firstPt.y);
+
+      for (var j = start; j < contour.length; j++) {
+        var pt = contour[j];
+        var prevPt = j === 0 ? firstPt : contour[j - 1];
+
+        if (prevPt.onCurve && pt.onCurve) {
+          path.lineTo(pt.x, pt.y);
+        } else if (prevPt.onCurve && !pt.onCurve) {
+          var curvePt = pt;
+        } else if (!prevPt.onCurve && !pt.onCurve) {
+          var midX = (prevPt.x + pt.x) / 2;
+          var midY = (prevPt.y + pt.y) / 2;
+          path.quadraticCurveTo(prevPt.x, prevPt.y, midX, midY);
+          var curvePt = pt;
+        } else if (!prevPt.onCurve && pt.onCurve) {
+          path.quadraticCurveTo(curvePt.x, curvePt.y, pt.x, pt.y);
+          var curvePt = null;
+        } else {
+          throw new Error("Unknown TTF path state");
+        }
+      }
+
+      // Connect the first and last points
+      if (curvePt) {
+        path.quadraticCurveTo(curvePt.x, curvePt.y, firstPt.x, firstPt.y);
+      }
+
+      path.closePath();
+    }
+
+    return path;
+  };
+
+  return TTFGlyph;
+}(Glyph);
+
+/**
+ * Represents an OpenType PostScript glyph, in the Compact Font Format.
+ */
+
+var CFFGlyph = function (_Glyph) {
+  _inherits(CFFGlyph, _Glyph);
+
+  function CFFGlyph() {
+    _classCallCheck(this, CFFGlyph);
+
+    return _possibleConstructorReturn(this, _Glyph.apply(this, arguments));
+  }
+
+  CFFGlyph.prototype._getName = function _getName() {
+    if (this._font.CFF2) {
+      return _Glyph.prototype._getName.call(this);
+    }
+
+    return this._font['CFF '].getGlyphName(this.id);
+  };
+
+  CFFGlyph.prototype.bias = function bias(s) {
+    if (s.length < 1240) {
+      return 107;
+    } else if (s.length < 33900) {
+      return 1131;
+    } else {
+      return 32768;
+    }
+  };
+
+  CFFGlyph.prototype._getPath = function _getPath() {
+    var stream = this._font.stream;
+    var pos = stream.pos;
+
+
+    var cff = this._font.CFF2 || this._font['CFF '];
+    var str = cff.topDict.CharStrings[this.id];
+    var end = str.offset + str.length;
+    stream.pos = str.offset;
+
+    var path = new Path();
+    var stack = [];
+    var trans = [];
+
+    var width = null;
+    var nStems = 0;
+    var x = 0,
+        y = 0;
+    var usedGsubrs = void 0;
+    var usedSubrs = void 0;
+    var open = false;
+
+    this._usedGsubrs = usedGsubrs = {};
+    this._usedSubrs = usedSubrs = {};
+
+    var gsubrs = cff.globalSubrIndex || [];
+    var gsubrsBias = this.bias(gsubrs);
+
+    var privateDict = cff.privateDictForGlyph(this.id);
+    var subrs = privateDict.Subrs || [];
+    var subrsBias = this.bias(subrs);
+
+    var vstore = cff.topDict.vstore && cff.topDict.vstore.itemVariationStore;
+    var vsindex = privateDict.vsindex;
+    var variationProcessor = this._font._variationProcessor;
+
+    function checkWidth() {
+      if (width == null) {
+        width = stack.shift() + privateDict.nominalWidthX;
+      }
+    }
+
+    function parseStems() {
+      if (stack.length % 2 !== 0) {
+        checkWidth();
+      }
+
+      nStems += stack.length >> 1;
+      return stack.length = 0;
+    }
+
+    function moveTo(x, y) {
+      if (open) {
+        path.closePath();
+      }
+
+      path.moveTo(x, y);
+      open = true;
+    }
+
+    var parse = function parse() {
+      while (stream.pos < end) {
+        var op = stream.readUInt8();
+        if (op < 32) {
+          switch (op) {
+            case 1: // hstem
+            case 3: // vstem
+            case 18: // hstemhm
+            case 23:
+              // vstemhm
+              parseStems();
+              break;
+
+            case 4:
+              // vmoveto
+              if (stack.length > 1) {
+                checkWidth();
+              }
+
+              y += stack.shift();
+              moveTo(x, y);
+              break;
+
+            case 5:
+              // rlineto
+              while (stack.length >= 2) {
+                x += stack.shift();
+                y += stack.shift();
+                path.lineTo(x, y);
+              }
+              break;
+
+            case 6: // hlineto
+            case 7:
+              // vlineto
+              var phase = op === 6;
+              while (stack.length >= 1) {
+                if (phase) {
+                  x += stack.shift();
+                } else {
+                  y += stack.shift();
+                }
+
+                path.lineTo(x, y);
+                phase = !phase;
+              }
+              break;
+
+            case 8:
+              // rrcurveto
+              while (stack.length > 0) {
+                var c1x = x + stack.shift();
+                var c1y = y + stack.shift();
+                var c2x = c1x + stack.shift();
+                var c2y = c1y + stack.shift();
+                x = c2x + stack.shift();
+                y = c2y + stack.shift();
+                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+              }
+              break;
+
+            case 10:
+              // callsubr
+              var index = stack.pop() + subrsBias;
+              var subr = subrs[index];
+              if (subr) {
+                usedSubrs[index] = true;
+                var p = stream.pos;
+                var e = end;
+                stream.pos = subr.offset;
+                end = subr.offset + subr.length;
+                parse();
+                stream.pos = p;
+                end = e;
+              }
+              break;
+
+            case 11:
+              // return
+              if (cff.version >= 2) {
+                break;
+              }
+              return;
+
+            case 14:
+              // endchar
+              if (cff.version >= 2) {
+                break;
+              }
+
+              if (stack.length > 0) {
+                checkWidth();
+              }
+
+              if (open) {
+                path.closePath();
+                open = false;
+              }
+              break;
+
+            case 15:
+              {
+                // vsindex
+                if (cff.version < 2) {
+                  throw new Error('vsindex operator not supported in CFF v1');
+                }
+
+                vsindex = stack.pop();
+                break;
+              }
+
+            case 16:
+              {
+                // blend
+                if (cff.version < 2) {
+                  throw new Error('blend operator not supported in CFF v1');
+                }
+
+                if (!variationProcessor) {
+                  throw new Error('blend operator in non-variation font');
+                }
+
+                var blendVector = variationProcessor.getBlendVector(vstore, vsindex);
+                var numBlends = stack.pop();
+                var numOperands = numBlends * blendVector.length;
+                var delta = stack.length - numOperands;
+                var base = delta - numBlends;
+
+                for (var i = 0; i < numBlends; i++) {
+                  var sum = stack[base + i];
+                  for (var j = 0; j < blendVector.length; j++) {
+                    sum += blendVector[j] * stack[delta++];
+                  }
+
+                  stack[base + i] = sum;
+                }
+
+                while (numOperands--) {
+                  stack.pop();
+                }
+
+                break;
+              }
+
+            case 19: // hintmask
+            case 20:
+              // cntrmask
+              parseStems();
+              stream.pos += nStems + 7 >> 3;
+              break;
+
+            case 21:
+              // rmoveto
+              if (stack.length > 2) {
+                checkWidth();
+              }
+
+              x += stack.shift();
+              y += stack.shift();
+              moveTo(x, y);
+              break;
+
+            case 22:
+              // hmoveto
+              if (stack.length > 1) {
+                checkWidth();
+              }
+
+              x += stack.shift();
+              moveTo(x, y);
+              break;
+
+            case 24:
+              // rcurveline
+              while (stack.length >= 8) {
+                var c1x = x + stack.shift();
+                var c1y = y + stack.shift();
+                var c2x = c1x + stack.shift();
+                var c2y = c1y + stack.shift();
+                x = c2x + stack.shift();
+                y = c2y + stack.shift();
+                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+              }
+
+              x += stack.shift();
+              y += stack.shift();
+              path.lineTo(x, y);
+              break;
+
+            case 25:
+              // rlinecurve
+              while (stack.length >= 8) {
+                x += stack.shift();
+                y += stack.shift();
+                path.lineTo(x, y);
+              }
+
+              var c1x = x + stack.shift();
+              var c1y = y + stack.shift();
+              var c2x = c1x + stack.shift();
+              var c2y = c1y + stack.shift();
+              x = c2x + stack.shift();
+              y = c2y + stack.shift();
+              path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+              break;
+
+            case 26:
+              // vvcurveto
+              if (stack.length % 2) {
+                x += stack.shift();
+              }
+
+              while (stack.length >= 4) {
+                c1x = x;
+                c1y = y + stack.shift();
+                c2x = c1x + stack.shift();
+                c2y = c1y + stack.shift();
+                x = c2x;
+                y = c2y + stack.shift();
+                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+              }
+              break;
+
+            case 27:
+              // hhcurveto
+              if (stack.length % 2) {
+                y += stack.shift();
+              }
+
+              while (stack.length >= 4) {
+                c1x = x + stack.shift();
+                c1y = y;
+                c2x = c1x + stack.shift();
+                c2y = c1y + stack.shift();
+                x = c2x + stack.shift();
+                y = c2y;
+                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+              }
+              break;
+
+            case 28:
+              // shortint
+              stack.push(stream.readInt16BE());
+              break;
+
+            case 29:
+              // callgsubr
+              index = stack.pop() + gsubrsBias;
+              subr = gsubrs[index];
+              if (subr) {
+                usedGsubrs[index] = true;
+                var p = stream.pos;
+                var e = end;
+                stream.pos = subr.offset;
+                end = subr.offset + subr.length;
+                parse();
+                stream.pos = p;
+                end = e;
+              }
+              break;
+
+            case 30: // vhcurveto
+            case 31:
+              // hvcurveto
+              phase = op === 31;
+              while (stack.length >= 4) {
+                if (phase) {
+                  c1x = x + stack.shift();
+                  c1y = y;
+                  c2x = c1x + stack.shift();
+                  c2y = c1y + stack.shift();
+                  y = c2y + stack.shift();
+                  x = c2x + (stack.length === 1 ? stack.shift() : 0);
+                } else {
+                  c1x = x;
+                  c1y = y + stack.shift();
+                  c2x = c1x + stack.shift();
+                  c2y = c1y + stack.shift();
+                  x = c2x + stack.shift();
+                  y = c2y + (stack.length === 1 ? stack.shift() : 0);
+                }
+
+                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+                phase = !phase;
+              }
+              break;
+
+            case 12:
+              op = stream.readUInt8();
+              switch (op) {
+                case 3:
+                  // and
+                  var a = stack.pop();
+                  var b = stack.pop();
+                  stack.push(a && b ? 1 : 0);
+                  break;
+
+                case 4:
+                  // or
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a || b ? 1 : 0);
+                  break;
+
+                case 5:
+                  // not
+                  a = stack.pop();
+                  stack.push(a ? 0 : 1);
+                  break;
+
+                case 9:
+                  // abs
+                  a = stack.pop();
+                  stack.push(Math.abs(a));
+                  break;
+
+                case 10:
+                  // add
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a + b);
+                  break;
+
+                case 11:
+                  // sub
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a - b);
+                  break;
+
+                case 12:
+                  // div
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a / b);
+                  break;
+
+                case 14:
+                  // neg
+                  a = stack.pop();
+                  stack.push(-a);
+                  break;
+
+                case 15:
+                  // eq
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a === b ? 1 : 0);
+                  break;
+
+                case 18:
+                  // drop
+                  stack.pop();
+                  break;
+
+                case 20:
+                  // put
+                  var val = stack.pop();
+                  var idx = stack.pop();
+                  trans[idx] = val;
+                  break;
+
+                case 21:
+                  // get
+                  idx = stack.pop();
+                  stack.push(trans[idx] || 0);
+                  break;
+
+                case 22:
+                  // ifelse
+                  var s1 = stack.pop();
+                  var s2 = stack.pop();
+                  var v1 = stack.pop();
+                  var v2 = stack.pop();
+                  stack.push(v1 <= v2 ? s1 : s2);
+                  break;
+
+                case 23:
+                  // random
+                  stack.push(Math.random());
+                  break;
+
+                case 24:
+                  // mul
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a * b);
+                  break;
+
+                case 26:
+                  // sqrt
+                  a = stack.pop();
+                  stack.push(Math.sqrt(a));
+                  break;
+
+                case 27:
+                  // dup
+                  a = stack.pop();
+                  stack.push(a, a);
+                  break;
+
+                case 28:
+                  // exch
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(b, a);
+                  break;
+
+                case 29:
+                  // index
+                  idx = stack.pop();
+                  if (idx < 0) {
+                    idx = 0;
+                  } else if (idx > stack.length - 1) {
+                    idx = stack.length - 1;
+                  }
+
+                  stack.push(stack[idx]);
+                  break;
+
+                case 30:
+                  // roll
+                  var n = stack.pop();
+                  var _j = stack.pop();
+
+                  if (_j >= 0) {
+                    while (_j > 0) {
+                      var t = stack[n - 1];
+                      for (var _i = n - 2; _i >= 0; _i--) {
+                        stack[_i + 1] = stack[_i];
+                      }
+
+                      stack[0] = t;
+                      _j--;
+                    }
+                  } else {
+                    while (_j < 0) {
+                      var t = stack[0];
+                      for (var _i2 = 0; _i2 <= n; _i2++) {
+                        stack[_i2] = stack[_i2 + 1];
+                      }
+
+                      stack[n - 1] = t;
+                      _j++;
+                    }
+                  }
+                  break;
+
+                case 34:
+                  // hflex
+                  c1x = x + stack.shift();
+                  c1y = y;
+                  c2x = c1x + stack.shift();
+                  c2y = c1y + stack.shift();
+                  var c3x = c2x + stack.shift();
+                  var c3y = c2y;
+                  var c4x = c3x + stack.shift();
+                  var c4y = c3y;
+                  var c5x = c4x + stack.shift();
+                  var c5y = c4y;
+                  var c6x = c5x + stack.shift();
+                  var c6y = c5y;
+                  x = c6x;
+                  y = c6y;
+
+                  path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);
+                  path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);
+                  break;
+
+                case 35:
+                  // flex
+                  var pts = [];
+
+                  for (var _i3 = 0; _i3 <= 5; _i3++) {
+                    x += stack.shift();
+                    y += stack.shift();
+                    pts.push(x, y);
+                  }
+
+                  path.bezierCurveTo.apply(path, pts.slice(0, 6));
+                  path.bezierCurveTo.apply(path, pts.slice(6));
+                  stack.shift(); // fd
+                  break;
+
+                case 36:
+                  // hflex1
+                  c1x = x + stack.shift();
+                  c1y = y + stack.shift();
+                  c2x = c1x + stack.shift();
+                  c2y = c1y + stack.shift();
+                  c3x = c2x + stack.shift();
+                  c3y = c2y;
+                  c4x = c3x + stack.shift();
+                  c4y = c3y;
+                  c5x = c4x + stack.shift();
+                  c5y = c4y + stack.shift();
+                  c6x = c5x + stack.shift();
+                  c6y = c5y;
+                  x = c6x;
+                  y = c6y;
+
+                  path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);
+                  path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);
+                  break;
+
+                case 37:
+                  // flex1
+                  var startx = x;
+                  var starty = y;
+
+                  pts = [];
+                  for (var _i4 = 0; _i4 <= 4; _i4++) {
+                    x += stack.shift();
+                    y += stack.shift();
+                    pts.push(x, y);
+                  }
+
+                  if (Math.abs(x - startx) > Math.abs(y - starty)) {
+                    // horizontal
+                    x += stack.shift();
+                    y = starty;
+                  } else {
+                    x = startx;
+                    y += stack.shift();
+                  }
+
+                  pts.push(x, y);
+                  path.bezierCurveTo.apply(path, pts.slice(0, 6));
+                  path.bezierCurveTo.apply(path, pts.slice(6));
+                  break;
+
+                default:
+                  throw new Error('Unknown op: 12 ' + op);
+              }
+              break;
+
+            default:
+              throw new Error('Unknown op: ' + op);
+          }
+        } else if (op < 247) {
+          stack.push(op - 139);
+        } else if (op < 251) {
+          var b1 = stream.readUInt8();
+          stack.push((op - 247) * 256 + b1 + 108);
+        } else if (op < 255) {
+          var b1 = stream.readUInt8();
+          stack.push(-(op - 251) * 256 - b1 - 108);
+        } else {
+          stack.push(stream.readInt32BE() / 65536);
+        }
+      }
+    };
+
+    parse();
+
+    if (open) {
+      path.closePath();
+    }
+
+    return path;
+  };
+
+  return CFFGlyph;
+}(Glyph);
+
+var SBIXImage = new r.Struct({
+  originX: r.uint16,
+  originY: r.uint16,
+  type: new r.String(4),
+  data: new r.Buffer(function (t) {
+    return t.parent.buflen - t._currentOffset;
+  })
+});
+
+/**
+ * Represents a color (e.g. emoji) glyph in Apple's SBIX format.
+ */
+
+var SBIXGlyph = function (_TTFGlyph) {
+  _inherits(SBIXGlyph, _TTFGlyph);
+
+  function SBIXGlyph() {
+    _classCallCheck(this, SBIXGlyph);
+
+    return _possibleConstructorReturn(this, _TTFGlyph.apply(this, arguments));
+  }
+
+  /**
+   * Returns an object representing a glyph image at the given point size.
+   * The object has a data property with a Buffer containing the actual image data,
+   * along with the image type, and origin.
+   *
+   * @param {number} size
+   * @return {object}
+   */
+  SBIXGlyph.prototype.getImageForSize = function getImageForSize(size) {
+    for (var i = 0; i < this._font.sbix.imageTables.length; i++) {
+      var table = this._font.sbix.imageTables[i];
+      if (table.ppem >= size) {
+        break;
+      }
+    }
+
+    var offsets = table.imageOffsets;
+    var start = offsets[this.id];
+    var end = offsets[this.id + 1];
+
+    if (start === end) {
+      return null;
+    }
+
+    this._font.stream.pos = start;
+    return SBIXImage.decode(this._font.stream, { buflen: end - start });
+  };
+
+  SBIXGlyph.prototype.render = function render(ctx, size) {
+    var img = this.getImageForSize(size);
+    if (img != null) {
+      var scale = size / this._font.unitsPerEm;
+      ctx.image(img.data, { height: size, x: img.originX, y: (this.bbox.minY - img.originY) * scale });
+    }
+
+    if (this._font.sbix.flags.renderOutlines) {
+      _TTFGlyph.prototype.render.call(this, ctx, size);
+    }
+  };
+
+  return SBIXGlyph;
+}(TTFGlyph);
+
+var COLRLayer = function COLRLayer(glyph, color) {
+  _classCallCheck(this, COLRLayer);
+
+  this.glyph = glyph;
+  this.color = color;
+};
+
+/**
+ * Represents a color (e.g. emoji) glyph in Microsoft's COLR format.
+ * Each glyph in this format contain a list of colored layers, each
+ * of which  is another vector glyph.
+ */
+
+
+var COLRGlyph = function (_Glyph) {
+  _inherits(COLRGlyph, _Glyph);
+
+  function COLRGlyph() {
+    _classCallCheck(this, COLRGlyph);
+
+    return _possibleConstructorReturn(this, _Glyph.apply(this, arguments));
+  }
+
+  COLRGlyph.prototype._getBBox = function _getBBox() {
+    var bbox = new BBox();
+    for (var i = 0; i < this.layers.length; i++) {
+      var layer = this.layers[i];
+      var b = layer.glyph.bbox;
+      bbox.addPoint(b.minX, b.minY);
+      bbox.addPoint(b.maxX, b.maxY);
+    }
+
+    return bbox;
+  };
+
+  /**
+   * Returns an array of objects containing the glyph and color for
+   * each layer in the composite color glyph.
+   * @type {object[]}
+   */
+
+
+  COLRGlyph.prototype.render = function render(ctx, size) {
+    for (var _iterator = this.layers, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var _ref2 = _ref,
+          glyph = _ref2.glyph,
+          color = _ref2.color;
+
+      ctx.fillColor([color.red, color.green, color.blue], color.alpha / 255 * 100);
+      glyph.render(ctx, size);
+    }
+
+    return;
+  };
+
+  _createClass(COLRGlyph, [{
+    key: 'layers',
+    get: function get() {
+      var cpal = this._font.CPAL;
+      var colr = this._font.COLR;
+      var low = 0;
+      var high = colr.baseGlyphRecord.length - 1;
+
+      while (low <= high) {
+        var mid = low + high >> 1;
+        var rec = colr.baseGlyphRecord[mid];
+
+        if (this.id < rec.gid) {
+          high = mid - 1;
+        } else if (this.id > rec.gid) {
+          low = mid + 1;
+        } else {
+          var baseLayer = rec;
+          break;
+        }
+      }
+
+      // if base glyph not found in COLR table,
+      // default to normal glyph from glyf or CFF
+      if (baseLayer == null) {
+        var g = this._font._getBaseGlyph(this.id);
+        var color = {
+          red: 0,
+          green: 0,
+          blue: 0,
+          alpha: 255
+        };
+
+        return [new COLRLayer(g, color)];
+      }
+
+      // otherwise, return an array of all the layers
+      var layers = [];
+      for (var i = baseLayer.firstLayerIndex; i < baseLayer.firstLayerIndex + baseLayer.numLayers; i++) {
+        var rec = colr.layerRecords[i];
+        var color = cpal.colorRecords[rec.paletteIndex];
+        var g = this._font._getBaseGlyph(rec.gid);
+        layers.push(new COLRLayer(g, color));
+      }
+
+      return layers;
+    }
+  }]);
+
+  return COLRGlyph;
+}(Glyph);
+
+var TUPLES_SHARE_POINT_NUMBERS = 0x8000;
+var TUPLE_COUNT_MASK = 0x0fff;
+var EMBEDDED_TUPLE_COORD = 0x8000;
+var INTERMEDIATE_TUPLE = 0x4000;
+var PRIVATE_POINT_NUMBERS = 0x2000;
+var TUPLE_INDEX_MASK = 0x0fff;
+var POINTS_ARE_WORDS = 0x80;
+var POINT_RUN_COUNT_MASK = 0x7f;
+var DELTAS_ARE_ZERO = 0x80;
+var DELTAS_ARE_WORDS = 0x40;
+var DELTA_RUN_COUNT_MASK = 0x3f;
+
+/**
+ * This class is transforms TrueType glyphs according to the data from
+ * the Apple Advanced Typography variation tables (fvar, gvar, and avar).
+ * These tables allow infinite adjustments to glyph weight, width, slant,
+ * and optical size without the designer needing to specify every exact style.
+ *
+ * Apple's documentation for these tables is not great, so thanks to the
+ * Freetype project for figuring much of this out.
+ *
+ * @private
+ */
+
+var GlyphVariationProcessor = function () {
+  function GlyphVariationProcessor(font, coords) {
+    _classCallCheck(this, GlyphVariationProcessor);
+
+    this.font = font;
+    this.normalizedCoords = this.normalizeCoords(coords);
+    this.blendVectors = new _Map();
+  }
+
+  GlyphVariationProcessor.prototype.normalizeCoords = function normalizeCoords(coords) {
+    // the default mapping is linear along each axis, in two segments:
+    // from the minValue to defaultValue, and from defaultValue to maxValue.
+    var normalized = [];
+    for (var i = 0; i < this.font.fvar.axis.length; i++) {
+      var axis = this.font.fvar.axis[i];
+      if (coords[i] < axis.defaultValue) {
+        normalized.push((coords[i] - axis.defaultValue + _Number$EPSILON) / (axis.defaultValue - axis.minValue + _Number$EPSILON));
+      } else {
+        normalized.push((coords[i] - axis.defaultValue + _Number$EPSILON) / (axis.maxValue - axis.defaultValue + _Number$EPSILON));
+      }
+    }
+
+    // if there is an avar table, the normalized value is calculated
+    // by interpolating between the two nearest mapped values.
+    if (this.font.avar) {
+      for (var i = 0; i < this.font.avar.segment.length; i++) {
+        var segment = this.font.avar.segment[i];
+        for (var j = 0; j < segment.correspondence.length; j++) {
+          var pair = segment.correspondence[j];
+          if (j >= 1 && normalized[i] < pair.fromCoord) {
+            var prev = segment.correspondence[j - 1];
+            normalized[i] = ((normalized[i] - prev.fromCoord) * (pair.toCoord - prev.toCoord) + _Number$EPSILON) / (pair.fromCoord - prev.fromCoord + _Number$EPSILON) + prev.toCoord;
+
+            break;
+          }
+        }
+      }
+    }
+
+    return normalized;
+  };
+
+  GlyphVariationProcessor.prototype.transformPoints = function transformPoints(gid, glyphPoints) {
+    if (!this.font.fvar || !this.font.gvar) {
+      return;
+    }
+
+    var gvar = this.font.gvar;
+
+    if (gid >= gvar.glyphCount) {
+      return;
+    }
+
+    var offset = gvar.offsets[gid];
+    if (offset === gvar.offsets[gid + 1]) {
+      return;
+    }
+
+    // Read the gvar data for this glyph
+    var stream = this.font.stream;
+
+    stream.pos = offset;
+    if (stream.pos >= stream.length) {
+      return;
+    }
+
+    var tupleCount = stream.readUInt16BE();
+    var offsetToData = offset + stream.readUInt16BE();
+
+    if (tupleCount & TUPLES_SHARE_POINT_NUMBERS) {
+      var here = stream.pos;
+      stream.pos = offsetToData;
+      var sharedPoints = this.decodePoints();
+      offsetToData = stream.pos;
+      stream.pos = here;
+    }
+
+    var origPoints = glyphPoints.map(function (pt) {
+      return pt.copy();
+    });
+
+    tupleCount &= TUPLE_COUNT_MASK;
+    for (var i = 0; i < tupleCount; i++) {
+      var tupleDataSize = stream.readUInt16BE();
+      var tupleIndex = stream.readUInt16BE();
+
+      if (tupleIndex & EMBEDDED_TUPLE_COORD) {
+        var tupleCoords = [];
+        for (var a = 0; a < gvar.axisCount; a++) {
+          tupleCoords.push(stream.readInt16BE() / 16384);
+        }
+      } else {
+        if ((tupleIndex & TUPLE_INDEX_MASK) >= gvar.globalCoordCount) {
+          throw new Error('Invalid gvar table');
+        }
+
+        var tupleCoords = gvar.globalCoords[tupleIndex & TUPLE_INDEX_MASK];
+      }
+
+      if (tupleIndex & INTERMEDIATE_TUPLE) {
+        var startCoords = [];
+        for (var _a = 0; _a < gvar.axisCount; _a++) {
+          startCoords.push(stream.readInt16BE() / 16384);
+        }
+
+        var endCoords = [];
+        for (var _a2 = 0; _a2 < gvar.axisCount; _a2++) {
+          endCoords.push(stream.readInt16BE() / 16384);
+        }
+      }
+
+      // Get the factor at which to apply this tuple
+      var factor = this.tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords);
+      if (factor === 0) {
+        offsetToData += tupleDataSize;
+        continue;
+      }
+
+      var here = stream.pos;
+      stream.pos = offsetToData;
+
+      if (tupleIndex & PRIVATE_POINT_NUMBERS) {
+        var points = this.decodePoints();
+      } else {
+        var points = sharedPoints;
+      }
+
+      // points.length = 0 means there are deltas for all points
+      var nPoints = points.length === 0 ? glyphPoints.length : points.length;
+      var xDeltas = this.decodeDeltas(nPoints);
+      var yDeltas = this.decodeDeltas(nPoints);
+
+      if (points.length === 0) {
+        // all points
+        for (var _i = 0; _i < glyphPoints.length; _i++) {
+          var point = glyphPoints[_i];
+          point.x += Math.round(xDeltas[_i] * factor);
+          point.y += Math.round(yDeltas[_i] * factor);
+        }
+      } else {
+        var outPoints = origPoints.map(function (pt) {
+          return pt.copy();
+        });
+        var hasDelta = glyphPoints.map(function () {
+          return false;
+        });
+
+        for (var _i2 = 0; _i2 < points.length; _i2++) {
+          var idx = points[_i2];
+          if (idx < glyphPoints.length) {
+            var _point = outPoints[idx];
+            hasDelta[idx] = true;
+
+            _point.x += Math.round(xDeltas[_i2] * factor);
+            _point.y += Math.round(yDeltas[_i2] * factor);
+          }
+        }
+
+        this.interpolateMissingDeltas(outPoints, origPoints, hasDelta);
+
+        for (var _i3 = 0; _i3 < glyphPoints.length; _i3++) {
+          var deltaX = outPoints[_i3].x - origPoints[_i3].x;
+          var deltaY = outPoints[_i3].y - origPoints[_i3].y;
+
+          glyphPoints[_i3].x += deltaX;
+          glyphPoints[_i3].y += deltaY;
+        }
+      }
+
+      offsetToData += tupleDataSize;
+      stream.pos = here;
+    }
+  };
+
+  GlyphVariationProcessor.prototype.decodePoints = function decodePoints() {
+    var stream = this.font.stream;
+    var count = stream.readUInt8();
+
+    if (count & POINTS_ARE_WORDS) {
+      count = (count & POINT_RUN_COUNT_MASK) << 8 | stream.readUInt8();
+    }
+
+    var points = new Uint16Array(count);
+    var i = 0;
+    var point = 0;
+    while (i < count) {
+      var run = stream.readUInt8();
+      var runCount = (run & POINT_RUN_COUNT_MASK) + 1;
+      var fn = run & POINTS_ARE_WORDS ? stream.readUInt16 : stream.readUInt8;
+
+      for (var j = 0; j < runCount && i < count; j++) {
+        point += fn.call(stream);
+        points[i++] = point;
+      }
+    }
+
+    return points;
+  };
+
+  GlyphVariationProcessor.prototype.decodeDeltas = function decodeDeltas(count) {
+    var stream = this.font.stream;
+    var i = 0;
+    var deltas = new Int16Array(count);
+
+    while (i < count) {
+      var run = stream.readUInt8();
+      var runCount = (run & DELTA_RUN_COUNT_MASK) + 1;
+
+      if (run & DELTAS_ARE_ZERO) {
+        i += runCount;
+      } else {
+        var fn = run & DELTAS_ARE_WORDS ? stream.readInt16BE : stream.readInt8;
+        for (var j = 0; j < runCount && i < count; j++) {
+          deltas[i++] = fn.call(stream);
+        }
+      }
+    }
+
+    return deltas;
+  };
+
+  GlyphVariationProcessor.prototype.tupleFactor = function tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords) {
+    var normalized = this.normalizedCoords;
+    var gvar = this.font.gvar;
+
+    var factor = 1;
+
+    for (var i = 0; i < gvar.axisCount; i++) {
+      if (tupleCoords[i] === 0) {
+        continue;
+      }
+
+      if (normalized[i] === 0) {
+        return 0;
+      }
+
+      if ((tupleIndex & INTERMEDIATE_TUPLE) === 0) {
+        if (normalized[i] < Math.min(0, tupleCoords[i]) || normalized[i] > Math.max(0, tupleCoords[i])) {
+          return 0;
+        }
+
+        factor = (factor * normalized[i] + _Number$EPSILON) / (tupleCoords[i] + _Number$EPSILON);
+      } else {
+        if (normalized[i] < startCoords[i] || normalized[i] > endCoords[i]) {
+          return 0;
+        } else if (normalized[i] < tupleCoords[i]) {
+          factor = factor * (normalized[i] - startCoords[i] + _Number$EPSILON) / (tupleCoords[i] - startCoords[i] + _Number$EPSILON);
+        } else {
+          factor = factor * (endCoords[i] - normalized[i] + _Number$EPSILON) / (endCoords[i] - tupleCoords[i] + _Number$EPSILON);
+        }
+      }
+    }
+
+    return factor;
+  };
+
+  // Interpolates points without delta values.
+  // Needed for the Ø and Q glyphs in Skia.
+  // Algorithm from Freetype.
+
+
+  GlyphVariationProcessor.prototype.interpolateMissingDeltas = function interpolateMissingDeltas(points, inPoints, hasDelta) {
+    if (points.length === 0) {
+      return;
+    }
+
+    var point = 0;
+    while (point < points.length) {
+      var firstPoint = point;
+
+      // find the end point of the contour
+      var endPoint = point;
+      var pt = points[endPoint];
+      while (!pt.endContour) {
+        pt = points[++endPoint];
+      }
+
+      // find the first point that has a delta
+      while (point <= endPoint && !hasDelta[point]) {
+        point++;
+      }
+
+      if (point > endPoint) {
+        continue;
+      }
+
+      var firstDelta = point;
+      var curDelta = point;
+      point++;
+
+      while (point <= endPoint) {
+        // find the next point with a delta, and interpolate intermediate points
+        if (hasDelta[point]) {
+          this.deltaInterpolate(curDelta + 1, point - 1, curDelta, point, inPoints, points);
+          curDelta = point;
+        }
+
+        point++;
+      }
+
+      // shift contour if we only have a single delta
+      if (curDelta === firstDelta) {
+        this.deltaShift(firstPoint, endPoint, curDelta, inPoints, points);
+      } else {
+        // otherwise, handle the remaining points at the end and beginning of the contour
+        this.deltaInterpolate(curDelta + 1, endPoint, curDelta, firstDelta, inPoints, points);
+
+        if (firstDelta > 0) {
+          this.deltaInterpolate(firstPoint, firstDelta - 1, curDelta, firstDelta, inPoints, points);
+        }
+      }
+
+      point = endPoint + 1;
+    }
+  };
+
+  GlyphVariationProcessor.prototype.deltaInterpolate = function deltaInterpolate(p1, p2, ref1, ref2, inPoints, outPoints) {
+    if (p1 > p2) {
+      return;
+    }
+
+    var iterable = ['x', 'y'];
+    for (var i = 0; i < iterable.length; i++) {
+      var k = iterable[i];
+      if (inPoints[ref1][k] > inPoints[ref2][k]) {
+        var p = ref1;
+        ref1 = ref2;
+        ref2 = p;
+      }
+
+      var in1 = inPoints[ref1][k];
+      var in2 = inPoints[ref2][k];
+      var out1 = outPoints[ref1][k];
+      var out2 = outPoints[ref2][k];
+
+      // If the reference points have the same coordinate but different
+      // delta, inferred delta is zero.  Otherwise interpolate.
+      if (in1 !== in2 || out1 === out2) {
+        var scale = in1 === in2 ? 0 : (out2 - out1) / (in2 - in1);
+
+        for (var _p = p1; _p <= p2; _p++) {
+          var out = inPoints[_p][k];
+
+          if (out <= in1) {
+            out += out1 - in1;
+          } else if (out >= in2) {
+            out += out2 - in2;
+          } else {
+            out = out1 + (out - in1) * scale;
+          }
+
+          outPoints[_p][k] = out;
+        }
+      }
+    }
+  };
+
+  GlyphVariationProcessor.prototype.deltaShift = function deltaShift(p1, p2, ref, inPoints, outPoints) {
+    var deltaX = outPoints[ref].x - inPoints[ref].x;
+    var deltaY = outPoints[ref].y - inPoints[ref].y;
+
+    if (deltaX === 0 && deltaY === 0) {
+      return;
+    }
+
+    for (var p = p1; p <= p2; p++) {
+      if (p !== ref) {
+        outPoints[p].x += deltaX;
+        outPoints[p].y += deltaY;
+      }
+    }
+  };
+
+  GlyphVariationProcessor.prototype.getAdvanceAdjustment = function getAdvanceAdjustment(gid, table) {
+    var outerIndex = void 0,
+        innerIndex = void 0;
+
+    if (table.advanceWidthMapping) {
+      var idx = gid;
+      if (idx >= table.advanceWidthMapping.mapCount) {
+        idx = table.advanceWidthMapping.mapCount - 1;
+      }
+
+      var entryFormat = table.advanceWidthMapping.entryFormat;
+      var _table$advanceWidthMa = table.advanceWidthMapping.mapData[idx];
+      outerIndex = _table$advanceWidthMa.outerIndex;
+      innerIndex = _table$advanceWidthMa.innerIndex;
+    } else {
+      outerIndex = 0;
+      innerIndex = gid;
+    }
+
+    return this.getDelta(table.itemVariationStore, outerIndex, innerIndex);
+  };
+
+  // See pseudo code from `Font Variations Overview'
+  // in the OpenType specification.
+
+
+  GlyphVariationProcessor.prototype.getDelta = function getDelta(itemStore, outerIndex, innerIndex) {
+    if (outerIndex >= itemStore.itemVariationData.length) {
+      return 0;
+    }
+
+    var varData = itemStore.itemVariationData[outerIndex];
+    if (innerIndex >= varData.deltaSets.length) {
+      return 0;
+    }
+
+    var deltaSet = varData.deltaSets[innerIndex];
+    var blendVector = this.getBlendVector(itemStore, outerIndex);
+    var netAdjustment = 0;
+
+    for (var master = 0; master < varData.regionIndexCount; master++) {
+      netAdjustment += deltaSet.deltas[master] * blendVector[master];
+    }
+
+    return netAdjustment;
+  };
+
+  GlyphVariationProcessor.prototype.getBlendVector = function getBlendVector(itemStore, outerIndex) {
+    var varData = itemStore.itemVariationData[outerIndex];
+    if (this.blendVectors.has(varData)) {
+      return this.blendVectors.get(varData);
+    }
+
+    var normalizedCoords = this.normalizedCoords;
+    var blendVector = [];
+
+    // outer loop steps through master designs to be blended
+    for (var master = 0; master < varData.regionIndexCount; master++) {
+      var scalar = 1;
+      var regionIndex = varData.regionIndexes[master];
+      var axes = itemStore.variationRegionList.variationRegions[regionIndex];
+
+      // inner loop steps through axes in this region
+      for (var j = 0; j < axes.length; j++) {
+        var axis = axes[j];
+        var axisScalar = void 0;
+
+        // compute the scalar contribution of this axis
+        // ignore invalid ranges
+        if (axis.startCoord > axis.peakCoord || axis.peakCoord > axis.endCoord) {
+          axisScalar = 1;
+        } else if (axis.startCoord < 0 && axis.endCoord > 0 && axis.peakCoord !== 0) {
+          axisScalar = 1;
+
+          // peak of 0 means ignore this axis
+        } else if (axis.peakCoord === 0) {
+          axisScalar = 1;
+
+          // ignore this region if coords are out of range
+        } else if (normalizedCoords[j] < axis.startCoord || normalizedCoords[j] > axis.endCoord) {
+          axisScalar = 0;
+
+          // calculate a proportional factor
+        } else {
+          if (normalizedCoords[j] === axis.peakCoord) {
+            axisScalar = 1;
+          } else if (normalizedCoords[j] < axis.peakCoord) {
+            axisScalar = (normalizedCoords[j] - axis.startCoord + _Number$EPSILON) / (axis.peakCoord - axis.startCoord + _Number$EPSILON);
+          } else {
+            axisScalar = (axis.endCoord - normalizedCoords[j] + _Number$EPSILON) / (axis.endCoord - axis.peakCoord + _Number$EPSILON);
+          }
+        }
+
+        // take product of all the axis scalars
+        scalar *= axisScalar;
+      }
+
+      blendVector[master] = scalar;
+    }
+
+    this.blendVectors.set(varData, blendVector);
+    return blendVector;
+  };
+
+  return GlyphVariationProcessor;
+}();
+
+var Subset = function () {
+  function Subset(font) {
+    _classCallCheck(this, Subset);
+
+    this.font = font;
+    this.glyphs = [];
+    this.mapping = {};
+
+    // always include the missing glyph
+    this.includeGlyph(0);
+  }
+
+  Subset.prototype.includeGlyph = function includeGlyph(glyph) {
+    if ((typeof glyph === 'undefined' ? 'undefined' : _typeof(glyph)) === 'object') {
+      glyph = glyph.id;
+    }
+
+    if (this.mapping[glyph] == null) {
+      this.glyphs.push(glyph);
+      this.mapping[glyph] = this.glyphs.length - 1;
+    }
+
+    return this.mapping[glyph];
+  };
+
+  Subset.prototype.encodeStream = function encodeStream() {
+    var _this = this;
+
+    var s = new r.EncodeStream();
+
+    process.nextTick(function () {
+      _this.encode(s);
+      return s.end();
+    });
+
+    return s;
+  };
+
+  return Subset;
+}();
+
+// Flags for simple glyphs
+var ON_CURVE$1 = 1 << 0;
+var X_SHORT_VECTOR$1 = 1 << 1;
+var Y_SHORT_VECTOR$1 = 1 << 2;
+var REPEAT$1 = 1 << 3;
+var SAME_X$1 = 1 << 4;
+var SAME_Y$1 = 1 << 5;
+
+var Point$1 = function () {
+  function Point() {
+    _classCallCheck(this, Point);
+  }
+
+  Point.size = function size(val) {
+    return val >= 0 && val <= 255 ? 1 : 2;
+  };
+
+  Point.encode = function encode(stream, value) {
+    if (value >= 0 && value <= 255) {
+      stream.writeUInt8(value);
+    } else {
+      stream.writeInt16BE(value);
+    }
+  };
+
+  return Point;
+}();
+
+var Glyf = new r.Struct({
+  numberOfContours: r.int16, // if negative, this is a composite glyph
+  xMin: r.int16,
+  yMin: r.int16,
+  xMax: r.int16,
+  yMax: r.int16,
+  endPtsOfContours: new r.Array(r.uint16, 'numberOfContours'),
+  instructions: new r.Array(r.uint8, r.uint16),
+  flags: new r.Array(r.uint8, 0),
+  xPoints: new r.Array(Point$1, 0),
+  yPoints: new r.Array(Point$1, 0)
+});
+
+/**
+ * Encodes TrueType glyph outlines
+ */
+
+var TTFGlyphEncoder = function () {
+  function TTFGlyphEncoder() {
+    _classCallCheck(this, TTFGlyphEncoder);
+  }
+
+  TTFGlyphEncoder.prototype.encodeSimple = function encodeSimple(path) {
+    var instructions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+    var endPtsOfContours = [];
+    var xPoints = [];
+    var yPoints = [];
+    var flags = [];
+    var same = 0;
+    var lastX = 0,
+        lastY = 0,
+        lastFlag = 0;
+    var pointCount = 0;
+
+    for (var i = 0; i < path.commands.length; i++) {
+      var c = path.commands[i];
+
+      for (var j = 0; j < c.args.length; j += 2) {
+        var x = c.args[j];
+        var y = c.args[j + 1];
+        var flag = 0;
+
+        // If the ending point of a quadratic curve is the midpoint
+        // between the control point and the control point of the next
+        // quadratic curve, we can omit the ending point.
+        if (c.command === 'quadraticCurveTo' && j === 2) {
+          var next = path.commands[i + 1];
+          if (next && next.command === 'quadraticCurveTo') {
+            var midX = (lastX + next.args[0]) / 2;
+            var midY = (lastY + next.args[1]) / 2;
+
+            if (x === midX && y === midY) {
+              continue;
+            }
+          }
+        }
+
+        // All points except control points are on curve.
+        if (!(c.command === 'quadraticCurveTo' && j === 0)) {
+          flag |= ON_CURVE$1;
+        }
+
+        flag = this._encodePoint(x, lastX, xPoints, flag, X_SHORT_VECTOR$1, SAME_X$1);
+        flag = this._encodePoint(y, lastY, yPoints, flag, Y_SHORT_VECTOR$1, SAME_Y$1);
+
+        if (flag === lastFlag && same < 255) {
+          flags[flags.length - 1] |= REPEAT$1;
+          same++;
+        } else {
+          if (same > 0) {
+            flags.push(same);
+            same = 0;
+          }
+
+          flags.push(flag);
+          lastFlag = flag;
+        }
+
+        lastX = x;
+        lastY = y;
+        pointCount++;
+      }
+
+      if (c.command === 'closePath') {
+        endPtsOfContours.push(pointCount - 1);
+      }
+    }
+
+    // Close the path if the last command didn't already
+    if (path.commands.length > 1 && path.commands[path.commands.length - 1].command !== 'closePath') {
+      endPtsOfContours.push(pointCount - 1);
+    }
+
+    var bbox = path.bbox;
+    var glyf = {
+      numberOfContours: endPtsOfContours.length,
+      xMin: bbox.minX,
+      yMin: bbox.minY,
+      xMax: bbox.maxX,
+      yMax: bbox.maxY,
+      endPtsOfContours: endPtsOfContours,
+      instructions: instructions,
+      flags: flags,
+      xPoints: xPoints,
+      yPoints: yPoints
+    };
+
+    var size = Glyf.size(glyf);
+    var tail = 4 - size % 4;
+
+    var stream = new r.EncodeStream(size + tail);
+    Glyf.encode(stream, glyf);
+
+    // Align to 4-byte length
+    if (tail !== 0) {
+      stream.fill(0, tail);
+    }
+
+    return stream.buffer;
+  };
+
+  TTFGlyphEncoder.prototype._encodePoint = function _encodePoint(value, last, points, flag, shortFlag, sameFlag) {
+    var diff = value - last;
+
+    if (value === last) {
+      flag |= sameFlag;
+    } else {
+      if (-255 <= diff && diff <= 255) {
+        flag |= shortFlag;
+        if (diff < 0) {
+          diff = -diff;
+        } else {
+          flag |= sameFlag;
+        }
+      }
+
+      points.push(diff);
+    }
+
+    return flag;
+  };
+
+  return TTFGlyphEncoder;
+}();
+
+var TTFSubset = function (_Subset) {
+  _inherits(TTFSubset, _Subset);
+
+  function TTFSubset(font) {
+    _classCallCheck(this, TTFSubset);
+
+    var _this = _possibleConstructorReturn(this, _Subset.call(this, font));
+
+    _this.glyphEncoder = new TTFGlyphEncoder();
+    return _this;
+  }
+
+  TTFSubset.prototype._addGlyph = function _addGlyph(gid) {
+    var glyph = this.font.getGlyph(gid);
+    var glyf = glyph._decode();
+
+    // get the offset to the glyph from the loca table
+    var curOffset = this.font.loca.offsets[gid];
+    var nextOffset = this.font.loca.offsets[gid + 1];
+
+    var stream = this.font._getTableStream('glyf');
+    stream.pos += curOffset;
+
+    var buffer = stream.readBuffer(nextOffset - curOffset);
+
+    // if it is a compound glyph, include its components
+    if (glyf && glyf.numberOfContours < 0) {
+      buffer = new Buffer(buffer);
+      for (var _iterator = glyf.components, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var component = _ref;
+
+        gid = this.includeGlyph(component.glyphID);
+        buffer.writeUInt16BE(gid, component.pos);
+      }
+    } else if (glyf && this.font._variationProcessor) {
+      // If this is a TrueType variation glyph, re-encode the path
+      buffer = this.glyphEncoder.encodeSimple(glyph.path, glyf.instructions);
+    }
+
+    this.glyf.push(buffer);
+    this.loca.offsets.push(this.offset);
+
+    this.hmtx.metrics.push({
+      advance: glyph.advanceWidth,
+      bearing: glyph._getMetrics().leftBearing
+    });
+
+    this.offset += buffer.length;
+    return this.glyf.length - 1;
+  };
+
+  TTFSubset.prototype.encode = function encode(stream) {
+    // tables required by PDF spec:
+    //   head, hhea, loca, maxp, cvt , prep, glyf, hmtx, fpgm
+    //
+    // additional tables required for standalone fonts:
+    //   name, cmap, OS/2, post
+
+    this.glyf = [];
+    this.offset = 0;
+    this.loca = {
+      offsets: []
+    };
+
+    this.hmtx = {
+      metrics: [],
+      bearings: []
+    };
+
+    // include all the glyphs
+    // not using a for loop because we need to support adding more
+    // glyphs to the array as we go, and CoffeeScript caches the length.
+    var i = 0;
+    while (i < this.glyphs.length) {
+      this._addGlyph(this.glyphs[i++]);
+    }
+
+    var maxp = cloneDeep(this.font.maxp);
+    maxp.numGlyphs = this.glyf.length;
+
+    this.loca.offsets.push(this.offset);
+    tables.loca.preEncode.call(this.loca);
+
+    var head = cloneDeep(this.font.head);
+    head.indexToLocFormat = this.loca.version;
+
+    var hhea = cloneDeep(this.font.hhea);
+    hhea.numberOfMetrics = this.hmtx.metrics.length;
+
+    // map = []
+    // for index in [0...256]
+    //     if index < @numGlyphs
+    //         map[index] = index
+    //     else
+    //         map[index] = 0
+    //
+    // cmapTable =
+    //     version: 0
+    //     length: 262
+    //     language: 0
+    //     codeMap: map
+    //
+    // cmap =
+    //     version: 0
+    //     numSubtables: 1
+    //     tables: [
+    //         platformID: 1
+    //         encodingID: 0
+    //         table: cmapTable
+    //     ]
+
+    // TODO: subset prep, cvt, fpgm?
+    Directory.encode(stream, {
+      tables: {
+        head: head,
+        hhea: hhea,
+        loca: this.loca,
+        maxp: maxp,
+        'cvt ': this.font['cvt '],
+        prep: this.font.prep,
+        glyf: this.glyf,
+        hmtx: this.hmtx,
+        fpgm: this.font.fpgm
+
+        // name: clone @font.name
+        // 'OS/2': clone @font['OS/2']
+        // post: clone @font.post
+        // cmap: cmap
+      }
+    });
+  };
+
+  return TTFSubset;
+}(Subset);
+
+var CFFSubset = function (_Subset) {
+  _inherits(CFFSubset, _Subset);
+
+  function CFFSubset(font) {
+    _classCallCheck(this, CFFSubset);
+
+    var _this = _possibleConstructorReturn(this, _Subset.call(this, font));
+
+    _this.cff = _this.font['CFF '];
+    if (!_this.cff) {
+      throw new Error('Not a CFF Font');
+    }
+    return _this;
+  }
+
+  CFFSubset.prototype.subsetCharstrings = function subsetCharstrings() {
+    this.charstrings = [];
+    var gsubrs = {};
+
+    for (var _iterator = this.glyphs, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var gid = _ref;
+
+      this.charstrings.push(this.cff.getCharString(gid));
+
+      var glyph = this.font.getGlyph(gid);
+      var path = glyph.path; // this causes the glyph to be parsed
+
+      for (var subr in glyph._usedGsubrs) {
+        gsubrs[subr] = true;
+      }
+    }
+
+    this.gsubrs = this.subsetSubrs(this.cff.globalSubrIndex, gsubrs);
+  };
+
+  CFFSubset.prototype.subsetSubrs = function subsetSubrs(subrs, used) {
+    var res = [];
+    for (var i = 0; i < subrs.length; i++) {
+      var subr = subrs[i];
+      if (used[i]) {
+        this.cff.stream.pos = subr.offset;
+        res.push(this.cff.stream.readBuffer(subr.length));
+      } else {
+        res.push(new Buffer([11])); // return
+      }
+    }
+
+    return res;
+  };
+
+  CFFSubset.prototype.subsetFontdict = function subsetFontdict(topDict) {
+    topDict.FDArray = [];
+    topDict.FDSelect = {
+      version: 0,
+      fds: []
+    };
+
+    var used_fds = {};
+    var used_subrs = [];
+    for (var _iterator2 = this.glyphs, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var gid = _ref2;
+
+      var fd = this.cff.fdForGlyph(gid);
+      if (fd == null) {
+        continue;
+      }
+
+      if (!used_fds[fd]) {
+        topDict.FDArray.push(_Object$assign({}, this.cff.topDict.FDArray[fd]));
+        used_subrs.push({});
+      }
+
+      used_fds[fd] = true;
+      topDict.FDSelect.fds.push(topDict.FDArray.length - 1);
+
+      var glyph = this.font.getGlyph(gid);
+      var path = glyph.path; // this causes the glyph to be parsed
+      for (var subr in glyph._usedSubrs) {
+        used_subrs[used_subrs.length - 1][subr] = true;
+      }
+    }
+
+    for (var i = 0; i < topDict.FDArray.length; i++) {
+      var dict = topDict.FDArray[i];
+      delete dict.FontName;
+      if (dict.Private && dict.Private.Subrs) {
+        dict.Private = _Object$assign({}, dict.Private);
+        dict.Private.Subrs = this.subsetSubrs(dict.Private.Subrs, used_subrs[i]);
+      }
+    }
+
+    return;
+  };
+
+  CFFSubset.prototype.createCIDFontdict = function createCIDFontdict(topDict) {
+    var used_subrs = {};
+    for (var _iterator3 = this.glyphs, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+      var _ref3;
+
+      if (_isArray3) {
+        if (_i3 >= _iterator3.length) break;
+        _ref3 = _iterator3[_i3++];
+      } else {
+        _i3 = _iterator3.next();
+        if (_i3.done) break;
+        _ref3 = _i3.value;
+      }
+
+      var gid = _ref3;
+
+      var glyph = this.font.getGlyph(gid);
+      var path = glyph.path; // this causes the glyph to be parsed
+
+      for (var subr in glyph._usedSubrs) {
+        used_subrs[subr] = true;
+      }
+    }
+
+    var privateDict = _Object$assign({}, this.cff.topDict.Private);
+    privateDict.Subrs = this.subsetSubrs(this.cff.topDict.Private.Subrs, used_subrs);
+
+    topDict.FDArray = [{ Private: privateDict }];
+    return topDict.FDSelect = {
+      version: 3,
+      nRanges: 1,
+      ranges: [{ first: 0, fd: 0 }],
+      sentinel: this.charstrings.length
+    };
+  };
+
+  CFFSubset.prototype.addString = function addString(string) {
+    if (!string) {
+      return null;
+    }
+
+    if (!this.strings) {
+      this.strings = [];
+    }
+
+    this.strings.push(string);
+    return standardStrings.length + this.strings.length - 1;
+  };
+
+  CFFSubset.prototype.encode = function encode(stream) {
+    this.subsetCharstrings();
+
+    var charset = {
+      version: this.charstrings.length > 255 ? 2 : 1,
+      ranges: [{ first: 1, nLeft: this.charstrings.length - 2 }]
+    };
+
+    var topDict = _Object$assign({}, this.cff.topDict);
+    topDict.Private = null;
+    topDict.charset = charset;
+    topDict.Encoding = null;
+    topDict.CharStrings = this.charstrings;
+
+    var _arr = ['version', 'Notice', 'Copyright', 'FullName', 'FamilyName', 'Weight', 'PostScript', 'BaseFontName', 'FontName'];
+    for (var _i4 = 0; _i4 < _arr.length; _i4++) {
+      var key = _arr[_i4];
+      topDict[key] = this.addString(this.cff.string(topDict[key]));
+    }
+
+    topDict.ROS = [this.addString('Adobe'), this.addString('Identity'), 0];
+    topDict.CIDCount = this.charstrings.length;
+
+    if (this.cff.isCIDFont) {
+      this.subsetFontdict(topDict);
+    } else {
+      this.createCIDFontdict(topDict);
+    }
+
+    var top = {
+      version: 1,
+      hdrSize: this.cff.hdrSize,
+      offSize: this.cff.length,
+      header: this.cff.header,
+      nameIndex: [this.cff.postscriptName],
+      topDictIndex: [topDict],
+      stringIndex: this.strings,
+      globalSubrIndex: this.gsubrs
+    };
+
+    CFFTop.encode(stream, top);
+  };
+
+  return CFFSubset;
+}(Subset);
+
+var _class;
+function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
+  var desc = {};
+  Object['ke' + 'ys'](descriptor).forEach(function (key) {
+    desc[key] = descriptor[key];
+  });
+  desc.enumerable = !!desc.enumerable;
+  desc.configurable = !!desc.configurable;
+
+  if ('value' in desc || desc.initializer) {
+    desc.writable = true;
+  }
+
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+    return decorator(target, property, desc) || desc;
+  }, desc);
+
+  if (context && desc.initializer !== void 0) {
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+    desc.initializer = undefined;
+  }
+
+  if (desc.initializer === void 0) {
+    Object['define' + 'Property'](target, property, desc);
+    desc = null;
+  }
+
+  return desc;
+}
+
+/**
+ * This is the base class for all SFNT-based font formats in fontkit.
+ * It supports TrueType, and PostScript glyphs, and several color glyph formats.
+ */
+var TTFFont = (_class = function () {
+  TTFFont.probe = function probe(buffer) {
+    var format = buffer.toString('ascii', 0, 4);
+    return format === 'true' || format === 'OTTO' || format === String.fromCharCode(0, 1, 0, 0);
+  };
+
+  function TTFFont(stream) {
+    var variationCoords = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+
+    _classCallCheck(this, TTFFont);
+
+    this.stream = stream;
+    this.variationCoords = variationCoords;
+
+    this._directoryPos = this.stream.pos;
+    this._tables = {};
+    this._glyphs = {};
+    this._decodeDirectory();
+
+    // define properties for each table to lazily parse
+    for (var tag in this.directory.tables) {
+      var table = this.directory.tables[tag];
+      if (tables[tag] && table.length > 0) {
+        _Object$defineProperty(this, tag, {
+          get: this._getTable.bind(this, table)
+        });
+      }
+    }
+  }
+
+  TTFFont.prototype._getTable = function _getTable(table) {
+    if (!(table.tag in this._tables)) {
+      try {
+        this._tables[table.tag] = this._decodeTable(table);
+      } catch (e) {
+        if (fontkit.logErrors) {
+          console.error('Error decoding table ' + table.tag);
+          console.error(e.stack);
+        }
+      }
+    }
+
+    return this._tables[table.tag];
+  };
+
+  TTFFont.prototype._getTableStream = function _getTableStream(tag) {
+    var table = this.directory.tables[tag];
+    if (table) {
+      this.stream.pos = table.offset;
+      return this.stream;
+    }
+
+    return null;
+  };
+
+  TTFFont.prototype._decodeDirectory = function _decodeDirectory() {
+    return this.directory = Directory.decode(this.stream, { _startOffset: 0 });
+  };
+
+  TTFFont.prototype._decodeTable = function _decodeTable(table) {
+    var pos = this.stream.pos;
+
+    var stream = this._getTableStream(table.tag);
+    var result = tables[table.tag].decode(stream, this, table.length);
+
+    this.stream.pos = pos;
+    return result;
+  };
+
+  /**
+   * The unique PostScript name for this font
+   * @type {string}
+   */
+
+
+  /**
+   * Gets a string from the font's `name` table
+   * `lang` is a BCP-47 language code.
+   * @return {string}
+   */
+  TTFFont.prototype.getName = function getName(key) {
+    var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';
+
+    var record = this.name.records[key];
+    if (record) {
+      return record[lang];
+    }
+
+    return null;
+  };
+
+  /**
+   * The font's full name, e.g. "Helvetica Bold"
+   * @type {string}
+   */
+
+
+  /**
+   * Returns whether there is glyph in the font for the given unicode code point.
+   *
+   * @param {number} codePoint
+   * @return {boolean}
+   */
+  TTFFont.prototype.hasGlyphForCodePoint = function hasGlyphForCodePoint(codePoint) {
+    return !!this._cmapProcessor.lookup(codePoint);
+  };
+
+  /**
+   * Maps a single unicode code point to a Glyph object.
+   * Does not perform any advanced substitutions (there is no context to do so).
+   *
+   * @param {number} codePoint
+   * @return {Glyph}
+   */
+
+
+  TTFFont.prototype.glyphForCodePoint = function glyphForCodePoint(codePoint) {
+    return this.getGlyph(this._cmapProcessor.lookup(codePoint), [codePoint]);
+  };
+
+  /**
+   * Returns an array of Glyph objects for the given string.
+   * This is only a one-to-one mapping from characters to glyphs.
+   * For most uses, you should use font.layout (described below), which
+   * provides a much more advanced mapping supporting AAT and OpenType shaping.
+   *
+   * @param {string} string
+   * @return {Glyph[]}
+   */
+
+
+  TTFFont.prototype.glyphsForString = function glyphsForString(string) {
+    var glyphs = [];
+    var len = string.length;
+    var idx = 0;
+    var last = -1;
+    var state = -1;
+
+    while (idx <= len) {
+      var code = 0;
+      var nextState = 0;
+
+      if (idx < len) {
+        // Decode the next codepoint from UTF 16
+        code = string.charCodeAt(idx++);
+        if (0xd800 <= code && code <= 0xdbff && idx < len) {
+          var next = string.charCodeAt(idx);
+          if (0xdc00 <= next && next <= 0xdfff) {
+            idx++;
+            code = ((code & 0x3ff) << 10) + (next & 0x3ff) + 0x10000;
+          }
+        }
+
+        // Compute the next state: 1 if the next codepoint is a variation selector, 0 otherwise.
+        nextState = 0xfe00 <= code && code <= 0xfe0f || 0xe0100 <= code && code <= 0xe01ef ? 1 : 0;
+      } else {
+        idx++;
+      }
+
+      if (state === 0 && nextState === 1) {
+        // Variation selector following normal codepoint.
+        glyphs.push(this.getGlyph(this._cmapProcessor.lookup(last, code), [last, code]));
+      } else if (state === 0 && nextState === 0) {
+        // Normal codepoint following normal codepoint.
+        glyphs.push(this.glyphForCodePoint(last));
+      }
+
+      last = code;
+      state = nextState;
+    }
+
+    return glyphs;
+  };
+
+  /**
+   * Returns a GlyphRun object, which includes an array of Glyphs and GlyphPositions for the given string.
+   *
+   * @param {string} string
+   * @param {string[]} [userFeatures]
+   * @param {string} [script]
+   * @param {string} [language]
+   * @param {string} [direction]
+   * @return {GlyphRun}
+   */
+  TTFFont.prototype.layout = function layout(string, userFeatures, script, language, direction) {
+    return this._layoutEngine.layout(string, userFeatures, script, language, direction);
+  };
+
+  /**
+   * Returns an array of strings that map to the given glyph id.
+   * @param {number} gid - glyph id
+   */
+
+
+  TTFFont.prototype.stringsForGlyph = function stringsForGlyph(gid) {
+    return this._layoutEngine.stringsForGlyph(gid);
+  };
+
+  /**
+   * An array of all [OpenType feature tags](https://www.microsoft.com/typography/otspec/featuretags.htm)
+   * (or mapped AAT tags) supported by the font.
+   * The features parameter is an array of OpenType feature tags to be applied in addition to the default set.
+   * If this is an AAT font, the OpenType feature tags are mapped to AAT features.
+   *
+   * @type {string[]}
+   */
+
+
+  TTFFont.prototype.getAvailableFeatures = function getAvailableFeatures(script, language) {
+    return this._layoutEngine.getAvailableFeatures(script, language);
+  };
+
+  TTFFont.prototype._getBaseGlyph = function _getBaseGlyph(glyph) {
+    var characters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+    if (!this._glyphs[glyph]) {
+      if (this.directory.tables.glyf) {
+        this._glyphs[glyph] = new TTFGlyph(glyph, characters, this);
+      } else if (this.directory.tables['CFF '] || this.directory.tables.CFF2) {
+        this._glyphs[glyph] = new CFFGlyph(glyph, characters, this);
+      }
+    }
+
+    return this._glyphs[glyph] || null;
+  };
+
+  /**
+   * Returns a glyph object for the given glyph id.
+   * You can pass the array of code points this glyph represents for
+   * your use later, and it will be stored in the glyph object.
+   *
+   * @param {number} glyph
+   * @param {number[]} characters
+   * @return {Glyph}
+   */
+
+
+  TTFFont.prototype.getGlyph = function getGlyph(glyph) {
+    var characters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+    if (!this._glyphs[glyph]) {
+      if (this.directory.tables.sbix) {
+        this._glyphs[glyph] = new SBIXGlyph(glyph, characters, this);
+      } else if (this.directory.tables.COLR && this.directory.tables.CPAL) {
+        this._glyphs[glyph] = new COLRGlyph(glyph, characters, this);
+      } else {
+        this._getBaseGlyph(glyph, characters);
+      }
+    }
+
+    return this._glyphs[glyph] || null;
+  };
+
+  /**
+   * Returns a Subset for this font.
+   * @return {Subset}
+   */
+
+
+  TTFFont.prototype.createSubset = function createSubset() {
+    if (this.directory.tables['CFF ']) {
+      return new CFFSubset(this);
+    }
+
+    return new TTFSubset(this);
+  };
+
+  /**
+   * Returns an object describing the available variation axes
+   * that this font supports. Keys are setting tags, and values
+   * contain the axis name, range, and default value.
+   *
+   * @type {object}
+   */
+
+
+  /**
+   * Returns a new font with the given variation settings applied.
+   * Settings can either be an instance name, or an object containing
+   * variation tags as specified by the `variationAxes` property.
+   *
+   * @param {object} settings
+   * @return {TTFFont}
+   */
+  TTFFont.prototype.getVariation = function getVariation(settings) {
+    if (!(this.directory.tables.fvar && (this.directory.tables.gvar && this.directory.tables.glyf || this.directory.tables.CFF2))) {
+      throw new Error('Variations require a font with the fvar, gvar and glyf, or CFF2 tables.');
+    }
+
+    if (typeof settings === 'string') {
+      settings = this.namedVariations[settings];
+    }
+
+    if ((typeof settings === 'undefined' ? 'undefined' : _typeof(settings)) !== 'object') {
+      throw new Error('Variation settings must be either a variation name or settings object.');
+    }
+
+    // normalize the coordinates
+    var coords = this.fvar.axis.map(function (axis, i) {
+      var axisTag = axis.axisTag.trim();
+      if (axisTag in settings) {
+        return Math.max(axis.minValue, Math.min(axis.maxValue, settings[axisTag]));
+      } else {
+        return axis.defaultValue;
+      }
+    });
+
+    var stream = new r.DecodeStream(this.stream.buffer);
+    stream.pos = this._directoryPos;
+
+    var font = new TTFFont(stream, coords);
+    font._tables = this._tables;
+
+    return font;
+  };
+
+  // Standardized format plugin API
+  TTFFont.prototype.getFont = function getFont(name) {
+    return this.getVariation(name);
+  };
+
+  _createClass(TTFFont, [{
+    key: 'postscriptName',
+    get: function get() {
+      var name = this.name.records.postscriptName;
+      if (name) {
+        var lang = _Object$keys(name)[0];
+        return name[lang];
+      }
+
+      return null;
+    }
+  }, {
+    key: 'fullName',
+    get: function get() {
+      return this.getName('fullName');
+    }
+
+    /**
+     * The font's family name, e.g. "Helvetica"
+     * @type {string}
+     */
+
+  }, {
+    key: 'familyName',
+    get: function get() {
+      return this.getName('fontFamily');
+    }
+
+    /**
+     * The font's sub-family, e.g. "Bold".
+     * @type {string}
+     */
+
+  }, {
+    key: 'subfamilyName',
+    get: function get() {
+      return this.getName('fontSubfamily');
+    }
+
+    /**
+     * The font's copyright information
+     * @type {string}
+     */
+
+  }, {
+    key: 'copyright',
+    get: function get() {
+      return this.getName('copyright');
+    }
+
+    /**
+     * The font's version number
+     * @type {string}
+     */
+
+  }, {
+    key: 'version',
+    get: function get() {
+      return this.getName('version');
+    }
+
+    /**
+     * The font’s [ascender](https://en.wikipedia.org/wiki/Ascender_(typography))
+     * @type {number}
+     */
+
+  }, {
+    key: 'ascent',
+    get: function get() {
+      return this.hhea.ascent;
+    }
+
+    /**
+     * The font’s [descender](https://en.wikipedia.org/wiki/Descender)
+     * @type {number}
+     */
+
+  }, {
+    key: 'descent',
+    get: function get() {
+      return this.hhea.descent;
+    }
+
+    /**
+     * The amount of space that should be included between lines
+     * @type {number}
+     */
+
+  }, {
+    key: 'lineGap',
+    get: function get() {
+      return this.hhea.lineGap;
+    }
+
+    /**
+     * The offset from the normal underline position that should be used
+     * @type {number}
+     */
+
+  }, {
+    key: 'underlinePosition',
+    get: function get() {
+      return this.post.underlinePosition;
+    }
+
+    /**
+     * The weight of the underline that should be used
+     * @type {number}
+     */
+
+  }, {
+    key: 'underlineThickness',
+    get: function get() {
+      return this.post.underlineThickness;
+    }
+
+    /**
+     * If this is an italic font, the angle the cursor should be drawn at to match the font design
+     * @type {number}
+     */
+
+  }, {
+    key: 'italicAngle',
+    get: function get() {
+      return this.post.italicAngle;
+    }
+
+    /**
+     * The height of capital letters above the baseline.
+     * See [here](https://en.wikipedia.org/wiki/Cap_height) for more details.
+     * @type {number}
+     */
+
+  }, {
+    key: 'capHeight',
+    get: function get() {
+      var os2 = this['OS/2'];
+      return os2 ? os2.capHeight : this.ascent;
+    }
+
+    /**
+     * The height of lower case letters in the font.
+     * See [here](https://en.wikipedia.org/wiki/X-height) for more details.
+     * @type {number}
+     */
+
+  }, {
+    key: 'xHeight',
+    get: function get() {
+      var os2 = this['OS/2'];
+      return os2 ? os2.xHeight : 0;
+    }
+
+    /**
+     * The number of glyphs in the font.
+     * @type {number}
+     */
+
+  }, {
+    key: 'numGlyphs',
+    get: function get() {
+      return this.maxp.numGlyphs;
+    }
+
+    /**
+     * The size of the font’s internal coordinate grid
+     * @type {number}
+     */
+
+  }, {
+    key: 'unitsPerEm',
+    get: function get() {
+      return this.head.unitsPerEm;
+    }
+
+    /**
+     * The font’s bounding box, i.e. the box that encloses all glyphs in the font.
+     * @type {BBox}
+     */
+
+  }, {
+    key: 'bbox',
+    get: function get() {
+      return _Object$freeze(new BBox(this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax));
+    }
+  }, {
+    key: '_cmapProcessor',
+    get: function get() {
+      return new CmapProcessor(this.cmap);
+    }
+
+    /**
+     * An array of all of the unicode code points supported by the font.
+     * @type {number[]}
+     */
+
+  }, {
+    key: 'characterSet',
+    get: function get() {
+      return this._cmapProcessor.getCharacterSet();
+    }
+  }, {
+    key: '_layoutEngine',
+    get: function get() {
+      return new LayoutEngine(this);
+    }
+  }, {
+    key: 'availableFeatures',
+    get: function get() {
+      return this._layoutEngine.getAvailableFeatures();
+    }
+  }, {
+    key: 'variationAxes',
+    get: function get() {
+      var res = {};
+      if (!this.fvar) {
+        return res;
+      }
+
+      for (var _iterator = this.fvar.axis, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var axis = _ref;
+
+        res[axis.axisTag.trim()] = {
+          name: axis.name.en,
+          min: axis.minValue,
+          default: axis.defaultValue,
+          max: axis.maxValue
+        };
+      }
+
+      return res;
+    }
+
+    /**
+     * Returns an object describing the named variation instances
+     * that the font designer has specified. Keys are variation names
+     * and values are the variation settings for this instance.
+     *
+     * @type {object}
+     */
+
+  }, {
+    key: 'namedVariations',
+    get: function get() {
+      var res = {};
+      if (!this.fvar) {
+        return res;
+      }
+
+      for (var _iterator2 = this.fvar.instance, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var instance = _ref2;
+
+        var settings = {};
+        for (var i = 0; i < this.fvar.axis.length; i++) {
+          var axis = this.fvar.axis[i];
+          settings[axis.axisTag.trim()] = instance.coord[i];
+        }
+
+        res[instance.name.en] = settings;
+      }
+
+      return res;
+    }
+  }, {
+    key: '_variationProcessor',
+    get: function get() {
+      if (!this.fvar) {
+        return null;
+      }
+
+      var variationCoords = this.variationCoords;
+
+      // Ignore if no variation coords and not CFF2
+      if (!variationCoords && !this.CFF2) {
+        return null;
+      }
+
+      if (!variationCoords) {
+        variationCoords = this.fvar.axis.map(function (axis) {
+          return axis.defaultValue;
+        });
+      }
+
+      return new GlyphVariationProcessor(this, variationCoords);
+    }
+  }]);
+
+  return TTFFont;
+}(), (_applyDecoratedDescriptor(_class.prototype, 'bbox', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, 'bbox'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, '_cmapProcessor', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, '_cmapProcessor'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'characterSet', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, 'characterSet'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, '_layoutEngine', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, '_layoutEngine'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'variationAxes', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, 'variationAxes'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'namedVariations', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, 'namedVariations'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, '_variationProcessor', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, '_variationProcessor'), _class.prototype)), _class);
+
+var WOFFDirectoryEntry = new r.Struct({
+  tag: new r.String(4),
+  offset: new r.Pointer(r.uint32, 'void', { type: 'global' }),
+  compLength: r.uint32,
+  length: r.uint32,
+  origChecksum: r.uint32
+});
+
+var WOFFDirectory = new r.Struct({
+  tag: new r.String(4), // should be 'wOFF'
+  flavor: r.uint32,
+  length: r.uint32,
+  numTables: r.uint16,
+  reserved: new r.Reserved(r.uint16),
+  totalSfntSize: r.uint32,
+  majorVersion: r.uint16,
+  minorVersion: r.uint16,
+  metaOffset: r.uint32,
+  metaLength: r.uint32,
+  metaOrigLength: r.uint32,
+  privOffset: r.uint32,
+  privLength: r.uint32,
+  tables: new r.Array(WOFFDirectoryEntry, 'numTables')
+});
+
+WOFFDirectory.process = function () {
+  var tables = {};
+  for (var _iterator = this.tables, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var table = _ref;
+
+    tables[table.tag] = table;
+  }
+
+  this.tables = tables;
+};
+
+var WOFFFont = function (_TTFFont) {
+  _inherits(WOFFFont, _TTFFont);
+
+  function WOFFFont() {
+    _classCallCheck(this, WOFFFont);
+
+    return _possibleConstructorReturn(this, _TTFFont.apply(this, arguments));
+  }
+
+  WOFFFont.probe = function probe(buffer) {
+    return buffer.toString('ascii', 0, 4) === 'wOFF';
+  };
+
+  WOFFFont.prototype._decodeDirectory = function _decodeDirectory() {
+    this.directory = WOFFDirectory.decode(this.stream, { _startOffset: 0 });
+  };
+
+  WOFFFont.prototype._getTableStream = function _getTableStream(tag) {
+    var table = this.directory.tables[tag];
+    if (table) {
+      this.stream.pos = table.offset;
+
+      if (table.compLength < table.length) {
+        this.stream.pos += 2; // skip deflate header
+        var outBuffer = new Buffer(table.length);
+        var buf = inflate(this.stream.readBuffer(table.compLength - 2), outBuffer);
+        return new r.DecodeStream(buf);
+      } else {
+        return this.stream;
+      }
+    }
+
+    return null;
+  };
+
+  return WOFFFont;
+}(TTFFont);
+
+/**
+ * Represents a TrueType glyph in the WOFF2 format, which compresses glyphs differently.
+ */
+
+var WOFF2Glyph = function (_TTFGlyph) {
+  _inherits(WOFF2Glyph, _TTFGlyph);
+
+  function WOFF2Glyph() {
+    _classCallCheck(this, WOFF2Glyph);
+
+    return _possibleConstructorReturn(this, _TTFGlyph.apply(this, arguments));
+  }
+
+  WOFF2Glyph.prototype._decode = function _decode() {
+    // We have to decode in advance (in WOFF2Font), so just return the pre-decoded data.
+    return this._font._transformedGlyphs[this.id];
+  };
+
+  WOFF2Glyph.prototype._getCBox = function _getCBox() {
+    return this.path.bbox;
+  };
+
+  return WOFF2Glyph;
+}(TTFGlyph);
+
+var Base128 = {
+  decode: function decode(stream) {
+    var result = 0;
+    var iterable = [0, 1, 2, 3, 4];
+    for (var j = 0; j < iterable.length; j++) {
+      var i = iterable[j];
+      var code = stream.readUInt8();
+
+      // If any of the top seven bits are set then we're about to overflow.
+      if (result & 0xe0000000) {
+        throw new Error('Overflow');
+      }
+
+      result = result << 7 | code & 0x7f;
+      if ((code & 0x80) === 0) {
+        return result;
+      }
+    }
+
+    throw new Error('Bad base 128 number');
+  }
+};
+
+var knownTags = ['cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'OS/2', 'post', 'cvt ', 'fpgm', 'glyf', 'loca', 'prep', 'CFF ', 'VORG', 'EBDT', 'EBLC', 'gasp', 'hdmx', 'kern', 'LTSH', 'PCLT', 'VDMX', 'vhea', 'vmtx', 'BASE', 'GDEF', 'GPOS', 'GSUB', 'EBSC', 'JSTF', 'MATH', 'CBDT', 'CBLC', 'COLR', 'CPAL', 'SVG ', 'sbix', 'acnt', 'avar', 'bdat', 'bloc', 'bsln', 'cvar', 'fdsc', 'feat', 'fmtx', 'fvar', 'gvar', 'hsty', 'just', 'lcar', 'mort', 'morx', 'opbd', 'prop', 'trak', 'Zapf', 'Silf', 'Glat', 'Gloc', 'Feat', 'Sill'];
+
+var WOFF2DirectoryEntry = new r.Struct({
+  flags: r.uint8,
+  customTag: new r.Optional(new r.String(4), function (t) {
+    return (t.flags & 0x3f) === 0x3f;
+  }),
+  tag: function tag(t) {
+    return t.customTag || knownTags[t.flags & 0x3f];
+  }, // || (() => { throw new Error(`Bad tag: ${flags & 0x3f}`); })(); },
+  length: Base128,
+  transformVersion: function transformVersion(t) {
+    return t.flags >>> 6 & 0x03;
+  },
+  transformed: function transformed(t) {
+    return t.tag === 'glyf' || t.tag === 'loca' ? t.transformVersion === 0 : t.transformVersion !== 0;
+  },
+  transformLength: new r.Optional(Base128, function (t) {
+    return t.transformed;
+  })
+});
+
+var WOFF2Directory = new r.Struct({
+  tag: new r.String(4), // should be 'wOF2'
+  flavor: r.uint32,
+  length: r.uint32,
+  numTables: r.uint16,
+  reserved: new r.Reserved(r.uint16),
+  totalSfntSize: r.uint32,
+  totalCompressedSize: r.uint32,
+  majorVersion: r.uint16,
+  minorVersion: r.uint16,
+  metaOffset: r.uint32,
+  metaLength: r.uint32,
+  metaOrigLength: r.uint32,
+  privOffset: r.uint32,
+  privLength: r.uint32,
+  tables: new r.Array(WOFF2DirectoryEntry, 'numTables')
+});
+
+WOFF2Directory.process = function () {
+  var tables = {};
+  for (var i = 0; i < this.tables.length; i++) {
+    var table = this.tables[i];
+    tables[table.tag] = table;
+  }
+
+  return this.tables = tables;
+};
+
+/**
+ * Subclass of TTFFont that represents a TTF/OTF font compressed by WOFF2
+ * See spec here: http://www.w3.org/TR/WOFF2/
+ */
+
+var WOFF2Font = function (_TTFFont) {
+  _inherits(WOFF2Font, _TTFFont);
+
+  function WOFF2Font() {
+    _classCallCheck(this, WOFF2Font);
+
+    return _possibleConstructorReturn(this, _TTFFont.apply(this, arguments));
+  }
+
+  WOFF2Font.probe = function probe(buffer) {
+    return buffer.toString('ascii', 0, 4) === 'wOF2';
+  };
+
+  WOFF2Font.prototype._decodeDirectory = function _decodeDirectory() {
+    this.directory = WOFF2Directory.decode(this.stream);
+    this._dataPos = this.stream.pos;
+  };
+
+  WOFF2Font.prototype._decompress = function _decompress() {
+    // decompress data and setup table offsets if we haven't already
+    if (!this._decompressed) {
+      this.stream.pos = this._dataPos;
+      var buffer = this.stream.readBuffer(this.directory.totalCompressedSize);
+
+      var decompressedSize = 0;
+      for (var tag in this.directory.tables) {
+        var entry = this.directory.tables[tag];
+        entry.offset = decompressedSize;
+        decompressedSize += entry.transformLength != null ? entry.transformLength : entry.length;
+      }
+
+      var decompressed = brotli(buffer, decompressedSize);
+      if (!decompressed) {
+        throw new Error('Error decoding compressed data in WOFF2');
+      }
+
+      this.stream = new r.DecodeStream(new Buffer(decompressed));
+      this._decompressed = true;
+    }
+  };
+
+  WOFF2Font.prototype._decodeTable = function _decodeTable(table) {
+    this._decompress();
+    return _TTFFont.prototype._decodeTable.call(this, table);
+  };
+
+  // Override this method to get a glyph and return our
+  // custom subclass if there is a glyf table.
+
+
+  WOFF2Font.prototype._getBaseGlyph = function _getBaseGlyph(glyph) {
+    var characters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+    if (!this._glyphs[glyph]) {
+      if (this.directory.tables.glyf && this.directory.tables.glyf.transformed) {
+        if (!this._transformedGlyphs) {
+          this._transformGlyfTable();
+        }
+        return this._glyphs[glyph] = new WOFF2Glyph(glyph, characters, this);
+      } else {
+        return _TTFFont.prototype._getBaseGlyph.call(this, glyph, characters);
+      }
+    }
+  };
+
+  WOFF2Font.prototype._transformGlyfTable = function _transformGlyfTable() {
+    this._decompress();
+    this.stream.pos = this.directory.tables.glyf.offset;
+    var table = GlyfTable.decode(this.stream);
+    var glyphs = [];
+
+    for (var index = 0; index < table.numGlyphs; index++) {
+      var glyph = {};
+      var nContours = table.nContours.readInt16BE();
+      glyph.numberOfContours = nContours;
+
+      if (nContours > 0) {
+        // simple glyph
+        var nPoints = [];
+        var totalPoints = 0;
+
+        for (var i = 0; i < nContours; i++) {
+          var _r = read255UInt16(table.nPoints);
+          totalPoints += _r;
+          nPoints.push(totalPoints);
+        }
+
+        glyph.points = decodeTriplet(table.flags, table.glyphs, totalPoints);
+        for (var _i = 0; _i < nContours; _i++) {
+          glyph.points[nPoints[_i] - 1].endContour = true;
+        }
+
+        var instructionSize = read255UInt16(table.glyphs);
+      } else if (nContours < 0) {
+        // composite glyph
+        var haveInstructions = TTFGlyph.prototype._decodeComposite.call({ _font: this }, glyph, table.composites);
+        if (haveInstructions) {
+          var instructionSize = read255UInt16(table.glyphs);
+        }
+      }
+
+      glyphs.push(glyph);
+    }
+
+    this._transformedGlyphs = glyphs;
+  };
+
+  return WOFF2Font;
+}(TTFFont);
+
+var Substream = function () {
+  function Substream(length) {
+    _classCallCheck(this, Substream);
+
+    this.length = length;
+    this._buf = new r.Buffer(length);
+  }
+
+  Substream.prototype.decode = function decode(stream, parent) {
+    return new r.DecodeStream(this._buf.decode(stream, parent));
+  };
+
+  return Substream;
+}();
+
+// This struct represents the entire glyf table
+
+
+var GlyfTable = new r.Struct({
+  version: r.uint32,
+  numGlyphs: r.uint16,
+  indexFormat: r.uint16,
+  nContourStreamSize: r.uint32,
+  nPointsStreamSize: r.uint32,
+  flagStreamSize: r.uint32,
+  glyphStreamSize: r.uint32,
+  compositeStreamSize: r.uint32,
+  bboxStreamSize: r.uint32,
+  instructionStreamSize: r.uint32,
+  nContours: new Substream('nContourStreamSize'),
+  nPoints: new Substream('nPointsStreamSize'),
+  flags: new Substream('flagStreamSize'),
+  glyphs: new Substream('glyphStreamSize'),
+  composites: new Substream('compositeStreamSize'),
+  bboxes: new Substream('bboxStreamSize'),
+  instructions: new Substream('instructionStreamSize')
+});
+
+var WORD_CODE = 253;
+var ONE_MORE_BYTE_CODE2 = 254;
+var ONE_MORE_BYTE_CODE1 = 255;
+var LOWEST_U_CODE = 253;
+
+function read255UInt16(stream) {
+  var code = stream.readUInt8();
+
+  if (code === WORD_CODE) {
+    return stream.readUInt16BE();
+  }
+
+  if (code === ONE_MORE_BYTE_CODE1) {
+    return stream.readUInt8() + LOWEST_U_CODE;
+  }
+
+  if (code === ONE_MORE_BYTE_CODE2) {
+    return stream.readUInt8() + LOWEST_U_CODE * 2;
+  }
+
+  return code;
+}
+
+function withSign(flag, baseval) {
+  return flag & 1 ? baseval : -baseval;
+}
+
+function decodeTriplet(flags, glyphs, nPoints) {
+  var y = void 0;
+  var x = y = 0;
+  var res = [];
+
+  for (var i = 0; i < nPoints; i++) {
+    var dx = 0,
+        dy = 0;
+    var flag = flags.readUInt8();
+    var onCurve = !(flag >> 7);
+    flag &= 0x7f;
+
+    if (flag < 10) {
+      dx = 0;
+      dy = withSign(flag, ((flag & 14) << 7) + glyphs.readUInt8());
+    } else if (flag < 20) {
+      dx = withSign(flag, ((flag - 10 & 14) << 7) + glyphs.readUInt8());
+      dy = 0;
+    } else if (flag < 84) {
+      var b0 = flag - 20;
+      var b1 = glyphs.readUInt8();
+      dx = withSign(flag, 1 + (b0 & 0x30) + (b1 >> 4));
+      dy = withSign(flag >> 1, 1 + ((b0 & 0x0c) << 2) + (b1 & 0x0f));
+    } else if (flag < 120) {
+      var b0 = flag - 84;
+      dx = withSign(flag, 1 + (b0 / 12 << 8) + glyphs.readUInt8());
+      dy = withSign(flag >> 1, 1 + (b0 % 12 >> 2 << 8) + glyphs.readUInt8());
+    } else if (flag < 124) {
+      var b1 = glyphs.readUInt8();
+      var b2 = glyphs.readUInt8();
+      dx = withSign(flag, (b1 << 4) + (b2 >> 4));
+      dy = withSign(flag >> 1, ((b2 & 0x0f) << 8) + glyphs.readUInt8());
+    } else {
+      dx = withSign(flag, glyphs.readUInt16BE());
+      dy = withSign(flag >> 1, glyphs.readUInt16BE());
+    }
+
+    x += dx;
+    y += dy;
+    res.push(new Point(onCurve, false, x, y));
+  }
+
+  return res;
+}
+
+var TTCHeader = new r.VersionedStruct(r.uint32, {
+  0x00010000: {
+    numFonts: r.uint32,
+    offsets: new r.Array(r.uint32, 'numFonts')
+  },
+  0x00020000: {
+    numFonts: r.uint32,
+    offsets: new r.Array(r.uint32, 'numFonts'),
+    dsigTag: r.uint32,
+    dsigLength: r.uint32,
+    dsigOffset: r.uint32
+  }
+});
+
+var TrueTypeCollection = function () {
+  TrueTypeCollection.probe = function probe(buffer) {
+    return buffer.toString('ascii', 0, 4) === 'ttcf';
+  };
+
+  function TrueTypeCollection(stream) {
+    _classCallCheck(this, TrueTypeCollection);
+
+    this.stream = stream;
+    if (stream.readString(4) !== 'ttcf') {
+      throw new Error('Not a TrueType collection');
+    }
+
+    this.header = TTCHeader.decode(stream);
+  }
+
+  TrueTypeCollection.prototype.getFont = function getFont(name) {
+    for (var _iterator = this.header.offsets, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var offset = _ref;
+
+      var stream = new r.DecodeStream(this.stream.buffer);
+      stream.pos = offset;
+      var font = new TTFFont(stream);
+      if (font.postscriptName === name) {
+        return font;
+      }
+    }
+
+    return null;
+  };
+
+  _createClass(TrueTypeCollection, [{
+    key: 'fonts',
+    get: function get() {
+      var fonts = [];
+      for (var _iterator2 = this.header.offsets, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var offset = _ref2;
+
+        var stream = new r.DecodeStream(this.stream.buffer);
+        stream.pos = offset;
+        fonts.push(new TTFFont(stream));
+      }
+
+      return fonts;
+    }
+  }]);
+
+  return TrueTypeCollection;
+}();
+
+var DFontName = new r.String(r.uint8);
+var DFontData = new r.Struct({
+  len: r.uint32,
+  buf: new r.Buffer('len')
+});
+
+var Ref = new r.Struct({
+  id: r.uint16,
+  nameOffset: r.int16,
+  attr: r.uint8,
+  dataOffset: r.uint24,
+  handle: r.uint32
+});
+
+var Type = new r.Struct({
+  name: new r.String(4),
+  maxTypeIndex: r.uint16,
+  refList: new r.Pointer(r.uint16, new r.Array(Ref, function (t) {
+    return t.maxTypeIndex + 1;
+  }), { type: 'parent' })
+});
+
+var TypeList = new r.Struct({
+  length: r.uint16,
+  types: new r.Array(Type, function (t) {
+    return t.length + 1;
+  })
+});
+
+var DFontMap = new r.Struct({
+  reserved: new r.Reserved(r.uint8, 24),
+  typeList: new r.Pointer(r.uint16, TypeList),
+  nameListOffset: new r.Pointer(r.uint16, 'void')
+});
+
+var DFontHeader = new r.Struct({
+  dataOffset: r.uint32,
+  map: new r.Pointer(r.uint32, DFontMap),
+  dataLength: r.uint32,
+  mapLength: r.uint32
+});
+
+var DFont = function () {
+  DFont.probe = function probe(buffer) {
+    var stream = new r.DecodeStream(buffer);
+
+    try {
+      var header = DFontHeader.decode(stream);
+    } catch (e) {
+      return false;
+    }
+
+    for (var _iterator = header.map.typeList.types, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var type = _ref;
+
+      if (type.name === 'sfnt') {
+        return true;
+      }
+    }
+
+    return false;
+  };
+
+  function DFont(stream) {
+    _classCallCheck(this, DFont);
+
+    this.stream = stream;
+    this.header = DFontHeader.decode(this.stream);
+
+    for (var _iterator2 = this.header.map.typeList.types, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var type = _ref2;
+
+      for (var _iterator3 = type.refList, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref3 = _i3.value;
+        }
+
+        var ref = _ref3;
+
+        if (ref.nameOffset >= 0) {
+          this.stream.pos = ref.nameOffset + this.header.map.nameListOffset;
+          ref.name = DFontName.decode(this.stream);
+        } else {
+          ref.name = null;
+        }
+      }
+
+      if (type.name === 'sfnt') {
+        this.sfnt = type;
+      }
+    }
+  }
+
+  DFont.prototype.getFont = function getFont(name) {
+    if (!this.sfnt) {
+      return null;
+    }
+
+    for (var _iterator4 = this.sfnt.refList, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+      var _ref4;
+
+      if (_isArray4) {
+        if (_i4 >= _iterator4.length) break;
+        _ref4 = _iterator4[_i4++];
+      } else {
+        _i4 = _iterator4.next();
+        if (_i4.done) break;
+        _ref4 = _i4.value;
+      }
+
+      var ref = _ref4;
+
+      var pos = this.header.dataOffset + ref.dataOffset + 4;
+      var stream = new r.DecodeStream(this.stream.buffer.slice(pos));
+      var font = new TTFFont(stream);
+      if (font.postscriptName === name) {
+        return font;
+      }
+    }
+
+    return null;
+  };
+
+  _createClass(DFont, [{
+    key: 'fonts',
+    get: function get() {
+      var fonts = [];
+      for (var _iterator5 = this.sfnt.refList, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
+        var _ref5;
+
+        if (_isArray5) {
+          if (_i5 >= _iterator5.length) break;
+          _ref5 = _iterator5[_i5++];
+        } else {
+          _i5 = _iterator5.next();
+          if (_i5.done) break;
+          _ref5 = _i5.value;
+        }
+
+        var ref = _ref5;
+
+        var pos = this.header.dataOffset + ref.dataOffset + 4;
+        var stream = new r.DecodeStream(this.stream.buffer.slice(pos));
+        fonts.push(new TTFFont(stream));
+      }
+
+      return fonts;
+    }
+  }]);
+
+  return DFont;
+}();
+
+// Register font formats
+fontkit.registerFormat(TTFFont);
+fontkit.registerFormat(WOFFFont);
+fontkit.registerFormat(WOFF2Font);
+fontkit.registerFormat(TrueTypeCollection);
+fontkit.registerFormat(DFont);
+
+module.exports = fontkit;
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, __webpack_require__(11)))
+
+/***/ }),
+/* 168 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var key, val, _ref, _ref1;
+
+  exports.EncodeStream = __webpack_require__(169);
+
+  exports.DecodeStream = __webpack_require__(51);
+
+  exports.Array = __webpack_require__(93);
+
+  exports.LazyArray = __webpack_require__(187);
+
+  exports.Bitfield = __webpack_require__(188);
+
+  exports.Boolean = __webpack_require__(189);
+
+  exports.Buffer = __webpack_require__(190);
+
+  exports.Enum = __webpack_require__(191);
+
+  exports.Optional = __webpack_require__(192);
+
+  exports.Reserved = __webpack_require__(193);
+
+  exports.String = __webpack_require__(194);
+
+  exports.Struct = __webpack_require__(94);
+
+  exports.VersionedStruct = __webpack_require__(195);
+
+  _ref = __webpack_require__(22);
+  for (key in _ref) {
+    val = _ref[key];
+    exports[key] = val;
+  }
+
+  _ref1 = __webpack_require__(196);
+  for (key in _ref1) {
+    val = _ref1[key];
+    exports[key] = val;
+  }
+
+}).call(this);
+
+
+/***/ }),
+/* 169 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.7.1
+(function() {
+  var DecodeStream, EncodeStream, iconv, stream,
+    __hasProp = {}.hasOwnProperty,
+    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
+
+  stream = __webpack_require__(15);
+
+  DecodeStream = __webpack_require__(51);
+
+  try {
+    iconv = __webpack_require__(52);
+  } catch (_error) {}
+
+  EncodeStream = (function(_super) {
+    var key;
+
+    __extends(EncodeStream, _super);
+
+    function EncodeStream(bufferSize) {
+      if (bufferSize == null) {
+        bufferSize = 65536;
+      }
+      EncodeStream.__super__.constructor.apply(this, arguments);
+      this.buffer = new Buffer(bufferSize);
+      this.bufferOffset = 0;
+      this.pos = 0;
+    }
+
+    for (key in Buffer.prototype) {
+      if (key.slice(0, 5) === 'write') {
+        (function(key) {
+          var bytes;
+          bytes = +DecodeStream.TYPES[key.replace(/write|[BL]E/g, '')];
+          return EncodeStream.prototype[key] = function(value) {
+            this.ensure(bytes);
+            this.buffer[key](value, this.bufferOffset);
+            this.bufferOffset += bytes;
+            return this.pos += bytes;
+          };
+        })(key);
+      }
+    }
+
+    EncodeStream.prototype._read = function() {};
+
+    EncodeStream.prototype.ensure = function(bytes) {
+      if (this.bufferOffset + bytes > this.buffer.length) {
+        return this.flush();
+      }
+    };
+
+    EncodeStream.prototype.flush = function() {
+      if (this.bufferOffset > 0) {
+        this.push(new Buffer(this.buffer.slice(0, this.bufferOffset)));
+        return this.bufferOffset = 0;
+      }
+    };
+
+    EncodeStream.prototype.writeBuffer = function(buffer) {
+      this.flush();
+      this.push(buffer);
+      return this.pos += buffer.length;
+    };
+
+    EncodeStream.prototype.writeString = function(string, encoding) {
+      var buf, byte, i, _i, _ref;
+      if (encoding == null) {
+        encoding = 'ascii';
+      }
+      switch (encoding) {
+        case 'utf16le':
+        case 'ucs2':
+        case 'utf8':
+        case 'ascii':
+          return this.writeBuffer(new Buffer(string, encoding));
+        case 'utf16be':
+          buf = new Buffer(string, 'utf16le');
+          for (i = _i = 0, _ref = buf.length - 1; _i < _ref; i = _i += 2) {
+            byte = buf[i];
+            buf[i] = buf[i + 1];
+            buf[i + 1] = byte;
+          }
+          return this.writeBuffer(buf);
+        default:
+          if (iconv) {
+            return this.writeBuffer(iconv.encode(string, encoding));
+          } else {
+            throw new Error('Install iconv-lite to enable additional string encodings.');
+          }
+      }
+    };
+
+    EncodeStream.prototype.writeUInt24BE = function(val) {
+      this.ensure(3);
+      this.buffer[this.bufferOffset++] = val >>> 16 & 0xff;
+      this.buffer[this.bufferOffset++] = val >>> 8 & 0xff;
+      this.buffer[this.bufferOffset++] = val & 0xff;
+      return this.pos += 3;
+    };
+
+    EncodeStream.prototype.writeUInt24LE = function(val) {
+      this.ensure(3);
+      this.buffer[this.bufferOffset++] = val & 0xff;
+      this.buffer[this.bufferOffset++] = val >>> 8 & 0xff;
+      this.buffer[this.bufferOffset++] = val >>> 16 & 0xff;
+      return this.pos += 3;
+    };
+
+    EncodeStream.prototype.writeInt24BE = function(val) {
+      if (val >= 0) {
+        return this.writeUInt24BE(val);
+      } else {
+        return this.writeUInt24BE(val + 0xffffff + 1);
+      }
+    };
+
+    EncodeStream.prototype.writeInt24LE = function(val) {
+      if (val >= 0) {
+        return this.writeUInt24LE(val);
+      } else {
+        return this.writeUInt24LE(val + 0xffffff + 1);
+      }
+    };
+
+    EncodeStream.prototype.fill = function(val, length) {
+      var buf;
+      if (length < this.buffer.length) {
+        this.ensure(length);
+        this.buffer.fill(val, this.bufferOffset, this.bufferOffset + length);
+        this.bufferOffset += length;
+        return this.pos += length;
+      } else {
+        buf = new Buffer(length);
+        buf.fill(val);
+        return this.writeBuffer(buf);
+      }
+    };
+
+    EncodeStream.prototype.end = function() {
+      this.flush();
+      return this.push(null);
+    };
+
+    return EncodeStream;
+
+  })(stream.Readable);
+
+  module.exports = EncodeStream;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 170 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var BOMChar = '\uFEFF';
+
+exports.PrependBOM = PrependBOMWrapper
+function PrependBOMWrapper(encoder, options) {
+    this.encoder = encoder;
+    this.addBOM = true;
+}
+
+PrependBOMWrapper.prototype.write = function(str) {
+    if (this.addBOM) {
+        str = BOMChar + str;
+        this.addBOM = false;
+    }
+
+    return this.encoder.write(str);
+}
+
+PrependBOMWrapper.prototype.end = function() {
+    return this.encoder.end();
+}
+
+
+//------------------------------------------------------------------------------
+
+exports.StripBOM = StripBOMWrapper;
+function StripBOMWrapper(decoder, options) {
+    this.decoder = decoder;
+    this.pass = false;
+    this.options = options || {};
+}
+
+StripBOMWrapper.prototype.write = function(buf) {
+    var res = this.decoder.write(buf);
+    if (this.pass || !res)
+        return res;
+
+    if (res[0] === BOMChar) {
+        res = res.slice(1);
+        if (typeof this.options.stripBOM === 'function')
+            this.options.stripBOM();
+    }
+
+    this.pass = true;
+    return res;
+}
+
+StripBOMWrapper.prototype.end = function() {
+    return this.decoder.end();
+}
+
+
+
+/***/ }),
+/* 171 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Update this array if you add/rename/remove files in this directory.
+// We support Browserify by skipping automatic module discovery and requiring modules directly.
+var modules = [
+    __webpack_require__(172),
+    __webpack_require__(173),
+    __webpack_require__(174),
+    __webpack_require__(175),
+    __webpack_require__(176),
+    __webpack_require__(177),
+    __webpack_require__(178),
+    __webpack_require__(179),
+];
+
+// Put all encoding/alias/codec definitions to single object and export it. 
+for (var i = 0; i < modules.length; i++) {
+    var module = modules[i];
+    for (var enc in module)
+        if (Object.prototype.hasOwnProperty.call(module, enc))
+            exports[enc] = module[enc];
+}
+
+
+/***/ }),
+/* 172 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// Export Node.js internal encodings.
+
+module.exports = {
+    // Encodings
+    utf8:   { type: "_internal", bomAware: true},
+    cesu8:  { type: "_internal", bomAware: true},
+    unicode11utf8: "utf8",
+
+    ucs2:   { type: "_internal", bomAware: true},
+    utf16le: "ucs2",
+
+    binary: { type: "_internal" },
+    base64: { type: "_internal" },
+    hex:    { type: "_internal" },
+
+    // Codec.
+    _internal: InternalCodec,
+};
+
+//------------------------------------------------------------------------------
+
+function InternalCodec(codecOptions, iconv) {
+    this.enc = codecOptions.encodingName;
+    this.bomAware = codecOptions.bomAware;
+
+    if (this.enc === "base64")
+        this.encoder = InternalEncoderBase64;
+    else if (this.enc === "cesu8") {
+        this.enc = "utf8"; // Use utf8 for decoding.
+        this.encoder = InternalEncoderCesu8;
+
+        // Add decoder for versions of Node not supporting CESU-8
+        if (new Buffer('eda0bdedb2a9', 'hex').toString() !== '💩') {
+            this.decoder = InternalDecoderCesu8;
+            this.defaultCharUnicode = iconv.defaultCharUnicode;
+        }
+    }
+}
+
+InternalCodec.prototype.encoder = InternalEncoder;
+InternalCodec.prototype.decoder = InternalDecoder;
+
+//------------------------------------------------------------------------------
+
+// We use node.js internal decoder. Its signature is the same as ours.
+var StringDecoder = __webpack_require__(47).StringDecoder;
+
+if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.
+    StringDecoder.prototype.end = function() {};
+
+
+function InternalDecoder(options, codec) {
+    StringDecoder.call(this, codec.enc);
+}
+
+InternalDecoder.prototype = StringDecoder.prototype;
+
+
+//------------------------------------------------------------------------------
+// Encoder is mostly trivial
+
+function InternalEncoder(options, codec) {
+    this.enc = codec.enc;
+}
+
+InternalEncoder.prototype.write = function(str) {
+    return new Buffer(str, this.enc);
+}
+
+InternalEncoder.prototype.end = function() {
+}
+
+
+//------------------------------------------------------------------------------
+// Except base64 encoder, which must keep its state.
+
+function InternalEncoderBase64(options, codec) {
+    this.prevStr = '';
+}
+
+InternalEncoderBase64.prototype.write = function(str) {
+    str = this.prevStr + str;
+    var completeQuads = str.length - (str.length % 4);
+    this.prevStr = str.slice(completeQuads);
+    str = str.slice(0, completeQuads);
+
+    return new Buffer(str, "base64");
+}
+
+InternalEncoderBase64.prototype.end = function() {
+    return new Buffer(this.prevStr, "base64");
+}
+
+
+//------------------------------------------------------------------------------
+// CESU-8 encoder is also special.
+
+function InternalEncoderCesu8(options, codec) {
+}
+
+InternalEncoderCesu8.prototype.write = function(str) {
+    var buf = new Buffer(str.length * 3), bufIdx = 0;
+    for (var i = 0; i < str.length; i++) {
+        var charCode = str.charCodeAt(i);
+        // Naive implementation, but it works because CESU-8 is especially easy
+        // to convert from UTF-16 (which all JS strings are encoded in).
+        if (charCode < 0x80)
+            buf[bufIdx++] = charCode;
+        else if (charCode < 0x800) {
+            buf[bufIdx++] = 0xC0 + (charCode >>> 6);
+            buf[bufIdx++] = 0x80 + (charCode & 0x3f);
+        }
+        else { // charCode will always be < 0x10000 in javascript.
+            buf[bufIdx++] = 0xE0 + (charCode >>> 12);
+            buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);
+            buf[bufIdx++] = 0x80 + (charCode & 0x3f);
+        }
+    }
+    return buf.slice(0, bufIdx);
+}
+
+InternalEncoderCesu8.prototype.end = function() {
+}
+
+//------------------------------------------------------------------------------
+// CESU-8 decoder is not implemented in Node v4.0+
+
+function InternalDecoderCesu8(options, codec) {
+    this.acc = 0;
+    this.contBytes = 0;
+    this.accBytes = 0;
+    this.defaultCharUnicode = codec.defaultCharUnicode;
+}
+
+InternalDecoderCesu8.prototype.write = function(buf) {
+    var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, 
+        res = '';
+    for (var i = 0; i < buf.length; i++) {
+        var curByte = buf[i];
+        if ((curByte & 0xC0) !== 0x80) { // Leading byte
+            if (contBytes > 0) { // Previous code is invalid
+                res += this.defaultCharUnicode;
+                contBytes = 0;
+            }
+
+            if (curByte < 0x80) { // Single-byte code
+                res += String.fromCharCode(curByte);
+            } else if (curByte < 0xE0) { // Two-byte code
+                acc = curByte & 0x1F;
+                contBytes = 1; accBytes = 1;
+            } else if (curByte < 0xF0) { // Three-byte code
+                acc = curByte & 0x0F;
+                contBytes = 2; accBytes = 1;
+            } else { // Four or more are not supported for CESU-8.
+                res += this.defaultCharUnicode;
+            }
+        } else { // Continuation byte
+            if (contBytes > 0) { // We're waiting for it.
+                acc = (acc << 6) | (curByte & 0x3f);
+                contBytes--; accBytes++;
+                if (contBytes === 0) {
+                    // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)
+                    if (accBytes === 2 && acc < 0x80 && acc > 0)
+                        res += this.defaultCharUnicode;
+                    else if (accBytes === 3 && acc < 0x800)
+                        res += this.defaultCharUnicode;
+                    else
+                        // Actually add character.
+                        res += String.fromCharCode(acc);
+                }
+            } else { // Unexpected continuation byte
+                res += this.defaultCharUnicode;
+            }
+        }
+    }
+    this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;
+    return res;
+}
+
+InternalDecoderCesu8.prototype.end = function() {
+    var res = 0;
+    if (this.contBytes > 0)
+        res += this.defaultCharUnicode;
+    return res;
+}
+
+
+/***/ }),
+/* 173 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js
+
+// == UTF16-BE codec. ==========================================================
+
+exports.utf16be = Utf16BECodec;
+function Utf16BECodec() {
+}
+
+Utf16BECodec.prototype.encoder = Utf16BEEncoder;
+Utf16BECodec.prototype.decoder = Utf16BEDecoder;
+Utf16BECodec.prototype.bomAware = true;
+
+
+// -- Encoding
+
+function Utf16BEEncoder() {
+}
+
+Utf16BEEncoder.prototype.write = function(str) {
+    var buf = new Buffer(str, 'ucs2');
+    for (var i = 0; i < buf.length; i += 2) {
+        var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;
+    }
+    return buf;
+}
+
+Utf16BEEncoder.prototype.end = function() {
+}
+
+
+// -- Decoding
+
+function Utf16BEDecoder() {
+    this.overflowByte = -1;
+}
+
+Utf16BEDecoder.prototype.write = function(buf) {
+    if (buf.length == 0)
+        return '';
+
+    var buf2 = new Buffer(buf.length + 1),
+        i = 0, j = 0;
+
+    if (this.overflowByte !== -1) {
+        buf2[0] = buf[0];
+        buf2[1] = this.overflowByte;
+        i = 1; j = 2;
+    }
+
+    for (; i < buf.length-1; i += 2, j+= 2) {
+        buf2[j] = buf[i+1];
+        buf2[j+1] = buf[i];
+    }
+
+    this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;
+
+    return buf2.slice(0, j).toString('ucs2');
+}
+
+Utf16BEDecoder.prototype.end = function() {
+}
+
+
+// == UTF-16 codec =============================================================
+// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.
+// Defaults to UTF-16LE, as it's prevalent and default in Node.
+// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le
+// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});
+
+// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).
+
+exports.utf16 = Utf16Codec;
+function Utf16Codec(codecOptions, iconv) {
+    this.iconv = iconv;
+}
+
+Utf16Codec.prototype.encoder = Utf16Encoder;
+Utf16Codec.prototype.decoder = Utf16Decoder;
+
+
+// -- Encoding (pass-through)
+
+function Utf16Encoder(options, codec) {
+    options = options || {};
+    if (options.addBOM === undefined)
+        options.addBOM = true;
+    this.encoder = codec.iconv.getEncoder('utf-16le', options);
+}
+
+Utf16Encoder.prototype.write = function(str) {
+    return this.encoder.write(str);
+}
+
+Utf16Encoder.prototype.end = function() {
+    return this.encoder.end();
+}
+
+
+// -- Decoding
+
+function Utf16Decoder(options, codec) {
+    this.decoder = null;
+    this.initialBytes = [];
+    this.initialBytesLen = 0;
+
+    this.options = options || {};
+    this.iconv = codec.iconv;
+}
+
+Utf16Decoder.prototype.write = function(buf) {
+    if (!this.decoder) {
+        // Codec is not chosen yet. Accumulate initial bytes.
+        this.initialBytes.push(buf);
+        this.initialBytesLen += buf.length;
+        
+        if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below)
+            return '';
+
+        // We have enough bytes -> detect endianness.
+        var buf = Buffer.concat(this.initialBytes),
+            encoding = detectEncoding(buf, this.options.defaultEncoding);
+        this.decoder = this.iconv.getDecoder(encoding, this.options);
+        this.initialBytes.length = this.initialBytesLen = 0;
+    }
+
+    return this.decoder.write(buf);
+}
+
+Utf16Decoder.prototype.end = function() {
+    if (!this.decoder) {
+        var buf = Buffer.concat(this.initialBytes),
+            encoding = detectEncoding(buf, this.options.defaultEncoding);
+        this.decoder = this.iconv.getDecoder(encoding, this.options);
+
+        var res = this.decoder.write(buf),
+            trail = this.decoder.end();
+
+        return trail ? (res + trail) : res;
+    }
+    return this.decoder.end();
+}
+
+function detectEncoding(buf, defaultEncoding) {
+    var enc = defaultEncoding || 'utf-16le';
+
+    if (buf.length >= 2) {
+        // Check BOM.
+        if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM
+            enc = 'utf-16be';
+        else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM
+            enc = 'utf-16le';
+        else {
+            // No BOM found. Try to deduce encoding from initial content.
+            // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.
+            // So, we count ASCII as if it was LE or BE, and decide from that.
+            var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions
+                _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even.
+
+            for (var i = 0; i < _len; i += 2) {
+                if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++;
+                if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++;
+            }
+
+            if (asciiCharsBE > asciiCharsLE)
+                enc = 'utf-16be';
+            else if (asciiCharsBE < asciiCharsLE)
+                enc = 'utf-16le';
+        }
+    }
+
+    return enc;
+}
+
+
+
+
+/***/ }),
+/* 174 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152
+// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3
+
+exports.utf7 = Utf7Codec;
+exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7
+function Utf7Codec(codecOptions, iconv) {
+    this.iconv = iconv;
+};
+
+Utf7Codec.prototype.encoder = Utf7Encoder;
+Utf7Codec.prototype.decoder = Utf7Decoder;
+Utf7Codec.prototype.bomAware = true;
+
+
+// -- Encoding
+
+var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;
+
+function Utf7Encoder(options, codec) {
+    this.iconv = codec.iconv;
+}
+
+Utf7Encoder.prototype.write = function(str) {
+    // Naive implementation.
+    // Non-direct chars are encoded as "+<base64>-"; single "+" char is encoded as "+-".
+    return new Buffer(str.replace(nonDirectChars, function(chunk) {
+        return "+" + (chunk === '+' ? '' : 
+            this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) 
+            + "-";
+    }.bind(this)));
+}
+
+Utf7Encoder.prototype.end = function() {
+}
+
+
+// -- Decoding
+
+function Utf7Decoder(options, codec) {
+    this.iconv = codec.iconv;
+    this.inBase64 = false;
+    this.base64Accum = '';
+}
+
+var base64Regex = /[A-Za-z0-9\/+]/;
+var base64Chars = [];
+for (var i = 0; i < 256; i++)
+    base64Chars[i] = base64Regex.test(String.fromCharCode(i));
+
+var plusChar = '+'.charCodeAt(0), 
+    minusChar = '-'.charCodeAt(0),
+    andChar = '&'.charCodeAt(0);
+
+Utf7Decoder.prototype.write = function(buf) {
+    var res = "", lastI = 0,
+        inBase64 = this.inBase64,
+        base64Accum = this.base64Accum;
+
+    // The decoder is more involved as we must handle chunks in stream.
+
+    for (var i = 0; i < buf.length; i++) {
+        if (!inBase64) { // We're in direct mode.
+            // Write direct chars until '+'
+            if (buf[i] == plusChar) {
+                res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
+                lastI = i+1;
+                inBase64 = true;
+            }
+        } else { // We decode base64.
+            if (!base64Chars[buf[i]]) { // Base64 ended.
+                if (i == lastI && buf[i] == minusChar) {// "+-" -> "+"
+                    res += "+";
+                } else {
+                    var b64str = base64Accum + buf.slice(lastI, i).toString();
+                    res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be");
+                }
+
+                if (buf[i] != minusChar) // Minus is absorbed after base64.
+                    i--;
+
+                lastI = i+1;
+                inBase64 = false;
+                base64Accum = '';
+            }
+        }
+    }
+
+    if (!inBase64) {
+        res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
+    } else {
+        var b64str = base64Accum + buf.slice(lastI).toString();
+
+        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
+        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
+        b64str = b64str.slice(0, canBeDecoded);
+
+        res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be");
+    }
+
+    this.inBase64 = inBase64;
+    this.base64Accum = base64Accum;
+
+    return res;
+}
+
+Utf7Decoder.prototype.end = function() {
+    var res = "";
+    if (this.inBase64 && this.base64Accum.length > 0)
+        res = this.iconv.decode(new Buffer(this.base64Accum, 'base64'), "utf16-be");
+
+    this.inBase64 = false;
+    this.base64Accum = '';
+    return res;
+}
+
+
+// UTF-7-IMAP codec.
+// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)
+// Differences:
+//  * Base64 part is started by "&" instead of "+"
+//  * Direct characters are 0x20-0x7E, except "&" (0x26)
+//  * In Base64, "," is used instead of "/"
+//  * Base64 must not be used to represent direct characters.
+//  * No implicit shift back from Base64 (should always end with '-')
+//  * String must end in non-shifted position.
+//  * "-&" while in base64 is not allowed.
+
+
+exports.utf7imap = Utf7IMAPCodec;
+function Utf7IMAPCodec(codecOptions, iconv) {
+    this.iconv = iconv;
+};
+
+Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;
+Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;
+Utf7IMAPCodec.prototype.bomAware = true;
+
+
+// -- Encoding
+
+function Utf7IMAPEncoder(options, codec) {
+    this.iconv = codec.iconv;
+    this.inBase64 = false;
+    this.base64Accum = new Buffer(6);
+    this.base64AccumIdx = 0;
+}
+
+Utf7IMAPEncoder.prototype.write = function(str) {
+    var inBase64 = this.inBase64,
+        base64Accum = this.base64Accum,
+        base64AccumIdx = this.base64AccumIdx,
+        buf = new Buffer(str.length*5 + 10), bufIdx = 0;
+
+    for (var i = 0; i < str.length; i++) {
+        var uChar = str.charCodeAt(i);
+        if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.
+            if (inBase64) {
+                if (base64AccumIdx > 0) {
+                    bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
+                    base64AccumIdx = 0;
+                }
+
+                buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
+                inBase64 = false;
+            }
+
+            if (!inBase64) {
+                buf[bufIdx++] = uChar; // Write direct character
+
+                if (uChar === andChar)  // Ampersand -> '&-'
+                    buf[bufIdx++] = minusChar;
+            }
+
+        } else { // Non-direct character
+            if (!inBase64) {
+                buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.
+                inBase64 = true;
+            }
+            if (inBase64) {
+                base64Accum[base64AccumIdx++] = uChar >> 8;
+                base64Accum[base64AccumIdx++] = uChar & 0xFF;
+
+                if (base64AccumIdx == base64Accum.length) {
+                    bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx);
+                    base64AccumIdx = 0;
+                }
+            }
+        }
+    }
+
+    this.inBase64 = inBase64;
+    this.base64AccumIdx = base64AccumIdx;
+
+    return buf.slice(0, bufIdx);
+}
+
+Utf7IMAPEncoder.prototype.end = function() {
+    var buf = new Buffer(10), bufIdx = 0;
+    if (this.inBase64) {
+        if (this.base64AccumIdx > 0) {
+            bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
+            this.base64AccumIdx = 0;
+        }
+
+        buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
+        this.inBase64 = false;
+    }
+
+    return buf.slice(0, bufIdx);
+}
+
+
+// -- Decoding
+
+function Utf7IMAPDecoder(options, codec) {
+    this.iconv = codec.iconv;
+    this.inBase64 = false;
+    this.base64Accum = '';
+}
+
+var base64IMAPChars = base64Chars.slice();
+base64IMAPChars[','.charCodeAt(0)] = true;
+
+Utf7IMAPDecoder.prototype.write = function(buf) {
+    var res = "", lastI = 0,
+        inBase64 = this.inBase64,
+        base64Accum = this.base64Accum;
+
+    // The decoder is more involved as we must handle chunks in stream.
+    // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).
+
+    for (var i = 0; i < buf.length; i++) {
+        if (!inBase64) { // We're in direct mode.
+            // Write direct chars until '&'
+            if (buf[i] == andChar) {
+                res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
+                lastI = i+1;
+                inBase64 = true;
+            }
+        } else { // We decode base64.
+            if (!base64IMAPChars[buf[i]]) { // Base64 ended.
+                if (i == lastI && buf[i] == minusChar) { // "&-" -> "&"
+                    res += "&";
+                } else {
+                    var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/');
+                    res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be");
+                }
+
+                if (buf[i] != minusChar) // Minus may be absorbed after base64.
+                    i--;
+
+                lastI = i+1;
+                inBase64 = false;
+                base64Accum = '';
+            }
+        }
+    }
+
+    if (!inBase64) {
+        res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
+    } else {
+        var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/');
+
+        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
+        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
+        b64str = b64str.slice(0, canBeDecoded);
+
+        res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be");
+    }
+
+    this.inBase64 = inBase64;
+    this.base64Accum = base64Accum;
+
+    return res;
+}
+
+Utf7IMAPDecoder.prototype.end = function() {
+    var res = "";
+    if (this.inBase64 && this.base64Accum.length > 0)
+        res = this.iconv.decode(new Buffer(this.base64Accum, 'base64'), "utf16-be");
+
+    this.inBase64 = false;
+    this.base64Accum = '';
+    return res;
+}
+
+
+
+
+/***/ }),
+/* 175 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that
+// correspond to encoded bytes (if 128 - then lower half is ASCII). 
+
+exports._sbcs = SBCSCodec;
+function SBCSCodec(codecOptions, iconv) {
+    if (!codecOptions)
+        throw new Error("SBCS codec is called without the data.")
+    
+    // Prepare char buffer for decoding.
+    if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))
+        throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)");
+    
+    if (codecOptions.chars.length === 128) {
+        var asciiString = "";
+        for (var i = 0; i < 128; i++)
+            asciiString += String.fromCharCode(i);
+        codecOptions.chars = asciiString + codecOptions.chars;
+    }
+
+    this.decodeBuf = new Buffer(codecOptions.chars, 'ucs2');
+    
+    // Encoding buffer.
+    var encodeBuf = new Buffer(65536);
+    encodeBuf.fill(iconv.defaultCharSingleByte.charCodeAt(0));
+
+    for (var i = 0; i < codecOptions.chars.length; i++)
+        encodeBuf[codecOptions.chars.charCodeAt(i)] = i;
+
+    this.encodeBuf = encodeBuf;
+}
+
+SBCSCodec.prototype.encoder = SBCSEncoder;
+SBCSCodec.prototype.decoder = SBCSDecoder;
+
+
+function SBCSEncoder(options, codec) {
+    this.encodeBuf = codec.encodeBuf;
+}
+
+SBCSEncoder.prototype.write = function(str) {
+    var buf = new Buffer(str.length);
+    for (var i = 0; i < str.length; i++)
+        buf[i] = this.encodeBuf[str.charCodeAt(i)];
+    
+    return buf;
+}
+
+SBCSEncoder.prototype.end = function() {
+}
+
+
+function SBCSDecoder(options, codec) {
+    this.decodeBuf = codec.decodeBuf;
+}
+
+SBCSDecoder.prototype.write = function(buf) {
+    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.
+    var decodeBuf = this.decodeBuf;
+    var newBuf = new Buffer(buf.length*2);
+    var idx1 = 0, idx2 = 0;
+    for (var i = 0; i < buf.length; i++) {
+        idx1 = buf[i]*2; idx2 = i*2;
+        newBuf[idx2] = decodeBuf[idx1];
+        newBuf[idx2+1] = decodeBuf[idx1+1];
+    }
+    return newBuf.toString('ucs2');
+}
+
+SBCSDecoder.prototype.end = function() {
+}
+
+
+/***/ }),
+/* 176 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Manually added data to be used by sbcs codec in addition to generated one.
+
+module.exports = {
+    // Not supported by iconv, not sure why.
+    "10029": "maccenteuro",
+    "maccenteuro": {
+        "type": "_sbcs",
+        "chars": "ÄĀāÉĄÖÜáąČäčĆćéŹźĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņŃ¬√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"
+    },
+
+    "808": "cp808",
+    "ibm808": "cp808",
+    "cp808": {
+        "type": "_sbcs",
+        "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "
+    },
+
+    // Aliases of generated encodings.
+    "ascii8bit": "ascii",
+    "usascii": "ascii",
+    "ansix34": "ascii",
+    "ansix341968": "ascii",
+    "ansix341986": "ascii",
+    "csascii": "ascii",
+    "cp367": "ascii",
+    "ibm367": "ascii",
+    "isoir6": "ascii",
+    "iso646us": "ascii",
+    "iso646irv": "ascii",
+    "us": "ascii",
+
+    "latin1": "iso88591",
+    "latin2": "iso88592",
+    "latin3": "iso88593",
+    "latin4": "iso88594",
+    "latin5": "iso88599",
+    "latin6": "iso885910",
+    "latin7": "iso885913",
+    "latin8": "iso885914",
+    "latin9": "iso885915",
+    "latin10": "iso885916",
+
+    "csisolatin1": "iso88591",
+    "csisolatin2": "iso88592",
+    "csisolatin3": "iso88593",
+    "csisolatin4": "iso88594",
+    "csisolatincyrillic": "iso88595",
+    "csisolatinarabic": "iso88596",
+    "csisolatingreek" : "iso88597",
+    "csisolatinhebrew": "iso88598",
+    "csisolatin5": "iso88599",
+    "csisolatin6": "iso885910",
+
+    "l1": "iso88591",
+    "l2": "iso88592",
+    "l3": "iso88593",
+    "l4": "iso88594",
+    "l5": "iso88599",
+    "l6": "iso885910",
+    "l7": "iso885913",
+    "l8": "iso885914",
+    "l9": "iso885915",
+    "l10": "iso885916",
+
+    "isoir14": "iso646jp",
+    "isoir57": "iso646cn",
+    "isoir100": "iso88591",
+    "isoir101": "iso88592",
+    "isoir109": "iso88593",
+    "isoir110": "iso88594",
+    "isoir144": "iso88595",
+    "isoir127": "iso88596",
+    "isoir126": "iso88597",
+    "isoir138": "iso88598",
+    "isoir148": "iso88599",
+    "isoir157": "iso885910",
+    "isoir166": "tis620",
+    "isoir179": "iso885913",
+    "isoir199": "iso885914",
+    "isoir203": "iso885915",
+    "isoir226": "iso885916",
+
+    "cp819": "iso88591",
+    "ibm819": "iso88591",
+
+    "cyrillic": "iso88595",
+
+    "arabic": "iso88596",
+    "arabic8": "iso88596",
+    "ecma114": "iso88596",
+    "asmo708": "iso88596",
+
+    "greek" : "iso88597",
+    "greek8" : "iso88597",
+    "ecma118" : "iso88597",
+    "elot928" : "iso88597",
+
+    "hebrew": "iso88598",
+    "hebrew8": "iso88598",
+
+    "turkish": "iso88599",
+    "turkish8": "iso88599",
+
+    "thai": "iso885911",
+    "thai8": "iso885911",
+
+    "celtic": "iso885914",
+    "celtic8": "iso885914",
+    "isoceltic": "iso885914",
+
+    "tis6200": "tis620",
+    "tis62025291": "tis620",
+    "tis62025330": "tis620",
+
+    "10000": "macroman",
+    "10006": "macgreek",
+    "10007": "maccyrillic",
+    "10079": "maciceland",
+    "10081": "macturkish",
+
+    "cspc8codepage437": "cp437",
+    "cspc775baltic": "cp775",
+    "cspc850multilingual": "cp850",
+    "cspcp852": "cp852",
+    "cspc862latinhebrew": "cp862",
+    "cpgr": "cp869",
+
+    "msee": "cp1250",
+    "mscyrl": "cp1251",
+    "msansi": "cp1252",
+    "msgreek": "cp1253",
+    "msturk": "cp1254",
+    "mshebr": "cp1255",
+    "msarab": "cp1256",
+    "winbaltrim": "cp1257",
+
+    "cp20866": "koi8r",
+    "20866": "koi8r",
+    "ibm878": "koi8r",
+    "cskoi8r": "koi8r",
+
+    "cp21866": "koi8u",
+    "21866": "koi8u",
+    "ibm1168": "koi8u",
+
+    "strk10482002": "rk1048",
+
+    "tcvn5712": "tcvn",
+    "tcvn57121": "tcvn",
+
+    "gb198880": "iso646cn",
+    "cn": "iso646cn",
+
+    "csiso14jisc6220ro": "iso646jp",
+    "jisc62201969ro": "iso646jp",
+    "jp": "iso646jp",
+
+    "cshproman8": "hproman8",
+    "r8": "hproman8",
+    "roman8": "hproman8",
+    "xroman8": "hproman8",
+    "ibm1051": "hproman8",
+
+    "mac": "macintosh",
+    "csmacintosh": "macintosh",
+};
+
+
+
+/***/ }),
+/* 177 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.
+module.exports = {
+  "437": "cp437",
+  "737": "cp737",
+  "775": "cp775",
+  "850": "cp850",
+  "852": "cp852",
+  "855": "cp855",
+  "856": "cp856",
+  "857": "cp857",
+  "858": "cp858",
+  "860": "cp860",
+  "861": "cp861",
+  "862": "cp862",
+  "863": "cp863",
+  "864": "cp864",
+  "865": "cp865",
+  "866": "cp866",
+  "869": "cp869",
+  "874": "windows874",
+  "922": "cp922",
+  "1046": "cp1046",
+  "1124": "cp1124",
+  "1125": "cp1125",
+  "1129": "cp1129",
+  "1133": "cp1133",
+  "1161": "cp1161",
+  "1162": "cp1162",
+  "1163": "cp1163",
+  "1250": "windows1250",
+  "1251": "windows1251",
+  "1252": "windows1252",
+  "1253": "windows1253",
+  "1254": "windows1254",
+  "1255": "windows1255",
+  "1256": "windows1256",
+  "1257": "windows1257",
+  "1258": "windows1258",
+  "28591": "iso88591",
+  "28592": "iso88592",
+  "28593": "iso88593",
+  "28594": "iso88594",
+  "28595": "iso88595",
+  "28596": "iso88596",
+  "28597": "iso88597",
+  "28598": "iso88598",
+  "28599": "iso88599",
+  "28600": "iso885910",
+  "28601": "iso885911",
+  "28603": "iso885913",
+  "28604": "iso885914",
+  "28605": "iso885915",
+  "28606": "iso885916",
+  "windows874": {
+    "type": "_sbcs",
+    "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
+  },
+  "win874": "windows874",
+  "cp874": "windows874",
+  "windows1250": {
+    "type": "_sbcs",
+    "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
+  },
+  "win1250": "windows1250",
+  "cp1250": "windows1250",
+  "windows1251": {
+    "type": "_sbcs",
+    "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
+  },
+  "win1251": "windows1251",
+  "cp1251": "windows1251",
+  "windows1252": {
+    "type": "_sbcs",
+    "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
+  },
+  "win1252": "windows1252",
+  "cp1252": "windows1252",
+  "windows1253": {
+    "type": "_sbcs",
+    "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
+  },
+  "win1253": "windows1253",
+  "cp1253": "windows1253",
+  "windows1254": {
+    "type": "_sbcs",
+    "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
+  },
+  "win1254": "windows1254",
+  "cp1254": "windows1254",
+  "windows1255": {
+    "type": "_sbcs",
+    "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
+  },
+  "win1255": "windows1255",
+  "cp1255": "windows1255",
+  "windows1256": {
+    "type": "_sbcs",
+    "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"
+  },
+  "win1256": "windows1256",
+  "cp1256": "windows1256",
+  "windows1257": {
+    "type": "_sbcs",
+    "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"
+  },
+  "win1257": "windows1257",
+  "cp1257": "windows1257",
+  "windows1258": {
+    "type": "_sbcs",
+    "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
+  },
+  "win1258": "windows1258",
+  "cp1258": "windows1258",
+  "iso88591": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
+  },
+  "cp28591": "iso88591",
+  "iso88592": {
+    "type": "_sbcs",
+    "chars": "
+ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
+  },
+  "cp28592": "iso88592",
+  "iso88593": {
+    "type": "_sbcs",
+    "chars": "
+ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"
+  },
+  "cp28593": "iso88593",
+  "iso88594": {
+    "type": "_sbcs",
+    "chars": "
+ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"
+  },
+  "cp28594": "iso88594",
+  "iso88595": {
+    "type": "_sbcs",
+    "chars": "
+ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"
+  },
+  "cp28595": "iso88595",
+  "iso88596": {
+    "type": "_sbcs",
+    "chars": "
+ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"
+  },
+  "cp28596": "iso88596",
+  "iso88597": {
+    "type": "_sbcs",
+    "chars": "
+ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
+  },
+  "cp28597": "iso88597",
+  "iso88598": {
+    "type": "_sbcs",
+    "chars": "
+ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
+  },
+  "cp28598": "iso88598",
+  "iso88599": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
+  },
+  "cp28599": "iso88599",
+  "iso885910": {
+    "type": "_sbcs",
+    "chars": "
+ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"
+  },
+  "cp28600": "iso885910",
+  "iso885911": {
+    "type": "_sbcs",
+    "chars": "
+ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
+  },
+  "cp28601": "iso885911",
+  "iso885913": {
+    "type": "_sbcs",
+    "chars": "
+ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"
+  },
+  "cp28603": "iso885913",
+  "iso885914": {
+    "type": "_sbcs",
+    "chars": "
+ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"
+  },
+  "cp28604": "iso885914",
+  "iso885915": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
+  },
+  "cp28605": "iso885915",
+  "iso885916": {
+    "type": "_sbcs",
+    "chars": "
+ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"
+  },
+  "cp28606": "iso885916",
+  "cp437": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm437": "cp437",
+  "csibm437": "cp437",
+  "cp737": {
+    "type": "_sbcs",
+    "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "
+  },
+  "ibm737": "cp737",
+  "csibm737": "cp737",
+  "cp775": {
+    "type": "_sbcs",
+    "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ "
+  },
+  "ibm775": "cp775",
+  "csibm775": "cp775",
+  "cp850": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "
+  },
+  "ibm850": "cp850",
+  "csibm850": "cp850",
+  "cp852": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘę¬źČş«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ "
+  },
+  "ibm852": "cp852",
+  "csibm852": "cp852",
+  "cp855": {
+    "type": "_sbcs",
+    "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ "
+  },
+  "ibm855": "cp855",
+  "csibm855": "cp855",
+  "cp856": {
+    "type": "_sbcs",
+    "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ "
+  },
+  "ibm856": "cp856",
+  "csibm856": "cp856",
+  "cp857": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞğ¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ "
+  },
+  "ibm857": "cp857",
+  "csibm857": "cp857",
+  "cp858": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "
+  },
+  "ibm858": "cp858",
+  "csibm858": "cp858",
+  "cp860": {
+    "type": "_sbcs",
+    "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñÑªº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm860": "cp860",
+  "csibm860": "cp860",
+  "cp861": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm861": "cp861",
+  "csibm861": "cp861",
+  "cp862": {
+    "type": "_sbcs",
+    "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm862": "cp862",
+  "csibm862": "cp862",
+  "cp863": {
+    "type": "_sbcs",
+    "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm863": "cp863",
+  "csibm863": "cp863",
+  "cp864": {
+    "type": "_sbcs",
+    "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"
+  },
+  "ibm864": "cp864",
+  "csibm864": "cp864",
+  "cp865": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñÑªº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm865": "cp865",
+  "csibm865": "cp865",
+  "cp866": {
+    "type": "_sbcs",
+    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "
+  },
+  "ibm866": "cp866",
+  "csibm866": "cp866",
+  "cp869": {
+    "type": "_sbcs",
+    "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "
+  },
+  "ibm869": "cp869",
+  "csibm869": "cp869",
+  "cp922": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"
+  },
+  "ibm922": "cp922",
+  "csibm922": "cp922",
+  "cp1046": {
+    "type": "_sbcs",
+    "chars": "ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"
+  },
+  "ibm1046": "cp1046",
+  "csibm1046": "cp1046",
+  "cp1124": {
+    "type": "_sbcs",
+    "chars": "
+ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"
+  },
+  "ibm1124": "cp1124",
+  "csibm1124": "cp1124",
+  "cp1125": {
+    "type": "_sbcs",
+    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "
+  },
+  "ibm1125": "cp1125",
+  "csibm1125": "cp1125",
+  "cp1129": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
+  },
+  "ibm1129": "cp1129",
+  "csibm1129": "cp1129",
+  "cp1133": {
+    "type": "_sbcs",
+    "chars": "
+ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"
+  },
+  "ibm1133": "cp1133",
+  "csibm1133": "cp1133",
+  "cp1161": {
+    "type": "_sbcs",
+    "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "
+  },
+  "ibm1161": "cp1161",
+  "csibm1161": "cp1161",
+  "cp1162": {
+    "type": "_sbcs",
+    "chars": "€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
+  },
+  "ibm1162": "cp1162",
+  "csibm1162": "cp1162",
+  "cp1163": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
+  },
+  "ibm1163": "cp1163",
+  "csibm1163": "cp1163",
+  "maccroatian": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"
+  },
+  "maccyrillic": {
+    "type": "_sbcs",
+    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
+  },
+  "macgreek": {
+    "type": "_sbcs",
+    "chars": "Ä¹²É³ÖÜ΅àâä΄¨çéèêë£™îï•½‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"
+  },
+  "maciceland": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
+  },
+  "macroman": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
+  },
+  "macromania": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
+  },
+  "macthai": {
+    "type": "_sbcs",
+    "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู﻿​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"
+  },
+  "macturkish": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"
+  },
+  "macukraine": {
+    "type": "_sbcs",
+    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
+  },
+  "koi8r": {
+    "type": "_sbcs",
+    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
+  },
+  "koi8u": {
+    "type": "_sbcs",
+    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
+  },
+  "koi8ru": {
+    "type": "_sbcs",
+    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
+  },
+  "koi8t": {
+    "type": "_sbcs",
+    "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
+  },
+  "armscii8": {
+    "type": "_sbcs",
+    "chars": "
+ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"
+  },
+  "rk1048": {
+    "type": "_sbcs",
+    "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
+  },
+  "tcvn": {
+    "type": "_sbcs",
+    "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"
+  },
+  "georgianacademy": {
+    "type": "_sbcs",
+    "chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
+  },
+  "georgianps": {
+    "type": "_sbcs",
+    "chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
+  },
+  "pt154": {
+    "type": "_sbcs",
+    "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
+  },
+  "viscii": {
+    "type": "_sbcs",
+    "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"
+  },
+  "iso646cn": {
+    "type": "_sbcs",
+    "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
+  },
+  "iso646jp": {
+    "type": "_sbcs",
+    "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
+  },
+  "hproman8": {
+    "type": "_sbcs",
+    "chars": "
+ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"
+  },
+  "macintosh": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
+  },
+  "ascii": {
+    "type": "_sbcs",
+    "chars": "��������������������������������������������������������������������������������������������������������������������������������"
+  },
+  "tis620": {
+    "type": "_sbcs",
+    "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
+  }
+}
+
+/***/ }),
+/* 178 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.
+// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.
+// To save memory and loading time, we read table files only when requested.
+
+exports._dbcs = DBCSCodec;
+
+var UNASSIGNED = -1,
+    GB18030_CODE = -2,
+    SEQ_START  = -10,
+    NODE_START = -1000,
+    UNASSIGNED_NODE = new Array(0x100),
+    DEF_CHAR = -1;
+
+for (var i = 0; i < 0x100; i++)
+    UNASSIGNED_NODE[i] = UNASSIGNED;
+
+
+// Class DBCSCodec reads and initializes mapping tables.
+function DBCSCodec(codecOptions, iconv) {
+    this.encodingName = codecOptions.encodingName;
+    if (!codecOptions)
+        throw new Error("DBCS codec is called without the data.")
+    if (!codecOptions.table)
+        throw new Error("Encoding '" + this.encodingName + "' has no data.");
+
+    // Load tables.
+    var mappingTable = codecOptions.table();
+
+
+    // Decode tables: MBCS -> Unicode.
+
+    // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.
+    // Trie root is decodeTables[0].
+    // Values: >=  0 -> unicode character code. can be > 0xFFFF
+    //         == UNASSIGNED -> unknown/unassigned sequence.
+    //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.
+    //         <= NODE_START -> index of the next node in our trie to process next byte.
+    //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.
+    this.decodeTables = [];
+    this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.
+
+    // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. 
+    this.decodeTableSeq = [];
+
+    // Actual mapping tables consist of chunks. Use them to fill up decode tables.
+    for (var i = 0; i < mappingTable.length; i++)
+        this._addDecodeChunk(mappingTable[i]);
+
+    this.defaultCharUnicode = iconv.defaultCharUnicode;
+
+    
+    // Encode tables: Unicode -> DBCS.
+
+    // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.
+    // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.
+    // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).
+    //         == UNASSIGNED -> no conversion found. Output a default char.
+    //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.
+    this.encodeTable = [];
+    
+    // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of
+    // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key
+    // means end of sequence (needed when one sequence is a strict subsequence of another).
+    // Objects are kept separately from encodeTable to increase performance.
+    this.encodeTableSeq = [];
+
+    // Some chars can be decoded, but need not be encoded.
+    var skipEncodeChars = {};
+    if (codecOptions.encodeSkipVals)
+        for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {
+            var val = codecOptions.encodeSkipVals[i];
+            if (typeof val === 'number')
+                skipEncodeChars[val] = true;
+            else
+                for (var j = val.from; j <= val.to; j++)
+                    skipEncodeChars[j] = true;
+        }
+        
+    // Use decode trie to recursively fill out encode tables.
+    this._fillEncodeTable(0, 0, skipEncodeChars);
+
+    // Add more encoding pairs when needed.
+    if (codecOptions.encodeAdd) {
+        for (var uChar in codecOptions.encodeAdd)
+            if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))
+                this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);
+    }
+
+    this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];
+    if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];
+    if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0);
+
+
+    // Load & create GB18030 tables when needed.
+    if (typeof codecOptions.gb18030 === 'function') {
+        this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.
+
+        // Add GB18030 decode tables.
+        var thirdByteNodeIdx = this.decodeTables.length;
+        var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);
+
+        var fourthByteNodeIdx = this.decodeTables.length;
+        var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);
+
+        for (var i = 0x81; i <= 0xFE; i++) {
+            var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];
+            var secondByteNode = this.decodeTables[secondByteNodeIdx];
+            for (var j = 0x30; j <= 0x39; j++)
+                secondByteNode[j] = NODE_START - thirdByteNodeIdx;
+        }
+        for (var i = 0x81; i <= 0xFE; i++)
+            thirdByteNode[i] = NODE_START - fourthByteNodeIdx;
+        for (var i = 0x30; i <= 0x39; i++)
+            fourthByteNode[i] = GB18030_CODE
+    }        
+}
+
+DBCSCodec.prototype.encoder = DBCSEncoder;
+DBCSCodec.prototype.decoder = DBCSDecoder;
+
+// Decoder helpers
+DBCSCodec.prototype._getDecodeTrieNode = function(addr) {
+    var bytes = [];
+    for (; addr > 0; addr >>= 8)
+        bytes.push(addr & 0xFF);
+    if (bytes.length == 0)
+        bytes.push(0);
+
+    var node = this.decodeTables[0];
+    for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.
+        var val = node[bytes[i]];
+
+        if (val == UNASSIGNED) { // Create new node.
+            node[bytes[i]] = NODE_START - this.decodeTables.length;
+            this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));
+        }
+        else if (val <= NODE_START) { // Existing node.
+            node = this.decodeTables[NODE_START - val];
+        }
+        else
+            throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));
+    }
+    return node;
+}
+
+
+DBCSCodec.prototype._addDecodeChunk = function(chunk) {
+    // First element of chunk is the hex mbcs code where we start.
+    var curAddr = parseInt(chunk[0], 16);
+
+    // Choose the decoding node where we'll write our chars.
+    var writeTable = this._getDecodeTrieNode(curAddr);
+    curAddr = curAddr & 0xFF;
+
+    // Write all other elements of the chunk to the table.
+    for (var k = 1; k < chunk.length; k++) {
+        var part = chunk[k];
+        if (typeof part === "string") { // String, write as-is.
+            for (var l = 0; l < part.length;) {
+                var code = part.charCodeAt(l++);
+                if (0xD800 <= code && code < 0xDC00) { // Decode surrogate
+                    var codeTrail = part.charCodeAt(l++);
+                    if (0xDC00 <= codeTrail && codeTrail < 0xE000)
+                        writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);
+                    else
+                        throw new Error("Incorrect surrogate pair in "  + this.encodingName + " at chunk " + chunk[0]);
+                }
+                else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)
+                    var len = 0xFFF - code + 2;
+                    var seq = [];
+                    for (var m = 0; m < len; m++)
+                        seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.
+
+                    writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;
+                    this.decodeTableSeq.push(seq);
+                }
+                else
+                    writeTable[curAddr++] = code; // Basic char
+            }
+        } 
+        else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character.
+            var charCode = writeTable[curAddr - 1] + 1;
+            for (var l = 0; l < part; l++)
+                writeTable[curAddr++] = charCode++;
+        }
+        else
+            throw new Error("Incorrect type '" + typeof part + "' given in "  + this.encodingName + " at chunk " + chunk[0]);
+    }
+    if (curAddr > 0xFF)
+        throw new Error("Incorrect chunk in "  + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);
+}
+
+// Encoder helpers
+DBCSCodec.prototype._getEncodeBucket = function(uCode) {
+    var high = uCode >> 8; // This could be > 0xFF because of astral characters.
+    if (this.encodeTable[high] === undefined)
+        this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.
+    return this.encodeTable[high];
+}
+
+DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {
+    var bucket = this._getEncodeBucket(uCode);
+    var low = uCode & 0xFF;
+    if (bucket[low] <= SEQ_START)
+        this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.
+    else if (bucket[low] == UNASSIGNED)
+        bucket[low] = dbcsCode;
+}
+
+DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {
+    
+    // Get the root of character tree according to first character of the sequence.
+    var uCode = seq[0];
+    var bucket = this._getEncodeBucket(uCode);
+    var low = uCode & 0xFF;
+
+    var node;
+    if (bucket[low] <= SEQ_START) {
+        // There's already a sequence with  - use it.
+        node = this.encodeTableSeq[SEQ_START-bucket[low]];
+    }
+    else {
+        // There was no sequence object - allocate a new one.
+        node = {};
+        if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.
+        bucket[low] = SEQ_START - this.encodeTableSeq.length;
+        this.encodeTableSeq.push(node);
+    }
+
+    // Traverse the character tree, allocating new nodes as needed.
+    for (var j = 1; j < seq.length-1; j++) {
+        var oldVal = node[uCode];
+        if (typeof oldVal === 'object')
+            node = oldVal;
+        else {
+            node = node[uCode] = {}
+            if (oldVal !== undefined)
+                node[DEF_CHAR] = oldVal
+        }
+    }
+
+    // Set the leaf to given dbcsCode.
+    uCode = seq[seq.length-1];
+    node[uCode] = dbcsCode;
+}
+
+DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {
+    var node = this.decodeTables[nodeIdx];
+    for (var i = 0; i < 0x100; i++) {
+        var uCode = node[i];
+        var mbCode = prefix + i;
+        if (skipEncodeChars[mbCode])
+            continue;
+
+        if (uCode >= 0)
+            this._setEncodeChar(uCode, mbCode);
+        else if (uCode <= NODE_START)
+            this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);
+        else if (uCode <= SEQ_START)
+            this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);
+    }
+}
+
+
+
+// == Encoder ==================================================================
+
+function DBCSEncoder(options, codec) {
+    // Encoder state
+    this.leadSurrogate = -1;
+    this.seqObj = undefined;
+    
+    // Static data
+    this.encodeTable = codec.encodeTable;
+    this.encodeTableSeq = codec.encodeTableSeq;
+    this.defaultCharSingleByte = codec.defCharSB;
+    this.gb18030 = codec.gb18030;
+}
+
+DBCSEncoder.prototype.write = function(str) {
+    var newBuf = new Buffer(str.length * (this.gb18030 ? 4 : 3)), 
+        leadSurrogate = this.leadSurrogate,
+        seqObj = this.seqObj, nextChar = -1,
+        i = 0, j = 0;
+
+    while (true) {
+        // 0. Get next character.
+        if (nextChar === -1) {
+            if (i == str.length) break;
+            var uCode = str.charCodeAt(i++);
+        }
+        else {
+            var uCode = nextChar;
+            nextChar = -1;    
+        }
+
+        // 1. Handle surrogates.
+        if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.
+            if (uCode < 0xDC00) { // We've got lead surrogate.
+                if (leadSurrogate === -1) {
+                    leadSurrogate = uCode;
+                    continue;
+                } else {
+                    leadSurrogate = uCode;
+                    // Double lead surrogate found.
+                    uCode = UNASSIGNED;
+                }
+            } else { // We've got trail surrogate.
+                if (leadSurrogate !== -1) {
+                    uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);
+                    leadSurrogate = -1;
+                } else {
+                    // Incomplete surrogate pair - only trail surrogate found.
+                    uCode = UNASSIGNED;
+                }
+                
+            }
+        }
+        else if (leadSurrogate !== -1) {
+            // Incomplete surrogate pair - only lead surrogate found.
+            nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.
+            leadSurrogate = -1;
+        }
+
+        // 2. Convert uCode character.
+        var dbcsCode = UNASSIGNED;
+        if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence
+            var resCode = seqObj[uCode];
+            if (typeof resCode === 'object') { // Sequence continues.
+                seqObj = resCode;
+                continue;
+
+            } else if (typeof resCode == 'number') { // Sequence finished. Write it.
+                dbcsCode = resCode;
+
+            } else if (resCode == undefined) { // Current character is not part of the sequence.
+
+                // Try default character for this sequence
+                resCode = seqObj[DEF_CHAR];
+                if (resCode !== undefined) {
+                    dbcsCode = resCode; // Found. Write it.
+                    nextChar = uCode; // Current character will be written too in the next iteration.
+
+                } else {
+                    // TODO: What if we have no default? (resCode == undefined)
+                    // Then, we should write first char of the sequence as-is and try the rest recursively.
+                    // Didn't do it for now because no encoding has this situation yet.
+                    // Currently, just skip the sequence and write current char.
+                }
+            }
+            seqObj = undefined;
+        }
+        else if (uCode >= 0) {  // Regular character
+            var subtable = this.encodeTable[uCode >> 8];
+            if (subtable !== undefined)
+                dbcsCode = subtable[uCode & 0xFF];
+            
+            if (dbcsCode <= SEQ_START) { // Sequence start
+                seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];
+                continue;
+            }
+
+            if (dbcsCode == UNASSIGNED && this.gb18030) {
+                // Use GB18030 algorithm to find character(s) to write.
+                var idx = findIdx(this.gb18030.uChars, uCode);
+                if (idx != -1) {
+                    var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);
+                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;
+                    newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;
+                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;
+                    newBuf[j++] = 0x30 + dbcsCode;
+                    continue;
+                }
+            }
+        }
+
+        // 3. Write dbcsCode character.
+        if (dbcsCode === UNASSIGNED)
+            dbcsCode = this.defaultCharSingleByte;
+        
+        if (dbcsCode < 0x100) {
+            newBuf[j++] = dbcsCode;
+        }
+        else if (dbcsCode < 0x10000) {
+            newBuf[j++] = dbcsCode >> 8;   // high byte
+            newBuf[j++] = dbcsCode & 0xFF; // low byte
+        }
+        else {
+            newBuf[j++] = dbcsCode >> 16;
+            newBuf[j++] = (dbcsCode >> 8) & 0xFF;
+            newBuf[j++] = dbcsCode & 0xFF;
+        }
+    }
+
+    this.seqObj = seqObj;
+    this.leadSurrogate = leadSurrogate;
+    return newBuf.slice(0, j);
+}
+
+DBCSEncoder.prototype.end = function() {
+    if (this.leadSurrogate === -1 && this.seqObj === undefined)
+        return; // All clean. Most often case.
+
+    var newBuf = new Buffer(10), j = 0;
+
+    if (this.seqObj) { // We're in the sequence.
+        var dbcsCode = this.seqObj[DEF_CHAR];
+        if (dbcsCode !== undefined) { // Write beginning of the sequence.
+            if (dbcsCode < 0x100) {
+                newBuf[j++] = dbcsCode;
+            }
+            else {
+                newBuf[j++] = dbcsCode >> 8;   // high byte
+                newBuf[j++] = dbcsCode & 0xFF; // low byte
+            }
+        } else {
+            // See todo above.
+        }
+        this.seqObj = undefined;
+    }
+
+    if (this.leadSurrogate !== -1) {
+        // Incomplete surrogate pair - only lead surrogate found.
+        newBuf[j++] = this.defaultCharSingleByte;
+        this.leadSurrogate = -1;
+    }
+    
+    return newBuf.slice(0, j);
+}
+
+// Export for testing
+DBCSEncoder.prototype.findIdx = findIdx;
+
+
+// == Decoder ==================================================================
+
+function DBCSDecoder(options, codec) {
+    // Decoder state
+    this.nodeIdx = 0;
+    this.prevBuf = new Buffer(0);
+
+    // Static data
+    this.decodeTables = codec.decodeTables;
+    this.decodeTableSeq = codec.decodeTableSeq;
+    this.defaultCharUnicode = codec.defaultCharUnicode;
+    this.gb18030 = codec.gb18030;
+}
+
+DBCSDecoder.prototype.write = function(buf) {
+    var newBuf = new Buffer(buf.length*2),
+        nodeIdx = this.nodeIdx, 
+        prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,
+        seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.
+        uCode;
+
+    if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.
+        prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);
+    
+    for (var i = 0, j = 0; i < buf.length; i++) {
+        var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];
+
+        // Lookup in current trie node.
+        var uCode = this.decodeTables[nodeIdx][curByte];
+
+        if (uCode >= 0) { 
+            // Normal character, just use it.
+        }
+        else if (uCode === UNASSIGNED) { // Unknown char.
+            // TODO: Callback with seq.
+            //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);
+            i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle).
+            uCode = this.defaultCharUnicode.charCodeAt(0);
+        }
+        else if (uCode === GB18030_CODE) {
+            var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);
+            var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);
+            var idx = findIdx(this.gb18030.gbChars, ptr);
+            uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];
+        }
+        else if (uCode <= NODE_START) { // Go to next trie node.
+            nodeIdx = NODE_START - uCode;
+            continue;
+        }
+        else if (uCode <= SEQ_START) { // Output a sequence of chars.
+            var seq = this.decodeTableSeq[SEQ_START - uCode];
+            for (var k = 0; k < seq.length - 1; k++) {
+                uCode = seq[k];
+                newBuf[j++] = uCode & 0xFF;
+                newBuf[j++] = uCode >> 8;
+            }
+            uCode = seq[seq.length-1];
+        }
+        else
+            throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);
+
+        // Write the character to buffer, handling higher planes using surrogate pair.
+        if (uCode > 0xFFFF) { 
+            uCode -= 0x10000;
+            var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);
+            newBuf[j++] = uCodeLead & 0xFF;
+            newBuf[j++] = uCodeLead >> 8;
+
+            uCode = 0xDC00 + uCode % 0x400;
+        }
+        newBuf[j++] = uCode & 0xFF;
+        newBuf[j++] = uCode >> 8;
+
+        // Reset trie node.
+        nodeIdx = 0; seqStart = i+1;
+    }
+
+    this.nodeIdx = nodeIdx;
+    this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);
+    return newBuf.slice(0, j).toString('ucs2');
+}
+
+DBCSDecoder.prototype.end = function() {
+    var ret = '';
+
+    // Try to parse all remaining chars.
+    while (this.prevBuf.length > 0) {
+        // Skip 1 character in the buffer.
+        ret += this.defaultCharUnicode;
+        var buf = this.prevBuf.slice(1);
+
+        // Parse remaining as usual.
+        this.prevBuf = new Buffer(0);
+        this.nodeIdx = 0;
+        if (buf.length > 0)
+            ret += this.write(buf);
+    }
+
+    this.nodeIdx = 0;
+    return ret;
+}
+
+// Binary search for GB18030. Returns largest i such that table[i] <= val.
+function findIdx(table, val) {
+    if (table[0] > val)
+        return -1;
+
+    var l = 0, r = table.length;
+    while (l < r-1) { // always table[l] <= val < table[r]
+        var mid = l + Math.floor((r-l+1)/2);
+        if (table[mid] <= val)
+            l = mid;
+        else
+            r = mid;
+    }
+    return l;
+}
+
+
+
+/***/ }),
+/* 179 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Description of supported double byte encodings and aliases.
+// Tables are not require()-d until they are needed to speed up library load.
+// require()-s are direct to support Browserify.
+
+module.exports = {
+    
+    // == Japanese/ShiftJIS ====================================================
+    // All japanese encodings are based on JIS X set of standards:
+    // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.
+    // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. 
+    //              Has several variations in 1978, 1983, 1990 and 1997.
+    // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.
+    // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.
+    //              2 planes, first is superset of 0208, second - revised 0212.
+    //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)
+
+    // Byte encodings are:
+    //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte
+    //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.
+    //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.
+    //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.
+    //               0x00-0x7F       - lower part of 0201
+    //               0x8E, 0xA1-0xDF - upper part of 0201
+    //               (0xA1-0xFE)x2   - 0208 plane (94x94).
+    //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).
+    //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.
+    //               Used as-is in ISO2022 family.
+    //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, 
+    //                0201-1976 Roman, 0208-1978, 0208-1983.
+    //  * ISO2022-JP-1: Adds esc seq for 0212-1990.
+    //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.
+    //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.
+    //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.
+    //
+    // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.
+    //
+    // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html
+
+    'shiftjis': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(180) },
+        encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
+        encodeSkipVals: [{from: 0xED40, to: 0xF940}],
+    },
+    'csshiftjis': 'shiftjis',
+    'mskanji': 'shiftjis',
+    'sjis': 'shiftjis',
+    'windows31j': 'shiftjis',
+    'ms31j': 'shiftjis',
+    'xsjis': 'shiftjis',
+    'windows932': 'shiftjis',
+    'ms932': 'shiftjis',
+    '932': 'shiftjis',
+    'cp932': 'shiftjis',
+
+    'eucjp': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(181) },
+        encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
+    },
+
+    // TODO: KDDI extension to Shift_JIS
+    // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.
+    // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.
+
+
+    // == Chinese/GBK ==========================================================
+    // http://en.wikipedia.org/wiki/GBK
+    // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder
+
+    // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936
+    'gb2312': 'cp936',
+    'gb231280': 'cp936',
+    'gb23121980': 'cp936',
+    'csgb2312': 'cp936',
+    'csiso58gb231280': 'cp936',
+    'euccn': 'cp936',
+
+    // Microsoft's CP936 is a subset and approximation of GBK.
+    'windows936': 'cp936',
+    'ms936': 'cp936',
+    '936': 'cp936',
+    'cp936': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(53) },
+    },
+
+    // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.
+    'gbk': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(53).concat(__webpack_require__(91)) },
+    },
+    'xgbk': 'gbk',
+    'isoir58': 'gbk',
+
+    // GB18030 is an algorithmic extension of GBK.
+    // Main source: https://www.w3.org/TR/encoding/#gbk-encoder
+    // http://icu-project.org/docs/papers/gb18030.html
+    // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml
+    // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0
+    'gb18030': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(53).concat(__webpack_require__(91)) },
+        gb18030: function() { return __webpack_require__(182) },
+        encodeSkipVals: [0x80],
+        encodeAdd: {'€': 0xA2E3},
+    },
+
+    'chinese': 'gb18030',
+
+
+    // == Korean ===============================================================
+    // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.
+    'windows949': 'cp949',
+    'ms949': 'cp949',
+    '949': 'cp949',
+    'cp949': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(183) },
+    },
+
+    'cseuckr': 'cp949',
+    'csksc56011987': 'cp949',
+    'euckr': 'cp949',
+    'isoir149': 'cp949',
+    'korean': 'cp949',
+    'ksc56011987': 'cp949',
+    'ksc56011989': 'cp949',
+    'ksc5601': 'cp949',
+
+
+    // == Big5/Taiwan/Hong Kong ================================================
+    // There are lots of tables for Big5 and cp950. Please see the following links for history:
+    // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html
+    // Variations, in roughly number of defined chars:
+    //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
+    //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/
+    //  * Big5-2003 (Taiwan standard) almost superset of cp950.
+    //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.
+    //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. 
+    //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.
+    //    Plus, it has 4 combining sequences.
+    //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299
+    //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.
+    //    Implementations are not consistent within browsers; sometimes labeled as just big5.
+    //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.
+    //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31
+    //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.
+    //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt
+    //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt
+    // 
+    // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder
+    // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.
+
+    'windows950': 'cp950',
+    'ms950': 'cp950',
+    '950': 'cp950',
+    'cp950': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(92) },
+    },
+
+    // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.
+    'big5': 'big5hkscs',
+    'big5hkscs': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(92).concat(__webpack_require__(184)) },
+        encodeSkipVals: [0xa2cc],
+    },
+
+    'cnbig5': 'big5hkscs',
+    'csbig5': 'big5hkscs',
+    'xxbig5': 'big5hkscs',
+};
+
+
+/***/ }),
+/* 180 */
+/***/ (function(module, exports) {
+
+module.exports = [["0","\u0000",128],["a1","｡",62],["8140","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×"],["8180","÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨￢⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","Å‰♯♭♪†‡¶"],["81fc","◯"],["824f","０",9],["8260","Ａ",25],["8281","ａ",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"￢￤＇＂"],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"￢￤＇＂㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]
+
+/***/ }),
+/* 181 */
+/***/ (function(module, exports) {
+
+module.exports = [["0","\u0000",127],["8ea1","｡",62],["a1a1","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨￢⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","Å‰♯♭♪†‡¶"],["a2fe","◯"],["a3b0","０",9],["a3c1","Ａ",25],["a3e1","ａ",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"￢￤＇＂"],["8fa2af","˘ˇ¸˙˝¯˛˚～΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","Ĳ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıĳĸłŀŉŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]
+
+/***/ }),
+/* 182 */
+/***/ (function(module, exports) {
+
+module.exports = {"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}
+
+/***/ }),
+/* 183 */
+/***/ (function(module, exports) {
+
+module.exports = [["0","\u0000",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛！",58,"￦］",32,"￣"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","Ĳ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıĳĸŀłøœßþŧŋŉ㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]
+
+/***/ }),
+/* 184 */
+/***/ (function(module, exports) {
+
+module.exports = [["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー［］✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","￢￤＇＂㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","￭"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]
+
+/***/ }),
+/* 185 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var Buffer = __webpack_require__(1).Buffer,
+    Transform = __webpack_require__(15).Transform;
+
+
+// == Exports ==================================================================
+module.exports = function(iconv) {
+    
+    // Additional Public API.
+    iconv.encodeStream = function encodeStream(encoding, options) {
+        return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);
+    }
+
+    iconv.decodeStream = function decodeStream(encoding, options) {
+        return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);
+    }
+
+    iconv.supportsStreams = true;
+
+
+    // Not published yet.
+    iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;
+    iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;
+    iconv._collect = IconvLiteDecoderStream.prototype.collect;
+};
+
+
+// == Encoder stream =======================================================
+function IconvLiteEncoderStream(conv, options) {
+    this.conv = conv;
+    options = options || {};
+    options.decodeStrings = false; // We accept only strings, so we don't need to decode them.
+    Transform.call(this, options);
+}
+
+IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {
+    constructor: { value: IconvLiteEncoderStream }
+});
+
+IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {
+    if (typeof chunk != 'string')
+        return done(new Error("Iconv encoding stream needs strings as its input."));
+    try {
+        var res = this.conv.write(chunk);
+        if (res && res.length) this.push(res);
+        done();
+    }
+    catch (e) {
+        done(e);
+    }
+}
+
+IconvLiteEncoderStream.prototype._flush = function(done) {
+    try {
+        var res = this.conv.end();
+        if (res && res.length) this.push(res);
+        done();
+    }
+    catch (e) {
+        done(e);
+    }
+}
+
+IconvLiteEncoderStream.prototype.collect = function(cb) {
+    var chunks = [];
+    this.on('error', cb);
+    this.on('data', function(chunk) { chunks.push(chunk); });
+    this.on('end', function() {
+        cb(null, Buffer.concat(chunks));
+    });
+    return this;
+}
+
+
+// == Decoder stream =======================================================
+function IconvLiteDecoderStream(conv, options) {
+    this.conv = conv;
+    options = options || {};
+    options.encoding = this.encoding = 'utf8'; // We output strings.
+    Transform.call(this, options);
+}
+
+IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
+    constructor: { value: IconvLiteDecoderStream }
+});
+
+IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {
+    if (!Buffer.isBuffer(chunk))
+        return done(new Error("Iconv decoding stream needs buffers as its input."));
+    try {
+        var res = this.conv.write(chunk);
+        if (res && res.length) this.push(res, this.encoding);
+        done();
+    }
+    catch (e) {
+        done(e);
+    }
+}
+
+IconvLiteDecoderStream.prototype._flush = function(done) {
+    try {
+        var res = this.conv.end();
+        if (res && res.length) this.push(res, this.encoding);                
+        done();
+    }
+    catch (e) {
+        done(e);
+    }
+}
+
+IconvLiteDecoderStream.prototype.collect = function(cb) {
+    var res = '';
+    this.on('error', cb);
+    this.on('data', function(chunk) { res += chunk; });
+    this.on('end', function() {
+        cb(null, res);
+    });
+    return this;
+}
+
+
+
+/***/ }),
+/* 186 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// == Extend Node primitives to use iconv-lite =================================
+
+module.exports = function (iconv) {
+    var original = undefined; // Place to keep original methods.
+
+    // Node authors rewrote Buffer internals to make it compatible with
+    // Uint8Array and we cannot patch key functions since then.
+    iconv.supportsNodeEncodingsExtension = !(new Buffer(0) instanceof Uint8Array);
+
+    iconv.extendNodeEncodings = function extendNodeEncodings() {
+        if (original) return;
+        original = {};
+
+        if (!iconv.supportsNodeEncodingsExtension) {
+            console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node");
+            console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");
+            return;
+        }
+
+        var nodeNativeEncodings = {
+            'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, 
+            'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true,
+        };
+
+        Buffer.isNativeEncoding = function(enc) {
+            return enc && nodeNativeEncodings[enc.toLowerCase()];
+        }
+
+        // -- SlowBuffer -----------------------------------------------------------
+        var SlowBuffer = __webpack_require__(1).SlowBuffer;
+
+        original.SlowBufferToString = SlowBuffer.prototype.toString;
+        SlowBuffer.prototype.toString = function(encoding, start, end) {
+            encoding = String(encoding || 'utf8').toLowerCase();
+
+            // Use native conversion when possible
+            if (Buffer.isNativeEncoding(encoding))
+                return original.SlowBufferToString.call(this, encoding, start, end);
+
+            // Otherwise, use our decoding method.
+            if (typeof start == 'undefined') start = 0;
+            if (typeof end == 'undefined') end = this.length;
+            return iconv.decode(this.slice(start, end), encoding);
+        }
+
+        original.SlowBufferWrite = SlowBuffer.prototype.write;
+        SlowBuffer.prototype.write = function(string, offset, length, encoding) {
+            // Support both (string, offset, length, encoding)
+            // and the legacy (string, encoding, offset, length)
+            if (isFinite(offset)) {
+                if (!isFinite(length)) {
+                    encoding = length;
+                    length = undefined;
+                }
+            } else {  // legacy
+                var swap = encoding;
+                encoding = offset;
+                offset = length;
+                length = swap;
+            }
+
+            offset = +offset || 0;
+            var remaining = this.length - offset;
+            if (!length) {
+                length = remaining;
+            } else {
+                length = +length;
+                if (length > remaining) {
+                    length = remaining;
+                }
+            }
+            encoding = String(encoding || 'utf8').toLowerCase();
+
+            // Use native conversion when possible
+            if (Buffer.isNativeEncoding(encoding))
+                return original.SlowBufferWrite.call(this, string, offset, length, encoding);
+
+            if (string.length > 0 && (length < 0 || offset < 0))
+                throw new RangeError('attempt to write beyond buffer bounds');
+
+            // Otherwise, use our encoding method.
+            var buf = iconv.encode(string, encoding);
+            if (buf.length < length) length = buf.length;
+            buf.copy(this, offset, 0, length);
+            return length;
+        }
+
+        // -- Buffer ---------------------------------------------------------------
+
+        original.BufferIsEncoding = Buffer.isEncoding;
+        Buffer.isEncoding = function(encoding) {
+            return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding);
+        }
+
+        original.BufferByteLength = Buffer.byteLength;
+        Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) {
+            encoding = String(encoding || 'utf8').toLowerCase();
+
+            // Use native conversion when possible
+            if (Buffer.isNativeEncoding(encoding))
+                return original.BufferByteLength.call(this, str, encoding);
+
+            // Slow, I know, but we don't have a better way yet.
+            return iconv.encode(str, encoding).length;
+        }
+
+        original.BufferToString = Buffer.prototype.toString;
+        Buffer.prototype.toString = function(encoding, start, end) {
+            encoding = String(encoding || 'utf8').toLowerCase();
+
+            // Use native conversion when possible
+            if (Buffer.isNativeEncoding(encoding))
+                return original.BufferToString.call(this, encoding, start, end);
+
+            // Otherwise, use our decoding method.
+            if (typeof start == 'undefined') start = 0;
+            if (typeof end == 'undefined') end = this.length;
+            return iconv.decode(this.slice(start, end), encoding);
+        }
+
+        original.BufferWrite = Buffer.prototype.write;
+        Buffer.prototype.write = function(string, offset, length, encoding) {
+            var _offset = offset, _length = length, _encoding = encoding;
+            // Support both (string, offset, length, encoding)
+            // and the legacy (string, encoding, offset, length)
+            if (isFinite(offset)) {
+                if (!isFinite(length)) {
+                    encoding = length;
+                    length = undefined;
+                }
+            } else {  // legacy
+                var swap = encoding;
+                encoding = offset;
+                offset = length;
+                length = swap;
+            }
+
+            encoding = String(encoding || 'utf8').toLowerCase();
+
+            // Use native conversion when possible
+            if (Buffer.isNativeEncoding(encoding))
+                return original.BufferWrite.call(this, string, _offset, _length, _encoding);
+
+            offset = +offset || 0;
+            var remaining = this.length - offset;
+            if (!length) {
+                length = remaining;
+            } else {
+                length = +length;
+                if (length > remaining) {
+                    length = remaining;
+                }
+            }
+
+            if (string.length > 0 && (length < 0 || offset < 0))
+                throw new RangeError('attempt to write beyond buffer bounds');
+
+            // Otherwise, use our encoding method.
+            var buf = iconv.encode(string, encoding);
+            if (buf.length < length) length = buf.length;
+            buf.copy(this, offset, 0, length);
+            return length;
+
+            // TODO: Set _charsWritten.
+        }
+
+
+        // -- Readable -------------------------------------------------------------
+        if (iconv.supportsStreams) {
+            var Readable = __webpack_require__(15).Readable;
+
+            original.ReadableSetEncoding = Readable.prototype.setEncoding;
+            Readable.prototype.setEncoding = function setEncoding(enc, options) {
+                // Use our own decoder, it has the same interface.
+                // We cannot use original function as it doesn't handle BOM-s.
+                this._readableState.decoder = iconv.getDecoder(enc, options);
+                this._readableState.encoding = enc;
+            }
+
+            Readable.prototype.collect = iconv._collect;
+        }
+    }
+
+    // Remove iconv-lite Node primitive extensions.
+    iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() {
+        if (!iconv.supportsNodeEncodingsExtension)
+            return;
+        if (!original)
+            throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.")
+
+        delete Buffer.isNativeEncoding;
+
+        var SlowBuffer = __webpack_require__(1).SlowBuffer;
+
+        SlowBuffer.prototype.toString = original.SlowBufferToString;
+        SlowBuffer.prototype.write = original.SlowBufferWrite;
+
+        Buffer.isEncoding = original.BufferIsEncoding;
+        Buffer.byteLength = original.BufferByteLength;
+        Buffer.prototype.toString = original.BufferToString;
+        Buffer.prototype.write = original.BufferWrite;
+
+        if (iconv.supportsStreams) {
+            var Readable = __webpack_require__(15).Readable;
+
+            Readable.prototype.setEncoding = original.ReadableSetEncoding;
+            delete Readable.prototype.collect;
+        }
+
+        original = undefined;
+    }
+}
+
+
+/***/ }),
+/* 187 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var ArrayT, LazyArray, LazyArrayT, NumberT, inspect, utils,
+    __hasProp = {}.hasOwnProperty,
+    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
+
+  ArrayT = __webpack_require__(93);
+
+  NumberT = __webpack_require__(22).Number;
+
+  utils = __webpack_require__(12);
+
+  inspect = __webpack_require__(49).inspect;
+
+  LazyArrayT = (function(_super) {
+    __extends(LazyArrayT, _super);
+
+    function LazyArrayT() {
+      return LazyArrayT.__super__.constructor.apply(this, arguments);
+    }
+
+    LazyArrayT.prototype.decode = function(stream, parent) {
+      var length, pos, res;
+      pos = stream.pos;
+      length = utils.resolveLength(this.length, stream, parent);
+      if (this.length instanceof NumberT) {
+        parent = {
+          parent: parent,
+          _startOffset: pos,
+          _currentOffset: 0,
+          _length: length
+        };
+      }
+      res = new LazyArray(this.type, length, stream, parent);
+      stream.pos += length * this.type.size(null, parent);
+      return res;
+    };
+
+    LazyArrayT.prototype.size = function(val, ctx) {
+      if (val instanceof LazyArray) {
+        val = val.toArray();
+      }
+      return LazyArrayT.__super__.size.call(this, val, ctx);
+    };
+
+    LazyArrayT.prototype.encode = function(stream, val, ctx) {
+      if (val instanceof LazyArray) {
+        val = val.toArray();
+      }
+      return LazyArrayT.__super__.encode.call(this, stream, val, ctx);
+    };
+
+    return LazyArrayT;
+
+  })(ArrayT);
+
+  LazyArray = (function() {
+    function LazyArray(type, length, stream, ctx) {
+      this.type = type;
+      this.length = length;
+      this.stream = stream;
+      this.ctx = ctx;
+      this.base = this.stream.pos;
+      this.items = [];
+    }
+
+    LazyArray.prototype.get = function(index) {
+      var pos;
+      if (index < 0 || index >= this.length) {
+        return void 0;
+      }
+      if (this.items[index] == null) {
+        pos = this.stream.pos;
+        this.stream.pos = this.base + this.type.size(null, this.ctx) * index;
+        this.items[index] = this.type.decode(this.stream, this.ctx);
+        this.stream.pos = pos;
+      }
+      return this.items[index];
+    };
+
+    LazyArray.prototype.toArray = function() {
+      var i, _i, _ref, _results;
+      _results = [];
+      for (i = _i = 0, _ref = this.length; _i < _ref; i = _i += 1) {
+        _results.push(this.get(i));
+      }
+      return _results;
+    };
+
+    LazyArray.prototype.inspect = function() {
+      return inspect(this.toArray());
+    };
+
+    return LazyArray;
+
+  })();
+
+  module.exports = LazyArrayT;
+
+}).call(this);
+
+
+/***/ }),
+/* 188 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Bitfield;
+
+  Bitfield = (function() {
+    function Bitfield(type, flags) {
+      this.type = type;
+      this.flags = flags != null ? flags : [];
+    }
+
+    Bitfield.prototype.decode = function(stream) {
+      var flag, i, res, val, _i, _len, _ref;
+      val = this.type.decode(stream);
+      res = {};
+      _ref = this.flags;
+      for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
+        flag = _ref[i];
+        if (flag != null) {
+          res[flag] = !!(val & (1 << i));
+        }
+      }
+      return res;
+    };
+
+    Bitfield.prototype.size = function() {
+      return this.type.size();
+    };
+
+    Bitfield.prototype.encode = function(stream, keys) {
+      var flag, i, val, _i, _len, _ref;
+      val = 0;
+      _ref = this.flags;
+      for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
+        flag = _ref[i];
+        if (flag != null) {
+          if (keys[flag]) {
+            val |= 1 << i;
+          }
+        }
+      }
+      return this.type.encode(stream, val);
+    };
+
+    return Bitfield;
+
+  })();
+
+  module.exports = Bitfield;
+
+}).call(this);
+
+
+/***/ }),
+/* 189 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var BooleanT;
+
+  BooleanT = (function() {
+    function BooleanT(type) {
+      this.type = type;
+    }
+
+    BooleanT.prototype.decode = function(stream, parent) {
+      return !!this.type.decode(stream, parent);
+    };
+
+    BooleanT.prototype.size = function(val, parent) {
+      return this.type.size(val, parent);
+    };
+
+    BooleanT.prototype.encode = function(stream, val, parent) {
+      return this.type.encode(stream, +val, parent);
+    };
+
+    return BooleanT;
+
+  })();
+
+  module.exports = BooleanT;
+
+}).call(this);
+
+
+/***/ }),
+/* 190 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var BufferT, NumberT, utils;
+
+  utils = __webpack_require__(12);
+
+  NumberT = __webpack_require__(22).Number;
+
+  BufferT = (function() {
+    function BufferT(length) {
+      this.length = length;
+    }
+
+    BufferT.prototype.decode = function(stream, parent) {
+      var length;
+      length = utils.resolveLength(this.length, stream, parent);
+      return stream.readBuffer(length);
+    };
+
+    BufferT.prototype.size = function(val, parent) {
+      if (!val) {
+        return utils.resolveLength(this.length, null, parent);
+      }
+      return val.length;
+    };
+
+    BufferT.prototype.encode = function(stream, buf, parent) {
+      if (this.length instanceof NumberT) {
+        this.length.encode(stream, buf.length);
+      }
+      return stream.writeBuffer(buf);
+    };
+
+    return BufferT;
+
+  })();
+
+  module.exports = BufferT;
+
+}).call(this);
+
+
+/***/ }),
+/* 191 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Enum;
+
+  Enum = (function() {
+    function Enum(type, options) {
+      this.type = type;
+      this.options = options != null ? options : [];
+    }
+
+    Enum.prototype.decode = function(stream) {
+      var index;
+      index = this.type.decode(stream);
+      return this.options[index] || index;
+    };
+
+    Enum.prototype.size = function() {
+      return this.type.size();
+    };
+
+    Enum.prototype.encode = function(stream, val) {
+      var index;
+      index = this.options.indexOf(val);
+      if (index === -1) {
+        throw new Error("Unknown option in enum: " + val);
+      }
+      return this.type.encode(stream, index);
+    };
+
+    return Enum;
+
+  })();
+
+  module.exports = Enum;
+
+}).call(this);
+
+
+/***/ }),
+/* 192 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Optional;
+
+  Optional = (function() {
+    function Optional(type, condition) {
+      this.type = type;
+      this.condition = condition != null ? condition : true;
+    }
+
+    Optional.prototype.decode = function(stream, parent) {
+      var condition;
+      condition = this.condition;
+      if (typeof condition === 'function') {
+        condition = condition.call(parent, parent);
+      }
+      if (condition) {
+        return this.type.decode(stream, parent);
+      }
+    };
+
+    Optional.prototype.size = function(val, parent) {
+      var condition;
+      condition = this.condition;
+      if (typeof condition === 'function') {
+        condition = condition.call(parent, parent);
+      }
+      if (condition) {
+        return this.type.size(val, parent);
+      } else {
+        return 0;
+      }
+    };
+
+    Optional.prototype.encode = function(stream, val, parent) {
+      var condition;
+      condition = this.condition;
+      if (typeof condition === 'function') {
+        condition = condition.call(parent, parent);
+      }
+      if (condition) {
+        return this.type.encode(stream, val, parent);
+      }
+    };
+
+    return Optional;
+
+  })();
+
+  module.exports = Optional;
+
+}).call(this);
+
+
+/***/ }),
+/* 193 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Reserved, utils;
+
+  utils = __webpack_require__(12);
+
+  Reserved = (function() {
+    function Reserved(type, count) {
+      this.type = type;
+      this.count = count != null ? count : 1;
+    }
+
+    Reserved.prototype.decode = function(stream, parent) {
+      stream.pos += this.size(null, parent);
+      return void 0;
+    };
+
+    Reserved.prototype.size = function(data, parent) {
+      var count;
+      count = utils.resolveLength(this.count, null, parent);
+      return this.type.size() * count;
+    };
+
+    Reserved.prototype.encode = function(stream, val, parent) {
+      return stream.fill(0, this.size(val, parent));
+    };
+
+    return Reserved;
+
+  })();
+
+  module.exports = Reserved;
+
+}).call(this);
+
+
+/***/ }),
+/* 194 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.7.1
+(function() {
+  var NumberT, StringT, utils;
+
+  NumberT = __webpack_require__(22).Number;
+
+  utils = __webpack_require__(12);
+
+  StringT = (function() {
+    function StringT(length, encoding) {
+      this.length = length;
+      this.encoding = encoding != null ? encoding : 'ascii';
+    }
+
+    StringT.prototype.decode = function(stream, parent) {
+      var buffer, encoding, length, pos, string;
+      length = (function() {
+        if (this.length != null) {
+          return utils.resolveLength(this.length, stream, parent);
+        } else {
+          buffer = stream.buffer, length = stream.length, pos = stream.pos;
+          while (pos < length && buffer[pos] !== 0x00) {
+            ++pos;
+          }
+          return pos - stream.pos;
+        }
+      }).call(this);
+      encoding = this.encoding;
+      if (typeof encoding === 'function') {
+        encoding = encoding.call(parent, parent) || 'ascii';
+      }
+      string = stream.readString(length, encoding);
+      if ((this.length == null) && stream.pos < stream.length) {
+        stream.pos++;
+      }
+      return string;
+    };
+
+    StringT.prototype.size = function(val, parent) {
+      var encoding, size;
+      if (!val) {
+        return utils.resolveLength(this.length, null, parent);
+      }
+      encoding = this.encoding;
+      if (typeof encoding === 'function') {
+        encoding = encoding.call(parent != null ? parent.val : void 0, parent != null ? parent.val : void 0) || 'ascii';
+      }
+      if (encoding === 'utf16be') {
+        encoding = 'utf16le';
+      }
+      size = Buffer.byteLength(val, encoding);
+      if (this.length instanceof NumberT) {
+        size += this.length.size();
+      }
+      if (this.length == null) {
+        size++;
+      }
+      return size;
+    };
+
+    StringT.prototype.encode = function(stream, val, parent) {
+      var encoding;
+      encoding = this.encoding;
+      if (typeof encoding === 'function') {
+        encoding = encoding.call(parent != null ? parent.val : void 0, parent != null ? parent.val : void 0) || 'ascii';
+      }
+      if (this.length instanceof NumberT) {
+        this.length.encode(stream, Buffer.byteLength(val, encoding));
+      }
+      stream.writeString(val, encoding);
+      if (this.length == null) {
+        return stream.writeUInt8(0x00);
+      }
+    };
+
+    return StringT;
+
+  })();
+
+  module.exports = StringT;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 195 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Struct, VersionedStruct,
+    __hasProp = {}.hasOwnProperty,
+    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
+
+  Struct = __webpack_require__(94);
+
+  VersionedStruct = (function(_super) {
+    __extends(VersionedStruct, _super);
+
+    function VersionedStruct(type, versions) {
+      this.type = type;
+      this.versions = versions != null ? versions : {};
+      if (typeof this.type === 'string') {
+        this.versionGetter = new Function('parent', "return parent." + this.type);
+        this.versionSetter = new Function('parent', 'version', "return parent." + this.type + " = version");
+      }
+    }
+
+    VersionedStruct.prototype.decode = function(stream, parent, length) {
+      var fields, res, _ref;
+      if (length == null) {
+        length = 0;
+      }
+      res = this._setup(stream, parent, length);
+      if (typeof this.type === 'string') {
+        res.version = this.versionGetter(parent);
+      } else {
+        res.version = this.type.decode(stream);
+      }
+      if (this.versions.header) {
+        this._parseFields(stream, res, this.versions.header);
+      }
+      fields = this.versions[res.version];
+      if (fields == null) {
+        throw new Error("Unknown version " + res.version);
+      }
+      if (fields instanceof VersionedStruct) {
+        return fields.decode(stream, parent);
+      }
+      this._parseFields(stream, res, fields);
+      if ((_ref = this.process) != null) {
+        _ref.call(res, stream);
+      }
+      return res;
+    };
+
+    VersionedStruct.prototype.size = function(val, parent, includePointers) {
+      var ctx, fields, key, size, type, _ref;
+      if (includePointers == null) {
+        includePointers = true;
+      }
+      if (!val) {
+        throw new Error('Not a fixed size');
+      }
+      ctx = {
+        parent: parent,
+        val: val,
+        pointerSize: 0
+      };
+      size = 0;
+      if (typeof this.type !== 'string') {
+        size += this.type.size(val.version, ctx);
+      }
+      if (this.versions.header) {
+        _ref = this.versions.header;
+        for (key in _ref) {
+          type = _ref[key];
+          if (type.size != null) {
+            size += type.size(val[key], ctx);
+          }
+        }
+      }
+      fields = this.versions[val.version];
+      if (fields == null) {
+        throw new Error("Unknown version " + val.version);
+      }
+      for (key in fields) {
+        type = fields[key];
+        if (type.size != null) {
+          size += type.size(val[key], ctx);
+        }
+      }
+      if (includePointers) {
+        size += ctx.pointerSize;
+      }
+      return size;
+    };
+
+    VersionedStruct.prototype.encode = function(stream, val, parent) {
+      var ctx, fields, i, key, ptr, type, _ref, _ref1;
+      if ((_ref = this.preEncode) != null) {
+        _ref.call(val, stream);
+      }
+      ctx = {
+        pointers: [],
+        startOffset: stream.pos,
+        parent: parent,
+        val: val,
+        pointerSize: 0
+      };
+      ctx.pointerOffset = stream.pos + this.size(val, ctx, false);
+      if (typeof this.type !== 'string') {
+        this.type.encode(stream, val.version);
+      }
+      if (this.versions.header) {
+        _ref1 = this.versions.header;
+        for (key in _ref1) {
+          type = _ref1[key];
+          if (type.encode != null) {
+            type.encode(stream, val[key], ctx);
+          }
+        }
+      }
+      fields = this.versions[val.version];
+      for (key in fields) {
+        type = fields[key];
+        if (type.encode != null) {
+          type.encode(stream, val[key], ctx);
+        }
+      }
+      i = 0;
+      while (i < ctx.pointers.length) {
+        ptr = ctx.pointers[i++];
+        ptr.type.encode(stream, ptr.val, ptr.parent);
+      }
+    };
+
+    return VersionedStruct;
+
+  })(Struct);
+
+  module.exports = VersionedStruct;
+
+}).call(this);
+
+
+/***/ }),
+/* 196 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Pointer, VoidPointer, utils;
+
+  utils = __webpack_require__(12);
+
+  Pointer = (function() {
+    function Pointer(offsetType, type, options) {
+      var _base, _base1, _base2, _base3;
+      this.offsetType = offsetType;
+      this.type = type;
+      this.options = options != null ? options : {};
+      if (this.type === 'void') {
+        this.type = null;
+      }
+      if ((_base = this.options).type == null) {
+        _base.type = 'local';
+      }
+      if ((_base1 = this.options).allowNull == null) {
+        _base1.allowNull = true;
+      }
+      if ((_base2 = this.options).nullValue == null) {
+        _base2.nullValue = 0;
+      }
+      if ((_base3 = this.options).lazy == null) {
+        _base3.lazy = false;
+      }
+      if (this.options.relativeTo) {
+        this.relativeToGetter = new Function('ctx', "return ctx." + this.options.relativeTo);
+      }
+    }
+
+    Pointer.prototype.decode = function(stream, ctx) {
+      var c, decodeValue, offset, ptr, relative, val;
+      offset = this.offsetType.decode(stream, ctx);
+      if (offset === this.options.nullValue && this.options.allowNull) {
+        return null;
+      }
+      relative = (function() {
+        switch (this.options.type) {
+          case 'local':
+            return ctx._startOffset;
+          case 'immediate':
+            return stream.pos - this.offsetType.size();
+          case 'parent':
+            return ctx.parent._startOffset;
+          default:
+            c = ctx;
+            while (c.parent) {
+              c = c.parent;
+            }
+            return c._startOffset || 0;
+        }
+      }).call(this);
+      if (this.options.relativeTo) {
+        relative += this.relativeToGetter(ctx);
+      }
+      ptr = offset + relative;
+      if (this.type != null) {
+        val = null;
+        decodeValue = (function(_this) {
+          return function() {
+            var pos;
+            if (val != null) {
+              return val;
+            }
+            pos = stream.pos;
+            stream.pos = ptr;
+            val = _this.type.decode(stream, ctx);
+            stream.pos = pos;
+            return val;
+          };
+        })(this);
+        if (this.options.lazy) {
+          return new utils.PropertyDescriptor({
+            get: decodeValue
+          });
+        }
+        return decodeValue();
+      } else {
+        return ptr;
+      }
+    };
+
+    Pointer.prototype.size = function(val, ctx) {
+      var parent, type;
+      parent = ctx;
+      switch (this.options.type) {
+        case 'local':
+        case 'immediate':
+          break;
+        case 'parent':
+          ctx = ctx.parent;
+          break;
+        default:
+          while (ctx.parent) {
+            ctx = ctx.parent;
+          }
+      }
+      type = this.type;
+      if (type == null) {
+        if (!(val instanceof VoidPointer)) {
+          throw new Error("Must be a VoidPointer");
+        }
+        type = val.type;
+        val = val.value;
+      }
+      if (val && ctx) {
+        ctx.pointerSize += type.size(val, parent);
+      }
+      return this.offsetType.size();
+    };
+
+    Pointer.prototype.encode = function(stream, val, ctx) {
+      var parent, relative, type;
+      parent = ctx;
+      if (val == null) {
+        this.offsetType.encode(stream, this.options.nullValue);
+        return;
+      }
+      switch (this.options.type) {
+        case 'local':
+          relative = ctx.startOffset;
+          break;
+        case 'immediate':
+          relative = stream.pos + this.offsetType.size(val, parent);
+          break;
+        case 'parent':
+          ctx = ctx.parent;
+          relative = ctx.startOffset;
+          break;
+        default:
+          relative = 0;
+          while (ctx.parent) {
+            ctx = ctx.parent;
+          }
+      }
+      if (this.options.relativeTo) {
+        relative += this.relativeToGetter(parent.val);
+      }
+      this.offsetType.encode(stream, ctx.pointerOffset - relative);
+      type = this.type;
+      if (type == null) {
+        if (!(val instanceof VoidPointer)) {
+          throw new Error("Must be a VoidPointer");
+        }
+        type = val.type;
+        val = val.value;
+      }
+      ctx.pointers.push({
+        type: type,
+        val: val,
+        parent: parent
+      });
+      return ctx.pointerOffset += type.size(val, parent);
+    };
+
+    return Pointer;
+
+  })();
+
+  VoidPointer = (function() {
+    function VoidPointer(type, value) {
+      this.type = type;
+      this.value = value;
+    }
+
+    return VoidPointer;
+
+  })();
+
+  exports.Pointer = Pointer;
+
+  exports.VoidPointer = VoidPointer;
+
+}).call(this);
+
+
+/***/ }),
+/* 197 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(198), __esModule: true };
+
+/***/ }),
+/* 198 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(199);
+var $Object = __webpack_require__(2).Object;
+module.exports = function getOwnPropertyDescriptor(it, key) {
+  return $Object.getOwnPropertyDescriptor(it, key);
+};
+
+
+/***/ }),
+/* 199 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+var toIObject = __webpack_require__(17);
+var $getOwnPropertyDescriptor = __webpack_require__(57).f;
+
+__webpack_require__(59)('getOwnPropertyDescriptor', function () {
+  return function getOwnPropertyDescriptor(it, key) {
+    return $getOwnPropertyDescriptor(toIObject(it), key);
+  };
+});
+
+
+/***/ }),
+/* 200 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(28);
+__webpack_require__(24);
+module.exports = __webpack_require__(208);
+
+
+/***/ }),
+/* 201 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var addToUnscopables = __webpack_require__(202);
+var step = __webpack_require__(98);
+var Iterators = __webpack_require__(23);
+var toIObject = __webpack_require__(17);
+
+// 22.1.3.4 Array.prototype.entries()
+// 22.1.3.13 Array.prototype.keys()
+// 22.1.3.29 Array.prototype.values()
+// 22.1.3.30 Array.prototype[@@iterator]()
+module.exports = __webpack_require__(61)(Array, 'Array', function (iterated, kind) {
+  this._t = toIObject(iterated); // target
+  this._i = 0;                   // next index
+  this._k = kind;                // kind
+// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
+}, function () {
+  var O = this._t;
+  var kind = this._k;
+  var index = this._i++;
+  if (!O || index >= O.length) {
+    this._t = undefined;
+    return step(1);
+  }
+  if (kind == 'keys') return step(0, index);
+  if (kind == 'values') return step(0, O[index]);
+  return step(0, [index, O[index]]);
+}, 'values');
+
+// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
+Iterators.Arguments = Iterators.Array;
+
+addToUnscopables('keys');
+addToUnscopables('values');
+addToUnscopables('entries');
+
+
+/***/ }),
+/* 202 */
+/***/ (function(module, exports) {
+
+module.exports = function () { /* empty */ };
+
+
+/***/ }),
+/* 203 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var create = __webpack_require__(36);
+var descriptor = __webpack_require__(27);
+var setToStringTag = __webpack_require__(39);
+var IteratorPrototype = {};
+
+// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+__webpack_require__(13)(IteratorPrototype, __webpack_require__(4)('iterator'), function () { return this; });
+
+module.exports = function (Constructor, NAME, next) {
+  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
+  setToStringTag(Constructor, NAME + ' Iterator');
+};
+
+
+/***/ }),
+/* 204 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// false -> Array#indexOf
+// true  -> Array#includes
+var toIObject = __webpack_require__(17);
+var toLength = __webpack_require__(37);
+var toAbsoluteIndex = __webpack_require__(102);
+module.exports = function (IS_INCLUDES) {
+  return function ($this, el, fromIndex) {
+    var O = toIObject($this);
+    var length = toLength(O.length);
+    var index = toAbsoluteIndex(fromIndex, length);
+    var value;
+    // Array#includes uses SameValueZero equality algorithm
+    // eslint-disable-next-line no-self-compare
+    if (IS_INCLUDES && el != el) while (length > index) {
+      value = O[index++];
+      // eslint-disable-next-line no-self-compare
+      if (value != value) return true;
+    // Array#indexOf ignores holes, Array#includes - not
+    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
+      if (O[index] === el) return IS_INCLUDES || index || 0;
+    } return !IS_INCLUDES && -1;
+  };
+};
+
+
+/***/ }),
+/* 205 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var document = __webpack_require__(10).document;
+module.exports = document && document.documentElement;
+
+
+/***/ }),
+/* 206 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
+var has = __webpack_require__(18);
+var toObject = __webpack_require__(30);
+var IE_PROTO = __webpack_require__(64)('IE_PROTO');
+var ObjectProto = Object.prototype;
+
+module.exports = Object.getPrototypeOf || function (O) {
+  O = toObject(O);
+  if (has(O, IE_PROTO)) return O[IE_PROTO];
+  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
+    return O.constructor.prototype;
+  } return O instanceof Object ? ObjectProto : null;
+};
+
+
+/***/ }),
+/* 207 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toInteger = __webpack_require__(63);
+var defined = __webpack_require__(56);
+// true  -> String#at
+// false -> String#codePointAt
+module.exports = function (TO_STRING) {
+  return function (that, pos) {
+    var s = String(defined(that));
+    var i = toInteger(pos);
+    var l = s.length;
+    var a, b;
+    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
+    a = s.charCodeAt(i);
+    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
+      ? TO_STRING ? s.charAt(i) : a
+      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
+  };
+};
+
+
+/***/ }),
+/* 208 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var anObject = __webpack_require__(14);
+var get = __webpack_require__(67);
+module.exports = __webpack_require__(2).getIterator = function (it) {
+  var iterFn = get(it);
+  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
+  return anObject(iterFn.call(it));
+};
+
+
+/***/ }),
+/* 209 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(210), __esModule: true };
+
+/***/ }),
+/* 210 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(211);
+module.exports = __webpack_require__(2).Object.freeze;
+
+
+/***/ }),
+/* 211 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.5 Object.freeze(O)
+var isObject = __webpack_require__(9);
+var meta = __webpack_require__(40).onFreeze;
+
+__webpack_require__(59)('freeze', function ($freeze) {
+  return function freeze(it) {
+    return $freeze && isObject(it) ? $freeze(meta(it)) : it;
+  };
+});
+
+
+/***/ }),
+/* 212 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(213), __esModule: true };
+
+/***/ }),
+/* 213 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(214);
+module.exports = __webpack_require__(2).Object.keys;
+
+
+/***/ }),
+/* 214 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.14 Object.keys(O)
+var toObject = __webpack_require__(30);
+var $keys = __webpack_require__(29);
+
+__webpack_require__(59)('keys', function () {
+  return function keys(it) {
+    return $keys(toObject(it));
+  };
+});
+
+
+/***/ }),
+/* 215 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(24);
+__webpack_require__(28);
+module.exports = __webpack_require__(70).f('iterator');
+
+
+/***/ }),
+/* 216 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(217), __esModule: true };
+
+/***/ }),
+/* 217 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(218);
+__webpack_require__(73);
+__webpack_require__(221);
+__webpack_require__(222);
+module.exports = __webpack_require__(2).Symbol;
+
+
+/***/ }),
+/* 218 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// ECMAScript 6 symbols shim
+var global = __webpack_require__(10);
+var has = __webpack_require__(18);
+var DESCRIPTORS = __webpack_require__(5);
+var $export = __webpack_require__(3);
+var redefine = __webpack_require__(99);
+var META = __webpack_require__(40).KEY;
+var $fails = __webpack_require__(19);
+var shared = __webpack_require__(65);
+var setToStringTag = __webpack_require__(39);
+var uid = __webpack_require__(38);
+var wks = __webpack_require__(4);
+var wksExt = __webpack_require__(70);
+var wksDefine = __webpack_require__(71);
+var enumKeys = __webpack_require__(219);
+var isArray = __webpack_require__(104);
+var anObject = __webpack_require__(14);
+var isObject = __webpack_require__(9);
+var toIObject = __webpack_require__(17);
+var toPrimitive = __webpack_require__(58);
+var createDesc = __webpack_require__(27);
+var _create = __webpack_require__(36);
+var gOPNExt = __webpack_require__(220);
+var $GOPD = __webpack_require__(57);
+var $DP = __webpack_require__(6);
+var $keys = __webpack_require__(29);
+var gOPD = $GOPD.f;
+var dP = $DP.f;
+var gOPN = gOPNExt.f;
+var $Symbol = global.Symbol;
+var $JSON = global.JSON;
+var _stringify = $JSON && $JSON.stringify;
+var PROTOTYPE = 'prototype';
+var HIDDEN = wks('_hidden');
+var TO_PRIMITIVE = wks('toPrimitive');
+var isEnum = {}.propertyIsEnumerable;
+var SymbolRegistry = shared('symbol-registry');
+var AllSymbols = shared('symbols');
+var OPSymbols = shared('op-symbols');
+var ObjectProto = Object[PROTOTYPE];
+var USE_NATIVE = typeof $Symbol == 'function';
+var QObject = global.QObject;
+// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
+
+// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+var setSymbolDesc = DESCRIPTORS && $fails(function () {
+  return _create(dP({}, 'a', {
+    get: function () { return dP(this, 'a', { value: 7 }).a; }
+  })).a != 7;
+}) ? function (it, key, D) {
+  var protoDesc = gOPD(ObjectProto, key);
+  if (protoDesc) delete ObjectProto[key];
+  dP(it, key, D);
+  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
+} : dP;
+
+var wrap = function (tag) {
+  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
+  sym._k = tag;
+  return sym;
+};
+
+var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
+  return typeof it == 'symbol';
+} : function (it) {
+  return it instanceof $Symbol;
+};
+
+var $defineProperty = function defineProperty(it, key, D) {
+  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
+  anObject(it);
+  key = toPrimitive(key, true);
+  anObject(D);
+  if (has(AllSymbols, key)) {
+    if (!D.enumerable) {
+      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
+      it[HIDDEN][key] = true;
+    } else {
+      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
+      D = _create(D, { enumerable: createDesc(0, false) });
+    } return setSymbolDesc(it, key, D);
+  } return dP(it, key, D);
+};
+var $defineProperties = function defineProperties(it, P) {
+  anObject(it);
+  var keys = enumKeys(P = toIObject(P));
+  var i = 0;
+  var l = keys.length;
+  var key;
+  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
+  return it;
+};
+var $create = function create(it, P) {
+  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
+};
+var $propertyIsEnumerable = function propertyIsEnumerable(key) {
+  var E = isEnum.call(this, key = toPrimitive(key, true));
+  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
+  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
+};
+var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
+  it = toIObject(it);
+  key = toPrimitive(key, true);
+  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
+  var D = gOPD(it, key);
+  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
+  return D;
+};
+var $getOwnPropertyNames = function getOwnPropertyNames(it) {
+  var names = gOPN(toIObject(it));
+  var result = [];
+  var i = 0;
+  var key;
+  while (names.length > i) {
+    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
+  } return result;
+};
+var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
+  var IS_OP = it === ObjectProto;
+  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
+  var result = [];
+  var i = 0;
+  var key;
+  while (names.length > i) {
+    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
+  } return result;
+};
+
+// 19.4.1.1 Symbol([description])
+if (!USE_NATIVE) {
+  $Symbol = function Symbol() {
+    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
+    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
+    var $set = function (value) {
+      if (this === ObjectProto) $set.call(OPSymbols, value);
+      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
+      setSymbolDesc(this, tag, createDesc(1, value));
+    };
+    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
+    return wrap(tag);
+  };
+  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
+    return this._k;
+  });
+
+  $GOPD.f = $getOwnPropertyDescriptor;
+  $DP.f = $defineProperty;
+  __webpack_require__(105).f = gOPNExt.f = $getOwnPropertyNames;
+  __webpack_require__(35).f = $propertyIsEnumerable;
+  __webpack_require__(72).f = $getOwnPropertySymbols;
+
+  if (DESCRIPTORS && !__webpack_require__(62)) {
+    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
+  }
+
+  wksExt.f = function (name) {
+    return wrap(wks(name));
+  };
+}
+
+$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });
+
+for (var es6Symbols = (
+  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
+  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
+).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);
+
+for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);
+
+$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
+  // 19.4.2.1 Symbol.for(key)
+  'for': function (key) {
+    return has(SymbolRegistry, key += '')
+      ? SymbolRegistry[key]
+      : SymbolRegistry[key] = $Symbol(key);
+  },
+  // 19.4.2.5 Symbol.keyFor(sym)
+  keyFor: function keyFor(sym) {
+    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
+    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
+  },
+  useSetter: function () { setter = true; },
+  useSimple: function () { setter = false; }
+});
+
+$export($export.S + $export.F * !USE_NATIVE, 'Object', {
+  // 19.1.2.2 Object.create(O [, Properties])
+  create: $create,
+  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
+  defineProperty: $defineProperty,
+  // 19.1.2.3 Object.defineProperties(O, Properties)
+  defineProperties: $defineProperties,
+  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
+  // 19.1.2.7 Object.getOwnPropertyNames(O)
+  getOwnPropertyNames: $getOwnPropertyNames,
+  // 19.1.2.8 Object.getOwnPropertySymbols(O)
+  getOwnPropertySymbols: $getOwnPropertySymbols
+});
+
+// 24.3.2 JSON.stringify(value [, replacer [, space]])
+$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
+  var S = $Symbol();
+  // MS Edge converts symbol values to JSON as {}
+  // WebKit converts symbol values to JSON as null
+  // V8 throws on boxed symbols
+  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
+})), 'JSON', {
+  stringify: function stringify(it) {
+    var args = [it];
+    var i = 1;
+    var replacer, $replacer;
+    while (arguments.length > i) args.push(arguments[i++]);
+    $replacer = replacer = args[1];
+    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
+    if (!isArray(replacer)) replacer = function (key, value) {
+      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
+      if (!isSymbol(value)) return value;
+    };
+    args[1] = replacer;
+    return _stringify.apply($JSON, args);
+  }
+});
+
+// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
+$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(13)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
+// 19.4.3.5 Symbol.prototype[@@toStringTag]
+setToStringTag($Symbol, 'Symbol');
+// 20.2.1.9 Math[@@toStringTag]
+setToStringTag(Math, 'Math', true);
+// 24.3.3 JSON[@@toStringTag]
+setToStringTag(global.JSON, 'JSON', true);
+
+
+/***/ }),
+/* 219 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// all enumerable object keys, includes symbols
+var getKeys = __webpack_require__(29);
+var gOPS = __webpack_require__(72);
+var pIE = __webpack_require__(35);
+module.exports = function (it) {
+  var result = getKeys(it);
+  var getSymbols = gOPS.f;
+  if (getSymbols) {
+    var symbols = getSymbols(it);
+    var isEnum = pIE.f;
+    var i = 0;
+    var key;
+    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
+  } return result;
+};
+
+
+/***/ }),
+/* 220 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+var toIObject = __webpack_require__(17);
+var gOPN = __webpack_require__(105).f;
+var toString = {}.toString;
+
+var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
+  ? Object.getOwnPropertyNames(window) : [];
+
+var getWindowNames = function (it) {
+  try {
+    return gOPN(it);
+  } catch (e) {
+    return windowNames.slice();
+  }
+};
+
+module.exports.f = function getOwnPropertyNames(it) {
+  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
+};
+
+
+/***/ }),
+/* 221 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(71)('asyncIterator');
+
+
+/***/ }),
+/* 222 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(71)('observable');
+
+
+/***/ }),
+/* 223 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(224);
+var $Object = __webpack_require__(2).Object;
+module.exports = function defineProperty(it, key, desc) {
+  return $Object.defineProperty(it, key, desc);
+};
+
+
+/***/ }),
+/* 224 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__(3);
+// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperty: __webpack_require__(6).f });
+
+
+/***/ }),
+/* 225 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(226), __esModule: true };
+
+/***/ }),
+/* 226 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(73);
+__webpack_require__(24);
+__webpack_require__(28);
+__webpack_require__(227);
+__webpack_require__(232);
+__webpack_require__(234);
+__webpack_require__(235);
+module.exports = __webpack_require__(2).Map;
+
+
+/***/ }),
+/* 227 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var strong = __webpack_require__(108);
+var validate = __webpack_require__(75);
+var MAP = 'Map';
+
+// 23.1 Map Objects
+module.exports = __webpack_require__(113)(MAP, function (get) {
+  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+  // 23.1.3.6 Map.prototype.get(key)
+  get: function get(key) {
+    var entry = strong.getEntry(validate(this, MAP), key);
+    return entry && entry.v;
+  },
+  // 23.1.3.9 Map.prototype.set(key, value)
+  set: function set(key, value) {
+    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);
+  }
+}, strong, true);
+
+
+/***/ }),
+/* 228 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var global = __webpack_require__(10);
+var core = __webpack_require__(2);
+var dP = __webpack_require__(6);
+var DESCRIPTORS = __webpack_require__(5);
+var SPECIES = __webpack_require__(4)('species');
+
+module.exports = function (KEY) {
+  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
+  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
+    configurable: true,
+    get: function () { return this; }
+  });
+};
+
+
+/***/ }),
+/* 229 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 0 -> Array#forEach
+// 1 -> Array#map
+// 2 -> Array#filter
+// 3 -> Array#some
+// 4 -> Array#every
+// 5 -> Array#find
+// 6 -> Array#findIndex
+var ctx = __webpack_require__(20);
+var IObject = __webpack_require__(54);
+var toObject = __webpack_require__(30);
+var toLength = __webpack_require__(37);
+var asc = __webpack_require__(230);
+module.exports = function (TYPE, $create) {
+  var IS_MAP = TYPE == 1;
+  var IS_FILTER = TYPE == 2;
+  var IS_SOME = TYPE == 3;
+  var IS_EVERY = TYPE == 4;
+  var IS_FIND_INDEX = TYPE == 6;
+  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
+  var create = $create || asc;
+  return function ($this, callbackfn, that) {
+    var O = toObject($this);
+    var self = IObject(O);
+    var f = ctx(callbackfn, that, 3);
+    var length = toLength(self.length);
+    var index = 0;
+    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
+    var val, res;
+    for (;length > index; index++) if (NO_HOLES || index in self) {
+      val = self[index];
+      res = f(val, index, O);
+      if (TYPE) {
+        if (IS_MAP) result[index] = res;   // map
+        else if (res) switch (TYPE) {
+          case 3: return true;             // some
+          case 5: return val;              // find
+          case 6: return index;            // findIndex
+          case 2: result.push(val);        // filter
+        } else if (IS_EVERY) return false; // every
+      }
+    }
+    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
+  };
+};
+
+
+/***/ }),
+/* 230 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
+var speciesConstructor = __webpack_require__(231);
+
+module.exports = function (original, length) {
+  return new (speciesConstructor(original))(length);
+};
+
+
+/***/ }),
+/* 231 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(9);
+var isArray = __webpack_require__(104);
+var SPECIES = __webpack_require__(4)('species');
+
+module.exports = function (original) {
+  var C;
+  if (isArray(original)) {
+    C = original.constructor;
+    // cross-realm fallback
+    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
+    if (isObject(C)) {
+      C = C[SPECIES];
+      if (C === null) C = undefined;
+    }
+  } return C === undefined ? Array : C;
+};
+
+
+/***/ }),
+/* 232 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var $export = __webpack_require__(3);
+
+$export($export.P + $export.R, 'Map', { toJSON: __webpack_require__(114)('Map') });
+
+
+/***/ }),
+/* 233 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var forOf = __webpack_require__(41);
+
+module.exports = function (iter, ITERATOR) {
+  var result = [];
+  forOf(iter, false, result.push, result, ITERATOR);
+  return result;
+};
+
+
+/***/ }),
+/* 234 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
+__webpack_require__(115)('Map');
+
+
+/***/ }),
+/* 235 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
+__webpack_require__(116)('Map');
+
+
+/***/ }),
+/* 236 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _typeof2 = __webpack_require__(69);
+
+var _typeof3 = _interopRequireDefault(_typeof2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (self, call) {
+  if (!self) {
+    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+  }
+
+  return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;
+};
+
+/***/ }),
+/* 237 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _setPrototypeOf = __webpack_require__(238);
+
+var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);
+
+var _create = __webpack_require__(242);
+
+var _create2 = _interopRequireDefault(_create);
+
+var _typeof2 = __webpack_require__(69);
+
+var _typeof3 = _interopRequireDefault(_typeof2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (subClass, superClass) {
+  if (typeof superClass !== "function" && superClass !== null) {
+    throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));
+  }
+
+  subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {
+    constructor: {
+      value: subClass,
+      enumerable: false,
+      writable: true,
+      configurable: true
+    }
+  });
+  if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;
+};
+
+/***/ }),
+/* 238 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(239), __esModule: true };
+
+/***/ }),
+/* 239 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(240);
+module.exports = __webpack_require__(2).Object.setPrototypeOf;
+
+
+/***/ }),
+/* 240 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.3.19 Object.setPrototypeOf(O, proto)
+var $export = __webpack_require__(3);
+$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(241).set });
+
+
+/***/ }),
+/* 241 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Works with __proto__ only. Old v8 can't work with null proto objects.
+/* eslint-disable no-proto */
+var isObject = __webpack_require__(9);
+var anObject = __webpack_require__(14);
+var check = function (O, proto) {
+  anObject(O);
+  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
+};
+module.exports = {
+  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
+    function (test, buggy, set) {
+      try {
+        set = __webpack_require__(20)(Function.call, __webpack_require__(57).f(Object.prototype, '__proto__').set, 2);
+        set(test, []);
+        buggy = !(test instanceof Array);
+      } catch (e) { buggy = true; }
+      return function setPrototypeOf(O, proto) {
+        check(O, proto);
+        if (buggy) O.__proto__ = proto;
+        else set(O, proto);
+        return O;
+      };
+    }({}, false) : undefined),
+  check: check
+};
+
+
+/***/ }),
+/* 242 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(243), __esModule: true };
+
+/***/ }),
+/* 243 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(244);
+var $Object = __webpack_require__(2).Object;
+module.exports = function create(P, D) {
+  return $Object.create(P, D);
+};
+
+
+/***/ }),
+/* 244 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__(3);
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+$export($export.S, 'Object', { create: __webpack_require__(36) });
+
+
+/***/ }),
+/* 245 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(246), __esModule: true };
+
+/***/ }),
+/* 246 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(247);
+var $Object = __webpack_require__(2).Object;
+module.exports = function defineProperties(T, D) {
+  return $Object.defineProperties(T, D);
+};
+
+
+/***/ }),
+/* 247 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__(3);
+// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
+$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperties: __webpack_require__(100) });
+
+
+/***/ }),
+/* 248 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var pSlice = Array.prototype.slice;
+var objectKeys = __webpack_require__(249);
+var isArguments = __webpack_require__(250);
+
+var deepEqual = module.exports = function (actual, expected, opts) {
+  if (!opts) opts = {};
+  // 7.1. All identical values are equivalent, as determined by ===.
+  if (actual === expected) {
+    return true;
+
+  } else if (actual instanceof Date && expected instanceof Date) {
+    return actual.getTime() === expected.getTime();
+
+  // 7.3. Other pairs that do not both pass typeof value == 'object',
+  // equivalence is determined by ==.
+  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {
+    return opts.strict ? actual === expected : actual == expected;
+
+  // 7.4. For all other Object pairs, including Array objects, equivalence is
+  // determined by having the same number of owned properties (as verified
+  // with Object.prototype.hasOwnProperty.call), the same set of keys
+  // (although not necessarily the same order), equivalent values for every
+  // corresponding key, and an identical 'prototype' property. Note: this
+  // accounts for both named and indexed properties on Arrays.
+  } else {
+    return objEquiv(actual, expected, opts);
+  }
+}
+
+function isUndefinedOrNull(value) {
+  return value === null || value === undefined;
+}
+
+function isBuffer (x) {
+  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;
+  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
+    return false;
+  }
+  if (x.length > 0 && typeof x[0] !== 'number') return false;
+  return true;
+}
+
+function objEquiv(a, b, opts) {
+  var i, key;
+  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
+    return false;
+  // an identical 'prototype' property.
+  if (a.prototype !== b.prototype) return false;
+  //~~~I've managed to break Object.keys through screwy arguments passing.
+  //   Converting to array solves the problem.
+  if (isArguments(a)) {
+    if (!isArguments(b)) {
+      return false;
+    }
+    a = pSlice.call(a);
+    b = pSlice.call(b);
+    return deepEqual(a, b, opts);
+  }
+  if (isBuffer(a)) {
+    if (!isBuffer(b)) {
+      return false;
+    }
+    if (a.length !== b.length) return false;
+    for (i = 0; i < a.length; i++) {
+      if (a[i] !== b[i]) return false;
+    }
+    return true;
+  }
+  try {
+    var ka = objectKeys(a),
+        kb = objectKeys(b);
+  } catch (e) {//happens when one is a string literal and the other isn't
+    return false;
+  }
+  // having the same number of owned properties (keys incorporates
+  // hasOwnProperty)
+  if (ka.length != kb.length)
+    return false;
+  //the same set of keys (although not necessarily the same order),
+  ka.sort();
+  kb.sort();
+  //~~~cheap key test
+  for (i = ka.length - 1; i >= 0; i--) {
+    if (ka[i] != kb[i])
+      return false;
+  }
+  //equivalent values for every corresponding key, and
+  //~~~possibly expensive deep test
+  for (i = ka.length - 1; i >= 0; i--) {
+    key = ka[i];
+    if (!deepEqual(a[key], b[key], opts)) return false;
+  }
+  return typeof a === typeof b;
+}
+
+
+/***/ }),
+/* 249 */
+/***/ (function(module, exports) {
+
+exports = module.exports = typeof Object.keys === 'function'
+  ? Object.keys : shim;
+
+exports.shim = shim;
+function shim (obj) {
+  var keys = [];
+  for (var key in obj) keys.push(key);
+  return keys;
+}
+
+
+/***/ }),
+/* 250 */
+/***/ (function(module, exports) {
+
+var supportsArgumentsClass = (function(){
+  return Object.prototype.toString.call(arguments)
+})() == '[object Arguments]';
+
+exports = module.exports = supportsArgumentsClass ? supported : unsupported;
+
+exports.supported = supported;
+function supported(object) {
+  return Object.prototype.toString.call(object) == '[object Arguments]';
+};
+
+exports.unsupported = unsupported;
+function unsupported(object){
+  return object &&
+    typeof object == 'object' &&
+    typeof object.length == 'number' &&
+    Object.prototype.hasOwnProperty.call(object, 'callee') &&
+    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||
+    false;
+};
+
+
+/***/ }),
+/* 251 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(252), __esModule: true };
+
+/***/ }),
+/* 252 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(253);
+module.exports = __webpack_require__(2).Object.assign;
+
+
+/***/ }),
+/* 253 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.3.1 Object.assign(target, source)
+var $export = __webpack_require__(3);
+
+$export($export.S + $export.F, 'Object', { assign: __webpack_require__(254) });
+
+
+/***/ }),
+/* 254 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// 19.1.2.1 Object.assign(target, source, ...)
+var getKeys = __webpack_require__(29);
+var gOPS = __webpack_require__(72);
+var pIE = __webpack_require__(35);
+var toObject = __webpack_require__(30);
+var IObject = __webpack_require__(54);
+var $assign = Object.assign;
+
+// should work with symbols and should have deterministic property order (V8 bug)
+module.exports = !$assign || __webpack_require__(19)(function () {
+  var A = {};
+  var B = {};
+  // eslint-disable-next-line no-undef
+  var S = Symbol();
+  var K = 'abcdefghijklmnopqrst';
+  A[S] = 7;
+  K.split('').forEach(function (k) { B[k] = k; });
+  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
+}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
+  var T = toObject(target);
+  var aLen = arguments.length;
+  var index = 1;
+  var getSymbols = gOPS.f;
+  var isEnum = pIE.f;
+  while (aLen > index) {
+    var S = IObject(arguments[index++]);
+    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
+    var length = keys.length;
+    var j = 0;
+    var key;
+    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
+  } return T;
+} : $assign;
+
+
+/***/ }),
+/* 255 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(256), __esModule: true };
+
+/***/ }),
+/* 256 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(257);
+module.exports = __webpack_require__(2).String.fromCodePoint;
+
+
+/***/ }),
+/* 257 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__(3);
+var toAbsoluteIndex = __webpack_require__(102);
+var fromCharCode = String.fromCharCode;
+var $fromCodePoint = String.fromCodePoint;
+
+// length should be 1, old FF problem
+$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
+  // 21.1.2.2 String.fromCodePoint(...codePoints)
+  fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars
+    var res = [];
+    var aLen = arguments.length;
+    var i = 0;
+    var code;
+    while (aLen > i) {
+      code = +arguments[i++];
+      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
+      res.push(code < 0x10000
+        ? fromCharCode(code)
+        : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
+      );
+    } return res.join('');
+  }
+});
+
+
+/***/ }),
+/* 258 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(259), __esModule: true };
+
+/***/ }),
+/* 259 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(24);
+__webpack_require__(260);
+module.exports = __webpack_require__(2).Array.from;
+
+
+/***/ }),
+/* 260 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var ctx = __webpack_require__(20);
+var $export = __webpack_require__(3);
+var toObject = __webpack_require__(30);
+var call = __webpack_require__(111);
+var isArrayIter = __webpack_require__(112);
+var toLength = __webpack_require__(37);
+var createProperty = __webpack_require__(261);
+var getIterFn = __webpack_require__(67);
+
+$export($export.S + $export.F * !__webpack_require__(262)(function (iter) { Array.from(iter); }), 'Array', {
+  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
+  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
+    var O = toObject(arrayLike);
+    var C = typeof this == 'function' ? this : Array;
+    var aLen = arguments.length;
+    var mapfn = aLen > 1 ? arguments[1] : undefined;
+    var mapping = mapfn !== undefined;
+    var index = 0;
+    var iterFn = getIterFn(O);
+    var length, result, step, iterator;
+    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
+    // if object isn't iterable or it's array with default iterator - use simple case
+    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
+      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
+        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
+      }
+    } else {
+      length = toLength(O.length);
+      for (result = new C(length); length > index; index++) {
+        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
+      }
+    }
+    result.length = index;
+    return result;
+  }
+});
+
+
+/***/ }),
+/* 261 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var $defineProperty = __webpack_require__(6);
+var createDesc = __webpack_require__(27);
+
+module.exports = function (object, index, value) {
+  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
+  else object[index] = value;
+};
+
+
+/***/ }),
+/* 262 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ITERATOR = __webpack_require__(4)('iterator');
+var SAFE_CLOSING = false;
+
+try {
+  var riter = [7][ITERATOR]();
+  riter['return'] = function () { SAFE_CLOSING = true; };
+  // eslint-disable-next-line no-throw-literal
+  Array.from(riter, function () { throw 2; });
+} catch (e) { /* empty */ }
+
+module.exports = function (exec, skipClosing) {
+  if (!skipClosing && !SAFE_CLOSING) return false;
+  var safe = false;
+  try {
+    var arr = [7];
+    var iter = arr[ITERATOR]();
+    iter.next = function () { return { done: safe = true }; };
+    arr[ITERATOR] = function () { return iter; };
+    exec(arr);
+  } catch (e) { /* empty */ }
+  return safe;
+};
+
+
+/***/ }),
+/* 263 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(264), __esModule: true };
+
+/***/ }),
+/* 264 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(73);
+__webpack_require__(24);
+__webpack_require__(28);
+__webpack_require__(265);
+__webpack_require__(266);
+__webpack_require__(267);
+__webpack_require__(268);
+module.exports = __webpack_require__(2).Set;
+
+
+/***/ }),
+/* 265 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var strong = __webpack_require__(108);
+var validate = __webpack_require__(75);
+var SET = 'Set';
+
+// 23.2 Set Objects
+module.exports = __webpack_require__(113)(SET, function (get) {
+  return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+  // 23.2.3.1 Set.prototype.add(value)
+  add: function add(value) {
+    return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);
+  }
+}, strong);
+
+
+/***/ }),
+/* 266 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var $export = __webpack_require__(3);
+
+$export($export.P + $export.R, 'Set', { toJSON: __webpack_require__(114)('Set') });
+
+
+/***/ }),
+/* 267 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of
+__webpack_require__(115)('Set');
+
+
+/***/ }),
+/* 268 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from
+__webpack_require__(116)('Set');
+
+
+/***/ }),
+/* 269 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.9.1
+var CATEGORY_BITS, CATEGORY_MASK, CATEGORY_SHIFT, COMBINING_BITS, COMBINING_MASK, COMBINING_SHIFT, EAW_BITS, EAW_MASK, EAW_SHIFT, NUMBER_BITS, NUMBER_MASK, SCRIPT_BITS, SCRIPT_MASK, SCRIPT_SHIFT, UnicodeTrie, bits, data, fs, log2, trie;
+
+UnicodeTrie = __webpack_require__(43);
+
+data = __webpack_require__(270);
+
+
+
+trie = new UnicodeTrie(Buffer("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","base64"));
+
+log2 = Math.log2 || function(n) {
+  return Math.log(n) / Math.LN2;
+};
+
+bits = function(n) {
+  return (log2(n) + 1) | 0;
+};
+
+CATEGORY_BITS = bits(data.categories.length - 1);
+
+COMBINING_BITS = bits(data.combiningClasses.length - 1);
+
+SCRIPT_BITS = bits(data.scripts.length - 1);
+
+EAW_BITS = bits(data.eaw.length - 1);
+
+NUMBER_BITS = 10;
+
+CATEGORY_SHIFT = COMBINING_BITS + SCRIPT_BITS + EAW_BITS + NUMBER_BITS;
+
+COMBINING_SHIFT = SCRIPT_BITS + EAW_BITS + NUMBER_BITS;
+
+SCRIPT_SHIFT = EAW_BITS + NUMBER_BITS;
+
+EAW_SHIFT = NUMBER_BITS;
+
+CATEGORY_MASK = (1 << CATEGORY_BITS) - 1;
+
+COMBINING_MASK = (1 << COMBINING_BITS) - 1;
+
+SCRIPT_MASK = (1 << SCRIPT_BITS) - 1;
+
+EAW_MASK = (1 << EAW_BITS) - 1;
+
+NUMBER_MASK = (1 << NUMBER_BITS) - 1;
+
+exports.getCategory = function(codePoint) {
+  var val;
+  val = trie.get(codePoint);
+  return data.categories[(val >> CATEGORY_SHIFT) & CATEGORY_MASK];
+};
+
+exports.getCombiningClass = function(codePoint) {
+  var val;
+  val = trie.get(codePoint);
+  return data.combiningClasses[(val >> COMBINING_SHIFT) & COMBINING_MASK];
+};
+
+exports.getScript = function(codePoint) {
+  var val;
+  val = trie.get(codePoint);
+  return data.scripts[(val >> SCRIPT_SHIFT) & SCRIPT_MASK];
+};
+
+exports.getEastAsianWidth = function(codePoint) {
+  var val;
+  val = trie.get(codePoint);
+  return data.eaw[(val >> EAW_SHIFT) & EAW_MASK];
+};
+
+exports.getNumericValue = function(codePoint) {
+  var denominator, exp, num, numerator, val;
+  val = trie.get(codePoint);
+  num = val & NUMBER_MASK;
+  if (num === 0) {
+    return null;
+  } else if (num <= 50) {
+    return num - 1;
+  } else if (num < 0x1e0) {
+    numerator = (num >> 4) - 12;
+    denominator = (num & 0xf) + 1;
+    return numerator / denominator;
+  } else if (num < 0x300) {
+    val = (num >> 5) - 14;
+    exp = (num & 0x1f) + 2;
+    while (exp > 0) {
+      val *= 10;
+      exp--;
+    }
+    return val;
+  } else {
+    val = (num >> 2) - 0xbf;
+    exp = (num & 3) + 1;
+    while (exp > 0) {
+      val *= 60;
+      exp--;
+    }
+    return val;
+  }
+};
+
+exports.isAlphabetic = function(codePoint) {
+  var ref;
+  return (ref = exports.getCategory(codePoint)) === 'Lu' || ref === 'Ll' || ref === 'Lt' || ref === 'Lm' || ref === 'Lo' || ref === 'Nl';
+};
+
+exports.isDigit = function(codePoint) {
+  return exports.getCategory(codePoint) === 'Nd';
+};
+
+exports.isPunctuation = function(codePoint) {
+  var ref;
+  return (ref = exports.getCategory(codePoint)) === 'Pc' || ref === 'Pd' || ref === 'Pe' || ref === 'Pf' || ref === 'Pi' || ref === 'Po' || ref === 'Ps';
+};
+
+exports.isLowerCase = function(codePoint) {
+  return exports.getCategory(codePoint) === 'Ll';
+};
+
+exports.isUpperCase = function(codePoint) {
+  return exports.getCategory(codePoint) === 'Lu';
+};
+
+exports.isTitleCase = function(codePoint) {
+  return exports.getCategory(codePoint) === 'Lt';
+};
+
+exports.isWhiteSpace = function(codePoint) {
+  var ref;
+  return (ref = exports.getCategory(codePoint)) === 'Zs' || ref === 'Zl' || ref === 'Zp';
+};
+
+exports.isBaseForm = function(codePoint) {
+  var ref;
+  return (ref = exports.getCategory(codePoint)) === 'Nd' || ref === 'No' || ref === 'Nl' || ref === 'Lu' || ref === 'Ll' || ref === 'Lt' || ref === 'Lm' || ref === 'Lo' || ref === 'Me' || ref === 'Mc';
+};
+
+exports.isMark = function(codePoint) {
+  var ref;
+  return (ref = exports.getCategory(codePoint)) === 'Mn' || ref === 'Me' || ref === 'Mc';
+};
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 270 */
+/***/ (function(module, exports) {
+
+module.exports = {"categories":["Cc","Zs","Po","Sc","Ps","Pe","Sm","Pd","Nd","Lu","Sk","Pc","Ll","So","Lo","Pi","Cf","No","Pf","Lt","Lm","Mn","Me","Mc","Nl","Zl","Zp","Cs","Co"],"combiningClasses":["Not_Reordered","Above","Above_Right","Below","Attached_Above_Right","Attached_Below","Overlay","Iota_Subscript","Double_Below","Double_Above","Below_Right","Above_Left","CCC10","CCC11","CCC12","CCC13","CCC14","CCC15","CCC16","CCC17","CCC18","CCC19","CCC20","CCC21","CCC22","CCC23","CCC24","CCC25","CCC30","CCC31","CCC32","CCC27","CCC28","CCC29","CCC33","CCC34","CCC35","CCC36","Nukta","Virama","CCC84","CCC91","CCC103","CCC107","CCC118","CCC122","CCC129","CCC130","CCC132","Attached_Above","Below_Left","Left","Kana_Voicing","CCC26","Right"],"scripts":["Common","Latin","Bopomofo","Inherited","Greek","Coptic","Cyrillic","Armenian","Hebrew","Arabic","Syriac","Thaana","Nko","Samaritan","Mandaic","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","Hangul","Ethiopic","Cherokee","Canadian_Aboriginal","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","Tai_Le","New_Tai_Lue","Buginese","Tai_Tham","Balinese","Sundanese","Batak","Lepcha","Ol_Chiki","Braille","Glagolitic","Tifinagh","Han","Hiragana","Katakana","Yi","Lisu","Vai","Bamum","Syloti_Nagri","Phags_Pa","Saurashtra","Kayah_Li","Rejang","Javanese","Cham","Tai_Viet","Meetei_Mayek","null","Linear_B","Lycian","Carian","Old_Italic","Gothic","Old_Permic","Ugaritic","Old_Persian","Deseret","Shavian","Osmanya","Elbasan","Caucasian_Albanian","Linear_A","Cypriot","Imperial_Aramaic","Palmyrene","Nabataean","Hatran","Phoenician","Lydian","Meroitic_Hieroglyphs","Meroitic_Cursive","Kharoshthi","Old_South_Arabian","Old_North_Arabian","Manichaean","Avestan","Inscriptional_Parthian","Inscriptional_Pahlavi","Psalter_Pahlavi","Old_Turkic","Old_Hungarian","Brahmi","Kaithi","Sora_Sompeng","Chakma","Mahajani","Sharada","Khojki","Multani","Khudawadi","Grantha","Tirhuta","Siddham","Modi","Takri","Ahom","Warang_Citi","Pau_Cin_Hau","Cuneiform","Egyptian_Hieroglyphs","Anatolian_Hieroglyphs","Mro","Bassa_Vah","Pahawh_Hmong","Miao","Duployan","SignWriting","Mende_Kikakui"],"eaw":["N","Na","A","W","H","F"]}
+
+/***/ }),
+/* 271 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var _slicedToArray = _interopDefault(__webpack_require__(272));
+var _getIterator = _interopDefault(__webpack_require__(60));
+var _defineProperty = _interopDefault(__webpack_require__(276));
+var _regeneratorRuntime = _interopDefault(__webpack_require__(277));
+var _Symbol$iterator = _interopDefault(__webpack_require__(103));
+var _classCallCheck = _interopDefault(__webpack_require__(106));
+var _createClass = _interopDefault(__webpack_require__(107));
+
+var INITIAL_STATE = 1;
+var FAIL_STATE = 0;
+
+/**
+ * A StateMachine represents a deterministic finite automaton.
+ * It can perform matches over a sequence of values, similar to a regular expression.
+ */
+
+var StateMachine = function () {
+  function StateMachine(dfa) {
+    _classCallCheck(this, StateMachine);
+
+    this.stateTable = dfa.stateTable;
+    this.accepting = dfa.accepting;
+    this.tags = dfa.tags;
+  }
+
+  /**
+   * Returns an iterable object that yields pattern matches over the input sequence.
+   * Matches are of the form [startIndex, endIndex, tags].
+   */
+
+
+  _createClass(StateMachine, [{
+    key: 'match',
+    value: function match(str) {
+      var self = this;
+      return _defineProperty({}, _Symbol$iterator, _regeneratorRuntime.mark(function _callee() {
+        var state, startRun, lastAccepting, lastState, p, c;
+        return _regeneratorRuntime.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                state = INITIAL_STATE;
+                startRun = null;
+                lastAccepting = null;
+                lastState = null;
+                p = 0;
+
+              case 5:
+                if (!(p < str.length)) {
+                  _context.next = 21;
+                  break;
+                }
+
+                c = str[p];
+
+
+                lastState = state;
+                state = self.stateTable[state][c];
+
+                if (!(state === FAIL_STATE)) {
+                  _context.next = 15;
+                  break;
+                }
+
+                if (!(startRun != null && lastAccepting != null && lastAccepting >= startRun)) {
+                  _context.next = 13;
+                  break;
+                }
+
+                _context.next = 13;
+                return [startRun, lastAccepting, self.tags[lastState]];
+
+              case 13:
+
+                // reset the state as if we started over from the initial state
+                state = self.stateTable[INITIAL_STATE][c];
+                startRun = null;
+
+              case 15:
+
+                // start a run if not in the failure state
+                if (state !== FAIL_STATE && startRun == null) {
+                  startRun = p;
+                }
+
+                // if accepting, mark the potential match end
+                if (self.accepting[state]) {
+                  lastAccepting = p;
+                }
+
+                // reset the state to the initial state if we get into the failure state
+                if (state === FAIL_STATE) {
+                  state = INITIAL_STATE;
+                }
+
+              case 18:
+                p++;
+                _context.next = 5;
+                break;
+
+              case 21:
+                if (!(startRun != null && lastAccepting != null && lastAccepting >= startRun)) {
+                  _context.next = 24;
+                  break;
+                }
+
+                _context.next = 24;
+                return [startRun, lastAccepting, self.tags[state]];
+
+              case 24:
+              case 'end':
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
+    }
+
+    /**
+     * For each match over the input sequence, action functions matching
+     * the tag definitions in the input pattern are called with the startIndex,
+     * endIndex, and sub-match sequence.
+     */
+
+  }, {
+    key: 'apply',
+    value: function apply(str, actions) {
+      var _iteratorNormalCompletion = true;
+      var _didIteratorError = false;
+      var _iteratorError = undefined;
+
+      try {
+        for (var _iterator = _getIterator(this.match(str)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+          var _step$value = _slicedToArray(_step.value, 3);
+
+          var start = _step$value[0];
+          var end = _step$value[1];
+          var tags = _step$value[2];
+          var _iteratorNormalCompletion2 = true;
+          var _didIteratorError2 = false;
+          var _iteratorError2 = undefined;
+
+          try {
+            for (var _iterator2 = _getIterator(tags), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+              var tag = _step2.value;
+
+              if (typeof actions[tag] === 'function') {
+                actions[tag](start, end, str.slice(start, end + 1));
+              }
+            }
+          } catch (err) {
+            _didIteratorError2 = true;
+            _iteratorError2 = err;
+          } finally {
+            try {
+              if (!_iteratorNormalCompletion2 && _iterator2.return) {
+                _iterator2.return();
+              }
+            } finally {
+              if (_didIteratorError2) {
+                throw _iteratorError2;
+              }
+            }
+          }
+        }
+      } catch (err) {
+        _didIteratorError = true;
+        _iteratorError = err;
+      } finally {
+        try {
+          if (!_iteratorNormalCompletion && _iterator.return) {
+            _iterator.return();
+          }
+        } finally {
+          if (_didIteratorError) {
+            throw _iteratorError;
+          }
+        }
+      }
+    }
+  }]);
+
+  return StateMachine;
+}();
+
+module.exports = StateMachine;
+
+
+/***/ }),
+/* 272 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _isIterable2 = __webpack_require__(273);
+
+var _isIterable3 = _interopRequireDefault(_isIterable2);
+
+var _getIterator2 = __webpack_require__(60);
+
+var _getIterator3 = _interopRequireDefault(_getIterator2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function () {
+  function sliceIterator(arr, i) {
+    var _arr = [];
+    var _n = true;
+    var _d = false;
+    var _e = undefined;
+
+    try {
+      for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {
+        _arr.push(_s.value);
+
+        if (i && _arr.length === i) break;
+      }
+    } catch (err) {
+      _d = true;
+      _e = err;
+    } finally {
+      try {
+        if (!_n && _i["return"]) _i["return"]();
+      } finally {
+        if (_d) throw _e;
+      }
+    }
+
+    return _arr;
+  }
+
+  return function (arr, i) {
+    if (Array.isArray(arr)) {
+      return arr;
+    } else if ((0, _isIterable3.default)(Object(arr))) {
+      return sliceIterator(arr, i);
+    } else {
+      throw new TypeError("Invalid attempt to destructure non-iterable instance");
+    }
+  };
+}();
+
+/***/ }),
+/* 273 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(274), __esModule: true };
+
+/***/ }),
+/* 274 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(28);
+__webpack_require__(24);
+module.exports = __webpack_require__(275);
+
+
+/***/ }),
+/* 275 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var classof = __webpack_require__(68);
+var ITERATOR = __webpack_require__(4)('iterator');
+var Iterators = __webpack_require__(23);
+module.exports = __webpack_require__(2).isIterable = function (it) {
+  var O = Object(it);
+  return O[ITERATOR] !== undefined
+    || '@@iterator' in O
+    // eslint-disable-next-line no-prototype-builtins
+    || Iterators.hasOwnProperty(classof(O));
+};
+
+
+/***/ }),
+/* 276 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _defineProperty = __webpack_require__(74);
+
+var _defineProperty2 = _interopRequireDefault(_defineProperty);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (obj, key, value) {
+  if (key in obj) {
+    (0, _defineProperty2.default)(obj, key, {
+      value: value,
+      enumerable: true,
+      configurable: true,
+      writable: true
+    });
+  } else {
+    obj[key] = value;
+  }
+
+  return obj;
+};
+
+/***/ }),
+/* 277 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(278);
+
+
+/***/ }),
+/* 278 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+// This method of obtaining a reference to the global object needs to be
+// kept identical to the way it is obtained in runtime.js
+var g = (function() { return this })() || Function("return this")();
+
+// Use `getOwnPropertyNames` because not all browsers support calling
+// `hasOwnProperty` on the global `self` object in a worker. See #183.
+var hadRuntime = g.regeneratorRuntime &&
+  Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
+
+// Save the old regeneratorRuntime in case it needs to be restored later.
+var oldRuntime = hadRuntime && g.regeneratorRuntime;
+
+// Force reevalutation of runtime.js.
+g.regeneratorRuntime = undefined;
+
+module.exports = __webpack_require__(279);
+
+if (hadRuntime) {
+  // Restore the original runtime.
+  g.regeneratorRuntime = oldRuntime;
+} else {
+  // Remove the global property added by runtime.js.
+  try {
+    delete g.regeneratorRuntime;
+  } catch(e) {
+    g.regeneratorRuntime = undefined;
+  }
+}
+
+
+/***/ }),
+/* 279 */
+/***/ (function(module, exports) {
+
+/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+!(function(global) {
+  "use strict";
+
+  var Op = Object.prototype;
+  var hasOwn = Op.hasOwnProperty;
+  var undefined; // More compressible than void 0.
+  var $Symbol = typeof Symbol === "function" ? Symbol : {};
+  var iteratorSymbol = $Symbol.iterator || "@@iterator";
+  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
+  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
+
+  var inModule = typeof module === "object";
+  var runtime = global.regeneratorRuntime;
+  if (runtime) {
+    if (inModule) {
+      // If regeneratorRuntime is defined globally and we're in a module,
+      // make the exports object identical to regeneratorRuntime.
+      module.exports = runtime;
+    }
+    // Don't bother evaluating the rest of this file if the runtime was
+    // already defined globally.
+    return;
+  }
+
+  // Define the runtime globally (as expected by generated code) as either
+  // module.exports (if we're in a module) or a new, empty object.
+  runtime = global.regeneratorRuntime = inModule ? module.exports : {};
+
+  function wrap(innerFn, outerFn, self, tryLocsList) {
+    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
+    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
+    var generator = Object.create(protoGenerator.prototype);
+    var context = new Context(tryLocsList || []);
+
+    // The ._invoke method unifies the implementations of the .next,
+    // .throw, and .return methods.
+    generator._invoke = makeInvokeMethod(innerFn, self, context);
+
+    return generator;
+  }
+  runtime.wrap = wrap;
+
+  // Try/catch helper to minimize deoptimizations. Returns a completion
+  // record like context.tryEntries[i].completion. This interface could
+  // have been (and was previously) designed to take a closure to be
+  // invoked without arguments, but in all the cases we care about we
+  // already have an existing method we want to call, so there's no need
+  // to create a new function object. We can even get away with assuming
+  // the method takes exactly one argument, since that happens to be true
+  // in every case, so we don't have to touch the arguments object. The
+  // only additional allocation required is the completion record, which
+  // has a stable shape and so hopefully should be cheap to allocate.
+  function tryCatch(fn, obj, arg) {
+    try {
+      return { type: "normal", arg: fn.call(obj, arg) };
+    } catch (err) {
+      return { type: "throw", arg: err };
+    }
+  }
+
+  var GenStateSuspendedStart = "suspendedStart";
+  var GenStateSuspendedYield = "suspendedYield";
+  var GenStateExecuting = "executing";
+  var GenStateCompleted = "completed";
+
+  // Returning this object from the innerFn has the same effect as
+  // breaking out of the dispatch switch statement.
+  var ContinueSentinel = {};
+
+  // Dummy constructor functions that we use as the .constructor and
+  // .constructor.prototype properties for functions that return Generator
+  // objects. For full spec compliance, you may wish to configure your
+  // minifier not to mangle the names of these two functions.
+  function Generator() {}
+  function GeneratorFunction() {}
+  function GeneratorFunctionPrototype() {}
+
+  // This is a polyfill for %IteratorPrototype% for environments that
+  // don't natively support it.
+  var IteratorPrototype = {};
+  IteratorPrototype[iteratorSymbol] = function () {
+    return this;
+  };
+
+  var getProto = Object.getPrototypeOf;
+  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
+  if (NativeIteratorPrototype &&
+      NativeIteratorPrototype !== Op &&
+      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
+    // This environment has a native %IteratorPrototype%; use it instead
+    // of the polyfill.
+    IteratorPrototype = NativeIteratorPrototype;
+  }
+
+  var Gp = GeneratorFunctionPrototype.prototype =
+    Generator.prototype = Object.create(IteratorPrototype);
+  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
+  GeneratorFunctionPrototype.constructor = GeneratorFunction;
+  GeneratorFunctionPrototype[toStringTagSymbol] =
+    GeneratorFunction.displayName = "GeneratorFunction";
+
+  // Helper for defining the .next, .throw, and .return methods of the
+  // Iterator interface in terms of a single ._invoke method.
+  function defineIteratorMethods(prototype) {
+    ["next", "throw", "return"].forEach(function(method) {
+      prototype[method] = function(arg) {
+        return this._invoke(method, arg);
+      };
+    });
+  }
+
+  runtime.isGeneratorFunction = function(genFun) {
+    var ctor = typeof genFun === "function" && genFun.constructor;
+    return ctor
+      ? ctor === GeneratorFunction ||
+        // For the native GeneratorFunction constructor, the best we can
+        // do is to check its .name property.
+        (ctor.displayName || ctor.name) === "GeneratorFunction"
+      : false;
+  };
+
+  runtime.mark = function(genFun) {
+    if (Object.setPrototypeOf) {
+      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
+    } else {
+      genFun.__proto__ = GeneratorFunctionPrototype;
+      if (!(toStringTagSymbol in genFun)) {
+        genFun[toStringTagSymbol] = "GeneratorFunction";
+      }
+    }
+    genFun.prototype = Object.create(Gp);
+    return genFun;
+  };
+
+  // Within the body of any async function, `await x` is transformed to
+  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
+  // `hasOwn.call(value, "__await")` to determine if the yielded value is
+  // meant to be awaited.
+  runtime.awrap = function(arg) {
+    return { __await: arg };
+  };
+
+  function AsyncIterator(generator) {
+    function invoke(method, arg, resolve, reject) {
+      var record = tryCatch(generator[method], generator, arg);
+      if (record.type === "throw") {
+        reject(record.arg);
+      } else {
+        var result = record.arg;
+        var value = result.value;
+        if (value &&
+            typeof value === "object" &&
+            hasOwn.call(value, "__await")) {
+          return Promise.resolve(value.__await).then(function(value) {
+            invoke("next", value, resolve, reject);
+          }, function(err) {
+            invoke("throw", err, resolve, reject);
+          });
+        }
+
+        return Promise.resolve(value).then(function(unwrapped) {
+          // When a yielded Promise is resolved, its final value becomes
+          // the .value of the Promise<{value,done}> result for the
+          // current iteration. If the Promise is rejected, however, the
+          // result for this iteration will be rejected with the same
+          // reason. Note that rejections of yielded Promises are not
+          // thrown back into the generator function, as is the case
+          // when an awaited Promise is rejected. This difference in
+          // behavior between yield and await is important, because it
+          // allows the consumer to decide what to do with the yielded
+          // rejection (swallow it and continue, manually .throw it back
+          // into the generator, abandon iteration, whatever). With
+          // await, by contrast, there is no opportunity to examine the
+          // rejection reason outside the generator function, so the
+          // only option is to throw it from the await expression, and
+          // let the generator function handle the exception.
+          result.value = unwrapped;
+          resolve(result);
+        }, reject);
+      }
+    }
+
+    var previousPromise;
+
+    function enqueue(method, arg) {
+      function callInvokeWithMethodAndArg() {
+        return new Promise(function(resolve, reject) {
+          invoke(method, arg, resolve, reject);
+        });
+      }
+
+      return previousPromise =
+        // If enqueue has been called before, then we want to wait until
+        // all previous Promises have been resolved before calling invoke,
+        // so that results are always delivered in the correct order. If
+        // enqueue has not been called before, then it is important to
+        // call invoke immediately, without waiting on a callback to fire,
+        // so that the async generator function has the opportunity to do
+        // any necessary setup in a predictable way. This predictability
+        // is why the Promise constructor synchronously invokes its
+        // executor callback, and why async functions synchronously
+        // execute code before the first await. Since we implement simple
+        // async functions in terms of async generators, it is especially
+        // important to get this right, even though it requires care.
+        previousPromise ? previousPromise.then(
+          callInvokeWithMethodAndArg,
+          // Avoid propagating failures to Promises returned by later
+          // invocations of the iterator.
+          callInvokeWithMethodAndArg
+        ) : callInvokeWithMethodAndArg();
+    }
+
+    // Define the unified helper method that is used to implement .next,
+    // .throw, and .return (see defineIteratorMethods).
+    this._invoke = enqueue;
+  }
+
+  defineIteratorMethods(AsyncIterator.prototype);
+  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
+    return this;
+  };
+  runtime.AsyncIterator = AsyncIterator;
+
+  // Note that simple async functions are implemented on top of
+  // AsyncIterator objects; they just return a Promise for the value of
+  // the final result produced by the iterator.
+  runtime.async = function(innerFn, outerFn, self, tryLocsList) {
+    var iter = new AsyncIterator(
+      wrap(innerFn, outerFn, self, tryLocsList)
+    );
+
+    return runtime.isGeneratorFunction(outerFn)
+      ? iter // If outerFn is a generator, return the full iterator.
+      : iter.next().then(function(result) {
+          return result.done ? result.value : iter.next();
+        });
+  };
+
+  function makeInvokeMethod(innerFn, self, context) {
+    var state = GenStateSuspendedStart;
+
+    return function invoke(method, arg) {
+      if (state === GenStateExecuting) {
+        throw new Error("Generator is already running");
+      }
+
+      if (state === GenStateCompleted) {
+        if (method === "throw") {
+          throw arg;
+        }
+
+        // Be forgiving, per 25.3.3.3.3 of the spec:
+        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
+        return doneResult();
+      }
+
+      context.method = method;
+      context.arg = arg;
+
+      while (true) {
+        var delegate = context.delegate;
+        if (delegate) {
+          var delegateResult = maybeInvokeDelegate(delegate, context);
+          if (delegateResult) {
+            if (delegateResult === ContinueSentinel) continue;
+            return delegateResult;
+          }
+        }
+
+        if (context.method === "next") {
+          // Setting context._sent for legacy support of Babel's
+          // function.sent implementation.
+          context.sent = context._sent = context.arg;
+
+        } else if (context.method === "throw") {
+          if (state === GenStateSuspendedStart) {
+            state = GenStateCompleted;
+            throw context.arg;
+          }
+
+          context.dispatchException(context.arg);
+
+        } else if (context.method === "return") {
+          context.abrupt("return", context.arg);
+        }
+
+        state = GenStateExecuting;
+
+        var record = tryCatch(innerFn, self, context);
+        if (record.type === "normal") {
+          // If an exception is thrown from innerFn, we leave state ===
+          // GenStateExecuting and loop back for another invocation.
+          state = context.done
+            ? GenStateCompleted
+            : GenStateSuspendedYield;
+
+          if (record.arg === ContinueSentinel) {
+            continue;
+          }
+
+          return {
+            value: record.arg,
+            done: context.done
+          };
+
+        } else if (record.type === "throw") {
+          state = GenStateCompleted;
+          // Dispatch the exception by looping back around to the
+          // context.dispatchException(context.arg) call above.
+          context.method = "throw";
+          context.arg = record.arg;
+        }
+      }
+    };
+  }
+
+  // Call delegate.iterator[context.method](context.arg) and handle the
+  // result, either by returning a { value, done } result from the
+  // delegate iterator, or by modifying context.method and context.arg,
+  // setting context.delegate to null, and returning the ContinueSentinel.
+  function maybeInvokeDelegate(delegate, context) {
+    var method = delegate.iterator[context.method];
+    if (method === undefined) {
+      // A .throw or .return when the delegate iterator has no .throw
+      // method always terminates the yield* loop.
+      context.delegate = null;
+
+      if (context.method === "throw") {
+        if (delegate.iterator.return) {
+          // If the delegate iterator has a return method, give it a
+          // chance to clean up.
+          context.method = "return";
+          context.arg = undefined;
+          maybeInvokeDelegate(delegate, context);
+
+          if (context.method === "throw") {
+            // If maybeInvokeDelegate(context) changed context.method from
+            // "return" to "throw", let that override the TypeError below.
+            return ContinueSentinel;
+          }
+        }
+
+        context.method = "throw";
+        context.arg = new TypeError(
+          "The iterator does not provide a 'throw' method");
+      }
+
+      return ContinueSentinel;
+    }
+
+    var record = tryCatch(method, delegate.iterator, context.arg);
+
+    if (record.type === "throw") {
+      context.method = "throw";
+      context.arg = record.arg;
+      context.delegate = null;
+      return ContinueSentinel;
+    }
+
+    var info = record.arg;
+
+    if (! info) {
+      context.method = "throw";
+      context.arg = new TypeError("iterator result is not an object");
+      context.delegate = null;
+      return ContinueSentinel;
+    }
+
+    if (info.done) {
+      // Assign the result of the finished delegate to the temporary
+      // variable specified by delegate.resultName (see delegateYield).
+      context[delegate.resultName] = info.value;
+
+      // Resume execution at the desired location (see delegateYield).
+      context.next = delegate.nextLoc;
+
+      // If context.method was "throw" but the delegate handled the
+      // exception, let the outer generator proceed normally. If
+      // context.method was "next", forget context.arg since it has been
+      // "consumed" by the delegate iterator. If context.method was
+      // "return", allow the original .return call to continue in the
+      // outer generator.
+      if (context.method !== "return") {
+        context.method = "next";
+        context.arg = undefined;
+      }
+
+    } else {
+      // Re-yield the result returned by the delegate method.
+      return info;
+    }
+
+    // The delegate iterator is finished, so forget it and continue with
+    // the outer generator.
+    context.delegate = null;
+    return ContinueSentinel;
+  }
+
+  // Define Generator.prototype.{next,throw,return} in terms of the
+  // unified ._invoke helper method.
+  defineIteratorMethods(Gp);
+
+  Gp[toStringTagSymbol] = "Generator";
+
+  // A Generator should always return itself as the iterator object when the
+  // @@iterator function is called on it. Some browsers' implementations of the
+  // iterator prototype chain incorrectly implement this, causing the Generator
+  // object to not be returned from this call. This ensures that doesn't happen.
+  // See https://github.com/facebook/regenerator/issues/274 for more details.
+  Gp[iteratorSymbol] = function() {
+    return this;
+  };
+
+  Gp.toString = function() {
+    return "[object Generator]";
+  };
+
+  function pushTryEntry(locs) {
+    var entry = { tryLoc: locs[0] };
+
+    if (1 in locs) {
+      entry.catchLoc = locs[1];
+    }
+
+    if (2 in locs) {
+      entry.finallyLoc = locs[2];
+      entry.afterLoc = locs[3];
+    }
+
+    this.tryEntries.push(entry);
+  }
+
+  function resetTryEntry(entry) {
+    var record = entry.completion || {};
+    record.type = "normal";
+    delete record.arg;
+    entry.completion = record;
+  }
+
+  function Context(tryLocsList) {
+    // The root entry object (effectively a try statement without a catch
+    // or a finally block) gives us a place to store values thrown from
+    // locations where there is no enclosing try statement.
+    this.tryEntries = [{ tryLoc: "root" }];
+    tryLocsList.forEach(pushTryEntry, this);
+    this.reset(true);
+  }
+
+  runtime.keys = function(object) {
+    var keys = [];
+    for (var key in object) {
+      keys.push(key);
+    }
+    keys.reverse();
+
+    // Rather than returning an object with a next method, we keep
+    // things simple and return the next function itself.
+    return function next() {
+      while (keys.length) {
+        var key = keys.pop();
+        if (key in object) {
+          next.value = key;
+          next.done = false;
+          return next;
+        }
+      }
+
+      // To avoid creating an additional object, we just hang the .value
+      // and .done properties off the next function object itself. This
+      // also ensures that the minifier will not anonymize the function.
+      next.done = true;
+      return next;
+    };
+  };
+
+  function values(iterable) {
+    if (iterable) {
+      var iteratorMethod = iterable[iteratorSymbol];
+      if (iteratorMethod) {
+        return iteratorMethod.call(iterable);
+      }
+
+      if (typeof iterable.next === "function") {
+        return iterable;
+      }
+
+      if (!isNaN(iterable.length)) {
+        var i = -1, next = function next() {
+          while (++i < iterable.length) {
+            if (hasOwn.call(iterable, i)) {
+              next.value = iterable[i];
+              next.done = false;
+              return next;
+            }
+          }
+
+          next.value = undefined;
+          next.done = true;
+
+          return next;
+        };
+
+        return next.next = next;
+      }
+    }
+
+    // Return an iterator with no values.
+    return { next: doneResult };
+  }
+  runtime.values = values;
+
+  function doneResult() {
+    return { value: undefined, done: true };
+  }
+
+  Context.prototype = {
+    constructor: Context,
+
+    reset: function(skipTempReset) {
+      this.prev = 0;
+      this.next = 0;
+      // Resetting context._sent for legacy support of Babel's
+      // function.sent implementation.
+      this.sent = this._sent = undefined;
+      this.done = false;
+      this.delegate = null;
+
+      this.method = "next";
+      this.arg = undefined;
+
+      this.tryEntries.forEach(resetTryEntry);
+
+      if (!skipTempReset) {
+        for (var name in this) {
+          // Not sure about the optimal order of these conditions:
+          if (name.charAt(0) === "t" &&
+              hasOwn.call(this, name) &&
+              !isNaN(+name.slice(1))) {
+            this[name] = undefined;
+          }
+        }
+      }
+    },
+
+    stop: function() {
+      this.done = true;
+
+      var rootEntry = this.tryEntries[0];
+      var rootRecord = rootEntry.completion;
+      if (rootRecord.type === "throw") {
+        throw rootRecord.arg;
+      }
+
+      return this.rval;
+    },
+
+    dispatchException: function(exception) {
+      if (this.done) {
+        throw exception;
+      }
+
+      var context = this;
+      function handle(loc, caught) {
+        record.type = "throw";
+        record.arg = exception;
+        context.next = loc;
+
+        if (caught) {
+          // If the dispatched exception was caught by a catch block,
+          // then let that catch block handle the exception normally.
+          context.method = "next";
+          context.arg = undefined;
+        }
+
+        return !! caught;
+      }
+
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        var record = entry.completion;
+
+        if (entry.tryLoc === "root") {
+          // Exception thrown outside of any try block that could handle
+          // it, so set the completion value of the entire function to
+          // throw the exception.
+          return handle("end");
+        }
+
+        if (entry.tryLoc <= this.prev) {
+          var hasCatch = hasOwn.call(entry, "catchLoc");
+          var hasFinally = hasOwn.call(entry, "finallyLoc");
+
+          if (hasCatch && hasFinally) {
+            if (this.prev < entry.catchLoc) {
+              return handle(entry.catchLoc, true);
+            } else if (this.prev < entry.finallyLoc) {
+              return handle(entry.finallyLoc);
+            }
+
+          } else if (hasCatch) {
+            if (this.prev < entry.catchLoc) {
+              return handle(entry.catchLoc, true);
+            }
+
+          } else if (hasFinally) {
+            if (this.prev < entry.finallyLoc) {
+              return handle(entry.finallyLoc);
+            }
+
+          } else {
+            throw new Error("try statement without catch or finally");
+          }
+        }
+      }
+    },
+
+    abrupt: function(type, arg) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.tryLoc <= this.prev &&
+            hasOwn.call(entry, "finallyLoc") &&
+            this.prev < entry.finallyLoc) {
+          var finallyEntry = entry;
+          break;
+        }
+      }
+
+      if (finallyEntry &&
+          (type === "break" ||
+           type === "continue") &&
+          finallyEntry.tryLoc <= arg &&
+          arg <= finallyEntry.finallyLoc) {
+        // Ignore the finally entry if control is not jumping to a
+        // location outside the try/catch block.
+        finallyEntry = null;
+      }
+
+      var record = finallyEntry ? finallyEntry.completion : {};
+      record.type = type;
+      record.arg = arg;
+
+      if (finallyEntry) {
+        this.method = "next";
+        this.next = finallyEntry.finallyLoc;
+        return ContinueSentinel;
+      }
+
+      return this.complete(record);
+    },
+
+    complete: function(record, afterLoc) {
+      if (record.type === "throw") {
+        throw record.arg;
+      }
+
+      if (record.type === "break" ||
+          record.type === "continue") {
+        this.next = record.arg;
+      } else if (record.type === "return") {
+        this.rval = this.arg = record.arg;
+        this.method = "return";
+        this.next = "end";
+      } else if (record.type === "normal" && afterLoc) {
+        this.next = afterLoc;
+      }
+
+      return ContinueSentinel;
+    },
+
+    finish: function(finallyLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.finallyLoc === finallyLoc) {
+          this.complete(entry.completion, entry.afterLoc);
+          resetTryEntry(entry);
+          return ContinueSentinel;
+        }
+      }
+    },
+
+    "catch": function(tryLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.tryLoc === tryLoc) {
+          var record = entry.completion;
+          if (record.type === "throw") {
+            var thrown = record.arg;
+            resetTryEntry(entry);
+          }
+          return thrown;
+        }
+      }
+
+      // The context.catch method must only be called with a location
+      // argument that corresponds to a known catch block.
+      throw new Error("illegal catch attempt");
+    },
+
+    delegateYield: function(iterable, resultName, nextLoc) {
+      this.delegate = {
+        iterator: values(iterable),
+        resultName: resultName,
+        nextLoc: nextLoc
+      };
+
+      if (this.method === "next") {
+        // Deliberately forget the last sent value so that we don't
+        // accidentally pass it on to the delegate.
+        this.arg = undefined;
+      }
+
+      return ContinueSentinel;
+    }
+  };
+})(
+  // In sloppy mode, unbound `this` refers to the global object, fallback to
+  // Function constructor if we're in global strict mode. That is sadly a form
+  // of indirect eval which violates Content Security Policy.
+  (function() { return this })() || Function("return this")()
+);
+
+
+/***/ }),
+/* 280 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(281), __esModule: true };
+
+/***/ }),
+/* 281 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(282);
+module.exports = Math.pow(2, -52);
+
+
+/***/ }),
+/* 282 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 20.1.2.1 Number.EPSILON
+var $export = __webpack_require__(3);
+
+$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });
+
+
+/***/ }),
+/* 283 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {var clone = (function() {
+'use strict';
+
+/**
+ * Clones (copies) an Object using deep copying.
+ *
+ * This function supports circular references by default, but if you are certain
+ * there are no circular references in your object, you can save some CPU time
+ * by calling clone(obj, false).
+ *
+ * Caution: if `circular` is false and `parent` contains circular references,
+ * your program may enter an infinite loop and crash.
+ *
+ * @param `parent` - the object to be cloned
+ * @param `circular` - set to true if the object to be cloned may contain
+ *    circular references. (optional - true by default)
+ * @param `depth` - set to a number if the object is only to be cloned to
+ *    a particular depth. (optional - defaults to Infinity)
+ * @param `prototype` - sets the prototype to be used when cloning an object.
+ *    (optional - defaults to parent prototype).
+*/
+function clone(parent, circular, depth, prototype) {
+  var filter;
+  if (typeof circular === 'object') {
+    depth = circular.depth;
+    prototype = circular.prototype;
+    filter = circular.filter;
+    circular = circular.circular
+  }
+  // maintain two arrays for circular references, where corresponding parents
+  // and children have the same index
+  var allParents = [];
+  var allChildren = [];
+
+  var useBuffer = typeof Buffer != 'undefined';
+
+  if (typeof circular == 'undefined')
+    circular = true;
+
+  if (typeof depth == 'undefined')
+    depth = Infinity;
+
+  // recurse this function so we don't reset allParents and allChildren
+  function _clone(parent, depth) {
+    // cloning null always returns null
+    if (parent === null)
+      return null;
+
+    if (depth == 0)
+      return parent;
+
+    var child;
+    var proto;
+    if (typeof parent != 'object') {
+      return parent;
+    }
+
+    if (clone.__isArray(parent)) {
+      child = [];
+    } else if (clone.__isRegExp(parent)) {
+      child = new RegExp(parent.source, __getRegExpFlags(parent));
+      if (parent.lastIndex) child.lastIndex = parent.lastIndex;
+    } else if (clone.__isDate(parent)) {
+      child = new Date(parent.getTime());
+    } else if (useBuffer && Buffer.isBuffer(parent)) {
+      child = new Buffer(parent.length);
+      parent.copy(child);
+      return child;
+    } else {
+      if (typeof prototype == 'undefined') {
+        proto = Object.getPrototypeOf(parent);
+        child = Object.create(proto);
+      }
+      else {
+        child = Object.create(prototype);
+        proto = prototype;
+      }
+    }
+
+    if (circular) {
+      var index = allParents.indexOf(parent);
+
+      if (index != -1) {
+        return allChildren[index];
+      }
+      allParents.push(parent);
+      allChildren.push(child);
+    }
+
+    for (var i in parent) {
+      var attrs;
+      if (proto) {
+        attrs = Object.getOwnPropertyDescriptor(proto, i);
+      }
+
+      if (attrs && attrs.set == null) {
+        continue;
+      }
+      child[i] = _clone(parent[i], depth - 1);
+    }
+
+    return child;
+  }
+
+  return _clone(parent, depth);
+}
+
+/**
+ * Simple flat clone using prototype, accepts only objects, usefull for property
+ * override on FLAT configuration object (no nested props).
+ *
+ * USE WITH CAUTION! This may not behave as you wish if you do not know how this
+ * works.
+ */
+clone.clonePrototype = function clonePrototype(parent) {
+  if (parent === null)
+    return null;
+
+  var c = function () {};
+  c.prototype = parent;
+  return new c();
+};
+
+// private utility functions
+
+function __objToStr(o) {
+  return Object.prototype.toString.call(o);
+};
+clone.__objToStr = __objToStr;
+
+function __isDate(o) {
+  return typeof o === 'object' && __objToStr(o) === '[object Date]';
+};
+clone.__isDate = __isDate;
+
+function __isArray(o) {
+  return typeof o === 'object' && __objToStr(o) === '[object Array]';
+};
+clone.__isArray = __isArray;
+
+function __isRegExp(o) {
+  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';
+};
+clone.__isRegExp = __isRegExp;
+
+function __getRegExpFlags(re) {
+  var flags = '';
+  if (re.global) flags += 'g';
+  if (re.ignoreCase) flags += 'i';
+  if (re.multiline) flags += 'm';
+  return flags;
+};
+clone.__getRegExpFlags = __getRegExpFlags;
+
+return clone;
+})();
+
+if (typeof module === 'object' && module.exports) {
+  module.exports = clone;
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 284 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(117).BrotliDecompressBuffer;
+
+
+/***/ }),
+/* 285 */
+/***/ (function(module, exports) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Bit reading helpers
+*/
+
+var BROTLI_READ_SIZE = 4096;
+var BROTLI_IBUF_SIZE =  (2 * BROTLI_READ_SIZE + 32);
+var BROTLI_IBUF_MASK =  (2 * BROTLI_READ_SIZE - 1);
+
+var kBitMask = new Uint32Array([
+  0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,
+  65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215
+]);
+
+/* Input byte buffer, consist of a ringbuffer and a "slack" region where */
+/* bytes from the start of the ringbuffer are copied. */
+function BrotliBitReader(input) {
+  this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);
+  this.input_ = input;    /* input callback */
+  
+  this.reset();
+}
+
+BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;
+BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;
+
+BrotliBitReader.prototype.reset = function() {
+  this.buf_ptr_ = 0;      /* next input will write here */
+  this.val_ = 0;          /* pre-fetched bits */
+  this.pos_ = 0;          /* byte position in stream */
+  this.bit_pos_ = 0;      /* current bit-reading position in val_ */
+  this.bit_end_pos_ = 0;  /* bit-reading end position from LSB of val_ */
+  this.eos_ = 0;          /* input stream is finished */
+  
+  this.readMoreInput();
+  for (var i = 0; i < 4; i++) {
+    this.val_ |= this.buf_[this.pos_] << (8 * i);
+    ++this.pos_;
+  }
+  
+  return this.bit_end_pos_ > 0;
+};
+
+/* Fills up the input ringbuffer by calling the input callback.
+
+   Does nothing if there are at least 32 bytes present after current position.
+
+   Returns 0 if either:
+    - the input callback returned an error, or
+    - there is no more input and the position is past the end of the stream.
+
+   After encountering the end of the input stream, 32 additional zero bytes are
+   copied to the ringbuffer, therefore it is safe to call this function after
+   every 32 bytes of input is read.
+*/
+BrotliBitReader.prototype.readMoreInput = function() {
+  if (this.bit_end_pos_ > 256) {
+    return;
+  } else if (this.eos_) {
+    if (this.bit_pos_ > this.bit_end_pos_)
+      throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_);
+  } else {
+    var dst = this.buf_ptr_;
+    var bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE);
+    if (bytes_read < 0) {
+      throw new Error('Unexpected end of input');
+    }
+    
+    if (bytes_read < BROTLI_READ_SIZE) {
+      this.eos_ = 1;
+      /* Store 32 bytes of zero after the stream end. */
+      for (var p = 0; p < 32; p++)
+        this.buf_[dst + bytes_read + p] = 0;
+    }
+    
+    if (dst === 0) {
+      /* Copy the head of the ringbuffer to the slack region. */
+      for (var p = 0; p < 32; p++)
+        this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p];
+
+      this.buf_ptr_ = BROTLI_READ_SIZE;
+    } else {
+      this.buf_ptr_ = 0;
+    }
+    
+    this.bit_end_pos_ += bytes_read << 3;
+  }
+};
+
+/* Guarantees that there are at least 24 bits in the buffer. */
+BrotliBitReader.prototype.fillBitWindow = function() {    
+  while (this.bit_pos_ >= 8) {
+    this.val_ >>>= 8;
+    this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;
+    ++this.pos_;
+    this.bit_pos_ = this.bit_pos_ - 8 >>> 0;
+    this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;
+  }
+};
+
+/* Reads the specified number of bits from Read Buffer. */
+BrotliBitReader.prototype.readBits = function(n_bits) {
+  if (32 - this.bit_pos_ < n_bits) {
+    this.fillBitWindow();
+  }
+  
+  var val = ((this.val_ >>> this.bit_pos_) & kBitMask[n_bits]);
+  this.bit_pos_ += n_bits;
+  return val;
+};
+
+module.exports = BrotliBitReader;
+
+
+/***/ }),
+/* 286 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var base64 = __webpack_require__(287);
+var fs = __webpack_require__(8);
+
+/**
+ * The normal dictionary-data.js is quite large, which makes it 
+ * unsuitable for browser usage. In order to make it smaller, 
+ * we read dictionary.bin, which is a compressed version of
+ * the dictionary, and on initial load, Brotli decompresses 
+ * it's own dictionary. 😜
+ */
+exports.init = function() {
+  var BrotliDecompressBuffer = __webpack_require__(117).BrotliDecompressBuffer;
+  var compressed = base64.toByteArray(__webpack_require__(288));
+  return BrotliDecompressBuffer(compressed);
+};
+
+
+/***/ }),
+/* 287 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.byteLength = byteLength
+exports.toByteArray = toByteArray
+exports.fromByteArray = fromByteArray
+
+var lookup = []
+var revLookup = []
+var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
+
+var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+for (var i = 0, len = code.length; i < len; ++i) {
+  lookup[i] = code[i]
+  revLookup[code.charCodeAt(i)] = i
+}
+
+// Support decoding URL-safe base64 strings, as Node.js does.
+// See: https://en.wikipedia.org/wiki/Base64#URL_applications
+revLookup['-'.charCodeAt(0)] = 62
+revLookup['_'.charCodeAt(0)] = 63
+
+function placeHoldersCount (b64) {
+  var len = b64.length
+  if (len % 4 > 0) {
+    throw new Error('Invalid string. Length must be a multiple of 4')
+  }
+
+  // the number of equal signs (place holders)
+  // if there are two placeholders, than the two characters before it
+  // represent one byte
+  // if there is only one, then the three characters before it represent 2 bytes
+  // this is just a cheap hack to not do indexOf twice
+  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
+}
+
+function byteLength (b64) {
+  // base64 is 4/3 + up to two characters of the original data
+  return (b64.length * 3 / 4) - placeHoldersCount(b64)
+}
+
+function toByteArray (b64) {
+  var i, l, tmp, placeHolders, arr
+  var len = b64.length
+  placeHolders = placeHoldersCount(b64)
+
+  arr = new Arr((len * 3 / 4) - placeHolders)
+
+  // if there are placeholders, only get up to the last complete 4 chars
+  l = placeHolders > 0 ? len - 4 : len
+
+  var L = 0
+
+  for (i = 0; i < l; i += 4) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
+    arr[L++] = (tmp >> 16) & 0xFF
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  if (placeHolders === 2) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
+    arr[L++] = tmp & 0xFF
+  } else if (placeHolders === 1) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  return arr
+}
+
+function tripletToBase64 (num) {
+  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
+}
+
+function encodeChunk (uint8, start, end) {
+  var tmp
+  var output = []
+  for (var i = start; i < end; i += 3) {
+    tmp = ((uint8[i] << 16) & 0xFF0000) + ((uint8[i + 1] << 8) & 0xFF00) + (uint8[i + 2] & 0xFF)
+    output.push(tripletToBase64(tmp))
+  }
+  return output.join('')
+}
+
+function fromByteArray (uint8) {
+  var tmp
+  var len = uint8.length
+  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
+  var output = ''
+  var parts = []
+  var maxChunkLength = 16383 // must be multiple of 3
+
+  // go through the array every three bytes, we'll deal with trailing stuff later
+  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
+    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
+  }
+
+  // pad the end with zeros, but make sure to not forget the extra bytes
+  if (extraBytes === 1) {
+    tmp = uint8[len - 1]
+    output += lookup[tmp >> 2]
+    output += lookup[(tmp << 4) & 0x3F]
+    output += '=='
+  } else if (extraBytes === 2) {
+    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
+    output += lookup[tmp >> 10]
+    output += lookup[(tmp >> 4) & 0x3F]
+    output += lookup[(tmp << 2) & 0x3F]
+    output += '='
+  }
+
+  parts.push(output)
+
+  return parts.join('')
+}
+
+
+/***/ }),
+/* 288 */
+/***/ (function(module, exports) {
+
+module.exports="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";
+
+
+/***/ }),
+/* 289 */
+/***/ (function(module, exports) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Lookup table to map the previous two bytes to a context id.
+
+   There are four different context modeling modes defined here:
+     CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,
+     CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,
+     CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,
+     CONTEXT_SIGNED: second-order context model tuned for signed integers.
+
+   The context id for the UTF8 context model is calculated as follows. If p1
+   and p2 are the previous two bytes, we calcualte the context as
+
+     context = kContextLookup[p1] | kContextLookup[p2 + 256].
+
+   If the previous two bytes are ASCII characters (i.e. < 128), this will be
+   equivalent to
+
+     context = 4 * context1(p1) + context2(p2),
+
+   where context1 is based on the previous byte in the following way:
+
+     0  : non-ASCII control
+     1  : \t, \n, \r
+     2  : space
+     3  : other punctuation
+     4  : " '
+     5  : %
+     6  : ( < [ {
+     7  : ) > ] }
+     8  : , ; :
+     9  : .
+     10 : =
+     11 : number
+     12 : upper-case vowel
+     13 : upper-case consonant
+     14 : lower-case vowel
+     15 : lower-case consonant
+
+   and context2 is based on the second last byte:
+
+     0 : control, space
+     1 : punctuation
+     2 : upper-case letter, number
+     3 : lower-case letter
+
+   If the last byte is ASCII, and the second last byte is not (in a valid UTF8
+   stream it will be a continuation byte, value between 128 and 191), the
+   context is the same as if the second last byte was an ASCII control or space.
+
+   If the last byte is a UTF8 lead byte (value >= 192), then the next byte will
+   be a continuation byte and the context id is 2 or 3 depending on the LSB of
+   the last byte and to a lesser extent on the second last byte if it is ASCII.
+
+   If the last byte is a UTF8 continuation byte, the second last byte can be:
+     - continuation byte: the next byte is probably ASCII or lead byte (assuming
+       4-byte UTF8 characters are rare) and the context id is 0 or 1.
+     - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1
+     - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3
+
+   The possible value combinations of the previous two bytes, the range of
+   context ids and the type of the next byte is summarized in the table below:
+
+   |--------\-----------------------------------------------------------------|
+   |         \                         Last byte                              |
+   | Second   \---------------------------------------------------------------|
+   | last byte \    ASCII            |   cont. byte        |   lead byte      |
+   |            \   (0-127)          |   (128-191)         |   (192-)         |
+   |=============|===================|=====================|==================|
+   |  ASCII      | next: ASCII/lead  |  not valid          |  next: cont.     |
+   |  (0-127)    | context: 4 - 63   |                     |  context: 2 - 3  |
+   |-------------|-------------------|---------------------|------------------|
+   |  cont. byte | next: ASCII/lead  |  next: ASCII/lead   |  next: cont.     |
+   |  (128-191)  | context: 4 - 63   |  context: 0 - 1     |  context: 2 - 3  |
+   |-------------|-------------------|---------------------|------------------|
+   |  lead byte  | not valid         |  next: ASCII/lead   |  not valid       |
+   |  (192-207)  |                   |  context: 0 - 1     |                  |
+   |-------------|-------------------|---------------------|------------------|
+   |  lead byte  | not valid         |  next: cont.        |  not valid       |
+   |  (208-)     |                   |  context: 2 - 3     |                  |
+   |-------------|-------------------|---------------------|------------------|
+
+   The context id for the signed context mode is calculated as:
+
+     context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].
+
+   For any context modeling modes, the context ids can be calculated by |-ing
+   together two lookups from one table using context model dependent offsets:
+
+     context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].
+
+   where offset1 and offset2 are dependent on the context mode.
+*/
+
+var CONTEXT_LSB6         = 0;
+var CONTEXT_MSB6         = 1;
+var CONTEXT_UTF8         = 2;
+var CONTEXT_SIGNED       = 3;
+
+/* Common context lookup table for all context modes. */
+exports.lookup = new Uint8Array([
+  /* CONTEXT_UTF8, last byte. */
+  /* ASCII range. */
+   0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  4,  0,  0,
+   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+   8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,
+  44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,
+  12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,
+  52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,
+  12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,
+  60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12,  0,
+  /* UTF8 continuation byte range. */
+  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+  /* UTF8 lead byte range. */
+  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+  /* CONTEXT_UTF8 second last byte. */
+  /* ASCII range. */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
+  1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
+  1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,
+  /* UTF8 continuation byte range. */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  /* UTF8 lead byte range. */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  /* CONTEXT_SIGNED, second last byte. */
+  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
+  /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */
+   0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+  48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
+  /* CONTEXT_LSB6, last byte. */
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+  /* CONTEXT_MSB6, last byte. */
+   0,  0,  0,  0,  1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  3,
+   4,  4,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
+   8,  8,  8,  8,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 11,
+  12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,
+  16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,
+  20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,
+  24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,
+  28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,
+  32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,
+  36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,
+  40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,
+  44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,
+  48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,
+  52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,
+  56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,
+  60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,
+  /* CONTEXT_{M,L}SB6, second last byte, */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+]);
+
+exports.lookupOffsets = new Uint16Array([
+  /* CONTEXT_LSB6 */
+  1024, 1536,
+  /* CONTEXT_MSB6 */
+  1280, 1536,
+  /* CONTEXT_UTF8 */
+  0, 256,
+  /* CONTEXT_SIGNED */
+  768, 512,
+]);
+
+
+/***/ }),
+/* 290 */
+/***/ (function(module, exports) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Lookup tables to map prefix codes to value ranges. This is used during
+   decoding of the block lengths, literal insertion lengths and copy lengths.
+*/
+
+/* Represents the range of values belonging to a prefix code: */
+/* [offset, offset + 2^nbits) */
+function PrefixCodeRange(offset, nbits) {
+  this.offset = offset;
+  this.nbits = nbits;
+}
+
+exports.kBlockLengthPrefixCode = [
+  new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),
+  new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),
+  new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),
+  new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),
+  new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),
+  new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),
+  new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)
+];
+
+exports.kInsertLengthPrefixCode = [
+  new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),
+  new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),
+  new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),
+  new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),
+  new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),
+  new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),
+];
+
+exports.kCopyLengthPrefixCode = [
+  new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),
+  new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),
+  new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),
+  new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),
+  new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),
+  new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),
+];
+
+exports.kInsertRangeLut = [
+  0, 0, 8, 8, 0, 16, 8, 16, 16,
+];
+
+exports.kCopyRangeLut = [
+  0, 8, 0, 8, 16, 0, 16, 8, 16,
+];
+
+
+/***/ }),
+/* 291 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Transformations on dictionary words.
+*/
+
+var BrotliDictionary = __webpack_require__(119);
+
+var kIdentity       = 0;
+var kOmitLast1      = 1;
+var kOmitLast2      = 2;
+var kOmitLast3      = 3;
+var kOmitLast4      = 4;
+var kOmitLast5      = 5;
+var kOmitLast6      = 6;
+var kOmitLast7      = 7;
+var kOmitLast8      = 8;
+var kOmitLast9      = 9;
+var kUppercaseFirst = 10;
+var kUppercaseAll   = 11;
+var kOmitFirst1     = 12;
+var kOmitFirst2     = 13;
+var kOmitFirst3     = 14;
+var kOmitFirst4     = 15;
+var kOmitFirst5     = 16;
+var kOmitFirst6     = 17;
+var kOmitFirst7     = 18;
+var kOmitFirst8     = 19;
+var kOmitFirst9     = 20;
+
+function Transform(prefix, transform, suffix) {
+  this.prefix = new Uint8Array(prefix.length);
+  this.transform = transform;
+  this.suffix = new Uint8Array(suffix.length);
+  
+  for (var i = 0; i < prefix.length; i++)
+    this.prefix[i] = prefix.charCodeAt(i);
+  
+  for (var i = 0; i < suffix.length; i++)
+    this.suffix[i] = suffix.charCodeAt(i);
+}
+
+var kTransforms = [
+     new Transform(         "", kIdentity,       ""           ),
+     new Transform(         "", kIdentity,       " "          ),
+     new Transform(        " ", kIdentity,       " "          ),
+     new Transform(         "", kOmitFirst1,     ""           ),
+     new Transform(         "", kUppercaseFirst, " "          ),
+     new Transform(         "", kIdentity,       " the "      ),
+     new Transform(        " ", kIdentity,       ""           ),
+     new Transform(       "s ", kIdentity,       " "          ),
+     new Transform(         "", kIdentity,       " of "       ),
+     new Transform(         "", kUppercaseFirst, ""           ),
+     new Transform(         "", kIdentity,       " and "      ),
+     new Transform(         "", kOmitFirst2,     ""           ),
+     new Transform(         "", kOmitLast1,      ""           ),
+     new Transform(       ", ", kIdentity,       " "          ),
+     new Transform(         "", kIdentity,       ", "         ),
+     new Transform(        " ", kUppercaseFirst, " "          ),
+     new Transform(         "", kIdentity,       " in "       ),
+     new Transform(         "", kIdentity,       " to "       ),
+     new Transform(       "e ", kIdentity,       " "          ),
+     new Transform(         "", kIdentity,       "\""         ),
+     new Transform(         "", kIdentity,       "."          ),
+     new Transform(         "", kIdentity,       "\">"        ),
+     new Transform(         "", kIdentity,       "\n"         ),
+     new Transform(         "", kOmitLast3,      ""           ),
+     new Transform(         "", kIdentity,       "]"          ),
+     new Transform(         "", kIdentity,       " for "      ),
+     new Transform(         "", kOmitFirst3,     ""           ),
+     new Transform(         "", kOmitLast2,      ""           ),
+     new Transform(         "", kIdentity,       " a "        ),
+     new Transform(         "", kIdentity,       " that "     ),
+     new Transform(        " ", kUppercaseFirst, ""           ),
+     new Transform(         "", kIdentity,       ". "         ),
+     new Transform(        ".", kIdentity,       ""           ),
+     new Transform(        " ", kIdentity,       ", "         ),
+     new Transform(         "", kOmitFirst4,     ""           ),
+     new Transform(         "", kIdentity,       " with "     ),
+     new Transform(         "", kIdentity,       "'"          ),
+     new Transform(         "", kIdentity,       " from "     ),
+     new Transform(         "", kIdentity,       " by "       ),
+     new Transform(         "", kOmitFirst5,     ""           ),
+     new Transform(         "", kOmitFirst6,     ""           ),
+     new Transform(    " the ", kIdentity,       ""           ),
+     new Transform(         "", kOmitLast4,      ""           ),
+     new Transform(         "", kIdentity,       ". The "     ),
+     new Transform(         "", kUppercaseAll,   ""           ),
+     new Transform(         "", kIdentity,       " on "       ),
+     new Transform(         "", kIdentity,       " as "       ),
+     new Transform(         "", kIdentity,       " is "       ),
+     new Transform(         "", kOmitLast7,      ""           ),
+     new Transform(         "", kOmitLast1,      "ing "       ),
+     new Transform(         "", kIdentity,       "\n\t"       ),
+     new Transform(         "", kIdentity,       ":"          ),
+     new Transform(        " ", kIdentity,       ". "         ),
+     new Transform(         "", kIdentity,       "ed "        ),
+     new Transform(         "", kOmitFirst9,     ""           ),
+     new Transform(         "", kOmitFirst7,     ""           ),
+     new Transform(         "", kOmitLast6,      ""           ),
+     new Transform(         "", kIdentity,       "("          ),
+     new Transform(         "", kUppercaseFirst, ", "         ),
+     new Transform(         "", kOmitLast8,      ""           ),
+     new Transform(         "", kIdentity,       " at "       ),
+     new Transform(         "", kIdentity,       "ly "        ),
+     new Transform(    " the ", kIdentity,       " of "       ),
+     new Transform(         "", kOmitLast5,      ""           ),
+     new Transform(         "", kOmitLast9,      ""           ),
+     new Transform(        " ", kUppercaseFirst, ", "         ),
+     new Transform(         "", kUppercaseFirst, "\""         ),
+     new Transform(        ".", kIdentity,       "("          ),
+     new Transform(         "", kUppercaseAll,   " "          ),
+     new Transform(         "", kUppercaseFirst, "\">"        ),
+     new Transform(         "", kIdentity,       "=\""        ),
+     new Transform(        " ", kIdentity,       "."          ),
+     new Transform(    ".com/", kIdentity,       ""           ),
+     new Transform(    " the ", kIdentity,       " of the "   ),
+     new Transform(         "", kUppercaseFirst, "'"          ),
+     new Transform(         "", kIdentity,       ". This "    ),
+     new Transform(         "", kIdentity,       ","          ),
+     new Transform(        ".", kIdentity,       " "          ),
+     new Transform(         "", kUppercaseFirst, "("          ),
+     new Transform(         "", kUppercaseFirst, "."          ),
+     new Transform(         "", kIdentity,       " not "      ),
+     new Transform(        " ", kIdentity,       "=\""        ),
+     new Transform(         "", kIdentity,       "er "        ),
+     new Transform(        " ", kUppercaseAll,   " "          ),
+     new Transform(         "", kIdentity,       "al "        ),
+     new Transform(        " ", kUppercaseAll,   ""           ),
+     new Transform(         "", kIdentity,       "='"         ),
+     new Transform(         "", kUppercaseAll,   "\""         ),
+     new Transform(         "", kUppercaseFirst, ". "         ),
+     new Transform(        " ", kIdentity,       "("          ),
+     new Transform(         "", kIdentity,       "ful "       ),
+     new Transform(        " ", kUppercaseFirst, ". "         ),
+     new Transform(         "", kIdentity,       "ive "       ),
+     new Transform(         "", kIdentity,       "less "      ),
+     new Transform(         "", kUppercaseAll,   "'"          ),
+     new Transform(         "", kIdentity,       "est "       ),
+     new Transform(        " ", kUppercaseFirst, "."          ),
+     new Transform(         "", kUppercaseAll,   "\">"        ),
+     new Transform(        " ", kIdentity,       "='"         ),
+     new Transform(         "", kUppercaseFirst, ","          ),
+     new Transform(         "", kIdentity,       "ize "       ),
+     new Transform(         "", kUppercaseAll,   "."          ),
+     new Transform( "\xc2\xa0", kIdentity,       ""           ),
+     new Transform(        " ", kIdentity,       ","          ),
+     new Transform(         "", kUppercaseFirst, "=\""        ),
+     new Transform(         "", kUppercaseAll,   "=\""        ),
+     new Transform(         "", kIdentity,       "ous "       ),
+     new Transform(         "", kUppercaseAll,   ", "         ),
+     new Transform(         "", kUppercaseFirst, "='"         ),
+     new Transform(        " ", kUppercaseFirst, ","          ),
+     new Transform(        " ", kUppercaseAll,   "=\""        ),
+     new Transform(        " ", kUppercaseAll,   ", "         ),
+     new Transform(         "", kUppercaseAll,   ","          ),
+     new Transform(         "", kUppercaseAll,   "("          ),
+     new Transform(         "", kUppercaseAll,   ". "         ),
+     new Transform(        " ", kUppercaseAll,   "."          ),
+     new Transform(         "", kUppercaseAll,   "='"         ),
+     new Transform(        " ", kUppercaseAll,   ". "         ),
+     new Transform(        " ", kUppercaseFirst, "=\""        ),
+     new Transform(        " ", kUppercaseAll,   "='"         ),
+     new Transform(        " ", kUppercaseFirst, "='"         )
+];
+
+exports.kTransforms = kTransforms;
+exports.kNumTransforms = kTransforms.length;
+
+function ToUpperCase(p, i) {
+  if (p[i] < 0xc0) {
+    if (p[i] >= 97 && p[i] <= 122) {
+      p[i] ^= 32;
+    }
+    return 1;
+  }
+  
+  /* An overly simplified uppercasing model for utf-8. */
+  if (p[i] < 0xe0) {
+    p[i + 1] ^= 32;
+    return 2;
+  }
+  
+  /* An arbitrary transform for three byte characters. */
+  p[i + 2] ^= 5;
+  return 3;
+}
+
+exports.transformDictionaryWord = function(dst, idx, word, len, transform) {
+  var prefix = kTransforms[transform].prefix;
+  var suffix = kTransforms[transform].suffix;
+  var t = kTransforms[transform].transform;
+  var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1);
+  var i = 0;
+  var start_idx = idx;
+  var uppercase;
+  
+  if (skip > len) {
+    skip = len;
+  }
+  
+  var prefix_pos = 0;
+  while (prefix_pos < prefix.length) {
+    dst[idx++] = prefix[prefix_pos++];
+  }
+  
+  word += skip;
+  len -= skip;
+  
+  if (t <= kOmitLast9) {
+    len -= t;
+  }
+  
+  for (i = 0; i < len; i++) {
+    dst[idx++] = BrotliDictionary.dictionary[word + i];
+  }
+  
+  uppercase = idx - len;
+  
+  if (t === kUppercaseFirst) {
+    ToUpperCase(dst, uppercase);
+  } else if (t === kUppercaseAll) {
+    while (len > 0) {
+      var step = ToUpperCase(dst, uppercase);
+      uppercase += step;
+      len -= step;
+    }
+  }
+  
+  var suffix_pos = 0;
+  while (suffix_pos < suffix.length) {
+    dst[idx++] = suffix[suffix_pos++];
+  }
+  
+  return idx - start_idx;
+}
+
+
+/***/ }),
+/* 292 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(__dirname) {// Generated by CoffeeScript 1.12.6
+(function() {
+  var AFMFont, PDFFont, StandardFont, fs,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  AFMFont = __webpack_require__(293);
+
+  PDFFont = __webpack_require__(50);
+
+  fs = __webpack_require__(8);
+
+  StandardFont = (function(superClass) {
+    var STANDARD_FONTS;
+
+    extend(StandardFont, superClass);
+
+    function StandardFont(document, name1, id) {
+      var ref;
+      this.document = document;
+      this.name = name1;
+      this.id = id;
+      this.font = new AFMFont(STANDARD_FONTS[this.name]());
+      ref = this.font, this.ascender = ref.ascender, this.descender = ref.descender, this.bbox = ref.bbox, this.lineGap = ref.lineGap;
+    }
+
+    StandardFont.prototype.embed = function() {
+      this.dictionary.data = {
+        Type: 'Font',
+        BaseFont: this.name,
+        Subtype: 'Type1',
+        Encoding: 'WinAnsiEncoding'
+      };
+      return this.dictionary.end();
+    };
+
+    StandardFont.prototype.encode = function(text) {
+      var advances, encoded, glyph, glyphs, i, j, len, positions;
+      encoded = this.font.encodeText(text);
+      glyphs = this.font.glyphsForString('' + text);
+      advances = this.font.advancesForGlyphs(glyphs);
+      positions = [];
+      for (i = j = 0, len = glyphs.length; j < len; i = ++j) {
+        glyph = glyphs[i];
+        positions.push({
+          xAdvance: advances[i],
+          yAdvance: 0,
+          xOffset: 0,
+          yOffset: 0,
+          advanceWidth: this.font.widthOfGlyph(glyph)
+        });
+      }
+      return [encoded, positions];
+    };
+
+    StandardFont.prototype.widthOfString = function(string, size) {
+      var advance, advances, glyphs, j, len, scale, width;
+      glyphs = this.font.glyphsForString('' + string);
+      advances = this.font.advancesForGlyphs(glyphs);
+      width = 0;
+      for (j = 0, len = advances.length; j < len; j++) {
+        advance = advances[j];
+        width += advance;
+      }
+      scale = size / 1000;
+      return width * scale;
+    };
+
+    StandardFont.isStandardFont = function(name) {
+      return name in STANDARD_FONTS;
+    };
+
+    STANDARD_FONTS = {
+      "Courier": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Courier.afm", 'utf8');
+      },
+      "Courier-Bold": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Courier-Bold.afm", 'utf8');
+      },
+      "Courier-Oblique": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Courier-Oblique.afm", 'utf8');
+      },
+      "Courier-BoldOblique": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Courier-BoldOblique.afm", 'utf8');
+      },
+      "Helvetica": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Helvetica.afm", 'utf8');
+      },
+      "Helvetica-Bold": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Helvetica-Bold.afm", 'utf8');
+      },
+      "Helvetica-Oblique": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Helvetica-Oblique.afm", 'utf8');
+      },
+      "Helvetica-BoldOblique": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Helvetica-BoldOblique.afm", 'utf8');
+      },
+      "Times-Roman": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Times-Roman.afm", 'utf8');
+      },
+      "Times-Bold": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Times-Bold.afm", 'utf8');
+      },
+      "Times-Italic": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Times-Italic.afm", 'utf8');
+      },
+      "Times-BoldItalic": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Times-BoldItalic.afm", 'utf8');
+      },
+      "Symbol": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Symbol.afm", 'utf8');
+      },
+      "ZapfDingbats": function() {
+        return fs.readFileSync(__dirname + "/../font/data/ZapfDingbats.afm", 'utf8');
+      }
+    };
+
+    return StandardFont;
+
+  })(PDFFont);
+
+  module.exports = StandardFont;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, "/"))
+
+/***/ }),
+/* 293 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var AFMFont, fs;
+
+  fs = __webpack_require__(8);
+
+  AFMFont = (function() {
+    var WIN_ANSI_MAP, characters;
+
+    AFMFont.open = function(filename) {
+      return new AFMFont(fs.readFileSync(filename, 'utf8'));
+    };
+
+    function AFMFont(contents) {
+      var e, i;
+      this.contents = contents;
+      this.attributes = {};
+      this.glyphWidths = {};
+      this.boundingBoxes = {};
+      this.kernPairs = {};
+      this.parse();
+      this.charWidths = (function() {
+        var j, results;
+        results = [];
+        for (i = j = 0; j <= 255; i = ++j) {
+          results.push(this.glyphWidths[characters[i]]);
+        }
+        return results;
+      }).call(this);
+      this.bbox = (function() {
+        var j, len, ref, results;
+        ref = this.attributes['FontBBox'].split(/\s+/);
+        results = [];
+        for (j = 0, len = ref.length; j < len; j++) {
+          e = ref[j];
+          results.push(+e);
+        }
+        return results;
+      }).call(this);
+      this.ascender = +(this.attributes['Ascender'] || 0);
+      this.descender = +(this.attributes['Descender'] || 0);
+      this.lineGap = (this.bbox[3] - this.bbox[1]) - (this.ascender - this.descender);
+    }
+
+    AFMFont.prototype.parse = function() {
+      var a, j, key, len, line, match, name, ref, section, value;
+      section = '';
+      ref = this.contents.split('\n');
+      for (j = 0, len = ref.length; j < len; j++) {
+        line = ref[j];
+        if (match = line.match(/^Start(\w+)/)) {
+          section = match[1];
+          continue;
+        } else if (match = line.match(/^End(\w+)/)) {
+          section = '';
+          continue;
+        }
+        switch (section) {
+          case 'FontMetrics':
+            match = line.match(/(^\w+)\s+(.*)/);
+            key = match[1];
+            value = match[2];
+            if (a = this.attributes[key]) {
+              if (!Array.isArray(a)) {
+                a = this.attributes[key] = [a];
+              }
+              a.push(value);
+            } else {
+              this.attributes[key] = value;
+            }
+            break;
+          case 'CharMetrics':
+            if (!/^CH?\s/.test(line)) {
+              continue;
+            }
+            name = line.match(/\bN\s+(\.?\w+)\s*;/)[1];
+            this.glyphWidths[name] = +line.match(/\bWX\s+(\d+)\s*;/)[1];
+            break;
+          case 'KernPairs':
+            match = line.match(/^KPX\s+(\.?\w+)\s+(\.?\w+)\s+(-?\d+)/);
+            if (match) {
+              this.kernPairs[match[1] + '\0' + match[2]] = parseInt(match[3]);
+            }
+        }
+      }
+    };
+
+    WIN_ANSI_MAP = {
+      402: 131,
+      8211: 150,
+      8212: 151,
+      8216: 145,
+      8217: 146,
+      8218: 130,
+      8220: 147,
+      8221: 148,
+      8222: 132,
+      8224: 134,
+      8225: 135,
+      8226: 149,
+      8230: 133,
+      8364: 128,
+      8240: 137,
+      8249: 139,
+      8250: 155,
+      710: 136,
+      8482: 153,
+      338: 140,
+      339: 156,
+      732: 152,
+      352: 138,
+      353: 154,
+      376: 159,
+      381: 142,
+      382: 158
+    };
+
+    AFMFont.prototype.encodeText = function(text) {
+      var char, i, j, ref, res;
+      res = [];
+      for (i = j = 0, ref = text.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        char = text.charCodeAt(i);
+        char = WIN_ANSI_MAP[char] || char;
+        res.push(char.toString(16));
+      }
+      return res;
+    };
+
+    AFMFont.prototype.glyphsForString = function(string) {
+      var charCode, glyphs, i, j, ref;
+      glyphs = [];
+      for (i = j = 0, ref = string.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        charCode = string.charCodeAt(i);
+        glyphs.push(this.characterToGlyph(charCode));
+      }
+      return glyphs;
+    };
+
+    AFMFont.prototype.characterToGlyph = function(character) {
+      return characters[WIN_ANSI_MAP[character] || character] || '.notdef';
+    };
+
+    AFMFont.prototype.widthOfGlyph = function(glyph) {
+      return this.glyphWidths[glyph] || 0;
+    };
+
+    AFMFont.prototype.getKernPair = function(left, right) {
+      return this.kernPairs[left + '\0' + right] || 0;
+    };
+
+    AFMFont.prototype.advancesForGlyphs = function(glyphs) {
+      var advances, index, j, left, len, right;
+      advances = [];
+      for (index = j = 0, len = glyphs.length; j < len; index = ++j) {
+        left = glyphs[index];
+        right = glyphs[index + 1];
+        advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right));
+      }
+      return advances;
+    };
+
+    characters = '.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n\nspace         exclam         quotedbl       numbersign\ndollar        percent        ampersand      quotesingle\nparenleft     parenright     asterisk       plus\ncomma         hyphen         period         slash\nzero          one            two            three\nfour          five           six            seven\neight         nine           colon          semicolon\nless          equal          greater        question\n\nat            A              B              C\nD             E              F              G\nH             I              J              K\nL             M              N              O\nP             Q              R              S\nT             U              V              W\nX             Y              Z              bracketleft\nbackslash     bracketright   asciicircum    underscore\n\ngrave         a              b              c\nd             e              f              g\nh             i              j              k\nl             m              n              o\np             q              r              s\nt             u              v              w\nx             y              z              braceleft\nbar           braceright     asciitilde     .notdef\n\nEuro          .notdef        quotesinglbase florin\nquotedblbase  ellipsis       dagger         daggerdbl\ncircumflex    perthousand    Scaron         guilsinglleft\nOE            .notdef        Zcaron         .notdef\n.notdef       quoteleft      quoteright     quotedblleft\nquotedblright bullet         endash         emdash\ntilde         trademark      scaron         guilsinglright\noe            .notdef        zcaron         ydieresis\n\nspace         exclamdown     cent           sterling\ncurrency      yen            brokenbar      section\ndieresis      copyright      ordfeminine    guillemotleft\nlogicalnot    hyphen         registered     macron\ndegree        plusminus      twosuperior    threesuperior\nacute         mu             paragraph      periodcentered\ncedilla       onesuperior    ordmasculine   guillemotright\nonequarter    onehalf        threequarters  questiondown\n\nAgrave        Aacute         Acircumflex    Atilde\nAdieresis     Aring          AE             Ccedilla\nEgrave        Eacute         Ecircumflex    Edieresis\nIgrave        Iacute         Icircumflex    Idieresis\nEth           Ntilde         Ograve         Oacute\nOcircumflex   Otilde         Odieresis      multiply\nOslash        Ugrave         Uacute         Ucircumflex\nUdieresis     Yacute         Thorn          germandbls\n\nagrave        aacute         acircumflex    atilde\nadieresis     aring          ae             ccedilla\negrave        eacute         ecircumflex    edieresis\nigrave        iacute         icircumflex    idieresis\neth           ntilde         ograve         oacute\nocircumflex   otilde         odieresis      divide\noslash        ugrave         uacute         ucircumflex\nudieresis     yacute         thorn          ydieresis'.split(/\s+/);
+
+    return AFMFont;
+
+  })();
+
+  module.exports = AFMFont;
+
+}).call(this);
+
+
+/***/ }),
+/* 294 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var EmbeddedFont, PDFFont, PDFObject,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty,
+    slice = [].slice;
+
+  PDFFont = __webpack_require__(50);
+
+  PDFObject = __webpack_require__(26);
+
+  EmbeddedFont = (function(superClass) {
+    var toHex;
+
+    extend(EmbeddedFont, superClass);
+
+    function EmbeddedFont(document, font, id) {
+      this.document = document;
+      this.font = font;
+      this.id = id;
+      this.subset = this.font.createSubset();
+      this.unicode = [[0]];
+      this.widths = [this.font.getGlyph(0).advanceWidth];
+      this.name = this.font.postscriptName;
+      this.scale = 1000 / this.font.unitsPerEm;
+      this.ascender = this.font.ascent * this.scale;
+      this.descender = this.font.descent * this.scale;
+      this.lineGap = this.font.lineGap * this.scale;
+      this.bbox = this.font.bbox;
+      this.layoutCache = Object.create(null);
+    }
+
+    EmbeddedFont.prototype.layoutRun = function(text, features) {
+      var i, j, key, len, position, ref, run;
+      run = this.font.layout(text, features);
+      ref = run.positions;
+      for (i = j = 0, len = ref.length; j < len; i = ++j) {
+        position = ref[i];
+        for (key in position) {
+          position[key] *= this.scale;
+        }
+        position.advanceWidth = run.glyphs[i].advanceWidth * this.scale;
+      }
+      return run;
+    };
+
+    EmbeddedFont.prototype.layoutCached = function(text) {
+      var cached, run;
+      if (cached = this.layoutCache[text]) {
+        return cached;
+      }
+      run = this.layoutRun(text);
+      this.layoutCache[text] = run;
+      return run;
+    };
+
+    EmbeddedFont.prototype.layout = function(text, features, onlyWidth) {
+      var advanceWidth, glyphs, index, last, positions, ref, run;
+      if (onlyWidth == null) {
+        onlyWidth = false;
+      }
+      if (features) {
+        return this.layoutRun(text, features);
+      }
+      glyphs = onlyWidth ? null : [];
+      positions = onlyWidth ? null : [];
+      advanceWidth = 0;
+      last = 0;
+      index = 0;
+      while (index <= text.length) {
+        if ((index === text.length && last < index) || ((ref = text.charAt(index)) === ' ' || ref === '\t')) {
+          run = this.layoutCached(text.slice(last, ++index));
+          if (!onlyWidth) {
+            glyphs.push.apply(glyphs, run.glyphs);
+            positions.push.apply(positions, run.positions);
+          }
+          advanceWidth += run.advanceWidth;
+          last = index;
+        } else {
+          index++;
+        }
+      }
+      return {
+        glyphs: glyphs,
+        positions: positions,
+        advanceWidth: advanceWidth
+      };
+    };
+
+    EmbeddedFont.prototype.encode = function(text, features) {
+      var base, base1, gid, glyph, glyphs, i, j, len, positions, ref, res;
+      ref = this.layout(text, features), glyphs = ref.glyphs, positions = ref.positions;
+      res = [];
+      for (i = j = 0, len = glyphs.length; j < len; i = ++j) {
+        glyph = glyphs[i];
+        gid = this.subset.includeGlyph(glyph.id);
+        res.push(('0000' + gid.toString(16)).slice(-4));
+        if ((base = this.widths)[gid] == null) {
+          base[gid] = glyph.advanceWidth * this.scale;
+        }
+        if ((base1 = this.unicode)[gid] == null) {
+          base1[gid] = glyph.codePoints;
+        }
+      }
+      return [res, positions];
+    };
+
+    EmbeddedFont.prototype.widthOfString = function(string, size, features) {
+      var scale, width;
+      width = this.layout(string, features, true).advanceWidth;
+      scale = size / 1000;
+      return width * scale;
+    };
+
+    EmbeddedFont.prototype.embed = function() {
+      var bbox, descendantFont, descriptor, familyClass, flags, fontFile, i, isCFF, name, ref, tag;
+      isCFF = this.subset.cff != null;
+      fontFile = this.document.ref();
+      if (isCFF) {
+        fontFile.data.Subtype = 'CIDFontType0C';
+      }
+      this.subset.encodeStream().pipe(fontFile);
+      familyClass = (((ref = this.font['OS/2']) != null ? ref.sFamilyClass : void 0) || 0) >> 8;
+      flags = 0;
+      if (this.font.post.isFixedPitch) {
+        flags |= 1 << 0;
+      }
+      if ((1 <= familyClass && familyClass <= 7)) {
+        flags |= 1 << 1;
+      }
+      flags |= 1 << 2;
+      if (familyClass === 10) {
+        flags |= 1 << 3;
+      }
+      if (this.font.head.macStyle.italic) {
+        flags |= 1 << 6;
+      }
+      tag = ((function() {
+        var j, results;
+        results = [];
+        for (i = j = 0; j < 6; i = ++j) {
+          results.push(String.fromCharCode(Math.random() * 26 + 65));
+        }
+        return results;
+      })()).join('');
+      name = tag + '+' + this.font.postscriptName;
+      bbox = this.font.bbox;
+      descriptor = this.document.ref({
+        Type: 'FontDescriptor',
+        FontName: name,
+        Flags: flags,
+        FontBBox: [bbox.minX * this.scale, bbox.minY * this.scale, bbox.maxX * this.scale, bbox.maxY * this.scale],
+        ItalicAngle: this.font.italicAngle,
+        Ascent: this.ascender,
+        Descent: this.descender,
+        CapHeight: (this.font.capHeight || this.font.ascent) * this.scale,
+        XHeight: (this.font.xHeight || 0) * this.scale,
+        StemV: 0
+      });
+      if (isCFF) {
+        descriptor.data.FontFile3 = fontFile;
+      } else {
+        descriptor.data.FontFile2 = fontFile;
+      }
+      descriptor.end();
+      descendantFont = this.document.ref({
+        Type: 'Font',
+        Subtype: isCFF ? 'CIDFontType0' : 'CIDFontType2',
+        BaseFont: name,
+        CIDSystemInfo: {
+          Registry: new String('Adobe'),
+          Ordering: new String('Identity'),
+          Supplement: 0
+        },
+        FontDescriptor: descriptor,
+        W: [0, this.widths]
+      });
+      descendantFont.end();
+      this.dictionary.data = {
+        Type: 'Font',
+        Subtype: 'Type0',
+        BaseFont: name,
+        Encoding: 'Identity-H',
+        DescendantFonts: [descendantFont],
+        ToUnicode: this.toUnicodeCmap()
+      };
+      return this.dictionary.end();
+    };
+
+    toHex = function() {
+      var code, codePoints, codes;
+      codePoints = 1 <= arguments.length ? slice.call(arguments, 0) : [];
+      codes = (function() {
+        var j, len, results;
+        results = [];
+        for (j = 0, len = codePoints.length; j < len; j++) {
+          code = codePoints[j];
+          results.push(('0000' + code.toString(16)).slice(-4));
+        }
+        return results;
+      })();
+      return codes.join('');
+    };
+
+    EmbeddedFont.prototype.toUnicodeCmap = function() {
+      var cmap, codePoints, encoded, entries, j, k, len, len1, ref, value;
+      cmap = this.document.ref();
+      entries = [];
+      ref = this.unicode;
+      for (j = 0, len = ref.length; j < len; j++) {
+        codePoints = ref[j];
+        encoded = [];
+        for (k = 0, len1 = codePoints.length; k < len1; k++) {
+          value = codePoints[k];
+          if (value > 0xffff) {
+            value -= 0x10000;
+            encoded.push(toHex(value >>> 10 & 0x3ff | 0xd800));
+            value = 0xdc00 | value & 0x3ff;
+          }
+          encoded.push(toHex(value));
+        }
+        entries.push("<" + (encoded.join(' ')) + ">");
+      }
+      cmap.end("/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n  /Registry (Adobe)\n  /Ordering (UCS)\n  /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange\n1 beginbfrange\n<0000> <" + (toHex(entries.length - 1)) + "> [" + (entries.join(' ')) + "]\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend");
+      return cmap;
+    };
+
+    return EmbeddedFont;
+
+  })(PDFFont);
+
+  module.exports = EmbeddedFont;
+
+}).call(this);
+
+
+/***/ }),
+/* 295 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var LineWrapper, number;
+
+  LineWrapper = __webpack_require__(296);
+
+  number = __webpack_require__(26).number;
+
+  module.exports = {
+    initText: function() {
+      this.x = 0;
+      this.y = 0;
+      return this._lineGap = 0;
+    },
+    lineGap: function(_lineGap) {
+      this._lineGap = _lineGap;
+      return this;
+    },
+    moveDown: function(lines) {
+      if (lines == null) {
+        lines = 1;
+      }
+      this.y += this.currentLineHeight(true) * lines + this._lineGap;
+      return this;
+    },
+    moveUp: function(lines) {
+      if (lines == null) {
+        lines = 1;
+      }
+      this.y -= this.currentLineHeight(true) * lines + this._lineGap;
+      return this;
+    },
+    _text: function(text, x, y, options, lineCallback) {
+      var j, len, line, ref, wrapper;
+      options = this._initOptions(x, y, options);
+      text = text == null ? '' : '' + text;
+      if (options.wordSpacing) {
+        text = text.replace(/\s{2,}/g, ' ');
+      }
+      if (options.width) {
+        wrapper = this._wrapper;
+        if (!wrapper) {
+          wrapper = new LineWrapper(this, options);
+          wrapper.on('line', lineCallback);
+        }
+        this._wrapper = options.continued ? wrapper : null;
+        this._textOptions = options.continued ? options : null;
+        wrapper.wrap(text, options);
+      } else {
+        ref = text.split('\n');
+        for (j = 0, len = ref.length; j < len; j++) {
+          line = ref[j];
+          lineCallback(line, options);
+        }
+      }
+      return this;
+    },
+    text: function(text, x, y, options) {
+      return this._text(text, x, y, options, this._line.bind(this));
+    },
+    widthOfString: function(string, options) {
+      if (options == null) {
+        options = {};
+      }
+      return this._font.widthOfString(string, this._fontSize, options.features) + (options.characterSpacing || 0) * (string.length - 1);
+    },
+    heightOfString: function(text, options) {
+      var height, lineGap, ref, x, y;
+      if (options == null) {
+        options = {};
+      }
+      ref = this, x = ref.x, y = ref.y;
+      options = this._initOptions(options);
+      options.height = 2e308;
+      lineGap = options.lineGap || this._lineGap || 0;
+      this._text(text, this.x, this.y, options, (function(_this) {
+        return function(line, options) {
+          return _this.y += _this.currentLineHeight(true) + lineGap;
+        };
+      })(this));
+      height = this.y - y;
+      this.x = x;
+      this.y = y;
+      return height;
+    },
+    list: function(list, x, y, options, wrapper) {
+      var flatten, i, indent, itemIndent, items, level, levels, midLine, r;
+      options = this._initOptions(x, y, options);
+      midLine = Math.round((this._font.ascender / 1000 * this._fontSize) / 2);
+      r = options.bulletRadius || Math.round((this._font.ascender / 1000 * this._fontSize) / 3);
+      indent = options.textIndent || r * 5;
+      itemIndent = options.bulletIndent || r * 8;
+      level = 1;
+      items = [];
+      levels = [];
+      flatten = function(list) {
+        var i, item, j, len, results;
+        results = [];
+        for (i = j = 0, len = list.length; j < len; i = ++j) {
+          item = list[i];
+          if (Array.isArray(item)) {
+            level++;
+            flatten(item);
+            results.push(level--);
+          } else {
+            items.push(item);
+            results.push(levels.push(level));
+          }
+        }
+        return results;
+      };
+      flatten(list);
+      wrapper = new LineWrapper(this, options);
+      wrapper.on('line', this._line.bind(this));
+      level = 1;
+      i = 0;
+      wrapper.on('firstLine', (function(_this) {
+        return function() {
+          var diff, l;
+          if ((l = levels[i++]) !== level) {
+            diff = itemIndent * (l - level);
+            _this.x += diff;
+            wrapper.lineWidth -= diff;
+            level = l;
+          }
+          _this.circle(_this.x - indent + r, _this.y + midLine, r);
+          return _this.fill();
+        };
+      })(this));
+      wrapper.on('sectionStart', (function(_this) {
+        return function() {
+          var pos;
+          pos = indent + itemIndent * (level - 1);
+          _this.x += pos;
+          return wrapper.lineWidth -= pos;
+        };
+      })(this));
+      wrapper.on('sectionEnd', (function(_this) {
+        return function() {
+          var pos;
+          pos = indent + itemIndent * (level - 1);
+          _this.x -= pos;
+          return wrapper.lineWidth += pos;
+        };
+      })(this));
+      wrapper.wrap(items.join('\n'), options);
+      return this;
+    },
+    _initOptions: function(x, y, options) {
+      var key, ref, val;
+      if (x == null) {
+        x = {};
+      }
+      if (options == null) {
+        options = {};
+      }
+      if (typeof x === 'object') {
+        options = x;
+        x = null;
+      }
+      options = (function() {
+        var k, opts, v;
+        opts = {};
+        for (k in options) {
+          v = options[k];
+          opts[k] = v;
+        }
+        return opts;
+      })();
+      if (this._textOptions) {
+        ref = this._textOptions;
+        for (key in ref) {
+          val = ref[key];
+          if (key !== 'continued') {
+            if (options[key] == null) {
+              options[key] = val;
+            }
+          }
+        }
+      }
+      if (x != null) {
+        this.x = x;
+      }
+      if (y != null) {
+        this.y = y;
+      }
+      if (options.lineBreak !== false) {
+        if (options.width == null) {
+          options.width = this.page.width - this.x - this.page.margins.right;
+        }
+      }
+      options.columns || (options.columns = 0);
+      if (options.columnGap == null) {
+        options.columnGap = 18;
+      }
+      return options;
+    },
+    _line: function(text, options, wrapper) {
+      var lineGap;
+      if (options == null) {
+        options = {};
+      }
+      this._fragment(text, this.x, this.y, options);
+      lineGap = options.lineGap || this._lineGap || 0;
+      if (!wrapper) {
+        return this.x += this.widthOfString(text);
+      } else {
+        return this.y += this.currentLineHeight(true) + lineGap;
+      }
+    },
+    _fragment: function(text, x, y, options) {
+      var addSegment, align, base, characterSpacing, commands, d, encoded, encodedWord, flush, hadOffset, i, j, key, last, len, len1, lineWidth, lineY, m, mode, name, pos, positions, positionsWord, ref, ref1, ref2, renderedWidth, scale, space, spaceWidth, textWidth, val, word, wordSpacing, words;
+      text = ('' + text).replace(/\n/g, '');
+      if (text.length === 0) {
+        return;
+      }
+      align = options.align || 'left';
+      wordSpacing = options.wordSpacing || 0;
+      characterSpacing = options.characterSpacing || 0;
+      if (options.width) {
+        switch (align) {
+          case 'right':
+            textWidth = this.widthOfString(text.replace(/\s+$/, ''), options);
+            x += options.lineWidth - textWidth;
+            break;
+          case 'center':
+            x += options.lineWidth / 2 - options.textWidth / 2;
+            break;
+          case 'justify':
+            words = text.trim().split(/\s+/);
+            textWidth = this.widthOfString(text.replace(/\s+/g, ''), options);
+            spaceWidth = this.widthOfString(' ') + characterSpacing;
+            wordSpacing = Math.max(0, (options.lineWidth - textWidth) / Math.max(1, words.length - 1) - spaceWidth);
+        }
+      }
+      renderedWidth = options.textWidth + (wordSpacing * (options.wordCount - 1)) + (characterSpacing * (text.length - 1));
+      if (options.link) {
+        this.link(x, y, renderedWidth, this.currentLineHeight(), options.link);
+      }
+      if (options.underline || options.strike) {
+        this.save();
+        if (!options.stroke) {
+          this.strokeColor.apply(this, this._fillColor);
+        }
+        lineWidth = this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);
+        this.lineWidth(lineWidth);
+        d = options.underline ? 1 : 2;
+        lineY = y + this.currentLineHeight() / d;
+        if (options.underline) {
+          lineY -= lineWidth;
+        }
+        this.moveTo(x, lineY);
+        this.lineTo(x + renderedWidth, lineY);
+        this.stroke();
+        this.restore();
+      }
+      this.save();
+      this.transform(1, 0, 0, -1, 0, this.page.height);
+      y = this.page.height - y - (this._font.ascender / 1000 * this._fontSize);
+      if ((base = this.page.fonts)[name = this._font.id] == null) {
+        base[name] = this._font.ref();
+      }
+      this.addContent("BT");
+      this.addContent("1 0 0 1 " + (number(x)) + " " + (number(y)) + " Tm");
+      this.addContent("/" + this._font.id + " " + (number(this._fontSize)) + " Tf");
+      mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;
+      if (mode) {
+        this.addContent(mode + " Tr");
+      }
+      if (characterSpacing) {
+        this.addContent((number(characterSpacing)) + " Tc");
+      }
+      if (wordSpacing) {
+        words = text.trim().split(/\s+/);
+        wordSpacing += this.widthOfString(' ') + characterSpacing;
+        wordSpacing *= 1000 / this._fontSize;
+        encoded = [];
+        positions = [];
+        for (j = 0, len = words.length; j < len; j++) {
+          word = words[j];
+          ref = this._font.encode(word, options.features), encodedWord = ref[0], positionsWord = ref[1];
+          encoded.push.apply(encoded, encodedWord);
+          positions.push.apply(positions, positionsWord);
+          space = {};
+          ref1 = positions[positions.length - 1];
+          for (key in ref1) {
+            val = ref1[key];
+            space[key] = val;
+          }
+          space.xAdvance += wordSpacing;
+          positions[positions.length - 1] = space;
+        }
+      } else {
+        ref2 = this._font.encode(text, options.features), encoded = ref2[0], positions = ref2[1];
+      }
+      scale = this._fontSize / 1000;
+      commands = [];
+      last = 0;
+      hadOffset = false;
+      addSegment = (function(_this) {
+        return function(cur) {
+          var advance, hex;
+          if (last < cur) {
+            hex = encoded.slice(last, cur).join('');
+            advance = positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;
+            commands.push("<" + hex + "> " + (number(-advance)));
+          }
+          return last = cur;
+        };
+      })(this);
+      flush = (function(_this) {
+        return function(i) {
+          addSegment(i);
+          if (commands.length > 0) {
+            _this.addContent("[" + (commands.join(' ')) + "] TJ");
+            return commands.length = 0;
+          }
+        };
+      })(this);
+      for (i = m = 0, len1 = positions.length; m < len1; i = ++m) {
+        pos = positions[i];
+        if (pos.xOffset || pos.yOffset) {
+          flush(i);
+          this.addContent("1 0 0 1 " + (number(x + pos.xOffset * scale)) + " " + (number(y + pos.yOffset * scale)) + " Tm");
+          flush(i + 1);
+          hadOffset = true;
+        } else {
+          if (hadOffset) {
+            this.addContent("1 0 0 1 " + (number(x)) + " " + (number(y)) + " Tm");
+            hadOffset = false;
+          }
+          if (pos.xAdvance - pos.advanceWidth !== 0) {
+            addSegment(i + 1);
+          }
+        }
+        x += pos.xAdvance * scale;
+      }
+      flush(i);
+      this.addContent("ET");
+      return this.restore();
+    }
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 296 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var EventEmitter, LineBreaker, LineWrapper,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  EventEmitter = __webpack_require__(31).EventEmitter;
+
+  LineBreaker = __webpack_require__(78);
+
+  LineWrapper = (function(superClass) {
+    extend(LineWrapper, superClass);
+
+    function LineWrapper(document, options) {
+      var ref;
+      this.document = document;
+      this.indent = options.indent || 0;
+      this.characterSpacing = options.characterSpacing || 0;
+      this.wordSpacing = options.wordSpacing === 0;
+      this.columns = options.columns || 1;
+      this.columnGap = (ref = options.columnGap) != null ? ref : 18;
+      this.lineWidth = (options.width - (this.columnGap * (this.columns - 1))) / this.columns;
+      this.spaceLeft = this.lineWidth;
+      this.startX = this.document.x;
+      this.startY = this.document.y;
+      this.column = 1;
+      this.ellipsis = options.ellipsis;
+      this.continuedX = 0;
+      this.features = options.features;
+      if (options.height != null) {
+        this.height = options.height;
+        this.maxY = this.startY + options.height;
+      } else {
+        this.maxY = this.document.page.maxY();
+      }
+      this.on('firstLine', (function(_this) {
+        return function(options) {
+          var indent;
+          indent = _this.continuedX || _this.indent;
+          _this.document.x += indent;
+          _this.lineWidth -= indent;
+          return _this.once('line', function() {
+            _this.document.x -= indent;
+            _this.lineWidth += indent;
+            if (options.continued && !_this.continuedX) {
+              _this.continuedX = _this.indent;
+            }
+            if (!options.continued) {
+              return _this.continuedX = 0;
+            }
+          });
+        };
+      })(this));
+      this.on('lastLine', (function(_this) {
+        return function(options) {
+          var align;
+          align = options.align;
+          if (align === 'justify') {
+            options.align = 'left';
+          }
+          _this.lastLine = true;
+          return _this.once('line', function() {
+            _this.document.y += options.paragraphGap || 0;
+            options.align = align;
+            return _this.lastLine = false;
+          });
+        };
+      })(this));
+    }
+
+    LineWrapper.prototype.wordWidth = function(word) {
+      return this.document.widthOfString(word, this) + this.characterSpacing + this.wordSpacing;
+    };
+
+    LineWrapper.prototype.eachWord = function(text, fn) {
+      var bk, breaker, fbk, l, last, lbk, shouldContinue, w, word, wordWidths;
+      breaker = new LineBreaker(text);
+      last = null;
+      wordWidths = Object.create(null);
+      while (bk = breaker.nextBreak()) {
+        word = text.slice((last != null ? last.position : void 0) || 0, bk.position);
+        w = wordWidths[word] != null ? wordWidths[word] : wordWidths[word] = this.wordWidth(word);
+        if (w > this.lineWidth + this.continuedX) {
+          lbk = last;
+          fbk = {};
+          while (word.length) {
+            l = word.length;
+            while (w > this.spaceLeft) {
+              w = this.wordWidth(word.slice(0, --l));
+            }
+            fbk.required = l < word.length;
+            shouldContinue = fn(word.slice(0, l), w, fbk, lbk);
+            lbk = {
+              required: false
+            };
+            word = word.slice(l);
+            w = this.wordWidth(word);
+            if (shouldContinue === false) {
+              break;
+            }
+          }
+        } else {
+          shouldContinue = fn(word, w, bk, last);
+        }
+        if (shouldContinue === false) {
+          break;
+        }
+        last = bk;
+      }
+    };
+
+    LineWrapper.prototype.wrap = function(text, options) {
+      var buffer, emitLine, lc, nextY, textWidth, wc, y;
+      if (options.indent != null) {
+        this.indent = options.indent;
+      }
+      if (options.characterSpacing != null) {
+        this.characterSpacing = options.characterSpacing;
+      }
+      if (options.wordSpacing != null) {
+        this.wordSpacing = options.wordSpacing;
+      }
+      if (options.ellipsis != null) {
+        this.ellipsis = options.ellipsis;
+      }
+      nextY = this.document.y + this.document.currentLineHeight(true);
+      if (this.document.y > this.maxY || nextY > this.maxY) {
+        this.nextSection();
+      }
+      buffer = '';
+      textWidth = 0;
+      wc = 0;
+      lc = 0;
+      y = this.document.y;
+      emitLine = (function(_this) {
+        return function() {
+          options.textWidth = textWidth + _this.wordSpacing * (wc - 1);
+          options.wordCount = wc;
+          options.lineWidth = _this.lineWidth;
+          y = _this.document.y;
+          _this.emit('line', buffer, options, _this);
+          return lc++;
+        };
+      })(this);
+      this.emit('sectionStart', options, this);
+      this.eachWord(text, (function(_this) {
+        return function(word, w, bk, last) {
+          var lh, shouldContinue;
+          if ((last == null) || last.required) {
+            _this.emit('firstLine', options, _this);
+            _this.spaceLeft = _this.lineWidth;
+          }
+          if (w <= _this.spaceLeft) {
+            buffer += word;
+            textWidth += w;
+            wc++;
+          }
+          if (bk.required || w > _this.spaceLeft) {
+            if (bk.required) {
+              _this.emit('lastLine', options, _this);
+            }
+            lh = _this.document.currentLineHeight(true);
+            if ((_this.height != null) && _this.ellipsis && _this.document.y + lh * 2 > _this.maxY && _this.column >= _this.columns) {
+              if (_this.ellipsis === true) {
+                _this.ellipsis = '…';
+              }
+              buffer = buffer.replace(/\s+$/, '');
+              textWidth = _this.wordWidth(buffer + _this.ellipsis);
+              while (textWidth > _this.lineWidth) {
+                buffer = buffer.slice(0, -1).replace(/\s+$/, '');
+                textWidth = _this.wordWidth(buffer + _this.ellipsis);
+              }
+              buffer = buffer + _this.ellipsis;
+            }
+            if (bk.required && w > _this.spaceLeft) {
+              buffer = word;
+              textWidth = w;
+              wc = 1;
+            }
+            emitLine();
+            if (_this.document.y + lh > _this.maxY) {
+              shouldContinue = _this.nextSection();
+              if (!shouldContinue) {
+                wc = 0;
+                buffer = '';
+                return false;
+              }
+            }
+            if (bk.required) {
+              _this.spaceLeft = _this.lineWidth;
+              buffer = '';
+              textWidth = 0;
+              return wc = 0;
+            } else {
+              _this.spaceLeft = _this.lineWidth - w;
+              buffer = word;
+              textWidth = w;
+              return wc = 1;
+            }
+          } else {
+            return _this.spaceLeft -= w;
+          }
+        };
+      })(this));
+      if (wc > 0) {
+        this.emit('lastLine', options, this);
+        emitLine();
+      }
+      this.emit('sectionEnd', options, this);
+      if (options.continued === true) {
+        if (lc > 1) {
+          this.continuedX = 0;
+        }
+        this.continuedX += options.textWidth;
+        return this.document.y = y;
+      } else {
+        return this.document.x = this.startX;
+      }
+    };
+
+    LineWrapper.prototype.nextSection = function(options) {
+      var ref;
+      this.emit('sectionEnd', options, this);
+      if (++this.column > this.columns) {
+        if (this.height != null) {
+          return false;
+        }
+        this.document.addPage();
+        this.column = 1;
+        this.startY = this.document.page.margins.top;
+        this.maxY = this.document.page.maxY();
+        this.document.x = this.startX;
+        if (this.document._fillColor) {
+          (ref = this.document).fillColor.apply(ref, this.document._fillColor);
+        }
+        this.emit('pageBreak', options, this);
+      } else {
+        this.document.x += this.lineWidth + this.columnGap;
+        this.document.y = this.startY;
+        this.emit('columnBreak', options, this);
+      }
+      this.emit('sectionStart', options, this);
+      return true;
+    };
+
+    return LineWrapper;
+
+  })(EventEmitter);
+
+  module.exports = LineWrapper;
+
+}).call(this);
+
+
+/***/ }),
+/* 297 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var PDFImage;
+
+  PDFImage = __webpack_require__(121);
+
+  module.exports = {
+    initImages: function() {
+      this._imageRegistry = {};
+      return this._imageCount = 0;
+    },
+    image: function(src, x, y, options) {
+      var base, bh, bp, bw, h, hp, image, ip, name, ref, ref1, ref2, ref3, w, wp;
+      if (options == null) {
+        options = {};
+      }
+      if (typeof x === 'object') {
+        options = x;
+        x = null;
+      }
+      x = (ref = x != null ? x : options.x) != null ? ref : this.x;
+      y = (ref1 = y != null ? y : options.y) != null ? ref1 : this.y;
+      if (typeof src === 'string') {
+        image = this._imageRegistry[src];
+      }
+      if (!image) {
+        if (src.width && src.height) {
+          image = src;
+        } else {
+          image = this.openImage(src);
+        }
+      }
+      if (!image.obj) {
+        image.embed(this);
+      }
+      if ((base = this.page.xobjects)[name = image.label] == null) {
+        base[name] = image.obj;
+      }
+      w = options.width || image.width;
+      h = options.height || image.height;
+      if (options.width && !options.height) {
+        wp = w / image.width;
+        w = image.width * wp;
+        h = image.height * wp;
+      } else if (options.height && !options.width) {
+        hp = h / image.height;
+        w = image.width * hp;
+        h = image.height * hp;
+      } else if (options.scale) {
+        w = image.width * options.scale;
+        h = image.height * options.scale;
+      } else if (options.fit) {
+        ref2 = options.fit, bw = ref2[0], bh = ref2[1];
+        bp = bw / bh;
+        ip = image.width / image.height;
+        if (ip > bp) {
+          w = bw;
+          h = bw / ip;
+        } else {
+          h = bh;
+          w = bh * ip;
+        }
+      } else if (options.cover) {
+        ref3 = options.cover, bw = ref3[0], bh = ref3[1];
+        bp = bw / bh;
+        ip = image.width / image.height;
+        if (ip > bp) {
+          h = bh;
+          w = bh * ip;
+        } else {
+          w = bw;
+          h = bw / ip;
+        }
+      }
+      if (options.fit || options.cover) {
+        if (options.align === 'center') {
+          x = x + bw / 2 - w / 2;
+        } else if (options.align === 'right') {
+          x = x + bw - w;
+        }
+        if (options.valign === 'center') {
+          y = y + bh / 2 - h / 2;
+        } else if (options.valign === 'bottom') {
+          y = y + bh - h;
+        }
+      }
+      if (this.y === y) {
+        this.y += h;
+      }
+      this.save();
+      this.transform(w, 0, 0, -h, x, y + h);
+      this.addContent("/" + image.label + " Do");
+      this.restore();
+      return this;
+    },
+    openImage: function(src) {
+      var image;
+      if (typeof src === 'string') {
+        image = this._imageRegistry[src];
+      }
+      if (!image) {
+        image = PDFImage.open(src, 'I' + (++this._imageCount));
+        if (typeof src === 'string') {
+          this._imageRegistry[src] = image;
+        }
+      }
+      return image;
+    }
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 298 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var Data;
+
+  Data = (function() {
+    function Data(data) {
+      this.data = data != null ? data : [];
+      this.pos = 0;
+      this.length = this.data.length;
+    }
+
+    Data.prototype.readByte = function() {
+      return this.data[this.pos++];
+    };
+
+    Data.prototype.writeByte = function(byte) {
+      return this.data[this.pos++] = byte;
+    };
+
+    Data.prototype.byteAt = function(index) {
+      return this.data[index];
+    };
+
+    Data.prototype.readBool = function() {
+      return !!this.readByte();
+    };
+
+    Data.prototype.writeBool = function(val) {
+      return this.writeByte(val ? 1 : 0);
+    };
+
+    Data.prototype.readUInt32 = function() {
+      var b1, b2, b3, b4;
+      b1 = this.readByte() * 0x1000000;
+      b2 = this.readByte() << 16;
+      b3 = this.readByte() << 8;
+      b4 = this.readByte();
+      return b1 + b2 + b3 + b4;
+    };
+
+    Data.prototype.writeUInt32 = function(val) {
+      this.writeByte((val >>> 24) & 0xff);
+      this.writeByte((val >> 16) & 0xff);
+      this.writeByte((val >> 8) & 0xff);
+      return this.writeByte(val & 0xff);
+    };
+
+    Data.prototype.readInt32 = function() {
+      var int;
+      int = this.readUInt32();
+      if (int >= 0x80000000) {
+        return int - 0x100000000;
+      } else {
+        return int;
+      }
+    };
+
+    Data.prototype.writeInt32 = function(val) {
+      if (val < 0) {
+        val += 0x100000000;
+      }
+      return this.writeUInt32(val);
+    };
+
+    Data.prototype.readUInt16 = function() {
+      var b1, b2;
+      b1 = this.readByte() << 8;
+      b2 = this.readByte();
+      return b1 | b2;
+    };
+
+    Data.prototype.writeUInt16 = function(val) {
+      this.writeByte((val >> 8) & 0xff);
+      return this.writeByte(val & 0xff);
+    };
+
+    Data.prototype.readInt16 = function() {
+      var int;
+      int = this.readUInt16();
+      if (int >= 0x8000) {
+        return int - 0x10000;
+      } else {
+        return int;
+      }
+    };
+
+    Data.prototype.writeInt16 = function(val) {
+      if (val < 0) {
+        val += 0x10000;
+      }
+      return this.writeUInt16(val);
+    };
+
+    Data.prototype.readString = function(length) {
+      var i, j, ref, ret;
+      ret = [];
+      for (i = j = 0, ref = length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        ret[i] = String.fromCharCode(this.readByte());
+      }
+      return ret.join('');
+    };
+
+    Data.prototype.writeString = function(val) {
+      var i, j, ref, results;
+      results = [];
+      for (i = j = 0, ref = val.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        results.push(this.writeByte(val.charCodeAt(i)));
+      }
+      return results;
+    };
+
+    Data.prototype.stringAt = function(pos, length) {
+      this.pos = pos;
+      return this.readString(length);
+    };
+
+    Data.prototype.readShort = function() {
+      return this.readInt16();
+    };
+
+    Data.prototype.writeShort = function(val) {
+      return this.writeInt16(val);
+    };
+
+    Data.prototype.readLongLong = function() {
+      var b1, b2, b3, b4, b5, b6, b7, b8;
+      b1 = this.readByte();
+      b2 = this.readByte();
+      b3 = this.readByte();
+      b4 = this.readByte();
+      b5 = this.readByte();
+      b6 = this.readByte();
+      b7 = this.readByte();
+      b8 = this.readByte();
+      if (b1 & 0x80) {
+        return ((b1 ^ 0xff) * 0x100000000000000 + (b2 ^ 0xff) * 0x1000000000000 + (b3 ^ 0xff) * 0x10000000000 + (b4 ^ 0xff) * 0x100000000 + (b5 ^ 0xff) * 0x1000000 + (b6 ^ 0xff) * 0x10000 + (b7 ^ 0xff) * 0x100 + (b8 ^ 0xff) + 1) * -1;
+      }
+      return b1 * 0x100000000000000 + b2 * 0x1000000000000 + b3 * 0x10000000000 + b4 * 0x100000000 + b5 * 0x1000000 + b6 * 0x10000 + b7 * 0x100 + b8;
+    };
+
+    Data.prototype.writeLongLong = function(val) {
+      var high, low;
+      high = Math.floor(val / 0x100000000);
+      low = val & 0xffffffff;
+      this.writeByte((high >> 24) & 0xff);
+      this.writeByte((high >> 16) & 0xff);
+      this.writeByte((high >> 8) & 0xff);
+      this.writeByte(high & 0xff);
+      this.writeByte((low >> 24) & 0xff);
+      this.writeByte((low >> 16) & 0xff);
+      this.writeByte((low >> 8) & 0xff);
+      return this.writeByte(low & 0xff);
+    };
+
+    Data.prototype.readInt = function() {
+      return this.readInt32();
+    };
+
+    Data.prototype.writeInt = function(val) {
+      return this.writeInt32(val);
+    };
+
+    Data.prototype.slice = function(start, end) {
+      return this.data.slice(start, end);
+    };
+
+    Data.prototype.read = function(bytes) {
+      var buf, i, j, ref;
+      buf = [];
+      for (i = j = 0, ref = bytes; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        buf.push(this.readByte());
+      }
+      return buf;
+    };
+
+    Data.prototype.write = function(bytes) {
+      var byte, j, len, results;
+      results = [];
+      for (j = 0, len = bytes.length; j < len; j++) {
+        byte = bytes[j];
+        results.push(this.writeByte(byte));
+      }
+      return results;
+    };
+
+    return Data;
+
+  })();
+
+  module.exports = Data;
+
+}).call(this);
+
+
+/***/ }),
+/* 299 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var JPEG, fs,
+    indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
+
+  fs = __webpack_require__(8);
+
+  JPEG = (function() {
+    var MARKERS;
+
+    MARKERS = [0xFFC0, 0xFFC1, 0xFFC2, 0xFFC3, 0xFFC5, 0xFFC6, 0xFFC7, 0xFFC8, 0xFFC9, 0xFFCA, 0xFFCB, 0xFFCC, 0xFFCD, 0xFFCE, 0xFFCF];
+
+    function JPEG(data, label) {
+      var channels, marker, pos;
+      this.data = data;
+      this.label = label;
+      if (this.data.readUInt16BE(0) !== 0xFFD8) {
+        throw "SOI not found in JPEG";
+      }
+      pos = 2;
+      while (pos < this.data.length) {
+        marker = this.data.readUInt16BE(pos);
+        pos += 2;
+        if (indexOf.call(MARKERS, marker) >= 0) {
+          break;
+        }
+        pos += this.data.readUInt16BE(pos);
+      }
+      if (indexOf.call(MARKERS, marker) < 0) {
+        throw "Invalid JPEG.";
+      }
+      pos += 2;
+      this.bits = this.data[pos++];
+      this.height = this.data.readUInt16BE(pos);
+      pos += 2;
+      this.width = this.data.readUInt16BE(pos);
+      pos += 2;
+      channels = this.data[pos++];
+      this.colorSpace = (function() {
+        switch (channels) {
+          case 1:
+            return 'DeviceGray';
+          case 3:
+            return 'DeviceRGB';
+          case 4:
+            return 'DeviceCMYK';
+        }
+      })();
+      this.obj = null;
+    }
+
+    JPEG.prototype.embed = function(document) {
+      if (this.obj) {
+        return;
+      }
+      this.obj = document.ref({
+        Type: 'XObject',
+        Subtype: 'Image',
+        BitsPerComponent: this.bits,
+        Width: this.width,
+        Height: this.height,
+        ColorSpace: this.colorSpace,
+        Filter: 'DCTDecode'
+      });
+      if (this.colorSpace === 'DeviceCMYK') {
+        this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0];
+      }
+      this.obj.end(this.data);
+      return this.data = null;
+    };
+
+    return JPEG;
+
+  })();
+
+  module.exports = JPEG;
+
+}).call(this);
+
+
+/***/ }),
+/* 300 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+(function() {
+  var PNG, PNGImage, zlib;
+
+  zlib = __webpack_require__(48);
+
+  PNG = __webpack_require__(301);
+
+  PNGImage = (function() {
+    function PNGImage(data, label) {
+      this.label = label;
+      this.image = new PNG(data);
+      this.width = this.image.width;
+      this.height = this.image.height;
+      this.imgData = this.image.imgData;
+      this.obj = null;
+    }
+
+    PNGImage.prototype.embed = function(document) {
+      var k, len1, mask, palette, params, rgb, val, x;
+      this.document = document;
+      if (this.obj) {
+        return;
+      }
+      this.obj = this.document.ref({
+        Type: 'XObject',
+        Subtype: 'Image',
+        BitsPerComponent: this.image.bits,
+        Width: this.width,
+        Height: this.height,
+        Filter: 'FlateDecode'
+      });
+      if (!this.image.hasAlphaChannel) {
+        params = this.document.ref({
+          Predictor: 15,
+          Colors: this.image.colors,
+          BitsPerComponent: this.image.bits,
+          Columns: this.width
+        });
+        this.obj.data['DecodeParms'] = params;
+        params.end();
+      }
+      if (this.image.palette.length === 0) {
+        this.obj.data['ColorSpace'] = this.image.colorSpace;
+      } else {
+        palette = this.document.ref();
+        palette.end(new Buffer(this.image.palette));
+        this.obj.data['ColorSpace'] = ['Indexed', 'DeviceRGB', (this.image.palette.length / 3) - 1, palette];
+      }
+      if (this.image.transparency.grayscale) {
+        val = this.image.transparency.greyscale;
+        return this.obj.data['Mask'] = [val, val];
+      } else if (this.image.transparency.rgb) {
+        rgb = this.image.transparency.rgb;
+        mask = [];
+        for (k = 0, len1 = rgb.length; k < len1; k++) {
+          x = rgb[k];
+          mask.push(x, x);
+        }
+        return this.obj.data['Mask'] = mask;
+      } else if (this.image.transparency.indexed) {
+        return this.loadIndexedAlphaChannel();
+      } else if (this.image.hasAlphaChannel) {
+        return this.splitAlphaChannel();
+      } else {
+        return this.finalize();
+      }
+    };
+
+    PNGImage.prototype.finalize = function() {
+      var sMask;
+      if (this.alphaChannel) {
+        sMask = this.document.ref({
+          Type: 'XObject',
+          Subtype: 'Image',
+          Height: this.height,
+          Width: this.width,
+          BitsPerComponent: 8,
+          Filter: 'FlateDecode',
+          ColorSpace: 'DeviceGray',
+          Decode: [0, 1]
+        });
+        sMask.end(this.alphaChannel);
+        this.obj.data['SMask'] = sMask;
+      }
+      this.obj.end(this.imgData);
+      this.image = null;
+      return this.imgData = null;
+    };
+
+    PNGImage.prototype.splitAlphaChannel = function() {
+      return this.image.decodePixels((function(_this) {
+        return function(pixels) {
+          var a, alphaChannel, colorByteSize, done, i, imgData, len, p, pixelCount;
+          colorByteSize = _this.image.colors * _this.image.bits / 8;
+          pixelCount = _this.width * _this.height;
+          imgData = new Buffer(pixelCount * colorByteSize);
+          alphaChannel = new Buffer(pixelCount);
+          i = p = a = 0;
+          len = pixels.length;
+          while (i < len) {
+            imgData[p++] = pixels[i++];
+            imgData[p++] = pixels[i++];
+            imgData[p++] = pixels[i++];
+            alphaChannel[a++] = pixels[i++];
+          }
+          done = 0;
+          zlib.deflate(imgData, function(err, imgData1) {
+            _this.imgData = imgData1;
+            if (err) {
+              throw err;
+            }
+            if (++done === 2) {
+              return _this.finalize();
+            }
+          });
+          return zlib.deflate(alphaChannel, function(err, alphaChannel1) {
+            _this.alphaChannel = alphaChannel1;
+            if (err) {
+              throw err;
+            }
+            if (++done === 2) {
+              return _this.finalize();
+            }
+          });
+        };
+      })(this));
+    };
+
+    PNGImage.prototype.loadIndexedAlphaChannel = function(fn) {
+      var transparency;
+      transparency = this.image.transparency.indexed;
+      return this.image.decodePixels((function(_this) {
+        return function(pixels) {
+          var alphaChannel, i, j, k, ref;
+          alphaChannel = new Buffer(_this.width * _this.height);
+          i = 0;
+          for (j = k = 0, ref = pixels.length; k < ref; j = k += 1) {
+            alphaChannel[i++] = transparency[pixels[j]];
+          }
+          return zlib.deflate(alphaChannel, function(err, alphaChannel1) {
+            _this.alphaChannel = alphaChannel1;
+            if (err) {
+              throw err;
+            }
+            return _this.finalize();
+          });
+        };
+      })(this));
+    };
+
+    return PNGImage;
+
+  })();
+
+  module.exports = PNGImage;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 301 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.4.0
+
+/*
+# MIT LICENSE
+# Copyright (c) 2011 Devon Govett
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a copy of this 
+# software and associated documentation files (the "Software"), to deal in the Software 
+# without restriction, including without limitation the rights to use, copy, modify, merge, 
+# publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons 
+# to whom the Software is furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included in all copies or 
+# substantial portions of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 
+# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
+# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+(function() {
+  var PNG, fs, zlib;
+
+  fs = __webpack_require__(8);
+
+  zlib = __webpack_require__(48);
+
+  module.exports = PNG = (function() {
+
+    PNG.decode = function(path, fn) {
+      return fs.readFile(path, function(err, file) {
+        var png;
+        png = new PNG(file);
+        return png.decode(function(pixels) {
+          return fn(pixels);
+        });
+      });
+    };
+
+    PNG.load = function(path) {
+      var file;
+      file = fs.readFileSync(path);
+      return new PNG(file);
+    };
+
+    function PNG(data) {
+      var chunkSize, colors, i, index, key, section, short, text, _i, _j, _ref;
+      this.data = data;
+      this.pos = 8;
+      this.palette = [];
+      this.imgData = [];
+      this.transparency = {};
+      this.text = {};
+      while (true) {
+        chunkSize = this.readUInt32();
+        section = ((function() {
+          var _i, _results;
+          _results = [];
+          for (i = _i = 0; _i < 4; i = ++_i) {
+            _results.push(String.fromCharCode(this.data[this.pos++]));
+          }
+          return _results;
+        }).call(this)).join('');
+        switch (section) {
+          case 'IHDR':
+            this.width = this.readUInt32();
+            this.height = this.readUInt32();
+            this.bits = this.data[this.pos++];
+            this.colorType = this.data[this.pos++];
+            this.compressionMethod = this.data[this.pos++];
+            this.filterMethod = this.data[this.pos++];
+            this.interlaceMethod = this.data[this.pos++];
+            break;
+          case 'PLTE':
+            this.palette = this.read(chunkSize);
+            break;
+          case 'IDAT':
+            for (i = _i = 0; _i < chunkSize; i = _i += 1) {
+              this.imgData.push(this.data[this.pos++]);
+            }
+            break;
+          case 'tRNS':
+            this.transparency = {};
+            switch (this.colorType) {
+              case 3:
+                this.transparency.indexed = this.read(chunkSize);
+                short = 255 - this.transparency.indexed.length;
+                if (short > 0) {
+                  for (i = _j = 0; 0 <= short ? _j < short : _j > short; i = 0 <= short ? ++_j : --_j) {
+                    this.transparency.indexed.push(255);
+                  }
+                }
+                break;
+              case 0:
+                this.transparency.grayscale = this.read(chunkSize)[0];
+                break;
+              case 2:
+                this.transparency.rgb = this.read(chunkSize);
+            }
+            break;
+          case 'tEXt':
+            text = this.read(chunkSize);
+            index = text.indexOf(0);
+            key = String.fromCharCode.apply(String, text.slice(0, index));
+            this.text[key] = String.fromCharCode.apply(String, text.slice(index + 1));
+            break;
+          case 'IEND':
+            this.colors = (function() {
+              switch (this.colorType) {
+                case 0:
+                case 3:
+                case 4:
+                  return 1;
+                case 2:
+                case 6:
+                  return 3;
+              }
+            }).call(this);
+            this.hasAlphaChannel = (_ref = this.colorType) === 4 || _ref === 6;
+            colors = this.colors + (this.hasAlphaChannel ? 1 : 0);
+            this.pixelBitlength = this.bits * colors;
+            this.colorSpace = (function() {
+              switch (this.colors) {
+                case 1:
+                  return 'DeviceGray';
+                case 3:
+                  return 'DeviceRGB';
+              }
+            }).call(this);
+            this.imgData = new Buffer(this.imgData);
+            return;
+          default:
+            this.pos += chunkSize;
+        }
+        this.pos += 4;
+        if (this.pos > this.data.length) {
+          throw new Error("Incomplete or corrupt PNG file");
+        }
+      }
+      return;
+    }
+
+    PNG.prototype.read = function(bytes) {
+      var i, _i, _results;
+      _results = [];
+      for (i = _i = 0; 0 <= bytes ? _i < bytes : _i > bytes; i = 0 <= bytes ? ++_i : --_i) {
+        _results.push(this.data[this.pos++]);
+      }
+      return _results;
+    };
+
+    PNG.prototype.readUInt32 = function() {
+      var b1, b2, b3, b4;
+      b1 = this.data[this.pos++] << 24;
+      b2 = this.data[this.pos++] << 16;
+      b3 = this.data[this.pos++] << 8;
+      b4 = this.data[this.pos++];
+      return b1 | b2 | b3 | b4;
+    };
+
+    PNG.prototype.readUInt16 = function() {
+      var b1, b2;
+      b1 = this.data[this.pos++] << 8;
+      b2 = this.data[this.pos++];
+      return b1 | b2;
+    };
+
+    PNG.prototype.decodePixels = function(fn) {
+      var _this = this;
+      return zlib.inflate(this.imgData, function(err, data) {
+        var byte, c, col, i, left, length, p, pa, paeth, pb, pc, pixelBytes, pixels, pos, row, scanlineLength, upper, upperLeft, _i, _j, _k, _l, _m;
+        if (err) {
+          throw err;
+        }
+        pixelBytes = _this.pixelBitlength / 8;
+        scanlineLength = pixelBytes * _this.width;
+        pixels = new Buffer(scanlineLength * _this.height);
+        length = data.length;
+        row = 0;
+        pos = 0;
+        c = 0;
+        while (pos < length) {
+          switch (data[pos++]) {
+            case 0:
+              for (i = _i = 0; _i < scanlineLength; i = _i += 1) {
+                pixels[c++] = data[pos++];
+              }
+              break;
+            case 1:
+              for (i = _j = 0; _j < scanlineLength; i = _j += 1) {
+                byte = data[pos++];
+                left = i < pixelBytes ? 0 : pixels[c - pixelBytes];
+                pixels[c++] = (byte + left) % 256;
+              }
+              break;
+            case 2:
+              for (i = _k = 0; _k < scanlineLength; i = _k += 1) {
+                byte = data[pos++];
+                col = (i - (i % pixelBytes)) / pixelBytes;
+                upper = row && pixels[(row - 1) * scanlineLength + col * pixelBytes + (i % pixelBytes)];
+                pixels[c++] = (upper + byte) % 256;
+              }
+              break;
+            case 3:
+              for (i = _l = 0; _l < scanlineLength; i = _l += 1) {
+                byte = data[pos++];
+                col = (i - (i % pixelBytes)) / pixelBytes;
+                left = i < pixelBytes ? 0 : pixels[c - pixelBytes];
+                upper = row && pixels[(row - 1) * scanlineLength + col * pixelBytes + (i % pixelBytes)];
+                pixels[c++] = (byte + Math.floor((left + upper) / 2)) % 256;
+              }
+              break;
+            case 4:
+              for (i = _m = 0; _m < scanlineLength; i = _m += 1) {
+                byte = data[pos++];
+                col = (i - (i % pixelBytes)) / pixelBytes;
+                left = i < pixelBytes ? 0 : pixels[c - pixelBytes];
+                if (row === 0) {
+                  upper = upperLeft = 0;
+                } else {
+                  upper = pixels[(row - 1) * scanlineLength + col * pixelBytes + (i % pixelBytes)];
+                  upperLeft = col && pixels[(row - 1) * scanlineLength + (col - 1) * pixelBytes + (i % pixelBytes)];
+                }
+                p = left + upper - upperLeft;
+                pa = Math.abs(p - left);
+                pb = Math.abs(p - upper);
+                pc = Math.abs(p - upperLeft);
+                if (pa <= pb && pa <= pc) {
+                  paeth = left;
+                } else if (pb <= pc) {
+                  paeth = upper;
+                } else {
+                  paeth = upperLeft;
+                }
+                pixels[c++] = (byte + paeth) % 256;
+              }
+              break;
+            default:
+              throw new Error("Invalid filter algorithm: " + data[pos - 1]);
+          }
+          row++;
+        }
+        return fn(pixels);
+      });
+    };
+
+    PNG.prototype.decodePalette = function() {
+      var c, i, length, palette, pos, ret, transparency, _i, _ref, _ref1;
+      palette = this.palette;
+      transparency = this.transparency.indexed || [];
+      ret = new Buffer(transparency.length + palette.length);
+      pos = 0;
+      length = palette.length;
+      c = 0;
+      for (i = _i = 0, _ref = palette.length; _i < _ref; i = _i += 3) {
+        ret[pos++] = palette[i];
+        ret[pos++] = palette[i + 1];
+        ret[pos++] = palette[i + 2];
+        ret[pos++] = (_ref1 = transparency[c++]) != null ? _ref1 : 255;
+      }
+      return ret;
+    };
+
+    PNG.prototype.copyToImageData = function(imageData, pixels) {
+      var alpha, colors, data, i, input, j, k, length, palette, v, _ref;
+      colors = this.colors;
+      palette = null;
+      alpha = this.hasAlphaChannel;
+      if (this.palette.length) {
+        palette = (_ref = this._decodedPalette) != null ? _ref : this._decodedPalette = this.decodePalette();
+        colors = 4;
+        alpha = true;
+      }
+      data = (imageData != null ? imageData.data : void 0) || imageData;
+      length = data.length;
+      input = palette || pixels;
+      i = j = 0;
+      if (colors === 1) {
+        while (i < length) {
+          k = palette ? pixels[i / 4] * 4 : j;
+          v = input[k++];
+          data[i++] = v;
+          data[i++] = v;
+          data[i++] = v;
+          data[i++] = alpha ? input[k++] : 255;
+          j = k;
+        }
+      } else {
+        while (i < length) {
+          k = palette ? pixels[i / 4] * 4 : j;
+          data[i++] = input[k++];
+          data[i++] = input[k++];
+          data[i++] = input[k++];
+          data[i++] = alpha ? input[k++] : 255;
+          j = k;
+        }
+      }
+    };
+
+    PNG.prototype.decode = function(fn) {
+      var ret,
+        _this = this;
+      ret = new Buffer(this.width * this.height * 4);
+      return this.decodePixels(function(pixels) {
+        _this.copyToImageData(ret, pixels);
+        return fn(ret);
+      });
+    };
+
+    return PNG;
+
+  })();
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 302 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  module.exports = {
+    annotate: function(x, y, w, h, options) {
+      var key, ref, val;
+      options.Type = 'Annot';
+      options.Rect = this._convertRect(x, y, w, h);
+      options.Border = [0, 0, 0];
+      if (options.Subtype !== 'Link') {
+        if (options.C == null) {
+          options.C = this._normalizeColor(options.color || [0, 0, 0]);
+        }
+      }
+      delete options.color;
+      if (typeof options.Dest === 'string') {
+        options.Dest = new String(options.Dest);
+      }
+      for (key in options) {
+        val = options[key];
+        options[key[0].toUpperCase() + key.slice(1)] = val;
+      }
+      ref = this.ref(options);
+      this.page.annotations.push(ref);
+      ref.end();
+      return this;
+    },
+    note: function(x, y, w, h, contents, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Text';
+      options.Contents = new String(contents);
+      options.Name = 'Comment';
+      if (options.color == null) {
+        options.color = [243, 223, 92];
+      }
+      return this.annotate(x, y, w, h, options);
+    },
+    link: function(x, y, w, h, url, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Link';
+      options.A = this.ref({
+        S: 'URI',
+        URI: new String(url)
+      });
+      options.A.end();
+      return this.annotate(x, y, w, h, options);
+    },
+    _markup: function(x, y, w, h, options) {
+      var ref1, x1, x2, y1, y2;
+      if (options == null) {
+        options = {};
+      }
+      ref1 = this._convertRect(x, y, w, h), x1 = ref1[0], y1 = ref1[1], x2 = ref1[2], y2 = ref1[3];
+      options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];
+      options.Contents = new String;
+      return this.annotate(x, y, w, h, options);
+    },
+    highlight: function(x, y, w, h, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Highlight';
+      if (options.color == null) {
+        options.color = [241, 238, 148];
+      }
+      return this._markup(x, y, w, h, options);
+    },
+    underline: function(x, y, w, h, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Underline';
+      return this._markup(x, y, w, h, options);
+    },
+    strike: function(x, y, w, h, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'StrikeOut';
+      return this._markup(x, y, w, h, options);
+    },
+    lineAnnotation: function(x1, y1, x2, y2, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Line';
+      options.Contents = new String;
+      options.L = [x1, this.page.height - y1, x2, this.page.height - y2];
+      return this.annotate(x1, y1, x2, y2, options);
+    },
+    rectAnnotation: function(x, y, w, h, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Square';
+      options.Contents = new String;
+      return this.annotate(x, y, w, h, options);
+    },
+    ellipseAnnotation: function(x, y, w, h, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Circle';
+      options.Contents = new String;
+      return this.annotate(x, y, w, h, options);
+    },
+    textAnnotation: function(x, y, w, h, text, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'FreeText';
+      options.Contents = new String(text);
+      options.DA = new String;
+      return this.annotate(x, y, w, h, options);
+    },
+    _convertRect: function(x1, y1, w, h) {
+      var m0, m1, m2, m3, m4, m5, ref1, x2, y2;
+      y2 = y1;
+      y1 += h;
+      x2 = x1 + w;
+      ref1 = this._ctm, m0 = ref1[0], m1 = ref1[1], m2 = ref1[2], m3 = ref1[3], m4 = ref1[4], m5 = ref1[5];
+      x1 = m0 * x1 + m2 * y1 + m4;
+      y1 = m1 * x1 + m3 * y1 + m5;
+      x2 = m0 * x2 + m2 * y2 + m4;
+      y2 = m1 * x2 + m3 * y2 + m5;
+      return [x1, y1, x2, y2];
+    }
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 303 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+module.exports = {
+	'4A0': [4767.87, 6740.79],
+	'2A0': [3370.39, 4767.87],
+	A0: [2383.94, 3370.39],
+	A1: [1683.78, 2383.94],
+	A2: [1190.55, 1683.78],
+	A3: [841.89, 1190.55],
+	A4: [595.28, 841.89],
+	A5: [419.53, 595.28],
+	A6: [297.64, 419.53],
+	A7: [209.76, 297.64],
+	A8: [147.40, 209.76],
+	A9: [104.88, 147.40],
+	A10: [73.70, 104.88],
+	B0: [2834.65, 4008.19],
+	B1: [2004.09, 2834.65],
+	B2: [1417.32, 2004.09],
+	B3: [1000.63, 1417.32],
+	B4: [708.66, 1000.63],
+	B5: [498.90, 708.66],
+	B6: [354.33, 498.90],
+	B7: [249.45, 354.33],
+	B8: [175.75, 249.45],
+	B9: [124.72, 175.75],
+	B10: [87.87, 124.72],
+	C0: [2599.37, 3676.54],
+	C1: [1836.85, 2599.37],
+	C2: [1298.27, 1836.85],
+	C3: [918.43, 1298.27],
+	C4: [649.13, 918.43],
+	C5: [459.21, 649.13],
+	C6: [323.15, 459.21],
+	C7: [229.61, 323.15],
+	C8: [161.57, 229.61],
+	C9: [113.39, 161.57],
+	C10: [79.37, 113.39],
+	RA0: [2437.80, 3458.27],
+	RA1: [1729.13, 2437.80],
+	RA2: [1218.90, 1729.13],
+	RA3: [864.57, 1218.90],
+	RA4: [609.45, 864.57],
+	SRA0: [2551.18, 3628.35],
+	SRA1: [1814.17, 2551.18],
+	SRA2: [1275.59, 1814.17],
+	SRA3: [907.09, 1275.59],
+	SRA4: [637.80, 907.09],
+	EXECUTIVE: [521.86, 756.00],
+	FOLIO: [612.00, 936.00],
+	LEGAL: [612.00, 1008.00],
+	LETTER: [612.00, 792.00],
+	TABLOID: [792.00, 1224.00]
+};
+
+
+/***/ }),
+/* 304 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer) {
+
+var PDFImage = __webpack_require__(121);
+
+function ImageMeasure(pdfKitDoc, imageDictionary) {
+	this.pdfKitDoc = pdfKitDoc;
+	this.imageDictionary = imageDictionary || {};
+}
+
+ImageMeasure.prototype.measureImage = function (src) {
+	var image, label;
+	var that = this;
+
+	if (!this.pdfKitDoc._imageRegistry[src]) {
+		label = 'I' + (++this.pdfKitDoc._imageCount);
+		try {
+			image = PDFImage.open(realImageSrc(src), label);
+		} catch (error) {
+			image = null;
+		}
+		if (image === null || image === undefined) {
+			throw 'invalid image, images dictionary should contain dataURL entries (or local file paths in node.js)';
+		}
+		image.embed(this.pdfKitDoc);
+		this.pdfKitDoc._imageRegistry[src] = image;
+	} else {
+		image = this.pdfKitDoc._imageRegistry[src];
+	}
+
+	return {width: image.width, height: image.height};
+
+	function realImageSrc(src) {
+		var img = that.imageDictionary[src];
+
+		if (!img) {
+			return src;
+		}
+
+		var index = img.indexOf('base64,');
+		if (index < 0) {
+			return that.imageDictionary[src];
+		}
+
+		return Buffer.from(img.substring(index + 7), 'base64');
+	}
+};
+
+module.exports = ImageMeasure;
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 305 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var isArray = __webpack_require__(0).isArray;
+
+function groupDecorations(line) {
+	var groups = [], currentGroup = null;
+	for (var i = 0, l = line.inlines.length; i < l; i++) {
+		var inline = line.inlines[i];
+		var decoration = inline.decoration;
+		if (!decoration) {
+			currentGroup = null;
+			continue;
+		}
+		if (!isArray(decoration)) {
+			decoration = [decoration];
+		}
+		var color = inline.decorationColor || inline.color || 'black';
+		var style = inline.decorationStyle || 'solid';
+		for (var ii = 0, ll = decoration.length; ii < ll; ii++) {
+			var decorationItem = decoration[ii];
+			if (!currentGroup || decorationItem !== currentGroup.decoration ||
+				style !== currentGroup.decorationStyle || color !== currentGroup.decorationColor ||
+				decorationItem === 'lineThrough') {
+
+				currentGroup = {
+					line: line,
+					decoration: decorationItem,
+					decorationColor: color,
+					decorationStyle: style,
+					inlines: [inline]
+				};
+				groups.push(currentGroup);
+			} else {
+				currentGroup.inlines.push(inline);
+			}
+		}
+	}
+
+	return groups;
+}
+
+function drawDecoration(group, x, y, pdfKitDoc) {
+	function maxInline() {
+		var max = 0;
+		for (var i = 0, l = group.inlines.length; i < l; i++) {
+			var inline = group.inlines[i];
+			max = inline.fontSize > max ? i : max;
+		}
+		return group.inlines[max];
+	}
+	function width() {
+		var sum = 0;
+		for (var i = 0, l = group.inlines.length; i < l; i++) {
+			sum += group.inlines[i].width;
+		}
+		return sum;
+	}
+	var firstInline = group.inlines[0],
+		biggerInline = maxInline(),
+		totalWidth = width(),
+		lineAscent = group.line.getAscenderHeight(),
+		ascent = biggerInline.font.ascender / 1000 * biggerInline.fontSize,
+		height = biggerInline.height,
+		descent = height - ascent;
+
+	var lw = 0.5 + Math.floor(Math.max(biggerInline.fontSize - 8, 0) / 2) * 0.12;
+
+	switch (group.decoration) {
+		case 'underline':
+			y += lineAscent + descent * 0.45;
+			break;
+		case 'overline':
+			y += lineAscent - (ascent * 0.85);
+			break;
+		case 'lineThrough':
+			y += lineAscent - (ascent * 0.25);
+			break;
+		default:
+			throw 'Unkown decoration : ' + group.decoration;
+	}
+	pdfKitDoc.save();
+
+	if (group.decorationStyle === 'double') {
+		var gap = Math.max(0.5, lw * 2);
+		pdfKitDoc.fillColor(group.decorationColor)
+			.rect(x + firstInline.x, y - lw / 2, totalWidth, lw / 2).fill()
+			.rect(x + firstInline.x, y + gap - lw / 2, totalWidth, lw / 2).fill();
+	} else if (group.decorationStyle === 'dashed') {
+		var nbDashes = Math.ceil(totalWidth / (3.96 + 2.84));
+		var rdx = x + firstInline.x;
+		pdfKitDoc.rect(rdx, y, totalWidth, lw).clip();
+		pdfKitDoc.fillColor(group.decorationColor);
+		for (var i = 0; i < nbDashes; i++) {
+			pdfKitDoc.rect(rdx, y - lw / 2, 3.96, lw).fill();
+			rdx += 3.96 + 2.84;
+		}
+	} else if (group.decorationStyle === 'dotted') {
+		var nbDots = Math.ceil(totalWidth / (lw * 3));
+		var rx = x + firstInline.x;
+		pdfKitDoc.rect(rx, y, totalWidth, lw).clip();
+		pdfKitDoc.fillColor(group.decorationColor);
+		for (var ii = 0; ii < nbDots; ii++) {
+			pdfKitDoc.rect(rx, y - lw / 2, lw, lw).fill();
+			rx += (lw * 3);
+		}
+	} else if (group.decorationStyle === 'wavy') {
+		var sh = 0.7, sv = 1;
+		var nbWaves = Math.ceil(totalWidth / (sh * 2)) + 1;
+		var rwx = x + firstInline.x - 1;
+		pdfKitDoc.rect(x + firstInline.x, y - sv, totalWidth, y + sv).clip();
+		pdfKitDoc.lineWidth(0.24);
+		pdfKitDoc.moveTo(rwx, y);
+		for (var iii = 0; iii < nbWaves; iii++) {
+			pdfKitDoc.bezierCurveTo(rwx + sh, y - sv, rwx + sh * 2, y - sv, rwx + sh * 3, y)
+				.bezierCurveTo(rwx + sh * 4, y + sv, rwx + sh * 5, y + sv, rwx + sh * 6, y);
+			rwx += sh * 6;
+		}
+		pdfKitDoc.stroke(group.decorationColor);
+	} else {
+		pdfKitDoc.fillColor(group.decorationColor)
+			.rect(x + firstInline.x, y - lw / 2, totalWidth, lw)
+			.fill();
+	}
+	pdfKitDoc.restore();
+}
+
+function drawDecorations(line, x, y, pdfKitDoc) {
+	var groups = groupDecorations(line);
+	for (var i = 0, l = groups.length; i < l; i++) {
+		drawDecoration(groups[i], x, y, pdfKitDoc);
+	}
+}
+
+function drawBackground(line, x, y, pdfKitDoc) {
+	var height = line.getHeight();
+	for (var i = 0, l = line.inlines.length; i < l; i++) {
+		var inline = line.inlines[i];
+		if (!inline.background) {
+			continue;
+		}
+		var justifyShift = (inline.justifyShift || 0);
+		pdfKitDoc.fillColor(inline.background)
+			.rect(x + inline.x - justifyShift, y, inline.width + justifyShift, height)
+			.fill();
+	}
+}
+
+module.exports = {
+	drawBackground: drawBackground,
+	drawDecorations: drawDecorations
+};
+
+/***/ }),
+/* 306 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var __WEBPACK_AMD_DEFINE_RESULT__;/* FileSaver.js
+ * A saveAs() FileSaver implementation.
+ * 1.3.2
+ * 2016-06-16 18:25:19
+ *
+ * By Eli Grey, http://eligrey.com
+ * License: MIT
+ *   See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
+ */
+
+/*global self */
+/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
+
+/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
+
+var saveAs = saveAs || (function(view) {
+	"use strict";
+	// IE <10 is explicitly unsupported
+	if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
+		return;
+	}
+	var
+		  doc = view.document
+		  // only get URL when necessary in case Blob.js hasn't overridden it yet
+		, get_URL = function() {
+			return view.URL || view.webkitURL || view;
+		}
+		, save_link = doc ? doc.createElementNS("http://www.w3.org/1999/xhtml", "a") : []
+		, can_use_save_link = "download" in save_link
+		, click = function(node) {
+			var event = new MouseEvent("click");
+			node.dispatchEvent(event);
+		}
+		, is_safari = /constructor/i.test(view.HTMLElement) || view.safari
+		, is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent)
+		, throw_outside = function(ex) {
+			(view.setImmediate || view.setTimeout)(function() {
+				throw ex;
+			}, 0);
+		}
+		, force_saveable_type = "application/octet-stream"
+		// the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
+		, arbitrary_revoke_timeout = 1000 * 40 // in ms
+		, revoke = function(file) {
+			var revoker = function() {
+				if (typeof file === "string") { // file is an object URL
+					get_URL().revokeObjectURL(file);
+				} else { // file is a File
+					file.remove();
+				}
+			};
+			setTimeout(revoker, arbitrary_revoke_timeout);
+		}
+		, dispatch = function(filesaver, event_types, event) {
+			event_types = [].concat(event_types);
+			var i = event_types.length;
+			while (i--) {
+				var listener = filesaver["on" + event_types[i]];
+				if (typeof listener === "function") {
+					try {
+						listener.call(filesaver, event || filesaver);
+					} catch (ex) {
+						throw_outside(ex);
+					}
+				}
+			}
+		}
+		, auto_bom = function(blob) {
+			// prepend BOM for UTF-8 XML and text/* types (including HTML)
+			// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
+			if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
+				return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
+			}
+			return blob;
+		}
+		, FileSaver = function(blob, name, no_auto_bom) {
+			if (!no_auto_bom) {
+				blob = auto_bom(blob);
+			}
+			// First try a.download, then web filesystem, then object URLs
+			var
+				  filesaver = this
+				, type = blob.type
+				, force = type === force_saveable_type
+				, object_url
+				, dispatch_all = function() {
+					dispatch(filesaver, "writestart progress write writeend".split(" "));
+				}
+				// on any filesys errors revert to saving with object URLs
+				, fs_error = function() {
+					if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
+						// Safari doesn't allow downloading of blob urls
+						var reader = new FileReader();
+						reader.onloadend = function() {
+							var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
+							var popup = view.open(url, '_blank');
+							if(!popup) view.location.href = url;
+							url=undefined; // release reference before dispatching
+							filesaver.readyState = filesaver.DONE;
+							dispatch_all();
+						};
+						reader.readAsDataURL(blob);
+						filesaver.readyState = filesaver.INIT;
+						return;
+					}
+					// don't create more object URLs than needed
+					if (!object_url) {
+						object_url = get_URL().createObjectURL(blob);
+					}
+					if (force) {
+						view.location.href = object_url;
+					} else {
+						var opened = view.open(object_url, "_blank");
+						if (!opened) {
+							// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
+							view.location.href = object_url;
+						}
+					}
+					filesaver.readyState = filesaver.DONE;
+					dispatch_all();
+					revoke(object_url);
+				}
+			;
+			filesaver.readyState = filesaver.INIT;
+
+			if (can_use_save_link) {
+				object_url = get_URL().createObjectURL(blob);
+				setTimeout(function() {
+					save_link.href = object_url;
+					save_link.download = name;
+					click(save_link);
+					dispatch_all();
+					revoke(object_url);
+					filesaver.readyState = filesaver.DONE;
+				});
+				return;
+			}
+
+			fs_error();
+		}
+		, FS_proto = FileSaver.prototype
+		, saveAs = function(blob, name, no_auto_bom) {
+			return new FileSaver(blob, name || blob.name || "download", no_auto_bom);
+		}
+	;
+	// IE 10+ (native saveAs)
+	if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
+		return function(blob, name, no_auto_bom) {
+			name = name || blob.name || "download";
+
+			if (!no_auto_bom) {
+				blob = auto_bom(blob);
+			}
+			return navigator.msSaveOrOpenBlob(blob, name);
+		};
+	}
+
+	FS_proto.abort = function(){};
+	FS_proto.readyState = FS_proto.INIT = 0;
+	FS_proto.WRITING = 1;
+	FS_proto.DONE = 2;
+
+	FS_proto.error =
+	FS_proto.onwritestart =
+	FS_proto.onprogress =
+	FS_proto.onwrite =
+	FS_proto.onabort =
+	FS_proto.onerror =
+	FS_proto.onwriteend =
+		null;
+
+	return saveAs;
+}(
+	   typeof self !== "undefined" && self
+	|| typeof window !== "undefined" && window
+	|| this.content
+));
+// `self` is undefined in Firefox for Android content script context
+// while `this` is nsIContentFrameMessageManager
+// with an attribute `content` that corresponds to the window
+
+if (typeof module !== "undefined" && module.exports) {
+  module.exports.saveAs = saveAs;
+} else if (("function" !== "undefined" && __webpack_require__(307) !== null) && (__webpack_require__(308) !== null)) {
+  !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
+    return saveAs;
+  }).call(exports, __webpack_require__, exports, module),
+				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+}
+
+
+/***/ }),
+/* 307 */
+/***/ (function(module, exports) {
+
+module.exports = function() {
+	throw new Error("define cannot be used indirect");
+};
+
+
+/***/ }),
+/* 308 */
+/***/ (function(module, exports) {
+
+/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */
+module.exports = __webpack_amd_options__;
+
+/* WEBPACK VAR INJECTION */}.call(exports, {}))
+
+/***/ })
+/******/ ]);
+});
+
+this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = {
+  "Roboto-Italic.ttf": "AAEAAAASAQAABAAgR0RFRtRX1FkAAgp8AAACREdQT1NKcuCzAAIMwAAAUiRHU1VCw4aZEQACXuQAABfoT1MvMqCnsO0AAAGoAAAAYGNtYXBAbb9DAAAafAAABoBjdnQgJEEG5QAAI5QAAABMZnBnbWf0XKsAACD8AAABvGdhc3AACAATAAIKcAAAAAxnbHlmoLsktAAALagAAdn2aGRteCEe/AUAABWQAAAE7GhlYWT4gasAAAABLAAAADZoaGVhDKYSegAAAWQAAAAkaG10eHJO1ygAAAIIAAATiGxvY2EXM5zBAAAj4AAACcZtYXhwBxICWwAAAYgAAAAgbmFtZTlLZFAAAgegAAACrnBvc3T/YQBkAAIKUAAAACBwcmVwdKCP7AAAIrgAAADbAAEAAAACAAAcadIiXw889QAbCAAAAAAAxPARLgAAAADQ206M+jj91QlMCHMAAgAJAAIAAAAAAAAAAQAAB2z+DAAACRb6OP52CUwIAAGzAAAAAAAAAAAAAAAABOIAAQAABOIAkAAWAFYABQABAAAAAAAOAAACAAFzAAYAAQADBAsBkAAFAAAFmgUzAAABHwWaBTMAAAPRAGYCAAAAAgAAAAAAAAAAAOAACv9QACF/AAAAIQAAAABHT09HAAEAAP/9BgD+AABmB5oCACAAAZ8AAAAABDoFsAAgACAAAgOWAGQACgAAAAoAAAH2AAAB9gAAAgkAQwKFAMgE0QBSBGYASgW5ALsE3QA6AWQAqgKxAG0Cvf+PA2IAawRwAEwBkP+PAi4AGQIVADUDPf+PBGYAaARmAPkEZgAXBGYANARmAAUEZgByBGYAcARmAJ0EZgBBBGYAlAHrACsBrv+bA/wAQQRMAHAEGAA6A7QApQcCAEQFGv+vBN8AOwUXAHQFIQA7BHMAOwRUADsFUwB5BZIAOwImAEkEUgAKBOcAOwQ3ADsG0AA7BZIAOwVgAHcE7wA7BWAAbwTRADoEpQAnBKsAqAUSAGcE+gCkBuwAwwTn/9QEswCoBK//6wIZ//8DOQC/Ahn/egNIAE8Div+BAnAAzwRDADMEZQAfBBoARgRqAEsEJgBFArwAdARlAAQEUAAfAewALwHk/xQD+QAgAewALwbXAB4EUgAfBHcARQRl/9cEcwBJAqoAHwQKAC4CkwBDBFEAWwPMAG4F3wCAA+P/xAO2/6UD4//tAqoAOAHuACECqv+MBVEAaQHu//EESABSBIz/8wWSABIEvQBTAeb/9wTM/90DSADbBiMAYgOCAMMDrgBZBFYAgQYkAGEDmADjAvAA6AQvACUC4gBcAuIAbgJ5ANUEb//lA9UAewIQAKUB9v/IAuIA3wORAMADrQAPBbkAuQYPALQGEwCeA7b/0wdL/4QELQAoBWAAIASgADgEpwAeBpcAEwSWAFwEeABEBG8AOQSD/+AFeQA1AfUALgRbAC0EOAAiAiIAIwVqADUEbwAkB3AAVAcWAEcB9wAzBWcAUQKu/0kFXgBnBHkAQgVvAGcE1wBaAf7/CQQhAD4DsQEXA3wBJgOZAOMDWgEHAewBDgKiAQECI/+vA7MA3QLvAMICUv/pAAr9agAK/esACv0LAAr99QAK/NsB6vy7AgcBIQP2APMCEQClBFsAQwWD/7EFUQBpBSD/xAR4AAwFkwBEBHj/2gWZAFQFaACGBTMACgRsAEgEo//wA+0AhARvAEMEOQApBA8AggRvACQEdQBzAo0AhQRW/7cD2AA/BKkAYARv/9wENgBOBG8ASgQWAIcERQBnBYIAQQV5AE8GbgBmBIcAUQQrAGcGIgBmBdsAoQVFAHgIWf/MCGwAQwZaALQFkgBCBO4ANAXg/4sHFf+sBKUAJQWSAEMFiP/KBOoAkwYHAFsFtgBBBVoAzgdXAEIHjgBCBe0AiQbAAEUE6AA2BUUAdAb6AEkE+//oBFQARgR5ADADSwAtBLn/jQX7/6UD+wAhBIUALwQ7AC8Ehv/IBcsAMASEAC8EhQAvA8QAYAWqAEwEowAvBEIAewZQAC8GdQAkBNsAVgYQADAEQQAwBDYANAZfADAETP+/BFAAHwQ2AE4Gn//DBrkALwRwAB8EhQAvBtwAbwYGAE8EPwAuBv4ASQXUACwEt/+6BC//ogbfAFoF5wBOBqcAJgW+ACkIyQBIB58ALgQN/84Dx//KBVEAaQRyAEIE7QCtA+4AhAVRAGoEbwBEBtUAdAX/AFIG3ABvBgYATwUUAGYEMABNBOEAQAAK/OgACv0LAAr+FwAK/jsACvo4AAr6TwQ/AC4E/gA6BHD/1wRLADUDfwAkBMAAQwPwACQE7AA2BGYALQZkALsFYwB0B50AOgWSACQH/ABCBskAJAXKAHEEuABfBv8ArAU9AFcFTwDEBFIAmAVQAOwGCgCKBKMABwTsADUEQwAtBZAAQwRvACQFZwBRBI4APASO//wEnf/4Azr/6QTaADEGawAyBrkATAYvAK0FDQBoBDIArwPyAKAHj//fBk3/2gfIADsGeAAjBNoAagQHAEwFiwCaBQMAfQVFAGoDEgDyA/8AAAf0AAAD/wAAB/QAAAKuAAACBAAAAVwAAARmAAACKQAAAZ8AAADVAAAACgAAAi0AGQItABkFIgCnBhkAmQOU/18BlwCuAZcAiQGV/5gBlwDUAsgAtgLPAJUCtv+UBFEAdwR2//YCpwCgA7EAOQU7ADkA+QAaB3kAlwJeAF8CXgACA5H/7wLiAGEDUAB+BIz/8wYuAAoGaAA5CD8AOgc0ACIGBgAfBGYAUQW3AEMEDABJBFwACgUp//IFMP/lBcQAzAO7AEsIBQA1BOUA6gT6AIIGAQC1BqwAkgalAI8GQwC+BHYATQVtACQElf+sBHkAqwSqAEEIBQBNAgb/GgRpADEETABwA/z/1AQZABkD8wBBAkQAeAKFAHAB/v/jBNcAdARWAFgEcgB0BqoAdAaqAHQE0gB0BnIAKQAKAAAH/v+rCDUAXAQKAGIEhQBBAff/DwGP/70DkgETA4wBEgONARED4ADNA/kAzgPfACID2wDSA5IBEQH4APwEbP+lBDkAHQRkAEcEZwAdA9IAHQO4AB0EkgBMBMcAHQHjACoDvP/2BD0AHQOiAB0F3gAdBMcAHQShAEoERQAdBKEARQQzAB0ECgARBBAAbQRkAEUETwB6BfAAlQQ9/7YEFQB0BA3/3ALiAB0C4gBrAuL/6QLi//sC4v/wAuIAFgLiAB4C4gAvAuIACwLiADYDhACTAqoBCwQk/5oEqABLBS0AQwUHAEQD/gAlBR8ARAP6ACUECgASBB0ABgQlADQDnQAdBE//sAShAEoET/+wA3j/0wSzAB0D2//VBUgAUQT6AH4E1gAMBVIAbARkAEcHE//EByEAHQVUAG0EsgAdBEIAHwUH/4kF5/+vBCgAEQTQAB8ENwAeBKb/xAQJAFgFCgAdBFIAWgYqAB0GgwAdBQAAUAXNAB8ENwAfBGMAIAZOAB0Ebv/fA/z/+gYh/68EYQAeBOwAHgUZAGkFoABQBEcAdASO/7YGOgBsBFIAWgRSAB0FoQAvBK8AQQQoABEEoQBKBB3//wPPAB4H7gAdBJH/3QRlAB8EHABDBHoARwRzACQDaACpBHT/1wSDAEYEJgBFBGUANQVhAIEFjACEBXIARAW9AIUFwACFA8IAuwRpADkDnQAdBEH/gQS0/9MC4gCQAuIAYQLiAIkC4gCRAuIAogLiAH4C4gCpBFP/1QQYACsGewBJBJ8APwTkAGQCAP8JAf//CQH2AC4B9v96AfYALgH2//EEOQAdAfYAAAIuABkFPwAvBT8ALwRuAD0EqwCoApP/9AUa/68FGv+vBRr/rwUa/68FGv+vBRr/rwUa/68FFwB0BHMAOwRzADsEcwA7BHMAOwImAEkCJgBJAiYASQImAEkFkgA7BWAAdwVgAHcFYAB3BWAAdwVgAHcFEgBnBRIAZwUSAGcFEgBnBLMAqARDADMEQwAzBEMAMwRDADMEQwAzBEMAMwRDADMEGgBGBCYARQQmAEUEJgBFBCYARQH1AC4B9QAuAfUALgH1AC4EUgAfBHcARQR3AEUEdwBFBHcARQR3AEUEUQBbBFEAWwRRAFsEUQBbA7b/pQO2/6UFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFFwB0BBoARgUXAHQEGgBGBRcAdAQaAEYFFwB0BBoARgUhADsFAABLBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQVTAHkEZQAEBVMAeQRlAAQFUwB5BGUABAVTAHkEZQAEBZIAOwRQAB8CJgBJAfUAEQImAEkB9QAaAiYASQH1AC4CJv+OAez/cAImAEkGeABJA9AALwRSAAoB/v8JBOcAOwP5ACAENwA7AewALwQ3ADsB7P+jBDcAOwKCAC8ENwA7AsgALwWSADsEUgAfBZIAOwRSAB8FkgA7BFIAHwRSAB8FYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUE0QA6AqoAHwTRADoCqv+fBNEAOgKqAB8EpQAnBAoALgSlACcECgAuBKUAJwQKAC4EpQAnBAoALgSlACcECgAuBKsAqAKTAEMEqwCoApMAQwSrAKgCuwBDBRIAZwRRAFsFEgBnBFEAWwUSAGcEUQBbBRIAZwRRAFsFEgBnBFEAWwUSAGcEUQBbBuwAwwXfAIAEswCoA7b/pQSzAKgEr//rA+P/7QSv/+sD4//tBK//6wPj/+0HS/+EBpcAEwVgACAEbwA5BGf/sARn/7AEEABtBGz/pQRs/6UEbP+lBGz/pQRs/6UEbP+lBGz/pQRkAEcD0gAdA9IAHQPSAB0D0gAdAeMAKgHjACoB4wAqAeMAKgTHAB0EoQBKBKEASgShAEoEoQBKBKEASgRkAEUEZABFBGQARQRkAEUEFQB0BGz/pQRs/6UEbP+lBGQARwRkAEcEZABHBGQARwRnAB0D0gAdA9IAHQPSAB0D0gAdA9IAHQSSAEwEkgBMBJIATASSAEwExwAdAeMADwHjABgB4wAqAeP/egHjACoDvP/2BD0AHQOiAB0DogAdA6IAHQOiAB0ExwAdBMcAHQTHAB0EoQBKBKEASgShAEoEMwAdBDMAHQQzAB0ECgARBAoAEQQKABEECgARBBAAbQQQAG0EEABtBGQARQRkAEUEZABFBGQARQRkAEUEZABFBfAAlQQVAHQEFQB0BA3/3AQN/9wEDf/cBRr/rwTXAGMF9gBxAooAdwV0AGoFF//uBUcAHgKNACAFGv+vBN8AOwRzADsEr//rBZIAOwImAEkE5wA7BtAAOwWSADsFYAB3BO8AOwSrAKgEswCoBOf/1AImAEkEswCoBGwASAQ5ACkEbwAkAo0AhQRFAGcEWwAtBHcARQRv/+UDzABuA+P/xAKNAGcERQBnBHcARQRFAGcGbgBmBHMAOwRbAEMEpQAnAiYASQImAEkEUgAKBQcARATnADsE6gCTBRr/rwTfADsEWwBDBHMAOwWSAEMG0AA7BZIAOwVgAHcFkwBEBO8AOwUXAHQEqwCoBOf/1ARDADMEJgBFBIUALwR3AEUEZf/XBBoARgO2/6UD4//EBCYARQNLAC0ECgAuAewALwH1AC4B5P8UBDsALwO2/6UG7ADDBd8AgAbsAMMF3wCABuwAwwXfAIAEswCoA7b/pQFkAKoChQDIBBIAQwH+/wkBlwCJBtAAOwbXAB4FGv+vBEMAMwRzADsFkgBDBCYARQSFAC8FaACGBXkATwTtAK0D7gCECC0ARQkWAHcEpQAlA/sAIQUXAHQEGgBGBLMAqAPtAIQCJgBJBxX/rAX7/6UCJgBJBRr/rwRDADMFGv+vBEMAMwdL/4QGlwATBHMAOwQmAEUFZwBRBCEAPgQhAD4HFf+sBfv/pQSlACUD+wAhBZIAQwSFAC8FkgBDBIUALwVgAHcEdwBFBVEAaQRyAEIFUQBpBHIAQgVFAHQENgA0BOoAkwO2/6UE6gCTA7b/pQTqAJMDtv+lBVoAzgRCAHsGwABFBhAAMATn/9QD4//EBGoASwWI/8oEhv/IBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQImAEkB9QAuAiYADgHs//EFYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUFYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUFYAB3BHcARQVeAGcEeQBCBV4AZwR5AEIFXgBnBHkAQgVeAGcEeQBCBV4AZwR5AEIFEgBnBFEAWwUSAGcEUQBbBW8AZwTXAFoFbwBnBNcAWgVvAGcE1wBaBW8AZwTXAFoFbwBnBNcAWgSzAKgDtv+lBLMAqAO2/6UEswCoA7b/pQSIAEsEiAAABQcARAQ7AC8FkgA7BIQALwSrAKgDxABgBOf/1APj/8QFWgDOBEIAewVaAM4EQgB7BFsAQwNLAC0HFf+sBfv/pQYKAIoEowAHBFAAHwToACsE6AArBFsAEANL/+YFGwBYBBIAOQWSAEMEhQAvBZIAOwSEAC8G0AA7BcsAMAWI/8oEhv/IBLMAqAPtAF0E5//UA+P/xAQ5ACkEVP/XBhkAmQRmABcEZgA0BGYABQRmAHIEegCUBI4AfAVTAHkEZQAEBZIAOwRSAB8FGv+vBEMAMwRzADsEJgBFAib/3wH1/40FYAB3BHcARQTRADoCqgAfBRIAZwRRAFsEj/+yBN8AOwRlAB8FIQA7BGoASwUhADsEagBLBZIAOwRQAB8E5wA7A/kAIATnADsD+QAgBDcAOwHs//IG0AA7BtcAHgWSADsEUgAfBO8AOwRl/9cE0QA6Aqr/7gSlACcECgAuBKsAqAKTAEME+gCkA8wAbgT6AKQDzABuBuwAwwXfAIAEr//rA+P/7QWm/wwEbP+lBA7/4QUD//0CHwABBKsAHQRR/5sE4AAWBGz/pQQ5AB0D0gAdBA3/3ATHAB0B4wAqBD0AHQXeAB0EoQBKBEUAHQQQAG0EFQB0BD3/tgHjACoEFQB0A9IAHQOdAB0ECgARAeMAKgHjACoDvP/2BD0AHQQJAFgEbP+lBDkAHQOdAB0D0gAdBNAAHwXeAB0ExwAdBKEASgSzAB0ERQAdBGQARwQQAG0EPf+2BCgAEQTHAB0EZABIBBUAdAWhAC8E0AAfBAkAWAVIAFEFGv+vBEMAMwRzADsEJgBFAAAAAQAABOQJCgQAAAICAgMFBQYFAgMDBAUCAgIEBQUFBQUFBQUFBQICBAUFBAgGBQYGBQUGBgIFBgUIBgYGBgUFBQYGCAYFBQIEAgQEAwUFBQUFAwUFAgIEAggFBQUFAwUDBQQHBAQEAwIDBgIFBQYFAgUEBwQEBQcEAwUDAwMFBAICAwQEBgcHBAgFBgUFBwUFBQUGAgUFAgYFCAgCBgMGBQYFAgUEBAQEAgMCBAMDAAAAAAACAgQCBQYGBgUGBQYGBgUFBAUFBQUFAwUEBQUFBQUFBgYHBQUHBwYJCQcGBgcIBQYGBgcGBggJBwgGBggGBQUEBQcEBQUFBwUFBAYFBQcHBQcFBQcFBQUHCAUFCAcFCAcFBQgHBwYKCQUEBgUGBAYFCAcIBwYFBQAAAAAAAAUGBQUEBQQGBQcGCQYJCAcFCAYGBQYHBQYFBgUGBQUFBAUHCAcGBQQJBwkHBQUGBgYDBQkFCQMCAgUCAgEAAgIGBwQCAgICAwMDBQUDBAYBCAMDBAMEBQcHCQgHBQYFBQYGBgQJBgYHCAcHBQYFBQUJAgUFBAUEAwMCBQUFCAgFBwAJCQUFAgIEBAQEBAQEBAIFBQUFBAQFBQIEBQQHBQUFBQUFBQUFBwUFBQMDAwMDAwMDAwMEAwUFBgYEBgQFBQUEBQUFBAUEBgYFBgUICAYFBQYHBQUFBQUGBQcHBgcFBQcFBAcFBgYGBQUHBQUGBQUFBQQJBQUFBQUEBQUFBQYGBgYGBAUEBQUDAwMDAwMDBQUHBQYCAgICAgIFAgIGBgUFAwYGBgYGBgYGBQUFBQICAgIGBgYGBgYGBgYGBQUFBQUFBQUFBQUFBQICAgIFBQUFBQUFBQUFBAQGBQYFBgUGBQYFBgUGBQYGBQUFBQUFBQUFBQYFBgUGBQYFBgUCAgICAgICAgIHBAUCBgQFAgUCBQMFAwYFBgUGBQUGBQYFBgUFAwUDBQMFBQUFBQUFBQUFBQMFAwUDBgUGBQYFBgUGBQYFCAcFBAUFBAUEBQQIBwYFBQUFBQUF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c3dzd3N/c4dzkXObc7Jz0XPvdA50LnQ6dEZ0d3S4dR11QnVOdV51cnZGdmJ2f3aSdqZ273d6eBx4qXi1eXh503pZewR7ZnvpfEd8uH1dfcl+W368fyR/Pn9Yf3J/jH//gCeAYYB9gLKBO4GBgfiCOYJHglWCjoKbgsKC24Lng0qDo4Q3hMKFQ4YXhheHlIfxiCKIgIiviMWJKIl6ibqKLIqFisWLCItIi2KLqIwejHqMx40TjU+Nto4EjiKOWI6cjsSPFo9Uj7OQA5BhkLWRI5FPkYuRvpISkleSi5LIkxuTRpOVlAaUSJSolQiVNZW+liCWN5aBlz6XuZgtmHyYwpkEmUyZzJo4mq+a2psQm4ibuZwHnDqcepzunVCdu54enoyfA597n9KgDaBpoMGhN6G8ofqiS6KUotijE6Nbo5uj5aRApEyknaURpZyl+aZIptCnM6eYp/iooqiuqQGpTamiqeuqZarSqzerq6xHrM6tb63irk+uqK8Tr5yvpLAQsH6w6bFysdWyQLKSsvSzWrOFs9q0BLRdtKG0tbTJtNu077UBtRi1LLWOtba2RLa0tw23FbcdtyW3MLc4t0S3sLewt7i4KLiYuPq5QLmoub+51rntugS6HLovuju6R7peunC6h7qaurG6w7rauu27BLsbuy27RLtbu267hbuXu667wbvTu+q7/LwSvCO8NrxJvFW8Ybx4vIq8oLyzvMm82rzxvQm9Gr0xvUO9Wb1qvX29lL2mvby9z73hvfO+Cr4gvje+Sb62v2S/dr+Iv5q/q7+9v8+/4b/ywATAEMAiwDPARcBXwGnAe8DvwX3Bj8GgwbLBw8HVwefB+cILwhfCKcI7wk/CYcJzwoXCl8KpwrvCxsLRwuPC78L7ww3DH8MrwzfDScNbw2fDc8OIw5TDoMOsw77D0MPcw+jD+sQLxBfEKcQ6xEzEXsRxxITElsSoxLTEwMTSxOPE9cUHxRnFKsU2xULFTsVaxWzFfcWJxZXFocWtxb/Fy8Xdxe7GAMYRxiPGNcZIxlvGbsaBxuLHUcdjx3XHh8eYx6vHvcfPx+HH88gFyBbILchEyFvIcsiVyLjIyMjfyPHJB8kYySvJPslKyVbJbcl/yZDJosm4ycnJ28nuygDKF8opyjvKTcpgynfKicqayq3Kv8rQyuLLSctby2zLfsuQy6HLssvDy9XMT8xg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AdMAAAEHAKEBFwAeAAkAsAcvsBPcMDEA////3AAABA4GIAImAdMAAAEGAJ5VHwAJALAHL7AO3DAxAP///68AAASLBj8CJgAlAAAABgCtBAD//wBjAAAFFQY/ACYAKWQAAAcArf9CAAD//wBxAAAF2wZBACYALGQAAAcArf9QAAL//wB3AAACZQZAACYALWQAAAcArf9WAAH//wBq/+cFIQY/ACYAMxQAAAcArf9JAAD////uAAAFlgY/ACYAPWQAAAcArf7NAAD//wAeAAAE7gY/ACYAuRQAAAcArf9MAAD//wAg//QDGwZ0AiYAwgAAAQcArv8t/+wAHACwAEVYsA4vG7EOGD5ZsBvcsBHQsBsQsCTQMDH///+vAAAEiwWwAgYAJQAA//8AOwAABKAFsAIGACYAAP//ADsAAASxBbACBgApAAD////rAAAEzgWwAgYAPgAA//8AOwAABXcFsAIGACwAAP//AEkAAAIBBbACBgAtAAD//wA7AAAFUAWwAgYALwAA//8AOwAABrcFsAIGADEAAP//ADsAAAV3BbACBgAyAAD//wB3/+cFDQXIAgYAMwAA//8AOwAABPMFsAIGADQAAP//AKgAAAUJBbACBgA4AAD//wCoAAAFMgWwAgYAPQAA////1AAABSsFsAIGADwAAP//AEkAAAMKBwkCJgAtAAABBwBq/7gBQgAMALACL7AZ3LAE0DAx//8AqAAABTIG/QImAD0AAAEHAGoA/QE2AAwAsAEvsB7csAnQMDH//wBI/+cEMgY6AiYAugAAAQcArQFo//sACQCwFS+wKNwwMQD//wAp/+cD5QY5AiYAvgAAAQcArQEh//oACQCwGi+wK9wwMQD//wAk/mED8wY6AiYAwAAAAQcArQE7//sACQCwAy+wFdwwMQD//wCF//QCZQYlAiYAwgAAAQYArSTmAAkAsAAvsBHcMDEA//8AZ//lBAoGdAImAMoAAAEGAK4c7AASALALL7Ar3LAW0LArELAa0DAx//8ALQAABFcEOgIGAI0AAP//AEX/6AQfBFICBgBTAAD////l/mAEJQQ6AgYAdgAA//8AbgAAA+0EOgIGAFoAAP///8QAAAP0BDoCBgBcAAD//wBn//QC3gWzAiYAwgAAAQYAaozsAAwAsAAvsCTcsA/QMDH//wBn/+UD+gWzAiYAygAAAQYAanvs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3LAi0DAx//8Ak//mBUAG+gImAN0AAAEHAHAA7AFKAAkAsAEvsBHcMDEA////pf5FA+wFuAImAF0AAAEGAHAvCAAJALABL7AQ3DAxAP//AJP/5gVABwkCJgDdAAABBwBqARsBQgAMALABL7Am3LAR0DAx////pf5FA+wFxwImAF0AAAEGAGpeAAAMALABL7Al3LAQ0DAx//8Ak//mBUAHQQImAN0AAAEHAKUBXQFCABYAsABFWLABLxuxARw+WbAT3LAX0DAx////pf5FBF4F/wImAF0AAAEHAKUAoAAAABYAsABFWLABLxuxARg+WbAS3LAW0DAx//8AzgAABUQHCQImAOAAAAEHAGoBRAFCABYAsABFWLASLxuxEhw+WbAo3LAc0DAx//8AewAABAAFswImAPgAAAEGAGpp7AAMALAIL7Ao3LAT0DAx//8ARQAABpYHCQAmAOUPAAAnAC0ElQAAAQcAagIIAUIAFgCwAEVYsAovG7EKHD5ZsCHcsC3QMDH//wAwAAAFqQWzACYA/QAAACcAjAQKAAABBwBqAWr/7AAWALAARViwCi8bsQoYPlmwIdywLdAwMf///9T+RQUrBbACJgA8AAAABwGvA5UAAP///8T+RQP0BDoCJgBcAAAABwGvAqoAAP//AEv/6AR1BgACBgBIAAD////K/kUFZQWwAiYA3AAAAAcBrwQkAAD////I/kUESgQ6AiYA8QAAAAcBrwM7AAD///+v/p8EiwWwAiYAJQAAAAcArATcAAD//wAz/p8DzwRRAiYARQAAAAcArAQpAAD///+vAAAEiwe5AiYAJQAAAQcAqgUBAUYACQCwBC+wGNwwMQD//wAz/+gDzwaDAiYARQAAAQcAqgRzABAACQCwGC+wOdwwMQD///+vAAAF7QfDAiYAJQAAAQcBtwDyAS4AFgCwAEVYsAUvG7EFHD5ZsA7csBTQMDH//wAz/+gFXwaOAiYARQAAAQYBt2T5ABYAsABFWLAYLxuxGBg+WbAv3LA10DAx////rwAABIsHvwImACUAAAEHAbYA+AE9ABYAsABFWLAFLxuxBRw+WbAM3LAT0DAx//8AM//oA/0GiQImAEUAAAEGAbZqBwAWALAARViwGC8bsRgYPlmwL9ywNNAwMf///68AAAVsB+oCJgAlAAABBwG1APMBGwAWALAARViwBS8bsQUc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ALAARViwBC8bsQQcPlmwDNywENAwMf//ADP/6APPBesCJgBFAAABBwCrA/L//QAWALAARViwGC8bsRgYPlmwLdywMdAwMf//ADsAAASxBywCJgApAAABBwCrBE4BPgAWALAARViwBi8bsQYcPlmwDdywEdAwMf//AEX/6gPgBesCJgBJAAABBwCrA9f//QAWALAARViwCC8bsQgYPlmwIdywJdAwMf///98AAAKKBywCJgAtAAABBwCrAwQBPgAWALAARViwAi8bsQIcPlmwBdywCdAwMf///40AAAI4BekCJgCMAAABBwCrArL/+wAWALAARViwAi8bsQIYPlmwBdywCdAwMf//AHf/5wUNByICJgAzAAABBwCrBKEBNAAWALAARViwCi8bsQocPlmwJNywKNAwMf//AEX/6AQfBesCJgBTAAABBwCrA+D//QAWALAARViwAC8bsQAYPlmwJNywKNAwMf//ADoAAATCByACJgA2AAABBwCrBEMBMgAWALAARViwBC8bsQQcPlmwGdywHdAwMf//AB8AAALUBesCJgBWAAABBwCrA0n//QAWALAARViwCi8bsQoYPlmwEtywDdAwMf//AGf/5wUgByACJgA5AAABBwCrBHsBMgAWALAARViwCi8bsQocPlmwFNywGNAwMf//AFv/6AQeBesCJgBZAAABBwCrA+T//QAWALAARViwBy8bsQcYPlmwFdywGdAwMf///7IAAAU8Bj8AJgDPZAAABwCt/pEAAP//ADv+qQSgBbACJgAmAAAABwCsBJgACv//AB/+lgP+BgACJgBGAAAABwCsBIb/9///ADv+qQTVBbACJgAoAAAABwCsBJcACv//AEv+nwR1BgACJgBIAAAABwCsBJkAAP//ADv+CQTVBbACJgAoAAAABwGiAR/+qv//AEv9/wR1BgACJgBIAAAABwGiASH+oP//ADv+qQV3BbACJgAsAAAABwCsBPoACv//AB/+qQPjBgACJgBMAAAABwCsBH8ACv//ADsAAAVQBy4CJgAvAAABBwB1AbABMAATALAARViwBS8bsQUcPlmwDtwwMQD//wAgAAAEIgc/AiYATwAAAQcAdQF9AUEACQCwBS+wD9wwMQD//wA7/vgFUAWwAiYALwAAAAcArATSAFn//wAg/uUEGgYAAiYATwAAAAcArARQAEb//wA7/qkDsQWwAiYAMAAAAAcArASdAAr////y/qkB7gYAAiYAUAAAAAcArAM3AAr//wA7/qkGtwWwAiYAMQAAAAcArAWnAAr//wAe/qkGagRSAiYAUQAAAAcArAWrAAr//wA7/qkFdwWwAiYAMgAAAAcArAT+AAr//wAf/qkD4wRSAiYAUgAAAAcArARmAAr//wA7AAAE8wdAAiYANAAAAQcAdQG0AUIAEwCwAEVYsAMvG7EDHD5ZsBbcMDEA////1/5gBDYF9QImAFQAAAEHAHUBkf/3ABMAsABFWLANLxuxDRg+WbAh3DAxAP//ADr+qQTCBbACJgA2AAAABwCsBJUACv///+7+qQLUBFQCJgBWAAAABwCsAzMACv//ACf+nwSjBccCJgA3AAAABwCsBKQAAP//AC7+lwO2BFACJgBXAAAABwCsBG3/+P//AKj+nwUJBbACJgA4AAAABwCsBJYAAP//AEP+nwKUBUACJgBYAAAABwCsA/oAAP//AKQAAAVhBy0CJgA6AAABBwCkAOEBRgATALAARViwAS8bsQEcPlmwCtwwMQD//wBuAAAD7QXiAiYAWgAAAQYApBv7ABMAsABFWLABLxuxARg+WbAK3DAxAP//AKT+qQVhBbACJgA6AAAABwCsBMoACv//AG7+qQPtBDoCJgBaAAAABwCsBDgACv//AMP+qQdBBbACJgA7AAAABwCsBc0ACv//AID+qQX+BDoCJgBbAAAABwCsBSwACv///+v+qQTOBbACJgA+AAAABwCsBJgACv///+3+qQPOBDoCJgBeAAAABwCsBEIACv///wz/5wVTBdYAJgAzRgAABwFa/hoAAP///6UAAAPjBRwCJgG6AAAABwCt/6v+3f///+EAAAQrBR8AJgG+PAAABwCt/sD+4P////0AAATWBRwAJgHBPAAABwCt/tz+3f//AAEAAAHmBR4AJgHCPAAABwCt/uD+3///AB3/6gRYBRwAJgHICgAABwCt/vz+3f///5sAAAShBRwAJgHSPAAABwCt/nr+3f//ABYAAAR0BRsAJgHzCgAABwCt/xT+3P///6UAAAPjBI0CBgG6AAD//wAdAAAD5wSNAgYBuwAA//8AHQAAA+8EjQIGAb4AAP///9wAAAQOBI0CBgHTAAD//wAdAAAEmgSNAgYBwQAA//8AKgAAAaoEjQIGAcIAAP//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DAAGiA7uDu4MRg6gCiIO7g7uD5oKigaSDGYMRgrYCqwNUg8QCl4L4gsQDBYGmA22DbYNtgwgCxAKUAxMDbAMTAsQBqYN5gtwD5oLcAasBrIGvAbCBsgMTAbOBtgNtgb+BxQHKgcwB0YHTAdSB4QHigeQDcANwAe+Du4H4AgCDVIIMA7uDu4LJg7uDu4IRg3ADcAIeAiCCIwIpg1ICLgNsAjSCOgLEAkyCUwJaAloCxAJYgloCWgJaAtwDCAK2AxMCxAN5g1IDqAOoA1ICtIK0grSCtIK0gmKCbAJugnECeIJ9AoGChgK/g+aD5oPmg+aDGYLcAtwC3ALcAtwC3ALcAr+DAAMAAwADAAO7g7uDu4O7g7uD5oPmg+aD5oPmgxGDEYMRgxGDxAL4gviC+IL4gviC+IL4gwWDBYMFgwWDbYMIAwgDCAMIAwgDEwMTAtwC+ILcAviC3AL4gr+Cv4K/gr+D5oMAAwWDAAMFgwADBYMAAwWDAAMFg7uDbYO7g7uDu4O7g7uDEYOoAoiCiIKIgoiDu4Ntg7uDbYO7g22DbYPmgwgD5oMIA+aDCAKUApQClAMZgxmDGYMRgxGDEYMRgxGDEYKrA8QDEwPEApeCl4KXgtwDAAO7g7uD5oPEAtwCoAMAApeDu4O7g6gDu4O7g+aCooMZg8QDVIO7g8QDbYMIAxMDCAMAA3mDu4O7gxGDqAOoAsmC3AKgA3mDAAO7g7uD5oKigr+DGYNUgviDBYMIAsQDEwNsAwWDUgMTAqsCqwKrA8QDEwK0grSCtIO7g22C3AL4gwADBYK2AxMCv4PEAxMDu4NUg2wDu4LcAviC3AL4gwADBYMFgwWDVINsA+aDCAMIAsQCyYMTAsmDEwLJgxMDVINsAtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gwADBYMAAwWDAAMFgwADBYMAAwWDAAMFgwADBYMAAwWDu4O7g+aDCAPmgwgD5oMIA+aDCAPmgwgD5oMIA+aDCAMIAxGDEYPEAxMDxAMTA8QDEwOoA7uDGYNUg2wDeYNSA1SDbANtg3ADeYOoA7uDu4PEA+aAAIAhwAGAAYAAAALAAsAAQATABMAAgAlACoAAwAsADUACQA4AD4AEwBFAEYAGgBJAEoAHABMAEwAHgBRAFQAHwBWAFYAIwBaAFoAJABcAF0AJQCKAIoAJwCcAJwAKACwALQAKQC2ALgALgC6ALoAMQC8AL0AMgC/AMAANADCAMQANgDGAMsAOQDRANEAPwDTAN0AQADfAN8ASwDhAOMATADlAOcATwDpAO0AUgDwAPAAVwD1APcAWAD6APsAWwD9AP8AXQEDAQQAYAEJAQkAYgEMAQwAYwEXARkAZAErAS0AZwEwATAAagEyATIAawFJAUkAbAFsAW0AbQFvAXEAbwG6AboAcgG9Ab0AcwHEAcUAdAHIAcgAdgHKAcsAdwHNAc0AeQIoAigAegIqAisAewJHAkgAfQJKAkoAfwJMAm0AgAJvAnIAogJ3AnwApgKBAokArAKLAosAtQKNAo0AtgKPAo8AtwKRApEAuAKTApwAuQKlAqcAwwKpAqkAxgKrAqsAxwKtAq0AyAKvAq8AyQKyArIAygK0ArQAywK2ArYAzAK4ArgAzQK6AroAzgK8ArwAzwK+AsoA0ALMAswA3QLOAs4A3gLQAtAA3wLbAtsA4ALdAt0A4QLfAt8A4gLhAuEA4wLjAuMA5ALlAuUA5QLnAucA5gLpAukA5wLrAusA6ALtAu0A6QLvAvIA6gL0AvQA7gL2AvYA7wNTA1gA8ANbA2oA9gNtA20BBgNxA3EBBwNzA3MBCAN3A3cBCQN6A3sBCgN9A4YBDAOIA4oBFgOMA5EBGQOTA5QBHwOWA5kBIQOfA6ABJQOiA6IBJwOkA6QBKAOmA6kBKQOsA7EBLQOzA7MBMwO3A7gBNAO9A70BNgO/A8gBNwPLA8wBQQPOA9EBQwPYA9kBRwPdA90BSQPfA+UBSgPqA+sBUQPvBBcBUwQZBBkBfAQbBCgBfQQwBDABiwQzBDMBjAQ1BDUBjQRBBEYBjgRJBEkBlARLBEsBlQRNBE0BlgRPBFABlwRVBFgBmQRbBFsBnQRdBF4BngRgBGABoARkBGQBoQRmBGYBogRqBGoBowSqBKoBpAABABP/IAACAFb/5gG6/8AAAQG6AA4AAwANABQAQQASAGEAEwABAPX/9QABAMMADQACALf/wgDDABAAAQDD/+IAAQDG//IAAQDDAA4AAgDJ/+0A9f/AAAkAvv/mAMH/6wDC/+kAxP/wAMX/5wDJ/+MAy//OAMz/1ADN/9sABQDB/+wAwwAPAMX/6gDJ/8QAy//nAAUASv/pAMH/7gDD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Aor/6wKM/+sCjv/rApD/6wKS/+sClP/rApb/6wKY/+sCmv/rApz/6wKe/+sCoP/rAqL/6wKk/+sCsv74Asb/6wLI/+sCyv/rAtsAFALdABQC3wAUAuL/6gLk/+oC5v/qAuj/6gLq/+oC7P/qAvD/6ANT/1YDW/9WA2v/6wNv/+oDcf/rA3P/6AN2/+oDd//rA3j/6gN//vgDg/9WA44AFAOQ/94Dkf/rA5P/6wOV/+sDlv/oA5j/6wOf/+gDp//oA6//VgOw/94Ds//rA7j/6AO5/+sDvv/rA8D/6APF/1YDxv/eA8f/VgPI/94DzP/rA87/6wPP/+sD2f/rA9v/6wPd/+sD4f/oA+P/6APl/+gD7P/rA+//VgPw/94D8f9WA/L/3gPz/1YD9P/eA/X/VgP2/94D9/9WA/j/3gP5/1YD+v/eA/v/VgP8/94D/f9WA/7/3gP//1YEAP/eBAH/VgQC/94EA/9WBAT/3gQF/1YEBv/eBAj/6wQK/+sEDP/rBA7/6wQQ/+sEEv/rBBT/6wQW/+sEHP/rBB7/6wQg/+sEIv/rBCT/6wQm/+sEKP/rBCr/6wQs/+sELv/rBDD/6wQy/+sENP/qBDb/6gQ4/+oEOv/qBDz/6gQ+/+oEQP/qBEL/6ARE/+gERv/oBE0AFAAfADj/1QA6/+QAO//sAD3/3QDR/9UA1f/VARj/5AEy/9UBOv/VAmb/3QLb/9UC3f/VAt//1QLt/+wC7//dAvH/3QNY/90DZ//dA2r/3QOO/9UDoP/sA6L/7AOk/+wDpv/dA7f/5AO//90EQf/dBEP/3QRF/90ETf/VBGr/3QAaADj/sAA6/+0APf/QANH/sADV/7ABGP/tATL/sAE6/7ACZv/QAtv/sALd/7AC3/+wAu//0ALx/9ADWP/QA2f/0ANq/9ADjv+wA6b/0AO3/+0Dv//QBEH/0ARD/9AERf/QBE3/sARq/9AAEAAu/+4AOf/uAmL/7gJj/+4CZP/uAmX/7gKy/+4C4f/uAuP/7gLl/+4C5//uAun/7gLr/+4Df//uBDP/7gQ1/+4ARwAGABAACwAQAEf/6ABI/+gASf/oAEv/6ABV/+gAk//oAJj/6AC6/+gAx//oAMj/6AD2/+gBAv/oAR3/6AEh/+gBOf/oAUv/6AFM/+gBVv/oAWwAEAFtABABbwAQAXAAEAFxABACbv/o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/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAMD/8wDH/9wAyP/cAMr/3QDr//MA7//zAPD/8wDy//MA8//zAPT/8wD2/9wA9//zAPn/8wD6//MA/f/zAP//8wEC/9wBBP/zARf/1gEZ/+EBHf/cASH/3AE1//MBOf/cAUT/8wFJ//MBS//cAUz/3AFW/9wCbv/cAm//3AJw/9wCcf/cAnL/3AJ3//MCeP/WAnn/1gJ6/9YCe//WAnz/1gJ9/90Cfv/dAn//3QKA/90Cgf/hAoL/4QKK/9wCjP/cAo7/3AKQ/9wCkv/cApT/3AKW/9wCmP/cApr/3AKc/9wCnv/cAqD/3AKi/9wCpP/cAr//8wLB//MCw//zAsT/8wLG/9YCyP/WAsr/1gLi/90C5P/dAub/3QLo/90C6v/dAuz/3QLw/+EDa//cA23/8wNv/90Dcf/WA3P/4QN2/90Dd//WA3j/3QOR/9wDkv/zA5P/1gOU//MDlf/cA5b/4QOY/9wDmf/zA57/8wOf/+EDp//hA67/8wOz/9wDtP/zA7j/4QO5/9wDvv/cA8D/4QPM/9wDzv/cA8//3APV//MD1//zA9n/1gPb/9wD3f/WA+H/4QPj/+ED5f/hA+n/8wPs/9wECP/cBAr/3AQM/9wEDv/cBBD/3AQS/9wEFP/cBBb/3AQc/9YEHv/WBCD/1gQi/9YEJP/WBCb/1gQo/9YEKv/cBCz/3AQu/9wEMP/WBDL/3AQ0/90ENv/dBDj/3QQ6/90EPP/dBD7/3QRA/90EQv/hBET/4QRG/+EESv/zBEz/8wRW//MEY//zBGX/8wRn//MAcQAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADH//AAyP/wAMr/7wD2//ABAv/wARn/3AEd//ABIf/wATn/8AFL//ABTP/wAVb/8AFs/9oBbf/aAW//2gFw/9oBcf/aAm7/8AJv//ACcP/wAnH/8AJy//ACff/vAn7/7wJ//+8CgP/vAoH/3AKC/9wCiv/wAoz/8AKO//ACkP/wApL/8AKU//AClv/wApj/8AKa//ACnP/wAp7/8AKg//ACov/wAqT/8ALi/+8C5P/vAub/7wLo/+8C6v/vAuz/7wLw/9wDa//wA2//7wNz/9wDdv/v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//UA1f/xANn/9ADc//UA3f/zARj/9AEy//EBOv/xAVH/9QJm//AC2//xAt3/8QLf//EC7//wAvH/8ANY//ADZ//wA2j/9ANq//ADgv/zA47/8QOP//QDpv/wA7f/9AO///ADwv/0A9D/9APg//MD4v/zA+T/8wPq//QD7f/1BEH/8ARD//AERf/wBE3/8QRP//QEV//0BGj/9QRq//AAWQAlAA8AOP/mADr/5gA8AA4APf/mALEADwCzAA8A0f/mANMADgDV/+YA2QAOANwADgDdAAsA4P/lAPEADwD4/+gBAwAPAQwADwEY/+YBMv/mATr/5gFRAA4CTAAPAk0ADwJOAA8CTwAPAlAADwJRAA8CUgAPAmb/5gKDAA8ChQAPAocADwLb/+YC3f/mAt//5gLv/+YC8f/mA1MADwNY/+YDWwAPA2f/5gNoAA4Dav/mA4IACwODAA8Djv/mA48ADgOm/+YDrwAPA7f/5gO//+YDwgAOA8UADwPHAA8D0AAOA+AACwPiAAsD5AALA+b/5QPn/+gD6gAOA+0ADgPuAA8D7wAPA/EADwPzAA8D9QAPA/cADwP5AA8D+wAPA/0ADwP/AA8EAQAPBAMADwQFAA8EQf/mBEP/5gRF/+YETf/mBE8ADgRR/+UEUv/oBFP/5QRU/+gEVwAOBGgADgRpAA8Eav/mAC4AOP/jADz/5QA9/+QA0f/jANP/5QDV/+MA2f/lANz/5QDd/+kA8f/qAQP/6gEy/+MBOv/jAVH/5QJm/+QC2//jAt3/4wLf/+MC7//kAvH/5ANY/+QDZ//kA2j/5QNq/+QDgv/pA47/4wOP/+UDpv/kA7//5APC/+UD0P/lA+D/6QPi/+kD5P/pA+r/5QPt/+UD7v/qBEH/5ARD/+QERf/kBE3/4wRP/+UEV//lBGj/5QRp/+oEav/kACEAOP/iADz/5ADR/+IA0//kANX/4gDZ/+QA3P/kAN3/6QDx/+sBA//rATL/4gE6/+IBUf/kAtv/4gLd/+IC3//iA2j/5AOC/+kDjv/iA4//5APC/+QD0P/kA+D/6QPi/+kD5P/pA+r/5APt/+QD7v/rBE3/4gRP/+QEV//kBGj/5ARp/+sAFwA4/+sAPf/zANH/6wDV/+sBMv/rATr/6wJm//MC2//rAt3/6wLf/+sC7//zAvH/8wNY//MDZ//zA2r/8wOO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ABgEJwQnAAMEKAQoABgEMAQwABgEMwQzAAwENQQ1AAwEQQRBAA8EQgRCABkEQwRDAA8ERAREABkERQRFAA8ERgRGABkESQRJAAkESwRLAAIETQRNAAYETwRPAA4EUARQABsEVQRVAAcEVgRWAAgEVwRXAA4EWARYABsEWwRbABcEXQRdAB8EXgReAAcEYARgAAkEZARkAAIEZgRmAAIEagRqAA8EqgSqAAMAAgFtAAYABgAHAAsACwAHABAAEAATABEAEQAXABIAEgATACUAJQARACcAJwAFACsAKwAFAC4ALgAcADMAMwAFADUANQAFADcANwAZADgAOAAKADkAOQAGADoAOgANADsAOwAJADwAPAASAD0APQAOAD4APgAUAEUARQAaAEcASQAVAEsASwAVAFEAUgAYAFMAUwAIAFQAVAAYAFUAVQAVAFcAVwAbAFkAWQALAFoAWgACAFwAXAAWAF0AXQACAF4AXgAMAIMAgwAFAJIAkgAFAJMAkwAVAJcAlwAFAJgAmAAVAJoAmgALALEAsQARALIAsgAFALMAswARALoAugAVALwAvAACAMAAwAAYAMcAyAAVAMoAygALANEA0QAKANIA0gAFANMA0wABANUA1QAKANkA2QASANwA3AABAN0A3QAQAOAA4AAPAOsA6wAYAO0A7QAWAO8A8AAYAPEA8QAEAPIA9AAYAPYA9gAVAPcA9wAYAPgA+AADAPkA+gAYAP0A/QAYAP8A/wAYAQIBAgAVAQMBAwAEAQQBBAAYAQcBBwAFAQwBDAARARYBFgAFARcBFwAIARgBGAANARkBGQACARoBGgAFARwBHAAFAR0BHQAVAR4BHgAFASABIAAFASEBIQAVATIBMgAKATUBNQAYATgBOAAFATkBOQAVAToBOgAKAUQBRAAYAUkBSQAYAUsBTAAVAVEBUQABAVUBVQAFAVYBVgAVAWkBagAXAWwBbQAHAW4BbgATAW8BcQAHAXIBcgATAXYBdwATAigCKQAFAisCLAAFAkYCRgAXAkwCUgARAlMCUwAFAl0CYQAFAmICZQAGAmYCZgAOAmcCbQAaAm4CcgAVAncCdwAYAngCfAAIAn0CgAALAoECggACAoMCgwARAoQChAAaAoUChQARAoYChgAaAocChwARAogCiAAaAokCiQAFAooCigAVAosCiwAFAowCjAAVAo0CjQAFAo4CjgAVAo8CjwAFApACkAAVApICkgAVApQClAAVApYClgAVApgCmAAVApoCmgAVApwCnAAVAp0CnQAFAp4CngAVAp8CnwAFAqACoAAVAqECoQAFAqICogAVAqMCowAFAqQCpAAVArICsgAcAr8CvwAYAsECwQAYAsMCxAAYAsUCxQAFAsYCxgAIAscCxwAFAsgCyAAIAskCyQAFAsoCygAIAtEC0QAZAtIC0gAbAtMC0wAZAtQC1AAbAtUC1QAZAtYC1gAbAtcC1wAZAtgC2AAbAtkC2QAZAtoC2gAbAtsC2wAKAt0C3QAKAt8C3wAKAuEC4QAGAuIC4gALAuMC4wAGAuQC5AALAuUC5QAGAuYC5gALAucC5wAGAugC6AALAukC6QAGAuoC6gALAusC6wAGAuwC7AALAu0C7QAJAu8C7wAOAvAC8AACAvEC8QAOAvIC8gAUAvMC8wAMAvQC9AAUAvUC9QAMAvYC9gAUAvcC9wAMAvoC+gAFA1MDUwARA1cDVwAFA1gDWAAOA1sDWwARA14DXgAUA2QDZAAFA2cDZwAOA2gDaAASA2oDagAOA2sDawAVA20DbQAYA28DbwALA3EDcQAIA3MDcwACA3YDdgALA3cDdwAIA3gDeAALA38DfwAcA4IDggAQA4MDgwARA4oDigAFA40DjQAFA44DjgAKA48DjwASA5ADkAAaA5EDkQAVA5IDkgAYA5MDkwAIA5QDlAAYA5UDlQAVA5YDlgACA5cDlwAWA5gDmAAVA5kDmQAYA5oDmgAbA54DngAYA58DnwACA6ADoAAJA6IDogAJA6QDpAAJA6YDpgAOA6cDpwACA6gDqQAHA6wDrAAHA64DrgAYA68DrwARA7ADsAAaA7MDswAVA7QDtAAYA7cDtwANA7gDuAACA7kDuQAVA7oDugAFA70DvQAFA74DvgAVA78DvwAOA8ADwAACA8IDwgASA8MDwwAWA8UDxQARA8YDxgAaA8cDxwARA8gDyAAaA8wDzAAVA84DzwAVA9AD0AASA9ED0QAWA9UD1QAYA9cD1wAYA9gD2AAFA9kD2QAIA9oD2gAFA9sD2wAVA9wD3AAFA90D3QAIA+AD4AAQA+ED4QACA+ID4gAQA+MD4wACA+QD5AAQA+UD5QACA+YD5gAPA+cD5wADA+kD6QAYA+oD6gASA+sD6wAWA+wD7AAVA+0D7QABA+4D7gAEA+8D7wARA/AD8AAaA/ED8QARA/ID8gAaA/MD8wARA/QD9AAaA/UD9QARA/YD9gAaA/cD9wARA/gD+AAaA/kD+QARA/oD+gAaA/sD+wARA/wD/AAaA/0D/QARA/4D/gAaA/8D/wARBAAEAAAaBAEEAQARBAIEAgAaBAMEAwARBAQEBAAaBAUEBQARBAYEBgAaBAgECAAVBAoECgAVBAwEDAAVBA4EDgAVBBAEEAAVBBIEEgAVBBQEFAAVBBYEFgAVBBsEGwAFBBwEHAAIBB0EHQAFBB4EHgAIBB8EHwAFBCAEIAAIBCEEIQAFBCIEIgAIBCMEIwAFBCQEJAAIBCUEJQAFBCYEJgAIBCcEJwAFBCgEKAAIBCkEKQAFBCoEKgAVBCsEKwAFBCwELAAVBC0ELQAFBC4ELgAVBC8ELwAFBDAEMAAIBDEEMQAFBDIEMgAVBDMEMwAGBDQENAALBDUENQAGBDYENgALBDgEOAALBDoEOgALBDwEPAALBD4EPgALBEAEQAALBEEEQQAOBEIEQgACBEMEQwAOBEQERAACBEUERQAOBEYERgACBEoESgAYBEwETAAYBE0ETQAKBE8ETwASBFAEUAAWBFEEUQAPBFIEUgADBFMEUwAPBFQEVAADBFYEVgAYBFcEVwASBFgEWAAWBGMEYwAYBGUEZQAYBGcEZwAYBGgEaAABBGkEaQAEBGoEagAOBHAEcAAXBKoEqgAFAAEAAAAKAgYG8AAEREZMVAAaY3lybABIZ3JlawB2bGF0bgCkAAQAAAAA//8AEgAAAAoAFAAeACgANABBAEsAVQBfAGkAcwB9AIcAkQCbAKUArwAEAAAAAP//ABIAAQALABUAHwApADUAQgBMAFYAYABqAHQAfgCIAJIAnACmALAABAAAAAD//wASAAIADAAWACAAKgA2AEMATQBXAGEAawB1AH8AiQCTAJ0ApwCxACgABkFaRSAAVENSVCAAfk1PTCAAqE5BViAA1FJPTSABAFRVUiABLAAA//8AEwADAA0AFwAhACsAMgA3AEQATgBYAGIAbAB2AIAAigCUAJ4AqACyAAD//wASAAQADgAYACIALAA4AEUATwBZAGMAbQB3AIEAiwCVAJ8AqQCzAAD//wASAAUADwAZACMALQA5AEYAUABaAGQAbgB4AIIAjACWAKAAqgC0AAD//wATAAYAEAAaACQALgA6AD4ARwBRAFsAZQBvAHkAgwCNAJcAoQCrALUAAP//ABMABwARABsAJQAvADsAPwBIAFIAXABmAHAAegCEAI4AmACiAKwAtgAA//8AEwAIABIAHAAmADAAPABAAEkAUwBdAGcAcQB7AIUAjwCZAKMArQC3AAD//wATAAkAEwAdACcAMQAzAD0ASgBUAF4AaAByAHwAhgCQAJoApACuALgAuWMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmxpZ2EEfGxpZ2EEhGxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxvY2wEkGxvY2wElmxvY2wEnG51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqHBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5AAAAAEAAAAAAAIAAgADAAAAAQAHAAAAAQAYAAAAAwAVABYAFwAAAAIACAAJAAAAAQAJAAAAAQAUAAAAAQAEAAAAAQAGAAAAAQAFAAAAAQAZAAAAAQARAAAAAQATAAAAAQABAAAAAQAKAAAAAQALAAAAAQAMAAAAAQANAAAAAQAOAAAAAQAPAAAAAQAQAAAAAQASABsAOAPGBrQHYA3wDfAOBg4oDl4OhA6yDsYO2g7uDwAPGg9cD3oPmA/KD/wQLhBCEHoQbBB6EKYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCRAI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTdAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYB/wTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNgE2QTbAhoE3AIOBNcCEwINBNoCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkcCSAJKAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CrwKyArQCtgK4AroCvAK+AsACwgLFAscCyQLLAs0CzwLRAtMC1QLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvIC9AL2A1MDVANVA1YDVwNYA1kDWwNcA10DXgNfA2ADYQNiA2QDZQNmA2cDaANpA2oDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwO7A70DvwPUA9oD4ARJBEsETwRXBFkEXgRqAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAv0DMAI7AfoEygTLAfsB/AH9Af4B/wIABM4EzwTRBNQE3QICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZA08DGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNQA1EDUgTJBMwEzQTQBNIE0wIBBNUEwQTCBMMExATFBMYExwTIBNYE2ATZAhgE2wIaBNwC/AIOBNcCEwINBNoCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSwJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoQChgKIAooCjAKOApACkgKUApYCmAKaApwCngKgAqICpAKmAqgCqgKsAq4CswK1ArcCuQK7Ar0CvwLBAsMCxgLIAsoCzALOAtAC0gLUAtYC2gLcAt4C4ALiAuQC5gLoAuoC7ALuAvAC8wL1AvcDkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwO8A74DwAPOA9UD2wPhBEcESgRMBFAEWARaBFsEXwRrAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAAAaAAEAAQBNAAMAAAABABIAAQB4AAEAAAAaAAEAAQBOAAMAAAABABIAAQBgAAEAAAAaAAEAAQKuAAMAAAABABIAAQBIAAEAAAAaAAEAAQObAAMAAAABABIAAQAwAAEAAAAaAAEAAQOdAAMAAAABABIAAQAYAAEAAAAaAAEAAQQaAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCTAACAKcCTQACAKgCTwACAKkD8QACAKoEewACAKsD7wACAKwAAQAEBIgAAgCsAAEABAKJAAIAqAACAAYADASKAAIArASMAAIBogAGAA4AFAAaACAAJgAsAlQAAgCnAlUAAgCoBAsAAgCpBAkAAgCqBH0AAgCrBAcAAgCsAAIABgAMBHcAAgCoAqMAAgGiAAEABASOAAIArAAGAA4AFAAaACAAJgAsAlgAAgCnAlkAAgCoAqcAAgCpBBcAAgCqBH8AAgCrBBkAAgCsAAMACAAOABQEkAACAKgEkgACAKwCtAACAaIAAwAIAA4AFAK2AAIAqASUAAIArAK4AAIBogACAAYADAOtAAIAqASWAAIArAAFAAwAEgAYAB4AJAR5AAIApwK+AAIAqAJcAAIAqQSYAAIArALAAAIBogAGAA4AFAAaACAAJgAsAl0AAgCnAl4AAgCoAmAAAgCpBB0AAgCqBIEAAgCrBBsAAgCsAAEABASaAAIAqAAEAAoAEAAWABwCywACAKgEgwACAKsEnAACAKwCzQACAaIAAwAIAA4AFALRAAIAqASeAAIArALXAAIBogACAAYADASgAAIArALbAAIBogAGAA4AFAAaACAAJgAsAmIAAgCnAmMAAgCoAuEAAgCpBDUAAgCqBIUAAgCrBDMAAgCsAAIABgAMBKIAAgCpBKQAAgCsAAMACAAOABQDoAACAKcDogACAKgEpgACAKwABQAMABIAGAAeACQDpgACAKcCZgACAKgERQACAKkEQwACAKoEQQACAKwAAgAGAAwC8gACAKgEqAACAKwABgAOABQAGgAgACYALAJnAAIApwJoAAIAqAJqAAIAqQPyAAIAqgR8AAIAqwPwAAIArAABAAQEiQACAKwAAQAEAooAAgCoAAIABgAMBIsAAgCsBI0AAgGiAAYADgAUABoAIAAmACwCbwACAKcCcAACAKgEDAACAKkECgACAKoEfgACAKsECAACAKwAAQAEBHgAAgCoAAEABASPAAIArAABAAQEGgACAKwAAwAIAA4AFASRAAIAqASTAAIArAK1AAIBogADAAgADgAUArcAAgCoBJUAAgCsArkAAgGiAAIABgAMA64AAgCoBJcAAgCsAAUADAASABgAHgAkBHoAAgCnAr8AAgCoAncAAgCpBJkAAgCsAsEAAgGiAAYADgAUABoAIAAmACwCeAACAKcCeQACAKgCewACAKkEHgACAKoEggACAKsEHAACAKwAAQAEBJsAAgCoAAQACgAQABYAHALMAAIAqASEAAIAqwSdAAIArALOAAIBogADAAgADgAUAtIAAgCoBJ8AAgCsAtgAAgGiAAIABgAMBKEAAgCsAtwAAgGiAAYADgAUABoAIAAmACwCfQACAKcCfgACAKgC4gACAKkENgACAKoEhgACAKsENAACAKwAAgAGAAwEowACAKkEpQACAKwAAwAIAA4AFAOhAAIApwOjAAIAqASnAAIArAAFAAwAEgAYAB4AJAOnAAIApwKBAAIAqARGAAIAqQREAAIAqgRCAAIArAACAAYADALzAAIAqASpAAIArAABAAQC+AACAKgAAQAEAvoAAgCoAAEABAL5AAIAqAABAAQC+wACAKgABQAMABIAGAAeACQCcwACAKcCdAACAKgCqAACAKkEGAACAKoEgAACAKsABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQELAACAKcEKgACAKgEMAACAKkELgACAKoEMgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwABQAMABIAGAAeACQEOgACAKcEOAACAKgEPgACAKkEPAACAKoEQAACAKwAAQAEBIcAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLVAtYAAQAAAAEACAACAA4ABATeBN8E4AThAAEABAKHAogCmQKaAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiECIgGuAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAiIAAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIwRxBHIEcwR0BHUEdgABAAAAAQAIAAIAFgAIBHYCIwRxBHIEcwR0Aa0EdQABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAAAaAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwJDAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKuA5sDnQQa",
+  "Roboto-Medium.ttf": "AAEAAAARAQAABAAQR1BPU32qcYwAAgioAABZDEdTVUJMnCjgAAJhtAAAGWhPUy8yoQuxtgAAAZgAAABgY21hcEAmSHIAABpsAAASyGN2dCAElytKAAAvvAAAAFZmcGdte/lhqwAALTQAAAG8Z2FzcAAIABMAAgicAAAADGdseWaunmLpAAA53AABy8xoZG14PT88IAAAFYAAAATsaGVhZPh7qwgAAAEcAAAANmhoZWEK7wqbAAABVAAAACRobXR4JPNE9QAAAfgAABOIbG9jYd3eZq0AADAUAAAJxm1heHAHEgL1AAABeAAAACBuYW1lPWNvTAACBagAAALUcG9zdP9tAGQAAgh8AAAAIHByZXAbsfg2AAAu8AAAAMwAAQAAAAIAABFApG1fDzz1ABsIAAAAAADE8BEuAAAAANDbTpT6JP3VCVwIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJa/ok/kEJXAABAAAAAAAAAAAAAAAAAAAE4gABAAAE4gCPABYATgAFAAEAAAAAAA4AAAIAAhYABgABAAMElQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAK/1AAIX8AAAAhAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwACAAIAACA4wAZAAAAAAAAAAAAf4AAAH+AAACJQCPApgAZQTiAGAEjABkBeAAYwUdAFYBWgBSAsoAgALSACgDiQAbBHUARAHCABwCoABHAjwAhwMqAAIEjABpBIwAqASMAFEEjABPBIwANASMAIEEjAB1BIwARQSMAGgEjABdAh8AggHnAC4EEQA/BHoAkQQqAIAD5AA8BygAWwVTABIFDACUBTkAZgU6AJQEhgCUBGUAlAVyAGoFrwCUAkIAowRxAC0FCwCUBFQAlAcBAJQFrgCUBYYAZgUdAJQFhgBgBP4AlATUAEoE2wAtBTcAfQUtABIHCgAwBRAAKQTgAAcE0QBQAjEAhANYABQCMQAMA2sANQOcAAMClAAxBFQAWgSBAHwEMABPBIQATwRLAFMC1gAtBIkAUgRxAHkCCwB9AgH/tQQtAH0CCwCMBvYAfARzAHkEjgBPBIEAfASLAE8C0AB8BCEASwKpAAgEcgB3A/UAFgXyACEEBgAfA+UADAQGAFICrwA4AgIArgKvABsFUQB1Ah4AhgR9AGQEtQBeBZ0AXQTgABkB/ACIBPgAWgOFAF0GRABXA5EAjQPiAFcEbQB/BkQAVwPbAIcDCgB/BEoAXwL2ADwC9gA3ApsAcAS7AJID7QBFAkIAjgIQAG0C9gCAA6cAdwPiAF0F0ABZBisAUAZXAGcD5ABCB4X/9gREAE0FhABpBMoAlATnAIgGwQBIBKcAZwSRAEMEiABPBJcAggWwAB8CGgCPBJgAjgRkACICTwAhBZMAkASIAH4HtABkBzoAWwIMAIsFiABRAtD/5AWKAFgEngBPBaQAfQTyAHcCJv+1BDwAWQPmAJQDsAByA9wAhwN8AHUCCwCBArIAeAJNACkD2AB6Ax8ASQJsAIIAAPyOAAD9XgAA/HMAAP0+AAD8DAAA/RwCXQDGBDwAZwJCAI4EdQCbBb8AGQV6AFsFOAAgBJAAbAWxAJsEkABHBe8ASgWqAEQFWwBrBIQAVgTGAJYEDgAgBIgAVARgAGAEGgBhBIgAfgShAHMCqgCpBGoAFgQTAGQE8wAtBIgAgAQ3AFIEkABSBC0APwRgAIAF0ABEBckATwaUAGYEswB2BHv/4QZxADMF/gAiBVkAaAiIAC0IjwCbBlsAMQWqAJIFCACQBgYAJAeiABYE1gBJBagAlAWpAC0FCgA5Bl8ATwX5AJIFiQCOB5sAmAf5AJgGGgAYBvkAmwUHAJAFUABrB1QAoAT3ACAEfQBbBI8AjwNaAIUE9gAnBnYAHgQWAE0EmACGBG4AjwSaACEGAwCPBJcAhgSYAIYD9QAjBdMAVATTAIYEZgBfBo4AhgbsAH4FFwAfBm8AjwRoAI8EPABRBoQAkQRwACcEcf/bBDwAVAbRAB4G5ACGBIn/7gSYAIYHSQCIBk8AcARn/+AHKACYBgEAhgUMABwEYAAKB0IArAY2AJ0G7QCABeYAggkyAKMH+QCPBCAAKAPwADMFegBfBIgATwUaABAEDgAgBXoAXwSIAE8HRQCIBkQAdAdJAIgGTwBwBRoAZgRKAFwE/wBtAAD8ZgAA/HMAAP17AAD9pQAA+iQAAPpNBGf/4AUTAJQEhgB8BGoAjwOhAH4EtwCbBCAAfgUsAJAEqwCOBpUANAWkAD0H0ACUBaoAfghHAJsG9QB+BioAZwT/AGEHMQAtBXAAJgV0AIAEcwB0BYcAhQYkABYEw//LBSEAkAR4AI4FrwCbBIgAfgWIAFEEpgBbBKYAXQTHADQDUwAtBQcAUgbxAGgG3QBeBlMAPAUoAC8EewBIBD4AdAe+AEIGnQBAB/0AlAaeAHcFBABdBCwAVQWqACEFHQBEBVUAgQMsAGcEFAAACCkAAAQUAAAIKQAAArkAAAIKAAABXAAABH8AAAIwAAABogAAANEAAAAAAAACoQBHAqEARwUpAJ0GMACBA50ABAHAAGMBvAAzAc4AMgGoAEoDFABsAxsAQAMIADIEXQBABJkAXALLAIgD+gCKBaYAigFsAEcHpwBKAnIAbAJpAFQDnAAtAvYANQNcAGkEtQBfBnAAIQa4AJgIkwCUB4gANQaMAHwEjABeBfUAIQQ0ACgEogAhBV4ATwV9ACgF5ABwA+IATAguAJAFCQBtBRQAlgY1AFkG3QBUBtEAWwaiAFgEkQBiBZYApgTZAEAEgwCeBLIAOwhFAF4CLf+vBI4AZQR6AJEEEQA8BCoAgAQMACQCWwChApgAYwHxAEUFGwAtBKgAGAS8AC0HIwAtByMALQURAC0GtwBLAAAAAAgwAFkINQBcBDMAOgSTAE8CEP+wAbMAXAOhAHUDoQB1A6EAdQQLAHUECwB1BAv/TAQLAHoDoQB1AgUAlASeAAkEYAB2BIAATwR6AHYD4AB2A8UAdgSmAFQE3gB2AfwAhQPVACQEWwB2A7kAdgYGAHYE3QB2BMAATwRtAHYEwABMBFwAdgQ0AD4EOwAkBIQAZwR7AAkGBwAoBF4AFQQ8AAUEKgBBAvYASwL2AIAC9gA8AvYANwL2ADUC9gBPAvYATQL2ADYC9gBLAvYARgO5AJACsgCWBDsACgS7AFYFRACbBSgAmwQwAIEFOQCbBC0AgQQ0AD4EZgA4BE0ADgO5AHYEewAJBMAATwR7AAkDmABCBNgAdgQZAEQFnQBQBVQAUATkAF8FkQAkBIAATwdUACQHVwB2BZcAJATXAHYEcQB2BVkAJwY6ABoERgBCBOQAdgRcAHYEywAkBEYAHwVdAHYEjABBBoQAdgcKAHYFWgAKBiAAdgRnAHYEgAA8BpIAdgSIAEMEIgAKBpIAGgSdAHYFGgB2BW4AJAXwAE8EWgAFBMQAFQaVACQEjABBBIwAdgX+AAoE0gBPBEYAQgTAAE8EZgA4A/cARgg2AHYE6wAoBIgAfAQ9AFAEmABPA6QAWwShAEwElAB8BJ8ATwRLAFMEiQBRBXoAawWiAGsFhgCbBeAAawXiAGsEGwCXBIIAbgO5AHYEVwAPBL4ANQL2AEsC9gA1AvYATwL2AE0C9gA2AvYASwL2AEYEawBmBC4AQwaYAE8EtABzBOsAYgIm/7UCJv+1AhsAjwIb//sCGwCPBGAAdgH+AAACoABHBVj/9wVY//cEj//UBNsALQKp/+gFUwASBVMAEgVTABIFUwASBVMAEgVTABIFUwASBTkAZgSGAJQEhgCUBIYAlASGAJQCQv/IAkIAowJC/8sCQv+/Ba4AlAWGAGYFhgBmBYYAZgWGAGYFhgBmBTcAfQU3AH0FNwB9BTcAfQTgAAcEVABaBFQAWgRUAFoEVABaBFQAWgRUAFoEVABaBDAATwRLAFMESwBTBEsAUwRLAFMCGv+0AhoAjwIa/7cCGv+rBHMAeQSOAE8EjgBPBI4ATwSOAE8EjgBPBHIAdwRyAHcEcgB3BHIAdwPlAAwD5QAMBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBTkAZgQwAE8FOQBmBDAATwU5AGYEMABPBTkAZgQwAE8FOgCUBRoATwSGAJQESwBTBIYAlARLAFMEhgCUBEsAUwSGAJQESwBTBIYAlARLAFMFcgBqBIkAUgVyAGoEiQBSBXIAagSJAFIFcgBqBIkAUgWvAJQEcQB5AkL/swIa/58CQv+5Ahr/pQJC/98CGv/LAkIAFwILAAACQgCdBrMAowQMAH0EcQAtAib/tQULAJQELQB9BFQAlAILAIoEVACUAgsAVQRUAJQCoQCMBFQAlALnAIwFrgCUBHMAeQWuAJQEcwB5Ba4AlARzAHkEc/+lBYYAZgSOAE8FhgBmBI4ATwWGAGYEjgBPBP4AlALQAHwE/gCUAtAATwT+AJQC0AA4BNQASgQhAEsE1ABKBCEASwTUAEoEIQBLBNQASgQhAEsE1ABKBCEASwTbAC0CqQAIBNsALQKpAAgE2wAtAtEACAU3AH0EcgB3BTcAfQRyAHcFNwB9BHIAdwU3AH0EcgB3BTcAfQRyAHcFNwB9BHIAdwcKADAF8gAhBOAABwPlAAwE4AAHBNEAUAQGAFIE0QBQBAYAUgTRAFAEBgBSB4X/9gbBAEgFhABpBIgATwR6/6YEev+mBDsAJASeAAkEngAJBJ4ACQSeAAkEngAJBJ4ACQSeAAkEgABPA+AAdgPgAHYD4AB2A+AAdgH8/6YB/ACDAfz/qQH8/50E3QB2BMAATwTAAE8EwABPBMAATwTAAE8EhABnBIQAZwSEAGcEhABnBDwABQSeAAkEngAJBJ4ACQSAAE8EgABPBIAATwSAAE8EegBqA+AAdgPgAHYD4AB2A+AAdgPgAHYEpgBUBKYAVASmAFQEpgBUBN4AdgH8/5EB/P+XAfz/vQH8ABUB/AB8A9UAJARbAHYDuQB2A7kAdgO5AHYDuQB2BN0AdgTdAHYE3QB2BMAATwTAAE8EwABPBFwAdgRcAHYEXAB2BDQAPgQ0AD4ENAA+BDQAPgQ7ACQEOwAkBDsAJASEAGcEhABnBIQAZwSEAGcEhABnBIQAZwYHACgEPAAFBDwABQQqAEEEKgBBBCoAQQVTABIE6v9KBhP/UwKm/1YFmv+nBUT+4QVv/7ICqv+HBVMAEgUMAJQEhgCUBNEAUAWvAJQCQgCjBQsAlAcBAJQFrgCUBYYAZgUdAJQE2wAtBOAABwUQACkCQv+/BOAABwSEAFYEYABgBIgAfgKqAKkEYACABJgAjgSOAE8EuwCSA/UAFgQGAB8Cqv/MBGAAgASOAE8EYACABpQAZgSGAJQEdQCbBNQASgJCAKMCQv+/BHEALQUoAJsFCwCUBQoAOQVTABIFDACUBHUAmwSGAJQFqACUBwEAlAWvAJQFhgBmBbEAmwUdAJQFOQBmBNsALQUQACkEVABaBEsAUwSYAIYEjgBPBIEAfAQwAE8D5QAMBAYAHwRLAFMDWgCFBCEASwILAH0CGv+rAgH/tQRuAI8D5QAMBwoAMAXyACEHCgAwBfIAIQcKADAF8gAhBOAABwPlAAwBWgBSApgAZQRKAI8CJv+xAbwAMwcBAJQG9gB8BVMAEgRUAFoEhgCUBagAlARLAFMEmACGBaoARAXJAE8FGgAQBA7/8QhzAE8JawBmBNYASQQWAE0FOQBmBDAATwTgAAcEDgAgAkIAoweiABYGdgAeAkIAowVTABIEVABaBVMAEgRUAFoHhf/2BsEASASGAJQESwBTBYgAUQQ8AFkEPABZB6IAFgZ2AB4E1gBJBBYATQWoAJQEmACGBagAlASYAIYFhgBmBI4ATwV6AF8EiABPBXoAXwSIAE8FUABrBDwAUQUKADkD5QAMBQoAOQPlAAwFCgA5A+UADAWJAI4EZgBfBvkAmwZvAI8FEAApBAYAHwSEAE8FqQAtBJoAIQVTABIEVABaBVMAEgRUAFoFUwASBFQAWgVTABAEVP+aBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBVMAEgRUAFoFUwASBFQAWgSGAJQESwBTBIYAlARLAFMEhgCUBEsAUwSGAJQESwBTBIb/1QRL/44EhgCUBEsAUwSGAJQESwBTBIYAlARLAFMCQgCjAhoAjwJCAJQCCwB4BYYAZgSOAE8FhgBmBI4ATwWGAGYEjgBPBYYAJwSO/6MFhgBmBI4ATwWGAGYEjgBPBYYAZgSOAE8FigBYBJ4ATwWKAFgEngBPBYoAWASeAE8FigBYBJ4ATwWKAFgEngBPBTcAfQRyAHcFNwB9BHIAdwWkAH0E8gB3BaQAfQTyAHcFpAB9BPIAdwWkAH0E8gB3BaQAfQTyAHcE4AAHA+UADATgAAcD5QAMBOAABwPlAAwEogBPBKIATwUoAJsEbgCPBa8AlASXAIYE2wAtA/UAIwUQACkEBgAfBYkAjgRmAF8FiQCOBGYAXwR1AJsDWgCFB6IAFgZ2AB4GJAAWBMP/ywRxAHkFB//QBQf/0AR1//ADWv/iBTz/4wRE/64FqACUBJgAhgWvAJQElwCGBwEAlAYDAI8FqQAtBJoAIQTgAAcEDgAgBRAAKQQGAB8EYABgBGUAAgYwAIEEjABRBIwATwSMADQEjACBBKAAXQS0AH0FcgBqBIkAUgWuAJQEcwB5BVMAEgRUAA0EhgBIBEsAAQJC/vYCGv7iBYYAZgSOABYE/gAyAtD/bgU3AHEEcgAPBN/+rAUMAJQEgQB8BToAlASEAE8FOgCUBIQATwWvAJQEcQB5BQsAlAQtAH0FCwCUBC0AfQRUAJQCCwB4BwEAlAb2AHwFrgCUBHMAeQUdAJQEgQB8BP4AlALQAHIE1ABKBCEASwTbAC0CqQAIBS0AEgP1ABYFLQASA/UAFgcKADAF8gAhBNEAUAQGAFIFzP4cBJ4ACQQc/yoFGv83Ajj/OQTK/5MEeP7oBO7/pASeAAkEYAB2A+AAdgQqAEEE3gB2AfwAhQRbAHYGBgB2BMAATwRtAHYEOwAkBDwABQReABUB/P+dBDwABQPgAHYDuQB2BDQAPgH8AIUB/P+dA9UAJARbAHYERgAfBJ4ACQRgAHYDuQB2A+AAdgTkAHYGBgB2BN4AdgTAAE8E2AB2BG0AdgSAAE8EOwAkBF4AFQRGAEIE3gB2BIAATwQ8AAUF/gAKBOQAdgRGAB8FnQBQBVMAEgRUAFoEhgCUBEsAUwIaAHgAAAABAAAE5AkLBAAAAgICAwYFBwYCAwMEBQIDAwQFBQUFBQUFBQUFAgIFBQUECAYGBgYFBQYGAwUGBQgGBgYGBgUFBgYIBgUFAgQCBAQDBQUFBQUDBQUCAgUCCAUFBQUDBQMFBAcFBAUDAgMGAgUFBgUCBgQHBAQFBwQDBQMDAwUEAwIDBAQHBwcECAUGBQYIBQUFBQYCBQUDBgUJCAIGAwYFBgYCBQQEBAQCAwMEBAMAAAAAAAADBQMFBgYGBQYFBwYGBQUFBQUFBQUDBQUGBQUFBQUHBwcFBQcHBgoKBwYGBwkFBgYGBwcGCQkHCAYGCAYFBQQGBwUFBQUHBQUEBwUFBwgGBwUFBwUFBQgIBQUIBwUIBwYFCAcIBwoJBQQGBQYFBgUIBwgHBgUGAAAAAAAABQYFBQQFBQYFBwYJBgkIBwYIBgYFBgcFBgUGBQYFBQUEBggIBwYFBQkHCQcGBQYGBgQFCQUJAwICBQICAQADAwYHBAICAgIDBAMFBQMEBgIJAwMEAwQFBwgKCAcFBwUFBgYHBAkGBgcICAcFBgUFBQkCBQUFBQUDAwIGBQUICAYIAAkJBQUCAgQEBAUFBQUEAgUFBQUEBAUFAgQFBAcFBQUFBQUFBQUHBQUFAwMDAwMDAwMDAwQDBQUGBgUGBQUFBQQFBQUEBQUGBgYGBQgIBgUFBgcFBgUFBQYFBwgGBwUFBwUFBwUGBgcFBQcFBQcFBQUFBAkGBQUFBAUFBQUFBgYGBwcFBQQFBQMDAwMDAwMFBQcFBgICAgICBQIDBgYFBQMGBgYGBgYGBgUFBQUDAwMDBgYGBgYGBgYGBgUFBQUFBQUFBQUFBQUCAgICBQUFBQUFBQUFBQQEBgUGBQYFBgUGBQYFBgUGBgUFBQUFBQUFBQUGBQYFBgUGBQYFAwIDAgMCAwIDCAUFAgYFBQIFAgUDBQMGBQYFBgUFBgUGBQYFBgMGAwYDBQUFBQUFBQUFBQUDBQMFAwYFBgUGBQYFBgUGBQgHBQQFBQUFBQUFCAgGBQUFBQUFBQUFBQUFBAQEBAICAgIFBQUF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AAADfwAABBsAAAQbAAAA3AAABBwAAAQiAAADhwAABCMAAAQkAAAA3QAABCUAAAQlAAADjgAABCYAAAQvAAAA3wAABDAAAAQwAAADjwAABDEAAAQ0AAAA6QAABDUAAAQ1AAADkAAABDYAAAQ4AAAA7QAABDkAAAQ5AAADkQAABDoAAAQ9AAAA8AAABD4AAAQ+AAADkgAABD8AAAQ/AAAA9AAABEAAAARBAAADkwAABEIAAARCAAAA9QAABEMAAARDAAADlQAABEQAAAREAAAA9gAABEUAAARFAAADlgAABEYAAARPAAAA9wAABFAAAARQAAADsgAABFEAAARRAAADlwAABFIAAARSAAABAQAABFMAAARTAAADmAAABFQAAARUAAABAgAABFUAAARYAAADmQAABFkAAARbAAABAwAABFwAAARcAAADnQAABF0AAARdAAADswAABF4AAAReAAADngAABF8AAARhAAABBgAABGIAAARiAAAEXAAABGMAAARvAAABCQAABHAAAARxAAADtAAABHIAAAR1AAABFgAABHYAAAR3AAADtgAABHgAAAR4AAADuQAABHkAAAR5AAADuAAABHoAAASGAAABGgAABIgAAASJAAABJwAABIoAAASLAAAEYQAABIwAAASMAAAEWwAABI0AAASRAAABKQAABJIAAASTAAAEXQAABJQAAASVAAABLgAABJYAAASXAAAEVgAABJgAAASZAAADugAABJoAAASbAAAESAAABJwAAASdAAABMAAABJ4AAASfAAAEXwAABKAAAAShAAABMgAABKIAAASjAAAESgAABKQAAASpAAABNAAABKoAAASrAAADvAAABKwAAAStAAAETAAABK4AAASvAAADvgAABLAAAASxAAAEaQAABLIAAASzAAAETgAABLQAAAS1AAABOgAABLYAAAS3AAAEUAAABLgAAAS6AAABPAAABLsAAAS7AAAEWgAABLwAAAS9AAABPwAABL4AAAS/AAAEWAAABMAAAATCAAADwAAABMMAAATEAAABQQAABMUAAATGAAAEZwAABMcAAATIAAABQwAABMkAAATKAAAEYwAABMsAAATMAAAEUgAABM0AAATOAAAEZQAABM8AAATXAAADwwAABNgAAATYAAABRQAABNkAAATZAAADzQAABNoAAATaAAADzAAABNsAAATfAAADzgAABOAAAAThAAABRgAABOIAAAT1AAAD0wAABPYAAAT3AAAEVAAABPgAAAT5AAAD5wAABPoAAAT7AAABSAAABPwAAAT9AAAD6QAABP4AAAT/AAAEawAABQAAAAUAAAABSgAABQEAAAUBAAAD6wAABQIAAAUQAAABSwAABREAAAURAAAEbQAABRIAAAUTAAAD7AAAHgAAAB4BAAADrgAAHj4AAB4/AAADrAAAHoAAAB6FAAADnwAAHqAAAB7xAAAD7gAAHvIAAB7zAAADpQAAHvQAAB75AAAEQAAAH00AAB9NAAAEqQAAIAAAACALAAABWwAAIBAAACARAAABZwAAIBMAACAUAAABaQAAIBUAACAVAAAEbwAAIBcAACAeAAABawAAICAAACAiAAABcwAAICUAACAnAAABdgAAIDAAACAwAAABeQAAIDIAACAzAAADpwAAIDkAACA6AAABegAAIDwAACA8AAADqQAAIEQAACBEAAABfAAAIHQAACB0AAABfQAAIH8AACB/AAABfgAAIKMAACCjAAAEbgAAIKQAACCkAAABfwAAIKYAACCqAAABgAAAIKsAACCrAAAERwAAIKwAACCsAAABhQAAILEAACCxAAABhgAAILkAACC6AAABhwAAILwAACC9AAABiQAAIQUAACEFAAABiwAAIRMAACETAAABjAAAIRYAACEWAAABjQAAISIAACEiAAABjgAAISYAACEmAAAAuQAAIS4AACEuAAABjwAAIVsAACFeAAABkAAAIgIAACICAAABlAAAIgYAACIGAAAAsQAAIg8AACIPAAABlQAAIhEAACISAAABlgAAIhoAACIaAAABmAAAIh4AACIeAAABmQAAIisAACIrAAABmgAAIkgAACJIAAABmwAAImAAACJgAAABnAAAImQAACJlAAABnQAAJcoAACXKAAABnwAA7gEAAO4CAAABoAAA9sMAAPbDAAABogAA+wEAAPsEAAABpAAA/v8AAP7/AAABqgAA//wAAP/9AAABq7AALEuwCVBYsQEBjlm4Af+FsIQdsQkDX14tsAEsICBFaUSwAWAtsAIssAEqIS2wAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbAELCBGsAQlRlJY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seix/7IWsi6yRbJcsnOyi7KdsrSyy7LisvmzEbMoszqzUbNps4Czl7Ops7+z1bPstAS0ELQctDO0RbRbtHK0iLSetLW0zbTetPW1B7UdtS61RrVdtW+1hbWcta61xbXcte22BLYbtoW3J7c5t0u3Yrd4t4+3pre4t8m327fruAK4E7gquEC4V7huuNu5crmJuZq5sbnHud659LoLuiK6LrpAule6abqAupK6qbrAute67rr5uwS7G7snuzO7Srthu227ebuQu6e7s7u/u9S76bv1vAG8GLwqvDa8QrxZvGq8f7yWvKe8vrzVvO29Bb0XvSm9Nb1BvVO9ZL12vYi9n721vcG9zb3ZveW9974IvhS+IL4svji+T75bvnK+iL6avrC+x77evvG/BL8cvy+/jb/vwAbAHcA0wErAYsB5wJDAp8C+wNDA4cD4wQrBIcE4wWjBmMGowb/B1sHswf3CFcItwjnCRcJcwnPCicKgwrfCzcLkwvzDDsMlwzfDTcNew3bDjcOkw7rD0sPpw//EFsR9xI/EpcS8xM3E3sT0xQrFIcWOxaTFusXRxejF9MYKxhzGM8ZKxlXGa8aCxo7GpMawxsXG0cboxvTHC8ccxzPHRsdYx2THdceHx53Hqce6x8bH3Mfox/7ID8gmyDnITMityMTI2sjxyQjJH8k1yUDJTMlYyWTJcMl8yYjJo8mrybPJu8nDycvJ08nbyePJ68nzyfvKA8oLyhPKK8pDylXKZ8p5yorKpMqsyrTKvMrEyszK5Mr7yw3LH8sxy0nLYMvOy9bL7sv2y/7MFcwszDTMPMxEzEzMY8xrzHPMe8yDzIvMk8ybzKPMq8yzzMrM0szazS7NNs0+zVXNbM10zXzNlM2czbPNyc3gzffODs4lzjjOS85iznPOh86mzrLOxM7MzuPO9c8Bzw3PJM87z1LPac9xz3nPkc+pz7XPwc/Nz9nP5c/xz/nQAdAJ0CDQN9A/0FbQbdCF0JzQpNCs0MPQ2dDx0PnRENEo0UDRWNFv0YbRnNG00czR5NH80gTSDNIk0jvSU9Jq0nzSjdKl0rzS1NLs0wTTG9M301PTX9Nr03PTf9OL05fTo9O108fT4NPy1AvUHdQw1ELUVdRn1HfUhtSZ1KvUvtTQ1OPU9dUI1RrVKtU61UbVUtVk1XbViNWZ1bLVxNXd1e/WAtYU1ifWOdZJ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CRCwBtCwBi+wAdCwAS8wMf//AI//8gPIBbAAJgAFAAAABwAFAiUAAP///7H+SwJzBd8CJgCbAAABBwCe/z//3gAJALAAL7AR3DAxAP//ADMEAAFlBgACBgFtAAD//wCUAAAGagc2AiYAMQAAAQcAdQKQATYAEwCwAEVYsAIvG7ECHz5ZsBHcMDEA//8AfAAABnkGAAImAFEAAAEHAHUCoAAAAAkAsAMvsCDcMDEA//8AEv5tBUIFsAImACUAAAAHAKYBegAD//8AWv5xA/sETgImAEUAAAAHAKYArQAH//8AlAAABEwHPQImACkAAAEHAEQA6AE9ABMAsABFWLAGLxuxBh8+WbAN3DAxAP//AJQAAAUNBz0CJgDbAAABBwBEAUoBPQATALAARViwCC8bsQgfPlmwC9wwMQD//wBT/+wECwYAAiYASQAAAQcARAChAAAAEwCwAEVYsAgvG7EIGz5ZsB/cMDEA//8AhgAABBIF8wImAO8AAAEHAEQAxP/zABMAsABFWLAILxuxCBs+WbAL3DAxAP//AEQAAAVcBbACBgC4AAD//wBP/iIFfgQ6AgYAzAAA//8AEAAABPMG/AImARgAAAEHAKsESQEOABYAsABFWLAPLxuxDx8+WbAR3LAV0DAx////8QAABBgF0AImARkAAAEHAKsD5f/iABYAsABFWLARLxuxERs+WbAT3LAX0DAx//8AT/5LCGQETgAmAFMAAAAHAF0EjgAA//8AZv5LCVwFxAAmADMAAAAHAF0FhgAA//8ASf46BH8FwwImANoAAAAHAbABkv+g//8ATf47A8QETQImAO4AAAAHAbABOf+h//8AZv4+BOsFxAImACcAAAAHAbAB1v+k//8AT/4+A/UETgImAEcAAAAHAbABSv+k//8ABwAABNYFsAIGAD0AAP//ACD+XwP1BDoCBgC8AAD//wCjAAABnwWwAgYALQAA//8AFgAAB5sHIwImANkAAAEHAKACHQE9ABMAsABFWLANLxuxDR8+WbAZ3DAxAP//AB4AAAZcBdkCJgDtAAABBwCgAYf/8wATALAARViwDS8bsQ0bPlmwGdwwMQD//wCjAAABnwWwAgYALQAA//8AEgAABUIHHAImACUAAAEHAKAA9gE2ABMAsABFWLAELxuxBB8+WbAO3DAxAP//AFr/7AP7BeYCJgBFAAABBwCg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ALAARViwBy8bsQcfPlmxDwn0sBXQMDEA//8AU//sBMgGfAImAEkAAAEGAbc97AAMALAIL7Ag3LAl0DAx////1QAABEwHtQImACkAAAEHAbYAiQEyABcAsABFWLAGLxuxBh8+WbEPCfSwFNAwMQD///+O/+wECwZ5AiYASQAAAQYBtkL2AAwAsAgvsB7csCXQMDH//wCUAAAEkgflAiYAKQAAAQcBtQCIARoADACwBi+wDNywE9AwMf//AFP/7ARLBqkCJgBJAAABBgG1Qd4ADACwCC+wHtywJdAwMf//AJQAAARMB90CJgApAAABBwG0AIkBDAAMALAGL7AM3LAT0DAx//8AU//sBAsGoQImAEkAAAEGAbRC0AAMALAIL7Ae3LAl0DAx//8AlP6eBEwHPgImACkAAAAnAJ0AiAE9AAcArATLAAr//wBT/pQECwYBAiYASQAAACYAnUEAAAcArASPAAD//wCjAAACEQfCAiYALQAAAQcAqgN4AUMACQCwAi+wBNwwMQD//wCPAAAB/QZ+AiYAjAAAAQcAqgNk//8ACQCwAi+wBNwwMQD//wCU/poBpwWwAiYALQAAAAcArAN4AAb//wB4/p4BkAXVAiYATQAAAAcArANcAAr//wBm/pQFHgXEAiYAMwAAAAcArAUdAAD//wBP/pIEPQROAiYAUwAAAAcArASd//7//wBm/+wFHge7AiYAMwAAAQcAqgUcATwACQCwFC+wH9wwMQD//wBP/+wEPQaFAiYAUwAAAQcAqgSYAAYACQCwBC+wG9wwMQD//wBm/+wFYQexAiYAMwAAAQcBtwDWASEADACwFC+wIdywJtAwMf//AE//7ATdBnwCJgBTAAABBgG3UuwADACwBC+wHdywItAwMf//ACf/7AUeB64CJgAzAAABBwG2ANsBKwAMALAUL7Af3LAm0DAx////o//sBD0GeQImAFMAAAEGAbZX9gAMALAEL7Ab3LAi0DAx//8AZv/sBR4H3gImADMAAAEHAbUA2gETAAwAsBQvsB/csCbQMDH//wBP/+wEYAapAiYAUwAAAQYBtVbeAAwAsAQvsBvcsCLQMDH//wBm/+wFHgfWAiYAMwAAAQcBtADbAQUADACwFC+wH9ywJtAwMf//AE//7AQ9BqECJgBTAAABBgG0V9AADACwBC+wG9ywItAwMf//AGb+lAUe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GzIcqB5aIBg63iFOIuA5MiUuOt463jb2Ot463iX4J5I5oChwKTIpwCoeKvg5KCuCOZAsTCx2Ldw23DBiMKAx0jOQNtwyVDLaMwQzWjOQN0A3+DakOCQztjbcOco5KDqMOow5KDaeM+A2njaeNp41UjV4NYI1jDWqNbw1zjXgNso7ijuKO4o7ijg+N0A3QDdAN0A3QDdAN0A2yjfYN9g32DfYOt463jreOt463juKO4o7ijuKO4o4HjgeOB44HjsAN7Y3tje2N7Y3tje2N7Y37jfuN+437jmWN/g3+Df4N/g3+DgkOCQ3QDe2N0A3tjdAN7Y2yjbKNso2yjuKN9g37jfYN+432DfuN9g37jfYN+463jmWOt463jreOt463jgeOow16jXqNeo16jreOZY63jmWOt45ljmWO4o3+DuKN/g7ijf4Nhg2GDYYOD44Pjg+OB44HjgeOB44HjgeNng7ADgkOwA2KjYqNio3QDfYOt463juKOwA3QDZMN9g2KjreOt46jDreOt47ijZWOD47ADkyOt47ADmWN/g4JDf4N9g5yjreOt44HjqMOow29jdANkw5yjfYOt463juKNlY2yjg+OTI3tjfuN/g23DgkOZA37jkoOCQ2eDZ4Nng7ADgkNp42njaeOt45ljdAN7Y32DfuNqQ4JDbKOwA4JDreOTI5kDreN0A3tjdAN7Y32DfuN+437jkyOZA7ijf4N/g23Db2OCQ29jgkNvY4JDkyOZA3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y32DfuN9g37jfYN+432DfuN9g37jfYN+432DfuN9g37jreOt47ijf4O4o3+DuKN/g7ijf4O4o3+DuKN/g7ijf4N/g4HjgeOwA4JDsAOCQ7ADgkOow63jg+OTI5kDnKOSg5MjmQOZY5oDnKOow63jreOwA7igACAIsABAAEAAAABgAGAAEACwAMAAIAEwATAAQAJQAqAAUALAA2AAsAOAA/ABYARQBGAB4ASQBKACAATABMACIATwBPACMAUQBUACQAVgBWACgAWABYACkAWgBdACoAXwBfAC4AigCKAC8AnACcADAAsAC0ADEAtgC4ADYAugC6ADkAvAC8ADoAvwDAADsAwgDCAD0AxADEAD4AxgDNAD8A0QDRAEcA0wDdAEgA3wDfAFMA4QDjAFQA5QDuAFcA8ADwAGEA9QD3AGIA+gD7AGUA/QD/AGcBAgEEAGoBCQEJAG0BDAEMAG4BFwEZAG8BIQEhAHIBKwEtAHMBMAEwAHYBMgEyAHcBSQFJAHgBbAFtAHkBbwFxAHsBugG6AH4BvQG9AH8BxAHFAIAByAHIAIIBygHLAIMBzQHNAIUCKAIoAIYCKgIrAIcCRgJHAIkCSQJJAIsCSwJsAIwCbgJxAK4CdgJ7ALICgAKIALgCigKKAMECjAKMAMICjgKOAMMCkAKQAMQCkgKbAMUCpAKmAM8CqAKoANICqgKqANMCrAKsANQCrgKuANUCsQKxANYCswKzANcCtQK1ANgCtwK3ANkCuQK5ANoCuwK7ANsCvQLJANwCywLLAOkCzQLNAOoCzwLPAOsC2gLaAOwC3ALcAO0C3gLeAO4C4ALgAO8C4gLiAPAC5ALkAPEC5gLmAPIC6ALoAPMC6gLqAPQC7ALsAPUC7gLxAPYC8wLzAPoC9QL1APsDUgNXAPwDWgNpAQIDbANsARIDcANwARMDcgNyARQDdgN2ARUDeQN6ARYDfAOFARgDhwOJASIDiwOQASUDkgOTASsDlQOYAS0DngOfATEDoQOhATMDowOjATQDpQOoATUDqwOwATkDsgOyAT8DtgO3AUADvAO8AUIDvgPHAUMDygPLAU0DzQPQAU8D1wPYAVMD3APcAVUD3gPkAVYD6QPqAV0D7gQWAV8EGAQYAYgEGgQnAYkELwQvAZcEMgQyAZgENAQ0AZkEQARFAZoESARIAaAESgRKAaEETARMAaIETgRPAaMEVARXAaUEWgRaAakEXARdAaoEXwRfAawEYwRjAa0EZQRlAa4EaQRpAa8EqQSpAbAACgA4/8QA0f/EANX/xAEy/8QBOv/EAtr/xALc/8QC3v/EA43/xARM/8QAFQA6ABQAOwAmAD0AFgEYABQCZQAWAuwAJgLuABYC8AAWA1cAFgNmABYDaQAWA58AJgOhACYDowAmA6UAFgO2ABQDvgAWBEAAFgRCABYERAAWBGkAFgABABP/CADOABD+7gAS/u4AJf9AAC7/MAA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFb/5gBZ/+oAWv/oAF3/6ACT/+sAmP/rAJr/6gCx/0AAs/9AALr/6wC8/+gAx//rAMj/6wDK/+oA0QAUANUAFAD2/+sBAv/rAQz/QAEX/+sBGf/oAR3/6wEh/+sBMgAUATn/6wE6ABQBS//rAUz/6wFW/+sBbv7uAXL+7gF2/u4Bd/7uAbr/wAJL/0ACTP9AAk3/QAJO/0ACT/9AAlD/QAJR/0ACZv/eAmf/3gJo/94Caf/eAmr/3gJr/94CbP/eAm3/6wJu/+sCb//rAnD/6wJx/+sCd//rAnj/6wJ5/+sCev/rAnv/6wJ8/+oCff/qAn7/6gJ//+oCgP/oAoH/6AKC/0ACg//eAoT/QAKF/94Chv9AAof/3gKJ/+sCi//rAo3/6wKP/+sCkf/rApP/6wKV/+sCl//rApn/6wKb/+sCnf/rAp//6wKh/+sCo//rArH/MALF/+sCx//rAsn/6wLaABQC3AAUAt4AFALh/+oC4//qAuX/6gLn/+oC6f/qAuv/6gLv/+gDUv9AA1r/QANq/+sDbv/qA3D/6wNy/+gDdf/qA3b/6wN3/+oDfv8wA4L/QAONABQDj//eA5D/6wOS/+sDlP/rA5X/6AOX/+sDnv/oA6b/6AOu/0ADr//eA7L/6wO3/+gDuP/rA73/6wO//+gDxP9AA8X/3gPG/0ADx//eA8v/6wPN/+sDzv/rA9j/6wPa/+sD3P/rA+D/6APi/+gD5P/oA+v/6wPu/0AD7//eA/D/QAPx/94D8v9AA/P/3gP0/0AD9f/eA/b/QAP3/94D+P9AA/n/3gP6/0AD+//eA/z/QAP9/94D/v9AA///3gQA/0AEAf/eBAL/QAQD/94EBP9ABAX/3gQH/+sECf/rBAv/6wQN/+sED//rBBH/6wQT/+sEFf/rBBv/6wQd/+sEH//rBCH/6wQj/+sEJf/rBCf/6wQp/+sEK//rBC3/6wQv/+sEMf/rBDP/6gQ1/+oEN//qBDn/6gQ7/+oEPf/qBD//6gRB/+gEQ//oBEX/6ARMABQAIAA4/98AOv/kADv/7AA9/90A0f/fANX/3wEY/+QBMv/fATr/3wG6AA4CZf/dAtr/3wLc/98C3v/fAuz/7ALu/90C8P/dA1f/3QNm/90Daf/dA43/3wOf/+wDof/sA6P/7AOl/90Dtv/kA77/3QRA/90EQv/dBET/3QRM/98Eaf/dABoAOP/OADr/7QA9/9AA0f/OANX/zgEY/+0BMv/OATr/zgJl/9AC2v/OAtz/zgLe/84C7v/QAvD/0ANX/9ADZv/QA2n/0AON/84Dpf/QA7b/7QO+/9AEQP/QBEL/0ARE/9AETP/OBGn/0AAQAC7/7gA5/+4CYf/uAmL/7gJj/+4CZP/uArH/7gLg/+4C4v/uAuT/7gLm/+4C6P/uAur/7gN+/+4EMv/uBDT/7gBKAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCT/+gAmP/oALr/6ADH/+gAyP/oAPb/6AEC/+gBHf/oASH/6AE5/+gBS//oAUz/6AFW/+gBbAAQAW0AEAFvABABcAAQAXEAEAJt/+gCbv/oAm//6AJw/+gCcf/oAon/6AKL/+gCjf/oAo//6AKR/+gCk//oApX/6AKX/+gCmf/oApv/6AKd/+gCn//oAqH/6AKj/+gDav/oA5D/6AOU/+gDl//oA6cAEAOoABADqwAQA7L/6AO4/+gDvf/oA8v/6APN/+gDzv/oA9r/6APr/+gEB//oBAn/6AQL/+gEDf/oBA//6AQR/+gEE//oBBX/6AQp/+gEK//oBC3/6AQx/+gAAgD1/9YBbf+YAD0AR//sAEj/7ABJ/+wAS//sAFX/7ACT/+wAmP/sALr/7ADH/+wAyP/sAPb/7AEC/+wBHf/sASH/7AE5/+wBS//sAUz/7AFW/+wCbf/sAm7/7AJv/+wCcP/sAnH/7AKJ/+wCi//sAo3/7AKP/+wCkf/sApP/7AKV/+wCl//sApn/7AKb/+wCnf/sAp//7AKh/+wCo//sA2r/7AOQ/+wDlP/sA5f/7AOy/+wDuP/sA73/7APL/+wDzf/sA87/7APa/+wD6//sBAf/7AQJ/+wEC//sBA3/7AQP/+wEEf/sBBP/7AQV/+wEKf/sBCv/7AQt/+wEMf/sABgAU//iARf/4gFtABgCd//iAnj/4gJ5/+ICev/iAnv/4gLF/+ICx//iAsn/4gNw/+IDdv/iA5L/4gPY/+ID3P/iBBv/4gQd/+IEH//iBCH/4gQj/+IEJf/iBCf/4gQv/+IABgAQ/4QAEv+EAW7/hAFy/4QBdv+EAXf/hAAQAC7/7AA5/+wCYf/sAmL/7AJj/+wCZP/sArH/7ALg/+wC4v/sAuT/7ALm/+wC6P/sAur/7AN+/+wEMv/sBDT/7AAeAAb/8gAL//IAWv/zAF3/8wC8//MA9f/1ARn/8wFs//IBbf/yAW//8gFw//IBcf/yAoD/8wKB//MC7//zA3L/8wOV//MDnv/zA6b/8wOn//IDqP/yA6v/8gO3//MDv//zA+D/8wPi//MD5P/zBEH/8wRD//MERf/zAD4AJ//zACv/8wAz//MANf/zAIP/8wCS//MAl//zALL/8wDDAA0A0v/zAQf/8wEW//MBGv/zARz/8wEe//MBIP/zATj/8wFV//MCKP/zAin/8wIr//MCLP/zAlL/8wJc//MCXf/zAl7/8wJf//MCYP/zAoj/8wKK//MCjP/zAo7/8wKc//MCnv/zAqD/8wKi//MCxP/zAsb/8wLI//MC+f/zA1b/8wNj//MDif/zA4z/8wO5//MDvP/zA9f/8wPZ//MD2//zBBr/8wQc//MEHv/zBCD/8wQi//MEJP/zBCb/8wQo//MEKv/zBCz/8wQu//MEMP/zBKn/8wA/ACf/5gAr/+YAM//mADX/5gCD/+YAkv/mAJf/5gCy/+YAt//CAMMAEADS/+YBB//mARb/5gEa/+YBHP/mAR7/5gEg/+YBOP/mAVX/5gIo/+YCKf/mAiv/5gIs/+YCUv/mAlz/5gJd/+YCXv/mAl//5gJg/+YCiP/mAor/5gKM/+YCjv/mApz/5gKe/+YCoP/mAqL/5gLE/+YCxv/mAsj/5gL5/+YDVv/mA2P/5gOJ/+YDjP/mA7n/5gO8/+YD1//mA9n/5gPb/+YEGv/mBBz/5gQe/+YEIP/mBCL/5gQk/+YEJv/mBCj/5gQq/+YELP/mBC7/5gQw/+YEqf/mADcAJf/kADz/0gA9/9MAsf/kALP/5ADD/+IA2f/SAQz/5AJL/+QCTP/kAk3/5AJO/+QCT//kAlD/5AJR/+QCZf/TAoL/5AKE/+QChv/kAu7/0wLw/9MDUv/kA1f/0wNa/+QDZv/TA2f/0gNp/9MDgv/kA47/0gOl/9MDrv/kA77/0wPB/9IDxP/kA8b/5APP/9ID6f/SA+7/5APw/+QD8v/kA/T/5AP2/+QD+P/kA/r/5AP8/+QD/v/kBAD/5AQC/+QEBP/kBED/0wRC/9MERP/TBE7/0gRW/9IEaf/TACcAEP9GABL/RgAl/80Asf/NALP/zQDG//IBDP/NAW7/RgFy/0YBdv9GAXf/RgJL/80CTP/NAk3/zQJO/80CT//NAlD/zQJR/80Cgv/NAoT/zQKG/80DUv/NA1r/zQOC/80Drv/NA8T/zQPG/80D7v/NA/D/zQPy/80D9P/NA/b/zQP4/80D+v/NA/z/zQP+/80EAP/NBAL/zQQE/80AAQDDAA4ArwBH/9wASP/cAEn/3ABL/9wAUf/BAFL/wQBT/9YAVP/BAFX/3ABZ/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAL7/5gDA/8EAwf/rAML/6QDE//AAxf/nAMf/3ADI/9wAyf/jAMr/3QDL/84AzP/UAM3/2wDr/8EA7//BAPD/wQDy/8EA8//BAPT/wQD2/9wA9//BAPn/wQD6/8EA/f/BAP//wQEC/9wBBP/BARf/1gEZ/+EBHf/cASH/3AE1/8EBOf/cAUT/wQFJ/8EBS//cAUz/3AFW/9wCbf/cAm7/3AJv/9wCcP/cAnH/3AJ2/8ECd//WAnj/1gJ5/9YCev/WAnv/1gJ8/90Cff/dAn7/3QJ//90CgP/hAoH/4QKJ/9wCi//cAo3/3AKP/9wCkf/cApP/3AKV/9wCl//cApn/3AKb/9wCnf/cAp//3AKh/9wCo//cAr7/wQLA/8ECwv/BAsP/wQLF/9YCx//WAsn/1gLh/90C4//dAuX/3QLn/90C6f/dAuv/3QLv/+EDav/cA2z/wQNu/90DcP/WA3L/4QN1/90Ddv/WA3f/3QOQ/9wDkf/BA5L/1gOT/8EDlP/cA5X/4QOX/9wDmP/BA53/wQOe/+EDpv/hA63/wQOy/9wDs//BA7f/4QO4/9wDvf/cA7//4QPL/9wDzf/cA87/3APU/8ED1v/BA9j/1gPa/9wD3P/WA+D/4QPi/+ED5P/hA+j/wQPr/9wEB//cBAn/3AQL/9wEDf/cBA//3AQR/9wEE//cBBX/3AQb/9YEHf/WBB//1gQh/9YEI//WBCX/1gQn/9YEKf/cBCv/3AQt/9wEL//WBDH/3AQz/90ENf/dBDf/3QQ5/90EO//dBD3/3QQ//90EQf/hBEP/4QRF/+EESf/BBEv/wQRV/8EEYv/BBGT/wQRm/8EAdgAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADB/+wAwwAPAMX/6gDH//AAyP/wAMn/zgDK/+8Ay//nAPb/8AEC//ABGf/cAR3/8AEh//ABOf/wAUv/8AFM//ABVv/wAWz/2gFt/9oBb//aAXD/2gFx/9oCbf/wAm7/8AJv//ACcP/wAnH/8AJ8/+8Cff/vAn7/7wJ//+8CgP/cAoH/3AKJ//ACi//wAo3/8AKP//ACkf/wApP/8AKV//ACl//wApn/8AKb//ACnf/wAp//8AKh//ACo//wAuH/7wLj/+8C5f/vAuf/7wLp/+8C6//vAu//3ANq//ADbv/vA3L/3AN1/+8Dd//vA5D/8AOU//ADlf/cA5f/8AOe/9wDpv/cA6f/2gOo/9oDq//aA7L/8AO3/9wDuP/wA73/8AO//9wDy//wA83/8APO//AD2v/wA+D/3APi/9wD5P/cA+v/8AQH//AECf/wBAv/8AQN//AED//wBBH/8AQT//AEFf/wBCn/8AQr//AELf/wBDH/8AQz/+8ENf/vBDf/7wQ5/+8EO//vBD3/7wQ//+8EQf/cBEP/3ARF/9wARAAQAAwAEgAMAEf/5wBI/+cASf/nAEv/5wBV/+cAk//nAJj/5wC6/+cAwwAPAMf/5wDI/+cA9v/nAQL/5wEd/+cBIf/nATn/5wFL/+cBTP/nAVb/5wFuAAwBcgAMAXYADAF3AAwCbf/nAm7/5wJv/+cCcP/nAnH/5wKJ/+cCi//nAo3/5wKP/+cCkf/nApP/5wKV/+cCl//nApn/5wKb/+cCnf/nAp//5wKh/+cCo//nA2r/5wOQ/+cDlP/nA5f/5wOy/+cDuP/nA73/5wPL/+cDzf/nA87/5wPa/+cD6//nBAf/5wQJ/+cEC//nBA3/5wQP/+cEEf/nBBP/5wQV/+cEKf/nBCv/5wQt/+cEMf/nAAYAyf/qAOz/7gD1/9UA/f/tATP/7AFY/+wAAQD1/8AAAQDJACAAfgAGAAwACwAMAEf/6ABI/+gASf/oAEoADABL/+gAU//qAFX/6ABaAAsAXQALAJP/6ACY/+gAuv/oALwACwDD/5AAxQALAMf/6ADI/+gAyQAMAPb/6AEC/+gBF//qARkACwEd/+gBIf/oATn/6AFL/+gBTP/oAVb/6AFsAAwBbQAMAW8ADAFwAAwBcQAMAbr/vwG8/+4BwP/sAcj/7QHK/+wBzP/1Ac0ADgHPAA0B0gANAm3/6AJu/+gCb//oAnD/6AJx/+gCd//qAnj/6gJ5/+oCev/qAnv/6gKAAAsCgQALAon/6AKL/+gCjf/oAo//6AKR/+gCk//oApX/6AKX/+gCmf/oApv/6AKd/+gCn//oAqH/6AKj/+gCxf/qAsf/6gLJ/+oC7wALA2r/6ANw/+oDcgALA3b/6gOQ/+gDkv/qA5T/6AOVAAsDl//oA54ACwOmAAsDpwAMA6gADAOrAAwDsv/oA7cACwO4/+gDvf/oA78ACwPL/+gDzf/oA87/6APY/+oD2v/oA9z/6gPgAAsD4gALA+QACwPr/+gEB//oBAn/6AQL/+gEDf/oBA//6AQR/+gEE//oBBX/6AQb/+oEHf/qBB//6gQh/+oEI//qBCX/6gQn/+oEKf/oBCv/6AQt/+gEL//qBDH/6ARBAAsEQwALBEUACwABAPX/4gANAFz/7QBe/+0A7f/tAPX/wALy/+0C9P/tAvb/7QOW/+0Dwv/tA9D/7QPq/+0ET//tBFf/7QAMAFz/8gBe//IA7f/yAvL/8gL0//IC9v/yA5b/8gPC//ID0P/yA+r/8gRP//IEV//yAB8AWv/0AFz/8gBd//QAXv/zALz/9ADt//IBGf/0AoD/9AKB//QC7//0AvL/8wL0//MC9v/zA3L/9AOV//QDlv/yA57/9AOm//QDt//0A7//9APC//ID0P/yA+D/9APi//QD5P/0A+r/8gRB//QEQ//0BEX/9ARP//IEV//yAF0ABv/KAAv/ygA4/9IAOv/UADz/9AA9/9MAWv/mAFz/7wBd/+YAvP/mANH/0gDV/9IA2f/0AN3/7QDg/+EA5f/UAO3/7wD1/8kA/f/RAQj/5QEY/9QBGf/mAR//4wEy/9IBM//EATr/0gE8/+EBTf/UAU7/9QFP/+cBV/9kAVj/yQFs/8oBbf/KAW//ygFw/8oBcf/KAmX/0wKA/+YCgf/mAtr/0gLc/9IC3v/SAu7/0wLv/+YC8P/TA1f/0wNm/9MDZ//0A2n/0wNy/+YDgf/tA43/0gOO//QDlf/mA5b/7wOe/+YDpf/TA6b/5gOn/8oDqP/KA6v/ygO2/9QDt//mA77/0wO//+YDwf/0A8L/7wPP//QD0P/vA9//7QPg/+YD4f/tA+L/5gPj/+0D5P/mA+X/4QPp//QD6v/vBED/0wRB/+YEQv/TBEP/5gRE/9MERf/mBEz/0gRO//QET//vBFD/4QRS/+EEVv/0BFf/7wRp/9MAbAAG/8AAC//AADj/nQA6/8cAPP/wAD3/qwBR/9IAUv/SAFT/0gDA/9IA0f+dANP/9QDV/50A2f/wANz/9QDd/+oA4P/lAOX/wQDr/9IA7//SAPD/0gDy/9IA8//SAPT/0gD1/80A9//SAPn/0gD6/9IA/f/SAP//0gEE/9IBGP/HATL/nQEz/8wBNf/SATr/nQE8/+UBP//fAUT/0gFJ/9IBTf/OAU//6gFR//UBV/+eAVj/zgFs/8ABbf/AAW//wAFw/8ABcf/AAmX/qwJ2/9ICvv/SAsD/0gLC/9ICw//SAtr/nQLc/50C3v+dAu7/qwLw/6sDV/+rA2b/qwNn//ADaf+rA2z/0gOB/+oDjf+dA47/8AOR/9IDk//SA5j/0gOd/9IDpf+rA6f/wAOo/8ADq//AA63/0gOz/9IDtv/HA77/qwPB//ADz//wA9T/0gPW/9ID3//qA+H/6gPj/+oD5f/lA+j/0gPp//AD7P/1BED/qwRC/6sERP+rBEn/0gRL/9IETP+dBE7/8ARQ/+UEUv/lBFX/0gRW//AEYv/SBGT/0gRm/9IEZ//1BGn/qwBvAAb/sQAL/7EAOP+eADr/xQA8//IAPf+oAFH/zwBS/88AVP/PAFz/7wDA/88A0f+eANX/ngDZ//IA3f/sAOD/4QDl/8IA6//PAO3/7wDv/88A8P/PAPL/zwDz/88A9P/PAPX/xgD3/88A+f/PAPr/zwD9/88A///PAQT/zwEY/8UBMv+eATP/wAE1/88BOv+eATz/4QE//98BRP/PAUn/zwFN/80BT//oAVf/nwFY/8YBbP+xAW3/sQFv/7EBcP+xAXH/sQJl/6gCdv/PAr7/zwLA/88Cwv/PAsP/zwLa/54C3P+eAt7/ngLu/6gC8P+oA1f/qANm/6gDZ//yA2n/qANs/88Dgf/sA43/ngOO//IDkf/PA5P/zwOW/+8DmP/PA53/zwOl/6gDp/+xA6j/sQOr/7EDrf/PA7P/zwO2/8UDvv+oA8H/8gPC/+8Dz//yA9D/7wPU/88D1v/PA9//7APh/+wD4//sA+X/4QPo/88D6f/yA+r/7wRA/6gEQv+oBET/qARJ/88ES//PBEz/ngRO//IET//vBFD/4QRS/+EEVf/PBFb/8gRX/+8EYv/PBGT/zwRm/88Eaf+oAE0AOP++AFH/4QBS/+EAVP/hAFr/7wBd/+8AvP/vAMD/4QDR/74A1f++AOX/yQDr/+EA7//hAPD/4QDy/+EA8//hAPT/4QD1/98A9//hAPn/4QD6/+EA/f/hAP//4QEE/+EBCP/tARn/7wEf/+sBMv++ATP/3wE1/+EBOv++AT//6QFE/+EBSf/hAU7/9QFY/+ACdv/hAoD/7wKB/+8Cvv/hAsD/4QLC/+ECw//hAtr/vgLc/74C3v++Au//7wNs/+EDcv/vA43/vgOR/+EDk//hA5X/7wOY/+EDnf/hA57/7wOm/+8Drf/hA7P/4QO3/+8Dv//vA9T/4QPW/+ED4P/vA+L/7wPk/+8D6P/hBEH/7wRD/+8ERf/vBEn/4QRL/+EETP++BFX/4QRi/+EEZP/hBGb/4QBkADj/5gA6/+cAPP/yAD3/5wBR/9YAUv/WAFT/1gBc//EAwP/WANH/5gDV/+YA2f/yAN3/7gDg/+gA5f/mAOv/1gDt//EA7//WAPD/1gDy/9YA8//WAPT/1gD1/9AA9//WAPn/1gD6/9YA/f/WAP//1gEE/9YBGP/nATL/5gEz/84BNf/WATr/5gE8/+gBRP/WAUn/1gFN/+cBT//tAVf/5gFY/9ACZf/nAnb/1gK+/9YCwP/WAsL/1gLD/9YC2v/mAtz/5gLe/+YC7v/nAvD/5wNX/+cDZv/nA2f/8gNp/+cDbP/WA4H/7gON/+YDjv/yA5H/1gOT/9YDlv/xA5j/1gOd/9YDpf/nA63/1gOz/9YDtv/nA77/5wPB//IDwv/xA8//8gPQ//ED1P/WA9b/1gPf/+4D4f/uA+P/7gPl/+gD6P/WA+n/8gPq//EEQP/nBEL/5wRE/+cESf/WBEv/1gRM/+YETv/yBE//8QRQ/+gEUv/oBFX/1gRW//IEV//xBGL/1gRk/9YEZv/WBGn/5wCTACUAEAAn/+gAK//oADP/6AA1/+gAOP/gADr/4AA9/98Ag//oAJL/6ACX/+gAsQAQALL/6ACzABAA0f/gANL/6ADTABAA1f/gANgAFADcABAA4P/hAOX/4ADsABMA8QAQAPj/4AEDABABB//oAQwAEAEW/+gBGP/gARr/6AEc/+gBHv/oASD/6AEy/+ABOP/oATr/4AE8/+EBPf/gAUD/4QFF/+kBTf/fAU//3gFRABABVf/oAVf/3wFZ//ICKP/oAin/6AIr/+gCLP/oAksAEAJMABACTQAQAk4AEAJPABACUAAQAlEAEAJS/+gCXP/oAl3/6AJe/+gCX//oAmD/6AJl/98CggAQAoQAEAKGABACiP/oAor/6AKM/+gCjv/oApz/6AKe/+gCoP/oAqL/6ALE/+gCxv/oAsj/6ALa/+AC3P/gAt7/4ALu/98C8P/fAvn/6ANSABADVv/oA1f/3wNaABADY//oA2b/3wNp/98DggAQA4n/6AOM/+gDjf/gA6X/3wOuABADtv/gA7n/6AO8/+gDvv/fA8QAEAPGABAD1//oA9n/6APb/+gD5f/hA+b/4APsABAD7QAQA+4AEAPwABAD8gAQA/QAEAP2ABAD+AAQA/oAEAP8ABAD/gAQBAAAEAQCABAEBAAQBBr/6AQc/+gEHv/oBCD/6AQi/+gEJP/oBCb/6AQo/+gEKv/oBCz/6AQu/+gEMP/oBED/3wRC/98ERP/fBEz/4ARQ/+EEUf/gBFL/4QRT/+AEZwAQBGgAEARp/98Eqf/oADIAG//yADj/8QA6//QAPP/0AD3/8ADR//EA0//1ANX/8QDZ//QA3P/1AN3/8wDl//EBGP/0ATL/8QE6//EBTf/yAU//8gFR//UBV//yAmX/8ALa//EC3P/xAt7/8QLu//AC8P/wA1f/8ANm//ADZ//0A2n/8AOB//MDjf/xA47/9AOl//ADtv/0A77/8APB//QDz//0A9//8wPh//MD4//zA+n/9APs//UEQP/wBEL/8ARE//AETP/xBE7/9ARW//QEZ//1BGn/8ABmACUADwA4/+YAOv/mADwADgA9/+YAsQAPALMADwDR/+YA0wAOANX/5gDYABMA2QAOANwADgDdAAsA4P/lAOX/5gDm//QA7AASAPEADwD1/+cA+P/oAP3/5wEDAA8BDAAPARj/5gEy/+YBM//nATr/5gE8/+UBPf/oAU3/5gFP/+YBUQAOAVf/5gFY/+cCSwAPAkwADwJNAA8CTgAPAk8ADwJQAA8CUQAPAmX/5gKCAA8ChAAPAoYADwLa/+YC3P/mAt7/5gLu/+YC8P/mA1IADwNX/+YDWgAPA2b/5gNnAA4Daf/mA4EACwOCAA8Djf/mA44ADgOl/+YDrgAPA7b/5gO+/+YDwQAOA8QADwPGAA8DzwAOA98ACwPhAAsD4wALA+X/5QPm/+gD6QAOA+wADgPtAA8D7gAPA/AADwPyAA8D9AAPA/YADwP4AA8D+gAPA/wADwP+AA8EAAAPBAIADwQEAA8EQP/mBEL/5gRE/+YETP/mBE4ADgRQ/+UEUf/oBFL/5QRT/+gEVgAOBGcADgRoAA8Eaf/mADcABv+/AAv/vwA4/58AOv/JAD3/rQDR/58A1f+fAN3/7ADg/+YA5f/EAPX/zQD9/9UBGP/JATL/nwEz/8wBOv+fATz/5gE//98BTf/RAU//7AFX/6EBWP/PAWz/vwFt/78Bb/+/AXD/vwFx/78CZf+tAtr/nwLc/58C3v+fAu7/rQLw/60DV/+tA2b/rQNp/60Dgf/sA43/nwOl/60Dp/+/A6j/vwOr/78Dtv/JA77/rQPf/+wD4f/sA+P/7APl/+YEQP+tBEL/rQRE/60ETP+fBFD/5gRS/+YEaf+tADAAOP/jADz/5QA9/+QA0f/jANP/5QDV/+MA2P/iANn/5QDc/+UA3f/pAPH/6gED/+oBMv/jATr/4wFR/+UBV//kAmX/5ALa/+MC3P/jAt7/4wLu/+QC8P/kA1f/5ANm/+QDZ//lA2n/5AOB/+kDjf/jA47/5QOl/+QDvv/kA8H/5QPP/+UD3//pA+H/6QPj/+kD6f/lA+z/5QPt/+oEQP/kBEL/5ARE/+QETP/jBE7/5QRW/+UEZ//lBGj/6gRp/+QAIwA4/+IAPP/kANH/4gDT/+QA1f/iANj/4QDZ/+QA3P/kAN3/6QDs/+QA8f/rAQP/6wEy/+IBOv/iAVH/5ALa/+IC3P/iAt7/4gNn/+QDgf/pA43/4gOO/+QDwf/kA8//5APf/+kD4f/pA+P/6QPp/+QD7P/kA+3/6wRM/+IETv/kBFb/5ARn/+QEaP/rABcAOP/rAD3/8wDR/+sA1f/rATL/6wE6/+sCZf/zAtr/6wLc/+sC3v/rAu7/8wLw//MDV//zA2b/8wNp//MDjf/rA6X/8wO+//MEQP/zBEL/8wRE//METP/rBGn/8wA2AFH/7wBS/+8AVP/vAFz/8ADA/+8A6//vAOz/7gDt//AA7//vAPD/7wDy/+8A8//vAPT/7wD1/+4A9//vAPn/7wD6/+8A/f/vAP//7wEE/+8BCP/0AR//8QEz/+8BNf/vAUT/7wFJ/+8BWP/vAnb/7wK+/+8CwP/vAsL/7wLD/+8DbP/vA5H/7wOT/+8Dlv/wA5j/7wOd/+8Drf/vA7P/7wPC//AD0P/wA9T/7wPW/+8D6P/vA+r/8ARJ/+8ES//vBE//8ARV/+8EV//wBGL/7wRk/+8EZv/vACIABv/yAAv/8gBa//UAXf/1ALz/9QD1//QA/f/0AQj/9QEZ//UBM//1AVj/9QFs//IBbf/yAW//8gFw//IBcf/yAoD/9QKB//UC7//1A3L/9QOV//UDnv/1A6b/9QOn//IDqP/yA6v/8gO3//UDv//1A+D/9QPi//UD5P/1BEH/9QRD//UERf/1ADIAUf/uAFL/7gBU/+4AwP/uAOv/7gDsABQA7//uAPD/7gDy/+4A8//uAPT/7gD1/+0A9//uAPj/7QD5/+4A+v/uAPv/0AD9/+4A///uAQT/7gEz/+0BNf/uAT3/7QFE/+4BSf/uAVj/7QJ2/+4Cvv/uAsD/7gLC/+4Cw//uA2z/7gOR/+4Dk//uA5j/7gOd/+4Drf/uA7P/7gPU/+4D1v/uA+b/7QPo/+4ESf/uBEv/7gRR/+0EU//tBFX/7gRi/+4EZP/uBGb/7gAKAAb/9QAL//UBbP/1AW3/9QFv//UBcP/1AXH/9QOn//UDqP/1A6v/9QBZAEf/8ABI//AASf/wAEv/8ABT/8cAVf/wAJP/8ACY//AAuv/wAMf/8ADI//AA9v/wAQL/8AEX/8cBG//rAR3/8AEh//ABOf/wAUv/8AFM//ABVv/wAbz/6wHA/+kByP/rAcr/6wJt//ACbv/wAm//8AJw//ACcf/wAnf/xwJ4/8cCef/HAnr/xwJ7/8cCif/wAov/8AKN//ACj//wApH/8AKT//AClf/wApf/8AKZ//ACm//wAp3/8AKf//ACof/wAqP/8ALF/8cCx//HAsn/xwNq//ADcP/HA3b/xwOQ//ADkv/HA5T/8AOX//ADsv/wA7j/8AO9//ADy//wA83/8APO//AD2P/HA9r/8APc/8cD6//wBAf/8AQJ//AEC//wBA3/8AQP//AEEf/wBBP/8AQV//AEG//HBB3/xwQf/8cEIf/HBCP/xwQl/8cEJ//HBCn/8AQr//AELf/wBC//xwQx//AAoQAGAA0ACwANAEX/8ABH/8AASP/AAEn/wABKAA0AS//AAFP/4gBV/8AAWgALAF0ACwCT/8AAmP/AALr/wAC8AAsAxv/WAMf/wADI/8AAy//VAOz/yADx/9cA9v/AAQL/wAED/9cBF//iARkACwEb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AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCwALMAKAC8ALwALADAAMAALQDGAMYALgDTANQALwDWANYAMQDZANkAMgDbAN0AMwDfAN8ANgDhAOEANwDjAOMAOADlAOUAOQDrAOsAOgDtAO0AOwD2APYAPAD7APsAPQD9AP4APgEDAQQAQAEJAQkAQgEMAQwAQwEXARkARAErAS0ARwEwATAASgEyATIASwFJAUkATAFsAXIATQF2AXcAVAIoAigAVgIqAisAVwJGAkcAWQJJAkkAWwJLAnEAXAJ2AnsAgwKAApAAiQKSApsAmgKkAqYApAKoAqgApwKqAqoAqAKsAqwAqQKuAq4AqgKxArEAqwKzArMArAK1ArUArQK3ArcArgK5ArkArwK7ArsAsAK9AskAsQLLAssAvgLNAs0AvwLPAs8AwALaAtoAwQLcAtwAwgLeAt4AwwLgAuAAxALiAuIAxQLkAuQAxgLmAuYAxwLoAugAyALqAuoAyQLsAuwAygLuAvYAywNSA1cA1ANaA2kA2gNsA2wA6gNwA3AA6wNyA3IA7AN2A3YA7QN5A3oA7gN8A4UA8AOHA4kA+gOLA5AA/QOSA5gBAwOeA58BCgOhA6EBDAOjA6MBDQOlA6gBDgOrA7ABEgOyA7IBGAO2A7cBGQO8A8cBGwPKA8sBJwPNA9ABKQPXA9gBLQPcA9wBLwPeA+QBMAPpA+oBNwPuBBYBOQQYBBgBYgQaBCcBYwQvBC8BcQQyBDIBcgQ0BDQBcwRABEUBdARIBEgBegRKBEoBewRMBEwBfAROBE8BfQRUBFcBfwRaBFoBgwRcBF0BhARfBF8BhgRjBGMBhwRlBGUBiARpBGkBiQSpBKkBigACAU4AEAAQAAEAEgASAAEAJQAlAAIAJgAmAAMAJwAnAAQAKAAoAAUAKQApAAYALAAtAAcALgAuAAgALwAvAAkAMAAwAAoAMQAyAAcAMwAzAAUANAA0AAsAOAA4AAwAOQA5AAgAOgA6AA0AOwA7AA4APAA8AA8APQA9ABAAPgA+ABEARQBFABIARgBGABMARwBHABQASQBJABUATABMABYAUQBSABYAUwBTABcAVABUABMAVgBWABgAWgBaABkAXABcABoAXQBdABkAXgBeABsAigCKABMAsACwABwAsQCxAAIAsgCyAAUAswCzAAIAvAC8ABkAwADAABYAxgDGABMA0wDUAB0A1gDWAAcA2QDZAA8A2wDcAAcA3QDdAB4A3wDfAAcA4QDhAAcA4wDjAB0A5QDlAB0A6wDrAB8A7QDtABoA9gD2ABMA+wD7ACAA/QD9ACAA/gD+ABMBAwEEACABCQEJACABDAEMAAIBFwEXABcBGAEYAA0BGQEZABkBKwErABMBLAEsABwBLQEtAB8BMAEwAAkBMgEyAAkBSQFJAB8BbgFuAAEBcgFyAAEBdgF3AAECKAIoAAQCKgIrAAUCRgJHAAUCSQJJAAwCSwJRAAICUgJSAAQCUwJWAAYCVwJbAAcCXAJgAAUCYQJkAAgCZQJlABACZgJsABICbQJtABQCbgJxABUCdgJ2ABYCdwJ7ABcCgAKBABkCggKCAAICgwKDABIChAKEAAIChQKFABIChgKGAAIChwKHABICiAKIAAQCiQKJABQCigKKAAQCiwKLABQCjAKMAAQCjQKNABQCjgKOAAQCjwKPABQCkAKQAAUCkgKSAAYCkwKTABUClAKUAAYClQKVABUClgKWAAYClwKXABUCmAKYAAYCmQKZABUCmgKaAAYCmwKbABUCpAKkAAcCpQKlABYCpgKmAAcCqAKoAAcCqgKqAAcCrAKsAAcCrgKuAAcCsQKxAAgCswKzAAkCtQK1AAoCtwK3AAoCuQK5AAoCuwK7AAoCvQK9AAcCvgK+ABYCvwK/AAcCwALAABYCwQLBAAcCwgLDABYCxALEAAUCxQLFABcCxgLGAAUCxwLHABcCyALIAAUCyQLJABcCywLLABgCzQLNABgCzwLPABgC2gLaAAwC3ALcAAwC3gLeAAwC4ALgAAgC4gLiAAgC5ALkAAgC5gLmAAgC6ALoAAgC6gLqAAgC7ALsAA4C7gLuABAC7wLvABkC8ALwABAC8QLxABEC8gLyABsC8wLzABEC9AL0ABsC9QL1ABEC9gL2ABsDUgNSAAIDUwNTAAYDVANVAAcDVgNWAAUDVwNXABADWgNaAAIDWwNbAAMDXANcAAYDXQNdABEDXgNfAAcDYANgAAkDYQNiAAcDYwNjAAUDZANkAAsDZQNlAAwDZgNmABADZwNnAA8DaANoAAcDaQNpABADbANsABYDcANwABcDcgNyABkDdgN2ABcDeQN5AAYDegN6ABwDfAN9AAcDfgN+AAgDfwOAAAkDgQOBAB4DggOCAAIDgwODAAMDhAOEABwDhQOFAAYDhwOIAAcDiQOJAAUDiwOLAAsDjAOMAAQDjQONAAwDjgOOAA8DjwOPABIDkAOQABUDkgOSABcDkwOTABMDlAOUABQDlQOVABkDlgOWABoDlwOXABUDmAOYAB8DngOeABkDnwOfAA4DoQOhAA4DowOjAA4DpQOlABADpgOmABkDrAOsAAcDrQOtABYDrgOuAAIDrwOvABIDsAOwAAYDsgOyABUDtgO2AA0DtwO3ABkDvAO8AAQDvQO9ABQDvgO+ABADvwO/ABkDwAPAAAcDwQPBAA8DwgPCABoDwwPDAAcDxAPEAAIDxQPFABIDxgPGAAIDxwPHABIDygPKAAYDywPLABUDzQPOABUDzwPPAA8D0APQABoD1wPXAAUD2APYABcD3APcABcD3gPeABMD3wPfAB4D4APgABkD4QPhAB4D4gPiABkD4wPjAB4D5APkABkD6QPpAA8D6gPqABoD7gPuAAID7wPvABID8APwAAID8QPxABID8gPyAAID8wPzABID9AP0AAID9QP1ABID9gP2AAID9wP3ABID+AP4AAID+QP5ABID+gP6AAID+wP7ABID/AP8AAID/QP9ABID/gP+AAID/wP/ABIEAAQAAAIEAQQBABIEAgQCAAIEAwQDABIEBAQEAAIEBQQFABIEBgQGAAYEBwQHABUECAQIAAYECQQJABUECgQKAAYECwQLABUEDAQMAAYEDQQNABUEDgQOAAYEDwQPABUEEAQQAAYEEQQRABUEEgQSAAYEEwQTABUEFAQUAAYEFQQVABUEFgQWAAcEGAQYAAcEGgQaAAUEGwQbABcEHAQcAAUEHQQdABcEHgQeAAUEHwQfABcEIAQgAAUEIQQhABcEIgQiAAUEIwQjABcEJAQkAAUEJQQlABcEJgQmAAUEJwQnABcELwQvABcEMgQyAAgENAQ0AAgEQARAABAEQQRBABkEQgRCABAEQwRDABkERAREABAERQRFABkESARIAAkESgRKAAcETARMAAwETgROAA8ETwRPABoEVARUABwEVQRVAB8EVgRWAA8EVwRXABoEWgRaABYEXARcAB0EXQRdABwEXwRfAAkEYwRjAAcEZQRlAAcEaQRpABAEqQSpAAUAAgFtAAYABgABAAsACwABABAAEAAWABEAEQAZABIAEgAWACUAJQACACcAJwAIACsAKwAIAC4ALgAaADMAMwAIADUANQAIADcANwAbADgAOAAJADkAOQAKADoAOgALADsAOwAMADwAPAAXAD0APQANAD4APgAYAEUARQADAEcASQAEAEsASwAEAFEAUgAFAFMAUwAGAFQAVAAFAFUAVQAEAFcAVwAHAFkAWQAOAFoAWgAPAFwAXAAcAF0AXQAPAF4AXgAQAIMAgwAIAJIAkgAIAJMAkwAEAJcAlwAIAJgAmAAEAJoAmgAOALEAsQACALIAsgAIALMAswACALoAugAEALwAvAAPAMAAwAAFAMcAyAAEAMoAygAOANEA0QAJANIA0gAIANMA0wARANUA1QAJANkA2QAXANwA3AARAN0A3QAVAOAA4AASAOsA6wAFAO0A7QAcAO8A8AAFAPEA8QATAPIA9AAFAPYA9gAEAPcA9wAFAPgA+AAUAPkA+gAFAP0A/QAFAP8A/wAFAQIBAgAEAQMBAwATAQQBBAAFAQcBBwAIAQwBDAACARYBFgAIARcBFwAGARgBGAALARkBGQAPARoBGgAIARwBHAAIAR0BHQAEAR4BHgAIASABIAAIASEBIQAEATIBMgAJATUBNQAFATgBOAAIATkBOQAEAToBOgAJAUQBRAAFAUkBSQAFAUsBTAAEAVEBUQARAVUBVQAIAVYBVgAEAWkBagAZAWwBbQABAW4BbgAWAW8BcQABAXIBcgAWAXYBdwAWAigCKQAIAisCLAAIAkUCRQAZAksCUQACAlICUgAIAlwCYAAIAmECZAAKAmUCZQANAmYCbAADAm0CcQAEAnYCdgAFAncCewAGAnwCfwAOAoACgQAPAoICggACAoMCgwADAoQChAACAoUChQADAoYChgACAocChwADAogCiAAIAokCiQAEAooCigAIAosCiwAEAowCjAAIAo0CjQAEAo4CjgAIAo8CjwAEApECkQAEApMCkwAEApUClQAEApcClwAEApkCmQAEApsCmwAEApwCnAAIAp0CnQAEAp4CngAIAp8CnwAEAqACoAAIAqECoQAEAqICogAIAqMCowAEArECsQAaAr4CvgAFAsACwAAFAsICwwAFAsQCxAAIAsUCxQAGAsYCxgAIAscCxwAGAsgCyAAIAskCyQAGAtAC0AAbAtEC0QAH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ALgAuWMyc2MEWGMyc2MEXmMyc2MEZGMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGRsaWcEeGRsaWcEfmRsaWcEhGRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRub20EkGRub20ElmRub20EnGRub20EomRub20EomRub20EomRub20EomRub20EomRub20EomRub20EomZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGxpZ2EEsmxpZ2EEumxudW0EwGxudW0ExmxudW0EzGxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxvY2wE2GxvY2wE3mxvY2wE5G51bXIE6m51bXIE8G51bXIE9m51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G9udW0FAm9udW0FCG9udW0FDm9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFHBudW0FGnBudW0FIHBudW0FJnBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHNtY3AFMnNtY3AFOHNtY3AFPnNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNzMDEFSnNzMDEFUHNzMDEFVnNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDIFYnNzMDIFaHNzMDIFbnNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDMFenNzMDMFgHNzMDMFhnNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDQFknNzMDQFmHNzMDQFnnNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDUFqnNzMDUFsHNzMDUFtnNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDYFwnNzMDYFyHNzMDYFznNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDcF2nNzMDcF4HNzMDcF5nNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HRudW0F8nRudW0F+HRudW0F/nRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBAAAAAEAAQAAAAEAAwAAAAEAAgAAAAEAAAAAAAIACAAJAAAAAQAOAAAAAQAQAAAAAQAPAAAAAQANAAAAAQBDAAAAAQBFAAAAAQBEAAAAAQBCAAAAAwA/AEAAQQAAAAIAEQASAAAAAQASAAAAAQA8AAAAAQA+AAAAAQA9AAAAAQA7AAAAAQAKAAAAAQAMAAAAAQALAAAAAQBHAAAAAQBJAAAAAQBIAAAAAQBGAAAAAQAwAAAAAQAyAAAAAQAxAAAAAQAvAAAAAQA4AAAAAQA6AAAAAQA5AAAAAQA3AAAAAQAFAAAAAQAHAAAAAQAGAAAAAQAEAAAAAQAUAAAAAQAWAAAAAQAVAAAAAQATAAAAAQAYAAAAAQAaAAAAAQAZAAAAAQAXAAAAAQAcAAAAAQAeAAAAAQAdAAAAAQAbAAAAAQAgAAAAAQAiAAAAAQAhAAAAAQAfAAAAAQAkAAAAAQAmAAAAAQAlAAAAAQAjAAAAAQAoAAAAAQAqAAAAAQApAAAAAQAnAAAAAQAsAAAAAQAuAAAAAQAtAAAAAQArAAAAAQA0AAAAAQA2AAAAAQA1AAAAAQAzAEsAmACYAJgAmAQmBCYEJgQmBxQHwA5QDlAOZg6IDogOiA6IDr4O5A8SDxIPEg8SDyYPJg8mDyYPOg86DzoPOg9OD04PTg9OD2APYA9gD2APeg96D3oPeg+8D7wPvA+8D9oP2g/aD9oP+A/4D/gP+BAqECoQKhAqEFwQXBBcEFwQjhCiENoQzBDMEMwQzBDaENoQ2hDaEQYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCQwI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTcAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRQNEA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUB/wTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNcE2ATaAhoE2wIOBNYCEwINBNkCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkYCRwJJAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAoIChAKGAogCigKMAo4CkAKSApQClgKYApoCnAKeAqACogKkAqYCqAKqAqwCrgKxArMCtQK3ArkCuwK9Ar8CwQLEAsYCyALKAswCzgLQAtIC1ALYAtoC3ALeAuAC4gLkAuYC6ALqAuwC7gLwAvEC8wL1A1IDUwNUA1UDVgNXA1gDWgNbA1wDXQNeA18DYANhA2MDZANlA2YDZwNoA2kDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgO6A7wDvgPTA9kD3wRIBEoETgRWBFgEXQRpAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAvwDLwI7AfoEyQTKAfsB/AH9Af4B/wIABM0EzgTQBNME3AICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYA04DGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRQNEA0YDRwNIA0kDSgNLA0wDTQNPA1ADUQTIBMsEzATPBNEE0gIBBNQEwATBBMIEwwTEBMUExgTHBNUE1wTYAhgE2gIaBNsC+wIOBNYCEwINBNkCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSgJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CsgK0ArYCuAK6ArwCvgLAAsICxQLHAskCywLNAs8C0QLTAtUC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8gL0AvYDjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngO7A70DvwPNA9QD2gPgBEYESQRLBE8EVwRZBFoEXgRqAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAABKAAEAAQBNAAMAAAABABIAAQB4AAEAAABKAAEAAQBOAAMAAAABABIAAQBgAAEAAABKAAEAAQKtAAMAAAABABIAAQBIAAEAAABKAAEAAQOaAAMAAAABABIAAQAwAAEAAABKAAEAAQOcAAMAAAABABIAAQAYAAEAAABKAAEAAQQZAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCSwACAKcCTAACAKgCTgACAKkD8AACAKoEegACAKsD7gACAKwAAQAEBIcAAgCsAAEABAKIAAIAqAACAAYADASJAAIArASLAAIBogAGAA4AFAAaACAAJgAsAlMAAgCnAlQAAgCoBAoAAgCpBAgAAgCqBHwAAgCrBAYAAgCsAAIABgAMBHYAAgCoAqIAAgGiAAEABASNAAIArAAGAA4AFAAaACAAJgAsAlcAAgCnAlgAAgCoAqYAAgCpBBYAAgCqBH4AAgCrBBgAAgCsAAMACAAOABQEjwACAKgEkQACAKwCswACAaIAAwAIAA4AFAK1AAIAqASTAAIArAK3AAIBogACAAYADAOsAAIAqASVAAIArAAFAAwAEgAYAB4AJAR4AAIApwK9AAIAqAJbAAIAqQSXAAIArAK/AAIBogAGAA4AFAAaACAAJgAsAlwAAgCnAl0AAgCoAl8AAgCpBBwAAgCqBIAAAgCrBBoAAgCsAAEABASZAAIAqAAEAAoAEAAWABwCygACAKgEggACAKsEmwACAKwCzAACAaIAAwAIAA4AFALQAAIAqASdAAIArALWAAIBogACAAYADASfAAIArALaAAIBogAGAA4AFAAaACAAJgAsAmEAAgCnAmIAAgCoAuAAAgCpBDQAAgCqBIQAAgCrBDIAAgCsAAIABgAMBKEAAgCpBKMAAgCsAAMACAAOABQDnwACAKcDoQACAKgEpQACAKwABQAMABIAGAAeACQDpQACAKcCZQACAKgERAACAKkEQgACAKoEQAACAKwAAgAGAAwC8QACAKgEpwACAKwABgAOABQAGgAgACYALAJmAAIApwJnAAIAqAJpAAIAqQPxAAIAqgR7AAIAqwPvAAIArAABAAQEiAACAKwAAQAEAokAAgCoAAIABgAMBIoAAgCsBIwAAgGiAAYADgAUABoAIAAmACwCbgACAKcCbwACAKgECwACAKkECQACAKoEfQACAKsEBwACAKwAAQAEBHcAAgCoAAEABASOAAIArAABAAQEGQACAKwAAwAIAA4AFASQAAIAqASSAAIArAK0AAIBogADAAgADgAUArYAAgCoBJQAAgCsArgAAgGiAAIABgAMA60AAgCoBJYAAgCsAAUADAASABgAHgAkBHkAAgCnAr4AAgCoAnYAAgCpBJgAAgCsAsAAAgGiAAYADgAUABoAIAAmACwCdwACAKcCeAACAKgCegACAKkEHQACAKoEgQACAKsEGwACAKwAAQAEBJoAAgCoAAQACgAQABYAHALLAAIAqASDAAIAqwScAAIArALNAAIBogADAAgADgAUAtEAAgCoBJ4AAgCsAtcAAgGiAAIABgAMBKAAAgCsAtsAAgGiAAYADgAUABoAIAAmACwCfAACAKcCfQACAKgC4QACAKkENQACAKoEhQACAKsEMwACAKwAAgAGAAwEogACAKkEpAACAKwAAwAIAA4AFAOgAAIApwOiAAIAqASmAAIArAAFAAwAEgAYAB4AJAOmAAIApwKAAAIAqARFAAIAqQRDAAIAqgRBAAIArAACAAYADALyAAIAqASoAAIArAABAAQC9wACAKgAAQAEAvkAAgCoAAEABAL4AAIAqAABAAQC+gACAKgABQAMABIAGAAeACQCcgACAKcCcwACAKgCpwACAKkEFwACAKoEfwACAKsABQAMABIAGAAeACQEKgACAKcEKAACAKgELgACAKkELAACAKoEMAACAKwABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQEOAACAKcENgACAKgEPAACAKkEOgACAKoEPgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwAAQAEBIYAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLUAtUAAQAAAAEACAACAA4ABATdBN4E3wTgAAEABAKGAocCmAKZAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiEBrgIjAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAa4AAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIgRwBHEEcgRzBHQEdQABAAAAAQAIAAIAFgAIBHUCIgRwBHEEcgRzAa0EdAABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAABKAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwThAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKtA5oDnAQZ",
+  "Roboto-MediumItalic.ttf": "AAEAAAARAQAABAAQR1BPUyEcbY8AAhQcAABZakdTVULEnLdcAAJtiAAAGXxPUy8yoQuw+wAAAZgAAABgY21hcNhuDxIAABpsAAAGXGN2dCAElytKAAAjUAAAAFZmcGdte/lhqwAAIMgAAAG8Z2FzcAAIABMAAhQQAAAADGdseWZgubUGAAAtcAAB42poZG14LxpP7wAAFYAAAATsaGVhZPi2qwsAAAEcAAAANmhoZWEM2xKRAAABVAAAACRobXR4rRqYNAAAAfgAABOIbG9jYSKZqcwAACOoAAAJxm1heHAHEgLZAAABeAAAACBuYW1lRuRz4wACENwAAAMUcG9zdP9hAGQAAhPwAAAAIHByZXAbsfg2AAAihAAAAMwAAQAAAAIAALDh6v1fDzz1ABsIAAAAAADE8BEuAAAAANDbTpf6Qf3VCXgIcwACAAkAAgAAAAAAAAABAAAHbP4MAAAJN/pB/mwJeAgAAbMAAAAAAAAAAAAAAAAE4gABAAAE4gCPABYAVgAFAAEAAAAAAA4AAAIAAfIABgABAAMEGQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAK/1AAIX8AAAAhAAAAAEdPT0cAAQAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwACAAIAACA5YAZAAKAAAACgAAAfkAAAH5AAACHwA3Ao4AoQTHADsEcwBCBb0AtQUAAC0BWgCQAr8AaALG/5QDeABnBF0APQG//4kClgA2AjUAMAMc/38EcwBgBHMA7wRzAAsEcwAmBHMACQRzAFoEcwBjBHMAhgRzADsEcwCOAhkAKwHi/5oD/AAyBGIAYgQUAC8D0ACVBvsAMgU0/6QE7wAnBRsAZQUcACcEbQAnBE0AJwVSAGsFjQAnAjsANQRZAAME7gAnBD0AJwbVACcFjAAnBWYAawUAACcFZgBkBOIAJwS5ACQEwACcBRkAWwUPAJsG3gC3BPP/wwTFAKEEtv/lAir/7wNIAKwCKv96A1sARAOK/3kCigDKBD0AIgRoABAEGgA4BGsAOwQ0ADsCygBfBHD/9wRZAA0CBQAfAfz/DAQXABECBQAfBssAEARbAA0EdQA5BGj/xwRyADsCxAAQBAsAHAKfADsEWgBKA+EAZAXOAHcD8f+5A9H/tQPx/+cCpAAwAf0AIAKk/5kFMgBbAfkAAAIY/+YEZQBMBJv/9gV8AAgExQBQAff/7ATc/9wDdADRBh4AXgOAAL4DzgBJBFUAgAKWADYGHgBeA8cA7wL9AOQEMwAbAukAVgLpAGcCkQDIBKH/3QPZAH0COwCeAgr/0wLpAOEDlQC+A84AAgWtALkGBgCxBjAAlgPQ/9IFNP+kBTT/pAU0/6QFNP+kBTT/pAU0/6QHVf+HBRsAZQRtACcEbQAnBG0AJwRtACcCOwA1AjsANQI7ADUCOwA1BTr//wWMACcFZgBrBWYAawVmAGsFZgBrBWYAawQtACMFZAAVBRkAWwUZAFsFGQBbBRkAWwTFAKEErwAnBMsAGwQ9ACIEPQAiBD0AIgQ9ACIEPQAiBD0AIgaXAA8EGgA4BDQAOwQ0ADsENAA7BDQAOwIUACICFAAiAhQAIgIUACIEjQBGBFsADQR1ADkEdQA5BHUAOQR1ADkEdQA5BHgAPQRvACoEWgBKBFoASgRaAEoEWgBKA9H/tQR+/80D0f+1BTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBRsAZQQaADgFGwBlBBoAOAUbAGUEGgA4BRsAZQQaADgFHAAnBQEAOwU6//8EiQA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADwEbQAnBDQAOwVSAGsEcP/3BVIAawRw//cFUgBrBHD/9wVSAGsEcP/3BY0AJwRZAA0FjgAuBHcAKwI7ADUCFAAUAjsANQIUAB8COwA1AhQAIgI7/44CBf92AjsANQIUACIGlAA1BAEAHwRZAAMCIP8PBO4AJwQXABEEfwAhBD0AJwIFAB8EPQAnAgX/ogQ9ACcCmwAfBD0AJwLhAB8ETAAhAkcAHwWMACcEWwANBYwAJwRbAA0FjAAnBFsADQRbAA0FcgAjBG8AEQVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQeDAFAHDQBCBOIAJwLEABAE4gAnAsT/nATiACcCxAAQBLkAJAQLABwEuQAkBAsAHAS5ACQECwAcBLkAJAQLABwEwACcAp8AOwTAAJwCxwA7BMAAnAKf/+IFGQBbBFoASgUZAFsEWgBKBRkAWwRaAEoFGQBbBFoASgUZAFsEWgBKBRkAWwRaAEoG3gC3Bc4AdwTFAKED0f+1BMUAoQS2/+UD8f/nBLb/5QPx/+cEtv/lA/H/5wIGAB4FaABOAsT/SgVpAFsEhQA2BYMAWwTWAEoCIP8PBVIAawRw//cFjAAnBFsADQU0/6QEPQAiB1X/hwaXAA8FZAAVBG8AKgU0/6QEPQAiBG0AJwQ0ADsCO//JAhT/fgVmAGsEdQA5BOIAJwLEAAcFGQBbBFoASgS5ACQECwAcBMAAnAKfADsCIP8PBCUANgG5AIoD0gECA54BDQPIAO8DawD+AgUBAgKnAPoCRf+oA8QA3gMRAKwCY//uAAr9VAAK/dcACvz2AAr91gAK/L8ACvygAlUBLgQlAOgFNP+kAjsAngTR/74F8f/GAp//ygV6ABgFKf9YBVAAHQKgAAsFNP+kBO8AJwRdAC4Fnf+qBG0AJwS2/+UFjQAnBVoAXgI7ADUE7gAnBRr/sgbVACcFjAAnBHcAAAVmAGsFjwAuBQAAJwR3/9wEwACcBMUAoQXLAFIE8//DBYkAdQU8AAkCOwA1BMUAoQRrAD4ESAAoBG8AEQKgAG4ESABXBGsAPgSr/+UD+QB3BG8AOARIACgEBQBmBG8AEQSHAGwCoABuBH8AIQRS/6gEof/dA+EAZAP+AD4EdQA5BNcAXQRv/8sEIQA7BHcAOAQXAG4ESABXBa0AMgPx/7kFpwA/BmsAVAKgAEwESABXBHUAOQRIAFcGawBUBJkAUARjAG0Ex/8kBkoAVwRtACcEbQAnBdoAkQRdAC4FOgBnBLkAJAI7ADUCOwA1BFkAAwhQ/8oIVwAuBjQAoATuACcFhwAnBO0AmwWJACUFNP+kBOsAIwTvACcEXQAuBeL/hARtACcHcf+lBLsAHgWHACcFhwAnBQoALgWI/8oG1QAnBY0AJwVmAGsFjwAuBQAAJwUbAGUEwACcBO0AmwY4AFYE8//DBdUAJQVoAMUHawArB8YAKwX1AIkGzQAuBOoAIwUxAE8HJgAyBNv/sAQ9ACIEZQBDBHYAIgNKABgE2v+FBDQAOwZO/60EAQAWBH8AGQR/ABkEVgAiBIH/vwXfACIEfgAZBHUAOQR/ABkEaP/HBBoAOAPhAFMD0f+1BbAAPQPx/7kEuAAZBE4AcAZmABkGwQASBPoATwZIACIEUAAiBCUAIwZcACQEWP+2BDQAOwQ0ADsEWQANA0oAGAQlADsECwAcAgUAHwIUACIB/P8MBqf/vQa5ABkEcAANBFYAIgR/ABkD0f+1BH8AGQcbAGAGKQBEBOoAIwRPACEG+wArBd0AGQTv/64ESP+cBxQAPgYQADAGwgAUBcMAFgj1ADUHxgAiBAr/qgPc/7UFiQB1BacAPwVaAGIEbwA2BP0AqAP5AHcE/QCoA/kAdwk3AGsIRgA5BVoAZgRvADgHFwBiBh4ASwcbAGAGKQBEBP0AVgQzAEUE4wA4AAr85gAK/Q4ACv4rAAr+PAAK+kEACvpvBYcAJwR/ABkE6gAjBE8AIQT2ACcEbf/HBFIAIgOPABEEXf/8A0r/ywSdAC4ECgARB3H/pQZO/60EuwAeBAEAFgUKAC4EVgAiBQ4AIwSRACEFHgA3BC4AGQZsAKQFgwBsBY0AJwR+ABkHngAnBYkAEQgRAC4GygARBgUAZQTjAEsFGwBlBBoAOATAAJwD4QBTBMUAoQP5AHcExQChA/kAVATz/8MD8f+5BwQAnQVQAFYFaADFBE4AcAVUALkEWwCFBWcA5wRZAA0F/wBiBKj/9AX/AGIEqP/0AjsANQdx/6UGTv+tBQQAIwRgACEFiP/KBIH/vwWNAC4EbwARBY0AJwR+ABkFaADFBE4AcAbVACcF3wAiAjsANQU0/6QEPQAiBTT/pAQ9ACIHVf+HBpcADwRtACcENAA7BWgASAQlADYFaABIBCUANgdx/6UGTv+tBLsAHgQBABYEjAAvBIz/8AWHACcEfwAZBYcAJwR/ABkFZgBrBHUAOQVaAGIEbwA2BVoAYgRvADYFMQBPBCUAIwTtAJsD0f+1BO0AmwPR/7UE7QCbA9H/tQVoAMUETgBwBF0ALgNKABgGzQAuBkgAIgSsADMDQwAJBPP/wwPx/7kE8//DA/H/uQTqADAEawA7BsYARQayAEcGLACqBQoAYQRjAJIEJwCMB43/3gZ0/94HygAnBnUACwTnAEwEFgA9BYkAkAUAAHMFNgBWBEgAKAWI/8oEgf+/BTT/pAQ9ACIE7wAnBGgAEAUcACcEawA7BRwAJwRrADsFjQAnBFkADQTuACcEFwARBO4AJwQXABEEPQAnAgX/5AbVACcGywAQBtUAJwbLABAFjAAnBFsADQUAACcEaP/HBOIAJwLE/94EuQAkBAsAHATAAJwCnwA7BQ8AmwPhAGQFDwCbA+EAZAbeALcFzgB3Bt4AtwXOAHcG3gC3Bc4AdwbeALcFzgB3BLb/5QPx/+cFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7AjsANQIUACICO///AgX/5AVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQVmAGsEdQA5BWkAWwSFADYFaQBbBIUANgVpAFsEhQA2BWkAWwSFADYFaQBbBIUANgUZAFsEWgBKBRkAWwRaAEoFgwBbBNYASgWDAFsE1gBKBYMAWwTWAEoFgwBbBNYASgWDAFsE1gBKBMUAoQPR/7UExQChA9H/tQTFAKED0f+1BMUAoQPR/7UFrP6zAx4A7AP/AAAH9AAAA/8AAAf0AAACrgAAAgQAAAFcAAAEZgAAAikAAAGfAAAA1QAAAAoAAAKXADYClwA2BQsAnAYKAIIGCgCCA4v/TgG9AK4BuQCKAcr/pAGlAM0DBgC3Aw0AlwL7/6EERQBpBID/+wLAAJ4D5QAzBYUAMwFrADYHdgCdAVoAkAKOAKECaQBdAmD/+QQ+ADcDiv/hAukAYwNMAG4ETf/DBJv/9gZJAA0GjgArCFsAJwdYACoGZAAQBIn/9ARzAE4F0QBCBB4AOwSIABAFP//kBV3/5gXBAMIDzgAxB/kAIwTsAO0E9wB9Bg8AtgayAIIGpwCIBnkAtQR4AEUFdQAfBL7/pwRqAJwEmAA0CA8ASQIm/xcEdQAwBGIAYgP8/9UEFAAXA/cAOgJTAGkCjgBmAez/zwT+AF8EjgBLBKIAXwb2AF8G9gBfBPQAXwaNABcACgAAB/v/qQg1AFwDhv/XBGP/pwSmADoEY/+nA6YACgQ2AC0ETgARBB4ADgQXABQFGwAuBBoAFAUKAC4FJgAuBKEAOwQl/4cCpwEGBL0ACgLpADMC6QAIAukAIwLpABYC6QAKAun/8QLp//QC6f/jAukAbQLpABcEBP/ZBXwAQwU1AHAEyAAAA6YAkwXjAIwEYwBwBGsAOQQlAGIEHgAOBEUACgSmADcEVQAKBKYAOgTCAAoF4gAKA6YACgREAAoDwv/yAfcAGATDAAoEjAA/A7IACgPMAAoEYgAKBGcAOQRIAAoEhf+bAf8A6wOPAQQD9gDcA/YAEwP2ANgD9gDXA48BBAOPAQUDjwEEBEb/pAQlAG0EZwA5BXAAYgQdAFUEegAqAgr/BwGw/7IEFP/WByb/wQcpAAoFdgBiBLwACgRZAAsFOv+DBhT/qQQvAAwEyAALBEUACgSw/8EELwByBT4ACgRzAF0GXAAKBt4ACgU7AEoF+wALBE8ACwRnABMGagAKBG//0gQM//UGav+pBIQACgT9AAoFTgBiBcwAQARDAG0Eqf+kBmwAYgRzAF0EcwAKBdoANwS3ADQELwAMBKYAOgROAAQD4wAeCAEACgTP/9kEbwAQBCYANwR/ADsDkgCkBIcANAR7/8cEhgA7BDQAOwRwADAFWgBvBYEAcQVmAC4FvQByBb8AcgQFAKsEaQAfA6YACgRA/38EpP/RAukAigLpAGQC6QB9AukAiQLpAJYC6QB7AukApgRT/9QEGAAnBm8AOgSaAEcEzwBOAiD/DwIg/w8CFQAiAhX/fQIVACIESAAKBGL/lwRi/5cEJQBiBIX/mwSF/5sEhf+bBIX/mwSF/5sEhf+bBIX/mwRnADkDzAAKA8wACgPMAAoDzAAKAfcAGAH3ABgB9wAYAfcAGATCAAoEpgA6BKYAOgSmADoEpgA6BKYAOgRrADkEmwB0BIcAjgRzAFoEcwAJBHMAJgRzAAsEawA5BGsAOQRrADkEJQBtBIX/mwSF/5sEhf+bBGcAOQRnADkEZwA5BGcAOQRiAAoDzAAKA8wACgPMAAoDzAAKA8wACgSMAD8EjAA/BIwAPwSMAD8EwwAKAfcADQH3ABgB9wAYAff/igH3ABgDwv/yBEQACgOmAAoDpgAKA6YACgOmAAoEwgAKBMIACgTCAAoEpgA6BKYAOgSmADoERQAKBEUACgRFAAoEHgAOBB4ADgQeAA4EHgAOBCUAYgQlAGIEJQBiBGsAOQRrADkEawA5BGsAOQRrADkEawA6BeMAjAQlAG0EJQBtBBT/1gQU/9YEFP/WBIX/mwQI/20E//94AjP/ewSw/9IEYf8sBNL/4gSF/5sESAAKA8wACgQU/9YEwwAKAfcAGAREAAoF4gAKBKYAOgRVAAoEJQBiBCUAbQRG/6QB9wAYBCUAbQPMAAoDpgAKBB4ADgH3ABgB9wAYA8L/8gREAAoELwByBIX/mwRIAAoDpgAKA8wACgTIAAsF4gAKBMMACgSmADoEvQAKBFUACgRnADkEJQBiBEb/pAQvAA0EwwAKBGcAOgQlAG0F2gA3BMgACwQvAHIFfABDBTT/pAQ9ACIEbQAnBDQAOwIU/+QAAAABAAAE5AkKBAAAAgICAwUFBgYCAwMEBQIDAgQFBQUFBQUFBQUFAgIEBQUECAYGBgYFBQYGAwUGBQgGBgYGBgUFBgYIBgUFAgQCBAQDBQUFBQUDBQUCAgUCCAUFBQUDBQMFBAcEBAQDAgMGAgIFBQYFAgUEBwQEBQMHBAMFAwMDBQQDAgMEBAYHBwQGBgYGBgYIBgUFBQUDAwMDBgYGBgYGBgUGBgYGBgUFBQUFBQUFBQcFBQUFBQICAgIFBQUFBQUFBQUFBQUFBAUEBgUGBQYFBgUGBQYFBgUGBgYFBQUFBQUFBQUFBQYFBgUGBQYFBgUGBQMCAwIDAgMCAwIHBQUCBgUFBQIFAgUDBQMFAwYFBgUGBQUGBQYFBgUGBQgIBgMGAwYDBQUFBQUFBQUFAwUDBQMGBQYFBgUGBQYFBgUIBwUEBQUEBQQFBAIGAwYFBgUCBgUGBQYFCAcGBQYFBQUDAgYFBgMGBQUFBQMCBQIEBAQEAgMDBAMDAAAAAAAAAwUGAwUHAwYGBgMGBgUGBQUGBgMGBggGBQYGBgUFBQcGBgYDBQUFBQMFBQUEBQUFBQUDBQUFBAQFBQUFBQUFBgQGBwMFBQUHBQUFBwUFBwUGBQMDBQkJBwYGBgYGBgYFBwUIBQYGBgYIBgYGBgYFBgcGBwYICQcIBgYIBQUFBQQFBQcFBQUFBQcFBQUFBQQEBgQFBQcIBgcFBQcFBQUFBAUFAgICBwgFBQUEBQgHBgUIBwYFCAcIBgoJBQQGBgYFBgQGBAoJBgUIBwgHBgUGAAAAAAAABgUGBQYFBQQFBAUFCAcFBQYFBgUGBQcGBgUJBgkIBwYGBQUEBQQFBAYECAYGBQYFBgUHBQcFAwgHBgUGBQYFBgUGBQgHAwYFBgUIBwUFBgUGBQgHBQUFBQYFBgUGBQYFBgUGBQYEBgQGBAYFBQQIBwUEBgQGBAYFCAgHBgUFCQcJBwYFBgYGBQYFBgUGBQYFBgUGBQYFBgUFAggICAgGBQYFBgMFBQUDBgQGBAgHCAcIBwgHBQQGBQYFBgUGBQYFBgUGBQYF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RvpHAkcKRzFHXkdmR25HdkgASAhIEEg9SEVITUiPSJdIx0jPSQ1JFUkdSZtJo0oDSnJKhUqYSqpKvErOSt9K9Et+S/lMLUytTT5Nm03qTnFOok6qTwVPDU8VT4xPlE/sUE9Qt1EnUW9RulIqUjJSlFMPUyJTNFNGU1hTalPqVERUUFTPVOZU+VVhVXhV91ZtVnVWiFaQVw5XhVfgV/dYDlggWF9YZ1jDWMtY01ksWTRZoVopWmRadlp+Wspa0lraWuJa6lryWvpbAltHW8JbylwCXElciVzVXTBdmF3pXmle9V9VX11f22BcYINg3GDkYVNh6WIkYjZiiGLRYxxjdWN9Y61jtWQLZDhkQGTgZOhlIGVoZahl8GZLZrFnAGdzZ/5oXWh0aIZpBWkcaYVpjWmVaahpsGopaqBrCmshazhrSWuIa/lsZWzSbUBty25YbqVu9G9hb9BwSHC6cUxx3HJ5cyhzMHM4c7V0JXRpdK50xnTedOp09nVqddh2s3eIeBh4qHkFeV95k3mweel6AHoXevJ7YXt8e5d8BHxzfM99S317faV95n4ofoR+037ffut+938Dfw9/G391f8yALICKgNyBM4E/gUuBmIHpgk+CqYNUg++D+4QHhBOEH4QnhC+Ee4TLhNeE44UshXKFfoWKheGGMYZ2hn6HAIeNh5mHpYeth7+H0YgziI6ImoimiQmJZ4lziX+Ji4mXiaOJr4m3icmJ24nuigGKCYoRiiOKNIqniq+KworUiueK+osNix+Lhovni/6MFIwnjDqMTYxfjGeMb4yCjJSMp4y5jMuM3IzvjQGNFI0sjT+NUY1djWmNhY2hjbCNwI3MjdiOMo6JjtyO5I9Oj+eQY5DakU2Ru5Iukp2TEJOCk+OUOpSTlOqVb5V3lYOVj5WblaeVs5W/lcuV15Xjle+V+5YHlhmWK5Y3lkOWT5ZblnKWhJaQlpyWqJa0lsaW2JbklvCW/JcIlxSXIJcyl0OXT5dbl3KXiZegl7eXypfdl+mX9ZgBmA2YGZglmDeYSZhhmHiYkJinmL+Y1pjumQWZIJk6mVKZaZl8mY6ZoZmzmcaZ2Jnzmg6aGpommjiaSppcmm2ahZqcmrSay5rjmvqbEpspm0SbXptwm4Kbjpuam6abspvEm9ab7pwFnB2cNJxMnGOce5ySnK2cx5zenPWdDJ0jnTqdUZ1o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A/wDXgAA////pP5sBK4FsAImACUAAAAHAXABbwAD//8AIv5wA9wEUAImAEUAAAAHAXAAqQAH//8AJ/6bBLwFsAImACYAAAAHAXYElwAK//8AEP6IBA8GAAImAEYAAAAHAXYEpf/3//8AJ/6bBOAFsAImACgAAAAHAXYEcwAK//8AO/6RBIgGAAImAEgAAAAHAXYEkAAA//8AJ/35BOAFsAImACgAAAAHA6sBAf6S//8AO/35BIgGAAImAEgAAAAHA6sBHv6S//8AJ/6bBYcFsAImACwAAAAHAXYFAAAK//8ADf6bA/kGAAImAEwAAAAHAXYEfwAK//8AJwAABXEHNgImAC8AAAEHAHcBpQE2AAkAsAQvsA/cMDEA//8AEQAABHUHPQImAE8AAAEHAHcBowE9AAkAsAQvsA/cMDEA//8AJ/7cBXEFsAImAC8AAAAHAXYE0QBL//8AEf7HBEoGAAImAE8AAAAHAXYEYAA2//8AJ/6bA8MFsAImADAAAAAHAXYElwAK////5P6bAhcGAAImAFAAAAAHAXYDRAAK//8AJwAABs4HNgImADEAAAEHAHcCvgE2ABMAsABFWLACLxuxAh8+WbAR3DAxAP//ABAAAAZoBgACJgBRAAABBwB3ApgAAAAJALADL7Ak3DAxAP//ACf+mwbOBbACJgAxAAAABwF2BasACv//ABD+mwZoBFICJgBRAAAABwF2Ba4ACv//ACf+lwWGBbACJgAyAAAABwF2BQIABv//AA3+mwP6BFICJgBSAAAABwF2BGwACv//ACcAAAUEB0ICJgA0AAABBwB3AasBQgAJALADL7AW3DAxAP///8f+YARtBfcCJgBUAAABBwB3AZv/9wAJALANL7Ah3DAxAP//ACf+mwTYBbACJgA2AAAABwF2BJgACv///97+mwLvBFMCJgBWAAAABwF2Az4ACv//ACT+kQS7BccCJgA3AAAABwF2BLAAAP//ABz+iAPEBFACJgBXAAAABwF2BGL/9///AJz+lAUiBbACJgA4AAAABwF2BJ8AA///ADv+kQKuBUECJgBYAAAABwF2A/UAAP//AJsAAAWBBzcCJgA6AAABBwFuAN0BQwAJALABL7AR3DAxAP//AGQAAAQNBewCJgBaAAABBgFuFvgACQCwAS+wEdwwMQD//wCb/psFgQWwAiYAOgAAAAcBdgTV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AesB7AHtAe4B7wHwAfEB8gJSAlQCWAJaAlwCXgJiAmQCagJsAnACcgJ0AnYCegJ8An4CgAKaAqICpAKqArADhwOOA5MDlgACAAAAAgAKO9oAAQNsAAQAAAGxBtI6+jr6BvwHUjfeI2I7mDuqOHYHWDiWOJY43jTeDqg4ljiWO6omhAqSCxQ1MDjeNI43uDdKOOQPYgt+OFQ2GjiMC8AM6gz0N643rji4NhoO1g3qOW4OTDeoOW4OZjfeN9433jfeN9433juYOHY4djh2OHY4ljiWOJY4ljuqOJY7qjuqO6o7qjuqON443jjeON445DhUOFQ4VDhUOFQ4VDiMOIw4jDiMN644uDi4OLg4uDi4OW42GjluN944VDfeOFQ33jhUO5g7mDuYO5g7qjuqOHY4jDh2OIw4djiMOHY4jDh2OIw4ljeuOJY4ljiWOJY4ljjeNN4OqA6oDqgOqDiWN644ljeuOJY3rjeuO6o4uDuqOLg7qji4DtYO1g7WNTA1MDUwON443jjeON443jjeN7g45DluOOQPYg9iD2I33jhUNTAO6Dr6N944djiWOJY7qjjkN94jYjZ+N944dg9iOJY7qjiWNN433jiWOJYPhDuqJoQQfjUwOOQRfDdKElo4ljjkN64S+DluEv43rhW8OW4Xlji4GKgYwhjIGM4ayBrOGwQbNji4OHY4dhu0Nn44ljiWON4dKh7cIJo03jY0OJY33iHQI2I2fiNsOHY3SiW6OJY03jiWOJY4ljuqJoQ7mDUwNjQ3SjiWOJYmpihAND4pHingKm44VCrMK6Y3QCwwOIw3qCz6LSQ4uDYaLoo5bjYaN6gxEDFOMoA0aDYaMwI4jDiMN0AziDOyNAg5bjQ+NGg33ji4NI45bjSOOW40tDYaNn43QDZ+N0o3qDTeNN403jTeOJY7mDUwOOQ5bjjkN0o3qDeuOJY3SjeoOJY4ljiWN944VDfeOFQ4djiMOIw4jDdKN6g7qji4OLg2GjY0OW42NDluNjQ5bjZ+N0A3QDdKN6g33jhUOJY3rje4N7g3uDfeOFQ33jhUN944VDfeOFQ33jhUN944VDfeOFQ33jhUN944VDfeOFQ33jhUN944VDh2OIw4djiMOHY4jDh2OIw4djiMOHY4jDh2OIw4djiMOJY4ljuqOLg7qji4O6o4uDuqOLg7qji4O6o4uDuqOLg4uDjeON445DluOOQ5bjjkOW445DluO6o6+jmIOvo6+jr6Ovo6+jsAOwo7HDsuO0A7XjtoO3I7mDuqO6oAAQGxAAQABgALAAwAEwAlACYAJwAoACkAKgAsAC0ALgAvADAAMQAyADMANAA1ADYAOAA5ADoAOwA8AD0APgA/AEUARgBJAEoATABPAFEAUgBTAFQAVgBYAFoAWwBcAF0AXwCDAIQAhQCGAIcAiACKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJwAnQCeAJ8AoACjAKQApQCmAKcAqACrAKwArQCuALQAtQC2ALcAuAC5AMAAwQDCAMMAxADFAMYAxwDIAMkAywDNAM8A0QDTANUA1gDXANgA2QDaANsA3ADdAN4A5wDoAOsA7QDvAPEA8wD3APkA/AD+AQABAgEGAQcBCAEJAQoBCwEMAQ8BEAERARIBEwEUARgBGgEcASUBJwEpASsBLQEvATEBMwE1ATcBOQE6ATsBPAE+AUABTgFPAWIBZQFmAXkBewF8AX0BfgF/AYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZIBkwGUAZUBlgGXAZgBmgGbAZ4BoQGjAaYBpwGpAa0BrgGvAbEBsgGzAbQBtQG2AbgBuQG8AcMBxAHFAcYByQHKAcsBzAHNAc4BzwHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3QHeAd8B4AHhAeMB5AHlAeYB6AHpAesB7AHtAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6Af0CAQIDAgUCBgIHAggCCQIMAg0CDwIQAhECEwIUAhYCFwIcAh0CIQIlAiYCKQI2AjcCOAI5AjoCRAJRAlICUwJUAlgCWQJcAl4CYAJiAmQCbAJuAnACcQJyAnQCdQJ9AoICgwKEAosCjwKRApICkwKUApUCmAKZApsCnQKeAp8CqAKpAq0CrwKwArECsgKzArQCtQK4ArkCvQK+Ar8C1gLXAuYC5wL4AvoC/AMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDLAMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDQwNGA0gDVANVA1YDVwNYA1kDWgNbA1wDcANxA3MDdAN1A34DfwPZA9sD3APeA+ED4gPpA+wEMQQzBDQACgA4/8QBJf/EASf/xAFi/8QBxf/EAc7/xAHl/8QCYv/EAm7/xAJ2/8QAFQA6ABQAOwAmAD0AFgCgABYBNwAmATkAFgE7ABYBfwAWAZUAFgGbABYCNwAUAjkAFAJwABYCcgAWAvgAJgL6ACYC/AAmA1QAFgNWABYDWAAWA1oAFgABABP/CADOABD+7gAS/u4AJf9AAC7/MAA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFb/5gBZ/+oAWv/oAF3/6ACD/0AAhP9AAIX/QACG/0AAh/9AAIj/QACj/94ApP/eAKX/3gCm/94Ap//eAKj/3gCq/+sAq//rAKz/6wCt/+sArv/rALX/6wC2/+sAt//rALj/6wC5/+sAvP/qAL3/6gC+/+oAv//qAMD/6ADC/+gAw/9AAMT/3gDF/0AAxv/eAMf/QADI/94Ayv/rAMz/6wDO/+sA0P/rANL/6wDW/+sA2P/rANr/6wDc/+sA3v/rAOD/6wDi/+sA5P/rAOb/6wD3/zABEP/rARL/6wEU/+sBFv/rASUAFAEnABQBLP/qAS7/6gEw/+oBMv/qATT/6gE2/+oBOv/oAUb/6wFI/+oBTv9AAU//3gFiABQBef9AAYL/QAGF/0ABjP9AAZz/6wGg/+oBof/rAaP/6AGt/+gBr//rAbL/6wGz/+sBtf/qAbv/6gG8/+sBvf/qAcUAFAHL/zABzgAUAdP/QAHlABQB8//eAfj/6wIB/+sCBP/rAgb/6AIH/+sCE//rAhT/6wIX/+sCIf/oAin/QAI2/+sCOP/oAjr/6AI8/+sCQP/rAkT/6wJiABQCa//rAm3/6wJuABQCcf/oAnYAFAKS/0ACk//eApT/QAKV/94Cmf/rApv/6wKd/+sCqf/rAqv/6wKt/+sCsf/oArP/6AK1/+gCw//rAsT/6wLF/+sCz//rAtb/QALX/94DAv9AAwP/3gME/0ADBf/eAwb/QAMH/94DCP9AAwn/3gMK/0ADC//eAwz/QAMN/94DDv9AAw//3gMQ/0ADEf/eAxL/QAMT/94DFP9AAxX/3gMW/0ADF//eAxj/QAMZ/94DG//rAx3/6wMf/+sDIf/rAyP/6wMl/+sDJ//rAyn/6wMv/+sDMf/rAzP/6wM1/+sDN//rAzn/6wM7/+sDPf/rAz//6wNB/+sDQ//rA0X/6wNH/+oDSf/qA0v/6gNN/+oDT//qA1H/6gNT/+oDVf/oA1f/6ANZ/+gDW//oA3L+7gN2/u4Dev7uA3v+7gPs/8AAIAA4/98AOv/kADv/7AA9/90AoP/dASX/3wEn/98BN//sATn/3QE7/90BYv/fAX//3QGV/90Bm//dAcX/3wHO/98B5f/fAjf/5AI5/+QCYv/fAm7/3wJw/90Ccv/dAnb/3wL4/+wC+v/sAvz/7ANU/90DVv/dA1j/3QNa/90D7AAOABoAOP/OADr/7QA9/9AAoP/QASX/zgEn/84BOf/QATv/0AFi/84Bf//QAZX/0AGb/9ABxf/OAc7/zgHl/84CN//tAjn/7QJi/84Cbv/OAnD/0AJy/9ACdv/OA1T/0ANW/9ADWP/QA1r/0AAQAC7/7gA5/+4AnP/uAJ3/7gCe/+4An//uAPf/7gEr/+4BLf/uAS//7gEx/+4BM//uATX/7gHL/+4DRv/uA0j/7gBKAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCq/+gAq//oAKz/6ACt/+gArv/oAMr/6ADM/+gAzv/oAND/6ADS/+gA1v/oANj/6ADa/+gA3P/oAN7/6ADg/+gA4v/oAOT/6ADm/+gBFv/oAUb/6AFmABABnP/oAaH/6AGy/+gBs//oAfj/6AIE/+gCB//oAhP/6AIU/+gCF//oAjz/6AJA/+gCRP/oAmv/6AJt/+gCmf/oApv/6AKd/+gCq//oAsP/6ALE/+gCxf/oAs//6AMb/+gDHf/oAx//6AMh/+gDI//oAyX/6AMn/+gDKf/oAz3/6AM//+gDQf/oA0X/6ANwABADcQAQA3MAEAN0ABADdQAQA34AEAN/ABAAAgIF/9YDcf+YAD0AR//sAEj/7ABJ/+wAS//sAFX/7ACq/+wAq//sAKz/7ACt/+wArv/sAMr/7ADM/+wAzv/sAND/7ADS/+wA1v/sANj/7ADa/+wA3P/sAN7/7ADg/+wA4v/sAOT/7ADm/+wBFv/sAUb/7AGc/+wBof/sAbL/7AGz/+wB+P/sAgT/7AIH/+wCE//sAhT/7AIX/+wCPP/sAkD/7AJE/+wCa//sAm3/7AKZ/+wCm//sAp3/7AKr/+wCw//sAsT/7ALF/+wCz//sAxv/7AMd/+wDH//sAyH/7AMj/+wDJf/sAyf/7AMp/+wDPf/sAz//7ANB/+wDRf/sABgAU//iALX/4gC2/+IAt//iALj/4gC5/+IBEP/iARL/4gEU/+IBr//iAbz/4gIB/+ICNv/iAqn/4gKt/+IDL//iAzH/4gMz/+IDNf/iAzf/4gM5/+IDO//iA0P/4gNxABgABgAQ/4QAEv+EA3L/hAN2/4QDev+EA3v/hAAQAC7/7AA5/+wAnP/sAJ3/7ACe/+wAn//sAPf/7AEr/+wBLf/sAS//7AEx/+wBM//sATX/7AHL/+wDRv/sA0j/7AALAFv/zAPW/9cD1/+4A9j/7gPZ/70D3P/yA97/8gPm//ED6v/zA+wAEwP3/7cABABKABQAWAAyAFsAEQNxABAAHgAG//IAC//yAFr/8wBd//MAwP/zAML/8wE6//MBZv/yAaP/8wGt//MCBf/1Agb/8wIh//MCOP/zAjr/8wJx//MCsf/zArP/8wK1//MDVf/zA1f/8wNZ//MDW//zA3D/8gNx//IDc//yA3T/8gN1//IDfv/yA3//8gAIAFv/5QGW/8sBuP/kA9z/7APe/+wD5v/rA+r/7QPsAA0APgAn//MAK//zADP/8wA1//MAiv/zAJX/8wCW//MAl//zAJj/8wCZ//MAm//zAMn/8wDL//MAzf/zAM//8wDf//MA4f/zAOP/8wDl//MBD//zARH/8wET//MBFf/zAUX/8wFS//MBfv/zAYn/8wGQ//MBqwANAcf/8wHh//MB5P/zAiP/8wI1//MCO//zAj3/8wI///MCQf/zAkP/8wJq//MCbP/zAqj/8wKq//MCrP/zAs7/8wMu//MDMP/zAzL/8wM0//MDNv/zAzj/8wM6//MDPP/zAz7/8wNA//MDQv/zA0T/8wNc//MEMf/zBDL/8wQ0//MENf/zAD8AJ//mACv/5gAz/+YANf/mAIr/5gCV/+YAlv/mAJf/5gCY/+YAmf/mAJv/5gDJ/+YAy//mAM3/5gDP/+YA3//mAOH/5gDj/+YA5f/mAQ//5gER/+YBE//mARX/5gFF/+YBUv/mAX7/5gGJ/+YBkP/mAZb/wgGrABABx//mAeH/5gHk/+YCI//mAjX/5gI7/+YCPf/mAj//5gJB/+YCQ//mAmr/5gJs/+YCqP/mAqr/5gKs/+YCzv/mAy7/5gMw/+YDMv/mAzT/5gM2/+YDOP/mAzr/5gM8/+YDPv/mA0D/5gNC/+YDRP/mA1z/5gQx/+YEMv/mBDT/5gQ1/+YANwAl/+QAPP/SAD3/0wCD/+QAhP/kAIX/5ACG/+QAh//kAIj/5ACg/9MAw//kAMX/5ADH/+QBOf/TATv/0wFO/+QBef/kAX//0wGC/+QBhf/kAYz/5AGV/9MBl//SAZv/0wGr/+IB0//kAdn/0gHo/9ICKf/kAlj/0gJw/9MCcv/TAnT/0gKD/9ICkv/kApT/5AKe/9ICvv/SAtb/5AMC/+QDBP/kAwb/5AMI/+QDCv/kAwz/5AMO/+QDEP/kAxL/5AMU/+QDFv/kAxj/5ANU/9MDVv/TA1j/0wNa/9MAJwAQ/0YAEv9GACX/zQCD/80AhP/NAIX/zQCG/80Ah//NAIj/zQDD/80Axf/NAMf/zQFO/80Bef/NAYL/zQGF/80BjP/NAbH/8gHT/80CKf/NApL/zQKU/80C1v/NAwL/zQME/80DBv/NAwj/zQMK/80DDP/NAw7/zQMQ/80DEv/NAxT/zQMW/80DGP/NA3L/RgN2/0YDev9GA3v/RgABAasADgCvAEf/3ABI/9wASf/cAEv/3ABR/8EAUv/BAFP/1gBU/8EAVf/cAFn/3QBa/+EAXf/hAKr/3ACr/9wArP/cAK3/3ACu/9wAtP/BALX/1gC2/9YAt//WALj/1gC5/9YAvP/dAL3/3QC+/90Av//dAMD/4QDC/+EAyv/cAMz/3ADO/9wA0P/cANL/3ADW/9wA2P/cANr/3ADc/9wA3v/cAOD/3ADi/9wA5P/cAOb/3AEH/8EBCf/BAQv/wQEM/8EBEP/WARL/1gEU/9YBFv/cASz/3QEu/90BMP/dATL/3QE0/90BNv/dATr/4QFG/9wBSP/dAZz/3AGe/8EBoP/dAaH/3AGj/+EBpf/mAaf/wQGo/+sBqf/pAa3/4QGu//ABr//WAbD/5wGy/9wBs//cAbT/4wG1/90Btv/OAbj/1AG5/9sBu//dAbz/1gG9/90B9v/BAfj/3AH7/8EB/P/BAf3/wQH//8ECAP/BAgH/1gIC/8ECA//BAgT/3AIG/+ECB//cAgn/wQIL/8ECDP/BAg//wQIR/8ECE//cAhT/3AIW/8ECF//cAh3/wQIf/8ECIP/BAiH/4QI2/9YCOP/hAjr/4QI8/9wCQP/cAkT/3AJN/8ECXf/BAmX/wQJn/8ECa//cAm3/3AJx/+ECiv/BAoz/wQKQ/8ECmf/cApv/3AKd/9wCpf/BAqf/wQKp/9YCq//cAq3/1gKx/+ECs//hArX/4QK5/8ECu//BAr3/wQLD/9wCxP/cAsX/3ALP/9wC5//BAxv/3AMd/9wDH//cAyH/3AMj/9wDJf/cAyf/3AMp/9wDL//WAzH/1gMz/9YDNf/WAzf/1gM5/9YDO//WAz3/3AM//9wDQf/cA0P/1gNF/9wDR//dA0n/3QNL/90DTf/dA0//3QNR/90DU//dA1X/4QNX/+EDWf/hA1v/4QB2AAb/2gAL/9oAR//wAEj/8ABJ//AAS//wAFX/8ABZ/+8AWv/cAF3/3ACq//AAq//wAKz/8ACt//AArv/wALz/7wC9/+8Avv/vAL//7wDA/9wAwv/cAMr/8ADM//AAzv/wAND/8ADS//AA1v/wANj/8ADa//AA3P/wAN7/8ADg//AA4v/wAOT/8ADm//ABFv/wASz/7wEu/+8BMP/vATL/7wE0/+8BNv/vATr/3AFG//ABSP/vAWb/2gGc//ABoP/vAaH/8AGj/9wBqP/sAasADwGt/9wBsP/qAbL/8AGz//ABtP/OAbX/7wG2/+cBu//vAb3/7wH4//ACBP/wAgb/3AIH//ACE//wAhT/8AIX//ACIf/cAjj/3AI6/9wCPP/wAkD/8AJE//ACa//wAm3/8AJx/9wCmf/wApv/8AKd//ACq//wArH/3AKz/9wCtf/cAsP/8ALE//ACxf/wAs//8AMb//ADHf/wAx//8AMh//ADI//wAyX/8AMn//ADKf/wAz3/8AM///ADQf/wA0X/8ANH/+8DSf/vA0v/7wNN/+8DT//vA1H/7wNT/+8DVf/cA1f/3ANZ/9wDW//cA3D/2gNx/9oDc//aA3T/2gN1/9oDfv/aA3//2gBEABAADAASAAwAR//nAEj/5wBJ/+cAS//nAFX/5wCq/+cAq//nAKz/5wCt/+cArv/nAMr/5wDM/+cAzv/nAND/5wDS/+cA1v/nANj/5wDa/+cA3P/nAN7/5wDg/+cA4v/nAOT/5wDm/+cBFv/nAUb/5wGc/+cBof/nAasADwGy/+cBs//nAfj/5wIE/+cCB//nAhP/5wIU/+cCF//nAjz/5wJA/+cCRP/nAmv/5wJt/+cCmf/nApv/5wKd/+cCq//nAsP/5wLE/+cCxf/nAs//5wMb/+cDHf/nAx//5wMh/+cDI//nAyX/5wMn/+cDKf/nAz3/5wM//+cDQf/nA0X/5wNyAAwDdgAMA3oADAN7AAwABgG0/+oB9//uAgX/1QIP/+0CY//sAtH/7AABAgX/wAABAbQAIAB+AAYADAALAAwAR//oAEj/6ABJ/+gASgAMAEv/6ABT/+oAVf/oAFoACwBdAAsAqv/oAKv/6ACs/+gArf/oAK7/6AC1/+oAtv/qALf/6gC4/+oAuf/qAMAACwDCAAsAyv/oAMz/6ADO/+gA0P/oANL/6ADW/+gA2P/oANr/6ADc/+gA3v/oAOD/6ADi/+gA5P/oAOb/6AEQ/+oBEv/qART/6gEW/+gBOgALAUb/6AFmAAwBnP/oAaH/6AGjAAsBq/+QAa0ACwGv/+oBsAALAbL/6AGz/+gBtAAMAbz/6gH4/+gCAf/qAgT/6AIGAAsCB//oAhP/6AIU/+gCF//oAiEACwI2/+oCOAALAjoACwI8/+gCQP/oAkT/6AJr/+gCbf/oAnEACwKZ/+gCm//oAp3/6AKp/+oCq//oAq3/6gKxAAsCswALArUACwLD/+gCxP/oAsX/6ALP/+gDG//oAx3/6AMf/+gDIf/oAyP/6AMl/+gDJ//oAyn/6AMv/+oDMf/qAzP/6gM1/+oDN//qAzn/6gM7/+oDPf/oAz//6ANB/+gDQ//qA0X/6ANVAAsDVwALA1kACwNbAAsDcAAMA3EADANzAAwDdAAMA3UADAN+AAwDfwAMA9cADQPZAA4D2v/1A9z/7APe/+0D5v/sA+r/7gPs/78D9wANAAECBf/iAA0AXP/tAF7/7QE9/+0BP//tAUH/7QH5/+0CBf/AAgj/7QJZ/+0Cdf/tAoT/7QKf/+0Cv//tAAwAXP/yAF7/8gE9//IBP//yAUH/8gH5//ICCP/yAln/8gJ1//IChP/yAp//8gK///IAHwBa//QAXP/yAF3/9ABe//MAwP/0AML/9AE6//QBPf/zAT//8wFB//MBo//0Aa3/9AH5//ICBv/0Agj/8gIh//QCOP/0Ajr/9AJZ//ICcf/0AnX/8gKE//ICn//yArH/9AKz//QCtf/0Ar//8gNV//QDV//0A1n/9ANb//QAXQAG/8oAC//KADj/0gA6/9QAPP/0AD3/0wBa/+YAXP/vAF3/5gCg/9MAwP/mAML/5gEl/9IBJ//SATn/0wE6/+YBO//TAWL/0gFm/8oBf//TAZX/0wGX//QBm//TAaP/5gGt/+YBxf/SAc7/0gHR/+0B2f/0AeX/0gHm/+0B6P/0Aer/4QHv/9QB+f/vAgX/yQIG/+YCCP/vAg//0QIh/+YCJP/lAjf/1AI4/+YCOf/UAjr/5gJC/+MCWP/0Aln/7wJi/9ICY//EAm7/0gJw/9MCcf/mAnL/0wJ0//QCdf/vAnb/0gJ4/+ECev/hAoP/9AKE/+8Cjf/hAp7/9AKf/+8CsP/tArH/5gKy/+0Cs//mArT/7QK1/+YCtv/hAr7/9AK//+8Cxv/UAsf/9QLI/+cC0P9kAtH/yQNU/9MDVf/mA1b/0wNX/+YDWP/TA1n/5gNa/9MDW//mA3D/ygNx/8oDc//KA3T/ygN1/8oDfv/KA3//ygBsAAb/wAAL/8AAOP+dADr/xwA8//AAPf+rAFH/0gBS/9IAVP/SAKD/qwC0/9IBB//SAQn/0gEL/9IBDP/SASX/nQEn/50BOf+rATv/qwFi/50BZv/AAX//qwGV/6sBl//wAZv/qwGe/9IBp//SAcX/nQHM//UBzv+dAdH/6gHZ//AB3v/1AeX/nQHm/+oB6P/wAer/5QHv/8EB9v/SAfv/0gH8/9IB/f/SAf//0gIA/9ICAv/SAgP/0gIF/80CCf/SAgv/0gIM/9ICD//SAhH/0gIW/9ICHf/SAh//0gIg/9ICN//HAjn/xwJN/9ICWP/wAl3/0gJi/50CY//MAmX/0gJn/9ICbv+dAnD/qwJy/6sCdP/wAnb/nQJ4/+UCev/lAn7/3wKD//ACh//1Aor/0gKM/9ICjf/lApD/0gKe//ACpf/SAqf/0gKw/+oCsv/qArT/6gK2/+UCuf/SArv/0gK9/9ICvv/wAsb/zgLI/+oCyv/1AtD/ngLR/84C1P/1Auf/0gNU/6sDVv+rA1j/qwNa/6sDcP/AA3H/wANz/8ADdP/AA3X/wAN+/8ADf//AAG8ABv+xAAv/sQA4/54AOv/FADz/8gA9/6gAUf/PAFL/zwBU/88AXP/vAKD/qAC0/88BB//PAQn/zwEL/88BDP/PASX/ngEn/54BOf+oATv/qAFi/54BZv+xAX//qAGV/6gBl//yAZv/qAGe/88Bp//PAcX/ngHO/54B0f/sAdn/8gHl/54B5v/sAej/8gHq/+EB7//CAfb/zwH5/+8B+//PAfz/zwH9/88B///PAgD/zwIC/88CA//PAgX/xgII/+8CCf/PAgv/zwIM/88CD//PAhH/zwIW/88CHf/PAh//zwIg/88CN//FAjn/xQJN/88CWP/yAln/7wJd/88CYv+eAmP/wAJl/88CZ//PAm7/ngJw/6gCcv+oAnT/8gJ1/+8Cdv+eAnj/4QJ6/+ECfv/fAoP/8gKE/+8Civ/PAoz/zwKN/+ECkP/PAp7/8gKf/+8Cpf/PAqf/zwKw/+wCsv/sArT/7AK2/+ECuf/PArv/zwK9/88Cvv/yAr//7wLG/80CyP/oAtD/nwLR/8YC5//PA1T/qANW/6gDWP+oA1r/qANw/7EDcf+xA3P/sQN0/7EDdf+xA37/sQN//7EATQA4/74AUf/hAFL/4QBU/+EAWv/vAF3/7wC0/+EAwP/vAML/7wEH/+EBCf/hAQv/4QEM/+EBJf++ASf/vgE6/+8BYv++AZ7/4QGj/+8Bp//hAa3/7wHF/74Bzv++AeX/vgHv/8kB9v/hAfv/4QH8/+EB/f/hAf//4QIA/+ECAv/hAgP/4QIF/98CBv/vAgn/4QIL/+ECDP/hAg//4QIR/+ECFv/hAh3/4QIf/+ECIP/hAiH/7wIk/+0COP/vAjr/7wJC/+sCTf/hAl3/4QJi/74CY//fAmX/4QJn/+ECbv++AnH/7wJ2/74Cfv/pAor/4QKM/+ECkP/hAqX/4QKn/+ECsf/vArP/7wK1/+8Cuf/hArv/4QK9/+ECx//1AtH/4ALn/+EDVf/vA1f/7wNZ/+8DW//vAGQAOP/mADr/5wA8//IAPf/nAFH/1gBS/9YAVP/WAFz/8QCg/+cAtP/WAQf/1gEJ/9YBC//WAQz/1gEl/+YBJ//mATn/5wE7/+cBYv/mAX//5wGV/+cBl//yAZv/5wGe/9YBp//WAcX/5gHO/+YB0f/uAdn/8gHl/+YB5v/uAej/8gHq/+gB7//mAfb/1gH5//EB+//WAfz/1gH9/9YB///WAgD/1gIC/9YCA//WAgX/0AII//ECCf/WAgv/1gIM/9YCD//WAhH/1gIW/9YCHf/WAh//1gIg/9YCN//nAjn/5wJN/9YCWP/yAln/8QJd/9YCYv/mAmP/zgJl/9YCZ//WAm7/5gJw/+cCcv/nAnT/8gJ1//ECdv/mAnj/6AJ6/+gCg//yAoT/8QKK/9YCjP/WAo3/6AKQ/9YCnv/yAp//8QKl/9YCp//WArD/7gKy/+4CtP/uArb/6AK5/9YCu//WAr3/1gK+//ICv//xAsb/5wLI/+0C0P/mAtH/0ALn/9YDVP/nA1b/5wNY/+cDWv/nAAICLQALAtD/5gCTACUAEAAn/+gAK//oADP/6AA1/+gAOP/gADr/4AA9/98AgwAQAIQAEACFABAAhgAQAIcAEACIABAAiv/oAJX/6ACW/+gAl//oAJj/6ACZ/+gAm//oAKD/3wDDABAAxQAQAMcAEADJ/+gAy//oAM3/6ADP/+gA3//oAOH/6ADj/+gA5f/oAQ//6AER/+gBE//oARX/6AEl/+ABJ//gATn/3wE7/98BRf/oAU4AEAFS/+gBYv/gAXkAEAF+/+gBf//fAYIAEAGFABABif/oAYwAEAGQ/+gBlf/fAZv/3wHF/+ABx//oAcwAEAHO/+AB0wAQAdcAFAHeABAB4f/oAeT/6AHl/+AB6v/hAe//4AH3ABMB/gAQAgr/4AIcABACI//oAikAEAI1/+gCN//gAjn/4AI7/+gCPf/oAj//6AJB/+gCQ//oAmL/4AJq/+gCbP/oAm7/4AJw/98Ccv/fAnb/4AJ4/+ECef/gAnr/4QJ7/+ACf//hAocAEAKIABACjf/hAo7/4AKSABAClAAQApr/6QKo/+gCqv/oAqz/6AK2/+ECt//gAsb/3wLI/94CygAQAs7/6ALQ/98C0v/yAtQAEALVABAC1gAQAwIAEAMEABADBgAQAwgAEAMKABADDAAQAw4AEAMQABADEgAQAxQAEAMWABADGAAQAy7/6AMw/+gDMv/oAzT/6AM2/+gDOP/oAzr/6AM8/+gDPv/oA0D/6ANC/+gDRP/oA1T/3wNW/98DWP/fA1r/3wNc/+gEMf/oBDL/6AQ0/+gENf/oADIAG//yADj/8QA6//QAPP/0AD3/8ACg//ABJf/xASf/8QE5//ABO//wAWL/8QF///ABlf/wAZf/9AGb//ABxf/xAcz/9QHO//EB0f/zAdn/9AHe//UB5f/xAeb/8wHo//QB7//xAjf/9AI5//QCWP/0AmL/8QJu//ECcP/wAnL/8AJ0//QCdv/xAoP/9AKH//UCnv/0ArD/8wKy//MCtP/zAr7/9ALG//ICyP/yAsr/9QLQ//IC1P/1A1T/8ANW//ADWP/wA1r/8AAIAFgADgCJ/tcBq/+YAbH/xwHX/xIB9/9SAsL/zwPs/4AAZgAlAA8AOP/mADr/5gA8AA4APf/mAIMADwCEAA8AhQAPAIYADwCHAA8AiAAPAKD/5gDDAA8AxQAPAMcADwEl/+YBJ//mATn/5gE7/+YBTgAPAWL/5gF5AA8Bf//mAYIADwGFAA8BjAAPAZX/5gGXAA4Bm//mAcX/5gHMAA4Bzv/mAdEACwHTAA8B1wATAdkADgHeAA4B5f/mAeYACwHoAA4B6v/lAe//5gHw//QB9wASAf4ADwIF/+cCCv/oAg//5wIcAA8CKQAPAjf/5gI5/+YCWAAOAmL/5gJj/+cCbv/mAnD/5gJy/+YCdAAOAnb/5gJ4/+UCef/oAnr/5QJ7/+gCgwAOAocADgKIAA8Cjf/lAo7/6AKSAA8ClAAPAp4ADgKwAAsCsgALArQACwK2/+UCt//oAr4ADgLG/+YCyP/mAsoADgLQ/+YC0f/nAtQADgLVAA8C1gAPAwIADwMEAA8DBgAPAwgADwMKAA8DDAAPAw4ADwMQAA8DEgAPAxQADwMWAA8DGAAPA1T/5gNW/+YDWP/mA1r/5gA3AAb/vwAL/78AOP+fADr/yQA9/60AoP+tASX/nwEn/58BOf+tATv/rQFi/58BZv+/AX//rQGV/60Bm/+tAcX/nwHO/58B0f/sAeX/nwHm/+wB6v/mAe//xAIF/80CD//VAjf/yQI5/8kCYv+fAmP/zAJu/58CcP+tAnL/rQJ2/58CeP/mAnr/5gJ+/98Cjf/mArD/7AKy/+wCtP/sArb/5gLG/9ECyP/sAtD/oQLR/88DVP+tA1b/rQNY/60DWv+tA3D/vwNx/78Dc/+/A3T/vwN1/78Dfv+/A3//vwAwADj/4wA8/+UAPf/kAKD/5AEl/+MBJ//jATn/5AE7/+QBYv/jAX//5AGV/+QBl//lAZv/5AHF/+MBzP/lAc7/4wHR/+kB1//iAdn/5QHe/+UB5f/jAeb/6QHo/+UB/v/qAhz/6gJY/+UCYv/jAm7/4wJw/+QCcv/kAnT/5QJ2/+MCg//lAof/5QKI/+oCnv/lArD/6QKy/+kCtP/pAr7/5QLK/+UC0P/kAtT/5QLV/+oDVP/kA1b/5ANY/+QDWv/kACMAOP/iADz/5AEl/+IBJ//iAWL/4gGX/+QBxf/iAcz/5AHO/+IB0f/pAdf/4QHZ/+QB3v/kAeX/4gHm/+kB6P/kAff/5AH+/+sCHP/rAlj/5AJi/+ICbv/iAnT/5AJ2/+ICg//kAof/5AKI/+sCnv/kArD/6QKy/+kCtP/pAr7/5ALK/+QC1P/kAtX/6wAXADj/6wA9//MAoP/zASX/6wEn/+sBOf/zATv/8wFi/+sBf//zAZX/8wGb//MBxf/rAc7/6wHl/+sCYv/rAm7/6wJw//MCcv/zAnb/6wNU//MDVv/zA1j/8wNa//MANgBR/+8AUv/vAFT/7wBc//AAtP/vAQf/7wEJ/+8BC//vAQz/7wGe/+8Bp//vAfb/7wH3/+4B+f/wAfv/7wH8/+8B/f/vAf//7wIA/+8CAv/vAgP/7wIF/+4CCP/wAgn/7wIL/+8CDP/vAg//7wIR/+8CFv/vAh3/7wIf/+8CIP/vAiT/9AJC//ECTf/vAln/8AJd/+8CY//vAmX/7wJn/+8Cdf/wAoT/8AKK/+8CjP/vApD/7wKf//ACpf/vAqf/7wK5/+8Cu//vAr3/7wK///AC0f/vAuf/7wAiAAb/8gAL//IAWv/1AF3/9QDA//UAwv/1ATr/9QFm//IBo//1Aa3/9QIF//QCBv/1Ag//9AIh//UCJP/1Ajj/9QI6//UCY//1AnH/9QKx//UCs//1ArX/9QLR//UDVf/1A1f/9QNZ//UDW//1A3D/8gNx//IDc//yA3T/8gN1//IDfv/yA3//8gAyAFH/7gBS/+4AVP/uALT/7gEH/+4BCf/uAQv/7gEM/+4Bnv/uAaf/7gH2/+4B9wAUAfv/7gH8/+4B/f/uAf//7gIA/+4CAv/uAgP/7gIF/+0CCf/uAgr/7QIL/+4CDP/uAg3/0AIP/+4CEf/uAhb/7gId/+4CH//uAiD/7gJN/+4CXf/uAmP/7QJl/+4CZ//uAnn/7QJ7/+0Civ/uAoz/7gKO/+0CkP/uAqX/7gKn/+4Ct//tArn/7gK7/+4Cvf/uAtH/7QLn/+4ACgAG//UAC//1AWb/9QNw//UDcf/1A3P/9QN0//UDdf/1A37/9QN///UAWQBH//AASP/wAEn/8ABL//AAU//HAFX/8ACq//AAq//wAKz/8ACt//AArv/wALX/xwC2/8cAt//HALj/xwC5/8cAyv/wAMz/8ADO//AA0P/wANL/8ADW//AA2P/wANr/8ADc//AA3v/wAOD/8ADi//AA5P/wAOb/8AEQ/8cBEv/HART/xwEW//ABRv/wAZz/8AGh//ABr//HAbL/8AGz//ABvP/HAfj/8AIB/8cCBP/wAgf/8AIT//ACFP/wAhf/8AI2/8cCPP/wAj7/6wJA//ACRP/wAmv/8AJt//ACmf/wApv/8AKd//ACqf/HAqv/8AKt/8cCw//wAsT/8ALF//ACz//wAxv/8AMd//ADH//wAyH/8AMj//ADJf/wAyf/8AMp//ADL//HAzH/xwMz/8cDNf/HAzf/xwM5/8cDO//HAz3/8AM///ADQf/wA0P/xwNF//AD3P/rA97/6wPm/+kD6v/rAKEABgANAAsADQBF//AAR//AAEj/wABJ/8AASgANAEv/wABT/+IAVf/AAFoACwBdAAsAo//wAKT/8ACl//AApv/wAKf/8ACo//AAqv/AAKv/wACs/8AArf/AAK7/wAC1/+IAtv/iALf/4gC4/+IAuf/iAMAACwDCAAsAxP/wAMb/8ADI//AAyv/AAMz/wADO/8AA0P/AANL/wADW/8AA2P/AANr/wADc/8AA3v/AAOD/wADi/8AA5P/AAOb/wAEQ/+IBEv/iART/4gEW/8ABOgALAUb/wAFP//ABZgANAZz/wAGh/8ABowALAa0ACwGv/+IBsf/WAbL/wAGz/8ABtv/VAbz/4gHz//AB9//IAfj/wAH+/9cCAf/iAgT/wAIGAAsCB//AAhP/wAIU/8ACF//AAhz/1wIhAAsCNv/iAjgACwI6AAsCPP/AAj7/7AJA/8ACQgAMAkT/wAJr/8ACbf/AAnEACwKI/9cCk//wApX/8AKZ/8ACm//AAp3/wAKp/+ICq//AAq3/4gKxAAsCswALArUACwLD/8ACxP/AAsX/wALHAAsCyQALAs//wALV/9cC1//wAwP/8AMF//ADB//wAwn/8AML//ADDf/wAw//8AMR//ADE//wAxX/8AMX//ADGf/wAxv/wAMd/8ADH//AAyH/wAMj/8ADJf/AAyf/wAMp/8ADL//iAzH/4gMz/+IDNf/iAzf/4gM5/+IDO//iAz3/wAM//8ADQf/AA0P/4gNF/8ADVQALA1cACwNZAAsDWwALA3AADQNxAA0DcwANA3QADQN1AA0DfgANA38ADQPXAA0D2QAOA9r/9QPc/+wD3v/tA+b/7APq/+4D7P+/A/cADQAPAfcAFAH+ABACBf/wAgr/8AIP//ACEgAWAhwAEAJj/+YCef/wAnv/3AKIABACjv/wArf/8ALR//AC1QAQAEwAR//uAEj/7gBJ/+4AS//uAFX/7gCq/+4Aq//uAKz/7gCt/+4Arv/uAMr/7gDM/+4Azv/uAND/7gDS/+4A1v/uANj/7gDa/+4A3P/uAN7/7gDg/+4A4v/uAOT/7gDm/+4BFv/uAUb/7gGc/+4Bof/uAbL/7gGz/+4B9wASAfj/7gH+AA4CBP/uAgX/4wIH/+4CCv/jAg3/uAIP/+MCE//uAhT/7gIX/+4CHAAOAjz/7gJA/+4CRP/uAmP/ugJr/+4Cbf/uAnn/4wJ7/9kCiAAOAo7/4wKZ/+4Cm//uAp3/7gKr/+4Ct//jAsP/7gLE/+4Cxf/uAs//7gLR/+MC1QAOAxv/7gMd/+4DH//uAyH/7gMj/+4DJf/uAyf/7gMp/+4DPf/uAz//7gNB/+4DRf/uACAAWv/AAF3/wADA/8AAwv/AATr/wAGj/8ABrf/AAgX/gAIG/8ACCv/uAg//8AIh/8ACJP/bAjj/wAI6/8ACQv/cAmP/RwJx/8ACef/uAnv/7gKO/+4Csf/AArP/wAK1/8ACt//uAscABwLJ//QC0f9/A1X/wANX/8ADWf/AA1v/wAAhAFr/9ABc//AAXf/0AMD/9ADC//QBOv/0AaP/9AGt//QB9//vAfn/8AH+//MCBv/0Agj/8AIP/+4CHP/zAiH/9AI4//QCOv/0Aln/8AJx//QCdf/wAoT/8AKI//MCn//wArH/9AKz//QCtf/0Ar//8ALV//MDVf/0A1f/9ANZ//QDW//0AAoABv/WAAv/1gFm/9YDcP/WA3H/1gNz/9YDdP/WA3X/1gN+/9YDf//WABUAXP/gAfn/4AIF/3YCCP/gAgr/wgIP/9MCJP/ZAkL/2wJZ/+ACY/8eAnX/4AJ5/8ICe//tAoT/4AKO/8ICn//gArf/wgK//+ACx//wAsn/8gLR/1YADQIF/2QCCv/SAg//2QIk/9kCQv/bAmP/HgJ5/9ICe//tAo7/0gK3/9ICx//wAsn/8gLR/1YACgHv/8MCBf/PAg//1AJj/84Cev/nAn7/3wLG/9ECyP/sAtD/oALR/9EACQIF/2oCD//GAiT/2QJC/9sCY/8eAnv/7QLH//ACyf/yAtH/VgAJAA0AFABBABEAVv/iAGEAEwPc/9kD3v/ZA+b/2QPq/9kD7P+0AAoABv/XAAv/1wFm/9cDcP/XA3H/1wNz/9cDdP/XA3X/1wN+/9cDf//XABQAW//BAZb/xQG0/7QB9P/XAgX/uQIP/+kCJP+yAj7/0gJC/8gCY/+gAnv/xQKa/+QCx//MAsn/zALR/8sC0v/vA9z/5wPe/+cD5v/mA+r/6AA6AAT/xABW/78AW//RAG7/bAB+/24Aif9DAKn/rAC7/6EBlv+4AaX/fgGp/3sBsP+bAbH/eQG0/7IBtv9+Abj/fQG5/3wB1/+vAe8ADwH0/+QB9f+gAff/dAH6/4ACBf+yAg7/fQIP/7ICEP+AAhL/eQIVACgCIv99AiT/fwI+/2YCQv/aAlH/gQJT/5gCX/99AmP/swJp/6ACe/98An7/mgJ//2wCmv/mAsL/awLH/5ICyf+tAs3/ewLQAA8C0f+RAtL/8gPW//ED2f/xA9r/vAPc/7kD3v+5A+b/uQPq/7kD7P+vA/b/7QAGAbT/6gH3/+4CBf/WAg//7QJj/+wC0f/sABIB1/+uAe8AEgH1/+AB9/+tAfr/1gIO/98CEv/SAiL/4AI+/84CUf/dAlP/4gJf/+ACaf/gAnv/6QJ//9oCwv+9As3/3wLQABEAMABW/34AW/+dAG7+8QB+/vQAif6rAKn/XgC7/0sBlv9yAaX/DwGp/woBsP9BAbH/BwG0/2gBtv8PAbj/DgG5/wwB1/9jAe8ABQH0/70B9f9JAff+/gH6/xMCBf9oAg7/DgIP/2gCEP8TAhL/BwIVADACIv8OAiT/EQI+/ucCQv+sAlH/FQJT/zwCX/8OAmP/agJp/0kCe/8MAn7/PwJ//vECmv/AAsL+7wLH/zECyf9fAs3/CgLQAAUC0f8wAtL/1QACAff/aAI+/+4AFwGW/9QBqP/tAasAEQG0/+ABtv/nAbj/5QG5/+4B1wASAfT/6QIF/9cCY//XAnv/0wJ+/9YCf//FApr/5wLGAA0CyAAMAtH/1gLS//ID3P/pA97/5wPm/+cD6v/pAAECPv/xAAICBf/WA3H/iAAJAA0ADwBBAAwAVv/rAGEADgPc/+cD3v/nA+b/5wPq/+kD7P/LAB0AI/+vAFj/7wBb/98BR//u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AX4BfgAFAX8BfwAQAYIBggACAYMBgwADAYQBhAAcAYUBhQACAYYBhgAGAYcBhwARAYgBiAAHAYkBiQAFAYoBigAHAYsBiwAJAYwBjAACAY0BjgAHAZABkAAFAZIBkgALAZQBlAAMAZUBlQAQAZcBlwAPAZoBmgAHAZsBmwAQAZ4BngAWAaMBowAZAacBpwAWAa0BrQAZAa8BrwAXAbEBsQATAbwBvAAXAcMBxAAGAcYBxgAcAckBygAHAcsBywAIAcwBzQAdAc8BzwAJAdEB0QAeAdIB0gAHAdMB0wACAdUB1QADAdYB1gAcAdgB2AAGAdkB2QAPAdsB2wAHAd0B3QAJAd4B4AAHAeEB4QAFAeMB4wALAeQB5AAEAeUB5QAMAeYB5gAeAegB6AAPAekB6QAHAesB6wAHAe0B7QAdAe8B7wAdAfMB8wASAfYB9gAfAfgB+AAVAfkB+QAaAgECAQAXAgMCAwATAgQCBAAUAgYCBgAZAgcCBwATAggCCAAaAg0CDQAgAg8CDwAgAhACEAATAhMCFAAVAhYCFgAfAhwCHQAgAiECIQAZAiUCJQAdAiYCJgAgAikCKQACAjYCNgAXAjcCNwANAjgCOAAZAjkCOQANAjoCOgAZAlECUQATAlICUgAcAlMCUwAfAlQCVAAcAlgCWAAPAlkCWQAaAlwCXAAJAl4CXgAJAmACYAAJAmICYgAJAmQCZAAHAmwCbAAEAm0CbQAUAm4CbgAMAnACcAAQAnECcQAZAnICcgAQAnQCdAAPAnUCdQAaAn0CfQAWAoICggAHAoMCgwAPAoQChAAaAosCiwAHAo8CjwAHApECkQAHApICkgACApMCkwASApQClAACApUClQASApgCmAAGApkCmQAVApsCmwAVAp0CnQAVAp4CngAPAp8CnwAaAqgCqAAFAqkCqQAXAq0CrQAXAq8CrwATArACsAAeArECsQAZArICsgAeArMCswAZArQCtAAeArUCtQAZArgCuAAcArkCuQAfAr0CvQAfAr4CvgAPAr8CvwAaAtYC1gACAtcC1wASAuYC5gAHAucC5wAWAvgC+AAOAvoC+gAOAvwC/AAOAwIDAgACAwMDAwASAwQDBAACAwUDBQASAwYDBgACAwcDBwASAwgDCAACAwkDCQASAwoDCgACAwsDCwASAwwDDAACAw0DDQASAw4DDgACAw8DDwASAxADEAACAxEDEQASAxIDEgACAxMDEwASAxQDFAACAxUDFQASAxYDFgACAxcDFwASAxgDGAACAxkDGQASAxoDGgAGAxsDGwAVAxwDHAAGAx0DHQAVAx4DHgAGAx8DHwAVAyADIAAGAyEDIQAVAyIDIgAGAyMDIwAVAyQDJAAGAyUDJQAVAyYDJgAGAycDJwAVAygDKAAGAykDKQAVAyoDKgAHAywDLAAHAy4DLgAFAy8DLwAXAzADMAAFAzEDMQAXAzIDMgAFAzMDMwAXAzQDNAAFAzUDNQAXAzYDNgAFAzcDNwAXAzgDOAAFAzkDOQAXAzoDOgAFAzsDOwAXA0MDQwAXA0YDRgAIA0gDSAAIA1QDVAAQA1UDVQAZA1YDVgAQA1cDVwAZA1gDWAAQA1kDWQAZA1oDWgAQA1sDWwAZA1wDXAAFA3IDcgABA3YDdgABA3oDewABBDEEMQAEBDMENAAFAAEABgQwAAEAAAAAAAAAAAABAAAAAAAAAAAAFgAZABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAAAAAACAAAAAAAGgAAAAAAAAAAAAgAAAAIAAAAGwAJAAoACwAMABcADQAYAAAAAAAAAAAAAAAAAAMAAAAEAAQABAAAAAQAAAAAAAAAAAAAAAUABQAGAAUABAAAAAcAAAAOAA8AAAAcAA8AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgAAAAIAAoACgAKAAoADQAAAAAAAwADAAMAAwADAAMAAAAEAAQABAAEAAQAAAAAAAAAAAAAAAUABgAGAAYABgAGAAAAAAAOAA4ADgAOAA8AAAAPAAIAAwACAAMAAgADAAgABAAIAAQACAAEAAgABAAAAAQAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQACAAEAAgABAAIAAQACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABQAAAAUABQAAAAAACAAGAAgABgAIAAYACAAEAAAAAAAAAAAAAAAAABsABwAbAAcAGwAHABsABwAJAAAACQAAAAAAAAAKAA4ACgAOAAoADgAKAA4ACgAOAAoADgAMAAAADQAPAA0AGAAQABgAEAAYABAAAAAAAAAACAAEAAAADgAAAAAAAAAAAAAAAgADAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAHAAkAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAACAANAAAAAAACAAAAAAACAAAAGAAAAAgAAAAAAAIAAAAAAAAACAAAAAAAAAAAAA0AAAAXAAAAAAAAAA0ABAAAAAUAAAAOAAQAAAAPAAAAAAAAAAUAAAAAAAAAAAAAAA8AAAAGAAAAAAAEAAQAAAAOAAAAAAAAAAAAAAAOAAYADgAAAAAAAAAAAAAAAAAAAAkAAAAIAAAAAAAAABoAEQAAAAkAAAAAABUAAAACAAAAAAAAAAAAAAAXAAAAAAAAAAAAEQAAAAAACAAAAAAACAAJABUAAAAXAAAAEgAAAAAAAAAAAAAAAAAAAAAAAwAAAAAABQAAAAQAHAAAAAUABQAFABMABQAFAAYABQAFAAQAAAAPAAQAHAAFABQABQAFAAAAAAAFAAAABQAAAAQABAAAAAUABAAHAAAAAAAAABMABQAAAAUABQAPAAAACAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAGAAsADwALAA8ACAAEAAgAAAAIAAQACAAAAAgABAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAABcAHAAAAAAAAAAFAAAAAAAAAAAACQAAAAAABQAAAAUAAAAAAAgABAAIAAQACQAAAA0ADwANAAAAFwAcAAkAAAASABQAAAAAAAAAAAAAAAAAAAAAAAAAFwAcAAAAAAARABMAAAAFAAAABQASABQAAAAFAAAAAgADAAIAAwAAAAAAAAAEAAAABAAAAAQAFwAcAAAAAAAAAAAAAAAFAAAABQAIAAYACAAEAAgABgAAAAAAFQAPABUADwAVAA8AEgAUAAAABQAAAAUAAAAFABcAHAAAAAAAAAAEAAQABAAAAAAAAAAAABEAAAAAAAAACAAEAAAAAAAAAAAAEQATAAIAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAACAAMAAgADAAIAAwACAAMAAgADAAIAAwACAAMAAgADAAIAAwACAAMAAgADAAIAAwAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABAAIAAQACAAEAAgABgAIAAQACgAOAAoADgAAAA4AAAAOAAAADgAAAA4AAAAOAA0ADwANAA8ADQAPAA0ADwAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAGQAZAAAAAQABABYAAQABAAEAFgAAAAAAAAAWABYAAAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgAAAAIAAgAAAABAAAACgIGCBAABERGTFQAGmN5cmwASGdyZWsAdmxhdG4ApAAEAAAAAP//ABIAAAAKABQAHgAoADQAQQBLAFUAXwBpAHMAfQCHAJEAmwClAK8ABAAAAAD//wASAAEACwAVAB8AKQA1AEIATABWAGAAagB0AH4AiACSAJwApgCwAAQAAAAA//8AEgACAAwAFgAgACoANgBDAE0AVwBhAGsAdQB/AIkAkwCdAKcAsQAoAAZBWkUgAFRDUlQgAH5NT0wgAKhOQVYgANRST00gAQBUVVIgASwAAP//ABMAAwANABcAIQArADIANwBEAE4AWABiAGwAdgCAAIoAlACeAKgAsgAA//8AEgAEAA4AGAAiACwAOABFAE8AWQBjAG0AdwCBAIsAlQCfAKkAswAA//8AEgAFAA8AGQAjAC0AOQBGAFAAWgBkAG4AeACCAIwAlgCgAKoAtAAA//8AEwAGABAAGgAkAC4AOgA+AEcAUQBbAGUAbwB5AIMAjQCXAKEAqwC1AAD//wATAAcAEQAbACUALwA7AD8ASABSAFwAZgBwAHoAhACOAJgAogCsALYAAP//ABMACAASABwAJgAwADwAQABJAFMAXQBnAHEAewCFAI8AmQCjAK0AtwAA//8AEwAJABMAHQAnADEAMwA9AEoAVABeAGgAcgB8AIYAkACaAKQArgC4ALljMnNjBFhjMnNjBF5jMnNjBGRjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBkbGlnBHhkbGlnBH5kbGlnBIRkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbm9tBJBkbm9tBJZkbm9tBJxkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhsaWdhBLJsaWdhBLpsbnVtBMBsbnVtBMZsbnVtBMxsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsb2NsBNhsb2NsBN5sb2NsBORudW1yBOpudW1yBPBudW1yBPZudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxvbnVtBQJvbnVtBQhvbnVtBQ5vbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRwbnVtBRpwbnVtBSBwbnVtBSZwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxzbWNwBTJzbWNwBThzbWNwBT5zbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzczAxBUpzczAxBVBzczAxBVZzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAyBWJzczAyBWhzczAyBW5zczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAzBXpzczAzBYBzczAzBYZzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczA0BZJzczA0BZhzczA0BZ5zczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA1BapzczA1BbBzczA1BbZzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA2BcJzczA2BchzczA2Bc5zczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA3BdpzczA3BeBzczA3BeZzczA3BexzczA3BexzczA3BexzczA3BexzczA3BexzczA3BexzczA3Bex0bnVtBfJ0bnVtBfh0bnVtBf50bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgQAAAABAAEAAAABAAMAAAABAAIAAAABAAAAAAACAAgACQAAAAEADgAAAAEAEAAAAAEADwAAAAEADQAAAAEAQwAAAAEARQAAAAEARAAAAAEAQgAAAAMAPwBAAEEAAAACABEAEgAAAAEAEgAAAAEAPAAAAAEAPgAAAAEAPQAAAAEAOwAAAAEACgAAAAEADAAAAAEACwAAAAEARwAAAAEASQAAAAEASAAAAAEARgAAAAEAMAAAAAEAMgAAAAEAMQAAAAEALwAAAAEAOAAAAAEAOgAAAAEAOQAAAAEANwAAAAEABQAAAAEABwAAAAEABgAAAAEABAAAAAEAFAAAAAEAFgAAAAEAFQAAAAEAEwAAAAEAGAAAAAEAGgAAAAEAGQAAAAEAFwAAAAEAHAAAAAEAHgAAAAEAHQAAAAEAGwAAAAEAIAAAAAEAIgAAAAEAIQAAAAEAHwAAAAEAJAAAAAEAJgAAAAEAJQAAAAEAIwAAAAEAKAAAAAEAKgAAAAEAKQAAAAEAJwAAAAEALAAAAAEALgAAAAEALQAAAAEAKwAAAAEANAAAAAEANgAAAAEANQAAAAEAMwBLAJgAmACYAJgEJgQmBCYEJgcUB8AOUA5QDmYOiA6IDogOiA6+DuQPEg8SDxIPEg8mDyYPJg8mDzoPOg86DzoPTg9OD04PTg9gD2APYA9gD3oPeg96D3oPvA+8D7wPvA/aD9oP2g/aD/gP+A/4D/gQKhAqECoQKhBcEFwQXBBcEI4QohDuEMwQzBDMEMwQ7hDuEO4Q7hEaAAEAAAABAAgAAgHEAN8DvQPsA+sD6gPpA+gD5wPmA+UD5APjA+ID4QPgA98D3gPdA9wD2wPaA9kD2APXA9YD9gP3BKkDvAO7BFAEUQRSBFMEVARVBFcEWARZBFoEWwRcBF0EXgRfBE4EYARhBGIEYwRkBGUEZgRtBG4EbwRwBEwEcQRyBHMEdAR1BHYEdwR4BE0EeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMERASUBJUElgSXBJgEmQSaBJ0EnARPBJ4EnwSgBKEEogSjBKQEpQSmBKcEqAP+BFYEmwSqBKsErAStBK4ErwSwBLEEsgO6A7kEswS0BLUDuAS2BLcDtwS4A7YEuQPGBLoD0QS7BLwD0gS9A9MD1AS+BL8EwAP5BMED+ATCBMMExATFA/8EAAQBBMYExwQCBMgEAwTJBMoEBATLBAUEBgQHBMwECAQJBM0EzgTPBNAE0QTSBNMECgTcBNQECwQMBA0EDgQPBBAEEQQSBBMEFAQ4BBUEFgTVBBcEGAQZBNYEGgTXBNgEGwQcBB0EHgQfBCAE2QQhBCIE2gQjBNsEJAQlBCcEJgABAN8ACAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AZgBoAIMAhACFAIYAhwCIAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAnACdAJ4AnwCgAKIAwwDFAMcAyQDLAM0AzwDRANMA1QDXANkA2wDdAN8A4QDjAOUA5wDrAO0A7wDxAPMA9wD5APwA/gEAAQIBBgEIAQoBDwERARMBFQEXARkBGwEdAR8BIQEjASUBJwEpASsBLQEvATEBMwE1ATcBOQE7ATwBPgFAAU4BYgF5AXsBfAF9AX4BfwGAAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gJSAlQCWAJaAlwCXgJiAmQCagJsAnACcgJ0AnYCegJ8An4CgAKaAqICpAKqArADhwOOA5MDlgABAAAAAQAIAAIBdAC3A+wD6wPqA+kD6APnA+YD5QPkA+MD4gPhA+AD3wPeA90D3APbA9oD2QPYA9cD1gP2A/cEqQRQBFEEUgRTBFQEVQRXBFgEWQRaBFsEXARdBF4EXwROBGAEYQRiBGMEZARlBGYEbQRuBG8EcASmBHEEcgRzBHQEdQR2BHcEeARNBHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBEQElASVBJYElwSYBJkEmgSdBJwETwSeBJ8EoAShBKIEowSkBKUEpwSoA/4EVgSbBMgEAwTJBMoEBATLBAUEBgQHBMwECAQJBM0EzgTPBNAE0QTSBNMECgTcBNQECwQMBA0EDgQPBBAEEQQSBBMEFATAA/kEwQP4BMIEwwTEBMUD/wQABAEExgTHBAIEOAQVBBYE1QQXBBgEGQTWBBoE1wTYBBsEHAQdBB4EHwQgBNkEIQQiBNoEIwTbAAEAtwBFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AowCkAKUApgCnAKgAqgCrAKwArQCuAK8AsACxALIAswC0ALUAtgC3ALgAuQC8AL0AvgC/AMAAwgDEAMYAyADKAMwAzgDQANIA1ADWANgA2gDcAN4A4ADiAOQA5gDoAOwA7gDwAPIA9AD4APoA/QD/AQEBAwEHAQkBCwEQARIBFAEWARgBGgEcAR4BIAEiASQBJgEoASoBLAEuATABMgE0ATYBOAE6AT0BPwFBAU8BYwHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIQIiAlMCVQJZAlsCXQJfAmMCZQJrAm0CcQJzAnUCdwJ7An0CfwKBApsCowKlAqsCsQAGAAAABgASACoAQgBaAHIAigADAAAAAQASAAEAkAABAAAASgABAAEATQADAAAAAQASAAEAeAABAAAASgABAAEATgADAAAAAQASAAEAYAABAAAASgABAAEA8gADAAAAAQASAAEASAABAAAASgABAAECGQADAAAAAQASAAEAMAABAAAASgABAAECGwADAAAAAQASAAEAGAABAAAASgABAAEDLQACAAEBcQF1AAAABAAAAAEACAABBh4ANgByAKQArgC4AMoA/AEOARgBSgFkAX4BkAG6AewB9gIYAjICRAJ2AogCogLMAt4DEAMaAyQDNgNoA3IDfAOGA6ADugPMA/YEKAQyBFQEbgSABLIExATeBQgFGgUkBS4FOAVCBWwFlgXABeoGFAAGAA4AFAAaACAAJgAsAIMAAgFxAIQAAgFyAIYAAgFzAwQAAgF0AVQAAgF1AwIAAgF2AAEABALYAAIBdgABAAQAyQACAXIAAgAGAAwC2gACAXYC3AACA6sABgAOABQAGgAgACYALACLAAIBcQCMAAIBcgMeAAIBcwMcAAIBdAFWAAIBdQMaAAIBdgACAAYADAFKAAIBcgDlAAIDqwABAAQC3gACAXYABgAOABQAGgAgACYALACPAAIBcQCQAAIBcgDrAAIBcwMqAAIBdAFYAAIBdQMsAAIBdgADAAgADgAUAuAAAgFyAuIAAgF2APkAAgOrAAMACAAOABQA/AACAXIC5AACAXYA/gACA6sAAgAGAAwC5gACAXIC6AACAXYABQAMABIAGAAeACQBTAACAXEBBgACAXIAlAACAXMC6gACAXYBCAACA6sABgAOABQAGgAgACYALACVAAIBcQCWAAIBcgCYAAIBcwMwAAIBdAFaAAIBdQMuAAIBdgABAAQC7AACAXIABAAKABAAFgAcARcAAgFyAVwAAgF1Au4AAgF2ARkAAgOrAAMACAAOABQBHQACAXIC8AACAXYBYAACA6sAAgAGAAwC8gACAXYBYgACA6sABgAOABQAGgAgACYALACcAAIBcQCdAAIBcgErAAIBcwNIAAIBdAFeAAIBdQNGAAIBdgACAAYADAL0AAIBcwL2AAIBdgADAAgADgAUAvgAAgFxAvoAAgFyAv4AAgF2AAUADAASABgAHgAkA1QAAgFxAKAAAgFyA1oAAgFzA1gAAgF0A1YAAgF2AAIABgAMATwAAgFyAwAAAgF2AAYADgAUABoAIAAmACwAowACAXEApAACAXIApgACAXMDBQACAXQBVQACAXUDAwACAXYAAQAEAtkAAgF2AAEABADKAAIBcgACAAYADALbAAIBdgLdAAIDqwAGAA4AFAAaACAAJgAsAKsAAgFxAKwAAgFyAx8AAgFzAx0AAgF0AVcAAgF1AxsAAgF2AAEABAFLAAIBcgABAAQC3wACAXYAAQAEAy0AAgF2AAMACAAOABQC4QACAXIC4wACAXYA+gACA6sAAwAIAA4AFAD9AAIBcgLlAAIBdgD/AAIDqwACAAYADALnAAIBcgLpAAIBdgAFAAwAEgAYAB4AJAFNAAIBcQEHAAIBcgC0AAIBcwLrAAIBdgEJAAIDqwAGAA4AFAAaACAAJgAsALUAAgFxALYAAgFyALgAAgFzAzEAAgF0AVsAAgF1Ay8AAgF2AAEABALtAAIBcgAEAAoAEAAWABwBGAACAXIBXQACAXUC7wACAXYBGgACA6sAAwAIAA4AFAEeAAIBcgLxAAIBdgFhAAIDqwACAAYADALzAAIBdgFjAAIDqwAGAA4AFAAaACAAJgAsALwAAgFxAL0AAgFyASwAAgFzA0kAAgF0AV8AAgF1A0cAAgF2AAIABgAMAvUAAgFzAvcAAgF2AAMACAAOABQC+QACAXEC+wACAXIC/wACAXYABQAMABIAGAAeACQDVQACAXEAwAACAXIDWwACAXMDWQACAXQDVwACAXYAAgAGAAwBPQACAXIDAQACAXYAAQAEAVAAAgFyAAEABAFSAAIBcgABAAQBUQACAXIAAQAEAVMAAgFyAAUADAASABgAHgAkAK8AAgFxALAAAgFyAOwAAgFzAysAAgF0AVkAAgF1AAUADAASABgAHgAkAz4AAgFxAzwAAgFyA0IAAgFzA0AAAgF0A0QAAgF2AAUADAASABgAHgAkAz8AAgFxAz0AAgFyA0MAAgFzA0EAAgF0A0UAAgF2AAUADAASABgAHgAkA0wAAgFxA0oAAgFyA1AAAgFzA04AAgF0A1IAAgF2AAUADAASABgAHgAkA00AAgFxA0sAAgFyA1EAAgFzA08AAgF0A1MAAgF2AAEABAHBAAIBcgACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAiQCJACwAmwCbAC0AqQCpAC4AuwC7AC8A9AD0ADABRQFIADEBwAHAADUAAQAAAAEACAABAAYAPwABAAIBIQEiAAEAAAABAAgAAgAOAAQE3QTeBN8E4AABAAQAxwDIANsA3AAEAAAAAQAIAAEAJgACAAoAHAACAAYADAOsAAIASgOxAAIAWAABAAQDsgACAFgAAQACAEoAVwAEAAAAAQAIAAEARAACAAoAFAABAAQDrQACAE0AAQAEA68AAgBNAAQAAAABAAgAAQAeAAIACgAUAAEABAOuAAIAUAABAAQDsAACAFAAAQACAEoDrAABAAAAAQAIAAEABgN5AAEAAQBLAAEAAAABAAgAAQAGAiIAAQABAaEAAQAAAAEACAABAAYDjAABAAEANgABAAAAAQAIAAIAHAACA8EDwAABAAAAAQAIAAIACgACA78DvgABAAIALwBPAAEAAAABAAgAAgAeAAwEMQQzBDIENAQ1BCgEKQQqA/sELAQtBC4AAQAMACcAKAArADMANQBGAEcASABLAFMAVABVAAEAAAABAAgAAgAMAAMELwQwBDAAAQADAEkASwP7AAEAAAABAAgAAgBmAAgERgQ2BDcEOQQ6BEIEQwRFAAEAAAABAAgAAgAWAAgAGwAVABQAHQAZABgAFwAWAAEACAP6BCsEZwRoBGkEagRrBGwAAQAAAAEACAACABYACARnBCsEbARrBGoEaQP6BGgAAQAIABQAFQAWABcAGAAZABsAHQABAAAAAQAIAAIAFgAIABUAFgAXABgAGQAbAB0AFAABAAgENgQ3BDkEOgRCBEMERQRGAAEAAAABAAgAAQAGA3AAAQABABMABgAAAAEACAADAAEAEgABAGYAAAABAAAASgACAAIDgwODAAADxwPQAAEAAQAAAAEACAACADwACgPQA88DzgPNA8wDywPKA8kDyAPHAAEAAAABAAgAAgAaAAoEOwB8AHUAdgQ8BD0EPgQ/BEAEQQACAAEAFAAdAAAAAQAAAAEACAACACYAEAPQA88DzgPNA8wDywPKA8kDyAPHBEkERwRKBEsESAThAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgDyAhkCGwMt",
+  "Roboto-Regular.ttf": "AAEAAAASAQAABAAgR0RFRtRX1FkAAg/sAAACREdQT1NKcuCzAAISMAAAUiRHU1VCw4aZEQACZFQAABfoT1MvMqCnsaYAAAGoAAAAYGNtYXBAmkl2AAAafAAAEshjdnQgJEEG5QAAL9wAAABMZnBnbWf0XKsAAC1EAAABvGdhc3AACAATAAIP4AAAAAxnbHlmHN2bBQAAOfAAAdM2aGRteDc4ERcAABWQAAAE7GhlYWT4RqsOAAABLAAAADZoaGVhCroKggAAAWQAAAAkaG10eOiEiIgAAAIIAAATiGxvY2HgyGepAAAwKAAACcZtYXhwBxIC+QAAAYgAAAAgbmFtZTVTY1kAAg0oAAACmHBvc3T/bQBkAAIPwAAAACBwcmVwdKCP7AAALwAAAADbAAEAAAACAACEKlnoXw889QAbCAAAAAAAxPARLgAAAADQ206a+hv91QkwCHMAAAAJAAIAAAAAAAAAAQAAB2z+DAAACUn6G/5KCTAAAQAAAAAAAAAAAAAAAAAABOIAAQAABOIAjwAWAFQABQABAAAAAAAOAAACAAIUAAYAAQADBIUBkAAFAAAFmgUzAAABHwWaBTMAAAPRAGYCAAAAAgAAAAAAAAAAAOAACv9QACF/AAAAIQAAAABHT09HAEAAAP/9BgD+AABmB5oCACAAAZ8AAAAABDoFsAAgACAAAgOMAGQAAAAAAAAAAAH7AAAB+wAAAg8AoAKPAIgE7QB3BH4AbgXcAGkE+QBlAWUAZwK8AIUCyAAmA3IAHASJAE4BkgAdAjUAJQIbAJADTAASBH4AcwR+AKoEfgBdBH4AXgR+ADUEfgCaBH4AhAR+AE0EfgBwBH4AZAHwAIYBsQApBBEASARkAJgELgCGA8cASwcvAGoFOAAcBPsAqQU1AHcFPwCpBIwAqQRsAKkFcwB6BbQAqQItALcEagA1BQQAqQROAKkG/ACpBbQAqQWAAHYFDACpBYAAbQTtAKgEvwBQBMYAMQUwAIwFFwAcBxkAPQUEADkEzgAPBMoAVgIfAJIDSAAoAh8ACQNYAEADnAAEAnkAOQRaAG0EfQCMBDAAXASDAF8EPQBdAscAPAR9AGAEaACMAfEAjQHp/78EDgCNAfEAnAcDAIsEagCMBJAAWwR9AIwEjABfArUAjAQgAF8CnQAJBGkAiAPgACEGAwArA/cAKQPJABYD9wBYArUAQAHzAK8CtQATBXEAgwHzAIsEYABpBKYAWwW0AGkE2AAfAesAkwToAFoDWABmBkkAWwOTAJMDwQBmBG4AfwZKAFoDqgB4Av0AggRGAGEC7wBCAu8APgKCAHsEiACaA+kAQwIWAJMB+wB0Au8AegOjAHoDwABmBdwAVQY1AFAGOQBvA8kARAd6//IERABZBYAAdgS6AKYEwgCLBsEATgSwAH4EkQBHBIgAWwScAJUFmgAdAfoAmwRzAJoETwAiAikAIgWLAKIEiACRB6EAaAdEAGEB/ACgBYcAXQK5/+QFfgBlBJIAWwWQAIwE8wCIAgP/tAQ3AGIDxACpA40AjAOrAHgDagCBAfEAjQKtAHkCKgAyA8YAewL8AF4CWgB+AAD8pwAA/W8AAPyLAAD9XgAA/CcB7/04Ag0AtwQLAHECFwCTBHMAsQWkAB8FcQBnBT4AMgSRAHgFtQCyBJEARQW7AE0FiQBaBVIAcQSFAGQEvQCgBAIALgSIAGAEUABjBCUAbQSIAJEEjgB6ApcAwwRuACUD7ABlBMQAKQSIAJEETQBlBIgAYAQsAFEEXQCPBaMAVwWaAF8GlwB6BKEAeQRC/9oGSABKBf8AKgVkAHsIkQAxCKQAsQaCAD4FtACwBQsAogYEADIHQwAbBL8AUAW0ALEFqQAvBQcATQYsAFMF2QCvBXoAlgeHALAHwACwBhIAEAbrALIFBQCjBWQAkwcnALcFGABZBGwAYQSSAJ0DWwCaBNQALgYgABUEEABYBJ4AnARSAJwEoAAsBe8AnQSdAJwEngCcA9gAKAXNAGQEvQCcBFkAZwZ4AJwGngCRBPcAHgY2AJ0EWACdBE0AZAaHAJ0EZAAvBGj/6ARNAGcGyQAnBuQAnASJ//0EngCcBwgAnAYrAIEEVv/cBysAtwX4AJkE0gAoBEYADwcLAMkGCwC8BtEAkwXhAJYJBAC2B9EAmwQjAFAD2wBMBXEAZwSLAFsFCgAWBAMALgVxAGcEiABbBwEAnAYkAH4HCACcBisAgQUyAHUERwBkBP0AdAAA/GcAAPxxAAD9ZgAA/aQAAPobAAD6LARW/9wFGwCoBIkAjARjAKIDkACRBNsAsQQFAJEFCQCjBH4AmgaMAEQFgwA+B88AqAW0AJEIMQCwBvQAkQXuAHEE0wBtBywANAVcAB8FbwCWBGoAgwVwAIoGLwA/BL3/3gUJAKMEWgCaBbIAsQSIAJEFhwBdBKgAaASoAGkEtwA6A0kAOwT2AFcGlABZBuQAZAZWADYFKwAxBEkAUgQHAHkHwQBEBnUAPwf7AKkGoQCQBPYAdgQdAGUFrQAjBSAARgVkAJYDIABvBBQAAAgpAAAEFAAACCkAAAK5AAACCgAAAVwAAAR/AAACMAAAAaIAAADRAAAAAAAAAjQAJQI0ACUFQACiBj8AkAOmAA0BmQBgAZkAMAGXACQBmQBPAtQAaALbADwCwQAkBGkARgSPAFcCsgCKA8QAlAVaAJQA9gAmB6oARAJmAGwCZgBZA6MAOwLvADYDYAB6BKYAWwZVAB8GkACnCHYAqAdjADkGKwCMBH4AXwXaAB8EIgAqBHQAIAVIAF0FTwAfBecAegPOAGgIOgCiBQEAZwUXAJgGJgBUBtcAZAbPAGMGagBZBI8AagWOAKkErwBFBJIAqATFAD8IOgBiAgz/sASCAGUEZACYBBEAPgQvAIUECAArAkwAtQKPAG4CAwBcBPMAPARuAB8EiwA8BtQAPAbUADwE7gA8BpsAXwAAAAAIMwBbCDUAXAQgADsEngBaAfz/tgGRAGcDpACDA54AgQOfAIED9ABpBA4AaQPz/14D7wBuA6QAgQH9AJ8EhQATBFAAigR8AGAEgACKA+YAigPLAIoErABjBOMAigHoAJcDzwArBFQAigO0AIoGAgCKBOMAigS7AGAEXACKBLsAWQRKAIoEIABDBCYAKAR8AHQEZwAUBhUAMQRUACYEKwANBCMARwLvAFAC7wB6Au8AQgLvAD4C7wA2Au8AWwLvAFYC7wA6Au8ATwLvAEkDlgCPArUAngQ6AB4EwwBkBUwAsQUkALIEEwCSBT0AsgQPAJIEIABDBDMAMAQ8ABYDrwCKBGcAFAS7AGAEZwAUA4kAPgTOAIoD7wA/BWcAYAUXAGAE8gB1BXIAJgR8AGAHQQAnB08AigV0ACgEzQCKBFkAigUkAC4GCwAfBD8ARwTsAIoETgCLBMEAJwQfACIFKACKBGoAPQZRAIoGrACKBR0ACAXxAIoETgCKBHsASwZ2AIoEhwBQBBEACwZHAB8EeQCLBQkAiwU3ACMFwgBgBF8ADQSoACYGYQAmBGoAPQRqAIoFwwACBMoAXgQ/AEcEuwBgBDMAMAPjAEIIIgCKBKsAKAR9AIwEMgBcBJMAWwSMAFsDeQBXBI0AjAScAFsEPQBdBH0AYAWBAH4FrgB+BZMAsgXgAH4F4wB+A9UAoASCAIMDrwCKBFgADwTPAD4C7wBQAu8ANgLvAFsC7wBWAu8AOgLvAE8C7wBJBGsAZQQuAEoGpABgBLkAggUAAHgCBv+0AgT/tAH7AJsB+//6AfsAmwH7AIYEUACKAfsAAAI1ACUFXQAlBV0AJQSGAAAExgAxAp3/9AU4ABwFOAAcBTgAHAU4ABwFOAAcBTgAHAU4ABwFNQB3BIwAqQSMAKkEjACpBIwAqQIt/+ACLQCwAi3/6QIt/9YFtACpBYAAdgWAAHYFgAB2BYAAdgWAAHYFMACMBTAAjAUwAIwFMACMBM4ADwRaAG0EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EMABcBD0AXQQ9AF0EPQBdBD0AXQH6/8YB+gCWAfr/zwH6/7wEagCMBJAAWwSQAFsEkABbBJAAWwSQAFsEaQCIBGkAiARpAIgEaQCIA8kAFgPJABYFOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FNQB3BDAAXAU1AHcEMABcBTUAdwQwAFwFNQB3BDAAXAU/AKkFGQBfBIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQVzAHoEfQBgBXMAegR9AGAFcwB6BH0AYAVzAHoEfQBgBbQAqQRoAIwCLf+3Afr/nQIt/7YB+v+cAi3/7AH6/9ICLQAYAfH/+wItAKoGlwC3A9oAjQRqADUCA/+0BQQAqQQOAI0ETgChAfEAkwROAKkB8QBXBE4AqQKHAJwETgCpAs0AnAW0AKkEagCMBbQAqQRqAIwFtACpBGoAjARq/7wFgAB2BJAAWwWAAHYEkABbBYAAdgSQAFsE7QCoArUAjATtAKgCtQBTBO0AqAK1AGMEvwBQBCAAXwS/AFAEIABfBL8AUAQgAF8EvwBQBCAAXwS/AFAEIABfBMYAMQKdAAkExgAxAp0ACQTGADECxQAJBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBxkAPQYDACsEzgAPA8kAFgTOAA8EygBWA/cAWATKAFYD9wBYBMoAVgP3AFgHev/yBsEATgWAAHYEiABbBID/vgSA/74EJgAoBIUAEwSFABMEhQATBIUAEwSFABMEhQATBIUAEwR8AGAD5gCKA+YAigPmAIoD5gCKAej/vgHoAI4B6P/HAej/tATjAIoEuwBgBLsAYAS7AGAEuwBgBLsAYAR8AHQEfAB0BHwAdAR8AHQEKwANBIUAEwSFABMEhQATBHwAYAR8AGAEfABgBHwAYASAAIoD5gCKA+YAigPmAIoD5gCKA+YAigSsAGMErABjBKwAYwSsAGME4wCKAej/lQHo/5QB6P/KAegABgHoAIkDzwArBFQAigO0AIIDtACKA7QAigO0AIoE4wCKBOMAigTjAIoEuwBgBLsAYAS7AGAESgCKBEoAigRKAIoEIABDBCAAQwQgAEMEIABDBCYAKAQmACgEJgAoBHwAdAR8AHQEfAB0BHwAdAR8AHQEfAB0BhUAMQQrAA0EKwANBCMARwQjAEcEIwBHBTgAHATw//AGGP/+ApEABAWU//oFMv94BWb//QKX/5sFOAAcBPsAqQSMAKkEygBWBbQAqQItALcFBACpBvwAqQW0AKkFgAB2BQwAqQTGADEEzgAPBQQAOQIt/9YEzgAPBIUAZARQAGMEiACRApcAwwRdAI8EcwCaBJAAWwSIAJoD4AAhA/cAKQKX/+YEXQCPBJAAWwRdAI8GlwB6BIwAqQRzALEEvwBQAi0AtwIt/9YEagA1BSQAsgUEAKkFBwBNBTgAHAT7AKkEcwCxBIwAqQW0ALEG/ACpBbQAqQWAAHYFtQCyBQwAqQU1AHcExgAxBQQAOQRaAG0EPQBdBJ4AnASQAFsEfQCMBDAAXAPJABYD9wApBD0AXQNbAJoEIABfAfEAjQH6/7wB6f+/BFIAnAPJABYHGQA9BgMAKwcZAD0GAwArBxkAPQYDACsEzgAPA8kAFgFlAGcCjwCIBB4AoAID/7QBmQAwBvwAqQcDAIsFOAAcBFoAbQSMAKkFtACxBD0AXQSeAJwFiQBaBZoAXwUKABYEA//7CFkAWwlJAHYEvwBQBBAAWAU1AHcEMABcBM4ADwQCAC4CLQC3B0MAGwYgABUCLQC3BTgAHARaAG0FOAAcBFoAbQd6//IGwQBOBIwAqQQ9AF0FhwBdBDcAYgQ3AGIHQwAbBiAAFQS/AFAEEABYBbQAsQSeAJwFtACxBJ4AnAWAAHYEkABbBXEAZwSLAFsFcQBnBIsAWwVkAJMETQBkBQcATQPJABYFBwBNA8kAFgUHAE0DyQAWBXoAlgRZAGcG6wCyBjYAnQUEADkD9wApBIMAXwWpAC8EoAAsBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBTgAHARa/8oFOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjP/wBD3/ugSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQItALcB+gCbAi0AowHxAIUFgAB2BJAAWwWAAHYEkABbBYAAdgSQAFsFgABHBJD/xAWAAHYEkABbBYAAdgSQAFsFgAB2BJAAWwV+AGUEkgBbBX4AZQSSAFsFfgBlBJIAWwV+AGUEkgBbBX4AZQSSAFsFMACMBGkAiAUwAIwEaQCIBZAAjATzAIgFkACMBPMAiAWQAIwE8wCIBZAAjATzAIgFkACMBPMAiATOAA8DyQAWBM4ADwPJABYEzgAPA8kAFgShAF8EoQBfBSQAsgRSAJwFtACpBJ0AnATGADED2AAoBQQAOQP3ACkFegCWBFkAZwV6AJYEWQBnBHMAsQNbAJoHQwAbBiAAFQYvAD8Evf/eBGgAjAUF/9QFBf/UBHMAAwNb//wFOAALBCf/0wW0ALEEngCcBbQAqQSdAJwG/ACpBe8AnQWpAC8EoAAsBM4ADwQCAC4FBAA5A/cAKQRQAGMEbAASBj8AkAR+AF0EfgBeBH4ANQR+AJoEkgBkBKYAhwVzAHoEfQBgBbQAqQRqAIwFOAAcBFoAOQSMAF8EPQApAi3/CgH6/vAFgAB2BJAAMwTtAFUCtf+LBTAAjARpACsEpv86BPsAqQR9AIwFPwCpBIMAXwU/AKkEgwBfBbQAqQRoAIwFBACpBA4AjQUEAKkEDgCNBE4AqQHxAIYG/ACpBwMAiwW0AKkEagCMBQwAqQR9AIwE7QCoArUAggS/AFAEIABfBMYAMQKdAAkFFwAcA+AAIQUXABwD4AAhBxkAPQYDACsEygBWA/cAWAXG/ngEhQATBCL/nwUf/7wCJP/ABMX/3wRn/1cE/P/4BIUAEwRQAIoD5gCKBCMARwTjAIoB6ACXBFQAigYCAIoEuwBgBFwAigQmACgEKwANBFQAJgHo/7QEKwANA+YAigOvAIoEIABDAegAlwHo/7QDzwArBFQAigQfACIEhQATBFAAigOvAIoD5gCKBOwAigYCAIoE4wCKBLsAYATOAIoEXACKBHwAYAQmACgEVAAmBD8ARwTjAIoEfABgBCsADQXDAAIE7ACKBB8AIgVnAGAFOAAcBFoAbQSMAKkEPQBdAAAAAQAABOQJCgQAAAICAgMGBQcGAgMDBAUCAgIEBQUFBQUFBQUFBQICBQUFBAgGBgYGBQUGBgIFBgUIBgYGBgYFBQYGCAYFBQIEAgQEAwUFBQUFAwUFAgIFAggFBQUFAwUDBQQHBAQEAwIDBgIFBQYFAgYEBwQEBQcEAwUDAwMFBAICAwQEBwcHBAgFBgUFCAUFBQUGAgUFAgYFCQgCBgMGBQYGAgUEBAQEAgMCBAMDAAAAAAACAgUCBQYGBgUGBQYGBgUFBQUFBQUFAwUEBQUFBQUFBgYHBQUHBwYKCgcGBgcIBQYGBgcHBggJBwgGBggGBQUEBQcFBQUFBwUFBAcFBQcHBgcFBQcFBQUICAUFCAcFCAcFBQgHCAcKCQUEBgUGBQYFCAcIBwYFBgAAAAAAAAUGBQUEBQUGBQcGCQYJCAcFCAYGBQYHBQYFBgUGBQUFBAYHCAcGBQUJBwkHBgUGBgYEBQkFCQMCAgUCAgEAAgIGBwQCAgICAwMDBQUDBAYBCQMDBAMEBQcHCggHBQcFBQYGBwQJBgYHCAgHBQYFBQUJAgUFBQUFAwMCBgUFCAgGBwAJCQUFAgIEBAQEBQQEBAIFBQUFBAQFBgIEBQQHBgUFBQUFBQUFBwUFBQMDAwMDAwMDAwMEAwUFBgYFBgUFBQUEBQUFBAUEBgYGBgUICAYFBQYHBQYFBQUGBQcIBgcFBQcFBQcFBgYGBQUHBQUGBQUFBQQJBQUFBQUEBQUFBQYGBgcHBAUEBQUDAwMDAwMDBQUHBQYCAgICAgIFAgIGBgUFAwYGBgYGBgYGBQUFBQICAgIGBgYGBgYGBgYGBQUFBQUFBQUFBQUFBQICAgIFBQUFBQUFBQUFBAQGBQYFBgUGBQYFBgUGBQYGBQUFBQUFBQUFBQYFBgUGBQYFBgUCAgICAgICAgIHBAUCBgUFAgUCBQMFAwYFBgUGBQUGBQYFBgUGAwYDBgMFBQUFBQUFBQUFBQMFAwUDBgUGBQYFBgUGBQYFCAcFBAUFBAUEBQQICAYFBQUFBQUF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sRCxUrG2sc2x5LH7shKyK7JEslCyXLJzsoqyobK6stGy6LL/sxizL7NGs12zdLOLs6Szu7PSs+m0ArQZtDC0R7RdtHO0jLSltLG0vbTUtOu1AbUatTC1RrVdtXa1jLWjtbq10LXmtf+2FrYttkO2XLZztou2ora4ts+25rdJt9+39rgNuCS4OrhRuGi4f7iVuKy43bj0uQq5Ibk4uU+5ZrnOulK6abp/upa6rLrDutq68bsIuxS7K7tCu1S7a7uCu5m7sLvHu9676bv0vAu8F7wjvDq8UbxdvGm8gLyXvKO8r7zEvPm9Bb0RvSi9P71LvVe9br2EvZS9q73Bvdi9774IviG+OL5Pvlu+Z75+vpS+q77Cvtm+7777vwe/E78fvza/TL9Yv2S/cL98v5O/n7+2v8y/47/5wBDAJ8BAwFnAcsCLwOjBTsFlwXzBk8GpwcLB2cHwwgfCHsI1wkvCYsJ5wpDCp8LKwvLDBcMcwzPDScNfw3jDkcOdw6nDwMPXw+3EBcQbxDHESMRhxHjEj8SmxL3E1MTtxQTFG8UxxUrFYcV3xY7F8cYIxh7GNcZMxmLGeMaOxqXHDsckxzrHUcdox3THi8eix7nH0Mfbx/HICMgUyCrINshLyFfIbsh6yJHIqMi/yNjI78j7yRHJKMk+yUrJYMlsyYLJjsmkybrJ0cnqygPKX8p2yozKpMq7ytLK6Mrzyv/LC8sXyyPLL8s7y1fLX8tny2/Ld8t/y4fLj8uXy5/Lp8uvy7fLv8vHy+DL+cwQzCfMPsxUzG/Md8x/zIfMj8yXzK/Mx8zezPXNDM0lzTzNp82vzcjN0M3Yze/OBs4OzhbOHs4mzj3ORc5NzlXOXc5lzm3Odc59zoXOjc6kzqzOtM8Hzw/PF88wz0fPT89Xz3DPeM+Pz6XPvM/Tz+rQAdAa0DPQStBh0GnQcdB90JTQnNCz0MrQ1tDi0PnRENEn0T7RRtFO0WfRgNGM0ZjRpNGw0bzRyNHQ0djR4NH30g7SFtIt0kTSW9J00nzShNKb0rLSy9LT0uzTBdMe0zfTT9Nm03zTldOu08fT4NPo0/DUCdQi1DvUU9Rq1IDUmdSx1MrU49T81RTVMdVO1VrVZtVu1XrVhtWS1Z7VtdXM1eXV/dYW1i7WR9Zf1njWkNar1sXW3tb31xDXKddC11vXdNeN16jXw9fP19vX8tgJ2CDYNthP2GfYgNiY2LHYydji2PrZFdkv2UbZXdlp2XXZgdmN2aTZu9nU2ezaBdod2jbaTtpn2n/amtq02sva4tr52xDbJ9s+21Xba9t324Pbj9ub27Lbydvg2/fcDtwl3DzcU9xq3IDcjNyY3KTcsNzH3N7c9d0L3YHdlt2i3a7dut3G3dLd3t3q3fbeAt4O3hreJt4y3j7eSt5W3mLebt523tTfMt9037PgF+B14JDgq+C34MPgz+Db4Ofg8+E94Y3h5eI74kPiT+JZ4mHiaeJx4nnigeKJ4qDit+LO4uXi/uMX4zDjSeNi43vjlOOt48bj3+P45BHkHeQp5DXkQeRN5FnkZeRx5H3klOSm5LLkvuTK5Nbk4uTu5PrlBuUd5TTlQOVM5VjlZOVw5Xzlk+Wp5bXlweXN5dnl5eXx5f3mCeYV5iHmLeY55kXmUeZZ5mHmaeZx5nnmgeaJ5pHmmeah5qnmsea55tLm6ucC5xnnIecp50LnSudh53fnf+eH54/nl+eu57bnvufG587n1ufe5+bn7uh46MTpIukq6TbpTelj6Wvpd+mD6Y/pmwAAAAUAZAAAAygFsAADAAYACQAMAA8AcbIMEBEREjmwDBCwANCwDBCwBtCwDBCwCdCwDBCwDdAAsABFWLACLxuxAhw+WbAARViwAC8bsQAQPlmyBAIAERI5sgUCABESObIHAgAREjmyCAIAERI5sQoM9LIMAgAREjmyDQIAERI5sAIQsQ4M9DAxISERIQMRAQERAQMhATUBIQMo/TwCxDb+7v66AQzkAgP+/gEC/f0FsPqkBQf9fQJ3+xECeP1eAl6IAl4AAgCg//UBewWwAAMADAAvALAARViwAi8bsQIcPlmwAEVYsAsvG7ELED5ZsgYFCitYIdgb9FmyAQYCERI5MDEBIwMzAzQ2MhYUBiImAVunDcLJN2w4OGw3AZsEFfqtLT09Wjs7AAIAiAQSAiMGAAAEAAkAGQCwAy+yAgoDERI5sAIvsAfQsAMQsAjQMDEBAyMTMwUDIxMzARUebwGMAQ4ebwGMBXj+mgHuiP6aAe4AAgB3AAAE0wWwABsAHwCPALAARViwDC8bsQwcPlmwAEVYsBAvG7EQHD5ZsABFWLACLxuxAhA+WbAARViwGi8bsRoQPlmyHQwCERI5fLAdLxiyAAMKK1gh2Bv0WbAE0LAdELAG0LAdELAL0LALL7IIAworWCHYG/RZsAsQsA7QsAsQsBLQsAgQsBTQsB0QsBbQsAAQsBjQsAgQsB7QMDEBIQMjEyM1IRMhNSETMwMhEzMDMxUjAzMVIwMjAyETIQL9/vhQj1DvAQlF/v4BHVKPUgEIUpBSzOdF4ftQkJ4BCEX++AGa/mYBmokBYosBoP5gAaD+YIv+non+ZgIjAWIAAAEAbv8wBBEGnAArAGYAsABFWLAJLxuxCRw+WbAARViwIi8bsSIQPlmyAiIJERI5sAkQsAzQsAkQsBDQsAkQshMBCitYIdgb9FmwAhCyGQEKK1gh2Bv0WbAiELAf0LAiELAm0LAiELIpAQorWCHYG/RZMDEBNCYnJiY1NDY3NTMVFhYVIzQmIyIGFRQWBBYWFRQGBxUjNSYmNTMUFjMyNgNYgZnVw7+nlai7uIZyd36FATGrUcu3lLrTuZKGg5YBd1x+M0HRoaTSFNvcF+zNjaZ7bmZ5Y3eeaqnOE7+/EefGi5Z+AAUAaf/rBYMFxQANABoAJgA0ADgAeACwAEVYsAMvG7EDHD5ZsABFWLAjLxuxIxA+WbADELAK0LAKL7IRBAorWCHYG/RZsAMQshgECitYIdgb9FmwIxCwHdCwHS+wIxCyKgQKK1gh2Bv0WbAdELIxBAorWCHYG/RZsjUjAxESObA1L7I3AyMREjmwNy8wMRM0NjMyFhUVFAYjIiY1FxQWMzI2NTU0JiIGFQE0NiAWFRUUBiAmNRcUFjMyNjU1NCYjIgYVBScBF2mng4Wlp4GCqopYSkdXVpRWAjunAQaop/78qopYSkhWV0lHWf4HaQLHaQSYg6qriEeEp6eLB05lYlVJTmZmUvzRg6moi0eDqaeLBk9lY1VKT2RjVPNCBHJCAAMAZf/sBPMFxAAeACcAMwCFALAARViwCS8bsQkcPlmwAEVYsBwvG7EcED5ZsABFWLAYLxuxGBA+WbIiHAkREjmyKgkcERI5sgMiKhESObIQKiIREjmyEQkcERI5shMcCRESObIZHAkREjmyFhEZERI5sBwQsh8BCitYIdgb9FmyIR8RERI5sAkQsjEBCitYIdgb9FkwMRM0NjcmJjU0NjMyFhUUBgcHATY1MxQHFyMnBgYjIiQFMjcBBwYVFBYDFBc3NjY1NCYjIgZldaVhQsSolsRZb2sBRESne9DeYUrHZ9X+/gHXk3r+nSGnmSJ2dkQyZExSYAGHabB1dpBHpryvhViVUk/+fYKf/6j5c0JF4ktwAakYe4J2jgPlYJBTMFc+Q1lvAAEAZwQhAP0GAAAEABAAsAMvsgIFAxESObACLzAxEwMjEzP9FYEBlQWR/pAB3wABAIX+KgKVBmsAEQAJALAOL7AELzAxEzQSEjcXBgIDBxATFhcHJicChXnwgSaSuwkBjVV1JoV57AJP4gGgAVRGenD+NP7jVf5+/uSqYHFKrgFUAAABACb+KgI3BmsAEQAJALAOL7AELzAxARQCAgcnNhITNTQCAic3FhISAjd18YQnmrsCWJ1iJ4TvdwJF3/5n/qZJcXYB8QEvINIBaQEeUHFJ/qr+ZAABABwCYQNVBbAADgAgALAARViwBC8bsQQcPlmwANAZsAAvGLAJ0BmwCS8YMDEBJTcFAzMDJRcFEwcDAycBSv7SLgEuCZkKASku/s3GfLq0fQPXWpdwAVj+o26YW/7xXgEg/udbAAABAE4AkgQ0BLYACwAaALAJL7AA0LAJELIGAQorWCHYG/RZsAPQMDEBIRUhESMRITUhETMCngGW/mq6/moBlroDDa/+NAHMrwGpAAEAHf7eATQA2wAIABcAsAkvsgQFCitYIdgb9FmwANCwAC8wMRMnNjc1MxUUBoZpXgS1Y/7eSIOLp5FlygAAAQAlAh8CDQK2AAMAEQCwAi+yAQEKK1gh2Bv0WTAxASE1IQIN/hgB6AIflwABAJD/9QF2ANEACQAbALAARViwBy8bsQcQPlmyAgUKK1gh2Bv0WTAxNzQ2MhYVFAYiJpA5cjs7cjlhMEBAMC4+PgABABL/gwMQBbAAAwATALAAL7AARViwAi8bsQIcPlkwMRcjATOxnwJgnn0GLQAAAgBz/+wECgXEAA0AGwA5ALAARViwCi8bsQocPlmwAEVYsAMvG7EDED5ZsAoQshEBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxARACIyICAzUQEjMyEhMnNCYjIgYHERQWMzI2NwQK3uzp4ATe7eveA7mEj46CAomLiYUDAm3+u/7EATUBM/cBQQE4/tP+xg3r19be/tjs4dTkAAEAqgAAAtkFtwAGADkAsABFWLAFLxuxBRw+WbAARViwAC8bsQAQPlmyBAAFERI5sAQvsgMBCitYIdgb9FmyAgMFERI5MDEhIxEFNSUzAtm6/osCEh0E0YmoxwAAAQBdAAAEMwXEABcATQCwAEVYsBAvG7EQHD5ZsABFWLAALxuxABA+WbIXAQorWCHYG/RZsALQsgMQFxESObAQELIJAQorWCHYG/RZsBAQsAzQshUXEBESOTAxISE1ATY2NTQmIyIGFSM0JDMyFhUUAQEhBDP8RgH4cFWKc4qZuQED2cvs/u7+egLbhQIwf59VcpKdjMn41bHX/tf+WQABAF7/7AP5BcQAJgB4ALAARViwDS8bsQ0cPlmwAEVYsBkvG7EZED5ZsgANGRESObAAL7LPAAFdsp8AAXGyLwABXbJfAAFysA0QsgYBCitYIdgb9FmwDRCwCdCwABCyJgEKK1gh2Bv0WbITJgAREjmwGRCwHNCwGRCyHwEKK1gh2Bv0WTAxATM2NjUQIyIGFSM0NjMyFhUUBgcWFhUUBCAkNTMUFjMyNjU0JicjAYaLg5b/eI+5/cPO6ntqeIP/AP5m/v+6ln6GjpyTiwMyAoZyAQCJca3l2sJfsiwmsH/E5t62c4qMg3+IAgACADUAAARQBbAACgAOAEkAsABFWLAJLxuxCRw+WbAARViwBC8bsQQQPlmyAQkEERI5sAEvsgIBCitYIdgb9FmwBtCwARCwC9CyCAYLERI5sg0JBBESOTAxATMVIxEjESE1ATMBIREHA4bKyrr9aQKMxf2BAcUWAemX/q4BUm0D8fw5AsooAAEAmv/sBC0FsAAdAGEAsABFWLABLxuxARw+WbAARViwDS8bsQ0QPlmwARCyBAEKK1gh2Bv0WbIHDQEREjmwBy+yGgEKK1gh2Bv0WbIFBxoREjmwDRCwEdCwDRCyFAEKK1gh2Bv0WbAHELAd0DAxExMhFSEDNjMyEhUUAiMiJiczFhYzMjY1NCYjIgcHzkoC6v2zLGuIx+rz2sH0Ea8RkHaBk5+EeUUxAtoC1qv+cz/++eDh/v3WvX1/sJuSsTUoAAIAhP/sBBwFsQAUACEATgCwAEVYsAAvG7EAHD5ZsABFWLANLxuxDRA+WbAAELIBAQorWCHYG/RZsgcNABESObAHL7IVAQorWCHYG/RZsA0QshwBCitYIdgb9FkwMQEVIwYEBzYzMhIVFAIjIgA1NRAAJQMiBgcVFBYzMjY1NCYDTyLY/wAUc8e+4/XO0f78AVcBU9JfoB+ieX2PkQWxnQT44YT+9NTh/vIBQf1HAZIBqQX9cHJWRLTcuJWWuQABAE0AAAQlBbAABgAyALAARViwBS8bsQUcPlmwAEVYsAEvG7EBED5ZsAUQsgMBCitYIdgb9FmyAAMFERI5MDEBASMBITUhBCX9pcICWfzsA9gFSPq4BRiYAAADAHD/7AQOBcQAFwAhACsAYQCwAEVYsBUvG7EVHD5ZsABFWLAJLxuxCRA+WbInCRUREjmwJy+yzycBXbIaAQorWCHYG/RZsgMaJxESObIPJxoREjmwCRCyHwEKK1gh2Bv0WbAVELIiAQorWCHYG/RZMDEBFAYHFhYVFAYjIiY1NDY3JiY1NDYzMhYDNCYiBhQWMzI2ASIGFRQWMjY0JgPsc2Jyhf/Q0v2BcmFw7MHA7Zeb+peTg4KU/upth4XehYoENG2qMDG8d73g4bx2vjEwqmy42Nj8oXqamPiOjwQah3RviYnejAAAAgBk//8D+AXEABcAJABYALAARViwCy8bsQscPlmwAEVYsBMvG7ETED5ZsgMTCxESObADL7IAAwsREjmwExCyFAEKK1gh2Bv0WbADELIYAQorWCHYG/RZsAsQsh8BCitYIdgb9FkwMQEGBiMiJiY1NDY2MzISERUQAAUjNTM2NiUyNjc1NCYjIgYVFBYDPjqhYH67Zm/MiNj5/rD+rSQn5fb+7l2dJJ55epSPAoBFVHzhiJLqfP69/uk2/lf+eQWcBOf6clRKtuS7mZXBAP//AIb/9QFtBEQAJgAS9gABBwAS//cDcwAQALAARViwDS8bsQ0YPlkwMf//ACn+3gFVBEQAJwAS/98DcwEGABAMAAAQALAARViwAy8bsQMYPlkwMQABAEgAwwN6BEoABgAWALAARViwBS8bsQUYPlmwAtCwAi8wMQEFFQE1ARUBCAJy/M4DMgKE/cQBe5IBesQAAAIAmAGPA9oDzwADAAcAJQCwBy+wA9CwAy+yAAEKK1gh2Bv0WbAHELIEAQorWCHYG/RZMDEBITUhESE1IQPa/L4DQvy+A0IDLqH9wKAAAAEAhgDEA9wESwAGABYAsABFWLACLxuxAhg+WbAF0LAFLzAxAQE1ARUBNQMb/WsDVvyqAooBA77+hpL+hcAAAgBL//UDdgXEABgAIQBRALAARViwEC8bsRAcPlmwAEVYsCAvG7EgED5ZshsFCitYIdgb9FmyABsQERI5sgQQABESObAQELIJAQorWCHYG/RZsBAQsAzQshUAEBESOTAxATY2Nzc2NTQmIyIGFSM2NjMyFhUUBwcGFQM0NjIWFAYiJgFlAjJNg1RuaWZ8uQLjtr3Tom1JwTdsODhsNwGad4pUh19taXdsW6LHy7GvqmxRmP7DLT09Wjs7AAACAGr+OwbWBZcANQBCAGgAsDIvsABFWLAILxuxCBA+WbAD0LIPMggREjmwDy+yBQgPERI5sAgQsjkCCitYIdgb9FmwFdCwMhCyGwIKK1gh2Bv0WbAIELAq0LAqL7IjAgorWCHYG/RZsA8QskACCitYIdgb9FkwMQEGAiMiJwYGIyImNzYSNjMyFhcDBjMyNjcSACEiBAIHBhIEMzI2NxcGBiMiJAITEhIkMzIEEgEGFjMyNjc3EyYjIgYGygzYtbs1NotKjpITD3m/aVGAUDQTk3GMBhP+uf6yyf7ItAsMkAEn0Vq1PCU+zWn6/pizDAzeAXzv+QFkrvvyDlFYPG8kAS44QHWZAfby/uioVVPozaUBA5QrP/3W5+C0AYUBmMf+iPb4/pPBLCNzJzLhAacBGwETAbfv4P5a/pCOmGZfCQH3He4AAAIAHAAABR0FsAAHAAoARgCwAEVYsAQvG7EEHD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmyCQQCERI5sAkvsgABCitYIdgb9FmyCgQCERI5MDEBIQMjATMBIwEhAwPN/Z6JxgIsqAItxf1NAe/4AXz+hAWw+lACGgKpAAMAqQAABIgFsAAOABYAHwBVALAARViwAS8bsQEcPlmwAEVYsAAvG7EAED5ZshcAARESObAXL7IPAQorWCHYG/RZsggPFxESObAAELIQAQorWCHYG/RZsAEQsh8BCitYIdgb9FkwMTMRITIWFRQGBxYWFRQGIwERITI2NRAhJSEyNjU0JiMhqQHc7e90ZHaJ/uj+xwE9hpv+4v7AASJ+l4yP/uQFsMTAZp0rIbmAxOACqf30i3oBB5p+bHhtAAABAHf/7ATYBcQAHABFALAARViwCy8bsQscPlmwAEVYsAMvG7EDED5ZsAsQsA/QsAsQshIBCitYIdgb9FmwAxCyGQEKK1gh2Bv0WbADELAc0DAxAQYEIyAAETU0EiQzMgAXIyYmIyICFRUUEjMyNjcE2Bv+4e7+/v7JkQEKr+gBGBfBGaeWuNHGsqCrHAHO5/sBcgE2jMsBNKX+/eWunP7w+43t/uiRtAACAKkAAATGBbAACwAVADkAsABFWLABLxuxARw+WbAARViwAC8bsQAQPlmwARCyDAEKK1gh2Bv0WbAAELINAQorWCHYG/RZMDEzESEyBBIXFRQCBAcDETMyEjU1NAInqQGbvgEknwGf/tnE08re9+nWBbCo/srJXc7+yqYCBRL7iwEU/1X4ARMCAAABAKkAAARGBbAACwBOALAARViwBi8bsQYcPlmwAEVYsAQvG7EEED5ZsgsEBhESObALL7IAAQorWCHYG/RZsAQQsgIBCitYIdgb9FmwBhCyCAEKK1gh2Bv0WTAxASERIRUhESEVIREhA+D9iQLd/GMDk/0tAncCof38nQWwnv4sAAEAqQAABC8FsAAJAEAAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmyCQIEERI5sAkvsgABCitYIdgb9FmwBBCyBgEKK1gh2Bv0WTAxASERIxEhFSERIQPM/Z3AA4b9OgJjAoP9fQWwnv4OAAEAev/sBNwFxAAfAGIAsABFWLALLxuxCxw+WbAARViwAy8bsQMQPlmwCxCwD9CwCxCyEQEKK1gh2Bv0WbADELIYAQorWCHYG/RZsh4DCxESObAeL7QPHh8eAl20Px5PHgJdsh0BCitYIdgb9FkwMSUGBCMiJAInNRAAITIEFyMCISICAxUUEjMyNjcRITUhBNxK/vewsv7slwIBMwEW5AEWH8A2/t7BxwHgv2yiNf6vAhC/ammnATTLfwFJAWrp1gEh/vH+/3f1/t8wOQFHnAABAKkAAAUIBbAACwBVALAARViwBi8bsQYcPlmwAEVYsAovG7EKHD5ZsABFWLAALxuxABA+WbAARViwBC8bsQQQPlmwABCwCdCwCS+ynwkBcrIvCQFdsgIBCitYIdgb9FkwMSEjESERIxEzESERMwUIwf0iwMAC3sECof1fBbD9jgJyAAABALcAAAF3BbAAAwAdALAARViwAi8bsQIcPlmwAEVYsAAvG7EAED5ZMDEhIxEzAXfAwAWwAAABADX/7APMBbAADwAuALAARViwAC8bsQAcPlmwAEVYsAUvG7EFED5ZsAnQsAUQsgwBCitYIdgb9FkwMQEzERQGIyImNTMUFjMyNjcDC8H70dnywImCd5MBBbD7+dHs3sh9jJaHAAABAKkAAAUFBbAACwB0ALAARViwBS8bsQUcPlmwAEVYsAcvG7EHHD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmyAAIFERI5QBFKAFoAagB6AIoAmgCqALoACF2yOQABXbIGBQIREjlAEzYGRgZWBmYGdgaGBpYGpga2BgldMDEBBxEjETMRATMBASMCG7LAwAKH6P3DAmrmAqW5/hQFsP0wAtD9ffzTAAEAqQAABBwFsAAFACgAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WTAxJSEVIREzAWoCsvyNwZ2dBbAAAAEAqQAABlIFsAAOAFkAsABFWLAALxuxABw+WbAARViwAi8bsQIcPlmwAEVYsAQvG7EEED5ZsABFWLAILxuxCBA+WbAARViwDC8bsQwQPlmyAQAEERI5sgcABBESObIKAAQREjkwMQkCMxEjERMBIwETESMRAaEB3AHc+cAS/iKT/iMTwAWw+1wEpPpQAjcCZPtlBJj9n/3JBbAAAAEAqQAABQgFsAAJAEyyAQoLERI5ALAARViwBS8bsQUcPlmwAEVYsAgvG7EIHD5ZsABFWLAALxuxABA+WbAARViwAy8bsQMQPlmyAgUAERI5sgcFABESOTAxISMBESMRMwERMwUIwf0jwcEC378EYvueBbD7mQRnAAIAdv/sBQkFxAARAB8AOQCwAEVYsA0vG7ENHD5ZsABFWLAELxuxBBA+WbANELIVAQorWCHYG/RZsAQQshwBCitYIdgb9FkwMQEUAgQjIiQCJzU0EiQzMgQSFScQAiMiAgcVFBIzMhI3BQmQ/viwrP72kwKSAQusrwELkL/Qu7bRA9O5uswDAqnW/sGoqQE5zmnSAUKrqf6/1QIBAwEV/uv2a/v+4QEP/QAAAgCpAAAEwAWwAAoAEwBNsgoUFRESObAKELAM0ACwAEVYsAMvG7EDHD5ZsABFWLABLxuxARA+WbILAwEREjmwCy+yAAEKK1gh2Bv0WbADELISAQorWCHYG/RZMDEBESMRITIEFRQEIyUhMjY1NCYnIQFpwAIZ7wEP/vf3/qkBWZqkpI/+nAI6/cYFsPTJ1OWdkYmCnAMAAgBt/woFBgXEABUAIgBNsggjJBESObAIELAZ0ACwAEVYsBEvG7ERHD5ZsABFWLAILxuxCBA+WbIDCBEREjmwERCyGQEKK1gh2Bv0WbAIELIgAQorWCHYG/RZMDEBFAIHBQclBiMiJAInNTQSJDMyBBIVJxACIyICBxUUEiASNwUBhnkBBIP+zUhQrP72kwKSAQussAELkMDNvrXRA9EBdMwDAqnT/s9WzHn0EqkBOc5p0gFCq6r+wdUBAQEBF/7r9mv6/uABD/0AAAIAqAAABMkFsAAOABcAYbIFGBkREjmwBRCwFtAAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmwAEVYsA0vG7ENED5ZshAEAhESObAQL7IAAQorWCHYG/RZsgsABBESObAEELIWAQorWCHYG/RZMDEBIREjESEyBBUUBgcBFSMBITI2NTQmJyECv/6qwQHi9gEJk4MBVs79bgEnj6mhmP7aAk39swWw4NaIyjL9lgwC6pR8h5ABAAABAFD/7ARyBcQAJgBhsgAnKBESOQCwAEVYsAYvG7EGHD5ZsABFWLAaLxuxGhA+WbAGELAL0LAGELIOAQorWCHYG/RZsiYaBhESObAmELIUAQorWCHYG/RZsBoQsB/QsBoQsiIBCitYIdgb9FkwMQEmJjU0JDMyFhYVIzQmIyIGFRQWBBYWFRQEIyIkJjUzFBYzMjY0JgJW9+EBE9yW64HBqJmOn5cBa81j/uznlv78jcHDo5iilgKJR8+YrOF0zHmEl31vWXtme6RvsdVzyH+EmXzWdQAAAQAxAAAElwWwAAcALgCwAEVYsAYvG7EGHD5ZsABFWLACLxuxAhA+WbAGELIAAQorWCHYG/RZsATQMDEBIREjESE1IQSX/iy//i0EZgUS+u4FEp4AAQCM/+wEqgWwABIAPLIFExQREjkAsABFWLAALxuxABw+WbAARViwCS8bsQkcPlmwAEVYsAUvG7EFED5Zsg4BCitYIdgb9FkwMQERBgAHByIAJxEzERQWMzI2NREEqgH+/9wz7/7kAr6uoaOtBbD8Is7++hACAQLiA+D8Jp6vrp4D2wAAAQAcAAAE/QWwAAYAOLIABwgREjkAsABFWLABLxuxARw+WbAARViwBS8bsQUcPlmwAEVYsAMvG7EDED5ZsgABAxESOTAxJQEzASMBMwKLAaDS/eSq/eXR/wSx+lAFsAAAAQA9AAAG7QWwABIAWQCwAEVYsAMvG7EDHD5ZsABFWLAILxuxCBw+WbAARViwES8bsREcPlmwAEVYsAovG7EKED5ZsABFWLAPLxuxDxA+WbIBAwoREjmyBgMKERI5sg0DChESOTAxARc3ATMBFzcTMwEjAScHASMBMwHjHCkBIKIBGSgf4sH+n6/+1BcX/smv/qDAAcvArQP4/AiwxAPk+lAEJW9v+9sFsAABADkAAATOBbAACwBrALAARViwAS8bsQEcPlmwAEVYsAovG7EKHD5ZsABFWLAELxuxBBA+WbAARViwBy8bsQcQPlmyAAEEERI5QAmGAJYApgC2AARdsgYBBBESOUAJiQaZBqkGuQYEXbIDAAYREjmyCQYAERI5MDEBATMBASMBASMBATMChAFd4v40Adfk/pr+mOMB2P4z4QOCAi79Lv0iAjj9yALeAtIAAAEADwAABLsFsAAIADEAsABFWLABLxuxARw+WbAARViwBy8bsQccPlmwAEVYsAQvG7EEED5ZsgABBBESOTAxAQEzAREjEQEzAmUBfNr+CsD+CtwC1QLb/G/94QIfA5EAAAEAVgAABHoFsAAJAEQAsABFWLAHLxuxBxw+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WbIEAAIREjmwBxCyBQEKK1gh2Bv0WbIJBQcREjkwMSUhFSE1ASE1IRUBOQNB+9wDHvzvA/ednZAEgp6NAAABAJL+yAILBoAABwAiALAEL7AHL7IAAQorWCHYG/RZsAQQsgMBCitYIdgb9FkwMQEjETMVIREhAgu/v/6HAXkF6Pl4mAe4AAABACj/gwM4BbAAAwATALACL7AARViwAC8bsQAcPlkwMRMzASMosAJgsAWw+dMAAQAJ/sgBgwaAAAcAJQCwAi+wAS+wAhCyBQEKK1gh2Bv0WbABELIGAQorWCHYG/RZMDETIREhNTMRIwkBev6GwcEGgPhImAaIAAABAEAC2QMUBbAABgAnsgAHCBESOQCwAEVYsAMvG7EDHD5ZsADQsgEHAxESObABL7AF0DAxAQMjATMBIwGqvqwBK38BKqsEu/4eAtf9KQABAAT/aQOYAAAAAwAbALAARViwAy8bsQMQPlmyAAEKK1gh2Bv0WTAxBSE1IQOY/GwDlJeXAAABADkE2AHaBf4AAwAjALABL7IPAQFdsADQGbAALxiwARCwAtCwAi+0DwIfAgJdMDEBIwEzAdqf/v7fBNgBJgAAAgBt/+wD6gROAB4AKAB5shcpKhESObAXELAg0ACwAEVYsBcvG7EXGD5ZsABFWLAELxuxBBA+WbAARViwAC8bsQAQPlmyAhcEERI5sgsXBBESObALL7AXELIPAQorWCHYG/RZshILFxESObAEELIfAQorWCHYG/RZsAsQsiMBCitYIdgb9FkwMSEmJwYjIiY1NCQzMzU0JiMiBhUjNDY2MzIWFxEUFxUlMjY3NSMgFRQWAygQCoGzoM0BAem0dHFjhrpzxXa71AQm/gtXnCOR/qx0IFKGtYupu1Vhc2RHUZdYu6T+DpVYEI1aSN7HV2IAAgCM/+wEIAYAAA4AGQBkshIaGxESObASELAD0ACwCC+wAEVYsAwvG7EMGD5ZsABFWLADLxuxAxA+WbAARViwBi8bsQYQPlmyBQgDERI5sgoMAxESObAMELISAQorWCHYG/RZsAMQshcBCitYIdgb9FkwMQEUAiMiJwcjETMRNiASESc0JiMiBxEWMzI2BCDkwM1wCaq5cAGK4bmSibdQVbSFlAIR+P7TkX0GAP3Di/7W/v0Fvc6q/iyqzgABAFz/7APsBE4AHQBJshAeHxESOQCwAEVYsBAvG7EQGD5ZsABFWLAILxuxCBA+WbIAAQorWCHYG/RZsAgQsAPQsBAQsBTQsBAQshcBCitYIdgb9FkwMSUyNjczDgIjIgARNTQ2NjMyFhcjJiYjIgYVFRQWAj5jlAivBXbFbt3++3TZlLbxCK8Ij2mNm5qDeFpdqGQBJwEAH572iNquaYfLwCO7ygAAAgBf/+wD8AYAAA8AGgBkshgbHBESObAYELAD0ACwBi+wAEVYsAMvG7EDGD5ZsABFWLAMLxuxDBA+WbAARViwCC8bsQgQPlmyBQMMERI5sgoDDBESObAMELITAQorWCHYG/RZsAMQshgBCitYIdgb9FkwMRM0EjMyFxEzESMnBiMiAjUXFBYzMjcRJiMiBl/sv75vuaoJb8a87bmYhrBRU6yImAIm+QEvggI0+gB0iAE0+Ae40J4B8ZnSAAACAF3/7APzBE4AFQAdAGmyCB4fERI5sAgQsBbQALAARViwCC8bsQgYPlmwAEVYsAAvG7EAED5ZshoIABESObAaL7S/Gs8aAl2yDAEKK1gh2Bv0WbAAELIQAQorWCHYG/RZshMIABESObAIELIWAQorWCHYG/RZMDEFIgA1NTQ2NjMyEhEVIRYWMzI2NxcGASIGByE1JiYCTdz+7HvdgdPq/SMEs4piiDNxiP7ZcJgSAh4IiBQBIfIiof2P/ur+/U2gxVBCWNEDyqOTDo2bAAEAPAAAAsoGFQAVAGOyDxYXERI5ALAARViwCC8bsQgePlmwAEVYsAMvG7EDGD5ZsABFWLARLxuxERg+WbAARViwAC8bsQAQPlmwAxCyAQEKK1gh2Bv0WbAIELINAQorWCHYG/RZsAEQsBPQsBTQMDEzESM1MzU0NjMyFwcmIyIGFRUzFSMR56uruqpAPwovNVpi5+cDq49vrr4RlglpYnKP/FUAAgBg/lYD8gROABkAJACDsiIlJhESObAiELAL0ACwAEVYsAMvG7EDGD5ZsABFWLAGLxuxBhg+WbAARViwCy8bsQsSPlmwAEVYsBcvG7EXED5ZsgUDFxESObIPFwsREjmwCxCyEQEKK1gh2Bv0WbIVAxcREjmwFxCyHQEKK1gh2Bv0WbADELIiAQorWCHYG/RZMDETNBIzMhc3MxEUBiMiJic3FjMyNjU1BiMiAjcUFjMyNxEmIyIGYOrBxm8JqfnSdeA7YHesh5dvwL7rupaHr1JVqoeYAib9ASuMePvg0vJkV2+TmIpdgAEy87fRnwHum9IAAAEAjAAAA98GAAARAEmyChITERI5ALAQL7AARViwAi8bsQIYPlmwAEVYsAUvG7EFED5ZsABFWLAOLxuxDhA+WbIAAgUREjmwAhCyCgEKK1gh2Bv0WTAxATYzIBMRIxEmJiMiBgcRIxEzAUV7xQFXA7kBaW9aiCa5uQO3l/59/TUCzHVwYE78/QYAAAIAjQAAAWgFxAADAAwAPrIGDQ4REjmwBhCwAdAAsABFWLACLxuxAhg+WbAARViwAC8bsQAQPlmwAhCwCtCwCi+yBgUKK1gh2Bv0WTAxISMRMwM0NjIWFAYiJgFVubnIN2w4OGw3BDoBHy0+Plo8PAAC/7/+SwFZBcQADAAWAEmyEBcYERI5sBAQsADQALAARViwDC8bsQwYPlmwAEVYsAMvG7EDEj5ZsggBCitYIdgb9FmwDBCwFdCwFS+yEAUKK1gh2Bv0WTAxAREQISInNRYzMjY1EQM0NjMyFhQGIiYBS/7lPTQgND5BEzc1Njg4bDYEOvtJ/sgSlAhDUwS7AR8sPz5aPDwAAAEAjQAABAwGAAAMAHUAsABFWLAELxuxBB4+WbAARViwCC8bsQgYPlmwAEVYsAIvG7ECED5ZsABFWLALLxuxCxA+WbIACAIREjlAFToASgBaAGoAegCKAJoAqgC6AMoACl2yBggCERI5QBU2BkYGVgZmBnYGhgaWBqYGtgbGBgpdMDEBBxEjETMRNwEzAQEjAbp0ubljAVHh/lsB1tkB9Xn+hAYA/F93AWT+PP2KAAEAnAAAAVUGAAADAB0AsABFWLACLxuxAh4+WbAARViwAC8bsQAQPlkwMSEjETMBVbm5BgAAAAEAiwAABngETgAdAHeyBB4fERI5ALAARViwAy8bsQMYPlmwAEVYsAgvG7EIGD5ZsABFWLAALxuxABg+WbAARViwCy8bsQsQPlmwAEVYsBQvG7EUED5ZsABFWLAbLxuxGxA+WbIBCAsREjmyBQgLERI5sAgQshABCitYIdgb9FmwGNAwMQEXNjMyFzY2MyATESMRNCYjIgYHESMRNCMiBxEjEQE6BXfK41I2rXYBZAa5an1niAu657ZDuQQ6eIyuTmD+h/0rAsp0c3to/TICxeyb/OoEOgABAIwAAAPfBE4AEQBTsgsSExESOQCwAEVYsAMvG7EDGD5ZsABFWLAALxuxABg+WbAARViwBi8bsQYQPlmwAEVYsA8vG7EPED5ZsgEDBhESObADELILAQorWCHYG/RZMDEBFzYzIBMRIxEmJiMiBgcRIxEBOwZ8yAFXA7kBaW9aiCa5BDqInP59/TUCzHVwYE78/QQ6AAACAFv/7AQ0BE4ADwAbAEOyDBwdERI5sAwQsBPQALAARViwBC8bsQQYPlmwAEVYsAwvG7EMED5ZshMBCitYIdgb9FmwBBCyGQEKK1gh2Bv0WTAxEzQ2NjMyABUVFAYGIyIANRcUFjMyNjU0JiMiBlt934/dARF54ZLc/u+6p4yNpqmMiagCJ5/+iv7O/g2e+4wBMvwJtNrdx7Ld2gACAIz+YAQeBE4ADwAaAG6yExscERI5sBMQsAzQALAARViwDC8bsQwYPlmwAEVYsAkvG7EJGD5ZsABFWLAGLxuxBhI+WbAARViwAy8bsQMQPlmyBQwDERI5sgoMAxESObAMELITAQorWCHYG/RZsAMQshgBCitYIdgb9FkwMQEUAiMiJxEjETMXNjMyEhEnNCYjIgcRFjMyNgQe4sHFcbmpCXHJw+O5nIioVFOrhZ0CEff+0n399wXaeIz+2v76BLfUlf37lNMAAAIAX/5gA+8ETgAPABoAa7IYGxwREjmwGBCwA9AAsABFWLADLxuxAxg+WbAARViwBi8bsQYYPlmwAEVYsAgvG7EIEj5ZsABFWLAMLxuxDBA+WbIFAwwREjmyCgMMERI5shMBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxEzQSMzIXNzMRIxEGIyICNRcUFjMyNxEmIyIGX+rFwG8IqrlwusTpuZ2FpVdYooaeAib/ASmBbfomAgR4ATH8CLrUkgISj9UAAQCMAAAClwROAA0ARrIEDg8REjkAsABFWLALLxuxCxg+WbAARViwCC8bsQgYPlmwAEVYsAUvG7EFED5ZsAsQsgIBCitYIdgb9FmyCQsFERI5MDEBJiMiBxEjETMXNjMyFwKXKjG2Qbm0A1unNhwDlAeb/QAEOn2RDgABAF//7AO7BE4AJgBhsgknKBESOQCwAEVYsAkvG7EJGD5ZsABFWLAcLxuxHBA+WbIDHAkREjmwCRCwDdCwCRCyEAEKK1gh2Bv0WbADELIVAQorWCHYG/RZsBwQsCHQsBwQsiQBCitYIdgb9FkwMQE0JiQmJjU0NjMyFhUjNCYjIgYVFBYEFhYVFAYjIiYmNTMWFjMyNgMCcf7npU/hr7jluoFiZXJqARWsU+i5gshxuQWLcml/AR9LUzxUdFCFuL6UTG5YR0NEPlZ5V5GvXKVgXW1VAAEACf/sAlYFQAAVAF+yDhYXERI5ALAARViwAS8bsQEYPlmwAEVYsBMvG7ETGD5ZsABFWLANLxuxDRA+WbABELAA0LAAL7ABELIDAQorWCHYG/RZsA0QsggBCitYIdgb9FmwAxCwEdCwEtAwMQERMxUjERQWMzI3FQYjIiY1ESM1MxEBh8rKNkEgOElFfH7FxQVA/vqP/WFBQQyWFJaKAp+PAQYAAQCI/+wD3AQ6ABAAU7IKERIREjkAsABFWLAGLxuxBhg+WbAARViwDS8bsQ0YPlmwAEVYsAIvG7ECED5ZsABFWLAQLxuxEBA+WbIADQIREjmwAhCyCgEKK1gh2Bv0WTAxJQYjIiYnETMRFDMyNxEzESMDKGzRrbUBucjURrmwa3/JxQLA/UX2ngMT+8YAAAEAIQAAA7oEOgAGADiyAAcIERI5ALAARViwAS8bsQEYPlmwAEVYsAUvG7EFGD5ZsABFWLADLxuxAxA+WbIABQMREjkwMSUBMwEjATMB8QEMvf58jf54vfsDP/vGBDoAAAEAKwAABdMEOgAMAGCyBQ0OERI5ALAARViwAS8bsQEYPlmwAEVYsAgvG7EIGD5ZsABFWLALLxuxCxg+WbAARViwAy8bsQMQPlmwAEVYsAYvG7EGED5ZsgALAxESObIFCwMREjmyCgsDERI5MDElEzMBIwEBIwEzExMzBErQuf7Flv75/wCW/sa41fyV/wM7+8YDNPzMBDr81gMqAAEAKQAAA8oEOgALAFMAsABFWLABLxuxARg+WbAARViwCi8bsQoYPlmwAEVYsAQvG7EEED5ZsABFWLAHLxuxBxA+WbIACgQREjmyBgoEERI5sgMABhESObIJBgAREjkwMQETMwEBIwMDIwEBMwH38Nj+ngFt1vr61wFt/p7WAq8Bi/3p/d0Blf5rAiMCFwABABb+SwOwBDoADwBJsgAQERESOQCwAEVYsAEvG7EBGD5ZsABFWLAOLxuxDhg+WbAARViwBS8bsQUSPlmyAA4FERI5sgkBCitYIdgb9FmwABCwDdAwMQETMwECIycnNRcyNjc3ATMB7vzG/k1l3CNFMl5pIin+fsoBDwMr+x/+8gMNlgRMZW4ELgABAFgAAAOzBDoACQBEALAARViwBy8bsQcYPlmwAEVYsAIvG7ECED5ZsgABCitYIdgb9FmyBAACERI5sAcQsgUBCitYIdgb9FmyCQUHERI5MDElIRUhNQEhNSEVAToCefylAlX9tAM0l5eIAxmZgwAAAQBA/pICngY9ABgAMbITGRoREjkAsA0vsAAvsgcNABESObAHL7IfBwFdsgYDCitYIdgb9FmyEwYHERI5MDEBJiY1NTQjNTI1NTY2NxcGERUUBxYVFRIXAnixs9TUAq+zJtGnpwPO/pIy5bzH85Hy0LfhM3ND/ubK41la5c7+7UIAAAEAr/7yAUQFsAADABMAsAAvsABFWLACLxuxAhw+WTAxASMRMwFElZX+8ga+AAABABP+kgJyBj0AGAAxsgUZGhESOQCwCy+wGC+yEQsYERI5sBEvsh8RAV2yEgMKK1gh2Bv0WbIFEhEREjkwMRc2EzU0NyY1NRAnNxYWFxUUMxUiFRUUBgcTywe1tdEmsbIB1NS1r/tBAQrc51RS6csBGkNzMuG50u+R88q84jIAAAEAgwGSBO8DIgAXAEKyERgZERI5ALAARViwDy8bsQ8WPlmwANCwDxCwFNCwFC+yAwEKK1gh2Bv0WbAPELIIAQorWCHYG/RZsAMQsAvQMDEBFAYjIi4CIyIGFQc0NjMyFhYXFzI2NQTvu4lIgKlKKk5UobiLTIywQB1MXwMJntk1lCRrXgKgzkChCgJ0XwACAIv+mAFmBE0AAwAMADKyBg0OERI5sAYQsADQALACL7AARViwCy8bsQsYPlmyBgUKK1gh2Bv0WbIBAgYREjkwMRMzEyMTFAYiJjQ2MhaqqA3CyTdsODhsNwKs++wFTC0+Plo8PAABAGn/CwP5BSYAIQBSsgAiIxESOQCwAEVYsBQvG7EUGD5ZsABFWLAKLxuxChA+WbAH0LIAAQorWCHYG/RZsAoQsAPQsBQQsBHQsBQQsBjQsBQQshsBCitYIdgb9FkwMSUyNjczBgYHFSM1JgI1NTQSNzUzFRYWFyMmJiMiBhUVFBYCSmSUCK8GxpC5s8jKsbmWwAavCI9pjZubg3lZfska6eoiARzcI9QBHSHi3xfUlmmHy8Aju8oAAQBbAAAEaAXEACEAfLIcIiMREjkAsABFWLAULxuxFBw+WbAARViwBS8bsQUQPlmyHxQFERI5sB8vsl8fAXKyjx8BcbK/HwFdsgABCitYIdgb9FmwBRCyAwEKK1gh2Bv0WbAH0LAI0LAAELAN0LAfELAP0LAUELAY0LAUELIbAQorWCHYG/RZMDEBFxQHIQchNTM2Njc1JyM1MwM0NjMyFhUjNCYjIgYVEyEVAcEIPgLdAfv4TSgyAgiloAn1yL7ev39vaYIJAT8CbtyaW52dCYNgCN2dAQTH7tSxa3yaff78nQAAAgBp/+UFWwTxABsAKgA/sgIrLBESObACELAn0ACwAEVYsAIvG7ECED5ZsBDQsBAvsAIQsh8BCitYIdgb9FmwEBCyJwEKK1gh2Bv0WTAxJQYjIicHJzcmNTQ3JzcXNjMyFzcXBxYVFAcXBwEUFhYyNjY1NCYmIyIGBgRPn9HPn4aCi2hwk4KTnsPEn5WEl25mj4T8YHPE4sRxccVwccRzcISCiIeNnMrOo5eIlnh5mImao8vEn5CIAnt71Hp703t603l41AAAAQAfAAAErQWwABYAawCwAEVYsBYvG7EWHD5ZsABFWLABLxuxARw+WbAARViwDC8bsQwQPlmyDxMDK7IADBYREjm0DxMfEwJdsBMQsAPQsBMQshICCitYIdgb9FmwBtCwDxCwB9CwDxCyDgIKK1gh2Bv0WbAK0DAxAQEzASEVIRUhFSERIxEhNSE1ITUhATMCZgFs2/5eATj+gAGA/oDB/oYBev6GATn+XtwDDgKi/TB9pXz+vgFCfKV9AtAAAAIAk/7yAU0FsAADAAcAGACwAC+wAEVYsAYvG7EGHD5ZsgUBAyswMRMRMxERIxEzk7q6uv7yAxf86QPIAvYAAgBa/hEEeQXEADQARACAsiNFRhESObAjELA10ACwCC+wAEVYsCMvG7EjHD5ZshYIIxESObAWELI/AQorWCHYG/RZsgIWPxESObAIELAO0LAIELIRAQorWCHYG/RZsjAjCBESObAwELI3AQorWCHYG/RZsh03MBESObAjELAn0LAjELIqAQorWCHYG/RZMDEBFAcWFhUUBCMiJicmNTcUFjMyNjU0JicuAjU0NyYmNTQkMzIEFSM0JiMiBhUUFhYEHgIlJicGBhUUFhYEFzY2NTQmBHm6RUj+/ORwyUaLurSciKaO0bbAXbZCRwEL3ugBBLmoi46hOIcBH6lxOv3hWktQSzaFARwsTlSLAa+9VTGIZKjHODlxzQKCl3VgWWk+MG+bb7pYMYhkpsjizX2bc2JFUEFQSGGBqxgbE2VFRlBCUhEUZUVYbQAAAgBmBPAC7wXFAAgAEQAdALAHL7ICBQorWCHYG/RZsAvQsAcQsBDQsBAvMDETNDYyFhQGIiYlNDYyFhQGIiZmN2w4OGw3Aa43bDg4bDcFWy09PVo8PCstPj5aPDwAAAMAW//rBeYFxAAbACoAOQCVsic6OxESObAnELAD0LAnELA20ACwAEVYsC4vG7EuHD5ZsABFWLA2LxuxNhA+WbIDNi4REjmwAy+0DwMfAwJdsgouNhESObAKL7QAChAKAl2yDgoDERI5shECCitYIdgb9FmwAxCyGAIKK1gh2Bv0WbIbAwoREjmwNhCyIAQKK1gh2Bv0WbAuELInBAorWCHYG/RZMDEBFAYjIiY1NTQ2MzIWFSM0JiMiBhUVFBYzMjY1JRQSBCAkEjU0AiQjIgQCBzQSJCAEEhUUAgQjIiQCBF+tnp29v5ugrJJfW15sbF5cXf0BoAETAUABEqCe/u2hoP7sn3O7AUsBgAFKu7T+tcbF/rW2AlWZodO2brDTpJVjVYp7cXiKVGWErP7bpqYBJayqASKnpf7cqsoBWsfH/qbKxf6o0c8BWAAAAgCTArMDDwXEABsAJQBssg4mJxESObAOELAd0ACwAEVYsBUvG7EVHD5ZsgQmFRESObAEL7AA0LICBBUREjmyCwQVERI5sAsvsBUQsg4DCitYIdgb9FmyEQsVERI5sAQQshwDCitYIdgb9FmwCxCyIAQKK1gh2Bv0WTAxASYnBiMiJjU0NjMzNTQjIgYVJzQ2MzIWFREUFyUyNjc1IwYGFRQCagwGTIB3gqesbHxFT6GsiYWaGv6kK1gccFNZAsEiJlZ8Z294NIc2Mwxngo+G/sRhUXsoG44BPzNe//8AZgCXA2QDswAmAXr6/gAHAXoBRP/+AAEAfwF3A74DIAAFABoAsAQvsAHQsAEvsAQQsgIBCitYIdgb9FkwMQEjESE1IQO+uv17Az8BdwEIoQAEAFr/6wXlBcQADgAeADQAPQCpsjY+PxESObA2ELAL0LA2ELAT0LA2ELAj0ACwAEVYsAMvG7EDHD5ZsABFWLALLxuxCxA+WbITBAorWCHYG/RZsAMQshsECitYIdgb9FmyIAsDERI5sCAvsiIDCxESObAiL7QAIhAiAl2yNSAiERI5sDUvsr81AV20ADUQNQJdsh8CCitYIdgb9FmyKB81ERI5sCAQsC/QsC8vsCIQsj0CCitYIdgb9FkwMRM0EiQgBBIVFAIEIyIkAjcUEgQzMiQSNTQCJCMiBAIFESMRITIWFRQHFhcVFBcVIyY0JyYnJzM2NjU0JiMjWrsBSwGAAUq7tP61xsX+tbZzoAEToKEBFJ2d/uyhoP7snwHAjQEUmamAegERkQ4DEHOwnEhYTmSKAtnKAVrHx/6mysX+qNHPAVjHrP7bpqkBIqyrASGnpf7c9f6uA1GDfXtBMpo9ViYQJLkRYASAAkI2ST0AAAEAeAUhA0IFsAADABEAsAEvsgIDCitYIdgb9FkwMQEhNSEDQv02AsoFIY8AAgCCA8ACfAXEAAsAFgAvALAARViwAy8bsQMcPlmwDNCwDC+yCQIKK1gh2Bv0WbADELISAgorWCHYG/RZMDETNDYzMhYVFAYjIiYXMjY1NCYjIgYUFoKVamiTk2hplv82Sko2N0tLBMBonJtpapaWFkc5OktPbEoAAgBhAAAD9QTzAAsADwBGALAJL7AARViwDS8bsQ0QPlmwCRCwANCwCRCyBgEKK1gh2Bv0WbAD0LANELIOAQorWCHYG/RZsgUOBhESObQLBRsFAl0wMQEhFSERIxEhNSERMwEhNSECiQFs/pSn/n8BgacBQfy9A0MDVpf+YgGelwGd+w2YAAABAEICmwKrBbsAFgBUsggXGBESOQCwAEVYsA4vG7EOHD5ZsABFWLAALxuxABQ+WbIWAgorWCHYG/RZsALQsgMOFhESObAOELIIAgorWCHYG/RZsA4QsAvQshQWDhESOTAxASE1ATY1NCYjIgYVIzQ2IBYVFA8CIQKr/akBLG1APEtHnacBCJprVLABjwKbbAEaZkUxPUw5cpR/bmhrT5EAAQA+Ao8CmgW6ACYAibIgJygREjkAsABFWLAOLxuxDhw+WbAARViwGS8bsRkUPlmyABkOERI5sAAvtm8AfwCPAANdsj8AAXG2DwAfAC8AA12yXwABcrAOELIHAgorWCHYG/RZsgoOGRESObAAELImBAorWCHYG/RZshQmABESObIdGQ4REjmwGRCyIAIKK1gh2Bv0WTAxATMyNjU0JiMiBhUjNDYzMhYVFAYHFhUUBiMiJjUzFBYzMjY1NCcjAQlUSkg/RjlLnaN8iZxGQpWqiISmnk9DRkmcWARlPTAtOjMpYnt5aDdbGSmPan1+ay08PDNxAgAAAQB7BNgCHAX+AAMAIwCwAi+yDwIBXbAA0LAAL7QPAB8AAl2wAhCwA9AZsAMvGDAxATMBIwE84P70lQX+/toAAAEAmv5gA+4EOgASAFCyDRMUERI5ALAARViwAC8bsQAYPlmwAEVYsAcvG7EHGD5ZsABFWLAQLxuxEBI+WbAARViwDS8bsQ0QPlmyBAEKK1gh2Bv0WbILBw0REjkwMQERFhYzMjcRMxEjJwYjIicRIxEBUwFndMc+uqcJXaqTUbkEOv2Ho5yYAyD7xnOHSf4rBdoAAQBDAAADQAWwAAoAK7ICCwwREjkAsABFWLAILxuxCBw+WbAARViwAC8bsQAQPlmyAQAIERI5MDEhESMiJDU0JDMhEQKGVOb+9wEK5gENAgj+1tX/+lAAAAEAkwJrAXkDSQAJABayAwoLERI5ALACL7EICitY2BvcWTAxEzQ2MhYVFAYiJpM5cjs7cjkC2TBAQDAvPz8AAQB0/k0BqgAAAA4AQbIFDxAREjkAsABFWLAALxuxABA+WbAARViwBi8bsQYSPlm0EwYjBgJdsgEGABESObEHCitY2BvcWbABELAN0DAxIQcWFRQGIycyNjU0Jic3AR0MmaCPB09XQGIgNBuSYXFrNC8sKgmGAAEAegKiAe8FtwAGAECyAQcIERI5ALAARViwBS8bsQUcPlmwAEVYsAAvG7EAFD5ZsgQABRESObAEL7IDAgorWCHYG/RZsgIDBRESOTAxASMRBzUlMwHvndgBYxICogJZOYB1AAACAHoCsgMnBcQADAAaAECyAxscERI5sAMQsBDQALAARViwAy8bsQMcPlmyChsDERI5sAovshADCitYIdgb9FmwAxCyFwMKK1gh2Bv0WTAxEzQ2MzIWFRUUBiAmNRcUFjMyNjU1NCYjIgYHeryam7y7/sy+o2FUU19hU1FgAgRjnsPBpkqfwsKlBmRyc2VOY3JuYQD//wBmAJgDeAO1ACYBew0AAAcBewFqAAD//wBVAAAFkQWtACcB1f/bApgAJwF8ARgACAEHAdgC1gAAABAAsABFWLAFLxuxBRw+WTAx//8AUAAABckFrQAnAXwA7AAIACcB1f/WApgBBwHWAx4AAAAQALAARViwCS8bsQkcPlkwMf//AG8AAAXtBbsAJwF8AZcACAAnAdgDMgAAAQcB1wAxApsAEACwAEVYsCEvG7EhHD5ZMDEAAgBE/n8DeARNABgAIgBXsgkjJBESObAJELAc0ACwEC+wAEVYsCEvG7EhGD5ZsgAQIRESObIDEAAREjmwEBCyCQEKK1gh2Bv0WbAQELAM0LIVABAREjmwIRCyGwUKK1gh2Bv0WTAxAQ4DBwcUFjMyNjUzBgYjIiY1NDc3NjUTFAYiJjU0NjIWAkwBKWC4CwJ0bWR9uQLht8TWoG1CwTdsODhsNwKoan92wWMlbXNxW6HMybOtr3FOkgE9LT4+LSw8PAAC//IAAAdXBbAADwASAHcAsABFWLAGLxuxBhw+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZshEGABESObARL7ICAQorWCHYG/RZsAYQsggBCitYIdgb9FmyCwAGERI5sAsvsgwBCitYIdgb9FmwABCyDgEKK1gh2Bv0WbISBgAREjkwMSEhAyEDIwEhFSETIRUhEyEBIQMHV/yND/3MzeIDcAO3/U0UAk79uBYCwfqvAcgfAWH+nwWwmP4pl/3tAXgC3QABAFkAzgPdBGMACwA4ALADL7IJDAMREjmwCS+yCgkDERI5sgQDCRESObIBCgQREjmwAxCwBdCyBwQKERI5sAkQsAvQMDETAQE3AQEXAQEHAQFZAUr+uHcBSQFJd/64AUp3/rX+tQFJAVABT3v+sQFPe/6x/rB7AVH+rwAAAwB2/6MFHQXsABcAIAApAGayBCorERI5sAQQsB3QsAQQsCbQALAARViwEC8bsRAcPlmwAEVYsAQvG7EEED5ZshoQBBESObIjEAQREjmwIxCwG9CwEBCyHQEKK1gh2Bv0WbAaELAk0LAEELImAQorWCHYG/RZMDEBFAIEIyInByM3JhE1NBIkMzIXNzMHFhMFFBcBJiMiAgcFNCcBFjMyEjcFCZD++LCrg2GOkL6SAQus1pRnjZ+JAvwsYgI0Zqa20QMDFTj921t5uswDAqnW/sGoUpvnwAFoU9IBQqt9pf+7/tpj9I0DiG/+6/YNtoP8j0ABD/0AAgCmAAAEXQWwAA0AFgBXsgkXGBESObAJELAQ0ACwAEVYsAAvG7EAHD5ZsABFWLALLxuxCxA+WbIBAAsREjmwAS+yEAALERI5sBAvsgkBCitYIdgb9FmwARCyDgEKK1gh2Bv0WTAxAREhMhYWFRQEIyERIxETESEyNjU0JicBYAEXk9x3/vjj/u66ugEVjqCgiAWw/ttpwn7C5/7HBbD+Q/3el3h7lwEAAQCL/+wEagYSACoAabIhKywREjkAsABFWLAFLxuxBR4+WbAARViwEy8bsRMQPlmwAEVYsAAvG7EAED5ZsgoTBRESObIOBRMREjmwExCyGgEKK1gh2Bv0WbIgEwUREjmyIwUTERI5sAUQsigBCitYIdgb9FkwMSEjETQ2MzIWFRQGFRQeAhUUBiMiJic3FhYzMjY1NC4CNTQ2NTQmIyIRAUS5z7q0xYBLvFbLtlG1JisxhzVrcUq9V4toWNoEV9Drs599y0UzX5CITJ+yLBybICxeUjRgk4pRWc9UXmv+2wADAE7/7AZ8BE4AKgA1AD0AxrICPj8REjmwAhCwLtCwAhCwOdAAsABFWLAXLxuxFxg+WbAARViwHS8bsR0YPlmwAEVYsAAvG7EAED5ZsABFWLAFLxuxBRA+WbICHQAREjmyDAUXERI5sAwvtL8MzwwCXbAXELIQAQorWCHYG/RZshMMFxESObIaHQAREjmyOh0AERI5sDovtL86zzoCXbIhAQorWCHYG/RZsAAQsiUBCitYIdgb9FmyKB0AERI5sCvQsAwQsi8BCitYIdgb9FmwEBCwNtAwMQUgJwYGIyImNTQ2MzM1NCYjIgYVJzQ2MzIWFzY2MzISFRUhFhYzMjc3FwYlMjY3NSMGBhUUFgEiBgchNTQmBO7++4hB4o2nvOPd325oaYy48rtzsDI/rmnS6P0oB66VlHkvQJ78CUieMuR1jGoDUHOVEQIahhS0Vl6tl52uVWt7blETj7VTU09X/v/pc7C/TB+IeZZKNu0CblNNXQM0q4sfhJMAAAIAfv/sBC0GLAAdACsAVLIHLC0REjmwBxCwKNAAsABFWLAZLxuxGR4+WbAARViwBy8bsQcQPlmyDxkHERI5sA8vshEZBxESObIiAQorWCHYG/RZsAcQsigBCitYIdgb9FkwMQESERUUBgYjIiYmNTQ2NjMyFyYnByc3Jic3Fhc3FwMnJiYjIgYVFBYzMjY1AzT5ddiGh9x5cM+Bo3kwjdpJwIS3Oe+vvUloAiGLXJGip4B9mQUV/vj+Z12e/ZCB4IaT6YJyw42UY4NbMZ82i4Fk/PM4PUm/p4zE4rgAAAMARwCsBC0EugADAA0AFwBOsgcYGRESObAHELAA0LAHELAR0ACwAi+yAQEKK1gh2Bv0WbACELEMCitY2BvcWbEGCitY2BvcWbABELEQCitY2BvcWbEWCitY2BvcWTAxASE1IQE0NjIWFRQGIiYRNDYyFhUUBiImBC38GgPm/aA5cjs7cjk5cjs7cjkCWLgBOjBAQDAvPj78/jBAQDAuPz8AAAMAW/96BDQEuAAVAB0AJgBjsgQnKBESObAEELAb0LAEELAj0ACwAEVYsAQvG7EEGD5ZsABFWLAPLxuxDxA+WbIjAQorWCHYG/RZsiEjBBESObAhELAY0LAEELIbAQorWCHYG/RZshkbDxESObAZELAg0DAxEzQ2NjMyFzczBxYRFAYGIyInByM3JhMUFwEmIyIGBTQnARYzMjY1W3vhj25eSXxmw3zgkGhWSnxkzblhAVc+SIqoAmZX/qw3QounAief/YsqlM2a/sCe/okjlcuVATfCbwK2INq1tm/9UBnbuQACAJX+YAQnBgAADwAaAGSyGBscERI5sBgQsAzQALAIL7AARViwDC8bsQwYPlmwAEVYsAYvG7EGEj5ZsABFWLADLxuxAxA+WbIFDAMREjmyCgwDERI5sAwQshMBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxARQCIyInESMRMxE2MzISESc0JiMiBxEWMzI2BCfiwcVxublxwsPjuZyIqFRTq4WdAhH3/tJ9/fcHoP3KhP7a/voEt9SV/fuU0wAAAgAdAAAFiAWwABMAFwBrALAARViwDy8bsQ8cPlmwAEVYsAgvG7EIED5ZshQIDxESObAUL7IQFA8REjmwEC+wANCwEBCyFwEKK1gh2Bv0WbAD0LAIELAF0LAUELIHAQorWCHYG/RZsBcQsArQsBAQsA3QsA8QsBLQMDEBMxUjESMRIREjESM1MxEzESERMwEhNSEFAoaGwf0jwYaGwQLdwfxiAt39IwSOjvwAAqH9XwQAjgEi/t4BIv2OwgABAJsAAAFVBDoAAwAdALAARViwAi8bsQIYPlmwAEVYsAAvG7EAED5ZMDEhIxEzAVW6ugQ6AAABAJoAAAQ/BDoADABoALAARViwBC8bsQQYPlmwAEVYsAgvG7EIGD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmwAhCwBtCwBi+ynwYBXbS/Bs8GAl2yLwYBXbL/BgFdsgEBCitYIdgb9FmyCgEGERI5MDEBIxEjETMRMwEzAQEjAb9rurpbAY3f/jwB6OkBzf4zBDr+NgHK/fP90wAAAQAiAAAEGwWwAA0AWwCwAEVYsAwvG7EMHD5ZsABFWLAGLxuxBhA+WbIBDAYREjmwAS+wANCwARCyAgEKK1gh2Bv0WbAD0LAGELIEAQorWCHYG/RZsAMQsAjQsAnQsAAQsAvQsArQMDEBJRUFESEVIREHNTcRMwFpAQf++QKy/I2GhsEDS1R9VP3PnQKRKn0qAqIAAAEAIgAAAgoGAAALAEoAsABFWLAKLxuxCh4+WbAARViwBC8bsQQQPlmyAQQKERI5sAEvsADQsAEQsgIBCitYIdgb9FmwA9CwBtCwB9CwABCwCdCwCNAwMQE3FQcRIxEHNTcRMwFsnp66kJC6A2U9ez39FgKjN3s3AuIAAQCi/ksE8QWwABMAWrIGFBUREjkAsABFWLAALxuxABw+WbAARViwEC8bsRAcPlmwAEVYsAQvG7EEEj5ZsABFWLAOLxuxDhA+WbAEELIJAQorWCHYG/RZsg0OEBESObISDgAREjkwMQERFAYjIic3FjMyNTUBESMRMwERBPGrnD02DiU9iP0zwMACzQWw+f2ouhKaDtBHBGr7lgWw+5gEaAAAAQCR/ksD8AROABoAYbINGxwREjkAsABFWLADLxuxAxg+WbAARViwAC8bsQAYPlmwAEVYsAovG7EKEj5ZsABFWLAYLxuxGBA+WbIBGAMREjmwChCyDwEKK1gh2Bv0WbADELIVAQorWCHYG/RZMDEBFzYzMhYXERQGIyInNxYzMjURNCYjIgcRIxEBNw10y7O4AqebPTYOI0KJb32vUboEOpqu0Mv89KS4Ep0NwgL3i4CF/NQEOgACAGj/6wcJBcQAFwAjAJGyASQlERI5sAEQsBrQALAARViwDC8bsQwcPlmwAEVYsA4vG7EOHD5ZsABFWLAALxuxABA+WbAARViwAy8bsQMQPlmwDhCyEAEKK1gh2Bv0WbITAA4REjmwEy+yFAEKK1gh2Bv0WbAAELIWAQorWCHYG/RZsAMQshgBCitYIdgb9FmwDBCyHQEKK1gh2Bv0WTAxISEGIyImAicRNBI2MzIXIRUhESEVIREhBTI3ESYjIgYHERQWBwn8sLJyov6MAYv+onyqA0b9LQJ3/YkC3fuMcWZtbK3CAsMVlgEPqwE1rAERlxSe/iyd/fwbDgSOD+XP/sfT6wAAAwBh/+wHAAROACAALAA0AJayBjU2ERI5sAYQsCbQsAYQsDDQALAARViwBC8bsQQYPlmwAEVYsAovG7EKGD5ZsABFWLAXLxuxFxA+WbAARViwHS8bsR0QPlmyBwoXERI5sjEKFxESObAxL7IOAQorWCHYG/RZsBcQshIBCitYIdgb9FmyFAoXERI5shoKFxESObAk0LAEELIqAQorWCHYG/RZsC3QMDETNDY2MzIWFzY2MzIWFRUhFhYzMjcXBiMiJicGBiMiADUXFBYzMjY1NCYjIgYlIgYHITU0JmF5246JyT1BxHDP6v0yB6SGvHhKifWHzT8+x4bc/vi5oIuJoKGKh6IELWOWFgIOiQInoP6JdWRmc/7rdKrFbH6EcGRjcQEw/gm32NfOttnW1qOKGn2WAAABAKAAAAKCBhUADAAysgMNDhESOQCwAEVYsAQvG7EEHj5ZsABFWLAALxuxABA+WbAEELIJAQorWCHYG/RZMDEzETY2MzIXByYjIhURoAGwojtUFygztwSuqb4Vjgvd+2AAAAIAXf/sBRIFxAAXAB8AW7IAICEREjmwGNAAsABFWLAQLxuxEBw+WbAARViwAC8bsQAQPlmyBRAAERI5sAUvsBAQsgkBCitYIdgb9FmwABCyGAEKK1gh2Bv0WbAFELIbAQorWCHYG/RZMDEFIAARNSE1EAIjIgcHJzc2MyAAERUUAgQnMhI3IRUUFgK5/uP+wQP09N2liz0vFp7oAS4BZJz+6qep3g/8z9MUAVkBRXUHAQIBHDoajw1Y/of+sVTF/r+2ngEF2yLa5AAB/+T+SwK8BhUAHgBxshQfIBESOQCwAEVYsBUvG7EVHj5ZsABFWLAQLxuxEBg+WbAARViwHS8bsR0YPlmwAEVYsAUvG7EFEj5ZsB0QsgABCitYIdgb9FmwBRCyCgEKK1gh2Bv0WbAAELAO0LAP0LAVELIaAQorWCHYG/RZMDEBIxEUBiMiJzcWMzI2NREjNTM1NjYzMhcHJiMiBxUzAmDLqJo9Mg4eQ0FHq6sCr6E7VBYmPKsEywOr+/6ntxKTDWhcBASPeKe8FZMKw3oAAAIAZf/sBZ0GNwAXACUAU7IEJicREjmwBBCwItAAsABFWLANLxuxDRw+WbAARViwBC8bsQQQPlmyDw0EERI5sA8QsBXQsA0QshsBCitYIdgb9FmwBBCyIgEKK1gh2Bv0WTAxARQCBCMiJAInNTQSJDMyFzY2NTMQBRYXBxACIyICBxUUEjMyEhEE+JD++LCr/vaVAZIBC6zwm2Bdp/75YQG+z7220QPTub/LAqnW/sGoqAE+z2TSAUGsmweDhP6zPaz2BAECARb+6/Zr+/7hARoBAQAAAgBb/+wEugSwABYAIwBTshMkJRESObATELAa0ACwAEVYsAQvG7EEGD5ZsABFWLATLxuxExA+WbIGBBMREjmwBhCwDNCwExCyGgEKK1gh2Bv0WbAEELIhAQorWCHYG/RZMDETNDY2MzIXNjY1MxAHFhUVFAYGIyIANRcUFjMyNjU1NCYjIgZbe+GPz4hHQJbPSXzgkN7+8bmnjYunqYuKqAInn/2LighkgP7dM4qpFp7+iQEz+wm02tu5ELXa2gAAAQCM/+wGHQYCABoATLIMGxwREjkAsABFWLASLxuxEhw+WbAARViwGi8bsRocPlmwAEVYsA0vG7ENED5ZsgENGhESObABELAI0LANELIWAQorWCHYG/RZMDEBFTY2NTMUBgcRBgIHByIAJxEzERQWMzI2NREEqnNhn7HCAfTTSe/+5AK+rqGjrQWw1QuJk9LRDP1+x/78FgQBAuID4Pwmnq+ungPbAAEAiP/sBQ8EkAAZAGCyBxobERI5ALAARViwEy8bsRMYPlmwAEVYsA0vG7ENGD5ZsABFWLAILxuxCBA+WbAARViwBS8bsQUQPlmyFQgTERI5sBUQsAPQsgYIExESObAIELIQAQorWCHYG/RZMDEBFAYHESMnBiMiJicRMxEUMzI3ETMVPgI1BQ+ToLAEbNGttQG5yNRGuUREHQSQtJME/Ltrf8nFAsD9RfaeAxODAiNIbAAB/7T+SwFlBDoADQAoALAARViwAC8bsQAYPlmwAEVYsAQvG7EEEj5ZsgkBCitYIdgb9FkwMQERFAYjIic3FjMyNjURAWWqmDs0Dh5DQUgEOvttqrISkw1oXASTAAIAYv/sA+kETwAUABwAZbIIHR4REjmwCBCwFdAAsABFWLAALxuxABg+WbAARViwCC8bsQgQPlmyDQAIERI5sA0vsAAQshABCitYIdgb9FmyEgAIERI5sAgQshUBCitYIdgb9FmwDRCyGAEKK1gh2Bv0WTAxATIAFRUUBgYnIiY1NSEmJiMiByc2ATI2NyEVFBYB/9wBDnzYetDpAs0HoYi6e0mMAQ5ilxX984kET/7U+SSV+I0B/ul0qMhsfYb8NaSJGn2WAAEAqQTkAwYGAAAIADQAsAQvsAfQsAcvtA8HHwcCXbIFBAcREjkZsAUvGLAB0BmwAS8YsAQQsALQsgMEBxESOTAxARUjJwcjNRMzAwaZlpWZ9nAE7gqqqgwBEAAAAQCMBOMC9gX/AAgAIACwBC+wAdCwAS+0DwEfAQJdsgAEARESObAI0LAILzAxATczFQMjAzUzAcCWoP5x+50FVaoK/u4BEgr//wB4BSEDQgWwAQYAcAAAAAoAsAEvsQID9DAxAAEAgQTLAtgF1wAMACayCQ0OERI5ALADL7IPAwFdsgkECitYIdgb9FmwBtCwBi+wDNAwMQEUBiAmNTMUFjMyNjUC2KX+9KaXTElGTwXXeZOUeEZPTkcAAQCNBO4BaAXCAAgAGLICCQoREjkAsAcvsgIFCitYIdgb9FkwMRM0NjIWFAYiJo03bDg4bDcFVy0+Plo8PAACAHkEtAInBlAACQAUACqyAxUWERI5sAMQsA3QALADL7AH0LAHL7I/BwFdsAMQsA3QsAcQsBLQMDEBFAYjIiY0NjIWBRQWMzI2NCYjIgYCJ3xbXHt7uHv+tUMxMERDMTJCBYBXdXasenpWL0RCYkVGAAABADL+TwGSADgAEAAusgUREhESOQCwEC+wAEVYsAovG7EKEj5ZsgUDCitYIdgb9Fm2DxAfEC8QA10wMSEHBhUUMzI3FwYjIiY1NDY3AX46cU4wNA1GWllnhnstW1ZIGnksaFZZmjgAAAEAewTZAz4F6AAXAD4AsAMvsAjQsAgvtA8IHwgCXbADELAL0LALL7AIELIPAworWCHYG/RZsAMQshQDCitYIdgb9FmwDxCwF9AwMQEUBiMiLgIjIgYVJzQ2MzIeAjMyNjUDPntcKTxhKxwpOnx5XSM4YDMfKzkF3GyGFD4NPzEHa4wUOhJELQACAF4E0AMsBf8AAwAHADsAsAIvsADQsAAvtA8AHwACXbACELAD0BmwAy8YsAAQsAXQsAUvsAIQsAbQsAYvsAMQsAfQGbAHLxgwMQEzASMDMwMjAl3P/vOpbcXalgX//tEBL/7RAAACAH7+awHV/7UACwAWADQAsAMvQAsAAxADIAMwA0ADBV2wCdCwCS9ACTAJQAlQCWAJBF2yAAkBXbAO0LADELAU0DAxFzQ2MzIWFRQGIyImNxQWMjY1NCYjIgZ+ZEpHYmBJTGJXNEYwMCMlMvJGYWBHRl1eRSMwMCMkMjQAAfynBNj+SAX+AAMAHgCwAS+wANAZsAAvGLABELAC0LACL7QPAh8CAl0wMQEjATP+SJ/+/uAE2AEmAAH9bwTY/xAF/gADAB4AsAIvsAHQsAEvtA8BHwECXbACELAD0BmwAy8YMDEBMwEj/jDg/vSVBf7+2v///IsE2f9OBegABwCk/BAAAAAB/V4E2f6UBnQADgAuALAAL7IPAAFdsAfQsAcvQAkPBx8HLwc/BwRdsAbQsgEABhESObINAAcREjkwMQEnNjY0JiM3MhYVFAYHB/10AUtGW0sHlZpOTQEE2ZkFHk4namdVPVALRwAC/CcE5P8HBe4AAwAHADcAsAEvsADQGbAALxiwARCwBdCwBS+wBtCwBi+2DwYfBi8GA12wA9CwAy+wABCwBNAZsAQvGDAxASMBMwEjAzP+Aqn+zuEB/5b2zgTkAQr+9gEKAAH9OP6i/hP/dgAIABEAsAIvsgcFCitYIdgb9FkwMQU0NjIWFAYiJv04N2w4OGw39S0+Plo8PAAAAQC3BO4BmwY/AAMAHQCwAi+wANCwAC+yDwABXbIDAgAREjkZsAMvGDAxEzMDI+2udHAGP/6vAAADAHEE8AODBogAAwAMABUANwCwCy+wAtCwAi+wAdCwAS+wAhCwA9AZsAMvGLALELIGBQorWCHYG/RZsA/QsAsQsBTQsBQvMDEBMwMjBTQ2MhYUBiImJTQ2MhYUBiImAeG8ZYf+wDdsODhsNwI3N2w4OGw3Boj++CUtPT1aPDwrLT4+Wjw8//8AkwJrAXkDSQEGAHgAAAAGALACLzAxAAEAsQAABDAFsAAFACsAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmwBBCyAAEKK1gh2Bv0WTAxASERIxEhBDD9QsEDfwUS+u4FsAACAB8AAAVzBbAAAwAGAC8AsABFWLAALxuxABw+WbAARViwAi8bsQIQPlmyBAEKK1gh2Bv0WbIGAgAREjkwMQEzASElIQEChqoCQ/qsAQYDTP5nBbD6UJ0EKAADAGf/7AT6BcQAAwAVACMAd7IIJCUREjmwCBCwAdCwCBCwINAAsABFWLARLxuxERw+WbAARViwCC8bsQgQPlmyAggRERI5sAIvss8CAV2y/wIBXbIvAgFdtL8CzwICcbIBAQorWCHYG/RZsBEQshkBCitYIdgb9FmwCBCyIAEKK1gh2Bv0WTAxASE1IQUUAgQjIiQCJzU0EiQzMgQSFwcQAiMiAgcVFBIzMhI3A8D9+wIFATqP/vixrP72kwKSAQusrwEIkQK/0Lu20QPRu7rMAwKTmILV/sKqqQE5zmnSAUKrqP7FzwsBAwEV/uv2a/r+4AEP/QABADIAAAUDBbAABgAxALAARViwAy8bsQMcPlmwAEVYsAEvG7EBED5ZsABFWLAFLxuxBRA+WbIAAwEREjkwMQEBIwEzASMCmv5mzgISrAITzwSJ+3cFsPpQAAADAHgAAAQhBbAAAwAHAAsATwCwAEVYsAgvG7EIHD5ZsABFWLACLxuxAhA+WbIAAQorWCHYG/RZsAIQsAXQsAUvsi8FAV2yBgEKK1gh2Bv0WbAIELIKAQorWCHYG/RZMDE3IRUhEyEVIQMhFSF4A6n8V1cC8v0OUwOU/GydnQM/nQMOngABALIAAAUBBbAABwA4ALAARViwBi8bsQYcPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbAGELICAQorWCHYG/RZMDEhIxEhESMRIQUBwf0ywARPBRL67gWwAAEARQAABEQFsAAMADwAsABFWLAILxuxCBw+WbAARViwAy8bsQMQPlmyAQEKK1gh2Bv0WbAF0LAIELIKAQorWCHYG/RZsAfQMDEBASEVITUBATUhFSEBAvL+QwMP/AEB4f4fA879JAG7As79z52PAkoCR5Ce/dQAAAMATQAABXQFsAAUABsAIwBssgokJRESObAKELAV0LAKELAc0ACwAEVYsBMvG7ETHD5ZsABFWLAJLxuxCRA+WbISEwkREjmwEi+wANCyCAkTERI5sAgvsAvQsAgQsh0BCitYIdgb9FmwFdCwEhCyFgEKK1gh2Bv0WbAc0DAxATIEFhUUBgQjFSM1IiQmEDY2MzUzAxEjIgYQFgERMzI2NTQmA0KgAQOPkv8AoMKi/v6Pkf+jwsIFrMPCAXQErMPDBPeM/Jud/Yuvr436ATj9jLn7ngMK0v6Y0AMK/PbRtbPRAAABAFoAAAUhBbAAGABcsgAZGhESOQCwAEVYsAQvG7EEHD5ZsABFWLARLxuxERw+WbAARViwFy8bsRccPlmwAEVYsAsvG7ELED5ZshYECxESObAWL7AA0LAWELINAQorWCHYG/RZsArQMDEBNjY1ETMRFAYGBxEjESYAJxEzERYWFxEzAxacrsF/7Z/B5/7vA8ABpZXBAgsX16oCDf3wn/WTD/6WAWoXASrtAhj976PXGQOkAAABAHEAAATLBcQAJABcshklJhESOQCwAEVYsBkvG7EZHD5ZsABFWLAOLxuxDhA+WbAARViwIy8bsSMQPlmwDhCyEAEKK1gh2Bv0WbAN0LAA0LAZELIGAQorWCHYG/RZsBAQsCHQsCLQMDElNhI3NTQmIAYVFRQSFxUhNTMmAjU1NBI2MzIWEhcVFAIHMxUhAuGKmgPC/q7AnZH+FN1qeI3+oaD9jgN4atz+HKIbARzqhuf2+uVx8P7YHKKdZgEzom+6ASSfnP7ktIKg/s1mnQAAAgBk/+sEdwROABYAIQB8sh8iIxESObAfELAT0ACwAEVYsBMvG7ETGD5ZsABFWLAWLxuxFhg+WbAARViwCC8bsQgQPlmwAEVYsAwvG7EMED5ZsAgQsgMBCitYIdgb9FmyChMIERI5shUTCBESObAMELIaAQorWCHYG/RZsBMQsh8BCitYIdgb9FkwMQERFjMyNxcGIyInBiMiAjU1EBIzMhc3ARQWMzI3ESYjIgYD7gJOEw8XMEqTJmvRwOTixMtrEf3MkoetUlWohpUEOvzjjAWJIqWlARv0DwEIAT2hjf26r8O6Ab684wAAAgCg/oAETQXEABQAKgBpsgArLBESObAY0ACwDy+wAEVYsAAvG7EAHD5ZsABFWLAMLxuxDBA+WbIoAAwREjmwKC+yJQEKK1gh2Bv0WbIGJSgREjmyDgwAERI5sAAQshgBCitYIdgb9FmwDBCyHwEKK1gh2Bv0WTAxATIWFRQGBxYWFRQGIyInESMRNDY2ATQmIyIGBxEWFjMyNjU0JicjNTMyNgJdwetiWHuD+c21eLp6zwFniGtslgEskF6GmoxtllV4fgXE265bmC4tw4LN71/+NQWxbLxr/ntmh45r/MM0P6CBdqUDmHcAAQAu/mAD3wQ6AAgAOLIACQoREjkAsABFWLABLxuxARg+WbAARViwBy8bsQcYPlmwAEVYsAQvG7EEEj5ZsgAHBBESOTAxAQEzAREjEQEzAgoBGL3+hbr+hL0BFAMm+//+JwHgA/oAAgBg/+wEJwYcAB4AKgBeshQrLBESObAUELAi0ACwAEVYsAMvG7EDHj5ZsABFWLAULxuxFBA+WbADELIIAQorWCHYG/RZshsUAxESObAbL7IoCworWCHYG/RZsAzQsBQQsiIBCitYIdgb9FkwMRM0NjMyFwcmIyIGFRQEEhcVFAYGIyIANTU0EjcnJiYTFBYzMjY1NCYnIgbdy6+LhgKXfFZlAbvPBXbbkd7++byQAWNrPqGJiKCpfYikBPWInzegO0g+bJn+88QnmfOFASfyDaUBCCMFJ4z9Y7DLysaI2xnNAAEAY//sA+wETQAlAG+yAyYnERI5ALAARViwFS8bsRUYPlmwAEVYsAovG7EKED5ZsgMBCitYIdgb9FmwChCwBtCwChCwItCwIi+yLyIBXbK/IgFdsiMBCitYIdgb9FmyDyMiERI5shkVIhESObAVELIcAQorWCHYG/RZMDEBFBYzMjY1MxQGIyImNTQ3JiY1NDYzMhYVIzQmIyIGFRQzMxUjBgEek3Zxm7n/xsz4zVhi58q6+bmPa3CH9MTg6gEwTWJuUZu5sZO6QiR6SZSms45GZVtKoJQGAAEAbf6BA8MFsAAfAEuyCCAhERI5ALAPL7AARViwAC8bsQAcPlmyHQEKK1gh2Bv0WbAB0LIVIAAREjmyAhUAERI5sBUQsgcBCitYIdgb9FmyHAAVERI5MDEBFQEGBhUUFhcXFhYVBgYHJzY2NTQkJyYmNTQSNwEhNQPD/qKKZkNS91FHAmxDYi8z/sw2Z1uSfwEd/YMFsHj+VaHlhVphGUgYWE5FrDZUNVUtRE4YLZmBggFAlgFDmAABAJH+YQPwBE4AEgBTsgwTFBESOQCwAEVYsAMvG7EDGD5ZsABFWLAALxuxABg+WbAARViwBy8bsQcSPlmwAEVYsBAvG7EQED5ZsgEQAxESObADELIMAQorWCHYG/RZMDEBFzYzMhYXESMRNCYjIgYHESMRATgLeMi+rgG5bIBcgiK6BDqInMXM+6QEUYh8V0787wQ6AAADAHr/7AQSBcQADQAWAB4AkrIDHyAREjmwAxCwE9CwAxCwG9AAsABFWLAKLxuxChw+WbAARViwAy8bsQMQPlmyDgMKERI5sA4vsl8OAV2y/w4BXbSPDp8OAnG0vw7PDgJxsi8OAXGyzw4BXbIvDgFdtO8O/w4CcbAKELITAQorWCHYG/RZsA4QshgBCitYIdgb9FmwAxCyGwEKK1gh2Bv0WTAxARACIyICAzUQEjMyEhMFITU0JiMiBhUFIRUUFiA2NwQS7N/b7gTs397rBP0hAiWLiIaMAiX925IBBI0CAoD+v/6tAUwBNM0BPQFO/rz+zSw34/Hx488n5frw4wAAAQDD//QCSwQ6AAwAKACwAEVYsAAvG7EAGD5ZsABFWLAJLxuxCRA+WbIEAQorWCHYG/RZMDEBERQWMzI3FwYjIhERAXw3QDAnAUZJ+QQ6/Nc/QAyXEwEmAyAAAQAl/+8EOwXuABoAULIQGxwREjkAsAAvsABFWLALLxuxCxA+WbAARViwES8bsREQPlmwCxCyBwEKK1gh2Bv0WbIQAAsREjmwEBCwE9CwABCyFwEKK1gh2Bv0WTAxATIWFwEWFjM3FwYjIiYmJwMBIwEnJiYjByc2AQVieCEBqxQtIyYGJCpNTj4d5v7izgGKYBc1LS8BKgXuUF/7qzMnA5gMJVZQAlH89QQF6zguAo4MAAEAZf53A6kFxAAtAFayAy4vERI5ALAXL7AARViwKy8bsSscPlmyAgEKK1gh2Bv0WbIILisREjmwCC+yCQEKK1gh2Bv0WbIeLisREjmwHhCyDwEKK1gh2Bv0WbIlCQgREjkwMQEmIyIGFRQhMxUjBgYVFBYEFhcWFRQGByc3NjU0LgQ1NDY3JiY1NCQzMhcDcoRhjaABTYWWtseQAQ98IE9oSGs5MUzmqXdBpJZ2gwEC5JFwBQgkZ1XbmAKco3CdQSUUMWlApz1UQDw+Jy4zQmmZb5HLLiqYYJ+5JwABACn/9ASkBDoAFABcsgsVFhESOQCwAEVYsBMvG7ETGD5ZsABFWLAKLxuxChA+WbAARViwDy8bsQ8QPlmwExCyAAEKK1gh2Bv0WbAKELIFAQorWCHYG/RZsAAQsA3QsA7QsBHQsBLQMDEBIxEUFjMyNxcGIyIRESERIxEjNSEEcZw2QTAnAUZJ+f5vuakESAOh/XJAQQyXEwEmAof8XwOhmQACAJH+YAQfBE4ADwAbAFeyEhwdERI5sBIQsADQALAARViwAC8bsQAYPlmwAEVYsAovG7EKEj5ZsABFWLAHLxuxBxA+WbIJAAcREjmyEgEKK1gh2Bv0WbAAELIYAQorWCHYG/RZMDEBMhIXFxQCIyInESMRNDY2AxYzMjY1NCYjIgYVAlDP9AsB4L/DcrpxzYRTq4eWkYV1kARO/ub+QvD+6Hz9+APknuyA/MiTw8PN4NipAAABAGX+igPhBE4AIgBJsgAjJBESOQCwFC+wAEVYsAAvG7EAGD5ZsABFWLAbLxuxGxA+WbAAELAE0LAAELIHAQorWCHYG/RZsBsQsg0BCitYIdgb9FkwMQEyFhUjNCYjIgYVFRAFFxYWFQYGByc3NjU0JicmAjU1NDY2Aj2956+Gb4SbAUCGYlACY0piLzFGVuz4d9cETtW0boPbsyD+/GMmHWBQP6c+VTY8RisrEzQBAdMqmPuJAAIAYP/sBHsEOgARAB0ATLIIHh8REjmwCBCwFdAAsABFWLAQLxuxEBg+WbAARViwCC8bsQgQPlmwEBCyAAEKK1gh2Bv0WbAIELIVAQorWCHYG/RZsAAQsBvQMDEBIRYRFRQGBiMiADU1NDY2NyEBFBYzMjY1NCYjIgYEe/7kyHrdjNr+9nbZjAJA/J+gioufoYuJnwOhlP7vEYzriAEv/w2Y8ogB/de319nLrM7MAAEAUf/sA9kEOgAQAEmyChESERI5ALAARViwDy8bsQ8YPlmwAEVYsAkvG7EJED5ZsA8QsgABCitYIdgb9FmwCRCyBAEKK1gh2Bv0WbAAELAN0LAO0DAxASERFDMyNxcGIyImJxEhNSED2f6NaSsxKkxqfXUB/qUDiAOk/WmFGoI0k5ICk5YAAQCP/+wD9gQ6ABIAPLIOExQREjkAsABFWLAALxuxABg+WbAARViwCC8bsQgYPlmwAEVYsA4vG7EOED5ZsgMBCitYIdgb9FkwMQEREDMyNjUmAzMWERAAIyImJxEBScmBqgV2w3H+/9rCyAIEOv15/s/6tucBIfH+6f75/sHg1wKXAAIAV/4iBUwEOgAZACIAXLIPIyQREjmwDxCwGtAAsBgvsABFWLAGLxuxBhg+WbAARViwEC8bsRAYPlmwAEVYsBcvG7EXED5ZsADQsBcQshoBCitYIdgb9FmwDNCwEBCyIAEKK1gh2Bv0WTAxBSQANTQSNxcGBxQWFxE0NjMyFhYVFAAFESMTNjY1JiYjIhUCbP8A/uuBf2WhCrWminGC4YL+3v77ubmqxAWlgkIRFwEz+6gBB1eFjPWt5RoCzGl9jfiV8/7XFf4zAmYW3qSp2FIAAAEAX/4oBUMEOgAZAFiyABobERI5ALANL7AARViwAC8bsQAYPlmwAEVYsAYvG7EGGD5ZsABFWLATLxuxExg+WbAARViwDC8bsQwQPlmyAQEKK1gh2Bv0WbAMELAP0LABELAY0DAxARE2NjUmAzMWERAABREjESYAEREzERYWFxEDHKvDBXrCdv7j/va5//77ugKmogQ6/E4Y5bLoARvs/un+/f7QFf45AckaATYBEwHm/g7C5BkDsQABAHr/7AYZBDoAIwBashskJRESOQCwAEVYsAAvG7EAGD5ZsABFWLATLxuxExg+WbAARViwGS8bsRkQPlmwAEVYsB4vG7EeED5ZsgUBCitYIdgb9FmyCQAeERI5sA7QshsTGRESOTAxAQIHFBYzMjY1ETMRFhYzMjY1JgMzFhEQAiMiJwYGIyICERA3AcSKB3JqbHG7AXFranIHisOHz7zwVSmkd7zPhwQ6/uXvy+OtpgEt/s6kquLM7wEb9P7q/u3+z+51eQExARMBH+sAAAIAef/sBHkFxgAfACgAbrIUKSoREjmwFBCwJtAAsABFWLAZLxuxGRw+WbAARViwBi8bsQYQPlmyHRkGERI5sB0vsgIBCitYIdgb9FmyCxkGERI5sAYQsg8BCitYIdgb9FmwAhCwE9CwHRCwI9CwGRCyJgEKK1gh2Bv0WTAxAQYHFQYGIyImNRE3ERQWMzI2NTUmADU0NjMyFhURNjcBFBYXESYjIhUEeTxTAuXIy/e6jHx0gtn+87iWn7I/SP2UoooFk5QCcxcJptPu99cBRwL+sI+bkpimHwEa2aC7xbL+oQUTAVKFvR4BaMbEAAAB/9oAAARuBbwAGgBJsgAbHBESOQCwAEVYsAQvG7EEHD5ZsABFWLAXLxuxFxw+WbAARViwDS8bsQ0QPlmyAAQNERI5sAQQsgkBCitYIdgb9FmwEtAwMQETNjYzMhcHJiMiBwERIxEBJiMiByc2MzIWFwIk4StrV0g0JA0nRiT+17/+2CdDJw0kNEdYayoDBgH7Y1gblwhP/Xf9xgI8AodPCJYcVF0AAgBK/+wGGwQ6ABIAJgBwsggnKBESObAIELAe0ACwAEVYsBEvG7ERGD5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmwERCyAAEKK1gh2Bv0WbIIEQYREjmwD9CwENCwFdCwFtCwChCyGwEKK1gh2Bv0WbIfChEREjmwJNAwMQEjFhUQAiMiJwYjIgIRNDcjNSEBJichBgcUFjMyNjcRMxEWFjMyNgYbiEC8q/FTU/CqvUB0BdH+/gRK/LtLBGBYaXECuwJxalZgA6Gsxf7v/s3v7wEwARS/spn99qrHyKnL46eiAQf++aKn4gABACr/9QWxBbAAGABhshEZGhESOQCwAEVYsBcvG7EXHD5ZsABFWLAJLxuxCRA+WbAXELIAAQorWCHYG/RZsgQXCRESObAEL7AJELIKAQorWCHYG/RZsAQQshABCitYIdgb9FmwABCwFdCwFtAwMQEhETYzMgQQBCMnMjY1JiYjIgcRIxEhNSEElP32nYT0ARL+/O0Cm5gCo6KWisH+YQRqBRL+OTDx/k7jlpGUjpYu/VoFEp4AAAEAe//sBNwFxAAfAIayAyAhERI5ALAARViwCy8bsQscPlmwAEVYsAMvG7EDED5ZsAsQsA/QsAsQshIBCitYIdgb9FmyFgMLERI5sBYvtL8WzxYCcbLPFgFdsp8WAXGy/xYBXbIvFgFdsl8WAXKyjxYBcrIXAQorWCHYG/RZsAMQshwBCitYIdgb9FmwAxCwH9AwMQEGBCMgABE1NBIkMzIAFyMmJiMiAgchFSEVFBIzMjY3BNwb/uHu/v7+yY8BC7DoARgXwBmnl7nOAgI6/cbGsqCrHAHO5/sBcgE2i8kBNaf+/eWsnv7x6p0C7f7okbQAAgAxAAAIOwWwABgAIQB0sgkiIxESObAJELAZ0ACwAEVYsAAvG7EAHD5ZsABFWLAILxuxCBA+WbAARViwEC8bsRAQPlmyAQAIERI5sAEvsAAQsgoBCitYIdgb9FmwEBCyEgEKK1gh2Bv0WbABELIZAQorWCHYG/RZsBIQsBrQsBvQMDEBESEWBBUUBAchESEDAgIGByM1Nz4CNxMBESEyNjU0JicE7gFp3gEG/v7e/dP+ABoPWayQPyhdZDQLHgN3AV+Mop2KBbD9ywPwy8bzBAUS/b/+3v7ciQKdAgdr6vMCwv0t/cCehICcAgACALEAAAhNBbAAEgAbAIKyARwdERI5sAEQsBPQALAARViwEi8bsRIcPlmwAEVYsAIvG7ECHD5ZsABFWLAPLxuxDxA+WbAARViwDC8bsQwQPlmyAAIPERI5sAAvsgQMAhESObAEL7AAELIOAQorWCHYG/RZsAQQshMBCitYIdgb9FmwDBCyFAEKK1gh2Bv0WTAxASERMxEhFgQVFAQHIREhESMRMwERITI2NTQmJwFyAs7AAWriAQH+/9/90/0ywcEDjgFfjqCYigM5Anf9ngPivb/pBAKc/WQFsP0B/fWOenSMAwABAD4AAAXUBbAAFQBdsg4WFxESOQCwAEVYsBQvG7EUHD5ZsABFWLAILxuxCBA+WbAARViwEC8bsRAQPlmwFBCyAAEKK1gh2Bv0WbIEFAgREjmwBC+yDQEKK1gh2Bv0WbAAELAS0LAT0DAxASERNjMyFhcRIxEmJiMiBxEjESE1IQSm/fCgr/ryA8EBiaSppsD+aARoBRL+UCja3f4tAc6Yhir9PgUSngABALD+mQT/BbAACwBIALAJL7AARViwAC8bsQAcPlmwAEVYsAQvG7EEHD5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmyAgEKK1gh2Bv0WbAD0DAxEzMRIREzESERIxEhsMECzsD+QMH+MgWw+u0FE/pQ/pkBZwACAKIAAASxBbAADAAVAFuyDxYXERI5sA8QsAPQALAARViwCy8bsQscPlmwAEVYsAkvG7EJED5ZsAsQsgABCitYIdgb9FmyAgsJERI5sAIvsg0BCitYIdgb9FmwCRCyDgEKK1gh2Bv0WTAxASERIRYEFRQEByERIQERITI2NTQmJwQh/UIBauQBAP7+3/3SA3/9QgFfj5+ZjQUS/kwD5MTF6gQFsP0Q/d2YgHuOAgACADL+mgXJBbAADgAVAFuyEhYXERI5sBIQsAvQALAEL7AARViwCy8bsQscPlmwAEVYsAIvG7ECED5ZsAQQsAHQsAIQsgYBCitYIdgb9FmwDdCwDtCwD9CwENCwCxCyEQEKK1gh2Bv0WTAxASMRIREjAzM2EjcTIREzISERIQMGAgXHv/vrwAF3Xm8OIANnvvu7Asb+ExUNa/6bAWX+mgIDagFl1QJv+u0Edf5U+/6eAAEAGwAABzUFsAAVAIYAsABFWLAJLxuxCRw+WbAARViwDS8bsQ0cPlmwAEVYsBEvG7ERHD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmwAEVYsBQvG7EUED5ZsAIQsBDQsBAvsi8QAV2yzxABXbIAAQorWCHYG/RZsATQsggQABESObAQELAL0LITABAREjkwMQEjESMRIwEjAQEzATMRMxEzATMBASMEqJzApf5k8AHq/jzjAYOlwJ4Bg+L+PAHq7wKY/WgCmP1oAwACsP2IAnj9iAJ4/VH8/wABAFD/7ARqBcQAKABysgMpKhESOQCwAEVYsAsvG7ELHD5ZsABFWLAWLxuxFhA+WbALELIDAQorWCHYG/RZsAsQsAbQsiUWCxESObAlL7LPJQFdsp8lAXGyJAEKK1gh2Bv0WbIRJCUREjmwFhCwG9CwFhCyHgEKK1gh2Bv0WTAxATQmIyIGFSM0NjYzMgQVFAYHBBUUBCMiJiY1MxQWMzI2NRAlIzUzNjYDlKmZgK3Af+SK9AEOfG8BAf7c9JHthMC2jJ27/sO0s5KWBCl0iY1odLhn28NlpjBW/8TmZ76Dc5mSeAEABZ4DfgABALEAAAT/BbAACQBdALAARViwAC8bsQAcPlmwAEVYsAcvG7EHHD5ZsABFWLACLxuxAhA+WbAARViwBS8bsQUQPlmyBAACERI5QAmKBJoEqgS6BARdsgkAAhESOUAJhQmVCaUJtQkEXTAxATMRIxEBIxEzEQQ/wMD9M8HBBbD6UARi+54FsPueAAABAC8AAAT2BbAAEQBNsgQSExESOQCwAEVYsAAvG7EAHD5ZsABFWLABLxuxARA+WbAARViwCS8bsQkQPlmwABCyAwEKK1gh2Bv0WbAJELILAQorWCHYG/RZMDEBESMRIQMCAgYHIzU3PgI3EwT2wP32Gg9ZrJA/KF1kNAseBbD6UAUS/b/+3v7ciQKdAgdr6vMCwgAAAQBN/+sEywWwABEASrIEEhMREjkAsABFWLABLxuxARw+WbAARViwEC8bsRAcPlmwAEVYsAcvG7EHED5ZsgABBxESObILAQorWCHYG/RZsg8HEBESOTAxAQEzAQ4CIyInNxcyPwIBMwKdAU/f/f00WnlbTxYGW2kzGSb+ENcCYwNN+0N0YTMJmARlNFkENgAAAwBT/8QF4wXsABgAIQAqAFuyDCssERI5sAwQsCDQsAwQsCLQALALL7AXL7IVFwsREjmwFS+wANCyCQsXERI5sAkvsA3QsBUQshkBCitYIdgb9FmwCRCyJAEKK1gh2Bv0WbAf0LAZELAi0DAxATMWBBIVFAIEByMVIzUjIiQCEBIkMzM1MwMiBhUUFjMzETMRMzI2NTQmIwN4H6UBEJeY/vSkI7ocp/7vl5cBEaccuta829q/Grocv9fXwwUeAZj+9aWm/vKXAsTEmAEMAU4BDJjO/pvnzc7lA2f8mevKyOoAAAEAr/6hBZcFsAALADsAsAkvsABFWLAALxuxABw+WbAARViwBC8bsQQcPlmwAEVYsAovG7EKED5ZsgIBCitYIdgb9FmwBtAwMRMzESERMxEzAyMRIa/BAs7AmRKt+9cFsPrtBRP68f4AAV8AAAEAlgAABMgFsAASAEayBRMUERI5ALAARViwAC8bsQAcPlmwAEVYsAovG7EKHD5ZsABFWLABLxuxARA+WbIPAAEREjmwDy+yBgEKK1gh2Bv0WTAxAREjEQYGIyImJxEzERYWMzI3EQTIwWmsbvnyA8EBiaO+xQWw+lACWx4X2N8B0/4ymIY2ArYAAAEAsAAABtcFsAALAEgAsABFWLAALxuxABw+WbAARViwAy8bsQMcPlmwAEVYsAcvG7EHHD5ZsABFWLAJLxuxCRA+WbIBAQorWCHYG/RZsAXQsAbQMDEBESERMxEhETMRIREBcQH1vwHywPnZBbD67QUT+u0FE/pQBbAAAQCw/qEHagWwAA8AVACwCy+wAEVYsAAvG7EAHD5ZsABFWLADLxuxAxw+WbAARViwBy8bsQccPlmwAEVYsA0vG7ENED5ZsgEBCitYIdgb9FmwBdCwBtCwCdCwCtCwAtAwMQERIREzESERMxEzAyMRIREBcQH1vwHywJMSpfn9BbD67QUT+u0FE/rn/goBXwWwAAACABAAAAW4BbAADAAVAF6yARYXERI5sAEQsA3QALAARViwAC8bsQAcPlmwAEVYsAkvG7EJED5ZsgIACRESObACL7AAELILAQorWCHYG/RZsAIQsg0BCitYIdgb9FmwCRCyDgEKK1gh2Bv0WTAxEyERITIEFRQEByERIQERITI2NTQmJxACWwFa7wEE/v7i/db+ZgJbAV+On5mMBbD9ruXGxesDBRj9qP3dmIB7jgIAAAMAsgAABjAFsAAKABMAFwBtshIYGRESObASELAG0LASELAV0ACwAEVYsAkvG7EJHD5ZsABFWLAWLxuxFhw+WbAARViwBy8bsQcQPlmwAEVYsBQvG7EUED5ZsgAJBxESObAAL7ILAQorWCHYG/RZsAcQsgwBCitYIdgb9FkwMQEhFgQVFAQHIREzEREhMjY1NCYnASMRMwFyAWrkAQD+/t/908ABX4+fmY0DV8DAA14D5MTF6gQFsP0Q/d2YgHuOAv1ABbAAAAIAowAABLEFsAAKABMATbINFBUREjmwDRCwAdAAsABFWLAJLxuxCRw+WbAARViwBy8bsQcQPlmyAAkHERI5sAAvsgsBCitYIdgb9FmwBxCyDAEKK1gh2Bv0WTAxASEWBBUUBAchETMRESEyNjU0JicBYwFq5AEA/v7f/dPAAV+Pn5mNA14D5MTF6gQFsP0Q/d2YgHuOAgAAAQCT/+wE9AXEAB8Aj7IMICEREjkAsABFWLATLxuxExw+WbAARViwHC8bsRwQPlmwANCwHBCyAwEKK1gh2Bv0WbIIHBMREjmwCC+07wj/CAJxss8IAV2yLwgBcbS/CM8IAnGynwgBcbL/CAFdsi8IAV2yXwgBcrKPCAFysgYBCitYIdgb9FmwExCyDAEKK1gh2Bv0WbATELAP0DAxARYWMzISNyE1ITQCIyIGByM2ADMyBBIVFRQCBCMiJCcBVByroK3JAv3DAj3PupanGcEXARjosAELj47+/aju/uEbAc60kQEO8J7tARScruUBA6f+y8mRyf7MpfvnAAIAt//sBtoFxAAXACUAobIhJicREjmwIRCwEtAAsABFWLATLxuxExw+WbAARViwDS8bsQ0cPlmwAEVYsAQvG7EEED5ZsABFWLAKLxuxChA+WbIPCg0REjmwDy+yXw8BXbL/DwFdtE8PXw8CcbSPD58PAnGyLw8BcbLPDwFdsi8PAV2yzw8BcbIIAQorWCHYG/RZsBMQshsBCitYIdgb9FmwBBCyIgEKK1gh2Bv0WTAxARQCBCMiJAInIxEjETMRMzYSJDMyBBIVJxACIyICBxUUEjMyEjcG2pD++LCm/vmVCNHAwNADkAEKrK8BC5C/0Lu20QPTubrMAwKp1v7BqKABKsf9gwWw/WTOATerqf6/1QIBAwEV/uv2a/v+4QEP/QAAAgBZAAAEZAWwAAwAFQBhshAWFxESObAQELAK0ACwAEVYsAovG7EKHD5ZsABFWLAALxuxABA+WbAARViwAy8bsQMQPlmyEQoAERI5sBEvsgEBCitYIdgb9FmyBQEKERI5sAoQshIBCitYIdgb9FkwMSERIQEjASQRNCQzIREBFBYXIREhIgYDo/6w/tPNAVL+5gER8wHP/O2lkwEa/u+cpQI3/ckCbG8BHtDn+lAD+YSgAQI+lAACAGH/7AQoBhEAGwAoAGKyHCkqERI5sBwQsAjQALAARViwEi8bsRIePlmwAEVYsAgvG7EIED5ZsgASCBESObAAL7IXABIREjmyDxIXERI5shoACBESObIcAQorWCHYG/RZsAgQsiMBCitYIdgb9FkwMQEyEhUVFAYGIyIANTUQEjc2NjUzFAYHBwYGBzYXIgYVFRQWMzI2NTQmAmfM9XbdkNr+9v33jGKYcXyKpaUZk6+IoKGJiqChA/z+798RmfGFASP1WgFVAZIsGUg/fYwdHye5mqqYt6IQrsvMxJm5AAMAnQAABCkEOgAOABYAHACOshgdHhESObAYELAC0LAYELAW0ACwAEVYsAEvG7EBGD5ZsABFWLAALxuxABA+WbIXAQAREjmwFy+0vxfPFwJdtJ8XrxcCcbL/FwFdsg8XAXG0Lxc/FwJdtG8XfxcCcrIPAQorWCHYG/RZsggPFxESObAAELIQAQorWCHYG/RZsAEQshsBCitYIdgb9FkwMTMRITIWFRQGBxYWFRQGIwERITI2NTQjJTMgECcjnQGm2OdaWGJ328j+0AEydHPu/tXvAQT2/QQ6l5JLeSAXhl2VngHb/rpWTqKUATAFAAABAJoAAANHBDoABQArALAARViwBC8bsQQYPlmwAEVYsAIvG7ECED5ZsAQQsgABCitYIdgb9FkwMQEhESMRIQNH/g26Aq0DofxfBDoAAgAu/sIEkwQ6AA4AFABbshIVFhESObASELAE0ACwDC+wAEVYsAQvG7EEGD5ZsABFWLAKLxuxChA+WbIAAQorWCHYG/RZsAbQsAfQsAwQsAnQsAcQsA/QsBDQsAQQshEBCitYIdgb9FkwMTc3NhMTIREzESMRIREjEyEhESEDAoNAbA8RArmLuf0NuQEBLwHx/rMLEZdPjAEYAbD8Xf4rAT7+wgHVAvj+/v69AAEAFQAABgQEOgAVAJAAsABFWLAJLxuxCRg+WbAARViwDS8bsQ0YPlmwAEVYsBEvG7ERGD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmwAEVYsBQvG7EUED5ZsAIQsBDQsBAvsr8QAV2y/xABXbIvEAFdss8QAXGyAAEKK1gh2Bv0WbAE0LIIEAAREjmwEBCwC9CyEwAQERI5MDEBIxEjESMBIwEBMwEzETMRMwEzAQEjA+uCuYL+0eoBg/6i4AEXf7l+ARng/qEBg+oB1v4qAdb+KgIwAgr+QAHA/kABwP31/dEAAQBY/+0DrARNACYAhrIDJygREjkAsABFWLAKLxuxChg+WbAARViwFS8bsRUQPlmwChCyAwEKK1gh2Bv0WbIlChUREjmwJS+0LyU/JQJdtL8lzyUCXbSfJa8lAnG0byV/JQJysgYlChESObIiAQorWCHYG/RZshAiJRESObIZFQoREjmwFRCyHAEKK1gh2Bv0WTAxATQmIyIGFSM0NjMyFhUUBgcWFRQGIyImNTMUFjMyNjU0JiMjNTM2At90ZWKDuOyxvtRYUb3mwLvzuI1paoJtc7nJvQMSTFlmRY20o5dJeiRAvJWut5xPcWJOW0+cBQABAJwAAAQBBDoACQBFALAARViwAC8bsQAYPlmwAEVYsAcvG7EHGD5ZsABFWLACLxuxAhA+WbAARViwBS8bsQUQPlmyBAcCERI5sgkHAhESOTAxATMRIxEBIxEzEQNIubn+Dbm5BDr7xgMV/OsEOvzqAAABAJwAAAQ/BDoADAB3ALAARViwBC8bsQQYPlmwAEVYsAgvG7EIGD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmwAhCwBtCwBi+ynwYBXbL/BgFdss8GAXGynwYBcbS/Bs8GAl2yLwYBXbJvBgFysgEBCitYIdgb9FmyCgEGERI5MDEBIxEjETMRMwEzAQEjAd2Hurp5AWzg/lQB0OsBzf4zBDr+NgHK/fj9zgABACwAAAQDBDoADwBNsgQQERESOQCwAEVYsAAvG7EAGD5ZsABFWLABLxuxARA+WbAARViwCC8bsQgQPlmwABCyAwEKK1gh2Bv0WbAIELIKAQorWCHYG/RZMDEBESMRIQMCBgcjNTc2NjcTBAO6/pAWEpekSjVaTgsUBDr7xgOh/mv+6fAFowQKvP4BzwAAAQCdAAAFUgQ6AAwAWQCwAEVYsAEvG7EBGD5ZsABFWLALLxuxCxg+WbAARViwAy8bsQMQPlmwAEVYsAYvG7EGED5ZsABFWLAJLxuxCRA+WbIACwMREjmyBQsDERI5sggLAxESOTAxJQEzESMRASMBESMRMwL7AXDnuf6igP6bufD1A0X7xgMT/O0DJPzcBDoAAQCcAAAEAAQ6AAsAigCwAEVYsAYvG7EGGD5ZsABFWLAKLxuxChg+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsAAQsAnQsAkvsm8JAV20vwnPCQJdsj8JAXG0zwnfCQJxsg8JAXK0nwmvCQJxsv8JAV2yDwkBcbKfCQFdsi8JAV20bwl/CQJysgIBCitYIdgb9FkwMSEjESERIxEzESERMwQAuf4PuroB8bkBzv4yBDr+KwHVAAEAnAAABAEEOgAHADgAsABFWLAGLxuxBhg+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsAYQsgIBCitYIdgb9FkwMSEjESERIxEhBAG5/g66A2UDofxfBDoAAQAoAAADsAQ6AAcAMQCwAEVYsAYvG7EGGD5ZsABFWLACLxuxAhA+WbAGELIAAQorWCHYG/RZsATQsAXQMDEBIREjESE1IQOw/pW5/pwDiAOk/FwDpJYAAAMAZP5gBWkGAAAaACUAMAB/sgcxMhESObAHELAg0LAHELAr0ACwBi+wAEVYsAMvG7EDGD5ZsABFWLAKLxuxChg+WbAARViwEy8bsRMSPlmwAEVYsBAvG7EQED5ZsABFWLAXLxuxFxA+WbAKELIeAQorWCHYG/RZsBAQsiMBCitYIdgb9FmwKdCwHhCwLtAwMRMQEjMyFxEzETYzMhIRFAIjIicRIxEGIyICNSU0JiMiBxEWMzI2JRQWMzI3ESYjIgZk0rdVQLlGXrjS0bdhRblCVbbRBEyMez8vLUN8ifxtgno6Lyo9eoQCCQEPATYdAc/+KyP+yv7c7/7mIP5VAagdARr1D8zhFPzxEcCytrwSAxER2gAAAQCc/r8EggQ6AAsAOwCwCC+wAEVYsAAvG7EAGD5ZsABFWLAELxuxBBg+WbAARViwCi8bsQoQPlmyAgEKK1gh2Bv0WbAG0DAxEzMRIREzETMDIxEhnLoB8rmBEqb80gQ6/F0Do/xd/igBQQAAAQBnAAADvQQ7ABAARrIEERIREjkAsABFWLAILxuxCBg+WbAARViwDy8bsQ8YPlmwAEVYsAAvG7EAED5ZsgwPABESObAML7IEAQorWCHYG/RZMDEhIxEGIyImJxEzERYzMjcRMwO9unqAy9UCuQXkgHq6AYgg0MABQ/638iACGgABAJwAAAXgBDoACwBIALAARViwAC8bsQAYPlmwAEVYsAMvG7EDGD5ZsABFWLAHLxuxBxg+WbAARViwCS8bsQkQPlmyAQEKK1gh2Bv0WbAF0LAG0DAxAREhETMRIREzESERAVYBjLkBi7r6vAQ6/F0Do/xdA6P7xgQ6AAEAkf6/Bm0EOgAPAEsAsAwvsABFWLAALxuxABg+WbAARViwAy8bsQMYPlmwAEVYsAcvG7EHGD5ZsABFWLANLxuxDRA+WbIBAQorWCHYG/RZsAXQsAnQMDEBESERMxEhETMRMwMjESERAUsBjLkBi7qYEqb63AQ6/F0Do/xdA6P8Xf4oAUEEOgACAB4AAAS/BDoADAAVAF6yARYXERI5sAEQsA3QALAARViwAC8bsQAYPlmwAEVYsAkvG7EJED5ZsgIACRESObACL7AAELILAQorWCHYG/RZsAIQsg0BCitYIdgb9FmwCRCyDgEKK1gh2Bv0WTAxEyERIRYWFRQGIyERIQERITI2NTQmJx4B+gEZuNbcuv42/r8B+gETaHJvZAQ6/osCvKGixAOi/oz+aWtdWnMCAAADAJ0AAAV/BDoACgAOABcAbbIGGBkREjmwBhCwDNCwBhCwE9AAsABFWLAJLxuxCRg+WbAARViwDS8bsQ0YPlmwAEVYsAcvG7EHED5ZsABFWLALLxuxCxA+WbIADQcREjmwAC+yDwEKK1gh2Bv0WbAHELIQAQorWCHYG/RZMDEBIRYWFRQGIyERMwEjETMBESEyNjU0JicBVgEZuNbcuv42uQQpurr71wETaHJvZALFAryhosQEOvvGBDr99P5pa11acwIAAgCdAAAD/QQ6AAoAEwBNsgcUFRESObAHELAN0ACwAEVYsAkvG7EJGD5ZsABFWLAHLxuxBxA+WbIACQcREjmwAC+yCwEKK1gh2Bv0WbAHELIMAQorWCHYG/RZMDEBIRYWFRQGIyERMxERITI2NTQmJwFWARm41ty6/ja5ARNocm9kAsUCvKGixAQ6/fT+aWtdWnMCAAEAZP/sA+AETgAfAIKyACAhERI5ALAARViwCC8bsQgYPlmwAEVYsBAvG7EQED5ZsAgQsgABCitYIdgb9FmyHQgQERI5sB0vtC8dPx0CXbS/Hc8dAl20nx2vHQJxtG8dfx0CcrIDCB0REjmyFBAIERI5sBAQshcBCitYIdgb9FmwHRCyGgEKK1gh2Bv0WTAxASIGFSM0NjYzMgAVFRQGBiMiJjUzFBYzMjY3ITUhJiYCCGORsHbEatMBBXfXirTwsI5md5oM/moBlA6WA7Z+Vl2qZf7P9h+Y+4ngp2aLuKGYkrEAAAIAnf/sBjAETgAUAB8AnbINICEREjmwDRCwFdAAsABFWLAULxuxFBg+WbAARViwBC8bsQQYPlmwAEVYsBEvG7ERED5ZsABFWLAMLxuxDBA+WbIAERQREjmwAC+0vwDPAAJdtJ8ArwACcbL/AAFdsg8AAXG0LwA/AAJdtl8AbwB/AANyshABCitYIdgb9FmwDBCyGAEKK1gh2Bv0WbAEELIdAQorWCHYG/RZMDEBITYAMzIAFxcUBgYjIgAnIREjETMBFBYgNjU0JiMiBgFWAQQVAQnK1AEOCwF84JDR/vYQ/v25uQG6pwEapaiMiqgCb9gBB/7i5Tqe/okBEdr+KQQ6/de02t7Gsd7aAAACAC8AAAPHBDoADQAWAGGyFBcYERI5sBQQsA3QALAARViwAC8bsQAYPlmwAEVYsAEvG7EBED5ZsABFWLAFLxuxBRA+WbISAAEREjmwEi+yAwEKK1gh2Bv0WbIHAwAREjmwABCyEwEKK1gh2Bv0WTAxAREjESEDIwEmJjU0NjcDFBYXIREhIgYDx7r+6f/IARBob9663mxZASb+9md6BDr7xgGl/lsBwSafapS1Af60T2EBAWdlAAH/6P5LA98GAAAiAISyDSMkERI5ALAfL7AARViwBC8bsQQYPlmwAEVYsBkvG7EZED5ZsABFWLAKLxuxChI+WbK/HwFdsi8fAV2yDx8BXbIeGR8REjmwHi+wIdCyAQEKK1gh2Bv0WbICGQQREjmwChCyDwEKK1gh2Bv0WbAEELIVAQorWCHYG/RZsAEQsBvQMDEBIRE2MyATERQGIyInNxYyNjURNCYjIgYHESMRIzUzNTMVIQJj/uJ7xQFXA6qYPTYPI4JIaXBaiCa5pKS5AR4Euf7+l/59/NyqshKTDWhcAyB4cmBO/P0EuZivrwABAGf/7AP3BE4AHwCcsgAgIRESOQCwAEVYsBAvG7EQGD5ZsABFWLAILxuxCBA+WbIAAQorWCHYG/RZsgMIEBESObIbEAgREjmwGy+0DxsfGwJytL8bzxsCXbSfG68bAnG0zxvfGwJxsv8bAV2yDxsBcbQvGz8bAl20bxt/GwJysr8bAXKyFBAbERI5sBAQshcBCitYIdgb9FmwGxCyHAEKK1gh2Bv0WTAxJTI2NzMOAiMiABE1NDY2MzIWFyMmJiMiBgchFSEWFgJIY5QIsAV4xG7e/v112JS28QiwCI9ogpoKAZT+bAqZg3haXqhjASgBAB6f94barmmHsZ2YoK0AAgAnAAAGhgQ6ABYAHwB5sgkgIRESObAJELAX0ACwAEVYsAAvG7EAGD5ZsABFWLAILxuxCBA+WbAARViwDy8bsQ8QPlmyAQAIERI5sAEvsAAQsgoBCitYIdgb9FmwDxCyEQEKK1gh2Bv0WbABELIXAQorWCHYG/RZsAgQshgBCitYIdgb9FkwMQERIRYWFRQGByERIQMCBgcjNTc2NjcTAREhMjY1NCYnA98BHrbT07f+Kf6vFxScpUE2VU0NFwK8ARNldXJjBDr+ZAO1lJO8AwOh/lr+6+QCowQKp9MCD/3M/o9pVlFgAQAAAgCcAAAGpwQ6ABIAGwB7sgEcHRESObABELAT0ACwAEVYsAIvG7ECGD5ZsABFWLARLxuxERg+WbAARViwCy8bsQsQPlmwAEVYsA8vG7EPED5ZsgERCxESObABL7AE0LABELINAQorWCHYG/RZsAQQshMBCitYIdgb9FmwCxCyFAEKK1gh2Bv0WTAxASERMxEhFhYVFAYjIREhESMRMwERITI2NTQmJwFWAfG5ASK00dm9/jb+D7q6AqoBE2V1cmMCoQGZ/mMEsZaXuwIK/fYEOv3M/o9pVlFgAQAB//0AAAPfBgAAGQB5sgwaGxESOQCwFi+wAEVYsAQvG7EEGD5ZsABFWLAHLxuxBxA+WbAARViwEC8bsRAQPlmyvxYBXbIvFgFdsg8WAV2yGRAWERI5sBkvsgABCitYIdgb9FmyAgQHERI5sAQQsgwBCitYIdgb9FmwABCwEtCwGRCwFNAwMQEhETYzIBMRIxEmJiMiBgcRIxEjNTM1MxUhAnn+zHvFAVcDuQFpb1qIJrmPj7kBNAS+/vmX/n39NQLMdXBgTvz9BL6Xq6sAAAEAnP6cBAEEOgALAEUAsAgvsABFWLAALxuxABg+WbAARViwAy8bsQMYPlmwAEVYsAUvG7EFED5ZsABFWLAJLxuxCRA+WbIBAQorWCHYG/RZMDEBESERMxEhESMRIREBVgHyuf6tuf6nBDr8XQOj+8b+nAFkBDoAAAEAnP/sBnUFsAAgAGCyByEiERI5ALAARViwAC8bsQAcPlmwAEVYsA4vG7EOHD5ZsABFWLAXLxuxFxw+WbAARViwBC8bsQQQPlmwAEVYsAovG7EKED5ZsgcABBESObITAQorWCHYG/RZsBzQMDEBERQGIyImJwYGIyImJxEzERQWMzI2NREzERQWMzI2NREGdeHDbasxNLJxvdcBwXJicoLHfGlqegWw+97G3FdZWVfbwwQm+917iol8BCP73X2IiX0EIgABAIH/6wWtBDoAHgBgsgYfIBESOQCwAEVYsAAvG7EAGD5ZsABFWLAMLxuxDBg+WbAARViwFS8bsRUYPlmwAEVYsAQvG7EEED5ZsABFWLAILxuxCBA+WbIGFQQREjmyEQEKK1gh2Bv0WbAa0DAxAREUBiMiJwYjIiYnETMRFhYzMjY1ETMRFBYzMjY3EQWtyq7GWV/Op8ABuQFbU2JvumVcWWUBBDr9J7DGlJTDsALc/SNmdXhnAtn9J2d4dWYC3QAC/9wAAAP8BhYAEQAaAHGyFBscERI5sBQQsAPQALAARViwDi8bsQ4ePlmwAEVYsAgvG7EIED5ZshEOCBESObARL7IAAQorWCHYG/RZsgIOCBESObACL7AAELAK0LARELAM0LACELISAQorWCHYG/RZsAgQshMBCitYIdgb9FkwMQEhESEWFhAGByERIzUzETMRIQERITI2NTQmJwKW/r8BGLvU1Lf+Kr+/ugFB/r8BEmlxb2QEOv6wAsr+ttEDBDqXAUX+u/2B/kV3ZGF9AgAAAQC3/+0GoAXFACYAh7IeJygREjkAsABFWLAFLxuxBRw+WbAARViwJi8bsSYcPlmwAEVYsB0vG7EdED5ZsABFWLAjLxuxIxA+WbIQBR0REjmwEC+wANCwBRCwCdCwBRCyDAEKK1gh2Bv0WbAQELIRAQorWCHYG/RZsB0QshYBCitYIdgb9FmwHRCwGdCwERCwIdAwMQEzNhIkMzIAFyMmJiMiAgchFSEVFBIzMjY3MwYEIyAAETUjESMRMwF4xwWTAQas5gEZGMAZp5e0zwYCHv3ixrKjqRzAG/7h7v7+/snHwcEDQMEBJp7/AOisnv774pca7f7ok7Ln+wFyATYU/VcFsAABAJn/7AWhBE4AJADEsgMlJhESOQCwAEVYsAQvG7EEGD5ZsABFWLAkLxuxJBg+WbAARViwIS8bsSEQPlmwAEVYsBwvG7EcED5Zsg8cBBESObAPL7S/D88PAl20Pw9PDwJxtM8P3w8CcbQPDx8PAnK0nw+vDwJxsv8PAV2yDw8BcbQvDz8PAl20bw9/DwJysADQsggPBBESObAEELILAQorWCHYG/RZsA8QshABCitYIdgb9FmwHBCyFAEKK1gh2Bv0WbIXHAQREjmwEBCwH9AwMQEzNhIzMhYXIyYmIyIGByEVIRYWMzI2NzMOAiMiAicjESMRMwFTvxD/0bbxCLAIj2iEmAoBtf5LCpmDY5QIsAV4xG7R/hDAuroCZ98BCNquaYexnpegrXhaXqhjAQbe/jAEOgAAAgAoAAAE5AWwAAsADgBWALAARViwCC8bsQgcPlmwAEVYsAIvG7ECED5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmyDQgCERI5sA0vsgABCitYIdgb9FmwBNCyDggCERI5MDEBIxEjESMDIwEzASMBIQMDiaq8npjFAg2rAgTF/Z8Bk8cBtv5KAbb+SgWw+lACWgJJAAACAA8AAAQlBDoACwAQAFYAsABFWLAILxuxCBg+WbAARViwAi8bsQIQPlmwAEVYsAYvG7EGED5ZsABFWLAKLxuxChA+WbINAggREjmwDS+yAQEKK1gh2Bv0WbAE0LIPCAIREjkwMQEjESMRIwMjATMBIwEhAycHAu11uXx3vQG6nwG9vv4ZAS+AGBgBKf7XASn+1wQ6+8YBwQE7WVkAAAIAyQAABvUFsAATABYAfACwAEVYsAIvG7ECHD5ZsABFWLASLxuxEhw+WbAARViwBC8bsQQQPlmwAEVYsAgvG7EIED5ZsABFWLAMLxuxDBA+WbAARViwEC8bsRAQPlmyFQIEERI5sBUvsADQsBUQsgYBCitYIdgb9FmwCtCwBhCwDtCyFgIEERI5MDEBIQEzASMDIxEjESMDIxMhESMRMwEhAwGKAYcBNasCBMWWqryemMWe/rPBwQJFAZPHAlkDV/pQAbb+SgG2/koBuP5IBbD8qgJJAAACALwAAAXkBDoAEwAYAH8AsABFWLACLxuxAhg+WbAARViwEi8bsRIYPlmwAEVYsAQvG7EEED5ZsABFWLAILxuxCBA+WbAARViwDC8bsQwQPlmwAEVYsBAvG7EQED5ZsgAQEhESObAAL7AB0LIOAQorWCHYG/RZsAvQsAfQsAEQsBTQsBXQshcSBBESOTAxASEBMwEjAyMRIxEjAyMTIxEjETMBIQMnBwF2AQ8BA58Bvb56dbl8d7150bq6AckBL4AYGAHBAnn7xgEp/tcBKf7XASj+2AQ6/YcBO1lZAAACAJMAAAY/BbAAHQAhAHayHiIjERI5sB4QsA7QALAARViwHC8bsRwcPlmwAEVYsAUvG7EFED5ZsABFWLANLxuxDRA+WbAARViwFS8bsRUQPlmyAQ0cERI5sAEvsgoBCitYIdgb9FmwENCwARCwGtCwARCwHtCwHBCyIAEKK1gh2Bv0WTAxATMyFhcRIxEmJicjBxEjEScjIgYHESMRNjYzMwEhATMBIQRBG/TsA8EBfJqFFcENiJ6CBMAD7PMq/ngEsv2fEAEa/bsDKtTY/oIBeJCCAiP9lwJ2FnuN/nwBftjUAob9egHoAAACAJYAAAVLBDoAGwAfAHOyHCAhERI5sBwQsBTQALAARViwBi8bsQYYPlmwAEVYsBsvG7EbED5ZsABFWLAULxuxFBA+WbAARViwDC8bsQwQPlmyHBQGERI5sBwvsATQsBwQsAfQshABCitYIdgb9FmwF9CwBhCyHgEKK1gh2Bv0WTAxMzU2NjcBIQEWFhcVIzUmJiMjBxEjEScjIgYHFQEzEyGWBMrS/uEDv/7gzsUCugJzjDULuQY+jHUCAaIIt/6Lts3SBgHf/iEL09CtsZKBE/5PAbsJfpWxAlwBRgACALYAAAhyBbAAIgAmAJOyJicoERI5sCYQsB7QALAARViwCC8bsQgcPlmwAEVYsAsvG7ELHD5ZsABFWLAFLxuxBRA+WbAARViwIi8bsSIQPlmwAEVYsBsvG7EbED5ZsABFWLATLxuxExA+WbIJBQgREjmwCS+yBAEKK1gh2Bv0WbAJELAj0LAN0LAEELAe0LAY0LALELImAQorWCHYG/RZMDEhETY3IREjETMRIQEhATMyFhcRIxEmJicjBxEjEScjIgYHEQEzASECxQFP/mLBwQNZ/nkEs/54G/TsA8EBfJqFFsAOh56CBAIVEAEa/bsBeLNp/WwFsP18AoT9etTY/oIBeJCCAiX9mQJ1F3uN/nwDKgHoAAIAmwAABzsEOgAhACUAlrIeJicREjmwHhCwJdAAsABFWLAHLxuxBxg+WbAARViwCy8bsQsYPlmwAEVYsAAvG7EAED5ZsABFWLAFLxuxBRA+WbAARViwES8bsREQPlmwAEVYsBkvG7EZED5ZsgoLABESObAKL7IdAQorWCHYG/RZsAPQsAoQsA3QsB0QsBbQsAoQsCLQsAsQsiQBCitYIdgb9FkwMSE1NjchESMRMxEhASEBFhYXFSM1JiYjIwcRIxEnIwYGBxUBMxMhAoYCRv6HuroC0f7hA7/+4M7FAroCc4w1C7kGS4VvAgGiCLf+i6+taP48BDr+IgHe/iEL09CtsZKBE/5PAbsJAoCTrwJcAUYAAAIAUP5GA6oHhgApADIAh7IqMzQREjmwKhCwAtAAsBkvsC4vsABFWLAFLxuxBRw+WbAARViwEi8bsRIQPlmwBRCyAwEKK1gh2Bv0WbIoBRIREjmwKC+yJQEKK1gh2Bv0WbIMJSgREjmwEhCyHwEKK1gh2Bv0WbIPLgFdsC4QsCvQsCsvtA8rHysCXbIqLisREjmwMtAwMQE0JiMhNSEyBBUUBgcWFhUUBCMjBhUUFxcHJiY1NDY3MzY2NRAlIzUzIAM3MxUDIwM1MwLanYf+zgEr3gEGgXOCif734DSNgh9Keo2lojSGn/6+mYYBP7yXoP5y+p0EKm6AmNiyZ6QtKa2CxOUDbWlCD301qGN6gwEBlHkBCAWYA6WqCv7uARIKAAIATP5GA3YGMAApADIAnrIuMzQREjmwLhCwH9AAsBgvsC4vsABFWLAFLxuxBRg+WbAARViwES8bsREQPlmwBRCyAwEKK1gh2Bv0WbIoBREREjmwKC+0Lyg/KAJdtL8ozygCXbSfKK8oAnG0byh/KAJysiUBCitYIdgb9FmyDCUoERI5sBEQsh4BCitYIdgb9FmwLhCwK9CwKy+0DysfKwJdsiouKxESObAy0DAxATQmJyE1ITIWFRQGBxYVFAYjIwYVFBcXByYmNTQ2NzM2NzY1NCUjNTMgAzczFQMjAzUzAqd/cP7JASfK7mZb1/PIMo2CH0t8iqWiNnJDP/7omYgBE9qXoP5y+p0DCUNTApmqi0l3JEKvlK8DbWlCD303qGF6gwECMC5IogOYAx2qCv7uARIKAAADAGf/7AT6BcQAEQAYAB8AibIEICEREjmwBBCwEtCwBBCwGdAAsABFWLANLxuxDRw+WbAARViwBC8bsQQQPlmwDRCyEgEKK1gh2Bv0WbIWDQQREjmwFi+yLxYBXbLPFgFdsi8WAXGy/xYBXbJfFgFdtE8WXxYCcbKfFgFxsAQQshkBCitYIdgb9FmwFhCyHAEKK1gh2Bv0WTAxARQCBCMiJAInNTQSJDMyBBIXASICByEmAgMyEjchFhIE+o/++LGs/vaTApIBC6yvAQiRAv22ttAEAxQEzra2ygj87AjTAqnV/sKqqQE5zmnSAUKrqP7FzwIN/u3y+AEN+3ABAPTs/vgAAAMAW//sBDQETgAPABUAHACHsgQdHhESObAEELAT0LAEELAW0ACwAEVYsAQvG7EEGD5ZsABFWLAMLxuxDBA+WbIaDAQREjmwGi+0vxrPGgJdtJ8arxoCcbL/GgFdsg8aAXG0Lxo/GgJdtM8a3xoCcbIQAQorWCHYG/RZsAwQshQBCitYIdgb9FmwBBCyFgEKK1gh2Bv0WTAxEzQ2NjMyABcXFAYGIyIANQUhFhYgNgEiBgchJiZbe+GP1AEOCwF84JDe/vEDHP2fDaQBAqH+3H2iDwJeEqMCJ5/9i/7i5Tqe/okBM/tEm7i6Anm1k5exAAEAFgAABN0FwwAPAEayAhARERI5ALAARViwBi8bsQYcPlmwAEVYsA8vG7EPHD5ZsABFWLAMLxuxDBA+WbIBBgwREjmwBhCyCAEKK1gh2Bv0WTAxARc3ATY2MxcHIgYHASMBMwJDISMBCDOGZy4BQEAf/nyq/gfQAXaCgQM/l3gBqzxU+3kFsAABAC4AAAQLBE0AEQBGsgISExESOQCwAEVYsAUvG7EFGD5ZsABFWLARLxuxERg+WbAARViwDi8bsQ4QPlmyAQUOERI5sAUQsgoBCitYIdgb9FkwMQEXNxM2MzIXByYjIgYHASMBMwHbFxmdTaxHIxUNHR88EP7Xjf6DvQE8ZGQCH/IYlAgwLfy0BDoAAAIAZ/9zBPoGNAATACcAUrIFKCkREjmwBRCwGdAAsABFWLANLxuxDRw+WbAARViwAy8bsQMQPlmwBtCwDRCwENCyFwEKK1gh2Bv0WbAa0LADELIkAQorWCHYG/RZsCHQMDEBEAAHFSM1JgADNRAANzUzFRYAESc0AicVIzUGAhUVFBIXNTMVNhI1BPr+/uO55f7xAQEO57niAQO/mY25k6OkkrmPlwKp/t3+kSOBfx8BcQEjYAEkAXYfdngl/pD+2QfgAQkjYWQf/u7fXd7+7B9mZCIBC+IAAAIAW/+JBDQEtQATACUAWLIDJicREjmwAxCwHNAAsABFWLADLxuxAxg+WbAARViwEC8bsRAQPlmwAxCwBtCwEBCwDdCwEBCyIwEKK1gh2Bv0WbAU0LADELIdAQorWCHYG/RZsBrQMDETNBI3NTMVFhIVFRQCBxUjNSYCNQE2NjU0JicVIzUGBhUUFhc1M1vUubm62d22ubTZAkZjdnRluWJycWO5AifSASoicG8g/tjdENj+2B1rbB8BJ9z+eR/Nq5HQIGJhIdClkssiZgAAAwCc/+sGbwdRACwAQABJAKayCkpLERI5sAoQsDLQsAoQsEnQALAARViwFC8bsRQcPlmwAEVYsA0vG7ENED5ZsBQQsADQsA0QsAfQsgoNFBESObAUELIVAQorWCHYG/RZsA0QshwBCitYIdgb9FmyIBQNERI5sCXQsBUQsCzQsBQQsDjQsDgvsC/Qsi0CCitYIdgb9FmwLxCwNNCwNC+yPAIKK1gh2Bv0WbA4ELBE0LBJ0LBJLzAxATIWFREUBiMiJicGBiMiJicRNDYzFSIGFREUFjMyNjURMxEUFjMyNjURNCYjExUjIi4CIyIVFSM1NDYzMh4CATY3NTMVFAYHBNu72dm7cLI0NLBwudgE2L1jcXJicoLBgnNjcG9kaCtQgrg0GHGAf24oSL9q/kBCA51bOwWv8Nb9xtTwVVhYVejNAkrU8Z6dif3EjJuJfAGs/lR6i5yMAjqInwHCfyJQDHAPJG5sEVIb/pBQPGlmMnUgAAMAfv/rBaoF8QArAD8ASACssglJShESObAJELA80LAJELBI0ACwAEVYsBMvG7ETGD5ZsABFWLAMLxuxDBA+WbATELAA0LAMELAH0LIJDBMREjmwExCyFAEKK1gh2Bv0WbAMELIbAQorWCHYG/RZsh8TDBESObAk0LAUELAr0LATELA30LA3L7At0LAtL7IsAgorWCHYG/RZsC0QsDPQsDMvsjsCCitYIdgb9FmwNxCwQ9CwQy+wSNCwSC8wMQEyFhURFAYjIicGBiMiJicRNDYzFSIGFREUFjMyNjU1MxUWFjMyNjURNCYjExUjIi4CIyIVFSM1NDYzMh4CATY3NTMVFAYHBEKowMCo0F8vnGKjwQTAqFJdXFNib7kBcGFRXV1RqixPfsAwGHKAf28pSrdt/kFBA55bOwRE28L+38HalUtK0LsBMsHbmIh8/t57iXhn6+5ndYh9ASF8iAHHfyBSC28PJG5sElAc/oZOP2hmMnUgAAIAnP/sBnUHAwAgACgAgrIHKSoREjmwBxCwJ9AAsABFWLAPLxuxDxw+WbAARViwFy8bsRccPlmwAEVYsCAvG7EgHD5ZsABFWLAKLxuxChA+WbAE0LIHCg8REjmwChCyEwEKK1gh2Bv0WbAc0LAPELAn0LAnL7Ao0LAoL7IiBgorWCHYG/RZsCgQsCXQsCUvMDEBERQGIyImJwYGIyImJxEzERQWMzI2NREzERQWMzI2NRElNSEXIRUjNQZ14cNtqzE0snG91wHBcmJygsd8aWp6/EIDLAH+tagFsPvextxXWVlX28MEJvvde4qJfAQj+919iIl9BCLoa2t9fQAAAgCB/+sFrQWwAB4AJgCFsgYnKBESObAGELAj0ACwAEVYsA0vG7ENGD5ZsABFWLAVLxuxFRg+WbAARViwHi8bsR4YPlmwAEVYsAgvG7EIED5ZsATQsAQvsgYIDRESObAIELIRAQorWCHYG/RZsBrQsA0QsCXQsCUvsCbQsCYvsiAGCitYIdgb9FmwJhCwI9CwIy8wMQERFAYjIicGIyImJxEzERYWMzI2NREzERQWMzI2NxEBNSEXIRUjNQWtyq7GWV/Op8ABuQFbU2JvumVcWWUB/JMDLAP+s6kEOv0nsMaUlMOwAtz9I2Z1eGcC2f0nZ3h1ZgLdAQtra4CAAAABAHX+hAS8BcUAGQBJshgaGxESOQCwAC+wAEVYsAovG7EKHD5ZsABFWLACLxuxAhA+WbAKELAO0LAKELIRAQorWCHYG/RZsAIQshkBCitYIdgb9FkwMQEjESYANTU0EiQzMgAXIyYmIyICFRUUEhczAxS/2P74jgEAoPcBIALBArWhoM3FnXz+hAFsHAFW//SxASCf/vjgnqz+/NT0yv77BAABAGT+ggPgBE4AGQBJshgaGxESOQCwAC+wAEVYsAovG7EKGD5ZsABFWLACLxuxAhA+WbAKELAO0LAKELIRAQorWCHYG/RZsAIQshgBCitYIdgb9FkwMQEjESYCNTU0NjYzMhYVIzQmIyIGFRUUFhczAqK5sdR314uz8K+PZYScloJt/oIBcB4BJtkjmfmK4ahljNq1H6jbAwAAAQB0AAAEkAU+ABMAEwCwDi+wAEVYsAQvG7EEED5ZMDEBBQclAyMTJTcFEyU3BRMzAwUHJQJYASFE/t22qOH+30QBJc3+3kYBI7yl5wElSP7gAb6se6r+vwGOq3urAW2rfasBS/5oq3qqAAH8ZwSm/ycF/AAHABEAsAAvsgMGCitYIdgb9FkwMQEVJzchJxcV/Q2mAQIbAaUFI30B6WwB2AAAAfxxBRf/ZAYVABMALgCwDi+wCNCwCC+yAAIKK1gh2Bv0WbAOELAF0LAFL7AOELIPAgorWCHYG/RZMDEBMhYVFSM1NCMiBwcGByM1Mj4C/nZvf4ByKi1viXY8bGrBRwYVbG4kDnASLzoCfhtTEQAB/WYFFv5UBlcABQAMALABL7AF0LAFLzAxATUzFRcH/WazO00F3HuMdEEAAAH9pAUW/pMGVwAFAAwAsAMvsADQsAAvMDEBJzcnMxX98U07AbUFFkF0jHsACPob/sQBtgWvAAwAGgAnADUAQgBPAFwAagB6ALBFL7BTL7BgL7A4L7AARViwAi8bsQIcPlmyCQsKK1gh2Bv0WbBFELAQ0LBFELJMCworWCHYG/RZsBfQsFMQsB7QsFMQsloLCitYIdgb9FmwJdCwYBCwK9CwYBCyZwsKK1gh2Bv0WbAy0LA4ELI/CworWCHYG/RZMDEBNDYyFhUjNCYjIgYVATQ2MzIWFSM0JiMiBhUTNDYzMhYVIzQmIgYVATQ2MzIWFSM0JiMiBhUBNDYyFhUjNCYjIgYVATQ2MhYVIzQmIyIGFQE0NjMyFhUjNCYiBhUTNDYzMhYVIzQmIyIGFf0Ic750cDMwLjMB3nRdX3VxNS4sM0h1XV90cDVcM/7LdF1fdHA1Li0z/U9zvnRwMzAuM/1NdL50cDMwLjP+3nVdX3RwNVwzNXVdX3VxNS4tMwTzVGhoVC43NTD+61RoZ1UxNDUw/glVZ2hUMTQ3Lv35VGhoVDE0Ny7+5FRoaFQuNzcuBRpUaGhULjc1MP4JVWdoVDE0Ny79+VVnZ1UxNDUwAAj6LP5jAWsFxgAEAAkADgATABgAHQAiACcAOQCwIS+wEi+wCy+wGy+wJi+wAEVYsAcvG7EHHD5ZsABFWLAWLxuxFho+WbAARViwAi8bsQISPlkwMQUXAyMTAycTMwMBNwUVJQUHJTUFATclFwUBBwUnJQMnAzcTARcTBwP+Lwt6YEY6DHpgRgIdDQFN/qb7dQ3+swFaA5wCAUBE/tv88wL+wEUBJisRlEHGA2ARlELEPA7+rQFhBKIOAVL+oP4RDHxiRzsMfGJHAa4QmUTI/I4RmUXIAuQCAUZF/tX84wL+u0cBKwAAAv/cAAAD/AZxABEAGgB0shQbHBESObAUELAD0ACwAEVYsAwvG7EMHD5ZsABFWLAQLxuxEBw+WbAARViwCC8bsQgQPlmwEBCyAAEKK1gh2Bv0WbICDAgREjmwAi+wABCwCtCwC9CwAhCyEgEKK1gh2Bv0WbAIELITAQorWCHYG/RZMDEBIREhFhYQBgchESM1MzUzFSEBESEyNjU0JicClv6/ARi71NS3/iq/v7oBQf6/ARJpcW9kBRj90gLK/rbRAwUYmMHB/KL+RXdkYX0CAAIAqAAABNcFsAAOABsAVLIEHB0REjmwBBCwF9AAsABFWLADLxuxAxw+WbAARViwAS8bsQEQPlmyFgMBERI5sBYvsgABCitYIdgb9FmyCQADERI5sAMQshQBCitYIdgb9FkwMQERIxEhMgQVFAcXBycGIwE2NTQmJyERITI3JzcBacECGewBE2d+bYt2qAEZJaWR/qABWGJFbm4COv3GBbDyy7pwimeZNwEbQVuCnQL9xR15ZgAAAgCM/mAEIwROABMAIgB1shwjJBESObAcELAQ0ACwAEVYsBAvG7EQGD5ZsABFWLANLxuxDRg+WbAARViwCi8bsQoSPlmwAEVYsAcvG7EHED5ZsgIHEBESObIJEAcREjmyDhAHERI5sBAQshcBCitYIdgb9FmwBxCyHAEKK1gh2Bv0WTAxARQHFwcnBiMiJxEjETMXNjMyEhEnNCYjIgcRFjMyNyc3FzYEHmpvbm5Zc8VxuakJccnD47mciKhUU6tSPGZuWjICEe6XfWZ7OH399wXaeIz+2v76BLfUlf37lCdzZ2diAAABAKIAAAQjBwAACQA1sgMKCxESOQCwCC+wAEVYsAYvG7EGHD5ZsABFWLAELxuxBBA+WbAGELICAQorWCHYG/RZMDEBIxUhESMRIREzBCMD/ULAAsi5BRgG+u4FsAFQAAABAJEAAANCBXYABwAuALAGL7AARViwBC8bsQQYPlmwAEVYsAIvG7ECED5ZsAQQsgABCitYIdgb9FkwMQEhESMRIREzA0L+CboB+LkDofxfBDoBPAABALH+3wR8BbAAFQBbsgoWFxESOQCwCS+wAEVYsBQvG7EUHD5ZsABFWLASLxuxEhA+WbAUELIAAQorWCHYG/RZsgMUCRESObADL7AJELIKAQorWCHYG/RZsAMQshABCitYIdgb9FkwMQEhETMgABEQAiMnMjY1JiYjIxEjESEEMP1CsgEcATz15AKRkAHMzrXBA38FEv4v/s/+8P74/ueTw8vL1P1hBbAAAAEAkf7lA74EOgAWAFuyCxcYERI5ALAKL7AARViwFS8bsRUYPlmwAEVYsBMvG7ETED5ZsBUQsgABCitYIdgb9FmyAxUKERI5sAMvsAoQsgsBCitYIdgb9FmwAxCyEQEKK1gh2Bv0WTAxASERMzIAFRQGBgcnNjY1NCYjIxEjESEDPv4NbO8BGGKqdTCAeLKYcLoCrQOh/uT+/NdiyIYVkiGZeZGo/h0EOgAAAQCjAAAE/wWwABQAYgCwAEVYsAAvG7EAHD5ZsABFWLAMLxuxDBw+WbAARViwAi8bsQIQPlmwAEVYsAovG7EKED5ZsA/QsA8vsi8PAV2yzw8BXbIIAQorWCHYG/RZsgEIDxESObAF0LAPELAS0DAxCQIjASMVIzUjESMRMxEzETMRMwEE0v5wAb3x/qJQlGjBwWiUTQFDBbD9Tv0CAo709P1yBbD9fwEA/wACgQAAAQCaAAAEfwQ6ABQAewCwAEVYsA0vG7ENGD5ZsABFWLAULxuxFBg+WbAARViwCi8bsQoQPlmwAEVYsAMvG7EDED5ZsAoQsA7QsA4vsp8OAV2y/w4BXbKfDgFxtL8Ozw4CXbIvDgFdsm8OAXKyCQEKK1gh2Bv0WbIBCQ4REjmwBdCwDhCwEtAwMQkCIwEjFSM1IxEjETMRMzUzFTMBBFr+rgF36/7rMpRlurpllCoBAwQ6/f79yAHNwsL+MwQ6/jbV1QHKAAEARAAABosFsAAOAGsAsABFWLAGLxuxBhw+WbAARViwCi8bsQocPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbIIBgIREjmwCC+yLwgBXbLPCAFdsgEBCitYIdgb9FmwBhCyBAEKK1gh2Bv0WbIMAQgREjkwMQEjESMRITUhETMBMwEBIwOQsMH+JQKclgH87/3UAlbsAo79cgUYmP1+AoL9P/0RAAEAPgAABX0EOgAOAIAAsABFWLAGLxuxBhg+WbAARViwCi8bsQoYPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbACELAJ0LAJL7KfCQFdsv8JAV2ynwkBcbS/Cc8JAl2yLwkBXbJvCQFysgABCitYIdgb9FmwBhCyBAEKK1gh2Bv0WbIMAAkREjkwMQEjESMRITUhETMBMwEBIwMbiLr+ZQJVegFr4f5TAdHrAc3+MwOhmf42Acr9+P3OAAABAKgAAAeEBbAADQBeALAARViwAi8bsQIcPlmwAEVYsAwvG7EMHD5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmwAdCwAS+yLwEBXbACELIEAQorWCHYG/RZsAEQsggBCitYIdgb9FkwMQEhESEVIREjESERIxEzAWkC3gM9/YPA/SLBwQM+AnKY+ugCof1fBbAAAQCRAAAFaQQ6AA0AmwCwAEVYsAIvG7ECGD5ZsABFWLAMLxuxDBg+WbAARViwBi8bsQYQPlmwAEVYsAovG7EKED5ZsAYQsAHQsAEvsm8BAV20vwHPAQJdsj8BAXG0zwHfAQJxsg8BAXK0nwGvAQJxsv8BAV2yDwEBcbKfAQFdsi8BAV20bwF/AQJysAIQsgQBCitYIdgb9FmwARCyCAEKK1gh2Bv0WTAxASERIRUhESMRIREjETMBSwHxAi3+jLn+D7q6AmUB1Zn8XwHO/jIEOgAAAQCw/t8HzQWwABcAaLIRGBkREjkAsAcvsABFWLAWLxuxFhw+WbAARViwFC8bsRQQPlmwAEVYsBEvG7ERED5ZsgEWBxESObABL7AHELIIAQorWCHYG/RZsAEQsg4BCitYIdgb9FmwFhCyEgEKK1gh2Bv0WTAxATMgABEQAiMnMjY1JiYjIxEjESERIxEhBP92ARwBPPXkApGQAczOecH9MsAETwNB/s/+8P74/ueTw8vL1P1hBRL67gWwAAABAJH+5QawBDoAGABoshIZGhESOQCwCC+wAEVYsBcvG7EXGD5ZsABFWLAVLxuxFRA+WbAARViwEi8bsRIQPlmyARcIERI5sAEvsAgQsgkBCitYIdgb9FmwARCyDwEKK1gh2Bv0WbAXELITAQorWCHYG/RZMDEBMzIAFQcGBgcnNjY1NCYjIxEjESERIxEhA/ag+AEiAxTRmTB8e7ygpLn+DroDZQKF/vzXJqPhG5Igln2Sp/4dA6H8XwQ6AAIAcf/kBaIFxQAoADYAm7IYNzgREjmwGBCwKdAAsABFWLANLxuxDRw+WbAARViwHy8bsR8cPlmwAEVYsAQvG7EEED5ZsADQsAAvsgIEHxESObACL7ANELIOAQorWCHYG/RZsAQQshUBCitYIdgb9FmwAhCyLAEKK1gh2Bv0WbIXAiwREjmyJiwCERI5sAAQsigBCitYIdgb9FmwHxCyMwEKK1gh2Bv0WTAxBSInBiMiJAI1NTQSNjMXIgYVFRQSMzI3JgI1NTQ2NjMyEhUVFAIHFjMBFBYXNjY1NTQmIyIGFQWi17OOrLL+5J910oQBdpTsv0Y4eYRovXa25m9maHn9fXh1Ymh5Y2F6HElCsgFCxKyxASKjpf7Zpuz+1w1hARWq45r9jf7M/eue/vZfGgI0mO1KSOeN+bHO0rIAAAIAbf/rBJwETwAkAC8AorIEMDEREjmwBBCwJdAAsABFWLAMLxuxDBg+WbAARViwHC8bsRwYPlmwAEVYsAQvG7EEED5ZsABFWLAALxuxABA+WbICBBwREjmwAi+wDBCyDQEKK1gh2Bv0WbAEELIUAQorWCHYG/RZsAIQsicBCitYIdgb9FmyFhQnERI5sAAQsiQBCitYIdgb9FmyIickERI5sBwQsiwBCitYIdgb9FkwMQUiJwYjIiYCNTU0EjMVIgYVFRQWMzI3JhE1NDYzMhYVFRQHFjMBFBc2NzU0JiIGBwScsox2j4zhf8WbSV2piS4swa2PjLKAT2H+D59mA0l4RgEMOUKVARKnOs0BDp6tkjjB8AuiARFewOv5zmLjnRUBqdZ0c7p1gp6NegAAAQA0/qEGkwWwABMAWwCwES+wAEVYsAcvG7EHHD5ZsABFWLAMLxuxDBw+WbAARViwEy8bsRMQPlmwBxCyCAEKK1gh2Bv0WbAA0LAHELAF0LAD0LAC0LATELIKAQorWCHYG/RZsA7QMDEBITUhNTMVIRUhESERMxEzAyMRIQGr/okBd8EBgf5/As7BmBKs+9YFGJcBAZf7hQUT+vH+AAFfAAEAH/6/BRYEOgAPAEsAsA0vsABFWLADLxuxAxg+WbAARViwDy8bsQ8QPlmwAxCyBAEKK1gh2Bv0WbAA0LAPELIGAQorWCHYG/RZsAMQsAjQsAYQsArQMDEBITUhFSMRIREzETMDIxEhATH+7gLE+QHyuoASpfzSA6OXl/z0A6P8Xf4oAUEAAQCWAAAEyAWwABcAT7IEGBkREjkAsABFWLAALxuxABw+WbAARViwCi8bsQocPlmwAEVYsAwvG7EMED5ZsgcADBESObAHL7AE0LAHELIQAQorWCHYG/RZsBPQMDEBERYWMxEzETY3ETMRIxEGBxUjNSImJxEBVwGJoJV5eMHBcn+V+O8EBbD+MpqEATb+0g0hArb6UAJbIg3u6NnaAdcAAAEAgwAAA9kEOwAWAE+yBhcYERI5ALAARViwCy8bsQsYPlmwAEVYsBUvG7EVGD5ZsABFWLAALxuxABA+WbIPFQAREjmwDy+yBwEKK1gh2Bv0WbAE0LAPELAS0DAxISMRBgcVIzUmJicRMxEWFxEzETY3ETMD2bpGU5awuwK5Ba+WVEW6AYgTCYeFDcy1AUP+tdMaARj+6goRAhoAAAEAigAABLwFsAARAEayBRITERI5ALAARViwAS8bsQEcPlmwAEVYsAAvG7EAED5ZsABFWLAJLxuxCRA+WbIFAQAREjmwBS+yDgEKK1gh2Bv0WTAxMxEzETYzMhYXESMRJiYjIgcRisG5yvnyA8EBiaO7yAWw/aU12N/+LQHOmIY3/UsAAAIAP//qBb0FwwAdACUAZLIXJicREjmwFxCwJNAAsABFWLAPLxuxDxw+WbAARViwAC8bsQAQPlmyHw8AERI5sB8vshMBCitYIdgb9FmwBNCwHxCwC9CwABCyGAEKK1gh2Bv0WbAPELIjAQorWCHYG/RZMDEFIAARNSYmNTMUFhc0EjYzIAARFSEVFBYzMjcXBgYBITU0JiMiAgPp/uL+s5mmmFBXjv2WAQIBHPyC3syzpi9A0v3gAr6zq57CFgFRASlbE8WiWn0UtAEfov6j/r5sXdz3U48tNQNaIdnl/v0AAv/e/+wEYwROABkAIQByshQiIxESObAUELAb0ACwAEVYsA0vG7ENGD5ZsABFWLAALxuxABA+WbIeDQAREjmwHi+0vx7PHgJdshEBCitYIdgb9FmwA9CwHhCwCdCwABCyFQEKK1gh2Bv0WbIXDQAREjmwDRCyGgEKK1gh2Bv0WTAxBSIANSYmNTMUFz4CMzISERUhFhYzMjcXBgEiBgchNSYmAr3c/ux4d5NlFITIcNPq/SMEs4qub3GI/tlwmBICHgiIFAEh+h2uhpMwgslu/ur+/U2gxZJY0QPKo5MOjZsAAAEAo/7WBMwFsAAWAF2yFRcYERI5ALAOL7AARViwAi8bsQIcPlmwAEVYsAYvG7EGHD5ZsABFWLAALxuxABA+WbIEAAIREjmwBC+wCNCwDhCyDwEKK1gh2Bv0WbAEELIWAQorWCHYG/RZMDEhIxEzETMBMwEWABUQAiMnMjY1JiYnIQFkwcGFAgHi/fj4AQ355gKQkALHx/7sBbD9jwJx/YgW/tL6/vj+5JjBycrSAQAAAQCa/v4EGQQ6ABYAebINFxgREjkAsAcvsABFWLARLxuxERg+WbAARViwFS8bsRUYPlmwAEVYsA8vG7EPED5ZsBPQsBMvsp8TAV2y/xMBXbKfEwFxtL8TzxMCXbIvEwFdss8TAXGwANCwBxCyCAEKK1gh2Bv0WbATELIOAQorWCHYG/RZMDEBFhYVFAYGByc2NTQmJyMRIxEzETMBMwJ/w85krHAw+K2lsrq6WwGK4AJkH+K0XcV8E5I55oqSAv4zBDr+NgHKAAABALH+SwT+BbAAFQCnsgoWFxESOQCwAEVYsAAvG7EAHD5ZsABFWLADLxuxAxw+WbAARViwCC8bsQgSPlmwAEVYsBMvG7ETED5ZsALQsAIvsl8CAV2yzwIBXbIfAgFxtG8CfwICcbS/As8CAnG0DwIfAgJysu8CAXGynwIBcbJPAgFxsv8CAV2yrwIBXbIvAgFdsj8CAXKwCBCyDQEKK1gh2Bv0WbACELIRAQorWCHYG/RZMDEBESERMxEUBiMiJzcWMzI2NREhESMRAXICzMCrnDw2DiU9QUj9NMEFsP1uApL5/ai6EpoOZ1wC1f1/BbAAAAEAkf5LA/UEOgAWAJ+yChcYERI5ALAARViwAC8bsQAYPlmwAEVYsAMvG7EDGD5ZsABFWLAILxuxCBI+WbAARViwFC8bsRQQPlmwAtCwAi+ybwIBXbS/As8CAl2yPwIBcbTPAt8CAnGyDwIBcrSfAq8CAnGy/wIBXbIPAgFxsp8CAV2yLwIBXbRvAn8CAnKwCBCyDgEKK1gh2Bv0WbACELISAQorWCHYG/RZMDEBESERMxEUBiMiJzcWFxcyNjURIREjEQFLAfG5q5g8NA8RPBRCSP4PugQ6/isB1fttqrISkwcFAWhcAif+MgQ6AAACAF3/7AUSBcQAFwAfAF6yCCAhERI5sAgQsBjQALAARViwAC8bsQAcPlmwAEVYsAgvG7EIED5Zsg0ACBESObANL7AAELIRAQorWCHYG/RZsAgQshgBCitYIdgb9FmwDRCyGwEKK1gh2Bv0WTAxASAAERUUAgQjIAARNSE1EAIjIgcHJzc2ATISNyEVFBYCgAEuAWSc/uqn/uP+wQP09N2liz0vFp4BIaneD/zP0wXE/of+sVTF/r+2AVkBRXUHAQIBHDoajw1Y+sYBBdsi2uQAAQBo/+sELAWwABsAZ7ILHB0REjkAsABFWLACLxuxAhw+WbAARViwCy8bsQsQPlmwAhCyAAEKK1gh2Bv0WbAE0LIFAgsREjmwBS+wCxCwENCwCxCyEwEKK1gh2Bv0WbAFELIZAQorWCHYG/RZsAUQsBvQMDEBITUhFwEWFhUUBCMiJiY1MxQWMzI2NTQmIyM1Ax39dgNrAf5r2en+8+CG23bAnHuJo6aejQUSnn3+Hg7nxsPoab6CcpqSeJ2OlwAAAQBp/nUEKAQ6ABoAWrILGxwREjkAsAsvsABFWLACLxuxAhg+WbIAAQorWCHYG/RZsATQsgUCCxESObAFL7ALELAQ0LALELITAQorWCHYG/RZsAUQshgDCitYIdgb9FmwBRCwGtAwMQEhNSEXARYWFRQEIyImJjUzFBYzMjY1ECUjNQMM/YgDZQH+ctTo/vTehNd6up59jaT+yaADoZl2/hEQ4cXD52a/g3GflXkBIgiX//8AOv5LBHQFsAAmALBEAAAmAd6rQAAHAa8A8AAA//8AO/5LA5YEOgAmAOtPAAAmAd6sjgEHAa8A4QAAAAgAsgAGAV0wMQACAFcAAARlBbAACgATAFCyBBQVERI5sAQQsA3QALAARViwAS8bsQEcPlmwAEVYsAMvG7EDED5ZsgABAxESObAAL7ADELILAQorWCHYG/RZsAAQsgwBCitYIdgb9FkwMQERMxEhIiQ1NDY3AREhIgYVFBYXA6PC/d/k/vf/4AFt/qGMoZ+KA3MCPfpQ8svH6wT9KgI4loCCnwEAAgBZAAAGZwWwABcAHwBasgcgIRESObAHELAY0ACwAEVYsAgvG7EIHD5ZsABFWLAALxuxABA+WbIHCAAREjmwBy+wABCyGAEKK1gh2Bv0WbAK0LIQAAgREjmwBxCyGQEKK1gh2Bv0WTAxISIkNTQkNyERMxE3NjY3NiczFxYHBgYjJREhIgYUFhcCR+X+9wEB4wFqwVhvcgMEQLoWLwME5cP+7/6gjp6YhfTJxu0DAj366wECknuip0SXbsPonQI4l/6fBAAAAgBk/+cGbgYYAB8AKwCDshosLRESObAaELAq0ACwAEVYsAYvG7EGHj5ZsABFWLADLxuxAxg+WbAARViwGC8bsRgQPlmwAEVYsBwvG7EcED5ZsgUDGBESObAYELILAQorWCHYG/RZshEDGBESObIaAxgREjmwAxCyIgEKK1gh2Bv0WbAcELIoAQorWCHYG/RZMDETEBIzMhcRMxEGFjM2Njc2JzcWFgcOAiMGJwYjIgI1ASYjIgYVFBYzMjcnZOLEt2q5Al9OiZcEBEGzHCkCAnnZifJObNvA5ALHUqGHlJGIp1MFAgkBCAE9gwJN+0FfeALQvbrYAWbHZqn5hAS6tgEb9AExht/erb+TPgAAAQA2/+MF1QWwACcAY7IQKCkREjkAsABFWLAJLxuxCRw+WbAARViwIS8bsSEQPlmyASgJERI5sAEvsgABCitYIdgb9FmwCRCyBwEKK1gh2Bv0WbIPAAEREjmwIRCyFQEKK1gh2Bv0WbIaIQkREjkwMRM1MzY2NTQhITUhFhYVFAcWExUUFjM2Njc2JzMXFgcGAiMEAzU0Jif+m5+T/sv+oAFr7/zt2wVTQXSGBARBuhcwAwT2x/69D4d1AnmeAnuD+54B0cnoYkX+/FBPWwLOubvYWLuA/f7XCAFNQHiQAQABADH/4wToBDoAJwBgsg8oKRESOQCwAEVYsB8vG7EfGD5ZsABFWLAOLxuxDhA+WbICAQorWCHYG/RZsgcOHxESObIXKB8REjmwFy+yFAEKK1gh2Bv0WbAfELIdAQorWCHYG/RZsiUUFxESOTAxJQYzNjY3NiczFhYHBgYjBiYnNTQjIyczNjY1NCYjISchFhYVFAcWFwLnAl9wdgMEQrQtGAEE57iHiQfYzQLAem59df77BgEYxNy8tgTVWAKbiZmmhoA5zfADcINHnZYBV0pVXZYDp5idSjSyAAEAUv7XA/UFrwAhAF2yICIjERI5ALAXL7AARViwCS8bsQkcPlmwAEVYsBovG7EaED5ZsgEiCRESObABL7IAAQorWCHYG/RZsAkQsgcBCitYIdgb9FmyDwABERI5sBoQsRIKK1jYG9xZMDETNTM2NjUQISE1IRYWFRQHFhMVMxUUBgcnNjcjJic1NCYjr6mkm/7K/vEBIej05d4EqWFNalEOazwDkncCeZcBfYUBBZcD0sniZEb++KmUYchASHNuNKuPfo0AAAEAef7HA9kEOgAgAF2yICEiERI5ALAXL7AARViwCC8bsQgYPlmwAEVYsBovG7EaED5ZsgEhCBESObABL7IAAQorWCHYG/RZsAgQsgYBCitYIdgb9FmyDwABERI5sBoQsRIKK1jYG9xZMDETJzM2NTQjITUhFhcWFRQHFhcVMxUUBgcnNjcjJic1NCPCAdvp9f7pASfdbFa+vQGaYk1pVA1nMwLaAbiXAqGylgNnU4ShSTXKTJRhyj5IdH0hhV60AAEARP/rB3AFsAAjAGKyACQlERI5ALAARViwDi8bsQ4cPlmwAEVYsCAvG7EgED5ZsABFWLAHLxuxBxA+WbAOELIAAQorWCHYG/RZsAcQsggBCitYIdgb9FmwIBCyEwEKK1gh2Bv0WbIZDiAREjkwMQEhAwICBgcjNTc+AjcTIREUFjMyNjc2JzcWFgcGAgcHIiY1BCf+GhoPWayQPyhdZDQLHgNfWU+ClwQCP7ocKQID6cMus7cFEv2//t7+3IkCnQIHa+rzAsL7rGB0zbzA0gFmx2bs/toSArq0AAABAD//6wY6BDoAIQBisiAiIxESOQCwAEVYsAwvG7EMGD5ZsABFWLAeLxuxHhA+WbAARViwBi8bsQYQPlmwDBCyAAEKK1gh2Bv0WbAGELIHAQorWCHYG/RZsB4QshEBCitYIdgb9FmyFh4MERI5MDEBIQMCBgcjNTc2NjcTIREUFjMyNjc2JzMXFgcOAiMiJicDMf67FxScpUE2VU0NFwKvWk9sewQEQbMWMAMCbL54rrMBA6H+Wv7r5AKjBAqn0wIP/SFgebersstQsXya5nm4sQABAKn/5wdxBbAAHQCushQeHxESOQCwAEVYsAAvG7EAHD5ZsABFWLAZLxuxGRw+WbAARViwES8bsREQPlmwAEVYsBcvG7EXED5ZsBEQsgQBCitYIdgb9FmyCgARERI5sBcQsBzQsBwvsu8cAXGyXxwBXbLPHAFdsh8cAXG0bxx/HAJxtL8czxwCcbKfHAFxsk8cAXGy/xwBXbKvHAFdsi8cAV20DxwfHAJysj8cAXKyFQEKK1gh2Bv0WTAxAREUFjM2Njc2JzcWFgcOAiMGJicRIREjETMRIREE6V1KhpQEBEK7GysCAnvYiqu1CP1CwcECvgWw+6xlbwLNurfbAWLKZ6j7gwS4uwEn/X8FsP1uApIAAQCQ/+cGTQQ6ABwAo7IbHR4REjkAsABFWLAELxuxBBg+WbAARViwCC8bsQgYPlmwAEVYsBkvG7EZED5ZsABFWLACLxuxAhA+WbAH0LAHL7JvBwFdtL8HzwcCXbI/BwFxtM8H3wcCcbIPBwFytJ8HrwcCcbL/BwFdsg8HAXGynwcBXbIvBwFdtG8HfwcCcrIAAQorWCHYG/RZsBkQsg0BCitYIdgb9FmyEhkIERI5MDEBIREjETMRIREzERQWMzY2NzYnMxcWBwYCIwYmJwND/ga5uQH6uVxNbHwEBEGyFzADBOa7p7MIAc3+MwQ6/ioB1v0hZHUCtaus0VOxeer+8QS3uwABAHb/6wSgBcUAIgBHshUjJBESOQCwAEVYsAkvG7EJHD5ZsABFWLAALxuxABA+WbAJELIOAQorWCHYG/RZsAAQshYBCitYIdgb9FmyGwAJERI5MDEFIiQCJxE0EiQzMhcHJiMiAhUVFBYWMzY2NzYnMxcWBw4CArmk/viVApQBCqXchzuGoqzXYrBxjZYDAzW6JhMBAnveFZsBGK0BEK8BHp1YikT+/tL+g9V1ApmGms+zW1uIyW0AAQBl/+sDxwROAB4ARLITHyAREjkAsABFWLATLxuxExg+WbAARViwCy8bsQsQPlmyAAEKK1gh2Bv0WbIFCxMREjmwExCyGAEKK1gh2Bv0WTAxJTY2NzQnMxYHBgYjIgA1NTQ2NjMyFwcmIyIGFRUUFgJRYFoCFLIcAQTErdz+8HbWi7lgLGOKg5umggJQWXpyllaZqQEy9x6X+YxCkDrcsx+r2wABACP/5wVHBbAAGABNsgUZGhESOQCwAEVYsAIvG7ECHD5ZsABFWLAVLxuxFRA+WbACELIAAQorWCHYG/RZsATQsAXQsBUQsgkBCitYIdgb9FmyDgIVERI5MDEBITUhFSERFBYzNjYSJzcWFgcOAiMGJicB/v4lBID+HFxMhpQIQrobKwMCedmJqrcIBRKenvxIYHIC0AFu2wFiymep+YQEt7wAAAEARv/nBLcEOgAYAE2yFhkaERI5ALAARViwAi8bsQIYPlmwAEVYsBUvG7EVED5ZsAIQsgABCitYIdgb9FmwBNCwBdCwFRCyCQEKK1gh2Bv0WbIOFQIREjkwMQEhNSEVIREUFjM2Njc2JzMWFgcGBiMGJicBrP6aA4v+lV5NcXcDBECyKhsBBOi5qrMIA6SWlv21Y3QCnYmXrn2MPNDvBLm5AAEAlv/sBP8FxQApAG+yJCorERI5ALAARViwFi8bsRYcPlmwAEVYsAsvG7ELED5ZsgMBCitYIdgb9FmwCxCwBtCyJQsWERI5sCUvss8lAV2ynyUBcbImAQorWCHYG/RZshAmJRESObAWELAb0LAWELIeAQorWCHYG/RZMDEBFBYzMjY1MxQGBiMgJDU0JSYmNTQkITIWFhUjNCYjIgYVFBYXMxUjBgYBWM+wm8zBjf6d/vv+xAEUeIYBJQEGk/WMwcGSp8Kto8TEsbUBkniSmHSDvmflxf9WMKZlxNtlunVnj4h2dX0CngJ+AAIAbwRwAskF1gAFAA0AIwCwCy+wB9CwBy+wAdCwAS+wCxCwBNCwBC+wBdAZsAUvGDAxARMzFQMjATMVFhcHJjUBkXTE31n+3qgDUEmyBJQBQhX+wwFSW3tVO1+7AP//ACUCHwINArYABgARAAD//wAlAh8CDQK2AAYAEQAA//8AogKLBI0DIgBGAZfZAEzNQAD//wCQAosFyQMiAEYBl4QAZmZAAP//AA3+bAOhAAAAJwBDAAn/AwEGAEMJAAAUAEAJAwITAiMCMwIEXbKwAgFdMDEAAQBgBDEBeAYTAAgAIbIICQoREjkAsABFWLAALxuxAB4+WbIFCQAREjmwBS8wMQEXBgcVIzU0NgEOal0DuGEGE0h/k4h0ZsgAAQAwBBYBRwYAAAgAIbIICQoREjkAsABFWLAELxuxBB4+WbIACQQREjmwAC8wMRMnNjc1MxUGBplpXQO3AWEEFkiCkJCCZMcAAQAk/uUBOwC1AAgAHrIICQoREjkAsAkvsgQFCitYIdgb9FmwANCwAC8wMRMnNjc1MxUUBo1pWwO5Y/7lSX+SdmRlygABAE8EFgFnBgAACAAMALAIL7AE0LAELzAxARUWFwcmJic1AQYEXWpNXwIGAJOQf0hAwmGHAP//AGgEMQK7BhMAJgFsCAAABwFsAUMAAP//ADwEFgKGBgAAJgFtDAAABwFtAT8AAAACACT+0wJkAPYACAARADCyChITERI5sAoQsAXQALASL7IEBQorWCHYG/RZsADQsAAvsAnQsAkvsAQQsA3QMDETJzY3NTMVFAYXJzY3NTMVFAaNaVsDuWPdaVsDumH+00iJmbmkbNNASImZuaRr0QAAAQBGAAAEJAWwAAsASwCwAEVYsAgvG7EIHD5ZsABFWLAGLxuxBhg+WbAARViwCi8bsQoYPlmwAEVYsAIvG7ECED5ZsAoQsgABCitYIdgb9FmwBNCwBdAwMQEhESMRITUhETMRIQQk/my6/nABkLoBlAOh/F8DoZkBdv6KAAEAV/5gBDQFsAATAHwAsABFWLAMLxuxDBw+WbAARViwCi8bsQoYPlmwAEVYsA4vG7EOGD5ZsABFWLACLxuxAhI+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsgYBCitYIdgb9FmwDhCyCAEKK1gh2Bv0WbAJ0LAQ0LAR0LAGELAS0LAT0DAxISERIxEhNSERITUhETMRIRUhESEENP5quv5zAY3+cwGNugGW/moBlv5gAaCXAwqZAXb+ipn89gAAAQCKAhcCIgPLAA0AFrIKDg8REjkAsAMvsQoKK1jYG9xZMDETNDYzMhYVFRQGIyImNYpvXFtybl5dbwMEV3BtXSVXbm9Y//8AlP/1Ay8A0QAmABIEAAAHABIBuQAA//8AlP/1BM4A0QAmABIEAAAnABIBuQAAAAcAEgNYAAAAAQAmAh4AzwK3AAMADwCwAi+xAQorWNgb3FkwMRMjNTPPqakCHpkAAAYARP/rB1cFxQAVACMAJwA1AEMAUQC4sgJSUxESObACELAb0LACELAm0LACELAo0LACELA20LACELBJ0ACwAEVYsBkvG7EZHD5ZsABFWLASLxuxEhA+WbAD0LADL7AH0LAHL7ASELAO0LAOL7AZELAg0LAgL7IkEhkREjmwJC+yJhkSERI5sCYvsBIQsisECitYIdgb9FmwAxCyMgQKK1gh2Bv0WbArELA50LAyELBA0LAgELJHBAorWCHYG/RZsBkQsk4ECitYIdgb9FkwMQE0NjMyFzYzMhYVFRQGIyInBiMiJjUBNDYzMhYVFRQGIyImNQEnARcDFBYzMjY1NTQmIyIGFQUUFjMyNjU1NCYjIgYVARQWMzI2NTU0JiMiBhUDN6eDmE1Pl4Oop4KZT0yXgqr9DaeDhKelhIKqAWloAsdos1hKSFZXSUdZActYSUhWV0lIV/tCWEpHV1ZKSFgBZYOpeXmoi0eDqXh4p4sDe4OqqohIgaqni/wcQgRyQvw3T2VjVUpPZGNUSk9lZlJKT2RkUwLqTmViVUlOZmVTAAABAGwAmQIgA7UABgAQALAFL7ICBwUREjmwAi8wMQEBIwE1ATMBHgECjf7ZASeNAib+cwGEEwGFAAEAWQCYAg4DtQAGABAAsAAvsgMHABESObADLzAxEwEVASMBAecBJ/7ZjgEC/v4Dtf57E/57AY4BjwABADsAbgNqBSIAAwAJALAAL7ACLzAxNycBF6NoAsdobkIEckIA//8ANgKQArsFpQMHAdgAAAKQABMAsABFWLAJLxuxCRw+WbAN0DAxAAABAHoCiwL4BboADwBTsgoQERESOQCwAEVYsAAvG7EAHD5ZsABFWLADLxuxAxw+WbAARViwDS8bsQ0UPlmwAEVYsAYvG7EGFD5ZsgENAxESObADELIKAworWCHYG/RZMDETFzYzIBERIxEmIyIHESMR+h5KkgEEqgONbiyqBat7iv7G/gsB5rlt/c4DIAAAAQBbAAAEaAXEACkAlrIhKisREjkAsABFWLAZLxuxGRw+WbAARViwBi8bsQYQPlmyKRkGERI5sCkvsgACCitYIdgb9FmwBhCyBAEKK1gh2Bv0WbAI0LAJ0LAAELAO0LApELAQ0LApELAV0LAVL7YPFR8VLxUDXbISAgorWCHYG/RZsBkQsB3QsBkQsiABCitYIdgb9FmwFRCwJNCwEhCwJtAwMQEhFxQHIQchNTM2Njc1JyM1MycjNTMnNDYzMhYVIzQmIyIGFRchFSEXIQMV/rEDPgLdAfv4TSgyAgOqpgSinQb1yL7ev39vaYIGAVz+qQQBUwHWRJpbnZ0Jg2AIRX2IfbfH7tSxa3yafbd9iAAFAB8AAAY2BbAAGwAfACMAJgApALEAsABFWLAXLxuxFxw+WbAARViwGi8bsRocPlmwAEVYsAwvG7EMED5ZsABFWLAJLxuxCRA+WbIQDBcREjmwEC+wFNCwFC+0DxQfFAJdsCTQsCQvsBjQsBgvsADQsAAvsBQQshMBCitYIdgb9FmwH9CwI9CwA9CwEBCwHNCwHC+wINCwIC+wBNCwBC+wEBCyDwEKK1gh2Bv0WbAL0LAp0LAH0LImFwwREjmyJwkaERI5MDEBMxUjFTMVIxEjASERIxEjNTM1IzUzETMBIREzASEnIwUzNSElMycBNSMFV9/f39/C/sH+YsDZ2dnZwAFRAY+//GEBO2HaAhTM/tT+THd3AuBoA6yYlJj+GAHo/hgB6JiUmAIE/fwCBPzQlJSUmLb8558AAAIAp//sBgMFsAAfACgAorIjKSoREjmwIxCwEdAAsABFWLAWLxuxFhw+WbAARViwGi8bsRoYPlmwAEVYsB4vG7EeGD5ZsABFWLAKLxuxChA+WbAARViwFC8bsRQQPlmwHhCyAAEKK1gh2Bv0WbAKELIFAQorWCHYG/RZsAAQsA7QsA/QsiEUFhESObAhL7ISAQorWCHYG/RZsB4QsB3QsB0vsBYQsicBCitYIdgb9FkwMQEjERQWMzI3FwYjIiY1ESMGBgcjESMRITIWFzMRMxEzATMyNjU0JicjBf7KNkEjNAFJRnx+jxTnx8m5AXnK7RSPusr7YsCLi4eEywOr/WFBQQyWFJaKAp+3vQL9ywWwwLYBBv76/pKNl5iOAv//AKj/7AgQBbAAJgA2AAAABwBXBFUAAAAHADkAAAcpBbAAHwAjACcAKwAwADUAOgC3ALAARViwHi8bsR4cPlmwAEVYsBsvG7EbHD5ZsABFWLACLxuxAhw+WbAARViwDS8bsQ0QPlmwAEVYsBAvG7EQED5ZshQQGxESObAUL7AY0LAYL7Ac0LA20LAA0LAE0LAYELIXAQorWCHYG/RZsCfQsCPQsCvQsAfQsBQQsCTQsCDQsCjQsAjQsBQQshMBCitYIdgb9FmwMtCwD9CwLdCwC9CyNBAeERI5sDQQsC/QsjkeEBESOTAxASETMwMzFSMHMxUhAyMDIQMjAyE1MycjNTMDMxMhEzMDIScjBTM3IQUzNyETIxcXNyUjFxc3ATMnJwcEhwFTbMFzlbov6f7ydK+I/oSNr3X+9uUvtpFzwG4BVoih4wEkN7T+eqU3/vgDP6Us/vm5WQwpH/zpVwYdKAFEXRcXFwPUAdz+JJjCmP4eAeL+HgHimMKYAdz+JAHc/MrCwsLCwv6mKrLGFhfArQIcUW9vAAACAIwAAAWeBDoADQAbAGQAsABFWLAWLxuxFhg+WbAARViwAC8bsQAYPlmwAEVYsAsvG7ELED5ZsABFWLAOLxuxDhA+WbIRAQorWCHYG/RZsgURABESObAFL7AAELIKAQorWCHYG/RZsg8KCxESObAPLzAxATIWFxEjETQmJyERIxEBETMRITI2NxEzEQYGBwK6r6gEuWVv/r25AYm5AT5xZwG5AqWtBDrBv/6jAUx/eAH8XwQ6+8YC3f27dX4Cr/1OwsQCAAABAF//7AQcBcQAIwCHshUkJRESOQCwAEVYsBYvG7EWHD5ZsABFWLAJLxuxCRA+WbIjCRYREjmwIy+yAAIKK1gh2Bv0WbAJELIEAQorWCHYG/RZsAAQsAzQsCMQsA/QsCMQsB/QsB8vtg8fHx8vHwNdsiACCitYIdgb9FmwENCwHxCwE9CwFhCyGwEKK1gh2Bv0WTAxASEWFjMyNxcGIyIAAyM1MzUjNTMSADMyFwcmIyIGByEVIRUhA1H+gAS0pXRmFHh4+P7jBrKysrIKAR3zaocUbW6ksQYBf/6AAYACHcPSIqAeASUBDHyJfQEGAR8foiPLvH2JAAQAHwAABbwFsAAZAB4AIwAoALgAsABFWLALLxuxCxw+WbAARViwAS8bsQEQPlmwCxCyKAEKK1gh2Bv0WbIkKAEREjmwJC+ycCQBcbYAJBAkICQDXbIcAQorWCHYG/RZsB3QsB0vsnAdAXG2AB0QHSAdA12yIAEKK1gh2Bv0WbAh0LAhL7JwIQFxsiAhAV2yAAEKK1gh2Bv0WbAgELAD0LAdELAG0LAGL7AcELAH0LAkELAK0LAkELAP0LAcELAS0LAdELAU0LAULzAxAREjESM1MzUjNTM1ITIWFzMVIxcHMxUjBiEBJyEVIQchFSEyASEmIyEBpcDGxsbGAhmx6zbswwMCwuVr/owBRAT9bQKVP/2qAVms/fsCSlSe/qgCOv3GAzCXXpf0hHCXMiyX9gG3NF6XWQHlVgAAAQAqAAAD+AWwABoAZgCwAEVYsBkvG7EZHD5ZsABFWLAMLxuxDBA+WbAZELIYAQorWCHYG/RZsAHQsBgQsBTQsBQvsAPQsBQQshMBCitYIdgb9FmwBtCwExCwDtCwDi+yCQEKK1gh2Bv0WbINCQ4REjkwMQEjFhczByMGBiMBFSMBJzM2NjchNyEmJyE3IQPK7EARyS6YEvbbAe3j/e4B+X2cFf29LgITMPb+5y8DnQUSUXWesrT9xAwCaX0Ba1yevgieAAEAIP/uBBoFsAAeAI0AsABFWLARLxuxERw+WbAARViwBS8bsQUQPlmyExEFERI5sBMvsBfQsBcvsgAXAV2yGAEKK1gh2Bv0WbAZ0LAI0LAJ0LAXELAW0LAL0LAK0LATELIUAQorWCHYG/RZsBXQsAzQsA3QsBMQsBLQsA/QsA7QsAUQshoBCitYIdgb9FmyHgURERI5sB4vMDEBFQYCBCMiJxEHNTc1BzU3ETMRNxUHFTcVBxE2EhE1BBoCkP73r1Bs9PT09MD7+/v7vskDA2TS/semEgJab7JvmW+ybwFZ/v9zsnOZc7Jz/d4CARABCVgAAQBdAAAE6wQ6ABcAXLIAGBkREjkAsABFWLAWLxuxFhg+WbAARViwBC8bsQQQPlmwAEVYsAovG7EKED5ZsABFWLAQLxuxEBA+WbIAChYREjmwAC+yCQEKK1gh2Bv0WbAM0LAAELAV0DAxARYAERUjNSYCJxEjEQYCBxUjNRIANzUzAv/nAQW5Ap6TuY+fArkDAQffuQNxIf6N/tq3yN8BBSD9NALKIf712MbFAR0BbSLJAAIAHwAABQMFsAAWAB8AbQCwAEVYsAwvG7EMHD5ZsABFWLADLxuxAxA+WbIGAwwREjmwBi+yBQEKK1gh2Bv0WbAB0LAGELAK0LAKL7QPCh8KAl2yCQEKK1gh2Bv0WbAU0LAGELAV0LAKELAX0LAMELIfAQorWCHYG/RZMDEBIREjESM1MzUjNTMRITIEFRQEByEVIQEhMjY1NCYnIQL8/rG/z8/PzwIZ6gES/vny/qMBT/6xAVqboqiP/qABE/7tAROeiZ0C2e7L1ecBiQEmkox/nQEABAB6/+sFgwXFABsAJwA1ADkAt7IcOjsREjmwHBCwANCwHBCwKNCwHBCwONAAsABFWLAKLxuxChw+WbAARViwJS8bsSUQPlmwChCwA9CwAy+yDgoDERI5tioOOg5KDgNdsAoQshEECitYIdgb9FmwAxCyGAQKK1gh2Bv0WbIbAwoREjm0NhtGGwJdsiUbAV2wJRCwH9CwHy+wJRCyKwQKK1gh2Bv0WbAfELIyBAorWCHYG/RZsjYlChESObA2L7I4CiUREjmwOC8wMQEUBiMiJjU1NDYzMhYVIzQmIyIGFRUUFjMyNjUBNDYgFhUVFAYgJjUXFBYzMjY1NTQmIyIGFQUnARcCqJh7eqGee3mciklCQU1PQT1MARCnAQaop/78qopYSkhWV0lHWf4GaQLHaQQebpCoiUeCq5FvOk1mUklOZUw6/UeDqaiLR4Opp4sGT2VjVUpPZGNU80IEckIAAAIAaP/rA2oGEwAXACEAZLITIiMREjmwExCwGNAAsABFWLAMLxuxDB4+WbAARViwAC8bsQAQPlmyBgwAERI5sAYvsgUBCitYIdgb9FmwE9CwABCyFwEKK1gh2Bv0WbAGELAY0LAMELIfAQorWCHYG/RZMDEFIiY1BiM1MjcRNjYzMhYVFRQCBxUUFjMDNjY1NTQmIyIHAszC0mJucV8BnYV4l86ra3DbWWcwJmcDFerrHLAjAiSyxq2TJcH+j2timo0CY1X1eydSTNEAAAQAogAAB8YFwAADABAAHgAoAKOyHykqERI5sB8QsAHQsB8QsATQsB8QsBHQALAARViwJy8bsSccPlmwAEVYsCUvG7ElHD5ZsABFWLAHLxuxBxw+WbAARViwIi8bsSIQPlmwAEVYsCAvG7EgED5ZsAcQsA3QsALQsAIvshACAV2yAQMKK1gh2Bv0WbANELIUAworWCHYG/RZsAcQshsDCitYIdgb9FmyISUgERI5siYgJRESOTAxASE1IQE0NiAWFRUUBiMiJjUXFBYzMjY3NTQmIyIGFQEjAREjETMBETMHpP2ZAmf9dboBOLu5nJ66o19WVF0BX1VUX/68zP2vucsCVLcBnI4CPZu+u6Ndnbq7oQVia2pgZWFra2P7mwRu+5IFsPuPBHEAAgBnA5cEOAWwAAwAFABtALAARViwBi8bsQYcPlmwAEVYsAkvG7EJHD5ZsABFWLATLxuxExw+WbIBFQYREjmwAS+yAAkBERI5sgMBBhESObAE0LIIAQkREjmwARCwC9CwBhCxDQorWNgb3FmwARCwD9CwDRCwEdCwEtAwMQEDIwMRIxEzExMzESMBIxEjESM1IQPejDSMWnCQkHBa/guTW5QBggUh/nYBif53Ahn+cQGP/ecByP44AchRAAACAJj/7ASTBE4AFQAcAGKyAh0eERI5sAIQsBbQALAARViwCi8bsQoYPlmwAEVYsAIvG7ECED5ZshoKAhESObAaL7IPCgorWCHYG/RZsAIQshMKCitYIdgb9FmyFQoCERI5sAoQshYKCitYIdgb9FkwMSUGIyImAjU0EjYzMhYWFxUhERYzMjcBIgcRIREmBBa3u5H0h5D4hIXjhAP9AHeaxKz+kJd6AhxzXnKdAQGTjwEDn4vzkD7+uG56Ayp6/usBHnH//wBU//UFswWbACcB1f/aAoYAJwF8AOYAAAAHAdwDFAAA//8AZP/1BlMFtAAnAdcAJgKUACcBfAGlAAAABwHcA7QAAP//AGP/9QZJBaQAJwHZAAgCjwAnAXwBgwAAAAcB3AOqAAD//wBZ//UF/QWkACcB2wAfAo8AJwF8ASAAAAAHAdwDXgAAAAIAav/rBDIF7AAbACoAW7IVKywREjmwFRCwI9AAsA0vsABFWLAVLxuxFRA+WbIADRUREjmwAC+yAwAVERI5sA0QsgcBCitYIdgb9FmwABCyHAEKK1gh2Bv0WbAVELIjAQorWCHYG/RZMDEBMhYXLgIjIgcnNzYzIAARFRQCBiMiADU1NAAXIgYVFRQWMzI2NTUnJiYCPF2mOg5ppmCBmxAxdJcBBwEfeN6Q2v74AQDkjJ+fio6fBBygA/5NRIzZeTuXFTD+Tv5uMrz+1qUBI/YO3AEQmLugEKrP+ds9D1pqAAABAKn/KwTlBbAABwAnALAEL7AARViwBi8bsQYcPlmwBBCwAdCwBhCyAgEKK1gh2Bv0WTAxBSMRIREjESEE5bn9NrkEPNUF7foTBoUAAQBF/vMEqwWwAAwANQCwAy+wAEVYsAgvG7EIHD5ZsAMQsgIBCitYIdgb9FmwBdCwCBCyCgEKK1gh2Bv0WbAH0DAxAQEhFSE1AQE1IRUhAQNr/bsDhfuaAmH9nwQZ/McCRgJB/UqYjwLMAtKQmP1CAAEAqAKLA+sDIgADABsAsABFWLACLxuxAhY+WbIBAQorWCHYG/RZMDEBITUhA+v8vQNDAouXAAEAPwAABJgFsAAIADyyAwkKERI5ALAHL7AARViwAS8bsQEcPlmwAEVYsAMvG7EDED5ZsgABAxESObAHELIGAQorWCHYG/RZMDEBATMBIwMjNSECMAGrvf3ijfW5ATsBHASU+lACdJoAAwBi/+sHywROABwALAA8AG+yBz0+ERI5sAcQsCTQsAcQsDTQALAARViwBC8bsQQQPlmwAEVYsAovG7EKED5ZsBPQsBMvsBnQsBkvsgcZBBESObIWGQQREjmwChCyIAEKK1gh2Bv0WbATELIpAQorWCHYG/RZsDDQsCAQsDnQMDEBFAIGIyImJwYGIyImAjU1NBI2MzIWFzY2MzIAFQUUFjMyNjc3NS4CIyIGFSU0JiMiBgcHFR4CMzI2NQfLft+Jke5QUeyQid6Aft+Ike1RUO+SzgEW+VCmiHK5NAsYcpJQhqYF96aFc7w1CRZ1kFCIpQIPk/8Akbixs7aPAQCXGJMBAJK3s7G5/sHzDbHcvKMnKmPAYdy5CK7fvagfKmHFYN64AAH/sP5LAo4GFQAVAD2yAhYXERI5ALAARViwDi8bsQ4ePlmwAEVYsAMvG7EDEj5ZsggBCitYIdgb9FmwDhCyEwEKK1gh2Bv0WTAxBRQGIyInNxYzMjURNDYzMhcHJiMiFQFlpJ45OhIuIZuxoTxUGCU2tmuiqBSRDbEFGaq+FY4L2wACAGUBGAQLA/QAFQArAI2yHCwtERI5sBwQsAXQALADL7IPAwFdsA3QsA0vsgANAV2yCAEKK1gh2Bv0WbADELAK0LAKL7ADELISAQorWCHYG/RZsA0QsBXQsBUvsA0QsBnQsBkvsCPQsCMvsgAjAV2yHgEKK1gh2Bv0WbAZELAg0LAgL7AZELIoAQorWCHYG/RZsCMQsCvQsCsvMDETNjYzNhcXFjMyNxUGIyInJyYHIgYHBzY2MzYXFxYzMjcXBiMiJycmByIGB2Ywg0JSSphCToZmZ4VOQqFET0KDMAEwgkJSSpVEUIVmAWeFTkKYSlJCgzADhTM6AiNOH4C+bR9THwJEPOUzOwIjTSGAvW0fTiMCRDwAAAEAmACbA9oE1QATADcAsBMvsgABCitYIdgb9FmwBNCwExCwB9CwExCwD9CwDy+yEAEKK1gh2Bv0WbAI0LAPELAL0DAxASEHJzcjNSE3ITUhExcHMxUhByED2v3tjl9srgELlf5gAf6ZX3fD/t+UAbUBj/Q7uaD/oQEGO8uh/wD//wA+AAIDgQQ+AGYAIABhQAA5mgEHAZf/lv13AB0AsABFWLAFLxuxBRg+WbAARViwCC8bsQgQPlkwMQD//wCFAAED3ARRAGYAIgBzQAA5mgEHAZf/3f12AB0AsABFWLACLxuxAhg+WbAARViwCC8bsQgQPlkwMQAAAgArAAAD3AWwAAUACQA4sggKCxESObAIELAB0ACwAEVYsAAvG7EAHD5ZsABFWLADLxuxAxA+WbIGAAMREjmyCAADERI5MDEBMwEBIwkEAbyMAZT+cI3+bAHW/ukBHAEYBbD9J/0pAtcCD/3x/fICDgD//wC1AKcBmwT1ACcAEgAlALIABwASACUEJAACAG4CeQIzBDoAAwAHACwAsABFWLACLxuxAhg+WbAARViwBi8bsQYYPlmwAhCwANCwAC+wBNCwBdAwMRMjETMBIxEz+42NATiNjQJ5AcH+PwHBAAABAFz/XwFXAO8ACAAgsggJChESOQCwCS+wBNCwBC+0QARQBAJdsADQsAAvMDEXJzY3NTMVFAbFaUgCsU+hSG1/XExbswD//wA8AAAE9gYVACYASgAAAAcASgIsAAAAAgAfAAADzQYVABUAGQCDsggaGxESObAIELAX0ACwAEVYsAgvG7EIHj5ZsABFWLADLxuxAxg+WbAARViwES8bsREYPlmwAEVYsBgvG7EYGD5ZsABFWLAALxuxABA+WbAARViwFi8bsRYQPlmwAxCyAQEKK1gh2Bv0WbAIELINAQorWCHYG/RZsAEQsBPQsBTQMDEzESM1MzU0NjMyFwcmIyIGFRUzFSMRISMRM8qrq8+9cKsffXF3ad3dAkm6ugOrj1y1yj2cMmtrXo/8VQQ6AAEAPAAAA+kGFQAWAFwAsABFWLASLxuxEh4+WbAARViwBi8bsQYYPlmwAEVYsAkvG7EJED5ZsABFWLAWLxuxFhA+WbASELICAQorWCHYG/RZsAYQsgcBCitYIdgb9FmwC9CwBhCwDtAwMQEmIyIVFTMVIxEjESM1MzU2NjMyBREjAzB8TMjn57mrqwHAsWUBK7kFYxTSa4/8VQOrj3atuD36KAAAAgA8AAAGMgYVACcAKwCdALAARViwFi8bsRYePlmwAEVYsAgvG7EIHj5ZsABFWLAgLxuxIBg+WbAARViwEi8bsRIYPlmwAEVYsAQvG7EEGD5ZsABFWLAqLxuxKhg+WbAARViwKS8bsSkQPlmwAEVYsCMvG7EjED5ZsABFWLAnLxuxJxA+WbAgELIhAQorWCHYG/RZsCXQsAHQsAgQsg0BCitYIdgb9FmwG9AwMTMRIzUzNTQ2MzIXByYjIgYVFSE1NDYzMhcHJiMiBhUVMxUjESMRIREhIxEz56uruqpAPwovNVpiAZDPvXCrH31yd2ne3rn+cASSubkDq49vrr4RlglpYnJctco9nDJqbF6P/FUDq/xVBDoAAAEAPAAABjIGFQAoAGoAsABFWLAILxuxCB4+WbAARViwIS8bsSEYPlmwAEVYsCgvG7EoED5ZsCEQsiIBCitYIdgb9FmwJtCwAdCwIRCwEtCwBNCwCBCyDQEKK1gh2Bv0WbAIELAW0LAoELAl0LAa0LANELAd0DAxMxEjNTM1NDYzMhcHJiMiBhUVITU2NjMyBREjESYjIhUVMxUjESMRIRHnq6u6qkA/Ci81WmIBkAHAsWUBK7l8TMjn57n+cAOrj2+uvhGWCWlicnatuD36KAVjFNJrj/xVA6v8VQABADz/7ASbBhUAJgBzALAARViwIS8bsSEePlmwAEVYsB0vG7EdGD5ZsABFWLAYLxuxGBA+WbAARViwCi8bsQoQPlmwHRCwENCwJdCyAQEKK1gh2Bv0WbAKELIFAQorWCHYG/RZsAEQsA7QsCEQshUBCitYIdgb9FmwDhCwGtAwMQEjERQWMzI3FwYjIiY1ESM1MxEmJyciFREjESM1MzU0NjMyFhcRMwSWyjZBIzQBSUZ8fsXFPWYYt7mrq7OgXdtaygOr/WFBQQyWFJaKAp+PAR8cBwHd+2ADq49wrb45LP6KAAABAF//7AZUBhEATAC5shZNThESOQCwAEVYsEcvG7FHHj5ZsABFWLAPLxuxDxg+WbAARViwSy8bsUsYPlmwAEVYsEAvG7FAGD5ZsABFWLAJLxuxCRA+WbAARViwLC8bsSwQPlmwSxCyAQEKK1gh2Bv0WbAJELIEAQorWCHYG/RZsAEQsA3QsEcQshQBCitYIdgb9FmwQBCyIAEKK1gh2Bv0WbI6LEAREjmwOhCyJQEKK1gh2Bv0WbAsELI0AQorWCHYG/RZMDEBIxEUMzI3FwYjIiY1ESM1MzU0JiMiBhUUHgIVIzQmIyIGFRQWBBYWFRQGIyImJjUzFhYzMjY1NCYkJiY1NDYzMhcmNTQ2MzIWFRUzBk/KdyM0AU1CdoS8vGZiWFwfJR66gWJlcmoBFaxT6LmCyHG5BYtyaX9x/uelT+GvYFYsypu5ycoDq/1+nwyWFKaXAoKPVXJ1WEY7aXB8TExuWEdDRD5WeVeRr1ylYF1tVUdLUzxUdFCFuB5uUnylx8NNAAAWAFv+cgfuBa4ADQAaACgANwA9AEMASQBPAFYAWgBeAGIAZgBqAG4AdgB6AH4AggCGAIoAjgG+shCPkBESObAQELAA0LAQELAb0LAQELAw0LAQELA80LAQELA+0LAQELBG0LAQELBK0LAQELBQ0LAQELBX0LAQELBb0LAQELBh0LAQELBj0LAQELBn0LAQELBt0LAQELBw0LAQELB30LAQELB70LAQELB/0LAQELCE0LAQELCI0LAQELCM0ACwPS+wAEVYsEYvG7FGHD5Zsn5JAyuyensDK7KCdwMrsn86AyuyCj1GERI5sAovsAPQsAMvsA7QsA4vsAoQsA/QsA8vslAODxESObBQL7JvBworWCHYG/RZshVQbxESObAKELIeBworWCHYG/RZsAMQsiUHCitYIdgb9FmwDxCwKdCwKS+wDhCwLtCwLi+yNAcKK1gh2Bv0WbA9ELI8CgorWCHYG/RZsD0QsGvQsGfQsGPQsD7QsDwQsGzQsGjQsGTQsD/QsDoQsEHQsEYQsGDQsFzQsFjQsEvQskoKCitYIdgb9FmwWtCwXtCwYtCwR9CwSRCwTtCwDhCyUQcKK1gh2Bv0WbAPELJ2BworWCHYG/RZsHcQsITQsHoQsIXQsHsQsIjQsH4QsInQsH8QsIzQsIIQsI3QMDEBFAYjIiYnNTQ2MzIWFxMRMzIWFRQHFhYVFCMBNCYjIgYVFRQWMzI2NQEzERQGIyImNTMUMzI2NQERMxUzFSE1MzUzEQERIRUjFSU1IREjNQEVMzI1NCcTNSEVITUhFSE1IRUBNSEVITUhFSE1IRUTMzI1NCYjIwEjNTM1IzUzESM1MyUjNTM1IzUzESM1MwM5gWRmgAJ+aGWAAkO8YnJUMjTQ/o9KQUBKSkJASQO6XGlSWG1daCk2+cRxxAUox2/4bQE1xAXsATZv/Fx+Z2LLARb9WwEV/VwBFAIKARb9WwEV/VwBFLxddjo8XfzxcXFxcXFxByJvb29vb28B1GJ5eF51X3x4Xv6zAiVJTVQgDUYtmwFIRU5ORXBFTk5FAU/+hk5dUVNbNiz8yQE7ynFxyv7FBh8BHXSpqXT+46n8tqlTUgQDSnR0dHR0dPk4cXFxcXFxA8RQKR7+0/x++vwV+X78fvr8FfkABQBc/dUH1whzAAMAHAAgACQAKABSsxEPEAQrswQPHAQrswoPFwQrsAQQsB3QsBwQsB7QALAhL7AlL7IcHgMrsCUQsADQsAAvsCEQsALQsAIvsg0AAhESObANL7IfHgIREjmwHy8wMQkDBTQ2NzY2NTQmIyIGBzM2NjMyFhUUBwYGFRcjFTMDMxUjAzMVIwQYA7/8QfxEBA8eJEpcp5WQoALLAjorOThdWy/KyspLBAQCBAQGUvwx/DEDz/E6Ohgnh0qAl4t/MzRANF88QVxMW6r9TAQKngQAAQA7AAAD0gWwAAYAMgCwAEVYsAUvG7EFHD5ZsABFWLABLxuxARA+WbAFELIDAQorWCHYG/RZsgADBRESOTAxAQEjASE1IQPS/b66AkD9JQOXBUj6uAUYmAAAAgBa/+wERAROABAAHAA2ALAARViwBC8bsQQYPlmwAEVYsAwvG7EMED5ZshQBCitYIdgb9FmwBBCyGgEKK1gh2Bv0WTAxEzQ2NjMyABUVFAYGIyImJic3FBYzMjY1NCYjIgZagOOQ3QEafuWSj+OBArmvjY6usY2LrwInnP+M/sz7Dp38jIj5mgqw3uDEr+DeAAAB/7b+SwFnAJgADAAnALANL7AARViwBC8bsQQSPlmyCQEKK1gh2Bv0WbANELAM0LAMLzAxJRUGBiMiJzcWMzI1NQFnAaqXOzQOHkOJmPWosBKdDcLpAAEAZ/6ZASEAmQADABIAsAQvsALQsAIvsAHQsAEvMDEBIxEzASG6uv6ZAgAAAgCDBNkC0gbQAA0AIQB7ALADL7AH0LAHL0ANDwcfBy8HPwdPB18HBl2wAxCyCgQKK1gh2Bv0WbAHELAN0LANL7AHELAR0LARL7AU0LAUL0ALDxQfFC8UPxRPFAVdsBEQsBfQsBcvsBQQshsECitYIdgb9FmwERCyHgQKK1gh2Bv0WbAbELAh0DAxARQGIyImNTMUFjMyNjUTFAYjIiYjIgYVJzQ2MzIWMzI2NQLSoYaHoZZKSEdKjWBGOncsIjBTYEUwgSwjMAWuX3Z2XzZAQDYBCkppSzMmFUtrSzMmAAACAIEE4ALKBwMADQAcAGUAsAMvsAfQsAcvQA0PBx8HLwc/B08HXwcGXbADELIKBAorWCHYG/RZsAcQsA3QsA0vsAcQsA7QsA4vsBXQsBUvQA8PFR8VLxU/FU8VXxVvFQddsBTQsg8UDhESObIbDhUREjkwMQEUBiMiJjUzFBYzMjY1Jyc2NjU0IzcyFhUUBgcHAsqhg4ShkkpJRUzJAUpCoAeQlFFEAQWwXnJzXTU+PTYRfAQYHTtSTkIyOwc+AAACAIEE3wLgBooADQARAF8AsAMvsAfQsAcvQA0PBx8HLwc/B08HXwcGXbADELIKBAorWCHYG/RZsAcQsA3QsA0vsAcQsBDQsBAvsA/QsA8vQA8PDx8PLw8/D08PXw9vDwddsBAQsBHQGbARLxgwMQEUBiMiJjUzFBYzMjY1JzMHIwLgqIeIqJhPSUdPYJmkZgWwX3JyXzc9PzXaxgACAGkE5ANGBtQABgAaAIUAsAMvsAHQsAEvsAbQsAYvQAkPBh8GLwY/BgRdsgQDBhESORmwBC8YsADQsgIGARESObAGELAK0LAKL7Q/Ck8KAl2wDdCwDS9ADQ8NHw0vDT8NTw1fDQZdsAoQsBDQsBAvsA0QshQECitYIdgb9FmwChCyFwQKK1gh2Bv0WbAUELAa0DAxASMnByMlMzcUBiMiJiMiBhUnNDYzMhYzMjY1A0aqxcWpAS2Dw2BBNm4oHTZNYEAqfCYfNATknp705T5eRy4dEz9iRi0cAAIAaQTkA+wGzwAGABUAYQCwAy+wBdCwBS+2DwUfBS8FA12yBAMFERI5GbAELxiwANCwAxCwAdCwAS+yAgUDERI5sAfQsAcvsA7QsA4vQA0PDh8OLw4/Dk8OXw4GXbAN0LIIBw0REjmyFA4HERI5MDEBIycHIwEzFyc2NjU0IzcyFhUUBgcHA0aqxcWpARC8vgFBO40FgIZKPAEE5Lq6AQZ8gwQaIUNcWEk7Qgc8AAL/XgTPA0YGggAGAAoAXQCwAy+yDwMBXbAE0BmwBC8YsADQGbAALxiwAxCwAdCwAS+wBtCwBi+2DwYfBi8GA12yAgMGERI5sAMQsAjQsAgvsAfQGbAHLxiwCBCwCtCwCi+2DwofCi8KA10wMQEjJwcjATMFIwMzA0bFqqrEASKY/o+MyMcEz56eAQZVAQIAAAIAbgThBFgGlQAGAAoAXQCwAy+yDwMBXbAF0LAFL7AA0LAAL7YPAB8ALwADXbADELAC0BmwAi8YsgQDABESObAG0BmwBi8YsAMQsAnQsAkvsAfQsAcvtg8HHwcvBwNdsAkQsArQGbAKLxgwMQEzASMnByMBMwMjAZKYASLFqarGAyLIyY0F6P75n58BtP79AAIAgQTfAuAGigANABEAXwCwAy+wB9CwBy9ADQ8HHwcvBz8HTwdfBwZdsAMQsgoECitYIdgb9FmwBxCwDdCwDS+wBxCwEdCwES+wD9CwDy9ADw8PHw8vDz8PTw9fD28PB12wERCwENAZsBAvGDAxARQGIyImNTMUFjMyNjUlMxcjAuCoh4iomE9JR0/+pppwZQWwX3JyXzc9PzXaxgAAAQCfBI4BlgY7AAgADACwAC+wBNCwBC8wMQEXBgcVIzU0NgErazsDuVQGO1Njb4iCTa0AAAIAEwAABHAEjQAHAAoARgCwAEVYsAQvG7EEGj5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmyCQQCERI5sAkvsgABCitYIdgb9FmyCgQCERI5MDEBIQMjATMBIwEhAwNG/fhuvQHfpgHYvP3GAZHHARf+6QSN+3MBrgH9AAMAigAAA+8EjQAOABYAHgBoALAARViwAS8bsQEaPlmwAEVYsAAvG7EAED5ZshcAARESObAXL7K/FwFdtB8XLxcCXbTfF+8XAl2yDwEKK1gh2Bv0WbIIDxcREjmwABCyEAEKK1gh2Bv0WbABELIeAQorWCHYG/RZMDEzESEyFhUUBgcWFhUUBgcBESEyNjU0IyUzMjY1NCcjigGW0d5fWGN02sn+9wEGc3rr/vjqbHzl7QSNo5tRfiEYlWWergECEv6FYlXEjVVTqAUAAAEAYP/wBDAEnQAcAEyyAx0eERI5ALAARViwCy8bsQsaPlmwAEVYsAMvG7EDED5ZsAsQsA/QsAsQshIBCitYIdgb9FmwAxCyGQEKK1gh2Bv0WbADELAc0DAxAQYGIyIAETU0NjYzMhYXIyYmIyIGBxUUFjMyNjcEMBT80eD+8XvnmMz3E7kSjX6ZpwGfl4eNFAF5u84BJwEDXqT5iNO7gnTLvWq9z2+DAAIAigAABB8EjQAKABQARrICFRYREjmwAhCwFNAAsABFWLABLxuxARo+WbAARViwAC8bsQAQPlmwARCyCwEKK1gh2Bv0WbAAELIMAQorWCHYG/RZMDEzESEyFhYXFRQAIQMRMzI2NTU0JiOKAWmi+4wD/sn++Z6kusa9twSNhfafTfz+1gP0/KPQwEDAzQABAIoAAAOuBI0ACwBUALAARViwBi8bsQYaPlmwAEVYsAQvG7EEED5ZsAvQsAsvst8LAV2yHwsBXbIAAQorWCHYG/RZsAQQsgIBCitYIdgb9FmwBhCyCAEKK1gh2Bv0WTAxASERIRUhESEVIREhA1f97AJr/NwDHv2bAhQCDv6JlwSNmf6yAAEAigAAA5sEjQAJAEEAsABFWLAELxuxBBo+WbAARViwAi8bsQIQPlmwCdCwCS+yHwkBXbIAAQorWCHYG/RZsAQQsgYBCitYIdgb9FkwMQEhESMRIRUhESEDS/34uQMR/agCCAHz/g0EjZn+mAAAAQBj//AENQSdAB0AX7IKHh8REjkAsABFWLAKLxuxCho+WbAARViwAy8bsQMQPlmyHQoDERI5sB0vsg0dChESObAKELIQAQorWCHYG/RZsAMQshcBCitYIdgb9FmwHRCyGgMKK1gh2Bv0WTAxJQYGIyIAJzUQADMyFhcjJiMiBhUVFBYzMjc1ITUhBDVC6Zfu/uACAQvyyPIbuCb1n6a5oLZR/ucB0ZZTUwEq/FoBBgEnvLXZzsdUvtdK7pAAAAEAigAABFgEjQALAFMAsABFWLAGLxuxBho+WbAARViwCi8bsQoaPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbIJAAoREjl8sAkvGLKjCQFdsgIBCitYIdgb9FkwMSEjESERIxEzESERMwRYuf2kubkCXLkB8v4OBI39/QIDAAABAJcAAAFRBI0AAwAdALAARViwAi8bsQIaPlmwAEVYsAAvG7EAED5ZMDEhIxEzAVG6ugSNAAABACv/8ANNBI0ADwA1sgUQERESOQCwAEVYsAAvG7EAGj5ZsABFWLAFLxuxBRA+WbAJ0LAFELIMAQorWCHYG/RZMDEBMxEUBiMiJjUzFBYzMjY1ApK71LHC27pxclxuBI38xZ3Ft6ReZm1fAAABAIoAAARXBI0ADABMALAARViwBC8bsQQaPlmwAEVYsAgvG7EIGj5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmyAAIIERI5sgYCBBESObIKAggREjkwMQEHESMRMxE3ATMBASMB1pO5uYIBjeP+IQIB4QIHjv6HBI391ZABm/35/XoAAAEAigAAA4sEjQAFACgAsABFWLAELxuxBBo+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WTAxJSEVIREzAUMCSPz/uZeXBI0AAAEAigAABXcEjQAOAGCyAQ8QERI5ALAARViwAC8bsQAaPlmwAEVYsAIvG7ECGj5ZsABFWLAELxuxBBA+WbAARViwCC8bsQgQPlmwAEVYsAwvG7EMED5ZsgEABBESObIHAAQREjmyCgAEERI5MDEJAjMRIxETASMBExEjEQF6AYcBhfG4E/5yiP5zE7gEjfxxA4/7cwGRAhX8WgOi/e/+bwSNAAEAigAABFgEjQAJAEUAsABFWLAFLxuxBRo+WbAARViwCC8bsQgaPlmwAEVYsAAvG7EAED5ZsABFWLADLxuxAxA+WbICBQAREjmyBwUAERI5MDEhIwERIxEzAREzBFi4/aO5uQJduANs/JQEjfyTA20AAAIAYP/wBFoEnQANABsARrIDHB0REjmwAxCwEdAAsABFWLAKLxuxCho+WbAARViwAy8bsQMQPlmwChCyEQEKK1gh2Bv0WbADELIYAQorWCHYG/RZMDEBEAAjIgARNRAAMzIAFwc0JiMiBhUVFBYzMjY1BFr+7Ojl/ucBF+XpARMCt6yblq+wl5ypAiT++/7RATIBBz4BAgE0/tD/BcbS1sVCw9fTxwACAIoAAAQbBI0ACgATAE2yChQVERI5sAoQsAzQALAARViwAy8bsQMaPlmwAEVYsAEvG7EBED5ZsgsDARESObALL7IAAQorWCHYG/RZsAMQshIBCitYIdgb9FkwMQERIxEhMhYVFAYjJSEyNjU0JichAUO5AdPM8urW/ugBGnyIiHf+4QG2/koEjceoqr6YamRgdwEAAgBZ/zYEVwSdABMAIQBNsggiIxESObAIELAe0ACwAEVYsBAvG7EQGj5ZsABFWLAILxuxCBA+WbIDCBAREjmwEBCyFwEKK1gh2Bv0WbAIELIeAQorWCHYG/RZMDEBFAYHFwclBiMiABE1NBI2MzIAESc0JiMiBgcVFBYzMjY1BFVwZth8/vk2RuT+5X/oluoBFbesnJSsBK6YnKoCJKbzRqBvxw0BMQEIPqkBA4r+zf75BsbSz7lVwtjTxwACAIoAAAQlBI0ADQAWAGGyFRcYERI5sBUQsAXQALAARViwBC8bsQQaPlmwAEVYsAIvG7ECED5ZsABFWLAMLxuxDBA+WbIPBAIREjmwDy+yAAEKK1gh2Bv0WbIKAAQREjmwBBCyFQEKK1gh2Bv0WTAxASERIxEhMhYVFAcBFSMBMzI2NTQmIyMCWv7puQGq1efrASDG/eT2dYmGfvABwf4/BI26quRZ/h4KAlhtXWRuAAEAQ//wA90EnQAlAFoAsABFWLAJLxuxCRo+WbAARViwHC8bsRwQPlmyAhwJERI5sAkQsA3QsAkQshABCitYIdgb9FmwAhCyFgEKK1gh2Bv0WbAcELAg0LAcELIjAQorWCHYG/RZMDEBNCYkJyY1NDYzMhYVIzQmIyIGFRQWBBYWFRQGIyIkNTMUFjMyNgMjef7aVsPzv8T5uY15cYZ7ATiwVvPHz/7vupqMfoIBKlBYSitis4+yyJxia1lQQVhQZYhbk6nLomZyWwABACgAAAP9BI0ABwAuALAARViwBi8bsQYaPlmwAEVYsAIvG7ECED5ZsAYQsgABCitYIdgb9FmwBNAwMQEhESMRITUhA/3+cbn+cwPVA/T8DAP0mQABAHT/8AQKBI0AEQA8sgQSExESOQCwAEVYsAAvG7EAGj5ZsABFWLAILxuxCBo+WbAARViwBC8bsQQQPlmyDQEKK1gh2Bv0WTAxAREUBiMiJicRMxEUFjMyNjURBAr60dL2A7ePhYOPBI389Lbb07YDFPz0eYF/ewMMAAEAFAAABFMEjQAIADEAsABFWLADLxuxAxo+WbAARViwBy8bsQcaPlmwAEVYsAUvG7EFED5ZsgEDBRESOTAxARc3ATMBIwEzAhoZGgFAxv43rf43xwEkXlwDa/tzBI0AAAEAMQAABfEEjQASAGCyDhMUERI5ALAARViwAy8bsQMaPlmwAEVYsAgvG7EIGj5ZsABFWLARLxuxERo+WbAARViwCi8bsQoQPlmwAEVYsA8vG7EPED5ZsgEDChESObIGAwoREjmyDQMKERI5MDEBFzcTMxMXNxMzASMBJwcBIwEzAa8LD/il9A0Mxrj+1q7+/AEB/vSt/te3ASZQQAN3/IY7UANl+3MDlQUF/GsEjQAAAQAmAAAEMQSNAAsAUwCwAEVYsAEvG7EBGj5ZsABFWLAKLxuxCho+WbAARViwBC8bsQQQPlmwAEVYsAcvG7EHED5ZsgABBBESObIGAQQREjmyAwAGERI5sgkGABESOTAxAQEzAQEjAQEjAQEzAigBH9z+dQGZ3P7V/tjcAZb+c9sC2gGz/b79tQG7/kUCSwJCAAABAA0AAAQcBI0ACAAxALAARViwAS8bsQEaPlmwAEVYsAcvG7EHGj5ZsABFWLAELxuxBBA+WbIAAQQREjkwMQEBMwERIxEBMwIUATjQ/lK5/ljQAkoCQ/0K/mkBogLrAAABAEcAAAPgBI0ACQBEALAARViwBy8bsQcaPlmwAEVYsAIvG7ECED5ZsgABCitYIdgb9FmyBAACERI5sAcQsgUBCitYIdgb9FmyCQUHERI5MDElIRUhNQEhNSEVAS8CsfxnApj9cQN4l5d8A3iZeQAAAgBQ//UCnQMgAA0AFwBGsgMYGRESObADELAQ0ACwAEVYsAovG7EKFj5ZsABFWLADLxuxAxA+WbAKELIQAgorWCHYG/RZsAMQshUCCitYIdgb9FkwMQEUBiMiJic1NDYzMhYXJzQjIgcVFDMyNwKdmI2LnAGbi42YAp2KhQSLhAQBRaKurKCOo66snQfAtLPCtQABAHoAAAHvAxUABgA1ALAARViwBS8bsQUWPlmwAEVYsAEvG7EBED5ZsgQFARESObAEL7IDAgorWCHYG/RZsALQMDEhIxEHNSUzAe+d2AFjEgJZOYB1AAEAQgAAAqsDIAAWAFSyCBcYERI5ALAARViwDi8bsQ4WPlmwAEVYsAAvG7EAED5ZshUCCitYIdgb9FmwAtCyFBUOERI5sgMOFBESObAOELIIAgorWCHYG/RZsA4QsAvQMDEhITUBNjU0JiMiBhUjNDYgFhUUDwIhAqv9qQEsbUA8S0edpwEImmtUsAGPbAEaZkUxPUw5cpR/bmhrT5EAAQA+//UCmgMgACYAcQCwAEVYsA4vG7EOFj5ZsABFWLAZLxuxGRA+WbIAGQ4REjl8sAAvGLaAAJAAoAADXbAOELIHAgorWCHYG/RZsgoABxESObAAELImAgorWCHYG/RZshQmABESObAZELIgAgorWCHYG/RZsh0mIBESOTAxATMyNjU0JiMiBhUjNDYzMhYVFAYHFhUUBiMiJjUzFBYzMjY1NCcjAQlUSkg/RjlLnaN8iZxGQpWqiISmnk9DRkmcWAHLPTAtOjMpYnt5aDdbGSmPan1+ay08PDNxAgAAAgA2AAACuwMVAAoADgBJALAARViwCS8bsQkWPlmwAEVYsAQvG7EEED5ZsgEJBBESObABL7ICAgorWCHYG/RZsAbQsAEQsAvQsggLBhESObINCQQREjkwMQEzFSMVIzUhJwEzATMRBwJQa2ud/okGAXmh/oTfEQErgqmpZgIG/hYBIRwAAQBb//UCpwMVABsAYQCwAEVYsAEvG7EBFj5ZsABFWLANLxuxDRA+WbABELIECQorWCHYG/RZsgcNARESObAHL7IZAgorWCHYG/RZsgUHGRESObANELAR0LANELITAgorWCHYG/RZsAcQsBvQMDETEyEVIQc2MzIWFRQGIyImJzMWMzI2NTQmIyIHcDIB3v6jFkFKgI+ghnmnBpsKgUFITkpJOwGDAZKEqh2JeXyRfmVjS0Q+TSsAAAIAVv/1AqsDHgATAB8ATgCwAEVYsAAvG7EAFj5ZsABFWLAMLxuxDBA+WbAAELIBAgorWCHYG/RZsgYMABESObAGL7IUAgorWCHYG/RZsAwQshsCCitYIdgb9FkwMQEVIwQHNjMyFhUUBiMiJjU1NDY3AyIGBxUUFjMyNjQmAigR/vQXSHJ2h5+Ei6fezX4zTRFTPz1ORwMegwLbTZF3dJqmlzPQ5AX+biwgIlRVT3xMAAABADoAAAKlAxUABgAyALAARViwBS8bsQUWPlmwAEVYsAIvG7ECED5ZsAUQsgQCCitYIdgb9FmyAAUEERI5MDEBASMBITUhAqX+o6YBXf47AmsCu/1FApOCAAADAE//9QKfAyAAEwAeACgAegCwAEVYsBEvG7ERFj5ZsABFWLAGLxuxBhA+WbIkBhEREjmwJC+23yTvJP8kA122DyQfJC8kA12y/yQBcbQPJB8kAnKyFwIKK1gh2Bv0WbICJBcREjmyDBckERI5sAYQsh0CCitYIdgb9FmwERCyHwIKK1gh2Bv0WTAxARQHFhUUBiAmNTQ2NyY1NDYzMhYDNCYjIgYVFBYyNgMiBhUUFjI2NCYCi3eLoP7woEpAd5d9fpeJTj4/S0x+TIw3Pz9wP0ACQ3Y3O4NqeXlqQmEbN3Zndnb+OjQ6OjQ1OjoB8DUwLjg4XDcAAAIASf/5ApUDIAASAB4AWgCwAEVYsAgvG7EIFj5ZsABFWLAPLxuxDxA+WbICDwgREjmwAi+2DwIfAi8CA12wDxCyEAIKK1gh2Bv0WbACELITAgorWCHYG/RZsAgQshkCCitYIdgb9FkwMQEGIyImNTQ2MzIWFxUQBQc1MjYnMjc1NCYjIgYVFBYB9kVldo2jgYmcA/5zN5aEe14qTzw7TEoBQEGKfnmgpZQ9/mQUAX9inkc8U1BUQ0FOAAEAjwKLAwsDIgADABEAsAIvsgEBCitYIdgb9FkwMQEhNSEDC/2EAnwCi5cAAwCeBEACbgZyAAMADwAbAHIAsABFWLANLxuxDRg+WbAH0LAHL0AJPwdPB18HbwcEXbAC0LACL7Y/Ak8CXwIDXbAA0LAAL0ARDwAfAC8APwBPAF8AbwB/AAhdsAIQsAPQGbADLxiwDRCyEwcKK1gh2Bv0WbAHELIZBworWCHYG/RZMDEBMwcjBzQ2MzIWFRQGIyImNxQWMzI2NTQmIyIGAbG93HKCZEhEY2FGSGRVMyQjMDAjJTIGcrjXRmFeSUdcXkUjMjEkJjI0AAMAHv5KBBEETgApADcARACPALAARViwJi8bsSYYPlmwAEVYsBYvG7EWEj5ZsCYQsCnQsCkvsgADCitYIdgb9FmyCBYmERI5sAgvsg4IFhESObAOL7SQDqAOAl2yNwEKK1gh2Bv0WbIcNw4REjmyIAgmERI5sBYQsjABCitYIdgb9FmwCBCyOwEKK1gh2Bv0WbAmELJCAQorWCHYG/RZMDEBIxYXFRQGBiMiJwYVFBczFhYVFAYGIyImNTQ2NyY1NDcmNTU0NjMyFyEBBgYVFBYzMjY1NCYnIwMUFjMyNjU1NCYiBhUEEZc6AW/DeE9JNHq3yM6N9JfR/15UOHOu8btQRwFv/Tw4PJSDks1obO90jGlniorSigOnVGkZYqZeFSpAUAIBlY9UoWCbelOKKi9KfFJqxQudyhT7+BpdN0pZckxKQQICpVN7elgSV3h4WgAAAgBk/+sEWAROABAAHABhALAARViwCS8bsQkYPlmwAEVYsAwvG7EMGD5ZsABFWLACLxuxAhA+WbAARViwEC8bsRAQPlmyAAIJERI5sgsJAhESObACELIUAQorWCHYG/RZsAkQshoBCitYIdgb9FkwMSUCISICNTUQEjMgEzczAxMjARQWMzITNSYmIyIGA4Js/vLA5OLEAQlsIrBqcbD9dZKH00gckmuGlfH++gEb9A8BCAE9/v/t/eL95AH0r8MBhyS+y+MAAgCxAAAE4wWvABYAHgBhshgfIBESObAYELAE0ACwAEVYsAMvG7EDHD5ZsABFWLABLxuxARA+WbAARViwDy8bsQ8QPlmyFwMBERI5sBcvsgABCitYIdgb9FmyCRcAERI5sAMQsh0BCitYIdgb9FkwMQERIxEhMhYVFAcWExUWFxUjJic1NCYjJSEyNjUQISEBcsECDvD77d4FAkHGOwOMf/6eATminf7P/rkCdP2MBa/SzOVjRf76nI09GDasi3iPnXyEAQAAAQCyAAAFHQWwAAwAaACwAEVYsAQvG7EEHD5ZsABFWLAILxuxCBw+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsgYCBBESOXywBi8YtGMGcwYCXbQzBkMGAl2ykwYBXbIBAQorWCHYG/RZsgoBBhESOTAxASMRIxEzETMBMwEBIwIjscDAlgH97/3UAlXrAo79cgWw/X4Cgv0+/RIAAAEAkgAABBQGAAAMAFMAsABFWLAELxuxBB4+WbAARViwCC8bsQgYPlmwAEVYsAIvG7ECED5ZsABFWLALLxuxCxA+WbIHCAIREjmwBy+yAAEKK1gh2Bv0WbIKAAcREjkwMQEjESMRMxEzATMBASMBzIC6un4BO9v+hgGu2wH1/gsGAPyOAaz+E/2zAAEAsgAABPoFsAALAEwAsABFWLADLxuxAxw+WbAARViwBy8bsQccPlmwAEVYsAEvG7EBED5ZsABFWLAKLxuxChA+WbIAAwEREjmyBQMBERI5sgkABRESOTAxAREjETMRMwEzAQEjAXLAwAwCY/H9awK97QK1/UsFsP15Aof9O/0VAAABAJIAAAPxBhgADABMALAARViwBC8bsQQePlmwAEVYsAgvG7EIGD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmyAAgCERI5sgYIAhESObIKBgAREjkwMQEjESMRMxEzATMBASMBUAS6ugEBivD+KwH/5AHz/g0GGPx1Aa3+Df25AAABAEP/EwPdBXMAKwBmALAARViwCS8bsQkaPlmwAEVYsCIvG7EiED5ZsgIiCRESObAJELAM0LAJELAQ0LAJELITAQorWCHYG/RZsAIQshkBCitYIdgb9FmwIhCwH9CwIhCwJtCwIhCyKQEKK1gh2Bv0WTAxATQmJCcmNTQ2NzUzFRYWFSM0JiMiBhUUFgQWFhUUBgcVIzUmJjUzFBYzMjYDI3n+2lbDy6aVo8a5jXlxhnsBOLBWw6mVut+6mox+ggEqUFhKK2KzgqwQ2dsVwohia1lQQVhQZYhbgqYQ4eETwpRmclsAAAEAMAAAA+8EnQAgAGAAsABFWLAULxuxFBo+WbAARViwBy8bsQcQPlmyDwcUERI5sA8vsg4ECitYIdgb9FmwAdCwBxCyBAEKK1gh2Bv0WbAI0LAUELAY0LAUELIbAQorWCHYG/RZsA8QsB/QMDEBIRcWByEHITUzNjc3JyM1MycmNjMyFhUjNCYjIgYXFyEDHf5wAQU4ApQB/IQKTwkBAaSgBAbLtbfKuWhgXWgEBAGUAfQiy2+YmBfdRiJ5e8nszLdwd4+KewAAAQAWAAAEJQSNABcAigCwAEVYsBcvG7EXGj5ZsABFWLABLxuxARo+WbAARViwDS8bsQ0QPlmyAA0XERI5shANFxESObAQL7IPEAFdsBTQsBQvtA8UHxQCcUAPDxQfFC8UPxRPFF8UbxQHXbAD0LAUELITBAorWCHYG/RZsAbQsBAQsAjQsBAQsg8ECitYIdgb9FmwC9AwMQEBMwEzFSEHFSEVIRUjNSE1ITUhNSEBMwIdATjQ/pv7/sEFAUT+vLn+vAFE/rwBAP6c0AJLAkL9jHkJQnjd3XhLeQJ0AAEAigAAA4UEjQAFADKyAQYHERI5ALAARViwBC8bsQQaPlmwAEVYsAIvG7ECED5ZsAQQsgABCitYIdgb9FkwMQEhESMRIQOF/b65AvsD9PwMBI0AAAIAFAAABFMEjQADAAgAPLIFCQoREjmwBRCwAtAAsABFWLACLxuxAho+WbAARViwAC8bsQAQPlmyBQIAERI5sgcBCitYIdgb9FkwMSEhATMDJwcBIQRT+8EBya09Ghn++AJDBI3+3Vxe/TAAAAMAYP/wBFoEnQADABEAHwBeALAARViwDi8bsQ4aPlmwAEVYsAcvG7EHED5ZsgIHDhESOXywAi8YtGACcAICcbRgAnACAl2yAQEKK1gh2Bv0WbAOELIVAQorWCHYG/RZsAcQshwBCitYIdgb9FkwMQEhNSEFEAAjIgARNRAAMzIAFwc0JiMiBhUVFBYzMjY1A1X+HwHhAQX+7Ojl/ucBF+XpARMCt6yblq+wl5ypAfmZbv77/tEBMgEHPgECATT+0P8FxtLWxULD19PHAAEAFAAABFMEjQAIADiyBwkKERI5ALAARViwAi8bsQIaPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbIHAgAREjkwMTMjATMBIwEnB9vHAcmtAcnG/sAaGQSN+3MDalxeAAADAD4AAANLBI0AAwAHAAsAY7IEDA0REjmwBBCwAdCwBBCwCdAAsABFWLAKLxuxCho+WbAARViwAC8bsQAQPlmyAgEKK1gh2Bv0WbIHCgAREjmwBy+yvwcBXbIEAQorWCHYG/RZsAoQsggBCitYIdgb9FkwMSEhNSEDITUhEyE1IQNL/PMDDUP9dwKJQ/zzAw2YAXuYAUmZAAEAigAABEQEjQAHAD+yAQgJERI5ALAARViwBi8bsQYaPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbAGELICAQorWCHYG/RZMDEhIxEhESMRIQREuv25uQO6A/T8DASNAAABAD8AAAPIBI0ADABDsgYNDhESOQCwAEVYsAgvG7EIGj5ZsABFWLADLxuxAxA+WbIBAQorWCHYG/RZsAXQsAgQsgoBCitYIdgb9FmwB9AwMQEBIRUhNQEBNSEVIQECb/62AqP8dwFR/q8DV/2PAUoCOv5fmZABtwG2kJn+XwADAGAAAAUGBI0AEQAXAB4AXACwAEVYsBAvG7EQGj5ZsABFWLAILxuxCBA+WbIPEAgREjmwDy+wANCyCQgQERI5sAkvsAbQsAkQshQBCitYIdgb9FmwDxCyFQEKK1gh2Bv0WbAb0LAUELAc0DAxARYEFRQEBxUjNSYkNTQkNzUzARAFEQYGBTQmJxE2NgMQ5gEQ/u3juen+8gEQ57n+CAE/mqUDNqaYmKYEFg36y838DW5uDfvMzfsNdv21/tgRAnMJl5iZlQn9jgqWAAABAGAAAAS2BI0AFQBcsgAWFxESOQCwAEVYsAMvG7EDGj5ZsABFWLAPLxuxDxo+WbAARViwFC8bsRQaPlmwAEVYsAkvG7EJED5ZshMDCRESObATL7AA0LATELILAQorWCHYG/RZsAjQMDEBJBERMxEGAgcRIxEmAicRMxEQBREzAugBFbkD8tm62fAFugEUugG7MwFrATT+vfP+4hj+3wEfFAEd8gFL/sv+ji0C1AABAHUAAAR+BJ0AIQBcsgciIxESOQCwAEVYsBgvG7EYGj5ZsABFWLAPLxuxDxA+WbAARViwIC8bsSAQPlmwDxCyEQEKK1gh2Bv0WbAO0LAA0LAYELIHAQorWCHYG/RZsBEQsB7QsB/QMDElNjY1NTQmIyIGFRUUFhcVITUzJhE1NAAzMgAVFRAHMxUhAruIf66dnKyNf/4+r7MBG+foARyytf49nR/fzSazwMG3IczfIJ2XnQE6Hu4BI/7c9Rz+y5yXAAEAJv/sBSwEjQAZAGuyFhobERI5ALAARViwAi8bsQIaPlmwAEVYsA4vG7EOED5ZsABFWLAYLxuxGBA+WbACELIAAQorWCHYG/RZsATQsAXQsggCDhESObAIL7AOELIPAQorWCHYG/RZsAgQshUBCitYIdgb9FkwMQEhNSEVIRE2MzIWFRQGIzUyNjU0JiMiBxEjAYr+nAOJ/pSXnNTi5eCNf32AnZa5A/SZmf7XMdDEvr6XbXiDeTL9zgAAAQBg//AEMASdAB4AfbIDHyAREjkAsABFWLALLxuxCxo+WbAARViwAy8bsQMQPlmyDwsDERI5sAsQshIBCitYIdgb9FmyFgsDERI5fLAWLxiyoBYBXbRgFnAWAl2yMBYBcbRgFnAWAnGyFwEKK1gh2Bv0WbADELIbAQorWCHYG/RZsh4DCxESOTAxAQYGIyIAETU0NjYzMhYXIyYmIyIGByEVIRYWMzI2NwQwFPzR4P7xe+eYzPcTuRKNfpmiBgG//kEEoZGHjRQBebvOAScBA16k+YjTu4J0w6+YssJvgwACACcAAAb7BI0AFwAgAHayBCEiERI5sAQQsBjQALAARViwEi8bsRIaPlmwAEVYsAMvG7EDED5ZsABFWLALLxuxCxA+WbASELIFAQorWCHYG/RZsAsQsg4BCitYIdgb9FmyFBIDERI5sBQvshgBCitYIdgb9FmwAxCyGQEKK1gh2Bv0WTAxARQGByERIQMOAgcjNzc2NhMTIREhFhYlESEyNjU0JiMG++bD/iv+Xg8LTZd7OwQuYFEKFAMOASTB4P07ARVyhINzAW6lxwID9P5l7fZ1AaUBBL4BCQIc/koEwS3+WXVjX3AAAgCKAAAHCQSNABIAGwCJsgEcHRESObABELAT0ACwAEVYsAIvG7ECGj5ZsABFWLARLxuxERo+WbAARViwCy8bsQsQPlmwAEVYsA8vG7EPED5ZsgECCxESOXywAS8YsqABAV2yBAILERI5sAQvsAEQsg0BCitYIdgb9FmwBBCyEwEKK1gh2Bv0WbALELIUAQorWCHYG/RZMDEBIREzESEWFhUUBgchESERIxEzAREhMjY1NCYnAUMCSLkBJMHg5sP+K/24ubkDAQEVc4R9bgKKAgP+SgTBpKXHAgHy/g4Ejf2y/ll3YVtxAwAAAQAoAAAFLgSNABUAWrIHFhcREjkAsABFWLACLxuxAho+WbAARViwDC8bsQwQPlmwAEVYsBQvG7EUED5ZsAIQsgABCitYIdgb9FmwBNCwBdCyCAIMERI5sAgvshEBCitYIdgb9FkwMQEhNSEVIRE2MzIWFxEjETQmIyIHESMBi/6dA4n+lJOg1N4Eun1/nZa6A/SZmf7XMcrB/o8BZId5Mv3OAAABAIr+mwRDBI0ACwBPsgMMDRESOQCwAi+wAEVYsAYvG7EGGj5ZsABFWLAKLxuxCho+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsggBCitYIdgb9FmwCdAwMSEhESMRIREzESERMwRD/oG5/n+5Ake5/psBZQSN/AsD9QACAIoAAAQIBI0ADAAVAF6yAxYXERI5sAMQsA3QALAARViwCy8bsQsaPlmwAEVYsAkvG7EJED5ZsAsQsgABCitYIdgb9FmyAwsJERI5sAMvsAkQsg0BCitYIdgb9FmwAxCyEwEKK1gh2Bv0WTAxASERITIWFRQGByERIQEyNjU0JichEQOV/a4BEc7m5MX+KwML/sNzhH1u/t8D9/7gxKWkyAIEjfwLd2FbcQP+WQACAC7+rATnBI0ADwAVAFuyExYXERI5sBMQsAXQALAJL7AARViwBS8bsQUaPlmwAEVYsAsvG7ELED5ZsgABCitYIdgb9FmwB9CwCNCwCRCwDdCwCBCwENCwEdCwBRCyEgEKK1gh2Bv0WTAxNzc2NjcTIREzESMRIREjEyEhESEDAoUpR0cHDgMHj7n8uroBAS4CQv5kDBGYMVb92AGZ/Av+FAFU/q0B6wNc/sj+mQABAB8AAAXrBI0AFQCRsgEWFxESOQCwAEVYsAkvG7EJGj5ZsABFWLANLxuxDRo+WbAARViwES8bsREaPlmwAEVYsAIvG7ECED5ZsABFWLAGLxuxBhA+WbAARViwFC8bsRQQPlmyEAkCERI5fLAQLxiyoBABXbRgEHAQAl2yAAEKK1gh2Bv0WbAE0LITEAAREjmwExCwCNCwEBCwC9AwMQEjESMRIwEjAQEzATMRMxEzATMBASMDxWO6ZP7F6gGG/p7gASxZulkBLOD+nAGI6gH2/goB9v4KAlECPP4DAf3+AwH9/c39pgAAAQBH//AD1ASdACgAfbIkKSoREjkAsABFWLAKLxuxCho+WbAARViwFi8bsRYQPlmwChCyAwEKK1gh2Bv0WbIGChYREjmyJwoWERI5sCcvtB8nLycCXbK/JwFdtN8n7ycCXbIkAQorWCHYG/RZshAkJxESObIcFgoREjmwFhCyHwEKK1gh2Bv0WTAxATQmIyIGFSM0NjMyFhUUBgcWFhUUBiMiJicmNTMWFjMyNjU0JSM1MzYDCIp9boG67bzT7m5ndnH+1VupPXm5BYN5iJL+/52c7wNQVF1YT461qJZWjSkkkluetCwuWZ1WYGBYwQWYBQABAIoAAARhBI0ACQBMsgAKCxESOQCwAEVYsAAvG7EAGj5ZsABFWLAHLxuxBxo+WbAARViwAi8bsQIQPlmwAEVYsAUvG7EFED5ZsgQAAhESObIJAAIREjkwMQEzESMRASMRMxEDqLm5/Zu5uQSN+3MDdPyMBI38jAABAIsAAAQsBI0ADABosgoNDhESOQCwAEVYsAQvG7EEGj5ZsABFWLAILxuxCBo+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsgYCBBESOXywBi8YsqAGAV20YAZwBgJdsgEBCitYIdgb9FmyCgEGERI5MDEBIxEjETMRMwEzAQEjAa5qublkAYXf/jUB6+8B9v4KBI3+AwH9/cX9rgAAAQAnAAAENgSNAA8ATbIEEBEREjkAsABFWLAALxuxABo+WbAARViwAS8bsQEQPlmwAEVYsAgvG7EIED5ZsAAQsgMBCitYIdgb9FmwCBCyCgEKK1gh2Bv0WTAxAREjESEDAgIHIzc3NjY3EwQ2uf5eDw2ksEQEKV5QDRkEjftzA/T+gv6q/uUFpQMHnuICXgAAAQAi/+wECwSNABEAQ7IBEhMREjkAsABFWLACLxuxAho+WbAARViwEC8bsRAaPlmwAEVYsAgvG7EIED5ZsgEIAhESObIMAQorWCHYG/RZMDEBFwEzAQcGBwciJzcXMjY3ATMB9S0BFNX+XiVQqiZQFAZcMUkg/mbWAjB4AtX8RUmRCwEIkwUxOwOfAAABAIr+rATxBI0ACwBFsgkMDRESOQCwAi+wAEVYsAYvG7EGGj5ZsABFWLAKLxuxCho+WbAARViwBC8bsQQQPlmyAAEKK1gh2Bv0WbAI0LAJ0DAxJTMDIxEhETMRIREzBEStEqX8ULkCR7qY/hQBVASN/AsD9QAAAQA9AAAD3wSNABEARrIEEhMREjkAsABFWLAILxuxCBo+WbAARViwEC8bsRAaPlmwAEVYsAAvG7EAED5Zsg0IABESObANL7IEAQorWCHYG/RZMDEhIxEGIyImJxEzERQWMzI3ETMD37mQo9TeBLl+f52WuQHCMMrBAXD+nYd5MgIxAAEAigAABcYEjQALAE+yBQwNERI5ALAARViwAi8bsQIaPlmwAEVYsAYvG7EGGj5ZsABFWLAKLxuxCho+WbAARViwAC8bsQAQPlmyBAEKK1gh2Bv0WbAI0LAJ0DAxISERMxEhETMRIREzBcb6xLkBiLoBiLkEjfwLA/X8CwP1AAEAiv6sBnUEjQAPAFiyCxARERI5ALACL7AARViwBi8bsQYaPlmwAEVYsAovG7EKGj5ZsABFWLAOLxuxDho+WbAARViwBC8bsQQQPlmyAAEKK1gh2Bv0WbAI0LAJ0LAM0LAN0DAxJTMDIxEhETMRIREzESERMwXHrhKm+s25AYi6AYi6mP4UAVQEjfwLA/X8CwP1AAACAAgAAATWBI0ADQAWAF6yCBcYERI5sAgQsBXQALAARViwBy8bsQcaPlmwAEVYsAMvG7EDED5ZsAcQsgUBCitYIdgb9FmyCgcDERI5sAovsAMQsg4BCitYIdgb9FmwChCyFAEKK1gh2Bv0WTAxARQGByERITUhESEyFhYBMjY1NCYjIREE1uTE/ir+sAIKARaEwmj+UXKEg3P+6wFupMgCA/SZ/kpYo/68dWNfcP5Z//8AigAABWcEjQAmAggAAAAHAcIEFgAAAAIAigAABAgEjQAKABMAULIIFBUREjmwCBCwC9AAsABFWLAFLxuxBRo+WbAARViwAy8bsQMQPlmyCAUDERI5sAgvsAMQsgsBCitYIdgb9FmwCBCyEQEKK1gh2Bv0WTAxARQGByERMxEhMhYBMjY1NCYnIREECOTF/iu5ARHO5v5Qc4R9bv7fAW6kyAIEjf5KxP6Fd2FbcQP+WQABAEv/8AQbBJ0AHgB6sgMfIBESOQCwAEVYsBMvG7ETGj5ZsABFWLAbLxuxGxA+WbIAGxMREjmyAwEKK1gh2Bv0WbIJExsREjl8sAkvGLKgCQFdtGAJcAkCXbIwCQFxtGAJcAkCcbIGAQorWCHYG/RZsBMQsgwBCitYIdgb9FmyDxMbERI5MDEBFhYzMjY3ITUhJiYjIgYHIzY2MzIAFxUUBgYjIiYnAQQUjYeNogf+QQG+BaOYfo0SuRP3zOQBEQV44pXP/hQBeYNvu7mYr8N0grvT/t/0daP5h867AAACAIr/8AYVBJ0AEwAhAIqyBCIjERI5sAQQsBjQALAARViwEC8bsRAaPlmwAEVYsAsvG7ELGj5ZsABFWLADLxuxAxA+WbAARViwCC8bsQgQPlmyDQgLERI5fLANLxi0YA1wDQJxsqANAV20YA1wDQJdsgYBCitYIdgb9FmwEBCyFwEKK1gh2Bv0WbADELIeAQorWCHYG/RZMDEBEAAjIgAnIxEjETMRMzYAMzIAFwc0JiMiBhUVFBYzMjY1BhX+7Ojd/usM2Lm52A4BFNrpARMCt6yblq+wl5ypAiT++/7RARzy/gIEjf4J8QEW/tD/BcbS1sVCw9fTxwAAAgBQAAAD/ASNAA0AFABhshMVFhESObATELAH0ACwAEVYsAcvG7EHGj5ZsABFWLAALxuxABA+WbAARViwCS8bsQkQPlmyEQcAERI5sBEvsgsBCitYIdgb9FmyAQsHERI5sAcQshIBCitYIdgb9FkwMTMBJiY1NDY3IREjESEDExQXIREhIlABInpx3MgB0bn+0P8u5gEb/u/wAg0mnWihsgL7cwHf/iEDMLQEAXwAAQALAAAD5wSNAA0AULIBDg8REjkAsABFWLAILxuxCBo+WbAARViwAi8bsQIQPlmyDQgCERI5sA0vsgABCitYIdgb9FmwBNCwDRCwBtCwCBCyCgEKK1gh2Bv0WTAxASMRIxEjNTMRIRUhETMCh+K54eEC+/2+4gH9/gMB/ZcB+Zn+oAAAAQAf/qwGIgSNABkAqrIIGhsREjkAsABFWLAQLxuxEBo+WbAARViwFC8bsRQaPlmwAEVYsBgvG7EYGj5ZsABFWLANLxuxDRA+WbAARViwCi8bsQoQPlmwAEVYsAUvG7EFED5ZshcKGBESOXywFy8YsqAXAV20YBdwFwJdtGAXcBcCcbIHAQorWCHYG/RZsgAHFxESObAFELIBAQorWCHYG/RZsAcQsAvQsg8XBxESObAXELAS0DAxAQEzESMRIwEjESMRIwEjAQEzATMRMxEzATMEYwEmmad6/sRjumT+xeoBhv6e4AEsWbpZASzgAlr+PP4WAVQB9v4KAfb+CgJRAjz+AwH9/gMB/QABAIv+rAROBI0AEACAsgAREhESOQCwAy+wAEVYsAsvG7ELGj5ZsABFWLAPLxuxDxo+WbAARViwCS8bsQkQPlmwAEVYsAUvG7EFED5Zsg0JCxESOXywDS8YtGANcA0CcbKgDQFdtGANcA0CXbIIAQorWCHYG/RZsgAIDRESObAFELIBAQorWCHYG/RZMDEBATMRIxEjASMRIxEzETMBMwJBAW+eqGn+cWq5uWQBhd8CUv5E/hYBVAH2/goEjf4DAf0AAAEAiwAABOcEjQAUAHiyCxUWERI5ALAARViwBi8bsQYaPlmwAEVYsBMvG7ETGj5ZsABFWLAJLxuxCRA+WbAARViwES8bsREQPlmyABETERI5fLAALxiyoAABXbRgAHAAAl20YABwAAJxsATQsAAQshABCitYIdgb9FmyCBAAERI5sAzQMDEBMzUzFTMBMwEBIwEjFSM1IxEjETMBRFCUPAGE4P40Aevv/nFBlFC5uQKQ5OQB/f3F/a4B9s7O/goEjQAAAQAjAAAFFQSNAA4AfbIADxAREjkAsABFWLAGLxuxBho+WbAARViwCi8bsQoaPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbIIAgYREjl8sAgvGLKgCAFdtGAIcAgCXbRgCHAIAnGyAQEKK1gh2Bv0WbAGELIEAQorWCHYG/RZsgwBCBESOTAxASMRIxEhNSERMwEzAQEjApdpuv6vAgtjAYXg/jQB6+8B9v4KA/WY/gMB/f3F/a4AAgBg/+sFWwSfACMALgCUshQvMBESObAUELAk0ACwAEVYsAsvG7ELGj5ZsABFWLAbLxuxGxo+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsgIEGxESObACL7ALELIMAQorWCHYG/RZsAQQshMBCitYIdgb9FmwAhCyJgEKK1gh2Bv0WbIVEyYREjmyIQImERI5sBsQsiwBCitYIdgb9FkwMQUiJwYjIAARNRASMxciBhUVFBYzMjcmAzU0EjMyEhUVEAcWMwEQFzYRNTQmIyIDBVvZpomj/ur+xvTSAX6Q0Mc2MuMBz7W4zbZedv2S4bZiasYFFDs8AUUBKhoBAwEonsPIIejlCLIBRSfrAQT+//E4/tqyEgH9/sx5gQEeOKyj/sP//wANAAAEHASNACYB0gAAAQcB3gBE/t4ACACyAAoBXTAxAAEAJv6sBHEEjQAQAGuyCxESERI5ALAHL7AARViwAS8bsQEaPlmwAEVYsA8vG7EPGj5ZsABFWLAJLxuxCRA+WbAARViwDC8bsQwQPlmyAAEMERI5sgsMARESObIDCwAREjmwCRCyBAEKK1gh2Bv0WbIOAAsREjkwMQEBMwEBNTMRIxEjAQEjAQEzAigBH9z+dQExqKh0/tX+2NwBlv5z2wLaAbP9vv5KAf4WAVQBu/5FAksCQgAAAQAm/qwF8gSNAA8AXLIJEBEREjkAsAIvsABFWLAILxuxCBo+WbAARViwDi8bsQ4aPlmwAEVYsAQvG7EEED5ZsgABCitYIdgb9FmwCBCyBgEKK1gh2Bv0WbAK0LAL0LAAELAM0LAN0DAxJTMDIxEhESE1IRUhESERMwVErhKl/FD+mwOJ/pUCRrqY/hQBVAP0mZn8pAP1AAABAD0AAAPfBI0AFwBPsgQYGRESOQCwAEVYsAsvG7ELGj5ZsABFWLAWLxuxFho+WbAARViwAC8bsQAQPlmyEAsAERI5sBAvsgcBCitYIdgb9FmwBNCwEBCwE9AwMSEjEQYHFSM1JiYnETMRFBYXNTMVNjcRMwPfuWNplbzJA7lnaJVnZbkBwiELxsMKyboBbf6de3gL8O0LIgIxAAABAIoAAAQsBI0AEQBGsgQSExESOQCwAEVYsAAvG7EAGj5ZsABFWLAILxuxCBA+WbAARViwEC8bsRAQPlmyBAAIERI5sAQvsg0BCitYIdgb9FkwMRMzETYzMhYXESMRNCYjIgcRI4q5mpnU3gS5fn+Ym7kEjf4+McrB/o8BZId5M/3PAAACAAL/8AVrBJ0AHAAkAGmyFSUmERI5sBUQsB7QALAARViwDi8bsQ4aPlmwAEVYsAAvG7EAED5ZsiEOABESObAhL7K/IQFdshIBCitYIdgb9FmwA9CwIRCwCtCwABCyFgEKK1gh2Bv0WbAOELIdAQorWCHYG/RZMDEFIgA1JiY1MxQWFz4CMzIAERUhFBYzMjY3FwYGAyIGByE1NCYDkf/+zqa4mV9mBYfpjvgBEPyuwbdMh1A5PLiWj7UGApmuEAEi8wvGqF53DJPsgf7r/v2CscAfKJIoLwQRwqQboaoAAAIAXv/wBGkEnQAWAB4AXrIIHyAREjmwCBCwF9AAsABFWLAALxuxABo+WbAARViwCC8bsQgQPlmyDQAIERI5sA0vsAAQshEBCitYIdgb9FmwCBCyFwEKK1gh2Bv0WbANELIaAQorWCHYG/RZMDEBMgAXFRQGBiMiABE1ITU0JiMiByc2NhMyNjchFRQWAkf3ASkChOyT+P7wA1LBt5OQOUHAiZGzBv1nrQSd/uDviJn0iQEVAQGCAbHBSJIpL/vtxqEboKwAAAEAR//tA9QEjQAcAG2yGh0eERI5ALAARViwAi8bsQIaPlmwAEVYsAsvG7ELED5ZsAIQsgABCitYIdgb9FmyBAACERI5sgULAhESObAFL7IRCwIREjmwCxCyFAEKK1gh2Bv0WbAFELIaAQorWCHYG/RZshwFGhESOTAxASE1IRcBFhYVFAYjIiYnJjUzFhYzMjY1NCYjIzUCs/28AzgC/qmx0fzXWas8erkFiXOIkoqGgAP0mXb+mxDFi6e+LS5anllkaGpfaqUAAwBg//AEWgSdAA0AFAAbAHOyAxwdERI5sAMQsA7QsAMQsBXQALAARViwCi8bsQoaPlmwAEVYsAMvG7EDED5Zsg4BCitYIdgb9FmyGQoDERI5fLAZLxiyoBkBXbRgGXAZAl20YBlwGQJxshEBCitYIdgb9FmwChCyFQEKK1gh2Bv0WTAxARAAIyIAETUQADMyABcBMjY3IRYWEyIGByEmJgRa/uzo5f7nARfl6QETAv4Ek6gJ/XYKrY2RqwgCigmqAiT++/7RATIBBz4BAgE0/tD//hy8tLDAA3fDrLO8AAABADAAAAPvBJ0AJwCush0oKRESOQCwAEVYsB0vG7EdGj5ZsABFWLAMLxuxDBA+WbIGHQwREjmwBi+yDwYBcbIPBgFdsk8GAXGwAdCwAS9ACR8BLwE/AU8BBF2yAAEBXbICBAorWCHYG/RZsAYQsgcECitYIdgb9FmwDBCyCgEKK1gh2Bv0WbAO0LAP0LAHELAR0LAGELAT0LACELAW0LABELAY0LIhAR0REjmwHRCyJAEKK1gh2Bv0WTAxASEVIRcVIRUhBgchByE1MzY3IzUzNScjNTMnJjYzMhYVIzQmIyIGFwGHAZb+bgMBj/5sCiQClAH8hAo/FJ+lA6KeAgbLtbfKuWhgXWgEAqh5XRB5akeYmBKfeRBdeUDJ7My3cHePigAAAQBC//ADngSdACEAnrIUIiMREjkAsABFWLAVLxuxFRo+WbAARViwCC8bsQgQPlmyIRUIERI5sCEvsg8hAV20ECEgIQJdsgAECitYIdgb9FmwCBCyAwEKK1gh2Bv0WbAAELAL0LAhELAN0LAhELAS0LASL0AJHxIvEj8STxIEXbIAEgFdsg8ECitYIdgb9FmwFRCyGgEKK1gh2Bv0WbASELAc0LAPELAe0DAxASESITI3FwYjIiYnIzUzNSM1MzY2MzIXByYjIAMhFSEVIQMv/mggAQJiaBt2b9P1FJuXl5sW9c9ghxVZef8AIAGY/mQBnAGW/vEclR7azHlteczcH5Uc/vB5bQAABACKAAAHrQSdAAMAEAAeACgAqLIfKSoREjmwHxCwAdCwHxCwBNCwHxCwEdAAsABFWLAnLxuxJxo+WbAARViwJS8bsSUaPlmwAEVYsAcvG7EHGj5ZsABFWLAiLxuxIhA+WbAARViwIC8bsSAQPlmwBxCwDdCwDS+wAtCwAi+0AAIQAgJdsgEDCitYIdgb9FmwDRCyFAMKK1gh2Bv0WbAHELIbAworWCHYG/RZsiEnIBESObImICcREjkwMSUhNSEBNDYgFhUVFAYjIiY1FxQWMzI2NTU0JiMiBhUBIwERIxEzAREzB2790wIt/ZK8ATS9vpeZv6NeV1ReYVNSYf61uP2jubkCXbi9jgIDlbq4m1CYtrecBVlqaVxSWmhnXvy1A2z8lASN/JMDbQAAAgAoAAAEZgSNABYAHwCDsgAgIRESObAY0ACwAEVYsAwvG7EMGj5ZsABFWLACLxuxAhA+WbIWDAIREjmwFi+yAAEKK1gh2Bv0WbAE0LAWELAG0LAWELAL0LALL0AJDwsfCy8LPwsEXbS/C88LAl2yCAEKK1gh2Bv0WbAT0LALELAX0LAMELIeAQorWCHYG/RZMDElIRUjNSM1MzUjNTMRITIWFRQGByEVISUhMjY1NCYjIQKk/v66wMDAwAHPxerjvv7dAQL+/gEVcoOEcP7qtLS0mFmYAlDMqKXLBFnxeGJkegAAAgCM/+wENAYAABAAGwBkshQcHRESObAUELAN0ACwCS+wAEVYsA0vG7ENGD5ZsABFWLAELxuxBBA+WbAARViwBy8bsQcQPlmyBg0EERI5sgsNBBESObANELIUAQorWCHYG/RZsAQQshkBCitYIdgb9FkwMQEUBgYjIicHIxEzETYzMhIRJzQmIyIHERYzMjYENG/JgNFwD6C5cMXJ8bmjjLdQVbSKowISn/yLlYEGAP3Di/7T/v8HtNaq/iyr2AAAAQBc/+wD7wROAB0ASbIAHh8REjkAsABFWLAQLxuxEBg+WbAARViwCC8bsQgQPlmyAAEKK1gh2Bv0WbAIELAD0LAQELAU0LAQELIXAQorWCHYG/RZMDElMjY3Mw4CIyIANTU0NjYzMhYXIyYmIyIGFRUUFgJAY5QIsAV4xG7f/vt225O28QiwCI9oj5udg3haXqhjASr8IJ35htquaYfOvyG8yQACAFv/7AQABgAAEQAcAGSyGh0eERI5sBoQsATQALAHL7AARViwBC8bsQQYPlmwAEVYsA0vG7ENED5ZsABFWLAJLxuxCRA+WbIGBA0REjmyCwQNERI5sA0QshUBCitYIdgb9FmwBBCyGgEKK1gh2Bv0WTAxEzQ2NjMyFxEzESMnBiMiJiYnNxQWMzI3ESYjIgZbcc6Avm+5oQ5vynzLdQG5qIqvUlOsjacCJp/8jYICNPoAeIyM+5gGsdifAfGZ1gACAFv+VgQABE4AGwAmAHyyHycoERI5sB8QsAvQALAARViwAy8bsQMYPlmwAEVYsAYvG7EGGD5ZsABFWLALLxuxCxI+WbAARViwGC8bsRgQPlmyBQMYERI5sAsQshIBCitYIdgb9FmyFgMYERI5sBgQsh8BCitYIdgb9FmwAxCyJAEKK1gh2Bv0WTAxEzQSMzIXNzMRBgIjIiYnNxYWMzI2NTUGIyICNRcUFjMyNxEmIyIGW/jGzG8PnQL04FbISDc/n0+Vim/Bwvq5pouvU1OtjqUCJvYBMpSA/A7v/v03MooqMrCoKIEBOPQHsNmhAeud1wD//wBXAAAChgW3AAYAFa0AAAIAjP5gBDIETgAQABsAbrIZHB0REjmwGRCwDdAAsABFWLANLxuxDRg+WbAARViwCi8bsQoYPlmwAEVYsAcvG7EHEj5ZsABFWLAELxuxBBA+WbIGDQQREjmyCw0EERI5sA0QshQBCitYIdgb9FmwBBCyGQEKK1gh2Bv0WTAxARQGBiMiJxEjETMXNjMyEhcHNCYjIgcRFjMyNgQybsiBxXG5nw90ysHuCripj6hUU6uMqgIRnvyLff33Bdp9kf7p6iew25X9+5TfAAACAFv+YAP/BE4ADwAaAGuyGBscERI5sBgQsAPQALAARViwAy8bsQMYPlmwAEVYsAYvG7EGGD5ZsABFWLAILxuxCBI+WbAARViwDC8bsQwQPlmyBQMMERI5sgoDDBESObITAQorWCHYG/RZsAMQshgBCitYIdgb9FkwMRM0EjMyFzczESMRBiMiAjUXFBYzMjcRJiMiBlv3zMRvDqC5cLrH+rmqjKZWWKKOqgIl9QE0hnL6JgIEeAE19geu35MCEY/fAAIAXf/sA/METgAUABwAYrIIHR4REjmwCBCwFdAAsABFWLAILxuxCBg+WbAARViwAC8bsQAQPlmyGQgAERI5sBkvtL8ZzxkCXbIMAQorWCHYG/RZsAAQshABCitYIdgb9FmwCBCyFQEKK1gh2Bv0WTAxBSIAJyc0NjYzMhIVFSEWFjMyNxcGASIGByE1NCYCceX+3QsBfN2A1ej9JAjCmaB4OYP+7nOYEQIgiRQBF+NOm/WK/v7wdJ3IWn9yA8qglhmDmgACAGD+VgPyBE4AGgAlAHyyIyYnERI5sCMQsAvQALAARViwAy8bsQMYPlmwAEVYsAYvG7EGGD5ZsABFWLALLxuxCxI+WbAARViwFy8bsRcQPlmyBQMXERI5sAsQshEBCitYIdgb9FmyFQMXERI5sBcQsh4BCitYIdgb9FmwAxCyIwEKK1gh2Bv0WTAxEzQSMzIXNzMRFAYjIiYnNxYzMjY1NQYjIgI1FxQWMzI3ESYjIgZg6MPKcBCd9eFSr0E3eo+ViW/Avuu6lYivUlWqiZYCJfoBL5N//AXq/y0pikmnnjqAATL6CLXToAHum9AAAQB+/+sFHQXFAB4ATLIMHyAREjkAsABFWLAMLxuxDBw+WbAARViwAy8bsQMQPlmwDBCwENCwDBCyEwEKK1gh2Bv0WbADELIbAQorWCHYG/RZsAMQsB7QMDEBBgAjIiQCJzU0EiQzMgAXIyYmIyICERUUEhYzMjY3BRwY/tvusf7hogGdARuy7QEvGcEYv53A6m7IfaGwGgHO3/78tAFHy0TTAUqz/vrjo6j+y/7+N6H/AJCdqQABAH7/6wUeBcQAIgBtsgwjJBESOQCwAEVYsAwvG7EMHD5ZsABFWLADLxuxAxA+WbIQAwwREjmwEC+wDBCyEwEKK1gh2Bv0WbADELIbAQorWCHYG/RZsiIMAxESObAiL7Q/Ik8iAl20DyIfIgJdsh8BCitYIdgb9FkwMSUGBCMiJAInNTQSJDMyBBcjJiYjIgIHBxQSFjMyNjcRITUhBR5D/uOwu/7WqAObARy18QEhIsAeupy17AoBeNOFcrUq/rACD75hcrQBR9It2wFOtuXalYz+3PJGrP72jDowAUabAAIAsgAABREFsAALABUARrIDFhcREjmwAxCwFdAAsABFWLABLxuxARw+WbAARViwAC8bsQAQPlmwARCyDAEKK1gh2Bv0WbAAELINAQorWCHYG/RZMDEzESEyBBIXFRQCBAcDETMyABE1NAAjsgGxwQE4sQSt/sLL6d/qARP+9+gFsKz+xMg+0P7BsQIFEvuLASoBAyT8ASgAAgB+/+sFXwXFABEAIgBGsgQjJBESObAEELAf0ACwAEVYsA0vG7ENHD5ZsABFWLAELxuxBBA+WbANELIWAQorWCHYG/RZsAQQsh8BCitYIdgb9FkwMQEUAgQjIiQCJzU0EiQzMgQSFwc0AiYjIgYGBxUUEhYzMhI1BV+i/uKvq/7hpgKkASGrrQEgowG/bsd9eMZyAXHJecHvAsLO/rC5uQFKyDfNAU+8uf60zAWiAQCPj/6cNaD+/pIBO/8AAAIAfv8EBV8FxQAVACYATbIIJygREjmwCBCwI9AAsABFWLARLxuxERw+WbAARViwCC8bsQgQPlmyAwgRERI5sBEQshoBCitYIdgb9FmwCBCyIwEKK1gh2Bv0WTAxARQCBxcHJQYjIiQCJzU0EiQzMgQSFSc0AiYjIgYGBxUUEhYzMhI1BV+plPqD/sw5PKv+4KQDogEirK4BIaK/bsd9eMdxAXHJecHvAsLU/qxaw3nzDLoBRsY6zAFQvrv+sM4BowEBj5D/nDOg/v6SATv/AAABAKAAAALJBI0ABgAyALAARViwBS8bsQUaPlmwAEVYsAAvG7EAED5ZsgQABRESObAEL7IDAQorWCHYG/RZMDEhIxEFNSUzAsm5/pACCh8DpouoygABAIMAAAQgBKAAGABUsgkZGhESOQCwAEVYsBEvG7ERGj5ZsABFWLAALxuxABA+WbIXAQorWCHYG/RZsALQshYXERESObIDERYREjmwERCyCQEKK1gh2Bv0WbARELAM0DAxISE1ATY3NzQmIyIGFSM0NjYzMhYVFAcBIQQg/IcB/X0KA31mepW5eNJ+u+HF/oYCeIMByXNUNVRsjnVwv2y4mLG0/qwAAQCKAAADhQXEAAcAMrIDCAkREjkAsABFWLAGLxuxBho+WbAARViwBC8bsQQQPlmwBhCyAgEKK1gh2Bv0WTAxATMRIREjESECzLn9vrkCQgXE/jD8DASNAAEAD/6jA94EjQAYAE4AsAsvsABFWLACLxuxAho+WbIBAQorWCHYG/RZsATQsgULAhESObAFL7ALELIQAQorWCHYG/RZsAUQshcBCitYIdgb9FmyGBcFERI5MDEBITUhFQEWFhUUACMiJzcWMzI2NTQmIyM1AuT9dANy/oCy4v7M/8rSNKWxtNe5wDwD9Jl2/mwY9rP5/tpni1jKpaulZwACAD7+tgSgBI0ACgAOAEsAsABFWLAJLxuxCRo+WbAARViwAi8bsQIQPlmwAEVYsAYvG7EGED5ZsgABCitYIdgb9FmwBhCwBdCwBS+wABCwDNCyDQkCERI5MDElMxUjESMRITUBMwEhEQcD28XFuv0dAtbH/TwCChyWl/63AUltBCH8CQL8NQD//wBQAo0CnQW4AwcB1AAAApgAEwCwAEVYsAovG7EKHD5ZsBDQMDEA//8ANgKYArsFrQMHAdgAAAKYABMAsABFWLAJLxuxCRw+WbAN0DAxAP//AFsCjQKnBa0DBwHZAAACmAAQALAARViwAS8bsQEcPlkwMf//AFYCjQKrBbYDBwHaAAACmAATALAARViwAC8bsQAcPlmwFNAwMQD//wA6ApgCpQWtAwcB2wAAApgAEACwAEVYsAUvG7EFHD5ZMDH//wBPAo0CnwW4AwcB3AAAApgAGQCwAEVYsBEvG7ERHD5ZsBfQsBEQsB/QMDEA//8ASQKRApUFuAMHAd0AAAKYABMAsABFWLAILxuxCBw+WbAZ0DAxAAABAGX+oAQFBIwAGwBOALANL7AARViwAS8bsQEaPlmyBAEKK1gh2Bv0WbIHDQEREjmwBy+yGAEKK1gh2Bv0WbIFBxgREjmwDRCyEgEKK1gh2Bv0WbAHELAb0DAxExMhFSEDNjc2EhUUACMiJzcWMzI2NTQmIyIGB4ZmAxT9fjZvlcjx/uDx4K86gtOZv6WHanUiAXQDGKv+dEACAv714e/+4nKLZc+kj7Y6UwAAAQBK/rYD8gSNAAYAJQCwAS+wAEVYsAUvG7EFGj5ZsgMBCitYIdgb9FmyAAMFERI5MDEBASMBITUhA/L9oLoCV/0bA6gEI/qTBT+YAAIAYP/wBm0EnQATAB0AmrIVHh8REjmwFRCwCtAAsABFWLAJLxuxCRo+WbAARViwCy8bsQsaPlmwAEVYsAIvG7ECED5ZsABFWLAALxuxABA+WbALELIMAQorWCHYG/RZsAAQsA/QsA8vsh8PAV2y3w8BXbIQAQorWCHYG/RZsAAQshMBCitYIdgb9FmwAhCyFAEKK1gh2Bv0WbAJELIXAQorWCHYG/RZMDEhIQUiABE1EAAzBSEVIREhFSERIQU3ESciBhUVFBYGbf1j/o7l/ucBF+UBWwKv/ZsCFP3sAmz78erslq+wEAEyAQc+AQIBNBCZ/rKY/okNBwNnCdbFQsPXAAIAgv6pBD8EoQAYACUASwCwFC+wAEVYsAwvG7EMGj5ZsBQQsgABCitYIdgb9FmyBRQMERI5sAUvsgMFDBESObIaAQorWCHYG/RZsAwQsiABCitYIdgb9FkwMQUyNjcGIyICNTQ2NjMyABMVFAIEIyInNxYTMjY3NTQmIyIGFRQWAd+x3BV3t9L/ddKE6wEFApL+86+fdiZ64GmfIqGSf5ijv/TZaQEU4pzsfv7c/vb63P66rjyOMgH8XFKUxcXDq5XJAAACAHj/6wSJBKEACwAZADkAsABFWLAILxuxCBo+WbAARViwAy8bsQMQPlmwCBCyDwEKK1gh2Bv0WbADELIWAQorWCHYG/RZMDEBEAAgAAM1EAAgABMnNCYjIgYHFRQWMzI2NwSJ/uj+Iv7mAQEZAd4BGQG6sp2bsgK2m5qxAgI8/ur+xQE8ARQUARQBPv7E/usNyuLgxTTJ5d3KAP///7T+SwFlBDoABgCbAAD///+0/ksBZQQ6AAYAmwAA//8AmwAAAVUEOgAGAIwAAP////r+WQFaBDoAJgCMAAAABgCjyAr//wCbAAABVQQ6AAYAjAAA//8Ahv6sAWEEOgAmAIwAAAAHAKwDTgAKAAEAiv/sA/kEnQAhAFwAsABFWLAVLxuxFRo+WbAARViwEC8bsRAQPlmwAEVYsB8vG7EfED5ZsgIBCitYIdgb9FmyGR8VERI5sBkvsQgKK1jYG9xZsBkQsArQsBUQsg0BCitYIdgb9FkwMSUWMzI2NTQmIyM1EyYjIgMRIxE2NjMyFhcBFhYVFAYjIicBw1JYYXKIh1TtTmPTBLgBxclrw2X+7qm217V3aLUze2NiVYkBJz7+9f0GAvXS1lVi/rYPo4aszDEA//8AJQIfAg0CtgIGABEAAAACACUAAATkBbAADwAdAGYAsABFWLAFLxuxBRw+WbAARViwAC8bsQAQPlmyBAAFERI5sAQvss8EAV2yLwQBXbKfBAFxsgEBCitYIdgb9FmwEdCwABCyEgEKK1gh2Bv0WbAFELIbAQorWCHYG/RZsAQQsBzQMDEzESM1MxEhMgQSFxUUAgQHEyERMzISNzU0AicjESHHoqIBm74BJJ8Bn/7ZxEf+5sne9wHp1uABGgKalwJ/qP7KyV3O/sqmAgKa/gMBEvld+AETAv4fAAACACUAAATkBbAADwAdAGYAsABFWLAFLxuxBRw+WbAARViwAC8bsQAQPlmyBAAFERI5sAQvss8EAV2yLwQBXbKfBAFxsgEBCitYIdgb9FmwEdCwABCyEgEKK1gh2Bv0WbAFELIbAQorWCHYG/RZsAQQsBzQMDEzESM1MxEhMgQSFxUUAgQHEyERMzISNzU0AicjESHHoqIBm74BJJ8Bn/7ZxEf+5sne9wHp1uABGgKalwJ/qP7KyV3O/sqmAgKa/gMBEvld+AETAv4fAAABAAAAAAP9BgAAGQBqALAXL7AARViwBC8bsQQYPlmwAEVYsBAvG7EQED5ZsABFWLAILxuxCBA+WbIvFwFdsg8XAV2yFRAXERI5sBUvshIBCitYIdgb9FmwAdCyAhAEERI5sAQQsgwBCitYIdgb9FmwFRCwGNAwMQEhETYzIBMRIxEmJiMiBgcRIxEjNTM1MxUhAnz+53vFAVcDuQFpb1qIJrmqqrkBGQTS/uWX/n39NQLMdXBgTvz9BNKXl5cAAQAxAAAElwWwAA8ATACwAEVYsAovG7EKHD5ZsABFWLACLxuxAhA+WbIPCgIREjmwDy+yAAEKK1gh2Bv0WbAE0LAPELAG0LAKELIIAQorWCHYG/RZsAzQMDEBIxEjESM1MxEhNSEVIREzA6rnv9bW/i0EZv4s5wM3/MkDN5cBRJ6e/rwAAf/0/+wCcAVAAB0AcwCwAEVYsAEvG7EBGD5ZsABFWLARLxuxERA+WbABELAA0LAAL7ABELIEAQorWCHYG/RZsAEQsAXQsAUvsgAFAV2yCAEKK1gh2Bv0WbARELIMAQorWCHYG/RZsAgQsBXQsAUQsBjQsAQQsBnQsAEQsBzQMDEBETMVIxUzFSMRFBYzMjcVBiMiJjURIzUzNSM1MxEBh8rK6ek2QSA4SUV8ftraxcUFQP76j7qX/rJBQQyWFJaKAU6Xuo8BBv//ABwAAAUdBzQCJgAlAAABBwBEATABNgAUALAARViwBC8bsQQcPlmxDAj0MDH//wAcAAAFHQc0AiYAJQAAAQcAdQG/ATYAFACwAEVYsAUvG7EFHD5ZsQ0I9DAx//8AHAAABR0HNgImACUAAAEHAJ0AyQE2ABQAsABFWLAELxuxBBw+WbEPBvQwMf//ABwAAAUdByICJgAlAAABBwCkAMUBOgAUALAARViwBS8bsQUcPlmxDgT0MDH//wAcAAAFHQb7AiYAJQAAAQcAagD5ATYAFwCwAEVYsAQvG7EEHD5ZsREE9LAb0DAxAP//ABwAAAUdB5ECJgAlAAABBwCiAVABQQAXALAARViwBC8bsQQcPlmxDgb0sBjQMDEA//8AHAAABR0HlAImACUAAAAHAd8BWgEi//8Ad/5EBNgFxAImACcAAAAHAHkB0v/3//8AqQAABEYHQAImACkAAAEHAEQA+wFCABQAsABFWLAGLxuxBhw+WbENCPQwMf//AKkAAARGB0ACJgApAAABBwB1AYoBQgAUALAARViwBi8bsQYcPlmxDgj0MDH//wCpAAAERgdCAiYAKQAAAQcAnQCUAUIAFACwAEVYsAYvG7EGHD5ZsRAG9DAx//8AqQAABEYHBwImACkAAAEHAGoAxAFCABcAsABFWLAGLxuxBhw+WbESBPSwG9AwMQD////gAAABgQdAAiYALQAAAQcARP+nAUIAFACwAEVYsAIvG7ECHD5ZsQUI9DAx//8AsAAAAlEHQAImAC0AAAEHAHUANQFCABQAsABFWLADLxuxAxw+WbEGCPQwMf///+kAAAJGB0ICJgAtAAABBwCd/0ABQgAUALAARViwAi8bsQIcPlmxCAb0MDH////WAAACXwcHAiYALQAAAQcAav9wAUIAFwCwAEVYsAIvG7ECHD5ZsQoE9LAU0DAxAP//AKkAAAUIByICJgAyAAABBwCkAPsBOgAUALAARViwBi8bsQYcPlmxDQT0MDH//wB2/+wFCQc2AiYAMwAAAQcARAFSATgAFACwAEVYsA0vG7ENHD5ZsSEI9DAx//8Adv/sBQkHNgImADMAAAEHAHUB4QE4ABQAsABFWLANLxuxDRw+WbEiCPQwMf//AHb/7AUJBzgCJgAzAAABBwCdAOsBOAAUALAARViwDS8bsQ0cPlmxIgb0MDH//wB2/+wFCQckAiYAMwAAAQcApADnATwAFACwAEVYsA0vG7ENHD5ZsSME9DAx//8Adv/sBQkG/QImADMAAAEHAGoBGwE4ABcAsABFWLANLxuxDRw+WbEnBPSwMNAwMQD//wCM/+wEqgc0AiYAOQAAAQcARAErATYAFACwAEVYsAovG7EKHD5ZsRQI9DAx//8AjP/sBKoHNAImADkAAAEHAHUBugE2ABQAsABFWLASLxuxEhw+WbEVCPQwMf//AIz/7ASqBzYCJgA5AAABBwCdAMQBNgAUALAARViwCi8bsQocPlmxFwb0MDH//wCM/+wEqgb7AiYAOQAAAQcAagD0ATYAFwCwAEVYsAovG7EKHD5ZsRkE9LAj0DAxAP//AA8AAAS7BzQCJgA9AAABBwB1AYgBNgAUALAARViwAS8bsQEcPlmxCwj0MDH//wBt/+wD6gX+AiYARQAAAQcARADVAAAAFACwAEVYsBcvG7EXGD5ZsSoJ9DAx//8Abf/sA+oF/gImAEUAAAEHAHUBZAAAABQAsABFWLAXLxuxFxg+WbErCfQwMf//AG3/7APqBgACJgBFAAABBgCdbgAAFACwAEVYsBcvG7EXGD5ZsSsB9DAx//8Abf/sA+oF7AImAEUAAAEGAKRqBAAUALAARViwFy8bsRcYPlmxLAH0MDH//wBt/+wD6gXFAiYARQAAAQcAagCeAAAAFwCwAEVYsBcvG7EXGD5ZsTAB9LA50DAxAP//AG3/7APqBlsCJgBFAAABBwCiAPUACwAXALAARViwFy8bsRcYPlmxLAT0sDbQMDEA//8Abf/sA+oGXwImAEUAAAAHAd8A///t//8AXP5EA+wETgImAEcAAAAHAHkBP//3//8AXf/sA/MF/gImAEkAAAEHAEQAxQAAABQAsABFWLAILxuxCBg+WbEfCfQwMf//AF3/7APzBf4CJgBJAAABBwB1AVQAAAAUALAARViwCC8bsQgYPlmxIAn0MDH//wBd/+wD8wYAAiYASQAAAQYAnV4AABQAsABFWLAILxuxCBg+WbEgAfQwMf//AF3/7APzBcUCJgBJAAABBwBqAI4AAAAXALAARViwCC8bsQgYPlmxJQH0sC7QMDEA////xgAAAWcF/QImAIwAAAEGAESN/wAUALAARViwAi8bsQIYPlmxBQn0MDH//wCWAAACNwX9AiYAjAAAAQYAdRv/ABQAsABFWLADLxuxAxg+WbEGCfQwMf///88AAAIsBf8CJgCMAAABBwCd/yb//wAUALAARViwAi8bsQIYPlmxCAH0MDH///+8AAACRQXEAiYAjAAAAQcAav9W//8AFwCwAEVYsAIvG7ECGD5ZsQsB9LAU0DAxAP//AIwAAAPfBewCJgBSAAABBgCkYQQAFACwAEVYsAMvG7EDGD5ZsRUB9DAx//8AW//sBDQF/gImAFMAAAEHAEQAzwAAABQAsABFWLAELxuxBBg+WbEdCfQwMf//AFv/7AQ0Bf4CJgBTAAABBwB1AV4AAAAUALAARViwBC8bsQQYPlmxHgn0MDH//wBb/+wENAYAAiYAUwAAAQYAnWgAABQAsABFWLAELxuxBBg+WbEeAfQwMf//AFv/7AQ0BewCJgBTAAABBgCkZAQAFACwAEVYsAQvG7EEGD5ZsR8B9DAx//8AW//sBDQFxQImAFMAAAEHAGoAmAAAABcAsABFWLAELxuxBBg+WbEjAfSwLNAwMQD//wCI/+wD3AX+AiYAWQAAAQcARADHAAAAFACwAEVYsAcvG7EHGD5ZsRIJ9DAx//8AiP/sA9wF/gImAFkAAAEHAHUBVgAAABQAsABFWLANLxuxDRg+WbETCfQwMf//AIj/7APcBgACJgBZAAABBgCdYAAAFACwAEVYsAcvG7EHGD5ZsRUB9DAx//8AiP/sA9wFxQImAFkAAAEHAGoAkAAAABcAsABFWLAHLxuxBxg+WbEYAfSwIdAwMQD//wAW/ksDsAX+AiYAXQAAAQcAdQEbAAAAFACwAEVYsAEvG7EBGD5ZsRIJ9DAx//8AFv5LA7AFxQImAF0AAAEGAGpVAAAXALAARViwDy8bsQ8YPlmxFwH0sCDQMDEA//8AHAAABR0G7gImACUAAAEHAHAAxwE+ABMAsABFWLAELxuxBBw+WbAM3DAxAP//AG3/7APqBbgCJgBFAAABBgBwbAgAEwCwAEVYsBcvG7EXGD5ZsCrcMDEA//8AHAAABR0HDgImACUAAAEHAKAA9AE3ABMAsABFWLAELxuxBBw+WbAN3DAxAP//AG3/7APqBdgCJgBFAAABBwCgAJkAAQATALAARViwFy8bsRcYPlmwK9wwMQAAAgAc/k8FHQWwABYAGQBnALAARViwFi8bsRYcPlmwAEVYsBQvG7EUED5ZsABFWLABLxuxARA+WbAARViwDC8bsQwSPlmyBwMKK1gh2Bv0WbABELAR0LARL7IXFBYREjmwFy+yEwEKK1gh2Bv0WbIZFhQREjkwMQEBIwcGFRQzMjcXBiMiJjU0NwMhAyMBAyEDAvACLSY6cU4wNA1GWllnqYf9nonGAiyjAe/4BbD6UC1bVkgaeSxoVpBsAXP+hAWw/GoCqQAAAgBt/k8D6gROAC0ANwCQALAARViwFy8bsRcYPlmwAEVYsAQvG7EEED5ZsABFWLAeLxuxHhA+WbAARViwKS8bsSkSPlmwHhCwANCwAC+yAgQXERI5sgsXBBESObALL7AXELIPAQorWCHYG/RZshILFxESObApELIkAworWCHYG/RZsAQQsi4BCitYIdgb9FmwCxCyMwEKK1gh2Bv0WTAxJSYnBiMiJjU0JDMzNTQmIyIGFSM0NjYzMhYXERQXFSMHBhUUMzI3FwYjIiY1NCcyNjc1IyAVFBYDJA8HgbOgzQEB6bR0cWOGunPFdrvUBCYhOnFOMDQNRlpZZ4hXnCOR/qx0ByZFhrWLqbtVYXNkR1GXWLuk/g6VWBAtW1ZIGnksaFaQ8FpI3sdXYgD//wB3/+wE2AdVAiYAJwAAAQcAdQHGAVcAFACwAEVYsAsvG7ELHD5ZsR8I9DAx//8AXP/sA+wF/gImAEcAAAEHAHUBMwAAABQAsABFWLAQLxuxEBg+WbEgCfQwMf//AHf/7ATYB1cCJgAnAAABBwCdANABVwAUALAARViwCy8bsQscPlmxHwb0MDH//wBc/+wD7AYAAiYARwAAAQYAnT0AABQAsABFWLAQLxuxEBg+WbEgAfQwMf//AHf/7ATYBxkCJgAnAAABBwChAa4BVwAUALAARViwCy8bsQscPlmxIwT0MDH//wBc/+wD7AXCAiYARwAAAQcAoQEbAAAAFACwAEVYsBAvG7EQGD5ZsSQB9DAx//8Ad//sBNgHVwImACcAAAEHAJ4A5gFYABQAsABFWLALLxuxCxw+WbEhBvQwMf//AFz/7APsBgACJgBHAAABBgCeUwEAFACwAEVYsBAvG7EQGD5ZsSIB9DAx//8AqQAABMYHQgImACgAAAEHAJ4AnwFDABQAsABFWLABLxuxARw+WbEbBvQwMf//AF//7AUrBgIAJgBIAAABBwGiA9QFEwBIALLwHwFysh8fAV2ynx8BXbIfHwFxtM8f3x8CcbLfHwFysl8fAXKyTx8BcbLPHwFdtE8fXx8CXbJgHwFdsuAfAXGy4B8BXTAx//8AqQAABEYG+gImACkAAAEHAHAAkgFKABMAsABFWLAGLxuxBhw+WbAN3DAxAP//AF3/7APzBbgCJgBJAAABBgBwXAgAEwCwAEVYsAgvG7EIGD5ZsB/cMDEA//8AqQAABEYHGgImACkAAAEHAKAAvwFDABMAsABFWLAGLxuxBhw+WbAP3DAxAP//AF3/7APzBdgCJgBJAAABBwCgAIkAAQATALAARViwCC8bsQgYPlmwIdwwMQD//wCpAAAERgcEAiYAKQAAAQcAoQFyAUIAFACwAEVYsAYvG7EGHD5ZsRME9DAx//8AXf/sA/MFwgImAEkAAAEHAKEBPAAAABQAsABFWLAILxuxCBg+WbElAfQwMQABAKn+TwRGBbAAGwB2ALAARViwFi8bsRYcPlmwAEVYsBUvG7EVED5ZsABFWLAPLxuxDxI+WbAARViwBC8bsQQQPlmyGhUWERI5sBovsgEBCitYIdgb9FmwFRCyAgEKK1gh2Bv0WbAPELIKAworWCHYG/RZsBYQshkBCitYIdgb9FkwMQEhESEVIwcGFRQzMjcXBiMiJjU0NyERIRUhESED4P2JAt1JOnFOMDQNRlpZZ5v9XQOT/S0CdwKh/fydLVtWSBp5LGhWimkFsJ7+LAAAAgBd/mgD8wROACUALQB6ALAARViwGi8bsRoYPlmwAEVYsA0vG7ENEj5ZsABFWLASLxuxEhA+WbAE0LANELIIAworWCHYG/RZsioSGhESObAqL7S/Ks8qAl2yHgEKK1gh2Bv0WbASELIiAQorWCHYG/RZsiUSGhESObAaELImAQorWCHYG/RZMDElBgczBwYVFDMyNxcGIyImNTQ3JgA1NTQ2NjMyEhEVIRYWMzI2NwEiBgchNSYmA+VHcwE6cU4wNA1GWllnYtr+9XvdgdPq/SMEs4piiDP+wnCYEgIeCIi9bjYtW1ZIGnksaFZsWgQBIe8hof2P/ur+/U2gxVBCAqGjkw6NmwD//wCpAAAERgdCAiYAKQAAAQcAngCqAUMAFACwAEVYsAYvG7EGHD5ZsREG9DAx//8AXf/sA/MGAAImAEkAAAEGAJ50AQAUALAARViwCC8bsQgYPlmxIgH0MDH//wB6/+wE3AdXAiYAKwAAAQcAnQDIAVcAFACwAEVYsAsvG7ELHD5ZsSIG9DAx//8AYP5WA/IGAAImAEsAAAEGAJ1VAAAUALAARViwAy8bsQMYPlmxJwH0MDH//wB6/+wE3AcvAiYAKwAAAQcAoADzAVgAEwCwAEVYsAsvG7ELHD5ZsCLcMDEA//8AYP5WA/IF2AImAEsAAAEHAKAAgAABABMAsABFWLADLxuxAxg+WbAn3DAxAP//AHr/7ATcBxkCJgArAAABBwChAaYBVwAUALAARViwCy8bsQscPlmxJwT0MDH//wBg/lYD8gXCAiYASwAAAQcAoQEzAAAAFACwAEVYsAMvG7EDGD5ZsSwB9DAx//8Aev3/BNwFxAImACsAAAAHAaIBo/6g//8AYP5WA/IGkwImAEsAAAEHAbkBKwBYABMAsABFWLADLxuxAxg+WbAq3DAxAP//AKkAAAUIB0ICJgAsAAABBwCdAPEBQgAUALAARViwBy8bsQccPlmxEAb0MDH//wCMAAAD3wdBAiYATAAAAQcAnQAdAUEACQCwES+wFNwwMQD///+3AAACegcuAiYALQAAAQcApP88AUYAFACwAEVYsAMvG7EDHD5ZsQcE9DAx////nQAAAmAF6gImAIwAAAEHAKT/IgACABQAsABFWLADLxuxAxg+WbEHAfQwMf///7YAAAKABvoCJgAtAAABBwBw/z4BSgATALAARViwAi8bsQIcPlmwBdwwMQD///+cAAACZgW2AiYAjAAAAQcAcP8kAAYAEwCwAEVYsAIvG7ECGD5ZsAXcMDEA////7AAAAkMHGgImAC0AAAEHAKD/awFDABMAsABFWLACLxuxAhw+WbAH3DAxAP///9IAAAIpBdcCJgCMAAABBwCg/1EAAAATALAARViwAi8bsQIYPlmwB9wwMQD//wAY/lgBeAWwAiYALQAAAAYAo+YJ////+/5PAWgFxAImAE0AAAAGAKPJAP//AKoAAAGFBwQCJgAtAAABBwChAB0BQgAUALAARViwAi8bsQIcPlmxCwT0MDH//wC3/+wF+QWwACYALQAAAAcALgItAAD//wCN/ksDSgXEACYATQAAAAcATgHxAAD//wA1/+wEggc1AiYALgAAAQcAnQF8ATUAFACwAEVYsAAvG7EAHD5ZsRQG9DAx////tP5LAjkF2AImAJsAAAEHAJ3/M//YABQAsABFWLANLxuxDRg+WbESBPQwMf//AKn9/wUFBbACJgAvAAAABwGiAZT+oP//AI39/wQMBgACJgBPAAAABwGiARH+oP//AKEAAAQcBy8CJgAwAAABBwB1ACYBMQAUALAARViwBS8bsQUcPlmxCAj0MDH//wCTAAACNAeUAiYAUAAAAQcAdQAYAZYAFACwAEVYsAMvG7EDHj5ZsQYJ9DAx//8Aqf3/BBwFsAImADAAAAAHAaIBbP6g//8AV/3/AVUGAAImAFAAAAAHAaL/+/6g//8AqQAABBwFsQImADAAAAEHAaIB1QTCABAAsABFWLAKLxuxChw+WTAx//8AnAAAAq0GAgAmAFAAAAEHAaIBVgUTAFAAsh8IAV2ynwgBXbQfCC8IAnGyrwgBcbQvCD8IAnKy3wgBcrZfCG8IfwgDcrTPCN8IAnGyTwgBcbLPCAFdtE8IXwgCXbJgCAFdsvAIAXIwMf//AKkAAAQcBbACJgAwAAAABwChAbz9xf//AJwAAAKgBgAAJgBQAAAABwChATj9tv//AKkAAAUIBzQCJgAyAAABBwB1AfUBNgAUALAARViwCC8bsQgcPlmxDAj0MDH//wCMAAAD3wX+AiYAUgAAAQcAdQFbAAAAFACwAEVYsAMvG7EDGD5ZsRQJ9DAx//8Aqf3/BQgFsAImADIAAAAHAaIB0P6g//8AjP3/A98ETgImAFIAAAAHAaIBM/6g//8AqQAABQgHNgImADIAAAEHAJ4BFQE3ABQAsABFWLAGLxuxBhw+WbEPBvQwMf//AIwAAAPfBgACJgBSAAABBgCeewEAFACwAEVYsAMvG7EDGD5ZsRYB9DAx////vAAAA98GBAImAFIAAAEHAaL/YAUVAAYAsBcvMDH//wB2/+wFCQbwAiYAMwAAAQcAcADpAUAAEwCwAEVYsA0vG7ENHD5ZsCHcMDEA//8AW//sBDQFuAImAFMAAAEGAHBmCAATALAARViwBC8bsQQYPlmwHdwwMQD//wB2/+wFCQcQAiYAMwAAAQcAoAEWATkAEwCwAEVYsA0vG7ENHD5ZsCLcMDEA//8AW//sBDQF2AImAFMAAAEHAKAAkwABABMAsABFWLAELxuxBBg+WbAf3DAxAP//AHb/7AUJBzcCJgAzAAABBwClAWsBOAAXALAARViwDS8bsQ0cPlmxJgj0sCLQMDEA//8AW//sBDQF/wImAFMAAAEHAKUA6AAAABcAsABFWLAELxuxBBg+WbEiCfSwHtAwMQD//wCoAAAEyQc0AiYANgAAAQcAdQGAATYAFACwAEVYsAQvG7EEHD5ZsRoI9DAx//8AjAAAAtIF/gImAFYAAAEHAHUAtgAAABQAsABFWLALLxuxCxg+WbEQCfQwMf//AKj9/wTJBbACJgA2AAAABwGiAWP+oP//AFP9/wKXBE4CJgBWAAAABwGi//f+oP//AKgAAATJBzYCJgA2AAABBwCeAKABNwAUALAARViwBC8bsQQcPlmxHQb0MDH//wBjAAACzQYAAiYAVgAAAQYAntcBABQAsABFWLALLxuxCxg+WbESAfQwMf//AFD/7ARyBzYCJgA3AAABBwB1AY0BOAAUALAARViwBi8bsQYcPlmxKQj0MDH//wBf/+wDuwX+AiYAVwAAAQcAdQFRAAAAFACwAEVYsAkvG7EJGD5ZsSkJ9DAx//8AUP/sBHIHOAImADcAAAEHAJ0AlwE4ABQAsABFWLAGLxuxBhw+WbEpBvQwMf//AF//7AO7BgACJgBXAAABBgCdWwAAFACwAEVYsAkvG7EJGD5ZsSkB9DAx//8AUP5NBHIFxAImADcAAAAHAHkBnwAA//8AX/5FA7sETgImAFcAAAAHAHkBXf/4//8AUP3/BHIFxAImADcAAAAHAaIBdf6g//8AX/3/A7sETgImAFcAAAAHAaIBM/6g//8AUP/sBHIHOAImADcAAAEHAJ4ArQE5ABQAsABFWLAGLxuxBhw+WbErBvQwMf//AF//7AO7BgACJgBXAAABBgCecQEAFACwAEVYsAkvG7EJGD5ZsSsB9DAx//8AMf3/BJcFsAImADgAAAAHAaIBZv6g//8ACf3/AlYFQAImAFgAAAAHAaIAxf6g//8AMf5NBJcFsAImADgAAAAHAHkBkAAA//8ACf5NApkFQAImAFgAAAAHAHkA7wAA//8AMQAABJcHNgImADgAAAEHAJ4AogE3ABQAsABFWLAGLxuxBhw+WbENBvQwMf//AAn/7ALsBnkAJgBYAAAABwGiAZUFiv//AIz/7ASqByICJgA5AAABBwCkAMABOgAUALAARViwEi8bsRIcPlmxFgT0MDH//wCI/+wD3AXsAiYAWQAAAQYApFwEABQAsABFWLANLxuxDRg+WbEUAfQwMf//AIz/7ASqBu4CJgA5AAABBwBwAMIBPgATALAARViwEi8bsRIcPlmwE9wwMQD//wCI/+wD3AW4AiYAWQAAAQYAcF4IABMAsABFWLAHLxuxBxg+WbAS3DAxAP//AIz/7ASqBw4CJgA5AAABBwCgAO8BNwATALAARViwCi8bsQocPlmwFtwwMQD//wCI/+wD3AXYAiYAWQAAAQcAoACLAAEAEwCwAEVYsAcvG7EHGD5ZsBTcMDEA//8AjP/sBKoHkQImADkAAAEHAKIBSwFBABcAsABFWLAKLxuxChw+WbEWBvSwINAwMQD//wCI/+wD3AZbAiYAWQAAAQcAogDnAAsAFwCwAEVYsAcvG7EHGD5ZsRQE9LAe0DAxAP//AIz/7ASqBzUCJgA5AAABBwClAUQBNgAXALAARViwEi8bsRIcPlmxFQj0sBnQMDEA//8AiP/sBAwF/wImAFkAAAEHAKUA4AAAABcAsABFWLANLxuxDRg+WbETCfSwF9AwMQAAAQCM/nsEqgWwACAAUwCwAEVYsBgvG7EYHD5ZsABFWLANLxuxDRI+WbAARViwEy8bsRMQPlmwGBCwINCyBBMgERI5sA0QsggDCitYIdgb9FmwExCyHAEKK1gh2Bv0WTAxAREGBgcGFRQzMjcXBiMiJjU0NwciACcRMxEUFjMyNjURBKoBioObTjA0DUZaWWdPFu/+5AK+rqGjrQWw/CGU4jtyYEgaeSxoVmFTAQEC4gPg/Caer66eA9sAAQCI/k8D5gQ6AB8AbQCwAEVYsBcvG7EXGD5ZsABFWLAdLxuxHRg+WbAARViwHy8bsR8QPlmwAEVYsBIvG7ESED5ZsABFWLAKLxuxChI+WbIFAworWCHYG/RZsB8QsA/QsA8vshASHRESObASELIaAQorWCHYG/RZMDEhBwYVFDMyNxcGIyImNTQ3JwYjIiYnETMRFDMyNxEzEQPSOnFOMDQNRlpZZ6YEbNGttQG5yNRGuS1bVkgaeSxoVo9qZX/JxQLA/UX2ngMT+8b//wA9AAAG7Qc2AiYAOwAAAQcAnQHFATYAFACwAEVYsAMvG7EDHD5ZsRcG9DAx//8AKwAABdMGAAImAFsAAAEHAJ0BJAAAABQAsABFWLAMLxuxDBg+WbEPAfQwMf//AA8AAAS7BzYCJgA9AAABBwCdAJIBNgAUALAARViwAS8bsQEcPlmxCwb0MDH//wAW/ksDsAYAAiYAXQAAAQYAnSUAABQAsABFWLAPLxuxDxg+WbEUAfQwMf//AA8AAAS7BvsCJgA9AAABBwBqAMIBNgAXALAARViwCC8bsQgcPlmxEAT0sBnQMDEA//8AVgAABHoHNAImAD4AAAEHAHUBhwE2ABQAsABFWLAHLxuxBxw+WbEMCPQwMf//AFgAAAOzBf4CJgBeAAABBwB1ASEAAAAUALAARViwBy8bsQcYPlmxDAn0MDH//wBWAAAEegb4AiYAPgAAAQcAoQFvATYAFACwAEVYsAcvG7EHHD5ZsREE9DAx//8AWAAAA7MFwgImAF4AAAEHAKEBCQAAABQAsABFWLAHLxuxBxg+WbERAfQwMf//AFYAAAR6BzYCJgA+AAABBwCeAKcBNwAUALAARViwBy8bsQccPlmxDwb0MDH//wBYAAADswYAAiYAXgAAAQYAnkEBABQAsABFWLAHLxuxBxg+WbEPAfQwMf////IAAAdXB0ACJgCBAAABBwB1AskBQgAUALAARViwBi8bsQYcPlmxFQj0MDH//wBO/+wGfAX/AiYAhgAAAQcAdQJ6AAEAFACwAEVYsB0vG7EdGD5ZsUAJ9DAx//8Adv+jBR0HfgImAIMAAAEHAHUB6QGAABQAsABFWLAQLxuxEBw+WbEsCPQwMf//AFv/egQ0Bf4CJgCJAAABBwB1ATcAAAAUALAARViwBC8bsQQYPlmxKQn0MDH///++AAAEHwSNAiYBvQAAAQcB3v8v/3gALACyHxgBcbTfGO8YAnG0HxgvGAJdsh8YAXKyTxgBcbTvGP8YAl2yXxgBXTAx////vgAABB8EjQImAb0AAAEHAd7/L/94ADYAtO8X/xcCXbJPFwFxsh8XAXKy3xcBcrJvFwFytN8X7xcCcbIfFwFxsl8XAV20HxcvFwJdMDH//wAoAAAD/QSNAiYBzQAAAQYB3kXgAA0AsgMKAV2ysAoBXTAxAP//ABMAAARwBhwCJgG6AAABBwBEANUAHgAUALAARViwBC8bsQQaPlmxDAb0MDH//wATAAAEcAYcAiYBugAAAQcAdQFkAB4AFACwAEVYsAUvG7EFGj5ZsQ0G9DAx//8AEwAABHAGHgImAboAAAEGAJ1uHgAUALAARViwBC8bsQQaPlmxDwT0MDH//wATAAAEcAYKAiYBugAAAQYApGoiABQAsABFWLAFLxuxBRo+WbEOAvQwMf//ABMAAARwBeMCJgG6AAABBwBqAJ4AHgAXALAARViwBC8bsQQaPlmxEgL0sBvQMDEA//8AEwAABHAGeQImAboAAAEHAKIA9QApABcAsABFWLAELxuxBBo+WbEOBvSwGNAwMQD//wATAAAEcAZ8AiYBugAAAAcB3wD/AAr//wBg/koEMASdAiYBvAAAAAcAeQF0//3//wCKAAADrgYcAiYBvgAAAQcARACoAB4AFACwAEVYsAYvG7EGGj5ZsQ0G9DAx//8AigAAA64GHAImAb4AAAEHAHUBNwAeABQAsABFWLAHLxuxBxo+WbEOBvQwMf//AIoAAAOuBh4CJgG+AAABBgCdQR4AFACwAEVYsAYvG7EGGj5ZsRAE9DAx//8AigAAA64F4wImAb4AAAEGAGpxHgAXALAARViwBi8bsQYaPlmxEwL0sBzQMDEA////vgAAAV8GHAImAcIAAAEGAESFHgAUALAARViwAi8bsQIaPlmxBQb0MDH//wCOAAACLwYcAiYBwgAAAQYAdRMeABQAsABFWLADLxuxAxo+WbEGBvQwMf///8cAAAIkBh4CJgHCAAABBwCd/x4AHgAUALAARViwAi8bsQIaPlmxCAT0MDH///+0AAACPQXjAiYBwgAAAQcAav9OAB4AFwCwAEVYsAIvG7ECGj5ZsQsC9LAU0DAxAP//AIoAAARYBgoCJgHHAAABBwCkAJUAIgAUALAARViwBi8bsQYaPlmxDQL0MDH//wBg//AEWgYcAiYByAAAAQcARADuAB4AFACwAEVYsAovG7EKGj5ZsR0G9DAx//8AYP/wBFoGHAImAcgAAAEHAHUBfQAeABQAsABFWLAKLxuxCho+WbEeBvQwMf//AGD/8ARaBh4CJgHIAAABBwCdAIcAHgAUALAARViwCi8bsQoaPlmxIAT0MDH//wBg//AEWgYKAiYByAAAAQcApACDACIAFACwAEVYsAovG7EKGj5ZsR8C9DAx//8AYP/wBFoF4wImAcgAAAEHAGoAtwAeABcAsABFWLAKLxuxCho+WbEjAvSwLNAwMQD//wB0//AECgYcAiYBzgAAAQcARADPAB4AFACwAEVYsAkvG7EJGj5ZsRMG9DAx//8AdP/wBAoGHAImAc4AAAEHAHUBXgAeABQAsABFWLARLxuxERo+WbEUBvQwMf//AHT/8AQKBh4CJgHOAAABBgCdaB4AFACwAEVYsAkvG7EJGj5ZsRYE9DAx//8AdP/wBAoF4wImAc4AAAEHAGoAmAAeABcAsABFWLAJLxuxCRo+WbEZAvSwItAwMQD//wANAAAEHAYcAiYB0gAAAQcAdQEzAB4AFACwAEVYsAEvG7EBGj5ZsQsG9DAx//8AEwAABHAF1gImAboAAAEGAHBsJgATALAARViwBC8bsQQaPlmwDNwwMQD//wATAAAEcAX2AiYBugAAAQcAoACZAB8AFACwAEVYsAQvG7EEGj5ZsQ4I9DAxAAIAE/5PBHAEjQAWABkAZwCwAEVYsAAvG7EAGj5ZsABFWLAULxuxFBA+WbAARViwAS8bsQEQPlmwAEVYsAwvG7EMEj5ZsgcDCitYIdgb9FmwARCwEdCwES+yFxQAERI5sBcvshMBCitYIdgb9FmyGQAUERI5MDEBASMHBhUUMzI3FwYjIiY1NDcDIQMjAQMhAwKYAdgmOnFOMDQNRlpZZ7Bo/fhuvQHfeAGRxwSN+3MtW1ZIGnksaFaUbAEK/ukEjf0hAf0A//8AYP/wBDAGHAImAbwAAAEHAHUBaQAeABQAsABFWLALLxuxCxo+WbEfBvQwMf//AGD/8AQwBh4CJgG8AAABBgCdcx4AFACwAEVYsAsvG7ELGj5ZsSEE9DAx//8AYP/wBDAF4AImAbwAAAEHAKEBUQAeABQAsABFWLALLxuxCxo+WbEjAvQwMf//AGD/8AQwBh4CJgG8AAABBwCeAIkAHwAUALAARViwCy8bsQsaPlmxIQb0MDH//wCKAAAEHwYeAiYBvQAAAQYAnjIfABQAsABFWLABLxuxARo+WbEaBvQwMf//AIoAAAOuBdYCJgG+AAABBgBwPyYAEwCwAEVYsAYvG7EGGj5ZsA3cMDEA//8AigAAA64F9gImAb4AAAEGAKBsHwAUALAARViwBi8bsQYaPlmxDwj0MDH//wCKAAADrgXgAiYBvgAAAQcAoQEfAB4AFACwAEVYsAYvG7EGGj5ZsRMC9DAxAAEAiv5PA64EjQAbAHgAsABFWLAWLxuxFho+WbAARViwFC8bsRQQPlmwAEVYsA8vG7EPEj5ZsBQQsBvQsBsvsh8bAV2y3xsBXbIAAQorWCHYG/RZsBQQsgIBCitYIdgb9FmwFBCwBdCwDxCyCgMKK1gh2Bv0WbAWELIZAQorWCHYG/RZMDEBIREhFSMHBhUUMzI3FwYjIiY1NDchESEVIREhA1f97AJrPTpxTjA0DUZaWWeb/coDHv2bAhQCDv6Jly1bVkgaeSxoVoppBI2Z/rIA//8AigAAA64GHgImAb4AAAEGAJ5XHwAUALAARViwBi8bsQYaPlmxEQb0MDH//wBj//AENQYeAiYBwAAAAQYAnXEeABQAsABFWLAKLxuxCho+WbEgBPQwMf//AGP/8AQ1BfYCJgHAAAABBwCgAJwAHwAUALAARViwCi8bsQoaPlmxIAj0MDH//wBj//AENQXgAiYBwAAAAQcAoQFPAB4AFACwAEVYsAovG7EKGj5ZsSUC9DAx//8AY/38BDUEnQImAcAAAAAHAaIBT/6d//8AigAABFgGHgImAcEAAAEHAJ0AkAAeABQAsABFWLAHLxuxBxo+WbEQBPQwMf///5UAAAJYBgoCJgHCAAABBwCk/xoAIgAUALAARViwAy8bsQMaPlmxBwL0MDH///+UAAACXgXWAiYBwgAAAQcAcP8cACYAEwCwAEVYsAIvG7ECGj5ZsAXcMDEA////ygAAAiEF9gImAcIAAAEHAKD/SQAfABQAsABFWLACLxuxAho+WbEHCPQwMf//AAb+TwFmBI0CJgHCAAAABgCj1AD//wCJAAABZAXgAiYBwgAAAQYAofweABQAsABFWLACLxuxAho+WbELAvQwMf//ACv/8AQNBh4CJgHDAAABBwCdAQcAHgAUALAARViwAC8bsQAaPlmxFAT0MDH//wCK/fwEVwSNAiYBxAAAAAcBogEU/p3//wCCAAADiwYcAiYBxQAAAQYAdQceABQAsABFWLAFLxuxBRo+WbEIBvQwMf//AIr9/AOLBI0CJgHFAAAABwGiARD+nf//AIoAAAOLBI4CJgHFAAABBwGiAX4DnwAQALAARViwCi8bsQoaPlkwMf//AIoAAAOLBI0CJgHFAAAABwChAWb9N///AIoAAARYBhwCJgHHAAABBwB1AY8AHgAUALAARViwCC8bsQgaPlmxDAb0MDH//wCK/fwEWASNAiYBxwAAAAcBogFs/p3//wCKAAAEWAYeAiYBxwAAAQcAngCvAB8AFACwAEVYsAYvG7EGGj5ZsQ8G9DAx//8AYP/wBFoF1gImAcgAAAEHAHAAhQAmABMAsABFWLAKLxuxCho+WbAd3DAxAP//AGD/8ARaBfYCJgHIAAABBwCgALIAHwAUALAARViwCi8bsQoaPlmxHwj0MDH//wBg//AEWgYdAiYByAAAAQcApQEHAB4AFwCwAEVYsAovG7EKGj5ZsR4G9LAi0DAxAP//AIoAAAQlBhwCJgHLAAABBwB1AScAHgAUALAARViwBS8bsQUaPlmxGQb0MDH//wCK/fwEJQSNAiYBywAAAAcBogEN/p3//wCKAAAEJQYeAiYBywAAAQYAnkcfABQAsABFWLAELxuxBBo+WbEcBvQwMf//AEP/8APdBhwCJgHMAAABBwB1AT4AHgAUALAARViwCS8bsQkaPlmxKAb0MDH//wBD//AD3QYeAiYBzAAAAQYAnUgeABQAsABFWLAJLxuxCRo+WbEqBPQwMf//AEP+TQPdBJ0CJgHMAAAABwB5AVMAAP//AEP/8APdBh4CJgHMAAABBgCeXh8AFACwAEVYsAkvG7EJGj5ZsSoG9DAx//8AKP38A/0EjQImAc0AAAAHAaIBFP6d//8AKAAAA/0GHgImAc0AAAEGAJ5RHwAUALAARViwBi8bsQYaPlmxDQb0MDH//wAo/k8D/QSNAiYBzQAAAAcAeQE+AAL//wB0//AECgYKAiYBzgAAAQYApGQiABQAsABFWLARLxuxERo+WbEVAvQwMf//AHT/8AQKBdYCJgHOAAABBgBwZiYAEwCwAEVYsAkvG7EJGj5ZsBPcMDEA//8AdP/wBAoF9gImAc4AAAEHAKAAkwAfABQAsABFWLAJLxuxCRo+WbEVCPQwMf//AHT/8AQKBnkCJgHOAAABBwCiAO8AKQAXALAARViwCS8bsQkaPlmxFQb0sB/QMDEA//8AdP/wBBQGHQImAc4AAAEHAKUA6AAeABcAsABFWLARLxuxERo+WbEUBvSwGNAwMQAAAQB0/nQECgSNACAAUwCwAEVYsBgvG7EYGj5ZsABFWLAOLxuxDhI+WbAARViwEy8bsRMQPlmwGBCwINCyBRMgERI5sA4QsgkDCitYIdgb9FmwExCyHAEKK1gh2Bv0WTAxAREUBgcHBhUUMzI3FwYjIiY1NDciJicRMxEUFjMyNjURBAp4bzJsTjA0DUZaWWdazfkEt4+Fg48EjfzzerowKFtSSBp5LGhWaFbOuAMX/PR5gX97AwwA//8AMQAABfEGHgImAdAAAAEHAJ0BOwAeABQAsABFWLADLxuxAxo+WbEXBPQwMf//AA0AAAQcBh4CJgHSAAABBgCdPR4AFACwAEVYsAgvG7EIGj5ZsQ0E9DAx//8ADQAABBwF4wImAdIAAAEGAGptHgAXALAARViwCC8bsQgaPlmxEAL0sBnQMDEA//8ARwAAA+AGHAImAdMAAAEHAHUBMwAeABQAsABFWLAILxuxCBo+WbEMBvQwMf//AEcAAAPgBeACJgHTAAABBwChARsAHgAUALAARViwBy8bsQcaPlmxEQL0MDH//wBHAAAD4AYeAiYB0wAAAQYAnlMfABQAsABFWLAHLxuxBxo+WbEPBvQwMf//ABwAAAUdBj8CJgAlAAAABgCtBAD////wAAAEqgY/ACYAKWQAAAcArf85AAD////+AAAFbAZBACYALGQAAAcArf9HAAL//wAEAAAB2wZAACYALWQAAAcArf9NAAH////6/+wFHQY/ACYAMxQAAAcArf9DAAD///94AAAFHwY/ACYAPWQAAAcArf7BAAD////9AAAE3wY/ACYAuRQAAAcArf9GAAD///+b//QCrQZ0AiYAwgAAAQcArv8q/+wAHQCwAEVYsAwvG7EMGD5ZsRgB9LAP0LAYELAh0DAxAP//ABwAAAUdBbACBgAlAAD//wCpAAAEiAWwAgYAJgAA//8AqQAABEYFsAIGACkAAP//AFYAAAR6BbACBgA+AAD//wCpAAAFCAWwAgYALAAA//8AtwAAAXcFsAIGAC0AAP//AKkAAAUFBbACBgAvAAD//wCpAAAGUgWwAgYAMQAA//8AqQAABQgFsAIGADIAAP//AHb/7AUJBcQCBgAzAAD//wCpAAAEwAWwAgYANAAA//8AMQAABJcFsAIGADgAAP//AA8AAAS7BbACBgA9AAD//wA5AAAEzgWwAgYAPAAA////1gAAAl8HBwImAC0AAAEHAGr/cAFCABcAsABFWLACLxuxAhw+WbELBPSwFNAwMQD//wAPAAAEuwb7AiYAPQAAAQcAagDCATYAFwCwAEVYsAgvG7EIHD5ZsRAE9LAZ0DAxAP//AGT/6wR3BjoCJgC6AAABBwCtAXX/+wAUALAARViwEy8bsRMYPlmxJAH0MDH//wBj/+wD7AY5AiYAvgAAAQcArQEr//oAFACwAEVYsBUvG7EVGD5ZsSgB9DAx//8Akf5hA/AGOgImAMAAAAEHAK0BRv/7ABQAsABFWLADLxuxAxg+WbEVAfQwMf//AMP/9AJLBiUCJgDCAAABBgCtKuYAFACwAEVYsAwvG7EMGD5ZsQ8B9DAx//8Aj//sA/YGdAImAMoAAAEGAK4h7AAdALAARViwAC8bsQAYPlmxHQH0sBXQsB0QsCfQMDEA//8AmgAABD8EOgIGAI0AAP//AFv/7AQ0BE4CBgBTAAD//wCa/mAD7gQ6AgYAdgAA//8AIQAAA7oEOgIGAFoAAP//ACkAAAPKBDoCBgBcAAD////m//QCbwWxAiYAwgAAAQYAaoDsABcAsABFWLAMLxuxDBg+WbEUAfSwHdAwMQD//wCP/+wD9gWxAiYAygAAAQYAanfsABcAsABFWLAALxuxABg+WbEaAfSwI9AwMQD//wBb/+wENAY6AiYAUwAAAQcArQFD//sAFACwAEVYsAQvG7EEGD5ZsR4B9DAx//8Aj//sA/YGJQImAMoAAAEHAK0BIv/mABQAsABFWLAALxuxABg+WbEVAfQwMf//AHr/7AYZBiICJgDNAAABBwCtAlP/4wAUALAARViwAC8bsQAYPlmxJgH0MDH//wCpAAAERgcHAiYAKQAAAQcAagDEAUIAFwCwAEVYsAYvG7EGHD5ZsRME9LAc0DAxAP//ALEAAAQwB0ACJgCwAAABBwB1AZABQgAUALAARViwBC8bsQQcPlmxCAj0MDEAAQBQ/+wEcgXEACYAYbIAJygREjkAsABFWLAGLxuxBhw+WbAARViwGi8bsRoQPlmwBhCwC9CwBhCyDgEKK1gh2Bv0WbImGgYREjmwJhCyFAEKK1gh2Bv0WbAaELAf0LAaELIiAQorWCHYG/RZMDEBJiY1NCQzMhYWFSM0JiMiBhUUFgQWFhUUBCMiJCY1MxQWMzI2NCYCVvfhARPcluuBwaiZjp+XAWvNY/7s55b+/I3Bw6OYopYCiUfPmKzhdMx5hJd9b1l7Znukb7HVc8h/hJl81nUA//8AtwAAAXcFsAIGAC0AAP///9YAAAJfBwcCJgAtAAABBwBq/3ABQgAXALAARViwAi8bsQIcPlmxCwT0sBTQMDEA//8ANf/sA8wFsAIGAC4AAP//ALIAAAUdBbACBgHjAAD//wCpAAAFBQcuAiYALwAAAQcAdQF7ATAAFACwAEVYsAUvG7EFHD5ZsQ4I9DAx//8ATf/rBMsHGgImAN0AAAEHAKAA2gFDABMAsABFWLARLxuxERw+WbAV3DAxAP//ABwAAAUdBbACBgAlAAD//wCpAAAEiAWwAgYAJgAA//8AsQAABDAFsAIGALAAAP//AKkAAARGBbACBgApAAD//wCxAAAE/wcaAiYA2wAAAQcAoAExAUMAEwCwAEVYsAgvG7EIHD5ZsA3cMDEA//8AqQAABlIFsAIGADEAAP//AKkAAAUIBbACBgAsAAD//wB2/+wFCQXEAgYAMwAA//8AsgAABQEFsAIGALUAAP//AKkAAATABbACBgA0AAD//wB3/+wE2AXEAgYAJwAA//8AMQAABJcFsAIGADgAAP//ADkAAATOBbACBgA8AAD//wBt/+wD6gROAgYARQAA//8AXf/sA/METgIGAEkAAP//AJwAAAQBBcQCJgDvAAABBwCgAKL/7QATALAARViwCC8bsQgYPlmwDdwwMQD//wBb/+wENAROAgYAUwAA//8AjP5gBB4ETgIGAFQAAAABAFz/7APsBE4AHQBJshAeHxESOQCwAEVYsBAvG7EQGD5ZsABFWLAILxuxCBA+WbIAAQorWCHYG/RZsAgQsAPQsBAQsBTQsBAQshcBCitYIdgb9FkwMSUyNjczDgIjIgARNTQ2NjMyFhcjJiYjIgYVFRQWAj5jlAivBXbFbt3++3TZlLbxCK8Ij2mNm5qDeFpdqGQBJwEAH572iNquaYfLwCO7ygD//wAW/ksDsAQ6AgYAXQAA//8AKQAAA8oEOgIGAFwAAP//AF3/7APzBcUCJgBJAAABBwBqAI4AAAAXALAARViwCC8bsQgYPlmxJQH0sC7QMDEA//8AmgAAA0cF6gImAOsAAAEHAHUAzf/sABQAsABFWLAELxuxBBg+WbEICfQwMf//AF//7AO7BE4CBgBXAAD//wCNAAABaAXEAgYATQAA////vAAAAkUFxAImAIwAAAEHAGr/Vv//ABcAsABFWLACLxuxAhg+WbELAfSwFNAwMQD///+//ksBWQXEAgYATgAA//8AnAAABD8F6QImAPAAAAEHAHUBO//rABQAsABFWLAELxuxBBg+WbEPCfQwMf//ABb+SwOwBdgCJgBdAAABBgCgUAEAEwCwAEVYsA8vG7EPGD5ZsBPcMDEA//8APQAABu0HNAImADsAAAEHAEQCLAE2ABQAsABFWLADLxuxAxw+WbEUCPQwMf//ACsAAAXTBf4CJgBbAAABBwBEAYsAAAAUALAARViwCy8bsQsYPlmxDgn0MDH//wA9AAAG7Qc0AiYAOwAAAQcAdQK7ATYAFACwAEVYsAQvG7EEHD5ZsRUI9DAx//8AKwAABdMF/gImAFsAAAEHAHUCGgAAABQAsABFWLAMLxuxDBg+WbEPCfQwMf//AD0AAAbtBvsCJgA7AAABBwBqAfUBNgAXALAARViwAy8bsQMcPlmxGgT0sCPQMDEA//8AKwAABdMFxQImAFsAAAEHAGoBVAAAABcAsABFWLALLxuxCxg+WbEUAfSwHdAwMQD//wAPAAAEuwc0AiYAPQAAAQcARAD5ATYAFACwAEVYsAgvG7EIHD5ZsQoI9DAx//8AFv5LA7AF/gImAF0AAAEHAEQAjAAAABQAsABFWLAPLxuxDxg+WbERCfQwMf//AGcEIQD9BgACBgALAAD//wCIBBICIwYAAgYABgAA//8AoP/1A4oFsAAmAAUAAAAHAAUCDwAA////tP5LAj8F2AImAJsAAAEHAJ7/Sf/ZABQAsABFWLANLxuxDRg+WbETAfQwMf//ADAEFgFHBgACBgFtAAD//wCpAAAGUgc0AiYAMQAAAQcAdQKZATYAFACwAEVYsAIvG7ECHD5ZsREI9DAx//8AiwAABngF/gImAFEAAAEHAHUCrQAAABQAsABFWLADLxuxAxg+WbEgCfQwMf//ABz+awUdBbACJgAlAAAABwCmAX8AAP//AG3+awPqBE4CJgBFAAAABwCmAMcAAP//AKkAAARGB0ACJgApAAABBwBEAPsBQgAUALAARViwBi8bsQYcPlmxDQj0MDH//wCxAAAE/wdAAiYA2wAAAQcARAFtAUIAFACwAEVYsAgvG7EIHD5ZsQsI9DAx//8AXf/sA/MF/gImAEkAAAEHAEQAxQAAABQAsABFWLAILxuxCBg+WbEfCfQwMf//AJwAAAQBBeoCJgDvAAABBwBEAN7/7AAUALAARViwCC8bsQgYPlmxCwn0MDH//wBaAAAFIQWwAgYAuAAA//8AX/4oBUMEOgIGAMwAAP//ABYAAATdBugCJgEYAAABBwCrBDkA+gAXALAARViwDy8bsQ8cPlmxEQj0sBXQMDEA////+wAABAsFwQImARkAAAEHAKsD1P/TABcAsABFWLARLxuxERg+WbETCfSwF9AwMQD//wBb/ksIQAROACYAUwAAAAcAXQSQAAD//wB2/ksJMAXEACYAMwAAAAcAXQWAAAD//wBQ/lEEagXEAiYA2gAAAAcBsAGc/7j//wBY/lIDrARNAiYA7gAAAAcBsAFD/7n//wB3/lEE2AXEAiYAJwAAAAcBsAHl/7j//wBc/lED7AROAiYARwAAAAcBsAFS/7j//wAPAAAEuwWwAgYAPQAA//8ALv5gA98EOgIGALwAAP//ALcAAAF3BbACBgAtAAD//wAbAAAHNQcaAiYA2QAAAQcAoAH4AUMAEwCwAEVYsA0vG7ENHD5ZsBncMDEA//8AFQAABgQFxAImAO0AAAEHAKABX//tABMAsABFWLANLxuxDRg+WbAZ3DAxAP//ALcAAAF3BbACBgAtAAD//wAcAAAFHQcOAiYAJQAAAQcAoAD0ATcAEwCwAEVYsAQvG7EEHD5ZsA7cMDEA//8Abf/sA+oF2AImAEUAAAEHAKAAmQABABMAsABFWLAXLxuxFxg+WbAs3DAxAP//ABwAAAUdBvsCJgAlAAABBwBqAPkBNgAUALAARViwBC8bsQQcPlmxEgT0MDH//wBt/+wD6gXFAiYARQAAAQcAagCeAAAAFwCwAEVYsBcvG7EXGD5ZsTAB9LA50DAxAP////IAAAdXBbACBgCBAAD//wBO/+wGfAROAgYAhgAA//8AqQAABEYHGgImACkAAAEHAKAAvwFDABMAsABFWLAGLxuxBhw+WbAP3DAxAP//AF3/7APzBdgCJgBJAAABBwCgAIkAAQATALAARViwCC8bsQgYPlmwIdwwMQD//wBd/+wFEgbZAiYBRQAAAQcAagDTARQAFwCwAEVYsAAvG7EAHD5ZsScE9LAw0DAxAP//AGL/7APpBE8CBgCcAAD//wBi/+wD6QXGAiYAnAAAAQcAagCHAAEAFwCwAEVYsAAvG7EAGD5ZsSQB9LAt0DAxAP//ABsAAAc1BwcCJgDZAAABBwBqAf0BQgAXALAARViwDS8bsQ0cPlmxHQT0sCbQMDEA//8AFQAABgQFsQImAO0AAAEHAGoBZP/sABcAsABFWLANLxuxDRg+WbEdAfSwJtAwMQD//wBQ/+wEagccAiYA2gAAAQcAagC3AVcAFwCwAEVYsAsvG7ELHD5ZsTAE9LA50DAxAP//AFj/7QOsBcUCJgDuAAABBgBqXgAAFwCwAEVYsAovG7EKGD5ZsS4B9LA30DAxAP//ALEAAAT/BvoCJgDbAAABBwBwAQQBSgATALAARViwCC8bsQgcPlmwC9wwMQD//wCcAAAEAQWkAiYA7wAAAQYAcHX0ABMAsABFWLAHLxuxBxg+WbAL3DAxAP//ALEAAAT/BwcCJgDbAAABBwBqATYBQgAXALAARViwCC8bsQgcPlmxEQT0sBrQMDEA//8AnAAABAEFsQImAO8AAAEHAGoAp//sABcAsABFWLAILxuxCBg+WbERAfSwGtAwMQD//wB2/+wFCQb9AiYAMwAAAQcAagEbATgAFwCwAEVYsA0vG7ENHD5ZsScE9LAw0DAxAP//AFv/7AQ0BcUCJgBTAAABBwBqAJgAAAAXALAARViwBC8bsQQYPlmxIwH0sCzQMDEA//8AZ//sBPoFxAIGARYAAP//AFv/7AQ0BE4CBgEXAAD//wBn/+wE+gcCAiYBFgAAAQcAagEOAT0AFwCwAEVYsA0vG7ENHD5ZsScE9LAw0DAxAP//AFv/7AQ0BccCJgEXAAABBwBqAIgAAgAXALAARViwBC8bsQQYPlmxJAH0sC3QMDEA//8Ak//sBPQHHQImAOYAAAEHAGoBDQFYABcAsABFWLATLxuxExw+WbEnBPSwMNAwMQD//wBk/+wD4AXFAiYA/gAAAQYAanwAABcAsABFWLAILxuxCBg+WbEnAfSwMNAwMQD//wBN/+sEywb6AiYA3QAAAQcAcACtAUoAEwCwAEVYsBEvG7ERHD5ZsBPcMDEA//8AFv5LA7AFuAImAF0AAAEGAHAjCAATALAARViwDi8bsQ4YPlmwEdwwMQD//wBN/+sEywcHAiYA3QAAAQcAagDfAUIAFwCwAEVYsBEvG7ERHD5ZsRkE9LAi0DAxAP//ABb+SwOwBcUCJgBdAAABBgBqVQAAFwCwAEVYsA8vG7EPGD5ZsRcB9LAg0DAxAP//AE3/6wTLB0ECJgDdAAABBwClAS8BQgAXALAARViwAS8bsQEcPlmxFAj0sBjQMDEA//8AFv5LA9EF/wImAF0AAAEHAKUApQAAABcAsABFWLAPLxuxDxg+WbEWCfSwEtAwMQD//wCWAAAEyAcHAiYA4AAAAQcAagEJAUIAFwCwAEVYsAsvG7ELHD5ZsRoE9LAj0DAxAP//AGcAAAO9BbECJgD4AAABBgBqZOwAFwCwAEVYsAkvG7EJGD5ZsRgB9LAh0DAxAP//ALIAAAYwBwcAJgDlDwAAJwAtBLkAAAEHAGoB0wFCABcAsABFWLAKLxuxChw+WbEfBPSwKNAwMQD//wCdAAAFfwWxACYA/QAAACcAjAQqAAABBwBqAW3/7AAXALAARViwCi8bsQoYPlmxHwH0sCjQMDEA//8AOf5LBQ4FsAImADwAAAAHAa8DpwAA//8AKf5LBBwEOgImAFwAAAAHAa8CtQAA//8AX//sA/AGAAIGAEgAAP//AC/+SwWsBbACJgDcAAAABwGvBEUAAP//ACz+SwS7BDoCJgDxAAAABwGvA1QAAP//ABz+ogUdBbACJgAlAAAABwCsBQIAAP//AG3+ogPqBE4CJgBFAAAABwCsBEoAAP//ABwAAAUdB7oCJgAlAAABBwCqBO4BRgAUALAARViwBC8bsQQcPlmxCwj0MDH//wBt/+wD6gaEAiYARQAAAQcAqgSTABAAFACwAEVYsBcvG7EXGD5ZsSkB9DAx//8AHAAABR0HwwImACUAAAEHAbcAwwEuABcAsABFWLAFLxuxBRw+WbEODPSwFNAwMQD//wBt/+wEwAaOAiYARQAAAQYBt2j5ABcAsABFWLAXLxuxFxg+WbEsCPSwMtAwMQD//wAcAAAFHQe/AiYAJQAAAQcBtgDHAT0AFwCwAEVYsAQvG7EEHD5ZsQ4M9LAT0DAxAP///8r/7APqBokCJgBFAAABBgG2bAcAFwCwAEVYsBcvG7EXGD5ZsSwI9LAx0DAxAP//ABwAAAUdB+oCJgAlAAABBwG1AMgBGwAXALAARViwBS8bsQUcPlmxDAz0sCDQMDEA//8Abf/sBFkGtQImAEUAAAEGAbVt5gAXALAARViwFy8bsRcYPlmxKgj0sDDQMDEA//8AHAAABR0H2gImACUAAAEHAbQAxwEGABcAsABFWLAFLxuxBRw+WbEMDPSwFdAwMQD//wBt/+wD6galAiYARQAAAQYBtGzRABcAsABFWLAXLxuxFxg+WbEqCPSwM9AwMQD//wAc/qIFHQc2AiYAJQAAACcAnQDJATYBBwCsBQIAAAAUALAARViwBC8bsQQcPlmxDwb0MDH//wBt/qID6gYAAiYARQAAACYAnW4AAQcArARKAAAAFACwAEVYsBcvG7EXGD5ZsS0B9DAx//8AHAAABR0HtwImACUAAAEHAbMA6gEtABcAsABFWLAELxuxBBw+WbEOB/SwG9AwMQD//wBt/+wD6gaCAiYARQAAAQcBswCP//gAFwCwAEVYsBcvG7EXGD5ZsSwE9LA50DAxAP//ABwAAAUdB7cCJgAlAAABBwG4AOoBLQAXALAARViwBC8bsQQcPlmxDgf0sBzQMDEA//8Abf/sA+oGggImAEUAAAEHAbgAj//4ABcAsABFWLAXLxuxFxg+WbEsBPSwOtAwMQD//wAcAAAFHQhAAiYAJQAAAQcBsgDuAT0AFwCwAEVYsAQvG7EEHD5ZsQ4H9LAn0DAxAP//AG3/7APqBwoCJgBFAAABBwGyAJMABwAXALAARViwFy8bsRcYPlmxLAT0sEXQMDEA//8AHAAABR0IFQImACUAAAEHAbEA7gFFABcAsABFWLAELxuxBBw+WbEOB/SwHNAwMQD//wBt/+wD6gbfAiYARQAAAQcBsQCTAA8AFwCwAEVYsBcvG7EXGD5ZsSwE9LA60DAxAP//ABz+ogUdBw4CJgAlAAAAJwCgAPQBNwEHAKwFAgAAABMAsABFWLAELxuxBBw+WbAO3DAxAP//AG3+ogPqBdgCJgBFAAAAJwCgAJkAAQEHAKwESgAAABMAsABFWLAXLxuxFxg+WbAs3DAxAP//AKn+ogRGBbACJgApAAAABwCsBMAAAP//AF3+ogPzBE4CJgBJAAAABwCsBIwAAP//AKkAAARGB8YCJgApAAABBwCqBLkBUgAUALAARViwBi8bsQYcPlmxDAj0MDH//wBd/+wD8waEAiYASQAAAQcAqgSDABAAFACwAEVYsAgvG7EIGD5ZsR4B9DAx//8AqQAABEYHLgImACkAAAEHAKQAkAFGABQAsABFWLAGLxuxBhw+WbEPBPQwMf//AF3/7APzBewCJgBJAAABBgCkWgQAFACwAEVYsAgvG7EIGD5ZsSEB9DAx//8AqQAABOYHzwImACkAAAEHAbcAjgE6ABcAsABFWLAHLxuxBxw+WbEPDPSwFdAwMQD//wBd/+wEsAaOAiYASQAAAQYBt1j5ABcAsABFWLAILxuxCBg+WbEhCPSwJ9AwMQD////wAAAERgfLAiYAKQAAAQcBtgCSAUkAFwCwAEVYsAYvG7EGHD5ZsQ8M9LAU0DAxAP///7r/7APzBokCJgBJAAABBgG2XAcAFwCwAEVYsAgvG7EIGD5ZsSEI9LAm0DAxAP//AKkAAAR/B/YCJgApAAABBwG1AJMBJwAXALAARViwBi8bsQYcPlmxDwz0sBPQMDEA//8AXf/sBEkGtQImAEkAAAEGAbVd5gAXALAARViwCC8bsQgYPlmxHwj0sCXQMDEA//8AqQAABEYH5gImACkAAAEHAbQAkgESABcAsABFWLAGLxuxBhw+WbEPDPSwFtAwMQD//wBd/+wD8walAiYASQAAAQYBtFzRABcAsABFWLAILxuxCBg+WbEhCPSwKNAwMQD//wCp/qIERgdCAiYAKQAAACcAnQCUAUIBBwCsBMAAAAAUALAARViwBi8bsQYcPlmxEAb0MDH//wBd/qID8wYAAiYASQAAACYAnV4AAQcArASMAAAAFACwAEVYsAgvG7EIGD5ZsSAB9DAx//8AtwAAAfgHxgImAC0AAAEHAKoDZAFSABQAsABFWLACLxuxAhw+WbEECPQwMf//AJsAAAHeBoICJgCMAAABBwCqA0oADgAUALAARViwAi8bsQIYPlmxBAH0MDH//wCj/qIBfgWwAiYALQAAAAcArANrAAD//wCF/qIBaAXEAiYATQAAAAcArANNAAD//wB2/qIFCQXEAiYAMwAAAAcArAUYAAD//wBb/qIENAROAiYAUwAAAAcArASdAAD//wB2/+wFCQe8AiYAMwAAAQcAqgUQAUgAFACwAEVYsA0vG7ENHD5ZsS4I9DAx//8AW//sBDQGhAImAFMAAAEHAKoEjQAQABQAsABFWLAELxuxBBg+WbEqAfQwMf//AHb/7AU9B8UCJgAzAAABBwG3AOUBMAAXALAARViwDS8bsQ0cPlmxIwz0sCnQMDEA//8AW//sBLoGjgImAFMAAAEGAbdi+QAXALAARViwBC8bsQQYPlmxHwj0sCXQMDEA//8AR//sBQkHwQImADMAAAEHAbYA6QE/ABcAsABFWLANLxuxDRw+WbEhDPSwKNAwMQD////E/+wENAaJAiYAUwAAAQYBtmYHABcAsABFWLAELxuxBBg+WbEdCPSwJNAwMQD//wB2/+wFCQfsAiYAMwAAAQcBtQDqAR0AFwCwAEVYsA0vG7ENHD5ZsSEM9LAn0DAxAP//AFv/7ARTBrUCJgBTAAABBgG1Z+YAFwCwAEVYsAQvG7EEGD5ZsR0I9LAj0DAxAP//AHb/7AUJB9wCJgAzAAABBwG0AOkBCAAXALAARViwDS8bsQ0cPlmxIQz0sCrQMDEA//8AW//sBDQGpQImAFMAAAEGAbRm0QAXALAARViwBC8bsQQYPlmxHQj0sCbQMDEA//8Adv6iBQkHOAImADMAAAAnAJ0A6wE4AQcArAUYAAAAFACwAEVYsA0vG7ENHD5ZsSIG9DAx//8AW/6iBDQGAAImAFMAAAAmAJ1oAAEHAKwEnQAAABQAsABFWLAELxuxBBg+WbEeAfQwMf//AGX/7AWdBy8CJgCXAAABBwB1Ad0BMQAUALAARViwDS8bsQ0cPlmxKAj0MDH//wBb/+wEugX+AiYAmAAAAQcAdQFlAAAAFACwAEVYsAQvG7EEGD5ZsSYJ9DAx//8AZf/sBZ0HLwImAJcAAAEHAEQBTgExABQAsABFWLANLxuxDRw+WbEnCPQwMf//AFv/7AS6Bf4CJgCYAAABBwBEANYAAAAUALAARViwBC8bsQQYPlmxJQn0MDH//wBl/+wFnQe1AiYAlwAAAQcAqgUMAUEAFACwAEVYsA0vG7ENHD5ZsTQI9DAx//8AW//sBLoGhAImAJgAAAEHAKoElAAQABQAsABFWLAELxuxBBg+WbEyAfQwMf//AGX/7AWdBx0CJgCXAAABBwCkAOMBNQAUALAARViwDS8bsQ0cPlmxKQT0MDH//wBb/+wEugXsAiYAmAAAAQYApGsEABQAsABFWLAELxuxBBg+WbEnAfQwMf//AGX+ogWdBjcCJgCXAAAABwCsBQkAAP//AFv+ogS6BLACJgCYAAAABwCsBJsAAP//AIz+ogSqBbACJgA5AAAABwCsBO4AAP//AIj+ogPcBDoCJgBZAAAABwCsBFEAAP//AIz/7ASqB7oCJgA5AAABBwCqBOkBRgAUALAARViwCi8bsQocPlmxEwj0MDH//wCI/+wD3AaEAiYAWQAAAQcAqgSFABAAFACwAEVYsAcvG7EHGD5ZsREB9DAx//8AjP/sBh0HQAImAJkAAAEHAHUB1AFCABQAsABFWLAaLxuxGhw+WbEdCPQwMf//AIj/7AUPBeoCJgCaAAABBwB1AWP/7AAUALAARViwEy8bsRMYPlmxHAn0MDH//wCM/+wGHQdAAiYAmQAAAQcARAFFAUIAFACwAEVYsBIvG7ESHD5ZsRwI9DAx//8AiP/sBQ8F6gImAJoAAAEHAEQA1P/sABQAsABFWLANLxuxDRg+WbEbCfQwMf//AIz/7AYdB8YCJgCZAAABBwCqBQMBUgAUALAARViwGi8bsRocPlmxKQj0MDH//wCI/+wFDwZwAiYAmgAAAQcAqgSS//wAFACwAEVYsBMvG7ETGD5ZsSgB9DAx//8AjP/sBh0HLgImAJkAAAEHAKQA2gFGABQAsABFWLASLxuxEhw+WbEeBPQwMf//AIj/7AUPBdgCJgCaAAABBgCkafAAFACwAEVYsBMvG7ETGD5ZsR0B9DAx//8AjP6iBh0GAgImAJkAAAAHAKwFCQAA//8AiP6iBQ8EkAImAJoAAAAHAKwEVwAA//8AD/6iBLsFsAImAD0AAAAHAKwEuwAA//8AFv4FA7AEOgImAF0AAAAHAKwFHP9j//8ADwAABLsHugImAD0AAAEHAKoEtwFGABQAsABFWLAILxuxCBw+WbEJCPQwMf//ABb+SwOwBoQCJgBdAAABBwCqBEoAEAAUALAARViwDy8bsQ8YPlmxEAH0MDH//wAPAAAEuwciAiYAPQAAAQcApACOAToAFACwAEVYsAEvG7EBHD5ZsQwE9DAx//8AFv5LA7AF7AImAF0AAAEGAKQhBAAUALAARViwAS8bsQEYPlmxEwH0MDEAAgBf/+wErAYAABcAIgB/ALAUL7AARViwDS8bsQ0YPlmwAEVYsAMvG7EDED5ZsABFWLAGLxuxBhA+WbIPFAFdsi8UAV2yEwMUERI5sBMvshABCitYIdgb9FmwAdCyBAYNERI5sg8NBhESObATELAW0LAGELIbAQorWCHYG/RZsA0QsiABCitYIdgb9FkwMQEjESMnBiMiAjU1NBIzMhcRITUhNTMVMwEUFjMyNxEmIyIGBKy8qglvxrzt7L++b/75AQe5vPxsmIawUVOsiJgE0vsudIgBNPgO+QEvggEGl5eX/Ki40J4B8ZnSAP//AF/+zQSsBgAAJgBIAAAAJwHeAaECRwEHAEMAn/9kAAgAsi8eAV0wMf//ALL+mAVEBbACJgHjAAAABwGwBCP/////AJz+mQSBBDoCJgDwAAAABwGwA2AAAP//AKn+mQWpBbACJgAsAAAABwGwBIgAAP//AJz+mQSiBDoCJgDzAAAABwGwA4EAAP//ADH+mQSXBbACJgA4AAAABwGwAj8AAP//ACj+mQOwBDoCJgD1AAAABwGwAcYAAP//ADn+mQT4BbACJgA8AAAABwGwA9cAAP//ACn+mQQGBDoCJgBcAAAABwGwAuUAAP//AJb+mQVmBbACJgDgAAAABwGwBEUAAP//AGf+mQReBDsCJgD4AAAABwGwAz0AAP//AJb+mQTIBbACJgDgAAAABwGwAv4AAP//AGf+mQO9BDsCJgD4AAAABwGwAfUAAP//ALH+mQQwBbACJgCwAAAABwGwAO8AAP//AJr+mQNHBDoCJgDrAAAABwGwANUAAP//ABv+mQeCBbACJgDZAAAABwGwBmEAAP//ABX+mQY9BDoCJgDtAAAABwGwBRwAAP//AD/+VQW9BcMCJgE/AAAABwGwAwb/vP///97+WQRjBE4CJgFAAAAABwGwAgH/wP//AIwAAAPfBgACBgBMAAAAAv/UAAAEsQWwABIAGwBhALAARViwDy8bsQ8cPlmwAEVYsAovG7EKED5ZsgIKDxESObACL7IODwIREjmwDi+yCwEKK1gh2Bv0WbAB0LAOELAR0LACELITAQorWCHYG/RZsAoQshQBCitYIdgb9FkwMQEjFSEWBBUUBAchESM1MzUzFTMDESEyNjU0JicCUO0BauQBAP7+3/3Tz8/A7e0BX4+fmY0EUPID5MTF6gQEUJfJyf3Z/d2YgHuOAgAC/9QAAASxBbAAEgAbAGEAsABFWLAQLxuxEBw+WbAARViwCi8bsQoQPlmyAgoQERI5sAIvshECEBESObARL7IBAQorWCHYG/RZsAvQsBEQsA7QsAIQshMBCitYIdgb9FmwChCyFAEKK1gh2Bv0WTAxASMVIRYEFRQEByERIzUzNTMVMwMRITI2NTQmJwJQ7QFq5AEA/v7f/dPPz8Dt7QFfj5+ZjQRQ8gPkxMXqBARQl8nJ/dn93ZiAe44CAAEAAwAABDAFsAANAE4AsABFWLAILxuxCBw+WbAARViwAi8bsQIQPlmyDQgCERI5sA0vsnoNAV2yAAEKK1gh2Bv0WbAE0LANELAG0LAIELIKAQorWCHYG/RZMDEBIREjESM1MxEhFSERIQJ//vPBrq4Df/1CAQ0CrP1UAqyXAm2e/jEAAAH//AAAA0cEOgANAEkAsABFWLAILxuxCBg+WbAARViwAi8bsQIQPlmyDQgCERI5sA0vsgABCitYIdgb9FmwBNCwDRCwBtCwCBCyCgEKK1gh2Bv0WTAxASERIxEjNTMRIRUhESECeP7cup6eAq3+DQEkAd/+IQHflwHEmf7VAAEACwAABTEFsAAUAH4AsABFWLAILxuxCBw+WbAARViwEC8bsRAcPlmwAEVYsAIvG7ECED5ZsABFWLATLxuxExA+WbIOCAIREjmwDi+yLw4BXbLPDgFdsgEBCitYIdgb9FmyBwgCERI5sAcvsgQBCitYIdgb9FmwBxCwCtCwBBCwDNCyEgEOERI5MDEBIxEjESM1MzUzFSEVIREzATMBASMCN7HAu7vAAQH+/5YB/e/91AJV6wKO/XIEN5fi4pf+9wKC/T79EgAAAf/TAAAEKAYAABQAdACwAEVYsAgvG7EIHj5ZsABFWLAQLxuxEBg+WbAARViwAi8bsQIQPlmwAEVYsBMvG7ETED5Zsg4QAhESObAOL7IBAQorWCHYG/RZsgcIEBESObAHL7IEAQorWCHYG/RZsAcQsArQsAQQsAzQshIBDhESOTAxASMRIxEjNTM1MxUzFSMRMwEzAQEjAeCAutPTuu/vfgE72/6GAa7bAfX+CwTBl6iol/3NAaz+E/2zAP//ALH+mwWyBxoCJgDbAAAAJwCgATEBQwEHABAEfv+9ABMAsABFWLAILxuxCBw+WbAN3DAxAP//AJz+mwS1BcQCJgDvAAAAJwCgAKL/7QEHABADgf+9ABMAsABFWLAILxuxCBg+WbAN3DAxAP//AKn+mwW7BbACJgAsAAAABwAQBIf/vf//AJz+mwS0BDoCJgDzAAAABwAQA4D/vf//AKn+mwb4BbACJgAxAAAABwAQBcT/vf//AJ3+mwYGBDoCJgDyAAAABwAQBNL/vf//AC/+mwWoBbACJgDcAAAABwAQBHT/vf//ACz+mwS3BDoCJgDxAAAABwAQA4P/vQABAA8AAAS7BbAADgBWsgoPEBESOQCwAEVYsAgvG7EIHD5ZsABFWLALLxuxCxw+WbAARViwAi8bsQIQPlmyBggCERI5sAYvsgUBCitYIdgb9FmwANCyCggCERI5sAYQsA7QMDEBIxEjESM1MwEzAQEzATMDpuHA25T+UdwBegF82v5RmgIJ/fcCCZcDEP0lAtv88AAAAQAu/mAD3wQ6AA4AY7IKDxAREjkAsABFWLAILxuxCBg+WbAARViwCy8bsQsYPlmwAEVYsAIvG7ECEj5ZsABFWLAALxuxABA+WbAARViwBC8bsQQQPlmyBgEKK1gh2Bv0WbIKCwAREjmwDdCwDtAwMQUjESMRIzUzATMBATMBMwNK5rrcv/6hvQEfARi9/qPIC/5rAZWXA6782gMm/FIAAAEAOQAABM4FsAARAGMAsABFWLALLxuxCxw+WbAARViwDi8bsQ4cPlmwAEVYsAIvG7ECED5ZsABFWLAFLxuxBRA+WbIRCwIREjmwES+yAAEKK1gh2Bv0WbIECwIREjmwB9CwERCwCdCyDQsCERI5MDEBIwEjAQEjASM1MwEzAQEzATMDxKQBruT+mv6Y4wGvoJH+a+EBXwFd4v5rlgKe/WICOP3IAp6XAnv90gIu/YUAAQApAAADygQ6ABEAYwCwAEVYsAsvG7ELGD5ZsABFWLAOLxuxDhg+WbAARViwAi8bsQIQPlmwAEVYsAUvG7EFED5ZshEOAhESObARL7IAAQorWCHYG/RZsgQOAhESObAH0LARELAJ0LINDgIREjkwMQEjASMDAyMBIzUzATMTEzMBMwM8swFB1vr61wFBqp7+1tbt8Nj+1qcB4f4fAZX+awHhlwHC/nUBi/4+//8AY//sA+wETQIGAL4AAP//ABIAAAQvBbACJgAqAAAABwHe/4P+f///AJACiwXJAyIARgGXhABmZkAA//8AXQAABDMFxAIGABYAAP//AF7/7AP5BcQCBgAXAAD//wA1AAAEUAWwAgYAGAAA//8Amv/sBC0FsAIGABkAAP//AGT//wP4BcQABgAdAAD//wCH/+wEHgXEAAYAFBQA//8Aev/sBNwHVQImACsAAAEHAHUBvgFXABQAsABFWLALLxuxCxw+WbEiCPQwMf//AGD+VgPyBf4CJgBLAAABBwB1AUsAAAAUALAARViwAy8bsQMYPlmxJwn0MDH//wCpAAAFCAc0AiYAMgAAAQcARAFmATYAFACwAEVYsAYvG7EGHD5ZsQsI9DAx//8AjAAAA98F/gImAFIAAAEHAEQAzAAAABQAsABFWLADLxuxAxg+WbETCfQwMf//ABwAAAUdByACJgAlAAABBwCrBG0BMgAXALAARViwBC8bsQQcPlmxDAj0sBDQMDEA//8AOf/sA+oF6wImAEUAAAEHAKsEEv/9ABcAsABFWLAXLxuxFxg+WbEqCfSwLtAwMQD//wBfAAAERgcsAiYAKQAAAQcAqwQ4AT4AFwCwAEVYsAYvG7EGHD5ZsQ0I9LAR0DAxAP//ACn/7APzBesCJgBJAAABBwCrBAL//QAXALAARViwCC8bsQgYPlmxHwn0sCPQMDEA////CgAAAeoHLAImAC0AAAEHAKsC4wE+ABcAsABFWLACLxuxAhw+WbEFCPSwCdAwMQD///7wAAAB0AXpAiYAjAAAAQcAqwLJ//sAFwCwAEVYsAIvG7ECGD5ZsQUJ9LAJ0DAxAP//AHb/7AUJByICJgAzAAABBwCrBI8BNAAXALAARViwDS8bsQ0cPlmxIQj0sCXQMDEA//8AM//sBDQF6wImAFMAAAEHAKsEDP/9ABcAsABFWLAELxuxBBg+WbEdCfSwIdAwMQD//wBVAAAEyQcgAiYANgAAAQcAqwQuATIAFwCwAEVYsAQvG7EEHD5ZsRkI9LAd0DAxAP///4sAAAKXBesCJgBWAAABBwCrA2T//QAXALAARViwCy8bsQsYPlmxDwn0sBPQMDEA//8AjP/sBKoHIAImADkAAAEHAKsEaAEyABcAsABFWLAJLxuxCRw+WbEUCPSwGNAwMQD//wAr/+wD3AXrAiYAWQAAAQcAqwQE//0AFwCwAEVYsAcvG7EHGD5ZsRIJ9LAW0DAxAP///zoAAATSBj8AJgDPZAAABwCt/oMAAP//AKn+ogSIBbACJgAmAAAABwCsBLoAAP//AIz+ogQgBgACJgBGAAAABwCsBKsAAP//AKn+ogTGBbACJgAoAAAABwCsBLkAAP//AF/+ogPwBgACJgBIAAAABwCsBL0AAP//AKn9/wTGBbACJgAoAAAABwGiAWX+oP//AF/9/wPwBgACJgBIAAAABwGiAWn+oP//AKn+ogUIBbACJgAsAAAABwCsBR8AAP//AIz+ogPfBgACJgBMAAAABwCsBKEAAP//AKkAAAUFBy4CJgAvAAABBwB1AXsBMAAUALAARViwBS8bsQUcPlmxDgj0MDH//wCNAAAEDAc/AiYATwAAAQcAdQFEAUEACQCwBS+wD9wwMQD//wCp/qIFBQWwAiYALwAAAAcArAToAAD//wCN/qIEDAYAAiYATwAAAAcArARlAAD//wCp/qIEHAWwAiYAMAAAAAcArATAAAD//wCG/qIBYQYAAiYAUAAAAAcArANOAAD//wCp/qIGUgWwAiYAMQAAAAcArAXSAAD//wCL/qIGeAROAiYAUQAAAAcArAXWAAD//wCp/qIFCAWwAiYAMgAAAAcArAUkAAD//wCM/qID3wROAiYAUgAAAAcArASHAAD//wCpAAAEwAdAAiYANAAAAQcAdQF8AUIAFACwAEVYsAMvG7EDHD5ZsRYI9DAx//8AjP5gBB4F9QImAFQAAAEHAHUBk//3ABQAsABFWLAMLxuxDBg+WbEdCfQwMf//AKj+ogTJBbACJgA2AAAABwCsBLcAAP//AIL+ogKXBE4CJgBWAAAABwCsA0oAAP//AFD+ogRyBcQCJgA3AAAABwCsBMkAAP//AF/+ogO7BE4CJgBXAAAABwCsBIcAAP//ADH+ogSXBbACJgA4AAAABwCsBLoAAP//AAn+ogJWBUACJgBYAAAABwCsBBkAAP//ABwAAAT9By4CJgA6AAABBwCkALQBRgAUALAARViwBi8bsQYcPlmxCgT0MDH//wAhAAADugXjAiYAWgAAAQYApB37ABQAsABFWLABLxuxARg+WbEKAfQwMf//ABz+ogT9BbACJgA6AAAABwCsBOQAAP//ACH+ogO6BDoCJgBaAAAABwCsBE0AAP//AD3+ogbtBbACJgA7AAAABwCsBe8AAP//ACv+ogXTBDoCJgBbAAAABwCsBVMAAP//AFb+ogR6BbACJgA+AAAABwCsBLoAAP//AFj+ogOzBDoCJgBeAAAABwCsBGIAAP///nj/7AVPBdYAJgAzRgAABwFa/gkAAP//ABMAAARwBRwCJgG6AAAABwCt/9z+3f///58AAAPqBR8AJgG+PAAABwCt/uj+4P///7wAAASUBRwAJgHBPAAABwCt/wX+3f///8AAAAGNBR4AJgHCPAAABwCt/wn+3////9//8ARkBRwAJgHICgAABwCt/yj+3f///1cAAARYBRwAJgHSPAAABwCt/qD+3f////gAAASIBRsAJgHzCgAABwCt/0H+3P//ABMAAARwBI0CBgG6AAD//wCKAAAD7wSNAgYBuwAA//8AigAAA64EjQIGAb4AAP//AEcAAAPgBI0CBgHTAAD//wCKAAAEWASNAgYBwQAA//8AlwAAAVEEjQIGAcIAAP//AIoAAARXBI0CBgHEAAD//wCKAAAFdwSNAgYBxgAA//8AYP/wBFoEnQIGAcgAAP//AIoAAAQbBI0CBgHJAAD//wAoAAAD/QSNAgYBzQAA//8ADQAABBwEjQIGAdIAAP//ACYAAAQxBI0CBgHRAAD///+0AAACPQXjAiYBwgAAAQcAav9OAB4AFwCwAEVYsAIvG7ECGj5ZsQsC9LAU0DAxAP//AA0AAAQcBeMCJgHSAAABBgBqbR4AFwCwAEVYsAgvG7EIGj5ZsRAC9LAZ0DAxAP//AIoAAAOuBeMCJgG+AAABBgBqcR4AFwCwAEVYsAYvG7EGGj5ZsRMC9LAc0DAxAP//AIoAAAOFBhwCJgHqAAABBwB1ATQAHgAUALAARViwBC8bsQQaPlmxCAb0MDH//wBD//AD3QSdAgYBzAAA//8AlwAAAVEEjQIGAcIAAP///7QAAAI9BeMCJgHCAAABBwBq/04AHgAXALAARViwAi8bsQIaPlmxCwL0sBTQMDEA//8AK//wA00EjQIGAcMAAP//AIoAAARXBhwCJgHEAAABBwB1ASUAHgAUALAARViwBS8bsQUaPlmxDwb0MDH//wAi/+wECwX2AiYCAQAAAQYAoGcfABQAsABFWLACLxuxAho+WbEUCPQwMf//ABMAAARwBI0CBgG6AAD//wCKAAAD7wSNAgYBuwAA//8AigAAA4UEjQIGAeoAAP//AIoAAAOuBI0CBgG+AAD//wCKAAAEYQX2AiYB/gAAAQcAoADJAB8AFACwAEVYsAgvG7EIGj5ZsQ0I9DAx//8AigAABXcEjQIGAcYAAP//AIoAAARYBI0CBgHBAAD//wBg//AEWgSdAgYByAAA//8AigAABEQEjQIGAe8AAP//AIoAAAQbBI0CBgHJAAD//wBg//AEMASdAgYBvAAA//8AKAAAA/0EjQIGAc0AAP//ACYAAAQxBI0CBgHRAAAAAQBH/lAD1ASdACkAmgCwAEVYsAovG7EKGj5ZsABFWLAZLxuxGRA+WbAARViwGC8bsRgSPlmwChCyAwEKK1gh2Bv0WbIGChkREjmyJxkKERI5fLAnLxiy8CcBXbIAJwFxsqAnAV20YCdwJwJdsjAnAXG0YCdwJwJxsiYBCitYIdgb9FmyECYnERI5sBkQsBbQsh0ZChESObAZELIgAQorWCHYG/RZMDEBNCYjIgYVIzQ2MzIWFRQGBxYWFRQGBxEjESYmNTMWFjMyNjU0JSM1MzYDCIp9boG67bzT7m5ndnHLr7qjtrkFg3mIkv7/nZzvA1BUXVhPjrWollaNKSSSW4yvEv5bAacUrYhWYGBYwQWYBQAAAQCK/pkE+gSNAA8AXQCwAS+wAEVYsAkvG7EJGj5ZsABFWLADLxuxAxA+WbAARViwBi8bsQYQPlmyCwMJERI5fLALLxiyoAsBXbIEAQorWCHYG/RZsAkQsAzQsAMQsg4BCitYIdgb9FkwMQEjESMRIREjETMRIREzETME+rqh/aS5uQJcuaL+mQFnAfL+DgSN/f0CA/wMAAABAGD+VgQwBJ0AHwBYALAARViwDi8bsQ4aPlmwAEVYsAMvG7EDED5ZsABFWLAFLxuxBRI+WbADELAG0LAOELAS0LAOELIVAQorWCHYG/RZsAMQshwBCitYIdgb9FmwAxCwH9AwMQEGBgcRIxEmAjU1NDY2MzIWFyMmJiMiBgcVFBYzMjY3BDAUy6m6t9d755jM9xO5Eo1+macBn5eHjRQBeajHFP5gAaIeAR7jYaT5iNO7gnTLvWq9z2+D//8ADQAABBwEjQIGAdIAAP//AAL+UQVrBJ0CJgIXAAAABwGwArz/uP//AIoAAARhBdYCJgH+AAABBwBwAJwAJgATALAARViwCC8bsQgaPlmwC9wwMQD//wAi/+wECwXWAiYCAQAAAQYAcDomABMAsABFWLARLxuxERo+WbAT3DAxAP//AGAAAAUGBI0CBgHxAAD//wAc/k8FHQWwAiYAJQAAAAcAowF8AAD//wBt/k8D6gROAiYARQAAAAcAowDEAAD//wCp/lkERgWwAiYAKQAAAAcAowE6AAr//wBd/k8D8wROAiYASQAAAAcAowEGAAAAAAAAAA0AogADAAEECQAAAF4AAAADAAEECQABAAwAXgADAAEECQACAA4AagADAAEECQADAAwAXgADAAEECQAEAAwAXgADAAEECQAFACwAeAADAAEECQAGABwApAADAAEECQAHAEAAwAADAAEECQAJAAwBAAADAAEECQALABQBDAADAAEECQAMACYBIAADAAEECQANAFwBRgADAAEECQAOAFQBogBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADEAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AUgBvAGIAbwB0AG8AUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMgAuADAAMAAxADEAMAAxADsAIAAyADAAMQA0AFIAbwBiAG8AdABvAC0AUgBlAGcAdQBsAGEAcgBSAG8AYgBvAHQAbwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlAC4ARwBvAG8AZwBsAGUARwBvAG8AZwBsAGUALgBjAG8AbQBDAGgAcgBpAHMAdABpAGEAbgAgAFIAbwBiAGUAcgB0AHMAbwBuAEwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAQQBwAGEAYwBoAGUAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMgAuADAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcABhAGMAaABlAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBMAEkAQwBFAE4AUwBFAC0AMgAuADAAAwAAAAAAAP9qAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIACAAC//8ADwABAAAADAAAAAAAAAACAF4AJQA+AAEARQBeAAEAeQB5AAMAgQCBAAEAgwCDAAEAhgCGAAEAiQCJAAEAiwCVAAEAlwCcAAEAowCjAAMApwCsAAMAsACwAAEAuQC6AAEAvgC+AAEAwADAAAEAwgDCAAEAxgDGAAEAygDKAAEAzADNAAEAzwDQAAEA0gDSAAEA2QDdAAEA4ADgAAEA5ADkAAEA5gDoAAEA6gD6AAEA/AD8AAEA/gEAAAEBAgECAAEBBwEIAAEBFQEZAAEBGwEbAAEBHwEhAAEBIwEkAAMBOAE5AAEBPgFAAAEBRQFFAAEBTQFNAAEBTwFPAAEBUwFTAAEBVQFXAAEBWQFZAAEBogGiAAMBowGpAAIBugHTAAEB4gHiAAEB5AHkAAEB6gHqAAEB8wHzAAEB9QH1AAEB/AH+AAECAAIBAAECAwIDAAECBwIHAAECCQILAAECEQIRAAECFgIYAAECGgIaAAECPgJDAAECRwKvAAECsgNYAAEDWwNqAAEDcQNxAAEDcwN3AAEDegN/AAEDgQOEAAEDhgOKAAEDjAOnAAEDqwOrAAEDrQO0AAEDtgO4AAEDvQO/AAEDwQPNAAEDzwPZAAED3APsAAED7wRIAAEESwRLAAEETQRNAAEETwRQAAEEWwRbAAEEYgRkAAEEZgRmAAEEagRqAAEEbARtAAEEbwRvAAEEdwSGAAEEhwSHAAIEiASwAAEEsgTKAAEEzATQAAEE0gTVAAEE1wTZAAEE2wTcAAEE3gThAAEAAQAAAAoAXACaAARERkxUABpjeXJsAChncmVrADZsYXRuAEQABAAAAAD//wACAAAABAAEAAAAAP//AAIAAQAFAAQAAAAA//8AAgACAAYABAAAAAD//wACAAMABwAIY3BzcAAyY3BzcAAyY3BzcAAyY3BzcAAya2VybgA4a2VybgA4a2VybgA4a2VybgA4AAAAAQAAAAAAAQABAAIABgHYAAEAAAABAAgAAQAKAAUAJABIAAEA3gAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAkgCwALEAsgCzALQAtQC2ALcAuAC5ANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoASwBMAEyATgBOgE8AT4BPwFFAUYBfwGFAYoBjQJHAkgCSgJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgKDAoUChwKJAosCjQKPApECkwKVApcCmQKbAp0CnwKhAqMCpQKnAqkCqwKtAq8CsgK0ArYCuAK6ArwCvgLAAsICxQLHAskCywLNAs8C0QLTAtUC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8QLyAvQC9gNTA1QDVQNWA1cDWANZA1sDXANdA14DXwNgA2EDYgNkA2UDZgNnA2gDaQNqA3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DuwO9A78D1APaA+AESQRLBE8EVwRZBF4EagACAAAABAAOD84V8jViAAEDVAAEAAABpQrSCtIGggtwCoAK/g+aDAAGiA7uDu4MRg6gCiIO7g7uD5oKigaSDGYMRgrYCqwNUg8QCl4L4gsQDBYGmA22DbYNtgwgCxAKUAxMDbAMTAsQBqYN5gtwD5oLcAasBrIGvAbCBsgMTAbOBtgNtgb+BxQHKgcwB0YHTAdSB4QHigeQDcANwAe+Du4H4AgCDVIIMA7uDu4LJg7uDu4IRg3ADcAIeAiCCIwIpg1ICLgNsAjSCOgLEAkyCUwJaAloCxAJYgloCWgJaAtwDCAK2AxMCxAN5g1IDqAOoA1ICtIK0grSCtIK0gmKCbAJugnECeIJ9AoGChgK/g+aD5oPmg+aDGYLcAtwC3ALcAtwC3ALcAr+DAAMAAwADAAO7g7uDu4O7g7uD5oPmg+aD5oPmgxGDEYMRgxGDxAL4gviC+IL4gviC+IL4gwWDBYMFgwWDbYMIAwgDCAMIAwgDEwMTAtwC+ILcAviC3AL4gr+Cv4K/gr+D5oMAAwWDAAMFgwADBYMAAwWDAAMFg7uDbYO7g7uDu4O7g7uDEYOoAoiCiIKIgoiDu4Ntg7uDbYO7g22DbYPmgwgD5oMIA+aDCAKUApQClAMZgxmDGYMRgxGDEYMRgxGDEYKrA8QDEwPEApeCl4KXgtwDAAO7g7uD5oPEAtwCoAMAApeDu4O7g6gDu4O7g+aCooMZg8QDVIO7g8QDbYMIAxMDCAMAA3mDu4O7gxGDqAOoAsmC3AKgA3mDAAO7g7uD5oKigr+DGYNUgviDBYMIAsQDEwNsAwWDUgMTAqsCqwKrA8QDEwK0grSCtIO7g22C3AL4gwADBYK2AxMCv4PEAxMDu4NUg2wDu4LcAviC3AL4gwADBYMFgwWDVINsA+aDCAMIAsQCyYMTAsmDEwLJgxMDVINsAtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gwADBYMAAwWDAAMFgwADBYMAAwWDAAMFgwADBYMAAwWDu4O7g+aDCAPmgwgD5oMIA+aDCAPmgwgD5oMIA+aDCAMIAxGDEYPEAxMDxAMTA8QDEwOoA7uDGYNUg2wDeYNSA1SDbANtg3ADeYOoA7uDu4PEA+aAAIAhwAGAAYAAAALAAsAAQATABMAAgAlACoAAwAsADUACQA4AD4AEwBFAEYAGgBJAEoAHABMAEwAHgBRAFQAHwBWAFYAIwBaAFoAJABcAF0AJQCKAIoAJwCcAJwAKACwALQAKQC2ALgALgC6ALoAMQC8AL0AMgC/AMAANADCAMQANgDGAMsAOQDRANEAPwDTAN0AQADfAN8ASwDhAOMATADlAOcATwDpAO0AUgDwAPAAVwD1APcAWAD6APsAWwD9AP8AXQEDAQQAYAEJAQkAYgEMAQwAYwEXARkAZAErAS0AZwEwATAAagEyATIAawFJAUkAbAFsAW0AbQFvAXEAbwG6AboAcgG9Ab0AcwHEAcUAdAHIAcgAdgHKAcsAdwHNAc0AeQIoAigAegIqAisAewJHAkgAfQJKAkoAfwJMAm0AgAJvAnIAogJ3AnwApgKBAokArAKLAosAtQKNAo0AtgKPAo8AtwKRApEAuAKTApwAuQKlAqcAwwKpAqkAxgKrAqsAxwKtAq0AyAKvAq8AyQKyArIAygK0ArQAywK2ArYAzAK4ArgAzQK6AroAzgK8ArwAzwK+AsoA0ALMAswA3QLOAs4A3gLQAtAA3wLbAtsA4ALdAt0A4QLfAt8A4gLh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BB7/6wQg/+sEIv/rBCT/6wQm/+sEKP/rBCr/6wQs/+sELv/rBDD/6wQy/+sENP/qBDb/6gQ4/+oEOv/qBDz/6gQ+/+oEQP/qBEL/6ARE/+gERv/oBE0AFAAfADj/1QA6/+QAO//sAD3/3QDR/9UA1f/VARj/5AEy/9UBOv/VAmb/3QLb/9UC3f/VAt//1QLt/+wC7//dAvH/3QNY/90DZ//dA2r/3QOO/9UDoP/sA6L/7AOk/+wDpv/dA7f/5AO//90EQf/dBEP/3QRF/90ETf/VBGr/3QAaADj/sAA6/+0APf/QANH/sADV/7ABGP/tATL/sAE6/7ACZv/QAtv/sALd/7AC3/+wAu//0ALx/9ADWP/QA2f/0ANq/9ADjv+wA6b/0AO3/+0Dv//QBEH/0ARD/9AERf/QBE3/sARq/9AAEAAu/+4AOf/uAmL/7gJj/+4CZP/uAmX/7gKy/+4C4f/uAuP/7gLl/+4C5//uAun/7gLr/+4Df//uBDP/7gQ1/+4ARwAGABAACwAQAEf/6ABI/+gASf/oAEv/6ABV/+gAk//oAJj/6AC6/+gAx//oAMj/6AD2/+gBAv/oAR3/6AEh/+gBOf/oAUv/6AFM/+gBVv/oAWwAEAFtABABbwAQAXAAEAFxABACbv/oAm//6AJw/+gCcf/oAnL/6AKK/+gCjP/oAo7/6AKQ/+gCkv/oApT/6AKW/+gCmP/oApr/6AKc/+gCnv/oAqD/6AKi/+gCpP/oA2v/6AOR/+gDlf/oA5j/6AOoABADqQAQA6wAEAOz/+gDuf/oA77/6APM/+gDzv/oA8//6APb/+gD7P/oBAj/6AQK/+gEDP/oBA7/6AQQ/+gEEv/oBBT/6AQW/+gEKv/oBCz/6AQu/+gEMv/oAAEAVgAEAAAAJgCmAZwB+gIUAlYCzAPCBLgFkgYsCMYKjAteDFQOGg5MDn4O/BDiEVgSKhRMFQIWaBciF6gYBhjIGT4ewBlQGqIc4B0CHhgelh7AHuoAAQAmAE8AWABbAF8AnAC0ALYAtwC4AL8AwgDDAMQAyQDLAMwAzQDRANUA1wDYANoA4gDmAOcA6ADpAOoA7ADuAPAA9QD3APoA/wECASEBbQA9AEf/7ABI/+wASf/sAEv/7ABV/+wAk//sAJj/7AC6/+wAx//sAMj/7AD2/+wBAv/sAR3/7AEh/+wBOf/sAUv/7AFM/+wBVv/sAm7/7AJv/+wCcP/sAnH/7AJy/+wCiv/sAoz/7AKO/+wCkP/sApL/7AKU/+wClv/sApj/7AKa/+wCnP/sAp7/7AKg/+wCov/sAqT/7ANr/+wDkf/sA5X/7AOY/+wDs//sA7n/7AO+/+wDzP/sA87/7APP/+wD2//sA+z/7AQI/+wECv/sBAz/7AQO/+wEEP/sBBL/7AQU/+wEFv/sBCr/7AQs/+wELv/sBDL/7AAXAFP/7AEX/+wCeP/sAnn/7AJ6/+wCe//sAnz/7ALG/+wCyP/sAsr/7ANx/+wDd//sA5P/7APZ/+wD3f/sBBz/7AQe/+wEIP/sBCL/7AQk/+wEJv/sBCj/7AQw/+wABgAQ/4QAEv+EAW7/hAFy/4QBdv+EAXf/hAAQAC7/7AA5/+wCYv/sAmP/7AJk/+wCZf/sArL/7ALh/+wC4//sAuX/7ALn/+wC6f/sAuv/7AN//+wEM//sBDX/7AAdAAb/8gAL//IAWv/zAF3/8wC8//MBGf/zAWz/8gFt//IBb//yAXD/8gFx//ICgf/zAoL/8wLw//MDc//zA5b/8wOf//MDp//zA6j/8gOp//IDrP/yA7j/8wPA//MD4f/zA+P/8wPl//MEQv/zBET/8wRG//MAPQAn//MAK//zADP/8wA1//MAg//zAJL/8wCX//MAsv/zANL/8wEH//MBFv/zARr/8wEc//MBHv/zASD/8wE4//MBVf/zAij/8wIp//MCK//zAiz/8wJT//MCXf/zAl7/8wJf//MCYP/zAmH/8wKJ//MCi//zAo3/8wKP//MCnf/zAp//8wKh//MCo//zAsX/8wLH//MCyf/zAvr/8wNX//MDZP/zA4r/8wON//MDuv/zA73/8wPY//MD2v/zA9z/8wQb//MEHf/zBB//8wQh//MEI//zBCX/8wQn//MEKf/zBCv/8wQt//MEL//zBDH/8wSq//MAPQAn/+YAK//mADP/5gA1/+YAg//mAJL/5gCX/+YAsv/mANL/5gEH/+YBFv/mARr/5gEc/+YBHv/mASD/5gE4/+YBVf/mAij/5gIp/+YCK//mAiz/5gJT/+YCXf/mAl7/5gJf/+YCYP/mAmH/5gKJ/+YCi//mAo3/5gKP/+YCnf/mAp//5gKh/+YCo//mAsX/5gLH/+YCyf/mAvr/5gNX/+YDZP/mA4r/5gON/+YDuv/mA73/5gPY/+YD2v/mA9z/5gQb/+YEHf/mBB//5gQh/+YEI//mBCX/5gQn/+YEKf/mBCv/5gQt/+YEL//mBDH/5gSq/+YANgAl/+QAPP/SAD3/0wCx/+QAs//kANn/0gEM/+QCTP/kAk3/5AJO/+QCT//kAlD/5AJR/+QCUv/kAmb/0wKD/+QChf/kAof/5ALv/9MC8f/TA1P/5ANY/9MDW//kA2f/0wNo/9IDav/TA4P/5AOP/9IDpv/TA6//5AO//9MDwv/SA8X/5APH/+QD0P/SA+r/0gPv/+QD8f/kA/P/5AP1/+QD9//kA/n/5AP7/+QD/f/kA///5AQB/+QEA//kBAX/5ARB/9MEQ//TBEX/0wRP/9IEV//SBGr/0wAmABD/HgAS/x4AJf/NALH/zQCz/80BDP/NAW7/HgFy/x4Bdv8eAXf/HgJM/80CTf/NAk7/zQJP/80CUP/NAlH/zQJS/80Cg//NAoX/zQKH/80DU//NA1v/zQOD/80Dr//NA8X/zQPH/80D7//NA/H/zQPz/80D9f/NA/f/zQP5/80D+//NA/3/zQP//80EAf/NBAP/zQQF/80ApgBH/9wASP/cAEn/3ABL/9wAUf/zAFL/8wBT/9YAVP/zAFX/3ABZ/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAMD/8wDH/9wAyP/cAMr/3QDr//MA7//zAPD/8wDy//MA8//zAPT/8wD2/9wA9//zAPn/8wD6//MA/f/zAP//8wEC/9wBBP/zARf/1gEZ/+EBHf/cASH/3AE1//MBOf/cAUT/8wFJ//MBS//cAUz/3AFW/9wCbv/cAm//3AJw/9wCcf/cAnL/3AJ3//MCeP/WAnn/1gJ6/9YCe//WAnz/1gJ9/90Cfv/dAn//3QKA/90Cgf/hAoL/4QKK/9wCjP/cAo7/3AKQ/9wCkv/cApT/3AKW/9wCmP/cApr/3AKc/9wCnv/cAqD/3AKi/9wCpP/cAr//8wLB//MCw//zAsT/8wLG/9YCyP/WAsr/1gLi/90C5P/dAub/3QLo/90C6v/dAuz/3QLw/+EDa//cA23/8wNv/90Dcf/WA3P/4QN2/90Dd//WA3j/3QOR/9wDkv/zA5P/1gOU//MDlf/cA5b/4QOY/9wDmf/zA57/8wOf/+EDp//hA67/8wOz/9wDtP/zA7j/4QO5/9wDvv/cA8D/4QPM/9wDzv/cA8//3APV//MD1//zA9n/1gPb/9wD3f/WA+H/4QPj/+ED5f/hA+n/8wPs/9wECP/cBAr/3AQM/9wEDv/cBBD/3AQS/9wEFP/cBBb/3AQc/9YEHv/WBCD/1gQi/9YEJP/WBCb/1gQo/9YEKv/cBCz/3AQu/9wEMP/WBDL/3AQ0/90ENv/dBDj/3QQ6/90EPP/dBD7/3QRA/90EQv/hBET/4QRG/+EESv/zBEz/8wRW//MEY//zBGX/8wRn//MAcQAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADH//AAyP/wAMr/7wD2//ABAv/wARn/3AEd//ABIf/wATn/8AFL//ABTP/wAVb/8AFs/9oBbf/aAW//2gFw/9oBcf/aAm7/8AJv//ACcP/wAnH/8AJy//ACff/vAn7/7wJ//+8CgP/vAoH/3AKC/9wCiv/wAoz/8AKO//ACkP/wApL/8AKU//AClv/wApj/8AKa//ACnP/wAp7/8AKg//ACov/wAqT/8ALi/+8C5P/vAub/7wLo/+8C6v/vAuz/7wLw/9wDa//wA2//7wNz/9wDdv/vA3j/7wOR//ADlf/wA5b/3AOY//ADn//cA6f/3AOo/9oDqf/aA6z/2gOz//ADuP/cA7n/8AO+//ADwP/cA8z/8APO//ADz//wA9v/8APh/9wD4//cA+X/3APs//AECP/wBAr/8AQM//AEDv/wBBD/8AQS//AEFP/wBBb/8AQq//AELP/wBC7/8AQy//AENP/vBDb/7wQ4/+8EOv/vBDz/7wQ+/+8EQP/vBEL/3ARE/9wERv/cADQABv+gAAv/oABZ//EAWv/FAF3/xQCa//EAvP/FAMr/8QEZ/8UBbP+gAW3/oAFv/6ABcP+gAXH/oAJ9//ECfv/xAn//8QKA//ECgf/FAoL/xQLi//EC5P/xAub/8QLo//EC6v/xAuz/8QLw/8UDb//xA3P/xQN2//EDeP/xA5b/xQOf/8UDp//FA6j/oAOp/6ADrP+gA7j/xQPA/8UD4f/FA+P/xQPl/8UENP/xBDb/8QQ4//EEOv/xBDz/8QQ+//EEQP/xBEL/xQRE/8UERv/FAD0AR//nAEj/5wBJ/+cAS//nAFX/5wCT/+cAmP/nALr/5wDH/+cAyP/nAPb/5wEC/+cBHf/nASH/5wE5/+cBS//nAUz/5wFW/+cCbv/nAm//5wJw/+cCcf/nAnL/5wKK/+cCjP/nAo7/5wKQ/+cCkv/nApT/5wKW/+cCmP/nApr/5wKc/+cCnv/nAqD/5wKi/+cCpP/nA2v/5wOR/+cDlf/nA5j/5wOz/+cDuf/nA77/5wPM/+cDzv/nA8//5wPb/+cD7P/nBAj/5wQK/+cEDP/nBA7/5wQQ/+cEEv/nBBT/5wQW/+cEKv/nBCz/5wQu/+cEMv/nAHEABgAMAAsADABH/+gASP/oAEn/6ABL/+gAU//qAFX/6ABaAAsAXQALAJP/6ACY/+gAuv/oALwACwDH/+gAyP/oAPb/6AEC/+gBF//qARkACwEd/+gBIf/oATn/6AFL/+gBTP/oAVb/6AFsAAwBbQAMAW8ADAFwAAwBcQAMAm7/6AJv/+gCcP/oAnH/6AJy/+gCeP/qAnn/6gJ6/+oCe//qAnz/6gKBAAsCggALAor/6AKM/+gCjv/oApD/6AKS/+gClP/oApb/6AKY/+gCmv/oApz/6AKe/+gCoP/oAqL/6AKk/+gCxv/qAsj/6gLK/+oC8AALA2v/6ANx/+oDcwALA3f/6gOR/+gDk//qA5X/6AOWAAsDmP/oA58ACwOnAAsDqAAMA6kADAOsAAwDs//oA7gACwO5/+gDvv/oA8AACwPM/+gDzv/oA8//6APZ/+oD2//oA93/6gPhAAsD4wALA+UACwPs/+gECP/oBAr/6AQM/+gEDv/oBBD/6AQS/+gEFP/oBBb/6AQc/+oEHv/qBCD/6gQi/+oEJP/qBCb/6gQo/+oEKv/oBCz/6AQu/+gEMP/qBDL/6ARCAAsERAALBEYACwAMAFz/7QBe/+0A7f/tAvP/7QL1/+0C9//tA5f/7QPD/+0D0f/tA+v/7QRQ/+0EWP/tAAwAXP/yAF7/8gDt//IC8//yAvX/8gL3//IDl//yA8P/8gPR//ID6//yBFD/8gRY//IAHwBa//QAXP/yAF3/9ABe//MAvP/0AO3/8gEZ//QCgf/0AoL/9ALw//QC8//zAvX/8wL3//MDc//0A5b/9AOX//IDn//0A6f/9AO4//QDwP/0A8P/8gPR//ID4f/0A+P/9APl//QD6//yBEL/9ARE//QERv/0BFD/8gRY//IAeQAG/8oAC//KADj/0gA6/9QAPP/0AD3/0wBR/9EAUv/RAFT/0QBa/+YAXP/vAF3/5gC8/+YAwP/RANH/0gDV/9IA2f/0AN3/7QDg/+EA6//RAO3/7wDv/9EA8P/RAPL/0QDz/9EA9P/RAPf/0QD5/9EA+v/RAP3/0QD//9EBBP/RARj/1AEZ/+YBMv/SATX/0QE6/9IBRP/RAUn/0QFs/8oBbf/KAW//ygFw/8oBcf/KAmb/0wJ3/9ECgf/mAoL/5gK//9ECwf/RAsP/0QLE/9EC2//SAt3/0gLf/9IC7//TAvD/5gLx/9MDWP/TA2f/0wNo//QDav/TA23/0QNz/+YDgv/tA47/0gOP//QDkv/RA5T/0QOW/+YDl//vA5n/0QOe/9EDn//mA6b/0wOn/+YDqP/KA6n/ygOs/8oDrv/RA7T/0QO3/9QDuP/mA7//0wPA/+YDwv/0A8P/7wPQ//QD0f/vA9X/0QPX/9ED4P/tA+H/5gPi/+0D4//mA+T/7QPl/+YD5v/hA+n/0QPq//QD6//vBEH/0wRC/+YEQ//TBET/5gRF/9MERv/mBEr/0QRM/9EETf/SBE//9ARQ/+8EUf/hBFP/4QRW/9EEV//0BFj/7wRj/9EEZf/RBGf/0QRq/9MAHQA4/74AWv/vAF3/7wC8/+8A0f++ANX/vgEZ/+8BMv++ATr/vgKB/+8Cgv/vAtv/vgLd/74C3/++AvD/7wNz/+8Djv++A5b/7wOf/+8Dp//vA7j/7wPA/+8D4f/vA+P/7wPl/+8EQv/vBET/7wRG/+8ETf++ADQAOP/mADr/5wA8//IAPf/nAFz/8QDR/+YA1f/mANn/8gDd/+4A4P/oAO3/8QEY/+cBMv/mATr/5gJm/+cC2//mAt3/5gLf/+YC7//nAvH/5wNY/+cDZ//nA2j/8gNq/+cDgv/uA47/5gOP//IDl//xA6b/5wO3/+cDv//nA8L/8gPD//ED0P/yA9H/8QPg/+4D4v/uA+T/7gPm/+gD6v/yA+v/8QRB/+cEQ//nBEX/5wRN/+YET//yBFD/8QRR/+gEU//oBFf/8gRY//EEav/nAIgAJQAQACf/6AAr/+gAM//oADX/6AA4/+AAOv/gAD3/3wCD/+gAkv/oAJf/6ACxABAAsv/oALMAEADR/+AA0v/oANMAEADV/+AA3AAQAOD/4QDxABAA+P/gAQMAEAEH/+gBDAAQARb/6AEY/+ABGv/oARz/6AEe/+gBIP/oATL/4AE4/+gBOv/gAVEAEAFV/+gCKP/oAin/6AIr/+gCLP/oAkwAEAJNABACTgAQAk8AEAJQABACUQAQAlIAEAJT/+gCXf/oAl7/6AJf/+gCYP/oAmH/6AJm/98CgwAQAoUAEAKHABACif/oAov/6AKN/+gCj//oAp3/6AKf/+gCof/oAqP/6ALF/+gCx//oAsn/6ALb/+AC3f/gAt//4ALv/98C8f/fAvr/6ANTABADV//oA1j/3wNbABADZP/oA2f/3wNq/98DgwAQA4r/6AON/+gDjv/gA6b/3wOvABADt//gA7r/6AO9/+gDv//fA8UAEAPHABAD2P/oA9r/6APc/+gD5v/hA+f/4APtABAD7gAQA+8AEAPxABAD8wAQA/UAEAP3ABAD+QAQA/sAEAP9ABAD/wAQBAEAEAQDABAEBQAQBBv/6AQd/+gEH//oBCH/6AQj/+gEJf/oBCf/6AQp/+gEK//oBC3/6AQv/+gEMf/oBEH/3wRD/98ERf/fBE3/4ARR/+EEUv/gBFP/4QRU/+AEaAAQBGkAEARq/98Eqv/oAC0AOP/xADr/9AA8//QAPf/wANH/8QDT//UA1f/xANn/9ADc//UA3f/zARj/9AEy//EBOv/xAVH/9QJm//AC2//xAt3/8QLf//EC7//wAvH/8ANY//ADZ//wA2j/9ANq//ADgv/zA47/8QOP//QDpv/wA7f/9AO///ADwv/0A9D/9APg//MD4v/zA+T/8wPq//QD7f/1BEH/8ARD//AERf/wBE3/8QRP//QEV//0BGj/9QRq//AAWQAlAA8AOP/mADr/5gA8AA4APf/mALEADwCzAA8A0f/mANMADgDV/+YA2QAOANwADgDdAAsA4P/lAPEADwD4/+gBAwAPAQwADwEY/+YBMv/mATr/5gFRAA4CTAAPAk0ADwJOAA8CTwAPAlAADwJRAA8CUgAPAmb/5gKDAA8ChQAPAocADwLb/+YC3f/mAt//5gLv/+YC8f/mA1MADwNY/+YDWwAPA2f/5gNoAA4Dav/mA4IACwODAA8Djv/mA48ADgOm/+YDrwAPA7f/5gO//+YDwgAOA8UADwPHAA8D0AAOA+AACwPiAAsD5AALA+b/5QPn/+gD6gAO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ABADogOiABADpAOkABADpgOmAA8DpwOnABkDqAOpAB0DrAOsAB0DrQOtAAIDrgOuABcDsAOwABMDsQOxAAUDswOzABYDtwO3AA0DuAO4ABkDvQO9AAQDvgO+ABQDvwO/AA8DwAPAABkDwQPBAAIDwgPCAA4DwwPDABsDxAPEAAIDxgPGABMDyAPIABMDywPLAAUDzAPMABYDzgPPABYD0APQAA4D0QPRABsD2APYAAMD2QPZABgD3QPdABgD3wPfABUD4APgABID4QPhABkD4gPiABID4wPjABkD5APkABID5QPlABkD6gPqAA4D6wPrABsD8APwABMD8gPyABMD9AP0ABMD9gP2ABMD+AP4ABMD+gP6ABMD/AP8ABMD/gP+ABMEAAQAABMEAgQCABMEBAQEABMEBgQGABMEBwQHAAUECAQIABYECQQJAAUECgQKABYECwQLAAUEDAQMABYEDQQNAAUEDgQOABYEDwQPAAUEEAQQABYEEQQRAAUEEgQSABYEEwQTAAUEFAQUABYEFQQVAAUEFgQWABYEFwQXAAIEGQQZAAIEGwQbAAMEHAQcABgEHQQdAAMEHgQeABgEHwQfAAMEIAQgABgEIQQhAAMEIgQiABgEIwQjAAMEJAQkABgEJQQlAAMEJgQmABgEJwQnAAMEKAQoABgEMAQwABgEMwQzAAwENQQ1AAwEQQRBAA8EQgRCABkEQwRDAA8ERAREABkERQRFAA8ERgRGABkESQRJAAkESwRLAAIETQRNAAYETwRPAA4EUARQABsEVQRVAAcEVgRWAAgEVwRXAA4EWARYABsEWwRbABcEXQRdAB8EXgReAAcEYARgAAkEZARkAAIEZgRmAAIEagRqAA8EqgSqAAMAAgFtAAYABgAHAAsACwAHABAAEAATABEAEQAXABIAEgATACUAJQARACcAJwAFACsAKwAFAC4ALgAcADMAMwAFADUANQAFADcANwAZADgAOAAKADkAOQAGADoAOgANADsAOwAJADwAPAASAD0APQAOAD4APgAUAEUARQAaAEcASQAVAEsASwAVAFEAUgAYAFMAUwAIAFQAVAAYAFUAVQAVAFcAVwAbAFkAWQALAFoAWgACAFwAXAAWAF0AXQACAF4AXgAMAIMAgwAFAJIAkgAFAJMAkwAVAJcAlwAFAJgAmAAVAJoAmgALALEAsQAR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b20EbGRub20EbGRub20EbGZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmxpZ2EEfGxpZ2EEhGxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxvY2wEkGxvY2wElmxvY2wEnG51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqHBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5AAAAAEAAAAAAAIAAgADAAAAAQAHAAAAAQAYAAAAAwAVABYAFwAAAAIACAAJAAAAAQAJAAAAAQAUAAAAAQAEAAAAAQAGAAAAAQAFAAAAAQAZAAAAAQARAAAAAQATAAAAAQABAAAAAQAKAAAAAQALAAAAAQAMAAAAAQANAAAAAQAOAAAAAQAPAAAAAQAQAAAAAQASABsAOAPGBrQHYA3wDfAOBg4oDl4OhA6yDsYO2g7uDwAPGg9cD3oPmA/KD/wQLhBCEHoQbBB6EKYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCRAI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTdAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYB/wTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNgE2QTbAhoE3AIOBNcCEwINBNoCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkcCSAJKAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CrwKyArQCtgK4AroCvAK+AsACwgLFAscCyQLLAs0CzwLRAtMC1QLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvIC9AL2A1MDVANVA1YDVwNYA1kDWwNcA10DXgNfA2ADYQNiA2QDZQNmA2cDaANpA2oDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwO7A70DvwPUA9oD4ARJBEsETwRXBFkEXgRqAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAv0DMAI7AfoEygTLAfsB/AH9Af4B/wIABM4EzwTRBNQE3QICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZA08DGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNQA1EDUgTJBMwEzQTQBNIE0wIBBNUEwQTCBMMExATFBMYExwTIBNYE2ATZAhgE2wIaBNwC/AIOBNcCEwINBNoCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSwJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoQChgKIAooCjAKOApACkgKUApYCmAKaApwCngKgAqICpAKmAqgCqgKsAq4CswK1ArcCuQK7Ar0CvwLBAsMCxgLIAsoCzALOAtAC0gLUAtYC2gLcAt4C4ALiAuQC5gLoAuoC7ALuAvAC8wL1AvcDkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwO8A74DwAPOA9UD2wPhBEcESgRMBFAEWARaBFsEXwRrAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAAAaAAEAAQBNAAMAAAABABIAAQB4AAEAAAAaAAEAAQBOAAMAAAABABIAAQBgAAEAAAAaAAEAAQKuAAMAAAABABIAAQBIAAEAAAAaAAEAAQObAAMAAAABABIAAQAwAAEAAAAaAAEAAQOdAAMAAAABABIAAQAYAAEAAAAaAAEAAQQaAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCTAACAKcCTQACAKgCTwACAKkD8QACAKoEewACAKsD7wACAKwAAQAEBIgAAgCsAAEABAKJAAIAqAACAAYADASKAAIArASMAAIBogAGAA4AFAAaACAAJgAsAlQAAgCnAlUAAgCoBAsAAgCpBAkAAgCqBH0AAgCrBAcAAgCsAAIABgAMBHcAAgCoAqMAAgGiAAEABASOAAIArAAGAA4AFAAaACAAJgAsAlgAAgCnAlkAAgCoAqcAAgCpBBcAAgCqBH8AAgCrBBkAAgCsAAMACAAOABQEkAACAKgEkgACAKwCtAACAaIAAwAIAA4AFAK2AAIAqASUAAIArAK4AAIBogACAAYADAOtAAIAqASWAAIArAAFAAwAEgAYAB4AJAR5AAIApwK+AAIAqAJcAAIAqQSYAAIArALAAAIBogAGAA4AFAAaACAAJgAsAl0AAgCnAl4AAgCoAmAAAgCpBB0AAgCqBIEAAgCrBBsAAgCsAAEABASaAAIAqAAEAAoAEAAWABwCywACAKgEgwACAKsEnAACAKwCzQACAaIAAwAIAA4AFALRAAIAqASeAAIArALXAAIBogACAAYADASgAAIArALbAAIBogAGAA4AFAAaACAAJgAsAmIAAgCnAmMAAgCoAuEAAgCpBDUAAgCqBIUAAgCrBDMAAgCsAAIABgAMBKIAAgCpBKQAAgCsAAMACAAOABQDoAACAKcDogACAKgEpgACAKwABQAMABIAGAAeACQDpgACAKcCZgACAKgERQACAKkEQwACAKoEQQACAKwAAgAGAAwC8gACAKgEqAACAKwABgAOABQAGgAgACYALAJnAAIApwJoAAIAqAJqAAIAqQPyAAIAqgR8AAIAqwPwAAIArAABAAQEiQACAKwAAQAEAooAAgCoAAIABgAMBIsAAgCsBI0AAgGiAAYADgAUABoAIAAmACwCbwACAKcCcAACAKgEDAACAKkECgACAKoEfgACAKsECAACAKwAAQAEBHgAAgCoAAEABASPAAIArAABAAQEGgACAKwAAwAIAA4AFASRAAIAqASTAAIArAK1AAIBogADAAgADgAUArcAAgCoBJUAAgCsArkAAgGiAAIABgAMA64AAgCoBJcAAgCsAAUADAASABgAHgAkBHoAAgCnAr8AAgCoAncAAgCpBJkAAgCsAsEAAgGiAAYADgAUABoAIAAmACwCeAACAKcCeQACAKgCewACAKkEHgACAKoEggACAKsEHAACAKwAAQAEBJsAAgCoAAQACgAQABYAHALMAAIAqASEAAIAqwSdAAIArALOAAIBogADAAgADgAUAtIAAgCoBJ8AAgCsAtgAAgGiAAIABgAMBKEAAgCsAtwAAgGiAAYADgAUABoAIAAmACwCfQACAKcCfgACAKgC4gACAKkENgACAKoEhgACAKsENAACAKwAAgAGAAwEowACAKkEpQACAKwAAwAIAA4AFAOhAAIApwOjAAIAqASnAAIArAAFAAwAEgAYAB4AJAOnAAIApwKBAAIAqARGAAIAqQREAAIAqgRCAAIArAACAAYADALzAAIAqASpAAIArAABAAQC+AACAKgAAQAEAvoAAgCoAAEABAL5AAIAqAABAAQC+wACAKgABQAMABIAGAAeACQCcwACAKcCdAACAKgCqAACAKkEGAACAKoEgAACAKsABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQELAACAKcEKgACAKgEMAACAKkELgACAKoEMgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwABQAMABIAGAAeACQEOgACAKcEOAACAKgEPgACAKkEPAACAKoEQAACAKwAAQAEBIcAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLVAtYAAQAAAAEACAACAA4ABATeBN8E4AThAAEABAKHAogCmQKaAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiECIgGuAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAiIAAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIwRxBHIEcwR0BHUEdgABAAAAAQAIAAIAFgAIBHYCIwRxBHIEcwR0Aa0EdQABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAAAaAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwJDAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKuA5sDnQQa"
+};
+
+/*! DataTables 1.10.20
+ * ©2008-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     DataTables
+ * @description Paginate, search and order HTML tables
+ * @version     1.10.20
+ * @file        jquery.dataTables.js
+ * @author      SpryMedia Ltd
+ * @contact     www.datatables.net
+ * @copyright   Copyright 2008-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+/*jslint evil: true, undef: true, browser: true */
+/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/
+
+(function( factory ) {
+	"use strict";
+
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				// CommonJS environments without a window global must pass a
+				// root. This will give an error otherwise
+				root = window;
+			}
+
+			if ( ! $ ) {
+				$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window
+					require('jquery') :
+					require('jquery')( root );
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}
+(function( $, window, document, undefined ) {
+	"use strict";
+
+	/**
+	 * DataTables is a plug-in for the jQuery Javascript library. It is a highly
+	 * flexible tool, based upon the foundations of progressive enhancement,
+	 * which will add advanced interaction controls to any HTML table. For a
+	 * full list of features please refer to
+	 * [DataTables.net](href="http://datatables.net).
+	 *
+	 * Note that the `DataTable` object is not a global variable but is aliased
+	 * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may
+	 * be  accessed.
+	 *
+	 *  @class
+	 *  @param {object} [init={}] Configuration object for DataTables. Options
+	 *    are defined by {@link DataTable.defaults}
+	 *  @requires jQuery 1.7+
+	 *
+	 *  @example
+	 *    // Basic initialisation
+	 *    $(document).ready( function {
+	 *      $('#example').dataTable();
+	 *    } );
+	 *
+	 *  @example
+	 *    // Initialisation with configuration options - in this case, disable
+	 *    // pagination and sorting.
+	 *    $(document).ready( function {
+	 *      $('#example').dataTable( {
+	 *        "paginate": false,
+	 *        "sort": false
+	 *      } );
+	 *    } );
+	 */
+	var DataTable = function ( options )
+	{
+		/**
+		 * Perform a jQuery selector action on the table's TR elements (from the tbody) and
+		 * return the resulting jQuery object.
+		 *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+		 *  @param {object} [oOpts] Optional parameters for modifying the rows to be included
+		 *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter
+		 *    criterion ("applied") or all TR elements (i.e. no filter).
+		 *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.
+		 *    Can be either 'current', whereby the current sorting of the table is used, or
+		 *    'original' whereby the original order the data was read into the table is used.
+		 *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+		 *    ("current") or not ("all"). If 'current' is given, then order is assumed to be
+		 *    'current' and filter is 'applied', regardless of what they might be given as.
+		 *  @returns {object} jQuery object, filtered by the given selector.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Highlight every second row
+		 *      oTable.$('tr:odd').css('backgroundColor', 'blue');
+		 *    } );
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Filter to rows with 'Webkit' in them, add a background colour and then
+		 *      // remove the filter, thus highlighting the 'Webkit' rows only.
+		 *      oTable.fnFilter('Webkit');
+		 *      oTable.$('tr', {"search": "applied"}).css('backgroundColor', 'blue');
+		 *      oTable.fnFilter('');
+		 *    } );
+		 */
+		this.$ = function ( sSelector, oOpts )
+		{
+			return this.api(true).$( sSelector, oOpts );
+		};
+		
+		
+		/**
+		 * Almost identical to $ in operation, but in this case returns the data for the matched
+		 * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes
+		 * rather than any descendants, so the data can be obtained for the row/cell. If matching
+		 * rows are found, the data returned is the original data array/object that was used to
+		 * create the row (or a generated array if from a DOM source).
+		 *
+		 * This method is often useful in-combination with $ where both functions are given the
+		 * same parameters and the array indexes will match identically.
+		 *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+		 *  @param {object} [oOpts] Optional parameters for modifying the rows to be included
+		 *  @param {string} [oOpts.filter=none] Select elements that meet the current filter
+		 *    criterion ("applied") or all elements (i.e. no filter).
+		 *  @param {string} [oOpts.order=current] Order of the data in the processed array.
+		 *    Can be either 'current', whereby the current sorting of the table is used, or
+		 *    'original' whereby the original order the data was read into the table is used.
+		 *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+		 *    ("current") or not ("all"). If 'current' is given, then order is assumed to be
+		 *    'current' and filter is 'applied', regardless of what they might be given as.
+		 *  @returns {array} Data for the matched elements. If any elements, as a result of the
+		 *    selector, were not TR, TD or TH elements in the DataTable, they will have a null
+		 *    entry in the array.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Get the data from the first row in the table
+		 *      var data = oTable._('tr:first');
+		 *
+		 *      // Do something useful with the data
+		 *      alert( "First cell is: "+data[0] );
+		 *    } );
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Filter to 'Webkit' and get all data for
+		 *      oTable.fnFilter('Webkit');
+		 *      var data = oTable._('tr', {"search": "applied"});
+		 *
+		 *      // Do something with the data
+		 *      alert( data.length+" rows matched the search" );
+		 *    } );
+		 */
+		this._ = function ( sSelector, oOpts )
+		{
+			return this.api(true).rows( sSelector, oOpts ).data();
+		};
+		
+		
+		/**
+		 * Create a DataTables Api instance, with the currently selected tables for
+		 * the Api's context.
+		 * @param {boolean} [traditional=false] Set the API instance's context to be
+		 *   only the table referred to by the `DataTable.ext.iApiIndex` option, as was
+		 *   used in the API presented by DataTables 1.9- (i.e. the traditional mode),
+		 *   or if all tables captured in the jQuery object should be used.
+		 * @return {DataTables.Api}
+		 */
+		this.api = function ( traditional )
+		{
+			return traditional ?
+				new _Api(
+					_fnSettingsFromNode( this[ _ext.iApiIndex ] )
+				) :
+				new _Api( this );
+		};
+		
+		
+		/**
+		 * Add a single new row or multiple rows of data to the table. Please note
+		 * that this is suitable for client-side processing only - if you are using
+		 * server-side processing (i.e. "bServerSide": true), then to add data, you
+		 * must add it to the data source, i.e. the server-side, through an Ajax call.
+		 *  @param {array|object} data The data to be added to the table. This can be:
+		 *    <ul>
+		 *      <li>1D array of data - add a single row with the data provided</li>
+		 *      <li>2D array of arrays - add multiple rows in a single call</li>
+		 *      <li>object - data object when using <i>mData</i></li>
+		 *      <li>array of objects - multiple data objects when using <i>mData</i></li>
+		 *    </ul>
+		 *  @param {bool} [redraw=true] redraw the table or not
+		 *  @returns {array} An array of integers, representing the list of indexes in
+		 *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to
+		 *    the table.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    // Global var for counter
+		 *    var giCount = 2;
+		 *
+		 *    $(document).ready(function() {
+		 *      $('#example').dataTable();
+		 *    } );
+		 *
+		 *    function fnClickAddRow() {
+		 *      $('#example').dataTable().fnAddData( [
+		 *        giCount+".1",
+		 *        giCount+".2",
+		 *        giCount+".3",
+		 *        giCount+".4" ]
+		 *      );
+		 *
+		 *      giCount++;
+		 *    }
+		 */
+		this.fnAddData = function( data, redraw )
+		{
+			var api = this.api( true );
+		
+			/* Check if we want to add multiple rows or not */
+			var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ?
+				api.rows.add( data ) :
+				api.row.add( data );
+		
+			if ( redraw === undefined || redraw ) {
+				api.draw();
+			}
+		
+			return rows.flatten().toArray();
+		};
+		
+		
+		/**
+		 * This function will make DataTables recalculate the column sizes, based on the data
+		 * contained in the table and the sizes applied to the columns (in the DOM, CSS or
+		 * through the sWidth parameter). This can be useful when the width of the table's
+		 * parent element changes (for example a window resize).
+		 *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sScrollY": "200px",
+		 *        "bPaginate": false
+		 *      } );
+		 *
+		 *      $(window).on('resize', function () {
+		 *        oTable.fnAdjustColumnSizing();
+		 *      } );
+		 *    } );
+		 */
+		this.fnAdjustColumnSizing = function ( bRedraw )
+		{
+			var api = this.api( true ).columns.adjust();
+			var settings = api.settings()[0];
+			var scroll = settings.oScroll;
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw( false );
+			}
+			else if ( scroll.sX !== "" || scroll.sY !== "" ) {
+				/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */
+				_fnScrollDraw( settings );
+			}
+		};
+		
+		
+		/**
+		 * Quickly and simply clear a table
+		 *  @param {bool} [bRedraw=true] redraw the table or not
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)
+		 *      oTable.fnClearTable();
+		 *    } );
+		 */
+		this.fnClearTable = function( bRedraw )
+		{
+			var api = this.api( true ).clear();
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw();
+			}
+		};
+		
+		
+		/**
+		 * The exact opposite of 'opening' a row, this function will close any rows which
+		 * are currently 'open'.
+		 *  @param {node} nTr the table row to 'close'
+		 *  @returns {int} 0 on success, or 1 if failed (can't find the row)
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnClose = function( nTr )
+		{
+			this.api( true ).row( nTr ).child.hide();
+		};
+		
+		
+		/**
+		 * Remove a row for the table
+		 *  @param {mixed} target The index of the row from aoData to be deleted, or
+		 *    the TR element you want to delete
+		 *  @param {function|null} [callBack] Callback function
+		 *  @param {bool} [redraw=true] Redraw the table or not
+		 *  @returns {array} The row that was deleted
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Immediately remove the first row
+		 *      oTable.fnDeleteRow( 0 );
+		 *    } );
+		 */
+		this.fnDeleteRow = function( target, callback, redraw )
+		{
+			var api = this.api( true );
+			var rows = api.rows( target );
+			var settings = rows.settings()[0];
+			var data = settings.aoData[ rows[0][0] ];
+		
+			rows.remove();
+		
+			if ( callback ) {
+				callback.call( this, settings, data );
+			}
+		
+			if ( redraw === undefined || redraw ) {
+				api.draw();
+			}
+		
+			return data;
+		};
+		
+		
+		/**
+		 * Restore the table to it's original state in the DOM by removing all of DataTables
+		 * enhancements, alterations to the DOM structure of the table and event listeners.
+		 *  @param {boolean} [remove=false] Completely remove the table from the DOM
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      // This example is fairly pointless in reality, but shows how fnDestroy can be used
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnDestroy();
+		 *    } );
+		 */
+		this.fnDestroy = function ( remove )
+		{
+			this.api( true ).destroy( remove );
+		};
+		
+		
+		/**
+		 * Redraw the table
+		 *  @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)
+		 *      oTable.fnDraw();
+		 *    } );
+		 */
+		this.fnDraw = function( complete )
+		{
+			// Note that this isn't an exact match to the old call to _fnDraw - it takes
+			// into account the new data, but can hold position.
+			this.api( true ).draw( complete );
+		};
+		
+		
+		/**
+		 * Filter the input based on data
+		 *  @param {string} sInput String to filter the table on
+		 *  @param {int|null} [iColumn] Column to limit filtering to
+		 *  @param {bool} [bRegex=false] Treat as regular expression or not
+		 *  @param {bool} [bSmart=true] Perform smart filtering or not
+		 *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)
+		 *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Sometime later - filter...
+		 *      oTable.fnFilter( 'test string' );
+		 *    } );
+		 */
+		this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )
+		{
+			var api = this.api( true );
+		
+			if ( iColumn === null || iColumn === undefined ) {
+				api.search( sInput, bRegex, bSmart, bCaseInsensitive );
+			}
+			else {
+				api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );
+			}
+		
+			api.draw();
+		};
+		
+		
+		/**
+		 * Get the data for the whole table, an individual row or an individual cell based on the
+		 * provided parameters.
+		 *  @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as
+		 *    a TR node then the data source for the whole row will be returned. If given as a
+		 *    TD/TH cell node then iCol will be automatically calculated and the data for the
+		 *    cell returned. If given as an integer, then this is treated as the aoData internal
+		 *    data index for the row (see fnGetPosition) and the data for that row used.
+		 *  @param {int} [col] Optional column index that you want the data of.
+		 *  @returns {array|object|string} If mRow is undefined, then the data for all rows is
+		 *    returned. If mRow is defined, just data for that row, and is iCol is
+		 *    defined, only data for the designated cell is returned.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    // Row data
+		 *    $(document).ready(function() {
+		 *      oTable = $('#example').dataTable();
+		 *
+		 *      oTable.$('tr').click( function () {
+		 *        var data = oTable.fnGetData( this );
+		 *        // ... do something with the array / object of data for the row
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Individual cell data
+		 *    $(document).ready(function() {
+		 *      oTable = $('#example').dataTable();
+		 *
+		 *      oTable.$('td').click( function () {
+		 *        var sData = oTable.fnGetData( this );
+		 *        alert( 'The cell clicked on had the value of '+sData );
+		 *      } );
+		 *    } );
+		 */
+		this.fnGetData = function( src, col )
+		{
+			var api = this.api( true );
+		
+			if ( src !== undefined ) {
+				var type = src.nodeName ? src.nodeName.toLowerCase() : '';
+		
+				return col !== undefined || type == 'td' || type == 'th' ?
+					api.cell( src, col ).data() :
+					api.row( src ).data() || null;
+			}
+		
+			return api.data().toArray();
+		};
+		
+		
+		/**
+		 * Get an array of the TR nodes that are used in the table's body. Note that you will
+		 * typically want to use the '$' API method in preference to this as it is more
+		 * flexible.
+		 *  @param {int} [iRow] Optional row index for the TR element you want
+		 *  @returns {array|node} If iRow is undefined, returns an array of all TR elements
+		 *    in the table's body, or iRow is defined, just the TR element requested.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Get the nodes from the table
+		 *      var nNodes = oTable.fnGetNodes( );
+		 *    } );
+		 */
+		this.fnGetNodes = function( iRow )
+		{
+			var api = this.api( true );
+		
+			return iRow !== undefined ?
+				api.row( iRow ).node() :
+				api.rows().nodes().flatten().toArray();
+		};
+		
+		
+		/**
+		 * Get the array indexes of a particular cell from it's DOM element
+		 * and column index including hidden columns
+		 *  @param {node} node this can either be a TR, TD or TH in the table's body
+		 *  @returns {int} If nNode is given as a TR, then a single index is returned, or
+		 *    if given as a cell, an array of [row index, column index (visible),
+		 *    column index (all)] is given.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      $('#example tbody td').click( function () {
+		 *        // Get the position of the current data from the node
+		 *        var aPos = oTable.fnGetPosition( this );
+		 *
+		 *        // Get the data array for this row
+		 *        var aData = oTable.fnGetData( aPos[0] );
+		 *
+		 *        // Update the data array and return the value
+		 *        aData[ aPos[1] ] = 'clicked';
+		 *        this.innerHTML = 'clicked';
+		 *      } );
+		 *
+		 *      // Init DataTables
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnGetPosition = function( node )
+		{
+			var api = this.api( true );
+			var nodeName = node.nodeName.toUpperCase();
+		
+			if ( nodeName == 'TR' ) {
+				return api.row( node ).index();
+			}
+			else if ( nodeName == 'TD' || nodeName == 'TH' ) {
+				var cell = api.cell( node ).index();
+		
+				return [
+					cell.row,
+					cell.columnVisible,
+					cell.column
+				];
+			}
+			return null;
+		};
+		
+		
+		/**
+		 * Check to see if a row is 'open' or not.
+		 *  @param {node} nTr the table row to check
+		 *  @returns {boolean} true if the row is currently open, false otherwise
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnIsOpen = function( nTr )
+		{
+			return this.api( true ).row( nTr ).child.isShown();
+		};
+		
+		
+		/**
+		 * This function will place a new row directly after a row which is currently
+		 * on display on the page, with the HTML contents that is passed into the
+		 * function. This can be used, for example, to ask for confirmation that a
+		 * particular record should be deleted.
+		 *  @param {node} nTr The table row to 'open'
+		 *  @param {string|node|jQuery} mHtml The HTML to put into the row
+		 *  @param {string} sClass Class to give the new TD cell
+		 *  @returns {node} The row opened. Note that if the table row passed in as the
+		 *    first parameter, is not found in the table, this method will silently
+		 *    return.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnOpen = function( nTr, mHtml, sClass )
+		{
+			return this.api( true )
+				.row( nTr )
+				.child( mHtml, sClass )
+				.show()
+				.child()[0];
+		};
+		
+		
+		/**
+		 * Change the pagination - provides the internal logic for pagination in a simple API
+		 * function. With this function you can have a DataTables table go to the next,
+		 * previous, first or last pages.
+		 *  @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
+		 *    or page number to jump to (integer), note that page 0 is the first page.
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnPageChange( 'next' );
+		 *    } );
+		 */
+		this.fnPageChange = function ( mAction, bRedraw )
+		{
+			var api = this.api( true ).page( mAction );
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw(false);
+			}
+		};
+		
+		
+		/**
+		 * Show a particular column
+		 *  @param {int} iCol The column whose display should be changed
+		 *  @param {bool} bShow Show (true) or hide (false) the column
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Hide the second column after initialisation
+		 *      oTable.fnSetColumnVis( 1, false );
+		 *    } );
+		 */
+		this.fnSetColumnVis = function ( iCol, bShow, bRedraw )
+		{
+			var api = this.api( true ).column( iCol ).visible( bShow );
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.columns.adjust().draw();
+			}
+		};
+		
+		
+		/**
+		 * Get the settings for a particular table for external manipulation
+		 *  @returns {object} DataTables settings object. See
+		 *    {@link DataTable.models.oSettings}
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      var oSettings = oTable.fnSettings();
+		 *
+		 *      // Show an example parameter from the settings
+		 *      alert( oSettings._iDisplayStart );
+		 *    } );
+		 */
+		this.fnSettings = function()
+		{
+			return _fnSettingsFromNode( this[_ext.iApiIndex] );
+		};
+		
+		
+		/**
+		 * Sort the table by a particular column
+		 *  @param {int} iCol the data index to sort on. Note that this will not match the
+		 *    'display index' if you have hidden data entries
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Sort immediately with columns 0 and 1
+		 *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );
+		 *    } );
+		 */
+		this.fnSort = function( aaSort )
+		{
+			this.api( true ).order( aaSort ).draw();
+		};
+		
+		
+		/**
+		 * Attach a sort listener to an element for a given column
+		 *  @param {node} nNode the element to attach the sort listener to
+		 *  @param {int} iColumn the column that a click on this node will sort on
+		 *  @param {function} [fnCallback] callback function when sort is run
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Sort on column 1, when 'sorter' is clicked on
+		 *      oTable.fnSortListener( document.getElementById('sorter'), 1 );
+		 *    } );
+		 */
+		this.fnSortListener = function( nNode, iColumn, fnCallback )
+		{
+			this.api( true ).order.listener( nNode, iColumn, fnCallback );
+		};
+		
+		
+		/**
+		 * Update a table cell or row - this method will accept either a single value to
+		 * update the cell with, an array of values with one element for each column or
+		 * an object in the same format as the original data source. The function is
+		 * self-referencing in order to make the multi column updates easier.
+		 *  @param {object|array|string} mData Data to update the cell/row with
+		 *  @param {node|int} mRow TR element you want to update or the aoData index
+		 *  @param {int} [iColumn] The column to update, give as null or undefined to
+		 *    update a whole row.
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @param {bool} [bAction=true] Perform pre-draw actions or not
+		 *  @returns {int} 0 on success, 1 on error
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell
+		 *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row
+		 *    } );
+		 */
+		this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )
+		{
+			var api = this.api( true );
+		
+			if ( iColumn === undefined || iColumn === null ) {
+				api.row( mRow ).data( mData );
+			}
+			else {
+				api.cell( mRow, iColumn ).data( mData );
+			}
+		
+			if ( bAction === undefined || bAction ) {
+				api.columns.adjust();
+			}
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw();
+			}
+			return 0;
+		};
+		
+		
+		/**
+		 * Provide a common method for plug-ins to check the version of DataTables being used, in order
+		 * to ensure compatibility.
+		 *  @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
+		 *    formats "X" and "X.Y" are also acceptable.
+		 *  @returns {boolean} true if this version of DataTables is greater or equal to the required
+		 *    version, or false if this version of DataTales is not suitable
+		 *  @method
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      alert( oTable.fnVersionCheck( '1.9.0' ) );
+		 *    } );
+		 */
+		this.fnVersionCheck = _ext.fnVersionCheck;
+		
+
+		var _that = this;
+		var emptyInit = options === undefined;
+		var len = this.length;
+
+		if ( emptyInit ) {
+			options = {};
+		}
+
+		this.oApi = this.internal = _ext.internal;
+
+		// Extend with old style plug-in API methods
+		for ( var fn in DataTable.ext.internal ) {
+			if ( fn ) {
+				this[fn] = _fnExternApiFunc(fn);
+			}
+		}
+
+		this.each(function() {
+			// For each initialisation we want to give it a clean initialisation
+			// object that can be bashed around
+			var o = {};
+			var oInit = len > 1 ? // optimisation for single table case
+				_fnExtend( o, options, true ) :
+				options;
+
+			/*global oInit,_that,emptyInit*/
+			var i=0, iLen, j, jLen, k, kLen;
+			var sId = this.getAttribute( 'id' );
+			var bInitHandedOff = false;
+			var defaults = DataTable.defaults;
+			var $this = $(this);
+			
+			
+			/* Sanity check */
+			if ( this.nodeName.toLowerCase() != 'table' )
+			{
+				_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );
+				return;
+			}
+			
+			/* Backwards compatibility for the defaults */
+			_fnCompatOpts( defaults );
+			_fnCompatCols( defaults.column );
+			
+			/* Convert the camel-case defaults to Hungarian */
+			_fnCamelToHungarian( defaults, defaults, true );
+			_fnCamelToHungarian( defaults.column, defaults.column, true );
+			
+			/* Setting up the initialisation object */
+			_fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ), true );
+			
+			
+			
+			/* Check to see if we are re-initialising a table */
+			var allSettings = DataTable.settings;
+			for ( i=0, iLen=allSettings.length ; i<iLen ; i++ )
+			{
+				var s = allSettings[i];
+			
+				/* Base check on table node */
+				if (
+					s.nTable == this ||
+					(s.nTHead && s.nTHead.parentNode == this) ||
+					(s.nTFoot && s.nTFoot.parentNode == this)
+				) {
+					var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;
+					var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;
+			
+					if ( emptyInit || bRetrieve )
+					{
+						return s.oInstance;
+					}
+					else if ( bDestroy )
+					{
+						s.oInstance.fnDestroy();
+						break;
+					}
+					else
+					{
+						_fnLog( s, 0, 'Cannot reinitialise DataTable', 3 );
+						return;
+					}
+				}
+			
+				/* If the element we are initialising has the same ID as a table which was previously
+				 * initialised, but the table nodes don't match (from before) then we destroy the old
+				 * instance by simply deleting it. This is under the assumption that the table has been
+				 * destroyed by other methods. Anyone using non-id selectors will need to do this manually
+				 */
+				if ( s.sTableId == this.id )
+				{
+					allSettings.splice( i, 1 );
+					break;
+				}
+			}
+			
+			/* Ensure the table has an ID - required for accessibility */
+			if ( sId === null || sId === "" )
+			{
+				sId = "DataTables_Table_"+(DataTable.ext._unique++);
+				this.id = sId;
+			}
+			
+			/* Create the settings object for this table and set some of the default parameters */
+			var oSettings = $.extend( true, {}, DataTable.models.oSettings, {
+				"sDestroyWidth": $this[0].style.width,
+				"sInstance":     sId,
+				"sTableId":      sId
+			} );
+			oSettings.nTable = this;
+			oSettings.oApi   = _that.internal;
+			oSettings.oInit  = oInit;
+			
+			allSettings.push( oSettings );
+			
+			// Need to add the instance after the instance after the settings object has been added
+			// to the settings array, so we can self reference the table instance if more than one
+			oSettings.oInstance = (_that.length===1) ? _that : $this.dataTable();
+			
+			// Backwards compatibility, before we apply all the defaults
+			_fnCompatOpts( oInit );
+			_fnLanguageCompat( oInit.oLanguage );
+			
+			// If the length menu is given, but the init display length is not, use the length menu
+			if ( oInit.aLengthMenu && ! oInit.iDisplayLength )
+			{
+				oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ?
+					oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];
+			}
+			
+			// Apply the defaults and init options to make a single init object will all
+			// options defined from defaults and instance options.
+			oInit = _fnExtend( $.extend( true, {}, defaults ), oInit );
+			
+			
+			// Map the initialisation options onto the settings object
+			_fnMap( oSettings.oFeatures, oInit, [
+				"bPaginate",
+				"bLengthChange",
+				"bFilter",
+				"bSort",
+				"bSortMulti",
+				"bInfo",
+				"bProcessing",
+				"bAutoWidth",
+				"bSortClasses",
+				"bServerSide",
+				"bDeferRender"
+			] );
+			_fnMap( oSettings, oInit, [
+				"asStripeClasses",
+				"ajax",
+				"fnServerData",
+				"fnFormatNumber",
+				"sServerMethod",
+				"aaSorting",
+				"aaSortingFixed",
+				"aLengthMenu",
+				"sPaginationType",
+				"sAjaxSource",
+				"sAjaxDataProp",
+				"iStateDuration",
+				"sDom",
+				"bSortCellsTop",
+				"iTabIndex",
+				"fnStateLoadCallback",
+				"fnStateSaveCallback",
+				"renderer",
+				"searchDelay",
+				"rowId",
+				[ "iCookieDuration", "iStateDuration" ], // backwards compat
+				[ "oSearch", "oPreviousSearch" ],
+				[ "aoSearchCols", "aoPreSearchCols" ],
+				[ "iDisplayLength", "_iDisplayLength" ]
+			] );
+			_fnMap( oSettings.oScroll, oInit, [
+				[ "sScrollX", "sX" ],
+				[ "sScrollXInner", "sXInner" ],
+				[ "sScrollY", "sY" ],
+				[ "bScrollCollapse", "bCollapse" ]
+			] );
+			_fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" );
+			
+			/* Callback functions which are array driven */
+			_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );
+			_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );
+			_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );
+			_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );
+			_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );
+			_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );
+			_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );
+			_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );
+			_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );
+			_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );
+			_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );
+			
+			oSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId );
+			
+			/* Browser support detection */
+			_fnBrowserDetect( oSettings );
+			
+			var oClasses = oSettings.oClasses;
+			
+			$.extend( oClasses, DataTable.ext.classes, oInit.oClasses );
+			$this.addClass( oClasses.sTable );
+			
+			
+			if ( oSettings.iInitDisplayStart === undefined )
+			{
+				/* Display start point, taking into account the save saving */
+				oSettings.iInitDisplayStart = oInit.iDisplayStart;
+				oSettings._iDisplayStart = oInit.iDisplayStart;
+			}
+			
+			if ( oInit.iDeferLoading !== null )
+			{
+				oSettings.bDeferLoading = true;
+				var tmp = $.isArray( oInit.iDeferLoading );
+				oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;
+				oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;
+			}
+			
+			/* Language definitions */
+			var oLanguage = oSettings.oLanguage;
+			$.extend( true, oLanguage, oInit.oLanguage );
+			
+			if ( oLanguage.sUrl )
+			{
+				/* Get the language definitions from a file - because this Ajax call makes the language
+				 * get async to the remainder of this function we use bInitHandedOff to indicate that
+				 * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor
+				 */
+				$.ajax( {
+					dataType: 'json',
+					url: oLanguage.sUrl,
+					success: function ( json ) {
+						_fnLanguageCompat( json );
+						_fnCamelToHungarian( defaults.oLanguage, json );
+						$.extend( true, oLanguage, json );
+						_fnInitialise( oSettings );
+					},
+					error: function () {
+						// Error occurred loading language file, continue on as best we can
+						_fnInitialise( oSettings );
+					}
+				} );
+				bInitHandedOff = true;
+			}
+			
+			/*
+			 * Stripes
+			 */
+			if ( oInit.asStripeClasses === null )
+			{
+				oSettings.asStripeClasses =[
+					oClasses.sStripeOdd,
+					oClasses.sStripeEven
+				];
+			}
+			
+			/* Remove row stripe classes if they are already on the table row */
+			var stripeClasses = oSettings.asStripeClasses;
+			var rowOne = $this.children('tbody').find('tr').eq(0);
+			if ( $.inArray( true, $.map( stripeClasses, function(el, i) {
+				return rowOne.hasClass(el);
+			} ) ) !== -1 ) {
+				$('tbody tr', this).removeClass( stripeClasses.join(' ') );
+				oSettings.asDestroyStripes = stripeClasses.slice();
+			}
+			
+			/*
+			 * Columns
+			 * See if we should load columns automatically or use defined ones
+			 */
+			var anThs = [];
+			var aoColumnsInit;
+			var nThead = this.getElementsByTagName('thead');
+			if ( nThead.length !== 0 )
+			{
+				_fnDetectHeader( oSettings.aoHeader, nThead[0] );
+				anThs = _fnGetUniqueThs( oSettings );
+			}
+			
+			/* If not given a column array, generate one with nulls */
+			if ( oInit.aoColumns === null )
+			{
+				aoColumnsInit = [];
+				for ( i=0, iLen=anThs.length ; i<iLen ; i++ )
+				{
+					aoColumnsInit.push( null );
+				}
+			}
+			else
+			{
+				aoColumnsInit = oInit.aoColumns;
+			}
+			
+			/* Add the columns */
+			for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )
+			{
+				_fnAddColumn( oSettings, anThs ? anThs[i] : null );
+			}
+			
+			/* Apply the column definitions */
+			_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {
+				_fnColumnOptions( oSettings, iCol, oDef );
+			} );
+			
+			/* HTML5 attribute detection - build an mData object automatically if the
+			 * attributes are found
+			 */
+			if ( rowOne.length ) {
+				var a = function ( cell, name ) {
+					return cell.getAttribute( 'data-'+name ) !== null ? name : null;
+				};
+			
+				$( rowOne[0] ).children('th, td').each( function (i, cell) {
+					var col = oSettings.aoColumns[i];
+			
+					if ( col.mData === i ) {
+						var sort = a( cell, 'sort' ) || a( cell, 'order' );
+						var filter = a( cell, 'filter' ) || a( cell, 'search' );
+			
+						if ( sort !== null || filter !== null ) {
+							col.mData = {
+								_:      i+'.display',
+								sort:   sort !== null   ? i+'.@data-'+sort   : undefined,
+								type:   sort !== null   ? i+'.@data-'+sort   : undefined,
+								filter: filter !== null ? i+'.@data-'+filter : undefined
+							};
+			
+							_fnColumnOptions( oSettings, i );
+						}
+					}
+				} );
+			}
+			
+			var features = oSettings.oFeatures;
+			var loadedInit = function () {
+				/*
+				 * Sorting
+				 * @todo For modularisation (1.11) this needs to do into a sort start up handler
+				 */
+			
+				// If aaSorting is not defined, then we use the first indicator in asSorting
+				// in case that has been altered, so the default sort reflects that option
+				if ( oInit.aaSorting === undefined ) {
+					var sorting = oSettings.aaSorting;
+					for ( i=0, iLen=sorting.length ; i<iLen ; i++ ) {
+						sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];
+					}
+				}
+			
+				/* Do a first pass on the sorting classes (allows any size changes to be taken into
+				 * account, and also will apply sorting disabled classes if disabled
+				 */
+				_fnSortingClasses( oSettings );
+			
+				if ( features.bSort ) {
+					_fnCallbackReg( oSettings, 'aoDrawCallback', function () {
+						if ( oSettings.bSorted ) {
+							var aSort = _fnSortFlatten( oSettings );
+							var sortedColumns = {};
+			
+							$.each( aSort, function (i, val) {
+								sortedColumns[ val.src ] = val.dir;
+							} );
+			
+							_fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] );
+							_fnSortAria( oSettings );
+						}
+					} );
+				}
+			
+				_fnCallbackReg( oSettings, 'aoDrawCallback', function () {
+					if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {
+						_fnSortingClasses( oSettings );
+					}
+				}, 'sc' );
+			
+			
+				/*
+				 * Final init
+				 * Cache the header, body and footer as required, creating them if needed
+				 */
+			
+				// Work around for Webkit bug 83867 - store the caption-side before removing from doc
+				var captions = $this.children('caption').each( function () {
+					this._captionSide = $(this).css('caption-side');
+				} );
+			
+				var thead = $this.children('thead');
+				if ( thead.length === 0 ) {
+					thead = $('<thead/>').appendTo($this);
+				}
+				oSettings.nTHead = thead[0];
+			
+				var tbody = $this.children('tbody');
+				if ( tbody.length === 0 ) {
+					tbody = $('<tbody/>').appendTo($this);
+				}
+				oSettings.nTBody = tbody[0];
+			
+				var tfoot = $this.children('tfoot');
+				if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) {
+					// If we are a scrolling table, and no footer has been given, then we need to create
+					// a tfoot element for the caption element to be appended to
+					tfoot = $('<tfoot/>').appendTo($this);
+				}
+			
+				if ( tfoot.length === 0 || tfoot.children().length === 0 ) {
+					$this.addClass( oClasses.sNoFooter );
+				}
+				else if ( tfoot.length > 0 ) {
+					oSettings.nTFoot = tfoot[0];
+					_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );
+				}
+			
+				/* Check if there is data passing into the constructor */
+				if ( oInit.aaData ) {
+					for ( i=0 ; i<oInit.aaData.length ; i++ ) {
+						_fnAddData( oSettings, oInit.aaData[ i ] );
+					}
+				}
+				else if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' ) {
+					/* Grab the data from the page - only do this when deferred loading or no Ajax
+					 * source since there is no point in reading the DOM data if we are then going
+					 * to replace it with Ajax data
+					 */
+					_fnAddTr( oSettings, $(oSettings.nTBody).children('tr') );
+				}
+			
+				/* Copy the data index array */
+				oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+			
+				/* Initialisation complete - table can be drawn */
+				oSettings.bInitialised = true;
+			
+				/* Check if we need to initialise the table (it might not have been handed off to the
+				 * language processor)
+				 */
+				if ( bInitHandedOff === false ) {
+					_fnInitialise( oSettings );
+				}
+			};
+			
+			/* Must be done after everything which can be overridden by the state saving! */
+			if ( oInit.bStateSave )
+			{
+				features.bStateSave = true;
+				_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );
+				_fnLoadState( oSettings, oInit, loadedInit );
+			}
+			else {
+				loadedInit();
+			}
+			
+		} );
+		_that = null;
+		return this;
+	};
+
+	
+	/*
+	 * It is useful to have variables which are scoped locally so only the
+	 * DataTables functions can access them and they don't leak into global space.
+	 * At the same time these functions are often useful over multiple files in the
+	 * core and API, so we list, or at least document, all variables which are used
+	 * by DataTables as private variables here. This also ensures that there is no
+	 * clashing of variable names and that they can easily referenced for reuse.
+	 */
+	
+	
+	// Defined else where
+	//  _selector_run
+	//  _selector_opts
+	//  _selector_first
+	//  _selector_row_indexes
+	
+	var _ext; // DataTable.ext
+	var _Api; // DataTable.Api
+	var _api_register; // DataTable.Api.register
+	var _api_registerPlural; // DataTable.Api.registerPlural
+	
+	var _re_dic = {};
+	var _re_new_lines = /[\r\n\u2028]/g;
+	var _re_html = /<.*?>/g;
+	
+	// This is not strict ISO8601 - Date.parse() is quite lax, although
+	// implementations differ between browsers.
+	var _re_date = /^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/;
+	
+	// Escape regular expression special characters
+	var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' );
+	
+	// http://en.wikipedia.org/wiki/Foreign_exchange_market
+	// - \u20BD - Russian ruble.
+	// - \u20a9 - South Korean Won
+	// - \u20BA - Turkish Lira
+	// - \u20B9 - Indian Rupee
+	// - R - Brazil (R$) and South Africa
+	// - fr - Swiss Franc
+	// - kr - Swedish krona, Norwegian krone and Danish krone
+	// - \u2009 is thin space and \u202F is narrow no-break space, both used in many
+	// - Ƀ - Bitcoin
+	// - Ξ - Ethereum
+	//   standards as thousands separators.
+	var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi;
+	
+	
+	var _empty = function ( d ) {
+		return !d || d === true || d === '-' ? true : false;
+	};
+	
+	
+	var _intVal = function ( s ) {
+		var integer = parseInt( s, 10 );
+		return !isNaN(integer) && isFinite(s) ? integer : null;
+	};
+	
+	// Convert from a formatted number with characters other than `.` as the
+	// decimal place, to a Javascript number
+	var _numToDecimal = function ( num, decimalPoint ) {
+		// Cache created regular expressions for speed as this function is called often
+		if ( ! _re_dic[ decimalPoint ] ) {
+			_re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' );
+		}
+		return typeof num === 'string' && decimalPoint !== '.' ?
+			num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :
+			num;
+	};
+	
+	
+	var _isNumber = function ( d, decimalPoint, formatted ) {
+		var strType = typeof d === 'string';
+	
+		// If empty return immediately so there must be a number if it is a
+		// formatted string (this stops the string "k", or "kr", etc being detected
+		// as a formatted number for currency
+		if ( _empty( d ) ) {
+			return true;
+		}
+	
+		if ( decimalPoint && strType ) {
+			d = _numToDecimal( d, decimalPoint );
+		}
+	
+		if ( formatted && strType ) {
+			d = d.replace( _re_formatted_numeric, '' );
+		}
+	
+		return !isNaN( parseFloat(d) ) && isFinite( d );
+	};
+	
+	
+	// A string without HTML in it can be considered to be HTML still
+	var _isHtml = function ( d ) {
+		return _empty( d ) || typeof d === 'string';
+	};
+	
+	
+	var _htmlNumeric = function ( d, decimalPoint, formatted ) {
+		if ( _empty( d ) ) {
+			return true;
+		}
+	
+		var html = _isHtml( d );
+		return ! html ?
+			null :
+			_isNumber( _stripHtml( d ), decimalPoint, formatted ) ?
+				true :
+				null;
+	};
+	
+	
+	var _pluck = function ( a, prop, prop2 ) {
+		var out = [];
+		var i=0, ien=a.length;
+	
+		// Could have the test in the loop for slightly smaller code, but speed
+		// is essential here
+		if ( prop2 !== undefined ) {
+			for ( ; i<ien ; i++ ) {
+				if ( a[i] && a[i][ prop ] ) {
+					out.push( a[i][ prop ][ prop2 ] );
+				}
+			}
+		}
+		else {
+			for ( ; i<ien ; i++ ) {
+				if ( a[i] ) {
+					out.push( a[i][ prop ] );
+				}
+			}
+		}
+	
+		return out;
+	};
+	
+	
+	// Basically the same as _pluck, but rather than looping over `a` we use `order`
+	// as the indexes to pick from `a`
+	var _pluck_order = function ( a, order, prop, prop2 )
+	{
+		var out = [];
+		var i=0, ien=order.length;
+	
+		// Could have the test in the loop for slightly smaller code, but speed
+		// is essential here
+		if ( prop2 !== undefined ) {
+			for ( ; i<ien ; i++ ) {
+				if ( a[ order[i] ][ prop ] ) {
+					out.push( a[ order[i] ][ prop ][ prop2 ] );
+				}
+			}
+		}
+		else {
+			for ( ; i<ien ; i++ ) {
+				out.push( a[ order[i] ][ prop ] );
+			}
+		}
+	
+		return out;
+	};
+	
+	
+	var _range = function ( len, start )
+	{
+		var out = [];
+		var end;
+	
+		if ( start === undefined ) {
+			start = 0;
+			end = len;
+		}
+		else {
+			end = start;
+			start = len;
+		}
+	
+		for ( var i=start ; i<end ; i++ ) {
+			out.push( i );
+		}
+	
+		return out;
+	};
+	
+	
+	var _removeEmpty = function ( a )
+	{
+		var out = [];
+	
+		for ( var i=0, ien=a.length ; i<ien ; i++ ) {
+			if ( a[i] ) { // careful - will remove all falsy values!
+				out.push( a[i] );
+			}
+		}
+	
+		return out;
+	};
+	
+	
+	var _stripHtml = function ( d ) {
+		return d.replace( _re_html, '' );
+	};
+	
+	
+	/**
+	 * Determine if all values in the array are unique. This means we can short
+	 * cut the _unique method at the cost of a single loop. A sorted array is used
+	 * to easily check the values.
+	 *
+	 * @param  {array} src Source array
+	 * @return {boolean} true if all unique, false otherwise
+	 * @ignore
+	 */
+	var _areAllUnique = function ( src ) {
+		if ( src.length < 2 ) {
+			return true;
+		}
+	
+		var sorted = src.slice().sort();
+		var last = sorted[0];
+	
+		for ( var i=1, ien=sorted.length ; i<ien ; i++ ) {
+			if ( sorted[i] === last ) {
+				return false;
+			}
+	
+			last = sorted[i];
+		}
+	
+		return true;
+	};
+	
+	
+	/**
+	 * Find the unique elements in a source array.
+	 *
+	 * @param  {array} src Source array
+	 * @return {array} Array of unique items
+	 * @ignore
+	 */
+	var _unique = function ( src )
+	{
+		if ( _areAllUnique( src ) ) {
+			return src.slice();
+		}
+	
+		// A faster unique method is to use object keys to identify used values,
+		// but this doesn't work with arrays or objects, which we must also
+		// consider. See jsperf.com/compare-array-unique-versions/4 for more
+		// information.
+		var
+			out = [],
+			val,
+			i, ien=src.length,
+			j, k=0;
+	
+		again: for ( i=0 ; i<ien ; i++ ) {
+			val = src[i];
+	
+			for ( j=0 ; j<k ; j++ ) {
+				if ( out[j] === val ) {
+					continue again;
+				}
+			}
+	
+			out.push( val );
+			k++;
+		}
+	
+		return out;
+	};
+	
+	
+	/**
+	 * DataTables utility methods
+	 * 
+	 * This namespace provides helper methods that DataTables uses internally to
+	 * create a DataTable, but which are not exclusively used only for DataTables.
+	 * These methods can be used by extension authors to save the duplication of
+	 * code.
+	 *
+	 *  @namespace
+	 */
+	DataTable.util = {
+		/**
+		 * Throttle the calls to a function. Arguments and context are maintained
+		 * for the throttled function.
+		 *
+		 * @param {function} fn Function to be called
+		 * @param {integer} freq Call frequency in mS
+		 * @return {function} Wrapped function
+		 */
+		throttle: function ( fn, freq ) {
+			var
+				frequency = freq !== undefined ? freq : 200,
+				last,
+				timer;
+	
+			return function () {
+				var
+					that = this,
+					now  = +new Date(),
+					args = arguments;
+	
+				if ( last && now < last + frequency ) {
+					clearTimeout( timer );
+	
+					timer = setTimeout( function () {
+						last = undefined;
+						fn.apply( that, args );
+					}, frequency );
+				}
+				else {
+					last = now;
+					fn.apply( that, args );
+				}
+			};
+		},
+	
+	
+		/**
+		 * Escape a string such that it can be used in a regular expression
+		 *
+		 *  @param {string} val string to escape
+		 *  @returns {string} escaped string
+		 */
+		escapeRegex: function ( val ) {
+			return val.replace( _re_escape_regex, '\\$1' );
+		}
+	};
+	
+	
+	
+	/**
+	 * Create a mapping object that allows camel case parameters to be looked up
+	 * for their Hungarian counterparts. The mapping is stored in a private
+	 * parameter called `_hungarianMap` which can be accessed on the source object.
+	 *  @param {object} o
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnHungarianMap ( o )
+	{
+		var
+			hungarian = 'a aa ai ao as b fn i m o s ',
+			match,
+			newKey,
+			map = {};
+	
+		$.each( o, function (key, val) {
+			match = key.match(/^([^A-Z]+?)([A-Z])/);
+	
+			if ( match && hungarian.indexOf(match[1]+' ') !== -1 )
+			{
+				newKey = key.replace( match[0], match[2].toLowerCase() );
+				map[ newKey ] = key;
+	
+				if ( match[1] === 'o' )
+				{
+					_fnHungarianMap( o[key] );
+				}
+			}
+		} );
+	
+		o._hungarianMap = map;
+	}
+	
+	
+	/**
+	 * Convert from camel case parameters to Hungarian, based on a Hungarian map
+	 * created by _fnHungarianMap.
+	 *  @param {object} src The model object which holds all parameters that can be
+	 *    mapped.
+	 *  @param {object} user The object to convert from camel case to Hungarian.
+	 *  @param {boolean} force When set to `true`, properties which already have a
+	 *    Hungarian value in the `user` object will be overwritten. Otherwise they
+	 *    won't be.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCamelToHungarian ( src, user, force )
+	{
+		if ( ! src._hungarianMap ) {
+			_fnHungarianMap( src );
+		}
+	
+		var hungarianKey;
+	
+		$.each( user, function (key, val) {
+			hungarianKey = src._hungarianMap[ key ];
+	
+			if ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) )
+			{
+				// For objects, we need to buzz down into the object to copy parameters
+				if ( hungarianKey.charAt(0) === 'o' )
+				{
+					// Copy the camelCase options over to the hungarian
+					if ( ! user[ hungarianKey ] ) {
+						user[ hungarianKey ] = {};
+					}
+					$.extend( true, user[hungarianKey], user[key] );
+	
+					_fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force );
+				}
+				else {
+					user[hungarianKey] = user[ key ];
+				}
+			}
+		} );
+	}
+	
+	
+	/**
+	 * Language compatibility - when certain options are given, and others aren't, we
+	 * need to duplicate the values over, in order to provide backwards compatibility
+	 * with older language files.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnLanguageCompat( lang )
+	{
+		// Note the use of the Hungarian notation for the parameters in this method as
+		// this is called after the mapping of camelCase to Hungarian
+		var defaults = DataTable.defaults.oLanguage;
+	
+		// Default mapping
+		var defaultDecimal = defaults.sDecimal;
+		if ( defaultDecimal ) {
+			_addNumericSort( defaultDecimal );
+		}
+	
+		if ( lang ) {
+			var zeroRecords = lang.sZeroRecords;
+	
+			// Backwards compatibility - if there is no sEmptyTable given, then use the same as
+			// sZeroRecords - assuming that is given.
+			if ( ! lang.sEmptyTable && zeroRecords &&
+				defaults.sEmptyTable === "No data available in table" )
+			{
+				_fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );
+			}
+	
+			// Likewise with loading records
+			if ( ! lang.sLoadingRecords && zeroRecords &&
+				defaults.sLoadingRecords === "Loading..." )
+			{
+				_fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );
+			}
+	
+			// Old parameter name of the thousands separator mapped onto the new
+			if ( lang.sInfoThousands ) {
+				lang.sThousands = lang.sInfoThousands;
+			}
+	
+			var decimal = lang.sDecimal;
+			if ( decimal && defaultDecimal !== decimal ) {
+				_addNumericSort( decimal );
+			}
+		}
+	}
+	
+	
+	/**
+	 * Map one parameter onto another
+	 *  @param {object} o Object to map
+	 *  @param {*} knew The new parameter name
+	 *  @param {*} old The old parameter name
+	 */
+	var _fnCompatMap = function ( o, knew, old ) {
+		if ( o[ knew ] !== undefined ) {
+			o[ old ] = o[ knew ];
+		}
+	};
+	
+	
+	/**
+	 * Provide backwards compatibility for the main DT options. Note that the new
+	 * options are mapped onto the old parameters, so this is an external interface
+	 * change only.
+	 *  @param {object} init Object to map
+	 */
+	function _fnCompatOpts ( init )
+	{
+		_fnCompatMap( init, 'ordering',      'bSort' );
+		_fnCompatMap( init, 'orderMulti',    'bSortMulti' );
+		_fnCompatMap( init, 'orderClasses',  'bSortClasses' );
+		_fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' );
+		_fnCompatMap( init, 'order',         'aaSorting' );
+		_fnCompatMap( init, 'orderFixed',    'aaSortingFixed' );
+		_fnCompatMap( init, 'paging',        'bPaginate' );
+		_fnCompatMap( init, 'pagingType',    'sPaginationType' );
+		_fnCompatMap( init, 'pageLength',    'iDisplayLength' );
+		_fnCompatMap( init, 'searching',     'bFilter' );
+	
+		// Boolean initialisation of x-scrolling
+		if ( typeof init.sScrollX === 'boolean' ) {
+			init.sScrollX = init.sScrollX ? '100%' : '';
+		}
+		if ( typeof init.scrollX === 'boolean' ) {
+			init.scrollX = init.scrollX ? '100%' : '';
+		}
+	
+		// Column search objects are in an array, so it needs to be converted
+		// element by element
+		var searchCols = init.aoSearchCols;
+	
+		if ( searchCols ) {
+			for ( var i=0, ien=searchCols.length ; i<ien ; i++ ) {
+				if ( searchCols[i] ) {
+					_fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Provide backwards compatibility for column options. Note that the new options
+	 * are mapped onto the old parameters, so this is an external interface change
+	 * only.
+	 *  @param {object} init Object to map
+	 */
+	function _fnCompatCols ( init )
+	{
+		_fnCompatMap( init, 'orderable',     'bSortable' );
+		_fnCompatMap( init, 'orderData',     'aDataSort' );
+		_fnCompatMap( init, 'orderSequence', 'asSorting' );
+		_fnCompatMap( init, 'orderDataType', 'sortDataType' );
+	
+		// orderData can be given as an integer
+		var dataSort = init.aDataSort;
+		if ( typeof dataSort === 'number' && ! $.isArray( dataSort ) ) {
+			init.aDataSort = [ dataSort ];
+		}
+	}
+	
+	
+	/**
+	 * Browser feature detection for capabilities, quirks
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnBrowserDetect( settings )
+	{
+		// We don't need to do this every time DataTables is constructed, the values
+		// calculated are specific to the browser and OS configuration which we
+		// don't expect to change between initialisations
+		if ( ! DataTable.__browser ) {
+			var browser = {};
+			DataTable.__browser = browser;
+	
+			// Scrolling feature / quirks detection
+			var n = $('<div/>')
+				.css( {
+					position: 'fixed',
+					top: 0,
+					left: $(window).scrollLeft()*-1, // allow for scrolling
+					height: 1,
+					width: 1,
+					overflow: 'hidden'
+				} )
+				.append(
+					$('<div/>')
+						.css( {
+							position: 'absolute',
+							top: 1,
+							left: 1,
+							width: 100,
+							overflow: 'scroll'
+						} )
+						.append(
+							$('<div/>')
+								.css( {
+									width: '100%',
+									height: 10
+								} )
+						)
+				)
+				.appendTo( 'body' );
+	
+			var outer = n.children();
+			var inner = outer.children();
+	
+			// Numbers below, in order, are:
+			// inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth
+			//
+			// IE6 XP:                           100 100 100  83
+			// IE7 Vista:                        100 100 100  83
+			// IE 8+ Windows:                     83  83 100  83
+			// Evergreen Windows:                 83  83 100  83
+			// Evergreen Mac with scrollbars:     85  85 100  85
+			// Evergreen Mac without scrollbars: 100 100 100 100
+	
+			// Get scrollbar width
+			browser.barWidth = outer[0].offsetWidth - outer[0].clientWidth;
+	
+			// IE6/7 will oversize a width 100% element inside a scrolling element, to
+			// include the width of the scrollbar, while other browsers ensure the inner
+			// element is contained without forcing scrolling
+			browser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100;
+	
+			// In rtl text layout, some browsers (most, but not all) will place the
+			// scrollbar on the left, rather than the right.
+			browser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1;
+	
+			// IE8- don't provide height and width for getBoundingClientRect
+			browser.bBounding = n[0].getBoundingClientRect().width ? true : false;
+	
+			n.remove();
+		}
+	
+		$.extend( settings.oBrowser, DataTable.__browser );
+		settings.oScroll.iBarWidth = DataTable.__browser.barWidth;
+	}
+	
+	
+	/**
+	 * Array.prototype reduce[Right] method, used for browsers which don't support
+	 * JS 1.6. Done this way to reduce code size, since we iterate either way
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnReduce ( that, fn, init, start, end, inc )
+	{
+		var
+			i = start,
+			value,
+			isSet = false;
+	
+		if ( init !== undefined ) {
+			value = init;
+			isSet = true;
+		}
+	
+		while ( i !== end ) {
+			if ( ! that.hasOwnProperty(i) ) {
+				continue;
+			}
+	
+			value = isSet ?
+				fn( value, that[i], i, that ) :
+				that[i];
+	
+			isSet = true;
+			i += inc;
+		}
+	
+		return value;
+	}
+	
+	/**
+	 * Add a column to the list used for the table with default values
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {node} nTh The th element for this column
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddColumn( oSettings, nTh )
+	{
+		// Add column to aoColumns array
+		var oDefaults = DataTable.defaults.column;
+		var iCol = oSettings.aoColumns.length;
+		var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {
+			"nTh": nTh ? nTh : document.createElement('th'),
+			"sTitle":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',
+			"aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],
+			"mData": oDefaults.mData ? oDefaults.mData : iCol,
+			idx: iCol
+		} );
+		oSettings.aoColumns.push( oCol );
+	
+		// Add search object for column specific search. Note that the `searchCols[ iCol ]`
+		// passed into extend can be undefined. This allows the user to give a default
+		// with only some of the parameters defined, and also not give a default
+		var searchCols = oSettings.aoPreSearchCols;
+		searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );
+	
+		// Use the default column options function to initialise classes etc
+		_fnColumnOptions( oSettings, iCol, $(nTh).data() );
+	}
+	
+	
+	/**
+	 * Apply options for a column
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iCol column index to consider
+	 *  @param {object} oOptions object with sType, bVisible and bSearchable etc
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnColumnOptions( oSettings, iCol, oOptions )
+	{
+		var oCol = oSettings.aoColumns[ iCol ];
+		var oClasses = oSettings.oClasses;
+		var th = $(oCol.nTh);
+	
+		// Try to get width information from the DOM. We can't get it from CSS
+		// as we'd need to parse the CSS stylesheet. `width` option can override
+		if ( ! oCol.sWidthOrig ) {
+			// Width attribute
+			oCol.sWidthOrig = th.attr('width') || null;
+	
+			// Style attribute
+			var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/);
+			if ( t ) {
+				oCol.sWidthOrig = t[1];
+			}
+		}
+	
+		/* User specified column options */
+		if ( oOptions !== undefined && oOptions !== null )
+		{
+			// Backwards compatibility
+			_fnCompatCols( oOptions );
+	
+			// Map camel case parameters to their Hungarian counterparts
+			_fnCamelToHungarian( DataTable.defaults.column, oOptions, true );
+	
+			/* Backwards compatibility for mDataProp */
+			if ( oOptions.mDataProp !== undefined && !oOptions.mData )
+			{
+				oOptions.mData = oOptions.mDataProp;
+			}
+	
+			if ( oOptions.sType )
+			{
+				oCol._sManualType = oOptions.sType;
+			}
+	
+			// `class` is a reserved word in Javascript, so we need to provide
+			// the ability to use a valid name for the camel case input
+			if ( oOptions.className && ! oOptions.sClass )
+			{
+				oOptions.sClass = oOptions.className;
+			}
+			if ( oOptions.sClass ) {
+				th.addClass( oOptions.sClass );
+			}
+	
+			$.extend( oCol, oOptions );
+			_fnMap( oCol, oOptions, "sWidth", "sWidthOrig" );
+	
+			/* iDataSort to be applied (backwards compatibility), but aDataSort will take
+			 * priority if defined
+			 */
+			if ( oOptions.iDataSort !== undefined )
+			{
+				oCol.aDataSort = [ oOptions.iDataSort ];
+			}
+			_fnMap( oCol, oOptions, "aDataSort" );
+		}
+	
+		/* Cache the data get and set functions for speed */
+		var mDataSrc = oCol.mData;
+		var mData = _fnGetObjectDataFn( mDataSrc );
+		var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;
+	
+		var attrTest = function( src ) {
+			return typeof src === 'string' && src.indexOf('@') !== -1;
+		};
+		oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && (
+			attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)
+		);
+		oCol._setter = null;
+	
+		oCol.fnGetData = function (rowData, type, meta) {
+			var innerData = mData( rowData, type, undefined, meta );
+	
+			return mRender && type ?
+				mRender( innerData, type, rowData, meta ) :
+				innerData;
+		};
+		oCol.fnSetData = function ( rowData, val, meta ) {
+			return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );
+		};
+	
+		// Indicate if DataTables should read DOM data as an object or array
+		// Used in _fnGetRowElements
+		if ( typeof mDataSrc !== 'number' ) {
+			oSettings._rowReadObject = true;
+		}
+	
+		/* Feature sorting overrides column specific when off */
+		if ( !oSettings.oFeatures.bSort )
+		{
+			oCol.bSortable = false;
+			th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called
+		}
+	
+		/* Check that the class assignment is correct for sorting */
+		var bAsc = $.inArray('asc', oCol.asSorting) !== -1;
+		var bDesc = $.inArray('desc', oCol.asSorting) !== -1;
+		if ( !oCol.bSortable || (!bAsc && !bDesc) )
+		{
+			oCol.sSortingClass = oClasses.sSortableNone;
+			oCol.sSortingClassJUI = "";
+		}
+		else if ( bAsc && !bDesc )
+		{
+			oCol.sSortingClass = oClasses.sSortableAsc;
+			oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;
+		}
+		else if ( !bAsc && bDesc )
+		{
+			oCol.sSortingClass = oClasses.sSortableDesc;
+			oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;
+		}
+		else
+		{
+			oCol.sSortingClass = oClasses.sSortable;
+			oCol.sSortingClassJUI = oClasses.sSortJUI;
+		}
+	}
+	
+	
+	/**
+	 * Adjust the table column widths for new data. Note: you would probably want to
+	 * do a redraw after calling this function!
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAdjustColumnSizing ( settings )
+	{
+		/* Not interested in doing column width calculation if auto-width is disabled */
+		if ( settings.oFeatures.bAutoWidth !== false )
+		{
+			var columns = settings.aoColumns;
+	
+			_fnCalculateColumnWidths( settings );
+			for ( var i=0 , iLen=columns.length ; i<iLen ; i++ )
+			{
+				columns[i].nTh.style.width = columns[i].sWidth;
+			}
+		}
+	
+		var scroll = settings.oScroll;
+		if ( scroll.sY !== '' || scroll.sX !== '')
+		{
+			_fnScrollDraw( settings );
+		}
+	
+		_fnCallbackFire( settings, null, 'column-sizing', [settings] );
+	}
+	
+	
+	/**
+	 * Covert the index of a visible column to the index in the data array (take account
+	 * of hidden columns)
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iMatch Visible column index to lookup
+	 *  @returns {int} i the data index
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnVisibleToColumnIndex( oSettings, iMatch )
+	{
+		var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+	
+		return typeof aiVis[iMatch] === 'number' ?
+			aiVis[iMatch] :
+			null;
+	}
+	
+	
+	/**
+	 * Covert the index of an index in the data array and convert it to the visible
+	 *   column index (take account of hidden columns)
+	 *  @param {int} iMatch Column index to lookup
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {int} i the data index
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnColumnIndexToVisible( oSettings, iMatch )
+	{
+		var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+		var iPos = $.inArray( iMatch, aiVis );
+	
+		return iPos !== -1 ? iPos : null;
+	}
+	
+	
+	/**
+	 * Get the number of visible columns
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {int} i the number of visible columns
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnVisbleColumns( oSettings )
+	{
+		var vis = 0;
+	
+		// No reduce in IE8, use a loop for now
+		$.each( oSettings.aoColumns, function ( i, col ) {
+			if ( col.bVisible && $(col.nTh).css('display') !== 'none' ) {
+				vis++;
+			}
+		} );
+	
+		return vis;
+	}
+	
+	
+	/**
+	 * Get an array of column indexes that match a given property
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {string} sParam Parameter in aoColumns to look for - typically
+	 *    bVisible or bSearchable
+	 *  @returns {array} Array of indexes with matched properties
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetColumns( oSettings, sParam )
+	{
+		var a = [];
+	
+		$.map( oSettings.aoColumns, function(val, i) {
+			if ( val[sParam] ) {
+				a.push( i );
+			}
+		} );
+	
+		return a;
+	}
+	
+	
+	/**
+	 * Calculate the 'type' of a column
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnColumnTypes ( settings )
+	{
+		var columns = settings.aoColumns;
+		var data = settings.aoData;
+		var types = DataTable.ext.type.detect;
+		var i, ien, j, jen, k, ken;
+		var col, cell, detectedType, cache;
+	
+		// For each column, spin over the 
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			col = columns[i];
+			cache = [];
+	
+			if ( ! col.sType && col._sManualType ) {
+				col.sType = col._sManualType;
+			}
+			else if ( ! col.sType ) {
+				for ( j=0, jen=types.length ; j<jen ; j++ ) {
+					for ( k=0, ken=data.length ; k<ken ; k++ ) {
+						// Use a cache array so we only need to get the type data
+						// from the formatter once (when using multiple detectors)
+						if ( cache[k] === undefined ) {
+							cache[k] = _fnGetCellData( settings, k, i, 'type' );
+						}
+	
+						detectedType = types[j]( cache[k], settings );
+	
+						// If null, then this type can't apply to this column, so
+						// rather than testing all cells, break out. There is an
+						// exception for the last type which is `html`. We need to
+						// scan all rows since it is possible to mix string and HTML
+						// types
+						if ( ! detectedType && j !== types.length-1 ) {
+							break;
+						}
+	
+						// Only a single match is needed for html type since it is
+						// bottom of the pile and very similar to string
+						if ( detectedType === 'html' ) {
+							break;
+						}
+					}
+	
+					// Type is valid for all data points in the column - use this
+					// type
+					if ( detectedType ) {
+						col.sType = detectedType;
+						break;
+					}
+				}
+	
+				// Fall back - if no type was detected, always use string
+				if ( ! col.sType ) {
+					col.sType = 'string';
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Take the column definitions and static columns arrays and calculate how
+	 * they relate to column indexes. The callback function will then apply the
+	 * definition found for a column to a suitable configuration object.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {array} aoColDefs The aoColumnDefs array that is to be applied
+	 *  @param {array} aoCols The aoColumns array that defines columns individually
+	 *  @param {function} fn Callback function - takes two parameters, the calculated
+	 *    column index and the definition for that column.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )
+	{
+		var i, iLen, j, jLen, k, kLen, def;
+		var columns = oSettings.aoColumns;
+	
+		// Column definitions with aTargets
+		if ( aoColDefs )
+		{
+			/* Loop over the definitions array - loop in reverse so first instance has priority */
+			for ( i=aoColDefs.length-1 ; i>=0 ; i-- )
+			{
+				def = aoColDefs[i];
+	
+				/* Each definition can target multiple columns, as it is an array */
+				var aTargets = def.targets !== undefined ?
+					def.targets :
+					def.aTargets;
+	
+				if ( ! $.isArray( aTargets ) )
+				{
+					aTargets = [ aTargets ];
+				}
+	
+				for ( j=0, jLen=aTargets.length ; j<jLen ; j++ )
+				{
+					if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )
+					{
+						/* Add columns that we don't yet know about */
+						while( columns.length <= aTargets[j] )
+						{
+							_fnAddColumn( oSettings );
+						}
+	
+						/* Integer, basic index */
+						fn( aTargets[j], def );
+					}
+					else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )
+					{
+						/* Negative integer, right to left column counting */
+						fn( columns.length+aTargets[j], def );
+					}
+					else if ( typeof aTargets[j] === 'string' )
+					{
+						/* Class name matching on TH element */
+						for ( k=0, kLen=columns.length ; k<kLen ; k++ )
+						{
+							if ( aTargets[j] == "_all" ||
+							     $(columns[k].nTh).hasClass( aTargets[j] ) )
+							{
+								fn( k, def );
+							}
+						}
+					}
+				}
+			}
+		}
+	
+		// Statically defined columns array
+		if ( aoCols )
+		{
+			for ( i=0, iLen=aoCols.length ; i<iLen ; i++ )
+			{
+				fn( i, aoCols[i] );
+			}
+		}
+	}
+	
+	/**
+	 * Add a data array to the table, creating DOM node etc. This is the parallel to
+	 * _fnGatherData, but for adding rows from a Javascript source, rather than a
+	 * DOM source.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {array} aData data array to be added
+	 *  @param {node} [nTr] TR element to add to the table - optional. If not given,
+	 *    DataTables will create a row automatically
+	 *  @param {array} [anTds] Array of TD|TH elements for the row - must be given
+	 *    if nTr is.
+	 *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddData ( oSettings, aDataIn, nTr, anTds )
+	{
+		/* Create the object for storing information about this new row */
+		var iRow = oSettings.aoData.length;
+		var oData = $.extend( true, {}, DataTable.models.oRow, {
+			src: nTr ? 'dom' : 'data',
+			idx: iRow
+		} );
+	
+		oData._aData = aDataIn;
+		oSettings.aoData.push( oData );
+	
+		/* Create the cells */
+		var nTd, sThisType;
+		var columns = oSettings.aoColumns;
+	
+		// Invalidate the column types as the new data needs to be revalidated
+		for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
+		{
+			columns[i].sType = null;
+		}
+	
+		/* Add to the display array */
+		oSettings.aiDisplayMaster.push( iRow );
+	
+		var id = oSettings.rowIdFn( aDataIn );
+		if ( id !== undefined ) {
+			oSettings.aIds[ id ] = oData;
+		}
+	
+		/* Create the DOM information, or register it if already present */
+		if ( nTr || ! oSettings.oFeatures.bDeferRender )
+		{
+			_fnCreateTr( oSettings, iRow, nTr, anTds );
+		}
+	
+		return iRow;
+	}
+	
+	
+	/**
+	 * Add one or more TR elements to the table. Generally we'd expect to
+	 * use this for reading data from a DOM sourced table, but it could be
+	 * used for an TR element. Note that if a TR is given, it is used (i.e.
+	 * it is not cloned).
+	 *  @param {object} settings dataTables settings object
+	 *  @param {array|node|jQuery} trs The TR element(s) to add to the table
+	 *  @returns {array} Array of indexes for the added rows
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddTr( settings, trs )
+	{
+		var row;
+	
+		// Allow an individual node to be passed in
+		if ( ! (trs instanceof $) ) {
+			trs = $(trs);
+		}
+	
+		return trs.map( function (i, el) {
+			row = _fnGetRowElements( settings, el );
+			return _fnAddData( settings, row.data, el, row.cells );
+		} );
+	}
+	
+	
+	/**
+	 * Take a TR element and convert it to an index in aoData
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {node} n the TR element to find
+	 *  @returns {int} index if the node is found, null if not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnNodeToDataIndex( oSettings, n )
+	{
+		return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;
+	}
+	
+	
+	/**
+	 * Take a TD element and convert it into a column data index (not the visible index)
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iRow The row number the TD/TH can be found in
+	 *  @param {node} n The TD/TH element to find
+	 *  @returns {int} index if the node is found, -1 if not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnNodeToColumnIndex( oSettings, iRow, n )
+	{
+		return $.inArray( n, oSettings.aoData[ iRow ].anCells );
+	}
+	
+	
+	/**
+	 * Get the data for a given cell from the internal cache, taking into account data mapping
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} rowIdx aoData row id
+	 *  @param {int} colIdx Column index
+	 *  @param {string} type data get type ('display', 'type' 'filter' 'sort')
+	 *  @returns {*} Cell data
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetCellData( settings, rowIdx, colIdx, type )
+	{
+		var draw           = settings.iDraw;
+		var col            = settings.aoColumns[colIdx];
+		var rowData        = settings.aoData[rowIdx]._aData;
+		var defaultContent = col.sDefaultContent;
+		var cellData       = col.fnGetData( rowData, type, {
+			settings: settings,
+			row:      rowIdx,
+			col:      colIdx
+		} );
+	
+		if ( cellData === undefined ) {
+			if ( settings.iDrawError != draw && defaultContent === null ) {
+				_fnLog( settings, 0, "Requested unknown parameter "+
+					(typeof col.mData=='function' ? '{function}' : "'"+col.mData+"'")+
+					" for row "+rowIdx+", column "+colIdx, 4 );
+				settings.iDrawError = draw;
+			}
+			return defaultContent;
+		}
+	
+		// When the data source is null and a specific data type is requested (i.e.
+		// not the original data), we can use default column data
+		if ( (cellData === rowData || cellData === null) && defaultContent !== null && type !== undefined ) {
+			cellData = defaultContent;
+		}
+		else if ( typeof cellData === 'function' ) {
+			// If the data source is a function, then we run it and use the return,
+			// executing in the scope of the data object (for instances)
+			return cellData.call( rowData );
+		}
+	
+		if ( cellData === null && type == 'display' ) {
+			return '';
+		}
+		return cellData;
+	}
+	
+	
+	/**
+	 * Set the value for a specific cell, into the internal data cache
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} rowIdx aoData row id
+	 *  @param {int} colIdx Column index
+	 *  @param {*} val Value to set
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSetCellData( settings, rowIdx, colIdx, val )
+	{
+		var col     = settings.aoColumns[colIdx];
+		var rowData = settings.aoData[rowIdx]._aData;
+	
+		col.fnSetData( rowData, val, {
+			settings: settings,
+			row:      rowIdx,
+			col:      colIdx
+		}  );
+	}
+	
+	
+	// Private variable that is used to match action syntax in the data property object
+	var __reArray = /\[.*?\]$/;
+	var __reFn = /\(\)$/;
+	
+	/**
+	 * Split string on periods, taking into account escaped periods
+	 * @param  {string} str String to split
+	 * @return {array} Split string
+	 */
+	function _fnSplitObjNotation( str )
+	{
+		return $.map( str.match(/(\\.|[^\.])+/g) || [''], function ( s ) {
+			return s.replace(/\\\./g, '.');
+		} );
+	}
+	
+	
+	/**
+	 * Return a function that can be used to get data from a source object, taking
+	 * into account the ability to use nested objects as a source
+	 *  @param {string|int|function} mSource The data source for the object
+	 *  @returns {function} Data get function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetObjectDataFn( mSource )
+	{
+		if ( $.isPlainObject( mSource ) )
+		{
+			/* Build an object of get functions, and wrap them in a single call */
+			var o = {};
+			$.each( mSource, function (key, val) {
+				if ( val ) {
+					o[key] = _fnGetObjectDataFn( val );
+				}
+			} );
+	
+			return function (data, type, row, meta) {
+				var t = o[type] || o._;
+				return t !== undefined ?
+					t(data, type, row, meta) :
+					data;
+			};
+		}
+		else if ( mSource === null )
+		{
+			/* Give an empty string for rendering / sorting etc */
+			return function (data) { // type, row and meta also passed, but not used
+				return data;
+			};
+		}
+		else if ( typeof mSource === 'function' )
+		{
+			return function (data, type, row, meta) {
+				return mSource( data, type, row, meta );
+			};
+		}
+		else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||
+			      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )
+		{
+			/* If there is a . in the source string then the data source is in a
+			 * nested object so we loop over the data for each level to get the next
+			 * level down. On each loop we test for undefined, and if found immediately
+			 * return. This allows entire objects to be missing and sDefaultContent to
+			 * be used if defined, rather than throwing an error
+			 */
+			var fetchData = function (data, type, src) {
+				var arrayNotation, funcNotation, out, innerSrc;
+	
+				if ( src !== "" )
+				{
+					var a = _fnSplitObjNotation( src );
+	
+					for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+					{
+						// Check if we are dealing with special notation
+						arrayNotation = a[i].match(__reArray);
+						funcNotation = a[i].match(__reFn);
+	
+						if ( arrayNotation )
+						{
+							// Array notation
+							a[i] = a[i].replace(__reArray, '');
+	
+							// Condition allows simply [] to be passed in
+							if ( a[i] !== "" ) {
+								data = data[ a[i] ];
+							}
+							out = [];
+	
+							// Get the remainder of the nested object to get
+							a.splice( 0, i+1 );
+							innerSrc = a.join('.');
+	
+							// Traverse each entry in the array getting the properties requested
+							if ( $.isArray( data ) ) {
+								for ( var j=0, jLen=data.length ; j<jLen ; j++ ) {
+									out.push( fetchData( data[j], type, innerSrc ) );
+								}
+							}
+	
+							// If a string is given in between the array notation indicators, that
+							// is used to join the strings together, otherwise an array is returned
+							var join = arrayNotation[0].substring(1, arrayNotation[0].length-1);
+							data = (join==="") ? out : out.join(join);
+	
+							// The inner call to fetchData has already traversed through the remainder
+							// of the source requested, so we exit from the loop
+							break;
+						}
+						else if ( funcNotation )
+						{
+							// Function call
+							a[i] = a[i].replace(__reFn, '');
+							data = data[ a[i] ]();
+							continue;
+						}
+	
+						if ( data === null || data[ a[i] ] === undefined )
+						{
+							return undefined;
+						}
+						data = data[ a[i] ];
+					}
+				}
+	
+				return data;
+			};
+	
+			return function (data, type) { // row and meta also passed, but not used
+				return fetchData( data, type, mSource );
+			};
+		}
+		else
+		{
+			/* Array or flat object mapping */
+			return function (data, type) { // row and meta also passed, but not used
+				return data[mSource];
+			};
+		}
+	}
+	
+	
+	/**
+	 * Return a function that can be used to set data from a source object, taking
+	 * into account the ability to use nested objects as a source
+	 *  @param {string|int|function} mSource The data source for the object
+	 *  @returns {function} Data set function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSetObjectDataFn( mSource )
+	{
+		if ( $.isPlainObject( mSource ) )
+		{
+			/* Unlike get, only the underscore (global) option is used for for
+			 * setting data since we don't know the type here. This is why an object
+			 * option is not documented for `mData` (which is read/write), but it is
+			 * for `mRender` which is read only.
+			 */
+			return _fnSetObjectDataFn( mSource._ );
+		}
+		else if ( mSource === null )
+		{
+			/* Nothing to do when the data source is null */
+			return function () {};
+		}
+		else if ( typeof mSource === 'function' )
+		{
+			return function (data, val, meta) {
+				mSource( data, 'set', val, meta );
+			};
+		}
+		else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||
+			      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )
+		{
+			/* Like the get, we need to get data from a nested object */
+			var setData = function (data, val, src) {
+				var a = _fnSplitObjNotation( src ), b;
+				var aLast = a[a.length-1];
+				var arrayNotation, funcNotation, o, innerSrc;
+	
+				for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )
+				{
+					// Check if we are dealing with an array notation request
+					arrayNotation = a[i].match(__reArray);
+					funcNotation = a[i].match(__reFn);
+	
+					if ( arrayNotation )
+					{
+						a[i] = a[i].replace(__reArray, '');
+						data[ a[i] ] = [];
+	
+						// Get the remainder of the nested object to set so we can recurse
+						b = a.slice();
+						b.splice( 0, i+1 );
+						innerSrc = b.join('.');
+	
+						// Traverse each entry in the array setting the properties requested
+						if ( $.isArray( val ) )
+						{
+							for ( var j=0, jLen=val.length ; j<jLen ; j++ )
+							{
+								o = {};
+								setData( o, val[j], innerSrc );
+								data[ a[i] ].push( o );
+							}
+						}
+						else
+						{
+							// We've been asked to save data to an array, but it
+							// isn't array data to be saved. Best that can be done
+							// is to just save the value.
+							data[ a[i] ] = val;
+						}
+	
+						// The inner call to setData has already traversed through the remainder
+						// of the source and has set the data, thus we can exit here
+						return;
+					}
+					else if ( funcNotation )
+					{
+						// Function call
+						a[i] = a[i].replace(__reFn, '');
+						data = data[ a[i] ]( val );
+					}
+	
+					// If the nested object doesn't currently exist - since we are
+					// trying to set the value - create it
+					if ( data[ a[i] ] === null || data[ a[i] ] === undefined )
+					{
+						data[ a[i] ] = {};
+					}
+					data = data[ a[i] ];
+				}
+	
+				// Last item in the input - i.e, the actual set
+				if ( aLast.match(__reFn ) )
+				{
+					// Function call
+					data = data[ aLast.replace(__reFn, '') ]( val );
+				}
+				else
+				{
+					// If array notation is used, we just want to strip it and use the property name
+					// and assign the value. If it isn't used, then we get the result we want anyway
+					data[ aLast.replace(__reArray, '') ] = val;
+				}
+			};
+	
+			return function (data, val) { // meta is also passed in, but not used
+				return setData( data, val, mSource );
+			};
+		}
+		else
+		{
+			/* Array or flat object mapping */
+			return function (data, val) { // meta is also passed in, but not used
+				data[mSource] = val;
+			};
+		}
+	}
+	
+	
+	/**
+	 * Return an array with the full table data
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns array {array} aData Master data array
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetDataMaster ( settings )
+	{
+		return _pluck( settings.aoData, '_aData' );
+	}
+	
+	
+	/**
+	 * Nuke the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnClearTable( settings )
+	{
+		settings.aoData.length = 0;
+		settings.aiDisplayMaster.length = 0;
+		settings.aiDisplay.length = 0;
+		settings.aIds = {};
+	}
+	
+	
+	 /**
+	 * Take an array of integers (index array) and remove a target integer (value - not
+	 * the key!)
+	 *  @param {array} a Index array to target
+	 *  @param {int} iTarget value to find
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDeleteIndex( a, iTarget, splice )
+	{
+		var iTargetIndex = -1;
+	
+		for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+		{
+			if ( a[i] == iTarget )
+			{
+				iTargetIndex = i;
+			}
+			else if ( a[i] > iTarget )
+			{
+				a[i]--;
+			}
+		}
+	
+		if ( iTargetIndex != -1 && splice === undefined )
+		{
+			a.splice( iTargetIndex, 1 );
+		}
+	}
+	
+	
+	/**
+	 * Mark cached data as invalid such that a re-read of the data will occur when
+	 * the cached data is next requested. Also update from the data source object.
+	 *
+	 * @param {object} settings DataTables settings object
+	 * @param {int}    rowIdx   Row index to invalidate
+	 * @param {string} [src]    Source to invalidate from: undefined, 'auto', 'dom'
+	 *     or 'data'
+	 * @param {int}    [colIdx] Column index to invalidate. If undefined the whole
+	 *     row will be invalidated
+	 * @memberof DataTable#oApi
+	 *
+	 * @todo For the modularisation of v1.11 this will need to become a callback, so
+	 *   the sort and filter methods can subscribe to it. That will required
+	 *   initialisation options for sorting, which is why it is not already baked in
+	 */
+	function _fnInvalidate( settings, rowIdx, src, colIdx )
+	{
+		var row = settings.aoData[ rowIdx ];
+		var i, ien;
+		var cellWrite = function ( cell, col ) {
+			// This is very frustrating, but in IE if you just write directly
+			// to innerHTML, and elements that are overwritten are GC'ed,
+			// even if there is a reference to them elsewhere
+			while ( cell.childNodes.length ) {
+				cell.removeChild( cell.firstChild );
+			}
+	
+			cell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' );
+		};
+	
+		// Are we reading last data from DOM or the data object?
+		if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {
+			// Read the data from the DOM
+			row._aData = _fnGetRowElements(
+					settings, row, colIdx, colIdx === undefined ? undefined : row._aData
+				)
+				.data;
+		}
+		else {
+			// Reading from data object, update the DOM
+			var cells = row.anCells;
+	
+			if ( cells ) {
+				if ( colIdx !== undefined ) {
+					cellWrite( cells[colIdx], colIdx );
+				}
+				else {
+					for ( i=0, ien=cells.length ; i<ien ; i++ ) {
+						cellWrite( cells[i], i );
+					}
+				}
+			}
+		}
+	
+		// For both row and cell invalidation, the cached data for sorting and
+		// filtering is nulled out
+		row._aSortData = null;
+		row._aFilterData = null;
+	
+		// Invalidate the type for a specific column (if given) or all columns since
+		// the data might have changed
+		var cols = settings.aoColumns;
+		if ( colIdx !== undefined ) {
+			cols[ colIdx ].sType = null;
+		}
+		else {
+			for ( i=0, ien=cols.length ; i<ien ; i++ ) {
+				cols[i].sType = null;
+			}
+	
+			// Update DataTables special `DT_*` attributes for the row
+			_fnRowAttributes( settings, row );
+		}
+	}
+	
+	
+	/**
+	 * Build a data source object from an HTML row, reading the contents of the
+	 * cells that are in the row.
+	 *
+	 * @param {object} settings DataTables settings object
+	 * @param {node|object} TR element from which to read data or existing row
+	 *   object from which to re-read the data from the cells
+	 * @param {int} [colIdx] Optional column index
+	 * @param {array|object} [d] Data source object. If `colIdx` is given then this
+	 *   parameter should also be given and will be used to write the data into.
+	 *   Only the column in question will be written
+	 * @returns {object} Object with two parameters: `data` the data read, in
+	 *   document order, and `cells` and array of nodes (they can be useful to the
+	 *   caller, so rather than needing a second traversal to get them, just return
+	 *   them from here).
+	 * @memberof DataTable#oApi
+	 */
+	function _fnGetRowElements( settings, row, colIdx, d )
+	{
+		var
+			tds = [],
+			td = row.firstChild,
+			name, col, o, i=0, contents,
+			columns = settings.aoColumns,
+			objectRead = settings._rowReadObject;
+	
+		// Allow the data object to be passed in, or construct
+		d = d !== undefined ?
+			d :
+			objectRead ?
+				{} :
+				[];
+	
+		var attr = function ( str, td  ) {
+			if ( typeof str === 'string' ) {
+				var idx = str.indexOf('@');
+	
+				if ( idx !== -1 ) {
+					var attr = str.substring( idx+1 );
+					var setter = _fnSetObjectDataFn( str );
+					setter( d, td.getAttribute( attr ) );
+				}
+			}
+		};
+	
+		// Read data from a cell and store into the data object
+		var cellProcess = function ( cell ) {
+			if ( colIdx === undefined || colIdx === i ) {
+				col = columns[i];
+				contents = $.trim(cell.innerHTML);
+	
+				if ( col && col._bAttrSrc ) {
+					var setter = _fnSetObjectDataFn( col.mData._ );
+					setter( d, contents );
+	
+					attr( col.mData.sort, cell );
+					attr( col.mData.type, cell );
+					attr( col.mData.filter, cell );
+				}
+				else {
+					// Depending on the `data` option for the columns the data can
+					// be read to either an object or an array.
+					if ( objectRead ) {
+						if ( ! col._setter ) {
+							// Cache the setter function
+							col._setter = _fnSetObjectDataFn( col.mData );
+						}
+						col._setter( d, contents );
+					}
+					else {
+						d[i] = contents;
+					}
+				}
+			}
+	
+			i++;
+		};
+	
+		if ( td ) {
+			// `tr` element was passed in
+			while ( td ) {
+				name = td.nodeName.toUpperCase();
+	
+				if ( name == "TD" || name == "TH" ) {
+					cellProcess( td );
+					tds.push( td );
+				}
+	
+				td = td.nextSibling;
+			}
+		}
+		else {
+			// Existing row object passed in
+			tds = row.anCells;
+	
+			for ( var j=0, jen=tds.length ; j<jen ; j++ ) {
+				cellProcess( tds[j] );
+			}
+		}
+	
+		// Read the ID from the DOM if present
+		var rowNode = row.firstChild ? row : row.nTr;
+	
+		if ( rowNode ) {
+			var id = rowNode.getAttribute( 'id' );
+	
+			if ( id ) {
+				_fnSetObjectDataFn( settings.rowId )( d, id );
+			}
+		}
+	
+		return {
+			data: d,
+			cells: tds
+		};
+	}
+	/**
+	 * Create a new TR element (and it's TD children) for a row
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iRow Row to consider
+	 *  @param {node} [nTrIn] TR element to add to the table - optional. If not given,
+	 *    DataTables will create a row automatically
+	 *  @param {array} [anTds] Array of TD|TH elements for the row - must be given
+	 *    if nTr is.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCreateTr ( oSettings, iRow, nTrIn, anTds )
+	{
+		var
+			row = oSettings.aoData[iRow],
+			rowData = row._aData,
+			cells = [],
+			nTr, nTd, oCol,
+			i, iLen, create;
+	
+		if ( row.nTr === null )
+		{
+			nTr = nTrIn || document.createElement('tr');
+	
+			row.nTr = nTr;
+			row.anCells = cells;
+	
+			/* Use a private property on the node to allow reserve mapping from the node
+			 * to the aoData array for fast look up
+			 */
+			nTr._DT_RowIndex = iRow;
+	
+			/* Special parameters can be given by the data source to be used on the row */
+			_fnRowAttributes( oSettings, row );
+	
+			/* Process each column */
+			for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+			{
+				oCol = oSettings.aoColumns[i];
+				create = nTrIn ? false : true;
+	
+				nTd = create ? document.createElement( oCol.sCellType ) : anTds[i];
+				nTd._DT_CellIndex = {
+					row: iRow,
+					column: i
+				};
+				
+				cells.push( nTd );
+	
+				// Need to create the HTML if new, or if a rendering function is defined
+				if ( create || ((!nTrIn || oCol.mRender || oCol.mData !== i) &&
+					 (!$.isPlainObject(oCol.mData) || oCol.mData._ !== i+'.display')
+				)) {
+					nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );
+				}
+	
+				/* Add user defined class */
+				if ( oCol.sClass )
+				{
+					nTd.className += ' '+oCol.sClass;
+				}
+	
+				// Visibility - add or remove as required
+				if ( oCol.bVisible && ! nTrIn )
+				{
+					nTr.appendChild( nTd );
+				}
+				else if ( ! oCol.bVisible && nTrIn )
+				{
+					nTd.parentNode.removeChild( nTd );
+				}
+	
+				if ( oCol.fnCreatedCell )
+				{
+					oCol.fnCreatedCell.call( oSettings.oInstance,
+						nTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i
+					);
+				}
+			}
+	
+			_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow, cells] );
+		}
+	
+		// Remove once webkit bug 131819 and Chromium bug 365619 have been resolved
+		// and deployed
+		row.nTr.setAttribute( 'role', 'row' );
+	}
+	
+	
+	/**
+	 * Add attributes to a row based on the special `DT_*` parameters in a data
+	 * source object.
+	 *  @param {object} settings DataTables settings object
+	 *  @param {object} DataTables row object for the row to be modified
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnRowAttributes( settings, row )
+	{
+		var tr = row.nTr;
+		var data = row._aData;
+	
+		if ( tr ) {
+			var id = settings.rowIdFn( data );
+	
+			if ( id ) {
+				tr.id = id;
+			}
+	
+			if ( data.DT_RowClass ) {
+				// Remove any classes added by DT_RowClass before
+				var a = data.DT_RowClass.split(' ');
+				row.__rowc = row.__rowc ?
+					_unique( row.__rowc.concat( a ) ) :
+					a;
+	
+				$(tr)
+					.removeClass( row.__rowc.join(' ') )
+					.addClass( data.DT_RowClass );
+			}
+	
+			if ( data.DT_RowAttr ) {
+				$(tr).attr( data.DT_RowAttr );
+			}
+	
+			if ( data.DT_RowData ) {
+				$(tr).data( data.DT_RowData );
+			}
+		}
+	}
+	
+	
+	/**
+	 * Create the HTML header for the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnBuildHead( oSettings )
+	{
+		var i, ien, cell, row, column;
+		var thead = oSettings.nTHead;
+		var tfoot = oSettings.nTFoot;
+		var createHeader = $('th, td', thead).length === 0;
+		var classes = oSettings.oClasses;
+		var columns = oSettings.aoColumns;
+	
+		if ( createHeader ) {
+			row = $('<tr/>').appendTo( thead );
+		}
+	
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			column = columns[i];
+			cell = $( column.nTh ).addClass( column.sClass );
+	
+			if ( createHeader ) {
+				cell.appendTo( row );
+			}
+	
+			// 1.11 move into sorting
+			if ( oSettings.oFeatures.bSort ) {
+				cell.addClass( column.sSortingClass );
+	
+				if ( column.bSortable !== false ) {
+					cell
+						.attr( 'tabindex', oSettings.iTabIndex )
+						.attr( 'aria-controls', oSettings.sTableId );
+	
+					_fnSortAttachListener( oSettings, column.nTh, i );
+				}
+			}
+	
+			if ( column.sTitle != cell[0].innerHTML ) {
+				cell.html( column.sTitle );
+			}
+	
+			_fnRenderer( oSettings, 'header' )(
+				oSettings, cell, column, classes
+			);
+		}
+	
+		if ( createHeader ) {
+			_fnDetectHeader( oSettings.aoHeader, thead );
+		}
+		
+		/* ARIA role for the rows */
+	 	$(thead).find('>tr').attr('role', 'row');
+	
+		/* Deal with the footer - add classes if required */
+		$(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH );
+		$(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH );
+	
+		// Cache the footer cells. Note that we only take the cells from the first
+		// row in the footer. If there is more than one row the user wants to
+		// interact with, they need to use the table().foot() method. Note also this
+		// allows cells to be used for multiple columns using colspan
+		if ( tfoot !== null ) {
+			var cells = oSettings.aoFooter[0];
+	
+			for ( i=0, ien=cells.length ; i<ien ; i++ ) {
+				column = columns[i];
+				column.nTf = cells[i].cell;
+	
+				if ( column.sClass ) {
+					$(column.nTf).addClass( column.sClass );
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Draw the header (or footer) element based on the column visibility states. The
+	 * methodology here is to use the layout array from _fnDetectHeader, modified for
+	 * the instantaneous column visibility, to construct the new layout. The grid is
+	 * traversed over cell at a time in a rows x columns grid fashion, although each
+	 * cell insert can cover multiple elements in the grid - which is tracks using the
+	 * aApplied array. Cell inserts in the grid will only occur where there isn't
+	 * already a cell in that position.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param array {objects} aoSource Layout array from _fnDetectHeader
+	 *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
+	{
+		var i, iLen, j, jLen, k, kLen, n, nLocalTr;
+		var aoLocal = [];
+		var aApplied = [];
+		var iColumns = oSettings.aoColumns.length;
+		var iRowspan, iColspan;
+	
+		if ( ! aoSource )
+		{
+			return;
+		}
+	
+		if (  bIncludeHidden === undefined )
+		{
+			bIncludeHidden = false;
+		}
+	
+		/* Make a copy of the master layout array, but without the visible columns in it */
+		for ( i=0, iLen=aoSource.length ; i<iLen ; i++ )
+		{
+			aoLocal[i] = aoSource[i].slice();
+			aoLocal[i].nTr = aoSource[i].nTr;
+	
+			/* Remove any columns which are currently hidden */
+			for ( j=iColumns-1 ; j>=0 ; j-- )
+			{
+				if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )
+				{
+					aoLocal[i].splice( j, 1 );
+				}
+			}
+	
+			/* Prep the applied array - it needs an element for each row */
+			aApplied.push( [] );
+		}
+	
+		for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )
+		{
+			nLocalTr = aoLocal[i].nTr;
+	
+			/* All cells are going to be replaced, so empty out the row */
+			if ( nLocalTr )
+			{
+				while( (n = nLocalTr.firstChild) )
+				{
+					nLocalTr.removeChild( n );
+				}
+			}
+	
+			for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )
+			{
+				iRowspan = 1;
+				iColspan = 1;
+	
+				/* Check to see if there is already a cell (row/colspan) covering our target
+				 * insert point. If there is, then there is nothing to do.
+				 */
+				if ( aApplied[i][j] === undefined )
+				{
+					nLocalTr.appendChild( aoLocal[i][j].cell );
+					aApplied[i][j] = 1;
+	
+					/* Expand the cell to cover as many rows as needed */
+					while ( aoLocal[i+iRowspan] !== undefined &&
+					        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )
+					{
+						aApplied[i+iRowspan][j] = 1;
+						iRowspan++;
+					}
+	
+					/* Expand the cell to cover as many columns as needed */
+					while ( aoLocal[i][j+iColspan] !== undefined &&
+					        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )
+					{
+						/* Must update the applied array over the rows for the columns */
+						for ( k=0 ; k<iRowspan ; k++ )
+						{
+							aApplied[i+k][j+iColspan] = 1;
+						}
+						iColspan++;
+					}
+	
+					/* Do the actual expansion in the DOM */
+					$(aoLocal[i][j].cell)
+						.attr('rowspan', iRowspan)
+						.attr('colspan', iColspan);
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Insert the required TR nodes into the table for display
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDraw( oSettings )
+	{
+		/* Provide a pre-callback function which can be used to cancel the draw is false is returned */
+		var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );
+		if ( $.inArray( false, aPreDraw ) !== -1 )
+		{
+			_fnProcessingDisplay( oSettings, false );
+			return;
+		}
+	
+		var i, iLen, n;
+		var anRows = [];
+		var iRowCount = 0;
+		var asStripeClasses = oSettings.asStripeClasses;
+		var iStripes = asStripeClasses.length;
+		var iOpenRows = oSettings.aoOpenRows.length;
+		var oLang = oSettings.oLanguage;
+		var iInitDisplayStart = oSettings.iInitDisplayStart;
+		var bServerSide = _fnDataSource( oSettings ) == 'ssp';
+		var aiDisplay = oSettings.aiDisplay;
+	
+		oSettings.bDrawing = true;
+	
+		/* Check and see if we have an initial draw position from state saving */
+		if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )
+		{
+			oSettings._iDisplayStart = bServerSide ?
+				iInitDisplayStart :
+				iInitDisplayStart >= oSettings.fnRecordsDisplay() ?
+					0 :
+					iInitDisplayStart;
+	
+			oSettings.iInitDisplayStart = -1;
+		}
+	
+		var iDisplayStart = oSettings._iDisplayStart;
+		var iDisplayEnd = oSettings.fnDisplayEnd();
+	
+		/* Server-side processing draw intercept */
+		if ( oSettings.bDeferLoading )
+		{
+			oSettings.bDeferLoading = false;
+			oSettings.iDraw++;
+			_fnProcessingDisplay( oSettings, false );
+		}
+		else if ( !bServerSide )
+		{
+			oSettings.iDraw++;
+		}
+		else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )
+		{
+			return;
+		}
+	
+		if ( aiDisplay.length !== 0 )
+		{
+			var iStart = bServerSide ? 0 : iDisplayStart;
+			var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;
+	
+			for ( var j=iStart ; j<iEnd ; j++ )
+			{
+				var iDataIndex = aiDisplay[j];
+				var aoData = oSettings.aoData[ iDataIndex ];
+				if ( aoData.nTr === null )
+				{
+					_fnCreateTr( oSettings, iDataIndex );
+				}
+	
+				var nRow = aoData.nTr;
+	
+				/* Remove the old striping classes and then add the new one */
+				if ( iStripes !== 0 )
+				{
+					var sStripe = asStripeClasses[ iRowCount % iStripes ];
+					if ( aoData._sRowStripe != sStripe )
+					{
+						$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );
+						aoData._sRowStripe = sStripe;
+					}
+				}
+	
+				// Row callback functions - might want to manipulate the row
+				// iRowCount and j are not currently documented. Are they at all
+				// useful?
+				_fnCallbackFire( oSettings, 'aoRowCallback', null,
+					[nRow, aoData._aData, iRowCount, j, iDataIndex] );
+	
+				anRows.push( nRow );
+				iRowCount++;
+			}
+		}
+		else
+		{
+			/* Table is empty - create a row with an empty message in it */
+			var sZero = oLang.sZeroRecords;
+			if ( oSettings.iDraw == 1 &&  _fnDataSource( oSettings ) == 'ajax' )
+			{
+				sZero = oLang.sLoadingRecords;
+			}
+			else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )
+			{
+				sZero = oLang.sEmptyTable;
+			}
+	
+			anRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } )
+				.append( $('<td />', {
+					'valign':  'top',
+					'colSpan': _fnVisbleColumns( oSettings ),
+					'class':   oSettings.oClasses.sRowEmpty
+				} ).html( sZero ) )[0];
+		}
+	
+		/* Header and footer callbacks */
+		_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],
+			_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );
+	
+		_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],
+			_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );
+	
+		var body = $(oSettings.nTBody);
+	
+		body.children().detach();
+		body.append( $(anRows) );
+	
+		/* Call all required callback functions for the end of a draw */
+		_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );
+	
+		/* Draw is complete, sorting and filtering must be as well */
+		oSettings.bSorted = false;
+		oSettings.bFiltered = false;
+		oSettings.bDrawing = false;
+	}
+	
+	
+	/**
+	 * Redraw the table - taking account of the various features which are enabled
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {boolean} [holdPosition] Keep the current paging position. By default
+	 *    the paging is reset to the first page
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnReDraw( settings, holdPosition )
+	{
+		var
+			features = settings.oFeatures,
+			sort     = features.bSort,
+			filter   = features.bFilter;
+	
+		if ( sort ) {
+			_fnSort( settings );
+		}
+	
+		if ( filter ) {
+			_fnFilterComplete( settings, settings.oPreviousSearch );
+		}
+		else {
+			// No filtering, so we want to just use the display master
+			settings.aiDisplay = settings.aiDisplayMaster.slice();
+		}
+	
+		if ( holdPosition !== true ) {
+			settings._iDisplayStart = 0;
+		}
+	
+		// Let any modules know about the draw hold position state (used by
+		// scrolling internally)
+		settings._drawHold = holdPosition;
+	
+		_fnDraw( settings );
+	
+		settings._drawHold = false;
+	}
+	
+	
+	/**
+	 * Add the options to the page HTML for the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddOptionsHtml ( oSettings )
+	{
+		var classes = oSettings.oClasses;
+		var table = $(oSettings.nTable);
+		var holding = $('<div/>').insertBefore( table ); // Holding element for speed
+		var features = oSettings.oFeatures;
+	
+		// All DataTables are wrapped in a div
+		var insert = $('<div/>', {
+			id:      oSettings.sTableId+'_wrapper',
+			'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)
+		} );
+	
+		oSettings.nHolding = holding[0];
+		oSettings.nTableWrapper = insert[0];
+		oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;
+	
+		/* Loop over the user set positioning and place the elements as needed */
+		var aDom = oSettings.sDom.split('');
+		var featureNode, cOption, nNewNode, cNext, sAttr, j;
+		for ( var i=0 ; i<aDom.length ; i++ )
+		{
+			featureNode = null;
+			cOption = aDom[i];
+	
+			if ( cOption == '<' )
+			{
+				/* New container div */
+				nNewNode = $('<div/>')[0];
+	
+				/* Check to see if we should append an id and/or a class name to the container */
+				cNext = aDom[i+1];
+				if ( cNext == "'" || cNext == '"' )
+				{
+					sAttr = "";
+					j = 2;
+					while ( aDom[i+j] != cNext )
+					{
+						sAttr += aDom[i+j];
+						j++;
+					}
+	
+					/* Replace jQuery UI constants @todo depreciated */
+					if ( sAttr == "H" )
+					{
+						sAttr = classes.sJUIHeader;
+					}
+					else if ( sAttr == "F" )
+					{
+						sAttr = classes.sJUIFooter;
+					}
+	
+					/* The attribute can be in the format of "#id.class", "#id" or "class" This logic
+					 * breaks the string into parts and applies them as needed
+					 */
+					if ( sAttr.indexOf('.') != -1 )
+					{
+						var aSplit = sAttr.split('.');
+						nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);
+						nNewNode.className = aSplit[1];
+					}
+					else if ( sAttr.charAt(0) == "#" )
+					{
+						nNewNode.id = sAttr.substr(1, sAttr.length-1);
+					}
+					else
+					{
+						nNewNode.className = sAttr;
+					}
+	
+					i += j; /* Move along the position array */
+				}
+	
+				insert.append( nNewNode );
+				insert = $(nNewNode);
+			}
+			else if ( cOption == '>' )
+			{
+				/* End container div */
+				insert = insert.parent();
+			}
+			// @todo Move options into their own plugins?
+			else if ( cOption == 'l' && features.bPaginate && features.bLengthChange )
+			{
+				/* Length */
+				featureNode = _fnFeatureHtmlLength( oSettings );
+			}
+			else if ( cOption == 'f' && features.bFilter )
+			{
+				/* Filter */
+				featureNode = _fnFeatureHtmlFilter( oSettings );
+			}
+			else if ( cOption == 'r' && features.bProcessing )
+			{
+				/* pRocessing */
+				featureNode = _fnFeatureHtmlProcessing( oSettings );
+			}
+			else if ( cOption == 't' )
+			{
+				/* Table */
+				featureNode = _fnFeatureHtmlTable( oSettings );
+			}
+			else if ( cOption ==  'i' && features.bInfo )
+			{
+				/* Info */
+				featureNode = _fnFeatureHtmlInfo( oSettings );
+			}
+			else if ( cOption == 'p' && features.bPaginate )
+			{
+				/* Pagination */
+				featureNode = _fnFeatureHtmlPaginate( oSettings );
+			}
+			else if ( DataTable.ext.feature.length !== 0 )
+			{
+				/* Plug-in features */
+				var aoFeatures = DataTable.ext.feature;
+				for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )
+				{
+					if ( cOption == aoFeatures[k].cFeature )
+					{
+						featureNode = aoFeatures[k].fnInit( oSettings );
+						break;
+					}
+				}
+			}
+	
+			/* Add to the 2D features array */
+			if ( featureNode )
+			{
+				var aanFeatures = oSettings.aanFeatures;
+	
+				if ( ! aanFeatures[cOption] )
+				{
+					aanFeatures[cOption] = [];
+				}
+	
+				aanFeatures[cOption].push( featureNode );
+				insert.append( featureNode );
+			}
+		}
+	
+		/* Built our DOM structure - replace the holding div with what we want */
+		holding.replaceWith( insert );
+		oSettings.nHolding = null;
+	}
+	
+	
+	/**
+	 * Use the DOM source to create up an array of header cells. The idea here is to
+	 * create a layout grid (array) of rows x columns, which contains a reference
+	 * to the cell that that point in the grid (regardless of col/rowspan), such that
+	 * any column / row could be removed and the new grid constructed
+	 *  @param array {object} aLayout Array to store the calculated layout in
+	 *  @param {node} nThead The header/footer element for the table
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDetectHeader ( aLayout, nThead )
+	{
+		var nTrs = $(nThead).children('tr');
+		var nTr, nCell;
+		var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;
+		var bUnique;
+		var fnShiftCol = function ( a, i, j ) {
+			var k = a[i];
+	                while ( k[j] ) {
+				j++;
+			}
+			return j;
+		};
+	
+		aLayout.splice( 0, aLayout.length );
+	
+		/* We know how many rows there are in the layout - so prep it */
+		for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+		{
+			aLayout.push( [] );
+		}
+	
+		/* Calculate a layout array */
+		for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+		{
+			nTr = nTrs[i];
+			iColumn = 0;
+	
+			/* For every cell in the row... */
+			nCell = nTr.firstChild;
+			while ( nCell ) {
+				if ( nCell.nodeName.toUpperCase() == "TD" ||
+				     nCell.nodeName.toUpperCase() == "TH" )
+				{
+					/* Get the col and rowspan attributes from the DOM and sanitise them */
+					iColspan = nCell.getAttribute('colspan') * 1;
+					iRowspan = nCell.getAttribute('rowspan') * 1;
+					iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;
+					iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;
+	
+					/* There might be colspan cells already in this row, so shift our target
+					 * accordingly
+					 */
+					iColShifted = fnShiftCol( aLayout, i, iColumn );
+	
+					/* Cache calculation for unique columns */
+					bUnique = iColspan === 1 ? true : false;
+	
+					/* If there is col / rowspan, copy the information into the layout grid */
+					for ( l=0 ; l<iColspan ; l++ )
+					{
+						for ( k=0 ; k<iRowspan ; k++ )
+						{
+							aLayout[i+k][iColShifted+l] = {
+								"cell": nCell,
+								"unique": bUnique
+							};
+							aLayout[i+k].nTr = nTr;
+						}
+					}
+				}
+				nCell = nCell.nextSibling;
+			}
+		}
+	}
+	
+	
+	/**
+	 * Get an array of unique th elements, one for each column
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {node} nHeader automatically detect the layout from this node - optional
+	 *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional
+	 *  @returns array {node} aReturn list of unique th's
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
+	{
+		var aReturn = [];
+		if ( !aLayout )
+		{
+			aLayout = oSettings.aoHeader;
+			if ( nHeader )
+			{
+				aLayout = [];
+				_fnDetectHeader( aLayout, nHeader );
+			}
+		}
+	
+		for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )
+		{
+			for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )
+			{
+				if ( aLayout[i][j].unique &&
+					 (!aReturn[j] || !oSettings.bSortCellsTop) )
+				{
+					aReturn[j] = aLayout[i][j].cell;
+				}
+			}
+		}
+	
+		return aReturn;
+	}
+	
+	/**
+	 * Create an Ajax call based on the table's settings, taking into account that
+	 * parameters can have multiple forms, and backwards compatibility.
+	 *
+	 * @param {object} oSettings dataTables settings object
+	 * @param {array} data Data to send to the server, required by
+	 *     DataTables - may be augmented by developer callbacks
+	 * @param {function} fn Callback function to run when data is obtained
+	 */
+	function _fnBuildAjax( oSettings, data, fn )
+	{
+		// Compatibility with 1.9-, allow fnServerData and event to manipulate
+		_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] );
+	
+		// Convert to object based for 1.10+ if using the old array scheme which can
+		// come from server-side processing or serverParams
+		if ( data && $.isArray(data) ) {
+			var tmp = {};
+			var rbracket = /(.*?)\[\]$/;
+	
+			$.each( data, function (key, val) {
+				var match = val.name.match(rbracket);
+	
+				if ( match ) {
+					// Support for arrays
+					var name = match[0];
+	
+					if ( ! tmp[ name ] ) {
+						tmp[ name ] = [];
+					}
+					tmp[ name ].push( val.value );
+				}
+				else {
+					tmp[val.name] = val.value;
+				}
+			} );
+			data = tmp;
+		}
+	
+		var ajaxData;
+		var ajax = oSettings.ajax;
+		var instance = oSettings.oInstance;
+		var callback = function ( json ) {
+			_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] );
+			fn( json );
+		};
+	
+		if ( $.isPlainObject( ajax ) && ajax.data )
+		{
+			ajaxData = ajax.data;
+	
+			var newData = typeof ajaxData === 'function' ?
+				ajaxData( data, oSettings ) :  // fn can manipulate data or return
+				ajaxData;                      // an object object or array to merge
+	
+			// If the function returned something, use that alone
+			data = typeof ajaxData === 'function' && newData ?
+				newData :
+				$.extend( true, data, newData );
+	
+			// Remove the data property as we've resolved it already and don't want
+			// jQuery to do it again (it is restored at the end of the function)
+			delete ajax.data;
+		}
+	
+		var baseAjax = {
+			"data": data,
+			"success": function (json) {
+				var error = json.error || json.sError;
+				if ( error ) {
+					_fnLog( oSettings, 0, error );
+				}
+	
+				oSettings.json = json;
+				callback( json );
+			},
+			"dataType": "json",
+			"cache": false,
+			"type": oSettings.sServerMethod,
+			"error": function (xhr, error, thrown) {
+				var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] );
+	
+				if ( $.inArray( true, ret ) === -1 ) {
+					if ( error == "parsererror" ) {
+						_fnLog( oSettings, 0, 'Invalid JSON response', 1 );
+					}
+					else if ( xhr.readyState === 4 ) {
+						_fnLog( oSettings, 0, 'Ajax error', 7 );
+					}
+				}
+	
+				_fnProcessingDisplay( oSettings, false );
+			}
+		};
+	
+		// Store the data submitted for the API
+		oSettings.oAjaxData = data;
+	
+		// Allow plug-ins and external processes to modify the data
+		_fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] );
+	
+		if ( oSettings.fnServerData )
+		{
+			// DataTables 1.9- compatibility
+			oSettings.fnServerData.call( instance,
+				oSettings.sAjaxSource,
+				$.map( data, function (val, key) { // Need to convert back to 1.9 trad format
+					return { name: key, value: val };
+				} ),
+				callback,
+				oSettings
+			);
+		}
+		else if ( oSettings.sAjaxSource || typeof ajax === 'string' )
+		{
+			// DataTables 1.9- compatibility
+			oSettings.jqXHR = $.ajax( $.extend( baseAjax, {
+				url: ajax || oSettings.sAjaxSource
+			} ) );
+		}
+		else if ( typeof ajax === 'function' )
+		{
+			// Is a function - let the caller define what needs to be done
+			oSettings.jqXHR = ajax.call( instance, data, callback, oSettings );
+		}
+		else
+		{
+			// Object to extend the base settings
+			oSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) );
+	
+			// Restore for next time around
+			ajax.data = ajaxData;
+		}
+	}
+	
+	
+	/**
+	 * Update the table using an Ajax call
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {boolean} Block the table drawing or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAjaxUpdate( settings )
+	{
+		if ( settings.bAjaxDataGet ) {
+			settings.iDraw++;
+			_fnProcessingDisplay( settings, true );
+	
+			_fnBuildAjax(
+				settings,
+				_fnAjaxParameters( settings ),
+				function(json) {
+					_fnAjaxUpdateDraw( settings, json );
+				}
+			);
+	
+			return false;
+		}
+		return true;
+	}
+	
+	
+	/**
+	 * Build up the parameters in an object needed for a server-side processing
+	 * request. Note that this is basically done twice, is different ways - a modern
+	 * method which is used by default in DataTables 1.10 which uses objects and
+	 * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if
+	 * the sAjaxSource option is used in the initialisation, or the legacyAjax
+	 * option is set.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {bool} block the table drawing or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAjaxParameters( settings )
+	{
+		var
+			columns = settings.aoColumns,
+			columnCount = columns.length,
+			features = settings.oFeatures,
+			preSearch = settings.oPreviousSearch,
+			preColSearch = settings.aoPreSearchCols,
+			i, data = [], dataProp, column, columnSearch,
+			sort = _fnSortFlatten( settings ),
+			displayStart = settings._iDisplayStart,
+			displayLength = features.bPaginate !== false ?
+				settings._iDisplayLength :
+				-1;
+	
+		var param = function ( name, value ) {
+			data.push( { 'name': name, 'value': value } );
+		};
+	
+		// DataTables 1.9- compatible method
+		param( 'sEcho',          settings.iDraw );
+		param( 'iColumns',       columnCount );
+		param( 'sColumns',       _pluck( columns, 'sName' ).join(',') );
+		param( 'iDisplayStart',  displayStart );
+		param( 'iDisplayLength', displayLength );
+	
+		// DataTables 1.10+ method
+		var d = {
+			draw:    settings.iDraw,
+			columns: [],
+			order:   [],
+			start:   displayStart,
+			length:  displayLength,
+			search:  {
+				value: preSearch.sSearch,
+				regex: preSearch.bRegex
+			}
+		};
+	
+		for ( i=0 ; i<columnCount ; i++ ) {
+			column = columns[i];
+			columnSearch = preColSearch[i];
+			dataProp = typeof column.mData=="function" ? 'function' : column.mData ;
+	
+			d.columns.push( {
+				data:       dataProp,
+				name:       column.sName,
+				searchable: column.bSearchable,
+				orderable:  column.bSortable,
+				search:     {
+					value: columnSearch.sSearch,
+					regex: columnSearch.bRegex
+				}
+			} );
+	
+			param( "mDataProp_"+i, dataProp );
+	
+			if ( features.bFilter ) {
+				param( 'sSearch_'+i,     columnSearch.sSearch );
+				param( 'bRegex_'+i,      columnSearch.bRegex );
+				param( 'bSearchable_'+i, column.bSearchable );
+			}
+	
+			if ( features.bSort ) {
+				param( 'bSortable_'+i, column.bSortable );
+			}
+		}
+	
+		if ( features.bFilter ) {
+			param( 'sSearch', preSearch.sSearch );
+			param( 'bRegex', preSearch.bRegex );
+		}
+	
+		if ( features.bSort ) {
+			$.each( sort, function ( i, val ) {
+				d.order.push( { column: val.col, dir: val.dir } );
+	
+				param( 'iSortCol_'+i, val.col );
+				param( 'sSortDir_'+i, val.dir );
+			} );
+	
+			param( 'iSortingCols', sort.length );
+		}
+	
+		// If the legacy.ajax parameter is null, then we automatically decide which
+		// form to use, based on sAjaxSource
+		var legacy = DataTable.ext.legacy.ajax;
+		if ( legacy === null ) {
+			return settings.sAjaxSource ? data : d;
+		}
+	
+		// Otherwise, if legacy has been specified then we use that to decide on the
+		// form
+		return legacy ? data : d;
+	}
+	
+	
+	/**
+	 * Data the data from the server (nuking the old) and redraw the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} json json data return from the server.
+	 *  @param {string} json.sEcho Tracking flag for DataTables to match requests
+	 *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering
+	 *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering
+	 *  @param {array} json.aaData The data to display on this page
+	 *  @param {string} [json.sColumns] Column ordering (sName, comma separated)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAjaxUpdateDraw ( settings, json )
+	{
+		// v1.10 uses camelCase variables, while 1.9 uses Hungarian notation.
+		// Support both
+		var compat = function ( old, modern ) {
+			return json[old] !== undefined ? json[old] : json[modern];
+		};
+	
+		var data = _fnAjaxDataSrc( settings, json );
+		var draw            = compat( 'sEcho',                'draw' );
+		var recordsTotal    = compat( 'iTotalRecords',        'recordsTotal' );
+		var recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' );
+	
+		if ( draw ) {
+			// Protect against out of sequence returns
+			if ( draw*1 < settings.iDraw ) {
+				return;
+			}
+			settings.iDraw = draw * 1;
+		}
+	
+		_fnClearTable( settings );
+		settings._iRecordsTotal   = parseInt(recordsTotal, 10);
+		settings._iRecordsDisplay = parseInt(recordsFiltered, 10);
+	
+		for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+			_fnAddData( settings, data[i] );
+		}
+		settings.aiDisplay = settings.aiDisplayMaster.slice();
+	
+		settings.bAjaxDataGet = false;
+		_fnDraw( settings );
+	
+		if ( ! settings._bInitComplete ) {
+			_fnInitComplete( settings, json );
+		}
+	
+		settings.bAjaxDataGet = true;
+		_fnProcessingDisplay( settings, false );
+	}
+	
+	
+	/**
+	 * Get the data from the JSON data source to use for drawing a table. Using
+	 * `_fnGetObjectDataFn` allows the data to be sourced from a property of the
+	 * source object, or from a processing function.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param  {object} json Data source object / array from the server
+	 *  @return {array} Array of data to use
+	 */
+	function _fnAjaxDataSrc ( oSettings, json )
+	{
+		var dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ?
+			oSettings.ajax.dataSrc :
+			oSettings.sAjaxDataProp; // Compatibility with 1.9-.
+	
+		// Compatibility with 1.9-. In order to read from aaData, check if the
+		// default has been changed, if not, check for aaData
+		if ( dataSrc === 'data' ) {
+			return json.aaData || json[dataSrc];
+		}
+	
+		return dataSrc !== "" ?
+			_fnGetObjectDataFn( dataSrc )( json ) :
+			json;
+	}
+	
+	/**
+	 * Generate the node required for filtering text
+	 *  @returns {node} Filter control element
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlFilter ( settings )
+	{
+		var classes = settings.oClasses;
+		var tableId = settings.sTableId;
+		var language = settings.oLanguage;
+		var previousSearch = settings.oPreviousSearch;
+		var features = settings.aanFeatures;
+		var input = '<input type="search" class="'+classes.sFilterInput+'"/>';
+	
+		var str = language.sSearch;
+		str = str.match(/_INPUT_/) ?
+			str.replace('_INPUT_', input) :
+			str+input;
+	
+		var filter = $('<div/>', {
+				'id': ! features.f ? tableId+'_filter' : null,
+				'class': classes.sFilter
+			} )
+			.append( $('<label/>' ).append( str ) );
+	
+		var searchFn = function() {
+			/* Update all other filter input elements for the new display */
+			var n = features.f;
+			var val = !this.value ? "" : this.value; // mental IE8 fix :-(
+	
+			/* Now do the filter */
+			if ( val != previousSearch.sSearch ) {
+				_fnFilterComplete( settings, {
+					"sSearch": val,
+					"bRegex": previousSearch.bRegex,
+					"bSmart": previousSearch.bSmart ,
+					"bCaseInsensitive": previousSearch.bCaseInsensitive
+				} );
+	
+				// Need to redraw, without resorting
+				settings._iDisplayStart = 0;
+				_fnDraw( settings );
+			}
+		};
+	
+		var searchDelay = settings.searchDelay !== null ?
+			settings.searchDelay :
+			_fnDataSource( settings ) === 'ssp' ?
+				400 :
+				0;
+	
+		var jqFilter = $('input', filter)
+			.val( previousSearch.sSearch )
+			.attr( 'placeholder', language.sSearchPlaceholder )
+			.on(
+				'keyup.DT search.DT input.DT paste.DT cut.DT',
+				searchDelay ?
+					_fnThrottle( searchFn, searchDelay ) :
+					searchFn
+			)
+			.on( 'keypress.DT', function(e) {
+				/* Prevent form submission */
+				if ( e.keyCode == 13 ) {
+					return false;
+				}
+			} )
+			.attr('aria-controls', tableId);
+	
+		// Update the input elements whenever the table is filtered
+		$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {
+			if ( settings === s ) {
+				// IE9 throws an 'unknown error' if document.activeElement is used
+				// inside an iframe or frame...
+				try {
+					if ( jqFilter[0] !== document.activeElement ) {
+						jqFilter.val( previousSearch.sSearch );
+					}
+				}
+				catch ( e ) {}
+			}
+		} );
+	
+		return filter[0];
+	}
+	
+	
+	/**
+	 * Filter the table using both the global filter and column based filtering
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} oSearch search information
+	 *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterComplete ( oSettings, oInput, iForce )
+	{
+		var oPrevSearch = oSettings.oPreviousSearch;
+		var aoPrevSearch = oSettings.aoPreSearchCols;
+		var fnSaveFilter = function ( oFilter ) {
+			/* Save the filtering values */
+			oPrevSearch.sSearch = oFilter.sSearch;
+			oPrevSearch.bRegex = oFilter.bRegex;
+			oPrevSearch.bSmart = oFilter.bSmart;
+			oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;
+		};
+		var fnRegex = function ( o ) {
+			// Backwards compatibility with the bEscapeRegex option
+			return o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex;
+		};
+	
+		// Resolve any column types that are unknown due to addition or invalidation
+		// @todo As per sort - can this be moved into an event handler?
+		_fnColumnTypes( oSettings );
+	
+		/* In server-side processing all filtering is done by the server, so no point hanging around here */
+		if ( _fnDataSource( oSettings ) != 'ssp' )
+		{
+			/* Global filter */
+			_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive );
+			fnSaveFilter( oInput );
+	
+			/* Now do the individual column filter */
+			for ( var i=0 ; i<aoPrevSearch.length ; i++ )
+			{
+				_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),
+					aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );
+			}
+	
+			/* Custom filtering */
+			_fnFilterCustom( oSettings );
+		}
+		else
+		{
+			fnSaveFilter( oInput );
+		}
+	
+		/* Tell the draw function we have been filtering */
+		oSettings.bFiltered = true;
+		_fnCallbackFire( oSettings, null, 'search', [oSettings] );
+	}
+	
+	
+	/**
+	 * Apply custom filtering functions
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterCustom( settings )
+	{
+		var filters = DataTable.ext.search;
+		var displayRows = settings.aiDisplay;
+		var row, rowIdx;
+	
+		for ( var i=0, ien=filters.length ; i<ien ; i++ ) {
+			var rows = [];
+	
+			// Loop over each row and see if it should be included
+			for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {
+				rowIdx = displayRows[ j ];
+				row = settings.aoData[ rowIdx ];
+	
+				if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {
+					rows.push( rowIdx );
+				}
+			}
+	
+			// So the array reference doesn't break set the results into the
+			// existing array
+			displayRows.length = 0;
+			$.merge( displayRows, rows );
+		}
+	}
+	
+	
+	/**
+	 * Filter the table on a per-column basis
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {string} sInput string to filter on
+	 *  @param {int} iColumn column to filter
+	 *  @param {bool} bRegex treat search string as a regular expression or not
+	 *  @param {bool} bSmart use smart filtering or not
+	 *  @param {bool} bCaseInsensitive Do case insenstive matching or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive )
+	{
+		if ( searchStr === '' ) {
+			return;
+		}
+	
+		var data;
+		var out = [];
+		var display = settings.aiDisplay;
+		var rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive );
+	
+		for ( var i=0 ; i<display.length ; i++ ) {
+			data = settings.aoData[ display[i] ]._aFilterData[ colIdx ];
+	
+			if ( rpSearch.test( data ) ) {
+				out.push( display[i] );
+			}
+		}
+	
+		settings.aiDisplay = out;
+	}
+	
+	
+	/**
+	 * Filter the data table based on user input and draw the table
+	 *  @param {object} settings dataTables settings object
+	 *  @param {string} input string to filter on
+	 *  @param {int} force optional - force a research of the master array (1) or not (undefined or 0)
+	 *  @param {bool} regex treat as a regular expression or not
+	 *  @param {bool} smart perform smart filtering or not
+	 *  @param {bool} caseInsensitive Do case insenstive matching or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilter( settings, input, force, regex, smart, caseInsensitive )
+	{
+		var rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive );
+		var prevSearch = settings.oPreviousSearch.sSearch;
+		var displayMaster = settings.aiDisplayMaster;
+		var display, invalidated, i;
+		var filtered = [];
+	
+		// Need to take account of custom filtering functions - always filter
+		if ( DataTable.ext.search.length !== 0 ) {
+			force = true;
+		}
+	
+		// Check if any of the rows were invalidated
+		invalidated = _fnFilterData( settings );
+	
+		// If the input is blank - we just want the full data set
+		if ( input.length <= 0 ) {
+			settings.aiDisplay = displayMaster.slice();
+		}
+		else {
+			// New search - start from the master array
+			if ( invalidated ||
+				 force ||
+				 regex ||
+				 prevSearch.length > input.length ||
+				 input.indexOf(prevSearch) !== 0 ||
+				 settings.bSorted // On resort, the display master needs to be
+				                  // re-filtered since indexes will have changed
+			) {
+				settings.aiDisplay = displayMaster.slice();
+			}
+	
+			// Search the display array
+			display = settings.aiDisplay;
+	
+			for ( i=0 ; i<display.length ; i++ ) {
+				if ( rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) {
+					filtered.push( display[i] );
+				}
+			}
+	
+			settings.aiDisplay = filtered;
+		}
+	}
+	
+	
+	/**
+	 * Build a regular expression object suitable for searching a table
+	 *  @param {string} sSearch string to search for
+	 *  @param {bool} bRegex treat as a regular expression or not
+	 *  @param {bool} bSmart perform smart filtering or not
+	 *  @param {bool} bCaseInsensitive Do case insensitive matching or not
+	 *  @returns {RegExp} constructed object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterCreateSearch( search, regex, smart, caseInsensitive )
+	{
+		search = regex ?
+			search :
+			_fnEscapeRegex( search );
+		
+		if ( smart ) {
+			/* For smart filtering we want to allow the search to work regardless of
+			 * word order. We also want double quoted text to be preserved, so word
+			 * order is important - a la google. So this is what we want to
+			 * generate:
+			 * 
+			 * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$
+			 */
+			var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || [''], function ( word ) {
+				if ( word.charAt(0) === '"' ) {
+					var m = word.match( /^"(.*)"$/ );
+					word = m ? m[1] : word;
+				}
+	
+				return word.replace('"', '');
+			} );
+	
+			search = '^(?=.*?'+a.join( ')(?=.*?' )+').*$';
+		}
+	
+		return new RegExp( search, caseInsensitive ? 'i' : '' );
+	}
+	
+	
+	/**
+	 * Escape a string such that it can be used in a regular expression
+	 *  @param {string} sVal string to escape
+	 *  @returns {string} escaped string
+	 *  @memberof DataTable#oApi
+	 */
+	var _fnEscapeRegex = DataTable.util.escapeRegex;
+	
+	var __filter_div = $('<div>')[0];
+	var __filter_div_textContent = __filter_div.textContent !== undefined;
+	
+	// Update the filtering data for each row if needed (by invalidation or first run)
+	function _fnFilterData ( settings )
+	{
+		var columns = settings.aoColumns;
+		var column;
+		var i, j, ien, jen, filterData, cellData, row;
+		var fomatters = DataTable.ext.type.search;
+		var wasInvalidated = false;
+	
+		for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+			row = settings.aoData[i];
+	
+			if ( ! row._aFilterData ) {
+				filterData = [];
+	
+				for ( j=0, jen=columns.length ; j<jen ; j++ ) {
+					column = columns[j];
+	
+					if ( column.bSearchable ) {
+						cellData = _fnGetCellData( settings, i, j, 'filter' );
+	
+						if ( fomatters[ column.sType ] ) {
+							cellData = fomatters[ column.sType ]( cellData );
+						}
+	
+						// Search in DataTables 1.10 is string based. In 1.11 this
+						// should be altered to also allow strict type checking.
+						if ( cellData === null ) {
+							cellData = '';
+						}
+	
+						if ( typeof cellData !== 'string' && cellData.toString ) {
+							cellData = cellData.toString();
+						}
+					}
+					else {
+						cellData = '';
+					}
+	
+					// If it looks like there is an HTML entity in the string,
+					// attempt to decode it so sorting works as expected. Note that
+					// we could use a single line of jQuery to do this, but the DOM
+					// method used here is much faster http://jsperf.com/html-decode
+					if ( cellData.indexOf && cellData.indexOf('&') !== -1 ) {
+						__filter_div.innerHTML = cellData;
+						cellData = __filter_div_textContent ?
+							__filter_div.textContent :
+							__filter_div.innerText;
+					}
+	
+					if ( cellData.replace ) {
+						cellData = cellData.replace(/[\r\n\u2028]/g, '');
+					}
+	
+					filterData.push( cellData );
+				}
+	
+				row._aFilterData = filterData;
+				row._sFilterRow = filterData.join('  ');
+				wasInvalidated = true;
+			}
+		}
+	
+		return wasInvalidated;
+	}
+	
+	
+	/**
+	 * Convert from the internal Hungarian notation to camelCase for external
+	 * interaction
+	 *  @param {object} obj Object to convert
+	 *  @returns {object} Inverted object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSearchToCamel ( obj )
+	{
+		return {
+			search:          obj.sSearch,
+			smart:           obj.bSmart,
+			regex:           obj.bRegex,
+			caseInsensitive: obj.bCaseInsensitive
+		};
+	}
+	
+	
+	
+	/**
+	 * Convert from camelCase notation to the internal Hungarian. We could use the
+	 * Hungarian convert function here, but this is cleaner
+	 *  @param {object} obj Object to convert
+	 *  @returns {object} Inverted object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSearchToHung ( obj )
+	{
+		return {
+			sSearch:          obj.search,
+			bSmart:           obj.smart,
+			bRegex:           obj.regex,
+			bCaseInsensitive: obj.caseInsensitive
+		};
+	}
+	
+	/**
+	 * Generate the node required for the info display
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {node} Information element
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlInfo ( settings )
+	{
+		var
+			tid = settings.sTableId,
+			nodes = settings.aanFeatures.i,
+			n = $('<div/>', {
+				'class': settings.oClasses.sInfo,
+				'id': ! nodes ? tid+'_info' : null
+			} );
+	
+		if ( ! nodes ) {
+			// Update display on each draw
+			settings.aoDrawCallback.push( {
+				"fn": _fnUpdateInfo,
+				"sName": "information"
+			} );
+	
+			n
+				.attr( 'role', 'status' )
+				.attr( 'aria-live', 'polite' );
+	
+			// Table is described by our info div
+			$(settings.nTable).attr( 'aria-describedby', tid+'_info' );
+		}
+	
+		return n[0];
+	}
+	
+	
+	/**
+	 * Update the information elements in the display
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnUpdateInfo ( settings )
+	{
+		/* Show information about the table */
+		var nodes = settings.aanFeatures.i;
+		if ( nodes.length === 0 ) {
+			return;
+		}
+	
+		var
+			lang  = settings.oLanguage,
+			start = settings._iDisplayStart+1,
+			end   = settings.fnDisplayEnd(),
+			max   = settings.fnRecordsTotal(),
+			total = settings.fnRecordsDisplay(),
+			out   = total ?
+				lang.sInfo :
+				lang.sInfoEmpty;
+	
+		if ( total !== max ) {
+			/* Record set after filtering */
+			out += ' ' + lang.sInfoFiltered;
+		}
+	
+		// Convert the macros
+		out += lang.sInfoPostFix;
+		out = _fnInfoMacros( settings, out );
+	
+		var callback = lang.fnInfoCallback;
+		if ( callback !== null ) {
+			out = callback.call( settings.oInstance,
+				settings, start, end, max, total, out
+			);
+		}
+	
+		$(nodes).html( out );
+	}
+	
+	
+	function _fnInfoMacros ( settings, str )
+	{
+		// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only
+		// internally
+		var
+			formatter  = settings.fnFormatNumber,
+			start      = settings._iDisplayStart+1,
+			len        = settings._iDisplayLength,
+			vis        = settings.fnRecordsDisplay(),
+			all        = len === -1;
+	
+		return str.
+			replace(/_START_/g, formatter.call( settings, start ) ).
+			replace(/_END_/g,   formatter.call( settings, settings.fnDisplayEnd() ) ).
+			replace(/_MAX_/g,   formatter.call( settings, settings.fnRecordsTotal() ) ).
+			replace(/_TOTAL_/g, formatter.call( settings, vis ) ).
+			replace(/_PAGE_/g,  formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).
+			replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) );
+	}
+	
+	
+	
+	/**
+	 * Draw the table for the first time, adding all required features
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnInitialise ( settings )
+	{
+		var i, iLen, iAjaxStart=settings.iInitDisplayStart;
+		var columns = settings.aoColumns, column;
+		var features = settings.oFeatures;
+		var deferLoading = settings.bDeferLoading; // value modified by the draw
+	
+		/* Ensure that the table data is fully initialised */
+		if ( ! settings.bInitialised ) {
+			setTimeout( function(){ _fnInitialise( settings ); }, 200 );
+			return;
+		}
+	
+		/* Show the display HTML options */
+		_fnAddOptionsHtml( settings );
+	
+		/* Build and draw the header / footer for the table */
+		_fnBuildHead( settings );
+		_fnDrawHead( settings, settings.aoHeader );
+		_fnDrawHead( settings, settings.aoFooter );
+	
+		/* Okay to show that something is going on now */
+		_fnProcessingDisplay( settings, true );
+	
+		/* Calculate sizes for columns */
+		if ( features.bAutoWidth ) {
+			_fnCalculateColumnWidths( settings );
+		}
+	
+		for ( i=0, iLen=columns.length ; i<iLen ; i++ ) {
+			column = columns[i];
+	
+			if ( column.sWidth ) {
+				column.nTh.style.width = _fnStringToCss( column.sWidth );
+			}
+		}
+	
+		_fnCallbackFire( settings, null, 'preInit', [settings] );
+	
+		// If there is default sorting required - let's do it. The sort function
+		// will do the drawing for us. Otherwise we draw the table regardless of the
+		// Ajax source - this allows the table to look initialised for Ajax sourcing
+		// data (show 'loading' message possibly)
+		_fnReDraw( settings );
+	
+		// Server-side processing init complete is done by _fnAjaxUpdateDraw
+		var dataSrc = _fnDataSource( settings );
+		if ( dataSrc != 'ssp' || deferLoading ) {
+			// if there is an ajax source load the data
+			if ( dataSrc == 'ajax' ) {
+				_fnBuildAjax( settings, [], function(json) {
+					var aData = _fnAjaxDataSrc( settings, json );
+	
+					// Got the data - add it to the table
+					for ( i=0 ; i<aData.length ; i++ ) {
+						_fnAddData( settings, aData[i] );
+					}
+	
+					// Reset the init display for cookie saving. We've already done
+					// a filter, and therefore cleared it before. So we need to make
+					// it appear 'fresh'
+					settings.iInitDisplayStart = iAjaxStart;
+	
+					_fnReDraw( settings );
+	
+					_fnProcessingDisplay( settings, false );
+					_fnInitComplete( settings, json );
+				}, settings );
+			}
+			else {
+				_fnProcessingDisplay( settings, false );
+				_fnInitComplete( settings );
+			}
+		}
+	}
+	
+	
+	/**
+	 * Draw the table for the first time, adding all required features
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} [json] JSON from the server that completed the table, if using Ajax source
+	 *    with client-side processing (optional)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnInitComplete ( settings, json )
+	{
+		settings._bInitComplete = true;
+	
+		// When data was added after the initialisation (data or Ajax) we need to
+		// calculate the column sizing
+		if ( json || settings.oInit.aaData ) {
+			_fnAdjustColumnSizing( settings );
+		}
+	
+		_fnCallbackFire( settings, null, 'plugin-init', [settings, json] );
+		_fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] );
+	}
+	
+	
+	function _fnLengthChange ( settings, val )
+	{
+		var len = parseInt( val, 10 );
+		settings._iDisplayLength = len;
+	
+		_fnLengthOverflow( settings );
+	
+		// Fire length change event
+		_fnCallbackFire( settings, null, 'length', [settings, len] );
+	}
+	
+	
+	/**
+	 * Generate the node required for user display length changing
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {node} Display length feature node
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlLength ( settings )
+	{
+		var
+			classes  = settings.oClasses,
+			tableId  = settings.sTableId,
+			menu     = settings.aLengthMenu,
+			d2       = $.isArray( menu[0] ),
+			lengths  = d2 ? menu[0] : menu,
+			language = d2 ? menu[1] : menu;
+	
+		var select = $('<select/>', {
+			'name':          tableId+'_length',
+			'aria-controls': tableId,
+			'class':         classes.sLengthSelect
+		} );
+	
+		for ( var i=0, ien=lengths.length ; i<ien ; i++ ) {
+			select[0][ i ] = new Option(
+				typeof language[i] === 'number' ?
+					settings.fnFormatNumber( language[i] ) :
+					language[i],
+				lengths[i]
+			);
+		}
+	
+		var div = $('<div><label/></div>').addClass( classes.sLength );
+		if ( ! settings.aanFeatures.l ) {
+			div[0].id = tableId+'_length';
+		}
+	
+		div.children().append(
+			settings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )
+		);
+	
+		// Can't use `select` variable as user might provide their own and the
+		// reference is broken by the use of outerHTML
+		$('select', div)
+			.val( settings._iDisplayLength )
+			.on( 'change.DT', function(e) {
+				_fnLengthChange( settings, $(this).val() );
+				_fnDraw( settings );
+			} );
+	
+		// Update node value whenever anything changes the table's length
+		$(settings.nTable).on( 'length.dt.DT', function (e, s, len) {
+			if ( settings === s ) {
+				$('select', div).val( len );
+			}
+		} );
+	
+		return div[0];
+	}
+	
+	
+	
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Note that most of the paging logic is done in
+	 * DataTable.ext.pager
+	 */
+	
+	/**
+	 * Generate the node required for default pagination
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {node} Pagination feature node
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlPaginate ( settings )
+	{
+		var
+			type   = settings.sPaginationType,
+			plugin = DataTable.ext.pager[ type ],
+			modern = typeof plugin === 'function',
+			redraw = function( settings ) {
+				_fnDraw( settings );
+			},
+			node = $('<div/>').addClass( settings.oClasses.sPaging + type )[0],
+			features = settings.aanFeatures;
+	
+		if ( ! modern ) {
+			plugin.fnInit( settings, node, redraw );
+		}
+	
+		/* Add a draw callback for the pagination on first instance, to update the paging display */
+		if ( ! features.p )
+		{
+			node.id = settings.sTableId+'_paginate';
+	
+			settings.aoDrawCallback.push( {
+				"fn": function( settings ) {
+					if ( modern ) {
+						var
+							start      = settings._iDisplayStart,
+							len        = settings._iDisplayLength,
+							visRecords = settings.fnRecordsDisplay(),
+							all        = len === -1,
+							page = all ? 0 : Math.ceil( start / len ),
+							pages = all ? 1 : Math.ceil( visRecords / len ),
+							buttons = plugin(page, pages),
+							i, ien;
+	
+						for ( i=0, ien=features.p.length ; i<ien ; i++ ) {
+							_fnRenderer( settings, 'pageButton' )(
+								settings, features.p[i], i, buttons, page, pages
+							);
+						}
+					}
+					else {
+						plugin.fnUpdate( settings, redraw );
+					}
+				},
+				"sName": "pagination"
+			} );
+		}
+	
+		return node;
+	}
+	
+	
+	/**
+	 * Alter the display settings to change the page
+	 *  @param {object} settings DataTables settings object
+	 *  @param {string|int} action Paging action to take: "first", "previous",
+	 *    "next" or "last" or page number to jump to (integer)
+	 *  @param [bool] redraw Automatically draw the update or not
+	 *  @returns {bool} true page has changed, false - no change
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnPageChange ( settings, action, redraw )
+	{
+		var
+			start     = settings._iDisplayStart,
+			len       = settings._iDisplayLength,
+			records   = settings.fnRecordsDisplay();
+	
+		if ( records === 0 || len === -1 )
+		{
+			start = 0;
+		}
+		else if ( typeof action === "number" )
+		{
+			start = action * len;
+	
+			if ( start > records )
+			{
+				start = 0;
+			}
+		}
+		else if ( action == "first" )
+		{
+			start = 0;
+		}
+		else if ( action == "previous" )
+		{
+			start = len >= 0 ?
+				start - len :
+				0;
+	
+			if ( start < 0 )
+			{
+			  start = 0;
+			}
+		}
+		else if ( action == "next" )
+		{
+			if ( start + len < records )
+			{
+				start += len;
+			}
+		}
+		else if ( action == "last" )
+		{
+			start = Math.floor( (records-1) / len) * len;
+		}
+		else
+		{
+			_fnLog( settings, 0, "Unknown paging action: "+action, 5 );
+		}
+	
+		var changed = settings._iDisplayStart !== start;
+		settings._iDisplayStart = start;
+	
+		if ( changed ) {
+			_fnCallbackFire( settings, null, 'page', [settings] );
+	
+			if ( redraw ) {
+				_fnDraw( settings );
+			}
+		}
+	
+		return changed;
+	}
+	
+	
+	
+	/**
+	 * Generate the node required for the processing node
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {node} Processing element
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlProcessing ( settings )
+	{
+		return $('<div/>', {
+				'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null,
+				'class': settings.oClasses.sProcessing
+			} )
+			.html( settings.oLanguage.sProcessing )
+			.insertBefore( settings.nTable )[0];
+	}
+	
+	
+	/**
+	 * Display or hide the processing indicator
+	 *  @param {object} settings dataTables settings object
+	 *  @param {bool} show Show the processing indicator (true) or not (false)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnProcessingDisplay ( settings, show )
+	{
+		if ( settings.oFeatures.bProcessing ) {
+			$(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );
+		}
+	
+		_fnCallbackFire( settings, null, 'processing', [settings, show] );
+	}
+	
+	/**
+	 * Add any control elements for the table - specifically scrolling
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {node} Node to add to the DOM
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlTable ( settings )
+	{
+		var table = $(settings.nTable);
+	
+		// Add the ARIA grid role to the table
+		table.attr( 'role', 'grid' );
+	
+		// Scrolling from here on in
+		var scroll = settings.oScroll;
+	
+		if ( scroll.sX === '' && scroll.sY === '' ) {
+			return settings.nTable;
+		}
+	
+		var scrollX = scroll.sX;
+		var scrollY = scroll.sY;
+		var classes = settings.oClasses;
+		var caption = table.children('caption');
+		var captionSide = caption.length ? caption[0]._captionSide : null;
+		var headerClone = $( table[0].cloneNode(false) );
+		var footerClone = $( table[0].cloneNode(false) );
+		var footer = table.children('tfoot');
+		var _div = '<div/>';
+		var size = function ( s ) {
+			return !s ? null : _fnStringToCss( s );
+		};
+	
+		if ( ! footer.length ) {
+			footer = null;
+		}
+	
+		/*
+		 * The HTML structure that we want to generate in this function is:
+		 *  div - scroller
+		 *    div - scroll head
+		 *      div - scroll head inner
+		 *        table - scroll head table
+		 *          thead - thead
+		 *    div - scroll body
+		 *      table - table (master table)
+		 *        thead - thead clone for sizing
+		 *        tbody - tbody
+		 *    div - scroll foot
+		 *      div - scroll foot inner
+		 *        table - scroll foot table
+		 *          tfoot - tfoot
+		 */
+		var scroller = $( _div, { 'class': classes.sScrollWrapper } )
+			.append(
+				$(_div, { 'class': classes.sScrollHead } )
+					.css( {
+						overflow: 'hidden',
+						position: 'relative',
+						border: 0,
+						width: scrollX ? size(scrollX) : '100%'
+					} )
+					.append(
+						$(_div, { 'class': classes.sScrollHeadInner } )
+							.css( {
+								'box-sizing': 'content-box',
+								width: scroll.sXInner || '100%'
+							} )
+							.append(
+								headerClone
+									.removeAttr('id')
+									.css( 'margin-left', 0 )
+									.append( captionSide === 'top' ? caption : null )
+									.append(
+										table.children('thead')
+									)
+							)
+					)
+			)
+			.append(
+				$(_div, { 'class': classes.sScrollBody } )
+					.css( {
+						position: 'relative',
+						overflow: 'auto',
+						width: size( scrollX )
+					} )
+					.append( table )
+			);
+	
+		if ( footer ) {
+			scroller.append(
+				$(_div, { 'class': classes.sScrollFoot } )
+					.css( {
+						overflow: 'hidden',
+						border: 0,
+						width: scrollX ? size(scrollX) : '100%'
+					} )
+					.append(
+						$(_div, { 'class': classes.sScrollFootInner } )
+							.append(
+								footerClone
+									.removeAttr('id')
+									.css( 'margin-left', 0 )
+									.append( captionSide === 'bottom' ? caption : null )
+									.append(
+										table.children('tfoot')
+									)
+							)
+					)
+			);
+		}
+	
+		var children = scroller.children();
+		var scrollHead = children[0];
+		var scrollBody = children[1];
+		var scrollFoot = footer ? children[2] : null;
+	
+		// When the body is scrolled, then we also want to scroll the headers
+		if ( scrollX ) {
+			$(scrollBody).on( 'scroll.DT', function (e) {
+				var scrollLeft = this.scrollLeft;
+	
+				scrollHead.scrollLeft = scrollLeft;
+	
+				if ( footer ) {
+					scrollFoot.scrollLeft = scrollLeft;
+				}
+			} );
+		}
+	
+		$(scrollBody).css(
+			scrollY && scroll.bCollapse ? 'max-height' : 'height', 
+			scrollY
+		);
+	
+		settings.nScrollHead = scrollHead;
+		settings.nScrollBody = scrollBody;
+		settings.nScrollFoot = scrollFoot;
+	
+		// On redraw - align columns
+		settings.aoDrawCallback.push( {
+			"fn": _fnScrollDraw,
+			"sName": "scrolling"
+		} );
+	
+		return scroller[0];
+	}
+	
+	
+	
+	/**
+	 * Update the header, footer and body tables for resizing - i.e. column
+	 * alignment.
+	 *
+	 * Welcome to the most horrible function DataTables. The process that this
+	 * function follows is basically:
+	 *   1. Re-create the table inside the scrolling div
+	 *   2. Take live measurements from the DOM
+	 *   3. Apply the measurements to align the columns
+	 *   4. Clean up
+	 *
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnScrollDraw ( settings )
+	{
+		// Given that this is such a monster function, a lot of variables are use
+		// to try and keep the minimised size as small as possible
+		var
+			scroll         = settings.oScroll,
+			scrollX        = scroll.sX,
+			scrollXInner   = scroll.sXInner,
+			scrollY        = scroll.sY,
+			barWidth       = scroll.iBarWidth,
+			divHeader      = $(settings.nScrollHead),
+			divHeaderStyle = divHeader[0].style,
+			divHeaderInner = divHeader.children('div'),
+			divHeaderInnerStyle = divHeaderInner[0].style,
+			divHeaderTable = divHeaderInner.children('table'),
+			divBodyEl      = settings.nScrollBody,
+			divBody        = $(divBodyEl),
+			divBodyStyle   = divBodyEl.style,
+			divFooter      = $(settings.nScrollFoot),
+			divFooterInner = divFooter.children('div'),
+			divFooterTable = divFooterInner.children('table'),
+			header         = $(settings.nTHead),
+			table          = $(settings.nTable),
+			tableEl        = table[0],
+			tableStyle     = tableEl.style,
+			footer         = settings.nTFoot ? $(settings.nTFoot) : null,
+			browser        = settings.oBrowser,
+			ie67           = browser.bScrollOversize,
+			dtHeaderCells  = _pluck( settings.aoColumns, 'nTh' ),
+			headerTrgEls, footerTrgEls,
+			headerSrcEls, footerSrcEls,
+			headerCopy, footerCopy,
+			headerWidths=[], footerWidths=[],
+			headerContent=[], footerContent=[],
+			idx, correction, sanityWidth,
+			zeroOut = function(nSizer) {
+				var style = nSizer.style;
+				style.paddingTop = "0";
+				style.paddingBottom = "0";
+				style.borderTopWidth = "0";
+				style.borderBottomWidth = "0";
+				style.height = 0;
+			};
+	
+		// If the scrollbar visibility has changed from the last draw, we need to
+		// adjust the column sizes as the table width will have changed to account
+		// for the scrollbar
+		var scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight;
+		
+		if ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) {
+			settings.scrollBarVis = scrollBarVis;
+			_fnAdjustColumnSizing( settings );
+			return; // adjust column sizing will call this function again
+		}
+		else {
+			settings.scrollBarVis = scrollBarVis;
+		}
+	
+		/*
+		 * 1. Re-create the table inside the scrolling div
+		 */
+	
+		// Remove the old minimised thead and tfoot elements in the inner table
+		table.children('thead, tfoot').remove();
+	
+		if ( footer ) {
+			footerCopy = footer.clone().prependTo( table );
+			footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized
+			footerSrcEls = footerCopy.find('tr');
+		}
+	
+		// Clone the current header and footer elements and then place it into the inner table
+		headerCopy = header.clone().prependTo( table );
+		headerTrgEls = header.find('tr'); // original header is in its own table
+		headerSrcEls = headerCopy.find('tr');
+		headerCopy.find('th, td').removeAttr('tabindex');
+	
+	
+		/*
+		 * 2. Take live measurements from the DOM - do not alter the DOM itself!
+		 */
+	
+		// Remove old sizing and apply the calculated column widths
+		// Get the unique column headers in the newly created (cloned) header. We want to apply the
+		// calculated sizes to this header
+		if ( ! scrollX )
+		{
+			divBodyStyle.width = '100%';
+			divHeader[0].style.width = '100%';
+		}
+	
+		$.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {
+			idx = _fnVisibleToColumnIndex( settings, i );
+			el.style.width = settings.aoColumns[idx].sWidth;
+		} );
+	
+		if ( footer ) {
+			_fnApplyToChildren( function(n) {
+				n.style.width = "";
+			}, footerSrcEls );
+		}
+	
+		// Size the table as a whole
+		sanityWidth = table.outerWidth();
+		if ( scrollX === "" ) {
+			// No x scrolling
+			tableStyle.width = "100%";
+	
+			// IE7 will make the width of the table when 100% include the scrollbar
+			// - which is shouldn't. When there is a scrollbar we need to take this
+			// into account.
+			if ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight ||
+				divBody.css('overflow-y') == "scroll")
+			) {
+				tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);
+			}
+	
+			// Recalculate the sanity width
+			sanityWidth = table.outerWidth();
+		}
+		else if ( scrollXInner !== "" ) {
+			// legacy x scroll inner has been given - use it
+			tableStyle.width = _fnStringToCss(scrollXInner);
+	
+			// Recalculate the sanity width
+			sanityWidth = table.outerWidth();
+		}
+	
+		// Hidden header should have zero height, so remove padding and borders. Then
+		// set the width based on the real headers
+	
+		// Apply all styles in one pass
+		_fnApplyToChildren( zeroOut, headerSrcEls );
+	
+		// Read all widths in next pass
+		_fnApplyToChildren( function(nSizer) {
+			headerContent.push( nSizer.innerHTML );
+			headerWidths.push( _fnStringToCss( $(nSizer).css('width') ) );
+		}, headerSrcEls );
+	
+		// Apply all widths in final pass
+		_fnApplyToChildren( function(nToSize, i) {
+			// Only apply widths to the DataTables detected header cells - this
+			// prevents complex headers from having contradictory sizes applied
+			if ( $.inArray( nToSize, dtHeaderCells ) !== -1 ) {
+				nToSize.style.width = headerWidths[i];
+			}
+		}, headerTrgEls );
+	
+		$(headerSrcEls).height(0);
+	
+		/* Same again with the footer if we have one */
+		if ( footer )
+		{
+			_fnApplyToChildren( zeroOut, footerSrcEls );
+	
+			_fnApplyToChildren( function(nSizer) {
+				footerContent.push( nSizer.innerHTML );
+				footerWidths.push( _fnStringToCss( $(nSizer).css('width') ) );
+			}, footerSrcEls );
+	
+			_fnApplyToChildren( function(nToSize, i) {
+				nToSize.style.width = footerWidths[i];
+			}, footerTrgEls );
+	
+			$(footerSrcEls).height(0);
+		}
+	
+	
+		/*
+		 * 3. Apply the measurements
+		 */
+	
+		// "Hide" the header and footer that we used for the sizing. We need to keep
+		// the content of the cell so that the width applied to the header and body
+		// both match, but we want to hide it completely. We want to also fix their
+		// width to what they currently are
+		_fnApplyToChildren( function(nSizer, i) {
+			nSizer.innerHTML = '<div class="dataTables_sizing">'+headerContent[i]+'</div>';
+			nSizer.childNodes[0].style.height = "0";
+			nSizer.childNodes[0].style.overflow = "hidden";
+			nSizer.style.width = headerWidths[i];
+		}, headerSrcEls );
+	
+		if ( footer )
+		{
+			_fnApplyToChildren( function(nSizer, i) {
+				nSizer.innerHTML = '<div class="dataTables_sizing">'+footerContent[i]+'</div>';
+				nSizer.childNodes[0].style.height = "0";
+				nSizer.childNodes[0].style.overflow = "hidden";
+				nSizer.style.width = footerWidths[i];
+			}, footerSrcEls );
+		}
+	
+		// Sanity check that the table is of a sensible width. If not then we are going to get
+		// misalignment - try to prevent this by not allowing the table to shrink below its min width
+		if ( table.outerWidth() < sanityWidth )
+		{
+			// The min width depends upon if we have a vertical scrollbar visible or not */
+			correction = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||
+				divBody.css('overflow-y') == "scroll")) ?
+					sanityWidth+barWidth :
+					sanityWidth;
+	
+			// IE6/7 are a law unto themselves...
+			if ( ie67 && (divBodyEl.scrollHeight >
+				divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll")
+			) {
+				tableStyle.width = _fnStringToCss( correction-barWidth );
+			}
+	
+			// And give the user a warning that we've stopped the table getting too small
+			if ( scrollX === "" || scrollXInner !== "" ) {
+				_fnLog( settings, 1, 'Possible column misalignment', 6 );
+			}
+		}
+		else
+		{
+			correction = '100%';
+		}
+	
+		// Apply to the container elements
+		divBodyStyle.width = _fnStringToCss( correction );
+		divHeaderStyle.width = _fnStringToCss( correction );
+	
+		if ( footer ) {
+			settings.nScrollFoot.style.width = _fnStringToCss( correction );
+		}
+	
+	
+		/*
+		 * 4. Clean up
+		 */
+		if ( ! scrollY ) {
+			/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting
+			 * the scrollbar height from the visible display, rather than adding it on. We need to
+			 * set the height in order to sort this. Don't want to do it in any other browsers.
+			 */
+			if ( ie67 ) {
+				divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );
+			}
+		}
+	
+		/* Finally set the width's of the header and footer tables */
+		var iOuterWidth = table.outerWidth();
+		divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );
+		divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );
+	
+		// Figure out if there are scrollbar present - if so then we need a the header and footer to
+		// provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
+		var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll";
+		var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );
+		divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px";
+	
+		if ( footer ) {
+			divFooterTable[0].style.width = _fnStringToCss( iOuterWidth );
+			divFooterInner[0].style.width = _fnStringToCss( iOuterWidth );
+			divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px";
+		}
+	
+		// Correct DOM ordering for colgroup - comes before the thead
+		table.children('colgroup').insertBefore( table.children('thead') );
+	
+		/* Adjust the position of the header in case we loose the y-scrollbar */
+		divBody.trigger('scroll');
+	
+		// If sorting or filtering has occurred, jump the scrolling back to the top
+		// only if we aren't holding the position
+		if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {
+			divBodyEl.scrollTop = 0;
+		}
+	}
+	
+	
+	
+	/**
+	 * Apply a given function to the display child nodes of an element array (typically
+	 * TD children of TR rows
+	 *  @param {function} fn Method to apply to the objects
+	 *  @param array {nodes} an1 List of elements to look through for display children
+	 *  @param array {nodes} an2 Another list (identical structure to the first) - optional
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnApplyToChildren( fn, an1, an2 )
+	{
+		var index=0, i=0, iLen=an1.length;
+		var nNode1, nNode2;
+	
+		while ( i < iLen ) {
+			nNode1 = an1[i].firstChild;
+			nNode2 = an2 ? an2[i].firstChild : null;
+	
+			while ( nNode1 ) {
+				if ( nNode1.nodeType === 1 ) {
+					if ( an2 ) {
+						fn( nNode1, nNode2, index );
+					}
+					else {
+						fn( nNode1, index );
+					}
+	
+					index++;
+				}
+	
+				nNode1 = nNode1.nextSibling;
+				nNode2 = an2 ? nNode2.nextSibling : null;
+			}
+	
+			i++;
+		}
+	}
+	
+	
+	
+	var __re_html_remove = /<.*?>/g;
+	
+	
+	/**
+	 * Calculate the width of columns for the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCalculateColumnWidths ( oSettings )
+	{
+		var
+			table = oSettings.nTable,
+			columns = oSettings.aoColumns,
+			scroll = oSettings.oScroll,
+			scrollY = scroll.sY,
+			scrollX = scroll.sX,
+			scrollXInner = scroll.sXInner,
+			columnCount = columns.length,
+			visibleColumns = _fnGetColumns( oSettings, 'bVisible' ),
+			headerCells = $('th', oSettings.nTHead),
+			tableWidthAttr = table.getAttribute('width'), // from DOM element
+			tableContainer = table.parentNode,
+			userInputs = false,
+			i, column, columnIdx, width, outerWidth,
+			browser = oSettings.oBrowser,
+			ie67 = browser.bScrollOversize;
+	
+		var styleWidth = table.style.width;
+		if ( styleWidth && styleWidth.indexOf('%') !== -1 ) {
+			tableWidthAttr = styleWidth;
+		}
+	
+		/* Convert any user input sizes into pixel sizes */
+		for ( i=0 ; i<visibleColumns.length ; i++ ) {
+			column = columns[ visibleColumns[i] ];
+	
+			if ( column.sWidth !== null ) {
+				column.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer );
+	
+				userInputs = true;
+			}
+		}
+	
+		/* If the number of columns in the DOM equals the number that we have to
+		 * process in DataTables, then we can use the offsets that are created by
+		 * the web- browser. No custom sizes can be set in order for this to happen,
+		 * nor scrolling used
+		 */
+		if ( ie67 || ! userInputs && ! scrollX && ! scrollY &&
+		     columnCount == _fnVisbleColumns( oSettings ) &&
+		     columnCount == headerCells.length
+		) {
+			for ( i=0 ; i<columnCount ; i++ ) {
+				var colIdx = _fnVisibleToColumnIndex( oSettings, i );
+	
+				if ( colIdx !== null ) {
+					columns[ colIdx ].sWidth = _fnStringToCss( headerCells.eq(i).width() );
+				}
+			}
+		}
+		else
+		{
+			// Otherwise construct a single row, worst case, table with the widest
+			// node in the data, assign any user defined widths, then insert it into
+			// the DOM and allow the browser to do all the hard work of calculating
+			// table widths
+			var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table
+				.css( 'visibility', 'hidden' )
+				.removeAttr( 'id' );
+	
+			// Clean up the table body
+			tmpTable.find('tbody tr').remove();
+			var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
+	
+			// Clone the table header and footer - we can't use the header / footer
+			// from the cloned table, since if scrolling is active, the table's
+			// real header and footer are contained in different table tags
+			tmpTable.find('thead, tfoot').remove();
+			tmpTable
+				.append( $(oSettings.nTHead).clone() )
+				.append( $(oSettings.nTFoot).clone() );
+	
+			// Remove any assigned widths from the footer (from scrolling)
+			tmpTable.find('tfoot th, tfoot td').css('width', '');
+	
+			// Apply custom sizing to the cloned header
+			headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );
+	
+			for ( i=0 ; i<visibleColumns.length ; i++ ) {
+				column = columns[ visibleColumns[i] ];
+	
+				headerCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ?
+					_fnStringToCss( column.sWidthOrig ) :
+					'';
+	
+				// For scrollX we need to force the column width otherwise the
+				// browser will collapse it. If this width is smaller than the
+				// width the column requires, then it will have no effect
+				if ( column.sWidthOrig && scrollX ) {
+					$( headerCells[i] ).append( $('<div/>').css( {
+						width: column.sWidthOrig,
+						margin: 0,
+						padding: 0,
+						border: 0,
+						height: 1
+					} ) );
+				}
+			}
+	
+			// Find the widest cell for each column and put it into the table
+			if ( oSettings.aoData.length ) {
+				for ( i=0 ; i<visibleColumns.length ; i++ ) {
+					columnIdx = visibleColumns[i];
+					column = columns[ columnIdx ];
+	
+					$( _fnGetWidestNode( oSettings, columnIdx ) )
+						.clone( false )
+						.append( column.sContentPadding )
+						.appendTo( tr );
+				}
+			}
+	
+			// Tidy the temporary table - remove name attributes so there aren't
+			// duplicated in the dom (radio elements for example)
+			$('[name]', tmpTable).removeAttr('name');
+	
+			// Table has been built, attach to the document so we can work with it.
+			// A holding element is used, positioned at the top of the container
+			// with minimal height, so it has no effect on if the container scrolls
+			// or not. Otherwise it might trigger scrolling when it actually isn't
+			// needed
+			var holder = $('<div/>').css( scrollX || scrollY ?
+					{
+						position: 'absolute',
+						top: 0,
+						left: 0,
+						height: 1,
+						right: 0,
+						overflow: 'hidden'
+					} :
+					{}
+				)
+				.append( tmpTable )
+				.appendTo( tableContainer );
+	
+			// When scrolling (X or Y) we want to set the width of the table as 
+			// appropriate. However, when not scrolling leave the table width as it
+			// is. This results in slightly different, but I think correct behaviour
+			if ( scrollX && scrollXInner ) {
+				tmpTable.width( scrollXInner );
+			}
+			else if ( scrollX ) {
+				tmpTable.css( 'width', 'auto' );
+				tmpTable.removeAttr('width');
+	
+				// If there is no width attribute or style, then allow the table to
+				// collapse
+				if ( tmpTable.width() < tableContainer.clientWidth && tableWidthAttr ) {
+					tmpTable.width( tableContainer.clientWidth );
+				}
+			}
+			else if ( scrollY ) {
+				tmpTable.width( tableContainer.clientWidth );
+			}
+			else if ( tableWidthAttr ) {
+				tmpTable.width( tableWidthAttr );
+			}
+	
+			// Get the width of each column in the constructed table - we need to
+			// know the inner width (so it can be assigned to the other table's
+			// cells) and the outer width so we can calculate the full width of the
+			// table. This is safe since DataTables requires a unique cell for each
+			// column, but if ever a header can span multiple columns, this will
+			// need to be modified.
+			var total = 0;
+			for ( i=0 ; i<visibleColumns.length ; i++ ) {
+				var cell = $(headerCells[i]);
+				var border = cell.outerWidth() - cell.width();
+	
+				// Use getBounding... where possible (not IE8-) because it can give
+				// sub-pixel accuracy, which we then want to round up!
+				var bounding = browser.bBounding ?
+					Math.ceil( headerCells[i].getBoundingClientRect().width ) :
+					cell.outerWidth();
+	
+				// Total is tracked to remove any sub-pixel errors as the outerWidth
+				// of the table might not equal the total given here (IE!).
+				total += bounding;
+	
+				// Width for each column to use
+				columns[ visibleColumns[i] ].sWidth = _fnStringToCss( bounding - border );
+			}
+	
+			table.style.width = _fnStringToCss( total );
+	
+			// Finished with the table - ditch it
+			holder.remove();
+		}
+	
+		// If there is a width attr, we want to attach an event listener which
+		// allows the table sizing to automatically adjust when the window is
+		// resized. Use the width attr rather than CSS, since we can't know if the
+		// CSS is a relative value or absolute - DOM read is always px.
+		if ( tableWidthAttr ) {
+			table.style.width = _fnStringToCss( tableWidthAttr );
+		}
+	
+		if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {
+			var bindResize = function () {
+				$(window).on('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {
+					_fnAdjustColumnSizing( oSettings );
+				} ) );
+			};
+	
+			// IE6/7 will crash if we bind a resize event handler on page load.
+			// To be removed in 1.11 which drops IE6/7 support
+			if ( ie67 ) {
+				setTimeout( bindResize, 1000 );
+			}
+			else {
+				bindResize();
+			}
+	
+			oSettings._reszEvt = true;
+		}
+	}
+	
+	
+	/**
+	 * Throttle the calls to a function. Arguments and context are maintained for
+	 * the throttled function
+	 *  @param {function} fn Function to be called
+	 *  @param {int} [freq=200] call frequency in mS
+	 *  @returns {function} wrapped function
+	 *  @memberof DataTable#oApi
+	 */
+	var _fnThrottle = DataTable.util.throttle;
+	
+	
+	/**
+	 * Convert a CSS unit width to pixels (e.g. 2em)
+	 *  @param {string} width width to be converted
+	 *  @param {node} parent parent to get the with for (required for relative widths) - optional
+	 *  @returns {int} width in pixels
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnConvertToWidth ( width, parent )
+	{
+		if ( ! width ) {
+			return 0;
+		}
+	
+		var n = $('<div/>')
+			.css( 'width', _fnStringToCss( width ) )
+			.appendTo( parent || document.body );
+	
+		var val = n[0].offsetWidth;
+		n.remove();
+	
+		return val;
+	}
+	
+	
+	/**
+	 * Get the widest node
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} colIdx column of interest
+	 *  @returns {node} widest table node
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetWidestNode( settings, colIdx )
+	{
+		var idx = _fnGetMaxLenString( settings, colIdx );
+		if ( idx < 0 ) {
+			return null;
+		}
+	
+		var data = settings.aoData[ idx ];
+		return ! data.nTr ? // Might not have been created when deferred rendering
+			$('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :
+			data.anCells[ colIdx ];
+	}
+	
+	
+	/**
+	 * Get the maximum strlen for each data column
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} colIdx column of interest
+	 *  @returns {string} max string length for each column
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetMaxLenString( settings, colIdx )
+	{
+		var s, max=-1, maxIdx = -1;
+	
+		for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+			s = _fnGetCellData( settings, i, colIdx, 'display' )+'';
+			s = s.replace( __re_html_remove, '' );
+			s = s.replace( /&nbsp;/g, ' ' );
+	
+			if ( s.length > max ) {
+				max = s.length;
+				maxIdx = i;
+			}
+		}
+	
+		return maxIdx;
+	}
+	
+	
+	/**
+	 * Append a CSS unit (only if required) to a string
+	 *  @param {string} value to css-ify
+	 *  @returns {string} value with css unit
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnStringToCss( s )
+	{
+		if ( s === null ) {
+			return '0px';
+		}
+	
+		if ( typeof s == 'number' ) {
+			return s < 0 ?
+				'0px' :
+				s+'px';
+		}
+	
+		// Check it has a unit character already
+		return s.match(/\d$/) ?
+			s+'px' :
+			s;
+	}
+	
+	
+	
+	function _fnSortFlatten ( settings )
+	{
+		var
+			i, iLen, k, kLen,
+			aSort = [],
+			aiOrig = [],
+			aoColumns = settings.aoColumns,
+			aDataSort, iCol, sType, srcCol,
+			fixed = settings.aaSortingFixed,
+			fixedObj = $.isPlainObject( fixed ),
+			nestedSort = [],
+			add = function ( a ) {
+				if ( a.length && ! $.isArray( a[0] ) ) {
+					// 1D array
+					nestedSort.push( a );
+				}
+				else {
+					// 2D array
+					$.merge( nestedSort, a );
+				}
+			};
+	
+		// Build the sort array, with pre-fix and post-fix options if they have been
+		// specified
+		if ( $.isArray( fixed ) ) {
+			add( fixed );
+		}
+	
+		if ( fixedObj && fixed.pre ) {
+			add( fixed.pre );
+		}
+	
+		add( settings.aaSorting );
+	
+		if (fixedObj && fixed.post ) {
+			add( fixed.post );
+		}
+	
+		for ( i=0 ; i<nestedSort.length ; i++ )
+		{
+			srcCol = nestedSort[i][0];
+			aDataSort = aoColumns[ srcCol ].aDataSort;
+	
+			for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )
+			{
+				iCol = aDataSort[k];
+				sType = aoColumns[ iCol ].sType || 'string';
+	
+				if ( nestedSort[i]._idx === undefined ) {
+					nestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting );
+				}
+	
+				aSort.push( {
+					src:       srcCol,
+					col:       iCol,
+					dir:       nestedSort[i][1],
+					index:     nestedSort[i]._idx,
+					type:      sType,
+					formatter: DataTable.ext.type.order[ sType+"-pre" ]
+				} );
+			}
+		}
+	
+		return aSort;
+	}
+	
+	/**
+	 * Change the order of the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 *  @todo This really needs split up!
+	 */
+	function _fnSort ( oSettings )
+	{
+		var
+			i, ien, iLen, j, jLen, k, kLen,
+			sDataType, nTh,
+			aiOrig = [],
+			oExtSort = DataTable.ext.type.order,
+			aoData = oSettings.aoData,
+			aoColumns = oSettings.aoColumns,
+			aDataSort, data, iCol, sType, oSort,
+			formatters = 0,
+			sortCol,
+			displayMaster = oSettings.aiDisplayMaster,
+			aSort;
+	
+		// Resolve any column types that are unknown due to addition or invalidation
+		// @todo Can this be moved into a 'data-ready' handler which is called when
+		//   data is going to be used in the table?
+		_fnColumnTypes( oSettings );
+	
+		aSort = _fnSortFlatten( oSettings );
+	
+		for ( i=0, ien=aSort.length ; i<ien ; i++ ) {
+			sortCol = aSort[i];
+	
+			// Track if we can use the fast sort algorithm
+			if ( sortCol.formatter ) {
+				formatters++;
+			}
+	
+			// Load the data needed for the sort, for each cell
+			_fnSortData( oSettings, sortCol.col );
+		}
+	
+		/* No sorting required if server-side or no sorting array */
+		if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )
+		{
+			// Create a value - key array of the current row positions such that we can use their
+			// current position during the sort, if values match, in order to perform stable sorting
+			for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {
+				aiOrig[ displayMaster[i] ] = i;
+			}
+	
+			/* Do the sort - here we want multi-column sorting based on a given data source (column)
+			 * and sorting function (from oSort) in a certain direction. It's reasonably complex to
+			 * follow on it's own, but this is what we want (example two column sorting):
+			 *  fnLocalSorting = function(a,b){
+			 *    var iTest;
+			 *    iTest = oSort['string-asc']('data11', 'data12');
+			 *      if (iTest !== 0)
+			 *        return iTest;
+			 *    iTest = oSort['numeric-desc']('data21', 'data22');
+			 *    if (iTest !== 0)
+			 *      return iTest;
+			 *    return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
+			 *  }
+			 * Basically we have a test for each sorting column, if the data in that column is equal,
+			 * test the next column. If all columns match, then we use a numeric sort on the row
+			 * positions in the original data array to provide a stable sort.
+			 *
+			 * Note - I know it seems excessive to have two sorting methods, but the first is around
+			 * 15% faster, so the second is only maintained for backwards compatibility with sorting
+			 * methods which do not have a pre-sort formatting function.
+			 */
+			if ( formatters === aSort.length ) {
+				// All sort types have formatting functions
+				displayMaster.sort( function ( a, b ) {
+					var
+						x, y, k, test, sort,
+						len=aSort.length,
+						dataA = aoData[a]._aSortData,
+						dataB = aoData[b]._aSortData;
+	
+					for ( k=0 ; k<len ; k++ ) {
+						sort = aSort[k];
+	
+						x = dataA[ sort.col ];
+						y = dataB[ sort.col ];
+	
+						test = x<y ? -1 : x>y ? 1 : 0;
+						if ( test !== 0 ) {
+							return sort.dir === 'asc' ? test : -test;
+						}
+					}
+	
+					x = aiOrig[a];
+					y = aiOrig[b];
+					return x<y ? -1 : x>y ? 1 : 0;
+				} );
+			}
+			else {
+				// Depreciated - remove in 1.11 (providing a plug-in option)
+				// Not all sort types have formatting methods, so we have to call their sorting
+				// methods.
+				displayMaster.sort( function ( a, b ) {
+					var
+						x, y, k, l, test, sort, fn,
+						len=aSort.length,
+						dataA = aoData[a]._aSortData,
+						dataB = aoData[b]._aSortData;
+	
+					for ( k=0 ; k<len ; k++ ) {
+						sort = aSort[k];
+	
+						x = dataA[ sort.col ];
+						y = dataB[ sort.col ];
+	
+						fn = oExtSort[ sort.type+"-"+sort.dir ] || oExtSort[ "string-"+sort.dir ];
+						test = fn( x, y );
+						if ( test !== 0 ) {
+							return test;
+						}
+					}
+	
+					x = aiOrig[a];
+					y = aiOrig[b];
+					return x<y ? -1 : x>y ? 1 : 0;
+				} );
+			}
+		}
+	
+		/* Tell the draw function that we have sorted the data */
+		oSettings.bSorted = true;
+	}
+	
+	
+	function _fnSortAria ( settings )
+	{
+		var label;
+		var nextSort;
+		var columns = settings.aoColumns;
+		var aSort = _fnSortFlatten( settings );
+		var oAria = settings.oLanguage.oAria;
+	
+		// ARIA attributes - need to loop all columns, to update all (removing old
+		// attributes as needed)
+		for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
+		{
+			var col = columns[i];
+			var asSorting = col.asSorting;
+			var sTitle = col.sTitle.replace( /<.*?>/g, "" );
+			var th = col.nTh;
+	
+			// IE7 is throwing an error when setting these properties with jQuery's
+			// attr() and removeAttr() methods...
+			th.removeAttribute('aria-sort');
+	
+			/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */
+			if ( col.bSortable ) {
+				if ( aSort.length > 0 && aSort[0].col == i ) {
+					th.setAttribute('aria-sort', aSort[0].dir=="asc" ? "ascending" : "descending" );
+					nextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];
+				}
+				else {
+					nextSort = asSorting[0];
+				}
+	
+				label = sTitle + ( nextSort === "asc" ?
+					oAria.sSortAscending :
+					oAria.sSortDescending
+				);
+			}
+			else {
+				label = sTitle;
+			}
+	
+			th.setAttribute('aria-label', label);
+		}
+	}
+	
+	
+	/**
+	 * Function to run on user sort request
+	 *  @param {object} settings dataTables settings object
+	 *  @param {node} attachTo node to attach the handler to
+	 *  @param {int} colIdx column sorting index
+	 *  @param {boolean} [append=false] Append the requested sort to the existing
+	 *    sort if true (i.e. multi-column sort)
+	 *  @param {function} [callback] callback function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSortListener ( settings, colIdx, append, callback )
+	{
+		var col = settings.aoColumns[ colIdx ];
+		var sorting = settings.aaSorting;
+		var asSorting = col.asSorting;
+		var nextSortIdx;
+		var next = function ( a, overflow ) {
+			var idx = a._idx;
+			if ( idx === undefined ) {
+				idx = $.inArray( a[1], asSorting );
+			}
+	
+			return idx+1 < asSorting.length ?
+				idx+1 :
+				overflow ?
+					null :
+					0;
+		};
+	
+		// Convert to 2D array if needed
+		if ( typeof sorting[0] === 'number' ) {
+			sorting = settings.aaSorting = [ sorting ];
+		}
+	
+		// If appending the sort then we are multi-column sorting
+		if ( append && settings.oFeatures.bSortMulti ) {
+			// Are we already doing some kind of sort on this column?
+			var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );
+	
+			if ( sortIdx !== -1 ) {
+				// Yes, modify the sort
+				nextSortIdx = next( sorting[sortIdx], true );
+	
+				if ( nextSortIdx === null && sorting.length === 1 ) {
+					nextSortIdx = 0; // can't remove sorting completely
+				}
+	
+				if ( nextSortIdx === null ) {
+					sorting.splice( sortIdx, 1 );
+				}
+				else {
+					sorting[sortIdx][1] = asSorting[ nextSortIdx ];
+					sorting[sortIdx]._idx = nextSortIdx;
+				}
+			}
+			else {
+				// No sort on this column yet
+				sorting.push( [ colIdx, asSorting[0], 0 ] );
+				sorting[sorting.length-1]._idx = 0;
+			}
+		}
+		else if ( sorting.length && sorting[0][0] == colIdx ) {
+			// Single column - already sorting on this column, modify the sort
+			nextSortIdx = next( sorting[0] );
+	
+			sorting.length = 1;
+			sorting[0][1] = asSorting[ nextSortIdx ];
+			sorting[0]._idx = nextSortIdx;
+		}
+		else {
+			// Single column - sort only on this column
+			sorting.length = 0;
+			sorting.push( [ colIdx, asSorting[0] ] );
+			sorting[0]._idx = 0;
+		}
+	
+		// Run the sort by calling a full redraw
+		_fnReDraw( settings );
+	
+		// callback used for async user interaction
+		if ( typeof callback == 'function' ) {
+			callback( settings );
+		}
+	}
+	
+	
+	/**
+	 * Attach a sort handler (click) to a node
+	 *  @param {object} settings dataTables settings object
+	 *  @param {node} attachTo node to attach the handler to
+	 *  @param {int} colIdx column sorting index
+	 *  @param {function} [callback] callback function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSortAttachListener ( settings, attachTo, colIdx, callback )
+	{
+		var col = settings.aoColumns[ colIdx ];
+	
+		_fnBindAction( attachTo, {}, function (e) {
+			/* If the column is not sortable - don't to anything */
+			if ( col.bSortable === false ) {
+				return;
+			}
+	
+			// If processing is enabled use a timeout to allow the processing
+			// display to be shown - otherwise to it synchronously
+			if ( settings.oFeatures.bProcessing ) {
+				_fnProcessingDisplay( settings, true );
+	
+				setTimeout( function() {
+					_fnSortListener( settings, colIdx, e.shiftKey, callback );
+	
+					// In server-side processing, the draw callback will remove the
+					// processing display
+					if ( _fnDataSource( settings ) !== 'ssp' ) {
+						_fnProcessingDisplay( settings, false );
+					}
+				}, 0 );
+			}
+			else {
+				_fnSortListener( settings, colIdx, e.shiftKey, callback );
+			}
+		} );
+	}
+	
+	
+	/**
+	 * Set the sorting classes on table's body, Note: it is safe to call this function
+	 * when bSort and bSortClasses are false
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSortingClasses( settings )
+	{
+		var oldSort = settings.aLastSort;
+		var sortClass = settings.oClasses.sSortColumn;
+		var sort = _fnSortFlatten( settings );
+		var features = settings.oFeatures;
+		var i, ien, colIdx;
+	
+		if ( features.bSort && features.bSortClasses ) {
+			// Remove old sorting classes
+			for ( i=0, ien=oldSort.length ; i<ien ; i++ ) {
+				colIdx = oldSort[i].src;
+	
+				// Remove column sorting
+				$( _pluck( settings.aoData, 'anCells', colIdx ) )
+					.removeClass( sortClass + (i<2 ? i+1 : 3) );
+			}
+	
+			// Add new column sorting
+			for ( i=0, ien=sort.length ; i<ien ; i++ ) {
+				colIdx = sort[i].src;
+	
+				$( _pluck( settings.aoData, 'anCells', colIdx ) )
+					.addClass( sortClass + (i<2 ? i+1 : 3) );
+			}
+		}
+	
+		settings.aLastSort = sort;
+	}
+	
+	
+	// Get the data to sort a column, be it from cache, fresh (populating the
+	// cache), or from a sort formatter
+	function _fnSortData( settings, idx )
+	{
+		// Custom sorting function - provided by the sort data type
+		var column = settings.aoColumns[ idx ];
+		var customSort = DataTable.ext.order[ column.sSortDataType ];
+		var customData;
+	
+		if ( customSort ) {
+			customData = customSort.call( settings.oInstance, settings, idx,
+				_fnColumnIndexToVisible( settings, idx )
+			);
+		}
+	
+		// Use / populate cache
+		var row, cellData;
+		var formatter = DataTable.ext.type.order[ column.sType+"-pre" ];
+	
+		for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+			row = settings.aoData[i];
+	
+			if ( ! row._aSortData ) {
+				row._aSortData = [];
+			}
+	
+			if ( ! row._aSortData[idx] || customSort ) {
+				cellData = customSort ?
+					customData[i] : // If there was a custom sort function, use data from there
+					_fnGetCellData( settings, i, idx, 'sort' );
+	
+				row._aSortData[ idx ] = formatter ?
+					formatter( cellData ) :
+					cellData;
+			}
+		}
+	}
+	
+	
+	
+	/**
+	 * Save the state of a table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSaveState ( settings )
+	{
+		if ( !settings.oFeatures.bStateSave || settings.bDestroying )
+		{
+			return;
+		}
+	
+		/* Store the interesting variables */
+		var state = {
+			time:    +new Date(),
+			start:   settings._iDisplayStart,
+			length:  settings._iDisplayLength,
+			order:   $.extend( true, [], settings.aaSorting ),
+			search:  _fnSearchToCamel( settings.oPreviousSearch ),
+			columns: $.map( settings.aoColumns, function ( col, i ) {
+				return {
+					visible: col.bVisible,
+					search: _fnSearchToCamel( settings.aoPreSearchCols[i] )
+				};
+			} )
+		};
+	
+		_fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] );
+	
+		settings.oSavedState = state;
+		settings.fnStateSaveCallback.call( settings.oInstance, settings, state );
+	}
+	
+	
+	/**
+	 * Attempt to load a saved table state
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} oInit DataTables init object so we can override settings
+	 *  @param {function} callback Callback to execute when the state has been loaded
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnLoadState ( settings, oInit, callback )
+	{
+		var i, ien;
+		var columns = settings.aoColumns;
+		var loaded = function ( s ) {
+			if ( ! s || ! s.time ) {
+				callback();
+				return;
+			}
+	
+			// Allow custom and plug-in manipulation functions to alter the saved data set and
+			// cancelling of loading by returning false
+			var abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, s] );
+			if ( $.inArray( false, abStateLoad ) !== -1 ) {
+				callback();
+				return;
+			}
+	
+			// Reject old data
+			var duration = settings.iStateDuration;
+			if ( duration > 0 && s.time < +new Date() - (duration*1000) ) {
+				callback();
+				return;
+			}
+	
+			// Number of columns have changed - all bets are off, no restore of settings
+			if ( s.columns && columns.length !== s.columns.length ) {
+				callback();
+				return;
+			}
+	
+			// Store the saved state so it might be accessed at any time
+			settings.oLoadedState = $.extend( true, {}, s );
+	
+			// Restore key features - todo - for 1.11 this needs to be done by
+			// subscribed events
+			if ( s.start !== undefined ) {
+				settings._iDisplayStart    = s.start;
+				settings.iInitDisplayStart = s.start;
+			}
+			if ( s.length !== undefined ) {
+				settings._iDisplayLength   = s.length;
+			}
+	
+			// Order
+			if ( s.order !== undefined ) {
+				settings.aaSorting = [];
+				$.each( s.order, function ( i, col ) {
+					settings.aaSorting.push( col[0] >= columns.length ?
+						[ 0, col[1] ] :
+						col
+					);
+				} );
+			}
+	
+			// Search
+			if ( s.search !== undefined ) {
+				$.extend( settings.oPreviousSearch, _fnSearchToHung( s.search ) );
+			}
+	
+			// Columns
+			//
+			if ( s.columns ) {
+				for ( i=0, ien=s.columns.length ; i<ien ; i++ ) {
+					var col = s.columns[i];
+	
+					// Visibility
+					if ( col.visible !== undefined ) {
+						columns[i].bVisible = col.visible;
+					}
+	
+					// Search
+					if ( col.search !== undefined ) {
+						$.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) );
+					}
+				}
+			}
+	
+			_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, s] );
+			callback();
+		};
+	
+		if ( ! settings.oFeatures.bStateSave ) {
+			callback();
+			return;
+		}
+	
+		var state = settings.fnStateLoadCallback.call( settings.oInstance, settings, loaded );
+	
+		if ( state !== undefined ) {
+			loaded( state );
+		}
+		// otherwise, wait for the loaded callback to be executed
+	}
+	
+	
+	/**
+	 * Return the settings object for a particular table
+	 *  @param {node} table table we are using as a dataTable
+	 *  @returns {object} Settings object - or null if not found
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSettingsFromNode ( table )
+	{
+		var settings = DataTable.settings;
+		var idx = $.inArray( table, _pluck( settings, 'nTable' ) );
+	
+		return idx !== -1 ?
+			settings[ idx ] :
+			null;
+	}
+	
+	
+	/**
+	 * Log an error message
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} level log error messages, or display them to the user
+	 *  @param {string} msg error message
+	 *  @param {int} tn Technical note id to get more information about the error.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnLog( settings, level, msg, tn )
+	{
+		msg = 'DataTables warning: '+
+			(settings ? 'table id='+settings.sTableId+' - ' : '')+msg;
+	
+		if ( tn ) {
+			msg += '. For more information about this error, please see '+
+			'http://datatables.net/tn/'+tn;
+		}
+	
+		if ( ! level  ) {
+			// Backwards compatibility pre 1.10
+			var ext = DataTable.ext;
+			var type = ext.sErrMode || ext.errMode;
+	
+			if ( settings ) {
+				_fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] );
+			}
+	
+			if ( type == 'alert' ) {
+				alert( msg );
+			}
+			else if ( type == 'throw' ) {
+				throw new Error(msg);
+			}
+			else if ( typeof type == 'function' ) {
+				type( settings, tn, msg );
+			}
+		}
+		else if ( window.console && console.log ) {
+			console.log( msg );
+		}
+	}
+	
+	
+	/**
+	 * See if a property is defined on one object, if so assign it to the other object
+	 *  @param {object} ret target object
+	 *  @param {object} src source object
+	 *  @param {string} name property
+	 *  @param {string} [mappedName] name to map too - optional, name used if not given
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnMap( ret, src, name, mappedName )
+	{
+		if ( $.isArray( name ) ) {
+			$.each( name, function (i, val) {
+				if ( $.isArray( val ) ) {
+					_fnMap( ret, src, val[0], val[1] );
+				}
+				else {
+					_fnMap( ret, src, val );
+				}
+			} );
+	
+			return;
+		}
+	
+		if ( mappedName === undefined ) {
+			mappedName = name;
+		}
+	
+		if ( src[name] !== undefined ) {
+			ret[mappedName] = src[name];
+		}
+	}
+	
+	
+	/**
+	 * Extend objects - very similar to jQuery.extend, but deep copy objects, and
+	 * shallow copy arrays. The reason we need to do this, is that we don't want to
+	 * deep copy array init values (such as aaSorting) since the dev wouldn't be
+	 * able to override them, but we do want to deep copy arrays.
+	 *  @param {object} out Object to extend
+	 *  @param {object} extender Object from which the properties will be applied to
+	 *      out
+	 *  @param {boolean} breakRefs If true, then arrays will be sliced to take an
+	 *      independent copy with the exception of the `data` or `aaData` parameters
+	 *      if they are present. This is so you can pass in a collection to
+	 *      DataTables and have that used as your data source without breaking the
+	 *      references
+	 *  @returns {object} out Reference, just for convenience - out === the return.
+	 *  @memberof DataTable#oApi
+	 *  @todo This doesn't take account of arrays inside the deep copied objects.
+	 */
+	function _fnExtend( out, extender, breakRefs )
+	{
+		var val;
+	
+		for ( var prop in extender ) {
+			if ( extender.hasOwnProperty(prop) ) {
+				val = extender[prop];
+	
+				if ( $.isPlainObject( val ) ) {
+					if ( ! $.isPlainObject( out[prop] ) ) {
+						out[prop] = {};
+					}
+					$.extend( true, out[prop], val );
+				}
+				else if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) {
+					out[prop] = val.slice();
+				}
+				else {
+					out[prop] = val;
+				}
+			}
+		}
+	
+		return out;
+	}
+	
+	
+	/**
+	 * Bind an event handers to allow a click or return key to activate the callback.
+	 * This is good for accessibility since a return on the keyboard will have the
+	 * same effect as a click, if the element has focus.
+	 *  @param {element} n Element to bind the action to
+	 *  @param {object} oData Data object to pass to the triggered function
+	 *  @param {function} fn Callback function for when the event is triggered
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnBindAction( n, oData, fn )
+	{
+		$(n)
+			.on( 'click.DT', oData, function (e) {
+					$(n).blur(); // Remove focus outline for mouse users
+					fn(e);
+				} )
+			.on( 'keypress.DT', oData, function (e){
+					if ( e.which === 13 ) {
+						e.preventDefault();
+						fn(e);
+					}
+				} )
+			.on( 'selectstart.DT', function () {
+					/* Take the brutal approach to cancelling text selection */
+					return false;
+				} );
+	}
+	
+	
+	/**
+	 * Register a callback function. Easily allows a callback function to be added to
+	 * an array store of callback functions that can then all be called together.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {string} sStore Name of the array storage for the callbacks in oSettings
+	 *  @param {function} fn Function to be called back
+	 *  @param {string} sName Identifying name for the callback (i.e. a label)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCallbackReg( oSettings, sStore, fn, sName )
+	{
+		if ( fn )
+		{
+			oSettings[sStore].push( {
+				"fn": fn,
+				"sName": sName
+			} );
+		}
+	}
+	
+	
+	/**
+	 * Fire callback functions and trigger events. Note that the loop over the
+	 * callback array store is done backwards! Further note that you do not want to
+	 * fire off triggers in time sensitive applications (for example cell creation)
+	 * as its slow.
+	 *  @param {object} settings dataTables settings object
+	 *  @param {string} callbackArr Name of the array storage for the callbacks in
+	 *      oSettings
+	 *  @param {string} eventName Name of the jQuery custom event to trigger. If
+	 *      null no trigger is fired
+	 *  @param {array} args Array of arguments to pass to the callback function /
+	 *      trigger
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCallbackFire( settings, callbackArr, eventName, args )
+	{
+		var ret = [];
+	
+		if ( callbackArr ) {
+			ret = $.map( settings[callbackArr].slice().reverse(), function (val, i) {
+				return val.fn.apply( settings.oInstance, args );
+			} );
+		}
+	
+		if ( eventName !== null ) {
+			var e = $.Event( eventName+'.dt' );
+	
+			$(settings.nTable).trigger( e, args );
+	
+			ret.push( e.result );
+		}
+	
+		return ret;
+	}
+	
+	
+	function _fnLengthOverflow ( settings )
+	{
+		var
+			start = settings._iDisplayStart,
+			end = settings.fnDisplayEnd(),
+			len = settings._iDisplayLength;
+	
+		/* If we have space to show extra rows (backing up from the end point - then do so */
+		if ( start >= end )
+		{
+			start = end - len;
+		}
+	
+		// Keep the start record on the current page
+		start -= (start % len);
+	
+		if ( len === -1 || start < 0 )
+		{
+			start = 0;
+		}
+	
+		settings._iDisplayStart = start;
+	}
+	
+	
+	function _fnRenderer( settings, type )
+	{
+		var renderer = settings.renderer;
+		var host = DataTable.ext.renderer[type];
+	
+		if ( $.isPlainObject( renderer ) && renderer[type] ) {
+			// Specific renderer for this type. If available use it, otherwise use
+			// the default.
+			return host[renderer[type]] || host._;
+		}
+		else if ( typeof renderer === 'string' ) {
+			// Common renderer - if there is one available for this type use it,
+			// otherwise use the default
+			return host[renderer] || host._;
+		}
+	
+		// Use the default
+		return host._;
+	}
+	
+	
+	/**
+	 * Detect the data source being used for the table. Used to simplify the code
+	 * a little (ajax) and to make it compress a little smaller.
+	 *
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {string} Data source
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDataSource ( settings )
+	{
+		if ( settings.oFeatures.bServerSide ) {
+			return 'ssp';
+		}
+		else if ( settings.ajax || settings.sAjaxSource ) {
+			return 'ajax';
+		}
+		return 'dom';
+	}
+	
+
+	
+	
+	/**
+	 * Computed structure of the DataTables API, defined by the options passed to
+	 * `DataTable.Api.register()` when building the API.
+	 *
+	 * The structure is built in order to speed creation and extension of the Api
+	 * objects since the extensions are effectively pre-parsed.
+	 *
+	 * The array is an array of objects with the following structure, where this
+	 * base array represents the Api prototype base:
+	 *
+	 *     [
+	 *       {
+	 *         name:      'data'                -- string   - Property name
+	 *         val:       function () {},       -- function - Api method (or undefined if just an object
+	 *         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result
+	 *         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property
+	 *       },
+	 *       {
+	 *         name:     'row'
+	 *         val:       {},
+	 *         methodExt: [ ... ],
+	 *         propExt:   [
+	 *           {
+	 *             name:      'data'
+	 *             val:       function () {},
+	 *             methodExt: [ ... ],
+	 *             propExt:   [ ... ]
+	 *           },
+	 *           ...
+	 *         ]
+	 *       }
+	 *     ]
+	 *
+	 * @type {Array}
+	 * @ignore
+	 */
+	var __apiStruct = [];
+	
+	
+	/**
+	 * `Array.prototype` reference.
+	 *
+	 * @type object
+	 * @ignore
+	 */
+	var __arrayProto = Array.prototype;
+	
+	
+	/**
+	 * Abstraction for `context` parameter of the `Api` constructor to allow it to
+	 * take several different forms for ease of use.
+	 *
+	 * Each of the input parameter types will be converted to a DataTables settings
+	 * object where possible.
+	 *
+	 * @param  {string|node|jQuery|object} mixed DataTable identifier. Can be one
+	 *   of:
+	 *
+	 *   * `string` - jQuery selector. Any DataTables' matching the given selector
+	 *     with be found and used.
+	 *   * `node` - `TABLE` node which has already been formed into a DataTable.
+	 *   * `jQuery` - A jQuery object of `TABLE` nodes.
+	 *   * `object` - DataTables settings object
+	 *   * `DataTables.Api` - API instance
+	 * @return {array|null} Matching DataTables settings objects. `null` or
+	 *   `undefined` is returned if no matching DataTable is found.
+	 * @ignore
+	 */
+	var _toSettings = function ( mixed )
+	{
+		var idx, jq;
+		var settings = DataTable.settings;
+		var tables = $.map( settings, function (el, i) {
+			return el.nTable;
+		} );
+	
+		if ( ! mixed ) {
+			return [];
+		}
+		else if ( mixed.nTable && mixed.oApi ) {
+			// DataTables settings object
+			return [ mixed ];
+		}
+		else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {
+			// Table node
+			idx = $.inArray( mixed, tables );
+			return idx !== -1 ? [ settings[idx] ] : null;
+		}
+		else if ( mixed && typeof mixed.settings === 'function' ) {
+			return mixed.settings().toArray();
+		}
+		else if ( typeof mixed === 'string' ) {
+			// jQuery selector
+			jq = $(mixed);
+		}
+		else if ( mixed instanceof $ ) {
+			// jQuery object (also DataTables instance)
+			jq = mixed;
+		}
+	
+		if ( jq ) {
+			return jq.map( function(i) {
+				idx = $.inArray( this, tables );
+				return idx !== -1 ? settings[idx] : null;
+			} ).toArray();
+		}
+	};
+	
+	
+	/**
+	 * DataTables API class - used to control and interface with  one or more
+	 * DataTables enhanced tables.
+	 *
+	 * The API class is heavily based on jQuery, presenting a chainable interface
+	 * that you can use to interact with tables. Each instance of the API class has
+	 * a "context" - i.e. the tables that it will operate on. This could be a single
+	 * table, all tables on a page or a sub-set thereof.
+	 *
+	 * Additionally the API is designed to allow you to easily work with the data in
+	 * the tables, retrieving and manipulating it as required. This is done by
+	 * presenting the API class as an array like interface. The contents of the
+	 * array depend upon the actions requested by each method (for example
+	 * `rows().nodes()` will return an array of nodes, while `rows().data()` will
+	 * return an array of objects or arrays depending upon your table's
+	 * configuration). The API object has a number of array like methods (`push`,
+	 * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,
+	 * `unique` etc) to assist your working with the data held in a table.
+	 *
+	 * Most methods (those which return an Api instance) are chainable, which means
+	 * the return from a method call also has all of the methods available that the
+	 * top level object had. For example, these two calls are equivalent:
+	 *
+	 *     // Not chained
+	 *     api.row.add( {...} );
+	 *     api.draw();
+	 *
+	 *     // Chained
+	 *     api.row.add( {...} ).draw();
+	 *
+	 * @class DataTable.Api
+	 * @param {array|object|string|jQuery} context DataTable identifier. This is
+	 *   used to define which DataTables enhanced tables this API will operate on.
+	 *   Can be one of:
+	 *
+	 *   * `string` - jQuery selector. Any DataTables' matching the given selector
+	 *     with be found and used.
+	 *   * `node` - `TABLE` node which has already been formed into a DataTable.
+	 *   * `jQuery` - A jQuery object of `TABLE` nodes.
+	 *   * `object` - DataTables settings object
+	 * @param {array} [data] Data to initialise the Api instance with.
+	 *
+	 * @example
+	 *   // Direct initialisation during DataTables construction
+	 *   var api = $('#example').DataTable();
+	 *
+	 * @example
+	 *   // Initialisation using a DataTables jQuery object
+	 *   var api = $('#example').dataTable().api();
+	 *
+	 * @example
+	 *   // Initialisation as a constructor
+	 *   var api = new $.fn.DataTable.Api( 'table.dataTable' );
+	 */
+	_Api = function ( context, data )
+	{
+		if ( ! (this instanceof _Api) ) {
+			return new _Api( context, data );
+		}
+	
+		var settings = [];
+		var ctxSettings = function ( o ) {
+			var a = _toSettings( o );
+			if ( a ) {
+				settings.push.apply( settings, a );
+			}
+		};
+	
+		if ( $.isArray( context ) ) {
+			for ( var i=0, ien=context.length ; i<ien ; i++ ) {
+				ctxSettings( context[i] );
+			}
+		}
+		else {
+			ctxSettings( context );
+		}
+	
+		// Remove duplicates
+		this.context = _unique( settings );
+	
+		// Initial data
+		if ( data ) {
+			$.merge( this, data );
+		}
+	
+		// selector
+		this.selector = {
+			rows: null,
+			cols: null,
+			opts: null
+		};
+	
+		_Api.extend( this, this, __apiStruct );
+	};
+	
+	DataTable.Api = _Api;
+	
+	// Don't destroy the existing prototype, just extend it. Required for jQuery 2's
+	// isPlainObject.
+	$.extend( _Api.prototype, {
+		any: function ()
+		{
+			return this.count() !== 0;
+		},
+	
+	
+		concat:  __arrayProto.concat,
+	
+	
+		context: [], // array of table settings objects
+	
+	
+		count: function ()
+		{
+			return this.flatten().length;
+		},
+	
+	
+		each: function ( fn )
+		{
+			for ( var i=0, ien=this.length ; i<ien; i++ ) {
+				fn.call( this, this[i], i, this );
+			}
+	
+			return this;
+		},
+	
+	
+		eq: function ( idx )
+		{
+			var ctx = this.context;
+	
+			return ctx.length > idx ?
+				new _Api( ctx[idx], this[idx] ) :
+				null;
+		},
+	
+	
+		filter: function ( fn )
+		{
+			var a = [];
+	
+			if ( __arrayProto.filter ) {
+				a = __arrayProto.filter.call( this, fn, this );
+			}
+			else {
+				// Compatibility for browsers without EMCA-252-5 (JS 1.6)
+				for ( var i=0, ien=this.length ; i<ien ; i++ ) {
+					if ( fn.call( this, this[i], i, this ) ) {
+						a.push( this[i] );
+					}
+				}
+			}
+	
+			return new _Api( this.context, a );
+		},
+	
+	
+		flatten: function ()
+		{
+			var a = [];
+			return new _Api( this.context, a.concat.apply( a, this.toArray() ) );
+		},
+	
+	
+		join:    __arrayProto.join,
+	
+	
+		indexOf: __arrayProto.indexOf || function (obj, start)
+		{
+			for ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) {
+				if ( this[i] === obj ) {
+					return i;
+				}
+			}
+			return -1;
+		},
+	
+		iterator: function ( flatten, type, fn, alwaysNew ) {
+			var
+				a = [], ret,
+				i, ien, j, jen,
+				context = this.context,
+				rows, items, item,
+				selector = this.selector;
+	
+			// Argument shifting
+			if ( typeof flatten === 'string' ) {
+				alwaysNew = fn;
+				fn = type;
+				type = flatten;
+				flatten = false;
+			}
+	
+			for ( i=0, ien=context.length ; i<ien ; i++ ) {
+				var apiInst = new _Api( context[i] );
+	
+				if ( type === 'table' ) {
+					ret = fn.call( apiInst, context[i], i );
+	
+					if ( ret !== undefined ) {
+						a.push( ret );
+					}
+				}
+				else if ( type === 'columns' || type === 'rows' ) {
+					// this has same length as context - one entry for each table
+					ret = fn.call( apiInst, context[i], this[i], i );
+	
+					if ( ret !== undefined ) {
+						a.push( ret );
+					}
+				}
+				else if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {
+					// columns and rows share the same structure.
+					// 'this' is an array of column indexes for each context
+					items = this[i];
+	
+					if ( type === 'column-rows' ) {
+						rows = _selector_row_indexes( context[i], selector.opts );
+					}
+	
+					for ( j=0, jen=items.length ; j<jen ; j++ ) {
+						item = items[j];
+	
+						if ( type === 'cell' ) {
+							ret = fn.call( apiInst, context[i], item.row, item.column, i, j );
+						}
+						else {
+							ret = fn.call( apiInst, context[i], item, i, j, rows );
+						}
+	
+						if ( ret !== undefined ) {
+							a.push( ret );
+						}
+					}
+				}
+			}
+	
+			if ( a.length || alwaysNew ) {
+				var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );
+				var apiSelector = api.selector;
+				apiSelector.rows = selector.rows;
+				apiSelector.cols = selector.cols;
+				apiSelector.opts = selector.opts;
+				return api;
+			}
+			return this;
+		},
+	
+	
+		lastIndexOf: __arrayProto.lastIndexOf || function (obj, start)
+		{
+			// Bit cheeky...
+			return this.indexOf.apply( this.toArray.reverse(), arguments );
+		},
+	
+	
+		length:  0,
+	
+	
+		map: function ( fn )
+		{
+			var a = [];
+	
+			if ( __arrayProto.map ) {
+				a = __arrayProto.map.call( this, fn, this );
+			}
+			else {
+				// Compatibility for browsers without EMCA-252-5 (JS 1.6)
+				for ( var i=0, ien=this.length ; i<ien ; i++ ) {
+					a.push( fn.call( this, this[i], i ) );
+				}
+			}
+	
+			return new _Api( this.context, a );
+		},
+	
+	
+		pluck: function ( prop )
+		{
+			return this.map( function ( el ) {
+				return el[ prop ];
+			} );
+		},
+	
+		pop:     __arrayProto.pop,
+	
+	
+		push:    __arrayProto.push,
+	
+	
+		// Does not return an API instance
+		reduce: __arrayProto.reduce || function ( fn, init )
+		{
+			return _fnReduce( this, fn, init, 0, this.length, 1 );
+		},
+	
+	
+		reduceRight: __arrayProto.reduceRight || function ( fn, init )
+		{
+			return _fnReduce( this, fn, init, this.length-1, -1, -1 );
+		},
+	
+	
+		reverse: __arrayProto.reverse,
+	
+	
+		// Object with rows, columns and opts
+		selector: null,
+	
+	
+		shift:   __arrayProto.shift,
+	
+	
+		slice: function () {
+			return new _Api( this.context, this );
+		},
+	
+	
+		sort:    __arrayProto.sort, // ? name - order?
+	
+	
+		splice:  __arrayProto.splice,
+	
+	
+		toArray: function ()
+		{
+			return __arrayProto.slice.call( this );
+		},
+	
+	
+		to$: function ()
+		{
+			return $( this );
+		},
+	
+	
+		toJQuery: function ()
+		{
+			return $( this );
+		},
+	
+	
+		unique: function ()
+		{
+			return new _Api( this.context, _unique(this) );
+		},
+	
+	
+		unshift: __arrayProto.unshift
+	} );
+	
+	
+	_Api.extend = function ( scope, obj, ext )
+	{
+		// Only extend API instances and static properties of the API
+		if ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {
+			return;
+		}
+	
+		var
+			i, ien,
+			struct,
+			methodScoping = function ( scope, fn, struc ) {
+				return function () {
+					var ret = fn.apply( scope, arguments );
+	
+					// Method extension
+					_Api.extend( ret, ret, struc.methodExt );
+					return ret;
+				};
+			};
+	
+		for ( i=0, ien=ext.length ; i<ien ; i++ ) {
+			struct = ext[i];
+	
+			// Value
+			obj[ struct.name ] = struct.type === 'function' ?
+				methodScoping( scope, struct.val, struct ) :
+				struct.type === 'object' ?
+					{} :
+					struct.val;
+	
+			obj[ struct.name ].__dt_wrapper = true;
+	
+			// Property extension
+			_Api.extend( scope, obj[ struct.name ], struct.propExt );
+		}
+	};
+	
+	
+	// @todo - Is there need for an augment function?
+	// _Api.augment = function ( inst, name )
+	// {
+	// 	// Find src object in the structure from the name
+	// 	var parts = name.split('.');
+	
+	// 	_Api.extend( inst, obj );
+	// };
+	
+	
+	//     [
+	//       {
+	//         name:      'data'                -- string   - Property name
+	//         val:       function () {},       -- function - Api method (or undefined if just an object
+	//         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result
+	//         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property
+	//       },
+	//       {
+	//         name:     'row'
+	//         val:       {},
+	//         methodExt: [ ... ],
+	//         propExt:   [
+	//           {
+	//             name:      'data'
+	//             val:       function () {},
+	//             methodExt: [ ... ],
+	//             propExt:   [ ... ]
+	//           },
+	//           ...
+	//         ]
+	//       }
+	//     ]
+	
+	_Api.register = _api_register = function ( name, val )
+	{
+		if ( $.isArray( name ) ) {
+			for ( var j=0, jen=name.length ; j<jen ; j++ ) {
+				_Api.register( name[j], val );
+			}
+			return;
+		}
+	
+		var
+			i, ien,
+			heir = name.split('.'),
+			struct = __apiStruct,
+			key, method;
+	
+		var find = function ( src, name ) {
+			for ( var i=0, ien=src.length ; i<ien ; i++ ) {
+				if ( src[i].name === name ) {
+					return src[i];
+				}
+			}
+			return null;
+		};
+	
+		for ( i=0, ien=heir.length ; i<ien ; i++ ) {
+			method = heir[i].indexOf('()') !== -1;
+			key = method ?
+				heir[i].replace('()', '') :
+				heir[i];
+	
+			var src = find( struct, key );
+			if ( ! src ) {
+				src = {
+					name:      key,
+					val:       {},
+					methodExt: [],
+					propExt:   [],
+					type:      'object'
+				};
+				struct.push( src );
+			}
+	
+			if ( i === ien-1 ) {
+				src.val = val;
+				src.type = typeof val === 'function' ?
+					'function' :
+					$.isPlainObject( val ) ?
+						'object' :
+						'other';
+			}
+			else {
+				struct = method ?
+					src.methodExt :
+					src.propExt;
+			}
+		}
+	};
+	
+	_Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {
+		_Api.register( pluralName, val );
+	
+		_Api.register( singularName, function () {
+			var ret = val.apply( this, arguments );
+	
+			if ( ret === this ) {
+				// Returned item is the API instance that was passed in, return it
+				return this;
+			}
+			else if ( ret instanceof _Api ) {
+				// New API instance returned, want the value from the first item
+				// in the returned array for the singular result.
+				return ret.length ?
+					$.isArray( ret[0] ) ?
+						new _Api( ret.context, ret[0] ) : // Array results are 'enhanced'
+						ret[0] :
+					undefined;
+			}
+	
+			// Non-API return - just fire it back
+			return ret;
+		} );
+	};
+	
+	
+	/**
+	 * Selector for HTML tables. Apply the given selector to the give array of
+	 * DataTables settings objects.
+	 *
+	 * @param {string|integer} [selector] jQuery selector string or integer
+	 * @param  {array} Array of DataTables settings objects to be filtered
+	 * @return {array}
+	 * @ignore
+	 */
+	var __table_selector = function ( selector, a )
+	{
+		// Integer is used to pick out a table by index
+		if ( typeof selector === 'number' ) {
+			return [ a[ selector ] ];
+		}
+	
+		// Perform a jQuery selector on the table nodes
+		var nodes = $.map( a, function (el, i) {
+			return el.nTable;
+		} );
+	
+		return $(nodes)
+			.filter( selector )
+			.map( function (i) {
+				// Need to translate back from the table node to the settings
+				var idx = $.inArray( this, nodes );
+				return a[ idx ];
+			} )
+			.toArray();
+	};
+	
+	
+	
+	/**
+	 * Context selector for the API's context (i.e. the tables the API instance
+	 * refers to.
+	 *
+	 * @name    DataTable.Api#tables
+	 * @param {string|integer} [selector] Selector to pick which tables the iterator
+	 *   should operate on. If not given, all tables in the current context are
+	 *   used. This can be given as a jQuery selector (for example `':gt(0)'`) to
+	 *   select multiple tables or as an integer to select a single table.
+	 * @returns {DataTable.Api} Returns a new API instance if a selector is given.
+	 */
+	_api_register( 'tables()', function ( selector ) {
+		// A new instance is created if there was a selector specified
+		return selector ?
+			new _Api( __table_selector( selector, this.context ) ) :
+			this;
+	} );
+	
+	
+	_api_register( 'table()', function ( selector ) {
+		var tables = this.tables( selector );
+		var ctx = tables.context;
+	
+		// Truncate to the first matched table
+		return ctx.length ?
+			new _Api( ctx[0] ) :
+			tables;
+	} );
+	
+	
+	_api_registerPlural( 'tables().nodes()', 'table().node()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTable;
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'tables().body()', 'table().body()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTBody;
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'tables().header()', 'table().header()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTHead;
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'tables().footer()', 'table().footer()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTFoot;
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'tables().containers()', 'table().container()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTableWrapper;
+		}, 1 );
+	} );
+	
+	
+	
+	/**
+	 * Redraw the tables in the current context.
+	 */
+	_api_register( 'draw()', function ( paging ) {
+		return this.iterator( 'table', function ( settings ) {
+			if ( paging === 'page' ) {
+				_fnDraw( settings );
+			}
+			else {
+				if ( typeof paging === 'string' ) {
+					paging = paging === 'full-hold' ?
+						false :
+						true;
+				}
+	
+				_fnReDraw( settings, paging===false );
+			}
+		} );
+	} );
+	
+	
+	
+	/**
+	 * Get the current page index.
+	 *
+	 * @return {integer} Current page index (zero based)
+	 *//**
+	 * Set the current page.
+	 *
+	 * Note that if you attempt to show a page which does not exist, DataTables will
+	 * not throw an error, but rather reset the paging.
+	 *
+	 * @param {integer|string} action The paging action to take. This can be one of:
+	 *  * `integer` - The page index to jump to
+	 *  * `string` - An action to take:
+	 *    * `first` - Jump to first page.
+	 *    * `next` - Jump to the next page
+	 *    * `previous` - Jump to previous page
+	 *    * `last` - Jump to the last page.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'page()', function ( action ) {
+		if ( action === undefined ) {
+			return this.page.info().page; // not an expensive call
+		}
+	
+		// else, have an action to take on all tables
+		return this.iterator( 'table', function ( settings ) {
+			_fnPageChange( settings, action );
+		} );
+	} );
+	
+	
+	/**
+	 * Paging information for the first table in the current context.
+	 *
+	 * If you require paging information for another table, use the `table()` method
+	 * with a suitable selector.
+	 *
+	 * @return {object} Object with the following properties set:
+	 *  * `page` - Current page index (zero based - i.e. the first page is `0`)
+	 *  * `pages` - Total number of pages
+	 *  * `start` - Display index for the first record shown on the current page
+	 *  * `end` - Display index for the last record shown on the current page
+	 *  * `length` - Display length (number of records). Note that generally `start
+	 *    + length = end`, but this is not always true, for example if there are
+	 *    only 2 records to show on the final page, with a length of 10.
+	 *  * `recordsTotal` - Full data set length
+	 *  * `recordsDisplay` - Data set length once the current filtering criterion
+	 *    are applied.
+	 */
+	_api_register( 'page.info()', function ( action ) {
+		if ( this.context.length === 0 ) {
+			return undefined;
+		}
+	
+		var
+			settings   = this.context[0],
+			start      = settings._iDisplayStart,
+			len        = settings.oFeatures.bPaginate ? settings._iDisplayLength : -1,
+			visRecords = settings.fnRecordsDisplay(),
+			all        = len === -1;
+	
+		return {
+			"page":           all ? 0 : Math.floor( start / len ),
+			"pages":          all ? 1 : Math.ceil( visRecords / len ),
+			"start":          start,
+			"end":            settings.fnDisplayEnd(),
+			"length":         len,
+			"recordsTotal":   settings.fnRecordsTotal(),
+			"recordsDisplay": visRecords,
+			"serverSide":     _fnDataSource( settings ) === 'ssp'
+		};
+	} );
+	
+	
+	/**
+	 * Get the current page length.
+	 *
+	 * @return {integer} Current page length. Note `-1` indicates that all records
+	 *   are to be shown.
+	 *//**
+	 * Set the current page length.
+	 *
+	 * @param {integer} Page length to set. Use `-1` to show all records.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'page.len()', function ( len ) {
+		// Note that we can't call this function 'length()' because `length`
+		// is a Javascript property of functions which defines how many arguments
+		// the function expects.
+		if ( len === undefined ) {
+			return this.context.length !== 0 ?
+				this.context[0]._iDisplayLength :
+				undefined;
+		}
+	
+		// else, set the page length
+		return this.iterator( 'table', function ( settings ) {
+			_fnLengthChange( settings, len );
+		} );
+	} );
+	
+	
+	
+	var __reload = function ( settings, holdPosition, callback ) {
+		// Use the draw event to trigger a callback
+		if ( callback ) {
+			var api = new _Api( settings );
+	
+			api.one( 'draw', function () {
+				callback( api.ajax.json() );
+			} );
+		}
+	
+		if ( _fnDataSource( settings ) == 'ssp' ) {
+			_fnReDraw( settings, holdPosition );
+		}
+		else {
+			_fnProcessingDisplay( settings, true );
+	
+			// Cancel an existing request
+			var xhr = settings.jqXHR;
+			if ( xhr && xhr.readyState !== 4 ) {
+				xhr.abort();
+			}
+	
+			// Trigger xhr
+			_fnBuildAjax( settings, [], function( json ) {
+				_fnClearTable( settings );
+	
+				var data = _fnAjaxDataSrc( settings, json );
+				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+					_fnAddData( settings, data[i] );
+				}
+	
+				_fnReDraw( settings, holdPosition );
+				_fnProcessingDisplay( settings, false );
+			} );
+		}
+	};
+	
+	
+	/**
+	 * Get the JSON response from the last Ajax request that DataTables made to the
+	 * server. Note that this returns the JSON from the first table in the current
+	 * context.
+	 *
+	 * @return {object} JSON received from the server.
+	 */
+	_api_register( 'ajax.json()', function () {
+		var ctx = this.context;
+	
+		if ( ctx.length > 0 ) {
+			return ctx[0].json;
+		}
+	
+		// else return undefined;
+	} );
+	
+	
+	/**
+	 * Get the data submitted in the last Ajax request
+	 */
+	_api_register( 'ajax.params()', function () {
+		var ctx = this.context;
+	
+		if ( ctx.length > 0 ) {
+			return ctx[0].oAjaxData;
+		}
+	
+		// else return undefined;
+	} );
+	
+	
+	/**
+	 * Reload tables from the Ajax data source. Note that this function will
+	 * automatically re-draw the table when the remote data has been loaded.
+	 *
+	 * @param {boolean} [reset=true] Reset (default) or hold the current paging
+	 *   position. A full re-sort and re-filter is performed when this method is
+	 *   called, which is why the pagination reset is the default action.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'ajax.reload()', function ( callback, resetPaging ) {
+		return this.iterator( 'table', function (settings) {
+			__reload( settings, resetPaging===false, callback );
+		} );
+	} );
+	
+	
+	/**
+	 * Get the current Ajax URL. Note that this returns the URL from the first
+	 * table in the current context.
+	 *
+	 * @return {string} Current Ajax source URL
+	 *//**
+	 * Set the Ajax URL. Note that this will set the URL for all tables in the
+	 * current context.
+	 *
+	 * @param {string} url URL to set.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'ajax.url()', function ( url ) {
+		var ctx = this.context;
+	
+		if ( url === undefined ) {
+			// get
+			if ( ctx.length === 0 ) {
+				return undefined;
+			}
+			ctx = ctx[0];
+	
+			return ctx.ajax ?
+				$.isPlainObject( ctx.ajax ) ?
+					ctx.ajax.url :
+					ctx.ajax :
+				ctx.sAjaxSource;
+		}
+	
+		// set
+		return this.iterator( 'table', function ( settings ) {
+			if ( $.isPlainObject( settings.ajax ) ) {
+				settings.ajax.url = url;
+			}
+			else {
+				settings.ajax = url;
+			}
+			// No need to consider sAjaxSource here since DataTables gives priority
+			// to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any
+			// value of `sAjaxSource` redundant.
+		} );
+	} );
+	
+	
+	/**
+	 * Load data from the newly set Ajax URL. Note that this method is only
+	 * available when `ajax.url()` is used to set a URL. Additionally, this method
+	 * has the same effect as calling `ajax.reload()` but is provided for
+	 * convenience when setting a new URL. Like `ajax.reload()` it will
+	 * automatically redraw the table once the remote data has been loaded.
+	 *
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {
+		// Same as a reload, but makes sense to present it for easy access after a
+		// url change
+		return this.iterator( 'table', function ( ctx ) {
+			__reload( ctx, resetPaging===false, callback );
+		} );
+	} );
+	
+	
+	
+	
+	var _selector_run = function ( type, selector, selectFn, settings, opts )
+	{
+		var
+			out = [], res,
+			a, i, ien, j, jen,
+			selectorType = typeof selector;
+	
+		// Can't just check for isArray here, as an API or jQuery instance might be
+		// given with their array like look
+		if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {
+			selector = [ selector ];
+		}
+	
+		for ( i=0, ien=selector.length ; i<ien ; i++ ) {
+			// Only split on simple strings - complex expressions will be jQuery selectors
+			a = selector[i] && selector[i].split && ! selector[i].match(/[\[\(:]/) ?
+				selector[i].split(',') :
+				[ selector[i] ];
+	
+			for ( j=0, jen=a.length ; j<jen ; j++ ) {
+				res = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] );
+	
+				if ( res && res.length ) {
+					out = out.concat( res );
+				}
+			}
+		}
+	
+		// selector extensions
+		var ext = _ext.selector[ type ];
+		if ( ext.length ) {
+			for ( i=0, ien=ext.length ; i<ien ; i++ ) {
+				out = ext[i]( settings, opts, out );
+			}
+		}
+	
+		return _unique( out );
+	};
+	
+	
+	var _selector_opts = function ( opts )
+	{
+		if ( ! opts ) {
+			opts = {};
+		}
+	
+		// Backwards compatibility for 1.9- which used the terminology filter rather
+		// than search
+		if ( opts.filter && opts.search === undefined ) {
+			opts.search = opts.filter;
+		}
+	
+		return $.extend( {
+			search: 'none',
+			order: 'current',
+			page: 'all'
+		}, opts );
+	};
+	
+	
+	var _selector_first = function ( inst )
+	{
+		// Reduce the API instance to the first item found
+		for ( var i=0, ien=inst.length ; i<ien ; i++ ) {
+			if ( inst[i].length > 0 ) {
+				// Assign the first element to the first item in the instance
+				// and truncate the instance and context
+				inst[0] = inst[i];
+				inst[0].length = 1;
+				inst.length = 1;
+				inst.context = [ inst.context[i] ];
+	
+				return inst;
+			}
+		}
+	
+		// Not found - return an empty instance
+		inst.length = 0;
+		return inst;
+	};
+	
+	
+	var _selector_row_indexes = function ( settings, opts )
+	{
+		var
+			i, ien, tmp, a=[],
+			displayFiltered = settings.aiDisplay,
+			displayMaster = settings.aiDisplayMaster;
+	
+		var
+			search = opts.search,  // none, applied, removed
+			order  = opts.order,   // applied, current, index (original - compatibility with 1.9)
+			page   = opts.page;    // all, current
+	
+		if ( _fnDataSource( settings ) == 'ssp' ) {
+			// In server-side processing mode, most options are irrelevant since
+			// rows not shown don't exist and the index order is the applied order
+			// Removed is a special case - for consistency just return an empty
+			// array
+			return search === 'removed' ?
+				[] :
+				_range( 0, displayMaster.length );
+		}
+		else if ( page == 'current' ) {
+			// Current page implies that order=current and fitler=applied, since it is
+			// fairly senseless otherwise, regardless of what order and search actually
+			// are
+			for ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) {
+				a.push( displayFiltered[i] );
+			}
+		}
+		else if ( order == 'current' || order == 'applied' ) {
+			if ( search == 'none') {
+				a = displayMaster.slice();
+			}
+			else if ( search == 'applied' ) {
+				a = displayFiltered.slice();
+			}
+			else if ( search == 'removed' ) {
+				// O(n+m) solution by creating a hash map
+				var displayFilteredMap = {};
+	
+				for ( var i=0, ien=displayFiltered.length ; i<ien ; i++ ) {
+					displayFilteredMap[displayFiltered[i]] = null;
+				}
+	
+				a = $.map( displayMaster, function (el) {
+					return ! displayFilteredMap.hasOwnProperty(el) ?
+						el :
+						null;
+				} );
+			}
+		}
+		else if ( order == 'index' || order == 'original' ) {
+			for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+				if ( search == 'none' ) {
+					a.push( i );
+				}
+				else { // applied | removed
+					tmp = $.inArray( i, displayFiltered );
+	
+					if ((tmp === -1 && search == 'removed') ||
+						(tmp >= 0   && search == 'applied') )
+					{
+						a.push( i );
+					}
+				}
+			}
+		}
+	
+		return a;
+	};
+	
+	
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Rows
+	 *
+	 * {}          - no selector - use all available rows
+	 * {integer}   - row aoData index
+	 * {node}      - TR node
+	 * {string}    - jQuery selector to apply to the TR elements
+	 * {array}     - jQuery array of nodes, or simply an array of TR nodes
+	 *
+	 */
+	var __row_selector = function ( settings, selector, opts )
+	{
+		var rows;
+		var run = function ( sel ) {
+			var selInt = _intVal( sel );
+			var i, ien;
+			var aoData = settings.aoData;
+	
+			// Short cut - selector is a number and no options provided (default is
+			// all records, so no need to check if the index is in there, since it
+			// must be - dev error if the index doesn't exist).
+			if ( selInt !== null && ! opts ) {
+				return [ selInt ];
+			}
+	
+			if ( ! rows ) {
+				rows = _selector_row_indexes( settings, opts );
+			}
+	
+			if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {
+				// Selector - integer
+				return [ selInt ];
+			}
+			else if ( sel === null || sel === undefined || sel === '' ) {
+				// Selector - none
+				return rows;
+			}
+	
+			// Selector - function
+			if ( typeof sel === 'function' ) {
+				return $.map( rows, function (idx) {
+					var row = aoData[ idx ];
+					return sel( idx, row._aData, row.nTr ) ? idx : null;
+				} );
+			}
+	
+			// Selector - node
+			if ( sel.nodeName ) {
+				var rowIdx = sel._DT_RowIndex;  // Property added by DT for fast lookup
+				var cellIdx = sel._DT_CellIndex;
+	
+				if ( rowIdx !== undefined ) {
+					// Make sure that the row is actually still present in the table
+					return aoData[ rowIdx ] && aoData[ rowIdx ].nTr === sel ?
+						[ rowIdx ] :
+						[];
+				}
+				else if ( cellIdx ) {
+					return aoData[ cellIdx.row ] && aoData[ cellIdx.row ].nTr === sel.parentNode ?
+						[ cellIdx.row ] :
+						[];
+				}
+				else {
+					var host = $(sel).closest('*[data-dt-row]');
+					return host.length ?
+						[ host.data('dt-row') ] :
+						[];
+				}
+			}
+	
+			// ID selector. Want to always be able to select rows by id, regardless
+			// of if the tr element has been created or not, so can't rely upon
+			// jQuery here - hence a custom implementation. This does not match
+			// Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything,
+			// but to select it using a CSS selector engine (like Sizzle or
+			// querySelect) it would need to need to be escaped for some characters.
+			// DataTables simplifies this for row selectors since you can select
+			// only a row. A # indicates an id any anything that follows is the id -
+			// unescaped.
+			if ( typeof sel === 'string' && sel.charAt(0) === '#' ) {
+				// get row index from id
+				var rowObj = settings.aIds[ sel.replace( /^#/, '' ) ];
+				if ( rowObj !== undefined ) {
+					return [ rowObj.idx ];
+				}
+	
+				// need to fall through to jQuery in case there is DOM id that
+				// matches
+			}
+			
+			// Get nodes in the order from the `rows` array with null values removed
+			var nodes = _removeEmpty(
+				_pluck_order( settings.aoData, rows, 'nTr' )
+			);
+	
+			// Selector - jQuery selector string, array of nodes or jQuery object/
+			// As jQuery's .filter() allows jQuery objects to be passed in filter,
+			// it also allows arrays, so this will cope with all three options
+			return $(nodes)
+				.filter( sel )
+				.map( function () {
+					return this._DT_RowIndex;
+				} )
+				.toArray();
+		};
+	
+		return _selector_run( 'row', selector, run, settings, opts );
+	};
+	
+	
+	_api_register( 'rows()', function ( selector, opts ) {
+		// argument shifting
+		if ( selector === undefined ) {
+			selector = '';
+		}
+		else if ( $.isPlainObject( selector ) ) {
+			opts = selector;
+			selector = '';
+		}
+	
+		opts = _selector_opts( opts );
+	
+		var inst = this.iterator( 'table', function ( settings ) {
+			return __row_selector( settings, selector, opts );
+		}, 1 );
+	
+		// Want argument shifting here and in __row_selector?
+		inst.selector.rows = selector;
+		inst.selector.opts = opts;
+	
+		return inst;
+	} );
+	
+	_api_register( 'rows().nodes()', function () {
+		return this.iterator( 'row', function ( settings, row ) {
+			return settings.aoData[ row ].nTr || undefined;
+		}, 1 );
+	} );
+	
+	_api_register( 'rows().data()', function () {
+		return this.iterator( true, 'rows', function ( settings, rows ) {
+			return _pluck_order( settings.aoData, rows, '_aData' );
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {
+		return this.iterator( 'row', function ( settings, row ) {
+			var r = settings.aoData[ row ];
+			return type === 'search' ? r._aFilterData : r._aSortData;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {
+		return this.iterator( 'row', function ( settings, row ) {
+			_fnInvalidate( settings, row, src );
+		} );
+	} );
+	
+	_api_registerPlural( 'rows().indexes()', 'row().index()', function () {
+		return this.iterator( 'row', function ( settings, row ) {
+			return row;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {
+		var a = [];
+		var context = this.context;
+	
+		// `iterator` will drop undefined values, but in this case we want them
+		for ( var i=0, ien=context.length ; i<ien ; i++ ) {
+			for ( var j=0, jen=this[i].length ; j<jen ; j++ ) {
+				var id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData );
+				a.push( (hash === true ? '#' : '' )+ id );
+			}
+		}
+	
+		return new _Api( context, a );
+	} );
+	
+	_api_registerPlural( 'rows().remove()', 'row().remove()', function () {
+		var that = this;
+	
+		this.iterator( 'row', function ( settings, row, thatIdx ) {
+			var data = settings.aoData;
+			var rowData = data[ row ];
+			var i, ien, j, jen;
+			var loopRow, loopCells;
+	
+			data.splice( row, 1 );
+	
+			// Update the cached indexes
+			for ( i=0, ien=data.length ; i<ien ; i++ ) {
+				loopRow = data[i];
+				loopCells = loopRow.anCells;
+	
+				// Rows
+				if ( loopRow.nTr !== null ) {
+					loopRow.nTr._DT_RowIndex = i;
+				}
+	
+				// Cells
+				if ( loopCells !== null ) {
+					for ( j=0, jen=loopCells.length ; j<jen ; j++ ) {
+						loopCells[j]._DT_CellIndex.row = i;
+					}
+				}
+			}
+	
+			// Delete from the display arrays
+			_fnDeleteIndex( settings.aiDisplayMaster, row );
+			_fnDeleteIndex( settings.aiDisplay, row );
+			_fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes
+	
+			// For server-side processing tables - subtract the deleted row from the count
+			if ( settings._iRecordsDisplay > 0 ) {
+				settings._iRecordsDisplay--;
+			}
+	
+			// Check for an 'overflow' they case for displaying the table
+			_fnLengthOverflow( settings );
+	
+			// Remove the row's ID reference if there is one
+			var id = settings.rowIdFn( rowData._aData );
+			if ( id !== undefined ) {
+				delete settings.aIds[ id ];
+			}
+		} );
+	
+		this.iterator( 'table', function ( settings ) {
+			for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+				settings.aoData[i].idx = i;
+			}
+		} );
+	
+		return this;
+	} );
+	
+	
+	_api_register( 'rows.add()', function ( rows ) {
+		var newRows = this.iterator( 'table', function ( settings ) {
+				var row, i, ien;
+				var out = [];
+	
+				for ( i=0, ien=rows.length ; i<ien ; i++ ) {
+					row = rows[i];
+	
+					if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
+						out.push( _fnAddTr( settings, row )[0] );
+					}
+					else {
+						out.push( _fnAddData( settings, row ) );
+					}
+				}
+	
+				return out;
+			}, 1 );
+	
+		// Return an Api.rows() extended instance, so rows().nodes() etc can be used
+		var modRows = this.rows( -1 );
+		modRows.pop();
+		$.merge( modRows, newRows );
+	
+		return modRows;
+	} );
+	
+	
+	
+	
+	
+	/**
+	 *
+	 */
+	_api_register( 'row()', function ( selector, opts ) {
+		return _selector_first( this.rows( selector, opts ) );
+	} );
+	
+	
+	_api_register( 'row().data()', function ( data ) {
+		var ctx = this.context;
+	
+		if ( data === undefined ) {
+			// Get
+			return ctx.length && this.length ?
+				ctx[0].aoData[ this[0] ]._aData :
+				undefined;
+		}
+	
+		// Set
+		var row = ctx[0].aoData[ this[0] ];
+		row._aData = data;
+	
+		// If the DOM has an id, and the data source is an array
+		if ( $.isArray( data ) && row.nTr.id ) {
+			_fnSetObjectDataFn( ctx[0].rowId )( data, row.nTr.id );
+		}
+	
+		// Automatically invalidate
+		_fnInvalidate( ctx[0], this[0], 'data' );
+	
+		return this;
+	} );
+	
+	
+	_api_register( 'row().node()', function () {
+		var ctx = this.context;
+	
+		return ctx.length && this.length ?
+			ctx[0].aoData[ this[0] ].nTr || null :
+			null;
+	} );
+	
+	
+	_api_register( 'row.add()', function ( row ) {
+		// Allow a jQuery object to be passed in - only a single row is added from
+		// it though - the first element in the set
+		if ( row instanceof $ && row.length ) {
+			row = row[0];
+		}
+	
+		var rows = this.iterator( 'table', function ( settings ) {
+			if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
+				return _fnAddTr( settings, row )[0];
+			}
+			return _fnAddData( settings, row );
+		} );
+	
+		// Return an Api.rows() extended instance, with the newly added row selected
+		return this.row( rows[0] );
+	} );
+	
+	
+	
+	var __details_add = function ( ctx, row, data, klass )
+	{
+		// Convert to array of TR elements
+		var rows = [];
+		var addRow = function ( r, k ) {
+			// Recursion to allow for arrays of jQuery objects
+			if ( $.isArray( r ) || r instanceof $ ) {
+				for ( var i=0, ien=r.length ; i<ien ; i++ ) {
+					addRow( r[i], k );
+				}
+				return;
+			}
+	
+			// If we get a TR element, then just add it directly - up to the dev
+			// to add the correct number of columns etc
+			if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {
+				rows.push( r );
+			}
+			else {
+				// Otherwise create a row with a wrapper
+				var created = $('<tr><td/></tr>').addClass( k );
+				$('td', created)
+					.addClass( k )
+					.html( r )
+					[0].colSpan = _fnVisbleColumns( ctx );
+	
+				rows.push( created[0] );
+			}
+		};
+	
+		addRow( data, klass );
+	
+		if ( row._details ) {
+			row._details.detach();
+		}
+	
+		row._details = $(rows);
+	
+		// If the children were already shown, that state should be retained
+		if ( row._detailsShow ) {
+			row._details.insertAfter( row.nTr );
+		}
+	};
+	
+	
+	var __details_remove = function ( api, idx )
+	{
+		var ctx = api.context;
+	
+		if ( ctx.length ) {
+			var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];
+	
+			if ( row && row._details ) {
+				row._details.remove();
+	
+				row._detailsShow = undefined;
+				row._details = undefined;
+			}
+		}
+	};
+	
+	
+	var __details_display = function ( api, show ) {
+		var ctx = api.context;
+	
+		if ( ctx.length && api.length ) {
+			var row = ctx[0].aoData[ api[0] ];
+	
+			if ( row._details ) {
+				row._detailsShow = show;
+	
+				if ( show ) {
+					row._details.insertAfter( row.nTr );
+				}
+				else {
+					row._details.detach();
+				}
+	
+				__details_events( ctx[0] );
+			}
+		}
+	};
+	
+	
+	var __details_events = function ( settings )
+	{
+		var api = new _Api( settings );
+		var namespace = '.dt.DT_details';
+		var drawEvent = 'draw'+namespace;
+		var colvisEvent = 'column-visibility'+namespace;
+		var destroyEvent = 'destroy'+namespace;
+		var data = settings.aoData;
+	
+		api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );
+	
+		if ( _pluck( data, '_details' ).length > 0 ) {
+			// On each draw, insert the required elements into the document
+			api.on( drawEvent, function ( e, ctx ) {
+				if ( settings !== ctx ) {
+					return;
+				}
+	
+				api.rows( {page:'current'} ).eq(0).each( function (idx) {
+					// Internal data grab
+					var row = data[ idx ];
+	
+					if ( row._detailsShow ) {
+						row._details.insertAfter( row.nTr );
+					}
+				} );
+			} );
+	
+			// Column visibility change - update the colspan
+			api.on( colvisEvent, function ( e, ctx, idx, vis ) {
+				if ( settings !== ctx ) {
+					return;
+				}
+	
+				// Update the colspan for the details rows (note, only if it already has
+				// a colspan)
+				var row, visible = _fnVisbleColumns( ctx );
+	
+				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+					row = data[i];
+	
+					if ( row._details ) {
+						row._details.children('td[colspan]').attr('colspan', visible );
+					}
+				}
+			} );
+	
+			// Table destroyed - nuke any child rows
+			api.on( destroyEvent, function ( e, ctx ) {
+				if ( settings !== ctx ) {
+					return;
+				}
+	
+				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+					if ( data[i]._details ) {
+						__details_remove( api, i );
+					}
+				}
+			} );
+		}
+	};
+	
+	// Strings for the method names to help minification
+	var _emp = '';
+	var _child_obj = _emp+'row().child';
+	var _child_mth = _child_obj+'()';
+	
+	// data can be:
+	//  tr
+	//  string
+	//  jQuery or array of any of the above
+	_api_register( _child_mth, function ( data, klass ) {
+		var ctx = this.context;
+	
+		if ( data === undefined ) {
+			// get
+			return ctx.length && this.length ?
+				ctx[0].aoData[ this[0] ]._details :
+				undefined;
+		}
+		else if ( data === true ) {
+			// show
+			this.child.show();
+		}
+		else if ( data === false ) {
+			// remove
+			__details_remove( this );
+		}
+		else if ( ctx.length && this.length ) {
+			// set
+			__details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );
+		}
+	
+		return this;
+	} );
+	
+	
+	_api_register( [
+		_child_obj+'.show()',
+		_child_mth+'.show()' // only when `child()` was called with parameters (without
+	], function ( show ) {   // it returns an object and this method is not executed)
+		__details_display( this, true );
+		return this;
+	} );
+	
+	
+	_api_register( [
+		_child_obj+'.hide()',
+		_child_mth+'.hide()' // only when `child()` was called with parameters (without
+	], function () {         // it returns an object and this method is not executed)
+		__details_display( this, false );
+		return this;
+	} );
+	
+	
+	_api_register( [
+		_child_obj+'.remove()',
+		_child_mth+'.remove()' // only when `child()` was called with parameters (without
+	], function () {           // it returns an object and this method is not executed)
+		__details_remove( this );
+		return this;
+	} );
+	
+	
+	_api_register( _child_obj+'.isShown()', function () {
+		var ctx = this.context;
+	
+		if ( ctx.length && this.length ) {
+			// _detailsShown as false or undefined will fall through to return false
+			return ctx[0].aoData[ this[0] ]._detailsShow || false;
+		}
+		return false;
+	} );
+	
+	
+	
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Columns
+	 *
+	 * {integer}           - column index (>=0 count from left, <0 count from right)
+	 * "{integer}:visIdx"  - visible column index (i.e. translate to column index)  (>=0 count from left, <0 count from right)
+	 * "{integer}:visible" - alias for {integer}:visIdx  (>=0 count from left, <0 count from right)
+	 * "{string}:name"     - column name
+	 * "{string}"          - jQuery selector on column header nodes
+	 *
+	 */
+	
+	// can be an array of these items, comma separated list, or an array of comma
+	// separated lists
+	
+	var __re_column_selector = /^([^:]+):(name|visIdx|visible)$/;
+	
+	
+	// r1 and r2 are redundant - but it means that the parameters match for the
+	// iterator callback in columns().data()
+	var __columnData = function ( settings, column, r1, r2, rows ) {
+		var a = [];
+		for ( var row=0, ien=rows.length ; row<ien ; row++ ) {
+			a.push( _fnGetCellData( settings, rows[row], column ) );
+		}
+		return a;
+	};
+	
+	
+	var __column_selector = function ( settings, selector, opts )
+	{
+		var
+			columns = settings.aoColumns,
+			names = _pluck( columns, 'sName' ),
+			nodes = _pluck( columns, 'nTh' );
+	
+		var run = function ( s ) {
+			var selInt = _intVal( s );
+	
+			// Selector - all
+			if ( s === '' ) {
+				return _range( columns.length );
+			}
+	
+			// Selector - index
+			if ( selInt !== null ) {
+				return [ selInt >= 0 ?
+					selInt : // Count from left
+					columns.length + selInt // Count from right (+ because its a negative value)
+				];
+			}
+	
+			// Selector = function
+			if ( typeof s === 'function' ) {
+				var rows = _selector_row_indexes( settings, opts );
+	
+				return $.map( columns, function (col, idx) {
+					return s(
+							idx,
+							__columnData( settings, idx, 0, 0, rows ),
+							nodes[ idx ]
+						) ? idx : null;
+				} );
+			}
+	
+			// jQuery or string selector
+			var match = typeof s === 'string' ?
+				s.match( __re_column_selector ) :
+				'';
+	
+			if ( match ) {
+				switch( match[2] ) {
+					case 'visIdx':
+					case 'visible':
+						var idx = parseInt( match[1], 10 );
+						// Visible index given, convert to column index
+						if ( idx < 0 ) {
+							// Counting from the right
+							var visColumns = $.map( columns, function (col,i) {
+								return col.bVisible ? i : null;
+							} );
+							return [ visColumns[ visColumns.length + idx ] ];
+						}
+						// Counting from the left
+						return [ _fnVisibleToColumnIndex( settings, idx ) ];
+	
+					case 'name':
+						// match by name. `names` is column index complete and in order
+						return $.map( names, function (name, i) {
+							return name === match[1] ? i : null;
+						} );
+	
+					default:
+						return [];
+				}
+			}
+	
+			// Cell in the table body
+			if ( s.nodeName && s._DT_CellIndex ) {
+				return [ s._DT_CellIndex.column ];
+			}
+	
+			// jQuery selector on the TH elements for the columns
+			var jqResult = $( nodes )
+				.filter( s )
+				.map( function () {
+					return $.inArray( this, nodes ); // `nodes` is column index complete and in order
+				} )
+				.toArray();
+	
+			if ( jqResult.length || ! s.nodeName ) {
+				return jqResult;
+			}
+	
+			// Otherwise a node which might have a `dt-column` data attribute, or be
+			// a child or such an element
+			var host = $(s).closest('*[data-dt-column]');
+			return host.length ?
+				[ host.data('dt-column') ] :
+				[];
+		};
+	
+		return _selector_run( 'column', selector, run, settings, opts );
+	};
+	
+	
+	var __setColumnVis = function ( settings, column, vis ) {
+		var
+			cols = settings.aoColumns,
+			col  = cols[ column ],
+			data = settings.aoData,
+			row, cells, i, ien, tr;
+	
+		// Get
+		if ( vis === undefined ) {
+			return col.bVisible;
+		}
+	
+		// Set
+		// No change
+		if ( col.bVisible === vis ) {
+			return;
+		}
+	
+		if ( vis ) {
+			// Insert column
+			// Need to decide if we should use appendChild or insertBefore
+			var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );
+	
+			for ( i=0, ien=data.length ; i<ien ; i++ ) {
+				tr = data[i].nTr;
+				cells = data[i].anCells;
+	
+				if ( tr ) {
+					// insertBefore can act like appendChild if 2nd arg is null
+					tr.insertBefore( cells[ column ], cells[ insertBefore ] || null );
+				}
+			}
+		}
+		else {
+			// Remove column
+			$( _pluck( settings.aoData, 'anCells', column ) ).detach();
+		}
+	
+		// Common actions
+		col.bVisible = vis;
+	};
+	
+	
+	_api_register( 'columns()', function ( selector, opts ) {
+		// argument shifting
+		if ( selector === undefined ) {
+			selector = '';
+		}
+		else if ( $.isPlainObject( selector ) ) {
+			opts = selector;
+			selector = '';
+		}
+	
+		opts = _selector_opts( opts );
+	
+		var inst = this.iterator( 'table', function ( settings ) {
+			return __column_selector( settings, selector, opts );
+		}, 1 );
+	
+		// Want argument shifting here and in _row_selector?
+		inst.selector.cols = selector;
+		inst.selector.opts = opts;
+	
+		return inst;
+	} );
+	
+	_api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) {
+		return this.iterator( 'column', function ( settings, column ) {
+			return settings.aoColumns[column].nTh;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) {
+		return this.iterator( 'column', function ( settings, column ) {
+			return settings.aoColumns[column].nTf;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().data()', 'column().data()', function () {
+		return this.iterator( 'column-rows', __columnData, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () {
+		return this.iterator( 'column', function ( settings, column ) {
+			return settings.aoColumns[column].mData;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {
+		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
+			return _pluck_order( settings.aoData, rows,
+				type === 'search' ? '_aFilterData' : '_aSortData', column
+			);
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {
+		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
+			return _pluck_order( settings.aoData, rows, 'anCells', column ) ;
+		}, 1 );
+	} );
+	
+	_api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) {
+		var that = this;
+		var ret = this.iterator( 'column', function ( settings, column ) {
+			if ( vis === undefined ) {
+				return settings.aoColumns[ column ].bVisible;
+			} // else
+			__setColumnVis( settings, column, vis );
+		} );
+	
+		// Group the column visibility changes
+		if ( vis !== undefined ) {
+			this.iterator( 'table', function ( settings ) {
+				// Redraw the header after changes
+				_fnDrawHead( settings, settings.aoHeader );
+				_fnDrawHead( settings, settings.aoFooter );
+		
+				// Update colspan for no records display. Child rows and extensions will use their own
+				// listeners to do this - only need to update the empty table item here
+				if ( ! settings.aiDisplay.length ) {
+					$(settings.nTBody).find('td[colspan]').attr('colspan', _fnVisbleColumns(settings));
+				}
+		
+				_fnSaveState( settings );
+	
+				// Second loop once the first is done for events
+				that.iterator( 'column', function ( settings, column ) {
+					_fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis, calc] );
+				} );
+	
+				if ( calc === undefined || calc ) {
+					that.columns.adjust();
+				}
+			});
+		}
+	
+		return ret;
+	} );
+	
+	_api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {
+		return this.iterator( 'column', function ( settings, column ) {
+			return type === 'visible' ?
+				_fnColumnIndexToVisible( settings, column ) :
+				column;
+		}, 1 );
+	} );
+	
+	_api_register( 'columns.adjust()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			_fnAdjustColumnSizing( settings );
+		}, 1 );
+	} );
+	
+	_api_register( 'column.index()', function ( type, idx ) {
+		if ( this.context.length !== 0 ) {
+			var ctx = this.context[0];
+	
+			if ( type === 'fromVisible' || type === 'toData' ) {
+				return _fnVisibleToColumnIndex( ctx, idx );
+			}
+			else if ( type === 'fromData' || type === 'toVisible' ) {
+				return _fnColumnIndexToVisible( ctx, idx );
+			}
+		}
+	} );
+	
+	_api_register( 'column()', function ( selector, opts ) {
+		return _selector_first( this.columns( selector, opts ) );
+	} );
+	
+	
+	
+	var __cell_selector = function ( settings, selector, opts )
+	{
+		var data = settings.aoData;
+		var rows = _selector_row_indexes( settings, opts );
+		var cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) );
+		var allCells = $( [].concat.apply([], cells) );
+		var row;
+		var columns = settings.aoColumns.length;
+		var a, i, ien, j, o, host;
+	
+		var run = function ( s ) {
+			var fnSelector = typeof s === 'function';
+	
+			if ( s === null || s === undefined || fnSelector ) {
+				// All cells and function selectors
+				a = [];
+	
+				for ( i=0, ien=rows.length ; i<ien ; i++ ) {
+					row = rows[i];
+	
+					for ( j=0 ; j<columns ; j++ ) {
+						o = {
+							row: row,
+							column: j
+						};
+	
+						if ( fnSelector ) {
+							// Selector - function
+							host = data[ row ];
+	
+							if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) {
+								a.push( o );
+							}
+						}
+						else {
+							// Selector - all
+							a.push( o );
+						}
+					}
+				}
+	
+				return a;
+			}
+			
+			// Selector - index
+			if ( $.isPlainObject( s ) ) {
+				// Valid cell index and its in the array of selectable rows
+				return s.column !== undefined && s.row !== undefined && $.inArray( s.row, rows ) !== -1 ?
+					[s] :
+					[];
+			}
+	
+			// Selector - jQuery filtered cells
+			var jqResult = allCells
+				.filter( s )
+				.map( function (i, el) {
+					return { // use a new object, in case someone changes the values
+						row:    el._DT_CellIndex.row,
+						column: el._DT_CellIndex.column
+	 				};
+				} )
+				.toArray();
+	
+			if ( jqResult.length || ! s.nodeName ) {
+				return jqResult;
+			}
+	
+			// Otherwise the selector is a node, and there is one last option - the
+			// element might be a child of an element which has dt-row and dt-column
+			// data attributes
+			host = $(s).closest('*[data-dt-row]');
+			return host.length ?
+				[ {
+					row: host.data('dt-row'),
+					column: host.data('dt-column')
+				} ] :
+				[];
+		};
+	
+		return _selector_run( 'cell', selector, run, settings, opts );
+	};
+	
+	
+	
+	
+	_api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {
+		// Argument shifting
+		if ( $.isPlainObject( rowSelector ) ) {
+			// Indexes
+			if ( rowSelector.row === undefined ) {
+				// Selector options in first parameter
+				opts = rowSelector;
+				rowSelector = null;
+			}
+			else {
+				// Cell index objects in first parameter
+				opts = columnSelector;
+				columnSelector = null;
+			}
+		}
+		if ( $.isPlainObject( columnSelector ) ) {
+			opts = columnSelector;
+			columnSelector = null;
+		}
+	
+		// Cell selector
+		if ( columnSelector === null || columnSelector === undefined ) {
+			return this.iterator( 'table', function ( settings ) {
+				return __cell_selector( settings, rowSelector, _selector_opts( opts ) );
+			} );
+		}
+	
+		// The default built in options need to apply to row and columns
+		var internalOpts = opts ? {
+			page: opts.page,
+			order: opts.order,
+			search: opts.search
+		} : {};
+	
+		// Row + column selector
+		var columns = this.columns( columnSelector, internalOpts );
+		var rows = this.rows( rowSelector, internalOpts );
+		var i, ien, j, jen;
+	
+		var cellsNoOpts = this.iterator( 'table', function ( settings, idx ) {
+			var a = [];
+	
+			for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {
+				for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {
+					a.push( {
+						row:    rows[idx][i],
+						column: columns[idx][j]
+					} );
+				}
+			}
+	
+			return a;
+		}, 1 );
+	
+		// There is currently only one extension which uses a cell selector extension
+		// It is a _major_ performance drag to run this if it isn't needed, so this is
+		// an extension specific check at the moment
+		var cells = opts && opts.selected ?
+			this.cells( cellsNoOpts, opts ) :
+			cellsNoOpts;
+	
+		$.extend( cells.selector, {
+			cols: columnSelector,
+			rows: rowSelector,
+			opts: opts
+		} );
+	
+		return cells;
+	} );
+	
+	
+	_api_registerPlural( 'cells().nodes()', 'cell().node()', function () {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			var data = settings.aoData[ row ];
+	
+			return data && data.anCells ?
+				data.anCells[ column ] :
+				undefined;
+		}, 1 );
+	} );
+	
+	
+	_api_register( 'cells().data()', function () {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return _fnGetCellData( settings, row, column );
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {
+		type = type === 'search' ? '_aFilterData' : '_aSortData';
+	
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return settings.aoData[ row ][ type ][ column ];
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return _fnGetCellData( settings, row, column, type );
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'cells().indexes()', 'cell().index()', function () {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return {
+				row: row,
+				column: column,
+				columnVisible: _fnColumnIndexToVisible( settings, column )
+			};
+		}, 1 );
+	} );
+	
+	
+	_api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			_fnInvalidate( settings, row, src, column );
+		} );
+	} );
+	
+	
+	
+	_api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {
+		return _selector_first( this.cells( rowSelector, columnSelector, opts ) );
+	} );
+	
+	
+	_api_register( 'cell().data()', function ( data ) {
+		var ctx = this.context;
+		var cell = this[0];
+	
+		if ( data === undefined ) {
+			// Get
+			return ctx.length && cell.length ?
+				_fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :
+				undefined;
+		}
+	
+		// Set
+		_fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );
+		_fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column );
+	
+		return this;
+	} );
+	
+	
+	
+	/**
+	 * Get current ordering (sorting) that has been applied to the table.
+	 *
+	 * @returns {array} 2D array containing the sorting information for the first
+	 *   table in the current context. Each element in the parent array represents
+	 *   a column being sorted upon (i.e. multi-sorting with two columns would have
+	 *   2 inner arrays). The inner arrays may have 2 or 3 elements. The first is
+	 *   the column index that the sorting condition applies to, the second is the
+	 *   direction of the sort (`desc` or `asc`) and, optionally, the third is the
+	 *   index of the sorting order from the `column.sorting` initialisation array.
+	 *//**
+	 * Set the ordering for the table.
+	 *
+	 * @param {integer} order Column index to sort upon.
+	 * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)
+	 * @returns {DataTables.Api} this
+	 *//**
+	 * Set the ordering for the table.
+	 *
+	 * @param {array} order 1D array of sorting information to be applied.
+	 * @param {array} [...] Optional additional sorting conditions
+	 * @returns {DataTables.Api} this
+	 *//**
+	 * Set the ordering for the table.
+	 *
+	 * @param {array} order 2D array of sorting information to be applied.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'order()', function ( order, dir ) {
+		var ctx = this.context;
+	
+		if ( order === undefined ) {
+			// get
+			return ctx.length !== 0 ?
+				ctx[0].aaSorting :
+				undefined;
+		}
+	
+		// set
+		if ( typeof order === 'number' ) {
+			// Simple column / direction passed in
+			order = [ [ order, dir ] ];
+		}
+		else if ( order.length && ! $.isArray( order[0] ) ) {
+			// Arguments passed in (list of 1D arrays)
+			order = Array.prototype.slice.call( arguments );
+		}
+		// otherwise a 2D array was passed in
+	
+		return this.iterator( 'table', function ( settings ) {
+			settings.aaSorting = order.slice();
+		} );
+	} );
+	
+	
+	/**
+	 * Attach a sort listener to an element for a given column
+	 *
+	 * @param {node|jQuery|string} node Identifier for the element(s) to attach the
+	 *   listener to. This can take the form of a single DOM node, a jQuery
+	 *   collection of nodes or a jQuery selector which will identify the node(s).
+	 * @param {integer} column the column that a click on this node will sort on
+	 * @param {function} [callback] callback function when sort is run
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'order.listener()', function ( node, column, callback ) {
+		return this.iterator( 'table', function ( settings ) {
+			_fnSortAttachListener( settings, node, column, callback );
+		} );
+	} );
+	
+	
+	_api_register( 'order.fixed()', function ( set ) {
+		if ( ! set ) {
+			var ctx = this.context;
+			var fixed = ctx.length ?
+				ctx[0].aaSortingFixed :
+				undefined;
+	
+			return $.isArray( fixed ) ?
+				{ pre: fixed } :
+				fixed;
+		}
+	
+		return this.iterator( 'table', function ( settings ) {
+			settings.aaSortingFixed = $.extend( true, {}, set );
+		} );
+	} );
+	
+	
+	// Order by the selected column(s)
+	_api_register( [
+		'columns().order()',
+		'column().order()'
+	], function ( dir ) {
+		var that = this;
+	
+		return this.iterator( 'table', function ( settings, i ) {
+			var sort = [];
+	
+			$.each( that[i], function (j, col) {
+				sort.push( [ col, dir ] );
+			} );
+	
+			settings.aaSorting = sort;
+		} );
+	} );
+	
+	
+	
+	_api_register( 'search()', function ( input, regex, smart, caseInsen ) {
+		var ctx = this.context;
+	
+		if ( input === undefined ) {
+			// get
+			return ctx.length !== 0 ?
+				ctx[0].oPreviousSearch.sSearch :
+				undefined;
+		}
+	
+		// set
+		return this.iterator( 'table', function ( settings ) {
+			if ( ! settings.oFeatures.bFilter ) {
+				return;
+			}
+	
+			_fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, {
+				"sSearch": input+"",
+				"bRegex":  regex === null ? false : regex,
+				"bSmart":  smart === null ? true  : smart,
+				"bCaseInsensitive": caseInsen === null ? true : caseInsen
+			} ), 1 );
+		} );
+	} );
+	
+	
+	_api_registerPlural(
+		'columns().search()',
+		'column().search()',
+		function ( input, regex, smart, caseInsen ) {
+			return this.iterator( 'column', function ( settings, column ) {
+				var preSearch = settings.aoPreSearchCols;
+	
+				if ( input === undefined ) {
+					// get
+					return preSearch[ column ].sSearch;
+				}
+	
+				// set
+				if ( ! settings.oFeatures.bFilter ) {
+					return;
+				}
+	
+				$.extend( preSearch[ column ], {
+					"sSearch": input+"",
+					"bRegex":  regex === null ? false : regex,
+					"bSmart":  smart === null ? true  : smart,
+					"bCaseInsensitive": caseInsen === null ? true : caseInsen
+				} );
+	
+				_fnFilterComplete( settings, settings.oPreviousSearch, 1 );
+			} );
+		}
+	);
+	
+	/*
+	 * State API methods
+	 */
+	
+	_api_register( 'state()', function () {
+		return this.context.length ?
+			this.context[0].oSavedState :
+			null;
+	} );
+	
+	
+	_api_register( 'state.clear()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			// Save an empty object
+			settings.fnStateSaveCallback.call( settings.oInstance, settings, {} );
+		} );
+	} );
+	
+	
+	_api_register( 'state.loaded()', function () {
+		return this.context.length ?
+			this.context[0].oLoadedState :
+			null;
+	} );
+	
+	
+	_api_register( 'state.save()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			_fnSaveState( settings );
+		} );
+	} );
+	
+	
+	
+	/**
+	 * Provide a common method for plug-ins to check the version of DataTables being
+	 * used, in order to ensure compatibility.
+	 *
+	 *  @param {string} version Version string to check for, in the format "X.Y.Z".
+	 *    Note that the formats "X" and "X.Y" are also acceptable.
+	 *  @returns {boolean} true if this version of DataTables is greater or equal to
+	 *    the required version, or false if this version of DataTales is not
+	 *    suitable
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    alert( $.fn.dataTable.versionCheck( '1.9.0' ) );
+	 */
+	DataTable.versionCheck = DataTable.fnVersionCheck = function( version )
+	{
+		var aThis = DataTable.version.split('.');
+		var aThat = version.split('.');
+		var iThis, iThat;
+	
+		for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {
+			iThis = parseInt( aThis[i], 10 ) || 0;
+			iThat = parseInt( aThat[i], 10 ) || 0;
+	
+			// Parts are the same, keep comparing
+			if (iThis === iThat) {
+				continue;
+			}
+	
+			// Parts are different, return immediately
+			return iThis > iThat;
+		}
+	
+		return true;
+	};
+	
+	
+	/**
+	 * Check if a `<table>` node is a DataTable table already or not.
+	 *
+	 *  @param {node|jquery|string} table Table node, jQuery object or jQuery
+	 *      selector for the table to test. Note that if more than more than one
+	 *      table is passed on, only the first will be checked
+	 *  @returns {boolean} true the table given is a DataTable, or false otherwise
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {
+	 *      $('#example').dataTable();
+	 *    }
+	 */
+	DataTable.isDataTable = DataTable.fnIsDataTable = function ( table )
+	{
+		var t = $(table).get(0);
+		var is = false;
+	
+		if ( table instanceof DataTable.Api ) {
+			return true;
+		}
+	
+		$.each( DataTable.settings, function (i, o) {
+			var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;
+			var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;
+	
+			if ( o.nTable === t || head === t || foot === t ) {
+				is = true;
+			}
+		} );
+	
+		return is;
+	};
+	
+	
+	/**
+	 * Get all DataTable tables that have been initialised - optionally you can
+	 * select to get only currently visible tables.
+	 *
+	 *  @param {boolean} [visible=false] Flag to indicate if you want all (default)
+	 *    or visible tables only.
+	 *  @returns {array} Array of `table` nodes (not DataTable instances) which are
+	 *    DataTables
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    $.each( $.fn.dataTable.tables(true), function () {
+	 *      $(table).DataTable().columns.adjust();
+	 *    } );
+	 */
+	DataTable.tables = DataTable.fnTables = function ( visible )
+	{
+		var api = false;
+	
+		if ( $.isPlainObject( visible ) ) {
+			api = visible.api;
+			visible = visible.visible;
+		}
+	
+		var a = $.map( DataTable.settings, function (o) {
+			if ( !visible || (visible && $(o.nTable).is(':visible')) ) {
+				return o.nTable;
+			}
+		} );
+	
+		return api ?
+			new _Api( a ) :
+			a;
+	};
+	
+	
+	/**
+	 * Convert from camel case parameters to Hungarian notation. This is made public
+	 * for the extensions to provide the same ability as DataTables core to accept
+	 * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase
+	 * parameters.
+	 *
+	 *  @param {object} src The model object which holds all parameters that can be
+	 *    mapped.
+	 *  @param {object} user The object to convert from camel case to Hungarian.
+	 *  @param {boolean} force When set to `true`, properties which already have a
+	 *    Hungarian value in the `user` object will be overwritten. Otherwise they
+	 *    won't be.
+	 */
+	DataTable.camelToHungarian = _fnCamelToHungarian;
+	
+	
+	
+	/**
+	 *
+	 */
+	_api_register( '$()', function ( selector, opts ) {
+		var
+			rows   = this.rows( opts ).nodes(), // Get all rows
+			jqRows = $(rows);
+	
+		return $( [].concat(
+			jqRows.filter( selector ).toArray(),
+			jqRows.find( selector ).toArray()
+		) );
+	} );
+	
+	
+	// jQuery functions to operate on the tables
+	$.each( [ 'on', 'one', 'off' ], function (i, key) {
+		_api_register( key+'()', function ( /* event, handler */ ) {
+			var args = Array.prototype.slice.call(arguments);
+	
+			// Add the `dt` namespace automatically if it isn't already present
+			args[0] = $.map( args[0].split( /\s/ ), function ( e ) {
+				return ! e.match(/\.dt\b/) ?
+					e+'.dt' :
+					e;
+				} ).join( ' ' );
+	
+			var inst = $( this.tables().nodes() );
+			inst[key].apply( inst, args );
+			return this;
+		} );
+	} );
+	
+	
+	_api_register( 'clear()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			_fnClearTable( settings );
+		} );
+	} );
+	
+	
+	_api_register( 'settings()', function () {
+		return new _Api( this.context, this.context );
+	} );
+	
+	
+	_api_register( 'init()', function () {
+		var ctx = this.context;
+		return ctx.length ? ctx[0].oInit : null;
+	} );
+	
+	
+	_api_register( 'data()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			return _pluck( settings.aoData, '_aData' );
+		} ).flatten();
+	} );
+	
+	
+	_api_register( 'destroy()', function ( remove ) {
+		remove = remove || false;
+	
+		return this.iterator( 'table', function ( settings ) {
+			var orig      = settings.nTableWrapper.parentNode;
+			var classes   = settings.oClasses;
+			var table     = settings.nTable;
+			var tbody     = settings.nTBody;
+			var thead     = settings.nTHead;
+			var tfoot     = settings.nTFoot;
+			var jqTable   = $(table);
+			var jqTbody   = $(tbody);
+			var jqWrapper = $(settings.nTableWrapper);
+			var rows      = $.map( settings.aoData, function (r) { return r.nTr; } );
+			var i, ien;
+	
+			// Flag to note that the table is currently being destroyed - no action
+			// should be taken
+			settings.bDestroying = true;
+	
+			// Fire off the destroy callbacks for plug-ins etc
+			_fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] );
+	
+			// If not being removed from the document, make all columns visible
+			if ( ! remove ) {
+				new _Api( settings ).columns().visible( true );
+			}
+	
+			// Blitz all `DT` namespaced events (these are internal events, the
+			// lowercase, `dt` events are user subscribed and they are responsible
+			// for removing them
+			jqWrapper.off('.DT').find(':not(tbody *)').off('.DT');
+			$(window).off('.DT-'+settings.sInstance);
+	
+			// When scrolling we had to break the table up - restore it
+			if ( table != thead.parentNode ) {
+				jqTable.children('thead').detach();
+				jqTable.append( thead );
+			}
+	
+			if ( tfoot && table != tfoot.parentNode ) {
+				jqTable.children('tfoot').detach();
+				jqTable.append( tfoot );
+			}
+	
+			settings.aaSorting = [];
+			settings.aaSortingFixed = [];
+			_fnSortingClasses( settings );
+	
+			$( rows ).removeClass( settings.asStripeClasses.join(' ') );
+	
+			$('th, td', thead).removeClass( classes.sSortable+' '+
+				classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone
+			);
+	
+			// Add the TR elements back into the table in their original order
+			jqTbody.children().detach();
+			jqTbody.append( rows );
+	
+			// Remove the DataTables generated nodes, events and classes
+			var removedMethod = remove ? 'remove' : 'detach';
+			jqTable[ removedMethod ]();
+			jqWrapper[ removedMethod ]();
+	
+			// If we need to reattach the table to the document
+			if ( ! remove && orig ) {
+				// insertBefore acts like appendChild if !arg[1]
+				orig.insertBefore( table, settings.nTableReinsertBefore );
+	
+				// Restore the width of the original table - was read from the style property,
+				// so we can restore directly to that
+				jqTable
+					.css( 'width', settings.sDestroyWidth )
+					.removeClass( classes.sTable );
+	
+				// If the were originally stripe classes - then we add them back here.
+				// Note this is not fool proof (for example if not all rows had stripe
+				// classes - but it's a good effort without getting carried away
+				ien = settings.asDestroyStripes.length;
+	
+				if ( ien ) {
+					jqTbody.children().each( function (i) {
+						$(this).addClass( settings.asDestroyStripes[i % ien] );
+					} );
+				}
+			}
+	
+			/* Remove the settings object from the settings array */
+			var idx = $.inArray( settings, DataTable.settings );
+			if ( idx !== -1 ) {
+				DataTable.settings.splice( idx, 1 );
+			}
+		} );
+	} );
+	
+	
+	// Add the `every()` method for rows, columns and cells in a compact form
+	$.each( [ 'column', 'row', 'cell' ], function ( i, type ) {
+		_api_register( type+'s().every()', function ( fn ) {
+			var opts = this.selector.opts;
+			var api = this;
+	
+			return this.iterator( type, function ( settings, arg1, arg2, arg3, arg4 ) {
+				// Rows and columns:
+				//  arg1 - index
+				//  arg2 - table counter
+				//  arg3 - loop counter
+				//  arg4 - undefined
+				// Cells:
+				//  arg1 - row index
+				//  arg2 - column index
+				//  arg3 - table counter
+				//  arg4 - loop counter
+				fn.call(
+					api[ type ](
+						arg1,
+						type==='cell' ? arg2 : opts,
+						type==='cell' ? opts : undefined
+					),
+					arg1, arg2, arg3, arg4
+				);
+			} );
+		} );
+	} );
+	
+	
+	// i18n method for extensions to be able to use the language object from the
+	// DataTable
+	_api_register( 'i18n()', function ( token, def, plural ) {
+		var ctx = this.context[0];
+		var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );
+	
+		if ( resolved === undefined ) {
+			resolved = def;
+		}
+	
+		if ( plural !== undefined && $.isPlainObject( resolved ) ) {
+			resolved = resolved[ plural ] !== undefined ?
+				resolved[ plural ] :
+				resolved._;
+		}
+	
+		return resolved.replace( '%d', plural ); // nb: plural might be undefined,
+	} );
+	/**
+	 * Version string for plug-ins to check compatibility. Allowed format is
+	 * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used
+	 * only for non-release builds. See http://semver.org/ for more information.
+	 *  @member
+	 *  @type string
+	 *  @default Version number
+	 */
+	DataTable.version = "1.10.20";
+
+	/**
+	 * Private data store, containing all of the settings objects that are
+	 * created for the tables on a given page.
+	 *
+	 * Note that the `DataTable.settings` object is aliased to
+	 * `jQuery.fn.dataTableExt` through which it may be accessed and
+	 * manipulated, or `jQuery.fn.dataTable.settings`.
+	 *  @member
+	 *  @type array
+	 *  @default []
+	 *  @private
+	 */
+	DataTable.settings = [];
+
+	/**
+	 * Object models container, for the various models that DataTables has
+	 * available to it. These models define the objects that are used to hold
+	 * the active state and configuration of the table.
+	 *  @namespace
+	 */
+	DataTable.models = {};
+	
+	
+	
+	/**
+	 * Template object for the way in which DataTables holds information about
+	 * search information for the global filter and individual column filters.
+	 *  @namespace
+	 */
+	DataTable.models.oSearch = {
+		/**
+		 * Flag to indicate if the filtering should be case insensitive or not
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bCaseInsensitive": true,
+	
+		/**
+		 * Applied search term
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sSearch": "",
+	
+		/**
+		 * Flag to indicate if the search term should be interpreted as a
+		 * regular expression (true) or not (false) and therefore and special
+		 * regex characters escaped.
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bRegex": false,
+	
+		/**
+		 * Flag to indicate if DataTables is to use its smart filtering or not.
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bSmart": true
+	};
+	
+	
+	
+	
+	/**
+	 * Template object for the way in which DataTables holds information about
+	 * each individual row. This is the object format used for the settings
+	 * aoData array.
+	 *  @namespace
+	 */
+	DataTable.models.oRow = {
+		/**
+		 * TR element for the row
+		 *  @type node
+		 *  @default null
+		 */
+		"nTr": null,
+	
+		/**
+		 * Array of TD elements for each row. This is null until the row has been
+		 * created.
+		 *  @type array nodes
+		 *  @default []
+		 */
+		"anCells": null,
+	
+		/**
+		 * Data object from the original data source for the row. This is either
+		 * an array if using the traditional form of DataTables, or an object if
+		 * using mData options. The exact type will depend on the passed in
+		 * data from the data source, or will be an array if using DOM a data
+		 * source.
+		 *  @type array|object
+		 *  @default []
+		 */
+		"_aData": [],
+	
+		/**
+		 * Sorting data cache - this array is ostensibly the same length as the
+		 * number of columns (although each index is generated only as it is
+		 * needed), and holds the data that is used for sorting each column in the
+		 * row. We do this cache generation at the start of the sort in order that
+		 * the formatting of the sort data need be done only once for each cell
+		 * per sort. This array should not be read from or written to by anything
+		 * other than the master sorting methods.
+		 *  @type array
+		 *  @default null
+		 *  @private
+		 */
+		"_aSortData": null,
+	
+		/**
+		 * Per cell filtering data cache. As per the sort data cache, used to
+		 * increase the performance of the filtering in DataTables
+		 *  @type array
+		 *  @default null
+		 *  @private
+		 */
+		"_aFilterData": null,
+	
+		/**
+		 * Filtering data cache. This is the same as the cell filtering cache, but
+		 * in this case a string rather than an array. This is easily computed with
+		 * a join on `_aFilterData`, but is provided as a cache so the join isn't
+		 * needed on every search (memory traded for performance)
+		 *  @type array
+		 *  @default null
+		 *  @private
+		 */
+		"_sFilterRow": null,
+	
+		/**
+		 * Cache of the class name that DataTables has applied to the row, so we
+		 * can quickly look at this variable rather than needing to do a DOM check
+		 * on className for the nTr property.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *  @private
+		 */
+		"_sRowStripe": "",
+	
+		/**
+		 * Denote if the original data source was from the DOM, or the data source
+		 * object. This is used for invalidating data, so DataTables can
+		 * automatically read data from the original source, unless uninstructed
+		 * otherwise.
+		 *  @type string
+		 *  @default null
+		 *  @private
+		 */
+		"src": null,
+	
+		/**
+		 * Index in the aoData array. This saves an indexOf lookup when we have the
+		 * object, but want to know the index
+		 *  @type integer
+		 *  @default -1
+		 *  @private
+		 */
+		"idx": -1
+	};
+	
+	
+	/**
+	 * Template object for the column information object in DataTables. This object
+	 * is held in the settings aoColumns array and contains all the information that
+	 * DataTables needs about each individual column.
+	 *
+	 * Note that this object is related to {@link DataTable.defaults.column}
+	 * but this one is the internal data store for DataTables's cache of columns.
+	 * It should NOT be manipulated outside of DataTables. Any configuration should
+	 * be done through the initialisation options.
+	 *  @namespace
+	 */
+	DataTable.models.oColumn = {
+		/**
+		 * Column index. This could be worked out on-the-fly with $.inArray, but it
+		 * is faster to just hold it as a variable
+		 *  @type integer
+		 *  @default null
+		 */
+		"idx": null,
+	
+		/**
+		 * A list of the columns that sorting should occur on when this column
+		 * is sorted. That this property is an array allows multi-column sorting
+		 * to be defined for a column (for example first name / last name columns
+		 * would benefit from this). The values are integers pointing to the
+		 * columns to be sorted on (typically it will be a single integer pointing
+		 * at itself, but that doesn't need to be the case).
+		 *  @type array
+		 */
+		"aDataSort": null,
+	
+		/**
+		 * Define the sorting directions that are applied to the column, in sequence
+		 * as the column is repeatedly sorted upon - i.e. the first value is used
+		 * as the sorting direction when the column if first sorted (clicked on).
+		 * Sort it again (click again) and it will move on to the next index.
+		 * Repeat until loop.
+		 *  @type array
+		 */
+		"asSorting": null,
+	
+		/**
+		 * Flag to indicate if the column is searchable, and thus should be included
+		 * in the filtering or not.
+		 *  @type boolean
+		 */
+		"bSearchable": null,
+	
+		/**
+		 * Flag to indicate if the column is sortable or not.
+		 *  @type boolean
+		 */
+		"bSortable": null,
+	
+		/**
+		 * Flag to indicate if the column is currently visible in the table or not
+		 *  @type boolean
+		 */
+		"bVisible": null,
+	
+		/**
+		 * Store for manual type assignment using the `column.type` option. This
+		 * is held in store so we can manipulate the column's `sType` property.
+		 *  @type string
+		 *  @default null
+		 *  @private
+		 */
+		"_sManualType": null,
+	
+		/**
+		 * Flag to indicate if HTML5 data attributes should be used as the data
+		 * source for filtering or sorting. True is either are.
+		 *  @type boolean
+		 *  @default false
+		 *  @private
+		 */
+		"_bAttrSrc": false,
+	
+		/**
+		 * Developer definable function that is called whenever a cell is created (Ajax source,
+		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+		 * allowing you to modify the DOM element (add background colour for example) when the
+		 * element is available.
+		 *  @type function
+		 *  @param {element} nTd The TD node that has been created
+		 *  @param {*} sData The Data for the cell
+		 *  @param {array|object} oData The data for the whole row
+		 *  @param {int} iRow The row index for the aoData data store
+		 *  @default null
+		 */
+		"fnCreatedCell": null,
+	
+		/**
+		 * Function to get data from a cell in a column. You should <b>never</b>
+		 * access data directly through _aData internally in DataTables - always use
+		 * the method attached to this property. It allows mData to function as
+		 * required. This function is automatically assigned by the column
+		 * initialisation method
+		 *  @type function
+		 *  @param {array|object} oData The data array/object for the array
+		 *    (i.e. aoData[]._aData)
+		 *  @param {string} sSpecific The specific data type you want to get -
+		 *    'display', 'type' 'filter' 'sort'
+		 *  @returns {*} The data for the cell from the given row's data
+		 *  @default null
+		 */
+		"fnGetData": null,
+	
+		/**
+		 * Function to set data for a cell in the column. You should <b>never</b>
+		 * set the data directly to _aData internally in DataTables - always use
+		 * this method. It allows mData to function as required. This function
+		 * is automatically assigned by the column initialisation method
+		 *  @type function
+		 *  @param {array|object} oData The data array/object for the array
+		 *    (i.e. aoData[]._aData)
+		 *  @param {*} sValue Value to set
+		 *  @default null
+		 */
+		"fnSetData": null,
+	
+		/**
+		 * Property to read the value for the cells in the column from the data
+		 * source array / object. If null, then the default content is used, if a
+		 * function is given then the return from the function is used.
+		 *  @type function|int|string|null
+		 *  @default null
+		 */
+		"mData": null,
+	
+		/**
+		 * Partner property to mData which is used (only when defined) to get
+		 * the data - i.e. it is basically the same as mData, but without the
+		 * 'set' option, and also the data fed to it is the result from mData.
+		 * This is the rendering method to match the data method of mData.
+		 *  @type function|int|string|null
+		 *  @default null
+		 */
+		"mRender": null,
+	
+		/**
+		 * Unique header TH/TD element for this column - this is what the sorting
+		 * listener is attached to (if sorting is enabled.)
+		 *  @type node
+		 *  @default null
+		 */
+		"nTh": null,
+	
+		/**
+		 * Unique footer TH/TD element for this column (if there is one). Not used
+		 * in DataTables as such, but can be used for plug-ins to reference the
+		 * footer for each column.
+		 *  @type node
+		 *  @default null
+		 */
+		"nTf": null,
+	
+		/**
+		 * The class to apply to all TD elements in the table's TBODY for the column
+		 *  @type string
+		 *  @default null
+		 */
+		"sClass": null,
+	
+		/**
+		 * When DataTables calculates the column widths to assign to each column,
+		 * it finds the longest string in each column and then constructs a
+		 * temporary table and reads the widths from that. The problem with this
+		 * is that "mmm" is much wider then "iiii", but the latter is a longer
+		 * string - thus the calculation can go wrong (doing it properly and putting
+		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
+		 * a "work around" we provide this option. It will append its value to the
+		 * text that is found to be the longest string for the column - i.e. padding.
+		 *  @type string
+		 */
+		"sContentPadding": null,
+	
+		/**
+		 * Allows a default value to be given for a column's data, and will be used
+		 * whenever a null data source is encountered (this can be because mData
+		 * is set to null, or because the data source itself is null).
+		 *  @type string
+		 *  @default null
+		 */
+		"sDefaultContent": null,
+	
+		/**
+		 * Name for the column, allowing reference to the column by name as well as
+		 * by index (needs a lookup to work by name).
+		 *  @type string
+		 */
+		"sName": null,
+	
+		/**
+		 * Custom sorting data type - defines which of the available plug-ins in
+		 * afnSortData the custom sorting will use - if any is defined.
+		 *  @type string
+		 *  @default std
+		 */
+		"sSortDataType": 'std',
+	
+		/**
+		 * Class to be applied to the header element when sorting on this column
+		 *  @type string
+		 *  @default null
+		 */
+		"sSortingClass": null,
+	
+		/**
+		 * Class to be applied to the header element when sorting on this column -
+		 * when jQuery UI theming is used.
+		 *  @type string
+		 *  @default null
+		 */
+		"sSortingClassJUI": null,
+	
+		/**
+		 * Title of the column - what is seen in the TH element (nTh).
+		 *  @type string
+		 */
+		"sTitle": null,
+	
+		/**
+		 * Column sorting and filtering type
+		 *  @type string
+		 *  @default null
+		 */
+		"sType": null,
+	
+		/**
+		 * Width of the column
+		 *  @type string
+		 *  @default null
+		 */
+		"sWidth": null,
+	
+		/**
+		 * Width of the column when it was first "encountered"
+		 *  @type string
+		 *  @default null
+		 */
+		"sWidthOrig": null
+	};
+	
+	
+	/*
+	 * Developer note: The properties of the object below are given in Hungarian
+	 * notation, that was used as the interface for DataTables prior to v1.10, however
+	 * from v1.10 onwards the primary interface is camel case. In order to avoid
+	 * breaking backwards compatibility utterly with this change, the Hungarian
+	 * version is still, internally the primary interface, but is is not documented
+	 * - hence the @name tags in each doc comment. This allows a Javascript function
+	 * to create a map from Hungarian notation to camel case (going the other direction
+	 * would require each property to be listed, which would at around 3K to the size
+	 * of DataTables, while this method is about a 0.5K hit.
+	 *
+	 * Ultimately this does pave the way for Hungarian notation to be dropped
+	 * completely, but that is a massive amount of work and will break current
+	 * installs (therefore is on-hold until v2).
+	 */
+	
+	/**
+	 * Initialisation options that can be given to DataTables at initialisation
+	 * time.
+	 *  @namespace
+	 */
+	DataTable.defaults = {
+		/**
+		 * An array of data to use for the table, passed in at initialisation which
+		 * will be used in preference to any data which is already in the DOM. This is
+		 * particularly useful for constructing tables purely in Javascript, for
+		 * example with a custom Ajax call.
+		 *  @type array
+		 *  @default null
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.data
+		 *
+		 *  @example
+		 *    // Using a 2D array data source
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "data": [
+		 *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],
+		 *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],
+		 *        ],
+		 *        "columns": [
+		 *          { "title": "Engine" },
+		 *          { "title": "Browser" },
+		 *          { "title": "Platform" },
+		 *          { "title": "Version" },
+		 *          { "title": "Grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using an array of objects as a data source (`data`)
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "data": [
+		 *          {
+		 *            "engine":   "Trident",
+		 *            "browser":  "Internet Explorer 4.0",
+		 *            "platform": "Win 95+",
+		 *            "version":  4,
+		 *            "grade":    "X"
+		 *          },
+		 *          {
+		 *            "engine":   "Trident",
+		 *            "browser":  "Internet Explorer 5.0",
+		 *            "platform": "Win 95+",
+		 *            "version":  5,
+		 *            "grade":    "C"
+		 *          }
+		 *        ],
+		 *        "columns": [
+		 *          { "title": "Engine",   "data": "engine" },
+		 *          { "title": "Browser",  "data": "browser" },
+		 *          { "title": "Platform", "data": "platform" },
+		 *          { "title": "Version",  "data": "version" },
+		 *          { "title": "Grade",    "data": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"aaData": null,
+	
+	
+		/**
+		 * If ordering is enabled, then DataTables will perform a first pass sort on
+		 * initialisation. You can define which column(s) the sort is performed
+		 * upon, and the sorting direction, with this variable. The `sorting` array
+		 * should contain an array for each column to be sorted initially containing
+		 * the column's index and a direction string ('asc' or 'desc').
+		 *  @type array
+		 *  @default [[0,'asc']]
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.order
+		 *
+		 *  @example
+		 *    // Sort by 3rd column first, and then 4th column
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "order": [[2,'asc'], [3,'desc']]
+		 *      } );
+		 *    } );
+		 *
+		 *    // No initial sorting
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "order": []
+		 *      } );
+		 *    } );
+		 */
+		"aaSorting": [[0,'asc']],
+	
+	
+		/**
+		 * This parameter is basically identical to the `sorting` parameter, but
+		 * cannot be overridden by user interaction with the table. What this means
+		 * is that you could have a column (visible or hidden) which the sorting
+		 * will always be forced on first - any sorting after that (from the user)
+		 * will then be performed as required. This can be useful for grouping rows
+		 * together.
+		 *  @type array
+		 *  @default null
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.orderFixed
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "orderFixed": [[0,'asc']]
+		 *      } );
+		 *    } )
+		 */
+		"aaSortingFixed": [],
+	
+	
+		/**
+		 * DataTables can be instructed to load data to display in the table from a
+		 * Ajax source. This option defines how that Ajax call is made and where to.
+		 *
+		 * The `ajax` property has three different modes of operation, depending on
+		 * how it is defined. These are:
+		 *
+		 * * `string` - Set the URL from where the data should be loaded from.
+		 * * `object` - Define properties for `jQuery.ajax`.
+		 * * `function` - Custom data get function
+		 *
+		 * `string`
+		 * --------
+		 *
+		 * As a string, the `ajax` property simply defines the URL from which
+		 * DataTables will load data.
+		 *
+		 * `object`
+		 * --------
+		 *
+		 * As an object, the parameters in the object are passed to
+		 * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control
+		 * of the Ajax request. DataTables has a number of default parameters which
+		 * you can override using this option. Please refer to the jQuery
+		 * documentation for a full description of the options available, although
+		 * the following parameters provide additional options in DataTables or
+		 * require special consideration:
+		 *
+		 * * `data` - As with jQuery, `data` can be provided as an object, but it
+		 *   can also be used as a function to manipulate the data DataTables sends
+		 *   to the server. The function takes a single parameter, an object of
+		 *   parameters with the values that DataTables has readied for sending. An
+		 *   object may be returned which will be merged into the DataTables
+		 *   defaults, or you can add the items to the object that was passed in and
+		 *   not return anything from the function. This supersedes `fnServerParams`
+		 *   from DataTables 1.9-.
+		 *
+		 * * `dataSrc` - By default DataTables will look for the property `data` (or
+		 *   `aaData` for compatibility with DataTables 1.9-) when obtaining data
+		 *   from an Ajax source or for server-side processing - this parameter
+		 *   allows that property to be changed. You can use Javascript dotted
+		 *   object notation to get a data source for multiple levels of nesting, or
+		 *   it my be used as a function. As a function it takes a single parameter,
+		 *   the JSON returned from the server, which can be manipulated as
+		 *   required, with the returned value being that used by DataTables as the
+		 *   data source for the table. This supersedes `sAjaxDataProp` from
+		 *   DataTables 1.9-.
+		 *
+		 * * `success` - Should not be overridden it is used internally in
+		 *   DataTables. To manipulate / transform the data returned by the server
+		 *   use `ajax.dataSrc`, or use `ajax` as a function (see below).
+		 *
+		 * `function`
+		 * ----------
+		 *
+		 * As a function, making the Ajax call is left up to yourself allowing
+		 * complete control of the Ajax request. Indeed, if desired, a method other
+		 * than Ajax could be used to obtain the required data, such as Web storage
+		 * or an AIR database.
+		 *
+		 * The function is given four parameters and no return is required. The
+		 * parameters are:
+		 *
+		 * 1. _object_ - Data to send to the server
+		 * 2. _function_ - Callback function that must be executed when the required
+		 *    data has been obtained. That data should be passed into the callback
+		 *    as the only parameter
+		 * 3. _object_ - DataTables settings object for the table
+		 *
+		 * Note that this supersedes `fnServerData` from DataTables 1.9-.
+		 *
+		 *  @type string|object|function
+		 *  @default null
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.ajax
+		 *  @since 1.10.0
+		 *
+		 * @example
+		 *   // Get JSON data from a file via Ajax.
+		 *   // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).
+		 *   $('#example').dataTable( {
+		 *     "ajax": "data.json"
+		 *   } );
+		 *
+		 * @example
+		 *   // Get JSON data from a file via Ajax, using `dataSrc` to change
+		 *   // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "dataSrc": "tableData"
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Get JSON data from a file via Ajax, using `dataSrc` to read data
+		 *   // from a plain array rather than an array in an object
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "dataSrc": ""
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Manipulate the data returned from the server - add a link to data
+		 *   // (note this can, should, be done using `render` for the column - this
+		 *   // is just a simple example of how the data can be manipulated).
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "dataSrc": function ( json ) {
+		 *         for ( var i=0, ien=json.length ; i<ien ; i++ ) {
+		 *           json[i][0] = '<a href="/message/'+json[i][0]+'>View message</a>';
+		 *         }
+		 *         return json;
+		 *       }
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Add data to the request
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "data": function ( d ) {
+		 *         return {
+		 *           "extra_search": $('#extra').val()
+		 *         };
+		 *       }
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Send request as POST
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "type": "POST"
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Get the data from localStorage (could interface with a form for
+		 *   // adding, editing and removing rows).
+		 *   $('#example').dataTable( {
+		 *     "ajax": function (data, callback, settings) {
+		 *       callback(
+		 *         JSON.parse( localStorage.getItem('dataTablesData') )
+		 *       );
+		 *     }
+		 *   } );
+		 */
+		"ajax": null,
+	
+	
+		/**
+		 * This parameter allows you to readily specify the entries in the length drop
+		 * down menu that DataTables shows when pagination is enabled. It can be
+		 * either a 1D array of options which will be used for both the displayed
+		 * option and the value, or a 2D array which will use the array in the first
+		 * position as the value, and the array in the second position as the
+		 * displayed options (useful for language strings such as 'All').
+		 *
+		 * Note that the `pageLength` property will be automatically set to the
+		 * first value given in this array, unless `pageLength` is also provided.
+		 *  @type array
+		 *  @default [ 10, 25, 50, 100 ]
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.lengthMenu
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
+		 *      } );
+		 *    } );
+		 */
+		"aLengthMenu": [ 10, 25, 50, 100 ],
+	
+	
+		/**
+		 * The `columns` option in the initialisation parameter allows you to define
+		 * details about the way individual columns behave. For a full list of
+		 * column options that can be set, please see
+		 * {@link DataTable.defaults.column}. Note that if you use `columns` to
+		 * define your columns, you must have an entry in the array for every single
+		 * column that you have in your table (these can be null if you don't which
+		 * to specify any options).
+		 *  @member
+		 *
+		 *  @name DataTable.defaults.column
+		 */
+		"aoColumns": null,
+	
+		/**
+		 * Very similar to `columns`, `columnDefs` allows you to target a specific
+		 * column, multiple columns, or all columns, using the `targets` property of
+		 * each object in the array. This allows great flexibility when creating
+		 * tables, as the `columnDefs` arrays can be of any length, targeting the
+		 * columns you specifically want. `columnDefs` may use any of the column
+		 * options available: {@link DataTable.defaults.column}, but it _must_
+		 * have `targets` defined in each object in the array. Values in the `targets`
+		 * array may be:
+		 *   <ul>
+		 *     <li>a string - class name will be matched on the TH for the column</li>
+		 *     <li>0 or a positive integer - column index counting from the left</li>
+		 *     <li>a negative integer - column index counting from the right</li>
+		 *     <li>the string "_all" - all columns (i.e. assign a default)</li>
+		 *   </ul>
+		 *  @member
+		 *
+		 *  @name DataTable.defaults.columnDefs
+		 */
+		"aoColumnDefs": null,
+	
+	
+		/**
+		 * Basically the same as `search`, this parameter defines the individual column
+		 * filtering state at initialisation time. The array must be of the same size
+		 * as the number of columns, and each element be an object with the parameters
+		 * `search` and `escapeRegex` (the latter is optional). 'null' is also
+		 * accepted and the default will be used.
+		 *  @type array
+		 *  @default []
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.searchCols
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "searchCols": [
+		 *          null,
+		 *          { "search": "My filter" },
+		 *          null,
+		 *          { "search": "^[0-9]", "escapeRegex": false }
+		 *        ]
+		 *      } );
+		 *    } )
+		 */
+		"aoSearchCols": [],
+	
+	
+		/**
+		 * An array of CSS classes that should be applied to displayed rows. This
+		 * array may be of any length, and DataTables will apply each class
+		 * sequentially, looping when required.
+		 *  @type array
+		 *  @default null <i>Will take the values determined by the `oClasses.stripe*`
+		 *    options</i>
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.stripeClasses
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stripeClasses": [ 'strip1', 'strip2', 'strip3' ]
+		 *      } );
+		 *    } )
+		 */
+		"asStripeClasses": null,
+	
+	
+		/**
+		 * Enable or disable automatic column width calculation. This can be disabled
+		 * as an optimisation (it takes some time to calculate the widths) if the
+		 * tables widths are passed in using `columns`.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.autoWidth
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "autoWidth": false
+		 *      } );
+		 *    } );
+		 */
+		"bAutoWidth": true,
+	
+	
+		/**
+		 * Deferred rendering can provide DataTables with a huge speed boost when you
+		 * are using an Ajax or JS data source for the table. This option, when set to
+		 * true, will cause DataTables to defer the creation of the table elements for
+		 * each row until they are needed for a draw - saving a significant amount of
+		 * time.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.deferRender
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajax": "sources/arrays.txt",
+		 *        "deferRender": true
+		 *      } );
+		 *    } );
+		 */
+		"bDeferRender": false,
+	
+	
+		/**
+		 * Replace a DataTable which matches the given selector and replace it with
+		 * one which has the properties of the new initialisation object passed. If no
+		 * table matches the selector, then the new DataTable will be constructed as
+		 * per normal.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.destroy
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "srollY": "200px",
+		 *        "paginate": false
+		 *      } );
+		 *
+		 *      // Some time later....
+		 *      $('#example').dataTable( {
+		 *        "filter": false,
+		 *        "destroy": true
+		 *      } );
+		 *    } );
+		 */
+		"bDestroy": false,
+	
+	
+		/**
+		 * Enable or disable filtering of data. Filtering in DataTables is "smart" in
+		 * that it allows the end user to input multiple words (space separated) and
+		 * will match a row containing those words, even if not in the order that was
+		 * specified (this allow matching across multiple columns). Note that if you
+		 * wish to use filtering in DataTables this must remain 'true' - to remove the
+		 * default filtering input box and retain filtering abilities, please use
+		 * {@link DataTable.defaults.dom}.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.searching
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "searching": false
+		 *      } );
+		 *    } );
+		 */
+		"bFilter": true,
+	
+	
+		/**
+		 * Enable or disable the table information display. This shows information
+		 * about the data that is currently visible on the page, including information
+		 * about filtered data if that action is being performed.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.info
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "info": false
+		 *      } );
+		 *    } );
+		 */
+		"bInfo": true,
+	
+	
+		/**
+		 * Allows the end user to select the size of a formatted page from a select
+		 * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.lengthChange
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "lengthChange": false
+		 *      } );
+		 *    } );
+		 */
+		"bLengthChange": true,
+	
+	
+		/**
+		 * Enable or disable pagination.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.paging
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "paging": false
+		 *      } );
+		 *    } );
+		 */
+		"bPaginate": true,
+	
+	
+		/**
+		 * Enable or disable the display of a 'processing' indicator when the table is
+		 * being processed (e.g. a sort). This is particularly useful for tables with
+		 * large amounts of data where it can take a noticeable amount of time to sort
+		 * the entries.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.processing
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "processing": true
+		 *      } );
+		 *    } );
+		 */
+		"bProcessing": false,
+	
+	
+		/**
+		 * Retrieve the DataTables object for the given selector. Note that if the
+		 * table has already been initialised, this parameter will cause DataTables
+		 * to simply return the object that has already been set up - it will not take
+		 * account of any changes you might have made to the initialisation object
+		 * passed to DataTables (setting this parameter to true is an acknowledgement
+		 * that you understand this). `destroy` can be used to reinitialise a table if
+		 * you need.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.retrieve
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      initTable();
+		 *      tableActions();
+		 *    } );
+		 *
+		 *    function initTable ()
+		 *    {
+		 *      return $('#example').dataTable( {
+		 *        "scrollY": "200px",
+		 *        "paginate": false,
+		 *        "retrieve": true
+		 *      } );
+		 *    }
+		 *
+		 *    function tableActions ()
+		 *    {
+		 *      var table = initTable();
+		 *      // perform API operations with oTable
+		 *    }
+		 */
+		"bRetrieve": false,
+	
+	
+		/**
+		 * When vertical (y) scrolling is enabled, DataTables will force the height of
+		 * the table's viewport to the given height at all times (useful for layout).
+		 * However, this can look odd when filtering data down to a small data set,
+		 * and the footer is left "floating" further down. This parameter (when
+		 * enabled) will cause DataTables to collapse the table's viewport down when
+		 * the result set will fit within the given Y height.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.scrollCollapse
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollY": "200",
+		 *        "scrollCollapse": true
+		 *      } );
+		 *    } );
+		 */
+		"bScrollCollapse": false,
+	
+	
+		/**
+		 * Configure DataTables to use server-side processing. Note that the
+		 * `ajax` parameter must also be given in order to give DataTables a
+		 * source to obtain the required data for each draw.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverSide
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "serverSide": true,
+		 *        "ajax": "xhr.php"
+		 *      } );
+		 *    } );
+		 */
+		"bServerSide": false,
+	
+	
+		/**
+		 * Enable or disable sorting of columns. Sorting of individual columns can be
+		 * disabled by the `sortable` option for each column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.ordering
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "ordering": false
+		 *      } );
+		 *    } );
+		 */
+		"bSort": true,
+	
+	
+		/**
+		 * Enable or display DataTables' ability to sort multiple columns at the
+		 * same time (activated by shift-click by the user).
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.orderMulti
+		 *
+		 *  @example
+		 *    // Disable multiple column sorting ability
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "orderMulti": false
+		 *      } );
+		 *    } );
+		 */
+		"bSortMulti": true,
+	
+	
+		/**
+		 * Allows control over whether DataTables should use the top (true) unique
+		 * cell that is found for a single column, or the bottom (false - default).
+		 * This is useful when using complex headers.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.orderCellsTop
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "orderCellsTop": true
+		 *      } );
+		 *    } );
+		 */
+		"bSortCellsTop": false,
+	
+	
+		/**
+		 * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and
+		 * `sorting\_3` to the columns which are currently being sorted on. This is
+		 * presented as a feature switch as it can increase processing time (while
+		 * classes are removed and added) so for large data sets you might want to
+		 * turn this off.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.orderClasses
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "orderClasses": false
+		 *      } );
+		 *    } );
+		 */
+		"bSortClasses": true,
+	
+	
+		/**
+		 * Enable or disable state saving. When enabled HTML5 `localStorage` will be
+		 * used to save table display information such as pagination information,
+		 * display length, filtering and sorting. As such when the end user reloads
+		 * the page the display display will match what thy had previously set up.
+		 *
+		 * Due to the use of `localStorage` the default state saving is not supported
+		 * in IE6 or 7. If state saving is required in those browsers, use
+		 * `stateSaveCallback` to provide a storage solution such as cookies.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.stateSave
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true
+		 *      } );
+		 *    } );
+		 */
+		"bStateSave": false,
+	
+	
+		/**
+		 * This function is called when a TR element is created (and all TD child
+		 * elements have been inserted), or registered if using a DOM source, allowing
+		 * manipulation of the TR element (adding classes etc).
+		 *  @type function
+		 *  @param {node} row "TR" element for the current row
+		 *  @param {array} data Raw data array for this row
+		 *  @param {int} dataIndex The index of this row in the internal aoData array
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.createdRow
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "createdRow": function( row, data, dataIndex ) {
+		 *          // Bold the grade for all 'A' grade browsers
+		 *          if ( data[4] == "A" )
+		 *          {
+		 *            $('td:eq(4)', row).html( '<b>A</b>' );
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnCreatedRow": null,
+	
+	
+		/**
+		 * This function is called on every 'draw' event, and allows you to
+		 * dynamically modify any aspect you want about the created DOM.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.drawCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "drawCallback": function( settings ) {
+		 *          alert( 'DataTables has redrawn the table' );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnDrawCallback": null,
+	
+	
+		/**
+		 * Identical to fnHeaderCallback() but for the table footer this function
+		 * allows you to modify the table footer on every 'draw' event.
+		 *  @type function
+		 *  @param {node} foot "TR" element for the footer
+		 *  @param {array} data Full table data (as derived from the original HTML)
+		 *  @param {int} start Index for the current display starting point in the
+		 *    display array
+		 *  @param {int} end Index for the current display ending point in the
+		 *    display array
+		 *  @param {array int} display Index array to translate the visual position
+		 *    to the full data array
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.footerCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "footerCallback": function( tfoot, data, start, end, display ) {
+		 *          tfoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+start;
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnFooterCallback": null,
+	
+	
+		/**
+		 * When rendering large numbers in the information element for the table
+		 * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
+		 * to have a comma separator for the 'thousands' units (e.g. 1 million is
+		 * rendered as "1,000,000") to help readability for the end user. This
+		 * function will override the default method DataTables uses.
+		 *  @type function
+		 *  @member
+		 *  @param {int} toFormat number to be formatted
+		 *  @returns {string} formatted string for DataTables to show the number
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.formatNumber
+		 *
+		 *  @example
+		 *    // Format a number using a single quote for the separator (note that
+		 *    // this can also be done with the language.thousands option)
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "formatNumber": function ( toFormat ) {
+		 *          return toFormat.toString().replace(
+		 *            /\B(?=(\d{3})+(?!\d))/g, "'"
+		 *          );
+		 *        };
+		 *      } );
+		 *    } );
+		 */
+		"fnFormatNumber": function ( toFormat ) {
+			return toFormat.toString().replace(
+				/\B(?=(\d{3})+(?!\d))/g,
+				this.oLanguage.sThousands
+			);
+		},
+	
+	
+		/**
+		 * This function is called on every 'draw' event, and allows you to
+		 * dynamically modify the header row. This can be used to calculate and
+		 * display useful information about the table.
+		 *  @type function
+		 *  @param {node} head "TR" element for the header
+		 *  @param {array} data Full table data (as derived from the original HTML)
+		 *  @param {int} start Index for the current display starting point in the
+		 *    display array
+		 *  @param {int} end Index for the current display ending point in the
+		 *    display array
+		 *  @param {array int} display Index array to translate the visual position
+		 *    to the full data array
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.headerCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fheaderCallback": function( head, data, start, end, display ) {
+		 *          head.getElementsByTagName('th')[0].innerHTML = "Displaying "+(end-start)+" records";
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnHeaderCallback": null,
+	
+	
+		/**
+		 * The information element can be used to convey information about the current
+		 * state of the table. Although the internationalisation options presented by
+		 * DataTables are quite capable of dealing with most customisations, there may
+		 * be times where you wish to customise the string further. This callback
+		 * allows you to do exactly that.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {int} start Starting position in data for the draw
+		 *  @param {int} end End position in data for the draw
+		 *  @param {int} max Total number of rows in the table (regardless of
+		 *    filtering)
+		 *  @param {int} total Total number of rows in the data set, after filtering
+		 *  @param {string} pre The string that DataTables has formatted using it's
+		 *    own rules
+		 *  @returns {string} The string to be displayed in the information element.
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.infoCallback
+		 *
+		 *  @example
+		 *    $('#example').dataTable( {
+		 *      "infoCallback": function( settings, start, end, max, total, pre ) {
+		 *        return start +" to "+ end;
+		 *      }
+		 *    } );
+		 */
+		"fnInfoCallback": null,
+	
+	
+		/**
+		 * Called when the table has been initialised. Normally DataTables will
+		 * initialise sequentially and there will be no need for this function,
+		 * however, this does not hold true when using external language information
+		 * since that is obtained using an async XHR call.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} json The JSON object request from the server - only
+		 *    present if client-side Ajax sourced data is used
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.initComplete
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "initComplete": function(settings, json) {
+		 *          alert( 'DataTables has finished its initialisation.' );
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnInitComplete": null,
+	
+	
+		/**
+		 * Called at the very start of each table draw and can be used to cancel the
+		 * draw by returning false, any other return (including undefined) results in
+		 * the full draw occurring).
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @returns {boolean} False will cancel the draw, anything else (including no
+		 *    return) will allow it to complete.
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.preDrawCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "preDrawCallback": function( settings ) {
+		 *          if ( $('#test').val() == 1 ) {
+		 *            return false;
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnPreDrawCallback": null,
+	
+	
+		/**
+		 * This function allows you to 'post process' each row after it have been
+		 * generated for each table draw, but before it is rendered on screen. This
+		 * function might be used for setting the row class name etc.
+		 *  @type function
+		 *  @param {node} row "TR" element for the current row
+		 *  @param {array} data Raw data array for this row
+		 *  @param {int} displayIndex The display index for the current table draw
+		 *  @param {int} displayIndexFull The index of the data in the full list of
+		 *    rows (after filtering)
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.rowCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "rowCallback": function( row, data, displayIndex, displayIndexFull ) {
+		 *          // Bold the grade for all 'A' grade browsers
+		 *          if ( data[4] == "A" ) {
+		 *            $('td:eq(4)', row).html( '<b>A</b>' );
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnRowCallback": null,
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * This parameter allows you to override the default function which obtains
+		 * the data from the server so something more suitable for your application.
+		 * For example you could use POST data, or pull information from a Gears or
+		 * AIR database.
+		 *  @type function
+		 *  @member
+		 *  @param {string} source HTTP source to obtain the data from (`ajax`)
+		 *  @param {array} data A key/value pair object containing the data to send
+		 *    to the server
+		 *  @param {function} callback to be called on completion of the data get
+		 *    process that will draw the data on the page.
+		 *  @param {object} settings DataTables settings object
+		 *
+		 *  @dtopt Callbacks
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverData
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"fnServerData": null,
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 *  It is often useful to send extra data to the server when making an Ajax
+		 * request - for example custom filtering information, and this callback
+		 * function makes it trivial to send extra information to the server. The
+		 * passed in parameter is the data set that has been constructed by
+		 * DataTables, and you can add to this or modify it as you require.
+		 *  @type function
+		 *  @param {array} data Data array (array of objects which are name/value
+		 *    pairs) that has been constructed by DataTables and will be sent to the
+		 *    server. In the case of Ajax sourced data with server-side processing
+		 *    this will be an empty array, for server-side processing there will be a
+		 *    significant number of parameters!
+		 *  @returns {undefined} Ensure that you modify the data array passed in,
+		 *    as this is passed by reference.
+		 *
+		 *  @dtopt Callbacks
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverParams
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"fnServerParams": null,
+	
+	
+		/**
+		 * Load the table state. With this function you can define from where, and how, the
+		 * state of a table is loaded. By default DataTables will load from `localStorage`
+		 * but you might wish to use a server-side database or cookies.
+		 *  @type function
+		 *  @member
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} callback Callback that can be executed when done. It
+		 *    should be passed the loaded state object.
+		 *  @return {object} The DataTables state object to be loaded
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateLoadCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoadCallback": function (settings, callback) {
+		 *          $.ajax( {
+		 *            "url": "/state_load",
+		 *            "dataType": "json",
+		 *            "success": function (json) {
+		 *              callback( json );
+		 *            }
+		 *          } );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoadCallback": function ( settings ) {
+			try {
+				return JSON.parse(
+					(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(
+						'DataTables_'+settings.sInstance+'_'+location.pathname
+					)
+				);
+			} catch (e) {}
+		},
+	
+	
+		/**
+		 * Callback which allows modification of the saved state prior to loading that state.
+		 * This callback is called when the table is loading state from the stored data, but
+		 * prior to the settings object being modified by the saved state. Note that for
+		 * plug-in authors, you should use the `stateLoadParams` event to load parameters for
+		 * a plug-in.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object that is to be loaded
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateLoadParams
+		 *
+		 *  @example
+		 *    // Remove a saved filter, so filtering is never loaded
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoadParams": function (settings, data) {
+		 *          data.oSearch.sSearch = "";
+		 *        }
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Disallow state loading by returning false
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoadParams": function (settings, data) {
+		 *          return false;
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoadParams": null,
+	
+	
+		/**
+		 * Callback that is called when the state has been loaded from the state saving method
+		 * and the DataTables settings object has been modified as a result of the loaded state.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object that was loaded
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateLoaded
+		 *
+		 *  @example
+		 *    // Show an alert with the filtering value that was saved
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoaded": function (settings, data) {
+		 *          alert( 'Saved filter was: '+data.oSearch.sSearch );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoaded": null,
+	
+	
+		/**
+		 * Save the table state. This function allows you to define where and how the state
+		 * information for the table is stored By default DataTables will use `localStorage`
+		 * but you might wish to use a server-side database or cookies.
+		 *  @type function
+		 *  @member
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object to be saved
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateSaveCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateSaveCallback": function (settings, data) {
+		 *          // Send an Ajax request to the server with the state object
+		 *          $.ajax( {
+		 *            "url": "/state_save",
+		 *            "data": data,
+		 *            "dataType": "json",
+		 *            "method": "POST"
+		 *            "success": function () {}
+		 *          } );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateSaveCallback": function ( settings, data ) {
+			try {
+				(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(
+					'DataTables_'+settings.sInstance+'_'+location.pathname,
+					JSON.stringify( data )
+				);
+			} catch (e) {}
+		},
+	
+	
+		/**
+		 * Callback which allows modification of the state to be saved. Called when the table
+		 * has changed state a new state save is required. This method allows modification of
+		 * the state saving object prior to actually doing the save, including addition or
+		 * other state properties or modification. Note that for plug-in authors, you should
+		 * use the `stateSaveParams` event to save parameters for a plug-in.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object to be saved
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateSaveParams
+		 *
+		 *  @example
+		 *    // Remove a saved filter, so filtering is never saved
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateSaveParams": function (settings, data) {
+		 *          data.oSearch.sSearch = "";
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateSaveParams": null,
+	
+	
+		/**
+		 * Duration for which the saved state information is considered valid. After this period
+		 * has elapsed the state will be returned to the default.
+		 * Value is given in seconds.
+		 *  @type int
+		 *  @default 7200 <i>(2 hours)</i>
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.stateDuration
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateDuration": 60*60*24; // 1 day
+		 *      } );
+		 *    } )
+		 */
+		"iStateDuration": 7200,
+	
+	
+		/**
+		 * When enabled DataTables will not make a request to the server for the first
+		 * page draw - rather it will use the data already on the page (no sorting etc
+		 * will be applied to it), thus saving on an XHR at load time. `deferLoading`
+		 * is used to indicate that deferred loading is required, but it is also used
+		 * to tell DataTables how many records there are in the full table (allowing
+		 * the information element and pagination to be displayed correctly). In the case
+		 * where a filtering is applied to the table on initial load, this can be
+		 * indicated by giving the parameter as an array, where the first element is
+		 * the number of records available after filtering and the second element is the
+		 * number of records without filtering (allowing the table information element
+		 * to be shown correctly).
+		 *  @type int | array
+		 *  @default null
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.deferLoading
+		 *
+		 *  @example
+		 *    // 57 records available in the table, no filtering applied
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "serverSide": true,
+		 *        "ajax": "scripts/server_processing.php",
+		 *        "deferLoading": 57
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // 57 records after filtering, 100 without filtering (an initial filter applied)
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "serverSide": true,
+		 *        "ajax": "scripts/server_processing.php",
+		 *        "deferLoading": [ 57, 100 ],
+		 *        "search": {
+		 *          "search": "my_filter"
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"iDeferLoading": null,
+	
+	
+		/**
+		 * Number of rows to display on a single page when using pagination. If
+		 * feature enabled (`lengthChange`) then the end user will be able to override
+		 * this to a custom setting using a pop-up menu.
+		 *  @type int
+		 *  @default 10
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.pageLength
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "pageLength": 50
+		 *      } );
+		 *    } )
+		 */
+		"iDisplayLength": 10,
+	
+	
+		/**
+		 * Define the starting point for data display when using DataTables with
+		 * pagination. Note that this parameter is the number of records, rather than
+		 * the page number, so if you have 10 records per page and want to start on
+		 * the third page, it should be "20".
+		 *  @type int
+		 *  @default 0
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.displayStart
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "displayStart": 20
+		 *      } );
+		 *    } )
+		 */
+		"iDisplayStart": 0,
+	
+	
+		/**
+		 * By default DataTables allows keyboard navigation of the table (sorting, paging,
+		 * and filtering) by adding a `tabindex` attribute to the required elements. This
+		 * allows you to tab through the controls and press the enter key to activate them.
+		 * The tabindex is default 0, meaning that the tab follows the flow of the document.
+		 * You can overrule this using this parameter if you wish. Use a value of -1 to
+		 * disable built-in keyboard navigation.
+		 *  @type int
+		 *  @default 0
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.tabIndex
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "tabIndex": 1
+		 *      } );
+		 *    } );
+		 */
+		"iTabIndex": 0,
+	
+	
+		/**
+		 * Classes that DataTables assigns to the various components and features
+		 * that it adds to the HTML table. This allows classes to be configured
+		 * during initialisation in addition to through the static
+		 * {@link DataTable.ext.oStdClasses} object).
+		 *  @namespace
+		 *  @name DataTable.defaults.classes
+		 */
+		"oClasses": {},
+	
+	
+		/**
+		 * All strings that DataTables uses in the user interface that it creates
+		 * are defined in this object, allowing you to modified them individually or
+		 * completely replace them all as required.
+		 *  @namespace
+		 *  @name DataTable.defaults.language
+		 */
+		"oLanguage": {
+			/**
+			 * Strings that are used for WAI-ARIA labels and controls only (these are not
+			 * actually visible on the page, but will be read by screenreaders, and thus
+			 * must be internationalised as well).
+			 *  @namespace
+			 *  @name DataTable.defaults.language.aria
+			 */
+			"oAria": {
+				/**
+				 * ARIA label that is added to the table headers when the column may be
+				 * sorted ascending by activing the column (click or return when focused).
+				 * Note that the column header is prefixed to this string.
+				 *  @type string
+				 *  @default : activate to sort column ascending
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.aria.sortAscending
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "aria": {
+				 *            "sortAscending": " - click/return to sort ascending"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sSortAscending": ": activate to sort column ascending",
+	
+				/**
+				 * ARIA label that is added to the table headers when the column may be
+				 * sorted descending by activing the column (click or return when focused).
+				 * Note that the column header is prefixed to this string.
+				 *  @type string
+				 *  @default : activate to sort column ascending
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.aria.sortDescending
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "aria": {
+				 *            "sortDescending": " - click/return to sort descending"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sSortDescending": ": activate to sort column descending"
+			},
+	
+			/**
+			 * Pagination string used by DataTables for the built-in pagination
+			 * control types.
+			 *  @namespace
+			 *  @name DataTable.defaults.language.paginate
+			 */
+			"oPaginate": {
+				/**
+				 * Text to use when using the 'full_numbers' type of pagination for the
+				 * button to take the user to the first page.
+				 *  @type string
+				 *  @default First
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.first
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "first": "First page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sFirst": "First",
+	
+	
+				/**
+				 * Text to use when using the 'full_numbers' type of pagination for the
+				 * button to take the user to the last page.
+				 *  @type string
+				 *  @default Last
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.last
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "last": "Last page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sLast": "Last",
+	
+	
+				/**
+				 * Text to use for the 'next' pagination button (to take the user to the
+				 * next page).
+				 *  @type string
+				 *  @default Next
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.next
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "next": "Next page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sNext": "Next",
+	
+	
+				/**
+				 * Text to use for the 'previous' pagination button (to take the user to
+				 * the previous page).
+				 *  @type string
+				 *  @default Previous
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.previous
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "previous": "Previous page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sPrevious": "Previous"
+			},
+	
+			/**
+			 * This string is shown in preference to `zeroRecords` when the table is
+			 * empty of data (regardless of filtering). Note that this is an optional
+			 * parameter - if it is not given, the value of `zeroRecords` will be used
+			 * instead (either the default or given value).
+			 *  @type string
+			 *  @default No data available in table
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.emptyTable
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "emptyTable": "No data available in table"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sEmptyTable": "No data available in table",
+	
+	
+			/**
+			 * This string gives information to the end user about the information
+			 * that is current on display on the page. The following tokens can be
+			 * used in the string and will be dynamically replaced as the table
+			 * display updates. This tokens can be placed anywhere in the string, or
+			 * removed as needed by the language requires:
+			 *
+			 * * `\_START\_` - Display index of the first record on the current page
+			 * * `\_END\_` - Display index of the last record on the current page
+			 * * `\_TOTAL\_` - Number of records in the table after filtering
+			 * * `\_MAX\_` - Number of records in the table without filtering
+			 * * `\_PAGE\_` - Current page number
+			 * * `\_PAGES\_` - Total number of pages of data in the table
+			 *
+			 *  @type string
+			 *  @default Showing _START_ to _END_ of _TOTAL_ entries
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.info
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "info": "Showing page _PAGE_ of _PAGES_"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
+	
+	
+			/**
+			 * Display information string for when the table is empty. Typically the
+			 * format of this string should match `info`.
+			 *  @type string
+			 *  @default Showing 0 to 0 of 0 entries
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.infoEmpty
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "infoEmpty": "No entries to show"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoEmpty": "Showing 0 to 0 of 0 entries",
+	
+	
+			/**
+			 * When a user filters the information in a table, this string is appended
+			 * to the information (`info`) to give an idea of how strong the filtering
+			 * is. The variable _MAX_ is dynamically updated.
+			 *  @type string
+			 *  @default (filtered from _MAX_ total entries)
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.infoFiltered
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "infoFiltered": " - filtering from _MAX_ records"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoFiltered": "(filtered from _MAX_ total entries)",
+	
+	
+			/**
+			 * If can be useful to append extra information to the info string at times,
+			 * and this variable does exactly that. This information will be appended to
+			 * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are
+			 * being used) at all times.
+			 *  @type string
+			 *  @default <i>Empty string</i>
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.infoPostFix
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "infoPostFix": "All records shown are derived from real information."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoPostFix": "",
+	
+	
+			/**
+			 * This decimal place operator is a little different from the other
+			 * language options since DataTables doesn't output floating point
+			 * numbers, so it won't ever use this for display of a number. Rather,
+			 * what this parameter does is modify the sort methods of the table so
+			 * that numbers which are in a format which has a character other than
+			 * a period (`.`) as a decimal place will be sorted numerically.
+			 *
+			 * Note that numbers with different decimal places cannot be shown in
+			 * the same table and still be sortable, the table must be consistent.
+			 * However, multiple different tables on the page can use different
+			 * decimal place characters.
+			 *  @type string
+			 *  @default 
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.decimal
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "decimal": ","
+			 *          "thousands": "."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sDecimal": "",
+	
+	
+			/**
+			 * DataTables has a build in number formatter (`formatNumber`) which is
+			 * used to format large numbers that are used in the table information.
+			 * By default a comma is used, but this can be trivially changed to any
+			 * character you wish with this parameter.
+			 *  @type string
+			 *  @default ,
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.thousands
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "thousands": "'"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sThousands": ",",
+	
+	
+			/**
+			 * Detail the action that will be taken when the drop down menu for the
+			 * pagination length option is changed. The '_MENU_' variable is replaced
+			 * with a default select list of 10, 25, 50 and 100, and can be replaced
+			 * with a custom select box if required.
+			 *  @type string
+			 *  @default Show _MENU_ entries
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.lengthMenu
+			 *
+			 *  @example
+			 *    // Language change only
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "lengthMenu": "Display _MENU_ records"
+			 *        }
+			 *      } );
+			 *    } );
+			 *
+			 *  @example
+			 *    // Language and options change
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "lengthMenu": 'Display <select>'+
+			 *            '<option value="10">10</option>'+
+			 *            '<option value="20">20</option>'+
+			 *            '<option value="30">30</option>'+
+			 *            '<option value="40">40</option>'+
+			 *            '<option value="50">50</option>'+
+			 *            '<option value="-1">All</option>'+
+			 *            '</select> records'
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sLengthMenu": "Show _MENU_ entries",
+	
+	
+			/**
+			 * When using Ajax sourced data and during the first draw when DataTables is
+			 * gathering the data, this message is shown in an empty row in the table to
+			 * indicate to the end user the the data is being loaded. Note that this
+			 * parameter is not used when loading data by server-side processing, just
+			 * Ajax sourced data with client-side processing.
+			 *  @type string
+			 *  @default Loading...
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.loadingRecords
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "loadingRecords": "Please wait - loading..."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sLoadingRecords": "Loading...",
+	
+	
+			/**
+			 * Text which is displayed when the table is processing a user action
+			 * (usually a sort command or similar).
+			 *  @type string
+			 *  @default Processing...
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.processing
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "processing": "DataTables is currently busy"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sProcessing": "Processing...",
+	
+	
+			/**
+			 * Details the actions that will be taken when the user types into the
+			 * filtering input text box. The variable "_INPUT_", if used in the string,
+			 * is replaced with the HTML text box for the filtering input allowing
+			 * control over where it appears in the string. If "_INPUT_" is not given
+			 * then the input box is appended to the string automatically.
+			 *  @type string
+			 *  @default Search:
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.search
+			 *
+			 *  @example
+			 *    // Input text box will be appended at the end automatically
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "search": "Filter records:"
+			 *        }
+			 *      } );
+			 *    } );
+			 *
+			 *  @example
+			 *    // Specify where the filter should appear
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "search": "Apply filter _INPUT_ to table"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sSearch": "Search:",
+	
+	
+			/**
+			 * Assign a `placeholder` attribute to the search `input` element
+			 *  @type string
+			 *  @default 
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.searchPlaceholder
+			 */
+			"sSearchPlaceholder": "",
+	
+	
+			/**
+			 * All of the language information can be stored in a file on the
+			 * server-side, which DataTables will look up if this parameter is passed.
+			 * It must store the URL of the language file, which is in a JSON format,
+			 * and the object has the same properties as the oLanguage object in the
+			 * initialiser object (i.e. the above parameters). Please refer to one of
+			 * the example language files to see how this works in action.
+			 *  @type string
+			 *  @default <i>Empty string - i.e. disabled</i>
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.url
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "url": "http://www.sprymedia.co.uk/dataTables/lang.txt"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sUrl": "",
+	
+	
+			/**
+			 * Text shown inside the table records when the is no information to be
+			 * displayed after filtering. `emptyTable` is shown when there is simply no
+			 * information in the table at all (regardless of filtering).
+			 *  @type string
+			 *  @default No matching records found
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.zeroRecords
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "zeroRecords": "No records to display"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sZeroRecords": "No matching records found"
+		},
+	
+	
+		/**
+		 * This parameter allows you to have define the global filtering state at
+		 * initialisation time. As an object the `search` parameter must be
+		 * defined, but all other parameters are optional. When `regex` is true,
+		 * the search string will be treated as a regular expression, when false
+		 * (default) it will be treated as a straight string. When `smart`
+		 * DataTables will use it's smart filtering methods (to word match at
+		 * any point in the data), when false this will not be done.
+		 *  @namespace
+		 *  @extends DataTable.models.oSearch
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.search
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "search": {"search": "Initial search"}
+		 *      } );
+		 *    } )
+		 */
+		"oSearch": $.extend( {}, DataTable.models.oSearch ),
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * By default DataTables will look for the property `data` (or `aaData` for
+		 * compatibility with DataTables 1.9-) when obtaining data from an Ajax
+		 * source or for server-side processing - this parameter allows that
+		 * property to be changed. You can use Javascript dotted object notation to
+		 * get a data source for multiple levels of nesting.
+		 *  @type string
+		 *  @default data
+		 *
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.ajaxDataProp
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"sAjaxDataProp": "data",
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * You can instruct DataTables to load data from an external
+		 * source using this parameter (use aData if you want to pass data in you
+		 * already have). Simply provide a url a JSON object can be obtained from.
+		 *  @type string
+		 *  @default null
+		 *
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.ajaxSource
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"sAjaxSource": null,
+	
+	
+		/**
+		 * This initialisation variable allows you to specify exactly where in the
+		 * DOM you want DataTables to inject the various controls it adds to the page
+		 * (for example you might want the pagination controls at the top of the
+		 * table). DIV elements (with or without a custom class) can also be added to
+		 * aid styling. The follow syntax is used:
+		 *   <ul>
+		 *     <li>The following options are allowed:
+		 *       <ul>
+		 *         <li>'l' - Length changing</li>
+		 *         <li>'f' - Filtering input</li>
+		 *         <li>'t' - The table!</li>
+		 *         <li>'i' - Information</li>
+		 *         <li>'p' - Pagination</li>
+		 *         <li>'r' - pRocessing</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>The following constants are allowed:
+		 *       <ul>
+		 *         <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>
+		 *         <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>The following syntax is expected:
+		 *       <ul>
+		 *         <li>'&lt;' and '&gt;' - div elements</li>
+		 *         <li>'&lt;"class" and '&gt;' - div with a class</li>
+		 *         <li>'&lt;"#id" and '&gt;' - div with an ID</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>Examples:
+		 *       <ul>
+		 *         <li>'&lt;"wrapper"flipt&gt;'</li>
+		 *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>
+		 *       </ul>
+		 *     </li>
+		 *   </ul>
+		 *  @type string
+		 *  @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b>
+		 *    <"H"lfr>t<"F"ip> <i>(when `jQueryUI` is true)</i>
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.dom
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "dom": '&lt;"top"i&gt;rt&lt;"bottom"flp&gt;&lt;"clear"&gt;'
+		 *      } );
+		 *    } );
+		 */
+		"sDom": "lfrtip",
+	
+	
+		/**
+		 * Search delay option. This will throttle full table searches that use the
+		 * DataTables provided search input element (it does not effect calls to
+		 * `dt-api search()`, providing a delay before the search is made.
+		 *  @type integer
+		 *  @default 0
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.searchDelay
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "searchDelay": 200
+		 *      } );
+		 *    } )
+		 */
+		"searchDelay": null,
+	
+	
+		/**
+		 * DataTables features six different built-in options for the buttons to
+		 * display for pagination control:
+		 *
+		 * * `numbers` - Page number buttons only
+		 * * `simple` - 'Previous' and 'Next' buttons only
+		 * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers
+		 * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons
+		 * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers
+		 * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers
+		 *  
+		 * Further methods can be added using {@link DataTable.ext.oPagination}.
+		 *  @type string
+		 *  @default simple_numbers
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.pagingType
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "pagingType": "full_numbers"
+		 *      } );
+		 *    } )
+		 */
+		"sPaginationType": "simple_numbers",
+	
+	
+		/**
+		 * Enable horizontal scrolling. When a table is too wide to fit into a
+		 * certain layout, or you have a large number of columns in the table, you
+		 * can enable x-scrolling to show the table in a viewport, which can be
+		 * scrolled. This property can be `true` which will allow the table to
+		 * scroll horizontally when needed, or any CSS unit, or a number (in which
+		 * case it will be treated as a pixel measurement). Setting as simply `true`
+		 * is recommended.
+		 *  @type boolean|string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.scrollX
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollX": true,
+		 *        "scrollCollapse": true
+		 *      } );
+		 *    } );
+		 */
+		"sScrollX": "",
+	
+	
+		/**
+		 * This property can be used to force a DataTable to use more width than it
+		 * might otherwise do when x-scrolling is enabled. For example if you have a
+		 * table which requires to be well spaced, this parameter is useful for
+		 * "over-sizing" the table, and thus forcing scrolling. This property can by
+		 * any CSS unit, or a number (in which case it will be treated as a pixel
+		 * measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.scrollXInner
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollX": "100%",
+		 *        "scrollXInner": "110%"
+		 *      } );
+		 *    } );
+		 */
+		"sScrollXInner": "",
+	
+	
+		/**
+		 * Enable vertical scrolling. Vertical scrolling will constrain the DataTable
+		 * to the given height, and enable scrolling for any data which overflows the
+		 * current viewport. This can be used as an alternative to paging to display
+		 * a lot of data in a small area (although paging and scrolling can both be
+		 * enabled at the same time). This property can be any CSS unit, or a number
+		 * (in which case it will be treated as a pixel measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.scrollY
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollY": "200px",
+		 *        "paginate": false
+		 *      } );
+		 *    } );
+		 */
+		"sScrollY": "",
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * Set the HTTP method that is used to make the Ajax call for server-side
+		 * processing or Ajax sourced data.
+		 *  @type string
+		 *  @default GET
+		 *
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverMethod
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"sServerMethod": "GET",
+	
+	
+		/**
+		 * DataTables makes use of renderers when displaying HTML elements for
+		 * a table. These renderers can be added or modified by plug-ins to
+		 * generate suitable mark-up for a site. For example the Bootstrap
+		 * integration plug-in for DataTables uses a paging button renderer to
+		 * display pagination buttons in the mark-up required by Bootstrap.
+		 *
+		 * For further information about the renderers available see
+		 * DataTable.ext.renderer
+		 *  @type string|object
+		 *  @default null
+		 *
+		 *  @name DataTable.defaults.renderer
+		 *
+		 */
+		"renderer": null,
+	
+	
+		/**
+		 * Set the data property name that DataTables should use to get a row's id
+		 * to set as the `id` property in the node.
+		 *  @type string
+		 *  @default DT_RowId
+		 *
+		 *  @name DataTable.defaults.rowId
+		 */
+		"rowId": "DT_RowId"
+	};
+	
+	_fnHungarianMap( DataTable.defaults );
+	
+	
+	
+	/*
+	 * Developer note - See note in model.defaults.js about the use of Hungarian
+	 * notation and camel case.
+	 */
+	
+	/**
+	 * Column options that can be given to DataTables at initialisation time.
+	 *  @namespace
+	 */
+	DataTable.defaults.column = {
+		/**
+		 * Define which column(s) an order will occur on for this column. This
+		 * allows a column's ordering to take multiple columns into account when
+		 * doing a sort or use the data from a different column. For example first
+		 * name / last name columns make sense to do a multi-column sort over the
+		 * two columns.
+		 *  @type array|int
+		 *  @default null <i>Takes the value of the column index automatically</i>
+		 *
+		 *  @name DataTable.defaults.column.orderData
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderData": [ 0, 1 ], "targets": [ 0 ] },
+		 *          { "orderData": [ 1, 0 ], "targets": [ 1 ] },
+		 *          { "orderData": 2, "targets": [ 2 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "orderData": [ 0, 1 ] },
+		 *          { "orderData": [ 1, 0 ] },
+		 *          { "orderData": 2 },
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"aDataSort": null,
+		"iDataSort": -1,
+	
+	
+		/**
+		 * You can control the default ordering direction, and even alter the
+		 * behaviour of the sort handler (i.e. only allow ascending ordering etc)
+		 * using this parameter.
+		 *  @type array
+		 *  @default [ 'asc', 'desc' ]
+		 *
+		 *  @name DataTable.defaults.column.orderSequence
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderSequence": [ "asc" ], "targets": [ 1 ] },
+		 *          { "orderSequence": [ "desc", "asc", "asc" ], "targets": [ 2 ] },
+		 *          { "orderSequence": [ "desc" ], "targets": [ 3 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          { "orderSequence": [ "asc" ] },
+		 *          { "orderSequence": [ "desc", "asc", "asc" ] },
+		 *          { "orderSequence": [ "desc" ] },
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"asSorting": [ 'asc', 'desc' ],
+	
+	
+		/**
+		 * Enable or disable filtering on the data in this column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @name DataTable.defaults.column.searchable
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "searchable": false, "targets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "searchable": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bSearchable": true,
+	
+	
+		/**
+		 * Enable or disable ordering on this column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @name DataTable.defaults.column.orderable
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderable": false, "targets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "orderable": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bSortable": true,
+	
+	
+		/**
+		 * Enable or disable the display of this column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @name DataTable.defaults.column.visible
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "visible": false, "targets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "visible": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bVisible": true,
+	
+	
+		/**
+		 * Developer definable function that is called whenever a cell is created (Ajax source,
+		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+		 * allowing you to modify the DOM element (add background colour for example) when the
+		 * element is available.
+		 *  @type function
+		 *  @param {element} td The TD node that has been created
+		 *  @param {*} cellData The Data for the cell
+		 *  @param {array|object} rowData The data for the whole row
+		 *  @param {int} row The row index for the aoData data store
+		 *  @param {int} col The column index for aoColumns
+		 *
+		 *  @name DataTable.defaults.column.createdCell
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [3],
+		 *          "createdCell": function (td, cellData, rowData, row, col) {
+		 *            if ( cellData == "1.7" ) {
+		 *              $(td).css('color', 'blue')
+		 *            }
+		 *          }
+		 *        } ]
+		 *      });
+		 *    } );
+		 */
+		"fnCreatedCell": null,
+	
+	
+		/**
+		 * This parameter has been replaced by `data` in DataTables to ensure naming
+		 * consistency. `dataProp` can still be used, as there is backwards
+		 * compatibility in DataTables for this option, but it is strongly
+		 * recommended that you use `data` in preference to `dataProp`.
+		 *  @name DataTable.defaults.column.dataProp
+		 */
+	
+	
+		/**
+		 * This property can be used to read data from any data source property,
+		 * including deeply nested objects / properties. `data` can be given in a
+		 * number of different ways which effect its behaviour:
+		 *
+		 * * `integer` - treated as an array index for the data source. This is the
+		 *   default that DataTables uses (incrementally increased for each column).
+		 * * `string` - read an object property from the data source. There are
+		 *   three 'special' options that can be used in the string to alter how
+		 *   DataTables reads the data from the source object:
+		 *    * `.` - Dotted Javascript notation. Just as you use a `.` in
+		 *      Javascript to read from nested objects, so to can the options
+		 *      specified in `data`. For example: `browser.version` or
+		 *      `browser.name`. If your object parameter name contains a period, use
+		 *      `\\` to escape it - i.e. `first\\.name`.
+		 *    * `[]` - Array notation. DataTables can automatically combine data
+		 *      from and array source, joining the data with the characters provided
+		 *      between the two brackets. For example: `name[, ]` would provide a
+		 *      comma-space separated list from the source array. If no characters
+		 *      are provided between the brackets, the original array source is
+		 *      returned.
+		 *    * `()` - Function notation. Adding `()` to the end of a parameter will
+		 *      execute a function of the name given. For example: `browser()` for a
+		 *      simple function on the data source, `browser.version()` for a
+		 *      function in a nested property or even `browser().version` to get an
+		 *      object property if the function called returns an object. Note that
+		 *      function notation is recommended for use in `render` rather than
+		 *      `data` as it is much simpler to use as a renderer.
+		 * * `null` - use the original data source for the row rather than plucking
+		 *   data directly from it. This action has effects on two other
+		 *   initialisation options:
+		 *    * `defaultContent` - When null is given as the `data` option and
+		 *      `defaultContent` is specified for the column, the value defined by
+		 *      `defaultContent` will be used for the cell.
+		 *    * `render` - When null is used for the `data` option and the `render`
+		 *      option is specified for the column, the whole data source for the
+		 *      row is used for the renderer.
+		 * * `function` - the function given will be executed whenever DataTables
+		 *   needs to set or get the data for a cell in the column. The function
+		 *   takes three parameters:
+		 *    * Parameters:
+		 *      * `{array|object}` The data source for the row
+		 *      * `{string}` The type call data requested - this will be 'set' when
+		 *        setting data or 'filter', 'display', 'type', 'sort' or undefined
+		 *        when gathering data. Note that when `undefined` is given for the
+		 *        type DataTables expects to get the raw data for the object back<
+		 *      * `{*}` Data to set when the second parameter is 'set'.
+		 *    * Return:
+		 *      * The return value from the function is not required when 'set' is
+		 *        the type of call, but otherwise the return is what will be used
+		 *        for the data requested.
+		 *
+		 * Note that `data` is a getter and setter option. If you just require
+		 * formatting of data for output, you will likely want to use `render` which
+		 * is simply a getter and thus simpler to use.
+		 *
+		 * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The
+		 * name change reflects the flexibility of this property and is consistent
+		 * with the naming of mRender. If 'mDataProp' is given, then it will still
+		 * be used by DataTables, as it automatically maps the old name to the new
+		 * if required.
+		 *
+		 *  @type string|int|function|null
+		 *  @default null <i>Use automatically calculated column index</i>
+		 *
+		 *  @name DataTable.defaults.column.data
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Read table data from objects
+		 *    // JSON structure for each row:
+		 *    //   {
+		 *    //      "engine": {value},
+		 *    //      "browser": {value},
+		 *    //      "platform": {value},
+		 *    //      "version": {value},
+		 *    //      "grade": {value}
+		 *    //   }
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajaxSource": "sources/objects.txt",
+		 *        "columns": [
+		 *          { "data": "engine" },
+		 *          { "data": "browser" },
+		 *          { "data": "platform" },
+		 *          { "data": "version" },
+		 *          { "data": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Read information from deeply nested objects
+		 *    // JSON structure for each row:
+		 *    //   {
+		 *    //      "engine": {value},
+		 *    //      "browser": {value},
+		 *    //      "platform": {
+		 *    //         "inner": {value}
+		 *    //      },
+		 *    //      "details": [
+		 *    //         {value}, {value}
+		 *    //      ]
+		 *    //   }
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajaxSource": "sources/deep.txt",
+		 *        "columns": [
+		 *          { "data": "engine" },
+		 *          { "data": "browser" },
+		 *          { "data": "platform.inner" },
+		 *          { "data": "details.0" },
+		 *          { "data": "details.1" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `data` as a function to provide different information for
+		 *    // sorting, filtering and display. In this case, currency (price)
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": function ( source, type, val ) {
+		 *            if (type === 'set') {
+		 *              source.price = val;
+		 *              // Store the computed dislay and filter values for efficiency
+		 *              source.price_display = val=="" ? "" : "$"+numberFormat(val);
+		 *              source.price_filter  = val=="" ? "" : "$"+numberFormat(val)+" "+val;
+		 *              return;
+		 *            }
+		 *            else if (type === 'display') {
+		 *              return source.price_display;
+		 *            }
+		 *            else if (type === 'filter') {
+		 *              return source.price_filter;
+		 *            }
+		 *            // 'sort', 'type' and undefined all just use the integer
+		 *            return source.price;
+		 *          }
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using default content
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": null,
+		 *          "defaultContent": "Click to edit"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using array notation - outputting a list from an array
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": "name[, ]"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 */
+		"mData": null,
+	
+	
+		/**
+		 * This property is the rendering partner to `data` and it is suggested that
+		 * when you want to manipulate data for display (including filtering,
+		 * sorting etc) without altering the underlying data for the table, use this
+		 * property. `render` can be considered to be the the read only companion to
+		 * `data` which is read / write (then as such more complex). Like `data`
+		 * this option can be given in a number of different ways to effect its
+		 * behaviour:
+		 *
+		 * * `integer` - treated as an array index for the data source. This is the
+		 *   default that DataTables uses (incrementally increased for each column).
+		 * * `string` - read an object property from the data source. There are
+		 *   three 'special' options that can be used in the string to alter how
+		 *   DataTables reads the data from the source object:
+		 *    * `.` - Dotted Javascript notation. Just as you use a `.` in
+		 *      Javascript to read from nested objects, so to can the options
+		 *      specified in `data`. For example: `browser.version` or
+		 *      `browser.name`. If your object parameter name contains a period, use
+		 *      `\\` to escape it - i.e. `first\\.name`.
+		 *    * `[]` - Array notation. DataTables can automatically combine data
+		 *      from and array source, joining the data with the characters provided
+		 *      between the two brackets. For example: `name[, ]` would provide a
+		 *      comma-space separated list from the source array. If no characters
+		 *      are provided between the brackets, the original array source is
+		 *      returned.
+		 *    * `()` - Function notation. Adding `()` to the end of a parameter will
+		 *      execute a function of the name given. For example: `browser()` for a
+		 *      simple function on the data source, `browser.version()` for a
+		 *      function in a nested property or even `browser().version` to get an
+		 *      object property if the function called returns an object.
+		 * * `object` - use different data for the different data types requested by
+		 *   DataTables ('filter', 'display', 'type' or 'sort'). The property names
+		 *   of the object is the data type the property refers to and the value can
+		 *   defined using an integer, string or function using the same rules as
+		 *   `render` normally does. Note that an `_` option _must_ be specified.
+		 *   This is the default value to use if you haven't specified a value for
+		 *   the data type requested by DataTables.
+		 * * `function` - the function given will be executed whenever DataTables
+		 *   needs to set or get the data for a cell in the column. The function
+		 *   takes three parameters:
+		 *    * Parameters:
+		 *      * {array|object} The data source for the row (based on `data`)
+		 *      * {string} The type call data requested - this will be 'filter',
+		 *        'display', 'type' or 'sort'.
+		 *      * {array|object} The full data source for the row (not based on
+		 *        `data`)
+		 *    * Return:
+		 *      * The return value from the function is what will be used for the
+		 *        data requested.
+		 *
+		 *  @type string|int|function|object|null
+		 *  @default null Use the data source value.
+		 *
+		 *  @name DataTable.defaults.column.render
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Create a comma separated list from an array of objects
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajaxSource": "sources/deep.txt",
+		 *        "columns": [
+		 *          { "data": "engine" },
+		 *          { "data": "browser" },
+		 *          {
+		 *            "data": "platform",
+		 *            "render": "[, ].name"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Execute a function to obtain data
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": null, // Use the full data source object for the renderer's source
+		 *          "render": "browserName()"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // As an object, extracting different data for the different types
+		 *    // This would be used with a data source such as:
+		 *    //   { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" }
+		 *    // Here the `phone` integer is used for sorting and type detection, while `phone_filter`
+		 *    // (which has both forms) is used for filtering for if a user inputs either format, while
+		 *    // the formatted phone number is the one that is shown in the table.
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": null, // Use the full data source object for the renderer's source
+		 *          "render": {
+		 *            "_": "phone",
+		 *            "filter": "phone_filter",
+		 *            "display": "phone_display"
+		 *          }
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Use as a function to create a link from the data source
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": "download_link",
+		 *          "render": function ( data, type, full ) {
+		 *            return '<a href="'+data+'">Download</a>';
+		 *          }
+		 *        } ]
+		 *      } );
+		 *    } );
+		 */
+		"mRender": null,
+	
+	
+		/**
+		 * Change the cell type created for the column - either TD cells or TH cells. This
+		 * can be useful as TH cells have semantic meaning in the table body, allowing them
+		 * to act as a header for a row (you may wish to add scope='row' to the TH elements).
+		 *  @type string
+		 *  @default td
+		 *
+		 *  @name DataTable.defaults.column.cellType
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Make the first column use TH cells
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "cellType": "th"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 */
+		"sCellType": "td",
+	
+	
+		/**
+		 * Class to give to each cell in this column.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *
+		 *  @name DataTable.defaults.column.class
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "class": "my_class", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "class": "my_class" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sClass": "",
+	
+		/**
+		 * When DataTables calculates the column widths to assign to each column,
+		 * it finds the longest string in each column and then constructs a
+		 * temporary table and reads the widths from that. The problem with this
+		 * is that "mmm" is much wider then "iiii", but the latter is a longer
+		 * string - thus the calculation can go wrong (doing it properly and putting
+		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
+		 * a "work around" we provide this option. It will append its value to the
+		 * text that is found to be the longest string for the column - i.e. padding.
+		 * Generally you shouldn't need this!
+		 *  @type string
+		 *  @default <i>Empty string<i>
+		 *
+		 *  @name DataTable.defaults.column.contentPadding
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          {
+		 *            "contentPadding": "mmm"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sContentPadding": "",
+	
+	
+		/**
+		 * Allows a default value to be given for a column's data, and will be used
+		 * whenever a null data source is encountered (this can be because `data`
+		 * is set to null, or because the data source itself is null).
+		 *  @type string
+		 *  @default null
+		 *
+		 *  @name DataTable.defaults.column.defaultContent
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          {
+		 *            "data": null,
+		 *            "defaultContent": "Edit",
+		 *            "targets": [ -1 ]
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          {
+		 *            "data": null,
+		 *            "defaultContent": "Edit"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sDefaultContent": null,
+	
+	
+		/**
+		 * This parameter is only used in DataTables' server-side processing. It can
+		 * be exceptionally useful to know what columns are being displayed on the
+		 * client side, and to map these to database fields. When defined, the names
+		 * also allow DataTables to reorder information from the server if it comes
+		 * back in an unexpected order (i.e. if you switch your columns around on the
+		 * client-side, your server-side code does not also need updating).
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *
+		 *  @name DataTable.defaults.column.name
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "name": "engine", "targets": [ 0 ] },
+		 *          { "name": "browser", "targets": [ 1 ] },
+		 *          { "name": "platform", "targets": [ 2 ] },
+		 *          { "name": "version", "targets": [ 3 ] },
+		 *          { "name": "grade", "targets": [ 4 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "name": "engine" },
+		 *          { "name": "browser" },
+		 *          { "name": "platform" },
+		 *          { "name": "version" },
+		 *          { "name": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sName": "",
+	
+	
+		/**
+		 * Defines a data source type for the ordering which can be used to read
+		 * real-time information from the table (updating the internally cached
+		 * version) prior to ordering. This allows ordering to occur on user
+		 * editable elements such as form inputs.
+		 *  @type string
+		 *  @default std
+		 *
+		 *  @name DataTable.defaults.column.orderDataType
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderDataType": "dom-text", "targets": [ 2, 3 ] },
+		 *          { "type": "numeric", "targets": [ 3 ] },
+		 *          { "orderDataType": "dom-select", "targets": [ 4 ] },
+		 *          { "orderDataType": "dom-checkbox", "targets": [ 5 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          null,
+		 *          { "orderDataType": "dom-text" },
+		 *          { "orderDataType": "dom-text", "type": "numeric" },
+		 *          { "orderDataType": "dom-select" },
+		 *          { "orderDataType": "dom-checkbox" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sSortDataType": "std",
+	
+	
+		/**
+		 * The title of this column.
+		 *  @type string
+		 *  @default null <i>Derived from the 'TH' value for this column in the
+		 *    original HTML table.</i>
+		 *
+		 *  @name DataTable.defaults.column.title
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "title": "My column title", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "title": "My column title" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sTitle": null,
+	
+	
+		/**
+		 * The type allows you to specify how the data for this column will be
+		 * ordered. Four types (string, numeric, date and html (which will strip
+		 * HTML tags before ordering)) are currently available. Note that only date
+		 * formats understood by Javascript's Date() object will be accepted as type
+		 * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string',
+		 * 'numeric', 'date' or 'html' (by default). Further types can be adding
+		 * through plug-ins.
+		 *  @type string
+		 *  @default null <i>Auto-detected from raw data</i>
+		 *
+		 *  @name DataTable.defaults.column.type
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "type": "html", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "type": "html" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sType": null,
+	
+	
+		/**
+		 * Defining the width of the column, this parameter may take any CSS value
+		 * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not
+		 * been given a specific width through this interface ensuring that the table
+		 * remains readable.
+		 *  @type string
+		 *  @default null <i>Automatic</i>
+		 *
+		 *  @name DataTable.defaults.column.width
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "width": "20%", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "width": "20%" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sWidth": null
+	};
+	
+	_fnHungarianMap( DataTable.defaults.column );
+	
+	
+	
+	/**
+	 * DataTables settings object - this holds all the information needed for a
+	 * given table, including configuration, data and current application of the
+	 * table options. DataTables does not have a single instance for each DataTable
+	 * with the settings attached to that instance, but rather instances of the
+	 * DataTable "class" are created on-the-fly as needed (typically by a
+	 * $().dataTable() call) and the settings object is then applied to that
+	 * instance.
+	 *
+	 * Note that this object is related to {@link DataTable.defaults} but this
+	 * one is the internal data store for DataTables's cache of columns. It should
+	 * NOT be manipulated outside of DataTables. Any configuration should be done
+	 * through the initialisation options.
+	 *  @namespace
+	 *  @todo Really should attach the settings object to individual instances so we
+	 *    don't need to create new instances on each $().dataTable() call (if the
+	 *    table already exists). It would also save passing oSettings around and
+	 *    into every single function. However, this is a very significant
+	 *    architecture change for DataTables and will almost certainly break
+	 *    backwards compatibility with older installations. This is something that
+	 *    will be done in 2.0.
+	 */
+	DataTable.models.oSettings = {
+		/**
+		 * Primary features of DataTables and their enablement state.
+		 *  @namespace
+		 */
+		"oFeatures": {
+	
+			/**
+			 * Flag to say if DataTables should automatically try to calculate the
+			 * optimum table and columns widths (true) or not (false).
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bAutoWidth": null,
+	
+			/**
+			 * Delay the creation of TR and TD elements until they are actually
+			 * needed by a driven page draw. This can give a significant speed
+			 * increase for Ajax source and Javascript source data, but makes no
+			 * difference at all fro DOM and server-side processing tables.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bDeferRender": null,
+	
+			/**
+			 * Enable filtering on the table or not. Note that if this is disabled
+			 * then there is no filtering at all on the table, including fnFilter.
+			 * To just remove the filtering input use sDom and remove the 'f' option.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bFilter": null,
+	
+			/**
+			 * Table information element (the 'Showing x of y records' div) enable
+			 * flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bInfo": null,
+	
+			/**
+			 * Present a user control allowing the end user to change the page size
+			 * when pagination is enabled.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bLengthChange": null,
+	
+			/**
+			 * Pagination enabled or not. Note that if this is disabled then length
+			 * changing must also be disabled.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bPaginate": null,
+	
+			/**
+			 * Processing indicator enable flag whenever DataTables is enacting a
+			 * user request - typically an Ajax request for server-side processing.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bProcessing": null,
+	
+			/**
+			 * Server-side processing enabled flag - when enabled DataTables will
+			 * get all data from the server for every draw - there is no filtering,
+			 * sorting or paging done on the client-side.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bServerSide": null,
+	
+			/**
+			 * Sorting enablement flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSort": null,
+	
+			/**
+			 * Multi-column sorting
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSortMulti": null,
+	
+			/**
+			 * Apply a class to the columns which are being sorted to provide a
+			 * visual highlight or not. This can slow things down when enabled since
+			 * there is a lot of DOM interaction.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSortClasses": null,
+	
+			/**
+			 * State saving enablement flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bStateSave": null
+		},
+	
+	
+		/**
+		 * Scrolling settings for a table.
+		 *  @namespace
+		 */
+		"oScroll": {
+			/**
+			 * When the table is shorter in height than sScrollY, collapse the
+			 * table container down to the height of the table (when true).
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bCollapse": null,
+	
+			/**
+			 * Width of the scrollbar for the web-browser's platform. Calculated
+			 * during table initialisation.
+			 *  @type int
+			 *  @default 0
+			 */
+			"iBarWidth": 0,
+	
+			/**
+			 * Viewport width for horizontal scrolling. Horizontal scrolling is
+			 * disabled if an empty string.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 */
+			"sX": null,
+	
+			/**
+			 * Width to expand the table to when using x-scrolling. Typically you
+			 * should not need to use this.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 *  @deprecated
+			 */
+			"sXInner": null,
+	
+			/**
+			 * Viewport height for vertical scrolling. Vertical scrolling is disabled
+			 * if an empty string.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 */
+			"sY": null
+		},
+	
+		/**
+		 * Language information for the table.
+		 *  @namespace
+		 *  @extends DataTable.defaults.oLanguage
+		 */
+		"oLanguage": {
+			/**
+			 * Information callback function. See
+			 * {@link DataTable.defaults.fnInfoCallback}
+			 *  @type function
+			 *  @default null
+			 */
+			"fnInfoCallback": null
+		},
+	
+		/**
+		 * Browser support parameters
+		 *  @namespace
+		 */
+		"oBrowser": {
+			/**
+			 * Indicate if the browser incorrectly calculates width:100% inside a
+			 * scrolling element (IE6/7)
+			 *  @type boolean
+			 *  @default false
+			 */
+			"bScrollOversize": false,
+	
+			/**
+			 * Determine if the vertical scrollbar is on the right or left of the
+			 * scrolling container - needed for rtl language layout, although not
+			 * all browsers move the scrollbar (Safari).
+			 *  @type boolean
+			 *  @default false
+			 */
+			"bScrollbarLeft": false,
+	
+			/**
+			 * Flag for if `getBoundingClientRect` is fully supported or not
+			 *  @type boolean
+			 *  @default false
+			 */
+			"bBounding": false,
+	
+			/**
+			 * Browser scrollbar width
+			 *  @type integer
+			 *  @default 0
+			 */
+			"barWidth": 0
+		},
+	
+	
+		"ajax": null,
+	
+	
+		/**
+		 * Array referencing the nodes which are used for the features. The
+		 * parameters of this object match what is allowed by sDom - i.e.
+		 *   <ul>
+		 *     <li>'l' - Length changing</li>
+		 *     <li>'f' - Filtering input</li>
+		 *     <li>'t' - The table!</li>
+		 *     <li>'i' - Information</li>
+		 *     <li>'p' - Pagination</li>
+		 *     <li>'r' - pRocessing</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aanFeatures": [],
+	
+		/**
+		 * Store data information - see {@link DataTable.models.oRow} for detailed
+		 * information.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoData": [],
+	
+		/**
+		 * Array of indexes which are in the current display (after filtering etc)
+		 *  @type array
+		 *  @default []
+		 */
+		"aiDisplay": [],
+	
+		/**
+		 * Array of indexes for display - no filtering
+		 *  @type array
+		 *  @default []
+		 */
+		"aiDisplayMaster": [],
+	
+		/**
+		 * Map of row ids to data indexes
+		 *  @type object
+		 *  @default {}
+		 */
+		"aIds": {},
+	
+		/**
+		 * Store information about each column that is in use
+		 *  @type array
+		 *  @default []
+		 */
+		"aoColumns": [],
+	
+		/**
+		 * Store information about the table's header
+		 *  @type array
+		 *  @default []
+		 */
+		"aoHeader": [],
+	
+		/**
+		 * Store information about the table's footer
+		 *  @type array
+		 *  @default []
+		 */
+		"aoFooter": [],
+	
+		/**
+		 * Store the applied global search information in case we want to force a
+		 * research or compare the old search to a new one.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @namespace
+		 *  @extends DataTable.models.oSearch
+		 */
+		"oPreviousSearch": {},
+	
+		/**
+		 * Store the applied search for each column - see
+		 * {@link DataTable.models.oSearch} for the format that is used for the
+		 * filtering information for each column.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoPreSearchCols": [],
+	
+		/**
+		 * Sorting that is applied to the table. Note that the inner arrays are
+		 * used in the following manner:
+		 * <ul>
+		 *   <li>Index 0 - column number</li>
+		 *   <li>Index 1 - current sorting direction</li>
+		 * </ul>
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @todo These inner arrays should really be objects
+		 */
+		"aaSorting": null,
+	
+		/**
+		 * Sorting that is always applied to the table (i.e. prefixed in front of
+		 * aaSorting).
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"aaSortingFixed": [],
+	
+		/**
+		 * Classes to use for the striping of a table.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"asStripeClasses": null,
+	
+		/**
+		 * If restoring a table - we should restore its striping classes as well
+		 *  @type array
+		 *  @default []
+		 */
+		"asDestroyStripes": [],
+	
+		/**
+		 * If restoring a table - we should restore its width
+		 *  @type int
+		 *  @default 0
+		 */
+		"sDestroyWidth": 0,
+	
+		/**
+		 * Callback functions array for every time a row is inserted (i.e. on a draw).
+		 *  @type array
+		 *  @default []
+		 */
+		"aoRowCallback": [],
+	
+		/**
+		 * Callback functions for the header on each draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoHeaderCallback": [],
+	
+		/**
+		 * Callback function for the footer on each draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoFooterCallback": [],
+	
+		/**
+		 * Array of callback functions for draw callback functions
+		 *  @type array
+		 *  @default []
+		 */
+		"aoDrawCallback": [],
+	
+		/**
+		 * Array of callback functions for row created function
+		 *  @type array
+		 *  @default []
+		 */
+		"aoRowCreatedCallback": [],
+	
+		/**
+		 * Callback functions for just before the table is redrawn. A return of
+		 * false will be used to cancel the draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoPreDrawCallback": [],
+	
+		/**
+		 * Callback functions for when the table has been initialised.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoInitComplete": [],
+	
+	
+		/**
+		 * Callbacks for modifying the settings to be stored for state saving, prior to
+		 * saving state.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateSaveParams": [],
+	
+		/**
+		 * Callbacks for modifying the settings that have been stored for state saving
+		 * prior to using the stored values to restore the state.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoadParams": [],
+	
+		/**
+		 * Callbacks for operating on the settings object once the saved state has been
+		 * loaded
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoaded": [],
+	
+		/**
+		 * Cache the table ID for quick access
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sTableId": "",
+	
+		/**
+		 * The TABLE node for the main table
+		 *  @type node
+		 *  @default null
+		 */
+		"nTable": null,
+	
+		/**
+		 * Permanent ref to the thead element
+		 *  @type node
+		 *  @default null
+		 */
+		"nTHead": null,
+	
+		/**
+		 * Permanent ref to the tfoot element - if it exists
+		 *  @type node
+		 *  @default null
+		 */
+		"nTFoot": null,
+	
+		/**
+		 * Permanent ref to the tbody element
+		 *  @type node
+		 *  @default null
+		 */
+		"nTBody": null,
+	
+		/**
+		 * Cache the wrapper node (contains all DataTables controlled elements)
+		 *  @type node
+		 *  @default null
+		 */
+		"nTableWrapper": null,
+	
+		/**
+		 * Indicate if when using server-side processing the loading of data
+		 * should be deferred until the second draw.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bDeferLoading": false,
+	
+		/**
+		 * Indicate if all required information has been read in
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bInitialised": false,
+	
+		/**
+		 * Information about open rows. Each object in the array has the parameters
+		 * 'nTr' and 'nParent'
+		 *  @type array
+		 *  @default []
+		 */
+		"aoOpenRows": [],
+	
+		/**
+		 * Dictate the positioning of DataTables' control elements - see
+		 * {@link DataTable.model.oInit.sDom}.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default null
+		 */
+		"sDom": null,
+	
+		/**
+		 * Search delay (in mS)
+		 *  @type integer
+		 *  @default null
+		 */
+		"searchDelay": null,
+	
+		/**
+		 * Which type of pagination should be used.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default two_button
+		 */
+		"sPaginationType": "two_button",
+	
+		/**
+		 * The state duration (for `stateSave`) in seconds.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type int
+		 *  @default 0
+		 */
+		"iStateDuration": 0,
+	
+		/**
+		 * Array of callback functions for state saving. Each array element is an
+		 * object with the following parameters:
+		 *   <ul>
+		 *     <li>function:fn - function to call. Takes two parameters, oSettings
+		 *       and the JSON string to save that has been thus far created. Returns
+		 *       a JSON string to be inserted into a json object
+		 *       (i.e. '"param": [ 0, 1, 2]')</li>
+		 *     <li>string:sName - name of callback</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateSave": [],
+	
+		/**
+		 * Array of callback functions for state loading. Each array element is an
+		 * object with the following parameters:
+		 *   <ul>
+		 *     <li>function:fn - function to call. Takes two parameters, oSettings
+		 *       and the object stored. May return false to cancel state loading</li>
+		 *     <li>string:sName - name of callback</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoad": [],
+	
+		/**
+		 * State that was saved. Useful for back reference
+		 *  @type object
+		 *  @default null
+		 */
+		"oSavedState": null,
+	
+		/**
+		 * State that was loaded. Useful for back reference
+		 *  @type object
+		 *  @default null
+		 */
+		"oLoadedState": null,
+	
+		/**
+		 * Source url for AJAX data for the table.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default null
+		 */
+		"sAjaxSource": null,
+	
+		/**
+		 * Property from a given object from which to read the table data from. This
+		 * can be an empty string (when not server-side processing), in which case
+		 * it is  assumed an an array is given directly.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 */
+		"sAjaxDataProp": null,
+	
+		/**
+		 * Note if draw should be blocked while getting data
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bAjaxDataGet": true,
+	
+		/**
+		 * The last jQuery XHR object that was used for server-side data gathering.
+		 * This can be used for working with the XHR information in one of the
+		 * callbacks
+		 *  @type object
+		 *  @default null
+		 */
+		"jqXHR": null,
+	
+		/**
+		 * JSON returned from the server in the last Ajax request
+		 *  @type object
+		 *  @default undefined
+		 */
+		"json": undefined,
+	
+		/**
+		 * Data submitted as part of the last Ajax request
+		 *  @type object
+		 *  @default undefined
+		 */
+		"oAjaxData": undefined,
+	
+		/**
+		 * Function to get the server-side data.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 */
+		"fnServerData": null,
+	
+		/**
+		 * Functions which are called prior to sending an Ajax request so extra
+		 * parameters can easily be sent to the server
+		 *  @type array
+		 *  @default []
+		 */
+		"aoServerParams": [],
+	
+		/**
+		 * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if
+		 * required).
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 */
+		"sServerMethod": null,
+	
+		/**
+		 * Format numbers for display.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 */
+		"fnFormatNumber": null,
+	
+		/**
+		 * List of options that can be used for the user selectable length menu.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"aLengthMenu": null,
+	
+		/**
+		 * Counter for the draws that the table does. Also used as a tracker for
+		 * server-side processing
+		 *  @type int
+		 *  @default 0
+		 */
+		"iDraw": 0,
+	
+		/**
+		 * Indicate if a redraw is being done - useful for Ajax
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bDrawing": false,
+	
+		/**
+		 * Draw index (iDraw) of the last error when parsing the returned data
+		 *  @type int
+		 *  @default -1
+		 */
+		"iDrawError": -1,
+	
+		/**
+		 * Paging display length
+		 *  @type int
+		 *  @default 10
+		 */
+		"_iDisplayLength": 10,
+	
+		/**
+		 * Paging start point - aiDisplay index
+		 *  @type int
+		 *  @default 0
+		 */
+		"_iDisplayStart": 0,
+	
+		/**
+		 * Server-side processing - number of records in the result set
+		 * (i.e. before filtering), Use fnRecordsTotal rather than
+		 * this property to get the value of the number of records, regardless of
+		 * the server-side processing setting.
+		 *  @type int
+		 *  @default 0
+		 *  @private
+		 */
+		"_iRecordsTotal": 0,
+	
+		/**
+		 * Server-side processing - number of records in the current display set
+		 * (i.e. after filtering). Use fnRecordsDisplay rather than
+		 * this property to get the value of the number of records, regardless of
+		 * the server-side processing setting.
+		 *  @type boolean
+		 *  @default 0
+		 *  @private
+		 */
+		"_iRecordsDisplay": 0,
+	
+		/**
+		 * The classes to use for the table
+		 *  @type object
+		 *  @default {}
+		 */
+		"oClasses": {},
+	
+		/**
+		 * Flag attached to the settings object so you can check in the draw
+		 * callback if filtering has been done in the draw. Deprecated in favour of
+		 * events.
+		 *  @type boolean
+		 *  @default false
+		 *  @deprecated
+		 */
+		"bFiltered": false,
+	
+		/**
+		 * Flag attached to the settings object so you can check in the draw
+		 * callback if sorting has been done in the draw. Deprecated in favour of
+		 * events.
+		 *  @type boolean
+		 *  @default false
+		 *  @deprecated
+		 */
+		"bSorted": false,
+	
+		/**
+		 * Indicate that if multiple rows are in the header and there is more than
+		 * one unique cell per column, if the top one (true) or bottom one (false)
+		 * should be used for sorting / title by DataTables.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 */
+		"bSortCellsTop": null,
+	
+		/**
+		 * Initialisation object that is used for the table
+		 *  @type object
+		 *  @default null
+		 */
+		"oInit": null,
+	
+		/**
+		 * Destroy callback functions - for plug-ins to attach themselves to the
+		 * destroy so they can clean up markup and events.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoDestroyCallback": [],
+	
+	
+		/**
+		 * Get the number of records in the current record set, before filtering
+		 *  @type function
+		 */
+		"fnRecordsTotal": function ()
+		{
+			return _fnDataSource( this ) == 'ssp' ?
+				this._iRecordsTotal * 1 :
+				this.aiDisplayMaster.length;
+		},
+	
+		/**
+		 * Get the number of records in the current record set, after filtering
+		 *  @type function
+		 */
+		"fnRecordsDisplay": function ()
+		{
+			return _fnDataSource( this ) == 'ssp' ?
+				this._iRecordsDisplay * 1 :
+				this.aiDisplay.length;
+		},
+	
+		/**
+		 * Get the display end point - aiDisplay index
+		 *  @type function
+		 */
+		"fnDisplayEnd": function ()
+		{
+			var
+				len      = this._iDisplayLength,
+				start    = this._iDisplayStart,
+				calc     = start + len,
+				records  = this.aiDisplay.length,
+				features = this.oFeatures,
+				paginate = features.bPaginate;
+	
+			if ( features.bServerSide ) {
+				return paginate === false || len === -1 ?
+					start + records :
+					Math.min( start+len, this._iRecordsDisplay );
+			}
+			else {
+				return ! paginate || calc>records || len===-1 ?
+					records :
+					calc;
+			}
+		},
+	
+		/**
+		 * The DataTables object for this table
+		 *  @type object
+		 *  @default null
+		 */
+		"oInstance": null,
+	
+		/**
+		 * Unique identifier for each instance of the DataTables object. If there
+		 * is an ID on the table node, then it takes that value, otherwise an
+		 * incrementing internal counter is used.
+		 *  @type string
+		 *  @default null
+		 */
+		"sInstance": null,
+	
+		/**
+		 * tabindex attribute value that is added to DataTables control elements, allowing
+		 * keyboard navigation of the table and its controls.
+		 */
+		"iTabIndex": 0,
+	
+		/**
+		 * DIV container for the footer scrolling table if scrolling
+		 */
+		"nScrollHead": null,
+	
+		/**
+		 * DIV container for the footer scrolling table if scrolling
+		 */
+		"nScrollFoot": null,
+	
+		/**
+		 * Last applied sort
+		 *  @type array
+		 *  @default []
+		 */
+		"aLastSort": [],
+	
+		/**
+		 * Stored plug-in instances
+		 *  @type object
+		 *  @default {}
+		 */
+		"oPlugins": {},
+	
+		/**
+		 * Function used to get a row's id from the row's data
+		 *  @type function
+		 *  @default null
+		 */
+		"rowIdFn": null,
+	
+		/**
+		 * Data location where to store a row's id
+		 *  @type string
+		 *  @default null
+		 */
+		"rowId": null
+	};
+
+	/**
+	 * Extension object for DataTables that is used to provide all extension
+	 * options.
+	 *
+	 * Note that the `DataTable.ext` object is available through
+	 * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is
+	 * also aliased to `jQuery.fn.dataTableExt` for historic reasons.
+	 *  @namespace
+	 *  @extends DataTable.models.ext
+	 */
+	
+	
+	/**
+	 * DataTables extensions
+	 * 
+	 * This namespace acts as a collection area for plug-ins that can be used to
+	 * extend DataTables capabilities. Indeed many of the build in methods
+	 * use this method to provide their own capabilities (sorting methods for
+	 * example).
+	 *
+	 * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy
+	 * reasons
+	 *
+	 *  @namespace
+	 */
+	DataTable.ext = _ext = {
+		/**
+		 * Buttons. For use with the Buttons extension for DataTables. This is
+		 * defined here so other extensions can define buttons regardless of load
+		 * order. It is _not_ used by DataTables core.
+		 *
+		 *  @type object
+		 *  @default {}
+		 */
+		buttons: {},
+	
+	
+		/**
+		 * Element class names
+		 *
+		 *  @type object
+		 *  @default {}
+		 */
+		classes: {},
+	
+	
+		/**
+		 * DataTables build type (expanded by the download builder)
+		 *
+		 *  @type string
+		 */
+		build:"bs4/jszip-2.5.0/pdfmake-0.1.36/dt-1.10.20/af-2.3.4/b-1.6.1/b-colvis-1.6.1/b-flash-1.6.1/b-html5-1.6.1/b-print-1.6.1/cr-1.5.2/fc-3.3.0/fh-3.1.6/kt-2.5.1/r-2.2.3/rg-1.1.1/rr-1.2.6/sc-2.0.1/sp-1.0.1/sl-1.3.1",
+	
+	
+		/**
+		 * Error reporting.
+		 * 
+		 * How should DataTables report an error. Can take the value 'alert',
+		 * 'throw', 'none' or a function.
+		 *
+		 *  @type string|function
+		 *  @default alert
+		 */
+		errMode: "alert",
+	
+	
+		/**
+		 * Feature plug-ins.
+		 * 
+		 * This is an array of objects which describe the feature plug-ins that are
+		 * available to DataTables. These feature plug-ins are then available for
+		 * use through the `dom` initialisation option.
+		 * 
+		 * Each feature plug-in is described by an object which must have the
+		 * following properties:
+		 * 
+		 * * `fnInit` - function that is used to initialise the plug-in,
+		 * * `cFeature` - a character so the feature can be enabled by the `dom`
+		 *   instillation option. This is case sensitive.
+		 *
+		 * The `fnInit` function has the following input parameters:
+		 *
+		 * 1. `{object}` DataTables settings object: see
+		 *    {@link DataTable.models.oSettings}
+		 *
+		 * And the following return is expected:
+		 * 
+		 * * {node|null} The element which contains your feature. Note that the
+		 *   return may also be void if your plug-in does not require to inject any
+		 *   DOM elements into DataTables control (`dom`) - for example this might
+		 *   be useful when developing a plug-in which allows table control via
+		 *   keyboard entry
+		 *
+		 *  @type array
+		 *
+		 *  @example
+		 *    $.fn.dataTable.ext.features.push( {
+		 *      "fnInit": function( oSettings ) {
+		 *        return new TableTools( { "oDTSettings": oSettings } );
+		 *      },
+		 *      "cFeature": "T"
+		 *    } );
+		 */
+		feature: [],
+	
+	
+		/**
+		 * Row searching.
+		 * 
+		 * This method of searching is complimentary to the default type based
+		 * searching, and a lot more comprehensive as it allows you complete control
+		 * over the searching logic. Each element in this array is a function
+		 * (parameters described below) that is called for every row in the table,
+		 * and your logic decides if it should be included in the searching data set
+		 * or not.
+		 *
+		 * Searching functions have the following input parameters:
+		 *
+		 * 1. `{object}` DataTables settings object: see
+		 *    {@link DataTable.models.oSettings}
+		 * 2. `{array|object}` Data for the row to be processed (same as the
+		 *    original format that was passed in as the data source, or an array
+		 *    from a DOM data source
+		 * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which
+		 *    can be useful to retrieve the `TR` element if you need DOM interaction.
+		 *
+		 * And the following return is expected:
+		 *
+		 * * {boolean} Include the row in the searched result set (true) or not
+		 *   (false)
+		 *
+		 * Note that as with the main search ability in DataTables, technically this
+		 * is "filtering", since it is subtractive. However, for consistency in
+		 * naming we call it searching here.
+		 *
+		 *  @type array
+		 *  @default []
+		 *
+		 *  @example
+		 *    // The following example shows custom search being applied to the
+		 *    // fourth column (i.e. the data[3] index) based on two input values
+		 *    // from the end-user, matching the data in a certain range.
+		 *    $.fn.dataTable.ext.search.push(
+		 *      function( settings, data, dataIndex ) {
+		 *        var min = document.getElementById('min').value * 1;
+		 *        var max = document.getElementById('max').value * 1;
+		 *        var version = data[3] == "-" ? 0 : data[3]*1;
+		 *
+		 *        if ( min == "" && max == "" ) {
+		 *          return true;
+		 *        }
+		 *        else if ( min == "" && version < max ) {
+		 *          return true;
+		 *        }
+		 *        else if ( min < version && "" == max ) {
+		 *          return true;
+		 *        }
+		 *        else if ( min < version && version < max ) {
+		 *          return true;
+		 *        }
+		 *        return false;
+		 *      }
+		 *    );
+		 */
+		search: [],
+	
+	
+		/**
+		 * Selector extensions
+		 *
+		 * The `selector` option can be used to extend the options available for the
+		 * selector modifier options (`selector-modifier` object data type) that
+		 * each of the three built in selector types offer (row, column and cell +
+		 * their plural counterparts). For example the Select extension uses this
+		 * mechanism to provide an option to select only rows, columns and cells
+		 * that have been marked as selected by the end user (`{selected: true}`),
+		 * which can be used in conjunction with the existing built in selector
+		 * options.
+		 *
+		 * Each property is an array to which functions can be pushed. The functions
+		 * take three attributes:
+		 *
+		 * * Settings object for the host table
+		 * * Options object (`selector-modifier` object type)
+		 * * Array of selected item indexes
+		 *
+		 * The return is an array of the resulting item indexes after the custom
+		 * selector has been applied.
+		 *
+		 *  @type object
+		 */
+		selector: {
+			cell: [],
+			column: [],
+			row: []
+		},
+	
+	
+		/**
+		 * Internal functions, exposed for used in plug-ins.
+		 * 
+		 * Please note that you should not need to use the internal methods for
+		 * anything other than a plug-in (and even then, try to avoid if possible).
+		 * The internal function may change between releases.
+		 *
+		 *  @type object
+		 *  @default {}
+		 */
+		internal: {},
+	
+	
+		/**
+		 * Legacy configuration options. Enable and disable legacy options that
+		 * are available in DataTables.
+		 *
+		 *  @type object
+		 */
+		legacy: {
+			/**
+			 * Enable / disable DataTables 1.9 compatible server-side processing
+			 * requests
+			 *
+			 *  @type boolean
+			 *  @default null
+			 */
+			ajax: null
+		},
+	
+	
+		/**
+		 * Pagination plug-in methods.
+		 * 
+		 * Each entry in this object is a function and defines which buttons should
+		 * be shown by the pagination rendering method that is used for the table:
+		 * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the
+		 * buttons are displayed in the document, while the functions here tell it
+		 * what buttons to display. This is done by returning an array of button
+		 * descriptions (what each button will do).
+		 *
+		 * Pagination types (the four built in options and any additional plug-in
+		 * options defined here) can be used through the `paginationType`
+		 * initialisation parameter.
+		 *
+		 * The functions defined take two parameters:
+		 *
+		 * 1. `{int} page` The current page index
+		 * 2. `{int} pages` The number of pages in the table
+		 *
+		 * Each function is expected to return an array where each element of the
+		 * array can be one of:
+		 *
+		 * * `first` - Jump to first page when activated
+		 * * `last` - Jump to last page when activated
+		 * * `previous` - Show previous page when activated
+		 * * `next` - Show next page when activated
+		 * * `{int}` - Show page of the index given
+		 * * `{array}` - A nested array containing the above elements to add a
+		 *   containing 'DIV' element (might be useful for styling).
+		 *
+		 * Note that DataTables v1.9- used this object slightly differently whereby
+		 * an object with two functions would be defined for each plug-in. That
+		 * ability is still supported by DataTables 1.10+ to provide backwards
+		 * compatibility, but this option of use is now decremented and no longer
+		 * documented in DataTables 1.10+.
+		 *
+		 *  @type object
+		 *  @default {}
+		 *
+		 *  @example
+		 *    // Show previous, next and current page buttons only
+		 *    $.fn.dataTableExt.oPagination.current = function ( page, pages ) {
+		 *      return [ 'previous', page, 'next' ];
+		 *    };
+		 */
+		pager: {},
+	
+	
+		renderer: {
+			pageButton: {},
+			header: {}
+		},
+	
+	
+		/**
+		 * Ordering plug-ins - custom data source
+		 * 
+		 * The extension options for ordering of data available here is complimentary
+		 * to the default type based ordering that DataTables typically uses. It
+		 * allows much greater control over the the data that is being used to
+		 * order a column, but is necessarily therefore more complex.
+		 * 
+		 * This type of ordering is useful if you want to do ordering based on data
+		 * live from the DOM (for example the contents of an 'input' element) rather
+		 * than just the static string that DataTables knows of.
+		 * 
+		 * The way these plug-ins work is that you create an array of the values you
+		 * wish to be ordering for the column in question and then return that
+		 * array. The data in the array much be in the index order of the rows in
+		 * the table (not the currently ordering order!). Which order data gathering
+		 * function is run here depends on the `dt-init columns.orderDataType`
+		 * parameter that is used for the column (if any).
+		 *
+		 * The functions defined take two parameters:
+		 *
+		 * 1. `{object}` DataTables settings object: see
+		 *    {@link DataTable.models.oSettings}
+		 * 2. `{int}` Target column index
+		 *
+		 * Each function is expected to return an array:
+		 *
+		 * * `{array}` Data for the column to be ordering upon
+		 *
+		 *  @type array
+		 *
+		 *  @example
+		 *    // Ordering using `input` node values
+		 *    $.fn.dataTable.ext.order['dom-text'] = function  ( settings, col )
+		 *    {
+		 *      return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+		 *        return $('input', td).val();
+		 *      } );
+		 *    }
+		 */
+		order: {},
+	
+	
+		/**
+		 * Type based plug-ins.
+		 *
+		 * Each column in DataTables has a type assigned to it, either by automatic
+		 * detection or by direct assignment using the `type` option for the column.
+		 * The type of a column will effect how it is ordering and search (plug-ins
+		 * can also make use of the column type if required).
+		 *
+		 * @namespace
+		 */
+		type: {
+			/**
+			 * Type detection functions.
+			 *
+			 * The functions defined in this object are used to automatically detect
+			 * a column's type, making initialisation of DataTables super easy, even
+			 * when complex data is in the table.
+			 *
+			 * The functions defined take two parameters:
+			 *
+		     *  1. `{*}` Data from the column cell to be analysed
+		     *  2. `{settings}` DataTables settings object. This can be used to
+		     *     perform context specific type detection - for example detection
+		     *     based on language settings such as using a comma for a decimal
+		     *     place. Generally speaking the options from the settings will not
+		     *     be required
+			 *
+			 * Each function is expected to return:
+			 *
+			 * * `{string|null}` Data type detected, or null if unknown (and thus
+			 *   pass it on to the other type detection functions.
+			 *
+			 *  @type array
+			 *
+			 *  @example
+			 *    // Currency type detection plug-in:
+			 *    $.fn.dataTable.ext.type.detect.push(
+			 *      function ( data, settings ) {
+			 *        // Check the numeric part
+			 *        if ( ! data.substring(1).match(/[0-9]/) ) {
+			 *          return null;
+			 *        }
+			 *
+			 *        // Check prefixed by currency
+			 *        if ( data.charAt(0) == '$' || data.charAt(0) == '&pound;' ) {
+			 *          return 'currency';
+			 *        }
+			 *        return null;
+			 *      }
+			 *    );
+			 */
+			detect: [],
+	
+	
+			/**
+			 * Type based search formatting.
+			 *
+			 * The type based searching functions can be used to pre-format the
+			 * data to be search on. For example, it can be used to strip HTML
+			 * tags or to de-format telephone numbers for numeric only searching.
+			 *
+			 * Note that is a search is not defined for a column of a given type,
+			 * no search formatting will be performed.
+			 * 
+			 * Pre-processing of searching data plug-ins - When you assign the sType
+			 * for a column (or have it automatically detected for you by DataTables
+			 * or a type detection plug-in), you will typically be using this for
+			 * custom sorting, but it can also be used to provide custom searching
+			 * by allowing you to pre-processing the data and returning the data in
+			 * the format that should be searched upon. This is done by adding
+			 * functions this object with a parameter name which matches the sType
+			 * for that target column. This is the corollary of <i>afnSortData</i>
+			 * for searching data.
+			 *
+			 * The functions defined take a single parameter:
+			 *
+		     *  1. `{*}` Data from the column cell to be prepared for searching
+			 *
+			 * Each function is expected to return:
+			 *
+			 * * `{string|null}` Formatted string that will be used for the searching.
+			 *
+			 *  @type object
+			 *  @default {}
+			 *
+			 *  @example
+			 *    $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) {
+			 *      return d.replace(/\n/g," ").replace( /<.*?>/g, "" );
+			 *    }
+			 */
+			search: {},
+	
+	
+			/**
+			 * Type based ordering.
+			 *
+			 * The column type tells DataTables what ordering to apply to the table
+			 * when a column is sorted upon. The order for each type that is defined,
+			 * is defined by the functions available in this object.
+			 *
+			 * Each ordering option can be described by three properties added to
+			 * this object:
+			 *
+			 * * `{type}-pre` - Pre-formatting function
+			 * * `{type}-asc` - Ascending order function
+			 * * `{type}-desc` - Descending order function
+			 *
+			 * All three can be used together, only `{type}-pre` or only
+			 * `{type}-asc` and `{type}-desc` together. It is generally recommended
+			 * that only `{type}-pre` is used, as this provides the optimal
+			 * implementation in terms of speed, although the others are provided
+			 * for compatibility with existing Javascript sort functions.
+			 *
+			 * `{type}-pre`: Functions defined take a single parameter:
+			 *
+		     *  1. `{*}` Data from the column cell to be prepared for ordering
+			 *
+			 * And return:
+			 *
+			 * * `{*}` Data to be sorted upon
+			 *
+			 * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort
+			 * functions, taking two parameters:
+			 *
+		     *  1. `{*}` Data to compare to the second parameter
+		     *  2. `{*}` Data to compare to the first parameter
+			 *
+			 * And returning:
+			 *
+			 * * `{*}` Ordering match: <0 if first parameter should be sorted lower
+			 *   than the second parameter, ===0 if the two parameters are equal and
+			 *   >0 if the first parameter should be sorted height than the second
+			 *   parameter.
+			 * 
+			 *  @type object
+			 *  @default {}
+			 *
+			 *  @example
+			 *    // Numeric ordering of formatted numbers with a pre-formatter
+			 *    $.extend( $.fn.dataTable.ext.type.order, {
+			 *      "string-pre": function(x) {
+			 *        a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" );
+			 *        return parseFloat( a );
+			 *      }
+			 *    } );
+			 *
+			 *  @example
+			 *    // Case-sensitive string ordering, with no pre-formatting method
+			 *    $.extend( $.fn.dataTable.ext.order, {
+			 *      "string-case-asc": function(x,y) {
+			 *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+			 *      },
+			 *      "string-case-desc": function(x,y) {
+			 *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+			 *      }
+			 *    } );
+			 */
+			order: {}
+		},
+	
+		/**
+		 * Unique DataTables instance counter
+		 *
+		 * @type int
+		 * @private
+		 */
+		_unique: 0,
+	
+	
+		//
+		// Depreciated
+		// The following properties are retained for backwards compatiblity only.
+		// The should not be used in new projects and will be removed in a future
+		// version
+		//
+	
+		/**
+		 * Version check function.
+		 *  @type function
+		 *  @depreciated Since 1.10
+		 */
+		fnVersionCheck: DataTable.fnVersionCheck,
+	
+	
+		/**
+		 * Index for what 'this' index API functions should use
+		 *  @type int
+		 *  @deprecated Since v1.10
+		 */
+		iApiIndex: 0,
+	
+	
+		/**
+		 * jQuery UI class container
+		 *  @type object
+		 *  @deprecated Since v1.10
+		 */
+		oJUIClasses: {},
+	
+	
+		/**
+		 * Software version
+		 *  @type string
+		 *  @deprecated Since v1.10
+		 */
+		sVersion: DataTable.version
+	};
+	
+	
+	//
+	// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts
+	//
+	$.extend( _ext, {
+		afnFiltering: _ext.search,
+		aTypes:       _ext.type.detect,
+		ofnSearch:    _ext.type.search,
+		oSort:        _ext.type.order,
+		afnSortData:  _ext.order,
+		aoFeatures:   _ext.feature,
+		oApi:         _ext.internal,
+		oStdClasses:  _ext.classes,
+		oPagination:  _ext.pager
+	} );
+	
+	
+	$.extend( DataTable.ext.classes, {
+		"sTable": "dataTable",
+		"sNoFooter": "no-footer",
+	
+		/* Paging buttons */
+		"sPageButton": "paginate_button",
+		"sPageButtonActive": "current",
+		"sPageButtonDisabled": "disabled",
+	
+		/* Striping classes */
+		"sStripeOdd": "odd",
+		"sStripeEven": "even",
+	
+		/* Empty row */
+		"sRowEmpty": "dataTables_empty",
+	
+		/* Features */
+		"sWrapper": "dataTables_wrapper",
+		"sFilter": "dataTables_filter",
+		"sInfo": "dataTables_info",
+		"sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */
+		"sLength": "dataTables_length",
+		"sProcessing": "dataTables_processing",
+	
+		/* Sorting */
+		"sSortAsc": "sorting_asc",
+		"sSortDesc": "sorting_desc",
+		"sSortable": "sorting", /* Sortable in both directions */
+		"sSortableAsc": "sorting_asc_disabled",
+		"sSortableDesc": "sorting_desc_disabled",
+		"sSortableNone": "sorting_disabled",
+		"sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */
+	
+		/* Filtering */
+		"sFilterInput": "",
+	
+		/* Page length */
+		"sLengthSelect": "",
+	
+		/* Scrolling */
+		"sScrollWrapper": "dataTables_scroll",
+		"sScrollHead": "dataTables_scrollHead",
+		"sScrollHeadInner": "dataTables_scrollHeadInner",
+		"sScrollBody": "dataTables_scrollBody",
+		"sScrollFoot": "dataTables_scrollFoot",
+		"sScrollFootInner": "dataTables_scrollFootInner",
+	
+		/* Misc */
+		"sHeaderTH": "",
+		"sFooterTH": "",
+	
+		// Deprecated
+		"sSortJUIAsc": "",
+		"sSortJUIDesc": "",
+		"sSortJUI": "",
+		"sSortJUIAscAllowed": "",
+		"sSortJUIDescAllowed": "",
+		"sSortJUIWrapper": "",
+		"sSortIcon": "",
+		"sJUIHeader": "",
+		"sJUIFooter": ""
+	} );
+	
+	
+	var extPagination = DataTable.ext.pager;
+	
+	function _numbers ( page, pages ) {
+		var
+			numbers = [],
+			buttons = extPagination.numbers_length,
+			half = Math.floor( buttons / 2 ),
+			i = 1;
+	
+		if ( pages <= buttons ) {
+			numbers = _range( 0, pages );
+		}
+		else if ( page <= half ) {
+			numbers = _range( 0, buttons-2 );
+			numbers.push( 'ellipsis' );
+			numbers.push( pages-1 );
+		}
+		else if ( page >= pages - 1 - half ) {
+			numbers = _range( pages-(buttons-2), pages );
+			numbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6
+			numbers.splice( 0, 0, 0 );
+		}
+		else {
+			numbers = _range( page-half+2, page+half-1 );
+			numbers.push( 'ellipsis' );
+			numbers.push( pages-1 );
+			numbers.splice( 0, 0, 'ellipsis' );
+			numbers.splice( 0, 0, 0 );
+		}
+	
+		numbers.DT_el = 'span';
+		return numbers;
+	}
+	
+	
+	$.extend( extPagination, {
+		simple: function ( page, pages ) {
+			return [ 'previous', 'next' ];
+		},
+	
+		full: function ( page, pages ) {
+			return [  'first', 'previous', 'next', 'last' ];
+		},
+	
+		numbers: function ( page, pages ) {
+			return [ _numbers(page, pages) ];
+		},
+	
+		simple_numbers: function ( page, pages ) {
+			return [ 'previous', _numbers(page, pages), 'next' ];
+		},
+	
+		full_numbers: function ( page, pages ) {
+			return [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];
+		},
+		
+		first_last_numbers: function (page, pages) {
+	 		return ['first', _numbers(page, pages), 'last'];
+	 	},
+	
+		// For testing and plug-ins to use
+		_numbers: _numbers,
+	
+		// Number of number buttons (including ellipsis) to show. _Must be odd!_
+		numbers_length: 7
+	} );
+	
+	
+	$.extend( true, DataTable.ext.renderer, {
+		pageButton: {
+			_: function ( settings, host, idx, buttons, page, pages ) {
+				var classes = settings.oClasses;
+				var lang = settings.oLanguage.oPaginate;
+				var aria = settings.oLanguage.oAria.paginate || {};
+				var btnDisplay, btnClass, counter=0;
+	
+				var attach = function( container, buttons ) {
+					var i, ien, node, button, tabIndex;
+					var disabledClass = classes.sPageButtonDisabled;
+					var clickHandler = function ( e ) {
+						_fnPageChange( settings, e.data.action, true );
+					};
+	
+					for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+						button = buttons[i];
+	
+						if ( $.isArray( button ) ) {
+							var inner = $( '<'+(button.DT_el || 'div')+'/>' )
+								.appendTo( container );
+							attach( inner, button );
+						}
+						else {
+							btnDisplay = null;
+							btnClass = button;
+							tabIndex = settings.iTabIndex;
+	
+							switch ( button ) {
+								case 'ellipsis':
+									container.append('<span class="ellipsis">&#x2026;</span>');
+									break;
+	
+								case 'first':
+									btnDisplay = lang.sFirst;
+	
+									if ( page === 0 ) {
+										tabIndex = -1;
+										btnClass += ' ' + disabledClass;
+									}
+									break;
+	
+								case 'previous':
+									btnDisplay = lang.sPrevious;
+	
+									if ( page === 0 ) {
+										tabIndex = -1;
+										btnClass += ' ' + disabledClass;
+									}
+									break;
+	
+								case 'next':
+									btnDisplay = lang.sNext;
+	
+									if ( page === pages-1 ) {
+										tabIndex = -1;
+										btnClass += ' ' + disabledClass;
+									}
+									break;
+	
+								case 'last':
+									btnDisplay = lang.sLast;
+	
+									if ( page === pages-1 ) {
+										tabIndex = -1;
+										btnClass += ' ' + disabledClass;
+									}
+									break;
+	
+								default:
+									btnDisplay = button + 1;
+									btnClass = page === button ?
+										classes.sPageButtonActive : '';
+									break;
+							}
+	
+							if ( btnDisplay !== null ) {
+								node = $('<a>', {
+										'class': classes.sPageButton+' '+btnClass,
+										'aria-controls': settings.sTableId,
+										'aria-label': aria[ button ],
+										'data-dt-idx': counter,
+										'tabindex': tabIndex,
+										'id': idx === 0 && typeof button === 'string' ?
+											settings.sTableId +'_'+ button :
+											null
+									} )
+									.html( btnDisplay )
+									.appendTo( container );
+	
+								_fnBindAction(
+									node, {action: button}, clickHandler
+								);
+	
+								counter++;
+							}
+						}
+					}
+				};
+	
+				// IE9 throws an 'unknown error' if document.activeElement is used
+				// inside an iframe or frame. Try / catch the error. Not good for
+				// accessibility, but neither are frames.
+				var activeEl;
+	
+				try {
+					// Because this approach is destroying and recreating the paging
+					// elements, focus is lost on the select button which is bad for
+					// accessibility. So we want to restore focus once the draw has
+					// completed
+					activeEl = $(host).find(document.activeElement).data('dt-idx');
+				}
+				catch (e) {}
+	
+				attach( $(host).empty(), buttons );
+	
+				if ( activeEl !== undefined ) {
+					$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
+				}
+			}
+		}
+	} );
+	
+	
+	
+	// Built in type detection. See model.ext.aTypes for information about
+	// what is required from this methods.
+	$.extend( DataTable.ext.type.detect, [
+		// Plain numbers - first since V8 detects some plain numbers as dates
+		// e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...).
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _isNumber( d, decimal ) ? 'num'+decimal : null;
+		},
+	
+		// Dates (only those recognised by the browser's Date.parse)
+		function ( d, settings )
+		{
+			// V8 tries _very_ hard to make a string passed into `Date.parse()`
+			// valid, so we need to use a regex to restrict date formats. Use a
+			// plug-in for anything other than ISO8601 style strings
+			if ( d && !(d instanceof Date) && ! _re_date.test(d) ) {
+				return null;
+			}
+			var parsed = Date.parse(d);
+			return (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;
+		},
+	
+		// Formatted numbers
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;
+		},
+	
+		// HTML numeric
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;
+		},
+	
+		// HTML numeric, formatted
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;
+		},
+	
+		// HTML (this is strict checking - there must be html)
+		function ( d, settings )
+		{
+			return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ?
+				'html' : null;
+		}
+	] );
+	
+	
+	
+	// Filter formatting functions. See model.ext.ofnSearch for information about
+	// what is required from these methods.
+	// 
+	// Note that additional search methods are added for the html numbers and
+	// html formatted numbers by `_addNumericSort()` when we know what the decimal
+	// place is
+	
+	
+	$.extend( DataTable.ext.type.search, {
+		html: function ( data ) {
+			return _empty(data) ?
+				data :
+				typeof data === 'string' ?
+					data
+						.replace( _re_new_lines, " " )
+						.replace( _re_html, "" ) :
+					'';
+		},
+	
+		string: function ( data ) {
+			return _empty(data) ?
+				data :
+				typeof data === 'string' ?
+					data.replace( _re_new_lines, " " ) :
+					data;
+		}
+	} );
+	
+	
+	
+	var __numericReplace = function ( d, decimalPlace, re1, re2 ) {
+		if ( d !== 0 && (!d || d === '-') ) {
+			return -Infinity;
+		}
+	
+		// If a decimal place other than `.` is used, it needs to be given to the
+		// function so we can detect it and replace with a `.` which is the only
+		// decimal place Javascript recognises - it is not locale aware.
+		if ( decimalPlace ) {
+			d = _numToDecimal( d, decimalPlace );
+		}
+	
+		if ( d.replace ) {
+			if ( re1 ) {
+				d = d.replace( re1, '' );
+			}
+	
+			if ( re2 ) {
+				d = d.replace( re2, '' );
+			}
+		}
+	
+		return d * 1;
+	};
+	
+	
+	// Add the numeric 'deformatting' functions for sorting and search. This is done
+	// in a function to provide an easy ability for the language options to add
+	// additional methods if a non-period decimal place is used.
+	function _addNumericSort ( decimalPlace ) {
+		$.each(
+			{
+				// Plain numbers
+				"num": function ( d ) {
+					return __numericReplace( d, decimalPlace );
+				},
+	
+				// Formatted numbers
+				"num-fmt": function ( d ) {
+					return __numericReplace( d, decimalPlace, _re_formatted_numeric );
+				},
+	
+				// HTML numeric
+				"html-num": function ( d ) {
+					return __numericReplace( d, decimalPlace, _re_html );
+				},
+	
+				// HTML numeric, formatted
+				"html-num-fmt": function ( d ) {
+					return __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );
+				}
+			},
+			function ( key, fn ) {
+				// Add the ordering method
+				_ext.type.order[ key+decimalPlace+'-pre' ] = fn;
+	
+				// For HTML types add a search formatter that will strip the HTML
+				if ( key.match(/^html\-/) ) {
+					_ext.type.search[ key+decimalPlace ] = _ext.type.search.html;
+				}
+			}
+		);
+	}
+	
+	
+	// Default sort methods
+	$.extend( _ext.type.order, {
+		// Dates
+		"date-pre": function ( d ) {
+			var ts = Date.parse( d );
+			return isNaN(ts) ? -Infinity : ts;
+		},
+	
+		// html
+		"html-pre": function ( a ) {
+			return _empty(a) ?
+				'' :
+				a.replace ?
+					a.replace( /<.*?>/g, "" ).toLowerCase() :
+					a+'';
+		},
+	
+		// string
+		"string-pre": function ( a ) {
+			// This is a little complex, but faster than always calling toString,
+			// http://jsperf.com/tostring-v-check
+			return _empty(a) ?
+				'' :
+				typeof a === 'string' ?
+					a.toLowerCase() :
+					! a.toString ?
+						'' :
+						a.toString();
+		},
+	
+		// string-asc and -desc are retained only for compatibility with the old
+		// sort methods
+		"string-asc": function ( x, y ) {
+			return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+		},
+	
+		"string-desc": function ( x, y ) {
+			return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+		}
+	} );
+	
+	
+	// Numeric sorting types - order doesn't matter here
+	_addNumericSort( '' );
+	
+	
+	$.extend( true, DataTable.ext.renderer, {
+		header: {
+			_: function ( settings, cell, column, classes ) {
+				// No additional mark-up required
+				// Attach a sort listener to update on sort - note that using the
+				// `DT` namespace will allow the event to be removed automatically
+				// on destroy, while the `dt` namespaced event is the one we are
+				// listening for
+				$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {
+					if ( settings !== ctx ) { // need to check this this is the host
+						return;               // table, not a nested one
+					}
+	
+					var colIdx = column.idx;
+	
+					cell
+						.removeClass(
+							column.sSortingClass +' '+
+							classes.sSortAsc +' '+
+							classes.sSortDesc
+						)
+						.addClass( columns[ colIdx ] == 'asc' ?
+							classes.sSortAsc : columns[ colIdx ] == 'desc' ?
+								classes.sSortDesc :
+								column.sSortingClass
+						);
+				} );
+			},
+	
+			jqueryui: function ( settings, cell, column, classes ) {
+				$('<div/>')
+					.addClass( classes.sSortJUIWrapper )
+					.append( cell.contents() )
+					.append( $('<span/>')
+						.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )
+					)
+					.appendTo( cell );
+	
+				// Attach a sort listener to update on sort
+				$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {
+					if ( settings !== ctx ) {
+						return;
+					}
+	
+					var colIdx = column.idx;
+	
+					cell
+						.removeClass( classes.sSortAsc +" "+classes.sSortDesc )
+						.addClass( columns[ colIdx ] == 'asc' ?
+							classes.sSortAsc : columns[ colIdx ] == 'desc' ?
+								classes.sSortDesc :
+								column.sSortingClass
+						);
+	
+					cell
+						.find( 'span.'+classes.sSortIcon )
+						.removeClass(
+							classes.sSortJUIAsc +" "+
+							classes.sSortJUIDesc +" "+
+							classes.sSortJUI +" "+
+							classes.sSortJUIAscAllowed +" "+
+							classes.sSortJUIDescAllowed
+						)
+						.addClass( columns[ colIdx ] == 'asc' ?
+							classes.sSortJUIAsc : columns[ colIdx ] == 'desc' ?
+								classes.sSortJUIDesc :
+								column.sSortingClassJUI
+						);
+				} );
+			}
+		}
+	} );
+	
+	/*
+	 * Public helper functions. These aren't used internally by DataTables, or
+	 * called by any of the options passed into DataTables, but they can be used
+	 * externally by developers working with DataTables. They are helper functions
+	 * to make working with DataTables a little bit easier.
+	 */
+	
+	var __htmlEscapeEntities = function ( d ) {
+		return typeof d === 'string' ?
+			d.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;') :
+			d;
+	};
+	
+	/**
+	 * Helpers for `columns.render`.
+	 *
+	 * The options defined here can be used with the `columns.render` initialisation
+	 * option to provide a display renderer. The following functions are defined:
+	 *
+	 * * `number` - Will format numeric data (defined by `columns.data`) for
+	 *   display, retaining the original unformatted data for sorting and filtering.
+	 *   It takes 5 parameters:
+	 *   * `string` - Thousands grouping separator
+	 *   * `string` - Decimal point indicator
+	 *   * `integer` - Number of decimal points to show
+	 *   * `string` (optional) - Prefix.
+	 *   * `string` (optional) - Postfix (/suffix).
+	 * * `text` - Escape HTML to help prevent XSS attacks. It has no optional
+	 *   parameters.
+	 *
+	 * @example
+	 *   // Column definition using the number renderer
+	 *   {
+	 *     data: "salary",
+	 *     render: $.fn.dataTable.render.number( '\'', '.', 0, '$' )
+	 *   }
+	 *
+	 * @namespace
+	 */
+	DataTable.render = {
+		number: function ( thousands, decimal, precision, prefix, postfix ) {
+			return {
+				display: function ( d ) {
+					if ( typeof d !== 'number' && typeof d !== 'string' ) {
+						return d;
+					}
+	
+					var negative = d < 0 ? '-' : '';
+					var flo = parseFloat( d );
+	
+					// If NaN then there isn't much formatting that we can do - just
+					// return immediately, escaping any HTML (this was supposed to
+					// be a number after all)
+					if ( isNaN( flo ) ) {
+						return __htmlEscapeEntities( d );
+					}
+	
+					flo = flo.toFixed( precision );
+					d = Math.abs( flo );
+	
+					var intPart = parseInt( d, 10 );
+					var floatPart = precision ?
+						decimal+(d - intPart).toFixed( precision ).substring( 2 ):
+						'';
+	
+					return negative + (prefix||'') +
+						intPart.toString().replace(
+							/\B(?=(\d{3})+(?!\d))/g, thousands
+						) +
+						floatPart +
+						(postfix||'');
+				}
+			};
+		},
+	
+		text: function () {
+			return {
+				display: __htmlEscapeEntities,
+				filter: __htmlEscapeEntities
+			};
+		}
+	};
+	
+	
+	/*
+	 * This is really a good bit rubbish this method of exposing the internal methods
+	 * publicly... - To be fixed in 2.0 using methods on the prototype
+	 */
+	
+	
+	/**
+	 * Create a wrapper function for exporting an internal functions to an external API.
+	 *  @param {string} fn API function name
+	 *  @returns {function} wrapped function
+	 *  @memberof DataTable#internal
+	 */
+	function _fnExternApiFunc (fn)
+	{
+		return function() {
+			var args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat(
+				Array.prototype.slice.call(arguments)
+			);
+			return DataTable.ext.internal[fn].apply( this, args );
+		};
+	}
+	
+	
+	/**
+	 * Reference to internal functions for use by plug-in developers. Note that
+	 * these methods are references to internal functions and are considered to be
+	 * private. If you use these methods, be aware that they are liable to change
+	 * between versions.
+	 *  @namespace
+	 */
+	$.extend( DataTable.ext.internal, {
+		_fnExternApiFunc: _fnExternApiFunc,
+		_fnBuildAjax: _fnBuildAjax,
+		_fnAjaxUpdate: _fnAjaxUpdate,
+		_fnAjaxParameters: _fnAjaxParameters,
+		_fnAjaxUpdateDraw: _fnAjaxUpdateDraw,
+		_fnAjaxDataSrc: _fnAjaxDataSrc,
+		_fnAddColumn: _fnAddColumn,
+		_fnColumnOptions: _fnColumnOptions,
+		_fnAdjustColumnSizing: _fnAdjustColumnSizing,
+		_fnVisibleToColumnIndex: _fnVisibleToColumnIndex,
+		_fnColumnIndexToVisible: _fnColumnIndexToVisible,
+		_fnVisbleColumns: _fnVisbleColumns,
+		_fnGetColumns: _fnGetColumns,
+		_fnColumnTypes: _fnColumnTypes,
+		_fnApplyColumnDefs: _fnApplyColumnDefs,
+		_fnHungarianMap: _fnHungarianMap,
+		_fnCamelToHungarian: _fnCamelToHungarian,
+		_fnLanguageCompat: _fnLanguageCompat,
+		_fnBrowserDetect: _fnBrowserDetect,
+		_fnAddData: _fnAddData,
+		_fnAddTr: _fnAddTr,
+		_fnNodeToDataIndex: _fnNodeToDataIndex,
+		_fnNodeToColumnIndex: _fnNodeToColumnIndex,
+		_fnGetCellData: _fnGetCellData,
+		_fnSetCellData: _fnSetCellData,
+		_fnSplitObjNotation: _fnSplitObjNotation,
+		_fnGetObjectDataFn: _fnGetObjectDataFn,
+		_fnSetObjectDataFn: _fnSetObjectDataFn,
+		_fnGetDataMaster: _fnGetDataMaster,
+		_fnClearTable: _fnClearTable,
+		_fnDeleteIndex: _fnDeleteIndex,
+		_fnInvalidate: _fnInvalidate,
+		_fnGetRowElements: _fnGetRowElements,
+		_fnCreateTr: _fnCreateTr,
+		_fnBuildHead: _fnBuildHead,
+		_fnDrawHead: _fnDrawHead,
+		_fnDraw: _fnDraw,
+		_fnReDraw: _fnReDraw,
+		_fnAddOptionsHtml: _fnAddOptionsHtml,
+		_fnDetectHeader: _fnDetectHeader,
+		_fnGetUniqueThs: _fnGetUniqueThs,
+		_fnFeatureHtmlFilter: _fnFeatureHtmlFilter,
+		_fnFilterComplete: _fnFilterComplete,
+		_fnFilterCustom: _fnFilterCustom,
+		_fnFilterColumn: _fnFilterColumn,
+		_fnFilter: _fnFilter,
+		_fnFilterCreateSearch: _fnFilterCreateSearch,
+		_fnEscapeRegex: _fnEscapeRegex,
+		_fnFilterData: _fnFilterData,
+		_fnFeatureHtmlInfo: _fnFeatureHtmlInfo,
+		_fnUpdateInfo: _fnUpdateInfo,
+		_fnInfoMacros: _fnInfoMacros,
+		_fnInitialise: _fnInitialise,
+		_fnInitComplete: _fnInitComplete,
+		_fnLengthChange: _fnLengthChange,
+		_fnFeatureHtmlLength: _fnFeatureHtmlLength,
+		_fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate,
+		_fnPageChange: _fnPageChange,
+		_fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing,
+		_fnProcessingDisplay: _fnProcessingDisplay,
+		_fnFeatureHtmlTable: _fnFeatureHtmlTable,
+		_fnScrollDraw: _fnScrollDraw,
+		_fnApplyToChildren: _fnApplyToChildren,
+		_fnCalculateColumnWidths: _fnCalculateColumnWidths,
+		_fnThrottle: _fnThrottle,
+		_fnConvertToWidth: _fnConvertToWidth,
+		_fnGetWidestNode: _fnGetWidestNode,
+		_fnGetMaxLenString: _fnGetMaxLenString,
+		_fnStringToCss: _fnStringToCss,
+		_fnSortFlatten: _fnSortFlatten,
+		_fnSort: _fnSort,
+		_fnSortAria: _fnSortAria,
+		_fnSortListener: _fnSortListener,
+		_fnSortAttachListener: _fnSortAttachListener,
+		_fnSortingClasses: _fnSortingClasses,
+		_fnSortData: _fnSortData,
+		_fnSaveState: _fnSaveState,
+		_fnLoadState: _fnLoadState,
+		_fnSettingsFromNode: _fnSettingsFromNode,
+		_fnLog: _fnLog,
+		_fnMap: _fnMap,
+		_fnBindAction: _fnBindAction,
+		_fnCallbackReg: _fnCallbackReg,
+		_fnCallbackFire: _fnCallbackFire,
+		_fnLengthOverflow: _fnLengthOverflow,
+		_fnRenderer: _fnRenderer,
+		_fnDataSource: _fnDataSource,
+		_fnRowAttributes: _fnRowAttributes,
+		_fnExtend: _fnExtend,
+		_fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant
+		                                // in 1.10, so this dead-end function is
+		                                // added to prevent errors
+	} );
+	
+
+	// jQuery access
+	$.fn.dataTable = DataTable;
+
+	// Provide access to the host jQuery object (circular reference)
+	DataTable.$ = $;
+
+	// Legacy aliases
+	$.fn.dataTableSettings = DataTable.settings;
+	$.fn.dataTableExt = DataTable.ext;
+
+	// With a capital `D` we return a DataTables API instance rather than a
+	// jQuery object
+	$.fn.DataTable = function ( opts ) {
+		return $(this).dataTable( opts ).api();
+	};
+
+	// All properties that are available to $.fn.dataTable should also be
+	// available on $.fn.DataTable
+	$.each( DataTable, function ( prop, val ) {
+		$.fn.DataTable[ prop ] = val;
+	} );
+
+
+	// Information about events fired by DataTables - for documentation.
+	/**
+	 * Draw event, fired whenever the table is redrawn on the page, at the same
+	 * point as fnDrawCallback. This may be useful for binding events or
+	 * performing calculations when the table is altered at all.
+	 *  @name DataTable#draw.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Search event, fired when the searching applied to the table (using the
+	 * built-in global search, or column filters) is altered.
+	 *  @name DataTable#search.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Page change event, fired when the paging of the table is altered.
+	 *  @name DataTable#page.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Order event, fired when the ordering applied to the table is altered.
+	 *  @name DataTable#order.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * DataTables initialisation complete event, fired when the table is fully
+	 * drawn, including Ajax data loaded, if Ajax data is required.
+	 *  @name DataTable#init.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The JSON object request from the server - only
+	 *    present if client-side Ajax sourced data is used</li></ol>
+	 */
+
+	/**
+	 * State save event, fired when the table has changed state a new state save
+	 * is required. This event allows modification of the state saving object
+	 * prior to actually doing the save, including addition or other state
+	 * properties (for plug-ins) or modification of a DataTables core property.
+	 *  @name DataTable#stateSaveParams.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The state information to be saved
+	 */
+
+	/**
+	 * State load event, fired when the table is loading state from the stored
+	 * data, but prior to the settings object being modified by the saved state
+	 * - allowing modification of the saved state is required or loading of
+	 * state for a plug-in.
+	 *  @name DataTable#stateLoadParams.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The saved state information
+	 */
+
+	/**
+	 * State loaded event, fired when state has been loaded from stored data and
+	 * the settings object has been modified by the loaded data.
+	 *  @name DataTable#stateLoaded.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The saved state information
+	 */
+
+	/**
+	 * Processing event, fired when DataTables is doing some kind of processing
+	 * (be it, order, search or anything else). It can be used to indicate to
+	 * the end user that there is something happening, or that something has
+	 * finished.
+	 *  @name DataTable#processing.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {boolean} bShow Flag for if DataTables is doing processing or not
+	 */
+
+	/**
+	 * Ajax (XHR) event, fired whenever an Ajax request is completed from a
+	 * request to made to the server for new data. This event is called before
+	 * DataTables processed the returned data, so it can also be used to pre-
+	 * process the data returned from the server, if needed.
+	 *
+	 * Note that this trigger is called in `fnServerData`, if you override
+	 * `fnServerData` and which to use this event, you need to trigger it in you
+	 * success function.
+	 *  @name DataTable#xhr.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 *  @param {object} json JSON returned from the server
+	 *
+	 *  @example
+	 *     // Use a custom property returned from the server in another DOM element
+	 *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {
+	 *       $('#status').html( json.status );
+	 *     } );
+	 *
+	 *  @example
+	 *     // Pre-process the data returned from the server
+	 *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {
+	 *       for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) {
+	 *         json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two;
+	 *       }
+	 *       // Note no return - manipulate the data directly in the JSON object.
+	 *     } );
+	 */
+
+	/**
+	 * Destroy event, fired when the DataTable is destroyed by calling fnDestroy
+	 * or passing the bDestroy:true parameter in the initialisation object. This
+	 * can be used to remove bound events, added DOM nodes, etc.
+	 *  @name DataTable#destroy.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Page length change event, fired when number of records to show on each
+	 * page (the length) is changed.
+	 *  @name DataTable#length.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 *  @param {integer} len New length
+	 */
+
+	/**
+	 * Column sizing has changed.
+	 *  @name DataTable#column-sizing.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Column visibility has changed.
+	 *  @name DataTable#column-visibility.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 *  @param {int} column Column index
+	 *  @param {bool} vis `false` if column now hidden, or `true` if visible
+	 */
+
+	return $.fn.dataTable;
+}));
+
+
+/*! DataTables Bootstrap 4 integration
+ * ©2011-2017 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * DataTables integration for Bootstrap 4. This requires Bootstrap 4 and
+ * DataTables 1.10 or newer.
+ *
+ * This file sets the defaults and adds options to DataTables to style its
+ * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
+ * for further information.
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				// Require DataTables, which attaches to jQuery, including
+				// jQuery if needed and have a $ property so we can access the
+				// jQuery object that is used
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/* Set the defaults for DataTables initialisation */
+$.extend( true, DataTable.defaults, {
+	dom:
+		"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" +
+		"<'row'<'col-sm-12'tr>>" +
+		"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
+	renderer: 'bootstrap'
+} );
+
+
+/* Default class modification */
+$.extend( DataTable.ext.classes, {
+	sWrapper:      "dataTables_wrapper dt-bootstrap4",
+	sFilterInput:  "form-control form-control-sm",
+	sLengthSelect: "custom-select custom-select-sm form-control form-control-sm",
+	sProcessing:   "dataTables_processing card",
+	sPageButton:   "paginate_button page-item"
+} );
+
+
+/* Bootstrap paging button renderer */
+DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
+	var api     = new DataTable.Api( settings );
+	var classes = settings.oClasses;
+	var lang    = settings.oLanguage.oPaginate;
+	var aria = settings.oLanguage.oAria.paginate || {};
+	var btnDisplay, btnClass, counter=0;
+
+	var attach = function( container, buttons ) {
+		var i, ien, node, button;
+		var clickHandler = function ( e ) {
+			e.preventDefault();
+			if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
+				api.page( e.data.action ).draw( 'page' );
+			}
+		};
+
+		for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+			button = buttons[i];
+
+			if ( $.isArray( button ) ) {
+				attach( container, button );
+			}
+			else {
+				btnDisplay = '';
+				btnClass = '';
+
+				switch ( button ) {
+					case 'ellipsis':
+						btnDisplay = '&#x2026;';
+						btnClass = 'disabled';
+						break;
+
+					case 'first':
+						btnDisplay = lang.sFirst;
+						btnClass = button + (page > 0 ?
+							'' : ' disabled');
+						break;
+
+					case 'previous':
+						btnDisplay = lang.sPrevious;
+						btnClass = button + (page > 0 ?
+							'' : ' disabled');
+						break;
+
+					case 'next':
+						btnDisplay = lang.sNext;
+						btnClass = button + (page < pages-1 ?
+							'' : ' disabled');
+						break;
+
+					case 'last':
+						btnDisplay = lang.sLast;
+						btnClass = button + (page < pages-1 ?
+							'' : ' disabled');
+						break;
+
+					default:
+						btnDisplay = button + 1;
+						btnClass = page === button ?
+							'active' : '';
+						break;
+				}
+
+				if ( btnDisplay ) {
+					node = $('<li>', {
+							'class': classes.sPageButton+' '+btnClass,
+							'id': idx === 0 && typeof button === 'string' ?
+								settings.sTableId +'_'+ button :
+								null
+						} )
+						.append( $('<a>', {
+								'href': '#',
+								'aria-controls': settings.sTableId,
+								'aria-label': aria[ button ],
+								'data-dt-idx': counter,
+								'tabindex': settings.iTabIndex,
+								'class': 'page-link'
+							} )
+							.html( btnDisplay )
+						)
+						.appendTo( container );
+
+					settings.oApi._fnBindAction(
+						node, {action: button}, clickHandler
+					);
+
+					counter++;
+				}
+			}
+		}
+	};
+
+	// IE9 throws an 'unknown error' if document.activeElement is used
+	// inside an iframe or frame. 
+	var activeEl;
+
+	try {
+		// Because this approach is destroying and recreating the paging
+		// elements, focus is lost on the select button which is bad for
+		// accessibility. So we want to restore focus once the draw has
+		// completed
+		activeEl = $(host).find(document.activeElement).data('dt-idx');
+	}
+	catch (e) {}
+
+	attach(
+		$(host).empty().html('<ul class="pagination"/>').children('ul'),
+		buttons
+	);
+
+	if ( activeEl !== undefined ) {
+		$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
+	}
+};
+
+
+return DataTable;
+}));
+
+
+/*! AutoFill 2.3.4
+ * ©2008-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     AutoFill
+ * @description Add Excel like click and drag auto-fill options to DataTables
+ * @version     2.3.4
+ * @file        dataTables.autoFill.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var _instance = 0;
+
+/** 
+ * AutoFill provides Excel like auto-fill features for a DataTable
+ *
+ * @class AutoFill
+ * @constructor
+ * @param {object} oTD DataTables settings object
+ * @param {object} oConfig Configuration object for AutoFill
+ */
+var AutoFill = function( dt, opts )
+{
+	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) {
+		throw( "Warning: AutoFill requires DataTables 1.10.8 or greater");
+	}
+
+	// User and defaults configuration object
+	this.c = $.extend( true, {},
+		DataTable.defaults.autoFill,
+		AutoFill.defaults,
+		opts
+	);
+
+	/**
+	 * @namespace Settings object which contains customisable information for AutoFill instance
+	 */
+	this.s = {
+		/** @type {DataTable.Api} DataTables' API instance */
+		dt: new DataTable.Api( dt ),
+
+		/** @type {String} Unique namespace for events attached to the document */
+		namespace: '.autoFill'+(_instance++),
+
+		/** @type {Object} Cached dimension information for use in the mouse move event handler */
+		scroll: {},
+
+		/** @type {integer} Interval object used for smooth scrolling */
+		scrollInterval: null,
+
+		handle: {
+			height: 0,
+			width: 0
+		},
+
+		/**
+		 * Enabled setting
+		 * @type {Boolean}
+		 */
+		enabled: false
+	};
+
+
+	/**
+	 * @namespace Common and useful DOM elements for the class instance
+	 */
+	this.dom = {
+		/** @type {jQuery} AutoFill handle */
+		handle: $('<div class="dt-autofill-handle"/>'),
+
+		/**
+		 * @type {Object} Selected cells outline - Need to use 4 elements,
+		 *   otherwise the mouse over if you back into the selected rectangle
+		 *   will be over that element, rather than the cells!
+		 */
+		select: {
+			top:    $('<div class="dt-autofill-select top"/>'),
+			right:  $('<div class="dt-autofill-select right"/>'),
+			bottom: $('<div class="dt-autofill-select bottom"/>'),
+			left:   $('<div class="dt-autofill-select left"/>')
+		},
+
+		/** @type {jQuery} Fill type chooser background */
+		background: $('<div class="dt-autofill-background"/>'),
+
+		/** @type {jQuery} Fill type chooser */
+		list: $('<div class="dt-autofill-list">'+this.s.dt.i18n('autoFill.info', '')+'<ul/></div>'),
+
+		/** @type {jQuery} DataTables scrolling container */
+		dtScroll: null,
+
+		/** @type {jQuery} Offset parent element */
+		offsetParent: null
+	};
+
+
+	/* Constructor logic */
+	this._constructor();
+};
+
+
+
+$.extend( AutoFill.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods (exposed via the DataTables API below)
+	 */
+	enabled: function ()
+	{
+		return this.s.enabled;
+	},
+
+
+	enable: function ( flag )
+	{
+		var that = this;
+
+		if ( flag === false ) {
+			return this.disable();
+		}
+
+		this.s.enabled = true;
+
+		this._focusListener();
+
+		this.dom.handle.on( 'mousedown', function (e) {
+			that._mousedown( e );
+			return false;
+		} );
+
+		return this;
+	},
+
+	disable: function ()
+	{
+		this.s.enabled = false;
+
+		this._focusListenerRemove();
+
+		return this;
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Initialise the RowReorder instance
+	 *
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var dtScroll = $('div.dataTables_scrollBody', this.s.dt.table().container());
+
+		// Make the instance accessible to the API
+		dt.settings()[0].autoFill = this;
+
+		if ( dtScroll.length ) {
+			this.dom.dtScroll = dtScroll;
+
+			// Need to scroll container to be the offset parent
+			if ( dtScroll.css('position') === 'static' ) {
+				dtScroll.css( 'position', 'relative' );
+			}
+		}
+
+		if ( this.c.enable !== false ) {
+			this.enable();
+		}
+
+		dt.on( 'destroy.autoFill', function () {
+			that._focusListenerRemove();
+		} );
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Display the AutoFill drag handle by appending it to a table cell. This
+	 * is the opposite of the _detach method.
+	 *
+	 * @param  {node} node TD/TH cell to insert the handle into
+	 * @private
+	 */
+	_attach: function ( node )
+	{
+		var dt = this.s.dt;
+		var idx = dt.cell( node ).index();
+		var handle = this.dom.handle;
+		var handleDim = this.s.handle;
+
+		if ( ! idx || dt.columns( this.c.columns ).indexes().indexOf( idx.column ) === -1 ) {
+			this._detach();
+			return;
+		}
+
+		if ( ! this.dom.offsetParent ) {
+			// We attach to the table's offset parent
+			this.dom.offsetParent = $( dt.table().node() ).offsetParent();
+		}
+
+		if ( ! handleDim.height || ! handleDim.width ) {
+			// Append to document so we can get its size. Not expecting it to
+			// change during the life time of the page
+			handle.appendTo( 'body' );
+			handleDim.height = handle.outerHeight();
+			handleDim.width = handle.outerWidth();
+		}
+
+		// Might need to go through multiple offset parents
+		var offset = this._getPosition( node, this.dom.offsetParent );
+
+		this.dom.attachedTo = node;
+		handle
+			.css( {
+				top: offset.top + node.offsetHeight - handleDim.height,
+				left: offset.left + node.offsetWidth - handleDim.width
+			} )
+			.appendTo( this.dom.offsetParent );
+	},
+
+
+	/**
+	 * Determine can the fill type should be. This can be automatic, or ask the
+	 * end user.
+	 *
+	 * @param {array} cells Information about the selected cells from the key
+	 *     up function
+	 * @private
+	 */
+	_actionSelector: function ( cells )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var actions = AutoFill.actions;
+		var available = [];
+
+		// "Ask" each plug-in if it wants to handle this data
+		$.each( actions, function ( key, action ) {
+			if ( action.available( dt, cells ) ) {
+				available.push( key );
+			}
+		} );
+
+		if ( available.length === 1 && this.c.alwaysAsk === false ) {
+			// Only one action available - enact it immediately
+			var result = actions[ available[0] ].execute( dt, cells );
+			this._update( result, cells );
+		}
+		else {
+			// Multiple actions available - ask the end user what they want to do
+			var list = this.dom.list.children('ul').empty();
+
+			// Add a cancel option
+			available.push( 'cancel' );
+
+			$.each( available, function ( i, name ) {
+				list.append( $('<li/>')
+					.append(
+						'<div class="dt-autofill-question">'+
+							actions[ name ].option( dt, cells )+
+						'<div>'
+					)
+					.append( $('<div class="dt-autofill-button">' )
+						.append( $('<button class="'+AutoFill.classes.btn+'">'+dt.i18n('autoFill.button', '&gt;')+'</button>')
+							.on( 'click', function () {
+								var result = actions[ name ].execute(
+									dt, cells, $(this).closest('li')
+								);
+								that._update( result, cells );
+
+								that.dom.background.remove();
+								that.dom.list.remove();
+							} )
+						)
+					)
+				);
+			} );
+
+			this.dom.background.appendTo( 'body' );
+			this.dom.list.appendTo( 'body' );
+
+			this.dom.list.css( 'margin-top', this.dom.list.outerHeight()/2 * -1 );
+		}
+	},
+
+
+	/**
+	 * Remove the AutoFill handle from the document
+	 *
+	 * @private
+	 */
+	_detach: function ()
+	{
+		this.dom.attachedTo = null;
+		this.dom.handle.detach();
+	},
+
+
+	/**
+	 * Draw the selection outline by calculating the range between the start
+	 * and end cells, then placing the highlighting elements to draw a rectangle
+	 *
+	 * @param  {node}   target End cell
+	 * @param  {object} e      Originating event
+	 * @private
+	 */
+	_drawSelection: function ( target, e )
+	{
+		// Calculate boundary for start cell to this one
+		var dt = this.s.dt;
+		var start = this.s.start;
+		var startCell = $(this.dom.start);
+		var end = {
+			row: this.c.vertical ?
+				dt.rows( { page: 'current' } ).nodes().indexOf( target.parentNode ) :
+				start.row,
+			column: this.c.horizontal ?
+				$(target).index() :
+				start.column
+		};
+		var colIndx = dt.column.index( 'toData', end.column );
+		var endRow =  dt.row( ':eq('+end.row+')', { page: 'current' } ); // Workaround for M581
+		var endCell = $( dt.cell( endRow.index(), colIndx ).node() );
+
+		// Be sure that is a DataTables controlled cell
+		if ( ! dt.cell( endCell ).any() ) {
+			return;
+		}
+
+		// if target is not in the columns available - do nothing
+		if ( dt.columns( this.c.columns ).indexes().indexOf( colIndx ) === -1 ) {
+			return;
+		}
+
+		this.s.end = end;
+
+		var top, bottom, left, right, height, width;
+
+		top    = start.row    < end.row    ? startCell : endCell;
+		bottom = start.row    < end.row    ? endCell   : startCell;
+		left   = start.column < end.column ? startCell : endCell;
+		right  = start.column < end.column ? endCell   : startCell;
+
+		top    = this._getPosition( top.get(0) ).top;
+		left   = this._getPosition( left.get(0) ).left;
+		height = this._getPosition( bottom.get(0) ).top + bottom.outerHeight() - top;
+		width  = this._getPosition( right.get(0) ).left + right.outerWidth() - left;
+
+		var select = this.dom.select;
+		select.top.css( {
+			top: top,
+			left: left,
+			width: width
+		} );
+
+		select.left.css( {
+			top: top,
+			left: left,
+			height: height
+		} );
+
+		select.bottom.css( {
+			top: top + height,
+			left: left,
+			width: width
+		} );
+
+		select.right.css( {
+			top: top,
+			left: left + width,
+			height: height
+		} );
+	},
+
+
+	/**
+	 * Use the Editor API to perform an update based on the new data for the
+	 * cells
+	 *
+	 * @param {array} cells Information about the selected cells from the key
+	 *     up function
+	 * @private
+	 */
+	_editor: function ( cells )
+	{
+		var dt = this.s.dt;
+		var editor = this.c.editor;
+
+		if ( ! editor ) {
+			return;
+		}
+
+		// Build the object structure for Editor's multi-row editing
+		var idValues = {};
+		var nodes = [];
+		var fields = editor.fields();
+
+		for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+			for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+				var cell = cells[i][j];
+
+				// Determine the field name for the cell being edited
+				var col = dt.settings()[0].aoColumns[ cell.index.column ];
+				var fieldName = col.editField;
+
+				if ( fieldName === undefined ) {
+					var dataSrc = col.mData;
+
+					// dataSrc is the `field.data` property, but we need to set
+					// using the field name, so we need to translate from the
+					// data to the name
+					for ( var k=0, ken=fields.length ; k<ken ; k++ ) {
+						var field = editor.field( fields[k] );
+
+						if ( field.dataSrc() === dataSrc ) {
+							fieldName = field.name();
+							break;
+						}
+					}
+				}
+
+				if ( ! fieldName ) {
+					throw 'Could not automatically determine field data. '+
+						'Please see https://datatables.net/tn/11';
+				}
+
+				if ( ! idValues[ fieldName ] ) {
+					idValues[ fieldName ] = {};
+				}
+
+				var id = dt.row( cell.index.row ).id();
+				idValues[ fieldName ][ id ] = cell.set;
+
+				// Keep a list of cells so we can activate the bubble editing
+				// with them
+				nodes.push( cell.index );
+			}
+		}
+
+		// Perform the edit using bubble editing as it allows us to specify
+		// the cells to be edited, rather than using full rows
+		editor
+			.bubble( nodes, false )
+			.multiSet( idValues )
+			.submit();
+	},
+
+
+	/**
+	 * Emit an event on the DataTable for listeners
+	 *
+	 * @param  {string} name Event name
+	 * @param  {array} args Event arguments
+	 * @private
+	 */
+	_emitEvent: function ( name, args )
+	{
+		this.s.dt.iterator( 'table', function ( ctx, i ) {
+			$(ctx.nTable).triggerHandler( name+'.dt', args );
+		} );
+	},
+
+
+	/**
+	 * Attach suitable listeners (based on the configuration) that will attach
+	 * and detach the AutoFill handle in the document.
+	 *
+	 * @private
+	 */
+	_focusListener: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var namespace = this.s.namespace;
+		var focus = this.c.focus !== null ?
+			this.c.focus :
+			dt.init().keys || dt.settings()[0].keytable ?
+				'focus' :
+				'hover';
+
+		// All event listeners attached here are removed in the `destroy`
+		// callback in the constructor
+		if ( focus === 'focus' ) {
+			dt
+				.on( 'key-focus.autoFill', function ( e, dt, cell ) {
+					that._attach( cell.node() );
+				} )
+				.on( 'key-blur.autoFill', function ( e, dt, cell ) {
+					that._detach();
+				} );
+		}
+		else if ( focus === 'click' ) {
+			$(dt.table().body()).on( 'click'+namespace, 'td, th', function (e) {
+				that._attach( this );
+			} );
+
+			$(document.body).on( 'click'+namespace, function (e) {
+				if ( ! $(e.target).parents().filter( dt.table().body() ).length ) {
+					that._detach();
+				}
+			} );
+		}
+		else {
+			$(dt.table().body())
+				.on( 'mouseenter'+namespace, 'td, th', function (e) {
+					that._attach( this );
+				} )
+				.on( 'mouseleave'+namespace, function (e) {
+					if ( $(e.relatedTarget).hasClass('dt-autofill-handle') ) {
+						return;
+					}
+
+					that._detach();
+				} );
+		}
+	},
+
+
+	_focusListenerRemove: function ()
+	{
+		var dt = this.s.dt;
+
+		dt.off( '.autoFill' );
+		$(dt.table().body()).off( this.s.namespace );
+		$(document.body).off( this.s.namespace );
+	},
+
+
+	/**
+	 * Get the position of a node, relative to another, including any scrolling
+	 * offsets.
+	 * @param  {Node}   node         Node to get the position of
+	 * @param  {jQuery} targetParent Node to use as the parent
+	 * @return {object}              Offset calculation
+	 * @private
+	 */
+	_getPosition: function ( node, targetParent )
+	{
+		var
+			currNode = node,
+			currOffsetParent,
+			top = 0,
+			left = 0;
+
+		if ( ! targetParent ) {
+			targetParent = $( $( this.s.dt.table().node() )[0].offsetParent );
+		}
+
+		do {
+			// Don't use jQuery().position() the behaviour changes between 1.x and 3.x for
+			// tables
+			var positionTop = currNode.offsetTop;
+			var positionLeft = currNode.offsetLeft;
+
+			// jQuery doesn't give a `table` as the offset parent oddly, so use DOM directly
+			currOffsetParent = $( currNode.offsetParent );
+
+			top += positionTop + parseInt( currOffsetParent.css('border-top-width') ) * 1;
+			left += positionLeft + parseInt( currOffsetParent.css('border-left-width') ) * 1;
+
+			// Emergency fall back. Shouldn't happen, but just in case!
+			if ( currNode.nodeName.toLowerCase() === 'body' ) {
+				break;
+			}
+
+			currNode = currOffsetParent.get(0); // for next loop
+		}
+		while ( currOffsetParent.get(0) !== targetParent.get(0) )
+
+		return {
+			top: top,
+			left: left
+		};
+	},
+
+
+	/**
+	 * Start mouse drag - selects the start cell
+	 *
+	 * @param  {object} e Mouse down event
+	 * @private
+	 */
+	_mousedown: function ( e )
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		this.dom.start = this.dom.attachedTo;
+		this.s.start = {
+			row: dt.rows( { page: 'current' } ).nodes().indexOf( $(this.dom.start).parent()[0] ),
+			column: $(this.dom.start).index()
+		};
+
+		$(document.body)
+			.on( 'mousemove.autoFill', function (e) {
+				that._mousemove( e );
+			} )
+			.on( 'mouseup.autoFill', function (e) {
+				that._mouseup( e );
+			} );
+
+		var select = this.dom.select;
+		var offsetParent = $( dt.table().node() ).offsetParent();
+		select.top.appendTo( offsetParent );
+		select.left.appendTo( offsetParent );
+		select.right.appendTo( offsetParent );
+		select.bottom.appendTo( offsetParent );
+
+		this._drawSelection( this.dom.start, e );
+
+		this.dom.handle.css( 'display', 'none' );
+
+		// Cache scrolling information so mouse move doesn't need to read.
+		// This assumes that the window and DT scroller will not change size
+		// during an AutoFill drag, which I think is a fair assumption
+		var scrollWrapper = this.dom.dtScroll;
+		this.s.scroll = {
+			windowHeight: $(window).height(),
+			windowWidth:  $(window).width(),
+			dtTop:        scrollWrapper ? scrollWrapper.offset().top : null,
+			dtLeft:       scrollWrapper ? scrollWrapper.offset().left : null,
+			dtHeight:     scrollWrapper ? scrollWrapper.outerHeight() : null,
+			dtWidth:      scrollWrapper ? scrollWrapper.outerWidth() : null
+		};
+	},
+
+
+	/**
+	 * Mouse drag - selects the end cell and update the selection display for
+	 * the end user
+	 *
+	 * @param  {object} e Mouse move event
+	 * @private
+	 */
+	_mousemove: function ( e )
+	{	
+		var that = this;
+		var dt = this.s.dt;
+		var name = e.target.nodeName.toLowerCase();
+		if ( name !== 'td' && name !== 'th' ) {
+			return;
+		}
+
+		this._drawSelection( e.target, e );
+		this._shiftScroll( e );
+	},
+
+
+	/**
+	 * End mouse drag - perform the update actions
+	 *
+	 * @param  {object} e Mouse up event
+	 * @private
+	 */
+	_mouseup: function ( e )
+	{
+		$(document.body).off( '.autoFill' );
+
+		var that = this;
+		var dt = this.s.dt;
+		var select = this.dom.select;
+		select.top.remove();
+		select.left.remove();
+		select.right.remove();
+		select.bottom.remove();
+
+		this.dom.handle.css( 'display', 'block' );
+
+		// Display complete - now do something useful with the selection!
+		var start = this.s.start;
+		var end = this.s.end;
+
+		// Haven't selected multiple cells, so nothing to do
+		if ( start.row === end.row && start.column === end.column ) {
+			return;
+		}
+
+		var startDt = dt.cell( ':eq('+start.row+')', start.column+':visible', {page:'current'} );
+
+		// If Editor is active inside this cell (inline editing) we need to wait for Editor to
+		// submit and then we can loop back and trigger the fill.
+		if ( $('div.DTE', startDt.node()).length ) {
+			var editor = dt.editor();
+
+			editor
+				.on( 'submitSuccess.dtaf close.dtaf', function () {
+					editor.off( '.dtaf');
+
+					setTimeout( function () {
+						that._mouseup( e );
+					}, 100 );
+				} )
+				.on( 'submitComplete.dtaf preSubmitCancelled.dtaf close.dtaf', function () {
+					editor.off( '.dtaf');
+				} );
+
+			// Make the current input submit
+			editor.submit();
+
+			return;
+		}
+
+		// Build a matrix representation of the selected rows
+		var rows       = this._range( start.row, end.row );
+		var columns    = this._range( start.column, end.column );
+		var selected   = [];
+		var dtSettings = dt.settings()[0];
+		var dtColumns  = dtSettings.aoColumns;
+		var enabledColumns = dt.columns( this.c.columns ).indexes();
+
+		// Can't use Array.prototype.map as IE8 doesn't support it
+		// Can't use $.map as jQuery flattens 2D arrays
+		// Need to use a good old fashioned for loop
+		for ( var rowIdx=0 ; rowIdx<rows.length ; rowIdx++ ) {
+			selected.push(
+				$.map( columns, function (column) {
+					var row = dt.row( ':eq('+rows[rowIdx]+')', {page:'current'} ); // Workaround for M581
+					var cell = dt.cell( row.index(), column+':visible' );
+					var data = cell.data();
+					var cellIndex = cell.index();
+					var editField = dtColumns[ cellIndex.column ].editField;
+
+					if ( editField !== undefined ) {
+						data = dtSettings.oApi._fnGetObjectDataFn( editField )( dt.row( cellIndex.row ).data() );
+					}
+
+					if ( enabledColumns.indexOf(cellIndex.column) === -1 ) {
+						return;
+					}
+
+					return {
+						cell:  cell,
+						data:  data,
+						label: cell.data(),
+						index: cellIndex
+					};
+				} )
+			);
+		}
+
+		this._actionSelector( selected );
+		
+		// Stop shiftScroll
+		clearInterval( this.s.scrollInterval );
+		this.s.scrollInterval = null;
+	},
+
+
+	/**
+	 * Create an array with a range of numbers defined by the start and end
+	 * parameters passed in (inclusive!).
+	 * 
+	 * @param  {integer} start Start
+	 * @param  {integer} end   End
+	 * @private
+	 */
+	_range: function ( start, end )
+	{
+		var out = [];
+		var i;
+
+		if ( start <= end ) {
+			for ( i=start ; i<=end ; i++ ) {
+				out.push( i );
+			}
+		}
+		else {
+			for ( i=start ; i>=end ; i-- ) {
+				out.push( i );
+			}
+		}
+
+		return out;
+	},
+
+
+	/**
+	 * Move the window and DataTables scrolling during a drag to scroll new
+	 * content into view. This is done by proximity to the edge of the scrolling
+	 * container of the mouse - for example near the top edge of the window
+	 * should scroll up. This is a little complicated as there are two elements
+	 * that can be scrolled - the window and the DataTables scrolling view port
+	 * (if scrollX and / or scrollY is enabled).
+	 *
+	 * @param  {object} e Mouse move event object
+	 * @private
+	 */
+	_shiftScroll: function ( e )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var scroll = this.s.scroll;
+		var runInterval = false;
+		var scrollSpeed = 5;
+		var buffer = 65;
+		var
+			windowY = e.pageY - document.body.scrollTop,
+			windowX = e.pageX - document.body.scrollLeft,
+			windowVert, windowHoriz,
+			dtVert, dtHoriz;
+
+		// Window calculations - based on the mouse position in the window,
+		// regardless of scrolling
+		if ( windowY < buffer ) {
+			windowVert = scrollSpeed * -1;
+		}
+		else if ( windowY > scroll.windowHeight - buffer ) {
+			windowVert = scrollSpeed;
+		}
+
+		if ( windowX < buffer ) {
+			windowHoriz = scrollSpeed * -1;
+		}
+		else if ( windowX > scroll.windowWidth - buffer ) {
+			windowHoriz = scrollSpeed;
+		}
+
+		// DataTables scrolling calculations - based on the table's position in
+		// the document and the mouse position on the page
+		if ( scroll.dtTop !== null && e.pageY < scroll.dtTop + buffer ) {
+			dtVert = scrollSpeed * -1;
+		}
+		else if ( scroll.dtTop !== null && e.pageY > scroll.dtTop + scroll.dtHeight - buffer ) {
+			dtVert = scrollSpeed;
+		}
+
+		if ( scroll.dtLeft !== null && e.pageX < scroll.dtLeft + buffer ) {
+			dtHoriz = scrollSpeed * -1;
+		}
+		else if ( scroll.dtLeft !== null && e.pageX > scroll.dtLeft + scroll.dtWidth - buffer ) {
+			dtHoriz = scrollSpeed;
+		}
+
+		// This is where it gets interesting. We want to continue scrolling
+		// without requiring a mouse move, so we need an interval to be
+		// triggered. The interval should continue until it is no longer needed,
+		// but it must also use the latest scroll commands (for example consider
+		// that the mouse might move from scrolling up to scrolling left, all
+		// with the same interval running. We use the `scroll` object to "pass"
+		// this information to the interval. Can't use local variables as they
+		// wouldn't be the ones that are used by an already existing interval!
+		if ( windowVert || windowHoriz || dtVert || dtHoriz ) {
+			scroll.windowVert = windowVert;
+			scroll.windowHoriz = windowHoriz;
+			scroll.dtVert = dtVert;
+			scroll.dtHoriz = dtHoriz;
+			runInterval = true;
+		}
+		else if ( this.s.scrollInterval ) {
+			// Don't need to scroll - remove any existing timer
+			clearInterval( this.s.scrollInterval );
+			this.s.scrollInterval = null;
+		}
+
+		// If we need to run the interval to scroll and there is no existing
+		// interval (if there is an existing one, it will continue to run)
+		if ( ! this.s.scrollInterval && runInterval ) {
+			this.s.scrollInterval = setInterval( function () {
+				// Don't need to worry about setting scroll <0 or beyond the
+				// scroll bound as the browser will just reject that.
+				if ( scroll.windowVert ) {
+					document.body.scrollTop += scroll.windowVert;
+				}
+				if ( scroll.windowHoriz ) {
+					document.body.scrollLeft += scroll.windowHoriz;
+				}
+
+				// DataTables scrolling
+				if ( scroll.dtVert || scroll.dtHoriz ) {
+					var scroller = that.dom.dtScroll[0];
+
+					if ( scroll.dtVert ) {
+						scroller.scrollTop += scroll.dtVert;
+					}
+					if ( scroll.dtHoriz ) {
+						scroller.scrollLeft += scroll.dtHoriz;
+					}
+				}
+			}, 20 );
+		}
+	},
+
+
+	/**
+	 * Update the DataTable after the user has selected what they want to do
+	 *
+	 * @param  {false|undefined} result Return from the `execute` method - can
+	 *   be false internally to do nothing. This is not documented for plug-ins
+	 *   and is used only by the cancel option.
+	 * @param {array} cells Information about the selected cells from the key
+	 *     up function, argumented with the set values
+	 * @private
+	 */
+	_update: function ( result, cells )
+	{
+		// Do nothing on `false` return from an execute function
+		if ( result === false ) {
+			return;
+		}
+
+		var dt = this.s.dt;
+		var cell;
+		var columns = dt.columns( this.c.columns ).indexes();
+
+		// Potentially allow modifications to the cells matrix
+		this._emitEvent( 'preAutoFill', [ dt, cells ] );
+
+		this._editor( cells );
+
+		// Automatic updates are not performed if `update` is null and the
+		// `editor` parameter is passed in - the reason being that Editor will
+		// update the data once submitted
+		var update = this.c.update !== null ?
+			this.c.update :
+			this.c.editor ?
+				false :
+				true;
+
+		if ( update ) {
+			for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+				for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+					cell = cells[i][j];
+
+					if ( columns.indexOf(cell.index.column) !== -1 ) {
+						cell.cell.data( cell.set );
+					}
+				}
+			}
+
+			dt.draw(false);
+		}
+
+		this._emitEvent( 'autoFill', [ dt, cells ] );
+	}
+} );
+
+
+/**
+ * AutoFill actions. The options here determine how AutoFill will fill the data
+ * in the table when the user has selected a range of cells. Please see the
+ * documentation on the DataTables site for full details on how to create plug-
+ * ins.
+ *
+ * @type {Object}
+ */
+AutoFill.actions = {
+	increment: {
+		available: function ( dt, cells ) {
+			var d = cells[0][0].label;
+
+			// is numeric test based on jQuery's old `isNumeric` function
+			return !isNaN( d - parseFloat( d ) );
+		},
+
+		option: function ( dt, cells ) {
+			return dt.i18n(
+				'autoFill.increment',
+				'Increment / decrement each cell by: <input type="number" value="1">'
+			);
+		},
+
+		execute: function ( dt, cells, node ) {
+			var value = cells[0][0].data * 1;
+			var increment = $('input', node).val() * 1;
+
+			for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+				for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+					cells[i][j].set = value;
+
+					value += increment;
+				}
+			}
+		}
+	},
+
+	fill: {
+		available: function ( dt, cells ) {
+			return true;
+		},
+
+		option: function ( dt, cells ) {
+			return dt.i18n('autoFill.fill', 'Fill all cells with <i>'+cells[0][0].label+'</i>' );
+		},
+
+		execute: function ( dt, cells, node ) {
+			var value = cells[0][0].data;
+
+			for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+				for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+					cells[i][j].set = value;
+				}
+			}
+		}
+	},
+
+	fillHorizontal: {
+		available: function ( dt, cells ) {
+			return cells.length > 1 && cells[0].length > 1;
+		},
+
+		option: function ( dt, cells ) {
+			return dt.i18n('autoFill.fillHorizontal', 'Fill cells horizontally' );
+		},
+
+		execute: function ( dt, cells, node ) {
+			for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+				for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+					cells[i][j].set = cells[i][0].data;
+				}
+			}
+		}
+	},
+
+	fillVertical: {
+		available: function ( dt, cells ) {
+			return cells.length > 1 && cells[0].length > 1;
+		},
+
+		option: function ( dt, cells ) {
+			return dt.i18n('autoFill.fillVertical', 'Fill cells vertically' );
+		},
+
+		execute: function ( dt, cells, node ) {
+			for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+				for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
+					cells[i][j].set = cells[0][j].data;
+				}
+			}
+		}
+	},
+
+	// Special type that does not make itself available, but is added
+	// automatically by AutoFill if a multi-choice list is shown. This allows
+	// sensible code reuse
+	cancel: {
+		available: function () {
+			return false;
+		},
+
+		option: function ( dt ) {
+			return dt.i18n('autoFill.cancel', 'Cancel' );
+		},
+
+		execute: function () {
+			return false;
+		}
+	}
+};
+
+
+/**
+ * AutoFill version
+ * 
+ * @static
+ * @type      String
+ */
+AutoFill.version = '2.3.4';
+
+
+/**
+ * AutoFill defaults
+ * 
+ * @namespace
+ */
+AutoFill.defaults = {
+	/** @type {Boolean} Ask user what they want to do, even for a single option */
+	alwaysAsk: false,
+
+	/** @type {string|null} What will trigger a focus */
+	focus: null, // focus, click, hover
+
+	/** @type {column-selector} Columns to provide auto fill for */
+	columns: '', // all
+
+	/** @type {Boolean} Enable AutoFill on load */
+	enable: true,
+
+	/** @type {boolean|null} Update the cells after a drag */
+	update: null, // false is editor given, true otherwise
+
+	/** @type {DataTable.Editor} Editor instance for automatic submission */
+	editor: null,
+
+	/** @type {boolean} Enable vertical fill */
+	vertical: true,
+
+	/** @type {boolean} Enable horizontal fill */
+	horizontal: true
+};
+
+
+/**
+ * Classes used by AutoFill that are configurable
+ * 
+ * @namespace
+ */
+AutoFill.classes = {
+	/** @type {String} Class used by the selection button */
+	btn: 'btn'
+};
+
+
+/*
+ * API
+ */
+var Api = $.fn.dataTable.Api;
+
+// Doesn't do anything - Not documented
+Api.register( 'autoFill()', function () {
+	return this;
+} );
+
+Api.register( 'autoFill().enabled()', function () {
+	var ctx = this.context[0];
+
+	return ctx.autoFill ?
+		ctx.autoFill.enabled() :
+		false;
+} );
+
+Api.register( 'autoFill().enable()', function ( flag ) {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx.autoFill ) {
+			ctx.autoFill.enable( flag );
+		}
+	} );
+} );
+
+Api.register( 'autoFill().disable()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx.autoFill ) {
+			ctx.autoFill.disable();
+		}
+	} );
+} );
+
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.autofill', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.autoFill;
+	var defaults = DataTable.defaults.autoFill;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, init, defaults );
+
+		if ( init !== false ) {
+			new AutoFill( settings, opts  );
+		}
+	}
+} );
+
+
+// Alias for access
+DataTable.AutoFill = AutoFill;
+DataTable.AutoFill = AutoFill;
+
+
+return AutoFill;
+}));
+
+
+/*! Bootstrap integration for DataTables' AutoFill
+ * ©2015 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-autofill'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.AutoFill ) {
+				require('datatables.net-autofill')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+DataTable.AutoFill.classes.btn = 'btn btn-primary';
+
+
+return DataTable;
+}));
+
+/*! Buttons for DataTables 1.6.1
+ * ©2016-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+// Used for namespacing events added to the document by each instance, so they
+// can be removed on destroy
+var _instCounter = 0;
+
+// Button namespacing counter for namespacing events on individual buttons
+var _buttonCounter = 0;
+
+var _dtButtons = DataTable.ext.buttons;
+
+/**
+ * [Buttons description]
+ * @param {[type]}
+ * @param {[type]}
+ */
+var Buttons = function( dt, config )
+{
+	// If not created with a `new` keyword then we return a wrapper function that
+	// will take the settings object for a DT. This allows easy use of new instances
+	// with the `layout` option - e.g. `topLeft: $.fn.dataTable.Buttons( ... )`.
+	if ( !(this instanceof Buttons) ) {
+		return function (settings) {
+			return new Buttons( settings, dt ).container();
+		};
+	}
+
+	// If there is no config set it to an empty object
+	if ( typeof( config ) === 'undefined' ) {
+		config = {};	
+	}
+	
+	// Allow a boolean true for defaults
+	if ( config === true ) {
+		config = {};
+	}
+
+	// For easy configuration of buttons an array can be given
+	if ( $.isArray( config ) ) {
+		config = { buttons: config };
+	}
+
+	this.c = $.extend( true, {}, Buttons.defaults, config );
+
+	// Don't want a deep copy for the buttons
+	if ( config.buttons ) {
+		this.c.buttons = config.buttons;
+	}
+
+	this.s = {
+		dt: new DataTable.Api( dt ),
+		buttons: [],
+		listenKeys: '',
+		namespace: 'dtb'+(_instCounter++)
+	};
+
+	this.dom = {
+		container: $('<'+this.c.dom.container.tag+'/>')
+			.addClass( this.c.dom.container.className )
+	};
+
+	this._constructor();
+};
+
+
+$.extend( Buttons.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods
+	 */
+
+	/**
+	 * Get the action of a button
+	 * @param  {int|string} Button index
+	 * @return {function}
+	 *//**
+	 * Set the action of a button
+	 * @param  {node} node Button element
+	 * @param  {function} action Function to set
+	 * @return {Buttons} Self for chaining
+	 */
+	action: function ( node, action )
+	{
+		var button = this._nodeToButton( node );
+
+		if ( action === undefined ) {
+			return button.conf.action;
+		}
+
+		button.conf.action = action;
+
+		return this;
+	},
+
+	/**
+	 * Add an active class to the button to make to look active or get current
+	 * active state.
+	 * @param  {node} node Button element
+	 * @param  {boolean} [flag] Enable / disable flag
+	 * @return {Buttons} Self for chaining or boolean for getter
+	 */
+	active: function ( node, flag ) {
+		var button = this._nodeToButton( node );
+		var klass = this.c.dom.button.active;
+		var jqNode = $(button.node);
+
+		if ( flag === undefined ) {
+			return jqNode.hasClass( klass );
+		}
+
+		jqNode.toggleClass( klass, flag === undefined ? true : flag );
+
+		return this;
+	},
+
+	/**
+	 * Add a new button
+	 * @param {object} config Button configuration object, base string name or function
+	 * @param {int|string} [idx] Button index for where to insert the button
+	 * @return {Buttons} Self for chaining
+	 */
+	add: function ( config, idx )
+	{
+		var buttons = this.s.buttons;
+
+		if ( typeof idx === 'string' ) {
+			var split = idx.split('-');
+			var base = this.s;
+
+			for ( var i=0, ien=split.length-1 ; i<ien ; i++ ) {
+				base = base.buttons[ split[i]*1 ];
+			}
+
+			buttons = base.buttons;
+			idx = split[ split.length-1 ]*1;
+		}
+
+		this._expandButton( buttons, config, base !== undefined, idx );
+		this._draw();
+
+		return this;
+	},
+
+	/**
+	 * Get the container node for the buttons
+	 * @return {jQuery} Buttons node
+	 */
+	container: function ()
+	{
+		return this.dom.container;
+	},
+
+	/**
+	 * Disable a button
+	 * @param  {node} node Button node
+	 * @return {Buttons} Self for chaining
+	 */
+	disable: function ( node ) {
+		var button = this._nodeToButton( node );
+
+		$(button.node).addClass( this.c.dom.button.disabled );
+
+		return this;
+	},
+
+	/**
+	 * Destroy the instance, cleaning up event handlers and removing DOM
+	 * elements
+	 * @return {Buttons} Self for chaining
+	 */
+	destroy: function ()
+	{
+		// Key event listener
+		$('body').off( 'keyup.'+this.s.namespace );
+
+		// Individual button destroy (so they can remove their own events if
+		// needed). Take a copy as the array is modified by `remove`
+		var buttons = this.s.buttons.slice();
+		var i, ien;
+		
+		for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+			this.remove( buttons[i].node );
+		}
+
+		// Container
+		this.dom.container.remove();
+
+		// Remove from the settings object collection
+		var buttonInsts = this.s.dt.settings()[0];
+
+		for ( i=0, ien=buttonInsts.length ; i<ien ; i++ ) {
+			if ( buttonInsts.inst === this ) {
+				buttonInsts.splice( i, 1 );
+				break;
+			}
+		}
+
+		return this;
+	},
+
+	/**
+	 * Enable / disable a button
+	 * @param  {node} node Button node
+	 * @param  {boolean} [flag=true] Enable / disable flag
+	 * @return {Buttons} Self for chaining
+	 */
+	enable: function ( node, flag )
+	{
+		if ( flag === false ) {
+			return this.disable( node );
+		}
+
+		var button = this._nodeToButton( node );
+		$(button.node).removeClass( this.c.dom.button.disabled );
+
+		return this;
+	},
+
+	/**
+	 * Get the instance name for the button set selector
+	 * @return {string} Instance name
+	 */
+	name: function ()
+	{
+		return this.c.name;
+	},
+
+	/**
+	 * Get a button's node of the buttons container if no button is given
+	 * @param  {node} [node] Button node
+	 * @return {jQuery} Button element, or container
+	 */
+	node: function ( node )
+	{
+		if ( ! node ) {
+			return this.dom.container;
+		}
+
+		var button = this._nodeToButton( node );
+		return $(button.node);
+	},
+
+	/**
+	 * Set / get a processing class on the selected button
+	 * @param {element} node Triggering button node
+	 * @param  {boolean} flag true to add, false to remove, undefined to get
+	 * @return {boolean|Buttons} Getter value or this if a setter.
+	 */
+	processing: function ( node, flag )
+	{
+		var dt = this.s.dt;
+		var button = this._nodeToButton( node );
+
+		if ( flag === undefined ) {
+			return $(button.node).hasClass( 'processing' );
+		}
+
+		$(button.node).toggleClass( 'processing', flag );
+
+		$(dt.table().node()).triggerHandler( 'buttons-processing.dt', [
+			flag, dt.button( node ), dt, $(node), button.conf
+		] );
+
+		return this;
+	},
+
+	/**
+	 * Remove a button.
+	 * @param  {node} node Button node
+	 * @return {Buttons} Self for chaining
+	 */
+	remove: function ( node )
+	{
+		var button = this._nodeToButton( node );
+		var host = this._nodeToHost( node );
+		var dt = this.s.dt;
+
+		// Remove any child buttons first
+		if ( button.buttons.length ) {
+			for ( var i=button.buttons.length-1 ; i>=0 ; i-- ) {
+				this.remove( button.buttons[i].node );
+			}
+		}
+
+		// Allow the button to remove event handlers, etc
+		if ( button.conf.destroy ) {
+			button.conf.destroy.call( dt.button(node), dt, $(node), button.conf );
+		}
+
+		this._removeKey( button.conf );
+
+		$(button.node).remove();
+
+		var idx = $.inArray( button, host );
+		host.splice( idx, 1 );
+
+		return this;
+	},
+
+	/**
+	 * Get the text for a button
+	 * @param  {int|string} node Button index
+	 * @return {string} Button text
+	 *//**
+	 * Set the text for a button
+	 * @param  {int|string|function} node Button index
+	 * @param  {string} label Text
+	 * @return {Buttons} Self for chaining
+	 */
+	text: function ( node, label )
+	{
+		var button = this._nodeToButton( node );
+		var buttonLiner = this.c.dom.collection.buttonLiner;
+		var linerTag = button.inCollection && buttonLiner && buttonLiner.tag ?
+			buttonLiner.tag :
+			this.c.dom.buttonLiner.tag;
+		var dt = this.s.dt;
+		var jqNode = $(button.node);
+		var text = function ( opt ) {
+			return typeof opt === 'function' ?
+				opt( dt, jqNode, button.conf ) :
+				opt;
+		};
+
+		if ( label === undefined ) {
+			return text( button.conf.text );
+		}
+
+		button.conf.text = label;
+
+		if ( linerTag ) {
+			jqNode.children( linerTag ).html( text(label) );
+		}
+		else {
+			jqNode.html( text(label) );
+		}
+
+		return this;
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Buttons constructor
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var dtSettings = dt.settings()[0];
+		var buttons =  this.c.buttons;
+
+		if ( ! dtSettings._buttons ) {
+			dtSettings._buttons = [];
+		}
+
+		dtSettings._buttons.push( {
+			inst: this,
+			name: this.c.name
+		} );
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			this.add( buttons[i] );
+		}
+
+		dt.on( 'destroy', function ( e, settings ) {
+			if ( settings === dtSettings ) {
+				that.destroy();
+			}
+		} );
+
+		// Global key event binding to listen for button keys
+		$('body').on( 'keyup.'+this.s.namespace, function ( e ) {
+			if ( ! document.activeElement || document.activeElement === document.body ) {
+				// SUse a string of characters for fast lookup of if we need to
+				// handle this
+				var character = String.fromCharCode(e.keyCode).toLowerCase();
+
+				if ( that.s.listenKeys.toLowerCase().indexOf( character ) !== -1 ) {
+					that._keypress( character, e );
+				}
+			}
+		} );
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Add a new button to the key press listener
+	 * @param {object} conf Resolved button configuration object
+	 * @private
+	 */
+	_addKey: function ( conf )
+	{
+		if ( conf.key ) {
+			this.s.listenKeys += $.isPlainObject( conf.key ) ?
+				conf.key.key :
+				conf.key;
+		}
+	},
+
+	/**
+	 * Insert the buttons into the container. Call without parameters!
+	 * @param  {node} [container] Recursive only - Insert point
+	 * @param  {array} [buttons] Recursive only - Buttons array
+	 * @private
+	 */
+	_draw: function ( container, buttons )
+	{
+		if ( ! container ) {
+			container = this.dom.container;
+			buttons = this.s.buttons;
+		}
+
+		container.children().detach();
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			container.append( buttons[i].inserter );
+			container.append( ' ' );
+
+			if ( buttons[i].buttons && buttons[i].buttons.length ) {
+				this._draw( buttons[i].collection, buttons[i].buttons );
+			}
+		}
+	},
+
+	/**
+	 * Create buttons from an array of buttons
+	 * @param  {array} attachTo Buttons array to attach to
+	 * @param  {object} button Button definition
+	 * @param  {boolean} inCollection true if the button is in a collection
+	 * @private
+	 */
+	_expandButton: function ( attachTo, button, inCollection, attachPoint )
+	{
+		var dt = this.s.dt;
+		var buttonCounter = 0;
+		var buttons = ! $.isArray( button ) ?
+			[ button ] :
+			button;
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			var conf = this._resolveExtends( buttons[i] );
+
+			if ( ! conf ) {
+				continue;
+			}
+
+			// If the configuration is an array, then expand the buttons at this
+			// point
+			if ( $.isArray( conf ) ) {
+				this._expandButton( attachTo, conf, inCollection, attachPoint );
+				continue;
+			}
+
+			var built = this._buildButton( conf, inCollection );
+			if ( ! built ) {
+				continue;
+			}
+
+			if ( attachPoint !== undefined ) {
+				attachTo.splice( attachPoint, 0, built );
+				attachPoint++;
+			}
+			else {
+				attachTo.push( built );
+			}
+
+			if ( built.conf.buttons ) {
+				built.collection = $('<'+this.c.dom.collection.tag+'/>');
+
+				built.conf._collection = built.collection;
+
+				this._expandButton( built.buttons, built.conf.buttons, true, attachPoint );
+			}
+
+			// init call is made here, rather than buildButton as it needs to
+			// be selectable, and for that it needs to be in the buttons array
+			if ( conf.init ) {
+				conf.init.call( dt.button( built.node ), dt, $(built.node), conf );
+			}
+
+			buttonCounter++;
+		}
+	},
+
+	/**
+	 * Create an individual button
+	 * @param  {object} config            Resolved button configuration
+	 * @param  {boolean} inCollection `true` if a collection button
+	 * @return {jQuery} Created button node (jQuery)
+	 * @private
+	 */
+	_buildButton: function ( config, inCollection )
+	{
+		var buttonDom = this.c.dom.button;
+		var linerDom = this.c.dom.buttonLiner;
+		var collectionDom = this.c.dom.collection;
+		var dt = this.s.dt;
+		var text = function ( opt ) {
+			return typeof opt === 'function' ?
+				opt( dt, button, config ) :
+				opt;
+		};
+
+		if ( inCollection && collectionDom.button ) {
+			buttonDom = collectionDom.button;
+		}
+
+		if ( inCollection && collectionDom.buttonLiner ) {
+			linerDom = collectionDom.buttonLiner;
+		}
+
+		// Make sure that the button is available based on whatever requirements
+		// it has. For example, Flash buttons require Flash
+		if ( config.available && ! config.available( dt, config ) ) {
+			return false;
+		}
+
+		var action = function ( e, dt, button, config ) {
+			config.action.call( dt.button( button ), e, dt, button, config );
+
+			$(dt.table().node()).triggerHandler( 'buttons-action.dt', [
+				dt.button( button ), dt, button, config 
+			] );
+		};
+
+		var tag = config.tag || buttonDom.tag;
+		var clickBlurs = config.clickBlurs === undefined ? true : config.clickBlurs
+		var button = $('<'+tag+'/>')
+			.addClass( buttonDom.className )
+			.attr( 'tabindex', this.s.dt.settings()[0].iTabIndex )
+			.attr( 'aria-controls', this.s.dt.table().node().id )
+			.on( 'click.dtb', function (e) {
+				e.preventDefault();
+
+				if ( ! button.hasClass( buttonDom.disabled ) && config.action ) {
+					action( e, dt, button, config );
+				}
+				if( clickBlurs ) {
+					button.blur();
+				}
+			} )
+			.on( 'keyup.dtb', function (e) {
+				if ( e.keyCode === 13 ) {
+					if ( ! button.hasClass( buttonDom.disabled ) && config.action ) {
+						action( e, dt, button, config );
+					}
+				}
+			} );
+
+		// Make `a` tags act like a link
+		if ( tag.toLowerCase() === 'a' ) {
+			button.attr( 'href', '#' );
+		}
+
+		// Button tags should have `type=button` so they don't have any default behaviour
+		if ( tag.toLowerCase() === 'button' ) {
+			button.attr( 'type', 'button' );
+		}
+
+		if ( linerDom.tag ) {
+			var liner = $('<'+linerDom.tag+'/>')
+				.html( text( config.text ) )
+				.addClass( linerDom.className );
+
+			if ( linerDom.tag.toLowerCase() === 'a' ) {
+				liner.attr( 'href', '#' );
+			}
+
+			button.append( liner );
+		}
+		else {
+			button.html( text( config.text ) );
+		}
+
+		if ( config.enabled === false ) {
+			button.addClass( buttonDom.disabled );
+		}
+
+		if ( config.className ) {
+			button.addClass( config.className );
+		}
+
+		if ( config.titleAttr ) {
+			button.attr( 'title', text( config.titleAttr ) );
+		}
+
+		if ( config.attr ) {
+			button.attr( config.attr );
+		}
+
+		if ( ! config.namespace ) {
+			config.namespace = '.dt-button-'+(_buttonCounter++);
+		}
+
+		var buttonContainer = this.c.dom.buttonContainer;
+		var inserter;
+		if ( buttonContainer && buttonContainer.tag ) {
+			inserter = $('<'+buttonContainer.tag+'/>')
+				.addClass( buttonContainer.className )
+				.append( button );
+		}
+		else {
+			inserter = button;
+		}
+
+		this._addKey( config );
+
+		// Style integration callback for DOM manipulation
+		// Note that this is _not_ documented. It is currently
+		// for style integration only
+		if( this.c.buttonCreated ) {
+			inserter = this.c.buttonCreated( config, inserter );
+		}
+
+		return {
+			conf:         config,
+			node:         button.get(0),
+			inserter:     inserter,
+			buttons:      [],
+			inCollection: inCollection,
+			collection:   null
+		};
+	},
+
+	/**
+	 * Get the button object from a node (recursive)
+	 * @param  {node} node Button node
+	 * @param  {array} [buttons] Button array, uses base if not defined
+	 * @return {object} Button object
+	 * @private
+	 */
+	_nodeToButton: function ( node, buttons )
+	{
+		if ( ! buttons ) {
+			buttons = this.s.buttons;
+		}
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			if ( buttons[i].node === node ) {
+				return buttons[i];
+			}
+
+			if ( buttons[i].buttons.length ) {
+				var ret = this._nodeToButton( node, buttons[i].buttons );
+
+				if ( ret ) {
+					return ret;
+				}
+			}
+		}
+	},
+
+	/**
+	 * Get container array for a button from a button node (recursive)
+	 * @param  {node} node Button node
+	 * @param  {array} [buttons] Button array, uses base if not defined
+	 * @return {array} Button's host array
+	 * @private
+	 */
+	_nodeToHost: function ( node, buttons )
+	{
+		if ( ! buttons ) {
+			buttons = this.s.buttons;
+		}
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			if ( buttons[i].node === node ) {
+				return buttons;
+			}
+
+			if ( buttons[i].buttons.length ) {
+				var ret = this._nodeToHost( node, buttons[i].buttons );
+
+				if ( ret ) {
+					return ret;
+				}
+			}
+		}
+	},
+
+	/**
+	 * Handle a key press - determine if any button's key configured matches
+	 * what was typed and trigger the action if so.
+	 * @param  {string} character The character pressed
+	 * @param  {object} e Key event that triggered this call
+	 * @private
+	 */
+	_keypress: function ( character, e )
+	{
+		// Check if this button press already activated on another instance of Buttons
+		if ( e._buttonsHandled ) {
+			return;
+		}
+
+		var run = function ( conf, node ) {
+			if ( ! conf.key ) {
+				return;
+			}
+
+			if ( conf.key === character ) {
+				e._buttonsHandled = true;
+				$(node).click();
+			}
+			else if ( $.isPlainObject( conf.key ) ) {
+				if ( conf.key.key !== character ) {
+					return;
+				}
+
+				if ( conf.key.shiftKey && ! e.shiftKey ) {
+					return;
+				}
+
+				if ( conf.key.altKey && ! e.altKey ) {
+					return;
+				}
+
+				if ( conf.key.ctrlKey && ! e.ctrlKey ) {
+					return;
+				}
+
+				if ( conf.key.metaKey && ! e.metaKey ) {
+					return;
+				}
+
+				// Made it this far - it is good
+				e._buttonsHandled = true;
+				$(node).click();
+			}
+		};
+
+		var recurse = function ( a ) {
+			for ( var i=0, ien=a.length ; i<ien ; i++ ) {
+				run( a[i].conf, a[i].node );
+
+				if ( a[i].buttons.length ) {
+					recurse( a[i].buttons );
+				}
+			}
+		};
+
+		recurse( this.s.buttons );
+	},
+
+	/**
+	 * Remove a key from the key listener for this instance (to be used when a
+	 * button is removed)
+	 * @param  {object} conf Button configuration
+	 * @private
+	 */
+	_removeKey: function ( conf )
+	{
+		if ( conf.key ) {
+			var character = $.isPlainObject( conf.key ) ?
+				conf.key.key :
+				conf.key;
+
+			// Remove only one character, as multiple buttons could have the
+			// same listening key
+			var a = this.s.listenKeys.split('');
+			var idx = $.inArray( character, a );
+			a.splice( idx, 1 );
+			this.s.listenKeys = a.join('');
+		}
+	},
+
+	/**
+	 * Resolve a button configuration
+	 * @param  {string|function|object} conf Button config to resolve
+	 * @return {object} Button configuration
+	 * @private
+	 */
+	_resolveExtends: function ( conf )
+	{
+		var dt = this.s.dt;
+		var i, ien;
+		var toConfObject = function ( base ) {
+			var loop = 0;
+
+			// Loop until we have resolved to a button configuration, or an
+			// array of button configurations (which will be iterated
+			// separately)
+			while ( ! $.isPlainObject(base) && ! $.isArray(base) ) {
+				if ( base === undefined ) {
+					return;
+				}
+
+				if ( typeof base === 'function' ) {
+					base = base( dt, conf );
+
+					if ( ! base ) {
+						return false;
+					}
+				}
+				else if ( typeof base === 'string' ) {
+					if ( ! _dtButtons[ base ] ) {
+						throw 'Unknown button type: '+base;
+					}
+
+					base = _dtButtons[ base ];
+				}
+
+				loop++;
+				if ( loop > 30 ) {
+					// Protect against misconfiguration killing the browser
+					throw 'Buttons: Too many iterations';
+				}
+			}
+
+			return $.isArray( base ) ?
+				base :
+				$.extend( {}, base );
+		};
+
+		conf = toConfObject( conf );
+
+		while ( conf && conf.extend ) {
+			// Use `toConfObject` in case the button definition being extended
+			// is itself a string or a function
+			if ( ! _dtButtons[ conf.extend ] ) {
+				throw 'Cannot extend unknown button type: '+conf.extend;
+			}
+
+			var objArray = toConfObject( _dtButtons[ conf.extend ] );
+			if ( $.isArray( objArray ) ) {
+				return objArray;
+			}
+			else if ( ! objArray ) {
+				// This is a little brutal as it might be possible to have a
+				// valid button without the extend, but if there is no extend
+				// then the host button would be acting in an undefined state
+				return false;
+			}
+
+			// Stash the current class name
+			var originalClassName = objArray.className;
+
+			conf = $.extend( {}, objArray, conf );
+
+			// The extend will have overwritten the original class name if the
+			// `conf` object also assigned a class, but we want to concatenate
+			// them so they are list that is combined from all extended buttons
+			if ( originalClassName && conf.className !== originalClassName ) {
+				conf.className = originalClassName+' '+conf.className;
+			}
+
+			// Buttons to be added to a collection  -gives the ability to define
+			// if buttons should be added to the start or end of a collection
+			var postfixButtons = conf.postfixButtons;
+			if ( postfixButtons ) {
+				if ( ! conf.buttons ) {
+					conf.buttons = [];
+				}
+
+				for ( i=0, ien=postfixButtons.length ; i<ien ; i++ ) {
+					conf.buttons.push( postfixButtons[i] );
+				}
+
+				conf.postfixButtons = null;
+			}
+
+			var prefixButtons = conf.prefixButtons;
+			if ( prefixButtons ) {
+				if ( ! conf.buttons ) {
+					conf.buttons = [];
+				}
+
+				for ( i=0, ien=prefixButtons.length ; i<ien ; i++ ) {
+					conf.buttons.splice( i, 0, prefixButtons[i] );
+				}
+
+				conf.prefixButtons = null;
+			}
+
+			// Although we want the `conf` object to overwrite almost all of
+			// the properties of the object being extended, the `extend`
+			// property should come from the object being extended
+			conf.extend = objArray.extend;
+		}
+
+		return conf;
+	},
+
+	/**
+	 * Display (and replace if there is an existing one) a popover attached to a button
+	 * @param {string|node} content Content to show
+	 * @param {DataTable.Api} hostButton DT API instance of the button
+	 * @param {object} inOpts Options (see object below for all options)
+	 */
+	_popover: function ( content, hostButton, inOpts ) {
+		var dt = hostButton;
+		var buttonsSettings = this.c;
+		var options = $.extend( {
+			align: 'button-left', // button-right, dt-container
+			autoClose: false,
+			background: true,
+			backgroundClassName: 'dt-button-background',
+			contentClassName: buttonsSettings.dom.collection.className,
+			collectionLayout: '',
+			collectionTitle: '',
+			dropup: false,
+			fade: 400,
+			rightAlignClassName: 'dt-button-right',
+			tag: buttonsSettings.dom.collection.tag
+		}, inOpts );
+		var hostNode = hostButton.node();
+
+		var close = function () {
+			$('.dt-button-collection').stop().fadeOut( options.fade, function () {
+				$(this).detach();
+			} );
+
+			$(dt.buttons( '[aria-haspopup="true"][aria-expanded="true"]' ).nodes())
+				.attr('aria-expanded', 'false');
+
+			$('div.dt-button-background').off( 'click.dtb-collection' );
+			Buttons.background( false, options.backgroundClassName, options.fade, hostNode );
+
+			$('body').off( '.dtb-collection' );
+			dt.off( 'buttons-action.b-internal' );
+		};
+
+		if (content === false) {
+			close();
+		}
+
+		var existingExpanded = $(dt.buttons( '[aria-haspopup="true"][aria-expanded="true"]' ).nodes());
+		if ( existingExpanded.length ) {
+			hostNode = existingExpanded.eq(0);
+
+			close();
+		}
+
+		var display = $('<div/>')
+			.addClass('dt-button-collection')
+			.addClass(options.collectionLayout)
+			.css('display', 'none');
+
+		content = $(content)
+			.addClass(options.contentClassName)
+			.attr('role', 'menu')
+			.appendTo(display);
+
+		hostNode.attr( 'aria-expanded', 'true' );
+
+		if ( hostNode.parents('body')[0] !== document.body ) {
+			hostNode = document.body.lastChild;
+		}
+
+		if ( options.collectionTitle ) {
+			display.prepend('<div class="dt-button-collection-title">'+options.collectionTitle+'</div>');
+		}
+
+		display
+			.insertAfter( hostNode )
+			.fadeIn( options.fade );
+
+		var tableContainer = $( hostButton.table().container() );
+		var position = display.css( 'position' );
+
+		if ( options.align === 'dt-container' ) {
+			hostNode = hostNode.parent();
+			display.css('width', tableContainer.width());
+		}
+
+		if ( position === 'absolute' ) {
+			var hostPosition = hostNode.position();
+
+			display.css( {
+				top: hostPosition.top + hostNode.outerHeight(),
+				left: hostPosition.left
+			} );
+
+			// calculate overflow when positioned beneath
+			var collectionHeight = display.outerHeight();
+			var collectionWidth = display.outerWidth();
+			var tableBottom = tableContainer.offset().top + tableContainer.height();
+			var listBottom = hostPosition.top + hostNode.outerHeight() + collectionHeight;
+			var bottomOverflow = listBottom - tableBottom;
+
+			// calculate overflow when positioned above
+			var listTop = hostPosition.top - collectionHeight;
+			var tableTop = tableContainer.offset().top;
+			var topOverflow = tableTop - listTop;
+
+			// if bottom overflow is larger, move to the top because it fits better, or if dropup is requested
+			var moveTop = hostPosition.top - collectionHeight - 5;
+			if ( (bottomOverflow > topOverflow || options.dropup) && -moveTop < tableTop ) {
+				display.css( 'top', moveTop);
+			}
+
+			// Right alignment is enabled on a class, e.g. bootstrap:
+			// $.fn.dataTable.Buttons.defaults.dom.collection.className += " dropdown-menu-right"; 
+			if ( display.hasClass( options.rightAlignClassName ) || options.align === 'button-right' ) {
+				display.css( 'left', hostPosition.left + hostNode.outerWidth() - collectionWidth );
+			}
+
+			// Right alignment in table container
+			var listRight = hostPosition.left + collectionWidth;
+			var tableRight = tableContainer.offset().left + tableContainer.width();
+			if ( listRight > tableRight ) {
+				display.css( 'left', hostPosition.left - ( listRight - tableRight ) );
+			}
+
+			// Right alignment to window
+			var listOffsetRight = hostNode.offset().left + collectionWidth;
+			if ( listOffsetRight > $(window).width() ) {
+				display.css( 'left', hostPosition.left - (listOffsetRight-$(window).width()) );
+			}
+		}
+		else {
+			// Fix position - centre on screen
+			var top = display.height() / 2;
+			if ( top > $(window).height() / 2 ) {
+				top = $(window).height() / 2;
+			}
+
+			display.css( 'marginTop', top*-1 );
+		}
+
+		if ( options.background ) {
+			Buttons.background( true, options.backgroundClassName, options.fade, hostNode );
+		}
+
+		// This is bonkers, but if we don't have a click listener on the
+		// background element, iOS Safari will ignore the body click
+		// listener below. An empty function here is all that is
+		// required to make it work...
+		$('div.dt-button-background').on( 'click.dtb-collection', function () {} );
+
+		$('body')
+			.on( 'click.dtb-collection', function (e) {
+				// andSelf is deprecated in jQ1.8, but we want 1.7 compat
+				var back = $.fn.addBack ? 'addBack' : 'andSelf';
+
+				if ( ! $(e.target).parents()[back]().filter( content ).length ) {
+					close();
+				}
+			} )
+			.on( 'keyup.dtb-collection', function (e) {
+				if ( e.keyCode === 27 ) {
+					close();
+				}
+			} );
+
+		if ( options.autoClose ) {
+			setTimeout( function () {
+				dt.on( 'buttons-action.b-internal', function (e, btn, dt, node) {
+					if ( node[0] === hostNode[0] ) {
+						return;
+					}
+					close();
+				} );
+			}, 0);
+		}
+	}
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Statics
+ */
+
+/**
+ * Show / hide a background layer behind a collection
+ * @param  {boolean} Flag to indicate if the background should be shown or
+ *   hidden 
+ * @param  {string} Class to assign to the background
+ * @static
+ */
+Buttons.background = function ( show, className, fade, insertPoint ) {
+	if ( fade === undefined ) {
+		fade = 400;
+	}
+	if ( ! insertPoint ) {
+		insertPoint = document.body;
+	}
+
+	if ( show ) {
+		$('<div/>')
+			.addClass( className )
+			.css( 'display', 'none' )
+			.insertAfter( insertPoint )
+			.stop()
+			.fadeIn( fade );
+	}
+	else {
+		$('div.'+className)
+			.stop()
+			.fadeOut( fade, function () {
+				$(this)
+					.removeClass( className )
+					.remove();
+			} );
+	}
+};
+
+/**
+ * Instance selector - select Buttons instances based on an instance selector
+ * value from the buttons assigned to a DataTable. This is only useful if
+ * multiple instances are attached to a DataTable.
+ * @param  {string|int|array} Instance selector - see `instance-selector`
+ *   documentation on the DataTables site
+ * @param  {array} Button instance array that was attached to the DataTables
+ *   settings object
+ * @return {array} Buttons instances
+ * @static
+ */
+Buttons.instanceSelector = function ( group, buttons )
+{
+	if ( group === undefined || group === null ) {
+		return $.map( buttons, function ( v ) {
+			return v.inst;
+		} );
+	}
+
+	var ret = [];
+	var names = $.map( buttons, function ( v ) {
+		return v.name;
+	} );
+
+	// Flatten the group selector into an array of single options
+	var process = function ( input ) {
+		if ( $.isArray( input ) ) {
+			for ( var i=0, ien=input.length ; i<ien ; i++ ) {
+				process( input[i] );
+			}
+			return;
+		}
+
+		if ( typeof input === 'string' ) {
+			if ( input.indexOf( ',' ) !== -1 ) {
+				// String selector, list of names
+				process( input.split(',') );
+			}
+			else {
+				// String selector individual name
+				var idx = $.inArray( $.trim(input), names );
+
+				if ( idx !== -1 ) {
+					ret.push( buttons[ idx ].inst );
+				}
+			}
+		}
+		else if ( typeof input === 'number' ) {
+			// Index selector
+			ret.push( buttons[ input ].inst );
+		}
+	};
+	
+	process( group );
+
+	return ret;
+};
+
+/**
+ * Button selector - select one or more buttons from a selector input so some
+ * operation can be performed on them.
+ * @param  {array} Button instances array that the selector should operate on
+ * @param  {string|int|node|jQuery|array} Button selector - see
+ *   `button-selector` documentation on the DataTables site
+ * @return {array} Array of objects containing `inst` and `idx` properties of
+ *   the selected buttons so you know which instance each button belongs to.
+ * @static
+ */
+Buttons.buttonSelector = function ( insts, selector )
+{
+	var ret = [];
+	var nodeBuilder = function ( a, buttons, baseIdx ) {
+		var button;
+		var idx;
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			button = buttons[i];
+
+			if ( button ) {
+				idx = baseIdx !== undefined ?
+					baseIdx+i :
+					i+'';
+
+				a.push( {
+					node: button.node,
+					name: button.conf.name,
+					idx:  idx
+				} );
+
+				if ( button.buttons ) {
+					nodeBuilder( a, button.buttons, idx+'-' );
+				}
+			}
+		}
+	};
+
+	var run = function ( selector, inst ) {
+		var i, ien;
+		var buttons = [];
+		nodeBuilder( buttons, inst.s.buttons );
+
+		var nodes = $.map( buttons, function (v) {
+			return v.node;
+		} );
+
+		if ( $.isArray( selector ) || selector instanceof $ ) {
+			for ( i=0, ien=selector.length ; i<ien ; i++ ) {
+				run( selector[i], inst );
+			}
+			return;
+		}
+
+		if ( selector === null || selector === undefined || selector === '*' ) {
+			// Select all
+			for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+				ret.push( {
+					inst: inst,
+					node: buttons[i].node
+				} );
+			}
+		}
+		else if ( typeof selector === 'number' ) {
+			// Main button index selector
+			ret.push( {
+				inst: inst,
+				node: inst.s.buttons[ selector ].node
+			} );
+		}
+		else if ( typeof selector === 'string' ) {
+			if ( selector.indexOf( ',' ) !== -1 ) {
+				// Split
+				var a = selector.split(',');
+
+				for ( i=0, ien=a.length ; i<ien ; i++ ) {
+					run( $.trim(a[i]), inst );
+				}
+			}
+			else if ( selector.match( /^\d+(\-\d+)*$/ ) ) {
+				// Sub-button index selector
+				var indexes = $.map( buttons, function (v) {
+					return v.idx;
+				} );
+
+				ret.push( {
+					inst: inst,
+					node: buttons[ $.inArray( selector, indexes ) ].node
+				} );
+			}
+			else if ( selector.indexOf( ':name' ) !== -1 ) {
+				// Button name selector
+				var name = selector.replace( ':name', '' );
+
+				for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+					if ( buttons[i].name === name ) {
+						ret.push( {
+							inst: inst,
+							node: buttons[i].node
+						} );
+					}
+				}
+			}
+			else {
+				// jQuery selector on the nodes
+				$( nodes ).filter( selector ).each( function () {
+					ret.push( {
+						inst: inst,
+						node: this
+					} );
+				} );
+			}
+		}
+		else if ( typeof selector === 'object' && selector.nodeName ) {
+			// Node selector
+			var idx = $.inArray( selector, nodes );
+
+			if ( idx !== -1 ) {
+				ret.push( {
+					inst: inst,
+					node: nodes[ idx ]
+				} );
+			}
+		}
+	};
+
+
+	for ( var i=0, ien=insts.length ; i<ien ; i++ ) {
+		var inst = insts[i];
+
+		run( selector, inst );
+	}
+
+	return ret;
+};
+
+
+/**
+ * Buttons defaults. For full documentation, please refer to the docs/option
+ * directory or the DataTables site.
+ * @type {Object}
+ * @static
+ */
+Buttons.defaults = {
+	buttons: [ 'copy', 'excel', 'csv', 'pdf', 'print' ],
+	name: 'main',
+	tabIndex: 0,
+	dom: {
+		container: {
+			tag: 'div',
+			className: 'dt-buttons'
+		},
+		collection: {
+			tag: 'div',
+			className: ''
+		},
+		button: {
+			// Flash buttons will not work with `<button>` in IE - it has to be `<a>`
+			tag: 'ActiveXObject' in window ?
+				'a' :
+				'button',
+			className: 'dt-button',
+			active: 'active',
+			disabled: 'disabled'
+		},
+		buttonLiner: {
+			tag: 'span',
+			className: ''
+		}
+	}
+};
+
+/**
+ * Version information
+ * @type {string}
+ * @static
+ */
+Buttons.version = '1.6.1';
+
+
+$.extend( _dtButtons, {
+	collection: {
+		text: function ( dt ) {
+			return dt.i18n( 'buttons.collection', 'Collection' );
+		},
+		className: 'buttons-collection',
+		init: function ( dt, button, config ) {
+			button.attr( 'aria-expanded', false );
+		},
+		action: function ( e, dt, button, config ) {
+			e.stopPropagation();
+
+			if ( config._collection.parents('body').length ) {
+				this.popover(false, config);
+			}
+			else {
+				this.popover(config._collection, config);
+			}
+		},
+		attr: {
+			'aria-haspopup': true
+		}
+		// Also the popover options, defined in Buttons.popover
+	},
+	copy: function ( dt, conf ) {
+		if ( _dtButtons.copyHtml5 ) {
+			return 'copyHtml5';
+		}
+		if ( _dtButtons.copyFlash && _dtButtons.copyFlash.available( dt, conf ) ) {
+			return 'copyFlash';
+		}
+	},
+	csv: function ( dt, conf ) {
+		// Common option that will use the HTML5 or Flash export buttons
+		if ( _dtButtons.csvHtml5 && _dtButtons.csvHtml5.available( dt, conf ) ) {
+			return 'csvHtml5';
+		}
+		if ( _dtButtons.csvFlash && _dtButtons.csvFlash.available( dt, conf ) ) {
+			return 'csvFlash';
+		}
+	},
+	excel: function ( dt, conf ) {
+		// Common option that will use the HTML5 or Flash export buttons
+		if ( _dtButtons.excelHtml5 && _dtButtons.excelHtml5.available( dt, conf ) ) {
+			return 'excelHtml5';
+		}
+		if ( _dtButtons.excelFlash && _dtButtons.excelFlash.available( dt, conf ) ) {
+			return 'excelFlash';
+		}
+	},
+	pdf: function ( dt, conf ) {
+		// Common option that will use the HTML5 or Flash export buttons
+		if ( _dtButtons.pdfHtml5 && _dtButtons.pdfHtml5.available( dt, conf ) ) {
+			return 'pdfHtml5';
+		}
+		if ( _dtButtons.pdfFlash && _dtButtons.pdfFlash.available( dt, conf ) ) {
+			return 'pdfFlash';
+		}
+	},
+	pageLength: function ( dt ) {
+		var lengthMenu = dt.settings()[0].aLengthMenu;
+		var vals = $.isArray( lengthMenu[0] ) ? lengthMenu[0] : lengthMenu;
+		var lang = $.isArray( lengthMenu[0] ) ? lengthMenu[1] : lengthMenu;
+		var text = function ( dt ) {
+			return dt.i18n( 'buttons.pageLength', {
+				"-1": 'Show all rows',
+				_:    'Show %d rows'
+			}, dt.page.len() );
+		};
+
+		return {
+			extend: 'collection',
+			text: text,
+			className: 'buttons-page-length',
+			autoClose: true,
+			buttons: $.map( vals, function ( val, i ) {
+				return {
+					text: lang[i],
+					className: 'button-page-length',
+					action: function ( e, dt ) {
+						dt.page.len( val ).draw();
+					},
+					init: function ( dt, node, conf ) {
+						var that = this;
+						var fn = function () {
+							that.active( dt.page.len() === val );
+						};
+
+						dt.on( 'length.dt'+conf.namespace, fn );
+						fn();
+					},
+					destroy: function ( dt, node, conf ) {
+						dt.off( 'length.dt'+conf.namespace );
+					}
+				};
+			} ),
+			init: function ( dt, node, conf ) {
+				var that = this;
+				dt.on( 'length.dt'+conf.namespace, function () {
+					that.text( conf.text );
+				} );
+			},
+			destroy: function ( dt, node, conf ) {
+				dt.off( 'length.dt'+conf.namespace );
+			}
+		};
+	}
+} );
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables API
+ *
+ * For complete documentation, please refer to the docs/api directory or the
+ * DataTables site
+ */
+
+// Buttons group and individual button selector
+DataTable.Api.register( 'buttons()', function ( group, selector ) {
+	// Argument shifting
+	if ( selector === undefined ) {
+		selector = group;
+		group = undefined;
+	}
+
+	this.selector.buttonGroup = group;
+
+	var res = this.iterator( true, 'table', function ( ctx ) {
+		if ( ctx._buttons ) {
+			return Buttons.buttonSelector(
+				Buttons.instanceSelector( group, ctx._buttons ),
+				selector
+			);
+		}
+	}, true );
+
+	res._groupSelector = group;
+	return res;
+} );
+
+// Individual button selector
+DataTable.Api.register( 'button()', function ( group, selector ) {
+	// just run buttons() and truncate
+	var buttons = this.buttons( group, selector );
+
+	if ( buttons.length > 1 ) {
+		buttons.splice( 1, buttons.length );
+	}
+
+	return buttons;
+} );
+
+// Active buttons
+DataTable.Api.registerPlural( 'buttons().active()', 'button().active()', function ( flag ) {
+	if ( flag === undefined ) {
+		return this.map( function ( set ) {
+			return set.inst.active( set.node );
+		} );
+	}
+
+	return this.each( function ( set ) {
+		set.inst.active( set.node, flag );
+	} );
+} );
+
+// Get / set button action
+DataTable.Api.registerPlural( 'buttons().action()', 'button().action()', function ( action ) {
+	if ( action === undefined ) {
+		return this.map( function ( set ) {
+			return set.inst.action( set.node );
+		} );
+	}
+
+	return this.each( function ( set ) {
+		set.inst.action( set.node, action );
+	} );
+} );
+
+// Enable / disable buttons
+DataTable.Api.register( ['buttons().enable()', 'button().enable()'], function ( flag ) {
+	return this.each( function ( set ) {
+		set.inst.enable( set.node, flag );
+	} );
+} );
+
+// Disable buttons
+DataTable.Api.register( ['buttons().disable()', 'button().disable()'], function () {
+	return this.each( function ( set ) {
+		set.inst.disable( set.node );
+	} );
+} );
+
+// Get button nodes
+DataTable.Api.registerPlural( 'buttons().nodes()', 'button().node()', function () {
+	var jq = $();
+
+	// jQuery will automatically reduce duplicates to a single entry
+	$( this.each( function ( set ) {
+		jq = jq.add( set.inst.node( set.node ) );
+	} ) );
+
+	return jq;
+} );
+
+// Get / set button processing state
+DataTable.Api.registerPlural( 'buttons().processing()', 'button().processing()', function ( flag ) {
+	if ( flag === undefined ) {
+		return this.map( function ( set ) {
+			return set.inst.processing( set.node );
+		} );
+	}
+
+	return this.each( function ( set ) {
+		set.inst.processing( set.node, flag );
+	} );
+} );
+
+// Get / set button text (i.e. the button labels)
+DataTable.Api.registerPlural( 'buttons().text()', 'button().text()', function ( label ) {
+	if ( label === undefined ) {
+		return this.map( function ( set ) {
+			return set.inst.text( set.node );
+		} );
+	}
+
+	return this.each( function ( set ) {
+		set.inst.text( set.node, label );
+	} );
+} );
+
+// Trigger a button's action
+DataTable.Api.registerPlural( 'buttons().trigger()', 'button().trigger()', function () {
+	return this.each( function ( set ) {
+		set.inst.node( set.node ).trigger( 'click' );
+	} );
+} );
+
+// Button resolver to the popover
+DataTable.Api.register( 'button().popover()', function (content, options) {
+	return this.map( function ( set ) {
+		return set.inst._popover( content, this.button(this[0].node), options );
+	} );
+} );
+
+// Get the container elements
+DataTable.Api.register( 'buttons().containers()', function () {
+	var jq = $();
+	var groupSelector = this._groupSelector;
+
+	// We need to use the group selector directly, since if there are no buttons
+	// the result set will be empty
+	this.iterator( true, 'table', function ( ctx ) {
+		if ( ctx._buttons ) {
+			var insts = Buttons.instanceSelector( groupSelector, ctx._buttons );
+
+			for ( var i=0, ien=insts.length ; i<ien ; i++ ) {
+				jq = jq.add( insts[i].container() );
+			}
+		}
+	} );
+
+	return jq;
+} );
+
+DataTable.Api.register( 'buttons().container()', function () {
+	// API level of nesting is `buttons()` so we can zip into the containers method
+	return this.containers().eq(0);
+} );
+
+// Add a new button
+DataTable.Api.register( 'button().add()', function ( idx, conf ) {
+	var ctx = this.context;
+
+	// Don't use `this` as it could be empty - select the instances directly
+	if ( ctx.length ) {
+		var inst = Buttons.instanceSelector( this._groupSelector, ctx[0]._buttons );
+
+		if ( inst.length ) {
+			inst[0].add( conf, idx );
+		}
+	}
+
+	return this.button( this._groupSelector, idx );
+} );
+
+// Destroy the button sets selected
+DataTable.Api.register( 'buttons().destroy()', function () {
+	this.pluck( 'inst' ).unique().each( function ( inst ) {
+		inst.destroy();
+	} );
+
+	return this;
+} );
+
+// Remove a button
+DataTable.Api.registerPlural( 'buttons().remove()', 'buttons().remove()', function () {
+	this.each( function ( set ) {
+		set.inst.remove( set.node );
+	} );
+
+	return this;
+} );
+
+// Information box that can be used by buttons
+var _infoTimer;
+DataTable.Api.register( 'buttons.info()', function ( title, message, time ) {
+	var that = this;
+
+	if ( title === false ) {
+		this.off('destroy.btn-info');
+		$('#datatables_buttons_info').fadeOut( function () {
+			$(this).remove();
+		} );
+		clearTimeout( _infoTimer );
+		_infoTimer = null;
+
+		return this;
+	}
+
+	if ( _infoTimer ) {
+		clearTimeout( _infoTimer );
+	}
+
+	if ( $('#datatables_buttons_info').length ) {
+		$('#datatables_buttons_info').remove();
+	}
+
+	title = title ? '<h2>'+title+'</h2>' : '';
+
+	$('<div id="datatables_buttons_info" class="dt-button-info"/>')
+		.html( title )
+		.append( $('<div/>')[ typeof message === 'string' ? 'html' : 'append' ]( message ) )
+		.css( 'display', 'none' )
+		.appendTo( 'body' )
+		.fadeIn();
+
+	if ( time !== undefined && time !== 0 ) {
+		_infoTimer = setTimeout( function () {
+			that.buttons.info( false );
+		}, time );
+	}
+
+	this.on('destroy.btn-info', function () {
+		that.buttons.info(false);
+	});
+
+	return this;
+} );
+
+// Get data from the table for export - this is common to a number of plug-in
+// buttons so it is included in the Buttons core library
+DataTable.Api.register( 'buttons.exportData()', function ( options ) {
+	if ( this.context.length ) {
+		return _exportData( new DataTable.Api( this.context[0] ), options );
+	}
+} );
+
+// Get information about the export that is common to many of the export data
+// types (DRY)
+DataTable.Api.register( 'buttons.exportInfo()', function ( conf ) {
+	if ( ! conf ) {
+		conf = {};
+	}
+
+	return {
+		filename: _filename( conf ),
+		title: _title( conf ),
+		messageTop: _message(this, conf.message || conf.messageTop, 'top'),
+		messageBottom: _message(this, conf.messageBottom, 'bottom')
+	};
+} );
+
+
+
+/**
+ * Get the file name for an exported file.
+ *
+ * @param {object}	config Button configuration
+ * @param {boolean} incExtension Include the file name extension
+ */
+var _filename = function ( config )
+{
+	// Backwards compatibility
+	var filename = config.filename === '*' && config.title !== '*' && config.title !== undefined && config.title !== null && config.title !== '' ?
+		config.title :
+		config.filename;
+
+	if ( typeof filename === 'function' ) {
+		filename = filename();
+	}
+
+	if ( filename === undefined || filename === null ) {
+		return null;
+	}
+
+	if ( filename.indexOf( '*' ) !== -1 ) {
+		filename = $.trim( filename.replace( '*', $('head > title').text() ) );
+	}
+
+	// Strip characters which the OS will object to
+	filename = filename.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, "");
+
+	var extension = _stringOrFunction( config.extension );
+	if ( ! extension ) {
+		extension = '';
+	}
+
+	return filename + extension;
+};
+
+/**
+ * Simply utility method to allow parameters to be given as a function
+ *
+ * @param {undefined|string|function} option Option
+ * @return {null|string} Resolved value
+ */
+var _stringOrFunction = function ( option )
+{
+	if ( option === null || option === undefined ) {
+		return null;
+	}
+	else if ( typeof option === 'function' ) {
+		return option();
+	}
+	return option;
+};
+
+/**
+ * Get the title for an exported file.
+ *
+ * @param {object} config	Button configuration
+ */
+var _title = function ( config )
+{
+	var title = _stringOrFunction( config.title );
+
+	return title === null ?
+		null : title.indexOf( '*' ) !== -1 ?
+			title.replace( '*', $('head > title').text() || 'Exported data' ) :
+			title;
+};
+
+var _message = function ( dt, option, position )
+{
+	var message = _stringOrFunction( option );
+	if ( message === null ) {
+		return null;
+	}
+
+	var caption = $('caption', dt.table().container()).eq(0);
+	if ( message === '*' ) {
+		var side = caption.css( 'caption-side' );
+		if ( side !== position ) {
+			return null;
+		}
+
+		return caption.length ?
+			caption.text() :
+			'';
+	}
+
+	return message;
+};
+
+
+
+
+
+
+
+var _exportTextarea = $('<textarea/>')[0];
+var _exportData = function ( dt, inOpts )
+{
+	var config = $.extend( true, {}, {
+		rows:           null,
+		columns:        '',
+		modifier:       {
+			search: 'applied',
+			order:  'applied'
+		},
+		orthogonal:     'display',
+		stripHtml:      true,
+		stripNewlines:  true,
+		decodeEntities: true,
+		trim:           true,
+		format:         {
+			header: function ( d ) {
+				return strip( d );
+			},
+			footer: function ( d ) {
+				return strip( d );
+			},
+			body: function ( d ) {
+				return strip( d );
+			}
+		},
+		customizeData: null
+	}, inOpts );
+
+	var strip = function ( str ) {
+		if ( typeof str !== 'string' ) {
+			return str;
+		}
+
+		// Always remove script tags
+		str = str.replace( /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '' );
+
+		// Always remove comments
+		str = str.replace( /<!\-\-.*?\-\->/g, '' );
+
+		if ( config.stripHtml ) {
+			str = str.replace( /<[^>]*>/g, '' );
+		}
+
+		if ( config.trim ) {
+			str = str.replace( /^\s+|\s+$/g, '' );
+		}
+
+		if ( config.stripNewlines ) {
+			str = str.replace( /\n/g, ' ' );
+		}
+
+		if ( config.decodeEntities ) {
+			_exportTextarea.innerHTML = str;
+			str = _exportTextarea.value;
+		}
+
+		return str;
+	};
+
+
+	var header = dt.columns( config.columns ).indexes().map( function (idx) {
+		var el = dt.column( idx ).header();
+		return config.format.header( el.innerHTML, idx, el );
+	} ).toArray();
+
+	var footer = dt.table().footer() ?
+		dt.columns( config.columns ).indexes().map( function (idx) {
+			var el = dt.column( idx ).footer();
+			return config.format.footer( el ? el.innerHTML : '', idx, el );
+		} ).toArray() :
+		null;
+	
+	// If Select is available on this table, and any rows are selected, limit the export
+	// to the selected rows. If no rows are selected, all rows will be exported. Specify
+	// a `selected` modifier to control directly.
+	var modifier = $.extend( {}, config.modifier );
+	if ( dt.select && typeof dt.select.info === 'function' && modifier.selected === undefined ) {
+		if ( dt.rows( config.rows, $.extend( { selected: true }, modifier ) ).any() ) {
+			$.extend( modifier, { selected: true } )
+		}
+	}
+
+	var rowIndexes = dt.rows( config.rows, modifier ).indexes().toArray();
+	var selectedCells = dt.cells( rowIndexes, config.columns );
+	var cells = selectedCells
+		.render( config.orthogonal )
+		.toArray();
+	var cellNodes = selectedCells
+		.nodes()
+		.toArray();
+
+	var columns = header.length;
+	var rows = columns > 0 ? cells.length / columns : 0;
+	var body = [];
+	var cellCounter = 0;
+
+	for ( var i=0, ien=rows ; i<ien ; i++ ) {
+		var row = [ columns ];
+
+		for ( var j=0 ; j<columns ; j++ ) {
+			row[j] = config.format.body( cells[ cellCounter ], i, j, cellNodes[ cellCounter ] );
+			cellCounter++;
+		}
+
+		body[i] = row;
+	}
+
+	var data = {
+		header: header,
+		footer: footer,
+		body:   body
+	};
+
+	if ( config.customizeData ) {
+		config.customizeData( data );
+	}
+
+	return data;
+};
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables interface
+ */
+
+// Attach to DataTables objects for global access
+$.fn.dataTable.Buttons = Buttons;
+$.fn.DataTable.Buttons = Buttons;
+
+
+
+// DataTables creation - check if the buttons have been defined for this table,
+// they will have been if the `B` option was used in `dom`, otherwise we should
+// create the buttons instance here so they can be inserted into the document
+// using the API. Listen for `init` for compatibility with pre 1.10.10, but to
+// be removed in future.
+$(document).on( 'init.dt plugin-init.dt', function (e, settings) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var opts = settings.oInit.buttons || DataTable.defaults.buttons;
+
+	if ( opts && ! settings._buttons ) {
+		new Buttons( settings, opts ).container();
+	}
+} );
+
+function _init ( settings ) {
+	var api = new DataTable.Api( settings );
+	var opts = api.init().buttons || DataTable.defaults.buttons;
+
+	return new Buttons( api, opts ).container();
+}
+
+// DataTables `dom` feature option
+DataTable.ext.feature.push( {
+	fnInit: _init,
+	cFeature: "B"
+} );
+
+// DataTables 2 layout feature
+if ( DataTable.ext.features ) {
+	DataTable.ext.features.register( 'buttons', _init );
+}
+
+
+return Buttons;
+}));
+
+
+/*! Bootstrap integration for DataTables' Buttons
+ * ©2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net-bs4', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net-bs4')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+$.extend( true, DataTable.Buttons.defaults, {
+	dom: {
+		container: {
+			className: 'dt-buttons btn-group flex-wrap'
+		},
+		button: {
+			className: 'btn btn-secondary'
+		},
+		collection: {
+			tag: 'div',
+			className: 'dropdown-menu',
+			button: {
+				tag: 'a',
+				className: 'dt-button dropdown-item',
+				active: 'active',
+				disabled: 'disabled'
+			}
+		}
+	},
+	buttonCreated: function ( config, button ) {
+		return config.buttons ?
+			$('<div class="btn-group"/>').append(button) :
+			button;
+	}
+} );
+
+DataTable.ext.buttons.collection.className += ' dropdown-toggle';
+DataTable.ext.buttons.collection.rightAlignClassName = 'dropdown-menu-right';
+
+return DataTable.Buttons;
+}));
+
+
+/*!
+ * Column visibility buttons for Buttons and DataTables.
+ * 2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend( DataTable.ext.buttons, {
+	// A collection of column visibility buttons
+	colvis: function ( dt, conf ) {
+		return {
+			extend: 'collection',
+			text: function ( dt ) {
+				return dt.i18n( 'buttons.colvis', 'Column visibility' );
+			},
+			className: 'buttons-colvis',
+			buttons: [ {
+				extend: 'columnsToggle',
+				columns: conf.columns,
+				columnText: conf.columnText
+			} ]
+		};
+	},
+
+	// Selected columns with individual buttons - toggle column visibility
+	columnsToggle: function ( dt, conf ) {
+		var columns = dt.columns( conf.columns ).indexes().map( function ( idx ) {
+			return {
+				extend: 'columnToggle',
+				columns: idx,
+				columnText: conf.columnText
+			};
+		} ).toArray();
+
+		return columns;
+	},
+
+	// Single button to toggle column visibility
+	columnToggle: function ( dt, conf ) {
+		return {
+			extend: 'columnVisibility',
+			columns: conf.columns,
+			columnText: conf.columnText
+		};
+	},
+
+	// Selected columns with individual buttons - set column visibility
+	columnsVisibility: function ( dt, conf ) {
+		var columns = dt.columns( conf.columns ).indexes().map( function ( idx ) {
+			return {
+				extend: 'columnVisibility',
+				columns: idx,
+				visibility: conf.visibility,
+				columnText: conf.columnText
+			};
+		} ).toArray();
+
+		return columns;
+	},
+
+	// Single button to set column visibility
+	columnVisibility: {
+		columns: undefined, // column selector
+		text: function ( dt, button, conf ) {
+			return conf._columnText( dt, conf );
+		},
+		className: 'buttons-columnVisibility',
+		action: function ( e, dt, button, conf ) {
+			var col = dt.columns( conf.columns );
+			var curr = col.visible();
+
+			col.visible( conf.visibility !== undefined ?
+				conf.visibility :
+				! (curr.length ? curr[0] : false )
+			);
+		},
+		init: function ( dt, button, conf ) {
+			var that = this;
+			button.attr( 'data-cv-idx', conf.columns );
+
+			dt
+				.on( 'column-visibility.dt'+conf.namespace, function (e, settings) {
+					if ( ! settings.bDestroying && settings.nTable == dt.settings()[0].nTable ) {
+						that.active( dt.column( conf.columns ).visible() );
+					}
+				} )
+				.on( 'column-reorder.dt'+conf.namespace, function (e, settings, details) {
+					if ( dt.columns( conf.columns ).count() !== 1 ) {
+						return;
+					}
+
+					// This button controls the same column index but the text for the column has
+					// changed
+					button.text( conf._columnText( dt, conf ) );
+
+					// Since its a different column, we need to check its visibility
+					that.active( dt.column( conf.columns ).visible() );
+				} );
+
+			this.active( dt.column( conf.columns ).visible() );
+		},
+		destroy: function ( dt, button, conf ) {
+			dt
+				.off( 'column-visibility.dt'+conf.namespace )
+				.off( 'column-reorder.dt'+conf.namespace );
+		},
+
+		_columnText: function ( dt, conf ) {
+			// Use DataTables' internal data structure until this is presented
+			// is a public API. The other option is to use
+			// `$( column(col).node() ).text()` but the node might not have been
+			// populated when Buttons is constructed.
+			var idx = dt.column( conf.columns ).index();
+			var title = dt.settings()[0].aoColumns[ idx ].sTitle
+				.replace(/\n/g," ")        // remove new lines
+				.replace(/<br\s*\/?>/gi, " ")  // replace line breaks with spaces
+				.replace(/<select(.*?)<\/select>/g, "") // remove select tags, including options text
+				.replace(/<!\-\-.*?\-\->/g, "") // strip HTML comments
+				.replace(/<.*?>/g, "")   // strip HTML
+				.replace(/^\s+|\s+$/g,""); // trim
+
+			return conf.columnText ?
+				conf.columnText( dt, idx, title ) :
+				title;
+		}
+	},
+
+
+	colvisRestore: {
+		className: 'buttons-colvisRestore',
+
+		text: function ( dt ) {
+			return dt.i18n( 'buttons.colvisRestore', 'Restore visibility' );
+		},
+
+		init: function ( dt, button, conf ) {
+			conf._visOriginal = dt.columns().indexes().map( function ( idx ) {
+				return dt.column( idx ).visible();
+			} ).toArray();
+		},
+
+		action: function ( e, dt, button, conf ) {
+			dt.columns().every( function ( i ) {
+				// Take into account that ColReorder might have disrupted our
+				// indexes
+				var idx = dt.colReorder && dt.colReorder.transpose ?
+					dt.colReorder.transpose( i, 'toOriginal' ) :
+					i;
+
+				this.visible( conf._visOriginal[ idx ] );
+			} );
+		}
+	},
+
+
+	colvisGroup: {
+		className: 'buttons-colvisGroup',
+
+		action: function ( e, dt, button, conf ) {
+			dt.columns( conf.show ).visible( true, false );
+			dt.columns( conf.hide ).visible( false, false );
+
+			dt.columns.adjust();
+		},
+
+		show: [],
+
+		hide: []
+	}
+} );
+
+
+return DataTable.Buttons;
+}));
+
+
+/*!
+ * Flash export buttons for Buttons and DataTables.
+ * 2015-2017 SpryMedia Ltd - datatables.net/license
+ *
+ * ZeroClipbaord - MIT license
+ * Copyright (c) 2012 Joseph Huckaby
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * ZeroClipboard dependency
+ */
+
+/*
+ * ZeroClipboard 1.0.4 with modifications
+ * Author: Joseph Huckaby
+ * License: MIT
+ *
+ * Copyright (c) 2012 Joseph Huckaby
+ */
+var ZeroClipboard_TableTools = {
+	version: "1.0.4-TableTools2",
+	clients: {}, // registered upload clients on page, indexed by id
+	moviePath: '', // URL to movie
+	nextId: 1, // ID of next movie
+
+	$: function(thingy) {
+		// simple DOM lookup utility function
+		if (typeof(thingy) == 'string') {
+			thingy = document.getElementById(thingy);
+		}
+		if (!thingy.addClass) {
+			// extend element with a few useful methods
+			thingy.hide = function() { this.style.display = 'none'; };
+			thingy.show = function() { this.style.display = ''; };
+			thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
+			thingy.removeClass = function(name) {
+				this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, '');
+			};
+			thingy.hasClass = function(name) {
+				return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
+			};
+		}
+		return thingy;
+	},
+
+	setMoviePath: function(path) {
+		// set path to ZeroClipboard.swf
+		this.moviePath = path;
+	},
+
+	dispatch: function(id, eventName, args) {
+		// receive event from flash movie, send to client
+		var client = this.clients[id];
+		if (client) {
+			client.receiveEvent(eventName, args);
+		}
+	},
+
+	log: function ( str ) {
+		console.log( 'Flash: '+str );
+	},
+
+	register: function(id, client) {
+		// register new client to receive events
+		this.clients[id] = client;
+	},
+
+	getDOMObjectPosition: function(obj) {
+		// get absolute coordinates for dom element
+		var info = {
+			left: 0,
+			top: 0,
+			width: obj.width ? obj.width : obj.offsetWidth,
+			height: obj.height ? obj.height : obj.offsetHeight
+		};
+
+		if ( obj.style.width !== "" ) {
+			info.width = obj.style.width.replace("px","");
+		}
+
+		if ( obj.style.height !== "" ) {
+			info.height = obj.style.height.replace("px","");
+		}
+
+		while (obj) {
+			info.left += obj.offsetLeft;
+			info.top += obj.offsetTop;
+			obj = obj.offsetParent;
+		}
+
+		return info;
+	},
+
+	Client: function(elem) {
+		// constructor for new simple upload client
+		this.handlers = {};
+
+		// unique ID
+		this.id = ZeroClipboard_TableTools.nextId++;
+		this.movieId = 'ZeroClipboard_TableToolsMovie_' + this.id;
+
+		// register client with singleton to receive flash events
+		ZeroClipboard_TableTools.register(this.id, this);
+
+		// create movie
+		if (elem) {
+			this.glue(elem);
+		}
+	}
+};
+
+ZeroClipboard_TableTools.Client.prototype = {
+
+	id: 0, // unique ID for us
+	ready: false, // whether movie is ready to receive events or not
+	movie: null, // reference to movie object
+	clipText: '', // text to copy to clipboard
+	fileName: '', // default file save name
+	action: 'copy', // action to perform
+	handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
+	cssEffects: true, // enable CSS mouse effects on dom container
+	handlers: null, // user event handlers
+	sized: false,
+	sheetName: '', // default sheet name for excel export
+
+	glue: function(elem, title) {
+		// glue to DOM element
+		// elem can be ID or actual DOM element object
+		this.domElement = ZeroClipboard_TableTools.$(elem);
+
+		// float just above object, or zIndex 99 if dom element isn't set
+		var zIndex = 99;
+		if (this.domElement.style.zIndex) {
+			zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
+		}
+
+		// find X/Y position of domElement
+		var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+
+		// create floating DIV above element
+		this.div = document.createElement('div');
+		var style = this.div.style;
+		style.position = 'absolute';
+		style.left = '0px';
+		style.top = '0px';
+		style.width = (box.width) + 'px';
+		style.height = box.height + 'px';
+		style.zIndex = zIndex;
+
+		if ( typeof title != "undefined" && title !== "" ) {
+			this.div.title = title;
+		}
+		if ( box.width !== 0 && box.height !== 0 ) {
+			this.sized = true;
+		}
+
+		// style.backgroundColor = '#f00'; // debug
+		if ( this.domElement ) {
+			this.domElement.appendChild(this.div);
+			this.div.innerHTML = this.getHTML( box.width, box.height ).replace(/&/g, '&amp;');
+		}
+	},
+
+	positionElement: function() {
+		var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+		var style = this.div.style;
+
+		style.position = 'absolute';
+		//style.left = (this.domElement.offsetLeft)+'px';
+		//style.top = this.domElement.offsetTop+'px';
+		style.width = box.width + 'px';
+		style.height = box.height + 'px';
+
+		if ( box.width !== 0 && box.height !== 0 ) {
+			this.sized = true;
+		} else {
+			return;
+		}
+
+		var flash = this.div.childNodes[0];
+		flash.width = box.width;
+		flash.height = box.height;
+	},
+
+	getHTML: function(width, height) {
+		// return HTML for movie
+		var html = '';
+		var flashvars = 'id=' + this.id +
+			'&width=' + width +
+			'&height=' + height;
+
+		if (navigator.userAgent.match(/MSIE/)) {
+			// IE gets an OBJECT tag
+			var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
+			html += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard_TableTools.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
+		}
+		else {
+			// all other browsers get an EMBED tag
+			html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard_TableTools.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
+		}
+		return html;
+	},
+
+	hide: function() {
+		// temporarily hide floater offscreen
+		if (this.div) {
+			this.div.style.left = '-2000px';
+		}
+	},
+
+	show: function() {
+		// show ourselves after a call to hide()
+		this.reposition();
+	},
+
+	destroy: function() {
+		// destroy control and floater
+		var that = this;
+
+		if (this.domElement && this.div) {
+			$(this.div).remove();
+
+			this.domElement = null;
+			this.div = null;
+
+			$.each( ZeroClipboard_TableTools.clients, function ( id, client ) {
+				if ( client === that ) {
+					delete ZeroClipboard_TableTools.clients[ id ];
+				}
+			} );
+		}
+	},
+
+	reposition: function(elem) {
+		// reposition our floating div, optionally to new container
+		// warning: container CANNOT change size, only position
+		if (elem) {
+			this.domElement = ZeroClipboard_TableTools.$(elem);
+			if (!this.domElement) {
+				this.hide();
+			}
+		}
+
+		if (this.domElement && this.div) {
+			var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+			var style = this.div.style;
+			style.left = '' + box.left + 'px';
+			style.top = '' + box.top + 'px';
+		}
+	},
+
+	clearText: function() {
+		// clear the text to be copy / saved
+		this.clipText = '';
+		if (this.ready) {
+			this.movie.clearText();
+		}
+	},
+
+	appendText: function(newText) {
+		// append text to that which is to be copied / saved
+		this.clipText += newText;
+		if (this.ready) { this.movie.appendText(newText) ;}
+	},
+
+	setText: function(newText) {
+		// set text to be copied to be copied / saved
+		this.clipText = newText;
+		if (this.ready) { this.movie.setText(newText) ;}
+	},
+
+	setFileName: function(newText) {
+		// set the file name
+		this.fileName = newText;
+		if (this.ready) {
+			this.movie.setFileName(newText);
+		}
+	},
+
+	setSheetData: function(data) {
+		// set the xlsx sheet data
+		if (this.ready) {
+			this.movie.setSheetData( JSON.stringify( data ) );
+		}
+	},
+
+	setAction: function(newText) {
+		// set action (save or copy)
+		this.action = newText;
+		if (this.ready) {
+			this.movie.setAction(newText);
+		}
+	},
+
+	addEventListener: function(eventName, func) {
+		// add user event listener for event
+		// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
+		eventName = eventName.toString().toLowerCase().replace(/^on/, '');
+		if (!this.handlers[eventName]) {
+			this.handlers[eventName] = [];
+		}
+		this.handlers[eventName].push(func);
+	},
+
+	setHandCursor: function(enabled) {
+		// enable hand cursor (true), or default arrow cursor (false)
+		this.handCursorEnabled = enabled;
+		if (this.ready) {
+			this.movie.setHandCursor(enabled);
+		}
+	},
+
+	setCSSEffects: function(enabled) {
+		// enable or disable CSS effects on DOM container
+		this.cssEffects = !!enabled;
+	},
+
+	receiveEvent: function(eventName, args) {
+		var self;
+
+		// receive event from flash
+		eventName = eventName.toString().toLowerCase().replace(/^on/, '');
+
+		// special behavior for certain events
+		switch (eventName) {
+			case 'load':
+				// movie claims it is ready, but in IE this isn't always the case...
+				// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
+				this.movie = document.getElementById(this.movieId);
+				if (!this.movie) {
+					self = this;
+					setTimeout( function() { self.receiveEvent('load', null); }, 1 );
+					return;
+				}
+
+				// firefox on pc needs a "kick" in order to set these in certain cases
+				if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
+					self = this;
+					setTimeout( function() { self.receiveEvent('load', null); }, 100 );
+					this.ready = true;
+					return;
+				}
+
+				this.ready = true;
+				this.movie.clearText();
+				this.movie.appendText( this.clipText );
+				this.movie.setFileName( this.fileName );
+				this.movie.setAction( this.action );
+				this.movie.setHandCursor( this.handCursorEnabled );
+				break;
+
+			case 'mouseover':
+				if (this.domElement && this.cssEffects) {
+					//this.domElement.addClass('hover');
+					if (this.recoverActive) {
+						this.domElement.addClass('active');
+					}
+				}
+				break;
+
+			case 'mouseout':
+				if (this.domElement && this.cssEffects) {
+					this.recoverActive = false;
+					if (this.domElement.hasClass('active')) {
+						this.domElement.removeClass('active');
+						this.recoverActive = true;
+					}
+					//this.domElement.removeClass('hover');
+				}
+				break;
+
+			case 'mousedown':
+				if (this.domElement && this.cssEffects) {
+					this.domElement.addClass('active');
+				}
+				break;
+
+			case 'mouseup':
+				if (this.domElement && this.cssEffects) {
+					this.domElement.removeClass('active');
+					this.recoverActive = false;
+				}
+				break;
+		} // switch eventName
+
+		if (this.handlers[eventName]) {
+			for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
+				var func = this.handlers[eventName][idx];
+
+				if (typeof(func) == 'function') {
+					// actual function reference
+					func(this, args);
+				}
+				else if ((typeof(func) == 'object') && (func.length == 2)) {
+					// PHP style object + method, i.e. [myObject, 'myMethod']
+					func[0][ func[1] ](this, args);
+				}
+				else if (typeof(func) == 'string') {
+					// name of function
+					window[func](this, args);
+				}
+			} // foreach event handler defined
+		} // user defined handler for event
+	}
+};
+
+ZeroClipboard_TableTools.hasFlash = function ()
+{
+	try {
+		var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
+		if (fo) {
+			return true;
+		}
+	}
+	catch (e) {
+		if (
+			navigator.mimeTypes &&
+			navigator.mimeTypes['application/x-shockwave-flash'] !== undefined &&
+			navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin
+		) {
+			return true;
+		}
+	}
+
+	return false;
+};
+
+// For the Flash binding to work, ZeroClipboard_TableTools must be on the global
+// object list
+window.ZeroClipboard_TableTools = ZeroClipboard_TableTools;
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Local (private) functions
+ */
+
+/**
+ * If a Buttons instance is initlaised before it is placed into the DOM, Flash
+ * won't be able to bind to it, so we need to wait until it is available, this
+ * method abstracts that out.
+ *
+ * @param {ZeroClipboard} flash ZeroClipboard instance
+ * @param {jQuery} node  Button
+ */
+var _glue = function ( flash, node )
+{
+	var id = node.attr('id');
+
+	if ( node.parents('html').length ) {
+		flash.glue( node[0], '' );
+	}
+	else {
+		setTimeout( function () {
+			_glue( flash, node );
+		}, 500 );
+	}
+};
+
+/**
+ * Get the sheet name for Excel exports.
+ *
+ * @param {object}  config       Button configuration
+ */
+var _sheetname = function ( config )
+{
+	var sheetName = 'Sheet1';
+
+	if ( config.sheetName ) {
+		sheetName = config.sheetName.replace(/[\[\]\*\/\\\?\:]/g, '');
+	}
+
+	return sheetName;
+};
+
+/**
+ * Set the flash text. This has to be broken up into chunks as the Javascript /
+ * Flash bridge has a size limit. There is no indication in the Flash
+ * documentation what this is, and it probably depends upon the browser.
+ * Experimentation shows that the point is around 50k when data starts to get
+ * lost, so an 8K limit used here is safe.
+ *
+ * @param {ZeroClipboard} flash ZeroClipboard instance
+ * @param {string}        data  Data to send to Flash
+ */
+var _setText = function ( flash, data )
+{
+	var parts = data.match(/[\s\S]{1,8192}/g) || [];
+
+	flash.clearText();
+	for ( var i=0, len=parts.length ; i<len ; i++ )
+	{
+		flash.appendText( parts[i] );
+	}
+};
+
+/**
+ * Get the newline character(s)
+ *
+ * @param {object}  config Button configuration
+ * @return {string}        Newline character
+ */
+var _newLine = function ( config )
+{
+	return config.newline ?
+		config.newline :
+		navigator.userAgent.match(/Windows/) ?
+			'\r\n' :
+			'\n';
+};
+
+/**
+ * Combine the data from the `buttons.exportData` method into a string that
+ * will be used in the export file.
+ *
+ * @param  {DataTable.Api} dt     DataTables API instance
+ * @param  {object}        config Button configuration
+ * @return {object}               The data to export
+ */
+var _exportData = function ( dt, config )
+{
+	var newLine = _newLine( config );
+	var data = dt.buttons.exportData( config.exportOptions );
+	var boundary = config.fieldBoundary;
+	var separator = config.fieldSeparator;
+	var reBoundary = new RegExp( boundary, 'g' );
+	var escapeChar = config.escapeChar !== undefined ?
+		config.escapeChar :
+		'\\';
+	var join = function ( a ) {
+		var s = '';
+
+		// If there is a field boundary, then we might need to escape it in
+		// the source data
+		for ( var i=0, ien=a.length ; i<ien ; i++ ) {
+			if ( i > 0 ) {
+				s += separator;
+			}
+
+			s += boundary ?
+				boundary + ('' + a[i]).replace( reBoundary, escapeChar+boundary ) + boundary :
+				a[i];
+		}
+
+		return s;
+	};
+
+	var header = config.header ? join( data.header )+newLine : '';
+	var footer = config.footer && data.footer ? newLine+join( data.footer ) : '';
+	var body = [];
+
+	for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+		body.push( join( data.body[i] ) );
+	}
+
+	return {
+		str: header + body.join( newLine ) + footer,
+		rows: body.length
+	};
+};
+
+
+// Basic initialisation for the buttons is common between them
+var flashButton = {
+	available: function () {
+		return ZeroClipboard_TableTools.hasFlash();
+	},
+
+	init: function ( dt, button, config ) {
+		// Insert the Flash movie
+		ZeroClipboard_TableTools.moviePath = DataTable.Buttons.swfPath;
+		var flash = new ZeroClipboard_TableTools.Client();
+
+		flash.setHandCursor( true );
+		flash.addEventListener('mouseDown', function(client) {
+			config._fromFlash = true;
+			dt.button( button[0] ).trigger();
+			config._fromFlash = false;
+		} );
+
+		_glue( flash, button );
+
+		config._flash = flash;
+	},
+
+	destroy: function ( dt, button, config ) {
+		config._flash.destroy();
+	},
+
+	fieldSeparator: ',',
+
+	fieldBoundary: '"',
+
+	exportOptions: {},
+
+	title: '*',
+
+	messageTop: '*',
+
+	messageBottom: '*',
+
+	filename: '*',
+
+	extension: '.csv',
+
+	header: true,
+
+	footer: false
+};
+
+
+/**
+ * Convert from numeric position to letter for column names in Excel
+ * @param  {int} n Column number
+ * @return {string} Column letter(s) name
+ */
+function createCellPos( n ){
+	var ordA = 'A'.charCodeAt(0);
+	var ordZ = 'Z'.charCodeAt(0);
+	var len = ordZ - ordA + 1;
+	var s = "";
+
+	while( n >= 0 ) {
+		s = String.fromCharCode(n % len + ordA) + s;
+		n = Math.floor(n / len) - 1;
+	}
+
+	return s;
+}
+
+/**
+ * Create an XML node and add any children, attributes, etc without needing to
+ * be verbose in the DOM.
+ *
+ * @param  {object} doc      XML document
+ * @param  {string} nodeName Node name
+ * @param  {object} opts     Options - can be `attr` (attributes), `children`
+ *   (child nodes) and `text` (text content)
+ * @return {node}            Created node
+ */
+function _createNode( doc, nodeName, opts ){
+	var tempNode = doc.createElement( nodeName );
+
+	if ( opts ) {
+		if ( opts.attr ) {
+			$(tempNode).attr( opts.attr );
+		}
+
+		if ( opts.children ) {
+			$.each( opts.children, function ( key, value ) {
+				tempNode.appendChild( value );
+			} );
+		}
+
+		if ( opts.text !== null && opts.text !== undefined ) {
+			tempNode.appendChild( doc.createTextNode( opts.text ) );
+		}
+	}
+
+	return tempNode;
+}
+
+/**
+ * Get the width for an Excel column based on the contents of that column
+ * @param  {object} data Data for export
+ * @param  {int}    col  Column index
+ * @return {int}         Column width
+ */
+function _excelColWidth( data, col ) {
+	var max = data.header[col].length;
+	var len, lineSplit, str;
+
+	if ( data.footer && data.footer[col].length > max ) {
+		max = data.footer[col].length;
+	}
+
+	for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+		var point = data.body[i][col];
+		str = point !== null && point !== undefined ?
+			point.toString() :
+			'';
+
+		// If there is a newline character, workout the width of the column
+		// based on the longest line in the string
+		if ( str.indexOf('\n') !== -1 ) {
+			lineSplit = str.split('\n');
+			lineSplit.sort( function (a, b) {
+				return b.length - a.length;
+			} );
+
+			len = lineSplit[0].length;
+		}
+		else {
+			len = str.length;
+		}
+
+		if ( len > max ) {
+			max = len;
+		}
+
+		// Max width rather than having potentially massive column widths
+		if ( max > 40 ) {
+			return 52; // 40 * 1.3
+		}
+	}
+
+	max *= 1.3;
+
+	// And a min width
+	return max > 6 ? max : 6;
+}
+
+  var _serialiser = "";
+    if (typeof window.XMLSerializer === 'undefined') {
+        _serialiser = new function () {
+            this.serializeToString = function (input) {
+                return input.xml
+            }
+        };
+    } else {
+        _serialiser =  new XMLSerializer();
+    }
+
+    var _ieExcel;
+
+
+/**
+ * Convert XML documents in an object to strings
+ * @param  {object} obj XLSX document object
+ */
+function _xlsxToStrings( obj ) {
+	if ( _ieExcel === undefined ) {
+		// Detect if we are dealing with IE's _awful_ serialiser by seeing if it
+		// drop attributes
+		_ieExcel = _serialiser
+			.serializeToString(
+				$.parseXML( excelStrings['xl/worksheets/sheet1.xml'] )
+			)
+			.indexOf( 'xmlns:r' ) === -1;
+	}
+
+	$.each( obj, function ( name, val ) {
+		if ( $.isPlainObject( val ) ) {
+			_xlsxToStrings( val );
+		}
+		else {
+			if ( _ieExcel ) {
+				// IE's XML serialiser will drop some name space attributes from
+				// from the root node, so we need to save them. Do this by
+				// replacing the namespace nodes with a regular attribute that
+				// we convert back when serialised. Edge does not have this
+				// issue
+				var worksheet = val.childNodes[0];
+				var i, ien;
+				var attrs = [];
+
+				for ( i=worksheet.attributes.length-1 ; i>=0 ; i-- ) {
+					var attrName = worksheet.attributes[i].nodeName;
+					var attrValue = worksheet.attributes[i].nodeValue;
+
+					if ( attrName.indexOf( ':' ) !== -1 ) {
+						attrs.push( { name: attrName, value: attrValue } );
+
+						worksheet.removeAttribute( attrName );
+					}
+				}
+
+				for ( i=0, ien=attrs.length ; i<ien ; i++ ) {
+					var attr = val.createAttribute( attrs[i].name.replace( ':', '_dt_b_namespace_token_' ) );
+					attr.value = attrs[i].value;
+					worksheet.setAttributeNode( attr );
+				}
+			}
+
+			var str = _serialiser.serializeToString(val);
+
+			// Fix IE's XML
+			if ( _ieExcel ) {
+				// IE doesn't include the XML declaration
+				if ( str.indexOf( '<?xml' ) === -1 ) {
+					str = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+str;
+				}
+
+				// Return namespace attributes to being as such
+				str = str.replace( /_dt_b_namespace_token_/g, ':' );
+			}
+
+			// Safari, IE and Edge will put empty name space attributes onto
+			// various elements making them useless. This strips them out
+			str = str.replace( /<([^<>]*?) xmlns=""([^<>]*?)>/g, '<$1 $2>' );
+
+			obj[ name ] = str;
+		}
+	} );
+}
+
+// Excel - Pre-defined strings to build a basic XLSX file
+var excelStrings = {
+	"_rels/.rels":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+
+			'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>'+
+		'</Relationships>',
+
+	"xl/_rels/workbook.xml.rels":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+
+			'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>'+
+			'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>'+
+		'</Relationships>',
+
+	"[Content_Types].xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'+
+			'<Default Extension="xml" ContentType="application/xml" />'+
+			'<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />'+
+			'<Default Extension="jpeg" ContentType="image/jpeg" />'+
+			'<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" />'+
+			'<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" />'+
+			'<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" />'+
+		'</Types>',
+
+	"xl/workbook.xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'+
+			'<fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/>'+
+			'<workbookPr showInkAnnotation="0" autoCompressPictures="0"/>'+
+			'<bookViews>'+
+				'<workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/>'+
+			'</bookViews>'+
+			'<sheets>'+
+				'<sheet name="" sheetId="1" r:id="rId1"/>'+
+			'</sheets>'+
+		'</workbook>',
+
+	"xl/worksheets/sheet1.xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">'+
+			'<sheetData/>'+
+			'<mergeCells count="0"/>'+
+		'</worksheet>',
+
+	"xl/styles.xml":
+		'<?xml version="1.0" encoding="UTF-8"?>'+
+		'<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">'+
+			'<numFmts count="6">'+
+				'<numFmt numFmtId="164" formatCode="#,##0.00_-\ [$$-45C]"/>'+
+				'<numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/>'+
+				'<numFmt numFmtId="166" formatCode="[$€-2]\ #,##0.00"/>'+
+				'<numFmt numFmtId="167" formatCode="0.0%"/>'+
+				'<numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/>'+
+				'<numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/>'+
+			'</numFmts>'+
+			'<fonts count="5" x14ac:knownFonts="1">'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<color rgb="FFFFFFFF" />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<b />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<i />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<u />'+
+				'</font>'+
+			'</fonts>'+
+			'<fills count="6">'+
+				'<fill>'+
+					'<patternFill patternType="none" />'+
+				'</fill>'+
+				'<fill>'+ // Excel appears to use this as a dotted background regardless of values but
+					'<patternFill patternType="none" />'+ // to be valid to the schema, use a patternFill
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="FFD9D9D9" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="FFD99795" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="ffc6efce" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="ffc6cfef" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+			'</fills>'+
+			'<borders count="2">'+
+				'<border>'+
+					'<left />'+
+					'<right />'+
+					'<top />'+
+					'<bottom />'+
+					'<diagonal />'+
+				'</border>'+
+				'<border diagonalUp="false" diagonalDown="false">'+
+					'<left style="thin">'+
+						'<color auto="1" />'+
+					'</left>'+
+					'<right style="thin">'+
+						'<color auto="1" />'+
+					'</right>'+
+					'<top style="thin">'+
+						'<color auto="1" />'+
+					'</top>'+
+					'<bottom style="thin">'+
+						'<color auto="1" />'+
+					'</bottom>'+
+					'<diagonal />'+
+				'</border>'+
+			'</borders>'+
+			'<cellStyleXfs count="1">'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" />'+
+			'</cellStyleXfs>'+
+			'<cellXfs count="61">'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="left"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="center"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="right"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="fill"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment textRotation="90"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment wrapText="1"/>'+
+				'</xf>'+
+				'<xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+			'</cellXfs>'+
+			'<cellStyles count="1">'+
+				'<cellStyle name="Normal" xfId="0" builtinId="0" />'+
+			'</cellStyles>'+
+			'<dxfs count="0" />'+
+			'<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" />'+
+		'</styleSheet>'
+};
+// Note we could use 3 `for` loops for the styles, but when gzipped there is
+// virtually no difference in size, since the above can be easily compressed
+
+// Pattern matching for special number formats. Perhaps this should be exposed
+// via an API in future?
+var _excelSpecials = [
+	{ match: /^\-?\d+\.\d%$/,       style: 60, fmt: function (d) { return d/100; } }, // Precent with d.p.
+	{ match: /^\-?\d+\.?\d*%$/,     style: 56, fmt: function (d) { return d/100; } }, // Percent
+	{ match: /^\-?\$[\d,]+.?\d*$/,  style: 57 }, // Dollars
+	{ match: /^\-?£[\d,]+.?\d*$/,   style: 58 }, // Pounds
+	{ match: /^\-?€[\d,]+.?\d*$/,   style: 59 }, // Euros
+	{ match: /^\([\d,]+\)$/,        style: 61, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } },  // Negative numbers indicated by brackets
+	{ match: /^\([\d,]+\.\d{2}\)$/, style: 62, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } },  // Negative numbers indicated by brackets - 2d.p.
+	{ match: /^[\d,]+$/,            style: 63 }, // Numbers with thousand separators
+	{ match: /^[\d,]+\.\d{2}$/,     style: 64 }  // Numbers with 2d.p. and thousands separators
+];
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables options and methods
+ */
+
+// Set the default SWF path
+DataTable.Buttons.swfPath = '//cdn.datatables.net/buttons/'+DataTable.Buttons.version+'/swf/flashExport.swf';
+
+// Method to allow Flash buttons to be resized when made visible - as they are
+// of zero height and width if initialised hidden
+DataTable.Api.register( 'buttons.resize()', function () {
+	$.each( ZeroClipboard_TableTools.clients, function ( i, client ) {
+		if ( client.domElement !== undefined && client.domElement.parentNode ) {
+			client.positionElement();
+		}
+	} );
+} );
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Button definitions
+ */
+
+// Copy to clipboard
+DataTable.ext.buttons.copyFlash = $.extend( {}, flashButton, {
+	className: 'buttons-copy buttons-flash',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.copy', 'Copy' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		// Check that the trigger did actually occur due to a Flash activation
+		if ( ! config._fromFlash ) {
+			return;
+		}
+
+		this.processing( true );
+
+		var flash = config._flash;
+		var exportData = _exportData( dt, config );
+		var info = dt.buttons.exportInfo( config );
+		var newline = _newLine(config);
+		var output = exportData.str;
+
+		if ( info.title ) {
+			output = info.title + newline + newline + output;
+		}
+
+		if ( info.messageTop ) {
+			output = info.messageTop + newline + newline + output;
+		}
+
+		if ( info.messageBottom ) {
+			output = output + newline + newline + info.messageBottom;
+		}
+
+		if ( config.customize ) {
+			output = config.customize( output, config, dt );
+		}
+
+		flash.setAction( 'copy' );
+		_setText( flash, output );
+
+		this.processing( false );
+
+		dt.buttons.info(
+			dt.i18n( 'buttons.copyTitle', 'Copy to clipboard' ),
+			dt.i18n( 'buttons.copySuccess', {
+				_: 'Copied %d rows to clipboard',
+				1: 'Copied 1 row to clipboard'
+			}, data.rows ),
+			3000
+		);
+	},
+
+	fieldSeparator: '\t',
+
+	fieldBoundary: ''
+} );
+
+// CSV save file
+DataTable.ext.buttons.csvFlash = $.extend( {}, flashButton, {
+	className: 'buttons-csv buttons-flash',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.csv', 'CSV' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		// Set the text
+		var flash = config._flash;
+		var data = _exportData( dt, config );
+		var info = dt.buttons.exportInfo( config );
+		var output = config.customize ?
+			config.customize( data.str, config, dt ) :
+			data.str;
+
+		flash.setAction( 'csv' );
+		flash.setFileName( info.filename );
+		_setText( flash, output );
+	},
+
+	escapeChar: '"'
+} );
+
+// Excel save file - this is really a CSV file using UTF-8 that Excel can read
+DataTable.ext.buttons.excelFlash = $.extend( {}, flashButton, {
+	className: 'buttons-excel buttons-flash',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.excel', 'Excel' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		var flash = config._flash;
+		var rowPos = 0;
+		var rels = $.parseXML( excelStrings['xl/worksheets/sheet1.xml'] ) ; //Parses xml
+		var relsGet = rels.getElementsByTagName( "sheetData" )[0];
+
+		var xlsx = {
+			_rels: {
+				".rels": $.parseXML( excelStrings['_rels/.rels'] )
+			},
+			xl: {
+				_rels: {
+					"workbook.xml.rels": $.parseXML( excelStrings['xl/_rels/workbook.xml.rels'] )
+				},
+				"workbook.xml": $.parseXML( excelStrings['xl/workbook.xml'] ),
+				"styles.xml": $.parseXML( excelStrings['xl/styles.xml'] ),
+				"worksheets": {
+					"sheet1.xml": rels
+				}
+
+			},
+			"[Content_Types].xml": $.parseXML( excelStrings['[Content_Types].xml'])
+		};
+
+		var data = dt.buttons.exportData( config.exportOptions );
+		var currentRow, rowNode;
+		var addRow = function ( row ) {
+			currentRow = rowPos+1;
+			rowNode = _createNode( rels, "row", { attr: {r:currentRow} } );
+
+			for ( var i=0, ien=row.length ; i<ien ; i++ ) {
+				// Concat both the Cell Columns as a letter and the Row of the cell.
+				var cellId = createCellPos(i) + '' + currentRow;
+				var cell = null;
+
+				// For null, undefined of blank cell, continue so it doesn't create the _createNode
+				if ( row[i] === null || row[i] === undefined || row[i] === '' ) {
+					if ( config.createEmptyCells === true ) {
+						row[i] = '';
+					}
+					else {
+						continue;
+					}
+				}
+
+				row[i] = $.trim( row[i] );
+
+				// Special number formatting options
+				for ( var j=0, jen=_excelSpecials.length ; j<jen ; j++ ) {
+					var special = _excelSpecials[j];
+
+					// TODO Need to provide the ability for the specials to say
+					// if they are returning a string, since at the moment it is
+					// assumed to be a number
+					if ( row[i].match && ! row[i].match(/^0\d+/) && row[i].match( special.match ) ) {
+						var val = row[i].replace(/[^\d\.\-]/g, '');
+
+						if ( special.fmt ) {
+							val = special.fmt( val );
+						}
+
+						cell = _createNode( rels, 'c', {
+							attr: {
+								r: cellId,
+								s: special.style
+							},
+							children: [
+								_createNode( rels, 'v', { text: val } )
+							]
+						} );
+
+						break;
+					}
+				}
+
+				if ( ! cell ) {
+					if ( typeof row[i] === 'number' || (
+						row[i].match &&
+						row[i].match(/^-?\d+(\.\d+)?$/) &&
+						! row[i].match(/^0\d+/) )
+					) {
+						// Detect numbers - don't match numbers with leading zeros
+						// or a negative anywhere but the start
+						cell = _createNode( rels, 'c', {
+							attr: {
+								t: 'n',
+								r: cellId
+							},
+							children: [
+								_createNode( rels, 'v', { text: row[i] } )
+							]
+						} );
+					}
+					else {
+						// String output - replace non standard characters for text output
+						var text = ! row[i].replace ?
+							row[i] :
+							row[i].replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, '');
+
+						cell = _createNode( rels, 'c', {
+							attr: {
+								t: 'inlineStr',
+								r: cellId
+							},
+							children:{
+								row: _createNode( rels, 'is', {
+									children: {
+										row: _createNode( rels, 't', {
+											text: text
+										} )
+									}
+								} )
+							}
+						} );
+					}
+				}
+
+				rowNode.appendChild( cell );
+			}
+
+			relsGet.appendChild(rowNode);
+			rowPos++;
+		};
+
+		$( 'sheets sheet', xlsx.xl['workbook.xml'] ).attr( 'name', _sheetname( config ) );
+
+		if ( config.customizeData ) {
+			config.customizeData( data );
+		}
+
+		var mergeCells = function ( row, colspan ) {
+			var mergeCells = $('mergeCells', rels);
+
+			mergeCells[0].appendChild( _createNode( rels, 'mergeCell', {
+				attr: {
+					ref: 'A'+row+':'+createCellPos(colspan)+row
+				}
+			} ) );
+			mergeCells.attr( 'count', mergeCells.attr( 'count' )+1 );
+			$('row:eq('+(row-1)+') c', rels).attr( 's', '51' ); // centre
+		};
+
+		// Title and top messages
+		var exportInfo = dt.buttons.exportInfo( config );
+		if ( exportInfo.title ) {
+			addRow( [exportInfo.title], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+		if ( exportInfo.messageTop ) {
+			addRow( [exportInfo.messageTop], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+		// Table itself
+		if ( config.header ) {
+			addRow( data.header, rowPos );
+			$('row:last c', rels).attr( 's', '2' ); // bold
+		}
+
+		for ( var n=0, ie=data.body.length ; n<ie ; n++ ) {
+			addRow( data.body[n], rowPos );
+		}
+
+		if ( config.footer && data.footer ) {
+			addRow( data.footer, rowPos);
+			$('row:last c', rels).attr( 's', '2' ); // bold
+		}
+
+		// Below the table
+		if ( exportInfo.messageBottom ) {
+			addRow( [exportInfo.messageBottom], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+		// Set column widths
+		var cols = _createNode( rels, 'cols' );
+		$('worksheet', rels).prepend( cols );
+
+		for ( var i=0, ien=data.header.length ; i<ien ; i++ ) {
+			cols.appendChild( _createNode( rels, 'col', {
+				attr: {
+					min: i+1,
+					max: i+1,
+					width: _excelColWidth( data, i ),
+					customWidth: 1
+				}
+			} ) );
+		}
+
+		// Let the developer customise the document if they want to
+		if ( config.customize ) {
+			config.customize( xlsx, config, dt );
+		}
+
+		_xlsxToStrings( xlsx );
+
+		flash.setAction( 'excel' );
+		flash.setFileName( exportInfo.filename );
+		flash.setSheetData( xlsx );
+		_setText( flash, '' );
+
+		this.processing( false );
+	},
+
+	extension: '.xlsx',
+	
+	createEmptyCells: false
+} );
+
+
+
+// PDF export
+DataTable.ext.buttons.pdfFlash = $.extend( {}, flashButton, {
+	className: 'buttons-pdf buttons-flash',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.pdf', 'PDF' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		// Set the text
+		var flash = config._flash;
+		var data = dt.buttons.exportData( config.exportOptions );
+		var info = dt.buttons.exportInfo( config );
+		var totalWidth = dt.table().node().offsetWidth;
+
+		// Calculate the column width ratios for layout of the table in the PDF
+		var ratios = dt.columns( config.columns ).indexes().map( function ( idx ) {
+			return dt.column( idx ).header().offsetWidth / totalWidth;
+		} );
+
+		flash.setAction( 'pdf' );
+		flash.setFileName( info.filename );
+
+		_setText( flash, JSON.stringify( {
+			title:         info.title || '',
+			messageTop:    info.messageTop || '',
+			messageBottom: info.messageBottom || '',
+			colWidth:      ratios.toArray(),
+			orientation:   config.orientation,
+			size:          config.pageSize,
+			header:        config.header ? data.header : null,
+			footer:        config.footer ? data.footer : null,
+			body:          data.body
+		} ) );
+
+		this.processing( false );
+	},
+
+	extension: '.pdf',
+
+	orientation: 'portrait',
+
+	pageSize: 'A4',
+
+	newline: '\n'
+} );
+
+
+return DataTable.Buttons;
+}));
+
+
+/*!
+ * HTML5 export buttons for Buttons and DataTables.
+ * 2016 SpryMedia Ltd - datatables.net/license
+ *
+ * FileSaver.js (1.3.3) - MIT license
+ * Copyright © 2016 Eli Grey - http://eligrey.com
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $, jszip, pdfmake) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document, jszip, pdfmake );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, jszip, pdfmake, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+// Allow the constructor to pass in JSZip and PDFMake from external requires.
+// Otherwise, use globally defined variables, if they are available.
+function _jsZip () {
+	return jszip || window.JSZip;
+}
+function _pdfMake () {
+	return pdfmake || window.pdfMake;
+}
+
+DataTable.Buttons.pdfMake = function (_) {
+	if ( ! _ ) {
+		return _pdfMake();
+	}
+	pdfmake = m_ake;
+}
+
+DataTable.Buttons.jszip = function (_) {
+	if ( ! _ ) {
+		return _jsZip();
+	}
+	jszip = _;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * FileSaver.js dependency
+ */
+
+/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
+
+var _saveAs = (function(view) {
+	"use strict";
+	// IE <10 is explicitly unsupported
+	if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
+		return;
+	}
+	var
+		  doc = view.document
+		  // only get URL when necessary in case Blob.js hasn't overridden it yet
+		, get_URL = function() {
+			return view.URL || view.webkitURL || view;
+		}
+		, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
+		, can_use_save_link = "download" in save_link
+		, click = function(node) {
+			var event = new MouseEvent("click");
+			node.dispatchEvent(event);
+		}
+		, is_safari = /constructor/i.test(view.HTMLElement) || view.safari
+		, is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent)
+		, throw_outside = function(ex) {
+			(view.setImmediate || view.setTimeout)(function() {
+				throw ex;
+			}, 0);
+		}
+		, force_saveable_type = "application/octet-stream"
+		// the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
+		, arbitrary_revoke_timeout = 1000 * 40 // in ms
+		, revoke = function(file) {
+			var revoker = function() {
+				if (typeof file === "string") { // file is an object URL
+					get_URL().revokeObjectURL(file);
+				} else { // file is a File
+					file.remove();
+				}
+			};
+			setTimeout(revoker, arbitrary_revoke_timeout);
+		}
+		, dispatch = function(filesaver, event_types, event) {
+			event_types = [].concat(event_types);
+			var i = event_types.length;
+			while (i--) {
+				var listener = filesaver["on" + event_types[i]];
+				if (typeof listener === "function") {
+					try {
+						listener.call(filesaver, event || filesaver);
+					} catch (ex) {
+						throw_outside(ex);
+					}
+				}
+			}
+		}
+		, auto_bom = function(blob) {
+			// prepend BOM for UTF-8 XML and text/* types (including HTML)
+			// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
+			if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
+				return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
+			}
+			return blob;
+		}
+		, FileSaver = function(blob, name, no_auto_bom) {
+			if (!no_auto_bom) {
+				blob = auto_bom(blob);
+			}
+			// First try a.download, then web filesystem, then object URLs
+			var
+				  filesaver = this
+				, type = blob.type
+				, force = type === force_saveable_type
+				, object_url
+				, dispatch_all = function() {
+					dispatch(filesaver, "writestart progress write writeend".split(" "));
+				}
+				// on any filesys errors revert to saving with object URLs
+				, fs_error = function() {
+					if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
+						// Safari doesn't allow downloading of blob urls
+						var reader = new FileReader();
+						reader.onloadend = function() {
+							var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
+							var popup = view.open(url, '_blank');
+							if(!popup) view.location.href = url;
+							url=undefined; // release reference before dispatching
+							filesaver.readyState = filesaver.DONE;
+							dispatch_all();
+						};
+						reader.readAsDataURL(blob);
+						filesaver.readyState = filesaver.INIT;
+						return;
+					}
+					// don't create more object URLs than needed
+					if (!object_url) {
+						object_url = get_URL().createObjectURL(blob);
+					}
+					if (force) {
+						view.location.href = object_url;
+					} else {
+						var opened = view.open(object_url, "_blank");
+						if (!opened) {
+							// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
+							view.location.href = object_url;
+						}
+					}
+					filesaver.readyState = filesaver.DONE;
+					dispatch_all();
+					revoke(object_url);
+				}
+			;
+			filesaver.readyState = filesaver.INIT;
+
+			if (can_use_save_link) {
+				object_url = get_URL().createObjectURL(blob);
+				setTimeout(function() {
+					save_link.href = object_url;
+					save_link.download = name;
+					click(save_link);
+					dispatch_all();
+					revoke(object_url);
+					filesaver.readyState = filesaver.DONE;
+				});
+				return;
+			}
+
+			fs_error();
+		}
+		, FS_proto = FileSaver.prototype
+		, saveAs = function(blob, name, no_auto_bom) {
+			return new FileSaver(blob, name || blob.name || "download", no_auto_bom);
+		}
+	;
+	// IE 10+ (native saveAs)
+	if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
+		return function(blob, name, no_auto_bom) {
+			name = name || blob.name || "download";
+
+			if (!no_auto_bom) {
+				blob = auto_bom(blob);
+			}
+			return navigator.msSaveOrOpenBlob(blob, name);
+		};
+	}
+
+	FS_proto.abort = function(){};
+	FS_proto.readyState = FS_proto.INIT = 0;
+	FS_proto.WRITING = 1;
+	FS_proto.DONE = 2;
+
+	FS_proto.error =
+	FS_proto.onwritestart =
+	FS_proto.onprogress =
+	FS_proto.onwrite =
+	FS_proto.onabort =
+	FS_proto.onerror =
+	FS_proto.onwriteend =
+		null;
+
+	return saveAs;
+}(
+	   typeof self !== "undefined" && self
+	|| typeof window !== "undefined" && window
+	|| this.content
+));
+
+
+// Expose file saver on the DataTables API. Can't attach to `DataTables.Buttons`
+// since this file can be loaded before Button's core!
+DataTable.fileSave = _saveAs;
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Local (private) functions
+ */
+
+/**
+ * Get the sheet name for Excel exports.
+ *
+ * @param {object}	config Button configuration
+ */
+var _sheetname = function ( config )
+{
+	var sheetName = 'Sheet1';
+
+	if ( config.sheetName ) {
+		sheetName = config.sheetName.replace(/[\[\]\*\/\\\?\:]/g, '');
+	}
+
+	return sheetName;
+};
+
+/**
+ * Get the newline character(s)
+ *
+ * @param {object}	config Button configuration
+ * @return {string}				Newline character
+ */
+var _newLine = function ( config )
+{
+	return config.newline ?
+		config.newline :
+		navigator.userAgent.match(/Windows/) ?
+			'\r\n' :
+			'\n';
+};
+
+/**
+ * Combine the data from the `buttons.exportData` method into a string that
+ * will be used in the export file.
+ *
+ * @param	{DataTable.Api} dt		 DataTables API instance
+ * @param	{object}				config Button configuration
+ * @return {object}							 The data to export
+ */
+var _exportData = function ( dt, config )
+{
+	var newLine = _newLine( config );
+	var data = dt.buttons.exportData( config.exportOptions );
+	var boundary = config.fieldBoundary;
+	var separator = config.fieldSeparator;
+	var reBoundary = new RegExp( boundary, 'g' );
+	var escapeChar = config.escapeChar !== undefined ?
+		config.escapeChar :
+		'\\';
+	var join = function ( a ) {
+		var s = '';
+
+		// If there is a field boundary, then we might need to escape it in
+		// the source data
+		for ( var i=0, ien=a.length ; i<ien ; i++ ) {
+			if ( i > 0 ) {
+				s += separator;
+			}
+
+			s += boundary ?
+				boundary + ('' + a[i]).replace( reBoundary, escapeChar+boundary ) + boundary :
+				a[i];
+		}
+
+		return s;
+	};
+
+	var header = config.header ? join( data.header )+newLine : '';
+	var footer = config.footer && data.footer ? newLine+join( data.footer ) : '';
+	var body = [];
+
+	for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+		body.push( join( data.body[i] ) );
+	}
+
+	return {
+		str: header + body.join( newLine ) + footer,
+		rows: body.length
+	};
+};
+
+/**
+ * Older versions of Safari (prior to tech preview 18) don't support the
+ * download option required.
+ *
+ * @return {Boolean} `true` if old Safari
+ */
+var _isDuffSafari = function ()
+{
+	var safari = navigator.userAgent.indexOf('Safari') !== -1 &&
+		navigator.userAgent.indexOf('Chrome') === -1 &&
+		navigator.userAgent.indexOf('Opera') === -1;
+
+	if ( ! safari ) {
+		return false;
+	}
+
+	var version = navigator.userAgent.match( /AppleWebKit\/(\d+\.\d+)/ );
+	if ( version && version.length > 1 && version[1]*1 < 603.1 ) {
+		return true;
+	}
+
+	return false;
+};
+
+/**
+ * Convert from numeric position to letter for column names in Excel
+ * @param  {int} n Column number
+ * @return {string} Column letter(s) name
+ */
+function createCellPos( n ){
+	var ordA = 'A'.charCodeAt(0);
+	var ordZ = 'Z'.charCodeAt(0);
+	var len = ordZ - ordA + 1;
+	var s = "";
+
+	while( n >= 0 ) {
+		s = String.fromCharCode(n % len + ordA) + s;
+		n = Math.floor(n / len) - 1;
+	}
+
+	return s;
+}
+
+try {
+	var _serialiser = new XMLSerializer();
+	var _ieExcel;
+}
+catch (t) {}
+
+/**
+ * Recursively add XML files from an object's structure to a ZIP file. This
+ * allows the XSLX file to be easily defined with an object's structure matching
+ * the files structure.
+ *
+ * @param {JSZip} zip ZIP package
+ * @param {object} obj Object to add (recursive)
+ */
+function _addToZip( zip, obj ) {
+	if ( _ieExcel === undefined ) {
+		// Detect if we are dealing with IE's _awful_ serialiser by seeing if it
+		// drop attributes
+		_ieExcel = _serialiser
+			.serializeToString(
+				$.parseXML( excelStrings['xl/worksheets/sheet1.xml'] )
+			)
+			.indexOf( 'xmlns:r' ) === -1;
+	}
+
+	$.each( obj, function ( name, val ) {
+		if ( $.isPlainObject( val ) ) {
+			var newDir = zip.folder( name );
+			_addToZip( newDir, val );
+		}
+		else {
+			if ( _ieExcel ) {
+				// IE's XML serialiser will drop some name space attributes from
+				// from the root node, so we need to save them. Do this by
+				// replacing the namespace nodes with a regular attribute that
+				// we convert back when serialised. Edge does not have this
+				// issue
+				var worksheet = val.childNodes[0];
+				var i, ien;
+				var attrs = [];
+
+				for ( i=worksheet.attributes.length-1 ; i>=0 ; i-- ) {
+					var attrName = worksheet.attributes[i].nodeName;
+					var attrValue = worksheet.attributes[i].nodeValue;
+
+					if ( attrName.indexOf( ':' ) !== -1 ) {
+						attrs.push( { name: attrName, value: attrValue } );
+
+						worksheet.removeAttribute( attrName );
+					}
+				}
+
+				for ( i=0, ien=attrs.length ; i<ien ; i++ ) {
+					var attr = val.createAttribute( attrs[i].name.replace( ':', '_dt_b_namespace_token_' ) );
+					attr.value = attrs[i].value;
+					worksheet.setAttributeNode( attr );
+				}
+			}
+
+			var str = _serialiser.serializeToString(val);
+
+			// Fix IE's XML
+			if ( _ieExcel ) {
+				// IE doesn't include the XML declaration
+				if ( str.indexOf( '<?xml' ) === -1 ) {
+					str = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+str;
+				}
+
+				// Return namespace attributes to being as such
+				str = str.replace( /_dt_b_namespace_token_/g, ':' );
+
+				// Remove testing name space that IE puts into the space preserve attr
+				str = str.replace( /xmlns:NS[\d]+="" NS[\d]+:/g, '' );
+			}
+
+			// Safari, IE and Edge will put empty name space attributes onto
+			// various elements making them useless. This strips them out
+			str = str.replace( /<([^<>]*?) xmlns=""([^<>]*?)>/g, '<$1 $2>' );
+
+			zip.file( name, str );
+		}
+	} );
+}
+
+/**
+ * Create an XML node and add any children, attributes, etc without needing to
+ * be verbose in the DOM.
+ *
+ * @param  {object} doc      XML document
+ * @param  {string} nodeName Node name
+ * @param  {object} opts     Options - can be `attr` (attributes), `children`
+ *   (child nodes) and `text` (text content)
+ * @return {node}            Created node
+ */
+function _createNode( doc, nodeName, opts ) {
+	var tempNode = doc.createElement( nodeName );
+
+	if ( opts ) {
+		if ( opts.attr ) {
+			$(tempNode).attr( opts.attr );
+		}
+
+		if ( opts.children ) {
+			$.each( opts.children, function ( key, value ) {
+				tempNode.appendChild( value );
+			} );
+		}
+
+		if ( opts.text !== null && opts.text !== undefined ) {
+			tempNode.appendChild( doc.createTextNode( opts.text ) );
+		}
+	}
+
+	return tempNode;
+}
+
+/**
+ * Get the width for an Excel column based on the contents of that column
+ * @param  {object} data Data for export
+ * @param  {int}    col  Column index
+ * @return {int}         Column width
+ */
+function _excelColWidth( data, col ) {
+	var max = data.header[col].length;
+	var len, lineSplit, str;
+
+	if ( data.footer && data.footer[col].length > max ) {
+		max = data.footer[col].length;
+	}
+
+	for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+		var point = data.body[i][col];
+		str = point !== null && point !== undefined ?
+			point.toString() :
+			'';
+
+		// If there is a newline character, workout the width of the column
+		// based on the longest line in the string
+		if ( str.indexOf('\n') !== -1 ) {
+			lineSplit = str.split('\n');
+			lineSplit.sort( function (a, b) {
+				return b.length - a.length;
+			} );
+
+			len = lineSplit[0].length;
+		}
+		else {
+			len = str.length;
+		}
+
+		if ( len > max ) {
+			max = len;
+		}
+
+		// Max width rather than having potentially massive column widths
+		if ( max > 40 ) {
+			return 54; // 40 * 1.35
+		}
+	}
+
+	max *= 1.35;
+
+	// And a min width
+	return max > 6 ? max : 6;
+}
+
+// Excel - Pre-defined strings to build a basic XLSX file
+var excelStrings = {
+	"_rels/.rels":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+
+			'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>'+
+		'</Relationships>',
+
+	"xl/_rels/workbook.xml.rels":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+
+			'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>'+
+			'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>'+
+		'</Relationships>',
+
+	"[Content_Types].xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'+
+			'<Default Extension="xml" ContentType="application/xml" />'+
+			'<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />'+
+			'<Default Extension="jpeg" ContentType="image/jpeg" />'+
+			'<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" />'+
+			'<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" />'+
+			'<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" />'+
+		'</Types>',
+
+	"xl/workbook.xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'+
+			'<fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/>'+
+			'<workbookPr showInkAnnotation="0" autoCompressPictures="0"/>'+
+			'<bookViews>'+
+				'<workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/>'+
+			'</bookViews>'+
+			'<sheets>'+
+				'<sheet name="Sheet1" sheetId="1" r:id="rId1"/>'+
+			'</sheets>'+
+			'<definedNames/>'+
+		'</workbook>',
+
+	"xl/worksheets/sheet1.xml":
+		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
+		'<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">'+
+			'<sheetData/>'+
+			'<mergeCells count="0"/>'+
+		'</worksheet>',
+
+	"xl/styles.xml":
+		'<?xml version="1.0" encoding="UTF-8"?>'+
+		'<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">'+
+			'<numFmts count="6">'+
+				'<numFmt numFmtId="164" formatCode="#,##0.00_-\ [$$-45C]"/>'+
+				'<numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/>'+
+				'<numFmt numFmtId="166" formatCode="[$€-2]\ #,##0.00"/>'+
+				'<numFmt numFmtId="167" formatCode="0.0%"/>'+
+				'<numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/>'+
+				'<numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/>'+
+			'</numFmts>'+
+			'<fonts count="5" x14ac:knownFonts="1">'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<color rgb="FFFFFFFF" />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<b />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<i />'+
+				'</font>'+
+				'<font>'+
+					'<sz val="11" />'+
+					'<name val="Calibri" />'+
+					'<u />'+
+				'</font>'+
+			'</fonts>'+
+			'<fills count="6">'+
+				'<fill>'+
+					'<patternFill patternType="none" />'+
+				'</fill>'+
+				'<fill>'+ // Excel appears to use this as a dotted background regardless of values but
+					'<patternFill patternType="none" />'+ // to be valid to the schema, use a patternFill
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="FFD9D9D9" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="FFD99795" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="ffc6efce" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+				'<fill>'+
+					'<patternFill patternType="solid">'+
+						'<fgColor rgb="ffc6cfef" />'+
+						'<bgColor indexed="64" />'+
+					'</patternFill>'+
+				'</fill>'+
+			'</fills>'+
+			'<borders count="2">'+
+				'<border>'+
+					'<left />'+
+					'<right />'+
+					'<top />'+
+					'<bottom />'+
+					'<diagonal />'+
+				'</border>'+
+				'<border diagonalUp="false" diagonalDown="false">'+
+					'<left style="thin">'+
+						'<color auto="1" />'+
+					'</left>'+
+					'<right style="thin">'+
+						'<color auto="1" />'+
+					'</right>'+
+					'<top style="thin">'+
+						'<color auto="1" />'+
+					'</top>'+
+					'<bottom style="thin">'+
+						'<color auto="1" />'+
+					'</bottom>'+
+					'<diagonal />'+
+				'</border>'+
+			'</borders>'+
+			'<cellStyleXfs count="1">'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" />'+
+			'</cellStyleXfs>'+
+			'<cellXfs count="67">'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="left"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="center"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="right"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment horizontal="fill"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment textRotation="90"/>'+
+				'</xf>'+
+				'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">'+
+					'<alignment wrapText="1"/>'+
+				'</xf>'+
+				'<xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+				'<xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>'+
+			'</cellXfs>'+
+			'<cellStyles count="1">'+
+				'<cellStyle name="Normal" xfId="0" builtinId="0" />'+
+			'</cellStyles>'+
+			'<dxfs count="0" />'+
+			'<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" />'+
+		'</styleSheet>'
+};
+// Note we could use 3 `for` loops for the styles, but when gzipped there is
+// virtually no difference in size, since the above can be easily compressed
+
+// Pattern matching for special number formats. Perhaps this should be exposed
+// via an API in future?
+// Ref: section 3.8.30 - built in formatters in open spreadsheet
+//   https://www.ecma-international.org/news/TC45_current_work/Office%20Open%20XML%20Part%204%20-%20Markup%20Language%20Reference.pdf
+var _excelSpecials = [
+	{ match: /^\-?\d+\.\d%$/,       style: 60, fmt: function (d) { return d/100; } }, // Precent with d.p.
+	{ match: /^\-?\d+\.?\d*%$/,     style: 56, fmt: function (d) { return d/100; } }, // Percent
+	{ match: /^\-?\$[\d,]+.?\d*$/,  style: 57 }, // Dollars
+	{ match: /^\-?£[\d,]+.?\d*$/,   style: 58 }, // Pounds
+	{ match: /^\-?€[\d,]+.?\d*$/,   style: 59 }, // Euros
+	{ match: /^\-?\d+$/,            style: 65 }, // Numbers without thousand separators
+	{ match: /^\-?\d+\.\d{2}$/,     style: 66 }, // Numbers 2 d.p. without thousands separators
+	{ match: /^\([\d,]+\)$/,        style: 61, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } },  // Negative numbers indicated by brackets
+	{ match: /^\([\d,]+\.\d{2}\)$/, style: 62, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } },  // Negative numbers indicated by brackets - 2d.p.
+	{ match: /^\-?[\d,]+$/,         style: 63 }, // Numbers with thousand separators
+	{ match: /^\-?[\d,]+\.\d{2}$/,  style: 64 }  // Numbers with 2 d.p. and thousands separators
+];
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Buttons
+ */
+
+//
+// Copy to clipboard
+//
+DataTable.ext.buttons.copyHtml5 = {
+	className: 'buttons-copy buttons-html5',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.copy', 'Copy' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		var that = this;
+		var exportData = _exportData( dt, config );
+		var info = dt.buttons.exportInfo( config );
+		var newline = _newLine(config);
+		var output = exportData.str;
+		var hiddenDiv = $('<div/>')
+			.css( {
+				height: 1,
+				width: 1,
+				overflow: 'hidden',
+				position: 'fixed',
+				top: 0,
+				left: 0
+			} );
+
+		if ( info.title ) {
+			output = info.title + newline + newline + output;
+		}
+
+		if ( info.messageTop ) {
+			output = info.messageTop + newline + newline + output;
+		}
+
+		if ( info.messageBottom ) {
+			output = output + newline + newline + info.messageBottom;
+		}
+
+		if ( config.customize ) {
+			output = config.customize( output, config, dt );
+		}
+
+		var textarea = $('<textarea readonly/>')
+			.val( output )
+			.appendTo( hiddenDiv );
+
+		// For browsers that support the copy execCommand, try to use it
+		if ( document.queryCommandSupported('copy') ) {
+			hiddenDiv.appendTo( dt.table().container() );
+			textarea[0].focus();
+			textarea[0].select();
+
+			try {
+				var successful = document.execCommand( 'copy' );
+				hiddenDiv.remove();
+
+				if (successful) {
+					dt.buttons.info(
+						dt.i18n( 'buttons.copyTitle', 'Copy to clipboard' ),
+						dt.i18n( 'buttons.copySuccess', {
+							1: 'Copied one row to clipboard',
+							_: 'Copied %d rows to clipboard'
+						}, exportData.rows ),
+						2000
+					);
+
+					this.processing( false );
+					return;
+				}
+			}
+			catch (t) {}
+		}
+
+		// Otherwise we show the text box and instruct the user to use it
+		var message = $('<span>'+dt.i18n( 'buttons.copyKeys',
+				'Press <i>ctrl</i> or <i>\u2318</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>'+
+				'To cancel, click this message or press escape.' )+'</span>'
+			)
+			.append( hiddenDiv );
+
+		dt.buttons.info( dt.i18n( 'buttons.copyTitle', 'Copy to clipboard' ), message, 0 );
+
+		// Select the text so when the user activates their system clipboard
+		// it will copy that text
+		textarea[0].focus();
+		textarea[0].select();
+
+		// Event to hide the message when the user is done
+		var container = $(message).closest('.dt-button-info');
+		var close = function () {
+			container.off( 'click.buttons-copy' );
+			$(document).off( '.buttons-copy' );
+			dt.buttons.info( false );
+		};
+
+		container.on( 'click.buttons-copy', close );
+		$(document)
+			.on( 'keydown.buttons-copy', function (e) {
+				if ( e.keyCode === 27 ) { // esc
+					close();
+					that.processing( false );
+				}
+			} )
+			.on( 'copy.buttons-copy cut.buttons-copy', function () {
+				close();
+				that.processing( false );
+			} );
+	},
+
+	exportOptions: {},
+
+	fieldSeparator: '\t',
+
+	fieldBoundary: '',
+
+	header: true,
+
+	footer: false,
+
+	title: '*',
+
+	messageTop: '*',
+
+	messageBottom: '*'
+};
+
+//
+// CSV export
+//
+DataTable.ext.buttons.csvHtml5 = {
+	bom: false,
+
+	className: 'buttons-csv buttons-html5',
+
+	available: function () {
+		return window.FileReader !== undefined && window.Blob;
+	},
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.csv', 'CSV' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		// Set the text
+		var output = _exportData( dt, config ).str;
+		var info = dt.buttons.exportInfo(config);
+		var charset = config.charset;
+
+		if ( config.customize ) {
+			output = config.customize( output, config, dt );
+		}
+
+		if ( charset !== false ) {
+			if ( ! charset ) {
+				charset = document.characterSet || document.charset;
+			}
+
+			if ( charset ) {
+				charset = ';charset='+charset;
+			}
+		}
+		else {
+			charset = '';
+		}
+
+		if ( config.bom ) {
+			output = '\ufeff' + output;
+		}
+
+		_saveAs(
+			new Blob( [output], {type: 'text/csv'+charset} ),
+			info.filename,
+			true
+		);
+
+		this.processing( false );
+	},
+
+	filename: '*',
+
+	extension: '.csv',
+
+	exportOptions: {},
+
+	fieldSeparator: ',',
+
+	fieldBoundary: '"',
+
+	escapeChar: '"',
+
+	charset: null,
+
+	header: true,
+
+	footer: false
+};
+
+//
+// Excel (xlsx) export
+//
+DataTable.ext.buttons.excelHtml5 = {
+	className: 'buttons-excel buttons-html5',
+
+	available: function () {
+		return window.FileReader !== undefined && _jsZip() !== undefined && ! _isDuffSafari() && _serialiser;
+	},
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.excel', 'Excel' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		var that = this;
+		var rowPos = 0;
+		var dataStartRow, dataEndRow;
+		var getXml = function ( type ) {
+			var str = excelStrings[ type ];
+
+			//str = str.replace( /xmlns:/g, 'xmlns_' ).replace( /mc:/g, 'mc_' );
+
+			return $.parseXML( str );
+		};
+		var rels = getXml('xl/worksheets/sheet1.xml');
+		var relsGet = rels.getElementsByTagName( "sheetData" )[0];
+
+		var xlsx = {
+			_rels: {
+				".rels": getXml('_rels/.rels')
+			},
+			xl: {
+				_rels: {
+					"workbook.xml.rels": getXml('xl/_rels/workbook.xml.rels')
+				},
+				"workbook.xml": getXml('xl/workbook.xml'),
+				"styles.xml": getXml('xl/styles.xml'),
+				"worksheets": {
+					"sheet1.xml": rels
+				}
+
+			},
+			"[Content_Types].xml": getXml('[Content_Types].xml')
+		};
+
+		var data = dt.buttons.exportData( config.exportOptions );
+		var currentRow, rowNode;
+		var addRow = function ( row ) {
+			currentRow = rowPos+1;
+			rowNode = _createNode( rels, "row", { attr: {r:currentRow} } );
+
+			for ( var i=0, ien=row.length ; i<ien ; i++ ) {
+				// Concat both the Cell Columns as a letter and the Row of the cell.
+				var cellId = createCellPos(i) + '' + currentRow;
+				var cell = null;
+
+				// For null, undefined of blank cell, continue so it doesn't create the _createNode
+				if ( row[i] === null || row[i] === undefined || row[i] === '' ) {
+					if ( config.createEmptyCells === true ) {
+						row[i] = '';
+					}
+					else {
+						continue;
+					}
+				}
+
+				var originalContent = row[i];
+				row[i] = $.trim( row[i] );
+
+				// Special number formatting options
+				for ( var j=0, jen=_excelSpecials.length ; j<jen ; j++ ) {
+					var special = _excelSpecials[j];
+
+					// TODO Need to provide the ability for the specials to say
+					// if they are returning a string, since at the moment it is
+					// assumed to be a number
+					if ( row[i].match && ! row[i].match(/^0\d+/) && row[i].match( special.match ) ) {
+						var val = row[i].replace(/[^\d\.\-]/g, '');
+
+						if ( special.fmt ) {
+							val = special.fmt( val );
+						}
+
+						cell = _createNode( rels, 'c', {
+							attr: {
+								r: cellId,
+								s: special.style
+							},
+							children: [
+								_createNode( rels, 'v', { text: val } )
+							]
+						} );
+
+						break;
+					}
+				}
+
+				if ( ! cell ) {
+					if ( typeof row[i] === 'number' || (
+						row[i].match &&
+						row[i].match(/^-?\d+(\.\d+)?$/) &&
+						! row[i].match(/^0\d+/) )
+					) {
+						// Detect numbers - don't match numbers with leading zeros
+						// or a negative anywhere but the start
+						cell = _createNode( rels, 'c', {
+							attr: {
+								t: 'n',
+								r: cellId
+							},
+							children: [
+								_createNode( rels, 'v', { text: row[i] } )
+							]
+						} );
+					}
+					else {
+						// String output - replace non standard characters for text output
+						var text = ! originalContent.replace ?
+							originalContent :
+							originalContent.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, '');
+
+						cell = _createNode( rels, 'c', {
+							attr: {
+								t: 'inlineStr',
+								r: cellId
+							},
+							children:{
+								row: _createNode( rels, 'is', {
+									children: {
+										row: _createNode( rels, 't', {
+											text: text,
+											attr: {
+												'xml:space': 'preserve'
+											}
+										} )
+									}
+								} )
+							}
+						} );
+					}
+				}
+
+				rowNode.appendChild( cell );
+			}
+
+			relsGet.appendChild(rowNode);
+			rowPos++;
+		};
+
+		if ( config.customizeData ) {
+			config.customizeData( data );
+		}
+
+		var mergeCells = function ( row, colspan ) {
+			var mergeCells = $('mergeCells', rels);
+
+			mergeCells[0].appendChild( _createNode( rels, 'mergeCell', {
+				attr: {
+					ref: 'A'+row+':'+createCellPos(colspan)+row
+				}
+			} ) );
+			mergeCells.attr( 'count', parseFloat(mergeCells.attr( 'count' ))+1 );
+			$('row:eq('+(row-1)+') c', rels).attr( 's', '51' ); // centre
+		};
+
+		// Title and top messages
+		var exportInfo = dt.buttons.exportInfo( config );
+		if ( exportInfo.title ) {
+			addRow( [exportInfo.title], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+		if ( exportInfo.messageTop ) {
+			addRow( [exportInfo.messageTop], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+
+		// Table itself
+		if ( config.header ) {
+			addRow( data.header, rowPos );
+			$('row:last c', rels).attr( 's', '2' ); // bold
+		}
+	
+		dataStartRow = rowPos;
+
+		for ( var n=0, ie=data.body.length ; n<ie ; n++ ) {
+			addRow( data.body[n], rowPos );
+		}
+	
+		dataEndRow = rowPos;
+
+		if ( config.footer && data.footer ) {
+			addRow( data.footer, rowPos);
+			$('row:last c', rels).attr( 's', '2' ); // bold
+		}
+
+		// Below the table
+		if ( exportInfo.messageBottom ) {
+			addRow( [exportInfo.messageBottom], rowPos );
+			mergeCells( rowPos, data.header.length-1 );
+		}
+
+		// Set column widths
+		var cols = _createNode( rels, 'cols' );
+		$('worksheet', rels).prepend( cols );
+
+		for ( var i=0, ien=data.header.length ; i<ien ; i++ ) {
+			cols.appendChild( _createNode( rels, 'col', {
+				attr: {
+					min: i+1,
+					max: i+1,
+					width: _excelColWidth( data, i ),
+					customWidth: 1
+				}
+			} ) );
+		}
+
+		// Workbook modifications
+		var workbook = xlsx.xl['workbook.xml'];
+
+		$( 'sheets sheet', workbook ).attr( 'name', _sheetname( config ) );
+
+		// Auto filter for columns
+		if ( config.autoFilter ) {
+			$('mergeCells', rels).before( _createNode( rels, 'autoFilter', {
+				attr: {
+					ref: 'A'+dataStartRow+':'+createCellPos(data.header.length-1)+dataEndRow
+				}
+			} ) );
+
+			$('definedNames', workbook).append( _createNode( workbook, 'definedName', {
+				attr: {
+					name: '_xlnm._FilterDatabase',
+					localSheetId: '0',
+					hidden: 1
+				},
+				text: _sheetname(config)+'!$A$'+dataStartRow+':'+createCellPos(data.header.length-1)+dataEndRow
+			} ) );
+		}
+
+		// Let the developer customise the document if they want to
+		if ( config.customize ) {
+			config.customize( xlsx, config, dt );
+		}
+
+		// Excel doesn't like an empty mergeCells tag
+		if ( $('mergeCells', rels).children().length === 0 ) {
+			$('mergeCells', rels).remove();
+		}
+
+		var jszip = _jsZip();
+		var zip = new jszip();
+		var zipConfig = {
+			type: 'blob',
+			mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+		};
+
+		_addToZip( zip, xlsx );
+
+		if ( zip.generateAsync ) {
+			// JSZip 3+
+			zip
+				.generateAsync( zipConfig )
+				.then( function ( blob ) {
+					_saveAs( blob, exportInfo.filename );
+					that.processing( false );
+				} );
+		}
+		else {
+			// JSZip 2.5
+			_saveAs(
+				zip.generate( zipConfig ),
+				exportInfo.filename
+			);
+			this.processing( false );
+		}
+	},
+
+	filename: '*',
+
+	extension: '.xlsx',
+
+	exportOptions: {},
+
+	header: true,
+
+	footer: false,
+
+	title: '*',
+
+	messageTop: '*',
+
+	messageBottom: '*',
+
+	createEmptyCells: false,
+
+	autoFilter: false,
+
+	sheetName: ''
+};
+
+//
+// PDF export - using pdfMake - http://pdfmake.org
+//
+DataTable.ext.buttons.pdfHtml5 = {
+	className: 'buttons-pdf buttons-html5',
+
+	available: function () {
+		return window.FileReader !== undefined && _pdfMake();
+	},
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.pdf', 'PDF' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		this.processing( true );
+
+		var that = this;
+		var data = dt.buttons.exportData( config.exportOptions );
+		var info = dt.buttons.exportInfo( config );
+		var rows = [];
+
+		if ( config.header ) {
+			rows.push( $.map( data.header, function ( d ) {
+				return {
+					text: typeof d === 'string' ? d : d+'',
+					style: 'tableHeader'
+				};
+			} ) );
+		}
+
+		for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+			rows.push( $.map( data.body[i], function ( d ) {
+				if ( d === null || d === undefined ) {
+					d = '';
+				}
+				return {
+					text: typeof d === 'string' ? d : d+'',
+					style: i % 2 ? 'tableBodyEven' : 'tableBodyOdd'
+				};
+			} ) );
+		}
+
+		if ( config.footer && data.footer) {
+			rows.push( $.map( data.footer, function ( d ) {
+				return {
+					text: typeof d === 'string' ? d : d+'',
+					style: 'tableFooter'
+				};
+			} ) );
+		}
+
+		var doc = {
+			pageSize: config.pageSize,
+			pageOrientation: config.orientation,
+			content: [
+				{
+					table: {
+						headerRows: 1,
+						body: rows
+					},
+					layout: 'noBorders'
+				}
+			],
+			styles: {
+				tableHeader: {
+					bold: true,
+					fontSize: 11,
+					color: 'white',
+					fillColor: '#2d4154',
+					alignment: 'center'
+				},
+				tableBodyEven: {},
+				tableBodyOdd: {
+					fillColor: '#f3f3f3'
+				},
+				tableFooter: {
+					bold: true,
+					fontSize: 11,
+					color: 'white',
+					fillColor: '#2d4154'
+				},
+				title: {
+					alignment: 'center',
+					fontSize: 15
+				},
+				message: {}
+			},
+			defaultStyle: {
+				fontSize: 10
+			}
+		};
+
+		if ( info.messageTop ) {
+			doc.content.unshift( {
+				text: info.messageTop,
+				style: 'message',
+				margin: [ 0, 0, 0, 12 ]
+			} );
+		}
+
+		if ( info.messageBottom ) {
+			doc.content.push( {
+				text: info.messageBottom,
+				style: 'message',
+				margin: [ 0, 0, 0, 12 ]
+			} );
+		}
+
+		if ( info.title ) {
+			doc.content.unshift( {
+				text: info.title,
+				style: 'title',
+				margin: [ 0, 0, 0, 12 ]
+			} );
+		}
+
+		if ( config.customize ) {
+			config.customize( doc, config, dt );
+		}
+
+		var pdf = _pdfMake().createPdf( doc );
+
+		if ( config.download === 'open' && ! _isDuffSafari() ) {
+			pdf.open();
+		}
+		else {
+			pdf.download( info.filename );
+		}
+
+		this.processing( false );
+	},
+
+	title: '*',
+
+	filename: '*',
+
+	extension: '.pdf',
+
+	exportOptions: {},
+
+	orientation: 'portrait',
+
+	pageSize: 'A4',
+
+	header: true,
+
+	footer: false,
+
+	messageTop: '*',
+
+	messageBottom: '*',
+
+	customize: null,
+
+	download: 'download'
+};
+
+
+return DataTable.Buttons;
+}));
+
+
+/*!
+ * Print button for Buttons and DataTables.
+ * 2016 SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			if ( ! $.fn.dataTable.Buttons ) {
+				require('datatables.net-buttons')(root, $);
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var _link = document.createElement( 'a' );
+
+/**
+ * Clone link and style tags, taking into account the need to change the source
+ * path.
+ *
+ * @param  {node}     el Element to convert
+ */
+var _styleToAbs = function( el ) {
+	var url;
+	var clone = $(el).clone()[0];
+	var linkHost;
+
+	if ( clone.nodeName.toLowerCase() === 'link' ) {
+		clone.href = _relToAbs( clone.href );
+	}
+
+	return clone.outerHTML;
+};
+
+/**
+ * Convert a URL from a relative to an absolute address so it will work
+ * correctly in the popup window which has no base URL.
+ *
+ * @param  {string} href URL
+ */
+var _relToAbs = function( href ) {
+	// Assign to a link on the original page so the browser will do all the
+	// hard work of figuring out where the file actually is
+	_link.href = href;
+	var linkHost = _link.host;
+
+	// IE doesn't have a trailing slash on the host
+	// Chrome has it on the pathname
+	if ( linkHost.indexOf('/') === -1 && _link.pathname.indexOf('/') !== 0) {
+		linkHost += '/';
+	}
+
+	return _link.protocol+"//"+linkHost+_link.pathname+_link.search;
+};
+
+
+DataTable.ext.buttons.print = {
+	className: 'buttons-print',
+
+	text: function ( dt ) {
+		return dt.i18n( 'buttons.print', 'Print' );
+	},
+
+	action: function ( e, dt, button, config ) {
+		var data = dt.buttons.exportData(
+			$.extend( {decodeEntities: false}, config.exportOptions ) // XSS protection
+		);
+		var exportInfo = dt.buttons.exportInfo( config );
+		var columnClasses = dt
+			.columns( config.exportOptions.columns )
+			.flatten()
+			.map( function (idx) {
+				return dt.settings()[0].aoColumns[dt.column(idx).index()].sClass;
+			} )
+			.toArray();
+
+		var addRow = function ( d, tag ) {
+			var str = '<tr>';
+
+			for ( var i=0, ien=d.length ; i<ien ; i++ ) {
+				// null and undefined aren't useful in the print output
+				var dataOut = d[i] === null || d[i] === undefined ?
+					'' :
+					d[i];
+				var classAttr = columnClasses[i] ?
+					'class="'+columnClasses[i]+'"' :
+					'';
+
+				str += '<'+tag+' '+classAttr+'>'+dataOut+'</'+tag+'>';
+			}
+
+			return str + '</tr>';
+		};
+
+		// Construct a table for printing
+		var html = '<table class="'+dt.table().node().className+'">';
+
+		if ( config.header ) {
+			html += '<thead>'+ addRow( data.header, 'th' ) +'</thead>';
+		}
+
+		html += '<tbody>';
+		for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
+			html += addRow( data.body[i], 'td' );
+		}
+		html += '</tbody>';
+
+		if ( config.footer && data.footer ) {
+			html += '<tfoot>'+ addRow( data.footer, 'th' ) +'</tfoot>';
+		}
+		html += '</table>';
+
+		// Open a new window for the printable table
+		var win = window.open( '', '' );
+		win.document.close();
+
+		// Inject the title and also a copy of the style and link tags from this
+		// document so the table can retain its base styling. Note that we have
+		// to use string manipulation as IE won't allow elements to be created
+		// in the host document and then appended to the new window.
+		var head = '<title>'+exportInfo.title+'</title>';
+		$('style, link').each( function () {
+			head += _styleToAbs( this );
+		} );
+
+		try {
+			win.document.head.innerHTML = head; // Work around for Edge
+		}
+		catch (e) {
+			$(win.document.head).html( head ); // Old IE
+		}
+
+		// Inject the table and other surrounding information
+		win.document.body.innerHTML =
+			'<h1>'+exportInfo.title+'</h1>'+
+			'<div>'+(exportInfo.messageTop || '')+'</div>'+
+			html+
+			'<div>'+(exportInfo.messageBottom || '')+'</div>';
+
+		$(win.document.body).addClass('dt-print-view');
+
+		$('img', win.document.body).each( function ( i, img ) {
+			img.setAttribute( 'src', _relToAbs( img.getAttribute('src') ) );
+		} );
+
+		if ( config.customize ) {
+			config.customize( win, config, dt );
+		}
+
+		// Allow stylesheets time to load
+		var autoPrint = function () {
+			if ( config.autoPrint ) {
+				win.print(); // blocking - so close will not
+				win.close(); // execute until this is done
+			}
+		};
+
+		if ( navigator.userAgent.match(/Trident\/\d.\d/) ) { // IE needs to call this without a setTimeout
+			autoPrint();
+		}
+		else {
+			win.setTimeout( autoPrint, 1000 );
+		}
+	},
+
+	title: '*',
+
+	messageTop: '*',
+
+	messageBottom: '*',
+
+	exportOptions: {},
+
+	header: true,
+
+	footer: false,
+
+	autoPrint: true,
+
+	customize: null
+};
+
+
+return DataTable.Buttons;
+}));
+
+
+/*! ColReorder 1.5.2
+ * ©2010-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     ColReorder
+ * @description Provide the ability to reorder columns in a DataTable
+ * @version     1.5.2
+ * @file        dataTables.colReorder.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/**
+ * Switch the key value pairing of an index array to be value key (i.e. the old value is now the
+ * key). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ].
+ *  @method  fnInvertKeyValues
+ *  @param   array aIn Array to switch around
+ *  @returns array
+ */
+function fnInvertKeyValues( aIn )
+{
+	var aRet=[];
+	for ( var i=0, iLen=aIn.length ; i<iLen ; i++ )
+	{
+		aRet[ aIn[i] ] = i;
+	}
+	return aRet;
+}
+
+
+/**
+ * Modify an array by switching the position of two elements
+ *  @method  fnArraySwitch
+ *  @param   array aArray Array to consider, will be modified by reference (i.e. no return)
+ *  @param   int iFrom From point
+ *  @param   int iTo Insert point
+ *  @returns void
+ */
+function fnArraySwitch( aArray, iFrom, iTo )
+{
+	var mStore = aArray.splice( iFrom, 1 )[0];
+	aArray.splice( iTo, 0, mStore );
+}
+
+
+/**
+ * Switch the positions of nodes in a parent node (note this is specifically designed for
+ * table rows). Note this function considers all element nodes under the parent!
+ *  @method  fnDomSwitch
+ *  @param   string sTag Tag to consider
+ *  @param   int iFrom Element to move
+ *  @param   int Point to element the element to (before this point), can be null for append
+ *  @returns void
+ */
+function fnDomSwitch( nParent, iFrom, iTo )
+{
+	var anTags = [];
+	for ( var i=0, iLen=nParent.childNodes.length ; i<iLen ; i++ )
+	{
+		if ( nParent.childNodes[i].nodeType == 1 )
+		{
+			anTags.push( nParent.childNodes[i] );
+		}
+	}
+	var nStore = anTags[ iFrom ];
+
+	if ( iTo !== null )
+	{
+		nParent.insertBefore( nStore, anTags[iTo] );
+	}
+	else
+	{
+		nParent.appendChild( nStore );
+	}
+}
+
+
+/**
+ * Plug-in for DataTables which will reorder the internal column structure by taking the column
+ * from one position (iFrom) and insert it into a given point (iTo).
+ *  @method  $.fn.dataTableExt.oApi.fnColReorder
+ *  @param   object oSettings DataTables settings object - automatically added by DataTables!
+ *  @param   int iFrom Take the column to be repositioned from this point
+ *  @param   int iTo and insert it into this point
+ *  @param   bool drop Indicate if the reorder is the final one (i.e. a drop)
+ *    not a live reorder
+ *  @param   bool invalidateRows speeds up processing if false passed
+ *  @returns void
+ */
+$.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo, drop, invalidateRows )
+{
+	var i, iLen, j, jLen, jen, iCols=oSettings.aoColumns.length, nTrs, oCol;
+	var attrMap = function ( obj, prop, mapping ) {
+		if ( ! obj[ prop ] || typeof obj[ prop ] === 'function' ) {
+			return;
+		}
+
+		var a = obj[ prop ].split('.');
+		var num = a.shift();
+
+		if ( isNaN( num*1 ) ) {
+			return;
+		}
+
+		obj[ prop ] = mapping[ num*1 ]+'.'+a.join('.');
+	};
+
+	/* Sanity check in the input */
+	if ( iFrom == iTo )
+	{
+		/* Pointless reorder */
+		return;
+	}
+
+	if ( iFrom < 0 || iFrom >= iCols )
+	{
+		this.oApi._fnLog( oSettings, 1, "ColReorder 'from' index is out of bounds: "+iFrom );
+		return;
+	}
+
+	if ( iTo < 0 || iTo >= iCols )
+	{
+		this.oApi._fnLog( oSettings, 1, "ColReorder 'to' index is out of bounds: "+iTo );
+		return;
+	}
+
+	/*
+	 * Calculate the new column array index, so we have a mapping between the old and new
+	 */
+	var aiMapping = [];
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		aiMapping[i] = i;
+	}
+	fnArraySwitch( aiMapping, iFrom, iTo );
+	var aiInvertMapping = fnInvertKeyValues( aiMapping );
+
+
+	/*
+	 * Convert all internal indexing to the new column order indexes
+	 */
+	/* Sorting */
+	for ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )
+	{
+		oSettings.aaSorting[i][0] = aiInvertMapping[ oSettings.aaSorting[i][0] ];
+	}
+
+	/* Fixed sorting */
+	if ( oSettings.aaSortingFixed !== null )
+	{
+		for ( i=0, iLen=oSettings.aaSortingFixed.length ; i<iLen ; i++ )
+		{
+			oSettings.aaSortingFixed[i][0] = aiInvertMapping[ oSettings.aaSortingFixed[i][0] ];
+		}
+	}
+
+	/* Data column sorting (the column which the sort for a given column should take place on) */
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		oCol = oSettings.aoColumns[i];
+		for ( j=0, jLen=oCol.aDataSort.length ; j<jLen ; j++ )
+		{
+			oCol.aDataSort[j] = aiInvertMapping[ oCol.aDataSort[j] ];
+		}
+
+		// Update the column indexes
+		oCol.idx = aiInvertMapping[ oCol.idx ];
+	}
+
+	// Update 1.10 optimised sort class removal variable
+	$.each( oSettings.aLastSort, function (i, val) {
+		oSettings.aLastSort[i].src = aiInvertMapping[ val.src ];
+	} );
+
+	/* Update the Get and Set functions for each column */
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		oCol = oSettings.aoColumns[i];
+
+		if ( typeof oCol.mData == 'number' ) {
+			oCol.mData = aiInvertMapping[ oCol.mData ];
+		}
+		else if ( $.isPlainObject( oCol.mData ) ) {
+			// HTML5 data sourced
+			attrMap( oCol.mData, '_',      aiInvertMapping );
+			attrMap( oCol.mData, 'filter', aiInvertMapping );
+			attrMap( oCol.mData, 'sort',   aiInvertMapping );
+			attrMap( oCol.mData, 'type',   aiInvertMapping );
+		}
+	}
+
+	/*
+	 * Move the DOM elements
+	 */
+	if ( oSettings.aoColumns[iFrom].bVisible )
+	{
+		/* Calculate the current visible index and the point to insert the node before. The insert
+		 * before needs to take into account that there might not be an element to insert before,
+		 * in which case it will be null, and an appendChild should be used
+		 */
+		var iVisibleIndex = this.oApi._fnColumnIndexToVisible( oSettings, iFrom );
+		var iInsertBeforeIndex = null;
+
+		i = iTo < iFrom ? iTo : iTo + 1;
+		while ( iInsertBeforeIndex === null && i < iCols )
+		{
+			iInsertBeforeIndex = this.oApi._fnColumnIndexToVisible( oSettings, i );
+			i++;
+		}
+
+		/* Header */
+		nTrs = oSettings.nTHead.getElementsByTagName('tr');
+		for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+		{
+			fnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );
+		}
+
+		/* Footer */
+		if ( oSettings.nTFoot !== null )
+		{
+			nTrs = oSettings.nTFoot.getElementsByTagName('tr');
+			for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+			{
+				fnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );
+			}
+		}
+
+		/* Body */
+		for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+		{
+			if ( oSettings.aoData[i].nTr !== null )
+			{
+				fnDomSwitch( oSettings.aoData[i].nTr, iVisibleIndex, iInsertBeforeIndex );
+			}
+		}
+	}
+
+	/*
+	 * Move the internal array elements
+	 */
+	/* Columns */
+	fnArraySwitch( oSettings.aoColumns, iFrom, iTo );
+
+	// regenerate the get / set functions
+	for ( i=0, iLen=iCols ; i<iLen ; i++ ) {
+		oSettings.oApi._fnColumnOptions( oSettings, i, {} );
+	}
+
+	/* Search columns */
+	fnArraySwitch( oSettings.aoPreSearchCols, iFrom, iTo );
+
+	/* Array array - internal data anodes cache */
+	for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+	{
+		var data = oSettings.aoData[i];
+		var cells = data.anCells;
+
+		if ( cells ) {
+			fnArraySwitch( cells, iFrom, iTo );
+
+			// Longer term, should this be moved into the DataTables' invalidate
+			// methods?
+			for ( j=0, jen=cells.length ; j<jen ; j++ ) {
+				if ( cells[j] && cells[j]._DT_CellIndex ) {
+					cells[j]._DT_CellIndex.column = j;
+				}
+			}
+		}
+
+		// For DOM sourced data, the invalidate will reread the cell into
+		// the data array, but for data sources as an array, they need to
+		// be flipped
+		if ( data.src !== 'dom' && $.isArray( data._aData ) ) {
+			fnArraySwitch( data._aData, iFrom, iTo );
+		}
+	}
+
+	/* Reposition the header elements in the header layout array */
+	for ( i=0, iLen=oSettings.aoHeader.length ; i<iLen ; i++ )
+	{
+		fnArraySwitch( oSettings.aoHeader[i], iFrom, iTo );
+	}
+
+	if ( oSettings.aoFooter !== null )
+	{
+		for ( i=0, iLen=oSettings.aoFooter.length ; i<iLen ; i++ )
+		{
+			fnArraySwitch( oSettings.aoFooter[i], iFrom, iTo );
+		}
+	}
+
+	if ( invalidateRows || invalidateRows === undefined )
+	{
+		$.fn.dataTable.Api( oSettings ).rows().invalidate();
+	}
+
+	/*
+	 * Update DataTables' event handlers
+	 */
+
+	/* Sort listener */
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		$(oSettings.aoColumns[i].nTh).off('.DT');
+		this.oApi._fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );
+	}
+
+
+	/* Fire an event so other plug-ins can update */
+	$(oSettings.oInstance).trigger( 'column-reorder.dt', [ oSettings, {
+		from: iFrom,
+		to: iTo,
+		mapping: aiInvertMapping,
+		drop: drop,
+
+		// Old style parameters for compatibility
+		iFrom: iFrom,
+		iTo: iTo,
+		aiInvertMapping: aiInvertMapping
+	} ] );
+};
+
+/**
+ * ColReorder provides column visibility control for DataTables
+ * @class ColReorder
+ * @constructor
+ * @param {object} dt DataTables settings object
+ * @param {object} opts ColReorder options
+ */
+var ColReorder = function( dt, opts )
+{
+	var settings = new $.fn.dataTable.Api( dt ).settings()[0];
+
+	// Ensure that we can't initialise on the same table twice
+	if ( settings._colReorder ) {
+		return settings._colReorder;
+	}
+
+	// Allow the options to be a boolean for defaults
+	if ( opts === true ) {
+		opts = {};
+	}
+
+	// Convert from camelCase to Hungarian, just as DataTables does
+	var camelToHungarian = $.fn.dataTable.camelToHungarian;
+	if ( camelToHungarian ) {
+		camelToHungarian( ColReorder.defaults, ColReorder.defaults, true );
+		camelToHungarian( ColReorder.defaults, opts || {} );
+	}
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public class variables
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * @namespace Settings object which contains customisable information for ColReorder instance
+	 */
+	this.s = {
+		/**
+		 * DataTables settings object
+		 *  @property dt
+		 *  @type     Object
+		 *  @default  null
+		 */
+		"dt": null,
+
+		/**
+		 * Enable flag
+		 *  @property dt
+		 *  @type     Object
+		 *  @default  null
+		 */
+		"enable": null,
+
+		/**
+		 * Initialisation object used for this instance
+		 *  @property init
+		 *  @type     object
+		 *  @default  {}
+		 */
+		"init": $.extend( true, {}, ColReorder.defaults, opts ),
+
+		/**
+		 * Number of columns to fix (not allow to be reordered)
+		 *  @property fixed
+		 *  @type     int
+		 *  @default  0
+		 */
+		"fixed": 0,
+
+		/**
+		 * Number of columns to fix counting from right (not allow to be reordered)
+		 *  @property fixedRight
+		 *  @type     int
+		 *  @default  0
+		 */
+		"fixedRight": 0,
+
+		/**
+		 * Callback function for once the reorder has been done
+		 *  @property reorderCallback
+		 *  @type     function
+		 *  @default  null
+		 */
+		"reorderCallback": null,
+
+		/**
+		 * @namespace Information used for the mouse drag
+		 */
+		"mouse": {
+			"startX": -1,
+			"startY": -1,
+			"offsetX": -1,
+			"offsetY": -1,
+			"target": -1,
+			"targetIndex": -1,
+			"fromIndex": -1
+		},
+
+		/**
+		 * Information which is used for positioning the insert cusor and knowing where to do the
+		 * insert. Array of objects with the properties:
+		 *   x: x-axis position
+		 *   to: insert point
+		 *  @property aoTargets
+		 *  @type     array
+		 *  @default  []
+		 */
+		"aoTargets": []
+	};
+
+
+	/**
+	 * @namespace Common and useful DOM elements for the class instance
+	 */
+	this.dom = {
+		/**
+		 * Dragging element (the one the mouse is moving)
+		 *  @property drag
+		 *  @type     element
+		 *  @default  null
+		 */
+		"drag": null,
+
+		/**
+		 * The insert cursor
+		 *  @property pointer
+		 *  @type     element
+		 *  @default  null
+		 */
+		"pointer": null
+	};
+
+	/* Constructor logic */
+	this.s.enable = this.s.init.bEnable;
+	this.s.dt = settings;
+	this.s.dt._colReorder = this;
+	this._fnConstruct();
+
+	return this;
+};
+
+
+
+$.extend( ColReorder.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Enable / disable end user interaction
+	 */
+	fnEnable: function ( flag )
+	{
+		if ( flag === false ) {
+			return fnDisable();
+		}
+
+		this.s.enable = true;
+	},
+
+	/**
+	 * Disable end user interaction
+	 */
+	fnDisable: function ()
+	{
+		this.s.enable = false;
+	},
+
+	/**
+	 * Reset the column ordering to the original ordering that was detected on
+	 * start up.
+	 *  @return {this} Returns `this` for chaining.
+	 *
+	 *  @example
+	 *    // DataTables initialisation with ColReorder
+	 *    var table = $('#example').dataTable( {
+	 *        "sDom": 'Rlfrtip'
+	 *    } );
+	 *
+	 *    // Add click event to a button to reset the ordering
+	 *    $('#resetOrdering').click( function (e) {
+	 *        e.preventDefault();
+	 *        $.fn.dataTable.ColReorder( table ).fnReset();
+	 *    } );
+	 */
+	"fnReset": function ()
+	{
+		this._fnOrderColumns( this.fnOrder() );
+
+		return this;
+	},
+
+	/**
+	 * `Deprecated` - Get the current order of the columns, as an array.
+	 *  @return {array} Array of column identifiers
+	 *  @deprecated `fnOrder` should be used in preference to this method.
+	 *      `fnOrder` acts as a getter/setter.
+	 */
+	"fnGetCurrentOrder": function ()
+	{
+		return this.fnOrder();
+	},
+
+	/**
+	 * Get the current order of the columns, as an array. Note that the values
+	 * given in the array are unique identifiers for each column. Currently
+	 * these are the original ordering of the columns that was detected on
+	 * start up, but this could potentially change in future.
+	 *  @return {array} Array of column identifiers
+	 *
+	 *  @example
+	 *    // Get column ordering for the table
+	 *    var order = $.fn.dataTable.ColReorder( dataTable ).fnOrder();
+	 *//**
+	 * Set the order of the columns, from the positions identified in the
+	 * ordering array given. Note that ColReorder takes a brute force approach
+	 * to reordering, so it is possible multiple reordering events will occur
+	 * before the final order is settled upon.
+	 *  @param {array} [set] Array of column identifiers in the new order. Note
+	 *    that every column must be included, uniquely, in this array.
+	 *  @return {this} Returns `this` for chaining.
+	 *
+	 *  @example
+	 *    // Swap the first and second columns
+	 *    $.fn.dataTable.ColReorder( dataTable ).fnOrder( [1, 0, 2, 3, 4] );
+	 *
+	 *  @example
+	 *    // Move the first column to the end for the table `#example`
+	 *    var curr = $.fn.dataTable.ColReorder( '#example' ).fnOrder();
+	 *    var first = curr.shift();
+	 *    curr.push( first );
+	 *    $.fn.dataTable.ColReorder( '#example' ).fnOrder( curr );
+	 *
+	 *  @example
+	 *    // Reverse the table's order
+	 *    $.fn.dataTable.ColReorder( '#example' ).fnOrder(
+	 *      $.fn.dataTable.ColReorder( '#example' ).fnOrder().reverse()
+	 *    );
+	 */
+	"fnOrder": function ( set, original )
+	{
+		var a = [], i, ien, j, jen;
+		var columns = this.s.dt.aoColumns;
+
+		if ( set === undefined ){
+			for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+				a.push( columns[i]._ColReorder_iOrigCol );
+			}
+
+			return a;
+		}
+
+		// The order given is based on the original indexes, rather than the
+		// existing ones, so we need to translate from the original to current
+		// before then doing the order
+		if ( original ) {
+			var order = this.fnOrder();
+
+			for ( i=0, ien=set.length ; i<ien ; i++ ) {
+				a.push( $.inArray( set[i], order ) );
+			}
+
+			set = a;
+		}
+
+		this._fnOrderColumns( fnInvertKeyValues( set ) );
+
+		return this;
+	},
+
+
+	/**
+	 * Convert from the original column index, to the original
+	 *
+	 * @param  {int|array} idx Index(es) to convert
+	 * @param  {string} dir Transpose direction - `fromOriginal` / `toCurrent`
+	 *   or `'toOriginal` / `fromCurrent`
+	 * @return {int|array}     Converted values
+	 */
+	fnTranspose: function ( idx, dir )
+	{
+		if ( ! dir ) {
+			dir = 'toCurrent';
+		}
+
+		var order = this.fnOrder();
+		var columns = this.s.dt.aoColumns;
+
+		if ( dir === 'toCurrent' ) {
+			// Given an original index, want the current
+			return ! $.isArray( idx ) ?
+				$.inArray( idx, order ) :
+				$.map( idx, function ( index ) {
+					return $.inArray( index, order );
+				} );
+		}
+		else {
+			// Given a current index, want the original
+			return ! $.isArray( idx ) ?
+				columns[idx]._ColReorder_iOrigCol :
+				$.map( idx, function ( index ) {
+					return columns[index]._ColReorder_iOrigCol;
+				} );
+		}
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods (they are of course public in JS, but recommended as private)
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Constructor logic
+	 *  @method  _fnConstruct
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnConstruct": function ()
+	{
+		var that = this;
+		var iLen = this.s.dt.aoColumns.length;
+		var table = this.s.dt.nTable;
+		var i;
+
+		/* Columns discounted from reordering - counting left to right */
+		if ( this.s.init.iFixedColumns )
+		{
+			this.s.fixed = this.s.init.iFixedColumns;
+		}
+
+		if ( this.s.init.iFixedColumnsLeft )
+		{
+			this.s.fixed = this.s.init.iFixedColumnsLeft;
+		}
+
+		/* Columns discounted from reordering - counting right to left */
+		this.s.fixedRight = this.s.init.iFixedColumnsRight ?
+			this.s.init.iFixedColumnsRight :
+			0;
+
+		/* Drop callback initialisation option */
+		if ( this.s.init.fnReorderCallback )
+		{
+			this.s.reorderCallback = this.s.init.fnReorderCallback;
+		}
+
+		/* Add event handlers for the drag and drop, and also mark the original column order */
+		for ( i = 0; i < iLen; i++ )
+		{
+			if ( i > this.s.fixed-1 && i < iLen - this.s.fixedRight )
+			{
+				this._fnMouseListener( i, this.s.dt.aoColumns[i].nTh );
+			}
+
+			/* Mark the original column order for later reference */
+			this.s.dt.aoColumns[i]._ColReorder_iOrigCol = i;
+		}
+
+		/* State saving */
+		this.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) {
+			that._fnStateSave.call( that, oData );
+		}, "ColReorder_State" );
+
+		/* An initial column order has been specified */
+		var aiOrder = null;
+		if ( this.s.init.aiOrder )
+		{
+			aiOrder = this.s.init.aiOrder.slice();
+		}
+
+		/* State loading, overrides the column order given */
+		if ( this.s.dt.oLoadedState && typeof this.s.dt.oLoadedState.ColReorder != 'undefined' &&
+		  this.s.dt.oLoadedState.ColReorder.length == this.s.dt.aoColumns.length )
+		{
+			aiOrder = this.s.dt.oLoadedState.ColReorder;
+		}
+
+		/* If we have an order to apply - do so */
+		if ( aiOrder )
+		{
+			/* We might be called during or after the DataTables initialisation. If before, then we need
+			 * to wait until the draw is done, if after, then do what we need to do right away
+			 */
+			if ( !that.s.dt._bInitComplete )
+			{
+				var bDone = false;
+				$(table).on( 'draw.dt.colReorder', function () {
+					if ( !that.s.dt._bInitComplete && !bDone )
+					{
+						bDone = true;
+						var resort = fnInvertKeyValues( aiOrder );
+						that._fnOrderColumns.call( that, resort );
+					}
+				} );
+			}
+			else
+			{
+				var resort = fnInvertKeyValues( aiOrder );
+				that._fnOrderColumns.call( that, resort );
+			}
+		}
+		else {
+			this._fnSetColumnIndexes();
+		}
+
+		// Destroy clean up
+		$(table).on( 'destroy.dt.colReorder', function () {
+			$(table).off( 'destroy.dt.colReorder draw.dt.colReorder' );
+
+			$.each( that.s.dt.aoColumns, function (i, column) {
+				$(column.nTh).off('.ColReorder');
+				$(column.nTh).removeAttr('data-column-index');
+			} );
+
+			that.s.dt._colReorder = null;
+			that.s = null;
+		} );
+	},
+
+
+	/**
+	 * Set the column order from an array
+	 *  @method  _fnOrderColumns
+	 *  @param   array a An array of integers which dictate the column order that should be applied
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnOrderColumns": function ( a )
+	{
+		var changed = false;
+
+		if ( a.length != this.s.dt.aoColumns.length )
+		{
+			this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "ColReorder - array reorder does not "+
+				"match known number of columns. Skipping." );
+			return;
+		}
+
+		for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+		{
+			var currIndex = $.inArray( i, a );
+			if ( i != currIndex )
+			{
+				/* Reorder our switching array */
+				fnArraySwitch( a, currIndex, i );
+
+				/* Do the column reorder in the table */
+				this.s.dt.oInstance.fnColReorder( currIndex, i, true, false );
+
+				changed = true;
+			}
+		}
+
+		this._fnSetColumnIndexes();
+
+		// Has anything actually changed? If not, then nothing else to do
+		if ( ! changed ) {
+			return;
+		}
+
+		$.fn.dataTable.Api( this.s.dt ).rows().invalidate();
+
+		/* When scrolling we need to recalculate the column sizes to allow for the shift */
+		if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
+		{
+			this.s.dt.oInstance.fnAdjustColumnSizing( false );
+		}
+
+		/* Save the state */
+		this.s.dt.oInstance.oApi._fnSaveState( this.s.dt );
+
+		if ( this.s.reorderCallback !== null )
+		{
+			this.s.reorderCallback.call( this );
+		}
+	},
+
+
+	/**
+	 * Because we change the indexes of columns in the table, relative to their starting point
+	 * we need to reorder the state columns to what they are at the starting point so we can
+	 * then rearrange them again on state load!
+	 *  @method  _fnStateSave
+	 *  @param   object oState DataTables state
+	 *  @returns string JSON encoded cookie string for DataTables
+	 *  @private
+	 */
+	"_fnStateSave": function ( oState )
+	{
+		var i, iLen, aCopy, iOrigColumn;
+		var oSettings = this.s.dt;
+		var columns = oSettings.aoColumns;
+
+		oState.ColReorder = [];
+
+		/* Sorting */
+		if ( oState.aaSorting ) {
+			// 1.10.0-
+			for ( i=0 ; i<oState.aaSorting.length ; i++ ) {
+				oState.aaSorting[i][0] = columns[ oState.aaSorting[i][0] ]._ColReorder_iOrigCol;
+			}
+
+			var aSearchCopy = $.extend( true, [], oState.aoSearchCols );
+
+			for ( i=0, iLen=columns.length ; i<iLen ; i++ )
+			{
+				iOrigColumn = columns[i]._ColReorder_iOrigCol;
+
+				/* Column filter */
+				oState.aoSearchCols[ iOrigColumn ] = aSearchCopy[i];
+
+				/* Visibility */
+				oState.abVisCols[ iOrigColumn ] = columns[i].bVisible;
+
+				/* Column reordering */
+				oState.ColReorder.push( iOrigColumn );
+			}
+		}
+		else if ( oState.order ) {
+			// 1.10.1+
+			for ( i=0 ; i<oState.order.length ; i++ ) {
+				oState.order[i][0] = columns[ oState.order[i][0] ]._ColReorder_iOrigCol;
+			}
+
+			var stateColumnsCopy = $.extend( true, [], oState.columns );
+
+			for ( i=0, iLen=columns.length ; i<iLen ; i++ )
+			{
+				iOrigColumn = columns[i]._ColReorder_iOrigCol;
+
+				/* Columns */
+				oState.columns[ iOrigColumn ] = stateColumnsCopy[i];
+
+				/* Column reordering */
+				oState.ColReorder.push( iOrigColumn );
+			}
+		}
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Mouse drop and drag
+	 */
+
+	/**
+	 * Add a mouse down listener to a particluar TH element
+	 *  @method  _fnMouseListener
+	 *  @param   int i Column index
+	 *  @param   element nTh TH element clicked on
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseListener": function ( i, nTh )
+	{
+		var that = this;
+		$(nTh)
+			.on( 'mousedown.ColReorder', function (e) {
+				if ( that.s.enable && e.which === 1 ) {
+					that._fnMouseDown.call( that, e, nTh );
+				}
+			} )
+			.on( 'touchstart.ColReorder', function (e) {
+				if ( that.s.enable ) {
+					that._fnMouseDown.call( that, e, nTh );
+				}
+			} );
+	},
+
+
+	/**
+	 * Mouse down on a TH element in the table header
+	 *  @method  _fnMouseDown
+	 *  @param   event e Mouse event
+	 *  @param   element nTh TH element to be dragged
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseDown": function ( e, nTh )
+	{
+		var that = this;
+
+		/* Store information about the mouse position */
+		var target = $(e.target).closest('th, td');
+		var offset = target.offset();
+		var idx = parseInt( $(nTh).attr('data-column-index'), 10 );
+
+		if ( idx === undefined ) {
+			return;
+		}
+
+		this.s.mouse.startX = this._fnCursorPosition( e, 'pageX' );
+		this.s.mouse.startY = this._fnCursorPosition( e, 'pageY' );
+		this.s.mouse.offsetX = this._fnCursorPosition( e, 'pageX' ) - offset.left;
+		this.s.mouse.offsetY = this._fnCursorPosition( e, 'pageY' ) - offset.top;
+		this.s.mouse.target = this.s.dt.aoColumns[ idx ].nTh;//target[0];
+		this.s.mouse.targetIndex = idx;
+		this.s.mouse.fromIndex = idx;
+
+		this._fnRegions();
+
+		/* Add event handlers to the document */
+		$(document)
+			.on( 'mousemove.ColReorder touchmove.ColReorder', function (e) {
+				that._fnMouseMove.call( that, e );
+			} )
+			.on( 'mouseup.ColReorder touchend.ColReorder', function (e) {
+				that._fnMouseUp.call( that, e );
+			} );
+	},
+
+
+	/**
+	 * Deal with a mouse move event while dragging a node
+	 *  @method  _fnMouseMove
+	 *  @param   event e Mouse event
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseMove": function ( e )
+	{
+		var that = this;
+
+		if ( this.dom.drag === null )
+		{
+			/* Only create the drag element if the mouse has moved a specific distance from the start
+			 * point - this allows the user to make small mouse movements when sorting and not have a
+			 * possibly confusing drag element showing up
+			 */
+			if ( Math.pow(
+				Math.pow(this._fnCursorPosition( e, 'pageX') - this.s.mouse.startX, 2) +
+				Math.pow(this._fnCursorPosition( e, 'pageY') - this.s.mouse.startY, 2), 0.5 ) < 5 )
+			{
+				return;
+			}
+			this._fnCreateDragNode();
+		}
+
+		/* Position the element - we respect where in the element the click occured */
+		this.dom.drag.css( {
+			left: this._fnCursorPosition( e, 'pageX' ) - this.s.mouse.offsetX,
+			top: this._fnCursorPosition( e, 'pageY' ) - this.s.mouse.offsetY
+		} );
+
+		/* Based on the current mouse position, calculate where the insert should go */
+		var target;
+		var lastToIndex = this.s.mouse.toIndex;
+		var cursorXPosiotion = this._fnCursorPosition(e, 'pageX');
+		var targetsPrev = function (i) {
+			while (i >= 0) {
+				i--;
+
+				if (i <= 0) {
+					return null;
+				}
+
+				if (that.s.aoTargets[i+1].x !== that.s.aoTargets[i].x) {
+					return that.s.aoTargets[i];
+				}
+			}
+		};
+		var firstNotHidden = function () {
+			for (var i=0 ; i<that.s.aoTargets.length-1 ; i++) {
+				if (that.s.aoTargets[i].x !== that.s.aoTargets[i+1].x) {
+					return that.s.aoTargets[i];
+				}
+			}
+		};
+		var lastNotHidden = function () {
+			for (var i=that.s.aoTargets.length-1 ; i>0 ; i--) {
+				if (that.s.aoTargets[i].x !== that.s.aoTargets[i-1].x) {
+					return that.s.aoTargets[i];
+				}
+			}
+		};
+
+        for (var i = 1; i < this.s.aoTargets.length; i++) {
+			var prevTarget = targetsPrev(i);
+			if (! prevTarget) {
+				prevTarget = firstNotHidden();
+			}
+
+			var prevTargetMiddle = prevTarget.x + (this.s.aoTargets[i].x - prevTarget.x) / 2;
+
+            if (this._fnIsLtr()) {
+                if (cursorXPosiotion < prevTargetMiddle ) {
+                    target = prevTarget;
+                    break;
+                }
+            }
+            else {
+                if (cursorXPosiotion > prevTargetMiddle) {
+                    target = prevTarget;
+                    break;
+                }
+            }
+		}
+
+        if (target) {
+            this.dom.pointer.css('left', target.x);
+            this.s.mouse.toIndex = target.to;
+        }
+        else {
+			// The insert element wasn't positioned in the array (less than
+			// operator), so we put it at the end
+			this.dom.pointer.css( 'left', lastNotHidden().x );
+			this.s.mouse.toIndex = lastNotHidden().to;
+		}
+
+		// Perform reordering if realtime updating is on and the column has moved
+		if ( this.s.init.bRealtime && lastToIndex !== this.s.mouse.toIndex ) {
+			this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );
+			this.s.mouse.fromIndex = this.s.mouse.toIndex;
+
+			// Not great for performance, but required to keep everything in alignment
+			if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
+			{
+				this.s.dt.oInstance.fnAdjustColumnSizing( false );
+			}
+
+			this._fnRegions();
+		}
+	},
+
+
+	/**
+	 * Finish off the mouse drag and insert the column where needed
+	 *  @method  _fnMouseUp
+	 *  @param   event e Mouse event
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseUp": function ( e )
+	{
+		var that = this;
+
+		$(document).off( '.ColReorder' );
+
+		if ( this.dom.drag !== null )
+		{
+			/* Remove the guide elements */
+			this.dom.drag.remove();
+			this.dom.pointer.remove();
+			this.dom.drag = null;
+			this.dom.pointer = null;
+
+			/* Actually do the reorder */
+			this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex, true );
+			this._fnSetColumnIndexes();
+
+			/* When scrolling we need to recalculate the column sizes to allow for the shift */
+			if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
+			{
+				this.s.dt.oInstance.fnAdjustColumnSizing( false );
+			}
+
+			/* Save the state */
+			this.s.dt.oInstance.oApi._fnSaveState( this.s.dt );
+
+			if ( this.s.reorderCallback !== null )
+			{
+				this.s.reorderCallback.call( this );
+			}
+		}
+	},
+
+
+	/**
+	 * Calculate a cached array with the points of the column inserts, and the
+	 * 'to' points
+	 *  @method  _fnRegions
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnRegions": function ()
+	{
+		var aoColumns = this.s.dt.aoColumns;
+        var isLTR = this._fnIsLtr();
+		this.s.aoTargets.splice(0, this.s.aoTargets.length);
+		var lastBound = $(this.s.dt.nTable).offset().left;
+
+        var aoColumnBounds = [];
+        $.each(aoColumns, function (i, column) {
+            if (column.bVisible && column.nTh.style.display !== 'none') {
+                var nth = $(column.nTh);
+				var bound = nth.offset().left;
+
+                if (isLTR) {
+                    bound += nth.outerWidth();
+                }
+
+                aoColumnBounds.push({
+                    index: i,
+                    bound: bound
+				});
+
+				lastBound = bound;
+			}
+			else {
+                aoColumnBounds.push({
+					index: i,
+					bound: lastBound
+                });
+			}
+		});
+
+        var firstColumn = aoColumnBounds[0];
+		var firstColumnWidth = $(aoColumns[firstColumn.index].nTh).outerWidth();
+
+        this.s.aoTargets.push({
+            to: 0,
+			x: firstColumn.bound - firstColumnWidth
+        });
+
+        for (var i = 0; i < aoColumnBounds.length; i++) {
+            var columnBound = aoColumnBounds[i];
+            var iToPoint = columnBound.index;
+
+            /* For the column / header in question, we want it's position to remain the same if the
+            * position is just to it's immediate left or right, so we only increment the counter for
+            * other columns
+            */
+            if (columnBound.index < this.s.mouse.fromIndex) {
+                iToPoint++;
+            }
+
+            this.s.aoTargets.push({
+				to: iToPoint,
+                x: columnBound.bound
+            });
+        }
+
+		/* Disallow columns for being reordered by drag and drop, counting right to left */
+		if ( this.s.fixedRight !== 0 )
+		{
+			this.s.aoTargets.splice( this.s.aoTargets.length - this.s.fixedRight );
+		}
+
+		/* Disallow columns for being reordered by drag and drop, counting left to right */
+		if ( this.s.fixed !== 0 )
+		{
+			this.s.aoTargets.splice( 0, this.s.fixed );
+		}
+	},
+
+
+	/**
+	 * Copy the TH element that is being drags so the user has the idea that they are actually
+	 * moving it around the page.
+	 *  @method  _fnCreateDragNode
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnCreateDragNode": function ()
+	{
+		var scrolling = this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "";
+
+		var origCell = this.s.dt.aoColumns[ this.s.mouse.targetIndex ].nTh;
+		var origTr = origCell.parentNode;
+		var origThead = origTr.parentNode;
+		var origTable = origThead.parentNode;
+		var cloneCell = $(origCell).clone();
+
+		// This is a slightly odd combination of jQuery and DOM, but it is the
+		// fastest and least resource intensive way I could think of cloning
+		// the table with just a single header cell in it.
+		this.dom.drag = $(origTable.cloneNode(false))
+			.addClass( 'DTCR_clonedTable' )
+			.append(
+				$(origThead.cloneNode(false)).append(
+					$(origTr.cloneNode(false)).append(
+						cloneCell[0]
+					)
+				)
+			)
+			.css( {
+				position: 'absolute',
+				top: 0,
+				left: 0,
+				width: $(origCell).outerWidth(),
+				height: $(origCell).outerHeight()
+			} )
+			.appendTo( 'body' );
+
+		this.dom.pointer = $('<div></div>')
+			.addClass( 'DTCR_pointer' )
+			.css( {
+				position: 'absolute',
+				top: scrolling ?
+					$('div.dataTables_scroll', this.s.dt.nTableWrapper).offset().top :
+					$(this.s.dt.nTable).offset().top,
+				height : scrolling ?
+					$('div.dataTables_scroll', this.s.dt.nTableWrapper).height() :
+					$(this.s.dt.nTable).height()
+			} )
+			.appendTo( 'body' );
+	},
+
+
+	/**
+	 * Add a data attribute to the column headers, so we know the index of
+	 * the row to be reordered. This allows fast detection of the index, and
+	 * for this plug-in to work with FixedHeader which clones the nodes.
+	 *  @private
+	 */
+	"_fnSetColumnIndexes": function ()
+	{
+		$.each( this.s.dt.aoColumns, function (i, column) {
+			$(column.nTh).attr('data-column-index', i);
+		} );
+	},
+
+
+	/**
+	 * Get cursor position regardless of mouse or touch input
+	 * @param  {Event}  e    jQuery Event
+	 * @param  {string} prop Property to get
+	 * @return {number}      Value
+	 */
+	_fnCursorPosition: function ( e, prop ) {
+		if ( e.type.indexOf('touch') !== -1 ) {
+			return e.originalEvent.touches[0][ prop ];
+		}
+		return e[ prop ];
+    },
+
+    _fnIsLtr: function () {
+        return $(this.s.dt.nTable).css('direction') !== "rtl";
+    }
+} );
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Static parameters
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * ColReorder default settings for initialisation
+ *  @namespace
+ *  @static
+ */
+ColReorder.defaults = {
+	/**
+	 * Predefined ordering for the columns that will be applied automatically
+	 * on initialisation. If not specified then the order that the columns are
+	 * found to be in the HTML is the order used.
+	 *  @type array
+	 *  @default null
+	 *  @static
+	 */
+	aiOrder: null,
+
+	/**
+	 * ColReorder enable on initialisation
+	 *  @type boolean
+	 *  @default true
+	 *  @static
+	 */
+	bEnable: true,
+
+	/**
+	 * Redraw the table's column ordering as the end user draws the column
+	 * (`true`) or wait until the mouse is released (`false` - default). Note
+	 * that this will perform a redraw on each reordering, which involves an
+	 * Ajax request each time if you are using server-side processing in
+	 * DataTables.
+	 *  @type boolean
+	 *  @default false
+	 *  @static
+	 */
+	bRealtime: true,
+
+	/**
+	 * Indicate how many columns should be fixed in position (counting from the
+	 * left). This will typically be 1 if used, but can be as high as you like.
+	 *  @type int
+	 *  @default 0
+	 *  @static
+	 */
+	iFixedColumnsLeft: 0,
+
+	/**
+	 * As `iFixedColumnsRight` but counting from the right.
+	 *  @type int
+	 *  @default 0
+	 *  @static
+	 */
+	iFixedColumnsRight: 0,
+
+	/**
+	 * Callback function that is fired when columns are reordered. The `column-
+	 * reorder` event is preferred over this callback
+	 *  @type function():void
+	 *  @default null
+	 *  @static
+	 */
+	fnReorderCallback: null
+};
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * ColReorder version
+ *  @constant  version
+ *  @type      String
+ *  @default   As code
+ */
+ColReorder.version = "1.5.2";
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables interfaces
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+// Expose
+$.fn.dataTable.ColReorder = ColReorder;
+$.fn.DataTable.ColReorder = ColReorder;
+
+
+// Register a new feature with DataTables
+if ( typeof $.fn.dataTable == "function" &&
+     typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+     $.fn.dataTableExt.fnVersionCheck('1.10.8') )
+{
+	$.fn.dataTableExt.aoFeatures.push( {
+		"fnInit": function( settings ) {
+			var table = settings.oInstance;
+
+			if ( ! settings._colReorder ) {
+				var dtInit = settings.oInit;
+				var opts = dtInit.colReorder || dtInit.oColReorder || {};
+
+				new ColReorder( settings, opts );
+			}
+			else {
+				table.oApi._fnLog( settings, 1, "ColReorder attempted to initialise twice. Ignoring second" );
+			}
+
+			return null; /* No node for DataTables to insert */
+		},
+		"cFeature": "R",
+		"sFeature": "ColReorder"
+	} );
+}
+else {
+	alert( "Warning: ColReorder requires DataTables 1.10.8 or greater - www.datatables.net/download");
+}
+
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.colReorder', function (e, settings) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.colReorder;
+	var defaults = DataTable.defaults.colReorder;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, init, defaults );
+
+		if ( init !== false ) {
+			new ColReorder( settings, opts  );
+		}
+	}
+} );
+
+
+// API augmentation
+$.fn.dataTable.Api.register( 'colReorder.reset()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._colReorder.fnReset();
+	} );
+} );
+
+$.fn.dataTable.Api.register( 'colReorder.order()', function ( set, original ) {
+	if ( set ) {
+		return this.iterator( 'table', function ( ctx ) {
+			ctx._colReorder.fnOrder( set, original );
+		} );
+	}
+
+	return this.context.length ?
+		this.context[0]._colReorder.fnOrder() :
+		null;
+} );
+
+$.fn.dataTable.Api.register( 'colReorder.transpose()', function ( idx, dir ) {
+	return this.context.length && this.context[0]._colReorder ?
+		this.context[0]._colReorder.fnTranspose( idx, dir ) :
+		idx;
+} );
+
+$.fn.dataTable.Api.register( 'colReorder.move()', function( from, to, drop, invalidateRows ) {
+	if (this.context.length) {
+		this.context[0]._colReorder.s.dt.oInstance.fnColReorder( from, to, drop, invalidateRows );
+		this.context[0]._colReorder._fnSetColumnIndexes();
+	}
+	return this;
+} );
+
+$.fn.dataTable.Api.register( 'colReorder.enable()', function( flag ) {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._colReorder ) {
+			ctx._colReorder.fnEnable( flag );
+		}
+	} );
+} );
+
+$.fn.dataTable.Api.register( 'colReorder.disable()', function() {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._colReorder ) {
+			ctx._colReorder.fnDisable();
+		}
+	} );
+} );
+
+
+return ColReorder;
+}));
+
+
+/*! FixedColumns 3.3.0
+ * ©2010-2018 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     FixedColumns
+ * @description Freeze columns in place on a scrolling DataTable
+ * @version     3.3.0
+ * @file        dataTables.fixedColumns.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2018 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+var _firefoxScroll;
+
+/**
+ * When making use of DataTables' x-axis scrolling feature, you may wish to
+ * fix the left most column in place. This plug-in for DataTables provides
+ * exactly this option (note for non-scrolling tables, please use the
+ * FixedHeader plug-in, which can fix headers and footers). Key
+ * features include:
+ *
+ * * Freezes the left or right most columns to the side of the table
+ * * Option to freeze two or more columns
+ * * Full integration with DataTables' scrolling options
+ * * Speed - FixedColumns is fast in its operation
+ *
+ *  @class
+ *  @constructor
+ *  @global
+ *  @param {object} dt DataTables instance. With DataTables 1.10 this can also
+ *    be a jQuery collection, a jQuery selector, DataTables API instance or
+ *    settings object.
+ *  @param {object} [init={}] Configuration object for FixedColumns. Options are
+ *    defined by {@link FixedColumns.defaults}
+ *
+ *  @requires jQuery 1.7+
+ *  @requires DataTables 1.8.0+
+ *
+ *  @example
+ *      var table = $('#example').dataTable( {
+ *        "scrollX": "100%"
+ *      } );
+ *      new $.fn.dataTable.fixedColumns( table );
+ */
+var FixedColumns = function ( dt, init ) {
+	var that = this;
+
+	/* Sanity check - you just know it will happen */
+	if ( ! ( this instanceof FixedColumns ) ) {
+		alert( "FixedColumns warning: FixedColumns must be initialised with the 'new' keyword." );
+		return;
+	}
+
+	if ( init === undefined || init === true ) {
+		init = {};
+	}
+
+	// Use the DataTables Hungarian notation mapping method, if it exists to
+	// provide forwards compatibility for camel case variables
+	var camelToHungarian = $.fn.dataTable.camelToHungarian;
+	if ( camelToHungarian ) {
+		camelToHungarian( FixedColumns.defaults, FixedColumns.defaults, true );
+		camelToHungarian( FixedColumns.defaults, init );
+	}
+
+	// v1.10 allows the settings object to be got form a number of sources
+	var dtSettings = new $.fn.dataTable.Api( dt ).settings()[0];
+
+	/**
+	 * Settings object which contains customisable information for FixedColumns instance
+	 * @namespace
+	 * @extends FixedColumns.defaults
+	 * @private
+	 */
+	this.s = {
+		/**
+		 * DataTables settings objects
+		 *  @type     object
+		 *  @default  Obtained from DataTables instance
+		 */
+		"dt": dtSettings,
+
+		/**
+		 * Number of columns in the DataTable - stored for quick access
+		 *  @type     int
+		 *  @default  Obtained from DataTables instance
+		 */
+		"iTableColumns": dtSettings.aoColumns.length,
+
+		/**
+		 * Original outer widths of the columns as rendered by DataTables - used to calculate
+		 * the FixedColumns grid bounding box
+		 *  @type     array.<int>
+		 *  @default  []
+		 */
+		"aiOuterWidths": [],
+
+		/**
+		 * Original inner widths of the columns as rendered by DataTables - used to apply widths
+		 * to the columns
+		 *  @type     array.<int>
+		 *  @default  []
+		 */
+		"aiInnerWidths": [],
+
+
+		/**
+		 * Is the document layout right-to-left
+		 * @type boolean
+		 */
+		rtl: $(dtSettings.nTable).css('direction') === 'rtl'
+	};
+
+
+	/**
+	 * DOM elements used by the class instance
+	 * @namespace
+	 * @private
+	 *
+	 */
+	this.dom = {
+		/**
+		 * DataTables scrolling element
+		 *  @type     node
+		 *  @default  null
+		 */
+		"scroller": null,
+
+		/**
+		 * DataTables header table
+		 *  @type     node
+		 *  @default  null
+		 */
+		"header": null,
+
+		/**
+		 * DataTables body table
+		 *  @type     node
+		 *  @default  null
+		 */
+		"body": null,
+
+		/**
+		 * DataTables footer table
+		 *  @type     node
+		 *  @default  null
+		 */
+		"footer": null,
+
+		/**
+		 * Display grid elements
+		 * @namespace
+		 */
+		"grid": {
+			/**
+			 * Grid wrapper. This is the container element for the 3x3 grid
+			 *  @type     node
+			 *  @default  null
+			 */
+			"wrapper": null,
+
+			/**
+			 * DataTables scrolling element. This element is the DataTables
+			 * component in the display grid (making up the main table - i.e.
+			 * not the fixed columns).
+			 *  @type     node
+			 *  @default  null
+			 */
+			"dt": null,
+
+			/**
+			 * Left fixed column grid components
+			 * @namespace
+			 */
+			"left": {
+				"wrapper": null,
+				"head": null,
+				"body": null,
+				"foot": null
+			},
+
+			/**
+			 * Right fixed column grid components
+			 * @namespace
+			 */
+			"right": {
+				"wrapper": null,
+				"head": null,
+				"body": null,
+				"foot": null
+			}
+		},
+
+		/**
+		 * Cloned table nodes
+		 * @namespace
+		 */
+		"clone": {
+			/**
+			 * Left column cloned table nodes
+			 * @namespace
+			 */
+			"left": {
+				/**
+				 * Cloned header table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"header": null,
+
+				/**
+				 * Cloned body table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"body": null,
+
+				/**
+				 * Cloned footer table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"footer": null
+			},
+
+			/**
+			 * Right column cloned table nodes
+			 * @namespace
+			 */
+			"right": {
+				/**
+				 * Cloned header table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"header": null,
+
+				/**
+				 * Cloned body table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"body": null,
+
+				/**
+				 * Cloned footer table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"footer": null
+			}
+		}
+	};
+
+	if ( dtSettings._oFixedColumns ) {
+		throw 'FixedColumns already initialised on this table';
+	}
+
+	/* Attach the instance to the DataTables instance so it can be accessed easily */
+	dtSettings._oFixedColumns = this;
+
+	/* Let's do it */
+	if ( ! dtSettings._bInitComplete )
+	{
+		dtSettings.oApi._fnCallbackReg( dtSettings, 'aoInitComplete', function () {
+			that._fnConstruct( init );
+		}, 'FixedColumns' );
+	}
+	else
+	{
+		this._fnConstruct( init );
+	}
+};
+
+
+
+$.extend( FixedColumns.prototype , {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Update the fixed columns - including headers and footers. Note that FixedColumns will
+	 * automatically update the display whenever the host DataTable redraws.
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // at some later point when the table has been manipulated....
+	 *      fc.fnUpdate();
+	 */
+	"fnUpdate": function ()
+	{
+		this._fnDraw( true );
+	},
+
+
+	/**
+	 * Recalculate the resizes of the 3x3 grid that FixedColumns uses for display of the table.
+	 * This is useful if you update the width of the table container. Note that FixedColumns will
+	 * perform this function automatically when the window.resize event is fired.
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // Resize the table container and then have FixedColumns adjust its layout....
+	 *      $('#content').width( 1200 );
+	 *      fc.fnRedrawLayout();
+	 */
+	"fnRedrawLayout": function ()
+	{
+		this._fnColCalc();
+		this._fnGridLayout();
+		this.fnUpdate();
+	},
+
+
+	/**
+	 * Mark a row such that it's height should be recalculated when using 'semiauto' row
+	 * height matching. This function will have no effect when 'none' or 'auto' row height
+	 * matching is used.
+	 *  @param   {Node} nTr TR element that should have it's height recalculated
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // manipulate the table - mark the row as needing an update then update the table
+	 *      // this allows the redraw performed by DataTables fnUpdate to recalculate the row
+	 *      // height
+	 *      fc.fnRecalculateHeight();
+	 *      table.fnUpdate( $('#example tbody tr:eq(0)')[0], ["insert date", 1, 2, 3 ... ]);
+	 */
+	"fnRecalculateHeight": function ( nTr )
+	{
+		delete nTr._DTTC_iHeight;
+		nTr.style.height = 'auto';
+	},
+
+
+	/**
+	 * Set the height of a given row - provides cross browser compatibility
+	 *  @param   {Node} nTarget TR element that should have it's height recalculated
+	 *  @param   {int} iHeight Height in pixels to set
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // You may want to do this after manipulating a row in the fixed column
+	 *      fc.fnSetRowHeight( $('#example tbody tr:eq(0)')[0], 50 );
+	 */
+	"fnSetRowHeight": function ( nTarget, iHeight )
+	{
+		nTarget.style.height = iHeight+"px";
+	},
+
+
+	/**
+	 * Get data index information about a row or cell in the table body.
+	 * This function is functionally identical to fnGetPosition in DataTables,
+	 * taking the same parameter (TH, TD or TR node) and returning exactly the
+	 * the same information (data index information). THe difference between
+	 * the two is that this method takes into account the fixed columns in the
+	 * table, so you can pass in nodes from the master table, or the cloned
+	 * tables and get the index position for the data in the main table.
+	 *  @param {node} node TR, TH or TD element to get the information about
+	 *  @returns {int} If nNode is given as a TR, then a single index is 
+	 *    returned, or if given as a cell, an array of [row index, column index
+	 *    (visible), column index (all)] is given.
+	 */
+	"fnGetPosition": function ( node )
+	{
+		var idx;
+		var inst = this.s.dt.oInstance;
+
+		if ( ! $(node).parents('.DTFC_Cloned').length )
+		{
+			// Not in a cloned table
+			return inst.fnGetPosition( node );
+		}
+		else
+		{
+			// Its in the cloned table, so need to look up position
+			if ( node.nodeName.toLowerCase() === 'tr' ) {
+				idx = $(node).index();
+				return inst.fnGetPosition( $('tr', this.s.dt.nTBody)[ idx ] );
+			}
+			else
+			{
+				var colIdx = $(node).index();
+				idx = $(node.parentNode).index();
+				var row = inst.fnGetPosition( $('tr', this.s.dt.nTBody)[ idx ] );
+
+				return [
+					row,
+					colIdx,
+					inst.oApi._fnVisibleToColumnIndex( this.s.dt, colIdx )
+				];
+			}
+		}
+	},
+
+	fnToFixedNode: function ( rowIdx, colIdx )
+	{
+		var found;
+
+		if ( colIdx < this.s.iLeftColumns ) {
+			found = $(this.dom.clone.left.body).find('[data-dt-row='+rowIdx+'][data-dt-column='+colIdx+']');
+		}
+		else if ( colIdx >= this.s.iRightColumns ) {
+			found = $(this.dom.clone.right.body).find('[data-dt-row='+rowIdx+'][data-dt-column='+colIdx+']');
+		}
+
+		if ( found && found.length ) {
+			return found[0];
+		}
+
+		// Fallback - non-fixed node
+		var table = new $.fn.dataTable.Api(this.s.dt);
+		return table.cell(rowIdx, colIdx).node();
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods (they are of course public in JS, but recommended as private)
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Initialisation for FixedColumns
+	 *  @param   {Object} oInit User settings for initialisation
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnConstruct": function ( oInit )
+	{
+		var i, iLen, iWidth,
+			that = this;
+
+		/* Sanity checking */
+		if ( typeof this.s.dt.oInstance.fnVersionCheck != 'function' ||
+		     this.s.dt.oInstance.fnVersionCheck( '1.8.0' ) !== true )
+		{
+			alert( "FixedColumns "+FixedColumns.VERSION+" required DataTables 1.8.0 or later. "+
+				"Please upgrade your DataTables installation" );
+			return;
+		}
+
+		if ( this.s.dt.oScroll.sX === "" )
+		{
+			this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "FixedColumns is not needed (no "+
+				"x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for "+
+				"column fixing when scrolling is not enabled" );
+			return;
+		}
+
+		/* Apply the settings from the user / defaults */
+		this.s = $.extend( true, this.s, FixedColumns.defaults, oInit );
+
+		/* Set up the DOM as we need it and cache nodes */
+		var classes = this.s.dt.oClasses;
+		this.dom.grid.dt = $(this.s.dt.nTable).parents('div.'+classes.sScrollWrapper)[0];
+		this.dom.scroller = $('div.'+classes.sScrollBody, this.dom.grid.dt )[0];
+
+		/* Set up the DOM that we want for the fixed column layout grid */
+		this._fnColCalc();
+		this._fnGridSetup();
+
+		/* Event handlers */
+		var mouseController;
+		var mouseDown = false;
+
+		// When the mouse is down (drag scroll) the mouse controller cannot
+		// change, as the browser keeps the original element as the scrolling one
+		$(this.s.dt.nTableWrapper).on( 'mousedown.DTFC', function (e) {
+			if ( e.button === 0 ) {
+				mouseDown = true;
+
+				$(document).one( 'mouseup', function () {
+					mouseDown = false;
+				} );
+			}
+		} );
+
+		// When the body is scrolled - scroll the left and right columns
+		$(this.dom.scroller)
+			.on( 'mouseover.DTFC touchstart.DTFC', function () {
+				if ( ! mouseDown ) {
+					mouseController = 'main';
+				}
+			} )
+			.on( 'scroll.DTFC', function (e) {
+				if ( ! mouseController && e.originalEvent ) {
+					mouseController = 'main';
+				}
+
+				if ( mouseController === 'main' ) {
+					if ( that.s.iLeftColumns > 0 ) {
+						that.dom.grid.left.liner.scrollTop = that.dom.scroller.scrollTop;
+					}
+					if ( that.s.iRightColumns > 0 ) {
+						that.dom.grid.right.liner.scrollTop = that.dom.scroller.scrollTop;
+					}
+				}
+			} );
+
+		var wheelType = 'onwheel' in document.createElement('div') ?
+			'wheel.DTFC' :
+			'mousewheel.DTFC';
+
+		if ( that.s.iLeftColumns > 0 ) {
+			// When scrolling the left column, scroll the body and right column
+			$(that.dom.grid.left.liner)
+				.on( 'mouseover.DTFC touchstart.DTFC', function () {
+					if ( ! mouseDown ) {
+						mouseController = 'left';
+					}
+				} )
+				.on( 'scroll.DTFC', function ( e ) {
+					if ( ! mouseController && e.originalEvent ) {
+						mouseController = 'left';
+					}
+
+					if ( mouseController === 'left' ) {
+						that.dom.scroller.scrollTop = that.dom.grid.left.liner.scrollTop;
+						if ( that.s.iRightColumns > 0 ) {
+							that.dom.grid.right.liner.scrollTop = that.dom.grid.left.liner.scrollTop;
+						}
+					}
+				} )
+				.on( wheelType, function(e) {
+					// Pass horizontal scrolling through
+					var xDelta = e.type === 'wheel' ?
+						-e.originalEvent.deltaX :
+						e.originalEvent.wheelDeltaX;
+					that.dom.scroller.scrollLeft -= xDelta;
+				} );
+		}
+
+		if ( that.s.iRightColumns > 0 ) {
+			// When scrolling the right column, scroll the body and the left column
+			$(that.dom.grid.right.liner)
+				.on( 'mouseover.DTFC touchstart.DTFC', function () {
+					if ( ! mouseDown ) {
+						mouseController = 'right';
+					}
+				} )
+				.on( 'scroll.DTFC', function ( e ) {
+					if ( ! mouseController && e.originalEvent ) {
+						mouseController = 'right';
+					}
+
+					if ( mouseController === 'right' ) {
+						that.dom.scroller.scrollTop = that.dom.grid.right.liner.scrollTop;
+						if ( that.s.iLeftColumns > 0 ) {
+							that.dom.grid.left.liner.scrollTop = that.dom.grid.right.liner.scrollTop;
+						}
+					}
+				} )
+				.on( wheelType, function(e) {
+					// Pass horizontal scrolling through
+					var xDelta = e.type === 'wheel' ?
+						-e.originalEvent.deltaX :
+						e.originalEvent.wheelDeltaX;
+					that.dom.scroller.scrollLeft -= xDelta;
+				} );
+		}
+
+		$(window).on( 'resize.DTFC', function () {
+			that._fnGridLayout.call( that );
+		} );
+
+		var bFirstDraw = true;
+		var jqTable = $(this.s.dt.nTable);
+
+		jqTable
+			.on( 'draw.dt.DTFC', function () {
+				that._fnColCalc();
+				that._fnDraw.call( that, bFirstDraw );
+				bFirstDraw = false;
+			} )
+			.on( 'column-sizing.dt.DTFC', function () {
+				that._fnColCalc();
+				that._fnGridLayout( that );
+			} )
+			.on( 'column-visibility.dt.DTFC', function ( e, settings, column, vis, recalc ) {
+				if ( recalc === undefined || recalc ) {
+					that._fnColCalc();
+					that._fnGridLayout( that );
+					that._fnDraw( true );
+				}
+			} )
+			.on( 'select.dt.DTFC deselect.dt.DTFC', function ( e, dt, type, indexes ) {
+				if ( e.namespace === 'dt' ) {
+					that._fnDraw( false );
+				}
+			} )
+			.on( 'destroy.dt.DTFC', function () {
+				jqTable.off( '.DTFC' );
+
+				$(that.dom.scroller).off( '.DTFC' );
+				$(window).off( '.DTFC' );
+				$(that.s.dt.nTableWrapper).off( '.DTFC' );
+
+				$(that.dom.grid.left.liner).off( '.DTFC '+wheelType );
+				$(that.dom.grid.left.wrapper).remove();
+
+				$(that.dom.grid.right.liner).off( '.DTFC '+wheelType );
+				$(that.dom.grid.right.wrapper).remove();
+			} );
+
+		/* Get things right to start with - note that due to adjusting the columns, there must be
+		 * another redraw of the main table. It doesn't need to be a full redraw however.
+		 */
+		this._fnGridLayout();
+		this.s.dt.oInstance.fnDraw(false);
+	},
+
+
+	/**
+	 * Calculate the column widths for the grid layout
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnColCalc": function ()
+	{
+		var that = this;
+		var iLeftWidth = 0;
+		var iRightWidth = 0;
+
+		this.s.aiInnerWidths = [];
+		this.s.aiOuterWidths = [];
+
+		$.each( this.s.dt.aoColumns, function (i, col) {
+			var th = $(col.nTh);
+			var border;
+
+			if ( ! th.filter(':visible').length ) {
+				that.s.aiInnerWidths.push( 0 );
+				that.s.aiOuterWidths.push( 0 );
+			}
+			else
+			{
+				// Inner width is used to assign widths to cells
+				// Outer width is used to calculate the container
+				var iWidth = th.outerWidth();
+
+				// When working with the left most-cell, need to add on the
+				// table's border to the outerWidth, since we need to take
+				// account of it, but it isn't in any cell
+				if ( that.s.aiOuterWidths.length === 0 ) {
+					border = $(that.s.dt.nTable).css('border-left-width');
+					iWidth += typeof border === 'string' && border.indexOf('px') === -1 ?
+						1 :
+						parseInt( border, 10 );
+				}
+
+				// Likewise with the final column on the right
+				if ( that.s.aiOuterWidths.length === that.s.dt.aoColumns.length-1 ) {
+					border = $(that.s.dt.nTable).css('border-right-width');
+					iWidth += typeof border === 'string' && border.indexOf('px') === -1 ?
+						1 :
+						parseInt( border, 10 );
+				}
+
+				that.s.aiOuterWidths.push( iWidth );
+				that.s.aiInnerWidths.push( th.width() );
+
+				if ( i < that.s.iLeftColumns )
+				{
+					iLeftWidth += iWidth;
+				}
+
+				if ( that.s.iTableColumns-that.s.iRightColumns <= i )
+				{
+					iRightWidth += iWidth;
+				}
+			}
+		} );
+
+		this.s.iLeftWidth = iLeftWidth;
+		this.s.iRightWidth = iRightWidth;
+	},
+
+
+	/**
+	 * Set up the DOM for the fixed column. The way the layout works is to create a 1x3 grid
+	 * for the left column, the DataTable (for which we just reuse the scrolling element DataTable
+	 * puts into the DOM) and the right column. In each of he two fixed column elements there is a
+	 * grouping wrapper element and then a head, body and footer wrapper. In each of these we then
+	 * place the cloned header, body or footer tables. This effectively gives as 3x3 grid structure.
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnGridSetup": function ()
+	{
+		var that = this;
+		var oOverflow = this._fnDTOverflow();
+		var block;
+
+		this.dom.body = this.s.dt.nTable;
+		this.dom.header = this.s.dt.nTHead.parentNode;
+		this.dom.header.parentNode.parentNode.style.position = "relative";
+
+		var nSWrapper =
+			$('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;">'+
+				'<div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;" aria-hidden="true">'+
+					'<div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div>'+
+					'<div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; height:0; overflow:hidden;">'+
+						'<div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div>'+
+					'</div>'+
+					'<div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div>'+
+				'</div>'+
+				'<div class="DTFC_RightWrapper" style="position:absolute; top:0; right:0;" aria-hidden="true">'+
+					'<div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;">'+
+						'<div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div>'+
+					'</div>'+
+					'<div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; height:0; overflow:hidden;">'+
+						'<div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div>'+
+					'</div>'+
+					'<div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;">'+
+						'<div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div>'+
+					'</div>'+
+				'</div>'+
+			'</div>')[0];
+		var nLeft = nSWrapper.childNodes[0];
+		var nRight = nSWrapper.childNodes[1];
+
+		this.dom.grid.dt.parentNode.insertBefore( nSWrapper, this.dom.grid.dt );
+		nSWrapper.appendChild( this.dom.grid.dt );
+
+		this.dom.grid.wrapper = nSWrapper;
+
+		if ( this.s.iLeftColumns > 0 )
+		{
+			this.dom.grid.left.wrapper = nLeft;
+			this.dom.grid.left.head = nLeft.childNodes[0];
+			this.dom.grid.left.body = nLeft.childNodes[1];
+			this.dom.grid.left.liner = $('div.DTFC_LeftBodyLiner', nSWrapper)[0];
+
+			nSWrapper.appendChild( nLeft );
+		}
+
+		if ( this.s.iRightColumns > 0 )
+		{
+			this.dom.grid.right.wrapper = nRight;
+			this.dom.grid.right.head = nRight.childNodes[0];
+			this.dom.grid.right.body = nRight.childNodes[1];
+			this.dom.grid.right.liner = $('div.DTFC_RightBodyLiner', nSWrapper)[0];
+
+			nRight.style.right = oOverflow.bar+"px";
+
+			block = $('div.DTFC_RightHeadBlocker', nSWrapper)[0];
+			block.style.width = oOverflow.bar+"px";
+			block.style.right = -oOverflow.bar+"px";
+			this.dom.grid.right.headBlock = block;
+
+			block = $('div.DTFC_RightFootBlocker', nSWrapper)[0];
+			block.style.width = oOverflow.bar+"px";
+			block.style.right = -oOverflow.bar+"px";
+			this.dom.grid.right.footBlock = block;
+
+			nSWrapper.appendChild( nRight );
+		}
+
+		if ( this.s.dt.nTFoot )
+		{
+			this.dom.footer = this.s.dt.nTFoot.parentNode;
+			if ( this.s.iLeftColumns > 0 )
+			{
+				this.dom.grid.left.foot = nLeft.childNodes[2];
+			}
+			if ( this.s.iRightColumns > 0 )
+			{
+				this.dom.grid.right.foot = nRight.childNodes[2];
+			}
+		}
+
+		// RTL support - swap the position of the left and right columns (#48)
+		if ( this.s.rtl ) {
+			$('div.DTFC_RightHeadBlocker', nSWrapper).css( {
+				left: -oOverflow.bar+'px',
+				right: ''
+			} );
+		}
+	},
+
+
+	/**
+	 * Style and position the grid used for the FixedColumns layout
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnGridLayout": function ()
+	{
+		var that = this;
+		var oGrid = this.dom.grid;
+		var iWidth = $(oGrid.wrapper).width();
+		var iBodyHeight = this.s.dt.nTable.parentNode.offsetHeight;
+		var iFullHeight = this.s.dt.nTable.parentNode.parentNode.offsetHeight;
+		var oOverflow = this._fnDTOverflow();
+		var iLeftWidth = this.s.iLeftWidth;
+		var iRightWidth = this.s.iRightWidth;
+		var rtl = $(this.dom.body).css('direction') === 'rtl';
+		var wrapper;
+		var scrollbarAdjust = function ( node, width ) {
+			if ( ! oOverflow.bar ) {
+				// If there is no scrollbar (Macs) we need to hide the auto scrollbar
+				node.style.width = (width+20)+"px";
+				node.style.paddingRight = "20px";
+				node.style.boxSizing = "border-box";
+			}
+			else if ( that._firefoxScrollError() ) {
+				// See the above function for why this is required
+				if ( $(node).height() > 34 ) {
+					node.style.width = (width+oOverflow.bar)+"px";
+				}
+			}
+			else {
+				// Otherwise just overflow by the scrollbar
+				node.style.width = (width+oOverflow.bar)+"px";
+			}
+		};
+
+		// When x scrolling - don't paint the fixed columns over the x scrollbar
+		if ( oOverflow.x )
+		{
+			iBodyHeight -= oOverflow.bar;
+		}
+
+		oGrid.wrapper.style.height = iFullHeight+"px";
+
+		if ( this.s.iLeftColumns > 0 )
+		{
+			wrapper = oGrid.left.wrapper;
+			wrapper.style.width = iLeftWidth+'px';
+			wrapper.style.height = '1px';
+
+			// Swap the position of the left and right columns for rtl (#48)
+			// This is always up against the edge, scrollbar on the far side
+			if ( rtl ) {
+				wrapper.style.left = '';
+				wrapper.style.right = 0;
+			}
+			else {
+				wrapper.style.left = 0;
+				wrapper.style.right = '';
+			}
+
+			oGrid.left.body.style.height = iBodyHeight+"px";
+			if ( oGrid.left.foot ) {
+				oGrid.left.foot.style.top = (oOverflow.x ? oOverflow.bar : 0)+"px"; // shift footer for scrollbar
+			}
+
+			scrollbarAdjust( oGrid.left.liner, iLeftWidth );
+			oGrid.left.liner.style.height = iBodyHeight+"px";
+			oGrid.left.liner.style.maxHeight = iBodyHeight+"px";
+		}
+
+		if ( this.s.iRightColumns > 0 )
+		{
+			wrapper = oGrid.right.wrapper;
+			wrapper.style.width = iRightWidth+'px';
+			wrapper.style.height = '1px';
+
+			// Need to take account of the vertical scrollbar
+			if ( this.s.rtl ) {
+				wrapper.style.left = oOverflow.y ? oOverflow.bar+'px' : 0;
+				wrapper.style.right = '';
+			}
+			else {
+				wrapper.style.left = '';
+				wrapper.style.right = oOverflow.y ? oOverflow.bar+'px' : 0;
+			}
+
+			oGrid.right.body.style.height = iBodyHeight+"px";
+			if ( oGrid.right.foot ) {
+				oGrid.right.foot.style.top = (oOverflow.x ? oOverflow.bar : 0)+"px";
+			}
+
+			scrollbarAdjust( oGrid.right.liner, iRightWidth );
+			oGrid.right.liner.style.height = iBodyHeight+"px";
+			oGrid.right.liner.style.maxHeight = iBodyHeight+"px";
+
+			oGrid.right.headBlock.style.display = oOverflow.y ? 'block' : 'none';
+			oGrid.right.footBlock.style.display = oOverflow.y ? 'block' : 'none';
+		}
+	},
+
+
+	/**
+	 * Get information about the DataTable's scrolling state - specifically if the table is scrolling
+	 * on either the x or y axis, and also the scrollbar width.
+	 *  @returns {object} Information about the DataTables scrolling state with the properties:
+	 *    'x', 'y' and 'bar'
+	 *  @private
+	 */
+	"_fnDTOverflow": function ()
+	{
+		var nTable = this.s.dt.nTable;
+		var nTableScrollBody = nTable.parentNode;
+		var out = {
+			"x": false,
+			"y": false,
+			"bar": this.s.dt.oScroll.iBarWidth
+		};
+
+		if ( nTable.offsetWidth > nTableScrollBody.clientWidth )
+		{
+			out.x = true;
+		}
+
+		if ( nTable.offsetHeight > nTableScrollBody.clientHeight )
+		{
+			out.y = true;
+		}
+
+		return out;
+	},
+
+
+	/**
+	 * Clone and position the fixed columns
+	 *  @returns {void}
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnDraw": function ( bAll )
+	{
+		this._fnGridLayout();
+		this._fnCloneLeft( bAll );
+		this._fnCloneRight( bAll );
+
+		/* Draw callback function */
+		if ( this.s.fnDrawCallback !== null )
+		{
+			this.s.fnDrawCallback.call( this, this.dom.clone.left, this.dom.clone.right );
+		}
+
+		/* Event triggering */
+		$(this).trigger( 'draw.dtfc', {
+			"leftClone": this.dom.clone.left,
+			"rightClone": this.dom.clone.right
+		} );
+	},
+
+
+	/**
+	 * Clone the right columns
+	 *  @returns {void}
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnCloneRight": function ( bAll )
+	{
+		if ( this.s.iRightColumns <= 0 ) {
+			return;
+		}
+
+		var that = this,
+			i, jq,
+			aiColumns = [];
+
+		for ( i=this.s.iTableColumns-this.s.iRightColumns ; i<this.s.iTableColumns ; i++ ) {
+			if ( this.s.dt.aoColumns[i].bVisible ) {
+				aiColumns.push( i );
+			}
+		}
+
+		this._fnClone( this.dom.clone.right, this.dom.grid.right, aiColumns, bAll );
+	},
+
+
+	/**
+	 * Clone the left columns
+	 *  @returns {void}
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnCloneLeft": function ( bAll )
+	{
+		if ( this.s.iLeftColumns <= 0 ) {
+			return;
+		}
+
+		var that = this,
+			i, jq,
+			aiColumns = [];
+
+		for ( i=0 ; i<this.s.iLeftColumns ; i++ ) {
+			if ( this.s.dt.aoColumns[i].bVisible ) {
+				aiColumns.push( i );
+			}
+		}
+
+		this._fnClone( this.dom.clone.left, this.dom.grid.left, aiColumns, bAll );
+	},
+
+
+	/**
+	 * Make a copy of the layout object for a header or footer element from DataTables. Note that
+	 * this method will clone the nodes in the layout object.
+	 *  @returns {Array} Copy of the layout array
+	 *  @param   {Object} aoOriginal Layout array from DataTables (aoHeader or aoFooter)
+	 *  @param   {Object} aiColumns Columns to copy
+	 *  @param   {boolean} events Copy cell events or not
+	 *  @private
+	 */
+	"_fnCopyLayout": function ( aoOriginal, aiColumns, events )
+	{
+		var aReturn = [];
+		var aClones = [];
+		var aCloned = [];
+
+		for ( var i=0, iLen=aoOriginal.length ; i<iLen ; i++ )
+		{
+			var aRow = [];
+			aRow.nTr = $(aoOriginal[i].nTr).clone(events, false)[0];
+
+			for ( var j=0, jLen=this.s.iTableColumns ; j<jLen ; j++ )
+			{
+				if ( $.inArray( j, aiColumns ) === -1 )
+				{
+					continue;
+				}
+
+				var iCloned = $.inArray( aoOriginal[i][j].cell, aCloned );
+				if ( iCloned === -1 )
+				{
+					var nClone = $(aoOriginal[i][j].cell).clone(events, false)[0];
+					aClones.push( nClone );
+					aCloned.push( aoOriginal[i][j].cell );
+
+					aRow.push( {
+						"cell": nClone,
+						"unique": aoOriginal[i][j].unique
+					} );
+				}
+				else
+				{
+					aRow.push( {
+						"cell": aClones[ iCloned ],
+						"unique": aoOriginal[i][j].unique
+					} );
+				}
+			}
+
+			aReturn.push( aRow );
+		}
+
+		return aReturn;
+	},
+
+
+	/**
+	 * Clone the DataTable nodes and place them in the DOM (sized correctly)
+	 *  @returns {void}
+	 *  @param   {Object} oClone Object containing the header, footer and body cloned DOM elements
+	 *  @param   {Object} oGrid Grid object containing the display grid elements for the cloned
+	 *                    column (left or right)
+	 *  @param   {Array} aiColumns Column indexes which should be operated on from the DataTable
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnClone": function ( oClone, oGrid, aiColumns, bAll )
+	{
+		var that = this,
+			i, iLen, j, jLen, jq, nTarget, iColumn, nClone, iIndex, aoCloneLayout,
+			jqCloneThead, aoFixedHeader,
+			dt = this.s.dt;
+
+		/*
+		 * Header
+		 */
+		if ( bAll )
+		{
+			$(oClone.header).remove();
+
+			oClone.header = $(this.dom.header).clone(true, false)[0];
+			oClone.header.className += " DTFC_Cloned";
+			oClone.header.style.width = "100%";
+			oGrid.head.appendChild( oClone.header );
+
+			/* Copy the DataTables layout cache for the header for our floating column */
+			aoCloneLayout = this._fnCopyLayout( dt.aoHeader, aiColumns, true );
+			jqCloneThead = $('>thead', oClone.header);
+			jqCloneThead.empty();
+
+			/* Add the created cloned TR elements to the table */
+			for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+			{
+				jqCloneThead[0].appendChild( aoCloneLayout[i].nTr );
+			}
+
+			/* Use the handy _fnDrawHead function in DataTables to do the rowspan/colspan
+			 * calculations for us
+			 */
+			dt.oApi._fnDrawHead( dt, aoCloneLayout, true );
+		}
+		else
+		{
+			/* To ensure that we copy cell classes exactly, regardless of colspan, multiple rows
+			 * etc, we make a copy of the header from the DataTable again, but don't insert the
+			 * cloned cells, just copy the classes across. To get the matching layout for the
+			 * fixed component, we use the DataTables _fnDetectHeader method, allowing 1:1 mapping
+			 */
+			aoCloneLayout = this._fnCopyLayout( dt.aoHeader, aiColumns, false );
+			aoFixedHeader=[];
+
+			dt.oApi._fnDetectHeader( aoFixedHeader, $('>thead', oClone.header)[0] );
+
+			for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+			{
+				for ( j=0, jLen=aoCloneLayout[i].length ; j<jLen ; j++ )
+				{
+					aoFixedHeader[i][j].cell.className = aoCloneLayout[i][j].cell.className;
+
+					// If jQuery UI theming is used we need to copy those elements as well
+					$('span.DataTables_sort_icon', aoFixedHeader[i][j].cell).each( function () {
+						this.className = $('span.DataTables_sort_icon', aoCloneLayout[i][j].cell)[0].className;
+					} );
+				}
+			}
+		}
+		this._fnEqualiseHeights( 'thead', this.dom.header, oClone.header );
+
+		/*
+		 * Body
+		 */
+		if ( this.s.sHeightMatch == 'auto' )
+		{
+			/* Remove any heights which have been applied already and let the browser figure it out */
+			$('>tbody>tr', that.dom.body).css('height', 'auto');
+		}
+
+		if ( oClone.body !== null )
+		{
+			$(oClone.body).remove();
+			oClone.body = null;
+		}
+
+		oClone.body = $(this.dom.body).clone(true)[0];
+		oClone.body.className += " DTFC_Cloned";
+		oClone.body.style.paddingBottom = dt.oScroll.iBarWidth+"px";
+		oClone.body.style.marginBottom = (dt.oScroll.iBarWidth*2)+"px"; /* For IE */
+		if ( oClone.body.getAttribute('id') !== null )
+		{
+			oClone.body.removeAttribute('id');
+		}
+
+		$('>thead>tr', oClone.body).empty();
+		$('>tfoot', oClone.body).remove();
+
+		var nBody = $('tbody', oClone.body)[0];
+		$(nBody).empty();
+		if ( dt.aiDisplay.length > 0 )
+		{
+			/* Copy the DataTables' header elements to force the column width in exactly the
+			 * same way that DataTables does it - have the header element, apply the width and
+			 * colapse it down
+			 */
+			var nInnerThead = $('>thead>tr', oClone.body)[0];
+			for ( iIndex=0 ; iIndex<aiColumns.length ; iIndex++ )
+			{
+				iColumn = aiColumns[iIndex];
+
+				nClone = $(dt.aoColumns[iColumn].nTh).clone(true)[0];
+				nClone.innerHTML = "";
+
+				var oStyle = nClone.style;
+				oStyle.paddingTop = "0";
+				oStyle.paddingBottom = "0";
+				oStyle.borderTopWidth = "0";
+				oStyle.borderBottomWidth = "0";
+				oStyle.height = 0;
+				oStyle.width = that.s.aiInnerWidths[iColumn]+"px";
+
+				nInnerThead.appendChild( nClone );
+			}
+
+			/* Add in the tbody elements, cloning form the master table */
+			$('>tbody>tr', that.dom.body).each( function (z) {
+				var i = that.s.dt.oFeatures.bServerSide===false ?
+					that.s.dt.aiDisplay[ that.s.dt._iDisplayStart+z ] : z;
+				var aTds = that.s.dt.aoData[ i ].anCells || $(this).children('td, th');
+
+				var n = this.cloneNode(false);
+				n.removeAttribute('id');
+				n.setAttribute( 'data-dt-row', i );
+
+				for ( iIndex=0 ; iIndex<aiColumns.length ; iIndex++ )
+				{
+					iColumn = aiColumns[iIndex];
+
+					if ( aTds.length > 0 )
+					{
+						nClone = $( aTds[iColumn] ).clone(true, true)[0];
+						nClone.removeAttribute( 'id' );
+						nClone.setAttribute( 'data-dt-row', i );
+						nClone.setAttribute( 'data-dt-column', iColumn );
+						n.appendChild( nClone );
+					}
+				}
+				nBody.appendChild( n );
+			} );
+		}
+		else
+		{
+			$('>tbody>tr', that.dom.body).each( function (z) {
+				nClone = this.cloneNode(true);
+				nClone.className += ' DTFC_NoData';
+				$('td', nClone).html('');
+				nBody.appendChild( nClone );
+			} );
+		}
+
+		oClone.body.style.width = "100%";
+		oClone.body.style.margin = "0";
+		oClone.body.style.padding = "0";
+
+		// Interop with Scroller - need to use a height forcing element in the
+		// scrolling area in the same way that Scroller does in the body scroll.
+		if ( dt.oScroller !== undefined )
+		{
+			var scrollerForcer = dt.oScroller.dom.force;
+
+			if ( ! oGrid.forcer ) {
+				oGrid.forcer = scrollerForcer.cloneNode( true );
+				oGrid.liner.appendChild( oGrid.forcer );
+			}
+			else {
+				oGrid.forcer.style.height = scrollerForcer.style.height;
+			}
+		}
+
+		oGrid.liner.appendChild( oClone.body );
+
+		this._fnEqualiseHeights( 'tbody', that.dom.body, oClone.body );
+
+		/*
+		 * Footer
+		 */
+		if ( dt.nTFoot !== null )
+		{
+			if ( bAll )
+			{
+				if ( oClone.footer !== null )
+				{
+					oClone.footer.parentNode.removeChild( oClone.footer );
+				}
+				oClone.footer = $(this.dom.footer).clone(true, true)[0];
+				oClone.footer.className += " DTFC_Cloned";
+				oClone.footer.style.width = "100%";
+				oGrid.foot.appendChild( oClone.footer );
+
+				/* Copy the footer just like we do for the header */
+				aoCloneLayout = this._fnCopyLayout( dt.aoFooter, aiColumns, true );
+				var jqCloneTfoot = $('>tfoot', oClone.footer);
+				jqCloneTfoot.empty();
+
+				for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+				{
+					jqCloneTfoot[0].appendChild( aoCloneLayout[i].nTr );
+				}
+				dt.oApi._fnDrawHead( dt, aoCloneLayout, true );
+			}
+			else
+			{
+				aoCloneLayout = this._fnCopyLayout( dt.aoFooter, aiColumns, false );
+				var aoCurrFooter=[];
+
+				dt.oApi._fnDetectHeader( aoCurrFooter, $('>tfoot', oClone.footer)[0] );
+
+				for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+				{
+					for ( j=0, jLen=aoCloneLayout[i].length ; j<jLen ; j++ )
+					{
+						aoCurrFooter[i][j].cell.className = aoCloneLayout[i][j].cell.className;
+					}
+				}
+			}
+			this._fnEqualiseHeights( 'tfoot', this.dom.footer, oClone.footer );
+		}
+
+		/* Equalise the column widths between the header footer and body - body get's priority */
+		var anUnique = dt.oApi._fnGetUniqueThs( dt, $('>thead', oClone.header)[0] );
+		$(anUnique).each( function (i) {
+			iColumn = aiColumns[i];
+			this.style.width = that.s.aiInnerWidths[iColumn]+"px";
+		} );
+
+		if ( that.s.dt.nTFoot !== null )
+		{
+			anUnique = dt.oApi._fnGetUniqueThs( dt, $('>tfoot', oClone.footer)[0] );
+			$(anUnique).each( function (i) {
+				iColumn = aiColumns[i];
+				this.style.width = that.s.aiInnerWidths[iColumn]+"px";
+			} );
+		}
+	},
+
+
+	/**
+	 * From a given table node (THEAD etc), get a list of TR direct child elements
+	 *  @param   {Node} nIn Table element to search for TR elements (THEAD, TBODY or TFOOT element)
+	 *  @returns {Array} List of TR elements found
+	 *  @private
+	 */
+	"_fnGetTrNodes": function ( nIn )
+	{
+		var aOut = [];
+		for ( var i=0, iLen=nIn.childNodes.length ; i<iLen ; i++ )
+		{
+			if ( nIn.childNodes[i].nodeName.toUpperCase() == "TR" )
+			{
+				aOut.push( nIn.childNodes[i] );
+			}
+		}
+		return aOut;
+	},
+
+
+	/**
+	 * Equalise the heights of the rows in a given table node in a cross browser way
+	 *  @returns {void}
+	 *  @param   {String} nodeName Node type - thead, tbody or tfoot
+	 *  @param   {Node} original Original node to take the heights from
+	 *  @param   {Node} clone Copy the heights to
+	 *  @private
+	 */
+	"_fnEqualiseHeights": function ( nodeName, original, clone )
+	{
+		if ( this.s.sHeightMatch == 'none' && nodeName !== 'thead' && nodeName !== 'tfoot' )
+		{
+			return;
+		}
+
+		var that = this,
+			i, iLen, iHeight, iHeight2, iHeightOriginal, iHeightClone,
+			rootOriginal = original.getElementsByTagName(nodeName)[0],
+			rootClone    = clone.getElementsByTagName(nodeName)[0],
+			jqBoxHack    = $('>'+nodeName+'>tr:eq(0)', original).children(':first'),
+			iBoxHack     = jqBoxHack.outerHeight() - jqBoxHack.height(),
+			anOriginal   = this._fnGetTrNodes( rootOriginal ),
+			anClone      = this._fnGetTrNodes( rootClone ),
+			heights      = [];
+
+		for ( i=0, iLen=anClone.length ; i<iLen ; i++ )
+		{
+			iHeightOriginal = anOriginal[i].offsetHeight;
+			iHeightClone = anClone[i].offsetHeight;
+			iHeight = iHeightClone > iHeightOriginal ? iHeightClone : iHeightOriginal;
+
+			if ( this.s.sHeightMatch == 'semiauto' )
+			{
+				anOriginal[i]._DTTC_iHeight = iHeight;
+			}
+
+			heights.push( iHeight );
+		}
+
+		for ( i=0, iLen=anClone.length ; i<iLen ; i++ )
+		{
+			anClone[i].style.height = heights[i]+"px";
+			anOriginal[i].style.height = heights[i]+"px";
+		}
+	},
+
+	/**
+	 * Determine if the UA suffers from Firefox's overflow:scroll scrollbars
+	 * not being shown bug.
+	 *
+	 * Firefox doesn't draw scrollbars, even if it is told to using
+	 * overflow:scroll, if the div is less than 34px height. See bugs 292284 and
+	 * 781885. Using UA detection here since this is particularly hard to detect
+	 * using objects - its a straight up rendering error in Firefox.
+	 *
+	 * @return {boolean} True if Firefox error is present, false otherwise
+	 */
+	_firefoxScrollError: function () {
+		if ( _firefoxScroll === undefined ) {
+			var test = $('<div/>')
+				.css( {
+					position: 'absolute',
+					top: 0,
+					left: 0,
+					height: 10,
+					width: 50,
+					overflow: 'scroll'
+				} )
+				.appendTo( 'body' );
+
+			// Make sure this doesn't apply on Macs with 0 width scrollbars
+			_firefoxScroll = (
+				test[0].clientWidth === test[0].offsetWidth && this._fnDTOverflow().bar !== 0
+			);
+
+			test.remove();
+		}
+
+		return _firefoxScroll;
+	}
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Statics
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * FixedColumns default settings for initialisation
+ *  @name FixedColumns.defaults
+ *  @namespace
+ *  @static
+ */
+FixedColumns.defaults = /** @lends FixedColumns.defaults */{
+	/**
+	 * Number of left hand columns to fix in position
+	 *  @type     int
+	 *  @default  1
+	 *  @static
+	 *  @example
+	 *      var  = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "leftColumns": 2
+	 *      } );
+	 */
+	"iLeftColumns": 1,
+
+	/**
+	 * Number of right hand columns to fix in position
+	 *  @type     int
+	 *  @default  0
+	 *  @static
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "rightColumns": 1
+	 *      } );
+	 */
+	"iRightColumns": 0,
+
+	/**
+	 * Draw callback function which is called when FixedColumns has redrawn the fixed assets
+	 *  @type     function(object, object):void
+	 *  @default  null
+	 *  @static
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "drawCallback": function () {
+	 *	            alert( "FixedColumns redraw" );
+	 *	        }
+	 *      } );
+	 */
+	"fnDrawCallback": null,
+
+	/**
+	 * Height matching algorthim to use. This can be "none" which will result in no height
+	 * matching being applied by FixedColumns (height matching could be forced by CSS in this
+	 * case), "semiauto" whereby the height calculation will be performed once, and the result
+	 * cached to be used again (fnRecalculateHeight can be used to force recalculation), or
+	 * "auto" when height matching is performed on every draw (slowest but must accurate)
+	 *  @type     string
+	 *  @default  semiauto
+	 *  @static
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "heightMatch": "auto"
+	 *      } );
+	 */
+	"sHeightMatch": "semiauto"
+};
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * FixedColumns version
+ *  @name      FixedColumns.version
+ *  @type      String
+ *  @default   See code
+ *  @static
+ */
+FixedColumns.version = "3.3.0";
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables API integration
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+DataTable.Api.register( 'fixedColumns()', function () {
+	return this;
+} );
+
+DataTable.Api.register( 'fixedColumns().update()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._oFixedColumns ) {
+			ctx._oFixedColumns.fnUpdate();
+		}
+	} );
+} );
+
+DataTable.Api.register( 'fixedColumns().relayout()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._oFixedColumns ) {
+			ctx._oFixedColumns.fnRedrawLayout();
+		}
+	} );
+} );
+
+DataTable.Api.register( 'rows().recalcHeight()', function () {
+	return this.iterator( 'row', function ( ctx, idx ) {
+		if ( ctx._oFixedColumns ) {
+			ctx._oFixedColumns.fnRecalculateHeight( this.row(idx).node() );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'fixedColumns().rowIndex()', function ( row ) {
+	row = $(row);
+
+	return row.parents('.DTFC_Cloned').length ?
+		this.rows( { page: 'current' } ).indexes()[ row.index() ] :
+		this.row( row ).index();
+} );
+
+DataTable.Api.register( 'fixedColumns().cellIndex()', function ( cell ) {
+	cell = $(cell);
+
+	if ( cell.parents('.DTFC_Cloned').length ) {
+		var rowClonedIdx = cell.parent().index();
+		var rowIdx = this.rows( { page: 'current' } ).indexes()[ rowClonedIdx ];
+		var columnIdx;
+
+		if ( cell.parents('.DTFC_LeftWrapper').length ) {
+			columnIdx = cell.index();
+		}
+		else {
+			var columns = this.columns().flatten().length;
+			columnIdx = columns - this.context[0]._oFixedColumns.s.iRightColumns + cell.index();
+		}
+
+		return {
+			row: rowIdx,
+			column: this.column.index( 'toData', columnIdx ),
+			columnVisible: columnIdx
+		};
+	}
+	else {
+		return this.cell( cell ).index();
+	}
+} );
+
+DataTable.Api.registerPlural( 'cells().fixedNodes()', 'cell().fixedNode()', function () {
+	return this.iterator( 'cell', function ( settings, row, column ) {
+		return settings._oFixedColumns
+			? settings._oFixedColumns.fnToFixedNode( row, column )
+			: this.node();
+	}, 1 );
+} );
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Initialisation
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'init.dt.fixedColumns', function (e, settings) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.fixedColumns;
+	var defaults = DataTable.defaults.fixedColumns;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, init, defaults );
+
+		if ( init !== false ) {
+			new FixedColumns( settings, opts );
+		}
+	}
+} );
+
+
+
+// Make FixedColumns accessible from the DataTables instance
+$.fn.dataTable.FixedColumns = FixedColumns;
+$.fn.DataTable.FixedColumns = FixedColumns;
+
+return FixedColumns;
+}));
+
+
+/*! FixedHeader 3.1.6
+ * ©2009-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     FixedHeader
+ * @description Fix a table's header or footer, so it is always visible while
+ *              scrolling
+ * @version     3.1.6
+ * @file        dataTables.fixedHeader.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2009-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var _instCounter = 0;
+
+var FixedHeader = function ( dt, config ) {
+	// Sanity check - you just know it will happen
+	if ( ! (this instanceof FixedHeader) ) {
+		throw "FixedHeader must be initialised with the 'new' keyword.";
+	}
+
+	// Allow a boolean true for defaults
+	if ( config === true ) {
+		config = {};
+	}
+
+	dt = new DataTable.Api( dt );
+
+	this.c = $.extend( true, {}, FixedHeader.defaults, config );
+
+	this.s = {
+		dt: dt,
+		position: {
+			theadTop: 0,
+			tbodyTop: 0,
+			tfootTop: 0,
+			tfootBottom: 0,
+			width: 0,
+			left: 0,
+			tfootHeight: 0,
+			theadHeight: 0,
+			windowHeight: $(window).height(),
+			visible: true
+		},
+		headerMode: null,
+		footerMode: null,
+		autoWidth: dt.settings()[0].oFeatures.bAutoWidth,
+		namespace: '.dtfc'+(_instCounter++),
+		scrollLeft: {
+			header: -1,
+			footer: -1
+		},
+		enable: true
+	};
+
+	this.dom = {
+		floatingHeader: null,
+		thead: $(dt.table().header()),
+		tbody: $(dt.table().body()),
+		tfoot: $(dt.table().footer()),
+		header: {
+			host: null,
+			floating: null,
+			placeholder: null
+		},
+		footer: {
+			host: null,
+			floating: null,
+			placeholder: null
+		}
+	};
+
+	this.dom.header.host = this.dom.thead.parent();
+	this.dom.footer.host = this.dom.tfoot.parent();
+
+	var dtSettings = dt.settings()[0];
+	if ( dtSettings._fixedHeader ) {
+		throw "FixedHeader already initialised on table "+dtSettings.nTable.id;
+	}
+
+	dtSettings._fixedHeader = this;
+
+	this._constructor();
+};
+
+
+/*
+ * Variable: FixedHeader
+ * Purpose:  Prototype for FixedHeader
+ * Scope:    global
+ */
+$.extend( FixedHeader.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * API methods
+	 */
+
+	/**
+	 * Kill off FH and any events
+	 */
+	destroy: function () {
+		this.s.dt.off( '.dtfc' );
+		$(window).off( this.s.namespace );
+
+		if ( this.c.header ) {
+			this._modeChange( 'in-place', 'header', true );
+		}
+
+		if ( this.c.footer && this.dom.tfoot.length ) {
+			this._modeChange( 'in-place', 'footer', true );
+		}
+	},
+
+	/**
+	 * Enable / disable the fixed elements
+	 *
+	 * @param  {boolean} enable `true` to enable, `false` to disable
+	 */
+	enable: function ( enable, update )
+	{
+		this.s.enable = enable;
+
+		if ( update || update === undefined ) {
+			this._positions();
+			this._scroll( true );
+		}
+	},
+
+	/**
+	 * Get enabled status
+	 */
+	enabled: function ()
+	{
+		return this.s.enable;
+	},
+	
+	/**
+	 * Set header offset 
+	 *
+	 * @param  {int} new value for headerOffset
+	 */
+	headerOffset: function ( offset )
+	{
+		if ( offset !== undefined ) {
+			this.c.headerOffset = offset;
+			this.update();
+		}
+
+		return this.c.headerOffset;
+	},
+	
+	/**
+	 * Set footer offset
+	 *
+	 * @param  {int} new value for footerOffset
+	 */
+	footerOffset: function ( offset )
+	{
+		if ( offset !== undefined ) {
+			this.c.footerOffset = offset;
+			this.update();
+		}
+
+		return this.c.footerOffset;
+	},
+
+	
+	/**
+	 * Recalculate the position of the fixed elements and force them into place
+	 */
+	update: function ()
+	{
+		var table = this.s.dt.table().node();
+
+		if ( $(table).is(':visible') ) {
+			this.enable( true, false );
+		}
+		else {
+			this.enable( false, false );
+		}
+
+		this._positions();
+		this._scroll( true );
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+	
+	/**
+	 * FixedHeader constructor - adding the required event listeners and
+	 * simple initialisation
+	 *
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		$(window)
+			.on( 'scroll'+this.s.namespace, function () {
+				that._scroll();
+			} )
+			.on( 'resize'+this.s.namespace, DataTable.util.throttle( function () {
+				that.s.position.windowHeight = $(window).height();
+				that.update();
+			}, 50 ) );
+
+		var autoHeader = $('.fh-fixedHeader');
+		if ( ! this.c.headerOffset && autoHeader.length ) {
+			this.c.headerOffset = autoHeader.outerHeight();
+		}
+
+		var autoFooter = $('.fh-fixedFooter');
+		if ( ! this.c.footerOffset && autoFooter.length ) {
+			this.c.footerOffset = autoFooter.outerHeight();
+		}
+
+		dt.on( 'column-reorder.dt.dtfc column-visibility.dt.dtfc draw.dt.dtfc column-sizing.dt.dtfc responsive-display.dt.dtfc', function () {
+			that.update();
+		} );
+
+		dt.on( 'destroy.dtfc', function () {
+			that.destroy();
+		} );
+
+		this._positions();
+		this._scroll();
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Clone a fixed item to act as a place holder for the original element
+	 * which is moved into a clone of the table element, and moved around the
+	 * document to give the fixed effect.
+	 *
+	 * @param  {string}  item  'header' or 'footer'
+	 * @param  {boolean} force Force the clone to happen, or allow automatic
+	 *   decision (reuse existing if available)
+	 * @private
+	 */
+	_clone: function ( item, force )
+	{
+		var dt = this.s.dt;
+		var itemDom = this.dom[ item ];
+		var itemElement = item === 'header' ?
+			this.dom.thead :
+			this.dom.tfoot;
+
+		if ( ! force && itemDom.floating ) {
+			// existing floating element - reuse it
+			itemDom.floating.removeClass( 'fixedHeader-floating fixedHeader-locked' );
+		}
+		else {
+			if ( itemDom.floating ) {
+				itemDom.placeholder.remove();
+				this._unsize( item );
+				itemDom.floating.children().detach();
+				itemDom.floating.remove();
+			}
+
+			itemDom.floating = $( dt.table().node().cloneNode( false ) )
+				.css( 'table-layout', 'fixed' )
+				.attr( 'aria-hidden', 'true' )
+				.removeAttr( 'id' )
+				.append( itemElement )
+				.appendTo( 'body' );
+
+			// Insert a fake thead/tfoot into the DataTable to stop it jumping around
+			itemDom.placeholder = itemElement.clone( false );
+			itemDom.placeholder
+				.find( '*[id]' )
+				.removeAttr( 'id' );
+
+			itemDom.host.prepend( itemDom.placeholder );
+
+			// Clone widths
+			this._matchWidths( itemDom.placeholder, itemDom.floating );
+		}
+	},
+
+	/**
+	 * Copy widths from the cells in one element to another. This is required
+	 * for the footer as the footer in the main table takes its sizes from the
+	 * header columns. That isn't present in the footer so to have it still
+	 * align correctly, the sizes need to be copied over. It is also required
+	 * for the header when auto width is not enabled
+	 *
+	 * @param  {jQuery} from Copy widths from
+	 * @param  {jQuery} to   Copy widths to
+	 * @private
+	 */
+	_matchWidths: function ( from, to ) {
+		var get = function ( name ) {
+			return $(name, from)
+				.map( function () {
+					return $(this).width();
+				} ).toArray();
+		};
+
+		var set = function ( name, toWidths ) {
+			$(name, to).each( function ( i ) {
+				$(this).css( {
+					width: toWidths[i],
+					minWidth: toWidths[i]
+				} );
+			} );
+		};
+
+		var thWidths = get( 'th' );
+		var tdWidths = get( 'td' );
+
+		set( 'th', thWidths );
+		set( 'td', tdWidths );
+	},
+
+	/**
+	 * Remove assigned widths from the cells in an element. This is required
+	 * when inserting the footer back into the main table so the size is defined
+	 * by the header columns and also when auto width is disabled in the
+	 * DataTable.
+	 *
+	 * @param  {string} item The `header` or `footer`
+	 * @private
+	 */
+	_unsize: function ( item ) {
+		var el = this.dom[ item ].floating;
+
+		if ( el && (item === 'footer' || (item === 'header' && ! this.s.autoWidth)) ) {
+			$('th, td', el).css( {
+				width: '',
+				minWidth: ''
+			} );
+		}
+		else if ( el && item === 'header' ) {
+			$('th, td', el).css( 'min-width', '' );
+		}
+	},
+
+	/**
+	 * Reposition the floating elements to take account of horizontal page
+	 * scroll
+	 *
+	 * @param  {string} item       The `header` or `footer`
+	 * @param  {int}    scrollLeft Document scrollLeft
+	 * @private
+	 */
+	_horizontal: function ( item, scrollLeft )
+	{
+		var itemDom = this.dom[ item ];
+		var position = this.s.position;
+		var lastScrollLeft = this.s.scrollLeft;
+
+		if ( itemDom.floating && lastScrollLeft[ item ] !== scrollLeft ) {
+			itemDom.floating.css( 'left', position.left - scrollLeft );
+
+			lastScrollLeft[ item ] = scrollLeft;
+		}
+	},
+
+	/**
+	 * Change from one display mode to another. Each fixed item can be in one
+	 * of:
+	 *
+	 * * `in-place` - In the main DataTable
+	 * * `in` - Floating over the DataTable
+	 * * `below` - (Header only) Fixed to the bottom of the table body
+	 * * `above` - (Footer only) Fixed to the top of the table body
+	 * 
+	 * @param  {string}  mode        Mode that the item should be shown in
+	 * @param  {string}  item        'header' or 'footer'
+	 * @param  {boolean} forceChange Force a redraw of the mode, even if already
+	 *     in that mode.
+	 * @private
+	 */
+	_modeChange: function ( mode, item, forceChange )
+	{
+		var dt = this.s.dt;
+		var itemDom = this.dom[ item ];
+		var position = this.s.position;
+
+		// Record focus. Browser's will cause input elements to loose focus if
+		// they are inserted else where in the doc
+		var tablePart = this.dom[ item==='footer' ? 'tfoot' : 'thead' ];
+		var focus = $.contains( tablePart[0], document.activeElement ) ?
+			document.activeElement :
+			null;
+		
+		if ( focus ) {
+			focus.blur();
+		}
+
+		if ( mode === 'in-place' ) {
+			// Insert the header back into the table's real header
+			if ( itemDom.placeholder ) {
+				itemDom.placeholder.remove();
+				itemDom.placeholder = null;
+			}
+
+			this._unsize( item );
+
+			if ( item === 'header' ) {
+				itemDom.host.prepend( tablePart );
+			}
+			else {
+				itemDom.host.append( tablePart );
+			}
+
+			if ( itemDom.floating ) {
+				itemDom.floating.remove();
+				itemDom.floating = null;
+			}
+		}
+		else if ( mode === 'in' ) {
+			// Remove the header from the read header and insert into a fixed
+			// positioned floating table clone
+			this._clone( item, forceChange );
+
+			itemDom.floating
+				.addClass( 'fixedHeader-floating' )
+				.css( item === 'header' ? 'top' : 'bottom', this.c[item+'Offset'] )
+				.css( 'left', position.left+'px' )
+				.css( 'width', position.width+'px' );
+
+			if ( item === 'footer' ) {
+				itemDom.floating.css( 'top', '' );
+			}
+		}
+		else if ( mode === 'below' ) { // only used for the header
+			// Fix the position of the floating header at base of the table body
+			this._clone( item, forceChange );
+
+			itemDom.floating
+				.addClass( 'fixedHeader-locked' )
+				.css( 'top', position.tfootTop - position.theadHeight )
+				.css( 'left', position.left+'px' )
+				.css( 'width', position.width+'px' );
+		}
+		else if ( mode === 'above' ) { // only used for the footer
+			// Fix the position of the floating footer at top of the table body
+			this._clone( item, forceChange );
+
+			itemDom.floating
+				.addClass( 'fixedHeader-locked' )
+				.css( 'top', position.tbodyTop )
+				.css( 'left', position.left+'px' )
+				.css( 'width', position.width+'px' );
+		}
+
+		// Restore focus if it was lost
+		if ( focus && focus !== document.activeElement ) {
+			setTimeout( function () {
+				focus.focus();
+			}, 10 );
+		}
+
+		this.s.scrollLeft.header = -1;
+		this.s.scrollLeft.footer = -1;
+		this.s[item+'Mode'] = mode;
+	},
+
+	/**
+	 * Cache the positional information that is required for the mode
+	 * calculations that FixedHeader performs.
+	 *
+	 * @private
+	 */
+	_positions: function ()
+	{
+		var dt = this.s.dt;
+		var table = dt.table();
+		var position = this.s.position;
+		var dom = this.dom;
+		var tableNode = $(table.node());
+
+		// Need to use the header and footer that are in the main table,
+		// regardless of if they are clones, since they hold the positions we
+		// want to measure from
+		var thead = tableNode.children('thead');
+		var tfoot = tableNode.children('tfoot');
+		var tbody = dom.tbody;
+
+		position.visible = tableNode.is(':visible');
+		position.width = tableNode.outerWidth();
+		position.left = tableNode.offset().left;
+		position.theadTop = thead.offset().top;
+		position.tbodyTop = tbody.offset().top;
+		position.tbodyHeight = tbody.outerHeight();
+		position.theadHeight = position.tbodyTop - position.theadTop;
+
+		if ( tfoot.length ) {
+			position.tfootTop = tfoot.offset().top;
+			position.tfootBottom = position.tfootTop + tfoot.outerHeight();
+			position.tfootHeight = position.tfootBottom - position.tfootTop;
+		}
+		else {
+			position.tfootTop = position.tbodyTop + tbody.outerHeight();
+			position.tfootBottom = position.tfootTop;
+			position.tfootHeight = position.tfootTop;
+		}
+	},
+
+
+	/**
+	 * Mode calculation - determine what mode the fixed items should be placed
+	 * into.
+	 *
+	 * @param  {boolean} forceChange Force a redraw of the mode, even if already
+	 *     in that mode.
+	 * @private
+	 */
+	_scroll: function ( forceChange )
+	{
+		var windowTop = $(document).scrollTop();
+		var windowLeft = $(document).scrollLeft();
+		var position = this.s.position;
+		var headerMode, footerMode;
+
+		if ( this.c.header ) {
+			if ( ! this.s.enable ) {
+				headerMode = 'in-place';
+			}
+			else if ( ! position.visible || windowTop <= position.theadTop - this.c.headerOffset ) {
+				headerMode = 'in-place';
+			}
+			else if ( windowTop <= position.tfootTop - position.theadHeight - this.c.headerOffset ) {
+				headerMode = 'in';
+			}
+			else {
+				headerMode = 'below';
+			}
+
+			if ( forceChange || headerMode !== this.s.headerMode ) {
+				this._modeChange( headerMode, 'header', forceChange );
+			}
+
+			this._horizontal( 'header', windowLeft );
+		}
+
+		if ( this.c.footer && this.dom.tfoot.length ) {
+			if ( ! this.s.enable ) {
+				headerMode = 'in-place';
+			}
+			else if ( ! position.visible || windowTop + position.windowHeight >= position.tfootBottom + this.c.footerOffset ) {
+				footerMode = 'in-place';
+			}
+			else if ( position.windowHeight + windowTop > position.tbodyTop + position.tfootHeight + this.c.footerOffset ) {
+				footerMode = 'in';
+			}
+			else {
+				footerMode = 'above';
+			}
+
+			if ( forceChange || footerMode !== this.s.footerMode ) {
+				this._modeChange( footerMode, 'footer', forceChange );
+			}
+
+			this._horizontal( 'footer', windowLeft );
+		}
+	}
+} );
+
+
+/**
+ * Version
+ * @type {String}
+ * @static
+ */
+FixedHeader.version = "3.1.6";
+
+/**
+ * Defaults
+ * @type {Object}
+ * @static
+ */
+FixedHeader.defaults = {
+	header: true,
+	footer: false,
+	headerOffset: 0,
+	footerOffset: 0
+};
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables interfaces
+ */
+
+// Attach for constructor access
+$.fn.dataTable.FixedHeader = FixedHeader;
+$.fn.DataTable.FixedHeader = FixedHeader;
+
+
+// DataTables creation - check if the FixedHeader option has been defined on the
+// table and if so, initialise
+$(document).on( 'init.dt.dtfh', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.fixedHeader;
+	var defaults = DataTable.defaults.fixedHeader;
+
+	if ( (init || defaults) && ! settings._fixedHeader ) {
+		var opts = $.extend( {}, defaults, init );
+
+		if ( init !== false ) {
+			new FixedHeader( settings, opts );
+		}
+	}
+} );
+
+// DataTables API methods
+DataTable.Api.register( 'fixedHeader()', function () {} );
+
+DataTable.Api.register( 'fixedHeader.adjust()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		var fh = ctx._fixedHeader;
+
+		if ( fh ) {
+			fh.update();
+		}
+	} );
+} );
+
+DataTable.Api.register( 'fixedHeader.enable()', function ( flag ) {
+	return this.iterator( 'table', function ( ctx ) {
+		var fh = ctx._fixedHeader;
+
+		flag = ( flag !== undefined ? flag : true );
+		if ( fh && flag !== fh.enabled() ) {
+			fh.enable( flag );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'fixedHeader.enabled()', function () {
+	if ( this.context.length ) {
+		var fx = this.content[0]._fixedHeader;
+
+		if ( fh ) {
+			return fh.enabled();
+		}
+	}
+
+	return false;
+} );
+
+DataTable.Api.register( 'fixedHeader.disable()', function ( ) {
+	return this.iterator( 'table', function ( ctx ) {
+		var fh = ctx._fixedHeader;
+
+		if ( fh && fh.enabled() ) {
+			fh.enable( false );
+		}
+	} );
+} );
+
+$.each( ['header', 'footer'], function ( i, el ) {
+	DataTable.Api.register( 'fixedHeader.'+el+'Offset()', function ( offset ) {
+		var ctx = this.context;
+
+		if ( offset === undefined ) {
+			return ctx.length && ctx[0]._fixedHeader ?
+				ctx[0]._fixedHeader[el +'Offset']() :
+				undefined;
+		}
+
+		return this.iterator( 'table', function ( ctx ) {
+			var fh = ctx._fixedHeader;
+
+			if ( fh ) {
+				fh[ el +'Offset' ]( offset );
+			}
+		} );
+	} );
+} );
+
+
+return FixedHeader;
+}));
+
+
+/*! KeyTable 2.5.1
+ * ©2009-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     KeyTable
+ * @description Spreadsheet like keyboard navigation for DataTables
+ * @version     2.5.1
+ * @file        dataTables.keyTable.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2009-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+var namespaceCounter = 0;
+
+
+var KeyTable = function ( dt, opts ) {
+	// Sanity check that we are using DataTables 1.10 or newer
+	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) {
+		throw 'KeyTable requires DataTables 1.10.8 or newer';
+	}
+
+	// User and defaults configuration object
+	this.c = $.extend( true, {},
+		DataTable.defaults.keyTable,
+		KeyTable.defaults,
+		opts
+	);
+
+	// Internal settings
+	this.s = {
+		/** @type {DataTable.Api} DataTables' API instance */
+		dt: new DataTable.Api( dt ),
+
+		enable: true,
+
+		/** @type {bool} Flag for if a draw is triggered by focus */
+		focusDraw: false,
+
+		/** @type {bool} Flag to indicate when waiting for a draw to happen.
+		  *   Will ignore key presses at this point
+		  */
+		waitingForDraw: false,
+
+		/** @type {object} Information about the last cell that was focused */
+		lastFocus: null,
+
+		/** @type {string} Unique namespace per instance */
+		namespace: '.keyTable-'+(namespaceCounter++)
+	};
+
+	// DOM items
+	this.dom = {
+
+	};
+
+	// Check if row reorder has already been initialised on this table
+	var settings = this.s.dt.settings()[0];
+	var exisiting = settings.keytable;
+	if ( exisiting ) {
+		return exisiting;
+	}
+
+	settings.keytable = this;
+	this._constructor();
+};
+
+
+$.extend( KeyTable.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * API methods for DataTables API interface
+	 */
+
+	/**
+	 * Blur the table's cell focus
+	 */
+	blur: function ()
+	{
+		this._blur();
+	},
+
+	/**
+	 * Enable cell focus for the table
+	 *
+	 * @param  {string} state Can be `true`, `false` or `-string navigation-only`
+	 */
+	enable: function ( state )
+	{
+		this.s.enable = state;
+	},
+
+	/**
+	 * Focus on a cell
+	 * @param  {integer} row    Row index
+	 * @param  {integer} column Column index
+	 */
+	focus: function ( row, column )
+	{
+		this._focus( this.s.dt.cell( row, column ) );
+	},
+
+	/**
+	 * Is the cell focused
+	 * @param  {object} cell Cell index to check
+	 * @returns {boolean} true if focused, false otherwise
+	 */
+	focused: function ( cell )
+	{
+		var lastFocus = this.s.lastFocus;
+
+		if ( ! lastFocus ) {
+			return false;
+		}
+
+		var lastIdx = this.s.lastFocus.cell.index();
+		return cell.row === lastIdx.row && cell.column === lastIdx.column;
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Initialise the KeyTable instance
+	 *
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		this._tabInput();
+
+		var that = this;
+		var dt = this.s.dt;
+		var table = $( dt.table().node() );
+		var namespace = this.s.namespace;
+		var editorBlock = false;
+
+		// Need to be able to calculate the cell positions relative to the table
+		if ( table.css('position') === 'static' ) {
+			table.css( 'position', 'relative' );
+		}
+
+		// Click to focus
+		$( dt.table().body() ).on( 'click'+namespace, 'th, td', function (e) {
+			if ( that.s.enable === false ) {
+				return;
+			}
+
+			var cell = dt.cell( this );
+
+			if ( ! cell.any() ) {
+				return;
+			}
+
+			that._focus( cell, null, false, e );
+		} );
+
+		// Key events
+		$( document ).on( 'keydown'+namespace, function (e) {
+			if ( ! editorBlock ) {
+				that._key( e );
+			}
+		} );
+
+		// Click blur
+		if ( this.c.blurable ) {
+			$( document ).on( 'mousedown'+namespace, function ( e ) {
+				// Click on the search input will blur focus
+				if ( $(e.target).parents( '.dataTables_filter' ).length ) {
+					that._blur();
+				}
+
+				// If the click was inside the DataTables container, don't blur
+				if ( $(e.target).parents().filter( dt.table().container() ).length ) {
+					return;
+				}
+
+				// Don't blur in Editor form
+				if ( $(e.target).parents('div.DTE').length ) {
+					return;
+				}
+
+				// Or an Editor date input
+				if ( $(e.target).parents('div.editor-datetime').length ) {
+					return;
+				}
+
+				//If the click was inside the fixed columns container, don't blur
+				if ( $(e.target).parents().filter('.DTFC_Cloned').length ) {
+					return;
+				}
+
+				that._blur();
+			} );
+		}
+
+		if ( this.c.editor ) {
+			var editor = this.c.editor;
+
+			// Need to disable KeyTable when the main editor is shown
+			editor.on( 'open.keyTableMain', function (e, mode, action) {
+				if ( mode !== 'inline' && that.s.enable ) {
+					that.enable( false );
+
+					editor.one( 'close'+namespace, function () {
+						that.enable( true );
+					} );
+				}
+			} );
+
+			if ( this.c.editOnFocus ) {
+				dt.on( 'key-focus'+namespace+' key-refocus'+namespace, function ( e, dt, cell, orig ) {
+					that._editor( null, orig, true );
+				} );
+			}
+
+			// Activate Editor when a key is pressed (will be ignored, if
+			// already active).
+			dt.on( 'key'+namespace, function ( e, dt, key, cell, orig ) {
+				that._editor( key, orig, false );
+			} );
+
+			// Active editing on double click - it will already have focus from
+			// the click event handler above
+			$( dt.table().body() ).on( 'dblclick'+namespace, 'th, td', function (e) {
+				if ( that.s.enable === false ) {
+					return;
+				}
+
+				var cell = dt.cell( this );
+
+				if ( ! cell.any() ) {
+					return;
+				}
+
+				that._editor( null, e, true );
+			} );
+
+			// While Editor is busy processing, we don't want to process any key events
+			editor
+				.on('preSubmit', function () {
+					editorBlock = true;
+				} )
+				.on('preSubmitCancelled', function () {
+					editorBlock = false;
+				} )
+				.on('submitComplete', function () {
+					editorBlock = false;
+				} );
+		}
+
+		// Stave saving
+		if ( dt.settings()[0].oFeatures.bStateSave ) {
+			dt.on( 'stateSaveParams'+namespace, function (e, s, d) {
+				d.keyTable = that.s.lastFocus ?
+					that.s.lastFocus.cell.index() :
+					null;
+			} );
+		}
+
+		// Redraw - retain focus on the current cell
+		dt.on( 'draw'+namespace, function (e) {
+			if ( that.s.focusDraw ) {
+				return;
+			}
+
+			var lastFocus = that.s.lastFocus;
+
+			if ( lastFocus && lastFocus.node && $(lastFocus.node).closest('body') === document.body ) {
+				var relative = that.s.lastFocus.relative;
+				var info = dt.page.info();
+				var row = relative.row + info.start;
+
+				if ( info.recordsDisplay === 0 ) {
+					return;
+				}
+
+				// Reverse if needed
+				if ( row >= info.recordsDisplay ) {
+					row = info.recordsDisplay - 1;
+				}
+
+				that._focus( row, relative.column, true, e );
+			}
+		} );
+
+		// Clipboard support
+		if ( this.c.clipboard ) {
+			this._clipboard();
+		}
+
+		dt.on( 'destroy'+namespace, function () {
+			that._blur( true );
+
+			// Event tidy up
+			dt.off( namespace );
+
+			$( dt.table().body() )
+				.off( 'click'+namespace, 'th, td' )
+				.off( 'dblclick'+namespace, 'th, td' );
+
+			$( document )
+				.off( 'mousedown'+namespace )
+				.off( 'keydown'+namespace )
+				.off( 'copy'+namespace )
+				.off( 'paste'+namespace );
+		} );
+
+		// Initial focus comes from state or options
+		var state = dt.state.loaded();
+
+		if ( state && state.keyTable ) {
+			// Wait until init is done
+			dt.one( 'init', function () {
+				var cell = dt.cell( state.keyTable );
+
+				// Ensure that the saved cell still exists
+				if ( cell.any() ) {
+					cell.focus();
+				}
+			} );
+		}
+		else if ( this.c.focus ) {
+			dt.cell( this.c.focus ).focus();
+		}
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Blur the control
+	 *
+	 * @param {boolean} [noEvents=false] Don't trigger updates / events (for destroying)
+	 * @private
+	 */
+	_blur: function (noEvents)
+	{
+		if ( ! this.s.enable || ! this.s.lastFocus ) {
+			return;
+		}
+
+		var cell = this.s.lastFocus.cell;
+
+		$( cell.node() ).removeClass( this.c.className );
+		this.s.lastFocus = null;
+
+		if ( ! noEvents ) {
+			this._updateFixedColumns(cell.index().column);
+
+			this._emitEvent( 'key-blur', [ this.s.dt, cell ] );
+		}
+	},
+
+
+	/**
+	 * Clipboard interaction handlers
+	 *
+	 * @private
+	 */
+	_clipboard: function () {
+		var dt = this.s.dt;
+		var that = this;
+		var namespace = this.s.namespace;
+
+		// IE8 doesn't support getting selected text
+		if ( ! window.getSelection ) {
+			return;
+		}
+
+		$(document).on( 'copy'+namespace, function (ejq) {
+			var e = ejq.originalEvent;
+			var selection = window.getSelection().toString();
+			var focused = that.s.lastFocus;
+
+			// Only copy cell text to clipboard if there is no other selection
+			// and there is a focused cell
+			if ( ! selection && focused ) {
+				e.clipboardData.setData(
+					'text/plain',
+					focused.cell.render( that.c.clipboardOrthogonal )
+				);
+				e.preventDefault();
+			}
+		} );
+
+		$(document).on( 'paste'+namespace, function (ejq) {
+			var e = ejq.originalEvent;
+			var focused = that.s.lastFocus;
+			var activeEl = document.activeElement;
+			var editor = that.c.editor;
+			var pastedText;
+
+			if ( focused && (! activeEl || activeEl.nodeName.toLowerCase() === 'body') ) {
+				e.preventDefault();
+
+				if ( window.clipboardData && window.clipboardData.getData ) {
+					// IE
+					pastedText = window.clipboardData.getData('Text');
+				}
+				else if ( e.clipboardData && e.clipboardData.getData ) {
+					// Everything else
+					pastedText = e.clipboardData.getData('text/plain');
+				}
+
+				if ( editor ) {
+					// Got Editor - need to activate inline editing,
+					// set the value and submit
+					editor
+						.inline( focused.cell.index() )
+						.set( editor.displayed()[0], pastedText )
+						.submit();
+				}
+				else {
+					// No editor, so just dump the data in
+					focused.cell.data( pastedText );
+					dt.draw(false);
+				}
+			}
+		} );
+	},
+
+
+	/**
+	 * Get an array of the column indexes that KeyTable can operate on. This
+	 * is a merge of the user supplied columns and the visible columns.
+	 *
+	 * @private
+	 */
+	_columns: function ()
+	{
+		var dt = this.s.dt;
+		var user = dt.columns( this.c.columns ).indexes();
+		var out = [];
+
+		dt.columns( ':visible' ).every( function (i) {
+			if ( user.indexOf( i ) !== -1 ) {
+				out.push( i );
+			}
+		} );
+
+		return out;
+	},
+
+
+	/**
+	 * Perform excel like navigation for Editor by triggering an edit on key
+	 * press
+	 *
+	 * @param  {integer} key Key code for the pressed key
+	 * @param  {object} orig Original event
+	 * @private
+	 */
+	_editor: function ( key, orig, hardEdit )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var editor = this.c.editor;
+		var editCell = this.s.lastFocus.cell;
+		var namespace = this.s.namespace;
+
+		// Do nothing if there is already an inline edit in this cell
+		if ( $('div.DTE', editCell.node()).length ) {
+			return;
+		}
+
+		// Don't activate Editor on control key presses
+		if ( key !== null && (
+			(key >= 0x00 && key <= 0x09) ||
+			key === 0x0b ||
+			key === 0x0c ||
+			(key >= 0x0e && key <= 0x1f) ||
+			(key >= 0x70 && key <= 0x7b) ||
+			(key >= 0x7f && key <= 0x9f)
+		) ) {
+			return;
+		}
+
+		orig.stopPropagation();
+
+		// Return key should do nothing - for textareas it would empty the
+		// contents
+		if ( key === 13 ) {
+			orig.preventDefault();
+		}
+
+		var editInline = function () {
+			editor
+				.one( 'open'+namespace, function () {
+					// Remove cancel open
+					editor.off( 'cancelOpen'+namespace );
+
+					// Excel style - select all text
+					if ( ! hardEdit ) {
+						$('div.DTE_Field_InputControl input, div.DTE_Field_InputControl textarea').select();
+					}
+
+					// Reduce the keys the Keys listens for
+					dt.keys.enable( hardEdit ? 'tab-only' : 'navigation-only' );
+
+					// On blur of the navigation submit
+					dt.on( 'key-blur.editor', function (e, dt, cell) {
+						if ( editor.displayed() && cell.node() === editCell.node() ) {
+							editor.submit();
+						}
+					} );
+
+					// Highlight the cell a different colour on full edit
+					if ( hardEdit ) {
+						$( dt.table().container() ).addClass('dtk-focus-alt');
+					}
+
+					// If the dev cancels the submit, we need to return focus
+					editor.on( 'preSubmitCancelled'+namespace, function () {
+						setTimeout( function () {
+							that._focus( editCell, null, false );
+						}, 50 );
+					} );
+
+					editor.on( 'submitUnsuccessful'+namespace, function () {
+						that._focus( editCell, null, false );
+					} );
+
+					// Restore full key navigation on close
+					editor.one( 'close', function () {
+						dt.keys.enable( true );
+						dt.off( 'key-blur.editor' );
+						editor.off( namespace );
+						$( dt.table().container() ).removeClass('dtk-focus-alt');
+					} );
+				} )
+				.one( 'cancelOpen'+namespace, function () {
+					// `preOpen` can cancel the display of the form, so it
+					// might be that the open event handler isn't needed
+					editor.off( namespace );
+				} )
+				.inline( editCell.index() );
+		};
+
+		// Editor 1.7 listens for `return` on keyup, so if return is the trigger
+		// key, we need to wait for `keyup` otherwise Editor would just submit
+		// the content triggered by this keypress.
+		if ( key === 13 ) {
+			hardEdit = true;
+
+			$(document).one( 'keyup', function () { // immediately removed
+				editInline();
+			} );
+		}
+		else {
+			editInline();
+		}
+	},
+
+
+	/**
+	 * Emit an event on the DataTable for listeners
+	 *
+	 * @param  {string} name Event name
+	 * @param  {array} args Event arguments
+	 * @private
+	 */
+	_emitEvent: function ( name, args )
+	{
+		this.s.dt.iterator( 'table', function ( ctx, i ) {
+			$(ctx.nTable).triggerHandler( name, args );
+		} );
+	},
+
+
+	/**
+	 * Focus on a particular cell, shifting the table's paging if required
+	 *
+	 * @param  {DataTables.Api|integer} row Can be given as an API instance that
+	 *   contains the cell to focus or as an integer. As the latter it is the
+	 *   visible row index (from the whole data set) - NOT the data index
+	 * @param  {integer} [column] Not required if a cell is given as the first
+	 *   parameter. Otherwise this is the column data index for the cell to
+	 *   focus on
+	 * @param {boolean} [shift=true] Should the viewport be moved to show cell
+	 * @private
+	 */
+	_focus: function ( row, column, shift, originalEvent )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var pageInfo = dt.page.info();
+		var lastFocus = this.s.lastFocus;
+
+		if ( ! originalEvent) {
+			originalEvent = null;
+		}
+
+		if ( ! this.s.enable ) {
+			return;
+		}
+
+		if ( typeof row !== 'number' ) {
+			// Its an API instance - check that there is actually a row
+			if ( ! row.any() ) {
+				return;
+			}
+
+			// Convert the cell to a row and column
+			var index = row.index();
+			column = index.column;
+			row = dt
+				.rows( { filter: 'applied', order: 'applied' } )
+				.indexes()
+				.indexOf( index.row );
+			
+			// Don't focus rows that were filtered out.
+			if ( row < 0 ) {
+				return;
+			}
+
+			// For server-side processing normalise the row by adding the start
+			// point, since `rows().indexes()` includes only rows that are
+			// available at the client-side
+			if ( pageInfo.serverSide ) {
+				row += pageInfo.start;
+			}
+		}
+
+		// Is the row on the current page? If not, we need to redraw to show the
+		// page
+		if ( pageInfo.length !== -1 && (row < pageInfo.start || row >= pageInfo.start+pageInfo.length) ) {
+			this.s.focusDraw = true;
+			this.s.waitingForDraw = true;
+
+			dt
+				.one( 'draw', function () {
+					that.s.focusDraw = false;
+					that.s.waitingForDraw = false;
+					that._focus( row, column, undefined, originalEvent );
+				} )
+				.page( Math.floor( row / pageInfo.length ) )
+				.draw( false );
+
+			return;
+		}
+
+		// In the available columns?
+		if ( $.inArray( column, this._columns() ) === -1 ) {
+			return;
+		}
+
+		// De-normalise the server-side processing row, so we select the row
+		// in its displayed position
+		if ( pageInfo.serverSide ) {
+			row -= pageInfo.start;
+		}
+
+		// Get the cell from the current position - ignoring any cells which might
+		// not have been rendered (therefore can't use `:eq()` selector).
+		var cells = dt.cells( null, column, {search: 'applied', order: 'applied'} ).flatten();
+		var cell = dt.cell( cells[ row ] );
+
+		if ( lastFocus ) {
+			// Don't trigger a refocus on the same cell
+			if ( lastFocus.node === cell.node() ) {
+				this._emitEvent( 'key-refocus', [ this.s.dt, cell, originalEvent || null ] );
+				return;
+			}
+
+			// Otherwise blur the old focus
+			this._blur();
+		}
+
+		// Clear focus from other tables
+		this._removeOtherFocus();
+
+		var node = $( cell.node() );
+		node.addClass( this.c.className );
+
+		this._updateFixedColumns(column);
+
+		// Shift viewpoint and page to make cell visible
+		if ( shift === undefined || shift === true ) {
+			this._scroll( $(window), $(document.body), node, 'offset' );
+
+			var bodyParent = dt.table().body().parentNode;
+			if ( bodyParent !== dt.table().header().parentNode ) {
+				var parent = $(bodyParent.parentNode);
+
+				this._scroll( parent, parent, node, 'position' );
+			}
+		}
+
+		// Event and finish
+		this.s.lastFocus = {
+			cell: cell,
+			node: cell.node(),
+			relative: {
+				row: dt.rows( { page: 'current' } ).indexes().indexOf( cell.index().row ),
+				column: cell.index().column
+			}
+		};
+
+		this._emitEvent( 'key-focus', [ this.s.dt, cell, originalEvent || null ] );
+		dt.state.save();
+	},
+
+
+	/**
+	 * Handle key press
+	 *
+	 * @param  {object} e Event
+	 * @private
+	 */
+	_key: function ( e )
+	{
+		// If we are waiting for a draw to happen from another key event, then
+		// do nothing for this new key press.
+		if ( this.s.waitingForDraw ) {
+			e.preventDefault();
+			return;
+		}
+
+		var enable = this.s.enable;
+		var navEnable = enable === true || enable === 'navigation-only';
+		if ( ! enable ) {
+			return;
+		}
+
+		if ( (e.keyCode === 0 || e.ctrlKey || e.metaKey || e.altKey) && !(e.ctrlKey && e.altKey) ) {
+			return;
+		}
+
+		// If not focused, then there is no key action to take
+		var lastFocus = this.s.lastFocus;
+		if ( ! lastFocus ) {
+			return;
+		}
+
+		// And the last focus still exists!
+		if ( ! this.s.dt.cell(lastFocus.node).any() ) {
+			this.s.lastFocus = null;
+			return;
+		}
+
+		var that = this;
+		var dt = this.s.dt;
+		var scrolling = this.s.dt.settings()[0].oScroll.sY ? true : false;
+
+		// If we are not listening for this key, do nothing
+		if ( this.c.keys && $.inArray( e.keyCode, this.c.keys ) === -1 ) {
+			return;
+		}
+
+		switch( e.keyCode ) {
+			case 9: // tab
+				// `enable` can be tab-only
+				this._shift( e, e.shiftKey ? 'left' : 'right', true );
+				break;
+
+			case 27: // esc
+				if ( this.s.blurable && enable === true ) {
+					this._blur();
+				}
+				break;
+
+			case 33: // page up (previous page)
+			case 34: // page down (next page)
+				if ( navEnable && !scrolling ) {
+					e.preventDefault();
+
+					dt
+						.page( e.keyCode === 33 ? 'previous' : 'next' )
+						.draw( false );
+				}
+				break;
+
+			case 35: // end (end of current page)
+			case 36: // home (start of current page)
+				if ( navEnable ) {
+					e.preventDefault();
+					var indexes = dt.cells( {page: 'current'} ).indexes();
+					var colIndexes = this._columns();
+
+					this._focus( dt.cell(
+						indexes[ e.keyCode === 35 ? indexes.length-1 : colIndexes[0] ]
+					), null, true, e );
+				}
+				break;
+
+			case 37: // left arrow
+				if ( navEnable ) {
+					this._shift( e, 'left' );
+				}
+				break;
+
+			case 38: // up arrow
+				if ( navEnable ) {
+					this._shift( e, 'up' );
+				}
+				break;
+
+			case 39: // right arrow
+				if ( navEnable ) {
+					this._shift( e, 'right' );
+				}
+				break;
+
+			case 40: // down arrow
+				if ( navEnable ) {
+					this._shift( e, 'down' );
+				}
+				break;
+
+			case 113: // F2 - Excel like hard edit
+				if ( this.c.editor ) {
+					this._editor(null, e, true);
+					break;
+				}
+				// else fallthrough
+
+			default:
+				// Everything else - pass through only when fully enabled
+				if ( enable === true ) {
+					this._emitEvent( 'key', [ dt, e.keyCode, this.s.lastFocus.cell, e ] );
+				}
+				break;
+		}
+	},
+
+	/**
+	 * Remove focus from all tables other than this one
+	 */
+	_removeOtherFocus: function ()
+	{
+		var thisTable = this.s.dt.table().node();
+
+		$.fn.dataTable.tables({api:true}).iterator('table', function (settings) {
+			if (this.table().node() !== thisTable) {
+				this.cell.blur();
+			}
+		});
+	},
+
+	/**
+	 * Scroll a container to make a cell visible in it. This can be used for
+	 * both DataTables scrolling and native window scrolling.
+	 *
+	 * @param  {jQuery} container Scrolling container
+	 * @param  {jQuery} scroller  Item being scrolled
+	 * @param  {jQuery} cell      Cell in the scroller
+	 * @param  {string} posOff    `position` or `offset` - which to use for the
+	 *   calculation. `offset` for the document, otherwise `position`
+	 * @private
+	 */
+	_scroll: function ( container, scroller, cell, posOff )
+	{
+		var offset = cell[posOff]();
+		var height = cell.outerHeight();
+		var width = cell.outerWidth();
+
+		var scrollTop = scroller.scrollTop();
+		var scrollLeft = scroller.scrollLeft();
+		var containerHeight = container.height();
+		var containerWidth = container.width();
+
+		// If Scroller is being used, the table can be `position: absolute` and that
+		// needs to be taken account of in the offset. If no Scroller, this will be 0
+		if ( posOff === 'position' ) {
+			offset.top += parseInt( cell.closest('table').css('top'), 10 );
+		}
+
+		// Top correction
+		if ( offset.top < scrollTop ) {
+			scroller.scrollTop( offset.top );
+		}
+
+		// Left correction
+		if ( offset.left < scrollLeft ) {
+			scroller.scrollLeft( offset.left );
+		}
+
+		// Bottom correction
+		if ( offset.top + height > scrollTop + containerHeight && height < containerHeight ) {
+			scroller.scrollTop( offset.top + height - containerHeight );
+		}
+
+		// Right correction
+		if ( offset.left + width > scrollLeft + containerWidth && width < containerWidth ) {
+			scroller.scrollLeft( offset.left + width - containerWidth );
+		}
+	},
+
+
+	/**
+	 * Calculate a single offset movement in the table - up, down, left and
+	 * right and then perform the focus if possible
+	 *
+	 * @param  {object}  e           Event object
+	 * @param  {string}  direction   Movement direction
+	 * @param  {boolean} keyBlurable `true` if the key press can result in the
+	 *   table being blurred. This is so arrow keys won't blur the table, but
+	 *   tab will.
+	 * @private
+	 */
+	_shift: function ( e, direction, keyBlurable )
+	{
+		var that         = this;
+		var dt           = this.s.dt;
+		var pageInfo     = dt.page.info();
+		var rows         = pageInfo.recordsDisplay;
+		var currentCell  = this.s.lastFocus.cell;
+		var columns      = this._columns();
+
+		if ( ! currentCell ) {
+			return;
+		}
+
+		var currRow = dt
+			.rows( { filter: 'applied', order: 'applied' } )
+			.indexes()
+			.indexOf( currentCell.index().row );
+
+		// When server-side processing, `rows().indexes()` only gives the rows
+		// that are available at the client-side, so we need to normalise the
+		// row's current position by the display start point
+		if ( pageInfo.serverSide ) {
+			currRow += pageInfo.start;
+		}
+
+		var currCol = dt
+			.columns( columns )
+			.indexes()
+			.indexOf( currentCell.index().column );
+
+		var
+			row = currRow,
+			column = columns[ currCol ]; // row is the display, column is an index
+
+		if ( direction === 'right' ) {
+			if ( currCol >= columns.length - 1 ) {
+				row++;
+				column = columns[0];
+			}
+			else {
+				column = columns[ currCol+1 ];
+			}
+		}
+		else if ( direction === 'left' ) {
+			if ( currCol === 0 ) {
+				row--;
+				column = columns[ columns.length - 1 ];
+			}
+			else {
+				column = columns[ currCol-1 ];
+			}
+		}
+		else if ( direction === 'up' ) {
+			row--;
+		}
+		else if ( direction === 'down' ) {
+			row++;
+		}
+
+		if ( row >= 0 && row < rows && $.inArray( column, columns ) !== -1 ) {
+			if (e) {
+				e.preventDefault();
+			}
+
+			this._focus( row, column, true, e );
+		}
+		else if ( ! keyBlurable || ! this.c.blurable ) {
+			// No new focus, but if the table isn't blurable, then don't loose
+			// focus
+			if (e) {
+				e.preventDefault();
+			}
+		}
+		else {
+			this._blur();
+		}
+	},
+
+
+	/**
+	 * Create a hidden input element that can receive focus on behalf of the
+	 * table
+	 *
+	 * @private
+	 */
+	_tabInput: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var tabIndex = this.c.tabIndex !== null ?
+			this.c.tabIndex :
+			dt.settings()[0].iTabIndex;
+
+		if ( tabIndex == -1 ) {
+			return;
+		}
+
+		var div = $('<div><input type="text" tabindex="'+tabIndex+'"/></div>')
+			.css( {
+				position: 'absolute',
+				height: 1,
+				width: 0,
+				overflow: 'hidden'
+			} )
+			.insertBefore( dt.table().node() );
+
+		div.children().on( 'focus', function (e) {
+			var cell = dt.cell(':eq(0)', that._columns(), {page: 'current'});
+
+			if ( cell.any() ) {
+				that._focus( cell, null, true, e );
+			}
+		} );
+	},
+
+	/**
+	 * Update fixed columns if they are enabled and if the cell we are
+	 * focusing is inside a fixed column
+	 * @param  {integer} column Index of the column being changed
+	 * @private
+	 */
+	_updateFixedColumns: function( column )
+	{
+		var dt = this.s.dt;
+		var settings = dt.settings()[0];
+
+		if ( settings._oFixedColumns ) {
+			var leftCols = settings._oFixedColumns.s.iLeftColumns;
+			var rightCols = settings.aoColumns.length - settings._oFixedColumns.s.iRightColumns;
+
+			if (column < leftCols || column >= rightCols) {
+				dt.fixedColumns().update();
+			}
+		}
+	}
+} );
+
+
+/**
+ * KeyTable default settings for initialisation
+ *
+ * @namespace
+ * @name KeyTable.defaults
+ * @static
+ */
+KeyTable.defaults = {
+	/**
+	 * Can focus be removed from the table
+	 * @type {Boolean}
+	 */
+	blurable: true,
+
+	/**
+	 * Class to give to the focused cell
+	 * @type {String}
+	 */
+	className: 'focus',
+
+	/**
+	 * Enable or disable clipboard support
+	 * @type {Boolean}
+	 */
+	clipboard: true,
+
+	/**
+	 * Orthogonal data that should be copied to clipboard
+	 * @type {string}
+	 */
+	clipboardOrthogonal: 'display',
+
+	/**
+	 * Columns that can be focused. This is automatically merged with the
+	 * visible columns as only visible columns can gain focus.
+	 * @type {String}
+	 */
+	columns: '', // all
+
+	/**
+	 * Editor instance to automatically perform Excel like navigation
+	 * @type {Editor}
+	 */
+	editor: null,
+
+	/**
+	 * Trigger editing immediately on focus
+	 * @type {boolean}
+	 */
+	editOnFocus: false,
+
+	/**
+	 * Select a cell to automatically select on start up. `null` for no
+	 * automatic selection
+	 * @type {cell-selector}
+	 */
+	focus: null,
+
+	/**
+	 * Array of keys to listen for
+	 * @type {null|array}
+	 */
+	keys: null,
+
+	/**
+	 * Tab index for where the table should sit in the document's tab flow
+	 * @type {integer|null}
+	 */
+	tabIndex: null
+};
+
+
+
+KeyTable.version = "2.5.1";
+
+
+$.fn.dataTable.KeyTable = KeyTable;
+$.fn.DataTable.KeyTable = KeyTable;
+
+
+DataTable.Api.register( 'cell.blur()', function () {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.keytable ) {
+			ctx.keytable.blur();
+		}
+	} );
+} );
+
+DataTable.Api.register( 'cell().focus()', function () {
+	return this.iterator( 'cell', function (ctx, row, column) {
+		if ( ctx.keytable ) {
+			ctx.keytable.focus( row, column );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'keys.disable()', function () {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.keytable ) {
+			ctx.keytable.enable( false );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'keys.enable()', function ( opts ) {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.keytable ) {
+			ctx.keytable.enable( opts === undefined ? true : opts );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'keys.move()', function ( dir ) {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.keytable ) {
+			ctx.keytable._shift( null, dir, false );
+		}
+	} );
+} );
+
+// Cell selector
+DataTable.ext.selector.cell.push( function ( settings, opts, cells ) {
+	var focused = opts.focused;
+	var kt = settings.keytable;
+	var out = [];
+
+	if ( ! kt || focused === undefined ) {
+		return cells;
+	}
+
+	for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+		if ( (focused === true &&  kt.focused( cells[i] ) ) ||
+			 (focused === false && ! kt.focused( cells[i] ) )
+		) {
+			out.push( cells[i] );
+		}
+	}
+
+	return out;
+} );
+
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.dtk', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.keys;
+	var defaults = DataTable.defaults.keys;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, defaults, init );
+
+		if ( init !== false ) {
+			new KeyTable( settings, opts  );
+		}
+	}
+} );
+
+
+return KeyTable;
+}));
+
+
+/*! Responsive 2.2.3
+ * 2014-2018 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     Responsive
+ * @description Responsive tables plug-in for DataTables
+ * @version     2.2.3
+ * @file        dataTables.responsive.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2014-2018 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/**
+ * Responsive is a plug-in for the DataTables library that makes use of
+ * DataTables' ability to change the visibility of columns, changing the
+ * visibility of columns so the displayed columns fit into the table container.
+ * The end result is that complex tables will be dynamically adjusted to fit
+ * into the viewport, be it on a desktop, tablet or mobile browser.
+ *
+ * Responsive for DataTables has two modes of operation, which can used
+ * individually or combined:
+ *
+ * * Class name based control - columns assigned class names that match the
+ *   breakpoint logic can be shown / hidden as required for each breakpoint.
+ * * Automatic control - columns are automatically hidden when there is no
+ *   room left to display them. Columns removed from the right.
+ *
+ * In additional to column visibility control, Responsive also has built into
+ * options to use DataTables' child row display to show / hide the information
+ * from the table that has been hidden. There are also two modes of operation
+ * for this child row display:
+ *
+ * * Inline - when the control element that the user can use to show / hide
+ *   child rows is displayed inside the first column of the table.
+ * * Column - where a whole column is dedicated to be the show / hide control.
+ *
+ * Initialisation of Responsive is performed by:
+ *
+ * * Adding the class `responsive` or `dt-responsive` to the table. In this case
+ *   Responsive will automatically be initialised with the default configuration
+ *   options when the DataTable is created.
+ * * Using the `responsive` option in the DataTables configuration options. This
+ *   can also be used to specify the configuration options, or simply set to
+ *   `true` to use the defaults.
+ *
+ *  @class
+ *  @param {object} settings DataTables settings object for the host table
+ *  @param {object} [opts] Configuration options
+ *  @requires jQuery 1.7+
+ *  @requires DataTables 1.10.3+
+ *
+ *  @example
+ *      $('#example').DataTable( {
+ *        responsive: true
+ *      } );
+ *    } );
+ */
+var Responsive = function ( settings, opts ) {
+	// Sanity check that we are using DataTables 1.10 or newer
+	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.10' ) ) {
+		throw 'DataTables Responsive requires DataTables 1.10.10 or newer';
+	}
+
+	this.s = {
+		dt: new DataTable.Api( settings ),
+		columns: [],
+		current: []
+	};
+
+	// Check if responsive has already been initialised on this table
+	if ( this.s.dt.settings()[0].responsive ) {
+		return;
+	}
+
+	// details is an object, but for simplicity the user can give it as a string
+	// or a boolean
+	if ( opts && typeof opts.details === 'string' ) {
+		opts.details = { type: opts.details };
+	}
+	else if ( opts && opts.details === false ) {
+		opts.details = { type: false };
+	}
+	else if ( opts && opts.details === true ) {
+		opts.details = { type: 'inline' };
+	}
+
+	this.c = $.extend( true, {}, Responsive.defaults, DataTable.defaults.responsive, opts );
+	settings.responsive = this;
+	this._constructor();
+};
+
+$.extend( Responsive.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Initialise the Responsive instance
+	 *
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var dtPrivateSettings = dt.settings()[0];
+		var oldWindowWidth = $(window).width();
+
+		dt.settings()[0]._responsive = this;
+
+		// Use DataTables' throttle function to avoid processor thrashing on
+		// resize
+		$(window).on( 'resize.dtr orientationchange.dtr', DataTable.util.throttle( function () {
+			// iOS has a bug whereby resize can fire when only scrolling
+			// See: http://stackoverflow.com/questions/8898412
+			var width = $(window).width();
+
+			if ( width !== oldWindowWidth ) {
+				that._resize();
+				oldWindowWidth = width;
+			}
+		} ) );
+
+		// DataTables doesn't currently trigger an event when a row is added, so
+		// we need to hook into its private API to enforce the hidden rows when
+		// new data is added
+		dtPrivateSettings.oApi._fnCallbackReg( dtPrivateSettings, 'aoRowCreatedCallback', function (tr, data, idx) {
+			if ( $.inArray( false, that.s.current ) !== -1 ) {
+				$('>td, >th', tr).each( function ( i ) {
+					var idx = dt.column.index( 'toData', i );
+
+					if ( that.s.current[idx] === false ) {
+						$(this).css('display', 'none');
+					}
+				} );
+			}
+		} );
+
+		// Destroy event handler
+		dt.on( 'destroy.dtr', function () {
+			dt.off( '.dtr' );
+			$( dt.table().body() ).off( '.dtr' );
+			$(window).off( 'resize.dtr orientationchange.dtr' );
+
+			// Restore the columns that we've hidden
+			$.each( that.s.current, function ( i, val ) {
+				if ( val === false ) {
+					that._setColumnVis( i, true );
+				}
+			} );
+		} );
+
+		// Reorder the breakpoints array here in case they have been added out
+		// of order
+		this.c.breakpoints.sort( function (a, b) {
+			return a.width < b.width ? 1 :
+				a.width > b.width ? -1 : 0;
+		} );
+
+		this._classLogic();
+		this._resizeAuto();
+
+		// Details handler
+		var details = this.c.details;
+
+		if ( details.type !== false ) {
+			that._detailsInit();
+
+			// DataTables will trigger this event on every column it shows and
+			// hides individually
+			dt.on( 'column-visibility.dtr', function () {
+				// Use a small debounce to allow multiple columns to be set together
+				if ( that._timer ) {
+					clearTimeout( that._timer );
+				}
+
+				that._timer = setTimeout( function () {
+					that._timer = null;
+
+					that._classLogic();
+					that._resizeAuto();
+					that._resize();
+
+					that._redrawChildren();
+				}, 100 );
+			} );
+
+			// Redraw the details box on each draw which will happen if the data
+			// has changed. This is used until DataTables implements a native
+			// `updated` event for rows
+			dt.on( 'draw.dtr', function () {
+				that._redrawChildren();
+			} );
+
+			$(dt.table().node()).addClass( 'dtr-'+details.type );
+		}
+
+		dt.on( 'column-reorder.dtr', function (e, settings, details) {
+			that._classLogic();
+			that._resizeAuto();
+			that._resize();
+		} );
+
+		// Change in column sizes means we need to calc
+		dt.on( 'column-sizing.dtr', function () {
+			that._resizeAuto();
+			that._resize();
+		});
+
+		// On Ajax reload we want to reopen any child rows which are displayed
+		// by responsive
+		dt.on( 'preXhr.dtr', function () {
+			var rowIds = [];
+			dt.rows().every( function () {
+				if ( this.child.isShown() ) {
+					rowIds.push( this.id(true) );
+				}
+			} );
+
+			dt.one( 'draw.dtr', function () {
+				that._resizeAuto();
+				that._resize();
+
+				dt.rows( rowIds ).every( function () {
+					that._detailsDisplay( this, false );
+				} );
+			} );
+		});
+
+		dt.on( 'init.dtr', function (e, settings, details) {
+			that._resizeAuto();
+			that._resize();
+
+			// If columns were hidden, then DataTables needs to adjust the
+			// column sizing
+			if ( $.inArray( false, that.s.current ) ) {
+				dt.columns.adjust();
+			}
+		} );
+
+		// First pass - draw the table for the current viewport size
+		this._resize();
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Calculate the visibility for the columns in a table for a given
+	 * breakpoint. The result is pre-determined based on the class logic if
+	 * class names are used to control all columns, but the width of the table
+	 * is also used if there are columns which are to be automatically shown
+	 * and hidden.
+	 *
+	 * @param  {string} breakpoint Breakpoint name to use for the calculation
+	 * @return {array} Array of boolean values initiating the visibility of each
+	 *   column.
+	 *  @private
+	 */
+	_columnsVisiblity: function ( breakpoint )
+	{
+		var dt = this.s.dt;
+		var columns = this.s.columns;
+		var i, ien;
+
+		// Create an array that defines the column ordering based first on the
+		// column's priority, and secondly the column index. This allows the
+		// columns to be removed from the right if the priority matches
+		var order = columns
+			.map( function ( col, idx ) {
+				return {
+					columnIdx: idx,
+					priority: col.priority
+				};
+			} )
+			.sort( function ( a, b ) {
+				if ( a.priority !== b.priority ) {
+					return a.priority - b.priority;
+				}
+				return a.columnIdx - b.columnIdx;
+			} );
+
+		// Class logic - determine which columns are in this breakpoint based
+		// on the classes. If no class control (i.e. `auto`) then `-` is used
+		// to indicate this to the rest of the function
+		var display = $.map( columns, function ( col, i ) {
+			if ( dt.column(i).visible() === false ) {
+				return 'not-visible';
+			}
+			return col.auto && col.minWidth === null ?
+				false :
+				col.auto === true ?
+					'-' :
+					$.inArray( breakpoint, col.includeIn ) !== -1;
+		} );
+
+		// Auto column control - first pass: how much width is taken by the
+		// ones that must be included from the non-auto columns
+		var requiredWidth = 0;
+		for ( i=0, ien=display.length ; i<ien ; i++ ) {
+			if ( display[i] === true ) {
+				requiredWidth += columns[i].minWidth;
+			}
+		}
+
+		// Second pass, use up any remaining width for other columns. For
+		// scrolling tables we need to subtract the width of the scrollbar. It
+		// may not be requires which makes this sub-optimal, but it would
+		// require another full redraw to make complete use of those extra few
+		// pixels
+		var scrolling = dt.settings()[0].oScroll;
+		var bar = scrolling.sY || scrolling.sX ? scrolling.iBarWidth : 0;
+		var widthAvailable = dt.table().container().offsetWidth - bar;
+		var usedWidth = widthAvailable - requiredWidth;
+
+		// Control column needs to always be included. This makes it sub-
+		// optimal in terms of using the available with, but to stop layout
+		// thrashing or overflow. Also we need to account for the control column
+		// width first so we know how much width is available for the other
+		// columns, since the control column might not be the first one shown
+		for ( i=0, ien=display.length ; i<ien ; i++ ) {
+			if ( columns[i].control ) {
+				usedWidth -= columns[i].minWidth;
+			}
+		}
+
+		// Allow columns to be shown (counting by priority and then right to
+		// left) until we run out of room
+		var empty = false;
+		for ( i=0, ien=order.length ; i<ien ; i++ ) {
+			var colIdx = order[i].columnIdx;
+
+			if ( display[colIdx] === '-' && ! columns[colIdx].control && columns[colIdx].minWidth ) {
+				// Once we've found a column that won't fit we don't let any
+				// others display either, or columns might disappear in the
+				// middle of the table
+				if ( empty || usedWidth - columns[colIdx].minWidth < 0 ) {
+					empty = true;
+					display[colIdx] = false;
+				}
+				else {
+					display[colIdx] = true;
+				}
+
+				usedWidth -= columns[colIdx].minWidth;
+			}
+		}
+
+		// Determine if the 'control' column should be shown (if there is one).
+		// This is the case when there is a hidden column (that is not the
+		// control column). The two loops look inefficient here, but they are
+		// trivial and will fly through. We need to know the outcome from the
+		// first , before the action in the second can be taken
+		var showControl = false;
+
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			if ( ! columns[i].control && ! columns[i].never && display[i] === false ) {
+				showControl = true;
+				break;
+			}
+		}
+
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			if ( columns[i].control ) {
+				display[i] = showControl;
+			}
+
+			// Replace not visible string with false from the control column detection above
+			if ( display[i] === 'not-visible' ) {
+				display[i] = false;
+			}
+		}
+
+		// Finally we need to make sure that there is at least one column that
+		// is visible
+		if ( $.inArray( true, display ) === -1 ) {
+			display[0] = true;
+		}
+
+		return display;
+	},
+
+
+	/**
+	 * Create the internal `columns` array with information about the columns
+	 * for the table. This includes determining which breakpoints the column
+	 * will appear in, based upon class names in the column, which makes up the
+	 * vast majority of this method.
+	 *
+	 * @private
+	 */
+	_classLogic: function ()
+	{
+		var that = this;
+		var calc = {};
+		var breakpoints = this.c.breakpoints;
+		var dt = this.s.dt;
+		var columns = dt.columns().eq(0).map( function (i) {
+			var column = this.column(i);
+			var className = column.header().className;
+			var priority = dt.settings()[0].aoColumns[i].responsivePriority;
+
+			if ( priority === undefined ) {
+				var dataPriority = $(column.header()).data('priority');
+
+				priority = dataPriority !== undefined ?
+					dataPriority * 1 :
+					10000;
+			}
+
+			return {
+				className: className,
+				includeIn: [],
+				auto:      false,
+				control:   false,
+				never:     className.match(/\bnever\b/) ? true : false,
+				priority:  priority
+			};
+		} );
+
+		// Simply add a breakpoint to `includeIn` array, ensuring that there are
+		// no duplicates
+		var add = function ( colIdx, name ) {
+			var includeIn = columns[ colIdx ].includeIn;
+
+			if ( $.inArray( name, includeIn ) === -1 ) {
+				includeIn.push( name );
+			}
+		};
+
+		var column = function ( colIdx, name, operator, matched ) {
+			var size, i, ien;
+
+			if ( ! operator ) {
+				columns[ colIdx ].includeIn.push( name );
+			}
+			else if ( operator === 'max-' ) {
+				// Add this breakpoint and all smaller
+				size = that._find( name ).width;
+
+				for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+					if ( breakpoints[i].width <= size ) {
+						add( colIdx, breakpoints[i].name );
+					}
+				}
+			}
+			else if ( operator === 'min-' ) {
+				// Add this breakpoint and all larger
+				size = that._find( name ).width;
+
+				for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+					if ( breakpoints[i].width >= size ) {
+						add( colIdx, breakpoints[i].name );
+					}
+				}
+			}
+			else if ( operator === 'not-' ) {
+				// Add all but this breakpoint
+				for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+					if ( breakpoints[i].name.indexOf( matched ) === -1 ) {
+						add( colIdx, breakpoints[i].name );
+					}
+				}
+			}
+		};
+
+		// Loop over each column and determine if it has a responsive control
+		// class
+		columns.each( function ( col, i ) {
+			var classNames = col.className.split(' ');
+			var hasClass = false;
+
+			// Split the class name up so multiple rules can be applied if needed
+			for ( var k=0, ken=classNames.length ; k<ken ; k++ ) {
+				var className = $.trim( classNames[k] );
+
+				if ( className === 'all' ) {
+					// Include in all
+					hasClass = true;
+					col.includeIn = $.map( breakpoints, function (a) {
+						return a.name;
+					} );
+					return;
+				}
+				else if ( className === 'none' || col.never ) {
+					// Include in none (default) and no auto
+					hasClass = true;
+					return;
+				}
+				else if ( className === 'control' ) {
+					// Special column that is only visible, when one of the other
+					// columns is hidden. This is used for the details control
+					hasClass = true;
+					col.control = true;
+					return;
+				}
+
+				$.each( breakpoints, function ( j, breakpoint ) {
+					// Does this column have a class that matches this breakpoint?
+					var brokenPoint = breakpoint.name.split('-');
+					var re = new RegExp( '(min\\-|max\\-|not\\-)?('+brokenPoint[0]+')(\\-[_a-zA-Z0-9])?' );
+					var match = className.match( re );
+
+					if ( match ) {
+						hasClass = true;
+
+						if ( match[2] === brokenPoint[0] && match[3] === '-'+brokenPoint[1] ) {
+							// Class name matches breakpoint name fully
+							column( i, breakpoint.name, match[1], match[2]+match[3] );
+						}
+						else if ( match[2] === brokenPoint[0] && ! match[3] ) {
+							// Class name matched primary breakpoint name with no qualifier
+							column( i, breakpoint.name, match[1], match[2] );
+						}
+					}
+				} );
+			}
+
+			// If there was no control class, then automatic sizing is used
+			if ( ! hasClass ) {
+				col.auto = true;
+			}
+		} );
+
+		this.s.columns = columns;
+	},
+
+
+	/**
+	 * Show the details for the child row
+	 *
+	 * @param  {DataTables.Api} row    API instance for the row
+	 * @param  {boolean}        update Update flag
+	 * @private
+	 */
+	_detailsDisplay: function ( row, update )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var details = this.c.details;
+
+		if ( details && details.type !== false ) {
+			var res = details.display( row, update, function () {
+				return details.renderer(
+					dt, row[0], that._detailsObj(row[0])
+				);
+			} );
+
+			if ( res === true || res === false ) {
+				$(dt.table().node()).triggerHandler( 'responsive-display.dt', [dt, row, res, update] );
+			}
+		}
+	},
+
+
+	/**
+	 * Initialisation for the details handler
+	 *
+	 * @private
+	 */
+	_detailsInit: function ()
+	{
+		var that    = this;
+		var dt      = this.s.dt;
+		var details = this.c.details;
+
+		// The inline type always uses the first child as the target
+		if ( details.type === 'inline' ) {
+			details.target = 'td:first-child, th:first-child';
+		}
+
+		// Keyboard accessibility
+		dt.on( 'draw.dtr', function () {
+			that._tabIndexes();
+		} );
+		that._tabIndexes(); // Initial draw has already happened
+
+		$( dt.table().body() ).on( 'keyup.dtr', 'td, th', function (e) {
+			if ( e.keyCode === 13 && $(this).data('dtr-keyboard') ) {
+				$(this).click();
+			}
+		} );
+
+		// type.target can be a string jQuery selector or a column index
+		var target   = details.target;
+		var selector = typeof target === 'string' ? target : 'td, th';
+
+		// Click handler to show / hide the details rows when they are available
+		$( dt.table().body() )
+			.on( 'click.dtr mousedown.dtr mouseup.dtr', selector, function (e) {
+				// If the table is not collapsed (i.e. there is no hidden columns)
+				// then take no action
+				if ( ! $(dt.table().node()).hasClass('collapsed' ) ) {
+					return;
+				}
+
+				// Check that the row is actually a DataTable's controlled node
+				if ( $.inArray( $(this).closest('tr').get(0), dt.rows().nodes().toArray() ) === -1 ) {
+					return;
+				}
+
+				// For column index, we determine if we should act or not in the
+				// handler - otherwise it is already okay
+				if ( typeof target === 'number' ) {
+					var targetIdx = target < 0 ?
+						dt.columns().eq(0).length + target :
+						target;
+
+					if ( dt.cell( this ).index().column !== targetIdx ) {
+						return;
+					}
+				}
+
+				// $().closest() includes itself in its check
+				var row = dt.row( $(this).closest('tr') );
+
+				// Check event type to do an action
+				if ( e.type === 'click' ) {
+					// The renderer is given as a function so the caller can execute it
+					// only when they need (i.e. if hiding there is no point is running
+					// the renderer)
+					that._detailsDisplay( row, false );
+				}
+				else if ( e.type === 'mousedown' ) {
+					// For mouse users, prevent the focus ring from showing
+					$(this).css('outline', 'none');
+				}
+				else if ( e.type === 'mouseup' ) {
+					// And then re-allow at the end of the click
+					$(this).blur().css('outline', '');
+				}
+			} );
+	},
+
+
+	/**
+	 * Get the details to pass to a renderer for a row
+	 * @param  {int} rowIdx Row index
+	 * @private
+	 */
+	_detailsObj: function ( rowIdx )
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		return $.map( this.s.columns, function( col, i ) {
+			// Never and control columns should not be passed to the renderer
+			if ( col.never || col.control ) {
+				return;
+			}
+
+			return {
+				title:       dt.settings()[0].aoColumns[ i ].sTitle,
+				data:        dt.cell( rowIdx, i ).render( that.c.orthogonal ),
+				hidden:      dt.column( i ).visible() && !that.s.current[ i ],
+				columnIndex: i,
+				rowIndex:    rowIdx
+			};
+		} );
+	},
+
+
+	/**
+	 * Find a breakpoint object from a name
+	 *
+	 * @param  {string} name Breakpoint name to find
+	 * @return {object}      Breakpoint description object
+	 * @private
+	 */
+	_find: function ( name )
+	{
+		var breakpoints = this.c.breakpoints;
+
+		for ( var i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+			if ( breakpoints[i].name === name ) {
+				return breakpoints[i];
+			}
+		}
+	},
+
+
+	/**
+	 * Re-create the contents of the child rows as the display has changed in
+	 * some way.
+	 *
+	 * @private
+	 */
+	_redrawChildren: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		dt.rows( {page: 'current'} ).iterator( 'row', function ( settings, idx ) {
+			var row = dt.row( idx );
+
+			that._detailsDisplay( dt.row( idx ), true );
+		} );
+	},
+
+
+	/**
+	 * Alter the table display for a resized viewport. This involves first
+	 * determining what breakpoint the window currently is in, getting the
+	 * column visibilities to apply and then setting them.
+	 *
+	 * @private
+	 */
+	_resize: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var width = $(window).width();
+		var breakpoints = this.c.breakpoints;
+		var breakpoint = breakpoints[0].name;
+		var columns = this.s.columns;
+		var i, ien;
+		var oldVis = this.s.current.slice();
+
+		// Determine what breakpoint we are currently at
+		for ( i=breakpoints.length-1 ; i>=0 ; i-- ) {
+			if ( width <= breakpoints[i].width ) {
+				breakpoint = breakpoints[i].name;
+				break;
+			}
+		}
+		
+		// Show the columns for that break point
+		var columnsVis = this._columnsVisiblity( breakpoint );
+		this.s.current = columnsVis;
+
+		// Set the class before the column visibility is changed so event
+		// listeners know what the state is. Need to determine if there are
+		// any columns that are not visible but can be shown
+		var collapsedClass = false;
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			if ( columnsVis[i] === false && ! columns[i].never && ! columns[i].control && ! dt.column(i).visible() === false ) {
+				collapsedClass = true;
+				break;
+			}
+		}
+
+		$( dt.table().node() ).toggleClass( 'collapsed', collapsedClass );
+
+		var changed = false;
+		var visible = 0;
+
+		dt.columns().eq(0).each( function ( colIdx, i ) {
+			if ( columnsVis[i] === true ) {
+				visible++;
+			}
+
+			if ( columnsVis[i] !== oldVis[i] ) {
+				changed = true;
+				that._setColumnVis( colIdx, columnsVis[i] );
+			}
+		} );
+
+		if ( changed ) {
+			this._redrawChildren();
+
+			// Inform listeners of the change
+			$(dt.table().node()).trigger( 'responsive-resize.dt', [dt, this.s.current] );
+
+			// If no records, update the "No records" display element
+			if ( dt.page.info().recordsDisplay === 0 ) {
+				$('td', dt.table().body()).eq(0).attr('colspan', visible);
+			}
+		}
+	},
+
+
+	/**
+	 * Determine the width of each column in the table so the auto column hiding
+	 * has that information to work with. This method is never going to be 100%
+	 * perfect since column widths can change slightly per page, but without
+	 * seriously compromising performance this is quite effective.
+	 *
+	 * @private
+	 */
+	_resizeAuto: function ()
+	{
+		var dt = this.s.dt;
+		var columns = this.s.columns;
+
+		// Are we allowed to do auto sizing?
+		if ( ! this.c.auto ) {
+			return;
+		}
+
+		// Are there any columns that actually need auto-sizing, or do they all
+		// have classes defined
+		if ( $.inArray( true, $.map( columns, function (c) { return c.auto; } ) ) === -1 ) {
+			return;
+		}
+
+		// Need to restore all children. They will be reinstated by a re-render
+		if ( ! $.isEmptyObject( _childNodeStore ) ) {
+			$.each( _childNodeStore, function ( key ) {
+				var idx = key.split('-');
+
+				_childNodesRestore( dt, idx[0]*1, idx[1]*1 );
+			} );
+		}
+
+		// Clone the table with the current data in it
+		var tableWidth   = dt.table().node().offsetWidth;
+		var columnWidths = dt.columns;
+		var clonedTable  = dt.table().node().cloneNode( false );
+		var clonedHeader = $( dt.table().header().cloneNode( false ) ).appendTo( clonedTable );
+		var clonedBody   = $( dt.table().body() ).clone( false, false ).empty().appendTo( clonedTable ); // use jQuery because of IE8
+
+		// Header
+		var headerCells = dt.columns()
+			.header()
+			.filter( function (idx) {
+				return dt.column(idx).visible();
+			} )
+			.to$()
+			.clone( false )
+			.css( 'display', 'table-cell' )
+			.css( 'min-width', 0 );
+
+		// Body rows - we don't need to take account of DataTables' column
+		// visibility since we implement our own here (hence the `display` set)
+		$(clonedBody)
+			.append( $(dt.rows( { page: 'current' } ).nodes()).clone( false ) )
+			.find( 'th, td' ).css( 'display', '' );
+
+		// Footer
+		var footer = dt.table().footer();
+		if ( footer ) {
+			var clonedFooter = $( footer.cloneNode( false ) ).appendTo( clonedTable );
+			var footerCells = dt.columns()
+				.footer()
+				.filter( function (idx) {
+					return dt.column(idx).visible();
+				} )
+				.to$()
+				.clone( false )
+				.css( 'display', 'table-cell' );
+
+			$('<tr/>')
+				.append( footerCells )
+				.appendTo( clonedFooter );
+		}
+
+		$('<tr/>')
+			.append( headerCells )
+			.appendTo( clonedHeader );
+
+		// In the inline case extra padding is applied to the first column to
+		// give space for the show / hide icon. We need to use this in the
+		// calculation
+		if ( this.c.details.type === 'inline' ) {
+			$(clonedTable).addClass( 'dtr-inline collapsed' );
+		}
+		
+		// It is unsafe to insert elements with the same name into the DOM
+		// multiple times. For example, cloning and inserting a checked radio
+		// clears the chcecked state of the original radio.
+		$( clonedTable ).find( '[name]' ).removeAttr( 'name' );
+
+		// A position absolute table would take the table out of the flow of
+		// our container element, bypassing the height and width (Scroller)
+		$( clonedTable ).css( 'position', 'relative' )
+		
+		var inserted = $('<div/>')
+			.css( {
+				width: 1,
+				height: 1,
+				overflow: 'hidden',
+				clear: 'both'
+			} )
+			.append( clonedTable );
+
+		inserted.insertBefore( dt.table().node() );
+
+		// The cloned header now contains the smallest that each column can be
+		headerCells.each( function (i) {
+			var idx = dt.column.index( 'fromVisible', i );
+			columns[ idx ].minWidth =  this.offsetWidth || 0;
+		} );
+
+		inserted.remove();
+	},
+
+	/**
+	 * Set a column's visibility.
+	 *
+	 * We don't use DataTables' column visibility controls in order to ensure
+	 * that column visibility can Responsive can no-exist. Since only IE8+ is
+	 * supported (and all evergreen browsers of course) the control of the
+	 * display attribute works well.
+	 *
+	 * @param {integer} col      Column index
+	 * @param {boolean} showHide Show or hide (true or false)
+	 * @private
+	 */
+	_setColumnVis: function ( col, showHide )
+	{
+		var dt = this.s.dt;
+		var display = showHide ? '' : 'none'; // empty string will remove the attr
+
+		$( dt.column( col ).header() ).css( 'display', display );
+		$( dt.column( col ).footer() ).css( 'display', display );
+		dt.column( col ).nodes().to$().css( 'display', display );
+
+		// If the are child nodes stored, we might need to reinsert them
+		if ( ! $.isEmptyObject( _childNodeStore ) ) {
+			dt.cells( null, col ).indexes().each( function (idx) {
+				_childNodesRestore( dt, idx.row, idx.column );
+			} );
+		}
+	},
+
+
+	/**
+	 * Update the cell tab indexes for keyboard accessibility. This is called on
+	 * every table draw - that is potentially inefficient, but also the least
+	 * complex option given that column visibility can change on the fly. Its a
+	 * shame user-focus was removed from CSS 3 UI, as it would have solved this
+	 * issue with a single CSS statement.
+	 *
+	 * @private
+	 */
+	_tabIndexes: function ()
+	{
+		var dt = this.s.dt;
+		var cells = dt.cells( { page: 'current' } ).nodes().to$();
+		var ctx = dt.settings()[0];
+		var target = this.c.details.target;
+
+		cells.filter( '[data-dtr-keyboard]' ).removeData( '[data-dtr-keyboard]' );
+
+		if ( typeof target === 'number' ) {
+			dt.cells( null, target, { page: 'current' } ).nodes().to$()
+				.attr( 'tabIndex', ctx.iTabIndex )
+				.data( 'dtr-keyboard', 1 );
+		}
+		else {
+			// This is a bit of a hack - we need to limit the selected nodes to just
+			// those of this table
+			if ( target === 'td:first-child, th:first-child' ) {
+				target = '>td:first-child, >th:first-child';
+			}
+
+			$( target, dt.rows( { page: 'current' } ).nodes() )
+				.attr( 'tabIndex', ctx.iTabIndex )
+				.data( 'dtr-keyboard', 1 );
+		}
+	}
+} );
+
+
+/**
+ * List of default breakpoints. Each item in the array is an object with two
+ * properties:
+ *
+ * * `name` - the breakpoint name.
+ * * `width` - the breakpoint width
+ *
+ * @name Responsive.breakpoints
+ * @static
+ */
+Responsive.breakpoints = [
+	{ name: 'desktop',  width: Infinity },
+	{ name: 'tablet-l', width: 1024 },
+	{ name: 'tablet-p', width: 768 },
+	{ name: 'mobile-l', width: 480 },
+	{ name: 'mobile-p', width: 320 }
+];
+
+
+/**
+ * Display methods - functions which define how the hidden data should be shown
+ * in the table.
+ *
+ * @namespace
+ * @name Responsive.defaults
+ * @static
+ */
+Responsive.display = {
+	childRow: function ( row, update, render ) {
+		if ( update ) {
+			if ( $(row.node()).hasClass('parent') ) {
+				row.child( render(), 'child' ).show();
+
+				return true;
+			}
+		}
+		else {
+			if ( ! row.child.isShown()  ) {
+				row.child( render(), 'child' ).show();
+				$( row.node() ).addClass( 'parent' );
+
+				return true;
+			}
+			else {
+				row.child( false );
+				$( row.node() ).removeClass( 'parent' );
+
+				return false;
+			}
+		}
+	},
+
+	childRowImmediate: function ( row, update, render ) {
+		if ( (! update && row.child.isShown()) || ! row.responsive.hasHidden() ) {
+			// User interaction and the row is show, or nothing to show
+			row.child( false );
+			$( row.node() ).removeClass( 'parent' );
+
+			return false;
+		}
+		else {
+			// Display
+			row.child( render(), 'child' ).show();
+			$( row.node() ).addClass( 'parent' );
+
+			return true;
+		}
+	},
+
+	// This is a wrapper so the modal options for Bootstrap and jQuery UI can
+	// have options passed into them. This specific one doesn't need to be a
+	// function but it is for consistency in the `modal` name
+	modal: function ( options ) {
+		return function ( row, update, render ) {
+			if ( ! update ) {
+				// Show a modal
+				var close = function () {
+					modal.remove(); // will tidy events for us
+					$(document).off( 'keypress.dtr' );
+				};
+
+				var modal = $('<div class="dtr-modal"/>')
+					.append( $('<div class="dtr-modal-display"/>')
+						.append( $('<div class="dtr-modal-content"/>')
+							.append( render() )
+						)
+						.append( $('<div class="dtr-modal-close">&times;</div>' )
+							.click( function () {
+								close();
+							} )
+						)
+					)
+					.append( $('<div class="dtr-modal-background"/>')
+						.click( function () {
+							close();
+						} )
+					)
+					.appendTo( 'body' );
+
+				$(document).on( 'keyup.dtr', function (e) {
+					if ( e.keyCode === 27 ) {
+						e.stopPropagation();
+
+						close();
+					}
+				} );
+			}
+			else {
+				$('div.dtr-modal-content')
+					.empty()
+					.append( render() );
+			}
+
+			if ( options && options.header ) {
+				$('div.dtr-modal-content').prepend(
+					'<h2>'+options.header( row )+'</h2>'
+				);
+			}
+		};
+	}
+};
+
+
+var _childNodeStore = {};
+
+function _childNodes( dt, row, col ) {
+	var name = row+'-'+col;
+
+	if ( _childNodeStore[ name ] ) {
+		return _childNodeStore[ name ];
+	}
+
+	// https://jsperf.com/childnodes-array-slice-vs-loop
+	var nodes = [];
+	var children = dt.cell( row, col ).node().childNodes;
+	for ( var i=0, ien=children.length ; i<ien ; i++ ) {
+		nodes.push( children[i] );
+	}
+
+	_childNodeStore[ name ] = nodes;
+
+	return nodes;
+}
+
+function _childNodesRestore( dt, row, col ) {
+	var name = row+'-'+col;
+
+	if ( ! _childNodeStore[ name ] ) {
+		return;
+	}
+
+	var node = dt.cell( row, col ).node();
+	var store = _childNodeStore[ name ];
+	var parent = store[0].parentNode;
+	var parentChildren = parent.childNodes;
+	var a = [];
+
+	for ( var i=0, ien=parentChildren.length ; i<ien ; i++ ) {
+		a.push( parentChildren[i] );
+	}
+
+	for ( var j=0, jen=a.length ; j<jen ; j++ ) {
+		node.appendChild( a[j] );
+	}
+
+	_childNodeStore[ name ] = undefined;
+}
+
+
+/**
+ * Display methods - functions which define how the hidden data should be shown
+ * in the table.
+ *
+ * @namespace
+ * @name Responsive.defaults
+ * @static
+ */
+Responsive.renderer = {
+	listHiddenNodes: function () {
+		return function ( api, rowIdx, columns ) {
+			var ul = $('<ul data-dtr-index="'+rowIdx+'" class="dtr-details"/>');
+			var found = false;
+
+			var data = $.each( columns, function ( i, col ) {
+				if ( col.hidden ) {
+					$(
+						'<li data-dtr-index="'+col.columnIndex+'" data-dt-row="'+col.rowIndex+'" data-dt-column="'+col.columnIndex+'">'+
+							'<span class="dtr-title">'+
+								col.title+
+							'</span> '+
+						'</li>'
+					)
+						.append( $('<span class="dtr-data"/>').append( _childNodes( api, col.rowIndex, col.columnIndex ) ) )// api.cell( col.rowIndex, col.columnIndex ).node().childNodes ) )
+						.appendTo( ul );
+
+					found = true;
+				}
+			} );
+
+			return found ?
+				ul :
+				false;
+		};
+	},
+
+	listHidden: function () {
+		return function ( api, rowIdx, columns ) {
+			var data = $.map( columns, function ( col ) {
+				return col.hidden ?
+					'<li data-dtr-index="'+col.columnIndex+'" data-dt-row="'+col.rowIndex+'" data-dt-column="'+col.columnIndex+'">'+
+						'<span class="dtr-title">'+
+							col.title+
+						'</span> '+
+						'<span class="dtr-data">'+
+							col.data+
+						'</span>'+
+					'</li>' :
+					'';
+			} ).join('');
+
+			return data ?
+				$('<ul data-dtr-index="'+rowIdx+'" class="dtr-details"/>').append( data ) :
+				false;
+		}
+	},
+
+	tableAll: function ( options ) {
+		options = $.extend( {
+			tableClass: ''
+		}, options );
+
+		return function ( api, rowIdx, columns ) {
+			var data = $.map( columns, function ( col ) {
+				return '<tr data-dt-row="'+col.rowIndex+'" data-dt-column="'+col.columnIndex+'">'+
+						'<td>'+col.title+':'+'</td> '+
+						'<td>'+col.data+'</td>'+
+					'</tr>';
+			} ).join('');
+
+			return $('<table class="'+options.tableClass+' dtr-details" width="100%"/>').append( data );
+		}
+	}
+};
+
+/**
+ * Responsive default settings for initialisation
+ *
+ * @namespace
+ * @name Responsive.defaults
+ * @static
+ */
+Responsive.defaults = {
+	/**
+	 * List of breakpoints for the instance. Note that this means that each
+	 * instance can have its own breakpoints. Additionally, the breakpoints
+	 * cannot be changed once an instance has been creased.
+	 *
+	 * @type {Array}
+	 * @default Takes the value of `Responsive.breakpoints`
+	 */
+	breakpoints: Responsive.breakpoints,
+
+	/**
+	 * Enable / disable auto hiding calculations. It can help to increase
+	 * performance slightly if you disable this option, but all columns would
+	 * need to have breakpoint classes assigned to them
+	 *
+	 * @type {Boolean}
+	 * @default  `true`
+	 */
+	auto: true,
+
+	/**
+	 * Details control. If given as a string value, the `type` property of the
+	 * default object is set to that value, and the defaults used for the rest
+	 * of the object - this is for ease of implementation.
+	 *
+	 * The object consists of the following properties:
+	 *
+	 * * `display` - A function that is used to show and hide the hidden details
+	 * * `renderer` - function that is called for display of the child row data.
+	 *   The default function will show the data from the hidden columns
+	 * * `target` - Used as the selector for what objects to attach the child
+	 *   open / close to
+	 * * `type` - `false` to disable the details display, `inline` or `column`
+	 *   for the two control types
+	 *
+	 * @type {Object|string}
+	 */
+	details: {
+		display: Responsive.display.childRow,
+
+		renderer: Responsive.renderer.listHidden(),
+
+		target: 0,
+
+		type: 'inline'
+	},
+
+	/**
+	 * Orthogonal data request option. This is used to define the data type
+	 * requested when Responsive gets the data to show in the child row.
+	 *
+	 * @type {String}
+	 */
+	orthogonal: 'display'
+};
+
+
+/*
+ * API
+ */
+var Api = $.fn.dataTable.Api;
+
+// Doesn't do anything - work around for a bug in DT... Not documented
+Api.register( 'responsive()', function () {
+	return this;
+} );
+
+Api.register( 'responsive.index()', function ( li ) {
+	li = $(li);
+
+	return {
+		column: li.data('dtr-index'),
+		row:    li.parent().data('dtr-index')
+	};
+} );
+
+Api.register( 'responsive.rebuild()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._responsive ) {
+			ctx._responsive._classLogic();
+		}
+	} );
+} );
+
+Api.register( 'responsive.recalc()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx._responsive ) {
+			ctx._responsive._resizeAuto();
+			ctx._responsive._resize();
+		}
+	} );
+} );
+
+Api.register( 'responsive.hasHidden()', function () {
+	var ctx = this.context[0];
+
+	return ctx._responsive ?
+		$.inArray( false, ctx._responsive.s.current ) !== -1 :
+		false;
+} );
+
+Api.registerPlural( 'columns().responsiveHidden()', 'column().responsiveHidden()', function () {
+	return this.iterator( 'column', function ( settings, column ) {
+		return settings._responsive ?
+			settings._responsive.s.current[ column ] :
+			false;
+	}, 1 );
+} );
+
+
+/**
+ * Version information
+ *
+ * @name Responsive.version
+ * @static
+ */
+Responsive.version = '2.2.3';
+
+
+$.fn.dataTable.Responsive = Responsive;
+$.fn.DataTable.Responsive = Responsive;
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.dtr', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	if ( $(settings.nTable).hasClass( 'responsive' ) ||
+		 $(settings.nTable).hasClass( 'dt-responsive' ) ||
+		 settings.oInit.responsive ||
+		 DataTable.defaults.responsive
+	) {
+		var init = settings.oInit.responsive;
+
+		if ( init !== false ) {
+			new Responsive( settings, $.isPlainObject( init ) ? init : {}  );
+		}
+	}
+} );
+
+
+return Responsive;
+}));
+
+
+/*! RowGroup 1.1.1
+ * ©2017-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     RowGroup
+ * @description RowGrouping for DataTables
+ * @version     1.1.1
+ * @file        dataTables.rowGroup.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     datatables.net
+ * @copyright   Copyright 2017-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+var RowGroup = function ( dt, opts ) {
+	// Sanity check that we are using DataTables 1.10 or newer
+	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) {
+		throw 'RowGroup requires DataTables 1.10.8 or newer';
+	}
+
+	// User and defaults configuration object
+	this.c = $.extend( true, {},
+		DataTable.defaults.rowGroup,
+		RowGroup.defaults,
+		opts
+	);
+
+	// Internal settings
+	this.s = {
+		dt: new DataTable.Api( dt )
+	};
+
+	// DOM items
+	this.dom = {
+
+	};
+
+	// Check if row grouping has already been initialised on this table
+	var settings = this.s.dt.settings()[0];
+	var existing = settings.rowGroup;
+	if ( existing ) {
+		return existing;
+	}
+
+	settings.rowGroup = this;
+	this._constructor();
+};
+
+
+$.extend( RowGroup.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * API methods for DataTables API interface
+	 */
+
+	/**
+	 * Get/set the grouping data source - need to call draw after this is
+	 * executed as a setter
+	 * @returns string~RowGroup
+	 */
+	dataSrc: function ( val )
+	{
+		if ( val === undefined ) {
+			return this.c.dataSrc;
+		}
+
+		var dt = this.s.dt;
+
+		this.c.dataSrc = val;
+
+		$(dt.table().node()).triggerHandler( 'rowgroup-datasrc.dt', [ dt, val ] );
+
+		return this;
+	},
+
+	/**
+	 * Disable - need to call draw after this is executed
+	 * @returns RowGroup
+	 */
+	disable: function ()
+	{
+		this.c.enable = false;
+		return this;
+	},
+
+	/**
+	 * Enable - need to call draw after this is executed
+	 * @returns RowGroup
+	 */
+	enable: function ( flag )
+	{
+		if ( flag === false ) {
+			return this.disable();
+		}
+
+		this.c.enable = true;
+		return this;
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		dt.on( 'draw.dtrg', function () {
+			if ( that.c.enable ) {
+				that._draw();
+			}
+		} );
+
+		dt.on( 'column-visibility.dt.dtrg responsive-resize.dt.dtrg', function () {
+			that._adjustColspan();
+		} );
+
+		dt.on( 'destroy', function () {
+			dt.off( '.dtrg' );
+		} );
+
+		dt.on('responsive-resize.dt', function () {
+			that._adjustColspan();
+		})
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Adjust column span when column visibility changes
+	 * @private
+	 */
+	_adjustColspan: function ()
+	{
+		$( 'tr.'+this.c.className, this.s.dt.table().body() ).find('td')
+			.attr( 'colspan', this._colspan() );
+	},
+
+	/**
+	 * Get the number of columns that a grouping row should span
+	 * @private
+	 */
+	_colspan: function ()
+	{
+		return this.s.dt.columns().visible().reduce( function (a, b) {
+			return a + b;
+		}, 0 );
+	},
+
+
+	/**
+	 * Update function that is called whenever we need to draw the grouping rows.
+	 * This is basically a bootstrap for the self iterative _group and _groupDisplay
+	 * methods
+	 * @private
+	 */
+	_draw: function ()
+	{
+		var dt = this.s.dt;
+		var groupedRows = this._group( 0, dt.rows( { page: 'current' } ).indexes() );
+
+		this._groupDisplay( 0, groupedRows );
+	},
+
+	/**
+	 * Get the grouping information from a data set (index) of rows
+	 * @param {number} level Nesting level
+	 * @param {DataTables.Api} rows API of the rows to consider for this group
+	 * @returns {object[]} Nested grouping information - it is structured like this:
+	 *	{
+	 *		dataPoint: 'Edinburgh',
+	 *		rows: [ 1,2,3,4,5,6,7 ],
+	 *		children: [ {
+	 *			dataPoint: 'developer'
+	 *			rows: [ 1, 2, 3 ]
+	 *		},
+	 *		{
+	 *			dataPoint: 'support',
+	 *			rows: [ 4, 5, 6, 7 ]
+	 *		} ]
+	 *	}
+	 * @private
+	 */
+	_group: function ( level, rows ) {
+		var fns = $.isArray( this.c.dataSrc ) ? this.c.dataSrc : [ this.c.dataSrc ];
+		var fn = DataTable.ext.oApi._fnGetObjectDataFn( fns[ level ] );
+		var dt = this.s.dt;
+		var group, last;
+		var data = [];
+		var that = this;
+
+		for ( var i=0, ien=rows.length ; i<ien ; i++ ) {
+			var rowIndex = rows[i];
+			var rowData = dt.row( rowIndex ).data();
+			var group = fn( rowData );
+
+			if ( group === null || group === undefined ) {
+				group = that.c.emptyDataGroup;
+			}
+			
+			if ( last === undefined || group !== last ) {
+				data.push( {
+					dataPoint: group,
+					rows: []
+				} );
+
+				last = group;
+			}
+
+			data[ data.length-1 ].rows.push( rowIndex );
+		}
+
+		if ( fns[ level+1 ] !== undefined ) {
+			for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+				data[i].children = this._group( level+1, data[i].rows );
+			}
+		}
+
+		return data;
+	},
+
+	/**
+	 * Row group display - insert the rows into the document
+	 * @param {number} level Nesting level
+	 * @param {object[]} groups Takes the nested array from `_group`
+	 * @private
+	 */
+	_groupDisplay: function ( level, groups )
+	{
+		var dt = this.s.dt;
+		var display;
+	
+		for ( var i=0, ien=groups.length ; i<ien ; i++ ) {
+			var group = groups[i];
+			var groupName = group.dataPoint;
+			var row;
+			var rows = group.rows;
+
+			if ( this.c.startRender ) {
+				display = this.c.startRender.call( this, dt.rows(rows), groupName, level );
+				row = this._rowWrap( display, this.c.startClassName, level );
+
+				if ( row ) {
+					row.insertBefore( dt.row( rows[0] ).node() );
+				}
+			}
+
+			if ( this.c.endRender ) {
+				display = this.c.endRender.call( this, dt.rows(rows), groupName, level );
+				row = this._rowWrap( display, this.c.endClassName, level );
+
+				if ( row ) {
+					row.insertAfter( dt.row( rows[ rows.length-1 ] ).node() );
+				}
+			}
+
+			if ( group.children ) {
+				this._groupDisplay( level+1, group.children );
+			}
+		}
+	},
+
+	/**
+	 * Take a rendered value from an end user and make it suitable for display
+	 * as a row, by wrapping it in a row, or detecting that it is a row.
+	 * @param {node|jQuery|string} display Display value
+	 * @param {string} className Class to add to the row
+	 * @param {array} group
+	 * @param {number} group level
+	 * @private
+	 */
+	_rowWrap: function ( display, className, level )
+	{
+		var row;
+		
+		if ( display === null || display === '' ) {
+			display = this.c.emptyDataGroup;
+		}
+
+		if ( display === undefined || display === null ) {
+			return null;
+		}
+		
+		if ( typeof display === 'object' && display.nodeName && display.nodeName.toLowerCase() === 'tr') {
+			row = $(display);
+		}
+		else if (display instanceof $ && display.length && display[0].nodeName.toLowerCase() === 'tr') {
+			row = display;
+		}
+		else {
+			row = $('<tr/>')
+				.append(
+					$('<td/>')
+						.attr( 'colspan', this._colspan() )
+						.append( display  )
+				);
+		}
+
+		return row
+			.addClass( this.c.className )
+			.addClass( className )
+			.addClass( 'dtrg-level-'+level );
+	}
+} );
+
+
+/**
+ * RowGroup default settings for initialisation
+ *
+ * @namespace
+ * @name RowGroup.defaults
+ * @static
+ */
+RowGroup.defaults = {
+	/**
+	 * Class to apply to grouping rows - applied to both the start and
+	 * end grouping rows.
+	 * @type string
+	 */
+	className: 'dtrg-group',
+
+	/**
+	 * Data property from which to read the grouping information
+	 * @type string|integer|array
+	 */
+	dataSrc: 0,
+
+	/**
+	 * Text to show if no data is found for a group
+	 * @type string
+	 */
+	emptyDataGroup: 'No group',
+
+	/**
+	 * Initial enablement state
+	 * @boolean
+	 */
+	enable: true,
+
+	/**
+	 * Class name to give to the end grouping row
+	 * @type string
+	 */
+	endClassName: 'dtrg-end',
+
+	/**
+	 * End grouping label function
+	 * @function
+	 */
+	endRender: null,
+
+	/**
+	 * Class name to give to the start grouping row
+	 * @type string
+	 */
+	startClassName: 'dtrg-start',
+
+	/**
+	 * Start grouping label function
+	 * @function
+	 */
+	startRender: function ( rows, group ) {
+		return group;
+	}
+};
+
+
+RowGroup.version = "1.1.1";
+
+
+$.fn.dataTable.RowGroup = RowGroup;
+$.fn.DataTable.RowGroup = RowGroup;
+
+
+DataTable.Api.register( 'rowGroup()', function () {
+	return this;
+} );
+
+DataTable.Api.register( 'rowGroup().disable()', function () {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.rowGroup ) {
+			ctx.rowGroup.enable( false );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'rowGroup().enable()', function ( opts ) {
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.rowGroup ) {
+			ctx.rowGroup.enable( opts === undefined ? true : opts );
+		}
+	} );
+} );
+
+DataTable.Api.register( 'rowGroup().dataSrc()', function ( val ) {
+	if ( val === undefined ) {
+		return this.context[0].rowGroup.dataSrc();
+	}
+
+	return this.iterator( 'table', function (ctx) {
+		if ( ctx.rowGroup ) {
+			ctx.rowGroup.dataSrc( val );
+		}
+	} );
+} );
+
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.dtrg', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.rowGroup;
+	var defaults = DataTable.defaults.rowGroup;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, defaults, init );
+
+		if ( init !== false ) {
+			new RowGroup( settings, opts  );
+		}
+	}
+} );
+
+
+return RowGroup;
+
+}));
+
+
+/*! RowReorder 1.2.6
+ * 2015-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     RowReorder
+ * @description Row reordering extension for DataTables
+ * @version     1.2.6
+ * @file        dataTables.rowReorder.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2015-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/**
+ * RowReorder provides the ability in DataTables to click and drag rows to
+ * reorder them. When a row is dropped the data for the rows effected will be
+ * updated to reflect the change. Normally this data point should also be the
+ * column being sorted upon in the DataTable but this does not need to be the
+ * case. RowReorder implements a "data swap" method - so the rows being
+ * reordered take the value of the data point from the row that used to occupy
+ * the row's new position.
+ *
+ * Initialisation is done by either:
+ *
+ * * `rowReorder` parameter in the DataTable initialisation object
+ * * `new $.fn.dataTable.RowReorder( table, opts )` after DataTables
+ *   initialisation.
+ * 
+ *  @class
+ *  @param {object} settings DataTables settings object for the host table
+ *  @param {object} [opts] Configuration options
+ *  @requires jQuery 1.7+
+ *  @requires DataTables 1.10.7+
+ */
+var RowReorder = function ( dt, opts ) {
+	// Sanity check that we are using DataTables 1.10 or newer
+	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) {
+		throw 'DataTables RowReorder requires DataTables 1.10.8 or newer';
+	}
+
+	// User and defaults configuration object
+	this.c = $.extend( true, {},
+		DataTable.defaults.rowReorder,
+		RowReorder.defaults,
+		opts
+	);
+
+	// Internal settings
+	this.s = {
+		/** @type {integer} Scroll body top cache */
+		bodyTop: null,
+
+		/** @type {DataTable.Api} DataTables' API instance */
+		dt: new DataTable.Api( dt ),
+
+		/** @type {function} Data fetch function */
+		getDataFn: DataTable.ext.oApi._fnGetObjectDataFn( this.c.dataSrc ),
+
+		/** @type {array} Pixel positions for row insertion calculation */
+		middles: null,
+
+		/** @type {Object} Cached dimension information for use in the mouse move event handler */
+		scroll: {},
+
+		/** @type {integer} Interval object used for smooth scrolling */
+		scrollInterval: null,
+
+		/** @type {function} Data set function */
+		setDataFn: DataTable.ext.oApi._fnSetObjectDataFn( this.c.dataSrc ),
+
+		/** @type {Object} Mouse down information */
+		start: {
+			top: 0,
+			left: 0,
+			offsetTop: 0,
+			offsetLeft: 0,
+			nodes: []
+		},
+
+		/** @type {integer} Window height cached value */
+		windowHeight: 0,
+
+		/** @type {integer} Document outer height cached value */
+		documentOuterHeight: 0,
+
+		/** @type {integer} DOM clone outer height cached value */
+		domCloneOuterHeight: 0
+	};
+
+	// DOM items
+	this.dom = {
+		/** @type {jQuery} Cloned row being moved around */
+		clone: null,
+
+		/** @type {jQuery} DataTables scrolling container */
+		dtScroll: $('div.dataTables_scrollBody', this.s.dt.table().container())
+	};
+
+	// Check if row reorder has already been initialised on this table
+	var settings = this.s.dt.settings()[0];
+	var exisiting = settings.rowreorder;
+	if ( exisiting ) {
+		return exisiting;
+	}
+
+	settings.rowreorder = this;
+	this._constructor();
+};
+
+
+$.extend( RowReorder.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Initialise the RowReorder instance
+	 *
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var table = $( dt.table().node() );
+
+		// Need to be able to calculate the row positions relative to the table
+		if ( table.css('position') === 'static' ) {
+			table.css( 'position', 'relative' );
+		}
+
+		// listen for mouse down on the target column - we have to implement
+		// this rather than using HTML5 drag and drop as drag and drop doesn't
+		// appear to work on table rows at this time. Also mobile browsers are
+		// not supported.
+		// Use `table().container()` rather than just the table node for IE8 -
+		// otherwise it only works once...
+		$(dt.table().container()).on( 'mousedown.rowReorder touchstart.rowReorder', this.c.selector, function (e) {
+			if ( ! that.c.enable ) {
+				return;
+			}
+
+			// Ignore excluded children of the selector
+			if ( $(e.target).is(that.c.excludedChildren) ) {
+				return true;
+			}
+
+			var tr = $(this).closest('tr');
+			var row = dt.row( tr );
+
+			// Double check that it is a DataTable row
+			if ( row.any() ) {
+				that._emitEvent( 'pre-row-reorder', {
+					node: row.node(),
+					index: row.index()
+				} );
+
+				that._mouseDown( e, tr );
+				return false;
+			}
+		} );
+
+		dt.on( 'destroy.rowReorder', function () {
+			$(dt.table().container()).off( '.rowReorder' );
+			dt.off( '.rowReorder' );
+		} );
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+	
+	/**
+	 * Cache the measurements that RowReorder needs in the mouse move handler
+	 * to attempt to speed things up, rather than reading from the DOM.
+	 *
+	 * @private
+	 */
+	_cachePositions: function ()
+	{
+		var dt = this.s.dt;
+
+		// Frustratingly, if we add `position:relative` to the tbody, the
+		// position is still relatively to the parent. So we need to adjust
+		// for that
+		var headerHeight = $( dt.table().node() ).find('thead').outerHeight();
+
+		// Need to pass the nodes through jQuery to get them in document order,
+		// not what DataTables thinks it is, since we have been altering the
+		// order
+		var nodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
+		var tops = $.map( nodes, function ( node, i ) {
+			return $(node).position().top - headerHeight;
+		} );
+
+		var middles = $.map( tops, function ( top, i ) {
+			return tops.length < i-1 ?
+				(top + tops[i+1]) / 2 :
+				(top + top + $( dt.row( ':last-child' ).node() ).outerHeight() ) / 2;
+		} );
+
+		this.s.middles = middles;
+		this.s.bodyTop = $( dt.table().body() ).offset().top;
+		this.s.windowHeight = $(window).height();
+		this.s.documentOuterHeight = $(document).outerHeight();
+	},
+
+
+	/**
+	 * Clone a row so it can be floated around the screen
+	 *
+	 * @param  {jQuery} target Node to be cloned
+	 * @private
+	 */
+	_clone: function ( target )
+	{
+		var dt = this.s.dt;
+		var clone = $( dt.table().node().cloneNode(false) )
+			.addClass( 'dt-rowReorder-float' )
+			.append('<tbody/>')
+			.append( target.clone( false ) );
+
+		// Match the table and column widths - read all sizes before setting
+		// to reduce reflows
+		var tableWidth = target.outerWidth();
+		var tableHeight = target.outerHeight();
+		var sizes = target.children().map( function () {
+			return $(this).width();
+		} );
+
+		clone
+			.width( tableWidth )
+			.height( tableHeight )
+			.find('tr').children().each( function (i) {
+				this.style.width = sizes[i]+'px';
+			} );
+
+		// Insert into the document to have it floating around
+		clone.appendTo( 'body' );
+
+		this.dom.clone = clone;
+		this.s.domCloneOuterHeight = clone.outerHeight();
+	},
+
+
+	/**
+	 * Update the cloned item's position in the document
+	 *
+	 * @param  {object} e Event giving the mouse's position
+	 * @private
+	 */
+	_clonePosition: function ( e )
+	{
+		var start = this.s.start;
+		var topDiff = this._eventToPage( e, 'Y' ) - start.top;
+		var leftDiff = this._eventToPage( e, 'X' ) - start.left;
+		var snap = this.c.snapX;
+		var left;
+		var top = topDiff + start.offsetTop;
+
+		if ( snap === true ) {
+			left = start.offsetLeft;
+		}
+		else if ( typeof snap === 'number' ) {
+			left = start.offsetLeft + snap;
+		}
+		else {
+			left = leftDiff + start.offsetLeft;
+		}
+
+		if(top < 0) {
+			top = 0
+		}
+		else if(top + this.s.domCloneOuterHeight > this.s.documentOuterHeight) {
+			top = this.s.documentOuterHeight - this.s.domCloneOuterHeight;
+		}
+
+		this.dom.clone.css( {
+			top: top,
+			left: left
+		} );
+	},
+
+
+	/**
+	 * Emit an event on the DataTable for listeners
+	 *
+	 * @param  {string} name Event name
+	 * @param  {array} args Event arguments
+	 * @private
+	 */
+	_emitEvent: function ( name, args )
+	{
+		this.s.dt.iterator( 'table', function ( ctx, i ) {
+			$(ctx.nTable).triggerHandler( name+'.dt', args );
+		} );
+	},
+
+
+	/**
+	 * Get pageX/Y position from an event, regardless of if it is a mouse or
+	 * touch event.
+	 *
+	 * @param  {object} e Event
+	 * @param  {string} pos X or Y (must be a capital)
+	 * @private
+	 */
+	_eventToPage: function ( e, pos )
+	{
+		if ( e.type.indexOf( 'touch' ) !== -1 ) {
+			return e.originalEvent.touches[0][ 'page'+pos ];
+		}
+
+		return e[ 'page'+pos ];
+	},
+
+
+	/**
+	 * Mouse down event handler. Read initial positions and add event handlers
+	 * for the move.
+	 *
+	 * @param  {object} e      Mouse event
+	 * @param  {jQuery} target TR element that is to be moved
+	 * @private
+	 */
+	_mouseDown: function ( e, target )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var start = this.s.start;
+
+		var offset = target.offset();
+		start.top = this._eventToPage( e, 'Y' );
+		start.left = this._eventToPage( e, 'X' );
+		start.offsetTop = offset.top;
+		start.offsetLeft = offset.left;
+		start.nodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
+
+		this._cachePositions();
+		this._clone( target );
+		this._clonePosition( e );
+
+		this.dom.target = target;
+		target.addClass( 'dt-rowReorder-moving' );
+
+		$( document )
+			.on( 'mouseup.rowReorder touchend.rowReorder', function (e) {
+				that._mouseUp(e);
+			} )
+			.on( 'mousemove.rowReorder touchmove.rowReorder', function (e) {
+				that._mouseMove(e);
+			} );
+
+		// Check if window is x-scrolling - if not, disable it for the duration
+		// of the drag
+		if ( $(window).width() === $(document).width() ) {
+			$(document.body).addClass( 'dt-rowReorder-noOverflow' );
+		}
+
+		// Cache scrolling information so mouse move doesn't need to read.
+		// This assumes that the window and DT scroller will not change size
+		// during an row drag, which I think is a fair assumption
+		var scrollWrapper = this.dom.dtScroll;
+		this.s.scroll = {
+			windowHeight: $(window).height(),
+			windowWidth:  $(window).width(),
+			dtTop:        scrollWrapper.length ? scrollWrapper.offset().top : null,
+			dtLeft:       scrollWrapper.length ? scrollWrapper.offset().left : null,
+			dtHeight:     scrollWrapper.length ? scrollWrapper.outerHeight() : null,
+			dtWidth:      scrollWrapper.length ? scrollWrapper.outerWidth() : null
+		};
+	},
+
+
+	/**
+	 * Mouse move event handler - move the cloned row and shuffle the table's
+	 * rows if required.
+	 *
+	 * @param  {object} e Mouse event
+	 * @private
+	 */
+	_mouseMove: function ( e )
+	{
+		this._clonePosition( e );
+
+		// Transform the mouse position into a position in the table's body
+		var bodyY = this._eventToPage( e, 'Y' ) - this.s.bodyTop;
+		var middles = this.s.middles;
+		var insertPoint = null;
+		var dt = this.s.dt;
+		var body = dt.table().body();
+
+		// Determine where the row should be inserted based on the mouse
+		// position
+		for ( var i=0, ien=middles.length ; i<ien ; i++ ) {
+			if ( bodyY < middles[i] ) {
+				insertPoint = i;
+				break;
+			}
+		}
+
+		if ( insertPoint === null ) {
+			insertPoint = middles.length;
+		}
+
+		// Perform the DOM shuffle if it has changed from last time
+		if ( this.s.lastInsert === null || this.s.lastInsert !== insertPoint ) {
+			if ( insertPoint === 0 ) {
+				this.dom.target.prependTo( body );
+			}
+			else {
+				var nodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
+
+				if ( insertPoint > this.s.lastInsert ) {
+					this.dom.target.insertAfter( nodes[ insertPoint-1 ] );
+				}
+				else {
+					this.dom.target.insertBefore( nodes[ insertPoint ] );
+				}
+			}
+
+			this._cachePositions();
+
+			this.s.lastInsert = insertPoint;
+		}
+
+		this._shiftScroll( e );
+	},
+
+
+	/**
+	 * Mouse up event handler - release the event handlers and perform the
+	 * table updates
+	 *
+	 * @param  {object} e Mouse event
+	 * @private
+	 */
+	_mouseUp: function ( e )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var i, ien;
+		var dataSrc = this.c.dataSrc;
+
+		this.dom.clone.remove();
+		this.dom.clone = null;
+
+		this.dom.target.removeClass( 'dt-rowReorder-moving' );
+		//this.dom.target = null;
+
+		$(document).off( '.rowReorder' );
+		$(document.body).removeClass( 'dt-rowReorder-noOverflow' );
+
+		clearInterval( this.s.scrollInterval );
+		this.s.scrollInterval = null;
+
+		// Calculate the difference
+		var startNodes = this.s.start.nodes;
+		var endNodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
+		var idDiff = {};
+		var fullDiff = [];
+		var diffNodes = [];
+		var getDataFn = this.s.getDataFn;
+		var setDataFn = this.s.setDataFn;
+
+		for ( i=0, ien=startNodes.length ; i<ien ; i++ ) {
+			if ( startNodes[i] !== endNodes[i] ) {
+				var id = dt.row( endNodes[i] ).id();
+				var endRowData = dt.row( endNodes[i] ).data();
+				var startRowData = dt.row( startNodes[i] ).data();
+
+				if ( id ) {
+					idDiff[ id ] = getDataFn( startRowData );
+				}
+
+				fullDiff.push( {
+					node: endNodes[i],
+					oldData: getDataFn( endRowData ),
+					newData: getDataFn( startRowData ),
+					newPosition: i,
+					oldPosition: $.inArray( endNodes[i], startNodes )
+				} );
+
+				diffNodes.push( endNodes[i] );
+			}
+		}
+		
+		// Create event args
+		var eventArgs = [ fullDiff, {
+			dataSrc:       dataSrc,
+			nodes:         diffNodes,
+			values:        idDiff,
+			triggerRow:    dt.row( this.dom.target ),
+			originalEvent: e
+		} ];
+		
+		// Emit event
+		this._emitEvent( 'row-reorder', eventArgs );
+
+		var update = function () {
+			if ( that.c.update ) {
+				for ( i=0, ien=fullDiff.length ; i<ien ; i++ ) {
+					var row = dt.row( fullDiff[i].node );
+					var rowData = row.data();
+
+					setDataFn( rowData, fullDiff[i].newData );
+
+					// Invalidate the cell that has the same data source as the dataSrc
+					dt.columns().every( function () {
+						if ( this.dataSrc() === dataSrc ) {
+							dt.cell( fullDiff[i].node, this.index() ).invalidate( 'data' );
+						}
+					} );
+				}
+
+				// Trigger row reordered event
+				that._emitEvent( 'row-reordered', eventArgs );
+
+				dt.draw( false );
+			}
+		};
+
+		// Editor interface
+		if ( this.c.editor ) {
+			// Disable user interaction while Editor is submitting
+			this.c.enable = false;
+
+			this.c.editor
+				.edit(
+					diffNodes,
+					false,
+					$.extend( {submit: 'changed'}, this.c.formOptions )
+				)
+				.multiSet( dataSrc, idDiff )
+				.one( 'preSubmitCancelled.rowReorder', function () {
+					that.c.enable = true;
+					that.c.editor.off( '.rowReorder' );
+					dt.draw( false );
+				} )
+				.one( 'submitUnsuccessful.rowReorder', function () {
+					dt.draw( false );
+				} )
+				.one( 'submitSuccess.rowReorder', function () {
+					update();
+				} )
+				.one( 'submitComplete', function () {
+					that.c.enable = true;
+					that.c.editor.off( '.rowReorder' );
+				} )
+				.submit();
+		}
+		else {
+			update();
+		}
+	},
+
+
+	/**
+	 * Move the window and DataTables scrolling during a drag to scroll new
+	 * content into view.
+	 *
+	 * This matches the `_shiftScroll` method used in AutoFill, but only
+	 * horizontal scrolling is considered here.
+	 *
+	 * @param  {object} e Mouse move event object
+	 * @private
+	 */
+	_shiftScroll: function ( e )
+	{
+		var that = this;
+		var dt = this.s.dt;
+		var scroll = this.s.scroll;
+		var runInterval = false;
+		var scrollSpeed = 5;
+		var buffer = 65;
+		var
+			windowY = e.pageY - document.body.scrollTop,
+			windowVert,
+			dtVert;
+
+		// Window calculations - based on the mouse position in the window,
+		// regardless of scrolling
+		if ( windowY < buffer ) {
+			windowVert = scrollSpeed * -1;
+		}
+		else if ( windowY > scroll.windowHeight - buffer ) {
+			windowVert = scrollSpeed;
+		}
+
+		// DataTables scrolling calculations - based on the table's position in
+		// the document and the mouse position on the page
+		if ( scroll.dtTop !== null && e.pageY < scroll.dtTop + buffer ) {
+			dtVert = scrollSpeed * -1;
+		}
+		else if ( scroll.dtTop !== null && e.pageY > scroll.dtTop + scroll.dtHeight - buffer ) {
+			dtVert = scrollSpeed;
+		}
+
+		// This is where it gets interesting. We want to continue scrolling
+		// without requiring a mouse move, so we need an interval to be
+		// triggered. The interval should continue until it is no longer needed,
+		// but it must also use the latest scroll commands (for example consider
+		// that the mouse might move from scrolling up to scrolling left, all
+		// with the same interval running. We use the `scroll` object to "pass"
+		// this information to the interval. Can't use local variables as they
+		// wouldn't be the ones that are used by an already existing interval!
+		if ( windowVert || dtVert ) {
+			scroll.windowVert = windowVert;
+			scroll.dtVert = dtVert;
+			runInterval = true;
+		}
+		else if ( this.s.scrollInterval ) {
+			// Don't need to scroll - remove any existing timer
+			clearInterval( this.s.scrollInterval );
+			this.s.scrollInterval = null;
+		}
+
+		// If we need to run the interval to scroll and there is no existing
+		// interval (if there is an existing one, it will continue to run)
+		if ( ! this.s.scrollInterval && runInterval ) {
+			this.s.scrollInterval = setInterval( function () {
+				// Don't need to worry about setting scroll <0 or beyond the
+				// scroll bound as the browser will just reject that.
+				if ( scroll.windowVert ) {
+					document.body.scrollTop += scroll.windowVert;
+				}
+
+				// DataTables scrolling
+				if ( scroll.dtVert ) {
+					var scroller = that.dom.dtScroll[0];
+
+					if ( scroll.dtVert ) {
+						scroller.scrollTop += scroll.dtVert;
+					}
+				}
+			}, 20 );
+		}
+	}
+} );
+
+
+
+/**
+ * RowReorder default settings for initialisation
+ *
+ * @namespace
+ * @name RowReorder.defaults
+ * @static
+ */
+RowReorder.defaults = {
+	/**
+	 * Data point in the host row's data source object for where to get and set
+	 * the data to reorder. This will normally also be the sorting column.
+	 *
+	 * @type {Number}
+	 */
+	dataSrc: 0,
+
+	/**
+	 * Editor instance that will be used to perform the update
+	 *
+	 * @type {DataTable.Editor}
+	 */
+	editor: null,
+
+	/**
+	 * Enable / disable RowReorder's user interaction
+	 * @type {Boolean}
+	 */
+	enable: true,
+
+	/**
+	 * Form options to pass to Editor when submitting a change in the row order.
+	 * See the Editor `from-options` object for details of the options
+	 * available.
+	 * @type {Object}
+	 */
+	formOptions: {},
+
+	/**
+	 * Drag handle selector. This defines the element that when dragged will
+	 * reorder a row.
+	 *
+	 * @type {String}
+	 */
+	selector: 'td:first-child',
+
+	/**
+	 * Optionally lock the dragged row's x-position. This can be `true` to
+	 * fix the position match the host table's, `false` to allow free movement
+	 * of the row, or a number to define an offset from the host table.
+	 *
+	 * @type {Boolean|number}
+	 */
+	snapX: false,
+
+	/**
+	 * Update the table's data on drop
+	 *
+	 * @type {Boolean}
+	 */
+	update: true,
+
+	/**
+	 * Selector for children of the drag handle selector that mouseDown events
+	 * will be passed through to and drag will not activate
+	 *
+	 * @type {String}
+	 */
+	excludedChildren: 'a'
+};
+
+
+/*
+ * API
+ */
+var Api = $.fn.dataTable.Api;
+
+// Doesn't do anything - work around for a bug in DT... Not documented
+Api.register( 'rowReorder()', function () {
+	return this;
+} );
+
+Api.register( 'rowReorder.enable()', function ( toggle ) {
+	if ( toggle === undefined ) {
+		toggle = true;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx.rowreorder ) {
+			ctx.rowreorder.c.enable = toggle;
+		}
+	} );
+} );
+
+Api.register( 'rowReorder.disable()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		if ( ctx.rowreorder ) {
+			ctx.rowreorder.c.enable = false;
+		}
+	} );
+} );
+
+
+/**
+ * Version information
+ *
+ * @name RowReorder.version
+ * @static
+ */
+RowReorder.version = '1.2.6';
+
+
+$.fn.dataTable.RowReorder = RowReorder;
+$.fn.DataTable.RowReorder = RowReorder;
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'init.dt.dtr', function (e, settings, json) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.rowReorder;
+	var defaults = DataTable.defaults.rowReorder;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, init, defaults );
+
+		if ( init !== false ) {
+			new RowReorder( settings, opts  );
+		}
+	}
+} );
+
+
+return RowReorder;
+}));
+
+
+/*! Scroller 2.0.1
+ * ©2011-2019 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     Scroller
+ * @description Virtual rendering for DataTables
+ * @version     2.0.1
+ * @file        dataTables.scroller.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2011-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+/**
+ * Scroller is a virtual rendering plug-in for DataTables which allows large
+ * datasets to be drawn on screen every quickly. What the virtual rendering means
+ * is that only the visible portion of the table (and a bit to either side to make
+ * the scrolling smooth) is drawn, while the scrolling container gives the
+ * visual impression that the whole table is visible. This is done by making use
+ * of the pagination abilities of DataTables and moving the table around in the
+ * scrolling container DataTables adds to the page. The scrolling container is
+ * forced to the height it would be for the full table display using an extra
+ * element.
+ *
+ * Note that rows in the table MUST all be the same height. Information in a cell
+ * which expands on to multiple lines will cause some odd behaviour in the scrolling.
+ *
+ * Scroller is initialised by simply including the letter 'S' in the sDom for the
+ * table you want to have this feature enabled on. Note that the 'S' must come
+ * AFTER the 't' parameter in `dom`.
+ *
+ * Key features include:
+ *   <ul class="limit_length">
+ *     <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li>
+ *     <li>Full compatibility with deferred rendering in DataTables for maximum speed</li>
+ *     <li>Display millions of rows</li>
+ *     <li>Integration with state saving in DataTables (scrolling position is saved)</li>
+ *     <li>Easy to use</li>
+ *   </ul>
+ *
+ *  @class
+ *  @constructor
+ *  @global
+ *  @param {object} dt DataTables settings object or API instance
+ *  @param {object} [opts={}] Configuration object for FixedColumns. Options 
+ *    are defined by {@link Scroller.defaults}
+ *
+ *  @requires jQuery 1.7+
+ *  @requires DataTables 1.10.0+
+ *
+ *  @example
+ *    $(document).ready(function() {
+ *        $('#example').DataTable( {
+ *            "scrollY": "200px",
+ *            "ajax": "media/dataset/large.txt",
+ *            "scroller": true,
+ *            "deferRender": true
+ *        } );
+ *    } );
+ */
+var Scroller = function ( dt, opts ) {
+	/* Sanity check - you just know it will happen */
+	if ( ! (this instanceof Scroller) ) {
+		alert( "Scroller warning: Scroller must be initialised with the 'new' keyword." );
+		return;
+	}
+
+	if ( opts === undefined ) {
+		opts = {};
+	}
+
+	var dtApi = $.fn.dataTable.Api( dt );
+
+	/**
+	 * Settings object which contains customisable information for the Scroller instance
+	 * @namespace
+	 * @private
+	 * @extends Scroller.defaults
+	 */
+	this.s = {
+		/**
+		 * DataTables settings object
+		 *  @type     object
+		 *  @default  Passed in as first parameter to constructor
+		 */
+		dt: dtApi.settings()[0],
+
+		/**
+		 * DataTables API instance
+		 *  @type     DataTable.Api
+		 */
+		dtApi: dtApi,
+
+		/**
+		 * Pixel location of the top of the drawn table in the viewport
+		 *  @type     int
+		 *  @default  0
+		 */
+		tableTop: 0,
+
+		/**
+		 * Pixel location of the bottom of the drawn table in the viewport
+		 *  @type     int
+		 *  @default  0
+		 */
+		tableBottom: 0,
+
+		/**
+		 * Pixel location of the boundary for when the next data set should be loaded and drawn
+		 * when scrolling up the way.
+		 *  @type     int
+		 *  @default  0
+		 *  @private
+		 */
+		redrawTop: 0,
+
+		/**
+		 * Pixel location of the boundary for when the next data set should be loaded and drawn
+		 * when scrolling down the way. Note that this is actually calculated as the offset from
+		 * the top.
+		 *  @type     int
+		 *  @default  0
+		 *  @private
+		 */
+		redrawBottom: 0,
+
+		/**
+		 * Auto row height or not indicator
+		 *  @type     bool
+		 *  @default  0
+		 */
+		autoHeight: true,
+
+		/**
+		 * Number of rows calculated as visible in the visible viewport
+		 *  @type     int
+		 *  @default  0
+		 */
+		viewportRows: 0,
+
+		/**
+		 * setTimeout reference for state saving, used when state saving is enabled in the DataTable
+		 * and when the user scrolls the viewport in order to stop the cookie set taking too much
+		 * CPU!
+		 *  @type     int
+		 *  @default  0
+		 */
+		stateTO: null,
+
+		/**
+		 * setTimeout reference for the redraw, used when server-side processing is enabled in the
+		 * DataTables in order to prevent DoSing the server
+		 *  @type     int
+		 *  @default  null
+		 */
+		drawTO: null,
+
+		heights: {
+			jump: null,
+			page: null,
+			virtual: null,
+			scroll: null,
+
+			/**
+			 * Height of rows in the table
+			 *  @type     int
+			 *  @default  0
+			 */
+			row: null,
+
+			/**
+			 * Pixel height of the viewport
+			 *  @type     int
+			 *  @default  0
+			 */
+			viewport: null,
+			labelFactor: 1
+		},
+
+		topRowFloat: 0,
+		scrollDrawDiff: null,
+		loaderVisible: false,
+		forceReposition: false,
+		baseRowTop: 0,
+		baseScrollTop: 0,
+		mousedown: false,
+		lastScrollTop: 0
+	};
+
+	// @todo The defaults should extend a `c` property and the internal settings
+	// only held in the `s` property. At the moment they are mixed
+	this.s = $.extend( this.s, Scroller.oDefaults, opts );
+
+	// Workaround for row height being read from height object (see above comment)
+	this.s.heights.row = this.s.rowHeight;
+
+	/**
+	 * DOM elements used by the class instance
+	 * @private
+	 * @namespace
+	 *
+	 */
+	this.dom = {
+		"force":    document.createElement('div'),
+		"label":    $('<div class="dts_label">0</div>'),
+		"scroller": null,
+		"table":    null,
+		"loader":   null
+	};
+
+	// Attach the instance to the DataTables instance so it can be accessed in
+	// future. Don't initialise Scroller twice on the same table
+	if ( this.s.dt.oScroller ) {
+		return;
+	}
+
+	this.s.dt.oScroller = this;
+
+	/* Let's do it */
+	this.construct();
+};
+
+
+
+$.extend( Scroller.prototype, {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods - to be exposed via the DataTables API
+	 */
+
+	/**
+	 * Calculate and store information about how many rows are to be displayed
+	 * in the scrolling viewport, based on current dimensions in the browser's
+	 * rendering. This can be particularly useful if the table is initially
+	 * drawn in a hidden element - for example in a tab.
+	 *  @param {bool} [redraw=true] Redraw the table automatically after the recalculation, with
+	 *    the new dimensions forming the basis for the draw.
+	 *  @returns {void}
+	 */
+	measure: function ( redraw )
+	{
+		if ( this.s.autoHeight )
+		{
+			this._calcRowHeight();
+		}
+
+		var heights = this.s.heights;
+
+		if ( heights.row ) {
+			heights.viewport = $.contains(document, this.dom.scroller) ?
+				this.dom.scroller.clientHeight :
+				this._parseHeight($(this.dom.scroller).css('height'));
+
+			// If collapsed (no height) use the max-height parameter
+			if ( ! heights.viewport ) {
+				heights.viewport = this._parseHeight($(this.dom.scroller).css('max-height'));
+			}
+
+			this.s.viewportRows = parseInt( heights.viewport / heights.row, 10 )+1;
+			this.s.dt._iDisplayLength = this.s.viewportRows * this.s.displayBuffer;
+		}
+
+		var label = this.dom.label.outerHeight();
+		heights.labelFactor = (heights.viewport-label) / heights.scroll;
+
+		if ( redraw === undefined || redraw )
+		{
+			this.s.dt.oInstance.fnDraw( false );
+		}
+	},
+
+	/**
+	 * Get information about current displayed record range. This corresponds to
+	 * the information usually displayed in the "Info" block of the table.
+	 *
+	 * @returns {object} info as an object:
+	 *  {
+	 *      start: {int}, // the 0-indexed record at the top of the viewport
+	 *      end:   {int}, // the 0-indexed record at the bottom of the viewport
+	 *  }
+	*/
+	pageInfo: function()
+	{
+		var 
+			dt = this.s.dt,
+			iScrollTop = this.dom.scroller.scrollTop,
+			iTotal = dt.fnRecordsDisplay(),
+			iPossibleEnd = Math.ceil(this.pixelsToRow(iScrollTop + this.s.heights.viewport, false, this.s.ani));
+
+		return {
+			start: Math.floor(this.pixelsToRow(iScrollTop, false, this.s.ani)),
+			end: iTotal < iPossibleEnd ? iTotal-1 : iPossibleEnd-1
+		};
+	},
+
+	/**
+	 * Calculate the row number that will be found at the given pixel position
+	 * (y-scroll).
+	 *
+	 * Please note that when the height of the full table exceeds 1 million
+	 * pixels, Scroller switches into a non-linear mode for the scrollbar to fit
+	 * all of the records into a finite area, but this function returns a linear
+	 * value (relative to the last non-linear positioning).
+	 *  @param {int} pixels Offset from top to calculate the row number of
+	 *  @param {int} [intParse=true] If an integer value should be returned
+	 *  @param {int} [virtual=false] Perform the calculations in the virtual domain
+	 *  @returns {int} Row index
+	 */
+	pixelsToRow: function ( pixels, intParse, virtual )
+	{
+		var diff = pixels - this.s.baseScrollTop;
+		var row = virtual ?
+			(this._domain( 'physicalToVirtual', this.s.baseScrollTop ) + diff) / this.s.heights.row :
+			( diff / this.s.heights.row ) + this.s.baseRowTop;
+
+		return intParse || intParse === undefined ?
+			parseInt( row, 10 ) :
+			row;
+	},
+
+	/**
+	 * Calculate the pixel position from the top of the scrolling container for
+	 * a given row
+	 *  @param {int} iRow Row number to calculate the position of
+	 *  @returns {int} Pixels
+	 */
+	rowToPixels: function ( rowIdx, intParse, virtual )
+	{
+		var pixels;
+		var diff = rowIdx - this.s.baseRowTop;
+
+		if ( virtual ) {
+			pixels = this._domain( 'virtualToPhysical', this.s.baseScrollTop );
+			pixels += diff * this.s.heights.row;
+		}
+		else {
+			pixels = this.s.baseScrollTop;
+			pixels += diff * this.s.heights.row;
+		}
+
+		return intParse || intParse === undefined ?
+			parseInt( pixels, 10 ) :
+			pixels;
+	},
+
+
+	/**
+	 * Calculate the row number that will be found at the given pixel position (y-scroll)
+	 *  @param {int} row Row index to scroll to
+	 *  @param {bool} [animate=true] Animate the transition or not
+	 *  @returns {void}
+	 */
+	scrollToRow: function ( row, animate )
+	{
+		var that = this;
+		var ani = false;
+		var px = this.rowToPixels( row );
+
+		// We need to know if the table will redraw or not before doing the
+		// scroll. If it will not redraw, then we need to use the currently
+		// displayed table, and scroll with the physical pixels. Otherwise, we
+		// need to calculate the table's new position from the virtual
+		// transform.
+		var preRows = ((this.s.displayBuffer-1)/2) * this.s.viewportRows;
+		var drawRow = row - preRows;
+		if ( drawRow < 0 ) {
+			drawRow = 0;
+		}
+
+		if ( (px > this.s.redrawBottom || px < this.s.redrawTop) && this.s.dt._iDisplayStart !== drawRow ) {
+			ani = true;
+			px = this._domain( 'virtualToPhysical', row * this.s.heights.row );
+
+			// If we need records outside the current draw region, but the new
+			// scrolling position is inside that (due to the non-linear nature
+			// for larger numbers of records), we need to force position update.
+			if ( this.s.redrawTop < px && px < this.s.redrawBottom ) {
+				this.s.forceReposition = true;
+				animate = false;
+			}
+		}
+
+		if ( animate === undefined || animate )
+		{
+			this.s.ani = ani;
+			$(this.dom.scroller).animate( {
+				"scrollTop": px
+			}, function () {
+				// This needs to happen after the animation has completed and
+				// the final scroll event fired
+				setTimeout( function () {
+					that.s.ani = false;
+				}, 250 );
+			} );
+		}
+		else
+		{
+			$(this.dom.scroller).scrollTop( px );
+		}
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Initialisation for Scroller
+	 *  @returns {void}
+	 *  @private
+	 */
+	construct: function ()
+	{
+		var that = this;
+		var dt = this.s.dtApi;
+
+		/* Sanity check */
+		if ( !this.s.dt.oFeatures.bPaginate ) {
+			this.s.dt.oApi._fnLog( this.s.dt, 0, 'Pagination must be enabled for Scroller' );
+			return;
+		}
+
+		/* Insert a div element that we can use to force the DT scrolling container to
+		 * the height that would be required if the whole table was being displayed
+		 */
+		this.dom.force.style.position = "relative";
+		this.dom.force.style.top = "0px";
+		this.dom.force.style.left = "0px";
+		this.dom.force.style.width = "1px";
+
+		this.dom.scroller = $('div.'+this.s.dt.oClasses.sScrollBody, this.s.dt.nTableWrapper)[0];
+		this.dom.scroller.appendChild( this.dom.force );
+		this.dom.scroller.style.position = "relative";
+
+		this.dom.table = $('>table', this.dom.scroller)[0];
+		this.dom.table.style.position = "absolute";
+		this.dom.table.style.top = "0px";
+		this.dom.table.style.left = "0px";
+
+		// Add class to 'announce' that we are a Scroller table
+		$(dt.table().container()).addClass('dts DTS');
+
+		// Add a 'loading' indicator
+		if ( this.s.loadingIndicator )
+		{
+			this.dom.loader = $('<div class="dataTables_processing dts_loading">'+this.s.dt.oLanguage.sLoadingRecords+'</div>')
+				.css('display', 'none');
+
+			$(this.dom.scroller.parentNode)
+				.css('position', 'relative')
+				.append( this.dom.loader );
+		}
+
+		this.dom.label.appendTo(this.dom.scroller);
+
+		/* Initial size calculations */
+		if ( this.s.heights.row && this.s.heights.row != 'auto' )
+		{
+			this.s.autoHeight = false;
+		}
+		this.measure( false );
+
+		// Scrolling callback to see if a page change is needed - use a throttled
+		// function for the save save callback so we aren't hitting it on every
+		// scroll
+		this.s.ingnoreScroll = true;
+		this.s.stateSaveThrottle = this.s.dt.oApi._fnThrottle( function () {
+			that.s.dtApi.state.save();
+		}, 500 );
+		$(this.dom.scroller).on( 'scroll.dt-scroller', function (e) {
+			that._scroll.call( that );
+		} );
+
+		// In iOS we catch the touchstart event in case the user tries to scroll
+		// while the display is already scrolling
+		$(this.dom.scroller).on('touchstart.dt-scroller', function () {
+			that._scroll.call( that );
+		} );
+
+		$(this.dom.scroller)
+			.on('mousedown.dt-scroller', function () {
+				that.s.mousedown = true;
+			})
+			.on('mouseup.dt-scroller', function () {
+				that.s.mouseup = false;
+				that.dom.label.css('display', 'none');
+			});
+
+		// On resize, update the information element, since the number of rows shown might change
+		$(window).on( 'resize.dt-scroller', function () {
+			that.measure( false );
+			that._info();
+		} );
+
+		// Add a state saving parameter to the DT state saving so we can restore the exact
+		// position of the scrolling. Slightly surprisingly the scroll position isn't actually
+		// stored, but rather tha base units which are needed to calculate it. This allows for
+		// virtual scrolling as well.
+		var initialStateSave = true;
+		var loadedState = dt.state.loaded();
+
+		dt.on( 'stateSaveParams.scroller', function ( e, settings, data ) {
+			// Need to used the saved position on init
+			data.scroller = {
+				topRow: initialStateSave && loadedState && loadedState.scroller ?
+					loadedState.scroller.topRow :
+					that.s.topRowFloat,
+				baseScrollTop: that.s.baseScrollTop,
+				baseRowTop: that.s.baseRowTop
+			};
+
+			initialStateSave = false;
+		} );
+
+		if ( loadedState && loadedState.scroller ) {
+			this.s.topRowFloat = loadedState.scroller.topRow;
+			this.s.baseScrollTop = loadedState.scroller.baseScrollTop;
+			this.s.baseRowTop = loadedState.scroller.baseRowTop;
+		}
+
+		dt.on( 'init.scroller', function () {
+			that.measure( false );
+
+			// Setting to `jump` will instruct _draw to calculate the scroll top
+			// position
+			that.s.scrollType = 'jump';
+			that._draw();
+
+			// Update the scroller when the DataTable is redrawn
+			dt.on( 'draw.scroller', function () {
+				that._draw();
+			});
+		} );
+
+		// Set height before the draw happens, allowing everything else to update
+		// on draw complete without worry for roder.
+		dt.on( 'preDraw.dt.scroller', function () {
+			that._scrollForce();
+		} );
+
+		// Destructor
+		dt.on( 'destroy.scroller', function () {
+			$(window).off( 'resize.dt-scroller' );
+			$(that.dom.scroller).off('.dt-scroller');
+			$(that.s.dt.nTable).off( '.scroller' );
+
+			$(that.s.dt.nTableWrapper).removeClass('DTS');
+			$('div.DTS_Loading', that.dom.scroller.parentNode).remove();
+
+			that.dom.table.style.position = "";
+			that.dom.table.style.top = "";
+			that.dom.table.style.left = "";
+		} );
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Automatic calculation of table row height. This is just a little tricky here as using
+	 * initialisation DataTables has tale the table out of the document, so we need to create
+	 * a new table and insert it into the document, calculate the row height and then whip the
+	 * table out.
+	 *  @returns {void}
+	 *  @private
+	 */
+	_calcRowHeight: function ()
+	{
+		var dt = this.s.dt;
+		var origTable = dt.nTable;
+		var nTable = origTable.cloneNode( false );
+		var tbody = $('<tbody/>').appendTo( nTable );
+		var container = $(
+			'<div class="'+dt.oClasses.sWrapper+' DTS">'+
+				'<div class="'+dt.oClasses.sScrollWrapper+'">'+
+					'<div class="'+dt.oClasses.sScrollBody+'"></div>'+
+				'</div>'+
+			'</div>'
+		);
+
+		// Want 3 rows in the sizing table so :first-child and :last-child
+		// CSS styles don't come into play - take the size of the middle row
+		$('tbody tr:lt(4)', origTable).clone().appendTo( tbody );
+        var rowsCount = $('tr', tbody).length;
+
+        if ( rowsCount === 1 ) {
+            tbody.prepend('<tr><td>&#160;</td></tr>');
+            tbody.append('<tr><td>&#160;</td></tr>');
+		}
+		else {
+            for (; rowsCount < 3; rowsCount++) {
+                tbody.append('<tr><td>&#160;</td></tr>');
+            }
+		}
+	
+		$('div.'+dt.oClasses.sScrollBody, container).append( nTable );
+
+		// If initialised using `dom`, use the holding element as the insert point
+		var insertEl = this.s.dt.nHolding || origTable.parentNode;
+
+		if ( ! $(insertEl).is(':visible') ) {
+			insertEl = 'body';
+		}
+
+		container.appendTo( insertEl );
+		this.s.heights.row = $('tr', tbody).eq(1).outerHeight();
+
+		container.remove();
+	},
+
+	/**
+	 * Draw callback function which is fired when the DataTable is redrawn. The main function of
+	 * this method is to position the drawn table correctly the scrolling container for the rows
+	 * that is displays as a result of the scrolling position.
+	 *  @returns {void}
+	 *  @private
+	 */
+	_draw: function ()
+	{
+		var
+			that = this,
+			heights = this.s.heights,
+			iScrollTop = this.dom.scroller.scrollTop,
+			iTableHeight = $(this.s.dt.nTable).height(),
+			displayStart = this.s.dt._iDisplayStart,
+			displayLen = this.s.dt._iDisplayLength,
+			displayEnd = this.s.dt.fnRecordsDisplay();
+
+		// Disable the scroll event listener while we are updating the DOM
+		this.s.skip = true;
+
+		// If paging is reset
+		if ( (this.s.dt.bSorted || this.s.dt.bFiltered) && displayStart === 0 && !this.s.dt._drawHold ) {
+			this.s.topRowFloat = 0;
+		}
+
+		iScrollTop = this.s.scrollType === 'jump' ?
+			this._domain( 'virtualToPhysical', this.s.topRowFloat * heights.row ) :
+			iScrollTop;
+
+		// Store positional information so positional calculations can be based
+		// upon the current table draw position
+		this.s.baseScrollTop = iScrollTop;
+		this.s.baseRowTop = this.s.topRowFloat;
+
+		// Position the table in the virtual scroller
+		var tableTop = iScrollTop - ((this.s.topRowFloat - displayStart) * heights.row);
+		if ( displayStart === 0 ) {
+			tableTop = 0;
+		}
+		else if ( displayStart + displayLen >= displayEnd ) {
+			tableTop = heights.scroll - iTableHeight;
+		}
+
+		this.dom.table.style.top = tableTop+'px';
+
+		/* Cache some information for the scroller */
+		this.s.tableTop = tableTop;
+		this.s.tableBottom = iTableHeight + this.s.tableTop;
+
+		// Calculate the boundaries for where a redraw will be triggered by the
+		// scroll event listener
+		var boundaryPx = (iScrollTop - this.s.tableTop) * this.s.boundaryScale;
+		this.s.redrawTop = iScrollTop - boundaryPx;
+		this.s.redrawBottom = iScrollTop + boundaryPx > heights.scroll - heights.viewport - heights.row ?
+			heights.scroll - heights.viewport - heights.row :
+			iScrollTop + boundaryPx;
+
+		this.s.skip = false;
+
+		// Restore the scrolling position that was saved by DataTable's state
+		// saving Note that this is done on the second draw when data is Ajax
+		// sourced, and the first draw when DOM soured
+		if ( this.s.dt.oFeatures.bStateSave && this.s.dt.oLoadedState !== null &&
+			 typeof this.s.dt.oLoadedState.iScroller != 'undefined' )
+		{
+			// A quirk of DataTables is that the draw callback will occur on an
+			// empty set if Ajax sourced, but not if server-side processing.
+			var ajaxSourced = (this.s.dt.sAjaxSource || that.s.dt.ajax) && ! this.s.dt.oFeatures.bServerSide ?
+				true :
+				false;
+
+			if ( ( ajaxSourced && this.s.dt.iDraw == 2) ||
+			     (!ajaxSourced && this.s.dt.iDraw == 1) )
+			{
+				setTimeout( function () {
+					$(that.dom.scroller).scrollTop( that.s.dt.oLoadedState.iScroller );
+					that.s.redrawTop = that.s.dt.oLoadedState.iScroller - (heights.viewport/2);
+
+					// In order to prevent layout thrashing we need another
+					// small delay
+					setTimeout( function () {
+						that.s.ingnoreScroll = false;
+					}, 0 );
+				}, 0 );
+			}
+		}
+		else {
+			that.s.ingnoreScroll = false;
+		}
+
+		// Because of the order of the DT callbacks, the info update will
+		// take precedence over the one we want here. So a 'thread' break is
+		// needed.  Only add the thread break if bInfo is set
+		if ( this.s.dt.oFeatures.bInfo ) {
+			setTimeout( function () {
+				that._info.call( that );
+			}, 0 );
+		}
+
+		// Hide the loading indicator
+		if ( this.dom.loader && this.s.loaderVisible ) {
+			this.dom.loader.css( 'display', 'none' );
+			this.s.loaderVisible = false;
+		}
+	},
+
+	/**
+	 * Convert from one domain to another. The physical domain is the actual
+	 * pixel count on the screen, while the virtual is if we had browsers which
+	 * had scrolling containers of infinite height (i.e. the absolute value)
+	 *
+	 *  @param {string} dir Domain transform direction, `virtualToPhysical` or
+	 *    `physicalToVirtual` 
+	 *  @returns {number} Calculated transform
+	 *  @private
+	 */
+	_domain: function ( dir, val )
+	{
+		var heights = this.s.heights;
+		var diff;
+		var magic = 10000; // the point at which the non-linear calculations start to happen
+
+		// If the virtual and physical height match, then we use a linear
+		// transform between the two, allowing the scrollbar to be linear
+		if ( heights.virtual === heights.scroll ) {
+			return val;
+		}
+
+		// In the first 10k pixels and the last 10k pixels, we want the scrolling
+		// to be linear. After that it can be non-linear. It would be unusual for
+		// anyone to mouse wheel through that much.
+		if ( val < magic ) {
+			return val;
+		}
+		else if ( dir === 'virtualToPhysical' && val >= heights.virtual - magic ) {
+			diff = heights.virtual - val;
+			return heights.scroll - diff;
+		}
+		else if ( dir === 'physicalToVirtual' && val >= heights.scroll - magic ) {
+			diff = heights.scroll - val;
+			return heights.virtual - diff;
+		}
+
+		// Otherwise, we want a non-linear scrollbar to take account of the
+		// redrawing regions at the start and end of the table, otherwise these
+		// can stutter badly - on large tables 30px (for example) scroll might
+		// be hundreds of rows, so the table would be redrawing every few px at
+		// the start and end. Use a simple linear eq. to stop this, effectively
+		// causing a kink in the scrolling ratio. It does mean the scrollbar is
+		// non-linear, but with such massive data sets, the scrollbar is going
+		// to be a best guess anyway
+		var m = (heights.virtual - magic - magic) / (heights.scroll - magic - magic);
+		var c = magic - (m*magic);
+
+		return dir === 'virtualToPhysical' ?
+			(val-c) / m :
+			(m*val) + c;
+	},
+
+	/**
+	 * Update any information elements that are controlled by the DataTable based on the scrolling
+	 * viewport and what rows are visible in it. This function basically acts in the same way as
+	 * _fnUpdateInfo in DataTables, and effectively replaces that function.
+	 *  @returns {void}
+	 *  @private
+	 */
+	_info: function ()
+	{
+		if ( !this.s.dt.oFeatures.bInfo )
+		{
+			return;
+		}
+
+		var
+			dt = this.s.dt,
+			language = dt.oLanguage,
+			iScrollTop = this.dom.scroller.scrollTop,
+			iStart = Math.floor( this.pixelsToRow(iScrollTop, false, this.s.ani)+1 ),
+			iMax = dt.fnRecordsTotal(),
+			iTotal = dt.fnRecordsDisplay(),
+			iPossibleEnd = Math.ceil( this.pixelsToRow(iScrollTop+this.s.heights.viewport, false, this.s.ani) ),
+			iEnd = iTotal < iPossibleEnd ? iTotal : iPossibleEnd,
+			sStart = dt.fnFormatNumber( iStart ),
+			sEnd = dt.fnFormatNumber( iEnd ),
+			sMax = dt.fnFormatNumber( iMax ),
+			sTotal = dt.fnFormatNumber( iTotal ),
+			sOut;
+
+		if ( dt.fnRecordsDisplay() === 0 &&
+			   dt.fnRecordsDisplay() == dt.fnRecordsTotal() )
+		{
+			/* Empty record set */
+			sOut = language.sInfoEmpty+ language.sInfoPostFix;
+		}
+		else if ( dt.fnRecordsDisplay() === 0 )
+		{
+			/* Empty record set after filtering */
+			sOut = language.sInfoEmpty +' '+
+				language.sInfoFiltered.replace('_MAX_', sMax)+
+					language.sInfoPostFix;
+		}
+		else if ( dt.fnRecordsDisplay() == dt.fnRecordsTotal() )
+		{
+			/* Normal record set */
+			sOut = language.sInfo.
+					replace('_START_', sStart).
+					replace('_END_',   sEnd).
+					replace('_MAX_',   sMax).
+					replace('_TOTAL_', sTotal)+
+				language.sInfoPostFix;
+		}
+		else
+		{
+			/* Record set after filtering */
+			sOut = language.sInfo.
+					replace('_START_', sStart).
+					replace('_END_',   sEnd).
+					replace('_MAX_',   sMax).
+					replace('_TOTAL_', sTotal) +' '+
+				language.sInfoFiltered.replace(
+					'_MAX_',
+					dt.fnFormatNumber(dt.fnRecordsTotal())
+				)+
+				language.sInfoPostFix;
+		}
+
+		var callback = language.fnInfoCallback;
+		if ( callback ) {
+			sOut = callback.call( dt.oInstance,
+				dt, iStart, iEnd, iMax, iTotal, sOut
+			);
+		}
+
+		var n = dt.aanFeatures.i;
+		if ( typeof n != 'undefined' )
+		{
+			for ( var i=0, iLen=n.length ; i<iLen ; i++ )
+			{
+				$(n[i]).html( sOut );
+			}
+		}
+
+		// DT doesn't actually (yet) trigger this event, but it will in future
+		$(dt.nTable).triggerHandler( 'info.dt' );
+	},
+
+	/**
+	 * Parse CSS height property string as number
+	 *
+	 * An attempt is made to parse the string as a number. Currently supported units are 'px',
+	 * 'vh', and 'rem'. 'em' is partially supported; it works as long as the parent element's
+	 * font size matches the body element. Zero is returned for unrecognized strings.
+	 *  @param {string} cssHeight CSS height property string
+	 *  @returns {number} height
+	 *  @private
+	 */
+	_parseHeight: function(cssHeight) {
+		var height;
+		var matches = /^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(px|em|rem|vh)$/.exec(cssHeight);
+
+		if (matches === null) {
+			return 0;
+		}
+
+		var value = parseFloat(matches[1]);
+		var unit = matches[2];
+
+		if ( unit === 'px' ) {
+			height = value;
+		}
+		else if ( unit === 'vh' ) {
+			height = ( value / 100 ) * $(window).height();
+		}
+		else if ( unit === 'rem' ) {
+			height = value * parseFloat($(':root').css('font-size'));
+		}
+		else if ( unit === 'em' ) {
+			height = value * parseFloat($('body').css('font-size'));
+		}
+
+		return height ?
+			height :
+			0;
+	},
+
+	/**
+	 * Scrolling function - fired whenever the scrolling position is changed.
+	 * This method needs to use the stored values to see if the table should be
+	 * redrawn as we are moving towards the end of the information that is
+	 * currently drawn or not. If needed, then it will redraw the table based on
+	 * the new position.
+	 *  @returns {void}
+	 *  @private
+	 */
+	_scroll: function ()
+	{
+		var
+			that = this,
+			heights = this.s.heights,
+			iScrollTop = this.dom.scroller.scrollTop,
+			iTopRow;
+
+		if ( this.s.skip ) {
+			return;
+		}
+
+		if ( this.s.ingnoreScroll ) {
+			return;
+		}
+
+		if ( iScrollTop === this.s.lastScrollTop ) {
+			return;
+		}
+
+		/* If the table has been sorted or filtered, then we use the redraw that
+		 * DataTables as done, rather than performing our own
+		 */
+		if ( this.s.dt.bFiltered || this.s.dt.bSorted ) {
+			this.s.lastScrollTop = 0;
+			return;
+		}
+
+		/* Update the table's information display for what is now in the viewport */
+		this._info();
+
+		/* We don't want to state save on every scroll event - that's heavy
+		 * handed, so use a timeout to update the state saving only when the
+		 * scrolling has finished
+		 */
+		clearTimeout( this.s.stateTO );
+		this.s.stateTO = setTimeout( function () {
+			that.s.dtApi.state.save();
+		}, 250 );
+
+		this.s.scrollType = Math.abs(iScrollTop - this.s.lastScrollTop) > heights.viewport ?
+			'jump' :
+			'cont';
+
+		this.s.topRowFloat = this.s.scrollType === 'cont' ?
+			this.pixelsToRow( iScrollTop, false, false ) :
+			this._domain( 'physicalToVirtual', iScrollTop ) / heights.row;
+
+		if ( this.s.topRowFloat < 0 ) {
+			this.s.topRowFloat = 0;
+		}
+
+		/* Check if the scroll point is outside the trigger boundary which would required
+		 * a DataTables redraw
+		 */
+		if ( this.s.forceReposition || iScrollTop < this.s.redrawTop || iScrollTop > this.s.redrawBottom ) {
+			var preRows = Math.ceil( ((this.s.displayBuffer-1)/2) * this.s.viewportRows );
+
+			iTopRow = parseInt(this.s.topRowFloat, 10) - preRows;
+			this.s.forceReposition = false;
+
+			if ( iTopRow <= 0 ) {
+				/* At the start of the table */
+				iTopRow = 0;
+			}
+			else if ( iTopRow + this.s.dt._iDisplayLength > this.s.dt.fnRecordsDisplay() ) {
+				/* At the end of the table */
+				iTopRow = this.s.dt.fnRecordsDisplay() - this.s.dt._iDisplayLength;
+				if ( iTopRow < 0 ) {
+					iTopRow = 0;
+				}
+			}
+			else if ( iTopRow % 2 !== 0 ) {
+				// For the row-striping classes (odd/even) we want only to start
+				// on evens otherwise the stripes will change between draws and
+				// look rubbish
+				iTopRow++;
+			}
+
+
+			if ( iTopRow != this.s.dt._iDisplayStart ) {
+				/* Cache the new table position for quick lookups */
+				this.s.tableTop = $(this.s.dt.nTable).offset().top;
+				this.s.tableBottom = $(this.s.dt.nTable).height() + this.s.tableTop;
+
+				var draw =  function () {
+					if ( that.s.scrollDrawReq === null ) {
+						that.s.scrollDrawReq = iScrollTop;
+					}
+
+					that.s.dt._iDisplayStart = iTopRow;
+					that.s.dt.oApi._fnDraw( that.s.dt );
+				};
+
+				/* Do the DataTables redraw based on the calculated start point - note that when
+				 * using server-side processing we introduce a small delay to not DoS the server...
+				 */
+				if ( this.s.dt.oFeatures.bServerSide ) {
+					clearTimeout( this.s.drawTO );
+					this.s.drawTO = setTimeout( draw, this.s.serverWait );
+				}
+				else {
+					draw();
+				}
+
+				if ( this.dom.loader && ! this.s.loaderVisible ) {
+					this.dom.loader.css( 'display', 'block' );
+					this.s.loaderVisible = true;
+				}
+			}
+		}
+		else {
+			this.s.topRowFloat = this.pixelsToRow( iScrollTop, false, true );
+		}
+
+		this.s.lastScrollTop = iScrollTop;
+		this.s.stateSaveThrottle();
+
+		if ( this.s.scrollType === 'jump' && this.s.mousedown ) {
+			this.dom.label
+				.html( this.s.dt.fnFormatNumber( parseInt( this.s.topRowFloat, 10 )+1 ) )
+				.css( 'top', iScrollTop + (iScrollTop * heights.labelFactor ) )
+				.css( 'display', 'block' );
+		}
+	},
+
+	/**
+	 * Force the scrolling container to have height beyond that of just the
+	 * table that has been drawn so the user can scroll the whole data set.
+	 *
+	 * Note that if the calculated required scrolling height exceeds a maximum
+	 * value (1 million pixels - hard-coded) the forcing element will be set
+	 * only to that maximum value and virtual / physical domain transforms will
+	 * be used to allow Scroller to display tables of any number of records.
+	 *  @returns {void}
+	 *  @private
+	 */
+	_scrollForce: function ()
+	{
+		var heights = this.s.heights;
+		var max = 1000000;
+
+		heights.virtual = heights.row * this.s.dt.fnRecordsDisplay();
+		heights.scroll = heights.virtual;
+
+		if ( heights.scroll > max ) {
+			heights.scroll = max;
+		}
+
+		// Minimum height so there is always a row visible (the 'no rows found'
+		// if reduced to zero filtering)
+		this.dom.force.style.height = heights.scroll > this.s.heights.row ?
+			heights.scroll+'px' :
+			this.s.heights.row+'px';
+	}
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Statics
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * Scroller default settings for initialisation
+ *  @namespace
+ *  @name Scroller.defaults
+ *  @static
+ */
+Scroller.defaults = {
+	/**
+	 * Scroller uses the boundary scaling factor to decide when to redraw the table - which it
+	 * typically does before you reach the end of the currently loaded data set (in order to
+	 * allow the data to look continuous to a user scrolling through the data). If given as 0
+	 * then the table will be redrawn whenever the viewport is scrolled, while 1 would not
+	 * redraw the table until the currently loaded data has all been shown. You will want
+	 * something in the middle - the default factor of 0.5 is usually suitable.
+	 *  @type     float
+	 *  @default  0.5
+	 *  @static
+	 */
+	boundaryScale: 0.5,
+
+	/**
+	 * The display buffer is what Scroller uses to calculate how many rows it should pre-fetch
+	 * for scrolling. Scroller automatically adjusts DataTables' display length to pre-fetch
+	 * rows that will be shown in "near scrolling" (i.e. just beyond the current display area).
+	 * The value is based upon the number of rows that can be displayed in the viewport (i.e.
+	 * a value of 1), and will apply the display range to records before before and after the
+	 * current viewport - i.e. a factor of 3 will allow Scroller to pre-fetch 1 viewport's worth
+	 * of rows before the current viewport, the current viewport's rows and 1 viewport's worth
+	 * of rows after the current viewport. Adjusting this value can be useful for ensuring
+	 * smooth scrolling based on your data set.
+	 *  @type     int
+	 *  @default  7
+	 *  @static
+	 */
+	displayBuffer: 9,
+
+	/**
+	 * Show (or not) the loading element in the background of the table. Note that you should
+	 * include the dataTables.scroller.css file for this to be displayed correctly.
+	 *  @type     boolean
+	 *  @default  false
+	 *  @static
+	 */
+	loadingIndicator: false,
+
+	/**
+	 * Scroller will attempt to automatically calculate the height of rows for it's internal
+	 * calculations. However the height that is used can be overridden using this parameter.
+	 *  @type     int|string
+	 *  @default  auto
+	 *  @static
+	 */
+	rowHeight: "auto",
+
+	/**
+	 * When using server-side processing, Scroller will wait a small amount of time to allow
+	 * the scrolling to finish before requesting more data from the server. This prevents
+	 * you from DoSing your own server! The wait time can be configured by this parameter.
+	 *  @type     int
+	 *  @default  200
+	 *  @static
+	 */
+	serverWait: 200
+};
+
+Scroller.oDefaults = Scroller.defaults;
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * Scroller version
+ *  @type      String
+ *  @default   See code
+ *  @name      Scroller.version
+ *  @static
+ */
+Scroller.version = "2.0.1";
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Initialisation
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'preInit.dt.dtscroller', function (e, settings) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	var init = settings.oInit.scroller;
+	var defaults = DataTable.defaults.scroller;
+
+	if ( init || defaults ) {
+		var opts = $.extend( {}, init, defaults );
+
+		if ( init !== false ) {
+			new Scroller( settings, opts  );
+		}
+	}
+} );
+
+
+// Attach Scroller to DataTables so it can be accessed as an 'extra'
+$.fn.dataTable.Scroller = Scroller;
+$.fn.DataTable.Scroller = Scroller;
+
+
+// DataTables 1.10 API method aliases
+var Api = $.fn.dataTable.Api;
+
+Api.register( 'scroller()', function () {
+	return this;
+} );
+
+// Undocumented and deprecated - is it actually useful at all?
+Api.register( 'scroller().rowToPixels()', function ( rowIdx, intParse, virtual ) {
+	var ctx = this.context;
+
+	if ( ctx.length && ctx[0].oScroller ) {
+		return ctx[0].oScroller.rowToPixels( rowIdx, intParse, virtual );
+	}
+	// undefined
+} );
+
+// Undocumented and deprecated - is it actually useful at all?
+Api.register( 'scroller().pixelsToRow()', function ( pixels, intParse, virtual ) {
+	var ctx = this.context;
+
+	if ( ctx.length && ctx[0].oScroller ) {
+		return ctx[0].oScroller.pixelsToRow( pixels, intParse, virtual );
+	}
+	// undefined
+} );
+
+// `scroller().scrollToRow()` is undocumented and deprecated. Use `scroller.toPosition()
+Api.register( ['scroller().scrollToRow()', 'scroller.toPosition()'], function ( idx, ani ) {
+	this.iterator( 'table', function ( ctx ) {
+		if ( ctx.oScroller ) {
+			ctx.oScroller.scrollToRow( idx, ani );
+		}
+	} );
+
+	return this;
+} );
+
+Api.register( 'row().scrollTo()', function ( ani ) {
+	var that = this;
+
+	this.iterator( 'row', function ( ctx, rowIdx ) {
+		if ( ctx.oScroller ) {
+			var displayIdx = that
+				.rows( { order: 'applied', search: 'applied' } )
+				.indexes()
+				.indexOf( rowIdx );
+
+			ctx.oScroller.scrollToRow( displayIdx, ani );
+		}
+	} );
+
+	return this;
+} );
+
+Api.register( 'scroller.measure()', function ( redraw ) {
+	this.iterator( 'table', function ( ctx ) {
+		if ( ctx.oScroller ) {
+			ctx.oScroller.measure( redraw );
+		}
+	} );
+
+	return this;
+} );
+
+Api.register( 'scroller.page()', function() {
+	var ctx = this.context;
+
+	if ( ctx.length && ctx[0].oScroller ) {
+		return ctx[0].oScroller.pageInfo();
+	}
+	// undefined
+} );
+
+return Scroller;
+}));
+
+
+/*! SearchPanes 1.0.1
+ * 2019-2020 SpryMedia Ltd - datatables.net/license
+ */
+(function () {
+    'use strict';
+
+    var DataTable = $.fn.dataTable;
+    var SearchPane = /** @class */ (function () {
+        /**
+         * Creates the panes, sets up the search function
+         * @param paneSettings The settings for the searchPanes
+         * @param opts The options for the default features
+         * @param idx the index of the column for this pane
+         * @returns {object} the pane that has been created, including the table and the index of the pane
+         */
+        function SearchPane(paneSettings, opts, idx, layout, panesContainer, panes) {
+            var _this = this;
+            if (panes === void 0) { panes = null; }
+            // Check that the required version of DataTables is included
+            if (!DataTable || !DataTable.versionCheck || !DataTable.versionCheck('1.10.0')) {
+                throw new Error('SearchPane requires DataTables 1.10 or newer');
+            }
+            // Check that Select is included
+            if (!DataTable.select) {
+                throw new Error('SearchPane requires Select');
+            }
+            var table = new DataTable.Api(paneSettings);
+            this.classes = $.extend(true, {}, SearchPane.classes);
+            // Get options from user
+            this.c = $.extend(true, {}, SearchPane.defaults, opts);
+            this.customPaneSettings = panes;
+            this.s = {
+                cascadeRegen: false,
+                clearing: false,
+                colOpts: [],
+                deselect: false,
+                displayed: false,
+                dt: table,
+                dtPane: undefined,
+                filteringActive: false,
+                index: idx,
+                indexes: [],
+                lastSelect: false,
+                redraw: false,
+                rowData: {
+                    arrayFilter: [],
+                    arrayOriginal: [],
+                    arrayTotals: [],
+                    bins: {},
+                    binsOriginal: {},
+                    binsTotal: {},
+                    filterMap: new Map()
+                },
+                searchFunction: undefined,
+                selectPresent: false,
+                updating: false
+            };
+            var rowLength = table.columns().eq(0).toArray().length;
+            this.colExists = this.s.index < rowLength;
+            // Add extra elements to DOM object including clear and hide buttons
+            this.c.layout = layout;
+            var layVal = parseInt(layout.split('-')[1], 10);
+            this.dom = {
+                buttonGroup: $('<div/>').addClass(this.classes.buttonGroup),
+                clear: $('<button type="button">&#215;</button>')
+                    .addClass(this.classes.dull)
+                    .addClass(this.classes.paneButton)
+                    .addClass(this.classes.clearButton),
+                container: $('<div/>').addClass(this.classes.container).addClass(this.classes.layout +
+                    (layVal < 7 ? layout : layout.split('-')[0] + '-6')),
+                countButton: $('<button type="button"></button>')
+                    .addClass(this.classes.paneButton)
+                    .addClass(this.classes.countButton),
+                dtP: $('<table><thead><tr><th>' +
+                    (this.colExists
+                        ? $(table.column(this.colExists ? this.s.index : 0).header()).text()
+                        : this.customPaneSettings.header || 'Custom Pane') + '</th><th/></tr></thead></table>'),
+                lower: $('<div/>').addClass(this.classes.subRow2).addClass(this.classes.narrowButton),
+                nameButton: $('<button type="button"></button>').addClass(this.classes.paneButton).addClass(this.classes.nameButton),
+                searchBox: $('<input/>').addClass(this.classes.paneInputButton).addClass(this.classes.search),
+                searchButton: $('<button type = "button" class="' + this.classes.searchIcon + '"></button>')
+                    .addClass(this.classes.paneButton),
+                searchCont: $('<div/>').addClass(this.classes.searchCont),
+                searchLabelCont: $('<div/>').addClass(this.classes.searchLabelCont),
+                topRow: $('<div/>').addClass(this.classes.topRow),
+                upper: $('<div/>').addClass(this.classes.subRow1).addClass(this.classes.narrowSearch)
+            };
+            this.s.displayed = false;
+            table = this.s.dt;
+            this.selections = [];
+            this.s.colOpts = this.colExists ? this._getOptions() : this._getBonusOptions();
+            var colOpts = this.s.colOpts;
+            var clear = $('<button type="button">X</button>').addClass(this.classes.paneButton);
+            $(clear).text(table.i18n('searchPanes.clearPane', 'X'));
+            this.dom.container.addClass(colOpts.className);
+            this.dom.container.addClass((this.customPaneSettings !== null && this.customPaneSettings.className !== undefined)
+                ? this.customPaneSettings.className
+                : '');
+            $(panesContainer).append(this.dom.container);
+            var tableNode = table.table(0).node();
+            // Custom search function for table
+            this.s.searchFunction = function (settings, searchData, dataIndex, origData) {
+                // If no data has been selected then show all
+                if (_this.selections.length === 0) {
+                    return true;
+                }
+                if (settings.nTable !== tableNode) {
+                    return true;
+                }
+                var filter = '';
+                if (_this.colExists) {
+                    // Get the current filtered data
+                    filter = searchData[_this.s.index];
+                    if (colOpts.orthogonal.filter !== 'filter') {
+                        // get the filter value from the map
+                        filter = _this.s.rowData.filterMap.get(dataIndex);
+                        if (filter instanceof $.fn.dataTable.Api) {
+                            filter = filter.toArray();
+                        }
+                    }
+                }
+                return _this._search(filter, dataIndex);
+            };
+            $.fn.dataTable.ext.search.push(this.s.searchFunction);
+            // If the clear button for this pane is clicked clear the selections
+            if (this.c.clear) {
+                $(clear).on('click', function () {
+                    var searches = _this.dom.container.find(_this.classes.search);
+                    searches.each(function () {
+                        $(this).val('');
+                        $(this).trigger('input');
+                    });
+                    _this.clearPane();
+                });
+            }
+            // Sometimes the top row of the panes containing the search box and ordering buttons appears
+            //  weird if the width of the panes is lower than expected, this fixes the design.
+            // Equally this may occur when the table is resized.
+            table.on('draw.dtsp', function () {
+                _this._adjustTopRow();
+            });
+            $(window).on('resize.dtsp', DataTable.util.throttle(function () {
+                _this._adjustTopRow();
+            }));
+            // When column-reorder is present and the columns are moved, it is necessary to
+            //  reassign all of the panes indexes to the new index of the column.
+            table.on('column-reorder.dtsp', function (e, settings, details) {
+                _this.s.index = details.mapping[_this.s.index];
+            });
+            return this;
+        }
+        /**
+         * In the case of a rebuild there is potential for new data to have been included or removed
+         * so all of the rowData must be reset as a precaution.
+         */
+        SearchPane.prototype.clearData = function () {
+            this.s.rowData = {
+                arrayFilter: [],
+                arrayOriginal: [],
+                arrayTotals: [],
+                bins: {},
+                binsOriginal: {},
+                binsTotal: {},
+                filterMap: new Map()
+            };
+        };
+        /**
+         * Clear the selections in the pane
+         */
+        SearchPane.prototype.clearPane = function () {
+            // Deselect all rows which are selected and update the table and filter count.
+            this.s.dtPane.rows({ selected: true }).deselect();
+            this.updateTable();
+            return this;
+        };
+        /**
+         * Strips all of the SearchPanes elements from the document and turns all of the listeners for the buttons off
+         */
+        SearchPane.prototype.destroy = function () {
+            $(this.s.dtPane).off('.dtsp');
+            $(this.s.dt).off('.dtsp');
+            $(this.dom.nameButton).off('.dtsp');
+            $(this.dom.countButton).off('.dtsp');
+            $(this.dom.clear).off('.dtsp');
+            $(this.dom.searchButton).off('.dtsp');
+            $(this.dom.container).remove();
+            var searchIdx = $.fn.dataTable.ext.search.indexOf(this.s.searchFunction);
+            while (searchIdx !== -1) {
+                $.fn.dataTable.ext.search.splice(searchIdx, 1);
+                searchIdx = $.fn.dataTable.ext.search.indexOf(this.s.searchFunction);
+            }
+            // If the datatables have been defined for the panes then also destroy these
+            if (this.s.dtPane !== undefined) {
+                this.s.dtPane.destroy();
+            }
+        };
+        /**
+         * Updates the number of filters that have been applied in the title
+         */
+        SearchPane.prototype.getPaneCount = function () {
+            return this.s.dtPane !== undefined ?
+                this.s.dtPane.rows({ selected: true }).data().toArray().length :
+                0;
+        };
+        /**
+         * Rebuilds the panes from the start having deleted the old ones
+         */
+        SearchPane.prototype.rebuildPane = function () {
+            this.clearData();
+            // When rebuilding strip all of the HTML Elements out of the container and start from scratch
+            if (this.s.dtPane !== undefined) {
+                this.s.dtPane.clear().destroy();
+            }
+            this.dom.container.removeClass(this.classes.hidden);
+            this.s.displayed = false;
+            this._buildPane();
+            return this;
+        };
+        /**
+         * removes the pane from the page and sets the displayed property to false.
+         */
+        SearchPane.prototype.removePane = function () {
+            this.s.displayed = false;
+            $(this.dom.container).hide();
+        };
+        /**
+         * Sets the cascadeRegen property of the pane. Accessible from above because as SearchPanes.ts deals with the rebuilds.
+         * @param val the boolean value that the cascadeRegen property is to be set to
+         */
+        SearchPane.prototype.setCascadeRegen = function (val) {
+            this.s.cascadeRegen = val;
+        };
+        /**
+         * This function allows the clearing property to be assigned. This is used when implementing cascadePane.
+         * In setting this to true for the clearing of the panes selection on the deselects it forces the pane to
+         * repopulate from the entire dataset not just the displayed values.
+         * @param val the boolean value which the clearing property is to be assigned
+         */
+        SearchPane.prototype.setClear = function (val) {
+            this.s.clearing = val;
+        };
+        /**
+         * Updates the values of all of the panes
+         * @param draw whether this has been triggered by a draw event or not
+         */
+        SearchPane.prototype.updatePane = function (draw) {
+            if (draw === void 0) { draw = false; }
+            this.s.updating = true;
+            this._updateCommon(draw);
+            this.s.updating = false;
+        };
+        /**
+         * Updates the panes if one of the options to do so has been set to true
+         *   rather than the filtered message when using viewTotal.
+         */
+        SearchPane.prototype.updateTable = function () {
+            var selectedRows = this.s.dtPane.rows({ selected: true }).data().toArray();
+            this.selections = selectedRows;
+            this._searchExtras();
+            // If either of the options that effect how the panes are displayed are selected then update the Panes
+            if (this.c.cascadePanes || this.c.viewTotal) {
+                this.updatePane();
+            }
+        };
+        /**
+         * Takes in potentially undetected rows and adds them to the array if they are not yet featured
+         * @param filter the filter value of the potential row
+         * @param display the display value of the potential row
+         * @param sort the sort value of the potential row
+         * @param type the type value of the potential row
+         * @param arrayFilter the array to be populated
+         * @param bins the bins to be populated
+         */
+        SearchPane.prototype._addOption = function (filter, display, sort, type, arrayFilter, bins) {
+            // If the filter is an array then take a note of this, and add the elements to the arrayFilter array
+            if (Array.isArray(filter) || filter instanceof DataTable.Api) {
+                // Convert to an array so that we can work with it
+                if (filter instanceof DataTable.Api) {
+                    filter = filter.toArray();
+                    display = display.toArray();
+                }
+                if (filter.length === display.length) {
+                    for (var i = 0; i < filter.length; i++) {
+                        // If we haven't seen this row before add it
+                        if (!bins[filter[i]]) {
+                            bins[filter[i]] = 1;
+                            arrayFilter.push({
+                                display: display[i],
+                                filter: filter[i],
+                                sort: sort,
+                                type: type
+                            });
+                        }
+                        // Otherwise just increment the count
+                        else {
+                            bins[filter[i]]++;
+                        }
+                    }
+                    return;
+                }
+                else {
+                    throw new Error('display and filter not the same length');
+                }
+            }
+            // If the values were affected by othogonal data and are not an array then check if it is already present
+            else if (typeof this.s.colOpts.orthogonal === 'string') {
+                if (!bins[filter]) {
+                    bins[filter] = 1;
+                    arrayFilter.push({
+                        display: display,
+                        filter: filter,
+                        sort: sort,
+                        type: type
+                    });
+                }
+                else {
+                    bins[filter]++;
+                    return;
+                }
+            }
+            // Otherwise we must just be adding an option
+            else {
+                arrayFilter.push({
+                    display: display,
+                    filter: filter,
+                    sort: sort,
+                    type: type
+                });
+            }
+        };
+        /**
+         * Adds a row to the panes table
+         * @param display the value to be displayed to the user
+         * @param filter the value to be filtered on when searchpanes is implemented
+         * @param shown the number of rows in the table that are currently visible matching this criteria
+         * @param total the total number of rows in the table that match this criteria
+         * @param sort the value to be sorted in the pane table
+         * @param type the value of which the type is to be derived from
+         */
+        SearchPane.prototype._addRow = function (display, filter, shown, total, sort, type) {
+            var index;
+            for (var _i = 0, _a = this.s.indexes; _i < _a.length; _i++) {
+                var entry = _a[_i];
+                if (entry.filter === filter) {
+                    index = entry.index;
+                }
+            }
+            if (index === undefined) {
+                index = this.s.indexes.length;
+                this.s.indexes.push({ filter: filter, index: index });
+            }
+            return this.s.dtPane.row.add({
+                display: display !== '' ? display : this.c.emptyMessage,
+                filter: filter,
+                index: index,
+                shown: shown,
+                sort: sort !== '' ? sort : this.c.emptyMessage,
+                total: total,
+                type: type
+            });
+        };
+        /**
+         * Adjusts the layout of the top row when the screen is resized
+         */
+        SearchPane.prototype._adjustTopRow = function () {
+            var subContainers = this.dom.container.find('.' + this.classes.subRowsContainer);
+            var subRow1 = this.dom.container.find('.dtsp-subRow1');
+            var subRow2 = this.dom.container.find('.dtsp-subRow2');
+            var topRow = this.dom.container.find('.' + this.classes.topRow);
+            // If the width is 0 then it is safe to assume that the pane has not yet been displayed.
+            //  Even if it has, if the width is 0 it won't make a difference if it has the narrow class or not
+            if (($(subContainers[0]).width() < 252 || $(topRow[0]).width() < 252) && $(subContainers[0]).width() !== 0) {
+                $(subContainers[0]).addClass(this.classes.narrow);
+                $(subRow1[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowSearch);
+                $(subRow2[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowButton);
+            }
+            else {
+                $(subContainers[0]).removeClass(this.classes.narrow);
+                $(subRow1[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowSearch);
+                $(subRow2[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowButton);
+            }
+        };
+        /**
+         * Method to construct the actual pane.
+         */
+        SearchPane.prototype._buildPane = function () {
+            var _this = this;
+            // Aliases
+            this.selections = [];
+            var table = this.s.dt;
+            var column = table.column(this.colExists ? this.s.index : 0);
+            var colOpts = this.s.colOpts;
+            var rowData = this.s.rowData;
+            // Other Variables
+            var countMessage = table.i18n('searchPanes.count', '{total}');
+            var filteredMessage = table.i18n('searchPanes.countFiltered', '{shown} ({total})');
+            var loadedFilter = table.state.loaded();
+            // If it is not a custom pane in place
+            if (this.colExists) {
+                var idx = -1;
+                if (loadedFilter && loadedFilter.searchPanes && loadedFilter.searchPanes.panes) {
+                    for (var i = 0; i < loadedFilter.searchPanes.panes.length; i++) {
+                        if (loadedFilter.searchPanes.panes[i].id === this.s.index) {
+                            idx = i;
+                            break;
+                        }
+                    }
+                }
+                // Perform checks that do not require populate pane to run
+                if ((colOpts.show === false
+                    || (colOpts.show !== undefined && colOpts.show !== true)) &&
+                    idx === -1) {
+                    this.dom.container.addClass(this.classes.hidden);
+                    this.s.displayed = false;
+                    return false;
+                }
+                else if (colOpts.show === true || idx !== -1) {
+                    this.s.displayed = true;
+                }
+                // Only run populatePane if the data has not been collected yet
+                if (rowData.arrayFilter.length === 0) {
+                    this._populatePane();
+                    if (loadedFilter && loadedFilter.searchPanes && loadedFilter.searchPanes.panes) {
+                        // If the index is not found then no data has been added to the state for this pane,
+                        //  which will only occur if it has previously failed to meet the criteria to be
+                        //  displayed, therefore we can just hide it again here
+                        if (idx !== -1) {
+                            rowData.binsOriginal = loadedFilter.searchPanes.panes[idx].bins;
+                            rowData.arrayOriginal = loadedFilter.searchPanes.panes[idx].arrayFilter;
+                        }
+                        else {
+                            this.dom.container.addClass(this.classes.hidden);
+                            this.s.displayed = false;
+                            return;
+                        }
+                    }
+                    else {
+                        rowData.arrayOriginal = rowData.arrayFilter;
+                        rowData.binsOriginal = rowData.bins;
+                    }
+                }
+                var binLength = Object.keys(rowData.binsOriginal).length;
+                var uniqueRatio = this._uniqueRatio(binLength, table.rows()[0].length);
+                // Don't show the pane if there isn't enough variance in the data, or there is only 1 entry for that pane
+                if (this.s.displayed === false && ((colOpts.show === undefined && colOpts.threshold === null ?
+                    uniqueRatio > this.c.threshold :
+                    uniqueRatio > colOpts.threshold)
+                    || (colOpts.show !== true && binLength <= 1))) {
+                    this.dom.container.addClass(this.classes.hidden);
+                    this.s.displayed = false;
+                    return;
+                }
+                // If the option viewTotal is true then find
+                // the total count for the whole table to display alongside the displayed count
+                if (this.c.viewTotal && rowData.arrayTotals.length === 0) {
+                    this._detailsPane();
+                }
+                else {
+                    rowData.binsTotal = rowData.bins;
+                }
+                this.dom.container.addClass(this.classes.show);
+                this.s.displayed = true;
+            }
+            else {
+                this.s.displayed = true;
+            }
+            // If the variance is accceptable then display the search pane
+            this._displayPane();
+            // Here, when the state is loaded if the data object on the original table is empty,
+            //  then a state.clear() must have occurred, so delete all of the panes tables state objects too.
+            this.dom.dtP.on('stateLoadParams.dt', function (e, settings, data) {
+                if ($.isEmptyObject(table.state.loaded())) {
+                    $.each(data, function (index, value) {
+                        delete data[index];
+                    });
+                }
+            });
+            // Declare the datatable for the pane
+            var errMode = $.fn.dataTable.ext.errMode;
+            $.fn.dataTable.ext.errMode = 'none';
+            var haveScroller = DataTable.Scroller;
+            this.s.dtPane = $(this.dom.dtP).DataTable($.extend(true, {
+                dom: 't',
+                columnDefs: [
+                    {
+                        className: 'dtsp-nameColumn',
+                        data: 'display',
+                        render: function (data, type, row) {
+                            if (type === 'sort') {
+                                return row.sort;
+                            }
+                            else if (type === 'type') {
+                                return row.type;
+                            }
+                            var message;
+                            _this.s.filteringActive && _this.c.viewTotal
+                                ? message = filteredMessage.replace(/{total}/, row.total)
+                                : message = countMessage.replace(/{total}/, row.total);
+                            message = message.replace(/{shown}/, row.shown);
+                            while (message.indexOf('{total}') !== -1) {
+                                message = message.replace(/{total}/, row.total);
+                            }
+                            while (message.indexOf('{shown}') !== -1) {
+                                message = message.replace(/{shown}/, row.shown);
+                            }
+                            // We are displaying the count in the same columne as the name of the search option.
+                            // This is so that there is not need to call columns.adjust(), which in turn speeds up the code
+                            var displayMessage = '';
+                            var pill = '<span class="' + _this.classes.pill + '">' + message + '</span>';
+                            if (_this.c.hideCount || colOpts.hideCount) {
+                                pill = '';
+                            }
+                            if (!_this.c.dataLength) {
+                                displayMessage = '<span class="' + _this.classes.name + '">' + data + '</span>' + pill;
+                            }
+                            else if (data.length > _this.c.dataLength) {
+                                displayMessage = '<span class="' + _this.classes.name + '">'
+                                    + data.substr(0, _this.c.dataLength) + '...'
+                                    + '</span>'
+                                    + pill;
+                            }
+                            else {
+                                displayMessage = '<span class="' + _this.classes.name + '">' + data + '</span>' + pill;
+                            }
+                            return displayMessage;
+                        },
+                        targets: 0,
+                        // Accessing the private datatables property to set type based on the original table.
+                        // This is null if not defined by the user, meaning that automatic type detection would take place
+                        type: table.settings()[0].aoColumns[this.s.index] !== undefined ?
+                            table.settings()[0].aoColumns[this.s.index]._sManualType :
+                            null
+                    },
+                    {
+                        className: 'dtsp-countColumn ' + this.classes.badgePill,
+                        data: 'total',
+                        targets: 1,
+                        visible: false
+                    }
+                ],
+                deferRender: true,
+                info: false,
+                paging: haveScroller ? true : false,
+                scrollY: '200px',
+                scroller: haveScroller ? true : false,
+                select: true,
+                stateSave: table.settings()[0].oFeatures.bStateSave ? true : false
+            }, this.c.dtOpts, colOpts !== undefined ? colOpts.dtOpts : {}, (this.customPaneSettings !== null && this.customPaneSettings.dtOpts !== undefined)
+                ? this.customPaneSettings.dtOpts
+                : {}));
+            $(this.dom.dtP).addClass(this.classes.table);
+            // This is hacky but necessary for when datatables is generating the column titles automatically
+            $(this.dom.searchBox).attr('placeholder', colOpts.header !== undefined
+                ? colOpts.header
+                : this.colExists
+                    ? table.settings()[0].aoColumns[this.s.index].sTitle
+                    : this.customPaneSettings.header || 'Custom Pane');
+            // As the pane table is not in the document yet we must initialise select ourselves
+            $.fn.dataTable.select.init(this.s.dtPane);
+            $.fn.dataTable.ext.errMode = errMode;
+            // If it is not a custom pane
+            if (this.colExists) {
+                // On initialisation, do we need to set a filtering value from a
+                // saved state or init option?
+                var search = column.search();
+                search = search ? search.substr(1, search.length - 2).split('|') : [];
+                // Count the number of empty cells
+                var count_1 = 0;
+                rowData.arrayFilter.forEach(function (element) {
+                    if (element.filter === '') {
+                        count_1++;
+                    }
+                });
+                // Add all of the search options to the pane
+                for (var i = 0, ien = rowData.arrayFilter.length; i < ien; i++) {
+                    if (rowData.arrayFilter[i] && (rowData.bins[rowData.arrayFilter[i].filter] !== undefined || !this.c.cascadePanes)) {
+                        var row = this._addRow(rowData.arrayFilter[i].display, rowData.arrayFilter[i].filter, rowData.bins[rowData.arrayFilter[i].filter], rowData.binsTotal[rowData.arrayFilter[i].filter], rowData.arrayFilter[i].sort, rowData.arrayFilter[i].type);
+                        if (colOpts.preSelect !== undefined && colOpts.preSelect.indexOf(rowData.arrayFilter[i].filter) !== -1) {
+                            row.select();
+                        }
+                    }
+                    else {
+                        this._addRow(this.c.emptyMessage, count_1, count_1, this.c.emptyMessage, this.c.emptyMessage, this.c.emptyMessage);
+                    }
+                }
+            }
+            // If there are custom options set or it is a custom pane then get them
+            if (colOpts.options !== undefined ||
+                (this.customPaneSettings !== null && this.customPaneSettings.options !== undefined)) {
+                this._getComparisonRows();
+            }
+            DataTable.select.init(this.s.dtPane);
+            // Display the pane
+            this.s.dtPane.draw();
+            // When an item is selected on the pane, add these to the array which holds selected items.
+            // Custom search will perform.
+            this.s.dtPane.on('select.dtsp', function () {
+                clearTimeout(t0);
+                $(_this.dom.clear).removeClass(_this.classes.dull);
+                _this.s.selectPresent = true;
+                if (!_this.s.updating) {
+                    _this._makeSelection();
+                }
+                _this.s.selectPresent = false;
+            });
+            // When saving the state store all of the selected rows for preselection next time around
+            this.s.dt.on('stateSaveParams.dtsp', function (e, settings, data) {
+                // If the data being passed in is empty then a state clear must have occured so clear the panes state as well
+                if ($.isEmptyObject(data)) {
+                    _this.s.dtPane.state.clear();
+                    return;
+                }
+                var selected = [];
+                var searchTerm;
+                var order;
+                var bins;
+                var arrayFilter;
+                // Get all of the data needed for the state save from the pane
+                if (_this.s.dtPane !== undefined) {
+                    selected = _this.s.dtPane.rows({ selected: true }).data().map(function (item) { return item.filter.toString(); }).toArray();
+                    searchTerm = $(_this.dom.searchBox).val();
+                    order = _this.s.dtPane.order();
+                    bins = rowData.binsOriginal;
+                    arrayFilter = rowData.arrayOriginal;
+                }
+                if (data.searchPanes === undefined) {
+                    data.searchPanes = {};
+                }
+                if (data.searchPanes.panes === undefined) {
+                    data.searchPanes.panes = [];
+                }
+                // Add the panes data to the state object
+                data.searchPanes.panes.push({
+                    arrayFilter: arrayFilter,
+                    bins: bins,
+                    id: _this.s.index,
+                    order: order,
+                    searchTerm: searchTerm,
+                    selected: selected
+                });
+            });
+            // Reload the selection, searchbox entry and ordering from the previous state
+            if (loadedFilter && loadedFilter.searchPanes && loadedFilter.searchPanes.panes) {
+                if (!this.c.cascadePanes) {
+                    this._reloadSelect(loadedFilter);
+                }
+                for (var _i = 0, _a = loadedFilter.searchPanes.panes; _i < _a.length; _i++) {
+                    var pane = _a[_i];
+                    if (pane.id === this.s.index) {
+                        $(this.dom.searchBox).val(pane.searchTerm);
+                        this.s.dt.order(pane.order);
+                    }
+                }
+            }
+            this.s.dtPane.on('user-select.dtsp', function (e, _dt, type, cell, originalEvent) {
+                originalEvent.stopPropagation();
+            });
+            // When the button to order by the name of the options is clicked then
+            //  change the ordering to whatever it isn't currently
+            $(this.dom.nameButton).on('click.dtsp', function () {
+                var currentOrder = _this.s.dtPane.order()[0][1];
+                _this.s.dtPane.order([0, currentOrder === 'asc' ? 'desc' : 'asc']).draw();
+            });
+            // When the button to order by the number of entries in the column is clicked then
+            //  change the ordering to whatever it isn't currently
+            $(this.dom.countButton).on('click.dtsp', function () {
+                var currentOrder = _this.s.dtPane.order()[0][1];
+                _this.s.dtPane.order([1, currentOrder === 'asc' ? 'desc' : 'asc']).draw();
+            });
+            // When the clear button is clicked reset the pane
+            $(this.dom.clear).on('click.dtsp', function () {
+                var searches = _this.dom.container.find('.' + _this.classes.search);
+                searches.each(function () {
+                    // set the value of the search box to be an empty string and then search on that, effectively reseting
+                    $(this).val('');
+                    $(this).trigger('input');
+                });
+                _this.clearPane();
+            });
+            // When the search button is clicked then draw focus to the search box
+            $(this.dom.searchButton).on('click.dtsp', function () {
+                $(_this.dom.searchBox).focus();
+            });
+            // When a character is inputted into the searchbox search the pane for matching values.
+            // Doing it this way means that no button has to be clicked to trigger a search, it is done asynchronously
+            $(this.dom.searchBox).on('input.dtsp', function () {
+                _this.s.dtPane.search($(_this.dom.searchBox).val()).draw();
+                _this.s.dt.state.save();
+            });
+            // Declare timeout Variable
+            var t0;
+            // When an item is deselected on the pane, re add the currently selected items to the array
+            // which holds selected items. Custom search will be performed.
+            this.s.dtPane.on('deselect.dtsp', function () {
+                t0 = setTimeout(function () {
+                    _this.s.deselect = true;
+                    if (_this.s.dtPane.rows({ selected: true }).data().toArray().length === 0) {
+                        $(_this.dom.clear).addClass(_this.classes.dull);
+                    }
+                    _this._makeSelection();
+                    _this.s.deselect = false;
+                    _this.s.dt.state.save();
+                }, 50);
+            });
+            // Make sure to save the state once the pane has been built
+            this.s.dt.state.save();
+            return true;
+        };
+        /**
+         * Update the array which holds the display and filter values for the table
+         */
+        SearchPane.prototype._detailsPane = function () {
+            var _this = this;
+            var table = this.s.dt;
+            this.s.rowData.arrayTotals = [];
+            this.s.rowData.binsTotal = {};
+            var settings = this.s.dt.settings()[0];
+            table.rows().every(function (rowIdx) {
+                _this._populatePaneArray(rowIdx, _this.s.rowData.arrayTotals, settings, _this.s.rowData.binsTotal);
+            });
+        };
+        /**
+         * Appends all of the HTML elements to their relevant parent Elements
+         */
+        SearchPane.prototype._displayPane = function () {
+            var container = this.dom.container;
+            var colOpts = this.s.colOpts;
+            var layVal = parseInt(this.c.layout.split('-')[1], 10);
+            //  Empty everything to start again
+            $(this.dom.topRow).empty();
+            $(this.dom.dtP).empty();
+            $(this.dom.topRow).addClass(this.classes.topRow);
+            // If there are more than 3 columns defined then make there be a smaller gap between the panes
+            if (layVal > 3) {
+                $(this.dom.container).addClass(this.classes.smallGap);
+            }
+            $(this.dom.topRow).addClass(this.classes.subRowsContainer);
+            $(this.dom.upper).appendTo(this.dom.topRow);
+            $(this.dom.lower).appendTo(this.dom.topRow);
+            $(this.dom.searchCont).appendTo(this.dom.upper);
+            $(this.dom.buttonGroup).appendTo(this.dom.lower);
+            // If no selections have been made in the pane then disable the clear button
+            if (this.c.dtOpts.searching === false ||
+                (colOpts.dtOpts !== undefined &&
+                    colOpts.dtOpts.searching === false) ||
+                (!this.c.controls || !colOpts.controls) ||
+                (this.customPaneSettings !== null &&
+                    this.customPaneSettings.dtOpts !== undefined &&
+                    this.customPaneSettings.dtOpts.searching !== undefined &&
+                    !this.customPaneSettings.dtOpts.searching)) {
+                $(this.dom.searchBox).attr('disabled', 'disabled')
+                    .removeClass(this.classes.paneInputButton)
+                    .addClass(this.classes.disabledButton);
+            }
+            $(this.dom.searchBox).appendTo(this.dom.searchCont);
+            // Create the contents of the searchCont div. Worth noting that this function will change when using semantic ui
+            this._searchContSetup();
+            // If the clear button is allowed to show then display it
+            if (this.c.clear && this.c.controls && colOpts.controls) {
+                $(this.dom.clear).appendTo(this.dom.buttonGroup);
+            }
+            if (this.c.orderable && colOpts.orderable && this.c.controls && colOpts.controls) {
+                $(this.dom.nameButton).appendTo(this.dom.buttonGroup);
+            }
+            // If the count column is hidden then don't display the ordering button for it
+            if (!this.c.hideCount &&
+                !colOpts.hideCount &&
+                this.c.orderable &&
+                colOpts.orderable &&
+                this.c.controls &&
+                colOpts.controls) {
+                $(this.dom.countButton).appendTo(this.dom.buttonGroup);
+            }
+            $(this.dom.topRow).prependTo(this.dom.container);
+            $(container).append(this.dom.dtP);
+            $(container).show();
+        };
+        /**
+         * Find the unique filter values in an array
+         * @param data empty array to populate with data which has not yet been found
+         * @param arrayFilter the array of all of the display and filter values for the table
+         */
+        SearchPane.prototype._findUnique = function (data, arrayFilter) {
+            var prev = [];
+            for (var _i = 0, arrayFilter_1 = arrayFilter; _i < arrayFilter_1.length; _i++) {
+                var filterEl = arrayFilter_1[_i];
+                // If the data has not already been processed then add it to the unique array and the previously processed array.
+                if (prev.indexOf(filterEl.filter) === -1) {
+                    data.push({
+                        display: filterEl.display,
+                        filter: filterEl.filter,
+                        sort: filterEl.sort,
+                        type: filterEl.type
+                    });
+                    prev.push(filterEl.filter);
+                }
+            }
+        };
+        /**
+         * Gets the options for the row for the customPanes
+         * @returns {object} The options for the row extended to include the options from the user.
+         */
+        SearchPane.prototype._getBonusOptions = function () {
+            // We need to reset the thresholds as if they have a value in colOpts then that value will be used
+            var defaultMutator = {
+                orthogonal: {
+                    threshold: null
+                },
+                threshold: null
+            };
+            return $.extend(true, {}, SearchPane.defaults, defaultMutator, this.c !== undefined ? this.c : {});
+        };
+        /**
+         * Adds the custom options to the pane
+         * @returns {Array} Returns the array of rows which have been added to the pane
+         */
+        SearchPane.prototype._getComparisonRows = function () {
+            var colOpts = this.s.colOpts;
+            // Find the appropriate options depending on whether this is a pane for a specific column or a custom pane
+            var options = colOpts.options !== undefined
+                ? colOpts.options
+                : this.customPaneSettings !== null && this.customPaneSettings.options !== undefined
+                    ? this.customPaneSettings.options
+                    : undefined;
+            if (options === undefined) {
+                return;
+            }
+            var tableVals = this.s.dt.rows({ search: 'applied' }).data().toArray();
+            var appRows = this.s.dt.rows({ search: 'applied' });
+            var tableValsTotal = this.s.dt.rows().data().toArray();
+            var allRows = this.s.dt.rows();
+            var rows = [];
+            // Clear all of the other rows from the pane, only custom options are to be displayed when they are defined
+            this.s.dtPane.clear();
+            for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {
+                var comp = options_1[_i];
+                // Initialise the object which is to be placed in the row
+                var insert = comp.label !== '' ? comp.label : this.c.emptyMessage;
+                var comparisonObj = {
+                    display: insert,
+                    filter: typeof comp.value === 'function' ? comp.value : [],
+                    shown: 0,
+                    sort: insert,
+                    total: 0,
+                    type: insert
+                };
+                // If a custom function is in place
+                if (typeof comp.value === 'function') {
+                    // Count the number of times the function evaluates to true for the data currently being displayed
+                    for (var tVal = 0; tVal < tableVals.length; tVal++) {
+                        if (comp.value.call(this.s.dt, tableVals[tVal], appRows[0][tVal])) {
+                            comparisonObj.shown++;
+                        }
+                    }
+                    // Count the number of times the function evaluates to true for the original data in the Table
+                    for (var i = 0; i < tableValsTotal.length; i++) {
+                        if (comp.value.call(this.s.dt, tableValsTotal[i], allRows[0][i])) {
+                            comparisonObj.total++;
+                        }
+                    }
+                    // Update the comparisonObj
+                    if (typeof comparisonObj.filter !== 'function') {
+                        comparisonObj.filter.push(comp.filter);
+                    }
+                }
+                // If cascadePanes is not active or if it is and the comparisonObj should be shown then add it to the pane
+                if (!this.c.cascadePanes || (this.c.cascadePanes && comparisonObj.shown !== 0)) {
+                    rows.push(this._addRow(comparisonObj.display, comparisonObj.filter, comparisonObj.shown, comparisonObj.total, comparisonObj.sort, comparisonObj.type));
+                }
+            }
+            return rows;
+        };
+        /**
+         * Gets the options for the row for the customPanes
+         * @returns {object} The options for the row extended to include the options from the user.
+         */
+        SearchPane.prototype._getOptions = function () {
+            var table = this.s.dt;
+            // We need to reset the thresholds as if they have a value in colOpts then that value will be used
+            var defaultMutator = {
+                orthogonal: {
+                    threshold: null
+                },
+                threshold: null
+            };
+            return $.extend(true, {}, SearchPane.defaults, defaultMutator, table.settings()[0].aoColumns[this.s.index].searchPanes);
+        };
+        /**
+         * This method allows for changes to the panes and table to be made when a selection or a deselection occurs
+         * @param select Denotes whether a selection has been made or not
+         */
+        SearchPane.prototype._makeSelection = function () {
+            this.updateTable();
+            this.s.updating = true;
+            this.s.dt.draw();
+            this.s.updating = false;
+        };
+        /**
+         * Fill the array with the values that are currently being displayed in the table
+         */
+        SearchPane.prototype._populatePane = function () {
+            var table = this.s.dt;
+            this.s.rowData.arrayFilter = [];
+            this.s.rowData.bins = {};
+            var settings = this.s.dt.settings()[0];
+            // If cascadePanes or viewTotal are active it is necessary to get the data which is currently
+            //  being displayed for their functionality.
+            var indexArray = (this.c.cascadePanes || this.c.viewTotal) && !this.s.clearing ?
+                table.rows({ search: 'applied' }).indexes() :
+                table.rows().indexes();
+            for (var _i = 0, indexArray_1 = indexArray; _i < indexArray_1.length; _i++) {
+                var index = indexArray_1[_i];
+                this._populatePaneArray(index, this.s.rowData.arrayFilter, settings);
+            }
+        };
+        /**
+         * Populates an array with all of the data for the table
+         * @param rowIdx The current row index to be compared
+         * @param arrayFilter The array that is to be populated with row Details
+         * @param bins The bins object that is to be populated with the row counts
+         */
+        SearchPane.prototype._populatePaneArray = function (rowIdx, arrayFilter, settings, bins) {
+            if (bins === void 0) { bins = this.s.rowData.bins; }
+            var colOpts = this.s.colOpts;
+            // Retrieve the rendered data from the cell using the fnGetCellData function
+            //  rather than the cell().render API method for optimisation
+            if (typeof colOpts.orthogonal === 'string') {
+                var rendered = settings.oApi._fnGetCellData(settings, rowIdx, this.s.index, colOpts.orthogonal);
+                this.s.rowData.filterMap.set(rowIdx, rendered);
+                this._addOption(rendered, rendered, rendered, rendered, arrayFilter, bins);
+            }
+            else {
+                var filter = settings.oApi._fnGetCellData(settings, rowIdx, this.s.index, colOpts.orthogonal.search);
+                this.s.rowData.filterMap.set(rowIdx, filter);
+                if (!bins[filter]) {
+                    bins[filter] = 1;
+                    this._addOption(filter, settings.oApi._fnGetCellData(settings, rowIdx, this.s.index, colOpts.orthogonal.display), settings.oApi._fnGetCellData(settings, rowIdx, this.s.index, colOpts.orthogonal.sort), settings.oApi._fnGetCellData(settings, rowIdx, this.s.index, colOpts.orthogonal.type), arrayFilter, bins);
+                }
+                else {
+                    bins[filter]++;
+                    return;
+                }
+            }
+        };
+        /**
+         * Reloads all of the previous selects into the panes
+         * @param loadedFilter The loaded filters from a previous state
+         */
+        SearchPane.prototype._reloadSelect = function (loadedFilter) {
+            // If the state was not saved don't selected any
+            if (loadedFilter === undefined) {
+                return;
+            }
+            var idx;
+            // For each pane, check that the loadedFilter list exists and is not null,
+            // find the id of each search item and set it to be selected.
+            for (var i = 0; i < loadedFilter.searchPanes.panes.length; i++) {
+                if (loadedFilter.searchPanes.panes[i].id === this.s.index) {
+                    idx = i;
+                    break;
+                }
+            }
+            if (idx !== undefined) {
+                var table = this.s.dtPane;
+                var rows = table.rows({ order: 'index' }).data().map(function (item) { return item.filter !== null ?
+                    item.filter.toString() :
+                    null; }).toArray();
+                for (var _i = 0, _a = loadedFilter.searchPanes.panes[idx].selected; _i < _a.length; _i++) {
+                    var filter = _a[_i];
+                    var id = -1;
+                    if (filter !== null) {
+                        id = rows.indexOf(filter.toString());
+                    }
+                    if (id > -1) {
+                        table.row(id).select();
+                        this.s.dt.state.save();
+                    }
+                }
+            }
+        };
+        /**
+         * This method decides whether a row should contribute to the pane or not
+         * @param filter the value that the row is to be filtered on
+         * @param dataIndex the row index
+         */
+        SearchPane.prototype._search = function (filter, dataIndex) {
+            var colOpts = this.s.colOpts;
+            var table = this.s.dt;
+            // For each item selected in the pane, check if it is available in the cell
+            for (var _i = 0, _a = this.selections; _i < _a.length; _i++) {
+                var colSelect = _a[_i];
+                // if the filter is an array then is the column present in it
+                if (Array.isArray(filter)) {
+                    if (filter.indexOf(colSelect.filter) !== -1) {
+                        return true;
+                    }
+                }
+                // if the filter is a function then does it meet the criteria of that function or not
+                else if (typeof colSelect.filter === 'function') {
+                    if (colSelect.filter.call(table, table.row(dataIndex).data(), dataIndex)) {
+                        if (!this.s.redraw) {
+                            this.updatePane();
+                        }
+                        if (colOpts.combiner === 'or') {
+                            return true;
+                        }
+                    }
+                    // If the combiner is an "and" then we need to check against all possible selections
+                    //  so if it fails here then the and is not met and return false
+                    else if (colOpts.combiner === 'and') {
+                        return false;
+                    }
+                }
+                // otherwise if the two filter values are equal then return true
+                else if (filter === colSelect.filter) {
+                    return true;
+                }
+            }
+            // If the combiner is an and then we need to check against all possible selections
+            //  so return true here if so because it would have returned false earlier if it had failed
+            if (colOpts.combiner === 'and') {
+                return true;
+            }
+            // Otherwise it hasn't matched with anything by this point so it must be false
+            else {
+                return false;
+            }
+        };
+        /**
+         * Creates the contents of the searchCont div
+         *
+         * NOTE This is overridden when semantic ui styling in order to integrate the search button into the text box.
+         */
+        SearchPane.prototype._searchContSetup = function () {
+            if (this.c.controls && this.s.colOpts.controls) {
+                $(this.dom.searchButton).appendTo(this.dom.searchLabelCont);
+            }
+            if (!(this.c.dtOpts.searching === false ||
+                this.s.colOpts.dtOpts.searching === false ||
+                (this.customPaneSettings !== null &&
+                    this.customPaneSettings.dtOpts !== undefined &&
+                    this.customPaneSettings.dtOpts.searching !== undefined &&
+                    !this.customPaneSettings.dtOpts.searching))) {
+                $(this.dom.searchLabelCont).appendTo(this.dom.searchCont);
+            }
+        };
+        /**
+         * Adds outline to the pane when a selection has been made
+         */
+        SearchPane.prototype._searchExtras = function () {
+            var updating = this.s.updating;
+            this.s.updating = true;
+            var filters = this.s.dtPane.rows({ selected: true }).data().pluck('filter').toArray();
+            var nullIndex = filters.indexOf(this.c.emptyMessage);
+            var container = $(this.s.dtPane.table().container());
+            // If null index is found then search for empty cells as a filter.
+            if (nullIndex > -1) {
+                filters[nullIndex] = '';
+            }
+            // If a filter has been applied then outline the respective pane, remove it when it no longer is.
+            if (filters.length > 0) {
+                container.addClass(this.classes.selected);
+            }
+            else if (filters.length === 0) {
+                container.removeClass(this.classes.selected);
+            }
+            this.s.updating = updating;
+        };
+        /**
+         * Finds the ratio of the number of different options in the table to the number of rows
+         * @param bins the number of different options in the table
+         * @param rowCount the total number of rows in the table
+         * @returns {number} returns the ratio
+         */
+        SearchPane.prototype._uniqueRatio = function (bins, rowCount) {
+            if (rowCount > 0) {
+                return bins / rowCount;
+            }
+            else {
+                return 1;
+            }
+        };
+        /**
+         * updates the options within the pane
+         * @param draw a flag to define whether this has been called due to a draw event or not
+         */
+        SearchPane.prototype._updateCommon = function (draw) {
+            if (draw === void 0) { draw = false; }
+            // Update the panes if doing a deselect. if doing a select then
+            // update all of the panes except for the one causing the change
+            if (this.s.dtPane !== undefined &&
+                ((!this.s.filteringActive || this.c.cascadePanes) || draw === true) &&
+                (this.c.cascadePanes !== true || this.s.selectPresent !== true) && !this.s.lastSelect) {
+                var colOpts = this.s.colOpts;
+                var selected = this.s.dtPane.rows({ selected: true }).data().toArray();
+                var scrollTop = $(this.s.dtPane.table().node()).parent()[0].scrollTop;
+                var rowData = this.s.rowData;
+                // Clear the pane in preparation for adding the updated search options
+                this.s.dtPane.clear();
+                // If it is not a custom pane
+                if (this.colExists) {
+                    // Only run populatePane if the data has not been collected yet
+                    if (rowData.arrayFilter.length === 0) {
+                        this._populatePane();
+                    }
+                    // If cascadePanes is active and the table has returned to its default state then
+                    //  there is a need to update certain parts ofthe rowData.
+                    else if (this.c.cascadePanes
+                        && this.s.dt.rows().data().toArray().length === this.s.dt.rows({ search: 'applied' }).data().toArray().length) {
+                        rowData.arrayFilter = rowData.arrayOriginal;
+                        rowData.bins = rowData.binsOriginal;
+                    }
+                    // Otherwise if viewTotal or cascadePanes is active then the data from the table must be read.
+                    else if (this.c.viewTotal || this.c.cascadePanes) {
+                        this._populatePane();
+                    }
+                    // If the viewTotal option is selected then find the totals for the table
+                    if (this.c.viewTotal) {
+                        this._detailsPane();
+                    }
+                    else {
+                        rowData.binsTotal = rowData.bins;
+                    }
+                    if (this.c.viewTotal && !this.c.cascadePanes) {
+                        rowData.arrayFilter = rowData.arrayTotals;
+                    }
+                    var _loop_1 = function (dataP) {
+                        // If both view Total and cascadePanes have been selected and the count of the row is not 0 then add it to pane
+                        // Do this also if the viewTotal option has been selected and cascadePanes has not
+                        if (dataP && ((rowData.bins[dataP.filter] !== undefined && rowData.bins[dataP.filter] !== 0 && this_1.c.cascadePanes)
+                            || !this_1.c.cascadePanes
+                            || this_1.s.clearing)) {
+                            var row = this_1._addRow(dataP.display, dataP.filter, !this_1.c.viewTotal
+                                ? rowData.bins[dataP.filter]
+                                : rowData.bins[dataP.filter] !== undefined
+                                    ? rowData.bins[dataP.filter]
+                                    : 0, this_1.c.viewTotal
+                                ? String(rowData.binsTotal[dataP.filter])
+                                : rowData.bins[dataP.filter], dataP.sort, dataP.type);
+                            // Find out if the filter was selected in the previous search, if so select it and remove from array.
+                            var selectIndex = selected.findIndex(function (element) {
+                                return element.filter === dataP.filter;
+                            });
+                            if (selectIndex !== -1) {
+                                row.select();
+                                selected.splice(selectIndex, 1);
+                            }
+                        }
+                    };
+                    var this_1 = this;
+                    for (var _i = 0, _a = rowData.arrayFilter; _i < _a.length; _i++) {
+                        var dataP = _a[_i];
+                        _loop_1(dataP);
+                    }
+                }
+                if ((colOpts.searchPanes !== undefined && colOpts.searchPanes.options !== undefined) ||
+                    colOpts.options !== undefined ||
+                    (this.customPaneSettings !== null && this.customPaneSettings.options !== undefined)) {
+                    var rows = this._getComparisonRows();
+                    var _loop_2 = function (row) {
+                        var selectIndex = selected.findIndex(function (element) {
+                            if (element.display === row.data().display) {
+                                return true;
+                            }
+                        });
+                        if (selectIndex !== -1) {
+                            row.select();
+                            selected.splice(selectIndex, 1);
+                        }
+                    };
+                    for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {
+                        var row = rows_1[_b];
+                        _loop_2(row);
+                    }
+                }
+                // Add search options which were previously selected but whos results are no
+                // longer present in the resulting data set.
+                for (var _c = 0, selected_1 = selected; _c < selected_1.length; _c++) {
+                    var selectedEl = selected_1[_c];
+                    var row = this._addRow(selectedEl.display, selectedEl.filter, 0, this.c.viewTotal
+                        ? selectedEl.total
+                        : 0, selectedEl.filter, selectedEl.filter);
+                    row.select();
+                }
+                this.s.dtPane.draw();
+                this.s.dtPane.table().node().parentNode.scrollTop = scrollTop;
+            }
+        };
+        SearchPane.version = '1.0.1';
+        SearchPane.classes = {
+            buttonGroup: 'dtsp-buttonGroup',
+            buttonSub: 'dtsp-buttonSub',
+            clear: 'dtsp-clear',
+            clearAll: 'dtsp-clearAll',
+            clearButton: 'clearButton',
+            container: 'dtsp-searchPane',
+            countButton: 'dtsp-countButton',
+            disabledButton: 'dtsp-disabledButton',
+            dull: 'dtsp-dull',
+            hidden: 'dtsp-hidden',
+            hide: 'dtsp-hide',
+            layout: 'dtsp-',
+            name: 'dtsp-name',
+            nameButton: 'dtsp-nameButton',
+            narrow: 'dtsp-narrow',
+            paneButton: 'dtsp-paneButton',
+            paneInputButton: 'dtsp-paneInputButton',
+            pill: 'dtsp-pill',
+            search: 'dtsp-search',
+            searchCont: 'dtsp-searchCont',
+            searchIcon: 'dtsp-searchIcon',
+            searchLabelCont: 'dtsp-searchButtonCont',
+            selected: 'dtsp-selected',
+            smallGap: 'dtsp-smallGap',
+            subRow1: 'dtsp-subRow1',
+            subRow2: 'dtsp-subRow2',
+            subRowsContainer: 'dtsp-subRowsContainer',
+            title: 'dtsp-title',
+            topRow: 'dtsp-topRow'
+        };
+        // Define SearchPanes default options
+        SearchPane.defaults = {
+            cascadePanes: false,
+            clear: true,
+            combiner: 'or',
+            controls: true,
+            container: function (dt) {
+                return dt.table().container();
+            },
+            dataLength: 30,
+            dtOpts: {},
+            emptyMessage: '<i>No Data</i>',
+            hideCount: false,
+            layout: 'columns-3',
+            orderable: true,
+            orthogonal: {
+                display: 'display',
+                hideCount: false,
+                search: 'filter',
+                show: undefined,
+                sort: 'sort',
+                threshold: 0.6,
+                type: 'type'
+            },
+            preSelect: [],
+            threshold: 0.6,
+            viewTotal: false
+        };
+        return SearchPane;
+    }());
+
+    var DataTable$1 = $.fn.dataTable;
+    var SearchPanes = /** @class */ (function () {
+        function SearchPanes(paneSettings, opts, fromInit) {
+            var _this = this;
+            if (fromInit === void 0) { fromInit = false; }
+            this.regenerating = false;
+            // Check that the required version of DataTables is included
+            if (!DataTable$1 || !DataTable$1.versionCheck || !DataTable$1.versionCheck('1.10.0')) {
+                throw new Error('SearchPane requires DataTables 1.10 or newer');
+            }
+            // Check that Select is included
+            if (!DataTable$1.select) {
+                throw new Error('SearchPane requires Select');
+            }
+            var table = new DataTable$1.Api(paneSettings);
+            this.classes = $.extend(true, {}, SearchPanes.classes);
+            // Get options from user
+            this.c = $.extend(true, {}, SearchPanes.defaults, opts);
+            // Add extra elements to DOM object including clear
+            this.dom = {
+                clearAll: $('<button type="button">Clear All</button>').addClass(this.classes.clearAll),
+                container: $('<div/>').addClass(this.classes.panes).text(table.i18n('searchPanes.loadMessage', 'Loading Search Panes...')),
+                emptyMessage: $('<div/>').addClass(this.classes.emptyMessage),
+                options: $('<div/>').addClass(this.classes.container),
+                panes: $('<div/>').addClass(this.classes.container),
+                title: $('<div/>').addClass(this.classes.title),
+                titleRow: $('<div/>').addClass(this.classes.titleRow),
+                wrapper: $('<div/>')
+            };
+            this.s = {
+                colOpts: [],
+                dt: table,
+                filterPane: -1,
+                panes: [],
+                selectionList: [],
+                updating: false
+            };
+            table.settings()[0]._searchPanes = this;
+            this.dom.clearAll.text(table.i18n('searchPanes.clearMessage', 'Clear All'));
+            this._getState();
+            if (this.s.dt.settings()[0]._bInitComplete || fromInit) {
+                this._paneDeclare(table, paneSettings, opts);
+            }
+            else {
+                table.on('preInit.dt', function () {
+                    _this._paneDeclare(table, paneSettings, opts);
+                });
+            }
+        }
+        /**
+         * Clear the selections of all of the panes
+         */
+        SearchPanes.prototype.clearSelections = function () {
+            // Load in all of the searchBoxes in the documents
+            var searches = this.dom.container.find(this.classes.search);
+            // For each searchBox set the input text to be empty and then trigger
+            //  an input on them so that they no longer filter the panes
+            searches.each(function () {
+                $(this).val('');
+                $(this).trigger('input');
+            });
+            var returnArray = [];
+            // For every pane, clear the selections in the pane
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                if (pane.s.dtPane !== undefined) {
+                    returnArray.push(pane.clearPane());
+                }
+            }
+            this.s.dt.draw();
+            return returnArray;
+        };
+        /**
+         * returns the container node for the searchPanes
+         */
+        SearchPanes.prototype.getNode = function () {
+            return this.dom.container;
+        };
+        /**
+         * rebuilds all of the panes
+         */
+        SearchPanes.prototype.rebuild = function (targetIdx) {
+            if (targetIdx === void 0) { targetIdx = false; }
+            $(this.dom.emptyMessage).remove();
+            // As a rebuild from scratch is required, empty the searchpanes container.
+            var returnArray = [];
+            this.clearSelections();
+            // Rebuild each pane individually, if a specific pane has been selected then only rebuild that one
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                if (targetIdx !== false && pane.s.index !== targetIdx) {
+                    continue;
+                }
+                pane.clearData();
+                returnArray.push(pane.rebuildPane());
+            }
+            // Attach panes, clear buttons, and title bar to the document
+            this._updateFilterCount();
+            this._attachPaneContainer();
+            // If a single pane has been rebuilt then return only that pane
+            if (returnArray.length === 1) {
+                return returnArray[0];
+            }
+            // Otherwise return all of the panes that have been rebuilt
+            else {
+                return returnArray;
+            }
+        };
+        /**
+         * Redraws all of the panes
+         */
+        SearchPanes.prototype.redrawPanes = function () {
+            var table = this.s.dt;
+            // Only do this if the redraw isn't being triggered by the panes updating themselves
+            if (!this.s.updating) {
+                var filterActive = true;
+                var filterPane = this.s.filterPane;
+                // If the number of rows currently visible is equal to the number of rows in the table
+                //  then there can't be any filtering taking place
+                if (table.rows({ search: 'applied' }).data().toArray().length === table.rows().data().toArray().length) {
+                    filterActive = false;
+                }
+                // Otherwise if viewTotal is active then it is necessary to determine which panes a select is present in.
+                //  If there is only one pane with a selection present then it should not show the filtered message as
+                //  more selections may be made in that pane.
+                else if (this.c.viewTotal) {
+                    for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                        var pane = _a[_i];
+                        if (pane.s.dtPane !== undefined) {
+                            var selectLength = pane.s.dtPane.rows({ selected: true }).data().toArray().length;
+                            // If filterPane === -1 then a pane with a selection has not been found yet, so set filterPane to that panes index
+                            if (selectLength > 0 && filterPane === -1) {
+                                filterPane = pane.s.index;
+                            }
+                            // Then if another pane is found with a selection then set filterPane to null to
+                            //  show that multiple panes have selections present
+                            else if (selectLength > 0) {
+                                filterPane = null;
+                            }
+                        }
+                    }
+                }
+                var deselectIdx = void 0;
+                var newSelectionList = [];
+                // Don't run this if it is due to the panes regenerating
+                if (!this.regenerating) {
+                    for (var _b = 0, _c = this.s.panes; _b < _c.length; _b++) {
+                        var pane = _c[_b];
+                        // Identify the pane where a selection or deselection has been made and add it to the list.
+                        if (pane.s.selectPresent) {
+                            this.s.selectionList.push({ index: pane.s.index, rows: pane.s.dtPane.rows({ selected: true }).data().toArray(), protect: false });
+                            table.state.save();
+                            break;
+                        }
+                        else if (pane.s.deselect) {
+                            deselectIdx = pane.s.index;
+                            var selectedData = pane.s.dtPane.rows({ selected: true }).data().toArray();
+                            if (selectedData.length > 0) {
+                                this.s.selectionList.push({ index: pane.s.index, rows: selectedData, protect: true });
+                            }
+                        }
+                    }
+                    if (this.s.selectionList.length > 0) {
+                        var last = this.s.selectionList[this.s.selectionList.length - 1].index;
+                        for (var _d = 0, _e = this.s.panes; _d < _e.length; _d++) {
+                            var pane = _e[_d];
+                            pane.s.lastSelect = (pane.s.index === last && this.s.selectionList.length === 1);
+                        }
+                    }
+                    // Remove selections from the list from the pane where a deselect has taken place
+                    for (var i = 0; i < this.s.selectionList.length; i++) {
+                        if (this.s.selectionList[i].index !== deselectIdx || this.s.selectionList[i].protect === true) {
+                            var further = false;
+                            // Find out if this selection is the last one in the list for that pane
+                            for (var j = i + 1; j < this.s.selectionList.length; j++) {
+                                if (this.s.selectionList[j].index === this.s.selectionList[i].index) {
+                                    further = true;
+                                }
+                            }
+                            // If there are no selections for this pane in the list then just push this one
+                            if (!further) {
+                                newSelectionList.push(this.s.selectionList[i]);
+                                this.s.selectionList[i].protect = false;
+                            }
+                        }
+                    }
+                    // Update all of the panes to reflect the current state of the filters
+                    for (var _f = 0, _g = this.s.panes; _f < _g.length; _f++) {
+                        var pane = _g[_f];
+                        if (pane.s.dtPane !== undefined) {
+                            var tempFilter = true;
+                            pane.s.filteringActive = true;
+                            if ((filterPane !== -1 && filterPane !== null && filterPane === pane.s.index) || filterActive === false) {
+                                tempFilter = false;
+                                pane.s.filteringActive = false;
+                            }
+                            pane.updatePane(!tempFilter ? false : filterActive);
+                        }
+                    }
+                    // Update the label that shows how many filters are in place
+                    this._updateFilterCount();
+                    // If the length of the selections are different then some of them have been removed and a deselect has occured
+                    if (newSelectionList.length > 0 && newSelectionList.length < this.s.selectionList.length) {
+                        this._cascadeRegen(newSelectionList);
+                        var last = newSelectionList[newSelectionList.length - 1].index;
+                        for (var _h = 0, _j = this.s.panes; _h < _j.length; _h++) {
+                            var pane = _j[_h];
+                            pane.s.lastSelect = (pane.s.index === last && this.s.selectionList.length === 1);
+                        }
+                    }
+                    else if (newSelectionList.length > 0) {
+                        // Update all of the other panes as you would just making a normal selection
+                        for (var _k = 0, _l = this.s.panes; _k < _l.length; _k++) {
+                            var paneUpdate = _l[_k];
+                            if (paneUpdate.s.dtPane !== undefined) {
+                                var tempFilter = true;
+                                paneUpdate.s.filteringActive = true;
+                                if ((filterPane !== -1 && filterPane !== null && filterPane === paneUpdate.s.index) || filterActive === false) {
+                                    tempFilter = false;
+                                    paneUpdate.s.filteringActive = false;
+                                }
+                                paneUpdate.updatePane(!tempFilter ? tempFilter : filterActive);
+                            }
+                        }
+                    }
+                }
+                else {
+                    for (var _m = 0, _o = this.s.panes; _m < _o.length; _m++) {
+                        var pane = _o[_m];
+                        if (pane.s.dtPane !== undefined) {
+                            var tempFilter = true;
+                            pane.s.filteringActive = true;
+                            if ((filterPane !== -1 && filterPane !== null && filterPane === pane.s.index) || filterActive === false) {
+                                tempFilter = false;
+                                pane.s.filteringActive = false;
+                            }
+                            pane.updatePane(!tempFilter ? tempFilter : filterActive);
+                        }
+                    }
+                    // Update the label that shows how many filters are in place
+                    this._updateFilterCount();
+                }
+                if (!filterActive) {
+                    this.s.selectionList = [];
+                }
+            }
+        };
+        /**
+         * Attach the panes, buttons and title to the document
+         */
+        SearchPanes.prototype._attach = function () {
+            $(this.dom.container).removeClass(this.classes.hide);
+            $(this.dom.titleRow).removeClass(this.classes.hide);
+            $(this.dom.titleRow).remove();
+            $(this.dom.title).appendTo(this.dom.titleRow);
+            // If the clear button is permitted attach it
+            if (this.c.clear) {
+                $(this.dom.clearAll).appendTo(this.dom.titleRow);
+            }
+            $(this.dom.titleRow).appendTo(this.dom.container);
+            // Attach the container for each individual pane to the overall container
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                $(pane.dom.container).appendTo(this.dom.panes);
+            }
+            // Attach everything to the document
+            $(this.dom.panes).appendTo(this.dom.container);
+            if ($('div.' + this.classes.container).length === 0) {
+                $(this.dom.container).prependTo(this.s.dt);
+            }
+            return this.dom.container;
+        };
+        /**
+         * Attach the top row containing the filter count and clear all button
+         */
+        SearchPanes.prototype._attachExtras = function () {
+            $(this.dom.container).removeClass(this.classes.hide);
+            $(this.dom.titleRow).removeClass(this.classes.hide);
+            $(this.dom.titleRow).remove();
+            $(this.dom.title).appendTo(this.dom.titleRow);
+            // If the clear button is permitted attach it
+            if (this.c.clear) {
+                $(this.dom.clearAll).appendTo(this.dom.titleRow);
+            }
+            $(this.dom.titleRow).appendTo(this.dom.container);
+            return this.dom.container;
+        };
+        /**
+         * If there are no panes to display then this method is called to either
+         *   display a message in their place or hide them completely.
+         */
+        SearchPanes.prototype._attachMessage = function () {
+            // Create a message to display on the screen
+            var message;
+            try {
+                message = this.s.dt.i18n('searchPanes.emptyPanes', 'No SearchPanes');
+            }
+            catch (error) {
+                message = null;
+            }
+            // If the message is an empty string then searchPanes.emptyPanes is undefined,
+            //  therefore the pane container should be removed from the display
+            if (message === null) {
+                $(this.dom.container).addClass(this.classes.hide);
+                $(this.dom.titleRow).removeClass(this.classes.hide);
+                return;
+            }
+            else {
+                $(this.dom.container).removeClass(this.classes.hide);
+                $(this.dom.titleRow).addClass(this.classes.hide);
+            }
+            // Otherwise display the message
+            $(this.dom.emptyMessage).text(message);
+            this.dom.emptyMessage.appendTo(this.dom.container);
+            return this.dom.container;
+        };
+        /**
+         * Attaches the panes to the document and displays a message or hides if there are none
+         */
+        SearchPanes.prototype._attachPaneContainer = function () {
+            // If a pane is to be displayed then attach the normal pane output
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                if (pane.s.displayed === true) {
+                    return this._attach();
+                }
+            }
+            // Otherwise attach the custom message or remove the container from the display
+            return this._attachMessage();
+        };
+        /**
+         * Prepares the panes for selections to be made when cascade is active and a deselect has occured
+         * @param newSelectionList the list of selections which are to be made
+         */
+        SearchPanes.prototype._cascadeRegen = function (newSelectionList) {
+            // Set this to true so that the actions taken do not cause this to run until it is finished
+            this.regenerating = true;
+            // If only one pane has been selected then take note of its index
+            var solePane = -1;
+            if (newSelectionList.length === 1) {
+                solePane = newSelectionList[0].index;
+            }
+            // Let the pane know that a cascadeRegen is taking place to avoid unexpected behaviour
+            //  and clear all of the previous selections in the pane
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                pane.setCascadeRegen(true);
+                pane.setClear(true);
+                // If this is the same as the pane with the only selection then pass it as a parameter into clearPane
+                if ((pane.s.dtPane !== undefined && pane.s.index === solePane) || pane.s.dtPane !== undefined) {
+                    pane.clearPane();
+                }
+                pane.setClear(false);
+            }
+            // Remake Selections
+            this._makeCascadeSelections(newSelectionList);
+            // Set the selection list property to be the list without the selections from the deselect pane
+            this.s.selectionList = newSelectionList;
+            // The regeneration of selections is over so set it back to false
+            for (var _b = 0, _c = this.s.panes; _b < _c.length; _b++) {
+                var pane = _c[_b];
+                pane.setCascadeRegen(false);
+            }
+            this.regenerating = false;
+        };
+        /**
+         * Attaches the message to the document but does not add any panes
+         */
+        SearchPanes.prototype._checkMessage = function () {
+            // If a pane is to be displayed then attach the normal pane output
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                if (pane.s.displayed === true) {
+                    return;
+                }
+            }
+            // Otherwise attach the custom message or remove the container from the display
+            return this._attachMessage();
+        };
+        /**
+         * Gets the selection list from the previous state and stores it in the selectionList Property
+         */
+        SearchPanes.prototype._getState = function () {
+            var loadedFilter = this.s.dt.state.loaded();
+            if (loadedFilter && loadedFilter.searchPanes && loadedFilter.searchPanes.selectionList !== undefined) {
+                this.s.selectionList = loadedFilter.searchPanes.selectionList;
+            }
+        };
+        /**
+         * Makes all of the selections when cascade is active
+         * @param newSelectionList the list of selections to be made, in the order they were originally selected
+         */
+        SearchPanes.prototype._makeCascadeSelections = function (newSelectionList) {
+            // make selections in the order they were made previously, excluding those from the pane where a deselect was made
+            for (var _i = 0, newSelectionList_1 = newSelectionList; _i < newSelectionList_1.length; _i++) {
+                var selection = newSelectionList_1[_i];
+                var _loop_1 = function (pane) {
+                    if (pane.s.index === selection.index && pane.s.dtPane !== undefined) {
+                        // if there are any selections currently in the pane then deselect them as we are about to make our new selections
+                        if (pane.s.dtPane.rows({ selected: true }).data().toArray().length > 0 && pane.s.dtPane !== undefined) {
+                            pane.setClear(true);
+                            pane.clearPane();
+                            pane.setClear(false);
+                        }
+                        var _loop_2 = function (row) {
+                            pane.s.dtPane.rows().every(function (rowIdx) {
+                                if (pane.s.dtPane.row(rowIdx).data().filter === row.filter) {
+                                    pane.s.dtPane.row(rowIdx).select();
+                                }
+                            });
+                        };
+                        // select every row in the pane that was selected previously
+                        for (var _i = 0, _a = selection.rows; _i < _a.length; _i++) {
+                            var row = _a[_i];
+                            _loop_2(row);
+                        }
+                        // Update the label that shows how many filters are in place
+                        this_1._updateFilterCount();
+                    }
+                };
+                var this_1 = this;
+                // As the selections may have been made across the panes in a different order to the pane index we must identify
+                //  which pane has the index of the selection. This is also important for colreorder etc
+                for (var _a = 0, _b = this.s.panes; _a < _b.length; _a++) {
+                    var pane = _b[_a];
+                    _loop_1(pane);
+                }
+            }
+            // Make sure that the state is saved after all of these selections
+            this.s.dt.state.save();
+        };
+        /**
+         * Declares the instances of individual searchpanes dependant on the number of columns.
+         * It is necessary to run this once preInit has completed otherwise no panes will be
+         *  created as the column count will be 0.
+         * @param table the DataTable api for the parent table
+         * @param paneSettings the settings passed into the constructor
+         * @param opts the options passed into the constructor
+         */
+        SearchPanes.prototype._paneDeclare = function (table, paneSettings, opts) {
+            var _this = this;
+            // Create Panes
+            table
+                .columns(this.c.columns.length > 0 ? this.c.columns : undefined)
+                .eq(0)
+                .each(function (idx) {
+                _this.s.panes.push(new SearchPane(paneSettings, opts, idx, _this.c.layout, _this.dom.panes));
+            });
+            // If there is any extra custom panes defined then create panes for them too
+            var rowLength = table.columns().eq(0).toArray().length;
+            var paneLength = this.c.panes.length;
+            for (var i = 0; i < paneLength; i++) {
+                var id = rowLength + i;
+                this.s.panes.push(new SearchPane(paneSettings, opts, id, this.c.layout, this.dom.panes, this.c.panes[i]));
+            }
+            // If this internal property is true then the DataTable has been initialised already
+            if (this.s.dt.settings()[0]._bInitComplete) {
+                this._paneStartup(table);
+            }
+            else {
+                // Otherwise add the paneStartup function to the list of functions that are to be run when the table is initialised
+                // This will garauntee that the panes are initialised before the init event and init Complete callback is fired
+                this.s.dt.settings()[0].aoInitComplete.push({ fn: function () {
+                        _this._paneStartup(table);
+                    } });
+            }
+        };
+        /**
+         * Runs the start up functions for the panes to enable listeners and populate panes
+         * @param table the DataTable api for the parent Table
+         */
+        SearchPanes.prototype._paneStartup = function (table) {
+            var _this = this;
+            // Magic number of 500 is a guess at what will be fast
+            if (this.s.dt.page.info().recordsTotal <= 500) {
+                this._startup(table);
+            }
+            else {
+                setTimeout(function () {
+                    _this._startup(table);
+                }, 100);
+            }
+        };
+        /**
+         * Initialises the tables previous/preset selections and initialises callbacks for events
+         * @param table the parent table for which the searchPanes are being created
+         */
+        SearchPanes.prototype._startup = function (table) {
+            var _this = this;
+            $(this.dom.container).text('');
+            // Attach clear button and title bar to the document
+            this._attachExtras();
+            $(this.dom.container).append(this.dom.panes);
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                pane.rebuildPane();
+            }
+            this._updateFilterCount();
+            this._checkMessage();
+            // When a draw is called on the DataTable, update all of the panes incase the data in the DataTable has changed
+            table.on('draw.dtsps', function () {
+                _this._updateFilterCount();
+                if (_this.c.cascadePanes || _this.c.viewTotal) {
+                    _this.redrawPanes();
+                }
+                _this.s.filterPane = -1;
+            });
+            // Whenever a state save occurs store the selection list in the state object
+            this.s.dt.on('stateSaveParams.dtsp', function (e, settings, data) {
+                if (data.searchPanes === undefined) {
+                    data.searchPanes = {};
+                }
+                data.searchPanes.selectionList = _this.s.selectionList;
+            });
+            // If cascadePanes is active then make the previous selections in the order they were previously
+            if (this.s.selectionList.length > 0 && this.c.cascadePanes) {
+                this._cascadeRegen(this.s.selectionList);
+            }
+            // PreSelect any selections which have been defined using the preSelect option
+            table
+                .columns(this.c.columns.length > 0 ? this.c.columns : undefined)
+                .eq(0)
+                .each(function (idx) {
+                if (_this.s.panes[idx] !== undefined &&
+                    _this.s.panes[idx].s.dtPane !== undefined &&
+                    _this.s.panes[idx].s.colOpts.preSelect !== undefined) {
+                    var tableLength = _this.s.panes[idx].s.dtPane.rows().data().toArray().length;
+                    for (var i = 0; i < tableLength; i++) {
+                        if (_this.s.panes[idx].s.colOpts.preSelect.indexOf(_this.s.panes[idx].s.dtPane.cell(i, 0).data()) !== -1) {
+                            _this.s.panes[idx].s.dtPane.row(i).select();
+                            _this.s.panes[idx].updateTable();
+                        }
+                    }
+                }
+            });
+            // Update the title bar to show how many filters have been selected
+            this._updateFilterCount();
+            // If the table is destroyed and restarted then clear the selections so that they do not persist.
+            table.on('destroy.dtsps', function () {
+                for (var _i = 0, _a = _this.s.panes; _i < _a.length; _i++) {
+                    var pane = _a[_i];
+                    pane.destroy();
+                }
+                table.off('.dtsps');
+                $(_this.dom.clearAll).off('.dtsps');
+                $(_this.dom.container).remove();
+                _this.clearSelections();
+            });
+            // When the clear All button has been pressed clear all of the selections in the panes
+            if (this.c.clear) {
+                $(this.dom.clearAll).on('click.dtsps', function () {
+                    _this.clearSelections();
+                });
+            }
+            table.settings()[0]._searchPanes = this;
+        };
+        /**
+         * Updates the number of filters that have been applied in the title
+         */
+        SearchPanes.prototype._updateFilterCount = function () {
+            var filterCount = 0;
+            // Add the number of all of the filters throughout the panes
+            for (var _i = 0, _a = this.s.panes; _i < _a.length; _i++) {
+                var pane = _a[_i];
+                if (pane.s.dtPane !== undefined) {
+                    filterCount += pane.getPaneCount();
+                }
+            }
+            // Run the message through the internationalisation method to improve readability
+            var message = this.s.dt.i18n('searchPanes.title', 'Filters Active - %d', filterCount);
+            $(this.dom.title).text(message);
+        };
+        SearchPanes.version = '1.0.1';
+        SearchPanes.classes = {
+            clear: 'dtsp-clear',
+            clearAll: 'dtsp-clearAll',
+            container: 'dtsp-searchPanes',
+            emptyMessage: 'dtsp-emptyMessage',
+            hide: 'dtsp-hidden',
+            panes: 'dtsp-panesContainer',
+            search: 'dtsp-search',
+            title: 'dtsp-title',
+            titleRow: 'dtsp-titleRow'
+        };
+        // Define SearchPanes default options
+        SearchPanes.defaults = {
+            cascadePanes: false,
+            clear: true,
+            container: function (dt) {
+                return dt.table().container();
+            },
+            columns: [],
+            layout: 'columns-3',
+            panes: [],
+            viewTotal: false
+        };
+        return SearchPanes;
+    }());
+
+    /*! SearchPanes 1.0.1
+     * 2019-2020 SpryMedia Ltd - datatables.net/license
+     */
+    // DataTables extensions common UMD. Note that this allows for AMD, CommonJS
+    // (with window and jQuery being allowed as parameters to the returned
+    // function) or just default browser loading.
+    (function (factory) {
+        if (typeof define === 'function' && define.amd) {
+            // AMD
+            define(['jquery', 'datatables.net'], function ($) {
+                return factory($, window, document);
+            });
+        }
+        else if (typeof exports === 'object') {
+            // CommonJS
+            module.exports = function (root, $) {
+                if (!root) {
+                    root = window;
+                }
+                if (!$ || !$.fn.dataTable) {
+                    $ = require('datatables.net')(root, $).$;
+                }
+                return factory($, root, root.document);
+            };
+        }
+        else {
+            // Browser - assume jQuery has already been loaded
+            factory(window.jQuery, window, document);
+        }
+    }(function ($, window, document) {
+        var DataTable = $.fn.dataTable;
+        $.fn.dataTable.SearchPanes = SearchPanes;
+        $.fn.DataTable.SearchPanes = SearchPanes;
+        $.fn.dataTable.SearchPane = SearchPane;
+        $.fn.DataTable.SearchPane = SearchPane;
+        DataTable.Api.register('searchPanes.rebuild()', function () {
+            return this.iterator('table', function () {
+                if (this.searchPanes) {
+                    this.searchPanes.rebuild();
+                }
+            });
+        });
+        DataTable.Api.register('column().paneOptions()', function (options) {
+            return this.iterator('column', function (idx) {
+                var col = this.aoColumns[idx];
+                if (!col.searchPanes) {
+                    col.searchPanes = {};
+                }
+                col.searchPanes.values = options;
+                if (this.searchPanes) {
+                    this.searchPanes.rebuild();
+                }
+            });
+        });
+        var apiRegister = $.fn.dataTable.Api.register;
+        apiRegister('searchPanes()', function () {
+            return this;
+        });
+        apiRegister('searchPanes.clearSelections()', function () {
+            var ctx = this.context[0];
+            ctx._searchPanes.clearSelections();
+            return this;
+        });
+        apiRegister('searchPanes.rebuildPane()', function (targetIdx) {
+            var ctx = this.context[0];
+            ctx._searchPanes.rebuild(targetIdx);
+            return this;
+        });
+        apiRegister('searchPanes.container()', function () {
+            var ctx = this.context[0];
+            return ctx._searchPanes.getNode();
+        });
+        $.fn.dataTable.ext.buttons.searchPanesClear = {
+            text: 'Clear Panes',
+            action: function (e, dt, node, config) {
+                dt.searchPanes.clearSelections();
+            }
+        };
+        $.fn.dataTable.ext.buttons.searchPanes = {
+            text: 'Search Panes',
+            init: function (dt, node, config) {
+                var panes = new $.fn.dataTable.SearchPanes(dt, {
+                    filterChanged: function (count) {
+                        dt.button(node).text(dt.i18n('searchPanes.collapse', { 0: 'SearchPanes', _: 'SearchPanes (%d)' }, count));
+                    }
+                });
+                var message = dt.i18n('searchPanes.collapse', 'SearchPanes');
+                dt.button(node).text(message);
+                config._panes = panes;
+            },
+            action: function (e, dt, node, config) {
+                e.stopPropagation();
+                this.popover(config._panes.getNode(), {
+                    align: 'dt-container'
+                });
+                config._panes.adjust();
+            }
+        };
+        function _init(settings, fromPre) {
+            if (fromPre === void 0) { fromPre = false; }
+            var api = new DataTable.Api(settings);
+            var opts = api.init().searchPanes || DataTable.defaults.searchPanes;
+            var searchPanes = new SearchPanes(api, opts, fromPre);
+            var node = searchPanes.getNode();
+            return node;
+        }
+        // Attach a listener to the document which listens for DataTables initialisation
+        // events so we can automatically initialise
+        $(document).on('preInit.dt.dtsp', function (e, settings, json) {
+            if (e.namespace !== 'dt') {
+                return;
+            }
+            if (settings.oInit.searchPanes ||
+                DataTable.defaults.searchPanes) {
+                if (!settings._searchPanes) {
+                    _init(settings, true);
+                }
+            }
+        });
+        // DataTables `dom` feature option
+        DataTable.ext.feature.push({
+            cFeature: 'P',
+            fnInit: _init
+        });
+        // DataTables 2 layout feature
+        if (DataTable.ext.features) {
+            DataTable.ext.features.register('searchPanes', _init);
+        }
+    }));
+
+}());
+
+
+/*! Select for DataTables 1.3.1
+ * 2015-2019 SpryMedia Ltd - datatables.net/license/mit
+ */
+
+/**
+ * @summary     Select for DataTables
+ * @description A collection of API methods, events and buttons for DataTables
+ *   that provides selection options of the items in a DataTable
+ * @version     1.3.1
+ * @file        dataTables.select.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     datatables.net/forums
+ * @copyright   Copyright 2015-2019 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net/extensions/select
+ */
+(function( factory ){
+	if ( typeof define === 'function' && define.amd ) {
+		// AMD
+		define( ['jquery', 'datatables.net'], function ( $ ) {
+			return factory( $, window, document );
+		} );
+	}
+	else if ( typeof exports === 'object' ) {
+		// CommonJS
+		module.exports = function (root, $) {
+			if ( ! root ) {
+				root = window;
+			}
+
+			if ( ! $ || ! $.fn.dataTable ) {
+				$ = require('datatables.net')(root, $).$;
+			}
+
+			return factory( $, root, root.document );
+		};
+	}
+	else {
+		// Browser
+		factory( jQuery, window, document );
+	}
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+// Version information for debugger
+DataTable.select = {};
+
+DataTable.select.version = '1.3.1';
+
+DataTable.select.init = function ( dt ) {
+	var ctx = dt.settings()[0];
+	var init = ctx.oInit.select;
+	var defaults = DataTable.defaults.select;
+	var opts = init === undefined ?
+		defaults :
+		init;
+
+	// Set defaults
+	var items = 'row';
+	var style = 'api';
+	var blurable = false;
+	var toggleable = true;
+	var info = true;
+	var selector = 'td, th';
+	var className = 'selected';
+	var setStyle = false;
+
+	ctx._select = {};
+
+	// Initialisation customisations
+	if ( opts === true ) {
+		style = 'os';
+		setStyle = true;
+	}
+	else if ( typeof opts === 'string' ) {
+		style = opts;
+		setStyle = true;
+	}
+	else if ( $.isPlainObject( opts ) ) {
+		if ( opts.blurable !== undefined ) {
+			blurable = opts.blurable;
+		}
+		
+		if ( opts.toggleable !== undefined ) {
+			toggleable = opts.toggleable;
+		}
+
+		if ( opts.info !== undefined ) {
+			info = opts.info;
+		}
+
+		if ( opts.items !== undefined ) {
+			items = opts.items;
+		}
+
+		if ( opts.style !== undefined ) {
+			style = opts.style;
+			setStyle = true;
+		}
+		else {
+			style = 'os';
+			setStyle = true;
+		}
+
+		if ( opts.selector !== undefined ) {
+			selector = opts.selector;
+		}
+
+		if ( opts.className !== undefined ) {
+			className = opts.className;
+		}
+	}
+
+	dt.select.selector( selector );
+	dt.select.items( items );
+	dt.select.style( style );
+	dt.select.blurable( blurable );
+	dt.select.toggleable( toggleable );
+	dt.select.info( info );
+	ctx._select.className = className;
+
+
+	// Sort table based on selected rows. Requires Select Datatables extension
+	$.fn.dataTable.ext.order['select-checkbox'] = function ( settings, col ) {
+		return this.api().column( col, {order: 'index'} ).nodes().map( function ( td ) {
+			if ( settings._select.items === 'row' ) {
+				return $( td ).parent().hasClass( settings._select.className );
+			} else if ( settings._select.items === 'cell' ) {
+				return $( td ).hasClass( settings._select.className );
+			}
+			return false;
+		});
+	};
+
+	// If the init options haven't enabled select, but there is a selectable
+	// class name, then enable
+	if ( ! setStyle && $( dt.table().node() ).hasClass( 'selectable' ) ) {
+		dt.select.style( 'os' );
+	}
+};
+
+/*
+
+Select is a collection of API methods, event handlers, event emitters and
+buttons (for the `Buttons` extension) for DataTables. It provides the following
+features, with an overview of how they are implemented:
+
+## Selection of rows, columns and cells. Whether an item is selected or not is
+   stored in:
+
+* rows: a `_select_selected` property which contains a boolean value of the
+  DataTables' `aoData` object for each row
+* columns: a `_select_selected` property which contains a boolean value of the
+  DataTables' `aoColumns` object for each column
+* cells: a `_selected_cells` property which contains an array of boolean values
+  of the `aoData` object for each row. The array is the same length as the
+  columns array, with each element of it representing a cell.
+
+This method of using boolean flags allows Select to operate when nodes have not
+been created for rows / cells (DataTables' defer rendering feature).
+
+## API methods
+
+A range of API methods are available for triggering selection and de-selection
+of rows. Methods are also available to configure the selection events that can
+be triggered by an end user (such as which items are to be selected). To a large
+extent, these of API methods *is* Select. It is basically a collection of helper
+functions that can be used to select items in a DataTable.
+
+Configuration of select is held in the object `_select` which is attached to the
+DataTables settings object on initialisation. Select being available on a table
+is not optional when Select is loaded, but its default is for selection only to
+be available via the API - so the end user wouldn't be able to select rows
+without additional configuration.
+
+The `_select` object contains the following properties:
+
+```
+{
+	items:string       - Can be `rows`, `columns` or `cells`. Defines what item 
+	                     will be selected if the user is allowed to activate row
+	                     selection using the mouse.
+	style:string       - Can be `none`, `single`, `multi` or `os`. Defines the
+	                     interaction style when selecting items
+	blurable:boolean   - If row selection can be cleared by clicking outside of
+	                     the table
+	toggleable:boolean - If row selection can be cancelled by repeated clicking
+	                     on the row
+	info:boolean       - If the selection summary should be shown in the table
+	                     information elements
+}
+```
+
+In addition to the API methods, Select also extends the DataTables selector
+options for rows, columns and cells adding a `selected` option to the selector
+options object, allowing the developer to select only selected items or
+unselected items.
+
+## Mouse selection of items
+
+Clicking on items can be used to select items. This is done by a simple event
+handler that will select the items using the API methods.
+
+ */
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Local functions
+ */
+
+/**
+ * Add one or more cells to the selection when shift clicking in OS selection
+ * style cell selection.
+ *
+ * Cell range is more complicated than row and column as we want to select
+ * in the visible grid rather than by index in sequence. For example, if you
+ * click first in cell 1-1 and then shift click in 2-2 - cells 1-2 and 2-1
+ * should also be selected (and not 1-3, 1-4. etc)
+ * 
+ * @param  {DataTable.Api} dt   DataTable
+ * @param  {object}        idx  Cell index to select to
+ * @param  {object}        last Cell index to select from
+ * @private
+ */
+function cellRange( dt, idx, last )
+{
+	var indexes;
+	var columnIndexes;
+	var rowIndexes;
+	var selectColumns = function ( start, end ) {
+		if ( start > end ) {
+			var tmp = end;
+			end = start;
+			start = tmp;
+		}
+		
+		var record = false;
+		return dt.columns( ':visible' ).indexes().filter( function (i) {
+			if ( i === start ) {
+				record = true;
+			}
+			
+			if ( i === end ) { // not else if, as start might === end
+				record = false;
+				return true;
+			}
+
+			return record;
+		} );
+	};
+
+	var selectRows = function ( start, end ) {
+		var indexes = dt.rows( { search: 'applied' } ).indexes();
+
+		// Which comes first - might need to swap
+		if ( indexes.indexOf( start ) > indexes.indexOf( end ) ) {
+			var tmp = end;
+			end = start;
+			start = tmp;
+		}
+
+		var record = false;
+		return indexes.filter( function (i) {
+			if ( i === start ) {
+				record = true;
+			}
+			
+			if ( i === end ) {
+				record = false;
+				return true;
+			}
+
+			return record;
+		} );
+	};
+
+	if ( ! dt.cells( { selected: true } ).any() && ! last ) {
+		// select from the top left cell to this one
+		columnIndexes = selectColumns( 0, idx.column );
+		rowIndexes = selectRows( 0 , idx.row );
+	}
+	else {
+		// Get column indexes between old and new
+		columnIndexes = selectColumns( last.column, idx.column );
+		rowIndexes = selectRows( last.row , idx.row );
+	}
+
+	indexes = dt.cells( rowIndexes, columnIndexes ).flatten();
+
+	if ( ! dt.cells( idx, { selected: true } ).any() ) {
+		// Select range
+		dt.cells( indexes ).select();
+	}
+	else {
+		// Deselect range
+		dt.cells( indexes ).deselect();
+	}
+}
+
+/**
+ * Disable mouse selection by removing the selectors
+ *
+ * @param {DataTable.Api} dt DataTable to remove events from
+ * @private
+ */
+function disableMouseSelection( dt )
+{
+	var ctx = dt.settings()[0];
+	var selector = ctx._select.selector;
+
+	$( dt.table().container() )
+		.off( 'mousedown.dtSelect', selector )
+		.off( 'mouseup.dtSelect', selector )
+		.off( 'click.dtSelect', selector );
+
+	$('body').off( 'click.dtSelect' + _safeId(dt.table().node()) );
+}
+
+/**
+ * Attach mouse listeners to the table to allow mouse selection of items
+ *
+ * @param {DataTable.Api} dt DataTable to remove events from
+ * @private
+ */
+function enableMouseSelection ( dt )
+{
+	var container = $( dt.table().container() );
+	var ctx = dt.settings()[0];
+	var selector = ctx._select.selector;
+	var matchSelection;
+
+	container
+		.on( 'mousedown.dtSelect', selector, function(e) {
+			// Disallow text selection for shift clicking on the table so multi
+			// element selection doesn't look terrible!
+			if ( e.shiftKey || e.metaKey || e.ctrlKey ) {
+				container
+					.css( '-moz-user-select', 'none' )
+					.one('selectstart.dtSelect', selector, function () {
+						return false;
+					} );
+			}
+
+			if ( window.getSelection ) {
+				matchSelection = window.getSelection();
+			}
+		} )
+		.on( 'mouseup.dtSelect', selector, function() {
+			// Allow text selection to occur again, Mozilla style (tested in FF
+			// 35.0.1 - still required)
+			container.css( '-moz-user-select', '' );
+		} )
+		.on( 'click.dtSelect', selector, function ( e ) {
+			var items = dt.select.items();
+			var idx;
+
+			// If text was selected (click and drag), then we shouldn't change
+			// the row's selected state
+			if ( matchSelection ) {
+				var selection = window.getSelection();
+
+				// If the element that contains the selection is not in the table, we can ignore it
+				// This can happen if the developer selects text from the click event
+				if ( ! selection.anchorNode || $(selection.anchorNode).closest('table')[0] === dt.table().node() ) {
+					if ( selection !== matchSelection ) {
+						return;
+					}
+				}
+			}
+
+			var ctx = dt.settings()[0];
+			var wrapperClass = $.trim(dt.settings()[0].oClasses.sWrapper).replace(/ +/g, '.');
+
+			// Ignore clicks inside a sub-table
+			if ( $(e.target).closest('div.'+wrapperClass)[0] != dt.table().container() ) {
+				return;
+			}
+
+			var cell = dt.cell( $(e.target).closest('td, th') );
+
+			// Check the cell actually belongs to the host DataTable (so child
+			// rows, etc, are ignored)
+			if ( ! cell.any() ) {
+				return;
+			}
+
+			var event = $.Event('user-select.dt');
+			eventTrigger( dt, event, [ items, cell, e ] );
+
+			if ( event.isDefaultPrevented() ) {
+				return;
+			}
+
+			var cellIndex = cell.index();
+			if ( items === 'row' ) {
+				idx = cellIndex.row;
+				typeSelect( e, dt, ctx, 'row', idx );
+			}
+			else if ( items === 'column' ) {
+				idx = cell.index().column;
+				typeSelect( e, dt, ctx, 'column', idx );
+			}
+			else if ( items === 'cell' ) {
+				idx = cell.index();
+				typeSelect( e, dt, ctx, 'cell', idx );
+			}
+
+			ctx._select_lastCell = cellIndex;
+		} );
+
+	// Blurable
+	$('body').on( 'click.dtSelect' + _safeId(dt.table().node()), function ( e ) {
+		if ( ctx._select.blurable ) {
+			// If the click was inside the DataTables container, don't blur
+			if ( $(e.target).parents().filter( dt.table().container() ).length ) {
+				return;
+			}
+
+			// Ignore elements which have been removed from the DOM (i.e. paging
+			// buttons)
+			if ( $(e.target).parents('html').length === 0 ) {
+			 	return;
+			}
+
+			// Don't blur in Editor form
+			if ( $(e.target).parents('div.DTE').length ) {
+				return;
+			}
+
+			clear( ctx, true );
+		}
+	} );
+}
+
+/**
+ * Trigger an event on a DataTable
+ *
+ * @param {DataTable.Api} api      DataTable to trigger events on
+ * @param  {boolean}      selected true if selected, false if deselected
+ * @param  {string}       type     Item type acting on
+ * @param  {boolean}      any      Require that there are values before
+ *     triggering
+ * @private
+ */
+function eventTrigger ( api, type, args, any )
+{
+	if ( any && ! api.flatten().length ) {
+		return;
+	}
+
+	if ( typeof type === 'string' ) {
+		type = type +'.dt';
+	}
+
+	args.unshift( api );
+
+	$(api.table().node()).trigger( type, args );
+}
+
+/**
+ * Update the information element of the DataTable showing information about the
+ * items selected. This is done by adding tags to the existing text
+ * 
+ * @param {DataTable.Api} api DataTable to update
+ * @private
+ */
+function info ( api )
+{
+	var ctx = api.settings()[0];
+
+	if ( ! ctx._select.info || ! ctx.aanFeatures.i ) {
+		return;
+	}
+
+	if ( api.select.style() === 'api' ) {
+		return;
+	}
+
+	var rows    = api.rows( { selected: true } ).flatten().length;
+	var columns = api.columns( { selected: true } ).flatten().length;
+	var cells   = api.cells( { selected: true } ).flatten().length;
+
+	var add = function ( el, name, num ) {
+		el.append( $('<span class="select-item"/>').append( api.i18n(
+			'select.'+name+'s',
+			{ _: '%d '+name+'s selected', 0: '', 1: '1 '+name+' selected' },
+			num
+		) ) );
+	};
+
+	// Internal knowledge of DataTables to loop over all information elements
+	$.each( ctx.aanFeatures.i, function ( i, el ) {
+		el = $(el);
+
+		var output  = $('<span class="select-info"/>');
+		add( output, 'row', rows );
+		add( output, 'column', columns );
+		add( output, 'cell', cells  );
+
+		var exisiting = el.children('span.select-info');
+		if ( exisiting.length ) {
+			exisiting.remove();
+		}
+
+		if ( output.text() !== '' ) {
+			el.append( output );
+		}
+	} );
+}
+
+/**
+ * Initialisation of a new table. Attach event handlers and callbacks to allow
+ * Select to operate correctly.
+ *
+ * This will occur _after_ the initial DataTables initialisation, although
+ * before Ajax data is rendered, if there is ajax data
+ *
+ * @param  {DataTable.settings} ctx Settings object to operate on
+ * @private
+ */
+function init ( ctx ) {
+	var api = new DataTable.Api( ctx );
+
+	// Row callback so that classes can be added to rows and cells if the item
+	// was selected before the element was created. This will happen with the
+	// `deferRender` option enabled.
+	// 
+	// This method of attaching to `aoRowCreatedCallback` is a hack until
+	// DataTables has proper events for row manipulation If you are reviewing
+	// this code to create your own plug-ins, please do not do this!
+	ctx.aoRowCreatedCallback.push( {
+		fn: function ( row, data, index ) {
+			var i, ien;
+			var d = ctx.aoData[ index ];
+
+			// Row
+			if ( d._select_selected ) {
+				$( row ).addClass( ctx._select.className );
+			}
+
+			// Cells and columns - if separated out, we would need to do two
+			// loops, so it makes sense to combine them into a single one
+			for ( i=0, ien=ctx.aoColumns.length ; i<ien ; i++ ) {
+				if ( ctx.aoColumns[i]._select_selected || (d._selected_cells && d._selected_cells[i]) ) {
+					$(d.anCells[i]).addClass( ctx._select.className );
+				}
+			}
+		},
+		sName: 'select-deferRender'
+	} );
+
+	// On Ajax reload we want to reselect all rows which are currently selected,
+	// if there is an rowId (i.e. a unique value to identify each row with)
+	api.on( 'preXhr.dt.dtSelect', function () {
+		// note that column selection doesn't need to be cached and then
+		// reselected, as they are already selected
+		var rows = api.rows( { selected: true } ).ids( true ).filter( function ( d ) {
+			return d !== undefined;
+		} );
+
+		var cells = api.cells( { selected: true } ).eq(0).map( function ( cellIdx ) {
+			var id = api.row( cellIdx.row ).id( true );
+			return id ?
+				{ row: id, column: cellIdx.column } :
+				undefined;
+		} ).filter( function ( d ) {
+			return d !== undefined;
+		} );
+
+		// On the next draw, reselect the currently selected items
+		api.one( 'draw.dt.dtSelect', function () {
+			api.rows( rows ).select();
+
+			// `cells` is not a cell index selector, so it needs a loop
+			if ( cells.any() ) {
+				cells.each( function ( id ) {
+					api.cells( id.row, id.column ).select();
+				} );
+			}
+		} );
+	} );
+
+	// Update the table information element with selected item summary
+	api.on( 'draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt', function () {
+		info( api );
+	} );
+
+	// Clean up and release
+	api.on( 'destroy.dtSelect', function () {
+		disableMouseSelection( api );
+		api.off( '.dtSelect' );
+	} );
+}
+
+/**
+ * Add one or more items (rows or columns) to the selection when shift clicking
+ * in OS selection style
+ *
+ * @param  {DataTable.Api} dt   DataTable
+ * @param  {string}        type Row or column range selector
+ * @param  {object}        idx  Item index to select to
+ * @param  {object}        last Item index to select from
+ * @private
+ */
+function rowColumnRange( dt, type, idx, last )
+{
+	// Add a range of rows from the last selected row to this one
+	var indexes = dt[type+'s']( { search: 'applied' } ).indexes();
+	var idx1 = $.inArray( last, indexes );
+	var idx2 = $.inArray( idx, indexes );
+
+	if ( ! dt[type+'s']( { selected: true } ).any() && idx1 === -1 ) {
+		// select from top to here - slightly odd, but both Windows and Mac OS
+		// do this
+		indexes.splice( $.inArray( idx, indexes )+1, indexes.length );
+	}
+	else {
+		// reverse so we can shift click 'up' as well as down
+		if ( idx1 > idx2 ) {
+			var tmp = idx2;
+			idx2 = idx1;
+			idx1 = tmp;
+		}
+
+		indexes.splice( idx2+1, indexes.length );
+		indexes.splice( 0, idx1 );
+	}
+
+	if ( ! dt[type]( idx, { selected: true } ).any() ) {
+		// Select range
+		dt[type+'s']( indexes ).select();
+	}
+	else {
+		// Deselect range - need to keep the clicked on row selected
+		indexes.splice( $.inArray( idx, indexes ), 1 );
+		dt[type+'s']( indexes ).deselect();
+	}
+}
+
+/**
+ * Clear all selected items
+ *
+ * @param  {DataTable.settings} ctx Settings object of the host DataTable
+ * @param  {boolean} [force=false] Force the de-selection to happen, regardless
+ *     of selection style
+ * @private
+ */
+function clear( ctx, force )
+{
+	if ( force || ctx._select.style === 'single' ) {
+		var api = new DataTable.Api( ctx );
+		
+		api.rows( { selected: true } ).deselect();
+		api.columns( { selected: true } ).deselect();
+		api.cells( { selected: true } ).deselect();
+	}
+}
+
+/**
+ * Select items based on the current configuration for style and items.
+ *
+ * @param  {object}             e    Mouse event object
+ * @param  {DataTables.Api}     dt   DataTable
+ * @param  {DataTable.settings} ctx  Settings object of the host DataTable
+ * @param  {string}             type Items to select
+ * @param  {int|object}         idx  Index of the item to select
+ * @private
+ */
+function typeSelect ( e, dt, ctx, type, idx )
+{
+	var style = dt.select.style();
+	var toggleable = dt.select.toggleable();
+	var isSelected = dt[type]( idx, { selected: true } ).any();
+	
+	if ( isSelected && ! toggleable ) {
+		return;
+	}
+
+	if ( style === 'os' ) {
+		if ( e.ctrlKey || e.metaKey ) {
+			// Add or remove from the selection
+			dt[type]( idx ).select( ! isSelected );
+		}
+		else if ( e.shiftKey ) {
+			if ( type === 'cell' ) {
+				cellRange( dt, idx, ctx._select_lastCell || null );
+			}
+			else {
+				rowColumnRange( dt, type, idx, ctx._select_lastCell ?
+					ctx._select_lastCell[type] :
+					null
+				);
+			}
+		}
+		else {
+			// No cmd or shift click - deselect if selected, or select
+			// this row only
+			var selected = dt[type+'s']( { selected: true } );
+
+			if ( isSelected && selected.flatten().length === 1 ) {
+				dt[type]( idx ).deselect();
+			}
+			else {
+				selected.deselect();
+				dt[type]( idx ).select();
+			}
+		}
+	} else if ( style == 'multi+shift' ) {
+		if ( e.shiftKey ) {
+			if ( type === 'cell' ) {
+				cellRange( dt, idx, ctx._select_lastCell || null );
+			}
+			else {
+				rowColumnRange( dt, type, idx, ctx._select_lastCell ?
+					ctx._select_lastCell[type] :
+					null
+				);
+			}
+		}
+		else {
+			dt[ type ]( idx ).select( ! isSelected );
+		}
+	}
+	else {
+		dt[ type ]( idx ).select( ! isSelected );
+	}
+}
+
+function _safeId( node ) {
+	return node.id.replace(/[^a-zA-Z0-9\-\_]/g, '-');
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables selectors
+ */
+
+// row and column are basically identical just assigned to different properties
+// and checking a different array, so we can dynamically create the functions to
+// reduce the code size
+$.each( [
+	{ type: 'row', prop: 'aoData' },
+	{ type: 'column', prop: 'aoColumns' }
+], function ( i, o ) {
+	DataTable.ext.selector[ o.type ].push( function ( settings, opts, indexes ) {
+		var selected = opts.selected;
+		var data;
+		var out = [];
+
+		if ( selected !== true && selected !== false ) {
+			return indexes;
+		}
+
+		for ( var i=0, ien=indexes.length ; i<ien ; i++ ) {
+			data = settings[ o.prop ][ indexes[i] ];
+
+			if ( (selected === true && data._select_selected === true) ||
+			     (selected === false && ! data._select_selected )
+			) {
+				out.push( indexes[i] );
+			}
+		}
+
+		return out;
+	} );
+} );
+
+DataTable.ext.selector.cell.push( function ( settings, opts, cells ) {
+	var selected = opts.selected;
+	var rowData;
+	var out = [];
+
+	if ( selected === undefined ) {
+		return cells;
+	}
+
+	for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+		rowData = settings.aoData[ cells[i].row ];
+
+		if ( (selected === true && rowData._selected_cells && rowData._selected_cells[ cells[i].column ] === true) ||
+		     (selected === false && ( ! rowData._selected_cells || ! rowData._selected_cells[ cells[i].column ] ) )
+		) {
+			out.push( cells[i] );
+		}
+	}
+
+	return out;
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables API
+ *
+ * For complete documentation, please refer to the docs/api directory or the
+ * DataTables site
+ */
+
+// Local variables to improve compression
+var apiRegister = DataTable.Api.register;
+var apiRegisterPlural = DataTable.Api.registerPlural;
+
+apiRegister( 'select()', function () {
+	return this.iterator( 'table', function ( ctx ) {
+		DataTable.select.init( new DataTable.Api( ctx ) );
+	} );
+} );
+
+apiRegister( 'select.blurable()', function ( flag ) {
+	if ( flag === undefined ) {
+		return this.context[0]._select.blurable;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._select.blurable = flag;
+	} );
+} );
+
+apiRegister( 'select.toggleable()', function ( flag ) {
+	if ( flag === undefined ) {
+		return this.context[0]._select.toggleable;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._select.toggleable = flag;
+	} );
+} );
+
+apiRegister( 'select.info()', function ( flag ) {
+	if ( info === undefined ) {
+		return this.context[0]._select.info;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._select.info = flag;
+	} );
+} );
+
+apiRegister( 'select.items()', function ( items ) {
+	if ( items === undefined ) {
+		return this.context[0]._select.items;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._select.items = items;
+
+		eventTrigger( new DataTable.Api( ctx ), 'selectItems', [ items ] );
+	} );
+} );
+
+// Takes effect from the _next_ selection. None disables future selection, but
+// does not clear the current selection. Use the `deselect` methods for that
+apiRegister( 'select.style()', function ( style ) {
+	if ( style === undefined ) {
+		return this.context[0]._select.style;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		ctx._select.style = style;
+
+		if ( ! ctx._select_init ) {
+			init( ctx );
+		}
+
+		// Add / remove mouse event handlers. They aren't required when only
+		// API selection is available
+		var dt = new DataTable.Api( ctx );
+		disableMouseSelection( dt );
+		
+		if ( style !== 'api' ) {
+			enableMouseSelection( dt );
+		}
+
+		eventTrigger( new DataTable.Api( ctx ), 'selectStyle', [ style ] );
+	} );
+} );
+
+apiRegister( 'select.selector()', function ( selector ) {
+	if ( selector === undefined ) {
+		return this.context[0]._select.selector;
+	}
+
+	return this.iterator( 'table', function ( ctx ) {
+		disableMouseSelection( new DataTable.Api( ctx ) );
+
+		ctx._select.selector = selector;
+
+		if ( ctx._select.style !== 'api' ) {
+			enableMouseSelection( new DataTable.Api( ctx ) );
+		}
+	} );
+} );
+
+
+
+apiRegisterPlural( 'rows().select()', 'row().select()', function ( select ) {
+	var api = this;
+
+	if ( select === false ) {
+		return this.deselect();
+	}
+
+	this.iterator( 'row', function ( ctx, idx ) {
+		clear( ctx );
+
+		ctx.aoData[ idx ]._select_selected = true;
+		$( ctx.aoData[ idx ].nTr ).addClass( ctx._select.className );
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'select', [ 'row', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+apiRegisterPlural( 'columns().select()', 'column().select()', function ( select ) {
+	var api = this;
+
+	if ( select === false ) {
+		return this.deselect();
+	}
+
+	this.iterator( 'column', function ( ctx, idx ) {
+		clear( ctx );
+
+		ctx.aoColumns[ idx ]._select_selected = true;
+
+		var column = new DataTable.Api( ctx ).column( idx );
+
+		$( column.header() ).addClass( ctx._select.className );
+		$( column.footer() ).addClass( ctx._select.className );
+
+		column.nodes().to$().addClass( ctx._select.className );
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'select', [ 'column', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+apiRegisterPlural( 'cells().select()', 'cell().select()', function ( select ) {
+	var api = this;
+
+	if ( select === false ) {
+		return this.deselect();
+	}
+
+	this.iterator( 'cell', function ( ctx, rowIdx, colIdx ) {
+		clear( ctx );
+
+		var data = ctx.aoData[ rowIdx ];
+
+		if ( data._selected_cells === undefined ) {
+			data._selected_cells = [];
+		}
+
+		data._selected_cells[ colIdx ] = true;
+
+		if ( data.anCells ) {
+			$( data.anCells[ colIdx ] ).addClass( ctx._select.className );
+		}
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'select', [ 'cell', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+
+apiRegisterPlural( 'rows().deselect()', 'row().deselect()', function () {
+	var api = this;
+
+	this.iterator( 'row', function ( ctx, idx ) {
+		ctx.aoData[ idx ]._select_selected = false;
+		$( ctx.aoData[ idx ].nTr ).removeClass( ctx._select.className );
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'deselect', [ 'row', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+apiRegisterPlural( 'columns().deselect()', 'column().deselect()', function () {
+	var api = this;
+
+	this.iterator( 'column', function ( ctx, idx ) {
+		ctx.aoColumns[ idx ]._select_selected = false;
+
+		var api = new DataTable.Api( ctx );
+		var column = api.column( idx );
+
+		$( column.header() ).removeClass( ctx._select.className );
+		$( column.footer() ).removeClass( ctx._select.className );
+
+		// Need to loop over each cell, rather than just using
+		// `column().nodes()` as cells which are individually selected should
+		// not have the `selected` class removed from them
+		api.cells( null, idx ).indexes().each( function (cellIdx) {
+			var data = ctx.aoData[ cellIdx.row ];
+			var cellSelected = data._selected_cells;
+
+			if ( data.anCells && (! cellSelected || ! cellSelected[ cellIdx.column ]) ) {
+				$( data.anCells[ cellIdx.column  ] ).removeClass( ctx._select.className );
+			}
+		} );
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'deselect', [ 'column', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+apiRegisterPlural( 'cells().deselect()', 'cell().deselect()', function () {
+	var api = this;
+
+	this.iterator( 'cell', function ( ctx, rowIdx, colIdx ) {
+		var data = ctx.aoData[ rowIdx ];
+
+		data._selected_cells[ colIdx ] = false;
+
+		// Remove class only if the cells exist, and the cell is not column
+		// selected, in which case the class should remain (since it is selected
+		// in the column)
+		if ( data.anCells && ! ctx.aoColumns[ colIdx ]._select_selected ) {
+			$( data.anCells[ colIdx ] ).removeClass( ctx._select.className );
+		}
+	} );
+
+	this.iterator( 'table', function ( ctx, i ) {
+		eventTrigger( api, 'deselect', [ 'cell', api[i] ], true );
+	} );
+
+	return this;
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Buttons
+ */
+function i18n( label, def ) {
+	return function (dt) {
+		return dt.i18n( 'buttons.'+label, def );
+	};
+}
+
+// Common events with suitable namespaces
+function namespacedEvents ( config ) {
+	var unique = config._eventNamespace;
+
+	return 'draw.dt.DT'+unique+' select.dt.DT'+unique+' deselect.dt.DT'+unique;
+}
+
+function enabled ( dt, config ) {
+	if ( $.inArray( 'rows', config.limitTo ) !== -1 && dt.rows( { selected: true } ).any() ) {
+		return true;
+	}
+
+	if ( $.inArray( 'columns', config.limitTo ) !== -1 && dt.columns( { selected: true } ).any() ) {
+		return true;
+	}
+
+	if ( $.inArray( 'cells', config.limitTo ) !== -1 && dt.cells( { selected: true } ).any() ) {
+		return true;
+	}
+
+	return false;
+}
+
+var _buttonNamespace = 0;
+
+$.extend( DataTable.ext.buttons, {
+	selected: {
+		text: i18n( 'selected', 'Selected' ),
+		className: 'buttons-selected',
+		limitTo: [ 'rows', 'columns', 'cells' ],
+		init: function ( dt, node, config ) {
+			var that = this;
+			config._eventNamespace = '.select'+(_buttonNamespace++);
+
+			// .DT namespace listeners are removed by DataTables automatically
+			// on table destroy
+			dt.on( namespacedEvents(config), function () {
+				that.enable( enabled(dt, config) );
+			} );
+
+			this.disable();
+		},
+		destroy: function ( dt, node, config ) {
+			dt.off( config._eventNamespace );
+		}
+	},
+	selectedSingle: {
+		text: i18n( 'selectedSingle', 'Selected single' ),
+		className: 'buttons-selected-single',
+		init: function ( dt, node, config ) {
+			var that = this;
+			config._eventNamespace = '.select'+(_buttonNamespace++);
+
+			dt.on( namespacedEvents(config), function () {
+				var count = dt.rows( { selected: true } ).flatten().length +
+				            dt.columns( { selected: true } ).flatten().length +
+				            dt.cells( { selected: true } ).flatten().length;
+
+				that.enable( count === 1 );
+			} );
+
+			this.disable();
+		},
+		destroy: function ( dt, node, config ) {
+			dt.off( config._eventNamespace );
+		}
+	},
+	selectAll: {
+		text: i18n( 'selectAll', 'Select all' ),
+		className: 'buttons-select-all',
+		action: function () {
+			var items = this.select.items();
+			this[ items+'s' ]().select();
+		}
+	},
+	selectNone: {
+		text: i18n( 'selectNone', 'Deselect all' ),
+		className: 'buttons-select-none',
+		action: function () {
+			clear( this.settings()[0], true );
+		},
+		init: function ( dt, node, config ) {
+			var that = this;
+			config._eventNamespace = '.select'+(_buttonNamespace++);
+
+			dt.on( namespacedEvents(config), function () {
+				var count = dt.rows( { selected: true } ).flatten().length +
+				            dt.columns( { selected: true } ).flatten().length +
+				            dt.cells( { selected: true } ).flatten().length;
+
+				that.enable( count > 0 );
+			} );
+
+			this.disable();
+		},
+		destroy: function ( dt, node, config ) {
+			dt.off( config._eventNamespace );
+		}
+	}
+} );
+
+$.each( [ 'Row', 'Column', 'Cell' ], function ( i, item ) {
+	var lc = item.toLowerCase();
+
+	DataTable.ext.buttons[ 'select'+item+'s' ] = {
+		text: i18n( 'select'+item+'s', 'Select '+lc+'s' ),
+		className: 'buttons-select-'+lc+'s',
+		action: function () {
+			this.select.items( lc );
+		},
+		init: function ( dt ) {
+			var that = this;
+
+			dt.on( 'selectItems.dt.DT', function ( e, ctx, items ) {
+				that.active( items === lc );
+			} );
+		}
+	};
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Initialisation
+ */
+
+// DataTables creation - check if select has been defined in the options. Note
+// this required that the table be in the document! If it isn't then something
+// needs to trigger this method unfortunately. The next major release of
+// DataTables will rework the events and address this.
+$(document).on( 'preInit.dt.dtSelect', function (e, ctx) {
+	if ( e.namespace !== 'dt' ) {
+		return;
+	}
+
+	DataTable.select.init( new DataTable.Api( ctx ) );
+} );
+
+
+return DataTable.select;
+}));
+
+
Index: public/vendors/dataTable/datatables.min.css
===================================================================
--- public/vendors/dataTable/datatables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/datatables.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,141 @@
+/*
+ * This combined file was created by the DataTables downloader builder:
+ *   https://datatables.net/download
+ *
+ * To rebuild or modify this file with the latest versions of the included
+ * software please visit:
+ *   https://datatables.net/download/#bs4/jszip-2.5.0/pdfmake-0.1.36/dt-1.10.20/af-2.3.4/b-1.6.1/b-colvis-1.6.1/b-flash-1.6.1/b-html5-1.6.1/b-print-1.6.1/cr-1.5.2/fc-3.3.0/fh-3.1.6/kt-2.5.1/r-2.2.3/rg-1.1.1/rr-1.2.6/sc-2.0.1/sp-1.0.1/sl-1.3.1
+ *
+ * Included libraries:
+ *   JSZip 2.5.0, pdfmake 0.1.36, DataTables 1.10.20, AutoFill 2.3.4, Buttons 1.6.1, Column visibility 1.6.1, Flash export 1.6.1, HTML5 export 1.6.1, Print view 1.6.1, ColReorder 1.5.2, FixedColumns 3.3.0, FixedHeader 3.1.6, KeyTable 2.5.1, Responsive 2.2.3, RowGroup 1.1.1, RowReorder 1.2.6, Scroller 2.0.1, SearchPanes 1.0.1, Select 1.3.1
+ */
+
+table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:0.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:0.9em;display:block;opacity:0.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{right:0.5em;content:"\2193"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:before,div.dataTables_scrollBody table thead .sorting_asc:before,div.dataTables_scrollBody table thead .sorting_desc:before,div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:0.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0}
+
+
+div.dt-autofill-handle {
+  position: absolute;
+  height: 8px;
+  width: 8px;
+  z-index: 102;
+  box-sizing: border-box;
+  background: #0275d8;
+  cursor: pointer;
+}
+
+div.dtk-focus-alt div.dt-autofill-handle {
+  background: #ff8b33;
+}
+
+div.dt-autofill-select {
+  position: absolute;
+  z-index: 1001;
+  background-color: #0275d8;
+  background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px);
+}
+div.dt-autofill-select.top, div.dt-autofill-select.bottom {
+  height: 3px;
+  margin-top: -1px;
+}
+div.dt-autofill-select.left, div.dt-autofill-select.right {
+  width: 3px;
+  margin-left: -1px;
+}
+
+div.dt-autofill-list {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 500px;
+  margin-left: -250px;
+  background-color: white;
+  border-radius: 6px;
+  box-shadow: 0 0 5px #555;
+  border: 2px solid #444;
+  z-index: 11;
+  box-sizing: border-box;
+  padding: 1.5em 2em;
+}
+div.dt-autofill-list ul {
+  display: table;
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  width: 100%;
+}
+div.dt-autofill-list ul li {
+  display: table-row;
+}
+div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button {
+  border-bottom: none;
+}
+div.dt-autofill-list ul li:hover {
+  background-color: #f6f6f6;
+}
+div.dt-autofill-list div.dt-autofill-question {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+div.dt-autofill-list div.dt-autofill-question input[type=number] {
+  padding: 6px;
+  width: 30px;
+  margin: -2px 0;
+}
+div.dt-autofill-list div.dt-autofill-button {
+  display: table-cell;
+  padding: 0.5em 0;
+  border-bottom: 1px solid #ccc;
+}
+
+div.dt-autofill-background {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.7);
+  background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+  z-index: 10;
+}
+
+div.dt-autofill-list div.dt-autofill-question input[type=number] {
+  padding: 6px;
+  width: 60px;
+  margin: -2px 0;
+}
+
+
+@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-button-collection-title{text-align:center;padding:0.3em 0 0.5em;font-size:0.9em}div.dt-button-collection-title:empty{display:none}div.dt-button-collection{position:absolute;z-index:2001}div.dt-button-collection div.dropdown-menu{display:block;z-index:2002;min-width:100%}div.dt-button-collection div.dt-button-collection-title{background-color:white;border:1px solid rgba(0,0,0,0.15)}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>:last-child{display:block !important;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.fixed{max-width:none}div.dt-button-collection.fixed:before,div.dt-button-collection.fixed:after{display:none}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}}div.dt-buttons button.btn.processing,div.dt-buttons div.btn.processing,div.dt-buttons a.btn.processing{color:rgba(0,0,0,0.2)}div.dt-buttons button.btn.processing:after,div.dt-buttons div.btn.processing:after,div.dt-buttons a.btn.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}
+
+
+table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0275d8;z-index:201}
+
+
+table.DTFC_Cloned tr{background-color:white;margin-bottom:0}div.DTFC_LeftHeadWrapper table,div.DTFC_RightHeadWrapper table{border-bottom:none !important;margin-bottom:0 !important;background-color:white}div.DTFC_LeftBodyWrapper table,div.DTFC_RightBodyWrapper table{border-top:none;margin:0 !important;z-index:2}div.DTFC_LeftBodyWrapper table thead .sorting:before,div.DTFC_LeftBodyWrapper table thead .sorting:after,div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,div.DTFC_LeftBodyWrapper table thead .sorting:before,div.DTFC_LeftBodyWrapper table thead .sorting:after,div.DTFC_LeftBodyWrapper table thead .sorting_asc:before,div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,div.DTFC_LeftBodyWrapper table thead .sorting_desc:before,div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,div.DTFC_RightBodyWrapper table thead .sorting:before,div.DTFC_RightBodyWrapper table thead .sorting:after,div.DTFC_RightBodyWrapper table thead .sorting_asc:before,div.DTFC_RightBodyWrapper table thead .sorting_asc:after,div.DTFC_RightBodyWrapper table thead .sorting_desc:before,div.DTFC_RightBodyWrapper table thead .sorting_desc:after,div.DTFC_RightBodyWrapper table thead .sorting:before,div.DTFC_RightBodyWrapper table thead .sorting:after,div.DTFC_RightBodyWrapper table thead .sorting_asc:before,div.DTFC_RightBodyWrapper table thead .sorting_asc:after,div.DTFC_RightBodyWrapper table thead .sorting_desc:before,div.DTFC_RightBodyWrapper table thead .sorting_desc:after{display:none}div.DTFC_LeftBodyWrapper table tbody tr:first-child th,div.DTFC_LeftBodyWrapper table tbody tr:first-child td,div.DTFC_RightBodyWrapper table tbody tr:first-child th,div.DTFC_RightBodyWrapper table tbody tr:first-child td{border-top:none}div.DTFC_LeftFootWrapper table,div.DTFC_RightFootWrapper table{border-top:none;margin-top:0 !important;background-color:white}div.DTFC_Blocker{background-color:white}table.dataTable.table-striped.DTFC_Cloned tbody{background-color:white}
+
+
+table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-floating{position:fixed !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}}
+
+
+table.dataTable tbody th.focus,table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #0275d8}div.dtk-focus-alt table.dataTable tbody th.focus,div.dtk-focus-alt table.dataTable tbody td.focus{box-shadow:inset 0 0 1px 2px #ff8b33}
+
+
+table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child:before{top:12px;left:4px;height:14px;width:14px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#0275d8}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#0275d8}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}div.dtr-bs-modal table.table tr:first-child td{border-top:none}
+
+
+table.dataTable tr.dtrg-group td{background-color:#e0e0e0}table.dataTable tr.dtrg-group.dtrg-level-0 td{font-weight:bold}table.dataTable tr.dtrg-group.dtrg-level-1 td,table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f0f0f0;padding-top:0.25em;padding-bottom:0.25em;padding-left:2em;font-size:0.9em}table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f3f3f3}
+
+
+table.dt-rowReorder-float{position:absolute !important;opacity:0.8;table-layout:fixed;outline:2px solid #0275d8;outline-offset:-2px;z-index:2001}tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}body.dt-rowReorder-noOverflow{overflow-x:hidden}table.dataTable td.reorder{text-align:center;cursor:move}
+
+
+div.dts{display:block !important}div.dts tbody th,div.dts tbody td{white-space:nowrap}div.dts div.dts_loading{z-index:1}div.dts div.dts_label{position:absolute;right:10px;background:rgba(0,0,0,0.8);color:white;box-shadow:3px 3px 10px rgba(0,0,0,0.5);text-align:right;border-radius:3px;padding:0.4em;z-index:2;display:none}div.dts div.dataTables_scrollBody{background:repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, #fff 10px, #fff 20px)}div.dts div.dataTables_scrollBody table{z-index:2}div.dts div.dataTables_paginate,div.dts div.dataTables_length{display:none}div.DTS div.dataTables_scrollBody table{background-color:white}
+
+
+div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-topRow div.dtsp-subRow1{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow div.dtsp-searchCont{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow button.dtsp-nameButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:23px;vertical-align:bottom}div.dtsp-topRow button.dtsp-countButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");background-repeat:no-repeat;background-position:center;background-size:18px;vertical-align:bottom}div.dtsp-topRow button.dtsp-searchIcon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:12px}div.dataTables_scrollBody{background:white !important}div.dtsp-searchPanes{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;align-content:flex-start;align-items:stretch;clear:both}div.dtsp-searchPanes button.btn{margin:1px}div.dtsp-searchPanes button.dtsp-clearAll{max-width:50px}div.dtsp-searchPane{flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:280px;justify-content:space-around;align-content:flex-start;align-items:stretch;padding-top:0px;padding-bottom:5px;margin:5px 0;margin-top:0px;margin-bottom:0px;font-size:0.9em;margin:5px}div.dtsp-searchPane div.dataTables_wrapper{flex:1}div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row div.col-sm-12:empty{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row div.dataTables_filter{display:none}div.dtsp-searchPane div.btn-group{padding:0px}div.dtsp-searchPane div.btn-group button.btn{margin:0;height:40px}div.dtsp-searchPane div.dtsp-topRow{padding:0px !important;margin:0px !important}div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRows{padding:0px !important;text-align:right}div.dtsp-searchPane div.dtsp-topRow div.row{width:100%}div.dtsp-searchPane thead{display:none}div.dtsp-searchPane .mb-3{margin-bottom:none !important}div.dtsp-searchPane .col-sm-12{padding:5px}div.dtsp-searchPane .input-group{height:40px !important;padding:0px !important}div.dtsp-searchPane .input-group .input-group-append{display:inline-block}div.dtsp-searchPane div.dataTables_scrollHead{display:none}div.dtsp-searchPane div.dataTables_scrollBody{padding:2px;border:2px #f0f0f0 solid;border-radius:4px}div.dtsp-searchPane div.dataTables_scrollBody:hover{border:2px solid #cfcfcf !important}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr span.badge{float:right;min-width:30px;display:inline-block;line-height:1}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td.dtsp-countColumn{text-align:right}div.dtsp-searchPane .dtsp-searchIcon{display:block;position:relative;padding:18px 13px}div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row{margin-left:-7px;margin-right:-7px}div.dtsp-searchPane div.badge{min-width:30px}div.dtsp-panes{padding:5px;border:2px solid #f0f0f0;border-radius:10px;margin:5px;clear:both}div.dtsp-panes div.dtsp-titleRow{padding-bottom:10px}div.dtsp-panes div.dtsp-title{float:left;margin:20px;margin-bottom:0px;margin-top:10px}div.dtsp-panes button.dtsp-clearAll{float:right}div.dtsp-columns-1{min-width:98%;max-width:98%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-2{min-width:48%;max-width:48%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-3{min-width:33.333%;max-width:33.333%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4{min-width:23%;max-width:23%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-5{min-width:18%;max-width:18%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-5 div.dtsp-topRow{flex-direction:column !important}div.dtsp-columns-6{min-width:15.666%;max-width:15.666%;padding-left:0.5%;padding-right:0.5%;margin:0px !important}div.dtsp-columns-6 div.dtsp-topRow{flex-direction:column !important}div.dtsp-hidden{display:none !important}@media screen and (max-width: 767px){div.dtsp-columns-4,div.dtsp-columns-5,div.dtsp-columns-6{max-width:31% !important;min-width:31% !important}}@media screen and (max-width: 640px){div.dtsp-searchPanes{flex-direction:column !important}div.dtsp-searchPane{max-width:98% !important;min-width:98% !important}}
+
+
+table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#0275d8}table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected,table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected{background-color:#0272d3}table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover,table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover{background-color:#0271d0}table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected,table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected{background-color:#0273d4}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:#026fcc}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:#0270ce}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:#0270d0}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:#0273d4}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:#0274d5}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:#0275d7}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:#026fcc}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:#0273d4}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:#026bc6}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#026cc8}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#026eca}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#026bc6}table.dataTable tbody td.select-checkbox,table.dataTable tbody th.select-checkbox{position:relative}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody td.select-checkbox:after,table.dataTable tbody th.select-checkbox:before,table.dataTable tbody th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:before{content:' ';margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after,table.dataTable tr.selected th.select-checkbox:after{content:'\2714';margin-top:-11px;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}table.dataTable tbody tr.selected,table.dataTable tbody th.selected,table.dataTable tbody td.selected{color:white}table.dataTable tbody tr.selected a,table.dataTable tbody th.selected a,table.dataTable tbody td.selected a{color:#a2d4ed}
+
+
Index: public/vendors/dataTable/datatables.min.js
===================================================================
--- public/vendors/dataTable/datatables.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/datatables.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,912 @@
+/*
+ * This combined file was created by the DataTables downloader builder:
+ *   https://datatables.net/download
+ *
+ * To rebuild or modify this file with the latest versions of the included
+ * software please visit:
+ *   https://datatables.net/download/#bs4/jszip-2.5.0/pdfmake-0.1.36/dt-1.10.20/af-2.3.4/b-1.6.1/b-colvis-1.6.1/b-flash-1.6.1/b-html5-1.6.1/b-print-1.6.1/cr-1.5.2/fc-3.3.0/fh-3.1.6/kt-2.5.1/r-2.2.3/rg-1.1.1/rr-1.2.6/sc-2.0.1/sp-1.0.1/sl-1.3.1
+ *
+ * Included libraries:
+ *   JSZip 2.5.0, pdfmake 0.1.36, DataTables 1.10.20, AutoFill 2.3.4, Buttons 1.6.1, Column visibility 1.6.1, Flash export 1.6.1, HTML5 export 1.6.1, Print view 1.6.1, ColReorder 1.5.2, FixedColumns 3.3.0, FixedHeader 3.1.6, KeyTable 2.5.1, Responsive 2.2.3, RowGroup 1.1.1, RowReorder 1.2.6, Scroller 2.0.1, SearchPanes 1.0.1, Select 1.3.1
+ */
+
+/*!
+
+JSZip - A Javascript class for generating and reading zip files
+<http://stuartk.com/jszip>
+
+(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com>
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
+
+JSZip uses the library pako released under the MIT license :
+https://github.com/nodeca/pako/blob/master/LICENSE
+*/
+!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";c.encode=function(a){for(var b,c,e,f,g,h,i,j="",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var e="string"!==c.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.compressionOptions=null,c.comment=null,c.unixPermissions=null,c.dosPermissions=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\x00",c.compress=function(a,b){return e.deflateRaw(a,{level:b.level||-1})},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,unixPermissions:h.unixPermissions,dosPermissions:h.dosPermissions,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{"./base64":1,"./zipEntries":22}],11:[function(a,b){(function(a){"use strict";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){"use strict";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a("./uint8ArrayReader");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./uint8ArrayReader":18}],13:[function(a,b){"use strict";var c=a("./support"),d=a("./utils"),e=a("./crc32"),f=a("./signature"),g=a("./defaults"),h=a("./base64"),i=a("./compressions"),j=a("./compressedObject"),k=a("./nodeBuffer"),l=a("./utf8"),m=a("./stringWriter"),n=a("./uint8ArrayWriter"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,"uint8array"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return"string"===e?!a.options.binary&&c.nodebuffer?k(b,"utf-8"):a.asBinary():b},q=function(a){var b=o(this);return null===b||"undefined"==typeof b?"":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?D.utf8decode(b):d.transformTo("string",b),a||this.options.binary||(b=d.transformTo("string",D.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this.unixPermissions=c.unixPermissions,this.dosPermissions=c.dosPermissions,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo("nodebuffer",a)},asUint8Array:function(){var a=p(this);return d.transformTo("uint8array",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d="";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&"undefined"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),"string"==typeof c.unixPermissions&&(c.unixPermissions=parseInt(c.unixPermissions,8)),c.unixPermissions&&16384&c.unixPermissions&&(c.dir=!0),c.dosPermissions&&16&c.dosPermissions&&(c.dir=!0),c.dir&&(a=x(a)),c.createFolders&&(e=w(a))&&y.call(this,e,!0),c.dir||null===b||"undefined"==typeof b)c.base64=!1,c.binary=!1,b=null,f=null;else if("string"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error("The data of '"+a+"' is in an unsupported format !");"arraybuffer"===f&&(b=d.transformTo("uint8array",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){"/"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf("/");return b>0?a.substring(0,b):""},x=function(a){return"/"!=a.slice(-1)&&(a+="/"),a},y=function(a,b){return b="undefined"!=typeof b?b:!1,a=x(a),this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},z=function(a,b,c){var f,g=new j;return a._data instanceof j?(g.uncompressedSize=a._data.uncompressedSize,g.crc32=a._data.crc32,0===g.uncompressedSize||a.dir?(b=i.STORE,g.compressedContent="",g.crc32=0):a._data.compressionMethod===b.magic?g.compressedContent=a._data.getCompressedContent():(f=a._data.getContent(),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c))):(f=p(a),(!f||0===f.length||a.dir)&&(b=i.STORE,f=""),g.uncompressedSize=f.length,g.crc32=e(f),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c)),g.compressedSize=g.compressedContent.length,g.compressionMethod=b.magic,g},A=function(a,b){var c=a;return a||(c=b?16893:33204),(65535&c)<<16},B=function(a){return 63&(a||0)},C=function(a,b,c,g,h){var i,j,k,m,n=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),o=b.comment||"",p=d.transformTo("string",l.utf8encode(o)),q=n.length!==b.name.length,r=p.length!==o.length,t=b.options,u="",v="",w="";k=b._initialMetadata.dir!==b.dir?b.dir:t.dir,m=b._initialMetadata.date!==b.date?b.date:t.date;var x=0,y=0;k&&(x|=16),"UNIX"===h?(y=798,x|=A(b.unixPermissions,k)):(y=20,x|=B(b.dosPermissions,k)),i=m.getHours(),i<<=6,i|=m.getMinutes(),i<<=5,i|=m.getSeconds()/2,j=m.getFullYear()-1980,j<<=4,j|=m.getMonth()+1,j<<=5,j|=m.getDate(),q&&(v=s(1,1)+s(e(n),4)+n,u+="up"+s(v.length,2)+v),r&&(w=s(1,1)+s(this.crc32(p),4)+p,u+="uc"+s(w.length,2)+w);var z="";z+="\n\x00",z+=q||r?"\x00\b":"\x00\x00",z+=c.compressionMethod,z+=s(i,2),z+=s(j,2),z+=s(c.crc32,4),z+=s(c.compressedSize,4),z+=s(c.uncompressedSize,4),z+=s(n.length,2),z+=s(u.length,2);var C=f.LOCAL_FILE_HEADER+z+n+u,D=f.CENTRAL_FILE_HEADER+s(y,2)+z+s(p.length,2)+"\x00\x00\x00\x00"+s(x,4)+s(g,4)+n+u+p;return{fileRecord:C,dirRecord:D,compressedObject:c}},D={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=y.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:"STORE",compressionOptions:null,type:"base64",platform:"DOS",comment:null,mimeType:"application/zip"}),d.checkSupport(a.type),("darwin"===a.platform||"freebsd"===a.platform||"linux"===a.platform||"sunos"===a.platform)&&(a.platform="UNIX"),"win32"===a.platform&&(a.platform="DOS");var b,c,e=[],g=0,j=0,k=d.transformTo("string",this.utf8encode(a.comment||this.comment||""));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+" is not a valid compression method !");var r=o.options.compressionOptions||a.compressionOptions||{},u=z.call(this,o,q,r),v=C.call(this,l,o,u,g,a.platform);g+=v.fileRecord.length+u.compressedSize,j+=v.dirRecord.length,e.push(v)}var w="";w=f.CENTRAL_DIRECTORY_END+"\x00\x00\x00\x00"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var x=a.type.toLowerCase();for(b="uint8array"===x||"arraybuffer"===x||"blob"===x||"nodebuffer"===x?new n(g+j+w.length):new m(g+j+w.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(w);var y=b.finalize();switch(a.type.toLowerCase()){case"uint8array":case"arraybuffer":case"nodebuffer":return d.transformTo(a.type.toLowerCase(),y);case"blob":return d.arrayBuffer2Blob(d.transformTo("arraybuffer",y),a.mimeType);case"base64":return a.base64?h.encode(y):y;default:return y}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo("string",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=D},{"./base64":1,"./compressedObject":2,"./compressions":3,"./crc32":4,"./defaults":6,"./nodeBuffer":11,"./signature":14,"./stringWriter":16,"./support":17,"./uint8ArrayWriter":19,"./utf8":20,"./utils":21}],14:[function(a,b,c){"use strict";c.LOCAL_FILE_HEADER="PK",c.CENTRAL_FILE_HEADER="PK",c.CENTRAL_DIRECTORY_END="PK",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",c.ZIP64_CENTRAL_DIRECTORY_END="PK",c.DATA_DESCRIPTOR="PK\b"},{}],15:[function(a,b){"use strict";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a("./dataReader"),e=a("./utils");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5,"./utils":21}],16:[function(a,b){"use strict";var c=a("./utils"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo("string",a),this.data.push(a)},finalize:function(){return this.data.join("")}},b.exports=d},{"./utils":21}],17:[function(a,b,c){(function(a){"use strict";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,c.nodebuffer="undefined"!=typeof a,c.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:"application/zip"}).size}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;f.append(b),c.blob=0===f.getBlob("application/zip").size}catch(d){c.blob=!1}}}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){"use strict";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a("./dataReader");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case"uint8array":String.fromCharCode.apply(null,new Uint8Array(0));break;case"nodebuffer":String.fromCharCode.apply(null,j(0))}}catch(i){h=!1}if(!h){for(var k="",l=0;l<a.length;l++)k+=String.fromCharCode(a[l]);return k}for(;e>g&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a("./support"),i=a("./compressions"),j=a("./nodeBuffer");c.string2binary=function(a){for(var b="",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a,b){c.checkSupport("blob"),b=b||"application/zip";try{return new Blob([a],{type:b})}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;return f.append(a),f.getBlob(b)}catch(d){throw new Error("Bug : can't construct the Blob.")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=""),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return"string"==typeof a?"string":"[object Array]"===Object.prototype.toString.call(a)?"array":h.nodebuffer&&j.test(a)?"nodebuffer":h.uint8array&&a instanceof Uint8Array?"uint8array":h.arraybuffer&&a instanceof ArrayBuffer?"arraybuffer":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+" is not supported by this browser")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d="";for(c=0;c<(a||"").length;c++)b=a.charCodeAt(c),d+="\\x"+(16>b?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8(),b.processAttributes()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a){var b=!0;try{this.reader.setIndex(0),this.checkSignature(h.LOCAL_FILE_HEADER),b=!1}catch(c){}throw new Error(b?"Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html":"Corrupted zip : can't find end of central directory")}if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader="string"!==b||j.uint8array?"nodebuffer"===b?new e(a):new f(g.transformTo("uint8array",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{"./nodeBufferReader":12,"./object":13,"./signature":14,"./stringReader":15,"./support":17,"./uint8ArrayReader":18,"./utils":21,"./zipEntry":23}],23:[function(a,b){"use strict";function c(a,b){this.options=a,this.loadOptions=b}var d=a("./stringReader"),e=a("./utils"),f=a("./compressedObject"),g=a("./object"),h=0,i=3;c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error("Bug : uncompressed data size mismatch");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error("Corrupted zip : compression "+e.pretty(this.compressionMethod)+" unknown (inner file : "+this.fileName+")");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo("string",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error("Corrupted zip : CRC32 mismatch")},readCentralPart:function(a){if(this.versionMadeBy=a.readInt(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var a=this.versionMadeBy>>8;this.dir=16&this.externalFileAttributes?!0:!1,a===h&&(this.dosPermissions=63&this.externalFileAttributes),a===i&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileName.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))
+}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{"./compressedObject":2,"./object":13,"./stringReader":15,"./utils":21}],24:[function(a,b){"use strict";var c=a("./lib/utils/common").assign,d=a("./lib/deflate"),e=a("./lib/inflate"),f=a("./lib/zlib/constants"),g={};c(g,d,e,f),b.exports=g},{"./lib/deflate":25,"./lib/inflate":26,"./lib/utils/common":27,"./lib/zlib/constants":30}],25:[function(a,b,c){"use strict";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a("./zlib/deflate.js"),h=a("./utils/common"),i=a("./utils/strings"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:""},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+hb-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<hb)););}while(a.lookahead<jb&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c)),a.match_length>=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function p(a,b){for(var c,d,e;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=hb-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===hb&&a.strstart-a.match_start>4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=hb-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sb}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sb}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ib){if(m(a),a.lookahead<=ib&&b===H)return sb;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+hb-1)/hb),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg="invalid literal/length code",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg="invalid distance code",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg="invalid distance too far back",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg="invalid distance too far back",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab=0,Bb=new r.Buf8(4),Cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xb=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=lb;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg="invalid window size",c.mode=lb;break}c.dmax=1<<wb,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg="unknown compression method",c.mode=lb;break}if(57344&c.flags){a.msg="unknown header flags set",c.mode=lb;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg="header crc mismatch",c.mode=lb;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg="invalid stored block lengths",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Cb[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid code lengths set",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have<c.nlen+c.ndist;){for(;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qb,n-=qb,0===c.have){a.msg="invalid bit length repeat",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid literal/lengths set",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg="invalid distances set",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);
+break}for(c.back=0;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(rb&&0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.lencode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg="invalid literal/length code",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<<c.distbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.distcode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg="invalid distance code",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg="incorrect data check",c.mode=lb;break}m=0,n=0}c.mode=jb;case jb:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg="incorrect length check",c.mode=lb;break}m=0,n=0}c.mode=kb;case kb:xb=D;break a;case lb:xb=G;break a;case mb:return H;case nb:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<lb&&(c.mode<ib||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=mb,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===bb||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xb===C&&(xb=I),xb)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a("../utils/common"),s=a("./adler32"),t=a("./crc32"),u=a("./inffast"),v=a("./inftrees"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,ab=19,bb=20,cb=21,db=22,eb=23,fb=24,gb=25,hb=26,ib=27,jb=28,kb=29,lb=30,mb=31,nb=32,ob=852,pb=592,qb=15,rb=qb,sb=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./inffast":34,"./inftrees":36}],36:[function(a,b){"use strict";var c=a("../utils/common"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<<ab[d];a++)gb[e++]=d;for(e>>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<<ab[d]-7;a++)gb[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=hb[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ib[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=ab[i],0!==j&&(d-=jb[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)});
+
+/*! pdfmake v0.1.36, @license MIT, @link http://pdfmake.org */
+!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}("undefined"!=typeof self?self:this,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=122)}([function(t,e,n){"use strict";t.exports={isString:function(t){return"string"==typeof t||t instanceof String},isNumber:function(t){return"number"==typeof t||t instanceof Number},isBoolean:function(t){return"boolean"==typeof t},isArray:function(t){return Array.isArray(t)},isFunction:function(t){return"function"==typeof t},isObject:function(t){return null!==t&&"object"==typeof t},isNull:function(t){return null===t},isUndefined:function(t){return void 0===t},pack:function(){for(var t={},e=0,n=arguments.length;e<n;e++){var r=arguments[e];if(r)for(var i in r)r.hasOwnProperty(i)&&(t[i]=r[i])}return t},fontStringify:function(t,e){return"font"===t?"font":e},offsetVector:function(t,e,n){switch(t.type){case"ellipse":case"rect":t.x+=e,t.y+=n;break;case"line":t.x1+=e,t.x2+=e,t.y1+=n,t.y2+=n;break;case"polyline":for(var r=0,i=t.points.length;r<i;r++)t.points[r].x+=e,t.points[r].y+=n}}}},function(t,e,n){"use strict";(function(t){var r=n(124),i=n(125),a=n(76);function o(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,e){if(o()<e)throw new RangeError("Invalid typed array length");return l.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=l.prototype:(null===t&&(t=new l(e)),t.length=e),t}function l(t,e,n){if(!(l.TYPED_ARRAY_SUPPORT||this instanceof l))return new l(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return h(this,t)}return u(this,t,e,n)}function u(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r);l.TYPED_ARRAY_SUPPORT?(t=e).__proto__=l.prototype:t=f(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!l.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|p(e,n),i=(t=s(t,r)).write(e,n);i!==r&&(t=t.slice(0,i));return t}(t,e,n):function(t,e){if(l.isBuffer(e)){var n=0|d(e.length);return 0===(t=s(t,n)).length?t:(e.copy(t,0,0,n),t)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?s(t,0):f(t,e);if("Buffer"===e.type&&a(e.data))return f(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function c(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function h(t,e){if(c(e),t=s(t,e<0?0:0|d(e)),!l.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function f(t,e){var n=e.length<0?0:0|d(e.length);t=s(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function d(t){if(t>=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function p(t,e){if(l.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return F(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return D(t).length;default:if(r)return F(t).length;e=(""+e).toLowerCase(),r=!0}}function g(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function y(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=l.from(e,r)),l.isBuffer(e))return 0===e.length?-1:v(t,e,n,r,i);if("number"==typeof e)return e&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):v(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function v(t,e,n,r,i){var a,o=1,s=t.length,l=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,n/=2}function u(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var c=-1;for(a=n;a<s;a++)if(u(t,a)===u(e,-1===c?0:a-c)){if(-1===c&&(c=a),a-c+1===l)return c*o}else-1!==c&&(a-=a-c),c=-1}else for(n+l>s&&(n=s-l),a=n;a>=0;a--){for(var h=!0,f=0;f<l;f++)if(u(t,a+f)!==u(e,f)){h=!1;break}if(h)return a}return-1}function b(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var a=e.length;if(a%2!=0)throw new TypeError("Invalid hex string");r>a/2&&(r=a/2);for(var o=0;o<r;++o){var s=parseInt(e.substr(2*o,2),16);if(isNaN(s))return o;t[n+o]=s}return o}function m(t,e,n,r){return z(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function w(t,e,n){return 0===e&&n===t.length?r.fromByteArray(t):r.fromByteArray(t.slice(e,n))}function x(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var a,o,s,l,u=t[i],c=null,h=u>239?4:u>223?3:u>191?2:1;if(i+h<=n)switch(h){case 1:u<128&&(c=u);break;case 2:128==(192&(a=t[i+1]))&&(l=(31&u)<<6|63&a)>127&&(c=l);break;case 3:a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&(l=(15&u)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&u)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(c=l)}null===c?(c=65533,h=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),i+=h}return function(t){var e=t.length;if(e<=S)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=S));return n}(r)}e.Buffer=l,e.SlowBuffer=function(t){+t!=t&&(t=0);return l.alloc(+t)},e.INSPECT_MAX_BYTES=50,l.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=o(),l.poolSize=8192,l._augment=function(t){return t.__proto__=l.prototype,t},l.from=function(t,e,n){return u(null,t,e,n)},l.TYPED_ARRAY_SUPPORT&&(l.prototype.__proto__=Uint8Array.prototype,l.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&l[Symbol.species]===l&&Object.defineProperty(l,Symbol.species,{value:null,configurable:!0})),l.alloc=function(t,e,n){return r=null,a=e,o=n,c(i=t),i<=0?s(r,i):void 0!==a?"string"==typeof o?s(r,i).fill(a,o):s(r,i).fill(a):s(r,i);var r,i,a,o},l.allocUnsafe=function(t){return h(null,t)},l.allocUnsafeSlow=function(t){return h(null,t)},l.isBuffer=function(t){return!(null==t||!t._isBuffer)},l.compare=function(t,e){if(!l.isBuffer(t)||!l.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,a=Math.min(n,r);i<a;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},l.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(t,e){if(!a(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return l.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=l.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var o=t[n];if(!l.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(r,i),i+=o.length}return r},l.byteLength=p,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)g(this,e,e+1);return this},l.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)g(this,e,e+3),g(this,e+1,e+2);return this},l.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)g(this,e,e+7),g(this,e+1,e+6),g(this,e+2,e+5),g(this,e+3,e+4);return this},l.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?x(this,0,t):function(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return C(this,e,n);case"utf8":case"utf-8":return x(this,e,n);case"ascii":return _(this,e,n);case"latin1":case"binary":return k(this,e,n);case"base64":return w(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}.apply(this,arguments)},l.prototype.equals=function(t){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===l.compare(this,t)},l.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},l.prototype.compare=function(t,e,n,r,i){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var a=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(e>>>=0),s=Math.min(a,o),u=this.slice(r,i),c=t.slice(e,n),h=0;h<s;++h)if(u[h]!==c[h]){a=u[h],o=c[h];break}return a<o?-1:o<a?1:0},l.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},l.prototype.indexOf=function(t,e,n){return y(this,t,e,n,!0)},l.prototype.lastIndexOf=function(t,e,n){return y(this,t,e,n,!1)},l.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var a,o,s,l,u,c,h,f,d,p=!1;;)switch(r){case"hex":return b(this,t,e,n);case"utf8":case"utf-8":return f=e,d=n,z(F(t,(h=this).length-f),h,f,d);case"ascii":return m(this,t,e,n);case"latin1":case"binary":return m(this,t,e,n);case"base64":return l=this,u=e,c=n,z(D(t),l,u,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o=e,s=n,z(function(t,e){for(var n,r,i,a=[],o=0;o<t.length&&!((e-=2)<0);++o)n=t.charCodeAt(o),r=n>>8,i=n%256,a.push(i),a.push(r);return a}(t,(a=this).length-o),a,o,s);default:if(p)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),p=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var S=4096;function _(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function k(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function C(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",a=e;a<n;++a)i+=R(t[a]);return i}function A(t,e,n){for(var r=t.slice(e,n),i="",a=0;a<r.length;a+=2)i+=String.fromCharCode(r[a]+256*r[a+1]);return i}function P(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function E(t,e,n,r,i,a){if(!l.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<a)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function I(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,a=Math.min(t.length-n,2);i<a;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function T(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,a=Math.min(t.length-n,4);i<a;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function O(t,e,n,r,i,a){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function L(t,e,n,r,a){return a||O(t,0,n,4),i.write(t,e,n,r,23,4),n+4}function B(t,e,n,r,a){return a||O(t,0,n,8),i.write(t,e,n,r,52,8),n+8}l.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),l.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=l.prototype;else{var i=e-t;n=new l(i,void 0);for(var a=0;a<i;++a)n[a]=this[a+t]}return n},l.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||P(t,e,this.length);for(var r=this[t],i=1,a=0;++a<e&&(i*=256);)r+=this[t+a]*i;return r},l.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||P(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},l.prototype.readUInt8=function(t,e){return e||P(t,1,this.length),this[t]},l.prototype.readUInt16LE=function(t,e){return e||P(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUInt16BE=function(t,e){return e||P(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUInt32LE=function(t,e){return e||P(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUInt32BE=function(t,e){return e||P(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||P(t,e,this.length);for(var r=this[t],i=1,a=0;++a<e&&(i*=256);)r+=this[t+a]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*e)),r},l.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||P(t,e,this.length);for(var r=e,i=1,a=this[t+--r];r>0&&(i*=256);)a+=this[t+--r]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},l.prototype.readInt8=function(t,e){return e||P(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,e){e||P(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(t,e){e||P(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(t,e){return e||P(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,e){return e||P(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,e){return e||P(t,4,this.length),i.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,e){return e||P(t,4,this.length),i.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,e){return e||P(t,8,this.length),i.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,e){return e||P(t,8,this.length),i.read(this,t,!1,52,8)},l.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||E(this,t,e,n,Math.pow(2,8*n)-1,0);var i=1,a=0;for(this[e]=255&t;++a<n&&(i*=256);)this[e+a]=t/i&255;return e+n},l.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||E(this,t,e,n,Math.pow(2,8*n)-1,0);var i=n-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+n},l.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,1,255,0),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},l.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):I(this,t,e,!0),e+2},l.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):I(this,t,e,!1),e+2},l.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):T(this,t,e,!0),e+4},l.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):T(this,t,e,!1),e+4},l.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);E(this,t,e,n,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a<n&&(o*=256);)t<0&&0===s&&0!==this[e+a-1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+n},l.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);E(this,t,e,n,i-1,-i)}var a=n-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+n},l.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,1,127,-128),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},l.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):I(this,t,e,!0),e+2},l.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):I(this,t,e,!1),e+2},l.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):T(this,t,e,!0),e+4},l.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):T(this,t,e,!1),e+4},l.prototype.writeFloatLE=function(t,e,n){return L(this,t,e,!0,n)},l.prototype.writeFloatBE=function(t,e,n){return L(this,t,e,!1,n)},l.prototype.writeDoubleLE=function(t,e,n){return B(this,t,e,!0,n)},l.prototype.writeDoubleBE=function(t,e,n){return B(this,t,e,!1,n)},l.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,a=r-n;if(this===t&&n<e&&e<r)for(i=a-1;i>=0;--i)t[i+e]=this[i+n];else if(a<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i<a;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),e);return a},l.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!l.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var a;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(a=e;a<n;++a)this[a]=t;else{var o=l.isBuffer(t)?t:F(new l(t,r).toString()),s=o.length;for(a=0;a<n-e;++a)this[a+e]=o[a%s]}return this};var M=/[^+\/0-9A-Za-z-_]/g;function R(t){return t<16?"0"+t.toString(16):t.toString(16)}function F(t,e){var n;e=e||1/0;for(var r=t.length,i=null,a=[],o=0;o<r;++o){if((n=t.charCodeAt(o))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===r){(e-=3)>-1&&a.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&a.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;a.push(n)}else if(n<2048){if((e-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function D(t){return r.toByteArray(function(t){var e;if((t=(e=t,e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")).replace(M,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}}).call(e,n(7))},function(t,e){var n=t.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(10),i=n(2),a=n(20),o=n(13),s="prototype",l=function(t,e,n){var u,c,h,f=t&l.F,d=t&l.G,p=t&l.S,g=t&l.P,y=t&l.B,v=t&l.W,b=d?i:i[e]||(i[e]={}),m=b[s],w=d?r:p?r[e]:(r[e]||{})[s];for(u in d&&(n=e),n)(c=!f&&w&&void 0!==w[u])&&u in b||(h=c?w[u]:n[u],b[u]=d&&"function"!=typeof w[u]?n[u]:y&&c?a(h,r):v&&w[u]==h?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[s]=t[s],e}(h):g&&"function"==typeof h?a(Function.call,h):h,g&&((b.virtual||(b.virtual={}))[u]=h,t&l.R&&m&&!m[u]&&o(m,u,h)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,t.exports=l},function(t,e,n){var r=n(65)("wks"),i=n(38),a=n(10).Symbol,o="function"==typeof a;(t.exports=function(t){return r[t]||(r[t]=o&&a[t]||(o?a:i)("Symbol."+t))}).store=r},function(t,e,n){t.exports=!n(19)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(14),i=n(95),a=n(58),o=Object.defineProperty;e.f=n(5)?Object.defineProperty:function(t,e,n){if(r(t),e=a(e,!0),r(n),i)try{return o(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";(function(e,n){function r(){this.fileSystem={},this.baseSystem={}}function i(t){return 0===t.indexOf(n)&&(t=t.substring(n.length)),0===t.indexOf("/")&&(t=t.substring(1)),t}r.prototype.readFileSync=function(t){t=i(t);var n=this.baseSystem[t];if(n)return new e(n,"base64");var r=this.fileSystem[t];if(r)return r;throw"File '"+t+"' not found in virtual file system"},r.prototype.writeFileSync=function(t,e){this.fileSystem[i(t)]=e},r.prototype.bindFS=function(t){this.baseSystem=t||{}},t.exports=new r}).call(e,n(1).Buffer,"/")},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n,r,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var l,u=[],c=!1,h=-1;function f(){c&&l&&(c=!1,l.length?u=l.concat(u):h=-1,u.length&&d())}function d(){if(!c){var t=s(f);c=!0;for(var e=u.length;e;){for(l=u,u=[];++h<e;)l&&l[h].run();h=-1,e=u.length}l=null,c=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function g(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new p(t,e)),1!==u.length||c||s(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(t,e,n){(function(){var t,r;t=n(22).Number,e.resolveLength=function(e,n,r){var i;if("number"==typeof e?i=e:"function"==typeof e?i=e.call(r,r):r&&"string"==typeof e?i=r[e]:n&&e instanceof t&&(i=e.decode(n)),isNaN(i))throw new Error("Not a fixed size");return i},r=function(t){var e,n;for(e in null==t&&(t={}),this.enumerable=!0,this.configurable=!0,t)n=t[e],this[e]=n},e.PropertyDescriptor=r}).call(this)},function(t,e,n){var r=n(6),i=n(27);t.exports=n(5)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(9);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){t.exports=i;var r=n(31).EventEmitter;function i(){r.call(this)}n(21)(i,r),i.Readable=n(45),i.Writable=n(146),i.Duplex=n(147),i.Transform=n(148),i.PassThrough=n(149),i.Stream=i,i.prototype.pipe=function(t,e){var n=this;function i(e){t.writable&&!1===t.write(e)&&n.pause&&n.pause()}function a(){n.readable&&n.resume&&n.resume()}n.on("data",i),t.on("drain",a),t._isStdio||e&&!1===e.end||(n.on("end",s),n.on("close",l));var o=!1;function s(){o||(o=!0,t.end())}function l(){o||(o=!0,"function"==typeof t.destroy&&t.destroy())}function u(t){if(c(),0===r.listenerCount(this,"error"))throw t}function c(){n.removeListener("data",i),t.removeListener("drain",a),n.removeListener("end",s),n.removeListener("close",l),n.removeListener("error",u),t.removeListener("error",u),n.removeListener("end",c),n.removeListener("close",c),t.removeListener("close",c)}return n.on("error",u),t.on("error",u),n.on("end",c),n.on("close",c),t.on("close",c),t.emit("pipe",n),t}},function(t,e,n){"use strict";var r=n(32).nextTick,i=Object.keys||function(t){var e=[];for(var n in t)e.push(n);return e};t.exports=h;var a=n(25);a.inherits=n(21);var o=n(83),s=n(46);a.inherits(h,o);for(var l=i(s.prototype),u=0;u<l.length;u++){var c=l[u];h.prototype[c]||(h.prototype[c]=s.prototype[c])}function h(t){if(!(this instanceof h))return new h(t);o.call(this,t),s.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",f)}function f(){this.allowHalfOpen||this._writableState.ended||r(d,this)}function d(t){t.end()}Object.defineProperty(h.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}}),h.prototype._destroy=function(t,e){this.push(null),this.end(),r(e,t)}},function(t,e,n){var r=n(54),i=n(56);t.exports=function(t){return r(i(t))}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(97);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){(function(){var t,r,i,a={}.hasOwnProperty;t=n(51),i=function(){function e(t,e){this.type=t,this.endian=null!=e?e:"BE",this.fn=this.type,"8"!==this.type[this.type.length-1]&&(this.fn+=this.endian)}return e.prototype.size=function(){return t.TYPES[this.type]},e.prototype.decode=function(t){return t["read"+this.fn]()},e.prototype.encode=function(t,e){return t["write"+this.fn](e)},e}(),e.Number=i,e.uint8=new i("UInt8"),e.uint16be=e.uint16=new i("UInt16","BE"),e.uint16le=new i("UInt16","LE"),e.uint24be=e.uint24=new i("UInt24","BE"),e.uint24le=new i("UInt24","LE"),e.uint32be=e.uint32=new i("UInt32","BE"),e.uint32le=new i("UInt32","LE"),e.int8=new i("Int8"),e.int16be=e.int16=new i("Int16","BE"),e.int16le=new i("Int16","LE"),e.int24be=e.int24=new i("Int24","BE"),e.int24le=new i("Int24","LE"),e.int32be=e.int32=new i("Int32","BE"),e.int32le=new i("Int32","LE"),e.floatbe=e.float=new i("Float","BE"),e.floatle=new i("Float","LE"),e.doublebe=e.double=new i("Double","BE"),e.doublele=new i("Double","LE"),r=function(t){function e(t,n,r){null==r&&(r=t>>1),e.__super__.constructor.call(this,"Int"+t,n),this._point=1<<r}return function(t,e){for(var n in e)a.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(e,i),e.prototype.decode=function(t){return e.__super__.decode.call(this,t)/this._point},e.prototype.encode=function(t,n){return e.__super__.encode.call(this,t,n*this._point|0)},e}(),e.Fixed=r,e.fixed16be=e.fixed16=new r(16,"BE"),e.fixed16le=new r(16,"LE"),e.fixed32be=e.fixed32=new r(32,"BE"),e.fixed32le=new r(32,"LE")}).call(this)},function(t,e){t.exports={}},function(t,e,n){"use strict";var r=n(207)(!0);n(61)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){(function(t){function n(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===n(t)},e.isBoolean=function(t){return"boolean"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return"number"==typeof t},e.isString=function(t){return"string"==typeof t},e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return"[object RegExp]"===n(t)},e.isObject=function(t){return"object"==typeof t&&null!==t},e.isDate=function(t){return"[object Date]"===n(t)},e.isError=function(t){return"[object Error]"===n(t)||t instanceof Error},e.isFunction=function(t){return"function"==typeof t},e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=t.isBuffer}).call(e,n(1).Buffer)},function(t,e,n){(function(e){(function(){var r,i;r=function(){var t,n,r,a;function o(){}return r=function(t,e){return(Array(e+1).join("0")+t).slice(-e)},n=/[\n\r\t\b\f\(\)\\]/g,t={"\n":"\\n","\r":"\\r","\t":"\\t","\b":"\\b","\f":"\\f","\\":"\\\\","(":"\\(",")":"\\)"},a=function(t){var e,n,r,i,a;if(1&(i=t.length))throw new Error("Buffer length must be even");for(n=r=0,a=i-1;r<a;n=r+=2)e=t[n],t[n]=t[n+1],t[n+1]=e;return t},o.convert=function(s){var l,u,c,h,f,d,p,g,y;if("string"==typeof s)return"/"+s;if(s instanceof String){for(c=!1,u=h=0,p=(g=s).length;h<p;u=h+=1)if(g.charCodeAt(u)>127){c=!0;break}return c&&(g=a(new e("\ufeff"+g,"utf16le")).toString("binary")),"("+(g=g.replace(n,function(e){return t[e]}))+")"}if(e.isBuffer(s))return"<"+s.toString("hex")+">";if(s instanceof i)return s.toString();if(s instanceof Date)return"(D:"+r(s.getUTCFullYear(),4)+r(s.getUTCMonth()+1,2)+r(s.getUTCDate(),2)+r(s.getUTCHours(),2)+r(s.getUTCMinutes(),2)+r(s.getUTCSeconds(),2)+"Z)";if(Array.isArray(s))return"["+function(){var t,e,n;for(n=[],t=0,e=s.length;t<e;t++)l=s[t],n.push(o.convert(l));return n}().join(" ")+"]";if("[object Object]"==={}.toString.call(s)){for(f in d=["<<"],s)y=s[f],d.push("/"+f+" "+o.convert(y));return d.push(">>"),d.join("\n")}return"number"==typeof s?o.number(s):""+s},o.number=function(t){if(t>-1e21&&t<1e21)return Math.round(1e6*t)/1e6;throw new Error("unsupported number: "+t)},o}(),t.exports=r,i=n(87)}).call(this)}).call(e,n(1).Buffer)},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){n(201);for(var r=n(10),i=n(13),a=n(23),o=n(4)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l<s.length;l++){var u=s[l],c=r[u],h=c&&c.prototype;h&&!h[o]&&i(h,o,u),a[u]=a.Array}},function(t,e,n){var r=n(101),i=n(66);t.exports=Object.keys||function(t){return r(t,i)}},function(t,e,n){var r=n(56);t.exports=function(t){return Object(r(t))}},function(t,e){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(t){return"function"==typeof t}function i(t){return"object"==typeof t&&null!==t}function a(t){return void 0===t}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(t){if("number"!=typeof t||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},n.prototype.emit=function(t){var e,n,o,s,l,u;if(this._events||(this._events={}),"error"===t&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var c=new Error('Uncaught, unspecified "error" event. ('+e+")");throw c.context=e,c}if(a(n=this._events[t]))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(i(n))for(s=Array.prototype.slice.call(arguments,1),o=(u=n.slice()).length,l=0;l<o;l++)u[l].apply(this,s);return!0},n.prototype.on=n.prototype.addListener=function(t,e){var o;if(!r(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,r(e.listener)?e.listener:e),this._events[t]?i(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,i(this._events[t])&&!this._events[t].warned&&(o=a(this._maxListeners)?n.defaultMaxListeners:this._maxListeners)&&o>0&&this._events[t].length>o&&(this._events[t].warned=!0,console.trace),this},n.prototype.once=function(t,e){if(!r(e))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(t,i),n||(n=!0,e.apply(this,arguments))}return i.listener=e,this.on(t,i),this},n.prototype.removeListener=function(t,e){var n,a,o,s;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(o=(n=this._events[t]).length,a=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(i(n)){for(s=o;s-- >0;)if(n[s]===e||n[s].listener&&n[s].listener===e){a=s;break}if(a<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(a,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[t]))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){return this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,n){"use strict";(function(e){!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?t.exports={nextTick:function(t,n,r,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var a,o,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,n)});case 3:return e.nextTick(function(){t.call(null,n,r)});case 4:return e.nextTick(function(){t.call(null,n,r,i)});default:for(a=new Array(s-1),o=0;o<a.length;)a[o++]=arguments[o];return e.nextTick(function(){t.apply(null,a)})}}}:t.exports=e}).call(e,n(11))},function(t,e,n){var r=n(1),i=r.Buffer;function a(t,e){for(var n in t)e[n]=t[n]}function o(t,e,n){return i(t,e,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=r:(a(r,e),e.Buffer=o),a(i,o),o.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return i(t,e,n)},o.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var r=i(t);return void 0!==e?"string"==typeof n?r.fill(e,n):r.fill(e):r.fill(0),r},o.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i(t)},o.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r.SlowBuffer(t)}},function(t,e,n){"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;e.assign=function(t){for(var e,n,r=Array.prototype.slice.call(arguments,1);r.length;){var i=r.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(var a in i)e=i,n=a,Object.prototype.hasOwnProperty.call(e,n)&&(t[a]=i[a])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var i={arraySet:function(t,e,n,r,i){if(e.subarray&&t.subarray)t.set(e.subarray(n,n+r),i);else for(var a=0;a<r;a++)t[i+a]=e[n+a]},flattenChunks:function(t){var e,n,r,i,a,o;for(r=0,e=0,n=t.length;e<n;e++)r+=t[e].length;for(o=new Uint8Array(r),i=0,e=0,n=t.length;e<n;e++)a=t[e],o.set(a,i),i+=a.length;return o}},a={arraySet:function(t,e,n,r,i){for(var a=0;a<r;a++)t[i+a]=e[n+a]},flattenChunks:function(t){return[].concat.apply([],t)}};e.setTyped=function(t){t?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,i)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,a))},e.setTyped(r)},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(14),i=n(100),a=n(66),o=n(64)("IE_PROTO"),s=function(){},l="prototype",u=function(){var t,e=n(96)("iframe"),r=a.length;for(e.style.display="none",n(205).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),u=t.F;r--;)delete u[l][a[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(s[l]=r(t),n=new s,s[l]=null,n[o]=t):n=u(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(63),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e,n){var r=n(6).f,i=n(18),a=n(4)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},function(t,e,n){var r=n(38)("meta"),i=n(9),a=n(18),o=n(6).f,s=0,l=Object.isExtensible||function(){return!0},u=!n(19)(function(){return l(Object.preventExtensions({}))}),c=function(t){o(t,r,{value:{i:"O"+ ++s,w:{}}})},h=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!a(t,r)){if(!l(t))return"F";if(!e)return"E";c(t)}return t[r].i},getWeak:function(t,e){if(!a(t,r)){if(!l(t))return!0;if(!e)return!1;c(t)}return t[r].w},onFreeze:function(t){return u&&h.NEED&&l(t)&&!a(t,r)&&c(t),t}}},function(t,e,n){var r=n(20),i=n(111),a=n(112),o=n(14),s=n(37),l=n(67),u={},c={};(e=t.exports=function(t,e,n,h,f){var d,p,g,y,v=f?function(){return t}:l(t),b=r(n,h,e?2:1),m=0;if("function"!=typeof v)throw TypeError(t+" is not iterable!");if(a(v)){for(d=s(t.length);d>m;m++)if((y=e?b(o(p=t[m])[0],p[1]):b(t[m]))===u||y===c)return y}else for(g=v.call(t);!(p=g.next()).done;)if((y=i(g,b,p.value,e))===u||y===c)return y}).BREAK=u,e.RETURN=c},function(t,e,n){"use strict";var r=n(0).isString,i=n(0).isNumber,a=n(0).isObject,o=n(0).isArray,s=n(78),l=/^(\s)+/g,u=/(\s)+$/g;function c(t){this.fontProvider=t}function h(t,e){var n=[];if(t=t.replace(/\t/g,"    "),e)return n.push({text:t}),n;for(var r,i=new s(t),a=0;r=i.nextBreak();){var o=t.slice(a,r.position);r.required||o.match(/\r?\n$|\r$/)?(o=o.replace(/\r?\n$|\r$/,""),n.push({text:o,lineEnd:!0})):n.push({text:o}),a=r.position}return n}function f(t,e){for(var n in e=e||{},t=t||{})"text"!=n&&t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function d(t){return null==t?"":i(t)?t.toString():r(t)?t:t.toString()}function p(t,e,n,r){var i;return void 0!==t[n]&&null!==t[n]?t[n]:e?(e.auto(t,function(){i=e.getProperty(n)}),null!=i?i:r):r}function g(t,e,n,r,i){return e.widthOfString(t,n,i)+(r||0)*(t.length-1)}c.prototype.buildInlines=function(t,e){var n,r=function(t,e,n){var r=function(t,e){var n=[];o(t)||(t=[t]);t=function t(e){return e.reduce(function(e,n){var r=o(n.text)?t(n.text):n,i=[].concat(r).some(Array.isArray);return e.concat(i?t(r):r)},[])}(t);for(var r=0,i=t.length;r<i;r++){var s,l=t[r],u=null,c=p(l||{},e,"noWrap",!1);a(l)?(s=h(d(l.text),c),u=f(l)):s=h(d(l),c);for(var g=0,y=s.length;g<y;g++){var v={text:s[g].text};s[g].lineEnd&&(v.lineEnd=!0),f(u,v),n.push(v)}}return n}(e,n);if(r.length){var i=p(r[0],n,"leadingIndent",0);i&&(r[0].leadingCut=-i,r[0].leadingIndent=i)}return r.forEach(function(e){var r=p(e,n,"font","Roboto"),i=p(e,n,"fontSize",12),a=p(e,n,"fontFeatures",null),o=p(e,n,"bold",!1),s=p(e,n,"italics",!1),c=p(e,n,"color","black"),h=p(e,n,"decoration",null),f=p(e,n,"decorationColor",null),d=p(e,n,"decorationStyle",null),y=p(e,n,"background",null),v=p(e,n,"lineHeight",1),b=p(e,n,"characterSpacing",0),m=p(e,n,"link",null),w=p(e,n,"linkToPage",null),x=p(e,n,"noWrap",null),S=p(e,n,"preserveLeadingSpaces",!1),_=t.provideFont(r,o,s);e.width=g(e.text,_,i,b,a),e.height=_.lineHeight(i)*v;var k=e.text.match(l);e.leadingCut||(e.leadingCut=0),k&&!S&&(e.leadingCut+=g(k[0],_,i,b,a));var C=e.text.match(u);e.trailingCut=C?g(C[0],_,i,b,a):0,e.alignment=p(e,n,"alignment","left"),e.font=_,e.fontSize=i,e.fontFeatures=a,e.characterSpacing=b,e.color=c,e.decoration=h,e.decorationColor=f,e.decorationStyle=d,e.background=y,e.link=m,e.linkToPage=w,e.noWrap=x}),r}(this.fontProvider,t,e),i=0,s=0;return r.forEach(function(t){var e;i=Math.max(i,t.width-t.leadingCut-t.trailingCut),n||(n={width:0,leadingCut:t.leadingCut,trailingCut:0}),n.width+=t.width,n.trailingCut=t.trailingCut,s=Math.max(s,(e=n,Math.max(0,e.width-e.leadingCut-e.trailingCut))),t.lineEnd&&(n=null)}),p({},e,"noWrap",!1)&&(i=s),{items:r,minWidth:i,maxWidth:s}},c.prototype.sizeOfString=function(t,e){t=t?t.toString().replace(/\t/g,"    "):"";var n=p({},e,"font","Roboto"),r=p({},e,"fontSize",12),i=p({},e,"fontFeatures",null),a=p({},e,"bold",!1),o=p({},e,"italics",!1),s=p({},e,"lineHeight",1),l=p({},e,"characterSpacing",0),u=this.fontProvider.provideFont(n,a,o);return{width:g(t,u,r,l,i),height:u.lineHeight(r)*s,fontSize:r,lineHeight:s,ascender:u.ascender/1e3*r,descender:u.descender/1e3*r}},c.prototype.widthOfString=function(t,e,n,r,i){return g(t,e,n,r,i)},t.exports=c},function(t,e,n){var r,i;i=n(79),r=function(){function t(t){var e,n,r;(e="function"==typeof t.readUInt32BE&&"function"==typeof t.slice)||t instanceof Uint8Array?(e?(this.highStart=t.readUInt32BE(0),this.errorValue=t.readUInt32BE(4),n=t.readUInt32BE(8),t=t.slice(12)):(r=new DataView(t.buffer),this.highStart=r.getUint32(0),this.errorValue=r.getUint32(4),n=r.getUint32(8),t=t.subarray(12)),t=i(t,new Uint8Array(n)),t=i(t,new Uint8Array(n)),this.data=new Uint32Array(t.buffer)):(this.data=t.data,this.highStart=t.highStart,this.errorValue=t.errorValue)}return 11,5,6,32,64,63,2,32,31,2048,32,2080,2080,32,2112,4,t.prototype.get=function(t){var e;return t<0||t>1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>5]<<2)+(31&t),this.data[e]):t<=65535?(e=(this.data[2048+(t-55296>>5)]<<2)+(31&t),this.data[e]):t<this.highStart?(e=this.data[2080+(t>>11)],e=((e=this.data[e+(t>>5&63)])<<2)+(31&t),this.data[e]):this.data[this.data.length-4]},t}(),t.exports=r},function(t,e,n){"use strict";var r=n(0).isString;function i(t){return"auto"===t.width}function a(t){return null===t.width||void 0===t.width||"*"===t.width||"star"===t.width}t.exports={buildColumnWidths:function(t,e){var n=[],o=0,s=0,l=[],u=0,c=0,h=[],f=e;t.forEach(function(t){i(t)?(n.push(t),o+=t._minWidth,s+=t._maxWidth):a(t)?(l.push(t),u=Math.max(u,t._minWidth),c=Math.max(c,t._maxWidth)):h.push(t)}),h.forEach(function(t){r(t.width)&&/\d+%/.test(t.width)&&(t.width=parseFloat(t.width)*f/100),t.width<t._minWidth&&t.elasticWidth?t._calcWidth=t._minWidth:t._calcWidth=t.width,e-=t._calcWidth});var d=o+u*l.length,p=s+c*l.length;if(d>=e)n.forEach(function(t){t._calcWidth=t._minWidth}),l.forEach(function(t){t._calcWidth=u});else{if(p<e)n.forEach(function(t){t._calcWidth=t._maxWidth,e-=t._calcWidth});else{var g=e-d,y=p-d;n.forEach(function(t){var n=t._maxWidth-t._minWidth;t._calcWidth=t._minWidth+n*g/y,e-=t._calcWidth})}if(l.length>0){var v=e/l.length;l.forEach(function(t){t._calcWidth=v})}}},measureMinMax:function(t){for(var e={min:0,max:0},n={min:0,max:0},r=0,o=0,s=t.length;o<s;o++){var l=t[o];a(l)?(n.min=Math.max(n.min,l._minWidth),n.max=Math.max(n.max,l._maxWidth),r++):i(l)?(e.min+=l._minWidth,e.max+=l._maxWidth):(e.min+=void 0!==l.width&&l.width||l._minWidth,e.max+=void 0!==l.width&&l.width||l._maxWidth)}return r&&(e.min+=r*n.min,e.max+=r*n.max),e},isAutoColumn:i,isStarColumn:a}},function(t,e,n){(e=t.exports=n(83)).Stream=e,e.Readable=e,e.Writable=n(46),e.Duplex=n(16),e.Transform=n(86),e.PassThrough=n(145)},function(t,e,n){"use strict";(function(e,r,i){var a=n(32).nextTick;function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,n){var r=t.entry;t.entry=null;for(;r;){var i=r.callback;e.pendingcb--,i(n),r=r.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}t.exports=b;var s,l=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?r:a;b.WritableState=v;var u=n(25);u.inherits=n(21);var c={deprecate:n(144)},h=n(84),f=n(33).Buffer,d=i.Uint8Array||function(){};var p,g=n(85);function y(){}function v(t,e){s=s||n(16),t=t||{};var r=e instanceof s;this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,u=t.writableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(u||0===u)?u:c,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===t.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var n=t._writableState,r=n.sync,i=n.writecb;if(d=n,d.writing=!1,d.writecb=null,d.length-=d.writelen,d.writelen=0,e)s=t,u=n,c=r,h=e,f=i,--u.pendingcb,c?(a(f,h),a(k,s,u),s._writableState.errorEmitted=!0,s.emit("error",h)):(f(h),s._writableState.errorEmitted=!0,s.emit("error",h),k(s,u));else{var o=S(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||x(t,n),r?l(w,t,n,o,i):w(t,n,o,i)}var s,u,c,h,f;var d}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function b(t){if(s=s||n(16),!(p.call(b,this)||this instanceof s))return new b(t);this._writableState=new v(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function m(t,e,n,r,i,a,o){e.writelen=r,e.writecb=o,e.writing=!0,e.sync=!0,n?t._writev(i,e.onwrite):t._write(i,a,e.onwrite),e.sync=!1}function w(t,e,n,r){var i,a;n||(i=t,0===(a=e).length&&a.needDrain&&(a.needDrain=!1,i.emit("drain"))),e.pendingcb--,r(),k(t,e)}function x(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var r=e.bufferedRequestCount,i=new Array(r),a=e.corkedRequestsFree;a.entry=n;for(var s=0,l=!0;n;)i[s]=n,n.isBuf||(l=!1),n=n.next,s+=1;i.allBuffers=l,m(t,e,!0,e.length,i,"",a.finish),e.pendingcb++,e.lastBufferedRequest=null,a.next?(e.corkedRequestsFree=a.next,a.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;n;){var u=n.chunk,c=n.encoding,h=n.callback;if(m(t,e,!1,e.objectMode?1:u.length,u,c,h),n=n.next,e.bufferedRequestCount--,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequest=n,e.bufferProcessing=!1}function S(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function _(t,e){t._final(function(n){e.pendingcb--,n&&t.emit("error",n),e.prefinished=!0,t.emit("prefinish"),k(t,e)})}function k(t,e){var n,r,i=S(e);return i&&(n=t,(r=e).prefinished||r.finalCalled||("function"==typeof n._final?(r.pendingcb++,r.finalCalled=!0,a(_,n,r)):(r.prefinished=!0,n.emit("prefinish"))),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),i}u.inherits(b,h),v.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(v.prototype,"buffer",{get:c.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(b,Symbol.hasInstance,{value:function(t){return!!p.call(this,t)||this===b&&(t&&t._writableState instanceof v)}})):p=function(t){return t instanceof this},b.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},b.prototype.write=function(t,e,n){var r,i,o,s,l,u,c,h,p,g,v,b=this._writableState,w=!1,x=!b.objectMode&&(r=t,f.isBuffer(r)||r instanceof d);return x&&!f.isBuffer(t)&&(i=t,t=f.from(i)),"function"==typeof e&&(n=e,e=null),x?e="buffer":e||(e=b.defaultEncoding),"function"!=typeof n&&(n=y),b.ended?(p=this,g=n,v=new Error("write after end"),p.emit("error",v),a(g,v)):(x||(o=this,s=b,u=n,c=!0,h=!1,null===(l=t)?h=new TypeError("May not write null values to stream"):"string"==typeof l||void 0===l||s.objectMode||(h=new TypeError("Invalid non-string/buffer chunk")),h&&(o.emit("error",h),a(u,h),c=!1),c))&&(b.pendingcb++,w=function(t,e,n,r,i,a){if(!n){var o=function(t,e,n){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=f.from(e,n));return e}(e,r,i);r!==o&&(n=!0,i="buffer",r=o)}var s=e.objectMode?1:r.length;e.length+=s;var l=e.length<e.highWaterMark;l||(e.needDrain=!0);if(e.writing||e.corked){var u=e.lastBufferedRequest;e.lastBufferedRequest={chunk:r,encoding:i,isBuf:n,callback:a,next:null},u?u.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else m(t,e,!1,s,r,i,a);return l}(this,b,x,t,e,n)),w},b.prototype.cork=function(){this._writableState.corked++},b.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||x(this,t))},b.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},b.prototype._write=function(t,e,n){n(new Error("_write() is not implemented"))},b.prototype._writev=null,b.prototype.end=function(t,e,n){var r=this._writableState;"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(t,e,n){e.ending=!0,k(t,e),n&&(e.finished?a(n):t.once("finish",n));e.ended=!0,t.writable=!1}(this,r,n)},Object.defineProperty(b.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),b.prototype.destroy=g.destroy,b.prototype._undestroy=g.undestroy,b.prototype._destroy=function(t,e){this.end(),e(t)}}).call(e,n(11),n(142).setImmediate,n(7))},function(t,e,n){"use strict";var r=n(33).Buffer,i=r.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(r.isEncoding===i||!i(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=l,this.end=u,e=4;break;case"utf8":this.fillLast=s,e=4;break;case"base64":this.text=c,this.end=h,e=3;break;default:return this.write=f,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:-1}function s(t){var e=this.lastTotal-this.lastNeed,n=function(t,e,n){if(128!=(192&e[0]))return t.lastNeed=0,"�".repeat(n);if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�".repeat(n+1);if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�".repeat(n+2)}}(this,t,e);return void 0!==n?n:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var n=t.toString("utf16le",e);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function u(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,n)}return e}function c(t,e){var n=(t.length-e)%3;return 0===n?t.toString("base64",e):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-n))}function h(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function f(t){return t.toString(this.encoding)}function d(t){return t&&t.length?this.write(t):""}e.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return"";var e,n;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<t.length?e?e+this.text(t,n):this.text(t,n):e||""},a.prototype.end=function(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�".repeat(this.lastTotal-this.lastNeed):e},a.prototype.text=function(t,e){var n=function(t,e,n){var r=e.length-1;if(r<n)return 0;var i=o(e[r]);if(i>=0)return i>0&&(t.lastNeed=i-1),i;if(--r<n)return 0;if((i=o(e[r]))>=0)return i>0&&(t.lastNeed=i-2),i;if(--r<n)return 0;if((i=o(e[r]))>=0)return i>0&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=n;var r=t.length-(n-this.lastNeed);return t.copy(this.lastChar,0,r),t.toString("utf8",e,r)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,n){"use strict";(function(t){var r=n(1).Buffer,i=n(15).Transform,a=n(150),o=n(49),s=n(88).ok,l=n(1).kMaxLength,u="Cannot create final Buffer. It would be larger than 0x"+l.toString(16)+" bytes";a.Z_MIN_WINDOWBITS=8,a.Z_MAX_WINDOWBITS=15,a.Z_DEFAULT_WINDOWBITS=15,a.Z_MIN_CHUNK=64,a.Z_MAX_CHUNK=1/0,a.Z_DEFAULT_CHUNK=16384,a.Z_MIN_MEMLEVEL=1,a.Z_MAX_MEMLEVEL=9,a.Z_DEFAULT_MEMLEVEL=8,a.Z_MIN_LEVEL=-1,a.Z_MAX_LEVEL=9,a.Z_DEFAULT_LEVEL=a.Z_DEFAULT_COMPRESSION;for(var c=Object.keys(a),h=0;h<c.length;h++){var f=c[h];f.match(/^Z/)&&Object.defineProperty(e,f,{enumerable:!0,value:a[f],writable:!1})}for(var d={Z_OK:a.Z_OK,Z_STREAM_END:a.Z_STREAM_END,Z_NEED_DICT:a.Z_NEED_DICT,Z_ERRNO:a.Z_ERRNO,Z_STREAM_ERROR:a.Z_STREAM_ERROR,Z_DATA_ERROR:a.Z_DATA_ERROR,Z_MEM_ERROR:a.Z_MEM_ERROR,Z_BUF_ERROR:a.Z_BUF_ERROR,Z_VERSION_ERROR:a.Z_VERSION_ERROR},p=Object.keys(d),g=0;g<p.length;g++){var y=p[g];d[d[y]]=y}function v(t,e,n){var i=[],a=0;function o(){for(var e;null!==(e=t.read());)i.push(e),a+=e.length;t.once("readable",o)}function s(){var e,o=null;a>=l?o=new RangeError(u):e=r.concat(i,a),i=[],t.close(),n(o,e)}t.on("error",function(e){t.removeListener("end",s),t.removeListener("readable",o),n(e)}),t.on("end",s),t.end(e),o()}function b(t,e){if("string"==typeof e&&(e=r.from(e)),!r.isBuffer(e))throw new TypeError("Not a string or buffer");var n=t._finishFlushFlag;return t._processChunk(e,n)}function m(t){if(!(this instanceof m))return new m(t);P.call(this,t,a.DEFLATE)}function w(t){if(!(this instanceof w))return new w(t);P.call(this,t,a.INFLATE)}function x(t){if(!(this instanceof x))return new x(t);P.call(this,t,a.GZIP)}function S(t){if(!(this instanceof S))return new S(t);P.call(this,t,a.GUNZIP)}function _(t){if(!(this instanceof _))return new _(t);P.call(this,t,a.DEFLATERAW)}function k(t){if(!(this instanceof k))return new k(t);P.call(this,t,a.INFLATERAW)}function C(t){if(!(this instanceof C))return new C(t);P.call(this,t,a.UNZIP)}function A(t){return t===a.Z_NO_FLUSH||t===a.Z_PARTIAL_FLUSH||t===a.Z_SYNC_FLUSH||t===a.Z_FULL_FLUSH||t===a.Z_FINISH||t===a.Z_BLOCK}function P(t,n){var o=this;if(this._opts=t=t||{},this._chunkSize=t.chunkSize||e.Z_DEFAULT_CHUNK,i.call(this,t),t.flush&&!A(t.flush))throw new Error("Invalid flush flag: "+t.flush);if(t.finishFlush&&!A(t.finishFlush))throw new Error("Invalid flush flag: "+t.finishFlush);if(this._flushFlag=t.flush||a.Z_NO_FLUSH,this._finishFlushFlag=void 0!==t.finishFlush?t.finishFlush:a.Z_FINISH,t.chunkSize&&(t.chunkSize<e.Z_MIN_CHUNK||t.chunkSize>e.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+t.chunkSize);if(t.windowBits&&(t.windowBits<e.Z_MIN_WINDOWBITS||t.windowBits>e.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+t.windowBits);if(t.level&&(t.level<e.Z_MIN_LEVEL||t.level>e.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+t.level);if(t.memLevel&&(t.memLevel<e.Z_MIN_MEMLEVEL||t.memLevel>e.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+t.memLevel);if(t.strategy&&t.strategy!=e.Z_FILTERED&&t.strategy!=e.Z_HUFFMAN_ONLY&&t.strategy!=e.Z_RLE&&t.strategy!=e.Z_FIXED&&t.strategy!=e.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+t.strategy);if(t.dictionary&&!r.isBuffer(t.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new a.Zlib(n);var s=this;this._hadError=!1,this._handle.onerror=function(t,n){E(s),s._hadError=!0;var r=new Error(t);r.errno=n,r.code=e.codes[n],s.emit("error",r)};var l=e.Z_DEFAULT_COMPRESSION;"number"==typeof t.level&&(l=t.level);var u=e.Z_DEFAULT_STRATEGY;"number"==typeof t.strategy&&(u=t.strategy),this._handle.init(t.windowBits||e.Z_DEFAULT_WINDOWBITS,l,t.memLevel||e.Z_DEFAULT_MEMLEVEL,u,t.dictionary),this._buffer=r.allocUnsafe(this._chunkSize),this._offset=0,this._level=l,this._strategy=u,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!o._handle},configurable:!0,enumerable:!0})}function E(e,n){n&&t.nextTick(n),e._handle&&(e._handle.close(),e._handle=null)}function I(t){t.emit("close")}Object.defineProperty(e,"codes",{enumerable:!0,value:Object.freeze(d),writable:!1}),e.Deflate=m,e.Inflate=w,e.Gzip=x,e.Gunzip=S,e.DeflateRaw=_,e.InflateRaw=k,e.Unzip=C,e.createDeflate=function(t){return new m(t)},e.createInflate=function(t){return new w(t)},e.createDeflateRaw=function(t){return new _(t)},e.createInflateRaw=function(t){return new k(t)},e.createGzip=function(t){return new x(t)},e.createGunzip=function(t){return new S(t)},e.createUnzip=function(t){return new C(t)},e.deflate=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new m(e),t,n)},e.deflateSync=function(t,e){return b(new m(e),t)},e.gzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new x(e),t,n)},e.gzipSync=function(t,e){return b(new x(e),t)},e.deflateRaw=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new _(e),t,n)},e.deflateRawSync=function(t,e){return b(new _(e),t)},e.unzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new C(e),t,n)},e.unzipSync=function(t,e){return b(new C(e),t)},e.inflate=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new w(e),t,n)},e.inflateSync=function(t,e){return b(new w(e),t)},e.gunzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new S(e),t,n)},e.gunzipSync=function(t,e){return b(new S(e),t)},e.inflateRaw=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new k(e),t,n)},e.inflateRawSync=function(t,e){return b(new k(e),t)},o.inherits(P,i),P.prototype.params=function(n,r,i){if(n<e.Z_MIN_LEVEL||n>e.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+n);if(r!=e.Z_FILTERED&&r!=e.Z_HUFFMAN_ONLY&&r!=e.Z_RLE&&r!=e.Z_FIXED&&r!=e.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+r);if(this._level!==n||this._strategy!==r){var o=this;this.flush(a.Z_SYNC_FLUSH,function(){s(o._handle,"zlib binding closed"),o._handle.params(n,r),o._hadError||(o._level=n,o._strategy=r,i&&i())})}else t.nextTick(i)},P.prototype.reset=function(){return s(this._handle,"zlib binding closed"),this._handle.reset()},P.prototype._flush=function(t){this._transform(r.alloc(0),"",t)},P.prototype.flush=function(e,n){var i=this,o=this._writableState;("function"==typeof e||void 0===e&&!n)&&(n=e,e=a.Z_FULL_FLUSH),o.ended?n&&t.nextTick(n):o.ending?n&&this.once("end",n):o.needDrain?n&&this.once("drain",function(){return i.flush(e,n)}):(this._flushFlag=e,this.write(r.alloc(0),"",n))},P.prototype.close=function(e){E(this,e),t.nextTick(I,this)},P.prototype._transform=function(t,e,n){var i,o=this._writableState,s=(o.ending||o.ended)&&(!t||o.length===t.length);return null===t||r.isBuffer(t)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,t.length>=o.length&&(this._flushFlag=this._opts.flush||a.Z_NO_FLUSH)),void this._processChunk(t,i,n)):n(new Error("zlib binding closed")):n(new Error("invalid input"))},P.prototype._processChunk=function(t,e,n){var i=t&&t.length,a=this._chunkSize-this._offset,o=0,c=this,h="function"==typeof n;if(!h){var f,d=[],p=0;this.on("error",function(t){f=t}),s(this._handle,"zlib binding closed");do{var g=this._handle.writeSync(e,t,o,i,this._buffer,this._offset,a)}while(!this._hadError&&b(g[0],g[1]));if(this._hadError)throw f;if(p>=l)throw E(this),new RangeError(u);var y=r.concat(d,p);return E(this),y}s(this._handle,"zlib binding closed");var v=this._handle.write(e,t,o,i,this._buffer,this._offset,a);function b(l,u){if(this&&(this.buffer=null,this.callback=null),!c._hadError){var f=a-u;if(s(f>=0,"have should not go down"),f>0){var g=c._buffer.slice(c._offset,c._offset+f);c._offset+=f,h?c.push(g):(d.push(g),p+=g.length)}if((0===u||c._offset>=c._chunkSize)&&(a=c._chunkSize,c._offset=0,c._buffer=r.allocUnsafe(c._chunkSize)),0===u){if(o+=i-l,i=l,!h)return!0;var y=c._handle.write(e,t,o,i,c._buffer,c._offset,c._chunkSize);return y.callback=b,void(y.buffer=t)}if(!h)return!1;n()}}v.buffer=t,v.callback=b},o.inherits(m,P),o.inherits(w,P),o.inherits(x,P),o.inherits(S,P),o.inherits(_,P),o.inherits(k,P),o.inherits(C,P)}).call(e,n(11))},function(t,e,n){(function(t,r){var i=/%[sdj%]/g;e.format=function(t){if(!v(t)){for(var e=[],n=0;n<arguments.length;n++)e.push(s(arguments[n]));return e.join(" ")}n=1;for(var r=arguments,a=r.length,o=String(t).replace(i,function(t){if("%%"===t)return"%";if(n>=a)return t;switch(t){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(t){return"[Circular]"}default:return t}}),l=r[n];n<a;l=r[++n])g(l)||!w(l)?o+=" "+l:o+=" "+s(l);return o},e.deprecate=function(n,i){if(b(t.process))return function(){return e.deprecate(n,i).apply(this,arguments)};if(!0===r.noDeprecation)return n;var a=!1;return function(){if(!a){if(r.throwDeprecation)throw new Error(i);r.traceDeprecation,a=!0}return n.apply(this,arguments)}};var a,o={};function s(t,n){var r={seen:[],stylize:u};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),p(n)?r.showHidden=n:n&&e._extend(r,n),b(r.showHidden)&&(r.showHidden=!1),b(r.depth)&&(r.depth=2),b(r.colors)&&(r.colors=!1),b(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=l),c(r,t,r.depth)}function l(t,e){var n=s.styles[e];return n?"["+s.colors[n][0]+"m"+t+"["+s.colors[n][1]+"m":t}function u(t,e){return t}function c(t,n,r){if(t.customInspect&&n&&_(n.inspect)&&n.inspect!==e.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,t);return v(i)||(i=c(t,i,r)),i}var a=function(t,e){if(b(e))return t.stylize("undefined","undefined");if(v(e)){var n="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(n,"string")}if(y(e))return t.stylize(""+e,"number");if(p(e))return t.stylize(""+e,"boolean");if(g(e))return t.stylize("null","null")}(t,n);if(a)return a;var o,s=Object.keys(n),l=(o={},s.forEach(function(t,e){o[t]=!0}),o);if(t.showHidden&&(s=Object.getOwnPropertyNames(n)),S(n)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return h(n);if(0===s.length){if(_(n)){var u=n.name?": "+n.name:"";return t.stylize("[Function"+u+"]","special")}if(m(n))return t.stylize(RegExp.prototype.toString.call(n),"regexp");if(x(n))return t.stylize(Date.prototype.toString.call(n),"date");if(S(n))return h(n)}var w,k="",A=!1,P=["{","}"];(d(n)&&(A=!0,P=["[","]"]),_(n))&&(k=" [Function"+(n.name?": "+n.name:"")+"]");return m(n)&&(k=" "+RegExp.prototype.toString.call(n)),x(n)&&(k=" "+Date.prototype.toUTCString.call(n)),S(n)&&(k=" "+h(n)),0!==s.length||A&&0!=n.length?r<0?m(n)?t.stylize(RegExp.prototype.toString.call(n),"regexp"):t.stylize("[Object]","special"):(t.seen.push(n),w=A?function(t,e,n,r,i){for(var a=[],o=0,s=e.length;o<s;++o)C(e,String(o))?a.push(f(t,e,n,r,String(o),!0)):a.push("");return i.forEach(function(i){i.match(/^\d+$/)||a.push(f(t,e,n,r,i,!0))}),a}(t,n,r,l,s):s.map(function(e){return f(t,n,r,l,e,A)}),t.seen.pop(),function(t,e,n){if(t.reduce(function(t,e){return 0,e.indexOf("\n")>=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return n[0]+(""===e?"":e+"\n ")+" "+t.join(",\n  ")+" "+n[1];return n[0]+e+" "+t.join(", ")+" "+n[1]}(w,k,P)):P[0]+k+P[1]}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function f(t,e,n,r,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?s=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(s=t.stylize("[Setter]","special")),C(r,i)||(o="["+i+"]"),s||(t.seen.indexOf(l.value)<0?(s=g(n)?c(t,l.value,null):c(t,l.value,n-1)).indexOf("\n")>-1&&(s=a?s.split("\n").map(function(t){return"  "+t}).join("\n").substr(2):"\n"+s.split("\n").map(function(t){return"   "+t}).join("\n")):s=t.stylize("[Circular]","special")),b(o)){if(a&&i.match(/^\d+$/))return s;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=t.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=t.stylize(o,"string"))}return o+": "+s}function d(t){return Array.isArray(t)}function p(t){return"boolean"==typeof t}function g(t){return null===t}function y(t){return"number"==typeof t}function v(t){return"string"==typeof t}function b(t){return void 0===t}function m(t){return w(t)&&"[object RegExp]"===k(t)}function w(t){return"object"==typeof t&&null!==t}function x(t){return w(t)&&"[object Date]"===k(t)}function S(t){return w(t)&&("[object Error]"===k(t)||t instanceof Error)}function _(t){return"function"==typeof t}function k(t){return Object.prototype.toString.call(t)}e.debuglog=function(t){if(b(a)&&(a=r.env.NODE_DEBUG||""),t=t.toUpperCase(),!o[t])if(new RegExp("\\b"+t+"\\b","i").test(a)){r.pid;o[t]=function(){e.format.apply(e,arguments)}}else o[t]=function(){};return o[t]},e.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=d,e.isBoolean=p,e.isNull=g,e.isNullOrUndefined=function(t){return null==t},e.isNumber=y,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=b,e.isRegExp=m,e.isObject=w,e.isDate=x,e.isError=S,e.isFunction=_,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=n(151);function C(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){},e.inherits=n(152),e._extend=function(t,e){if(!e||!w(e))return t;for(var n=Object.keys(e),r=n.length;r--;)t[n[r]]=e[n[r]];return t}}).call(e,n(7),n(11))},function(t,e,n){(function(e){(function(){var r,i,a,o;o=n(167),i=function(){function t(){throw new Error("Cannot construct a PDFFont directly.")}return t.open=function(t,n,i,s){var l;if("string"==typeof n){if(a.isStandardFont(n))return new a(t,n,s);l=o.openSync(n,i)}else e.isBuffer(n)?l=o.create(n,i):n instanceof Uint8Array?l=o.create(new e(n),i):n instanceof ArrayBuffer&&(l=o.create(new e(new Uint8Array(n)),i));if(null==l)throw new Error("Not a supported font format or standard PDF font.");return new r(t,l,s)},t.prototype.encode=function(t){throw new Error("Must be implemented by subclasses")},t.prototype.widthOfString=function(t){throw new Error("Must be implemented by subclasses")},t.prototype.ref=function(){return null!=this.dictionary?this.dictionary:this.dictionary=this.document.ref()},t.prototype.finalize=function(){if(!this.embedded&&null!=this.dictionary)return this.embed(),this.embedded=!0},t.prototype.embed=function(){throw new Error("Must be implemented by subclasses")},t.prototype.lineHeight=function(t,e){var n;return null==e&&(e=!1),n=e?this.lineGap:0,(this.ascender+n-this.descender)/1e3*t},t}(),t.exports=i,a=n(292),r=n(294)}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){(function(e){(function(){var r,i;try{i=n(52)}catch(t){}r=function(){var t;function n(t){this.buffer=t,this.pos=0,this.length=this.buffer.length}for(t in n.TYPES={UInt8:1,UInt16:2,UInt24:3,UInt32:4,Int8:1,Int16:2,Int24:3,Int32:4,Float:4,Double:8},e.prototype)"read"===t.slice(0,4)&&function(t){var e;e=n.TYPES[t.replace(/read|[BL]E/g,"")],n.prototype[t]=function(){var n;return n=this.buffer[t](this.pos),this.pos+=e,n}}(t);return n.prototype.readString=function(t,n){var r,a,o,s,l;switch(null==n&&(n="ascii"),n){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.buffer.toString(n,this.pos,this.pos+=t);case"utf16be":for(o=s=0,l=(r=new e(this.readBuffer(t))).length-1;s<l;o=s+=2)a=r[o],r[o]=r[o+1],r[o+1]=a;return r.toString("utf16le");default:if(r=this.readBuffer(t),i)try{return i.decode(r,n)}catch(t){}return r}},n.prototype.readBuffer=function(t){return this.buffer.slice(this.pos,this.pos+=t)},n.prototype.readUInt24BE=function(){return(this.readUInt16BE()<<8)+this.readUInt8()},n.prototype.readUInt24LE=function(){return this.readUInt16LE()+(this.readUInt8()<<16)},n.prototype.readInt24BE=function(){return(this.readInt16BE()<<8)+this.readUInt8()},n.prototype.readInt24LE=function(){return this.readUInt16LE()+(this.readInt8()<<16)},n}(),t.exports=r}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){"use strict";(function(e){var r=n(1).Buffer,i=n(170),a=t.exports;a.encodings=null,a.defaultCharUnicode="�",a.defaultCharSingleByte="?",a.encode=function(t,e,n){t=""+(t||"");var i=a.getEncoder(e,n),o=i.write(t),s=i.end();return s&&s.length>0?r.concat([o,s]):o},a.decode=function(t,e,n){"string"==typeof t&&(a.skipDecodeWarning||(a.skipDecodeWarning=!0),t=new r(""+(t||""),"binary"));var i=a.getDecoder(e,n),o=i.write(t),s=i.end();return s?o+s:o},a.encodingExists=function(t){try{return a.getCodec(t),!0}catch(t){return!1}},a.toEncoding=a.encode,a.fromEncoding=a.decode,a._codecDataCache={},a.getCodec=function(t){a.encodings||(a.encodings=n(171));for(var e=(""+t).toLowerCase().replace(/[^0-9a-z]|:\d{4}$/g,""),r={};;){var i=a._codecDataCache[e];if(i)return i;var o=a.encodings[e];switch(typeof o){case"string":e=o;break;case"object":for(var s in o)r[s]=o[s];r.encodingName||(r.encodingName=e),e=o.type;break;case"function":return r.encodingName||(r.encodingName=e),i=new o(r,a),a._codecDataCache[r.encodingName]=i,i;default:throw new Error("Encoding not recognized: '"+t+"' (searched as: '"+e+"')")}}},a.getEncoder=function(t,e){var n=a.getCodec(t),r=new n.encoder(e,n);return n.bomAware&&e&&e.addBOM&&(r=new i.PrependBOM(r,e)),r},a.getDecoder=function(t,e){var n=a.getCodec(t),r=new n.decoder(e,n);return!n.bomAware||e&&!1===e.stripBOM||(r=new i.StripBOM(r,e)),r};var o=void 0!==e&&e.versions&&e.versions.node;if(o){var s=o.split(".").map(Number);(s[0]>0||s[1]>=10)&&n(185)(a),n(186)(a)}}).call(e,n(11))},function(t,e){t.exports=[["0","\0",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1","　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","！＂＃￥％",88,"￣"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰￢￤"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]},function(t,e,n){var r=n(55);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},function(t,e,n){var r=n(35),i=n(27),a=n(17),o=n(58),s=n(18),l=n(95),u=Object.getOwnPropertyDescriptor;e.f=n(5)?u:function(t,e){if(t=a(t),e=o(e,!0),l)try{return u(t,e)}catch(t){}if(s(t,e))return i(!r.f.call(t,e),t[e])}},function(t,e,n){var r=n(9);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){var r=n(3),i=n(2),a=n(19);t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],o={};o[t]=e(n),r(r.S+r.F*a(function(){n(1)}),"Object",o)}},function(t,e,n){t.exports={default:n(200),__esModule:!0}},function(t,e,n){"use strict";var r=n(62),i=n(3),a=n(99),o=n(13),s=n(18),l=n(23),u=n(203),c=n(39),h=n(206),f=n(4)("iterator"),d=!([].keys&&"next"in[].keys()),p="values",g=function(){return this};t.exports=function(t,e,n,y,v,b,m){u(n,e,y);var w,x,S,_=function(t){if(!d&&t in P)return P[t];switch(t){case"keys":case p:return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",C=v==p,A=!1,P=t.prototype,E=P[f]||P["@@iterator"]||v&&P[v],I=!d&&E||_(v),T=v?C?_("entries"):I:void 0,O="Array"==e&&P.entries||E;if(O&&(S=h(O.call(new t)))!==Object.prototype&&S.next&&(c(S,k,!0),r||s(S,f)||o(S,f,g)),C&&E&&E.name!==p&&(A=!0,I=function(){return E.call(this)}),r&&!m||!d&&!A&&P[f]||o(P,f,I),l[e]=I,l[k]=g,v)if(w={values:C?I:_(p),keys:b?I:_("keys"),entries:T},m)for(x in w)x in P||a(P,x,w[x]);else i(i.P+i.F*(d||A),e,w);return w}},function(t,e){t.exports=!0},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(65)("keys"),i=n(38);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){var r=n(10),i="__core-js_shared__",a=r[i]||(r[i]={});t.exports=function(t){return a[t]||(a[t]={})}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(68),i=n(4)("iterator"),a=n(23);t.exports=n(2).getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||a[r(t)]}},function(t,e,n){var r=n(55),i=n(4)("toStringTag"),a="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?n:a?r(e):"Object"==(o=r(e))&&"function"==typeof e.callee?"Arguments":o}},function(t,e,n){"use strict";e.__esModule=!0;var r=o(n(103)),i=o(n(216)),a="function"==typeof i.default&&"symbol"==typeof r.default?function(t){return typeof t}:function(t){return t&&"function"==typeof i.default&&t.constructor===i.default&&t!==i.default.prototype?"symbol":typeof t};function o(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof i.default&&"symbol"===a(r.default)?function(t){return void 0===t?"undefined":a(t)}:function(t){return t&&"function"==typeof i.default&&t.constructor===i.default&&t!==i.default.prototype?"symbol":void 0===t?"undefined":a(t)}},function(t,e,n){e.f=n(4)},function(t,e,n){var r=n(10),i=n(2),a=n(62),o=n(70),s=n(6).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=a?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:o.f(t)})}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){},function(t,e,n){t.exports={default:n(223),__esModule:!0}},function(t,e,n){var r=n(9);t.exports=function(t,e){if(!r(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){"use strict";function r(){this.events={}}r.prototype.startTracking=function(t,e){var n=this.events[t]||(this.events[t]=[]);n.indexOf(e)<0&&n.push(e)},r.prototype.stopTracking=function(t,e){var n=this.events[t];if(n){var r=n.indexOf(e);r>=0&&n.splice(r,1)}},r.prototype.emit=function(t){var e=Array.prototype.slice.call(arguments,1),n=this.events[t];n&&n.forEach(function(t){t.apply(this,e)})},r.prototype.auto=function(t,e,n){this.startTracking(t,e),n(),this.stopTracking(t,e)},t.exports=r},function(t,e,n){(function(){var e,r,i,a,o,s,l,u,c,h,f,d,p,g,y,v,b,m,w,x,S,_,k,C,A,P,E;w=n(43),_=n(131),P=n(132),P.BK,c=P.CR,P.LF,P.NL,o=P.CB,i=P.BA,P.SP,x=P.WJ,m=P.SP,a=P.BK,d=P.LF,g=P.NL,e=P.AI,r=P.AL,v=P.SA,b=P.SG,S=P.XX,l=P.CJ,P.ID,y=P.NS,P.characterClasses,E=n(133),h=E.DI_BRK,f=E.IN_BRK,s=E.CI_BRK,u=E.CP_BRK,E.PR_BRK,A=E.pairTable,C=_.toByteArray("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"),k=new w(C),p=function(){var t,n,p;function w(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null}return w.prototype.nextCodePoint=function(){var t,e;return t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos),55296<=t&&t<=56319&&56320<=e&&e<=57343?(this.pos++,1024*(t-55296)+(e-56320)+65536):t},n=function(t){switch(t){case e:return r;case v:case b:case S:return r;case l:return y;default:return t}},p=function(t){switch(t){case d:case g:return a;case o:return i;case m:return x;default:return t}},w.prototype.nextCharClass=function(t){return null==t&&(t=!1),n(k.get(this.nextCodePoint()))},t=function(t,e){this.position=t,this.required=null!=e&&e},w.prototype.nextBreak=function(){var e,r,l;for(null==this.curClass&&(this.curClass=p(this.nextCharClass()));this.pos<this.string.length;){if(this.lastPos=this.pos,r=this.nextClass,this.nextClass=this.nextCharClass(),this.curClass===a||this.curClass===c&&this.nextClass!==d)return this.curClass=p(n(this.nextClass)),new t(this.lastPos,!0);if(null==(e=function(){switch(this.nextClass){case m:return this.curClass;case a:case d:case g:return a;case c:return c;case o:return i}}.call(this))){switch(l=!1,A[this.curClass][this.nextClass]){case h:l=!0;break;case f:l=r===m;break;case s:if(!(l=r===m))continue;break;case u:if(r!==m)continue}if(this.curClass=this.nextClass,l)return new t(this.lastPos)}else if(this.curClass=e,this.nextClass===o)return new t(this.lastPos)}if(this.pos>=this.string.length)return this.lastPos<this.string.length?(this.lastPos=this.string.length,new t(this.string.length)):null},w}(),t.exports=p}).call(this)},function(t,e){var n=0,r=-3;function i(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}var a=new i,o=new i,s=new Uint8Array(30),l=new Uint16Array(30),u=new Uint8Array(30),c=new Uint16Array(30),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),f=new i,d=new Uint8Array(320);function p(t,e,n,r){var i,a;for(i=0;i<n;++i)t[i]=0;for(i=0;i<30-n;++i)t[i+n]=i/n|0;for(a=r,i=0;i<30;++i)e[i]=a,a+=1<<t[i]}var g=new Uint16Array(16);function y(t,e,n,r){var i,a;for(i=0;i<16;++i)t.table[i]=0;for(i=0;i<r;++i)t.table[e[n+i]]++;for(t.table[0]=0,a=0,i=0;i<16;++i)g[i]=a,a+=t.table[i];for(i=0;i<r;++i)e[n+i]&&(t.trans[g[e[n+i]]++]=i)}function v(t){t.bitcount--||(t.tag=t.source[t.sourceIndex++],t.bitcount=7);var e=1&t.tag;return t.tag>>>=1,e}function b(t,e,n){if(!e)return n;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var r=t.tag&65535>>>16-e;return t.tag>>>=e,t.bitcount-=e,r+n}function m(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;for(var n=0,r=0,i=0,a=t.tag;r=2*r+(1&a),a>>>=1,++i,n+=e.table[i],(r-=e.table[i])>=0;);return t.tag=a,t.bitcount-=i,e.trans[n+r]}function w(t,e,n){var r,i,a,o,s,l;for(r=b(t,5,257),i=b(t,5,1),a=b(t,4,4),o=0;o<19;++o)d[o]=0;for(o=0;o<a;++o){var u=b(t,3,0);d[h[o]]=u}for(y(f,d,0,19),s=0;s<r+i;){var c=m(t,f);switch(c){case 16:var p=d[s-1];for(l=b(t,2,3);l;--l)d[s++]=p;break;case 17:for(l=b(t,3,3);l;--l)d[s++]=0;break;case 18:for(l=b(t,7,11);l;--l)d[s++]=0;break;default:d[s++]=c}}y(e,d,0,r),y(n,d,r,i)}function x(t,e,r){for(;;){var i,a,o,h,f=m(t,e);if(256===f)return n;if(f<256)t.dest[t.destLen++]=f;else for(i=b(t,s[f-=257],l[f]),a=m(t,r),h=o=t.destLen-b(t,u[a],c[a]);h<o+i;++h)t.dest[t.destLen++]=t.dest[h]}}function S(t){for(var e,i;t.bitcount>8;)t.sourceIndex--,t.bitcount-=8;if((e=256*(e=t.source[t.sourceIndex+1])+t.source[t.sourceIndex])!==(65535&~(256*t.source[t.sourceIndex+3]+t.source[t.sourceIndex+2])))return r;for(t.sourceIndex+=4,i=e;i;--i)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,n}!function(t,e){var n;for(n=0;n<7;++n)t.table[n]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,n=0;n<24;++n)t.trans[n]=256+n;for(n=0;n<144;++n)t.trans[24+n]=n;for(n=0;n<8;++n)t.trans[168+n]=280+n;for(n=0;n<112;++n)t.trans[176+n]=144+n;for(n=0;n<5;++n)e.table[n]=0;for(e.table[5]=32,n=0;n<32;++n)e.trans[n]=n}(a,o),p(s,l,4,3),p(u,c,2,1),s[28]=0,l[28]=258,t.exports=function(t,e){var s,l,u=new function(t,e){this.source=t,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=e,this.destLen=0,this.ltree=new i,this.dtree=new i}(t,e);do{switch(s=v(u),b(u,2,0)){case 0:l=S(u);break;case 1:l=x(u,a,o);break;case 2:w(u,u.ltree,u.dtree),l=x(u,u.ltree,u.dtree);break;default:l=r}if(l!==n)throw new Error("Data error")}while(!s);return u.destLen<u.dest.length?"function"==typeof u.dest.slice?u.dest.slice(0,u.destLen):u.dest.subarray(0,u.destLen):u.dest}},function(t,e,n){"use strict";var r=n(0).isString,i=n(0).isArray,a=n(0).isUndefined,o=n(0).isNull;function s(t,e){this.defaultStyle=e||{},this.styleDictionary=t,this.styleOverrides=[]}s.prototype.clone=function(){var t=new s(this.styleDictionary,this.defaultStyle);return this.styleOverrides.forEach(function(e){t.styleOverrides.push(e)}),t},s.prototype.push=function(t){this.styleOverrides.push(t)},s.prototype.pop=function(t){for(t=t||1;t-- >0;)this.styleOverrides.pop()},s.prototype.autopush=function(t){if(r(t))return 0;var e=[];t.style&&(e=i(t.style)?t.style:[t.style]);for(var n=0,s=e.length;n<s;n++)this.push(e[n]);var l={},u=!1;return["font","fontSize","fontFeatures","bold","italics","alignment","color","columnGap","fillColor","decoration","decorationStyle","decorationColor","background","lineHeight","characterSpacing","noWrap","markerColor","leadingIndent"].forEach(function(e){a(t[e])||o(t[e])||(l[e]=t[e],u=!0)}),u&&this.push(l),e.length+(u?1:0)},s.prototype.auto=function(t,e){var n=this.autopush(t),r=e();return n>0&&this.pop(n),r},s.prototype.getProperty=function(t){if(this.styleOverrides)for(var e=this.styleOverrides.length-1;e>=0;e--){var n=this.styleOverrides[e];if(r(n)){var i=this.styleDictionary[n];if(i&&!a(i[t])&&!o(i[t]))return i[t]}else if(!a(n[t])&&!o(n[t]))return n[t]}return this.defaultStyle&&this.defaultStyle[t]},t.exports=s},function(t,e,n){"use strict";var r=n(77),i=n(0).isString;function a(t,e){this.pages=[],this.pageMargins=e,this.x=e.left,this.availableWidth=t.width-e.left-e.right,this.availableHeight=0,this.page=-1,this.snapshots=[],this.endingCell=null,this.tracker=new r,this.addPage(t),this.hasBackground=!1}a.prototype.beginColumnGroup=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,bottomMost:{x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page},endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth}),this.lastColumnWidth=0},a.prototype.beginColumn=function(t,e,n){var r=this.snapshots[this.snapshots.length-1];this.calculateBottomMost(r),this.endingCell=n,this.page=r.page,this.x=this.x+this.lastColumnWidth+(e||0),this.y=r.y,this.availableWidth=t,this.availableHeight=r.availableHeight,this.lastColumnWidth=t},a.prototype.calculateBottomMost=function(t){this.endingCell?(this.saveContextInEndingCell(this.endingCell),this.endingCell=null):t.bottomMost=function(t,e){var n;n=t.page>e.page?t:e.page>t.page?e:t.y>e.y?t:e;return{page:n.page,x:n.x,y:n.y,availableHeight:n.availableHeight,availableWidth:n.availableWidth}}(this,t.bottomMost)},a.prototype.markEnding=function(t){this.page=t._columnEndingContext.page,this.x=t._columnEndingContext.x,this.y=t._columnEndingContext.y,this.availableWidth=t._columnEndingContext.availableWidth,this.availableHeight=t._columnEndingContext.availableHeight,this.lastColumnWidth=t._columnEndingContext.lastColumnWidth},a.prototype.saveContextInEndingCell=function(t){t._columnEndingContext={page:this.page,x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,lastColumnWidth:this.lastColumnWidth}},a.prototype.completeColumnGroup=function(t){var e=this.snapshots.pop();this.calculateBottomMost(e),this.endingCell=null,this.x=e.x;var n=e.bottomMost.y;t&&(e.page===e.bottomMost.page?e.y+t>n&&(n=e.y+t):n+=t),this.y=n,this.page=e.bottomMost.page,this.availableWidth=e.availableWidth,this.availableHeight=e.bottomMost.availableHeight,t&&(this.availableHeight-=n-e.bottomMost.y),this.lastColumnWidth=e.lastColumnWidth},a.prototype.addMargin=function(t,e){this.x+=t,this.availableWidth-=t+(e||0)},a.prototype.moveDown=function(t){return this.y+=t,this.availableHeight-=t,this.availableHeight>0},a.prototype.initializePage=function(){this.y=this.pageMargins.top,this.availableHeight=this.getCurrentPage().pageSize.height-this.pageMargins.top-this.pageMargins.bottom,this.pageSnapshot().availableWidth=this.getCurrentPage().pageSize.width-this.pageMargins.left-this.pageMargins.right},a.prototype.pageSnapshot=function(){return this.snapshots[0]?this.snapshots[0]:this},a.prototype.moveTo=function(t,e){null!=t&&(this.x=t,this.availableWidth=this.getCurrentPage().pageSize.width-this.x-this.pageMargins.right),null!=e&&(this.y=e,this.availableHeight=this.getCurrentPage().pageSize.height-this.y-this.pageMargins.bottom)},a.prototype.beginDetachedBlock=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth})},a.prototype.endDetachedBlock=function(){var t=this.snapshots.pop();this.x=t.x,this.y=t.y,this.availableWidth=t.availableWidth,this.availableHeight=t.availableHeight,this.page=t.page,this.endingCell=t.endingCell,this.lastColumnWidth=t.lastColumnWidth};var o=function(t,e){var n,r;return n=e,r=t.pageSize.orientation,(e=void 0===n?r:i(n)&&"landscape"===n.toLowerCase()?"landscape":"portrait")!==t.pageSize.orientation?{orientation:e,width:t.pageSize.height,height:t.pageSize.width}:{orientation:t.pageSize.orientation,width:t.pageSize.width,height:t.pageSize.height}};a.prototype.moveToNextPage=function(t){var e=this.page+1,n=this.page,r=this.y,i=e>=this.pages.length;if(i){var a=this.availableWidth,s=this.getCurrentPage().pageSize.orientation,l=o(this.getCurrentPage(),t);this.addPage(l),s===l.orientation&&(this.availableWidth=a)}else this.page=e,this.initializePage();return{newPageCreated:i,prevPage:n,prevY:r,y:this.y}},a.prototype.addPage=function(t){var e={items:[],pageSize:t};return this.pages.push(e),this.page=this.pages.length-1,this.initializePage(),this.tracker.emit("pageAdded"),e},a.prototype.getCurrentPage=function(){return this.page<0||this.page>=this.pages.length?null:this.pages[this.page]},a.prototype.getCurrentPosition=function(){var t=this.getCurrentPage().pageSize,e=t.height-this.pageMargins.top-this.pageMargins.bottom,n=t.width-this.pageMargins.left-this.pageMargins.right;return{pageNumber:this.page+1,pageOrientation:t.orientation,pageInnerHeight:e,pageInnerWidth:n,left:this.x,top:this.y,verticalRatio:(this.y-this.pageMargins.top)/e,horizontalRatio:(this.x-this.pageMargins.left)/n}},t.exports=a},function(t,e,n){"use strict";function r(t){this.maxWidth=t,this.leadingCut=0,this.trailingCut=0,this.inlineWidths=0,this.inlines=[]}r.prototype.getAscenderHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.font.ascender/1e3*e.fontSize)}),t},r.prototype.hasEnoughSpaceForInline=function(t){return 0===this.inlines.length||!this.newLineForced&&this.inlineWidths+t.width-this.leadingCut-(t.trailingCut||0)<=this.maxWidth},r.prototype.addInline=function(t){0===this.inlines.length&&(this.leadingCut=t.leadingCut||0),this.trailingCut=t.trailingCut||0,t.x=this.inlineWidths-this.leadingCut,this.inlines.push(t),this.inlineWidths+=t.width,t.lineEnd&&(this.newLineForced=!0)},r.prototype.getWidth=function(){return this.inlineWidths-this.leadingCut-this.trailingCut},r.prototype.getHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.height||0)}),t},t.exports=r},function(t,e,n){"use strict";(function(e,r){var i=n(32).nextTick;t.exports=m;var a,o=n(76);m.ReadableState=b;n(31).EventEmitter;var s=function(t,e){return t.listeners(e).length},l=n(84),u=n(33).Buffer,c=e.Uint8Array||function(){};var h=n(25);h.inherits=n(21);var f=n(139),d=void 0;d=f&&f.debuglog?f.debuglog("stream"):function(){};var p,g=n(140),y=n(85);h.inherits(m,l);var v=["error","close","destroy","pause","resume"];function b(t,e){t=t||{};var r=e instanceof(a=a||n(16));this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var i=t.highWaterMark,o=t.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(p||(p=n(47).StringDecoder),this.decoder=new p(t.encoding),this.encoding=t.encoding)}function m(t){if(a=a||n(16),!(this instanceof m))return new m(t);this._readableState=new b(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),l.call(this)}function w(t,e,n,r,i){var a,o,s,l=t._readableState;null===e?(l.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,k(t)}(t,l)):(i||(a=function(t,e){var n;r=e,u.isBuffer(r)||r instanceof c||"string"==typeof e||void 0===e||t.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));var r;return n}(l,e)),a?t.emit("error",a):l.objectMode||e&&e.length>0?("string"==typeof e||l.objectMode||Object.getPrototypeOf(e)===u.prototype||(o=e,e=u.from(o)),r?l.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):x(t,l,e,!0):l.ended?t.emit("error",new Error("stream.push() after EOF")):(l.reading=!1,l.decoder&&!n?(e=l.decoder.write(e),l.objectMode||0!==e.length?x(t,l,e,!1):A(t,l)):x(t,l,e,!1))):r||(l.reading=!1));return!(s=l).ended&&(s.needReadable||s.length<s.highWaterMark||0===s.length)}function x(t,e,n,r){e.flowing&&0===e.length&&!e.sync?(t.emit("data",n),t.read(0)):(e.length+=e.objectMode?1:n.length,r?e.buffer.unshift(n):e.buffer.push(n),e.needReadable&&k(t)),A(t,e)}Object.defineProperty(m.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),m.prototype.destroy=y.destroy,m.prototype._undestroy=y.undestroy,m.prototype._destroy=function(t,e){this.push(null),e(t)},m.prototype.push=function(t,e){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof t&&((e=e||r.defaultEncoding)!==r.encoding&&(t=u.from(t,e),e=""),n=!0),w(this,t,e,!1,n)},m.prototype.unshift=function(t){return w(this,t,null,!0,!1)},m.prototype.isPaused=function(){return!1===this._readableState.flowing},m.prototype.setEncoding=function(t){return p||(p=n(47).StringDecoder),this._readableState.decoder=new p(t),this._readableState.encoding=t,this};var S=8388608;function _(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=((n=t)>=S?n=S:(n--,n|=n>>>1,n|=n>>>2,n|=n>>>4,n|=n>>>8,n|=n>>>16,n++),n)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0));var n}function k(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(d("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?i(C,t):C(t))}function C(t){d("emit readable"),t.emit("readable"),T(t)}function A(t,e){e.readingMore||(e.readingMore=!0,i(P,t,e))}function P(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(d("maybeReadMore read 0"),t.read(0),n!==e.length);)n=e.length;e.readingMore=!1}function E(t){d("readable nexttick read 0"),t.read(0)}function I(t,e){e.reading||(d("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),T(t),e.flowing&&!e.reading&&t.read(0)}function T(t){var e=t._readableState;for(d("flow",e.flowing);e.flowing&&null!==t.read(););}function O(t,e){return 0===e.length?null:(e.objectMode?n=e.buffer.shift():!t||t>=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):n=function(t,e,n){var r;t<e.head.data.length?(r=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):r=t===e.head.data.length?e.shift():n?function(t,e){var n=e.head,r=1,i=n.data;t-=i.length;for(;n=n.next;){var a=n.data,o=t>a.length?a.length:t;if(o===a.length?i+=a:i+=a.slice(0,t),0===(t-=o)){o===a.length?(++r,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=a.slice(o));break}++r}return e.length-=r,i}(t,e):function(t,e){var n=u.allocUnsafe(t),r=e.head,i=1;r.data.copy(n),t-=r.data.length;for(;r=r.next;){var a=r.data,o=t>a.length?a.length:t;if(a.copy(n,n.length-t,0,o),0===(t-=o)){o===a.length?(++i,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=a.slice(o));break}++i}return e.length-=i,n}(t,e);return r}(t,e.buffer,e.decoder),n);var n}function L(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,i(B,e,t))}function B(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function M(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1}m.prototype.read=function(t){d("read",t),t=parseInt(t,10);var e=this._readableState,n=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return d("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?L(this):k(this),null;if(0===(t=_(t,e))&&e.ended)return 0===e.length&&L(this),null;var r,i=e.needReadable;return d("need readable",i),(0===e.length||e.length-t<e.highWaterMark)&&d("length less than watermark",i=!0),e.ended||e.reading?d("reading or ended",i=!1):i&&(d("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=_(n,e))),null===(r=t>0?O(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&L(this)),null!==r&&this.emit("data",r),r},m.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},m.prototype.pipe=function(t,e){var n=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=t;break;case 1:a.pipes=[a.pipes,t];break;default:a.pipes.push(t)}a.pipesCount+=1,d("pipe count=%d opts=%j",a.pipesCount,e);var l=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?c:w;function u(e,r){d("onunpipe"),e===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,d("cleanup"),t.removeListener("close",b),t.removeListener("finish",m),t.removeListener("drain",f),t.removeListener("error",v),t.removeListener("unpipe",u),n.removeListener("end",c),n.removeListener("end",w),n.removeListener("data",y),p=!0,!a.awaitDrain||t._writableState&&!t._writableState.needDrain||f())}function c(){d("onend"),t.end()}a.endEmitted?i(l):n.once("end",l),t.on("unpipe",u);var h,f=(h=n,function(){var t=h._readableState;d("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(h,"data")&&(t.flowing=!0,T(h))});t.on("drain",f);var p=!1;var g=!1;function y(e){d("ondata"),g=!1,!1!==t.write(e)||g||((1===a.pipesCount&&a.pipes===t||a.pipesCount>1&&-1!==M(a.pipes,t))&&!p&&(d("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,g=!0),n.pause())}function v(e){d("onerror",e),w(),t.removeListener("error",v),0===s(t,"error")&&t.emit("error",e)}function b(){t.removeListener("finish",m),w()}function m(){d("onfinish"),t.removeListener("close",b),w()}function w(){d("unpipe"),n.unpipe(t)}return n.on("data",y),function(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?o(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}(t,"error",v),t.once("close",b),t.once("finish",m),t.emit("pipe",n),a.flowing||(d("pipe resume"),n.resume()),t},m.prototype.unpipe=function(t){var e=this._readableState,n={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,n),this);if(!t){var r=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a<i;a++)r[a].emit("unpipe",this,n);return this}var o=M(e.pipes,t);return-1===o?this:(e.pipes.splice(o,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,n),this)},m.prototype.addListener=m.prototype.on=function(t,e){var n=l.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&k(this):i(E,this))}return n},m.prototype.resume=function(){var t,e,n=this._readableState;return n.flowing||(d("resume"),n.flowing=!0,t=this,(e=n).resumeScheduled||(e.resumeScheduled=!0,i(I,t,e))),this},m.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this},m.prototype.wrap=function(t){var e=this,n=this._readableState,r=!1;for(var i in t.on("end",function(){if(d("wrapped end"),n.decoder&&!n.ended){var t=n.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(i){(d("wrapped data"),n.decoder&&(i=n.decoder.write(i)),n.objectMode&&null==i)||(n.objectMode||i&&i.length)&&(e.push(i)||(r=!0,t.pause()))}),t)void 0===this[i]&&"function"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var a=0;a<v.length;a++)t.on(v[a],this.emit.bind(this,v[a]));return this._read=function(e){d("wrapped _read",e),r&&(r=!1,t.resume())},this},m._fromList=O}).call(e,n(7),n(11))},function(t,e,n){t.exports=n(31).EventEmitter},function(t,e,n){"use strict";var r=n(32).nextTick;function i(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var n=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||r(i,this,t),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?(r(i,n,t),n._writableState&&(n._writableState.errorEmitted=!0)):e&&e(t)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(t,e,n){"use strict";t.exports=a;var r=n(16),i=n(25);function a(t){if(!(this instanceof a))return new a(t);r.call(this,t),this._transformState={afterTransform:function(t,e){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=e&&this.push(e),r(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",o)}function o(){var t=this;"function"==typeof this._flush?this._flush(function(e,n){s(t,e,n)}):s(this,null,null)}function s(t,e,n){if(e)return t.emit("error",e);if(null!=n&&t.push(n),t._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(t._transformState.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}i.inherits=n(21),i.inherits(a,r),a.prototype.push=function(t,e){return this._transformState.needTransform=!1,r.prototype.push.call(this,t,e)},a.prototype._transform=function(t,e,n){throw new Error("_transform() is not implemented")},a.prototype._write=function(t,e,n){var r=this._transformState;if(r.writecb=n,r.writechunk=t,r.writeencoding=e,!r.transforming){var i=this._readableState;(r.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},a.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},a.prototype._destroy=function(t,e){var n=this;r.prototype._destroy.call(this,t,function(t){e(t),n.emit("close")})}},function(t,e,n){(function(e){(function(){var r,i,a,o,s=function(t,e){return function(){return t.apply(e,arguments)}},l={}.hasOwnProperty;o=n(48),a=n(15),i=function(t){function n(t,e,r){this.document=t,this.id=e,this.data=null!=r?r:{},this.finalize=s(this.finalize,this),n.__super__.constructor.call(this,{decodeStrings:!1}),this.gen=0,this.deflate=null,this.compress=this.document.compress&&!this.data.Filter,this.uncompressedLength=0,this.chunks=[]}return function(t,e){for(var n in e)l.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(n,a.Writable),n.prototype.initDeflate=function(){var t;return this.data.Filter="FlateDecode",this.deflate=o.createDeflate(),this.deflate.on("data",(t=this,function(e){return t.chunks.push(e),t.data.Length+=e.length})),this.deflate.on("end",this.finalize)},n.prototype._write=function(t,n,r){var i;return e.isBuffer(t)||(t=new e(t+"\n","binary")),this.uncompressedLength+=t.length,null==(i=this.data).Length&&(i.Length=0),this.compress?(this.deflate||this.initDeflate(),this.deflate.write(t)):(this.chunks.push(t),this.data.Length+=t.length),r()},n.prototype.end=function(t){return n.__super__.end.apply(this,arguments),this.deflate?this.deflate.end():this.finalize()},n.prototype.finalize=function(){var t,e,n,i;if(this.offset=this.document._offset,this.document._write(this.id+" "+this.gen+" obj"),this.document._write(r.convert(this.data)),this.chunks.length){for(this.document._write("stream"),e=0,n=(i=this.chunks).length;e<n;e++)t=i[e],this.document._write(t);this.chunks.length=0,this.document._write("\nendstream")}return this.document._write("endobj"),this.document._refEnd(this)},n.prototype.toString=function(){return this.id+" "+this.gen+" R"},n}(),t.exports=i,r=n(26)}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){"use strict";(function(e){function r(t,e){if(t===e)return 0;for(var n=t.length,r=e.length,i=0,a=Math.min(n,r);i<a;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0}function i(t){return e.Buffer&&"function"==typeof e.Buffer.isBuffer?e.Buffer.isBuffer(t):!(null==t||!t._isBuffer)}var a=n(49),o=Object.prototype.hasOwnProperty,s=Array.prototype.slice,l="foo"===function(){}.name;function u(t){return Object.prototype.toString.call(t)}function c(t){return!i(t)&&("function"==typeof e.ArrayBuffer&&("function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):!!t&&(t instanceof DataView||!!(t.buffer&&t.buffer instanceof ArrayBuffer))))}var h=t.exports=v,f=/\s*function\s+([^\(\s]*)\s*/;function d(t){if(a.isFunction(t)){if(l)return t.name;var e=t.toString().match(f);return e&&e[1]}}function p(t,e){return"string"==typeof t?t.length<e?t:t.slice(0,e):t}function g(t){if(l||!a.isFunction(t))return a.inspect(t);var e=d(t);return"[Function"+(e?": "+e:"")+"]"}function y(t,e,n,r,i){throw new h.AssertionError({message:n,actual:t,expected:e,operator:r,stackStartFunction:i})}function v(t,e){t||y(t,!0,e,"==",h.ok)}function b(t,e,n,o){if(t===e)return!0;if(i(t)&&i(e))return 0===r(t,e);if(a.isDate(t)&&a.isDate(e))return t.getTime()===e.getTime();if(a.isRegExp(t)&&a.isRegExp(e))return t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase;if(null!==t&&"object"==typeof t||null!==e&&"object"==typeof e){if(c(t)&&c(e)&&u(t)===u(e)&&!(t instanceof Float32Array||t instanceof Float64Array))return 0===r(new Uint8Array(t.buffer),new Uint8Array(e.buffer));if(i(t)!==i(e))return!1;var l=(o=o||{actual:[],expected:[]}).actual.indexOf(t);return-1!==l&&l===o.expected.indexOf(e)||(o.actual.push(t),o.expected.push(e),function(t,e,n,r){if(null==t||null==e)return!1;if(a.isPrimitive(t)||a.isPrimitive(e))return t===e;if(n&&Object.getPrototypeOf(t)!==Object.getPrototypeOf(e))return!1;var i=m(t),o=m(e);if(i&&!o||!i&&o)return!1;if(i)return t=s.call(t),e=s.call(e),b(t,e,n);var l,u,c=S(t),h=S(e);if(c.length!==h.length)return!1;for(c.sort(),h.sort(),u=c.length-1;u>=0;u--)if(c[u]!==h[u])return!1;for(u=c.length-1;u>=0;u--)if(l=c[u],!b(t[l],e[l],n,r))return!1;return!0}(t,e,n,o))}return n?t===e:t==e}function m(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function w(t,e){if(!t||!e)return!1;if("[object RegExp]"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&!0===e.call({},t)}function x(t,e,n,r){var i;if("function"!=typeof e)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(r=n,n=null),i=function(t){var e;try{t()}catch(t){e=t}return e}(e),r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),t&&!i&&y(i,n,"Missing expected exception"+r);var o="string"==typeof r,s=!t&&i&&!n;if((!t&&a.isError(i)&&o&&w(i,n)||s)&&y(i,n,"Got unwanted exception"+r),t&&i&&n&&!w(i,n)||!t&&i)throw i}h.AssertionError=function(t){var e;this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=p(g((e=this).actual),128)+" "+e.operator+" "+p(g(e.expected),128),this.generatedMessage=!0);var n=t.stackStartFunction||y;if(Error.captureStackTrace)Error.captureStackTrace(this,n);else{var r=new Error;if(r.stack){var i=r.stack,a=d(n),o=i.indexOf("\n"+a);if(o>=0){var s=i.indexOf("\n",o+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(h.AssertionError,Error),h.fail=y,h.ok=v,h.equal=function(t,e,n){t!=e&&y(t,e,n,"==",h.equal)},h.notEqual=function(t,e,n){t==e&&y(t,e,n,"!=",h.notEqual)},h.deepEqual=function(t,e,n){b(t,e,!1)||y(t,e,n,"deepEqual",h.deepEqual)},h.deepStrictEqual=function(t,e,n){b(t,e,!0)||y(t,e,n,"deepStrictEqual",h.deepStrictEqual)},h.notDeepEqual=function(t,e,n){b(t,e,!1)&&y(t,e,n,"notDeepEqual",h.notDeepEqual)},h.notDeepStrictEqual=function t(e,n,r){b(e,n,!0)&&y(e,n,r,"notDeepStrictEqual",t)},h.strictEqual=function(t,e,n){t!==e&&y(t,e,n,"===",h.strictEqual)},h.notStrictEqual=function(t,e,n){t===e&&y(t,e,n,"!==",h.notStrictEqual)},h.throws=function(t,e,n){x(!0,t,e,n)},h.doesNotThrow=function(t,e,n){x(!1,t,e,n)},h.ifError=function(t){if(t)throw t};var S=Object.keys||function(t){var e=[];for(var n in t)o.call(t,n)&&e.push(n);return e}}).call(e,n(7))},function(t,e,n){"use strict";t.exports=function(t,e,n,r){for(var i=65535&t|0,a=t>>>16&65535|0,o=0;0!==n;){for(n-=o=n>2e3?2e3:n;a=a+(i=i+e[r++]|0)|0,--o;);i%=65521,a%=65521}return i|a<<16|0}},function(t,e,n){"use strict";var r=function(){for(var t,e=[],n=0;n<256;n++){t=n;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}();t.exports=function(t,e,n,i){var a=r,o=i+n;t^=-1;for(var s=i;s<o;s++)t=t>>>8^a[255&(t^e[s])];return-1^t}},function(t,e){t.exports=[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31,"　"],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]]},function(t,e){t.exports=[["0","\0",127],["a140","　，、。．‧；：？！︰…‥﹐﹑﹒·﹔﹕﹖﹗｜–︱—︳╴︴﹏（）︵︶｛｝︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯￣＿ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢",4,"～∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣／"],["a240","＼∕﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳０",9,"Ⅰ",9,"〡",8,"十卄卅Ａ",25,"ａ",21],["a340","ｗｘｙｚΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]},function(t,e,n){(function(){var e,r,i;r=n(22).Number,i=n(12),e=function(){function t(t,e,n){this.type=t,this.length=e,this.lengthType=null!=n?n:"count"}return t.prototype.decode=function(t,e){var n,a,o,s,l,u;if(o=t.pos,s=[],n=e,null!=this.length&&(a=i.resolveLength(this.length,t,e)),this.length instanceof r&&(Object.defineProperties(s,{parent:{value:e},_startOffset:{value:o},_currentOffset:{value:0,writable:!0},_length:{value:a}}),n=s),null==a||"bytes"===this.lengthType)for(l=null!=a?t.pos+a:(null!=e?e._length:void 0)?e._startOffset+e._length:t.length;t.pos<l;)s.push(this.type.decode(t,n));else for(u=0;u<a;u+=1)s.push(this.type.decode(t,n));return s},t.prototype.size=function(t,e){var n,a,o,s;if(!t)return this.type.size(null,e)*i.resolveLength(this.length,null,e);for(a=0,this.length instanceof r&&(a+=this.length.size(),e={parent:e}),o=0,s=t.length;o<s;o++)n=t[o],a+=this.type.size(n,e);return a},t.prototype.encode=function(t,e,n){var i,a,o,s,l,u;for(i=n,this.length instanceof r&&((i={pointers:[],startOffset:t.pos,parent:n}).pointerOffset=t.pos+this.size(e,i),this.length.encode(t,e.length)),l=0,u=e.length;l<u;l++)o=e[l],this.type.encode(t,o,i);if(this.length instanceof r)for(a=0;a<i.pointers.length;)(s=i.pointers[a++]).type.encode(t,s.val)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r;r=n(12),e=function(){function t(t){this.fields=null!=t?t:{}}return t.prototype.decode=function(t,e,n){var r,i;return null==n&&(n=0),r=this._setup(t,e,n),this._parseFields(t,r,this.fields),null!=(i=this.process)&&i.call(r,t),r},t.prototype._setup=function(t,e,n){var r;return r={},Object.defineProperties(r,{parent:{value:e},_startOffset:{value:t.pos},_currentOffset:{value:0,writable:!0},_length:{value:n}}),r},t.prototype._parseFields=function(t,e,n){var i,a,o;for(i in n)void 0!==(o="function"==typeof(a=n[i])?a.call(e,e):a.decode(t,e))&&(o instanceof r.PropertyDescriptor?Object.defineProperty(e,i,o):e[i]=o),e._currentOffset=t.pos-e._startOffset},t.prototype.size=function(t,e,n){var r,i,a,o,s;for(i in null==t&&(t={}),null==n&&(n=!0),r={parent:e,val:t,pointerSize:0},a=0,s=this.fields)null!=(o=s[i]).size&&(a+=o.size(t[i],r));return n&&(a+=r.pointerSize),a},t.prototype.encode=function(t,e,n){var r,i,a,o,s,l,u;for(a in null!=(l=this.preEncode)&&l.call(e,t),(r={pointers:[],startOffset:t.pos,parent:n,val:e,pointerSize:0}).pointerOffset=t.pos+this.size(e,r,!1),u=this.fields)null!=(s=u[a]).encode&&s.encode(t,e[a],r);for(i=0;i<r.pointers.length;)(o=r.pointers[i++]).type.encode(t,o.val,o.parent)},t}(),t.exports=e}).call(this)},function(t,e,n){t.exports=!n(5)&&!n(19)(function(){return 7!=Object.defineProperty(n(96)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(9),i=n(10).document,a=r(i)&&r(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){t.exports=n(13)},function(t,e,n){var r=n(6),i=n(14),a=n(29);t.exports=n(5)?Object.defineProperties:function(t,e){i(t);for(var n,o=a(e),s=o.length,l=0;s>l;)r.f(t,n=o[l++],e[n]);return t}},function(t,e,n){var r=n(18),i=n(17),a=n(204)(!1),o=n(64)("IE_PROTO");t.exports=function(t,e){var n,s=i(t),l=0,u=[];for(n in s)n!=o&&r(s,n)&&u.push(n);for(;e.length>l;)r(s,n=e[l++])&&(~a(u,n)||u.push(n));return u}},function(t,e,n){var r=n(63),i=Math.max,a=Math.min;t.exports=function(t,e){return(t=r(t))<0?i(t+e,0):a(t,e)}},function(t,e,n){t.exports={default:n(215),__esModule:!0}},function(t,e,n){var r=n(55);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(101),i=n(66).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,e,n){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e,n){"use strict";e.__esModule=!0;var r,i=n(74),a=(r=i)&&r.__esModule?r:{default:r};e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),(0,a.default)(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}()},function(t,e,n){"use strict";var r=n(6).f,i=n(36),a=n(109),o=n(20),s=n(110),l=n(41),u=n(61),c=n(98),h=n(228),f=n(5),d=n(40).fastKey,p=n(75),g=f?"_s":"size",y=function(t,e){var n,r=d(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,u){var c=t(function(t,r){s(t,c,e,"_i"),t._t=e,t._i=i(null),t._f=void 0,t._l=void 0,t[g]=0,null!=r&&l(r,n,t[u],t)});return a(c.prototype,{clear:function(){for(var t=p(this,e),n=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];t._f=t._l=void 0,t[g]=0},delete:function(t){var n=p(this,e),r=y(n,t);if(r){var i=r.n,a=r.p;delete n._i[r.i],r.r=!0,a&&(a.n=i),i&&(i.p=a),n._f==r&&(n._f=i),n._l==r&&(n._l=a),n[g]--}return!!r},forEach:function(t){p(this,e);for(var n,r=o(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!y(p(this,e),t)}}),f&&r(c.prototype,"size",{get:function(){return p(this,e)[g]}}),c},def:function(t,e,n){var r,i,a=y(t,e);return a?a.v=n:(t._l=a={i:i=d(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=a),r&&(r.n=a),t[g]++,"F"!==i&&(t._i[i]=a)),t},getEntry:y,setStrong:function(t,e,n){u(t,e,function(t,n){this._t=p(t,e),this._k=n,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?c(0,"keys"==e?n.k:"values"==e?n.v:[n.k,n.v]):(t._t=void 0,c(1))},n?"entries":"values",!n,!0),h(e)}}},function(t,e,n){var r=n(13);t.exports=function(t,e,n){for(var i in e)n&&t[i]?t[i]=e[i]:r(t,i,e[i]);return t}},function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var r=n(14);t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(e){var a=t.return;throw void 0!==a&&r(a.call(t)),e}}},function(t,e,n){var r=n(23),i=n(4)("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||a[i]===t)}},function(t,e,n){"use strict";var r=n(10),i=n(3),a=n(40),o=n(19),s=n(13),l=n(109),u=n(41),c=n(110),h=n(9),f=n(39),d=n(6).f,p=n(229)(0),g=n(5);t.exports=function(t,e,n,y,v,b){var m=r[t],w=m,x=v?"set":"add",S=w&&w.prototype,_={};return g&&"function"==typeof w&&(b||S.forEach&&!o(function(){(new w).entries().next()}))?(w=e(function(e,n){c(e,w,t,"_c"),e._c=new m,null!=n&&u(n,v,e[x],e)}),p("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(t){var e="add"==t||"set"==t;t in S&&(!b||"clear"!=t)&&s(w.prototype,t,function(n,r){if(c(this,w,t),!e&&b&&!h(n))return"get"==t&&void 0;var i=this._c[t](0===n?0:n,r);return e?this:i})}),b||d(w.prototype,"size",{get:function(){return this._c.size}})):(w=y.getConstructor(e,t,v,x),l(w.prototype,n),a.NEED=!0),f(w,t),_[t]=w,i(i.G+i.W+i.F,_),b||y.setStrong(w,t,v),w}},function(t,e,n){var r=n(68),i=n(233);t.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");return i(this)}}},function(t,e,n){"use strict";var r=n(3);t.exports=function(t){r(r.S,t,{of:function(){for(var t=arguments.length,e=new Array(t);t--;)e[t]=arguments[t];return new this(e)}})}},function(t,e,n){"use strict";var r=n(3),i=n(97),a=n(20),o=n(41);t.exports=function(t){r(r.S,t,{from:function(t){var e,n,r,s,l=arguments[1];return i(this),(e=void 0!==l)&&i(l),null==t?new this:(n=[],e?(r=0,s=a(l,arguments[2],2),o(t,!1,function(t){n.push(s(t,r++))})):o(t,!1,n.push,n),new this(n))}})}},function(t,e,n){var r=n(118).BrotliInput,i=n(118).BrotliOutput,a=n(285),o=n(119),s=n(120).HuffmanCode,l=n(120).BrotliBuildHuffmanTable,u=n(289),c=n(290),h=n(291),f=8,d=16,p=256,g=704,y=26,v=6,b=2,m=8,w=255,x=1080,S=18,_=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),k=16,C=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),A=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),P=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function E(t){var e;return 0===t.readBits(1)?16:(e=t.readBits(3))>0?17+e:(e=t.readBits(3))>0?8+e:17}function I(t){if(t.readBits(1)){var e=t.readBits(3);return 0===e?1:t.readBits(e)+(1<<e)}return 0}function T(t){var e,n,r,i=new function(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1};if(i.input_end=t.readBits(1),i.input_end&&t.readBits(1))return i;if(7===(e=t.readBits(2)+4)){if(i.is_metadata=!0,0!==t.readBits(1))throw new Error("Invalid reserved bit");if(0===(n=t.readBits(2)))return i;for(r=0;r<n;r++){var a=t.readBits(8);if(r+1===n&&n>1&&0===a)throw new Error("Invalid size byte");i.meta_block_length|=a<<8*r}}else for(r=0;r<e;++r){var o=t.readBits(4);if(r+1===e&&e>4&&0===o)throw new Error("Invalid size nibble");i.meta_block_length|=o<<4*r}return++i.meta_block_length,i.input_end||i.is_metadata||(i.is_uncompressed=t.readBits(1)),i}function O(t,e,n){var r;return n.fillBitWindow(),(r=t[e+=n.val_>>>n.bit_pos_&w].bits-m)>0&&(n.bit_pos_+=m,e+=t[e].value,e+=n.val_>>>n.bit_pos_&(1<<r)-1),n.bit_pos_+=t[e].bits,t[e].value}function L(t,e,n,r){var i,a,o=new Uint8Array(t);if(r.readMoreInput(),1===(a=r.readBits(2))){for(var u=t-1,c=0,h=new Int32Array(4),p=r.readBits(2)+1;u;)u>>=1,++c;for(g=0;g<p;++g)h[g]=r.readBits(c)%t,o[h[g]]=2;switch(o[h[0]]=1,p){case 1:break;case 3:if(h[0]===h[1]||h[0]===h[2]||h[1]===h[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(h[0]===h[1])throw new Error("[ReadHuffmanCode] invalid symbols");o[h[1]]=1;break;case 4:if(h[0]===h[1]||h[0]===h[2]||h[0]===h[3]||h[1]===h[2]||h[1]===h[3]||h[2]===h[3])throw new Error("[ReadHuffmanCode] invalid symbols");r.readBits(1)?(o[h[2]]=3,o[h[3]]=3):o[h[0]]=2}}else{var g,y=new Uint8Array(S),v=32,b=0,w=[new s(2,0),new s(2,4),new s(2,3),new s(3,2),new s(2,0),new s(2,4),new s(2,3),new s(4,1),new s(2,0),new s(2,4),new s(2,3),new s(3,2),new s(2,0),new s(2,4),new s(2,3),new s(4,5)];for(g=a;g<S&&v>0;++g){var x,k=_[g],C=0;r.fillBitWindow(),C+=r.val_>>>r.bit_pos_&15,r.bit_pos_+=w[C].bits,x=w[C].value,y[k]=x,0!==x&&(v-=32>>x,++b)}if(1!==b&&0!==v)throw new Error("[ReadHuffmanCode] invalid num_codes or space");!function(t,e,n,r){for(var i=0,a=f,o=0,u=0,c=32768,h=[],p=0;p<32;p++)h.push(new s(0,0));for(l(h,0,5,t,S);i<e&&c>0;){var g,y=0;if(r.readMoreInput(),r.fillBitWindow(),y+=r.val_>>>r.bit_pos_&31,r.bit_pos_+=h[y].bits,(g=255&h[y].value)<d)o=0,n[i++]=g,0!==g&&(a=g,c-=32768>>g);else{var v,b,m=g-14,w=0;if(g===d&&(w=a),u!==w&&(o=0,u=w),v=o,o>0&&(o-=2,o<<=m),i+(b=(o+=r.readBits(m)+3)-v)>e)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var x=0;x<b;x++)n[i+x]=u;i+=b,0!==u&&(c-=b<<15-u)}}if(0!==c)throw new Error("[ReadHuffmanCodeLengths] space = "+c);for(;i<e;i++)n[i]=0}(y,t,o,r)}if(0===(i=l(e,n,m,o,t)))throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return i}function B(t,e,n){var r,i;return r=O(t,e,n),i=c.kBlockLengthPrefixCode[r].nbits,c.kBlockLengthPrefixCode[r].offset+n.readBits(i)}function M(t,e){for(var n=t[e],r=e;r;--r)t[r]=t[r-1];t[0]=n}function R(t,e){this.alphabet_size=t,this.num_htrees=e,this.codes=new Array(e+e*P[t+31>>>5]),this.htrees=new Uint32Array(e)}function F(t,e){var n,r,i={num_htrees:null,context_map:null},a=0;e.readMoreInput();var o=i.num_htrees=I(e)+1,l=i.context_map=new Uint8Array(t);if(o<=1)return i;for(e.readBits(1)&&(a=e.readBits(4)+1),n=[],r=0;r<x;r++)n[r]=new s(0,0);for(L(o+a,n,0,e),r=0;r<t;){var u;if(e.readMoreInput(),0===(u=O(n,0,e)))l[r]=0,++r;else if(u<=a)for(var c=1+(1<<u)+e.readBits(u);--c;){if(r>=t)throw new Error("[DecodeContextMap] i >= context_map_size");l[r]=0,++r}else l[r]=u-a,++r}return e.readBits(1)&&function(t,e){var n,r=new Uint8Array(256);for(n=0;n<256;++n)r[n]=n;for(n=0;n<e;++n){var i=t[n];t[n]=r[i],i&&M(r,i)}}(l,t),i}function D(t,e,n,r,i,a,o){var s,l=2*n,u=n,c=O(e,n*x,o);(s=0===c?i[l+(1&a[u])]:1===c?i[l+(a[u]-1&1)]+1:c-2)>=t&&(s-=t),r[n]=s,i[l+(1&a[u])]=s,++a[u]}function z(t,e,n,r,i,o){var s,l=i+1,u=n&i,c=o.pos_&a.IBUF_MASK;if(e<8||o.bit_pos_+(e<<3)<o.bit_end_pos_)for(;e-- >0;)o.readMoreInput(),r[u++]=o.readBits(8),u===l&&(t.write(r,l),u=0);else{if(o.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;o.bit_pos_<32;)r[u]=o.val_>>>o.bit_pos_,o.bit_pos_+=8,++u,--e;if(c+(s=o.bit_end_pos_-o.bit_pos_>>3)>a.IBUF_MASK){for(var h=a.IBUF_MASK+1-c,f=0;f<h;f++)r[u+f]=o.buf_[c+f];s-=h,u+=h,e-=h,c=0}for(f=0;f<s;f++)r[u+f]=o.buf_[c+f];if(e-=s,(u+=s)>=l){t.write(r,l),u-=l;for(f=0;f<u;f++)r[f]=r[l+f]}for(;u+e>=l;){if(s=l-u,o.input_.read(r,u,s)<s)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");t.write(r,l),e-=s,u=0}if(o.input_.read(r,u,e)<e)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");o.reset()}}function N(t){var e=new r(t),n=new a(e);return E(n),T(n).meta_block_length}function U(t,e){var n,r,i,l,f,d,m,w,S,_,P,M,N,U,W,G,V=0,j=0,H=0,q=[16,15,11,4],Z=0,Y=0,X=0,K=[new R(0,0),new R(0,0),new R(0,0)],J=128+a.READ_SIZE;i=(1<<(r=E(_=new a(t))))-16,f=(l=1<<r)-1,d=new Uint8Array(l+J+o.maxDictionaryWordLength),m=l,w=[],S=[];for(var Q=0;Q<3*x;Q++)w[Q]=new s(0,0),S[Q]=new s(0,0);for(;!j;){var $,tt,et,nt,rt,it,at,ot,st,lt,ut,ct=0,ht=[1<<28,1<<28,1<<28],ft=[0],dt=[1,1,1],pt=[0,1,0,1,0,1],gt=[0],yt=null,vt=null,bt=0,mt=null,wt=0,xt=0,St=0;for(n=0;n<3;++n)K[n].codes=null,K[n].htrees=null;_.readMoreInput();var _t=T(_);if(V+(ct=_t.meta_block_length)>e.buffer.length){var kt=new Uint8Array(V+ct);kt.set(e.buffer),e.buffer=kt}if(j=_t.input_end,$=_t.is_uncompressed,_t.is_metadata)for(void 0,G=(W=_).bit_pos_+7&-8,W.readBits(G-W.bit_pos_);ct>0;--ct)_.readMoreInput(),_.readBits(8);else if(0!==ct)if($)_.bit_pos_=_.bit_pos_+7&-8,z(e,ct,V,d,f,_),V+=ct;else{for(n=0;n<3;++n)dt[n]=I(_)+1,dt[n]>=2&&(L(dt[n]+2,w,n*x,_),L(y,S,n*x,_),ht[n]=B(S,n*x,_),gt[n]=1);for(_.readMoreInput(),nt=(1<<(tt=_.readBits(2)))-1,rt=(et=k+(_.readBits(4)<<tt))+(48<<tt),yt=new Uint8Array(dt[0]),n=0;n<dt[0];++n)_.readMoreInput(),yt[n]=_.readBits(2)<<1;var Ct=F(dt[0]<<v,_);at=Ct.num_htrees,it=Ct.context_map;var At=F(dt[2]<<b,_);for(st=At.num_htrees,ot=At.context_map,K[0]=new R(p,at),K[1]=new R(g,dt[1]),K[2]=new R(rt,st),n=0;n<3;++n)K[n].decode(_);for(vt=0,mt=0,lt=yt[ft[0]],xt=u.lookupOffsets[lt],St=u.lookupOffsets[lt+1],ut=K[1].htrees[0];ct>0;){var Pt,Et,It,Tt,Ot,Lt,Bt,Mt,Rt,Ft,Dt,zt;for(_.readMoreInput(),0===ht[1]&&(D(dt[1],w,1,ft,pt,gt,_),ht[1]=B(S,x,_),ut=K[1].htrees[ft[1]]),--ht[1],(Et=(Pt=O(K[1].codes,ut,_))>>6)>=2?(Et-=2,Bt=-1):Bt=0,It=c.kInsertRangeLut[Et]+(Pt>>3&7),Tt=c.kCopyRangeLut[Et]+(7&Pt),Ot=c.kInsertLengthPrefixCode[It].offset+_.readBits(c.kInsertLengthPrefixCode[It].nbits),Lt=c.kCopyLengthPrefixCode[Tt].offset+_.readBits(c.kCopyLengthPrefixCode[Tt].nbits),Y=d[V-1&f],X=d[V-2&f],Rt=0;Rt<Ot;++Rt)_.readMoreInput(),0===ht[0]&&(D(dt[0],w,0,ft,pt,gt,_),ht[0]=B(S,0,_),vt=ft[0]<<v,lt=yt[ft[0]],xt=u.lookupOffsets[lt],St=u.lookupOffsets[lt+1]),bt=it[vt+(u.lookup[xt+Y]|u.lookup[St+X])],--ht[0],X=Y,Y=O(K[0].codes,K[0].htrees[bt],_),d[V&f]=Y,(V&f)===f&&e.write(d,l),++V;if((ct-=Ot)<=0)break;if(Bt<0)if(_.readMoreInput(),0===ht[2]&&(D(dt[2],w,2,ft,pt,gt,_),ht[2]=B(S,2*x,_),mt=ft[2]<<b),--ht[2],wt=ot[mt+(255&(Lt>4?3:Lt-2))],(Bt=O(K[2].codes,K[2].htrees[wt],_))>=et)zt=(Bt-=et)&nt,Bt=et+((Nt=(2+(1&(Bt>>=tt))<<(Dt=1+(Bt>>1)))-4)+_.readBits(Dt)<<tt)+zt;if(M=q,N=Z,U=void 0,(P=Bt)<k?(N+=C[P],U=M[N&=3]+A[P]):U=P-k+1,(Mt=U)<0)throw new Error("[BrotliDecompress] invalid distance");if(Ft=V&f,Mt>(H=V<i&&H!==i?V:i)){if(!(Lt>=o.minDictionaryWordLength&&Lt<=o.maxDictionaryWordLength))throw new Error("Invalid backward reference. pos: "+V+" distance: "+Mt+" len: "+Lt+" bytes left: "+ct);var Nt=o.offsetsByLength[Lt],Ut=Mt-H-1,Wt=o.sizeBitsByLength[Lt],Gt=Ut>>Wt;if(Nt+=(Ut&(1<<Wt)-1)*Lt,!(Gt<h.kNumTransforms))throw new Error("Invalid backward reference. pos: "+V+" distance: "+Mt+" len: "+Lt+" bytes left: "+ct);var Vt=h.transformDictionaryWord(d,Ft,Nt,Lt,Gt);if(V+=Vt,ct-=Vt,(Ft+=Vt)>=m){e.write(d,l);for(var jt=0;jt<Ft-m;jt++)d[jt]=d[m+jt]}}else{if(Bt>0&&(q[3&Z]=Mt,++Z),Lt>ct)throw new Error("Invalid backward reference. pos: "+V+" distance: "+Mt+" len: "+Lt+" bytes left: "+ct);for(Rt=0;Rt<Lt;++Rt)d[V&f]=d[V-Mt&f],(V&f)===f&&e.write(d,l),++V,--ct}Y=d[V-1&f],X=d[V-2&f]}V&=1073741823}}e.write(d,V&f)}R.prototype.decode=function(t){var e,n=0;for(e=0;e<this.num_htrees;++e)this.htrees[e]=n,n+=L(this.alphabet_size,this.codes,n,t)},e.BrotliDecompressedSize=N,e.BrotliDecompressBuffer=function(t,e){var n=new r(t);null==e&&(e=N(t));var a=new Uint8Array(e),o=new i(a);return U(n,o),o.pos<o.buffer.length&&(o.buffer=o.buffer.subarray(0,o.pos)),o.buffer},e.BrotliDecompress=U,o.init()},function(t,e){function n(t){this.buffer=t,this.pos=0}function r(t){this.buffer=t,this.pos=0}n.prototype.read=function(t,e,n){this.pos+n>this.buffer.length&&(n=this.buffer.length-this.pos);for(var r=0;r<n;r++)t[e+r]=this.buffer[this.pos+r];return this.pos+=n,n},e.BrotliInput=n,r.prototype.write=function(t,e){if(this.pos+e>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(t.subarray(0,e),this.pos),this.pos+=e,e},e.BrotliOutput=r},function(t,e,n){var r=n(286);e.init=function(){e.dictionary=r.init()},e.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),e.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),e.minDictionaryWordLength=4,e.maxDictionaryWordLength=24},function(t,e){function n(t,e){this.bits=t,this.value=e}e.HuffmanCode=n;var r=15;function i(t,e){for(var n=1<<e-1;t&n;)n>>=1;return(t&n-1)+n}function a(t,e,r,i,a){for(;t[e+(i-=r)]=new n(a.bits,a.value),i>0;);}function o(t,e,n){for(var i=1<<e-n;e<r&&!((i-=t[e])<=0);)++e,i<<=1;return e-n}e.BrotliBuildHuffmanTable=function(t,e,s,l,u){var c,h,f,d,p,g,y,v,b,m,w=e,x=new Int32Array(r+1),S=new Int32Array(r+1);for(m=new Int32Array(u),h=0;h<u;h++)x[l[h]]++;for(S[1]=0,c=1;c<r;c++)S[c+1]=S[c]+x[c];for(h=0;h<u;h++)0!==l[h]&&(m[S[l[h]]++]=h);if(b=v=1<<(y=s),1===S[r]){for(f=0;f<b;++f)t[e+f]=new n(0,65535&m[0]);return b}for(f=0,h=0,c=1,d=2;c<=s;++c,d<<=1)for(;x[c]>0;--x[c])a(t,e+f,d,v,new n(255&c,65535&m[h++])),f=i(f,c);for(g=b-1,p=-1,c=s+1,d=2;c<=r;++c,d<<=1)for(;x[c]>0;--x[c])(f&g)!==p&&(e+=v,b+=v=1<<(y=o(x,c,s)),t[w+(p=f&g)]=new n(y+s&255,e-w-p&65535)),a(t,e+(f>>s),d,v,new n(c-s&255,65535&m[h++])),f=i(f,c);return b}},function(t,e,n){(function(e){(function(){var r,i,a,o;o=n(8),n(298),r=n(299),a=n(300),i=function(){function t(){}return t.open=function(t,n){var i,s;if(e.isBuffer(t))i=t;else if(t instanceof ArrayBuffer)i=new e(new Uint8Array(t));else if(s=/^data:.+;base64,(.*)$/.exec(t))i=new e(s[1],"base64");else if(!(i=o.readFileSync(t)))return;if(255===i[0]&&216===i[1])return new r(i,n);if(137===i[0]&&"PNG"===i.toString("ascii",1,4))return new a(i,n);throw new Error("Unknown image format.")},t}(),t.exports=i}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){(function(e){t.exports=e.pdfMake=n(123)}).call(e,n(7))},function(t,e,n){"use strict";(function(e,r){var i=n(126),a=n(0).isFunction,o=n(306).saveAs,s={Roboto:{normal:"Roboto-Regular.ttf",bold:"Roboto-Medium.ttf",italics:"Roboto-Italic.ttf",bolditalics:"Roboto-MediumItalic.ttf"}};function l(t,e,n,r){this.docDefinition=t,this.tableLayouts=e||null,this.fonts=n||s,this.vfs=r}l.prototype._createDoc=function(t,r){t=t||{},this.tableLayouts&&(t.tableLayouts=this.tableLayouts);var a=new i(this.fonts);n(8).bindFS(this.vfs);var o,s=a.createPdfKitDocument(this.docDefinition,t),l=[];s.on("readable",function(){for(var t;null!==(t=s.read(9007199254740991));)l.push(t)}),s.on("end",function(){o=e.concat(l),r(o,s._pdfMakePages)}),s.end()},l.prototype._getPages=function(t,e){if(!e)throw"_getPages is an async method and needs a callback argument";this._createDoc(t,function(t,n){e(n)})},l.prototype._bufferToBlob=function(t){var e;try{e=new Blob([t],{type:"application/pdf"})}catch(r){if("InvalidStateError"===r.name){var n=new Uint8Array(t);e=new Blob([n.buffer],{type:"application/pdf"})}}if(!e)throw"Could not generate blob";return e},l.prototype._openWindow=function(){var t=window.open("","_blank");if(null===t)throw"Open PDF in new window blocked by browser";return t},l.prototype._openPdf=function(t,e){e||(e=this._openWindow());try{this.getBlob(function(t){var n=(window.URL||window.webkitURL).createObjectURL(t);e.location.href=n},t)}catch(t){throw e.close(),t}},l.prototype.open=function(t,e){(t=t||{}).autoPrint=!1,e=e||null,this._openPdf(t,e)},l.prototype.print=function(t,e){(t=t||{}).autoPrint=!0,e=e||null,this._openPdf(t,e)},l.prototype.download=function(t,e,n){a(t)&&(e=t,t=null),t=t||"file.pdf",this.getBlob(function(n){o(n,t),a(e)&&e()},n)},l.prototype.getBase64=function(t,e){if(!t)throw"getBase64 is an async method and needs a callback argument";this.getBuffer(function(e){t(e.toString("base64"))},e)},l.prototype.getDataUrl=function(t,e){if(!t)throw"getDataUrl is an async method and needs a callback argument";this.getBuffer(function(e){t("data:application/pdf;base64,"+e.toString("base64"))},e)},l.prototype.getBlob=function(t,e){if(!t)throw"getBlob is an async method and needs a callback argument";var n=this;this.getBuffer(function(e){var r=n._bufferToBlob(e);t(r)},e)},l.prototype.getBuffer=function(t,e){if(!t)throw"getBuffer is an async method and needs a callback argument";this._createDoc(e,function(e){t(e)})},t.exports={createPdf:function(t){if(!Object.keys)throw"Your browser does not provide the level of support needed";return new l(t,r.pdfMake.tableLayouts,r.pdfMake.fonts,r.pdfMake.vfs)}}}).call(e,n(1).Buffer,n(7))},function(t,e,n){"use strict";e.byteLength=function(t){return 3*t.length/4-u(t)},e.toByteArray=function(t){var e,n,r,o,s,l=t.length;o=u(t),s=new a(3*l/4-o),n=o>0?l-4:l;var c=0;for(e=0;e<n;e+=4)r=i[t.charCodeAt(e)]<<18|i[t.charCodeAt(e+1)]<<12|i[t.charCodeAt(e+2)]<<6|i[t.charCodeAt(e+3)],s[c++]=r>>16&255,s[c++]=r>>8&255,s[c++]=255&r;2===o?(r=i[t.charCodeAt(e)]<<2|i[t.charCodeAt(e+1)]>>4,s[c++]=255&r):1===o&&(r=i[t.charCodeAt(e)]<<10|i[t.charCodeAt(e+1)]<<4|i[t.charCodeAt(e+2)]>>2,s[c++]=r>>8&255,s[c++]=255&r);return s},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,a="",o=[],s=0,l=n-i;s<l;s+=16383)o.push(c(t,s,s+16383>l?l:s+16383));1===i?(e=t[n-1],a+=r[e>>2],a+=r[e<<4&63],a+="=="):2===i&&(e=(t[n-2]<<8)+t[n-1],a+=r[e>>10],a+=r[e>>4&63],a+=r[e<<2&63],a+="=");return o.push(a),o.join("")};for(var r=[],i=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=o.length;s<l;++s)r[s]=o[s],i[o.charCodeAt(s)]=s;function u(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function c(t,e,n){for(var i,a,o=[],s=e;s<n;s+=3)i=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),o.push(r[(a=i)>>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,n,r,i){var a,o,s=8*i-r-1,l=(1<<s)-1,u=l>>1,c=-7,h=n?i-1:0,f=n?-1:1,d=t[e+h];for(h+=f,a=d&(1<<-c)-1,d>>=-c,c+=s;c>0;a=256*a+t[e+h],h+=f,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=r;c>0;o=256*o+t[e+h],h+=f,c-=8);if(0===a)a=1-u;else{if(a===l)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,r),a-=u}return(d?-1:1)*o*Math.pow(2,a-r)},e.write=function(t,e,n,r,i,a){var o,s,l,u=8*a-i-1,c=(1<<u)-1,h=c>>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:a-1,p=r?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+h>=1?f/l:f*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=c?(s=0,o=c):o+h>=1?(s=(e*l-1)*Math.pow(2,i),o+=h):(s=e*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;t[n+d]=255&s,d+=p,s/=256,i-=8);for(o=o<<i|s,u+=i;u>0;t[n+d]=255&o,d+=p,o/=256,u-=8);t[n+d-p]|=128*g}},function(t,e,n){"use strict";var r=n(127),i=n(128),a=n(138),o=n(303),s=n(304),l=n(305),u=n(42),c=n(0).isFunction,h=n(0).isString,f=n(0).isNumber,d=n(0).isBoolean,p=n(0).isArray;function g(t){this.fontDescriptors=t}function y(t){if(!t)return null;if(f(t))t={left:t,right:t,top:t,bottom:t};else if(p(t))if(2===t.length)t={left:t[0],top:t[1],right:t[0],bottom:t[1]};else{if(4!==t.length)throw"Invalid pageMargins definition";t={left:t[0],top:t[1],right:t[2],bottom:t[3]}}return t}function v(t,e){var n=e.options.size[0]>e.options.size[1]?"landscape":"portrait";if(t.pageSize.orientation!==n){var r=e.options.size[0],i=e.options.size[1];e.options.size=[i,r]}}function b(t,e,n,r){if(t._pageNodeRef){var i,a,o=new u(null),s=t._pageNodeRef.positions[0].pageNumber.toString();switch(t.inlines[0].text=s,t.inlines[0].linkToPage=s,i=o.widthOfString(t.inlines[0].text,t.inlines[0].font,t.inlines[0].fontSize,t.inlines[0].characterSpacing,t.inlines[0].fontFeatures),a=t.inlines[0].width-i,t.inlines[0].width=i,t.inlines[0].alignment){case"right":t.inlines[0].x+=a;break;case"center":t.inlines[0].x+=a/2}}e=e||0,n=n||0;var c=t.getHeight(),h=c-t.getAscenderHeight();l.drawBackground(t,e,n,r);for(var f=0,d=t.inlines.length;f<d;f++){var p=t.inlines[f],g=c-p.font.ascender/1e3*p.fontSize-h,y={lineBreak:!1,textWidth:p.width,characterSpacing:p.characterSpacing,wordCount:1,link:p.link};if(p.fontFeatures&&(y.features=p.fontFeatures),r.fill(p.color||"black"),r._font=p.font,r.fontSize(p.fontSize),r.text(p.text,e+p.x,n+g,y),p.linkToPage){r.ref({Type:"Action",S:"GoTo",D:[p.linkToPage,0,0]}).end();r.annotate(e+p.x,n+g,p.width,p.height,{Subtype:"Link",Dest:[p.linkToPage-1,"XYZ",null,null,null]})}}l.drawDecorations(t,e,n,r)}function m(t,e){var n=t.watermark;e.fill(n.color),e.opacity(n.opacity),e.save();var r=-180*Math.atan2(e.page.height,e.page.width)/Math.PI;e.rotate(r,{origin:[e.page.width/2,e.page.height/2]});var i=e.page.width/2-n.size.size.width/2,a=e.page.height/2-n.size.size.height/4;e._font=n.font,e.fontSize(n.size.fontSize),e.text(n.text,i,a,{lineBreak:!1}),e.restore()}function w(t,e){switch(e.lineWidth(t.lineWidth||1),t.dash?e.dash(t.dash.length,{space:t.dash.space||t.dash.length,phase:t.dash.phase||0}):e.undash(),e.lineJoin(t.lineJoin||"miter"),e.lineCap(t.lineCap||"butt"),t.type){case"ellipse":e.ellipse(t.x,t.y,t.r1,t.r2);break;case"rect":if(t.r?e.roundedRect(t.x,t.y,t.w,t.h,t.r):e.rect(t.x,t.y,t.w,t.h),t.linearGradient){for(var n=e.linearGradient(t.x,t.y,t.x+t.w,t.y),r=1/(t.linearGradient.length-1),i=0;i<t.linearGradient.length;i++)n.stop(i*r,t.linearGradient[i]);t.color=n}break;case"line":e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2);break;case"polyline":if(0===t.points.length)break;e.moveTo(t.points[0].x,t.points[0].y);i=1;for(var a=t.points.length;i<a;i++)e.lineTo(t.points[i].x,t.points[i].y);if(t.points.length>1){var o=t.points[0],s=t.points[t.points.length-1];(t.closePath||o.x===s.x&&o.y===s.y)&&e.closePath()}break;case"path":e.path(t.d)}t.color&&t.lineColor?(e.fillColor(t.color,t.fillOpacity||1),e.strokeColor(t.lineColor,t.strokeOpacity||1),e.fillAndStroke()):t.color?(e.fillColor(t.color,t.fillOpacity||1),e.fill()):(e.strokeColor(t.lineColor||"black",t.strokeOpacity||1),e.stroke())}function x(t,e,n,r){r.image(t.image,t.x,t.y,{width:t._width,height:t._height}),t.link&&r.link(t.x,t.y,t._width,t._height,t.link)}function S(t,e){e.save(),e.addContent(t.x+" "+t.y+" "+t.width+" "+t.height+" re"),e.clip()}g.prototype.createPdfKitDocument=function(t,e){e=e||{};var n=function(t,e){t&&"auto"===t.height&&(t.height=1/0);var n=function(t){if(h(t)){var e=o[t.toUpperCase()];if(!e)throw"Page size "+t+" not recognized";return{width:e[0],height:e[1]}}return t}(t||"A4");(function(t){if(h(t))return"portrait"===(t=t.toLowerCase())&&n.width>n.height||"landscape"===t&&n.width<n.height;return!1})(e)&&(n={width:n.height,height:n.width});return n.orientation=n.width>n.height?"landscape":"portrait",n}(t.pageSize,t.pageOrientation),l=!d(t.compress)||t.compress;this.pdfKitDoc=new a({size:[n.width,n.height],autoFirstPage:!1,compress:l}),function(t,e){function n(t){var e=t.charAt(0).toUpperCase()+t.slice(1);return-1!==["Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped"].indexOf(e)?e:t.replace(/\s+/g,"")}if(e.info.Producer="pdfmake",e.info.Creator="pdfmake",t.info)for(var r in t.info){var i=t.info[r];i&&(r=n(r),e.info[r]=i)}}(t,this.pdfKitDoc),this.fontProvider=new r(this.fontDescriptors,this.pdfKitDoc),t.images=t.images||{};var u=new i(n,y(t.pageMargins||40),new s(this.pdfKitDoc,t.images));u.registerTableLayouts({noBorders:{hLineWidth:function(t){return 0},vLineWidth:function(t){return 0},paddingLeft:function(t){return t?4:0},paddingRight:function(t,e){return t<e.table.widths.length-1?4:0}},headerLineOnly:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:t===e.table.headerRows?2:0},vLineWidth:function(t){return 0},paddingLeft:function(t){return 0===t?0:8},paddingRight:function(t,e){return t===e.table.widths.length-1?0:8}},lightHorizontalLines:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:t===e.table.headerRows?2:1},vLineWidth:function(t){return 0},hLineColor:function(t){return 1===t?"black":"#aaa"},paddingLeft:function(t){return 0===t?0:8},paddingRight:function(t,e){return t===e.table.widths.length-1?0:8}}}),e.tableLayouts&&u.registerTableLayouts(e.tableLayouts);var p,g,_,k,C=u.layoutDocument(t.content,this.fontProvider,t.styles||{},t.defaultStyle||{fontSize:12,font:"Roboto"},t.background,t.header,t.footer,t.images,t.watermark,t.pageBreakBefore),A=t.maxPagesNumber||-1;if(f(A)&&A>-1&&(C=C.slice(0,A)),n.height===1/0){var P=(p=C,g=t.pageMargins,_=y(g||40),k=_.top+_.bottom,p.forEach(function(t){t.items.forEach(function(t){var e;k+=c((e=t).item.getHeight)?e.item.getHeight():e.item._height?e.item._height:0})}),k);this.pdfKitDoc.options.size=[n.width,P]}if(function(t,e,n,r){n._pdfMakePages=t,n.addPage();var i=0;r&&t.forEach(function(t){i+=t.items.length});var a=0;r=r||function(){};for(var o=0;o<t.length;o++){o>0&&(v(t[o],n),n.addPage(n.options));for(var s=t[o],l=0,u=s.items.length;l<u;l++){var c=s.items[l];switch(c.type){case"vector":w(c.item,n);break;case"line":b(c.item,c.item.x,c.item.y,n);break;case"image":x(c.item,c.item.x,c.item.y,n);break;case"beginClip":S(c.item,n);break;case"endClip":n.restore()}r(++a/i)}s.watermark&&m(s,n)}}(C,this.fontProvider,this.pdfKitDoc,e.progressCallback),e.autoPrint){var E=this.pdfKitDoc.ref({Type:"Action",S:"Named",N:"Print"});this.pdfKitDoc._root.data.OpenAction=E,E.end()}return this.pdfKitDoc},t.exports=g},function(t,e,n){"use strict";var r=n(0).isArray;function i(t,e){for(var n in this.fonts={},this.pdfKitDoc=e,this.fontCache={},t)if(t.hasOwnProperty(n)){var r=t[n];this.fonts[n]={normal:r.normal,bold:r.bold,italics:r.italics,bolditalics:r.bolditalics}}}i.prototype.provideFont=function(t,e,n){var i,a,o,s=(a=n,o="normal",(i=e)&&a?o="bolditalics":i?o="bold":a&&(o="italics"),o);if(!this.fonts[t]||!this.fonts[t][s])throw new Error("Font '"+t+"' in style '"+s+"' is not defined in the font section of the document definition.");if(this.fontCache[t]=this.fontCache[t]||{},!this.fontCache[t][s]){var l=this.fonts[t][s];r(l)||(l=[l]),this.fontCache[t][s]=this.pdfKitDoc.font.apply(this.pdfKitDoc,l)._font}return this.fontCache[t][s]},t.exports=i},function(t,e,n){"use strict";var r=n(77),i=n(129),a=n(130),o=n(81),s=n(135),l=n(44),u=n(137),c=n(82),h=n(0).isString,f=n(0).isArray,d=n(0).pack,p=n(0).offsetVector,g=n(0).fontStringify,y=n(0).isFunction,v=n(42),b=n(80);function m(t,e){e.forEach(function(e){t.push(e)})}function w(t,e,n){this.pageSize=t,this.pageMargins=e,this.tracker=new r,this.imageMeasure=n,this.tableLayouts={}}w.prototype.registerTableLayouts=function(t){this.tableLayouts=d(this.tableLayouts,t)},w.prototype.layoutDocument=function(t,e,n,r,o,s,l,u,c,h){function d(t,e){return!!y(h)&&((t=t.filter(function(t){return t.positions.length>0})).forEach(function(t){var n={};["id","text","ul","ol","table","image","qr","canvas","columns","headlineLevel","style","pageBreak","pageOrientation","width","height"].forEach(function(e){void 0!==t[e]&&(n[e]=t[e])}),n.startPosition=t.positions[0],n.pageNumbers=t.positions.map(function(t){return t.pageNumber}).filter(function(t,e,n){return n.indexOf(t)===e}),n.pages=e.length,n.stack=f(t.stack),t.nodeInfo=n}),t.some(function(t,e,n){if("before"!==t.pageBreak&&!t.pageBreakCalculated){t.pageBreakCalculated=!0;var r=t.nodeInfo.pageNumbers[0],i=n.slice(e+1).filter(function(t){return t.nodeInfo.pageNumbers.indexOf(r)>-1}),a=n.slice(e+1).filter(function(t){return t.nodeInfo.pageNumbers.indexOf(r+1)>-1}),o=n.slice(0,e).filter(function(t){return t.nodeInfo.pageNumbers.indexOf(r)>-1});if(h(t.nodeInfo,i.map(function(t){return t.nodeInfo}),a.map(function(t){return t.nodeInfo}),o.map(function(t){return t.nodeInfo})))return t.pageBreak="before",!0}}))}this.docPreprocessor=new i,this.docMeasure=new a(e,n,r,this.imageMeasure,this.tableLayouts,u);for(var p=this.tryLayoutDocument(t,e,n,r,o,s,l,u,c);d(p.linearNodeList,p.pages);)p.linearNodeList.forEach(function(t){t.resetXY()}),p=this.tryLayoutDocument(t,e,n,r,o,s,l,u,c);return p.pages},w.prototype.tryLayoutDocument=function(t,e,n,r,i,a,l,u,c,h){this.linearNodeList=[],t=this.docPreprocessor.preprocessDocument(t),t=this.docMeasure.measureDocument(t),this.writer=new s(new o(this.pageSize,this.pageMargins),this.tracker);var f=this;return this.writer.context().tracker.startTracking("pageAdded",function(){f.addBackground(i)}),this.addBackground(i),this.processNode(t),this.addHeadersAndFooters(a,l),null!=c&&this.addWatermark(c,e,r),{pages:this.writer.context().pages,linearNodeList:this.linearNodeList}},w.prototype.addBackground=function(t){var e=(y(t)?t:function(){return t})(this.writer.context().page+1);if(e){var n=this.writer.context().getCurrentPage().pageSize;this.writer.beginUnbreakableBlock(n.width,n.height),e=this.docPreprocessor.preprocessDocument(e),this.processNode(this.docMeasure.measureDocument(e)),this.writer.commitUnbreakableBlock(0,0),this.writer.context().hasBackground=!0}},w.prototype.addStaticRepeatable=function(t,e){this.addDynamicRepeatable(function(){return JSON.parse(JSON.stringify(t))},e)},w.prototype.addDynamicRepeatable=function(t,e){for(var n=0,r=this.writer.context().pages.length;n<r;n++){this.writer.context().page=n;var i=t(n+1,r,this.writer.context().pages[n].pageSize);if(i){var a=e(this.writer.context().getCurrentPage().pageSize,this.pageMargins);this.writer.beginUnbreakableBlock(a.width,a.height),i=this.docPreprocessor.preprocessDocument(i),this.processNode(this.docMeasure.measureDocument(i)),this.writer.commitUnbreakableBlock(a.x,a.y)}}},w.prototype.addHeadersAndFooters=function(t,e){var n=function(t,e){return{x:0,y:0,width:t.width,height:e.top}},r=function(t,e){return{x:0,y:t.height-e.bottom,width:t.width,height:e.bottom}};y(t)?this.addDynamicRepeatable(t,n):t&&this.addStaticRepeatable(t,n),y(e)?this.addDynamicRepeatable(e,r):e&&this.addStaticRepeatable(e,r)},w.prototype.addWatermark=function(t,e,n){if(h(t)&&(t={text:t}),t.text){t.font=t.font||n.font||"Roboto",t.color=t.color||"black",t.opacity=t.opacity||.6,t.bold=t.bold||!1,t.italics=t.italics||!1;for(var r={text:t.text,font:e.provideFont(t.font,t.bold,t.italics),size:function(t,e,n){var r,i=t.width,a=t.height,o=.8*Math.sqrt(i*i+a*a),s=new v(n),l=new b(null,{font:e.font,bold:e.bold,italics:e.italics}),u=0,c=1e3,h=(u+c)/2;for(;Math.abs(u-c)>1;)l.push({fontSize:h}),(r=s.sizeOfString(e.text,l)).width>o?h=(u+(c=h))/2:r.width<o&&(h=((u=h)+c)/2),l.pop();return{size:r,fontSize:h}}(this.pageSize,t,e),color:t.color,opacity:t.opacity},i=this.writer.context().pages,a=0,o=i.length;a<o;a++)i[a].watermark=r}},w.prototype.processNode=function(t){var e,n,r,i=this;this.linearNodeList.push(t),n=(e=t).x,r=e.y,e.positions=[],f(e.canvas)&&e.canvas.forEach(function(t){var e=t.x,n=t.y,r=t.x1,i=t.y1,a=t.x2,o=t.y2;t.resetXY=function(){t.x=e,t.y=n,t.x1=r,t.y1=i,t.x2=a,t.y2=o}}),e.resetXY=function(){e.x=n,e.y=r,f(e.canvas)&&e.canvas.forEach(function(t){t.resetXY()})},function(e){var n=t._margin;"before"===t.pageBreak&&i.writer.moveToNextPage(t.pageOrientation);n&&(i.writer.context().moveDown(n[1]),i.writer.context().addMargin(n[0],n[2]));e(),n&&(i.writer.context().addMargin(-n[0],-n[2]),i.writer.context().moveDown(n[3]));"after"===t.pageBreak&&i.writer.moveToNextPage(t.pageOrientation)}(function(){var e=t.unbreakable;e&&i.writer.beginUnbreakableBlock();var n=t.absolutePosition;n&&(i.writer.context().beginDetachedBlock(),i.writer.context().moveTo(n.x||0,n.y||0));var r=t.relativePosition;if(r&&(i.writer.context().beginDetachedBlock(),i.writer.context().moveTo((r.x||0)+i.writer.context().x,(r.y||0)+i.writer.context().y)),t.stack)i.processVerticalContainer(t);else if(t.columns)i.processColumns(t);else if(t.ul)i.processList(!1,t);else if(t.ol)i.processList(!0,t);else if(t.table)i.processTable(t);else if(void 0!==t.text)i.processLeaf(t);else if(t.toc)i.processToc(t);else if(t.image)i.processImage(t);else if(t.canvas)i.processCanvas(t);else if(t.qr)i.processQr(t);else if(!t._span)throw"Unrecognized document structure: "+JSON.stringify(t,g);(n||r)&&i.writer.context().endDetachedBlock(),e&&i.writer.commitUnbreakableBlock()})},w.prototype.processVerticalContainer=function(t){var e=this;t.stack.forEach(function(n){e.processNode(n),m(t.positions,n.positions)})},w.prototype.processColumns=function(t){var e=t.columns,n=this.writer.context().availableWidth,r=function(t){if(!t)return null;var n=[];n.push(0);for(var r=e.length-1;r>0;r--)n.push(t);return n}(t._gap);r&&(n-=(r.length-1)*t._gap),l.buildColumnWidths(e,n);var i=this.processRow(e,e,r);m(t.positions,i.positions)},w.prototype.processRow=function(t,e,n,r,i,a){var o=this,s=[],l=[];return this.tracker.auto("pageChanged",function(t){for(var e,n=0,r=s.length;n<r;n++){var i=s[n];if(i.prevPage===t.prevPage){e=i;break}}e||(e=t,s.push(e));e.prevY=Math.max(e.prevY,t.prevY),e.y=Math.min(e.y,t.y)},function(){e=e||t,o.writer.context().beginColumnGroup();for(var r=0,i=t.length;r<i;r++){var s=t[r],h=e[r]._calcWidth,f=u(r);if(s.colSpan&&s.colSpan>1)for(var d=1;d<s.colSpan;d++)h+=e[++r]._calcWidth+n[r];o.writer.context().beginColumn(h,f,c(s,r)),s._span?s._columnEndingContext&&o.writer.context().markEnding(s):(o.processNode(s),m(l,s.positions))}o.writer.context().completeColumnGroup(a)}),{pageBreaks:s,positions:l};function u(t){return n&&n.length>t?n[t]:0}function c(t,e){if(t.rowSpan&&t.rowSpan>1){var n=i+t.rowSpan-1;if(n>=r.length)throw"Row span for column "+e+" (with indexes starting from 0) exceeded row count";return r[n][e]}return null}},w.prototype.processList=function(t,e){var n,r=this,i=t?e.ol:e.ul,a=e._gapSize;this.writer.context().addMargin(a.width),this.tracker.auto("lineAdded",function(t){if(n){var e=n;if(n=null,e.canvas){var i=e.canvas[0];p(i,-e._minWidth,0),r.writer.addVector(i)}else if(e._inlines){var a=new c(r.pageSize.width);a.addInline(e._inlines[0]),a.x=-e._minWidth,a.y=t.getAscenderHeight()-a.getAscenderHeight(),r.writer.addLine(a,!0)}}},function(){i.forEach(function(t){n=t.listMarker,r.processNode(t),m(e.positions,t.positions)})}),this.writer.context().addMargin(-a.width)},w.prototype.processTable=function(t){var e=new u(t);e.beginTable(this.writer);for(var n=t.table.heights,r=0,i=t.table.body.length;r<i;r++){var a;e.beginRow(r,this.writer),"auto"===(a=y(n)?n(r):f(n)?n[r]:n)&&(a=void 0);var o=this.processRow(t.table.body[r],t.table.widths,t._offsets.offsets,t.table.body,r,a);m(t.positions,o.positions),e.endRow(r,this.writer,o.pageBreaks)}e.endTable(this.writer)},w.prototype.processLeaf=function(t){var e=this.buildNextLine(t),n=e?e.getHeight():0,r=t.maxHeight||-1;for(t._tocItemRef&&(e._pageNodeRef=t._tocItemRef),t._pageRef&&(e._pageNodeRef=t._pageRef._nodeRef);e&&(-1===r||n<r);){var i=this.writer.addLine(e);t.positions.push(i),(e=this.buildNextLine(t))&&(n+=e.getHeight())}},w.prototype.processToc=function(t){t.toc.title&&this.processNode(t.toc.title),this.processNode(t.toc._table)},w.prototype.buildNextLine=function(t){function e(t){var e=t.constructor();for(var n in t)e[n]=t[n];return e}if(!t._inlines||0===t._inlines.length)return null;for(var n=new c(this.writer.context().availableWidth),r=new v(null);t._inlines&&t._inlines.length>0&&n.hasEnoughSpaceForInline(t._inlines[0]);){var i=t._inlines.shift();if(!i.noWrap&&i.text.length>1&&i.width>n.maxWidth){var a=i.width/i.text.length,o=Math.floor(n.maxWidth/a);if(o<1&&(o=1),o<i.text.length){var s=e(i);s.text=i.text.substr(o),i.text=i.text.substr(0,o),s.width=r.widthOfString(s.text,s.font,s.fontSize,s.characterSpacing,s.fontFeatures),i.width=r.widthOfString(i.text,i.font,i.fontSize,i.characterSpacing,i.fontFeatures),t._inlines.unshift(s)}}n.addInline(i)}return n.lastLineInParagraph=0===t._inlines.length,n},w.prototype.processImage=function(t){var e=this.writer.addImage(t);t.positions.push(e)},w.prototype.processCanvas=function(t){var e=t._minHeight;void 0===t.absolutePosition&&this.writer.context().availableHeight<e&&this.writer.moveToNextPage(),this.writer.alignCanvas(t),t.canvas.forEach(function(e){var n=this.writer.addVector(e);t.positions.push(n)},this),this.writer.context().moveDown(e)},w.prototype.processQr=function(t){var e=this.writer.addQr(t);t.positions.push(e)},t.exports=w},function(t,e,n){"use strict";(function(e){var r=n(0).isString,i=n(0).isNumber,a=n(0).isBoolean,o=n(0).isArray,s=n(0).isUndefined,l=n(0).fontStringify;function u(){}u.prototype.preprocessDocument=function(t){return this.tocs=[],this.nodeReferences=[],this.preprocessNode(t)},u.prototype.preprocessNode=function(t){if(o(t)?t={stack:t}:r(t)?t={text:t}:i(t)||a(t)?t={text:t.toString()}:null===t?t={text:""}:0===Object.keys(t).length&&(t={text:""}),t.columns)return this.preprocessColumns(t);if(t.stack)return this.preprocessVerticalContainer(t);if(t.ul)return this.preprocessList(t);if(t.ol)return this.preprocessList(t);if(t.table)return this.preprocessTable(t);if(void 0!==t.text)return this.preprocessText(t);if(t.toc)return this.preprocessToc(t);if(t.image)return this.preprocessImage(t);if(t.canvas)return this.preprocessCanvas(t);if(t.qr)return this.preprocessQr(t);if(t.pageReference||t.textReference)return this.preprocessText(t);throw"Unrecognized document structure: "+JSON.stringify(t,l)},u.prototype.preprocessColumns=function(t){for(var e=t.columns,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},u.prototype.preprocessVerticalContainer=function(t){for(var e=t.stack,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},u.prototype.preprocessList=function(t){for(var e=t.ul||t.ol,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},u.prototype.preprocessTable=function(t){var e,n,r,i;for(e=0,r=t.table.body[0].length;e<r;e++)for(n=0,i=t.table.body.length;n<i;n++){var a=t.table.body[n],o=a[e];void 0!==o&&(null===o&&(o=""),o._span||(a[e]=this.preprocessNode(o)))}return t},u.prototype.preprocessText=function(t){if(t.tocItem){o(t.tocItem)||(t.tocItem=[t.tocItem]);for(var e=0,n=t.tocItem.length;e<n;e++){r(t.tocItem[e])||(t.tocItem[e]="_default_");var i=t.tocItem[e];this.tocs[i]||(this.tocs[i]={toc:{_items:[],_pseudo:!0}}),this.tocs[i].toc._items.push(t)}}if(t.id)if(this.nodeReferences[t.id]){if(!this.nodeReferences[t.id]._pseudo)throw"Node id '"+t.id+"' already exists";this.nodeReferences[t.id]._nodeRef=t,this.nodeReferences[t.id]._pseudo=!1}else this.nodeReferences[t.id]={_nodeRef:t};return t.pageReference&&(this.nodeReferences[t.pageReference]||(this.nodeReferences[t.pageReference]={_nodeRef:{},_pseudo:!0}),t.text="00000",t._pageRef=this.nodeReferences[t.pageReference]),t.textReference&&(this.nodeReferences[t.textReference]||(this.nodeReferences[t.textReference]={_nodeRef:{},_pseudo:!0}),t.text="",t._textRef=this.nodeReferences[t.textReference]),t.text&&t.text.text&&(t.text=[this.preprocessNode(t.text)]),t},u.prototype.preprocessToc=function(t){if(t.toc.id||(t.toc.id="_default_"),t.toc.title=t.toc.title?this.preprocessNode(t.toc.title):null,t.toc._items=[],this.tocs[t.toc.id]){if(!this.tocs[t.toc.id].toc._pseudo)throw"TOC '"+t.toc.id+"' already exists";t.toc._items=this.tocs[t.toc.id].toc._items}return this.tocs[t.toc.id]=t,t},u.prototype.preprocessImage=function(t){return s(t.image.type)||s(t.image.data)||"Buffer"!==t.image.type||!o(t.image.data)||(t.image=e.from(t.image.data)),t},u.prototype.preprocessCanvas=function(t){return t},u.prototype.preprocessQr=function(t){return t},t.exports=u}).call(e,n(1).Buffer)},function(t,e,n){"use strict";var r=n(42),i=n(80),a=n(44),o=n(0).isString,s=n(0).isNumber,l=n(0).isObject,u=n(0).isArray,c=n(0).fontStringify,h=n(0).pack,f=n(134);function d(t,e,n,a,o,s){this.textTools=new r(t),this.styleStack=new i(e,n),this.imageMeasure=a,this.tableLayouts=o,this.images=s,this.autoImageIndex=1}d.prototype.measureDocument=function(t){return this.measureNode(t)},d.prototype.measureNode=function(t){var e=this;return this.styleStack.auto(t,function(){if(t._margin=function(){function n(t,e){return t.marginLeft||t.marginTop||t.marginRight||t.marginBottom?[t.marginLeft||e[0]||0,t.marginTop||e[1]||0,t.marginRight||e[2]||0,t.marginBottom||e[3]||0]:e}function r(t){return s(t)?t=[t,t,t,t]:u(t)&&2===t.length&&(t=[t[0],t[1],t[0],t[1]]),t}var i=[void 0,void 0,void 0,void 0];if(t.style){var a=u(t.style)?t.style:[t.style],o=function(t){for(var n={},r=t.length-1;r>=0;r--){var i=t[r],a=e.styleStack.styleDictionary[i];for(var o in a)a.hasOwnProperty(o)&&(n[o]=a[o])}return n}(a);o&&(i=n(o,i)),o.margin&&(i=r(o.margin))}i=n(t,i),t.margin&&(i=r(t.margin));return void 0===i[0]&&void 0===i[1]&&void 0===i[2]&&void 0===i[3]?null:i}(),t.columns)return n(e.measureColumns(t));if(t.stack)return n(e.measureVerticalContainer(t));if(t.ul)return n(e.measureUnorderedList(t));if(t.ol)return n(e.measureOrderedList(t));if(t.table)return n(e.measureTable(t));if(void 0!==t.text)return n(e.measureLeaf(t));if(t.toc)return n(e.measureToc(t));if(t.image)return n(e.measureImage(t));if(t.canvas)return n(e.measureCanvas(t));if(t.qr)return n(e.measureQr(t));throw"Unrecognized document structure: "+JSON.stringify(t,c)});function n(t){var e=t._margin;return e&&(t._minWidth+=e[0]+e[2],t._maxWidth+=e[0]+e[2]),t}},d.prototype.convertIfBase64Image=function(t){if(/^data:image\/(jpeg|jpg|png);base64,/.test(t.image)){var e="$$pdfmake$$"+this.autoImageIndex++;this.images[e]=t.image,t.image=e}},d.prototype.measureImage=function(t){this.images&&this.convertIfBase64Image(t);var e=this.imageMeasure.measureImage(t.image);if(t.fit){var n=e.width/e.height>t.fit[0]/t.fit[1]?t.fit[0]/e.width:t.fit[1]/e.height;t._width=t._minWidth=t._maxWidth=e.width*n,t._height=e.height*n}else t._width=t._minWidth=t._maxWidth=t.width||e.width,t._height=t.height||e.height*t._width/e.width,s(t.maxWidth)&&t.maxWidth<t._width&&(t._width=t._minWidth=t._maxWidth=t.maxWidth,t._height=t._width*e.height/e.width),s(t.maxHeight)&&t.maxHeight<t._height&&(t._height=t.maxHeight,t._width=t._minWidth=t._maxWidth=t._height*e.width/e.height),s(t.minWidth)&&t.minWidth>t._width&&(t._width=t._minWidth=t._maxWidth=t.minWidth,t._height=t._width*e.height/e.width),s(t.minHeight)&&t.minHeight>t._height&&(t._height=t.minHeight,t._width=t._minWidth=t._maxWidth=t._height*e.width/e.height);return t._alignment=this.styleStack.getProperty("alignment"),t},d.prototype.measureLeaf=function(t){t._textRef&&t._textRef._nodeRef.text&&(t.text=t._textRef._nodeRef.text);var e=this.styleStack.clone();e.push(t);var n=this.textTools.buildInlines(t.text,e);return t._inlines=n.items,t._minWidth=n.minWidth,t._maxWidth=n.maxWidth,t},d.prototype.measureToc=function(t){t.toc.title&&(t.toc.title=this.measureNode(t.toc.title));for(var e=[],n=t.toc.textStyle||{},r=t.toc.numberStyle||n,i=t.toc.textMargin||[0,0,0,0],a=0,o=t.toc._items.length;a<o;a++){var s=t.toc._items[a],l=t.toc._items[a].tocStyle||n,u=t.toc._items[a].tocMargin||i;e.push([{text:s.text,alignment:"left",style:l,margin:u},{text:"00000",alignment:"right",_tocItemRef:s,style:r,margin:[0,u[1],0,u[3]]}])}return t.toc._table={table:{dontBreakRows:!0,widths:["*","auto"],body:e},layout:"noBorders"},t.toc._table=this.measureNode(t.toc._table),t},d.prototype.measureVerticalContainer=function(t){var e=t.stack;t._minWidth=0,t._maxWidth=0;for(var n=0,r=e.length;n<r;n++)e[n]=this.measureNode(e[n]),t._minWidth=Math.max(t._minWidth,e[n]._minWidth),t._maxWidth=Math.max(t._maxWidth,e[n]._maxWidth);return t},d.prototype.gapSizeForList=function(){return this.textTools.sizeOfString("9. ",this.styleStack)},d.prototype.buildUnorderedMarker=function(t,e,n){var r,i,a,o,s,l,u,c,h,f,d=t.getProperty("markerColor")||t.getProperty("color")||"black";switch(n){case"circle":h=d,r={canvas:[{x:f=(c=e).fontSize/6,y:c.height/c.lineHeight+c.descender-c.fontSize/3,r1:f,r2:f,type:"ellipse",lineColor:h}]};break;case"square":l=d,u=(s=e).fontSize/3,r={canvas:[{x:0,y:s.height/s.lineHeight+s.descender-s.fontSize/3-u/2,h:u,w:u,type:"rect",color:l}]};break;case"none":r={};break;case"disc":default:a=d,r={canvas:[{x:o=(i=e).fontSize/6,y:i.height/i.lineHeight+i.descender-i.fontSize/3,r1:o,r2:o,type:"ellipse",color:a}]}}return r._minWidth=r._maxWidth=e.width,r._minHeight=r._maxHeight=e.height,r},d.prototype.buildOrderedMarker=function(t,e,n,r){function i(t){return t<1?t.toString():function t(e){return(e>=26?t((e/26>>0)-1):"")+"abcdefghijklmnopqrstuvwxyz"[e%26>>0]}(t-1)}function a(t){if(t<1||t>4999)return t.toString();var e,n=t,r={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},i="";for(e in r)for(;n>=r[e];)i+=e,n-=r[e];return i}var o;switch(n){case"none":o=null;break;case"upper-alpha":o=i(t).toUpperCase();break;case"lower-alpha":o=i(t);break;case"upper-roman":o=a(t);break;case"lower-roman":o=a(t).toLowerCase();break;case"decimal":default:o=t.toString()}if(null===o)return{};r&&(u(r)?(r[0]&&(o=r[0]+o),r[1]&&(o+=r[1]),o+=" "):o+=r+" ");var s={text:o},l=e.getProperty("markerColor");return l&&(s.color=l),{_inlines:this.textTools.buildInlines(s,e).items}},d.prototype.measureUnorderedList=function(t){var e=this.styleStack.clone(),n=t.ul;t.type=t.type||"disc",t._gapSize=this.gapSizeForList(),t._minWidth=0,t._maxWidth=0;for(var r=0,i=n.length;r<i;r++){var a=n[r]=this.measureNode(n[r]);a.ol||a.ul||(a.listMarker=this.buildUnorderedMarker(e,t._gapSize,a.listType||t.type)),t._minWidth=Math.max(t._minWidth,n[r]._minWidth+t._gapSize.width),t._maxWidth=Math.max(t._maxWidth,n[r]._maxWidth+t._gapSize.width)}return t},d.prototype.measureOrderedList=function(t){var e=this.styleStack.clone(),n=t.ol;t.type=t.type||"decimal",t.separator=t.separator||".",t.reversed=t.reversed||!1,t.start||(t.start=t.reversed?n.length:1),t._gapSize=this.gapSizeForList(),t._minWidth=0,t._maxWidth=0;for(var r=t.start,i=0,a=n.length;i<a;i++){(o=n[i]=this.measureNode(n[i])).ol||o.ul||(o.listMarker=this.buildOrderedMarker(o.counter||r,e,o.listType||t.type,t.separator),o.listMarker._inlines&&(t._gapSize.width=Math.max(t._gapSize.width,o.listMarker._inlines[0].width))),t._minWidth=Math.max(t._minWidth,n[i]._minWidth),t._maxWidth=Math.max(t._maxWidth,n[i]._maxWidth),t.reversed?r--:r++}t._minWidth+=t._gapSize.width,t._maxWidth+=t._gapSize.width;for(i=0,a=n.length;i<a;i++){var o;(o=n[i]).ol||o.ul||(o.listMarker._minWidth=o.listMarker._maxWidth=t._gapSize.width)}return t},d.prototype.measureColumns=function(t){var e=t.columns;t._gap=this.styleStack.getProperty("columnGap")||0;for(var n=0,r=e.length;n<r;n++)e[n]=this.measureNode(e[n]);var i=a.measureMinMax(e),o=e.length>0?e.length-1:0;return t._minWidth=i.min+t._gap*o,t._maxWidth=i.max+t._gap*o,t},d.prototype.measureTable=function(t){!function(t){t.table.widths||(t.table.widths="auto");if(o(t.table.widths))for(t.table.widths=[t.table.widths];t.table.widths.length<t.table.body[0].length;)t.table.widths.push(t.table.widths[t.table.widths.length-1]);for(var e=0,n=t.table.widths.length;e<n;e++){var r=t.table.widths[e];(s(r)||o(r))&&(t.table.widths[e]={width:r})}}(t),t._layout=function(e){var n=t.layout;o(n)&&(n=e[n]);return h({hLineWidth:function(t,e){return 1},vLineWidth:function(t,e){return 1},hLineColor:function(t,e){return"black"},vLineColor:function(t,e){return"black"},paddingLeft:function(t,e){return 4},paddingRight:function(t,e){return 4},paddingTop:function(t,e){return 2},paddingBottom:function(t,e){return 2},fillColor:function(t,e){return null},defaultBorder:!0},n)}(this.tableLayouts),t._offsets=function(e){for(var n=[],r=0,i=0,a=0,o=t.table.widths.length;a<o;a++){var s=i+e.vLineWidth(a,t)+e.paddingLeft(a,t);n.push(s),r+=s,i=e.paddingRight(a,t)}return{total:r+=i+e.vLineWidth(t.table.widths.length,t),offsets:n}}(t._layout);var e,n,r,i,u=[];for(e=0,r=t.table.body[0].length;e<r;e++){var c=t.table.widths[e];for(c._minWidth=0,c._maxWidth=0,n=0,i=t.table.body.length;n<i;n++){var f=t.table.body[n],d=f[e];if(void 0===d)throw"Malformed table row, a cell is undefined.";null===d&&(d=""),d._span||((d=f[e]=this.styleStack.auto(d,g(this,d))).colSpan&&d.colSpan>1?(v(f,e,d.colSpan),u.push({col:e,span:d.colSpan,minWidth:d._minWidth,maxWidth:d._maxWidth})):(c._minWidth=Math.max(c._minWidth,d._minWidth),c._maxWidth=Math.max(c._maxWidth,d._maxWidth))),d.rowSpan&&d.rowSpan>1&&b(t.table,n,e,d.rowSpan)}}!function(){for(var e,n,r=0,i=u.length;r<i;r++){var a=u[r],o=y(a.col,a.span,t._offsets),s=a.minWidth-o.minWidth,l=a.maxWidth-o.maxWidth;if(s>0)for(e=s/a.span,n=0;n<a.span;n++)t.table.widths[a.col+n]._minWidth+=e;if(l>0)for(e=l/a.span,n=0;n<a.span;n++)t.table.widths[a.col+n]._maxWidth+=e}}();var p=a.measureMinMax(t.table.widths);return t._minWidth=p.min+t._offsets.total,t._maxWidth=p.max+t._offsets.total,t;function g(t,e){return function(){return l(e)&&(e.fillColor=t.styleStack.getProperty("fillColor")),t.measureNode(e)}}function y(e,n,r){for(var i={minWidth:0,maxWidth:0},a=0;a<n;a++)i.minWidth+=t.table.widths[e+a]._minWidth+(a?r.offsets[e+a]:0),i.maxWidth+=t.table.widths[e+a]._maxWidth+(a?r.offsets[e+a]:0);return i}function v(t,e,n){for(var r=1;r<n;r++)t[e+r]={_span:!0,_minWidth:0,_maxWidth:0,rowSpan:t[e].rowSpan}}function b(t,e,n,r){for(var i=1;i<r;i++)t.body[e+i][n]={_span:!0,_minWidth:0,_maxWidth:0,fillColor:t.body[e][n].fillColor}}},d.prototype.measureCanvas=function(t){for(var e=0,n=0,r=0,i=t.canvas.length;r<i;r++){var a=t.canvas[r];switch(a.type){case"ellipse":e=Math.max(e,a.x+a.r1),n=Math.max(n,a.y+a.r2);break;case"rect":e=Math.max(e,a.x+a.w),n=Math.max(n,a.y+a.h);break;case"line":e=Math.max(e,a.x1,a.x2),n=Math.max(n,a.y1,a.y2);break;case"polyline":for(var o=0,s=a.points.length;o<s;o++)e=Math.max(e,a.points[o].x),n=Math.max(n,a.points[o].y)}}return t._minWidth=t._maxWidth=e,t._minHeight=t._maxHeight=n,t._alignment=this.styleStack.getProperty("alignment"),t},d.prototype.measureQr=function(t){return(t=f.measure(t))._alignment=this.styleStack.getProperty("alignment"),t},t.exports=d},function(t,e,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";!function(t){"use strict";var e="undefined"!=typeof Uint8Array?Uint8Array:Array,n="+".charCodeAt(0),i="/".charCodeAt(0),a="0".charCodeAt(0),o="a".charCodeAt(0),s="A".charCodeAt(0),l="-".charCodeAt(0),u="_".charCodeAt(0);function c(t){var e=t.charCodeAt(0);return e===n||e===l?62:e===i||e===u?63:e<a?-1:e<a+10?e-a+26+26:e<s+26?e-s:e<o+26?e-o+26:void 0}t.toByteArray=function(t){var n,r,i,a,o,s;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var l=t.length;o="="===t.charAt(l-2)?2:"="===t.charAt(l-1)?1:0,s=new e(3*t.length/4-o),i=o>0?t.length-4:t.length;var u=0;function h(t){s[u++]=t}for(n=0,r=0;n<i;n+=4,r+=3)h((16711680&(a=c(t.charAt(n))<<18|c(t.charAt(n+1))<<12|c(t.charAt(n+2))<<6|c(t.charAt(n+3))))>>16),h((65280&a)>>8),h(255&a);return 2===o?h(255&(a=c(t.charAt(n))<<2|c(t.charAt(n+1))>>4)):1===o&&(h((a=c(t.charAt(n))<<10|c(t.charAt(n+1))<<4|c(t.charAt(n+2))>>2)>>8&255),h(255&a)),s},t.fromByteArray=function(t){var e,n,i,a,o=t.length%3,s="";function l(t){return r.charAt(t)}for(e=0,i=t.length-o;e<i;e+=3)n=(t[e]<<16)+(t[e+1]<<8)+t[e+2],s+=l((a=n)>>18&63)+l(a>>12&63)+l(a>>6&63)+l(63&a);switch(o){case 1:s+=l((n=t[t.length-1])>>2),s+=l(n<<4&63),s+="==";break;case 2:s+=l((n=(t[t.length-2]<<8)+t[t.length-1])>>10),s+=l(n>>4&63),s+=l(n<<2&63),s+="="}return s}}(e)},function(t,e){(function(){e.OP=0,e.CL=1,e.CP=2,e.QU=3,e.GL=4,e.NS=5,e.EX=6,e.SY=7,e.IS=8,e.PR=9,e.PO=10,e.NU=11,e.AL=12,e.HL=13,e.ID=14,e.IN=15,e.HY=16,e.BA=17,e.BB=18,e.B2=19,e.ZW=20,e.CM=21,e.WJ=22,e.H2=23,e.H3=24,e.JL=25,e.JV=26,e.JT=27,e.RI=28,e.AI=29,e.BK=30,e.CB=31,e.CJ=32,e.CR=33,e.LF=34,e.NL=35,e.SA=36,e.SG=37,e.SP=38,e.XX=39}).call(this)},function(t,e){(function(){e.DI_BRK=0,e.IN_BRK=1,e.CI_BRK=2,e.CP_BRK=3,e.PR_BRK=4,e.pairTable=[[4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4],[0,4,4,1,1,4,4,4,4,1,1,0,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,4,4,4,4,1,1,1,1,1,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[4,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,1,4,4,4,0,0,1,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,1,4,4,4,0,0,1,1,1,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,1,0,1,1,0,0,4,2,4,1,1,1,1,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,0,1,4,4,4,0,0,1,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,0,1,4,4,4,0,0,0,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,0,1,1,0,4,4,2,4,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,1,1,1,1,0,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,1]]}).call(this)},function(t,e,n){"use strict";for(var r=[null,[[10,7,17,13],[1,1,1,1],[]],[[16,10,28,22],[1,1,1,1],[4,16]],[[26,15,22,18],[1,1,2,2],[4,20]],[[18,20,16,26],[2,1,4,2],[4,24]],[[24,26,22,18],[2,1,4,4],[4,28]],[[16,18,28,24],[4,2,4,4],[4,32]],[[18,20,26,18],[4,2,5,6],[4,20,36]],[[22,24,26,22],[4,2,6,6],[4,22,40]],[[22,30,24,20],[5,2,8,8],[4,24,44]],[[26,18,28,24],[5,4,8,8],[4,26,48]],[[30,20,24,28],[5,4,11,8],[4,28,52]],[[22,24,28,26],[8,4,11,10],[4,30,56]],[[22,26,22,24],[9,4,16,12],[4,32,60]],[[24,30,24,20],[9,4,16,16],[4,24,44,64]],[[24,22,24,30],[10,6,18,12],[4,24,46,68]],[[28,24,30,24],[10,6,16,17],[4,24,48,72]],[[28,28,28,28],[11,6,19,16],[4,28,52,76]],[[26,30,28,28],[13,6,21,18],[4,28,54,80]],[[26,28,26,26],[14,7,25,21],[4,28,56,84]],[[26,28,28,30],[16,8,25,20],[4,32,60,88]],[[26,28,30,28],[17,8,25,23],[4,26,48,70,92]],[[28,28,24,30],[17,9,34,23],[4,24,48,72,96]],[[28,30,30,30],[18,9,30,25],[4,28,52,76,100]],[[28,30,30,30],[20,10,32,27],[4,26,52,78,104]],[[28,26,30,30],[21,12,35,29],[4,30,56,82,108]],[[28,28,30,28],[23,12,37,34],[4,28,56,84,112]],[[28,30,30,30],[25,12,40,34],[4,32,60,88,116]],[[28,30,30,30],[26,13,42,35],[4,24,48,72,96,120]],[[28,30,30,30],[28,14,45,38],[4,28,52,76,100,124]],[[28,30,30,30],[29,15,48,40],[4,24,50,76,102,128]],[[28,30,30,30],[31,16,51,43],[4,28,54,80,106,132]],[[28,30,30,30],[33,17,54,45],[4,32,58,84,110,136]],[[28,30,30,30],[35,18,57,48],[4,28,56,84,112,140]],[[28,30,30,30],[37,19,60,51],[4,32,60,88,116,144]],[[28,30,30,30],[38,19,63,53],[4,28,52,76,100,124,148]],[[28,30,30,30],[40,20,66,56],[4,22,48,74,100,126,152]],[[28,30,30,30],[43,21,70,59],[4,26,52,78,104,130,156]],[[28,30,30,30],[45,22,74,62],[4,30,56,82,108,134,160]],[[28,30,30,30],[47,24,77,65],[4,24,52,80,108,136,164]],[[28,30,30,30],[49,25,81,68],[4,28,56,84,112,140,168]]],i=1,a=2,o=4,s=/^\d*$/,l=/^[A-Za-z0-9 $%*+\-./:]*$/,u=/^[A-Z0-9 $%*+\-./:]*$/,c=1,h=0,f=3,d=2,p=[],g=[-1],y=0,v=1;y<255;++y)p.push(v),g[v]=y,v=2*v^(v>=128?285:0);var b=[[]];for(y=0;y<30;++y){for(var m=b[y],w=[],x=0;x<=y;++x){var S=x<y?p[m[x]]:0,_=p[(y+(m[x-1]||0))%255];w.push(g[S^_])}b.push(w)}var k={};for(y=0;y<45;++y)k["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:".charAt(y)]=y;var C=[function(t,e){return(t+e)%2==0},function(t,e){return t%2==0},function(t,e){return e%3==0},function(t,e){return(t+e)%3==0},function(t,e){return((t/2|0)+(e/3|0))%2==0},function(t,e){return t*e%2+t*e%3==0},function(t,e){return(t*e%2+t*e%3)%2==0},function(t,e){return((t+e)%2+t*e%3)%2==0}],A=function(t){return t>6},P=function(t,e){var n,i,a,o=-8&(i=r[n=t],a=16*n*n+128*n+64,A(n)&&(a-=36),i[2].length&&(a-=25*i[2].length*i[2].length-10*i[2].length-55),a),s=r[t];return o-=8*s[0][e]*s[1][e]},E=function(t,e){switch(e){case i:return t<10?10:t<27?12:14;case a:return t<10?9:t<27?11:13;case o:return t<10?8:16;case 8:return t<10?8:t<27?10:12}},I=function(t,e,n){var r=P(t,n)-4-E(t,e);switch(e){case i:return 3*(r/10|0)+(r%10<4?0:r%10<7?1:2);case a:return 2*(r/11|0)+(r%11<6?0:1);case o:return r/8|0;case 8:return r/13|0}},T=function(t,e){switch(t){case i:return e.match(s)?e:null;case a:return e.match(l)?e.toUpperCase():null;case o:if("string"==typeof e){for(var n=[],r=0;r<e.length;++r){var u=e.charCodeAt(r);u<128?n.push(u):u<2048?n.push(192|u>>6,128|63&u):u<65536?n.push(224|u>>12,128|u>>6&63,128|63&u):n.push(240|u>>18,128|u>>12&63,128|u>>6&63,128|63&u)}return n}return e}},O=function(t,e){for(var n=t.slice(0),r=t.length,i=e.length,a=0;a<i;++a)n.push(0);for(a=0;a<r;){var o=g[n[a++]];if(o>=0)for(var s=0;s<i;++s)n[a+s]^=p[(o+e[s])%255]}return n.slice(r)},L=function(t,e,n,r){for(var i=t<<r,a=e-1;a>=0;--a)i>>r+a&1&&(i^=n<<a);return t<<r|i},B=function(t,e,n){for(var r=C[n],i=t.length,a=0;a<i;++a)for(var o=0;o<i;++o)e[a][o]||(t[a][o]^=r(a,o));return t},M=function(t,e,n,r){for(var i=t.length,a=21522^L(n<<3|r,5,1335,10),o=0;o<15;++o){var s=[i-1,i-2,i-3,i-4,i-5,i-6,i-7,i-8,7,5,4,3,2,1,0][o];t[[0,1,2,3,4,5,7,8,i-7,i-6,i-5,i-4,i-3,i-2,i-1][o]][8]=t[8][s]=a>>o&1}return t},R=function(t){for(var e=function(t){for(var e=0,n=0;n<t.length;++n)t[n]>=5&&(e+=t[n]-5+3);for(n=5;n<t.length;n+=2){var r=t[n];t[n-1]==r&&t[n-2]==3*r&&t[n-3]==r&&t[n-4]==r&&(t[n-5]>=4*r||t[n+1]>=4*r)&&(e+=40)}return e},n=t.length,r=0,i=0,a=0;a<n;++a){var o,s=t[a];o=[0];for(var l=0;l<n;){for(u=0;l<n&&s[l];++u)++l;for(o.push(u),u=0;l<n&&!s[l];++u)++l;o.push(u)}r+=e(o),o=[0];for(l=0;l<n;){var u;for(u=0;l<n&&t[l][a];++u)++l;for(o.push(u),u=0;l<n&&!t[l][a];++u)++l;o.push(u)}r+=e(o);var c=t[a+1]||[];i+=s[0];for(l=1;l<n;++l){var h=s[l];i+=h,s[l-1]==h&&c[l]===h&&c[l-1]===h&&(r+=3)}}return r+=10*(Math.abs(i/n/n-.5)/.05|0)},F=function(t,e,n,s,l){var u=r[e],c=function(t,e,n,r){var s=[],l=0,u=8,c=n.length,h=function(t,e){if(e>=u){for(s.push(l|t>>(e-=u));e>=8;)s.push(t>>(e-=8)&255);l=0,u=8}e>0&&(l|=(t&(1<<e)-1)<<(u-=e))},f=E(t,e);switch(h(e,4),h(c,f),e){case i:for(var d=2;d<c;d+=3)h(parseInt(n.substring(d-2,d+1),10),10);h(parseInt(n.substring(d-2),10),[0,4,7][c%3]);break;case a:for(d=1;d<c;d+=2)h(45*k[n.charAt(d-1)]+k[n.charAt(d)],11);c%2==1&&h(k[n.charAt(d-1)],6);break;case o:for(d=0;d<c;++d)h(n[d],8)}for(h(0,4),u<8&&s.push(l);s.length+1<r;)s.push(236,17);return s.length<r&&s.push(236),s}(e,n,t,P(e,s)>>3);c=function(t,e,n){for(var r=[],i=t.length/e|0,a=0,o=e-t.length%e,s=0;s<o;++s)r.push(a),a+=i;for(s=o;s<e;++s)r.push(a),a+=i+1;r.push(a);var l=[];for(s=0;s<e;++s)l.push(O(t.slice(r[s],r[s+1]),n));var u=[],c=t.length/e|0;for(s=0;s<c;++s)for(var h=0;h<e;++h)u.push(t[r[h]+s]);for(h=o;h<e;++h)u.push(t[r[h+1]-1]);for(s=0;s<n.length;++s)for(h=0;h<e;++h)u.push(l[h][s]);return u}(c,u[1][s],b[u[0][s]]);var h=function(t){for(var e=r[t],n=4*t+17,i=[],a=[],o=0;o<n;++o)i.push([]),a.push([]);var s=function(t,e,n,r,o){for(var s=0;s<n;++s)for(var l=0;l<r;++l)i[t+s][e+l]=o[s]>>l&1,a[t+s][e+l]=1};s(0,0,9,9,[127,65,93,93,93,65,383,0,64]),s(n-8,0,8,9,[256,127,65,93,93,93,65,127]),s(0,n-8,9,8,[254,130,186,186,186,130,254,0,0]);for(o=9;o<n-8;++o)i[6][o]=i[o][6]=1&~o,a[6][o]=a[o][6]=1;var l=e[2],u=l.length;for(o=0;o<u;++o)for(var c=0===o?u-1:u,h=0===o||o===u-1?1:0;h<c;++h)s(l[o],l[h],5,5,[31,17,21,17,31]);if(A(t)){var f=L(t,6,7973,12),d=0;for(o=0;o<6;++o)for(h=0;h<3;++h)i[o][n-11+h]=i[n-11+h][o]=f>>d++&1,a[o][n-11+h]=a[n-11+h][o]=1}return{matrix:i,reserved:a}}(e),f=h.matrix,d=h.reserved;if(function(t,e,n){for(var r=t.length,i=0,a=-1,o=r-1;o>=0;o-=2){6==o&&--o;for(var s=a<0?r-1:0,l=0;l<r;++l){for(var u=o;u>o-2;--u)e[s][u]||(t[s][u]=n[i>>3]>>(7&~i)&1,++i);s+=a}a=-a}}(f,d,c),l<0){B(f,d,0),M(f,0,s,0);var p=0,g=R(f);for(B(f,d,0),l=1;l<8;++l){B(f,d,l),M(f,0,s,l);var y=R(f);g>y&&(g=y,p=l),B(f,d,l)}l=p}return B(f,d,l),M(f,0,s,l),f};function D(t,e){var n=[],r=e.background||"#fff",l=e.foreground||"#000",p=function(t,e){var n={numeric:i,alphanumeric:a,octet:o},r={L:c,M:h,Q:f,H:d},l=(e=e||{}).version||-1,p=r[(e.eccLevel||"L").toUpperCase()],g=e.mode?n[e.mode.toLowerCase()]:-1,y="mask"in e?e.mask:-1;if(g<0)g="string"==typeof t?t.match(s)?i:t.match(u)?a:o:o;else if(g!=i&&g!=a&&g!=o)throw"invalid or unsupported mode";if(null===(t=T(g,t)))throw"invalid data format";if(p<0||p>3)throw"invalid ECC level";if(l<0){for(l=1;l<=40&&!(t.length<=I(l,g,p));++l);if(l>40)throw"too large data for the Qr format"}else if(l<1||l>40)throw"invalid Qr version! should be between 1 and 40";if(-1!=y&&(y<0||y>8))throw"invalid mask";return F(t,l,g,p,y)}(t,e),g=p.length,y=Math.floor(e.fit?e.fit/g:5),v=g*y;n.push({type:"rect",x:0,y:0,w:v,h:v,lineWidth:0,color:r});for(var b=0;b<g;++b)for(var m=0;m<g;++m)p[b][m]&&n.push({type:"rect",x:y*m,y:y*b,w:y,h:y,lineWidth:0,color:l});return{canvas:n,size:v}}t.exports={measure:function(t){var e=D(t.qr,t);return t._canvas=e.canvas,t._width=t._height=t._minWidth=t._maxWidth=t._minHeight=t._maxHeight=e.size,t}}},function(t,e,n){"use strict";var r=n(136);function i(t,e){this.transactionLevel=0,this.repeatables=[],this.tracker=e,this.writer=new r(t,e)}function a(t,e){var n=e(t);return n||(t.moveToNextPage(),n=e(t)),n}i.prototype.addLine=function(t,e,n){return a(this,function(r){return r.writer.addLine(t,e,n)})},i.prototype.addImage=function(t,e){return a(this,function(n){return n.writer.addImage(t,e)})},i.prototype.addQr=function(t,e){return a(this,function(n){return n.writer.addQr(t,e)})},i.prototype.addVector=function(t,e,n,r){return this.writer.addVector(t,e,n,r)},i.prototype.beginClip=function(t,e){return this.writer.beginClip(t,e)},i.prototype.endClip=function(){return this.writer.endClip()},i.prototype.alignCanvas=function(t){this.writer.alignCanvas(t)},i.prototype.addFragment=function(t,e,n,r){this.writer.addFragment(t,e,n,r)||(this.moveToNextPage(),this.writer.addFragment(t,e,n,r))},i.prototype.moveToNextPage=function(t){var e=this.writer.context.moveToNextPage(t);e.newPageCreated?this.repeatables.forEach(function(t){this.writer.addFragment(t,!0)},this):this.repeatables.forEach(function(t){this.writer.context.moveDown(t.height)},this),this.writer.tracker.emit("pageChanged",{prevPage:e.prevPage,prevY:e.prevY,y:e.y})},i.prototype.beginUnbreakableBlock=function(t,e){0==this.transactionLevel++&&(this.originalX=this.writer.context.x,this.writer.pushContext(t,e))},i.prototype.commitUnbreakableBlock=function(t,e){if(0==--this.transactionLevel){var n=this.writer.context;this.writer.popContext();var r=n.pages.length;if(r>0){var i=n.pages[0];if(i.xOffset=t,i.yOffset=e,r>1)if(void 0!==t||void 0!==e)i.height=n.getCurrentPage().pageSize.height-n.pageMargins.top-n.pageMargins.bottom;else{i.height=this.writer.context.getCurrentPage().pageSize.height-this.writer.context.pageMargins.top-this.writer.context.pageMargins.bottom;for(var a=0,o=this.repeatables.length;a<o;a++)i.height-=this.repeatables[a].height}else i.height=n.y;void 0!==t||void 0!==e?this.writer.addFragment(i,!0,!0,!0):this.addFragment(i)}}},i.prototype.currentBlockToRepeatable=function(){var t=this.writer.context,e={items:[]};return t.pages[0].items.forEach(function(t){e.items.push(t)}),e.xOffset=this.originalX,e.height=t.y,e},i.prototype.pushToRepeatables=function(t){this.repeatables.push(t)},i.prototype.popFromRepeatables=function(){this.repeatables.pop()},i.prototype.context=function(){return this.writer.context},t.exports=i},function(t,e,n){"use strict";var r=n(82),i=n(0).isNumber,a=n(0).pack,o=n(0).offsetVector,s=n(81);function l(t,e){this.context=t,this.contextStack=[],this.tracker=e}function u(t,e,n){null==n||n<0||n>t.items.length?t.items.push(e):t.items.splice(n,0,e)}l.prototype.addLine=function(t,e,n){var r=t.getHeight(),i=this.context,a=i.getCurrentPage(),o=this.getCurrentPositionOnPage();return!(i.availableHeight<r||!a)&&(t.x=i.x+(t.x||0),t.y=i.y+(t.y||0),this.alignLine(t),u(a,{type:"line",item:t},n),this.tracker.emit("lineAdded",t),e||i.moveDown(r),o)},l.prototype.alignLine=function(t){var e=this.context.availableWidth,n=t.getWidth(),r=t.inlines&&t.inlines.length>0&&t.inlines[0].alignment,i=0;switch(r){case"right":i=e-n;break;case"center":i=(e-n)/2}if(i&&(t.x=(t.x||0)+i),"justify"===r&&!t.newLineForced&&!t.lastLineInParagraph&&t.inlines.length>1)for(var a=(e-n)/(t.inlines.length-1),o=1,s=t.inlines.length;o<s;o++)i=o*a,t.inlines[o].x+=i,t.inlines[o].justifyShift=a},l.prototype.addImage=function(t,e){var n=this.context,r=n.getCurrentPage(),i=this.getCurrentPositionOnPage();return!(!r||void 0===t.absolutePosition&&n.availableHeight<t._height&&r.items.length>0)&&(void 0===t._x&&(t._x=t.x||0),t.x=n.x+t._x,t.y=n.y,this.alignImage(t),u(r,{type:"image",item:t},e),n.moveDown(t._height),i)},l.prototype.addQr=function(t,e){var n=this.context,r=n.getCurrentPage(),i=this.getCurrentPositionOnPage();if(!r||void 0===t.absolutePosition&&n.availableHeight<t._height)return!1;void 0===t._x&&(t._x=t.x||0),t.x=n.x+t._x,t.y=n.y,this.alignImage(t);for(var a=0,o=t._canvas.length;a<o;a++){var s=t._canvas[a];s.x+=t.x,s.y+=t.y,this.addVector(s,!0,!0,e)}return n.moveDown(t._height),i},l.prototype.alignImage=function(t){var e=this.context.availableWidth,n=t._minWidth,r=0;switch(t._alignment){case"right":r=e-n;break;case"center":r=(e-n)/2}r&&(t.x=(t.x||0)+r)},l.prototype.alignCanvas=function(t){var e=this.context.availableWidth,n=t._minWidth,r=0;switch(t._alignment){case"right":r=e-n;break;case"center":r=(e-n)/2}r&&t.canvas.forEach(function(t){o(t,r,0)})},l.prototype.addVector=function(t,e,n,r){var i=this.context,a=i.getCurrentPage(),s=this.getCurrentPositionOnPage();if(a)return o(t,e?0:i.x,n?0:i.y),u(a,{type:"vector",item:t},r),s},l.prototype.beginClip=function(t,e){var n=this.context;return n.getCurrentPage().items.push({type:"beginClip",item:{x:n.x,y:n.y,width:t,height:e}}),!0},l.prototype.endClip=function(){return this.context.getCurrentPage().items.push({type:"endClip"}),!0},l.prototype.addFragment=function(t,e,n,i){var s=this.context,l=s.getCurrentPage();return!(!e&&t.height>s.availableHeight)&&(t.items.forEach(function(i){switch(i.type){case"line":var u=function(t){var e=new r(t.maxWidth);for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}(i.item);u.x=(u.x||0)+(e?t.xOffset||0:s.x),u.y=(u.y||0)+(n?t.yOffset||0:s.y),l.items.push({type:"line",item:u});break;case"vector":var c=a(i.item);o(c,e?t.xOffset||0:s.x,n?t.yOffset||0:s.y),l.items.push({type:"vector",item:c});break;case"image":var h=a(i.item);h.x=(h.x||0)+(e?t.xOffset||0:s.x),h.y=(h.y||0)+(n?t.yOffset||0:s.y),l.items.push({type:"image",item:h})}}),i||s.moveDown(t.height),!0)},l.prototype.pushContext=function(t,e){void 0===t&&(e=this.context.getCurrentPage().height-this.context.pageMargins.top-this.context.pageMargins.bottom,t=this.context.availableWidth),i(t)&&(t=new s({width:t,height:e},{left:0,right:0,top:0,bottom:0})),this.contextStack.push(this.context),this.context=t},l.prototype.popContext=function(){this.context=this.contextStack.pop()},l.prototype.getCurrentPositionOnPage=function(){return(this.contextStack[0]||this.context).getCurrentPosition()},t.exports=l},function(t,e,n){"use strict";var r=n(44),i=n(0).isFunction;function a(t){this.tableNode=t}a.prototype.beginTable=function(t){var e,n,i,a=this;e=this.tableNode,this.offsets=e._offsets,this.layout=e._layout,n=t.context().availableWidth-this.offsets.total,r.buildColumnWidths(e.table.widths,n),this.tableWidth=e._offsets.total+(i=0,e.table.widths.forEach(function(t){i+=t._calcWidth}),i),this.rowSpanData=function(){var t=[],e=0,n=0;t.push({left:0,rowSpan:0});for(var r=0,i=a.tableNode.table.body[0].length;r<i;r++){var o=a.layout.paddingLeft(r,a.tableNode)+a.layout.paddingRight(r,a.tableNode),s=a.layout.vLineWidth(r,a.tableNode);n=o+s+a.tableNode.table.widths[r]._calcWidth,t[t.length-1].width=n,e+=n,t.push({left:e,rowSpan:0,width:0})}return t}(),this.cleanUpRepeatables=!1,this.headerRows=e.table.headerRows||0,this.rowsWithoutPageBreak=this.headerRows+(e.table.keepWithHeaderRows||0),this.dontBreakRows=e.table.dontBreakRows||!1,this.rowsWithoutPageBreak&&t.beginUnbreakableBlock(),function(t){for(var e=0;e<t.length;e++)for(var n=t[e],r=0;r<n.length;r++){var i=n[r];if(i.border){for(var a=i.rowSpan||1,o=i.colSpan||1,s=0;s<a;s++)void 0!==i.border[0]&&s>0&&u(e+s,r,0,i.border[0]),void 0!==i.border[2]&&u(e+s,r+o-1,2,i.border[2]);for(var l=0;l<o;l++)void 0!==i.border[1]&&l>0&&u(e,r+l,1,i.border[1]),void 0!==i.border[3]&&u(e+a-1,r+l,3,i.border[3])}}function u(e,n,r,i){var a=t[e][n];a.border=a.border||{},a.border[r]=i}}(this.tableNode.table.body),this.drawHorizontalLine(0,t)},a.prototype.onRowBreak=function(t,e){var n=this;return function(){var t=n.rowPaddingTop+(n.headerRows?0:n.topLineWidth);e.context().availableHeight-=n.reservedAtBottom,e.context().moveDown(t)}},a.prototype.beginRow=function(t,e){this.topLineWidth=this.layout.hLineWidth(t,this.tableNode),this.rowPaddingTop=this.layout.paddingTop(t,this.tableNode),this.bottomLineWidth=this.layout.hLineWidth(t+1,this.tableNode),this.rowPaddingBottom=this.layout.paddingBottom(t,this.tableNode),this.rowCallback=this.onRowBreak(t,e),e.tracker.startTracking("pageChanged",this.rowCallback),this.dontBreakRows&&e.beginUnbreakableBlock(),this.rowTopY=e.context().y,this.reservedAtBottom=this.bottomLineWidth+this.rowPaddingBottom,e.context().availableHeight-=this.reservedAtBottom,e.context().moveDown(this.rowPaddingTop)},a.prototype.drawHorizontalLine=function(t,e,n){var r=this.layout.hLineWidth(t,this.tableNode);if(r){for(var a=r/2,o=null,s=this.tableNode.table.body,l=0,u=this.rowSpanData.length;l<u;l++){var c=this.rowSpanData[l],h=!c.rowSpan;if(h&&l<u-1){var f=!1,d=!1;if(t<s.length){var p=s[t][l];f=p.border?p.border[1]:this.layout.defaultBorder}if(t>0){var g=s[t-1][l];d=g.border?g.border[3]:this.layout.defaultBorder}h=f||d}!o&&h&&(o={left:c.left,width:0}),h&&(o.width+=c.width||0);var y=(n||0)+a;h&&l!==u-1||o&&o.width&&(e.addVector({type:"line",x1:o.left,x2:o.left+o.width,y1:y,y2:y,lineWidth:r,lineColor:i(this.layout.hLineColor)?this.layout.hLineColor(t,this.tableNode):this.layout.hLineColor},!1,n),o=null)}e.context().moveDown(r)}},a.prototype.drawVerticalLine=function(t,e,n,r,a){var o=this.layout.vLineWidth(r,this.tableNode);0!==o&&a.addVector({type:"line",x1:t+o/2,x2:t+o/2,y1:e,y2:n,lineWidth:o,lineColor:i(this.layout.vLineColor)?this.layout.vLineColor(r,this.tableNode):this.layout.vLineColor},!1,!0)},a.prototype.endTable=function(t){this.cleanUpRepeatables&&(t.popFromRepeatables(),this.headerRepeatableHeight=null)},a.prototype.endRow=function(t,e,n){var r,a,o=this;e.tracker.stopTracking("pageChanged",this.rowCallback),e.context().moveDown(this.layout.paddingBottom(t,this.tableNode)),e.context().availableHeight+=this.reservedAtBottom;var s=e.context().page,l=e.context().y,u=function(){for(var e=[],n=0,r=0,i=o.tableNode.table.body[t].length;r<i;r++){if(!n){e.push({x:o.rowSpanData[r].left,index:r});var a=o.tableNode.table.body[t][r];n=a._colSpan||a.colSpan||0}n>0&&n--}return e.push({x:o.rowSpanData[o.rowSpanData.length-1].left,index:o.rowSpanData.length-1}),e}(),c=[],h=n&&n.length>0,f=this.tableNode.table.body;if(c.push({y0:this.rowTopY,page:h?n[0].prevPage:s}),h)for(a=0,r=n.length;a<r;a++){var d=n[a];c[c.length-1].y1=d.prevY,c.push({y0:d.y,page:d.prevPage+1}),this.headerRepeatableHeight&&(c[c.length-1].y0+=this.headerRepeatableHeight)}c[c.length-1].y1=l;for(var p=c[0].y1-c[0].y0===this.rowPaddingTop?1:0,g=c.length;p<g;p++){var y=p<c.length-1,v=p>0&&!this.headerRows,b=v?0:this.topLineWidth,m=c[p].y0,w=c[p].y1;for(y&&(w+=this.rowPaddingBottom),e.context().page!=c[p].page&&(e.context().page=c[p].page,this.reservedAtBottom=0),a=0,r=u.length;a<r;a++){var x,S=!1,_=!1,k=u[a].index;if(k<f[t].length)S=(x=f[t][k]).border?x.border[0]:this.layout.defaultBorder;if(k>0)_=(x=f[t][k-1]).border?x.border[2]:this.layout.defaultBorder;if((S||_)&&this.drawVerticalLine(u[a].x,m-b,w+this.bottomLineWidth,u[a].index,e),a<r-1){var C=f[t][k].fillColor;if(C||(C=i(this.layout.fillColor)?this.layout.fillColor(t,this.tableNode,k):this.layout.fillColor),C){var A=S||_?this.layout.vLineWidth(k,this.tableNode):0,P=u[a].x+A,E=this.dontBreakRows?m:m-b;e.addVector({type:"rect",x:P,y:E,w:u[a+1].x-P,h:w+this.bottomLineWidth-E,lineWidth:0,color:C},!1,!0,e.context().hasBackground?1:0)}}}y&&!1!==this.layout.hLineWhenBroken&&this.drawHorizontalLine(t+1,e,w),v&&!1!==this.layout.hLineWhenBroken&&this.drawHorizontalLine(t,e,m)}e.context().page=s,e.context().y=l;var I=this.tableNode.table.body[t];for(a=0,r=I.length;a<r;a++){if(I[a].rowSpan&&(this.rowSpanData[a].rowSpan=I[a].rowSpan,I[a].colSpan&&I[a].colSpan>1))for(var T=1;T<I[a].rowSpan;T++)this.tableNode.table.body[t+T][a]._colSpan=I[a].colSpan;this.rowSpanData[a].rowSpan>0&&this.rowSpanData[a].rowSpan--}this.drawHorizontalLine(t+1,e),this.headerRows&&t===this.headerRows-1&&(this.headerRepeatable=e.currentBlockToRepeatable()),this.dontBreakRows&&e.tracker.auto("pageChanged",function(){o.headerRows||!1===o.layout.hLineWhenBroken||o.drawHorizontalLine(t,e)},function(){e.commitUnbreakableBlock()}),!this.headerRepeatable||t!==this.rowsWithoutPageBreak-1&&t!==this.tableNode.table.body.length-1||(this.headerRepeatableHeight=this.headerRepeatable.height,e.commitUnbreakableBlock(),e.pushToRepeatables(this.headerRepeatable),this.cleanUpRepeatables=!0,this.headerRepeatable=null)},t.exports=a},function(t,e,n){(function(e){(function(){var r,i,a,o,s,l,u={}.hasOwnProperty;l=n(15),s=n(8),i=n(26),o=n(87),a=n(161),r=function(t){var r;function c(t){var e,n,r,i;if(this.options=null!=t?t:{},c.__super__.constructor.apply(this,arguments),this.version=1.3,this.compress=null==(n=this.options.compress)||n,this._pageBuffer=[],this._pageBufferStart=0,this._offsets=[],this._waiting=0,this._ended=!1,this._offset=0,this._root=this.ref({Type:"Catalog",Pages:this.ref({Type:"Pages",Count:0,Kids:[]})}),this.page=null,this.initColor(),this.initVector(),this.initFonts(),this.initText(),this.initImages(),this.info={Producer:"PDFKit",Creator:"PDFKit",CreationDate:new Date},this.options.info)for(e in r=this.options.info)i=r[e],this.info[e]=i;this._write("%PDF-"+this.version),this._write("%ÿÿÿÿ"),!1!==this.options.autoFirstPage&&this.addPage()}return function(t,e){for(var n in e)u.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(c,l.Readable),(r=function(t){var e,n,r;for(n in r=[],t)e=t[n],r.push(c.prototype[n]=e);return r})(n(162)),r(n(164)),r(n(166)),r(n(295)),r(n(297)),r(n(302)),c.prototype.addPage=function(t){var e;return null==t&&(t=this.options),this.options.bufferPages||this.flushPages(),this.page=new a(this,t),this._pageBuffer.push(this.page),(e=this._root.data.Pages.data).Kids.push(this.page.dictionary),e.Count++,this.x=this.page.margins.left,this.y=this.page.margins.top,this._ctm=[1,0,0,1,0,0],this.transform(1,0,0,-1,0,this.page.height),this.emit("pageAdded"),this},c.prototype.bufferedPageRange=function(){return{start:this._pageBufferStart,count:this._pageBuffer.length}},c.prototype.switchToPage=function(t){var e;if(!(e=this._pageBuffer[t-this._pageBufferStart]))throw new Error("switchToPage("+t+") out of bounds, current buffer covers pages "+this._pageBufferStart+" to "+(this._pageBufferStart+this._pageBuffer.length-1));return this.page=e},c.prototype.flushPages=function(){var t,e,n;for(n=this._pageBuffer,this._pageBuffer=[],this._pageBufferStart+=n.length,t=0,e=n.length;t<e;t++)n[t].end()},c.prototype.ref=function(t){var e;return e=new o(this,this._offsets.length+1,t),this._offsets.push(null),this._waiting++,e},c.prototype._read=function(){},c.prototype._write=function(t){return e.isBuffer(t)||(t=new e(t+"\n","binary")),this.push(t),this._offset+=t.length},c.prototype.addContent=function(t){return this.page.write(t),this},c.prototype._refEnd=function(t){if(this._offsets[t.id-1]=t.offset,0==--this._waiting&&this._ended)return this._finalize(),this._ended=!1},c.prototype.write=function(t,e){return new Error("PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. Please pipe the document into a Node stream."),this.pipe(s.createWriteStream(t)),this.end(),this.once("end",e)},c.prototype.output=function(t){throw new Error("PDFDocument#output is deprecated, and has been removed from PDFKit. Please pipe the document into a Node stream.")},c.prototype.end=function(){var t,e,n,r,i;for(t in this.flushPages(),this._info=this.ref(),n=this.info)"string"==typeof(i=n[t])&&(i=new String(i)),this._info.data[t]=i;for(e in this._info.end(),r=this._fontFamilies)r[e].finalize();return this._root.end(),this._root.data.Pages.end(),0===this._waiting?this._finalize():this._ended=!0},c.prototype._finalize=function(t){var e,n,r,a,o;for(o=this._offset,this._write("xref"),this._write("0 "+(this._offsets.length+1)),this._write("0000000000 65535 f "),e=0,n=(a=this._offsets).length;e<n;e++)r=("0000000000"+(r=a[e])).slice(-10),this._write(r+" 00000 n ");return this._write("trailer"),this._write(i.convert({Size:this._offsets.length+1,Root:this._root,Info:this._info})),this._write("startxref"),this._write(""+o),this._write("%%EOF"),this.push(null)},c.prototype.toString=function(){return"[object PDFDocument]"},c}(),t.exports=r}).call(this)}).call(e,n(1).Buffer)},function(t,e){},function(t,e,n){"use strict";var r=n(33).Buffer,i=n(141);t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,n=""+e.data;e=e.next;)n+=t+e.data;return n},t.prototype.concat=function(t){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var e,n,i,a=r.allocUnsafe(t>>>0),o=this.head,s=0;o;)e=o.data,n=a,i=s,e.copy(n,i),s+=o.data.length,o=o.next;return a},t}(),i&&i.inspect&&i.inspect.custom&&(t.exports.prototype[i.inspect.custom]=function(){var t=i.inspect({length:this.length});return this.constructor.name+" "+t})},function(t,e){},function(t,e,n){(function(t){var r=Function.prototype.apply;function i(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new i(r.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new i(r.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(143),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(e,n(7))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,i,a,o,s,l=1,u={},c=!1,h=t.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(t);f=f&&f.setTimeout?f:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick(function(){p(t)})}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((a=new MessageChannel).port1.onmessage=function(t){p(t.data)},r=function(t){a.port2.postMessage(t)}):h&&"onreadystatechange"in h.createElement("script")?(i=h.documentElement,r=function(t){var e=h.createElement("script");e.onreadystatechange=function(){p(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e)}):r=function(t){setTimeout(p,0,t)}:(o="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(o)&&p(+e.data.slice(o.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(o+e,"*")}),f.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var i={callback:t,args:e};return u[l]=i,r(l),l++},f.clearImmediate=d}function d(t){delete u[t]}function p(t){if(c)setTimeout(p,0,t);else{var e=u[t];if(e){c=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}(e)}finally{d(t),c=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(e,n(7),n(11))},function(t,e,n){(function(e){function n(t){try{if(!e.localStorage)return!1}catch(t){return!1}var n=e.localStorage[t];return null!=n&&"true"===String(n).toLowerCase()}t.exports=function(t,e){if(n("noDeprecation"))return t;var r=!1;return function(){if(!r){if(n("throwDeprecation"))throw new Error(e);n("traceDeprecation"),r=!0}return t.apply(this,arguments)}}}).call(e,n(7))},function(t,e,n){"use strict";t.exports=a;var r=n(86),i=n(25);function a(t){if(!(this instanceof a))return new a(t);r.call(this,t)}i.inherits=n(21),i.inherits(a,r),a.prototype._transform=function(t,e,n){n(null,t)}},function(t,e,n){t.exports=n(46)},function(t,e,n){t.exports=n(16)},function(t,e,n){t.exports=n(45).Transform},function(t,e,n){t.exports=n(45).PassThrough},function(t,e,n){"use strict";(function(t,r){var i=n(88),a=n(153),o=n(154),s=n(157),l=n(160);for(var u in l)e[u]=l[u];e.NONE=0,e.DEFLATE=1,e.INFLATE=2,e.GZIP=3,e.GUNZIP=4,e.DEFLATERAW=5,e.INFLATERAW=6,e.UNZIP=7;function c(t){if("number"!=typeof t||t<e.DEFLATE||t>e.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=t,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}c.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,"close before init"),i(this.mode<=e.UNZIP),this.mode===e.DEFLATE||this.mode===e.GZIP||this.mode===e.DEFLATERAW?o.deflateEnd(this.strm):this.mode!==e.INFLATE&&this.mode!==e.GUNZIP&&this.mode!==e.INFLATERAW&&this.mode!==e.UNZIP||s.inflateEnd(this.strm),this.mode=e.NONE,this.dictionary=null)},c.prototype.write=function(t,e,n,r,i,a,o){return this._write(!0,t,e,n,r,i,a,o)},c.prototype.writeSync=function(t,e,n,r,i,a,o){return this._write(!1,t,e,n,r,i,a,o)},c.prototype._write=function(n,a,o,s,l,u,c,h){if(i.equal(arguments.length,8),i(this.init_done,"write before init"),i(this.mode!==e.NONE,"already finalized"),i.equal(!1,this.write_in_progress,"write already in progress"),i.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,i.equal(!1,void 0===a,"must provide flush value"),this.write_in_progress=!0,a!==e.Z_NO_FLUSH&&a!==e.Z_PARTIAL_FLUSH&&a!==e.Z_SYNC_FLUSH&&a!==e.Z_FULL_FLUSH&&a!==e.Z_FINISH&&a!==e.Z_BLOCK)throw new Error("Invalid flush value");if(null==o&&(o=t.alloc(0),l=0,s=0),this.strm.avail_in=l,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=u,this.strm.next_out=c,this.flush=a,!n)return this._process(),this._checkError()?this._afterSync():void 0;var f=this;return r.nextTick(function(){f._process(),f._after()}),this},c.prototype._afterSync=function(){var t=this.strm.avail_out,e=this.strm.avail_in;return this.write_in_progress=!1,[e,t]},c.prototype._process=function(){var t=null;switch(this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=o.deflate(this.strm,this.flush);break;case e.UNZIP:switch(this.strm.avail_in>0&&(t=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===t)break;if(31!==this.strm.input[t]){this.mode=e.INFLATE;break}if(this.gzip_id_bytes_read=1,t++,1===this.strm.avail_in)break;case 1:if(null===t)break;139===this.strm.input[t]?(this.gzip_id_bytes_read=2,this.mode=e.GUNZIP):this.mode=e.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===e.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===e.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===e.Z_DATA_ERROR&&(this.err=e.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===e.GUNZIP&&this.err===e.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},c.prototype._checkError=function(){switch(this.err){case e.Z_OK:case e.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===e.Z_FINISH)return this._error("unexpected end of file"),!1;break;case e.Z_STREAM_END:break;case e.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},c.prototype._after=function(){if(this._checkError()){var t=this.strm.avail_out,e=this.strm.avail_in;this.write_in_progress=!1,this.callback(e,t),this.pending_close&&this.close()}},c.prototype._error=function(t){this.strm.msg&&(t=this.strm.msg),this.onerror(t,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},c.prototype.init=function(t,n,r,a,o){i(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),i(t>=8&&t<=15,"invalid windowBits"),i(n>=-1&&n<=9,"invalid compression level"),i(r>=1&&r<=9,"invalid memlevel"),i(a===e.Z_FILTERED||a===e.Z_HUFFMAN_ONLY||a===e.Z_RLE||a===e.Z_FIXED||a===e.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(n,t,r,a,o),this._setDictionary()},c.prototype.params=function(){throw new Error("deflateParams Not supported")},c.prototype.reset=function(){this._reset(),this._setDictionary()},c.prototype._init=function(t,n,r,i,l){switch(this.level=t,this.windowBits=n,this.memLevel=r,this.strategy=i,this.flush=e.Z_NO_FLUSH,this.err=e.Z_OK,this.mode!==e.GZIP&&this.mode!==e.GUNZIP||(this.windowBits+=16),this.mode===e.UNZIP&&(this.windowBits+=32),this.mode!==e.DEFLATERAW&&this.mode!==e.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new a,this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=o.deflateInit2(this.strm,this.level,e.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:case e.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==e.Z_OK&&this._error("Init error"),this.dictionary=l,this.write_in_progress=!1,this.init_done=!0},c.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:this.err=o.deflateSetDictionary(this.strm,this.dictionary)}this.err!==e.Z_OK&&this._error("Failed to set dictionary")}},c.prototype._reset=function(){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:case e.GZIP:this.err=o.deflateReset(this.strm);break;case e.INFLATE:case e.INFLATERAW:case e.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==e.Z_OK&&this._error("Failed to reset stream")},e.Zlib=c}).call(e,n(1).Buffer,n(11))},function(t,e){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},function(t,e,n){"use strict";var r,i=n(34),a=n(155),o=n(89),s=n(90),l=n(156),u=0,c=1,h=3,f=4,d=5,p=0,g=1,y=-2,v=-3,b=-5,m=-1,w=1,x=2,S=3,_=4,k=0,C=2,A=8,P=9,E=15,I=8,T=286,O=30,L=19,B=2*T+1,M=15,R=3,F=258,D=F+R+1,z=32,N=42,U=69,W=73,G=91,V=103,j=113,H=666,q=1,Z=2,Y=3,X=4,K=3;function J(t,e){return t.msg=l[e],e}function Q(t){return(t<<1)-(t>4?9:0)}function $(t){for(var e=t.length;--e>=0;)t[e]=0}function tt(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(i.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function et(t,e){a._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,tt(t.strm)}function nt(t,e){t.pending_buf[t.pending++]=e}function rt(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function it(t,e){var n,r,i=t.max_chain_length,a=t.strstart,o=t.prev_length,s=t.nice_match,l=t.strstart>t.w_size-D?t.strstart-(t.w_size-D):0,u=t.window,c=t.w_mask,h=t.prev,f=t.strstart+F,d=u[a+o-1],p=u[a+o];t.prev_length>=t.good_match&&(i>>=2),s>t.lookahead&&(s=t.lookahead);do{if(u[(n=e)+o]===p&&u[n+o-1]===d&&u[n]===u[a]&&u[++n]===u[a+1]){a+=2,n++;do{}while(u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&a<f);if(r=F-(f-a),a=f-F,r>o){if(t.match_start=e,o=r,r>=s)break;d=u[a+o-1],p=u[a+o]}}}while((e=h[e&c])>l&&0!=--i);return o<=t.lookahead?o:t.lookahead}function at(t){var e,n,r,a,l,u,c,h,f,d,p=t.w_size;do{if(a=t.window_size-t.lookahead-t.strstart,t.strstart>=p+(p-D)){for(i.arraySet(t.window,t.window,p,p,0),t.match_start-=p,t.strstart-=p,t.block_start-=p,e=n=t.hash_size;r=t.head[--e],t.head[e]=r>=p?r-p:0,--n;);for(e=n=p;r=t.prev[--e],t.prev[e]=r>=p?r-p:0,--n;);a+=p}if(0===t.strm.avail_in)break;if(u=t.strm,c=t.window,h=t.strstart+t.lookahead,f=a,d=void 0,(d=u.avail_in)>f&&(d=f),n=0===d?0:(u.avail_in-=d,i.arraySet(c,u.input,u.next_in,d,h),1===u.state.wrap?u.adler=o(u.adler,c,d,h):2===u.state.wrap&&(u.adler=s(u.adler,c,d,h)),u.next_in+=d,u.total_in+=d,d),t.lookahead+=n,t.lookahead+t.insert>=R)for(l=t.strstart-t.insert,t.ins_h=t.window[l],t.ins_h=(t.ins_h<<t.hash_shift^t.window[l+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[l+R-1])&t.hash_mask,t.prev[l&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=l,l++,t.insert--,!(t.lookahead+t.insert<R)););}while(t.lookahead<D&&0!==t.strm.avail_in)}function ot(t,e){for(var n,r;;){if(t.lookahead<D){if(at(t),t.lookahead<D&&e===u)return q;if(0===t.lookahead)break}if(n=0,t.lookahead>=R&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+R-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==n&&t.strstart-n<=t.w_size-D&&(t.match_length=it(t,n)),t.match_length>=R)if(r=a._tr_tally(t,t.strstart-t.match_start,t.match_length-R),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=R){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+R-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart,0!=--t.match_length;);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else r=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(r&&(et(t,!1),0===t.strm.avail_out))return q}return t.insert=t.strstart<R-1?t.strstart:R-1,e===f?(et(t,!0),0===t.strm.avail_out?Y:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?q:Z}function st(t,e){for(var n,r,i;;){if(t.lookahead<D){if(at(t),t.lookahead<D&&e===u)return q;if(0===t.lookahead)break}if(n=0,t.lookahead>=R&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+R-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=R-1,0!==n&&t.prev_length<t.max_lazy_match&&t.strstart-n<=t.w_size-D&&(t.match_length=it(t,n),t.match_length<=5&&(t.strategy===w||t.match_length===R&&t.strstart-t.match_start>4096)&&(t.match_length=R-1)),t.prev_length>=R&&t.match_length<=t.prev_length){for(i=t.strstart+t.lookahead-R,r=a._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-R),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=i&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+R-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!=--t.prev_length;);if(t.match_available=0,t.match_length=R-1,t.strstart++,r&&(et(t,!1),0===t.strm.avail_out))return q}else if(t.match_available){if((r=a._tr_tally(t,0,t.window[t.strstart-1]))&&et(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return q}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(r=a._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<R-1?t.strstart:R-1,e===f?(et(t,!0),0===t.strm.avail_out?Y:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?q:Z}function lt(t,e,n,r,i){this.good_length=t,this.max_lazy=e,this.nice_length=n,this.max_chain=r,this.func=i}function ut(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=C,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?N:j,t.adler=2===e.wrap?0:1,e.last_flush=u,a._tr_init(e),p):J(t,y)}function ct(t){var e,n=ut(t);return n===p&&((e=t.state).window_size=2*e.w_size,$(e.head),e.max_lazy_match=r[e.level].max_lazy,e.good_match=r[e.level].good_length,e.nice_match=r[e.level].nice_length,e.max_chain_length=r[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=R-1,e.match_available=0,e.ins_h=0),n}function ht(t,e,n,r,a,o){if(!t)return y;var s=1;if(e===m&&(e=6),r<0?(s=0,r=-r):r>15&&(s=2,r-=16),a<1||a>P||n!==A||r<8||r>15||e<0||e>9||o<0||o>_)return J(t,y);8===r&&(r=9);var l=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*B),this.dyn_dtree=new i.Buf16(2*(2*O+1)),this.bl_tree=new i.Buf16(2*(2*L+1)),$(this.dyn_ltree),$(this.dyn_dtree),$(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(M+1),this.heap=new i.Buf16(2*T+1),$(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*T+1),$(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return t.state=l,l.strm=t,l.wrap=s,l.gzhead=null,l.w_bits=r,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=a+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+R-1)/R),l.window=new i.Buf8(2*l.w_size),l.head=new i.Buf16(l.hash_size),l.prev=new i.Buf16(l.w_size),l.lit_bufsize=1<<a+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new i.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=e,l.strategy=o,l.method=n,ct(t)}r=[new lt(0,0,0,0,function(t,e){var n=65535;for(n>t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(at(t),0===t.lookahead&&e===u)return q;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var r=t.block_start+n;if((0===t.strstart||t.strstart>=r)&&(t.lookahead=t.strstart-r,t.strstart=r,et(t,!1),0===t.strm.avail_out))return q;if(t.strstart-t.block_start>=t.w_size-D&&(et(t,!1),0===t.strm.avail_out))return q}return t.insert=0,e===f?(et(t,!0),0===t.strm.avail_out?Y:X):(t.strstart>t.block_start&&(et(t,!1),t.strm.avail_out),q)}),new lt(4,4,8,4,ot),new lt(4,5,16,8,ot),new lt(4,6,32,32,ot),new lt(4,4,16,16,st),new lt(8,16,32,32,st),new lt(8,16,128,128,st),new lt(8,32,128,256,st),new lt(32,128,258,1024,st),new lt(32,258,258,4096,st)],e.deflateInit=function(t,e){return ht(t,e,A,E,I,k)},e.deflateInit2=ht,e.deflateReset=ct,e.deflateResetKeep=ut,e.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?y:(t.state.gzhead=e,p):y},e.deflate=function(t,e){var n,i,o,l;if(!t||!t.state||e>d||e<0)return t?J(t,y):y;if(i=t.state,!t.output||!t.input&&0!==t.avail_in||i.status===H&&e!==f)return J(t,0===t.avail_out?b:y);if(i.strm=t,n=i.last_flush,i.last_flush=e,i.status===N)if(2===i.wrap)t.adler=0,nt(i,31),nt(i,139),nt(i,8),i.gzhead?(nt(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),nt(i,255&i.gzhead.time),nt(i,i.gzhead.time>>8&255),nt(i,i.gzhead.time>>16&255),nt(i,i.gzhead.time>>24&255),nt(i,9===i.level?2:i.strategy>=x||i.level<2?4:0),nt(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(nt(i,255&i.gzhead.extra.length),nt(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=s(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=U):(nt(i,0),nt(i,0),nt(i,0),nt(i,0),nt(i,0),nt(i,9===i.level?2:i.strategy>=x||i.level<2?4:0),nt(i,K),i.status=j);else{var v=A+(i.w_bits-8<<4)<<8;v|=(i.strategy>=x||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(v|=z),v+=31-v%31,i.status=j,rt(i,v),0!==i.strstart&&(rt(i,t.adler>>>16),rt(i,65535&t.adler)),t.adler=1}if(i.status===U)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),tt(t),o=i.pending,i.pending!==i.pending_buf_size));)nt(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=W)}else i.status=W;if(i.status===W)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),tt(t),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,nt(i,l)}while(0!==l);i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.gzindex=0,i.status=G)}else i.status=G;if(i.status===G)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),tt(t),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,nt(i,l)}while(0!==l);i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.status=V)}else i.status=V;if(i.status===V&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&tt(t),i.pending+2<=i.pending_buf_size&&(nt(i,255&t.adler),nt(i,t.adler>>8&255),t.adler=0,i.status=j)):i.status=j),0!==i.pending){if(tt(t),0===t.avail_out)return i.last_flush=-1,p}else if(0===t.avail_in&&Q(e)<=Q(n)&&e!==f)return J(t,b);if(i.status===H&&0!==t.avail_in)return J(t,b);if(0!==t.avail_in||0!==i.lookahead||e!==u&&i.status!==H){var m=i.strategy===x?function(t,e){for(var n;;){if(0===t.lookahead&&(at(t),0===t.lookahead)){if(e===u)return q;break}if(t.match_length=0,n=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(et(t,!1),0===t.strm.avail_out))return q}return t.insert=0,e===f?(et(t,!0),0===t.strm.avail_out?Y:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?q:Z}(i,e):i.strategy===S?function(t,e){for(var n,r,i,o,s=t.window;;){if(t.lookahead<=F){if(at(t),t.lookahead<=F&&e===u)return q;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=R&&t.strstart>0&&(r=s[i=t.strstart-1])===s[++i]&&r===s[++i]&&r===s[++i]){o=t.strstart+F;do{}while(r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&i<o);t.match_length=F-(o-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=R?(n=a._tr_tally(t,1,t.match_length-R),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(et(t,!1),0===t.strm.avail_out))return q}return t.insert=0,e===f?(et(t,!0),0===t.strm.avail_out?Y:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?q:Z}(i,e):r[i.level].func(i,e);if(m!==Y&&m!==X||(i.status=H),m===q||m===Y)return 0===t.avail_out&&(i.last_flush=-1),p;if(m===Z&&(e===c?a._tr_align(i):e!==d&&(a._tr_stored_block(i,0,0,!1),e===h&&($(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),tt(t),0===t.avail_out))return i.last_flush=-1,p}return e!==f?p:i.wrap<=0?g:(2===i.wrap?(nt(i,255&t.adler),nt(i,t.adler>>8&255),nt(i,t.adler>>16&255),nt(i,t.adler>>24&255),nt(i,255&t.total_in),nt(i,t.total_in>>8&255),nt(i,t.total_in>>16&255),nt(i,t.total_in>>24&255)):(rt(i,t.adler>>>16),rt(i,65535&t.adler)),tt(t),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?p:g)},e.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==N&&e!==U&&e!==W&&e!==G&&e!==V&&e!==j&&e!==H?J(t,y):(t.state=null,e===j?J(t,v):p):y},e.deflateSetDictionary=function(t,e){var n,r,a,s,l,u,c,h,f=e.length;if(!t||!t.state)return y;if(2===(s=(n=t.state).wrap)||1===s&&n.status!==N||n.lookahead)return y;for(1===s&&(t.adler=o(t.adler,e,f,0)),n.wrap=0,f>=n.w_size&&(0===s&&($(n.head),n.strstart=0,n.block_start=0,n.insert=0),h=new i.Buf8(n.w_size),i.arraySet(h,e,f-n.w_size,n.w_size,0),e=h,f=n.w_size),l=t.avail_in,u=t.next_in,c=t.input,t.avail_in=f,t.next_in=0,t.input=e,at(n);n.lookahead>=R;){for(r=n.strstart,a=n.lookahead-(R-1);n.ins_h=(n.ins_h<<n.hash_shift^n.window[r+R-1])&n.hash_mask,n.prev[r&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=r,r++,--a;);n.strstart=r,n.lookahead=R-1,at(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=R-1,n.match_available=0,t.next_in=u,t.input=c,t.avail_in=l,n.wrap=s,p},e.deflateInfo="pako deflate (from Nodeca project)"},function(t,e,n){"use strict";var r=n(34),i=4,a=0,o=1,s=2;function l(t){for(var e=t.length;--e>=0;)t[e]=0}var u=0,c=1,h=2,f=29,d=256,p=d+1+f,g=30,y=19,v=2*p+1,b=15,m=16,w=7,x=256,S=16,_=17,k=18,C=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],E=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],I=new Array(2*(p+2));l(I);var T=new Array(2*g);l(T);var O=new Array(512);l(O);var L=new Array(256);l(L);var B=new Array(f);l(B);var M,R,F,D=new Array(g);function z(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}function N(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function U(t){return t<256?O[t]:O[256+(t>>>7)]}function W(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function G(t,e,n){t.bi_valid>m-n?(t.bi_buf|=e<<t.bi_valid&65535,W(t,t.bi_buf),t.bi_buf=e>>m-t.bi_valid,t.bi_valid+=n-m):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=n)}function V(t,e,n){G(t,n[2*e],n[2*e+1])}function j(t,e){for(var n=0;n|=1&t,t>>>=1,n<<=1,--e>0;);return n>>>1}function H(t,e,n){var r,i,a=new Array(b+1),o=0;for(r=1;r<=b;r++)a[r]=o=o+n[r-1]<<1;for(i=0;i<=e;i++){var s=t[2*i+1];0!==s&&(t[2*i]=j(a[s]++,s))}}function q(t){var e;for(e=0;e<p;e++)t.dyn_ltree[2*e]=0;for(e=0;e<g;e++)t.dyn_dtree[2*e]=0;for(e=0;e<y;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*x]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function Z(t){t.bi_valid>8?W(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function Y(t,e,n,r){var i=2*e,a=2*n;return t[i]<t[a]||t[i]===t[a]&&r[e]<=r[n]}function X(t,e,n){for(var r=t.heap[n],i=n<<1;i<=t.heap_len&&(i<t.heap_len&&Y(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!Y(e,r,t.heap[i],t.depth));)t.heap[n]=t.heap[i],n=i,i<<=1;t.heap[n]=r}function K(t,e,n){var r,i,a,o,s=0;if(0!==t.last_lit)for(;r=t.pending_buf[t.d_buf+2*s]<<8|t.pending_buf[t.d_buf+2*s+1],i=t.pending_buf[t.l_buf+s],s++,0===r?V(t,i,e):(V(t,(a=L[i])+d+1,e),0!==(o=C[a])&&G(t,i-=B[a],o),V(t,a=U(--r),n),0!==(o=A[a])&&G(t,r-=D[a],o)),s<t.last_lit;);V(t,x,e)}function J(t,e){var n,r,i,a=e.dyn_tree,o=e.stat_desc.static_tree,s=e.stat_desc.has_stree,l=e.stat_desc.elems,u=-1;for(t.heap_len=0,t.heap_max=v,n=0;n<l;n++)0!==a[2*n]?(t.heap[++t.heap_len]=u=n,t.depth[n]=0):a[2*n+1]=0;for(;t.heap_len<2;)a[2*(i=t.heap[++t.heap_len]=u<2?++u:0)]=1,t.depth[i]=0,t.opt_len--,s&&(t.static_len-=o[2*i+1]);for(e.max_code=u,n=t.heap_len>>1;n>=1;n--)X(t,a,n);for(i=l;n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],X(t,a,1),r=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=r,a[2*i]=a[2*n]+a[2*r],t.depth[i]=(t.depth[n]>=t.depth[r]?t.depth[n]:t.depth[r])+1,a[2*n+1]=a[2*r+1]=i,t.heap[1]=i++,X(t,a,1),t.heap_len>=2;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var n,r,i,a,o,s,l=e.dyn_tree,u=e.max_code,c=e.stat_desc.static_tree,h=e.stat_desc.has_stree,f=e.stat_desc.extra_bits,d=e.stat_desc.extra_base,p=e.stat_desc.max_length,g=0;for(a=0;a<=b;a++)t.bl_count[a]=0;for(l[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;n<v;n++)(a=l[2*l[2*(r=t.heap[n])+1]+1]+1)>p&&(a=p,g++),l[2*r+1]=a,r>u||(t.bl_count[a]++,o=0,r>=d&&(o=f[r-d]),s=l[2*r],t.opt_len+=s*(a+o),h&&(t.static_len+=s*(c[2*r+1]+o)));if(0!==g){do{for(a=p-1;0===t.bl_count[a];)a--;t.bl_count[a]--,t.bl_count[a+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(a=p;0!==a;a--)for(r=t.bl_count[a];0!==r;)(i=t.heap[--n])>u||(l[2*i+1]!==a&&(t.opt_len+=(a-l[2*i+1])*l[2*i],l[2*i+1]=a),r--)}}(t,e),H(a,u,t.bl_count)}function Q(t,e,n){var r,i,a=-1,o=e[1],s=0,l=7,u=4;for(0===o&&(l=138,u=3),e[2*(n+1)+1]=65535,r=0;r<=n;r++)i=o,o=e[2*(r+1)+1],++s<l&&i===o||(s<u?t.bl_tree[2*i]+=s:0!==i?(i!==a&&t.bl_tree[2*i]++,t.bl_tree[2*S]++):s<=10?t.bl_tree[2*_]++:t.bl_tree[2*k]++,s=0,a=i,0===o?(l=138,u=3):i===o?(l=6,u=3):(l=7,u=4))}function $(t,e,n){var r,i,a=-1,o=e[1],s=0,l=7,u=4;for(0===o&&(l=138,u=3),r=0;r<=n;r++)if(i=o,o=e[2*(r+1)+1],!(++s<l&&i===o)){if(s<u)for(;V(t,i,t.bl_tree),0!=--s;);else 0!==i?(i!==a&&(V(t,i,t.bl_tree),s--),V(t,S,t.bl_tree),G(t,s-3,2)):s<=10?(V(t,_,t.bl_tree),G(t,s-3,3)):(V(t,k,t.bl_tree),G(t,s-11,7));s=0,a=i,0===o?(l=138,u=3):i===o?(l=6,u=3):(l=7,u=4)}}l(D);var tt=!1;function et(t,e,n,i){var a,o,s,l;G(t,(u<<1)+(i?1:0),3),o=e,s=n,l=!0,Z(a=t),l&&(W(a,s),W(a,~s)),r.arraySet(a.pending_buf,a.window,o,s,a.pending),a.pending+=s}e._tr_init=function(t){tt||(function(){var t,e,n,r,i,a=new Array(b+1);for(n=0,r=0;r<f-1;r++)for(B[r]=n,t=0;t<1<<C[r];t++)L[n++]=r;for(L[n-1]=r,i=0,r=0;r<16;r++)for(D[r]=i,t=0;t<1<<A[r];t++)O[i++]=r;for(i>>=7;r<g;r++)for(D[r]=i<<7,t=0;t<1<<A[r]-7;t++)O[256+i++]=r;for(e=0;e<=b;e++)a[e]=0;for(t=0;t<=143;)I[2*t+1]=8,t++,a[8]++;for(;t<=255;)I[2*t+1]=9,t++,a[9]++;for(;t<=279;)I[2*t+1]=7,t++,a[7]++;for(;t<=287;)I[2*t+1]=8,t++,a[8]++;for(H(I,p+1,a),t=0;t<g;t++)T[2*t+1]=5,T[2*t]=j(t,5);M=new z(I,C,d+1,p,b),R=new z(T,A,0,g,b),F=new z(new Array(0),P,0,y,w)}(),tt=!0),t.l_desc=new N(t.dyn_ltree,M),t.d_desc=new N(t.dyn_dtree,R),t.bl_desc=new N(t.bl_tree,F),t.bi_buf=0,t.bi_valid=0,q(t)},e._tr_stored_block=et,e._tr_flush_block=function(t,e,n,r){var l,u,f=0;t.level>0?(t.strm.data_type===s&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return a;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return o;for(e=32;e<d;e++)if(0!==t.dyn_ltree[2*e])return o;return a}(t)),J(t,t.l_desc),J(t,t.d_desc),f=function(t){var e;for(Q(t,t.dyn_ltree,t.l_desc.max_code),Q(t,t.dyn_dtree,t.d_desc.max_code),J(t,t.bl_desc),e=y-1;e>=3&&0===t.bl_tree[2*E[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),l=t.opt_len+3+7>>>3,(u=t.static_len+3+7>>>3)<=l&&(l=u)):l=u=n+5,n+4<=l&&-1!==e?et(t,e,n,r):t.strategy===i||u===l?(G(t,(c<<1)+(r?1:0),3),K(t,I,T)):(G(t,(h<<1)+(r?1:0),3),function(t,e,n,r){var i;for(G(t,e-257,5),G(t,n-1,5),G(t,r-4,4),i=0;i<r;i++)G(t,t.bl_tree[2*E[i]+1],3);$(t,t.dyn_ltree,e-1),$(t,t.dyn_dtree,n-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,f+1),K(t,t.dyn_ltree,t.dyn_dtree)),q(t),r&&Z(t)},e._tr_tally=function(t,e,n){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(L[n]+d+1)]++,t.dyn_dtree[2*U(e)]++),t.last_lit===t.lit_bufsize-1},e._tr_align=function(t){var e;G(t,c<<1,3),V(t,x,I),16===(e=t).bi_valid?(W(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},function(t,e,n){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},function(t,e,n){"use strict";var r=n(34),i=n(89),a=n(90),o=n(158),s=n(159),l=0,u=1,c=2,h=4,f=5,d=6,p=0,g=1,y=2,v=-2,b=-3,m=-4,w=-5,x=8,S=1,_=2,k=3,C=4,A=5,P=6,E=7,I=8,T=9,O=10,L=11,B=12,M=13,R=14,F=15,D=16,z=17,N=18,U=19,W=20,G=21,V=22,j=23,H=24,q=25,Z=26,Y=27,X=28,K=29,J=30,Q=31,$=32,tt=852,et=592,nt=15;function rt(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function it(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=S,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new r.Buf32(tt),e.distcode=e.distdyn=new r.Buf32(et),e.sane=1,e.back=-1,p):v}function at(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,it(t)):v}function ot(t,e){var n,r;return t&&t.state?(r=t.state,e<0?(n=0,e=-e):(n=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?v:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=n,r.wbits=e,at(t))):v}function st(t,e){var n,i;return t?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},t.state=i,i.window=null,(n=ot(t,e))!==p&&(t.state=null),n):v}var lt,ut,ct=!0;function ht(t){if(ct){var e;for(lt=new r.Buf32(512),ut=new r.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(s(u,t.lens,0,288,lt,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;s(c,t.lens,0,32,ut,0,t.work,{bits:5}),ct=!1}t.lencode=lt,t.lenbits=9,t.distcode=ut,t.distbits=5}function ft(t,e,n,i){var a,o=t.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new r.Buf8(o.wsize)),i>=o.wsize?(r.arraySet(o.window,e,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>i&&(a=i),r.arraySet(o.window,e,n-i,a,o.wnext),(i-=a)?(r.arraySet(o.window,e,n-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=a))),0}e.inflateReset=at,e.inflateReset2=ot,e.inflateResetKeep=it,e.inflateInit=function(t){return st(t,nt)},e.inflateInit2=st,e.inflate=function(t,e){var n,tt,et,nt,it,at,ot,st,lt,ut,ct,dt,pt,gt,yt,vt,bt,mt,wt,xt,St,_t,kt,Ct,At=0,Pt=new r.Buf8(4),Et=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return v;(n=t.state).mode===B&&(n.mode=M),it=t.next_out,et=t.output,ot=t.avail_out,nt=t.next_in,tt=t.input,at=t.avail_in,st=n.hold,lt=n.bits,ut=at,ct=ot,_t=p;t:for(;;)switch(n.mode){case S:if(0===n.wrap){n.mode=M;break}for(;lt<16;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(2&n.wrap&&35615===st){n.check=0,Pt[0]=255&st,Pt[1]=st>>>8&255,n.check=a(n.check,Pt,2,0),st=0,lt=0,n.mode=_;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&st)<<8)+(st>>8))%31){t.msg="incorrect header check",n.mode=J;break}if((15&st)!==x){t.msg="unknown compression method",n.mode=J;break}if(lt-=4,St=8+(15&(st>>>=4)),0===n.wbits)n.wbits=St;else if(St>n.wbits){t.msg="invalid window size",n.mode=J;break}n.dmax=1<<St,t.adler=n.check=1,n.mode=512&st?O:B,st=0,lt=0;break;case _:for(;lt<16;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(n.flags=st,(255&n.flags)!==x){t.msg="unknown compression method",n.mode=J;break}if(57344&n.flags){t.msg="unknown header flags set",n.mode=J;break}n.head&&(n.head.text=st>>8&1),512&n.flags&&(Pt[0]=255&st,Pt[1]=st>>>8&255,n.check=a(n.check,Pt,2,0)),st=0,lt=0,n.mode=k;case k:for(;lt<32;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.head&&(n.head.time=st),512&n.flags&&(Pt[0]=255&st,Pt[1]=st>>>8&255,Pt[2]=st>>>16&255,Pt[3]=st>>>24&255,n.check=a(n.check,Pt,4,0)),st=0,lt=0,n.mode=C;case C:for(;lt<16;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.head&&(n.head.xflags=255&st,n.head.os=st>>8),512&n.flags&&(Pt[0]=255&st,Pt[1]=st>>>8&255,n.check=a(n.check,Pt,2,0)),st=0,lt=0,n.mode=A;case A:if(1024&n.flags){for(;lt<16;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.length=st,n.head&&(n.head.extra_len=st),512&n.flags&&(Pt[0]=255&st,Pt[1]=st>>>8&255,n.check=a(n.check,Pt,2,0)),st=0,lt=0}else n.head&&(n.head.extra=null);n.mode=P;case P:if(1024&n.flags&&((dt=n.length)>at&&(dt=at),dt&&(n.head&&(St=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),r.arraySet(n.head.extra,tt,nt,dt,St)),512&n.flags&&(n.check=a(n.check,tt,dt,nt)),at-=dt,nt+=dt,n.length-=dt),n.length))break t;n.length=0,n.mode=E;case E:if(2048&n.flags){if(0===at)break t;for(dt=0;St=tt[nt+dt++],n.head&&St&&n.length<65536&&(n.head.name+=String.fromCharCode(St)),St&&dt<at;);if(512&n.flags&&(n.check=a(n.check,tt,dt,nt)),at-=dt,nt+=dt,St)break t}else n.head&&(n.head.name=null);n.length=0,n.mode=I;case I:if(4096&n.flags){if(0===at)break t;for(dt=0;St=tt[nt+dt++],n.head&&St&&n.length<65536&&(n.head.comment+=String.fromCharCode(St)),St&&dt<at;);if(512&n.flags&&(n.check=a(n.check,tt,dt,nt)),at-=dt,nt+=dt,St)break t}else n.head&&(n.head.comment=null);n.mode=T;case T:if(512&n.flags){for(;lt<16;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(st!==(65535&n.check)){t.msg="header crc mismatch",n.mode=J;break}st=0,lt=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=B;break;case O:for(;lt<32;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}t.adler=n.check=rt(st),st=0,lt=0,n.mode=L;case L:if(0===n.havedict)return t.next_out=it,t.avail_out=ot,t.next_in=nt,t.avail_in=at,n.hold=st,n.bits=lt,y;t.adler=n.check=1,n.mode=B;case B:if(e===f||e===d)break t;case M:if(n.last){st>>>=7&lt,lt-=7&lt,n.mode=Y;break}for(;lt<3;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}switch(n.last=1&st,lt-=1,3&(st>>>=1)){case 0:n.mode=R;break;case 1:if(ht(n),n.mode=W,e===d){st>>>=2,lt-=2;break t}break;case 2:n.mode=z;break;case 3:t.msg="invalid block type",n.mode=J}st>>>=2,lt-=2;break;case R:for(st>>>=7&lt,lt-=7&lt;lt<32;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if((65535&st)!=(st>>>16^65535)){t.msg="invalid stored block lengths",n.mode=J;break}if(n.length=65535&st,st=0,lt=0,n.mode=F,e===d)break t;case F:n.mode=D;case D:if(dt=n.length){if(dt>at&&(dt=at),dt>ot&&(dt=ot),0===dt)break t;r.arraySet(et,tt,nt,dt,it),at-=dt,nt+=dt,ot-=dt,it+=dt,n.length-=dt;break}n.mode=B;break;case z:for(;lt<14;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(n.nlen=257+(31&st),st>>>=5,lt-=5,n.ndist=1+(31&st),st>>>=5,lt-=5,n.ncode=4+(15&st),st>>>=4,lt-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=J;break}n.have=0,n.mode=N;case N:for(;n.have<n.ncode;){for(;lt<3;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.lens[Et[n.have++]]=7&st,st>>>=3,lt-=3}for(;n.have<19;)n.lens[Et[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,kt={bits:n.lenbits},_t=s(l,n.lens,0,19,n.lencode,0,n.work,kt),n.lenbits=kt.bits,_t){t.msg="invalid code lengths set",n.mode=J;break}n.have=0,n.mode=U;case U:for(;n.have<n.nlen+n.ndist;){for(;vt=(At=n.lencode[st&(1<<n.lenbits)-1])>>>16&255,bt=65535&At,!((yt=At>>>24)<=lt);){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(bt<16)st>>>=yt,lt-=yt,n.lens[n.have++]=bt;else{if(16===bt){for(Ct=yt+2;lt<Ct;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(st>>>=yt,lt-=yt,0===n.have){t.msg="invalid bit length repeat",n.mode=J;break}St=n.lens[n.have-1],dt=3+(3&st),st>>>=2,lt-=2}else if(17===bt){for(Ct=yt+3;lt<Ct;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}lt-=yt,St=0,dt=3+(7&(st>>>=yt)),st>>>=3,lt-=3}else{for(Ct=yt+7;lt<Ct;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}lt-=yt,St=0,dt=11+(127&(st>>>=yt)),st>>>=7,lt-=7}if(n.have+dt>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=J;break}for(;dt--;)n.lens[n.have++]=St}}if(n.mode===J)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=J;break}if(n.lenbits=9,kt={bits:n.lenbits},_t=s(u,n.lens,0,n.nlen,n.lencode,0,n.work,kt),n.lenbits=kt.bits,_t){t.msg="invalid literal/lengths set",n.mode=J;break}if(n.distbits=6,n.distcode=n.distdyn,kt={bits:n.distbits},_t=s(c,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,kt),n.distbits=kt.bits,_t){t.msg="invalid distances set",n.mode=J;break}if(n.mode=W,e===d)break t;case W:n.mode=G;case G:if(at>=6&&ot>=258){t.next_out=it,t.avail_out=ot,t.next_in=nt,t.avail_in=at,n.hold=st,n.bits=lt,o(t,ct),it=t.next_out,et=t.output,ot=t.avail_out,nt=t.next_in,tt=t.input,at=t.avail_in,st=n.hold,lt=n.bits,n.mode===B&&(n.back=-1);break}for(n.back=0;vt=(At=n.lencode[st&(1<<n.lenbits)-1])>>>16&255,bt=65535&At,!((yt=At>>>24)<=lt);){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(vt&&0==(240&vt)){for(mt=yt,wt=vt,xt=bt;vt=(At=n.lencode[xt+((st&(1<<mt+wt)-1)>>mt)])>>>16&255,bt=65535&At,!(mt+(yt=At>>>24)<=lt);){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}st>>>=mt,lt-=mt,n.back+=mt}if(st>>>=yt,lt-=yt,n.back+=yt,n.length=bt,0===vt){n.mode=Z;break}if(32&vt){n.back=-1,n.mode=B;break}if(64&vt){t.msg="invalid literal/length code",n.mode=J;break}n.extra=15&vt,n.mode=V;case V:if(n.extra){for(Ct=n.extra;lt<Ct;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.length+=st&(1<<n.extra)-1,st>>>=n.extra,lt-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=j;case j:for(;vt=(At=n.distcode[st&(1<<n.distbits)-1])>>>16&255,bt=65535&At,!((yt=At>>>24)<=lt);){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(0==(240&vt)){for(mt=yt,wt=vt,xt=bt;vt=(At=n.distcode[xt+((st&(1<<mt+wt)-1)>>mt)])>>>16&255,bt=65535&At,!(mt+(yt=At>>>24)<=lt);){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}st>>>=mt,lt-=mt,n.back+=mt}if(st>>>=yt,lt-=yt,n.back+=yt,64&vt){t.msg="invalid distance code",n.mode=J;break}n.offset=bt,n.extra=15&vt,n.mode=H;case H:if(n.extra){for(Ct=n.extra;lt<Ct;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.offset+=st&(1<<n.extra)-1,st>>>=n.extra,lt-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=J;break}n.mode=q;case q:if(0===ot)break t;if(dt=ct-ot,n.offset>dt){if((dt=n.offset-dt)>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=J;break}dt>n.wnext?(dt-=n.wnext,pt=n.wsize-dt):pt=n.wnext-dt,dt>n.length&&(dt=n.length),gt=n.window}else gt=et,pt=it-n.offset,dt=n.length;for(dt>ot&&(dt=ot),ot-=dt,n.length-=dt;et[it++]=gt[pt++],--dt;);0===n.length&&(n.mode=G);break;case Z:if(0===ot)break t;et[it++]=n.length,ot--,n.mode=G;break;case Y:if(n.wrap){for(;lt<32;){if(0===at)break t;at--,st|=tt[nt++]<<lt,lt+=8}if(ct-=ot,t.total_out+=ct,n.total+=ct,ct&&(t.adler=n.check=n.flags?a(n.check,et,ct,it-ct):i(n.check,et,ct,it-ct)),ct=ot,(n.flags?st:rt(st))!==n.check){t.msg="incorrect data check",n.mode=J;break}st=0,lt=0}n.mode=X;case X:if(n.wrap&&n.flags){for(;lt<32;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(st!==(4294967295&n.total)){t.msg="incorrect length check",n.mode=J;break}st=0,lt=0}n.mode=K;case K:_t=g;break t;case J:_t=b;break t;case Q:return m;case $:default:return v}return t.next_out=it,t.avail_out=ot,t.next_in=nt,t.avail_in=at,n.hold=st,n.bits=lt,(n.wsize||ct!==t.avail_out&&n.mode<J&&(n.mode<Y||e!==h))&&ft(t,t.output,t.next_out,ct-t.avail_out)?(n.mode=Q,m):(ut-=t.avail_in,ct-=t.avail_out,t.total_in+=ut,t.total_out+=ct,n.total+=ct,n.wrap&&ct&&(t.adler=n.check=n.flags?a(n.check,et,ct,t.next_out-ct):i(n.check,et,ct,t.next_out-ct)),t.data_type=n.bits+(n.last?64:0)+(n.mode===B?128:0)+(n.mode===W||n.mode===F?256:0),(0===ut&&0===ct||e===h)&&_t===p&&(_t=w),_t)},e.inflateEnd=function(t){if(!t||!t.state)return v;var e=t.state;return e.window&&(e.window=null),t.state=null,p},e.inflateGetHeader=function(t,e){var n;return t&&t.state?0==(2&(n=t.state).wrap)?v:(n.head=e,e.done=!1,p):v},e.inflateSetDictionary=function(t,e){var n,r=e.length;return t&&t.state?0!==(n=t.state).wrap&&n.mode!==L?v:n.mode===L&&i(1,e,r,0)!==n.check?b:ft(t,e,r,r)?(n.mode=Q,m):(n.havedict=1,p):v},e.inflateInfo="pako inflate (from Nodeca project)"},function(t,e,n){"use strict";t.exports=function(t,e){var n,r,i,a,o,s,l,u,c,h,f,d,p,g,y,v,b,m,w,x,S,_,k,C,A;n=t.state,r=t.next_in,C=t.input,i=r+(t.avail_in-5),a=t.next_out,A=t.output,o=a-(e-t.avail_out),s=a+(t.avail_out-257),l=n.dmax,u=n.wsize,c=n.whave,h=n.wnext,f=n.window,d=n.hold,p=n.bits,g=n.lencode,y=n.distcode,v=(1<<n.lenbits)-1,b=(1<<n.distbits)-1;t:do{p<15&&(d+=C[r++]<<p,p+=8,d+=C[r++]<<p,p+=8),m=g[d&v];e:for(;;){if(d>>>=w=m>>>24,p-=w,0===(w=m>>>16&255))A[a++]=65535&m;else{if(!(16&w)){if(0==(64&w)){m=g[(65535&m)+(d&(1<<w)-1)];continue e}if(32&w){n.mode=12;break t}t.msg="invalid literal/length code",n.mode=30;break t}x=65535&m,(w&=15)&&(p<w&&(d+=C[r++]<<p,p+=8),x+=d&(1<<w)-1,d>>>=w,p-=w),p<15&&(d+=C[r++]<<p,p+=8,d+=C[r++]<<p,p+=8),m=y[d&b];n:for(;;){if(d>>>=w=m>>>24,p-=w,!(16&(w=m>>>16&255))){if(0==(64&w)){m=y[(65535&m)+(d&(1<<w)-1)];continue n}t.msg="invalid distance code",n.mode=30;break t}if(S=65535&m,p<(w&=15)&&(d+=C[r++]<<p,(p+=8)<w&&(d+=C[r++]<<p,p+=8)),(S+=d&(1<<w)-1)>l){t.msg="invalid distance too far back",n.mode=30;break t}if(d>>>=w,p-=w,S>(w=a-o)){if((w=S-w)>c&&n.sane){t.msg="invalid distance too far back",n.mode=30;break t}if(_=0,k=f,0===h){if(_+=u-w,w<x){for(x-=w;A[a++]=f[_++],--w;);_=a-S,k=A}}else if(h<w){if(_+=u+h-w,(w-=h)<x){for(x-=w;A[a++]=f[_++],--w;);if(_=0,h<x){for(x-=w=h;A[a++]=f[_++],--w;);_=a-S,k=A}}}else if(_+=h-w,w<x){for(x-=w;A[a++]=f[_++],--w;);_=a-S,k=A}for(;x>2;)A[a++]=k[_++],A[a++]=k[_++],A[a++]=k[_++],x-=3;x&&(A[a++]=k[_++],x>1&&(A[a++]=k[_++]))}else{for(_=a-S;A[a++]=A[_++],A[a++]=A[_++],A[a++]=A[_++],(x-=3)>2;);x&&(A[a++]=A[_++],x>1&&(A[a++]=A[_++]))}break}}break}}while(r<i&&a<s);r-=x=p>>3,d&=(1<<(p-=x<<3))-1,t.next_in=r,t.next_out=a,t.avail_in=r<i?i-r+5:5-(r-i),t.avail_out=a<s?s-a+257:257-(a-s),n.hold=d,n.bits=p}},function(t,e,n){"use strict";var r=n(34),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(t,e,n,l,u,c,h,f){var d,p,g,y,v,b,m,w,x,S=f.bits,_=0,k=0,C=0,A=0,P=0,E=0,I=0,T=0,O=0,L=0,B=null,M=0,R=new r.Buf16(16),F=new r.Buf16(16),D=null,z=0;for(_=0;_<=15;_++)R[_]=0;for(k=0;k<l;k++)R[e[n+k]]++;for(P=S,A=15;A>=1&&0===R[A];A--);if(P>A&&(P=A),0===A)return u[c++]=20971520,u[c++]=20971520,f.bits=1,0;for(C=1;C<A&&0===R[C];C++);for(P<C&&(P=C),T=1,_=1;_<=15;_++)if(T<<=1,(T-=R[_])<0)return-1;if(T>0&&(0===t||1!==A))return-1;for(F[1]=0,_=1;_<15;_++)F[_+1]=F[_]+R[_];for(k=0;k<l;k++)0!==e[n+k]&&(h[F[e[n+k]]++]=k);if(0===t?(B=D=h,b=19):1===t?(B=i,M-=257,D=a,z-=257,b=256):(B=o,D=s,b=-1),L=0,k=0,_=C,v=c,E=P,I=0,g=-1,y=(O=1<<P)-1,1===t&&O>852||2===t&&O>592)return 1;for(;;){for(m=_-I,h[k]<b?(w=0,x=h[k]):h[k]>b?(w=D[z+h[k]],x=B[M+h[k]]):(w=96,x=0),d=1<<_-I,C=p=1<<E;u[v+(L>>I)+(p-=d)]=m<<24|w<<16|x|0,0!==p;);for(d=1<<_-1;L&d;)d>>=1;if(0!==d?(L&=d-1,L+=d):L=0,k++,0==--R[_]){if(_===A)break;_=e[n+h[k]]}if(_>P&&(L&y)!==g){for(0===I&&(I=P),v+=C,T=1<<(E=_-I);E+I<A&&!((T-=R[E+I])<=0);)E++,T<<=1;if(O+=1<<E,1===t&&O>852||2===t&&O>592)return 1;u[g=L&y]=P<<24|E<<16|v-c|0}}return 0!==L&&(u[v+L]=_-I<<24|64<<16|0),f.bits=P,0}},function(t,e,n){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(t,e){(function(){var e;e=function(){var t,e;function n(n,r){var i,a,o,s,l,u;this.document=n,null==r&&(r={}),this.size=r.size||"letter",this.layout=r.layout||"portrait","number"==typeof r.margin?this.margins={top:r.margin,left:r.margin,bottom:r.margin,right:r.margin}:this.margins=r.margins||t,i=Array.isArray(this.size)?this.size:e[this.size.toUpperCase()],this.width=i["portrait"===this.layout?0:1],this.height=i["portrait"===this.layout?1:0],this.content=this.document.ref(),this.resources=this.document.ref({ProcSet:["PDF","Text","ImageB","ImageC","ImageI"]}),Object.defineProperties(this,{fonts:{get:(u=this,function(){var t;return null!=(t=u.resources.data).Font?t.Font:t.Font={}})},xobjects:{get:(l=this,function(){var t;return null!=(t=l.resources.data).XObject?t.XObject:t.XObject={}})},ext_gstates:{get:(s=this,function(){var t;return null!=(t=s.resources.data).ExtGState?t.ExtGState:t.ExtGState={}})},patterns:{get:(o=this,function(){var t;return null!=(t=o.resources.data).Pattern?t.Pattern:t.Pattern={}})},annotations:{get:(a=this,function(){var t;return null!=(t=a.dictionary.data).Annots?t.Annots:t.Annots=[]})}}),this.dictionary=this.document.ref({Type:"Page",Parent:this.document._root.data.Pages,MediaBox:[0,0,this.width,this.height],Contents:this.content,Resources:this.resources})}return n.prototype.maxY=function(){return this.height-this.margins.bottom},n.prototype.write=function(t){return this.content.write(t)},n.prototype.end=function(){return this.dictionary.end(),this.resources.end(),this.content.end()},t={top:72,left:72,bottom:72,right:72},e={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]},n}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i,a,o;o=n(163),e=o.PDFGradient,r=o.PDFLinearGradient,i=o.PDFRadialGradient,t.exports={initColor:function(){return this._opacityRegistry={},this._opacityCount=0,this._gradCount=0},_normalizeColor:function(t){var n,r;return t instanceof e?t:("string"==typeof t&&("#"===t.charAt(0)?(4===t.length&&(t=t.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i,"#$1$1$2$2$3$3")),n=parseInt(t.slice(1),16),t=[n>>16,n>>8&255,255&n]):a[t]&&(t=a[t])),Array.isArray(t)?(3===t.length?t=function(){var e,n,i;for(i=[],e=0,n=t.length;e<n;e++)r=t[e],i.push(r/255);return i}():4===t.length&&(t=function(){var e,n,i;for(i=[],e=0,n=t.length;e<n;e++)r=t[e],i.push(r/100);return i}()),t):null)},_setColor:function(t,n){var r,i;return!!(t=this._normalizeColor(t))&&(r=n?"SCN":"scn",t instanceof e?(this._setColorSpace("Pattern",n),t.apply(r)):(i=4===t.length?"DeviceCMYK":"DeviceRGB",this._setColorSpace(i,n),t=t.join(" "),this.addContent(t+" "+r)),!0)},_setColorSpace:function(t,e){var n;return n=e?"CS":"cs",this.addContent("/"+t+" "+n)},fillColor:function(t,e){return this._setColor(t,!1)&&this.fillOpacity(e),this._fillColor=[t,e],this},strokeColor:function(t,e){return this._setColor(t,!0)&&this.strokeOpacity(e),this},opacity:function(t){return this._doOpacity(t,t),this},fillOpacity:function(t){return this._doOpacity(t,null),this},strokeOpacity:function(t){return this._doOpacity(null,t),this},_doOpacity:function(t,e){var n,r,i,a;if(null!=t||null!=e)return null!=t&&(t=Math.max(0,Math.min(1,t))),null!=e&&(e=Math.max(0,Math.min(1,e))),r=t+"_"+e,this._opacityRegistry[r]?(n=(a=this._opacityRegistry[r])[0],i=a[1]):(n={Type:"ExtGState"},null!=t&&(n.ca=t),null!=e&&(n.CA=e),(n=this.ref(n)).end(),i="Gs"+ ++this._opacityCount,this._opacityRegistry[r]=[n,i]),this.page.ext_gstates[i]=n,this.addContent("/"+i+" gs")},linearGradient:function(t,e,n,i){return new r(this,t,e,n,i)},radialGradient:function(t,e,n,r,a,o){return new i(this,t,e,n,r,a,o)}},a={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}).call(this)},function(t,e){(function(){var e,n,r,i=function(t,e){for(var n in e)a.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}return r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype,t},a={}.hasOwnProperty;e=function(){function t(t){this.doc=t,this.stops=[],this.embedded=!1,this.transform=[1,0,0,1,0,0],this._colorSpace="DeviceRGB"}return t.prototype.stop=function(t,e,n){return null==n&&(n=1),n=Math.max(0,Math.min(1,n)),this.stops.push([t,this.doc._normalizeColor(e),n]),this},t.prototype.setTransform=function(t,e,n,r,i,a){return this.transform=[t,e,n,r,i,a],this},t.prototype.embed=function(t){var e,n,r,i,a,o,s,l,u,c,h,f,d,p,g,y,v,b,m,w;if(0!==this.stops.length){for(this.embedded=!0,this.matrix=t,(c=this.stops[this.stops.length-1])[0]<1&&this.stops.push([1,c[1],c[2]]),e=[],n=[],m=[],s=l=0,g=this.stops.length-1;0<=g?l<g:l>g;s=0<=g?++l:--l)n.push(0,1),s+2!==this.stops.length&&e.push(this.stops[s+1][0]),r=this.doc.ref({FunctionType:2,Domain:[0,1],C0:this.stops[s+0][1],C1:this.stops[s+1][1],N:1}),m.push(r),r.end();if(1===m.length?r=m[0]:(r=this.doc.ref({FunctionType:3,Domain:[0,1],Functions:m,Bounds:e,Encode:n})).end(),this.id="Sh"+ ++this.doc._gradCount,(v=this.shader(r)).end(),(p=this.doc.ref({Type:"Pattern",PatternType:2,Shading:v,Matrix:function(){var t,e,n,r;for(r=[],t=0,e=(n=this.matrix).length;t<e;t++)w=n[t],r.push(+w.toFixed(5));return r}.call(this)})).end(),this.stops.some(function(t){return t[2]<1})){for((a=this.opacityGradient())._colorSpace="DeviceGray",u=0,h=(y=this.stops).length;u<h;u++)b=y[u],a.stop(b[0],[b[2]]);a=a.embed(this.matrix),d=[0,0,this.doc.page.width,this.doc.page.height],(i=this.doc.ref({Type:"XObject",Subtype:"Form",FormType:1,BBox:d,Group:{Type:"Group",S:"Transparency",CS:"DeviceGray"},Resources:{ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],Pattern:{Sh1:a}}})).write("/Pattern cs /Sh1 scn"),i.end(d.join(" ")+" re f"),(o=this.doc.ref({Type:"ExtGState",SMask:{Type:"Mask",S:"Luminosity",G:i}})).end(),(f=this.doc.ref({Type:"Pattern",PatternType:1,PaintType:1,TilingType:2,BBox:d,XStep:d[2],YStep:d[3],Resources:{ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],Pattern:{Sh1:p},ExtGState:{Gs1:o}}})).write("/Gs1 gs /Pattern cs /Sh1 scn"),f.end(d.join(" ")+" re f"),this.doc.page.patterns[this.id]=f}else this.doc.page.patterns[this.id]=p;return p}},t.prototype.apply=function(t){var e,n,r,i,a,o,s,l,u,c,h,f,d,p,g;return i=(p=this.doc._ctm.slice())[0],a=p[1],l=p[2],h=p[3],f=p[4],d=p[5],r=[i*(o=(g=this.transform)[0])+l*(s=g[1]),a*o+h*s,i*(u=g[2])+l*(c=g[3]),a*u+h*c,i*(e=g[4])+l*(n=g[5])+f,a*e+h*n+d],this.embedded&&r.join(" ")===this.matrix.join(" ")||this.embed(r),this.doc.addContent("/"+this.id+" "+t)},t}(),n=function(t){function n(t,e,r,i,a){this.doc=t,this.x1=e,this.y1=r,this.x2=i,this.y2=a,n.__super__.constructor.apply(this,arguments)}return i(n,e),n.prototype.shader=function(t){return this.doc.ref({ShadingType:2,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.x2,this.y2],Function:t,Extend:[!0,!0]})},n.prototype.opacityGradient=function(){return new n(this.doc,this.x1,this.y1,this.x2,this.y2)},n}(),r=function(t){function n(t,e,r,i,a,o,s){this.doc=t,this.x1=e,this.y1=r,this.r1=i,this.x2=a,this.y2=o,this.r2=s,n.__super__.constructor.apply(this,arguments)}return i(n,e),n.prototype.shader=function(t){return this.doc.ref({ShadingType:3,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.r1,this.x2,this.y2,this.r2],Function:t,Extend:[!0,!0]})},n.prototype.opacityGradient=function(){return new n(this.doc,this.x1,this.y1,this.r1,this.x2,this.y2,this.r2)},n}(),t.exports={PDFGradient:e,PDFLinearGradient:n,PDFRadialGradient:r}}).call(this)},function(t,e,n){(function(){var e,r,i,a=[].slice;r=n(165),i=n(26).number,e=(Math.sqrt(2)-1)/3*4,t.exports={initVector:function(){return this._ctm=[1,0,0,1,0,0],this._ctmStack=[]},save:function(){return this._ctmStack.push(this._ctm.slice()),this.addContent("q")},restore:function(){return this._ctm=this._ctmStack.pop()||[1,0,0,1,0,0],this.addContent("Q")},closePath:function(){return this.addContent("h")},lineWidth:function(t){return this.addContent(i(t)+" w")},_CAP_STYLES:{BUTT:0,ROUND:1,SQUARE:2},lineCap:function(t){return"string"==typeof t&&(t=this._CAP_STYLES[t.toUpperCase()]),this.addContent(t+" J")},_JOIN_STYLES:{MITER:0,ROUND:1,BEVEL:2},lineJoin:function(t){return"string"==typeof t&&(t=this._JOIN_STYLES[t.toUpperCase()]),this.addContent(t+" j")},miterLimit:function(t){return this.addContent(i(t)+" M")},dash:function(t,e){var n,r,a,o;return null==e&&(e={}),null==t?this:Array.isArray(t)?(t=function(){var e,n,r;for(r=[],e=0,n=t.length;e<n;e++)o=t[e],r.push(i(o));return r}().join(" "),n=e.phase||0,this.addContent("["+t+"] "+i(n)+" d")):(a=null!=(r=e.space)?r:t,n=e.phase||0,this.addContent("["+i(t)+" "+i(a)+"] "+i(n)+" d"))},undash:function(){return this.addContent("[] 0 d")},moveTo:function(t,e){return this.addContent(i(t)+" "+i(e)+" m")},lineTo:function(t,e){return this.addContent(i(t)+" "+i(e)+" l")},bezierCurveTo:function(t,e,n,r,a,o){return this.addContent(i(t)+" "+i(e)+" "+i(n)+" "+i(r)+" "+i(a)+" "+i(o)+" c")},quadraticCurveTo:function(t,e,n,r){return this.addContent(i(t)+" "+i(e)+" "+i(n)+" "+i(r)+" v")},rect:function(t,e,n,r){return this.addContent(i(t)+" "+i(e)+" "+i(n)+" "+i(r)+" re")},roundedRect:function(t,n,r,i,a){var o;return null==a&&(a=0),o=(a=Math.min(a,.5*r,.5*i))*(1-e),this.moveTo(t+a,n),this.lineTo(t+r-a,n),this.bezierCurveTo(t+r-o,n,t+r,n+o,t+r,n+a),this.lineTo(t+r,n+i-a),this.bezierCurveTo(t+r,n+i-o,t+r-o,n+i,t+r-a,n+i),this.lineTo(t+a,n+i),this.bezierCurveTo(t+o,n+i,t,n+i-o,t,n+i-a),this.lineTo(t,n+a),this.bezierCurveTo(t,n+o,t+o,n,t+a,n),this.closePath()},ellipse:function(t,n,r,i){var a,o,s,l,u,c;return null==i&&(i=r),a=r*e,o=i*e,s=(t-=r)+2*r,u=(n-=i)+2*i,l=t+r,c=n+i,this.moveTo(t,c),this.bezierCurveTo(t,c-o,l-a,n,l,n),this.bezierCurveTo(l+a,n,s,c-o,s,c),this.bezierCurveTo(s,c+o,l+a,u,l,u),this.bezierCurveTo(l-a,u,t,c+o,t,c),this.closePath()},circle:function(t,e,n){return this.ellipse(t,e,n)},arc:function(t,n,r,i,a,o){var s,l,u,c,h,f,d,p,g,y,v,b,m,w,x,S,_;for(null==o&&(o=!1),l=2*Math.PI,s=.5*Math.PI,y=a-i,Math.abs(y)>l?y=l:0!==y&&o!==y<0&&(y=(o?-1:1)*l+y),m=(_=y/(x=Math.ceil(Math.abs(y)/s)))/s*e*r,g=i,v=-Math.sin(g)*m,b=Math.cos(g)*m,u=t+Math.cos(g)*r,c=n+Math.sin(g)*r,this.moveTo(u,c),w=0,S=x;0<=S?w<S:w>S;0<=S?++w:--w)h=u+v,f=c+b,g+=_,u=t+Math.cos(g)*r,c=n+Math.sin(g)*r,d=u-(v=-Math.sin(g)*m),p=c-(b=Math.cos(g)*m),this.bezierCurveTo(h,f,d,p,u,c);return this},polygon:function(){var t,e,n,r;for(r=1<=arguments.length?a.call(arguments,0):[],this.moveTo.apply(this,r.shift()),t=0,e=r.length;t<e;t++)n=r[t],this.lineTo.apply(this,n);return this.closePath()},path:function(t){return r.apply(this,t),this},_windingRule:function(t){return/even-?odd/.test(t)?"*":""},fill:function(t,e){return/(even-?odd)|(non-?zero)/.test(t)&&(e=t,t=null),t&&this.fillColor(t),this.addContent("f"+this._windingRule(e))},stroke:function(t){return t&&this.strokeColor(t),this.addContent("S")},fillAndStroke:function(t,e,n){var r;return null==e&&(e=t),(r=/(even-?odd)|(non-?zero)/).test(t)&&(n=t,t=null),r.test(e)&&(n=e,e=t),t&&(this.fillColor(t),this.strokeColor(e)),this.addContent("B"+this._windingRule(n))},clip:function(t){return this.addContent("W"+this._windingRule(t)+" n")},transform:function(t,e,n,r,a,o){var s,l,u,c,h,f,d,p,g;return l=(s=this._ctm)[0],u=s[1],c=s[2],h=s[3],f=s[4],d=s[5],s[0]=l*t+c*e,s[1]=u*t+h*e,s[2]=l*n+c*r,s[3]=u*n+h*r,s[4]=l*a+c*o+f,s[5]=u*a+h*o+d,g=function(){var s,l,u,c;for(c=[],s=0,l=(u=[t,e,n,r,a,o]).length;s<l;s++)p=u[s],c.push(i(p));return c}().join(" "),this.addContent(g+" cm")},translate:function(t,e){return this.transform(1,0,0,1,t,e)},rotate:function(t,e){var n,r,i,a,o,s,l;return null==e&&(e={}),r=t*Math.PI/180,n=Math.cos(r),a=Math.sin(r),o=s=0,null!=e.origin&&(l=(o=(i=e.origin)[0])*a+(s=i[1])*n,o-=o*n-s*a,s-=l),this.transform(n,a,-a,n,o,s)},scale:function(t,e,n){var r,i,a;return null==e&&(e=t),null==n&&(n={}),"object"==typeof e&&(n=e,e=t),i=a=0,null!=n.origin&&(i=(r=n.origin)[0],a=r[1],i-=t*i,a-=e*a),this.transform(t,0,0,e,i,a)}}}).call(this)},function(t,e){(function(){var e;e=function(){var t,e,n,r,i,a,o,s,l,u,c,h,f;function d(){}return d.apply=function(e,n){var r;return r=a(n),t(r,e)},i={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0},a=function(t){var e,n,r,a,o,s,l,u,c;for(c=[],e=[],a="",o=!1,u=0,s=0,l=t.length;s<l;s++)if(n=t[s],null!=i[n])u=i[n],r&&(a.length>0&&(e[e.length]=+a),c[c.length]={cmd:r,args:e},e=[],a="",o=!1),r=n;else if(" "===n||","===n||"-"===n&&a.length>0&&"e"!==a[a.length-1]||"."===n&&o){if(0===a.length)continue;e.length===u?(c[c.length]={cmd:r,args:e},e=[+a],"M"===r&&(r="L"),"m"===r&&(r="l")):e[e.length]=+a,o="."===n,a="-"===n||"."===n?n:""}else a+=n,"."===n&&(o=!0);return a.length>0&&(e.length===u?(c[c.length]={cmd:r,args:e},e=[+a],"M"===r&&(r="L"),"m"===r&&(r="l")):e[e.length]=+a),c[c.length]={cmd:r,args:e},c},n=r=o=s=h=f=0,t=function(t,e){var i,a,u,c,d;for(n=r=o=s=h=f=0,a=u=0,c=t.length;u<c;a=++u)i=t[a],"function"==typeof l[d=i.cmd]&&l[d](e,i.args);return n=r=o=s=0},l={M:function(t,e){return n=e[0],r=e[1],o=s=null,h=n,f=r,t.moveTo(n,r)},m:function(t,e){return n+=e[0],r+=e[1],o=s=null,h=n,f=r,t.moveTo(n,r)},C:function(t,e){return n=e[4],r=e[5],o=e[2],s=e[3],t.bezierCurveTo.apply(t,e)},c:function(t,e){return t.bezierCurveTo(e[0]+n,e[1]+r,e[2]+n,e[3]+r,e[4]+n,e[5]+r),o=n+e[2],s=r+e[3],n+=e[4],r+=e[5]},S:function(t,e){return null===o&&(o=n,s=r),t.bezierCurveTo(n-(o-n),r-(s-r),e[0],e[1],e[2],e[3]),o=e[0],s=e[1],n=e[2],r=e[3]},s:function(t,e){return null===o&&(o=n,s=r),t.bezierCurveTo(n-(o-n),r-(s-r),n+e[0],r+e[1],n+e[2],r+e[3]),o=n+e[0],s=r+e[1],n+=e[2],r+=e[3]},Q:function(t,e){return o=e[0],s=e[1],n=e[2],r=e[3],t.quadraticCurveTo(e[0],e[1],n,r)},q:function(t,e){return t.quadraticCurveTo(e[0]+n,e[1]+r,e[2]+n,e[3]+r),o=n+e[0],s=r+e[1],n+=e[2],r+=e[3]},T:function(t,e){return null===o?(o=n,s=r):(o=n-(o-n),s=r-(s-r)),t.quadraticCurveTo(o,s,e[0],e[1]),o=n-(o-n),s=r-(s-r),n=e[0],r=e[1]},t:function(t,e){return null===o?(o=n,s=r):(o=n-(o-n),s=r-(s-r)),t.quadraticCurveTo(o,s,n+e[0],r+e[1]),n+=e[0],r+=e[1]},A:function(t,e){return c(t,n,r,e),n=e[5],r=e[6]},a:function(t,e){return e[5]+=n,e[6]+=r,c(t,n,r,e),n=e[5],r=e[6]},L:function(t,e){return n=e[0],r=e[1],o=s=null,t.lineTo(n,r)},l:function(t,e){return n+=e[0],r+=e[1],o=s=null,t.lineTo(n,r)},H:function(t,e){return n=e[0],o=s=null,t.lineTo(n,r)},h:function(t,e){return n+=e[0],o=s=null,t.lineTo(n,r)},V:function(t,e){return r=e[0],o=s=null,t.lineTo(n,r)},v:function(t,e){return r+=e[0],o=s=null,t.lineTo(n,r)},Z:function(t){return t.closePath(),n=h,r=f},z:function(t){return t.closePath(),n=h,r=f}},c=function(t,n,r,i){var a,o,s,l,c,h,f,d,p,g,y,v,b;for(p=i[0],g=i[1],d=i[2],c=i[3],b=i[4],o=i[5],s=i[6],f=[],l=0,h=(v=e(o,s,p,g,c,b,d,n,r)).length;l<h;l++)y=v[l],a=u.apply(null,y),f.push(t.bezierCurveTo.apply(t,a));return f},e=function(t,e,n,r,i,a,l,u,c){var h,f,d,p,g,y,v,b,m,w,x,S,_,k,C,A,P,E,I,T,O,L,B,M,R;for(C=l*(Math.PI/180),k=Math.sin(C),g=Math.cos(C),n=Math.abs(n),r=Math.abs(r),(b=(o=g*(u-t)*.5+k*(c-e)*.5)*o/(n*n)+(s=g*(c-e)*.5-k*(u-t)*.5)*s/(r*r))>1&&(n*=b=Math.sqrt(b),r*=b),(_=1/(((O=(h=g/n)*t+(f=k/n)*e)-(T=h*u+f*c))*(O-T)+((M=(d=-k/r)*t+(p=g/r)*e)-(B=d*u+p*c))*(M-B))-.25)<0&&(_=0),S=Math.sqrt(_),a===i&&(S=-S),L=.5*(T+O)-S*(M-B),R=.5*(B+M)+S*(O-T),A=Math.atan2(B-R,T-L),(I=Math.atan2(M-R,O-L)-A)<0&&1===a?I+=2*Math.PI:I>0&&0===a&&(I-=2*Math.PI),w=[],y=v=0,m=x=Math.ceil(Math.abs(I/(.5*Math.PI+.001)));0<=m?v<m:v>m;y=0<=m?++v:--v)P=A+y*I/x,E=A+(y+1)*I/x,w[y]=[L,R,P,E,n,r,k,g];return w},u=function(t,e,n,r,i,a,o,s){var l,u,c,h,f,d,p,g,y,v,b,m;return l=s*i,u=-o*a,c=o*i,h=s*a,d=.5*(r-n),f=8/3*Math.sin(.5*d)*Math.sin(.5*d)/Math.sin(d),p=t+Math.cos(n)-f*Math.sin(n),v=e+Math.sin(n)+f*Math.cos(n),y=t+Math.cos(r),m=e+Math.sin(r),[l*p+u*v,c*p+h*v,l*(g=y+f*Math.sin(r))+u*(b=m-f*Math.cos(r)),c*g+h*b,l*y+u*m,c*y+h*m]},d}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e;e=n(50),t.exports={initFonts:function(){this._fontFamilies={},this._fontCount=0,this._fontSize=12,this._font=null,this._registeredFonts={}},font:function(t,n,r){var i,a,o,s;return"number"==typeof n&&(r=n,n=null),"string"==typeof t&&this._registeredFonts[t]?(i=t,t=(s=this._registeredFonts[t]).src,n=s.family):"string"!=typeof(i=n||t)&&(i=null),null!=r&&this.fontSize(r),(a=this._fontFamilies[i])?(this._font=a,this):(o="F"+ ++this._fontCount,this._font=e.open(this,t,n,o),(a=this._fontFamilies[this._font.name])?(this._font=a,this):(i&&(this._fontFamilies[i]=this._font),this._font.name&&(this._fontFamilies[this._font.name]=this._font),this))},fontSize:function(t){return this._fontSize=t,this},currentLineHeight:function(t){return null==t&&(t=!1),this._font.lineHeight(this._fontSize,t)},registerFont:function(t,e,n){return this._registeredFonts[t]={src:e,family:n},this}}}).call(this)},function(t,e,n){"use strict";(function(e,r){function i(t){return t&&"object"==typeof t&&"default"in t?t.default:t}var a=i(n(168)),o=i(n(197)),s=i(n(60)),l=i(n(209)),u=i(n(212)),c=i(n(69)),h=i(n(74)),f=i(n(106)),d=i(n(107)),p=i(n(225)),g=i(n(236)),y=i(n(237)),v=n(12),b=i(n(245)),m=i(n(248)),w=i(n(251)),x=i(n(255)),S=i(n(258)),_=i(n(263)),k=i(n(269)),C=i(n(43)),A=i(n(271)),P=i(n(280)),E=i(n(283)),I=i(n(79)),T=i(n(284)),O={logErrors:!1},L=[];function B(t,e,n){if(n.get){var r=n.get;n.get=function(){var t=r.call(this);return h(this,e,{value:t}),t}}else if("function"==typeof n.value){var i=n.value;return{get:function(){var t=new p;function n(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];var a=n.length>0?n[0]:"value";if(t.has(a))return t.get(a);var o=i.apply(this,n);return t.set(a,o),o}return h(this,e,{value:n}),n}}}}O.registerFormat=function(t){L.push(t)},O.openSync=function(t,e){var r=n(8).readFileSync(t);return O.create(r,e)},O.open=function(t,e,r){"function"==typeof e&&(r=e,e=null),n(8).readFile(t,function(t,n){if(t)return r(t);try{var i=O.create(n,e)}catch(t){return r(t)}return r(null,i)})},O.create=function(t,e){for(var n=0;n<L.length;n++){var r=L[n];if(r.probe(t)){var i=new r(new a.DecodeStream(t));return e?i.getFont(e):i}}throw new Error("Unknown font format")};var M=new a.Struct({firstCode:a.uint16,entryCount:a.uint16,idDelta:a.int16,idRangeOffset:a.uint16}),R=new a.Struct({startCharCode:a.uint32,endCharCode:a.uint32,glyphID:a.uint32}),F=new a.Struct({startUnicodeValue:a.uint24,additionalCount:a.uint8}),D=new a.Struct({unicodeValue:a.uint24,glyphID:a.uint16}),z=new a.Array(F,a.uint32),N=new a.Array(D,a.uint32),U=new a.Struct({varSelector:a.uint24,defaultUVS:new a.Pointer(a.uint32,z,{type:"parent"}),nonDefaultUVS:new a.Pointer(a.uint32,N,{type:"parent"})}),W=new a.VersionedStruct(a.uint16,{0:{length:a.uint16,language:a.uint16,codeMap:new a.LazyArray(a.uint8,256)},2:{length:a.uint16,language:a.uint16,subHeaderKeys:new a.Array(a.uint16,256),subHeaderCount:function(t){return Math.max.apply(Math,t.subHeaderKeys)},subHeaders:new a.LazyArray(M,"subHeaderCount"),glyphIndexArray:new a.LazyArray(a.uint16,"subHeaderCount")},4:{length:a.uint16,language:a.uint16,segCountX2:a.uint16,segCount:function(t){return t.segCountX2>>1},searchRange:a.uint16,entrySelector:a.uint16,rangeShift:a.uint16,endCode:new a.LazyArray(a.uint16,"segCount"),reservedPad:new a.Reserved(a.uint16),startCode:new a.LazyArray(a.uint16,"segCount"),idDelta:new a.LazyArray(a.int16,"segCount"),idRangeOffset:new a.LazyArray(a.uint16,"segCount"),glyphIndexArray:new a.LazyArray(a.uint16,function(t){return(t.length-t._currentOffset)/2})},6:{length:a.uint16,language:a.uint16,firstCode:a.uint16,entryCount:a.uint16,glyphIndices:new a.LazyArray(a.uint16,"entryCount")},8:{reserved:new a.Reserved(a.uint16),length:a.uint32,language:a.uint16,is32:new a.LazyArray(a.uint8,8192),nGroups:a.uint32,groups:new a.LazyArray(R,"nGroups")},10:{reserved:new a.Reserved(a.uint16),length:a.uint32,language:a.uint32,firstCode:a.uint32,entryCount:a.uint32,glyphIndices:new a.LazyArray(a.uint16,"numChars")},12:{reserved:new a.Reserved(a.uint16),length:a.uint32,language:a.uint32,nGroups:a.uint32,groups:new a.LazyArray(R,"nGroups")},13:{reserved:new a.Reserved(a.uint16),length:a.uint32,language:a.uint32,nGroups:a.uint32,groups:new a.LazyArray(R,"nGroups")},14:{length:a.uint32,numRecords:a.uint32,varSelectors:new a.LazyArray(U,"numRecords")}}),G=new a.Struct({platformID:a.uint16,encodingID:a.uint16,table:new a.Pointer(a.uint32,W,{type:"parent",lazy:!0})}),V=new a.Struct({version:a.uint16,numSubtables:a.uint16,tables:new a.Array(G,"numSubtables")}),j=new a.Struct({version:a.int32,revision:a.int32,checkSumAdjustment:a.uint32,magicNumber:a.uint32,flags:a.uint16,unitsPerEm:a.uint16,created:new a.Array(a.int32,2),modified:new a.Array(a.int32,2),xMin:a.int16,yMin:a.int16,xMax:a.int16,yMax:a.int16,macStyle:new a.Bitfield(a.uint16,["bold","italic","underline","outline","shadow","condensed","extended"]),lowestRecPPEM:a.uint16,fontDirectionHint:a.int16,indexToLocFormat:a.int16,glyphDataFormat:a.int16}),H=new a.Struct({version:a.int32,ascent:a.int16,descent:a.int16,lineGap:a.int16,advanceWidthMax:a.uint16,minLeftSideBearing:a.int16,minRightSideBearing:a.int16,xMaxExtent:a.int16,caretSlopeRise:a.int16,caretSlopeRun:a.int16,caretOffset:a.int16,reserved:new a.Reserved(a.int16,4),metricDataFormat:a.int16,numberOfMetrics:a.uint16}),q=new a.Struct({advance:a.uint16,bearing:a.int16}),Z=new a.Struct({metrics:new a.LazyArray(q,function(t){return t.parent.hhea.numberOfMetrics}),bearings:new a.LazyArray(a.int16,function(t){return t.parent.maxp.numGlyphs-t.parent.hhea.numberOfMetrics})}),Y=new a.Struct({version:a.int32,numGlyphs:a.uint16,maxPoints:a.uint16,maxContours:a.uint16,maxComponentPoints:a.uint16,maxComponentContours:a.uint16,maxZones:a.uint16,maxTwilightPoints:a.uint16,maxStorage:a.uint16,maxFunctionDefs:a.uint16,maxInstructionDefs:a.uint16,maxStackElements:a.uint16,maxSizeOfInstructions:a.uint16,maxComponentElements:a.uint16,maxComponentDepth:a.uint16});function X(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return 1===t&&J[n]?J[n]:K[t][e]}var K=[["utf16be","utf16be","utf16be","utf16be","utf16be","utf16be"],["macroman","shift-jis","big5","euc-kr","iso-8859-6","iso-8859-8","macgreek","maccyrillic","symbol","Devanagari","Gurmukhi","Gujarati","Oriya","Bengali","Tamil","Telugu","Kannada","Malayalam","Sinhalese","Burmese","Khmer","macthai","Laotian","Georgian","Armenian","gb-2312-80","Tibetan","Mongolian","Geez","maccenteuro","Vietnamese","Sindhi"],["ascii"],["symbol","utf16be","shift-jis","gb18030","big5","wansung","johab",null,null,null,"utf16be"]],J={15:"maciceland",17:"macturkish",18:"maccroatian",24:"maccenteuro",25:"maccenteuro",26:"maccenteuro",27:"maccenteuro",28:"maccenteuro",30:"maciceland",37:"macromania",38:"maccenteuro",39:"maccenteuro",40:"maccenteuro",143:"macinuit",146:"macgaelic"},Q=[[],{0:"en",30:"fo",60:"ks",90:"rw",1:"fr",31:"fa",61:"ku",91:"rn",2:"de",32:"ru",62:"sd",92:"ny",3:"it",33:"zh",63:"bo",93:"mg",4:"nl",34:"nl-BE",64:"ne",94:"eo",5:"sv",35:"ga",65:"sa",128:"cy",6:"es",36:"sq",66:"mr",129:"eu",7:"da",37:"ro",67:"bn",130:"ca",8:"pt",38:"cz",68:"as",131:"la",9:"no",39:"sk",69:"gu",132:"qu",10:"he",40:"si",70:"pa",133:"gn",11:"ja",41:"yi",71:"or",134:"ay",12:"ar",42:"sr",72:"ml",135:"tt",13:"fi",43:"mk",73:"kn",136:"ug",14:"el",44:"bg",74:"ta",137:"dz",15:"is",45:"uk",75:"te",138:"jv",16:"mt",46:"be",76:"si",139:"su",17:"tr",47:"uz",77:"my",140:"gl",18:"hr",48:"kk",78:"km",141:"af",19:"zh-Hant",49:"az-Cyrl",79:"lo",142:"br",20:"ur",50:"az-Arab",80:"vi",143:"iu",21:"hi",51:"hy",81:"id",144:"gd",22:"th",52:"ka",82:"tl",145:"gv",23:"ko",53:"mo",83:"ms",146:"ga",24:"lt",54:"ky",84:"ms-Arab",147:"to",25:"pl",55:"tg",85:"am",148:"el-polyton",26:"hu",56:"tk",86:"ti",149:"kl",27:"es",57:"mn-CN",87:"om",150:"az",28:"lv",58:"mn",88:"so",151:"nn",29:"se",59:"ps",89:"sw"},[],{1078:"af",16393:"en-IN",1159:"rw",1074:"tn",1052:"sq",6153:"en-IE",1089:"sw",1115:"si",1156:"gsw",8201:"en-JM",1111:"kok",1051:"sk",1118:"am",17417:"en-MY",1042:"ko",1060:"sl",5121:"ar-DZ",5129:"en-NZ",1088:"ky",11274:"es-AR",15361:"ar-BH",13321:"en-PH",1108:"lo",16394:"es-BO",3073:"ar",18441:"en-SG",1062:"lv",13322:"es-CL",2049:"ar-IQ",7177:"en-ZA",1063:"lt",9226:"es-CO",11265:"ar-JO",11273:"en-TT",2094:"dsb",5130:"es-CR",13313:"ar-KW",2057:"en-GB",1134:"lb",7178:"es-DO",12289:"ar-LB",1033:"en",1071:"mk",12298:"es-EC",4097:"ar-LY",12297:"en-ZW",2110:"ms-BN",17418:"es-SV",6145:"ary",1061:"et",1086:"ms",4106:"es-GT",8193:"ar-OM",1080:"fo",1100:"ml",18442:"es-HN",16385:"ar-QA",1124:"fil",1082:"mt",2058:"es-MX",1025:"ar-SA",1035:"fi",1153:"mi",19466:"es-NI",10241:"ar-SY",2060:"fr-BE",1146:"arn",6154:"es-PA",7169:"aeb",3084:"fr-CA",1102:"mr",15370:"es-PY",14337:"ar-AE",1036:"fr",1148:"moh",10250:"es-PE",9217:"ar-YE",5132:"fr-LU",1104:"mn",20490:"es-PR",1067:"hy",6156:"fr-MC",2128:"mn-CN",3082:"es",1101:"as",4108:"fr-CH",1121:"ne",1034:"es",2092:"az-Cyrl",1122:"fy",1044:"nb",21514:"es-US",1068:"az",1110:"gl",2068:"nn",14346:"es-UY",1133:"ba",1079:"ka",1154:"oc",8202:"es-VE",1069:"eu",3079:"de-AT",1096:"or",2077:"sv-FI",1059:"be",1031:"de",1123:"ps",1053:"sv",2117:"bn",5127:"de-LI",1045:"pl",1114:"syr",1093:"bn-IN",4103:"de-LU",1046:"pt",1064:"tg",8218:"bs-Cyrl",2055:"de-CH",2070:"pt-PT",2143:"tzm",5146:"bs",1032:"el",1094:"pa",1097:"ta",1150:"br",1135:"kl",1131:"qu-BO",1092:"tt",1026:"bg",1095:"gu",2155:"qu-EC",1098:"te",1027:"ca",1128:"ha",3179:"qu",1054:"th",3076:"zh-HK",1037:"he",1048:"ro",1105:"bo",5124:"zh-MO",1081:"hi",1047:"rm",1055:"tr",2052:"zh",1038:"hu",1049:"ru",1090:"tk",4100:"zh-SG",1039:"is",9275:"smn",1152:"ug",1028:"zh-TW",1136:"ig",4155:"smj-NO",1058:"uk",1155:"co",1057:"id",5179:"smj",1070:"hsb",1050:"hr",1117:"iu",3131:"se-FI",1056:"ur",4122:"hr-BA",2141:"iu-Latn",1083:"se",2115:"uz-Cyrl",1029:"cs",2108:"ga",2107:"se-SE",1091:"uz",1030:"da",1076:"xh",8251:"sms",1066:"vi",1164:"prs",1077:"zu",6203:"sma-NO",1106:"cy",1125:"dv",1040:"it",7227:"sms",1160:"wo",2067:"nl-BE",2064:"it-CH",1103:"sa",1157:"sah",1043:"nl",1041:"ja",7194:"sr-Cyrl-BA",1144:"ii",3081:"en-AU",1099:"kn",3098:"sr",1130:"yo",10249:"en-BZ",1087:"kk",6170:"sr-Latn-BA",4105:"en-CA",1107:"km",2074:"sr-Latn",9225:"en-029",1158:"quc",1132:"nso"}],$=new a.Struct({platformID:a.uint16,encodingID:a.uint16,languageID:a.uint16,nameID:a.uint16,length:a.uint16,string:new a.Pointer(a.uint16,new a.String("length",function(t){return X(t.platformID,t.encodingID,t.languageID)}),{type:"parent",relativeTo:"parent.stringOffset",allowNull:!1})}),tt=new a.Struct({length:a.uint16,tag:new a.Pointer(a.uint16,new a.String("length","utf16be"),{type:"parent",relativeTo:"stringOffset"})}),NameTable=new a.VersionedStruct(a.uint16,{0:{count:a.uint16,stringOffset:a.uint16,records:new a.Array($,"count")},1:{count:a.uint16,stringOffset:a.uint16,records:new a.Array($,"count"),langTagCount:a.uint16,langTags:new a.Array(tt,"langTagCount")}}),et=["copyright","fontFamily","fontSubfamily","uniqueSubfamily","fullName","version","postscriptName","trademark","manufacturer","designer","description","vendorURL","designerURL","license","licenseURL",null,"preferredFamily","preferredSubfamily","compatibleFull","sampleText","postscriptCIDFontName","wwsFamilyName","wwsSubfamilyName"];NameTable.process=function(t){var e={},n=this.records,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=Q[o.platformID][o.languageID];null==l&&null!=this.langTags&&o.languageID>=32768&&(l=this.langTags[o.languageID-32768].tag),null==l&&(l=o.platformID+"-"+o.languageID);var u=o.nameID>=256?"fontFeatures":et[o.nameID]||o.nameID;null==e[u]&&(e[u]={});var c=e[u];o.nameID>=256&&(c=c[o.nameID]||(c[o.nameID]={})),"string"!=typeof o.string&&"string"==typeof c[l]||(c[l]=o.string)}this.records=e},NameTable.preEncode=function(){if(!Array.isArray(this.records)){this.version=0;var t=[];for(var n in this.records){var r=this.records[n];"fontFeatures"!==n&&(t.push({platformID:3,encodingID:1,languageID:1033,nameID:et.indexOf(n),length:e.byteLength(r.en,"utf16le"),string:r.en}),"postscriptName"===n&&t.push({platformID:1,encodingID:0,languageID:0,nameID:et.indexOf(n),length:r.en.length,string:r.en}))}this.records=t,this.count=t.length,this.stringOffset=NameTable.size(this,null,!1)}};var nt=new a.VersionedStruct(a.uint16,{header:{xAvgCharWidth:a.int16,usWeightClass:a.uint16,usWidthClass:a.uint16,fsType:new a.Bitfield(a.uint16,[null,"noEmbedding","viewOnly","editable",null,null,null,null,"noSubsetting","bitmapOnly"]),ySubscriptXSize:a.int16,ySubscriptYSize:a.int16,ySubscriptXOffset:a.int16,ySubscriptYOffset:a.int16,ySuperscriptXSize:a.int16,ySuperscriptYSize:a.int16,ySuperscriptXOffset:a.int16,ySuperscriptYOffset:a.int16,yStrikeoutSize:a.int16,yStrikeoutPosition:a.int16,sFamilyClass:a.int16,panose:new a.Array(a.uint8,10),ulCharRange:new a.Array(a.uint32,4),vendorID:new a.String(4),fsSelection:new a.Bitfield(a.uint16,["italic","underscore","negative","outlined","strikeout","bold","regular","useTypoMetrics","wws","oblique"]),usFirstCharIndex:a.uint16,usLastCharIndex:a.uint16},0:{},1:{typoAscender:a.int16,typoDescender:a.int16,typoLineGap:a.int16,winAscent:a.uint16,winDescent:a.uint16,codePageRange:new a.Array(a.uint32,2)},2:{typoAscender:a.int16,typoDescender:a.int16,typoLineGap:a.int16,winAscent:a.uint16,winDescent:a.uint16,codePageRange:new a.Array(a.uint32,2),xHeight:a.int16,capHeight:a.int16,defaultChar:a.uint16,breakChar:a.uint16,maxContent:a.uint16},5:{typoAscender:a.int16,typoDescender:a.int16,typoLineGap:a.int16,winAscent:a.uint16,winDescent:a.uint16,codePageRange:new a.Array(a.uint32,2),xHeight:a.int16,capHeight:a.int16,defaultChar:a.uint16,breakChar:a.uint16,maxContent:a.uint16,usLowerOpticalPointSize:a.uint16,usUpperOpticalPointSize:a.uint16}}),rt=nt.versions;rt[3]=rt[4]=rt[2];var it=new a.VersionedStruct(a.fixed32,{header:{italicAngle:a.fixed32,underlinePosition:a.int16,underlineThickness:a.int16,isFixedPitch:a.uint32,minMemType42:a.uint32,maxMemType42:a.uint32,minMemType1:a.uint32,maxMemType1:a.uint32},1:{},2:{numberOfGlyphs:a.uint16,glyphNameIndex:new a.Array(a.uint16,"numberOfGlyphs"),names:new a.Array(new a.String(a.uint8))},2.5:{numberOfGlyphs:a.uint16,offsets:new a.Array(a.uint8,"numberOfGlyphs")},3:{},4:{map:new a.Array(a.uint32,function(t){return t.parent.maxp.numGlyphs})}}),at=new a.Struct({controlValues:new a.Array(a.int16)}),ot=new a.Struct({instructions:new a.Array(a.uint8)}),st=new a.VersionedStruct("head.indexToLocFormat",{0:{offsets:new a.Array(a.uint16)},1:{offsets:new a.Array(a.uint32)}});st.process=function(){if(0===this.version)for(var t=0;t<this.offsets.length;t++)this.offsets[t]<<=1},st.preEncode=function(){if(null==this.version&&(this.version=this.offsets[this.offsets.length-1]>65535?1:0,0===this.version))for(var t=0;t<this.offsets.length;t++)this.offsets[t]>>>=1};var lt=new a.Struct({controlValueProgram:new a.Array(a.uint8)}),ut=new a.Array(new a.Buffer),ct=function(){function t(e){f(this,t),this.type=e}return t.prototype.getCFFVersion=function(t){for(;t&&!t.hdrSize;)t=t.parent;return t?t.version:-1},t.prototype.decode=function(t,e){var n=this.getCFFVersion(e)>=2?t.readUInt32BE():t.readUInt16BE();if(0===n)return[];var r=t.readUInt8(),i=void 0;if(1===r)i=a.uint8;else if(2===r)i=a.uint16;else if(3===r)i=a.uint24;else{if(4!==r)throw new Error("Bad offset size in CFFIndex: "+r+" "+t.pos);i=a.uint32}for(var o=[],s=t.pos+(n+1)*r-1,l=i.decode(t),u=0;u<n;u++){var c=i.decode(t);if(null!=this.type){var h=t.pos;t.pos=s+l,e.length=c-l,o.push(this.type.decode(t,e)),t.pos=h}else o.push({offset:s+l,length:c-l});l=c}return t.pos=s+l,o},t.prototype.size=function(t,e){var n=2;if(0===t.length)return n;for(var r=this.type||new a.Buffer,i=1,o=0;o<t.length;o++){var s=t[o];i+=r.size(s,e)}var l=void 0;if(i<=255)l=a.uint8;else if(i<=65535)l=a.uint16;else if(i<=16777215)l=a.uint24;else{if(!(i<=4294967295))throw new Error("Bad offset in CFFIndex");l=a.uint32}return n+=1+l.size()*(t.length+1),n+=i-1,n},t.prototype.encode=function(t,e,n){if(t.writeUInt16BE(e.length),0!==e.length){var r=this.type||new a.Buffer,i=[],o=1,l=e,u=Array.isArray(l),c=0;for(l=u?l:s(l);;){var h;if(u){if(c>=l.length)break;h=l[c++]}else{if((c=l.next()).done)break;h=c.value}var f=h,d=r.size(f,n);i.push(d),o+=d}var p=void 0;if(o<=255)p=a.uint8;else if(o<=65535)p=a.uint16;else if(o<=16777215)p=a.uint24;else{if(!(o<=4294967295))throw new Error("Bad offset in CFFIndex");p=a.uint32}t.writeUInt8(p.size()),o=1,p.encode(t,o);var g=i,y=Array.isArray(g),v=0;for(g=y?g:s(g);;){var b;if(y){if(v>=g.length)break;b=g[v++]}else{if((v=g.next()).done)break;b=v.value}o+=b,p.encode(t,o)}var m=e,w=Array.isArray(m),x=0;for(m=w?m:s(m);;){var S;if(w){if(x>=m.length)break;S=m[x++]}else{if((x=m.next()).done)break;S=x.value}var _=S;r.encode(t,_,n)}}},t}(),ht=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],ft={".":10,E:11,"E-":12,"-":14},dt=function(){function t(){f(this,t)}return t.decode=function(t,e){if(32<=e&&e<=246)return e-139;if(247<=e&&e<=250)return 256*(e-247)+t.readUInt8()+108;if(251<=e&&e<=254)return 256*-(e-251)-t.readUInt8()-108;if(28===e)return t.readInt16BE();if(29===e)return t.readInt32BE();if(30===e){for(var n="";;){var r=t.readUInt8(),i=r>>4;if(15===i)break;n+=ht[i];var a=15&r;if(15===a)break;n+=ht[a]}return parseFloat(n)}return null},t.size=function(t){if(t.forceLarge&&(t=32768),(0|t)!==t){var e=""+t;return 1+Math.ceil((e.length+1)/2)}return-107<=t&&t<=107?1:108<=t&&t<=1131||-1131<=t&&t<=-108?2:-32768<=t&&t<=32767?3:5},t.encode=function(t,e){var n=Number(e);if(e.forceLarge)return t.writeUInt8(29),t.writeInt32BE(n);if((0|n)===n)return-107<=n&&n<=107?t.writeUInt8(n+139):108<=n&&n<=1131?(n-=108,t.writeUInt8(247+(n>>8)),t.writeUInt8(255&n)):-1131<=n&&n<=-108?(n=-n-108,t.writeUInt8(251+(n>>8)),t.writeUInt8(255&n)):-32768<=n&&n<=32767?(t.writeUInt8(28),t.writeInt16BE(n)):(t.writeUInt8(29),t.writeInt32BE(n));t.writeUInt8(30);for(var r=""+n,i=0;i<r.length;i+=2){var a=r[i],o=ft[a]||+a;if(i===r.length-1)var s=15;else{var l=r[i+1];s=ft[l]||+l}t.writeUInt8(o<<4|15&s)}return 15!==s?t.writeUInt8(240):void 0},t}(),pt=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];f(this,t),this.ops=e,this.fields={};var n=e,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=Array.isArray(o[0])?o[0][0]<<8|o[0][1]:o[0];this.fields[l]=o}}return t.prototype.decodeOperands=function(t,e,n,r){var i=this;if(Array.isArray(t))return r.map(function(r,a){return i.decodeOperands(t[a],e,n,[r])});if(null!=t.decode)return t.decode(e,n,r);switch(t){case"number":case"offset":case"sid":return r[0];case"boolean":return!!r[0];default:return r}},t.prototype.encodeOperands=function(t,e,n,r){var i=this;return Array.isArray(t)?r.map(function(r,a){return i.encodeOperands(t[a],e,n,r)[0]}):null!=t.encode?t.encode(e,r,n):"number"==typeof r?[r]:"boolean"==typeof r?[+r]:Array.isArray(r)?r:[r]},t.prototype.decode=function(t,e){var n=t.pos+e.length,r={},i=[];for(var a in b(r,{parent:{value:e},_startOffset:{value:t.pos}}),this.fields){var o=this.fields[a];r[o[1]]=o[3]}for(;t.pos<n;){var s=t.readUInt8();if(s<28){12===s&&(s=s<<8|t.readUInt8());var l=this.fields[s];if(!l)throw new Error("Unknown operator "+s);var u=this.decodeOperands(l[2],t,r,i);null!=u&&(u instanceof v.PropertyDescriptor?h(r,l[1],u):r[l[1]]=u),i=[]}else i.push(dt.decode(t,s))}return r},t.prototype.size=function(t,e){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r={parent:e,val:t,pointerSize:0,startOffset:e.startOffset||0},i=0;for(var a in this.fields){var o=this.fields[a],l=t[o[1]];if(null!=l&&!m(l,o[3])){var u=this.encodeOperands(o[2],null,r,l),c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d=f;i+=dt.size(d)}i+=(Array.isArray(o[0])?o[0]:[o[0]]).length}}return n&&(i+=r.pointerSize),i},t.prototype.encode=function(t,e,n){var r={pointers:[],startOffset:t.pos,parent:n,val:e,pointerSize:0};r.pointerOffset=t.pos+this.size(e,r,!1);var i=this.ops,a=Array.isArray(i),o=0;for(i=a?i:s(i);;){var l;if(a){if(o>=i.length)break;l=i[o++]}else{if((o=i.next()).done)break;l=o.value}var u=l,c=e[u[1]];if(null!=c&&!m(c,u[3])){var h=this.encodeOperands(u[2],t,r,c),f=Array.isArray(h),d=0;for(h=f?h:s(h);;){var p;if(f){if(d>=h.length)break;p=h[d++]}else{if((d=h.next()).done)break;p=d.value}var g=p;dt.encode(t,g)}var y=Array.isArray(u[0])?u[0]:[u[0]],v=Array.isArray(y),b=0;for(y=v?y:s(y);;){var w;if(v){if(b>=y.length)break;w=y[b++]}else{if((b=y.next()).done)break;w=b.value}var x=w;t.writeUInt8(x)}}}for(var S=0;S<r.pointers.length;){var _=r.pointers[S++];_.type.encode(t,_.val,_.parent)}},t}(),gt=function(t){function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return f(this,e),null==r.type&&(r.type="global"),g(this,t.call(this,null,n,r))}return y(e,t),e.prototype.decode=function(e,n,r){return this.offsetType={decode:function(){return r[0]}},t.prototype.decode.call(this,e,n,r)},e.prototype.encode=function(e,n,r){if(!e)return this.offsetType={size:function(){return 0}},this.size(n,r),[new yt(0)];var i=null;return this.offsetType={encode:function(t,e){return i=e}},t.prototype.encode.call(this,e,n,r),[new yt(i)]},e}(a.Pointer),yt=function(){function t(e){f(this,t),this.val=e,this.forceLarge=!0}return t.prototype.valueOf=function(){return this.val},t}(),vt=new pt([[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","number",.039625],[[12,10],"BlueShift","number",7],[[12,11],"BlueFuzz","number",1],[10,"StdHW","number",null],[11,"StdVW","number",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","boolean",!1],[[12,17],"LanguageGroup","number",0],[[12,18],"ExpansionFactor","number",.06],[[12,19],"initialRandomSeed","number",0],[20,"defaultWidthX","number",0],[21,"nominalWidthX","number",0],[22,"vsindex","number",0],[23,"blend",function(){function t(){f(this,t)}return t.decode=function(t,e,n){for(var r=n.pop();n.length>r;)n.pop()},t}(),null],[19,"Subrs",new gt(new ct,{type:"local"}),null]]),bt=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],mt=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],wt=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],xt=new a.Struct({reserved:new a.Reserved(a.uint16),reqFeatureIndex:a.uint16,featureCount:a.uint16,featureIndexes:new a.Array(a.uint16,"featureCount")}),St=new a.Struct({tag:new a.String(4),langSys:new a.Pointer(a.uint16,xt,{type:"parent"})}),_t=new a.Struct({defaultLangSys:new a.Pointer(a.uint16,xt),count:a.uint16,langSysRecords:new a.Array(St,"count")}),kt=new a.Struct({tag:new a.String(4),script:new a.Pointer(a.uint16,_t,{type:"parent"})}),Ct=new a.Array(kt,a.uint16),At=new a.Struct({featureParams:a.uint16,lookupCount:a.uint16,lookupListIndexes:new a.Array(a.uint16,"lookupCount")}),Pt=new a.Struct({tag:new a.String(4),feature:new a.Pointer(a.uint16,At,{type:"parent"})}),Et=new a.Array(Pt,a.uint16),It=new a.Struct({markAttachmentType:a.uint8,flags:new a.Bitfield(a.uint8,["rightToLeft","ignoreBaseGlyphs","ignoreLigatures","ignoreMarks","useMarkFilteringSet"])});function Tt(t){var e=new a.Struct({lookupType:a.uint16,flags:It,subTableCount:a.uint16,subTables:new a.Array(new a.Pointer(a.uint16,t),"subTableCount"),markFilteringSet:new a.Optional(a.uint16,function(t){return t.flags.flags.useMarkFilteringSet})});return new a.LazyArray(new a.Pointer(a.uint16,e),a.uint16)}var Ot,Lt=new a.Struct({start:a.uint16,end:a.uint16,startCoverageIndex:a.uint16}),Bt=new a.VersionedStruct(a.uint16,{1:{glyphCount:a.uint16,glyphs:new a.Array(a.uint16,"glyphCount")},2:{rangeCount:a.uint16,rangeRecords:new a.Array(Lt,"rangeCount")}}),Mt=new a.Struct({start:a.uint16,end:a.uint16,class:a.uint16}),Rt=new a.VersionedStruct(a.uint16,{1:{startGlyph:a.uint16,glyphCount:a.uint16,classValueArray:new a.Array(a.uint16,"glyphCount")},2:{classRangeCount:a.uint16,classRangeRecord:new a.Array(Mt,"classRangeCount")}}),Ft=new a.Struct({a:a.uint16,b:a.uint16,deltaFormat:a.uint16}),Dt=new a.Struct({sequenceIndex:a.uint16,lookupListIndex:a.uint16}),zt=new a.Struct({glyphCount:a.uint16,lookupCount:a.uint16,input:new a.Array(a.uint16,function(t){return t.glyphCount-1}),lookupRecords:new a.Array(Dt,"lookupCount")}),Nt=new a.Array(new a.Pointer(a.uint16,zt),a.uint16),Ut=new a.Struct({glyphCount:a.uint16,lookupCount:a.uint16,classes:new a.Array(a.uint16,function(t){return t.glyphCount-1}),lookupRecords:new a.Array(Dt,"lookupCount")}),Wt=new a.Array(new a.Pointer(a.uint16,Ut),a.uint16),Gt=new a.VersionedStruct(a.uint16,{1:{coverage:new a.Pointer(a.uint16,Bt),ruleSetCount:a.uint16,ruleSets:new a.Array(new a.Pointer(a.uint16,Nt),"ruleSetCount")},2:{coverage:new a.Pointer(a.uint16,Bt),classDef:new a.Pointer(a.uint16,Rt),classSetCnt:a.uint16,classSet:new a.Array(new a.Pointer(a.uint16,Wt),"classSetCnt")},3:{glyphCount:a.uint16,lookupCount:a.uint16,coverages:new a.Array(new a.Pointer(a.uint16,Bt),"glyphCount"),lookupRecords:new a.Array(Dt,"lookupCount")}}),Vt=new a.Struct({backtrackGlyphCount:a.uint16,backtrack:new a.Array(a.uint16,"backtrackGlyphCount"),inputGlyphCount:a.uint16,input:new a.Array(a.uint16,function(t){return t.inputGlyphCount-1}),lookaheadGlyphCount:a.uint16,lookahead:new a.Array(a.uint16,"lookaheadGlyphCount"),lookupCount:a.uint16,lookupRecords:new a.Array(Dt,"lookupCount")}),jt=new a.Array(new a.Pointer(a.uint16,Vt),a.uint16),Ht=new a.VersionedStruct(a.uint16,{1:{coverage:new a.Pointer(a.uint16,Bt),chainCount:a.uint16,chainRuleSets:new a.Array(new a.Pointer(a.uint16,jt),"chainCount")},2:{coverage:new a.Pointer(a.uint16,Bt),backtrackClassDef:new a.Pointer(a.uint16,Rt),inputClassDef:new a.Pointer(a.uint16,Rt),lookaheadClassDef:new a.Pointer(a.uint16,Rt),chainCount:a.uint16,chainClassSet:new a.Array(new a.Pointer(a.uint16,jt),"chainCount")},3:{backtrackGlyphCount:a.uint16,backtrackCoverage:new a.Array(new a.Pointer(a.uint16,Bt),"backtrackGlyphCount"),inputGlyphCount:a.uint16,inputCoverage:new a.Array(new a.Pointer(a.uint16,Bt),"inputGlyphCount"),lookaheadGlyphCount:a.uint16,lookaheadCoverage:new a.Array(new a.Pointer(a.uint16,Bt),"lookaheadGlyphCount"),lookupCount:a.uint16,lookupRecords:new a.Array(Dt,"lookupCount")}}),qt=new a.Fixed(16,"BE",14),Zt=new a.Struct({startCoord:qt,peakCoord:qt,endCoord:qt}),Yt=new a.Struct({axisCount:a.uint16,regionCount:a.uint16,variationRegions:new a.Array(new a.Array(Zt,"axisCount"),"regionCount")}),Xt=new a.Struct({shortDeltas:new a.Array(a.int16,function(t){return t.parent.shortDeltaCount}),regionDeltas:new a.Array(a.int8,function(t){return t.parent.regionIndexCount-t.parent.shortDeltaCount}),deltas:function(t){return t.shortDeltas.concat(t.regionDeltas)}}),Kt=new a.Struct({itemCount:a.uint16,shortDeltaCount:a.uint16,regionIndexCount:a.uint16,regionIndexes:new a.Array(a.uint16,"regionIndexCount"),deltaSets:new a.Array(Xt,"itemCount")}),Jt=new a.Struct({format:a.uint16,variationRegionList:new a.Pointer(a.uint32,Yt),variationDataCount:a.uint16,itemVariationData:new a.Array(new a.Pointer(a.uint32,Kt),"variationDataCount")}),Qt=new a.VersionedStruct(a.uint16,{1:(Ot={axisIndex:a.uint16},Ot.axisIndex=a.uint16,Ot.filterRangeMinValue=qt,Ot.filterRangeMaxValue=qt,Ot)}),$t=new a.Struct({conditionCount:a.uint16,conditionTable:new a.Array(new a.Pointer(a.uint32,Qt),"conditionCount")}),te=new a.Struct({featureIndex:a.uint16,alternateFeatureTable:new a.Pointer(a.uint32,At,{type:"parent"})}),ee=new a.Struct({version:a.fixed32,substitutionCount:a.uint16,substitutions:new a.Array(te,"substitutionCount")}),ne=new a.Struct({conditionSet:new a.Pointer(a.uint32,$t,{type:"parent"}),featureTableSubstitution:new a.Pointer(a.uint32,ee,{type:"parent"})}),re=new a.Struct({majorVersion:a.uint16,minorVersion:a.uint16,featureVariationRecordCount:a.uint32,featureVariationRecords:new a.Array(ne,"featureVariationRecordCount")}),ie=function(){function t(e,n){f(this,t),this.predefinedOps=e,this.type=n}return t.prototype.decode=function(t,e,n){return this.predefinedOps[n[0]]?this.predefinedOps[n[0]]:this.type.decode(t,e,n)},t.prototype.size=function(t,e){return this.type.size(t,e)},t.prototype.encode=function(t,e,n){var r=this.predefinedOps.indexOf(e);return-1!==r?r:this.type.encode(t,e,n)},t}(),ae=function(t){function e(){return f(this,e),g(this,t.call(this,"UInt8"))}return y(e,t),e.prototype.decode=function(t){return 127&a.uint8.decode(t)},e}(a.Number),oe=new a.Struct({first:a.uint16,nLeft:a.uint8}),se=new a.Struct({first:a.uint16,nLeft:a.uint16}),le=new ie([mt,["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"]],new gt(new a.VersionedStruct(new ae,{0:{nCodes:a.uint8,codes:new a.Array(a.uint8,"nCodes")},1:{nRanges:a.uint8,ranges:new a.Array(oe,"nRanges")}}),{lazy:!0})),ue=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype.decode=function(t,e){for(var n=v.resolveLength(this.length,t,e),r=0,i=[];r<n;){var a=this.type.decode(t,e);a.offset=r,r+=a.nLeft+1,i.push(a)}return i},e}(a.Array),ce=new ie([wt,[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"]],new gt(new a.VersionedStruct(a.uint8,{0:{glyphs:new a.Array(a.uint16,function(t){return t.parent.CharStrings.length-1})},1:{ranges:new ue(oe,function(t){return t.parent.CharStrings.length-1})},2:{ranges:new ue(se,function(t){return t.parent.CharStrings.length-1})}}),{lazy:!0})),he=new a.Struct({first:a.uint16,fd:a.uint8}),fe=new a.Struct({first:a.uint32,fd:a.uint16}),de=new a.VersionedStruct(a.uint8,{0:{fds:new a.Array(a.uint8,function(t){return t.parent.CharStrings.length})},3:{nRanges:a.uint16,ranges:new a.Array(he,"nRanges"),sentinel:a.uint16},4:{nRanges:a.uint32,ranges:new a.Array(fe,"nRanges"),sentinel:a.uint32}}),pe=new gt(vt),ge=function(){function t(){f(this,t)}return t.prototype.decode=function(t,e,n){return e.length=n[0],pe.decode(t,e,[n[1]])},t.prototype.size=function(t,e){return[vt.size(t,e,!1),pe.size(t,e)[0]]},t.prototype.encode=function(t,e,n){return[vt.size(e,n,!1),pe.encode(t,e,n)[0]]},t}(),ye=new pt([[18,"Private",new ge,null],[[12,38],"FontName","sid",null]]),ve=new pt([[[12,30],"ROS",["sid","sid","number"],null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","boolean",!1],[[12,2],"ItalicAngle","number",0],[[12,3],"UnderlinePosition","number",-100],[[12,4],"UnderlineThickness","number",50],[[12,5],"PaintType","number",0],[[12,6],"CharstringType","number",2],[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[13,"UniqueID","number",null],[5,"FontBBox","array",[0,0,0,0]],[[12,8],"StrokeWidth","number",0],[14,"XUID","array",null],[15,"charset",ce,wt],[16,"Encoding",le,mt],[17,"CharStrings",new gt(new ct),null],[18,"Private",new ge,null],[[12,20],"SyntheticBase","number",null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","number",0],[[12,32],"CIDFontRevision","number",0],[[12,33],"CIDFontType","number",0],[[12,34],"CIDCount","number",8720],[[12,35],"UIDBase","number",null],[[12,37],"FDSelect",new gt(de),null],[[12,36],"FDArray",new gt(new ct(ye)),null],[[12,38],"FontName","sid",null]]),be=new a.Struct({length:a.uint16,itemVariationStore:Jt}),me=new pt([[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[17,"CharStrings",new gt(new ct),null],[[12,37],"FDSelect",new gt(de),null],[[12,36],"FDArray",new gt(new ct(ye)),null],[24,"vstore",new gt(be),null],[25,"maxstack","number",193]]),we=new a.VersionedStruct(a.fixed16,{1:{hdrSize:a.uint8,offSize:a.uint8,nameIndex:new ct(new a.String("length")),topDictIndex:new ct(ve),stringIndex:new ct(new a.String("length")),globalSubrIndex:new ct},2:{hdrSize:a.uint8,length:a.uint16,topDict:me,globalSubrIndex:new ct}}),xe=function(){function t(e){f(this,t),this.stream=e,this.decode()}return t.decode=function(e){return new t(e)},t.prototype.decode=function(){this.stream.pos;var t=we.decode(this.stream);for(var e in t){var n=t[e];this[e]=n}if(this.version<2){if(1!==this.topDictIndex.length)throw new Error("Only a single font is allowed in CFF");this.topDict=this.topDictIndex[0]}return this.isCIDFont=null!=this.topDict.ROS,this},t.prototype.string=function(t){return this.version>=2?null:t<bt.length?bt[t]:this.stringIndex[t-bt.length]},t.prototype.getCharString=function(t){return this.stream.pos=this.topDict.CharStrings[t].offset,this.stream.readBuffer(this.topDict.CharStrings[t].length)},t.prototype.getGlyphName=function(t){if(this.version>=2)return null;if(this.isCIDFont)return null;var e=this.topDict.charset;if(Array.isArray(e))return e[t];if(0===t)return".notdef";switch(t-=1,e.version){case 0:return this.string(e.glyphs[t]);case 1:case 2:for(var n=0;n<e.ranges.length;n++){var r=e.ranges[n];if(r.offset<=t&&t<=r.offset+r.nLeft)return this.string(r.first+(t-r.offset))}}return null},t.prototype.fdForGlyph=function(t){if(!this.topDict.FDSelect)return null;switch(this.topDict.FDSelect.version){case 0:return this.topDict.FDSelect.fds[t];case 3:case 4:for(var e=this.topDict.FDSelect.ranges,n=0,r=e.length-1;n<=r;){var i=n+r>>1;if(t<e[i].first)r=i-1;else{if(!(i<r&&t>e[i+1].first))return e[i].fd;n=i+1}}default:throw new Error("Unknown FDSelect version: "+this.topDict.FDSelect.version)}},t.prototype.privateDictForGlyph=function(t){if(this.topDict.FDSelect){var e=this.fdForGlyph(t);return this.topDict.FDArray[e]?this.topDict.FDArray[e].Private:null}return this.version<2?this.topDict.Private:this.topDict.FDArray[0].Private},d(t,[{key:"postscriptName",get:function(){return this.version<2?this.nameIndex[0]:null}},{key:"fullName",get:function(){return this.string(this.topDict.FullName)}},{key:"familyName",get:function(){return this.string(this.topDict.FamilyName)}}]),t}(),Se=new a.Struct({glyphIndex:a.uint16,vertOriginY:a.int16}),_e=new a.Struct({majorVersion:a.uint16,minorVersion:a.uint16,defaultVertOriginY:a.int16,numVertOriginYMetrics:a.uint16,metrics:new a.Array(Se,"numVertOriginYMetrics")}),ke=new a.Struct({height:a.uint8,width:a.uint8,horiBearingX:a.int8,horiBearingY:a.int8,horiAdvance:a.uint8,vertBearingX:a.int8,vertBearingY:a.int8,vertAdvance:a.uint8}),Ce=new a.Struct({height:a.uint8,width:a.uint8,bearingX:a.int8,bearingY:a.int8,advance:a.uint8}),Ae=new a.Struct({glyph:a.uint16,xOffset:a.int8,yOffset:a.int8}),Pe=function t(){f(this,t)},Ee=function t(){f(this,t)},Ie=(new a.VersionedStruct("version",{1:{metrics:Ce,data:Pe},2:{metrics:Ce,data:Ee},5:{data:Ee},6:{metrics:ke,data:Pe},7:{metrics:ke,data:Ee},8:{metrics:Ce,pad:new a.Reserved(a.uint8),numComponents:a.uint16,components:new a.Array(Ae,"numComponents")},9:{metrics:ke,pad:new a.Reserved(a.uint8),numComponents:a.uint16,components:new a.Array(Ae,"numComponents")},17:{metrics:Ce,dataLen:a.uint32,data:new a.Buffer("dataLen")},18:{metrics:ke,dataLen:a.uint32,data:new a.Buffer("dataLen")},19:{dataLen:a.uint32,data:new a.Buffer("dataLen")}}),new a.Struct({ascender:a.int8,descender:a.int8,widthMax:a.uint8,caretSlopeNumerator:a.int8,caretSlopeDenominator:a.int8,caretOffset:a.int8,minOriginSB:a.int8,minAdvanceSB:a.int8,maxBeforeBL:a.int8,minAfterBL:a.int8,pad:new a.Reserved(a.int8,2)})),Te=new a.Struct({glyphCode:a.uint16,offset:a.uint16}),Oe=new a.VersionedStruct(a.uint16,{header:{imageFormat:a.uint16,imageDataOffset:a.uint32},1:{offsetArray:new a.Array(a.uint32,function(t){return t.parent.lastGlyphIndex-t.parent.firstGlyphIndex+1})},2:{imageSize:a.uint32,bigMetrics:ke},3:{offsetArray:new a.Array(a.uint16,function(t){return t.parent.lastGlyphIndex-t.parent.firstGlyphIndex+1})},4:{numGlyphs:a.uint32,glyphArray:new a.Array(Te,function(t){return t.numGlyphs+1})},5:{imageSize:a.uint32,bigMetrics:ke,numGlyphs:a.uint32,glyphCodeArray:new a.Array(a.uint16,"numGlyphs")}}),Le=new a.Struct({firstGlyphIndex:a.uint16,lastGlyphIndex:a.uint16,subtable:new a.Pointer(a.uint32,Oe)}),Be=new a.Struct({indexSubTableArray:new a.Pointer(a.uint32,new a.Array(Le,1),{type:"parent"}),indexTablesSize:a.uint32,numberOfIndexSubTables:a.uint32,colorRef:a.uint32,hori:Ie,vert:Ie,startGlyphIndex:a.uint16,endGlyphIndex:a.uint16,ppemX:a.uint8,ppemY:a.uint8,bitDepth:a.uint8,flags:new a.Bitfield(a.uint8,["horizontal","vertical"])}),Me=new a.Struct({version:a.uint32,numSizes:a.uint32,sizes:new a.Array(Be,"numSizes")}),Re=new a.Struct({ppem:a.uint16,resolution:a.uint16,imageOffsets:new a.Array(new a.Pointer(a.uint32,"void"),function(t){return t.parent.parent.maxp.numGlyphs+1})}),Fe=new a.Struct({version:a.uint16,flags:new a.Bitfield(a.uint16,["renderOutlines"]),numImgTables:a.uint32,imageTables:new a.Array(new a.Pointer(a.uint32,Re),"numImgTables")}),De=new a.Struct({gid:a.uint16,paletteIndex:a.uint16}),ze=new a.Struct({gid:a.uint16,firstLayerIndex:a.uint16,numLayers:a.uint16}),Ne=new a.Struct({version:a.uint16,numBaseGlyphRecords:a.uint16,baseGlyphRecord:new a.Pointer(a.uint32,new a.Array(ze,"numBaseGlyphRecords")),layerRecords:new a.Pointer(a.uint32,new a.Array(De,"numLayerRecords"),{lazy:!0}),numLayerRecords:a.uint16}),Ue=new a.Struct({blue:a.uint8,green:a.uint8,red:a.uint8,alpha:a.uint8}),We=new a.VersionedStruct(a.uint16,{header:{numPaletteEntries:a.uint16,numPalettes:a.uint16,numColorRecords:a.uint16,colorRecords:new a.Pointer(a.uint32,new a.Array(Ue,"numColorRecords")),colorRecordIndices:new a.Array(a.uint16,"numPalettes")},0:{},1:{offsetPaletteTypeArray:new a.Pointer(a.uint32,new a.Array(a.uint32,"numPalettes")),offsetPaletteLabelArray:new a.Pointer(a.uint32,new a.Array(a.uint16,"numPalettes")),offsetPaletteEntryLabelArray:new a.Pointer(a.uint32,new a.Array(a.uint16,"numPaletteEntries"))}}),Ge=new a.VersionedStruct(a.uint16,{1:{coordinate:a.int16},2:{coordinate:a.int16,referenceGlyph:a.uint16,baseCoordPoint:a.uint16},3:{coordinate:a.int16,deviceTable:new a.Pointer(a.uint16,Ft)}}),Ve=new a.Struct({defaultIndex:a.uint16,baseCoordCount:a.uint16,baseCoords:new a.Array(new a.Pointer(a.uint16,Ge),"baseCoordCount")}),je=new a.Struct({tag:new a.String(4),minCoord:new a.Pointer(a.uint16,Ge,{type:"parent"}),maxCoord:new a.Pointer(a.uint16,Ge,{type:"parent"})}),He=new a.Struct({minCoord:new a.Pointer(a.uint16,Ge),maxCoord:new a.Pointer(a.uint16,Ge),featMinMaxCount:a.uint16,featMinMaxRecords:new a.Array(je,"featMinMaxCount")}),qe=new a.Struct({tag:new a.String(4),minMax:new a.Pointer(a.uint16,He,{type:"parent"})}),Ze=new a.Struct({baseValues:new a.Pointer(a.uint16,Ve),defaultMinMax:new a.Pointer(a.uint16,He),baseLangSysCount:a.uint16,baseLangSysRecords:new a.Array(qe,"baseLangSysCount")}),Ye=new a.Struct({tag:new a.String(4),script:new a.Pointer(a.uint16,Ze,{type:"parent"})}),Xe=new a.Array(Ye,a.uint16),Ke=new a.Array(new a.String(4),a.uint16),Je=new a.Struct({baseTagList:new a.Pointer(a.uint16,Ke),baseScriptList:new a.Pointer(a.uint16,Xe)}),Qe=new a.VersionedStruct(a.uint32,{header:{horizAxis:new a.Pointer(a.uint16,Je),vertAxis:new a.Pointer(a.uint16,Je)},65536:{},65537:{itemVariationStore:new a.Pointer(a.uint32,Jt)}}),$e=new a.Array(a.uint16,a.uint16),tn=new a.Struct({coverage:new a.Pointer(a.uint16,Bt),glyphCount:a.uint16,attachPoints:new a.Array(new a.Pointer(a.uint16,$e),"glyphCount")}),en=new a.VersionedStruct(a.uint16,{1:{coordinate:a.int16},2:{caretValuePoint:a.uint16},3:{coordinate:a.int16,deviceTable:new a.Pointer(a.uint16,Ft)}}),nn=new a.Array(new a.Pointer(a.uint16,en),a.uint16),rn=new a.Struct({coverage:new a.Pointer(a.uint16,Bt),ligGlyphCount:a.uint16,ligGlyphs:new a.Array(new a.Pointer(a.uint16,nn),"ligGlyphCount")}),an=new a.Struct({markSetTableFormat:a.uint16,markSetCount:a.uint16,coverage:new a.Array(new a.Pointer(a.uint32,Bt),"markSetCount")}),on=new a.VersionedStruct(a.uint32,{header:{glyphClassDef:new a.Pointer(a.uint16,Rt),attachList:new a.Pointer(a.uint16,tn),ligCaretList:new a.Pointer(a.uint16,rn),markAttachClassDef:new a.Pointer(a.uint16,Rt)},65536:{},65538:{markGlyphSetsDef:new a.Pointer(a.uint16,an)},65539:{markGlyphSetsDef:new a.Pointer(a.uint16,an),itemVariationStore:new a.Pointer(a.uint32,Jt)}}),sn=new a.Bitfield(a.uint16,["xPlacement","yPlacement","xAdvance","yAdvance","xPlaDevice","yPlaDevice","xAdvDevice","yAdvDevice"]),ln={xPlacement:a.int16,yPlacement:a.int16,xAdvance:a.int16,yAdvance:a.int16,xPlaDevice:new a.Pointer(a.uint16,Ft,{type:"global",relativeTo:"rel"}),yPlaDevice:new a.Pointer(a.uint16,Ft,{type:"global",relativeTo:"rel"}),xAdvDevice:new a.Pointer(a.uint16,Ft,{type:"global",relativeTo:"rel"}),yAdvDevice:new a.Pointer(a.uint16,Ft,{type:"global",relativeTo:"rel"})},un=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"valueFormat";f(this,t),this.key=e}return t.prototype.buildStruct=function(t){for(var e=t;!e[this.key]&&e.parent;)e=e.parent;if(e[this.key]){var n={rel:function(){return e._startOffset}},r=e[this.key];for(var i in r)r[i]&&(n[i]=ln[i]);return new a.Struct(n)}},t.prototype.size=function(t,e){return this.buildStruct(e).size(t,e)},t.prototype.decode=function(t,e){var n=this.buildStruct(e).decode(t,e);return delete n.rel,n},t}(),cn=new a.Struct({secondGlyph:a.uint16,value1:new un("valueFormat1"),value2:new un("valueFormat2")}),hn=new a.Array(cn,a.uint16),fn=new a.Struct({value1:new un("valueFormat1"),value2:new un("valueFormat2")}),dn=new a.VersionedStruct(a.uint16,{1:{xCoordinate:a.int16,yCoordinate:a.int16},2:{xCoordinate:a.int16,yCoordinate:a.int16,anchorPoint:a.uint16},3:{xCoordinate:a.int16,yCoordinate:a.int16,xDeviceTable:new a.Pointer(a.uint16,Ft),yDeviceTable:new a.Pointer(a.uint16,Ft)}}),pn=new a.Struct({entryAnchor:new a.Pointer(a.uint16,dn,{type:"parent"}),exitAnchor:new a.Pointer(a.uint16,dn,{type:"parent"})}),gn=new a.Struct({class:a.uint16,markAnchor:new a.Pointer(a.uint16,dn,{type:"parent"})}),yn=new a.Array(gn,a.uint16),vn=new a.Array(new a.Pointer(a.uint16,dn),function(t){return t.parent.classCount}),bn=new a.Array(vn,a.uint16),mn=new a.Array(new a.Pointer(a.uint16,dn),function(t){return t.parent.parent.classCount}),wn=new a.Array(mn,a.uint16),xn=new a.Array(new a.Pointer(a.uint16,wn),a.uint16),Sn=new a.VersionedStruct("lookupType",{1:new a.VersionedStruct(a.uint16,{1:{coverage:new a.Pointer(a.uint16,Bt),valueFormat:sn,value:new un},2:{coverage:new a.Pointer(a.uint16,Bt),valueFormat:sn,valueCount:a.uint16,values:new a.LazyArray(new un,"valueCount")}}),2:new a.VersionedStruct(a.uint16,{1:{coverage:new a.Pointer(a.uint16,Bt),valueFormat1:sn,valueFormat2:sn,pairSetCount:a.uint16,pairSets:new a.LazyArray(new a.Pointer(a.uint16,hn),"pairSetCount")},2:{coverage:new a.Pointer(a.uint16,Bt),valueFormat1:sn,valueFormat2:sn,classDef1:new a.Pointer(a.uint16,Rt),classDef2:new a.Pointer(a.uint16,Rt),class1Count:a.uint16,class2Count:a.uint16,classRecords:new a.LazyArray(new a.LazyArray(fn,"class2Count"),"class1Count")}}),3:{format:a.uint16,coverage:new a.Pointer(a.uint16,Bt),entryExitCount:a.uint16,entryExitRecords:new a.Array(pn,"entryExitCount")},4:{format:a.uint16,markCoverage:new a.Pointer(a.uint16,Bt),baseCoverage:new a.Pointer(a.uint16,Bt),classCount:a.uint16,markArray:new a.Pointer(a.uint16,yn),baseArray:new a.Pointer(a.uint16,bn)},5:{format:a.uint16,markCoverage:new a.Pointer(a.uint16,Bt),ligatureCoverage:new a.Pointer(a.uint16,Bt),classCount:a.uint16,markArray:new a.Pointer(a.uint16,yn),ligatureArray:new a.Pointer(a.uint16,xn)},6:{format:a.uint16,mark1Coverage:new a.Pointer(a.uint16,Bt),mark2Coverage:new a.Pointer(a.uint16,Bt),classCount:a.uint16,mark1Array:new a.Pointer(a.uint16,yn),mark2Array:new a.Pointer(a.uint16,bn)},7:Gt,8:Ht,9:{posFormat:a.uint16,lookupType:a.uint16,extension:new a.Pointer(a.uint32,Sn)}});Sn.versions[9].extension.type=Sn;var _n=new a.VersionedStruct(a.uint32,{header:{scriptList:new a.Pointer(a.uint16,Ct),featureList:new a.Pointer(a.uint16,Et),lookupList:new a.Pointer(a.uint16,new Tt(Sn))},65536:{},65537:{featureVariations:new a.Pointer(a.uint32,re)}}),kn=new a.Array(a.uint16,a.uint16),Cn=kn,An=new a.Struct({glyph:a.uint16,compCount:a.uint16,components:new a.Array(a.uint16,function(t){return t.compCount-1})}),Pn=new a.Array(new a.Pointer(a.uint16,An),a.uint16),En=new a.VersionedStruct("lookupType",{1:new a.VersionedStruct(a.uint16,{1:{coverage:new a.Pointer(a.uint16,Bt),deltaGlyphID:a.int16},2:{coverage:new a.Pointer(a.uint16,Bt),glyphCount:a.uint16,substitute:new a.LazyArray(a.uint16,"glyphCount")}}),2:{substFormat:a.uint16,coverage:new a.Pointer(a.uint16,Bt),count:a.uint16,sequences:new a.LazyArray(new a.Pointer(a.uint16,kn),"count")},3:{substFormat:a.uint16,coverage:new a.Pointer(a.uint16,Bt),count:a.uint16,alternateSet:new a.LazyArray(new a.Pointer(a.uint16,Cn),"count")},4:{substFormat:a.uint16,coverage:new a.Pointer(a.uint16,Bt),count:a.uint16,ligatureSets:new a.LazyArray(new a.Pointer(a.uint16,Pn),"count")},5:Gt,6:Ht,7:{substFormat:a.uint16,lookupType:a.uint16,extension:new a.Pointer(a.uint32,En)},8:{substFormat:a.uint16,coverage:new a.Pointer(a.uint16,Bt),backtrackCoverage:new a.Array(new a.Pointer(a.uint16,Bt),"backtrackGlyphCount"),lookaheadGlyphCount:a.uint16,lookaheadCoverage:new a.Array(new a.Pointer(a.uint16,Bt),"lookaheadGlyphCount"),glyphCount:a.uint16,substitutes:new a.Array(a.uint16,"glyphCount")}});En.versions[7].extension.type=En;var In=new a.VersionedStruct(a.uint32,{header:{scriptList:new a.Pointer(a.uint16,Ct),featureList:new a.Pointer(a.uint16,Et),lookupList:new a.Pointer(a.uint16,new Tt(En))},65536:{},65537:{featureVariations:new a.Pointer(a.uint32,re)}}),Tn=new a.Array(a.uint16,a.uint16),On=new a.Struct({shrinkageEnableGSUB:new a.Pointer(a.uint16,Tn),shrinkageDisableGSUB:new a.Pointer(a.uint16,Tn),shrinkageEnableGPOS:new a.Pointer(a.uint16,Tn),shrinkageDisableGPOS:new a.Pointer(a.uint16,Tn),shrinkageJstfMax:new a.Pointer(a.uint16,new Tt(Sn)),extensionEnableGSUB:new a.Pointer(a.uint16,Tn),extensionDisableGSUB:new a.Pointer(a.uint16,Tn),extensionEnableGPOS:new a.Pointer(a.uint16,Tn),extensionDisableGPOS:new a.Pointer(a.uint16,Tn),extensionJstfMax:new a.Pointer(a.uint16,new Tt(Sn))}),Ln=new a.Array(new a.Pointer(a.uint16,On),a.uint16),Bn=new a.Struct({tag:new a.String(4),jstfLangSys:new a.Pointer(a.uint16,Ln)}),Mn=new a.Struct({extenderGlyphs:new a.Pointer(a.uint16,new a.Array(a.uint16,a.uint16)),defaultLangSys:new a.Pointer(a.uint16,Ln),langSysCount:a.uint16,langSysRecords:new a.Array(Bn,"langSysCount")}),Rn=new a.Struct({tag:new a.String(4),script:new a.Pointer(a.uint16,Mn,{type:"parent"})}),Fn=new a.Struct({version:a.uint32,scriptCount:a.uint16,scriptList:new a.Array(Rn,"scriptCount")}),Dn=function(){function t(e){f(this,t),this._size=e}return t.prototype.decode=function(t,e){switch(this.size(0,e)){case 1:return t.readUInt8();case 2:return t.readUInt16BE();case 3:return t.readUInt24BE();case 4:return t.readUInt32BE()}},t.prototype.size=function(t,e){return v.resolveLength(this._size,null,e)},t}(),zn=new a.Struct({entry:new Dn(function(t){return 1+((48&t.parent.entryFormat)>>4)}),outerIndex:function(t){return t.entry>>1+(15&t.parent.entryFormat)},innerIndex:function(t){return t.entry&(1<<1+(15&t.parent.entryFormat))-1}}),Nn=new a.Struct({entryFormat:a.uint16,mapCount:a.uint16,mapData:new a.Array(zn,"mapCount")}),Un=new a.Struct({majorVersion:a.uint16,minorVersion:a.uint16,itemVariationStore:new a.Pointer(a.uint32,Jt),advanceWidthMapping:new a.Pointer(a.uint32,Nn),LSBMapping:new a.Pointer(a.uint32,Nn),RSBMapping:new a.Pointer(a.uint32,Nn)}),Wn=new a.Struct({format:a.uint32,length:a.uint32,offset:a.uint32}),Gn=new a.Struct({reserved:new a.Reserved(a.uint16,2),cbSignature:a.uint32,signature:new a.Buffer("cbSignature")}),Vn=new a.Struct({ulVersion:a.uint32,usNumSigs:a.uint16,usFlag:a.uint16,signatures:new a.Array(Wn,"usNumSigs"),signatureBlocks:new a.Array(Gn,"usNumSigs")}),jn=new a.Struct({rangeMaxPPEM:a.uint16,rangeGaspBehavior:new a.Bitfield(a.uint16,["grayscale","gridfit","symmetricSmoothing","symmetricGridfit"])}),Hn=new a.Struct({version:a.uint16,numRanges:a.uint16,gaspRanges:new a.Array(jn,"numRanges")}),qn=new a.Struct({pixelSize:a.uint8,maximumWidth:a.uint8,widths:new a.Array(a.uint8,function(t){return t.parent.parent.maxp.numGlyphs})}),Zn=new a.Struct({version:a.uint16,numRecords:a.int16,sizeDeviceRecord:a.int32,records:new a.Array(qn,"numRecords")}),Yn=new a.Struct({left:a.uint16,right:a.uint16,value:a.int16}),Xn=new a.Struct({firstGlyph:a.uint16,nGlyphs:a.uint16,offsets:new a.Array(a.uint16,"nGlyphs"),max:function(t){return t.offsets.length&&Math.max.apply(Math,t.offsets)}}),Kn=new a.Struct({off:function(t){return t._startOffset-t.parent.parent._startOffset},len:function(t){return((t.parent.leftTable.max-t.off)/t.parent.rowWidth+1)*(t.parent.rowWidth/2)},values:new a.LazyArray(a.int16,"len")}),Jn=new a.VersionedStruct("format",{0:{nPairs:a.uint16,searchRange:a.uint16,entrySelector:a.uint16,rangeShift:a.uint16,pairs:new a.Array(Yn,"nPairs")},2:{rowWidth:a.uint16,leftTable:new a.Pointer(a.uint16,Xn,{type:"parent"}),rightTable:new a.Pointer(a.uint16,Xn,{type:"parent"}),array:new a.Pointer(a.uint16,Kn,{type:"parent"})},3:{glyphCount:a.uint16,kernValueCount:a.uint8,leftClassCount:a.uint8,rightClassCount:a.uint8,flags:a.uint8,kernValue:new a.Array(a.int16,"kernValueCount"),leftClass:new a.Array(a.uint8,"glyphCount"),rightClass:new a.Array(a.uint8,"glyphCount"),kernIndex:new a.Array(a.uint8,function(t){return t.leftClassCount*t.rightClassCount})}}),Qn=new a.VersionedStruct("version",{0:{subVersion:a.uint16,length:a.uint16,format:a.uint8,coverage:new a.Bitfield(a.uint8,["horizontal","minimum","crossStream","override"]),subtable:Jn,padding:new a.Reserved(a.uint8,function(t){return t.length-t._currentOffset})},1:{length:a.uint32,coverage:new a.Bitfield(a.uint8,[null,null,null,null,null,"variation","crossStream","vertical"]),format:a.uint8,tupleIndex:a.uint16,subtable:Jn,padding:new a.Reserved(a.uint8,function(t){return t.length-t._currentOffset})}}),$n=new a.VersionedStruct(a.uint16,{0:{nTables:a.uint16,tables:new a.Array(Qn,"nTables")},1:{reserved:new a.Reserved(a.uint16),nTables:a.uint32,tables:new a.Array(Qn,"nTables")}}),tr=new a.Struct({version:a.uint16,numGlyphs:a.uint16,yPels:new a.Array(a.uint8,"numGlyphs")}),er=new a.Struct({version:a.uint16,fontNumber:a.uint32,pitch:a.uint16,xHeight:a.uint16,style:a.uint16,typeFamily:a.uint16,capHeight:a.uint16,symbolSet:a.uint16,typeface:new a.String(16),characterComplement:new a.String(8),fileName:new a.String(6),strokeWeight:new a.String(1),widthType:new a.String(1),serifStyle:a.uint8,reserved:new a.Reserved(a.uint8)}),nr=new a.Struct({bCharSet:a.uint8,xRatio:a.uint8,yStartRatio:a.uint8,yEndRatio:a.uint8}),rr=new a.Struct({yPelHeight:a.uint16,yMax:a.int16,yMin:a.int16}),ir=new a.Struct({recs:a.uint16,startsz:a.uint8,endsz:a.uint8,entries:new a.Array(rr,"recs")}),ar=new a.Struct({version:a.uint16,numRecs:a.uint16,numRatios:a.uint16,ratioRanges:new a.Array(nr,"numRatios"),offsets:new a.Array(a.uint16,"numRatios"),groups:new a.Array(ir,"numRecs")}),or=new a.Struct({version:a.uint16,ascent:a.int16,descent:a.int16,lineGap:a.int16,advanceHeightMax:a.int16,minTopSideBearing:a.int16,minBottomSideBearing:a.int16,yMaxExtent:a.int16,caretSlopeRise:a.int16,caretSlopeRun:a.int16,caretOffset:a.int16,reserved:new a.Reserved(a.int16,4),metricDataFormat:a.int16,numberOfMetrics:a.uint16}),sr=new a.Struct({advance:a.uint16,bearing:a.int16}),lr=new a.Struct({metrics:new a.LazyArray(sr,function(t){return t.parent.vhea.numberOfMetrics}),bearings:new a.LazyArray(a.int16,function(t){return t.parent.maxp.numGlyphs-t.parent.vhea.numberOfMetrics})}),ur=new a.Fixed(16,"BE",14),cr=new a.Struct({fromCoord:ur,toCoord:ur}),hr=new a.Struct({pairCount:a.uint16,correspondence:new a.Array(cr,"pairCount")}),fr=new a.Struct({version:a.fixed32,axisCount:a.uint32,segment:new a.Array(hr,"axisCount")}),dr=function(){function t(e,n,r){f(this,t),this.type=e,this.stream=n,this.parent=r,this.base=this.stream.pos,this._items=[]}return t.prototype.getItem=function(t){if(null==this._items[t]){var e=this.stream.pos;this.stream.pos=this.base+this.type.size(null,this.parent)*t,this._items[t]=this.type.decode(this.stream,this.parent),this.stream.pos=e}return this._items[t]},t.prototype.inspect=function(){return"[UnboundedArray "+this.type.constructor.name+"]"},t}(),pr=function(t){function e(n){return f(this,e),g(this,t.call(this,n,0))}return y(e,t),e.prototype.decode=function(t,e){return new dr(this.type,t,e)},e}(a.Array),gr=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.uint16;t=new(function(){function t(e){f(this,t),this.type=e}return t.prototype.decode=function(t,e){return e=e.parent.parent,this.type.decode(t,e)},t.prototype.size=function(t,e){return e=e.parent.parent,this.type.size(t,e)},t.prototype.encode=function(t,e,n){return n=n.parent.parent,this.type.encode(t,e,n)},t}())(t);var e=new a.Struct({unitSize:a.uint16,nUnits:a.uint16,searchRange:a.uint16,entrySelector:a.uint16,rangeShift:a.uint16}),n=new a.Struct({lastGlyph:a.uint16,firstGlyph:a.uint16,value:t}),r=new a.Struct({lastGlyph:a.uint16,firstGlyph:a.uint16,values:new a.Pointer(a.uint16,new a.Array(t,function(t){return t.lastGlyph-t.firstGlyph+1}),{type:"parent"})}),i=new a.Struct({glyph:a.uint16,value:t});return new a.VersionedStruct(a.uint16,{0:{values:new pr(t)},2:{binarySearchHeader:e,segments:new a.Array(n,function(t){return t.binarySearchHeader.nUnits})},4:{binarySearchHeader:e,segments:new a.Array(r,function(t){return t.binarySearchHeader.nUnits})},6:{binarySearchHeader:e,segments:new a.Array(i,function(t){return t.binarySearchHeader.nUnits})},8:{firstGlyph:a.uint16,count:a.uint16,values:new a.Array(t,"count")}})};function yr(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.uint16,n=w({newState:a.uint16,flags:a.uint16},t),r=new a.Struct(n),i=new pr(new a.Array(a.uint16,function(t){return t.nClasses}));return new a.Struct({nClasses:a.uint32,classTable:new a.Pointer(a.uint32,new gr(e)),stateArray:new a.Pointer(a.uint32,i),entryTable:new a.Pointer(a.uint32,new pr(r))})}var vr=new a.VersionedStruct("format",{0:{deltas:new a.Array(a.int16,32)},1:{deltas:new a.Array(a.int16,32),mappingData:new gr(a.uint16)},2:{standardGlyph:a.uint16,controlPoints:new a.Array(a.uint16,32)},3:{standardGlyph:a.uint16,controlPoints:new a.Array(a.uint16,32),mappingData:new gr(a.uint16)}}),br=new a.Struct({version:a.fixed32,format:a.uint16,defaultBaseline:a.uint16,subtable:vr}),mr=new a.Struct({setting:a.uint16,nameIndex:a.int16,name:function(t){return t.parent.parent.parent.name.records.fontFeatures[t.nameIndex]}}),wr=new a.Struct({feature:a.uint16,nSettings:a.uint16,settingTable:new a.Pointer(a.uint32,new a.Array(mr,"nSettings"),{type:"parent"}),featureFlags:new a.Bitfield(a.uint8,[null,null,null,null,null,null,"hasDefault","exclusive"]),defaultSetting:a.uint8,nameIndex:a.int16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameIndex]}}),xr=new a.Struct({version:a.fixed32,featureNameCount:a.uint16,reserved1:new a.Reserved(a.uint16),reserved2:new a.Reserved(a.uint32),featureNames:new a.Array(wr,"featureNameCount")}),Sr=new a.Struct({axisTag:new a.String(4),minValue:a.fixed32,defaultValue:a.fixed32,maxValue:a.fixed32,flags:a.uint16,nameID:a.uint16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameID]}}),_r=new a.Struct({nameID:a.uint16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameID]},flags:a.uint16,coord:new a.Array(a.fixed32,function(t){return t.parent.axisCount}),postscriptNameID:new a.Optional(a.uint16,function(t){return t.parent.instanceSize-t._currentOffset>0})}),kr=new a.Struct({version:a.fixed32,offsetToData:a.uint16,countSizePairs:a.uint16,axisCount:a.uint16,axisSize:a.uint16,instanceCount:a.uint16,instanceSize:a.uint16,axis:new a.Array(Sr,"axisCount"),instance:new a.Array(_r,"instanceCount")}),Cr=new a.Fixed(16,"BE",14),Ar=function(){function t(){f(this,t)}return t.decode=function(t,e){return e.flags?t.readUInt32BE():2*t.readUInt16BE()},t}(),Pr=new a.Struct({version:a.uint16,reserved:new a.Reserved(a.uint16),axisCount:a.uint16,globalCoordCount:a.uint16,globalCoords:new a.Pointer(a.uint32,new a.Array(new a.Array(Cr,"axisCount"),"globalCoordCount")),glyphCount:a.uint16,flags:a.uint16,offsetToData:a.uint32,offsets:new a.Array(new a.Pointer(Ar,"void",{relativeTo:"offsetToData",allowNull:!1}),function(t){return t.glyphCount+1})}),Er=new a.Struct({length:a.uint16,coverage:a.uint16,subFeatureFlags:a.uint32,stateTable:new function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.uint16,new a.Struct({version:function(){return 8},firstGlyph:a.uint16,values:new a.Array(a.uint8,a.uint16)})),n=w({newStateOffset:a.uint16,newState:function(t){return(t.newStateOffset-(t.parent.stateArray.base-t.parent._startOffset))/t.parent.nClasses},flags:a.uint16},t),r=new a.Struct(n),i=new pr(new a.Array(a.uint8,function(t){return t.nClasses}));return new a.Struct({nClasses:a.uint16,classTable:new a.Pointer(a.uint16,e),stateArray:new a.Pointer(a.uint16,i),entryTable:new a.Pointer(a.uint16,new pr(r))})}}),Ir=new a.Struct({justClass:a.uint32,beforeGrowLimit:a.fixed32,beforeShrinkLimit:a.fixed32,afterGrowLimit:a.fixed32,afterShrinkLimit:a.fixed32,growFlags:a.uint16,shrinkFlags:a.uint16}),Tr=new a.Array(Ir,a.uint32),Or=new a.VersionedStruct("actionType",{0:{lowerLimit:a.fixed32,upperLimit:a.fixed32,order:a.uint16,glyphs:new a.Array(a.uint16,a.uint16)},1:{addGlyph:a.uint16},2:{substThreshold:a.fixed32,addGlyph:a.uint16,substGlyph:a.uint16},3:{},4:{variationAxis:a.uint32,minimumLimit:a.fixed32,noStretchValue:a.fixed32,maximumLimit:a.fixed32},5:{flags:a.uint16,glyph:a.uint16}}),Lr=new a.Struct({actionClass:a.uint16,actionType:a.uint16,actionLength:a.uint32,actionData:Or,padding:new a.Reserved(a.uint8,function(t){return t.actionLength-t._currentOffset})}),Br=new a.Array(Lr,a.uint32),Mr=new a.Struct({lookupTable:new gr(new a.Pointer(a.uint16,Br))}),Rr=new a.Struct({classTable:new a.Pointer(a.uint16,Er,{type:"parent"}),wdcOffset:a.uint16,postCompensationTable:new a.Pointer(a.uint16,Mr,{type:"parent"}),widthDeltaClusters:new gr(new a.Pointer(a.uint16,Tr,{type:"parent",relativeTo:"wdcOffset"}))}),Fr=new a.Struct({version:a.uint32,format:a.uint16,horizontal:new a.Pointer(a.uint16,Rr),vertical:new a.Pointer(a.uint16,Rr)}),Dr={action:a.uint16},zr={markIndex:a.uint16,currentIndex:a.uint16},Nr={currentInsertIndex:a.uint16,markedInsertIndex:a.uint16},Ur=new a.Struct({items:new pr(new a.Pointer(a.uint32,new gr))}),Wr=new a.VersionedStruct("type",{0:{stateTable:new yr},1:{stateTable:new yr(zr),substitutionTable:new a.Pointer(a.uint32,Ur)},2:{stateTable:new yr(Dr),ligatureActions:new a.Pointer(a.uint32,new pr(a.uint32)),components:new a.Pointer(a.uint32,new pr(a.uint16)),ligatureList:new a.Pointer(a.uint32,new pr(a.uint16))},4:{lookupTable:new gr},5:{stateTable:new yr(Nr),insertionActions:new a.Pointer(a.uint32,new pr(a.uint16))}}),Gr=new a.Struct({length:a.uint32,coverage:a.uint24,type:a.uint8,subFeatureFlags:a.uint32,table:Wr,padding:new a.Reserved(a.uint8,function(t){return t.length-t._currentOffset})}),Vr=new a.Struct({featureType:a.uint16,featureSetting:a.uint16,enableFlags:a.uint32,disableFlags:a.uint32}),jr=new a.Struct({defaultFlags:a.uint32,chainLength:a.uint32,nFeatureEntries:a.uint32,nSubtables:a.uint32,features:new a.Array(Vr,"nFeatureEntries"),subtables:new a.Array(Gr,"nSubtables")}),Hr=new a.Struct({version:a.uint16,unused:new a.Reserved(a.uint16),nChains:a.uint32,chains:new a.Array(jr,"nChains")}),qr=new a.Struct({left:a.int16,top:a.int16,right:a.int16,bottom:a.int16}),Zr=new a.Struct({version:a.fixed32,format:a.uint16,lookupTable:new gr(qr)}),Yr={};Yr.cmap=V,Yr.head=j,Yr.hhea=H,Yr.hmtx=Z,Yr.maxp=Y,Yr.name=NameTable,Yr["OS/2"]=nt,Yr.post=it,Yr.fpgm=ot,Yr.loca=st,Yr.prep=lt,Yr["cvt "]=at,Yr.glyf=ut,Yr["CFF "]=xe,Yr.CFF2=xe,Yr.VORG=_e,Yr.EBLC=Me,Yr.CBLC=Yr.EBLC,Yr.sbix=Fe,Yr.COLR=Ne,Yr.CPAL=We,Yr.BASE=Qe,Yr.GDEF=on,Yr.GPOS=_n,Yr.GSUB=In,Yr.JSTF=Fn,Yr.HVAR=Un,Yr.DSIG=Vn,Yr.gasp=Hn,Yr.hdmx=Zn,Yr.kern=$n,Yr.LTSH=tr,Yr.PCLT=er,Yr.VDMX=ar,Yr.vhea=or,Yr.vmtx=lr,Yr.avar=fr,Yr.bsln=br,Yr.feat=xr,Yr.fvar=kr,Yr.gvar=Pr,Yr.just=Fr,Yr.morx=Hr,Yr.opbd=Zr;var Xr,Kr=new a.Struct({tag:new a.String(4),checkSum:a.uint32,offset:new a.Pointer(a.uint32,"void",{type:"global"}),length:a.uint32}),Jr=new a.Struct({tag:new a.String(4),numTables:a.uint16,searchRange:a.uint16,entrySelector:a.uint16,rangeShift:a.uint16,tables:new a.Array(Kr,"numTables")});function Qr(t,e){for(var n=0,r=t.length-1;n<=r;){var i=n+r>>1,a=e(t[i]);if(a<0)r=i-1;else{if(!(a>0))return i;n=i+1}}return-1}function $r(t,e){for(var n=[];t<e;)n.push(t++);return n}function ti(t,e,n,r,i){var a={};return Object.keys(r).forEach(function(t){a[t]=r[t]}),a.enumerable=!!a.enumerable,a.configurable=!!a.configurable,("value"in a||a.initializer)&&(a.writable=!0),a=n.slice().reverse().reduce(function(n,r){return r(t,e,n)||n},a),i&&void 0!==a.initializer&&(a.value=a.initializer?a.initializer.call(i):void 0,a.initializer=void 0),void 0===a.initializer&&(Object.defineProperty(t,e,a),a=null),a}Jr.process=function(){var t={},e=this.tables,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;t[a.tag]=a}this.tables=t},Jr.preEncode=function(t){var e=[];for(var n in this.tables){var r=this.tables[n];r&&e.push({tag:n,checkSum:0,offset:new a.VoidPointer(Yr[n],r),length:Yr[n].size(r)})}this.tag="true",this.numTables=e.length,this.tables=e,this.searchRange=16*Math.floor(Math.log(this.numTables)/Math.LN2),this.entrySelector=Math.floor(this.searchRange/Math.LN2),this.rangeShift=16*this.numTables-this.searchRange};try{var ei=n(52)}catch(t){}var ni=(ti((Xr=function(){function t(e){if(f(this,t),this.encoding=null,this.cmap=this.findSubtable(e,[[3,10],[0,6],[0,4],[3,1],[0,3],[0,2],[0,1],[0,0]]),!this.cmap&&ei){var n=e.tables,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=X(o.platformID,o.encodingID,o.table.language-1);ei.encodingExists(l)&&(this.cmap=o.table,this.encoding=l)}}if(!this.cmap)throw new Error("Could not find a supported cmap table");this.uvs=this.findSubtable(e,[[0,5]]),this.uvs&&14!==this.uvs.version&&(this.uvs=null)}return t.prototype.findSubtable=function(t,e){var n=e,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=o[0],u=o[1],c=t.tables,h=Array.isArray(c),f=0;for(c=h?c:s(c);;){var d;if(h){if(f>=c.length)break;d=c[f++]}else{if((f=c.next()).done)break;d=f.value}var p=d;if(p.platformID===l&&p.encodingID===u)return p.table}}return null},t.prototype.lookup=function(t,e){if(this.encoding){var n=ei.encode(x(t),this.encoding);t=0;for(var r=0;r<n.length;r++)t=t<<8|n[r]}else if(e){var i=this.getVariationSelector(t,e);if(i)return i}var a=this.cmap;switch(a.version){case 0:return a.codeMap.get(t)||0;case 4:for(var o=0,s=a.segCount-1;o<=s;){var l=o+s>>1;if(t<a.startCode.get(l))s=l-1;else{if(!(t>a.endCode.get(l))){var u=a.idRangeOffset.get(l),c=void 0;if(0===u)c=t+a.idDelta.get(l);else{var h=u/2+(t-a.startCode.get(l))-(a.segCount-l);0!==(c=a.glyphIndexArray.get(h)||0)&&(c+=a.idDelta.get(l))}return 65535&c}o=l+1}}return 0;case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return a.glyphIndices.get(t-a.firstCode)||0;case 12:case 13:for(var f=0,d=a.nGroups-1;f<=d;){var p=f+d>>1,g=a.groups.get(p);if(t<g.startCharCode)d=p-1;else{if(!(t>g.endCharCode))return 12===a.version?g.glyphID+(t-g.startCharCode):g.glyphID;f=p+1}}return 0;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format "+a.version)}},t.prototype.getVariationSelector=function(t,e){if(!this.uvs)return 0;var n=this.uvs.varSelectors.toArray(),r=Qr(n,function(t){return e-t.varSelector}),i=n[r];return-1!==r&&i.defaultUVS&&(r=Qr(i.defaultUVS,function(e){return t<e.startUnicodeValue?-1:t>e.startUnicodeValue+e.additionalCount?1:0})),-1!==r&&i.nonDefaultUVS&&-1!==(r=Qr(i.nonDefaultUVS,function(e){return t-e.unicodeValue}))?i.nonDefaultUVS[r].glyphID:0},t.prototype.getCharacterSet=function(){var t=this.cmap;switch(t.version){case 0:return $r(0,t.codeMap.length);case 4:for(var e=[],n=t.endCode.toArray(),r=0;r<n.length;r++){var i=n[r]+1,a=t.startCode.get(r);e.push.apply(e,$r(a,i))}return e;case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return $r(t.firstCode,t.firstCode+t.glyphIndices.length);case 12:case 13:var o=[],l=t.groups.toArray(),u=Array.isArray(l),c=0;for(l=u?l:s(l);;){var h;if(u){if(c>=l.length)break;h=l[c++]}else{if((c=l.next()).done)break;h=c.value}var f=h;o.push.apply(o,$r(f.startCharCode,f.endCharCode+1))}return o;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format "+t.version)}},t.prototype.codePointsForGlyph=function(t){var e=this.cmap;switch(e.version){case 0:for(var n=[],r=0;r<256;r++)e.codeMap.get(r)===t&&n.push(r);return n;case 4:for(var i=[],a=0;a<e.segCount;a++)for(var o=e.endCode.get(a),l=e.startCode.get(a),u=e.idRangeOffset.get(a),c=e.idDelta.get(a),h=l;h<=o;h++){var f=0;if(0===u)f=h+c;else{var d=u/2+(h-l)-(e.segCount-a);0!==(f=e.glyphIndexArray.get(d)||0)&&(f+=c)}f===t&&i.push(h)}return i;case 12:var p=[],g=e.groups.toArray(),y=Array.isArray(g),v=0;for(g=y?g:s(g);;){var b;if(y){if(v>=g.length)break;b=g[v++]}else{if((v=g.next()).done)break;b=v.value}var m=b;t>=m.glyphID&&t<=m.glyphID+(m.endCharCode-m.startCharCode)&&p.push(m.startCharCode+(t-m.glyphID))}return p;case 13:var w=[],x=e.groups.toArray(),S=Array.isArray(x),_=0;for(x=S?x:s(x);;){var k;if(S){if(_>=x.length)break;k=x[_++]}else{if((_=x.next()).done)break;k=_.value}var C=k;t===C.glyphID&&w.push.apply(w,$r(C.startCharCode,C.endCharCode+1))}return w;default:throw new Error("Unknown cmap format "+e.version)}},t}()).prototype,"getCharacterSet",[B],o(Xr.prototype,"getCharacterSet"),Xr.prototype),ti(Xr.prototype,"codePointsForGlyph",[B],o(Xr.prototype,"codePointsForGlyph"),Xr.prototype),Xr),ri=function(){function t(e){f(this,t),this.kern=e.kern}return t.prototype.process=function(t,e){for(var n=0;n<t.length-1;n++){var r=t[n].id,i=t[n+1].id;e[n].xAdvance+=this.getKerning(r,i)}},t.prototype.getKerning=function(t,e){var n=0,r=this.kern.tables,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;if(!l.coverage.crossStream){switch(l.version){case 0:if(!l.coverage.horizontal)continue;break;case 1:if(l.coverage.vertical||l.coverage.variation)continue;break;default:throw new Error("Unsupported kerning table version "+l.version)}var u=0,c=l.subtable;switch(l.format){case 0:var h=Qr(c.pairs,function(n){return t-n.left||e-n.right});h>=0&&(u=c.pairs[h].value);break;case 2:var f=0,d=0;f=t>=c.leftTable.firstGlyph&&t<c.leftTable.firstGlyph+c.leftTable.nGlyphs?c.leftTable.offsets[t-c.leftTable.firstGlyph]:c.array.off,e>=c.rightTable.firstGlyph&&e<c.rightTable.firstGlyph+c.rightTable.nGlyphs&&(d=c.rightTable.offsets[e-c.rightTable.firstGlyph]);var p=(f+d-c.array.off)/2;u=c.array.values.get(p);break;case 3:if(t>=c.glyphCount||e>=c.glyphCount)return 0;u=c.kernValue[c.kernIndex[c.leftClass[t]*c.rightClassCount+c.rightClass[e]]];break;default:throw new Error("Unsupported kerning sub-table format "+l.format)}l.coverage.override?n=u:n+=u}}return n},t}(),ii=function(){function t(e){f(this,t),this.font=e}return t.prototype.positionGlyphs=function(t,e){for(var n=0,r=0,i=0;i<t.length;i++){t[i].isMark?r=i:(n!==r&&this.positionCluster(t,e,n,r),n=r=i)}return n!==r&&this.positionCluster(t,e,n,r),e},t.prototype.positionCluster=function(t,e,n,r){var i=t[n],a=i.cbox.copy();i.codePoints.length>1&&(a.minX+=(i.codePoints.length-1)*a.width/i.codePoints.length);for(var o=-e[n].xAdvance,s=0,l=this.font.unitsPerEm/16,u=n+1;u<=r;u++){var c=t[u],h=c.cbox,f=e[u],d=this.getCombiningClass(c.codePoints[0]);if("Not_Reordered"!==d){switch(f.xOffset=f.yOffset=0,d){case"Double_Above":case"Double_Below":f.xOffset+=a.minX-h.width/2-h.minX;break;case"Attached_Below_Left":case"Below_Left":case"Above_Left":f.xOffset+=a.minX-h.minX;break;case"Attached_Above_Right":case"Below_Right":case"Above_Right":f.xOffset+=a.maxX-h.width-h.minX;break;default:f.xOffset+=a.minX+(a.width-h.width)/2-h.minX}switch(d){case"Double_Below":case"Below_Left":case"Below":case"Below_Right":case"Attached_Below_Left":case"Attached_Below":"Attached_Below_Left"!==d&&"Attached_Below"!==d||(a.minY+=l),f.yOffset=-a.minY-h.maxY,a.minY+=h.height;break;case"Double_Above":case"Above_Left":case"Above":case"Above_Right":case"Attached_Above":case"Attached_Above_Right":"Attached_Above"!==d&&"Attached_Above_Right"!==d||(a.maxY+=l),f.yOffset=a.maxY-h.minY,a.maxY+=h.height}f.xAdvance=f.yAdvance=0,f.xOffset+=o,f.yOffset+=s}else o-=f.xAdvance,s-=f.yAdvance}},t.prototype.getCombiningClass=function(t){var e=k.getCombiningClass(t);if(3584==(-256&t))if("Not_Reordered"===e)switch(t){case 3633:case 3636:case 3637:case 3638:case 3639:case 3655:case 3660:case 3645:case 3662:return"Above_Right";case 3761:case 3764:case 3765:case 3766:case 3767:case 3771:case 3788:case 3789:return"Above";case 3772:return"Below"}else if(3642===t)return"Below_Right";switch(e){case"CCC10":case"CCC11":case"CCC12":case"CCC13":case"CCC14":case"CCC15":case"CCC16":case"CCC17":case"CCC18":case"CCC20":case"CCC22":return"Below";case"CCC23":return"Attached_Above";case"CCC24":return"Above_Right";case"CCC25":case"CCC19":return"Above_Left";case"CCC26":return"Above";case"CCC21":break;case"CCC27":case"CCC28":case"CCC30":case"CCC31":case"CCC33":case"CCC34":case"CCC35":case"CCC36":return"Above";case"CCC29":case"CCC32":return"Below";case"CCC103":return"Below_Right";case"CCC107":return"Above_Right";case"CCC118":return"Below";case"CCC122":return"Above";case"CCC129":case"CCC132":return"Below";case"CCC130":return"Above"}return e},t}(),ai=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1/0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1/0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1/0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1/0;f(this,t),this.minX=e,this.minY=n,this.maxX=r,this.maxY=i}return t.prototype.addPoint=function(t,e){Math.abs(t)!==1/0&&(t<this.minX&&(this.minX=t),t>this.maxX&&(this.maxX=t)),Math.abs(e)!==1/0&&(e<this.minY&&(this.minY=e),e>this.maxY&&(this.maxY=e))},t.prototype.copy=function(){return new t(this.minX,this.minY,this.maxX,this.maxY)},d(t,[{key:"width",get:function(){return this.maxX-this.minX}},{key:"height",get:function(){return this.maxY-this.minY}}]),t}(),oi={Caucasian_Albanian:"aghb",Arabic:"arab",Imperial_Aramaic:"armi",Armenian:"armn",Avestan:"avst",Balinese:"bali",Bamum:"bamu",Bassa_Vah:"bass",Batak:"batk",Bengali:["bng2","beng"],Bopomofo:"bopo",Brahmi:"brah",Braille:"brai",Buginese:"bugi",Buhid:"buhd",Chakma:"cakm",Canadian_Aboriginal:"cans",Carian:"cari",Cham:"cham",Cherokee:"cher",Coptic:"copt",Cypriot:"cprt",Cyrillic:"cyrl",Devanagari:["dev2","deva"],Deseret:"dsrt",Duployan:"dupl",Egyptian_Hieroglyphs:"egyp",Elbasan:"elba",Ethiopic:"ethi",Georgian:"geor",Glagolitic:"glag",Gothic:"goth",Grantha:"gran",Greek:"grek",Gujarati:["gjr2","gujr"],Gurmukhi:["gur2","guru"],Hangul:"hang",Han:"hani",Hanunoo:"hano",Hebrew:"hebr",Hiragana:"hira",Pahawh_Hmong:"hmng",Katakana_Or_Hiragana:"hrkt",Old_Italic:"ital",Javanese:"java",Kayah_Li:"kali",Katakana:"kana",Kharoshthi:"khar",Khmer:"khmr",Khojki:"khoj",Kannada:["knd2","knda"],Kaithi:"kthi",Tai_Tham:"lana",Lao:"lao ",Latin:"latn",Lepcha:"lepc",Limbu:"limb",Linear_A:"lina",Linear_B:"linb",Lisu:"lisu",Lycian:"lyci",Lydian:"lydi",Mahajani:"mahj",Mandaic:"mand",Manichaean:"mani",Mende_Kikakui:"mend",Meroitic_Cursive:"merc",Meroitic_Hieroglyphs:"mero",Malayalam:["mlm2","mlym"],Modi:"modi",Mongolian:"mong",Mro:"mroo",Meetei_Mayek:"mtei",Myanmar:["mym2","mymr"],Old_North_Arabian:"narb",Nabataean:"nbat",Nko:"nko ",Ogham:"ogam",Ol_Chiki:"olck",Old_Turkic:"orkh",Oriya:["ory2","orya"],Osmanya:"osma",Palmyrene:"palm",Pau_Cin_Hau:"pauc",Old_Permic:"perm",Phags_Pa:"phag",Inscriptional_Pahlavi:"phli",Psalter_Pahlavi:"phlp",Phoenician:"phnx",Miao:"plrd",Inscriptional_Parthian:"prti",Rejang:"rjng",Runic:"runr",Samaritan:"samr",Old_South_Arabian:"sarb",Saurashtra:"saur",Shavian:"shaw",Sharada:"shrd",Siddham:"sidd",Khudawadi:"sind",Sinhala:"sinh",Sora_Sompeng:"sora",Sundanese:"sund",Syloti_Nagri:"sylo",Syriac:"syrc",Tagbanwa:"tagb",Takri:"takr",Tai_Le:"tale",New_Tai_Lue:"talu",Tamil:["tml2","taml"],Tai_Viet:"tavt",Telugu:["tel2","telu"],Tifinagh:"tfng",Tagalog:"tglg",Thaana:"thaa",Thai:"thai",Tibetan:"tibt",Tirhuta:"tirh",Ugaritic:"ugar",Vai:"vai ",Warang_Citi:"wara",Old_Persian:"xpeo",Cuneiform:"xsux",Yi:"yi  ",Inherited:"zinh",Common:"zyyy",Unknown:"zzzz"},si={};for(var li in oi){var ui=oi[li];if(Array.isArray(ui)){var ci=ui,hi=Array.isArray(ci),fi=0;for(ci=hi?ci:s(ci);;){var di;if(hi){if(fi>=ci.length)break;di=ci[fi++]}else{if((fi=ci.next()).done)break;di=fi.value}si[di]=li}}else si[ui]=li}var pi={arab:!0,hebr:!0,syrc:!0,thaa:!0,cprt:!0,khar:!0,phnx:!0,"nko ":!0,lydi:!0,avst:!0,armi:!0,phli:!0,prti:!0,sarb:!0,orkh:!0,samr:!0,mand:!0,merc:!0,mero:!0,mani:!0,mend:!0,nbat:!0,narb:!0,palm:!0,phlp:!0};function gi(t){return pi[t]?"rtl":"ltr"}for(var yi=function(){function t(e,n,r,i,a){if(f(this,t),this.glyphs=e,this.positions=null,this.script=r,this.language=i||null,this.direction=a||gi(r),this.features={},Array.isArray(n)){var o=n,l=Array.isArray(o),u=0;for(o=l?o:s(o);;){var h;if(l){if(u>=o.length)break;h=o[u++]}else{if((u=o.next()).done)break;h=u.value}var d=h;this.features[d]=!0}}else"object"===(void 0===n?"undefined":c(n))&&(this.features=n)}return d(t,[{key:"advanceWidth",get:function(){var t=0,e=this.positions,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}t+=i.xAdvance}return t}},{key:"advanceHeight",get:function(){var t=0,e=this.positions,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}t+=i.yAdvance}return t}},{key:"bbox",get:function(){for(var t=new ai,e=0,n=0,r=0;r<this.glyphs.length;r++){var i=this.glyphs[r],a=this.positions[r],o=i.bbox;t.addPoint(o.minX+e+a.xOffset,o.minY+n+a.yOffset),t.addPoint(o.maxX+e+a.xOffset,o.maxY+n+a.yOffset),e+=a.xAdvance,n+=a.yAdvance}return t}}]),t}(),vi={allTypographicFeatures:{code:0,exclusive:!1,allTypeFeatures:0},ligatures:{code:1,exclusive:!1,requiredLigatures:0,commonLigatures:2,rareLigatures:4,rebusPictures:8,diphthongLigatures:10,squaredLigatures:12,abbrevSquaredLigatures:14,symbolLigatures:16,contextualLigatures:18,historicalLigatures:20},cursiveConnection:{code:2,exclusive:!0,unconnected:0,partiallyConnected:1,cursive:2},letterCase:{code:3,exclusive:!0},verticalSubstitution:{code:4,exclusive:!1,substituteVerticalForms:0},linguisticRearrangement:{code:5,exclusive:!1,linguisticRearrangement:0},numberSpacing:{code:6,exclusive:!0,monospacedNumbers:0,proportionalNumbers:1,thirdWidthNumbers:2,quarterWidthNumbers:3},smartSwash:{code:8,exclusive:!1,wordInitialSwashes:0,wordFinalSwashes:2,nonFinalSwashes:8},diacritics:{code:9,exclusive:!0,showDiacritics:0,hideDiacritics:1,decomposeDiacritics:2},verticalPosition:{code:10,exclusive:!0,normalPosition:0,superiors:1,inferiors:2,ordinals:3,scientificInferiors:4},fractions:{code:11,exclusive:!0,noFractions:0,verticalFractions:1,diagonalFractions:2},overlappingCharacters:{code:13,exclusive:!1,preventOverlap:0},typographicExtras:{code:14,exclusive:!1,slashedZero:4},mathematicalExtras:{code:15,exclusive:!1,mathematicalGreek:10},ornamentSets:{code:16,exclusive:!0,noOrnaments:0,dingbats:1,piCharacters:2,fleurons:3,decorativeBorders:4,internationalSymbols:5,mathSymbols:6},characterAlternatives:{code:17,exclusive:!0,noAlternates:0},designComplexity:{code:18,exclusive:!0,designLevel1:0,designLevel2:1,designLevel3:2,designLevel4:3,designLevel5:4},styleOptions:{code:19,exclusive:!0,noStyleOptions:0,displayText:1,engravedText:2,illuminatedCaps:3,titlingCaps:4,tallCaps:5},characterShape:{code:20,exclusive:!0,traditionalCharacters:0,simplifiedCharacters:1,JIS1978Characters:2,JIS1983Characters:3,JIS1990Characters:4,traditionalAltOne:5,traditionalAltTwo:6,traditionalAltThree:7,traditionalAltFour:8,traditionalAltFive:9,expertCharacters:10,JIS2004Characters:11,hojoCharacters:12,NLCCharacters:13,traditionalNamesCharacters:14},numberCase:{code:21,exclusive:!0,lowerCaseNumbers:0,upperCaseNumbers:1},textSpacing:{code:22,exclusive:!0,proportionalText:0,monospacedText:1,halfWidthText:2,thirdWidthText:3,quarterWidthText:4,altProportionalText:5,altHalfWidthText:6},transliteration:{code:23,exclusive:!0,noTransliteration:0},annotation:{code:24,exclusive:!0,noAnnotation:0,boxAnnotation:1,roundedBoxAnnotation:2,circleAnnotation:3,invertedCircleAnnotation:4,parenthesisAnnotation:5,periodAnnotation:6,romanNumeralAnnotation:7,diamondAnnotation:8,invertedBoxAnnotation:9,invertedRoundedBoxAnnotation:10},kanaSpacing:{code:25,exclusive:!0,fullWidthKana:0,proportionalKana:1},ideographicSpacing:{code:26,exclusive:!0,fullWidthIdeographs:0,proportionalIdeographs:1,halfWidthIdeographs:2},unicodeDecomposition:{code:27,exclusive:!1,canonicalComposition:0,compatibilityComposition:2,transcodingComposition:4},rubyKana:{code:28,exclusive:!1,rubyKana:2},CJKSymbolAlternatives:{code:29,exclusive:!0,noCJKSymbolAlternatives:0,CJKSymbolAltOne:1,CJKSymbolAltTwo:2,CJKSymbolAltThree:3,CJKSymbolAltFour:4,CJKSymbolAltFive:5},ideographicAlternatives:{code:30,exclusive:!0,noIdeographicAlternatives:0,ideographicAltOne:1,ideographicAltTwo:2,ideographicAltThree:3,ideographicAltFour:4,ideographicAltFive:5},CJKVerticalRomanPlacement:{code:31,exclusive:!0,CJKVerticalRomanCentered:0,CJKVerticalRomanHBaseline:1},italicCJKRoman:{code:32,exclusive:!1,CJKItalicRoman:2},caseSensitiveLayout:{code:33,exclusive:!1,caseSensitiveLayout:0,caseSensitiveSpacing:2},alternateKana:{code:34,exclusive:!1,alternateHorizKana:0,alternateVertKana:2},stylisticAlternatives:{code:35,exclusive:!1,noStylisticAlternates:0,stylisticAltOne:2,stylisticAltTwo:4,stylisticAltThree:6,stylisticAltFour:8,stylisticAltFive:10,stylisticAltSix:12,stylisticAltSeven:14,stylisticAltEight:16,stylisticAltNine:18,stylisticAltTen:20,stylisticAltEleven:22,stylisticAltTwelve:24,stylisticAltThirteen:26,stylisticAltFourteen:28,stylisticAltFifteen:30,stylisticAltSixteen:32,stylisticAltSeventeen:34,stylisticAltEighteen:36,stylisticAltNineteen:38,stylisticAltTwenty:40},contextualAlternates:{code:36,exclusive:!1,contextualAlternates:0,swashAlternates:2,contextualSwashAlternates:4},lowerCase:{code:37,exclusive:!0,defaultLowerCase:0,lowerCaseSmallCaps:1,lowerCasePetiteCaps:2},upperCase:{code:38,exclusive:!0,defaultUpperCase:0,upperCaseSmallCaps:1,upperCasePetiteCaps:2},languageTag:{code:39,exclusive:!0},CJKRomanSpacing:{code:103,exclusive:!0,halfWidthCJKRoman:0,proportionalCJKRoman:1,defaultCJKRoman:2,fullWidthCJKRoman:3}},bi=function(t,e){return[vi[t].code,vi[t][e]]},mi={rlig:bi("ligatures","requiredLigatures"),clig:bi("ligatures","contextualLigatures"),dlig:bi("ligatures","rareLigatures"),hlig:bi("ligatures","historicalLigatures"),liga:bi("ligatures","commonLigatures"),hist:bi("ligatures","historicalLigatures"),smcp:bi("lowerCase","lowerCaseSmallCaps"),pcap:bi("lowerCase","lowerCasePetiteCaps"),frac:bi("fractions","diagonalFractions"),dnom:bi("fractions","diagonalFractions"),numr:bi("fractions","diagonalFractions"),afrc:bi("fractions","verticalFractions"),case:bi("caseSensitiveLayout","caseSensitiveLayout"),ccmp:bi("unicodeDecomposition","canonicalComposition"),cpct:bi("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),valt:bi("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),swsh:bi("contextualAlternates","swashAlternates"),cswh:bi("contextualAlternates","contextualSwashAlternates"),curs:bi("cursiveConnection","cursive"),c2pc:bi("upperCase","upperCasePetiteCaps"),c2sc:bi("upperCase","upperCaseSmallCaps"),init:bi("smartSwash","wordInitialSwashes"),fin2:bi("smartSwash","wordFinalSwashes"),medi:bi("smartSwash","nonFinalSwashes"),med2:bi("smartSwash","nonFinalSwashes"),fin3:bi("smartSwash","wordFinalSwashes"),fina:bi("smartSwash","wordFinalSwashes"),pkna:bi("kanaSpacing","proportionalKana"),half:bi("textSpacing","halfWidthText"),halt:bi("textSpacing","altHalfWidthText"),hkna:bi("alternateKana","alternateHorizKana"),vkna:bi("alternateKana","alternateVertKana"),ital:bi("italicCJKRoman","CJKItalicRoman"),lnum:bi("numberCase","upperCaseNumbers"),onum:bi("numberCase","lowerCaseNumbers"),mgrk:bi("mathematicalExtras","mathematicalGreek"),calt:bi("contextualAlternates","contextualAlternates"),vrt2:bi("verticalSubstitution","substituteVerticalForms"),vert:bi("verticalSubstitution","substituteVerticalForms"),tnum:bi("numberSpacing","monospacedNumbers"),pnum:bi("numberSpacing","proportionalNumbers"),sups:bi("verticalPosition","superiors"),subs:bi("verticalPosition","inferiors"),ordn:bi("verticalPosition","ordinals"),pwid:bi("textSpacing","proportionalText"),hwid:bi("textSpacing","halfWidthText"),qwid:bi("textSpacing","quarterWidthText"),twid:bi("textSpacing","thirdWidthText"),fwid:bi("textSpacing","proportionalText"),palt:bi("textSpacing","altProportionalText"),trad:bi("characterShape","traditionalCharacters"),smpl:bi("characterShape","simplifiedCharacters"),jp78:bi("characterShape","JIS1978Characters"),jp83:bi("characterShape","JIS1983Characters"),jp90:bi("characterShape","JIS1990Characters"),jp04:bi("characterShape","JIS2004Characters"),expt:bi("characterShape","expertCharacters"),hojo:bi("characterShape","hojoCharacters"),nlck:bi("characterShape","NLCCharacters"),tnam:bi("characterShape","traditionalNamesCharacters"),ruby:bi("rubyKana","rubyKana"),titl:bi("styleOptions","titlingCaps"),zero:bi("typographicExtras","slashedZero"),ss01:bi("stylisticAlternatives","stylisticAltOne"),ss02:bi("stylisticAlternatives","stylisticAltTwo"),ss03:bi("stylisticAlternatives","stylisticAltThree"),ss04:bi("stylisticAlternatives","stylisticAltFour"),ss05:bi("stylisticAlternatives","stylisticAltFive"),ss06:bi("stylisticAlternatives","stylisticAltSix"),ss07:bi("stylisticAlternatives","stylisticAltSeven"),ss08:bi("stylisticAlternatives","stylisticAltEight"),ss09:bi("stylisticAlternatives","stylisticAltNine"),ss10:bi("stylisticAlternatives","stylisticAltTen"),ss11:bi("stylisticAlternatives","stylisticAltEleven"),ss12:bi("stylisticAlternatives","stylisticAltTwelve"),ss13:bi("stylisticAlternatives","stylisticAltThirteen"),ss14:bi("stylisticAlternatives","stylisticAltFourteen"),ss15:bi("stylisticAlternatives","stylisticAltFifteen"),ss16:bi("stylisticAlternatives","stylisticAltSixteen"),ss17:bi("stylisticAlternatives","stylisticAltSeventeen"),ss18:bi("stylisticAlternatives","stylisticAltEighteen"),ss19:bi("stylisticAlternatives","stylisticAltNineteen"),ss20:bi("stylisticAlternatives","stylisticAltTwenty")},wi=1;wi<=99;wi++)mi["cv"+("00"+wi).slice(-2)]=[vi.characterAlternatives.code,wi];var xi,Si={};for(var _i in mi){var ki=mi[_i];null==Si[ki[0]]&&(Si[ki[0]]={}),Si[ki[0]][ki[1]]=_i}function Ci(t){var e=t[0],n=t[1];if(isNaN(e))var r=vi[e]&&vi[e].code;else r=e;if(isNaN(n))var i=vi[e]&&vi[e][n];else i=n;return[r,i]}var Ai,Pi,Ei,Ii,Ti,Oi,Li,Bi=(xi=function(){function t(e){f(this,t),this.table=e}return t.prototype.lookup=function(t){switch(this.table.version){case 0:return this.table.values.getItem(t);case 2:case 4:for(var e=0,n=this.table.binarySearchHeader.nUnits-1;e<=n;){var r=e+n>>1;if(65535===(o=this.table.segments[r]).firstGlyph)return null;if(t<o.firstGlyph)n=r-1;else{if(!(t>o.lastGlyph))return 2===this.table.version?o.value:o.values[t-o.firstGlyph];e=r+1}}return null;case 6:for(var i=0,a=this.table.binarySearchHeader.nUnits-1;i<=a;){var o;r=i+a>>1;if(65535===(o=this.table.segments[r]).glyph)return null;if(t<o.glyph)a=r-1;else{if(!(t>o.glyph))return o.value;i=r+1}}return null;case 8:return this.table.values[t-this.table.firstGlyph];default:throw new Error("Unknown lookup table format: "+this.table.version)}},t.prototype.glyphsForValue=function(t){var e=[];switch(this.table.version){case 2:case 4:var n=this.table.segments,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;if(2===this.table.version&&o.value===t)e.push.apply(e,$r(o.firstGlyph,o.lastGlyph+1));else for(var l=0;l<o.values.length;l++)o.values[l]===t&&e.push(o.firstGlyph+l)}break;case 6:var u=this.table.segments,c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d=f;d.value===t&&e.push(d.glyph)}break;case 8:for(var p=0;p<this.table.values.length;p++)this.table.values[p]===t&&e.push(this.table.firstGlyph+p);break;default:throw new Error("Unknown lookup table format: "+this.table.version)}return e},t}(),Ai=xi.prototype,Pi="glyphsForValue",Ei=[B],Ii=o(xi.prototype,"glyphsForValue"),Ti=xi.prototype,Oi={},Object.keys(Ii).forEach(function(t){Oi[t]=Ii[t]}),Oi.enumerable=!!Oi.enumerable,Oi.configurable=!!Oi.configurable,("value"in Oi||Oi.initializer)&&(Oi.writable=!0),Oi=Ei.slice().reverse().reduce(function(t,e){return e(Ai,Pi,t)||t},Oi),Ti&&void 0!==Oi.initializer&&(Oi.value=Oi.initializer?Oi.initializer.call(Ti):void 0,Oi.initializer=void 0),void 0===Oi.initializer&&(Object.defineProperty(Ai,Pi,Oi),Oi=null),xi),Mi=function(){function t(e){f(this,t),this.stateTable=e,this.lookupTable=new Bi(e.classTable)}return t.prototype.process=function(t,e,n){for(var r=0,i=e?t.length-1:0,a=e?-1:1;1===a&&i<=t.length||-1===a&&i>=-1;){var o=null,s=1,l=!0;i===t.length||-1===i?s=0:65535===(o=t[i]).id?s=2:null==(s=this.lookupTable.lookup(o.id))&&(s=1);var u=this.stateTable.stateArray.getItem(r)[s],c=this.stateTable.entryTable.getItem(u);0!==s&&2!==s&&(n(o,c,i),l=!(16384&c.flags)),r=c.newState,l&&(i+=a)}return t},t.prototype.traverse=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new _;if(!n.has(e)){n.add(e);for(var r=this.stateTable,i=r.nClasses,a=r.stateArray,o=r.entryTable,l=a.getItem(e),u=4;u<i;u++){var c=l[u],h=o.getItem(c),f=this.lookupTable.glyphsForValue(u),d=Array.isArray(f),p=0;for(f=d?f:s(f);;){var g;if(d){if(p>=f.length)break;g=f[p++]}else{if((p=f.next()).done)break;g=p.value}var y=g;t.enter&&t.enter(y,h),0!==h.newState&&this.traverse(t,h.newState,n),t.exit&&t.exit(y,h)}}}},t}();var Ri,Fi,Di,zi,Ni,Ui,Wi=(Li=function(){function t(e){f(this,t),this.processIndicRearragement=this.processIndicRearragement.bind(this),this.processContextualSubstitution=this.processContextualSubstitution.bind(this),this.processLigature=this.processLigature.bind(this),this.processNoncontextualSubstitutions=this.processNoncontextualSubstitutions.bind(this),this.processGlyphInsertion=this.processGlyphInsertion.bind(this),this.font=e,this.morx=e.morx,this.inputCache=null}return t.prototype.process=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.morx.chains,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=o.defaultFlags,u=o.features,c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d,p=f;(d=e[p.featureType])&&d[p.featureSetting]&&(l&=p.disableFlags,l|=p.enableFlags)}var g=o.subtables,y=Array.isArray(g),v=0;for(g=y?g:s(g);;){var b;if(y){if(v>=g.length)break;b=g[v++]}else{if((v=g.next()).done)break;b=v.value}var m=b;m.subFeatureFlags&l&&this.processSubtable(m,t)}}for(var w=t.length-1;w>=0;)65535===t[w].id&&t.splice(w,1),w--;return t},t.prototype.processSubtable=function(t,e){if(this.subtable=t,this.glyphs=e,4!==this.subtable.type){this.ligatureStack=[],this.markedGlyph=null,this.firstGlyph=null,this.lastGlyph=null,this.markedIndex=null;var n=this.getStateMachine(t),r=this.getProcessor(),i=!!(4194304&this.subtable.coverage);return n.process(this.glyphs,i,r)}this.processNoncontextualSubstitutions(this.subtable,this.glyphs)},t.prototype.getStateMachine=function(t){return new Mi(t.table.stateTable)},t.prototype.getProcessor=function(){switch(this.subtable.type){case 0:return this.processIndicRearragement;case 1:return this.processContextualSubstitution;case 2:return this.processLigature;case 4:return this.processNoncontextualSubstitutions;case 5:return this.processGlyphInsertion;default:throw new Error("Invalid morx subtable type: "+this.subtable.type)}},t.prototype.processIndicRearragement=function(t,e,n){32768&e.flags&&(this.firstGlyph=n),8192&e.flags&&(this.lastGlyph=n),function(t,e,n,r){switch(e){case 0:return t;case 1:return Gi(t,[n,1],[r,0]);case 2:return Gi(t,[n,0],[r,1]);case 3:return Gi(t,[n,1],[r,1]);case 4:return Gi(t,[n,2],[r,0]);case 5:return Gi(t,[n,2],[r,0],!0,!1);case 6:return Gi(t,[n,0],[r,2]);case 7:return Gi(t,[n,0],[r,2],!1,!0);case 8:return Gi(t,[n,1],[r,2]);case 9:return Gi(t,[n,1],[r,2],!1,!0);case 10:return Gi(t,[n,2],[r,1]);case 11:return Gi(t,[n,2],[r,1],!0,!1);case 12:return Gi(t,[n,2],[r,2]);case 13:return Gi(t,[n,2],[r,2],!0,!1);case 14:return Gi(t,[n,2],[r,2],!1,!0);case 15:return Gi(t,[n,2],[r,2],!0,!0);default:throw new Error("Unknown verb: "+e)}}(this.glyphs,15&e.flags,this.firstGlyph,this.lastGlyph)},t.prototype.processContextualSubstitution=function(t,e,n){var r=this.subtable.table.substitutionTable.items;if(65535!==e.markIndex){var i=r.getItem(e.markIndex),a=new Bi(i);t=this.glyphs[this.markedGlyph],(o=a.lookup(t.id))&&(this.glyphs[this.markedGlyph]=this.font.getGlyph(o,t.codePoints))}if(65535!==e.currentIndex){var o,s=r.getItem(e.currentIndex),l=new Bi(s);t=this.glyphs[n],(o=l.lookup(t.id))&&(this.glyphs[n]=this.font.getGlyph(o,t.codePoints))}32768&e.flags&&(this.markedGlyph=n)},t.prototype.processLigature=function(t,e,n){if(32768&e.flags&&this.ligatureStack.push(n),8192&e.flags){for(var r,i=this.subtable.table.ligatureActions,a=this.subtable.table.components,o=this.subtable.table.ligatureList,s=e.action,l=!1,u=0,c=[],h=[];!l;){var f,d=this.ligatureStack.pop();(f=c).unshift.apply(f,this.glyphs[d].codePoints);var p=i.getItem(s++);l=!!(2147483648&p);var g=!!(1073741824&p),y=(1073741823&p)<<2>>2;if(y+=this.glyphs[d].id,u+=a.getItem(y),l||g){var v=o.getItem(u);this.glyphs[d]=this.font.getGlyph(v,c),h.push(d),u=0,c=[]}else this.glyphs[d]=this.font.getGlyph(65535)}(r=this.ligatureStack).push.apply(r,h)}},t.prototype.processNoncontextualSubstitutions=function(t,e,n){var r=new Bi(t.table.lookupTable);for(n=0;n<e.length;n++){var i=e[n];if(65535!==i.id){var a=r.lookup(i.id);a&&(e[n]=this.font.getGlyph(a,i.codePoints))}}},t.prototype._insertGlyphs=function(t,e,n,r){for(var i,a=[];n--;){var o=this.subtable.table.insertionActions.getItem(e++);a.push(this.font.getGlyph(o))}r||t++,(i=this.glyphs).splice.apply(i,[t,0].concat(a))},t.prototype.processGlyphInsertion=function(t,e,n){if(32768&e.flags&&(this.markedIndex=n),65535!==e.markedInsertIndex){var r=(31&e.flags)>>>5,i=!!(1024&e.flags);this._insertGlyphs(this.markedIndex,e.markedInsertIndex,r,i)}if(65535!==e.currentInsertIndex){var a=(992&e.flags)>>>5,o=!!(2048&e.flags);this._insertGlyphs(n,e.currentInsertIndex,a,o)}},t.prototype.getSupportedFeatures=function(){var t=[],e=this.morx.chains,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i.features,o=Array.isArray(a),l=0;for(a=o?a:s(a);;){var u;if(o){if(l>=a.length)break;u=a[l++]}else{if((l=a.next()).done)break;u=l.value}var c=u;t.push([c.featureType,c.featureSetting])}}return t},t.prototype.generateInputs=function(t){return this.inputCache||this.generateInputCache(),this.inputCache[t]||[]},t.prototype.generateInputCache=function(){this.inputCache={};var t=this.morx.chains,e=Array.isArray(t),n=0;for(t=e?t:s(t);;){var r;if(e){if(n>=t.length)break;r=t[n++]}else{if((n=t.next()).done)break;r=n.value}var i=r,a=i.defaultFlags,o=i.subtables,l=Array.isArray(o),u=0;for(o=l?o:s(o);;){var c;if(l){if(u>=o.length)break;c=o[u++]}else{if((u=o.next()).done)break;c=u.value}var h=c;h.subFeatureFlags&a&&this.generateInputsForSubtable(h)}}},t.prototype.generateInputsForSubtable=function(t){var e=this;if(2===t.type){if(!!(4194304&t.coverage))throw new Error("Reverse subtable, not supported.");this.subtable=t,this.ligatureStack=[];var n=this.getStateMachine(t),r=this.getProcessor(),i=[],a=[];this.glyphs=[],n.traverse({enter:function(t,n){var o=e.glyphs;a.push({glyphs:o.slice(),ligatureStack:e.ligatureStack.slice()});var s=e.font.getGlyph(t);i.push(s),o.push(i[i.length-1]),r(o[o.length-1],n,o.length-1);for(var l=0,u=0,c=0;c<o.length&&l<=1;c++)65535!==o[c].id&&(l++,u=o[c].id);if(1===l){var h=i.map(function(t){return t.id}),f=e.inputCache[u];f?f.push(h):e.inputCache[u]=[h]}},exit:function(){var t=a.pop();e.glyphs=t.glyphs,e.ligatureStack=t.ligatureStack,i.pop()}})}},t}(),Ri=Li.prototype,Fi="getStateMachine",Di=[B],zi=o(Li.prototype,"getStateMachine"),Ni=Li.prototype,Ui={},Object.keys(zi).forEach(function(t){Ui[t]=zi[t]}),Ui.enumerable=!!Ui.enumerable,Ui.configurable=!!Ui.configurable,("value"in Ui||Ui.initializer)&&(Ui.writable=!0),Ui=Di.slice().reverse().reduce(function(t,e){return e(Ri,Fi,t)||t},Ui),Ni&&void 0!==Ui.initializer&&(Ui.value=Ui.initializer?Ui.initializer.call(Ni):void 0,Ui.initializer=void 0),void 0===Ui.initializer&&(Object.defineProperty(Ri,Fi,Ui),Ui=null),Li);function Gi(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a=t.splice(n[0]-(n[1]-1),n[1]);i&&a.reverse();var o=t.splice.apply(t,[e[0],e[1]].concat(a));return r&&o.reverse(),t.splice.apply(t,[n[0]-(e[1]-1),0].concat(o)),t}var Vi,ji,Hi=function(){function t(e){f(this,t),this.font=e,this.morxProcessor=new Wi(e),this.fallbackPosition=!1}return t.prototype.substitute=function(t){"rtl"===t.direction&&t.glyphs.reverse(),this.morxProcessor.process(t.glyphs,function(t){var e={};for(var n in t){var r;(r=mi[n])&&(null==e[r[0]]&&(e[r[0]]={}),e[r[0]][r[1]]=t[n])}return e}(t.features))},t.prototype.getAvailableFeatures=function(t,e){return function(t){var e={};if(Array.isArray(t))for(var n=0;n<t.length;n++){var r,i=Ci(t[n]);(r=Si[i[0]]&&Si[i[0]][i[1]])&&(e[r]=!0)}else if("object"===(void 0===t?"undefined":c(t)))for(var a in t){var o=t[a];for(var s in o){var l=void 0,h=Ci([a,s]);o[s]&&(l=Si[h[0]]&&Si[h[0]][h[1]])&&(e[l]=!0)}}return u(e)}(this.morxProcessor.getSupportedFeatures())},t.prototype.stringsForGlyph=function(t){var e=this.morxProcessor.generateInputs(t),n=new _,r=e,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;this._addStrings(l,0,n,"")}return n},t.prototype._addStrings=function(t,e,n,r){var i=this.font._cmapProcessor.codePointsForGlyph(t[e]),a=Array.isArray(i),o=0;for(i=a?i:s(i);;){var l;if(a){if(o>=i.length)break;l=i[o++]}else{if((o=i.next()).done)break;l=o.value}var u=r+x(l);e<t.length-1?this._addStrings(t,e+1,n,u):n.add(u)}},t}(),qi=function(){function t(e,n,r){f(this,t),this.font=e,this.script=n,this.direction=r,this.stages=[],this.globalFeatures={},this.allFeatures={}}return t.prototype._addFeatures=function(t,e){var n=this.stages.length-1,r=this.stages[n],i=t,a=Array.isArray(i),o=0;for(i=a?i:s(i);;){var l;if(a){if(o>=i.length)break;l=i[o++]}else{if((o=i.next()).done)break;l=o.value}var u=l;null==this.allFeatures[u]&&(r.push(u),this.allFeatures[u]=n,e&&(this.globalFeatures[u]=!0))}},t.prototype.add=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(0===this.stages.length&&this.stages.push([]),"string"==typeof t&&(t=[t]),Array.isArray(t))this._addFeatures(t,e);else{if("object"!==(void 0===t?"undefined":c(t)))throw new Error("Unsupported argument to ShapingPlan#add");this._addFeatures(t.global||[],!0),this._addFeatures(t.local||[],!1)}},t.prototype.addStage=function(t,e){"function"==typeof t?this.stages.push(t,[]):(this.stages.push([]),this.add(t,e))},t.prototype.setFeatureOverrides=function(t){if(Array.isArray(t))this.add(t);else if("object"===(void 0===t?"undefined":c(t)))for(var e in t)if(t[e])this.add(e);else if(null!=this.allFeatures[e]){var n=this.stages[this.allFeatures[e]];n.splice(n.indexOf(e),1),delete this.allFeatures[e],delete this.globalFeatures[e]}},t.prototype.assignGlobalFeatures=function(t){var e=t,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;for(var o in this.globalFeatures)a.features[o]=!0}},t.prototype.process=function(t,e,n){var r=this.stages,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;"function"==typeof l?n||l(this.font,e,this):l.length>0&&t.applyFeatures(l,e,n)}},t}(),Zi=["rvrn"],Yi=["ccmp","locl","rlig","mark","mkmk"],Xi=["frac","numr","dnom"],Ki=["calt","clig","liga","rclt","curs","kern"],Ji={ltr:["ltra","ltrm"],rtl:["rtla","rtlm"]},Qi=(ji=Vi=function(){function t(){f(this,t)}return t.plan=function(t,e,n){this.planPreprocessing(t),this.planFeatures(t),this.planPostprocessing(t,n),t.assignGlobalFeatures(e),this.assignFeatures(t,e)},t.planPreprocessing=function(t){t.add({global:[].concat(Zi,Ji[t.direction]),local:Xi})},t.planFeatures=function(t){},t.planPostprocessing=function(t,e){t.add([].concat(Yi,Ki)),t.setFeatureOverrides(e)},t.assignFeatures=function(t,e){for(var n=0;n<e.length;n++){var r=e[n];if(8260===r.codePoints[0]){for(var i=n,a=n+1;i>0&&k.isDigit(e[i-1].codePoints[0]);)e[i-1].features.numr=!0,e[i-1].features.frac=!0,i--;for(;a<e.length&&k.isDigit(e[a].codePoints[0]);)e[a].features.dnom=!0,e[a].features.frac=!0,a++;r.features.frac=!0,n=a-1}}},t}(),Vi.zeroMarkWidths="AFTER_GPOS",ji),$i=new C(e("AAEQAAAAAAAAADGgAZUBav7t2CtPA0EUBeDZB00pin9AJZIEgyUEj0QhweDAgQOJxCBRBElQSBwSicLgkOAwnNKZ5GaY2c7uzj4o5yZfZrrbefbuIx2nSq3CGmzAWH/+K+UO7MIe7MMhHMMpnMMFXMIVXIt2t3CnP088iPqjqNN8e4Ij7Rle4LUH82rLm6i/92A+RERERERERERNmfz/89GDeRARERERzbN8ceps2Iwt9H0C9/AJ6yOlDkbTczcot5VSm8Pm1vcFWfb7+BKOLTuOd2UlTX4wGP85Eg953lWPFbnuN7PkjtLmalOWbNenkHOSa7T3KmR9MVTZ2zZkVj1kHa68MueVKH0R4zqQ44WEXLM8VjcWHP0PtKLfPzQnMtGn3W4QYf6qxFxceVI394r2xnV+1rih0fV1Vzf3fO1n3evL5J78ruvZ5ptX2Rwy92Tfb1wlEqut3U+sZ3HXOeJ7/zDrbyuP6+Zz0fqa6Nv3vhY7Yu1xWnGevmsvsUpTT/RYIe8waUH/rvHMWKFzLfN8L+rTfp645mfX7ftlnfDtYxN59w0=","base64")),ta=["isol","fina","fin2","fin3","medi","med2","init"],ea={Non_Joining:0,Left_Joining:1,Right_Joining:2,Dual_Joining:3,Join_Causing:3,ALAPH:4,"DALATH RISH":5,Transparent:6},na="isol",ra="fina",ia="medi",aa="med2",oa="init",sa=null,la=[[[sa,sa,0],[sa,na,2],[sa,na,1],[sa,na,2],[sa,na,1],[sa,na,6]],[[sa,sa,0],[sa,na,2],[sa,na,1],[sa,na,2],[sa,"fin2",5],[sa,na,6]],[[sa,sa,0],[sa,na,2],[oa,ra,1],[oa,ra,3],[oa,ra,4],[oa,ra,6]],[[sa,sa,0],[sa,na,2],[ia,ra,1],[ia,ra,3],[ia,ra,4],[ia,ra,6]],[[sa,sa,0],[sa,na,2],[aa,na,1],[aa,na,2],[aa,"fin2",5],[aa,na,6]],[[sa,sa,0],[sa,na,2],[na,na,1],[na,na,2],[na,"fin2",5],[na,na,6]],[[sa,sa,0],[sa,na,2],[sa,na,1],[sa,na,2],[sa,"fin3",5],[sa,na,6]]],ua=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.planFeatures=function(t){t.add(["ccmp","locl"]);for(var e=0;e<ta.length;e++){var n=ta[e];t.addStage(n,!1)}t.addStage("mset")},e.assignFeatures=function(e,n){t.assignFeatures.call(this,e,n);for(var r=-1,i=0,a=[],o=0;o<n.length;o++){var s,l,u=ca((d=n[o]).codePoints[0]);if(u!==ea.Transparent){var c=la[i][u];l=c[0],s=c[1],i=c[2],l!==sa&&-1!==r&&(a[r]=l),a[o]=s,r=o}else a[o]=sa}for(var h=0;h<n.length;h++){var f,d=n[h];(f=a[h])&&(d.features[f]=!0)}},e}(Qi);function ca(t){var e=$i.get(t);if(e)return e-1;var n=k.getCategory(t);return"Mn"===n||"Me"===n||"Cf"===n?ea.Transparent:ea.Non_Joining}var ha,fa,da=function(){function t(e,n){f(this,t),this.glyphs=e,this.reset(n)}return t.prototype.reset=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.options=t,this.flags=t.flags||{},this.markAttachmentType=t.markAttachmentType||0,this.index=e},t.prototype.shouldIgnore=function(t){return this.flags.ignoreMarks&&t.isMark||this.flags.ignoreBaseGlyphs&&t.isBase||this.flags.ignoreLigatures&&t.isLigature||this.markAttachmentType&&t.isMark&&t.markAttachmentType!==this.markAttachmentType},t.prototype.move=function(t){for(this.index+=t;0<=this.index&&this.index<this.glyphs.length&&this.shouldIgnore(this.glyphs[this.index]);)this.index+=t;return 0>this.index||this.index>=this.glyphs.length?null:this.glyphs[this.index]},t.prototype.next=function(){return this.move(1)},t.prototype.prev=function(){return this.move(-1)},t.prototype.peek=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=this.index,n=this.increment(t);return this.index=e,n},t.prototype.peekIndex=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=this.index;this.increment(t);var n=this.index;return this.index=e,n},t.prototype.increment=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=t<0?-1:1;for(t=Math.abs(t);t--;)this.move(e);return this.glyphs[this.index]},d(t,[{key:"cur",get:function(){return this.glyphs[this.index]||null}}]),t}(),pa=["DFLT","dflt","latn"],ga=function(){function t(e,n){f(this,t),this.font=e,this.table=n,this.script=null,this.scriptTag=null,this.language=null,this.languageTag=null,this.features={},this.lookups={},this.variationsIndex=e._variationProcessor?this.findVariationsIndex(e._variationProcessor.normalizedCoords):-1,this.selectScript(),this.glyphs=[],this.positions=[],this.ligatureID=1,this.currentFeature=null}return t.prototype.findScript=function(t){if(null==this.table.scriptList)return null;Array.isArray(t)||(t=[t]);var e=t,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i,o=this.table.scriptList,l=Array.isArray(o),u=0;for(o=l?o:s(o);;){var c;if(l){if(u>=o.length)break;c=o[u++]}else{if((u=o.next()).done)break;c=u.value}var h=c;if(h.tag===a)return h}}return null},t.prototype.selectScript=function(t,e,n){var r=!1,i=void 0;if(!this.script||t!==this.scriptTag){if((i=this.findScript(t))||(i=this.findScript(pa)),!i)return this.scriptTag;this.scriptTag=i.tag,this.script=i.script,this.language=null,this.languageTag=null,r=!0}if(n&&n===this.direction||(this.direction=n||gi(t)),e&&e.length<4&&(e+=" ".repeat(4-e.length)),!e||e!==this.languageTag){this.language=null;var a=this.script.langSysRecords,o=Array.isArray(a),l=0;for(a=o?a:s(a);;){var u;if(o){if(l>=a.length)break;u=a[l++]}else{if((l=a.next()).done)break;u=l.value}var c=u;if(c.tag===e){this.language=c.langSys,this.languageTag=c.tag;break}}this.language||(this.language=this.script.defaultLangSys,this.languageTag=null),r=!0}if(r&&(this.features={},this.language)){var h=this.language.featureIndexes,f=Array.isArray(h),d=0;for(h=f?h:s(h);;){var p;if(f){if(d>=h.length)break;p=h[d++]}else{if((d=h.next()).done)break;p=d.value}var g=p,y=this.table.featureList[g],v=this.substituteFeatureForVariations(g);this.features[y.tag]=v||y.feature}}return this.scriptTag},t.prototype.lookupsForFeatures=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments[1],n=[],r=t,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o,u=this.features[l];if(u){var c=u.lookupListIndexes,h=Array.isArray(c),f=0;for(c=h?c:s(c);;){var d;if(h){if(f>=c.length)break;d=c[f++]}else{if((f=c.next()).done)break;d=f.value}var p=d;e&&-1!==e.indexOf(p)||n.push({feature:l,index:p,lookup:this.table.lookupList.get(p)})}}}return n.sort(function(t,e){return t.index-e.index}),n},t.prototype.substituteFeatureForVariations=function(t){if(-1===this.variationsIndex)return null;var e=this.table.featureVariations.featureVariationRecords[this.variationsIndex].featureTableSubstitution.substitutions,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;if(a.featureIndex===t)return a.alternateFeatureTable}return null},t.prototype.findVariationsIndex=function(t){var e=this.table.featureVariations;if(!e)return-1;for(var n=e.featureVariationRecords,r=0;r<n.length;r++){var i=n[r].conditionSet.conditionTable;if(this.variationConditionsMatch(i,t))return r}return-1},t.prototype.variationConditionsMatch=function(t,e){return t.every(function(t){var n=t.axisIndex<e.length?e[t.axisIndex]:0;return t.filterRangeMinValue<=n&&n<=t.filterRangeMaxValue})},t.prototype.applyFeatures=function(t,e,n){var r=this.lookupsForFeatures(t);this.applyLookups(r,e,n)},t.prototype.applyLookups=function(t,e,n){this.glyphs=e,this.positions=n,this.glyphIterator=new da(e);var r=t,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o,u=l.feature,c=l.lookup;for(this.currentFeature=u,this.glyphIterator.reset(c.flags);this.glyphIterator.index<e.length;)if(u in this.glyphIterator.cur.features){var h=c.subTables,f=Array.isArray(h),d=0;for(h=f?h:s(h);;){var p;if(f){if(d>=h.length)break;p=h[d++]}else{if((d=h.next()).done)break;p=d.value}var g=p;if(this.applyLookup(c.lookupType,g))break}this.glyphIterator.next()}else this.glyphIterator.next()}},t.prototype.applyLookup=function(t,e){throw new Error("applyLookup must be implemented by subclasses")},t.prototype.applyLookupList=function(t){var e=this.glyphIterator.options,n=this.glyphIterator.index,r=t,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;this.glyphIterator.reset(e,n),this.glyphIterator.increment(l.sequenceIndex);var u=this.table.lookupList.get(l.lookupListIndex);this.glyphIterator.reset(u.flags,this.glyphIterator.index);var c=u.subTables,h=Array.isArray(c),f=0;for(c=h?c:s(c);;){var d;if(h){if(f>=c.length)break;d=c[f++]}else{if((f=c.next()).done)break;d=f.value}var p=d;if(this.applyLookup(u.lookupType,p))break}}return this.glyphIterator.reset(e,n),!0},t.prototype.coverageIndex=function(t,e){switch(null==e&&(e=this.glyphIterator.cur.id),t.version){case 1:return t.glyphs.indexOf(e);case 2:var n=t.rangeRecords,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;if(o.start<=e&&e<=o.end)return o.startCoverageIndex+e-o.start}}return-1},t.prototype.match=function(t,e,n,r){for(var i=this.glyphIterator.index,a=this.glyphIterator.increment(t),o=0;o<e.length&&a&&n(e[o],a);)r&&r.push(this.glyphIterator.index),o++,a=this.glyphIterator.next();return this.glyphIterator.index=i,!(o<e.length)&&(r||!0)},t.prototype.sequenceMatches=function(t,e){return this.match(t,e,function(t,e){return t===e.id})},t.prototype.sequenceMatchIndices=function(t,e){var n=this;return this.match(t,e,function(t,e){return n.currentFeature in e.features&&t===e.id},[])},t.prototype.coverageSequenceMatches=function(t,e){var n=this;return this.match(t,e,function(t,e){return n.coverageIndex(t,e.id)>=0})},t.prototype.getClassID=function(t,e){switch(e.version){case 1:var n=t-e.startGlyph;if(n>=0&&n<e.classValueArray.length)return e.classValueArray[n];break;case 2:var r=e.classRangeRecord,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;if(l.start<=t&&t<=l.end)return l.class}}return 0},t.prototype.classSequenceMatches=function(t,e,n){var r=this;return this.match(t,e,function(t,e){return t===r.getClassID(e.id,n)})},t.prototype.applyContext=function(t){switch(t.version){case 1:var e=this.coverageIndex(t.coverage);if(-1===e)return!1;var n=t.ruleSets[e],r=n,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;if(this.sequenceMatches(1,l.input))return this.applyLookupList(l.lookupRecords)}break;case 2:if(-1===this.coverageIndex(t.coverage))return!1;if(-1===(e=this.getClassID(this.glyphIterator.cur.id,t.classDef)))return!1;var u=n=t.classSet[e],c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d=f;if(this.classSequenceMatches(1,d.classes,t.classDef))return this.applyLookupList(d.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(0,t.coverages))return this.applyLookupList(t.lookupRecords)}return!1},t.prototype.applyChainingContext=function(t){switch(t.version){case 1:var e=this.coverageIndex(t.coverage);if(-1===e)return!1;var n=t.chainRuleSets[e],r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;if(this.sequenceMatches(-o.backtrack.length,o.backtrack)&&this.sequenceMatches(1,o.input)&&this.sequenceMatches(1+o.input.length,o.lookahead))return this.applyLookupList(o.lookupRecords)}break;case 2:if(-1===this.coverageIndex(t.coverage))return!1;e=this.getClassID(this.glyphIterator.cur.id,t.inputClassDef);var l=t.chainClassSet[e];if(!l)return!1;var u=l,c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d=f;if(this.classSequenceMatches(-d.backtrack.length,d.backtrack,t.backtrackClassDef)&&this.classSequenceMatches(1,d.input,t.inputClassDef)&&this.classSequenceMatches(1+d.input.length,d.lookahead,t.lookaheadClassDef))return this.applyLookupList(d.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(-t.backtrackGlyphCount,t.backtrackCoverage)&&this.coverageSequenceMatches(0,t.inputCoverage)&&this.coverageSequenceMatches(t.inputGlyphCount,t.lookaheadCoverage))return this.applyLookupList(t.lookupRecords)}return!1},t}(),ya=function(){function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i=arguments[3];if(f(this,t),this._font=e,this.codePoints=r,this.id=n,this.features={},Array.isArray(i))for(var a=0;a<i.length;a++){var o=i[a];this.features[o]=!0}else"object"===(void 0===i?"undefined":c(i))&&w(this.features,i);this.ligatureID=null,this.ligatureComponent=null,this.isLigated=!1,this.cursiveAttachment=null,this.markAttachment=null,this.shaperInfo=null,this.substituted=!1,this.isMultiplied=!1}return t.prototype.copy=function(){return new t(this._font,this.id,this.codePoints,this.features)},d(t,[{key:"id",get:function(){return this._id},set:function(t){this._id=t,this.substituted=!0;var e=this._font.GDEF;if(e&&e.glyphClassDef){var n=ga.prototype.getClassID(t,e.glyphClassDef);this.isBase=1===n,this.isLigature=2===n,this.isMark=3===n,this.markAttachmentType=e.markAttachClassDef?ga.prototype.getClassID(t,e.markAttachClassDef):0}else this.isMark=this.codePoints.every(k.isMark),this.isBase=!this.isMark,this.isLigature=this.codePoints.length>1,this.markAttachmentType=0}}]),t}(),va=(fa=ha=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.planFeatures=function(t){t.add(["ljmo","vjmo","tjmo"],!1)},e.assignFeatures=function(t,e){for(var n=0,r=0;r<e.length;){var i,a=e[r].codePoints[0],o=Ha(a),s=Ka[n][o];switch(i=s[0],n=s[1],i){case qa:t.font.hasGlyphForCodePoint(a)||(r=Qa(e,r,t.font));break;case Za:r=$a(e,r,t.font);break;case Ya:to(e,r,t.font);break;case Xa:r=eo(e,r,t.font)}r++}},e}(Qi),ha.zeroMarkWidths="NONE",fa),ba=44032,ma=55204-ba+1,wa=4352,xa=4449,Sa=4519,_a=21,ka=28,Ca=wa+19-1,Aa=xa+_a-1,Pa=Sa+ka-1,Ea=9676,Ia=function(t){return 4352<=t&&t<=4447||43360<=t&&t<=43388},Ta=function(t){return 4448<=t&&t<=4519||55216<=t&&t<=55238},Oa=function(t){return 4520<=t&&t<=4607||55243<=t&&t<=55291},La=function(t){return 12334<=t&&t<=12335},Ba=function(t){return ba<=t&&t<=55204},Ma=function(t){return t-ba<ma&&(t-ba)%ka==0},Ra=function(t){return wa<=t&&t<=Ca},Fa=function(t){return xa<=t&&t<=Aa},Da=function(t){return Sa+1&&1<=t&&t<=Pa},za=0,Na=1,Ua=2,Wa=3,Ga=4,Va=5,ja=6;function Ha(t){return Ia(t)?Na:Ta(t)?Ua:Oa(t)?Wa:Ma(t)?Ga:Ba(t)?Va:La(t)?ja:za}var qa=1,Za=2,Ya=4,Xa=5,Ka=[[[0,0],[0,1],[0,0],[0,0],[qa,2],[qa,3],[Xa,0]],[[0,0],[0,1],[Za,2],[0,0],[qa,2],[qa,3],[Xa,0]],[[0,0],[0,1],[0,0],[Za,3],[qa,2],[qa,3],[Ya,0]],[[0,0],[0,1],[0,0],[0,0],[qa,2],[qa,3],[Ya,0]]];function Ja(t,e,n){return new ya(t,t.glyphForCodePoint(e).id,[e],n)}function Qa(t,e,n){var r=t[e],i=r.codePoints[0]-ba,a=Sa+i%ka,o=wa+(i=i/ka|0)/_a|0,s=xa+i%_a;if(!n.hasGlyphForCodePoint(o)||!n.hasGlyphForCodePoint(s)||a!==Sa&&!n.hasGlyphForCodePoint(a))return e;var l=Ja(n,o,r.features);l.features.ljmo=!0;var u=Ja(n,s,r.features);u.features.vjmo=!0;var c=[l,u];if(a>Sa){var h=Ja(n,a,r.features);h.features.tjmo=!0,c.push(h)}return t.splice.apply(t,[e,1].concat(c)),e+c.length-1}function $a(t,e,n){var r=t[e],i=Ha(t[e].codePoints[0]),a=t[e-1].codePoints[0],o=Ha(a),s=void 0,l=void 0,u=void 0,c=void 0;if(o===Ga&&i===Wa)s=a,c=r;else{i===Ua?(l=t[e-1],u=r):(l=t[e-2],u=t[e-1],c=r);var h=l.codePoints[0],f=u.codePoints[0];Ra(h)&&Fa(f)&&(s=ba+((h-wa)*_a+(f-xa))*ka)}var d=c&&c.codePoints[0]||Sa;if(null!=s&&(d===Sa||Da(d))){var p=s+(d-Sa);if(n.hasGlyphForCodePoint(p)){var g=o===Ua?3:2;return t.splice(e-g+1,g,Ja(n,p,r.features)),e-g+1}}return l&&(l.features.ljmo=!0),u&&(u.features.vjmo=!0),c&&(c.features.tjmo=!0),o===Ga?(Qa(t,e-1,n),e+1):e}function to(t,e,n){var r=t[e],i=t[e].codePoints[0];if(0!==n.glyphForCodePoint(i).advanceWidth){var a=function(t){switch(Ha(t)){case Ga:case Va:return 1;case Ua:return 2;case Wa:return 3}}(t[e-1].codePoints[0]);return t.splice(e,1),t.splice(e-a,0,r)}}function eo(t,e,n){var r=t[e],i=t[e].codePoints[0];if(n.hasGlyphForCodePoint(Ea)){var a=Ja(n,Ea,r.features),o=0===n.glyphForCodePoint(i).advanceWidth?e:e+1;t.splice(o,0,a),e++}return e}var no,ro,io={stateTable:[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,14,15,16,17],[0,0,0,18,19,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,28,29,30,31,32,33,0,34,0,0,35,36,0,0,37,0],[0,0,0,38,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,39,0,0,0,40,41,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,12,43,0,0,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,0,43,0,0,0,0],[0,0,0,45,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,50,0,0,51,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0],[0,0,0,53,54,55,56,57,58,0,59,0,0,60,61,0,0,62,0],[0,0,0,4,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,63,64,0,0,40,41,0,9,0,10,0,0,0,42,0,63,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,0,2,16,0],[0,0,0,18,65,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,0,0],[0,0,0,69,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,73,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,75,0,0,0,76,77,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,25,79,0,0,0,0],[0,0,0,18,19,20,74,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,81,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,86,0,0,87,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0],[0,0,0,18,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,89,90,0,0,76,77,0,23,0,24,0,0,0,78,0,89,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,0,0],[0,0,0,94,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,96,0,0,0,97,98,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,35,100,0,0,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,102,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,107,0,0,108,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0],[0,0,0,28,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,110,111,0,0,97,98,0,33,0,34,0,0,0,99,0,110,0,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,0,0],[0,0,0,0,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,0,0,115,116,117,118,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,39,0,122,0,123,123,8,9,0,10,0,0,0,42,0,39,0,0],[0,124,64,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0],[0,39,0,0,0,121,125,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,126,126,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,47,47,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,128,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,129,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,50,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,134,0,0,0,0,0,0,0,0],[0,0,0,135,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,136,0,0,0,137,138,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,60,140,0,0,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,0,140,0,0,0,0],[0,0,0,142,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,147,0,0,148,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,149,0,0,0,0,0,0,0,0],[0,0,0,53,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,150,151,0,0,137,138,0,58,0,59,0,0,0,139,0,150,0,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,0,0],[0,0,0,155,116,156,157,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,75,3,4,5,159,160,8,161,0,162,0,11,12,163,0,75,16,0],[0,0,0,0,0,40,164,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,0,165,0,0,0,0],[0,124,64,0,0,40,164,0,9,0,10,0,0,0,42,0,124,0,0],[0,0,0,0,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,167,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0],[0,0,0,0,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,0,79,0,0,0,0],[0,0,0,169,170,171,172,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,75,0,176,0,177,177,22,23,0,24,0,0,0,78,0,75,0,0],[0,178,90,0,0,0,0,0,0,0,0,0,0,0,0,0,178,0,0],[0,75,0,0,0,175,179,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,180,180,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,83,83,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,182,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,183,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,86,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,0],[0,0,0,189,170,190,191,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,76,193,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,0,194,0,0,0,0],[0,178,90,0,0,76,193,0,23,0,24,0,0,0,78,0,178,0,0],[0,0,0,0,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,195,196,197,198,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,96,0,202,0,203,203,32,33,0,34,0,0,0,99,0,96,0,0],[0,204,111,0,0,0,0,0,0,0,0,0,0,0,0,0,204,0,0],[0,96,0,0,0,201,205,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,206,206,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,104,104,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,208,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,209,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,107,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,214,0,0,0,0,0,0,0,0],[0,0,0,215,196,216,217,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,97,219,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,0,220,0,0,0,0],[0,204,111,0,0,97,219,0,33,0,34,0,0,0,99,0,204,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,223,0,0,0,40,224,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,119,225,0,0,0,0],[0,0,0,115,116,117,222,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,115,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,226,64,0,0,40,224,0,9,0,10,0,0,0,42,0,226,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,39,0,0,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,44,44,8,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,227,0,228,229,0,9,0,10,0,0,230,0,0,0,0,0],[0,39,0,122,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,231,231,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,232,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,131,131,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,234,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,235,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,0,0,240,241,242,243,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,136,0,247,0,248,248,57,58,0,59,0,0,0,139,0,136,0,0],[0,249,151,0,0,0,0,0,0,0,0,0,0,0,0,0,249,0,0],[0,136,0,0,0,246,250,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,251,251,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,144,144,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,253,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,254,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,147,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0],[0,0,0,260,241,261,262,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,137,264,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,0,265,0,0,0,0],[0,249,151,0,0,137,264,0,58,0,59,0,0,0,139,0,249,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,158,225,0,0,0,0],[0,0,0,155,116,156,222,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,155,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,43,266,266,8,161,0,24,0,0,12,267,0,0,0,0],[0,75,0,176,43,268,268,269,161,0,24,0,0,0,267,0,75,0,0],[0,0,0,0,0,270,0,0,271,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,272,0,0,0,0,0,0,0,0],[0,273,274,0,0,40,41,0,9,0,10,0,0,0,42,0,273,0,0],[0,0,0,40,0,123,123,8,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,121,275,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,276,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,279,0,0,0,76,280,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,173,281,0,0,0,0],[0,0,0,169,170,171,278,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,169,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,282,90,0,0,76,280,0,23,0,24,0,0,0,78,0,282,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,75,0,0,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,80,80,22,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,283,0,284,285,0,23,0,24,0,0,286,0,0,0,0,0],[0,75,0,176,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,287,287,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,288,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,185,185,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,290,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,291,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,192,281,0,0,0,0],[0,0,0,189,170,190,278,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,189,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,76,0,177,177,22,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,175,296,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,299,0,0,0,97,300,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,199,301,0,0,0,0],[0,0,0,195,196,197,298,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,195,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,302,111,0,0,97,300,0,33,0,34,0,0,0,99,0,302,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,96,0,0,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,101,101,32,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,303,0,304,305,0,33,0,34,0,0,306,0,0,0,0,0],[0,96,0,202,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,307,307,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,308,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,211,211,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,310,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,311,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,218,301,0,0,0,0],[0,0,0,215,196,216,298,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,215,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,97,0,203,203,32,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,201,316,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,0,225,0,0,0,0],[0,0,0,317,318,319,320,8,9,0,10,0,0,321,322,0,0,16,0],[0,223,0,323,0,123,123,8,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,0,0,121,324,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,325,318,326,327,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,64,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,230,0,0,0,0,0],[0,0,0,227,0,228,121,0,9,0,10,0,0,230,0,0,0,0,0],[0,0,0,227,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0],[0,0,0,0,0,329,329,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,330,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,237,237,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,332,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,333,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,337,0,0,0,137,338,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,244,339,0,0,0,0],[0,0,0,240,241,242,336,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,240,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,340,151,0,0,137,338,0,58,0,59,0,0,0,139,0,340,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,136,0,0,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,141,141,57,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,341,0,342,343,0,58,0,59,0,0,344,0,0,0,0,0],[0,136,0,247,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,345,345,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,346,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,256,256,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,348,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,349,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,263,339,0,0,0,0],[0,0,0,260,241,261,336,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,260,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,137,0,248,248,57,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,246,354,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,126,126,8,23,0,0,0,0,0,0,0,0,0,0],[0,355,90,0,0,121,125,0,9,0,10,0,0,0,42,0,355,0,0],[0,0,0,0,0,356,356,269,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,357,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,270,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,363,0,0,0,0,0,0,0,0],[0,0,0,364,116,365,366,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,40,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,0,281,0,0,0,0],[0,0,0,369,370,371,372,22,23,0,24,0,0,373,374,0,0,27,0],[0,279,0,375,0,177,177,22,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,0,0,175,376,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,377,370,378,379,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,90,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,286,0,0,0,0,0],[0,0,0,283,0,284,175,0,23,0,24,0,0,286,0,0,0,0,0],[0,0,0,283,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0],[0,0,0,0,0,381,381,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,293,293,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,384,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,385,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,76,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,0,301,0,0,0,0],[0,0,0,387,388,389,390,32,33,0,34,0,0,391,392,0,0,37,0],[0,299,0,393,0,203,203,32,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,0,0,201,394,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,395,388,396,397,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,111,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,306,0,0,0,0,0],[0,0,0,303,0,304,201,0,33,0,34,0,0,306,0,0,0,0,0],[0,0,0,303,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,0,0],[0,0,0,0,0,399,399,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,400,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,313,313,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,402,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,403,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,97,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,407,0,0,0,40,408,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,321,409,0,0,0,0],[0,0,0,317,318,319,406,8,9,0,10,0,0,321,322,0,0,16,0],[0,0,0,317,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,410,64,0,0,40,408,0,9,0,10,0,0,0,42,0,410,0,0],[0,223,0,0,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,323,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,328,409,0,0,0,0],[0,0,0,325,318,326,406,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,325,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0],[0,0,0,0,0,411,411,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,412,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,413,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,0,339,0,0,0,0],[0,0,0,414,415,416,417,57,58,0,59,0,0,418,419,0,0,62,0],[0,337,0,420,0,248,248,57,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,0,0,246,421,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,422,415,423,424,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,151,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,344,0,0,0,0,0],[0,0,0,341,0,342,246,0,58,0,59,0,0,344,0,0,0,0,0],[0,0,0,341,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0],[0,0,0,0,0,426,426,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,427,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,351,351,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,429,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,430,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,137,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,432,116,433,434,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,0,0,180,180,269,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,359,359,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,437,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,438,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,443,274,0,0,0,0,0,0,0,0,0,0,0,0,0,443,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,367,225,0,0,0,0],[0,0,0,364,116,365,445,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,364,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,448,0,0,0,76,449,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,373,450,0,0,0,0],[0,0,0,369,370,371,447,22,23,0,24,0,0,373,374,0,0,27,0],[0,0,0,369,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,451,90,0,0,76,449,0,23,0,24,0,0,0,78,0,451,0,0],[0,279,0,0,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,375,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,380,450,0,0,0,0],[0,0,0,377,370,378,447,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,377,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,0,0,0,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,0,0],[0,0,0,0,0,452,452,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,453,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,454,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,457,0,0,0,97,458,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,391,459,0,0,0,0],[0,0,0,387,388,389,456,32,33,0,34,0,0,391,392,0,0,37,0],[0,0,0,387,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,460,111,0,0,97,458,0,33,0,34,0,0,0,99,0,460,0,0],[0,299,0,0,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,393,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,398,459,0,0,0,0],[0,0,0,395,388,396,456,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,395,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,0,0,0,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,0,0],[0,0,0,0,0,461,461,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,462,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,463,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,0,409,0,0,0,0],[0,0,0,464,465,466,467,8,9,0,10,0,0,468,469,0,0,16,0],[0,407,0,470,0,123,123,8,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,0,0,121,471,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,472,465,473,474,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,0,0,0,0,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,0,0],[0,0,0,0,0,0,476,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,479,0,0,0,137,480,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,418,481,0,0,0,0],[0,0,0,414,415,416,478,57,58,0,59,0,0,418,419,0,0,62,0],[0,0,0,414,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,482,151,0,0,137,480,0,58,0,59,0,0,0,139,0,482,0,0],[0,337,0,0,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,420,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,425,481,0,0,0,0],[0,0,0,422,415,423,478,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,422,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,0,0,0,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0],[0,0,0,0,0,483,483,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,485,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,435,225,0,0,0,0],[0,0,0,432,116,433,445,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,432,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,486,486,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,487,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,440,440,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,489,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,490,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,495,0,496,497,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,0,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,0,225,0,0,0,0],[0,0,0,0,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,0,450,0,0,0,0],[0,0,0,499,500,501,502,22,23,0,24,0,0,503,504,0,0,27,0],[0,448,0,505,0,177,177,22,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,0,0,175,506,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,507,500,508,509,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,0,0,0,0,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,0,0],[0,0,0,0,0,0,511,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,0,459,0,0,0,0],[0,0,0,512,513,514,515,32,33,0,34,0,0,516,517,0,0,37,0],[0,457,0,518,0,203,203,32,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,0,0,201,519,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,520,513,521,522,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,0,0,0,0,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,312,0,0],[0,0,0,0,0,0,524,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,527,0,0,0,40,528,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,468,529,0,0,0,0],[0,0,0,464,465,466,526,8,9,0,10,0,0,468,469,0,0,16,0],[0,0,0,464,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,530,64,0,0,40,528,0,9,0,10,0,0,0,42,0,530,0,0],[0,407,0,0,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,470,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,475,529,0,0,0,0],[0,0,0,472,465,473,526,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,472,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0],[0,0,0,0,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,0,481,0,0,0,0],[0,0,0,531,532,533,534,57,58,0,59,0,0,535,536,0,0,62,0],[0,479,0,537,0,248,248,57,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,0,0,246,538,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,539,532,540,541,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,0,0,0,0,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,350,0,0],[0,0,0,0,0,0,543,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,358,0,0],[0,0,0,0,0,544,544,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,545,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,492,492,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,547,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,548,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,274,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,498,0,0,0,0,0],[0,0,0,495,0,496,368,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,495,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,553,0,0,0,76,554,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,503,555,0,0,0,0],[0,0,0,499,500,501,552,22,23,0,24,0,0,503,504,0,0,27,0],[0,0,0,499,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,556,90,0,0,76,554,0,23,0,24,0,0,0,78,0,556,0,0],[0,448,0,0,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,505,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,510,555,0,0,0,0],[0,0,0,507,500,508,552,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,507,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,559,0,0,0,97,560,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,516,561,0,0,0,0],[0,0,0,512,513,514,558,32,33,0,34,0,0,516,517,0,0,37,0],[0,0,0,512,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,562,111,0,0,97,560,0,33,0,34,0,0,0,99,0,562,0,0],[0,457,0,0,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,518,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,523,561,0,0,0,0],[0,0,0,520,513,521,558,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,520,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0],[0,0,0,0,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,0,529,0,0,0,0],[0,0,0,563,66,564,565,8,9,0,10,0,0,566,68,0,0,16,0],[0,527,0,567,0,123,123,8,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,0,0,121,568,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,569,66,570,571,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,575,0,0,0,137,576,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,535,577,0,0,0,0],[0,0,0,531,532,533,574,57,58,0,59,0,0,535,536,0,0,62,0],[0,0,0,531,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,578,151,0,0,137,576,0,58,0,59,0,0,0,139,0,578,0,0],[0,479,0,0,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,537,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,542,577,0,0,0,0],[0,0,0,539,532,540,574,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,539,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,0,0],[0,0,0,0,0,0,0,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,439,0,0],[0,0,0,0,0,579,579,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,580,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,581,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,0,555,0,0,0,0],[0,0,0,582,91,583,584,22,23,0,24,0,0,585,93,0,0,27,0],[0,553,0,586,0,177,177,22,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,0,0,175,587,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,588,91,589,590,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,0,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,0,561,0,0,0,0],[0,0,0,592,112,593,594,32,33,0,34,0,0,595,114,0,0,37,0],[0,559,0,596,0,203,203,32,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,0,0,201,597,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,598,112,599,600,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,566,165,0,0,0,0],[0,0,0,563,66,564,67,8,9,0,10,0,0,566,68,0,0,16,0],[0,0,0,563,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,527,0,0,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,567,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,572,165,0,0,0,0],[0,0,0,569,66,570,67,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,569,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,0,577,0,0,0,0],[0,0,0,603,152,604,605,57,58,0,59,0,0,606,154,0,0,62,0],[0,575,0,607,0,248,248,57,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,0,0,246,608,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,609,152,610,611,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,0,0,0,0,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,491,0,0],[0,0,0,0,0,0,613,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,585,194,0,0,0,0],[0,0,0,582,91,583,92,22,23,0,24,0,0,585,93,0,0,27,0],[0,0,0,582,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,553,0,0,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,586,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,591,194,0,0,0,0],[0,0,0,588,91,589,92,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,588,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,595,220,0,0,0,0],[0,0,0,592,112,593,113,32,33,0,34,0,0,595,114,0,0,37,0],[0,0,0,592,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,559,0,0,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,596,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,601,220,0,0,0,0],[0,0,0,598,112,599,113,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,598,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,606,265,0,0,0,0],[0,0,0,603,152,604,153,57,58,0,59,0,0,606,154,0,0,62,0],[0,0,0,603,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,575,0,0,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,607,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,612,265,0,0,0,0],[0,0,0,609,152,610,153,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,609,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,549,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0]],accepting:[!1,!0,!0,!0,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!1,!1,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0],tags:[[],["broken_cluster"],["consonant_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],[],["broken_cluster"],["symbol_cluster"],[],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["symbol_cluster"],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],[],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],[],[],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],["consonant_syllable"],["vowel_syllable"],["standalone_cluster"]]},ao={categories:["O","IND","S","GB","B","FM","CGJ","VMAbv","VMPst","VAbv","VPst","CMBlw","VPre","VBlw","H","VMBlw","CMAbv","MBlw","CS","R","SUB","MPst","MPre","FAbv","FPst","FBlw","SMAbv","SMBlw","VMPre","ZWNJ","ZWJ","WJ","VS","N","HN","MAbv"],decompositions:{2507:[2503,2494],2508:[2503,2519],2888:[2887,2902],2891:[2887,2878],2892:[2887,2903],3018:[3014,3006],3019:[3015,3006],3020:[3014,3031],3144:[3142,3158],3264:[3263,3285],3271:[3270,3285],3272:[3270,3286],3274:[3270,3266],3275:[3270,3266,3285],3402:[3398,3390],3403:[3399,3390],3404:[3398,3415],3546:[3545,3530],3548:[3545,3535],3549:[3545,3535,3530],3550:[3545,3551],3635:[3661,3634],3763:[3789,3762],3955:[3953,3954],3957:[3953,3956],3958:[4018,3968],3959:[4018,3953,3968],3960:[4019,3968],3961:[4019,3953,3968],3969:[3953,3968],6971:[6970,6965],6973:[6972,6965],6976:[6974,6965],6977:[6975,6965],6979:[6978,6965],69934:[69937,69927],69935:[69938,69927],70475:[70471,70462],70476:[70471,70487],70843:[70841,70842],70844:[70841,70832],70846:[70841,70845],71098:[71096,71087],71099:[71097,71087]},stateTable:[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[2,2,3,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,17,18,11,19,20,21,22,0,0,23,0,0,2,0,24,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,27,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,39,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,11,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,49,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,35,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,53,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0]],accepting:[!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0],tags:[[],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["symbol_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["virama_terminated_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["number_joiner_terminated_cluster"],["standard_cluster"],["standard_cluster"],["numeral_cluster"]]},oo={X:1,C:2,V:4,N:8,H:16,ZWNJ:32,ZWJ:64,M:128,SM:256,VD:512,A:1024,Placeholder:2048,Dotted_Circle:4096,RS:8192,Coeng:16384,Repha:32768,Ra:65536,CM:1<<17,Symbol:1<<18},so={Start:1,Ra_To_Become_Reph:2,Pre_M:4,Pre_C:8,Base_C:16,After_Main:32,Above_C:64,Before_Sub:128,Below_C:256,After_Sub:512,Before_Post:1024,Post_C:2048,After_Post:4096,Final_C:8192,SMVD:16384,End:32768},lo=oo.C|oo.Ra|oo.CM|oo.V|oo.Placeholder|oo.Dotted_Circle,uo=oo.ZWJ|oo.ZWNJ,co=oo.H|oo.Coeng,ho={Default:{hasOldSpec:!1,virama:0,basePos:"Last",rephPos:so.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Devanagari:{hasOldSpec:!0,virama:2381,basePos:"Last",rephPos:so.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Bengali:{hasOldSpec:!0,virama:2509,basePos:"Last",rephPos:so.After_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gurmukhi:{hasOldSpec:!0,virama:2637,basePos:"Last",rephPos:so.Before_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gujarati:{hasOldSpec:!0,virama:2765,basePos:"Last",rephPos:so.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Oriya:{hasOldSpec:!0,virama:2893,basePos:"Last",rephPos:so.After_Main,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Tamil:{hasOldSpec:!0,virama:3021,basePos:"Last",rephPos:so.After_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Telugu:{hasOldSpec:!0,virama:3149,basePos:"Last",rephPos:so.After_Post,rephMode:"Explicit",blwfMode:"Post_Only"},Kannada:{hasOldSpec:!0,virama:3277,basePos:"Last",rephPos:so.After_Post,rephMode:"Implicit",blwfMode:"Post_Only"},Malayalam:{hasOldSpec:!0,virama:3405,basePos:"Last",rephPos:so.After_Main,rephMode:"Log_Repha",blwfMode:"Pre_And_Post"},Khmer:{hasOldSpec:!1,virama:6098,basePos:"First",rephPos:so.Ra_To_Become_Reph,rephMode:"Vis_Repha",blwfMode:"Pre_And_Post"}},fo={6078:[6081,6078],6079:[6081,6079],6080:[6081,6080],6084:[6081,6084],6085:[6081,6085]},po=ao.decompositions,go=new C(e("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","base64")),yo=new A(io),vo=(ro=no=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.planFeatures=function(t){var e;t.addStage(_o),t.addStage(["locl","ccmp"]),t.addStage(Eo),t.addStage("nukt"),t.addStage("akhn"),t.addStage("rphf",!1),t.addStage("rkrf"),t.addStage("pref",!1),t.addStage("blwf",!1),t.addStage("abvf",!1),t.addStage("half",!1),t.addStage("pstf",!1),t.addStage("vatu"),t.addStage("cjct"),t.addStage("cfar",!1),t.addStage(Io),t.addStage({local:["init"],global:["pres","abvs","blws","psts","haln","dist","abvm","blwm","calt","clig"]}),t.unicodeScript=(e=t.script,si[e]),t.indicConfig=ho[t.unicodeScript]||ho.Default,t.isOldSpec=t.indicConfig.hasOldSpec&&"2"!==t.script[t.script.length-1]},e.assignFeatures=function(t,e){for(var n=function(n){var r=e[n].codePoints[0],i=fo[r]||po[r];if(i){var a=i.map(function(r){var i=t.font.glyphForCodePoint(r);return new ya(t.font,i.id,[r],e[n].features)});e.splice.apply(e,[n,1].concat(a))}},r=e.length-1;r>=0;r--)n(r)},e}(Qi),no.zeroMarkWidths="NONE",ro);function bo(t){return go.get(t.codePoints[0])>>8}function mo(t){return 1<<(255&go.get(t.codePoints[0]))}var wo,xo,So=function t(e,n,r,i){f(this,t),this.category=e,this.position=n,this.syllableType=r,this.syllable=i};function _o(t,e){var n=0,r=0,i=yo.match(e.map(bo)),a=Array.isArray(i),o=0;for(i=a?i:s(i);;){var l;if(a){if(o>=i.length)break;l=i[o++]}else{if((o=i.next()).done)break;l=o.value}var u=l,c=u[0],h=u[1],f=u[2];if(c>r){++n;for(var d=r;d<c;d++)e[d].shaperInfo=new So(oo.X,so.End,"non_indic_cluster",n)}++n;for(var p=c;p<=h;p++)e[p].shaperInfo=new So(1<<bo(e[p]),mo(e[p]),f[0],n);r=h+1}if(r<e.length){++n;for(var g=r;g<e.length;g++)e[g].shaperInfo=new So(oo.X,so.End,"non_indic_cluster",n)}}function ko(t){return t.shaperInfo.category&lo}function Co(t){return t.shaperInfo.category&uo}function Ao(t){return t.shaperInfo.category&co}function Po(t,e){var n=t,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a,o;if(r){if(i>=n.length)break;o=n[i++]}else{if((i=n.next()).done)break;o=i.value}o.features=((a={})[e]=!0,a)}return t[0]._font._layoutEngine.engine.GSUBProcessor.applyFeatures([e],t),1===t.length}function Eo(t,e,n){var r,i,a,o=n.indicConfig,s=t._layoutEngine.engine.GSUBProcessor.features,l=t.glyphForCodePoint(9676).id,u=t.glyphForCodePoint(o.virama).id;if(u)for(var c=new ya(t,u,[o.virama]),h=0;h<e.length;h++)e[h].shaperInfo.position===so.Base_C&&(e[h].shaperInfo.position=(r=e[h].copy(),a=void 0,Po((a=[i=c,r,i]).slice(0,2),"blwf")||Po(a.slice(1,3),"blwf")?so.Below_C:Po(a.slice(0,2),"pstf")||Po(a.slice(1,3),"pstf")?so.Post_C:Po(a.slice(0,2),"pref")||Po(a.slice(1,3),"pref")?so.Post_C:so.Base_C));for(var f=0,d=To(e,0);f<e.length;d=To(e,f=d)){var p=e[f].shaperInfo,g=(p.category,p.syllableType);if("symbol_cluster"!==g&&"non_indic_cluster"!==g){if("broken_cluster"===g&&l){var y=new ya(t,l,[9676]);y.shaperInfo=new So(1<<bo(y),mo(y),e[f].shaperInfo.syllableType,e[f].shaperInfo.syllable);for(var v=f;v<d&&e[v].shaperInfo.category===oo.Repha;)v++;e.splice(v++,0,y),d++}var b=d,m=f,w=!1;if(o.rephPos!==so.Ra_To_Become_Reph&&s.rphf&&f+3<=d&&("Implicit"===o.rephMode&&!Co(e[f+2])||"Explicit"===o.rephMode&&e[f+2].shaperInfo.category===oo.ZWJ)){var x=[e[f].copy(),e[f+1].copy(),e[f+2].copy()];if(Po(x.slice(0,2),"rphf")||"Explicit"===o.rephMode&&Po(x,"rphf")){for(m+=2;m<d&&Co(e[m]);)m++;b=f,w=!0}}else if("Log_Repha"===o.rephMode&&e[f].shaperInfo.category===oo.Repha){for(m++;m<d&&Co(e[m]);)m++;b=f,w=!0}switch(o.basePos){case"Last":var S=d,_=!1;do{var k=e[--S].shaperInfo;if(ko(e[S])){if(k.position!==so.Below_C&&(k.position!==so.Post_C||_)){b=S;break}k.position===so.Below_C&&(_=!0),b=S}else if(f<S&&k.category===oo.ZWJ&&e[S-1].shaperInfo.category===oo.H)break}while(S>m);break;case"First":for(var C=(b=f)+1;C<d;C++)ko(e[C])&&(e[C].shaperInfo.position=so.Below_C)}w&&b===f&&m-b<=2&&(w=!1);for(var A=f;A<b;A++){var P=e[A].shaperInfo;P.position=Math.min(so.Pre_C,P.position)}b<d&&(e[b].shaperInfo.position=so.Base_C);for(var E=b+1;E<d;E++)if(e[E].shaperInfo.category===oo.M){for(var I=E+1;I<d;I++)if(ko(e[I])){e[I].shaperInfo.position=so.Final_C;break}break}if(w&&(e[f].shaperInfo.position=so.Ra_To_Become_Reph),n.isOldSpec)for(var T="Malayalam"!==n.unicodeScript,O=b+1;O<d;O++)if(e[O].shaperInfo.category===oo.H){var L=void 0;for(L=d-1;L>O&&!(ko(e[L])||T&&e[L].shaperInfo.category===oo.H);L--);if(e[L].shaperInfo.category!==oo.H&&L>O){var B=e[O];e.splice.apply(e,[O,0].concat(e.splice(O+1,L-O))),e[L]=B}break}for(var M=so.Start,R=f;R<d;R++){var F=e[R].shaperInfo;if(F.category&(uo|oo.N|oo.RS|oo.CM|co&F.category)){if(F.position=M,F.category===oo.H&&F.position===so.Pre_M)for(var D=R;D>f;D--)if(e[D-1].shaperInfo.position!==so.Pre_M){F.position=e[D-1].shaperInfo.position;break}}else F.position!==so.SMVD&&(M=F.position)}for(var z=b,N=b+1;N<d;N++)if(ko(e[N])){for(var U=z+1;U<N;U++)e[U].shaperInfo.position<so.SMVD&&(e[U].shaperInfo.position=e[N].shaperInfo.position);z=N}else e[N].shaperInfo.category===oo.M&&(z=N);var W=e.slice(f,d);W.sort(function(t,e){return t.shaperInfo.position-e.shaperInfo.position}),e.splice.apply(e,[f,W.length].concat(W));for(var G=f;G<d;G++)if(e[G].shaperInfo.position===so.Base_C){b=G;break}for(var V=f;V<d&&e[V].shaperInfo.position===so.Ra_To_Become_Reph;V++)e[V].features.rphf=!0;for(var j=!n.isOldSpec&&"Pre_And_Post"===o.blwfMode,H=f;H<b;H++)e[H].features.half=!0,j&&(e[H].features.blwf=!0);for(var q=b+1;q<d;q++)e[q].features.abvf=!0,e[q].features.pstf=!0,e[q].features.blwf=!0;if(n.isOldSpec&&"Devanagari"===n.unicodeScript)for(var Z=f;Z+1<b;Z++)e[Z].shaperInfo.category!==oo.Ra||e[Z+1].shaperInfo.category!==oo.H||Z+1!==b&&e[Z+2].shaperInfo.category!==oo.ZWJ||(e[Z].features.blwf=!0,e[Z+1].features.blwf=!0);if(s.pref&&b+2<d)for(var Y=b+1;Y+2-1<d;Y++){if(Po([e[Y].copy(),e[Y+1].copy()],"pref")){for(var X=0;X<2;X++)e[Y++].features.pref=!0;if(s.cfar)for(;Y<d;Y++)e[Y].features.cfar=!0;break}}for(var K=f+1;K<d;K++)if(Co(e[K]))for(var J=e[K].shaperInfo.category===oo.ZWNJ,Q=K;Q--,J&&delete e[Q].features.half,Q>f&&!ko(e[Q]););}}}function Io(t,e,n){for(var r=n.indicConfig,i=t._layoutEngine.engine.GSUBProcessor.features,a=0,o=To(e,0);a<e.length;o=To(e,a=o)){for(var s=!!i.pref,l=a;l<o;l++)if(e[l].shaperInfo.position>=so.Base_C){if(s&&l+1<o)for(var u=l+1;u<o;u++)if(e[u].features.pref){if(!e[u].substituted||!e[u].isLigated||e[u].isMultiplied){for(l=u;l<o&&Ao(e[l]);)l++;e[l].shaperInfo.position=so.BASE_C,s=!1}break}if("Malayalam"===n.unicodeScript)for(var c=l+1;c<o;c++){for(;c<o&&Co(e[c]);)c++;if(c===o||!Ao(e[c]))break;for(c++;c<o&&Co(e[c]);)c++;c<o&&ko(e[c])&&e[c].shaperInfo.position===so.Below_C&&(e[l=c].shaperInfo.position=so.Base_C)}a<l&&e[l].shaperInfo.position>so.Base_C&&l--;break}if(l===o&&a<l&&e[l-1].shaperInfo.category===oo.ZWJ&&l--,l<o)for(;a<l&&e[l].shaperInfo.category&(oo.N|co);)l--;if(a+1<o&&a<l){var h=l===o?l-2:l-1;if("Malayalam"!==n.unicodeScript&&"Tamil"!==n.unicodeScript){for(;h>a&&!(e[h].shaperInfo.category&(oo.M|co));)h--;Ao(e[h])&&e[h].shaperInfo.position!==so.Pre_M?h+1<o&&Co(e[h+1])&&h++:h=a}if(a<h&&e[h].shaperInfo.position!==so.Pre_M)for(var f=h;f>a;f--)if(e[f-1].shaperInfo.position===so.Pre_M){var d=f-1;d<l&&l<=h&&l--;var p=e[d];e.splice.apply(e,[d,0].concat(e.splice(d+1,h-d))),e[h]=p,h--}}if(a+1<o&&e[a].shaperInfo.position===so.Ra_To_Become_Reph&&e[a].shaperInfo.category===oo.Repha!==(e[a].isLigated&&!e[a].isMultiplied)){var g=void 0,y=r.rephPos,v=!1;if(y!==so.After_Post){for(g=a+1;g<l&&!Ao(e[g]);)g++;if(g<l&&Ao(e[g])&&(g+1<l&&Co(e[g+1])&&g++,v=!0),!v&&y===so.After_Main){for(g=l;g+1<o&&e[g+1].shaperInfo.position<=so.After_Main;)g++;v=g<o}if(!v&&y===so.After_Sub){for(g=l;g+1<o&&!(e[g+1].shaperInfo.position&(so.Post_C|so.After_Post|so.SMVD));)g++;v=g<o}}if(!v){for(g=a+1;g<l&&!Ao(e[g]);)g++;g<l&&Ao(e[g])&&(g+1<l&&Co(e[g+1])&&g++,v=!0)}if(!v){for(g=o-1;g>a&&e[g].shaperInfo.position===so.SMVD;)g--;if(Ao(e[g]))for(var b=l+1;b<g;b++)e[b].shaperInfo.category===oo.M&&g--}var m=e[a];e.splice.apply(e,[a,0].concat(e.splice(a+1,g-a))),e[g]=m,a<l&&l<=g&&l--}if(s&&l+1<o)for(var w=l+1;w<o;w++)if(e[w].features.pref){if(e[w].isLigated&&!e[w].isMultiplied){var x=l;if("Malayalam"!==n.unicodeScript&&"Tamil"!==n.unicodeScript){for(;x>a&&!(e[x-1].shaperInfo.category&(oo.M|co));)x--;if(x>a&&e[x-1].shaperInfo.category===oo.M)for(var S=w,_=l+1;_<S;_++)if(e[_].shaperInfo.category===oo.M){x--;break}}x>a&&Ao(e[x-1])&&x<o&&Co(e[x])&&x++;var C=w,A=e[C];e.splice.apply(e,[x+1,0].concat(e.splice(x,C-x))),e[x]=A,x<=l&&l<C&&l++}break}e[a].shaperInfo.position!==so.Pre_M||a&&/Cf|Mn/.test(k.getCategory(e[a-1].codePoints[0]))||(e[a].features.init=!0)}}function To(t,e){if(e>=t.length)return e;for(var n=t[e].shaperInfo.syllable;++e<t.length&&t[e].shaperInfo.syllable===n;);return e}var Oo=ao.categories,Lo=ao.decompositions,Bo=new C(e("AAIAAAAAAAAAAKnQAVEMrvPtnH+oHUcVx+fd99799W5e8mx+9NkYm7YUI2KtimkVDG3FWgVTFY1Fqa2VJirYB0IaUFLBaKGJViXir6oxKCSBoi0UTKtg2yA26h+milYNtMH+0WK1VQyvtBS/487hnncyMzuzu7N7n7kHPszu7OzMmTNzdmdmfzzfUmpiUqkemAMbwSZwKbjcxM1XEL4VvB28G3zAk+56cLMlfgdYADvBbvBF8GWwH9xl+CFLfwj8BPwU/MKS38/AMfA86v9ro9ucQcdR+CjCP4CT4EnwDPg3eAFMTik1A+bAPNgINoFLwGawZSpLfzXCrWAb+AjYDm4BO8FusAfsA/vBXeAgOALuNfv3g4fAcXACPAaeAE+B58Bp8NJUpnN7WqlZsHY629+A8GLwWvAG8BZwJXinOf5ehB8EN4AdYGE6q7dmF9uugs8hvz0V58nZK/L+Kva/BX4ADoN7prP6HgUPgkfA73L0eQzHnwBPgX+Y80+DF8FUW6lBO4tbjXA9uAi8pj3sS2/E9mawBVwNtoJt5pzrTXgzwk+B7awP7sT+7nY6WxFfQBlfAl8H3wU/Anezcu/D9s/BMRN3HOEJ8EdwMkC/J5HmmXZmq2fBIjgEVEepbieLX4Fw0MnSrzRxmrVsm7MB8ReDV4vjr3ekJy7rZGVPMb196Xm6oug83oRyt4CrwDVgK9gGPtzxn3uTOD6YPDPNJ5Hm0+AznazffJ7Z4KSnXncg3VfAN8EBhx42/z/UGdbrx52sr9yH8AFTrt5+2GzfnWPbKuw7ZszZyNh/xowZM2bMmDFjxsQyZ5lPNs3h9nBNYHuAfr9ic9ffiHnsJzznU91/j3P+2snWYf6G8O/gn+A0eMnEt7vQp5ulX4NwHmwEm7rZ8UsRXg6uMPvXIHwPuK7rLl+nu9FzfMyYMWPGpGVuslmarv+YMWPSkNq/d2D8uNDNngvdivA2y3jy9m72bF9v3ymOf2MExp8fG2TsAcfA2wJYBJetWBq3i+0fwPafwLmzSl0LFmZNPMLHZ4fpnsX2AdjgcXB+T6kPge+AG7D/vXYW/tLsc9r9M+MkVyLNR1m6g9g+ZfYvmMExcHCm+ftP0+T5y/e17Uw/PYLwHnC0m80TH+zG30/3mjSDnPS2/B4pUJ4rX3n+b5H3o92l6UjfvZ7y/oJzToGnu8O66XTPYf8/Jr8XWL6TPXf9bPnHtmVs+89AnxVgDVgPLgKvAg+Y/F6H7c1gC7jKHH8XeJ/x15vAjt4wvwVs7wKfBXvAPvA18G1wsJevj36f5gjS3etIq+ft9+PYQ73h/nFsn2D7f+5l75bo/VPYftpTblFb2/Jo2pdjfL0uXOX/qxfnp8vZVk2Xv9hbmu+LxvYt3A/7/WZsPoptPkr9bdCv1ya+d4TuMO8Tre5n4XkILwSbzP4l/WHazX1//r2O/z7cFHnvSYW8R/Vm02ZXIHxHze1Xdf9bbn7p0z2kDroNr2X9WL+7937sX9fP+v9h9n6jTrfI3jG9EfsfN3G35PR/G4uRfY3eMTwdkFa/C3hrf2kcfy/xYTOmprrfZsLbEe7rDPW/U9Rrv9k/ahmTL0cWWxP/YxRkgtES+zwNhZPs+FQgMj/liEsto2HxsZBQX2pZoLZqWc5riXDaQBLSt1L3hcnE+Vct7aYVKCEhbXk2+b7NZ84mmXAwCiL14Ne85S62MYPcXi5StM/YxlJF2lfabznZsC6/C807xvZV+yFve9d1KY//d3HNO8pKUXuTDh0Gpp7B852q6QFMgdWM2dfbAxOuEPQEfcEsO5fquJLZrMfyCtWP0heZF6oSdiH9u4aQvJRIJ/eL6BBynItLp5D2JRkY5L5u3xAf6lviXHWSZcfaKO/+5zvO/c9Xtq8uRXSObd+8bS0zJrS1rxTyX7k/a0nrk5D+mHeOC90uq1Q216X57lykfqHt62uTGJ2rat+i/kttyq/RSi29PlclZf2Xxq55ZeSV34T96d5X5PqZJ9I3ZX2lnkXt3xL1Kyrav/LutbZ6uGxuS6ss6V3pXOXY4kP7EBfyJT7+4TJQS9uf74f6n+3+6ZIi9bCtieatFfCxUMx4KMYfy/pzrB30vm88q9SZ11K+n9eeNN612UFKWX8uI9TmRca7TbWvKy2JvF6naF+b/0uRupZp35cZikhZvyniY2R/CbdB3vXynIC6hbRBHf4l1xps6w4x/lVEtxRtGZMuRA8uNh/jfYV8kdpsBUszcODrD7E2JT2KrB3V6XMhbdNjcXItxzaOJWkpf976/I5glQn1sbLP86U9FQvz4l0S28/lcWUJbbrE2l+Z/TlHvi4/kvZXLMyrmy1PW7x8hl6UFgvlmNM1Jq3aJ3Se0yJcpdwS6mOp/ZgLX5N1rdFKaIzH9ztquMbqq+/qCFRk+hRoyZvrTHuO8fNd/djmEzZJ3TdisN1bNQNl7y96DV/3mVkTtwasVdk1ai6ybGlDek8nT1fXc4M5tVSPvhqOsWQeXQs8L1n3IradU8OxCeVjK7dr7Dpl0cMHnUvt18TzfVsfb/pZY56fV2GnVPVIYaOi9xcZJ8cmKcu3wcuPsVHV5cdKFfZXNZefp5sWft+wzR1cczKCxh99NRx76HvwOpWNv6YZtAajt6WPyPswtVVs/VOJ7xpYx3VR31er7gMxNuV9Q443CDlW43KuYSXblsybfKYt58trfez7A1X7Tdm+V7TcoudL+LpVGf2khN63U5OyD5Af0NoUv06l7Jc0Rte+so4xL9Ayy3Rz+SufY5Jf267xcm7J4dd3kumIOrmk7Pl549bUY1puI91Gdb8Tpu+9tjmhXFdwtfVsTv5SQvXKW0cK4eXgPBO6iJ07NNVOHH7/tF1jyJdnWbrU/Uau3VNI156QZ2ZaZFu76i6vQXy9YJ2H9QZ97aF3p1xlx1yfuYRcd0Kl7NyaX190+pUOKI0tvus5j7/nSWKLo3FER8R3LHEx8gqwge1POgi1l1yfirV3zHpISHxs3vLeFXOellcG1DFGbGP00PPkeKEOaXIsqhzbruOh9Qk5L08nW2grJ0avsvWocv0zRh/fGCG0TV35hB4v0rds5Vddjm/sFCKx+aXSt2yalPZsolxXW46CDnXp0YQ0rdso9OUYPSYT6+yzuxxzlrVfFfavQ/LKqsP+dbVzE/0qRb8pKin6V9U6Fnn24pqHufLMWy90nV+0DkXmcrb0Uq+6pU7/qcs/67SHTeTaaBk9ipyXQvLqW1U7uPKpux/ESlP9umydR8H3UjzHoXxj0/J1Yr5ubHsPrWOJqxK+hk5r+EVtH3pe1XWIXa+1vQ9YJ/oZre1bGReh3xKWeX7BxfYstwh5errGJi59be8482cSsfUPQT4Xlc9K+XMmatcY0fo2+SxYQs/4XO8M03Ng/TxujYH+FRELSdH+6mtveu8itb1Cy7C9X8GfsVOcfN86RHg56wJ0ob5qOz/E/rIdq7YhF34/0cfoeWKVftJjIbWDbDfXeXR/prBOKWJ/3dd43+sr+32TvgEIEZ6/7Zt5/l7ghMm77u+ey4gcz5xfktA5vE9C5vy2Y3lpXeX40tHcLMX42qZHS/ltZluXiSlDxillt3VdIvufbc0j75wy5aWaOxWRUZmfl5nDSh3LzoWbXJOg8uumKkndp1PnH2IPfe+U33z7vjWhdPQuWMh4raqxWMh9X89RZtSZ7/JpyXs3NWQcETN3CZHU/lmVnstZB1+ZfM5A/1VJ2V9t8wTXN1S+f27mzaulbCxJHePwC1Tz/0K1/VdPvtOsba+vL7ZxM1/jakJ/V9/yfdtNx+i7bhVRRll/rrK+sk3qLt/3T0afH+tzz1HDfxzZ/HlGDduK1y/GL21zvKptQGWFSpVlFm0z+ZxD/vdAt9EqQ971NkRHW7qytog53+cfVfeFGLStfddfYka5x6dl+yi//4z6/559aUn4/+/k2pv8BqfM/0qVCnu+If2OJPRZUcyzJF/5RQm5xtM9ln+LRN+8U9+iMQS1Veg9q2z/TlV3Ett3/rLOIXOookidy/5X3GYD+S8a1z2e0vH695T9vhEqdbY//0dU3jWZ2rYq/cvCRT8r08/NLlT5/zySdSurv1ybLiup5tAp5+NNzfPJ5r61warapajItfTQNeK610/rWEMPyb+uOo/ierRNbGU01Z+rqneIPWNsT9t1rD+OYr8rm0eKvp/Ch1P4Yepyy+hWVD/f+VWXX5X+TZdfZZ+KLb9J+S8=","base64")),Mo=new A(ao),Ro=(xo=wo=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.planFeatures=function(t){t.addStage(zo),t.addStage(["locl","ccmp","nukt","akhn"]),t.addStage(No),t.addStage(["rphf"],!1),t.addStage(Uo),t.addStage(No),t.addStage(["pref"]),t.addStage(Wo),t.addStage(["rkrf","abvf","blwf","half","pstf","vatu","cjct"]),t.addStage(Go),t.addStage(["abvs","blws","pres","psts","dist","abvm","blwm"])},e.assignFeatures=function(t,e){for(var n=function(n){var r=e[n].codePoints[0];if(Lo[r]){var i=Lo[r].map(function(r){var i=t.font.glyphForCodePoint(r);return new ya(t.font,i.id,[r],e[n].features)});e.splice.apply(e,[n,1].concat(i))}},r=e.length-1;r>=0;r--)n(r)},e}(Qi),wo.zeroMarkWidths="BEFORE_GPOS",xo);function Fo(t){return Bo.get(t.codePoints[0])}var Do=function t(e,n,r){f(this,t),this.category=e,this.syllableType=n,this.syllable=r};function zo(t,e){var n=0,r=Mo.match(e.map(Fo)),i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o,u=l[0],c=l[1],h=l[2];++n;for(var f=u;f<=c;f++)e[f].shaperInfo=new Do(Oo[Fo(e[f])],h[0],n);for(var d="R"===e[u].shaperInfo.category?1:Math.min(3,c-u),p=u;p<u+d;p++)e[p].features.rphf=!0}}function No(t,e){var n=e,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}a.substituted=!1}}function Uo(t,e){var n=e,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;o.substituted&&o.features.rphf&&(o.shaperInfo.category="R")}}function Wo(t,e){var n=e,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;o.substituted&&(o.shaperInfo.category="VPre")}}function Go(t,e){for(var n=t.glyphForCodePoint(9676).id,r=0,i=Vo(e,0);r<e.length;i=Vo(e,r=i)){var a=void 0,o=void 0,s=e[r].shaperInfo,l=s.syllableType;if("virama_terminated_cluster"===l||"standard_cluster"===l||"broken_cluster"===l){if("broken_cluster"===l&&n){var u=new ya(t,n,[9676]);for(u.shaperInfo=s,a=r;a<i&&"R"===e[a].shaperInfo.category;a++);e.splice(++a,0,u),i++}if("R"===s.category&&i-r>1)for(a=r+1;a<i;a++)if(Ho(s=e[a].shaperInfo)||jo(e[a])){jo(e[a])&&a--,e.splice.apply(e,[r,0].concat(e.splice(r+1,a-r),[e[a]]));break}for(a=r,o=i;a<i;a++)Ho(s=e[a].shaperInfo)||jo(e[a])?o=jo(e[a])?a+1:a:("VPre"===s.category||"VMPre"===s.category)&&o<a&&e.splice.apply(e,[o,1,e[a]].concat(e.splice(o,a-o)))}}}function Vo(t,e){if(e>=t.length)return e;for(var n=t[e].shaperInfo.syllable;++e<t.length&&t[e].shaperInfo.syllable===n;);return e}function jo(t){return"H"===t.shaperInfo.category&&!t.isLigated}function Ho(t){return"B"===t.category||"GB"===t.category}var qo={arab:ua,mong:ua,syrc:ua,"nko ":ua,phag:ua,mand:ua,mani:ua,phlp:ua,hang:va,bng2:vo,beng:vo,dev2:vo,deva:vo,gjr2:vo,gujr:vo,guru:vo,gur2:vo,knda:vo,knd2:vo,mlm2:vo,mlym:vo,ory2:vo,orya:vo,taml:vo,tml2:vo,telu:vo,tel2:vo,khmr:vo,bali:Ro,batk:Ro,brah:Ro,bugi:Ro,buhd:Ro,cakm:Ro,cham:Ro,dupl:Ro,egyp:Ro,gran:Ro,hano:Ro,java:Ro,kthi:Ro,kali:Ro,khar:Ro,khoj:Ro,sind:Ro,lepc:Ro,limb:Ro,mahj:Ro,mtei:Ro,modi:Ro,hmng:Ro,rjng:Ro,saur:Ro,shrd:Ro,sidd:Ro,sinh:Ro,sund:Ro,sylo:Ro,tglg:Ro,tagb:Ro,tale:Ro,lana:Ro,tavt:Ro,takr:Ro,tibt:Ro,tfng:Ro,tirh:Ro,latn:Qi,DFLT:Qi};for(var Zo=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype.applyLookup=function(t,e){var n=this;switch(t){case 1:var r=this.coverageIndex(e.coverage);if(-1===r)return!1;var i=this.glyphIterator.cur;switch(e.version){case 1:i.id=i.id+e.deltaGlyphID&65535;break;case 2:i.id=e.substitute.get(r)}return!0;case 2:var a=this.coverageIndex(e.coverage);if(-1!==a){var o,l=e.sequences.get(a);this.glyphIterator.cur.id=l[0],this.glyphIterator.cur.ligatureComponent=0;var u=this.glyphIterator.cur.features,c=this.glyphIterator.cur,h=l.slice(1).map(function(t,e){var r=new ya(n.font,t,void 0,u);return r.shaperInfo=c.shaperInfo,r.isLigated=c.isLigated,r.ligatureComponent=e+1,r.substituted=!0,r.isMultiplied=!0,r});return(o=this.glyphs).splice.apply(o,[this.glyphIterator.index+1,0].concat(h)),!0}return!1;case 3:var f=this.coverageIndex(e.coverage);if(-1!==f){return this.glyphIterator.cur.id=e.alternateSet.get(f)[0],!0}return!1;case 4:var d=this.coverageIndex(e.coverage);if(-1===d)return!1;var p=e.ligatureSets.get(d),g=Array.isArray(p),y=0;for(p=g?p:s(p);;){var v;if(g){if(y>=p.length)break;v=p[y++]}else{if((y=p.next()).done)break;v=y.value}var b=v,m=this.sequenceMatchIndices(1,b.components);if(m){var w=this.glyphIterator.cur,x=w.codePoints.slice(),S=m,_=Array.isArray(S),k=0;for(S=_?S:s(S);;){var C;if(_){if(k>=S.length)break;C=S[k++]}else{if((k=S.next()).done)break;C=k.value}var A=C;x.push.apply(x,this.glyphs[A].codePoints)}var P=new ya(this.font,b.glyph,x,w.features);P.shaperInfo=w.shaperInfo,P.isLigated=!0,P.substituted=!0;for(var E=w.isMark,I=0;I<m.length&&E;I++)E=this.glyphs[m[I]].isMark;P.ligatureID=E?null:this.ligatureID++;var T=w.ligatureID,O=w.codePoints.length,L=O,B=this.glyphIterator.index+1,M=m,R=Array.isArray(M),F=0;for(M=R?M:s(M);;){var D;if(R){if(F>=M.length)break;D=M[F++]}else{if((F=M.next()).done)break;D=F.value}var z=D;if(E)B=z;else for(;B<z;){var N=L-O+Math.min(this.glyphs[B].ligatureComponent||1,O);this.glyphs[B].ligatureID=P.ligatureID,this.glyphs[B].ligatureComponent=N,B++}T=this.glyphs[B].ligatureID,L+=O=this.glyphs[B].codePoints.length,B++}if(T&&!E)for(var U=B;U<this.glyphs.length&&this.glyphs[U].ligatureID===T;U++){N=L-O+Math.min(this.glyphs[U].ligatureComponent||1,O);this.glyphs[U].ligatureComponent=N}for(var W=m.length-1;W>=0;W--)this.glyphs.splice(m[W],1);return this.glyphs[this.glyphIterator.index]=P,!0}}return!1;case 5:return this.applyContext(e);case 6:return this.applyChainingContext(e);case 7:return this.applyLookup(e.lookupType,e.extension);default:throw new Error("GSUB lookupType "+t+" is not supported")}},e}(ga),Yo=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype.applyPositionValue=function(t,e){var n=this.positions[this.glyphIterator.peekIndex(t)];null!=e.xAdvance&&(n.xAdvance+=e.xAdvance),null!=e.yAdvance&&(n.yAdvance+=e.yAdvance),null!=e.xPlacement&&(n.xOffset+=e.xPlacement),null!=e.yPlacement&&(n.yOffset+=e.yPlacement);var r=this.font._variationProcessor,i=this.font.GDEF&&this.font.GDEF.itemVariationStore;r&&i&&(e.xPlaDevice&&(n.xOffset+=r.getDelta(i,e.xPlaDevice.a,e.xPlaDevice.b)),e.yPlaDevice&&(n.yOffset+=r.getDelta(i,e.yPlaDevice.a,e.yPlaDevice.b)),e.xAdvDevice&&(n.xAdvance+=r.getDelta(i,e.xAdvDevice.a,e.xAdvDevice.b)),e.yAdvDevice&&(n.yAdvance+=r.getDelta(i,e.yAdvDevice.a,e.yAdvDevice.b)))},e.prototype.applyLookup=function(t,e){switch(t){case 1:var n=this.coverageIndex(e.coverage);if(-1===n)return!1;switch(e.version){case 1:this.applyPositionValue(0,e.value);break;case 2:this.applyPositionValue(0,e.values.get(n))}return!0;case 2:var r=this.glyphIterator.peek();if(!r)return!1;var i=this.coverageIndex(e.coverage);if(-1===i)return!1;switch(e.version){case 1:var a=e.pairSets.get(i),o=Array.isArray(a),l=0;for(a=o?a:s(a);;){var u;if(o){if(l>=a.length)break;u=a[l++]}else{if((l=a.next()).done)break;u=l.value}var c=u;if(c.secondGlyph===r.id)return this.applyPositionValue(0,c.value1),this.applyPositionValue(1,c.value2),!0}return!1;case 2:var h=this.getClassID(this.glyphIterator.cur.id,e.classDef1),f=this.getClassID(r.id,e.classDef2);if(-1===h||-1===f)return!1;var d=e.classRecords.get(h).get(f);return this.applyPositionValue(0,d.value1),this.applyPositionValue(1,d.value2),!0}case 3:var p=this.glyphIterator.peekIndex(),g=this.glyphs[p];if(!g)return!1;var y=e.entryExitRecords[this.coverageIndex(e.coverage)];if(!y||!y.exitAnchor)return!1;var v=e.entryExitRecords[this.coverageIndex(e.coverage,g.id)];if(!v||!v.entryAnchor)return!1;var b=this.getAnchor(v.entryAnchor),m=this.getAnchor(y.exitAnchor),w=this.positions[this.glyphIterator.index],x=this.positions[p];switch(this.direction){case"ltr":w.xAdvance=m.x+w.xOffset;var S=b.x+x.xOffset;x.xAdvance-=S,x.xOffset-=S;break;case"rtl":S=m.x+w.xOffset,w.xAdvance-=S,w.xOffset-=S,x.xAdvance=b.x+x.xOffset}return this.glyphIterator.flags.rightToLeft?(this.glyphIterator.cur.cursiveAttachment=p,w.yOffset=b.y-m.y):(g.cursiveAttachment=this.glyphIterator.index,w.yOffset=m.y-b.y),!0;case 4:var _=this.coverageIndex(e.markCoverage);if(-1===_)return!1;for(var k=this.glyphIterator.index;--k>=0&&(this.glyphs[k].isMark||this.glyphs[k].ligatureComponent>0););if(k<0)return!1;var C=this.coverageIndex(e.baseCoverage,this.glyphs[k].id);if(-1===C)return!1;var A=e.markArray[_],P=e.baseArray[C][A.class];return this.applyAnchor(A,P,k),!0;case 5:var E=this.coverageIndex(e.markCoverage);if(-1===E)return!1;for(var I=this.glyphIterator.index;--I>=0&&this.glyphs[I].isMark;);if(I<0)return!1;var T=this.coverageIndex(e.ligatureCoverage,this.glyphs[I].id);if(-1===T)return!1;var O=e.ligatureArray[T],L=this.glyphIterator.cur,B=this.glyphs[I],M=B.ligatureID&&B.ligatureID===L.ligatureID&&L.ligatureComponent>0?Math.min(L.ligatureComponent,B.codePoints.length)-1:B.codePoints.length-1,R=e.markArray[E],F=O[M][R.class];return this.applyAnchor(R,F,I),!0;case 6:var D=this.coverageIndex(e.mark1Coverage);if(-1===D)return!1;var z=this.glyphIterator.peekIndex(-1),N=this.glyphs[z];if(!N||!N.isMark)return!1;var U=this.glyphIterator.cur,W=!1;if(U.ligatureID===N.ligatureID?U.ligatureID?U.ligatureComponent===N.ligatureComponent&&(W=!0):W=!0:(U.ligatureID&&!U.ligatureComponent||N.ligatureID&&!N.ligatureComponent)&&(W=!0),!W)return!1;var G=this.coverageIndex(e.mark2Coverage,N.id);if(-1===G)return!1;var V=e.mark1Array[D],j=e.mark2Array[G][V.class];return this.applyAnchor(V,j,z),!0;case 7:return this.applyContext(e);case 8:return this.applyChainingContext(e);case 9:return this.applyLookup(e.lookupType,e.extension);default:throw new Error("Unsupported GPOS table: "+t)}},e.prototype.applyAnchor=function(t,e,n){var r=this.getAnchor(e),i=this.getAnchor(t.markAnchor),a=(this.positions[n],this.positions[this.glyphIterator.index]);a.xOffset=r.x-i.x,a.yOffset=r.y-i.y,this.glyphIterator.cur.markAttachment=n},e.prototype.getAnchor=function(t){var e=t.xCoordinate,n=t.yCoordinate,r=this.font._variationProcessor,i=this.font.GDEF&&this.font.GDEF.itemVariationStore;return r&&i&&(t.xDeviceTable&&(e+=r.getDelta(i,t.xDeviceTable.a,t.xDeviceTable.b)),t.yDeviceTable&&(n+=r.getDelta(i,t.yDeviceTable.a,t.yDeviceTable.b))),{x:e,y:n}},e.prototype.applyFeatures=function(e,n,r){t.prototype.applyFeatures.call(this,e,n,r);for(var i=0;i<this.glyphs.length;i++)this.fixCursiveAttachment(i);this.fixMarkAttachment()},e.prototype.fixCursiveAttachment=function(t){var e=this.glyphs[t];if(null!=e.cursiveAttachment){var n=e.cursiveAttachment;e.cursiveAttachment=null,this.fixCursiveAttachment(n),this.positions[t].yOffset+=this.positions[n].yOffset}},e.prototype.fixMarkAttachment=function(){for(var t=0;t<this.glyphs.length;t++){var e=this.glyphs[t];if(null!=e.markAttachment){var n=e.markAttachment;if(this.positions[t].xOffset+=this.positions[n].xOffset,this.positions[t].yOffset+=this.positions[n].yOffset,"ltr"===this.direction)for(var r=n;r<t;r++)this.positions[t].xOffset-=this.positions[r].xAdvance,this.positions[t].yOffset-=this.positions[r].yAdvance;else for(var i=n+1;i<t+1;i++)this.positions[t].xOffset+=this.positions[i].xAdvance,this.positions[t].yOffset+=this.positions[i].yAdvance}}},e}(ga),Xo=function(){function t(e){f(this,t),this.font=e,this.glyphInfos=null,this.plan=null,this.GSUBProcessor=null,this.GPOSProcessor=null,this.fallbackPosition=!0,e.GSUB&&(this.GSUBProcessor=new Zo(e,e.GSUB)),e.GPOS&&(this.GPOSProcessor=new Yo(e,e.GPOS))}return t.prototype.setup=function(t){var e=this;this.glyphInfos=t.glyphs.map(function(t){return new ya(e.font,t.id,[].concat(t.codePoints))});var n=null;for(var r in this.GPOSProcessor&&(n=this.GPOSProcessor.selectScript(t.script,t.language,t.direction)),this.GSUBProcessor&&(n=this.GSUBProcessor.selectScript(t.script,t.language,t.direction)),this.shaper=function(t){Array.isArray(t)||(t=[t]);var e=t,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=qo[i];if(a)return a}return Qi}(n),this.plan=new qi(this.font,n,t.direction),this.shaper.plan(this.plan,this.glyphInfos,t.features),this.plan.allFeatures)t.features[r]=!0},t.prototype.substitute=function(t){var e=this;this.GSUBProcessor&&(this.plan.process(this.GSUBProcessor,this.glyphInfos),t.glyphs=this.glyphInfos.map(function(t){return e.font.getGlyph(t.id,t.codePoints)}))},t.prototype.position=function(t){return"BEFORE_GPOS"===this.shaper.zeroMarkWidths&&this.zeroMarkAdvances(t.positions),this.GPOSProcessor&&this.plan.process(this.GPOSProcessor,this.glyphInfos,t.positions),"AFTER_GPOS"===this.shaper.zeroMarkWidths&&this.zeroMarkAdvances(t.positions),"rtl"===t.direction&&(t.glyphs.reverse(),t.positions.reverse()),this.GPOSProcessor&&this.GPOSProcessor.features},t.prototype.zeroMarkAdvances=function(t){for(var e=0;e<this.glyphInfos.length;e++)this.glyphInfos[e].isMark&&(t[e].xAdvance=0,t[e].yAdvance=0)},t.prototype.cleanup=function(){this.glyphInfos=null,this.plan=null,this.shaper=null},t.prototype.getAvailableFeatures=function(t,e){var n=[];return this.GSUBProcessor&&(this.GSUBProcessor.selectScript(t,e),n.push.apply(n,u(this.GSUBProcessor.features))),this.GPOSProcessor&&(this.GPOSProcessor.selectScript(t,e),n.push.apply(n,u(this.GPOSProcessor.features))),n},t}(),Ko=function(){function t(e){f(this,t),this.font=e,this.unicodeLayoutEngine=null,this.kernProcessor=null,this.font.morx?this.engine=new Hi(this.font):(this.font.GSUB||this.font.GPOS)&&(this.engine=new Xo(this.font))}return t.prototype.layout=function(t,e,n,r,i){if("string"==typeof e&&(i=r,r=n,n=e,e=[]),"string"==typeof t){null==n&&(n=function(t){for(var e=t.length,n=0;n<e;){var r=t.charCodeAt(n++);if(55296<=r&&r<=56319&&n<e){var i=t.charCodeAt(n);56320<=i&&i<=57343&&(n++,r=((1023&r)<<10)+(1023&i)+65536)}var a=k.getScript(r);if("Common"!==a&&"Inherited"!==a&&"Unknown"!==a)return oi[a]}return oi.Unknown}(t));var a=this.font.glyphsForString(t)}else{if(null==n){var o=[],l=t,u=Array.isArray(l),c=0;for(l=u?l:s(l);;){var h;if(u){if(c>=l.length)break;h=l[c++]}else{if((c=l.next()).done)break;h=c.value}var f=h;o.push.apply(o,f.codePoints)}n=function(t){for(var e=0;e<t.length;e++){var n=t[e],r=k.getScript(n);if("Common"!==r&&"Inherited"!==r&&"Unknown"!==r)return oi[r]}return oi.Unknown}(o)}a=t}var d=new yi(a,e,n,r,i);return 0===a.length?(d.positions=[],d):(this.engine&&this.engine.setup&&this.engine.setup(d),this.substitute(d),this.position(d),this.hideDefaultIgnorables(d.glyphs,d.positions),this.engine&&this.engine.cleanup&&this.engine.cleanup(),d)},t.prototype.substitute=function(t){this.engine&&this.engine.substitute&&this.engine.substitute(t)},t.prototype.position=function(t){t.positions=t.glyphs.map(function(t){return new function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;f(this,t),this.xAdvance=e,this.yAdvance=n,this.xOffset=r,this.yOffset=i}(t.advanceWidth)});var e=null;this.engine&&this.engine.position&&(e=this.engine.position(t)),e||this.engine&&!this.engine.fallbackPosition||(this.unicodeLayoutEngine||(this.unicodeLayoutEngine=new ii(this.font)),this.unicodeLayoutEngine.positionGlyphs(t.glyphs,t.positions)),e&&e.kern||!1===t.features.kern||!this.font.kern||(this.kernProcessor||(this.kernProcessor=new ri(this.font)),this.kernProcessor.process(t.glyphs,t.positions),t.features.kern=!0)},t.prototype.hideDefaultIgnorables=function(t,e){for(var n=this.font.glyphForCodePoint(32),r=0;r<t.length;r++)this.isDefaultIgnorable(t[r].codePoints[0])&&(t[r]=n,e[r].xAdvance=0,e[r].yAdvance=0)},t.prototype.isDefaultIgnorable=function(t){var e=t>>16;if(0===e)switch(t>>8){case 0:return 173===t;case 3:return 847===t;case 6:return 1564===t;case 23:return 6068<=t&&t<=6069;case 24:return 6155<=t&&t<=6158;case 32:return 8203<=t&&t<=8207||8234<=t&&t<=8238||8288<=t&&t<=8303;case 254:return 65024<=t&&t<=65039||65279===t;case 255:return 65520<=t&&t<=65528;default:return!1}else switch(e){case 1:return 113824<=t&&t<=113827||119155<=t&&t<=119162;case 14:return 917504<=t&&t<=921599;default:return!1}},t.prototype.getAvailableFeatures=function(t,e){var n=[];return this.engine&&n.push.apply(n,this.engine.getAvailableFeatures(t,e)),this.font.kern&&-1===n.indexOf("kern")&&n.push("kern"),n},t.prototype.stringsForGlyph=function(t){var e=new _,n=this.font._cmapProcessor.codePointsForGlyph(t),r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;e.add(x(o))}if(this.engine&&this.engine.stringsForGlyph){var l=this.engine.stringsForGlyph(t),u=Array.isArray(l),c=0;for(l=u?l:s(l);;){var h;if(u){if(c>=l.length)break;h=l[c++]}else{if((c=l.next()).done)break;h=c.value}var f=h;e.add(f)}}return S(e)},t}(),Jo={moveTo:"M",lineTo:"L",quadraticCurveTo:"Q",bezierCurveTo:"C",closePath:"Z"},Qo=function(){function t(){f(this,t),this.commands=[],this._bbox=null,this._cbox=null}return t.prototype.toFunction=function(){var t=this.commands.map(function(t){return"  ctx."+t.command+"("+t.args.join(", ")+");"});return new Function("ctx",t.join("\n"))},t.prototype.toSVG=function(){return this.commands.map(function(t){var e=t.args.map(function(t){return Math.round(100*t)/100});return""+Jo[t.command]+e.join(" ")}).join("")},t.prototype.mapPoints=function(e){var n=new t,r=this.commands,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}for(var l=o,u=[],c=0;c<l.args.length;c+=2){var h=e(l.args[c],l.args[c+1]),f=h[0],d=h[1];u.push(f,d)}n[l.command].apply(n,u)}return n},t.prototype.transform=function(t,e,n,r,i,a){return this.mapPoints(function(o,s){return[o=t*o+n*s+i,s=e*o+r*s+a]})},t.prototype.translate=function(t,e){return this.transform(1,0,0,1,t,e)},t.prototype.rotate=function(t){var e=Math.cos(t),n=Math.sin(t);return this.transform(e,n,-n,e,0,0)},t.prototype.scale=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;return this.transform(t,0,0,e,0,0)},d(t,[{key:"cbox",get:function(){if(!this._cbox){var t=new ai,e=this.commands,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}for(var a=i,o=0;o<a.args.length;o+=2)t.addPoint(a.args[o],a.args[o+1])}this._cbox=l(t)}return this._cbox}},{key:"bbox",get:function(){if(this._bbox)return this._bbox;var t=new ai,e=0,n=0,r=function(t){return Math.pow(1-t,3)*k[E]+3*Math.pow(1-t,2)*t*C[E]+3*(1-t)*Math.pow(t,2)*A[E]+Math.pow(t,3)*P[E]},i=this.commands,a=Array.isArray(i),o=0;for(i=a?i:s(i);;){var u;if(a){if(o>=i.length)break;u=i[o++]}else{if((o=i.next()).done)break;u=o.value}var c=u;switch(c.command){case"moveTo":case"lineTo":var h=c.args,f=h[0],d=h[1];t.addPoint(f,d),e=f,n=d;break;case"quadraticCurveTo":case"bezierCurveTo":if("quadraticCurveTo"===c.command)var p=c.args,g=p[0],y=p[1],v=e+2/3*(g-e),b=n+2/3*(y-n),m=(S=p[2])+2/3*(g-S),w=(_=p[3])+2/3*(y-_);else var x=c.args,S=(v=x[0],b=x[1],m=x[2],w=x[3],x[4]),_=x[5];t.addPoint(S,_);for(var k=[e,n],C=[v,b],A=[m,w],P=[S,_],E=0;E<=1;E++){var I=6*k[E]-12*C[E]+6*A[E],T=-3*k[E]+9*C[E]-9*A[E]+3*P[E];if(c=3*C[E]-3*k[E],0!==T){var O=Math.pow(I,2)-4*c*T;if(!(O<0)){var L=(-I+Math.sqrt(O))/(2*T);0<L&&L<1&&(0===E?t.addPoint(r(L),t.maxY):1===E&&t.addPoint(t.maxX,r(L)));var B=(-I-Math.sqrt(O))/(2*T);0<B&&B<1&&(0===E?t.addPoint(r(B),t.maxY):1===E&&t.addPoint(t.maxX,r(B)))}}else{if(0===I)continue;var M=-c/I;0<M&&M<1&&(0===E?t.addPoint(r(M),t.maxY):1===E&&t.addPoint(t.maxX,r(M)))}}e=S,n=_}}return this._bbox=l(t)}}]),t}(),$o=["moveTo","lineTo","quadraticCurveTo","bezierCurveTo","closePath"],ts=function(){var t=$o[es];Qo.prototype[t]=function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return this._bbox=this._cbox=null,this.commands.push({command:t,args:n}),this}},es=0;es<$o.length;es++)ts();var ns,rs=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function is(t,e,n,r,i){var a={};return Object.keys(r).forEach(function(t){a[t]=r[t]}),a.enumerable=!!a.enumerable,a.configurable=!!a.configurable,("value"in a||a.initializer)&&(a.writable=!0),a=n.slice().reverse().reduce(function(n,r){return r(t,e,n)||n},a),i&&void 0!==a.initializer&&(a.value=a.initializer?a.initializer.call(i):void 0,a.initializer=void 0),void 0===a.initializer&&(Object.defineProperty(t,e,a),a=null),a}var as,os=(is((ns=function(){function t(e,n,r){f(this,t),this.id=e,this.codePoints=n,this._font=r,this.isMark=this.codePoints.every(k.isMark),this.isLigature=this.codePoints.length>1}return t.prototype._getPath=function(){return new Qo},t.prototype._getCBox=function(){return this.path.cbox},t.prototype._getBBox=function(){return this.path.bbox},t.prototype._getTableMetrics=function(t){if(this.id<t.metrics.length)return t.metrics.get(this.id);var e=t.metrics.get(t.metrics.length-1);return{advance:e?e.advance:0,bearing:t.bearings.get(this.id-t.metrics.length)||0}},t.prototype._getMetrics=function(t){if(this._metrics)return this._metrics;var e=this._getTableMetrics(this._font.hmtx),n=e.advance,r=e.bearing;if(this._font.vmtx)var i=this._getTableMetrics(this._font.vmtx),a=i.advance,o=i.bearing;else{var s;if(null==t&&(t=this.cbox),(s=this._font["OS/2"])&&s.version>0)a=Math.abs(s.typoAscender-s.typoDescender),o=s.typoAscender-t.maxY;else{var l=this._font.hhea;a=Math.abs(l.ascent-l.descent),o=l.ascent-t.maxY}}return this._font._variationProcessor&&this._font.HVAR&&(n+=this._font._variationProcessor.getAdvanceAdjustment(this.id,this._font.HVAR)),this._metrics={advanceWidth:n,advanceHeight:a,leftBearing:r,topBearing:o}},t.prototype.getScaledPath=function(t){var e=1/this._font.unitsPerEm*t;return this.path.scale(e)},t.prototype._getName=function(){var t=this._font.post;if(!t)return null;switch(t.version){case 1:return rs[this.id];case 2:var e=t.glyphNameIndex[this.id];return e<rs.length?rs[e]:t.names[e-rs.length];case 2.5:return rs[this.id+t.offsets[this.id]];case 4:return String.fromCharCode(t.map[this.id])}},t.prototype.render=function(t,e){t.save();var n=1/this._font.head.unitsPerEm*e;t.scale(n,n),this.path.toFunction()(t),t.fill(),t.restore()},d(t,[{key:"cbox",get:function(){return this._getCBox()}},{key:"bbox",get:function(){return this._getBBox()}},{key:"path",get:function(){return this._getPath()}},{key:"advanceWidth",get:function(){return this._getMetrics().advanceWidth}},{key:"advanceHeight",get:function(){return this._getMetrics().advanceHeight}},{key:"ligatureCaretPositions",get:function(){}},{key:"name",get:function(){return this._getName()}}]),t}()).prototype,"cbox",[B],o(ns.prototype,"cbox"),ns.prototype),is(ns.prototype,"bbox",[B],o(ns.prototype,"bbox"),ns.prototype),is(ns.prototype,"path",[B],o(ns.prototype,"path"),ns.prototype),is(ns.prototype,"advanceWidth",[B],o(ns.prototype,"advanceWidth"),ns.prototype),is(ns.prototype,"advanceHeight",[B],o(ns.prototype,"advanceHeight"),ns.prototype),is(ns.prototype,"name",[B],o(ns.prototype,"name"),ns.prototype),ns),ss=new a.Struct({numberOfContours:a.int16,xMin:a.int16,yMin:a.int16,xMax:a.int16,yMax:a.int16}),ls=function(){function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;f(this,t),this.onCurve=e,this.endContour=n,this.x=r,this.y=i}return t.prototype.copy=function(){return new t(this.onCurve,this.endContour,this.x,this.y)},t}(),us=function t(e,n,r){f(this,t),this.glyphID=e,this.dx=n,this.dy=r,this.pos=0,this.scaleX=this.scaleY=1,this.scale01=this.scale10=0},cs=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype._getCBox=function(t){if(this._font._variationProcessor&&!t)return this.path.cbox;var e=this._font._getTableStream("glyf");e.pos+=this._font.loca.offsets[this.id];var n=ss.decode(e),r=new ai(n.xMin,n.yMin,n.xMax,n.yMax);return l(r)},e.prototype._parseGlyphCoord=function(t,e,n,r){if(n){var i=t.readUInt8();r||(i=-i),i+=e}else if(r)i=e;else i=e+t.readInt16BE();return i},e.prototype._decode=function(){var t=this._font.loca.offsets[this.id];if(t===this._font.loca.offsets[this.id+1])return null;var e=this._font._getTableStream("glyf");e.pos+=t;var n=e.pos,r=ss.decode(e);return r.numberOfContours>0?this._decodeSimple(r,e):r.numberOfContours<0&&this._decodeComposite(r,e,n),r},e.prototype._decodeSimple=function(t,e){t.points=[];var n=new a.Array(a.uint16,t.numberOfContours).decode(e);t.instructions=new a.Array(a.uint8,a.uint16).decode(e);for(var r=[],i=n[n.length-1]+1;r.length<i;){var o=e.readUInt8();if(r.push(o),8&o)for(var s=e.readUInt8(),l=0;l<s;l++)r.push(o)}for(var u=0;u<r.length;u++){o=r[u];var c=new ls(!!(1&o),n.indexOf(u)>=0,0,0);t.points.push(c)}var h=0;for(u=0;u<r.length;u++){o=r[u];t.points[u].x=h=this._parseGlyphCoord(e,h,2&o,16&o)}var f=0;for(u=0;u<r.length;u++){o=r[u];t.points[u].y=f=this._parseGlyphCoord(e,f,4&o,32&o)}if(this._font._variationProcessor){var d=t.points.slice();d.push.apply(d,this._getPhantomPoints(t)),this._font._variationProcessor.transformPoints(this.id,d),t.phantomPoints=d.slice(-4)}},e.prototype._decodeComposite=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;t.components=[];for(var r=!1,i=32;32&i;){i=e.readUInt16BE();var a=e.pos-n,o=e.readUInt16BE();if(r||(r=0!=(256&i)),1&i)var s=e.readInt16BE(),l=e.readInt16BE();else s=e.readInt8(),l=e.readInt8();(h=new us(o,s,l)).pos=a,8&i?h.scaleX=h.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824:64&i?(h.scaleX=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,h.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824):128&i&&(h.scaleX=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,h.scale01=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,h.scale10=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,h.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824),t.components.push(h)}if(this._font._variationProcessor){for(var u=[],c=0;c<t.components.length;c++){var h=t.components[c];u.push(new ls(!0,!0,h.dx,h.dy))}u.push.apply(u,this._getPhantomPoints(t)),this._font._variationProcessor.transformPoints(this.id,u),t.phantomPoints=u.splice(-4,4);for(var f=0;f<u.length;f++){var d=u[f];t.components[f].dx=d.x,t.components[f].dy=d.y}}return r},e.prototype._getPhantomPoints=function(t){var e=this._getCBox(!0);null==this._metrics&&(this._metrics=os.prototype._getMetrics.call(this,e));var n=this._metrics,r=n.advanceWidth,i=n.advanceHeight,a=n.leftBearing,o=n.topBearing;return[new ls(!1,!0,t.xMin-a,0),new ls(!1,!0,t.xMin-a+r,0),new ls(!1,!0,0,t.yMax+o),new ls(!1,!0,0,t.yMax+o+i)]},e.prototype._getContours=function(){var t=this._decode();if(!t)return[];var e=[];if(t.numberOfContours<0){var n=t.components,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}for(var o=a,l=this._font.getGlyph(o.glyphID)._getContours(),u=0;u<l.length;u++)for(var c=l[u],h=0;h<c.length;h++){var f=c[h],d=f.x*o.scaleX+f.y*o.scale01+o.dx,p=f.y*o.scaleY+f.x*o.scale10+o.dy;e.push(new ls(f.onCurve,f.endContour,d,p))}}}else e=t.points||[];t.phantomPoints&&!this._font.directory.tables.HVAR&&(this._metrics.advanceWidth=t.phantomPoints[1].x-t.phantomPoints[0].x,this._metrics.advanceHeight=t.phantomPoints[3].y-t.phantomPoints[2].y,this._metrics.leftBearing=t.xMin-t.phantomPoints[0].x,this._metrics.topBearing=t.phantomPoints[2].y-t.yMax);for(var g=[],y=[],v=0;v<e.length;v++){var b=e[v];y.push(b),b.endContour&&(g.push(y),y=[])}return g},e.prototype._getMetrics=function(){if(this._metrics)return this._metrics;var e=this._getCBox(!0);return t.prototype._getMetrics.call(this,e),this._font._variationProcessor&&!this._font.HVAR&&this.path,this._metrics},e.prototype._getPath=function(){for(var t=this._getContours(),e=new Qo,n=0;n<t.length;n++){var r=t[n],i=r[0],a=r[r.length-1],o=0;if(i.onCurve){var s=null;o=1}else s=i=a.onCurve?a:new ls(!1,!1,(i.x+a.x)/2,(i.y+a.y)/2);e.moveTo(i.x,i.y);for(var l=o;l<r.length;l++){var u=r[l],c=0===l?i:r[l-1];if(c.onCurve&&u.onCurve)e.lineTo(u.x,u.y);else if(c.onCurve&&!u.onCurve)s=u;else if(c.onCurve||u.onCurve){if(c.onCurve||!u.onCurve)throw new Error("Unknown TTF path state");e.quadraticCurveTo(s.x,s.y,u.x,u.y);s=null}else{var h=(c.x+u.x)/2,f=(c.y+u.y)/2;e.quadraticCurveTo(c.x,c.y,h,f);var s=u}}s&&e.quadraticCurveTo(s.x,s.y,i.x,i.y),e.closePath()}return e},e}(os),hs=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype._getName=function(){return this._font.CFF2?t.prototype._getName.call(this):this._font["CFF "].getGlyphName(this.id)},e.prototype.bias=function(t){return t.length<1240?107:t.length<33900?1131:32768},e.prototype._getPath=function(){var t=this._font.stream,e=(t.pos,this._font.CFF2||this._font["CFF "]),n=e.topDict.CharStrings[this.id],r=n.offset+n.length;t.pos=n.offset;var i=new Qo,a=[],o=[],s=null,l=0,u=0,c=0,h=void 0,f=void 0,d=!1;this._usedGsubrs=h={},this._usedSubrs=f={};var p=e.globalSubrIndex||[],g=this.bias(p),y=e.privateDictForGlyph(this.id),v=y.Subrs||[],b=this.bias(v),m=e.topDict.vstore&&e.topDict.vstore.itemVariationStore,w=y.vsindex,x=this._font._variationProcessor;function S(){null==s&&(s=a.shift()+y.nominalWidthX)}function _(){return a.length%2!=0&&S(),l+=a.length>>1,a.length=0}function k(t,e){d&&i.closePath(),i.moveTo(t,e),d=!0}return function n(){for(;t.pos<r;){var s=t.readUInt8();if(s<32)switch(s){case 1:case 3:case 18:case 23:_();break;case 4:a.length>1&&S(),c+=a.shift(),k(u,c);break;case 5:for(;a.length>=2;)u+=a.shift(),c+=a.shift(),i.lineTo(u,c);break;case 6:case 7:for(var y=6===s;a.length>=1;)y?u+=a.shift():c+=a.shift(),i.lineTo(u,c),y=!y;break;case 8:for(;a.length>0;){var C=u+a.shift(),A=c+a.shift(),P=C+a.shift(),E=A+a.shift();u=P+a.shift(),c=E+a.shift(),i.bezierCurveTo(C,A,P,E,u,c)}break;case 10:var I=a.pop()+b,T=v[I];if(T){f[I]=!0;var O=t.pos,L=r;t.pos=T.offset,r=T.offset+T.length,n(),t.pos=O,r=L}break;case 11:if(e.version>=2)break;return;case 14:if(e.version>=2)break;a.length>0&&S(),d&&(i.closePath(),d=!1);break;case 15:if(e.version<2)throw new Error("vsindex operator not supported in CFF v1");w=a.pop();break;case 16:if(e.version<2)throw new Error("blend operator not supported in CFF v1");if(!x)throw new Error("blend operator in non-variation font");for(var B=x.getBlendVector(m,w),M=a.pop(),R=M*B.length,F=a.length-R,D=F-M,z=0;z<M;z++){for(var N=a[D+z],U=0;U<B.length;U++)N+=B[U]*a[F++];a[D+z]=N}for(;R--;)a.pop();break;case 19:case 20:_(),t.pos+=l+7>>3;break;case 21:a.length>2&&S(),u+=a.shift(),c+=a.shift(),k(u,c);break;case 22:a.length>1&&S(),k(u+=a.shift(),c);break;case 24:for(;a.length>=8;)C=u+a.shift(),A=c+a.shift(),P=C+a.shift(),E=A+a.shift(),u=P+a.shift(),c=E+a.shift(),i.bezierCurveTo(C,A,P,E,u,c);u+=a.shift(),c+=a.shift(),i.lineTo(u,c);break;case 25:for(;a.length>=8;)u+=a.shift(),c+=a.shift(),i.lineTo(u,c);C=u+a.shift(),A=c+a.shift(),P=C+a.shift(),E=A+a.shift(),u=P+a.shift(),c=E+a.shift(),i.bezierCurveTo(C,A,P,E,u,c);break;case 26:for(a.length%2&&(u+=a.shift());a.length>=4;)C=u,A=c+a.shift(),P=C+a.shift(),E=A+a.shift(),u=P,c=E+a.shift(),i.bezierCurveTo(C,A,P,E,u,c);break;case 27:for(a.length%2&&(c+=a.shift());a.length>=4;)C=u+a.shift(),A=c,P=C+a.shift(),E=A+a.shift(),u=P+a.shift(),c=E,i.bezierCurveTo(C,A,P,E,u,c);break;case 28:a.push(t.readInt16BE());break;case 29:I=a.pop()+g,(T=p[I])&&(h[I]=!0,O=t.pos,L=r,t.pos=T.offset,r=T.offset+T.length,n(),t.pos=O,r=L);break;case 30:case 31:for(y=31===s;a.length>=4;)y?(C=u+a.shift(),A=c,P=C+a.shift(),E=A+a.shift(),c=E+a.shift(),u=P+(1===a.length?a.shift():0)):(C=u,A=c+a.shift(),P=C+a.shift(),E=A+a.shift(),u=P+a.shift(),c=E+(1===a.length?a.shift():0)),i.bezierCurveTo(C,A,P,E,u,c),y=!y;break;case 12:switch(s=t.readUInt8()){case 3:var W=a.pop(),G=a.pop();a.push(W&&G?1:0);break;case 4:W=a.pop(),G=a.pop(),a.push(W||G?1:0);break;case 5:W=a.pop(),a.push(W?0:1);break;case 9:W=a.pop(),a.push(Math.abs(W));break;case 10:W=a.pop(),G=a.pop(),a.push(W+G);break;case 11:W=a.pop(),G=a.pop(),a.push(W-G);break;case 12:W=a.pop(),G=a.pop(),a.push(W/G);break;case 14:W=a.pop(),a.push(-W);break;case 15:W=a.pop(),G=a.pop(),a.push(W===G?1:0);break;case 18:a.pop();break;case 20:var V=a.pop(),j=a.pop();o[j]=V;break;case 21:j=a.pop(),a.push(o[j]||0);break;case 22:var H=a.pop(),q=a.pop(),Z=a.pop(),Y=a.pop();a.push(Z<=Y?H:q);break;case 23:a.push(Math.random());break;case 24:W=a.pop(),G=a.pop(),a.push(W*G);break;case 26:W=a.pop(),a.push(Math.sqrt(W));break;case 27:W=a.pop(),a.push(W,W);break;case 28:W=a.pop(),G=a.pop(),a.push(G,W);break;case 29:(j=a.pop())<0?j=0:j>a.length-1&&(j=a.length-1),a.push(a[j]);break;case 30:var X=a.pop(),K=a.pop();if(K>=0)for(;K>0;){for(var J=a[X-1],Q=X-2;Q>=0;Q--)a[Q+1]=a[Q];a[0]=J,K--}else for(;K<0;){J=a[0];for(var $=0;$<=X;$++)a[$]=a[$+1];a[X-1]=J,K++}break;case 34:C=u+a.shift(),A=c,P=C+a.shift(),E=A+a.shift();var tt=P+a.shift(),et=E,nt=tt+a.shift(),rt=et,it=nt+a.shift(),at=rt,ot=it+a.shift(),st=at;u=ot,c=st,i.bezierCurveTo(C,A,P,E,tt,et),i.bezierCurveTo(nt,rt,it,at,ot,st);break;case 35:for(var lt=[],ut=0;ut<=5;ut++)u+=a.shift(),c+=a.shift(),lt.push(u,c);i.bezierCurveTo.apply(i,lt.slice(0,6)),i.bezierCurveTo.apply(i,lt.slice(6)),a.shift();break;case 36:C=u+a.shift(),A=c+a.shift(),P=C+a.shift(),rt=et=E=A+a.shift(),it=(nt=(tt=P+a.shift())+a.shift())+a.shift(),at=rt+a.shift(),ot=it+a.shift(),u=ot,c=st=at,i.bezierCurveTo(C,A,P,E,tt,et),i.bezierCurveTo(nt,rt,it,at,ot,st);break;case 37:var ct=u,ht=c;lt=[];for(var ft=0;ft<=4;ft++)u+=a.shift(),c+=a.shift(),lt.push(u,c);Math.abs(u-ct)>Math.abs(c-ht)?(u+=a.shift(),c=ht):(u=ct,c+=a.shift()),lt.push(u,c),i.bezierCurveTo.apply(i,lt.slice(0,6)),i.bezierCurveTo.apply(i,lt.slice(6));break;default:throw new Error("Unknown op: 12 "+s)}break;default:throw new Error("Unknown op: "+s)}else if(s<247)a.push(s-139);else if(s<251){var dt=t.readUInt8();a.push(256*(s-247)+dt+108)}else s<255?(dt=t.readUInt8(),a.push(256*-(s-251)-dt-108)):a.push(t.readInt32BE()/65536)}}(),d&&i.closePath(),i},e}(os),fs=new a.Struct({originX:a.uint16,originY:a.uint16,type:new a.String(4),data:new a.Buffer(function(t){return t.parent.buflen-t._currentOffset})}),ds=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype.getImageForSize=function(t){for(var e=0;e<this._font.sbix.imageTables.length;e++){var n=this._font.sbix.imageTables[e];if(n.ppem>=t)break}var r=n.imageOffsets,i=r[this.id],a=r[this.id+1];return i===a?null:(this._font.stream.pos=i,fs.decode(this._font.stream,{buflen:a-i}))},e.prototype.render=function(e,n){var r=this.getImageForSize(n);if(null!=r){var i=n/this._font.unitsPerEm;e.image(r.data,{height:n,x:r.originX,y:(this.bbox.minY-r.originY)*i})}this._font.sbix.flags.renderOutlines&&t.prototype.render.call(this,e,n)},e}(cs),ps=function t(e,n){f(this,t),this.glyph=e,this.color=n},gs=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype._getBBox=function(){for(var t=new ai,e=0;e<this.layers.length;e++){var n=this.layers[e].glyph.bbox;t.addPoint(n.minX,n.minY),t.addPoint(n.maxX,n.maxY)}return t},e.prototype.render=function(t,e){var n=this.layers,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=o.glyph,u=o.color;t.fillColor([u.red,u.green,u.blue],u.alpha/255*100),l.render(t,e)}},d(e,[{key:"layers",get:function(){for(var t=this._font.CPAL,e=this._font.COLR,n=0,r=e.baseGlyphRecord.length-1;n<=r;){var i=n+r>>1,a=e.baseGlyphRecord[i];if(this.id<a.gid)r=i-1;else{if(!(this.id>a.gid)){var o=a;break}n=i+1}}if(null==o){var s=this._font._getBaseGlyph(this.id);return[new ps(s,c={red:0,green:0,blue:0,alpha:255})]}for(var l=[],u=o.firstLayerIndex;u<o.firstLayerIndex+o.numLayers;u++){a=e.layerRecords[u];var c=t.colorRecords[a.paletteIndex];s=this._font._getBaseGlyph(a.gid);l.push(new ps(s,c))}return l}}]),e}(os),ys=function(){function t(e,n){f(this,t),this.font=e,this.normalizedCoords=this.normalizeCoords(n),this.blendVectors=new p}return t.prototype.normalizeCoords=function(t){for(var e=[],n=0;n<this.font.fvar.axis.length;n++){var r=this.font.fvar.axis[n];t[n]<r.defaultValue?e.push((t[n]-r.defaultValue+P)/(r.defaultValue-r.minValue+P)):e.push((t[n]-r.defaultValue+P)/(r.maxValue-r.defaultValue+P))}if(this.font.avar)for(n=0;n<this.font.avar.segment.length;n++)for(var i=this.font.avar.segment[n],a=0;a<i.correspondence.length;a++){var o=i.correspondence[a];if(a>=1&&e[n]<o.fromCoord){var s=i.correspondence[a-1];e[n]=((e[n]-s.fromCoord)*(o.toCoord-s.toCoord)+P)/(o.fromCoord-s.fromCoord+P)+s.toCoord;break}}return e},t.prototype.transformPoints=function(t,e){if(this.font.fvar&&this.font.gvar){var n=this.font.gvar;if(!(t>=n.glyphCount)){var r=n.offsets[t];if(r!==n.offsets[t+1]){var i=this.font.stream;if(i.pos=r,!(i.pos>=i.length)){var a=i.readUInt16BE(),o=r+i.readUInt16BE();if(32768&a){var s=i.pos;i.pos=o;var l=this.decodePoints();o=i.pos,i.pos=s}var u=e.map(function(t){return t.copy()});a&=4095;for(var c=0;c<a;c++){var h=i.readUInt16BE(),f=i.readUInt16BE();if(32768&f)for(var d=[],p=0;p<n.axisCount;p++)d.push(i.readInt16BE()/16384);else{if((4095&f)>=n.globalCoordCount)throw new Error("Invalid gvar table");d=n.globalCoords[4095&f]}if(16384&f){for(var g=[],y=0;y<n.axisCount;y++)g.push(i.readInt16BE()/16384);for(var v=[],b=0;b<n.axisCount;b++)v.push(i.readInt16BE()/16384)}var m=this.tupleFactor(f,d,g,v);if(0!==m){s=i.pos;if(i.pos=o,8192&f)var w=this.decodePoints();else w=l;var x=0===w.length?e.length:w.length,S=this.decodeDeltas(x),_=this.decodeDeltas(x);if(0===w.length)for(var k=0;k<e.length;k++){var C=e[k];C.x+=Math.round(S[k]*m),C.y+=Math.round(_[k]*m)}else{for(var A=u.map(function(t){return t.copy()}),P=e.map(function(){return!1}),E=0;E<w.length;E++){var I=w[E];if(I<e.length){var T=A[I];P[I]=!0,T.x+=Math.round(S[E]*m),T.y+=Math.round(_[E]*m)}}this.interpolateMissingDeltas(A,u,P);for(var O=0;O<e.length;O++){var L=A[O].x-u[O].x,B=A[O].y-u[O].y;e[O].x+=L,e[O].y+=B}}o+=h,i.pos=s}else o+=h}}}}}},t.prototype.decodePoints=function(){var t=this.font.stream,e=t.readUInt8();128&e&&(e=(127&e)<<8|t.readUInt8());for(var n=new Uint16Array(e),r=0,i=0;r<e;)for(var a=t.readUInt8(),o=1+(127&a),s=128&a?t.readUInt16:t.readUInt8,l=0;l<o&&r<e;l++)i+=s.call(t),n[r++]=i;return n},t.prototype.decodeDeltas=function(t){for(var e=this.font.stream,n=0,r=new Int16Array(t);n<t;){var i=e.readUInt8(),a=1+(63&i);if(128&i)n+=a;else for(var o=64&i?e.readInt16BE:e.readInt8,s=0;s<a&&n<t;s++)r[n++]=o.call(e)}return r},t.prototype.tupleFactor=function(t,e,n,r){for(var i=this.normalizedCoords,a=this.font.gvar,o=1,s=0;s<a.axisCount;s++)if(0!==e[s]){if(0===i[s])return 0;if(0==(16384&t)){if(i[s]<Math.min(0,e[s])||i[s]>Math.max(0,e[s]))return 0;o=(o*i[s]+P)/(e[s]+P)}else{if(i[s]<n[s]||i[s]>r[s])return 0;o=i[s]<e[s]?o*(i[s]-n[s]+P)/(e[s]-n[s]+P):o*(r[s]-i[s]+P)/(r[s]-e[s]+P)}}return o},t.prototype.interpolateMissingDeltas=function(t,e,n){if(0!==t.length)for(var r=0;r<t.length;){for(var i=r,a=r,o=t[a];!o.endContour;)o=t[++a];for(;r<=a&&!n[r];)r++;if(!(r>a)){var s=r,l=r;for(r++;r<=a;)n[r]&&(this.deltaInterpolate(l+1,r-1,l,r,e,t),l=r),r++;l===s?this.deltaShift(i,a,l,e,t):(this.deltaInterpolate(l+1,a,l,s,e,t),s>0&&this.deltaInterpolate(i,s-1,l,s,e,t)),r=a+1}}},t.prototype.deltaInterpolate=function(t,e,n,r,i,a){if(!(t>e))for(var o=["x","y"],s=0;s<o.length;s++){var l=o[s];if(i[n][l]>i[r][l]){var u=n;n=r,r=u}var c=i[n][l],h=i[r][l],f=a[n][l],d=a[r][l];if(c!==h||f===d)for(var p=c===h?0:(d-f)/(h-c),g=t;g<=e;g++){var y=i[g][l];y<=c?y+=f-c:y>=h?y+=d-h:y=f+(y-c)*p,a[g][l]=y}}},t.prototype.deltaShift=function(t,e,n,r,i){var a=i[n].x-r[n].x,o=i[n].y-r[n].y;if(0!==a||0!==o)for(var s=t;s<=e;s++)s!==n&&(i[s].x+=a,i[s].y+=o)},t.prototype.getAdvanceAdjustment=function(t,e){var n=void 0,r=void 0;if(e.advanceWidthMapping){var i=t;i>=e.advanceWidthMapping.mapCount&&(i=e.advanceWidthMapping.mapCount-1);e.advanceWidthMapping.entryFormat;var a=e.advanceWidthMapping.mapData[i];n=a.outerIndex,r=a.innerIndex}else n=0,r=t;return this.getDelta(e.itemVariationStore,n,r)},t.prototype.getDelta=function(t,e,n){if(e>=t.itemVariationData.length)return 0;var r=t.itemVariationData[e];if(n>=r.deltaSets.length)return 0;for(var i=r.deltaSets[n],a=this.getBlendVector(t,e),o=0,s=0;s<r.regionIndexCount;s++)o+=i.deltas[s]*a[s];return o},t.prototype.getBlendVector=function(t,e){var n=t.itemVariationData[e];if(this.blendVectors.has(n))return this.blendVectors.get(n);for(var r=this.normalizedCoords,i=[],a=0;a<n.regionIndexCount;a++){for(var o=1,s=n.regionIndexes[a],l=t.variationRegionList.variationRegions[s],u=0;u<l.length;u++){var c=l[u];o*=c.startCoord>c.peakCoord||c.peakCoord>c.endCoord?1:c.startCoord<0&&c.endCoord>0&&0!==c.peakCoord?1:0===c.peakCoord?1:r[u]<c.startCoord||r[u]>c.endCoord?0:r[u]===c.peakCoord?1:r[u]<c.peakCoord?(r[u]-c.startCoord+P)/(c.peakCoord-c.startCoord+P):(c.endCoord-r[u]+P)/(c.endCoord-c.peakCoord+P)}i[a]=o}return this.blendVectors.set(n,i),i},t}(),vs=function(){function t(e){f(this,t),this.font=e,this.glyphs=[],this.mapping={},this.includeGlyph(0)}return t.prototype.includeGlyph=function(t){return"object"===(void 0===t?"undefined":c(t))&&(t=t.id),null==this.mapping[t]&&(this.glyphs.push(t),this.mapping[t]=this.glyphs.length-1),this.mapping[t]},t.prototype.encodeStream=function(){var t=this,e=new a.EncodeStream;return r.nextTick(function(){return t.encode(e),e.end()}),e},t}(),bs=function(){function t(){f(this,t)}return t.size=function(t){return t>=0&&t<=255?1:2},t.encode=function(t,e){e>=0&&e<=255?t.writeUInt8(e):t.writeInt16BE(e)},t}(),ms=new a.Struct({numberOfContours:a.int16,xMin:a.int16,yMin:a.int16,xMax:a.int16,yMax:a.int16,endPtsOfContours:new a.Array(a.uint16,"numberOfContours"),instructions:new a.Array(a.uint8,a.uint16),flags:new a.Array(a.uint8,0),xPoints:new a.Array(bs,0),yPoints:new a.Array(bs,0)}),ws=function(){function t(){f(this,t)}return t.prototype.encodeSimple=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=[],r=[],i=[],o=[],s=0,l=0,u=0,c=0,h=0,f=0;f<t.commands.length;f++){for(var d=t.commands[f],p=0;p<d.args.length;p+=2){var g=d.args[p],y=d.args[p+1],v=0;if("quadraticCurveTo"===d.command&&2===p){var b=t.commands[f+1];if(b&&"quadraticCurveTo"===b.command){var m=(l+b.args[0])/2,w=(u+b.args[1])/2;if(g===m&&y===w)continue}}"quadraticCurveTo"===d.command&&0===p||(v|=1),v=this._encodePoint(g,l,r,v,2,16),(v=this._encodePoint(y,u,i,v,4,32))===c&&s<255?(o[o.length-1]|=8,s++):(s>0&&(o.push(s),s=0),o.push(v),c=v),l=g,u=y,h++}"closePath"===d.command&&n.push(h-1)}t.commands.length>1&&"closePath"!==t.commands[t.commands.length-1].command&&n.push(h-1);var x=t.bbox,S={numberOfContours:n.length,xMin:x.minX,yMin:x.minY,xMax:x.maxX,yMax:x.maxY,endPtsOfContours:n,instructions:e,flags:o,xPoints:r,yPoints:i},_=ms.size(S),k=4-_%4,C=new a.EncodeStream(_+k);return ms.encode(C,S),0!==k&&C.fill(0,k),C.buffer},t.prototype._encodePoint=function(t,e,n,r,i,a){var o=t-e;return t===e?r|=a:(-255<=o&&o<=255&&(r|=i,o<0?o=-o:r|=a),n.push(o)),r},t}(),xs=function(t){function n(e){f(this,n);var r=g(this,t.call(this,e));return r.glyphEncoder=new ws,r}return y(n,t),n.prototype._addGlyph=function(t){var n=this.font.getGlyph(t),r=n._decode(),i=this.font.loca.offsets[t],a=this.font.loca.offsets[t+1],o=this.font._getTableStream("glyf");o.pos+=i;var l=o.readBuffer(a-i);if(r&&r.numberOfContours<0){l=new e(l);var u=r.components,c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d=f;t=this.includeGlyph(d.glyphID),l.writeUInt16BE(t,d.pos)}}else r&&this.font._variationProcessor&&(l=this.glyphEncoder.encodeSimple(n.path,r.instructions));return this.glyf.push(l),this.loca.offsets.push(this.offset),this.hmtx.metrics.push({advance:n.advanceWidth,bearing:n._getMetrics().leftBearing}),this.offset+=l.length,this.glyf.length-1},n.prototype.encode=function(t){this.glyf=[],this.offset=0,this.loca={offsets:[]},this.hmtx={metrics:[],bearings:[]};for(var e=0;e<this.glyphs.length;)this._addGlyph(this.glyphs[e++]);var n=E(this.font.maxp);n.numGlyphs=this.glyf.length,this.loca.offsets.push(this.offset),Yr.loca.preEncode.call(this.loca);var r=E(this.font.head);r.indexToLocFormat=this.loca.version;var i=E(this.font.hhea);i.numberOfMetrics=this.hmtx.metrics.length,Jr.encode(t,{tables:{head:r,hhea:i,loca:this.loca,maxp:n,"cvt ":this.font["cvt "],prep:this.font.prep,glyf:this.glyf,hmtx:this.hmtx,fpgm:this.font.fpgm}})},n}(vs),Ss=function(t){function n(e){f(this,n);var r=g(this,t.call(this,e));if(r.cff=r.font["CFF "],!r.cff)throw new Error("Not a CFF Font");return r}return y(n,t),n.prototype.subsetCharstrings=function(){this.charstrings=[];var t={},e=this.glyphs,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;this.charstrings.push(this.cff.getCharString(a));var o=this.font.getGlyph(a);o.path;for(var l in o._usedGsubrs)t[l]=!0}this.gsubrs=this.subsetSubrs(this.cff.globalSubrIndex,t)},n.prototype.subsetSubrs=function(t,n){for(var r=[],i=0;i<t.length;i++){var a=t[i];n[i]?(this.cff.stream.pos=a.offset,r.push(this.cff.stream.readBuffer(a.length))):r.push(new e([11]))}return r},n.prototype.subsetFontdict=function(t){t.FDArray=[],t.FDSelect={version:0,fds:[]};var e={},n=[],r=this.glyphs,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o,u=this.cff.fdForGlyph(l);if(null!=u){e[u]||(t.FDArray.push(w({},this.cff.topDict.FDArray[u])),n.push({})),e[u]=!0,t.FDSelect.fds.push(t.FDArray.length-1);var c=this.font.getGlyph(l);c.path;for(var h in c._usedSubrs)n[n.length-1][h]=!0}}for(var f=0;f<t.FDArray.length;f++){var d=t.FDArray[f];delete d.FontName,d.Private&&d.Private.Subrs&&(d.Private=w({},d.Private),d.Private.Subrs=this.subsetSubrs(d.Private.Subrs,n[f]))}},n.prototype.createCIDFontdict=function(t){var e={},n=this.glyphs,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=this.font.getGlyph(o);l.path;for(var u in l._usedSubrs)e[u]=!0}var c=w({},this.cff.topDict.Private);return c.Subrs=this.subsetSubrs(this.cff.topDict.Private.Subrs,e),t.FDArray=[{Private:c}],t.FDSelect={version:3,nRanges:1,ranges:[{first:0,fd:0}],sentinel:this.charstrings.length}},n.prototype.addString=function(t){return t?(this.strings||(this.strings=[]),this.strings.push(t),bt.length+this.strings.length-1):null},n.prototype.encode=function(t){this.subsetCharstrings();var e={version:this.charstrings.length>255?2:1,ranges:[{first:1,nLeft:this.charstrings.length-2}]},n=w({},this.cff.topDict);n.Private=null,n.charset=e,n.Encoding=null,n.CharStrings=this.charstrings;for(var r=["version","Notice","Copyright","FullName","FamilyName","Weight","PostScript","BaseFontName","FontName"],i=0;i<r.length;i++){var a=r[i];n[a]=this.addString(this.cff.string(n[a]))}n.ROS=[this.addString("Adobe"),this.addString("Identity"),0],n.CIDCount=this.charstrings.length,this.cff.isCIDFont?this.subsetFontdict(n):this.createCIDFontdict(n);var o={version:1,hdrSize:this.cff.hdrSize,offSize:this.cff.length,header:this.cff.header,nameIndex:[this.cff.postscriptName],topDictIndex:[n],stringIndex:this.strings,globalSubrIndex:this.gsubrs};we.encode(t,o)},n}(vs);function _s(t,e,n,r,i){var a={};return Object.keys(r).forEach(function(t){a[t]=r[t]}),a.enumerable=!!a.enumerable,a.configurable=!!a.configurable,("value"in a||a.initializer)&&(a.writable=!0),a=n.slice().reverse().reduce(function(n,r){return r(t,e,n)||n},a),i&&void 0!==a.initializer&&(a.value=a.initializer?a.initializer.call(i):void 0,a.initializer=void 0),void 0===a.initializer&&(Object.defineProperty(t,e,a),a=null),a}var ks=(_s((as=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;for(var r in f(this,t),this.stream=e,this.variationCoords=n,this._directoryPos=this.stream.pos,this._tables={},this._glyphs={},this._decodeDirectory(),this.directory.tables){var i=this.directory.tables[r];Yr[r]&&i.length>0&&h(this,r,{get:this._getTable.bind(this,i)})}}return t.probe=function(t){var e=t.toString("ascii",0,4);return"true"===e||"OTTO"===e||e===String.fromCharCode(0,1,0,0)},t.prototype._getTable=function(t){if(!(t.tag in this._tables))try{this._tables[t.tag]=this._decodeTable(t)}catch(t){O.logErrors}return this._tables[t.tag]},t.prototype._getTableStream=function(t){var e=this.directory.tables[t];return e?(this.stream.pos=e.offset,this.stream):null},t.prototype._decodeDirectory=function(){return this.directory=Jr.decode(this.stream,{_startOffset:0})},t.prototype._decodeTable=function(t){var e=this.stream.pos,n=this._getTableStream(t.tag),r=Yr[t.tag].decode(n,this,t.length);return this.stream.pos=e,r},t.prototype.getName=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en",n=this.name.records[t];return n?n[e]:null},t.prototype.hasGlyphForCodePoint=function(t){return!!this._cmapProcessor.lookup(t)},t.prototype.glyphForCodePoint=function(t){return this.getGlyph(this._cmapProcessor.lookup(t),[t])},t.prototype.glyphsForString=function(t){for(var e=[],n=t.length,r=0,i=-1,a=-1;r<=n;){var o=0,s=0;if(r<n){if(55296<=(o=t.charCodeAt(r++))&&o<=56319&&r<n){var l=t.charCodeAt(r);56320<=l&&l<=57343&&(r++,o=((1023&o)<<10)+(1023&l)+65536)}s=65024<=o&&o<=65039||917760<=o&&o<=917999?1:0}else r++;0===a&&1===s?e.push(this.getGlyph(this._cmapProcessor.lookup(i,o),[i,o])):0===a&&0===s&&e.push(this.glyphForCodePoint(i)),i=o,a=s}return e},t.prototype.layout=function(t,e,n,r,i){return this._layoutEngine.layout(t,e,n,r,i)},t.prototype.stringsForGlyph=function(t){return this._layoutEngine.stringsForGlyph(t)},t.prototype.getAvailableFeatures=function(t,e){return this._layoutEngine.getAvailableFeatures(t,e)},t.prototype._getBaseGlyph=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this._glyphs[t]||(this.directory.tables.glyf?this._glyphs[t]=new cs(t,e,this):(this.directory.tables["CFF "]||this.directory.tables.CFF2)&&(this._glyphs[t]=new hs(t,e,this))),this._glyphs[t]||null},t.prototype.getGlyph=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this._glyphs[t]||(this.directory.tables.sbix?this._glyphs[t]=new ds(t,e,this):this.directory.tables.COLR&&this.directory.tables.CPAL?this._glyphs[t]=new gs(t,e,this):this._getBaseGlyph(t,e)),this._glyphs[t]||null},t.prototype.createSubset=function(){return this.directory.tables["CFF "]?new Ss(this):new xs(this)},t.prototype.getVariation=function(e){if(!this.directory.tables.fvar||!(this.directory.tables.gvar&&this.directory.tables.glyf||this.directory.tables.CFF2))throw new Error("Variations require a font with the fvar, gvar and glyf, or CFF2 tables.");if("string"==typeof e&&(e=this.namedVariations[e]),"object"!==(void 0===e?"undefined":c(e)))throw new Error("Variation settings must be either a variation name or settings object.");var n=this.fvar.axis.map(function(t,n){var r=t.axisTag.trim();return r in e?Math.max(t.minValue,Math.min(t.maxValue,e[r])):t.defaultValue}),r=new a.DecodeStream(this.stream.buffer);r.pos=this._directoryPos;var i=new t(r,n);return i._tables=this._tables,i},t.prototype.getFont=function(t){return this.getVariation(t)},d(t,[{key:"postscriptName",get:function(){var t=this.name.records.postscriptName;return t?t[u(t)[0]]:null}},{key:"fullName",get:function(){return this.getName("fullName")}},{key:"familyName",get:function(){return this.getName("fontFamily")}},{key:"subfamilyName",get:function(){return this.getName("fontSubfamily")}},{key:"copyright",get:function(){return this.getName("copyright")}},{key:"version",get:function(){return this.getName("version")}},{key:"ascent",get:function(){return this.hhea.ascent}},{key:"descent",get:function(){return this.hhea.descent}},{key:"lineGap",get:function(){return this.hhea.lineGap}},{key:"underlinePosition",get:function(){return this.post.underlinePosition}},{key:"underlineThickness",get:function(){return this.post.underlineThickness}},{key:"italicAngle",get:function(){return this.post.italicAngle}},{key:"capHeight",get:function(){var t=this["OS/2"];return t?t.capHeight:this.ascent}},{key:"xHeight",get:function(){var t=this["OS/2"];return t?t.xHeight:0}},{key:"numGlyphs",get:function(){return this.maxp.numGlyphs}},{key:"unitsPerEm",get:function(){return this.head.unitsPerEm}},{key:"bbox",get:function(){return l(new ai(this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax))}},{key:"_cmapProcessor",get:function(){return new ni(this.cmap)}},{key:"characterSet",get:function(){return this._cmapProcessor.getCharacterSet()}},{key:"_layoutEngine",get:function(){return new Ko(this)}},{key:"availableFeatures",get:function(){return this._layoutEngine.getAvailableFeatures()}},{key:"variationAxes",get:function(){var t={};if(!this.fvar)return t;var e=this.fvar.axis,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;t[a.axisTag.trim()]={name:a.name.en,min:a.minValue,default:a.defaultValue,max:a.maxValue}}return t}},{key:"namedVariations",get:function(){var t={};if(!this.fvar)return t;var e=this.fvar.instance,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}for(var a=i,o={},l=0;l<this.fvar.axis.length;l++){o[this.fvar.axis[l].axisTag.trim()]=a.coord[l]}t[a.name.en]=o}return t}},{key:"_variationProcessor",get:function(){if(!this.fvar)return null;var t=this.variationCoords;return t||this.CFF2?(t||(t=this.fvar.axis.map(function(t){return t.defaultValue})),new ys(this,t)):null}}]),t}()).prototype,"bbox",[B],o(as.prototype,"bbox"),as.prototype),_s(as.prototype,"_cmapProcessor",[B],o(as.prototype,"_cmapProcessor"),as.prototype),_s(as.prototype,"characterSet",[B],o(as.prototype,"characterSet"),as.prototype),_s(as.prototype,"_layoutEngine",[B],o(as.prototype,"_layoutEngine"),as.prototype),_s(as.prototype,"variationAxes",[B],o(as.prototype,"variationAxes"),as.prototype),_s(as.prototype,"namedVariations",[B],o(as.prototype,"namedVariations"),as.prototype),_s(as.prototype,"_variationProcessor",[B],o(as.prototype,"_variationProcessor"),as.prototype),as),Cs=new a.Struct({tag:new a.String(4),offset:new a.Pointer(a.uint32,"void",{type:"global"}),compLength:a.uint32,length:a.uint32,origChecksum:a.uint32}),As=new a.Struct({tag:new a.String(4),flavor:a.uint32,length:a.uint32,numTables:a.uint16,reserved:new a.Reserved(a.uint16),totalSfntSize:a.uint32,majorVersion:a.uint16,minorVersion:a.uint16,metaOffset:a.uint32,metaLength:a.uint32,metaOrigLength:a.uint32,privOffset:a.uint32,privLength:a.uint32,tables:new a.Array(Cs,"numTables")});As.process=function(){var t={},e=this.tables,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;t[a.tag]=a}this.tables=t};var Ps=function(t){function n(){return f(this,n),g(this,t.apply(this,arguments))}return y(n,t),n.probe=function(t){return"wOFF"===t.toString("ascii",0,4)},n.prototype._decodeDirectory=function(){this.directory=As.decode(this.stream,{_startOffset:0})},n.prototype._getTableStream=function(t){var n=this.directory.tables[t];if(n){if(this.stream.pos=n.offset,n.compLength<n.length){this.stream.pos+=2;var r=new e(n.length),i=I(this.stream.readBuffer(n.compLength-2),r);return new a.DecodeStream(i)}return this.stream}return null},n}(ks),Es=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype._decode=function(){return this._font._transformedGlyphs[this.id]},e.prototype._getCBox=function(){return this.path.bbox},e}(cs),Is={decode:function(t){for(var e=0,n=[0,1,2,3,4],r=0;r<n.length;r++){var i=t.readUInt8();if(3758096384&e)throw new Error("Overflow");if(e=e<<7|127&i,0==(128&i))return e}throw new Error("Bad base 128 number")}},Ts=["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"],Os=new a.Struct({flags:a.uint8,customTag:new a.Optional(new a.String(4),function(t){return 63==(63&t.flags)}),tag:function(t){return t.customTag||Ts[63&t.flags]},length:Is,transformVersion:function(t){return t.flags>>>6&3},transformed:function(t){return"glyf"===t.tag||"loca"===t.tag?0===t.transformVersion:0!==t.transformVersion},transformLength:new a.Optional(Is,function(t){return t.transformed})}),Ls=new a.Struct({tag:new a.String(4),flavor:a.uint32,length:a.uint32,numTables:a.uint16,reserved:new a.Reserved(a.uint16),totalSfntSize:a.uint32,totalCompressedSize:a.uint32,majorVersion:a.uint16,minorVersion:a.uint16,metaOffset:a.uint32,metaLength:a.uint32,metaOrigLength:a.uint32,privOffset:a.uint32,privLength:a.uint32,tables:new a.Array(Os,"numTables")});Ls.process=function(){for(var t={},e=0;e<this.tables.length;e++){var n=this.tables[e];t[n.tag]=n}return this.tables=t};var Bs=function(t){function n(){return f(this,n),g(this,t.apply(this,arguments))}return y(n,t),n.probe=function(t){return"wOF2"===t.toString("ascii",0,4)},n.prototype._decodeDirectory=function(){this.directory=Ls.decode(this.stream),this._dataPos=this.stream.pos},n.prototype._decompress=function(){if(!this._decompressed){this.stream.pos=this._dataPos;var t=this.stream.readBuffer(this.directory.totalCompressedSize),n=0;for(var r in this.directory.tables){var i=this.directory.tables[r];i.offset=n,n+=null!=i.transformLength?i.transformLength:i.length}var o=T(t,n);if(!o)throw new Error("Error decoding compressed data in WOFF2");this.stream=new a.DecodeStream(new e(o)),this._decompressed=!0}},n.prototype._decodeTable=function(e){return this._decompress(),t.prototype._decodeTable.call(this,e)},n.prototype._getBaseGlyph=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this._glyphs[e])return this.directory.tables.glyf&&this.directory.tables.glyf.transformed?(this._transformedGlyphs||this._transformGlyfTable(),this._glyphs[e]=new Es(e,n,this)):t.prototype._getBaseGlyph.call(this,e,n)},n.prototype._transformGlyfTable=function(){this._decompress(),this.stream.pos=this.directory.tables.glyf.offset;for(var t=GlyfTable.decode(this.stream),e=[],n=0;n<t.numGlyphs;n++){var r={},i=t.nContours.readInt16BE();if(r.numberOfContours=i,i>0){for(var a=[],o=0,s=0;s<i;s++){o+=Ns(t.nPoints),a.push(o)}r.points=Ws(t.flags,t.glyphs,o);for(var l=0;l<i;l++)r.points[a[l]-1].endContour=!0;Ns(t.glyphs)}else if(i<0){if(cs.prototype._decodeComposite.call({_font:this},r,t.composites))Ns(t.glyphs)}e.push(r)}this._transformedGlyphs=e},n}(ks),Ms=function(){function t(e){f(this,t),this.length=e,this._buf=new a.Buffer(e)}return t.prototype.decode=function(t,e){return new a.DecodeStream(this._buf.decode(t,e))},t}(),GlyfTable=new a.Struct({version:a.uint32,numGlyphs:a.uint16,indexFormat:a.uint16,nContourStreamSize:a.uint32,nPointsStreamSize:a.uint32,flagStreamSize:a.uint32,glyphStreamSize:a.uint32,compositeStreamSize:a.uint32,bboxStreamSize:a.uint32,instructionStreamSize:a.uint32,nContours:new Ms("nContourStreamSize"),nPoints:new Ms("nPointsStreamSize"),flags:new Ms("flagStreamSize"),glyphs:new Ms("glyphStreamSize"),composites:new Ms("compositeStreamSize"),bboxes:new Ms("bboxStreamSize"),instructions:new Ms("instructionStreamSize")}),Rs=253,Fs=254,Ds=255,zs=253;function Ns(t){var e=t.readUInt8();return e===Rs?t.readUInt16BE():e===Ds?t.readUInt8()+zs:e===Fs?t.readUInt8()+2*zs:e}function Us(t,e){return 1&t?e:-e}function Ws(t,e,n){for(var r=void 0,i=r=0,a=[],o=0;o<n;o++){var s=0,l=0,u=t.readUInt8(),c=!(u>>7);if((u&=127)<10)s=0,l=Us(u,((14&u)<<7)+e.readUInt8());else if(u<20)s=Us(u,((u-10&14)<<7)+e.readUInt8()),l=0;else if(u<84){s=Us(u,1+(48&(h=u-20))+((f=e.readUInt8())>>4)),l=Us(u>>1,1+((12&h)<<2)+(15&f))}else if(u<120){var h;s=Us(u,1+((h=u-84)/12<<8)+e.readUInt8()),l=Us(u>>1,1+(h%12>>2<<8)+e.readUInt8())}else if(u<124){var f=e.readUInt8(),d=e.readUInt8();s=Us(u,(f<<4)+(d>>4)),l=Us(u>>1,((15&d)<<8)+e.readUInt8())}else s=Us(u,e.readUInt16BE()),l=Us(u>>1,e.readUInt16BE());i+=s,r+=l,a.push(new ls(c,!1,i,r))}return a}var Gs=new a.VersionedStruct(a.uint32,{65536:{numFonts:a.uint32,offsets:new a.Array(a.uint32,"numFonts")},131072:{numFonts:a.uint32,offsets:new a.Array(a.uint32,"numFonts"),dsigTag:a.uint32,dsigLength:a.uint32,dsigOffset:a.uint32}}),Vs=function(){function t(e){if(f(this,t),this.stream=e,"ttcf"!==e.readString(4))throw new Error("Not a TrueType collection");this.header=Gs.decode(e)}return t.probe=function(t){return"ttcf"===t.toString("ascii",0,4)},t.prototype.getFont=function(t){var e=this.header.offsets,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var o=i,l=new a.DecodeStream(this.stream.buffer);l.pos=o;var u=new ks(l);if(u.postscriptName===t)return u}return null},d(t,[{key:"fonts",get:function(){var t=[],e=this.header.offsets,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var o=i,l=new a.DecodeStream(this.stream.buffer);l.pos=o,t.push(new ks(l))}return t}}]),t}(),js=new a.String(a.uint8),Hs=(new a.Struct({len:a.uint32,buf:new a.Buffer("len")}),new a.Struct({id:a.uint16,nameOffset:a.int16,attr:a.uint8,dataOffset:a.uint24,handle:a.uint32})),qs=new a.Struct({name:new a.String(4),maxTypeIndex:a.uint16,refList:new a.Pointer(a.uint16,new a.Array(Hs,function(t){return t.maxTypeIndex+1}),{type:"parent"})}),Zs=new a.Struct({length:a.uint16,types:new a.Array(qs,function(t){return t.length+1})}),Ys=new a.Struct({reserved:new a.Reserved(a.uint8,24),typeList:new a.Pointer(a.uint16,Zs),nameListOffset:new a.Pointer(a.uint16,"void")}),Xs=new a.Struct({dataOffset:a.uint32,map:new a.Pointer(a.uint32,Ys),dataLength:a.uint32,mapLength:a.uint32}),Ks=function(){function t(e){f(this,t),this.stream=e,this.header=Xs.decode(this.stream);var n=this.header.map.typeList.types,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=o.refList,u=Array.isArray(l),c=0;for(l=u?l:s(l);;){var h;if(u){if(c>=l.length)break;h=l[c++]}else{if((c=l.next()).done)break;h=c.value}var d=h;d.nameOffset>=0?(this.stream.pos=d.nameOffset+this.header.map.nameListOffset,d.name=js.decode(this.stream)):d.name=null}"sfnt"===o.name&&(this.sfnt=o)}}return t.probe=function(t){var e=new a.DecodeStream(t);try{var n=Xs.decode(e)}catch(t){return!1}var r=n.map.typeList.types,i=Array.isArray(r),o=0;for(r=i?r:s(r);;){var l;if(i){if(o>=r.length)break;l=r[o++]}else{if((o=r.next()).done)break;l=o.value}if("sfnt"===l.name)return!0}return!1},t.prototype.getFont=function(t){if(!this.sfnt)return null;var e=this.sfnt.refList,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var o=i,l=this.header.dataOffset+o.dataOffset+4,u=new a.DecodeStream(this.stream.buffer.slice(l)),c=new ks(u);if(c.postscriptName===t)return c}return null},d(t,[{key:"fonts",get:function(){var t=[],e=this.sfnt.refList,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var o=i,l=this.header.dataOffset+o.dataOffset+4,u=new a.DecodeStream(this.stream.buffer.slice(l));t.push(new ks(u))}return t}}]),t}();O.registerFormat(ks),O.registerFormat(Ps),O.registerFormat(Bs),O.registerFormat(Vs),O.registerFormat(Ks),t.exports=O}).call(e,n(1).Buffer,n(11))},function(t,e,n){(function(){var t,r,i,a;for(t in e.EncodeStream=n(169),e.DecodeStream=n(51),e.Array=n(93),e.LazyArray=n(187),e.Bitfield=n(188),e.Boolean=n(189),e.Buffer=n(190),e.Enum=n(191),e.Optional=n(192),e.Reserved=n(193),e.String=n(194),e.Struct=n(94),e.VersionedStruct=n(195),i=n(22))r=i[t],e[t]=r;for(t in a=n(196))r=a[t],e[t]=r}).call(this)},function(t,e,n){(function(e){(function(){var r,i,a,o,s={}.hasOwnProperty;o=n(15),r=n(51);try{a=n(52)}catch(t){}i=function(t){var n;function i(t){null==t&&(t=65536),i.__super__.constructor.apply(this,arguments),this.buffer=new e(t),this.bufferOffset=0,this.pos=0}for(n in function(t,e){for(var n in e)s.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(i,t),e.prototype)"write"===n.slice(0,5)&&function(t){var e;e=+r.TYPES[t.replace(/write|[BL]E/g,"")],i.prototype[t]=function(n){return this.ensure(e),this.buffer[t](n,this.bufferOffset),this.bufferOffset+=e,this.pos+=e}}(n);return i.prototype._read=function(){},i.prototype.ensure=function(t){if(this.bufferOffset+t>this.buffer.length)return this.flush()},i.prototype.flush=function(){if(this.bufferOffset>0)return this.push(new e(this.buffer.slice(0,this.bufferOffset))),this.bufferOffset=0},i.prototype.writeBuffer=function(t){return this.flush(),this.push(t),this.pos+=t.length},i.prototype.writeString=function(t,n){var r,i,o,s,l;switch(null==n&&(n="ascii"),n){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.writeBuffer(new e(t,n));case"utf16be":for(o=s=0,l=(r=new e(t,"utf16le")).length-1;s<l;o=s+=2)i=r[o],r[o]=r[o+1],r[o+1]=i;return this.writeBuffer(r);default:if(a)return this.writeBuffer(a.encode(t,n));throw new Error("Install iconv-lite to enable additional string encodings.")}},i.prototype.writeUInt24BE=function(t){return this.ensure(3),this.buffer[this.bufferOffset++]=t>>>16&255,this.buffer[this.bufferOffset++]=t>>>8&255,this.buffer[this.bufferOffset++]=255&t,this.pos+=3},i.prototype.writeUInt24LE=function(t){return this.ensure(3),this.buffer[this.bufferOffset++]=255&t,this.buffer[this.bufferOffset++]=t>>>8&255,this.buffer[this.bufferOffset++]=t>>>16&255,this.pos+=3},i.prototype.writeInt24BE=function(t){return t>=0?this.writeUInt24BE(t):this.writeUInt24BE(t+16777215+1)},i.prototype.writeInt24LE=function(t){return t>=0?this.writeUInt24LE(t):this.writeUInt24LE(t+16777215+1)},i.prototype.fill=function(t,n){var r;return n<this.buffer.length?(this.ensure(n),this.buffer.fill(t,this.bufferOffset,this.bufferOffset+n),this.bufferOffset+=n,this.pos+=n):((r=new e(n)).fill(t),this.writeBuffer(r))},i.prototype.end=function(){return this.flush(),this.push(null)},i}(o.Readable),t.exports=i}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){"use strict";function r(t,e){this.encoder=t,this.addBOM=!0}function i(t,e){this.decoder=t,this.pass=!1,this.options=e||{}}e.PrependBOM=r,r.prototype.write=function(t){return this.addBOM&&(t="\ufeff"+t,this.addBOM=!1),this.encoder.write(t)},r.prototype.end=function(){return this.encoder.end()},e.StripBOM=i,i.prototype.write=function(t){var e=this.decoder.write(t);return this.pass||!e?e:("\ufeff"===e[0]&&(e=e.slice(1),"function"==typeof this.options.stripBOM&&this.options.stripBOM()),this.pass=!0,e)},i.prototype.end=function(){return this.decoder.end()}},function(t,e,n){"use strict";for(var r=[n(172),n(173),n(174),n(175),n(176),n(177),n(178),n(179)],i=0;i<r.length;i++){t=r[i];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a])}},function(t,e,n){"use strict";var r=n(1).Buffer;function i(t,e){this.enc=t.encodingName,this.bomAware=t.bomAware,"base64"===this.enc?this.encoder=l:"cesu8"===this.enc&&(this.enc="utf8",this.encoder=u,"💩"!==new r("eda0bdedb2a9","hex").toString()&&(this.decoder=c,this.defaultCharUnicode=e.defaultCharUnicode))}t.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:i},i.prototype.encoder=s,i.prototype.decoder=o;var a=n(47).StringDecoder;function o(t,e){a.call(this,e.enc)}function s(t,e){this.enc=e.enc}function l(t,e){this.prevStr=""}function u(t,e){}function c(t,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}a.prototype.end||(a.prototype.end=function(){}),o.prototype=a.prototype,s.prototype.write=function(t){return new r(t,this.enc)},s.prototype.end=function(){},l.prototype.write=function(t){var e=(t=this.prevStr+t).length-t.length%4;return this.prevStr=t.slice(e),t=t.slice(0,e),new r(t,"base64")},l.prototype.end=function(){return new r(this.prevStr,"base64")},u.prototype.write=function(t){for(var e=new r(3*t.length),n=0,i=0;i<t.length;i++){var a=t.charCodeAt(i);a<128?e[n++]=a:a<2048?(e[n++]=192+(a>>>6),e[n++]=128+(63&a)):(e[n++]=224+(a>>>12),e[n++]=128+(a>>>6&63),e[n++]=128+(63&a))}return e.slice(0,n)},u.prototype.end=function(){},c.prototype.write=function(t){for(var e=this.acc,n=this.contBytes,r=this.accBytes,i="",a=0;a<t.length;a++){var o=t[a];128!=(192&o)?(n>0&&(i+=this.defaultCharUnicode,n=0),o<128?i+=String.fromCharCode(o):o<224?(e=31&o,n=1,r=1):o<240?(e=15&o,n=2,r=1):i+=this.defaultCharUnicode):n>0?(e=e<<6|63&o,r++,0===--n&&(i+=2===r&&e<128&&e>0?this.defaultCharUnicode:3===r&&e<2048?this.defaultCharUnicode:String.fromCharCode(e))):i+=this.defaultCharUnicode}return this.acc=e,this.contBytes=n,this.accBytes=r,i},c.prototype.end=function(){var t=0;return this.contBytes>0&&(t+=this.defaultCharUnicode),t}},function(t,e,n){"use strict";var r=n(1).Buffer;function i(){}function a(){}function o(){this.overflowByte=-1}function s(t,e){this.iconv=e}function l(t,e){void 0===(t=t||{}).addBOM&&(t.addBOM=!0),this.encoder=e.iconv.getEncoder("utf-16le",t)}function u(t,e){this.decoder=null,this.initialBytes=[],this.initialBytesLen=0,this.options=t||{},this.iconv=e.iconv}function c(t,e){var n=e||"utf-16le";if(t.length>=2)if(254==t[0]&&255==t[1])n="utf-16be";else if(255==t[0]&&254==t[1])n="utf-16le";else{for(var r=0,i=0,a=Math.min(t.length-t.length%2,64),o=0;o<a;o+=2)0===t[o]&&0!==t[o+1]&&i++,0!==t[o]&&0===t[o+1]&&r++;i>r?n="utf-16be":i<r&&(n="utf-16le")}return n}e.utf16be=i,i.prototype.encoder=a,i.prototype.decoder=o,i.prototype.bomAware=!0,a.prototype.write=function(t){for(var e=new r(t,"ucs2"),n=0;n<e.length;n+=2){var i=e[n];e[n]=e[n+1],e[n+1]=i}return e},a.prototype.end=function(){},o.prototype.write=function(t){if(0==t.length)return"";var e=new r(t.length+1),n=0,i=0;for(-1!==this.overflowByte&&(e[0]=t[0],e[1]=this.overflowByte,n=1,i=2);n<t.length-1;n+=2,i+=2)e[i]=t[n+1],e[i+1]=t[n];return this.overflowByte=n==t.length-1?t[t.length-1]:-1,e.slice(0,i).toString("ucs2")},o.prototype.end=function(){},e.utf16=s,s.prototype.encoder=l,s.prototype.decoder=u,l.prototype.write=function(t){return this.encoder.write(t)},l.prototype.end=function(){return this.encoder.end()},u.prototype.write=function(t){if(!this.decoder){if(this.initialBytes.push(t),this.initialBytesLen+=t.length,this.initialBytesLen<16)return"";var e=c(t=r.concat(this.initialBytes),this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options),this.initialBytes.length=this.initialBytesLen=0}return this.decoder.write(t)},u.prototype.end=function(){if(!this.decoder){var t=r.concat(this.initialBytes),e=c(t,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options);var n=this.decoder.write(t),i=this.decoder.end();return i?n+i:n}return this.decoder.end()}},function(t,e,n){"use strict";var r=n(1).Buffer;function i(t,e){this.iconv=e}e.utf7=i,e.unicode11utf7="utf7",i.prototype.encoder=o,i.prototype.decoder=s,i.prototype.bomAware=!0;var a=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function o(t,e){this.iconv=e.iconv}function s(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}o.prototype.write=function(t){return new r(t.replace(a,function(t){return"+"+("+"===t?"":this.iconv.encode(t,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))},o.prototype.end=function(){};for(var l=/[A-Za-z0-9\/+]/,u=[],c=0;c<256;c++)u[c]=l.test(String.fromCharCode(c));var h="+".charCodeAt(0),f="-".charCodeAt(0),d="&".charCodeAt(0);function p(t,e){this.iconv=e}function g(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=new r(6),this.base64AccumIdx=0}function y(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}s.prototype.write=function(t){for(var e="",n=0,i=this.inBase64,a=this.base64Accum,o=0;o<t.length;o++)if(i){if(!u[t[o]]){if(o==n&&t[o]==f)e+="+";else{var s=a+t.slice(n,o).toString();e+=this.iconv.decode(new r(s,"base64"),"utf16-be")}t[o]!=f&&o--,n=o+1,i=!1,a=""}}else t[o]==h&&(e+=this.iconv.decode(t.slice(n,o),"ascii"),n=o+1,i=!0);if(i){var l=(s=a+t.slice(n).toString()).length-s.length%8;a=s.slice(l),s=s.slice(0,l),e+=this.iconv.decode(new r(s,"base64"),"utf16-be")}else e+=this.iconv.decode(t.slice(n),"ascii");return this.inBase64=i,this.base64Accum=a,e},s.prototype.end=function(){var t="";return this.inBase64&&this.base64Accum.length>0&&(t=this.iconv.decode(new r(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t},e.utf7imap=p,p.prototype.encoder=g,p.prototype.decoder=y,p.prototype.bomAware=!0,g.prototype.write=function(t){for(var e=this.inBase64,n=this.base64Accum,i=this.base64AccumIdx,a=new r(5*t.length+10),o=0,s=0;s<t.length;s++){var l=t.charCodeAt(s);32<=l&&l<=126?(e&&(i>0&&(o+=a.write(n.slice(0,i).toString("base64").replace(/\//g,",").replace(/=+$/,""),o),i=0),a[o++]=f,e=!1),e||(a[o++]=l,l===d&&(a[o++]=f))):(e||(a[o++]=d,e=!0),e&&(n[i++]=l>>8,n[i++]=255&l,i==n.length&&(o+=a.write(n.toString("base64").replace(/\//g,","),o),i=0)))}return this.inBase64=e,this.base64AccumIdx=i,a.slice(0,o)},g.prototype.end=function(){var t=new r(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=t.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),t[e++]=f,this.inBase64=!1),t.slice(0,e)};var v=u.slice();v[",".charCodeAt(0)]=!0,y.prototype.write=function(t){for(var e="",n=0,i=this.inBase64,a=this.base64Accum,o=0;o<t.length;o++)if(i){if(!v[t[o]]){if(o==n&&t[o]==f)e+="&";else{var s=a+t.slice(n,o).toString().replace(/,/g,"/");e+=this.iconv.decode(new r(s,"base64"),"utf16-be")}t[o]!=f&&o--,n=o+1,i=!1,a=""}}else t[o]==d&&(e+=this.iconv.decode(t.slice(n,o),"ascii"),n=o+1,i=!0);if(i){var l=(s=a+t.slice(n).toString().replace(/,/g,"/")).length-s.length%8;a=s.slice(l),s=s.slice(0,l),e+=this.iconv.decode(new r(s,"base64"),"utf16-be")}else e+=this.iconv.decode(t.slice(n),"ascii");return this.inBase64=i,this.base64Accum=a,e},y.prototype.end=function(){var t="";return this.inBase64&&this.base64Accum.length>0&&(t=this.iconv.decode(new r(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t}},function(t,e,n){"use strict";var r=n(1).Buffer;function i(t,e){if(!t)throw new Error("SBCS codec is called without the data.");if(!t.chars||128!==t.chars.length&&256!==t.chars.length)throw new Error("Encoding '"+t.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(128===t.chars.length){for(var n="",i=0;i<128;i++)n+=String.fromCharCode(i);t.chars=n+t.chars}this.decodeBuf=new r(t.chars,"ucs2");var a=new r(65536);a.fill(e.defaultCharSingleByte.charCodeAt(0));for(i=0;i<t.chars.length;i++)a[t.chars.charCodeAt(i)]=i;this.encodeBuf=a}function a(t,e){this.encodeBuf=e.encodeBuf}function o(t,e){this.decodeBuf=e.decodeBuf}e._sbcs=i,i.prototype.encoder=a,i.prototype.decoder=o,a.prototype.write=function(t){for(var e=new r(t.length),n=0;n<t.length;n++)e[n]=this.encodeBuf[t.charCodeAt(n)];return e},a.prototype.end=function(){},o.prototype.write=function(t){for(var e=this.decodeBuf,n=new r(2*t.length),i=0,a=0,o=0;o<t.length;o++)i=2*t[o],n[a=2*o]=e[i],n[a+1]=e[i+1];return n.toString("ucs2")},o.prototype.end=function(){}},function(t,e,n){"use strict";t.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"ÄĀāÉĄÖÜáąČäčĆćéŹźĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņŃ¬√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",10000:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}},function(t,e,n){"use strict";t.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"
+ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"
+ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"
+ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"
+ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"
+ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"
+ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"
+ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"
+ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"
+ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"
+ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"
+ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"
+ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"
+ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"
+ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"
+ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ "},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘę¬źČş«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ "},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ "},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ "},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞğ¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ "},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñÑªº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:"\0\b\t\n\v\f\r
+
+
+ !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñÑªº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"
+ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"
+ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"
+ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"
+ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"
+ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"},maccyrillic:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},macgreek:{type:"_sbcs",chars:"Ä¹²É³ÖÜ΅àâä΄¨çéèêë£™îï•½‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"},maciceland:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macroman:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macromania:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macthai:{type:"_sbcs",chars:"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\ufeff​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"},macturkish:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"},macukraine:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},koi8r:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8u:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8ru:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8t:{type:"_sbcs",chars:"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},armscii8:{type:"_sbcs",chars:"
+ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"},rk1048:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},tcvn:{type:"_sbcs",chars:"\0ÚỤỪỬỮ\b\t\n\v\f\rỨỰỲỶỸÝỴ
+
+
+ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"},georgianacademy:{type:"_sbcs",chars:"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},georgianps:{type:"_sbcs",chars:"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},pt154:{type:"_sbcs",chars:"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},viscii:{type:"_sbcs",chars:"\0ẲẴẪ\b\t\n\v\f\rỶỸ
+
+Ỵ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"},iso646cn:{type:"_sbcs",chars:"\0\b\t\n\v\f\r
+
+
+ !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},iso646jp:{type:"_sbcs",chars:"\0\b\t\n\v\f\r
+
+
+ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},hproman8:{type:"_sbcs",chars:"
+ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"},macintosh:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},ascii:{type:"_sbcs",chars:"��������������������������������������������������������������������������������������������������������������������������������"},tis620:{type:"_sbcs",chars:"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"}}},function(t,e,n){"use strict";var r=n(1).Buffer;e._dbcs=u;for(var i=-1,a=-2,o=-1e3,s=new Array(256),l=0;l<256;l++)s[l]=i;function u(t,e){if(this.encodingName=t.encodingName,!t)throw new Error("DBCS codec is called without the data.");if(!t.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var n=t.table();this.decodeTables=[],this.decodeTables[0]=s.slice(0),this.decodeTableSeq=[];for(var r=0;r<n.length;r++)this._addDecodeChunk(n[r]);this.defaultCharUnicode=e.defaultCharUnicode,this.encodeTable=[],this.encodeTableSeq=[];var l={};if(t.encodeSkipVals)for(r=0;r<t.encodeSkipVals.length;r++){var u=t.encodeSkipVals[r];if("number"==typeof u)l[u]=!0;else for(var c=u.from;c<=u.to;c++)l[c]=!0}if(this._fillEncodeTable(0,0,l),t.encodeAdd)for(var h in t.encodeAdd)Object.prototype.hasOwnProperty.call(t.encodeAdd,h)&&this._setEncodeChar(h.charCodeAt(0),t.encodeAdd[h]);if(this.defCharSB=this.encodeTable[0][e.defaultCharSingleByte.charCodeAt(0)],this.defCharSB===i&&(this.defCharSB=this.encodeTable[0]["?"]),this.defCharSB===i&&(this.defCharSB="?".charCodeAt(0)),"function"==typeof t.gb18030){this.gb18030=t.gb18030();var f=this.decodeTables.length,d=this.decodeTables[f]=s.slice(0),p=this.decodeTables.length,g=this.decodeTables[p]=s.slice(0);for(r=129;r<=254;r++){var y=o-this.decodeTables[0][r],v=this.decodeTables[y];for(c=48;c<=57;c++)v[c]=o-f}for(r=129;r<=254;r++)d[r]=o-p;for(r=48;r<=57;r++)g[r]=a}}function c(t,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}function h(t,e){this.nodeIdx=0,this.prevBuf=new r(0),this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}function f(t,e){if(t[0]>e)return-1;for(var n=0,r=t.length;n<r-1;){var i=n+Math.floor((r-n+1)/2);t[i]<=e?n=i:r=i}return n}u.prototype.encoder=c,u.prototype.decoder=h,u.prototype._getDecodeTrieNode=function(t){for(var e=[];t>0;t>>=8)e.push(255&t);0==e.length&&e.push(0);for(var n=this.decodeTables[0],r=e.length-1;r>0;r--){var a=n[e[r]];if(a==i)n[e[r]]=o-this.decodeTables.length,this.decodeTables.push(n=s.slice(0));else{if(!(a<=o))throw new Error("Overwrite byte in "+this.encodingName+", addr: "+t.toString(16));n=this.decodeTables[o-a]}}return n},u.prototype._addDecodeChunk=function(t){var e=parseInt(t[0],16),n=this._getDecodeTrieNode(e);e&=255;for(var r=1;r<t.length;r++){var i=t[r];if("string"==typeof i)for(var a=0;a<i.length;){var o=i.charCodeAt(a++);if(55296<=o&&o<56320){var s=i.charCodeAt(a++);if(!(56320<=s&&s<57344))throw new Error("Incorrect surrogate pair in "+this.encodingName+" at chunk "+t[0]);n[e++]=65536+1024*(o-55296)+(s-56320)}else if(4080<o&&o<=4095){for(var l=4095-o+2,u=[],c=0;c<l;c++)u.push(i.charCodeAt(a++));n[e++]=-10-this.decodeTableSeq.length,this.decodeTableSeq.push(u)}else n[e++]=o}else{if("number"!=typeof i)throw new Error("Incorrect type '"+typeof i+"' given in "+this.encodingName+" at chunk "+t[0]);var h=n[e-1]+1;for(a=0;a<i;a++)n[e++]=h++}}if(e>255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+t[0]+": too long"+e)},u.prototype._getEncodeBucket=function(t){var e=t>>8;return void 0===this.encodeTable[e]&&(this.encodeTable[e]=s.slice(0)),this.encodeTable[e]},u.prototype._setEncodeChar=function(t,e){var n=this._getEncodeBucket(t),r=255&t;n[r]<=-10?this.encodeTableSeq[-10-n[r]][-1]=e:n[r]==i&&(n[r]=e)},u.prototype._setEncodeSequence=function(t,e){var n,r=t[0],a=this._getEncodeBucket(r),o=255&r;a[o]<=-10?n=this.encodeTableSeq[-10-a[o]]:(n={},a[o]!==i&&(n[-1]=a[o]),a[o]=-10-this.encodeTableSeq.length,this.encodeTableSeq.push(n));for(var s=1;s<t.length-1;s++){var l=n[r];"object"==typeof l?n=l:(n=n[r]={},void 0!==l&&(n[-1]=l))}n[r=t[t.length-1]]=e},u.prototype._fillEncodeTable=function(t,e,n){for(var r=this.decodeTables[t],i=0;i<256;i++){var a=r[i],s=e+i;n[s]||(a>=0?this._setEncodeChar(a,s):a<=o?this._fillEncodeTable(o-a,s<<8,n):a<=-10&&this._setEncodeSequence(this.decodeTableSeq[-10-a],s))}},c.prototype.write=function(t){for(var e=new r(t.length*(this.gb18030?4:3)),n=this.leadSurrogate,a=this.seqObj,o=-1,s=0,l=0;;){if(-1===o){if(s==t.length)break;var u=t.charCodeAt(s++)}else{u=o;o=-1}if(55296<=u&&u<57344)if(u<56320){if(-1===n){n=u;continue}n=u,u=i}else-1!==n?(u=65536+1024*(n-55296)+(u-56320),n=-1):u=i;else-1!==n&&(o=u,u=i,n=-1);var c=i;if(void 0!==a&&u!=i){var h=a[u];if("object"==typeof h){a=h;continue}"number"==typeof h?c=h:null==h&&void 0!==(h=a[-1])&&(c=h,o=u),a=void 0}else if(u>=0){var d=this.encodeTable[u>>8];if(void 0!==d&&(c=d[255&u]),c<=-10){a=this.encodeTableSeq[-10-c];continue}if(c==i&&this.gb18030){var p=f(this.gb18030.uChars,u);if(-1!=p){c=this.gb18030.gbChars[p]+(u-this.gb18030.uChars[p]);e[l++]=129+Math.floor(c/12600),c%=12600,e[l++]=48+Math.floor(c/1260),c%=1260,e[l++]=129+Math.floor(c/10),c%=10,e[l++]=48+c;continue}}}c===i&&(c=this.defaultCharSingleByte),c<256?e[l++]=c:c<65536?(e[l++]=c>>8,e[l++]=255&c):(e[l++]=c>>16,e[l++]=c>>8&255,e[l++]=255&c)}return this.seqObj=a,this.leadSurrogate=n,e.slice(0,l)},c.prototype.end=function(){if(-1!==this.leadSurrogate||void 0!==this.seqObj){var t=new r(10),e=0;if(this.seqObj){var n=this.seqObj[-1];void 0!==n&&(n<256?t[e++]=n:(t[e++]=n>>8,t[e++]=255&n)),this.seqObj=void 0}return-1!==this.leadSurrogate&&(t[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),t.slice(0,e)}},c.prototype.findIdx=f,h.prototype.write=function(t){var e=new r(2*t.length),n=this.nodeIdx,s=this.prevBuf,l=this.prevBuf.length,u=-this.prevBuf.length;l>0&&(s=r.concat([s,t.slice(0,10)]));for(var c=0,h=0;c<t.length;c++){var d,p=c>=0?t[c]:s[c+l];if((d=this.decodeTables[n][p])>=0);else if(d===i)c=u,d=this.defaultCharUnicode.charCodeAt(0);else if(d===a){var g=u>=0?t.slice(u,c+1):s.slice(u+l,c+1+l),y=12600*(g[0]-129)+1260*(g[1]-48)+10*(g[2]-129)+(g[3]-48),v=f(this.gb18030.gbChars,y);d=this.gb18030.uChars[v]+y-this.gb18030.gbChars[v]}else{if(d<=o){n=o-d;continue}if(!(d<=-10))throw new Error("iconv-lite internal error: invalid decoding table value "+d+" at "+n+"/"+p);for(var b=this.decodeTableSeq[-10-d],m=0;m<b.length-1;m++)d=b[m],e[h++]=255&d,e[h++]=d>>8;d=b[b.length-1]}if(d>65535){d-=65536;var w=55296+Math.floor(d/1024);e[h++]=255&w,e[h++]=w>>8,d=56320+d%1024}e[h++]=255&d,e[h++]=d>>8,n=0,u=c+1}return this.nodeIdx=n,this.prevBuf=u>=0?t.slice(u):s.slice(u+l),e.slice(0,h).toString("ucs2")},h.prototype.end=function(){for(var t="";this.prevBuf.length>0;){t+=this.defaultCharUnicode;var e=this.prevBuf.slice(1);this.prevBuf=new r(0),this.nodeIdx=0,e.length>0&&(t+=this.write(e))}return this.nodeIdx=0,t}},function(t,e,n){"use strict";t.exports={shiftjis:{type:"_dbcs",table:function(){return n(180)},encodeAdd:{"¥":92,"‾":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return n(181)},encodeAdd:{"¥":92,"‾":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return n(53)}},gbk:{type:"_dbcs",table:function(){return n(53).concat(n(91))}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return n(53).concat(n(91))},gb18030:function(){return n(182)},encodeSkipVals:[128],encodeAdd:{"€":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return n(183)}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return n(92)}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return n(92).concat(n(184))},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}},function(t,e){t.exports=[["0","\0",128],["a1","｡",62],["8140","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×"],["8180","÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨￢⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","Å‰♯♭♪†‡¶"],["81fc","◯"],["824f","０",9],["8260","Ａ",25],["8281","ａ",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"￢￤＇＂"],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"￢￤＇＂㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]},function(t,e){t.exports=[["0","\0",127],["8ea1","｡",62],["a1a1","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨￢⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","Å‰♯♭♪†‡¶"],["a2fe","◯"],["a3b0","０",9],["a3c1","Ａ",25],["a3e1","ａ",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"￢￤＇＂"],["8fa2af","˘ˇ¸˙˝¯˛˚～΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","Ĳ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıĳĸłŀŉŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]},function(t,e){t.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}},function(t,e){t.exports=[["0","\0",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛！",58,"￦］",32,"￣"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","Ĳ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıĳĸŀłøœßþŧŋŉ㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]},function(t,e){t.exports=[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー［］✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","￢￤＇＂㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","￭"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]},function(t,e,n){"use strict";var r=n(1).Buffer,i=n(15).Transform;function a(t,e){this.conv=t,(e=e||{}).decodeStrings=!1,i.call(this,e)}function o(t,e){this.conv=t,(e=e||{}).encoding=this.encoding="utf8",i.call(this,e)}t.exports=function(t){t.encodeStream=function(e,n){return new a(t.getEncoder(e,n),n)},t.decodeStream=function(e,n){return new o(t.getDecoder(e,n),n)},t.supportsStreams=!0,t.IconvLiteEncoderStream=a,t.IconvLiteDecoderStream=o,t._collect=o.prototype.collect},(a.prototype=Object.create(i.prototype,{constructor:{value:a}}))._transform=function(t,e,n){if("string"!=typeof t)return n(new Error("Iconv encoding stream needs strings as its input."));try{var r=this.conv.write(t);r&&r.length&&this.push(r),n()}catch(t){n(t)}},a.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e),t()}catch(e){t(e)}},a.prototype.collect=function(t){var e=[];return this.on("error",t),this.on("data",function(t){e.push(t)}),this.on("end",function(){t(null,r.concat(e))}),this},(o.prototype=Object.create(i.prototype,{constructor:{value:o}}))._transform=function(t,e,n){if(!r.isBuffer(t))return n(new Error("Iconv decoding stream needs buffers as its input."));try{var i=this.conv.write(t);i&&i.length&&this.push(i,this.encoding),n()}catch(t){n(t)}},o.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e,this.encoding),t()}catch(e){t(e)}},o.prototype.collect=function(t){var e="";return this.on("error",t),this.on("data",function(t){e+=t}),this.on("end",function(){t(null,e)}),this}},function(t,e,n){"use strict";var r=n(1).Buffer;t.exports=function(t){var e=void 0;t.supportsNodeEncodingsExtension=!(new r(0)instanceof Uint8Array),t.extendNodeEncodings=function(){if(!e&&(e={},t.supportsNodeEncodingsExtension)){var i={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};r.isNativeEncoding=function(t){return t&&i[t.toLowerCase()]};var a=n(1).SlowBuffer;if(e.SlowBufferToString=a.prototype.toString,a.prototype.toString=function(n,i,a){return n=String(n||"utf8").toLowerCase(),r.isNativeEncoding(n)?e.SlowBufferToString.call(this,n,i,a):(void 0===i&&(i=0),void 0===a&&(a=this.length),t.decode(this.slice(i,a),n))},e.SlowBufferWrite=a.prototype.write,a.prototype.write=function(n,i,a,o){if(isFinite(i))isFinite(a)||(o=a,a=void 0);else{var s=o;o=i,i=a,a=s}i=+i||0;var l=this.length-i;if(a?(a=+a)>l&&(a=l):a=l,o=String(o||"utf8").toLowerCase(),r.isNativeEncoding(o))return e.SlowBufferWrite.call(this,n,i,a,o);if(n.length>0&&(a<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var u=t.encode(n,o);return u.length<a&&(a=u.length),u.copy(this,i,0,a),a},e.BufferIsEncoding=r.isEncoding,r.isEncoding=function(e){return r.isNativeEncoding(e)||t.encodingExists(e)},e.BufferByteLength=r.byteLength,r.byteLength=a.byteLength=function(n,i){return i=String(i||"utf8").toLowerCase(),r.isNativeEncoding(i)?e.BufferByteLength.call(this,n,i):t.encode(n,i).length},e.BufferToString=r.prototype.toString,r.prototype.toString=function(n,i,a){return n=String(n||"utf8").toLowerCase(),r.isNativeEncoding(n)?e.BufferToString.call(this,n,i,a):(void 0===i&&(i=0),void 0===a&&(a=this.length),t.decode(this.slice(i,a),n))},e.BufferWrite=r.prototype.write,r.prototype.write=function(n,i,a,o){var s=i,l=a,u=o;if(isFinite(i))isFinite(a)||(o=a,a=void 0);else{var c=o;o=i,i=a,a=c}if(o=String(o||"utf8").toLowerCase(),r.isNativeEncoding(o))return e.BufferWrite.call(this,n,s,l,u);i=+i||0;var h=this.length-i;if(a?(a=+a)>h&&(a=h):a=h,n.length>0&&(a<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var f=t.encode(n,o);return f.length<a&&(a=f.length),f.copy(this,i,0,a),a},t.supportsStreams){var o=n(15).Readable;e.ReadableSetEncoding=o.prototype.setEncoding,o.prototype.setEncoding=function(e,n){this._readableState.decoder=t.getDecoder(e,n),this._readableState.encoding=e},o.prototype.collect=t._collect}}},t.undoExtendNodeEncodings=function(){if(t.supportsNodeEncodingsExtension){if(!e)throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.");delete r.isNativeEncoding;var i=n(1).SlowBuffer;if(i.prototype.toString=e.SlowBufferToString,i.prototype.write=e.SlowBufferWrite,r.isEncoding=e.BufferIsEncoding,r.byteLength=e.BufferByteLength,r.prototype.toString=e.BufferToString,r.prototype.write=e.BufferWrite,t.supportsStreams){var a=n(15).Readable;a.prototype.setEncoding=e.ReadableSetEncoding,delete a.prototype.collect}e=void 0}}}},function(t,e,n){(function(){var e,r,i,a,o,s,l={}.hasOwnProperty;e=n(93),a=n(22).Number,s=n(12),o=n(49).inspect,i=function(t){function n(){return n.__super__.constructor.apply(this,arguments)}return function(t,e){for(var n in e)l.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(n,e),n.prototype.decode=function(t,e){var n,i,o;return i=t.pos,n=s.resolveLength(this.length,t,e),this.length instanceof a&&(e={parent:e,_startOffset:i,_currentOffset:0,_length:n}),o=new r(this.type,n,t,e),t.pos+=n*this.type.size(null,e),o},n.prototype.size=function(t,e){return t instanceof r&&(t=t.toArray()),n.__super__.size.call(this,t,e)},n.prototype.encode=function(t,e,i){return e instanceof r&&(e=e.toArray()),n.__super__.encode.call(this,t,e,i)},n}(),r=function(){function t(t,e,n,r){this.type=t,this.length=e,this.stream=n,this.ctx=r,this.base=this.stream.pos,this.items=[]}return t.prototype.get=function(t){var e;if(!(t<0||t>=this.length))return null==this.items[t]&&(e=this.stream.pos,this.stream.pos=this.base+this.type.size(null,this.ctx)*t,this.items[t]=this.type.decode(this.stream,this.ctx),this.stream.pos=e),this.items[t]},t.prototype.toArray=function(){var t,e,n,r;for(r=[],t=e=0,n=this.length;e<n;t=e+=1)r.push(this.get(t));return r},t.prototype.inspect=function(){return o(this.toArray())},t}(),t.exports=i}).call(this)},function(t,e){(function(){var e;e=function(){function t(t,e){this.type=t,this.flags=null!=e?e:[]}return t.prototype.decode=function(t){var e,n,r,i,a,o,s;for(i=this.type.decode(t),r={},n=a=0,o=(s=this.flags).length;a<o;n=++a)null!=(e=s[n])&&(r[e]=!!(i&1<<n));return r},t.prototype.size=function(){return this.type.size()},t.prototype.encode=function(t,e){var n,r,i,a,o,s;for(i=0,r=a=0,o=(s=this.flags).length;a<o;r=++a)null!=(n=s[r])&&e[n]&&(i|=1<<r);return this.type.encode(t,i)},t}(),t.exports=e}).call(this)},function(t,e){(function(){var e;e=function(){function t(t){this.type=t}return t.prototype.decode=function(t,e){return!!this.type.decode(t,e)},t.prototype.size=function(t,e){return this.type.size(t,e)},t.prototype.encode=function(t,e,n){return this.type.encode(t,+e,n)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i;i=n(12),r=n(22).Number,e=function(){function t(t){this.length=t}return t.prototype.decode=function(t,e){var n;return n=i.resolveLength(this.length,t,e),t.readBuffer(n)},t.prototype.size=function(t,e){return t?t.length:i.resolveLength(this.length,null,e)},t.prototype.encode=function(t,e,n){return this.length instanceof r&&this.length.encode(t,e.length),t.writeBuffer(e)},t}(),t.exports=e}).call(this)},function(t,e){(function(){var e;e=function(){function t(t,e){this.type=t,this.options=null!=e?e:[]}return t.prototype.decode=function(t){var e;return e=this.type.decode(t),this.options[e]||e},t.prototype.size=function(){return this.type.size()},t.prototype.encode=function(t,e){var n;if(-1===(n=this.options.indexOf(e)))throw new Error("Unknown option in enum: "+e);return this.type.encode(t,n)},t}(),t.exports=e}).call(this)},function(t,e){(function(){var e;e=function(){function t(t,e){this.type=t,this.condition=null==e||e}return t.prototype.decode=function(t,e){var n;if("function"==typeof(n=this.condition)&&(n=n.call(e,e)),n)return this.type.decode(t,e)},t.prototype.size=function(t,e){var n;return"function"==typeof(n=this.condition)&&(n=n.call(e,e)),n?this.type.size(t,e):0},t.prototype.encode=function(t,e,n){var r;if("function"==typeof(r=this.condition)&&(r=r.call(n,n)),r)return this.type.encode(t,e,n)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r;r=n(12),e=function(){function t(t,e){this.type=t,this.count=null!=e?e:1}return t.prototype.decode=function(t,e){t.pos+=this.size(null,e)},t.prototype.size=function(t,e){var n;return n=r.resolveLength(this.count,null,e),this.type.size()*n},t.prototype.encode=function(t,e,n){return t.fill(0,this.size(e,n))},t}(),t.exports=e}).call(this)},function(t,e,n){(function(e){(function(){var r,i,a;r=n(22).Number,a=n(12),i=function(){function t(t,e){this.length=t,this.encoding=null!=e?e:"ascii"}return t.prototype.decode=function(t,e){var n,r,i,o,s;return i=function(){if(null!=this.length)return a.resolveLength(this.length,t,e);for(n=t.buffer,i=t.length,o=t.pos;o<i&&0!==n[o];)++o;return o-t.pos}.call(this),"function"==typeof(r=this.encoding)&&(r=r.call(e,e)||"ascii"),s=t.readString(i,r),null==this.length&&t.pos<t.length&&t.pos++,s},t.prototype.size=function(t,n){var i,o;return t?("function"==typeof(i=this.encoding)&&(i=i.call(null!=n?n.val:void 0,null!=n?n.val:void 0)||"ascii"),"utf16be"===i&&(i="utf16le"),o=e.byteLength(t,i),this.length instanceof r&&(o+=this.length.size()),null==this.length&&o++,o):a.resolveLength(this.length,null,n)},t.prototype.encode=function(t,n,i){var a;if("function"==typeof(a=this.encoding)&&(a=a.call(null!=i?i.val:void 0,null!=i?i.val:void 0)||"ascii"),this.length instanceof r&&this.length.encode(t,e.byteLength(n,a)),t.writeString(n,a),null==this.length)return t.writeUInt8(0)},t}(),t.exports=i}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){(function(){var e,r,i={}.hasOwnProperty;e=n(94),r=function(t){function n(t,e){this.type=t,this.versions=null!=e?e:{},"string"==typeof this.type&&(this.versionGetter=new Function("parent","return parent."+this.type),this.versionSetter=new Function("parent","version","return parent."+this.type+" = version"))}return function(t,e){for(var n in e)i.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(n,e),n.prototype.decode=function(t,e,r){var i,a,o;if(null==r&&(r=0),a=this._setup(t,e,r),"string"==typeof this.type?a.version=this.versionGetter(e):a.version=this.type.decode(t),this.versions.header&&this._parseFields(t,a,this.versions.header),null==(i=this.versions[a.version]))throw new Error("Unknown version "+a.version);return i instanceof n?i.decode(t,e):(this._parseFields(t,a,i),null!=(o=this.process)&&o.call(a,t),a)},n.prototype.size=function(t,e,n){var r,i,a,o,s,l;if(null==n&&(n=!0),!t)throw new Error("Not a fixed size");if(r={parent:e,val:t,pointerSize:0},o=0,"string"!=typeof this.type&&(o+=this.type.size(t.version,r)),this.versions.header)for(a in l=this.versions.header)null!=(s=l[a]).size&&(o+=s.size(t[a],r));if(null==(i=this.versions[t.version]))throw new Error("Unknown version "+t.version);for(a in i)null!=(s=i[a]).size&&(o+=s.size(t[a],r));return n&&(o+=r.pointerSize),o},n.prototype.encode=function(t,e,n){var r,i,a,o,s,l,u,c;if(null!=(u=this.preEncode)&&u.call(e,t),(r={pointers:[],startOffset:t.pos,parent:n,val:e,pointerSize:0}).pointerOffset=t.pos+this.size(e,r,!1),"string"!=typeof this.type&&this.type.encode(t,e.version),this.versions.header)for(o in c=this.versions.header)null!=(l=c[o]).encode&&l.encode(t,e[o],r);for(o in i=this.versions[e.version])null!=(l=i[o]).encode&&l.encode(t,e[o],r);for(a=0;a<r.pointers.length;)(s=r.pointers[a++]).type.encode(t,s.val,s.parent)},n}(),t.exports=r}).call(this)},function(t,e,n){(function(){var t,r,i;i=n(12),t=function(){function t(t,e,n){var r,i,a,o;this.offsetType=t,this.type=e,this.options=null!=n?n:{},"void"===this.type&&(this.type=null),null==(r=this.options).type&&(r.type="local"),null==(i=this.options).allowNull&&(i.allowNull=!0),null==(a=this.options).nullValue&&(a.nullValue=0),null==(o=this.options).lazy&&(o.lazy=!1),this.options.relativeTo&&(this.relativeToGetter=new Function("ctx","return ctx."+this.options.relativeTo))}return t.prototype.decode=function(t,e){var n,r,a,o,s,l,u;return(a=this.offsetType.decode(t,e))===this.options.nullValue&&this.options.allowNull?null:(s=function(){switch(this.options.type){case"local":return e._startOffset;case"immediate":return t.pos-this.offsetType.size();case"parent":return e.parent._startOffset;default:for(n=e;n.parent;)n=n.parent;return n._startOffset||0}}.call(this),this.options.relativeTo&&(s+=this.relativeToGetter(e)),o=a+s,null!=this.type?(l=null,u=this,r=function(){var n;return null!=l?l:(n=t.pos,t.pos=o,l=u.type.decode(t,e),t.pos=n,l)},this.options.lazy?new i.PropertyDescriptor({get:r}):r()):o)},t.prototype.size=function(t,e){var n,i;switch(n=e,this.options.type){case"local":case"immediate":break;case"parent":e=e.parent;break;default:for(;e.parent;)e=e.parent}if(null==(i=this.type)){if(!(t instanceof r))throw new Error("Must be a VoidPointer");i=t.type,t=t.value}return t&&e&&(e.pointerSize+=i.size(t,n)),this.offsetType.size()},t.prototype.encode=function(t,e,n){var i,a,o;if(i=n,null!=e){switch(this.options.type){case"local":a=n.startOffset;break;case"immediate":a=t.pos+this.offsetType.size(e,i);break;case"parent":a=(n=n.parent).startOffset;break;default:for(a=0;n.parent;)n=n.parent}if(this.options.relativeTo&&(a+=this.relativeToGetter(i.val)),this.offsetType.encode(t,n.pointerOffset-a),null==(o=this.type)){if(!(e instanceof r))throw new Error("Must be a VoidPointer");o=e.type,e=e.value}return n.pointers.push({type:o,val:e,parent:i}),n.pointerOffset+=o.size(e,i)}this.offsetType.encode(t,this.options.nullValue)},t}(),r=function(t,e){this.type=t,this.value=e},e.Pointer=t,e.VoidPointer=r}).call(this)},function(t,e,n){t.exports={default:n(198),__esModule:!0}},function(t,e,n){n(199);var r=n(2).Object;t.exports=function(t,e){return r.getOwnPropertyDescriptor(t,e)}},function(t,e,n){var r=n(17),i=n(57).f;n(59)("getOwnPropertyDescriptor",function(){return function(t,e){return i(r(t),e)}})},function(t,e,n){n(28),n(24),t.exports=n(208)},function(t,e,n){"use strict";var r=n(202),i=n(98),a=n(23),o=n(17);t.exports=n(61)(Array,"Array",function(t,e){this._t=o(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(){}},function(t,e,n){"use strict";var r=n(36),i=n(27),a=n(39),o={};n(13)(o,n(4)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(o,{next:i(1,n)}),a(t,e+" Iterator")}},function(t,e,n){var r=n(17),i=n(37),a=n(102);t.exports=function(t){return function(e,n,o){var s,l=r(e),u=i(l.length),c=a(o,u);if(t&&n!=n){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((t||c in l)&&l[c]===n)return t||c||0;return!t&&-1}}},function(t,e,n){var r=n(10).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(18),i=n(30),a=n(64)("IE_PROTO"),o=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,a)?t[a]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?o:null}},function(t,e,n){var r=n(63),i=n(56);t.exports=function(t){return function(e,n){var a,o,s=String(i(e)),l=r(n),u=s.length;return l<0||l>=u?t?"":void 0:(a=s.charCodeAt(l))<55296||a>56319||l+1===u||(o=s.charCodeAt(l+1))<56320||o>57343?t?s.charAt(l):a:t?s.slice(l,l+2):o-56320+(a-55296<<10)+65536}}},function(t,e,n){var r=n(14),i=n(67);t.exports=n(2).getIterator=function(t){var e=i(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return r(e.call(t))}},function(t,e,n){t.exports={default:n(210),__esModule:!0}},function(t,e,n){n(211),t.exports=n(2).Object.freeze},function(t,e,n){var r=n(9),i=n(40).onFreeze;n(59)("freeze",function(t){return function(e){return t&&r(e)?t(i(e)):e}})},function(t,e,n){t.exports={default:n(213),__esModule:!0}},function(t,e,n){n(214),t.exports=n(2).Object.keys},function(t,e,n){var r=n(30),i=n(29);n(59)("keys",function(){return function(t){return i(r(t))}})},function(t,e,n){n(24),n(28),t.exports=n(70).f("iterator")},function(t,e,n){t.exports={default:n(217),__esModule:!0}},function(t,e,n){n(218),n(73),n(221),n(222),t.exports=n(2).Symbol},function(t,e,n){"use strict";var r=n(10),i=n(18),a=n(5),o=n(3),s=n(99),l=n(40).KEY,u=n(19),c=n(65),h=n(39),f=n(38),d=n(4),p=n(70),g=n(71),y=n(219),v=n(104),b=n(14),m=n(9),w=n(17),x=n(58),S=n(27),_=n(36),k=n(220),C=n(57),A=n(6),P=n(29),E=C.f,I=A.f,T=k.f,O=r.Symbol,L=r.JSON,B=L&&L.stringify,M="prototype",R=d("_hidden"),F=d("toPrimitive"),D={}.propertyIsEnumerable,z=c("symbol-registry"),N=c("symbols"),U=c("op-symbols"),W=Object[M],G="function"==typeof O,V=r.QObject,j=!V||!V[M]||!V[M].findChild,H=a&&u(function(){return 7!=_(I({},"a",{get:function(){return I(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=E(W,e);r&&delete W[e],I(t,e,n),r&&t!==W&&I(W,e,r)}:I,q=function(t){var e=N[t]=_(O[M]);return e._k=t,e},Z=G&&"symbol"==typeof O.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof O},Y=function(t,e,n){return t===W&&Y(U,e,n),b(t),e=x(e,!0),b(n),i(N,e)?(n.enumerable?(i(t,R)&&t[R][e]&&(t[R][e]=!1),n=_(n,{enumerable:S(0,!1)})):(i(t,R)||I(t,R,S(1,{})),t[R][e]=!0),H(t,e,n)):I(t,e,n)},X=function(t,e){b(t);for(var n,r=y(e=w(e)),i=0,a=r.length;a>i;)Y(t,n=r[i++],e[n]);return t},K=function(t){var e=D.call(this,t=x(t,!0));return!(this===W&&i(N,t)&&!i(U,t))&&(!(e||!i(this,t)||!i(N,t)||i(this,R)&&this[R][t])||e)},J=function(t,e){if(t=w(t),e=x(e,!0),t!==W||!i(N,e)||i(U,e)){var n=E(t,e);return!n||!i(N,e)||i(t,R)&&t[R][e]||(n.enumerable=!0),n}},Q=function(t){for(var e,n=T(w(t)),r=[],a=0;n.length>a;)i(N,e=n[a++])||e==R||e==l||r.push(e);return r},$=function(t){for(var e,n=t===W,r=T(n?U:w(t)),a=[],o=0;r.length>o;)!i(N,e=r[o++])||n&&!i(W,e)||a.push(N[e]);return a};G||(s((O=function(){if(this instanceof O)throw TypeError("Symbol is not a constructor!");var t=f(arguments.length>0?arguments[0]:void 0),e=function(n){this===W&&e.call(U,n),i(this,R)&&i(this[R],t)&&(this[R][t]=!1),H(this,t,S(1,n))};return a&&j&&H(W,t,{configurable:!0,set:e}),q(t)})[M],"toString",function(){return this._k}),C.f=J,A.f=Y,n(105).f=k.f=Q,n(35).f=K,n(72).f=$,a&&!n(62)&&s(W,"propertyIsEnumerable",K,!0),p.f=function(t){return q(d(t))}),o(o.G+o.W+o.F*!G,{Symbol:O});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)d(tt[et++]);for(var nt=P(d.store),rt=0;nt.length>rt;)g(nt[rt++]);o(o.S+o.F*!G,"Symbol",{for:function(t){return i(z,t+="")?z[t]:z[t]=O(t)},keyFor:function(t){if(!Z(t))throw TypeError(t+" is not a symbol!");for(var e in z)if(z[e]===t)return e},useSetter:function(){j=!0},useSimple:function(){j=!1}}),o(o.S+o.F*!G,"Object",{create:function(t,e){return void 0===e?_(t):X(_(t),e)},defineProperty:Y,defineProperties:X,getOwnPropertyDescriptor:J,getOwnPropertyNames:Q,getOwnPropertySymbols:$}),L&&o(o.S+o.F*(!G||u(function(){var t=O();return"[null]"!=B([t])||"{}"!=B({a:t})||"{}"!=B(Object(t))})),"JSON",{stringify:function(t){for(var e,n,r=[t],i=1;arguments.length>i;)r.push(arguments[i++]);if(n=e=r[1],(m(e)||void 0!==t)&&!Z(t))return v(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!Z(e))return e}),r[1]=e,B.apply(L,r)}}),O[M][F]||n(13)(O[M],F,O[M].valueOf),h(O,"Symbol"),h(Math,"Math",!0),h(r.JSON,"JSON",!0)},function(t,e,n){var r=n(29),i=n(72),a=n(35);t.exports=function(t){var e=r(t),n=i.f;if(n)for(var o,s=n(t),l=a.f,u=0;s.length>u;)l.call(t,o=s[u++])&&e.push(o);return e}},function(t,e,n){var r=n(17),i=n(105).f,a={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return o&&"[object Window]"==a.call(t)?function(t){try{return i(t)}catch(t){return o.slice()}}(t):i(r(t))}},function(t,e,n){n(71)("asyncIterator")},function(t,e,n){n(71)("observable")},function(t,e,n){n(224);var r=n(2).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},function(t,e,n){var r=n(3);r(r.S+r.F*!n(5),"Object",{defineProperty:n(6).f})},function(t,e,n){t.exports={default:n(226),__esModule:!0}},function(t,e,n){n(73),n(24),n(28),n(227),n(232),n(234),n(235),t.exports=n(2).Map},function(t,e,n){"use strict";var r=n(108),i=n(75);t.exports=n(113)("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=r.getEntry(i(this,"Map"),t);return e&&e.v},set:function(t,e){return r.def(i(this,"Map"),0===t?0:t,e)}},r,!0)},function(t,e,n){"use strict";var r=n(10),i=n(2),a=n(6),o=n(5),s=n(4)("species");t.exports=function(t){var e="function"==typeof i[t]?i[t]:r[t];o&&e&&!e[s]&&a.f(e,s,{configurable:!0,get:function(){return this}})}},function(t,e,n){var r=n(20),i=n(54),a=n(30),o=n(37),s=n(230);t.exports=function(t,e){var n=1==t,l=2==t,u=3==t,c=4==t,h=6==t,f=5==t||h,d=e||s;return function(e,s,p){for(var g,y,v=a(e),b=i(v),m=r(s,p,3),w=o(b.length),x=0,S=n?d(e,w):l?d(e,0):void 0;w>x;x++)if((f||x in b)&&(y=m(g=b[x],x,v),t))if(n)S[x]=y;else if(y)switch(t){case 3:return!0;case 5:return g;case 6:return x;case 2:S.push(g)}else if(c)return!1;return h?-1:u||c?c:S}}},function(t,e,n){var r=n(231);t.exports=function(t,e){return new(r(t))(e)}},function(t,e,n){var r=n(9),i=n(104),a=n(4)("species");t.exports=function(t){var e;return i(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!i(e.prototype)||(e=void 0),r(e)&&null===(e=e[a])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var r=n(3);r(r.P+r.R,"Map",{toJSON:n(114)("Map")})},function(t,e,n){var r=n(41);t.exports=function(t,e){var n=[];return r(t,!1,n.push,n,e),n}},function(t,e,n){n(115)("Map")},function(t,e,n){n(116)("Map")},function(t,e,n){"use strict";e.__esModule=!0;var r,i=n(69),a=(r=i)&&r.__esModule?r:{default:r};e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":(0,a.default)(e))&&"function"!=typeof e?t:e}},function(t,e,n){"use strict";e.__esModule=!0;var r=o(n(238)),i=o(n(242)),a=o(n(69));function o(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":(0,a.default)(e)));t.prototype=(0,i.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(r.default?(0,r.default)(t,e):t.__proto__=e)}},function(t,e,n){t.exports={default:n(239),__esModule:!0}},function(t,e,n){n(240),t.exports=n(2).Object.setPrototypeOf},function(t,e,n){var r=n(3);r(r.S,"Object",{setPrototypeOf:n(241).set})},function(t,e,n){var r=n(9),i=n(14),a=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n(20)(Function.call,n(57).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return a(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:a}},function(t,e,n){t.exports={default:n(243),__esModule:!0}},function(t,e,n){n(244);var r=n(2).Object;t.exports=function(t,e){return r.create(t,e)}},function(t,e,n){var r=n(3);r(r.S,"Object",{create:n(36)})},function(t,e,n){t.exports={default:n(246),__esModule:!0}},function(t,e,n){n(247);var r=n(2).Object;t.exports=function(t,e){return r.defineProperties(t,e)}},function(t,e,n){var r=n(3);r(r.S+r.F*!n(5),"Object",{defineProperties:n(100)})},function(t,e,n){var r=Array.prototype.slice,i=n(249),a=n(250),o=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:function(t,e,n){var u,c;if(s(t)||s(e))return!1;if(t.prototype!==e.prototype)return!1;if(a(t))return!!a(e)&&(t=r.call(t),e=r.call(e),o(t,e,n));if(l(t)){if(!l(e))return!1;if(t.length!==e.length)return!1;for(u=0;u<t.length;u++)if(t[u]!==e[u])return!1;return!0}try{var h=i(t),f=i(e)}catch(t){return!1}if(h.length!=f.length)return!1;for(h.sort(),f.sort(),u=h.length-1;u>=0;u--)if(h[u]!=f[u])return!1;for(u=h.length-1;u>=0;u--)if(c=h[u],!o(t[c],e[c],n))return!1;return typeof t==typeof e}(t,e,n))};function s(t){return null==t}function l(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}},function(t,e){function n(t){var e=[];for(var n in t)e.push(n);return e}(t.exports="function"==typeof Object.keys?Object.keys:n).shim=n},function(t,e){var n="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();function r(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function i(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}(e=t.exports=n?r:i).supported=r,e.unsupported=i},function(t,e,n){t.exports={default:n(252),__esModule:!0}},function(t,e,n){n(253),t.exports=n(2).Object.assign},function(t,e,n){var r=n(3);r(r.S+r.F,"Object",{assign:n(254)})},function(t,e,n){"use strict";var r=n(29),i=n(72),a=n(35),o=n(30),s=n(54),l=Object.assign;t.exports=!l||n(19)(function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach(function(t){e[t]=t}),7!=l({},t)[n]||Object.keys(l({},e)).join("")!=r})?function(t,e){for(var n=o(t),l=arguments.length,u=1,c=i.f,h=a.f;l>u;)for(var f,d=s(arguments[u++]),p=c?r(d).concat(c(d)):r(d),g=p.length,y=0;g>y;)h.call(d,f=p[y++])&&(n[f]=d[f]);return n}:l},function(t,e,n){t.exports={default:n(256),__esModule:!0}},function(t,e,n){n(257),t.exports=n(2).String.fromCodePoint},function(t,e,n){var r=n(3),i=n(102),a=String.fromCharCode,o=String.fromCodePoint;r(r.S+r.F*(!!o&&1!=o.length),"String",{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,o=0;r>o;){if(e=+arguments[o++],i(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?a(e):a(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},function(t,e,n){t.exports={default:n(259),__esModule:!0}},function(t,e,n){n(24),n(260),t.exports=n(2).Array.from},function(t,e,n){"use strict";var r=n(20),i=n(3),a=n(30),o=n(111),s=n(112),l=n(37),u=n(261),c=n(67);i(i.S+i.F*!n(262)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,i,h,f=a(t),d="function"==typeof this?this:Array,p=arguments.length,g=p>1?arguments[1]:void 0,y=void 0!==g,v=0,b=c(f);if(y&&(g=r(g,p>2?arguments[2]:void 0,2)),null==b||d==Array&&s(b))for(n=new d(e=l(f.length));e>v;v++)u(n,v,y?g(f[v],v):f[v]);else for(h=b.call(f),n=new d;!(i=h.next()).done;v++)u(n,v,y?o(h,g,[i.value,v],!0):i.value);return n.length=v,n}})},function(t,e,n){"use strict";var r=n(6),i=n(27);t.exports=function(t,e,n){e in t?r.f(t,e,i(0,n)):t[e]=n}},function(t,e,n){var r=n(4)("iterator"),i=!1;try{var a=[7][r]();a.return=function(){i=!0},Array.from(a,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var a=[7],o=a[r]();o.next=function(){return{done:n=!0}},a[r]=function(){return o},t(a)}catch(t){}return n}},function(t,e,n){t.exports={default:n(264),__esModule:!0}},function(t,e,n){n(73),n(24),n(28),n(265),n(266),n(267),n(268),t.exports=n(2).Set},function(t,e,n){"use strict";var r=n(108),i=n(75);t.exports=n(113)("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(i(this,"Set"),t=0===t?0:t,t)}},r)},function(t,e,n){var r=n(3);r(r.P+r.R,"Set",{toJSON:n(114)("Set")})},function(t,e,n){n(115)("Set")},function(t,e,n){n(116)("Set")},function(t,e,n){(function(t){var r,i,a,o,s,l,u,c,h,f,d,p,g,y,v,b;p=n(43),y=n(270),b=new p(t("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","base64")),v=Math.log2||function(t){return Math.log(t)/Math.LN2},r=(g=function(t){return v(t)+1|0})(y.categories.length-1),o=g(y.combiningClasses.length-1),h=g(y.scripts.length-1),u=g(y.eaw.length-1),a=o+h+u+10,l=h+u+10,d=u+10,i=(1<<r)-1,s=(1<<o)-1,f=(1<<h)-1,c=(1<<u)-1,e.getCategory=function(t){var e;return e=b.get(t),y.categories[e>>a&i]},e.getCombiningClass=function(t){var e;return e=b.get(t),y.combiningClasses[e>>l&s]},e.getScript=function(t){var e;return e=b.get(t),y.scripts[e>>d&f]},e.getEastAsianWidth=function(t){var e;return e=b.get(t),y.eaw[e>>10&c]},e.getNumericValue=function(t){var e,n,r;if(0===(n=1023&(r=b.get(t))))return null;if(n<=50)return n-1;if(n<480)return((n>>4)-12)/(1+(15&n));if(n<768){for(r=(n>>5)-14,e=2+(31&n);e>0;)r*=10,e--;return r}for(r=(n>>2)-191,e=1+(3&n);e>0;)r*=60,e--;return r},e.isAlphabetic=function(t){var n;return"Lu"===(n=e.getCategory(t))||"Ll"===n||"Lt"===n||"Lm"===n||"Lo"===n||"Nl"===n},e.isDigit=function(t){return"Nd"===e.getCategory(t)},e.isPunctuation=function(t){var n;return"Pc"===(n=e.getCategory(t))||"Pd"===n||"Pe"===n||"Pf"===n||"Pi"===n||"Po"===n||"Ps"===n},e.isLowerCase=function(t){return"Ll"===e.getCategory(t)},e.isUpperCase=function(t){return"Lu"===e.getCategory(t)},e.isTitleCase=function(t){return"Lt"===e.getCategory(t)},e.isWhiteSpace=function(t){var n;return"Zs"===(n=e.getCategory(t))||"Zl"===n||"Zp"===n},e.isBaseForm=function(t){var n;return"Nd"===(n=e.getCategory(t))||"No"===n||"Nl"===n||"Lu"===n||"Ll"===n||"Lt"===n||"Lm"===n||"Lo"===n||"Me"===n||"Mc"===n},e.isMark=function(t){var n;return"Mn"===(n=e.getCategory(t))||"Me"===n||"Mc"===n}}).call(e,n(1).Buffer)},function(t,e){t.exports={categories:["Cc","Zs","Po","Sc","Ps","Pe","Sm","Pd","Nd","Lu","Sk","Pc","Ll","So","Lo","Pi","Cf","No","Pf","Lt","Lm","Mn","Me","Mc","Nl","Zl","Zp","Cs","Co"],combiningClasses:["Not_Reordered","Above","Above_Right","Below","Attached_Above_Right","Attached_Below","Overlay","Iota_Subscript","Double_Below","Double_Above","Below_Right","Above_Left","CCC10","CCC11","CCC12","CCC13","CCC14","CCC15","CCC16","CCC17","CCC18","CCC19","CCC20","CCC21","CCC22","CCC23","CCC24","CCC25","CCC30","CCC31","CCC32","CCC27","CCC28","CCC29","CCC33","CCC34","CCC35","CCC36","Nukta","Virama","CCC84","CCC91","CCC103","CCC107","CCC118","CCC122","CCC129","CCC130","CCC132","Attached_Above","Below_Left","Left","Kana_Voicing","CCC26","Right"],scripts:["Common","Latin","Bopomofo","Inherited","Greek","Coptic","Cyrillic","Armenian","Hebrew","Arabic","Syriac","Thaana","Nko","Samaritan","Mandaic","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","Hangul","Ethiopic","Cherokee","Canadian_Aboriginal","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","Tai_Le","New_Tai_Lue","Buginese","Tai_Tham","Balinese","Sundanese","Batak","Lepcha","Ol_Chiki","Braille","Glagolitic","Tifinagh","Han","Hiragana","Katakana","Yi","Lisu","Vai","Bamum","Syloti_Nagri","Phags_Pa","Saurashtra","Kayah_Li","Rejang","Javanese","Cham","Tai_Viet","Meetei_Mayek","null","Linear_B","Lycian","Carian","Old_Italic","Gothic","Old_Permic","Ugaritic","Old_Persian","Deseret","Shavian","Osmanya","Elbasan","Caucasian_Albanian","Linear_A","Cypriot","Imperial_Aramaic","Palmyrene","Nabataean","Hatran","Phoenician","Lydian","Meroitic_Hieroglyphs","Meroitic_Cursive","Kharoshthi","Old_South_Arabian","Old_North_Arabian","Manichaean","Avestan","Inscriptional_Parthian","Inscriptional_Pahlavi","Psalter_Pahlavi","Old_Turkic","Old_Hungarian","Brahmi","Kaithi","Sora_Sompeng","Chakma","Mahajani","Sharada","Khojki","Multani","Khudawadi","Grantha","Tirhuta","Siddham","Modi","Takri","Ahom","Warang_Citi","Pau_Cin_Hau","Cuneiform","Egyptian_Hieroglyphs","Anatolian_Hieroglyphs","Mro","Bassa_Vah","Pahawh_Hmong","Miao","Duployan","SignWriting","Mende_Kikakui"],eaw:["N","Na","A","W","H","F"]}},function(t,e,n){"use strict";function r(t){return t&&"object"==typeof t&&"default"in t?t.default:t}var i=r(n(272)),a=r(n(60)),o=r(n(276)),s=r(n(277)),l=r(n(103)),u=r(n(106)),c=r(n(107)),h=function(){function t(e){u(this,t),this.stateTable=e.stateTable,this.accepting=e.accepting,this.tags=e.tags}return c(t,[{key:"match",value:function(t){var e=this;return o({},l,s.mark(function n(){var r,i,a,o,l,u;return s.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:r=1,i=null,a=null,o=null,l=0;case 5:if(!(l<t.length)){n.next=21;break}if(u=t[l],o=r,0!==(r=e.stateTable[r][u])){n.next=15;break}if(!(null!=i&&null!=a&&a>=i)){n.next=13;break}return n.next=13,[i,a,e.tags[o]];case 13:r=e.stateTable[1][u],i=null;case 15:0!==r&&null==i&&(i=l),e.accepting[r]&&(a=l),0===r&&(r=1);case 18:l++,n.next=5;break;case 21:if(!(null!=i&&null!=a&&a>=i)){n.next=24;break}return n.next=24,[i,a,e.tags[r]];case 24:case"end":return n.stop()}},n,this)}))}},{key:"apply",value:function(t,e){var n=!0,r=!1,o=void 0;try{for(var s,l=a(this.match(t));!(n=(s=l.next()).done);n=!0){var u=i(s.value,3),c=u[0],h=u[1],f=u[2],d=!0,p=!1,g=void 0;try{for(var y,v=a(f);!(d=(y=v.next()).done);d=!0){var b=y.value;"function"==typeof e[b]&&e[b](c,h,t.slice(c,h+1))}}catch(t){p=!0,g=t}finally{try{!d&&v.return&&v.return()}finally{if(p)throw g}}}}catch(t){r=!0,o=t}finally{try{!n&&l.return&&l.return()}finally{if(r)throw o}}}}]),t}();t.exports=h},function(t,e,n){"use strict";e.__esModule=!0;var r=a(n(273)),i=a(n(60));function a(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){if(Array.isArray(t))return t;if((0,r.default)(Object(t)))return function(t,e){var n=[],r=!0,a=!1,o=void 0;try{for(var s,l=(0,i.default)(t);!(r=(s=l.next()).done)&&(n.push(s.value),!e||n.length!==e);r=!0);}catch(t){a=!0,o=t}finally{try{!r&&l.return&&l.return()}finally{if(a)throw o}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}},function(t,e,n){t.exports={default:n(274),__esModule:!0}},function(t,e,n){n(28),n(24),t.exports=n(275)},function(t,e,n){var r=n(68),i=n(4)("iterator"),a=n(23);t.exports=n(2).isIterable=function(t){var e=Object(t);return void 0!==e[i]||"@@iterator"in e||a.hasOwnProperty(r(e))}},function(t,e,n){"use strict";e.__esModule=!0;var r,i=n(74),a=(r=i)&&r.__esModule?r:{default:r};e.default=function(t,e,n){return e in t?(0,a.default)(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){t.exports=n(278)},function(t,e,n){var r=function(){return this}()||Function("return this")(),i=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,a=i&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(279),i)r.regeneratorRuntime=a;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}},function(t,e){!function(e){"use strict";var n,r=Object.prototype,i=r.hasOwnProperty,a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",s=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag",u="object"==typeof t,c=e.regeneratorRuntime;if(c)u&&(t.exports=c);else{(c=e.regeneratorRuntime=u?t.exports:{}).wrap=w;var h="suspendedStart",f="suspendedYield",d="executing",p="completed",g={},y={};y[o]=function(){return this};var v=Object.getPrototypeOf,b=v&&v(v(O([])));b&&b!==r&&i.call(b,o)&&(y=b);var m=k.prototype=S.prototype=Object.create(y);_.prototype=m.constructor=k,k.constructor=_,k[l]=_.displayName="GeneratorFunction",c.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===_||"GeneratorFunction"===(e.displayName||e.name))},c.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,k):(t.__proto__=k,l in t||(t[l]="GeneratorFunction")),t.prototype=Object.create(m),t},c.awrap=function(t){return{__await:t}},C(A.prototype),A.prototype[s]=function(){return this},c.AsyncIterator=A,c.async=function(t,e,n,r){var i=new A(w(t,e,n,r));return c.isGeneratorFunction(e)?i:i.next().then(function(t){return t.done?t.value:i.next()})},C(m),m[l]="Generator",m[o]=function(){return this},m.toString=function(){return"[object Generator]"},c.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},c.values=O,T.prototype={constructor:T,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(I),!t)for(var e in this)"t"===e.charAt(0)&&i.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,i){return s.type="throw",s.arg=t,e.next=r,i&&(e.method="next",e.arg=n),!!i}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],s=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=i.call(o,"catchLoc"),u=i.call(o,"finallyLoc");if(l&&u){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var o=a?a.completion:{};return o.type=t,o.arg=e,a?(this.method="next",this.next=a.finallyLoc,g):this.complete(o)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),g},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),I(n),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;I(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=n),g}}}function w(t,e,n,r){var i,a,o,s,l=e&&e.prototype instanceof S?e:S,u=Object.create(l.prototype),c=new T(r||[]);return u._invoke=(i=t,a=n,o=c,s=h,function(t,e){if(s===d)throw new Error("Generator is already running");if(s===p){if("throw"===t)throw e;return L()}for(o.method=t,o.arg=e;;){var n=o.delegate;if(n){var r=P(n,o);if(r){if(r===g)continue;return r}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(s===h)throw s=p,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);s=d;var l=x(i,a,o);if("normal"===l.type){if(s=o.done?p:f,l.arg===g)continue;return{value:l.arg,done:o.done}}"throw"===l.type&&(s=p,o.method="throw",o.arg=l.arg)}}),u}function x(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function S(){}function _(){}function k(){}function C(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function A(t){var e;this._invoke=function(n,r){function a(){return new Promise(function(e,a){!function e(n,r,a,o){var s=x(t[n],t,r);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==typeof u&&i.call(u,"__await")?Promise.resolve(u.__await).then(function(t){e("next",t,a,o)},function(t){e("throw",t,a,o)}):Promise.resolve(u).then(function(t){l.value=t,a(l)},o)}o(s.arg)}(n,r,e,a)})}return e=e?e.then(a,a):a()}}function P(t,e){var r=t.iterator[e.method];if(r===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=n,P(t,e),"throw"===e.method))return g;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var i=x(r,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,g;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,g):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,g)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,a=function e(){for(;++r<t.length;)if(i.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=n,e.done=!0,e};return a.next=a}}return{next:L}}function L(){return{value:n,done:!0}}}(function(){return this}()||Function("return this")())},function(t,e,n){t.exports={default:n(281),__esModule:!0}},function(t,e,n){n(282),t.exports=Math.pow(2,-52)},function(t,e,n){var r=n(3);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,e,n){(function(e){var n=function(){"use strict";function t(n,i,a,o){"object"==typeof i&&(a=i.depth,o=i.prototype,i.filter,i=i.circular);var s=[],l=[],u=void 0!==e;return void 0===i&&(i=!0),void 0===a&&(a=1/0),function n(a,c){if(null===a)return null;if(0==c)return a;var h,f;if("object"!=typeof a)return a;if(t.__isArray(a))h=[];else if(t.__isRegExp(a))h=new RegExp(a.source,r(a)),a.lastIndex&&(h.lastIndex=a.lastIndex);else if(t.__isDate(a))h=new Date(a.getTime());else{if(u&&e.isBuffer(a))return h=new e(a.length),a.copy(h),h;void 0===o?(f=Object.getPrototypeOf(a),h=Object.create(f)):(h=Object.create(o),f=o)}if(i){var d=s.indexOf(a);if(-1!=d)return l[d];s.push(a),l.push(h)}for(var p in a){var g;f&&(g=Object.getOwnPropertyDescriptor(f,p)),g&&null==g.set||(h[p]=n(a[p],c-1))}return h}(n,a)}function n(t){return Object.prototype.toString.call(t)}function r(t){var e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),e}return t.clonePrototype=function(t){if(null===t)return null;var e=function(){};return e.prototype=t,new e},t.__objToStr=n,t.__isDate=function(t){return"object"==typeof t&&"[object Date]"===n(t)},t.__isArray=function(t){return"object"==typeof t&&"[object Array]"===n(t)},t.__isRegExp=function(t){return"object"==typeof t&&"[object RegExp]"===n(t)},t.__getRegExpFlags=r,t}();"object"==typeof t&&t.exports&&(t.exports=n)}).call(e,n(1).Buffer)},function(t,e,n){t.exports=n(117).BrotliDecompressBuffer},function(t,e){var n=8224,r=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function i(t){this.buf_=new Uint8Array(n),this.input_=t,this.reset()}i.READ_SIZE=4096,i.IBUF_MASK=8191,i.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var t=0;t<4;t++)this.val_|=this.buf_[this.pos_]<<8*t,++this.pos_;return this.bit_end_pos_>0},i.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var t=this.buf_ptr_,e=this.input_.read(this.buf_,t,4096);if(e<0)throw new Error("Unexpected end of input");if(e<4096){this.eos_=1;for(var n=0;n<32;n++)this.buf_[t+e+n]=0}if(0===t){for(n=0;n<32;n++)this.buf_[8192+n]=this.buf_[n];this.buf_ptr_=4096}else this.buf_ptr_=0;this.bit_end_pos_+=e<<3}},i.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[8191&this.pos_]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},i.prototype.readBits=function(t){32-this.bit_pos_<t&&this.fillBitWindow();var e=this.val_>>>this.bit_pos_&r[t];return this.bit_pos_+=t,e},t.exports=i},function(t,e,n){var r=n(287);n(8);e.init=function(){return(0,n(117).BrotliDecompressBuffer)(r.toByteArray(n(288)))}},function(t,e,n){"use strict";e.byteLength=function(t){return 3*t.length/4-u(t)},e.toByteArray=function(t){var e,n,r,o,s,l=t.length;o=u(t),s=new a(3*l/4-o),n=o>0?l-4:l;var c=0;for(e=0;e<n;e+=4)r=i[t.charCodeAt(e)]<<18|i[t.charCodeAt(e+1)]<<12|i[t.charCodeAt(e+2)]<<6|i[t.charCodeAt(e+3)],s[c++]=r>>16&255,s[c++]=r>>8&255,s[c++]=255&r;2===o?(r=i[t.charCodeAt(e)]<<2|i[t.charCodeAt(e+1)]>>4,s[c++]=255&r):1===o&&(r=i[t.charCodeAt(e)]<<10|i[t.charCodeAt(e+1)]<<4|i[t.charCodeAt(e+2)]>>2,s[c++]=r>>8&255,s[c++]=255&r);return s},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,a="",o=[],s=0,l=n-i;s<l;s+=16383)o.push(c(t,s,s+16383>l?l:s+16383));1===i?(e=t[n-1],a+=r[e>>2],a+=r[e<<4&63],a+="=="):2===i&&(e=(t[n-2]<<8)+t[n-1],a+=r[e>>10],a+=r[e>>4&63],a+=r[e<<2&63],a+="=");return o.push(a),o.join("")};for(var r=[],i=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=o.length;s<l;++s)r[s]=o[s],i[o.charCodeAt(s)]=s;function u(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function c(t,e,n){for(var i,a,o=[],s=e;s<n;s+=3)i=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),o.push(r[(a=i)>>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){t.exports="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"},function(t,e){e.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),e.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},function(t,e){function n(t,e){this.offset=t,this.nbits=e}e.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],e.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],e.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],e.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],e.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},function(t,e,n){var r=n(119);function i(t,e,n){this.prefix=new Uint8Array(t.length),this.transform=e,this.suffix=new Uint8Array(n.length);for(var r=0;r<t.length;r++)this.prefix[r]=t.charCodeAt(r);for(r=0;r<n.length;r++)this.suffix[r]=n.charCodeAt(r)}var a=[new i("",0,""),new i("",0," "),new i(" ",0," "),new i("",12,""),new i("",10," "),new i("",0," the "),new i(" ",0,""),new i("s ",0," "),new i("",0," of "),new i("",10,""),new i("",0," and "),new i("",13,""),new i("",1,""),new i(", ",0," "),new i("",0,", "),new i(" ",10," "),new i("",0," in "),new i("",0," to "),new i("e ",0," "),new i("",0,'"'),new i("",0,"."),new i("",0,'">'),new i("",0,"\n"),new i("",3,""),new i("",0,"]"),new i("",0," for "),new i("",14,""),new i("",2,""),new i("",0," a "),new i("",0," that "),new i(" ",10,""),new i("",0,". "),new i(".",0,""),new i(" ",0,", "),new i("",15,""),new i("",0," with "),new i("",0,"'"),new i("",0," from "),new i("",0," by "),new i("",16,""),new i("",17,""),new i(" the ",0,""),new i("",4,""),new i("",0,". The "),new i("",11,""),new i("",0," on "),new i("",0," as "),new i("",0," is "),new i("",7,""),new i("",1,"ing "),new i("",0,"\n\t"),new i("",0,":"),new i(" ",0,". "),new i("",0,"ed "),new i("",20,""),new i("",18,""),new i("",6,""),new i("",0,"("),new i("",10,", "),new i("",8,""),new i("",0," at "),new i("",0,"ly "),new i(" the ",0," of "),new i("",5,""),new i("",9,""),new i(" ",10,", "),new i("",10,'"'),new i(".",0,"("),new i("",11," "),new i("",10,'">'),new i("",0,'="'),new i(" ",0,"."),new i(".com/",0,""),new i(" the ",0," of the "),new i("",10,"'"),new i("",0,". This "),new i("",0,","),new i(".",0," "),new i("",10,"("),new i("",10,"."),new i("",0," not "),new i(" ",0,'="'),new i("",0,"er "),new i(" ",11," "),new i("",0,"al "),new i(" ",11,""),new i("",0,"='"),new i("",11,'"'),new i("",10,". "),new i(" ",0,"("),new i("",0,"ful "),new i(" ",10,". "),new i("",0,"ive "),new i("",0,"less "),new i("",11,"'"),new i("",0,"est "),new i(" ",10,"."),new i("",11,'">'),new i(" ",0,"='"),new i("",10,","),new i("",0,"ize "),new i("",11,"."),new i("Â ",0,""),new i(" ",0,","),new i("",10,'="'),new i("",11,'="'),new i("",0,"ous "),new i("",11,", "),new i("",10,"='"),new i(" ",10,","),new i(" ",11,'="'),new i(" ",11,", "),new i("",11,","),new i("",11,"("),new i("",11,". "),new i(" ",11,"."),new i("",11,"='"),new i(" ",11,". "),new i(" ",10,'="'),new i(" ",11,"='"),new i(" ",10,"='")];function o(t,e){return t[e]<192?(t[e]>=97&&t[e]<=122&&(t[e]^=32),1):t[e]<224?(t[e+1]^=32,2):(t[e+2]^=5,3)}e.kTransforms=a,e.kNumTransforms=a.length,e.transformDictionaryWord=function(t,e,n,i,s){var l,u=a[s].prefix,c=a[s].suffix,h=a[s].transform,f=h<12?0:h-11,d=0,p=e;f>i&&(f=i);for(var g=0;g<u.length;)t[e++]=u[g++];for(n+=f,i-=f,h<=9&&(i-=h),d=0;d<i;d++)t[e++]=r.dictionary[n+d];if(l=e-i,10===h)o(t,l);else if(11===h)for(;i>0;){var y=o(t,l);l+=y,i-=y}for(var v=0;v<c.length;)t[e++]=c[v++];return e-p}},function(t,e,n){(function(e){(function(){var r,i,a,o,s={}.hasOwnProperty;r=n(293),i=n(50),o=n(8),a=function(t){var n;function a(t,e,i){var a;this.document=t,this.name=e,this.id=i,this.font=new r(n[this.name]()),a=this.font,this.ascender=a.ascender,this.descender=a.descender,this.bbox=a.bbox,this.lineGap=a.lineGap}return function(t,e){for(var n in e)s.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(a,i),a.prototype.embed=function(){return this.dictionary.data={Type:"Font",BaseFont:this.name,Subtype:"Type1",Encoding:"WinAnsiEncoding"},this.dictionary.end()},a.prototype.encode=function(t){var e,n,r,i,a,o,s,l;for(n=this.font.encodeText(t),i=this.font.glyphsForString(""+t),e=this.font.advancesForGlyphs(i),l=[],a=o=0,s=i.length;o<s;a=++o)r=i[a],l.push({xAdvance:e[a],yAdvance:0,xOffset:0,yOffset:0,advanceWidth:this.font.widthOfGlyph(r)});return[n,l]},a.prototype.widthOfString=function(t,e){var n,r,i,a,o;for(r=this.font.glyphsForString(""+t),o=0,i=0,a=(n=this.font.advancesForGlyphs(r)).length;i<a;i++)o+=n[i];return o*(e/1e3)},a.isStandardFont=function(t){return t in n},n={Courier:function(){return o.readFileSync(e+"/../font/data/Courier.afm","utf8")},"Courier-Bold":function(){return o.readFileSync(e+"/../font/data/Courier-Bold.afm","utf8")},"Courier-Oblique":function(){return o.readFileSync(e+"/../font/data/Courier-Oblique.afm","utf8")},"Courier-BoldOblique":function(){return o.readFileSync(e+"/../font/data/Courier-BoldOblique.afm","utf8")},Helvetica:function(){return o.readFileSync(e+"/../font/data/Helvetica.afm","utf8")},"Helvetica-Bold":function(){return o.readFileSync(e+"/../font/data/Helvetica-Bold.afm","utf8")},"Helvetica-Oblique":function(){return o.readFileSync(e+"/../font/data/Helvetica-Oblique.afm","utf8")},"Helvetica-BoldOblique":function(){return o.readFileSync(e+"/../font/data/Helvetica-BoldOblique.afm","utf8")},"Times-Roman":function(){return o.readFileSync(e+"/../font/data/Times-Roman.afm","utf8")},"Times-Bold":function(){return o.readFileSync(e+"/../font/data/Times-Bold.afm","utf8")},"Times-Italic":function(){return o.readFileSync(e+"/../font/data/Times-Italic.afm","utf8")},"Times-BoldItalic":function(){return o.readFileSync(e+"/../font/data/Times-BoldItalic.afm","utf8")},Symbol:function(){return o.readFileSync(e+"/../font/data/Symbol.afm","utf8")},ZapfDingbats:function(){return o.readFileSync(e+"/../font/data/ZapfDingbats.afm","utf8")}},a}(),t.exports=a}).call(this)}).call(e,"/")},function(t,e,n){(function(){var e,r;r=n(8),e=function(){var t,e;function n(t){var n,r;this.contents=t,this.attributes={},this.glyphWidths={},this.boundingBoxes={},this.kernPairs={},this.parse(),this.charWidths=function(){var t,n;for(n=[],r=t=0;t<=255;r=++t)n.push(this.glyphWidths[e[r]]);return n}.call(this),this.bbox=function(){var t,e,r,i;for(i=[],t=0,e=(r=this.attributes.FontBBox.split(/\s+/)).length;t<e;t++)n=r[t],i.push(+n);return i}.call(this),this.ascender=+(this.attributes.Ascender||0),this.descender=+(this.attributes.Descender||0),this.lineGap=this.bbox[3]-this.bbox[1]-(this.ascender-this.descender)}return n.open=function(t){return new n(r.readFileSync(t,"utf8"))},n.prototype.parse=function(){var t,e,n,r,i,a,o,s,l,u;for(l="",e=0,r=(s=this.contents.split("\n")).length;e<r;e++)if(a=(i=s[e]).match(/^Start(\w+)/))l=a[1];else if(a=i.match(/^End(\w+)/))l="";else switch(l){case"FontMetrics":n=(a=i.match(/(^\w+)\s+(.*)/))[1],u=a[2],(t=this.attributes[n])?(Array.isArray(t)||(t=this.attributes[n]=[t]),t.push(u)):this.attributes[n]=u;break;case"CharMetrics":if(!/^CH?\s/.test(i))continue;o=i.match(/\bN\s+(\.?\w+)\s*;/)[1],this.glyphWidths[o]=+i.match(/\bWX\s+(\d+)\s*;/)[1];break;case"KernPairs":(a=i.match(/^KPX\s+(\.?\w+)\s+(\.?\w+)\s+(-?\d+)/))&&(this.kernPairs[a[1]+"\0"+a[2]]=parseInt(a[3]))}},t={402:131,8211:150,8212:151,8216:145,8217:146,8218:130,8220:147,8221:148,8222:132,8224:134,8225:135,8226:149,8230:133,8364:128,8240:137,8249:139,8250:155,710:136,8482:153,338:140,339:156,732:152,352:138,353:154,376:159,381:142,382:158},n.prototype.encodeText=function(e){var n,r,i,a,o;for(o=[],r=i=0,a=e.length;0<=a?i<a:i>a;r=0<=a?++i:--i)n=e.charCodeAt(r),n=t[n]||n,o.push(n.toString(16));return o},n.prototype.glyphsForString=function(t){var e,n,r,i,a;for(n=[],r=i=0,a=t.length;0<=a?i<a:i>a;r=0<=a?++i:--i)e=t.charCodeAt(r),n.push(this.characterToGlyph(e));return n},n.prototype.characterToGlyph=function(n){return e[t[n]||n]||".notdef"},n.prototype.widthOfGlyph=function(t){return this.glyphWidths[t]||0},n.prototype.getKernPair=function(t,e){return this.kernPairs[t+"\0"+e]||0},n.prototype.advancesForGlyphs=function(t){var e,n,r,i,a,o;for(e=[],n=r=0,a=t.length;r<a;n=++r)i=t[n],o=t[n+1],e.push(this.widthOfGlyph(i)+this.getKernPair(i,o));return e},e=".notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n\nspace         exclam         quotedbl       numbersign\ndollar        percent        ampersand      quotesingle\nparenleft     parenright     asterisk       plus\ncomma         hyphen         period         slash\nzero          one            two            three\nfour          five           six            seven\neight         nine           colon          semicolon\nless          equal          greater        question\n\nat            A              B              C\nD             E              F              G\nH             I              J              K\nL             M              N              O\nP             Q              R              S\nT             U              V              W\nX             Y              Z              bracketleft\nbackslash     bracketright   asciicircum    underscore\n\ngrave         a              b              c\nd             e              f              g\nh             i              j              k\nl             m              n              o\np             q              r              s\nt             u              v              w\nx             y              z              braceleft\nbar           braceright     asciitilde     .notdef\n\nEuro          .notdef        quotesinglbase florin\nquotedblbase  ellipsis       dagger         daggerdbl\ncircumflex    perthousand    Scaron         guilsinglleft\nOE            .notdef        Zcaron         .notdef\n.notdef       quoteleft      quoteright     quotedblleft\nquotedblright bullet         endash         emdash\ntilde         trademark      scaron         guilsinglright\noe            .notdef        zcaron         ydieresis\n\nspace         exclamdown     cent           sterling\ncurrency      yen            brokenbar      section\ndieresis      copyright      ordfeminine    guillemotleft\nlogicalnot    hyphen         registered     macron\ndegree        plusminus      twosuperior    threesuperior\nacute         mu             paragraph      periodcentered\ncedilla       onesuperior    ordmasculine   guillemotright\nonequarter    onehalf        threequarters  questiondown\n\nAgrave        Aacute         Acircumflex    Atilde\nAdieresis     Aring          AE             Ccedilla\nEgrave        Eacute         Ecircumflex    Edieresis\nIgrave        Iacute         Icircumflex    Idieresis\nEth           Ntilde         Ograve         Oacute\nOcircumflex   Otilde         Odieresis      multiply\nOslash        Ugrave         Uacute         Ucircumflex\nUdieresis     Yacute         Thorn          germandbls\n\nagrave        aacute         acircumflex    atilde\nadieresis     aring          ae             ccedilla\negrave        eacute         ecircumflex    edieresis\nigrave        iacute         icircumflex    idieresis\neth           ntilde         ograve         oacute\nocircumflex   otilde         odieresis      divide\noslash        ugrave         uacute         ucircumflex\nudieresis     yacute         thorn          ydieresis".split(/\s+/),n}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i={}.hasOwnProperty,a=[].slice;r=n(50),n(26),e=function(t){var e;function n(t,e,n){this.document=t,this.font=e,this.id=n,this.subset=this.font.createSubset(),this.unicode=[[0]],this.widths=[this.font.getGlyph(0).advanceWidth],this.name=this.font.postscriptName,this.scale=1e3/this.font.unitsPerEm,this.ascender=this.font.ascent*this.scale,this.descender=this.font.descent*this.scale,this.lineGap=this.font.lineGap*this.scale,this.bbox=this.font.bbox,this.layoutCache=Object.create(null)}return function(t,e){for(var n in e)i.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(n,r),n.prototype.layoutRun=function(t,e){var n,r,i,a,o,s,l;for(n=r=0,a=(s=(l=this.font.layout(t,e)).positions).length;r<a;n=++r){for(i in o=s[n])o[i]*=this.scale;o.advanceWidth=l.glyphs[n].advanceWidth*this.scale}return l},n.prototype.layoutCached=function(t){var e,n;return(e=this.layoutCache[t])?e:(n=this.layoutRun(t),this.layoutCache[t]=n,n)},n.prototype.layout=function(t,e,n){var r,i,a,o,s,l,u;if(null==n&&(n=!1),e)return this.layoutRun(t,e);for(i=n?null:[],s=n?null:[],r=0,o=0,a=0;a<=t.length;)a===t.length&&o<a||" "===(l=t.charAt(a))||"\t"===l?(u=this.layoutCached(t.slice(o,++a)),n||(i.push.apply(i,u.glyphs),s.push.apply(s,u.positions)),r+=u.advanceWidth,o=a):a++;return{glyphs:i,positions:s,advanceWidth:r}},n.prototype.encode=function(t,e){var n,r,i,a,o,s,l,u,c,h,f;for(o=(h=this.layout(t,e)).glyphs,c=h.positions,f=[],s=l=0,u=o.length;l<u;s=++l)a=o[s],i=this.subset.includeGlyph(a.id),f.push(("0000"+i.toString(16)).slice(-4)),null==(n=this.widths)[i]&&(n[i]=a.advanceWidth*this.scale),null==(r=this.unicode)[i]&&(r[i]=a.codePoints);return[f,c]},n.prototype.widthOfString=function(t,e,n){return this.layout(t,n,!0).advanceWidth*(e/1e3)},n.prototype.embed=function(){var t,e,n,r,i,a,o,s,l;return o=null!=this.subset.cff,a=this.document.ref(),o&&(a.data.Subtype="CIDFontType0C"),this.subset.encodeStream().pipe(a),r=((null!=(l=this.font["OS/2"])?l.sFamilyClass:void 0)||0)>>8,i=0,this.font.post.isFixedPitch&&(i|=1),1<=r&&r<=7&&(i|=2),i|=4,10===r&&(i|=8),this.font.head.macStyle.italic&&(i|=64),s=function(){var t,e;for(e=[],t=0;t<6;++t)e.push(String.fromCharCode(26*Math.random()+65));return e}().join("")+"+"+this.font.postscriptName,t=this.font.bbox,n=this.document.ref({Type:"FontDescriptor",FontName:s,Flags:i,FontBBox:[t.minX*this.scale,t.minY*this.scale,t.maxX*this.scale,t.maxY*this.scale],ItalicAngle:this.font.italicAngle,Ascent:this.ascender,Descent:this.descender,CapHeight:(this.font.capHeight||this.font.ascent)*this.scale,XHeight:(this.font.xHeight||0)*this.scale,StemV:0}),o?n.data.FontFile3=a:n.data.FontFile2=a,n.end(),(e=this.document.ref({Type:"Font",Subtype:o?"CIDFontType0":"CIDFontType2",BaseFont:s,CIDSystemInfo:{Registry:new String("Adobe"),Ordering:new String("Identity"),Supplement:0},FontDescriptor:n,W:[0,this.widths]})).end(),this.dictionary.data={Type:"Font",Subtype:"Type0",BaseFont:s,Encoding:"Identity-H",DescendantFonts:[e],ToUnicode:this.toUnicodeCmap()},this.dictionary.end()},e=function(){var t,e;return e=1<=arguments.length?a.call(arguments,0):[],function(){var n,r,i;for(i=[],n=0,r=e.length;n<r;n++)t=e[n],i.push(("0000"+t.toString(16)).slice(-4));return i}().join("")},n.prototype.toUnicodeCmap=function(){var t,n,r,i,a,o,s,l,u,c;for(t=this.document.ref(),i=[],a=0,s=(u=this.unicode).length;a<s;a++){for(r=[],o=0,l=(n=u[a]).length;o<l;o++)(c=n[o])>65535&&(c-=65536,r.push(e(c>>>10&1023|55296)),c=56320|1023&c),r.push(e(c));i.push("<"+r.join(" ")+">")}return t.end("/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n  /Registry (Adobe)\n  /Ordering (UCS)\n  /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange\n1 beginbfrange\n<0000> <"+e(i.length-1)+"> ["+i.join(" ")+"]\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"),t},n}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r;e=n(296),r=n(26).number,t.exports={initText:function(){return this.x=0,this.y=0,this._lineGap=0},lineGap:function(t){return this._lineGap=t,this},moveDown:function(t){return null==t&&(t=1),this.y+=this.currentLineHeight(!0)*t+this._lineGap,this},moveUp:function(t){return null==t&&(t=1),this.y-=this.currentLineHeight(!0)*t+this._lineGap,this},_text:function(t,n,r,i,a){var o,s,l,u;if(t=null==t?"":""+t,(i=this._initOptions(n,r,i)).wordSpacing&&(t=t.replace(/\s{2,}/g," ")),i.width)(u=this._wrapper)||(u=new e(this,i)).on("line",a),this._wrapper=i.continued?u:null,this._textOptions=i.continued?i:null,u.wrap(t,i);else for(o=0,s=(l=t.split("\n")).length;o<s;o++)a(l[o],i);return this},text:function(t,e,n,r){return this._text(t,e,n,r,this._line.bind(this))},widthOfString:function(t,e){return null==e&&(e={}),this._font.widthOfString(t,this._fontSize,e.features)+(e.characterSpacing||0)*(t.length-1)},heightOfString:function(t,e){var n,r,i,a,o;return null==e&&(e={}),this,i=this.x,a=this.y,(e=this._initOptions(e)).height=Infinity,r=e.lineGap||this._lineGap||0,this._text(t,this.x,this.y,e,(o=this,function(t,e){return o.y+=o.currentLineHeight(!0)+r})),n=this.y-a,this.x=i,this.y=a,n},list:function(t,n,r,i,a){var o,s,l,u,c,h,f,d,p,g,y,v;return i=this._initOptions(n,r,i),d=Math.round(this._font.ascender/1e3*this._fontSize/2),p=i.bulletRadius||Math.round(this._font.ascender/1e3*this._fontSize/3),l=i.textIndent||5*p,u=i.bulletIndent||8*p,h=1,c=[],f=[],(o=function(t){var e,n,r,i,a;for(a=[],e=r=0,i=t.length;r<i;e=++r)n=t[e],Array.isArray(n)?(h++,o(n),a.push(h--)):(c.push(n),a.push(f.push(h)));return a})(t),(a=new e(this,i)).on("line",this._line.bind(this)),h=1,s=0,a.on("firstLine",(g=this,function(){var t,e;return(e=f[s++])!==h&&(t=u*(e-h),g.x+=t,a.lineWidth-=t,h=e),g.circle(g.x-l+p,g.y+d,p),g.fill()})),a.on("sectionStart",(y=this,function(){var t;return t=l+u*(h-1),y.x+=t,a.lineWidth-=t})),a.on("sectionEnd",(v=this,function(){var t;return t=l+u*(h-1),v.x-=t,a.lineWidth+=t})),a.wrap(c.join("\n"),i),this},_initOptions:function(t,e,n){var r,i,a;if(null==t&&(t={}),null==n&&(n={}),"object"==typeof t&&(n=t,t=null),n=function(){var t,e,r;for(t in e={},n)r=n[t],e[t]=r;return e}(),this._textOptions)for(r in i=this._textOptions)a=i[r],"continued"!==r&&null==n[r]&&(n[r]=a);return null!=t&&(this.x=t),null!=e&&(this.y=e),!1!==n.lineBreak&&null==n.width&&(n.width=this.page.width-this.x-this.page.margins.right),n.columns||(n.columns=0),null==n.columnGap&&(n.columnGap=18),n},_line:function(t,e,n){var r;return null==e&&(e={}),this._fragment(t,this.x,this.y,e),r=e.lineGap||this._lineGap||0,n?this.y+=this.currentLineHeight(!0)+r:this.x+=this.widthOfString(t)},_fragment:function(t,e,n,i){var a,o,s,l,u,c,h,f,d,p,g,y,v,b,m,w,x,S,_,k,C,A,P,E,I,T,O,L,B,M,R,F,D,z,N,U;if(0!==(t=(""+t).replace(/\n/g,"")).length){if(o=i.align||"left",N=i.wordSpacing||0,l=i.characterSpacing||0,i.width)switch(o){case"right":F=this.widthOfString(t.replace(/\s+$/,""),i),e+=i.lineWidth-F;break;case"center":e+=i.lineWidth/2-i.textWidth/2;break;case"justify":U=t.trim().split(/\s+/),F=this.widthOfString(t.replace(/\s+/g,""),i),R=this.widthOfString(" ")+l,N=Math.max(0,(i.lineWidth-F)/Math.max(1,U.length-1)-R)}if(L=i.textWidth+N*(i.wordCount-1)+l*(t.length-1),i.link&&this.link(e,n,L,this.currentLineHeight(),i.link),(i.underline||i.strike)&&(this.save(),i.stroke||this.strokeColor.apply(this,this._fillColor),x=this._fontSize<10?.5:Math.floor(this._fontSize/10),this.lineWidth(x),c=i.underline?1:2,S=n+this.currentLineHeight()/c,i.underline&&(S-=x),this.moveTo(e,S),this.lineTo(e+L,S),this.stroke(),this.restore()),this.save(),this.transform(1,0,0,-1,0,this.page.height),n=this.page.height-n-this._font.ascender/1e3*this._fontSize,null==(s=this.page.fonts)[C=this._font.id]&&(s[C]=this._font.ref()),this.addContent("BT"),this.addContent("1 0 0 1 "+r(e)+" "+r(n)+" Tm"),this.addContent("/"+this._font.id+" "+r(this._fontSize)+" Tf"),(k=i.fill&&i.stroke?2:i.stroke?1:0)&&this.addContent(k+" Tr"),l&&this.addContent(r(l)+" Tc"),N)for(U=t.trim().split(/\s+/),N+=this.widthOfString(" ")+l,N*=1e3/this._fontSize,h=[],P=[],y=0,m=U.length;y<m;y++){for(v in z=U[y],f=(I=this._font.encode(z,i.features))[0],E=I[1],h.push.apply(h,f),P.push.apply(P,E),M={},T=P[P.length-1])D=T[v],M[v]=D;M.xAdvance+=N,P[P.length-1]=M}else O=this._font.encode(t,i.features),h=O[0],P=O[1];var W;for(B=this._fontSize/1e3,u=[],b=0,p=!1,a=function(t){var e,n;return b<t&&(n=h.slice(b,t).join(""),e=P[t-1].xAdvance-P[t-1].advanceWidth,u.push("<"+n+"> "+r(-e))),b=t},W=this,d=function(t){if(a(t),u.length>0)return W.addContent("["+u.join(" ")+"] TJ"),u.length=0},g=_=0,w=P.length;_<w;g=++_)(A=P[g]).xOffset||A.yOffset?(d(g),this.addContent("1 0 0 1 "+r(e+A.xOffset*B)+" "+r(n+A.yOffset*B)+" Tm"),d(g+1),p=!0):(p&&(this.addContent("1 0 0 1 "+r(e)+" "+r(n)+" Tm"),p=!1),A.xAdvance-A.advanceWidth!=0&&a(g+1)),e+=A.xAdvance*B;return d(g),this.addContent("ET"),this.restore()}}}}).call(this)},function(t,e,n){(function(){var e,r,i,a={}.hasOwnProperty;e=n(31).EventEmitter,r=n(78),i=function(t){function n(t,e){var n,r,i;this.document=t,this.indent=e.indent||0,this.characterSpacing=e.characterSpacing||0,this.wordSpacing=0===e.wordSpacing,this.columns=e.columns||1,this.columnGap=null!=(n=e.columnGap)?n:18,this.lineWidth=(e.width-this.columnGap*(this.columns-1))/this.columns,this.spaceLeft=this.lineWidth,this.startX=this.document.x,this.startY=this.document.y,this.column=1,this.ellipsis=e.ellipsis,this.continuedX=0,this.features=e.features,null!=e.height?(this.height=e.height,this.maxY=this.startY+e.height):this.maxY=this.document.page.maxY(),this.on("firstLine",(r=this,function(t){var e;return e=r.continuedX||r.indent,r.document.x+=e,r.lineWidth-=e,r.once("line",function(){if(r.document.x-=e,r.lineWidth+=e,t.continued&&!r.continuedX&&(r.continuedX=r.indent),!t.continued)return r.continuedX=0})})),this.on("lastLine",(i=this,function(t){var e;return"justify"===(e=t.align)&&(t.align="left"),i.lastLine=!0,i.once("line",function(){return i.document.y+=t.paragraphGap||0,t.align=e,i.lastLine=!1})}))}return function(t,e){for(var n in e)a.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(n,e),n.prototype.wordWidth=function(t){return this.document.widthOfString(t,this)+this.characterSpacing+this.wordSpacing},n.prototype.eachWord=function(t,e){var n,i,a,o,s,l,u,c,h,f;for(i=new r(t),s=null,f=Object.create(null);n=i.nextBreak();){if((c=null!=f[h=t.slice((null!=s?s.position:void 0)||0,n.position)]?f[h]:f[h]=this.wordWidth(h))>this.lineWidth+this.continuedX)for(l=s,a={};h.length;){for(o=h.length;c>this.spaceLeft;)c=this.wordWidth(h.slice(0,--o));if(a.required=o<h.length,u=e(h.slice(0,o),c,a,l),l={required:!1},h=h.slice(o),c=this.wordWidth(h),!1===u)break}else u=e(h,c,n,s);if(!1===u)break;s=n}},n.prototype.wrap=function(t,e){var n,r,i,a,o,s,l,u,c;return null!=e.indent&&(this.indent=e.indent),null!=e.characterSpacing&&(this.characterSpacing=e.characterSpacing),null!=e.wordSpacing&&(this.wordSpacing=e.wordSpacing),null!=e.ellipsis&&(this.ellipsis=e.ellipsis),a=this.document.y+this.document.currentLineHeight(!0),(this.document.y>this.maxY||a>this.maxY)&&this.nextSection(),n="",o=0,s=0,i=0,l=this.document.y,u=this,r=function(){return e.textWidth=o+u.wordSpacing*(s-1),e.wordCount=s,e.lineWidth=u.lineWidth,l=u.document.y,u.emit("line",n,e,u),i++},this.emit("sectionStart",e,this),this.eachWord(t,(c=this,function(t,i,a,l){var u;if((null==l||l.required)&&(c.emit("firstLine",e,c),c.spaceLeft=c.lineWidth),i<=c.spaceLeft&&(n+=t,o+=i,s++),a.required||i>c.spaceLeft){if(a.required&&c.emit("lastLine",e,c),u=c.document.currentLineHeight(!0),null!=c.height&&c.ellipsis&&c.document.y+2*u>c.maxY&&c.column>=c.columns){for(!0===c.ellipsis&&(c.ellipsis="…"),n=n.replace(/\s+$/,""),o=c.wordWidth(n+c.ellipsis);o>c.lineWidth;)n=n.slice(0,-1).replace(/\s+$/,""),o=c.wordWidth(n+c.ellipsis);n+=c.ellipsis}return a.required&&i>c.spaceLeft&&(n=t,o=i,s=1),r(),c.document.y+u>c.maxY&&!c.nextSection()?(s=0,n="",!1):a.required?(c.spaceLeft=c.lineWidth,n="",o=0,s=0):(c.spaceLeft=c.lineWidth-i,n=t,o=i,s=1)}return c.spaceLeft-=i})),s>0&&(this.emit("lastLine",e,this),r()),this.emit("sectionEnd",e,this),!0===e.continued?(i>1&&(this.continuedX=0),this.continuedX+=e.textWidth,this.document.y=l):this.document.x=this.startX},n.prototype.nextSection=function(t){var e;if(this.emit("sectionEnd",t,this),++this.column>this.columns){if(null!=this.height)return!1;this.document.addPage(),this.column=1,this.startY=this.document.page.margins.top,this.maxY=this.document.page.maxY(),this.document.x=this.startX,this.document._fillColor&&(e=this.document).fillColor.apply(e,this.document._fillColor),this.emit("pageBreak",t,this)}else this.document.x+=this.lineWidth+this.columnGap,this.document.y=this.startY,this.emit("columnBreak",t,this);return this.emit("sectionStart",t,this),!0},n}(),t.exports=i}).call(this)},function(t,e,n){(function(){var e;e=n(121),t.exports={initImages:function(){return this._imageRegistry={},this._imageCount=0},image:function(t,e,n,r){var i,a,o,s,l,u,c,h,f,d,p,g,y,v,b;return null==r&&(r={}),"object"==typeof e&&(r=e,e=null),e=null!=(d=null!=e?e:r.x)?d:this.x,n=null!=(p=null!=n?n:r.y)?p:this.y,"string"==typeof t&&(c=this._imageRegistry[t]),c||(c=t.width&&t.height?t:this.openImage(t)),c.obj||c.embed(this),null==(i=this.page.xobjects)[f=c.label]&&(i[f]=c.obj),v=r.width||c.width,l=r.height||c.height,r.width&&!r.height?(b=v/c.width,v=c.width*b,l=c.height*b):r.height&&!r.width?(u=l/c.height,v=c.width*u,l=c.height*u):r.scale?(v=c.width*r.scale,l=c.height*r.scale):r.fit?(o=(s=(g=r.fit)[0])/(a=g[1]),(h=c.width/c.height)>o?(v=s,l=s/h):(l=a,v=a*h)):r.cover&&(o=(s=(y=r.cover)[0])/(a=y[1]),(h=c.width/c.height)>o?(l=a,v=a*h):(v=s,l=s/h)),(r.fit||r.cover)&&("center"===r.align?e=e+s/2-v/2:"right"===r.align&&(e=e+s-v),"center"===r.valign?n=n+a/2-l/2:"bottom"===r.valign&&(n=n+a-l)),this.y===n&&(this.y+=l),this.save(),this.transform(v,0,0,-l,e,n+l),this.addContent("/"+c.label+" Do"),this.restore(),this},openImage:function(t){var n;return"string"==typeof t&&(n=this._imageRegistry[t]),n||(n=e.open(t,"I"+ ++this._imageCount),"string"==typeof t&&(this._imageRegistry[t]=n)),n}}}).call(this)},function(t,e){(function(){var e;e=function(){function t(t){this.data=null!=t?t:[],this.pos=0,this.length=this.data.length}return t.prototype.readByte=function(){return this.data[this.pos++]},t.prototype.writeByte=function(t){return this.data[this.pos++]=t},t.prototype.byteAt=function(t){return this.data[t]},t.prototype.readBool=function(){return!!this.readByte()},t.prototype.writeBool=function(t){return this.writeByte(t?1:0)},t.prototype.readUInt32=function(){return 16777216*this.readByte()+(this.readByte()<<16)+(this.readByte()<<8)+this.readByte()},t.prototype.writeUInt32=function(t){return this.writeByte(t>>>24&255),this.writeByte(t>>16&255),this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt32=function(){var t;return(t=this.readUInt32())>=2147483648?t-4294967296:t},t.prototype.writeInt32=function(t){return t<0&&(t+=4294967296),this.writeUInt32(t)},t.prototype.readUInt16=function(){return this.readByte()<<8|this.readByte()},t.prototype.writeUInt16=function(t){return this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt16=function(){var t;return(t=this.readUInt16())>=32768?t-65536:t},t.prototype.writeInt16=function(t){return t<0&&(t+=65536),this.writeUInt16(t)},t.prototype.readString=function(t){var e,n,r,i;for(i=[],e=n=0,r=t;0<=r?n<r:n>r;e=0<=r?++n:--n)i[e]=String.fromCharCode(this.readByte());return i.join("")},t.prototype.writeString=function(t){var e,n,r,i;for(i=[],e=n=0,r=t.length;0<=r?n<r:n>r;e=0<=r?++n:--n)i.push(this.writeByte(t.charCodeAt(e)));return i},t.prototype.stringAt=function(t,e){return this.pos=t,this.readString(e)},t.prototype.readShort=function(){return this.readInt16()},t.prototype.writeShort=function(t){return this.writeInt16(t)},t.prototype.readLongLong=function(){var t,e,n,r,i,a,o,s;return t=this.readByte(),e=this.readByte(),n=this.readByte(),r=this.readByte(),i=this.readByte(),a=this.readByte(),o=this.readByte(),s=this.readByte(),128&t?-1*(72057594037927940*(255^t)+281474976710656*(255^e)+1099511627776*(255^n)+4294967296*(255^r)+16777216*(255^i)+65536*(255^a)+256*(255^o)+(255^s)+1):72057594037927940*t+281474976710656*e+1099511627776*n+4294967296*r+16777216*i+65536*a+256*o+s},t.prototype.writeLongLong=function(t){var e,n;return e=Math.floor(t/4294967296),n=4294967295&t,this.writeByte(e>>24&255),this.writeByte(e>>16&255),this.writeByte(e>>8&255),this.writeByte(255&e),this.writeByte(n>>24&255),this.writeByte(n>>16&255),this.writeByte(n>>8&255),this.writeByte(255&n)},t.prototype.readInt=function(){return this.readInt32()},t.prototype.writeInt=function(t){return this.writeInt32(t)},t.prototype.slice=function(t,e){return this.data.slice(t,e)},t.prototype.read=function(t){var e,n,r;for(e=[],n=0,r=t;0<=r?n<r:n>r;0<=r?++n:--n)e.push(this.readByte());return e},t.prototype.write=function(t){var e,n,r,i;for(i=[],n=0,r=t.length;n<r;n++)e=t[n],i.push(this.writeByte(e));return i},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r=[].indexOf||function(t){for(var e=0,n=this.length;e<n;e++)if(e in this&&this[e]===t)return e;return-1};n(8),e=function(){var t;function e(e,n){var i,a,o;if(this.data=e,this.label=n,65496!==this.data.readUInt16BE(0))throw"SOI not found in JPEG";for(o=2;o<this.data.length&&(a=this.data.readUInt16BE(o),o+=2,!(r.call(t,a)>=0));)o+=this.data.readUInt16BE(o);if(r.call(t,a)<0)throw"Invalid JPEG.";o+=2,this.bits=this.data[o++],this.height=this.data.readUInt16BE(o),o+=2,this.width=this.data.readUInt16BE(o),o+=2,i=this.data[o++],this.colorSpace=function(){switch(i){case 1:return"DeviceGray";case 3:return"DeviceRGB";case 4:return"DeviceCMYK"}}(),this.obj=null}return t=[65472,65473,65474,65475,65477,65478,65479,65480,65481,65482,65483,65484,65485,65486,65487],e.prototype.embed=function(t){if(!this.obj)return this.obj=t.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.bits,Width:this.width,Height:this.height,ColorSpace:this.colorSpace,Filter:"DCTDecode"}),"DeviceCMYK"===this.colorSpace&&(this.obj.data.Decode=[1,0,1,0,1,0,1,0]),this.obj.end(this.data),this.data=null},e}(),t.exports=e}).call(this)},function(t,e,n){(function(e){(function(){var r,i,a;a=n(48),r=n(301),i=function(){function t(t,e){this.label=e,this.image=new r(t),this.width=this.image.width,this.height=this.image.height,this.imgData=this.image.imgData,this.obj=null}return t.prototype.embed=function(t){var n,r,i,a,o,s,l,u;if(this.document=t,!this.obj){if(this.obj=this.document.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.image.bits,Width:this.width,Height:this.height,Filter:"FlateDecode"}),this.image.hasAlphaChannel||(o=this.document.ref({Predictor:15,Colors:this.image.colors,BitsPerComponent:this.image.bits,Columns:this.width}),this.obj.data.DecodeParms=o,o.end()),0===this.image.palette.length?this.obj.data.ColorSpace=this.image.colorSpace:((a=this.document.ref()).end(new e(this.image.palette)),this.obj.data.ColorSpace=["Indexed","DeviceRGB",this.image.palette.length/3-1,a]),this.image.transparency.grayscale)return l=this.image.transparency.greyscale,this.obj.data.Mask=[l,l];if(this.image.transparency.rgb){for(i=[],n=0,r=(s=this.image.transparency.rgb).length;n<r;n++)u=s[n],i.push(u,u);return this.obj.data.Mask=i}return this.image.transparency.indexed?this.loadIndexedAlphaChannel():this.image.hasAlphaChannel?this.splitAlphaChannel():this.finalize()}},t.prototype.finalize=function(){var t;return this.alphaChannel&&((t=this.document.ref({Type:"XObject",Subtype:"Image",Height:this.height,Width:this.width,BitsPerComponent:8,Filter:"FlateDecode",ColorSpace:"DeviceGray",Decode:[0,1]})).end(this.alphaChannel),this.obj.data.SMask=t),this.obj.end(this.imgData),this.image=null,this.imgData=null},t.prototype.splitAlphaChannel=function(){return this.image.decodePixels((t=this,function(n){var r,i,o,s,l,u,c,h,f;for(o=t.image.colors*t.image.bits/8,f=t.width*t.height,u=new e(f*o),i=new e(f),l=h=r=0,c=n.length;l<c;)u[h++]=n[l++],u[h++]=n[l++],u[h++]=n[l++],i[r++]=n[l++];return s=0,a.deflate(u,function(e,n){if(t.imgData=n,e)throw e;if(2==++s)return t.finalize()}),a.deflate(i,function(e,n){if(t.alphaChannel=n,e)throw e;if(2==++s)return t.finalize()})}));var t},t.prototype.loadIndexedAlphaChannel=function(t){var n,r;return n=this.image.transparency.indexed,this.image.decodePixels((r=this,function(t){var i,o,s,l,u;for(i=new e(r.width*r.height),o=0,s=l=0,u=t.length;l<u;s=l+=1)i[o++]=n[t[s]];return a.deflate(i,function(t,e){if(r.alphaChannel=e,t)throw t;return r.finalize()})}))},t}(),t.exports=i}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){(function(e){(function(){var r,i;r=n(8),i=n(48),t.exports=function(){function t(t){var n,r,i,a,o,s,l,u,c;for(this.data=t,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.text={};;){switch(n=this.readUInt32(),function(){var t,e;for(e=[],t=0;t<4;++t)e.push(String.fromCharCode(this.data[this.pos++]));return e}.call(this).join("")){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"PLTE":this.palette=this.read(n);break;case"IDAT":for(l=0;l<n;l+=1)this.imgData.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={},this.colorType){case 3:if(this.transparency.indexed=this.read(n),(o=255-this.transparency.indexed.length)>0)for(u=0;0<=o?u<o:u>o;0<=o?++u:--u)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(n)[0];break;case 2:this.transparency.rgb=this.read(n)}break;case"tEXt":i=(s=this.read(n)).indexOf(0),a=String.fromCharCode.apply(String,s.slice(0,i)),this.text[a]=String.fromCharCode.apply(String,s.slice(i+1));break;case"IEND":return this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(c=this.colorType)||6===c,r=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*r,this.colorSpace=function(){switch(this.colors){case 1:return"DeviceGray";case 3:return"DeviceRGB"}}.call(this),void(this.imgData=new e(this.imgData));default:this.pos+=n}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}return t.decode=function(e,n){return r.readFile(e,function(e,r){return new t(r).decode(function(t){return n(t)})})},t.load=function(e){return new t(r.readFileSync(e))},t.prototype.read=function(t){var e,n;for(n=[],e=0;0<=t?e<t:e>t;0<=t?++e:--e)n.push(this.data[this.pos++]);return n},t.prototype.readUInt32=function(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]},t.prototype.readUInt16=function(){return this.data[this.pos++]<<8|this.data[this.pos++]},t.prototype.decodePixels=function(t){var n=this;return i.inflate(this.imgData,function(r,i){var a,o,s,l,u,c,h,f,d,p,g,y,v,b,m,w,x,S,_,k,C,A,P;if(r)throw r;for(w=(y=n.pixelBitlength/8)*n.width,v=new e(w*n.height),c=i.length,m=0,b=0,o=0;b<c;){switch(i[b++]){case 0:for(l=_=0;_<w;l=_+=1)v[o++]=i[b++];break;case 1:for(l=k=0;k<w;l=k+=1)a=i[b++],u=l<y?0:v[o-y],v[o++]=(a+u)%256;break;case 2:for(l=C=0;C<w;l=C+=1)a=i[b++],s=(l-l%y)/y,x=m&&v[(m-1)*w+s*y+l%y],v[o++]=(x+a)%256;break;case 3:for(l=A=0;A<w;l=A+=1)a=i[b++],s=(l-l%y)/y,u=l<y?0:v[o-y],x=m&&v[(m-1)*w+s*y+l%y],v[o++]=(a+Math.floor((u+x)/2))%256;break;case 4:for(l=P=0;P<w;l=P+=1)a=i[b++],s=(l-l%y)/y,u=l<y?0:v[o-y],0===m?x=S=0:(x=v[(m-1)*w+s*y+l%y],S=s&&v[(m-1)*w+(s-1)*y+l%y]),h=u+x-S,f=Math.abs(h-u),p=Math.abs(h-x),g=Math.abs(h-S),d=f<=p&&f<=g?u:p<=g?x:S,v[o++]=(a+d)%256;break;default:throw new Error("Invalid filter algorithm: "+i[b-1])}m++}return t(v)})},t.prototype.decodePalette=function(){var t,n,r,i,a,o,s,l,u;for(r=this.palette,o=this.transparency.indexed||[],a=new e(o.length+r.length),i=0,r.length,t=0,n=s=0,l=r.length;s<l;n=s+=3)a[i++]=r[n],a[i++]=r[n+1],a[i++]=r[n+2],a[i++]=null!=(u=o[t++])?u:255;return a},t.prototype.copyToImageData=function(t,e){var n,r,i,a,o,s,l,u,c,h,f;if(r=this.colors,c=null,n=this.hasAlphaChannel,this.palette.length&&(c=null!=(f=this._decodedPalette)?f:this._decodedPalette=this.decodePalette(),r=4,n=!0),u=(i=(null!=t?t.data:void 0)||t).length,o=c||e,a=s=0,1===r)for(;a<u;)l=c?4*e[a/4]:s,h=o[l++],i[a++]=h,i[a++]=h,i[a++]=h,i[a++]=n?o[l++]:255,s=l;else for(;a<u;)l=c?4*e[a/4]:s,i[a++]=o[l++],i[a++]=o[l++],i[a++]=o[l++],i[a++]=n?o[l++]:255,s=l},t.prototype.decode=function(t){var n,r=this;return n=new e(this.width*this.height*4),this.decodePixels(function(e){return r.copyToImageData(n,e),t(n)})},t}()}).call(this)}).call(e,n(1).Buffer)},function(t,e){(function(){t.exports={annotate:function(t,e,n,r,i){var a,o,s;for(a in i.Type="Annot",i.Rect=this._convertRect(t,e,n,r),i.Border=[0,0,0],"Link"!==i.Subtype&&null==i.C&&(i.C=this._normalizeColor(i.color||[0,0,0])),delete i.color,"string"==typeof i.Dest&&(i.Dest=new String(i.Dest)),i)s=i[a],i[a[0].toUpperCase()+a.slice(1)]=s;return o=this.ref(i),this.page.annotations.push(o),o.end(),this},note:function(t,e,n,r,i,a){return null==a&&(a={}),a.Subtype="Text",a.Contents=new String(i),a.Name="Comment",null==a.color&&(a.color=[243,223,92]),this.annotate(t,e,n,r,a)},link:function(t,e,n,r,i,a){return null==a&&(a={}),a.Subtype="Link",a.A=this.ref({S:"URI",URI:new String(i)}),a.A.end(),this.annotate(t,e,n,r,a)},_markup:function(t,e,n,r,i){var a,o,s,l,u;return null==i&&(i={}),o=(a=this._convertRect(t,e,n,r))[0],l=a[1],s=a[2],u=a[3],i.QuadPoints=[o,u,s,u,o,l,s,l],i.Contents=new String,this.annotate(t,e,n,r,i)},highlight:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Highlight",null==i.color&&(i.color=[241,238,148]),this._markup(t,e,n,r,i)},underline:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Underline",this._markup(t,e,n,r,i)},strike:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="StrikeOut",this._markup(t,e,n,r,i)},lineAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Line",i.Contents=new String,i.L=[t,this.page.height-e,n,this.page.height-r],this.annotate(t,e,n,r,i)},rectAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Square",i.Contents=new String,this.annotate(t,e,n,r,i)},ellipseAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Circle",i.Contents=new String,this.annotate(t,e,n,r,i)},textAnnotation:function(t,e,n,r,i,a){return null==a&&(a={}),a.Subtype="FreeText",a.Contents=new String(i),a.DA=new String,this.annotate(t,e,n,r,a)},_convertRect:function(t,e,n,r){var i,a,o,s,l,u,c,h,f;return f=e,e+=r,h=t+n,i=(c=this._ctm)[0],a=c[1],o=c[2],s=c[3],[t=i*t+o*e+(l=c[4]),e=a*t+s*e+(u=c[5]),h=i*h+o*f+l,f=a*h+s*f+u]}}}).call(this)},function(t,e,n){"use strict";t.exports={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]}},function(t,e,n){"use strict";(function(e){var r=n(121);function i(t,e){this.pdfKitDoc=t,this.imageDictionary=e||{}}i.prototype.measureImage=function(t){var n,i,a=this;if(this.pdfKitDoc._imageRegistry[t])n=this.pdfKitDoc._imageRegistry[t];else{i="I"+ ++this.pdfKitDoc._imageCount;try{n=r.open(function(t){var n=a.imageDictionary[t];if(!n)return t;var r=n.indexOf("base64,");if(r<0)return a.imageDictionary[t];return e.from(n.substring(r+7),"base64")}(t),i)}catch(t){n=null}if(null==n)throw"invalid image, images dictionary should contain dataURL entries (or local file paths in node.js)";n.embed(this.pdfKitDoc),this.pdfKitDoc._imageRegistry[t]=n}return{width:n.width,height:n.height}},t.exports=i}).call(e,n(1).Buffer)},function(t,e,n){"use strict";var r=n(0).isArray;function i(t,e,n,r){var i=t.inlines[0],a=function(){for(var e=0,n=0,r=t.inlines.length;n<r;n++)e=t.inlines[n].fontSize>e?n:e;return t.inlines[e]}(),o=function(){for(var e=0,n=0,r=t.inlines.length;n<r;n++)e+=t.inlines[n].width;return e}(),s=t.line.getAscenderHeight(),l=a.font.ascender/1e3*a.fontSize,u=a.height-l,c=.5+.12*Math.floor(Math.max(a.fontSize-8,0)/2);switch(t.decoration){case"underline":n+=s+.45*u;break;case"overline":n+=s-.85*l;break;case"lineThrough":n+=s-.25*l;break;default:throw"Unkown decoration : "+t.decoration}if(r.save(),"double"===t.decorationStyle){var h=Math.max(.5,2*c);r.fillColor(t.decorationColor).rect(e+i.x,n-c/2,o,c/2).fill().rect(e+i.x,n+h-c/2,o,c/2).fill()}else if("dashed"===t.decorationStyle){var f=Math.ceil(o/6.8),d=e+i.x;r.rect(d,n,o,c).clip(),r.fillColor(t.decorationColor);for(var p=0;p<f;p++)r.rect(d,n-c/2,3.96,c).fill(),d+=6.8}else if("dotted"===t.decorationStyle){var g=Math.ceil(o/(3*c)),y=e+i.x;r.rect(y,n,o,c).clip(),r.fillColor(t.decorationColor);for(var v=0;v<g;v++)r.rect(y,n-c/2,c,c).fill(),y+=3*c}else if("wavy"===t.decorationStyle){var b=Math.ceil(o/1.4)+1,m=e+i.x-1;r.rect(e+i.x,n-1,o,n+1).clip(),r.lineWidth(.24),r.moveTo(m,n);for(var w=0;w<b;w++)r.bezierCurveTo(m+.7,n-1,m+1.4,n-1,m+.7*3,n).bezierCurveTo(m+2.8,n+1,m+3.5,n+1,m+.7*6,n),m+=.7*6;r.stroke(t.decorationColor)}else r.fillColor(t.decorationColor).rect(e+i.x,n-c/2,o,c).fill();r.restore()}t.exports={drawBackground:function(t,e,n,r){for(var i=t.getHeight(),a=0,o=t.inlines.length;a<o;a++){var s=t.inlines[a];if(s.background){var l=s.justifyShift||0;r.fillColor(s.background).rect(e+s.x-l,n,s.width+l,i).fill()}}},drawDecorations:function(t,e,n,a){for(var o=function(t){for(var e=[],n=null,i=0,a=t.inlines.length;i<a;i++){var o=t.inlines[i],s=o.decoration;if(s){r(s)||(s=[s]);for(var l=o.decorationColor||o.color||"black",u=o.decorationStyle||"solid",c=0,h=s.length;c<h;c++){var f=s[c];n&&f===n.decoration&&u===n.decorationStyle&&l===n.decorationColor&&"lineThrough"!==f?n.inlines.push(o):(n={line:t,decoration:f,decorationColor:l,decorationStyle:u,inlines:[o]},e.push(n))}}else n=null}return e}(t),s=0,l=o.length;s<l;s++)i(o[s],e,n,a)}}},function(t,e,n){var r,i=i||function(t){"use strict";if(!(void 0===t||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var e=t.document,n=function(){return t.URL||t.webkitURL||t},r=e?e.createElementNS("http://www.w3.org/1999/xhtml","a"):[],i="download"in r,a=/constructor/i.test(t.HTMLElement)||t.safari,o=/CriOS\/[\d]+/.test(navigator.userAgent),s=function(e){(t.setImmediate||t.setTimeout)(function(){throw e},0)},l=function(t){setTimeout(function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()},4e4)},u=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},c=function(e,c,h){h||(e=u(e));var f,d=this,p="application/octet-stream"===e.type,g=function(){!function(t,e,n){for(var r=(e=[].concat(e)).length;r--;){var i=t["on"+e[r]];if("function"==typeof i)try{i.call(t,n||t)}catch(t){s(t)}}}(d,"writestart progress write writeend".split(" "))};if(d.readyState=d.INIT,i)return f=n().createObjectURL(e),void setTimeout(function(){var t,e;r.href=f,r.download=c,t=r,e=new MouseEvent("click"),t.dispatchEvent(e),g(),l(f),d.readyState=d.DONE});!function(){if((o||p&&a)&&t.FileReader){var r=new FileReader;return r.onloadend=function(){var e=o?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");t.open(e,"_blank")||(t.location.href=e),e=void 0,d.readyState=d.DONE,g()},r.readAsDataURL(e),void(d.readyState=d.INIT)}f||(f=n().createObjectURL(e)),p?t.location.href=f:t.open(f,"_blank")||(t.location.href=f);d.readyState=d.DONE,g(),l(f)}()},h=c.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,n){return e=e||t.name||"download",n||(t=u(t)),navigator.msSaveOrOpenBlob(t,e)}:(h.abort=function(){},h.readyState=h.INIT=0,h.WRITING=1,h.DONE=2,h.error=h.onwritestart=h.onprogress=h.onwrite=h.onabort=h.onerror=h.onwriteend=null,function(t,e,n){return new c(t,e||t.name||"download",n)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);void 0!==t&&t.exports?t.exports.saveAs=i:null!==n(307)&&null!==n(308)&&(void 0===(r=function(){return i}.call(e,n,e,t))||(t.exports=r))},function(t,e){t.exports=function(){throw new Error("define cannot be used indirect")}},function(t,e){(function(e){t.exports=e}).call(e,{})}])});
+//# sourceMappingURL=pdfmake.min.js.map
+
+
+this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = {
+  "Roboto-Italic.ttf": "AAEAAAASAQAABAAgR0RFRtRX1FkAAgp8AAACREdQT1NKcuCzAAIMwAAAUiRHU1VCw4aZEQACXuQAABfoT1MvMqCnsO0AAAGoAAAAYGNtYXBAbb9DAAAafAAABoBjdnQgJEEG5QAAI5QAAABMZnBnbWf0XKsAACD8AAABvGdhc3AACAATAAIKcAAAAAxnbHlmoLsktAAALagAAdn2aGRteCEe/AUAABWQAAAE7GhlYWT4gasAAAABLAAAADZoaGVhDKYSegAAAWQAAAAkaG10eHJO1ygAAAIIAAATiGxvY2EXM5zBAAAj4AAACcZtYXhwBxICWwAAAYgAAAAgbmFtZTlLZFAAAgegAAACrnBvc3T/YQBkAAIKUAAAACBwcmVwdKCP7AAAIrgAAADbAAEAAAACAAAcadIiXw889QAbCAAAAAAAxPARLgAAAADQ206M+jj91QlMCHMAAgAJAAIAAAAAAAAAAQAAB2z+DAAACRb6OP52CUwIAAGzAAAAAAAAAAAAAAAABOIAAQAABOIAkAAWAFYABQABAAAAAAAOAAACAAFzAAYAAQADBAsBkAAFAAAFmgUzAAABHwWaBTMAAAPRAGYCAAAAAgAAAAAAAAAAAOAACv9QACF/AAAAIQAAAABHT09HAAEAAP/9BgD+AABmB5oCACAAAZ8AAAAABDoFsAAgACAAAgOWAGQACgAAAAoAAAH2AAAB9gAAAgkAQwKFAMgE0QBSBGYASgW5ALsE3QA6AWQAqgKxAG0Cvf+PA2IAawRwAEwBkP+PAi4AGQIVADUDPf+PBGYAaARmAPkEZgAXBGYANARmAAUEZgByBGYAcARmAJ0EZgBBBGYAlAHrACsBrv+bA/wAQQRMAHAEGAA6A7QApQcCAEQFGv+vBN8AOwUXAHQFIQA7BHMAOwRUADsFUwB5BZIAOwImAEkEUgAKBOcAOwQ3ADsG0AA7BZIAOwVgAHcE7wA7BWAAbwTRADoEpQAnBKsAqAUSAGcE+gCkBuwAwwTn/9QEswCoBK//6wIZ//8DOQC/Ahn/egNIAE8Div+BAnAAzwRDADMEZQAfBBoARgRqAEsEJgBFArwAdARlAAQEUAAfAewALwHk/xQD+QAgAewALwbXAB4EUgAfBHcARQRl/9cEcwBJAqoAHwQKAC4CkwBDBFEAWwPMAG4F3wCAA+P/xAO2/6UD4//tAqoAOAHuACECqv+MBVEAaQHu//EESABSBIz/8wWSABIEvQBTAeb/9wTM/90DSADbBiMAYgOCAMMDrgBZBFYAgQYkAGEDmADjAvAA6AQvACUC4gBcAuIAbgJ5ANUEb//lA9UAewIQAKUB9v/IAuIA3wORAMADrQAPBbkAuQYPALQGEwCeA7b/0wdL/4QELQAoBWAAIASgADgEpwAeBpcAEwSWAFwEeABEBG8AOQSD/+AFeQA1AfUALgRbAC0EOAAiAiIAIwVqADUEbwAkB3AAVAcWAEcB9wAzBWcAUQKu/0kFXgBnBHkAQgVvAGcE1wBaAf7/CQQhAD4DsQEXA3wBJgOZAOMDWgEHAewBDgKiAQECI/+vA7MA3QLvAMICUv/pAAr9agAK/esACv0LAAr99QAK/NsB6vy7AgcBIQP2APMCEQClBFsAQwWD/7EFUQBpBSD/xAR4AAwFkwBEBHj/2gWZAFQFaACGBTMACgRsAEgEo//wA+0AhARvAEMEOQApBA8AggRvACQEdQBzAo0AhQRW/7cD2AA/BKkAYARv/9wENgBOBG8ASgQWAIcERQBnBYIAQQV5AE8GbgBmBIcAUQQrAGcGIgBmBdsAoQVFAHgIWf/MCGwAQwZaALQFkgBCBO4ANAXg/4sHFf+sBKUAJQWSAEMFiP/KBOoAkwYHAFsFtgBBBVoAzgdXAEIHjgBCBe0AiQbAAEUE6AA2BUUAdAb6AEkE+//oBFQARgR5ADADSwAtBLn/jQX7/6UD+wAhBIUALwQ7AC8Ehv/IBcsAMASEAC8EhQAvA8QAYAWqAEwEowAvBEIAewZQAC8GdQAkBNsAVgYQADAEQQAwBDYANAZfADAETP+/BFAAHwQ2AE4Gn//DBrkALwRwAB8EhQAvBtwAbwYGAE8EPwAuBv4ASQXUACwEt/+6BC//ogbfAFoF5wBOBqcAJgW+ACkIyQBIB58ALgQN/84Dx//KBVEAaQRyAEIE7QCtA+4AhAVRAGoEbwBEBtUAdAX/AFIG3ABvBgYATwUUAGYEMABNBOEAQAAK/OgACv0LAAr+FwAK/jsACvo4AAr6TwQ/AC4E/gA6BHD/1wRLADUDfwAkBMAAQwPwACQE7AA2BGYALQZkALsFYwB0B50AOgWSACQH/ABCBskAJAXKAHEEuABfBv8ArAU9AFcFTwDEBFIAmAVQAOwGCgCKBKMABwTsADUEQwAtBZAAQwRvACQFZwBRBI4APASO//wEnf/4Azr/6QTaADEGawAyBrkATAYvAK0FDQBoBDIArwPyAKAHj//fBk3/2gfIADsGeAAjBNoAagQHAEwFiwCaBQMAfQVFAGoDEgDyA/8AAAf0AAAD/wAAB/QAAAKuAAACBAAAAVwAAARmAAACKQAAAZ8AAADVAAAACgAAAi0AGQItABkFIgCnBhkAmQOU/18BlwCuAZcAiQGV/5gBlwDUAsgAtgLPAJUCtv+UBFEAdwR2//YCpwCgA7EAOQU7ADkA+QAaB3kAlwJeAF8CXgACA5H/7wLiAGEDUAB+BIz/8wYuAAoGaAA5CD8AOgc0ACIGBgAfBGYAUQW3AEMEDABJBFwACgUp//IFMP/lBcQAzAO7AEsIBQA1BOUA6gT6AIIGAQC1BqwAkgalAI8GQwC+BHYATQVtACQElf+sBHkAqwSqAEEIBQBNAgb/GgRpADEETABwA/z/1AQZABkD8wBBAkQAeAKFAHAB/v/jBNcAdARWAFgEcgB0BqoAdAaqAHQE0gB0BnIAKQAKAAAH/v+rCDUAXAQKAGIEhQBBAff/DwGP/70DkgETA4wBEgONARED4ADNA/kAzgPfACID2wDSA5IBEQH4APwEbP+lBDkAHQRkAEcEZwAdA9IAHQO4AB0EkgBMBMcAHQHjACoDvP/2BD0AHQOiAB0F3gAdBMcAHQShAEoERQAdBKEARQQzAB0ECgARBBAAbQRkAEUETwB6BfAAlQQ9/7YEFQB0BA3/3ALiAB0C4gBrAuL/6QLi//sC4v/wAuIAFgLiAB4C4gAvAuIACwLiADYDhACTAqoBCwQk/5oEqABLBS0AQwUHAEQD/gAlBR8ARAP6ACUECgASBB0ABgQlADQDnQAdBE//sAShAEoET/+wA3j/0wSzAB0D2//VBUgAUQT6AH4E1gAMBVIAbARkAEcHE//EByEAHQVUAG0EsgAdBEIAHwUH/4kF5/+vBCgAEQTQAB8ENwAeBKb/xAQJAFgFCgAdBFIAWgYqAB0GgwAdBQAAUAXNAB8ENwAfBGMAIAZOAB0Ebv/fA/z/+gYh/68EYQAeBOwAHgUZAGkFoABQBEcAdASO/7YGOgBsBFIAWgRSAB0FoQAvBK8AQQQoABEEoQBKBB3//wPPAB4H7gAdBJH/3QRlAB8EHABDBHoARwRzACQDaACpBHT/1wSDAEYEJgBFBGUANQVhAIEFjACEBXIARAW9AIUFwACFA8IAuwRpADkDnQAdBEH/gQS0/9MC4gCQAuIAYQLiAIkC4gCRAuIAogLiAH4C4gCpBFP/1QQYACsGewBJBJ8APwTkAGQCAP8JAf//CQH2AC4B9v96AfYALgH2//EEOQAdAfYAAAIuABkFPwAvBT8ALwRuAD0EqwCoApP/9AUa/68FGv+vBRr/rwUa/68FGv+vBRr/rwUa/68FFwB0BHMAOwRzADsEcwA7BHMAOwImAEkCJgBJAiYASQImAEkFkgA7BWAAdwVgAHcFYAB3BWAAdwVgAHcFEgBnBRIAZwUSAGcFEgBnBLMAqARDADMEQwAzBEMAMwRDADMEQwAzBEMAMwRDADMEGgBGBCYARQQmAEUEJgBFBCYARQH1AC4B9QAuAfUALgH1AC4EUgAfBHcARQR3AEUEdwBFBHcARQR3AEUEUQBbBFEAWwRRAFsEUQBbA7b/pQO2/6UFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFFwB0BBoARgUXAHQEGgBGBRcAdAQaAEYFFwB0BBoARgUhADsFAABLBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQVTAHkEZQAEBVMAeQRlAAQFUwB5BGUABAVTAHkEZQAEBZIAOwRQAB8CJgBJAfUAEQImAEkB9QAaAiYASQH1AC4CJv+OAez/cAImAEkGeABJA9AALwRSAAoB/v8JBOcAOwP5ACAENwA7AewALwQ3ADsB7P+jBDcAOwKCAC8ENwA7AsgALwWSADsEUgAfBZIAOwRSAB8FkgA7BFIAHwRSAB8FYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUE0QA6AqoAHwTRADoCqv+fBNEAOgKqAB8EpQAnBAoALgSlACcECgAuBKUAJwQKAC4EpQAnBAoALgSlACcECgAuBKsAqAKTAEMEqwCoApMAQwSrAKgCuwBDBRIAZwRRAFsFEgBnBFEAWwUSAGcEUQBbBRIAZwRRAFsFEgBnBFEAWwUSAGcEUQBbBuwAwwXfAIAEswCoA7b/pQSzAKgEr//rA+P/7QSv/+sD4//tBK//6wPj/+0HS/+EBpcAEwVgACAEbwA5BGf/sARn/7AEEABtBGz/pQRs/6UEbP+lBGz/pQRs/6UEbP+lBGz/pQRkAEcD0gAdA9IAHQPSAB0D0gAdAeMAKgHjACoB4wAqAeMAKgTHAB0EoQBKBKEASgShAEoEoQBKBKEASgRkAEUEZABFBGQARQRkAEUEFQB0BGz/pQRs/6UEbP+lBGQARwRkAEcEZABHBGQARwRnAB0D0gAdA9IAHQPSAB0D0gAdA9IAHQSSAEwEkgBMBJIATASSAEwExwAdAeMADwHjABgB4wAqAeP/egHjACoDvP/2BD0AHQOiAB0DogAdA6IAHQOiAB0ExwAdBMcAHQTHAB0EoQBKBKEASgShAEoEMwAdBDMAHQQzAB0ECgARBAoAEQQKABEECgARBBAAbQQQAG0EEABtBGQARQRkAEUEZABFBGQARQRkAEUEZABFBfAAlQQVAHQEFQB0BA3/3AQN/9wEDf/cBRr/rwTXAGMF9gBxAooAdwV0AGoFF//uBUcAHgKNACAFGv+vBN8AOwRzADsEr//rBZIAOwImAEkE5wA7BtAAOwWSADsFYAB3BO8AOwSrAKgEswCoBOf/1AImAEkEswCoBGwASAQ5ACkEbwAkAo0AhQRFAGcEWwAtBHcARQRv/+UDzABuA+P/xAKNAGcERQBnBHcARQRFAGcGbgBmBHMAOwRbAEMEpQAnAiYASQImAEkEUgAKBQcARATnADsE6gCTBRr/rwTfADsEWwBDBHMAOwWSAEMG0AA7BZIAOwVgAHcFkwBEBO8AOwUXAHQEqwCoBOf/1ARDADMEJgBFBIUALwR3AEUEZf/XBBoARgO2/6UD4//EBCYARQNLAC0ECgAuAewALwH1AC4B5P8UBDsALwO2/6UG7ADDBd8AgAbsAMMF3wCABuwAwwXfAIAEswCoA7b/pQFkAKoChQDIBBIAQwH+/wkBlwCJBtAAOwbXAB4FGv+vBEMAMwRzADsFkgBDBCYARQSFAC8FaACGBXkATwTtAK0D7gCECC0ARQkWAHcEpQAlA/sAIQUXAHQEGgBGBLMAqAPtAIQCJgBJBxX/rAX7/6UCJgBJBRr/rwRDADMFGv+vBEMAMwdL/4QGlwATBHMAOwQmAEUFZwBRBCEAPgQhAD4HFf+sBfv/pQSlACUD+wAhBZIAQwSFAC8FkgBDBIUALwVgAHcEdwBFBVEAaQRyAEIFUQBpBHIAQgVFAHQENgA0BOoAkwO2/6UE6gCTA7b/pQTqAJMDtv+lBVoAzgRCAHsGwABFBhAAMATn/9QD4//EBGoASwWI/8oEhv/IBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQImAEkB9QAuAiYADgHs//EFYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUFYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUFYAB3BHcARQVeAGcEeQBCBV4AZwR5AEIFXgBnBHkAQgVeAGcEeQBCBV4AZwR5AEIFEgBnBFEAWwUSAGcEUQBbBW8AZwTXAFoFbwBnBNcAWgVvAGcE1wBaBW8AZwTXAFoFbwBnBNcAWgSzAKgDtv+lBLMAqAO2/6UEswCoA7b/pQSIAEsEiAAABQcARAQ7AC8FkgA7BIQALwSrAKgDxABgBOf/1APj/8QFWgDOBEIAewVaAM4EQgB7BFsAQwNLAC0HFf+sBfv/pQYKAIoEowAHBFAAHwToACsE6AArBFsAEANL/+YFGwBYBBIAOQWSAEMEhQAvBZIAOwSEAC8G0AA7BcsAMAWI/8oEhv/IBLMAqAPtAF0E5//UA+P/xAQ5ACkEVP/XBhkAmQRmABcEZgA0BGYABQRmAHIEegCUBI4AfAVTAHkEZQAEBZIAOwRSAB8FGv+vBEMAMwRzADsEJgBFAib/3wH1/40FYAB3BHcARQTRADoCqgAfBRIAZwRRAFsEj/+yBN8AOwRlAB8FIQA7BGoASwUhADsEagBLBZIAOwRQAB8E5wA7A/kAIATnADsD+QAgBDcAOwHs//IG0AA7BtcAHgWSADsEUgAfBO8AOwRl/9cE0QA6Aqr/7gSlACcECgAuBKsAqAKTAEME+gCkA8wAbgT6AKQDzABuBuwAwwXfAIAEr//rA+P/7QWm/wwEbP+lBA7/4QUD//0CHwABBKsAHQRR/5sE4AAWBGz/pQQ5AB0D0gAdBA3/3ATHAB0B4wAqBD0AHQXeAB0EoQBKBEUAHQQQAG0EFQB0BD3/tgHjACoEFQB0A9IAHQOdAB0ECgARAeMAKgHjACoDvP/2BD0AHQQJAFgEbP+lBDkAHQOdAB0D0gAdBNAAHwXeAB0ExwAdBKEASgSzAB0ERQAdBGQARwQQAG0EPf+2BCgAEQTHAB0EZABIBBUAdAWhAC8E0AAfBAkAWAVIAFEFGv+vBEMAMwRzADsEJgBFAAAAAQAABOQJCgQAAAICAgMFBQYFAgMDBAUCAgIEBQUFBQUFBQUFBQICBAUFBAgGBQYGBQUGBgIFBgUIBgYGBgUFBQYGCAYFBQIEAgQEAwUFBQUFAwUFAgIEAggFBQUFAwUDBQQHBAQEAwIDBgIFBQYFAgUEBwQEBQcEAwUDAwMFBAICAwQEBgcHBAgFBgUFBwUFBQUGAgUFAgYFCAgCBgMGBQYFAgUEBAQEAgMCBAMDAAAAAAACAgQCBQYGBgUGBQYGBgUFBAUFBQUFAwUEBQUFBQUFBgYHBQUHBwYJCQcGBgcIBQYGBgcGBggJBwgGBggGBQUEBQcEBQUFBwUFBAYFBQcHBQcFBQcFBQUHCAUFCAcFCAcFBQgHBwYKCQUEBgUGBAYFCAcIBwYFBQAAAAAAAAUGBQUEBQQGBQcGCQYJCAcFCAYGBQYHBQYFBgUGBQUFBAUHCAcGBQQJBwkHBQUGBgYDBQkFCQMCAgUCAgEAAgIGBwQCAgICAwMDBQUDBAYBCAMDBAMEBQcHCQgHBQYFBQYGBgQJBgYHCAcHBQYFBQUJAgUFBAUEAwMCBQUFCAgFBwAJCQUFAgIEBAQEBAQEBAIFBQUFBAQFBQIEBQQHBQUFBQUFBQUFBwUFBQMDAwMDAwMDAwMEAwUFBgYEBgQFBQUEBQUFBAUEBgYFBgUICAYFBQYHBQUFBQUGBQcHBgcFBQcFBAcFBgYGBQUHBQUGBQUFBQQJBQUFBQUEBQUFBQYGBgYGBAUEBQUDAwMDAwMDBQUHBQYCAgICAgIFAgIGBgUFAwYGBgYGBgYGBQUFBQICAgIGBgYGBgYGBgYGBQUFBQUFBQUFBQUFBQICAgIFBQUFBQUFBQUFBAQGBQYFBgUGBQYFBgUGBQYGBQUFBQUFBQUFBQYFBgUGBQYFBgUCAgICAgICAgIHBAUCBgQFAgUCBQMFAwYFBgUGBQUGBQYFBgUFAwUDBQMFBQUFBQUFBQUFBQMFAwUDBgUGBQYFBgUGBQYFCAcFBAUFBAUEBQQIBwYFBQUFBQUF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c3dzd3N/c4dzkXObc7Jz0XPvdA50LnQ6dEZ0d3S4dR11QnVOdV51cnZGdmJ2f3aSdqZ273d6eBx4qXi1eXh503pZewR7ZnvpfEd8uH1dfcl+W368fyR/Pn9Yf3J/jH//gCeAYYB9gLKBO4GBgfiCOYJHglWCjoKbgsKC24Lng0qDo4Q3hMKFQ4YXhheHlIfxiCKIgIiviMWJKIl6ibqKLIqFisWLCItIi2KLqIwejHqMx40TjU+Nto4EjiKOWI6cjsSPFo9Uj7OQA5BhkLWRI5FPkYuRvpISkleSi5LIkxuTRpOVlAaUSJSolQiVNZW+liCWN5aBlz6XuZgtmHyYwpkEmUyZzJo4mq+a2psQm4ibuZwHnDqcepzunVCdu54enoyfA597n9KgDaBpoMGhN6G8ofqiS6KUotijE6Nbo5uj5aRApEyknaURpZyl+aZIptCnM6eYp/iooqiuqQGpTamiqeuqZarSqzerq6xHrM6tb63irk+uqK8Tr5yvpLAQsH6w6bFysdWyQLKSsvSzWrOFs9q0BLRdtKG0tbTJtNu077UBtRi1LLWOtba2RLa0tw23FbcdtyW3MLc4t0S3sLewt7i4KLiYuPq5QLmoub+51rntugS6HLovuju6R7peunC6h7qaurG6w7rauu27BLsbuy27RLtbu267hbuXu667wbvTu+q7/LwSvCO8NrxJvFW8Ybx4vIq8oLyzvMm82rzxvQm9Gr0xvUO9Wb1qvX29lL2mvby9z73hvfO+Cr4gvje+Sb62v2S/dr+Iv5q/q7+9v8+/4b/ywATAEMAiwDPARcBXwGnAe8DvwX3Bj8GgwbLBw8HVwefB+cILwhfCKcI7wk/CYcJzwoXCl8KpwrvCxsLRwuPC78L7ww3DH8MrwzfDScNbw2fDc8OIw5TDoMOsw77D0MPcw+jD+sQLxBfEKcQ6xEzEXsRxxITElsSoxLTEwMTSxOPE9cUHxRnFKsU2xULFTsVaxWzFfcWJxZXFocWtxb/Fy8Xdxe7GAMYRxiPGNcZIxlvGbsaBxuLHUcdjx3XHh8eYx6vHvcfPx+HH88gFyBbILchEyFvIcsiVyLjIyMjfyPHJB8kYySvJPslKyVbJbcl/yZDJosm4ycnJ28nuygDKF8opyjvKTcpgynfKicqayq3Kv8rQyuLLSctby2zLfsuQy6HLssvDy9XMT8xgzHHMg8yVzKHMs8zFzNfM6cz0zQXNF80jzTTNQM1VzWHNc81/zZHNo821zcjN2s3mzffOCc4azibON85DzlTOYM5xzoLOlM6nzrrPJc83z0jPWs9sz37Pj8+az6bPss++z8rP1s/iz/3QBdAN0BXQHdAl0C3QNdA90EXQTdBV0F3QZdBt0IDQk9Cl0LfQydDa0O/Q99D/0QfRD9EX0SnRO9FN0V/RcdGJ0aDSFdId0jDSONJA0lfSbtJ20n7ShtKO0qDSqNKw0rjSwNLI0tDS2NLg0ujS8NMC0wrTEtNv03fTf9OS06nTsdO508zT1NPr1AHUGNQv1EbUXdR11I3UpNS71MPUy9TX1O7U9tUN1STVMNU81VPVatWB1ZjVoNWo1cDV2NXk1fDV/NYI1hTWINYo1jDWONZP1mbWbtaF1pzWtNbH1s/W19bp1vvXDtcW1ynXPNdP12LXdNeG15fXqte919DX49fr1/PYBtgZ2CzYP9hR2GLYddiH2J/Yt9jP2OHY/dkZ2SXZMdk52UXZUdld2WnZe9mN2aXZvNnU2evaA9oa2jLaSdpk2n7akdqk2rfaytrd2vDbA9sW2zHbTNtY22TbdtuI25rbq9vD29rb8twJ3CHcONxQ3Gfcgtyc3K7cwNzM3Njc5Nzw3QLdFN0s3UPdW91y3Yrdod253dDd694F3hzeM95K3mHeeN6P3qbevN7I3tTe4N7s3v7fEN8n3z7fVd9s34Pfmt+x38ff09/f3+vf9+AJ4BvgLeA+4L7gzuDa4Obg8uD+4QrhFuEi4S7hOuFG4VLhXuFq4XbhguGO4ZrhpuGu4hjihOLK4xDjb+PK4+XkAOQM5BjkJOQw5DzkSOST5OPlO+WV5Z3lqeWz5bvlw+XL5dPl2+Xj5frmEeYo5j/mV+Zv5ofmn+a35s/m5+b/5xfnL+dH51/na+d354Pnj+eb56fns+e/58vn4uf06ADoDOgY6CToMOg86EjoVOhr6ILojuia6Kbosui+6Mro4ej36QPpD+kb6SfpM+k/6UvpV+lj6W/pe+mH6ZPpn+mn6a/pt+m/6cfpz+nX6d/p5+nv6ffp/+oH6h/qNupN6mTqbOp06ozqlOqr6sHqyerR6tnq4er46wDrCOsQ6xjrIOso6zDrOOvD7B3sguyK7JbsrezD7Mvs1+zj7O/s+wAAAAUAZAAAAygFsAADAAYACQAMAA8AcbIMEBEREjmwDBCwANCwDBCwBtCwDBCwCdCwDBCwDdAAsABFWLACLxuxAhw+WbAARViwAC8bsQAQPlmyBAIAERI5sgUCABESObIHAgAREjmyCAIAERI5sQoM9LIMAgAREjmyDQIAERI5sAIQsQ4M9DAxISERIQMRAQERAQMhATUBIQMo/TwCxDb+7v66AQzkAgP+/gEC/f0FsPqkBQf9fQJ3+xECeP1eAl6IAl4AAgBD//IB9AWwAAMADgA/sgkPEBESObAJELAA0ACwAEVYsAIvG7ECHD5ZsABFWLANLxuxDRA+WbIHBQorWCHYG/RZsgEHAhESObABLzAxASMTMwE2Njc2FhUUBgYmATGkqb7+TwE6MC48PF47AZsEFfqqLz0CAjwuLzsEOgAAAgDIBBECpgYIAAQACQAZALADL7ICCgMREjmwAi+wB9CwAxCwCNAwMQEDBxMXFwMjExcBiVNuUIjvU25QiAVu/qQBAfcJkf6kAfYJAAIAUgAABPsFsAAbAB8AjwCwAEVYsAwvG7EMHD5ZsABFWLAQLxuxEBw+WbAARViwAi8bsQIQPlmwAEVYsBovG7EaED5Zsh0MAhESOXywHS8YsgADCitYIdgb9FmwBNCwHRCwBtCwHRCwC9CwCy+yCAMKK1gh2Bv0WbALELAO0LALELAS0LAIELAU0LAdELAW0LAAELAY0LAIELAe0DAxASMDIxMjNzMTIzchEzMDMxMzAzMHIwMzByMDIwMzEyMCw/qWkJXmGP+A+BgBEpiRmfuYkpnEGN6A2BjxlZI0+oH6AZr+ZgGaiQFiiwGg/mABoP5gi/6eif5mAiMBYgAAAQBK/zAEPAacACsAbbIfLC0REjkAsABFWLAJLxuxCRw+WbAARViwIi8bsSIQPlmyAiIJERI5sAkQsAzQsAkQsBDQsAkQshMBCitYIdgb9FmwAhCyGQEKK1gh2Bv0WbAiELAf0LAiELAm0LAiELIpAQorWCHYG/RZMDEBNiYmJyY3NjY3NzMHFhYHIzYmJyYGBwYWBBYWBwYGBwcjNyYmNzMGFhcWNgMhCmr9S5QOC9exJ5IolJEPswhnZHGTDAldARKOQQcN5b0ikSOkqAu1C3V2f6sBflaAYT15xKTXF9veHfHAk50DAoNvVnxtd5pjq9IUv8EY6rqDnAIChQAFALv/5gU4BcgADQAbACkANwA7AImyJTw9ERI5sCUQsAXQsCUQsBbQsCUQsCvQsCUQsDjQALA4L7A6L7AARViwAC8bsQAcPlmwAEVYsCMvG7EjED5ZsAAQsAfQsAcvshEECitYIdgb9FmwABCyGAQKK1gh2Bv0WbAjELAc0LAcL7AjELItBAorWCHYG/RZsBwQsjQECitYIdgb9FkwMQEWFgcHBgYnJiY3NzY2AwYWFxY2Nzc2JicmBgcBFhYHBwYGJyYmNzc2NgMGFhcWNjc3NiYnJgYHBScBFwINeY8IBg+1fXmSCAYNt0MFRUBEZQsJB0JDRWYLAtt8jggGDbWAeJMIBg2yPgVDQkZjCwkHQkNHZAv982MDcWMFxgSpgU2GqgQCrH5AkK3+gVFfAgJlUU5MZgICZlH9+gSrfkONrwQCqoFEi67+gVBhAgJmUU9LZgICZlD1SARoRwADADr/6QSHBcgAHAAlADEAmLIeMjMREjmwHhCwD9CwHhCwMNAAsABFWLAJLxuxCRw+WbAARViwGi8bsRoQPlmwAEVYsBcvG7EXED5ZsiAaCRESObIpCRoREjmyAyApERI5sg8pIBESObIQGgkREjmyEhoJERI5shgaCRESObIVEBgREjmwGhCyHQEKK1gh2Bv0WbIfHRAREjmwCRCyLwEKK1gh2Bv0WTAxEzY3NycmNzY2FxYWBwYHBxM2NzMGBxcjJwYnJiYFFjcBBwYHBhYTBhcXNzY3NiYjIgZHD89yK0gIDNikh7AICcyT+VsXoRuancpJrtG95gGphpb+8SuzEw9+cAg5G5lrCwZSRFNwAYC6kkxNhHGlyQQCq3+sj2L+g4eb/6z1cYgEAuFNA3QBqB58g2yOA9xUZS9nUGlAVHkAAQCqBCEBiQYAAAQAEACwAy+yAgUDERI5sAIvMDEBAyMTMwF2TIBNkgWK/pcB3wAAAQBt/ioDGAZsABIAELICExQREjkAsAQvsA0vMDETNhIANxcGAgIXFBIXByYCEzY3hSGzAQSgG53hegJrZS2nsQgCDAJL5wG2ATVPfHX+h/35/M/+xVtwdAHGASVgVwAAAf+P/ikCOAZrABIAELIHExQREjkAsAQvsAwvMDEBBgIABycAEzYnAic3FhISBwYHAiMjuP7/nBwBV3MuAgXLL3CbSQQDDAJJ9P5N/tVOcwECAjvm1QGtunBO/v3+qbhhVgABAGsCXwOKBbAADgAgALAARViwBC8bsQQcPlmwANAZsAAvGLAJ0BmwCS8YMDEBJTcFEzMDJRcFEwcDAycBgP7rRAEWM5ZGAS8T/sWTgIPecgPbWpBxAVz+qGyfW/7tWAEi/uhiAAABAEwAkgQ0BLYACwAaALAJL7AA0LAJELIGAQorWCHYG/RZsAPQMDEBIQchAyMTITchEzMCqgGKH/53ULZQ/nYfAYlKtgMNr/40AcyvAakAAAH/j/7dAOoA2wAHABcAsAgvsgQFCitYIdgb9FmwANCwAC8wMQMnNjc3MwcGCWh0HBqxFST+3UuPjZeH5AAAAQAZAh8CDwK2AAMAEQCwAi+yAQEKK1gh2Bv0WTAxASE3IQH0/iUbAdsCH5cAAAEANf/yARUA0wAIACKyAwkKERI5ALAARViwBS8bsQUQPlmyAAUKK1gh2Bv0WTAxNzYWDgImNDakMUACQGA+PtIBPmI9BDtiQQAAAf+P/4MDkgWwAAMAEwCwAC+wAEVYsAIvG7ECHD5ZMDEXIwEzM6QDYKN9Bi0AAAIAaP/nBCsFyQARACEARrIXIiMREjmwFxCwCNAAsABFWLAJLxuxCRw+WbAARViwAC8bsQAQPlmwCRCyFgEKK1gh2Bv0WbAAELIeAQorWCHYG/RZMDEFJiY3Njc3EgAXFhYHBgcHAgATNicmJyYGBwMGFxIXFjY3Adi4uAgCCSQwAQ7durcHAwkjNf70tQ4BBcCMrSIrDgEFv4WtJRQE/e5KSPMBNwEyBQT360tI6/63/tADhXlD/gcF2ej+3nRJ/vcHBtDiAAEA+QAAA1QFtwAGADkAsABFWLAFLxuxBRw+WbAARViwAC8bsQAQPlmyBAAFERI5sAQvsgMBCitYIdgb9FmyAgMFERI5MDEhIxMFNyUzAly21v59HwIcIATMiLDDAAABABcAAAQrBccAGQBUsgMaGxESOQCwAEVYsBEvG7ERHD5ZsABFWLAALxuxABA+WbIZAQorWCHYG/RZsALQsgMRGRESObARELIJAQorWCHYG/RZsBEQsAzQshcZERESOTAxISE3ATc2NzYmJyYGBwc+AhcWFgcGBwcBIQO2/GEWAhliqRINcGaDsBOzDYvjhbXVDxHMXP4sAr+NAgphqY9uiwQEoYwBhs9vAwTTqMDUXf5DAAABADT/6AQhBccAKAB/sggpKhESOQCwAEVYsA4vG7EOHD5ZsABFWLAaLxuxGhA+WbIAGg4REjmwAC+yzwABXbKfAAFxsi8AAV2yXwABcrAOELIHAQorWCHYG/RZsA4QsArQsAAQsigBCitYIdgb9FmyFCgAERI5sBoQsB3QsBoQsiEBCitYIdgb9FkwMQEXMjY3NiYnJgYHBzYkFxYWBwYGBxYWBwYEJyYmNxcGFhcWNjc2JicnAaB4hLUNDXBrcp8SsxEBEb230Q4JjHxjYggQ/ufJu94ItQZ4coCqDAuCgYsDMgGLd3SFAgKJdAG04QIE3bVnqjgorXTF8AQE4LEBcIkEBJqBd4UEAQAAAgAFAAAEHQWwAAoADgBJALAARViwCS8bsQkcPlmwAEVYsAQvG7EEED5ZsgEJBBESObABL7ICAQorWCHYG/RZsAbQsAEQsAvQsggGCxESObINCQQREjkwMQEzByMDIxMhNwEzASETBwNZxBvDO7Y7/XwVAyDG/PMBsIIdAemX/q4BUncD5/w5AswqAAABAHL/5wRqBbAAHQBoshseHxESOQCwAEVYsAEvG7EBHD5ZsABFWLANLxuxDRA+WbABELIDAQorWCHYG/RZsgcBDRESObAHL7IaAQorWCHYG/RZsgUHGhESObANELAR0LANELIUAQorWCHYG/RZsBoQsB3QMDETEyEHIQM2FxYSBwYAJyYmJzMWFhcWNjc2JicmBgfbuQLWG/3GcG6AtcISE/7o0a7WBqkHemiArxAOenZJcTgC3QLTq/5yQQIC/vPQ4P7wBALct3iEAgS+moevBAIwLQAAAgBw/+YD+AWyABYAJgBishgnKBESObAYELAO0ACwAEVYsAAvG7EAHD5ZsABFWLAOLxuxDhA+WbAAELIBAQorWCHYG/RZsgcADhESObAHL7IFBw4REjmyFwEKK1gh2Bv0WbAOELIgAQorWCHYG/RZMDEBByMGBAc2Fx4CBwYAJyYmJyY3EgAhASYGDwIUFhYXFjY3NiYmA7sQI8j+5E6ItnOkTQwU/uvKotAPCCFFAZcBOv7GYaouBwIyYkJ5rREKKmEFsp0E8OqIBAJ72YPd/uEGBObBabMBdQGK/XACdFpDUVKaUAEFvptallcAAAEAnQAABIwFsAAGADIAsABFWLAFLxuxBRw+WbAARViwAS8bsQEQPlmwBRCyAwEKK1gh2Bv0WbIAAwUREjkwMQEBIwEhNyEEevzpxgMT/QgYA7wFPvrCBRiYAAMAQf/oBDYFyAAXACMALwBvshswMRESObAbELAU0LAbELAo0ACwAEVYsBUvG7EVHD5ZsABFWLAJLxuxCRA+WbItFQkREjmwLS+yGwEKK1gh2Bv0WbIDLRsREjmyDxstERI5sAkQsiEBCitYIdgb9FmwFRCyJwEKK1gh2Bv0WTAxAQYGBxYWBwYEJyYmNzY2NyYmNzYkFxYWATYmJyYGBwYWFxY2EzYmJyYGBwYWFxY2BCgJiXZeWwgP/uLKvdwPC5qFTksIDgEGv67M/ugMeHJ8sA4MeW9+sGILaWFwmg0La2FtmwQ9ba85NrVrwekEBOKvfbs6NqReueQEBNr8sHGXBAKhf3SMAgSbAyFligQCk3RohgICkQACAJT//gQTBcgAGAAoAGWyEikqERI5sBIQsBnQALAARViwCy8bsQscPlmwAEVYsBMvG7ETED5ZsgMTCxESObADL7IAAwsREjmwExCyFQEKK1gh2Bv0WbADELIZAQorWCHYG/RZsAsQsiEBCitYIdgb9FkwMQEGBicuAjc+AhcWFhcWBwIABSM3MzYkJxY2PwImJicmBgcGFhcWAzdKplJzo0sMDYjbhK7GCAMcQv57/s8tECXXARPWW6g2CAMEa2R8rw4HEhs2AoBOTQICftyCkPCDBAT0zWuf/or+hQacBOn5BG9eSVGbqAQFyZc9fjBh//8AK//yAaQERgAmABL2AAEHABIAjwNzABAAsABFWLAJLxuxCRg+WTAx////m/7dAY0ERgAnABIAeANzAQYAEAwAABAAsABFWLAALxuxABg+WTAxAAEAQQDIA7gETwAGABYAsABFWLAFLxuxBRg+WbAC0LACLzAxAQUHATcBBwEHAjUh/SYaA10kAoD9uwF7kgF6zQACAHABjwP/A88AAwAHACUAsAcvsAPQsAMvsgABCitYIdgb9FmwBxCyBAEKK1gh2Bv0WTAxASE3IQMhNyED4vzWHAMrZfzWHAMrAy6h/cCgAAEAOgC/A9QERwAGABYAsABFWLACLxuxAhg+WbAF0LAFLzAxAQE3AQcBNwMN/aohAvwa/IAkAo4BA7b+hZH+hMkAAAIApf/yA78FxwAYACQAXbIeJSYREjmwHhCwCtAAsABFWLAQLxuxEBw+WbAARViwIi8bsSIQPlmyHAUKK1gh2Bv0WbAA0LAAL7IEEAAREjmwEBCyCQEKK1gh2Bv0WbAQELAM0LIVABAREjkwMQE2Njc3Njc2JicmBgcHNjYXFhYHBgcHBgcDNjY3NhYHFAYHBiYBQQ1gbFF9EAxWW2aDEbQT9bGouQ4Ru3piF/gBOjAuPQE8Ly87AZlzsGBHb3pedgQCcVkBpccCBMyltqhoWZf+wC89AgE7Ly48AQI6AAIARP47BpsFmgA3AEQAh7JCRUYREjmwQhCwC9AAsCcvsDAvsABFWLAFLxuxBRA+WbAARViwAC8bsQAQPlmyAzAAERI5sgwwABESObAML7AAELITAgorWCHYG/RZsDAQshoCCitYIdgb9FmwJxCyIgIKK1gh2Bv0WbAFELI6AgorWCHYG/RZsAwQskECCitYIdgb9FkwMQUmJicGJyYmNzYSNhcWFwMGFQYXFhITNgImJyYEAgMGEhYXFjcXBiMmJAI1JhIAJBcWBBIVFAIGAQYXFj8CEyYnJgIHBK9ZbQ2Ij3RwDAqY3IKLhYUKBWGTtgsHauep3f6G9QwIbuCiqaobi+W//uaaAp8BGwFpyMIBF5OD3f1OBXVrXSABhTQ3i8EiFAJZTawDAracoQFPsQIDZv3SQhuHAwYBVgEOtAESjAME/v4a/um1/uSRAQRSdVcBpwFB0tkBwwFXsQMDqP6+zOH+oLUBPqsDBZU1CwH6HAEF/ujtAAAC/68AAASLBbAABwAKAEYAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmwAEVYsAYvG7EGED5ZsgkEAhESObAJL7IAAQorWCHYG/RZsgoEAhESOTAxASEDIwEzASMBIQMDjf2yx8kDF6UBILn9wAHfeQF8/oQFsPpQAhoCpwADADsAAASgBbAADQAWAB8AaLIYICEREjmwGBCwDdCwGBCwENAAsABFWLACLxuxAhw+WbAARViwAC8bsQAQPlmyGAIAERI5sBgvshYBCitYIdgb9FmyBxYYERI5sAAQshABCitYIdgb9FmwAhCyHgEKK1gh2Bv0WTAxMxMFMhYHBgcWFgcGBCMDAwUyNjc2JiclBTI2NzYmJyU7/QGr394OEvViYQkP/uLjyFsBKYi4Dw5udv7UAQ9/rw8NbX7+4gWwAciz0WomuG/F5wKp/fQBknx2hASbAYJyamwFAQABAHT/5gT5BckAHwBOshUgIRESOQCwAEVYsA0vG7ENHD5ZsABFWLADLxuxAxA+WbIADQMREjmyEAMNERI5sA0QshQBCitYIdgb9FmwAxCyHAEKK1gh2Bv0WTAxAQYAJy4CJyY3NxIABRYSFyMCJycmAg8CBhYXFjY3BJEq/rvjh8pwBgQLES8BbwEHzfAHuw3jIb39JRYGBo+NmMc0AdDi/vgGA3/vkVJOeAFIAXsFBP7/5AEyGAIF/t38l1i42QQFnK0AAgA7AAAE1QWwAAoAFQBDsg4WFxESObAOELAC0ACwAEVYsAIvG7ECHD5ZsABFWLAALxuxABA+WbINAQorWCHYG/RZsAIQshUBCitYIdgb9FkwMTMTBTIEEgcHAgAhEwMXMgA3NicmJic7/QF6sgEBcBcKLP5q/s0ZxrnUAScsIwsPsJQFsAGy/sfCSf7C/oUFEvuLAQEI5riBm68EAAABADsAAASxBbAACwBOALAARViwBi8bsQYcPlmwAEVYsAQvG7EEED5ZsgsEBhESObALL7IAAQorWCHYG/RZsAQQsgIBCitYIdgb9FmwBhCyCAEKK1gh2Bv0WTAxASEDIQchEyEHIQMhA9D9nFoCyBz8ff0DeRz9Q1ECZAKh/fydBbCe/iwAAAEAOwAABKQFsAAJAEAAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmyCQIEERI5sAkvsgABCitYIdgb9FmwBBCyBgEKK1gh2Bv0WTAxASEDIxMhByEDIQO3/bBwvP0DbBz9UFYCUQKD/X0FsJ7+DgABAHn/6gUGBccAIQBcsh8iIxESOQCwAEVYsAwvG7EMHD5ZsABFWLADLxuxAxA+WbIQDAMREjmwDBCyEwEKK1gh2Bv0WbADELIbAQorWCHYG/RZsiEMAxESObAhL7IeAQorWCHYG/RZMDElBgQnLgInJhISJBcWFhcjJiYnJgIDBwcUFhcWNxMhNyEEe0n+6bOP1noJB0m2ARGwy/ERuguQf7z9KBMDopLTfDz+uBwCAMBnbwIDgO+YdwGWASicAwTp04qUBAf+5P7vjEzF1wIFbQFHnAAAAQA7AAAFdwWwAAsAVQCwAEVYsAYvG7EGHD5ZsABFWLAKLxuxChw+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsAAQsAnQsAkvsp8JAXKyLwkBXbICAQorWCHYG/RZMDEhIxMhAyMTMwMhEzMEerx1/Tl1vP28bQLGbb0Cof1fBbD9jgJyAAEASQAAAgEFsAADAB0AsABFWLACLxuxAhw+WbAARViwAC8bsQAQPlkwMSEjEzMBBLv9uwWwAAEACv/mBEoFsAAPAC4AsABFWLAALxuxABw+WbAARViwBS8bsQUQPlmwCdCwBRCyDAEKK1gh2Bv0WTAxATMDBgQnJiY3MwYWFxY2NwOOvK8d/uzOwNIMuwtwcHuqEwWw+/nO9QQE4MR4jwIEooEAAQA7AAAFUAWwAAsAdACwAEVYsAUvG7EFHD5ZsABFWLAHLxuxBxw+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsgACBRESOUARSgBaAGoAegCKAJoAqgC6AAhdsjkAAV2yBgUCERI5QBM2BkYGVgZmBnYGhgaWBqYGtgYJXTAxAQcDIxMzAwEzAQEjAiDVVLz9vHwC5vL9WwHF0QKjv/4cBbD9OwLF/XT83AAAAQA7AAADsQWwAAUAKACwAEVYsAQvG7EEHD5ZsABFWLACLxuxAhA+WbIAAQorWCHYG/RZMDElIQchEzMBEwKeHPym/b2dnQWwAAABADsAAAa3BbAADgBZALAARViwAC8bsQAcPlmwAEVYsAIvG7ECHD5ZsABFWLAELxuxBBA+WbAARViwCC8bsQgQPlmwAEVYsAwvG7EMED5ZsgEABBESObIHAAQREjmyCgAEERI5MDEBEwEzAyMTEwEjAQMDIxMCJf8CnPf9u2R3/WyQ/vxaYbz9BbD7XgSi+lACQAJK+3YEof2M/dMFsAAAAQA7AAAFdwWwAAkATLIBCgsREjkAsABFWLAFLxuxBRw+WbAARViwCC8bsQgcPlmwAEVYsAAvG7EAED5ZsABFWLADLxuxAxA+WbICBQAREjmyBwUAERI5MDEhIwEDIxMzARMzBHq2/fjEvf22AgnFuwRq+5YFsPuRBG8AAAIAd//nBQ0FyAASACIARrIXIyQREjmwFxCwCdAAsABFWLAKLxuxChw+WbAARViwAC8bsQAQPlmwChCyFgEKK1gh2Bv0WbAAELIeAQorWCHYG/RZMDEFLgInJhISNzYXFhIXFgICBwYBNiYnJgYCBwcGFhcWEhM2AlGLzXYGBkKidJ3J1fYJBDODZbABDgaWlIbThxIDBpiRvfkpFBQDgPmbeQFkAR5WdAQE/uH1af68/upepAOXxdkEBJj+0ehBxN4EBQEbAQB+AAACADsAAATzBbAACgATAE2yChQVERI5sAoQsAzQALAARViwAy8bsQMcPlmwAEVYsAEvG7EBED5ZsgsDARESObALL7IAAQorWCHYG/RZsAMQshIBCitYIdgb9FkwMQEDIxMFMhYHBgQjJQUyNjc2JiclAVpjvP0B5uH0ERL+1/P+wQFEmcQREIaA/qcCOv3GBbAB78bR8J4Bmol7mQQBAAIAb/8KBQQFyAAXACgARrIcKSoREjmwHBCwBNAAsABFWLAPLxuxDxw+WbAARViwBS8bsQUQPlmwDxCyGwEKK1gh2Bv0WbAFELIkAQorWCHYG/RZMDElFwcnBiMuAicmEhI3NhceAhcWBwcCAzYmJyYGAgcHBhYWFxYSNzYDi9mL/kpKidBzBgZBnnCgzo3QcgYDCgw+aQeYkobThxIDBD6HYrj7KhVM0XHzEAGD95x+AV0BGVZ6BAOC95xUU1X+UQJ9yNYEBJj+0ehBc8hoAwcBGP9/AAACADoAAATCBbAADgAXAGGyBRgZERI5sAUQsBbQALAARViwBC8bsQQcPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbIQBAIREjmwEC+yAAEKK1gh2Bv0WbILAAQREjmwBBCyFgEKK1gh2Bv0WTAxASEDIxMFFhYHBgYHEwcjAQUyNjc2JiclAq3+sGa9/QG25fATC7GT4gHI/f8BFJDGEQ+Chf7dAk39swWwAQHmxonQNf2ZDQLqAZmAfY4EAQABACf/6QSjBccAKABhshMpKhESOQCwAEVYsAovG7EKHD5ZsABFWLAfLxuxHxA+WbICHwoREjmwChCwD9CwChCyEgEKK1gh2Bv0WbACELIYAQorWCHYG/RZsB8QsCTQsB8QsiYBCitYIdgb9FkwMQE2LwIkNz4CFx4CByc2JicmBgcGHwIEAw4CJy4CNxcGFgQ2A20WvK06/twTCpLxiITPbAa9CoyCibgOFMuVSwEaFQuQ946J43YHvAmfASK8AXegSj8ZhfF5umUDA3DJfgGGkwIChHKVTTUggv8Ae7NiAwFzyH8BgpkEggABAKgAAAUJBbAABwAuALAARViwBi8bsQYcPlmwAEVYsAIvG7ECED5ZsAYQsgABCitYIdgb9FmwBNAwMQEhAyMTITchBO3+O+G74f47HARFBRL67gUSngAAAQBn/+cFIAWwABIAPLIPExQREjkAsABFWLAKLxuxChw+WbAARViwEi8bsRIcPlmwAEVYsAQvG7EEED5Zsg4BCitYIdgb9FkwMQEDBgAnLgI3EzMDBhYXFjY3EwUgqCL+vOWP02QRqLmnEYqMmNEbqAWw/Cfj/vMEA3vfjgPa/CWZrwQGsaAD3AAAAQCkAAAFYQWwAAYAOLIABwgREjkAsABFWLABLxuxARw+WbAARViwBS8bsQUcPlmwAEVYsAMvG7EDED5ZsgABAxESOTAxAQEzASMBMwI+Ak/U/RCm/tnFAQEEr/pQBbAAAQDDAAAHQQWwABIAWQCwAEVYsAMvG7EDHD5ZsABFWLAILxuxCBw+WbAARViwES8bsREcPlmwAEVYsAovG7EKED5ZsABFWLAPLxuxDxA+WbIBAwoREjmyBgMKERI5sg0DChESOTAxAQc3ATMTFzcBMwEjAycHASMDMwG+BEQBs59zCj8BdMH9xqt+BCr+MKtytwHBsKwD8/wApskD3fpQBC1kdPvjBbAAAf/UAAAFKwWwAAsAawCwAEVYsAEvG7EBHD5ZsABFWLAKLxuxChw+WbAARViwBC8bsQQQPlmwAEVYsAcvG7EHED5ZsgABBBESOUAJhgCWAKYAtgAEXbIGAQQREjlACYkGmQapBrkGBF2yAwAGERI5sgkGABESOTAxAQEzAQEjAQEjAQEzApoBqej9yQFT0/7+/kroAkP+ttADgwIt/SX9KwI3/ckC5wLJAAABAKgAAAUyBbAACAAxALAARViwAS8bsQEcPlmwAEVYsAcvG7EHHD5ZsABFWLAELxuxBBA+WbIAAQQREjkwMQEBMwEDIxMBMwJjAe/g/XNdu2D+u8wC1gLa/GX96wIqA4YAAAH/6wAABM4FsAAJAEQAsABFWLAHLxuxBxw+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WbIEAAIREjmwBxCyBQEKK1gh2Bv0WbIJBQcREjkwMTchByE3ASE3IQfqAyIc+/sbA8b9DBwD2hqdnZoEeJ6XAAH///7IAqMGgAAHACIAsAQvsAcvsgABCitYIdgb9FmwBBCyAwEKK1gh2Bv0WTAxASMBMwchASECirn++7oY/pEBNAFwBej5eJgHuAABAL//gwKeBbAAAwATALACL7AARViwAC8bsQAcPlkwMRMzASO/pAE7owWw+dMAAf96/sgCHwaAAAcAJQCwAi+wAS+wAhCyBQEKK1gh2Bv0WbABELIGAQorWCHYG/RZMDETIQEhNzMBI68BcP7L/pAYuwEFvAaA+EiYBogAAQBPAtkDDwWwAAYAJ7IABwgREjkAsABFWLADLxuxAxw+WbAA0LIBBwMREjmwAS+wBdAwMQEBIwEzEyMCDP70sQGhfKOeBLn+IALX/SkAAf+B/2kDFgAAAAMAGwCwAEVYsAMvG7EDED5ZsgABCitYIdgb9FkwMQUhNyEC+/yGGwN6l5cAAQDPBNgCKwX+AAMAIwCwAS+yDwEBXbAA0BmwAC8YsAEQsALQsAIvtA8CHwICXTAxASMDMwIrj83NBNgBJgACADP/6APPBFEAIAArAHmyBCwtERI5sAQQsCLQALAARViwGC8bsRgYPlmwAEVYsAUvG7EFED5ZsABFWLAALxuxABA+WbIDGAUREjmyCxgFERI5sAsvsBgQshABCitYIdgb9FmyEwsYERI5sAUQsiEBCitYIdgb9FmwCxCyJgEKK1gh2Bv0WTAxISY1NwYnJiY3NiQzFzc2JicmBgcHPgIXFhYHAwcGFwclFjY3NyciBgcGFgK1BwOVp4+zCAoBGeW9DApfX12PELYJgsxtqbwPWAUCDgL+LFebOCeJq7YMCVkdHDmKBAKxhazBAVZhcQICX04BX5NRAgTFo/3oTTc2EYwCV03fAWxjTGUAAgAf/+gD/gYAABIAHgBkshwfIBESObAcELAE0ACwCS+wAEVYsA0vG7ENGD5ZsABFWLAELxuxBBA+WbAARViwBy8bsQcQPlmyBg0EERI5sgsNBBESObANELIWAQorWCHYG/RZsAQQshsBCitYIdgb9FkwMQEGAgYnJicHIwEzAzYXFhYXFgcnNiYnJgcDFhcWNjYD9RSOynvEXyWnAQu1bYK6nK4FAQeuA2hrqXVRPKVqn1ICGKb+9oADBI9+BgD9wpAEBN7DQDxUkpsEBK7+KaUEBIbxAAEARv/pA+YEUgAgAEuyACEiERI5ALAARViwES8bsREYPlmwAEVYsAgvG7EIED5ZsgABCitYIdgb9FmyBBEIERI5shQRCBESObARELIYAQorWCHYG/RZMDElFjY3Nw4CJy4CNzc+AhcWFhUnJiYnJgYHBwYXFhYB6GGcGKsPhcpqh7tYDgUTkOiMqsypAnJhjbsXAwYEB3aCAnVfAWaoXgMCifWZMpz2iQQE3KkBaoMEA9jCGkBEdYgAAAIAS//oBHUGAAARAB0AZLIEHh8REjmwBBCwGtAAsAcvsABFWLAELxuxBBg+WbAARViwDS8bsQ0QPlmwAEVYsAovG7EKED5ZsgYEDRESObILBA0REjmwDRCyFQEKK1gh2Bv0WbAEELIaAQorWCHYG/RZMDETNhI2FxYXEzMBIzcGJyYmJyYXBhYXFjcTJicmBgZTFI7QfbVhaLX+9qUTgLyWsgcDtgNsaJ16Vjyea6NVAh+lAQqEAwSAAjX6AHSMBATjvzsWj54CB6UB9JQEA4fzAAIARf/qA+AEUQAXAB8AabISICEREjmwEhCwGdAAsABFWLAILxuxCBg+WbAARViwAC8bsQAQPlmyHAgAERI5sBwvtL8czxwCXbIOAQorWCHYG/RZsAAQshIBCitYIdgb9FmyFAgAERI5sAgQshgBCitYIdgb9FkwMQUmAjc3NhI2FxYWFxYHByEGFhcWNxcGBgMmBgcFNzYmAfPK5BIFEZ3ig6e+CQMHC/09EoWEoIhoRNcRcKcxAg4EEHEUBAEi4iuhAQqHAwTWt0FBU5POBASUWGJvA80DnpwBEH6nAAEAdAAAA1AGGQAWAGOyBhcYERI5ALAARViwCS8bsQkePlmwAEVYsAMvG7EDGD5ZsABFWLASLxuxEhg+WbAARViwAC8bsQAQPlmwAxCyAQEKK1gh2Bv0WbAJELIOAQorWCHYG/RZsAEQsBTQsBXQMDEzEyM3Mzc2NzYXMhcHJiciBgcHMwcjA3ekpxmmEhpkaaMzThYwMV51DhDgGeCjA6uPgKNcYAIRlwoCdWFrj/xVAAACAAT+TwQoBFIAHQApAIOyCyorERI5sAsQsCbQALAARViwBC8bsQQYPlmwAEVYsAcvG7EHGD5ZsABFWLAMLxuxDBI+WbAARViwGC8bsRgQPlmyBgQYERI5shAYDBESObAMELISAQorWCHYG/RZshYEGBESObAYELIhAQorWCHYG/RZsAQQsiYBCitYIdgb9FkwMRM2EjYXFhc3MwMGBCcmJic3FhcWNjc3BicuAicmFwYWFxY3EyYnJgYHVBiPzXq8YCSmtB3+6sxuyTpnYqGBsx0UhLFllVIEArcDaWqidVU8nZO9EQIfsQEFfQMEinn73c/5BgJkV2+RBASYjGCEBANnw3g7FI+dBASjAfGUBgT40wABAB8AAAPjBgAAEgBJsgETFBESOQCwEi+wAEVYsAIvG7ECGD5ZsABFWLAPLxuxDxA+WbAARViwBy8bsQcQPlmyAAIPERI5sAIQsgwBCitYIdgb9FkwMQE2FxYWBwMjEzYnJicmBwMjATMBcY65mJMTdrV3BgURlKZ4hrUBC7UDtpsEAs25/TsCyDEqjAMEsvz8BgAAAgAvAAAB4wXHAAMADQAxALAARViwAi8bsQIYPlmwAEVYsAEvG7EBED5ZsAIQsArQsAovsgQFCitYIdgb9FkwMTMjEzMDNhYVDgImNjbjtLy0Jy49ATtePAI6BDoBiwI7MC88BDpePgAC/xT+RgHVBccADAAYADwAsABFWLAMLxuxDBg+WbAARViwBC8bsQQSPlmyCQEKK1gh2Bv0WbAMELAX0LAXL7IQBQorWCHYG/RZMDEBAwYGJyYnNxYXMjcTEzY2NzYWFQYGBwYmAZbNFKWFNUIQJS6BGs8fATkwLj0BPC8tPAQ6+0WZoAICEpQJApoEuwEcLz4CAj0uLzwCAjwAAQAgAAAEGgYAAAwAdQCwAEVYsAQvG7EEHj5ZsABFWLAILxuxCBg+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsgAIAhESOUAVOgBKAFoAagB6AIoAmgCqALoAygAKXbIGCAIREjlAFTYGRgZWBmYGdgaGBpYGpga2BsYGCl0wMQEHAyMBMwM3ATMBASMBo45AtQELtaBvAYDr/g8BVsYB83/+jAYA/GpwAWD+M/2TAAEALwAAAe4GAAADAB0AsABFWLACLxuxAh4+WbAARViwAC8bsQAQPlkwMTMjATPjtAEKtQYAAAEAHgAABmoEUgAgAHeyFiEiERI5ALAARViwAy8bsQMYPlmwAEVYsAgvG7EIGD5ZsABFWLAALxuxABg+WbAARViwFy8bsRcQPlmwAEVYsA0vG7ENED5ZsABFWLAeLxuxHhA+WbIBHgMREjmyBgMXERI5sAMQshsBCitYIdgb9FmwEtAwMQEHNhcWFhc2FxYWBwMjEzYnJicmBgcDIxM2JicmBwMjEwGEF4jBZ48bmM+imhR3tHYGBhOfY6EXe7Z4DV1iqWSJtbwEO3mQBAJaUrIEBNKx/TkCyTQriAMCf2f9MQLIb3gCBJ786QQ6AAABAB8AAAPjBFIAEgBTsgITFBESOQCwAEVYsAMvG7EDGD5ZsABFWLAALxuxABg+WbAARViwEC8bsRAQPlmwAEVYsAgvG7EIED5ZsgEDEBESObADELINAQorWCHYG/RZMDEBBzYXFhYHAyMTNicmJyYHAyMTAYYakrqZkhN2tXcGBRGUo3uGtbwEO4mgBATMuf07AsgxKowDA7H8/AQ6AAIARf/oBB8EUgAQACIAQ7IXIyQREjmwFxCwCNAAsABFWLAALxuxABg+WbAARViwCS8bsQkQPlmyFgEKK1gh2Bv0WbAAELIfAQorWCHYG/RZMDEBHgIHBw4CJy4CNzYSNgMGFxYWFxY2Njc2JyYmJyYGBwJ4iMJdDwITlu6Oh8NaDQ+Y7+AHBwp5ZVqYaA8IBQx6ZYzEFwROApD9lhae/44EApD4lagBDJP9uD9EdowDA1/AdVw/eYwEA+K3AAAC/9f+YAP8BFIAEgAeAGeyBB8gERI5sAQQsB3QALAARViwDS8bsQ0YPlmwAEVYsAovG7EKGD5ZsABFWLAHLxuxBxI+WbAARViwBC8bsQQQPlmyCw0HERI5sA0QshcBCitYIdgb9FmwBBCyHAEKK1gh2Bv0WTAxAQYCBicmJwMjATcHNhcWFhcWByM3NCYnJgcDFhcWNgPzFIrMfLxkYbUBBKQUhrucrgUBBrUFb2mdcls9noe9Ahil/viDAwR7/fYF2gF5kAQE3sNAPFSSmwQEmf35kAQD2QACAEn+YAQoBFIAEAAcAGiyAB0eERI5sBrQALAARViwAC8bsQAYPlmwAEVYsAMvG7EDGD5ZsABFWLAFLxuxBRI+WbAARViwCS8bsQkQPlmyAgAJERI5sgcACRESObIVAQorWCHYG/RZsAAQshoBCitYIdgb9FkwMQEWFzczASMTBicmJicmEjY2AwcGFhcWNxMmJyYGAkm3YCGn/vy0YoKsmLYHBkaLvs8FA29omXZeQpaJvARPBH9u+iYCBHwEAuLAfAETzWb9uFSRoQIElgIUiwQD2AAAAQAfAAAC1ARUAAwARrIDDQ4REjkAsABFWLAKLxuxChg+WbAARViwBy8bsQcYPlmwAEVYsAQvG7EEED5ZsAoQsgEOCitYIdgb9FmyCAoBERI5MDEBJyIHAyMTNwc2FzIXAsBVrmSFtbyvG3OcITUDlQmd/P8EOgF+lwQPAAEALv/pA7YEUAAmAGOyFicoERI5ALAARViwCC8bsQgYPlmwAEVYsB0vG7EdED5ZsgMdCBESObILCB0REjmwCBCyDwEKK1gh2Bv0WbADELIVAQorWCHYG/RZsiAIHRESObAdELIkAQorWCHYG/RZMDEBNicnJjc2NhcWFgcnNiYnJgcGBwYXFxYWBw4CJyYmNxcUFjMWNgK9D4q87ggH96ekzQS0AmpYXkQ/Cg2AW7qcBgZ4yHGs4AS1dGVjkAElcC43Ur6PtwICu5YBUWYCAjAtSV4rGTCacmWWTwMCxZsBW24CVwAAAQBD/+0ClAVAABYAX7IWFxgREjkAsABFWLABLxuxARg+WbAARViwFC8bsRQYPlmwAEVYsA4vG7EOED5ZsAEQsADQsAAvsAEQsgMBCitYIdgb9FmwDhCyCQEKK1gh2Bv0WbADELAS0LAT0DAxAQMzByMDBhcWMzI3BwYjJiY3EyM3MxMB/S7FGcRxAwIHTiE3DkFDbGwMbr8Zvy4FQP76j/1fGhZOCpcSApuDAp6PAQYAAAEAW//oBB4EOgATAEyyARQVERI5ALAARViwBi8bsQYYPlmwAEVYsBAvG7EQGD5ZsABFWLACLxuxAhA+WbAARViwEy8bsRMQPlmwAhCyDQEKK1gh2Bv0WTAxJQYnJiY3EzMDBhcWFhcWNxMzAyMCzn/Em5UTdLV1BQMFTETCaoi1vKtrgwQE1rkCu/1CLCpIUgMGowMU+8YAAQBuAAAD7QQ6AAYAOLIABwgREjkAsABFWLABLxuxARg+WbAARViwBS8bsQUYPlmwAEVYsAMvG7EDED5ZsgAFAxESOTAxJQEzASMDMwGoAYa//d+K1LL9Az37xgQ6AAEAgAAABf4EOgAMAGCyBQ0OERI5ALAARViwAS8bsQEYPlmwAEVYsAgvG7EIGD5ZsABFWLALLxuxCxg+WbAARViwAy8bsQMQPlmwAEVYsAYvG7EGED5ZsgALAxESObIFCwMREjmyCgsDERI5MDEBATMBIwMBIwMzEwEzA+oBWbv+E5Nw/nqTda1CAYCSAQADOvvGAzL8zgQ6/NoDJgAAAf/EAAAD9AQ6AAsAUwCwAEVYsAEvG7EBGD5ZsABFWLAKLxuxChg+WbAARViwBC8bsQQQPlmwAEVYsAcvG7EHED5ZsgAKBBESObIGCgQREjmyAwAGERI5sgkGABESOTAxAQEzAQEjAwEjAQEzAfABJt7+TgEIxbP+z90Bv/8AxgKwAYr94P3mAZT+bAIsAg4AAf+l/kUD7AQ6AA8AP7IAEBEREjkAsABFWLAPLxuxDxg+WbAARViwBS8bsQUSPlmyAAUPERI5sA8QsAHQsAUQsgkBCitYIdgb9FkwMQEBMwECJyYnNxcWNjc3AzMBowGByP1+htIlSBAvVn0wQbu9AREDKfsS/vkDARGWBQRVX3wEIwAAAf/tAAADzgQ6AAkARACwAEVYsAcvG7EHGD5ZsABFWLACLxuxAhA+WbIAAQorWCHYG/RZsgQAAhESObAHELIFAQorWCHYG/RZsgkFBxESOTAxNyEHITcBITchB+oCYBv8vhkCxf3LHAMcGJeXkQMQmYwAAQA4/pMDFQY/AB0ALrIMHh8REjkAsAAvsA4vsgkADhESOXywCS8YsggDCitYIdgb9FmyFAgJERI5MDEBJiY3NzYnJic3Njc3EiUXBgMHBgcWFxYPAhcWFwHenpQTHAYFEZMQ2SAfOwFfG9QtIiGyZwoDBB8CAhGG/pM176zPMSqICJEK6+QBU2V1Rv718MheTY4sK/NHH581AAEAIf7yAcEFsAADABMAsAAvsABFWLACLxuxAhw+WTAxEyMBM7OSAQ6S/vIGvgAB/4z+kAJqBjsAHAAushkdHhESOQCwDi+wHC+yFhwOERI5fLAWLxiyFwMKK1gh2Bv0WbIFFxYREjkwMQc2Ezc2NyYnJj8CJic3FhYHBwYXFhcHBgcHAgV02SsfH8NxDQQFHwIDlS2ckBMbBgUQkw/aIBwz/pb7RwER4tBdRZMqLfZHuDpxNe+r0DIphwiRCu7P/p5oAAABAGkBjgTdAycAFwA4shEYGRESOQCwDy+wANCwDxCwFNCwFC+yAwEKK1gh2Bv0WbAPELIIAQorWCHYG/RZsAMQsAzQMDEBBgYnJicnJiMmDwI2NhcWFxcWMzI2NwTdDsOMfns8SEKILAicEMONd2xZRD9LaRIDCqPZAgNwOkMDpyUDotEEA11TPW5mAAL/8f6YAaEETwADAA4AJACwAy+wAEVYsAwvG7EMGD5ZsgcFCitYIdgb9FmwAdCwAS8wMRMzAyMBFAYGJjU2Njc2FrOlqb4BrzpgOwE7Ly49Aqz77AVPLz4EPi0wOwIBOgAAAQBS/wsD8wUmACIAUrIHIyQREjkAsABFWLASLxuxEhg+WbAARViwBy8bsQcQPlmyAAMKK1gh2Bv0WbAHELAD0LAHELAK0LASELAV0LAZ0LAVELIcAworWCHYG/RZMDElFjY3NwYGBwcjNyYmJyYSNjY3NzMHFhYVIzQmJyYCBwcGFgHpYZ0brBXRoC61L3eRDgwsebp3LbUtg5OqcGGYxg4BA3SCAnNhAYa9HunsHryNbwEL0oUV4uEgy5VqhAQG/wDkKo6dAAAB//MAAASJBcoAHwBrshEgIRESOQCwAEVYsBIvG7ESHD5ZsABFWLAFLxuxBRA+WbIdEgUREjmwHS+yAAEKK1gh2Bv0WbAFELIDAQorWCHYG/RZsAjQsAAQsAvQsB0QsA3QshUSBRESObASELIZAQorWCHYG/RZMDEBBwYHJQchNxc2NzcjNzM3NiQXFhYHJzYmJyYGBwchBwG4HBRYAssd/BUdQ3EdG6AbnB8ZARbAqMAIuwdiZW6aECABNhsCbtSZZwOdnAIp3c6d/cz2BgTRsQFqegQEpIH7nQAAAgAS/+UFjQTxAB0ALQA/sisuLxESObArELAQ0ACwAEVYsAIvG7ECED5ZsBHQsBEvsAIQsiIBCitYIdgb9FmwERCyKgEKK1gh2Bv0WTAxJQYnJicHJzcmJyYSNyc3FzYXFhc3FwcWFxYCBxcHAQYWFhcWNjY3NiYmJyYGBgPku77HiJ1tnx4KE1lodY1ys7a8ia9vrSAMElFjc4/84g9Kn2x115EQDkmebHbYkG6GBAR+iJCGVVeWASF1nX+UegQCd5iSk1dZkP7meJZ/AnJy0HsEBH7ee3POeQQEftwAAQBTAAAFJAWwABYAawCwAEVYsBYvG7EWHD5ZsABFWLABLxuxARw+WbAARViwDC8bsQwQPlmyDxMDK7IADBYREjm0DxMfEwJdsBMQsAPQsBMQshICCitYIdgb9FmwBtCwDxCwB9CwDxCyDgIKK1gh2Bv0WbAK0DAxAQEzASEHIQchByEDIxMhNyE3ITchATMCbgHV4f3uASkW/owdAXUW/ow5vDj+kRYBbh3+kRYBNv7nywMPAqH9MH2lfP6+AUJ8pX0C0AAAAv/3/vIB2QWwAAMABwAYALAAL7AARViwBi8bsQYcPlmyBQEDKzAxAxMzAxMjEzMJiraKqLaEtv7yAxf86QPIAvYAAv/d/g4EoQXGADEAPwBzALAHL7AARViwIi8bsSIcPlmyFQciERI5sBUQsjoBCitYIdgb9FmyAhU6ERI5sAcQsAvQsAcQsg8BCitYIdgb9FmyLiIHERI5sC4QsjMBCitYIdgb9FmyGzMuERI5sCIQsCbQsCIQsikBCitYIdgb9FkwMQEGBxYHBgQnJiY3NwYWFhcWNjY3NiYkJyY3NjcmNzY2NzYXFhYHIzYmJyYGBwYWBBcEJScGBwYXFgQXNjc2JicEPxLTZw0O/uDe2fILtQY/glhTlFwJDGv+61DyFA7SYw0Ihnd7jc/hDLQIhHyHtw8LYAEPRwEN/hSapxYOSzIBAkGuFgtfdwG3v2Bnqa7MAgTmxwFVfkUBAjZjRU1vWSZz7LhnaqZsrS8wAgTlxn6WBAJ1aVFtVB90BzQvl2Q9KVEZNJNJcCoAAgDbBO4DUgXHAAsAFwAdALAJL7IDBQorWCHYG/RZsA/QsAkQsBXQsBUvMDETNjY3NhYHFAYHBiYlNjY3NhYHFAYHBibbATovLz0BPC8vOwGhATovMDwBPC8uPQVZLj0CATsvLjwCATotLj4CATswLzsCAToAAAMAYv/qBe0FyAAbACkAOgCCALAARViwLi8bsS4cPlmwAEVYsDcvG7E3ED5ZsgM3LhESObADL7QPAx8DAl2yCi43ERI5sAovtAAKEAoCXbIOCgMREjmyEQIKK1gh2Bv0WbADELIZAgorWCHYG/RZshsDChESObA3ELIfBAorWCHYG/RZsC4QsiYECitYIdgb9FkwMQEGBicmJjc3NjYXFhYHJzYmJyYGBhcXFhYXFjcFFgAXFiQSJyYAJyYEAgc2EiQXFgQSBwYCBCcjJiQCBEUOupWRoA4KFM+djpsGjwZFWl9/HQECB09EqiP9LRYBBL67AU23FBb/AMG9/rO2WxbkAV7CsgEcjhUX5P6ovAq3/uiOAlWXpwQE2KdivdsCBKOUAVViAgKR/x4jTVoDB78az/75AgTfAX2+zQECBQTg/ogmxwFkywQCxP6lxMv+nsgBBMQBWwAAAgDDArMDTgXHAB0AJwBgALAARViwFi8bsRYcPlmyAygWERI5sAMvsADQsAAvsgkDFhESObAJL7AWELIPAworWCHYG/RZshIJFhESOXywEi8YsAMQsh4DCitYIdgb9FmwCRCyIQQKK1gh2Bv0WTAxAScGIyImNzY2Mxc3NicmJyYGByc2NhcWFgcDBwYXJTI3NyMGBgcGFgJ2BFxyaXgEBbqnbwkDAgdVOFcPnAuwg3uFCjYEAQj+u0tbHF1YaAgFNgK/SlZ7YXN8ATYbGE8DATE4C21/AgSVfP6lOi0uekSPA0A3Ky4A//8AWQCXA44DswAmAXr6/gAHAXoBOv/+AAEAgQF3A8UDIAAFABoAsAQvsAHQsAEvsAQQsgIBCitYIdgb9FkwMQEjEyE3IQN7ti/9jR0DJwF3AQihAAQAYf/mBe0FyAAPAB8AOQBCAIQAsABFWLAELxuxBBw+WbAARViwDC8bsQwQPlmyFAQKK1gh2Bv0WbAEELIcBAorWCHYG/RZsiEMBBESObAhL7IjBAwREjmwIy+0ACMQIwJdsjohIxESObA6L7IgAgorWCHYG/RZsiogOhESObAhELAy0LAyL7AjELJCAgorWCHYG/RZMDETNhIkFxYEEgcGAgQnJiQCNx4CFxYkEicuAicmBAIFAyMTBRYWBwYGBxYXBwYXFwcjJj8CNiYnJxc2Njc2JicjdhbkAV7CrwEbkxYX5v6lwLP+6JOEDIHNfrsBSroTDoHLfrn+tr0BvTWKhQEBi5UHA0RRTQkBCwIDAooGAgcGBzBElI9IZQkKQVmMAtLHAWTLBAK//qXJzP6dygQEvwFeLoPcdgME3AF8w4XYdAME1v6Db/6uA1EBBYFyOmAuLGE9Vx9AESUkSDZCRQSBAQJFOj8+AwABAOMFIQOwBbAAAwARALABL7ICAworWCHYG/RZMDEBITchA5n9ShcCtgUhjwAAAgDoA70C2AXHAAsAFwAvALAARViwAy8bsQMcPlmwD9CwDy+yCQIKK1gh2Bv0WbADELIVAgorWCHYG/RZMDETNjYXFhYHBgYnJiY3BhYzMjY3NiYjIgbsBKFnYX8CBJ9mYoN9Bj0xNlUGBjg0NlcEt2+hAgKVZXCcAgKRZzFJUDgwT1UAAgAlAAAD/wTzAAsADwBGALAJL7AARViwDS8bsQ0QPlmwCRCwANCwCRCyBgEKK1gh2Bv0WbAD0LANELIOAQorWCHYG/RZsgUOBhESObQLBRsFAl0wMQEhByEDIxMhNyETMxMhNyECngFhGP6gQaRB/ooZAXVBo3H81RgDKwNWl/5iAZ6XAZ37DZgAAQBcApsC5gW/ABcATgCwAEVYsA8vG7EPHD5ZsABFWLAALxuxABQ+WbIXAgorWCHYG/RZsALQsgMXDxESObAPELIIAgorWCHYG/RZsgsPABESObIUFw8REjkwMQEhNwE2NzYmJyYGBwc2NhcWFgcGDwIhAqL9uhQBY2MMBzUwQlAOmguugHiLBQiXQMQBewKbdAEqVEowNgEBSz4BdZUCAn5me30zkQAAAQBuAo0C6wW8ACQAcQCwAEVYsA0vG7ENHD5ZsABFWLAXLxuxFxQ+WbIAFw0REjl8sAAvGLbQAOAA8AADXbANELIHAgorWCHYG/RZsgkADRESObAAELIjBAorWCHYG/RZshIjABESObIbFw0REjmwFxCyHgIKK1gh2Bv0WTAxARc2Njc2JiMiByM2NjMWFgcGBxYHBgYnJiY1MxQWMzI2NzYnJwFXTkJdBwY+MnAdnAuffX6OBQeYdgQFtYV3lZdCOkBbBw2NVwRlAQI9NjExXWV5A3Zhd0IrgW+BAgJ8bDI3QDVmBQEAAAEA1QTYAqUF/gADACMAsAIvsg8CAV2wANCwAC+0DwAfAAJdsAIQsAPQGbADLxgwMQEzASMBv+b+zp4F/v7aAAAB/+X+YAQlBDoAEwBZsg0UFRESOQCwAEVYsAAvG7EAGD5ZsABFWLAILxuxCBg+WbAARViwES8bsRESPlmwAEVYsA4vG7EOED5ZsABFWLALLxuxCxA+WbAOELIFAQorWCHYG/RZMDEBAwYXFhcWNxMzAyM3BiciJwMjAQGeZwoDCpK3YYu2vKITb6KHUFm0AQQEOv2QVDq3AwadAyH7xnOKAkv+KgXaAAABAHsAAAPGBbEACwAksgAMDRESOQCwAEVYsAovG7EKHD5ZsABFWLAALxuxABA+WTAxIRMnJiY3PgIzBQMCFFtA0+EUDpTwkAEV/AIIAQP/yY7adQH6UAAAAQClAmgBhQNMAAsADwCwAy+xCQorWNgb3FkwMRM2Njc2FhUGBgcGJqUBPTIwQAFAMS1BAtYxQQICPjIxPwICOwAAAf/I/ksBEwAAAA0AOQCwAEVYsAYvG7EGEj5ZsABFWLANLxuxDRA+WbIBDQYREjmwBhCyBwYKK1gh2Bv0WbIMBgEREjkwMTMHFgcGBgc3Njc2Jyc3pxWBBAOulgSmEAxoLi43HYZmcgNsBmVHDAaFAAEA3wKiAnAFtwAGAECyAQcIERI5ALAARViwBS8bsQUcPlmwAEVYsAAvG7EAFD5ZsgQABRESObAEL7IDAgorWCHYG/RZsgIDBRESOTAxASMTBzclMwHtmmjcGAFkFQKiAlU4h3EAAAIAwAKtA3sFyQANABsAMwCwAEVYsAAvG7EAHD5ZsgccABESObAHL7IRAworWCHYG/RZsAAQshgDCitYIdgb9FkwMQEWFgcHBgYnJiY3NzY2AwYWFxY2Nzc2JicmBgcCTY2hDQcR0ZaOoQ0HEdNLCkhNT3APCQhKSFJwDgXFBMWZR6bJBATIlkaoyP5IYHMCA3JoUWZtAgJ0ZP//AA8AmANWA7UAJgF7DQAABwF7AV8AAP//ALkAAAUzBa0AJwHVAE4CmAAnAXwBEQAIAQcB2ALAAAAAEACwAEVYsAUvG7EFHD5ZMDH//wC0AAAFeQWtACcBfADmAAgAJwHVAEkCmAEHAdYDBgAAABAAsABFWLAJLxuxCRw+WTAx//8AngAABYwFvQAnAXwBjAAIACcB2AMZAAABBwHXAKMCmwAQALAARViwIC8bsSAcPlkwMQAC/9P+egL2BE8AGAAkAEYAsBAvsABFWLAiLxuxIhg+WbIcBQorWCHYG/RZsADQsAAvsgMQABESObAQELIJAQorWCHYG/RZsBAQsAzQshYAEBESOTAxAQYGBwcGBwYWFxY2NzcGBicmJjc2Nzc2NxMUBgcGJjU2Njc2FgJIDFNpYXcNDV5dYoUStBP0sa2+Dw+/dFsZ9jsvMDsBPC4uPQKpbaFkW3NzYnQCAnFeAafLBATKprevZlWVAUAvPgICPi0vOwIBOQAC/4QAAAd4BbAADwASAHcAsABFWLAGLxuxBhw+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZshEGABESObARL7ICAQorWCHYG/RZsAYQsggBCitYIdgb9FmyCwAGERI5sAsvsgwBCitYIdgb9FmwABCyDgEKK1gh2Bv0WbISBgAREjkwMSEhEyEBIwEhByEDIQchAyEBIRMGt/ynL/3k/vvoBFIDohv9Yj8CPhv9yUcCrfseAbRgAWH+nwWwmP4pl/3tAXgC0gAAAQAoAM4EAgRjAAsAOACwAy+yCQwDERI5sAkvsgoJAxESObIEAwkREjmyAQoEERI5sAMQsAXQsgcEChESObAJELAL0DAxEwEBNwEBFwEBBwEBKAF7/vuAAQYBeWX+iAEGgP75/oUBUgFPAVBy/rIBToP+sP6wcgFQ/rAAAAMAIP+kBZwF6wAZACMALQBmsgwuLxESObAMELAg0LAMELAp0ACwAEVYsA0vG7ENHD5ZsABFWLAALxuxABA+WbIcDQAREjmyJg0AERI5sCYQsB3QsA0Qsh8BCitYIdgb9FmwHBCwJ9CwABCyKQEKK1gh2Bv0WTAxBSYnByM3Jjc2EhI2NhcWFzczAxYXFgICBwYBFhcBJicmAgcGATYnARYXFhITNgJOpnV8l71qBQExd7Lif86Bg5bQMQoOVuKfcP5gAh8Cxk2ctvwsIgMpBAv9TUpyv/0oFhUEUJvoq+ZhASwBA7lhAwR6pf8AdHqp/kT+wUIvAf9sUwOMaAUF/uz0wAFHTk78ijoEBQEmAQ6TAAACADgAAARiBbAADQAWAFqyEBcYERI5sBAQsAnQALAARViwAC8bsQAcPlmwAEVYsAsvG7ELED5ZsgEACxESObABL7IKCwAREjmwCi+wARCyDgEKK1gh2Bv0WbAKELIPAQorWCHYG/RZMDEBAxcWFgcOAiMlAyMTEwMFMjY3NiYnAesz7tDsDwuN7pH+6Te2/WlfAQGLwhEOgXYFsP7bAQHjvILFawH+xwWw/kP93gGZf3iOBAABAB7/5wQZBhUALABbsiAtLhESOQCwAEVYsAYvG7EGHj5ZsABFWLAULxuxFBA+WbAARViwAC8bsQAQPlmyCwYUERI5sBQQshkBCitYIdgb9FmyHxQGERI5sAYQsikBCitYIdgb9FkwMTMjEz4CFxYWBwYGBwYeAgcGBicmJzcWFzI2NzYuAjc+Azc2JicmBgfTtb4Sdrp5n64NCaIMCTaSOgMK6K2ycjtqcWWLCwc3kz0GBThBOQgKTFFpiBUEV4bOagIEspRf9Ew3bJRxPKS7BAJJmUsCY1Y5a5Z3PzthW186UmwEA5eRAAADABP/6AZhBFIALAA3AEEAx7ICQkMREjmwAhCwMdCwAhCwO9AAsABFWLAcLxuxHBg+WbAARViwAC8bsQAQPlmwAEVYsAUvG7EFED5ZsgMcABESObILHAAREjmwCy+0vwvPCwJdsBwQsjgBCitYIdgb9FmwENCyEwscERI5sBwQsBfQshocABESObI8HAAREjmwPC+0vzzPPAJdsiEBCitYIdgb9FmwABCyJwEKK1gh2Bv0WbIqHAAREjmwBRCyLQEKK1gh2Bv0WbALELIyAQorWCHYG/RZMDEFJiYnBiUmJjc2NjMXNzYmJyYGByc2NhcWFhc2Fx4CBwchBhcWFhcWNjcXBiUWNjc3JyIGBwYWASYGByE3NicmJgRwebkzqf7skqkKCv7Z4gwMVlpokA+zEPy6baMiosJ/rkoREv1CCQkNgWhanUo1ivwVRp9CK8t4pgwJWgO7bqo1AgoGCQcLZhQCXVW4BAKtjaC0AVZoeQQCa1YTl7ACAldNqQQCft2KdkRAa30BAjwviXiVAkk57gFxW0pXAzUDnZ4gNzJQXAAAAgBc/+gEVAYrABwAKABQshYpKhESObAWELAm0ACwDi+wAEVYsBgvG7EYHj5ZsABFWLAHLxuxBxA+WbIQDgcREjmwDhCyHwEKK1gh2Bv0WbAHELIlAQorWCHYG/RZMDEBEgMHBgIGJyYCNz4CFxYXJicHJzcmJzcWFzcXAyYnJgYHBhYXFjY3A56xMg0YneGCvOATDorehJpvBGrvO89mskbcltE65ziqkMQTD4Bwf7YfBRP+2f6NW6f+9oUDBAETyZDziAQEb7aZlGx+VjSdOIiCbf03fgUEy6mLuwMF28AAAAMARACpBC4EvQADAA4AGQA7ALACL7IBDgorWCHYG/RZsAIQsQ0KK1jYG9xZsQcKK1jYG9xZsAEQsRIKK1jYG9xZsRgKK1jYG9xZMDEBITchATQ2NzYWFQ4CJgM2Njc2FhUOAiYEDvw2IQPJ/eg9MjBAAT9iPo0BPTIwQAFAYj0CWLgBNzFBAgI+MjE+BDz9ADFBAgI+MjE+BD0AAAMAOf96BCoEuAAZACEAKwBmsgwsLRESObAMELAf0LAMELAo0ACwAEVYsAAvG7EAGD5ZsABFWLANLxuxDRA+WbIcAA0REjmyJAANERI5sCQQsB3QsAAQsh8BCitYIdgb9FmwHBCwJdCwDRCyJwEKK1gh2Bv0WTAxARYXNxcHFhcWBwYCBicmJwcnNyYnJjc3EgADBhcBJicmAiUmJwEWFxY2NzYCfmdbZoSQbgcCCBOf8I5ZXWaEjXYHAgYCJAE2sAozAcs3QJ3RAlcDH/44MjmMyR8NBFACK5UBz4LGN1ac/vmIAgIjlQHNfM09PBABBwEz/WuEWwK6HQIE/u0TSkX9TBcCA9y7XwAAAv/g/mAEBAYAABEAHQBdsgQeHxESObAEELAc0ACwCS+wAEVYsA0vG7ENGD5ZsABFWLAHLxuxBxI+WbAARViwBC8bsQQQPlmyCw0HERI5sA0QshYBCitYIdgb9FmwBBCyGwEKK1gh2Bv0WTAxAQYCBicmJwMjATMDNhcWFhcWBzc0JicmBwMWFxY2A/wUjMt8umVhtQFTtGqDtZ6tAwG6BXBooHBaPZ2JvQIYpv72gQMEfP32B6D9yYkEBOS9PT5UkZwCBJj9+Y8FA9sAAgA1AAAFwQWwABMAFwBrALAARViwDy8bsQ8cPlmwAEVYsAgvG7EIED5ZshQIDxESObAUL7IQFA8REjmwEC+wANCwEBCyFwEKK1gh2Bv0WbAD0LAIELAF0LAUELIHAQorWCHYG/RZsBcQsArQsBAQsA3QsA8QsBLQMDEBMwcjAyMTIQMjEyM3MxMzAyETMwEhNyEFPoMZgrK8df06db2yghmCMr0zAsYzvPwRAsUj/ToEjo78AAKh/V8EAI4BIv7eASL9jsIAAQAuAAABnwQ6AAMAHQCwAEVYsAIvG7ECGD5ZsABFWLABLxuxARA+WTAxMyMTM+O1vLUEOgAAAQAtAAAEVwQ6AAwAaACwAEVYsAQvG7EEGD5ZsABFWLAILxuxCBg+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsAIQsAbQsAYvsp8GAV20vwbPBgJdsi8GAV2y/wYBXbIBAQorWCHYG/RZsgoBBhESOTAxASMDIxMzAzMBMwEBIwGhblC2vLZRUAHR6P3lAXTUAc3+MwQ6/jYByv3q/dwAAQAiAAADsAWwAA0AWwCwAEVYsAwvG7EMHD5ZsABFWLAGLxuxBhA+WbIBDAYREjmwAS+wANCwARCyAgEKK1gh2Bv0WbAD0LAGELIEAQorWCHYG/RZsAMQsAjQsAnQsAAQsAvQsArQMDEBJQcFAyEHIRMHNzcTMwGKAQ4Y/vNhAp4c/KZyihiJdL0DT1OEU/3SnQKNKYQpAp8AAAEAIwAAAjYGAAALAEoAsABFWLAKLxuxCh4+WbAARViwBC8bsQQQPlmyAQQKERI5sAEvsADQsAEQsgIBCitYIdgb9FmwA9CwBtCwB9CwABCwCdCwCNAwMQE3BwcDIxMHNzcTMwGRpRijgbZ1lheVgLUDajyDPf0aAp42gzcC3gAAAQA1/kUFYQWwABMAWrIGFBUREjkAsABFWLAALxuxABw+WbAARViwEC8bsRAcPlmwAEVYsAQvG7EEEj5ZsABFWLAOLxuxDhA+WbAEELIJAQorWCHYG/RZsg0OEBESObISDgAREjkwMQEBBgYnIic3FjMyNzcBAyMTMwETBWH++RnBlzVDHjgphCUR/gzGu/y1AfjFBbD5/ay8BBSZEb1eBHL7jgWw+5AEcAABACT+RwPyBFIAGwBaALAARViwAC8bsQAYPlmwAEVYsAMvG7EDGD5ZsABFWLAKLxuxChI+WbAARViwGS8bsRkQPlmyARkDERI5sAoQsg8BCitYIdgb9FmwAxCyFgEKK1gh2Bv0WTAxAQc2FxYWBwMGBiciJzcWMzI3EzYnJicmBwMjEwGBFoy/o5kVfRa/ljVDHzUujCB8BgMOpJ9xjra8BDubsgQE4738/aa6AhScEMUC+TYwoAUEifzTBDoAAgBU/+0HZQXHABYAJACRshUlJhESObAVELAa0ACwAEVYsAsvG7ELHD5ZsABFWLANLxuxDRw+WbAARViwAC8bsQAQPlmwAEVYsAMvG7EDED5ZsA0Qsg8BCitYIdgb9FmyEg0AERI5sBIvshMBCitYIdgb9FmwABCyFQEKK1gh2Bv0WbADELIXAQorWCHYG/RZsAsQshwBCitYIdgb9FkwMSEhBwcmJgI3ExIAHwIhByEDIQchAyEFFjcTJiMmBgcDBhcWFgZy/NTZRZjbYRUvKwFZ80rTAzkc/UNRAmQc/Z1aAsj7oEyK0Wxfr+whLwoHCo4SAQSeARKfASsBEgFKAgITnv4snf38GAMNBJARAvPU/tROToOXAAMAR//mBuIEUwAiADMAPQChshk+PxESObAZELAt0LAZELA30ACwAEVYsAUvG7EFGD5ZsABFWLAALxuxABg+WbAARViwGy8bsRsQPlmwAEVYsBYvG7EWED5ZsgMFFhESObI4BRYREjmwOC+yCgEKK1gh2Bv0WbAWELIQAQorWCHYG/RZshIFFhESObIZBRYREjmwGxCyKAEKK1gh2Bv0WbAFELIwAQorWCHYG/RZsDTQMDEBFhYXNhceAgcHIQYXFhYXFjcXBgYnJiYnBicuAjc3EgADBhcWFhcWNj8CNCYnJgYHASYGBwU3NicmJgJ+eb4rstl9sEoRE/1MCAYKdWCskD1EyHN8vSyr9IW8VRACJAEtnQcEBXNliMMaAgVzbYzBFwRSZaU3Af4FCAcNZwROAnRj3QMCftyIej1AbIEDBm9/QUICAnFf2QYCjvmVEAEFATT9tz5EdY8DBdy7FlePpAQF57UBlwOalwEcNTFPWwABADMAAAMKBhoADQArALAARViwBC8bsQQePlmwAEVYsA0vG7ENED5ZsAQQsgkBCitYIdgb9FkwMTMTNjYXMhcHJiciBgcDM8sWxp4vYyEsLFd1Ec0Eq6vEAhaPDAJvZvtUAAIAUf/pBSoFxgAaACQAUQCwAEVYsBIvG7ESHD5ZsABFWLAALxuxABA+WbIFABIREjmwBS+wEhCyDAEKK1gh2Bv0WbAAELIbAQorWCHYG/RZsAUQsh8BCitYIdgb9FkwMQUmJgI3NwU3NicmJicmByc2NhcWBBIHBwYCBCcWNjcFBwYXFhYCT67tYxoUA9ADFQkPvZimyiNE1IG4AQFxGg4fzv7fnaX7R/zoBw8KEKQUAqgBL758AwxjYJy5AwNWkS82AwKz/r7GY8j+uKqgBfXyASNZUIGRAAH/Sf5GAy8GGgAdAHGyEh4fERI5ALAARViwFC8bsRQePlmwAEVYsA8vG7EPGD5ZsABFWLAcLxuxHBg+WbAARViwBS8bsQUSPlmwHBCyAAEKK1gh2Bv0WbAFELIKAQorWCHYG/RZsAAQsA3QsA7QsBQQshkBCitYIdgb9FkwMQEjAwYGJyYnNxYzMjcTIzczNzY2FzIXByYjIgcHMwKDxJ0Uu5c1Phw1KoggnaYWpg4VxpgzXB03KLQdDcUDq/v8p7oCAhOSEM4D/o9xr8ACFZUM3WMAAgBn/+kGGwY3ABgAKABOALAARViwCi8bsQocPlmwAEVYsAAvG7EAED5ZsgwAChESObAML7ISAgorWCHYG/RZsAoQshwBCitYIdgb9FmwABCyJAEKK1gh2Bv0WTAxBS4CJyY3NhIkFxYXNjY3NwIFFhcWAgIEATYmJyYCAwYHBhYXFhI3NgJAi9BzBgUbIsUBFaflhmRzE6Ej/uQaBQZNuf7wAVQGlZW+/iYTAQaWlMT8IhIUA4P1nG2nzwFBoAMEmQqFgAH+tkJpaZj+cf7XoAOWxNgEBf7Z/v5/SL/jBAUBL/6DAAACAEL/5wT/BLAAFgAlAE4AsABFWLAALxuxABg+WbAARViwDy8bsQ8QPlmyAg8AERI5sAIvsgkCCitYIdgb9FmwDxCyGgEKK1gh2Bv0WbAAELIiAQorWCHYG/RZMDEBFhc2NjczBgYHFhcWAgQnLgI3NzYAAxQWFxY2NzYnJiYnJgYGAoLEeUtSE5AQeXYSBAqO/vSliL9YEAMiATSoeG6NyRsHBAl2Zm6uWwRPBIkOY32UpCBLS8f+qb0EBI74lRX+ATb9YIyhBAXjyT9FeY0EBI/4AAEAZ//oBpoGAgAaAEYAsABFWLASLxuxEhw+WbAARViwDS8bsQ0QPlmwEhCwGtCyAQ0aERI5sAEvsggCCitYIdgb9FmwDRCyFgEKK1gh2Bv0WTAxAQc2Njc3BgYHAw4CJyYCNxMzAwYWFxY2NxMFJh5vdxOZF9LAcBaf/5ja9BqouacRi4yV0ByrBbDZDoyQAc7WC/2DlOF5AwQBD9gD2vwlm64EBKqdA+UAAQBa/+gFTgSRABsAUwCwAEVYsA0vG7ENGD5ZsABFWLAFLxuxBRA+WbAARViwCC8bsQgQPlmwDRCwFtCyGBYIERI5sBgvsgMCCitYIdgb9FmwCBCyEwEKK1gh2Bv0WTAxAQYGBwMjNwYnJiY3EzMDBhcWFhcWNxMzBzY2NwVODqKllqsXfcWclxV0tXUFAwVMRMFriLQYW1cUBJGongb8u2uDBATYtwK7/UIsKkhSAwilAxSGB1SBAAH/Cf5GAa8EOgAMACgAsABFWLAMLxuxDBg+WbAARViwBC8bsQQSPlmyCQEKK1gh2Bv0WTAxAQMGBicmJzcWMzI3EwGvxha+mDY+HjUqiiTGBDr7bqa8AgITkhDTBIgAAAIAPv/pA98ETgAYACIAUQCwAEVYsAAvG7EAGD5ZsABFWLAJLxuxCRA+WbIOAAkREjmwDi+wABCyEwEKK1gh2Bv0WbAJELIZAQorWCHYG/RZsA4QshwBCitYIdgb9FkwMQEeAgcHBgIGJyYCNzchNicmJicmByc2NwMWNjclBwYXFhYCR4a8Vg8EEZXlgsHAGhICswgGCnRgqZM9e9NOZKU3/gMGCAgLaQROAoz2lSSW/v+RBAYBCNR5PUBtgQMGb353C/w2A5qXARw1MU5eAAABARcE4gNkBgAACAAxALAFL7AB0LABL7EACitY2BvcWbAFELAH0LAHL7QPBx8HAl2wA9CwABCwBtCwBi8wMQEVJycHBzUBMwNkk3GwmQEWagTwDgKpqAMQAQ4AAAEBJgTjA4AGAQAIACAAsAQvsALQsAIvtA8CHwICXbIABAIREjmwB9CwBy8wMQE3NxcBIwM1FwIvsZ8B/uJuzpYFVqgDDf7vARAOAv//AOMFIQOwBbAABgBwAAAAAQEHBMcDTAXYAAwAIgCwAy+yDwMBXbIJBAorWCHYG/RZsAfQsAcvsADQsAAvMDEBBgYnJiY3FwYXFjY3A0wMq4B7kwKTB4FHUgwF132TBAKSeQGSBAFVQQAAAQEOBOsB4wXFAAsAEQCwCS+yAwUKK1gh2Bv0WTAxATQ2NzYWFQYGBwYmAQ46MC49ATsvLD4FVC8+AgI7MC88AgI5AAACAQEEswKkBlEACwAXACUAsAkvsBXQsBUvsgMICitYIdgb9FmwCRCyDwgKK1gh2Bv0WTAxATY2MzIWFQYGIyImNwYWMzI2NzYmIyIGAQMCgVlScwKBWVRzYgQ2Ky5PBgY4Ki5QBXhbfnRVWXxyVS4/RzIuQkkAAf+v/k8BFgA5AA8AJwCwEC+wAEVYsAovG7EKEj5ZsgUDCitYIdgb9FmwEBCwD9CwDy8wMQUHBgcGFxY3FwYjIiY3NiUBFkF6CQdBIEMERFNOXwIDARYDL1pZPwIBGnkrZVKxggAAAQDdBNoDrgXnABUAPgCwAy+wCNCwCC+0DwgfCAJdsAMQsArQsAovsAgQsg4DCitYIdgb9FmwAxCyEwMKK1gh2Bv0WbAOELAV0DAxAQYGIyIuAgcGByc2NhcyHgI3MjcDrgx6XSU9PD4kVR96DH1dGy9qMRtWIAXdb4YfJh4BA20HbowCEUESAXEAAgDCBNADvgX/AAMABwA7ALACL7AA0LAAL7QPAB8AAl2wAhCwA9AZsAMvGLAAELAF0LAFL7ACELAG0LAGL7ADELAH0BmwBy8YMDEBMwEjAzMBIwLm2P7GszTN/vefBf/+0QEv/tEAAv/p/moBNf+2AAsAFwA5ALAYL7AD0LADL0ALAAMQAyADMANAAwVdsA/QsA8vsgkHCitYIdgb9FmwAxCyFQcKK1gh2Bv0WTAxBzQ2MzIWFRQGIyImNwYWMzI2NzYmIyIGF2hGRFpjRkVeVAQoIB87BwQmHiU6+UlmX0NHY1lGHy8xJyEwOQAB/WoE2P6/Bf4AAwAeALABL7AA0BmwAC8YsAEQsALQsAIvtA8CHwICXTAxASMDM/6/jsfMBNgBJgAAAf3rBNj/wgX+AAMAHgCwAi+wAdCwAS+0DwEfAQJdsAIQsAPQGbADLxgwMQEXASP+2en+yJ8F/gH+2wD///0LBNr/3AXnAAcApPwuAAAAAf31BNj/NgZzAA0AJQCwDS+wB9CwBy+yDA0HERI5sgEHDBESObIGBgorWCHYG/RZMDEBNzc2NzYjNxYWBwYHB/31FilrCgubD4KMAweiDATZmQQKQkdqA2BRgh1IAAL82wTk/4YF7gADAAcANwCwAS+wANAZsAAvGLABELAF0LAFL7AG0LAGL7YPBh8GLwYDXbAD0LADL7AAELAE0BmwBC8YMDEBIwMzASMDM/6KtPvqAcGfwdYE5AEK/vYBCgAAAfy7/p/9kP95AAsAEQCwAy+yCQUKK1gh2Bv0WTAxBTY2NzYWFQYGBwYm/LsBOi8uPQE7Lyw++C8+AgI7MC88AgI5AAABASEE7gJBBj8AAwAdALACL7AA0LAAL7IPAAFdsgMCABESORmwAy8YMDEBMwMjAZGwrHQGP/6vAAMA8wTtA+4GiAADAA4AGQA6ALAML7AC0LACL7AA0LAAL7ACELAD0BmwAy8YsAwQsgYFCitYIdgb9FmwDBCwFdCwFS+wBhCwGdAwMQEzAyMFPgIWFRQGBwYmJTYWFQYGBwYmNjYCir6Riv7GATpePDwvLD4CkCw/ATwuLzwCOgaI/vgoLz0EPC4vPAICOZ0CPC8vPAICOl4+AP//AKUCaAGFA0wABgB4AAAAAQBDAAAEpQWwAAUAKwCwAEVYsAQvG7EEHD5ZsABFWLACLxuxAhA+WbAEELIAAQorWCHYG/RZMDEBIQMjEyEEif1Y4b39A2UFEvruBbAAAv+xAAAE3gWwAAMABgAvALAARViwAC8bsQAcPlmwAEVYsAIvG7ECED5ZsgQBCitYIdgb9FmyBgIAERI5MDEBMwEhJSEDAwKnATX60wEjAzLUBbD6UJ0EJgAAAwBp/+kE/AXIAAMAFgAnAFcAsABFWLANLxuxDRw+WbAARViwBC8bsQQQPlmyAgQNERI5fLACLxi0YAJwAgJdsgEBCitYIdgb9FmwDRCyGwEKK1gh2Bv0WbAEELIjAQorWCHYG/RZMDEBITchASYCJyYSNzYkFxYSFxYHBwYCBAE2JiYnJgADBgcGFhcWEhM2A6/+CRsB9/540/cKBTBCXQEwvtT2CQMKDB/C/ucBVAQ8iGPB/wAkEAEGlpS6+ykUApOY/MEEAR/0YgFCjMTRBAT+4/dUU1TZ/ralA5V7v2UDBf7O/vh0Q8DhBAcBGwEBfgAB/8QAAARxBbAABgAxALAARViwAy8bsQMcPlmwAEVYsAEvG7EBED5ZsABFWLAFLxuxBRA+WbIAAwEREjkwMQEBIwEzASMC7P2p0QL/qAEGwgSH+3kFsPpQAAADAAwAAASGBbAAAwAHAAsATwCwAEVYsAgvG7EIHD5ZsABFWLACLxuxAhA+WbIAAQorWCHYG/RZsAIQsAXQsAUvsi8FAV2yBgEKK1gh2Bv0WbAIELIKAQorWCHYG/RZMDE3IQchEyEHIRMhByEoA44c/HLlAtwb/SM4A3kc/IadnQM/nQMOngAAAQBEAAAFcAWwAAcAOACwAEVYsAYvG7EGHD5ZsABFWLAALxuxABA+WbAARViwBC8bsQQQPlmwBhCyAgEKK1gh2Bv0WTAxISMTIQMjEyEEc7zh/UnhvP0ELwUS+u4FsAAAAf/aAAAEiQWwAAwAPACwAEVYsAgvG7EIHD5ZsABFWLADLxuxAxA+WbIBAQorWCHYG/RZsAXQsAgQsgoBCitYIdgb9FmwB9AwMQEBIQchNwEBNyEHIQEC8v31AvEc/B4bAjj+khgDshz9MwFUAtD9zZ2YAkoCR4ee/dYAAAMAVAAABXAFsAAJABMALABZALAARViwHi8bsR4cPlmwAEVYsCsvG7ErED5ZshQrHhESObAUL7IAAQorWCHYG/RZsh0eKxESObAdL7Ag0LIKAQorWCHYG/RZsAHQsAAQsAvQsBQQsCnQMDEBEyMmBgYHBhYXAQMXFjY2NzYmJwEGJiY3NhIkFzM3FwcyFhYHBgIEJyMHIzcCO5MCZLiFDhWQnAFWlANit4QRFZKa/pqF4m8PD6sBFZ4NJ7opiuJvDxCt/uOZBiS+JAFOAwwRX89zpM0LAwr89QENW8d7qMkL/FgBjvmUmwEBkwK5AbiO+ZSc/vyTBq+wAAABAIYAAAWdBbAAGQBcsgoaGxESOQCwAEVYsAQvG7EEHD5ZsABFWLAQLxuxEBw+WbAARViwGC8bsRgcPlmwAEVYsAsvG7ELED5ZshcECxESObAXL7AA0LAXELIMAQorWCHYG/RZsAnQMDEBNjY3EzMDBgAHAyMTJgI3EzMDBhcWFhcTMwL/nM0dXLxdK/7D70S9RdDXG1i8WQkHCndkpr0CCBnTowIZ/dvr/uEX/pYBbB4BNuICDv3xRUFqjRgDpAABAAoAAATaBccAJgBZsgAnKBESOQCwAEVYsBovG7EaHD5ZsABFWLAQLxuxEBA+WbAARViwJS8bsSUQPlmyIwEKK1gh2Bv0WbAA0LAaELIIAQorWCHYG/RZsAAQsA/QsCMQsBLQMDElNhI/AjYmJyYGAhcWFhcHITc3AhM3NhIkFx4CFxYCBwYHNwchAnuYxiYRCAOKiKjmSQQDaV8Z/iIc1qEpFB61AQief8Z0CQc9WVB32Bz+KaEhARj3eWuqxAQF+f5JfpWvGKKdAgEDATSEtAEhmAMDdt+LaP6clodeA50AAgBI/+cEMgRUABgAJQB5shUmJxESObAVELAi0ACwAEVYsBUvG7EVGD5ZsABFWLAYLxuxGBg+WbAARViwDi8bsQ4QPlmwAEVYsAovG7EKED5ZsgUBCitYIdgb9FmyDBUKERI5shcVChESObAOELIdAQorWCHYG/RZsBUQsiIBCitYIdgb9FkwMQEDBhcWFzM3FwYnJicGJyYCNzc2ABcWFzcBBwYWFxY3EyYnJgYHBDKECAQFKhEQCjU9jBCKwK+1FwssAQG5wFgv/X4FA21mpHVMOJqMthoEOvzrOh04AgOLIAEEn6kEAwEc50v5AR8FBp2O/bNRhJYCA74BwbMHBe3MAAAC//D+gARMBccAEwApAGWyGyorERI5sBsQsBPQALAOL7AARViwAC8bsQAcPlmwAEVYsAsvG7ELED5ZshQACxESObAUL7InAQorWCHYG/RZsgUnFBESObAAELIaAQorWCHYG/RZsAsQsiEBCitYIdgb9FkwMQEWFgcGBxYWBwYEJyYnAyMTPgITNjY3NiYnJgYHAxYWMxY2NzYmJyc3AtKszg4R1l5gCRD+5susb1a2+RGL2A16mgsKaWJsqROOKYhJg7oQDmhhlxsFxATXprxyLrp9y/4EBF3+NAWxcrpq/ZECgW1hgQQCj2/8wzs4AqeFcZ8FAZcAAAEAhP5gBBoEOgAIADiyAAkKERI5ALAARViwAS8bsQEYPlmwAEVYsAcvG7EHGD5ZsABFWLAELxuxBBI+WbIABwQREjkwMQEBMwEDIxMDMwG+AZzA/dhQtVW+sQEWAyT79P4yAesD7wAAAgBD/+cEEwYgACAALwBisgIwMRESObACELAo0ACwAEVYsAMvG7EDHj5ZsABFWLAVLxuxFRA+WbADELIIAQorWCHYG/RZsi0VAxESObAtL7IOAQorWCHYG/RZsh0tDhESObAVELInAQorWCHYG/RZMDEBNjYXFhcHJgciBgcGFxcWEgcHBgAnLgI3NzY2NzcmJgMGFxYXFhcWNjc2JicmBgFPB+KqepAUgn5VdQoPjzW1pRQDIf7U0oe9Vg4DF9mjA0xUQQcFC1cwTYXAHg97bYfEBO2OpQICN6E/Ak5AXUEYS/7lwhX2/t0FBIjwkhaz/R8NJYb9Xz5BjEMlAgXOyoniDxLnAAEAKf/nA+UETQAoAHiyJikqERI5ALAARViwGS8bsRkYPlmwAEVYsA0vG7ENED5ZsicZDRESOXywJy8YsoAnAV20QCdQJwJdsgABCitYIdgb9FmwDRCyBgEKK1gh2Bv0WbIKGQ0REjmyEwAnERI5sh0ZDRESObAZELIhAQorWCHYG/RZMDEBIgYHBhYXFjY3NwYEJyYnJjc2NyYmNzY2NzcWFgcnNiYnIgYHBhcXBwIFfJUKCXxqa6gRtRD+9MSLaKQKCudCTQQG2rwtrtUDsgJzY2yYDBPQ1BsB315ZSlwDAmtXAZ67BQI2Vq24UiJ0Q4utCgEFsI0BS10DW1GSBgGUAAEAgv6ABDwFsAAcADmyEx0eERI5ALANL7AUL7AARViwAC8bsQAcPlmyGgEKK1gh2Bv0WbAB0LAUELIIAQorWCHYG/RZMDEBBwEHBgcGFhcXFgcGByc3Njc2JycmJjcSAQEhNwQ8F/4vKsYZCilKzYsKCsZcIk4KCF9vin4QHAFCAVb9nRsFsIH+IC3X0EtpG0UyhJiZWSRURDogISurkAEMAUoBTJgAAAEAJP5hA/MEUgASAFOyCBMUERI5ALAARViwAy8bsQMYPlmwAEVYsAAvG7EAGD5ZsABFWLAHLxuxBxI+WbAARViwEC8bsRAQPlmyAQMHERI5sAMQsg0BCitYIdgb9FkwMQEHNhcWFgcDIxM2JyYnJgcDIxMBghWOu6aXFbu1uwYEDaWpboi2vAQ7iaAEBNPB+6sEUjYvnAMEqfzuBDoAAwBz/+UEKwXKABEAGwAkAGayGSUmERI5sBkQsADQsBkQsCLQALAARViwCS8bsQkcPlmwAEVYsAAvG7EAED5ZshIACRESOXywEi8YsAkQshgBCitYIdgb9FmwEhCyHQEKK1gh2Bv0WbAAELIiAQorWCHYG/RZMDEFLgI3NhI3NgUWEgcGBwcCAAEhNzYnAicmBgcFIQYXFhYXFhMB3HmlSwQDTmKQAQO2uAYCCRwz/un+lQIYCQ8CC7iIrykB+/3pFgMDZFr0WxQDfu2XcwHen+kGBP727UtFt/61/q4DOzlySgERBwTo8NCAZYyTAwwBkQABAIX/9AHuBDoADgAoALAARViwAC8bsQAYPlmwAEVYsAovG7EKED5ZsgUBCitYIdgb9FkwMQEDBhcWFzI3BwYnJiY3EwHMiAMCBk8iNAxHPmxsDIcEOvzXGhZKAwqYEgICmIQDJgAB/7f/8APABewAGQBNsg4aGxESOQCwAC+wAEVYsAovG7EKED5ZsABFWLAPLxuxDxA+WbAKELIFAQorWCHYG/RZsg4AChESObAAELIVAQorWCHYG/RZsBfQMDEBMhcTFhczNwcGByImJwMBIwEnJiYnJwc3NgGOtijiFDkTEgYeKFBiIH3+Y9ECNzQRKyMYGQwwBeyu+6tTAwKaCQJWdQJO/PcEEOA6JwIBAY4LAAABAD/+dwQPBcgALgBSshkvMBESOQCwGC+wHi+wAEVYsCwvG7EsHD5ZsgIBCitYIdgb9FmyCSwYERI5sAkvsgsBCitYIdgb9FmwHhCyEQEKK1gh2Bv0WbIlCwkREjkwMQEmIyIGBwYWFxcHJyIGBwYeBAcGBgcnNzY3NicmJyYTNjY3JiY3Njc2FxYXA+V+WYyzDQ+PlIsbf8HoEQxx9Fk/IwMFaWBkOz4IClinRPUXDLuvXWYFC6SPxYN7BQgmaVtkbwEBmAGvm2ycQyAtRTNInElXPUQ/OhgtIXQBFo/POSqVVrVeUQMCJwABAGD/9ASkBDoAFgBcsg0XGBESOQCwAEVYsBUvG7EVGD5ZsABFWLALLxuxCxA+WbAARViwES8bsREQPlmwFRCyAAEKK1gh2Bv0WbALELIGAQorWCHYG/RZsAAQsA/QsBDQsBPQsBTQMDEBIwMGFxYzFjcHBicmJjcTIQMjEyM3IQSJl28DAgdPJS8JQkJtbQxs/nyhtaGkGwQpA6H9cBoWTAIMmRIBApiFAo38XwOhmQAAAv/c/mAD+QRTABMAIABQsg8hIhESObAPELAX0ACwAEVYsAUvG7EFGD5ZsABFWLASLxuxEhI+WbAARViwDy8bsQ8QPlmyFgEKK1gh2Bv0WbAFELIdAQorWCHYG/RZMDETNjY3NhceAhcWBw4CJyYnAyMBFhcWNjc3NiYnJgYHhhFXR4rGc6VYAwEJE4HJgbxjYbYBL0GZibcWCQdkbXqoHgJBcMlJkAUDbM1/PGKY84ECBHr99wKzjQQDzapro7AEAtS3AAEATv6JA+sEUwAhAEqyGSIjERI5ALATL7AARViwAC8bsQAYPlmwAEVYsBkvG7EZED5ZsgMAExESObAAELIHAQorWCHYG/RZsBkQsg0BCitYIdgb9FkwMQEWFgcnNiYnJgYHBwIFFxYHBgYHJzc2NzYnJyYCNzc2EjYCe6vFCqoHaGWDvRsEHgE0VpUKBWtdXClHCQdOLs/HEwQRlucETwTYrwFtgQQF274d/vFjHTiIR6BHWitLRz0XDDkBB8UrlgEAjQACAEr/5gStBDsAEgAhAEyyHiIjERI5sB4QsBHQALAARViwEi8bsRIYPlmwAEVYsAcvG7EHED5ZsBIQsgEBCitYIdgb9FmwBxCyFgEKK1gh2Bv0WbABELAe0DAxAQUWBwcGACcuAicmNzc2ADMFARQWFxY2NzYnJiYnJgYGBJL+7ZAXAR7+zM1urGYJBQcCIAEq2wI1/FVzbIvBGgkFCXVjaqZYA6EDqfAK7v7ZBgFmwHZCQxDzASoB/XqPoAQF37laPHCFAwOC6QAAAQCH/+wEEAQ6ABEASbIDEhMREjkAsABFWLAQLxuxEBg+WbAARViwCi8bsQoQPlmwEBCyAAEKK1gh2Bv0WbAKELIFAQorWCHYG/RZsAAQsA7QsA/QMDEBIQMHFDMyNxcGJyYmNxMhNyED9v6YcAFIITseT11sZw1r/q8bA24DpP1oLVQXhDIBApaSAo2WAAEAZ//lA/oEPAAVADyyBhYXERI5ALAARViwAC8bsQAYPlmwAEVYsAsvG7ELGD5ZsABFWLARLxuxERA+WbIFAQorWCHYG/RZMDEBAwcUFhcWEgMnJicXFhcSACUmJjcTAaFtBUpHpNsHAgoitiYFD/7G/v6vqBdtBDr9bV1dagIGAXUBFjaDfQJ9gv57/i8GBPDNAo4AAAIAQf4iBTgEPgAaACMAX7IYJCUREjmwGBCwG9AAsBkvsABFWLARLxuxERg+WbAARViwBi8bsQYYPlmwAEVYsAAvG7EAED5Zsg0BCitYIdgb9FmwABCwGNCwDRCwG9CwERCyIQEKK1gh2Bv0WTAxBSYCNzYSNxcGAhcWFhcTNjYXHgIHBgAFAyMBNhInJiYHBgcCAuDhHRSljlaBexMOhm17DZJufsJdDhv+rP78VbUBI8HtBgd4YzwSDx0BOeaoAQxaiGr+2IRskRgCz2eAAgKU+If1/tIV/jMCYx8BFL6OpggEQQAAAQBP/igFTwQ8AB0ARLIdHh8REjkAsA8vsABFWLAWLxuxFhg+WbAARViwES8bsREQPlmyHAEKK1gh2Bv0WbAB0LAWELAd0LAH0LARELAO0DAxAQM2EgMnJicXFhcSBQYHAyMTJgI3EzMDBhcWFhcTA2ul1u8JAwwltScIHf74pPJUtVXe0CFStVIKBAV5cKkEOvxLJQFCARU+gnsCe4H+JdqHE/45AcsfAUb8Aeb+F0xJe58ZA7EAAAEAZv/kBfwEPAAqAFqyISssERI5ALAARViwAC8bsQAYPlmwAEVYsBgvG7EYGD5ZsABFWLAfLxuxHxA+WbAARViwJC8bsSQQPlmyCAEKK1gh2Bv0WbIMHwAREjmwEtCyIggfERI5MDEBBwYCBxUUFhcWExMzAwYHBhYXFhM2JyYnFxYXFgIGJyYmJwYnLgI3EhMCCUhLWwJPStM8M7YvBgECUlC1TDQUDS23LwoRb+CbbJgUfd9nkEEDBdcEOX+D/vqfCn+FAw0BTwE//tQvOmt/AgcBKMzOg30CfILa/l7ZBAKBbPYHA3DSgAFeASwAAAIAUf/nBG0FywAkAC8Aa7ImMDEREjmwJhCwFNAAsABFWLAeLxuxHhw+WbAARViwBy8bsQcQPlmyKB4HERI5sCgvshcBCitYIdgb9FmwAtCyDR4HERI5sAcQshMBCitYIdgb9FmwKBCwItCwHhCyLAEKK1gh2Bv0WTAxAQYHBwYHBicuAjcTNwMGFxYWFxY2NzcmAjc3NjYXFhYHAzY3AQYWFxM3JicmBgcEZzRgHyeCgLh6tFQPNrY2BwcLaVV3lxYewNIOAg7MlZGXEjtONv3kCm5+OwQEb0hbCgJyEg230nNwBQN10H8BTgL+rzg1VmQDA52QqSYBFMUQmscEBM6k/p4LDgFQgLklAVhIjQICaVkAAAEAZwAABNgFwQAaAEmyABscERI5ALAARViwBC8bsQQcPlmwAEVYsBcvG7EXHD5ZsABFWLANLxuxDRA+WbIABA0REjmwBBCyCQEKK1gh2Bv0WbAS0DAxAQE2NhcyFwcmIyYHAQMjEwMmJyYHJzYzFhYXAi0BLTZ5T0BALx0VQjb+amG6Za0aOw8mFTY+S2QgAwgB+2ZYAhyXCQJT/Wv90QJIAntJAwEImRkCV2AAAAIAZv/kBkQEOgAWACwAarIJLS4REjmwCRCwJ9AAsABFWLAVLxuxFRg+WbAARViwBy8bsQcQPlmwAEVYsAwvG7EMED5ZsBUQsgABCitYIdgb9FmyChUHERI5sBTQsBnQsAcQsikBCitYIdgb9FmwINCyJBkHERI5MDEBIxYVFAIGJyYmJwYnLgI3NjY3BzchASYnJQYGBwYWFxYTNzMHBwYWFxYTNgYngAdyw4VvlxJ+3WGCOAYHREB1HAWm/rMDC/zTUEkHBT1C2TgmtycGB1JWqTwdA6FcWtD+hroEAoNr9wcDctt9ledvApn+slpbAYvqmn+OBQ4BaPf8RYSLAgQBTqEAAQCh//IFegWwABkAYQCwAEVYsBgvG7EYHD5ZsABFWLAULxuxFBA+WbAARViwCi8bsQoQPlmwGBCyFwEKK1gh2Bv0WbAB0LIEFBgREjmwBC+wChCyCwEKK1gh2Bv0WbAEELIRAQorWCHYG/RZMDEBIQM2FxYWBwYEBzc2Njc2JicmBwMjEyE3IQTq/gdWo3bW8BES/t7zC5e5Dw6JhXynerzh/m0cBEkFEv44MgMC8c7U7gSYAp6PhpECAy79WQUSngABAHj/5gT/BccAJABqALAARViwDS8bsQ0cPlmwAEVYsAMvG7EDED5ZsA0QsREKK1jYG9xZsA0QshQBCitYIdgb9FmwAxCwGNCwGC+yLxgBXbIZAQorWCHYG/RZsAMQsiEBCitYIdgb9FmwAxCxJAorWNgb3FkwMQEGACcuAicmEhI3NhcWEhcjJiYnJgYDIQclBwYHBhYWFxY2NwSXKv6744fJcQYGTeaobXvN8Ae6B4qBrvY7AjAc/d0CDAMGQYJcmsczAdDi/vgGA3/uknABuAFFQSsDBP7/5KihAwX8/v2dBQo0Om6/ZAMFnawAAv/MAAAH8gWwABgAIQBushoiIxESObAaELAK0ACwAEVYsAAvG7EAHD5ZsABFWLAILxuxCBA+WbAARViwEC8bsRAQPlmyAgAIERI5sAIvsAAQsgoBCitYIdgb9FmwEBCyEgEKK1gh2Bv0WbAb0LACELIhAQorWCHYG/RZMDEBAwUWFgcGBCMhEyEDBwICByM3NzY2EzcTAQMFMjY3NiYnBV5jAUjM4xET/tbk/eXi/hF4Hz7wu0wSJoSoKxWPAuFkAUqMwhIPf3cFsP3LAQbwwM33BRL91Jn+zv7pBJwBBugBBHcCqv0t/cABpYd8lAQAAgBDAAAH/gWwABIAGwCCsgEcHRESObABELAT0ACwAEVYsBIvG7ESHD5ZsABFWLACLxuxAhw+WbAARViwDy8bsQ8QPlmwAEVYsAwvG7EMED5ZsgACDxESObAAL7IEDAIREjmwBC+wABCyDgEKK1gh2Bv0WbAEELITAQorWCHYG/RZsAwQshQBCitYIdgb9FkwMQEhEzMDBRYWBwYEIyETIQMjEzMBAwUyNjc2JicBjwK3brtqATfR8Q8R/tjn/eh0/Ul0vf28Au5bAUmLwBEPfX0DOQJ3/Z4BAd27x+0CnP1kBbD9Af31AZN/bocEAAEAtAAABaIFsAAXAFeyAxgZERI5ALAARViwFi8bsRYcPlmwAEVYsAgvG7EIED5ZsABFWLASLxuxEhA+WbAWELIVAQorWCHYG/RZsAHQsgQIFhESObAEL7IPAQorWCHYG/RZMDEBIQM2FxYWBwMjEzYnJiYnJgcDIxMhNyEE/P4AUZyp39MXS71MCAgMb2uMw3+84v5zHARIBRL+TykCBOvS/jkByEU2UVMDAyr9PQUSngABAEL+mQVuBbAACwBIALAJL7AARViwAC8bsQAcPlmwAEVYsAQvG7EEHD5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmyAgEKK1gh2Bv0WbAD0DAxATMDIRMzAyEDIxMhAT+84QK34rv9/k4+vT/+PwWw+u0FE/pQ/pkBZwACADQAAASWBbAADAAVAFuyDxYXERI5sA8QsAPQALAARViwCy8bsQscPlmwAEVYsAkvG7EJED5ZsAsQsgABCitYIdgb9FmyAgsJERI5sAIvsg0BCitYIdgb9FmwCRCyDgEKK1gh2Bv0WTAxASEDBRYWBwYEIyETIQEDBTI2NzYmJwR6/VhLATbY7BEQ/tjp/eX9A2X81mABSo3AEQ58fAUS/kwBAeK/x/QFsP0Q/d0BnoN2iAQAAAL/i/6aBXoFsAAOABUAVbISFhcREjmwEhCwC9AAsAQvsABFWLALLxuxCxw+WbAARViwAi8bsQIQPlmwBBCwAdCwAhCyBwEKK1gh2Bv0WbAP0LAN0LALELIRAQorWCHYG/RZMDEBIxMhAyMTFzYTNxMhAzMFJRMhAwcCBPa7PvwMP7tZa89lFJQDT+K5+9gCs8b+JG4dXf6bAWX+mgIDAqkBfk4CoPrtAwMEdf4Lcv6pAAAB/6wAAAd1BbAAFQCGALAARViwCS8bsQkcPlmwAEVYsA0vG7ENHD5ZsABFWLARLxuxERw+WbAARViwAi8bsQIQPlmwAEVYsAYvG7EGED5ZsABFWLAULxuxFBA+WbACELAQ0LAQL7IvEAFdss8QAV2yAAEKK1gh2Bv0WbAE0LIIEAAREjmwEBCwC9CyEwAQERI5MDEBIwMjEyMBIwEBMwEzEzMDMwEzAQEjBJWcc7x0mf399gJo/sXRAQqlbrtukgHm6f3JAVLcApj9aAKY/WgDCgKm/YgCeP2IAnj9R/0JAAEAJf/qBJgFxwAqAGAAsABFWLANLxuxDRw+WbAARViwGS8bsRkQPlmwDRCyBgEKK1gh2Bv0WbANELAK0LAZELAq0LAqL7IpAQorWCHYG/RZshIpKhESObAZELAd0LAZELIgAQorWCHYG/RZMDEBMjY3NiYnJgYHBzYkFxYWBwYFFhYHBgYEJyYmNxcGFhcWNjc2NzYmJyc3Am2UvQ4NlYB+uxS6EgEs0tvwEBH+9WdfCAuX/vmZ0PMJugiUfEWGNm4QDoKUrRwDNIV4c4ICAolvAbbgAgXdtdR0LaxvhMVrAgTovQF1kwQCJCVMf3WCBQGeAAABAEMAAAVuBbAACQBdALAARViwAC8bsQAcPlmwAEVYsAcvG7EHHD5ZsABFWLACLxuxAhA+WbAARViwBS8bsQUQPlmyBAACERI5QAmKBJoEqgS6BARdsgkAAhESOUAJhQmVCaUJtQkEXTAxATMDIxMBIxMzAwSswv27wfyPw/28wQWw+lAEVvuqBbD7qgAAAf/KAAAFZQWwABAATbIEERIREjkAsABFWLAALxuxABw+WbAARViwAS8bsQEQPlmwAEVYsAgvG7EIED5ZsAAQsgMBCitYIdgb9FmwCBCyCgEKK1gh2Bv0WTAxAQMjEyEDAgYHIzc3NjY3NxMFZfy84f4Ip0Hiq1cSJIemKxaPBbD6UAUS/Pb+8/UGnQEI5P99AqoAAAEAk//mBUAFsAAQADyyAxESERI5ALAARViwAS8bsQEcPlmwAEVYsBAvG7EQHD5ZsABFWLAGLxuxBhA+WbIKAQorWCHYG/RZMDEBATMBBgYnJic3FzI/AgEzAoYB2OL9PVG0ejwvFlljRSQ6/tvJAmQDTPtCk3kCAgmYBmM4ZgQqAAADAFv/xAXfBewAGAAhACoAarIeKywREjmwHhCwC9CwHhCwI9AAsBcvshYXKxESObAWL7AA0LAAL7INKxcREjmwDS+wCtCwCi+wDRCwDNCwDC+wDRCyHQEKK1gh2Bv0WbAWELIfAQorWCHYG/RZsB0QsCPQsB8QsCrQMDEBFxYWEgcGAgQnIwcjNyImAjc2EiQ3MzczAQYWFxcTIwYEJQMzNiQ3NiYnA9gUmOpxEBK6/tunICe2KKjscxAQswEcojYqsP0iF5uiLp8evP7/ApKeHboBARkWpKcFHQEDl/73nKj+65kBxMWWAQygowEQnATO/N+45QwCA2kD9vf8lwP0yL/kBwAAAQBB/qEFbQWwAAsAOwCwCS+wAEVYsAAvG7EAHD5ZsABFWLAELxuxBBw+WbAARViwCi8bsQoQPlmyAgEKK1gh2Bv0WbAG0DAxATMDIRMzAzMDIxMhAT684QK34rvhlWqqPvv2BbD67QUT+vH+AAFfAAEAzgAABUQFsAASAEiyDxMUERI5ALAARViwEi8bsRIcPlmwAEVYsAovG7EKHD5ZsABFWLABLxuxARA+WbIPAQoREjl8sA8vGLIFAQorWCHYG/RZMDEBAyMTBicmJjcTMwMGFxYXFjcTBUT9vG+xydzWF0y8SwgIGM+h4H0FsPpQAlw3AgLr1QHH/jhFNaUDAzYCtwABAEIAAAc4BbAACwBIALAARViwAC8bsQAcPlmwAEVYsAMvG7EDHD5ZsABFWLAHLxuxBxw+WbAARViwCS8bsQkQPlmyAQEKK1gh2Bv0WbAF0LAG0DAxAQMhEzMDIRMzAyETAfvhAeXhu+IB4uG8/foH/QWw+u0FE/rtBRP6UAWwAAEAQv6hBzgFsAAPAFQAsAsvsABFWLAALxuxABw+WbAARViwAy8bsQMcPlmwAEVYsAcvG7EHHD5ZsABFWLANLxuxDRA+WbIBAQorWCHYG/RZsAXQsAbQsAnQsArQsALQMDEBAyETMwMhEzMDMwMjEyETAfvhAeXhu+IB4uG84o9poj36K/0FsPrtBRP67QUT+uf+CgFfBbAAAgCJAAAFgAWwAAwAFQBesgEWFxESObABELAN0ACwAEVYsAAvG7EAHD5ZsABFWLAJLxuxCRA+WbICAAkREjmwAi+wABCyCwEKK1gh2Bv0WbACELINAQorWCHYG/RZsAkQsg4BCitYIdgb9FkwMRMhAwUWFgcGBCMhEyEBAwUyNjc2JiekAkpnATba6RER/tno/ebi/nIB42ABSo2/EQ58ewWw/a4BAeW9yfEFGP2o/d0BnoN2iAQAAAMARQAABpYFsAAKABMAFwBtshIYGRESObASELAG0LASELAV0ACwAEVYsAkvG7EJHD5ZsABFWLAWLxuxFhw+WbAARViwBy8bsQcQPlmwAEVYsBQvG7EUED5ZsgAJBxESObAAL7ILAQorWCHYG/RZsAcQsgwBCitYIdgb9FkwMQEFFhYHBgQjIRMzAwMFMjY3NiYnASMTMwGWATbY7BEQ/tjp/ef8vIJgAUqNwBEOfHwCwLv9uwNeAQHiv8f0BbD9EP3dAZ6DdogE/UEFsAAAAgA2AAAEgQWwAAoAEwBNsg0UFRESObANELAB0ACwAEVYsAkvG7EJHD5ZsABFWLAHLxuxBxA+WbIACQcREjmwAC+yCwEKK1gh2Bv0WbAHELIMAQorWCHYG/RZMDEBBRYWBwYEIyETMwMDBTI2NzYmJwGHATbY7BEQ/tjp/ef8vIJgAUqNwBEOfHwDXgEB4r/H9AWw/RD93QGeg3aIBAABAHT/6QT8BcoAIgBgALAARViwFS8bsRUcPlmwAEVYsB8vG7EfED5ZsADQsB8QsgMBCitYIdgb9FmwHxCwCNCwCC+yLwgBXbLPCAFdsgcBCitYIdgb9FmwFRCyDgEKK1gh2Bv0WbAVELAR0DAxARYWFxYSNwU3ITY3NiYnJgYHBzYAFx4CFxYCAgcGJyYmJwEwB42OrOw3/c0cAikJAgOZkY/FMbsuAT3cjM53BwZL26BvfdX5CAHPp5wEBQEI/QGeODu50gQFpKsB5gEIBgN97JRy/k/+vEQwAwT+4QACAEn/5wbOBccAFwAnAHeyASgpERI5sAEQsCLQALAARViwDy8bsQ8cPlmwAEVYsAkvG7EJHD5ZsABFWLAALxuxABA+WbAARViwBi8bsQYQPlmyCgYJERI5fLAKLxiyBQEKK1gh2Bv0WbAPELIbAQorWCHYG/RZsAAQsiMBCitYIdgb9FkwMQUmJgI3IwMjEzMDMzYSJBcWEhcWAgIHBgE2JicmBgIHBwYWFxYSEzYEEpveaRDObrv9u3THIcIBGabV9gkEM4NlsAEOBpaUhtOHEgMGmJG9+SkUFAOiATa2/YMFsP1kzgFCowME/uH1af68/upepAOXxdkEBJj+0ehBxN4EBQEbAQB+AAL/6AAABNgFsQANABYAYbIRFxgREjmwERCwAtAAsABFWLALLxuxCxw+WbAARViwAC8bsQAQPlmwAEVYsAMvG7EDED5ZshIACxESObASL7IBAQorWCHYG/RZsgUBCxESObALELIUAQorWCHYG/RZMDEhEyEBIwEmJjc2JDMFAwEGFhcFEyciBgMeY/7B/nnTAbxyaAsSATTsAdH9/bYQhX0BGWT+msYCN/3JAnA6yH/Q8AH6UAPyfJ0EAQI+AZoAAAIARv/nBFUGEQAcACsATbIZLC0REjmwGRCwHdAAsBQvsABFWLAILxuxCBA+WbIACBQREjmwAC+yGwAIERI5sAgQsiUBCitYIdgb9FmwABCyKwEKK1gh2Bv0WTAxAR4CBwcGACcuAj8CEgA3NzY3Mw4CBAYHNhcmBg8CFhYXFjY3NiYnAo16sVYMAx7+19GGwlkQBAUnASfycZcZlQpLiv660kCpmn+2GwcDA3lsibsaDn55A/wCfuCHF/T+3QUCjfGPHi0BTwGmMRUhb2B3SUC4p66bA6uVL1WEnQIDzsiYtQQAAAMAMAAABA0EOgANABYAHgBXALAARViwAS8bsQEYPlmwAEVYsAAvG7EAED5ZshcAARESOXywFy8Ysg4BCitYIdgb9FmyBw4XERI5sAAQsg8BCitYIdgb9FmwARCyHgEKK1gh2Bv0WTAxMxMFFhYHBgcWFgcGBgcDAwUyNjc2JiclFzI2NzYnJzC8AX7K2QoKylBaBAbmwfE5AR5wiwsKYWH+5t6DkgsV7PEEOgEBk4ybVhiBVJKnAgHb/roBW1FITwOVAVJOjgcBAAABAC0AAAODBDoABQArALAARViwBC8bsQQYPlmwAEVYsAIvG7ECED5ZsAQQsgABCitYIdgb9FkwMQEhAyMTIQNn/h2htrwCmgOh/F8EOgAC/43+wgQ+BDoADgAUAFKyEhUWERI5sBIQsAnQALAML7AARViwBC8bsQQYPlmwAEVYsAovG7EKED5ZsgABCitYIdgb9FmwD9CwBtCwDBCwCdCwBBCyEQEKK1gh2Bv0WTAxNzY2NxMhAzMDIxMhAyMTBSUTIQMCLW+IIFQCpqKHUrQ3/SU3tVMBJAHjhP6/RESUZvyuAZb8Xf4rAT7+wgHVAwMC+P67/uUAAAH/pQAABg4EOgAVAJAAsABFWLAJLxuxCRg+WbAARViwDS8bsQ0YPlmwAEVYsBEvG7ERGD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmwAEVYsBQvG7EUED5ZsAIQsBDQsBAvsr8QAV2y/xABXbIvEAFdss8QAXGyAAEKK1gh2Bv0WbAE0LIIEAAREjmwEBCwC9CyEwAQERI5MDEBIwMjEyMBIwEDMxMzEzMDMwEzAQEjA7yDUbVSd/6I8QHi9c7BgE61T3MBX+f+SAES1wHW/ioB1v4qAjoCAP5AAcD+QAHA/ev92wABACH/6gOqBFAAJwBqALAARViwDS8bsQ0YPlmwAEVYsBkvG7EZED5ZsA0QsgYBCitYIdgb9FmwDRCwCtCwGRCwJ9CwJy+yLycBXbK/JwFdsiYBCitYIdgb9FmyEiYnERI5sBkQsBzQsBkQsiABCitYIdgb9FkwMQEyNjc2JiMmBgcHNjYXFhYHBgcWFgcOAicmJjcXBhYXFjY3NicnNwIBZnsICWNYWo4RtBD5rKnBCgrCS0UFBnfMd6nVBrEEdF9nkwsVzbkcAnVWT0dYAmBOAZWvAgKli5xZIX1RaJZQAwK6mAFSawICZFShAQGcAAABAC8AAAQ3BDoACQBFALAARViwAC8bsQAYPlmwAEVYsAcvG7EHGD5ZsABFWLACLxuxAhA+WbAARViwBS8bsQUQPlmyBAcCERI5sgkHAhESOTAxATMDIxMBIxMzAwN8u7y1iP2cu7y0hwQ6+8YDCfz3BDr89gAAAQAvAAAEVwQ6AAwAdwCwAEVYsAQvG7EEGD5ZsABFWLAILxuxCBg+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsAIQsAbQsAYvsp8GAV2y/wYBXbLPBgFxsp8GAXG0vwbPBgJdsi8GAV2ybwYBcrIBAQorWCHYG/RZsgoBBhESOTAxASMDIxMzAzMBMwEBIwG+iVG1vLVQbgGw6f3+AVvWAc3+MwQ6/jYByv3v/dcAAAH/yAAABDkEOgARAE2yBBITERI5ALAARViwAC8bsQAYPlmwAEVYsAEvG7EBED5ZsABFWLAJLxuxCRA+WbAAELIDAQorWCHYG/RZsAkQsgwBCitYIdgb9FkwMQEDIxMhAwcGBgcjNzc2Njc3EwQ5vLai/pxRFjW+lU4SJ2F8IBJiBDr7xgOh/o5s8s4DogIGoa5nAdoAAAEAMAAABX4EOgAMAFkAsABFWLABLxuxARg+WbAARViwCy8bsQsYPlmwAEVYsAMvG7EDED5ZsABFWLAGLxuxBhA+WbAARViwCS8bsQkQPlmyAAsDERI5sgULAxESObIICwMREjkwMSUBMwMjEwEjAwMjEzMCogH25ry1h/4sftCOtLzl9wND+8YDBfz7Ayz81AQ6AAABAC8AAAQ2BDoACwCKALAARViwBi8bsQYYPlmwAEVYsAovG7EKGD5ZsABFWLAALxuxABA+WbAARViwBC8bsQQQPlmwABCwCdCwCS+ybwkBXbS/Cc8JAl2yPwkBcbTPCd8JAnGyDwkBcrSfCa8JAnGy/wkBXbIPCQFxsp8JAV2yLwkBXbRvCX8JAnKyAgEKK1gh2Bv0WTAxISMTIQMjEzMDIRMzA3q1Uf4fUbW8tVEB4FK1Ac7+MgQ6/isB1QAAAQAvAAAENwQ6AAcAOACwAEVYsAYvG7EGGD5ZsABFWLAALxuxABA+WbAARViwBC8bsQQQPlmwBhCyAgEKK1gh2Bv0WTAxISMTIQMjEyEDe7Wi/h6itbwDTAOh/F8EOgAAAQBgAAAD6AQ6AAcAMQCwAEVYsAYvG7EGGD5ZsABFWLACLxuxAhA+WbAGELIAAQorWCHYG/RZsATQsAXQMDEBIQMjEyE3IQPO/qCitKH+pxoDbgOk/FwDpJYAAwBM/mAFPQYAAB8ALAA6AH2yJzs8ERI5sCcQsBLQsCcQsDXQALADL7AARViwAC8bsQAYPlmwAEVYsAcvG7EHGD5ZsABFWLATLxuxExI+WbAARViwFy8bsRcQPlmwENCwBxCyJAEKK1gh2Bv0WbAXELIyAQorWCHYG/RZsCnQsAAQsjcBCitYIdgb9FkwMQEWFxMzAzYXFhcWDwIGAicmJwMjEwYnIiYnJjc3EhIBNicmJyYHAxYXFjY3BQYVFxYXFjcTJiMmBgcCJ1JBV7VZTVHVQRwCCAIi8bhXTFC1UUlHkJ8DAQYMLesDCAsDEKYzPY4sO3+pGvyMBgITnS86jjQqfaEgBFACHgHQ/iojAQPrZ3R4EPn+5AMCIf5UAakdAdW5OzdSAQABE/29ZEfzBwIU/O8QAgLHtg01PjC/BwISAxMSAs3PAAEAL/6/BDcEOgALADsAsAgvsABFWLAALxuxABg+WbAARViwBC8bsQQYPlmwAEVYsAovG7EKED5ZsgIBCitYIdgb9FmwBtAwMRMzAyETMwMzAyMTIeu1oQHhorWifmSiOPzqBDr8XQOj/F3+KAFBAAABAHsAAAQABDsAEgBIsg4TFBESOQCwAEVYsBEvG7ERGD5ZsABFWLAJLxuxCRg+WbAARViwAS8bsQEQPlmyDgEJERI5fLAOLxiyBAEKK1gh2Bv0WTAxISMTBicmJjcTMwMGFxYXFjcTMwNEtkt7drK7FTK1MwYFEJ5uiWK2AYkhAgLauQE8/sM0LZQGAx8CGwABAC8AAAYIBDoACwBIALAARViwAC8bsQAYPlmwAEVYsAMvG7EDGD5ZsABFWLAHLxuxBxg+WbAARViwCS8bsQkQPlmyAQEKK1gh2Bv0WbAF0LAG0DAxAQMhEzMDIRMzAyETAaChAX+htaIBfqK2vPrjvAQ6/F0Do/xdA6P7xgQ6AAEAJP6/Bf0EOgAPAEsAsAwvsABFWLAALxuxABg+WbAARViwAy8bsQMYPlmwAEVYsAcvG7EHGD5ZsABFWLANLxuxDRA+WbIBAQorWCHYG/RZsAXQsAnQMDEBAyETMwMhEzMDMwMjEyETAZaiAX+itKEBfaK2opRjozj7A7wEOvxdA6P8XQOj/F3+KAFBBDoAAAIAVgAABHsEOgAMABUAXrIBFhcREjmwARCwDdAAsABFWLAALxuxABg+WbAARViwCS8bsQkQPlmyAgAJERI5sAIvsAAQsgsBCitYIdgb9FmwAhCyDQEKK1gh2Bv0WbAJELIOAQorWCHYG/RZMDETIQMXFhYHBgYjIRMhAQMFNjY3NiYncQHsQf6jvgsL87v+NaH+yQGsRwEAa4cNC1ZYBDr+iwEEupilyQOi/oz+aQECcV5XawQAAwAwAAAFqQQ6AAoAEwAXAFoAsABFWLAKLxuxChg+WbAARViwFi8bsRYYPlmwAEVYsAgvG7EIED5ZsABFWLAVLxuxFRA+WbIACAoREjmwAC+yCwEKK1gh2Bv0WbAIELIMAQorWCHYG/RZMDEBFxYWBwYGIyETMwMDBTY2NzYmJwEjEzMBX+2xwgsL873+N7y1W0cBAGuHDQtXVwKStby1AsUCAbuZpckEOv30/mkBAnFeV2sE/dMEOgAAAgAwAAADvwQ6AAoAEwBNsgcUFRESObAHELAN0ACwAEVYsAkvG7EJGD5ZsABFWLAHLxuxBxA+WbIACQcREjmwAC+yCwEKK1gh2Bv0WbAHELIMAQorWCHYG/RZMDEBFxYWBwYGIyETMwMDBTY2NzYmJwFf7bHCCwvzvf43vLVbRwEAa4cNC1dXAsUCAbuZpckEOv30/mkBAnFeV2sEAAABADT/5wPEBFAAIQBoALAARViwCC8bsQgYPlmwAEVYsBIvG7ESED5ZsAgQsgABCitYIdgb9FmwCBCwBNCwEhCwFdCwEhCyGQEKK1gh2Bv0WbASELAe0LAeL7IvHgFdsr8eAV2yIB4BcbIdAQorWCHYG/RZMDEBJgYHBz4CFx4CFxYHBwYAJyYmNxcGFhcWNjchNyE2JgI7Y5gUqwqDyWxspGMJBQYDHf7V0KXKCKsGa2B0sDH+cBsBhAhzA7cCeF4BZKtfAQNju3dBQRn7/sYFBNyoAWWJBAWxrpiRsAACADD/5wYHBFQAFQAmAH0AsABFWLAVLxuxFRg+WbAARViwBC8bsQQYPlmwAEVYsBIvG7ESED5ZsABFWLAMLxuxDBA+WbIAEhUREjl8sAAvGLKAAAFdtEAAUAACXbRQAGAAAnGyEQEKK1gh2Bv0WbAMELIbAQorWCHYG/RZsAQQsiMBCitYIdgb9FkwMQEzNgAXHgIHBwIAJy4CNwUDIxMzAQYXFBYXFjY3NicmJicmBgcBUPRCASPAiL9XDwEi/szYfsFdC/7/U7S8tAFPBQF4bovLGwcFCXZmjMgaAm/lAQAFBI/6mAn+/P7KBQKE4IYB/ikEOv3QKi2NoQQF5Mk/RXiNBAXjuAAC/78AAAP/BDsADQAWAGGyFBcYERI5sBQQsA3QALAARViwAC8bsQAYPlmwAEVYsAEvG7EBED5ZsABFWLAFLxuxBRA+WbISAAEREjmwEi+yAwEKK1gh2Bv0WbIHAwAREjmwABCyEwEKK1gh2Bv0WTAxAQMjEyEBIwEmJjc2NjMBBhYXBRMnBgYD/7y2Sf75/r/PAV9VUAYL+rj++ApWTgEiP/dpjgQ6+8YBpf5bAcUqnF2buP6sTVgEAQFnAQJmAAABAB/+RQPjBgAAIwCAALAhL7AARViwBC8bsQQYPlmwAEVYsAsvG7ELEj5ZsABFWLAaLxuxGhA+WbK/IQFdsi8hAV2yDyEBXbIiGiEREjmwIi+yAQEKK1gh2Bv0WbICGgQREjmwCxCyEAEKK1gh2Bv0WbAEELIXAQorWCHYG/RZsAEQsBzQsCIQsB/QMDEBIQM2FxYWBwMGBiciJzcWMzI3EzYnJicmBwMjEyM3MzczByECu/7rNo66mpETgRbAlS1LHzExiyOBBgQRlaZ4hrXSnxqfH7UfARYEuf79mwQEz7X84qi6BBSSD9MDFTEqjAMEsvz8BLmYr68AAQBO/+gD/QRTAB4AZQCwAEVYsA8vG7EPGD5ZsABFWLAILxuxCBA+WbIAAQorWCHYG/RZsAgQsATQsA8QsBLQsA8QshYBCitYIdgb9FmwCBCwGtCwGi+yvxoBXbL/GgFdsi8aAV2yGwEKK1gh2Bv0WTAxJRY2NzcOAicmAjc3EgAXFhYHIzQmJyYGByEHIQYWAfFhnRusD4XOa8rRFwMeAS3XqcoCqnFferIxAY4b/n0PdoICc2EBZahgAwUBKO0bAQIBMQUE3ahrgwQFp62YlrUAAv/DAAAGLwQ6ABgAIQB5sgoiIxESObAKELAa0ACwAEVYsAAvG7EAGD5ZsABFWLAILxuxCBA+WbAARViwEC8bsRAQPlmyAgAIERI5sAIvsAAQsgoBCitYIdgb9FmwEBCyEwEKK1gh2Bv0WbAIELIbAQorWCHYG/RZsAIQsiEBCitYIdgb9FkwMQEDFxYWBwYGIyETIQMHBgYHIzc3NjY3NxMBAwU2Njc2JicEFkj+pb4JCfG+/jai/rtRGDPAmkgTJmF8IBJiAkdAAQBmjAsLWFsEOv5kAQWtkZu/A6H+jnbn0QGiAgahrmcB2v3M/o8BAm1ZSloFAAACAC8AAAZPBDoAEgAbAHuyARwdERI5sAEQsBPQALAARViwAi8bsQIYPlmwAEVYsBEvG7ERGD5ZsABFWLALLxuxCxA+WbAARViwDy8bsQ8QPlmyARELERI5sAEvsATQsAEQsg0BCitYIdgb9FmwBBCyEwEKK1gh2Bv0WbALELIUAQorWCHYG/RZMDEBIRMzAxcWFgcGBiMhEyEDIxMzAQMFNjY3NiYnAVkB4Ue1SP6jwAkJ8b7+N1v+H1u1vLUCNEABAGaKDQtXXAKhAZn+YwEErpCbvwIK/fYEOv3M/o8BAmxaSloFAAEAHwAAA+MGAAAaAHmyAxscERI5ALAXL7AARViwBC8bsQQYPlmwAEVYsAgvG7EIED5ZsABFWLARLxuxERA+WbK/FwFdsi8XAV2yDxcBXbIaERcREjmwGi+yAAEKK1gh2Bv0WbICBBEREjmwBBCyDgEKK1gh2Bv0WbAAELAT0LAaELAV0DAxASEDNhcWFgcDIxM2JyYnJgcDIxMjNzM3MwchAtH+0TGOuZiTE3a1dwYFEZSmeIa104sbih61IAEtBL7++JsEAs25/TsCyDEqjAMEsvz8BL6Xq6sAAQAv/pwENwQ6AAsARQCwCC+wAEVYsAAvG7EAGD5ZsABFWLADLxuxAxg+WbAARViwBS8bsQUQPlmwAEVYsAkvG7EJED5ZsgEBCitYIdgb9FkwMQEDIRMzAyEDIxMhEwGgoQHhorW8/rg/tD7+sbwEOvxdA6P7xv6cAWQEOgAAAQBv/+QG4wWwACEAYLIGIiMREjkAsABFWLAALxuxABw+WbAARViwGS8bsRkcPlmwAEVYsA4vG7EOHD5ZsABFWLAELxuxBBA+WbAARViwCS8bsQkQPlmyFAEKK1gh2Bv0WbIHFAQREjmwHdAwMQEDBgYnJiYnBicmJjcTMwMGFxYWFxY2NxMzAwYWFxY2NxMG47Qb/7lqnCCL3au0E7S8swUEB1JFbZwRtcKzDF5eZI4VtgWw+93E4wQCX1C3BgbntgQj+9wtLU5aAwWQegQk+9x4igMDhncELwABAE//5gXfBDoAIQBLALAARViwDi8bsQ4YPlmwAEVYsBgvG7EYGD5ZsABFWLAhLxuxIRg+WbAARViwCS8bsQkQPlmwBNCwCRCyFAEKK1gh2Bv0WbAd0DAxAQMGBicmJicGJyYmNxMzAwYXFhYXFjY3EzMDBhYXFjY3EwXfehndrFqIH3u+mKIRerR6BAMDRDxbgxJ7tnoKT09VeBJ6BDr9KLDMBAJNRZgEBM6lAtn9JiYmQFADBHhrAtr9JmZ3AgN1bQLaAAACAC7//APDBhYAEgAbAHGyFRwdERI5sBUQsAnQALAARViwDy8bsQ8ePlmwAEVYsAkvG7EJED5ZshIPCRESObASL7IAAQorWCHYG/RZsgMPCRESObADL7AAELAL0LASELAN0LAJELIVAQorWCHYG/RZsAMQshsBCitYIdgb9FkwMQEhAxcWFgcGBichEyM3MxMzAyEBAxc2Njc2JicC1v7JOv2lvAwO+7X+Nby6G7g5tjkBOP5aTf9ojgwNV1YEOv6wAQbEnrDVBAQ6lwFF/rv9gf5FAgJ7aVt3BAAAAQBJ/+cGswXKACsAh7IYLC0REjkAsABFWLArLxuxKxw+WbAARViwBi8bsQYcPlmwAEVYsCgvG7EoED5ZsABFWLAgLxuxIBA+WbIAKygREjmwAC+wBhCwCtCwBhCyDQEKK1gh2Bv0WbAAELAQ0LAAELInAQorWCHYG/RZsBLQsCAQshkBCitYIdgb9FmwIBCwHNAwMQEzNjY3NhcWEhcjJiYnJgYHIQclBgcGFhYXFjY3NwYAJyYCJyY3NwcDIxMzAZa5IXxasPnP7wa6B4qBq/M9AhQb/fcOAgY+gV2ZyDS6L/6648r3BwMOBsZ3vP28A0CQ+VeqBQT+/eKooQMF9PmXAU49bsBkAwWdrAHj/vsGBAEY5VBQHAH9VwWwAAEALP/oBY0EUwAkAMSyAyUmERI5ALAARViwBC8bsQQYPlmwAEVYsCQvG7EkGD5ZsABFWLAhLxuxIRA+WbAARViwHC8bsRwQPlmyDxwEERI5sA8vtL8Pzw8CXbQ/D08PAnG0zw/fDwJxtA8PHw8CcrSfD68PAnGy/w8BXbIPDwFxtC8PPw8CXbRvD38PAnKwANCyCA8EERI5sAQQsgsBCitYIdgb9FmwDxCyEAEKK1gh2Bv0WbAcELIUAQorWCHYG/RZshccBBESObAQELAf0DAxATM2JBcWFgcjNCYnJgYHIQchBhYXFjY3Nw4CJyYCNwcDIxMzAUyxQQEZw6fMAqpwX32xMAGuG/5dD3Z2ZpkarA+HzGu/2xPAULa8tgJn8PwFBN2oaoQEA6mql5a1AwJ1XwFlqV8DBAETzwH+MAQ6AAAC/7oAAARTBbAACwAOAFYAsABFWLAILxuxCBw+WbAARViwAi8bsQIQPlmwAEVYsAYvG7EGED5ZsABFWLAKLxuxChA+WbINCAIREjmwDS+yAAEKK1gh2Bv0WbAE0LIOCAIREjkwMQEjAyMTIwMjATMTIwEhAwNVp0y4TZbeyQL6p/i4/hoBhlsBtv5KAbb+SgWw+lACWgJHAAL/ogAAA5oEOgALABAAVgCwAEVYsAgvG7EIGD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmwAEVYsAovG7EKED5Zsg0CCBESObANL7IBAQorWCHYG/RZsATQsg8IAhESOTAxASMDIxMjAyMBMxMjASEDJwcCpnQ0tTRyqMECaJz0sf52ASVIBSgBKf7XASn+1wQ6+8YBwQFGTFsAAgBaAAAGVQWwABMAFgB8ALAARViwAi8bsQIcPlmwAEVYsBIvG7ESHD5ZsABFWLAELxuxBBA+WbAARViwCC8bsQgQPlmwAEVYsAwvG7EMED5ZsABFWLAQLxuxEBA+WbIVAgQREjmwFS+wANCwFRCyBgEKK1gh2Bv0WbAK0LAGELAO0LIWAgQREjkwMQEhATMTIwMjAyMTIwMjEyEDIxMzASEDAX8BdgHBp/i5RqdMuE2V4Mjn/sJNvf29AaMBhVoCWQNX+lABtv5KAbb+SgG4/kgFsPyqAkcAAgBOAAAFSwQ6ABMAGAB/ALAARViwAi8bsQIYPlmwAEVYsBIvG7ESGD5ZsABFWLAELxuxBBA+WbAARViwCC8bsQgQPlmwAEVYsAwvG7EMED5ZsABFWLAQLxuxEBA+WbIAEBIREjmwAC+wAdCyDgEKK1gh2Bv0WbAL0LAH0LABELAU0LAV0LIXEgQREjkwMQEhATMTIwMjAyMTIwMjEyMDIxMzASEDJwcBUQECAWmb9LBDdTS1NXOowarGNLW8tgFRASVIBicBwQJ5+8YBKf7XASn+1wEo/tgEOv2HAUZMWwACACYAAAYvBbAAHgAiAHayDiMkERI5sA4QsB/QALAARViwHS8bsR0cPlmwAEVYsBYvG7EWED5ZsABFWLAGLxuxBhA+WbAARViwDi8bsQ4QPlmyGw4dERI5sBsvsADQsBsQshIBCitYIdgb9FmwDNCwGxCwH9CwHRCyIgEKK1gh2Bv0WTAxATMyFgcDIxM2JyYnJwcDIxMnJyYGBwMjEzYkMzMBBQEzAQUEQg3Y1Rg8vT0IBxXJdx5tvXIGgJmoGD28PR4BEPgk/vwEhv08DwFo/dUDJ+bQ/o8BckM0oAMCJf2XAngTAwKIkf6JAXHb3wKFAv18AegBAAIAKQAABQsEOgAcACAAWACwAEVYsAUvG7EFGD5ZsABFWLAcLxuxHBA+WbIEHAUREjmwBC+wB9CwHBCwFdCwDNCwBBCyGAEKK1gh2Bv0WbAR0LAEELAd0LAFELIgAQorWCHYG/RZMDEzNzY2NwMhARYWBwcjNzYnJicnBwMjEycnJgYHBwEXEyEpGh7t1rwDo/6Nq6cWGbYZBwIKtTURT7VUAzqDmxgcAfUJ6/6fqtLXCQHe/h4L5MWkpT0zqAcCFv5QAbwJAQKCj7cCXAEBRwACAEgAAAhaBbAAJAAoAJmyICkqERI5sCAQsCjQALAARViwBy8bsQccPlmwAEVYsAsvG7ELHD5ZsABFWLAALxuxABA+WbAARViwBS8bsQUQPlmwAEVYsBMvG7ETED5ZsABFWLAcLxuxHBA+WbIJBQcREjmwCS+yBAEKK1gh2Bv0WbAJELAN0LAEELAZ0LAEELAf0LAJELAl0LALELIoAQorWCHYG/RZMDEhEzY3BQMjEzMDIQEhATMWFxYHAyMTNicmJycHAyMTJycmBgcDATMBBQJHQyFf/m1zvP28cANF/vQEkP4KE9ZoaBc8vT0IBxSwkR9tvHIHgJWqGD4CiQ8BaP3VAYyoYwP9bAWw/XwChP13AXJz0P6PAXJDNJQNBCf9mQJ3FAICg5X+iQMqAegBAAACAC4AAAbtBDoAIgAmAIwAsABFWLALLxuxCxg+WbAARViwCC8bsQgYPlmwAEVYsAUvG7EFED5ZsABFWLAALxuxABA+WbAARViwGy8bsRsQPlmwAEVYsBIvG7ESED5ZsgkFCBESObAJL7IEAQorWCHYG/RZsAkQsA3QsAQQsBfQsAQQsB7QsAkQsCPQsAsQsiYBCitYIdgb9FkwMSE3NjcFAyMTMwMhAyEBFhYHByM3NicmJycHAyMTJyciBgcHARcTIQIKHB1f/pBPtby2VALBxAOk/oyupBYZthkHAgq1NRFPtVQDR4GUFxkB9Qnr/p+qs2oD/jwEOv4iAd7+HQ3kwqSlPTOoBwIW/lABvAgCiZmkAlwBAUcAAv/O/kgEIQeIAC0ANgCGALAzL7AARViwCS8bsQkcPlmwAEVYsB4vG7EeEj5ZsABFWLAYLxuxGBA+WbAJELIIAQorWCHYG/RZsBgQsC3QsC0vsiwBCitYIdgb9FmyECwtERI5sBgQsiQBCitYIdgb9FmyDzMBXbAzELA20LA2L7QPNh82Al2yLjM2ERI5sDDQsDAvMDEBMjY3NiYnJyU3BR4CBwYFFhYHDgIjJwYGBwYXByYmNzY2MzMyNjc2JicnNwE3NxcBIwM1FwGzk78QDHBzD/7LGwEeesNhCBH+7mpkCQqL7I00UVkGEI5RbWsDBb2pIIzADw6GkZUbAZuxoAH+4m/NlgM2g3pheQkBAZgBA2OqcdVwLK5xgsVrAQM/Nm9EejmhW36Jmn15hQUBmAOmqAMN/u8BEA4CAAL/yv5IA5gGMgAoADEAnwCwLi+wAEVYsAgvG7EIGD5ZsABFWLAbLxuxGxI+WbAARViwFS8bsRUQPlmwCBCyBwEKK1gh2Bv0WbAVELAo0LAoL7IvKAFdsv8oAV2yjygBcbK/KAFdss8oAXGyXygBcrInAQorWCHYG/RZsg8nKBESObAVELIhAQorWCHYG/RZsC4QsDDQsDAvtA8wHzACXbIpLjAREjmwK9CwKy8wMQEyNjc2JiclNwUWFgcGBgcWFgcGBCMjBgcGFwcmJjc2NjMyNjc2Jyc3ATc3FwEjAzUXAYiHmQsJZ23+zxwBGLTPCAVndlZTBAj++9QinxEQjlJncQQFuriMmQsV+KQbAT6xnwH+4m/NlwJoVlM/TQMBmQEFpIJJdjMjdkuYswVza0l5NqFefYpfUZYGAZgDHqgDDf7vARAOAgADAGn/6QT8BcgAEgAbACQAZrIIJSYREjmwCBCwFNCwCBCwHdAAsABFWLAJLxuxCRw+WbAARViwAC8bsQAQPlmwCRCyEwEKK1gh2Bv0WbIWAAkREjl8sBYvGLAAELIcAQorWCHYG/RZsBYQsiABCitYIdgb9FkwMQUmAicmEjc2JBcWEhcWBwcGAgQTJgIDITY3NiYBFjY3IQYXFBYCQtP3CgU3R2ABKLfU9gkDCgwfwv7nMbH3OwL+CAIDmP6ervU6/QIHAZgUBAEf9G4BUIq7wgQE/uP3VFNU2f62pQU3Bf75/vw4PL7Q+3MG/P42ObHQAAMAQv/nBCAEUwARABgAHwBNALAARViwBC8bsQQYPlmwAEVYsA0vG7ENED5ZshIBCitYIdgb9FmyHA0EERI5fLAcLxiyFgEKK1gh2Bv0WbAEELIZAQorWCHYG/RZMDETNhI2Fx4CBwcGAgYnLgI3ARY2NyEGFgEmBgchNiZUFJvvj4i/WBACFJzvjoi/WBABl3i4OP2wDHwBB3m3NQJNB34CIJ4BBo8EBI/8lhed/v6NBASO+JX+eAWpsJDBAzIDqqKQtgABAK0AAAVLBcYADwA/ALAARViwDy8bsQ8cPlmwAEVYsAYvG7EGHD5ZsABFWLANLxuxDRA+WbIBDQ8REjmwBhCyCA4KK1gh2Bv0WTAxARc3ATY2MxcHIyYHASMDMwIJCDwBfUmbajMVCmhF/cKn7cQBbneGAyKqfQKrA5T7eAWwAAEAhAAABDwEUAAQAEayAhESERI5ALAARViwBS8bsQUYPlmwAEVYsBAvG7EQGD5ZsABFWLANLxuxDRA+WbIBDRAREjmwBRCyCgEKK1gh2Bv0WTAxARc3EzYzMhcHJiMiBwEjAzMBmgQs8GasPDQkFhNKOv5YibaxATJXaQIe7huSCXH8xQQ6AAACAGr/cwT6BjUAFQApAEgAsABFWLALLxuxCxw+WbAARViwAy8bsQMQPlmwANCwCxCwDtCwCxCyGwEKK1gh2Bv0WbAY0LAAELIlAQorWCHYG/RZsCLQMDEFByM3JgInJjcSADc3FwcWEhcUBwIAEwInByc3BgIPAgIXNxcHNhI3NgKZG7UbsMYDARoyATvqGbUar7oCHjT+0cgPthS1FprMJBEJFOYWtReXxCIfDIGBIAEg4W6aASEBYR93AXon/uDceqL+6v6vA78BAz1iAWYi/vnVcmX+m0ZnAWYnAQfeyQAAAgBE/4gELQS2ABMAJwBLALAARViwAC8bsQAYPlmwAEVYsA0vG7ENED5ZsAAQsAPQsA0QsArQshQBCitYIdgb9FmwABCyHQEKK1gh2Bv0WbAa0LAUELAl0DAxATcXBxYSBwcGAgcHJzcmAjc3NhITNhI1NCYnByc3BgYHBwYVFBc3FwI2F7UYoaIWAhz/xRe1F56eFQMe/M+JmkpFFbUWcY0XAgeKFrUERXEBcSb+2s4X2/7cIGwBbiYBI8oW4wEh/GkvARbEZJAeYwFkK8qRFTM50EFnAQAAAwB0/+YGmgdWADEARABMAJkAsABFWLAWLxuxFhw+WbAARViwDS8bsQ0QPlmwFhCwANCwDRCwCNCyCw0WERI5sBYQshcBCitYIdgb9FmwDRCyHwEKK1gh2Bv0WbIjFg0REjmwKNCwFxCwMdCwFhCwPNCwPC+wNNCwNC+yMgIKK1gh2Bv0WbA0ELA30LA3L7JAAgorWCHYG/RZsDwQsEjQsEgvsEzQsEwvMDEBFhYHAw4CJyYmJwYnJiY3NxM2NzY3BwYDAwYXFhYXFjY3EzMDBhYXFjY3EzYnJiYnEwcnJiQjIgYHByc3NjYXHgMBNjc3FwcGBwU/q7AXXBN8wXpsoyOI26OxCgNfI3l5vhLaMVkFAgJQSmyZFUe8Rg5mZ2GGGF0GAQJNSawKPkb+8Ew2RQkCfQMJhW0wV7Zb/gBMDxKaDxObBa8J98X9xYnSbgQCXU6xBAXhuSYCVMlxcASeB/7N/dUtMllrBAWMfgGt/lN1jQQDlZACQy8yVWgGAcWBAgZ6OzUSASRscgIBGE8Y/pJRQWABZW9ZAAADAFL/5QWmBfYAKwA/AEcAkgCwAEVYsBMvG7ETGD5ZsABFWLAMLxuxDBA+WbATELAA0LAMELAH0LATELIUAQorWCHYG/RZsAwQshsBCitYIdgb9FmyHwwTERI5sCTQsBQQsCvQsBMQsDbQsDYvsC3QsC0vsiwCCitYIdgb9FmwLRCwMtCwMi+yOwIKK1gh2Bv0WbAtELBE0LBEL7BH0LBHLzAxARYWBwMGBicmJicGJyYmNxM2NjcHBgMDBwYWFxY2NzczBwYWFxY2NxM3NCcTBy4DIyYGBwcnNzY2Fx4DATY3NxcHBgcEdJqYEiob2aRijiF9vJieEywd164RuScpAwNCQVuDESa0JAtZV1JwEy0EfO0KWFKxWC01RgkCfQILhW0vV75V/fxJDhWbDhSYBEQJ4bL+38TdBAJPRJoGA+O1AS+/zgSYB/7z/uQtY2sCBXlr7OxkegIDiIABM0ShDQHKgQIXTRoBOjUSASRtcQIBGFIV/ohQNW0BZXJXAAACAG//4gbjBwMAIgAqAHUAsABFWLAZLxuxGRw+WbAARViwDy8bsQ8cPlmwAEVYsCIvG7EiHD5ZsABFWLAKLxuxChA+WbAE0LIICg8REjmwChCyFQEKK1gh2Bv0WbAe0LAZELAp0LApL7Aq0LAqL7IkBgorWCHYG/RZsCoQsCfQsCcvMDEBAwYGByMmJicGJyYmNxMzAwYXFhYXFjY3EzMDBhYXFjY3EyU3IQchByM3BuO0G/azDm2aII3bq7QTtLyzBQQHUkVrmha0wrMMXl5kjhW2/IcTAxUS/r8WpBYFsPvdwOIBAmBPuQgG57YEI/vcLS1OWgMFioAEJPvceIoDA4Z3BC/oa2t9fQAAAgBP/+YF3wWwACAAKABgALAARViwFy8bsRcYPlmwAEVYsAgvG7EIED5ZsATQsBcQsA3QsAgQshMBCitYIdgb9FmwHNCwFxCwINCwFxCwJ9CwJy+wKNCwKC+yIgYKK1gh2Bv0WbAoELAl0LAlLzAxAQMGBicmJwYnJiY3EzMDBhcWFhcWNjcTMwMGFhcWNjcTATchByEHIzcF33sX3qu+RHu+m58RerR6BAMDRDxbgxJ7tnoKT09VeBJ6/NsUAxQQ/r4XpRcEOv0or80EBY+YBATUnwLZ/SYmJkBQAwR4awLa/SZmdwIDdW0C2gELa2uAgAABAGb+hATyBcgAHABCALABL7AARViwCy8bsQscPlmwAEVYsAIvG7ECED5ZsAsQsA/QsAsQshIBCitYIdgb9FmwAhCyGwEKK1gh2Bv0WTAxASMTJiYCNzc2EiQXFhIHIzYmJyYGBgcDBxQWFxcCWbtFgrJJFCYevQEJmt33DrwLkI5otoQWKgSNfHv+hAFuGLABDZT0vwEnkwME/vXZnKsEA27iif7yTqXEBAEAAQBN/oID5ARSABkAQgCwAS+wAEVYsAsvG7ELGD5ZsABFWLACLxuxAhA+WbALELAP0LALELISAQorWCHYG/RZsAIQshgDCitYIdgb9FkwMQEjEy4CNzc+AhcWFgcnNiYnJgIHBhYXFwHptUZpijoOBBOX5YilyQiqBmtfmcsCA2pmbv6CAXIZlOKCK5r+igQE3qgBZYkEBv7b5IijBgEAAAEAQAAABLgFPgATABMAsA4vsABFWLAELxuxBBA+WTAxARcHJwMjASc3FwEnNxcTMwEXBycCLPxS/OqwASX7Uv4BDf1U/PKs/tT/VfoBt6xyqf6+AZWrcqoBdat0qgFM/mGrcakAAAH86ASm/9AF/AAHABEAsAAvsgMGCitYIdgb9FkwMQEHJzchNxcH/aEXoioCCxKhJgUjfQHpbAHYAAAB/QsFFv/qBhQAEwArALASL7AN0LANL7IFAgorWCHYG/RZsBIQsArQsBIQshMCCitYIdgb9FkwMQE+AxcWFgcHJzc2JyYGBgcHN/08QHhudz1lbwUDegIIYCxU+kNKDAWVASktKAEBb2YnARRkBAESZQUBfwAAAf4XBRX+5AZXAAUADACwAS+wBdCwBS8wMQE3MwcXB/4XFK8bJU0F5XKXcjkAAAH+OwUX/1EGVwAFAAwAsAMvsADQsAAvMDEBJzc3Mwf+gkdQFbEYBRdIeX+EAAAI+jj+wgGUBbEACwAXACMALwA7AEcAUwBfAHoAsD8vsEsvsFcvsDMvsABFWLADLxuxAxw+WbIJCworWCHYG/RZsD8QsA/QsD8QskULCitYIdgb9FmwFdCwSxCwG9CwSxCyUQsKK1gh2Bv0WbAh0LBXELAn0LBXELJdCworWCHYG/RZsC3QsDMQsjkLCitYIdgb9FkwMQE2NhcWFhUnNiMmBwE2NhcyFhUnNiMmBwM2NjMWFhUnNiMiBwE2NhcWFhUnNiMiBwE2NhcWFhUnNiMmBwE2NhcWFhUnNiMmBwE2NhcWFhUnNiMiBwM2NhcWFhUnNiMiB/2TCnFbWGlsBVFTHQGfCXFaWGpsBVJSGxEIcVtYaGsFUVMd/nsIc1hYaGsFUVUa/TEKcVtYaGsFUVIe/kIKc1pYaWwFUVQb/pAJcFtYaGsFUlQbJghzWVhpbAVSUxsE81llAQFmWAFmAmb+6lhmAWlWAWYCZv4IVWcBZVgBZmT9+FdnAgFlWAFmZP7jWWUBAmVYAWYCZgUZWWUBAmVYAWYCZv4IWGUBAWVYAWZk/fhXZwIBZVgBZmQACPpP/mMBUwXGAAQACQAOABMAGAAdACIAJwA5ALAhL7ASL7ALL7AbL7AmL7AARViwBy8bsQccPlmwAEVYsBYvG7EWGj5ZsABFWLACLxuxAhI+WTAxBRcDIxMTJxMzAwE3BQclBQclNwUBNyUXBQEHBSclEycDNxMBFxMHA/3FDaxlf6ENq2R+AawLATcR/sD7jgr+yREBQAPNAwFMPf7N/GgD/rU+ATRpEV1DlAKzEF5FkjoS/q8BYASiEAFR/qH+EQp/XEU8Cn9bRAGuEZlNv/yNEplOvwLlAgFPPv7Q/OYC/rI/AS8AAAIALv/8A8MGcQASABsAdLIQHB0REjmwEBCwFdAAsABFWLANLxuxDRw+WbAARViwES8bsREcPlmwAEVYsAkvG7EJED5ZsBEQsgABCitYIdgb9FmyAg0JERI5sAIvsAAQsAvQsAzQsAIQshMBCitYIdgb9FmwCRCyFAEKK1gh2Bv0WTAxASEDFxYWBwYGJyETIzczNzMHIQEDFzY2NzYmJwL9/slh/aW8DA77tf414robuSK2IgE4/jNN/2iODA1XVgUY/dIBBsSesNUEBRiYwcH8ov5FAgJ7aVt3BAACADoAAATuBbAADwAcAE2yDx0eERI5sA8QsBjQALAARViwBC8bsQQcPlmwAEVYsAEvG7EBED5ZshcEARESObAXL7IAAQorWCHYG/RZsAQQshUBCitYIdgb9FkwMQEDIxMFHgIHBgcXBycGIwE2NzYmJyUDITI3JzcBWmO9/QH9ic1kDhKDYnNqgKgBODUNEoZ+/qhjATxeWlV0Ajr9xgWwAQRtxH+6e5BemDYBG01XfpYEAf3FH4BdAAAC/9f+YAP9BFIAFQAmAG6yIicoERI5sCIQsAfQALAARViwEC8bsRAYPlmwAEVYsAwvG7EMGD5ZsABFWLAKLxuxChI+WbAARViwBy8bsQcQPlmyCRAHERI5sg4QBxESObAQELIaAQorWCHYG/RZsAcQsh8BCitYIdgb9FkwMQEGBxcHJwYnJicDIwE3BzYXFhYXFgcnNzYmJyYHAxYXMjcnNxc2NwP0II1XdFNpZbhkYbUBBKQUhrubsAUBB7cGA29rnXJbO5pEVE50RUgXAhfxnYNeezgCAnv99gXaAXmQBATgwkA8AVSLogQEmf35jQQpeF5ob40AAAEANQAABM0HAAAJADWyAwoLERI5ALAIL7AARViwBi8bsQYcPlmwAEVYsAQvG7EEED5ZsAYQsgIBCitYIdgb9FkwMQEjFSEDIxMhEzMEhAP9UOG7/AKyPK4FGAb67gWwAVAAAQAkAAADtAV2AAcALgCwBi+wAEVYsAQvG7EEGD5ZsABFWLACLxuxAhA+WbAEELIAAQorWCHYG/RZMDEBIQMjEyETMwNj/hihtrwB6Di0A6H8XwQ6ATwAAAEAQ/7eBKUFsAAWAFuyAxcYERI5ALAKL7AARViwFS8bsRUcPlmwAEVYsBMvG7ETED5ZsBUQsgABCitYIdgb9FmyAxUTERI5sAMvsAoQsgsDCitYIdgb9FmwAxCyEQEKK1gh2Bv0WTAxASEDFxYWEgcCAAc3NjY3NiYnJwMjEyEEif1YUaSm6moRHP7k6w6TtRcWp6+zdL39A2UFEv4vAQSO/wCn/v3+3gSSA87Hw9IBAf1hBbAAAQAk/uEDegQ6ABYAW7IMFxgREjkAsAovsABFWLAVLxuxFRg+WbAARViwEy8bsRMQPlmwFRCyAAEKK1gh2Bv0WbICFRMREjmwAi+wChCyCwEKK1gh2Bv0WbACELISAQorWCHYG/RZMDEBIQMXHgIHBgIHJzY2NzYmJycDIxMhA1/+HDFjh81kDRH2siR5nhAPin96VLa8ApoDof7kAQR404Sp/v8mliCdf4miBAH+HQQ6AAEANgAABUgFsAAUAGIAsABFWLAALxuxABw+WbAARViwDC8bsQwcPlmwAEVYsAIvG7ECED5ZsABFWLAKLxuxChA+WbAP0LAPL7IvDwFdss8PAV2yCAEKK1gh2Bv0WbIBCA8REjmwBdCwDxCwEtAwMQkCIwMjByM3IwMjEzMDMxMzAzMBBUj9/AEo4OJSK5EsZHK8/L1wZC2RLkUBqQWw/UT9DAKO9PT9cgWw/X8BAP8AAoEAAAEALQAABJMEOgAUAHsAsABFWLANLxuxDRg+WbAARViwFC8bsRQYPlmwAEVYsAovG7EKED5ZsABFWLADLxuxAxA+WbAKELAO0LAOL7KfDgFdsv8OAV2ynw4BcbS/Ds8OAl2yLw4BXbJvDgFysgkBCitYIdgb9FmyAQkOERI5sAXQsA4QsBLQMDEJAiMDJwcjNyMDIxMzAzM3Mwc3AQST/lcBBdm7MieRI2FQtry2UWEmkSsnAUsEOv30/dIBzQHDwv4zBDr+NtXXAQHLAAEAuwAABswFsAAOAGsAsABFWLAGLxuxBhw+WbAARViwCi8bsQocPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbIIBgIREjmwCC+yLwgBXbLPCAFdsgEBCitYIdgb9FmwBhCyBAEKK1gh2Bv0WbIMAQgREjkwMQEjAyMTITchAzMBMwEBIwOFsXG94v4zGwKJb4kCXPf9YgG92AKO/XIFGJj9fgKC/Tb9GgABAHQAAAWMBDoADgCAALAARViwBi8bsQYYPlmwAEVYsAovG7EKGD5ZsABFWLACLxuxAhA+WbAARViwDS8bsQ0QPlmwAhCwCdCwCS+ynwkBXbL/CQFdsp8JAXG0vwnPCQJdsi8JAV2ybwkBcrIAAQorWCHYG/RZsAYQsgQBCitYIdgb9FmyDAAJERI5MDEBIwMjEyE3IQMzATMBASMC8opQtqL+cBwCRFBuAbDq/fwBXNYBzf4zA6GZ/jYByv3v/dcAAAEAOgAAB+AFsAANAF4AsABFWLACLxuxAhw+WbAARViwDC8bsQwcPlmwAEVYsAYvG7EGED5ZsABFWLAKLxuxChA+WbAB0LABL7IvAQFdsAIQsgQBCitYIdgb9FmwARCyCAEKK1gh2Bv0WTAxASETIQchAyMTIQMjEzMBhwLGbQMmG/2W4rt1/Tl1vf29Az4Ccpj66AKh/V8FsAABACQAAAWUBDoADQCbALAARViwAi8bsQIYPlmwAEVYsAwvG7EMGD5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmwBhCwAdCwAS+ybwEBXbS/Ac8BAl2yPwEBcbTPAd8BAnGyDwEBcrSfAa8BAnGy/wEBXbIPAQFxsp8BAV2yLwEBXbRvAX8BAnKwAhCyBAEKK1gh2Bv0WbABELIIAQorWCHYG/RZMDEBIRMhByEDIxMhAyMTMwFEAeFRAh4b/piitFD+H1C2vLYCZQHVmfxfAc7+MgQ6AAABAEL+3gdvBbAAFwBoshEYGRESOQCwBy+wAEVYsBYvG7EWHD5ZsABFWLAULxuxFBA+WbAARViwES8bsREQPlmyARYHERI5sAEvsAcQsggBCitYIdgb9FmwARCyDgEKK1gh2Bv0WbAWELISAQorWCHYG/RZMDEBMxYABwIABzc2Njc2JicjAyMTIQMjEyEFAWr9AQcaHP7k6w6TtRcWoq2BdLzh/UnhvP0ELwNABv7M//79/t4EkgPOx8DSBP1iBRL67gWwAAABACT+4QZBBDoAGABXALAIL7AARViwGC8bsRgYPlmwAEVYsBUvG7EVED5ZsBLQsgASGBESObAAL7AIELIJAQorWCHYG/RZsAAQshABCitYIdgb9FmwGBCyEwEKK1gh2Bv0WTAxARceAgcGBgcnNjY3NiYnJwMjEyEDIxMhA+CWi9dpDhH1siSAlg8QkYmuVLSh/h6htrwDTAKFAQN31ISs/yaWIqJ4hKcEAf4dA6H8XwQ6AAACAHH/4wWpBccAKgA5AIEAsABFWLAfLxuxHxw+WbAARViwBC8bsQQQPlmwANCyAgQfERI5sAIvsB8QsA7Qsg8BCitYIdgb9FmwBBCyFwEKK1gh2Bv0WbACELItDgorWCHYG/RZshkCLRESObIoLQIREjmwABCyKgEKK1gh2Bv0WbAfELI0AQorWCHYG/RZMDEFJicGJy4CJyY3NxIANwcGBg8CFBYXFjcmEzc2EhceAhcWBwcCBxYXARYXNhM3NicmJyYGBwcGBRXNo5ufjdmCCwcPGTEBIdQSh7IhHAOolTpMvykiJ/66ZJJOAgEHJDX4XnT98gqZ2zEgDgQLj2iQHiIKHQRFQgIDgvCaXGCkARoBTQWlBfzdwla54QICEOcBNt36ATUFA23Jdz856P6uxRQCAbHWd5oBPM5ZUOMHBMnB3EIAAAIAX//qBFoEVQAnADIAgQCwAEVYsB4vG7EeGD5ZsABFWLAELxuxBBA+WbAA0LICBB4REjmwAi+wHhCwDdCyDgEKK1gh2Bv0WbAEELIWAQorWCHYG/RZsAIQsioBCitYIdgb9FmyGAIqERI5siUqAhESObAAELInAQorWCHYG/RZsB4QsjABCitYIdgb9FkwMQUmJwYnLgInJhI2NjcHBgYHBwYWFhcWNyY3NzY2FxYWFxYHBgcWFwEGFzY2NzUmJyYDBBulg4SCbq5kBwczcKdsEmB4EAMCLmZJIz6OHQsawZF1hgMCFiOcQ2H+bhaDTEoLBVeEIQ0ENUICAXDSgHQBB7hrA54FzsY4YJ9WAQEMtvBZzfMFBL6gT4XbnQ8CAajSeE7hvymqBAT+7QAAAQCs/qEGYwWwABMAWwCwES+wAEVYsAcvG7EHHD5ZsABFWLAMLxuxDBw+WbAARViwEy8bsRMQPlmwBxCyCAEKK1gh2Bv0WbAA0LAHELAF0LAD0LAC0LATELIKAQorWCHYG/RZsA7QMDEBITchNTMVIQchAyETMwMzAyMTIQIY/pQaAWS8AX4b/ovHArjhveGUa6g9+/YFGJcBAZf7hQUT+vH+AAFfAAEAV/6/BMgEOgAPAEsAsA0vsABFWLADLxuxAxg+WbAARViwDy8bsQ8QPlmwAxCyBAEKK1gh2Bv0WbAA0LAPELIGAQorWCHYG/RZsAMQsAjQsAYQsArQMDEBITchByMDIRMzAzMDIxMhAWH+9hoCsRvxiAHioraifWSiOPzqA6OXl/z0A6P8Xf4oAUEAAQDEAAAFOQWwABkAUbIHGhsREjkAsABFWLAALxuxABw+WbAARViwDC8bsQwcPlmwAEVYsA8vG7EPED5ZsgYADxESOXywBi8YsAnQsAYQshUBCitYIdgb9FmwEtAwMQEDBhcWFhcTMwM2NxMzAyMTBgcHIzcmJjcTAeJLCQgMbms7kjhijny9/bxudX0uki7U0hdLBbD+N0Y1UFIGATb+0Q0hArf6UAJcIwzv6gfi2AHHAAEAmAAABBoEOwAYAEoAsABFWLAXLxuxFxg+WbAARViwDC8bsQwYPlmwAEVYsAEvG7EBED5ZshEBDBESOXywES8YsgcBCitYIdgb9FmwBNCwERCwFNAwMSEjEwYHByM3JiY3EzMDBhcWFxMzAzY3EzMDXrZKNGUckhyWmRIytTQFAQN7NpM0PVphtgGJDw2IhxLUrQE8/sMrKIsdARj+6QgTAhsAAQDsAAAFYgWwABIAPwCwAEVYsAIvG7ECHD5ZsABFWLASLxuxEhA+WbAARViwCi8bsQoQPlmyBRICERI5sAUvsg8BCitYIdgb9FkwMTMTMwM2FxYWBwMjEzYnJicmBwPs/bxvscne1BdMvEsICBjPoeB9BbD9pDcCBOrU/jkByEU2oQYDNv1JAAIAiv/rBcUFyAAjAC4AVwCwAEVYsBEvG7ERHD5ZsABFWLAALxuxABA+WbIlABEREjmwJS+yFwEKK1gh2Bv0WbAF0LAlELAN0LAAELIeAQorWCHYG/RZsBEQsioBCitYIdgb9FkwMQUmJgI3NyYmNxcGFxYXNxIAFxYSFxYHByEHBhcWFhcWNjcXBgElNjc2JicmBgcHA3Or+m0bE4WAC5MEAwprFE4BPNjJ5AUBDRD8ng8MCxCoi16qVSKA/eACqw4CA4qEjdM8DxUBpQEfq2caxpgCKCR2K0wBCgEnBQT+9u1aUmReWlOGmgMCLiWQYANXAk48obEEBMrQOgAAAgAH/+oERwRTAB8AKQBeALAARViwDy8bsQ8YPlmwAEVYsAAvG7EAED5ZsiQADxESObAkL7S/JM8kAl2yFQEKK1gh2Bv0WbAF0LAkELAM0LAAELIZAQorWCHYG/RZsA8QsiABCitYIdgb9FkwMQUuAjc3JiY3FwcGFzYkFxYWFxYHByEGFhcWNjcXBgYTJgYHBTc2JyYmAlCFy1cXBGBdB48EAz9GARippr0GAggM/T0ThH9ckT1oSNwFba00Ag4ECAcLaRQCkPCJEx6rhgE3Xi3Q7QUE2LZAQVOYygMCUUFYaGkDzQWdnwISNTRUZwAAAQA1/tMFRAWwABYAXbIVFxgREjkAsA4vsABFWLACLxuxAhw+WbAARViwBi8bsQYcPlmwAEVYsAAvG7EAED5ZsgQAAhESObAEL7AI0LAOELIPAQorWCHYG/RZsAQQshYBCitYIdgb9FkwMTMjEzMDMwEzARYSBwIABzc2Njc2Jicl8r39vW14Al/r/ZDT2Bga/t7qC5K1Fxajrf71BbD9jwJx/YQY/s/q/v3+2waaAs3EwNMBAQABAC3++gRWBDoAFgBjALAGL7AARViwEi8bsRIYPlmwAEVYsBUvG7EVGD5ZsABFWLAPLxuxDxA+WbAT0LATL7S/E88TAl2yLxMBXbL/EwFdsADQsAYQsgcBCitYIdgb9FmwExCyDgEKK1gh2Bv0WTAxARYWBwYGByc2Njc2JicnAyMTMwMzATMCbKOqEBHzsSR/lw0PjJOwULa8tlFQAc7qAmAg6KKl8iWWH5pvf5AFAf4zBDr+NgHKAAABAEP+RwVtBbAAFABmALAIL7AARViwAC8bsQAcPlmwAEVYsAMvG7EDHD5ZsABFWLASLxuxEhA+WbIBEgAREjl8sAEvGLIfAQFxtGABcAECXbKQAQFdsAgQsg0BCitYIdgb9FmwARCyEQEKK1gh2Bv0WTAxAQMhEzMBBgYnIic3FjMyNxMhAyMTAfxyArVzu/75GcKVLkkeOCiMI3j9S2+9/QWw/W4Ckvn8rbgCFJkR0gLK/X8FsAAAAQAk/kcEKwQ6ABQAfgCwAEVYsAAvG7EAGD5ZsABFWLADLxuxAxg+WbAARViwCC8bsQgSPlmwAEVYsBIvG7ESED5ZsAHQsAEvsm8BAV20vwHPAQJdsv8BAV2yDwEBcbKfAQFdsi8BAV2yPwEBcbAIELINAQorWCHYG/RZsAEQshEBCitYIdgb9FkwMQEDIRMzAwYGJyInNxYzMjcTIQMjEwGWUgHhUrTHFr6WLEsfNSuMI1r+H1C2vAQ6/isB1fttp7kCFJIQ0wIc/jIEOgACAFH/6QUqBcYAGgAkAF6yGiUmERI5sBoQsBzQALAARViwAC8bsQAcPlmwAEVYsAkvG7EJED5Zsg8ACRESObAPL7AAELIVAQorWCHYG/RZsAkQshsBCitYIdgb9FmwDxCyHwMKK1gh2Bv0WTAxARYEEgcHBgIEJyYmAjc3BTc2JyYmJyYHJzY2AxY2NwUHBhcWFgMAuAEBcRoMHdD+3aWv7GMaFAPQAxUJD72YpsojRNQopftH/OgHDwoQpAXDArP+vsZVzv6wqgMEpwEtv3wDDGNgnLkDA1aRLzb6wwX18gEjWVCBkQAAAQA8/+cEewWwABsAZbIZHB0REjkAsABFWLACLxuxAhw+WbAARViwDC8bsQwQPlmwAhCyAAEKK1gh2Bv0WbIEAAIREjmyBQIMERI5sAUvsAwQsBDQsAwQshMBCitYIdgb9FmwBRCyGQMKK1gh2Bv0WTAxASE3IQcBFhYHDgInJiY3MwYWFxY2NzYmJyc3A3z9kRwDUhf+I7TEDguQ8o2+3Qy6CHtug78QEYKLlBwFEp6G/iQQ5rqDyGwDBOy6dJMEBJZ/jJIEAaAAAAH//P5xBDUEOgAaAGGyBRscERI5ALALL7AARViwAi8bsQIYPlmyAAEKK1gh2Bv0WbIEAAIREjmyGgsCERI5sBovsAXQsAsQsQ8KK1jYG9xZsAsQshIBCitYIdgb9FmwGhCyGQEKK1gh2Bv0WTAxASE3IQcBFhYHBgQnJiY3MwYWFxY2NzYmJyc3Ayz9ohsDTBX+J7S/DhH+1dq93Qy0CHxwhsMPEIiKlBsDoZl//hYS4rXE8wQE7LhzmAQEm36NkAQBoP////j+RQTnBbAAJgCwQgAAJgHeuUAABwGvAOkAAP///+n+RQPQBDoAJgDrTQAAJgHem44BBwGvANoAAAAIALIACQFdMDEAAgAxAAAE4QWwAAoAEwBQsgQUFRESObAEELAN0ACwAEVYsAEvG7EBHD5ZsABFWLADLxuxAxA+WbIAAQMREjmwAC+wAxCyCwEKK1gh2Bv0WbAAELIMAQorWCHYG/RZMDEBEzMDJSYmNzYkMxMTJSIGBwYWFwPAY779/fvJ5RERAS7f4mP+to2/ERB6ewNzAj36UAEG68PN8v0pAjgBmoR3nQYAAgAy//4GMwWwABcAIABashghIhESObAYELAH0ACwAEVYsAgvG7EIHD5ZsABFWLAXLxuxFxA+WbIGFwgREjmwBi+wFxCyGAEKK1gh2Bv0WbAK0LIQBhcREjmwBhCyGgEKK1gh2Bv0WTAxJSYmNzYkMwUTMwMXNjYnJicXFhcWAgYnJRMlIgYHBhYXAeLN4xETASviAWBkveJLjZ4FAhOvDwgPc+WT/v5i/raMwBEQfXgBCO2/zfIBAj366wEC59FSUAFRUKv+65YCnQI4AZqEeZ0EAAACAEz/5gZBBhgAIwAzAICyBjQ1ERI5sAYQsCTQALAARViwBy8bsQcePlmwAEVYsAQvG7EEGD5ZsABFWLAeLxuxHhA+WbAARViwGi8bsRoQPlmyBgQeERI5sg4BCitYIdgb9FmyFAQeERI5shwEHhESObAEELImAQorWCHYG/RZsB4Qsi8BCitYIdgb9FkwMRM2EjYXFhcTMwMGFxYWFxYSEzYnNxYXFgIEJyYnBicmJicmNwEmJyYGBwcGFxYWFxY2NzdVFYzLgK5dbbXPBAQFQjmjxggCEKgNAweI/v2m7i2LzJexBwMGAuI/kIi2HgMHAwVrYVeDMwYCArIBFocDBIACTvtAJCU/SgMJAUEBImNkAWRj1/6gvwMFsbsEAtS1PTsBQoAEBd/TFDw/bX8DA1NCPwAAAQCt/+gFqgWwAC0AXACwAEVYsA4vG7EOHD5ZsABFWLAqLxuxKhA+WbIFLg4REjmwBS+yBAEKK1gh2Bv0WbAOELINAQorWCHYG/RZshUEBRESObAqELIdAQorWCHYG/RZsiMqDhESOTAxATYmJyc3FzI2NzYmJyU3BRYXFgcGBRYWFxYHBhYXFjYSNzYnMxYXFgIGJyYmNwKBCWNjyRyCobgQDXuA/pkcATn7cl8PFf71RlIGBAwHOz9dkFcGAxCvDAQGgvCfj5cIAXV2hwUCngGFhHJ8BAGeAQF/aqjncB96UTR5R1wEBYQBF8BjZGRj1v6fvwICqJsAAAEAaP/jBLgEOgAnAFkAsABFWLAeLxuxHhg+WbAARViwDi8bsQ4QPlmyAgEKK1gh2Bv0WbIHDh4REjmyFigeERI5sBYvshUBCitYIdgb9FmwHhCyHQEKK1gh2Bv0WbIlFRYREjkwMSUGFxY2NzYnFxYXFgIGJyYmNzc2Jyc3FzI2NzYnJTcXFhYHBgcHFgcCkQhSapYYGiipDwkSceWQfX0GCAux2BmrdYwKFdT+9xT4t8cKCJk+mA/TUwQFopCenQFOTpz+2aEDAnxyTYwKAZYBWVGfCwGWAQWljolPHTiyAAABAK/+1gOVBa8AJwBWALAbL7AARViwCi8bsQocPlmwAEVYsB4vG7EeED5ZsgEoChESObABL7IAAQorWCHYG/RZsAoQsgkBCitYIdgb9FmyEQABERI5sB4QsRcKK1jYG9xZMDETNxcyNjc2JiclNxcWFgcGBgcWFxYPAjcHBgcnNjcjJicmNzc2JievG5OnvA8Ne4D+6Bvu3eURC4mEkBAEBxcGqhckuWhXL2AhBQQIFg1nagJ5lwGLgXiABAGXAQHYvHGnO0CrMzWIGAGN3ZRMZ3crRyU/nHOOBAAAAQCg/sYDdgQ6ACMAVgCwGi+wAEVYsAovG7EKGD5ZsABFWLAdLxuxHRA+WbIBJAoREjmwAS+yAAEKK1gh2Bv0WbAKELIJAQorWCHYG/RZshEAARESObAdELEWCitY2BvcWTAxEzcXMjY3NiYnJTcFFhYHBgYHFhcWBwc3BwYHJzY3IyY3NzYnoBnEdo4LCmFn/uAbAQi1xwoFa3J3EAUGDJsWIrxnXixcKQYRD7EBuJcBWFNRVgMBlgEFpY5Qei0tfikoSwGO25VMc3srVI+fCQAAAf/f/+UHOwWwACQAYrIjJSYREjkAsABFWLAOLxuxDhw+WbAARViwIS8bsSEQPlmwAEVYsAYvG7EGED5ZsA4QsgABCitYIdgb9FmwBhCyCAEKK1gh2Bv0WbAhELIVAQorWCHYG/RZshsOBhESOTAxASEDBwICByM3NzY2NzcTIQMGFxYWFxYSEzYnNxYXFgIEJyYmNwSA/it3Jz/tt0sRM36dKxmQA0e8BAQFQTefwwgCEa8NAweJ/v2koJ0RBRL93bz+2/72BJwDDN3wjgKq+6kjJD5JAwkBPQEhY2QBZGPZ/qDABAbCqQAAAf/a/+UGBQQ6ACQAYrIAJSYREjkAsABFWLAOLxuxDhg+WbAARViwIS8bsSEQPlmwAEVYsAYvG7EGED5ZsA4QsgABCitYIdgb9FmwBhCyCQEKK1gh2Bv0WbAhELIVAQorWCHYG/RZshohDhESOTAxASEDBwYGByM3NzY2NzcTIQMGFxYWFxYSEzYnMxYXFgIGJyYmNwNR/sdSFjW+lU4TJmR+IA1iApx7AwMFQzeJoQUBEagNBQh55JCbnREDof6ObPLOA6ICBqnDSgHa/R4jJUBNAQYBJgEEXl5eXsT+s7AEBMCsAAABADv/5gc8BbAAHgB7ALAARViwGy8bsRscPlmwAEVYsB4vG7EeHD5ZsABFWLAYLxuxGBA+WbAARViwEi8bsRIQPlmyBgEKK1gh2Bv0WbILEh4REjmwGBCwHNCwHC+y/xwBXbJfHAFdss8cAV2yLxwBXbIfHAFxsk8cAXGyFwEKK1gh2Bv0WTAxAQMGFxYWFxYSEzYnNxYXFgIEJyYmNxMhAyMTMwMhEwVYugMDBUI1n8QGAhGwDQQHif7+ppycDS/9WG+9/b1zAqhyBbD7pyMkPkkBCAE/AR5jZAFkY9v+o8ADBMSpASf9fwWw/W4CkgABACP/5wYXBDoAHgCLALAARViwBS8bsQUYPlmwAEVYsAgvG7EIGD5ZsABFWLAbLxuxGxA+WbAARViwAi8bsQIQPlmwBtCwBi+ybwYBXbL/BgFdsg8GAXG0nwavBgJxsj8GAXG0vwbPBgJdsi8GAV20zwbfBgJxsgEBCitYIdgb9FmwGxCyDwEKK1gh2Bv0WbIUGwgREjkwMQEhAyMTMwMhEzMDBhcWFhcWEhM2JzMWFxYCBicmJjcDEv4WULW8tVIB6VK1ewQEBUE4iaQDARGnDgUIeeKTmZ0PAc3+MwQ6/ioB1v0eIyVBSgMGASkBAV5eXl3I/revAgLGqAABAGr/6ASCBcgAIgBAALAARViwCS8bsQkcPlmwAEVYsAAvG7EAED5ZsAkQsg4BCitYIdgb9FmwABCyFwEKK1gh2Bv0WbIdAAkREjkwMQUmJicmNzcSABcWFwcmJyYCBwcGFxYWFxY2Njc0JzMXFgIEAkjG/hMHCictAWr8yYtFfpew/yMnBwIDnoZop1cBC7MKB4b+/hUF/M5MT/kBHgFcAgJWi0UCAv763PY0Np3EAgNowrJaWbPV/vGUAAEATP/nA4oEUgAfAD0AsABFWLATLxuxExg+WbAARViwCy8bsQsQPlmyAAEKK1gh2Bv0WbIFCxMREjmwExCyGAEKK1gh2Bv0WTAxJRY2NjcnMxcWBgYnLgI3NzYAFxYXByYjJgYHBhcWFgH2SmouAgKpBgNlwnmHv1gQAx0BKtKoajlhfoXAGgwGCnuCAj9ydHV0n7xkAwSN+JIa+wE4AgJEjj0C2rFnRnSMAAABAJr/5QUgBbAAGgBDALAARViwAy8bsQMcPlmwAEVYsBcvG7EXED5ZsAMQsgQBCitYIdgb9FmwANCwFxCyCQEKK1gh2Bv0WbIPFwMREjkwMQEhNyEHIQMGFhcWNhI3Nic3FhcWAgcGJyYmNwJn/jMcBF8c/iuhCENDa6NZAwEQrg4DBV9elN2YoA0FEp6e/EdibQIEkAEZsGNkAWRjtf7JaKUEAsOsAAABAH3/6ASIBDoAGgBNsgUbHBESOQCwAEVYsAIvG7ECGD5ZsABFWLAXLxuxFxA+WbACELIAAQorWCHYG/RZsATQsAXQsBcQsgsBCitYIdgb9FmyEAIXERI5MDEBITchByEDBhcWFhcWEicmJxcWFxYCBicmJjcB2P6lGgNxGv6gYQQEBUI5haMGAxKnDgkQceOTmp0NA6SWlv20JCU/SwMGAQLTUU8BT0+i/tigAQLEqgAAAQBq/+kFIwXHACwAZrIaLS4REjkAsABFWLAbLxuxGxw+WbAARViwDi8bsQ4QPlmyBgEKK1gh2Bv0WbIKGw4REjmwDhCwK9CwKy+yLAEKK1gh2Bv0WbIULCsREjmyHxsOERI5sBsQsiMBCitYIdgb9FkwMQEiBgcGFhcWNjc3BgYEJy4CNzYlJiY3NjYkFx4CByc2JicmBwYHBhYXFwcCzb3QDg+wnZXhFbwOn/75m5nxdAoVATJfZAUIlAEPp4bYdgW7BZyFnGt3EA6Zm7QcApiPf3WLAwKTewGEwWYDAmy6ev9jMKBdgMFpAgNltncBbYQFAkBIf3F6AQGeAAACAPIEcgNMBdYABQAQABsAsA0vsAbQsAYvsAHQsAEvsA0QsAXQsAUvMDEBEzMHAQcDMwcGFxYXByYmNwHqo78B/vZY4qQNCggIJkhISAkElQFBFv7FAgFTTz42NzM3LoxW//8AGQIfAg8CtgAGABEAAP//ABkCHwIPArYABgARAAD//wCnAosElQMiAEYBl9oATM1AAP//AJkCiwXXAyIARgGXiABmZkAA////X/5sAx8AAAAnAEP/3v8DAQYAQwkAABQAQAkAAhACIAIwAgRdsrACAV0wMQABAK4EMQIFBhMABwAWALAARViwAC8bsQAePlmwBdCwBS8wMQEXBgcHIzc2AaFkcBsYtBIkBhNKjIaGcN4AAAEAiQQWAeAGAAAHABYAsABFWLAELxuxBB4+WbAA0LAALzAxEyc2NzczBwbtZHYYF7ITJAQWSpOKg3nhAAH/mP7lAOoAtQAHABcAsAgvsgQFCitYIdgb9FmwANCwAC8wMQMnNjc3MwcGBWNzGBK1DyP+5UuQi2pg3AAAAQDUBBcBugYAAAsADACwCy+wBtCwBi8wMQEHBhcWFwcmJyY3NwGhFgsKCiZqZxAFBhUGAIVNRkdFRWqdMTGA//8AtgQxAz4GEwAmAWwIAAAHAWwBOQAA//8AlQQWAxUGAAAmAW0MAAAHAW0BNQAAAAL/lP7SAhUA9gAHAA8AIwCwEC+yBAUKK1gh2Bv0WbAM0LAML7AI0LAIL7AA0LAALzAxAyc2NzczBwYXJzY3NzMHBgRodBsetBknZmd0Gh61GSf+0kuXl6uc8ZdLmpSrnPAAAQB3AAAEUQWwAAsASwCwAEVYsAgvG7EIHD5ZsABFWLAGLxuxBhg+WbAARViwCi8bsQoYPlmwAEVYsAIvG7ECED5ZsAoQsgABCitYIdgb9FmwBNCwBdAwMQEhAyMTITchEzMDIQQ4/nmStZH+fBgBgzu2OwGJA6H8XwOhmQF2/ooAAAH/9v5gBGAFsAATAHwAsABFWLAMLxuxDBw+WbAARViwCi8bsQoYPlmwAEVYsA4vG7EOGD5ZsABFWLACLxuxAhI+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsgYBCitYIdgb9FmwDhCyCAEKK1gh2Bv0WbAJ0LAQ0LAR0LAGELAS0LAT0DAxISEDIxMhNyETITchEzMDIQchAyEDt/52QbZC/n4YAYF6/n4YAYE7tjsBihj+dnkBiv5gAaCXAwqZAXb+ipn89gABAKACFQIsA8wADQAWsgoODxESOQCwAy+xCgorWNgb3FkwMRM2NjMyFhUHBgYjIiY1oQZ1VlFpAgZxWlJnAv1ecW1YKlpualUA//8AOf/yAsEA0wAmABIEAAAHABIBrAAA//8AOf/yBFMA0wAmABIEAAAnABIBrAAAAAcAEgM+AAAAAQAaAh4A2wK3AAMADwCwAi+xAQorWNgb3FkwMRMjNzO/pRumAh6ZAAYAl//nBv4FxwAXACYAKgA4AEYAVACFALApL7AnL7AARViwGC8bsRgcPlmwAEVYsBEvG7ERED5ZsADQsAAvsAXQsAUvsBEQsA3QsA0vsBgQsB/QsB8vsBEQsi4ECitYIdgb9FmwABCyNQQKK1gh2Bv0WbAuELA80LA1ELBD0LAfELJKBAorWCHYG/RZsBgQslEECitYIdgb9FkwMQEWFhc2FxYXFgcHBgYnJicGJyYmNzc2NgEWFgcHBgYnJiY3Nz4CAycBFwEGFhcWNjc3NiYnJgYHBQYWFxY2Nzc2JicmBgcBBhYXFjY3NzYmJyYGBwQ7QnAeZod4SEYIBg23gpU+ZIV4kQgGDbf+MXyOCAYPtn15kggHCFmNPWIDcWL+rQdEQkZjCwkHQkNGYwwBtAdDQkdjCwkHQkNGYwz77AdEQkNlDAkHQkNIYwsCkwI8PHoCAldVfkOOrQIFdHsEAqt/Qo2vAzEEq39NhqoEAqx+TFWPTPqpSARoR/w8TmQCAmdRT05jAgJjU1BMZgICaU9PS2YCAmNTAuRNZAICY1ROTGYCAmhPAAABAF8AmQJUA7UABgAQALAFL7ICBwUREjmwAi8wMQETIwM3ATMBC7J94QIBW5gCHP59AYMUAYUAAAEAAgCYAfcDtQAGABAAsAAvsgMHABESObADLzAxARMHASMBAwEW4QL+pZgBSLEDtf59Ff57AZgBhQAB/+8AcAPCBSAAAwAJALAAL7ACLzAxNycBF1FiA3FicEgEaEgA//8AYQKQAuQFpQMHAdgAcQKQABMAsABFWLAJLxuxCRw+WbAN0DAxAAABAH4CiwNKBboAEQBMALAARViwAC8bsQAcPlmwAEVYsAMvG7EDHD5ZsABFWLAPLxuxDxQ+WbAARViwCC8bsQgUPlmyAQMPERI5sAMQsgwDCitYIdgb9FkwMQEXNjMyFgcDIxM3JicmBwMjEwGEAVyGcXIMU6ZNAwRmY0Ngp4sFrHyKopH+BAHdQn4DAm/9zQMgAAH/8wAABIkFygAnAI8AsABFWLAXLxuxFxw+WbAARViwBi8bsQYQPlmyJwYXERI5sCcvsgACCitYIdgb9FmwBhCyBQEKK1gh2Bv0WbAJ0LAAELAN0LAnELAP0LAnELAj0LAjL7YPIx8jLyMDXbIkAgorWCHYG/RZsBHQsCMQsBPQsBcQsRsKK1jYG9xZsBcQsh4BCitYIdgb9FkwMQEhBwYHJQchNxc2NzcHNzM3IzczNzYkFxYWByc2JicmBgcHIQchByEC5/6+CRhUAssd/BUdQ2klC6sWoRSeFpkVGQEWwKjACLsHZGNvmg8VAVIW/rMUAUoB1kSUYwKdnAIm0EcBfYh9r832BgTRsQFreQQEp32vfYgABQAKAAAGQgWwABsAHwAjACYAKQCxALAARViwFy8bsRccPlmwAEVYsBovG7EaHD5ZsABFWLAMLxuxDBA+WbAARViwCS8bsQkQPlmyEAwXERI5sBAvsBTQsBQvtA8UHxQCXbAk0LAkL7AY0LAYL7AA0LAAL7AUELITAQorWCHYG/RZsB/QsCPQsAPQsBAQsBzQsBwvsCDQsCAvsATQsAQvsBAQsg8BCitYIdgb9FmwC9CwKdCwB9CyJhcMERI5sicJGhESOTAxATMHIwczByMDIwMhAyMTIzczNyM3MxMzEyETMwEhJyMFMzchJTMnATcjBWrYGtga2BrYVbfh/mpVvFXTG9Ia0xvSWrXtAYhau/vuATdE2AHjyxr+2P55eVcCPB1qA6yYlJj+GAHo/hgB6JiUmAIE/fwCBPzQlJSUmL7816cAAgA5/+0GJQWwACAAKQCIALAARViwHC8bsRwYPlmwAEVYsBYvG7EWHD5ZsABFWLAULxuxFBA+WbAARViwCy8bsQsQPlmwHBCwH9CyAQEKK1gh2Bv0WbALELIGAQorWCHYG/RZsAEQsA/QsiEWFBESObAhL7ITAQorWCHYG/RZsBwQsB3QsB0vsBYQsikBCitYIdgb9FkwMQEjAwYXFjMyNwcGJyYmNxMjAiEnAyMTBR4CBzcTMwMzARc+AicmJycGC8NyAwIHTyA1C0JEa2wMboFv/nTFY7X9AWJ4tFsFkC+1LsX7RbB4m0MME7zFA6v9YBoXTQqYEgEClYgCnv6JAf3LBbABA1yncAEBBv76/pIBAmrEa6kIAQD//wA6/+kH6gWwACYANgAAAAcAVwQ0AAAABwAiAAAHaQWwAB8AIwAnACsAMAA1ADoAtwCwAEVYsB4vG7EeHD5ZsABFWLAbLxuxGxw+WbAARViwAi8bsQIcPlmwAEVYsA0vG7ENED5ZsABFWLAQLxuxEBA+WbIUEBsREjmwFC+wGNCwGC+wHNCwNtCwANCwBNCwGBCyFwEKK1gh2Bv0WbAn0LAj0LAr0LAH0LAUELAk0LAg0LAo0LAI0LAUELITAQorWCHYG/RZsDLQsA/QsC3QsAvQsjQQHhESObA0ELAv0LI5HhAREjkwMQEhEzMDMwcjBzMHIQMjAyEDIwMhNzMnIzczAzMTIRMzASEnIwUzNyMFMzcjEwcXFzclBxcHNwE3JycHBKQBSbnDwo4bsVDgG/79w6sx/pHdqx7++xvhDLQbjx22GAFK153+nAEaFK3+Xp5Y/wMEn03+fFYDBUP9BlMBCUUBlWIKAisD1AHc/iSYwpj+HgHi/h4B4pjCmAHc/iQB3PzKwsLCwsL+qAIpssMaARi6pQIcAltiawAAAgAf//wFyAQ6AA4AGwBKALAARViwFi8bsRYYPlmwAEVYsAwvG7EMED5ZsA/QshIBCitYIdgb9FmwFhCwDtCyBRIOERI5sgsBCitYIdgb9FmyEAsPERI5MDEBFhYHAyMTNicmJyUDIxsCMwMFMjcTMwMGBicC65mPEzW1NgYCCpL+waG1vMGAtWUBKuEodLVyGcurBDgFzcD+twFMMCyVBQL8XwQ6+8YC3f27AvUCr/1Zyc4EAAABAFH/7ASIBccAJQCKsh8mJxESOQCwAEVYsBgvG7EYHD5ZsABFWLALLxuxCxA+WbIlGAsREjmwJS+yAAIKK1gh2Bv0WbALELIGAQorWCHYG/RZsAAQsA/QsCUQsBDQsCUQsBXQsBUvtg8VHxUvFQNdshICCitYIdgb9FmwGBCyHQEKK1gh2Bv0WbAVELAg0LASELAi0DAxASEGFxYWFxY3FwYnJgI3BzczNyM3MxIAFzIXByYnJgYHIQchByEDLv6OCQcMhnJffAVyd+LuILQWrBmtFqU+ATvoWZQiamOh0y4Behb+jBgBdQIdSkd4hgMDIqEdAgQBNvYBfIl9AQ0BGwIepCQCAsrCfYkABABDAAAF+wWwABkAHgAjACgAwACwAEVYsAsvG7ELHD5ZsABFWLABLxuxARA+WbALELIoAQorWCHYG/RZsCTQsCQvQAkAJBAkICQwJARdsAbQsAYvtA8GHwYCXbQgBjAGAl2ysAYBXbAj0LAjL7SwI8AjAl1ACQAjECMgIzAjBF2yAAEKK1gh2Bv0WbAGELIDAQorWCHYG/RZsCQQshwBCitYIdgb9FmwB9CwJBCwCtCwCi+wJBCwD9CwHBCwEtCwBhCwHdCwFNCwAxCwItCwF9AwMQEDIxMjNzM3IzczNwUyFhczBycHBzcHBwYhATcFBwUFNjcFBxMlJichAZRju43AGsARwRvAKgHtpeIn7hu4Cg7BG9SY/qQBdgn9fBACff6coXL9uhBUAjY4lf6nAjr9xgMwl16X9AF+dZcBMy4ClwH2Abk0AV4B8AJaAlkB5QJPBQAAAQBJAAAEcgWwABoAXwCwAEVYsBkvG7EZHD5ZsABFWLAMLxuxDBA+WbAZELIYAQorWCHYG/RZsAHQsBgQsBPQsBMvsAPQsBMQshIBCitYIdgb9FmwBtCwEhCwDtCwDi+yCQEKK1gh2Bv0WTAxAQcWBzMHIwYEBwEHIwE3FzI3BTchJiYnJTchBCnmJwTPSY80/wDlAXwB2f5jFOL1Zv3GSQIBBnxo/uBJA4kFEgFeZ56yrwf9yA4CcnQCywGeXWQEAZ4AAAEACv/pBBQFsAAeAI0AsABFWLARLxuxERw+WbAARViwBS8bsQUQPlmyExEFERI5sBMvsBfQsBcvsgAXAV2yGAEKK1gh2Bv0WbAZ0LAI0LAJ0LAXELAW0LAL0LAK0LATELIUAQorWCHYG/RZsBXQsAzQsA3QsBMQsBLQsA/QsA7QsAUQshoBCitYIdgb9FmyHgURERI5sB4vMDEBBwYCBCcmJxMFPwIFNyUTMwclBwUHJQcFAzYSNzcEFAobwf7lrkpyYv7/Iv8a/v8hAQA7vC0BCCH++RkBCCH++WG/8yUOAwNO1f6zqgICEwJUbrxvjm68bwFU+3K8co9yvHP94QUBFfBrAAAB//IAAASGBDoAHABVALAARViwHC8bsRwYPlmwAEVYsAgvG7EIED5ZsABFWLAPLxuxDxA+WbAARViwFS8bsRUQPlmyAA8cERI5sAAvsg4BCitYIdgb9FmwEdCwABCwGtAwMQEeAhUUBwcjNzYnJiYnAyMTBgIHByM3EgA3NzMDFHanVQoetRwUBgtpXYG1gZfGJyK1Hy8BNuootQNvF5Pti0tIuqp8Z4yYHP0zAswl/wDZzrkBKwFqI8kAAAL/5QAABTUFsAAWAB8AbQCwAEVYsAwvG7EMHD5ZsABFWLADLxuxAxA+WbIGAwwREjmwBi+yBQEKK1gh2Bv0WbAB0LAGELAK0LAKL7QPCh8KAl2yCQEKK1gh2Bv0WbAU0LAGELAV0LAKELAX0LAMELIfAQorWCHYG/RZMDEBIQMjEyM3MzcjNzMTBRYWBwYEIyUHIQEFMjY3NiYnJQKt/rwwuzDJHMgZyhzIfwH90+oREv7V8P6lGAFF/u4BRZnDERCHfv6mARP+7QETnomdAtkBB+y+0vMBiQEmAZyLepYEAQAEAMz/5gU5BcgAGwApADcAOwB7ALA4L7A6L7AARViwCi8bsQocPlmwAEVYsCMvG7EjED5ZsAoQsAPQsAMvsgADChESObIOCgMREjmwChCyEQQKK1gh2Bv0WbADELIYBAorWCHYG/RZsCMQsBzQsBwvsCMQsi0ECitYIdgb9FmwHBCyNAQKK1gh2Bv0WTAxAQYGJyYmNzc2NhcWFgcnNiYnIgYHBwYWFzI2NwEWFgcHBgYnJiY3NzY2AwYWFxY2Nzc2JicmBgcFJwEXAuUMn3NziAkGDat8b4kChwM2QEFcCggIODw8Tg0B0HuPCAYNtYF5kQgGDLQ/BUNCSGELCQdDQkVmC/3zZANxYwQec48EAqt+Q4uvAgKPcQE6TQJoVkZKZwJLO/50BKl/Q42vBAKrgESLrf6CUGECAmlOT0xmAgJmUfVIBGhHAAACAEv/6wPDBhcAHAAkAFMAsAkvsABFWLAPLxuxDx4+WbAARViwAC8bsQAQPlmwCRCyCAEKK1gh2Bv0WbAW0LAAELIcAQorWCHYG/RZsAkQsB3QsA8QsiIBCitYIdgb9FkwMQUmJicmNzcGBzc2NxM2NhcWFgcHBgAHBwYVBhYXAzYSNzYnJgcCVYOoFA0PBGRtFGVsXhiuhHF6CgMT/wDHEQgCUlBtfo0GBENuGRUGlIFPWBQbArACIQIhtskDBK+HH8f+jXFjNTJVYgUCX28BCqRtBQblAAAEADUAAAfvBcUAAwARACAAKgCIALAARViwJy8bsSccPlmwAEVYsCkvG7EpHD5ZsABFWLAELxuxBBw+WbAARViwIS8bsSEQPlmwAEVYsCQvG7EkED5ZsAQQsAvQsAsvsALQsAIvsgEDCitYIdgb9FmwCxCyFQMKK1gh2Bv0WbAEELIdAworWCHYG/RZsiMpJBESObIoISkREjkwMQEhNyEDFhYHBwYGJyYmNzc2NgMGFhcWNj8DJicmBgcBIwEDIxMzARMzB0n9qhoCVqKQngwJEdCWj6EMCA/USghLSk5rEQILAQaIUm0O/gTB/oPHtPzBAX/HswGcjgOXBMOTV6XCBATCklaiyP4+Y2cCA2VgDGMpoAMCbWL7mQR2+4oFsPuHBHkAAgDqA5YErQWwAAwAFABtALAARViwBi8bsQYcPlmwAEVYsAkvG7EJHD5ZsABFWLATLxuxExw+WbIBFQYREjmwAS+yAAkBERI5sgMBBhESObAE0LIIAQkREjmwARCwC9CwBhCxDQorWNgb3FmwARCwD9CwDRCwEdCwEtAwMQEDBwMDIxMzExMzAyMBIwMjEyM3IQQ6wzRGR1leakXScV5Y/mqOUFlPjw4BeAUS/oYCAZH+cAIZ/nMBjf3nAcj+OAHIUQACAIL/6QR8BFIAFQAcAGKyAh0eERI5sAIQsBbQALAARViwCi8bsQoYPlmwAEVYsAIvG7ECED5ZshoKAhESObAaL7IPCgorWCHYG/RZsAIQshMKCitYIdgb9FmyFQoCERI5sAoQshYKCitYIdgb9FkwMSUGJyYmAjc2EiQXHgIHByEDFhcWNwMmBwMhEyYDsLi+hNBkDg6yAQSKgL5gCwX9FDtfj6rWzoiaMwILM11ddAQCmgECiZIBEZsEBIr7kjH+tmcEB38DKwN8/uoBH2z//wC1//QFdAWbACcB1QBKAoYAJwF8AN8AAAEHAdwC/AAAABAAsABFWLAFLxuxBRw+WTAx//8Akv/0BhAFtgAnAdcAlwKUACcBfAGYAAABBwHcA5gAAAAQALAARViwDS8bsQ0cPlkwMf//AI//9AYGBaQAJwHZAHkCjwAnAXwBdwAAAQcB3AOOAAAAEACwAEVYsAEvG7EBHD5ZMDH//wC+//QFvAWkACcB2wCPAo8AJwF8ARcAAAEHAdwDRAAAABAAsABFWLAFLxuxBRw+WTAxAAIATf/nBDcF7AAeACwARwCwDy+wAEVYsBcvG7EXED5ZsgAPFxESObAAL7APELIJAQorWCHYG/RZsAAQsh8BCitYIdgb9FmwFxCyJgEKK1gh2Bv0WTAxARYWFzYnLgInJgYHJzYXFhYSBwICBCcmAj8CNgAXJgYGFxYWFxY2Nzc2JgJkVpc0BAIEQXlSS49GApOlk8NUCA2e/v6ku9YGAwIdASLVbKxWCwlyY4/CJAoDkwP+AktFLjVlsmADAiMYmEQBA57+08D+2/56ywQFAQTTMRLlARWdA33kj3KDBAXz5UFUeQAAAQAk/ysFRgWwAAcAJwCwBC+wAEVYsAYvG7EGHD5ZsAQQsAHQsAYQsgIBCitYIdgb9FkwMQUjEyEDIwEhBEG17v1M7bUBBQQd1QXt+hMGhQAB/6z+8wTSBbAADAA1ALADL7AARViwCC8bsQgcPlmwAxCyAgEKK1gh2Bv0WbAF0LAIELIKAQorWCHYG/RZsAfQMDEBASEHITcBATchByEBA0/9WgNjG/u7GgLM/i0YA/sb/NkBwQJC/UmYmALMAtKHmP1EAAEAqwKLA/EDIgADABsAsABFWLACLxuxAhY+WbIBAQorWCHYG/RZMDEBITchA9b81RsDKwKLlwAAAQBBAAAFDgWwAAgAPLIDCQoREjkAsAcvsABFWLABLxuxARw+WbAARViwAy8bsQMQPlmyAAEDERI5sAcQsgYBCitYIdgb9FkwMQEBMwEjAyM3IQHlAmnA/PaKgbgcAS4BHgSS+lACdJoAAAMATf/mB6EEUgAZACoAOwBEALAARViwBi8bsQYQPlmwANCwBhCwDdCwDS+wE9CwBhCyHQEKK1gh2Bv0WbANELInAQorWCHYG/RZsC/QsB0QsDjQMDEFJiYnBgYnJiYnJhIkFxYWFzY2Fx4CBwIAARQWFxY2Njc3NiYnJicmBgYFNyYmJyYGBgcHBhYWFxY2NwVpjtQoffSFo9QSE5IBC56N1Sh69oqBu1kPHv7I+tV3alSriRwHBT84Tl5ppWIFzwQDc2lUqI4dBwZNh0+NxBcVBMefyaUDBOW3rAFawgQExqHEqwMEk/uN/v3+uQHMiacCAm7CXSpKqDpRBASD9w9Tj6EEAmnDYClPvXMEBeezAAAB/xr+RQMHBhoAFQA9sgIWFxESOQCwAEVYsA4vG7EOHj5ZsABFWLADLxuxAxI+WbIIAQorWCHYG/RZsA4QshMBCitYIdgb9FkwMRcGBicmJzcWFxY3EzY2FxYXByYjIgfxE7mVNUEcNBmcHsMTxZ02XCIwKLcja6OtAgIUkg4BB8kFDKjEAgEVjw3lAAIAMQEVBC0D8wAWACkAawCwGS+wAtCwAi+wCNCwCC+wAhCwC9CwCBCyDgEKK1gh2Bv0WbACELIUAQorWCHYG/RZsA4QsBbQsBkQsB3QsB0vsBkQsB/QsB0QsiIBCitYIdgb9FmwGRCyJgEKK1gh2Bv0WbAiELAp0DAxEzYzMhcXFhYzMjY3BwYnIiYnJyYjIgcHNjM2FhYzMjcHBiciJiYjIgcHjG2QU1A4MV46PHdNFW+CO2AxMlRSf4k4bo0yU9RNeoQUb4IsStlUbHAtA4ZtKx8dKThHvW8CKR0cL3/mbgEaeH+8bwIWelkmAAABAHAAnQP/BNMAEwA3ALATL7IAAQorWCHYG/RZsATQsBMQsAfQsBMQsA/QsA8vshABCitYIdgb9FmwCNCwDxCwC9AwMQEhByc3IzczNyE3IRMXBzMHIQchA5r+A7NbhaQc/b3+chwB6cFbkrgd/u68AaMBj/JBsaD/oQEEQcOh/wD////UAAIDyQRCAGYAIBFhQAA5mgAHAZf/Kf13//8AGQABA+gETQBmACIUc0AAOZoABwGX/279dgACAEEAAAPUBbAABQAJADiyCAoLERI5sAgQsAHQALAARViwAC8bsQAcPlmwAEVYsAMvG7EDED5ZsgYAAxESObIIAAMREjkwMQEzAQEjCQITAQI9iQEO/gWK/vICKP6PtAFyBbD9Hf0zAuECBP3n/f4CF///AHgApAHwBPcAJwASAEMAsgAHABIA2wQkAAIAcAJ5AncEOgADAAcAJQCwAEVYsAMvG7EDGD5ZsADQsAAvsAXQsAUvsAMQsAbQsAYvMDETIxMzEyMTM/qKTorgik+KAnkBwf4/AcEAAAH/4/9fAQ8A7wAHAAwAsAQvsADQsAAvMDEXJzY3NzMHBkZjWxYPrAkeoUp7eVI/0wD//wB0AAAFawYZACYASgAAAAcASgIbAAAAAgBYAAAEBQYZABYAGgBpALAARViwCS8bsQkePlmwAEVYsBMvG7ETGD5ZsABFWLAZLxuxGRg+WbAARViwFi8bsRYQPlmwAEVYsBgvG7EYED5ZsBMQshQBCitYIdgb9FmwAdCwExCwBNCwCRCyDwEKK1gh2Bv0WTAxMxMjPwI2NzYXFhYXByYnJgcHMwcjAyEjEzNbo6YZpg4beHOvR4VGLHFv5SIN1xnWowI4try2A6uPAWS3ZF8CAiMYnjMCBORXj/xVBDoAAQB0AAAEYgYaABgAXACwAEVYsBMvG7ETHj5ZsABFWLAHLxuxBxg+WbAARViwCi8bsQoQPlmwAEVYsBgvG7EYED5ZsBMQsgIBCitYIdgb9FmwBxCyCAEKK1gh2Bv0WbAM0LAHELAP0DAxASYjIgYHBzMHIwMjEyM3Mzc2NhcWFxcDIwOfgTtjeA8S4Rngo7WkpxmmEhrYpm24YP61BWUWb19zj/xVA6uPf6e6AgIqFPooAAIAdAAABlcGGwAnACsAlwCwAEVYsAgvG7EIHj5ZsABFWLAWLxuxFh4+WbAARViwIC8bsSAYPlmwAEVYsCovG7EqGD5ZsABFWLAnLxuxJxA+WbAARViwJC8bsSQQPlmwAEVYsCkvG7EpED5ZsCAQsiEBCitYIdgb9FmwJdCwAdCwIBCwEtCwBNCwCBCyDQEKK1gh2Bv0WbAWELIcAQorWCHYG/RZMDEzEyM3Mzc2NhcWFwcmJyIGBwchNzY2FxYWFwcmJyYHBzMHIwMjEyEDISMTM3ekpxmmERfUoDZLFjAxWXUREwGDDhrntUiJRC9zb+QiDdgZ16O1o/59owRvtby1A6uPeajAAgIQmAoCal55ZbHJAgImGJszAgLiV4/8VQOr/FUEOgAAAQB0AAAGmQYbACoAigCwAEVYsAkvG7EJHj5ZsABFWLAXLxuxFx4+WbAARViwIy8bsSMYPlmwAEVYsCovG7EqED5ZsABFWLAnLxuxJxA+WbAARViwHC8bsRwQPlmwIxCyJAEKK1gh2Bv0WbAo0LAB0LAjELAT0LAE0LAJELIOAQorWCHYG/RZsBcQsh8BCitYIdgb9FkwMTMTIzczNzY3NhcWFwcmIyIGBwchNzY2FxYXFwMjEyYjJgcHMwcjAyMTIQN3o6YZphIdemaONUsWOihbdRARAYQPGdaqVnG//rXzgTzNIg7hGt+jtaP+faMDq49/tl5OAgIQmAxuZ2xrtMECAhYo+igFZBYC41+P/FUDq/xVAAABAHT/7QTIBhoAJgCBALAARViwIi8bsSIePlmwAEVYsB4vG7EeGD5ZsABFWLARLxuxERg+WbAARViwJS8bsSUYPlmwAEVYsAsvG7ELED5ZsABFWLAZLxuxGRA+WbAeELIbAQorWCHYG/RZsBDQsAHQsAsQsgYBCitYIdgb9FmwIhCyFQEKK1gh2Bv0WTAxASMDBhcWMzI3BwYnJiY3EyM3MxMmJyIGBwMjEyM3Mzc2NhcWFwMzBK7DcgMCB08iMgpCQW5sDG7AGr8zRWpVchLNtaSnGaYRF8WerNU8xQOr/WAaF00KmBIBApuCAp6PASEkAmtp+1MDq494pcMCA2b+iwABACn/6QZ2BhMATQC2ALAARViwSC8bsUgePlmwAEVYsEEvG7FBGD5ZsABFWLASLxuxEhg+WbAARViwLi8bsS4QPlmwAEVYsAovG7EKED5ZsBIQsEzQsgEBCitYIdgb9FmwChCyBQEKK1gh2Bv0WbABELAP0LBIELIXAQorWCHYG/RZsh9BLhESObBBELIiAQorWCHYG/RZsjouQRESObA6ELInAQorWCHYG/RZsjIuQRESObAuELI1AQorWCHYG/RZMDEBIwMHFBcWNwcGJyYmNzcTIzczNzYnJicmBh8CFgcjNiYnJgYHBgQXFgcOAicmJjczFBYXFjY3NicnJjc+AjMWFyY3NjYXFhYHBzMGXcRsAVIbOAxLOmFqAwJqtxm1DAUEDotlegwFFgcGtQJoWF2EDA4BJzzKCwZ5ynKr3Qa0cWVkkAwSkqD/CwV1xW1bWRMHD92UqbEUDcQDq/19NGQDAQuYEwIBkIckAoGPVisqjgMDiZI7q0A8UmUCAltLaU0bWbRkllADAsWbXWsCAldNcy0uVcBglFMBH3s/hqMCBNKqVwAAFv+r/nIIRgWuAA0AHAApADgAPgBEAEoAUABXAFsAXwBjAGcAawBvAHcAewB/AIMAhwCLAI8BDACwPi+wAEVYsEcvG7FHHD5Zsn9KAyuyfHsDK7J4gwMrsoA7AyuyCj5HERI5sAovsAPQsAMvsA7QsA4vsAoQsA/QsA8vslEODxESObBRL7JwBworWCHYG/RZshZRcBESObAKELIgBworWCHYG/RZsAMQsiYHCitYIdgb9FmwDxCwKtCwKi+wDhCwL9CwLy+yNQcKK1gh2Bv0WbA+ELI9CgorWCHYG/RZsD4QsGzQsGjQsGTQsD/QsD0QsG3QsGnQsGXQsEDQsEcQskgKCitYIdgb9FmwYNCwXNCwWNCwS9CwRxCwYdCwXdCwWdCwTNCwDhCyUgcKK1gh2Bv0WbAPELJ3BworWCHYG/RZMDEBBgYnJiY3NzY2FxYWBxMTFxYWBwYGBxYVBgcGBwE2JicmBgcHBhYWNjcBMwMGBiMiJicXBjc2NjcBEzMHMwchNzM3MwMBEyEHIwclNyEDIzcBBzM2NzYnATchByE3IQchNyEHEzchByE3IQchNyEHATc2NzYvAgEjNzM3IzczAyM3MyUjNzM3IzczAyM3MwMQCotfXnQECQiLYF10Agtgql5fAwI3J08BFjSF/rgFODo7VgwNBzl4VQsD0GE7CmtNUmYBWQRYLDkJ+WM3byS/FAT/FMAkbTf5tTIBLRS+HgXbFAEuMm0e++geb28ODVIBShUBDxX9bhUBDhX9bxUBDRXNFAEPFP1uFAEOFP1vFAENFAFYV3sNCkUhXvzOby1vFW8sb69vLW8HAG0sbRVtLW2vbSxtAdRlegICemFuZXsCAnpg/rgCJQEDSkIwORUdWDAhTgQBS0NOAgJOSHI/UgRRRQFP/oVPW1JVAl8CATgp/MoBO8pxccr+xQYfAR10qal0/uOp/LapBVRIBwNLdHR0dHR0+ThxcXFxcXEDwgEGUTcHAwH+0vx++vwV+X78fvr8FfkABQBc/dUH1whzAAMAHAAgACQAKAA0ALAlL7AhL7IcHgMrsCUQsADQsAAvsCEQsALQsAIvsg0AHBESObANL7IfAh4REjmwHy8wMQkDBTQ2NzY2NTQmIyIGBzM2NjMyFhUUBwYGFRcjFTMDMxUjAzMVIwQYA7/8QfxEBA8eJEpcp5WQoALLAjorOThdWy/KyspLBAQCBAQGUvwx/DEDz/E6Ohgnh0qAl4t/MzRANF88QVxMW6r9TAQKngQAAQBiAAAESgWwAAYAObIBBwgREjkAsABFWLAFLxuxBRw+WbAARViwAi8bsQIQPlmwBRCyAwEKK1gh2Bv0WbIAAwUREjkwMQEBIwEhNyEENvzrvwMS/T4bA30FPfrDBRiYAAACAEH/6AQoBFIAEgAhAEOyCCIjERI5sAgQsBfQALAARViwAC8bsQAYPlmwAEVYsAkvG7EJED5ZshYBCitYIdgb9FmwABCyHgEKK1gh2Bv0WTAxAR4CBwcOAicmJicmNzc2EjYDFhYXFjY3NicmJicmBgYCgIrDWw8DFZ31j6LXGgwJAxWg8PcDe3CM0h0FAQN8cW2yYQROBI/6lxag/40EBMuuUFEWowEFiv1fh6QEBeLKKy6IqQQEjPsAAAH/D/5FAQ8AmAAMACcAsA0vsABFWLAELxuxBBI+WbIJAQorWCHYG/RZsA0QsAzQsAwvMDElAwYGJyYnNxYXMjc3AQ8nG7yPND8bLjGFJCmY/vugrgICEZ8OArP8AAAB/73+mQDMAJkAAwASALAEL7AC0LACL7AA0LAALzAxEyMTM3O2Wbb+mQIAAAIBEwTXA3MGzwALAB4AXACwAy+yCQQKK1gh2Bv0WbAH0LAHL7AL0LALL7AHELAP0LAPL7AS0LASL7I/EgFdsA8QsBTQsBQvsBIQshgECitYIdgb9FmwDxCyHAQKK1gh2Bv0WbAYELAe0DAxAQYGJyYmNRcGFzI3EwYGIyImBwYHJzY2MzIWFjc2NwNMCaR/e5KQBH2DHLgJXkYpgidFHlIMYUMkeCQTQyIFr2ZyAgJ1YAJ1AnYBDVBnTwEDVRRTZUYKAQNWAAIBEgTeA0UHAwALABoAQwCwAy+yCQQKK1gh2Bv0WbAL0LALL7AH0LAHL7ALELAa0LAaL7AU0LAUL7IZGhQREjmyDRQZERI5sRMKK1jYG9xZMDEBBgYnJiY1FwYXMjcnNzc2NzYmIzcXFgcGBwcDRQuhfHqRjAaAhBu/Ei9hBwRAUgwX9AQDmwoFsWZtAgJwYAJyAnMSfAMIMxobUwEMfWIYPwAAAgERBN8DXAaKAA4AEgA3ALAEL7ILBAorWCHYG/RZsA7QsA4vsAnQsAkvsA4QsBHQsBEvsA/QsA8vsBEQsBLQGbASLxgwMQEGBgcjJiYnNRcGFxY2NycXBwcDXAqdfw+BkwKSBIM9WQ45osJxBbBibQIDb2ABAnMCATk82wHEAQACAM0E5AOWBtMABgAYAI0AsAEvsAbQsAYvQAkPBh8GLwY/BgRdsgABBhESORmwAC8YsAYQsALQsAEQsAPQsAMvsAAQsATQGbAELxiwBhCwCtCwCi9ACx8KLwo/Ck8KXwoFXbAN0LANL7Q/DU8NAl2wChCwD9CwDy+wDRCyEwYKK1gh2Bv0WbAKELIWBgorWCHYG/RZsBMQsBjQMDEBIycHIyUzNwYGIyImBwYHJzY2MzIWNzY3A5aTpdq3AU+A6wtdPSlxJz4iTwtdQCZ2JkAiBOSdnfTmRllKAQRGE0VdSQECRgACAM4E5AR5Bs8ABgAVAF0AsAEvsADQGbAALxiwARCwBtCwBi+2DwYfBi8GA12wAtCwARCwA9CwAy+wABCwBNAZsAQvGLABELAH0LAHL7AO0LAOL7IIBw4REjmxDQorWNgb3FmyFA4HERI5MDEBIycHBwEzFzc3NjYnJzcWFgcGBgcHA5aUoN62ATa3qBMrVg5hHwt3cgMDREoKBOS5uAEBBnyDBQtqBQJdB1BDNkUQPQAAAgAiBM8DkwaCAAYACgBOALABL7AA0BmwAC8YsAEQsAPQsAMvsAXQsAUvtg8FHwUvBQNdsALQsAAQsATQGbAELxiwARCwCNCwCC+wB9AZsAcvGLAIELAK0LAKLzAxASMnByMBMwUjAzMDk6+KwNABR5T+j3yWtgTPnZ0BBlUBAgACANIE4QT7BpUABgAKAFQAsAMvsAHQsAEvtg8BHwEvAQNdsAMQsALQGbACLxiwARCwBNCwAxCwBdCwBS+wAhCwBtAZsAYvGLADELAJ0LAJL7AH0LAHL7AJELAK0BmwCi8YMDEBMxMjJwcjATMDIwIbleuviMDSA1nQ8ZYF6P75np4BtP79AAIBEQTfA1wGigAOABIANwCwBC+yCwQKK1gh2Bv0WbAO0LAOL7AJ0LAJL7AOELAS0LASL7AQ0LAQL7ASELAR0BmwES8YMDEBBgYHIyYmJzUXBhcWNjclMxcjA1wKnX8PgZMCkgSDPVkO/uGJS1YFsGJtAgNvYAECcwIBOTzbxgAAAQD8BI4CJwY9AAcADACwBS+wANCwAC8wMQEXBgcHIzc2AcBnSxQYtBEdBj1XbmaEcsEAAAL/pQAAA+MEjQAHAAoAU7IECwwREjmwBBCwCtAAsABFWLAELxuxBBo+WbAARViwAi8bsQIQPlmwAEVYsAcvG7EHED5ZsggCBBESObAIL7IAAQorWCHYG/RZsgoCBBESOTAxASEDIwEzASMBIQMC+f4JnMECm6IBAbD+IwGEaAEX/ukEjftzAa4B+wAAAwAdAAAD5wSNAA0AFgAeAHuyGB8gERI5sBgQsA3QsBgQsBbQALAARViwAS8bsQEaPlmwAEVYsAAvG7EAED5ZshcAARESObAXL7K/FwFdtB8XLxcCXbTfF+8XAl2yDgEKK1gh2Bv0WbIHDhcREjmwABCyDwEKK1gh2Bv0WbABELIeAQorWCHYG/RZMDEzEwUWFgcGBxYWBwYGBwMDFzI2NzYmJycXMjY3NicnHcsBfr/CCgrST1YECO3Av0L0bpUMC1dk+dlvjgoU1+EEjQEFpIyqUxqOXZ21AwIS/oUBZlpUYgWOAV1ToAUBAAABAEf/7AQ3BKMAHABOshMdHhESOQCwAEVYsAsvG7ELGj5ZsABFWLADLxuxAxA+WbIACwMREjmyDgMLERI5sAsQshIBCitYIdgb9FmwAxCyGgEKK1gh2Bv0WTAxAQYEJy4CNzcSABcWFhcjJiYnJgYHBhcWFhcWNwPmI/7tyIrBVhEMJQE54LjVCLMFbXiTyh8bBgV2bPtMAXq70wQEjPuYWAEIATAGBNW2coIEBcq2nmN1iwQK/AAAAgAdAAAEDwSNAAoAFQBDshUWFxESObAVELAC0ACwAEVYsAIvG7ECGj5ZsABFWLAALxuxABA+WbINAQorWCHYG/RZsAIQshUBCitYIdgb9FkwMTMTBR4CBwcCACETAxcyNjc3NicmJx3LAVKW2mUQBRz+ov76CJaUvPMZBhI4RawEjQEEjfiaMP78/ssD9PyjAdvHMaJmfAYAAAEAHQAAA+8EjQALAGGyCQwNERI5ALAARViwBi8bsQYaPlmwAEVYsAQvG7EEED5ZsgsGBBESObALL7QfCy8LAl2yvwsBXbIAAQorWCHYG/RZsAQQsgIBCitYIdgb9FmwBhCyCAEKK1gh2Bv0WTAxASEDIQchEyEHIQMhAzH9/UICWRv888sDBxv9rjoCBAIO/omXBI2Z/rIAAQAdAAAD4gSNAAkAR7IHCgsREjkAsABFWLAELxuxBBo+WbAARViwAi8bsQIQPlmyCAIEERI5sAgvsgEBCitYIdgb9FmwBBCyBwEKK1gh2Bv0WTAxASEDIxMhByEDIQMh/ghXtcsC+hv9uz8B+QHz/g0EjZn+mAAAAQBM/+4EQQSjAB8AXLIeICEREjkAsABFWLALLxuxCxo+WbAARViwAy8bsQMQPlmyDgsDERI5sAsQshEBCitYIdgb9FmwAxCyGQEKK1gh2Bv0WbIfCwMREjmwHy+yHAEKK1gh2Bv0WTAxJQYGJy4CNzcSABcWFhcnJicmBgcGFxYWFxY3NyE3IQPWP/Cekc9dEQchATvos9YQsRTalMwgHAsMhW+lai3+7hoBw5ZRVwMCkPydOwEWATYGBMCvAdMIBci4n196iAMFTu6QAAABAB0AAASaBI0ACwBosgEMDRESOQCwAEVYsAovG7EKGj5ZsABFWLAHLxuxBxo+WbAARViwBC8bsQQQPlmwAEVYsAEvG7EBED5ZsggEBxESOXywCC8YtGAIcAgCcbKgCAFdtGAIcAgCXbIDAQorWCHYG/RZMDEhIxMhAyMTMwMhEzMDz7RW/bhXtcu0WQJIWrUB8v4OBI39/QIDAAABACoAAAGqBI0AAwAksgIEBRESOQCwAEVYsAIvG7ECGj5ZsABFWLAALxuxABA+WTAxMyMTM+C2yrYEjQAB//b/6wObBI0ADgAvsgwPEBESOQCwAEVYsAAvG7EAGj5ZsABFWLAFLxuxBRA+WbILAQorWCHYG/RZMDEBMwMGBicmJjcXBhcWNjcC5LeMFuyorcIItQzIW34RBI38xaPEBAS5oAHBBAJvZAABAB0AAAR/BI0ADABMsgoNDhESOQCwAEVYsAQvG7EEGj5ZsABFWLAILxuxCBo+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsgAEAhESObIGBAIREjkwMQEHAyMTMwM3ATMBASMBwrBAtcu0X5IBw+39zAF8zAIGlf6PBI394IkBl/3w/YMAAQAdAAADIwSNAAUAL7IFBgcREjkAsABFWLAELxuxBBo+WbAARViwAi8bsQIQPlmyAQEKK1gh2Bv0WTAxNyEHIRMz7AI3G/0Vy7SXlwSNAAABAB0AAAWwBI0ADgBgsggPEBESOQCwAEVYsAAvG7EAGj5ZsABFWLACLxuxAho+WbAARViwBC8bsQQQPlmwAEVYsAgvG7EIED5ZsABFWLAMLxuxDBA+WbIBAAQREjmyBwAEERI5sgoABBESOTAxARMBMwMjExMBIwsCIxMBzd0CF+/KtEdq/eWF4kxEtMsEjfxzA437cwGbAfv8agOs/dv+eQSNAAEAHQAABJoEjQAJAEyyAQoLERI5ALAARViwBS8bsQUaPlmwAEVYsAgvG7EIGj5ZsABFWLAALxuxABA+WbAARViwAy8bsQMQPlmyAgUAERI5sgcFABESOTAxISMBAyMTMwETMwPPrf5KmrXLrQG3mrQDdPyMBI38iwN1AAACAEr/6gROBKMADwAfAEayHCAhERI5sBwQsAjQALAARViwCC8bsQgaPlmwAEVYsAAvG7EAED5ZsAgQshMBCitYIdgb9FmwABCyGwEKK1gh2Bv0WTAxBSYmAjc3EgAXHgIHBwIAEyYmJyYGBwYXFhYXFjY3NgH2j8VYEQUgAT/lj8RXEAQc/sKuCX1tldEdFQgKfmyUzh8VEASRAQOcKwENAUcGBI7+nyn+8P61AxN4iQQF17aFX3yNBAXRvIMAAgAdAAAEKQSNAAoAEwBNsgoUFRESObAKELAM0ACwAEVYsAMvG7EDGj5ZsABFWLABLxuxARA+WbIMAwEREjmwDC+yCgEKK1gh2Bv0WbADELITAQorWCHYG/RZMDEBAyMTBRYWBwYEIyUFMjY3NiYnJQEeTLXLAbmz1QsM/vrR/v0BB32fDgtvZ/7kAbb+SgSNAQTCoKzFmQFyZV9sBAEAAAIARf83BEsEowATACMAOQCwAEVYsA0vG7ENGj5ZsABFWLAFLxuxBRA+WbANELIXAQorWCHYG/RZsAUQsh8BCitYIdgb9FkwMSUXBycGIyYCPwISABcWFhIHBwIDJiYnJgYHBhcWFhcWNjc2Awy2gttCN8fgDAMGHwFA5JDGWBIGKoAJfm6Vzx0VCAl8bZXOHxZBpGbFCwMBHegnNQEIAUYGBJH+/Z4y/qcCHXqLBAXYtoRfeo8EBdC9hQAAAgAdAAAEAQSNAA0AFgBNALAARViwBC8bsQQaPlmwAEVYsAIvG7ECED5Zsg4CBBESObAOL7IBAQorWCHYG/RZsgoBBBESObACELAN0LAEELIWAQorWCHYG/RZMDEBIQMjEwUWFgcGBRMVIwEXMjY3NiYnJwIz/u1OtcsBkb3LDBL++cbA/ljkd6AMC2hu9AHB/j8EjQEFuJ3oYf4jDAJYAXRgW2gFAQAAAQAR/+sD7QSdACcAVACwAEVYsAovG7EKGj5ZsABFWLAeLxuxHhA+WbIDHgoREjmwChCyEgEKK1gh2Bv0WbAO0LADELIXAQorWCHYG/RZsB4QsiUBCitYIdgb9FmwItAwMQE2LwIkNzY2NzcWFgcnNicmJyIGBwYXFxYWBwYEJyYmNxcGFhcyNgLZEqR9Pv7/DQjnsymz1wW0BSk3f3GSDBG6QrulCAr+98G67wW1B4B8eJYBMXs2JxdmzoyyCgEExJ0BUTRFA15ScTkUN7J7mLEFAselAWVxAlwAAAEAbQAABEIEjQAHAC4AsABFWLAGLxuxBho+WbAARViwAy8bsQMQPlmwBhCyBQEKK1gh2Bv0WbAB0DAxASEDIxMhNyEEJv5+sLWw/n4cA7kD9PwMA/SZAAABAEX/6gRXBI0AEQAuALAARViwCS8bsQkaPlmwAEVYsAQvG7EEED5Zsg0BCitYIdgb9FmwCRCwEdAwMQEDBgQnJiY3EzMDBhYXFjY3EwRXgxn+6si/2RODs4QNdXR6qRWEBI389breBATcswMM/PN1gQMEgnsDDQABAHoAAASZBI4ACAA4sgUJChESOQCwAEVYsAgvG7EIGj5ZsABFWLADLxuxAxo+WbAARViwBS8bsQUQPlmyAQgFERI5MDEBFzcBMwEjAzcB0gcsAcvJ/Xqp8LUBJFthA2P7cwSNAQABAJUAAAYpBI4AEgBZALAARViwAy8bsQMaPlmwAEVYsBIvG7ESGj5ZsABFWLAILxuxCBo+WbAARViwDy8bsQ8QPlmwAEVYsAsvG7ELED5ZsgEPEhESObIGCwgREjmyDRILERI5MDEBBzcBMxMXNwEzASMDNQcBIwM3AWsGGwGLoVEBHwFTuf4VqloE/l6qVacBJlJCA3f8hj1cA1v7cwOVCgv8bASNAQAB/7YAAARtBI0ACwBMsgAMDRESOQCwAEVYsAEvG7EBGj5ZsABFWLAKLxuxCho+WbAARViwBC8bsQQQPlmwAEVYsAcvG7EHED5ZsgABBBESObIGAQQREjkwMQEBMwEBIwMBIwEBMwIoAWHk/hQBIsnV/pTjAfj+6MgC2wGy/bT9vwG6/kYCVQI4AAABAHQAAARlBI0ACAA4sgAJChESOQCwAEVYsAEvG7EBGj5ZsABFWLAHLxuxBxo+WbAARViwBC8bsQQQPlmyAAEEERI5MDEBATMBAyMTATMB/AGT1v3URbVL/urAAksCQv0A/nMBrQLgAAH/3AAABA4EjQAJAEuyBQoLERI5ALAARViwBy8bsQcaPlmwAEVYsAIvG7ECED5ZsgEBCitYIdgb9FmyBAIBERI5sAcQsgYBCitYIdgb9FmyCQYHERI5MDE3IQchNwEhNyEH4AKWG/yBGAMV/YsbA18Xl5eFA2+ZggAAAgAd//ACgQMlAA0AGQBGshAaGxESObAQELAH0ACwAEVYsAcvG7EHFj5ZsABFWLAALxuxABA+WbAHELIQAgorWCHYG/RZsAAQshYCCitYIdgb9FkwMQUmJjc3NjYXFhYHBwYGEyYnJg8CFhcWNzcBIIKBDA0TrYmBgQwOE6s0BGOFHRQBBGWEHRMMBLSZeq64BAS1mYGqtAIxfAMDxLM3fwMGybYAAAEAawAAAfwDFQAGADIAsABFWLAFLxuxBRY+WbAARViwAS8bsQEQPlmyBAEFERI5sAQvsgMCCitYIdgb9FkwMSEjEwc3JTMBeZpo3BgBZBUCVTiHcQAAAf/pAAACcwMkABcARwCwAEVYsA8vG7EPFj5ZsABFWLABLxuxARA+WbIWAgorWCHYG/RZsALQsgMPFhESObAPELIIAgorWCHYG/RZshUWDxESOTAxISE3ATY3NiYnJgYHBzY2FxYWBwYPAiECL/26FAFjYwwHNTBCUA6aC66AeIsFCJdAxAF7dAEqVEowNgEBSz4BdZUCAn5me30zkQAB//v/8wJ4AyIAJABsALAARViwDS8bsQ0WPlmwAEVYsBcvG7EXED5ZsgAXDRESOXywAC8YtoAAkACgAANdtqAAsADAAANxsA0QsgcCCitYIdgb9FmwABCyJAIKK1gh2Bv0WbISJAAREjmwFxCyHgIKK1gh2Bv0WTAxExc2Njc2JiMiByM2NjMWFgcGBxYHBgYnJiY1MxQWMzI2NzYnJ+ROQl0HBj4ycB2cC599fo4FB5h2BAW1hXeVl0I6QFsHDY1XAcsBAj02MTFdZXkDdmF3QiuBb4ECAnxsMjdANWYFAQAAAv/wAAACcwMVAAoADgBFALAARViwCS8bsQkWPlmwAEVYsAUvG7EFED5ZsgwFCRESObAML7AA0LIDAgorWCHYG/RZsAbQsAwQsAjQsg0JBRESOTAxATMHIwcjNyE3ATMBMxMHAgtoF2cemh7+lQ0Bv6T+QdA6FgErgqmpcAH8/hYBIx4AAQAW//MCjwMVABsAYACwAEVYsAEvG7EBFj5ZsABFWLANLxuxDRA+WbABELIEAgorWCHYG/RZsgcNARESObAHL7AF0LANELAR0LANELITAgorWCHYG/RZsAcQshkCCitYIdgb9FmwBxCwG9AwMRMTIQchBzYzMhYHBgYnJiYnFxY3MjY3NiYnIgdGdgHTGP6wO0BCbYEEBq6DdZEFlAlvQVYIBkE8Qz8BhgGPhKschXN8mwICgGMBZQJSRDxGASoAAgAe//ICaAMgABIAHQBVALAARViwAC8bsQAWPlmwAEVYsAwvG7EMED5ZsAAQsgECCitYIdgb9FmyBgwAERI5sAYvsgQGDBESObITAgorWCHYG/RZsAwQshgCCitYIdgb9FkwMQEHIyYHNhcyFgcGBiYmNzc2JDMDJgcHBhYyNjc2JgI8DQv+VlJmanYGBrD8kgsFFgEJ1MddPQQHOn5XBgc8Ax+DA+FOApNsep8ErIw4zO7+bgJRIkdgVz05SgAAAQAvAAACswMVAAYAMgCwAEVYsAUvG7EFFj5ZsABFWLACLxuxAhA+WbAFELIEAgorWCHYG/RZsgAEBRESOTAxAQEjASE3IQKh/jutAcX+ThcCWgKx/U8Ck4IAAwAL//QCeAMjABQAIAAsAH4AsABFWLASLxuxEhY+WbAARViwCC8bsQgQPlmyKggSERI5fLAqLxi0UCpgKgJxtqAqsCrAKgNxtoAqkCqgKgNdtCAqMCoCcrIYAgorWCHYG/RZsgIqGBESObINGCoREjmwCBCyHgIKK1gh2Bv0WbASELIkAgorWCHYG/RZMDEBBgcWBwYGByMmJjc2NyY3NjYXFhYDNiYjIgYHBhYzMjYTNiYjIgYHBhYzMjYCcweIbAQDo30QfpAFB5xbBASjeHSJxAVCNj5VBwZCNj5WLwU2MDZJBgY4LjJOAktxSTt2aYADA3digkk3aWt9AgJ3/kIxN0A0MjdBAYoqNTwvKzU9AAIANv/3AncDIgATACEAUQCwAEVYsAgvG7EIFj5ZsABFWLAPLxuxDxA+WbICDwgREjmwAi+wDxCyEQIKK1gh2Bv0WbACELIUAgorWCHYG/RZsAgQshwCCitYIdgb9FkwMQEGIyImNzY2FxYWBwcGBCMnNzI2JxY3NzYnJiYjIgYHBhYBwk1aa3oGBq+Cf4ULBBb+/9QUDYebWFE9CAMDBTctPVUHBjsBQECOcXuoAgKxkDPS4QF/XqIESz4dHS84XEI8TAABAJMCiwMYAyIAAwARALACL7IBAQorWCHYG/RZMDEBITchAv39lhsCagKLlwAAAwELBD8DGwZxAAMADwAZAD4AsABFWLANLxuxDRg+WbAH0LAHL7AC0LACL7AA0LAAL7ANELISBworWCHYG/RZsAcQshgHCitYIdgb9FkwMQEzByMHNDYzMhYVFAYjIiY3FjMyNjc2JiMiAlPI9n+bZUdDWWFGRVxSBT4hOgcEIiJEBnG23kZoXURFZltEUDMnHzQAAAP/mv5HBEkEUgAqADgARgCPALAARViwJy8bsScYPlmwAEVYsBYvG7EWEj5ZsCcQsCrQsCovsgADCitYIdgb9FmyCBYnERI5sAgvsg8IFhESObAPL7SQD6APAl2yOAEKK1gh2Bv0WbIcOA8REjmyIAgnERI5sBYQsjEBCitYIdgb9FmwCBCyPAEKK1gh2Bv0WbAnELJDAQorWCHYG/RZMDEBBxYHBwYHBiciJwYHBhcXFhYHBgYEJyYmNzY2NyY3NjcmNzc2NzYfAgUBJwYHBhYzMjY2NzYmJwMGFhcWNjc3NiYnJgYHBC+QIQkFHJ58l0lNQggJYLC6tQgGk/7qhsLiBwVxXyYGCouCCwERnoCjJmsBcfz1T4IRCYFyXK9lCQpTbt8GdVljnA8CB3BdYpwQA6cBXGEkrmNNAhc4OUYEAgaUg2OcYAMFjnlZizAvP3xebLAMvmdTAgITAfvyBz95SVIzWjk/RAMCnVZvAgJ4WxZWdQICdV4AAAIAS//kBIcEUgATACUAbrIiJicREjmwIhCwC9AAsABFWLALLxuxCxg+WbAARViwDy8bsQ8YPlmwAEVYsAIvG7ECED5ZsABFWLATLxuxExA+WbIAAgsREjmyDgsCERI5sAIQshkBCitYIdgb9FmwCxCyIgEKK1gh2Bv0WTAxJQInJiYnJjc2EjYXFhYXNzMDEyMBBhcWFhcWNzY3NzYnJicmBgcDMpf8mbEHAwgUjc9+fKogULDKEKj94gcDBWxgoG8xFwUGHTODjLQa8v7yBwTUtTlWpwEbiQMEinXu/db98AHtPD9vgAMD0F1iI25krwYF7cwAAAIAQwAABOUFrwAcACUAYbIeJicREjmwHhCwHNAAsABFWLADLxuxAxw+WbAARViwAS8bsQEQPlmwAEVYsBMvG7ETED5Zsh0BAxESObAdL7IAAQorWCHYG/RZsgkAHRESObADELIlAQorWCHYG/RZMDEBAyMTBTIWBwYFFhcWBwcGFxYXByMmJyY3NzYmJyUFMjY3NiYnJQFtbb39Ad3e6hEV/vWQEAQGFgcDBCEDuSAFAwkUDWlo/rYBJaK5EA16f/61AnT9jAWvAde/5HBAqzM1lTcoOioZLUYuRYp0iQaeAYiCdH4EAQABAEQAAAVqBbAADABksgoNDhESOQCwAEVYsAQvG7EEHD5ZsABFWLAILxuxCBw+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsgYCBBESObAGL7LPBgFdsi8GAV2yAQEKK1gh2Bv0WbIKAQYREjkwMQEjAyMTMwMzATMBASMCI7JxvP27b4kCXff9YQG81gKO/XIFsP1+AoL9Nf0bAAEAJQAABB4GAAAMAFCyBQ0OERI5ALAEL7AARViwCC8bsQgYPlmwAEVYsAIvG7ECED5ZsABFWLALLxuxCxA+WbIGAggREjmwBi+yAQEKK1gh2Bv0WbIKAQYREjkwMQEjAyMBMwMzATMBASMBtIJXtgELtZlyAXzk/jIBN8gB9f4LBgD8jgGs/gr9vAAAAQBEAAAFSgWwAAsATLIJDA0REjkAsABFWLADLxuxAxw+WbAARViwBy8bsQccPlmwAEVYsAEvG7EBED5ZsABFWLAKLxuxChA+WbIAAwEREjmyBQMBERI5MDEBAyMTMwMzATMBASMBeXm8/bt2CQLB+vz6AiHXArz9RAWw/XgCiP0y/R4AAQAlAAAEBgYYAAwAU7IFDQ4REjkAsABFWLAELxuxBB4+WbAARViwCC8bsQgYPlmwAEVYsAIvG7ECED5ZsABFWLALLxuxCxA+WbIABAIREjmyBgQCERI5sgoHABESOTAxASMDIwEzAxcBMwEBIwE8Blu2AQ+2pwIByPn92QGFzAHz/g0GGPxzAQGw/gT9wgAAAQAS/xMD7wVzACwAbbIgLS4REjkAsABFWLAJLxuxCRo+WbAARViwIy8bsSMQPlmyBCMJERI5sAkQsAzQsAkQsBDQsAwQshQBCitYIdgb9FmwBBCyGQEKK1gh2Bv0WbAjELAg0LAjELAn0LAgELIqAQorWCHYG/RZMDEBNi8CJDc2Njc3MwcWFgcnNicmJyIGBwYWFhcWBwYGBwcjNyYmNxcGFhcyNgLaEqR9Pv7/DQneryyRK5GdBrQFKTd/cZIMB1rvSMUMCNO3LJItorgGtAV+fHiWATF7NicXZs6JrBHZ3Ry/gwFRNEUDXlI8VUYmaL2EqhLh4xjBjwFmcAJcAAEABgAAA9gEogAeAGqyGh8gERI5ALAARViwEy8bsRMaPlmwAEVYsAYvG7EGED5Zsh4GExESObAeL7IABAorWCHYG/RZsAYQsgUBCitYIdgb9FmwCNCwABCwDNCwHhCwD9CwExCwF9CwExCyGQEKK1gh2Bv0WTAxASUGBwclByE3FzY3Nwc3Mzc2NhcWFgcnNicmBgcHIQL0/oIjMiEChBv8nRYJZiMUphacCxfqraeqCrYQrWB9EA0BiQH0Ac5cNQKYlgEpxXIBeWrb8AUE0q4B4gcDmY5yAAEANAAABG4EjQAXAJSyABgZERI5ALAARViwAS8bsQEaPlmwAEVYsBcvG7EXGj5ZsABFWLANLxuxDRA+WbIADRcREjmyEBcNERI5sBAvsg8QAV2wFNCwFC+0DxQfFAJxQA8PFB8ULxQ/FE8UXxRvFAddsATQsAQvsBQQshMECitYIdgb9FmwBdCwEBCwCdCwEBCyDwQKK1gh2Bv0WbAK0DAxAQEzATMHJQcHJQchByM3ITchNyE3MwMzAgUBk9b+OO8W/tELEQE/Fv7HJ7Un/sUVAToO/sUV/uy/AkwCQf2MeQIMQwJ43d14S3kCdAABAB0AAAPNBI0ABQAysgEGBxESOQCwAEVYsAQvG7EEGj5ZsABFWLACLxuxAhA+WbAEELIBAQorWCHYG/RZMDEBIQMjEyEDsv3QsLXLAuUD9PwMBI0AAAL/sAAAA84EjQADAAgAPLICCQoREjmwAhCwBtAAsABFWLACLxuxAho+WbAARViwAC8bsQAQPlmyBQIAERI5sggBCitYIdgb9FkwMSEhATMDJwcBIQPO++IChqZyCib+fQI0BI3+z2xX/ScAAAMASv/qBFgEpAADABIAIgBnshcjJBESObAXELAC0LAXELAE0ACwAEVYsAsvG7ELGj5ZsABFWLAELxuxBBA+WbAC0LACL7LfAgFdsh8CAV2yAQEKK1gh2Bv0WbALELIWAQorWCHYG/RZsAQQsh4BCitYIdgb9FkwMQEhNyEBJgI3NxIAFxYWEgcHAgATJiYnJgYHBhcWFhcWNjc2Azv+LBsB1P6q1uAbBSABQOSPxFcQBiH+xLMJfG6W0B0VCAh/bZTOHxUB+Zn9XgUBO/QsAQwBSAYEjv8AnzT+7/7CAxR4iAQF2bSEYHmQBAXRvIQAAAH/sAAAA84EjQAIADiyAgkKERI5ALAARViwAi8bsQIaPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbIHAgAREjkwMTMjATMTIwMnB2S0Aoam8sedCioEjftzA1xsYAAAA//TAAADlQSNAAMABwALAGSyAAwNERI5sATQsAAQsArQALAARViwCi8bsQoaPlmwAEVYsAAvG7EAED5ZsgMBCitYIdgb9FmwABCwB9CwBy+yHwcBXbLfBwFdsgQBCitYIdgb9FmwChCyCQEKK1gh2Bv0WTAxISE3IREhNyETITchAsr9CRsC9/2KGwJ2ev0JGwL3mAF7mAFJmQAAAQAdAAAEhgSNAAcAP7IBCAkREjkAsABFWLAGLxuxBho+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsAYQsgMBCitYIdgb9FkwMSEjEyEDIxMhA7y2sP3MsLXLA54D9PwMBI0AAf/VAAAD3gSNAAwAQ7IGDQ4REjkAsABFWLAILxuxCBo+WbAARViwAy8bsQMQPlmyAgEKK1gh2Bv0WbAF0LAIELILAQorWCHYG/RZsAfQMDEBASEHITcBAzchByETAln+fgKIG/yRGgGU/BgDPxz9m/4COv5fmZkBuAG1h5n+YAADAFEAAATzBI0AEgAYAB4Ab7IHHyAREjmwBxCwFtCwBxCwHNAAsABFWLARLxuxERo+WbAARViwCC8bsQgQPlmyEBEIERI5sBAvsADQsgkIERESObAJL7AG0LAJELIVAQorWCHYG/RZsAAQshsBCitYIdgb9FmwFtCwFRCwHNAwMQEWFgcGAAcHIzcmJjc+Ajc3MwECBRMGBgUSJQM2NgNJyeEPEv7L6xi1GMvhEQyT+JwZtf2yHwEYdKK6Awof/up1oLsEFBP1wND+/w1ucBH9vIrReQl2/a3+7h8CdQ2nfQEPH/2MDagAAQB+AAAE9QSNABoAXLIZGxwREjkAsABFWLADLxuxAxo+WbAARViwES8bsREaPlmwAEVYsBkvG7EZGj5ZsABFWLAJLxuxCRA+WbIYAwkREjmwGC+wANCwGBCyCwEKK1gh2Bv0WbAI0DAxASQTEzMDBgAHAyMTJiYnJjcTMwMGFxYWFxMzArIBHzs0tTUk/ubgOLY4l7YUDQ00tjQJAgJkXYK2Abk6AWIBOP7I9/7bGP7fASEWwJpfZQE4/sdAQXKRFwLUAAEADAAABGoEoQAiAFmyACMkERI5ALAARViwGC8bsRgaPlmwAEVYsA8vG7EPED5ZsABFWLAhLxuxIRA+WbIgAQorWCHYG/RZsADQsBgQsgYBCitYIdgb9FmwABCwDtCwIBCwEdAwMSUkEzc2JicmBgcGBxcWFwchNzcmJyYSJBcWEg8CAgc3ByECVQEfNAUThIyZ0xYMAQEOqhj+ShypYAEElAESp8jpBwMGKdSyG/5JnEMBjSSpxgMEza10OSniN52XAo7F1AE2qwQE/vjTLyz+zp0DlwABAGz/6wToBI0AGABosgcZGhESOQCwAEVYsAIvG7ECGj5ZsABFWLAOLxuxDhA+WbAARViwFy8bsRcQPlmwAhCyAQEKK1gh2Bv0WbAF0LIIAhcREjmwCC+wDhCyDwEKK1gh2Bv0WbAIELIUAQorWCHYG/RZMDEBITchByEDNhcWFgcGBgc3JDc2JicmBwMjAcX+pxsDbxv+nzqVlbnFDA7/6A8BFxkNXXJ+tma0A/SZmf7WNAQEzri8xwKXBeluggIDMv3NAAABAEf/7AQ3BKMAHwBqshMgIRESOQCwAEVYsAsvG7ELGj5ZsABFWLADLxuxAxA+WbALELAP0LALELISAQorWCHYG/RZsAMQsBbQsBYvst8WAV2yHxYBXbIXAQorWCHYG/RZsAMQsh0BCitYIdgb9FmwAxCwH9AwMQEGBCcuAjc3EgAXFhYXIyYmJyYGByEHIQYXFhYXFjcD5iP+7ciKwVYRDCUBOeC41QizBW14kMIuAbkb/lIIBgh5Z/tMAXq70wQEjPuYWAEIATAGBNW2coIEA7m9mEJBboAECPoAAv/EAAAGqASNABcAIAB2sgghIhESObAIELAZ0ACwAEVYsBUvG7EVGj5ZsABFWLAGLxuxBhA+WbAARViwDS8bsQ0QPlmwFRCyCQEKK1gh2Bv0WbANELIQAQorWCHYG/RZshcGFRESObAXL7IYAQorWCHYG/RZsAYQshoBCitYIdgb9FkwMQEWFgcGBCMhEyEDBgYHIzczMjY3NxMhAwcDBTI2NzYmJwUtrs0LDf7+yv42r/5tczbKnEMWImOBIRJtAvlNGkkBAnKeDQtkZgLWBL+dqswD9P3K6dQBpKS+awIc/kqY/lkBfGZXaQUAAAIAHQAABrUEjQASABsAhLIBHB0REjmwARCwFNAAsABFWLACLxuxAho+WbAARViwES8bsREaPlmwAEVYsAsvG7ELED5ZsABFWLAPLxuxDxA+WbIADxEREjl8sAAvGLIECwIREjmwBC+wABCyDgEKK1gh2Bv0WbAEELITAQorWCHYG/RZsAsQshUBCitYIdgb9FkwMQEhEzMDBRYWBwYEIyETIQMjEzMBAwUyNjc2JicBQwI1WrRMAQCuzQsL/v7L/jVX/ctXtcu0AoRKAQJynw0LYmgCigID/koBBL+dqM4B8v4OBI39sv5ZAXpoVmoFAAEAbQAABO0EjQAWAFeyBxcYERI5ALAARViwAi8bsQIaPlmwAEVYsAwvG7EMED5ZsABFWLAVLxuxFRA+WbACELIBAQorWCHYG/RZsAXQsggMAhESObAIL7ISAQorWCHYG/RZMDEBITchByEDNhcWFgcDIxM2JyYnJgcDIwHG/qccA28b/p86kZq8xBQ6tTkHBhaogbNmtQP0mZn+1jIDAti7/pwBZTgukQYDMv3NAAEAHf6bBIUEjQALAEKyAQwNERI5ALACL7AARViwBi8bsQYaPlmwAEVYsAovG7EKGj5ZsABFWLAALxuxABA+WbAE0LIIAQorWCHYG/RZMDEhIQMjEyETMwMhEzMDu/6NPrU+/orLtLACNbC0/psBZQSN/AsD9QACAB//+wPbBI0ADAAVAFuyExYXERI5sBMQsAPQALAARViwCy8bsQsaPlmwAEVYsAovG7EKED5ZsAsQsgEBCitYIdgb9FmyAgoLERI5sAIvshQBCitYIdgb9FmwChCyFQEKK1gh2Bv0WTAxASEDBRYWBwYEJyUTIQE2Njc2JiclAwPB/cAyARmtvhQW/uvB/kzKAvL+KXGUBAJyZ/7/SgP3/uABBL6erc4EAQSN/AoCeGdbZgUB/lkAAv+J/qwEmgSNAA4AFQBVshIWFxESObASELAE0ACwDC+wAEVYsAQvG7EEGj5ZsABFWLAKLxuxChA+WbIGAQorWCHYG/RZsAwQsAnQsAYQsA7QsBDQsAQQshEBCitYIdgb9FkwMTc2NjcTIQMzAyMTIQMjEwUlEyEDBwItbIYnYgLysItWtTz81Du2VwEjAjKV/nNMEEWWYvi3Aeb8C/4UAVT+rQHrAwMDXP6QQ/7tAAAB/68AAAYEBI0AFQCSsg0WFxESOQCwAEVYsAkvG7EJGj5ZsABFWLANLxuxDRo+WbAARViwES8bsREaPlmwAEVYsAIvG7ECED5ZsABFWLAGLxuxBhA+WbAARViwFC8bsRQQPlmyDAINERI5fLAMLxiyoAwBXbRgDHAMAl2yBAEKK1gh2Bv0WbAB0LIIBAwREjmwDBCwD9CyEwwEERI5MDEBJwMjEyMBIwEDMxMzEzMDMwEzAQEjA6BoV7ZYWv538QHq8M7LW1i2WU8BfOf+PAEQ1AH1Af4KAfb+CgJbAjL+AwH9/gMB/f3D/bAAAAEAEf/uA94EoAAoAIKyGikqERI5ALAARViwDy8bsQ8aPlmwAEVYsBsvG7EbED5ZsA8QsgcBCitYIdgb9FmyDA8bERI5sigPGxESObAoL7K/KAFdsi8oAV203yjvKAJdtK8ovygCcbInAQorWCHYG/RZshQnKBESObIfGw8REjmwGxCyIQEKK1gh2Bv0WTAxATI2NzYnJicmBwYHBzY2FxYWBwYHFhYHDgInJiY3MxQXFjY3NiUnNwIBf5IKBxkzlmtFQxG2EPu3vtcKCvJVYAUHfeKJtdMFstmBqQsY/vuEGwKfYVc2JU0EAi0sUQGWsAIDpo24YiGGXWudVAICtZqxBQNmW7wCAZgAAQAfAAAEoQSNAAkATLIDCgsREjkAsABFWLAALxuxABo+WbAARViwBy8bsQcaPlmwAEVYsAIvG7ECED5ZsABFWLAFLxuxBRA+WbIEAAIREjmyCQACERI5MDEBMwMjEwEjEzMDA/WsyrKc/QmryrKcBI37cwN//IEEjfyBAAEAHgAABFcEjQAMAGiyCg0OERI5ALAARViwBC8bsQQaPlmwAEVYsAgvG7EIGj5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmyBgQCERI5fLAGLxiyoAYBXbRgBnAGAl2yAQEKK1gh2Bv0WbIKAQYREjkwMQEjAyMTMwMzATMBASMBl21Xtcu0WFgB0uj91wFw2gH2/goEjf4DAf39vP23AAH/xAAABHkEjQAQAE2yBBESERI5ALAARViwAC8bsQAaPlmwAEVYsAEvG7EBED5ZsABFWLAILxuxCBA+WbAAELIDAQorWCHYG/RZsAgQsgoBCitYIdgb9FkwMQEDIxMhAwYGByM3NzY2NzcTBHnLtK/+bXU2x5VLFilgfCASbwSN+3MD9P3P6NcEpAIHnrhuAhwAAQBY/+gEVASNABEAQ7IBEhMREjkAsABFWLACLxuxAho+WbAARViwEC8bsRAaPlmwAEVYsAgvG7EIED5ZsgECCBESObINAQorWCHYG/RZMDEBFwEzAQ4CIyInNxY3MjcDMwHeFAGJ2f3aPmN8UDU0EzodXlLryAInbQLT/GRwZTQJlQgBbwOfAAEAHf6sBIYEjQALAEKyCQwNERI5ALACL7AARViwBi8bsQYaPlmwAEVYsAovG7EKGj5ZsABFWLAELxuxBBA+WbIAAQorWCHYG/RZsAnQMDElMwMjEyETMwMhEzMD16hnojv8bMu0sAI1sLWY/hQBVASN/AsD9QABAFoAAAQuBI0AEgBIsg8TFBESOQCwAEVYsAgvG7EIGj5ZsABFWLARLxuxERo+WbAARViwAC8bsQAQPlmyDgAIERI5fLAOLxiyBAEKK1gh2Bv0WTAxISMTBicmJjcTMwMGFxYXFjcTMwNktVWPnbrEFDm1OgcHFqqCsGa0AcMxAgLWvgFj/pw4LpMDAzECMgABAB0AAAX9BI0ACwBMsgYMDRESOQCwAEVYsAIvG7ECGj5ZsABFWLAGLxuxBho+WbAARViwCi8bsQoaPlmwAEVYsAAvG7EAED5ZsgkBCitYIdgb9FmwBdAwMSEhEzMDIRMzAyETMwUy+uvLtLABe7C2sAF7sLUEjfwLA/X8CwP1AAEAHf6sBf4EjQAPAFKyDBARERI5ALACL7AARViwBi8bsQYaPlmwAEVYsAovG7EKGj5ZsABFWLAOLxuxDho+WbAARViwBC8bsQQQPlmyAAEKK1gh2Bv0WbAN0LAJ0DAxJTMDIxMhEzMDIRMzAyETMwVOqWejPPr0y7SwAXuwtrABe7C2mP4UAVQEjfwLA/X8CwP1AAACAFD/+wSbBI0ADAAVAFuyBhYXERI5sAYQsA3QALAARViwCi8bsQoaPlmwAEVYsAcvG7EHED5ZsAoQsgkBCitYIdgb9FmyDAcKERI5sAwvshQBCitYIdgb9FmwBxCyFQEKK1gh2Bv0WTAxARYWBwYEJyUTITchAxM2Njc2JiclAwMwrb4UFv7swf5KsP66GwH5TLVzkQQCcWj/AEoC1gS+nqvQBAED9Jn+Sv3AAnlmWmcFAf5Z//8AH//7BaEEjQAmAggAAAAHAcID9wAAAAIAH//7A9MEjQAKABMATbILFBUREjmwCxCwBtAAsABFWLAILxuxCBo+WbAARViwBy8bsQcQPlmyCgcIERI5sAovshIBCitYIdgb9FmwBxCyEwEKK1gh2Bv0WTAxARYWBwYEJyUTMwMTNjY3NiYnJQMCaK2+FBb+7ML+TMqyTLVxlAQEcmn+/0oC1gS+nqvQBAEEjf5K/cACeGdWawUB/lkAAAEAIP/qBBoEoQAfAHOyBCAhERI5ALAARViwFS8bsRUaPlmwAEVYsBwvG7EcED5ZsADQsBwQsgMBCitYIdgb9FmyCBwVERI5fLAILxi0YAhwCAJdsqAIAV20YAhwCAJxsgcBCitYIdgb9FmwFRCyDgEKK1gh2Bv0WbAVELAS0DAxExYWFxY2NyE3ITYnJiYnJgYHBzYkFxYSBwcCACcmJifTB3R7jLwt/kgbAawIBgx8aYCbIrUmAQ/F0+EbCiL+zN693AgBend6AwO6vphDQmx+BASEdgG81gQE/s7vT/74/skGBNOzAAACAB3/6gX3BKIAFQAmAIqyAScoERI5sAEQsCLQALAARViwCS8bsQkaPlmwAEVYsA4vG7EOGj5ZsABFWLAGLxuxBhA+WbAARViwAC8bsQAQPlmyCgYJERI5fLAKLxi0YApwCgJxsqAKAV20YApwCgJdsgUBCitYIdgb9FmwDhCyGwEKK1gh2Bv0WbAAELIjAQorWCHYG/RZMDEFLgI3BwMjEzMDMzYAFxYWEgcHAgATNicmJicmBgcGFxYWFxY2NwOfhshgEddZtcu0V8lAASzTj8RXEAYh/sWwBwQJfm6S0B8WCAl+bZbOHhACifWPAf4CBI3+CfkBEwQEjv8AnzP+7/7BAoFGR3qMBAXRtYRneo8EBdTAAAL/3wAABEAEjgANABUAYbIQFhcREjmwEBCwB9AAsABFWLAHLxuxBxo+WbAARViwAC8bsQAQPlmwAEVYsAkvG7EJED5ZshEHABESObARL7ILAQorWCHYG/RZsgELERESObAHELISAQorWCHYG/RZMDEjASYmNzY2MwUDIxMhARMGFwUTJyIGIQF9XFsGC/nJAcjKtVT+4P61thbjAQJC/naRAhEmlWSmuAH7cwHf/iEDKa8BAQF8AWsAAAH/+gAABCwEjQANAGWyCw4PERI5ALAARViwCC8bsQgaPlmwAEVYsAIvG7ECED5ZsgcCCBESOXywBy8YsqAHAV20YAdwBwJdtGAHcAcCcbIEAQorWCHYG/RZsAHQsAgQsgsBCitYIdgb9FmwBxCwDNAwMQEjAyMTIzczEyEHIQMzAmXbWbVZ2xvaWALlG/3QPdsB/f4DAf2XAfmZ/qAAAf+v/qwGBASNABkArbIUGhsREjkAsAMvsABFWLAQLxuxEBo+WbAARViwFC8bsRQaPlmwAEVYsBgvG7EYGj5ZsABFWLAFLxuxBRA+WbAARViwCS8bsQkQPlmwAEVYsA0vG7ENED5ZshYQBRESOXywFi8YsqAWAV20YBZwFgJdtGAWcBYCcbIIAQorWCHYG/RZsgAIFhESObAFELIBAQorWCHYG/RZsAgQsAvQsg8WCBESObAWELAS0DAxARMzAyMTIwMjAyMTIwEjAQMzEzMTMwMzATMEQMubVaQ8cNxlV7ZYWv538QHq8M7LW1i2WU8BfOcCUP5G/hYBVAH2/goB9v4KAlsCMv4DAf3+AwH9AAABAB7+rARXBI0AEACAsgAREhESOQCwAy+wAEVYsAsvG7ELGj5ZsABFWLAPLxuxDxo+WbAARViwBi8bsQYQPlmwAEVYsAkvG7EJED5Zsg0JCxESOXywDS8YtGANcA0CcbKgDQFdtGANcA0CXbIIAQorWCHYG/RZsgAIDRESObAGELIBAQorWCHYG/RZMDEBATMDIxMjASMDIxMzAzMBMwIuARGhVaU8Xv7TbVe1y7RYWAHS6AJJ/k3+FgFUAfb+CgSN/gMB/QABAB4AAAUNBI0AFAB4sgUVFhESOQCwAEVYsAYvG7EGGj5ZsABFWLATLxuxExo+WbAARViwCS8bsQkQPlmwAEVYsBEvG7ERED5ZsgAGCRESOXywAC8YsqAAAV20YABwAAJdtGAAcAACcbAE0LAAELIQAQorWCHYG/RZsggQABESObAM0DAxATc3MwczATMBASMBJwcjNyMDIxMzAT9TJ5EtNgHS6P3WAXDa/tRBKZElTFi1y68CjwHk5QH+/bz9twH2Ac/O/goEjQAAAQBpAAAFOgSNAA4AfbIHDxAREjkAsABFWLAGLxuxBho+WbAARViwCi8bsQoaPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbIIBgIREjl8sAgvGLKgCAFdtGAIcAgCXbRgCHAIAnGyAQEKK1gh2Bv0WbAGELIFAQorWCHYG/RZsgwBCBESOTAxASMDIxMhNyEDNwEzAQEjAnlsV7aw/rkbAfxZWQHR6f3WAXDaAfb+CgP1mP4DAQH8/bz9twAAAgBQ/+oFOASiACQAMQCishYyMxESObAWELAl0ACwAEVYsAsvG7ELGj5ZsABFWLAbLxuxGxo+WbAARViwBC8bsQQQPlmwAEVYsAAvG7EAED5ZsgIEGxESObACL7ALELIMAQorWCHYG/RZsAQQshQBCitYIdgb9FmwAhCyJwEKK1gh2Bv0WbIWFCcREjmwABCyJAEKK1gh2Bv0WbIiJCcREjmwGxCyLgEKK1gh2Bv0WTAxBSYnBicmAhM3EgA3BwYGAhcWFxYXMjcmExISFxYWFxYHAgcWFwEWFzYTNjc1JicmBgcE4MyblZf//h4DIAEa2xF1o0sOEXdCaTA/pB8a77iWoAMBDSnbSH/9/QeWxyYMAwqKe4QGFQQ3PAIEAVABEiABAwEnBJ4Bmf7RkKtKKQEJxAEuAQIBGwUEzKtBbv7atgwCAYDPY4cBFWk8LrUGBfLR//8AdAAABGUEjQAmAdIAAAAHAd4AEP7eAAH/tv6sBG0EjQAQAFqyABESERI5ALAHL7AARViwAS8bsQEaPlmwAEVYsA8vG7EPGj5ZsABFWLAMLxuxDBA+WbAARViwCi8bsQoQPlmyAAEHERI5sgQBCitYIdgb9FmyCwEHERI5MDEBATMBEzUXAyMTIwMBIwEBMwIoAWHk/hTVq1SlPGrV/pTjAfj+6MgC2wGy/bT+VQME/hcBVAG6/kYCVQI4AAABAGz+rAV/BI0ADwBWsgsQERESOQCwAi+wAEVYsAgvG7EIGj5ZsABFWLAOLxuxDho+WbAARViwBC8bsQQQPlmyAAEKK1gh2Bv0WbAIELIHAQorWCHYG/RZsAvQsAAQsA3QMDElMwMjEyETITchByEDIRMzBM+pZ6I8/Gyv/qYbA28b/qCVAjOwtpj+FAFUA/SZmfykA/UAAAEAWgAABC0EjQAYAFGyBBkaERI5ALAARViwCy8bsQsaPlmwAEVYsBcvG7EXGj5ZsABFWLAALxuxABA+WbIRCwAREjl8sBEvGLIHAQorWCHYG/RZsATQsBEQsBTQMDEhIxMGBwcjNyYmNxMzAwYXFhc3Mwc2NxMzA2O1VWdnJ5InqKESOrU7BgMKjS+RLVlzZrQBwyIKx8US1a4BY/6cMCqHHPDuDSACMgAAAQAdAAAD7ASNABMARrIQFBUREjkAsABFWLAALxuxABo+WbAARViwCS8bsQkQPlmwAEVYsBIvG7ESED5ZsgQSABESObAEL7IPAQorWCHYG/RZMDETMwM2Fx4CBwMjEzYnJicmBwMj6LVVlpR9rVANOrU6BwYWqny3ZrUEjf49MgIDYLp5/pwBZTgukQYDM/3OAAACAC//8QVhBKEAHgAnAGmyDigpERI5sA4QsCDQALAARViwDy8bsQ8aPlmwAEVYsAAvG7EAED5ZsiMADxESObAjL7K/IwFdshQBCitYIdgb9FmwBdCwIxCwDNCwABCyGgEKK1gh2Bv0WbAPELIfAQorWCHYG/RZMDEFLgI3NyYmNxcGFhc2ABceAgcHIQYXFhYXFjcXBgMmBgcFNicmJgMfk+pqHAGQlguVCUhSOAE31ZPRWRMU/MsNDBOXd4idLX5djs8qAoURCxOGDwGM9Y8IC8mhAWNtEO0BFgQCiPCahlBCaXQBAkiTVQQRA8GpAWM9XmcAAgBB/+wEZAScABcAIQBeshMiIxESObATELAY0ACwAEVYsAAvG7EAGj5ZsABFWLAILxuxCBA+WbINCAAREjmwDS+wABCyEwEKK1gh2Bv0WbAIELIYAQorWCHYG/RZsA0Qsh0BCitYIdgb9FkwMQEeAgcHBgAnLgI3NwU2JyYmJyYHJzYTFjc2NyUGFxYWApKU2mQRECL+u96Vz1kTFAMyFAwUnHWEoyqKULJzQiD9exEMEYgEnAOJ85R19/7PBAOF8JqGBVlCZnUBAkmUVfvtBJdYfQFhP11pAAABABH/6APwBI0AGwBmsgscHRESOQCwAEVYsAIvG7ECGj5ZsABFWLAMLxuxDBA+WbACELIBAQorWCHYG/RZsATQshsMAhESObAbL7IZAQorWCHYG/RZsgUbGRESObIQDAIREjmwDBCyEwEKK1gh2Bv0WTAxASE3IQcBFhYHDgInJiY3MxQWFxY2NzYmJyc3AuD91BwDIBT+dJOwCAeG4Ia10gWycmaGpgwKcHOIHgP0mX7+nxS5h3OnWAMFtZxYYwICdGdYYwUBrgAAAwBK/+oEWASkAA4AFQAcAHOyFx0eERI5sBcQsADQsBcQsBDQALAARViwBy8bsQcaPlmwAEVYsAAvG7EAED5Zsg8BCitYIdgb9FmyGQAHERI5fLAZLxiyoBkBXbRgGXAZAl20YBlwGQJxshMBCitYIdgb9FmwBxCyFgEKK1gh2Bv0WTAxBSYCNzcSABcWFhIHBwIAJxY2NyEGFgEmBgchNiYCANbgGwUgAUDkj8RXEAUc/sLgjMgu/YgPgwEeisouAncRgBAFATv0LAEMAUgGBI7/AJ4v/vP+uJ8FvbmlxwN0Bb63pMcAAAH//wAAA9gEogAnAK+yJSgpERI5ALAARViwHi8bsR4aPlmwAEVYsAwvG7EMED5ZsgYMHhESObAGL7IPBgFdsAHQsAEvQAkfAS8BPwFPAQRdsgABAV2yAgQKK1gh2Bv0WbAGELIHBAorWCHYG/RZsAwQsgsBCitYIdgb9FmwDtCwBxCwE9CwBhCwFNCwAhCwGNCwARCwGdCwHhCwItCyDyIBXbI9IgFdskwiAV2wHhCyJAEKK1gh2Bv0WTAxASEHIQcHJQclBgclByE3FzY3Nwc3Fzc3IzczNzY2FxYWByc2JyYGBwGDAZEV/nkQBQGJFf5/Jy8ChBv8nRYJRCYRoRabBBCdFpMIH+aqp6oKthCtWXoYAqh5XBIBeQFvRQKYlgEdZzEBeQESXHk62uYFBNKuAeIHA4WEAAEAHv/wA98EoQAiAJWyAyMkERI5ALAARViwFi8bsRYaPlmwAEVYsAkvG7EJED5ZsiIJFhESObAiL7IMIgFdtBAiICICXbAO0LINBAorWCHYG/RZsAHQsAkQsgQBCitYIdgb9FmwIhCwHtCwHi9ACR8eLx4/Hk8eBF2yAB4BXbAT0LIQBAorWCHYG/RZsBYQshsBCitYIdgb9FmwEBCwINAwMQEFBhYXFjcXBicmJjcHNzM3IzczNiQXFhcHJiMmAyEHIQchAvb+dAR2cVB5DXBsutsKnhWSFJMVjj0BD8RciiRZb/laAZMW/nETAZABlgF+iwIDHZcdAgLiwQF5bXnT2QICH5UfBP7peW0AAAQAHQAAB6YEogADABEAHwApAKiyKCorERI5sCgQsAHQsCgQsA3QsCgQsBPQALAARViwJi8bsSYaPlmwAEVYsCgvG7EoGj5ZsABFWLAELxuxBBo+WbAARViwIC8bsSAQPlmwAEVYsCMvG7EjED5ZsAQQsAvQsAsvsALQsAIvtAACEAICXbIBAworWCHYG/RZsAsQshUDCitYIdgb9FmwBBCyHAMKK1gh2Bv0WbIiJiAREjmyJyAmERI5MDElITchAxYWBwcGBicmJjc3NjYDBhYXFjY3NzYmJyYGBwEjAQMjEzMBEzMG7v3jGQIekpCgDAcP0JeOoQoHD9NJB0tLUWwOCQdMSVFwC/4urf5KmrXLrQG3mrS9jgNTBL6OSZ7ABAS7kEmfwP5WWmYCAmldVVxkAgJtX/y5A3T8jASN/IsDdQAC/90AAARwBI0AFgAfAHYAsABFWLAMLxuxDBo+WbAARViwAy8bsQMQPlmyBgMMERI5sAYvsBXQsgEBCitYIdgb9FmwBNCwBhCwCtCwCi+0vgrOCgJdQAkOCh4KLgo+CgRdsggBCitYIdgb9FmwFNCwChCwF9CwDBCyHwEKK1gh2Bv0WTAxJSMHIzcjNzM3IzczEwUWFgcGBCMlBzMnBTY2NzYmJyUCSPogtiC7G7oQuxu6ZwG1rsoLC/77xv7pEPvRAQJznA0MaF/+6bS0tJhZmAJQAQTIn6rTAVnxAgJ9ZWFwBAEAAAIAH//mBBEGAAATACAAZLIFISIREjmwBRCwHdAAsAovsABFWLAOLxuxDhg+WbAARViwCC8bsQgQPlmwAEVYsAUvG7EFED5ZsgcOCBESObIMDggREjmwDhCyFwEKK1gh2Bv0WbAFELIcAQorWCHYG/RZMDEBBgYHBicmJwcjATMDNhceAhcWJyYmJyYHAxYXFjY3NgQJEFlDi8XHXiueAQu1bYK6Z55XBQK4CXNkqXVROqaKxhoJAhh50kybBQSTggYA/cKQBAFoxHU9QnWJAwSu/immBAXeuloAAQBD/+gD9gRUABwAS7IAHR4REjkAsABFWLAPLxuxDxg+WbAARViwCC8bsQgQPlmyAAEKK1gh2Bv0WbIEDwgREjmyEggPERI5sA8QshYBCitYIdgb9FkwMSUWNjc3DgInJgI3NxIAFxYWByM0JicmAgcHFBYB6mGdG6wQhsxrytUZAx4BLtimzQKqcV+byQsBdoICcmIBZalfAwQBLOobAQABNAYE2axrgwQG/vjiJJSXAAIAR//nBIUGAAASACAAYbIEISIREjmwBBCwHdAAsAcvsABFWLAELxuxBBg+WbAARViwCi8bsQoQPlmwAEVYsA0vG7ENED5ZsgYEChESObILBAoREjmyGAEKK1gh2Bv0WbAEELIdAQorWCHYG/RZMDETNhI2FxYXEzMBIzcGJyYmJyY3MwYXFBYXFjcTJicmBgdQE5bZgLRhabX+9ZsOhLybuwwEBrUFAXhronVWPJ2OxhsCH6ABDYYDBIACNfoAeJEEBOW7PzwpLImjAgSjAfSTBAXctgACACT+UAQ2BFQAGwAqAHyyCyssERI5sAsQsCbQALAARViwBC8bsQQYPlmwAEVYsAcvG7EHGD5ZsABFWLAMLxuxDBI+WbAARViwFi8bsRYQPlmyBgQWERI5sAwQshEBCitYIdgb9FmyFAQWERI5sBYQsiEBCitYIdgb9FmwBBCyJgEKK1gh2Bv0WTAxEzY3NhcWFzczAwYAJyYnNxYXBBM3BicmJicmNzMGFxYWFxY3EyYnJgcGB1AXYpXywV8rm6wj/ufWuJxBeJ4BBFETiLCbuwoEBrUHBQl0Y6J3VTqgvmo4DwIfwZTgBgSRgfwU8P7yBARmi1oEBgEyVYQEBOW6Pzw+Q3WJBASlAe6WBgO7ZHf//wCpAAADBAW3AAYAFbAAAAL/1/5gBBAEUgARAB4AZLIAHyAREjmwG9AAsABFWLAJLxuxCRg+WbAARViwBi8bsQYYPlmwAEVYsAMvG7EDEj5ZsABFWLAALxuxABA+WbIHCQMREjmwCRCyFQEKK1gh2Bv0WbAAELIaAQorWCHYG/RZMDEFJicDIwE3BzYXFhYXFgcHBgATJiYnJgcDFhcWNjc2Agy7ZGG1AQSaD4i+oLgJAwcJKv7zjQt4ZJ5yWz2djs0ZCBUEe/32BdoBfpUEBN7BQD477f7hAst2iAMEmf35jwUD5LVcAAIARv5gBDUEVAARAB4Aa7IDHyAREjmwAxCwHNAAsABFWLAGLxuxBhg+WbAARViwAy8bsQMYPlmwAEVYsAgvG7EIEj5ZsABFWLAMLxuxDBA+WbIFBgwREjmyCgYMERI5shcBCitYIdgb9FmwAxCyHAEKK1gh2Bv0WTAxEzYAFxYXNzMBIxMGJy4CJyY3BhcWFhcWNxMmJyYGTyABGc65YSee/vy1YoKsZp5bBwS8BwYJd2OZd11BlZDMAh75AT0FBIRz+iYCBHwEAWfCdzhEPkR3iwMElwITiQYF5QACAEX/6wP7BFMAFQAfAF+yACAhERI5sBfQALAARViwCC8bsQgYPlmwAEVYsAAvG7EAED5ZshoIABESObAaL7S/Gs8aAl2yDAEKK1gh2Bv0WbAAELIQAQorWCHYG/RZsAgQshYBCitYIdgb9FkwMQUmAjc3Ejc2FxYSBwchBhYXFjcXBgYDJgYHBTc2JyYmAgzY7xUDHaCWxsPCGxP9Pg+Ti42SLEC2Am6uNAIRBQkHDWgTAgEv5xwBAZ6TBQb+8th6l8kEBF2BOTgDzAWboQEbNzNTXQAAAgA1/lAEKARSABwAKgB8sgsrLBESObALELAn0ACwAEVYsAcvG7EHGD5ZsABFWLAELxuxBBg+WbAARViwDC8bsQwSPlmwAEVYsBYvG7EWED5ZsgYHFhESObAMELIRAQorWCHYG/RZshQHFhESObAWELIiAQorWCHYG/RZsAQQsicBCitYIdgb9FkwMRM2EjYXFhc3MwMGACcmJzcWFxYTNwYnJiYnJyY3MwYXFhYXFjcTJicmBgdVFIvPf8FfK5uuI/7p1qiNQW+I/U8ahLGMrBQEAga2BwMEaWKeeVU8nYq3GwIepAELhQMEkYD8Aun+/QQEU4tJAgYBFXKEBATBqTY+OztDd4kEB6cB8ZQGA9bBAAEAgf/nBUEFyAAfAE6yCyAhERI5ALAARViwDC8bsQwcPlmwAEVYsAMvG7EDED5ZsgAMAxESObIQAwwREjmwDBCyFAEKK1gh2Bv0WbADELIdAQorWCHYG/RZMDEBBgAnLgInJhISJBcWABcjJicmJyYGAgcHFBYWFwQTBNws/rbjj9uDCgtd0AEUntUBBAi7Bj1Pm4fflxMDTZJlATJnAc/g/vgEA4T+naIBbQEejgME/vnfilNrBASY/tTUVHzNbAMLAVEAAAEAhP/oBUMFxwAhAFyyFCIjERI5ALAARViwDS8bsQ0cPlmwAEVYsAMvG7EDED5ZshEDDRESObANELITAQorWCHYG/RZsAMQshsBCitYIdgb9FmyIA0DERI5sCAvsh8BCitYIdgb9FkwMSUGBCcuAicmNzYSJBcWFhcjAiUmBgIXFBYWFxY3EyE3IQS2Sf7es5jkiAsFDR7PAS2x1/4SuRz+55bskgJRnWzegDz+uRwCAL5lcQMDh/+gUX7YAVywAwTp0wEaCAS6/qDIe9NwAQVuAUabAAACAEQAAAUWBbAADAAXAEayCxgZERI5sAsQsBfQALAARViwAS8bsQEcPlmwAEVYsAAvG7EAED5ZsAEQsg0BCitYIdgb9FmwABCyDgEKK1gh2Bv0WTAxMxMFMgQXFgcHBgIEBwMDFzI2NhInJiYnRP0Bj70BEz05FAMY2f6ozAnGzZT4qDsQFsCdBbABvaaevxvS/re4AQUS+4sBf+wBMX+htQQAAAIAhf/oBV4FyAATACAARrIIISIREjmwCBCwGNAAsABFWLAJLxuxCRw+WbAARViwAC8bsQAQPlmwCRCyFwEKK1gh2Bv0WbAAELIdAQorWCHYG/RZMDEFJiYCJyYSEiQXHgIXFgcHBgIEATQmJyYGAhIWFxY2EgKCjdmACwxj1QERmYzZggsFCQYd0f7RAW+pmZPzlQarlpHzkhUDiQEBnq0BXwEYjgMDh/+eVlQr0/6otgOHwO4EBLz+p/5w7gQGuAFdAAACAIX/BAVkBcgAFQAjAEayAyQlERI5sAMQsBrQALAARViwDi8bsQ4cPlmwAEVYsAUvG7EFED5ZsA4QshkBCitYIdgb9FmwBRCyIAEKK1gh2Bv0WTAxJRcHJwYjJiYCJyYSEiQXFhYSFxYCAhMmJicmBgIXFhYXFjYSA6zQi/84OorWhAsMZdMBEJqN3H8LCmHJZwOplpL1lAMDq5aS9ZA9yHHyCgGGAQOhrQFhARWOAwOJ/wCerf6h/vwC4szkBAS+/qbFyO4EBrsBYQABALsAAAMRBI0ABgAyALAARViwBS8bsQUaPlmwAEVYsAEvG7EBED5ZsgQFARESObAEL7IDAQorWCHYG/RZMDEhIxMFNyUzAky0of6CIAIUIgOhirDGAAEAOQAAA/kEowAYAE0AsABFWLAQLxuxEBo+WbAARViwAC8bsQAQPlmyGAEKK1gh2Bv0WbAC0LIEEBgREjmwEBCyCQEKK1gh2Bv0WbAQELAM0LIWGBAREjkwMSEhNwE3Njc2JicmBgcHNiQXHgIHBgcBIQOZ/KAZAjIpgAwLZVt1phWyEQEcv2uqVggQ6P5eAl2LAcEjb3NRZgIEkHgBs+sCA1OTYLu5/rMAAQAdAAAEAwXEAAcAKwCwAEVYsAYvG7EGGj5ZsABFWLAELxuxBBA+WbAGELIDAQorWCHYG/RZMDEBMwMhAyMTIQNOtVH90LC1ywIwBcT+MPwMBI0AAf+B/qEEEASNABoATgCwDS+wAEVYsAIvG7ECGj5ZsgEBCitYIdgb9FmwBNCyBQ0CERI5sAUvsA0QshIBCitYIdgb9FmwBRCyGQEKK1gh2Bv0WbIaBRkREjkwMQEhNyEHAR4CBwYGBCcmJzcWFxYkNzYmJyc3Aw39jxsDWRb+RGeVRwkPpf7rqLXRPpKrrgEAFhOVpEEPA/SZfv5wE3u7a6D9jQICZIxXBATSrJunBQFvAAL/0/62BDAEjQAKAA4ARgCwAEVYsAkvG7EJGj5ZsABFWLAGLxuxBhA+WbIMAQorWCHYG/RZsADQsAYQsAPQsAYQsAXQsAUvsAwQsAjQsAkQsA3QMDElMwcjAyMTITcBMwEhEwcDcMAbvzm2Ov0yFQNwyfynAfKMJZaX/rcBSXcEF/wJAv43AP//AJACiAL0Bb0DBwHUAHMCmAATALAARViwBy8bsQccPlmwENAwMQD//wBhApgC5AWtAwcB2ABxApgAEwCwAEVYsAkvG7EJHD5ZsA3QMDEA//8AiQKLAwIFrQMHAdkAcwKYABAAsABFWLABLxuxARw+WTAx//8AkQKKAtsFuAMHAdoAcwKYABMAsABFWLASLxuxEhw+WbAT0DAxAP//AKICmAMmBa0DBwHbAHMCmAAQALAARViwBS8bsQUcPlkwMf//AH4CjALrBbsDBwHcAHMCmAAZALAARViwEi8bsRIcPlmwGNCwEhCwJNAwMQD//wCpAo8C6gW6AwcB3QBzApgAEwCwAEVYsAgvG7EIHD5ZsBzQMDEAAAH/1f6aBEQEjAAcAFuyBx0eERI5ALAOL7AARViwAS8bsQEaPlmyAwEKK1gh2Bv0WbIHAQ4REjmwBy+wBdCyEQEOERI5sA4QshMBCitYIdgb9FmwBxCyGQEKK1gh2Bv0WbAHELAc0DAxExMhByEDNhceAgcGACcmJzcWFxY2NzYmJyYGB1jtAv8e/ZSCb5B6rE0NGP6z6cezRHPInuITD3t6W4YqAXYDFqv+c0MCAX7chu7+1AQEb4xjBQLdpIWzBAM+UQABACv+tgQ3BI0ABgAosgEHCBESOQCwAS+wAEVYsAUvG7EFGj5ZsgMBCitYIdgb9FmwANAwMQEBIwEhNyEEI/zHvwMu/TYbA40EGfqdBT+YAAIASf/yBqcEoAAWACIAnbILIyQREjmwCxCwGdAAsABFWLANLxuxDRo+WbAARViwCi8bsQoaPlmwAEVYsAIvG7ECED5ZsABFWLAALxuxABA+WbANELIPAQorWCHYG/RZshINABESObASL7QfEi8SAl2yvxIBXbITAQorWCHYG/RZsAAQshYBCitYIdgb9FmwAhCyFwEKK1gh2Bv0WbAKELIaAQorWCHYG/RZMDEhIQUjJgI3NxIAFzIWMyEHIQMhByEDIQU3EycmBgcGFxQWFwXj/ZX+2VXU3xsGIAE/5lzIYAJ0G/2uOwIFG/39QgJa/HlzoeKa1BsNAXx0DgUBOvMyAQoBQAIRmf6ymP6JCgMDaQwC3sJwMZClBAAAAgA//qUEPgSmABkAJwBRshsoKRESObAbELAN0ACwFS+wAEVYsA0vG7ENGj5ZsBUQsgABCitYIdgb9FmyBBUNERI5sAQvshoBCitYIdgb9FmwDRCyIgEKK1gh2Bv0WTAxBQQTBicuAjc2Njc2FxYSBwcGAgQnJic3FgEWNj8CNiYnJgYHBhYBQAFYnoipfrVUDQpWRo/R2NUeJyPD/uOpknwzbQE3Zac1FwYDdnSGtREPc8EHAdZsBAGB4Itsx0mXBAX+zP352v6zpwMCPYwyAfwEXFWWWoygBAPWpY/DAAACAGT/5wR4BKYAEQAgADkAsABFWLAKLxuxCho+WbAARViwAC8bsQAQPlmwChCyFQEKK1gh2Bv0WbAAELIcAQorWCHYG/RZMDEFJiYCNzc2Njc2FxYSBwcGAgYBJyYnJgIHFRQWFxY2NzYCGZXIWBICEGNRouvP4AoEE6D+AQIEH9ex5AeDeZ3XHAoVBJYBDKgUfuRSpQUF/uLxN7b+4JkC3j/+CAb+2Pkhm64EBezPXAD///8J/kYBrwQ6AAYAmwAA////Cf5GAa8EOgAGAJsAAP//AC4AAAGfBDoABgCMAAD///96/lkBnwQ6ACYAjAAAAAYAo8sK//8ALgAAAZ8EOgAGAIwAAP////H+qQGfBDoAJgCMAAAABwCsAzYACgABAB3/5wPUBKIAIQBfALAARViwFS8bsRUaPlmwAEVYsBAvG7EQED5ZsABFWLAfLxuxHxA+WbICAQorWCHYG/RZsgkfFRESObAJL7IIAworWCHYG/RZsBUQsgwBCitYIdgb9FmyGQkIERI5MDElFhcyNjc2Jyc3ASYnJgYHAyMTNjYXFhYXARYWBwYGJyYnAWVKVWGJDBPtXRkBGDxjaoYUgLSAHei8Z7Nc/ryOlwcM8LJrcbUzAoNlqwMBkgEhPAICk4b9DwLx1dwEBFhc/rISnXyv1wICMf//ABkCHwIPArYCBgARAAAAAgAvAAAE8wWwAA4AHQBtALAARViwBS8bsQUcPlmwAEVYsAAvG7EAED5ZsgMABRESObADL7LPAwFdsp8DAXGyLwMBXbRvA38DAnKyAgEKK1gh2Bv0WbAQ0LAAELIRAQorWCHYG/RZsAUQshsBCitYIdgb9FmwAxCwHdAwMTMTIzczEwUyBBIHBwIAIRMhAxcyADc2JyYmJycDIVlznRudbwF6sgEBcBcKLP5q/s28/u9YudQBJywjCw+wlN9UARICmpcCfwGy/sfCSf7C/oUCmv4DAQEI5riBm68EAf4fAAACAC8AAATzBbAADgAdAG2yDx4fERI5sA8QsAbQALAARViwBi8bsQYcPlmwAEVYsAAvG7EAED5ZsAPQsAMvsi8DAV2yzwMBXbICAQorWCHYG/RZsBDQsAAQshIBCitYIdgb9FmwBhCyGgEKK1gh2Bv0WbADELAc0LAd0DAxMxMjNzMTBTIEEgcHAgAhEyEDFzIANzYnJiYnJwMhWXOdG51vAXqyAQFwFwos/mr+zbz+71i51AEnLCMLD7CU31QBEgKalwJ/AbL+x8JJ/sL+hQKa/gMBAQjmuIGbrwQB/h8AAAEAPQAABAEGAAAaAGMAsBgvsABFWLAELxuxBBg+WbAARViwES8bsREQPlmwAEVYsAkvG7EJED5Zsi8YAV2yDxgBXbIWERgREjmwFi+yEwEKK1gh2Bv0WbAB0LAEELIOAQorWCHYG/RZsBYQsBnQMDEBIQM2FxYWBwMjEzYnJicmBwMjEyM3MzczByEC1/7tNY65mJMTdrV3BgURlKZ4hrXWphulG7UdARIE0v7kmwQCzbn9OwLIMSqMAwSy/PwE0peXlwABAKgAAAUJBbAADwBMALAARViwCi8bsQocPlmwAEVYsAIvG7ECED5ZsgYCChESObAGL7IFAQorWCHYG/RZsAHQsAoQsgkBCitYIdgb9FmwDdCwBhCwDtAwMQEjAyMTIzczEyE3IQchAzMDtN+Ou47QG885/jscBEUc/js54AM3/MkDN5cBRJ6e/rwAAAH/9P/tApQFQAAeAGoAsABFWLAZLxuxGRg+WbAARViwCy8bsQsQPlmwGRCwHdCwHS+yAB0BXbAS0LIPAQorWCHYG/RZsAHQsAsQsgYBCitYIdgb9FmwGRCyHAEKK1gh2Bv0WbAT0LAZELAW0LAZELAY0LAYLzAxASMDBhcWMzI3BwYjJiY3EyM3MzcjNzMTMwMzByMHMwJe4DgDAgdOITcOQUNsbAw21hvUH78Zvy60LsUZxB/hAlr+sBoWTgqXEgKbgwFNl7qPAQb++o+6AP///68AAASLBzQCJgAlAAABBwBEAWkBNgATALAARViwBC8bsQQcPlmwDNwwMQD///+vAAAEmAc0AiYAJQAAAQcAdQHzATYAEwCwAEVYsAUvG7EFHD5ZsA3cMDEA////rwAABIsHNgImACUAAAEHAJ0A+QE2ABMAsABFWLAELxuxBBw+WbAQ3DAxAP///68AAASvByECJgAlAAABBwCkAQEBOgATALAARViwBS8bsQUcPlmwDtwwMQD///+vAAAEiwb9AiYAJQAAAQcAagEzATYAFgCwAEVYsAQvG7EEHD5ZsBTcsCDQMDH///+vAAAEiweSAiYAJQAAAQcAogF+AUEADACwBC+wFNywF9AwMf///68AAASdB5MCJgAlAAAABwHfAYIBIv//AHT+QgT5BckCJgAnAAAABwB5AcL/9///ADsAAASxB0ACJgApAAABBwBEATcBQgATALAARViwBi8bsQYcPlmwDdwwMQD//wA7AAAEsQdAAiYAKQAAAQcAdQHBAUIACQCwBi+wDtwwMQD//wA7AAAEsQdCAiYAKQAAAQcAnQDHAUIAEwCwAEVYsAYvG7EGHD5ZsBHcMDEA//8AOwAABLEHCQImACkAAAEHAGoBAQFCAAwAsAYvsCHcsAzQMDH//wBJAAACGQdAAiYALQAAAQcARP/uAUIAEwCwAEVYsAIvG7ECHD5ZsAXcMDEA//8ASQAAAxwHQAImAC0AAAEHAHUAdwFCAAkAsAIvsAbcMDEA//8ASQAAAuIHQgImAC0AAAEHAJ3/fgFCABMAsABFWLACLxuxAhw+WbAJ3DAxAP//AEkAAAMKBwkCJgAtAAABBwBq/7gBQgAMALACL7AZ3LAE0DAx//8AOwAABXcHIQImADIAAAEHAKQBNQE6ABMAsABFWLAILxuxCBw+WbAN3DAxAP//AHf/5wUNBzYCJgAzAAABBwBEAYoBOAATALAARViwCi8bsQocPlmwJNwwMQD//wB3/+cFDQc2AiYAMwAAAQcAdQIUATgACQCwCi+wJdwwMQD//wB3/+cFDQc4AiYAMwAAAQcAnQEaATgAEwCwAEVYsAovG7EKHD5ZsCjcMDEA//8Ad//nBQ0HIwImADMAAAEHAKQBIgE8ABMAsABFWLAKLxuxChw+WbAm3DAxAP//AHf/5wUNBv8CJgAzAAABBwBqAVQBOAAMALAKL7A43LAj0DAx//8AZ//nBSAHNAImADkAAAEHAEQBZAE2ABMAsABFWLAKLxuxChw+WbAU3DAxAP//AGf/5wUgBzQCJgA5AAABBwB1Ae4BNgAJALAAL7AV3DAxAP//AGf/5wUgBzYCJgA5AAABBwCdAPQBNgATALAARViwCi8bsQocPlmwGNwwMQD//wBn/+cFIAb9AiYAOQAAAQcAagEuATYADACwAC+wKNywE9AwMf//AKgAAAUyBzQCJgA9AAABBwB1Ab0BNgAJALABL7AL3DAxAP//ADP/6APPBf4CJgBFAAABBwBEANsAAAATALAARViwGC8bsRgYPlmwLdwwMQD//wAz/+gECgX+AiYARQAAAQcAdQFlAAAACQCwGC+wLtwwMQD//wAz/+gDzwYAAiYARQAAAQYAnWsAABMAsABFWLAYLxuxGBg+WbAx3DAxAP//ADP/6AQhBesCJgBFAAABBgCkcwQACQCwGC+wNtwwMQD//wAz/+gD9wXHAiYARQAAAQcAagClAAAADACwGC+wQdywLNAwMf//ADP/6APPBlwCJgBFAAABBwCiAPAACwAMALAYL7A13LA40DAx//8AM//oBA8GXgImAEUAAAAHAd8A9P/t//8ARv5CA+YEUgImAEcAAAAHAHkBPv/3//8ARf/qA+AF/gImAEkAAAEHAEQAwAAAABMAsABFWLAILxuxCBg+WbAh3DAxAP//AEX/6gPvBf4CJgBJAAABBwB1AUoAAAAJALAIL7Ai3DAxAP//AEX/6gPgBgACJgBJAAABBgCdUAAAEwCwAEVYsAgvG7EIGD5ZsCXcMDEA//8ARf/qA+AFxwImAEkAAAEHAGoAigAAAAwAsAgvsDXcsCDQMDH//wAuAAABxwX9AiYAjAAAAQYARJz/ABMAsABFWLACLxuxAhg+WbAF3DAxAP//AC4AAALKBf0CJgCMAAABBgB1Jf8ACQCwAi+wBtwwMQD//wAuAAACkAX/AiYAjAAAAQcAnf8s//8AEwCwAEVYsAIvG7ECGD5ZsAncMDEA//8ALgAAArgFxgImAIwAAAEHAGr/Zv//ABYAsABFWLACLxuxAhg+WbAN3LAZ0DAx//8AHwAABBgF6wImAFIAAAEGAKRqBAAJALADL7Ad3DAxAP//AEX/6AQfBf4CJgBTAAABBwBEAMkAAAATALAARViwAC8bsQAYPlmwJNwwMQD//wBF/+gEHwX+AiYAUwAAAQcAdQFTAAAACQCwAC+wJdwwMQD//wBF/+gEHwYAAiYAUwAAAQYAnVkAABMAsABFWLAALxuxABg+WbAo3DAxAP//AEX/6AQfBesCJgBTAAABBgCkYQQACQCwAC+wLdwwMQD//wBF/+gEHwXHAiYAUwAAAQcAagCTAAAADACwAC+wONywI9AwMf//AFv/6AQeBf4CJgBZAAABBwBEAM0AAAATALAARViwBy8bsQcYPlmwFdwwMQD//wBb/+gEHgX+AiYAWQAAAQcAdQFXAAAACQCwBi+wFtwwMQD//wBb/+gEHgYAAiYAWQAAAQYAnV0AABMAsABFWLAGLxuxBhg+WbAZ3DAxAP//AFv/6AQeBccCJgBZAAABBwBqAJcAAAAMALAGL7Ap3LAU0DAx////pf5FA+wF/gImAF0AAAEHAHUBHgAAAAkAsAEvsBLcMDEA////pf5FA+wFxwImAF0AAAEGAGpeAAAMALABL7Al3LAQ0DAx////rwAABLQG7gImACUAAAEHAHABBAE+ABMAsABFWLAELxuxBBw+WbAM3DAxAP//ADP/6AQmBbgCJgBFAAABBgBwdggAEwCwAEVYsBgvG7EYGD5ZsC3cMDEA////rwAABIsHDwImACUAAAEHAKABLgE3ABMAsABFWLAELxuxBBw+WbAO3DAxAP//ADP/6APsBdkCJgBFAAABBwCgAKAAAQAJALAYL7Av3DAxAAAC/6/+TwSLBbAAFwAaAHSyFRscERI5sBUQsBrQALAARViwFS8bsRUcPlmwAEVYsBMvG7ETED5ZsABFWLAXLxuxFxA+WbAARViwCy8bsQsSPlmyBgMKK1gh2Bv0WbAXELAQ0LAQL7IYExUREjmwGC+yEgEKK1gh2Bv0WbIaFRMREjkwMSEXBwYHBhcWNxcGIyImNzY3AyEDIwEzAQEhAwRlBEF6CQdBIEMERFNOXwIDyEL9ssfJAxelASD9BwHfeQMvWlk/AgEaeStlUppxAWv+hAWw+lACGgKnAAIAM/5PA88EUQAvADoAnbITOzwREjmwExCwMdAAsABFWLAnLxuxJxg+WbAARViwCy8bsQsSPlmwAEVYsBQvG7EUED5ZsABFWLAvLxuxLxA+WbALELIGAworWCHYG/RZsC8QsBDQsBAvshInFBESObIaJxQREjmwGi+wJxCyHwEKK1gh2Bv0WbIiGicREjmwFBCyMAEKK1gh2Bv0WbAaELI1AQorWCHYG/RZMDEhFwcGBwYXFjcXBiMiJjc2Nyc3BicmJjc2JDMXNzYmJyYGBwc+AhcWFgcDBwYXByUWNjc3JyIGBwYWA0QEQXoJB0EgQwREU05fAgPLAwOVp4+zCAoBGeW9DApfX12PELYJgsxtqbwPWAUCDgL+LFebOCeJq7YMCVkDL1pZPwIBGnkrZVKacjAwigQCsYWswQFWYXECAl9OAV+TUQIExaP96E03NhGMAldN3wFsY0xl//8AdP/mBPkHVQImACcAAAEHAHUB/wFXAAkAsA0vsCLcMDEA//8ARv/pA+YF/gImAEcAAAEHAHUBKgAAAAkAsBEvsCPcMDEA//8AdP/mBPkHVwImACcAAAEHAJ0BBQFXAAkAsA0vsCHcMDEA//8ARv/pA+YGAAImAEcAAAEGAJ0wAAAJALARL7Ai3DAxAP//AHT/5gT5BxwCJgAnAAABBwChAdwBVwAJALANL7Ap3DAxAP//AEb/6QPmBcUCJgBHAAABBwChAQcAAAAJALARL7Aq3DAxAP//AHT/5gT5B1kCJgAnAAABBwCeARoBWAAJALANL7Ak3DAxAP//AEb/6QPmBgICJgBHAAABBgCeRQEACQCwES+wJdwwMQD//wA7AAAE1QdEAiYAKAAAAQcAngDSAUMACQCwAS+wGtwwMQD//wBL/+gFpgYCACYASAAAAAcBogSXBRP//wA7AAAEsQb6AiYAKQAAAQcAcADSAUoACQCwBi+wDNwwMQD//wBF/+oECwW4AiYASQAAAQYAcFsIAAkAsAgvsCDcMDEA//8AOwAABLEHGwImACkAAAEHAKAA/AFDAAkAsAYvsA/cMDEA//8ARf/qA+AF2QImAEkAAAEHAKAAhQABAAkAsAgvsCPcMDEA//8AOwAABLEHBwImACkAAAEHAKEBngFCAAkAsAYvsBXcMDEA//8ARf/qA+AFxQImAEkAAAEHAKEBJwAAAAkAsAgvsCncMDEAAAEAO/5PBLEFsAAcAICyFB0eERI5ALAARViwFy8bsRccPlmwAEVYsBAvG7EQEj5ZsABFWLAELxuxBBA+WbAARViwFS8bsRUQPlmyHBcEERI5sBwvsgABCitYIdgb9FmwFRCyAgEKK1gh2Bv0WbAD0LAQELILAworWCHYG/RZsBcQshkBCitYIdgb9FkwMQEhAyEHIxcHBgcGFxY3FwYjIiY3NjchEyEHIQMhA9D9nFoCyBxLBEF6CQdBIEMERFNOXwIDq/17/QN5HP1DUQJkAqH9/J0DL1pZPwIBGnkrZVKRaQWwnv4sAAACAEX+aAPZBFEAJgAuAH6yBC8wERI5sAQQsCjQALAML7AARViwGi8bsRoYPlmwAEVYsBEvG7ERED5ZsiQBCitYIdgb9FmyAhEkERI5sAwQsgcDCitYIdgb9FmyKxoRERI5sCsvtL8rzysCXbIgAQorWCHYG/RZsiYaERESObAaELInAQorWCHYG/RZMDElBgcHBgcGFxY3FwYjIiY3NjcuAjc3NhI2FxYWFxYHByEGFhcWNwMmBgcFNzYmA4tThTt1CgdBIEMERFNOXwIDcHy0VgsFEZ3ig6e+CQMHC/09EoWEoIjEcKcxAg4EEHG7dzUrV1k/AgEaeStlUnJdConoiyuhAQqHAwTWt0FBU5POBASUAqQDnpwBEH6n//8AOwAABLEHRAImACkAAAEHAJ4A3AFDAAkAsAYvsBDcMDEA//8ARf/qA+UGAgImAEkAAAEGAJ5lAQAJALAIL7Ak3DAxAP//AHn/6gUGB1cCJgArAAABBwCdAP0BVwAJALAML7Aj3DAxAP//AAT+TwQoBgACJgBLAAABBgCdUwAACQCwBC+wK9wwMQD//wB5/+oFBgcwAiYAKwAAAQcAoAEyAVgACQCwDC+wJdwwMQD//wAE/k8EKAXZAiYASwAAAQcAoACIAAEACQCwBC+wLdwwMQD//wB5/+oFBgccAiYAKwAAAQcAoQHUAVcACQCwDC+wK9wwMQD//wAE/k8EKAXFAiYASwAAAQcAoQEqAAAACQCwBC+wM9wwMQD//wB5/fYFBgXHAiYAKwAAAAcBogFY/pf//wAE/k8EKAaVAiYASwAAAQcBuQEyAFgACQCwBC+wLtwwMQD//wA7AAAFdwdCAiYALAAAAQcAnQEhAUIACQCwBi+wDdwwMQD//wAfAAAD4wdBAiYATAAAAQcAnQBUAUEADgCwES+wFNyy3xQBXTAx//8ASQAAAzQHLQImAC0AAAEHAKT/hgFGAAkAsAIvsA7cMDEA//8AEQAAAuIF6QImAIwAAAEHAKT/NAACAAkAsAIvsA7cMDEA//8ASQAAAzkG+gImAC0AAAEHAHD/iQFKAAkAsAIvsATcMDEA//8AGgAAAucFtgImAIwAAAEHAHD/NwAGAAkAsAIvsATcMDEA//8ASQAAAv8HGwImAC0AAAEHAKD/swFDAAkAsAIvsAfcMDEA//8ALgAAAq0F2AImAIwAAAEHAKD/YQAAAAkAsAIvsAfcMDEA////jv5YAgEFsAImAC0AAAAGAKPfCf///3D+TwHjBccCJgBNAAAABgCjwQD//wBJAAACNwcHAiYALQAAAQcAoQBUAUIACQCwAi+wDdwwMQD//wBJ/+YGcAWwACYALQAAAAcALgImAAD//wAv/kYDwQXHACYATQAAAAcATgHsAAD//wAK/+YFCgc1AiYALgAAAQcAnQGmATUACQCwAC+wEdwwMQD///8J/kYClgXYAiYAmwAAAQcAnf8y/9gACQCwAC+wDtwwMQD//wA7/lgFUAWwAiYALwAAAAcBogFa/vn//wAg/kUEGgYAAiYATwAAAAcBogDY/ub//wA7AAADsQcvAiYAMAAAAQcAdQBlATEACQCwBC+wCNwwMQD//wAvAAADDgeUAiYAUAAAAQcAdQBpAZYACQCwAi+wBtwwMQD//wA7/gkDsQWwAiYAMAAAAAcBogEl/qr///+j/gkB7gYAAiYAUAAAAAcBov/A/qr//wA7AAADsQWxAiYAMAAAAQcBogKaBMIAEACwAEVYsAovG7EKHD5ZMDH//wAvAAADOwYCACYAUAAAAAcBogIsBRP//wA7AAADsQWwAiYAMAAAAAcAoQFM/cX//wAvAAACrAYAACYAUAAAAAcAoQDJ/bb//wA7AAAFdwc0AiYAMgAAAQcAdQInATYACQCwBS+wDNwwMQD//wAfAAAEAQX+AiYAUgAAAQcAdQFcAAAACQCwAy+wFdwwMQD//wA7/gkFdwWwAiYAMgAAAAcBogGG/qr//wAf/gkD4wRSAiYAUgAAAAcBogDu/qr//wA7AAAFdwc4AiYAMgAAAQcAngFCATcACQCwBS+wDtwwMQD//wAfAAAD9wYCAiYAUgAAAQYAnncBAAkAsAMvsBfcMDEA//8AHwAAA+MGBAImAFIAAAAHAaIARQUV//8Ad//nBQ0G8AImADMAAAEHAHABJQFAAAkAsAovsCPcMDEA//8ARf/oBB8FuAImAFMAAAEGAHBkCAAJALAAL7Aj3DAxAP//AHf/5wUNBxECJgAzAAABBwCgAU8BOQAJALAKL7Am3DAxAP//AEX/6AQfBdkCJgBTAAABBwCgAI4AAQAJALAAL7Am3DAxAP//AHf/5wVUBzcCJgAzAAABBwClAZYBOAAMALAKL7Al3LAn0DAx//8ARf/oBJMF/wImAFMAAAEHAKUA1QAAAAwAsAAvsCXcsCfQMDH//wA6AAAEwgc0AiYANgAAAQcAdQG2ATYACQCwBC+wGtwwMQD//wAfAAADYQX+AiYAVgAAAQcAdQC8AAAACQCwCi+wD9wwMQD//wA6/gkEwgWwAiYANgAAAAcBogEd/qr///+f/gkC1ARUAiYAVgAAAAcBov+8/qr//wA6AAAEwgc4AiYANgAAAQcAngDRATcACQCwBC+wHNwwMQD//wAfAAADWAYCAiYAVgAAAQYAntgBAAkAsAovsBHcMDEA//8AJ//pBKMHNgImADcAAAEHAHUBwgE4AAkAsAovsCvcMDEA//8ALv/pA+wF/gImAFcAAAEHAHUBRwAAAAkAsAgvsCncMDEA//8AJ//pBKMHOAImADcAAAEHAJ0AyAE4AAkAsAovsCrcMDEA//8ALv/pA7YGAAImAFcAAAEGAJ1NAAAJALAIL7Ao3DAxAP//ACf+SwSjBccCJgA3AAAABwB5AZIAAP//AC7+QwO2BFACJgBXAAAABwB5AVv/+P//ACf9/wSjBccCJgA3AAAABwGiASz+oP//AC799gO2BFACJgBXAAAABwGiAPX+l///ACf/6QSjBzoCJgA3AAABBwCeAN0BOQAJALAKL7At3DAxAP//AC7/6QPiBgICJgBXAAABBgCeYgEACQCwCC+wK9wwMQD//wCo/f8FCQWwAiYAOAAAAAcBogEe/qD//wBD/f8ClAVAAiYAWAAAAAcBogCC/qD//wCo/ksFCQWwAiYAOAAAAAcAeQGEAAD//wBD/ksClAVAAiYAWAAAAAcAeQDoAAD//wCoAAAFCQc4AiYAOAAAAQcAngDSATcACQCwBi+wDNwwMQD//wBD/+0DjQZ5ACYAWAAAAAcBogJ+BYr//wBn/+cFIAchAiYAOQAAAQcApAD8AToACQCwAC+wHdwwMQD//wBb/+gEHgXrAiYAWQAAAQYApGUEAAkAsAYvsB7cMDEA//8AZ//nBSAG7gImADkAAAEHAHAA/wE+AAkAsAAvsBPcMDEA//8AW//oBB4FuAImAFkAAAEGAHBoCAAJALAGL7AU3DAxAP//AGf/5wUgBw8CJgA5AAABBwCgASkBNwAJALAAL7AW3DAxAP//AFv/6AQeBdkCJgBZAAABBwCgAJIAAQAJALAGL7AX3DAxAP//AGf/5wUgB5ICJgA5AAABBwCiAXkBQQAMALAAL7Ac3LAf0DAx//8AW//oBB4GXAImAFkAAAEHAKIA4gALAAwAsAYvsB3csCDQMDH//wBn/+cFLgc1AiYAOQAAAQcApQFwATYADACwAC+wFdywF9AwMf//AFv/6ASXBf8CJgBZAAABBwClANkAAAAMALAGL7AW3LAY0DAxAAEAZ/57BSgFsAAfAFAAsABFWLAXLxuxFxw+WbAARViwDS8bsQ0SPlmwAEVYsBIvG7ESED5ZshsBCitYIdgb9FmyBBIbERI5sA0QsggDCitYIdgb9FmwFxCwH9AwMQEDBgYHBgcGFxY3FwYjIiY3NjcmAjcTMwMGFhcWNjcTBSioF72WlQkHQSBDBERTTl8CBFbZ8RmouacRioyY0RuoBbD8J5/0NmdgPwIBGnkrZVJnUgYBD9YD2vwlma8EBrGgA9wAAQBb/k8EHgQ6ACMAYwCwAEVYsBgvG7EYGD5ZsABFWLATLxuxExA+WbAARViwIy8bsSMQPlmwAEVYsAsvG7ELEj5ZsgYDCitYIdgb9FmwIxCwENCyERMYERI5sBMQsh4BCitYIdgb9FmwGBCwIdAwMSEXBwYHBhcWNxcGIyImNzY3NwYnJiY3EzMDBhcWFhcWNxMzAwNUBEF6CQdBIEMERFNOXwIDxBR/xJuVE3S1dQUDBUxEwmqItbwDL1pZPwIBGnkrZVKXcV2DBATWuQK7/UIsKkhSAwajAxT7xgD//wDDAAAHQQc2AiYAOwAAAQcAnQHcATYACQCwAy+wFNwwMQD//wCAAAAF/gYAAiYAWwAAAQcAnQEbAAAACQCwAS+wDtwwMQD//wCoAAAFMgc2AiYAPQAAAQcAnQDDATYACQCwAS+wCtwwMQD///+l/kUD7AYAAiYAXQAAAQYAnSQAAAkAsAEvsBHcMDEA//8AqAAABTIG/QImAD0AAAEHAGoA/QE2AAwAsAEvsB7csAnQMDH////rAAAEzgc0AiYAPgAAAQcAdQG8ATYACQCwBy+wDNwwMQD////tAAADzgX+AiYAXgAAAQcAdQEkAAAACQCwBy+wDNwwMQD////rAAAEzgb7AiYAPgAAAQcAoQGZATYACQCwBy+wE9wwMQD////tAAADzgXFAiYAXgAAAQcAoQEBAAAACQCwBy+wE9wwMQD////rAAAEzgc4AiYAPgAAAQcAngDXATcACQCwBy+wDtwwMQD////tAAADzgYCAiYAXgAAAQYAnj8BAAkAsAcvsA7cMDEA////hAAAB3gHQAImAIEAAAEHAHUC9wFCABMAsABFWLAGLxuxBhw+WbAV3DAxAP//ABP/6AZhBf8CJgCGAAABBwB1AnMAAQATALAARViwFy8bsRcYPlmwRNwwMQD//wAg/6QFnAd+AiYAgwAAAQcAdQIoAYAAEwCwAEVYsA0vG7ENHD5ZsDDcMDEA//8AOf96BCoF/gImAIkAAAEHAHUBOQAAABMAsABFWLAALxuxABg+WbAu3DAxAP///7AAAAQPBI0CJgG9AAABBwHe/x3/eAAsALIfGQFxtN8Z7xkCcbQfGS8ZAl2ybxkBcrJPGQFxtO8Z/xkCXbJfGQFdMDH///+wAAAEDwSNAiYBvQAAAQcB3v8d/3gALACyHxkBcbTfGe8ZAnG0HxkvGQJdsm8ZAXKyTxkBcbTvGf8ZAl2yXxkBXTAx//8AbQAABEIEjQImAc0AAAEGAd494AAIALIACwFdMDH///+lAAAD4wYcAiYBugAAAQcARADgAB4AEwCwAEVYsAQvG7EEGj5ZsAzcMDEA////pQAABA8GHAImAboAAAEHAHUBagAeAAkAsAQvsA3cMDEA////pQAAA+MGHgImAboAAAEGAJ1wHgATALAARViwBC8bsQQaPlmwENwwMQD///+lAAAEJgYJAiYBugAAAQYApHgiAAkAsAQvsBXcMDEA////pQAAA/wF5QImAboAAAEHAGoAqgAeAAwAsAQvsCDcsAvQMDH///+lAAAD4wZ6AiYBugAAAQcAogD1ACkADACwBC+wFNywF9AwMf///6UAAAQUBnsCJgG6AAAABwHfAPkACv//AEf+SAQ3BKMCJgG8AAAABwB5AWj//f//AB0AAAPvBhwCJgG+AAABBwBEALQAHgATALAARViwBi8bsQYaPlmwDdwwMQD//wAdAAAD7wYcAiYBvgAAAQcAdQE+AB4ACQCwBi+wDtwwMQD//wAdAAAD7wYeAiYBvgAAAQYAnUQeAAkAsAYvsA3cMDEA//8AHQAAA+8F5QImAb4AAAEGAGp+HgAMALAGL7Ah3LAM0DAx//8AKgAAAcUGHAImAcIAAAEGAESaHgATALAARViwAi8bsQIaPlmwBdwwMQD//wAqAAACyAYcAiYBwgAAAQYAdSMeAAkAsAIvsAbcMDEA//8AKgAAAo4GHgImAcIAAAEHAJ3/KgAeAAkAsAIvsAXcMDEA//8AKgAAArYF5QImAcIAAAEHAGr/ZAAeAAwAsAIvsBncsATQMDH//wAdAAAEmgYJAiYBxwAAAQcApACiACIACQCwBS+wFNwwMQD//wBK/+oETgYcAiYByAAAAQcARAD4AB4AEwCwAEVYsAgvG7EIGj5ZsCHcMDEA//8ASv/qBE4GHAImAcgAAAEHAHUBggAeAAkAsAgvsCLcMDEA//8ASv/qBE4GHgImAcgAAAEHAJ0AiAAeAAkAsAgvsCHcMDEA//8ASv/qBE4GCQImAcgAAAEHAKQAkAAiAAkAsAgvsCrcMDEA//8ASv/qBE4F5QImAcgAAAEHAGoAwgAeAAwAsAgvsDXcsCDQMDH//wBF/+oEVwYcAiYBzgAAAQcARADaAB4AEwCwAEVYsAkvG7EJGj5ZsBPcMDEA//8ARf/qBFcGHAImAc4AAAEHAHUBZAAeAAkAsAAvsBTcMDEA//8ARf/qBFcGHgImAc4AAAEGAJ1qHgAJALAAL7AT3DAxAP//AEX/6gRXBeUCJgHOAAABBwBqAKQAHgAMALAAL7An3LAS0DAx//8AdAAABGUGHAImAdIAAAEHAHUBOgAeAAkAsAEvsAvcMDEA////pQAABCsF1gImAboAAAEGAHB7JgAJALAEL7AL3DAxAP///6UAAAPxBfcCJgG6AAABBwCgAKUAHwAJALAEL7AO3DAxAAAC/6X+TwPjBI0AFgAZAGuyFBobERI5sBQQsBnQALAARViwFC8bsRQaPlmwAEVYsBIvG7ESED5ZsABFWLAWLxuxFhA+WbAARViwCi8bsQoSPlmyBQMKK1gh2Bv0WbIXEhQREjmwFy+yEQEKK1gh2Bv0WbIZFBIREjkwMSEHBgcGFxY3FwYjIiY3NjcDIQMjATMBASEDA8FBegkHQSBDBERTTl8CA881/gmcwQKbogEB/XMBhGgyWlk/AgEaeStlUpp1AQL+6QSN+3MBrgH7//8AR//sBDcGHAImAbwAAAEHAHUBbwAeAAkAsAsvsB/cMDEA//8AR//sBDcGHgImAbwAAAEGAJ11HgAJALALL7Ae3DAxAP//AEf/7AQ3BeMCJgG8AAABBwChAUwAHgAJALALL7Am3DAxAP//AEf/7AQ3BiACJgG8AAABBwCeAIoAHwAJALALL7Ah3DAxAP//AB0AAAQPBiACJgG9AAABBgCeNR8ACQCwAS+wGtwwMQD//wAdAAAD/wXWAiYBvgAAAQYAcE8mAAkAsAYvsAzcMDEA//8AHQAAA+8F9wImAb4AAAEGAKB5HwAJALAGL7AP3DAxAP//AB0AAAPvBeMCJgG+AAABBwChARsAHgAJALAGL7AV3DAxAAABAB3+TwPvBI0AHACMshEdHhESOQCwAEVYsBcvG7EXGj5ZsABFWLAQLxuxEBI+WbAARViwBC8bsQQQPlmwAEVYsBUvG7EVED5ZshwXBBESObAcL7QfHC8cAl2yvxwBXbIAAQorWCHYG/RZsBUQsgIBCitYIdgb9FmwA9CwEBCyCwMKK1gh2Bv0WbAXELIZAQorWCHYG/RZMDEBIQMhByMXBwYHBhcWNxcGIyImNzY3IRMhByEDIQMx/f1CAlkbPwRBegkHQSBDBERTTl8CA6v95csDBxv9rjoCBAIO/omXAy9aWT8CARp5K2VSkWkEjZn+sgD//wAdAAAD7wYgAiYBvgAAAQYAnlkfAAkAsAYvsBDcMDEA//8ATP/uBEEGHgImAcAAAAEGAJ1zHgAJALALL7Ah3DAxAP//AEz/7gRBBfcCJgHAAAABBwCgAKgAHwAJALALL7Aj3DAxAP//AEz/7gRBBeMCJgHAAAABBwChAUoAHgAJALALL7Ap3DAxAP//AEz9/ARBBKMCJgHAAAAABwGiAQf+nf//AB0AAASaBh4CJgHBAAABBwCdAJEAHgAJALAGL7AN3DAxAP//AA8AAALgBgkCJgHCAAABBwCk/zIAIgAJALACL7AO3DAxAP//ABgAAALlBdYCJgHCAAABBwBw/zUAJgAJALACL7AE3DAxAP//ACoAAAKrBfcCJgHCAAABBwCg/18AHwAJALACL7AH3DAxAP///3r+TwGqBI0CJgHCAAAABgCjywD//wAqAAAB4wXjAiYBwgAAAQYAoQAeAAkAsAIvsA3cMDEA////9v/rBGgGHgImAcMAAAEHAJ0BBAAeAAkAsAAvsBDcMDEA//8AHf4FBH8EjQImAcQAAAAHAaIAz/6m//8AHQAAAyMGHAImAcUAAAEGAHUXHgAJALAEL7AI3DAxAP//AB3+BwMjBI0CJgHFAAAABwGiAMz+qP//AB0AAAMjBI4CJgHFAAABBwGiAhMDnwAQALAARViwCi8bsQoaPlkwMf//AB0AAAMjBI0CJgHFAAAABwChAOD9N///AB0AAASaBhwCJgHHAAABBwB1AZQAHgAJALAFL7AM3DAxAP//AB3+AwSaBI0CJgHHAAAABwGiAST+pP//AB0AAASaBiACJgHHAAABBwCeAK8AHwAJALAFL7AO3DAxAP//AEr/6gROBdYCJgHIAAABBwBwAJMAJgAJALAIL7Ag3DAxAP//AEr/6gROBfcCJgHIAAABBwCgAL0AHwAJALAIL7Aj3DAxAP//AEr/6gTCBh0CJgHIAAABBwClAQQAHgAMALAIL7Ai3LAk0DAx//8AHQAABAEGHAImAcsAAAEHAHUBLwAeAAkAsAQvsBncMDEA//8AHf4HBAEEjQImAcsAAAAHAaIAyf6o//8AHQAABAEGIAImAcsAAAEGAJ5KHwAJALAEL7Ab3DAxAP//ABH/6wPtBhwCJgHMAAABBwB1AUUAHgAJALAKL7Aq3DAxAP//ABH/6wPtBh4CJgHMAAABBgCdSx4ACQCwCi+wKdwwMQD//wAR/ksD7QSdAiYBzAAAAAcAeQFJAAD//wAR/+sD7QYgAiYBzAAAAQYAnmAfAAkAsAovsCzcMDEA//8Abf4BBEIEjQImAc0AAAAHAaIAz/6i//8AbQAABEIGIAImAc0AAAEGAJ5UHwAJALAGL7AM3DAxAP//AG3+TQRCBI0CJgHNAAAABwB5ATUAAv//AEX/6gRXBgkCJgHOAAABBgCkciIACQCwAC+wHNwwMQD//wBF/+oEVwXWAiYBzgAAAQYAcHUmAAkAsAAvsBLcMDEA//8ARf/qBFcF9wImAc4AAAEHAKAAnwAfAAkAsAAvsBXcMDEA//8ARf/qBFcGegImAc4AAAEHAKIA7wApAAwAsAAvsBvcsB7QMDH//wBF/+oEpAYdAiYBzgAAAQcApQDmAB4ADACwAC+wFNywFtAwMQABAEX+dARXBI0AIABhsgkhIhESOQCwAEVYsCAvG7EgGj5ZsABFWLAYLxuxGBo+WbAARViwDi8bsQ4SPlmwAEVYsBMvG7ETED5ZsgQTIBESObAOELIJAworWCHYG/RZsBMQshwBCitYIdgb9FkwMQEDBgYHBgYHBhcWNxcGIyImNzY3JiY3EzMDBhYXFjY3EwRXgxOkgFRKBAdBIEMERFNOXwIEYrTHE4OzhA11dHqpFYQEjfz1h8cqO2AvPwIBGnkrZVJwVQ3aqgMM/PN1gQMEgnsDDQD//wCVAAAGKQYeAiYB0AAAAQcAnQE3AB4ACQCwEi+wFNwwMQD//wB0AAAEZQYeAiYB0gAAAQYAnUAeAAkAsAEvsArcMDEA//8AdAAABGUF5QImAdIAAAEGAGp6HgAMALABL7Ae3LAJ0DAx////3AAABA4GHAImAdMAAAEHAHUBOgAeAAkAsAcvsAzcMDEA////3AAABA4F4wImAdMAAAEHAKEBFwAeAAkAsAcvsBPcMDEA////3AAABA4GIAImAdMAAAEGAJ5VHwAJALAHL7AO3DAxAP///68AAASLBj8CJgAlAAAABgCtBAD//wBjAAAFFQY/ACYAKWQAAAcArf9CAAD//wBxAAAF2wZBACYALGQAAAcArf9QAAL//wB3AAACZQZAACYALWQAAAcArf9WAAH//wBq/+cFIQY/ACYAMxQAAAcArf9JAAD////uAAAFlgY/ACYAPWQAAAcArf7NAAD//wAeAAAE7gY/ACYAuRQAAAcArf9MAAD//wAg//QDGwZ0AiYAwgAAAQcArv8t/+wAHACwAEVYsA4vG7EOGD5ZsBvcsBHQsBsQsCTQMDH///+vAAAEiwWwAgYAJQAA//8AOwAABKAFsAIGACYAAP//ADsAAASxBbACBgApAAD////rAAAEzgWwAgYAPgAA//8AOwAABXcFsAIGACwAAP//AEkAAAIBBbACBgAtAAD//wA7AAAFUAWwAgYALwAA//8AOwAABrcFsAIGADEAAP//ADsAAAV3BbACBgAyAAD//wB3/+cFDQXIAgYAMwAA//8AOwAABPMFsAIGADQAAP//AKgAAAUJBbACBgA4AAD//wCoAAAFMgWwAgYAPQAA////1AAABSsFsAIGADwAAP//AEkAAAMKBwkCJgAtAAABBwBq/7gBQgAMALACL7AZ3LAE0DAx//8AqAAABTIG/QImAD0AAAEHAGoA/QE2AAwAsAEvsB7csAnQMDH//wBI/+cEMgY6AiYAugAAAQcArQFo//sACQCwFS+wKNwwMQD//wAp/+cD5QY5AiYAvgAAAQcArQEh//oACQCwGi+wK9wwMQD//wAk/mED8wY6AiYAwAAAAQcArQE7//sACQCwAy+wFdwwMQD//wCF//QCZQYlAiYAwgAAAQYArSTmAAkAsAAvsBHcMDEA//8AZ//lBAoGdAImAMoAAAEGAK4c7AASALALL7Ar3LAW0LArELAa0DAx//8ALQAABFcEOgIGAI0AAP//AEX/6AQfBFICBgBTAAD////l/mAEJQQ6AgYAdgAA//8AbgAAA+0EOgIGAFoAAP///8QAAAP0BDoCBgBcAAD//wBn//QC3gWzAiYAwgAAAQYAaozsAAwAsAAvsCTcsA/QMDH//wBn/+UD+gWzAiYAygAAAQYAanvs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3LAi0DAx//8Ak//mBUAG+gImAN0AAAEHAHAA7AFKAAkAsAEvsBHcMDEA////pf5FA+wFuAImAF0AAAEGAHAvCAAJALABL7AQ3DAxAP//AJP/5gVABwkCJgDdAAABBwBqARsBQgAMALABL7Am3LAR0DAx////pf5FA+wFxwImAF0AAAEGAGpeAAAMALABL7Al3LAQ0DAx//8Ak//mBUAHQQImAN0AAAEHAKUBXQFCABYAsABFWLABLxuxARw+WbAT3LAX0DAx////pf5FBF4F/wImAF0AAAEHAKUAoAAAABYAsABFWLABLxuxARg+WbAS3LAW0DAx//8AzgAABUQHCQImAOAAAAEHAGoBRAFCABYAsABFWLASLxuxEhw+WbAo3LAc0DAx//8AewAABAAFswImAPgAAAEGAGpp7AAMALAIL7Ao3LAT0DAx//8ARQAABpYHCQAmAOUPAAAnAC0ElQAAAQcAagIIAUIAFgCwAEVYsAovG7EKHD5ZsCHcsC3QMDH//wAwAAAFqQWzACYA/QAAACcAjAQKAAABBwBqAWr/7AAWALAARViwCi8bsQoYPlmwIdywLdAwMf///9T+RQUrBbACJgA8AAAABwGvA5UAAP///8T+RQP0BDoCJgBcAAAABwGvAqoAAP//AEv/6AR1BgACBgBIAAD////K/kUFZQWwAiYA3AAAAAcBrwQkAAD////I/kUESgQ6AiYA8QAAAAcBrwM7AAD///+v/p8EiwWwAiYAJQAAAAcArATcAAD//wAz/p8DzwRRAiYARQAAAAcArAQpAAD///+vAAAEiwe5AiYAJQAAAQcAqgUBAUYACQCwBC+wGNwwMQD//wAz/+gDzwaDAiYARQAAAQcAqgRzABAACQCwGC+wOdwwMQD///+vAAAF7QfDAiYAJQAAAQcBtwDyAS4AFgCwAEVYsAUvG7EFHD5ZsA7csBTQMDH//wAz/+gFXwaOAiYARQAAAQYBt2T5ABYAsABFWLAYLxuxGBg+WbAv3LA10DAx////rwAABIsHvwImACUAAAEHAbYA+AE9ABYAsABFWLAFLxuxBRw+WbAM3LAT0DAx//8AM//oA/0GiQImAEUAAAEGAbZqBwAWALAARViwGC8bsRgYPlmwL9ywNNAwMf///68AAAVsB+oCJgAlAAABBwG1APMBGwAWALAARViwBS8bsQUc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ALAARViwBC8bsQQcPlmwDNywENAwMf//ADP/6APPBesCJgBFAAABBwCrA/L//QAWALAARViwGC8bsRgYPlmwLdywMdAwMf//ADsAAASxBywCJgApAAABBwCrBE4BPgAWALAARViwBi8bsQYcPlmwDdywEdAwMf//AEX/6gPgBesCJgBJAAABBwCrA9f//QAWALAARViwCC8bsQgYPlmwIdywJdAwMf///98AAAKKBywCJgAtAAABBwCrAwQBPgAWALAARViwAi8bsQIcPlmwBdywCdAwMf///40AAAI4BekCJgCMAAABBwCrArL/+wAWALAARViwAi8bsQIYPlmwBdywCdAwMf//AHf/5wUNByICJgAzAAABBwCrBKEBNAAWALAARViwCi8bsQocPlmwJNywKNAwMf//AEX/6AQfBesCJgBTAAABBwCrA+D//QAWALAARViwAC8bsQAYPlmwJNywKNAwMf//ADoAAATCByACJgA2AAABBwCrBEMBMgAWALAARViwBC8bsQQcPlmwGdywHdAwMf//AB8AAALUBesCJgBWAAABBwCrA0n//QAWALAARViwCi8bsQoYPlmwEtywDdAwMf//AGf/5wUgByACJgA5AAABBwCrBHsBMgAWALAARViwCi8bsQocPlmwFNywGNAwMf//AFv/6AQeBesCJgBZAAABBwCrA+T//QAWALAARViwBy8bsQcYPlmwFdywGdAwMf///7IAAAU8Bj8AJgDPZAAABwCt/pEAAP//ADv+qQSgBbACJgAmAAAABwCsBJgACv//AB/+lgP+BgACJgBGAAAABwCsBIb/9///ADv+qQTVBbACJgAoAAAABwCsBJcACv//AEv+nwR1BgACJgBIAAAABwCsBJkAAP//ADv+CQTVBbACJgAoAAAABwGiAR/+qv//AEv9/wR1BgACJgBIAAAABwGiASH+oP//ADv+qQV3BbACJgAsAAAABwCsBPoACv//AB/+qQPjBgACJgBMAAAABwCsBH8ACv//ADsAAAVQBy4CJgAvAAABBwB1AbABMAATALAARViwBS8bsQUcPlmwDtwwMQD//wAgAAAEIgc/AiYATwAAAQcAdQF9AUEACQCwBS+wD9wwMQD//wA7/vgFUAWwAiYALwAAAAcArATSAFn//wAg/uUEGgYAAiYATwAAAAcArARQAEb//wA7/qkDsQWwAiYAMAAAAAcArASdAAr////y/qkB7gYAAiYAUAAAAAcArAM3AAr//wA7/qkGtwWwAiYAMQAAAAcArAWnAAr//wAe/qkGagRSAiYAUQAAAAcArAWrAAr//wA7/qkFdwWwAiYAMgAAAAcArAT+AAr//wAf/qkD4wRSAiYAUgAAAAcArARmAAr//wA7AAAE8wdAAiYANAAAAQcAdQG0AUIAEwCwAEVYsAMvG7EDHD5ZsBbcMDEA////1/5gBDYF9QImAFQAAAEHAHUBkf/3ABMAsABFWLANLxuxDRg+WbAh3DAxAP//ADr+qQTCBbACJgA2AAAABwCsBJUACv///+7+qQLUBFQCJgBWAAAABwCsAzMACv//ACf+nwSjBccCJgA3AAAABwCsBKQAAP//AC7+lwO2BFACJgBXAAAABwCsBG3/+P//AKj+nwUJBbACJgA4AAAABwCsBJYAAP//AEP+nwKUBUACJgBYAAAABwCsA/oAAP//AKQAAAVhBy0CJgA6AAABBwCkAOEBRgATALAARViwAS8bsQEcPlmwCtwwMQD//wBuAAAD7QXiAiYAWgAAAQYApBv7ABMAsABFWLABLxuxARg+WbAK3DAxAP//AKT+qQVhBbACJgA6AAAABwCsBMoACv//AG7+qQPtBDoCJgBaAAAABwCsBDgACv//AMP+qQdBBbACJgA7AAAABwCsBc0ACv//AID+qQX+BDoCJgBbAAAABwCsBSwACv///+v+qQTOBbACJgA+AAAABwCsBJgACv///+3+qQPOBDoCJgBeAAAABwCsBEIACv///wz/5wVTBdYAJgAzRgAABwFa/hoAAP///6UAAAPjBRwCJgG6AAAABwCt/6v+3f///+EAAAQrBR8AJgG+PAAABwCt/sD+4P////0AAATWBRwAJgHBPAAABwCt/tz+3f//AAEAAAHmBR4AJgHCPAAABwCt/uD+3///AB3/6gRYBRwAJgHICgAABwCt/vz+3f///5sAAAShBRwAJgHSPAAABwCt/nr+3f//ABYAAAR0BRsAJgHzCgAABwCt/xT+3P///6UAAAPjBI0CBgG6AAD//wAdAAAD5wSNAgYBuwAA//8AHQAAA+8EjQIGAb4AAP///9wAAAQOBI0CBgHTAAD//wAdAAAEmgSNAgYBwQAA//8AKgAAAaoEjQIGAcIAAP//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DAAGiA7uDu4MRg6gCiIO7g7uD5oKigaSDGYMRgrYCqwNUg8QCl4L4gsQDBYGmA22DbYNtgwgCxAKUAxMDbAMTAsQBqYN5gtwD5oLcAasBrIGvAbCBsgMTAbOBtgNtgb+BxQHKgcwB0YHTAdSB4QHigeQDcANwAe+Du4H4AgCDVIIMA7uDu4LJg7uDu4IRg3ADcAIeAiCCIwIpg1ICLgNsAjSCOgLEAkyCUwJaAloCxAJYgloCWgJaAtwDCAK2AxMCxAN5g1IDqAOoA1ICtIK0grSCtIK0gmKCbAJugnECeIJ9AoGChgK/g+aD5oPmg+aDGYLcAtwC3ALcAtwC3ALcAr+DAAMAAwADAAO7g7uDu4O7g7uD5oPmg+aD5oPmgxGDEYMRgxGDxAL4gviC+IL4gviC+IL4gwWDBYMFgwWDbYMIAwgDCAMIAwgDEwMTAtwC+ILcAviC3AL4gr+Cv4K/gr+D5oMAAwWDAAMFgwADBYMAAwWDAAMFg7uDbYO7g7uDu4O7g7uDEYOoAoiCiIKIgoiDu4Ntg7uDbYO7g22DbYPmgwgD5oMIA+aDCAKUApQClAMZgxmDGYMRgxGDEYMRgxGDEYKrA8QDEwPEApeCl4KXgtwDAAO7g7uD5oPEAtwCoAMAApeDu4O7g6gDu4O7g+aCooMZg8QDVIO7g8QDbYMIAxMDCAMAA3mDu4O7gxGDqAOoAsmC3AKgA3mDAAO7g7uD5oKigr+DGYNUgviDBYMIAsQDEwNsAwWDUgMTAqsCqwKrA8QDEwK0grSCtIO7g22C3AL4gwADBYK2AxMCv4PEAxMDu4NUg2wDu4LcAviC3AL4gwADBYMFgwWDVINsA+aDCAMIAsQCyYMTAsmDEwLJgxMDVINsAtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gwADBYMAAwWDAAMFgwADBYMAAwWDAAMFgwADBYMAAwWDu4O7g+aDCAPmgwgD5oMIA+aDCAPmgwgD5oMIA+aDCAMIAxGDEYPEAxMDxAMTA8QDEwOoA7uDGYNUg2wDeYNSA1SDbANtg3ADeYOoA7uDu4PEA+aAAIAhwAGAAYAAAALAAsAAQATABMAAgAlACoAAwAsADUACQA4AD4AEwBFAEYAGgBJAEoAHABMAEwAHgBRAFQAHwBWAFYAIwBaAFoAJABcAF0AJQCKAIoAJwCcAJwAKACwALQAKQC2ALgALgC6ALoAMQC8AL0AMgC/AMAANADCAMQANgDGAMsAOQDRANEAPwDTAN0AQADfAN8ASwDhAOMATADlAOcATwDpAO0AUgDwAPAAVwD1APcAWAD6APsAWwD9AP8AXQEDAQQAYAEJAQkAYgEMAQwAYwEXARkAZAErAS0AZwEwATAAagEyATIAawFJAUkAbAFsAW0AbQFvAXEAbwG6AboAcgG9Ab0AcwHEAcUAdAHIAcgAdgHKAcsAdwHNAc0AeQIoAigAegIqAisAewJHAkgAfQJKAkoAfwJMAm0AgAJvAnIAogJ3AnwApgKBAokArAKLAosAtQKNAo0AtgKPAo8AtwKRApEAuAKTApwAuQKlAqcAwwKpAqkAxgKrAqsAxwKtAq0AyAKvAq8AyQKyArIAygK0ArQAywK2ArYAzAK4ArgAzQK6AroAzgK8ArwAzwK+AsoA0ALMAswA3QLOAs4A3gLQAtAA3wLbAtsA4ALdAt0A4QLfAt8A4gLhAuEA4wLjAuMA5ALlAuUA5QLnAucA5gLpAukA5wLrAusA6ALtAu0A6QLvAvIA6gL0AvQA7gL2AvYA7wNTA1gA8ANbA2oA9gNtA20BBgNxA3EBBwNzA3MBCAN3A3cBCQN6A3sBCgN9A4YBDAOIA4oBFgOMA5EBGQOTA5QBHwOWA5kBIQOfA6ABJQOiA6IBJwOkA6QBKAOmA6kBKQOsA7EBLQOzA7MBMwO3A7gBNAO9A70BNgO/A8gBNwPLA8wBQQPOA9EBQwPYA9kBRwPdA90BSQPfA+UBSgPqA+sBUQPvBBcBUwQZBBkBfAQbBCgBfQQwBDABiwQzBDMBjAQ1BDUBjQRBBEYBjgRJBEkBlARLBEsBlQRNBE0BlgRPBFABlwRVBFgBmQRbBFsBnQRdBF4BngRgBGABoARkBGQBoQRmBGYBogRqBGoBowSqBKoBpAABABP/IAACAFb/5gG6/8AAAQG6AA4AAwANABQAQQASAGEAEwABAPX/9QABAMMADQACALf/wgDDABAAAQDD/+IAAQDG//IAAQDDAA4AAgDJ/+0A9f/AAAkAvv/mAMH/6wDC/+kAxP/wAMX/5wDJ/+MAy//OAMz/1ADN/9sABQDB/+wAwwAPAMX/6gDJ/8QAy//nAAUASv/pAMH/7gDD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Aor/6wKM/+sCjv/rApD/6wKS/+sClP/rApb/6wKY/+sCmv/rApz/6wKe/+sCoP/rAqL/6wKk/+sCsv74Asb/6wLI/+sCyv/rAtsAFALdABQC3wAUAuL/6gLk/+oC5v/qAuj/6gLq/+oC7P/qAvD/6ANT/1YDW/9WA2v/6wNv/+oDcf/rA3P/6AN2/+oDd//rA3j/6gN//vgDg/9WA44AFAOQ/94Dkf/rA5P/6wOV/+sDlv/oA5j/6wOf/+gDp//oA6//VgOw/94Ds//rA7j/6AO5/+sDvv/rA8D/6APF/1YDxv/eA8f/VgPI/94DzP/rA87/6wPP/+sD2f/rA9v/6wPd/+sD4f/oA+P/6APl/+gD7P/rA+//VgPw/94D8f9WA/L/3gPz/1YD9P/eA/X/VgP2/94D9/9WA/j/3gP5/1YD+v/eA/v/VgP8/94D/f9WA/7/3gP//1YEAP/eBAH/VgQC/94EA/9WBAT/3gQF/1YEBv/eBAj/6wQK/+sEDP/rBA7/6wQQ/+sEEv/rBBT/6wQW/+sEHP/rBB7/6wQg/+sEIv/rBCT/6wQm/+sEKP/rBCr/6wQs/+sELv/rBDD/6wQy/+sENP/qBDb/6gQ4/+oEOv/qBDz/6gQ+/+oEQP/qBEL/6ARE/+gERv/oBE0AFAAfADj/1QA6/+QAO//sAD3/3QDR/9UA1f/VARj/5AEy/9UBOv/VAmb/3QLb/9UC3f/VAt//1QLt/+wC7//dAvH/3QNY/90DZ//dA2r/3QOO/9UDoP/sA6L/7AOk/+wDpv/dA7f/5AO//90EQf/dBEP/3QRF/90ETf/VBGr/3QAaADj/sAA6/+0APf/QANH/sADV/7ABGP/tATL/sAE6/7ACZv/QAtv/sALd/7AC3/+wAu//0ALx/9ADWP/QA2f/0ANq/9ADjv+wA6b/0AO3/+0Dv//QBEH/0ARD/9AERf/QBE3/sARq/9AAEAAu/+4AOf/uAmL/7gJj/+4CZP/uAmX/7gKy/+4C4f/uAuP/7gLl/+4C5//uAun/7gLr/+4Df//uBDP/7gQ1/+4ARwAGABAACwAQAEf/6ABI/+gASf/oAEv/6ABV/+gAk//oAJj/6AC6/+gAx//oAMj/6AD2/+gBAv/oAR3/6AEh/+gBOf/oAUv/6AFM/+gBVv/oAWwAEAFtABABbwAQAXAAEAFxABACbv/o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/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAMD/8wDH/9wAyP/cAMr/3QDr//MA7//zAPD/8wDy//MA8//zAPT/8wD2/9wA9//zAPn/8wD6//MA/f/zAP//8wEC/9wBBP/zARf/1gEZ/+EBHf/cASH/3AE1//MBOf/cAUT/8wFJ//MBS//cAUz/3AFW/9wCbv/cAm//3AJw/9wCcf/cAnL/3AJ3//MCeP/WAnn/1gJ6/9YCe//WAnz/1gJ9/90Cfv/dAn//3QKA/90Cgf/hAoL/4QKK/9wCjP/cAo7/3AKQ/9wCkv/cApT/3AKW/9wCmP/cApr/3AKc/9wCnv/cAqD/3AKi/9wCpP/cAr//8wLB//MCw//zAsT/8wLG/9YCyP/WAsr/1gLi/90C5P/dAub/3QLo/90C6v/dAuz/3QLw/+EDa//cA23/8wNv/90Dcf/WA3P/4QN2/90Dd//WA3j/3QOR/9wDkv/zA5P/1gOU//MDlf/cA5b/4QOY/9wDmf/zA57/8wOf/+EDp//hA67/8wOz/9wDtP/zA7j/4QO5/9wDvv/cA8D/4QPM/9wDzv/cA8//3APV//MD1//zA9n/1gPb/9wD3f/WA+H/4QPj/+ED5f/hA+n/8wPs/9wECP/cBAr/3AQM/9wEDv/cBBD/3AQS/9wEFP/cBBb/3AQc/9YEHv/WBCD/1gQi/9YEJP/WBCb/1gQo/9YEKv/cBCz/3AQu/9wEMP/WBDL/3AQ0/90ENv/dBDj/3QQ6/90EPP/dBD7/3QRA/90EQv/hBET/4QRG/+EESv/zBEz/8wRW//MEY//zBGX/8wRn//MAcQAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADH//AAyP/wAMr/7wD2//ABAv/wARn/3AEd//ABIf/wATn/8AFL//ABTP/wAVb/8AFs/9oBbf/aAW//2gFw/9oBcf/aAm7/8AJv//ACcP/wAnH/8AJy//ACff/vAn7/7wJ//+8CgP/vAoH/3AKC/9wCiv/wAoz/8AKO//ACkP/wApL/8AKU//AClv/wApj/8AKa//ACnP/wAp7/8AKg//ACov/wAqT/8ALi/+8C5P/vAub/7wLo/+8C6v/vAuz/7wLw/9wDa//wA2//7wNz/9wDdv/v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//UA1f/xANn/9ADc//UA3f/zARj/9AEy//EBOv/xAVH/9QJm//AC2//xAt3/8QLf//EC7//wAvH/8ANY//ADZ//wA2j/9ANq//ADgv/zA47/8QOP//QDpv/wA7f/9AO///ADwv/0A9D/9APg//MD4v/zA+T/8wPq//QD7f/1BEH/8ARD//AERf/wBE3/8QRP//QEV//0BGj/9QRq//AAWQAlAA8AOP/mADr/5gA8AA4APf/mALEADwCzAA8A0f/mANMADgDV/+YA2QAOANwADgDdAAsA4P/lAPEADwD4/+gBAwAPAQwADwEY/+YBMv/mATr/5gFRAA4CTAAPAk0ADwJOAA8CTwAPAlAADwJRAA8CUgAPAmb/5gKDAA8ChQAPAocADwLb/+YC3f/mAt//5gLv/+YC8f/mA1MADwNY/+YDWwAPA2f/5gNoAA4Dav/mA4IACwODAA8Djv/mA48ADgOm/+YDrwAPA7f/5gO//+YDwgAOA8UADwPHAA8D0AAOA+AACwPiAAsD5AALA+b/5QPn/+gD6gAOA+0ADgPuAA8D7wAPA/EADwPzAA8D9QAPA/cADwP5AA8D+wAPA/0ADwP/AA8EAQAPBAMADwQFAA8EQf/mBEP/5gRF/+YETf/mBE8ADgRR/+UEUv/oBFP/5QRU/+gEVwAOBGgADgRpAA8Eav/mAC4AOP/jADz/5QA9/+QA0f/jANP/5QDV/+MA2f/lANz/5QDd/+kA8f/qAQP/6gEy/+MBOv/jAVH/5QJm/+QC2//jAt3/4wLf/+MC7//kAvH/5ANY/+QDZ//kA2j/5QNq/+QDgv/pA47/4wOP/+UDpv/kA7//5APC/+UD0P/lA+D/6QPi/+kD5P/pA+r/5QPt/+UD7v/qBEH/5ARD/+QERf/kBE3/4wRP/+UEV//lBGj/5QRp/+oEav/kACEAOP/iADz/5ADR/+IA0//kANX/4gDZ/+QA3P/kAN3/6QDx/+sBA//rATL/4gE6/+IBUf/kAtv/4gLd/+IC3//iA2j/5AOC/+kDjv/iA4//5APC/+QD0P/kA+D/6QPi/+kD5P/pA+r/5APt/+QD7v/rBE3/4gRP/+QEV//kBGj/5ARp/+sAFwA4/+sAPf/zANH/6wDV/+sBMv/rATr/6wJm//MC2//rAt3/6wLf/+sC7//zAvH/8wNY//MDZ//zA2r/8wOO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ABgEJwQnAAMEKAQoABgEMAQwABgEMwQzAAwENQQ1AAwEQQRBAA8EQgRCABkEQwRDAA8ERAREABkERQRFAA8ERgRGABkESQRJAAkESwRLAAIETQRNAAYETwRPAA4EUARQABsEVQRVAAcEVgRWAAgEVwRXAA4EWARYABsEWwRbABcEXQRdAB8EXgReAAcEYARgAAkEZARkAAIEZgRmAAIEagRqAA8EqgSqAAMAAgFtAAYABgAHAAsACwAHABAAEAATABEAEQAXABIAEgATACUAJQARACcAJwAFACsAKwAFAC4ALgAcADMAMwAFADUANQAFADcANwAZADgAOAAKADkAOQAGADoAOgANADsAOwAJADwAPAASAD0APQAOAD4APgAUAEUARQAaAEcASQAVAEsASwAVAFEAUgAYAFMAUwAIAFQAVAAYAFUAVQAVAFcAVwAbAFkAWQALAFoAWgACAFwAXAAWAF0AXQACAF4AXgAMAIMAgwAFAJIAkgAFAJMAkwAVAJcAlwAFAJgAmAAVAJoAmgALALEAsQARALIAsgAFALMAswARALoAugAVALwAvAACAMAAwAAYAMcAyAAVAMoAygALANEA0QAKANIA0gAFANMA0wABANUA1QAKANkA2QASANwA3AABAN0A3QAQAOAA4AAPAOsA6wAYAO0A7QAWAO8A8AAYAPEA8QAEAPIA9AAYAPYA9gAVAPcA9wAYAPgA+AADAPkA+gAYAP0A/QAYAP8A/wAYAQIBAgAVAQMBAwAEAQQBBAAYAQcBBwAFAQwBDAARARYBFgAFARcBFwAIARgBGAANARkBGQACARoBGgAFARwBHAAFAR0BHQAVAR4BHgAFASABIAAFASEBIQAVATIBMgAKATUBNQAYATgBOAAFATkBOQAVAToBOgAKAUQBRAAYAUkBSQAYAUsBTAAVAVEBUQABAVUBVQAFAVYBVgAVAWkBagAXAWwBbQAHAW4BbgATAW8BcQAHAXIBcgATAXYBdwATAigCKQAFAisCLAAFAkYCRgAXAkwCUgARAlMCUwAFAl0CYQAFAmICZQAGAmYCZgAOAmcCbQAaAm4CcgAVAncCdwAYAngCfAAIAn0CgAALAoECggACAoMCgwARAoQChAAaAoUChQARAoYChgAaAocChwARAogCiAAaAokCiQAFAooCigAVAosCiwAFAowCjAAVAo0CjQAFAo4CjgAVAo8CjwAFApACkAAVApICkgAVApQClAAVApYClgAVApgCmAAVApoCmgAVApwCnAAVAp0CnQAFAp4CngAVAp8CnwAFAqACoAAVAqECoQAFAqICogAVAqMCowAFAqQCpAAVArICsgAcAr8CvwAYAsECwQAYAsMCxAAYAsUCxQAFAsYCxgAIAscCxwAFAsgCyAAIAskCyQAFAsoCygAIAtEC0QAZAtIC0gAbAtMC0wAZAtQC1AAbAtUC1QAZAtYC1gAbAtcC1wAZAtgC2AAbAtkC2QAZAtoC2gAbAtsC2wAKAt0C3QAKAt8C3wAKAuEC4QAGAuIC4gALAuMC4wAGAuQC5AALAuUC5QAGAuYC5gALAucC5wAGAugC6AALAukC6QAGAuoC6gALAusC6wAGAuwC7AALAu0C7QAJAu8C7wAOAvAC8AACAvEC8QAOAvIC8gAUAvMC8wAMAvQC9AAUAvUC9QAMAvYC9gAUAvcC9wAMAvoC+gAFA1MDUwARA1cDVwAFA1gDWAAOA1sDWwARA14DXgAUA2QDZAAFA2cDZwAOA2gDaAASA2oDagAOA2sDawAVA20DbQAYA28DbwALA3EDcQAIA3MDcwACA3YDdgALA3cDdwAIA3gDeAALA38DfwAcA4IDggAQA4MDgwARA4oDigAFA40DjQAFA44DjgAKA48DjwASA5ADkAAaA5EDkQAVA5IDkgAYA5MDkwAIA5QDlAAYA5UDlQAVA5YDlgACA5cDlwAWA5gDmAAVA5kDmQAYA5oDmgAbA54DngAYA58DnwACA6ADoAAJA6IDogAJA6QDpAAJA6YDpgAOA6cDpwACA6gDqQAHA6wDrAAHA64DrgAYA68DrwARA7ADsAAaA7MDswAVA7QDtAAYA7cDtwANA7gDuAACA7kDuQAVA7oDugAFA70DvQAFA74DvgAVA78DvwAOA8ADwAACA8IDwgASA8MDwwAWA8UDxQARA8YDxgAaA8cDxwARA8gDyAAaA8wDzAAVA84DzwAVA9AD0AASA9ED0QAWA9UD1QAYA9cD1wAYA9gD2AAFA9kD2QAIA9oD2gAFA9sD2wAVA9wD3AAFA90D3QAIA+AD4AAQA+ED4QACA+ID4gAQA+MD4wACA+QD5AAQA+UD5QACA+YD5gAPA+cD5wADA+kD6QAYA+oD6gASA+sD6wAWA+wD7AAVA+0D7QABA+4D7gAEA+8D7wARA/AD8AAaA/ED8QARA/ID8gAaA/MD8wARA/QD9AAaA/UD9QARA/YD9gAaA/cD9wARA/gD+AAaA/kD+QARA/oD+gAaA/sD+wARA/wD/AAaA/0D/QARA/4D/gAaA/8D/wARBAAEAAAaBAEEAQARBAIEAgAaBAMEAwARBAQEBAAaBAUEBQARBAYEBgAaBAgECAAVBAoECgAVBAwEDAAVBA4EDgAVBBAEEAAVBBIEEgAVBBQEFAAVBBYEFgAVBBsEGwAFBBwEHAAIBB0EHQAFBB4EHgAIBB8EHwAFBCAEIAAIBCEEIQAFBCIEIgAIBCMEIwAFBCQEJAAIBCUEJQAFBCYEJgAIBCcEJwAFBCgEKAAIBCkEKQAFBCoEKgAVBCsEKwAFBCwELAAVBC0ELQAFBC4ELgAVBC8ELwAFBDAEMAAIBDEEMQAFBDIEMgAVBDMEMwAGBDQENAALBDUENQAGBDYENgALBDgEOAALBDoEOgALBDwEPAALBD4EPgALBEAEQAALBEEEQQAOBEIEQgACBEMEQwAOBEQERAACBEUERQAOBEYERgACBEoESgAYBEwETAAYBE0ETQAKBE8ETwASBFAEUAAWBFEEUQAPBFIEUgADBFMEUwAPBFQEVAADBFYEVgAYBFcEVwASBFgEWAAWBGMEYwAYBGUEZQAYBGcEZwAYBGgEaAABBGkEaQAEBGoEagAOBHAEcAAXBKoEqgAFAAEAAAAKAgYG8AAEREZMVAAaY3lybABIZ3JlawB2bGF0bgCkAAQAAAAA//8AEgAAAAoAFAAeACgANABBAEsAVQBfAGkAcwB9AIcAkQCbAKUArwAEAAAAAP//ABIAAQALABUAHwApADUAQgBMAFYAYABqAHQAfgCIAJIAnACmALAABAAAAAD//wASAAIADAAWACAAKgA2AEMATQBXAGEAawB1AH8AiQCTAJ0ApwCxACgABkFaRSAAVENSVCAAfk1PTCAAqE5BViAA1FJPTSABAFRVUiABLAAA//8AEwADAA0AFwAhACsAMgA3AEQATgBYAGIAbAB2AIAAigCUAJ4AqACyAAD//wASAAQADgAYACIALAA4AEUATwBZAGMAbQB3AIEAiwCVAJ8AqQCzAAD//wASAAUADwAZACMALQA5AEYAUABaAGQAbgB4AIIAjACWAKAAqgC0AAD//wATAAYAEAAaACQALgA6AD4ARwBRAFsAZQBvAHkAgwCNAJcAoQCrALUAAP//ABMABwARABsAJQAvADsAPwBIAFIAXABmAHAAegCEAI4AmACiAKwAtgAA//8AEwAIABIAHAAmADAAPABAAEkAUwBdAGcAcQB7AIUAjwCZAKMArQC3AAD//wATAAkAEwAdACcAMQAzAD0ASgBUAF4AaAByAHwAhgCQAJoApACuALgAuWMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmxpZ2EEfGxpZ2EEhGxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxvY2wEkGxvY2wElmxvY2wEnG51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqHBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5AAAAAEAAAAAAAIAAgADAAAAAQAHAAAAAQAYAAAAAwAVABYAFwAAAAIACAAJAAAAAQAJAAAAAQAUAAAAAQAEAAAAAQAGAAAAAQAFAAAAAQAZAAAAAQARAAAAAQATAAAAAQABAAAAAQAKAAAAAQALAAAAAQAMAAAAAQANAAAAAQAOAAAAAQAPAAAAAQAQAAAAAQASABsAOAPGBrQHYA3wDfAOBg4oDl4OhA6yDsYO2g7uDwAPGg9cD3oPmA/KD/wQLhBCEHoQbBB6EKYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCRAI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTdAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYB/wTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNgE2QTbAhoE3AIOBNcCEwINBNoCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkcCSAJKAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CrwKyArQCtgK4AroCvAK+AsACwgLFAscCyQLLAs0CzwLRAtMC1QLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvIC9AL2A1MDVANVA1YDVwNYA1kDWwNcA10DXgNfA2ADYQNiA2QDZQNmA2cDaANpA2oDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwO7A70DvwPUA9oD4ARJBEsETwRXBFkEXgRqAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAv0DMAI7AfoEygTLAfsB/AH9Af4B/wIABM4EzwTRBNQE3QICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZA08DGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNQA1EDUgTJBMwEzQTQBNIE0wIBBNUEwQTCBMMExATFBMYExwTIBNYE2ATZAhgE2wIaBNwC/AIOBNcCEwINBNoCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSwJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoQChgKIAooCjAKOApACkgKUApYCmAKaApwCngKgAqICpAKmAqgCqgKsAq4CswK1ArcCuQK7Ar0CvwLBAsMCxgLIAsoCzALOAtAC0gLUAtYC2gLcAt4C4ALiAuQC5gLoAuoC7ALuAvAC8wL1AvcDkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwO8A74DwAPOA9UD2wPhBEcESgRMBFAEWARaBFsEXwRrAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAAAaAAEAAQBNAAMAAAABABIAAQB4AAEAAAAaAAEAAQBOAAMAAAABABIAAQBgAAEAAAAaAAEAAQKuAAMAAAABABIAAQBIAAEAAAAaAAEAAQObAAMAAAABABIAAQAwAAEAAAAaAAEAAQOdAAMAAAABABIAAQAYAAEAAAAaAAEAAQQaAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCTAACAKcCTQACAKgCTwACAKkD8QACAKoEewACAKsD7wACAKwAAQAEBIgAAgCsAAEABAKJAAIAqAACAAYADASKAAIArASMAAIBogAGAA4AFAAaACAAJgAsAlQAAgCnAlUAAgCoBAsAAgCpBAkAAgCqBH0AAgCrBAcAAgCsAAIABgAMBHcAAgCoAqMAAgGiAAEABASOAAIArAAGAA4AFAAaACAAJgAsAlgAAgCnAlkAAgCoAqcAAgCpBBcAAgCqBH8AAgCrBBkAAgCsAAMACAAOABQEkAACAKgEkgACAKwCtAACAaIAAwAIAA4AFAK2AAIAqASUAAIArAK4AAIBogACAAYADAOtAAIAqASWAAIArAAFAAwAEgAYAB4AJAR5AAIApwK+AAIAqAJcAAIAqQSYAAIArALAAAIBogAGAA4AFAAaACAAJgAsAl0AAgCnAl4AAgCoAmAAAgCpBB0AAgCqBIEAAgCrBBsAAgCsAAEABASaAAIAqAAEAAoAEAAWABwCywACAKgEgwACAKsEnAACAKwCzQACAaIAAwAIAA4AFALRAAIAqASeAAIArALXAAIBogACAAYADASgAAIArALbAAIBogAGAA4AFAAaACAAJgAsAmIAAgCnAmMAAgCoAuEAAgCpBDUAAgCqBIUAAgCrBDMAAgCsAAIABgAMBKIAAgCpBKQAAgCsAAMACAAOABQDoAACAKcDogACAKgEpgACAKwABQAMABIAGAAeACQDpgACAKcCZgACAKgERQACAKkEQwACAKoEQQACAKwAAgAGAAwC8gACAKgEqAACAKwABgAOABQAGgAgACYALAJnAAIApwJoAAIAqAJqAAIAqQPyAAIAqgR8AAIAqwPwAAIArAABAAQEiQACAKwAAQAEAooAAgCoAAIABgAMBIsAAgCsBI0AAgGiAAYADgAUABoAIAAmACwCbwACAKcCcAACAKgEDAACAKkECgACAKoEfgACAKsECAACAKwAAQAEBHgAAgCoAAEABASPAAIArAABAAQEGgACAKwAAwAIAA4AFASRAAIAqASTAAIArAK1AAIBogADAAgADgAUArcAAgCoBJUAAgCsArkAAgGiAAIABgAMA64AAgCoBJcAAgCsAAUADAASABgAHgAkBHoAAgCnAr8AAgCoAncAAgCpBJkAAgCsAsEAAgGiAAYADgAUABoAIAAmACwCeAACAKcCeQACAKgCewACAKkEHgACAKoEggACAKsEHAACAKwAAQAEBJsAAgCoAAQACgAQABYAHALMAAIAqASEAAIAqwSdAAIArALOAAIBogADAAgADgAUAtIAAgCoBJ8AAgCsAtgAAgGiAAIABgAMBKEAAgCsAtwAAgGiAAYADgAUABoAIAAmACwCfQACAKcCfgACAKgC4gACAKkENgACAKoEhgACAKsENAACAKwAAgAGAAwEowACAKkEpQACAKwAAwAIAA4AFAOhAAIApwOjAAIAqASnAAIArAAFAAwAEgAYAB4AJAOnAAIApwKBAAIAqARGAAIAqQREAAIAqgRCAAIArAACAAYADALzAAIAqASpAAIArAABAAQC+AACAKgAAQAEAvoAAgCoAAEABAL5AAIAqAABAAQC+wACAKgABQAMABIAGAAeACQCcwACAKcCdAACAKgCqAACAKkEGAACAKoEgAACAKsABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQELAACAKcEKgACAKgEMAACAKkELgACAKoEMgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwABQAMABIAGAAeACQEOgACAKcEOAACAKgEPgACAKkEPAACAKoEQAACAKwAAQAEBIcAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLVAtYAAQAAAAEACAACAA4ABATeBN8E4AThAAEABAKHAogCmQKaAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiECIgGuAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAiIAAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIwRxBHIEcwR0BHUEdgABAAAAAQAIAAIAFgAIBHYCIwRxBHIEcwR0Aa0EdQABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAAAaAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwJDAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKuA5sDnQQa",
+  "Roboto-Medium.ttf": "AAEAAAARAQAABAAQR1BPU32qcYwAAgioAABZDEdTVUJMnCjgAAJhtAAAGWhPUy8yoQuxtgAAAZgAAABgY21hcEAmSHIAABpsAAASyGN2dCAElytKAAAvvAAAAFZmcGdte/lhqwAALTQAAAG8Z2FzcAAIABMAAgicAAAADGdseWaunmLpAAA53AABy8xoZG14PT88IAAAFYAAAATsaGVhZPh7qwgAAAEcAAAANmhoZWEK7wqbAAABVAAAACRobXR4JPNE9QAAAfgAABOIbG9jYd3eZq0AADAUAAAJxm1heHAHEgL1AAABeAAAACBuYW1lPWNvTAACBagAAALUcG9zdP9tAGQAAgh8AAAAIHByZXAbsfg2AAAu8AAAAMwAAQAAAAIAABFApG1fDzz1ABsIAAAAAADE8BEuAAAAANDbTpT6JP3VCVwIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJa/ok/kEJXAABAAAAAAAAAAAAAAAAAAAE4gABAAAE4gCPABYATgAFAAEAAAAAAA4AAAIAAhYABgABAAMElQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAK/1AAIX8AAAAhAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwACAAIAACA4wAZAAAAAAAAAAAAf4AAAH+AAACJQCPApgAZQTiAGAEjABkBeAAYwUdAFYBWgBSAsoAgALSACgDiQAbBHUARAHCABwCoABHAjwAhwMqAAIEjABpBIwAqASMAFEEjABPBIwANASMAIEEjAB1BIwARQSMAGgEjABdAh8AggHnAC4EEQA/BHoAkQQqAIAD5AA8BygAWwVTABIFDACUBTkAZgU6AJQEhgCUBGUAlAVyAGoFrwCUAkIAowRxAC0FCwCUBFQAlAcBAJQFrgCUBYYAZgUdAJQFhgBgBP4AlATUAEoE2wAtBTcAfQUtABIHCgAwBRAAKQTgAAcE0QBQAjEAhANYABQCMQAMA2sANQOcAAMClAAxBFQAWgSBAHwEMABPBIQATwRLAFMC1gAtBIkAUgRxAHkCCwB9AgH/tQQtAH0CCwCMBvYAfARzAHkEjgBPBIEAfASLAE8C0AB8BCEASwKpAAgEcgB3A/UAFgXyACEEBgAfA+UADAQGAFICrwA4AgIArgKvABsFUQB1Ah4AhgR9AGQEtQBeBZ0AXQTgABkB/ACIBPgAWgOFAF0GRABXA5EAjQPiAFcEbQB/BkQAVwPbAIcDCgB/BEoAXwL2ADwC9gA3ApsAcAS7AJID7QBFAkIAjgIQAG0C9gCAA6cAdwPiAF0F0ABZBisAUAZXAGcD5ABCB4X/9gREAE0FhABpBMoAlATnAIgGwQBIBKcAZwSRAEMEiABPBJcAggWwAB8CGgCPBJgAjgRkACICTwAhBZMAkASIAH4HtABkBzoAWwIMAIsFiABRAtD/5AWKAFgEngBPBaQAfQTyAHcCJv+1BDwAWQPmAJQDsAByA9wAhwN8AHUCCwCBArIAeAJNACkD2AB6Ax8ASQJsAIIAAPyOAAD9XgAA/HMAAP0+AAD8DAAA/RwCXQDGBDwAZwJCAI4EdQCbBb8AGQV6AFsFOAAgBJAAbAWxAJsEkABHBe8ASgWqAEQFWwBrBIQAVgTGAJYEDgAgBIgAVARgAGAEGgBhBIgAfgShAHMCqgCpBGoAFgQTAGQE8wAtBIgAgAQ3AFIEkABSBC0APwRgAIAF0ABEBckATwaUAGYEswB2BHv/4QZxADMF/gAiBVkAaAiIAC0IjwCbBlsAMQWqAJIFCACQBgYAJAeiABYE1gBJBagAlAWpAC0FCgA5Bl8ATwX5AJIFiQCOB5sAmAf5AJgGGgAYBvkAmwUHAJAFUABrB1QAoAT3ACAEfQBbBI8AjwNaAIUE9gAnBnYAHgQWAE0EmACGBG4AjwSaACEGAwCPBJcAhgSYAIYD9QAjBdMAVATTAIYEZgBfBo4AhgbsAH4FFwAfBm8AjwRoAI8EPABRBoQAkQRwACcEcf/bBDwAVAbRAB4G5ACGBIn/7gSYAIYHSQCIBk8AcARn/+AHKACYBgEAhgUMABwEYAAKB0IArAY2AJ0G7QCABeYAggkyAKMH+QCPBCAAKAPwADMFegBfBIgATwUaABAEDgAgBXoAXwSIAE8HRQCIBkQAdAdJAIgGTwBwBRoAZgRKAFwE/wBtAAD8ZgAA/HMAAP17AAD9pQAA+iQAAPpNBGf/4AUTAJQEhgB8BGoAjwOhAH4EtwCbBCAAfgUsAJAEqwCOBpUANAWkAD0H0ACUBaoAfghHAJsG9QB+BioAZwT/AGEHMQAtBXAAJgV0AIAEcwB0BYcAhQYkABYEw//LBSEAkAR4AI4FrwCbBIgAfgWIAFEEpgBbBKYAXQTHADQDUwAtBQcAUgbxAGgG3QBeBlMAPAUoAC8EewBIBD4AdAe+AEIGnQBAB/0AlAaeAHcFBABdBCwAVQWqACEFHQBEBVUAgQMsAGcEFAAACCkAAAQUAAAIKQAAArkAAAIKAAABXAAABH8AAAIwAAABogAAANEAAAAAAAACoQBHAqEARwUpAJ0GMACBA50ABAHAAGMBvAAzAc4AMgGoAEoDFABsAxsAQAMIADIEXQBABJkAXALLAIgD+gCKBaYAigFsAEcHpwBKAnIAbAJpAFQDnAAtAvYANQNcAGkEtQBfBnAAIQa4AJgIkwCUB4gANQaMAHwEjABeBfUAIQQ0ACgEogAhBV4ATwV9ACgF5ABwA+IATAguAJAFCQBtBRQAlgY1AFkG3QBUBtEAWwaiAFgEkQBiBZYApgTZAEAEgwCeBLIAOwhFAF4CLf+vBI4AZQR6AJEEEQA8BCoAgAQMACQCWwChApgAYwHxAEUFGwAtBKgAGAS8AC0HIwAtByMALQURAC0GtwBLAAAAAAgwAFkINQBcBDMAOgSTAE8CEP+wAbMAXAOhAHUDoQB1A6EAdQQLAHUECwB1BAv/TAQLAHoDoQB1AgUAlASeAAkEYAB2BIAATwR6AHYD4AB2A8UAdgSmAFQE3gB2AfwAhQPVACQEWwB2A7kAdgYGAHYE3QB2BMAATwRtAHYEwABMBFwAdgQ0AD4EOwAkBIQAZwR7AAkGBwAoBF4AFQQ8AAUEKgBBAvYASwL2AIAC9gA8AvYANwL2ADUC9gBPAvYATQL2ADYC9gBLAvYARgO5AJACsgCWBDsACgS7AFYFRACbBSgAmwQwAIEFOQCbBC0AgQQ0AD4EZgA4BE0ADgO5AHYEewAJBMAATwR7AAkDmABCBNgAdgQZAEQFnQBQBVQAUATkAF8FkQAkBIAATwdUACQHVwB2BZcAJATXAHYEcQB2BVkAJwY6ABoERgBCBOQAdgRcAHYEywAkBEYAHwVdAHYEjABBBoQAdgcKAHYFWgAKBiAAdgRnAHYEgAA8BpIAdgSIAEMEIgAKBpIAGgSdAHYFGgB2BW4AJAXwAE8EWgAFBMQAFQaVACQEjABBBIwAdgX+AAoE0gBPBEYAQgTAAE8EZgA4A/cARgg2AHYE6wAoBIgAfAQ9AFAEmABPA6QAWwShAEwElAB8BJ8ATwRLAFMEiQBRBXoAawWiAGsFhgCbBeAAawXiAGsEGwCXBIIAbgO5AHYEVwAPBL4ANQL2AEsC9gA1AvYATwL2AE0C9gA2AvYASwL2AEYEawBmBC4AQwaYAE8EtABzBOsAYgIm/7UCJv+1AhsAjwIb//sCGwCPBGAAdgH+AAACoABHBVj/9wVY//cEj//UBNsALQKp/+gFUwASBVMAEgVTABIFUwASBVMAEgVTABIFUwASBTkAZgSGAJQEhgCUBIYAlASGAJQCQv/IAkIAowJC/8sCQv+/Ba4AlAWGAGYFhgBmBYYAZgWGAGYFhgBmBTcAfQU3AH0FNwB9BTcAfQTgAAcEVABaBFQAWgRUAFoEVABaBFQAWgRUAFoEVABaBDAATwRLAFMESwBTBEsAUwRLAFMCGv+0AhoAjwIa/7cCGv+rBHMAeQSOAE8EjgBPBI4ATwSOAE8EjgBPBHIAdwRyAHcEcgB3BHIAdwPlAAwD5QAMBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBTkAZgQwAE8FOQBmBDAATwU5AGYEMABPBTkAZgQwAE8FOgCUBRoATwSGAJQESwBTBIYAlARLAFMEhgCUBEsAUwSGAJQESwBTBIYAlARLAFMFcgBqBIkAUgVyAGoEiQBSBXIAagSJAFIFcgBqBIkAUgWvAJQEcQB5AkL/swIa/58CQv+5Ahr/pQJC/98CGv/LAkIAFwILAAACQgCdBrMAowQMAH0EcQAtAib/tQULAJQELQB9BFQAlAILAIoEVACUAgsAVQRUAJQCoQCMBFQAlALnAIwFrgCUBHMAeQWuAJQEcwB5Ba4AlARzAHkEc/+lBYYAZgSOAE8FhgBmBI4ATwWGAGYEjgBPBP4AlALQAHwE/gCUAtAATwT+AJQC0AA4BNQASgQhAEsE1ABKBCEASwTUAEoEIQBLBNQASgQhAEsE1ABKBCEASwTbAC0CqQAIBNsALQKpAAgE2wAtAtEACAU3AH0EcgB3BTcAfQRyAHcFNwB9BHIAdwU3AH0EcgB3BTcAfQRyAHcFNwB9BHIAdwcKADAF8gAhBOAABwPlAAwE4AAHBNEAUAQGAFIE0QBQBAYAUgTRAFAEBgBSB4X/9gbBAEgFhABpBIgATwR6/6YEev+mBDsAJASeAAkEngAJBJ4ACQSeAAkEngAJBJ4ACQSeAAkEgABPA+AAdgPgAHYD4AB2A+AAdgH8/6YB/ACDAfz/qQH8/50E3QB2BMAATwTAAE8EwABPBMAATwTAAE8EhABnBIQAZwSEAGcEhABnBDwABQSeAAkEngAJBJ4ACQSAAE8EgABPBIAATwSAAE8EegBqA+AAdgPgAHYD4AB2A+AAdgPgAHYEpgBUBKYAVASmAFQEpgBUBN4AdgH8/5EB/P+XAfz/vQH8ABUB/AB8A9UAJARbAHYDuQB2A7kAdgO5AHYDuQB2BN0AdgTdAHYE3QB2BMAATwTAAE8EwABPBFwAdgRcAHYEXAB2BDQAPgQ0AD4ENAA+BDQAPgQ7ACQEOwAkBDsAJASEAGcEhABnBIQAZwSEAGcEhABnBIQAZwYHACgEPAAFBDwABQQqAEEEKgBBBCoAQQVTABIE6v9KBhP/UwKm/1YFmv+nBUT+4QVv/7ICqv+HBVMAEgUMAJQEhgCUBNEAUAWvAJQCQgCjBQsAlAcBAJQFrgCUBYYAZgUdAJQE2wAtBOAABwUQACkCQv+/BOAABwSEAFYEYABgBIgAfgKqAKkEYACABJgAjgSOAE8EuwCSA/UAFgQGAB8Cqv/MBGAAgASOAE8EYACABpQAZgSGAJQEdQCbBNQASgJCAKMCQv+/BHEALQUoAJsFCwCUBQoAOQVTABIFDACUBHUAmwSGAJQFqACUBwEAlAWvAJQFhgBmBbEAmwUdAJQFOQBmBNsALQUQACkEVABaBEsAUwSYAIYEjgBPBIEAfAQwAE8D5QAMBAYAHwRLAFMDWgCFBCEASwILAH0CGv+rAgH/tQRuAI8D5QAMBwoAMAXyACEHCgAwBfIAIQcKADAF8gAhBOAABwPlAAwBWgBSApgAZQRKAI8CJv+xAbwAMwcBAJQG9gB8BVMAEgRUAFoEhgCUBagAlARLAFMEmACGBaoARAXJAE8FGgAQBA7/8QhzAE8JawBmBNYASQQWAE0FOQBmBDAATwTgAAcEDgAgAkIAoweiABYGdgAeAkIAowVTABIEVABaBVMAEgRUAFoHhf/2BsEASASGAJQESwBTBYgAUQQ8AFkEPABZB6IAFgZ2AB4E1gBJBBYATQWoAJQEmACGBagAlASYAIYFhgBmBI4ATwV6AF8EiABPBXoAXwSIAE8FUABrBDwAUQUKADkD5QAMBQoAOQPlAAwFCgA5A+UADAWJAI4EZgBfBvkAmwZvAI8FEAApBAYAHwSEAE8FqQAtBJoAIQVTABIEVABaBVMAEgRUAFoFUwASBFQAWgVTABAEVP+aBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBVMAEgRUAFoFUwASBFQAWgSGAJQESwBTBIYAlARLAFMEhgCUBEsAUwSGAJQESwBTBIb/1QRL/44EhgCUBEsAUwSGAJQESwBTBIYAlARLAFMCQgCjAhoAjwJCAJQCCwB4BYYAZgSOAE8FhgBmBI4ATwWGAGYEjgBPBYYAJwSO/6MFhgBmBI4ATwWGAGYEjgBPBYYAZgSOAE8FigBYBJ4ATwWKAFgEngBPBYoAWASeAE8FigBYBJ4ATwWKAFgEngBPBTcAfQRyAHcFNwB9BHIAdwWkAH0E8gB3BaQAfQTyAHcFpAB9BPIAdwWkAH0E8gB3BaQAfQTyAHcE4AAHA+UADATgAAcD5QAMBOAABwPlAAwEogBPBKIATwUoAJsEbgCPBa8AlASXAIYE2wAtA/UAIwUQACkEBgAfBYkAjgRmAF8FiQCOBGYAXwR1AJsDWgCFB6IAFgZ2AB4GJAAWBMP/ywRxAHkFB//QBQf/0AR1//ADWv/iBTz/4wRE/64FqACUBJgAhgWvAJQElwCGBwEAlAYDAI8FqQAtBJoAIQTgAAcEDgAgBRAAKQQGAB8EYABgBGUAAgYwAIEEjABRBIwATwSMADQEjACBBKAAXQS0AH0FcgBqBIkAUgWuAJQEcwB5BVMAEgRUAA0EhgBIBEsAAQJC/vYCGv7iBYYAZgSOABYE/gAyAtD/bgU3AHEEcgAPBN/+rAUMAJQEgQB8BToAlASEAE8FOgCUBIQATwWvAJQEcQB5BQsAlAQtAH0FCwCUBC0AfQRUAJQCCwB4BwEAlAb2AHwFrgCUBHMAeQUdAJQEgQB8BP4AlALQAHIE1ABKBCEASwTbAC0CqQAIBS0AEgP1ABYFLQASA/UAFgcKADAF8gAhBNEAUAQGAFIFzP4cBJ4ACQQc/yoFGv83Ajj/OQTK/5MEeP7oBO7/pASeAAkEYAB2A+AAdgQqAEEE3gB2AfwAhQRbAHYGBgB2BMAATwRtAHYEOwAkBDwABQReABUB/P+dBDwABQPgAHYDuQB2BDQAPgH8AIUB/P+dA9UAJARbAHYERgAfBJ4ACQRgAHYDuQB2A+AAdgTkAHYGBgB2BN4AdgTAAE8E2AB2BG0AdgSAAE8EOwAkBF4AFQRGAEIE3gB2BIAATwQ8AAUF/gAKBOQAdgRGAB8FnQBQBVMAEgRUAFoEhgCUBEsAUwIaAHgAAAABAAAE5AkLBAAAAgICAwYFBwYCAwMEBQIDAwQFBQUFBQUFBQUFAgIFBQUECAYGBgYFBQYGAwUGBQgGBgYGBgUFBgYIBgUFAgQCBAQDBQUFBQUDBQUCAgUCCAUFBQUDBQMFBAcFBAUDAgMGAgUFBgUCBgQHBAQFBwQDBQMDAwUEAwIDBAQHBwcECAUGBQYIBQUFBQYCBQUDBgUJCAIGAwYFBgYCBQQEBAQCAwMEBAMAAAAAAAADBQMFBgYGBQYFBwYGBQUFBQUFBQUDBQUGBQUFBQUHBwcFBQcHBgoKBwYGBwkFBgYGBwcGCQkHCAYGCAYFBQQGBwUFBQUHBQUEBwUFBwgGBwUFBwUFBQgIBQUIBwUIBwYFCAcIBwoJBQQGBQYFBgUIBwgHBgUGAAAAAAAABQYFBQQFBQYFBwYJBgkIBwYIBgYFBgcFBgUGBQYFBQUEBggIBwYFBQkHCQcGBQYGBgQFCQUJAwICBQICAQADAwYHBAICAgIDBAMFBQMEBgIJAwMEAwQFBwgKCAcFBwUFBgYHBAkGBgcICAcFBgUFBQkCBQUFBQUDAwIGBQUICAYIAAkJBQUCAgQEBAUFBQUEAgUFBQUEBAUFAgQFBAcFBQUFBQUFBQUHBQUFAwMDAwMDAwMDAwQDBQUGBgUGBQUFBQQFBQUEBQUGBgYGBQgIBgUFBgcFBgUFBQYFBwgGBwUFBwUFBwUGBgcFBQcFBQcFBQUFBAkGBQUFBAUFBQUFBgYGBwcFBQQFBQMDAwMDAwMFBQcFBgICAgICBQIDBgYFBQMGBgYGBgYGBgUFBQUDAwMDBgYGBgYGBgYGBgUFBQUFBQUFBQUFBQUCAgICBQUFBQUFBQUFBQQEBgUGBQYFBgUGBQYFBgUGBgUFBQUFBQUFBQUGBQYFBgUGBQYFAwIDAgMCAwIDCAUFAgYFBQIFAgUDBQMGBQYFBgUFBgUGBQYFBgMGAwYDBQUFBQUFBQUFBQUDBQMFAwYFBgUGBQYFBgUGBQgHBQQFBQUFBQUFCAgGBQUFBQUFBQUFBQUFBAQEBAICAgIFBQUF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AAADfwAABBsAAAQbAAAA3AAABBwAAAQiAAADhwAABCMAAAQkAAAA3QAABCUAAAQlAAADjgAABCYAAAQvAAAA3wAABDAAAAQwAAADjwAABDEAAAQ0AAAA6QAABDUAAAQ1AAADkAAABDYAAAQ4AAAA7QAABDkAAAQ5AAADkQAABDoAAAQ9AAAA8AAABD4AAAQ+AAADkgAABD8AAAQ/AAAA9AAABEAAAARBAAADkwAABEIAAARCAAAA9QAABEMAAARDAAADlQAABEQAAAREAAAA9gAABEUAAARFAAADlgAABEYAAARPAAAA9wAABFAAAARQAAADsgAABFEAAARRAAADlwAABFIAAARSAAABAQAABFMAAARTAAADmAAABFQAAARUAAABAgAABFUAAARYAAADmQAABFkAAARbAAABAwAABFwAAARcAAADnQAABF0AAARdAAADswAABF4AAAReAAADngAABF8AAARhAAABBgAABGIAAARiAAAEXAAABGMAAARvAAABCQAABHAAAARxAAADtAAABHIAAAR1AAABFgAABHYAAAR3AAADtgAABHgAAAR4AAADuQAABHkAAAR5AAADuAAABHoAAASGAAABGgAABIgAAASJAAABJwAABIoAAASLAAAEYQAABIwAAASMAAAEWwAABI0AAASRAAABKQAABJIAAASTAAAEXQAABJQAAASVAAABLgAABJYAAASXAAAEVgAABJgAAASZAAADugAABJoAAASbAAAESAAABJwAAASdAAABMAAABJ4AAASfAAAEXwAABKAAAAShAAABMgAABKIAAASjAAAESgAABKQAAASpAAABNAAABKoAAASrAAADvAAABKwAAAStAAAETAAABK4AAASvAAADvgAABLAAAASxAAAEaQAABLIAAASzAAAETgAABLQAAAS1AAABOgAABLYAAAS3AAAEUAAABLgAAAS6AAABPAAABLsAAAS7AAAEWgAABLwAAAS9AAABPwAABL4AAAS/AAAEWAAABMAAAATCAAADwAAABMMAAATEAAABQQAABMUAAATGAAAEZwAABMcAAATIAAABQwAABMkAAATKAAAEYwAABMsAAATMAAAEUgAABM0AAATOAAAEZQAABM8AAATXAAADwwAABNgAAATYAAABRQAABNkAAATZAAADzQAABNoAAATaAAADzAAABNsAAATfAAADzgAABOAAAAThAAABRgAABOIAAAT1AAAD0wAABPYAAAT3AAAEVAAABPgAAAT5AAAD5wAABPoAAAT7AAABSAAABPwAAAT9AAAD6QAABP4AAAT/AAAEawAABQAAAAUAAAABSgAABQEAAAUBAAAD6wAABQIAAAUQAAABSwAABREAAAURAAAEbQAABRIAAAUTAAAD7AAAHgAAAB4BAAADrgAAHj4AAB4/AAADrAAAHoAAAB6FAAADnwAAHqAAAB7xAAAD7gAAHvIAAB7zAAADpQAAHvQAAB75AAAEQAAAH00AAB9NAAAEqQAAIAAAACALAAABWwAAIBAAACARAAABZwAAIBMAACAUAAABaQAAIBUAACAVAAAEbwAAIBcAACAeAAABawAAICAAACAiAAABcwAAICUAACAnAAABdgAAIDAAACAwAAABeQAAIDIAACAzAAADpwAAIDkAACA6AAABegAAIDwAACA8AAADqQAAIEQAACBEAAABfAAAIHQAACB0AAABfQAAIH8AACB/AAABfgAAIKMAACCjAAAEbgAAIKQAACCkAAABfwAAIKYAACCqAAABgAAAIKsAACCrAAAERwAAIKwAACCsAAABhQAAILEAACCxAAABhgAAILkAACC6AAABhwAAILwAACC9AAABiQAAIQUAACEFAAABiwAAIRMAACETAAABjAAAIRYAACEWAAABjQAAISIAACEiAAABjgAAISYAACEmAAAAuQAAIS4AACEuAAABjwAAIVsAACFeAAABkAAAIgIAACICAAABlAAAIgYAACIGAAAAsQAAIg8AACIPAAABlQAAIhEAACISAAABlgAAIhoAACIaAAABmAAAIh4AACIeAAABmQAAIisAACIrAAABmgAAIkgAACJIAAABmwAAImAAACJgAAABnAAAImQAACJlAAABnQAAJcoAACXKAAABnwAA7gEAAO4CAAABoAAA9sMAAPbDAAABogAA+wEAAPsEAAABpAAA/v8AAP7/AAABqgAA//wAAP/9AAABq7AALEuwCVBYsQEBjlm4Af+FsIQdsQkDX14tsAEsICBFaUSwAWAtsAIssAEqIS2wAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbAELCBGsAQlRlJY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seix/7IWsi6yRbJcsnOyi7KdsrSyy7LisvmzEbMoszqzUbNps4Czl7Ops7+z1bPstAS0ELQctDO0RbRbtHK0iLSetLW0zbTetPW1B7UdtS61RrVdtW+1hbWcta61xbXcte22BLYbtoW3J7c5t0u3Yrd4t4+3pre4t8m327fruAK4E7gquEC4V7huuNu5crmJuZq5sbnHud659LoLuiK6LrpAule6abqAupK6qbrAute67rr5uwS7G7snuzO7Srthu227ebuQu6e7s7u/u9S76bv1vAG8GLwqvDa8QrxZvGq8f7yWvKe8vrzVvO29Bb0XvSm9Nb1BvVO9ZL12vYi9n721vcG9zb3ZveW9974IvhS+IL4svji+T75bvnK+iL6avrC+x77evvG/BL8cvy+/jb/vwAbAHcA0wErAYsB5wJDAp8C+wNDA4cD4wQrBIcE4wWjBmMGowb/B1sHswf3CFcItwjnCRcJcwnPCicKgwrfCzcLkwvzDDsMlwzfDTcNew3bDjcOkw7rD0sPpw//EFsR9xI/EpcS8xM3E3sT0xQrFIcWOxaTFusXRxejF9MYKxhzGM8ZKxlXGa8aCxo7GpMawxsXG0cboxvTHC8ccxzPHRsdYx2THdceHx53Hqce6x8bH3Mfox/7ID8gmyDnITMityMTI2sjxyQjJH8k1yUDJTMlYyWTJcMl8yYjJo8mrybPJu8nDycvJ08nbyePJ68nzyfvKA8oLyhPKK8pDylXKZ8p5yorKpMqsyrTKvMrEyszK5Mr7yw3LH8sxy0nLYMvOy9bL7sv2y/7MFcwszDTMPMxEzEzMY8xrzHPMe8yDzIvMk8ybzKPMq8yzzMrM0szazS7NNs0+zVXNbM10zXzNlM2czbPNyc3gzffODs4lzjjOS85iznPOh86mzrLOxM7MzuPO9c8Bzw3PJM87z1LPac9xz3nPkc+pz7XPwc/Nz9nP5c/xz/nQAdAJ0CDQN9A/0FbQbdCF0JzQpNCs0MPQ2dDx0PnRENEo0UDRWNFv0YbRnNG00czR5NH80gTSDNIk0jvSU9Jq0nzSjdKl0rzS1NLs0wTTG9M301PTX9Nr03PTf9OL05fTo9O108fT4NPy1AvUHdQw1ELUVdRn1HfUhtSZ1KvUvtTQ1OPU9dUI1RrVKtU61UbVUtVk1XbViNWZ1bLVxNXd1e/WAtYU1ifWOdZJ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CRCwBtCwBi+wAdCwAS8wMf//AI//8gPIBbAAJgAFAAAABwAFAiUAAP///7H+SwJzBd8CJgCbAAABBwCe/z//3gAJALAAL7AR3DAxAP//ADMEAAFlBgACBgFtAAD//wCUAAAGagc2AiYAMQAAAQcAdQKQATYAEwCwAEVYsAIvG7ECHz5ZsBHcMDEA//8AfAAABnkGAAImAFEAAAEHAHUCoAAAAAkAsAMvsCDcMDEA//8AEv5tBUIFsAImACUAAAAHAKYBegAD//8AWv5xA/sETgImAEUAAAAHAKYArQAH//8AlAAABEwHPQImACkAAAEHAEQA6AE9ABMAsABFWLAGLxuxBh8+WbAN3DAxAP//AJQAAAUNBz0CJgDbAAABBwBEAUoBPQATALAARViwCC8bsQgfPlmwC9wwMQD//wBT/+wECwYAAiYASQAAAQcARAChAAAAEwCwAEVYsAgvG7EIGz5ZsB/cMDEA//8AhgAABBIF8wImAO8AAAEHAEQAxP/zABMAsABFWLAILxuxCBs+WbAL3DAxAP//AEQAAAVcBbACBgC4AAD//wBP/iIFfgQ6AgYAzAAA//8AEAAABPMG/AImARgAAAEHAKsESQEOABYAsABFWLAPLxuxDx8+WbAR3LAV0DAx////8QAABBgF0AImARkAAAEHAKsD5f/iABYAsABFWLARLxuxERs+WbAT3LAX0DAx//8AT/5LCGQETgAmAFMAAAAHAF0EjgAA//8AZv5LCVwFxAAmADMAAAAHAF0FhgAA//8ASf46BH8FwwImANoAAAAHAbABkv+g//8ATf47A8QETQImAO4AAAAHAbABOf+h//8AZv4+BOsFxAImACcAAAAHAbAB1v+k//8AT/4+A/UETgImAEcAAAAHAbABSv+k//8ABwAABNYFsAIGAD0AAP//ACD+XwP1BDoCBgC8AAD//wCjAAABnwWwAgYALQAA//8AFgAAB5sHIwImANkAAAEHAKACHQE9ABMAsABFWLANLxuxDR8+WbAZ3DAxAP//AB4AAAZcBdkCJgDtAAABBwCgAYf/8wATALAARViwDS8bsQ0bPlmwGdwwMQD//wCjAAABnwWwAgYALQAA//8AEgAABUIHHAImACUAAAEHAKAA9gE2ABMAsABFWLAELxuxBB8+WbAO3DAxAP//AFr/7AP7BeYCJgBFAAABBwCg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ALAARViwBy8bsQcfPlmxDwn0sBXQMDEA//8AU//sBMgGfAImAEkAAAEGAbc97AAMALAIL7Ag3LAl0DAx////1QAABEwHtQImACkAAAEHAbYAiQEyABcAsABFWLAGLxuxBh8+WbEPCfSwFNAwMQD///+O/+wECwZ5AiYASQAAAQYBtkL2AAwAsAgvsB7csCXQMDH//wCUAAAEkgflAiYAKQAAAQcBtQCIARoADACwBi+wDNywE9AwMf//AFP/7ARLBqkCJgBJAAABBgG1Qd4ADACwCC+wHtywJdAwMf//AJQAAARMB90CJgApAAABBwG0AIkBDAAMALAGL7AM3LAT0DAx//8AU//sBAsGoQImAEkAAAEGAbRC0AAMALAIL7Ae3LAl0DAx//8AlP6eBEwHPgImACkAAAAnAJ0AiAE9AAcArATLAAr//wBT/pQECwYBAiYASQAAACYAnUEAAAcArASPAAD//wCjAAACEQfCAiYALQAAAQcAqgN4AUMACQCwAi+wBNwwMQD//wCPAAAB/QZ+AiYAjAAAAQcAqgNk//8ACQCwAi+wBNwwMQD//wCU/poBpwWwAiYALQAAAAcArAN4AAb//wB4/p4BkAXVAiYATQAAAAcArANcAAr//wBm/pQFHgXEAiYAMwAAAAcArAUdAAD//wBP/pIEPQROAiYAUwAAAAcArASd//7//wBm/+wFHge7AiYAMwAAAQcAqgUcATwACQCwFC+wH9wwMQD//wBP/+wEPQaFAiYAUwAAAQcAqgSYAAYACQCwBC+wG9wwMQD//wBm/+wFYQexAiYAMwAAAQcBtwDWASEADACwFC+wIdywJtAwMf//AE//7ATdBnwCJgBTAAABBgG3UuwADACwBC+wHdywItAwMf//ACf/7AUeB64CJgAzAAABBwG2ANsBKwAMALAUL7Af3LAm0DAx////o//sBD0GeQImAFMAAAEGAbZX9gAMALAEL7Ab3LAi0DAx//8AZv/sBR4H3gImADMAAAEHAbUA2gETAAwAsBQvsB/csCbQMDH//wBP/+wEYAapAiYAUwAAAQYBtVbeAAwAsAQvsBvcsCLQMDH//wBm/+wFHgfWAiYAMwAAAQcBtADbAQUADACwFC+wH9ywJtAwMf//AE//7AQ9BqECJgBTAAABBgG0V9AADACwBC+wG9ywItAwMf//AGb+lAUe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GzIcqB5aIBg63iFOIuA5MiUuOt463jb2Ot463iX4J5I5oChwKTIpwCoeKvg5KCuCOZAsTCx2Ldw23DBiMKAx0jOQNtwyVDLaMwQzWjOQN0A3+DakOCQztjbcOco5KDqMOow5KDaeM+A2njaeNp41UjV4NYI1jDWqNbw1zjXgNso7ijuKO4o7ijg+N0A3QDdAN0A3QDdAN0A2yjfYN9g32DfYOt463jreOt463juKO4o7ijuKO4o4HjgeOB44HjsAN7Y3tje2N7Y3tje2N7Y37jfuN+437jmWN/g3+Df4N/g3+DgkOCQ3QDe2N0A3tjdAN7Y2yjbKNso2yjuKN9g37jfYN+432DfuN9g37jfYN+463jmWOt463jreOt463jgeOow16jXqNeo16jreOZY63jmWOt45ljmWO4o3+DuKN/g7ijf4Nhg2GDYYOD44Pjg+OB44HjgeOB44HjgeNng7ADgkOwA2KjYqNio3QDfYOt463juKOwA3QDZMN9g2KjreOt46jDreOt47ijZWOD47ADkyOt47ADmWN/g4JDf4N9g5yjreOt44HjqMOow29jdANkw5yjfYOt463juKNlY2yjg+OTI3tjfuN/g23DgkOZA37jkoOCQ2eDZ4Nng7ADgkNp42njaeOt45ljdAN7Y32DfuNqQ4JDbKOwA4JDreOTI5kDreN0A3tjdAN7Y32DfuN+437jkyOZA7ijf4N/g23Db2OCQ29jgkNvY4JDkyOZA3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y32DfuN9g37jfYN+432DfuN9g37jfYN+432DfuN9g37jreOt47ijf4O4o3+DuKN/g7ijf4O4o3+DuKN/g7ijf4N/g4HjgeOwA4JDsAOCQ7ADgkOow63jg+OTI5kDnKOSg5MjmQOZY5oDnKOow63jreOwA7igACAIsABAAEAAAABgAGAAEACwAMAAIAEwATAAQAJQAqAAUALAA2AAsAOAA/ABYARQBGAB4ASQBKACAATABMACIATwBPACMAUQBUACQAVgBWACgAWABYACkAWgBdACoAXwBfAC4AigCKAC8AnACcADAAsAC0ADEAtgC4ADYAugC6ADkAvAC8ADoAvwDAADsAwgDCAD0AxADEAD4AxgDNAD8A0QDRAEcA0wDdAEgA3wDfAFMA4QDjAFQA5QDuAFcA8ADwAGEA9QD3AGIA+gD7AGUA/QD/AGcBAgEEAGoBCQEJAG0BDAEMAG4BFwEZAG8BIQEhAHIBKwEtAHMBMAEwAHYBMgEyAHcBSQFJAHgBbAFtAHkBbwFxAHsBugG6AH4BvQG9AH8BxAHFAIAByAHIAIIBygHLAIMBzQHNAIUCKAIoAIYCKgIrAIcCRgJHAIkCSQJJAIsCSwJsAIwCbgJxAK4CdgJ7ALICgAKIALgCigKKAMECjAKMAMICjgKOAMMCkAKQAMQCkgKbAMUCpAKmAM8CqAKoANICqgKqANMCrAKsANQCrgKuANUCsQKxANYCswKzANcCtQK1ANgCtwK3ANkCuQK5ANoCuwK7ANsCvQLJANwCywLLAOkCzQLNAOoCzwLPAOsC2gLaAOwC3ALcAO0C3gLeAO4C4ALgAO8C4gLiAPAC5ALkAPEC5gLmAPIC6ALoAPMC6gLqAPQC7ALsAPUC7gLxAPYC8wLzAPoC9QL1APsDUgNXAPwDWgNpAQIDbANsARIDcANwARMDcgNyARQDdgN2ARUDeQN6ARYDfAOFARgDhwOJASIDiwOQASUDkgOTASsDlQOYAS0DngOfATEDoQOhATMDowOjATQDpQOoATUDqwOwATkDsgOyAT8DtgO3AUADvAO8AUIDvgPHAUMDygPLAU0DzQPQAU8D1wPYAVMD3APcAVUD3gPkAVYD6QPqAV0D7gQWAV8EGAQYAYgEGgQnAYkELwQvAZcEMgQyAZgENAQ0AZkEQARFAZoESARIAaAESgRKAaEETARMAaIETgRPAaMEVARXAaUEWgRaAakEXARdAaoEXwRfAawEYwRjAa0EZQRlAa4EaQRpAa8EqQSpAbAACgA4/8QA0f/EANX/xAEy/8QBOv/EAtr/xALc/8QC3v/EA43/xARM/8QAFQA6ABQAOwAmAD0AFgEYABQCZQAWAuwAJgLuABYC8AAWA1cAFgNmABYDaQAWA58AJgOhACYDowAmA6UAFgO2ABQDvgAWBEAAFgRCABYERAAWBGkAFgABABP/CADOABD+7gAS/u4AJf9AAC7/MAA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFb/5gBZ/+oAWv/oAF3/6ACT/+sAmP/rAJr/6gCx/0AAs/9AALr/6wC8/+gAx//rAMj/6wDK/+oA0QAUANUAFAD2/+sBAv/rAQz/QAEX/+sBGf/oAR3/6wEh/+sBMgAUATn/6wE6ABQBS//rAUz/6wFW/+sBbv7uAXL+7gF2/u4Bd/7uAbr/wAJL/0ACTP9AAk3/QAJO/0ACT/9AAlD/QAJR/0ACZv/eAmf/3gJo/94Caf/eAmr/3gJr/94CbP/eAm3/6wJu/+sCb//rAnD/6wJx/+sCd//rAnj/6wJ5/+sCev/rAnv/6wJ8/+oCff/qAn7/6gJ//+oCgP/oAoH/6AKC/0ACg//eAoT/QAKF/94Chv9AAof/3gKJ/+sCi//rAo3/6wKP/+sCkf/rApP/6wKV/+sCl//rApn/6wKb/+sCnf/rAp//6wKh/+sCo//rArH/MALF/+sCx//rAsn/6wLaABQC3AAUAt4AFALh/+oC4//qAuX/6gLn/+oC6f/qAuv/6gLv/+gDUv9AA1r/QANq/+sDbv/qA3D/6wNy/+gDdf/qA3b/6wN3/+oDfv8wA4L/QAONABQDj//eA5D/6wOS/+sDlP/rA5X/6AOX/+sDnv/oA6b/6AOu/0ADr//eA7L/6wO3/+gDuP/rA73/6wO//+gDxP9AA8X/3gPG/0ADx//eA8v/6wPN/+sDzv/rA9j/6wPa/+sD3P/rA+D/6APi/+gD5P/oA+v/6wPu/0AD7//eA/D/QAPx/94D8v9AA/P/3gP0/0AD9f/eA/b/QAP3/94D+P9AA/n/3gP6/0AD+//eA/z/QAP9/94D/v9AA///3gQA/0AEAf/eBAL/QAQD/94EBP9ABAX/3gQH/+sECf/rBAv/6wQN/+sED//rBBH/6wQT/+sEFf/rBBv/6wQd/+sEH//rBCH/6wQj/+sEJf/rBCf/6wQp/+sEK//rBC3/6wQv/+sEMf/rBDP/6gQ1/+oEN//qBDn/6gQ7/+oEPf/qBD//6gRB/+gEQ//oBEX/6ARMABQAIAA4/98AOv/kADv/7AA9/90A0f/fANX/3wEY/+QBMv/fATr/3wG6AA4CZf/dAtr/3wLc/98C3v/fAuz/7ALu/90C8P/dA1f/3QNm/90Daf/dA43/3wOf/+wDof/sA6P/7AOl/90Dtv/kA77/3QRA/90EQv/dBET/3QRM/98Eaf/dABoAOP/OADr/7QA9/9AA0f/OANX/zgEY/+0BMv/OATr/zgJl/9AC2v/OAtz/zgLe/84C7v/QAvD/0ANX/9ADZv/QA2n/0AON/84Dpf/QA7b/7QO+/9AEQP/QBEL/0ARE/9AETP/OBGn/0AAQAC7/7gA5/+4CYf/uAmL/7gJj/+4CZP/uArH/7gLg/+4C4v/uAuT/7gLm/+4C6P/uAur/7gN+/+4EMv/uBDT/7gBKAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCT/+gAmP/oALr/6ADH/+gAyP/oAPb/6AEC/+gBHf/oASH/6AE5/+gBS//oAUz/6AFW/+gBbAAQAW0AEAFvABABcAAQAXEAEAJt/+gCbv/oAm//6AJw/+gCcf/oAon/6AKL/+gCjf/oAo//6AKR/+gCk//oApX/6AKX/+gCmf/oApv/6AKd/+gCn//oAqH/6AKj/+gDav/oA5D/6AOU/+gDl//oA6cAEAOoABADqwAQA7L/6AO4/+gDvf/oA8v/6APN/+gDzv/oA9r/6APr/+gEB//oBAn/6AQL/+gEDf/oBA//6AQR/+gEE//oBBX/6AQp/+gEK//oBC3/6AQx/+gAAgD1/9YBbf+YAD0AR//sAEj/7ABJ/+wAS//sAFX/7ACT/+wAmP/sALr/7ADH/+wAyP/sAPb/7AEC/+wBHf/sASH/7AE5/+wBS//sAUz/7AFW/+wCbf/sAm7/7AJv/+wCcP/sAnH/7AKJ/+wCi//sAo3/7AKP/+wCkf/sApP/7AKV/+wCl//sApn/7AKb/+wCnf/sAp//7AKh/+wCo//sA2r/7AOQ/+wDlP/sA5f/7AOy/+wDuP/sA73/7APL/+wDzf/sA87/7APa/+wD6//sBAf/7AQJ/+wEC//sBA3/7AQP/+wEEf/sBBP/7AQV/+wEKf/sBCv/7AQt/+wEMf/sABgAU//iARf/4gFtABgCd//iAnj/4gJ5/+ICev/iAnv/4gLF/+ICx//iAsn/4gNw/+IDdv/iA5L/4gPY/+ID3P/iBBv/4gQd/+IEH//iBCH/4gQj/+IEJf/iBCf/4gQv/+IABgAQ/4QAEv+EAW7/hAFy/4QBdv+EAXf/hAAQAC7/7AA5/+wCYf/sAmL/7AJj/+wCZP/sArH/7ALg/+wC4v/sAuT/7ALm/+wC6P/sAur/7AN+/+wEMv/sBDT/7AAeAAb/8gAL//IAWv/zAF3/8wC8//MA9f/1ARn/8wFs//IBbf/yAW//8gFw//IBcf/yAoD/8wKB//MC7//zA3L/8wOV//MDnv/zA6b/8wOn//IDqP/yA6v/8gO3//MDv//zA+D/8wPi//MD5P/zBEH/8wRD//MERf/zAD4AJ//zACv/8wAz//MANf/zAIP/8wCS//MAl//zALL/8wDDAA0A0v/zAQf/8wEW//MBGv/zARz/8wEe//MBIP/zATj/8wFV//MCKP/zAin/8wIr//MCLP/zAlL/8wJc//MCXf/zAl7/8wJf//MCYP/zAoj/8wKK//MCjP/zAo7/8wKc//MCnv/zAqD/8wKi//MCxP/zAsb/8wLI//MC+f/zA1b/8wNj//MDif/zA4z/8wO5//MDvP/zA9f/8wPZ//MD2//zBBr/8wQc//MEHv/zBCD/8wQi//MEJP/zBCb/8wQo//MEKv/zBCz/8wQu//MEMP/zBKn/8wA/ACf/5gAr/+YAM//mADX/5gCD/+YAkv/mAJf/5gCy/+YAt//CAMMAEADS/+YBB//mARb/5gEa/+YBHP/mAR7/5gEg/+YBOP/mAVX/5gIo/+YCKf/mAiv/5gIs/+YCUv/mAlz/5gJd/+YCXv/mAl//5gJg/+YCiP/mAor/5gKM/+YCjv/mApz/5gKe/+YCoP/mAqL/5gLE/+YCxv/mAsj/5gL5/+YDVv/mA2P/5gOJ/+YDjP/mA7n/5gO8/+YD1//mA9n/5gPb/+YEGv/mBBz/5gQe/+YEIP/mBCL/5gQk/+YEJv/mBCj/5gQq/+YELP/mBC7/5gQw/+YEqf/mADcAJf/kADz/0gA9/9MAsf/kALP/5ADD/+IA2f/SAQz/5AJL/+QCTP/kAk3/5AJO/+QCT//kAlD/5AJR/+QCZf/TAoL/5AKE/+QChv/kAu7/0wLw/9MDUv/kA1f/0wNa/+QDZv/TA2f/0gNp/9MDgv/kA47/0gOl/9MDrv/kA77/0wPB/9IDxP/kA8b/5APP/9ID6f/SA+7/5APw/+QD8v/kA/T/5AP2/+QD+P/kA/r/5AP8/+QD/v/kBAD/5AQC/+QEBP/kBED/0wRC/9MERP/TBE7/0gRW/9IEaf/TACcAEP9GABL/RgAl/80Asf/NALP/zQDG//IBDP/NAW7/RgFy/0YBdv9GAXf/RgJL/80CTP/NAk3/zQJO/80CT//NAlD/zQJR/80Cgv/NAoT/zQKG/80DUv/NA1r/zQOC/80Drv/NA8T/zQPG/80D7v/NA/D/zQPy/80D9P/NA/b/zQP4/80D+v/NA/z/zQP+/80EAP/NBAL/zQQE/80AAQDDAA4ArwBH/9wASP/cAEn/3ABL/9wAUf/BAFL/wQBT/9YAVP/BAFX/3ABZ/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAL7/5gDA/8EAwf/rAML/6QDE//AAxf/nAMf/3ADI/9wAyf/jAMr/3QDL/84AzP/UAM3/2wDr/8EA7//BAPD/wQDy/8EA8//BAPT/wQD2/9wA9//BAPn/wQD6/8EA/f/BAP//wQEC/9wBBP/BARf/1gEZ/+EBHf/cASH/3AE1/8EBOf/cAUT/wQFJ/8EBS//cAUz/3AFW/9wCbf/cAm7/3AJv/9wCcP/cAnH/3AJ2/8ECd//WAnj/1gJ5/9YCev/WAnv/1gJ8/90Cff/dAn7/3QJ//90CgP/hAoH/4QKJ/9wCi//cAo3/3AKP/9wCkf/cApP/3AKV/9wCl//cApn/3AKb/9wCnf/cAp//3AKh/9wCo//cAr7/wQLA/8ECwv/BAsP/wQLF/9YCx//WAsn/1gLh/90C4//dAuX/3QLn/90C6f/dAuv/3QLv/+EDav/cA2z/wQNu/90DcP/WA3L/4QN1/90Ddv/WA3f/3QOQ/9wDkf/BA5L/1gOT/8EDlP/cA5X/4QOX/9wDmP/BA53/wQOe/+EDpv/hA63/wQOy/9wDs//BA7f/4QO4/9wDvf/cA7//4QPL/9wDzf/cA87/3APU/8ED1v/BA9j/1gPa/9wD3P/WA+D/4QPi/+ED5P/hA+j/wQPr/9wEB//cBAn/3AQL/9wEDf/cBA//3AQR/9wEE//cBBX/3AQb/9YEHf/WBB//1gQh/9YEI//WBCX/1gQn/9YEKf/cBCv/3AQt/9wEL//WBDH/3AQz/90ENf/dBDf/3QQ5/90EO//dBD3/3QQ//90EQf/hBEP/4QRF/+EESf/BBEv/wQRV/8EEYv/BBGT/wQRm/8EAdgAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADB/+wAwwAPAMX/6gDH//AAyP/wAMn/zgDK/+8Ay//nAPb/8AEC//ABGf/cAR3/8AEh//ABOf/wAUv/8AFM//ABVv/wAWz/2gFt/9oBb//aAXD/2gFx/9oCbf/wAm7/8AJv//ACcP/wAnH/8AJ8/+8Cff/vAn7/7wJ//+8CgP/cAoH/3AKJ//ACi//wAo3/8AKP//ACkf/wApP/8AKV//ACl//wApn/8AKb//ACnf/wAp//8AKh//ACo//wAuH/7wLj/+8C5f/vAuf/7wLp/+8C6//vAu//3ANq//ADbv/vA3L/3AN1/+8Dd//vA5D/8AOU//ADlf/cA5f/8AOe/9wDpv/cA6f/2gOo/9oDq//aA7L/8AO3/9wDuP/wA73/8AO//9wDy//wA83/8APO//AD2v/wA+D/3APi/9wD5P/cA+v/8AQH//AECf/wBAv/8AQN//AED//wBBH/8AQT//AEFf/wBCn/8AQr//AELf/wBDH/8AQz/+8ENf/vBDf/7wQ5/+8EO//vBD3/7wQ//+8EQf/cBEP/3ARF/9wARAAQAAwAEgAMAEf/5wBI/+cASf/nAEv/5wBV/+cAk//nAJj/5wC6/+cAwwAPAMf/5wDI/+cA9v/nAQL/5wEd/+cBIf/nATn/5wFL/+cBTP/nAVb/5wFuAAwBcgAMAXYADAF3AAwCbf/nAm7/5wJv/+cCcP/nAnH/5wKJ/+cCi//nAo3/5wKP/+cCkf/nApP/5wKV/+cCl//nApn/5wKb/+cCnf/nAp//5wKh/+cCo//nA2r/5wOQ/+cDlP/nA5f/5wOy/+cDuP/nA73/5wPL/+cDzf/nA87/5wPa/+cD6//nBAf/5wQJ/+cEC//nBA3/5wQP/+cEEf/nBBP/5wQV/+cEKf/nBCv/5wQt/+cEMf/nAAYAyf/qAOz/7gD1/9UA/f/tATP/7AFY/+wAAQD1/8AAAQDJACAAfgAGAAwACwAMAEf/6ABI/+gASf/oAEoADABL/+gAU//qAFX/6ABaAAsAXQALAJP/6ACY/+gAuv/oALwACwDD/5AAxQALAMf/6ADI/+gAyQAMAPb/6AEC/+gBF//qARkACwEd/+gBIf/oATn/6AFL/+gBTP/oAVb/6AFsAAwBbQAMAW8ADAFwAAwBcQAMAbr/vwG8/+4BwP/sAcj/7QHK/+wBzP/1Ac0ADgHPAA0B0gANAm3/6AJu/+gCb//oAnD/6AJx/+gCd//qAnj/6gJ5/+oCev/qAnv/6gKAAAsCgQALAon/6AKL/+gCjf/oAo//6AKR/+gCk//oApX/6AKX/+gCmf/oApv/6AKd/+gCn//oAqH/6AKj/+gCxf/qAsf/6gLJ/+oC7wALA2r/6ANw/+oDcgALA3b/6gOQ/+gDkv/qA5T/6AOVAAsDl//oA54ACwOmAAsDpwAMA6gADAOrAAwDsv/oA7cACwO4/+gDvf/oA78ACwPL/+gDzf/oA87/6APY/+oD2v/oA9z/6gPgAAsD4gALA+QACwPr/+gEB//oBAn/6AQL/+gEDf/oBA//6AQR/+gEE//oBBX/6AQb/+oEHf/qBB//6gQh/+oEI//qBCX/6gQn/+oEKf/oBCv/6AQt/+gEL//qBDH/6ARBAAsEQwALBEUACwABAPX/4gANAFz/7QBe/+0A7f/tAPX/wALy/+0C9P/tAvb/7QOW/+0Dwv/tA9D/7QPq/+0ET//tBFf/7QAMAFz/8gBe//IA7f/yAvL/8gL0//IC9v/yA5b/8gPC//ID0P/yA+r/8gRP//IEV//yAB8AWv/0AFz/8gBd//QAXv/zALz/9ADt//IBGf/0AoD/9AKB//QC7//0AvL/8wL0//MC9v/zA3L/9AOV//QDlv/yA57/9AOm//QDt//0A7//9APC//ID0P/yA+D/9APi//QD5P/0A+r/8gRB//QEQ//0BEX/9ARP//IEV//yAF0ABv/KAAv/ygA4/9IAOv/UADz/9AA9/9MAWv/mAFz/7wBd/+YAvP/mANH/0gDV/9IA2f/0AN3/7QDg/+EA5f/UAO3/7wD1/8kA/f/RAQj/5QEY/9QBGf/mAR//4wEy/9IBM//EATr/0gE8/+EBTf/UAU7/9QFP/+cBV/9kAVj/yQFs/8oBbf/KAW//ygFw/8oBcf/KAmX/0wKA/+YCgf/mAtr/0gLc/9IC3v/SAu7/0wLv/+YC8P/TA1f/0wNm/9MDZ//0A2n/0wNy/+YDgf/tA43/0gOO//QDlf/mA5b/7wOe/+YDpf/TA6b/5gOn/8oDqP/KA6v/ygO2/9QDt//mA77/0wO//+YDwf/0A8L/7wPP//QD0P/vA9//7QPg/+YD4f/tA+L/5gPj/+0D5P/mA+X/4QPp//QD6v/vBED/0wRB/+YEQv/TBEP/5gRE/9MERf/mBEz/0gRO//QET//vBFD/4QRS/+EEVv/0BFf/7wRp/9MAbAAG/8AAC//AADj/nQA6/8cAPP/wAD3/qwBR/9IAUv/SAFT/0gDA/9IA0f+dANP/9QDV/50A2f/wANz/9QDd/+oA4P/lAOX/wQDr/9IA7//SAPD/0gDy/9IA8//SAPT/0gD1/80A9//SAPn/0gD6/9IA/f/SAP//0gEE/9IBGP/HATL/nQEz/8wBNf/SATr/nQE8/+UBP//fAUT/0gFJ/9IBTf/OAU//6gFR//UBV/+eAVj/zgFs/8ABbf/AAW//wAFw/8ABcf/AAmX/qwJ2/9ICvv/SAsD/0gLC/9ICw//SAtr/nQLc/50C3v+dAu7/qwLw/6sDV/+rA2b/qwNn//ADaf+rA2z/0gOB/+oDjf+dA47/8AOR/9IDk//SA5j/0gOd/9IDpf+rA6f/wAOo/8ADq//AA63/0gOz/9IDtv/HA77/qwPB//ADz//wA9T/0gPW/9ID3//qA+H/6gPj/+oD5f/lA+j/0gPp//AD7P/1BED/qwRC/6sERP+rBEn/0gRL/9IETP+dBE7/8ARQ/+UEUv/lBFX/0gRW//AEYv/SBGT/0gRm/9IEZ//1BGn/qwBvAAb/sQAL/7EAOP+eADr/xQA8//IAPf+oAFH/zwBS/88AVP/PAFz/7wDA/88A0f+eANX/ngDZ//IA3f/sAOD/4QDl/8IA6//PAO3/7wDv/88A8P/PAPL/zwDz/88A9P/PAPX/xgD3/88A+f/PAPr/zwD9/88A///PAQT/zwEY/8UBMv+eATP/wAE1/88BOv+eATz/4QE//98BRP/PAUn/zwFN/80BT//oAVf/nwFY/8YBbP+xAW3/sQFv/7EBcP+xAXH/sQJl/6gCdv/PAr7/zwLA/88Cwv/PAsP/zwLa/54C3P+eAt7/ngLu/6gC8P+oA1f/qANm/6gDZ//yA2n/qANs/88Dgf/sA43/ngOO//IDkf/PA5P/zwOW/+8DmP/PA53/zwOl/6gDp/+xA6j/sQOr/7EDrf/PA7P/zwO2/8UDvv+oA8H/8gPC/+8Dz//yA9D/7wPU/88D1v/PA9//7APh/+wD4//sA+X/4QPo/88D6f/yA+r/7wRA/6gEQv+oBET/qARJ/88ES//PBEz/ngRO//IET//vBFD/4QRS/+EEVf/PBFb/8gRX/+8EYv/PBGT/zwRm/88Eaf+oAE0AOP++AFH/4QBS/+EAVP/hAFr/7wBd/+8AvP/vAMD/4QDR/74A1f++AOX/yQDr/+EA7//hAPD/4QDy/+EA8//hAPT/4QD1/98A9//hAPn/4QD6/+EA/f/hAP//4QEE/+EBCP/tARn/7wEf/+sBMv++ATP/3wE1/+EBOv++AT//6QFE/+EBSf/hAU7/9QFY/+ACdv/hAoD/7wKB/+8Cvv/hAsD/4QLC/+ECw//hAtr/vgLc/74C3v++Au//7wNs/+EDcv/vA43/vgOR/+EDk//hA5X/7wOY/+EDnf/hA57/7wOm/+8Drf/hA7P/4QO3/+8Dv//vA9T/4QPW/+ED4P/vA+L/7wPk/+8D6P/hBEH/7wRD/+8ERf/vBEn/4QRL/+EETP++BFX/4QRi/+EEZP/hBGb/4QBkADj/5gA6/+cAPP/yAD3/5wBR/9YAUv/WAFT/1gBc//EAwP/WANH/5gDV/+YA2f/yAN3/7gDg/+gA5f/mAOv/1gDt//EA7//WAPD/1gDy/9YA8//WAPT/1gD1/9AA9//WAPn/1gD6/9YA/f/WAP//1gEE/9YBGP/nATL/5gEz/84BNf/WATr/5gE8/+gBRP/WAUn/1gFN/+cBT//tAVf/5gFY/9ACZf/nAnb/1gK+/9YCwP/WAsL/1gLD/9YC2v/mAtz/5gLe/+YC7v/nAvD/5wNX/+cDZv/nA2f/8gNp/+cDbP/WA4H/7gON/+YDjv/yA5H/1gOT/9YDlv/xA5j/1gOd/9YDpf/nA63/1gOz/9YDtv/nA77/5wPB//IDwv/xA8//8gPQ//ED1P/WA9b/1gPf/+4D4f/uA+P/7gPl/+gD6P/WA+n/8gPq//EEQP/nBEL/5wRE/+cESf/WBEv/1gRM/+YETv/yBE//8QRQ/+gEUv/oBFX/1gRW//IEV//xBGL/1gRk/9YEZv/WBGn/5wCTACUAEAAn/+gAK//oADP/6AA1/+gAOP/gADr/4AA9/98Ag//oAJL/6ACX/+gAsQAQALL/6ACzABAA0f/gANL/6ADTABAA1f/gANgAFADcABAA4P/hAOX/4ADsABMA8QAQAPj/4AEDABABB//oAQwAEAEW/+gBGP/gARr/6AEc/+gBHv/oASD/6AEy/+ABOP/oATr/4AE8/+EBPf/gAUD/4QFF/+kBTf/fAU//3gFRABABVf/oAVf/3wFZ//ICKP/oAin/6AIr/+gCLP/oAksAEAJMABACTQAQAk4AEAJPABACUAAQAlEAEAJS/+gCXP/oAl3/6AJe/+gCX//oAmD/6AJl/98CggAQAoQAEAKGABACiP/oAor/6AKM/+gCjv/oApz/6AKe/+gCoP/oAqL/6ALE/+gCxv/oAsj/6ALa/+AC3P/gAt7/4ALu/98C8P/fAvn/6ANSABADVv/oA1f/3wNaABADY//oA2b/3wNp/98DggAQA4n/6AOM/+gDjf/gA6X/3wOuABADtv/gA7n/6AO8/+gDvv/fA8QAEAPGABAD1//oA9n/6APb/+gD5f/hA+b/4APsABAD7QAQA+4AEAPwABAD8gAQA/QAEAP2ABAD+AAQA/oAEAP8ABAD/gAQBAAAEAQCABAEBAAQBBr/6AQc/+gEHv/oBCD/6AQi/+gEJP/oBCb/6AQo/+gEKv/oBCz/6AQu/+gEMP/oBED/3wRC/98ERP/fBEz/4ARQ/+EEUf/gBFL/4QRT/+AEZwAQBGgAEARp/98Eqf/oADIAG//yADj/8QA6//QAPP/0AD3/8ADR//EA0//1ANX/8QDZ//QA3P/1AN3/8wDl//EBGP/0ATL/8QE6//EBTf/yAU//8gFR//UBV//yAmX/8ALa//EC3P/xAt7/8QLu//AC8P/wA1f/8ANm//ADZ//0A2n/8AOB//MDjf/xA47/9AOl//ADtv/0A77/8APB//QDz//0A9//8wPh//MD4//zA+n/9APs//UEQP/wBEL/8ARE//AETP/xBE7/9ARW//QEZ//1BGn/8ABmACUADwA4/+YAOv/mADwADgA9/+YAsQAPALMADwDR/+YA0wAOANX/5gDYABMA2QAOANwADgDdAAsA4P/lAOX/5gDm//QA7AASAPEADwD1/+cA+P/oAP3/5wEDAA8BDAAPARj/5gEy/+YBM//nATr/5gE8/+UBPf/oAU3/5gFP/+YBUQAOAVf/5gFY/+cCSwAPAkwADwJNAA8CTgAPAk8ADwJQAA8CUQAPAmX/5gKCAA8ChAAPAoYADwLa/+YC3P/mAt7/5gLu/+YC8P/mA1IADwNX/+YDWgAPA2b/5gNnAA4Daf/mA4EACwOCAA8Djf/mA44ADgOl/+YDrgAPA7b/5gO+/+YDwQAOA8QADwPGAA8DzwAOA98ACwPhAAsD4wALA+X/5QPm/+gD6QAOA+wADgPtAA8D7gAPA/AADwPyAA8D9AAPA/YADwP4AA8D+gAPA/wADwP+AA8EAAAPBAIADwQEAA8EQP/mBEL/5gRE/+YETP/mBE4ADgRQ/+UEUf/oBFL/5QRT/+gEVgAOBGcADgRoAA8Eaf/mADcABv+/AAv/vwA4/58AOv/JAD3/rQDR/58A1f+fAN3/7ADg/+YA5f/EAPX/zQD9/9UBGP/JATL/nwEz/8wBOv+fATz/5gE//98BTf/RAU//7AFX/6EBWP/PAWz/vwFt/78Bb/+/AXD/vwFx/78CZf+tAtr/nwLc/58C3v+fAu7/rQLw/60DV/+tA2b/rQNp/60Dgf/sA43/nwOl/60Dp/+/A6j/vwOr/78Dtv/JA77/rQPf/+wD4f/sA+P/7APl/+YEQP+tBEL/rQRE/60ETP+fBFD/5gRS/+YEaf+tADAAOP/jADz/5QA9/+QA0f/jANP/5QDV/+MA2P/iANn/5QDc/+UA3f/pAPH/6gED/+oBMv/jATr/4wFR/+UBV//kAmX/5ALa/+MC3P/jAt7/4wLu/+QC8P/kA1f/5ANm/+QDZ//lA2n/5AOB/+kDjf/jA47/5QOl/+QDvv/kA8H/5QPP/+UD3//pA+H/6QPj/+kD6f/lA+z/5QPt/+oEQP/kBEL/5ARE/+QETP/jBE7/5QRW/+UEZ//lBGj/6gRp/+QAIwA4/+IAPP/kANH/4gDT/+QA1f/iANj/4QDZ/+QA3P/kAN3/6QDs/+QA8f/rAQP/6wEy/+IBOv/iAVH/5ALa/+IC3P/iAt7/4gNn/+QDgf/pA43/4gOO/+QDwf/kA8//5APf/+kD4f/pA+P/6QPp/+QD7P/kA+3/6wRM/+IETv/kBFb/5ARn/+QEaP/rABcAOP/rAD3/8wDR/+sA1f/rATL/6wE6/+sCZf/zAtr/6wLc/+sC3v/rAu7/8wLw//MDV//zA2b/8wNp//MDjf/rA6X/8wO+//MEQP/zBEL/8wRE//METP/rBGn/8wA2AFH/7wBS/+8AVP/vAFz/8ADA/+8A6//vAOz/7gDt//AA7//vAPD/7wDy/+8A8//vAPT/7wD1/+4A9//vAPn/7wD6/+8A/f/vAP//7wEE/+8BCP/0AR//8QEz/+8BNf/vAUT/7wFJ/+8BWP/vAnb/7wK+/+8CwP/vAsL/7wLD/+8DbP/vA5H/7wOT/+8Dlv/wA5j/7wOd/+8Drf/vA7P/7wPC//AD0P/wA9T/7wPW/+8D6P/vA+r/8ARJ/+8ES//vBE//8ARV/+8EV//wBGL/7wRk/+8EZv/vACIABv/yAAv/8gBa//UAXf/1ALz/9QD1//QA/f/0AQj/9QEZ//UBM//1AVj/9QFs//IBbf/yAW//8gFw//IBcf/yAoD/9QKB//UC7//1A3L/9QOV//UDnv/1A6b/9QOn//IDqP/yA6v/8gO3//UDv//1A+D/9QPi//UD5P/1BEH/9QRD//UERf/1ADIAUf/uAFL/7gBU/+4AwP/uAOv/7gDsABQA7//uAPD/7gDy/+4A8//uAPT/7gD1/+0A9//uAPj/7QD5/+4A+v/uAPv/0AD9/+4A///uAQT/7gEz/+0BNf/uAT3/7QFE/+4BSf/uAVj/7QJ2/+4Cvv/uAsD/7gLC/+4Cw//uA2z/7gOR/+4Dk//uA5j/7gOd/+4Drf/uA7P/7gPU/+4D1v/uA+b/7QPo/+4ESf/uBEv/7gRR/+0EU//tBFX/7gRi/+4EZP/uBGb/7gAKAAb/9QAL//UBbP/1AW3/9QFv//UBcP/1AXH/9QOn//UDqP/1A6v/9QBZAEf/8ABI//AASf/wAEv/8ABT/8cAVf/wAJP/8ACY//AAuv/wAMf/8ADI//AA9v/wAQL/8AEX/8cBG//rAR3/8AEh//ABOf/wAUv/8AFM//ABVv/wAbz/6wHA/+kByP/rAcr/6wJt//ACbv/wAm//8AJw//ACcf/wAnf/xwJ4/8cCef/HAnr/xwJ7/8cCif/wAov/8AKN//ACj//wApH/8AKT//AClf/wApf/8AKZ//ACm//wAp3/8AKf//ACof/wAqP/8ALF/8cCx//HAsn/xwNq//ADcP/HA3b/xwOQ//ADkv/HA5T/8AOX//ADsv/wA7j/8AO9//ADy//wA83/8APO//AD2P/HA9r/8APc/8cD6//wBAf/8AQJ//AEC//wBA3/8AQP//AEEf/wBBP/8AQV//AEG//HBB3/xwQf/8cEIf/HBCP/xwQl/8cEJ//HBCn/8AQr//AELf/wBC//xwQx//AAoQAGAA0ACwANAEX/8ABH/8AASP/AAEn/wABKAA0AS//AAFP/4gBV/8AAWgALAF0ACwCT/8AAmP/AALr/wAC8AAsAxv/WAMf/wADI/8AAy//VAOz/yADx/9cA9v/AAQL/wAED/9cBF//iARkACwEb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AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCwALMAKAC8ALwALADAAMAALQDGAMYALgDTANQALwDWANYAMQDZANkAMgDbAN0AMwDfAN8ANgDhAOEANwDjAOMAOADlAOUAOQDrAOsAOgDtAO0AOwD2APYAPAD7APsAPQD9AP4APgEDAQQAQAEJAQkAQgEMAQwAQwEXARkARAErAS0ARwEwATAASgEyATIASwFJAUkATAFsAXIATQF2AXcAVAIoAigAVgIqAisAVwJGAkcAWQJJAkkAWwJLAnEAXAJ2AnsAgwKAApAAiQKSApsAmgKkAqYApAKoAqgApwKqAqoAqAKsAqwAqQKuAq4AqgKxArEAqwKzArMArAK1ArUArQK3ArcArgK5ArkArwK7ArsAsAK9AskAsQLLAssAvgLNAs0AvwLPAs8AwALaAtoAwQLcAtwAwgLeAt4AwwLgAuAAxALiAuIAxQLkAuQAxgLmAuYAxwLoAugAyALqAuoAyQLsAuwAygLuAvYAywNSA1cA1ANaA2kA2gNsA2wA6gNwA3AA6wNyA3IA7AN2A3YA7QN5A3oA7gN8A4UA8AOHA4kA+gOLA5AA/QOSA5gBAwOeA58BCgOhA6EBDAOjA6MBDQOlA6gBDgOrA7ABEgOyA7IBGAO2A7cBGQO8A8cBGwPKA8sBJwPNA9ABKQPXA9gBLQPcA9wBLwPeA+QBMAPpA+oBNwPuBBYBOQQYBBgBYgQaBCcBYwQvBC8BcQQyBDIBcgQ0BDQBcwRABEUBdARIBEgBegRKBEoBewRMBEwBfAROBE8BfQRUBFcBfwRaBFoBgwRcBF0BhARfBF8BhgRjBGMBhwRlBGUBiARpBGkBiQSpBKkBigACAU4AEAAQAAEAEgASAAEAJQAlAAIAJgAmAAMAJwAnAAQAKAAoAAUAKQApAAYALAAtAAcALgAuAAgALwAvAAkAMAAwAAoAMQAyAAcAMwAzAAUANAA0AAsAOAA4AAwAOQA5AAgAOgA6AA0AOwA7AA4APAA8AA8APQA9ABAAPgA+ABEARQBFABIARgBGABMARwBHABQASQBJABUATABMABYAUQBSABYAUwBTABcAVABUABMAVgBWABgAWgBaABkAXABcABoAXQBdABkAXgBeABsAigCKABMAsACwABwAsQCxAAIAsgCyAAUAswCzAAIAvAC8ABkAwADAABYAxgDGABMA0wDUAB0A1gDWAAcA2QDZAA8A2wDcAAcA3QDdAB4A3wDfAAcA4QDhAAcA4wDjAB0A5QDlAB0A6wDrAB8A7QDtABoA9gD2ABMA+wD7ACAA/QD9ACAA/gD+ABMBAwEEACABCQEJACABDAEMAAIBFwEXABcBGAEYAA0BGQEZABkBKwErABMBLAEsABwBLQEtAB8BMAEwAAkBMgEyAAkBSQFJAB8BbgFuAAEBcgFyAAEBdgF3AAECKAIoAAQCKgIrAAUCRgJHAAUCSQJJAAwCSwJRAAICUgJSAAQCUwJWAAYCVwJbAAcCXAJgAAUCYQJkAAgCZQJlABACZgJsABICbQJtABQCbgJxABUCdgJ2ABYCdwJ7ABcCgAKBABkCggKCAAICgwKDABIChAKEAAIChQKFABIChgKGAAIChwKHABICiAKIAAQCiQKJABQCigKKAAQCiwKLABQCjAKMAAQCjQKNABQCjgKOAAQCjwKPABQCkAKQAAUCkgKSAAYCkwKTABUClAKUAAYClQKVABUClgKWAAYClwKXABUCmAKYAAYCmQKZABUCmgKaAAYCmwKbABUCpAKkAAcCpQKlABYCpgKmAAcCqAKoAAcCqgKqAAcCrAKsAAcCrgKuAAcCsQKxAAgCswKzAAkCtQK1AAoCtwK3AAoCuQK5AAoCuwK7AAoCvQK9AAcCvgK+ABYCvwK/AAcCwALAABYCwQLBAAcCwgLDABYCxALEAAUCxQLFABcCxgLGAAUCxwLHABcCyALIAAUCyQLJABcCywLLABgCzQLNABgCzwLPABgC2gLaAAwC3ALcAAwC3gLeAAwC4ALgAAgC4gLiAAgC5ALkAAgC5gLmAAgC6ALoAAgC6gLqAAgC7ALsAA4C7gLuABAC7wLvABkC8ALwABAC8QLxABEC8gLyABsC8wLzABEC9AL0ABsC9QL1ABEC9gL2ABsDUgNSAAIDUwNTAAYDVANVAAcDVgNWAAUDVwNXABADWgNaAAIDWwNbAAMDXANcAAYDXQNdABEDXgNfAAcDYANgAAkDYQNiAAcDYwNjAAUDZANkAAsDZQNlAAwDZgNmABADZwNnAA8DaANoAAcDaQNpABADbANsABYDcANwABcDcgNyABkDdgN2ABcDeQN5AAYDegN6ABwDfAN9AAcDfgN+AAgDfwOAAAkDgQOBAB4DggOCAAIDgwODAAMDhAOEABwDhQOFAAYDhwOIAAcDiQOJAAUDiwOLAAsDjAOMAAQDjQONAAwDjgOOAA8DjwOPABIDkAOQABUDkgOSABcDkwOTABMDlAOUABQDlQOVABkDlgOWABoDlwOXABUDmAOYAB8DngOeABkDnwOfAA4DoQOhAA4DowOjAA4DpQOlABADpgOmABkDrAOsAAcDrQOtABYDrgOuAAIDrwOvABIDsAOwAAYDsgOyABUDtgO2AA0DtwO3ABkDvAO8AAQDvQO9ABQDvgO+ABADvwO/ABkDwAPAAAcDwQPBAA8DwgPCABoDwwPDAAcDxAPEAAIDxQPFABIDxgPGAAIDxwPHABIDygPKAAYDywPLABUDzQPOABUDzwPPAA8D0APQABoD1wPXAAUD2APYABcD3APcABcD3gPeABMD3wPfAB4D4APgABkD4QPhAB4D4gPiABkD4wPjAB4D5APkABkD6QPpAA8D6gPqABoD7gPuAAID7wPvABID8APwAAID8QPxABID8gPyAAID8wPzABID9AP0AAID9QP1ABID9gP2AAID9wP3ABID+AP4AAID+QP5ABID+gP6AAID+wP7ABID/AP8AAID/QP9ABID/gP+AAID/wP/ABIEAAQAAAIEAQQBABIEAgQCAAIEAwQDABIEBAQEAAIEBQQFABIEBgQGAAYEBwQHABUECAQIAAYECQQJABUECgQKAAYECwQLABUEDAQMAAYEDQQNABUEDgQOAAYEDwQPABUEEAQQAAYEEQQRABUEEgQSAAYEEwQTABUEFAQUAAYEFQQVABUEFgQWAAcEGAQYAAcEGgQaAAUEGwQbABcEHAQcAAUEHQQdABcEHgQeAAUEHwQfABcEIAQgAAUEIQQhABcEIgQiAAUEIwQjABcEJAQkAAUEJQQlABcEJgQmAAUEJwQnABcELwQvABcEMgQyAAgENAQ0AAgEQARAABAEQQRBABkEQgRCABAEQwRDABkERAREABAERQRFABkESARIAAkESgRKAAcETARMAAwETgROAA8ETwRPABoEVARUABwEVQRVAB8EVgRWAA8EVwRXABoEWgRaABYEXARcAB0EXQRdABwEXwRfAAkEYwRjAAcEZQRlAAcEaQRpABAEqQSpAAUAAgFtAAYABgABAAsACwABABAAEAAWABEAEQAZABIAEgAWACUAJQACACcAJwAIACsAKwAIAC4ALgAaADMAMwAIADUANQAIADcANwAbADgAOAAJADkAOQAKADoAOgALADsAOwAMADwAPAAXAD0APQANAD4APgAYAEUARQADAEcASQAEAEsASwAEAFEAUgAFAFMAUwAGAFQAVAAFAFUAVQAEAFcAVwAHAFkAWQAOAFoAWgAPAFwAXAAcAF0AXQAPAF4AXgAQAIMAgwAIAJIAkgAIAJMAkwAEAJcAlwAIAJgAmAAEAJoAmgAOALEAsQACALIAsgAIALMAswACALoAugAEALwAvAAPAMAAwAAFAMcAyAAEAMoAygAOANEA0QAJANIA0gAIANMA0wARANUA1QAJANkA2QAXANwA3AARAN0A3QAVAOAA4AASAOsA6wAFAO0A7QAcAO8A8AAFAPEA8QATAPIA9AAFAPYA9gAEAPcA9wAFAPgA+AAUAPkA+gAFAP0A/QAFAP8A/wAFAQIBAgAEAQMBAwATAQQBBAAFAQcBBwAIAQwBDAACARYBFgAIARcBFwAGARgBGAALARkBGQAPARoBGgAIARwBHAAIAR0BHQAEAR4BHgAIASABIAAIASEBIQAEATIBMgAJATUBNQAFATgBOAAIATkBOQAEAToBOgAJAUQBRAAFAUkBSQAFAUsBTAAEAVEBUQARAVUBVQAIAVYBVgAEAWkBagAZAWwBbQABAW4BbgAWAW8BcQABAXIBcgAWAXYBdwAWAigCKQAIAisCLAAIAkUCRQAZAksCUQACAlICUgAIAlwCYAAIAmECZAAKAmUCZQANAmYCbAADAm0CcQAEAnYCdgAFAncCewAGAnwCfwAOAoACgQAPAoICggACAoMCgwADAoQChAACAoUChQADAoYChgACAocChwADAogCiAAIAokCiQAEAooCigAIAosCiwAEAowCjAAIAo0CjQAEAo4CjgAIAo8CjwAEApECkQAEApMCkwAEApUClQAEApcClwAEApkCmQAEApsCmwAEApwCnAAIAp0CnQAEAp4CngAIAp8CnwAEAqACoAAIAqECoQAEAqICogAIAqMCowAEArECsQAaAr4CvgAFAsACwAAFAsICwwAFAsQCxAAIAsUCxQAGAsYCxgAIAscCxwAGAsgCyAAIAskCyQAGAtAC0AAbAtEC0QAH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ALgAuWMyc2MEWGMyc2MEXmMyc2MEZGMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGRsaWcEeGRsaWcEfmRsaWcEhGRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRub20EkGRub20ElmRub20EnGRub20EomRub20EomRub20EomRub20EomRub20EomRub20EomRub20EomZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGxpZ2EEsmxpZ2EEumxudW0EwGxudW0ExmxudW0EzGxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxvY2wE2GxvY2wE3mxvY2wE5G51bXIE6m51bXIE8G51bXIE9m51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G9udW0FAm9udW0FCG9udW0FDm9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFHBudW0FGnBudW0FIHBudW0FJnBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHNtY3AFMnNtY3AFOHNtY3AFPnNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNzMDEFSnNzMDEFUHNzMDEFVnNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDIFYnNzMDIFaHNzMDIFbnNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDMFenNzMDMFgHNzMDMFhnNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDQFknNzMDQFmHNzMDQFnnNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDUFqnNzMDUFsHNzMDUFtnNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDYFwnNzMDYFyHNzMDYFznNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDcF2nNzMDcF4HNzMDcF5nNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HRudW0F8nRudW0F+HRudW0F/nRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBAAAAAEAAQAAAAEAAwAAAAEAAgAAAAEAAAAAAAIACAAJAAAAAQAOAAAAAQAQAAAAAQAPAAAAAQANAAAAAQBDAAAAAQBFAAAAAQBEAAAAAQBCAAAAAwA/AEAAQQAAAAIAEQASAAAAAQASAAAAAQA8AAAAAQA+AAAAAQA9AAAAAQA7AAAAAQAKAAAAAQAMAAAAAQALAAAAAQBHAAAAAQBJAAAAAQBIAAAAAQBGAAAAAQAwAAAAAQAyAAAAAQAxAAAAAQAvAAAAAQA4AAAAAQA6AAAAAQA5AAAAAQA3AAAAAQAFAAAAAQAHAAAAAQAGAAAAAQAEAAAAAQAUAAAAAQAWAAAAAQAVAAAAAQATAAAAAQAYAAAAAQAaAAAAAQAZAAAAAQAXAAAAAQAcAAAAAQAeAAAAAQAdAAAAAQAbAAAAAQAgAAAAAQAiAAAAAQAhAAAAAQAfAAAAAQAkAAAAAQAmAAAAAQAlAAAAAQAjAAAAAQAoAAAAAQAqAAAAAQApAAAAAQAnAAAAAQAsAAAAAQAuAAAAAQAtAAAAAQArAAAAAQA0AAAAAQA2AAAAAQA1AAAAAQAzAEsAmACYAJgAmAQmBCYEJgQmBxQHwA5QDlAOZg6IDogOiA6IDr4O5A8SDxIPEg8SDyYPJg8mDyYPOg86DzoPOg9OD04PTg9OD2APYA9gD2APeg96D3oPeg+8D7wPvA+8D9oP2g/aD9oP+A/4D/gP+BAqECoQKhAqEFwQXBBcEFwQjhCiENoQzBDMEMwQzBDaENoQ2hDaEQYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCQwI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTcAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRQNEA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUB/wTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNcE2ATaAhoE2wIOBNYCEwINBNkCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkYCRwJJAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAoIChAKGAogCigKMAo4CkAKSApQClgKYApoCnAKeAqACogKkAqYCqAKqAqwCrgKxArMCtQK3ArkCuwK9Ar8CwQLEAsYCyALKAswCzgLQAtIC1ALYAtoC3ALeAuAC4gLkAuYC6ALqAuwC7gLwAvEC8wL1A1IDUwNUA1UDVgNXA1gDWgNbA1wDXQNeA18DYANhA2MDZANlA2YDZwNoA2kDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgO6A7wDvgPTA9kD3wRIBEoETgRWBFgEXQRpAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAvwDLwI7AfoEyQTKAfsB/AH9Af4B/wIABM0EzgTQBNME3AICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYA04DGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRQNEA0YDRwNIA0kDSgNLA0wDTQNPA1ADUQTIBMsEzATPBNEE0gIBBNQEwATBBMIEwwTEBMUExgTHBNUE1wTYAhgE2gIaBNsC+wIOBNYCEwINBNkCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSgJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CsgK0ArYCuAK6ArwCvgLAAsICxQLHAskCywLNAs8C0QLTAtUC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8gL0AvYDjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngO7A70DvwPNA9QD2gPgBEYESQRLBE8EVwRZBFoEXgRqAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAABKAAEAAQBNAAMAAAABABIAAQB4AAEAAABKAAEAAQBOAAMAAAABABIAAQBgAAEAAABKAAEAAQKtAAMAAAABABIAAQBIAAEAAABKAAEAAQOaAAMAAAABABIAAQAwAAEAAABKAAEAAQOcAAMAAAABABIAAQAYAAEAAABKAAEAAQQZAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCSwACAKcCTAACAKgCTgACAKkD8AACAKoEegACAKsD7gACAKwAAQAEBIcAAgCsAAEABAKIAAIAqAACAAYADASJAAIArASLAAIBogAGAA4AFAAaACAAJgAsAlMAAgCnAlQAAgCoBAoAAgCpBAgAAgCqBHwAAgCrBAYAAgCsAAIABgAMBHYAAgCoAqIAAgGiAAEABASNAAIArAAGAA4AFAAaACAAJgAsAlcAAgCnAlgAAgCoAqYAAgCpBBYAAgCqBH4AAgCrBBgAAgCsAAMACAAOABQEjwACAKgEkQACAKwCswACAaIAAwAIAA4AFAK1AAIAqASTAAIArAK3AAIBogACAAYADAOsAAIAqASVAAIArAAFAAwAEgAYAB4AJAR4AAIApwK9AAIAqAJbAAIAqQSXAAIArAK/AAIBogAGAA4AFAAaACAAJgAsAlwAAgCnAl0AAgCoAl8AAgCpBBwAAgCqBIAAAgCrBBoAAgCsAAEABASZAAIAqAAEAAoAEAAWABwCygACAKgEggACAKsEmwACAKwCzAACAaIAAwAIAA4AFALQAAIAqASdAAIArALWAAIBogACAAYADASfAAIArALaAAIBogAGAA4AFAAaACAAJgAsAmEAAgCnAmIAAgCoAuAAAgCpBDQAAgCqBIQAAgCrBDIAAgCsAAIABgAMBKEAAgCpBKMAAgCsAAMACAAOABQDnwACAKcDoQACAKgEpQACAKwABQAMABIAGAAeACQDpQACAKcCZQACAKgERAACAKkEQgACAKoEQAACAKwAAgAGAAwC8QACAKgEpwACAKwABgAOABQAGgAgACYALAJmAAIApwJnAAIAqAJpAAIAqQPxAAIAqgR7AAIAqwPvAAIArAABAAQEiAACAKwAAQAEAokAAgCoAAIABgAMBIoAAgCsBIwAAgGiAAYADgAUABoAIAAmACwCbgACAKcCbwACAKgECwACAKkECQACAKoEfQACAKsEBwACAKwAAQAEBHcAAgCoAAEABASOAAIArAABAAQEGQACAKwAAwAIAA4AFASQAAIAqASSAAIArAK0AAIBogADAAgADgAUArYAAgCoBJQAAgCsArgAAgGiAAIABgAMA60AAgCoBJYAAgCsAAUADAASABgAHgAkBHkAAgCnAr4AAgCoAnYAAgCpBJgAAgCsAsAAAgGiAAYADgAUABoAIAAmACwCdwACAKcCeAACAKgCegACAKkEHQACAKoEgQACAKsEGwACAKwAAQAEBJoAAgCoAAQACgAQABYAHALLAAIAqASDAAIAqwScAAIArALNAAIBogADAAgADgAUAtEAAgCoBJ4AAgCsAtcAAgGiAAIABgAMBKAAAgCsAtsAAgGiAAYADgAUABoAIAAmACwCfAACAKcCfQACAKgC4QACAKkENQACAKoEhQACAKsEMwACAKwAAgAGAAwEogACAKkEpAACAKwAAwAIAA4AFAOgAAIApwOiAAIAqASmAAIArAAFAAwAEgAYAB4AJAOmAAIApwKAAAIAqARFAAIAqQRDAAIAqgRBAAIArAACAAYADALyAAIAqASoAAIArAABAAQC9wACAKgAAQAEAvkAAgCoAAEABAL4AAIAqAABAAQC+gACAKgABQAMABIAGAAeACQCcgACAKcCcwACAKgCpwACAKkEFwACAKoEfwACAKsABQAMABIAGAAeACQEKgACAKcEKAACAKgELgACAKkELAACAKoEMAACAKwABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQEOAACAKcENgACAKgEPAACAKkEOgACAKoEPgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwAAQAEBIYAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLUAtUAAQAAAAEACAACAA4ABATdBN4E3wTgAAEABAKGAocCmAKZAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiEBrgIjAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAa4AAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIgRwBHEEcgRzBHQEdQABAAAAAQAIAAIAFgAIBHUCIgRwBHEEcgRzAa0EdAABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAABKAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwThAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKtA5oDnAQZ",
+  "Roboto-MediumItalic.ttf": "AAEAAAARAQAABAAQR1BPUyEcbY8AAhQcAABZakdTVULEnLdcAAJtiAAAGXxPUy8yoQuw+wAAAZgAAABgY21hcNhuDxIAABpsAAAGXGN2dCAElytKAAAjUAAAAFZmcGdte/lhqwAAIMgAAAG8Z2FzcAAIABMAAhQQAAAADGdseWZgubUGAAAtcAAB42poZG14LxpP7wAAFYAAAATsaGVhZPi2qwsAAAEcAAAANmhoZWEM2xKRAAABVAAAACRobXR4rRqYNAAAAfgAABOIbG9jYSKZqcwAACOoAAAJxm1heHAHEgLZAAABeAAAACBuYW1lRuRz4wACENwAAAMUcG9zdP9hAGQAAhPwAAAAIHByZXAbsfg2AAAihAAAAMwAAQAAAAIAALDh6v1fDzz1ABsIAAAAAADE8BEuAAAAANDbTpf6Qf3VCXgIcwACAAkAAgAAAAAAAAABAAAHbP4MAAAJN/pB/mwJeAgAAbMAAAAAAAAAAAAAAAAE4gABAAAE4gCPABYAVgAFAAEAAAAAAA4AAAIAAfIABgABAAMEGQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAK/1AAIX8AAAAhAAAAAEdPT0cAAQAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwACAAIAACA5YAZAAKAAAACgAAAfkAAAH5AAACHwA3Ao4AoQTHADsEcwBCBb0AtQUAAC0BWgCQAr8AaALG/5QDeABnBF0APQG//4kClgA2AjUAMAMc/38EcwBgBHMA7wRzAAsEcwAmBHMACQRzAFoEcwBjBHMAhgRzADsEcwCOAhkAKwHi/5oD/AAyBGIAYgQUAC8D0ACVBvsAMgU0/6QE7wAnBRsAZQUcACcEbQAnBE0AJwVSAGsFjQAnAjsANQRZAAME7gAnBD0AJwbVACcFjAAnBWYAawUAACcFZgBkBOIAJwS5ACQEwACcBRkAWwUPAJsG3gC3BPP/wwTFAKEEtv/lAir/7wNIAKwCKv96A1sARAOK/3kCigDKBD0AIgRoABAEGgA4BGsAOwQ0ADsCygBfBHD/9wRZAA0CBQAfAfz/DAQXABECBQAfBssAEARbAA0EdQA5BGj/xwRyADsCxAAQBAsAHAKfADsEWgBKA+EAZAXOAHcD8f+5A9H/tQPx/+cCpAAwAf0AIAKk/5kFMgBbAfkAAAIY/+YEZQBMBJv/9gV8AAgExQBQAff/7ATc/9wDdADRBh4AXgOAAL4DzgBJBFUAgAKWADYGHgBeA8cA7wL9AOQEMwAbAukAVgLpAGcCkQDIBKH/3QPZAH0COwCeAgr/0wLpAOEDlQC+A84AAgWtALkGBgCxBjAAlgPQ/9IFNP+kBTT/pAU0/6QFNP+kBTT/pAU0/6QHVf+HBRsAZQRtACcEbQAnBG0AJwRtACcCOwA1AjsANQI7ADUCOwA1BTr//wWMACcFZgBrBWYAawVmAGsFZgBrBWYAawQtACMFZAAVBRkAWwUZAFsFGQBbBRkAWwTFAKEErwAnBMsAGwQ9ACIEPQAiBD0AIgQ9ACIEPQAiBD0AIgaXAA8EGgA4BDQAOwQ0ADsENAA7BDQAOwIUACICFAAiAhQAIgIUACIEjQBGBFsADQR1ADkEdQA5BHUAOQR1ADkEdQA5BHgAPQRvACoEWgBKBFoASgRaAEoEWgBKA9H/tQR+/80D0f+1BTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBRsAZQQaADgFGwBlBBoAOAUbAGUEGgA4BRsAZQQaADgFHAAnBQEAOwU6//8EiQA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADwEbQAnBDQAOwVSAGsEcP/3BVIAawRw//cFUgBrBHD/9wVSAGsEcP/3BY0AJwRZAA0FjgAuBHcAKwI7ADUCFAAUAjsANQIUAB8COwA1AhQAIgI7/44CBf92AjsANQIUACIGlAA1BAEAHwRZAAMCIP8PBO4AJwQXABEEfwAhBD0AJwIFAB8EPQAnAgX/ogQ9ACcCmwAfBD0AJwLhAB8ETAAhAkcAHwWMACcEWwANBYwAJwRbAA0FjAAnBFsADQRbAA0FcgAjBG8AEQVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQeDAFAHDQBCBOIAJwLEABAE4gAnAsT/nATiACcCxAAQBLkAJAQLABwEuQAkBAsAHAS5ACQECwAcBLkAJAQLABwEwACcAp8AOwTAAJwCxwA7BMAAnAKf/+IFGQBbBFoASgUZAFsEWgBKBRkAWwRaAEoFGQBbBFoASgUZAFsEWgBKBRkAWwRaAEoG3gC3Bc4AdwTFAKED0f+1BMUAoQS2/+UD8f/nBLb/5QPx/+cEtv/lA/H/5wIGAB4FaABOAsT/SgVpAFsEhQA2BYMAWwTWAEoCIP8PBVIAawRw//cFjAAnBFsADQU0/6QEPQAiB1X/hwaXAA8FZAAVBG8AKgU0/6QEPQAiBG0AJwQ0ADsCO//JAhT/fgVmAGsEdQA5BOIAJwLEAAcFGQBbBFoASgS5ACQECwAcBMAAnAKfADsCIP8PBCUANgG5AIoD0gECA54BDQPIAO8DawD+AgUBAgKnAPoCRf+oA8QA3gMRAKwCY//uAAr9VAAK/dcACvz2AAr91gAK/L8ACvygAlUBLgQlAOgFNP+kAjsAngTR/74F8f/GAp//ygV6ABgFKf9YBVAAHQKgAAsFNP+kBO8AJwRdAC4Fnf+qBG0AJwS2/+UFjQAnBVoAXgI7ADUE7gAnBRr/sgbVACcFjAAnBHcAAAVmAGsFjwAuBQAAJwR3/9wEwACcBMUAoQXLAFIE8//DBYkAdQU8AAkCOwA1BMUAoQRrAD4ESAAoBG8AEQKgAG4ESABXBGsAPgSr/+UD+QB3BG8AOARIACgEBQBmBG8AEQSHAGwCoABuBH8AIQRS/6gEof/dA+EAZAP+AD4EdQA5BNcAXQRv/8sEIQA7BHcAOAQXAG4ESABXBa0AMgPx/7kFpwA/BmsAVAKgAEwESABXBHUAOQRIAFcGawBUBJkAUARjAG0Ex/8kBkoAVwRtACcEbQAnBdoAkQRdAC4FOgBnBLkAJAI7ADUCOwA1BFkAAwhQ/8oIVwAuBjQAoATuACcFhwAnBO0AmwWJACUFNP+kBOsAIwTvACcEXQAuBeL/hARtACcHcf+lBLsAHgWHACcFhwAnBQoALgWI/8oG1QAnBY0AJwVmAGsFjwAuBQAAJwUbAGUEwACcBO0AmwY4AFYE8//DBdUAJQVoAMUHawArB8YAKwX1AIkGzQAuBOoAIwUxAE8HJgAyBNv/sAQ9ACIEZQBDBHYAIgNKABgE2v+FBDQAOwZO/60EAQAWBH8AGQR/ABkEVgAiBIH/vwXfACIEfgAZBHUAOQR/ABkEaP/HBBoAOAPhAFMD0f+1BbAAPQPx/7kEuAAZBE4AcAZmABkGwQASBPoATwZIACIEUAAiBCUAIwZcACQEWP+2BDQAOwQ0ADsEWQANA0oAGAQlADsECwAcAgUAHwIUACIB/P8MBqf/vQa5ABkEcAANBFYAIgR/ABkD0f+1BH8AGQcbAGAGKQBEBOoAIwRPACEG+wArBd0AGQTv/64ESP+cBxQAPgYQADAGwgAUBcMAFgj1ADUHxgAiBAr/qgPc/7UFiQB1BacAPwVaAGIEbwA2BP0AqAP5AHcE/QCoA/kAdwk3AGsIRgA5BVoAZgRvADgHFwBiBh4ASwcbAGAGKQBEBP0AVgQzAEUE4wA4AAr85gAK/Q4ACv4rAAr+PAAK+kEACvpvBYcAJwR/ABkE6gAjBE8AIQT2ACcEbf/HBFIAIgOPABEEXf/8A0r/ywSdAC4ECgARB3H/pQZO/60EuwAeBAEAFgUKAC4EVgAiBQ4AIwSRACEFHgA3BC4AGQZsAKQFgwBsBY0AJwR+ABkHngAnBYkAEQgRAC4GygARBgUAZQTjAEsFGwBlBBoAOATAAJwD4QBTBMUAoQP5AHcExQChA/kAVATz/8MD8f+5BwQAnQVQAFYFaADFBE4AcAVUALkEWwCFBWcA5wRZAA0F/wBiBKj/9AX/AGIEqP/0AjsANQdx/6UGTv+tBQQAIwRgACEFiP/KBIH/vwWNAC4EbwARBY0AJwR+ABkFaADFBE4AcAbVACcF3wAiAjsANQU0/6QEPQAiBTT/pAQ9ACIHVf+HBpcADwRtACcENAA7BWgASAQlADYFaABIBCUANgdx/6UGTv+tBLsAHgQBABYEjAAvBIz/8AWHACcEfwAZBYcAJwR/ABkFZgBrBHUAOQVaAGIEbwA2BVoAYgRvADYFMQBPBCUAIwTtAJsD0f+1BO0AmwPR/7UE7QCbA9H/tQVoAMUETgBwBF0ALgNKABgGzQAuBkgAIgSsADMDQwAJBPP/wwPx/7kE8//DA/H/uQTqADAEawA7BsYARQayAEcGLACqBQoAYQRjAJIEJwCMB43/3gZ0/94HygAnBnUACwTnAEwEFgA9BYkAkAUAAHMFNgBWBEgAKAWI/8oEgf+/BTT/pAQ9ACIE7wAnBGgAEAUcACcEawA7BRwAJwRrADsFjQAnBFkADQTuACcEFwARBO4AJwQXABEEPQAnAgX/5AbVACcGywAQBtUAJwbLABAFjAAnBFsADQUAACcEaP/HBOIAJwLE/94EuQAkBAsAHATAAJwCnwA7BQ8AmwPhAGQFDwCbA+EAZAbeALcFzgB3Bt4AtwXOAHcG3gC3Bc4AdwbeALcFzgB3BLb/5QPx/+cFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7AjsANQIUACICO///AgX/5AVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQVmAGsEdQA5BWkAWwSFADYFaQBbBIUANgVpAFsEhQA2BWkAWwSFADYFaQBbBIUANgUZAFsEWgBKBRkAWwRaAEoFgwBbBNYASgWDAFsE1gBKBYMAWwTWAEoFgwBbBNYASgWDAFsE1gBKBMUAoQPR/7UExQChA9H/tQTFAKED0f+1BMUAoQPR/7UFrP6zAx4A7AP/AAAH9AAAA/8AAAf0AAACrgAAAgQAAAFcAAAEZgAAAikAAAGfAAAA1QAAAAoAAAKXADYClwA2BQsAnAYKAIIGCgCCA4v/TgG9AK4BuQCKAcr/pAGlAM0DBgC3Aw0AlwL7/6EERQBpBID/+wLAAJ4D5QAzBYUAMwFrADYHdgCdAVoAkAKOAKECaQBdAmD/+QQ+ADcDiv/hAukAYwNMAG4ETf/DBJv/9gZJAA0GjgArCFsAJwdYACoGZAAQBIn/9ARzAE4F0QBCBB4AOwSIABAFP//kBV3/5gXBAMIDzgAxB/kAIwTsAO0E9wB9Bg8AtgayAIIGpwCIBnkAtQR4AEUFdQAfBL7/pwRqAJwEmAA0CA8ASQIm/xcEdQAwBGIAYgP8/9UEFAAXA/cAOgJTAGkCjgBmAez/zwT+AF8EjgBLBKIAXwb2AF8G9gBfBPQAXwaNABcACgAAB/v/qQg1AFwDhv/XBGP/pwSmADoEY/+nA6YACgQ2AC0ETgARBB4ADgQXABQFGwAuBBoAFAUKAC4FJgAuBKEAOwQl/4cCpwEGBL0ACgLpADMC6QAIAukAIwLpABYC6QAKAun/8QLp//QC6f/jAukAbQLpABcEBP/ZBXwAQwU1AHAEyAAAA6YAkwXjAIwEYwBwBGsAOQQlAGIEHgAOBEUACgSmADcEVQAKBKYAOgTCAAoF4gAKA6YACgREAAoDwv/yAfcAGATDAAoEjAA/A7IACgPMAAoEYgAKBGcAOQRIAAoEhf+bAf8A6wOPAQQD9gDcA/YAEwP2ANgD9gDXA48BBAOPAQUDjwEEBEb/pAQlAG0EZwA5BXAAYgQdAFUEegAqAgr/BwGw/7IEFP/WByb/wQcpAAoFdgBiBLwACgRZAAsFOv+DBhT/qQQvAAwEyAALBEUACgSw/8EELwByBT4ACgRzAF0GXAAKBt4ACgU7AEoF+wALBE8ACwRnABMGagAKBG//0gQM//UGav+pBIQACgT9AAoFTgBiBcwAQARDAG0Eqf+kBmwAYgRzAF0EcwAKBdoANwS3ADQELwAMBKYAOgROAAQD4wAeCAEACgTP/9kEbwAQBCYANwR/ADsDkgCkBIcANAR7/8cEhgA7BDQAOwRwADAFWgBvBYEAcQVmAC4FvQByBb8AcgQFAKsEaQAfA6YACgRA/38EpP/RAukAigLpAGQC6QB9AukAiQLpAJYC6QB7AukApgRT/9QEGAAnBm8AOgSaAEcEzwBOAiD/DwIg/w8CFQAiAhX/fQIVACIESAAKBGL/lwRi/5cEJQBiBIX/mwSF/5sEhf+bBIX/mwSF/5sEhf+bBIX/mwRnADkDzAAKA8wACgPMAAoDzAAKAfcAGAH3ABgB9wAYAfcAGATCAAoEpgA6BKYAOgSmADoEpgA6BKYAOgRrADkEmwB0BIcAjgRzAFoEcwAJBHMAJgRzAAsEawA5BGsAOQRrADkEJQBtBIX/mwSF/5sEhf+bBGcAOQRnADkEZwA5BGcAOQRiAAoDzAAKA8wACgPMAAoDzAAKA8wACgSMAD8EjAA/BIwAPwSMAD8EwwAKAfcADQH3ABgB9wAYAff/igH3ABgDwv/yBEQACgOmAAoDpgAKA6YACgOmAAoEwgAKBMIACgTCAAoEpgA6BKYAOgSmADoERQAKBEUACgRFAAoEHgAOBB4ADgQeAA4EHgAOBCUAYgQlAGIEJQBiBGsAOQRrADkEawA5BGsAOQRrADkEawA6BeMAjAQlAG0EJQBtBBT/1gQU/9YEFP/WBIX/mwQI/20E//94AjP/ewSw/9IEYf8sBNL/4gSF/5sESAAKA8wACgQU/9YEwwAKAfcAGAREAAoF4gAKBKYAOgRVAAoEJQBiBCUAbQRG/6QB9wAYBCUAbQPMAAoDpgAKBB4ADgH3ABgB9wAYA8L/8gREAAoELwByBIX/mwRIAAoDpgAKA8wACgTIAAsF4gAKBMMACgSmADoEvQAKBFUACgRnADkEJQBiBEb/pAQvAA0EwwAKBGcAOgQlAG0F2gA3BMgACwQvAHIFfABDBTT/pAQ9ACIEbQAnBDQAOwIU/+QAAAABAAAE5AkKBAAAAgICAwUFBgYCAwMEBQIDAgQFBQUFBQUFBQUFAgIEBQUECAYGBgYFBQYGAwUGBQgGBgYGBgUFBgYIBgUFAgQCBAQDBQUFBQUDBQUCAgUCCAUFBQUDBQMFBAcEBAQDAgMGAgIFBQYFAgUEBwQEBQMHBAMFAwMDBQQDAgMEBAYHBwQGBgYGBgYIBgUFBQUDAwMDBgYGBgYGBgUGBgYGBgUFBQUFBQUFBQcFBQUFBQICAgIFBQUFBQUFBQUFBQUFBAUEBgUGBQYFBgUGBQYFBgUGBgYFBQUFBQUFBQUFBQYFBgUGBQYFBgUGBQMCAwIDAgMCAwIHBQUCBgUFBQIFAgUDBQMFAwYFBgUGBQUGBQYFBgUGBQgIBgMGAwYDBQUFBQUFBQUFAwUDBQMGBQYFBgUGBQYFBgUIBwUEBQUEBQQFBAIGAwYFBgUCBgUGBQYFCAcGBQYFBQUDAgYFBgMGBQUFBQMCBQIEBAQEAgMDBAMDAAAAAAAAAwUGAwUHAwYGBgMGBgUGBQUGBgMGBggGBQYGBgUFBQcGBgYDBQUFBQMFBQUEBQUFBQUDBQUFBAQFBQUFBQUFBgQGBwMFBQUHBQUFBwUFBwUGBQMDBQkJBwYGBgYGBgYFBwUIBQYGBgYIBgYGBgYFBgcGBwYICQcIBgYIBQUFBQQFBQcFBQUFBQcFBQUFBQQEBgQFBQcIBgcFBQcFBQUFBAUFAgICBwgFBQUEBQgHBgUIBwYFCAcIBgoJBQQGBgYFBgQGBAoJBgUIBwgHBgUGAAAAAAAABgUGBQYFBQQFBAUFCAcFBQYFBgUGBQcGBgUJBgkIBwYGBQUEBQQFBAYECAYGBQYFBgUHBQcFAwgHBgUGBQYFBgUGBQgHAwYFBgUIBwUFBgUGBQgHBQUFBQYFBgUGBQYFBgUGBQYEBgQGBAYFBQQIBwUEBgQGBAYFCAgHBgUFCQcJBwYFBgYGBQYFBgUGBQYFBgUGBQYFBgUFAggICAgGBQYFBgMFBQUDBgQGBAgHCAcIBwgHBQQGBQYFBgUGBQYFBgUGBQYF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RvpHAkcKRzFHXkdmR25HdkgASAhIEEg9SEVITUiPSJdIx0jPSQ1JFUkdSZtJo0oDSnJKhUqYSqpKvErOSt9K9Et+S/lMLUytTT5Nm03qTnFOok6qTwVPDU8VT4xPlE/sUE9Qt1EnUW9RulIqUjJSlFMPUyJTNFNGU1hTalPqVERUUFTPVOZU+VVhVXhV91ZtVnVWiFaQVw5XhVfgV/dYDlggWF9YZ1jDWMtY01ksWTRZoVopWmRadlp+Wspa0lraWuJa6lryWvpbAltHW8JbylwCXElciVzVXTBdmF3pXmle9V9VX11f22BcYINg3GDkYVNh6WIkYjZiiGLRYxxjdWN9Y61jtWQLZDhkQGTgZOhlIGVoZahl8GZLZrFnAGdzZ/5oXWh0aIZpBWkcaYVpjWmVaahpsGopaqBrCmshazhrSWuIa/lsZWzSbUBty25YbqVu9G9hb9BwSHC6cUxx3HJ5cyhzMHM4c7V0JXRpdK50xnTedOp09nVqddh2s3eIeBh4qHkFeV95k3mweel6AHoXevJ7YXt8e5d8BHxzfM99S317faV95n4ofoR+037ffut+938Dfw9/G391f8yALICKgNyBM4E/gUuBmIHpgk+CqYNUg++D+4QHhBOEH4QnhC+Ee4TLhNeE44UshXKFfoWKheGGMYZ2hn6HAIeNh5mHpYeth7+H0YgziI6ImoimiQmJZ4lziX+Ji4mXiaOJr4m3icmJ24nuigGKCYoRiiOKNIqniq+KworUiueK+osNix+Lhovni/6MFIwnjDqMTYxfjGeMb4yCjJSMp4y5jMuM3IzvjQGNFI0sjT+NUY1djWmNhY2hjbCNwI3MjdiOMo6JjtyO5I9Oj+eQY5DakU2Ru5Iukp2TEJOCk+OUOpSTlOqVb5V3lYOVj5WblaeVs5W/lcuV15Xjle+V+5YHlhmWK5Y3lkOWT5ZblnKWhJaQlpyWqJa0lsaW2JbklvCW/JcIlxSXIJcyl0OXT5dbl3KXiZegl7eXypfdl+mX9ZgBmA2YGZglmDeYSZhhmHiYkJinmL+Y1pjumQWZIJk6mVKZaZl8mY6ZoZmzmcaZ2Jnzmg6aGpommjiaSppcmm2ahZqcmrSay5rjmvqbEpspm0SbXptwm4Kbjpuam6abspvEm9ab7pwFnB2cNJxMnGOce5ySnK2cx5zenPWdDJ0jnTqdUZ1o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A/wDXgAA////pP5sBK4FsAImACUAAAAHAXABbwAD//8AIv5wA9wEUAImAEUAAAAHAXAAqQAH//8AJ/6bBLwFsAImACYAAAAHAXYElwAK//8AEP6IBA8GAAImAEYAAAAHAXYEpf/3//8AJ/6bBOAFsAImACgAAAAHAXYEcwAK//8AO/6RBIgGAAImAEgAAAAHAXYEkAAA//8AJ/35BOAFsAImACgAAAAHA6sBAf6S//8AO/35BIgGAAImAEgAAAAHA6sBHv6S//8AJ/6bBYcFsAImACwAAAAHAXYFAAAK//8ADf6bA/kGAAImAEwAAAAHAXYEfwAK//8AJwAABXEHNgImAC8AAAEHAHcBpQE2AAkAsAQvsA/cMDEA//8AEQAABHUHPQImAE8AAAEHAHcBowE9AAkAsAQvsA/cMDEA//8AJ/7cBXEFsAImAC8AAAAHAXYE0QBL//8AEf7HBEoGAAImAE8AAAAHAXYEYAA2//8AJ/6bA8MFsAImADAAAAAHAXYElwAK////5P6bAhcGAAImAFAAAAAHAXYDRAAK//8AJwAABs4HNgImADEAAAEHAHcCvgE2ABMAsABFWLACLxuxAh8+WbAR3DAxAP//ABAAAAZoBgACJgBRAAABBwB3ApgAAAAJALADL7Ak3DAxAP//ACf+mwbOBbACJgAxAAAABwF2BasACv//ABD+mwZoBFICJgBRAAAABwF2Ba4ACv//ACf+lwWGBbACJgAyAAAABwF2BQIABv//AA3+mwP6BFICJgBSAAAABwF2BGwACv//ACcAAAUEB0ICJgA0AAABBwB3AasBQgAJALADL7AW3DAxAP///8f+YARtBfcCJgBUAAABBwB3AZv/9wAJALANL7Ah3DAxAP//ACf+mwTYBbACJgA2AAAABwF2BJgACv///97+mwLvBFMCJgBWAAAABwF2Az4ACv//ACT+kQS7BccCJgA3AAAABwF2BLAAAP//ABz+iAPEBFACJgBXAAAABwF2BGL/9///AJz+lAUiBbACJgA4AAAABwF2BJ8AA///ADv+kQKuBUECJgBYAAAABwF2A/UAAP//AJsAAAWBBzcCJgA6AAABBwFuAN0BQwAJALABL7AR3DAxAP//AGQAAAQNBewCJgBaAAABBgFuFvgACQCwAS+wEdwwMQD//wCb/psFgQWwAiYAOgAAAAcBdgTV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AesB7AHtAe4B7wHwAfEB8gJSAlQCWAJaAlwCXgJiAmQCagJsAnACcgJ0AnYCegJ8An4CgAKaAqICpAKqArADhwOOA5MDlgACAAAAAgAKO9oAAQNsAAQAAAGxBtI6+jr6BvwHUjfeI2I7mDuqOHYHWDiWOJY43jTeDqg4ljiWO6omhAqSCxQ1MDjeNI43uDdKOOQPYgt+OFQ2GjiMC8AM6gz0N643rji4NhoO1g3qOW4OTDeoOW4OZjfeN9433jfeN9433juYOHY4djh2OHY4ljiWOJY4ljuqOJY7qjuqO6o7qjuqON443jjeON445DhUOFQ4VDhUOFQ4VDiMOIw4jDiMN644uDi4OLg4uDi4OW42GjluN944VDfeOFQ33jhUO5g7mDuYO5g7qjuqOHY4jDh2OIw4djiMOHY4jDh2OIw4ljeuOJY4ljiWOJY4ljjeNN4OqA6oDqgOqDiWN644ljeuOJY3rjeuO6o4uDuqOLg7qji4DtYO1g7WNTA1MDUwON443jjeON443jjeN7g45DluOOQPYg9iD2I33jhUNTAO6Dr6N944djiWOJY7qjjkN94jYjZ+N944dg9iOJY7qjiWNN433jiWOJYPhDuqJoQQfjUwOOQRfDdKElo4ljjkN64S+DluEv43rhW8OW4Xlji4GKgYwhjIGM4ayBrOGwQbNji4OHY4dhu0Nn44ljiWON4dKh7cIJo03jY0OJY33iHQI2I2fiNsOHY3SiW6OJY03jiWOJY4ljuqJoQ7mDUwNjQ3SjiWOJYmpihAND4pHingKm44VCrMK6Y3QCwwOIw3qCz6LSQ4uDYaLoo5bjYaN6gxEDFOMoA0aDYaMwI4jDiMN0AziDOyNAg5bjQ+NGg33ji4NI45bjSOOW40tDYaNn43QDZ+N0o3qDTeNN403jTeOJY7mDUwOOQ5bjjkN0o3qDeuOJY3SjeoOJY4ljiWN944VDfeOFQ4djiMOIw4jDdKN6g7qji4OLg2GjY0OW42NDluNjQ5bjZ+N0A3QDdKN6g33jhUOJY3rje4N7g3uDfeOFQ33jhUN944VDfeOFQ33jhUN944VDfeOFQ33jhUN944VDfeOFQ33jhUN944VDh2OIw4djiMOHY4jDh2OIw4djiMOHY4jDh2OIw4djiMOJY4ljuqOLg7qji4O6o4uDuqOLg7qji4O6o4uDuqOLg4uDjeON445DluOOQ5bjjkOW445DluO6o6+jmIOvo6+jr6Ovo6+jsAOwo7HDsuO0A7XjtoO3I7mDuqO6oAAQGxAAQABgALAAwAEwAlACYAJwAoACkAKgAsAC0ALgAvADAAMQAyADMANAA1ADYAOAA5ADoAOwA8AD0APgA/AEUARgBJAEoATABPAFEAUgBTAFQAVgBYAFoAWwBcAF0AXwCDAIQAhQCGAIcAiACKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJwAnQCeAJ8AoACjAKQApQCmAKcAqACrAKwArQCuALQAtQC2ALcAuAC5AMAAwQDCAMMAxADFAMYAxwDIAMkAywDNAM8A0QDTANUA1gDXANgA2QDaANsA3ADdAN4A5wDoAOsA7QDvAPEA8wD3APkA/AD+AQABAgEGAQcBCAEJAQoBCwEMAQ8BEAERARIBEwEUARgBGgEcASUBJwEpASsBLQEvATEBMwE1ATcBOQE6ATsBPAE+AUABTgFPAWIBZQFmAXkBewF8AX0BfgF/AYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZIBkwGUAZUBlgGXAZgBmgGbAZ4BoQGjAaYBpwGpAa0BrgGvAbEBsgGzAbQBtQG2AbgBuQG8AcMBxAHFAcYByQHKAcsBzAHNAc4BzwHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3QHeAd8B4AHhAeMB5AHlAeYB6AHpAesB7AHtAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6Af0CAQIDAgUCBgIHAggCCQIMAg0CDwIQAhECEwIUAhYCFwIcAh0CIQIlAiYCKQI2AjcCOAI5AjoCRAJRAlICUwJUAlgCWQJcAl4CYAJiAmQCbAJuAnACcQJyAnQCdQJ9AoICgwKEAosCjwKRApICkwKUApUCmAKZApsCnQKeAp8CqAKpAq0CrwKwArECsgKzArQCtQK4ArkCvQK+Ar8C1gLXAuYC5wL4AvoC/AMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDLAMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDQwNGA0gDVANVA1YDVwNYA1kDWgNbA1wDcANxA3MDdAN1A34DfwPZA9sD3APeA+ED4gPpA+wEMQQzBDQACgA4/8QBJf/EASf/xAFi/8QBxf/EAc7/xAHl/8QCYv/EAm7/xAJ2/8QAFQA6ABQAOwAmAD0AFgCgABYBNwAmATkAFgE7ABYBfwAWAZUAFgGbABYCNwAUAjkAFAJwABYCcgAWAvgAJgL6ACYC/AAmA1QAFgNWABYDWAAWA1oAFgABABP/CADOABD+7gAS/u4AJf9AAC7/MAA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFb/5gBZ/+oAWv/oAF3/6ACD/0AAhP9AAIX/QACG/0AAh/9AAIj/QACj/94ApP/eAKX/3gCm/94Ap//eAKj/3gCq/+sAq//rAKz/6wCt/+sArv/rALX/6wC2/+sAt//rALj/6wC5/+sAvP/qAL3/6gC+/+oAv//qAMD/6ADC/+gAw/9AAMT/3gDF/0AAxv/eAMf/QADI/94Ayv/rAMz/6wDO/+sA0P/rANL/6wDW/+sA2P/rANr/6wDc/+sA3v/rAOD/6wDi/+sA5P/rAOb/6wD3/zABEP/rARL/6wEU/+sBFv/rASUAFAEnABQBLP/qAS7/6gEw/+oBMv/qATT/6gE2/+oBOv/oAUb/6wFI/+oBTv9AAU//3gFiABQBef9AAYL/QAGF/0ABjP9AAZz/6wGg/+oBof/rAaP/6AGt/+gBr//rAbL/6wGz/+sBtf/qAbv/6gG8/+sBvf/qAcUAFAHL/zABzgAUAdP/QAHlABQB8//eAfj/6wIB/+sCBP/rAgb/6AIH/+sCE//rAhT/6wIX/+sCIf/oAin/QAI2/+sCOP/oAjr/6AI8/+sCQP/rAkT/6wJiABQCa//rAm3/6wJuABQCcf/oAnYAFAKS/0ACk//eApT/QAKV/94Cmf/rApv/6wKd/+sCqf/rAqv/6wKt/+sCsf/oArP/6AK1/+gCw//rAsT/6wLF/+sCz//rAtb/QALX/94DAv9AAwP/3gME/0ADBf/eAwb/QAMH/94DCP9AAwn/3gMK/0ADC//eAwz/QAMN/94DDv9AAw//3gMQ/0ADEf/eAxL/QAMT/94DFP9AAxX/3gMW/0ADF//eAxj/QAMZ/94DG//rAx3/6wMf/+sDIf/rAyP/6wMl/+sDJ//rAyn/6wMv/+sDMf/rAzP/6wM1/+sDN//rAzn/6wM7/+sDPf/rAz//6wNB/+sDQ//rA0X/6wNH/+oDSf/qA0v/6gNN/+oDT//qA1H/6gNT/+oDVf/oA1f/6ANZ/+gDW//oA3L+7gN2/u4Dev7uA3v+7gPs/8AAIAA4/98AOv/kADv/7AA9/90AoP/dASX/3wEn/98BN//sATn/3QE7/90BYv/fAX//3QGV/90Bm//dAcX/3wHO/98B5f/fAjf/5AI5/+QCYv/fAm7/3wJw/90Ccv/dAnb/3wL4/+wC+v/sAvz/7ANU/90DVv/dA1j/3QNa/90D7AAOABoAOP/OADr/7QA9/9AAoP/QASX/zgEn/84BOf/QATv/0AFi/84Bf//QAZX/0AGb/9ABxf/OAc7/zgHl/84CN//tAjn/7QJi/84Cbv/OAnD/0AJy/9ACdv/OA1T/0ANW/9ADWP/QA1r/0AAQAC7/7gA5/+4AnP/uAJ3/7gCe/+4An//uAPf/7gEr/+4BLf/uAS//7gEx/+4BM//uATX/7gHL/+4DRv/uA0j/7gBKAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCq/+gAq//oAKz/6ACt/+gArv/oAMr/6ADM/+gAzv/oAND/6ADS/+gA1v/oANj/6ADa/+gA3P/oAN7/6ADg/+gA4v/oAOT/6ADm/+gBFv/oAUb/6AFmABABnP/oAaH/6AGy/+gBs//oAfj/6AIE/+gCB//oAhP/6AIU/+gCF//oAjz/6AJA/+gCRP/oAmv/6AJt/+gCmf/oApv/6AKd/+gCq//oAsP/6ALE/+gCxf/oAs//6AMb/+gDHf/oAx//6AMh/+gDI//oAyX/6AMn/+gDKf/oAz3/6AM//+gDQf/oA0X/6ANwABADcQAQA3MAEAN0ABADdQAQA34AEAN/ABAAAgIF/9YDcf+YAD0AR//sAEj/7ABJ/+wAS//sAFX/7ACq/+wAq//sAKz/7ACt/+wArv/sAMr/7ADM/+wAzv/sAND/7ADS/+wA1v/sANj/7ADa/+wA3P/sAN7/7ADg/+wA4v/sAOT/7ADm/+wBFv/sAUb/7AGc/+wBof/sAbL/7AGz/+wB+P/sAgT/7AIH/+wCE//sAhT/7AIX/+wCPP/sAkD/7AJE/+wCa//sAm3/7AKZ/+wCm//sAp3/7AKr/+wCw//sAsT/7ALF/+wCz//sAxv/7AMd/+wDH//sAyH/7AMj/+wDJf/sAyf/7AMp/+wDPf/sAz//7ANB/+wDRf/sABgAU//iALX/4gC2/+IAt//iALj/4gC5/+IBEP/iARL/4gEU/+IBr//iAbz/4gIB/+ICNv/iAqn/4gKt/+IDL//iAzH/4gMz/+IDNf/iAzf/4gM5/+IDO//iA0P/4gNxABgABgAQ/4QAEv+EA3L/hAN2/4QDev+EA3v/hAAQAC7/7AA5/+wAnP/sAJ3/7ACe/+wAn//sAPf/7AEr/+wBLf/sAS//7AEx/+wBM//sATX/7AHL/+wDRv/sA0j/7AALAFv/zAPW/9cD1/+4A9j/7gPZ/70D3P/yA97/8gPm//ED6v/zA+wAEwP3/7cABABKABQAWAAyAFsAEQNxABAAHgAG//IAC//yAFr/8wBd//MAwP/zAML/8wE6//MBZv/yAaP/8wGt//MCBf/1Agb/8wIh//MCOP/zAjr/8wJx//MCsf/zArP/8wK1//MDVf/zA1f/8wNZ//MDW//zA3D/8gNx//IDc//yA3T/8gN1//IDfv/yA3//8gAIAFv/5QGW/8sBuP/kA9z/7APe/+wD5v/rA+r/7QPsAA0APgAn//MAK//zADP/8wA1//MAiv/zAJX/8wCW//MAl//zAJj/8wCZ//MAm//zAMn/8wDL//MAzf/zAM//8wDf//MA4f/zAOP/8wDl//MBD//zARH/8wET//MBFf/zAUX/8wFS//MBfv/zAYn/8wGQ//MBqwANAcf/8wHh//MB5P/zAiP/8wI1//MCO//zAj3/8wI///MCQf/zAkP/8wJq//MCbP/zAqj/8wKq//MCrP/zAs7/8wMu//MDMP/zAzL/8wM0//MDNv/zAzj/8wM6//MDPP/zAz7/8wNA//MDQv/zA0T/8wNc//MEMf/zBDL/8wQ0//MENf/zAD8AJ//mACv/5gAz/+YANf/mAIr/5gCV/+YAlv/mAJf/5gCY/+YAmf/mAJv/5gDJ/+YAy//mAM3/5gDP/+YA3//mAOH/5gDj/+YA5f/mAQ//5gER/+YBE//mARX/5gFF/+YBUv/mAX7/5gGJ/+YBkP/mAZb/wgGrABABx//mAeH/5gHk/+YCI//mAjX/5gI7/+YCPf/mAj//5gJB/+YCQ//mAmr/5gJs/+YCqP/mAqr/5gKs/+YCzv/mAy7/5gMw/+YDMv/mAzT/5gM2/+YDOP/mAzr/5gM8/+YDPv/mA0D/5gNC/+YDRP/mA1z/5gQx/+YEMv/mBDT/5gQ1/+YANwAl/+QAPP/SAD3/0wCD/+QAhP/kAIX/5ACG/+QAh//kAIj/5ACg/9MAw//kAMX/5ADH/+QBOf/TATv/0wFO/+QBef/kAX//0wGC/+QBhf/kAYz/5AGV/9MBl//SAZv/0wGr/+IB0//kAdn/0gHo/9ICKf/kAlj/0gJw/9MCcv/TAnT/0gKD/9ICkv/kApT/5AKe/9ICvv/SAtb/5AMC/+QDBP/kAwb/5AMI/+QDCv/kAwz/5AMO/+QDEP/kAxL/5AMU/+QDFv/kAxj/5ANU/9MDVv/TA1j/0wNa/9MAJwAQ/0YAEv9GACX/zQCD/80AhP/NAIX/zQCG/80Ah//NAIj/zQDD/80Axf/NAMf/zQFO/80Bef/NAYL/zQGF/80BjP/NAbH/8gHT/80CKf/NApL/zQKU/80C1v/NAwL/zQME/80DBv/NAwj/zQMK/80DDP/NAw7/zQMQ/80DEv/NAxT/zQMW/80DGP/NA3L/RgN2/0YDev9GA3v/RgABAasADgCvAEf/3ABI/9wASf/cAEv/3ABR/8EAUv/BAFP/1gBU/8EAVf/cAFn/3QBa/+EAXf/hAKr/3ACr/9wArP/cAK3/3ACu/9wAtP/BALX/1gC2/9YAt//WALj/1gC5/9YAvP/dAL3/3QC+/90Av//dAMD/4QDC/+EAyv/cAMz/3ADO/9wA0P/cANL/3ADW/9wA2P/cANr/3ADc/9wA3v/cAOD/3ADi/9wA5P/cAOb/3AEH/8EBCf/BAQv/wQEM/8EBEP/WARL/1gEU/9YBFv/cASz/3QEu/90BMP/dATL/3QE0/90BNv/dATr/4QFG/9wBSP/dAZz/3AGe/8EBoP/dAaH/3AGj/+EBpf/mAaf/wQGo/+sBqf/pAa3/4QGu//ABr//WAbD/5wGy/9wBs//cAbT/4wG1/90Btv/OAbj/1AG5/9sBu//dAbz/1gG9/90B9v/BAfj/3AH7/8EB/P/BAf3/wQH//8ECAP/BAgH/1gIC/8ECA//BAgT/3AIG/+ECB//cAgn/wQIL/8ECDP/BAg//wQIR/8ECE//cAhT/3AIW/8ECF//cAh3/wQIf/8ECIP/BAiH/4QI2/9YCOP/hAjr/4QI8/9wCQP/cAkT/3AJN/8ECXf/BAmX/wQJn/8ECa//cAm3/3AJx/+ECiv/BAoz/wQKQ/8ECmf/cApv/3AKd/9wCpf/BAqf/wQKp/9YCq//cAq3/1gKx/+ECs//hArX/4QK5/8ECu//BAr3/wQLD/9wCxP/cAsX/3ALP/9wC5//BAxv/3AMd/9wDH//cAyH/3AMj/9wDJf/cAyf/3AMp/9wDL//WAzH/1gMz/9YDNf/WAzf/1gM5/9YDO//WAz3/3AM//9wDQf/cA0P/1gNF/9wDR//dA0n/3QNL/90DTf/dA0//3QNR/90DU//dA1X/4QNX/+EDWf/hA1v/4QB2AAb/2gAL/9oAR//wAEj/8ABJ//AAS//wAFX/8ABZ/+8AWv/cAF3/3ACq//AAq//wAKz/8ACt//AArv/wALz/7wC9/+8Avv/vAL//7wDA/9wAwv/cAMr/8ADM//AAzv/wAND/8ADS//AA1v/wANj/8ADa//AA3P/wAN7/8ADg//AA4v/wAOT/8ADm//ABFv/wASz/7wEu/+8BMP/vATL/7wE0/+8BNv/vATr/3AFG//ABSP/vAWb/2gGc//ABoP/vAaH/8AGj/9wBqP/sAasADwGt/9wBsP/qAbL/8AGz//ABtP/OAbX/7wG2/+cBu//vAb3/7wH4//ACBP/wAgb/3AIH//ACE//wAhT/8AIX//ACIf/cAjj/3AI6/9wCPP/wAkD/8AJE//ACa//wAm3/8AJx/9wCmf/wApv/8AKd//ACq//wArH/3AKz/9wCtf/cAsP/8ALE//ACxf/wAs//8AMb//ADHf/wAx//8AMh//ADI//wAyX/8AMn//ADKf/wAz3/8AM///ADQf/wA0X/8ANH/+8DSf/vA0v/7wNN/+8DT//vA1H/7wNT/+8DVf/cA1f/3ANZ/9wDW//cA3D/2gNx/9oDc//aA3T/2gN1/9oDfv/aA3//2gBEABAADAASAAwAR//nAEj/5wBJ/+cAS//nAFX/5wCq/+cAq//nAKz/5wCt/+cArv/nAMr/5wDM/+cAzv/nAND/5wDS/+cA1v/nANj/5wDa/+cA3P/nAN7/5wDg/+cA4v/nAOT/5wDm/+cBFv/nAUb/5wGc/+cBof/nAasADwGy/+cBs//nAfj/5wIE/+cCB//nAhP/5wIU/+cCF//nAjz/5wJA/+cCRP/nAmv/5wJt/+cCmf/nApv/5wKd/+cCq//nAsP/5wLE/+cCxf/nAs//5wMb/+cDHf/nAx//5wMh/+cDI//nAyX/5wMn/+cDKf/nAz3/5wM//+cDQf/nA0X/5wNyAAwDdgAMA3oADAN7AAwABgG0/+oB9//uAgX/1QIP/+0CY//sAtH/7AABAgX/wAABAbQAIAB+AAYADAALAAwAR//oAEj/6ABJ/+gASgAMAEv/6ABT/+oAVf/oAFoACwBdAAsAqv/oAKv/6ACs/+gArf/oAK7/6AC1/+oAtv/qALf/6gC4/+oAuf/qAMAACwDCAAsAyv/oAMz/6ADO/+gA0P/oANL/6ADW/+gA2P/oANr/6ADc/+gA3v/oAOD/6ADi/+gA5P/oAOb/6AEQ/+oBEv/qART/6gEW/+gBOgALAUb/6AFmAAwBnP/oAaH/6AGjAAsBq/+QAa0ACwGv/+oBsAALAbL/6AGz/+gBtAAMAbz/6gH4/+gCAf/qAgT/6AIGAAsCB//oAhP/6AIU/+gCF//oAiEACwI2/+oCOAALAjoACwI8/+gCQP/oAkT/6AJr/+gCbf/oAnEACwKZ/+gCm//oAp3/6AKp/+oCq//oAq3/6gKxAAsCswALArUACwLD/+gCxP/oAsX/6ALP/+gDG//oAx3/6AMf/+gDIf/oAyP/6AMl/+gDJ//oAyn/6AMv/+oDMf/qAzP/6gM1/+oDN//qAzn/6gM7/+oDPf/oAz//6ANB/+gDQ//qA0X/6ANVAAsDVwALA1kACwNbAAsDcAAMA3EADANzAAwDdAAMA3UADAN+AAwDfwAMA9cADQPZAA4D2v/1A9z/7APe/+0D5v/sA+r/7gPs/78D9wANAAECBf/iAA0AXP/tAF7/7QE9/+0BP//tAUH/7QH5/+0CBf/AAgj/7QJZ/+0Cdf/tAoT/7QKf/+0Cv//tAAwAXP/yAF7/8gE9//IBP//yAUH/8gH5//ICCP/yAln/8gJ1//IChP/yAp//8gK///IAHwBa//QAXP/yAF3/9ABe//MAwP/0AML/9AE6//QBPf/zAT//8wFB//MBo//0Aa3/9AH5//ICBv/0Agj/8gIh//QCOP/0Ajr/9AJZ//ICcf/0AnX/8gKE//ICn//yArH/9AKz//QCtf/0Ar//8gNV//QDV//0A1n/9ANb//QAXQAG/8oAC//KADj/0gA6/9QAPP/0AD3/0wBa/+YAXP/vAF3/5gCg/9MAwP/mAML/5gEl/9IBJ//SATn/0wE6/+YBO//TAWL/0gFm/8oBf//TAZX/0wGX//QBm//TAaP/5gGt/+YBxf/SAc7/0gHR/+0B2f/0AeX/0gHm/+0B6P/0Aer/4QHv/9QB+f/vAgX/yQIG/+YCCP/vAg//0QIh/+YCJP/lAjf/1AI4/+YCOf/UAjr/5gJC/+MCWP/0Aln/7wJi/9ICY//EAm7/0gJw/9MCcf/mAnL/0wJ0//QCdf/vAnb/0gJ4/+ECev/hAoP/9AKE/+8Cjf/hAp7/9AKf/+8CsP/tArH/5gKy/+0Cs//mArT/7QK1/+YCtv/hAr7/9AK//+8Cxv/UAsf/9QLI/+cC0P9kAtH/yQNU/9MDVf/mA1b/0wNX/+YDWP/TA1n/5gNa/9MDW//mA3D/ygNx/8oDc//KA3T/ygN1/8oDfv/KA3//ygBsAAb/wAAL/8AAOP+dADr/xwA8//AAPf+rAFH/0gBS/9IAVP/SAKD/qwC0/9IBB//SAQn/0gEL/9IBDP/SASX/nQEn/50BOf+rATv/qwFi/50BZv/AAX//qwGV/6sBl//wAZv/qwGe/9IBp//SAcX/nQHM//UBzv+dAdH/6gHZ//AB3v/1AeX/nQHm/+oB6P/wAer/5QHv/8EB9v/SAfv/0gH8/9IB/f/SAf//0gIA/9ICAv/SAgP/0gIF/80CCf/SAgv/0gIM/9ICD//SAhH/0gIW/9ICHf/SAh//0gIg/9ICN//HAjn/xwJN/9ICWP/wAl3/0gJi/50CY//MAmX/0gJn/9ICbv+dAnD/qwJy/6sCdP/wAnb/nQJ4/+UCev/lAn7/3wKD//ACh//1Aor/0gKM/9ICjf/lApD/0gKe//ACpf/SAqf/0gKw/+oCsv/qArT/6gK2/+UCuf/SArv/0gK9/9ICvv/wAsb/zgLI/+oCyv/1AtD/ngLR/84C1P/1Auf/0gNU/6sDVv+rA1j/qwNa/6sDcP/AA3H/wANz/8ADdP/AA3X/wAN+/8ADf//AAG8ABv+xAAv/sQA4/54AOv/FADz/8gA9/6gAUf/PAFL/zwBU/88AXP/vAKD/qAC0/88BB//PAQn/zwEL/88BDP/PASX/ngEn/54BOf+oATv/qAFi/54BZv+xAX//qAGV/6gBl//yAZv/qAGe/88Bp//PAcX/ngHO/54B0f/sAdn/8gHl/54B5v/sAej/8gHq/+EB7//CAfb/zwH5/+8B+//PAfz/zwH9/88B///PAgD/zwIC/88CA//PAgX/xgII/+8CCf/PAgv/zwIM/88CD//PAhH/zwIW/88CHf/PAh//zwIg/88CN//FAjn/xQJN/88CWP/yAln/7wJd/88CYv+eAmP/wAJl/88CZ//PAm7/ngJw/6gCcv+oAnT/8gJ1/+8Cdv+eAnj/4QJ6/+ECfv/fAoP/8gKE/+8Civ/PAoz/zwKN/+ECkP/PAp7/8gKf/+8Cpf/PAqf/zwKw/+wCsv/sArT/7AK2/+ECuf/PArv/zwK9/88Cvv/yAr//7wLG/80CyP/oAtD/nwLR/8YC5//PA1T/qANW/6gDWP+oA1r/qANw/7EDcf+xA3P/sQN0/7EDdf+xA37/sQN//7EATQA4/74AUf/hAFL/4QBU/+EAWv/vAF3/7wC0/+EAwP/vAML/7wEH/+EBCf/hAQv/4QEM/+EBJf++ASf/vgE6/+8BYv++AZ7/4QGj/+8Bp//hAa3/7wHF/74Bzv++AeX/vgHv/8kB9v/hAfv/4QH8/+EB/f/hAf//4QIA/+ECAv/hAgP/4QIF/98CBv/vAgn/4QIL/+ECDP/hAg//4QIR/+ECFv/hAh3/4QIf/+ECIP/hAiH/7wIk/+0COP/vAjr/7wJC/+sCTf/hAl3/4QJi/74CY//fAmX/4QJn/+ECbv++AnH/7wJ2/74Cfv/pAor/4QKM/+ECkP/hAqX/4QKn/+ECsf/vArP/7wK1/+8Cuf/hArv/4QK9/+ECx//1AtH/4ALn/+EDVf/vA1f/7wNZ/+8DW//vAGQAOP/mADr/5wA8//IAPf/nAFH/1gBS/9YAVP/WAFz/8QCg/+cAtP/WAQf/1gEJ/9YBC//WAQz/1gEl/+YBJ//mATn/5wE7/+cBYv/mAX//5wGV/+cBl//yAZv/5wGe/9YBp//WAcX/5gHO/+YB0f/uAdn/8gHl/+YB5v/uAej/8gHq/+gB7//mAfb/1gH5//EB+//WAfz/1gH9/9YB///WAgD/1gIC/9YCA//WAgX/0AII//ECCf/WAgv/1gIM/9YCD//WAhH/1gIW/9YCHf/WAh//1gIg/9YCN//nAjn/5wJN/9YCWP/yAln/8QJd/9YCYv/mAmP/zgJl/9YCZ//WAm7/5gJw/+cCcv/nAnT/8gJ1//ECdv/mAnj/6AJ6/+gCg//yAoT/8QKK/9YCjP/WAo3/6AKQ/9YCnv/yAp//8QKl/9YCp//WArD/7gKy/+4CtP/uArb/6AK5/9YCu//WAr3/1gK+//ICv//xAsb/5wLI/+0C0P/mAtH/0ALn/9YDVP/nA1b/5wNY/+cDWv/nAAICLQALAtD/5gCTACUAEAAn/+gAK//oADP/6AA1/+gAOP/gADr/4AA9/98AgwAQAIQAEACFABAAhgAQAIcAEACIABAAiv/oAJX/6ACW/+gAl//oAJj/6ACZ/+gAm//oAKD/3wDDABAAxQAQAMcAEADJ/+gAy//oAM3/6ADP/+gA3//oAOH/6ADj/+gA5f/oAQ//6AER/+gBE//oARX/6AEl/+ABJ//gATn/3wE7/98BRf/oAU4AEAFS/+gBYv/gAXkAEAF+/+gBf//fAYIAEAGFABABif/oAYwAEAGQ/+gBlf/fAZv/3wHF/+ABx//oAcwAEAHO/+AB0wAQAdcAFAHeABAB4f/oAeT/6AHl/+AB6v/hAe//4AH3ABMB/gAQAgr/4AIcABACI//oAikAEAI1/+gCN//gAjn/4AI7/+gCPf/oAj//6AJB/+gCQ//oAmL/4AJq/+gCbP/oAm7/4AJw/98Ccv/fAnb/4AJ4/+ECef/gAnr/4QJ7/+ACf//hAocAEAKIABACjf/hAo7/4AKSABAClAAQApr/6QKo/+gCqv/oAqz/6AK2/+ECt//gAsb/3wLI/94CygAQAs7/6ALQ/98C0v/yAtQAEALVABAC1gAQAwIAEAMEABADBgAQAwgAEAMKABADDAAQAw4AEAMQABADEgAQAxQAEAMWABADGAAQAy7/6AMw/+gDMv/oAzT/6AM2/+gDOP/oAzr/6AM8/+gDPv/oA0D/6ANC/+gDRP/oA1T/3wNW/98DWP/fA1r/3wNc/+gEMf/oBDL/6AQ0/+gENf/oADIAG//yADj/8QA6//QAPP/0AD3/8ACg//ABJf/xASf/8QE5//ABO//wAWL/8QF///ABlf/wAZf/9AGb//ABxf/xAcz/9QHO//EB0f/zAdn/9AHe//UB5f/xAeb/8wHo//QB7//xAjf/9AI5//QCWP/0AmL/8QJu//ECcP/wAnL/8AJ0//QCdv/xAoP/9AKH//UCnv/0ArD/8wKy//MCtP/zAr7/9ALG//ICyP/yAsr/9QLQ//IC1P/1A1T/8ANW//ADWP/wA1r/8AAIAFgADgCJ/tcBq/+YAbH/xwHX/xIB9/9SAsL/zwPs/4AAZgAlAA8AOP/mADr/5gA8AA4APf/mAIMADwCEAA8AhQAPAIYADwCHAA8AiAAPAKD/5gDDAA8AxQAPAMcADwEl/+YBJ//mATn/5gE7/+YBTgAPAWL/5gF5AA8Bf//mAYIADwGFAA8BjAAPAZX/5gGXAA4Bm//mAcX/5gHMAA4Bzv/mAdEACwHTAA8B1wATAdkADgHeAA4B5f/mAeYACwHoAA4B6v/lAe//5gHw//QB9wASAf4ADwIF/+cCCv/oAg//5wIcAA8CKQAPAjf/5gI5/+YCWAAOAmL/5gJj/+cCbv/mAnD/5gJy/+YCdAAOAnb/5gJ4/+UCef/oAnr/5QJ7/+gCgwAOAocADgKIAA8Cjf/lAo7/6AKSAA8ClAAPAp4ADgKwAAsCsgALArQACwK2/+UCt//oAr4ADgLG/+YCyP/mAsoADgLQ/+YC0f/nAtQADgLVAA8C1gAPAwIADwMEAA8DBgAPAwgADwMKAA8DDAAPAw4ADwMQAA8DEgAPAxQADwMWAA8DGAAPA1T/5gNW/+YDWP/mA1r/5gA3AAb/vwAL/78AOP+fADr/yQA9/60AoP+tASX/nwEn/58BOf+tATv/rQFi/58BZv+/AX//rQGV/60Bm/+tAcX/nwHO/58B0f/sAeX/nwHm/+wB6v/mAe//xAIF/80CD//VAjf/yQI5/8kCYv+fAmP/zAJu/58CcP+tAnL/rQJ2/58CeP/mAnr/5gJ+/98Cjf/mArD/7AKy/+wCtP/sArb/5gLG/9ECyP/sAtD/oQLR/88DVP+tA1b/rQNY/60DWv+tA3D/vwNx/78Dc/+/A3T/vwN1/78Dfv+/A3//vwAwADj/4wA8/+UAPf/kAKD/5AEl/+MBJ//jATn/5AE7/+QBYv/jAX//5AGV/+QBl//lAZv/5AHF/+MBzP/lAc7/4wHR/+kB1//iAdn/5QHe/+UB5f/jAeb/6QHo/+UB/v/qAhz/6gJY/+UCYv/jAm7/4wJw/+QCcv/kAnT/5QJ2/+MCg//lAof/5QKI/+oCnv/lArD/6QKy/+kCtP/pAr7/5QLK/+UC0P/kAtT/5QLV/+oDVP/kA1b/5ANY/+QDWv/kACMAOP/iADz/5AEl/+IBJ//iAWL/4gGX/+QBxf/iAcz/5AHO/+IB0f/pAdf/4QHZ/+QB3v/kAeX/4gHm/+kB6P/kAff/5AH+/+sCHP/rAlj/5AJi/+ICbv/iAnT/5AJ2/+ICg//kAof/5AKI/+sCnv/kArD/6QKy/+kCtP/pAr7/5ALK/+QC1P/kAtX/6wAXADj/6wA9//MAoP/zASX/6wEn/+sBOf/zATv/8wFi/+sBf//zAZX/8wGb//MBxf/rAc7/6wHl/+sCYv/rAm7/6wJw//MCcv/zAnb/6wNU//MDVv/zA1j/8wNa//MANgBR/+8AUv/vAFT/7wBc//AAtP/vAQf/7wEJ/+8BC//vAQz/7wGe/+8Bp//vAfb/7wH3/+4B+f/wAfv/7wH8/+8B/f/vAf//7wIA/+8CAv/vAgP/7wIF/+4CCP/wAgn/7wIL/+8CDP/vAg//7wIR/+8CFv/vAh3/7wIf/+8CIP/vAiT/9AJC//ECTf/vAln/8AJd/+8CY//vAmX/7wJn/+8Cdf/wAoT/8AKK/+8CjP/vApD/7wKf//ACpf/vAqf/7wK5/+8Cu//vAr3/7wK///AC0f/vAuf/7wAiAAb/8gAL//IAWv/1AF3/9QDA//UAwv/1ATr/9QFm//IBo//1Aa3/9QIF//QCBv/1Ag//9AIh//UCJP/1Ajj/9QI6//UCY//1AnH/9QKx//UCs//1ArX/9QLR//UDVf/1A1f/9QNZ//UDW//1A3D/8gNx//IDc//yA3T/8gN1//IDfv/yA3//8gAyAFH/7gBS/+4AVP/uALT/7gEH/+4BCf/uAQv/7gEM/+4Bnv/uAaf/7gH2/+4B9wAUAfv/7gH8/+4B/f/uAf//7gIA/+4CAv/uAgP/7gIF/+0CCf/uAgr/7QIL/+4CDP/uAg3/0AIP/+4CEf/uAhb/7gId/+4CH//uAiD/7gJN/+4CXf/uAmP/7QJl/+4CZ//uAnn/7QJ7/+0Civ/uAoz/7gKO/+0CkP/uAqX/7gKn/+4Ct//tArn/7gK7/+4Cvf/uAtH/7QLn/+4ACgAG//UAC//1AWb/9QNw//UDcf/1A3P/9QN0//UDdf/1A37/9QN///UAWQBH//AASP/wAEn/8ABL//AAU//HAFX/8ACq//AAq//wAKz/8ACt//AArv/wALX/xwC2/8cAt//HALj/xwC5/8cAyv/wAMz/8ADO//AA0P/wANL/8ADW//AA2P/wANr/8ADc//AA3v/wAOD/8ADi//AA5P/wAOb/8AEQ/8cBEv/HART/xwEW//ABRv/wAZz/8AGh//ABr//HAbL/8AGz//ABvP/HAfj/8AIB/8cCBP/wAgf/8AIT//ACFP/wAhf/8AI2/8cCPP/wAj7/6wJA//ACRP/wAmv/8AJt//ACmf/wApv/8AKd//ACqf/HAqv/8AKt/8cCw//wAsT/8ALF//ACz//wAxv/8AMd//ADH//wAyH/8AMj//ADJf/wAyf/8AMp//ADL//HAzH/xwMz/8cDNf/HAzf/xwM5/8cDO//HAz3/8AM///ADQf/wA0P/xwNF//AD3P/rA97/6wPm/+kD6v/rAKEABgANAAsADQBF//AAR//AAEj/wABJ/8AASgANAEv/wABT/+IAVf/AAFoACwBdAAsAo//wAKT/8ACl//AApv/wAKf/8ACo//AAqv/AAKv/wACs/8AArf/AAK7/wAC1/+IAtv/iALf/4gC4/+IAuf/iAMAACwDCAAsAxP/wAMb/8ADI//AAyv/AAMz/wADO/8AA0P/AANL/wADW/8AA2P/AANr/wADc/8AA3v/AAOD/wADi/8AA5P/AAOb/wAEQ/+IBEv/iART/4gEW/8ABOgALAUb/wAFP//ABZgANAZz/wAGh/8ABowALAa0ACwGv/+IBsf/WAbL/wAGz/8ABtv/VAbz/4gHz//AB9//IAfj/wAH+/9cCAf/iAgT/wAIGAAsCB//AAhP/wAIU/8ACF//AAhz/1wIhAAsCNv/iAjgACwI6AAsCPP/AAj7/7AJA/8ACQgAMAkT/wAJr/8ACbf/AAnEACwKI/9cCk//wApX/8AKZ/8ACm//AAp3/wAKp/+ICq//AAq3/4gKxAAsCswALArUACwLD/8ACxP/AAsX/wALHAAsCyQALAs//wALV/9cC1//wAwP/8AMF//ADB//wAwn/8AML//ADDf/wAw//8AMR//ADE//wAxX/8AMX//ADGf/wAxv/wAMd/8ADH//AAyH/wAMj/8ADJf/AAyf/wAMp/8ADL//iAzH/4gMz/+IDNf/iAzf/4gM5/+IDO//iAz3/wAM//8ADQf/AA0P/4gNF/8ADVQALA1cACwNZAAsDWwALA3AADQNxAA0DcwANA3QADQN1AA0DfgANA38ADQPXAA0D2QAOA9r/9QPc/+wD3v/tA+b/7APq/+4D7P+/A/cADQAPAfcAFAH+ABACBf/wAgr/8AIP//ACEgAWAhwAEAJj/+YCef/wAnv/3AKIABACjv/wArf/8ALR//AC1QAQAEwAR//uAEj/7gBJ/+4AS//uAFX/7gCq/+4Aq//uAKz/7gCt/+4Arv/uAMr/7gDM/+4Azv/uAND/7gDS/+4A1v/uANj/7gDa/+4A3P/uAN7/7gDg/+4A4v/uAOT/7gDm/+4BFv/uAUb/7gGc/+4Bof/uAbL/7gGz/+4B9wASAfj/7gH+AA4CBP/uAgX/4wIH/+4CCv/jAg3/uAIP/+MCE//uAhT/7gIX/+4CHAAOAjz/7gJA/+4CRP/uAmP/ugJr/+4Cbf/uAnn/4wJ7/9kCiAAOAo7/4wKZ/+4Cm//uAp3/7gKr/+4Ct//jAsP/7gLE/+4Cxf/uAs//7gLR/+MC1QAOAxv/7gMd/+4DH//uAyH/7gMj/+4DJf/uAyf/7gMp/+4DPf/uAz//7gNB/+4DRf/uACAAWv/AAF3/wADA/8AAwv/AATr/wAGj/8ABrf/AAgX/gAIG/8ACCv/uAg//8AIh/8ACJP/bAjj/wAI6/8ACQv/cAmP/RwJx/8ACef/uAnv/7gKO/+4Csf/AArP/wAK1/8ACt//uAscABwLJ//QC0f9/A1X/wANX/8ADWf/AA1v/wAAhAFr/9ABc//AAXf/0AMD/9ADC//QBOv/0AaP/9AGt//QB9//vAfn/8AH+//MCBv/0Agj/8AIP/+4CHP/zAiH/9AI4//QCOv/0Aln/8AJx//QCdf/wAoT/8AKI//MCn//wArH/9AKz//QCtf/0Ar//8ALV//MDVf/0A1f/9ANZ//QDW//0AAoABv/WAAv/1gFm/9YDcP/WA3H/1gNz/9YDdP/WA3X/1gN+/9YDf//WABUAXP/gAfn/4AIF/3YCCP/gAgr/wgIP/9MCJP/ZAkL/2wJZ/+ACY/8eAnX/4AJ5/8ICe//tAoT/4AKO/8ICn//gArf/wgK//+ACx//wAsn/8gLR/1YADQIF/2QCCv/SAg//2QIk/9kCQv/bAmP/HgJ5/9ICe//tAo7/0gK3/9ICx//wAsn/8gLR/1YACgHv/8MCBf/PAg//1AJj/84Cev/nAn7/3wLG/9ECyP/sAtD/oALR/9EACQIF/2oCD//GAiT/2QJC/9sCY/8eAnv/7QLH//ACyf/yAtH/VgAJAA0AFABBABEAVv/iAGEAEwPc/9kD3v/ZA+b/2QPq/9kD7P+0AAoABv/XAAv/1wFm/9cDcP/XA3H/1wNz/9cDdP/XA3X/1wN+/9cDf//XABQAW//BAZb/xQG0/7QB9P/XAgX/uQIP/+kCJP+yAj7/0gJC/8gCY/+gAnv/xQKa/+QCx//MAsn/zALR/8sC0v/vA9z/5wPe/+cD5v/mA+r/6AA6AAT/xABW/78AW//RAG7/bAB+/24Aif9DAKn/rAC7/6EBlv+4AaX/fgGp/3sBsP+bAbH/eQG0/7IBtv9+Abj/fQG5/3wB1/+vAe8ADwH0/+QB9f+gAff/dAH6/4ACBf+yAg7/fQIP/7ICEP+AAhL/eQIVACgCIv99AiT/fwI+/2YCQv/aAlH/gQJT/5gCX/99AmP/swJp/6ACe/98An7/mgJ//2wCmv/mAsL/awLH/5ICyf+tAs3/ewLQAA8C0f+RAtL/8gPW//ED2f/xA9r/vAPc/7kD3v+5A+b/uQPq/7kD7P+vA/b/7QAGAbT/6gH3/+4CBf/WAg//7QJj/+wC0f/sABIB1/+uAe8AEgH1/+AB9/+tAfr/1gIO/98CEv/SAiL/4AI+/84CUf/dAlP/4gJf/+ACaf/gAnv/6QJ//9oCwv+9As3/3wLQABEAMABW/34AW/+dAG7+8QB+/vQAif6rAKn/XgC7/0sBlv9yAaX/DwGp/woBsP9BAbH/BwG0/2gBtv8PAbj/DgG5/wwB1/9jAe8ABQH0/70B9f9JAff+/gH6/xMCBf9oAg7/DgIP/2gCEP8TAhL/BwIVADACIv8OAiT/EQI+/ucCQv+sAlH/FQJT/zwCX/8OAmP/agJp/0kCe/8MAn7/PwJ//vECmv/AAsL+7wLH/zECyf9fAs3/CgLQAAUC0f8wAtL/1QACAff/aAI+/+4AFwGW/9QBqP/tAasAEQG0/+ABtv/nAbj/5QG5/+4B1wASAfT/6QIF/9cCY//XAnv/0wJ+/9YCf//FApr/5wLGAA0CyAAMAtH/1gLS//ID3P/pA97/5wPm/+cD6v/pAAECPv/xAAICBf/WA3H/iAAJAA0ADwBBAAwAVv/rAGEADgPc/+cD3v/nA+b/5wPq/+kD7P/LAB0AI/+vAFj/7wBb/98BR//u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AX4BfgAFAX8BfwAQAYIBggACAYMBgwADAYQBhAAcAYUBhQACAYYBhgAGAYcBhwARAYgBiAAHAYkBiQAFAYoBigAHAYsBiwAJAYwBjAACAY0BjgAHAZABkAAFAZIBkgALAZQBlAAMAZUBlQAQAZcBlwAPAZoBmgAHAZsBmwAQAZ4BngAWAaMBowAZAacBpwAWAa0BrQAZAa8BrwAXAbEBsQATAbwBvAAXAcMBxAAGAcYBxgAcAckBygAHAcsBywAIAcwBzQAdAc8BzwAJAdEB0QAeAdIB0gAHAdMB0wACAdUB1QADAdYB1gAcAdgB2AAGAdkB2QAPAdsB2wAHAd0B3QAJAd4B4AAHAeEB4QAFAeMB4wALAeQB5AAEAeUB5QAMAeYB5gAeAegB6AAPAekB6QAHAesB6wAHAe0B7QAdAe8B7wAdAfMB8wASAfYB9gAfAfgB+AAVAfkB+QAaAgECAQAXAgMCAwATAgQCBAAUAgYCBgAZAgcCBwATAggCCAAaAg0CDQAgAg8CDwAgAhACEAATAhMCFAAVAhYCFgAfAhwCHQAgAiECIQAZAiUCJQAdAiYCJgAgAikCKQACAjYCNgAXAjcCNwANAjgCOAAZAjkCOQANAjoCOgAZAlECUQATAlICUgAcAlMCUwAfAlQCVAAcAlgCWAAPAlkCWQAaAlwCXAAJAl4CXgAJAmACYAAJAmICYgAJAmQCZAAHAmwCbAAEAm0CbQAUAm4CbgAMAnACcAAQAnECcQAZAnICcgAQAnQCdAAPAnUCdQAaAn0CfQAWAoICggAHAoMCgwAPAoQChAAaAosCiwAHAo8CjwAHApECkQAHApICkgACApMCkwASApQClAACApUClQASApgCmAAGApkCmQAVApsCmwAVAp0CnQAVAp4CngAPAp8CnwAaAqgCqAAFAqkCqQAXAq0CrQAXAq8CrwATArACsAAeArECsQAZArICsgAeArMCswAZArQCtAAeArUCtQAZArgCuAAcArkCuQAfAr0CvQAfAr4CvgAPAr8CvwAaAtYC1gACAtcC1wASAuYC5gAHAucC5wAWAvgC+AAOAvoC+gAOAvwC/AAOAwIDAgACAwMDAwASAwQDBAACAwUDBQASAwYDBgACAwcDBwASAwgDCAACAwkDCQASAwoDCgACAwsDCwASAwwDDAACAw0DDQASAw4DDgACAw8DDwASAxADEAACAxEDEQASAxIDEgACAxMDEwASAxQDFAACAxUDFQASAxYDFgACAxcDFwASAxgDGAACAxkDGQASAxoDGgAGAxsDGwAVAxwDHAAGAx0DHQAVAx4DHgAGAx8DHwAVAyADIAAGAyEDIQAVAyIDIgAGAyMDIwAVAyQDJAAGAyUDJQAVAyYDJgAGAycDJwAVAygDKAAGAykDKQAVAyoDKgAHAywDLAAHAy4DLgAFAy8DLwAXAzADMAAFAzEDMQAXAzIDMgAFAzMDMwAXAzQDNAAFAzUDNQAXAzYDNgAFAzcDNwAXAzgDOAAFAzkDOQAXAzoDOgAFAzsDOwAXA0MDQwAXA0YDRgAIA0gDSAAIA1QDVAAQA1UDVQAZA1YDVgAQA1cDVwAZA1gDWAAQA1kDWQAZA1oDWgAQA1sDWwAZA1wDXAAFA3IDcgABA3YDdgABA3oDewABBDEEMQAEBDMENAAFAAEABgQwAAEAAAAAAAAAAAABAAAAAAAAAAAAFgAZABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAAAAAACAAAAAAAGgAAAAAAAAAAAAgAAAAIAAAAGwAJAAoACwAMABcADQAYAAAAAAAAAAAAAAAAAAMAAAAEAAQABAAAAAQAAAAAAAAAAAAAAAUABQAGAAUABAAAAAcAAAAOAA8AAAAcAA8AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgAAAAIAAoACgAKAAoADQAAAAAAAwADAAMAAwADAAMAAAAEAAQABAAEAAQAAAAAAAAAAAAAAAUABgAGAAYABgAGAAAAAAAOAA4ADgAOAA8AAAAPAAIAAwACAAMAAgADAAgABAAIAAQACAAEAAgABAAAAAQAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQACAAEAAgABAAIAAQACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABQAAAAUABQAAAAAACAAGAAgABgAIAAYACAAEAAAAAAAAAAAAAAAAABsABwAbAAcAGwAHABsABwAJAAAACQAAAAAAAAAKAA4ACgAOAAoADgAKAA4ACgAOAAoADgAMAAAADQAPAA0AGAAQABgAEAAYABAAAAAAAAAACAAEAAAADgAAAAAAAAAAAAAAAgADAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAHAAkAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAACAANAAAAAAACAAAAAAACAAAAGAAAAAgAAAAAAAIAAAAAAAAACAAAAAAAAAAAAA0AAAAXAAAAAAAAAA0ABAAAAAUAAAAOAAQAAAAPAAAAAAAAAAUAAAAAAAAAAAAAAA8AAAAGAAAAAAAEAAQAAAAOAAAAAAAAAAAAAAAOAAYADgAAAAAAAAAAAAAAAAAAAAkAAAAIAAAAAAAAABoAEQAAAAkAAAAAABUAAAACAAAAAAAAAAAAAAAXAAAAAAAAAAAAEQAAAAAACAAAAAAACAAJABUAAAAXAAAAEgAAAAAAAAAAAAAAAAAAAAAAAwAAAAAABQAAAAQAHAAAAAUABQAFABMABQAFAAYABQAFAAQAAAAPAAQAHAAFABQABQAFAAAAAAAFAAAABQAAAAQABAAAAAUABAAHAAAAAAAAABMABQAAAAUABQAPAAAACAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAGAAsADwALAA8ACAAEAAgAAAAIAAQACAAAAAgABAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAABcAHAAAAAAAAAAFAAAAAAAAAAAACQAAAAAABQAAAAUAAAAAAAgABAAIAAQACQAAAA0ADwANAAAAFwAcAAkAAAASABQAAAAAAAAAAAAAAAAAAAAAAAAAFwAcAAAAAAARABMAAAAFAAAABQASABQAAAAFAAAAAgADAAIAAwAAAAAAAAAEAAAABAAAAAQAFwAcAAAAAAAAAAAAAAAFAAAABQAIAAYACAAEAAgABgAAAAAAFQAPABUADwAVAA8AEgAUAAAABQAAAAUAAAAFABcAHAAAAAAAAAAEAAQABAAAAAAAAAAAABEAAAAAAAAACAAEAAAAAAAAAAAAEQATAAIAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAACAAMAAgADAAIAAwACAAMAAgADAAIAAwACAAMAAgADAAIAAwACAAMAAgADAAIAAwAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABAAIAAQACAAEAAgABgAIAAQACgAOAAoADgAAAA4AAAAOAAAADgAAAA4AAAAOAA0ADwANAA8ADQAPAA0ADwAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAGQAZAAAAAQABABYAAQABAAEAFgAAAAAAAAAWABYAAAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgAAAAIAAgAAAABAAAACgIGCBAABERGTFQAGmN5cmwASGdyZWsAdmxhdG4ApAAEAAAAAP//ABIAAAAKABQAHgAoADQAQQBLAFUAXwBpAHMAfQCHAJEAmwClAK8ABAAAAAD//wASAAEACwAVAB8AKQA1AEIATABWAGAAagB0AH4AiACSAJwApgCwAAQAAAAA//8AEgACAAwAFgAgACoANgBDAE0AVwBhAGsAdQB/AIkAkwCdAKcAsQAoAAZBWkUgAFRDUlQgAH5NT0wgAKhOQVYgANRST00gAQBUVVIgASwAAP//ABMAAwANABcAIQArADIANwBEAE4AWABiAGwAdgCAAIoAlACeAKgAsgAA//8AEgAEAA4AGAAiACwAOABFAE8AWQBjAG0AdwCBAIsAlQCfAKkAswAA//8AEgAFAA8AGQAjAC0AOQBGAFAAWgBkAG4AeACCAIwAlgCgAKoAtAAA//8AEwAGABAAGgAkAC4AOgA+AEcAUQBbAGUAbwB5AIMAjQCXAKEAqwC1AAD//wATAAcAEQAbACUALwA7AD8ASABSAFwAZgBwAHoAhACOAJgAogCsALYAAP//ABMACAASABwAJgAwADwAQABJAFMAXQBnAHEAewCFAI8AmQCjAK0AtwAA//8AEwAJABMAHQAnADEAMwA9AEoAVABeAGgAcgB8AIYAkACaAKQArgC4ALljMnNjBFhjMnNjBF5jMnNjBGRjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBkbGlnBHhkbGlnBH5kbGlnBIRkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbm9tBJBkbm9tBJZkbm9tBJxkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhsaWdhBLJsaWdhBLpsbnVtBMBsbnVtBMZsbnVtBMxsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsb2NsBNhsb2NsBN5sb2NsBORudW1yBOpudW1yBPBudW1yBPZudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxvbnVtBQJvbnVtBQhvbnVtBQ5vbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRwbnVtBRpwbnVtBSBwbnVtBSZwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxzbWNwBTJzbWNwBThzbWNwBT5zbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzczAxBUpzczAxBVBzczAxBVZzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAyBWJzczAyBWhzczAyBW5zczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAzBXpzczAzBYBzczAzBYZzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczA0BZJzczA0BZhzczA0BZ5zczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA1BapzczA1BbBzczA1BbZzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA2BcJzczA2BchzczA2Bc5zczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA3BdpzczA3BeBzczA3BeZzczA3BexzczA3BexzczA3BexzczA3BexzczA3BexzczA3BexzczA3Bex0bnVtBfJ0bnVtBfh0bnVtBf50bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgQAAAABAAEAAAABAAMAAAABAAIAAAABAAAAAAACAAgACQAAAAEADgAAAAEAEAAAAAEADwAAAAEADQAAAAEAQwAAAAEARQAAAAEARAAAAAEAQgAAAAMAPwBAAEEAAAACABEAEgAAAAEAEgAAAAEAPAAAAAEAPgAAAAEAPQAAAAEAOwAAAAEACgAAAAEADAAAAAEACwAAAAEARwAAAAEASQAAAAEASAAAAAEARgAAAAEAMAAAAAEAMgAAAAEAMQAAAAEALwAAAAEAOAAAAAEAOgAAAAEAOQAAAAEANwAAAAEABQAAAAEABwAAAAEABgAAAAEABAAAAAEAFAAAAAEAFgAAAAEAFQAAAAEAEwAAAAEAGAAAAAEAGgAAAAEAGQAAAAEAFwAAAAEAHAAAAAEAHgAAAAEAHQAAAAEAGwAAAAEAIAAAAAEAIgAAAAEAIQAAAAEAHwAAAAEAJAAAAAEAJgAAAAEAJQAAAAEAIwAAAAEAKAAAAAEAKgAAAAEAKQAAAAEAJwAAAAEALAAAAAEALgAAAAEALQAAAAEAKwAAAAEANAAAAAEANgAAAAEANQAAAAEAMwBLAJgAmACYAJgEJgQmBCYEJgcUB8AOUA5QDmYOiA6IDogOiA6+DuQPEg8SDxIPEg8mDyYPJg8mDzoPOg86DzoPTg9OD04PTg9gD2APYA9gD3oPeg96D3oPvA+8D7wPvA/aD9oP2g/aD/gP+A/4D/gQKhAqECoQKhBcEFwQXBBcEI4QohDuEMwQzBDMEMwQ7hDuEO4Q7hEaAAEAAAABAAgAAgHEAN8DvQPsA+sD6gPpA+gD5wPmA+UD5APjA+ID4QPgA98D3gPdA9wD2wPaA9kD2APXA9YD9gP3BKkDvAO7BFAEUQRSBFMEVARVBFcEWARZBFoEWwRcBF0EXgRfBE4EYARhBGIEYwRkBGUEZgRtBG4EbwRwBEwEcQRyBHMEdAR1BHYEdwR4BE0EeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMERASUBJUElgSXBJgEmQSaBJ0EnARPBJ4EnwSgBKEEogSjBKQEpQSmBKcEqAP+BFYEmwSqBKsErAStBK4ErwSwBLEEsgO6A7kEswS0BLUDuAS2BLcDtwS4A7YEuQPGBLoD0QS7BLwD0gS9A9MD1AS+BL8EwAP5BMED+ATCBMMExATFA/8EAAQBBMYExwQCBMgEAwTJBMoEBATLBAUEBgQHBMwECAQJBM0EzgTPBNAE0QTSBNMECgTcBNQECwQMBA0EDgQPBBAEEQQSBBMEFAQ4BBUEFgTVBBcEGAQZBNYEGgTXBNgEGwQcBB0EHgQfBCAE2QQhBCIE2gQjBNsEJAQlBCcEJgABAN8ACAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AZgBoAIMAhACFAIYAhwCIAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAnACdAJ4AnwCgAKIAwwDFAMcAyQDLAM0AzwDRANMA1QDXANkA2wDdAN8A4QDjAOUA5wDrAO0A7wDxAPMA9wD5APwA/gEAAQIBBgEIAQoBDwERARMBFQEXARkBGwEdAR8BIQEjASUBJwEpASsBLQEvATEBMwE1ATcBOQE7ATwBPgFAAU4BYgF5AXsBfAF9AX4BfwGAAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gJSAlQCWAJaAlwCXgJiAmQCagJsAnACcgJ0AnYCegJ8An4CgAKaAqICpAKqArADhwOOA5MDlgABAAAAAQAIAAIBdAC3A+wD6wPqA+kD6APnA+YD5QPkA+MD4gPhA+AD3wPeA90D3APbA9oD2QPYA9cD1gP2A/cEqQRQBFEEUgRTBFQEVQRXBFgEWQRaBFsEXARdBF4EXwROBGAEYQRiBGMEZARlBGYEbQRuBG8EcASmBHEEcgRzBHQEdQR2BHcEeARNBHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBEQElASVBJYElwSYBJkEmgSdBJwETwSeBJ8EoAShBKIEowSkBKUEpwSoA/4EVgSbBMgEAwTJBMoEBATLBAUEBgQHBMwECAQJBM0EzgTPBNAE0QTSBNMECgTcBNQECwQMBA0EDgQPBBAEEQQSBBMEFATAA/kEwQP4BMIEwwTEBMUD/wQABAEExgTHBAIEOAQVBBYE1QQXBBgEGQTWBBoE1wTYBBsEHAQdBB4EHwQgBNkEIQQiBNoEIwTbAAEAtwBFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AowCkAKUApgCnAKgAqgCrAKwArQCuAK8AsACxALIAswC0ALUAtgC3ALgAuQC8AL0AvgC/AMAAwgDEAMYAyADKAMwAzgDQANIA1ADWANgA2gDcAN4A4ADiAOQA5gDoAOwA7gDwAPIA9AD4APoA/QD/AQEBAwEHAQkBCwEQARIBFAEWARgBGgEcAR4BIAEiASQBJgEoASoBLAEuATABMgE0ATYBOAE6AT0BPwFBAU8BYwHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIQIiAlMCVQJZAlsCXQJfAmMCZQJrAm0CcQJzAnUCdwJ7An0CfwKBApsCowKlAqsCsQAGAAAABgASACoAQgBaAHIAigADAAAAAQASAAEAkAABAAAASgABAAEATQADAAAAAQASAAEAeAABAAAASgABAAEATgADAAAAAQASAAEAYAABAAAASgABAAEA8gADAAAAAQASAAEASAABAAAASgABAAECGQADAAAAAQASAAEAMAABAAAASgABAAECGwADAAAAAQASAAEAGAABAAAASgABAAEDLQACAAEBcQF1AAAABAAAAAEACAABBh4ANgByAKQArgC4AMoA/AEOARgBSgFkAX4BkAG6AewB9gIYAjICRAJ2AogCogLMAt4DEAMaAyQDNgNoA3IDfAOGA6ADugPMA/YEKAQyBFQEbgSABLIExATeBQgFGgUkBS4FOAVCBWwFlgXABeoGFAAGAA4AFAAaACAAJgAsAIMAAgFxAIQAAgFyAIYAAgFzAwQAAgF0AVQAAgF1AwIAAgF2AAEABALYAAIBdgABAAQAyQACAXIAAgAGAAwC2gACAXYC3AACA6sABgAOABQAGgAgACYALACLAAIBcQCMAAIBcgMeAAIBcwMcAAIBdAFWAAIBdQMaAAIBdgACAAYADAFKAAIBcgDlAAIDqwABAAQC3gACAXYABgAOABQAGgAgACYALACPAAIBcQCQAAIBcgDrAAIBcwMqAAIBdAFYAAIBdQMsAAIBdgADAAgADgAUAuAAAgFyAuIAAgF2APkAAgOrAAMACAAOABQA/AACAXIC5AACAXYA/gACA6sAAgAGAAwC5gACAXIC6AACAXYABQAMABIAGAAeACQBTAACAXEBBgACAXIAlAACAXMC6gACAXYBCAACA6sABgAOABQAGgAgACYALACVAAIBcQCWAAIBcgCYAAIBcwMwAAIBdAFaAAIBdQMuAAIBdgABAAQC7AACAXIABAAKABAAFgAcARcAAgFyAVwAAgF1Au4AAgF2ARkAAgOrAAMACAAOABQBHQACAXIC8AACAXYBYAACA6sAAgAGAAwC8gACAXYBYgACA6sABgAOABQAGgAgACYALACcAAIBcQCdAAIBcgErAAIBcwNIAAIBdAFeAAIBdQNGAAIBdgACAAYADAL0AAIBcwL2AAIBdgADAAgADgAUAvgAAgFxAvoAAgFyAv4AAgF2AAUADAASABgAHgAkA1QAAgFxAKAAAgFyA1oAAgFzA1gAAgF0A1YAAgF2AAIABgAMATwAAgFyAwAAAgF2AAYADgAUABoAIAAmACwAowACAXEApAACAXIApgACAXMDBQACAXQBVQACAXUDAwACAXYAAQAEAtkAAgF2AAEABADKAAIBcgACAAYADALbAAIBdgLdAAIDqwAGAA4AFAAaACAAJgAsAKsAAgFxAKwAAgFyAx8AAgFzAx0AAgF0AVcAAgF1AxsAAgF2AAEABAFLAAIBcgABAAQC3wACAXYAAQAEAy0AAgF2AAMACAAOABQC4QACAXIC4wACAXYA+gACA6sAAwAIAA4AFAD9AAIBcgLlAAIBdgD/AAIDqwACAAYADALnAAIBcgLpAAIBdgAFAAwAEgAYAB4AJAFNAAIBcQEHAAIBcgC0AAIBcwLrAAIBdgEJAAIDqwAGAA4AFAAaACAAJgAsALUAAgFxALYAAgFyALgAAgFzAzEAAgF0AVsAAgF1Ay8AAgF2AAEABALtAAIBcgAEAAoAEAAWABwBGAACAXIBXQACAXUC7wACAXYBGgACA6sAAwAIAA4AFAEeAAIBcgLxAAIBdgFhAAIDqwACAAYADALzAAIBdgFjAAIDqwAGAA4AFAAaACAAJgAsALwAAgFxAL0AAgFyASwAAgFzA0kAAgF0AV8AAgF1A0cAAgF2AAIABgAMAvUAAgFzAvcAAgF2AAMACAAOABQC+QACAXEC+wACAXIC/wACAXYABQAMABIAGAAeACQDVQACAXEAwAACAXIDWwACAXMDWQACAXQDVwACAXYAAgAGAAwBPQACAXIDAQACAXYAAQAEAVAAAgFyAAEABAFSAAIBcgABAAQBUQACAXIAAQAEAVMAAgFyAAUADAASABgAHgAkAK8AAgFxALAAAgFyAOwAAgFzAysAAgF0AVkAAgF1AAUADAASABgAHgAkAz4AAgFxAzwAAgFyA0IAAgFzA0AAAgF0A0QAAgF2AAUADAASABgAHgAkAz8AAgFxAz0AAgFyA0MAAgFzA0EAAgF0A0UAAgF2AAUADAASABgAHgAkA0wAAgFxA0oAAgFyA1AAAgFzA04AAgF0A1IAAgF2AAUADAASABgAHgAkA00AAgFxA0sAAgFyA1EAAgFzA08AAgF0A1MAAgF2AAEABAHBAAIBcgACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAiQCJACwAmwCbAC0AqQCpAC4AuwC7AC8A9AD0ADABRQFIADEBwAHAADUAAQAAAAEACAABAAYAPwABAAIBIQEiAAEAAAABAAgAAgAOAAQE3QTeBN8E4AABAAQAxwDIANsA3AAEAAAAAQAIAAEAJgACAAoAHAACAAYADAOsAAIASgOxAAIAWAABAAQDsgACAFgAAQACAEoAVwAEAAAAAQAIAAEARAACAAoAFAABAAQDrQACAE0AAQAEA68AAgBNAAQAAAABAAgAAQAeAAIACgAUAAEABAOuAAIAUAABAAQDsAACAFAAAQACAEoDrAABAAAAAQAIAAEABgN5AAEAAQBLAAEAAAABAAgAAQAGAiIAAQABAaEAAQAAAAEACAABAAYDjAABAAEANgABAAAAAQAIAAIAHAACA8EDwAABAAAAAQAIAAIACgACA78DvgABAAIALwBPAAEAAAABAAgAAgAeAAwEMQQzBDIENAQ1BCgEKQQqA/sELAQtBC4AAQAMACcAKAArADMANQBGAEcASABLAFMAVABVAAEAAAABAAgAAgAMAAMELwQwBDAAAQADAEkASwP7AAEAAAABAAgAAgBmAAgERgQ2BDcEOQQ6BEIEQwRFAAEAAAABAAgAAgAWAAgAGwAVABQAHQAZABgAFwAWAAEACAP6BCsEZwRoBGkEagRrBGwAAQAAAAEACAACABYACARnBCsEbARrBGoEaQP6BGgAAQAIABQAFQAWABcAGAAZABsAHQABAAAAAQAIAAIAFgAIABUAFgAXABgAGQAbAB0AFAABAAgENgQ3BDkEOgRCBEMERQRGAAEAAAABAAgAAQAGA3AAAQABABMABgAAAAEACAADAAEAEgABAGYAAAABAAAASgACAAIDgwODAAADxwPQAAEAAQAAAAEACAACADwACgPQA88DzgPNA8wDywPKA8kDyAPHAAEAAAABAAgAAgAaAAoEOwB8AHUAdgQ8BD0EPgQ/BEAEQQACAAEAFAAdAAAAAQAAAAEACAACACYAEAPQA88DzgPNA8wDywPKA8kDyAPHBEkERwRKBEsESAThAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgDyAhkCGwMt",
+  "Roboto-Regular.ttf": "AAEAAAASAQAABAAgR0RFRtRX1FkAAg/sAAACREdQT1NKcuCzAAISMAAAUiRHU1VCw4aZEQACZFQAABfoT1MvMqCnsaYAAAGoAAAAYGNtYXBAmkl2AAAafAAAEshjdnQgJEEG5QAAL9wAAABMZnBnbWf0XKsAAC1EAAABvGdhc3AACAATAAIP4AAAAAxnbHlmHN2bBQAAOfAAAdM2aGRteDc4ERcAABWQAAAE7GhlYWT4RqsOAAABLAAAADZoaGVhCroKggAAAWQAAAAkaG10eOiEiIgAAAIIAAATiGxvY2HgyGepAAAwKAAACcZtYXhwBxIC+QAAAYgAAAAgbmFtZTVTY1kAAg0oAAACmHBvc3T/bQBkAAIPwAAAACBwcmVwdKCP7AAALwAAAADbAAEAAAACAACEKlnoXw889QAbCAAAAAAAxPARLgAAAADQ206a+hv91QkwCHMAAAAJAAIAAAAAAAAAAQAAB2z+DAAACUn6G/5KCTAAAQAAAAAAAAAAAAAAAAAABOIAAQAABOIAjwAWAFQABQABAAAAAAAOAAACAAIUAAYAAQADBIUBkAAFAAAFmgUzAAABHwWaBTMAAAPRAGYCAAAAAgAAAAAAAAAAAOAACv9QACF/AAAAIQAAAABHT09HAEAAAP/9BgD+AABmB5oCACAAAZ8AAAAABDoFsAAgACAAAgOMAGQAAAAAAAAAAAH7AAAB+wAAAg8AoAKPAIgE7QB3BH4AbgXcAGkE+QBlAWUAZwK8AIUCyAAmA3IAHASJAE4BkgAdAjUAJQIbAJADTAASBH4AcwR+AKoEfgBdBH4AXgR+ADUEfgCaBH4AhAR+AE0EfgBwBH4AZAHwAIYBsQApBBEASARkAJgELgCGA8cASwcvAGoFOAAcBPsAqQU1AHcFPwCpBIwAqQRsAKkFcwB6BbQAqQItALcEagA1BQQAqQROAKkG/ACpBbQAqQWAAHYFDACpBYAAbQTtAKgEvwBQBMYAMQUwAIwFFwAcBxkAPQUEADkEzgAPBMoAVgIfAJIDSAAoAh8ACQNYAEADnAAEAnkAOQRaAG0EfQCMBDAAXASDAF8EPQBdAscAPAR9AGAEaACMAfEAjQHp/78EDgCNAfEAnAcDAIsEagCMBJAAWwR9AIwEjABfArUAjAQgAF8CnQAJBGkAiAPgACEGAwArA/cAKQPJABYD9wBYArUAQAHzAK8CtQATBXEAgwHzAIsEYABpBKYAWwW0AGkE2AAfAesAkwToAFoDWABmBkkAWwOTAJMDwQBmBG4AfwZKAFoDqgB4Av0AggRGAGEC7wBCAu8APgKCAHsEiACaA+kAQwIWAJMB+wB0Au8AegOjAHoDwABmBdwAVQY1AFAGOQBvA8kARAd6//IERABZBYAAdgS6AKYEwgCLBsEATgSwAH4EkQBHBIgAWwScAJUFmgAdAfoAmwRzAJoETwAiAikAIgWLAKIEiACRB6EAaAdEAGEB/ACgBYcAXQK5/+QFfgBlBJIAWwWQAIwE8wCIAgP/tAQ3AGIDxACpA40AjAOrAHgDagCBAfEAjQKtAHkCKgAyA8YAewL8AF4CWgB+AAD8pwAA/W8AAPyLAAD9XgAA/CcB7/04Ag0AtwQLAHECFwCTBHMAsQWkAB8FcQBnBT4AMgSRAHgFtQCyBJEARQW7AE0FiQBaBVIAcQSFAGQEvQCgBAIALgSIAGAEUABjBCUAbQSIAJEEjgB6ApcAwwRuACUD7ABlBMQAKQSIAJEETQBlBIgAYAQsAFEEXQCPBaMAVwWaAF8GlwB6BKEAeQRC/9oGSABKBf8AKgVkAHsIkQAxCKQAsQaCAD4FtACwBQsAogYEADIHQwAbBL8AUAW0ALEFqQAvBQcATQYsAFMF2QCvBXoAlgeHALAHwACwBhIAEAbrALIFBQCjBWQAkwcnALcFGABZBGwAYQSSAJ0DWwCaBNQALgYgABUEEABYBJ4AnARSAJwEoAAsBe8AnQSdAJwEngCcA9gAKAXNAGQEvQCcBFkAZwZ4AJwGngCRBPcAHgY2AJ0EWACdBE0AZAaHAJ0EZAAvBGj/6ARNAGcGyQAnBuQAnASJ//0EngCcBwgAnAYrAIEEVv/cBysAtwX4AJkE0gAoBEYADwcLAMkGCwC8BtEAkwXhAJYJBAC2B9EAmwQjAFAD2wBMBXEAZwSLAFsFCgAWBAMALgVxAGcEiABbBwEAnAYkAH4HCACcBisAgQUyAHUERwBkBP0AdAAA/GcAAPxxAAD9ZgAA/aQAAPobAAD6LARW/9wFGwCoBIkAjARjAKIDkACRBNsAsQQFAJEFCQCjBH4AmgaMAEQFgwA+B88AqAW0AJEIMQCwBvQAkQXuAHEE0wBtBywANAVcAB8FbwCWBGoAgwVwAIoGLwA/BL3/3gUJAKMEWgCaBbIAsQSIAJEFhwBdBKgAaASoAGkEtwA6A0kAOwT2AFcGlABZBuQAZAZWADYFKwAxBEkAUgQHAHkHwQBEBnUAPwf7AKkGoQCQBPYAdgQdAGUFrQAjBSAARgVkAJYDIABvBBQAAAgpAAAEFAAACCkAAAK5AAACCgAAAVwAAAR/AAACMAAAAaIAAADRAAAAAAAAAjQAJQI0ACUFQACiBj8AkAOmAA0BmQBgAZkAMAGXACQBmQBPAtQAaALbADwCwQAkBGkARgSPAFcCsgCKA8QAlAVaAJQA9gAmB6oARAJmAGwCZgBZA6MAOwLvADYDYAB6BKYAWwZVAB8GkACnCHYAqAdjADkGKwCMBH4AXwXaAB8EIgAqBHQAIAVIAF0FTwAfBecAegPOAGgIOgCiBQEAZwUXAJgGJgBUBtcAZAbPAGMGagBZBI8AagWOAKkErwBFBJIAqATFAD8IOgBiAgz/sASCAGUEZACYBBEAPgQvAIUECAArAkwAtQKPAG4CAwBcBPMAPARuAB8EiwA8BtQAPAbUADwE7gA8BpsAXwAAAAAIMwBbCDUAXAQgADsEngBaAfz/tgGRAGcDpACDA54AgQOfAIED9ABpBA4AaQPz/14D7wBuA6QAgQH9AJ8EhQATBFAAigR8AGAEgACKA+YAigPLAIoErABjBOMAigHoAJcDzwArBFQAigO0AIoGAgCKBOMAigS7AGAEXACKBLsAWQRKAIoEIABDBCYAKAR8AHQEZwAUBhUAMQRUACYEKwANBCMARwLvAFAC7wB6Au8AQgLvAD4C7wA2Au8AWwLvAFYC7wA6Au8ATwLvAEkDlgCPArUAngQ6AB4EwwBkBUwAsQUkALIEEwCSBT0AsgQPAJIEIABDBDMAMAQ8ABYDrwCKBGcAFAS7AGAEZwAUA4kAPgTOAIoD7wA/BWcAYAUXAGAE8gB1BXIAJgR8AGAHQQAnB08AigV0ACgEzQCKBFkAigUkAC4GCwAfBD8ARwTsAIoETgCLBMEAJwQfACIFKACKBGoAPQZRAIoGrACKBR0ACAXxAIoETgCKBHsASwZ2AIoEhwBQBBEACwZHAB8EeQCLBQkAiwU3ACMFwgBgBF8ADQSoACYGYQAmBGoAPQRqAIoFwwACBMoAXgQ/AEcEuwBgBDMAMAPjAEIIIgCKBKsAKAR9AIwEMgBcBJMAWwSMAFsDeQBXBI0AjAScAFsEPQBdBH0AYAWBAH4FrgB+BZMAsgXgAH4F4wB+A9UAoASCAIMDrwCKBFgADwTPAD4C7wBQAu8ANgLvAFsC7wBWAu8AOgLvAE8C7wBJBGsAZQQuAEoGpABgBLkAggUAAHgCBv+0AgT/tAH7AJsB+//6AfsAmwH7AIYEUACKAfsAAAI1ACUFXQAlBV0AJQSGAAAExgAxAp3/9AU4ABwFOAAcBTgAHAU4ABwFOAAcBTgAHAU4ABwFNQB3BIwAqQSMAKkEjACpBIwAqQIt/+ACLQCwAi3/6QIt/9YFtACpBYAAdgWAAHYFgAB2BYAAdgWAAHYFMACMBTAAjAUwAIwFMACMBM4ADwRaAG0EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EMABcBD0AXQQ9AF0EPQBdBD0AXQH6/8YB+gCWAfr/zwH6/7wEagCMBJAAWwSQAFsEkABbBJAAWwSQAFsEaQCIBGkAiARpAIgEaQCIA8kAFgPJABYFOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FNQB3BDAAXAU1AHcEMABcBTUAdwQwAFwFNQB3BDAAXAU/AKkFGQBfBIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQVzAHoEfQBgBXMAegR9AGAFcwB6BH0AYAVzAHoEfQBgBbQAqQRoAIwCLf+3Afr/nQIt/7YB+v+cAi3/7AH6/9ICLQAYAfH/+wItAKoGlwC3A9oAjQRqADUCA/+0BQQAqQQOAI0ETgChAfEAkwROAKkB8QBXBE4AqQKHAJwETgCpAs0AnAW0AKkEagCMBbQAqQRqAIwFtACpBGoAjARq/7wFgAB2BJAAWwWAAHYEkABbBYAAdgSQAFsE7QCoArUAjATtAKgCtQBTBO0AqAK1AGMEvwBQBCAAXwS/AFAEIABfBL8AUAQgAF8EvwBQBCAAXwS/AFAEIABfBMYAMQKdAAkExgAxAp0ACQTGADECxQAJBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBxkAPQYDACsEzgAPA8kAFgTOAA8EygBWA/cAWATKAFYD9wBYBMoAVgP3AFgHev/yBsEATgWAAHYEiABbBID/vgSA/74EJgAoBIUAEwSFABMEhQATBIUAEwSFABMEhQATBIUAEwR8AGAD5gCKA+YAigPmAIoD5gCKAej/vgHoAI4B6P/HAej/tATjAIoEuwBgBLsAYAS7AGAEuwBgBLsAYAR8AHQEfAB0BHwAdAR8AHQEKwANBIUAEwSFABMEhQATBHwAYAR8AGAEfABgBHwAYASAAIoD5gCKA+YAigPmAIoD5gCKA+YAigSsAGMErABjBKwAYwSsAGME4wCKAej/lQHo/5QB6P/KAegABgHoAIkDzwArBFQAigO0AIIDtACKA7QAigO0AIoE4wCKBOMAigTjAIoEuwBgBLsAYAS7AGAESgCKBEoAigRKAIoEIABDBCAAQwQgAEMEIABDBCYAKAQmACgEJgAoBHwAdAR8AHQEfAB0BHwAdAR8AHQEfAB0BhUAMQQrAA0EKwANBCMARwQjAEcEIwBHBTgAHATw//AGGP/+ApEABAWU//oFMv94BWb//QKX/5sFOAAcBPsAqQSMAKkEygBWBbQAqQItALcFBACpBvwAqQW0AKkFgAB2BQwAqQTGADEEzgAPBQQAOQIt/9YEzgAPBIUAZARQAGMEiACRApcAwwRdAI8EcwCaBJAAWwSIAJoD4AAhA/cAKQKX/+YEXQCPBJAAWwRdAI8GlwB6BIwAqQRzALEEvwBQAi0AtwIt/9YEagA1BSQAsgUEAKkFBwBNBTgAHAT7AKkEcwCxBIwAqQW0ALEG/ACpBbQAqQWAAHYFtQCyBQwAqQU1AHcExgAxBQQAOQRaAG0EPQBdBJ4AnASQAFsEfQCMBDAAXAPJABYD9wApBD0AXQNbAJoEIABfAfEAjQH6/7wB6f+/BFIAnAPJABYHGQA9BgMAKwcZAD0GAwArBxkAPQYDACsEzgAPA8kAFgFlAGcCjwCIBB4AoAID/7QBmQAwBvwAqQcDAIsFOAAcBFoAbQSMAKkFtACxBD0AXQSeAJwFiQBaBZoAXwUKABYEA//7CFkAWwlJAHYEvwBQBBAAWAU1AHcEMABcBM4ADwQCAC4CLQC3B0MAGwYgABUCLQC3BTgAHARaAG0FOAAcBFoAbQd6//IGwQBOBIwAqQQ9AF0FhwBdBDcAYgQ3AGIHQwAbBiAAFQS/AFAEEABYBbQAsQSeAJwFtACxBJ4AnAWAAHYEkABbBXEAZwSLAFsFcQBnBIsAWwVkAJMETQBkBQcATQPJABYFBwBNA8kAFgUHAE0DyQAWBXoAlgRZAGcG6wCyBjYAnQUEADkD9wApBIMAXwWpAC8EoAAsBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBTgAHARa/8oFOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjP/wBD3/ugSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQItALcB+gCbAi0AowHxAIUFgAB2BJAAWwWAAHYEkABbBYAAdgSQAFsFgABHBJD/xAWAAHYEkABbBYAAdgSQAFsFgAB2BJAAWwV+AGUEkgBbBX4AZQSSAFsFfgBlBJIAWwV+AGUEkgBbBX4AZQSSAFsFMACMBGkAiAUwAIwEaQCIBZAAjATzAIgFkACMBPMAiAWQAIwE8wCIBZAAjATzAIgFkACMBPMAiATOAA8DyQAWBM4ADwPJABYEzgAPA8kAFgShAF8EoQBfBSQAsgRSAJwFtACpBJ0AnATGADED2AAoBQQAOQP3ACkFegCWBFkAZwV6AJYEWQBnBHMAsQNbAJoHQwAbBiAAFQYvAD8Evf/eBGgAjAUF/9QFBf/UBHMAAwNb//wFOAALBCf/0wW0ALEEngCcBbQAqQSdAJwG/ACpBe8AnQWpAC8EoAAsBM4ADwQCAC4FBAA5A/cAKQRQAGMEbAASBj8AkAR+AF0EfgBeBH4ANQR+AJoEkgBkBKYAhwVzAHoEfQBgBbQAqQRqAIwFOAAcBFoAOQSMAF8EPQApAi3/CgH6/vAFgAB2BJAAMwTtAFUCtf+LBTAAjARpACsEpv86BPsAqQR9AIwFPwCpBIMAXwU/AKkEgwBfBbQAqQRoAIwFBACpBA4AjQUEAKkEDgCNBE4AqQHxAIYG/ACpBwMAiwW0AKkEagCMBQwAqQR9AIwE7QCoArUAggS/AFAEIABfBMYAMQKdAAkFFwAcA+AAIQUXABwD4AAhBxkAPQYDACsEygBWA/cAWAXG/ngEhQATBCL/nwUf/7wCJP/ABMX/3wRn/1cE/P/4BIUAEwRQAIoD5gCKBCMARwTjAIoB6ACXBFQAigYCAIoEuwBgBFwAigQmACgEKwANBFQAJgHo/7QEKwANA+YAigOvAIoEIABDAegAlwHo/7QDzwArBFQAigQfACIEhQATBFAAigOvAIoD5gCKBOwAigYCAIoE4wCKBLsAYATOAIoEXACKBHwAYAQmACgEVAAmBD8ARwTjAIoEfABgBCsADQXDAAIE7ACKBB8AIgVnAGAFOAAcBFoAbQSMAKkEPQBdAAAAAQAABOQJCgQAAAICAgMGBQcGAgMDBAUCAgIEBQUFBQUFBQUFBQICBQUFBAgGBgYGBQUGBgIFBgUIBgYGBgYFBQYGCAYFBQIEAgQEAwUFBQUFAwUFAgIFAggFBQUFAwUDBQQHBAQEAwIDBgIFBQYFAgYEBwQEBQcEAwUDAwMFBAICAwQEBwcHBAgFBgUFCAUFBQUGAgUFAgYFCQgCBgMGBQYGAgUEBAQEAgMCBAMDAAAAAAACAgUCBQYGBgUGBQYGBgUFBQUFBQUFAwUEBQUFBQUFBgYHBQUHBwYKCgcGBgcIBQYGBgcHBggJBwgGBggGBQUEBQcFBQUFBwUFBAcFBQcHBgcFBQcFBQUICAUFCAcFCAcFBQgHCAcKCQUEBgUGBQYFCAcIBwYFBgAAAAAAAAUGBQUEBQUGBQcGCQYJCAcFCAYGBQYHBQYFBgUGBQUFBAYHCAcGBQUJBwkHBgUGBgYEBQkFCQMCAgUCAgEAAgIGBwQCAgICAwMDBQUDBAYBCQMDBAMEBQcHCggHBQcFBQYGBwQJBgYHCAgHBQYFBQUJAgUFBQUFAwMCBgUFCAgGBwAJCQUFAgIEBAQEBQQEBAIFBQUFBAQFBgIEBQQHBgUFBQUFBQUFBwUFBQMDAwMDAwMDAwMEAwUFBgYFBgUFBQUEBQUFBAUEBgYGBgUICAYFBQYHBQYFBQUGBQcIBgcFBQcFBQcFBgYGBQUHBQUGBQUFBQQJBQUFBQUEBQUFBQYGBgcHBAUEBQUDAwMDAwMDBQUHBQYCAgICAgIFAgIGBgUFAwYGBgYGBgYGBQUFBQICAgIGBgYGBgYGBgYGBQUFBQUFBQUFBQUFBQICAgIFBQUFBQUFBQUFBAQGBQYFBgUGBQYFBgUGBQYGBQUFBQUFBQUFBQYFBgUGBQYFBgUCAgICAgICAgIHBAUCBgUFAgUCBQMFAwYFBgUGBQUGBQYFBgUGAwYDBgMFBQUFBQUFBQUFBQMFAwUDBgUGBQYFBgUGBQYFCAcFBAUFBAUEBQQICAYFBQUFBQUF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sRCxUrG2sc2x5LH7shKyK7JEslCyXLJzsoqyobK6stGy6LL/sxizL7NGs12zdLOLs6Szu7PSs+m0ArQZtDC0R7RdtHO0jLSltLG0vbTUtOu1AbUatTC1RrVdtXa1jLWjtbq10LXmtf+2FrYttkO2XLZztou2ora4ts+25rdJt9+39rgNuCS4OrhRuGi4f7iVuKy43bj0uQq5Ibk4uU+5ZrnOulK6abp/upa6rLrDutq68bsIuxS7K7tCu1S7a7uCu5m7sLvHu9676bv0vAu8F7wjvDq8UbxdvGm8gLyXvKO8r7zEvPm9Bb0RvSi9P71LvVe9br2EvZS9q73Bvdi9774IviG+OL5Pvlu+Z75+vpS+q77Cvtm+7777vwe/E78fvza/TL9Yv2S/cL98v5O/n7+2v8y/47/5wBDAJ8BAwFnAcsCLwOjBTsFlwXzBk8GpwcLB2cHwwgfCHsI1wkvCYsJ5wpDCp8LKwvLDBcMcwzPDScNfw3jDkcOdw6nDwMPXw+3EBcQbxDHESMRhxHjEj8SmxL3E1MTtxQTFG8UxxUrFYcV3xY7F8cYIxh7GNcZMxmLGeMaOxqXHDsckxzrHUcdox3THi8eix7nH0Mfbx/HICMgUyCrINshLyFfIbsh6yJHIqMi/yNjI78j7yRHJKMk+yUrJYMlsyYLJjsmkybrJ0cnqygPKX8p2yozKpMq7ytLK6Mrzyv/LC8sXyyPLL8s7y1fLX8tny2/Ld8t/y4fLj8uXy5/Lp8uvy7fLv8vHy+DL+cwQzCfMPsxUzG/Md8x/zIfMj8yXzK/Mx8zezPXNDM0lzTzNp82vzcjN0M3Yze/OBs4OzhbOHs4mzj3ORc5NzlXOXc5lzm3Odc59zoXOjc6kzqzOtM8Hzw/PF88wz0fPT89Xz3DPeM+Pz6XPvM/Tz+rQAdAa0DPQStBh0GnQcdB90JTQnNCz0MrQ1tDi0PnRENEn0T7RRtFO0WfRgNGM0ZjRpNGw0bzRyNHQ0djR4NH30g7SFtIt0kTSW9J00nzShNKb0rLSy9LT0uzTBdMe0zfTT9Nm03zTldOu08fT4NPo0/DUCdQi1DvUU9Rq1IDUmdSx1MrU49T81RTVMdVO1VrVZtVu1XrVhtWS1Z7VtdXM1eXV/dYW1i7WR9Zf1njWkNar1sXW3tb31xDXKddC11vXdNeN16jXw9fP19vX8tgJ2CDYNthP2GfYgNiY2LHYydji2PrZFdkv2UbZXdlp2XXZgdmN2aTZu9nU2ezaBdod2jbaTtpn2n/amtq02sva4tr52xDbJ9s+21Xba9t324Pbj9ub27Lbydvg2/fcDtwl3DzcU9xq3IDcjNyY3KTcsNzH3N7c9d0L3YHdlt2i3a7dut3G3dLd3t3q3fbeAt4O3hreJt4y3j7eSt5W3mLebt523tTfMt9037PgF+B14JDgq+C34MPgz+Db4Ofg8+E94Y3h5eI74kPiT+JZ4mHiaeJx4nnigeKJ4qDit+LO4uXi/uMX4zDjSeNi43vjlOOt48bj3+P45BHkHeQp5DXkQeRN5FnkZeRx5H3klOSm5LLkvuTK5Nbk4uTu5PrlBuUd5TTlQOVM5VjlZOVw5Xzlk+Wp5bXlweXN5dnl5eXx5f3mCeYV5iHmLeY55kXmUeZZ5mHmaeZx5nnmgeaJ5pHmmeah5qnmsea55tLm6ucC5xnnIecp50LnSudh53fnf+eH54/nl+eu57bnvufG587n1ufe5+bn7uh46MTpIukq6TbpTelj6Wvpd+mD6Y/pmwAAAAUAZAAAAygFsAADAAYACQAMAA8AcbIMEBEREjmwDBCwANCwDBCwBtCwDBCwCdCwDBCwDdAAsABFWLACLxuxAhw+WbAARViwAC8bsQAQPlmyBAIAERI5sgUCABESObIHAgAREjmyCAIAERI5sQoM9LIMAgAREjmyDQIAERI5sAIQsQ4M9DAxISERIQMRAQERAQMhATUBIQMo/TwCxDb+7v66AQzkAgP+/gEC/f0FsPqkBQf9fQJ3+xECeP1eAl6IAl4AAgCg//UBewWwAAMADAAvALAARViwAi8bsQIcPlmwAEVYsAsvG7ELED5ZsgYFCitYIdgb9FmyAQYCERI5MDEBIwMzAzQ2MhYUBiImAVunDcLJN2w4OGw3AZsEFfqtLT09Wjs7AAIAiAQSAiMGAAAEAAkAGQCwAy+yAgoDERI5sAIvsAfQsAMQsAjQMDEBAyMTMwUDIxMzARUebwGMAQ4ebwGMBXj+mgHuiP6aAe4AAgB3AAAE0wWwABsAHwCPALAARViwDC8bsQwcPlmwAEVYsBAvG7EQHD5ZsABFWLACLxuxAhA+WbAARViwGi8bsRoQPlmyHQwCERI5fLAdLxiyAAMKK1gh2Bv0WbAE0LAdELAG0LAdELAL0LALL7IIAworWCHYG/RZsAsQsA7QsAsQsBLQsAgQsBTQsB0QsBbQsAAQsBjQsAgQsB7QMDEBIQMjEyM1IRMhNSETMwMhEzMDMxUjAzMVIwMjAyETIQL9/vhQj1DvAQlF/v4BHVKPUgEIUpBSzOdF4ftQkJ4BCEX++AGa/mYBmokBYosBoP5gAaD+YIv+non+ZgIjAWIAAAEAbv8wBBEGnAArAGYAsABFWLAJLxuxCRw+WbAARViwIi8bsSIQPlmyAiIJERI5sAkQsAzQsAkQsBDQsAkQshMBCitYIdgb9FmwAhCyGQEKK1gh2Bv0WbAiELAf0LAiELAm0LAiELIpAQorWCHYG/RZMDEBNCYnJiY1NDY3NTMVFhYVIzQmIyIGFRQWBBYWFRQGBxUjNSYmNTMUFjMyNgNYgZnVw7+nlai7uIZyd36FATGrUcu3lLrTuZKGg5YBd1x+M0HRoaTSFNvcF+zNjaZ7bmZ5Y3eeaqnOE7+/EefGi5Z+AAUAaf/rBYMFxQANABoAJgA0ADgAeACwAEVYsAMvG7EDHD5ZsABFWLAjLxuxIxA+WbADELAK0LAKL7IRBAorWCHYG/RZsAMQshgECitYIdgb9FmwIxCwHdCwHS+wIxCyKgQKK1gh2Bv0WbAdELIxBAorWCHYG/RZsjUjAxESObA1L7I3AyMREjmwNy8wMRM0NjMyFhUVFAYjIiY1FxQWMzI2NTU0JiIGFQE0NiAWFRUUBiAmNRcUFjMyNjU1NCYjIgYVBScBF2mng4Wlp4GCqopYSkdXVpRWAjunAQaop/78qopYSkhWV0lHWf4HaQLHaQSYg6qriEeEp6eLB05lYlVJTmZmUvzRg6moi0eDqaeLBk9lY1VKT2RjVPNCBHJCAAMAZf/sBPMFxAAeACcAMwCFALAARViwCS8bsQkcPlmwAEVYsBwvG7EcED5ZsABFWLAYLxuxGBA+WbIiHAkREjmyKgkcERI5sgMiKhESObIQKiIREjmyEQkcERI5shMcCRESObIZHAkREjmyFhEZERI5sBwQsh8BCitYIdgb9FmyIR8RERI5sAkQsjEBCitYIdgb9FkwMRM0NjcmJjU0NjMyFhUUBgcHATY1MxQHFyMnBgYjIiQFMjcBBwYVFBYDFBc3NjY1NCYjIgZldaVhQsSolsRZb2sBRESne9DeYUrHZ9X+/gHXk3r+nSGnmSJ2dkQyZExSYAGHabB1dpBHpryvhViVUk/+fYKf/6j5c0JF4ktwAakYe4J2jgPlYJBTMFc+Q1lvAAEAZwQhAP0GAAAEABAAsAMvsgIFAxESObACLzAxEwMjEzP9FYEBlQWR/pAB3wABAIX+KgKVBmsAEQAJALAOL7AELzAxEzQSEjcXBgIDBxATFhcHJicChXnwgSaSuwkBjVV1JoV57AJP4gGgAVRGenD+NP7jVf5+/uSqYHFKrgFUAAABACb+KgI3BmsAEQAJALAOL7AELzAxARQCAgcnNhITNTQCAic3FhISAjd18YQnmrsCWJ1iJ4TvdwJF3/5n/qZJcXYB8QEvINIBaQEeUHFJ/qr+ZAABABwCYQNVBbAADgAgALAARViwBC8bsQQcPlmwANAZsAAvGLAJ0BmwCS8YMDEBJTcFAzMDJRcFEwcDAycBSv7SLgEuCZkKASku/s3GfLq0fQPXWpdwAVj+o26YW/7xXgEg/udbAAABAE4AkgQ0BLYACwAaALAJL7AA0LAJELIGAQorWCHYG/RZsAPQMDEBIRUhESMRITUhETMCngGW/mq6/moBlroDDa/+NAHMrwGpAAEAHf7eATQA2wAIABcAsAkvsgQFCitYIdgb9FmwANCwAC8wMRMnNjc1MxUUBoZpXgS1Y/7eSIOLp5FlygAAAQAlAh8CDQK2AAMAEQCwAi+yAQEKK1gh2Bv0WTAxASE1IQIN/hgB6AIflwABAJD/9QF2ANEACQAbALAARViwBy8bsQcQPlmyAgUKK1gh2Bv0WTAxNzQ2MhYVFAYiJpA5cjs7cjlhMEBAMC4+PgABABL/gwMQBbAAAwATALAAL7AARViwAi8bsQIcPlkwMRcjATOxnwJgnn0GLQAAAgBz/+wECgXEAA0AGwA5ALAARViwCi8bsQocPlmwAEVYsAMvG7EDED5ZsAoQshEBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxARACIyICAzUQEjMyEhMnNCYjIgYHERQWMzI2NwQK3uzp4ATe7eveA7mEj46CAomLiYUDAm3+u/7EATUBM/cBQQE4/tP+xg3r19be/tjs4dTkAAEAqgAAAtkFtwAGADkAsABFWLAFLxuxBRw+WbAARViwAC8bsQAQPlmyBAAFERI5sAQvsgMBCitYIdgb9FmyAgMFERI5MDEhIxEFNSUzAtm6/osCEh0E0YmoxwAAAQBdAAAEMwXEABcATQCwAEVYsBAvG7EQHD5ZsABFWLAALxuxABA+WbIXAQorWCHYG/RZsALQsgMQFxESObAQELIJAQorWCHYG/RZsBAQsAzQshUXEBESOTAxISE1ATY2NTQmIyIGFSM0JDMyFhUUAQEhBDP8RgH4cFWKc4qZuQED2cvs/u7+egLbhQIwf59VcpKdjMn41bHX/tf+WQABAF7/7AP5BcQAJgB4ALAARViwDS8bsQ0cPlmwAEVYsBkvG7EZED5ZsgANGRESObAAL7LPAAFdsp8AAXGyLwABXbJfAAFysA0QsgYBCitYIdgb9FmwDRCwCdCwABCyJgEKK1gh2Bv0WbITJgAREjmwGRCwHNCwGRCyHwEKK1gh2Bv0WTAxATM2NjUQIyIGFSM0NjMyFhUUBgcWFhUUBCAkNTMUFjMyNjU0JicjAYaLg5b/eI+5/cPO6ntqeIP/AP5m/v+6ln6GjpyTiwMyAoZyAQCJca3l2sJfsiwmsH/E5t62c4qMg3+IAgACADUAAARQBbAACgAOAEkAsABFWLAJLxuxCRw+WbAARViwBC8bsQQQPlmyAQkEERI5sAEvsgIBCitYIdgb9FmwBtCwARCwC9CyCAYLERI5sg0JBBESOTAxATMVIxEjESE1ATMBIREHA4bKyrr9aQKMxf2BAcUWAemX/q4BUm0D8fw5AsooAAEAmv/sBC0FsAAdAGEAsABFWLABLxuxARw+WbAARViwDS8bsQ0QPlmwARCyBAEKK1gh2Bv0WbIHDQEREjmwBy+yGgEKK1gh2Bv0WbIFBxoREjmwDRCwEdCwDRCyFAEKK1gh2Bv0WbAHELAd0DAxExMhFSEDNjMyEhUUAiMiJiczFhYzMjY1NCYjIgcHzkoC6v2zLGuIx+rz2sH0Ea8RkHaBk5+EeUUxAtoC1qv+cz/++eDh/v3WvX1/sJuSsTUoAAIAhP/sBBwFsQAUACEATgCwAEVYsAAvG7EAHD5ZsABFWLANLxuxDRA+WbAAELIBAQorWCHYG/RZsgcNABESObAHL7IVAQorWCHYG/RZsA0QshwBCitYIdgb9FkwMQEVIwYEBzYzMhIVFAIjIgA1NRAAJQMiBgcVFBYzMjY1NCYDTyLY/wAUc8e+4/XO0f78AVcBU9JfoB+ieX2PkQWxnQT44YT+9NTh/vIBQf1HAZIBqQX9cHJWRLTcuJWWuQABAE0AAAQlBbAABgAyALAARViwBS8bsQUcPlmwAEVYsAEvG7EBED5ZsAUQsgMBCitYIdgb9FmyAAMFERI5MDEBASMBITUhBCX9pcICWfzsA9gFSPq4BRiYAAADAHD/7AQOBcQAFwAhACsAYQCwAEVYsBUvG7EVHD5ZsABFWLAJLxuxCRA+WbInCRUREjmwJy+yzycBXbIaAQorWCHYG/RZsgMaJxESObIPJxoREjmwCRCyHwEKK1gh2Bv0WbAVELIiAQorWCHYG/RZMDEBFAYHFhYVFAYjIiY1NDY3JiY1NDYzMhYDNCYiBhQWMzI2ASIGFRQWMjY0JgPsc2Jyhf/Q0v2BcmFw7MHA7Zeb+peTg4KU/upth4XehYoENG2qMDG8d73g4bx2vjEwqmy42Nj8oXqamPiOjwQah3RviYnejAAAAgBk//8D+AXEABcAJABYALAARViwCy8bsQscPlmwAEVYsBMvG7ETED5ZsgMTCxESObADL7IAAwsREjmwExCyFAEKK1gh2Bv0WbADELIYAQorWCHYG/RZsAsQsh8BCitYIdgb9FkwMQEGBiMiJiY1NDY2MzISERUQAAUjNTM2NiUyNjc1NCYjIgYVFBYDPjqhYH67Zm/MiNj5/rD+rSQn5fb+7l2dJJ55epSPAoBFVHzhiJLqfP69/uk2/lf+eQWcBOf6clRKtuS7mZXBAP//AIb/9QFtBEQAJgAS9gABBwAS//cDcwAQALAARViwDS8bsQ0YPlkwMf//ACn+3gFVBEQAJwAS/98DcwEGABAMAAAQALAARViwAy8bsQMYPlkwMQABAEgAwwN6BEoABgAWALAARViwBS8bsQUYPlmwAtCwAi8wMQEFFQE1ARUBCAJy/M4DMgKE/cQBe5IBesQAAAIAmAGPA9oDzwADAAcAJQCwBy+wA9CwAy+yAAEKK1gh2Bv0WbAHELIEAQorWCHYG/RZMDEBITUhESE1IQPa/L4DQvy+A0IDLqH9wKAAAAEAhgDEA9wESwAGABYAsABFWLACLxuxAhg+WbAF0LAFLzAxAQE1ARUBNQMb/WsDVvyqAooBA77+hpL+hcAAAgBL//UDdgXEABgAIQBRALAARViwEC8bsRAcPlmwAEVYsCAvG7EgED5ZshsFCitYIdgb9FmyABsQERI5sgQQABESObAQELIJAQorWCHYG/RZsBAQsAzQshUAEBESOTAxATY2Nzc2NTQmIyIGFSM2NjMyFhUUBwcGFQM0NjIWFAYiJgFlAjJNg1RuaWZ8uQLjtr3Tom1JwTdsODhsNwGad4pUh19taXdsW6LHy7GvqmxRmP7DLT09Wjs7AAACAGr+OwbWBZcANQBCAGgAsDIvsABFWLAILxuxCBA+WbAD0LIPMggREjmwDy+yBQgPERI5sAgQsjkCCitYIdgb9FmwFdCwMhCyGwIKK1gh2Bv0WbAIELAq0LAqL7IjAgorWCHYG/RZsA8QskACCitYIdgb9FkwMQEGAiMiJwYGIyImNzYSNjMyFhcDBjMyNjcSACEiBAIHBhIEMzI2NxcGBiMiJAITEhIkMzIEEgEGFjMyNjc3EyYjIgYGygzYtbs1NotKjpITD3m/aVGAUDQTk3GMBhP+uf6yyf7ItAsMkAEn0Vq1PCU+zWn6/pizDAzeAXzv+QFkrvvyDlFYPG8kAS44QHWZAfby/uioVVPozaUBA5QrP/3W5+C0AYUBmMf+iPb4/pPBLCNzJzLhAacBGwETAbfv4P5a/pCOmGZfCQH3He4AAAIAHAAABR0FsAAHAAoARgCwAEVYsAQvG7EEHD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmyCQQCERI5sAkvsgABCitYIdgb9FmyCgQCERI5MDEBIQMjATMBIwEhAwPN/Z6JxgIsqAItxf1NAe/4AXz+hAWw+lACGgKpAAMAqQAABIgFsAAOABYAHwBVALAARViwAS8bsQEcPlmwAEVYsAAvG7EAED5ZshcAARESObAXL7IPAQorWCHYG/RZsggPFxESObAAELIQAQorWCHYG/RZsAEQsh8BCitYIdgb9FkwMTMRITIWFRQGBxYWFRQGIwERITI2NRAhJSEyNjU0JiMhqQHc7e90ZHaJ/uj+xwE9hpv+4v7AASJ+l4yP/uQFsMTAZp0rIbmAxOACqf30i3oBB5p+bHhtAAABAHf/7ATYBcQAHABFALAARViwCy8bsQscPlmwAEVYsAMvG7EDED5ZsAsQsA/QsAsQshIBCitYIdgb9FmwAxCyGQEKK1gh2Bv0WbADELAc0DAxAQYEIyAAETU0EiQzMgAXIyYmIyICFRUUEjMyNjcE2Bv+4e7+/v7JkQEKr+gBGBfBGaeWuNHGsqCrHAHO5/sBcgE2jMsBNKX+/eWunP7w+43t/uiRtAACAKkAAATGBbAACwAVADkAsABFWLABLxuxARw+WbAARViwAC8bsQAQPlmwARCyDAEKK1gh2Bv0WbAAELINAQorWCHYG/RZMDEzESEyBBIXFRQCBAcDETMyEjU1NAInqQGbvgEknwGf/tnE08re9+nWBbCo/srJXc7+yqYCBRL7iwEU/1X4ARMCAAABAKkAAARGBbAACwBOALAARViwBi8bsQYcPlmwAEVYsAQvG7EEED5ZsgsEBhESObALL7IAAQorWCHYG/RZsAQQsgIBCitYIdgb9FmwBhCyCAEKK1gh2Bv0WTAxASERIRUhESEVIREhA+D9iQLd/GMDk/0tAncCof38nQWwnv4sAAEAqQAABC8FsAAJAEAAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmyCQIEERI5sAkvsgABCitYIdgb9FmwBBCyBgEKK1gh2Bv0WTAxASERIxEhFSERIQPM/Z3AA4b9OgJjAoP9fQWwnv4OAAEAev/sBNwFxAAfAGIAsABFWLALLxuxCxw+WbAARViwAy8bsQMQPlmwCxCwD9CwCxCyEQEKK1gh2Bv0WbADELIYAQorWCHYG/RZsh4DCxESObAeL7QPHh8eAl20Px5PHgJdsh0BCitYIdgb9FkwMSUGBCMiJAInNRAAITIEFyMCISICAxUUEjMyNjcRITUhBNxK/vewsv7slwIBMwEW5AEWH8A2/t7BxwHgv2yiNf6vAhC/ammnATTLfwFJAWrp1gEh/vH+/3f1/t8wOQFHnAABAKkAAAUIBbAACwBVALAARViwBi8bsQYcPlmwAEVYsAovG7EKHD5ZsABFWLAALxuxABA+WbAARViwBC8bsQQQPlmwABCwCdCwCS+ynwkBcrIvCQFdsgIBCitYIdgb9FkwMSEjESERIxEzESERMwUIwf0iwMAC3sECof1fBbD9jgJyAAABALcAAAF3BbAAAwAdALAARViwAi8bsQIcPlmwAEVYsAAvG7EAED5ZMDEhIxEzAXfAwAWwAAABADX/7APMBbAADwAuALAARViwAC8bsQAcPlmwAEVYsAUvG7EFED5ZsAnQsAUQsgwBCitYIdgb9FkwMQEzERQGIyImNTMUFjMyNjcDC8H70dnywImCd5MBBbD7+dHs3sh9jJaHAAABAKkAAAUFBbAACwB0ALAARViwBS8bsQUcPlmwAEVYsAcvG7EHHD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmyAAIFERI5QBFKAFoAagB6AIoAmgCqALoACF2yOQABXbIGBQIREjlAEzYGRgZWBmYGdgaGBpYGpga2BgldMDEBBxEjETMRATMBASMCG7LAwAKH6P3DAmrmAqW5/hQFsP0wAtD9ffzTAAEAqQAABBwFsAAFACgAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WTAxJSEVIREzAWoCsvyNwZ2dBbAAAAEAqQAABlIFsAAOAFkAsABFWLAALxuxABw+WbAARViwAi8bsQIcPlmwAEVYsAQvG7EEED5ZsABFWLAILxuxCBA+WbAARViwDC8bsQwQPlmyAQAEERI5sgcABBESObIKAAQREjkwMQkCMxEjERMBIwETESMRAaEB3AHc+cAS/iKT/iMTwAWw+1wEpPpQAjcCZPtlBJj9n/3JBbAAAAEAqQAABQgFsAAJAEyyAQoLERI5ALAARViwBS8bsQUcPlmwAEVYsAgvG7EIHD5ZsABFWLAALxuxABA+WbAARViwAy8bsQMQPlmyAgUAERI5sgcFABESOTAxISMBESMRMwERMwUIwf0jwcEC378EYvueBbD7mQRnAAIAdv/sBQkFxAARAB8AOQCwAEVYsA0vG7ENHD5ZsABFWLAELxuxBBA+WbANELIVAQorWCHYG/RZsAQQshwBCitYIdgb9FkwMQEUAgQjIiQCJzU0EiQzMgQSFScQAiMiAgcVFBIzMhI3BQmQ/viwrP72kwKSAQusrwELkL/Qu7bRA9O5uswDAqnW/sGoqQE5zmnSAUKrqf6/1QIBAwEV/uv2a/v+4QEP/QAAAgCpAAAEwAWwAAoAEwBNsgoUFRESObAKELAM0ACwAEVYsAMvG7EDHD5ZsABFWLABLxuxARA+WbILAwEREjmwCy+yAAEKK1gh2Bv0WbADELISAQorWCHYG/RZMDEBESMRITIEFRQEIyUhMjY1NCYnIQFpwAIZ7wEP/vf3/qkBWZqkpI/+nAI6/cYFsPTJ1OWdkYmCnAMAAgBt/woFBgXEABUAIgBNsggjJBESObAIELAZ0ACwAEVYsBEvG7ERHD5ZsABFWLAILxuxCBA+WbIDCBEREjmwERCyGQEKK1gh2Bv0WbAIELIgAQorWCHYG/RZMDEBFAIHBQclBiMiJAInNTQSJDMyBBIVJxACIyICBxUUEiASNwUBhnkBBIP+zUhQrP72kwKSAQussAELkMDNvrXRA9EBdMwDAqnT/s9WzHn0EqkBOc5p0gFCq6r+wdUBAQEBF/7r9mv6/uABD/0AAAIAqAAABMkFsAAOABcAYbIFGBkREjmwBRCwFtAAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmwAEVYsA0vG7ENED5ZshAEAhESObAQL7IAAQorWCHYG/RZsgsABBESObAEELIWAQorWCHYG/RZMDEBIREjESEyBBUUBgcBFSMBITI2NTQmJyECv/6qwQHi9gEJk4MBVs79bgEnj6mhmP7aAk39swWw4NaIyjL9lgwC6pR8h5ABAAABAFD/7ARyBcQAJgBhsgAnKBESOQCwAEVYsAYvG7EGHD5ZsABFWLAaLxuxGhA+WbAGELAL0LAGELIOAQorWCHYG/RZsiYaBhESObAmELIUAQorWCHYG/RZsBoQsB/QsBoQsiIBCitYIdgb9FkwMQEmJjU0JDMyFhYVIzQmIyIGFRQWBBYWFRQEIyIkJjUzFBYzMjY0JgJW9+EBE9yW64HBqJmOn5cBa81j/uznlv78jcHDo5iilgKJR8+YrOF0zHmEl31vWXtme6RvsdVzyH+EmXzWdQAAAQAxAAAElwWwAAcALgCwAEVYsAYvG7EGHD5ZsABFWLACLxuxAhA+WbAGELIAAQorWCHYG/RZsATQMDEBIREjESE1IQSX/iy//i0EZgUS+u4FEp4AAQCM/+wEqgWwABIAPLIFExQREjkAsABFWLAALxuxABw+WbAARViwCS8bsQkcPlmwAEVYsAUvG7EFED5Zsg4BCitYIdgb9FkwMQERBgAHByIAJxEzERQWMzI2NREEqgH+/9wz7/7kAr6uoaOtBbD8Is7++hACAQLiA+D8Jp6vrp4D2wAAAQAcAAAE/QWwAAYAOLIABwgREjkAsABFWLABLxuxARw+WbAARViwBS8bsQUcPlmwAEVYsAMvG7EDED5ZsgABAxESOTAxJQEzASMBMwKLAaDS/eSq/eXR/wSx+lAFsAAAAQA9AAAG7QWwABIAWQCwAEVYsAMvG7EDHD5ZsABFWLAILxuxCBw+WbAARViwES8bsREcPlmwAEVYsAovG7EKED5ZsABFWLAPLxuxDxA+WbIBAwoREjmyBgMKERI5sg0DChESOTAxARc3ATMBFzcTMwEjAScHASMBMwHjHCkBIKIBGSgf4sH+n6/+1BcX/smv/qDAAcvArQP4/AiwxAPk+lAEJW9v+9sFsAABADkAAATOBbAACwBrALAARViwAS8bsQEcPlmwAEVYsAovG7EKHD5ZsABFWLAELxuxBBA+WbAARViwBy8bsQcQPlmyAAEEERI5QAmGAJYApgC2AARdsgYBBBESOUAJiQaZBqkGuQYEXbIDAAYREjmyCQYAERI5MDEBATMBASMBASMBATMChAFd4v40Adfk/pr+mOMB2P4z4QOCAi79Lv0iAjj9yALeAtIAAAEADwAABLsFsAAIADEAsABFWLABLxuxARw+WbAARViwBy8bsQccPlmwAEVYsAQvG7EEED5ZsgABBBESOTAxAQEzAREjEQEzAmUBfNr+CsD+CtwC1QLb/G/94QIfA5EAAAEAVgAABHoFsAAJAEQAsABFWLAHLxuxBxw+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WbIEAAIREjmwBxCyBQEKK1gh2Bv0WbIJBQcREjkwMSUhFSE1ASE1IRUBOQNB+9wDHvzvA/ednZAEgp6NAAABAJL+yAILBoAABwAiALAEL7AHL7IAAQorWCHYG/RZsAQQsgMBCitYIdgb9FkwMQEjETMVIREhAgu/v/6HAXkF6Pl4mAe4AAABACj/gwM4BbAAAwATALACL7AARViwAC8bsQAcPlkwMRMzASMosAJgsAWw+dMAAQAJ/sgBgwaAAAcAJQCwAi+wAS+wAhCyBQEKK1gh2Bv0WbABELIGAQorWCHYG/RZMDETIREhNTMRIwkBev6GwcEGgPhImAaIAAABAEAC2QMUBbAABgAnsgAHCBESOQCwAEVYsAMvG7EDHD5ZsADQsgEHAxESObABL7AF0DAxAQMjATMBIwGqvqwBK38BKqsEu/4eAtf9KQABAAT/aQOYAAAAAwAbALAARViwAy8bsQMQPlmyAAEKK1gh2Bv0WTAxBSE1IQOY/GwDlJeXAAABADkE2AHaBf4AAwAjALABL7IPAQFdsADQGbAALxiwARCwAtCwAi+0DwIfAgJdMDEBIwEzAdqf/v7fBNgBJgAAAgBt/+wD6gROAB4AKAB5shcpKhESObAXELAg0ACwAEVYsBcvG7EXGD5ZsABFWLAELxuxBBA+WbAARViwAC8bsQAQPlmyAhcEERI5sgsXBBESObALL7AXELIPAQorWCHYG/RZshILFxESObAEELIfAQorWCHYG/RZsAsQsiMBCitYIdgb9FkwMSEmJwYjIiY1NCQzMzU0JiMiBhUjNDY2MzIWFxEUFxUlMjY3NSMgFRQWAygQCoGzoM0BAem0dHFjhrpzxXa71AQm/gtXnCOR/qx0IFKGtYupu1Vhc2RHUZdYu6T+DpVYEI1aSN7HV2IAAgCM/+wEIAYAAA4AGQBkshIaGxESObASELAD0ACwCC+wAEVYsAwvG7EMGD5ZsABFWLADLxuxAxA+WbAARViwBi8bsQYQPlmyBQgDERI5sgoMAxESObAMELISAQorWCHYG/RZsAMQshcBCitYIdgb9FkwMQEUAiMiJwcjETMRNiASESc0JiMiBxEWMzI2BCDkwM1wCaq5cAGK4bmSibdQVbSFlAIR+P7TkX0GAP3Di/7W/v0Fvc6q/iyqzgABAFz/7APsBE4AHQBJshAeHxESOQCwAEVYsBAvG7EQGD5ZsABFWLAILxuxCBA+WbIAAQorWCHYG/RZsAgQsAPQsBAQsBTQsBAQshcBCitYIdgb9FkwMSUyNjczDgIjIgARNTQ2NjMyFhcjJiYjIgYVFRQWAj5jlAivBXbFbt3++3TZlLbxCK8Ij2mNm5qDeFpdqGQBJwEAH572iNquaYfLwCO7ygAAAgBf/+wD8AYAAA8AGgBkshgbHBESObAYELAD0ACwBi+wAEVYsAMvG7EDGD5ZsABFWLAMLxuxDBA+WbAARViwCC8bsQgQPlmyBQMMERI5sgoDDBESObAMELITAQorWCHYG/RZsAMQshgBCitYIdgb9FkwMRM0EjMyFxEzESMnBiMiAjUXFBYzMjcRJiMiBl/sv75vuaoJb8a87bmYhrBRU6yImAIm+QEvggI0+gB0iAE0+Ae40J4B8ZnSAAACAF3/7APzBE4AFQAdAGmyCB4fERI5sAgQsBbQALAARViwCC8bsQgYPlmwAEVYsAAvG7EAED5ZshoIABESObAaL7S/Gs8aAl2yDAEKK1gh2Bv0WbAAELIQAQorWCHYG/RZshMIABESObAIELIWAQorWCHYG/RZMDEFIgA1NTQ2NjMyEhEVIRYWMzI2NxcGASIGByE1JiYCTdz+7HvdgdPq/SMEs4piiDNxiP7ZcJgSAh4IiBQBIfIiof2P/ur+/U2gxVBCWNEDyqOTDo2bAAEAPAAAAsoGFQAVAGOyDxYXERI5ALAARViwCC8bsQgePlmwAEVYsAMvG7EDGD5ZsABFWLARLxuxERg+WbAARViwAC8bsQAQPlmwAxCyAQEKK1gh2Bv0WbAIELINAQorWCHYG/RZsAEQsBPQsBTQMDEzESM1MzU0NjMyFwcmIyIGFRUzFSMR56uruqpAPwovNVpi5+cDq49vrr4RlglpYnKP/FUAAgBg/lYD8gROABkAJACDsiIlJhESObAiELAL0ACwAEVYsAMvG7EDGD5ZsABFWLAGLxuxBhg+WbAARViwCy8bsQsSPlmwAEVYsBcvG7EXED5ZsgUDFxESObIPFwsREjmwCxCyEQEKK1gh2Bv0WbIVAxcREjmwFxCyHQEKK1gh2Bv0WbADELIiAQorWCHYG/RZMDETNBIzMhc3MxEUBiMiJic3FjMyNjU1BiMiAjcUFjMyNxEmIyIGYOrBxm8JqfnSdeA7YHesh5dvwL7rupaHr1JVqoeYAib9ASuMePvg0vJkV2+TmIpdgAEy87fRnwHum9IAAAEAjAAAA98GAAARAEmyChITERI5ALAQL7AARViwAi8bsQIYPlmwAEVYsAUvG7EFED5ZsABFWLAOLxuxDhA+WbIAAgUREjmwAhCyCgEKK1gh2Bv0WTAxATYzIBMRIxEmJiMiBgcRIxEzAUV7xQFXA7kBaW9aiCa5uQO3l/59/TUCzHVwYE78/QYAAAIAjQAAAWgFxAADAAwAPrIGDQ4REjmwBhCwAdAAsABFWLACLxuxAhg+WbAARViwAC8bsQAQPlmwAhCwCtCwCi+yBgUKK1gh2Bv0WTAxISMRMwM0NjIWFAYiJgFVubnIN2w4OGw3BDoBHy0+Plo8PAAC/7/+SwFZBcQADAAWAEmyEBcYERI5sBAQsADQALAARViwDC8bsQwYPlmwAEVYsAMvG7EDEj5ZsggBCitYIdgb9FmwDBCwFdCwFS+yEAUKK1gh2Bv0WTAxAREQISInNRYzMjY1EQM0NjMyFhQGIiYBS/7lPTQgND5BEzc1Njg4bDYEOvtJ/sgSlAhDUwS7AR8sPz5aPDwAAAEAjQAABAwGAAAMAHUAsABFWLAELxuxBB4+WbAARViwCC8bsQgYPlmwAEVYsAIvG7ECED5ZsABFWLALLxuxCxA+WbIACAIREjlAFToASgBaAGoAegCKAJoAqgC6AMoACl2yBggCERI5QBU2BkYGVgZmBnYGhgaWBqYGtgbGBgpdMDEBBxEjETMRNwEzAQEjAbp0ubljAVHh/lsB1tkB9Xn+hAYA/F93AWT+PP2KAAEAnAAAAVUGAAADAB0AsABFWLACLxuxAh4+WbAARViwAC8bsQAQPlkwMSEjETMBVbm5BgAAAAEAiwAABngETgAdAHeyBB4fERI5ALAARViwAy8bsQMYPlmwAEVYsAgvG7EIGD5ZsABFWLAALxuxABg+WbAARViwCy8bsQsQPlmwAEVYsBQvG7EUED5ZsABFWLAbLxuxGxA+WbIBCAsREjmyBQgLERI5sAgQshABCitYIdgb9FmwGNAwMQEXNjMyFzY2MyATESMRNCYjIgYHESMRNCMiBxEjEQE6BXfK41I2rXYBZAa5an1niAu657ZDuQQ6eIyuTmD+h/0rAsp0c3to/TICxeyb/OoEOgABAIwAAAPfBE4AEQBTsgsSExESOQCwAEVYsAMvG7EDGD5ZsABFWLAALxuxABg+WbAARViwBi8bsQYQPlmwAEVYsA8vG7EPED5ZsgEDBhESObADELILAQorWCHYG/RZMDEBFzYzIBMRIxEmJiMiBgcRIxEBOwZ8yAFXA7kBaW9aiCa5BDqInP59/TUCzHVwYE78/QQ6AAACAFv/7AQ0BE4ADwAbAEOyDBwdERI5sAwQsBPQALAARViwBC8bsQQYPlmwAEVYsAwvG7EMED5ZshMBCitYIdgb9FmwBBCyGQEKK1gh2Bv0WTAxEzQ2NjMyABUVFAYGIyIANRcUFjMyNjU0JiMiBlt934/dARF54ZLc/u+6p4yNpqmMiagCJ5/+iv7O/g2e+4wBMvwJtNrdx7Ld2gACAIz+YAQeBE4ADwAaAG6yExscERI5sBMQsAzQALAARViwDC8bsQwYPlmwAEVYsAkvG7EJGD5ZsABFWLAGLxuxBhI+WbAARViwAy8bsQMQPlmyBQwDERI5sgoMAxESObAMELITAQorWCHYG/RZsAMQshgBCitYIdgb9FkwMQEUAiMiJxEjETMXNjMyEhEnNCYjIgcRFjMyNgQe4sHFcbmpCXHJw+O5nIioVFOrhZ0CEff+0n399wXaeIz+2v76BLfUlf37lNMAAAIAX/5gA+8ETgAPABoAa7IYGxwREjmwGBCwA9AAsABFWLADLxuxAxg+WbAARViwBi8bsQYYPlmwAEVYsAgvG7EIEj5ZsABFWLAMLxuxDBA+WbIFAwwREjmyCgMMERI5shMBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxEzQSMzIXNzMRIxEGIyICNRcUFjMyNxEmIyIGX+rFwG8IqrlwusTpuZ2FpVdYooaeAib/ASmBbfomAgR4ATH8CLrUkgISj9UAAQCMAAAClwROAA0ARrIEDg8REjkAsABFWLALLxuxCxg+WbAARViwCC8bsQgYPlmwAEVYsAUvG7EFED5ZsAsQsgIBCitYIdgb9FmyCQsFERI5MDEBJiMiBxEjETMXNjMyFwKXKjG2Qbm0A1unNhwDlAeb/QAEOn2RDgABAF//7AO7BE4AJgBhsgknKBESOQCwAEVYsAkvG7EJGD5ZsABFWLAcLxuxHBA+WbIDHAkREjmwCRCwDdCwCRCyEAEKK1gh2Bv0WbADELIVAQorWCHYG/RZsBwQsCHQsBwQsiQBCitYIdgb9FkwMQE0JiQmJjU0NjMyFhUjNCYjIgYVFBYEFhYVFAYjIiYmNTMWFjMyNgMCcf7npU/hr7jluoFiZXJqARWsU+i5gshxuQWLcml/AR9LUzxUdFCFuL6UTG5YR0NEPlZ5V5GvXKVgXW1VAAEACf/sAlYFQAAVAF+yDhYXERI5ALAARViwAS8bsQEYPlmwAEVYsBMvG7ETGD5ZsABFWLANLxuxDRA+WbABELAA0LAAL7ABELIDAQorWCHYG/RZsA0QsggBCitYIdgb9FmwAxCwEdCwEtAwMQERMxUjERQWMzI3FQYjIiY1ESM1MxEBh8rKNkEgOElFfH7FxQVA/vqP/WFBQQyWFJaKAp+PAQYAAQCI/+wD3AQ6ABAAU7IKERIREjkAsABFWLAGLxuxBhg+WbAARViwDS8bsQ0YPlmwAEVYsAIvG7ECED5ZsABFWLAQLxuxEBA+WbIADQIREjmwAhCyCgEKK1gh2Bv0WTAxJQYjIiYnETMRFDMyNxEzESMDKGzRrbUBucjURrmwa3/JxQLA/UX2ngMT+8YAAAEAIQAAA7oEOgAGADiyAAcIERI5ALAARViwAS8bsQEYPlmwAEVYsAUvG7EFGD5ZsABFWLADLxuxAxA+WbIABQMREjkwMSUBMwEjATMB8QEMvf58jf54vfsDP/vGBDoAAAEAKwAABdMEOgAMAGCyBQ0OERI5ALAARViwAS8bsQEYPlmwAEVYsAgvG7EIGD5ZsABFWLALLxuxCxg+WbAARViwAy8bsQMQPlmwAEVYsAYvG7EGED5ZsgALAxESObIFCwMREjmyCgsDERI5MDElEzMBIwEBIwEzExMzBErQuf7Flv75/wCW/sa41fyV/wM7+8YDNPzMBDr81gMqAAEAKQAAA8oEOgALAFMAsABFWLABLxuxARg+WbAARViwCi8bsQoYPlmwAEVYsAQvG7EEED5ZsABFWLAHLxuxBxA+WbIACgQREjmyBgoEERI5sgMABhESObIJBgAREjkwMQETMwEBIwMDIwEBMwH38Nj+ngFt1vr61wFt/p7WAq8Bi/3p/d0Blf5rAiMCFwABABb+SwOwBDoADwBJsgAQERESOQCwAEVYsAEvG7EBGD5ZsABFWLAOLxuxDhg+WbAARViwBS8bsQUSPlmyAA4FERI5sgkBCitYIdgb9FmwABCwDdAwMQETMwECIycnNRcyNjc3ATMB7vzG/k1l3CNFMl5pIin+fsoBDwMr+x/+8gMNlgRMZW4ELgABAFgAAAOzBDoACQBEALAARViwBy8bsQcYPlmwAEVYsAIvG7ECED5ZsgABCitYIdgb9FmyBAACERI5sAcQsgUBCitYIdgb9FmyCQUHERI5MDElIRUhNQEhNSEVAToCefylAlX9tAM0l5eIAxmZgwAAAQBA/pICngY9ABgAMbITGRoREjkAsA0vsAAvsgcNABESObAHL7IfBwFdsgYDCitYIdgb9FmyEwYHERI5MDEBJiY1NTQjNTI1NTY2NxcGERUUBxYVFRIXAnixs9TUAq+zJtGnpwPO/pIy5bzH85Hy0LfhM3ND/ubK41la5c7+7UIAAAEAr/7yAUQFsAADABMAsAAvsABFWLACLxuxAhw+WTAxASMRMwFElZX+8ga+AAABABP+kgJyBj0AGAAxsgUZGhESOQCwCy+wGC+yEQsYERI5sBEvsh8RAV2yEgMKK1gh2Bv0WbIFEhEREjkwMRc2EzU0NyY1NRAnNxYWFxUUMxUiFRUUBgcTywe1tdEmsbIB1NS1r/tBAQrc51RS6csBGkNzMuG50u+R88q84jIAAAEAgwGSBO8DIgAXAEKyERgZERI5ALAARViwDy8bsQ8WPlmwANCwDxCwFNCwFC+yAwEKK1gh2Bv0WbAPELIIAQorWCHYG/RZsAMQsAvQMDEBFAYjIi4CIyIGFQc0NjMyFhYXFzI2NQTvu4lIgKlKKk5UobiLTIywQB1MXwMJntk1lCRrXgKgzkChCgJ0XwACAIv+mAFmBE0AAwAMADKyBg0OERI5sAYQsADQALACL7AARViwCy8bsQsYPlmyBgUKK1gh2Bv0WbIBAgYREjkwMRMzEyMTFAYiJjQ2MhaqqA3CyTdsODhsNwKs++wFTC0+Plo8PAABAGn/CwP5BSYAIQBSsgAiIxESOQCwAEVYsBQvG7EUGD5ZsABFWLAKLxuxChA+WbAH0LIAAQorWCHYG/RZsAoQsAPQsBQQsBHQsBQQsBjQsBQQshsBCitYIdgb9FkwMSUyNjczBgYHFSM1JgI1NTQSNzUzFRYWFyMmJiMiBhUVFBYCSmSUCK8GxpC5s8jKsbmWwAavCI9pjZubg3lZfska6eoiARzcI9QBHSHi3xfUlmmHy8Aju8oAAQBbAAAEaAXEACEAfLIcIiMREjkAsABFWLAULxuxFBw+WbAARViwBS8bsQUQPlmyHxQFERI5sB8vsl8fAXKyjx8BcbK/HwFdsgABCitYIdgb9FmwBRCyAwEKK1gh2Bv0WbAH0LAI0LAAELAN0LAfELAP0LAUELAY0LAUELIbAQorWCHYG/RZMDEBFxQHIQchNTM2Njc1JyM1MwM0NjMyFhUjNCYjIgYVEyEVAcEIPgLdAfv4TSgyAgiloAn1yL7ev39vaYIJAT8CbtyaW52dCYNgCN2dAQTH7tSxa3yaff78nQAAAgBp/+UFWwTxABsAKgA/sgIrLBESObACELAn0ACwAEVYsAIvG7ECED5ZsBDQsBAvsAIQsh8BCitYIdgb9FmwEBCyJwEKK1gh2Bv0WTAxJQYjIicHJzcmNTQ3JzcXNjMyFzcXBxYVFAcXBwEUFhYyNjY1NCYmIyIGBgRPn9HPn4aCi2hwk4KTnsPEn5WEl25mj4T8YHPE4sRxccVwccRzcISCiIeNnMrOo5eIlnh5mImao8vEn5CIAnt71Hp703t603l41AAAAQAfAAAErQWwABYAawCwAEVYsBYvG7EWHD5ZsABFWLABLxuxARw+WbAARViwDC8bsQwQPlmyDxMDK7IADBYREjm0DxMfEwJdsBMQsAPQsBMQshICCitYIdgb9FmwBtCwDxCwB9CwDxCyDgIKK1gh2Bv0WbAK0DAxAQEzASEVIRUhFSERIxEhNSE1ITUhATMCZgFs2/5eATj+gAGA/oDB/oYBev6GATn+XtwDDgKi/TB9pXz+vgFCfKV9AtAAAAIAk/7yAU0FsAADAAcAGACwAC+wAEVYsAYvG7EGHD5ZsgUBAyswMRMRMxERIxEzk7q6uv7yAxf86QPIAvYAAgBa/hEEeQXEADQARACAsiNFRhESObAjELA10ACwCC+wAEVYsCMvG7EjHD5ZshYIIxESObAWELI/AQorWCHYG/RZsgIWPxESObAIELAO0LAIELIRAQorWCHYG/RZsjAjCBESObAwELI3AQorWCHYG/RZsh03MBESObAjELAn0LAjELIqAQorWCHYG/RZMDEBFAcWFhUUBCMiJicmNTcUFjMyNjU0JicuAjU0NyYmNTQkMzIEFSM0JiMiBhUUFhYEHgIlJicGBhUUFhYEFzY2NTQmBHm6RUj+/ORwyUaLurSciKaO0bbAXbZCRwEL3ugBBLmoi46hOIcBH6lxOv3hWktQSzaFARwsTlSLAa+9VTGIZKjHODlxzQKCl3VgWWk+MG+bb7pYMYhkpsjizX2bc2JFUEFQSGGBqxgbE2VFRlBCUhEUZUVYbQAAAgBmBPAC7wXFAAgAEQAdALAHL7ICBQorWCHYG/RZsAvQsAcQsBDQsBAvMDETNDYyFhQGIiYlNDYyFhQGIiZmN2w4OGw3Aa43bDg4bDcFWy09PVo8PCstPj5aPDwAAAMAW//rBeYFxAAbACoAOQCVsic6OxESObAnELAD0LAnELA20ACwAEVYsC4vG7EuHD5ZsABFWLA2LxuxNhA+WbIDNi4REjmwAy+0DwMfAwJdsgouNhESObAKL7QAChAKAl2yDgoDERI5shECCitYIdgb9FmwAxCyGAIKK1gh2Bv0WbIbAwoREjmwNhCyIAQKK1gh2Bv0WbAuELInBAorWCHYG/RZMDEBFAYjIiY1NTQ2MzIWFSM0JiMiBhUVFBYzMjY1JRQSBCAkEjU0AiQjIgQCBzQSJCAEEhUUAgQjIiQCBF+tnp29v5ugrJJfW15sbF5cXf0BoAETAUABEqCe/u2hoP7sn3O7AUsBgAFKu7T+tcbF/rW2AlWZodO2brDTpJVjVYp7cXiKVGWErP7bpqYBJayqASKnpf7cqsoBWsfH/qbKxf6o0c8BWAAAAgCTArMDDwXEABsAJQBssg4mJxESObAOELAd0ACwAEVYsBUvG7EVHD5ZsgQmFRESObAEL7AA0LICBBUREjmyCwQVERI5sAsvsBUQsg4DCitYIdgb9FmyEQsVERI5sAQQshwDCitYIdgb9FmwCxCyIAQKK1gh2Bv0WTAxASYnBiMiJjU0NjMzNTQjIgYVJzQ2MzIWFREUFyUyNjc1IwYGFRQCagwGTIB3gqesbHxFT6GsiYWaGv6kK1gccFNZAsEiJlZ8Z294NIc2Mwxngo+G/sRhUXsoG44BPzNe//8AZgCXA2QDswAmAXr6/gAHAXoBRP/+AAEAfwF3A74DIAAFABoAsAQvsAHQsAEvsAQQsgIBCitYIdgb9FkwMQEjESE1IQO+uv17Az8BdwEIoQAEAFr/6wXlBcQADgAeADQAPQCpsjY+PxESObA2ELAL0LA2ELAT0LA2ELAj0ACwAEVYsAMvG7EDHD5ZsABFWLALLxuxCxA+WbITBAorWCHYG/RZsAMQshsECitYIdgb9FmyIAsDERI5sCAvsiIDCxESObAiL7QAIhAiAl2yNSAiERI5sDUvsr81AV20ADUQNQJdsh8CCitYIdgb9FmyKB81ERI5sCAQsC/QsC8vsCIQsj0CCitYIdgb9FkwMRM0EiQgBBIVFAIEIyIkAjcUEgQzMiQSNTQCJCMiBAIFESMRITIWFRQHFhcVFBcVIyY0JyYnJzM2NjU0JiMjWrsBSwGAAUq7tP61xsX+tbZzoAEToKEBFJ2d/uyhoP7snwHAjQEUmamAegERkQ4DEHOwnEhYTmSKAtnKAVrHx/6mysX+qNHPAVjHrP7bpqkBIqyrASGnpf7c9f6uA1GDfXtBMpo9ViYQJLkRYASAAkI2ST0AAAEAeAUhA0IFsAADABEAsAEvsgIDCitYIdgb9FkwMQEhNSEDQv02AsoFIY8AAgCCA8ACfAXEAAsAFgAvALAARViwAy8bsQMcPlmwDNCwDC+yCQIKK1gh2Bv0WbADELISAgorWCHYG/RZMDETNDYzMhYVFAYjIiYXMjY1NCYjIgYUFoKVamiTk2hplv82Sko2N0tLBMBonJtpapaWFkc5OktPbEoAAgBhAAAD9QTzAAsADwBGALAJL7AARViwDS8bsQ0QPlmwCRCwANCwCRCyBgEKK1gh2Bv0WbAD0LANELIOAQorWCHYG/RZsgUOBhESObQLBRsFAl0wMQEhFSERIxEhNSERMwEhNSECiQFs/pSn/n8BgacBQfy9A0MDVpf+YgGelwGd+w2YAAABAEICmwKrBbsAFgBUsggXGBESOQCwAEVYsA4vG7EOHD5ZsABFWLAALxuxABQ+WbIWAgorWCHYG/RZsALQsgMOFhESObAOELIIAgorWCHYG/RZsA4QsAvQshQWDhESOTAxASE1ATY1NCYjIgYVIzQ2IBYVFA8CIQKr/akBLG1APEtHnacBCJprVLABjwKbbAEaZkUxPUw5cpR/bmhrT5EAAQA+Ao8CmgW6ACYAibIgJygREjkAsABFWLAOLxuxDhw+WbAARViwGS8bsRkUPlmyABkOERI5sAAvtm8AfwCPAANdsj8AAXG2DwAfAC8AA12yXwABcrAOELIHAgorWCHYG/RZsgoOGRESObAAELImBAorWCHYG/RZshQmABESObIdGQ4REjmwGRCyIAIKK1gh2Bv0WTAxATMyNjU0JiMiBhUjNDYzMhYVFAYHFhUUBiMiJjUzFBYzMjY1NCcjAQlUSkg/RjlLnaN8iZxGQpWqiISmnk9DRkmcWARlPTAtOjMpYnt5aDdbGSmPan1+ay08PDNxAgAAAQB7BNgCHAX+AAMAIwCwAi+yDwIBXbAA0LAAL7QPAB8AAl2wAhCwA9AZsAMvGDAxATMBIwE84P70lQX+/toAAAEAmv5gA+4EOgASAFCyDRMUERI5ALAARViwAC8bsQAYPlmwAEVYsAcvG7EHGD5ZsABFWLAQLxuxEBI+WbAARViwDS8bsQ0QPlmyBAEKK1gh2Bv0WbILBw0REjkwMQERFhYzMjcRMxEjJwYjIicRIxEBUwFndMc+uqcJXaqTUbkEOv2Ho5yYAyD7xnOHSf4rBdoAAQBDAAADQAWwAAoAK7ICCwwREjkAsABFWLAILxuxCBw+WbAARViwAC8bsQAQPlmyAQAIERI5MDEhESMiJDU0JDMhEQKGVOb+9wEK5gENAgj+1tX/+lAAAAEAkwJrAXkDSQAJABayAwoLERI5ALACL7EICitY2BvcWTAxEzQ2MhYVFAYiJpM5cjs7cjkC2TBAQDAvPz8AAQB0/k0BqgAAAA4AQbIFDxAREjkAsABFWLAALxuxABA+WbAARViwBi8bsQYSPlm0EwYjBgJdsgEGABESObEHCitY2BvcWbABELAN0DAxIQcWFRQGIycyNjU0Jic3AR0MmaCPB09XQGIgNBuSYXFrNC8sKgmGAAEAegKiAe8FtwAGAECyAQcIERI5ALAARViwBS8bsQUcPlmwAEVYsAAvG7EAFD5ZsgQABRESObAEL7IDAgorWCHYG/RZsgIDBRESOTAxASMRBzUlMwHvndgBYxICogJZOYB1AAACAHoCsgMnBcQADAAaAECyAxscERI5sAMQsBDQALAARViwAy8bsQMcPlmyChsDERI5sAovshADCitYIdgb9FmwAxCyFwMKK1gh2Bv0WTAxEzQ2MzIWFRUUBiAmNRcUFjMyNjU1NCYjIgYHeryam7y7/sy+o2FUU19hU1FgAgRjnsPBpkqfwsKlBmRyc2VOY3JuYQD//wBmAJgDeAO1ACYBew0AAAcBewFqAAD//wBVAAAFkQWtACcB1f/bApgAJwF8ARgACAEHAdgC1gAAABAAsABFWLAFLxuxBRw+WTAx//8AUAAABckFrQAnAXwA7AAIACcB1f/WApgBBwHWAx4AAAAQALAARViwCS8bsQkcPlkwMf//AG8AAAXtBbsAJwF8AZcACAAnAdgDMgAAAQcB1wAxApsAEACwAEVYsCEvG7EhHD5ZMDEAAgBE/n8DeARNABgAIgBXsgkjJBESObAJELAc0ACwEC+wAEVYsCEvG7EhGD5ZsgAQIRESObIDEAAREjmwEBCyCQEKK1gh2Bv0WbAQELAM0LIVABAREjmwIRCyGwUKK1gh2Bv0WTAxAQ4DBwcUFjMyNjUzBgYjIiY1NDc3NjUTFAYiJjU0NjIWAkwBKWC4CwJ0bWR9uQLht8TWoG1CwTdsODhsNwKoan92wWMlbXNxW6HMybOtr3FOkgE9LT4+LSw8PAAC//IAAAdXBbAADwASAHcAsABFWLAGLxuxBhw+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZshEGABESObARL7ICAQorWCHYG/RZsAYQsggBCitYIdgb9FmyCwAGERI5sAsvsgwBCitYIdgb9FmwABCyDgEKK1gh2Bv0WbISBgAREjkwMSEhAyEDIwEhFSETIRUhEyEBIQMHV/yND/3MzeIDcAO3/U0UAk79uBYCwfqvAcgfAWH+nwWwmP4pl/3tAXgC3QABAFkAzgPdBGMACwA4ALADL7IJDAMREjmwCS+yCgkDERI5sgQDCRESObIBCgQREjmwAxCwBdCyBwQKERI5sAkQsAvQMDETAQE3AQEXAQEHAQFZAUr+uHcBSQFJd/64AUp3/rX+tQFJAVABT3v+sQFPe/6x/rB7AVH+rwAAAwB2/6MFHQXsABcAIAApAGayBCorERI5sAQQsB3QsAQQsCbQALAARViwEC8bsRAcPlmwAEVYsAQvG7EEED5ZshoQBBESObIjEAQREjmwIxCwG9CwEBCyHQEKK1gh2Bv0WbAaELAk0LAEELImAQorWCHYG/RZMDEBFAIEIyInByM3JhE1NBIkMzIXNzMHFhMFFBcBJiMiAgcFNCcBFjMyEjcFCZD++LCrg2GOkL6SAQus1pRnjZ+JAvwsYgI0Zqa20QMDFTj921t5uswDAqnW/sGoUpvnwAFoU9IBQqt9pf+7/tpj9I0DiG/+6/YNtoP8j0ABD/0AAgCmAAAEXQWwAA0AFgBXsgkXGBESObAJELAQ0ACwAEVYsAAvG7EAHD5ZsABFWLALLxuxCxA+WbIBAAsREjmwAS+yEAALERI5sBAvsgkBCitYIdgb9FmwARCyDgEKK1gh2Bv0WTAxAREhMhYWFRQEIyERIxETESEyNjU0JicBYAEXk9x3/vjj/u66ugEVjqCgiAWw/ttpwn7C5/7HBbD+Q/3el3h7lwEAAQCL/+wEagYSACoAabIhKywREjkAsABFWLAFLxuxBR4+WbAARViwEy8bsRMQPlmwAEVYsAAvG7EAED5ZsgoTBRESObIOBRMREjmwExCyGgEKK1gh2Bv0WbIgEwUREjmyIwUTERI5sAUQsigBCitYIdgb9FkwMSEjETQ2MzIWFRQGFRQeAhUUBiMiJic3FhYzMjY1NC4CNTQ2NTQmIyIRAUS5z7q0xYBLvFbLtlG1JisxhzVrcUq9V4toWNoEV9Drs599y0UzX5CITJ+yLBybICxeUjRgk4pRWc9UXmv+2wADAE7/7AZ8BE4AKgA1AD0AxrICPj8REjmwAhCwLtCwAhCwOdAAsABFWLAXLxuxFxg+WbAARViwHS8bsR0YPlmwAEVYsAAvG7EAED5ZsABFWLAFLxuxBRA+WbICHQAREjmyDAUXERI5sAwvtL8MzwwCXbAXELIQAQorWCHYG/RZshMMFxESObIaHQAREjmyOh0AERI5sDovtL86zzoCXbIhAQorWCHYG/RZsAAQsiUBCitYIdgb9FmyKB0AERI5sCvQsAwQsi8BCitYIdgb9FmwEBCwNtAwMQUgJwYGIyImNTQ2MzM1NCYjIgYVJzQ2MzIWFzY2MzISFRUhFhYzMjc3FwYlMjY3NSMGBhUUFgEiBgchNTQmBO7++4hB4o2nvOPd325oaYy48rtzsDI/rmnS6P0oB66VlHkvQJ78CUieMuR1jGoDUHOVEQIahhS0Vl6tl52uVWt7blETj7VTU09X/v/pc7C/TB+IeZZKNu0CblNNXQM0q4sfhJMAAAIAfv/sBC0GLAAdACsAVLIHLC0REjmwBxCwKNAAsABFWLAZLxuxGR4+WbAARViwBy8bsQcQPlmyDxkHERI5sA8vshEZBxESObIiAQorWCHYG/RZsAcQsigBCitYIdgb9FkwMQESERUUBgYjIiYmNTQ2NjMyFyYnByc3Jic3Fhc3FwMnJiYjIgYVFBYzMjY1AzT5ddiGh9x5cM+Bo3kwjdpJwIS3Oe+vvUloAiGLXJGip4B9mQUV/vj+Z12e/ZCB4IaT6YJyw42UY4NbMZ82i4Fk/PM4PUm/p4zE4rgAAAMARwCsBC0EugADAA0AFwBOsgcYGRESObAHELAA0LAHELAR0ACwAi+yAQEKK1gh2Bv0WbACELEMCitY2BvcWbEGCitY2BvcWbABELEQCitY2BvcWbEWCitY2BvcWTAxASE1IQE0NjIWFRQGIiYRNDYyFhUUBiImBC38GgPm/aA5cjs7cjk5cjs7cjkCWLgBOjBAQDAvPj78/jBAQDAuPz8AAAMAW/96BDQEuAAVAB0AJgBjsgQnKBESObAEELAb0LAEELAj0ACwAEVYsAQvG7EEGD5ZsABFWLAPLxuxDxA+WbIjAQorWCHYG/RZsiEjBBESObAhELAY0LAEELIbAQorWCHYG/RZshkbDxESObAZELAg0DAxEzQ2NjMyFzczBxYRFAYGIyInByM3JhMUFwEmIyIGBTQnARYzMjY1W3vhj25eSXxmw3zgkGhWSnxkzblhAVc+SIqoAmZX/qw3QounAief/YsqlM2a/sCe/okjlcuVATfCbwK2INq1tm/9UBnbuQACAJX+YAQnBgAADwAaAGSyGBscERI5sBgQsAzQALAIL7AARViwDC8bsQwYPlmwAEVYsAYvG7EGEj5ZsABFWLADLxuxAxA+WbIFDAMREjmyCgwDERI5sAwQshMBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxARQCIyInESMRMxE2MzISESc0JiMiBxEWMzI2BCfiwcVxublxwsPjuZyIqFRTq4WdAhH3/tJ9/fcHoP3KhP7a/voEt9SV/fuU0wAAAgAdAAAFiAWwABMAFwBrALAARViwDy8bsQ8cPlmwAEVYsAgvG7EIED5ZshQIDxESObAUL7IQFA8REjmwEC+wANCwEBCyFwEKK1gh2Bv0WbAD0LAIELAF0LAUELIHAQorWCHYG/RZsBcQsArQsBAQsA3QsA8QsBLQMDEBMxUjESMRIREjESM1MxEzESERMwEhNSEFAoaGwf0jwYaGwQLdwfxiAt39IwSOjvwAAqH9XwQAjgEi/t4BIv2OwgABAJsAAAFVBDoAAwAdALAARViwAi8bsQIYPlmwAEVYsAAvG7EAED5ZMDEhIxEzAVW6ugQ6AAABAJoAAAQ/BDoADABoALAARViwBC8bsQQYPlmwAEVYsAgvG7EIGD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmwAhCwBtCwBi+ynwYBXbS/Bs8GAl2yLwYBXbL/BgFdsgEBCitYIdgb9FmyCgEGERI5MDEBIxEjETMRMwEzAQEjAb9rurpbAY3f/jwB6OkBzf4zBDr+NgHK/fP90wAAAQAiAAAEGwWwAA0AWwCwAEVYsAwvG7EMHD5ZsABFWLAGLxuxBhA+WbIBDAYREjmwAS+wANCwARCyAgEKK1gh2Bv0WbAD0LAGELIEAQorWCHYG/RZsAMQsAjQsAnQsAAQsAvQsArQMDEBJRUFESEVIREHNTcRMwFpAQf++QKy/I2GhsEDS1R9VP3PnQKRKn0qAqIAAAEAIgAAAgoGAAALAEoAsABFWLAKLxuxCh4+WbAARViwBC8bsQQQPlmyAQQKERI5sAEvsADQsAEQsgIBCitYIdgb9FmwA9CwBtCwB9CwABCwCdCwCNAwMQE3FQcRIxEHNTcRMwFsnp66kJC6A2U9ez39FgKjN3s3AuIAAQCi/ksE8QWwABMAWrIGFBUREjkAsABFWLAALxuxABw+WbAARViwEC8bsRAcPlmwAEVYsAQvG7EEEj5ZsABFWLAOLxuxDhA+WbAEELIJAQorWCHYG/RZsg0OEBESObISDgAREjkwMQERFAYjIic3FjMyNTUBESMRMwERBPGrnD02DiU9iP0zwMACzQWw+f2ouhKaDtBHBGr7lgWw+5gEaAAAAQCR/ksD8AROABoAYbINGxwREjkAsABFWLADLxuxAxg+WbAARViwAC8bsQAYPlmwAEVYsAovG7EKEj5ZsABFWLAYLxuxGBA+WbIBGAMREjmwChCyDwEKK1gh2Bv0WbADELIVAQorWCHYG/RZMDEBFzYzMhYXERQGIyInNxYzMjURNCYjIgcRIxEBNw10y7O4AqebPTYOI0KJb32vUboEOpqu0Mv89KS4Ep0NwgL3i4CF/NQEOgACAGj/6wcJBcQAFwAjAJGyASQlERI5sAEQsBrQALAARViwDC8bsQwcPlmwAEVYsA4vG7EOHD5ZsABFWLAALxuxABA+WbAARViwAy8bsQMQPlmwDhCyEAEKK1gh2Bv0WbITAA4REjmwEy+yFAEKK1gh2Bv0WbAAELIWAQorWCHYG/RZsAMQshgBCitYIdgb9FmwDBCyHQEKK1gh2Bv0WTAxISEGIyImAicRNBI2MzIXIRUhESEVIREhBTI3ESYjIgYHERQWBwn8sLJyov6MAYv+onyqA0b9LQJ3/YkC3fuMcWZtbK3CAsMVlgEPqwE1rAERlxSe/iyd/fwbDgSOD+XP/sfT6wAAAwBh/+wHAAROACAALAA0AJayBjU2ERI5sAYQsCbQsAYQsDDQALAARViwBC8bsQQYPlmwAEVYsAovG7EKGD5ZsABFWLAXLxuxFxA+WbAARViwHS8bsR0QPlmyBwoXERI5sjEKFxESObAxL7IOAQorWCHYG/RZsBcQshIBCitYIdgb9FmyFAoXERI5shoKFxESObAk0LAEELIqAQorWCHYG/RZsC3QMDETNDY2MzIWFzY2MzIWFRUhFhYzMjcXBiMiJicGBiMiADUXFBYzMjY1NCYjIgYlIgYHITU0JmF5246JyT1BxHDP6v0yB6SGvHhKifWHzT8+x4bc/vi5oIuJoKGKh6IELWOWFgIOiQInoP6JdWRmc/7rdKrFbH6EcGRjcQEw/gm32NfOttnW1qOKGn2WAAABAKAAAAKCBhUADAAysgMNDhESOQCwAEVYsAQvG7EEHj5ZsABFWLAALxuxABA+WbAEELIJAQorWCHYG/RZMDEzETY2MzIXByYjIhURoAGwojtUFygztwSuqb4Vjgvd+2AAAAIAXf/sBRIFxAAXAB8AW7IAICEREjmwGNAAsABFWLAQLxuxEBw+WbAARViwAC8bsQAQPlmyBRAAERI5sAUvsBAQsgkBCitYIdgb9FmwABCyGAEKK1gh2Bv0WbAFELIbAQorWCHYG/RZMDEFIAARNSE1EAIjIgcHJzc2MyAAERUUAgQnMhI3IRUUFgK5/uP+wQP09N2liz0vFp7oAS4BZJz+6qep3g/8z9MUAVkBRXUHAQIBHDoajw1Y/of+sVTF/r+2ngEF2yLa5AAB/+T+SwK8BhUAHgBxshQfIBESOQCwAEVYsBUvG7EVHj5ZsABFWLAQLxuxEBg+WbAARViwHS8bsR0YPlmwAEVYsAUvG7EFEj5ZsB0QsgABCitYIdgb9FmwBRCyCgEKK1gh2Bv0WbAAELAO0LAP0LAVELIaAQorWCHYG/RZMDEBIxEUBiMiJzcWMzI2NREjNTM1NjYzMhcHJiMiBxUzAmDLqJo9Mg4eQ0FHq6sCr6E7VBYmPKsEywOr+/6ntxKTDWhcBASPeKe8FZMKw3oAAAIAZf/sBZ0GNwAXACUAU7IEJicREjmwBBCwItAAsABFWLANLxuxDRw+WbAARViwBC8bsQQQPlmyDw0EERI5sA8QsBXQsA0QshsBCitYIdgb9FmwBBCyIgEKK1gh2Bv0WTAxARQCBCMiJAInNTQSJDMyFzY2NTMQBRYXBxACIyICBxUUEjMyEhEE+JD++LCr/vaVAZIBC6zwm2Bdp/75YQG+z7220QPTub/LAqnW/sGoqAE+z2TSAUGsmweDhP6zPaz2BAECARb+6/Zr+/7hARoBAQAAAgBb/+wEugSwABYAIwBTshMkJRESObATELAa0ACwAEVYsAQvG7EEGD5ZsABFWLATLxuxExA+WbIGBBMREjmwBhCwDNCwExCyGgEKK1gh2Bv0WbAEELIhAQorWCHYG/RZMDETNDY2MzIXNjY1MxAHFhUVFAYGIyIANRcUFjMyNjU1NCYjIgZbe+GPz4hHQJbPSXzgkN7+8bmnjYunqYuKqAInn/2LighkgP7dM4qpFp7+iQEz+wm02tu5ELXa2gAAAQCM/+wGHQYCABoATLIMGxwREjkAsABFWLASLxuxEhw+WbAARViwGi8bsRocPlmwAEVYsA0vG7ENED5ZsgENGhESObABELAI0LANELIWAQorWCHYG/RZMDEBFTY2NTMUBgcRBgIHByIAJxEzERQWMzI2NREEqnNhn7HCAfTTSe/+5AK+rqGjrQWw1QuJk9LRDP1+x/78FgQBAuID4Pwmnq+ungPbAAEAiP/sBQ8EkAAZAGCyBxobERI5ALAARViwEy8bsRMYPlmwAEVYsA0vG7ENGD5ZsABFWLAILxuxCBA+WbAARViwBS8bsQUQPlmyFQgTERI5sBUQsAPQsgYIExESObAIELIQAQorWCHYG/RZMDEBFAYHESMnBiMiJicRMxEUMzI3ETMVPgI1BQ+ToLAEbNGttQG5yNRGuUREHQSQtJME/Ltrf8nFAsD9RfaeAxODAiNIbAAB/7T+SwFlBDoADQAoALAARViwAC8bsQAYPlmwAEVYsAQvG7EEEj5ZsgkBCitYIdgb9FkwMQERFAYjIic3FjMyNjURAWWqmDs0Dh5DQUgEOvttqrISkw1oXASTAAIAYv/sA+kETwAUABwAZbIIHR4REjmwCBCwFdAAsABFWLAALxuxABg+WbAARViwCC8bsQgQPlmyDQAIERI5sA0vsAAQshABCitYIdgb9FmyEgAIERI5sAgQshUBCitYIdgb9FmwDRCyGAEKK1gh2Bv0WTAxATIAFRUUBgYnIiY1NSEmJiMiByc2ATI2NyEVFBYB/9wBDnzYetDpAs0HoYi6e0mMAQ5ilxX984kET/7U+SSV+I0B/ul0qMhsfYb8NaSJGn2WAAEAqQTkAwYGAAAIADQAsAQvsAfQsAcvtA8HHwcCXbIFBAcREjkZsAUvGLAB0BmwAS8YsAQQsALQsgMEBxESOTAxARUjJwcjNRMzAwaZlpWZ9nAE7gqqqgwBEAAAAQCMBOMC9gX/AAgAIACwBC+wAdCwAS+0DwEfAQJdsgAEARESObAI0LAILzAxATczFQMjAzUzAcCWoP5x+50FVaoK/u4BEgr//wB4BSEDQgWwAQYAcAAAAAoAsAEvsQID9DAxAAEAgQTLAtgF1wAMACayCQ0OERI5ALADL7IPAwFdsgkECitYIdgb9FmwBtCwBi+wDNAwMQEUBiAmNTMUFjMyNjUC2KX+9KaXTElGTwXXeZOUeEZPTkcAAQCNBO4BaAXCAAgAGLICCQoREjkAsAcvsgIFCitYIdgb9FkwMRM0NjIWFAYiJo03bDg4bDcFVy0+Plo8PAACAHkEtAInBlAACQAUACqyAxUWERI5sAMQsA3QALADL7AH0LAHL7I/BwFdsAMQsA3QsAcQsBLQMDEBFAYjIiY0NjIWBRQWMzI2NCYjIgYCJ3xbXHt7uHv+tUMxMERDMTJCBYBXdXasenpWL0RCYkVGAAABADL+TwGSADgAEAAusgUREhESOQCwEC+wAEVYsAovG7EKEj5ZsgUDCitYIdgb9Fm2DxAfEC8QA10wMSEHBhUUMzI3FwYjIiY1NDY3AX46cU4wNA1GWllnhnstW1ZIGnksaFZZmjgAAAEAewTZAz4F6AAXAD4AsAMvsAjQsAgvtA8IHwgCXbADELAL0LALL7AIELIPAworWCHYG/RZsAMQshQDCitYIdgb9FmwDxCwF9AwMQEUBiMiLgIjIgYVJzQ2MzIeAjMyNjUDPntcKTxhKxwpOnx5XSM4YDMfKzkF3GyGFD4NPzEHa4wUOhJELQACAF4E0AMsBf8AAwAHADsAsAIvsADQsAAvtA8AHwACXbACELAD0BmwAy8YsAAQsAXQsAUvsAIQsAbQsAYvsAMQsAfQGbAHLxgwMQEzASMDMwMjAl3P/vOpbcXalgX//tEBL/7RAAACAH7+awHV/7UACwAWADQAsAMvQAsAAxADIAMwA0ADBV2wCdCwCS9ACTAJQAlQCWAJBF2yAAkBXbAO0LADELAU0DAxFzQ2MzIWFRQGIyImNxQWMjY1NCYjIgZ+ZEpHYmBJTGJXNEYwMCMlMvJGYWBHRl1eRSMwMCMkMjQAAfynBNj+SAX+AAMAHgCwAS+wANAZsAAvGLABELAC0LACL7QPAh8CAl0wMQEjATP+SJ/+/uAE2AEmAAH9bwTY/xAF/gADAB4AsAIvsAHQsAEvtA8BHwECXbACELAD0BmwAy8YMDEBMwEj/jDg/vSVBf7+2v///IsE2f9OBegABwCk/BAAAAAB/V4E2f6UBnQADgAuALAAL7IPAAFdsAfQsAcvQAkPBx8HLwc/BwRdsAbQsgEABhESObINAAcREjkwMQEnNjY0JiM3MhYVFAYHB/10AUtGW0sHlZpOTQEE2ZkFHk4namdVPVALRwAC/CcE5P8HBe4AAwAHADcAsAEvsADQGbAALxiwARCwBdCwBS+wBtCwBi+2DwYfBi8GA12wA9CwAy+wABCwBNAZsAQvGDAxASMBMwEjAzP+Aqn+zuEB/5b2zgTkAQr+9gEKAAH9OP6i/hP/dgAIABEAsAIvsgcFCitYIdgb9FkwMQU0NjIWFAYiJv04N2w4OGw39S0+Plo8PAAAAQC3BO4BmwY/AAMAHQCwAi+wANCwAC+yDwABXbIDAgAREjkZsAMvGDAxEzMDI+2udHAGP/6vAAADAHEE8AODBogAAwAMABUANwCwCy+wAtCwAi+wAdCwAS+wAhCwA9AZsAMvGLALELIGBQorWCHYG/RZsA/QsAsQsBTQsBQvMDEBMwMjBTQ2MhYUBiImJTQ2MhYUBiImAeG8ZYf+wDdsODhsNwI3N2w4OGw3Boj++CUtPT1aPDwrLT4+Wjw8//8AkwJrAXkDSQEGAHgAAAAGALACLzAxAAEAsQAABDAFsAAFACsAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmwBBCyAAEKK1gh2Bv0WTAxASERIxEhBDD9QsEDfwUS+u4FsAACAB8AAAVzBbAAAwAGAC8AsABFWLAALxuxABw+WbAARViwAi8bsQIQPlmyBAEKK1gh2Bv0WbIGAgAREjkwMQEzASElIQEChqoCQ/qsAQYDTP5nBbD6UJ0EKAADAGf/7AT6BcQAAwAVACMAd7IIJCUREjmwCBCwAdCwCBCwINAAsABFWLARLxuxERw+WbAARViwCC8bsQgQPlmyAggRERI5sAIvss8CAV2y/wIBXbIvAgFdtL8CzwICcbIBAQorWCHYG/RZsBEQshkBCitYIdgb9FmwCBCyIAEKK1gh2Bv0WTAxASE1IQUUAgQjIiQCJzU0EiQzMgQSFwcQAiMiAgcVFBIzMhI3A8D9+wIFATqP/vixrP72kwKSAQusrwEIkQK/0Lu20QPRu7rMAwKTmILV/sKqqQE5zmnSAUKrqP7FzwsBAwEV/uv2a/r+4AEP/QABADIAAAUDBbAABgAxALAARViwAy8bsQMcPlmwAEVYsAEvG7EBED5ZsABFWLAFLxuxBRA+WbIAAwEREjkwMQEBIwEzASMCmv5mzgISrAITzwSJ+3cFsPpQAAADAHgAAAQhBbAAAwAHAAsATwCwAEVYsAgvG7EIHD5ZsABFWLACLxuxAhA+WbIAAQorWCHYG/RZsAIQsAXQsAUvsi8FAV2yBgEKK1gh2Bv0WbAIELIKAQorWCHYG/RZMDE3IRUhEyEVIQMhFSF4A6n8V1cC8v0OUwOU/GydnQM/nQMOngABALIAAAUBBbAABwA4ALAARViwBi8bsQYcPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbAGELICAQorWCHYG/RZMDEhIxEhESMRIQUBwf0ywARPBRL67gWwAAEARQAABEQFsAAMADwAsABFWLAILxuxCBw+WbAARViwAy8bsQMQPlmyAQEKK1gh2Bv0WbAF0LAIELIKAQorWCHYG/RZsAfQMDEBASEVITUBATUhFSEBAvL+QwMP/AEB4f4fA879JAG7As79z52PAkoCR5Ce/dQAAAMATQAABXQFsAAUABsAIwBssgokJRESObAKELAV0LAKELAc0ACwAEVYsBMvG7ETHD5ZsABFWLAJLxuxCRA+WbISEwkREjmwEi+wANCyCAkTERI5sAgvsAvQsAgQsh0BCitYIdgb9FmwFdCwEhCyFgEKK1gh2Bv0WbAc0DAxATIEFhUUBgQjFSM1IiQmEDY2MzUzAxEjIgYQFgERMzI2NTQmA0KgAQOPkv8AoMKi/v6Pkf+jwsIFrMPCAXQErMPDBPeM/Jud/Yuvr436ATj9jLn7ngMK0v6Y0AMK/PbRtbPRAAABAFoAAAUhBbAAGABcsgAZGhESOQCwAEVYsAQvG7EEHD5ZsABFWLARLxuxERw+WbAARViwFy8bsRccPlmwAEVYsAsvG7ELED5ZshYECxESObAWL7AA0LAWELINAQorWCHYG/RZsArQMDEBNjY1ETMRFAYGBxEjESYAJxEzERYWFxEzAxacrsF/7Z/B5/7vA8ABpZXBAgsX16oCDf3wn/WTD/6WAWoXASrtAhj976PXGQOkAAABAHEAAATLBcQAJABcshklJhESOQCwAEVYsBkvG7EZHD5ZsABFWLAOLxuxDhA+WbAARViwIy8bsSMQPlmwDhCyEAEKK1gh2Bv0WbAN0LAA0LAZELIGAQorWCHYG/RZsBAQsCHQsCLQMDElNhI3NTQmIAYVFRQSFxUhNTMmAjU1NBI2MzIWEhcVFAIHMxUhAuGKmgPC/q7AnZH+FN1qeI3+oaD9jgN4atz+HKIbARzqhuf2+uVx8P7YHKKdZgEzom+6ASSfnP7ktIKg/s1mnQAAAgBk/+sEdwROABYAIQB8sh8iIxESObAfELAT0ACwAEVYsBMvG7ETGD5ZsABFWLAWLxuxFhg+WbAARViwCC8bsQgQPlmwAEVYsAwvG7EMED5ZsAgQsgMBCitYIdgb9FmyChMIERI5shUTCBESObAMELIaAQorWCHYG/RZsBMQsh8BCitYIdgb9FkwMQERFjMyNxcGIyInBiMiAjU1EBIzMhc3ARQWMzI3ESYjIgYD7gJOEw8XMEqTJmvRwOTixMtrEf3MkoetUlWohpUEOvzjjAWJIqWlARv0DwEIAT2hjf26r8O6Ab684wAAAgCg/oAETQXEABQAKgBpsgArLBESObAY0ACwDy+wAEVYsAAvG7EAHD5ZsABFWLAMLxuxDBA+WbIoAAwREjmwKC+yJQEKK1gh2Bv0WbIGJSgREjmyDgwAERI5sAAQshgBCitYIdgb9FmwDBCyHwEKK1gh2Bv0WTAxATIWFRQGBxYWFRQGIyInESMRNDY2ATQmIyIGBxEWFjMyNjU0JicjNTMyNgJdwetiWHuD+c21eLp6zwFniGtslgEskF6GmoxtllV4fgXE265bmC4tw4LN71/+NQWxbLxr/ntmh45r/MM0P6CBdqUDmHcAAQAu/mAD3wQ6AAgAOLIACQoREjkAsABFWLABLxuxARg+WbAARViwBy8bsQcYPlmwAEVYsAQvG7EEEj5ZsgAHBBESOTAxAQEzAREjEQEzAgoBGL3+hbr+hL0BFAMm+//+JwHgA/oAAgBg/+wEJwYcAB4AKgBeshQrLBESObAUELAi0ACwAEVYsAMvG7EDHj5ZsABFWLAULxuxFBA+WbADELIIAQorWCHYG/RZshsUAxESObAbL7IoCworWCHYG/RZsAzQsBQQsiIBCitYIdgb9FkwMRM0NjMyFwcmIyIGFRQEEhcVFAYGIyIANTU0EjcnJiYTFBYzMjY1NCYnIgbdy6+LhgKXfFZlAbvPBXbbkd7++byQAWNrPqGJiKCpfYikBPWInzegO0g+bJn+88QnmfOFASfyDaUBCCMFJ4z9Y7DLysaI2xnNAAEAY//sA+wETQAlAG+yAyYnERI5ALAARViwFS8bsRUYPlmwAEVYsAovG7EKED5ZsgMBCitYIdgb9FmwChCwBtCwChCwItCwIi+yLyIBXbK/IgFdsiMBCitYIdgb9FmyDyMiERI5shkVIhESObAVELIcAQorWCHYG/RZMDEBFBYzMjY1MxQGIyImNTQ3JiY1NDYzMhYVIzQmIyIGFRQzMxUjBgEek3Zxm7n/xsz4zVhi58q6+bmPa3CH9MTg6gEwTWJuUZu5sZO6QiR6SZSms45GZVtKoJQGAAEAbf6BA8MFsAAfAEuyCCAhERI5ALAPL7AARViwAC8bsQAcPlmyHQEKK1gh2Bv0WbAB0LIVIAAREjmyAhUAERI5sBUQsgcBCitYIdgb9FmyHAAVERI5MDEBFQEGBhUUFhcXFhYVBgYHJzY2NTQkJyYmNTQSNwEhNQPD/qKKZkNS91FHAmxDYi8z/sw2Z1uSfwEd/YMFsHj+VaHlhVphGUgYWE5FrDZUNVUtRE4YLZmBggFAlgFDmAABAJH+YQPwBE4AEgBTsgwTFBESOQCwAEVYsAMvG7EDGD5ZsABFWLAALxuxABg+WbAARViwBy8bsQcSPlmwAEVYsBAvG7EQED5ZsgEQAxESObADELIMAQorWCHYG/RZMDEBFzYzMhYXESMRNCYjIgYHESMRATgLeMi+rgG5bIBcgiK6BDqInMXM+6QEUYh8V0787wQ6AAADAHr/7AQSBcQADQAWAB4AkrIDHyAREjmwAxCwE9CwAxCwG9AAsABFWLAKLxuxChw+WbAARViwAy8bsQMQPlmyDgMKERI5sA4vsl8OAV2y/w4BXbSPDp8OAnG0vw7PDgJxsi8OAXGyzw4BXbIvDgFdtO8O/w4CcbAKELITAQorWCHYG/RZsA4QshgBCitYIdgb9FmwAxCyGwEKK1gh2Bv0WTAxARACIyICAzUQEjMyEhMFITU0JiMiBhUFIRUUFiA2NwQS7N/b7gTs397rBP0hAiWLiIaMAiX925IBBI0CAoD+v/6tAUwBNM0BPQFO/rz+zSw34/Hx488n5frw4wAAAQDD//QCSwQ6AAwAKACwAEVYsAAvG7EAGD5ZsABFWLAJLxuxCRA+WbIEAQorWCHYG/RZMDEBERQWMzI3FwYjIhERAXw3QDAnAUZJ+QQ6/Nc/QAyXEwEmAyAAAQAl/+8EOwXuABoAULIQGxwREjkAsAAvsABFWLALLxuxCxA+WbAARViwES8bsREQPlmwCxCyBwEKK1gh2Bv0WbIQAAsREjmwEBCwE9CwABCyFwEKK1gh2Bv0WTAxATIWFwEWFjM3FwYjIiYmJwMBIwEnJiYjByc2AQVieCEBqxQtIyYGJCpNTj4d5v7izgGKYBc1LS8BKgXuUF/7qzMnA5gMJVZQAlH89QQF6zguAo4MAAEAZf53A6kFxAAtAFayAy4vERI5ALAXL7AARViwKy8bsSscPlmyAgEKK1gh2Bv0WbIILisREjmwCC+yCQEKK1gh2Bv0WbIeLisREjmwHhCyDwEKK1gh2Bv0WbIlCQgREjkwMQEmIyIGFRQhMxUjBgYVFBYEFhcWFRQGByc3NjU0LgQ1NDY3JiY1NCQzMhcDcoRhjaABTYWWtseQAQ98IE9oSGs5MUzmqXdBpJZ2gwEC5JFwBQgkZ1XbmAKco3CdQSUUMWlApz1UQDw+Jy4zQmmZb5HLLiqYYJ+5JwABACn/9ASkBDoAFABcsgsVFhESOQCwAEVYsBMvG7ETGD5ZsABFWLAKLxuxChA+WbAARViwDy8bsQ8QPlmwExCyAAEKK1gh2Bv0WbAKELIFAQorWCHYG/RZsAAQsA3QsA7QsBHQsBLQMDEBIxEUFjMyNxcGIyIRESERIxEjNSEEcZw2QTAnAUZJ+f5vuakESAOh/XJAQQyXEwEmAof8XwOhmQACAJH+YAQfBE4ADwAbAFeyEhwdERI5sBIQsADQALAARViwAC8bsQAYPlmwAEVYsAovG7EKEj5ZsABFWLAHLxuxBxA+WbIJAAcREjmyEgEKK1gh2Bv0WbAAELIYAQorWCHYG/RZMDEBMhIXFxQCIyInESMRNDY2AxYzMjY1NCYjIgYVAlDP9AsB4L/DcrpxzYRTq4eWkYV1kARO/ub+QvD+6Hz9+APknuyA/MiTw8PN4NipAAABAGX+igPhBE4AIgBJsgAjJBESOQCwFC+wAEVYsAAvG7EAGD5ZsABFWLAbLxuxGxA+WbAAELAE0LAAELIHAQorWCHYG/RZsBsQsg0BCitYIdgb9FkwMQEyFhUjNCYjIgYVFRAFFxYWFQYGByc3NjU0JicmAjU1NDY2Aj2956+Gb4SbAUCGYlACY0piLzFGVuz4d9cETtW0boPbsyD+/GMmHWBQP6c+VTY8RisrEzQBAdMqmPuJAAIAYP/sBHsEOgARAB0ATLIIHh8REjmwCBCwFdAAsABFWLAQLxuxEBg+WbAARViwCC8bsQgQPlmwEBCyAAEKK1gh2Bv0WbAIELIVAQorWCHYG/RZsAAQsBvQMDEBIRYRFRQGBiMiADU1NDY2NyEBFBYzMjY1NCYjIgYEe/7kyHrdjNr+9nbZjAJA/J+gioufoYuJnwOhlP7vEYzriAEv/w2Y8ogB/de319nLrM7MAAEAUf/sA9kEOgAQAEmyChESERI5ALAARViwDy8bsQ8YPlmwAEVYsAkvG7EJED5ZsA8QsgABCitYIdgb9FmwCRCyBAEKK1gh2Bv0WbAAELAN0LAO0DAxASERFDMyNxcGIyImJxEhNSED2f6NaSsxKkxqfXUB/qUDiAOk/WmFGoI0k5ICk5YAAQCP/+wD9gQ6ABIAPLIOExQREjkAsABFWLAALxuxABg+WbAARViwCC8bsQgYPlmwAEVYsA4vG7EOED5ZsgMBCitYIdgb9FkwMQEREDMyNjUmAzMWERAAIyImJxEBScmBqgV2w3H+/9rCyAIEOv15/s/6tucBIfH+6f75/sHg1wKXAAIAV/4iBUwEOgAZACIAXLIPIyQREjmwDxCwGtAAsBgvsABFWLAGLxuxBhg+WbAARViwEC8bsRAYPlmwAEVYsBcvG7EXED5ZsADQsBcQshoBCitYIdgb9FmwDNCwEBCyIAEKK1gh2Bv0WTAxBSQANTQSNxcGBxQWFxE0NjMyFhYVFAAFESMTNjY1JiYjIhUCbP8A/uuBf2WhCrWminGC4YL+3v77ubmqxAWlgkIRFwEz+6gBB1eFjPWt5RoCzGl9jfiV8/7XFf4zAmYW3qSp2FIAAAEAX/4oBUMEOgAZAFiyABobERI5ALANL7AARViwAC8bsQAYPlmwAEVYsAYvG7EGGD5ZsABFWLATLxuxExg+WbAARViwDC8bsQwQPlmyAQEKK1gh2Bv0WbAMELAP0LABELAY0DAxARE2NjUmAzMWERAABREjESYAEREzERYWFxEDHKvDBXrCdv7j/va5//77ugKmogQ6/E4Y5bLoARvs/un+/f7QFf45AckaATYBEwHm/g7C5BkDsQABAHr/7AYZBDoAIwBashskJRESOQCwAEVYsAAvG7EAGD5ZsABFWLATLxuxExg+WbAARViwGS8bsRkQPlmwAEVYsB4vG7EeED5ZsgUBCitYIdgb9FmyCQAeERI5sA7QshsTGRESOTAxAQIHFBYzMjY1ETMRFhYzMjY1JgMzFhEQAiMiJwYGIyICERA3AcSKB3JqbHG7AXFranIHisOHz7zwVSmkd7zPhwQ6/uXvy+OtpgEt/s6kquLM7wEb9P7q/u3+z+51eQExARMBH+sAAAIAef/sBHkFxgAfACgAbrIUKSoREjmwFBCwJtAAsABFWLAZLxuxGRw+WbAARViwBi8bsQYQPlmyHRkGERI5sB0vsgIBCitYIdgb9FmyCxkGERI5sAYQsg8BCitYIdgb9FmwAhCwE9CwHRCwI9CwGRCyJgEKK1gh2Bv0WTAxAQYHFQYGIyImNRE3ERQWMzI2NTUmADU0NjMyFhURNjcBFBYXESYjIhUEeTxTAuXIy/e6jHx0gtn+87iWn7I/SP2UoooFk5QCcxcJptPu99cBRwL+sI+bkpimHwEa2aC7xbL+oQUTAVKFvR4BaMbEAAAB/9oAAARuBbwAGgBJsgAbHBESOQCwAEVYsAQvG7EEHD5ZsABFWLAXLxuxFxw+WbAARViwDS8bsQ0QPlmyAAQNERI5sAQQsgkBCitYIdgb9FmwEtAwMQETNjYzMhcHJiMiBwERIxEBJiMiByc2MzIWFwIk4StrV0g0JA0nRiT+17/+2CdDJw0kNEdYayoDBgH7Y1gblwhP/Xf9xgI8AodPCJYcVF0AAgBK/+wGGwQ6ABIAJgBwsggnKBESObAIELAe0ACwAEVYsBEvG7ERGD5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmwERCyAAEKK1gh2Bv0WbIIEQYREjmwD9CwENCwFdCwFtCwChCyGwEKK1gh2Bv0WbIfChEREjmwJNAwMQEjFhUQAiMiJwYjIgIRNDcjNSEBJichBgcUFjMyNjcRMxEWFjMyNgYbiEC8q/FTU/CqvUB0BdH+/gRK/LtLBGBYaXECuwJxalZgA6Gsxf7v/s3v7wEwARS/spn99qrHyKnL46eiAQf++aKn4gABACr/9QWxBbAAGABhshEZGhESOQCwAEVYsBcvG7EXHD5ZsABFWLAJLxuxCRA+WbAXELIAAQorWCHYG/RZsgQXCRESObAEL7AJELIKAQorWCHYG/RZsAQQshABCitYIdgb9FmwABCwFdCwFtAwMQEhETYzMgQQBCMnMjY1JiYjIgcRIxEhNSEElP32nYT0ARL+/O0Cm5gCo6KWisH+YQRqBRL+OTDx/k7jlpGUjpYu/VoFEp4AAAEAe//sBNwFxAAfAIayAyAhERI5ALAARViwCy8bsQscPlmwAEVYsAMvG7EDED5ZsAsQsA/QsAsQshIBCitYIdgb9FmyFgMLERI5sBYvtL8WzxYCcbLPFgFdsp8WAXGy/xYBXbIvFgFdsl8WAXKyjxYBcrIXAQorWCHYG/RZsAMQshwBCitYIdgb9FmwAxCwH9AwMQEGBCMgABE1NBIkMzIAFyMmJiMiAgchFSEVFBIzMjY3BNwb/uHu/v7+yY8BC7DoARgXwBmnl7nOAgI6/cbGsqCrHAHO5/sBcgE2i8kBNaf+/eWsnv7x6p0C7f7okbQAAgAxAAAIOwWwABgAIQB0sgkiIxESObAJELAZ0ACwAEVYsAAvG7EAHD5ZsABFWLAILxuxCBA+WbAARViwEC8bsRAQPlmyAQAIERI5sAEvsAAQsgoBCitYIdgb9FmwEBCyEgEKK1gh2Bv0WbABELIZAQorWCHYG/RZsBIQsBrQsBvQMDEBESEWBBUUBAchESEDAgIGByM1Nz4CNxMBESEyNjU0JicE7gFp3gEG/v7e/dP+ABoPWayQPyhdZDQLHgN3AV+Mop2KBbD9ywPwy8bzBAUS/b/+3v7ciQKdAgdr6vMCwv0t/cCehICcAgACALEAAAhNBbAAEgAbAIKyARwdERI5sAEQsBPQALAARViwEi8bsRIcPlmwAEVYsAIvG7ECHD5ZsABFWLAPLxuxDxA+WbAARViwDC8bsQwQPlmyAAIPERI5sAAvsgQMAhESObAEL7AAELIOAQorWCHYG/RZsAQQshMBCitYIdgb9FmwDBCyFAEKK1gh2Bv0WTAxASERMxEhFgQVFAQHIREhESMRMwERITI2NTQmJwFyAs7AAWriAQH+/9/90/0ywcEDjgFfjqCYigM5Anf9ngPivb/pBAKc/WQFsP0B/fWOenSMAwABAD4AAAXUBbAAFQBdsg4WFxESOQCwAEVYsBQvG7EUHD5ZsABFWLAILxuxCBA+WbAARViwEC8bsRAQPlmwFBCyAAEKK1gh2Bv0WbIEFAgREjmwBC+yDQEKK1gh2Bv0WbAAELAS0LAT0DAxASERNjMyFhcRIxEmJiMiBxEjESE1IQSm/fCgr/ryA8EBiaSppsD+aARoBRL+UCja3f4tAc6Yhir9PgUSngABALD+mQT/BbAACwBIALAJL7AARViwAC8bsQAcPlmwAEVYsAQvG7EEHD5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmyAgEKK1gh2Bv0WbAD0DAxEzMRIREzESERIxEhsMECzsD+QMH+MgWw+u0FE/pQ/pkBZwACAKIAAASxBbAADAAVAFuyDxYXERI5sA8QsAPQALAARViwCy8bsQscPlmwAEVYsAkvG7EJED5ZsAsQsgABCitYIdgb9FmyAgsJERI5sAIvsg0BCitYIdgb9FmwCRCyDgEKK1gh2Bv0WTAxASERIRYEFRQEByERIQERITI2NTQmJwQh/UIBauQBAP7+3/3SA3/9QgFfj5+ZjQUS/kwD5MTF6gQFsP0Q/d2YgHuOAgACADL+mgXJBbAADgAVAFuyEhYXERI5sBIQsAvQALAEL7AARViwCy8bsQscPlmwAEVYsAIvG7ECED5ZsAQQsAHQsAIQsgYBCitYIdgb9FmwDdCwDtCwD9CwENCwCxCyEQEKK1gh2Bv0WTAxASMRIREjAzM2EjcTIREzISERIQMGAgXHv/vrwAF3Xm8OIANnvvu7Asb+ExUNa/6bAWX+mgIDagFl1QJv+u0Edf5U+/6eAAEAGwAABzUFsAAVAIYAsABFWLAJLxuxCRw+WbAARViwDS8bsQ0cPlmwAEVYsBEvG7ERHD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmwAEVYsBQvG7EUED5ZsAIQsBDQsBAvsi8QAV2yzxABXbIAAQorWCHYG/RZsATQsggQABESObAQELAL0LITABAREjkwMQEjESMRIwEjAQEzATMRMxEzATMBASMEqJzApf5k8AHq/jzjAYOlwJ4Bg+L+PAHq7wKY/WgCmP1oAwACsP2IAnj9iAJ4/VH8/wABAFD/7ARqBcQAKABysgMpKhESOQCwAEVYsAsvG7ELHD5ZsABFWLAWLxuxFhA+WbALELIDAQorWCHYG/RZsAsQsAbQsiUWCxESObAlL7LPJQFdsp8lAXGyJAEKK1gh2Bv0WbIRJCUREjmwFhCwG9CwFhCyHgEKK1gh2Bv0WTAxATQmIyIGFSM0NjYzMgQVFAYHBBUUBCMiJiY1MxQWMzI2NRAlIzUzNjYDlKmZgK3Af+SK9AEOfG8BAf7c9JHthMC2jJ27/sO0s5KWBCl0iY1odLhn28NlpjBW/8TmZ76Dc5mSeAEABZ4DfgABALEAAAT/BbAACQBdALAARViwAC8bsQAcPlmwAEVYsAcvG7EHHD5ZsABFWLACLxuxAhA+WbAARViwBS8bsQUQPlmyBAACERI5QAmKBJoEqgS6BARdsgkAAhESOUAJhQmVCaUJtQkEXTAxATMRIxEBIxEzEQQ/wMD9M8HBBbD6UARi+54FsPueAAABAC8AAAT2BbAAEQBNsgQSExESOQCwAEVYsAAvG7EAHD5ZsABFWLABLxuxARA+WbAARViwCS8bsQkQPlmwABCyAwEKK1gh2Bv0WbAJELILAQorWCHYG/RZMDEBESMRIQMCAgYHIzU3PgI3EwT2wP32Gg9ZrJA/KF1kNAseBbD6UAUS/b/+3v7ciQKdAgdr6vMCwgAAAQBN/+sEywWwABEASrIEEhMREjkAsABFWLABLxuxARw+WbAARViwEC8bsRAcPlmwAEVYsAcvG7EHED5ZsgABBxESObILAQorWCHYG/RZsg8HEBESOTAxAQEzAQ4CIyInNxcyPwIBMwKdAU/f/f00WnlbTxYGW2kzGSb+ENcCYwNN+0N0YTMJmARlNFkENgAAAwBT/8QF4wXsABgAIQAqAFuyDCssERI5sAwQsCDQsAwQsCLQALALL7AXL7IVFwsREjmwFS+wANCyCQsXERI5sAkvsA3QsBUQshkBCitYIdgb9FmwCRCyJAEKK1gh2Bv0WbAf0LAZELAi0DAxATMWBBIVFAIEByMVIzUjIiQCEBIkMzM1MwMiBhUUFjMzETMRMzI2NTQmIwN4H6UBEJeY/vSkI7ocp/7vl5cBEaccuta829q/Grocv9fXwwUeAZj+9aWm/vKXAsTEmAEMAU4BDJjO/pvnzc7lA2f8mevKyOoAAAEAr/6hBZcFsAALADsAsAkvsABFWLAALxuxABw+WbAARViwBC8bsQQcPlmwAEVYsAovG7EKED5ZsgIBCitYIdgb9FmwBtAwMRMzESERMxEzAyMRIa/BAs7AmRKt+9cFsPrtBRP68f4AAV8AAAEAlgAABMgFsAASAEayBRMUERI5ALAARViwAC8bsQAcPlmwAEVYsAovG7EKHD5ZsABFWLABLxuxARA+WbIPAAEREjmwDy+yBgEKK1gh2Bv0WTAxAREjEQYGIyImJxEzERYWMzI3EQTIwWmsbvnyA8EBiaO+xQWw+lACWx4X2N8B0/4ymIY2ArYAAAEAsAAABtcFsAALAEgAsABFWLAALxuxABw+WbAARViwAy8bsQMcPlmwAEVYsAcvG7EHHD5ZsABFWLAJLxuxCRA+WbIBAQorWCHYG/RZsAXQsAbQMDEBESERMxEhETMRIREBcQH1vwHywPnZBbD67QUT+u0FE/pQBbAAAQCw/qEHagWwAA8AVACwCy+wAEVYsAAvG7EAHD5ZsABFWLADLxuxAxw+WbAARViwBy8bsQccPlmwAEVYsA0vG7ENED5ZsgEBCitYIdgb9FmwBdCwBtCwCdCwCtCwAtAwMQERIREzESERMxEzAyMRIREBcQH1vwHywJMSpfn9BbD67QUT+u0FE/rn/goBXwWwAAACABAAAAW4BbAADAAVAF6yARYXERI5sAEQsA3QALAARViwAC8bsQAcPlmwAEVYsAkvG7EJED5ZsgIACRESObACL7AAELILAQorWCHYG/RZsAIQsg0BCitYIdgb9FmwCRCyDgEKK1gh2Bv0WTAxEyERITIEFRQEByERIQERITI2NTQmJxACWwFa7wEE/v7i/db+ZgJbAV+On5mMBbD9ruXGxesDBRj9qP3dmIB7jgIAAAMAsgAABjAFsAAKABMAFwBtshIYGRESObASELAG0LASELAV0ACwAEVYsAkvG7EJHD5ZsABFWLAWLxuxFhw+WbAARViwBy8bsQcQPlmwAEVYsBQvG7EUED5ZsgAJBxESObAAL7ILAQorWCHYG/RZsAcQsgwBCitYIdgb9FkwMQEhFgQVFAQHIREzEREhMjY1NCYnASMRMwFyAWrkAQD+/t/908ABX4+fmY0DV8DAA14D5MTF6gQFsP0Q/d2YgHuOAv1ABbAAAAIAowAABLEFsAAKABMATbINFBUREjmwDRCwAdAAsABFWLAJLxuxCRw+WbAARViwBy8bsQcQPlmyAAkHERI5sAAvsgsBCitYIdgb9FmwBxCyDAEKK1gh2Bv0WTAxASEWBBUUBAchETMRESEyNjU0JicBYwFq5AEA/v7f/dPAAV+Pn5mNA14D5MTF6gQFsP0Q/d2YgHuOAgAAAQCT/+wE9AXEAB8Aj7IMICEREjkAsABFWLATLxuxExw+WbAARViwHC8bsRwQPlmwANCwHBCyAwEKK1gh2Bv0WbIIHBMREjmwCC+07wj/CAJxss8IAV2yLwgBcbS/CM8IAnGynwgBcbL/CAFdsi8IAV2yXwgBcrKPCAFysgYBCitYIdgb9FmwExCyDAEKK1gh2Bv0WbATELAP0DAxARYWMzISNyE1ITQCIyIGByM2ADMyBBIVFRQCBCMiJCcBVByroK3JAv3DAj3PupanGcEXARjosAELj47+/aju/uEbAc60kQEO8J7tARScruUBA6f+y8mRyf7MpfvnAAIAt//sBtoFxAAXACUAobIhJicREjmwIRCwEtAAsABFWLATLxuxExw+WbAARViwDS8bsQ0cPlmwAEVYsAQvG7EEED5ZsABFWLAKLxuxChA+WbIPCg0REjmwDy+yXw8BXbL/DwFdtE8PXw8CcbSPD58PAnGyLw8BcbLPDwFdsi8PAV2yzw8BcbIIAQorWCHYG/RZsBMQshsBCitYIdgb9FmwBBCyIgEKK1gh2Bv0WTAxARQCBCMiJAInIxEjETMRMzYSJDMyBBIVJxACIyICBxUUEjMyEjcG2pD++LCm/vmVCNHAwNADkAEKrK8BC5C/0Lu20QPTubrMAwKp1v7BqKABKsf9gwWw/WTOATerqf6/1QIBAwEV/uv2a/v+4QEP/QAAAgBZAAAEZAWwAAwAFQBhshAWFxESObAQELAK0ACwAEVYsAovG7EKHD5ZsABFWLAALxuxABA+WbAARViwAy8bsQMQPlmyEQoAERI5sBEvsgEBCitYIdgb9FmyBQEKERI5sAoQshIBCitYIdgb9FkwMSERIQEjASQRNCQzIREBFBYXIREhIgYDo/6w/tPNAVL+5gER8wHP/O2lkwEa/u+cpQI3/ckCbG8BHtDn+lAD+YSgAQI+lAACAGH/7AQoBhEAGwAoAGKyHCkqERI5sBwQsAjQALAARViwEi8bsRIePlmwAEVYsAgvG7EIED5ZsgASCBESObAAL7IXABIREjmyDxIXERI5shoACBESObIcAQorWCHYG/RZsAgQsiMBCitYIdgb9FkwMQEyEhUVFAYGIyIANTUQEjc2NjUzFAYHBwYGBzYXIgYVFRQWMzI2NTQmAmfM9XbdkNr+9v33jGKYcXyKpaUZk6+IoKGJiqChA/z+798RmfGFASP1WgFVAZIsGUg/fYwdHye5mqqYt6IQrsvMxJm5AAMAnQAABCkEOgAOABYAHACOshgdHhESObAYELAC0LAYELAW0ACwAEVYsAEvG7EBGD5ZsABFWLAALxuxABA+WbIXAQAREjmwFy+0vxfPFwJdtJ8XrxcCcbL/FwFdsg8XAXG0Lxc/FwJdtG8XfxcCcrIPAQorWCHYG/RZsggPFxESObAAELIQAQorWCHYG/RZsAEQshsBCitYIdgb9FkwMTMRITIWFRQGBxYWFRQGIwERITI2NTQjJTMgECcjnQGm2OdaWGJ328j+0AEydHPu/tXvAQT2/QQ6l5JLeSAXhl2VngHb/rpWTqKUATAFAAABAJoAAANHBDoABQArALAARViwBC8bsQQYPlmwAEVYsAIvG7ECED5ZsAQQsgABCitYIdgb9FkwMQEhESMRIQNH/g26Aq0DofxfBDoAAgAu/sIEkwQ6AA4AFABbshIVFhESObASELAE0ACwDC+wAEVYsAQvG7EEGD5ZsABFWLAKLxuxChA+WbIAAQorWCHYG/RZsAbQsAfQsAwQsAnQsAcQsA/QsBDQsAQQshEBCitYIdgb9FkwMTc3NhMTIREzESMRIREjEyEhESEDAoNAbA8RArmLuf0NuQEBLwHx/rMLEZdPjAEYAbD8Xf4rAT7+wgHVAvj+/v69AAEAFQAABgQEOgAVAJAAsABFWLAJLxuxCRg+WbAARViwDS8bsQ0YPlmwAEVYsBEvG7ERGD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmwAEVYsBQvG7EUED5ZsAIQsBDQsBAvsr8QAV2y/xABXbIvEAFdss8QAXGyAAEKK1gh2Bv0WbAE0LIIEAAREjmwEBCwC9CyEwAQERI5MDEBIxEjESMBIwEBMwEzETMRMwEzAQEjA+uCuYL+0eoBg/6i4AEXf7l+ARng/qEBg+oB1v4qAdb+KgIwAgr+QAHA/kABwP31/dEAAQBY/+0DrARNACYAhrIDJygREjkAsABFWLAKLxuxChg+WbAARViwFS8bsRUQPlmwChCyAwEKK1gh2Bv0WbIlChUREjmwJS+0LyU/JQJdtL8lzyUCXbSfJa8lAnG0byV/JQJysgYlChESObIiAQorWCHYG/RZshAiJRESObIZFQoREjmwFRCyHAEKK1gh2Bv0WTAxATQmIyIGFSM0NjMyFhUUBgcWFRQGIyImNTMUFjMyNjU0JiMjNTM2At90ZWKDuOyxvtRYUb3mwLvzuI1paoJtc7nJvQMSTFlmRY20o5dJeiRAvJWut5xPcWJOW0+cBQABAJwAAAQBBDoACQBFALAARViwAC8bsQAYPlmwAEVYsAcvG7EHGD5ZsABFWLACLxuxAhA+WbAARViwBS8bsQUQPlmyBAcCERI5sgkHAhESOTAxATMRIxEBIxEzEQNIubn+Dbm5BDr7xgMV/OsEOvzqAAABAJwAAAQ/BDoADAB3ALAARViwBC8bsQQYPlmwAEVYsAgvG7EIGD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmwAhCwBtCwBi+ynwYBXbL/BgFdss8GAXGynwYBcbS/Bs8GAl2yLwYBXbJvBgFysgEBCitYIdgb9FmyCgEGERI5MDEBIxEjETMRMwEzAQEjAd2Hurp5AWzg/lQB0OsBzf4zBDr+NgHK/fj9zgABACwAAAQDBDoADwBNsgQQERESOQCwAEVYsAAvG7EAGD5ZsABFWLABLxuxARA+WbAARViwCC8bsQgQPlmwABCyAwEKK1gh2Bv0WbAIELIKAQorWCHYG/RZMDEBESMRIQMCBgcjNTc2NjcTBAO6/pAWEpekSjVaTgsUBDr7xgOh/mv+6fAFowQKvP4BzwAAAQCdAAAFUgQ6AAwAWQCwAEVYsAEvG7EBGD5ZsABFWLALLxuxCxg+WbAARViwAy8bsQMQPlmwAEVYsAYvG7EGED5ZsABFWLAJLxuxCRA+WbIACwMREjmyBQsDERI5sggLAxESOTAxJQEzESMRASMBESMRMwL7AXDnuf6igP6bufD1A0X7xgMT/O0DJPzcBDoAAQCcAAAEAAQ6AAsAigCwAEVYsAYvG7EGGD5ZsABFWLAKLxuxChg+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsAAQsAnQsAkvsm8JAV20vwnPCQJdsj8JAXG0zwnfCQJxsg8JAXK0nwmvCQJxsv8JAV2yDwkBcbKfCQFdsi8JAV20bwl/CQJysgIBCitYIdgb9FkwMSEjESERIxEzESERMwQAuf4PuroB8bkBzv4yBDr+KwHVAAEAnAAABAEEOgAHADgAsABFWLAGLxuxBhg+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsAYQsgIBCitYIdgb9FkwMSEjESERIxEhBAG5/g66A2UDofxfBDoAAQAoAAADsAQ6AAcAMQCwAEVYsAYvG7EGGD5ZsABFWLACLxuxAhA+WbAGELIAAQorWCHYG/RZsATQsAXQMDEBIREjESE1IQOw/pW5/pwDiAOk/FwDpJYAAAMAZP5gBWkGAAAaACUAMAB/sgcxMhESObAHELAg0LAHELAr0ACwBi+wAEVYsAMvG7EDGD5ZsABFWLAKLxuxChg+WbAARViwEy8bsRMSPlmwAEVYsBAvG7EQED5ZsABFWLAXLxuxFxA+WbAKELIeAQorWCHYG/RZsBAQsiMBCitYIdgb9FmwKdCwHhCwLtAwMRMQEjMyFxEzETYzMhIRFAIjIicRIxEGIyICNSU0JiMiBxEWMzI2JRQWMzI3ESYjIgZk0rdVQLlGXrjS0bdhRblCVbbRBEyMez8vLUN8ifxtgno6Lyo9eoQCCQEPATYdAc/+KyP+yv7c7/7mIP5VAagdARr1D8zhFPzxEcCytrwSAxER2gAAAQCc/r8EggQ6AAsAOwCwCC+wAEVYsAAvG7EAGD5ZsABFWLAELxuxBBg+WbAARViwCi8bsQoQPlmyAgEKK1gh2Bv0WbAG0DAxEzMRIREzETMDIxEhnLoB8rmBEqb80gQ6/F0Do/xd/igBQQAAAQBnAAADvQQ7ABAARrIEERIREjkAsABFWLAILxuxCBg+WbAARViwDy8bsQ8YPlmwAEVYsAAvG7EAED5ZsgwPABESObAML7IEAQorWCHYG/RZMDEhIxEGIyImJxEzERYzMjcRMwO9unqAy9UCuQXkgHq6AYgg0MABQ/638iACGgABAJwAAAXgBDoACwBIALAARViwAC8bsQAYPlmwAEVYsAMvG7EDGD5ZsABFWLAHLxuxBxg+WbAARViwCS8bsQkQPlmyAQEKK1gh2Bv0WbAF0LAG0DAxAREhETMRIREzESERAVYBjLkBi7r6vAQ6/F0Do/xdA6P7xgQ6AAEAkf6/Bm0EOgAPAEsAsAwvsABFWLAALxuxABg+WbAARViwAy8bsQMYPlmwAEVYsAcvG7EHGD5ZsABFWLANLxuxDRA+WbIBAQorWCHYG/RZsAXQsAnQMDEBESERMxEhETMRMwMjESERAUsBjLkBi7qYEqb63AQ6/F0Do/xdA6P8Xf4oAUEEOgACAB4AAAS/BDoADAAVAF6yARYXERI5sAEQsA3QALAARViwAC8bsQAYPlmwAEVYsAkvG7EJED5ZsgIACRESObACL7AAELILAQorWCHYG/RZsAIQsg0BCitYIdgb9FmwCRCyDgEKK1gh2Bv0WTAxEyERIRYWFRQGIyERIQERITI2NTQmJx4B+gEZuNbcuv42/r8B+gETaHJvZAQ6/osCvKGixAOi/oz+aWtdWnMCAAADAJ0AAAV/BDoACgAOABcAbbIGGBkREjmwBhCwDNCwBhCwE9AAsABFWLAJLxuxCRg+WbAARViwDS8bsQ0YPlmwAEVYsAcvG7EHED5ZsABFWLALLxuxCxA+WbIADQcREjmwAC+yDwEKK1gh2Bv0WbAHELIQAQorWCHYG/RZMDEBIRYWFRQGIyERMwEjETMBESEyNjU0JicBVgEZuNbcuv42uQQpurr71wETaHJvZALFAryhosQEOvvGBDr99P5pa11acwIAAgCdAAAD/QQ6AAoAEwBNsgcUFRESObAHELAN0ACwAEVYsAkvG7EJGD5ZsABFWLAHLxuxBxA+WbIACQcREjmwAC+yCwEKK1gh2Bv0WbAHELIMAQorWCHYG/RZMDEBIRYWFRQGIyERMxERITI2NTQmJwFWARm41ty6/ja5ARNocm9kAsUCvKGixAQ6/fT+aWtdWnMCAAEAZP/sA+AETgAfAIKyACAhERI5ALAARViwCC8bsQgYPlmwAEVYsBAvG7EQED5ZsAgQsgABCitYIdgb9FmyHQgQERI5sB0vtC8dPx0CXbS/Hc8dAl20nx2vHQJxtG8dfx0CcrIDCB0REjmyFBAIERI5sBAQshcBCitYIdgb9FmwHRCyGgEKK1gh2Bv0WTAxASIGFSM0NjYzMgAVFRQGBiMiJjUzFBYzMjY3ITUhJiYCCGORsHbEatMBBXfXirTwsI5md5oM/moBlA6WA7Z+Vl2qZf7P9h+Y+4ngp2aLuKGYkrEAAAIAnf/sBjAETgAUAB8AnbINICEREjmwDRCwFdAAsABFWLAULxuxFBg+WbAARViwBC8bsQQYPlmwAEVYsBEvG7ERED5ZsABFWLAMLxuxDBA+WbIAERQREjmwAC+0vwDPAAJdtJ8ArwACcbL/AAFdsg8AAXG0LwA/AAJdtl8AbwB/AANyshABCitYIdgb9FmwDBCyGAEKK1gh2Bv0WbAEELIdAQorWCHYG/RZMDEBITYAMzIAFxcUBgYjIgAnIREjETMBFBYgNjU0JiMiBgFWAQQVAQnK1AEOCwF84JDR/vYQ/v25uQG6pwEapaiMiqgCb9gBB/7i5Tqe/okBEdr+KQQ6/de02t7Gsd7aAAACAC8AAAPHBDoADQAWAGGyFBcYERI5sBQQsA3QALAARViwAC8bsQAYPlmwAEVYsAEvG7EBED5ZsABFWLAFLxuxBRA+WbISAAEREjmwEi+yAwEKK1gh2Bv0WbIHAwAREjmwABCyEwEKK1gh2Bv0WTAxAREjESEDIwEmJjU0NjcDFBYXIREhIgYDx7r+6f/IARBob9663mxZASb+9md6BDr7xgGl/lsBwSafapS1Af60T2EBAWdlAAH/6P5LA98GAAAiAISyDSMkERI5ALAfL7AARViwBC8bsQQYPlmwAEVYsBkvG7EZED5ZsABFWLAKLxuxChI+WbK/HwFdsi8fAV2yDx8BXbIeGR8REjmwHi+wIdCyAQEKK1gh2Bv0WbICGQQREjmwChCyDwEKK1gh2Bv0WbAEELIVAQorWCHYG/RZsAEQsBvQMDEBIRE2MyATERQGIyInNxYyNjURNCYjIgYHESMRIzUzNTMVIQJj/uJ7xQFXA6qYPTYPI4JIaXBaiCa5pKS5AR4Euf7+l/59/NyqshKTDWhcAyB4cmBO/P0EuZivrwABAGf/7AP3BE4AHwCcsgAgIRESOQCwAEVYsBAvG7EQGD5ZsABFWLAILxuxCBA+WbIAAQorWCHYG/RZsgMIEBESObIbEAgREjmwGy+0DxsfGwJytL8bzxsCXbSfG68bAnG0zxvfGwJxsv8bAV2yDxsBcbQvGz8bAl20bxt/GwJysr8bAXKyFBAbERI5sBAQshcBCitYIdgb9FmwGxCyHAEKK1gh2Bv0WTAxJTI2NzMOAiMiABE1NDY2MzIWFyMmJiMiBgchFSEWFgJIY5QIsAV4xG7e/v112JS28QiwCI9ogpoKAZT+bAqZg3haXqhjASgBAB6f94barmmHsZ2YoK0AAgAnAAAGhgQ6ABYAHwB5sgkgIRESObAJELAX0ACwAEVYsAAvG7EAGD5ZsABFWLAILxuxCBA+WbAARViwDy8bsQ8QPlmyAQAIERI5sAEvsAAQsgoBCitYIdgb9FmwDxCyEQEKK1gh2Bv0WbABELIXAQorWCHYG/RZsAgQshgBCitYIdgb9FkwMQERIRYWFRQGByERIQMCBgcjNTc2NjcTAREhMjY1NCYnA98BHrbT07f+Kf6vFxScpUE2VU0NFwK8ARNldXJjBDr+ZAO1lJO8AwOh/lr+6+QCowQKp9MCD/3M/o9pVlFgAQAAAgCcAAAGpwQ6ABIAGwB7sgEcHRESObABELAT0ACwAEVYsAIvG7ECGD5ZsABFWLARLxuxERg+WbAARViwCy8bsQsQPlmwAEVYsA8vG7EPED5ZsgERCxESObABL7AE0LABELINAQorWCHYG/RZsAQQshMBCitYIdgb9FmwCxCyFAEKK1gh2Bv0WTAxASERMxEhFhYVFAYjIREhESMRMwERITI2NTQmJwFWAfG5ASK00dm9/jb+D7q6AqoBE2V1cmMCoQGZ/mMEsZaXuwIK/fYEOv3M/o9pVlFgAQAB//0AAAPfBgAAGQB5sgwaGxESOQCwFi+wAEVYsAQvG7EEGD5ZsABFWLAHLxuxBxA+WbAARViwEC8bsRAQPlmyvxYBXbIvFgFdsg8WAV2yGRAWERI5sBkvsgABCitYIdgb9FmyAgQHERI5sAQQsgwBCitYIdgb9FmwABCwEtCwGRCwFNAwMQEhETYzIBMRIxEmJiMiBgcRIxEjNTM1MxUhAnn+zHvFAVcDuQFpb1qIJrmPj7kBNAS+/vmX/n39NQLMdXBgTvz9BL6Xq6sAAAEAnP6cBAEEOgALAEUAsAgvsABFWLAALxuxABg+WbAARViwAy8bsQMYPlmwAEVYsAUvG7EFED5ZsABFWLAJLxuxCRA+WbIBAQorWCHYG/RZMDEBESERMxEhESMRIREBVgHyuf6tuf6nBDr8XQOj+8b+nAFkBDoAAAEAnP/sBnUFsAAgAGCyByEiERI5ALAARViwAC8bsQAcPlmwAEVYsA4vG7EOHD5ZsABFWLAXLxuxFxw+WbAARViwBC8bsQQQPlmwAEVYsAovG7EKED5ZsgcABBESObITAQorWCHYG/RZsBzQMDEBERQGIyImJwYGIyImJxEzERQWMzI2NREzERQWMzI2NREGdeHDbasxNLJxvdcBwXJicoLHfGlqegWw+97G3FdZWVfbwwQm+917iol8BCP73X2IiX0EIgABAIH/6wWtBDoAHgBgsgYfIBESOQCwAEVYsAAvG7EAGD5ZsABFWLAMLxuxDBg+WbAARViwFS8bsRUYPlmwAEVYsAQvG7EEED5ZsABFWLAILxuxCBA+WbIGFQQREjmyEQEKK1gh2Bv0WbAa0DAxAREUBiMiJwYjIiYnETMRFhYzMjY1ETMRFBYzMjY3EQWtyq7GWV/Op8ABuQFbU2JvumVcWWUBBDr9J7DGlJTDsALc/SNmdXhnAtn9J2d4dWYC3QAC/9wAAAP8BhYAEQAaAHGyFBscERI5sBQQsAPQALAARViwDi8bsQ4ePlmwAEVYsAgvG7EIED5ZshEOCBESObARL7IAAQorWCHYG/RZsgIOCBESObACL7AAELAK0LARELAM0LACELISAQorWCHYG/RZsAgQshMBCitYIdgb9FkwMQEhESEWFhAGByERIzUzETMRIQERITI2NTQmJwKW/r8BGLvU1Lf+Kr+/ugFB/r8BEmlxb2QEOv6wAsr+ttEDBDqXAUX+u/2B/kV3ZGF9AgAAAQC3/+0GoAXFACYAh7IeJygREjkAsABFWLAFLxuxBRw+WbAARViwJi8bsSYcPlmwAEVYsB0vG7EdED5ZsABFWLAjLxuxIxA+WbIQBR0REjmwEC+wANCwBRCwCdCwBRCyDAEKK1gh2Bv0WbAQELIRAQorWCHYG/RZsB0QshYBCitYIdgb9FmwHRCwGdCwERCwIdAwMQEzNhIkMzIAFyMmJiMiAgchFSEVFBIzMjY3MwYEIyAAETUjESMRMwF4xwWTAQas5gEZGMAZp5e0zwYCHv3ixrKjqRzAG/7h7v7+/snHwcEDQMEBJp7/AOisnv774pca7f7ok7Ln+wFyATYU/VcFsAABAJn/7AWhBE4AJADEsgMlJhESOQCwAEVYsAQvG7EEGD5ZsABFWLAkLxuxJBg+WbAARViwIS8bsSEQPlmwAEVYsBwvG7EcED5Zsg8cBBESObAPL7S/D88PAl20Pw9PDwJxtM8P3w8CcbQPDx8PAnK0nw+vDwJxsv8PAV2yDw8BcbQvDz8PAl20bw9/DwJysADQsggPBBESObAEELILAQorWCHYG/RZsA8QshABCitYIdgb9FmwHBCyFAEKK1gh2Bv0WbIXHAQREjmwEBCwH9AwMQEzNhIzMhYXIyYmIyIGByEVIRYWMzI2NzMOAiMiAicjESMRMwFTvxD/0bbxCLAIj2iEmAoBtf5LCpmDY5QIsAV4xG7R/hDAuroCZ98BCNquaYexnpegrXhaXqhjAQbe/jAEOgAAAgAoAAAE5AWwAAsADgBWALAARViwCC8bsQgcPlmwAEVYsAIvG7ECED5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmyDQgCERI5sA0vsgABCitYIdgb9FmwBNCyDggCERI5MDEBIxEjESMDIwEzASMBIQMDiaq8npjFAg2rAgTF/Z8Bk8cBtv5KAbb+SgWw+lACWgJJAAACAA8AAAQlBDoACwAQAFYAsABFWLAILxuxCBg+WbAARViwAi8bsQIQPlmwAEVYsAYvG7EGED5ZsABFWLAKLxuxChA+WbINAggREjmwDS+yAQEKK1gh2Bv0WbAE0LIPCAIREjkwMQEjESMRIwMjATMBIwEhAycHAu11uXx3vQG6nwG9vv4ZAS+AGBgBKf7XASn+1wQ6+8YBwQE7WVkAAAIAyQAABvUFsAATABYAfACwAEVYsAIvG7ECHD5ZsABFWLASLxuxEhw+WbAARViwBC8bsQQQPlmwAEVYsAgvG7EIED5ZsABFWLAMLxuxDBA+WbAARViwEC8bsRAQPlmyFQIEERI5sBUvsADQsBUQsgYBCitYIdgb9FmwCtCwBhCwDtCyFgIEERI5MDEBIQEzASMDIxEjESMDIxMhESMRMwEhAwGKAYcBNasCBMWWqryemMWe/rPBwQJFAZPHAlkDV/pQAbb+SgG2/koBuP5IBbD8qgJJAAACALwAAAXkBDoAEwAYAH8AsABFWLACLxuxAhg+WbAARViwEi8bsRIYPlmwAEVYsAQvG7EEED5ZsABFWLAILxuxCBA+WbAARViwDC8bsQwQPlmwAEVYsBAvG7EQED5ZsgAQEhESObAAL7AB0LIOAQorWCHYG/RZsAvQsAfQsAEQsBTQsBXQshcSBBESOTAxASEBMwEjAyMRIxEjAyMTIxEjETMBIQMnBwF2AQ8BA58Bvb56dbl8d7150bq6AckBL4AYGAHBAnn7xgEp/tcBKf7XASj+2AQ6/YcBO1lZAAACAJMAAAY/BbAAHQAhAHayHiIjERI5sB4QsA7QALAARViwHC8bsRwcPlmwAEVYsAUvG7EFED5ZsABFWLANLxuxDRA+WbAARViwFS8bsRUQPlmyAQ0cERI5sAEvsgoBCitYIdgb9FmwENCwARCwGtCwARCwHtCwHBCyIAEKK1gh2Bv0WTAxATMyFhcRIxEmJicjBxEjEScjIgYHESMRNjYzMwEhATMBIQRBG/TsA8EBfJqFFcENiJ6CBMAD7PMq/ngEsv2fEAEa/bsDKtTY/oIBeJCCAiP9lwJ2FnuN/nwBftjUAob9egHoAAACAJYAAAVLBDoAGwAfAHOyHCAhERI5sBwQsBTQALAARViwBi8bsQYYPlmwAEVYsBsvG7EbED5ZsABFWLAULxuxFBA+WbAARViwDC8bsQwQPlmyHBQGERI5sBwvsATQsBwQsAfQshABCitYIdgb9FmwF9CwBhCyHgEKK1gh2Bv0WTAxMzU2NjcBIQEWFhcVIzUmJiMjBxEjEScjIgYHFQEzEyGWBMrS/uEDv/7gzsUCugJzjDULuQY+jHUCAaIIt/6Lts3SBgHf/iEL09CtsZKBE/5PAbsJfpWxAlwBRgACALYAAAhyBbAAIgAmAJOyJicoERI5sCYQsB7QALAARViwCC8bsQgcPlmwAEVYsAsvG7ELHD5ZsABFWLAFLxuxBRA+WbAARViwIi8bsSIQPlmwAEVYsBsvG7EbED5ZsABFWLATLxuxExA+WbIJBQgREjmwCS+yBAEKK1gh2Bv0WbAJELAj0LAN0LAEELAe0LAY0LALELImAQorWCHYG/RZMDEhETY3IREjETMRIQEhATMyFhcRIxEmJicjBxEjEScjIgYHEQEzASECxQFP/mLBwQNZ/nkEs/54G/TsA8EBfJqFFsAOh56CBAIVEAEa/bsBeLNp/WwFsP18AoT9etTY/oIBeJCCAiX9mQJ1F3uN/nwDKgHoAAIAmwAABzsEOgAhACUAlrIeJicREjmwHhCwJdAAsABFWLAHLxuxBxg+WbAARViwCy8bsQsYPlmwAEVYsAAvG7EAED5ZsABFWLAFLxuxBRA+WbAARViwES8bsREQPlmwAEVYsBkvG7EZED5ZsgoLABESObAKL7IdAQorWCHYG/RZsAPQsAoQsA3QsB0QsBbQsAoQsCLQsAsQsiQBCitYIdgb9FkwMSE1NjchESMRMxEhASEBFhYXFSM1JiYjIwcRIxEnIwYGBxUBMxMhAoYCRv6HuroC0f7hA7/+4M7FAroCc4w1C7kGS4VvAgGiCLf+i6+taP48BDr+IgHe/iEL09CtsZKBE/5PAbsJAoCTrwJcAUYAAAIAUP5GA6oHhgApADIAh7IqMzQREjmwKhCwAtAAsBkvsC4vsABFWLAFLxuxBRw+WbAARViwEi8bsRIQPlmwBRCyAwEKK1gh2Bv0WbIoBRIREjmwKC+yJQEKK1gh2Bv0WbIMJSgREjmwEhCyHwEKK1gh2Bv0WbIPLgFdsC4QsCvQsCsvtA8rHysCXbIqLisREjmwMtAwMQE0JiMhNSEyBBUUBgcWFhUUBCMjBhUUFxcHJiY1NDY3MzY2NRAlIzUzIAM3MxUDIwM1MwLanYf+zgEr3gEGgXOCif734DSNgh9Keo2lojSGn/6+mYYBP7yXoP5y+p0EKm6AmNiyZ6QtKa2CxOUDbWlCD301qGN6gwEBlHkBCAWYA6WqCv7uARIKAAIATP5GA3YGMAApADIAnrIuMzQREjmwLhCwH9AAsBgvsC4vsABFWLAFLxuxBRg+WbAARViwES8bsREQPlmwBRCyAwEKK1gh2Bv0WbIoBREREjmwKC+0Lyg/KAJdtL8ozygCXbSfKK8oAnG0byh/KAJysiUBCitYIdgb9FmyDCUoERI5sBEQsh4BCitYIdgb9FmwLhCwK9CwKy+0DysfKwJdsiouKxESObAy0DAxATQmJyE1ITIWFRQGBxYVFAYjIwYVFBcXByYmNTQ2NzM2NzY1NCUjNTMgAzczFQMjAzUzAqd/cP7JASfK7mZb1/PIMo2CH0t8iqWiNnJDP/7omYgBE9qXoP5y+p0DCUNTApmqi0l3JEKvlK8DbWlCD303qGF6gwECMC5IogOYAx2qCv7uARIKAAADAGf/7AT6BcQAEQAYAB8AibIEICEREjmwBBCwEtCwBBCwGdAAsABFWLANLxuxDRw+WbAARViwBC8bsQQQPlmwDRCyEgEKK1gh2Bv0WbIWDQQREjmwFi+yLxYBXbLPFgFdsi8WAXGy/xYBXbJfFgFdtE8WXxYCcbKfFgFxsAQQshkBCitYIdgb9FmwFhCyHAEKK1gh2Bv0WTAxARQCBCMiJAInNTQSJDMyBBIXASICByEmAgMyEjchFhIE+o/++LGs/vaTApIBC6yvAQiRAv22ttAEAxQEzra2ygj87AjTAqnV/sKqqQE5zmnSAUKrqP7FzwIN/u3y+AEN+3ABAPTs/vgAAAMAW//sBDQETgAPABUAHACHsgQdHhESObAEELAT0LAEELAW0ACwAEVYsAQvG7EEGD5ZsABFWLAMLxuxDBA+WbIaDAQREjmwGi+0vxrPGgJdtJ8arxoCcbL/GgFdsg8aAXG0Lxo/GgJdtM8a3xoCcbIQAQorWCHYG/RZsAwQshQBCitYIdgb9FmwBBCyFgEKK1gh2Bv0WTAxEzQ2NjMyABcXFAYGIyIANQUhFhYgNgEiBgchJiZbe+GP1AEOCwF84JDe/vEDHP2fDaQBAqH+3H2iDwJeEqMCJ5/9i/7i5Tqe/okBM/tEm7i6Anm1k5exAAEAFgAABN0FwwAPAEayAhARERI5ALAARViwBi8bsQYcPlmwAEVYsA8vG7EPHD5ZsABFWLAMLxuxDBA+WbIBBgwREjmwBhCyCAEKK1gh2Bv0WTAxARc3ATY2MxcHIgYHASMBMwJDISMBCDOGZy4BQEAf/nyq/gfQAXaCgQM/l3gBqzxU+3kFsAABAC4AAAQLBE0AEQBGsgISExESOQCwAEVYsAUvG7EFGD5ZsABFWLARLxuxERg+WbAARViwDi8bsQ4QPlmyAQUOERI5sAUQsgoBCitYIdgb9FkwMQEXNxM2MzIXByYjIgYHASMBMwHbFxmdTaxHIxUNHR88EP7Xjf6DvQE8ZGQCH/IYlAgwLfy0BDoAAAIAZ/9zBPoGNAATACcAUrIFKCkREjmwBRCwGdAAsABFWLANLxuxDRw+WbAARViwAy8bsQMQPlmwBtCwDRCwENCyFwEKK1gh2Bv0WbAa0LADELIkAQorWCHYG/RZsCHQMDEBEAAHFSM1JgADNRAANzUzFRYAESc0AicVIzUGAhUVFBIXNTMVNhI1BPr+/uO55f7xAQEO57niAQO/mY25k6OkkrmPlwKp/t3+kSOBfx8BcQEjYAEkAXYfdngl/pD+2QfgAQkjYWQf/u7fXd7+7B9mZCIBC+IAAAIAW/+JBDQEtQATACUAWLIDJicREjmwAxCwHNAAsABFWLADLxuxAxg+WbAARViwEC8bsRAQPlmwAxCwBtCwEBCwDdCwEBCyIwEKK1gh2Bv0WbAU0LADELIdAQorWCHYG/RZsBrQMDETNBI3NTMVFhIVFRQCBxUjNSYCNQE2NjU0JicVIzUGBhUUFhc1M1vUubm62d22ubTZAkZjdnRluWJycWO5AifSASoicG8g/tjdENj+2B1rbB8BJ9z+eR/Nq5HQIGJhIdClkssiZgAAAwCc/+sGbwdRACwAQABJAKayCkpLERI5sAoQsDLQsAoQsEnQALAARViwFC8bsRQcPlmwAEVYsA0vG7ENED5ZsBQQsADQsA0QsAfQsgoNFBESObAUELIVAQorWCHYG/RZsA0QshwBCitYIdgb9FmyIBQNERI5sCXQsBUQsCzQsBQQsDjQsDgvsC/Qsi0CCitYIdgb9FmwLxCwNNCwNC+yPAIKK1gh2Bv0WbA4ELBE0LBJ0LBJLzAxATIWFREUBiMiJicGBiMiJicRNDYzFSIGFREUFjMyNjURMxEUFjMyNjURNCYjExUjIi4CIyIVFSM1NDYzMh4CATY3NTMVFAYHBNu72dm7cLI0NLBwudgE2L1jcXJicoLBgnNjcG9kaCtQgrg0GHGAf24oSL9q/kBCA51bOwWv8Nb9xtTwVVhYVejNAkrU8Z6dif3EjJuJfAGs/lR6i5yMAjqInwHCfyJQDHAPJG5sEVIb/pBQPGlmMnUgAAMAfv/rBaoF8QArAD8ASACssglJShESObAJELA80LAJELBI0ACwAEVYsBMvG7ETGD5ZsABFWLAMLxuxDBA+WbATELAA0LAMELAH0LIJDBMREjmwExCyFAEKK1gh2Bv0WbAMELIbAQorWCHYG/RZsh8TDBESObAk0LAUELAr0LATELA30LA3L7At0LAtL7IsAgorWCHYG/RZsC0QsDPQsDMvsjsCCitYIdgb9FmwNxCwQ9CwQy+wSNCwSC8wMQEyFhURFAYjIicGBiMiJicRNDYzFSIGFREUFjMyNjU1MxUWFjMyNjURNCYjExUjIi4CIyIVFSM1NDYzMh4CATY3NTMVFAYHBEKowMCo0F8vnGKjwQTAqFJdXFNib7kBcGFRXV1RqixPfsAwGHKAf28pSrdt/kFBA55bOwRE28L+38HalUtK0LsBMsHbmIh8/t57iXhn6+5ndYh9ASF8iAHHfyBSC28PJG5sElAc/oZOP2hmMnUgAAIAnP/sBnUHAwAgACgAgrIHKSoREjmwBxCwJ9AAsABFWLAPLxuxDxw+WbAARViwFy8bsRccPlmwAEVYsCAvG7EgHD5ZsABFWLAKLxuxChA+WbAE0LIHCg8REjmwChCyEwEKK1gh2Bv0WbAc0LAPELAn0LAnL7Ao0LAoL7IiBgorWCHYG/RZsCgQsCXQsCUvMDEBERQGIyImJwYGIyImJxEzERQWMzI2NREzERQWMzI2NRElNSEXIRUjNQZ14cNtqzE0snG91wHBcmJygsd8aWp6/EIDLAH+tagFsPvextxXWVlX28MEJvvde4qJfAQj+919iIl9BCLoa2t9fQAAAgCB/+sFrQWwAB4AJgCFsgYnKBESObAGELAj0ACwAEVYsA0vG7ENGD5ZsABFWLAVLxuxFRg+WbAARViwHi8bsR4YPlmwAEVYsAgvG7EIED5ZsATQsAQvsgYIDRESObAIELIRAQorWCHYG/RZsBrQsA0QsCXQsCUvsCbQsCYvsiAGCitYIdgb9FmwJhCwI9CwIy8wMQERFAYjIicGIyImJxEzERYWMzI2NREzERQWMzI2NxEBNSEXIRUjNQWtyq7GWV/Op8ABuQFbU2JvumVcWWUB/JMDLAP+s6kEOv0nsMaUlMOwAtz9I2Z1eGcC2f0nZ3h1ZgLdAQtra4CAAAABAHX+hAS8BcUAGQBJshgaGxESOQCwAC+wAEVYsAovG7EKHD5ZsABFWLACLxuxAhA+WbAKELAO0LAKELIRAQorWCHYG/RZsAIQshkBCitYIdgb9FkwMQEjESYANTU0EiQzMgAXIyYmIyICFRUUEhczAxS/2P74jgEAoPcBIALBArWhoM3FnXz+hAFsHAFW//SxASCf/vjgnqz+/NT0yv77BAABAGT+ggPgBE4AGQBJshgaGxESOQCwAC+wAEVYsAovG7EKGD5ZsABFWLACLxuxAhA+WbAKELAO0LAKELIRAQorWCHYG/RZsAIQshgBCitYIdgb9FkwMQEjESYCNTU0NjYzMhYVIzQmIyIGFRUUFhczAqK5sdR314uz8K+PZYScloJt/oIBcB4BJtkjmfmK4ahljNq1H6jbAwAAAQB0AAAEkAU+ABMAEwCwDi+wAEVYsAQvG7EEED5ZMDEBBQclAyMTJTcFEyU3BRMzAwUHJQJYASFE/t22qOH+30QBJc3+3kYBI7yl5wElSP7gAb6se6r+vwGOq3urAW2rfasBS/5oq3qqAAH8ZwSm/ycF/AAHABEAsAAvsgMGCitYIdgb9FkwMQEVJzchJxcV/Q2mAQIbAaUFI30B6WwB2AAAAfxxBRf/ZAYVABMALgCwDi+wCNCwCC+yAAIKK1gh2Bv0WbAOELAF0LAFL7AOELIPAgorWCHYG/RZMDEBMhYVFSM1NCMiBwcGByM1Mj4C/nZvf4ByKi1viXY8bGrBRwYVbG4kDnASLzoCfhtTEQAB/WYFFv5UBlcABQAMALABL7AF0LAFLzAxATUzFRcH/WazO00F3HuMdEEAAAH9pAUW/pMGVwAFAAwAsAMvsADQsAAvMDEBJzcnMxX98U07AbUFFkF0jHsACPob/sQBtgWvAAwAGgAnADUAQgBPAFwAagB6ALBFL7BTL7BgL7A4L7AARViwAi8bsQIcPlmyCQsKK1gh2Bv0WbBFELAQ0LBFELJMCworWCHYG/RZsBfQsFMQsB7QsFMQsloLCitYIdgb9FmwJdCwYBCwK9CwYBCyZwsKK1gh2Bv0WbAy0LA4ELI/CworWCHYG/RZMDEBNDYyFhUjNCYjIgYVATQ2MzIWFSM0JiMiBhUTNDYzMhYVIzQmIgYVATQ2MzIWFSM0JiMiBhUBNDYyFhUjNCYjIgYVATQ2MhYVIzQmIyIGFQE0NjMyFhUjNCYiBhUTNDYzMhYVIzQmIyIGFf0Ic750cDMwLjMB3nRdX3VxNS4sM0h1XV90cDVcM/7LdF1fdHA1Li0z/U9zvnRwMzAuM/1NdL50cDMwLjP+3nVdX3RwNVwzNXVdX3VxNS4tMwTzVGhoVC43NTD+61RoZ1UxNDUw/glVZ2hUMTQ3Lv35VGhoVDE0Ny7+5FRoaFQuNzcuBRpUaGhULjc1MP4JVWdoVDE0Ny79+VVnZ1UxNDUwAAj6LP5jAWsFxgAEAAkADgATABgAHQAiACcAOQCwIS+wEi+wCy+wGy+wJi+wAEVYsAcvG7EHHD5ZsABFWLAWLxuxFho+WbAARViwAi8bsQISPlkwMQUXAyMTAycTMwMBNwUVJQUHJTUFATclFwUBBwUnJQMnAzcTARcTBwP+Lwt6YEY6DHpgRgIdDQFN/qb7dQ3+swFaA5wCAUBE/tv88wL+wEUBJisRlEHGA2ARlELEPA7+rQFhBKIOAVL+oP4RDHxiRzsMfGJHAa4QmUTI/I4RmUXIAuQCAUZF/tX84wL+u0cBKwAAAv/cAAAD/AZxABEAGgB0shQbHBESObAUELAD0ACwAEVYsAwvG7EMHD5ZsABFWLAQLxuxEBw+WbAARViwCC8bsQgQPlmwEBCyAAEKK1gh2Bv0WbICDAgREjmwAi+wABCwCtCwC9CwAhCyEgEKK1gh2Bv0WbAIELITAQorWCHYG/RZMDEBIREhFhYQBgchESM1MzUzFSEBESEyNjU0JicClv6/ARi71NS3/iq/v7oBQf6/ARJpcW9kBRj90gLK/rbRAwUYmMHB/KL+RXdkYX0CAAIAqAAABNcFsAAOABsAVLIEHB0REjmwBBCwF9AAsABFWLADLxuxAxw+WbAARViwAS8bsQEQPlmyFgMBERI5sBYvsgABCitYIdgb9FmyCQADERI5sAMQshQBCitYIdgb9FkwMQERIxEhMgQVFAcXBycGIwE2NTQmJyERITI3JzcBacECGewBE2d+bYt2qAEZJaWR/qABWGJFbm4COv3GBbDyy7pwimeZNwEbQVuCnQL9xR15ZgAAAgCM/mAEIwROABMAIgB1shwjJBESObAcELAQ0ACwAEVYsBAvG7EQGD5ZsABFWLANLxuxDRg+WbAARViwCi8bsQoSPlmwAEVYsAcvG7EHED5ZsgIHEBESObIJEAcREjmyDhAHERI5sBAQshcBCitYIdgb9FmwBxCyHAEKK1gh2Bv0WTAxARQHFwcnBiMiJxEjETMXNjMyEhEnNCYjIgcRFjMyNyc3FzYEHmpvbm5Zc8VxuakJccnD47mciKhUU6tSPGZuWjICEe6XfWZ7OH399wXaeIz+2v76BLfUlf37lCdzZ2diAAABAKIAAAQjBwAACQA1sgMKCxESOQCwCC+wAEVYsAYvG7EGHD5ZsABFWLAELxuxBBA+WbAGELICAQorWCHYG/RZMDEBIxUhESMRIREzBCMD/ULAAsi5BRgG+u4FsAFQAAABAJEAAANCBXYABwAuALAGL7AARViwBC8bsQQYPlmwAEVYsAIvG7ECED5ZsAQQsgABCitYIdgb9FkwMQEhESMRIREzA0L+CboB+LkDofxfBDoBPAABALH+3wR8BbAAFQBbsgoWFxESOQCwCS+wAEVYsBQvG7EUHD5ZsABFWLASLxuxEhA+WbAUELIAAQorWCHYG/RZsgMUCRESObADL7AJELIKAQorWCHYG/RZsAMQshABCitYIdgb9FkwMQEhETMgABEQAiMnMjY1JiYjIxEjESEEMP1CsgEcATz15AKRkAHMzrXBA38FEv4v/s/+8P74/ueTw8vL1P1hBbAAAAEAkf7lA74EOgAWAFuyCxcYERI5ALAKL7AARViwFS8bsRUYPlmwAEVYsBMvG7ETED5ZsBUQsgABCitYIdgb9FmyAxUKERI5sAMvsAoQsgsBCitYIdgb9FmwAxCyEQEKK1gh2Bv0WTAxASERMzIAFRQGBgcnNjY1NCYjIxEjESEDPv4NbO8BGGKqdTCAeLKYcLoCrQOh/uT+/NdiyIYVkiGZeZGo/h0EOgAAAQCjAAAE/wWwABQAYgCwAEVYsAAvG7EAHD5ZsABFWLAMLxuxDBw+WbAARViwAi8bsQIQPlmwAEVYsAovG7EKED5ZsA/QsA8vsi8PAV2yzw8BXbIIAQorWCHYG/RZsgEIDxESObAF0LAPELAS0DAxCQIjASMVIzUjESMRMxEzETMRMwEE0v5wAb3x/qJQlGjBwWiUTQFDBbD9Tv0CAo709P1yBbD9fwEA/wACgQAAAQCaAAAEfwQ6ABQAewCwAEVYsA0vG7ENGD5ZsABFWLAULxuxFBg+WbAARViwCi8bsQoQPlmwAEVYsAMvG7EDED5ZsAoQsA7QsA4vsp8OAV2y/w4BXbKfDgFxtL8Ozw4CXbIvDgFdsm8OAXKyCQEKK1gh2Bv0WbIBCQ4REjmwBdCwDhCwEtAwMQkCIwEjFSM1IxEjETMRMzUzFTMBBFr+rgF36/7rMpRlurpllCoBAwQ6/f79yAHNwsL+MwQ6/jbV1QHKAAEARAAABosFsAAOAGsAsABFWLAGLxuxBhw+WbAARViwCi8bsQocPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbIIBgIREjmwCC+yLwgBXbLPCAFdsgEBCitYIdgb9FmwBhCyBAEKK1gh2Bv0WbIMAQgREjkwMQEjESMRITUhETMBMwEBIwOQsMH+JQKclgH87/3UAlbsAo79cgUYmP1+AoL9P/0RAAEAPgAABX0EOgAOAIAAsABFWLAGLxuxBhg+WbAARViwCi8bsQoYPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbACELAJ0LAJL7KfCQFdsv8JAV2ynwkBcbS/Cc8JAl2yLwkBXbJvCQFysgABCitYIdgb9FmwBhCyBAEKK1gh2Bv0WbIMAAkREjkwMQEjESMRITUhETMBMwEBIwMbiLr+ZQJVegFr4f5TAdHrAc3+MwOhmf42Acr9+P3OAAABAKgAAAeEBbAADQBeALAARViwAi8bsQIcPlmwAEVYsAwvG7EMHD5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmwAdCwAS+yLwEBXbACELIEAQorWCHYG/RZsAEQsggBCitYIdgb9FkwMQEhESEVIREjESERIxEzAWkC3gM9/YPA/SLBwQM+AnKY+ugCof1fBbAAAQCRAAAFaQQ6AA0AmwCwAEVYsAIvG7ECGD5ZsABFWLAMLxuxDBg+WbAARViwBi8bsQYQPlmwAEVYsAovG7EKED5ZsAYQsAHQsAEvsm8BAV20vwHPAQJdsj8BAXG0zwHfAQJxsg8BAXK0nwGvAQJxsv8BAV2yDwEBcbKfAQFdsi8BAV20bwF/AQJysAIQsgQBCitYIdgb9FmwARCyCAEKK1gh2Bv0WTAxASERIRUhESMRIREjETMBSwHxAi3+jLn+D7q6AmUB1Zn8XwHO/jIEOgAAAQCw/t8HzQWwABcAaLIRGBkREjkAsAcvsABFWLAWLxuxFhw+WbAARViwFC8bsRQQPlmwAEVYsBEvG7ERED5ZsgEWBxESObABL7AHELIIAQorWCHYG/RZsAEQsg4BCitYIdgb9FmwFhCyEgEKK1gh2Bv0WTAxATMgABEQAiMnMjY1JiYjIxEjESERIxEhBP92ARwBPPXkApGQAczOecH9MsAETwNB/s/+8P74/ueTw8vL1P1hBRL67gWwAAABAJH+5QawBDoAGABoshIZGhESOQCwCC+wAEVYsBcvG7EXGD5ZsABFWLAVLxuxFRA+WbAARViwEi8bsRIQPlmyARcIERI5sAEvsAgQsgkBCitYIdgb9FmwARCyDwEKK1gh2Bv0WbAXELITAQorWCHYG/RZMDEBMzIAFQcGBgcnNjY1NCYjIxEjESERIxEhA/ag+AEiAxTRmTB8e7ygpLn+DroDZQKF/vzXJqPhG5Igln2Sp/4dA6H8XwQ6AAIAcf/kBaIFxQAoADYAm7IYNzgREjmwGBCwKdAAsABFWLANLxuxDRw+WbAARViwHy8bsR8cPlmwAEVYsAQvG7EEED5ZsADQsAAvsgIEHxESObACL7ANELIOAQorWCHYG/RZsAQQshUBCitYIdgb9FmwAhCyLAEKK1gh2Bv0WbIXAiwREjmyJiwCERI5sAAQsigBCitYIdgb9FmwHxCyMwEKK1gh2Bv0WTAxBSInBiMiJAI1NTQSNjMXIgYVFRQSMzI3JgI1NTQ2NjMyEhUVFAIHFjMBFBYXNjY1NTQmIyIGFQWi17OOrLL+5J910oQBdpTsv0Y4eYRovXa25m9maHn9fXh1Ymh5Y2F6HElCsgFCxKyxASKjpf7Zpuz+1w1hARWq45r9jf7M/eue/vZfGgI0mO1KSOeN+bHO0rIAAAIAbf/rBJwETwAkAC8AorIEMDEREjmwBBCwJdAAsABFWLAMLxuxDBg+WbAARViwHC8bsRwYPlmwAEVYsAQvG7EEED5ZsABFWLAALxuxABA+WbICBBwREjmwAi+wDBCyDQEKK1gh2Bv0WbAEELIUAQorWCHYG/RZsAIQsicBCitYIdgb9FmyFhQnERI5sAAQsiQBCitYIdgb9FmyIickERI5sBwQsiwBCitYIdgb9FkwMQUiJwYjIiYCNTU0EjMVIgYVFRQWMzI3JhE1NDYzMhYVFRQHFjMBFBc2NzU0JiIGBwScsox2j4zhf8WbSV2piS4swa2PjLKAT2H+D59mA0l4RgEMOUKVARKnOs0BDp6tkjjB8AuiARFewOv5zmLjnRUBqdZ0c7p1gp6NegAAAQA0/qEGkwWwABMAWwCwES+wAEVYsAcvG7EHHD5ZsABFWLAMLxuxDBw+WbAARViwEy8bsRMQPlmwBxCyCAEKK1gh2Bv0WbAA0LAHELAF0LAD0LAC0LATELIKAQorWCHYG/RZsA7QMDEBITUhNTMVIRUhESERMxEzAyMRIQGr/okBd8EBgf5/As7BmBKs+9YFGJcBAZf7hQUT+vH+AAFfAAEAH/6/BRYEOgAPAEsAsA0vsABFWLADLxuxAxg+WbAARViwDy8bsQ8QPlmwAxCyBAEKK1gh2Bv0WbAA0LAPELIGAQorWCHYG/RZsAMQsAjQsAYQsArQMDEBITUhFSMRIREzETMDIxEhATH+7gLE+QHyuoASpfzSA6OXl/z0A6P8Xf4oAUEAAQCWAAAEyAWwABcAT7IEGBkREjkAsABFWLAALxuxABw+WbAARViwCi8bsQocPlmwAEVYsAwvG7EMED5ZsgcADBESObAHL7AE0LAHELIQAQorWCHYG/RZsBPQMDEBERYWMxEzETY3ETMRIxEGBxUjNSImJxEBVwGJoJV5eMHBcn+V+O8EBbD+MpqEATb+0g0hArb6UAJbIg3u6NnaAdcAAAEAgwAAA9kEOwAWAE+yBhcYERI5ALAARViwCy8bsQsYPlmwAEVYsBUvG7EVGD5ZsABFWLAALxuxABA+WbIPFQAREjmwDy+yBwEKK1gh2Bv0WbAE0LAPELAS0DAxISMRBgcVIzUmJicRMxEWFxEzETY3ETMD2bpGU5awuwK5Ba+WVEW6AYgTCYeFDcy1AUP+tdMaARj+6goRAhoAAAEAigAABLwFsAARAEayBRITERI5ALAARViwAS8bsQEcPlmwAEVYsAAvG7EAED5ZsABFWLAJLxuxCRA+WbIFAQAREjmwBS+yDgEKK1gh2Bv0WTAxMxEzETYzMhYXESMRJiYjIgcRisG5yvnyA8EBiaO7yAWw/aU12N/+LQHOmIY3/UsAAAIAP//qBb0FwwAdACUAZLIXJicREjmwFxCwJNAAsABFWLAPLxuxDxw+WbAARViwAC8bsQAQPlmyHw8AERI5sB8vshMBCitYIdgb9FmwBNCwHxCwC9CwABCyGAEKK1gh2Bv0WbAPELIjAQorWCHYG/RZMDEFIAARNSYmNTMUFhc0EjYzIAARFSEVFBYzMjcXBgYBITU0JiMiAgPp/uL+s5mmmFBXjv2WAQIBHPyC3syzpi9A0v3gAr6zq57CFgFRASlbE8WiWn0UtAEfov6j/r5sXdz3U48tNQNaIdnl/v0AAv/e/+wEYwROABkAIQByshQiIxESObAUELAb0ACwAEVYsA0vG7ENGD5ZsABFWLAALxuxABA+WbIeDQAREjmwHi+0vx7PHgJdshEBCitYIdgb9FmwA9CwHhCwCdCwABCyFQEKK1gh2Bv0WbIXDQAREjmwDRCyGgEKK1gh2Bv0WTAxBSIANSYmNTMUFz4CMzISERUhFhYzMjcXBgEiBgchNSYmAr3c/ux4d5NlFITIcNPq/SMEs4qub3GI/tlwmBICHgiIFAEh+h2uhpMwgslu/ur+/U2gxZJY0QPKo5MOjZsAAAEAo/7WBMwFsAAWAF2yFRcYERI5ALAOL7AARViwAi8bsQIcPlmwAEVYsAYvG7EGHD5ZsABFWLAALxuxABA+WbIEAAIREjmwBC+wCNCwDhCyDwEKK1gh2Bv0WbAEELIWAQorWCHYG/RZMDEhIxEzETMBMwEWABUQAiMnMjY1JiYnIQFkwcGFAgHi/fj4AQ355gKQkALHx/7sBbD9jwJx/YgW/tL6/vj+5JjBycrSAQAAAQCa/v4EGQQ6ABYAebINFxgREjkAsAcvsABFWLARLxuxERg+WbAARViwFS8bsRUYPlmwAEVYsA8vG7EPED5ZsBPQsBMvsp8TAV2y/xMBXbKfEwFxtL8TzxMCXbIvEwFdss8TAXGwANCwBxCyCAEKK1gh2Bv0WbATELIOAQorWCHYG/RZMDEBFhYVFAYGByc2NTQmJyMRIxEzETMBMwJ/w85krHAw+K2lsrq6WwGK4AJkH+K0XcV8E5I55oqSAv4zBDr+NgHKAAABALH+SwT+BbAAFQCnsgoWFxESOQCwAEVYsAAvG7EAHD5ZsABFWLADLxuxAxw+WbAARViwCC8bsQgSPlmwAEVYsBMvG7ETED5ZsALQsAIvsl8CAV2yzwIBXbIfAgFxtG8CfwICcbS/As8CAnG0DwIfAgJysu8CAXGynwIBcbJPAgFxsv8CAV2yrwIBXbIvAgFdsj8CAXKwCBCyDQEKK1gh2Bv0WbACELIRAQorWCHYG/RZMDEBESERMxEUBiMiJzcWMzI2NREhESMRAXICzMCrnDw2DiU9QUj9NMEFsP1uApL5/ai6EpoOZ1wC1f1/BbAAAAEAkf5LA/UEOgAWAJ+yChcYERI5ALAARViwAC8bsQAYPlmwAEVYsAMvG7EDGD5ZsABFWLAILxuxCBI+WbAARViwFC8bsRQQPlmwAtCwAi+ybwIBXbS/As8CAl2yPwIBcbTPAt8CAnGyDwIBcrSfAq8CAnGy/wIBXbIPAgFxsp8CAV2yLwIBXbRvAn8CAnKwCBCyDgEKK1gh2Bv0WbACELISAQorWCHYG/RZMDEBESERMxEUBiMiJzcWFxcyNjURIREjEQFLAfG5q5g8NA8RPBRCSP4PugQ6/isB1fttqrISkwcFAWhcAif+MgQ6AAACAF3/7AUSBcQAFwAfAF6yCCAhERI5sAgQsBjQALAARViwAC8bsQAcPlmwAEVYsAgvG7EIED5Zsg0ACBESObANL7AAELIRAQorWCHYG/RZsAgQshgBCitYIdgb9FmwDRCyGwEKK1gh2Bv0WTAxASAAERUUAgQjIAARNSE1EAIjIgcHJzc2ATISNyEVFBYCgAEuAWSc/uqn/uP+wQP09N2liz0vFp4BIaneD/zP0wXE/of+sVTF/r+2AVkBRXUHAQIBHDoajw1Y+sYBBdsi2uQAAQBo/+sELAWwABsAZ7ILHB0REjkAsABFWLACLxuxAhw+WbAARViwCy8bsQsQPlmwAhCyAAEKK1gh2Bv0WbAE0LIFAgsREjmwBS+wCxCwENCwCxCyEwEKK1gh2Bv0WbAFELIZAQorWCHYG/RZsAUQsBvQMDEBITUhFwEWFhUUBCMiJiY1MxQWMzI2NTQmIyM1Ax39dgNrAf5r2en+8+CG23bAnHuJo6aejQUSnn3+Hg7nxsPoab6CcpqSeJ2OlwAAAQBp/nUEKAQ6ABoAWrILGxwREjkAsAsvsABFWLACLxuxAhg+WbIAAQorWCHYG/RZsATQsgUCCxESObAFL7ALELAQ0LALELITAQorWCHYG/RZsAUQshgDCitYIdgb9FmwBRCwGtAwMQEhNSEXARYWFRQEIyImJjUzFBYzMjY1ECUjNQMM/YgDZQH+ctTo/vTehNd6up59jaT+yaADoZl2/hEQ4cXD52a/g3GflXkBIgiX//8AOv5LBHQFsAAmALBEAAAmAd6rQAAHAa8A8AAA//8AO/5LA5YEOgAmAOtPAAAmAd6sjgEHAa8A4QAAAAgAsgAGAV0wMQACAFcAAARlBbAACgATAFCyBBQVERI5sAQQsA3QALAARViwAS8bsQEcPlmwAEVYsAMvG7EDED5ZsgABAxESObAAL7ADELILAQorWCHYG/RZsAAQsgwBCitYIdgb9FkwMQERMxEhIiQ1NDY3AREhIgYVFBYXA6PC/d/k/vf/4AFt/qGMoZ+KA3MCPfpQ8svH6wT9KgI4loCCnwEAAgBZAAAGZwWwABcAHwBasgcgIRESObAHELAY0ACwAEVYsAgvG7EIHD5ZsABFWLAALxuxABA+WbIHCAAREjmwBy+wABCyGAEKK1gh2Bv0WbAK0LIQAAgREjmwBxCyGQEKK1gh2Bv0WTAxISIkNTQkNyERMxE3NjY3NiczFxYHBgYjJREhIgYUFhcCR+X+9wEB4wFqwVhvcgMEQLoWLwME5cP+7/6gjp6YhfTJxu0DAj366wECknuip0SXbsPonQI4l/6fBAAAAgBk/+cGbgYYAB8AKwCDshosLRESObAaELAq0ACwAEVYsAYvG7EGHj5ZsABFWLADLxuxAxg+WbAARViwGC8bsRgQPlmwAEVYsBwvG7EcED5ZsgUDGBESObAYELILAQorWCHYG/RZshEDGBESObIaAxgREjmwAxCyIgEKK1gh2Bv0WbAcELIoAQorWCHYG/RZMDETEBIzMhcRMxEGFjM2Njc2JzcWFgcOAiMGJwYjIgI1ASYjIgYVFBYzMjcnZOLEt2q5Al9OiZcEBEGzHCkCAnnZifJObNvA5ALHUqGHlJGIp1MFAgkBCAE9gwJN+0FfeALQvbrYAWbHZqn5hAS6tgEb9AExht/erb+TPgAAAQA2/+MF1QWwACcAY7IQKCkREjkAsABFWLAJLxuxCRw+WbAARViwIS8bsSEQPlmyASgJERI5sAEvsgABCitYIdgb9FmwCRCyBwEKK1gh2Bv0WbIPAAEREjmwIRCyFQEKK1gh2Bv0WbIaIQkREjkwMRM1MzY2NTQhITUhFhYVFAcWExUUFjM2Njc2JzMXFgcGAiMEAzU0Jif+m5+T/sv+oAFr7/zt2wVTQXSGBARBuhcwAwT2x/69D4d1AnmeAnuD+54B0cnoYkX+/FBPWwLOubvYWLuA/f7XCAFNQHiQAQABADH/4wToBDoAJwBgsg8oKRESOQCwAEVYsB8vG7EfGD5ZsABFWLAOLxuxDhA+WbICAQorWCHYG/RZsgcOHxESObIXKB8REjmwFy+yFAEKK1gh2Bv0WbAfELIdAQorWCHYG/RZsiUUFxESOTAxJQYzNjY3NiczFhYHBgYjBiYnNTQjIyczNjY1NCYjISchFhYVFAcWFwLnAl9wdgMEQrQtGAEE57iHiQfYzQLAem59df77BgEYxNy8tgTVWAKbiZmmhoA5zfADcINHnZYBV0pVXZYDp5idSjSyAAEAUv7XA/UFrwAhAF2yICIjERI5ALAXL7AARViwCS8bsQkcPlmwAEVYsBovG7EaED5ZsgEiCRESObABL7IAAQorWCHYG/RZsAkQsgcBCitYIdgb9FmyDwABERI5sBoQsRIKK1jYG9xZMDETNTM2NjUQISE1IRYWFRQHFhMVMxUUBgcnNjcjJic1NCYjr6mkm/7K/vEBIej05d4EqWFNalEOazwDkncCeZcBfYUBBZcD0sniZEb++KmUYchASHNuNKuPfo0AAAEAef7HA9kEOgAgAF2yICEiERI5ALAXL7AARViwCC8bsQgYPlmwAEVYsBovG7EaED5ZsgEhCBESObABL7IAAQorWCHYG/RZsAgQsgYBCitYIdgb9FmyDwABERI5sBoQsRIKK1jYG9xZMDETJzM2NTQjITUhFhcWFRQHFhcVMxUUBgcnNjcjJic1NCPCAdvp9f7pASfdbFa+vQGaYk1pVA1nMwLaAbiXAqGylgNnU4ShSTXKTJRhyj5IdH0hhV60AAEARP/rB3AFsAAjAGKyACQlERI5ALAARViwDi8bsQ4cPlmwAEVYsCAvG7EgED5ZsABFWLAHLxuxBxA+WbAOELIAAQorWCHYG/RZsAcQsggBCitYIdgb9FmwIBCyEwEKK1gh2Bv0WbIZDiAREjkwMQEhAwICBgcjNTc+AjcTIREUFjMyNjc2JzcWFgcGAgcHIiY1BCf+GhoPWayQPyhdZDQLHgNfWU+ClwQCP7ocKQID6cMus7cFEv2//t7+3IkCnQIHa+rzAsL7rGB0zbzA0gFmx2bs/toSArq0AAABAD//6wY6BDoAIQBisiAiIxESOQCwAEVYsAwvG7EMGD5ZsABFWLAeLxuxHhA+WbAARViwBi8bsQYQPlmwDBCyAAEKK1gh2Bv0WbAGELIHAQorWCHYG/RZsB4QshEBCitYIdgb9FmyFh4MERI5MDEBIQMCBgcjNTc2NjcTIREUFjMyNjc2JzMXFgcOAiMiJicDMf67FxScpUE2VU0NFwKvWk9sewQEQbMWMAMCbL54rrMBA6H+Wv7r5AKjBAqn0wIP/SFgebersstQsXya5nm4sQABAKn/5wdxBbAAHQCushQeHxESOQCwAEVYsAAvG7EAHD5ZsABFWLAZLxuxGRw+WbAARViwES8bsREQPlmwAEVYsBcvG7EXED5ZsBEQsgQBCitYIdgb9FmyCgARERI5sBcQsBzQsBwvsu8cAXGyXxwBXbLPHAFdsh8cAXG0bxx/HAJxtL8czxwCcbKfHAFxsk8cAXGy/xwBXbKvHAFdsi8cAV20DxwfHAJysj8cAXKyFQEKK1gh2Bv0WTAxAREUFjM2Njc2JzcWFgcOAiMGJicRIREjETMRIREE6V1KhpQEBEK7GysCAnvYiqu1CP1CwcECvgWw+6xlbwLNurfbAWLKZ6j7gwS4uwEn/X8FsP1uApIAAQCQ/+cGTQQ6ABwAo7IbHR4REjkAsABFWLAELxuxBBg+WbAARViwCC8bsQgYPlmwAEVYsBkvG7EZED5ZsABFWLACLxuxAhA+WbAH0LAHL7JvBwFdtL8HzwcCXbI/BwFxtM8H3wcCcbIPBwFytJ8HrwcCcbL/BwFdsg8HAXGynwcBXbIvBwFdtG8HfwcCcrIAAQorWCHYG/RZsBkQsg0BCitYIdgb9FmyEhkIERI5MDEBIREjETMRIREzERQWMzY2NzYnMxcWBwYCIwYmJwND/ga5uQH6uVxNbHwEBEGyFzADBOa7p7MIAc3+MwQ6/ioB1v0hZHUCtaus0VOxeer+8QS3uwABAHb/6wSgBcUAIgBHshUjJBESOQCwAEVYsAkvG7EJHD5ZsABFWLAALxuxABA+WbAJELIOAQorWCHYG/RZsAAQshYBCitYIdgb9FmyGwAJERI5MDEFIiQCJxE0EiQzMhcHJiMiAhUVFBYWMzY2NzYnMxcWBw4CArmk/viVApQBCqXchzuGoqzXYrBxjZYDAzW6JhMBAnveFZsBGK0BEK8BHp1YikT+/tL+g9V1ApmGms+zW1uIyW0AAQBl/+sDxwROAB4ARLITHyAREjkAsABFWLATLxuxExg+WbAARViwCy8bsQsQPlmyAAEKK1gh2Bv0WbIFCxMREjmwExCyGAEKK1gh2Bv0WTAxJTY2NzQnMxYHBgYjIgA1NTQ2NjMyFwcmIyIGFRUUFgJRYFoCFLIcAQTErdz+8HbWi7lgLGOKg5umggJQWXpyllaZqQEy9x6X+YxCkDrcsx+r2wABACP/5wVHBbAAGABNsgUZGhESOQCwAEVYsAIvG7ECHD5ZsABFWLAVLxuxFRA+WbACELIAAQorWCHYG/RZsATQsAXQsBUQsgkBCitYIdgb9FmyDgIVERI5MDEBITUhFSERFBYzNjYSJzcWFgcOAiMGJicB/v4lBID+HFxMhpQIQrobKwMCedmJqrcIBRKenvxIYHIC0AFu2wFiymep+YQEt7wAAAEARv/nBLcEOgAYAE2yFhkaERI5ALAARViwAi8bsQIYPlmwAEVYsBUvG7EVED5ZsAIQsgABCitYIdgb9FmwBNCwBdCwFRCyCQEKK1gh2Bv0WbIOFQIREjkwMQEhNSEVIREUFjM2Njc2JzMWFgcGBiMGJicBrP6aA4v+lV5NcXcDBECyKhsBBOi5qrMIA6SWlv21Y3QCnYmXrn2MPNDvBLm5AAEAlv/sBP8FxQApAG+yJCorERI5ALAARViwFi8bsRYcPlmwAEVYsAsvG7ELED5ZsgMBCitYIdgb9FmwCxCwBtCyJQsWERI5sCUvss8lAV2ynyUBcbImAQorWCHYG/RZshAmJRESObAWELAb0LAWELIeAQorWCHYG/RZMDEBFBYzMjY1MxQGBiMgJDU0JSYmNTQkITIWFhUjNCYjIgYVFBYXMxUjBgYBWM+wm8zBjf6d/vv+xAEUeIYBJQEGk/WMwcGSp8Kto8TEsbUBkniSmHSDvmflxf9WMKZlxNtlunVnj4h2dX0CngJ+AAIAbwRwAskF1gAFAA0AIwCwCy+wB9CwBy+wAdCwAS+wCxCwBNCwBC+wBdAZsAUvGDAxARMzFQMjATMVFhcHJjUBkXTE31n+3qgDUEmyBJQBQhX+wwFSW3tVO1+7AP//ACUCHwINArYABgARAAD//wAlAh8CDQK2AAYAEQAA//8AogKLBI0DIgBGAZfZAEzNQAD//wCQAosFyQMiAEYBl4QAZmZAAP//AA3+bAOhAAAAJwBDAAn/AwEGAEMJAAAUAEAJAwITAiMCMwIEXbKwAgFdMDEAAQBgBDEBeAYTAAgAIbIICQoREjkAsABFWLAALxuxAB4+WbIFCQAREjmwBS8wMQEXBgcVIzU0NgEOal0DuGEGE0h/k4h0ZsgAAQAwBBYBRwYAAAgAIbIICQoREjkAsABFWLAELxuxBB4+WbIACQQREjmwAC8wMRMnNjc1MxUGBplpXQO3AWEEFkiCkJCCZMcAAQAk/uUBOwC1AAgAHrIICQoREjkAsAkvsgQFCitYIdgb9FmwANCwAC8wMRMnNjc1MxUUBo1pWwO5Y/7lSX+SdmRlygABAE8EFgFnBgAACAAMALAIL7AE0LAELzAxARUWFwcmJic1AQYEXWpNXwIGAJOQf0hAwmGHAP//AGgEMQK7BhMAJgFsCAAABwFsAUMAAP//ADwEFgKGBgAAJgFtDAAABwFtAT8AAAACACT+0wJkAPYACAARADCyChITERI5sAoQsAXQALASL7IEBQorWCHYG/RZsADQsAAvsAnQsAkvsAQQsA3QMDETJzY3NTMVFAYXJzY3NTMVFAaNaVsDuWPdaVsDumH+00iJmbmkbNNASImZuaRr0QAAAQBGAAAEJAWwAAsASwCwAEVYsAgvG7EIHD5ZsABFWLAGLxuxBhg+WbAARViwCi8bsQoYPlmwAEVYsAIvG7ECED5ZsAoQsgABCitYIdgb9FmwBNCwBdAwMQEhESMRITUhETMRIQQk/my6/nABkLoBlAOh/F8DoZkBdv6KAAEAV/5gBDQFsAATAHwAsABFWLAMLxuxDBw+WbAARViwCi8bsQoYPlmwAEVYsA4vG7EOGD5ZsABFWLACLxuxAhI+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsgYBCitYIdgb9FmwDhCyCAEKK1gh2Bv0WbAJ0LAQ0LAR0LAGELAS0LAT0DAxISERIxEhNSERITUhETMRIRUhESEENP5quv5zAY3+cwGNugGW/moBlv5gAaCXAwqZAXb+ipn89gAAAQCKAhcCIgPLAA0AFrIKDg8REjkAsAMvsQoKK1jYG9xZMDETNDYzMhYVFRQGIyImNYpvXFtybl5dbwMEV3BtXSVXbm9Y//8AlP/1Ay8A0QAmABIEAAAHABIBuQAA//8AlP/1BM4A0QAmABIEAAAnABIBuQAAAAcAEgNYAAAAAQAmAh4AzwK3AAMADwCwAi+xAQorWNgb3FkwMRMjNTPPqakCHpkAAAYARP/rB1cFxQAVACMAJwA1AEMAUQC4sgJSUxESObACELAb0LACELAm0LACELAo0LACELA20LACELBJ0ACwAEVYsBkvG7EZHD5ZsABFWLASLxuxEhA+WbAD0LADL7AH0LAHL7ASELAO0LAOL7AZELAg0LAgL7IkEhkREjmwJC+yJhkSERI5sCYvsBIQsisECitYIdgb9FmwAxCyMgQKK1gh2Bv0WbArELA50LAyELBA0LAgELJHBAorWCHYG/RZsBkQsk4ECitYIdgb9FkwMQE0NjMyFzYzMhYVFRQGIyInBiMiJjUBNDYzMhYVFRQGIyImNQEnARcDFBYzMjY1NTQmIyIGFQUUFjMyNjU1NCYjIgYVARQWMzI2NTU0JiMiBhUDN6eDmE1Pl4Oop4KZT0yXgqr9DaeDhKelhIKqAWloAsdos1hKSFZXSUdZActYSUhWV0lIV/tCWEpHV1ZKSFgBZYOpeXmoi0eDqXh4p4sDe4OqqohIgaqni/wcQgRyQvw3T2VjVUpPZGNUSk9lZlJKT2RkUwLqTmViVUlOZmVTAAABAGwAmQIgA7UABgAQALAFL7ICBwUREjmwAi8wMQEBIwE1ATMBHgECjf7ZASeNAib+cwGEEwGFAAEAWQCYAg4DtQAGABAAsAAvsgMHABESObADLzAxEwEVASMBAecBJ/7ZjgEC/v4Dtf57E/57AY4BjwABADsAbgNqBSIAAwAJALAAL7ACLzAxNycBF6NoAsdobkIEckIA//8ANgKQArsFpQMHAdgAAAKQABMAsABFWLAJLxuxCRw+WbAN0DAxAAABAHoCiwL4BboADwBTsgoQERESOQCwAEVYsAAvG7EAHD5ZsABFWLADLxuxAxw+WbAARViwDS8bsQ0UPlmwAEVYsAYvG7EGFD5ZsgENAxESObADELIKAworWCHYG/RZMDETFzYzIBERIxEmIyIHESMR+h5KkgEEqgONbiyqBat7iv7G/gsB5rlt/c4DIAAAAQBbAAAEaAXEACkAlrIhKisREjkAsABFWLAZLxuxGRw+WbAARViwBi8bsQYQPlmyKRkGERI5sCkvsgACCitYIdgb9FmwBhCyBAEKK1gh2Bv0WbAI0LAJ0LAAELAO0LApELAQ0LApELAV0LAVL7YPFR8VLxUDXbISAgorWCHYG/RZsBkQsB3QsBkQsiABCitYIdgb9FmwFRCwJNCwEhCwJtAwMQEhFxQHIQchNTM2Njc1JyM1MycjNTMnNDYzMhYVIzQmIyIGFRchFSEXIQMV/rEDPgLdAfv4TSgyAgOqpgSinQb1yL7ev39vaYIGAVz+qQQBUwHWRJpbnZ0Jg2AIRX2IfbfH7tSxa3yafbd9iAAFAB8AAAY2BbAAGwAfACMAJgApALEAsABFWLAXLxuxFxw+WbAARViwGi8bsRocPlmwAEVYsAwvG7EMED5ZsABFWLAJLxuxCRA+WbIQDBcREjmwEC+wFNCwFC+0DxQfFAJdsCTQsCQvsBjQsBgvsADQsAAvsBQQshMBCitYIdgb9FmwH9CwI9CwA9CwEBCwHNCwHC+wINCwIC+wBNCwBC+wEBCyDwEKK1gh2Bv0WbAL0LAp0LAH0LImFwwREjmyJwkaERI5MDEBMxUjFTMVIxEjASERIxEjNTM1IzUzETMBIREzASEnIwUzNSElMycBNSMFV9/f39/C/sH+YsDZ2dnZwAFRAY+//GEBO2HaAhTM/tT+THd3AuBoA6yYlJj+GAHo/hgB6JiUmAIE/fwCBPzQlJSUmLb8558AAAIAp//sBgMFsAAfACgAorIjKSoREjmwIxCwEdAAsABFWLAWLxuxFhw+WbAARViwGi8bsRoYPlmwAEVYsB4vG7EeGD5ZsABFWLAKLxuxChA+WbAARViwFC8bsRQQPlmwHhCyAAEKK1gh2Bv0WbAKELIFAQorWCHYG/RZsAAQsA7QsA/QsiEUFhESObAhL7ISAQorWCHYG/RZsB4QsB3QsB0vsBYQsicBCitYIdgb9FkwMQEjERQWMzI3FwYjIiY1ESMGBgcjESMRITIWFzMRMxEzATMyNjU0JicjBf7KNkEjNAFJRnx+jxTnx8m5AXnK7RSPusr7YsCLi4eEywOr/WFBQQyWFJaKAp+3vQL9ywWwwLYBBv76/pKNl5iOAv//AKj/7AgQBbAAJgA2AAAABwBXBFUAAAAHADkAAAcpBbAAHwAjACcAKwAwADUAOgC3ALAARViwHi8bsR4cPlmwAEVYsBsvG7EbHD5ZsABFWLACLxuxAhw+WbAARViwDS8bsQ0QPlmwAEVYsBAvG7EQED5ZshQQGxESObAUL7AY0LAYL7Ac0LA20LAA0LAE0LAYELIXAQorWCHYG/RZsCfQsCPQsCvQsAfQsBQQsCTQsCDQsCjQsAjQsBQQshMBCitYIdgb9FmwMtCwD9CwLdCwC9CyNBAeERI5sDQQsC/QsjkeEBESOTAxASETMwMzFSMHMxUhAyMDIQMjAyE1MycjNTMDMxMhEzMDIScjBTM3IQUzNyETIxcXNyUjFxc3ATMnJwcEhwFTbMFzlbov6f7ydK+I/oSNr3X+9uUvtpFzwG4BVoih4wEkN7T+eqU3/vgDP6Us/vm5WQwpH/zpVwYdKAFEXRcXFwPUAdz+JJjCmP4eAeL+HgHimMKYAdz+JAHc/MrCwsLCwv6mKrLGFhfArQIcUW9vAAACAIwAAAWeBDoADQAbAGQAsABFWLAWLxuxFhg+WbAARViwAC8bsQAYPlmwAEVYsAsvG7ELED5ZsABFWLAOLxuxDhA+WbIRAQorWCHYG/RZsgURABESObAFL7AAELIKAQorWCHYG/RZsg8KCxESObAPLzAxATIWFxEjETQmJyERIxEBETMRITI2NxEzEQYGBwK6r6gEuWVv/r25AYm5AT5xZwG5AqWtBDrBv/6jAUx/eAH8XwQ6+8YC3f27dX4Cr/1OwsQCAAABAF//7AQcBcQAIwCHshUkJRESOQCwAEVYsBYvG7EWHD5ZsABFWLAJLxuxCRA+WbIjCRYREjmwIy+yAAIKK1gh2Bv0WbAJELIEAQorWCHYG/RZsAAQsAzQsCMQsA/QsCMQsB/QsB8vtg8fHx8vHwNdsiACCitYIdgb9FmwENCwHxCwE9CwFhCyGwEKK1gh2Bv0WTAxASEWFjMyNxcGIyIAAyM1MzUjNTMSADMyFwcmIyIGByEVIRUhA1H+gAS0pXRmFHh4+P7jBrKysrIKAR3zaocUbW6ksQYBf/6AAYACHcPSIqAeASUBDHyJfQEGAR8foiPLvH2JAAQAHwAABbwFsAAZAB4AIwAoALgAsABFWLALLxuxCxw+WbAARViwAS8bsQEQPlmwCxCyKAEKK1gh2Bv0WbIkKAEREjmwJC+ycCQBcbYAJBAkICQDXbIcAQorWCHYG/RZsB3QsB0vsnAdAXG2AB0QHSAdA12yIAEKK1gh2Bv0WbAh0LAhL7JwIQFxsiAhAV2yAAEKK1gh2Bv0WbAgELAD0LAdELAG0LAGL7AcELAH0LAkELAK0LAkELAP0LAcELAS0LAdELAU0LAULzAxAREjESM1MzUjNTM1ITIWFzMVIxcHMxUjBiEBJyEVIQchFSEyASEmIyEBpcDGxsbGAhmx6zbswwMCwuVr/owBRAT9bQKVP/2qAVms/fsCSlSe/qgCOv3GAzCXXpf0hHCXMiyX9gG3NF6XWQHlVgAAAQAqAAAD+AWwABoAZgCwAEVYsBkvG7EZHD5ZsABFWLAMLxuxDBA+WbAZELIYAQorWCHYG/RZsAHQsBgQsBTQsBQvsAPQsBQQshMBCitYIdgb9FmwBtCwExCwDtCwDi+yCQEKK1gh2Bv0WbINCQ4REjkwMQEjFhczByMGBiMBFSMBJzM2NjchNyEmJyE3IQPK7EARyS6YEvbbAe3j/e4B+X2cFf29LgITMPb+5y8DnQUSUXWesrT9xAwCaX0Ba1yevgieAAEAIP/uBBoFsAAeAI0AsABFWLARLxuxERw+WbAARViwBS8bsQUQPlmyExEFERI5sBMvsBfQsBcvsgAXAV2yGAEKK1gh2Bv0WbAZ0LAI0LAJ0LAXELAW0LAL0LAK0LATELIUAQorWCHYG/RZsBXQsAzQsA3QsBMQsBLQsA/QsA7QsAUQshoBCitYIdgb9FmyHgURERI5sB4vMDEBFQYCBCMiJxEHNTc1BzU3ETMRNxUHFTcVBxE2EhE1BBoCkP73r1Bs9PT09MD7+/v7vskDA2TS/semEgJab7JvmW+ybwFZ/v9zsnOZc7Jz/d4CARABCVgAAQBdAAAE6wQ6ABcAXLIAGBkREjkAsABFWLAWLxuxFhg+WbAARViwBC8bsQQQPlmwAEVYsAovG7EKED5ZsABFWLAQLxuxEBA+WbIAChYREjmwAC+yCQEKK1gh2Bv0WbAM0LAAELAV0DAxARYAERUjNSYCJxEjEQYCBxUjNRIANzUzAv/nAQW5Ap6TuY+fArkDAQffuQNxIf6N/tq3yN8BBSD9NALKIf712MbFAR0BbSLJAAIAHwAABQMFsAAWAB8AbQCwAEVYsAwvG7EMHD5ZsABFWLADLxuxAxA+WbIGAwwREjmwBi+yBQEKK1gh2Bv0WbAB0LAGELAK0LAKL7QPCh8KAl2yCQEKK1gh2Bv0WbAU0LAGELAV0LAKELAX0LAMELIfAQorWCHYG/RZMDEBIREjESM1MzUjNTMRITIEFRQEByEVIQEhMjY1NCYnIQL8/rG/z8/PzwIZ6gES/vny/qMBT/6xAVqboqiP/qABE/7tAROeiZ0C2e7L1ecBiQEmkox/nQEABAB6/+sFgwXFABsAJwA1ADkAt7IcOjsREjmwHBCwANCwHBCwKNCwHBCwONAAsABFWLAKLxuxChw+WbAARViwJS8bsSUQPlmwChCwA9CwAy+yDgoDERI5tioOOg5KDgNdsAoQshEECitYIdgb9FmwAxCyGAQKK1gh2Bv0WbIbAwoREjm0NhtGGwJdsiUbAV2wJRCwH9CwHy+wJRCyKwQKK1gh2Bv0WbAfELIyBAorWCHYG/RZsjYlChESObA2L7I4CiUREjmwOC8wMQEUBiMiJjU1NDYzMhYVIzQmIyIGFRUUFjMyNjUBNDYgFhUVFAYgJjUXFBYzMjY1NTQmIyIGFQUnARcCqJh7eqGee3mciklCQU1PQT1MARCnAQaop/78qopYSkhWV0lHWf4GaQLHaQQebpCoiUeCq5FvOk1mUklOZUw6/UeDqaiLR4Opp4sGT2VjVUpPZGNU80IEckIAAAIAaP/rA2oGEwAXACEAZLITIiMREjmwExCwGNAAsABFWLAMLxuxDB4+WbAARViwAC8bsQAQPlmyBgwAERI5sAYvsgUBCitYIdgb9FmwE9CwABCyFwEKK1gh2Bv0WbAGELAY0LAMELIfAQorWCHYG/RZMDEFIiY1BiM1MjcRNjYzMhYVFRQCBxUUFjMDNjY1NTQmIyIHAszC0mJucV8BnYV4l86ra3DbWWcwJmcDFerrHLAjAiSyxq2TJcH+j2timo0CY1X1eydSTNEAAAQAogAAB8YFwAADABAAHgAoAKOyHykqERI5sB8QsAHQsB8QsATQsB8QsBHQALAARViwJy8bsSccPlmwAEVYsCUvG7ElHD5ZsABFWLAHLxuxBxw+WbAARViwIi8bsSIQPlmwAEVYsCAvG7EgED5ZsAcQsA3QsALQsAIvshACAV2yAQMKK1gh2Bv0WbANELIUAworWCHYG/RZsAcQshsDCitYIdgb9FmyISUgERI5siYgJRESOTAxASE1IQE0NiAWFRUUBiMiJjUXFBYzMjY3NTQmIyIGFQEjAREjETMBETMHpP2ZAmf9dboBOLu5nJ66o19WVF0BX1VUX/68zP2vucsCVLcBnI4CPZu+u6Ndnbq7oQVia2pgZWFra2P7mwRu+5IFsPuPBHEAAgBnA5cEOAWwAAwAFABtALAARViwBi8bsQYcPlmwAEVYsAkvG7EJHD5ZsABFWLATLxuxExw+WbIBFQYREjmwAS+yAAkBERI5sgMBBhESObAE0LIIAQkREjmwARCwC9CwBhCxDQorWNgb3FmwARCwD9CwDRCwEdCwEtAwMQEDIwMRIxEzExMzESMBIxEjESM1IQPejDSMWnCQkHBa/guTW5QBggUh/nYBif53Ahn+cQGP/ecByP44AchRAAACAJj/7ASTBE4AFQAcAGKyAh0eERI5sAIQsBbQALAARViwCi8bsQoYPlmwAEVYsAIvG7ECED5ZshoKAhESObAaL7IPCgorWCHYG/RZsAIQshMKCitYIdgb9FmyFQoCERI5sAoQshYKCitYIdgb9FkwMSUGIyImAjU0EjYzMhYWFxUhERYzMjcBIgcRIREmBBa3u5H0h5D4hIXjhAP9AHeaxKz+kJd6AhxzXnKdAQGTjwEDn4vzkD7+uG56Ayp6/usBHnH//wBU//UFswWbACcB1f/aAoYAJwF8AOYAAAAHAdwDFAAA//8AZP/1BlMFtAAnAdcAJgKUACcBfAGlAAAABwHcA7QAAP//AGP/9QZJBaQAJwHZAAgCjwAnAXwBgwAAAAcB3AOqAAD//wBZ//UF/QWkACcB2wAfAo8AJwF8ASAAAAAHAdwDXgAAAAIAav/rBDIF7AAbACoAW7IVKywREjmwFRCwI9AAsA0vsABFWLAVLxuxFRA+WbIADRUREjmwAC+yAwAVERI5sA0QsgcBCitYIdgb9FmwABCyHAEKK1gh2Bv0WbAVELIjAQorWCHYG/RZMDEBMhYXLgIjIgcnNzYzIAARFRQCBiMiADU1NAAXIgYVFRQWMzI2NTUnJiYCPF2mOg5ppmCBmxAxdJcBBwEfeN6Q2v74AQDkjJ+fio6fBBygA/5NRIzZeTuXFTD+Tv5uMrz+1qUBI/YO3AEQmLugEKrP+ds9D1pqAAABAKn/KwTlBbAABwAnALAEL7AARViwBi8bsQYcPlmwBBCwAdCwBhCyAgEKK1gh2Bv0WTAxBSMRIREjESEE5bn9NrkEPNUF7foTBoUAAQBF/vMEqwWwAAwANQCwAy+wAEVYsAgvG7EIHD5ZsAMQsgIBCitYIdgb9FmwBdCwCBCyCgEKK1gh2Bv0WbAH0DAxAQEhFSE1AQE1IRUhAQNr/bsDhfuaAmH9nwQZ/McCRgJB/UqYjwLMAtKQmP1CAAEAqAKLA+sDIgADABsAsABFWLACLxuxAhY+WbIBAQorWCHYG/RZMDEBITUhA+v8vQNDAouXAAEAPwAABJgFsAAIADyyAwkKERI5ALAHL7AARViwAS8bsQEcPlmwAEVYsAMvG7EDED5ZsgABAxESObAHELIGAQorWCHYG/RZMDEBATMBIwMjNSECMAGrvf3ijfW5ATsBHASU+lACdJoAAwBi/+sHywROABwALAA8AG+yBz0+ERI5sAcQsCTQsAcQsDTQALAARViwBC8bsQQQPlmwAEVYsAovG7EKED5ZsBPQsBMvsBnQsBkvsgcZBBESObIWGQQREjmwChCyIAEKK1gh2Bv0WbATELIpAQorWCHYG/RZsDDQsCAQsDnQMDEBFAIGIyImJwYGIyImAjU1NBI2MzIWFzY2MzIAFQUUFjMyNjc3NS4CIyIGFSU0JiMiBgcHFR4CMzI2NQfLft+Jke5QUeyQid6Aft+Ike1RUO+SzgEW+VCmiHK5NAsYcpJQhqYF96aFc7w1CRZ1kFCIpQIPk/8Akbixs7aPAQCXGJMBAJK3s7G5/sHzDbHcvKMnKmPAYdy5CK7fvagfKmHFYN64AAH/sP5LAo4GFQAVAD2yAhYXERI5ALAARViwDi8bsQ4ePlmwAEVYsAMvG7EDEj5ZsggBCitYIdgb9FmwDhCyEwEKK1gh2Bv0WTAxBRQGIyInNxYzMjURNDYzMhcHJiMiFQFlpJ45OhIuIZuxoTxUGCU2tmuiqBSRDbEFGaq+FY4L2wACAGUBGAQLA/QAFQArAI2yHCwtERI5sBwQsAXQALADL7IPAwFdsA3QsA0vsgANAV2yCAEKK1gh2Bv0WbADELAK0LAKL7ADELISAQorWCHYG/RZsA0QsBXQsBUvsA0QsBnQsBkvsCPQsCMvsgAjAV2yHgEKK1gh2Bv0WbAZELAg0LAgL7AZELIoAQorWCHYG/RZsCMQsCvQsCsvMDETNjYzNhcXFjMyNxUGIyInJyYHIgYHBzY2MzYXFxYzMjcXBiMiJycmByIGB2Ywg0JSSphCToZmZ4VOQqFET0KDMAEwgkJSSpVEUIVmAWeFTkKYSlJCgzADhTM6AiNOH4C+bR9THwJEPOUzOwIjTSGAvW0fTiMCRDwAAAEAmACbA9oE1QATADcAsBMvsgABCitYIdgb9FmwBNCwExCwB9CwExCwD9CwDy+yEAEKK1gh2Bv0WbAI0LAPELAL0DAxASEHJzcjNSE3ITUhExcHMxUhByED2v3tjl9srgELlf5gAf6ZX3fD/t+UAbUBj/Q7uaD/oQEGO8uh/wD//wA+AAIDgQQ+AGYAIABhQAA5mgEHAZf/lv13AB0AsABFWLAFLxuxBRg+WbAARViwCC8bsQgQPlkwMQD//wCFAAED3ARRAGYAIgBzQAA5mgEHAZf/3f12AB0AsABFWLACLxuxAhg+WbAARViwCC8bsQgQPlkwMQAAAgArAAAD3AWwAAUACQA4sggKCxESObAIELAB0ACwAEVYsAAvG7EAHD5ZsABFWLADLxuxAxA+WbIGAAMREjmyCAADERI5MDEBMwEBIwkEAbyMAZT+cI3+bAHW/ukBHAEYBbD9J/0pAtcCD/3x/fICDgD//wC1AKcBmwT1ACcAEgAlALIABwASACUEJAACAG4CeQIzBDoAAwAHACwAsABFWLACLxuxAhg+WbAARViwBi8bsQYYPlmwAhCwANCwAC+wBNCwBdAwMRMjETMBIxEz+42NATiNjQJ5AcH+PwHBAAABAFz/XwFXAO8ACAAgsggJChESOQCwCS+wBNCwBC+0QARQBAJdsADQsAAvMDEXJzY3NTMVFAbFaUgCsU+hSG1/XExbswD//wA8AAAE9gYVACYASgAAAAcASgIsAAAAAgAfAAADzQYVABUAGQCDsggaGxESObAIELAX0ACwAEVYsAgvG7EIHj5ZsABFWLADLxuxAxg+WbAARViwES8bsREYPlmwAEVYsBgvG7EYGD5ZsABFWLAALxuxABA+WbAARViwFi8bsRYQPlmwAxCyAQEKK1gh2Bv0WbAIELINAQorWCHYG/RZsAEQsBPQsBTQMDEzESM1MzU0NjMyFwcmIyIGFRUzFSMRISMRM8qrq8+9cKsffXF3ad3dAkm6ugOrj1y1yj2cMmtrXo/8VQQ6AAEAPAAAA+kGFQAWAFwAsABFWLASLxuxEh4+WbAARViwBi8bsQYYPlmwAEVYsAkvG7EJED5ZsABFWLAWLxuxFhA+WbASELICAQorWCHYG/RZsAYQsgcBCitYIdgb9FmwC9CwBhCwDtAwMQEmIyIVFTMVIxEjESM1MzU2NjMyBREjAzB8TMjn57mrqwHAsWUBK7kFYxTSa4/8VQOrj3atuD36KAAAAgA8AAAGMgYVACcAKwCdALAARViwFi8bsRYePlmwAEVYsAgvG7EIHj5ZsABFWLAgLxuxIBg+WbAARViwEi8bsRIYPlmwAEVYsAQvG7EEGD5ZsABFWLAqLxuxKhg+WbAARViwKS8bsSkQPlmwAEVYsCMvG7EjED5ZsABFWLAnLxuxJxA+WbAgELIhAQorWCHYG/RZsCXQsAHQsAgQsg0BCitYIdgb9FmwG9AwMTMRIzUzNTQ2MzIXByYjIgYVFSE1NDYzMhcHJiMiBhUVMxUjESMRIREhIxEz56uruqpAPwovNVpiAZDPvXCrH31yd2ne3rn+cASSubkDq49vrr4RlglpYnJctco9nDJqbF6P/FUDq/xVBDoAAAEAPAAABjIGFQAoAGoAsABFWLAILxuxCB4+WbAARViwIS8bsSEYPlmwAEVYsCgvG7EoED5ZsCEQsiIBCitYIdgb9FmwJtCwAdCwIRCwEtCwBNCwCBCyDQEKK1gh2Bv0WbAIELAW0LAoELAl0LAa0LANELAd0DAxMxEjNTM1NDYzMhcHJiMiBhUVITU2NjMyBREjESYjIhUVMxUjESMRIRHnq6u6qkA/Ci81WmIBkAHAsWUBK7l8TMjn57n+cAOrj2+uvhGWCWlicnatuD36KAVjFNJrj/xVA6v8VQABADz/7ASbBhUAJgBzALAARViwIS8bsSEePlmwAEVYsB0vG7EdGD5ZsABFWLAYLxuxGBA+WbAARViwCi8bsQoQPlmwHRCwENCwJdCyAQEKK1gh2Bv0WbAKELIFAQorWCHYG/RZsAEQsA7QsCEQshUBCitYIdgb9FmwDhCwGtAwMQEjERQWMzI3FwYjIiY1ESM1MxEmJyciFREjESM1MzU0NjMyFhcRMwSWyjZBIzQBSUZ8fsXFPWYYt7mrq7OgXdtaygOr/WFBQQyWFJaKAp+PAR8cBwHd+2ADq49wrb45LP6KAAABAF//7AZUBhEATAC5shZNThESOQCwAEVYsEcvG7FHHj5ZsABFWLAPLxuxDxg+WbAARViwSy8bsUsYPlmwAEVYsEAvG7FAGD5ZsABFWLAJLxuxCRA+WbAARViwLC8bsSwQPlmwSxCyAQEKK1gh2Bv0WbAJELIEAQorWCHYG/RZsAEQsA3QsEcQshQBCitYIdgb9FmwQBCyIAEKK1gh2Bv0WbI6LEAREjmwOhCyJQEKK1gh2Bv0WbAsELI0AQorWCHYG/RZMDEBIxEUMzI3FwYjIiY1ESM1MzU0JiMiBhUUHgIVIzQmIyIGFRQWBBYWFRQGIyImJjUzFhYzMjY1NCYkJiY1NDYzMhcmNTQ2MzIWFRUzBk/KdyM0AU1CdoS8vGZiWFwfJR66gWJlcmoBFaxT6LmCyHG5BYtyaX9x/uelT+GvYFYsypu5ycoDq/1+nwyWFKaXAoKPVXJ1WEY7aXB8TExuWEdDRD5WeVeRr1ylYF1tVUdLUzxUdFCFuB5uUnylx8NNAAAWAFv+cgfuBa4ADQAaACgANwA9AEMASQBPAFYAWgBeAGIAZgBqAG4AdgB6AH4AggCGAIoAjgG+shCPkBESObAQELAA0LAQELAb0LAQELAw0LAQELA80LAQELA+0LAQELBG0LAQELBK0LAQELBQ0LAQELBX0LAQELBb0LAQELBh0LAQELBj0LAQELBn0LAQELBt0LAQELBw0LAQELB30LAQELB70LAQELB/0LAQELCE0LAQELCI0LAQELCM0ACwPS+wAEVYsEYvG7FGHD5Zsn5JAyuyensDK7KCdwMrsn86AyuyCj1GERI5sAovsAPQsAMvsA7QsA4vsAoQsA/QsA8vslAODxESObBQL7JvBworWCHYG/RZshVQbxESObAKELIeBworWCHYG/RZsAMQsiUHCitYIdgb9FmwDxCwKdCwKS+wDhCwLtCwLi+yNAcKK1gh2Bv0WbA9ELI8CgorWCHYG/RZsD0QsGvQsGfQsGPQsD7QsDwQsGzQsGjQsGTQsD/QsDoQsEHQsEYQsGDQsFzQsFjQsEvQskoKCitYIdgb9FmwWtCwXtCwYtCwR9CwSRCwTtCwDhCyUQcKK1gh2Bv0WbAPELJ2BworWCHYG/RZsHcQsITQsHoQsIXQsHsQsIjQsH4QsInQsH8QsIzQsIIQsI3QMDEBFAYjIiYnNTQ2MzIWFxMRMzIWFRQHFhYVFCMBNCYjIgYVFRQWMzI2NQEzERQGIyImNTMUMzI2NQERMxUzFSE1MzUzEQERIRUjFSU1IREjNQEVMzI1NCcTNSEVITUhFSE1IRUBNSEVITUhFSE1IRUTMzI1NCYjIwEjNTM1IzUzESM1MyUjNTM1IzUzESM1MwM5gWRmgAJ+aGWAAkO8YnJUMjTQ/o9KQUBKSkJASQO6XGlSWG1daCk2+cRxxAUox2/4bQE1xAXsATZv/Fx+Z2LLARb9WwEV/VwBFAIKARb9WwEV/VwBFLxddjo8XfzxcXFxcXFxByJvb29vb28B1GJ5eF51X3x4Xv6zAiVJTVQgDUYtmwFIRU5ORXBFTk5FAU/+hk5dUVNbNiz8yQE7ynFxyv7FBh8BHXSpqXT+46n8tqlTUgQDSnR0dHR0dPk4cXFxcXFxA8RQKR7+0/x++vwV+X78fvr8FfkABQBc/dUH1whzAAMAHAAgACQAKABSsxEPEAQrswQPHAQrswoPFwQrsAQQsB3QsBwQsB7QALAhL7AlL7IcHgMrsCUQsADQsAAvsCEQsALQsAIvsg0AAhESObANL7IfHgIREjmwHy8wMQkDBTQ2NzY2NTQmIyIGBzM2NjMyFhUUBwYGFRcjFTMDMxUjAzMVIwQYA7/8QfxEBA8eJEpcp5WQoALLAjorOThdWy/KyspLBAQCBAQGUvwx/DEDz/E6Ohgnh0qAl4t/MzRANF88QVxMW6r9TAQKngQAAQA7AAAD0gWwAAYAMgCwAEVYsAUvG7EFHD5ZsABFWLABLxuxARA+WbAFELIDAQorWCHYG/RZsgADBRESOTAxAQEjASE1IQPS/b66AkD9JQOXBUj6uAUYmAAAAgBa/+wERAROABAAHAA2ALAARViwBC8bsQQYPlmwAEVYsAwvG7EMED5ZshQBCitYIdgb9FmwBBCyGgEKK1gh2Bv0WTAxEzQ2NjMyABUVFAYGIyImJic3FBYzMjY1NCYjIgZagOOQ3QEafuWSj+OBArmvjY6usY2LrwInnP+M/sz7Dp38jIj5mgqw3uDEr+DeAAAB/7b+SwFnAJgADAAnALANL7AARViwBC8bsQQSPlmyCQEKK1gh2Bv0WbANELAM0LAMLzAxJRUGBiMiJzcWMzI1NQFnAaqXOzQOHkOJmPWosBKdDcLpAAEAZ/6ZASEAmQADABIAsAQvsALQsAIvsAHQsAEvMDEBIxEzASG6uv6ZAgAAAgCDBNkC0gbQAA0AIQB7ALADL7AH0LAHL0ANDwcfBy8HPwdPB18HBl2wAxCyCgQKK1gh2Bv0WbAHELAN0LANL7AHELAR0LARL7AU0LAUL0ALDxQfFC8UPxRPFAVdsBEQsBfQsBcvsBQQshsECitYIdgb9FmwERCyHgQKK1gh2Bv0WbAbELAh0DAxARQGIyImNTMUFjMyNjUTFAYjIiYjIgYVJzQ2MzIWMzI2NQLSoYaHoZZKSEdKjWBGOncsIjBTYEUwgSwjMAWuX3Z2XzZAQDYBCkppSzMmFUtrSzMmAAACAIEE4ALKBwMADQAcAGUAsAMvsAfQsAcvQA0PBx8HLwc/B08HXwcGXbADELIKBAorWCHYG/RZsAcQsA3QsA0vsAcQsA7QsA4vsBXQsBUvQA8PFR8VLxU/FU8VXxVvFQddsBTQsg8UDhESObIbDhUREjkwMQEUBiMiJjUzFBYzMjY1Jyc2NjU0IzcyFhUUBgcHAsqhg4ShkkpJRUzJAUpCoAeQlFFEAQWwXnJzXTU+PTYRfAQYHTtSTkIyOwc+AAACAIEE3wLgBooADQARAF8AsAMvsAfQsAcvQA0PBx8HLwc/B08HXwcGXbADELIKBAorWCHYG/RZsAcQsA3QsA0vsAcQsBDQsBAvsA/QsA8vQA8PDx8PLw8/D08PXw9vDwddsBAQsBHQGbARLxgwMQEUBiMiJjUzFBYzMjY1JzMHIwLgqIeIqJhPSUdPYJmkZgWwX3JyXzc9PzXaxgACAGkE5ANGBtQABgAaAIUAsAMvsAHQsAEvsAbQsAYvQAkPBh8GLwY/BgRdsgQDBhESORmwBC8YsADQsgIGARESObAGELAK0LAKL7Q/Ck8KAl2wDdCwDS9ADQ8NHw0vDT8NTw1fDQZdsAoQsBDQsBAvsA0QshQECitYIdgb9FmwChCyFwQKK1gh2Bv0WbAUELAa0DAxASMnByMlMzcUBiMiJiMiBhUnNDYzMhYzMjY1A0aqxcWpAS2Dw2BBNm4oHTZNYEAqfCYfNATknp705T5eRy4dEz9iRi0cAAIAaQTkA+wGzwAGABUAYQCwAy+wBdCwBS+2DwUfBS8FA12yBAMFERI5GbAELxiwANCwAxCwAdCwAS+yAgUDERI5sAfQsAcvsA7QsA4vQA0PDh8OLw4/Dk8OXw4GXbAN0LIIBw0REjmyFA4HERI5MDEBIycHIwEzFyc2NjU0IzcyFhUUBgcHA0aqxcWpARC8vgFBO40FgIZKPAEE5Lq6AQZ8gwQaIUNcWEk7Qgc8AAL/XgTPA0YGggAGAAoAXQCwAy+yDwMBXbAE0BmwBC8YsADQGbAALxiwAxCwAdCwAS+wBtCwBi+2DwYfBi8GA12yAgMGERI5sAMQsAjQsAgvsAfQGbAHLxiwCBCwCtCwCi+2DwofCi8KA10wMQEjJwcjATMFIwMzA0bFqqrEASKY/o+MyMcEz56eAQZVAQIAAAIAbgThBFgGlQAGAAoAXQCwAy+yDwMBXbAF0LAFL7AA0LAAL7YPAB8ALwADXbADELAC0BmwAi8YsgQDABESObAG0BmwBi8YsAMQsAnQsAkvsAfQsAcvtg8HHwcvBwNdsAkQsArQGbAKLxgwMQEzASMnByMBMwMjAZKYASLFqarGAyLIyY0F6P75n58BtP79AAIAgQTfAuAGigANABEAXwCwAy+wB9CwBy9ADQ8HHwcvBz8HTwdfBwZdsAMQsgoECitYIdgb9FmwBxCwDdCwDS+wBxCwEdCwES+wD9CwDy9ADw8PHw8vDz8PTw9fD28PB12wERCwENAZsBAvGDAxARQGIyImNTMUFjMyNjUlMxcjAuCoh4iomE9JR0/+pppwZQWwX3JyXzc9PzXaxgAAAQCfBI4BlgY7AAgADACwAC+wBNCwBC8wMQEXBgcVIzU0NgErazsDuVQGO1Njb4iCTa0AAAIAEwAABHAEjQAHAAoARgCwAEVYsAQvG7EEGj5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmyCQQCERI5sAkvsgABCitYIdgb9FmyCgQCERI5MDEBIQMjATMBIwEhAwNG/fhuvQHfpgHYvP3GAZHHARf+6QSN+3MBrgH9AAMAigAAA+8EjQAOABYAHgBoALAARViwAS8bsQEaPlmwAEVYsAAvG7EAED5ZshcAARESObAXL7K/FwFdtB8XLxcCXbTfF+8XAl2yDwEKK1gh2Bv0WbIIDxcREjmwABCyEAEKK1gh2Bv0WbABELIeAQorWCHYG/RZMDEzESEyFhUUBgcWFhUUBgcBESEyNjU0IyUzMjY1NCcjigGW0d5fWGN02sn+9wEGc3rr/vjqbHzl7QSNo5tRfiEYlWWergECEv6FYlXEjVVTqAUAAAEAYP/wBDAEnQAcAEyyAx0eERI5ALAARViwCy8bsQsaPlmwAEVYsAMvG7EDED5ZsAsQsA/QsAsQshIBCitYIdgb9FmwAxCyGQEKK1gh2Bv0WbADELAc0DAxAQYGIyIAETU0NjYzMhYXIyYmIyIGBxUUFjMyNjcEMBT80eD+8XvnmMz3E7kSjX6ZpwGfl4eNFAF5u84BJwEDXqT5iNO7gnTLvWq9z2+DAAIAigAABB8EjQAKABQARrICFRYREjmwAhCwFNAAsABFWLABLxuxARo+WbAARViwAC8bsQAQPlmwARCyCwEKK1gh2Bv0WbAAELIMAQorWCHYG/RZMDEzESEyFhYXFRQAIQMRMzI2NTU0JiOKAWmi+4wD/sn++Z6kusa9twSNhfafTfz+1gP0/KPQwEDAzQABAIoAAAOuBI0ACwBUALAARViwBi8bsQYaPlmwAEVYsAQvG7EEED5ZsAvQsAsvst8LAV2yHwsBXbIAAQorWCHYG/RZsAQQsgIBCitYIdgb9FmwBhCyCAEKK1gh2Bv0WTAxASERIRUhESEVIREhA1f97AJr/NwDHv2bAhQCDv6JlwSNmf6yAAEAigAAA5sEjQAJAEEAsABFWLAELxuxBBo+WbAARViwAi8bsQIQPlmwCdCwCS+yHwkBXbIAAQorWCHYG/RZsAQQsgYBCitYIdgb9FkwMQEhESMRIRUhESEDS/34uQMR/agCCAHz/g0EjZn+mAAAAQBj//AENQSdAB0AX7IKHh8REjkAsABFWLAKLxuxCho+WbAARViwAy8bsQMQPlmyHQoDERI5sB0vsg0dChESObAKELIQAQorWCHYG/RZsAMQshcBCitYIdgb9FmwHRCyGgMKK1gh2Bv0WTAxJQYGIyIAJzUQADMyFhcjJiMiBhUVFBYzMjc1ITUhBDVC6Zfu/uACAQvyyPIbuCb1n6a5oLZR/ucB0ZZTUwEq/FoBBgEnvLXZzsdUvtdK7pAAAAEAigAABFgEjQALAFMAsABFWLAGLxuxBho+WbAARViwCi8bsQoaPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbIJAAoREjl8sAkvGLKjCQFdsgIBCitYIdgb9FkwMSEjESERIxEzESERMwRYuf2kubkCXLkB8v4OBI39/QIDAAABAJcAAAFRBI0AAwAdALAARViwAi8bsQIaPlmwAEVYsAAvG7EAED5ZMDEhIxEzAVG6ugSNAAABACv/8ANNBI0ADwA1sgUQERESOQCwAEVYsAAvG7EAGj5ZsABFWLAFLxuxBRA+WbAJ0LAFELIMAQorWCHYG/RZMDEBMxEUBiMiJjUzFBYzMjY1ApK71LHC27pxclxuBI38xZ3Ft6ReZm1fAAABAIoAAARXBI0ADABMALAARViwBC8bsQQaPlmwAEVYsAgvG7EIGj5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmyAAIIERI5sgYCBBESObIKAggREjkwMQEHESMRMxE3ATMBASMB1pO5uYIBjeP+IQIB4QIHjv6HBI391ZABm/35/XoAAAEAigAAA4sEjQAFACgAsABFWLAELxuxBBo+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WTAxJSEVIREzAUMCSPz/uZeXBI0AAAEAigAABXcEjQAOAGCyAQ8QERI5ALAARViwAC8bsQAaPlmwAEVYsAIvG7ECGj5ZsABFWLAELxuxBBA+WbAARViwCC8bsQgQPlmwAEVYsAwvG7EMED5ZsgEABBESObIHAAQREjmyCgAEERI5MDEJAjMRIxETASMBExEjEQF6AYcBhfG4E/5yiP5zE7gEjfxxA4/7cwGRAhX8WgOi/e/+bwSNAAEAigAABFgEjQAJAEUAsABFWLAFLxuxBRo+WbAARViwCC8bsQgaPlmwAEVYsAAvG7EAED5ZsABFWLADLxuxAxA+WbICBQAREjmyBwUAERI5MDEhIwERIxEzAREzBFi4/aO5uQJduANs/JQEjfyTA20AAAIAYP/wBFoEnQANABsARrIDHB0REjmwAxCwEdAAsABFWLAKLxuxCho+WbAARViwAy8bsQMQPlmwChCyEQEKK1gh2Bv0WbADELIYAQorWCHYG/RZMDEBEAAjIgARNRAAMzIAFwc0JiMiBhUVFBYzMjY1BFr+7Ojl/ucBF+XpARMCt6yblq+wl5ypAiT++/7RATIBBz4BAgE0/tD/BcbS1sVCw9fTxwACAIoAAAQbBI0ACgATAE2yChQVERI5sAoQsAzQALAARViwAy8bsQMaPlmwAEVYsAEvG7EBED5ZsgsDARESObALL7IAAQorWCHYG/RZsAMQshIBCitYIdgb9FkwMQERIxEhMhYVFAYjJSEyNjU0JichAUO5AdPM8urW/ugBGnyIiHf+4QG2/koEjceoqr6YamRgdwEAAgBZ/zYEVwSdABMAIQBNsggiIxESObAIELAe0ACwAEVYsBAvG7EQGj5ZsABFWLAILxuxCBA+WbIDCBAREjmwEBCyFwEKK1gh2Bv0WbAIELIeAQorWCHYG/RZMDEBFAYHFwclBiMiABE1NBI2MzIAESc0JiMiBgcVFBYzMjY1BFVwZth8/vk2RuT+5X/oluoBFbesnJSsBK6YnKoCJKbzRqBvxw0BMQEIPqkBA4r+zf75BsbSz7lVwtjTxwACAIoAAAQlBI0ADQAWAGGyFRcYERI5sBUQsAXQALAARViwBC8bsQQaPlmwAEVYsAIvG7ECED5ZsABFWLAMLxuxDBA+WbIPBAIREjmwDy+yAAEKK1gh2Bv0WbIKAAQREjmwBBCyFQEKK1gh2Bv0WTAxASERIxEhMhYVFAcBFSMBMzI2NTQmIyMCWv7puQGq1efrASDG/eT2dYmGfvABwf4/BI26quRZ/h4KAlhtXWRuAAEAQ//wA90EnQAlAFoAsABFWLAJLxuxCRo+WbAARViwHC8bsRwQPlmyAhwJERI5sAkQsA3QsAkQshABCitYIdgb9FmwAhCyFgEKK1gh2Bv0WbAcELAg0LAcELIjAQorWCHYG/RZMDEBNCYkJyY1NDYzMhYVIzQmIyIGFRQWBBYWFRQGIyIkNTMUFjMyNgMjef7aVsPzv8T5uY15cYZ7ATiwVvPHz/7vupqMfoIBKlBYSitis4+yyJxia1lQQVhQZYhbk6nLomZyWwABACgAAAP9BI0ABwAuALAARViwBi8bsQYaPlmwAEVYsAIvG7ECED5ZsAYQsgABCitYIdgb9FmwBNAwMQEhESMRITUhA/3+cbn+cwPVA/T8DAP0mQABAHT/8AQKBI0AEQA8sgQSExESOQCwAEVYsAAvG7EAGj5ZsABFWLAILxuxCBo+WbAARViwBC8bsQQQPlmyDQEKK1gh2Bv0WTAxAREUBiMiJicRMxEUFjMyNjURBAr60dL2A7ePhYOPBI389Lbb07YDFPz0eYF/ewMMAAEAFAAABFMEjQAIADEAsABFWLADLxuxAxo+WbAARViwBy8bsQcaPlmwAEVYsAUvG7EFED5ZsgEDBRESOTAxARc3ATMBIwEzAhoZGgFAxv43rf43xwEkXlwDa/tzBI0AAAEAMQAABfEEjQASAGCyDhMUERI5ALAARViwAy8bsQMaPlmwAEVYsAgvG7EIGj5ZsABFWLARLxuxERo+WbAARViwCi8bsQoQPlmwAEVYsA8vG7EPED5ZsgEDChESObIGAwoREjmyDQMKERI5MDEBFzcTMxMXNxMzASMBJwcBIwEzAa8LD/il9A0Mxrj+1q7+/AEB/vSt/te3ASZQQAN3/IY7UANl+3MDlQUF/GsEjQAAAQAmAAAEMQSNAAsAUwCwAEVYsAEvG7EBGj5ZsABFWLAKLxuxCho+WbAARViwBC8bsQQQPlmwAEVYsAcvG7EHED5ZsgABBBESObIGAQQREjmyAwAGERI5sgkGABESOTAxAQEzAQEjAQEjAQEzAigBH9z+dQGZ3P7V/tjcAZb+c9sC2gGz/b79tQG7/kUCSwJCAAABAA0AAAQcBI0ACAAxALAARViwAS8bsQEaPlmwAEVYsAcvG7EHGj5ZsABFWLAELxuxBBA+WbIAAQQREjkwMQEBMwERIxEBMwIUATjQ/lK5/ljQAkoCQ/0K/mkBogLrAAABAEcAAAPgBI0ACQBEALAARViwBy8bsQcaPlmwAEVYsAIvG7ECED5ZsgABCitYIdgb9FmyBAACERI5sAcQsgUBCitYIdgb9FmyCQUHERI5MDElIRUhNQEhNSEVAS8CsfxnApj9cQN4l5d8A3iZeQAAAgBQ//UCnQMgAA0AFwBGsgMYGRESObADELAQ0ACwAEVYsAovG7EKFj5ZsABFWLADLxuxAxA+WbAKELIQAgorWCHYG/RZsAMQshUCCitYIdgb9FkwMQEUBiMiJic1NDYzMhYXJzQjIgcVFDMyNwKdmI2LnAGbi42YAp2KhQSLhAQBRaKurKCOo66snQfAtLPCtQABAHoAAAHvAxUABgA1ALAARViwBS8bsQUWPlmwAEVYsAEvG7EBED5ZsgQFARESObAEL7IDAgorWCHYG/RZsALQMDEhIxEHNSUzAe+d2AFjEgJZOYB1AAEAQgAAAqsDIAAWAFSyCBcYERI5ALAARViwDi8bsQ4WPlmwAEVYsAAvG7EAED5ZshUCCitYIdgb9FmwAtCyFBUOERI5sgMOFBESObAOELIIAgorWCHYG/RZsA4QsAvQMDEhITUBNjU0JiMiBhUjNDYgFhUUDwIhAqv9qQEsbUA8S0edpwEImmtUsAGPbAEaZkUxPUw5cpR/bmhrT5EAAQA+//UCmgMgACYAcQCwAEVYsA4vG7EOFj5ZsABFWLAZLxuxGRA+WbIAGQ4REjl8sAAvGLaAAJAAoAADXbAOELIHAgorWCHYG/RZsgoABxESObAAELImAgorWCHYG/RZshQmABESObAZELIgAgorWCHYG/RZsh0mIBESOTAxATMyNjU0JiMiBhUjNDYzMhYVFAYHFhUUBiMiJjUzFBYzMjY1NCcjAQlUSkg/RjlLnaN8iZxGQpWqiISmnk9DRkmcWAHLPTAtOjMpYnt5aDdbGSmPan1+ay08PDNxAgAAAgA2AAACuwMVAAoADgBJALAARViwCS8bsQkWPlmwAEVYsAQvG7EEED5ZsgEJBBESObABL7ICAgorWCHYG/RZsAbQsAEQsAvQsggLBhESObINCQQREjkwMQEzFSMVIzUhJwEzATMRBwJQa2ud/okGAXmh/oTfEQErgqmpZgIG/hYBIRwAAQBb//UCpwMVABsAYQCwAEVYsAEvG7EBFj5ZsABFWLANLxuxDRA+WbABELIECQorWCHYG/RZsgcNARESObAHL7IZAgorWCHYG/RZsgUHGRESObANELAR0LANELITAgorWCHYG/RZsAcQsBvQMDETEyEVIQc2MzIWFRQGIyImJzMWMzI2NTQmIyIHcDIB3v6jFkFKgI+ghnmnBpsKgUFITkpJOwGDAZKEqh2JeXyRfmVjS0Q+TSsAAAIAVv/1AqsDHgATAB8ATgCwAEVYsAAvG7EAFj5ZsABFWLAMLxuxDBA+WbAAELIBAgorWCHYG/RZsgYMABESObAGL7IUAgorWCHYG/RZsAwQshsCCitYIdgb9FkwMQEVIwQHNjMyFhUUBiMiJjU1NDY3AyIGBxUUFjMyNjQmAigR/vQXSHJ2h5+Ei6fezX4zTRFTPz1ORwMegwLbTZF3dJqmlzPQ5AX+biwgIlRVT3xMAAABADoAAAKlAxUABgAyALAARViwBS8bsQUWPlmwAEVYsAIvG7ECED5ZsAUQsgQCCitYIdgb9FmyAAUEERI5MDEBASMBITUhAqX+o6YBXf47AmsCu/1FApOCAAADAE//9QKfAyAAEwAeACgAegCwAEVYsBEvG7ERFj5ZsABFWLAGLxuxBhA+WbIkBhEREjmwJC+23yTvJP8kA122DyQfJC8kA12y/yQBcbQPJB8kAnKyFwIKK1gh2Bv0WbICJBcREjmyDBckERI5sAYQsh0CCitYIdgb9FmwERCyHwIKK1gh2Bv0WTAxARQHFhUUBiAmNTQ2NyY1NDYzMhYDNCYjIgYVFBYyNgMiBhUUFjI2NCYCi3eLoP7woEpAd5d9fpeJTj4/S0x+TIw3Pz9wP0ACQ3Y3O4NqeXlqQmEbN3Zndnb+OjQ6OjQ1OjoB8DUwLjg4XDcAAAIASf/5ApUDIAASAB4AWgCwAEVYsAgvG7EIFj5ZsABFWLAPLxuxDxA+WbICDwgREjmwAi+2DwIfAi8CA12wDxCyEAIKK1gh2Bv0WbACELITAgorWCHYG/RZsAgQshkCCitYIdgb9FkwMQEGIyImNTQ2MzIWFxUQBQc1MjYnMjc1NCYjIgYVFBYB9kVldo2jgYmcA/5zN5aEe14qTzw7TEoBQEGKfnmgpZQ9/mQUAX9inkc8U1BUQ0FOAAEAjwKLAwsDIgADABEAsAIvsgEBCitYIdgb9FkwMQEhNSEDC/2EAnwCi5cAAwCeBEACbgZyAAMADwAbAHIAsABFWLANLxuxDRg+WbAH0LAHL0AJPwdPB18HbwcEXbAC0LACL7Y/Ak8CXwIDXbAA0LAAL0ARDwAfAC8APwBPAF8AbwB/AAhdsAIQsAPQGbADLxiwDRCyEwcKK1gh2Bv0WbAHELIZBworWCHYG/RZMDEBMwcjBzQ2MzIWFRQGIyImNxQWMzI2NTQmIyIGAbG93HKCZEhEY2FGSGRVMyQjMDAjJTIGcrjXRmFeSUdcXkUjMjEkJjI0AAMAHv5KBBEETgApADcARACPALAARViwJi8bsSYYPlmwAEVYsBYvG7EWEj5ZsCYQsCnQsCkvsgADCitYIdgb9FmyCBYmERI5sAgvsg4IFhESObAOL7SQDqAOAl2yNwEKK1gh2Bv0WbIcNw4REjmyIAgmERI5sBYQsjABCitYIdgb9FmwCBCyOwEKK1gh2Bv0WbAmELJCAQorWCHYG/RZMDEBIxYXFRQGBiMiJwYVFBczFhYVFAYGIyImNTQ2NyY1NDcmNTU0NjMyFyEBBgYVFBYzMjY1NCYnIwMUFjMyNjU1NCYiBhUEEZc6AW/DeE9JNHq3yM6N9JfR/15UOHOu8btQRwFv/Tw4PJSDks1obO90jGlniorSigOnVGkZYqZeFSpAUAIBlY9UoWCbelOKKi9KfFJqxQudyhT7+BpdN0pZckxKQQICpVN7elgSV3h4WgAAAgBk/+sEWAROABAAHABhALAARViwCS8bsQkYPlmwAEVYsAwvG7EMGD5ZsABFWLACLxuxAhA+WbAARViwEC8bsRAQPlmyAAIJERI5sgsJAhESObACELIUAQorWCHYG/RZsAkQshoBCitYIdgb9FkwMSUCISICNTUQEjMgEzczAxMjARQWMzITNSYmIyIGA4Js/vLA5OLEAQlsIrBqcbD9dZKH00gckmuGlfH++gEb9A8BCAE9/v/t/eL95AH0r8MBhyS+y+MAAgCxAAAE4wWvABYAHgBhshgfIBESObAYELAE0ACwAEVYsAMvG7EDHD5ZsABFWLABLxuxARA+WbAARViwDy8bsQ8QPlmyFwMBERI5sBcvsgABCitYIdgb9FmyCRcAERI5sAMQsh0BCitYIdgb9FkwMQERIxEhMhYVFAcWExUWFxUjJic1NCYjJSEyNjUQISEBcsECDvD77d4FAkHGOwOMf/6eATminf7P/rkCdP2MBa/SzOVjRf76nI09GDasi3iPnXyEAQAAAQCyAAAFHQWwAAwAaACwAEVYsAQvG7EEHD5ZsABFWLAILxuxCBw+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsgYCBBESOXywBi8YtGMGcwYCXbQzBkMGAl2ykwYBXbIBAQorWCHYG/RZsgoBBhESOTAxASMRIxEzETMBMwEBIwIjscDAlgH97/3UAlXrAo79cgWw/X4Cgv0+/RIAAAEAkgAABBQGAAAMAFMAsABFWLAELxuxBB4+WbAARViwCC8bsQgYPlmwAEVYsAIvG7ECED5ZsABFWLALLxuxCxA+WbIHCAIREjmwBy+yAAEKK1gh2Bv0WbIKAAcREjkwMQEjESMRMxEzATMBASMBzIC6un4BO9v+hgGu2wH1/gsGAPyOAaz+E/2zAAEAsgAABPoFsAALAEwAsABFWLADLxuxAxw+WbAARViwBy8bsQccPlmwAEVYsAEvG7EBED5ZsABFWLAKLxuxChA+WbIAAwEREjmyBQMBERI5sgkABRESOTAxAREjETMRMwEzAQEjAXLAwAwCY/H9awK97QK1/UsFsP15Aof9O/0VAAABAJIAAAPxBhgADABMALAARViwBC8bsQQePlmwAEVYsAgvG7EIGD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmyAAgCERI5sgYIAhESObIKBgAREjkwMQEjESMRMxEzATMBASMBUAS6ugEBivD+KwH/5AHz/g0GGPx1Aa3+Df25AAABAEP/EwPdBXMAKwBmALAARViwCS8bsQkaPlmwAEVYsCIvG7EiED5ZsgIiCRESObAJELAM0LAJELAQ0LAJELITAQorWCHYG/RZsAIQshkBCitYIdgb9FmwIhCwH9CwIhCwJtCwIhCyKQEKK1gh2Bv0WTAxATQmJCcmNTQ2NzUzFRYWFSM0JiMiBhUUFgQWFhUUBgcVIzUmJjUzFBYzMjYDI3n+2lbDy6aVo8a5jXlxhnsBOLBWw6mVut+6mox+ggEqUFhKK2KzgqwQ2dsVwohia1lQQVhQZYhbgqYQ4eETwpRmclsAAAEAMAAAA+8EnQAgAGAAsABFWLAULxuxFBo+WbAARViwBy8bsQcQPlmyDwcUERI5sA8vsg4ECitYIdgb9FmwAdCwBxCyBAEKK1gh2Bv0WbAI0LAUELAY0LAUELIbAQorWCHYG/RZsA8QsB/QMDEBIRcWByEHITUzNjc3JyM1MycmNjMyFhUjNCYjIgYXFyEDHf5wAQU4ApQB/IQKTwkBAaSgBAbLtbfKuWhgXWgEBAGUAfQiy2+YmBfdRiJ5e8nszLdwd4+KewAAAQAWAAAEJQSNABcAigCwAEVYsBcvG7EXGj5ZsABFWLABLxuxARo+WbAARViwDS8bsQ0QPlmyAA0XERI5shANFxESObAQL7IPEAFdsBTQsBQvtA8UHxQCcUAPDxQfFC8UPxRPFF8UbxQHXbAD0LAUELITBAorWCHYG/RZsAbQsBAQsAjQsBAQsg8ECitYIdgb9FmwC9AwMQEBMwEzFSEHFSEVIRUjNSE1ITUhNSEBMwIdATjQ/pv7/sEFAUT+vLn+vAFE/rwBAP6c0AJLAkL9jHkJQnjd3XhLeQJ0AAEAigAAA4UEjQAFADKyAQYHERI5ALAARViwBC8bsQQaPlmwAEVYsAIvG7ECED5ZsAQQsgABCitYIdgb9FkwMQEhESMRIQOF/b65AvsD9PwMBI0AAAIAFAAABFMEjQADAAgAPLIFCQoREjmwBRCwAtAAsABFWLACLxuxAho+WbAARViwAC8bsQAQPlmyBQIAERI5sgcBCitYIdgb9FkwMSEhATMDJwcBIQRT+8EBya09Ghn++AJDBI3+3Vxe/TAAAAMAYP/wBFoEnQADABEAHwBeALAARViwDi8bsQ4aPlmwAEVYsAcvG7EHED5ZsgIHDhESOXywAi8YtGACcAICcbRgAnACAl2yAQEKK1gh2Bv0WbAOELIVAQorWCHYG/RZsAcQshwBCitYIdgb9FkwMQEhNSEFEAAjIgARNRAAMzIAFwc0JiMiBhUVFBYzMjY1A1X+HwHhAQX+7Ojl/ucBF+XpARMCt6yblq+wl5ypAfmZbv77/tEBMgEHPgECATT+0P8FxtLWxULD19PHAAEAFAAABFMEjQAIADiyBwkKERI5ALAARViwAi8bsQIaPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbIHAgAREjkwMTMjATMBIwEnB9vHAcmtAcnG/sAaGQSN+3MDalxeAAADAD4AAANLBI0AAwAHAAsAY7IEDA0REjmwBBCwAdCwBBCwCdAAsABFWLAKLxuxCho+WbAARViwAC8bsQAQPlmyAgEKK1gh2Bv0WbIHCgAREjmwBy+yvwcBXbIEAQorWCHYG/RZsAoQsggBCitYIdgb9FkwMSEhNSEDITUhEyE1IQNL/PMDDUP9dwKJQ/zzAw2YAXuYAUmZAAEAigAABEQEjQAHAD+yAQgJERI5ALAARViwBi8bsQYaPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbAGELICAQorWCHYG/RZMDEhIxEhESMRIQREuv25uQO6A/T8DASNAAABAD8AAAPIBI0ADABDsgYNDhESOQCwAEVYsAgvG7EIGj5ZsABFWLADLxuxAxA+WbIBAQorWCHYG/RZsAXQsAgQsgoBCitYIdgb9FmwB9AwMQEBIRUhNQEBNSEVIQECb/62AqP8dwFR/q8DV/2PAUoCOv5fmZABtwG2kJn+XwADAGAAAAUGBI0AEQAXAB4AXACwAEVYsBAvG7EQGj5ZsABFWLAILxuxCBA+WbIPEAgREjmwDy+wANCyCQgQERI5sAkvsAbQsAkQshQBCitYIdgb9FmwDxCyFQEKK1gh2Bv0WbAb0LAUELAc0DAxARYEFRQEBxUjNSYkNTQkNzUzARAFEQYGBTQmJxE2NgMQ5gEQ/u3juen+8gEQ57n+CAE/mqUDNqaYmKYEFg36y838DW5uDfvMzfsNdv21/tgRAnMJl5iZlQn9jgqWAAABAGAAAAS2BI0AFQBcsgAWFxESOQCwAEVYsAMvG7EDGj5ZsABFWLAPLxuxDxo+WbAARViwFC8bsRQaPlmwAEVYsAkvG7EJED5ZshMDCRESObATL7AA0LATELILAQorWCHYG/RZsAjQMDEBJBERMxEGAgcRIxEmAicRMxEQBREzAugBFbkD8tm62fAFugEUugG7MwFrATT+vfP+4hj+3wEfFAEd8gFL/sv+ji0C1AABAHUAAAR+BJ0AIQBcsgciIxESOQCwAEVYsBgvG7EYGj5ZsABFWLAPLxuxDxA+WbAARViwIC8bsSAQPlmwDxCyEQEKK1gh2Bv0WbAO0LAA0LAYELIHAQorWCHYG/RZsBEQsB7QsB/QMDElNjY1NTQmIyIGFRUUFhcVITUzJhE1NAAzMgAVFRAHMxUhAruIf66dnKyNf/4+r7MBG+foARyytf49nR/fzSazwMG3IczfIJ2XnQE6Hu4BI/7c9Rz+y5yXAAEAJv/sBSwEjQAZAGuyFhobERI5ALAARViwAi8bsQIaPlmwAEVYsA4vG7EOED5ZsABFWLAYLxuxGBA+WbACELIAAQorWCHYG/RZsATQsAXQsggCDhESObAIL7AOELIPAQorWCHYG/RZsAgQshUBCitYIdgb9FkwMQEhNSEVIRE2MzIWFRQGIzUyNjU0JiMiBxEjAYr+nAOJ/pSXnNTi5eCNf32AnZa5A/SZmf7XMdDEvr6XbXiDeTL9zgAAAQBg//AEMASdAB4AfbIDHyAREjkAsABFWLALLxuxCxo+WbAARViwAy8bsQMQPlmyDwsDERI5sAsQshIBCitYIdgb9FmyFgsDERI5fLAWLxiyoBYBXbRgFnAWAl2yMBYBcbRgFnAWAnGyFwEKK1gh2Bv0WbADELIbAQorWCHYG/RZsh4DCxESOTAxAQYGIyIAETU0NjYzMhYXIyYmIyIGByEVIRYWMzI2NwQwFPzR4P7xe+eYzPcTuRKNfpmiBgG//kEEoZGHjRQBebvOAScBA16k+YjTu4J0w6+YssJvgwACACcAAAb7BI0AFwAgAHayBCEiERI5sAQQsBjQALAARViwEi8bsRIaPlmwAEVYsAMvG7EDED5ZsABFWLALLxuxCxA+WbASELIFAQorWCHYG/RZsAsQsg4BCitYIdgb9FmyFBIDERI5sBQvshgBCitYIdgb9FmwAxCyGQEKK1gh2Bv0WTAxARQGByERIQMOAgcjNzc2NhMTIREhFhYlESEyNjU0JiMG++bD/iv+Xg8LTZd7OwQuYFEKFAMOASTB4P07ARVyhINzAW6lxwID9P5l7fZ1AaUBBL4BCQIc/koEwS3+WXVjX3AAAgCKAAAHCQSNABIAGwCJsgEcHRESObABELAT0ACwAEVYsAIvG7ECGj5ZsABFWLARLxuxERo+WbAARViwCy8bsQsQPlmwAEVYsA8vG7EPED5ZsgECCxESOXywAS8YsqABAV2yBAILERI5sAQvsAEQsg0BCitYIdgb9FmwBBCyEwEKK1gh2Bv0WbALELIUAQorWCHYG/RZMDEBIREzESEWFhUUBgchESERIxEzAREhMjY1NCYnAUMCSLkBJMHg5sP+K/24ubkDAQEVc4R9bgKKAgP+SgTBpKXHAgHy/g4Ejf2y/ll3YVtxAwAAAQAoAAAFLgSNABUAWrIHFhcREjkAsABFWLACLxuxAho+WbAARViwDC8bsQwQPlmwAEVYsBQvG7EUED5ZsAIQsgABCitYIdgb9FmwBNCwBdCyCAIMERI5sAgvshEBCitYIdgb9FkwMQEhNSEVIRE2MzIWFxEjETQmIyIHESMBi/6dA4n+lJOg1N4Eun1/nZa6A/SZmf7XMcrB/o8BZId5Mv3OAAABAIr+mwRDBI0ACwBPsgMMDRESOQCwAi+wAEVYsAYvG7EGGj5ZsABFWLAKLxuxCho+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsggBCitYIdgb9FmwCdAwMSEhESMRIREzESERMwRD/oG5/n+5Ake5/psBZQSN/AsD9QACAIoAAAQIBI0ADAAVAF6yAxYXERI5sAMQsA3QALAARViwCy8bsQsaPlmwAEVYsAkvG7EJED5ZsAsQsgABCitYIdgb9FmyAwsJERI5sAMvsAkQsg0BCitYIdgb9FmwAxCyEwEKK1gh2Bv0WTAxASERITIWFRQGByERIQEyNjU0JichEQOV/a4BEc7m5MX+KwML/sNzhH1u/t8D9/7gxKWkyAIEjfwLd2FbcQP+WQACAC7+rATnBI0ADwAVAFuyExYXERI5sBMQsAXQALAJL7AARViwBS8bsQUaPlmwAEVYsAsvG7ELED5ZsgABCitYIdgb9FmwB9CwCNCwCRCwDdCwCBCwENCwEdCwBRCyEgEKK1gh2Bv0WTAxNzc2NjcTIREzESMRIREjEyEhESEDAoUpR0cHDgMHj7n8uroBAS4CQv5kDBGYMVb92AGZ/Av+FAFU/q0B6wNc/sj+mQABAB8AAAXrBI0AFQCRsgEWFxESOQCwAEVYsAkvG7EJGj5ZsABFWLANLxuxDRo+WbAARViwES8bsREaPlmwAEVYsAIvG7ECED5ZsABFWLAGLxuxBhA+WbAARViwFC8bsRQQPlmyEAkCERI5fLAQLxiyoBABXbRgEHAQAl2yAAEKK1gh2Bv0WbAE0LITEAAREjmwExCwCNCwEBCwC9AwMQEjESMRIwEjAQEzATMRMxEzATMBASMDxWO6ZP7F6gGG/p7gASxZulkBLOD+nAGI6gH2/goB9v4KAlECPP4DAf3+AwH9/c39pgAAAQBH//AD1ASdACgAfbIkKSoREjkAsABFWLAKLxuxCho+WbAARViwFi8bsRYQPlmwChCyAwEKK1gh2Bv0WbIGChYREjmyJwoWERI5sCcvtB8nLycCXbK/JwFdtN8n7ycCXbIkAQorWCHYG/RZshAkJxESObIcFgoREjmwFhCyHwEKK1gh2Bv0WTAxATQmIyIGFSM0NjMyFhUUBgcWFhUUBiMiJicmNTMWFjMyNjU0JSM1MzYDCIp9boG67bzT7m5ndnH+1VupPXm5BYN5iJL+/52c7wNQVF1YT461qJZWjSkkkluetCwuWZ1WYGBYwQWYBQABAIoAAARhBI0ACQBMsgAKCxESOQCwAEVYsAAvG7EAGj5ZsABFWLAHLxuxBxo+WbAARViwAi8bsQIQPlmwAEVYsAUvG7EFED5ZsgQAAhESObIJAAIREjkwMQEzESMRASMRMxEDqLm5/Zu5uQSN+3MDdPyMBI38jAABAIsAAAQsBI0ADABosgoNDhESOQCwAEVYsAQvG7EEGj5ZsABFWLAILxuxCBo+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsgYCBBESOXywBi8YsqAGAV20YAZwBgJdsgEBCitYIdgb9FmyCgEGERI5MDEBIxEjETMRMwEzAQEjAa5qublkAYXf/jUB6+8B9v4KBI3+AwH9/cX9rgAAAQAnAAAENgSNAA8ATbIEEBEREjkAsABFWLAALxuxABo+WbAARViwAS8bsQEQPlmwAEVYsAgvG7EIED5ZsAAQsgMBCitYIdgb9FmwCBCyCgEKK1gh2Bv0WTAxAREjESEDAgIHIzc3NjY3EwQ2uf5eDw2ksEQEKV5QDRkEjftzA/T+gv6q/uUFpQMHnuICXgAAAQAi/+wECwSNABEAQ7IBEhMREjkAsABFWLACLxuxAho+WbAARViwEC8bsRAaPlmwAEVYsAgvG7EIED5ZsgEIAhESObIMAQorWCHYG/RZMDEBFwEzAQcGBwciJzcXMjY3ATMB9S0BFNX+XiVQqiZQFAZcMUkg/mbWAjB4AtX8RUmRCwEIkwUxOwOfAAABAIr+rATxBI0ACwBFsgkMDRESOQCwAi+wAEVYsAYvG7EGGj5ZsABFWLAKLxuxCho+WbAARViwBC8bsQQQPlmyAAEKK1gh2Bv0WbAI0LAJ0DAxJTMDIxEhETMRIREzBEStEqX8ULkCR7qY/hQBVASN/AsD9QAAAQA9AAAD3wSNABEARrIEEhMREjkAsABFWLAILxuxCBo+WbAARViwEC8bsRAaPlmwAEVYsAAvG7EAED5Zsg0IABESObANL7IEAQorWCHYG/RZMDEhIxEGIyImJxEzERQWMzI3ETMD37mQo9TeBLl+f52WuQHCMMrBAXD+nYd5MgIxAAEAigAABcYEjQALAE+yBQwNERI5ALAARViwAi8bsQIaPlmwAEVYsAYvG7EGGj5ZsABFWLAKLxuxCho+WbAARViwAC8bsQAQPlmyBAEKK1gh2Bv0WbAI0LAJ0DAxISERMxEhETMRIREzBcb6xLkBiLoBiLkEjfwLA/X8CwP1AAEAiv6sBnUEjQAPAFiyCxARERI5ALACL7AARViwBi8bsQYaPlmwAEVYsAovG7EKGj5ZsABFWLAOLxuxDho+WbAARViwBC8bsQQQPlmyAAEKK1gh2Bv0WbAI0LAJ0LAM0LAN0DAxJTMDIxEhETMRIREzESERMwXHrhKm+s25AYi6AYi6mP4UAVQEjfwLA/X8CwP1AAACAAgAAATWBI0ADQAWAF6yCBcYERI5sAgQsBXQALAARViwBy8bsQcaPlmwAEVYsAMvG7EDED5ZsAcQsgUBCitYIdgb9FmyCgcDERI5sAovsAMQsg4BCitYIdgb9FmwChCyFAEKK1gh2Bv0WTAxARQGByERITUhESEyFhYBMjY1NCYjIREE1uTE/ir+sAIKARaEwmj+UXKEg3P+6wFupMgCA/SZ/kpYo/68dWNfcP5Z//8AigAABWcEjQAmAggAAAAHAcIEFgAAAAIAigAABAgEjQAKABMAULIIFBUREjmwCBCwC9AAsABFWLAFLxuxBRo+WbAARViwAy8bsQMQPlmyCAUDERI5sAgvsAMQsgsBCitYIdgb9FmwCBCyEQEKK1gh2Bv0WTAxARQGByERMxEhMhYBMjY1NCYnIREECOTF/iu5ARHO5v5Qc4R9bv7fAW6kyAIEjf5KxP6Fd2FbcQP+WQABAEv/8AQbBJ0AHgB6sgMfIBESOQCwAEVYsBMvG7ETGj5ZsABFWLAbLxuxGxA+WbIAGxMREjmyAwEKK1gh2Bv0WbIJExsREjl8sAkvGLKgCQFdtGAJcAkCXbIwCQFxtGAJcAkCcbIGAQorWCHYG/RZsBMQsgwBCitYIdgb9FmyDxMbERI5MDEBFhYzMjY3ITUhJiYjIgYHIzY2MzIAFxUUBgYjIiYnAQQUjYeNogf+QQG+BaOYfo0SuRP3zOQBEQV44pXP/hQBeYNvu7mYr8N0grvT/t/0daP5h867AAACAIr/8AYVBJ0AEwAhAIqyBCIjERI5sAQQsBjQALAARViwEC8bsRAaPlmwAEVYsAsvG7ELGj5ZsABFWLADLxuxAxA+WbAARViwCC8bsQgQPlmyDQgLERI5fLANLxi0YA1wDQJxsqANAV20YA1wDQJdsgYBCitYIdgb9FmwEBCyFwEKK1gh2Bv0WbADELIeAQorWCHYG/RZMDEBEAAjIgAnIxEjETMRMzYAMzIAFwc0JiMiBhUVFBYzMjY1BhX+7Ojd/usM2Lm52A4BFNrpARMCt6yblq+wl5ypAiT++/7RARzy/gIEjf4J8QEW/tD/BcbS1sVCw9fTxwAAAgBQAAAD/ASNAA0AFABhshMVFhESObATELAH0ACwAEVYsAcvG7EHGj5ZsABFWLAALxuxABA+WbAARViwCS8bsQkQPlmyEQcAERI5sBEvsgsBCitYIdgb9FmyAQsHERI5sAcQshIBCitYIdgb9FkwMTMBJiY1NDY3IREjESEDExQXIREhIlABInpx3MgB0bn+0P8u5gEb/u/wAg0mnWihsgL7cwHf/iEDMLQEAXwAAQALAAAD5wSNAA0AULIBDg8REjkAsABFWLAILxuxCBo+WbAARViwAi8bsQIQPlmyDQgCERI5sA0vsgABCitYIdgb9FmwBNCwDRCwBtCwCBCyCgEKK1gh2Bv0WTAxASMRIxEjNTMRIRUhETMCh+K54eEC+/2+4gH9/gMB/ZcB+Zn+oAAAAQAf/qwGIgSNABkAqrIIGhsREjkAsABFWLAQLxuxEBo+WbAARViwFC8bsRQaPlmwAEVYsBgvG7EYGj5ZsABFWLANLxuxDRA+WbAARViwCi8bsQoQPlmwAEVYsAUvG7EFED5ZshcKGBESOXywFy8YsqAXAV20YBdwFwJdtGAXcBcCcbIHAQorWCHYG/RZsgAHFxESObAFELIBAQorWCHYG/RZsAcQsAvQsg8XBxESObAXELAS0DAxAQEzESMRIwEjESMRIwEjAQEzATMRMxEzATMEYwEmmad6/sRjumT+xeoBhv6e4AEsWbpZASzgAlr+PP4WAVQB9v4KAfb+CgJRAjz+AwH9/gMB/QABAIv+rAROBI0AEACAsgAREhESOQCwAy+wAEVYsAsvG7ELGj5ZsABFWLAPLxuxDxo+WbAARViwCS8bsQkQPlmwAEVYsAUvG7EFED5Zsg0JCxESOXywDS8YtGANcA0CcbKgDQFdtGANcA0CXbIIAQorWCHYG/RZsgAIDRESObAFELIBAQorWCHYG/RZMDEBATMRIxEjASMRIxEzETMBMwJBAW+eqGn+cWq5uWQBhd8CUv5E/hYBVAH2/goEjf4DAf0AAAEAiwAABOcEjQAUAHiyCxUWERI5ALAARViwBi8bsQYaPlmwAEVYsBMvG7ETGj5ZsABFWLAJLxuxCRA+WbAARViwES8bsREQPlmyABETERI5fLAALxiyoAABXbRgAHAAAl20YABwAAJxsATQsAAQshABCitYIdgb9FmyCBAAERI5sAzQMDEBMzUzFTMBMwEBIwEjFSM1IxEjETMBRFCUPAGE4P40Aevv/nFBlFC5uQKQ5OQB/f3F/a4B9s7O/goEjQAAAQAjAAAFFQSNAA4AfbIADxAREjkAsABFWLAGLxuxBho+WbAARViwCi8bsQoaPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbIIAgYREjl8sAgvGLKgCAFdtGAIcAgCXbRgCHAIAnGyAQEKK1gh2Bv0WbAGELIEAQorWCHYG/RZsgwBCBESOTAxASMRIxEhNSERMwEzAQEjApdpuv6vAgtjAYXg/jQB6+8B9v4KA/WY/gMB/f3F/a4AAgBg/+sFWwSfACMALgCUshQvMBESObAUELAk0ACwAEVYsAsvG7ELGj5ZsABFWLAbLxuxGxo+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsgIEGxESObACL7ALELIMAQorWCHYG/RZsAQQshMBCitYIdgb9FmwAhCyJgEKK1gh2Bv0WbIVEyYREjmyIQImERI5sBsQsiwBCitYIdgb9FkwMQUiJwYjIAARNRASMxciBhUVFBYzMjcmAzU0EjMyEhUVEAcWMwEQFzYRNTQmIyIDBVvZpomj/ur+xvTSAX6Q0Mc2MuMBz7W4zbZedv2S4bZiasYFFDs8AUUBKhoBAwEonsPIIejlCLIBRSfrAQT+//E4/tqyEgH9/sx5gQEeOKyj/sP//wANAAAEHASNACYB0gAAAQcB3gBE/t4ACACyAAoBXTAxAAEAJv6sBHEEjQAQAGuyCxESERI5ALAHL7AARViwAS8bsQEaPlmwAEVYsA8vG7EPGj5ZsABFWLAJLxuxCRA+WbAARViwDC8bsQwQPlmyAAEMERI5sgsMARESObIDCwAREjmwCRCyBAEKK1gh2Bv0WbIOAAsREjkwMQEBMwEBNTMRIxEjAQEjAQEzAigBH9z+dQExqKh0/tX+2NwBlv5z2wLaAbP9vv5KAf4WAVQBu/5FAksCQgAAAQAm/qwF8gSNAA8AXLIJEBEREjkAsAIvsABFWLAILxuxCBo+WbAARViwDi8bsQ4aPlmwAEVYsAQvG7EEED5ZsgABCitYIdgb9FmwCBCyBgEKK1gh2Bv0WbAK0LAL0LAAELAM0LAN0DAxJTMDIxEhESE1IRUhESERMwVErhKl/FD+mwOJ/pUCRrqY/hQBVAP0mZn8pAP1AAABAD0AAAPfBI0AFwBPsgQYGRESOQCwAEVYsAsvG7ELGj5ZsABFWLAWLxuxFho+WbAARViwAC8bsQAQPlmyEAsAERI5sBAvsgcBCitYIdgb9FmwBNCwEBCwE9AwMSEjEQYHFSM1JiYnETMRFBYXNTMVNjcRMwPfuWNplbzJA7lnaJVnZbkBwiELxsMKyboBbf6de3gL8O0LIgIxAAABAIoAAAQsBI0AEQBGsgQSExESOQCwAEVYsAAvG7EAGj5ZsABFWLAILxuxCBA+WbAARViwEC8bsRAQPlmyBAAIERI5sAQvsg0BCitYIdgb9FkwMRMzETYzMhYXESMRNCYjIgcRI4q5mpnU3gS5fn+Ym7kEjf4+McrB/o8BZId5M/3PAAACAAL/8AVrBJ0AHAAkAGmyFSUmERI5sBUQsB7QALAARViwDi8bsQ4aPlmwAEVYsAAvG7EAED5ZsiEOABESObAhL7K/IQFdshIBCitYIdgb9FmwA9CwIRCwCtCwABCyFgEKK1gh2Bv0WbAOELIdAQorWCHYG/RZMDEFIgA1JiY1MxQWFz4CMzIAERUhFBYzMjY3FwYGAyIGByE1NCYDkf/+zqa4mV9mBYfpjvgBEPyuwbdMh1A5PLiWj7UGApmuEAEi8wvGqF53DJPsgf7r/v2CscAfKJIoLwQRwqQboaoAAAIAXv/wBGkEnQAWAB4AXrIIHyAREjmwCBCwF9AAsABFWLAALxuxABo+WbAARViwCC8bsQgQPlmyDQAIERI5sA0vsAAQshEBCitYIdgb9FmwCBCyFwEKK1gh2Bv0WbANELIaAQorWCHYG/RZMDEBMgAXFRQGBiMiABE1ITU0JiMiByc2NhMyNjchFRQWAkf3ASkChOyT+P7wA1LBt5OQOUHAiZGzBv1nrQSd/uDviJn0iQEVAQGCAbHBSJIpL/vtxqEboKwAAAEAR//tA9QEjQAcAG2yGh0eERI5ALAARViwAi8bsQIaPlmwAEVYsAsvG7ELED5ZsAIQsgABCitYIdgb9FmyBAACERI5sgULAhESObAFL7IRCwIREjmwCxCyFAEKK1gh2Bv0WbAFELIaAQorWCHYG/RZshwFGhESOTAxASE1IRcBFhYVFAYjIiYnJjUzFhYzMjY1NCYjIzUCs/28AzgC/qmx0fzXWas8erkFiXOIkoqGgAP0mXb+mxDFi6e+LS5anllkaGpfaqUAAwBg//AEWgSdAA0AFAAbAHOyAxwdERI5sAMQsA7QsAMQsBXQALAARViwCi8bsQoaPlmwAEVYsAMvG7EDED5Zsg4BCitYIdgb9FmyGQoDERI5fLAZLxiyoBkBXbRgGXAZAl20YBlwGQJxshEBCitYIdgb9FmwChCyFQEKK1gh2Bv0WTAxARAAIyIAETUQADMyABcBMjY3IRYWEyIGByEmJgRa/uzo5f7nARfl6QETAv4Ek6gJ/XYKrY2RqwgCigmqAiT++/7RATIBBz4BAgE0/tD//hy8tLDAA3fDrLO8AAABADAAAAPvBJ0AJwCush0oKRESOQCwAEVYsB0vG7EdGj5ZsABFWLAMLxuxDBA+WbIGHQwREjmwBi+yDwYBcbIPBgFdsk8GAXGwAdCwAS9ACR8BLwE/AU8BBF2yAAEBXbICBAorWCHYG/RZsAYQsgcECitYIdgb9FmwDBCyCgEKK1gh2Bv0WbAO0LAP0LAHELAR0LAGELAT0LACELAW0LABELAY0LIhAR0REjmwHRCyJAEKK1gh2Bv0WTAxASEVIRcVIRUhBgchByE1MzY3IzUzNScjNTMnJjYzMhYVIzQmIyIGFwGHAZb+bgMBj/5sCiQClAH8hAo/FJ+lA6KeAgbLtbfKuWhgXWgEAqh5XRB5akeYmBKfeRBdeUDJ7My3cHePigAAAQBC//ADngSdACEAnrIUIiMREjkAsABFWLAVLxuxFRo+WbAARViwCC8bsQgQPlmyIRUIERI5sCEvsg8hAV20ECEgIQJdsgAECitYIdgb9FmwCBCyAwEKK1gh2Bv0WbAAELAL0LAhELAN0LAhELAS0LASL0AJHxIvEj8STxIEXbIAEgFdsg8ECitYIdgb9FmwFRCyGgEKK1gh2Bv0WbASELAc0LAPELAe0DAxASESITI3FwYjIiYnIzUzNSM1MzY2MzIXByYjIAMhFSEVIQMv/mggAQJiaBt2b9P1FJuXl5sW9c9ghxVZef8AIAGY/mQBnAGW/vEclR7azHlteczcH5Uc/vB5bQAABACKAAAHrQSdAAMAEAAeACgAqLIfKSoREjmwHxCwAdCwHxCwBNCwHxCwEdAAsABFWLAnLxuxJxo+WbAARViwJS8bsSUaPlmwAEVYsAcvG7EHGj5ZsABFWLAiLxuxIhA+WbAARViwIC8bsSAQPlmwBxCwDdCwDS+wAtCwAi+0AAIQAgJdsgEDCitYIdgb9FmwDRCyFAMKK1gh2Bv0WbAHELIbAworWCHYG/RZsiEnIBESObImICcREjkwMSUhNSEBNDYgFhUVFAYjIiY1FxQWMzI2NTU0JiMiBhUBIwERIxEzAREzB2790wIt/ZK8ATS9vpeZv6NeV1ReYVNSYf61uP2jubkCXbi9jgIDlbq4m1CYtrecBVlqaVxSWmhnXvy1A2z8lASN/JMDbQAAAgAoAAAEZgSNABYAHwCDsgAgIRESObAY0ACwAEVYsAwvG7EMGj5ZsABFWLACLxuxAhA+WbIWDAIREjmwFi+yAAEKK1gh2Bv0WbAE0LAWELAG0LAWELAL0LALL0AJDwsfCy8LPwsEXbS/C88LAl2yCAEKK1gh2Bv0WbAT0LALELAX0LAMELIeAQorWCHYG/RZMDElIRUjNSM1MzUjNTMRITIWFRQGByEVISUhMjY1NCYjIQKk/v66wMDAwAHPxerjvv7dAQL+/gEVcoOEcP7qtLS0mFmYAlDMqKXLBFnxeGJkegAAAgCM/+wENAYAABAAGwBkshQcHRESObAUELAN0ACwCS+wAEVYsA0vG7ENGD5ZsABFWLAELxuxBBA+WbAARViwBy8bsQcQPlmyBg0EERI5sgsNBBESObANELIUAQorWCHYG/RZsAQQshkBCitYIdgb9FkwMQEUBgYjIicHIxEzETYzMhIRJzQmIyIHERYzMjYENG/JgNFwD6C5cMXJ8bmjjLdQVbSKowISn/yLlYEGAP3Di/7T/v8HtNaq/iyr2AAAAQBc/+wD7wROAB0ASbIAHh8REjkAsABFWLAQLxuxEBg+WbAARViwCC8bsQgQPlmyAAEKK1gh2Bv0WbAIELAD0LAQELAU0LAQELIXAQorWCHYG/RZMDElMjY3Mw4CIyIANTU0NjYzMhYXIyYmIyIGFRUUFgJAY5QIsAV4xG7f/vt225O28QiwCI9oj5udg3haXqhjASr8IJ35htquaYfOvyG8yQACAFv/7AQABgAAEQAcAGSyGh0eERI5sBoQsATQALAHL7AARViwBC8bsQQYPlmwAEVYsA0vG7ENED5ZsABFWLAJLxuxCRA+WbIGBA0REjmyCwQNERI5sA0QshUBCitYIdgb9FmwBBCyGgEKK1gh2Bv0WTAxEzQ2NjMyFxEzESMnBiMiJiYnNxQWMzI3ESYjIgZbcc6Avm+5oQ5vynzLdQG5qIqvUlOsjacCJp/8jYICNPoAeIyM+5gGsdifAfGZ1gACAFv+VgQABE4AGwAmAHyyHycoERI5sB8QsAvQALAARViwAy8bsQMYPlmwAEVYsAYvG7EGGD5ZsABFWLALLxuxCxI+WbAARViwGC8bsRgQPlmyBQMYERI5sAsQshIBCitYIdgb9FmyFgMYERI5sBgQsh8BCitYIdgb9FmwAxCyJAEKK1gh2Bv0WTAxEzQSMzIXNzMRBgIjIiYnNxYWMzI2NTUGIyICNRcUFjMyNxEmIyIGW/jGzG8PnQL04FbISDc/n0+Vim/Bwvq5pouvU1OtjqUCJvYBMpSA/A7v/v03MooqMrCoKIEBOPQHsNmhAeud1wD//wBXAAAChgW3AAYAFa0AAAIAjP5gBDIETgAQABsAbrIZHB0REjmwGRCwDdAAsABFWLANLxuxDRg+WbAARViwCi8bsQoYPlmwAEVYsAcvG7EHEj5ZsABFWLAELxuxBBA+WbIGDQQREjmyCw0EERI5sA0QshQBCitYIdgb9FmwBBCyGQEKK1gh2Bv0WTAxARQGBiMiJxEjETMXNjMyEhcHNCYjIgcRFjMyNgQybsiBxXG5nw90ysHuCripj6hUU6uMqgIRnvyLff33Bdp9kf7p6iew25X9+5TfAAACAFv+YAP/BE4ADwAaAGuyGBscERI5sBgQsAPQALAARViwAy8bsQMYPlmwAEVYsAYvG7EGGD5ZsABFWLAILxuxCBI+WbAARViwDC8bsQwQPlmyBQMMERI5sgoDDBESObITAQorWCHYG/RZsAMQshgBCitYIdgb9FkwMRM0EjMyFzczESMRBiMiAjUXFBYzMjcRJiMiBlv3zMRvDqC5cLrH+rmqjKZWWKKOqgIl9QE0hnL6JgIEeAE19geu35MCEY/fAAIAXf/sA/METgAUABwAYrIIHR4REjmwCBCwFdAAsABFWLAILxuxCBg+WbAARViwAC8bsQAQPlmyGQgAERI5sBkvtL8ZzxkCXbIMAQorWCHYG/RZsAAQshABCitYIdgb9FmwCBCyFQEKK1gh2Bv0WTAxBSIAJyc0NjYzMhIVFSEWFjMyNxcGASIGByE1NCYCceX+3QsBfN2A1ej9JAjCmaB4OYP+7nOYEQIgiRQBF+NOm/WK/v7wdJ3IWn9yA8qglhmDmgACAGD+VgPyBE4AGgAlAHyyIyYnERI5sCMQsAvQALAARViwAy8bsQMYPlmwAEVYsAYvG7EGGD5ZsABFWLALLxuxCxI+WbAARViwFy8bsRcQPlmyBQMXERI5sAsQshEBCitYIdgb9FmyFQMXERI5sBcQsh4BCitYIdgb9FmwAxCyIwEKK1gh2Bv0WTAxEzQSMzIXNzMRFAYjIiYnNxYzMjY1NQYjIgI1FxQWMzI3ESYjIgZg6MPKcBCd9eFSr0E3eo+ViW/Avuu6lYivUlWqiZYCJfoBL5N//AXq/y0pikmnnjqAATL6CLXToAHum9AAAQB+/+sFHQXFAB4ATLIMHyAREjkAsABFWLAMLxuxDBw+WbAARViwAy8bsQMQPlmwDBCwENCwDBCyEwEKK1gh2Bv0WbADELIbAQorWCHYG/RZsAMQsB7QMDEBBgAjIiQCJzU0EiQzMgAXIyYmIyICERUUEhYzMjY3BRwY/tvusf7hogGdARuy7QEvGcEYv53A6m7IfaGwGgHO3/78tAFHy0TTAUqz/vrjo6j+y/7+N6H/AJCdqQABAH7/6wUeBcQAIgBtsgwjJBESOQCwAEVYsAwvG7EMHD5ZsABFWLADLxuxAxA+WbIQAwwREjmwEC+wDBCyEwEKK1gh2Bv0WbADELIbAQorWCHYG/RZsiIMAxESObAiL7Q/Ik8iAl20DyIfIgJdsh8BCitYIdgb9FkwMSUGBCMiJAInNTQSJDMyBBcjJiYjIgIHBxQSFjMyNjcRITUhBR5D/uOwu/7WqAObARy18QEhIsAeupy17AoBeNOFcrUq/rACD75hcrQBR9It2wFOtuXalYz+3PJGrP72jDowAUabAAIAsgAABREFsAALABUARrIDFhcREjmwAxCwFdAAsABFWLABLxuxARw+WbAARViwAC8bsQAQPlmwARCyDAEKK1gh2Bv0WbAAELINAQorWCHYG/RZMDEzESEyBBIXFRQCBAcDETMyABE1NAAjsgGxwQE4sQSt/sLL6d/qARP+9+gFsKz+xMg+0P7BsQIFEvuLASoBAyT8ASgAAgB+/+sFXwXFABEAIgBGsgQjJBESObAEELAf0ACwAEVYsA0vG7ENHD5ZsABFWLAELxuxBBA+WbANELIWAQorWCHYG/RZsAQQsh8BCitYIdgb9FkwMQEUAgQjIiQCJzU0EiQzMgQSFwc0AiYjIgYGBxUUEhYzMhI1BV+i/uKvq/7hpgKkASGrrQEgowG/bsd9eMZyAXHJecHvAsLO/rC5uQFKyDfNAU+8uf60zAWiAQCPj/6cNaD+/pIBO/8AAAIAfv8EBV8FxQAVACYATbIIJygREjmwCBCwI9AAsABFWLARLxuxERw+WbAARViwCC8bsQgQPlmyAwgRERI5sBEQshoBCitYIdgb9FmwCBCyIwEKK1gh2Bv0WTAxARQCBxcHJQYjIiQCJzU0EiQzMgQSFSc0AiYjIgYGBxUUEhYzMhI1BV+plPqD/sw5PKv+4KQDogEirK4BIaK/bsd9eMdxAXHJecHvAsLU/qxaw3nzDLoBRsY6zAFQvrv+sM4BowEBj5D/nDOg/v6SATv/AAABAKAAAALJBI0ABgAyALAARViwBS8bsQUaPlmwAEVYsAAvG7EAED5ZsgQABRESObAEL7IDAQorWCHYG/RZMDEhIxEFNSUzAsm5/pACCh8DpouoygABAIMAAAQgBKAAGABUsgkZGhESOQCwAEVYsBEvG7ERGj5ZsABFWLAALxuxABA+WbIXAQorWCHYG/RZsALQshYXERESObIDERYREjmwERCyCQEKK1gh2Bv0WbARELAM0DAxISE1ATY3NzQmIyIGFSM0NjYzMhYVFAcBIQQg/IcB/X0KA31mepW5eNJ+u+HF/oYCeIMByXNUNVRsjnVwv2y4mLG0/qwAAQCKAAADhQXEAAcAMrIDCAkREjkAsABFWLAGLxuxBho+WbAARViwBC8bsQQQPlmwBhCyAgEKK1gh2Bv0WTAxATMRIREjESECzLn9vrkCQgXE/jD8DASNAAEAD/6jA94EjQAYAE4AsAsvsABFWLACLxuxAho+WbIBAQorWCHYG/RZsATQsgULAhESObAFL7ALELIQAQorWCHYG/RZsAUQshcBCitYIdgb9FmyGBcFERI5MDEBITUhFQEWFhUUACMiJzcWMzI2NTQmIyM1AuT9dANy/oCy4v7M/8rSNKWxtNe5wDwD9Jl2/mwY9rP5/tpni1jKpaulZwACAD7+tgSgBI0ACgAOAEsAsABFWLAJLxuxCRo+WbAARViwAi8bsQIQPlmwAEVYsAYvG7EGED5ZsgABCitYIdgb9FmwBhCwBdCwBS+wABCwDNCyDQkCERI5MDElMxUjESMRITUBMwEhEQcD28XFuv0dAtbH/TwCChyWl/63AUltBCH8CQL8NQD//wBQAo0CnQW4AwcB1AAAApgAEwCwAEVYsAovG7EKHD5ZsBDQMDEA//8ANgKYArsFrQMHAdgAAAKYABMAsABFWLAJLxuxCRw+WbAN0DAxAP//AFsCjQKnBa0DBwHZAAACmAAQALAARViwAS8bsQEcPlkwMf//AFYCjQKrBbYDBwHaAAACmAATALAARViwAC8bsQAcPlmwFNAwMQD//wA6ApgCpQWtAwcB2wAAApgAEACwAEVYsAUvG7EFHD5ZMDH//wBPAo0CnwW4AwcB3AAAApgAGQCwAEVYsBEvG7ERHD5ZsBfQsBEQsB/QMDEA//8ASQKRApUFuAMHAd0AAAKYABMAsABFWLAILxuxCBw+WbAZ0DAxAAABAGX+oAQFBIwAGwBOALANL7AARViwAS8bsQEaPlmyBAEKK1gh2Bv0WbIHDQEREjmwBy+yGAEKK1gh2Bv0WbIFBxgREjmwDRCyEgEKK1gh2Bv0WbAHELAb0DAxExMhFSEDNjc2EhUUACMiJzcWMzI2NTQmIyIGB4ZmAxT9fjZvlcjx/uDx4K86gtOZv6WHanUiAXQDGKv+dEACAv714e/+4nKLZc+kj7Y6UwAAAQBK/rYD8gSNAAYAJQCwAS+wAEVYsAUvG7EFGj5ZsgMBCitYIdgb9FmyAAMFERI5MDEBASMBITUhA/L9oLoCV/0bA6gEI/qTBT+YAAIAYP/wBm0EnQATAB0AmrIVHh8REjmwFRCwCtAAsABFWLAJLxuxCRo+WbAARViwCy8bsQsaPlmwAEVYsAIvG7ECED5ZsABFWLAALxuxABA+WbALELIMAQorWCHYG/RZsAAQsA/QsA8vsh8PAV2y3w8BXbIQAQorWCHYG/RZsAAQshMBCitYIdgb9FmwAhCyFAEKK1gh2Bv0WbAJELIXAQorWCHYG/RZMDEhIQUiABE1EAAzBSEVIREhFSERIQU3ESciBhUVFBYGbf1j/o7l/ucBF+UBWwKv/ZsCFP3sAmz78erslq+wEAEyAQc+AQIBNBCZ/rKY/okNBwNnCdbFQsPXAAIAgv6pBD8EoQAYACUASwCwFC+wAEVYsAwvG7EMGj5ZsBQQsgABCitYIdgb9FmyBRQMERI5sAUvsgMFDBESObIaAQorWCHYG/RZsAwQsiABCitYIdgb9FkwMQUyNjcGIyICNTQ2NjMyABMVFAIEIyInNxYTMjY3NTQmIyIGFRQWAd+x3BV3t9L/ddKE6wEFApL+86+fdiZ64GmfIqGSf5ijv/TZaQEU4pzsfv7c/vb63P66rjyOMgH8XFKUxcXDq5XJAAACAHj/6wSJBKEACwAZADkAsABFWLAILxuxCBo+WbAARViwAy8bsQMQPlmwCBCyDwEKK1gh2Bv0WbADELIWAQorWCHYG/RZMDEBEAAgAAM1EAAgABMnNCYjIgYHFRQWMzI2NwSJ/uj+Iv7mAQEZAd4BGQG6sp2bsgK2m5qxAgI8/ur+xQE8ARQUARQBPv7E/usNyuLgxTTJ5d3KAP///7T+SwFlBDoABgCbAAD///+0/ksBZQQ6AAYAmwAA//8AmwAAAVUEOgAGAIwAAP////r+WQFaBDoAJgCMAAAABgCjyAr//wCbAAABVQQ6AAYAjAAA//8Ahv6sAWEEOgAmAIwAAAAHAKwDTgAKAAEAiv/sA/kEnQAhAFwAsABFWLAVLxuxFRo+WbAARViwEC8bsRAQPlmwAEVYsB8vG7EfED5ZsgIBCitYIdgb9FmyGR8VERI5sBkvsQgKK1jYG9xZsBkQsArQsBUQsg0BCitYIdgb9FkwMSUWMzI2NTQmIyM1EyYjIgMRIxE2NjMyFhcBFhYVFAYjIicBw1JYYXKIh1TtTmPTBLgBxclrw2X+7qm217V3aLUze2NiVYkBJz7+9f0GAvXS1lVi/rYPo4aszDEA//8AJQIfAg0CtgIGABEAAAACACUAAATkBbAADwAdAGYAsABFWLAFLxuxBRw+WbAARViwAC8bsQAQPlmyBAAFERI5sAQvss8EAV2yLwQBXbKfBAFxsgEBCitYIdgb9FmwEdCwABCyEgEKK1gh2Bv0WbAFELIbAQorWCHYG/RZsAQQsBzQMDEzESM1MxEhMgQSFxUUAgQHEyERMzISNzU0AicjESHHoqIBm74BJJ8Bn/7ZxEf+5sne9wHp1uABGgKalwJ/qP7KyV3O/sqmAgKa/gMBEvld+AETAv4fAAACACUAAATkBbAADwAdAGYAsABFWLAFLxuxBRw+WbAARViwAC8bsQAQPlmyBAAFERI5sAQvss8EAV2yLwQBXbKfBAFxsgEBCitYIdgb9FmwEdCwABCyEgEKK1gh2Bv0WbAFELIbAQorWCHYG/RZsAQQsBzQMDEzESM1MxEhMgQSFxUUAgQHEyERMzISNzU0AicjESHHoqIBm74BJJ8Bn/7ZxEf+5sne9wHp1uABGgKalwJ/qP7KyV3O/sqmAgKa/gMBEvld+AETAv4fAAABAAAAAAP9BgAAGQBqALAXL7AARViwBC8bsQQYPlmwAEVYsBAvG7EQED5ZsABFWLAILxuxCBA+WbIvFwFdsg8XAV2yFRAXERI5sBUvshIBCitYIdgb9FmwAdCyAhAEERI5sAQQsgwBCitYIdgb9FmwFRCwGNAwMQEhETYzIBMRIxEmJiMiBgcRIxEjNTM1MxUhAnz+53vFAVcDuQFpb1qIJrmqqrkBGQTS/uWX/n39NQLMdXBgTvz9BNKXl5cAAQAxAAAElwWwAA8ATACwAEVYsAovG7EKHD5ZsABFWLACLxuxAhA+WbIPCgIREjmwDy+yAAEKK1gh2Bv0WbAE0LAPELAG0LAKELIIAQorWCHYG/RZsAzQMDEBIxEjESM1MxEhNSEVIREzA6rnv9bW/i0EZv4s5wM3/MkDN5cBRJ6e/rwAAf/0/+wCcAVAAB0AcwCwAEVYsAEvG7EBGD5ZsABFWLARLxuxERA+WbABELAA0LAAL7ABELIEAQorWCHYG/RZsAEQsAXQsAUvsgAFAV2yCAEKK1gh2Bv0WbARELIMAQorWCHYG/RZsAgQsBXQsAUQsBjQsAQQsBnQsAEQsBzQMDEBETMVIxUzFSMRFBYzMjcVBiMiJjURIzUzNSM1MxEBh8rK6ek2QSA4SUV8ftraxcUFQP76j7qX/rJBQQyWFJaKAU6Xuo8BBv//ABwAAAUdBzQCJgAlAAABBwBEATABNgAUALAARViwBC8bsQQcPlmxDAj0MDH//wAcAAAFHQc0AiYAJQAAAQcAdQG/ATYAFACwAEVYsAUvG7EFHD5ZsQ0I9DAx//8AHAAABR0HNgImACUAAAEHAJ0AyQE2ABQAsABFWLAELxuxBBw+WbEPBvQwMf//ABwAAAUdByICJgAlAAABBwCkAMUBOgAUALAARViwBS8bsQUcPlmxDgT0MDH//wAcAAAFHQb7AiYAJQAAAQcAagD5ATYAFwCwAEVYsAQvG7EEHD5ZsREE9LAb0DAxAP//ABwAAAUdB5ECJgAlAAABBwCiAVABQQAXALAARViwBC8bsQQcPlmxDgb0sBjQMDEA//8AHAAABR0HlAImACUAAAAHAd8BWgEi//8Ad/5EBNgFxAImACcAAAAHAHkB0v/3//8AqQAABEYHQAImACkAAAEHAEQA+wFCABQAsABFWLAGLxuxBhw+WbENCPQwMf//AKkAAARGB0ACJgApAAABBwB1AYoBQgAUALAARViwBi8bsQYcPlmxDgj0MDH//wCpAAAERgdCAiYAKQAAAQcAnQCUAUIAFACwAEVYsAYvG7EGHD5ZsRAG9DAx//8AqQAABEYHBwImACkAAAEHAGoAxAFCABcAsABFWLAGLxuxBhw+WbESBPSwG9AwMQD////gAAABgQdAAiYALQAAAQcARP+nAUIAFACwAEVYsAIvG7ECHD5ZsQUI9DAx//8AsAAAAlEHQAImAC0AAAEHAHUANQFCABQAsABFWLADLxuxAxw+WbEGCPQwMf///+kAAAJGB0ICJgAtAAABBwCd/0ABQgAUALAARViwAi8bsQIcPlmxCAb0MDH////WAAACXwcHAiYALQAAAQcAav9wAUIAFwCwAEVYsAIvG7ECHD5ZsQoE9LAU0DAxAP//AKkAAAUIByICJgAyAAABBwCkAPsBOgAUALAARViwBi8bsQYcPlmxDQT0MDH//wB2/+wFCQc2AiYAMwAAAQcARAFSATgAFACwAEVYsA0vG7ENHD5ZsSEI9DAx//8Adv/sBQkHNgImADMAAAEHAHUB4QE4ABQAsABFWLANLxuxDRw+WbEiCPQwMf//AHb/7AUJBzgCJgAzAAABBwCdAOsBOAAUALAARViwDS8bsQ0cPlmxIgb0MDH//wB2/+wFCQckAiYAMwAAAQcApADnATwAFACwAEVYsA0vG7ENHD5ZsSME9DAx//8Adv/sBQkG/QImADMAAAEHAGoBGwE4ABcAsABFWLANLxuxDRw+WbEnBPSwMNAwMQD//wCM/+wEqgc0AiYAOQAAAQcARAErATYAFACwAEVYsAovG7EKHD5ZsRQI9DAx//8AjP/sBKoHNAImADkAAAEHAHUBugE2ABQAsABFWLASLxuxEhw+WbEVCPQwMf//AIz/7ASqBzYCJgA5AAABBwCdAMQBNgAUALAARViwCi8bsQocPlmxFwb0MDH//wCM/+wEqgb7AiYAOQAAAQcAagD0ATYAFwCwAEVYsAovG7EKHD5ZsRkE9LAj0DAxAP//AA8AAAS7BzQCJgA9AAABBwB1AYgBNgAUALAARViwAS8bsQEcPlmxCwj0MDH//wBt/+wD6gX+AiYARQAAAQcARADVAAAAFACwAEVYsBcvG7EXGD5ZsSoJ9DAx//8Abf/sA+oF/gImAEUAAAEHAHUBZAAAABQAsABFWLAXLxuxFxg+WbErCfQwMf//AG3/7APqBgACJgBFAAABBgCdbgAAFACwAEVYsBcvG7EXGD5ZsSsB9DAx//8Abf/sA+oF7AImAEUAAAEGAKRqBAAUALAARViwFy8bsRcYPlmxLAH0MDH//wBt/+wD6gXFAiYARQAAAQcAagCeAAAAFwCwAEVYsBcvG7EXGD5ZsTAB9LA50DAxAP//AG3/7APqBlsCJgBFAAABBwCiAPUACwAXALAARViwFy8bsRcYPlmxLAT0sDbQMDEA//8Abf/sA+oGXwImAEUAAAAHAd8A///t//8AXP5EA+wETgImAEcAAAAHAHkBP//3//8AXf/sA/MF/gImAEkAAAEHAEQAxQAAABQAsABFWLAILxuxCBg+WbEfCfQwMf//AF3/7APzBf4CJgBJAAABBwB1AVQAAAAUALAARViwCC8bsQgYPlmxIAn0MDH//wBd/+wD8wYAAiYASQAAAQYAnV4AABQAsABFWLAILxuxCBg+WbEgAfQwMf//AF3/7APzBcUCJgBJAAABBwBqAI4AAAAXALAARViwCC8bsQgYPlmxJQH0sC7QMDEA////xgAAAWcF/QImAIwAAAEGAESN/wAUALAARViwAi8bsQIYPlmxBQn0MDH//wCWAAACNwX9AiYAjAAAAQYAdRv/ABQAsABFWLADLxuxAxg+WbEGCfQwMf///88AAAIsBf8CJgCMAAABBwCd/yb//wAUALAARViwAi8bsQIYPlmxCAH0MDH///+8AAACRQXEAiYAjAAAAQcAav9W//8AFwCwAEVYsAIvG7ECGD5ZsQsB9LAU0DAxAP//AIwAAAPfBewCJgBSAAABBgCkYQQAFACwAEVYsAMvG7EDGD5ZsRUB9DAx//8AW//sBDQF/gImAFMAAAEHAEQAzwAAABQAsABFWLAELxuxBBg+WbEdCfQwMf//AFv/7AQ0Bf4CJgBTAAABBwB1AV4AAAAUALAARViwBC8bsQQYPlmxHgn0MDH//wBb/+wENAYAAiYAUwAAAQYAnWgAABQAsABFWLAELxuxBBg+WbEeAfQwMf//AFv/7AQ0BewCJgBTAAABBgCkZAQAFACwAEVYsAQvG7EEGD5ZsR8B9DAx//8AW//sBDQFxQImAFMAAAEHAGoAmAAAABcAsABFWLAELxuxBBg+WbEjAfSwLNAwMQD//wCI/+wD3AX+AiYAWQAAAQcARADHAAAAFACwAEVYsAcvG7EHGD5ZsRIJ9DAx//8AiP/sA9wF/gImAFkAAAEHAHUBVgAAABQAsABFWLANLxuxDRg+WbETCfQwMf//AIj/7APcBgACJgBZAAABBgCdYAAAFACwAEVYsAcvG7EHGD5ZsRUB9DAx//8AiP/sA9wFxQImAFkAAAEHAGoAkAAAABcAsABFWLAHLxuxBxg+WbEYAfSwIdAwMQD//wAW/ksDsAX+AiYAXQAAAQcAdQEbAAAAFACwAEVYsAEvG7EBGD5ZsRIJ9DAx//8AFv5LA7AFxQImAF0AAAEGAGpVAAAXALAARViwDy8bsQ8YPlmxFwH0sCDQMDEA//8AHAAABR0G7gImACUAAAEHAHAAxwE+ABMAsABFWLAELxuxBBw+WbAM3DAxAP//AG3/7APqBbgCJgBFAAABBgBwbAgAEwCwAEVYsBcvG7EXGD5ZsCrcMDEA//8AHAAABR0HDgImACUAAAEHAKAA9AE3ABMAsABFWLAELxuxBBw+WbAN3DAxAP//AG3/7APqBdgCJgBFAAABBwCgAJkAAQATALAARViwFy8bsRcYPlmwK9wwMQAAAgAc/k8FHQWwABYAGQBnALAARViwFi8bsRYcPlmwAEVYsBQvG7EUED5ZsABFWLABLxuxARA+WbAARViwDC8bsQwSPlmyBwMKK1gh2Bv0WbABELAR0LARL7IXFBYREjmwFy+yEwEKK1gh2Bv0WbIZFhQREjkwMQEBIwcGFRQzMjcXBiMiJjU0NwMhAyMBAyEDAvACLSY6cU4wNA1GWllnqYf9nonGAiyjAe/4BbD6UC1bVkgaeSxoVpBsAXP+hAWw/GoCqQAAAgBt/k8D6gROAC0ANwCQALAARViwFy8bsRcYPlmwAEVYsAQvG7EEED5ZsABFWLAeLxuxHhA+WbAARViwKS8bsSkSPlmwHhCwANCwAC+yAgQXERI5sgsXBBESObALL7AXELIPAQorWCHYG/RZshILFxESObApELIkAworWCHYG/RZsAQQsi4BCitYIdgb9FmwCxCyMwEKK1gh2Bv0WTAxJSYnBiMiJjU0JDMzNTQmIyIGFSM0NjYzMhYXERQXFSMHBhUUMzI3FwYjIiY1NCcyNjc1IyAVFBYDJA8HgbOgzQEB6bR0cWOGunPFdrvUBCYhOnFOMDQNRlpZZ4hXnCOR/qx0ByZFhrWLqbtVYXNkR1GXWLuk/g6VWBAtW1ZIGnksaFaQ8FpI3sdXYgD//wB3/+wE2AdVAiYAJwAAAQcAdQHGAVcAFACwAEVYsAsvG7ELHD5ZsR8I9DAx//8AXP/sA+wF/gImAEcAAAEHAHUBMwAAABQAsABFWLAQLxuxEBg+WbEgCfQwMf//AHf/7ATYB1cCJgAnAAABBwCdANABVwAUALAARViwCy8bsQscPlmxHwb0MDH//wBc/+wD7AYAAiYARwAAAQYAnT0AABQAsABFWLAQLxuxEBg+WbEgAfQwMf//AHf/7ATYBxkCJgAnAAABBwChAa4BVwAUALAARViwCy8bsQscPlmxIwT0MDH//wBc/+wD7AXCAiYARwAAAQcAoQEbAAAAFACwAEVYsBAvG7EQGD5ZsSQB9DAx//8Ad//sBNgHVwImACcAAAEHAJ4A5gFYABQAsABFWLALLxuxCxw+WbEhBvQwMf//AFz/7APsBgACJgBHAAABBgCeUwEAFACwAEVYsBAvG7EQGD5ZsSIB9DAx//8AqQAABMYHQgImACgAAAEHAJ4AnwFDABQAsABFWLABLxuxARw+WbEbBvQwMf//AF//7AUrBgIAJgBIAAABBwGiA9QFEwBIALLwHwFysh8fAV2ynx8BXbIfHwFxtM8f3x8CcbLfHwFysl8fAXKyTx8BcbLPHwFdtE8fXx8CXbJgHwFdsuAfAXGy4B8BXTAx//8AqQAABEYG+gImACkAAAEHAHAAkgFKABMAsABFWLAGLxuxBhw+WbAN3DAxAP//AF3/7APzBbgCJgBJAAABBgBwXAgAEwCwAEVYsAgvG7EIGD5ZsB/cMDEA//8AqQAABEYHGgImACkAAAEHAKAAvwFDABMAsABFWLAGLxuxBhw+WbAP3DAxAP//AF3/7APzBdgCJgBJAAABBwCgAIkAAQATALAARViwCC8bsQgYPlmwIdwwMQD//wCpAAAERgcEAiYAKQAAAQcAoQFyAUIAFACwAEVYsAYvG7EGHD5ZsRME9DAx//8AXf/sA/MFwgImAEkAAAEHAKEBPAAAABQAsABFWLAILxuxCBg+WbElAfQwMQABAKn+TwRGBbAAGwB2ALAARViwFi8bsRYcPlmwAEVYsBUvG7EVED5ZsABFWLAPLxuxDxI+WbAARViwBC8bsQQQPlmyGhUWERI5sBovsgEBCitYIdgb9FmwFRCyAgEKK1gh2Bv0WbAPELIKAworWCHYG/RZsBYQshkBCitYIdgb9FkwMQEhESEVIwcGFRQzMjcXBiMiJjU0NyERIRUhESED4P2JAt1JOnFOMDQNRlpZZ5v9XQOT/S0CdwKh/fydLVtWSBp5LGhWimkFsJ7+LAAAAgBd/mgD8wROACUALQB6ALAARViwGi8bsRoYPlmwAEVYsA0vG7ENEj5ZsABFWLASLxuxEhA+WbAE0LANELIIAworWCHYG/RZsioSGhESObAqL7S/Ks8qAl2yHgEKK1gh2Bv0WbASELIiAQorWCHYG/RZsiUSGhESObAaELImAQorWCHYG/RZMDElBgczBwYVFDMyNxcGIyImNTQ3JgA1NTQ2NjMyEhEVIRYWMzI2NwEiBgchNSYmA+VHcwE6cU4wNA1GWllnYtr+9XvdgdPq/SMEs4piiDP+wnCYEgIeCIi9bjYtW1ZIGnksaFZsWgQBIe8hof2P/ur+/U2gxVBCAqGjkw6NmwD//wCpAAAERgdCAiYAKQAAAQcAngCqAUMAFACwAEVYsAYvG7EGHD5ZsREG9DAx//8AXf/sA/MGAAImAEkAAAEGAJ50AQAUALAARViwCC8bsQgYPlmxIgH0MDH//wB6/+wE3AdXAiYAKwAAAQcAnQDIAVcAFACwAEVYsAsvG7ELHD5ZsSIG9DAx//8AYP5WA/IGAAImAEsAAAEGAJ1VAAAUALAARViwAy8bsQMYPlmxJwH0MDH//wB6/+wE3AcvAiYAKwAAAQcAoADzAVgAEwCwAEVYsAsvG7ELHD5ZsCLcMDEA//8AYP5WA/IF2AImAEsAAAEHAKAAgAABABMAsABFWLADLxuxAxg+WbAn3DAxAP//AHr/7ATcBxkCJgArAAABBwChAaYBVwAUALAARViwCy8bsQscPlmxJwT0MDH//wBg/lYD8gXCAiYASwAAAQcAoQEzAAAAFACwAEVYsAMvG7EDGD5ZsSwB9DAx//8Aev3/BNwFxAImACsAAAAHAaIBo/6g//8AYP5WA/IGkwImAEsAAAEHAbkBKwBYABMAsABFWLADLxuxAxg+WbAq3DAxAP//AKkAAAUIB0ICJgAsAAABBwCdAPEBQgAUALAARViwBy8bsQccPlmxEAb0MDH//wCMAAAD3wdBAiYATAAAAQcAnQAdAUEACQCwES+wFNwwMQD///+3AAACegcuAiYALQAAAQcApP88AUYAFACwAEVYsAMvG7EDHD5ZsQcE9DAx////nQAAAmAF6gImAIwAAAEHAKT/IgACABQAsABFWLADLxuxAxg+WbEHAfQwMf///7YAAAKABvoCJgAtAAABBwBw/z4BSgATALAARViwAi8bsQIcPlmwBdwwMQD///+cAAACZgW2AiYAjAAAAQcAcP8kAAYAEwCwAEVYsAIvG7ECGD5ZsAXcMDEA////7AAAAkMHGgImAC0AAAEHAKD/awFDABMAsABFWLACLxuxAhw+WbAH3DAxAP///9IAAAIpBdcCJgCMAAABBwCg/1EAAAATALAARViwAi8bsQIYPlmwB9wwMQD//wAY/lgBeAWwAiYALQAAAAYAo+YJ////+/5PAWgFxAImAE0AAAAGAKPJAP//AKoAAAGFBwQCJgAtAAABBwChAB0BQgAUALAARViwAi8bsQIcPlmxCwT0MDH//wC3/+wF+QWwACYALQAAAAcALgItAAD//wCN/ksDSgXEACYATQAAAAcATgHxAAD//wA1/+wEggc1AiYALgAAAQcAnQF8ATUAFACwAEVYsAAvG7EAHD5ZsRQG9DAx////tP5LAjkF2AImAJsAAAEHAJ3/M//YABQAsABFWLANLxuxDRg+WbESBPQwMf//AKn9/wUFBbACJgAvAAAABwGiAZT+oP//AI39/wQMBgACJgBPAAAABwGiARH+oP//AKEAAAQcBy8CJgAwAAABBwB1ACYBMQAUALAARViwBS8bsQUcPlmxCAj0MDH//wCTAAACNAeUAiYAUAAAAQcAdQAYAZYAFACwAEVYsAMvG7EDHj5ZsQYJ9DAx//8Aqf3/BBwFsAImADAAAAAHAaIBbP6g//8AV/3/AVUGAAImAFAAAAAHAaL/+/6g//8AqQAABBwFsQImADAAAAEHAaIB1QTCABAAsABFWLAKLxuxChw+WTAx//8AnAAAAq0GAgAmAFAAAAEHAaIBVgUTAFAAsh8IAV2ynwgBXbQfCC8IAnGyrwgBcbQvCD8IAnKy3wgBcrZfCG8IfwgDcrTPCN8IAnGyTwgBcbLPCAFdtE8IXwgCXbJgCAFdsvAIAXIwMf//AKkAAAQcBbACJgAwAAAABwChAbz9xf//AJwAAAKgBgAAJgBQAAAABwChATj9tv//AKkAAAUIBzQCJgAyAAABBwB1AfUBNgAUALAARViwCC8bsQgcPlmxDAj0MDH//wCMAAAD3wX+AiYAUgAAAQcAdQFbAAAAFACwAEVYsAMvG7EDGD5ZsRQJ9DAx//8Aqf3/BQgFsAImADIAAAAHAaIB0P6g//8AjP3/A98ETgImAFIAAAAHAaIBM/6g//8AqQAABQgHNgImADIAAAEHAJ4BFQE3ABQAsABFWLAGLxuxBhw+WbEPBvQwMf//AIwAAAPfBgACJgBSAAABBgCeewEAFACwAEVYsAMvG7EDGD5ZsRYB9DAx////vAAAA98GBAImAFIAAAEHAaL/YAUVAAYAsBcvMDH//wB2/+wFCQbwAiYAMwAAAQcAcADpAUAAEwCwAEVYsA0vG7ENHD5ZsCHcMDEA//8AW//sBDQFuAImAFMAAAEGAHBmCAATALAARViwBC8bsQQYPlmwHdwwMQD//wB2/+wFCQcQAiYAMwAAAQcAoAEWATkAEwCwAEVYsA0vG7ENHD5ZsCLcMDEA//8AW//sBDQF2AImAFMAAAEHAKAAkwABABMAsABFWLAELxuxBBg+WbAf3DAxAP//AHb/7AUJBzcCJgAzAAABBwClAWsBOAAXALAARViwDS8bsQ0cPlmxJgj0sCLQMDEA//8AW//sBDQF/wImAFMAAAEHAKUA6AAAABcAsABFWLAELxuxBBg+WbEiCfSwHtAwMQD//wCoAAAEyQc0AiYANgAAAQcAdQGAATYAFACwAEVYsAQvG7EEHD5ZsRoI9DAx//8AjAAAAtIF/gImAFYAAAEHAHUAtgAAABQAsABFWLALLxuxCxg+WbEQCfQwMf//AKj9/wTJBbACJgA2AAAABwGiAWP+oP//AFP9/wKXBE4CJgBWAAAABwGi//f+oP//AKgAAATJBzYCJgA2AAABBwCeAKABNwAUALAARViwBC8bsQQcPlmxHQb0MDH//wBjAAACzQYAAiYAVgAAAQYAntcBABQAsABFWLALLxuxCxg+WbESAfQwMf//AFD/7ARyBzYCJgA3AAABBwB1AY0BOAAUALAARViwBi8bsQYcPlmxKQj0MDH//wBf/+wDuwX+AiYAVwAAAQcAdQFRAAAAFACwAEVYsAkvG7EJGD5ZsSkJ9DAx//8AUP/sBHIHOAImADcAAAEHAJ0AlwE4ABQAsABFWLAGLxuxBhw+WbEpBvQwMf//AF//7AO7BgACJgBXAAABBgCdWwAAFACwAEVYsAkvG7EJGD5ZsSkB9DAx//8AUP5NBHIFxAImADcAAAAHAHkBnwAA//8AX/5FA7sETgImAFcAAAAHAHkBXf/4//8AUP3/BHIFxAImADcAAAAHAaIBdf6g//8AX/3/A7sETgImAFcAAAAHAaIBM/6g//8AUP/sBHIHOAImADcAAAEHAJ4ArQE5ABQAsABFWLAGLxuxBhw+WbErBvQwMf//AF//7AO7BgACJgBXAAABBgCecQEAFACwAEVYsAkvG7EJGD5ZsSsB9DAx//8AMf3/BJcFsAImADgAAAAHAaIBZv6g//8ACf3/AlYFQAImAFgAAAAHAaIAxf6g//8AMf5NBJcFsAImADgAAAAHAHkBkAAA//8ACf5NApkFQAImAFgAAAAHAHkA7wAA//8AMQAABJcHNgImADgAAAEHAJ4AogE3ABQAsABFWLAGLxuxBhw+WbENBvQwMf//AAn/7ALsBnkAJgBYAAAABwGiAZUFiv//AIz/7ASqByICJgA5AAABBwCkAMABOgAUALAARViwEi8bsRIcPlmxFgT0MDH//wCI/+wD3AXsAiYAWQAAAQYApFwEABQAsABFWLANLxuxDRg+WbEUAfQwMf//AIz/7ASqBu4CJgA5AAABBwBwAMIBPgATALAARViwEi8bsRIcPlmwE9wwMQD//wCI/+wD3AW4AiYAWQAAAQYAcF4IABMAsABFWLAHLxuxBxg+WbAS3DAxAP//AIz/7ASqBw4CJgA5AAABBwCgAO8BNwATALAARViwCi8bsQocPlmwFtwwMQD//wCI/+wD3AXYAiYAWQAAAQcAoACLAAEAEwCwAEVYsAcvG7EHGD5ZsBTcMDEA//8AjP/sBKoHkQImADkAAAEHAKIBSwFBABcAsABFWLAKLxuxChw+WbEWBvSwINAwMQD//wCI/+wD3AZbAiYAWQAAAQcAogDnAAsAFwCwAEVYsAcvG7EHGD5ZsRQE9LAe0DAxAP//AIz/7ASqBzUCJgA5AAABBwClAUQBNgAXALAARViwEi8bsRIcPlmxFQj0sBnQMDEA//8AiP/sBAwF/wImAFkAAAEHAKUA4AAAABcAsABFWLANLxuxDRg+WbETCfSwF9AwMQAAAQCM/nsEqgWwACAAUwCwAEVYsBgvG7EYHD5ZsABFWLANLxuxDRI+WbAARViwEy8bsRMQPlmwGBCwINCyBBMgERI5sA0QsggDCitYIdgb9FmwExCyHAEKK1gh2Bv0WTAxAREGBgcGFRQzMjcXBiMiJjU0NwciACcRMxEUFjMyNjURBKoBioObTjA0DUZaWWdPFu/+5AK+rqGjrQWw/CGU4jtyYEgaeSxoVmFTAQEC4gPg/Caer66eA9sAAQCI/k8D5gQ6AB8AbQCwAEVYsBcvG7EXGD5ZsABFWLAdLxuxHRg+WbAARViwHy8bsR8QPlmwAEVYsBIvG7ESED5ZsABFWLAKLxuxChI+WbIFAworWCHYG/RZsB8QsA/QsA8vshASHRESObASELIaAQorWCHYG/RZMDEhBwYVFDMyNxcGIyImNTQ3JwYjIiYnETMRFDMyNxEzEQPSOnFOMDQNRlpZZ6YEbNGttQG5yNRGuS1bVkgaeSxoVo9qZX/JxQLA/UX2ngMT+8b//wA9AAAG7Qc2AiYAOwAAAQcAnQHFATYAFACwAEVYsAMvG7EDHD5ZsRcG9DAx//8AKwAABdMGAAImAFsAAAEHAJ0BJAAAABQAsABFWLAMLxuxDBg+WbEPAfQwMf//AA8AAAS7BzYCJgA9AAABBwCdAJIBNgAUALAARViwAS8bsQEcPlmxCwb0MDH//wAW/ksDsAYAAiYAXQAAAQYAnSUAABQAsABFWLAPLxuxDxg+WbEUAfQwMf//AA8AAAS7BvsCJgA9AAABBwBqAMIBNgAXALAARViwCC8bsQgcPlmxEAT0sBnQMDEA//8AVgAABHoHNAImAD4AAAEHAHUBhwE2ABQAsABFWLAHLxuxBxw+WbEMCPQwMf//AFgAAAOzBf4CJgBeAAABBwB1ASEAAAAUALAARViwBy8bsQcYPlmxDAn0MDH//wBWAAAEegb4AiYAPgAAAQcAoQFvATYAFACwAEVYsAcvG7EHHD5ZsREE9DAx//8AWAAAA7MFwgImAF4AAAEHAKEBCQAAABQAsABFWLAHLxuxBxg+WbERAfQwMf//AFYAAAR6BzYCJgA+AAABBwCeAKcBNwAUALAARViwBy8bsQccPlmxDwb0MDH//wBYAAADswYAAiYAXgAAAQYAnkEBABQAsABFWLAHLxuxBxg+WbEPAfQwMf////IAAAdXB0ACJgCBAAABBwB1AskBQgAUALAARViwBi8bsQYcPlmxFQj0MDH//wBO/+wGfAX/AiYAhgAAAQcAdQJ6AAEAFACwAEVYsB0vG7EdGD5ZsUAJ9DAx//8Adv+jBR0HfgImAIMAAAEHAHUB6QGAABQAsABFWLAQLxuxEBw+WbEsCPQwMf//AFv/egQ0Bf4CJgCJAAABBwB1ATcAAAAUALAARViwBC8bsQQYPlmxKQn0MDH///++AAAEHwSNAiYBvQAAAQcB3v8v/3gALACyHxgBcbTfGO8YAnG0HxgvGAJdsh8YAXKyTxgBcbTvGP8YAl2yXxgBXTAx////vgAABB8EjQImAb0AAAEHAd7/L/94ADYAtO8X/xcCXbJPFwFxsh8XAXKy3xcBcrJvFwFytN8X7xcCcbIfFwFxsl8XAV20HxcvFwJdMDH//wAoAAAD/QSNAiYBzQAAAQYB3kXgAA0AsgMKAV2ysAoBXTAxAP//ABMAAARwBhwCJgG6AAABBwBEANUAHgAUALAARViwBC8bsQQaPlmxDAb0MDH//wATAAAEcAYcAiYBugAAAQcAdQFkAB4AFACwAEVYsAUvG7EFGj5ZsQ0G9DAx//8AEwAABHAGHgImAboAAAEGAJ1uHgAUALAARViwBC8bsQQaPlmxDwT0MDH//wATAAAEcAYKAiYBugAAAQYApGoiABQAsABFWLAFLxuxBRo+WbEOAvQwMf//ABMAAARwBeMCJgG6AAABBwBqAJ4AHgAXALAARViwBC8bsQQaPlmxEgL0sBvQMDEA//8AEwAABHAGeQImAboAAAEHAKIA9QApABcAsABFWLAELxuxBBo+WbEOBvSwGNAwMQD//wATAAAEcAZ8AiYBugAAAAcB3wD/AAr//wBg/koEMASdAiYBvAAAAAcAeQF0//3//wCKAAADrgYcAiYBvgAAAQcARACoAB4AFACwAEVYsAYvG7EGGj5ZsQ0G9DAx//8AigAAA64GHAImAb4AAAEHAHUBNwAeABQAsABFWLAHLxuxBxo+WbEOBvQwMf//AIoAAAOuBh4CJgG+AAABBgCdQR4AFACwAEVYsAYvG7EGGj5ZsRAE9DAx//8AigAAA64F4wImAb4AAAEGAGpxHgAXALAARViwBi8bsQYaPlmxEwL0sBzQMDEA////vgAAAV8GHAImAcIAAAEGAESFHgAUALAARViwAi8bsQIaPlmxBQb0MDH//wCOAAACLwYcAiYBwgAAAQYAdRMeABQAsABFWLADLxuxAxo+WbEGBvQwMf///8cAAAIkBh4CJgHCAAABBwCd/x4AHgAUALAARViwAi8bsQIaPlmxCAT0MDH///+0AAACPQXjAiYBwgAAAQcAav9OAB4AFwCwAEVYsAIvG7ECGj5ZsQsC9LAU0DAxAP//AIoAAARYBgoCJgHHAAABBwCkAJUAIgAUALAARViwBi8bsQYaPlmxDQL0MDH//wBg//AEWgYcAiYByAAAAQcARADuAB4AFACwAEVYsAovG7EKGj5ZsR0G9DAx//8AYP/wBFoGHAImAcgAAAEHAHUBfQAeABQAsABFWLAKLxuxCho+WbEeBvQwMf//AGD/8ARaBh4CJgHIAAABBwCdAIcAHgAUALAARViwCi8bsQoaPlmxIAT0MDH//wBg//AEWgYKAiYByAAAAQcApACDACIAFACwAEVYsAovG7EKGj5ZsR8C9DAx//8AYP/wBFoF4wImAcgAAAEHAGoAtwAeABcAsABFWLAKLxuxCho+WbEjAvSwLNAwMQD//wB0//AECgYcAiYBzgAAAQcARADPAB4AFACwAEVYsAkvG7EJGj5ZsRMG9DAx//8AdP/wBAoGHAImAc4AAAEHAHUBXgAeABQAsABFWLARLxuxERo+WbEUBvQwMf//AHT/8AQKBh4CJgHOAAABBgCdaB4AFACwAEVYsAkvG7EJGj5ZsRYE9DAx//8AdP/wBAoF4wImAc4AAAEHAGoAmAAeABcAsABFWLAJLxuxCRo+WbEZAvSwItAwMQD//wANAAAEHAYcAiYB0gAAAQcAdQEzAB4AFACwAEVYsAEvG7EBGj5ZsQsG9DAx//8AEwAABHAF1gImAboAAAEGAHBsJgATALAARViwBC8bsQQaPlmwDNwwMQD//wATAAAEcAX2AiYBugAAAQcAoACZAB8AFACwAEVYsAQvG7EEGj5ZsQ4I9DAxAAIAE/5PBHAEjQAWABkAZwCwAEVYsAAvG7EAGj5ZsABFWLAULxuxFBA+WbAARViwAS8bsQEQPlmwAEVYsAwvG7EMEj5ZsgcDCitYIdgb9FmwARCwEdCwES+yFxQAERI5sBcvshMBCitYIdgb9FmyGQAUERI5MDEBASMHBhUUMzI3FwYjIiY1NDcDIQMjAQMhAwKYAdgmOnFOMDQNRlpZZ7Bo/fhuvQHfeAGRxwSN+3MtW1ZIGnksaFaUbAEK/ukEjf0hAf0A//8AYP/wBDAGHAImAbwAAAEHAHUBaQAeABQAsABFWLALLxuxCxo+WbEfBvQwMf//AGD/8AQwBh4CJgG8AAABBgCdcx4AFACwAEVYsAsvG7ELGj5ZsSEE9DAx//8AYP/wBDAF4AImAbwAAAEHAKEBUQAeABQAsABFWLALLxuxCxo+WbEjAvQwMf//AGD/8AQwBh4CJgG8AAABBwCeAIkAHwAUALAARViwCy8bsQsaPlmxIQb0MDH//wCKAAAEHwYeAiYBvQAAAQYAnjIfABQAsABFWLABLxuxARo+WbEaBvQwMf//AIoAAAOuBdYCJgG+AAABBgBwPyYAEwCwAEVYsAYvG7EGGj5ZsA3cMDEA//8AigAAA64F9gImAb4AAAEGAKBsHwAUALAARViwBi8bsQYaPlmxDwj0MDH//wCKAAADrgXgAiYBvgAAAQcAoQEfAB4AFACwAEVYsAYvG7EGGj5ZsRMC9DAxAAEAiv5PA64EjQAbAHgAsABFWLAWLxuxFho+WbAARViwFC8bsRQQPlmwAEVYsA8vG7EPEj5ZsBQQsBvQsBsvsh8bAV2y3xsBXbIAAQorWCHYG/RZsBQQsgIBCitYIdgb9FmwFBCwBdCwDxCyCgMKK1gh2Bv0WbAWELIZAQorWCHYG/RZMDEBIREhFSMHBhUUMzI3FwYjIiY1NDchESEVIREhA1f97AJrPTpxTjA0DUZaWWeb/coDHv2bAhQCDv6Jly1bVkgaeSxoVoppBI2Z/rIA//8AigAAA64GHgImAb4AAAEGAJ5XHwAUALAARViwBi8bsQYaPlmxEQb0MDH//wBj//AENQYeAiYBwAAAAQYAnXEeABQAsABFWLAKLxuxCho+WbEgBPQwMf//AGP/8AQ1BfYCJgHAAAABBwCgAJwAHwAUALAARViwCi8bsQoaPlmxIAj0MDH//wBj//AENQXgAiYBwAAAAQcAoQFPAB4AFACwAEVYsAovG7EKGj5ZsSUC9DAx//8AY/38BDUEnQImAcAAAAAHAaIBT/6d//8AigAABFgGHgImAcEAAAEHAJ0AkAAeABQAsABFWLAHLxuxBxo+WbEQBPQwMf///5UAAAJYBgoCJgHCAAABBwCk/xoAIgAUALAARViwAy8bsQMaPlmxBwL0MDH///+UAAACXgXWAiYBwgAAAQcAcP8cACYAEwCwAEVYsAIvG7ECGj5ZsAXcMDEA////ygAAAiEF9gImAcIAAAEHAKD/SQAfABQAsABFWLACLxuxAho+WbEHCPQwMf//AAb+TwFmBI0CJgHCAAAABgCj1AD//wCJAAABZAXgAiYBwgAAAQYAofweABQAsABFWLACLxuxAho+WbELAvQwMf//ACv/8AQNBh4CJgHDAAABBwCdAQcAHgAUALAARViwAC8bsQAaPlmxFAT0MDH//wCK/fwEVwSNAiYBxAAAAAcBogEU/p3//wCCAAADiwYcAiYBxQAAAQYAdQceABQAsABFWLAFLxuxBRo+WbEIBvQwMf//AIr9/AOLBI0CJgHFAAAABwGiARD+nf//AIoAAAOLBI4CJgHFAAABBwGiAX4DnwAQALAARViwCi8bsQoaPlkwMf//AIoAAAOLBI0CJgHFAAAABwChAWb9N///AIoAAARYBhwCJgHHAAABBwB1AY8AHgAUALAARViwCC8bsQgaPlmxDAb0MDH//wCK/fwEWASNAiYBxwAAAAcBogFs/p3//wCKAAAEWAYeAiYBxwAAAQcAngCvAB8AFACwAEVYsAYvG7EGGj5ZsQ8G9DAx//8AYP/wBFoF1gImAcgAAAEHAHAAhQAmABMAsABFWLAKLxuxCho+WbAd3DAxAP//AGD/8ARaBfYCJgHIAAABBwCgALIAHwAUALAARViwCi8bsQoaPlmxHwj0MDH//wBg//AEWgYdAiYByAAAAQcApQEHAB4AFwCwAEVYsAovG7EKGj5ZsR4G9LAi0DAxAP//AIoAAAQlBhwCJgHLAAABBwB1AScAHgAUALAARViwBS8bsQUaPlmxGQb0MDH//wCK/fwEJQSNAiYBywAAAAcBogEN/p3//wCKAAAEJQYeAiYBywAAAQYAnkcfABQAsABFWLAELxuxBBo+WbEcBvQwMf//AEP/8APdBhwCJgHMAAABBwB1AT4AHgAUALAARViwCS8bsQkaPlmxKAb0MDH//wBD//AD3QYeAiYBzAAAAQYAnUgeABQAsABFWLAJLxuxCRo+WbEqBPQwMf//AEP+TQPdBJ0CJgHMAAAABwB5AVMAAP//AEP/8APdBh4CJgHMAAABBgCeXh8AFACwAEVYsAkvG7EJGj5ZsSoG9DAx//8AKP38A/0EjQImAc0AAAAHAaIBFP6d//8AKAAAA/0GHgImAc0AAAEGAJ5RHwAUALAARViwBi8bsQYaPlmxDQb0MDH//wAo/k8D/QSNAiYBzQAAAAcAeQE+AAL//wB0//AECgYKAiYBzgAAAQYApGQiABQAsABFWLARLxuxERo+WbEVAvQwMf//AHT/8AQKBdYCJgHOAAABBgBwZiYAEwCwAEVYsAkvG7EJGj5ZsBPcMDEA//8AdP/wBAoF9gImAc4AAAEHAKAAkwAfABQAsABFWLAJLxuxCRo+WbEVCPQwMf//AHT/8AQKBnkCJgHOAAABBwCiAO8AKQAXALAARViwCS8bsQkaPlmxFQb0sB/QMDEA//8AdP/wBBQGHQImAc4AAAEHAKUA6AAeABcAsABFWLARLxuxERo+WbEUBvSwGNAwMQAAAQB0/nQECgSNACAAUwCwAEVYsBgvG7EYGj5ZsABFWLAOLxuxDhI+WbAARViwEy8bsRMQPlmwGBCwINCyBRMgERI5sA4QsgkDCitYIdgb9FmwExCyHAEKK1gh2Bv0WTAxAREUBgcHBhUUMzI3FwYjIiY1NDciJicRMxEUFjMyNjURBAp4bzJsTjA0DUZaWWdazfkEt4+Fg48EjfzzerowKFtSSBp5LGhWaFbOuAMX/PR5gX97AwwA//8AMQAABfEGHgImAdAAAAEHAJ0BOwAeABQAsABFWLADLxuxAxo+WbEXBPQwMf//AA0AAAQcBh4CJgHSAAABBgCdPR4AFACwAEVYsAgvG7EIGj5ZsQ0E9DAx//8ADQAABBwF4wImAdIAAAEGAGptHgAXALAARViwCC8bsQgaPlmxEAL0sBnQMDEA//8ARwAAA+AGHAImAdMAAAEHAHUBMwAeABQAsABFWLAILxuxCBo+WbEMBvQwMf//AEcAAAPgBeACJgHTAAABBwChARsAHgAUALAARViwBy8bsQcaPlmxEQL0MDH//wBHAAAD4AYeAiYB0wAAAQYAnlMfABQAsABFWLAHLxuxBxo+WbEPBvQwMf//ABwAAAUdBj8CJgAlAAAABgCtBAD////wAAAEqgY/ACYAKWQAAAcArf85AAD////+AAAFbAZBACYALGQAAAcArf9HAAL//wAEAAAB2wZAACYALWQAAAcArf9NAAH////6/+wFHQY/ACYAMxQAAAcArf9DAAD///94AAAFHwY/ACYAPWQAAAcArf7BAAD////9AAAE3wY/ACYAuRQAAAcArf9GAAD///+b//QCrQZ0AiYAwgAAAQcArv8q/+wAHQCwAEVYsAwvG7EMGD5ZsRgB9LAP0LAYELAh0DAxAP//ABwAAAUdBbACBgAlAAD//wCpAAAEiAWwAgYAJgAA//8AqQAABEYFsAIGACkAAP//AFYAAAR6BbACBgA+AAD//wCpAAAFCAWwAgYALAAA//8AtwAAAXcFsAIGAC0AAP//AKkAAAUFBbACBgAvAAD//wCpAAAGUgWwAgYAMQAA//8AqQAABQgFsAIGADIAAP//AHb/7AUJBcQCBgAzAAD//wCpAAAEwAWwAgYANAAA//8AMQAABJcFsAIGADgAAP//AA8AAAS7BbACBgA9AAD//wA5AAAEzgWwAgYAPAAA////1gAAAl8HBwImAC0AAAEHAGr/cAFCABcAsABFWLACLxuxAhw+WbELBPSwFNAwMQD//wAPAAAEuwb7AiYAPQAAAQcAagDCATYAFwCwAEVYsAgvG7EIHD5ZsRAE9LAZ0DAxAP//AGT/6wR3BjoCJgC6AAABBwCtAXX/+wAUALAARViwEy8bsRMYPlmxJAH0MDH//wBj/+wD7AY5AiYAvgAAAQcArQEr//oAFACwAEVYsBUvG7EVGD5ZsSgB9DAx//8Akf5hA/AGOgImAMAAAAEHAK0BRv/7ABQAsABFWLADLxuxAxg+WbEVAfQwMf//AMP/9AJLBiUCJgDCAAABBgCtKuYAFACwAEVYsAwvG7EMGD5ZsQ8B9DAx//8Aj//sA/YGdAImAMoAAAEGAK4h7AAdALAARViwAC8bsQAYPlmxHQH0sBXQsB0QsCfQMDEA//8AmgAABD8EOgIGAI0AAP//AFv/7AQ0BE4CBgBTAAD//wCa/mAD7gQ6AgYAdgAA//8AIQAAA7oEOgIGAFoAAP//ACkAAAPKBDoCBgBcAAD////m//QCbwWxAiYAwgAAAQYAaoDsABcAsABFWLAMLxuxDBg+WbEUAfSwHdAwMQD//wCP/+wD9gWxAiYAygAAAQYAanfsABcAsABFWLAALxuxABg+WbEaAfSwI9AwMQD//wBb/+wENAY6AiYAUwAAAQcArQFD//sAFACwAEVYsAQvG7EEGD5ZsR4B9DAx//8Aj//sA/YGJQImAMoAAAEHAK0BIv/mABQAsABFWLAALxuxABg+WbEVAfQwMf//AHr/7AYZBiICJgDNAAABBwCtAlP/4wAUALAARViwAC8bsQAYPlmxJgH0MDH//wCpAAAERgcHAiYAKQAAAQcAagDEAUIAFwCwAEVYsAYvG7EGHD5ZsRME9LAc0DAxAP//ALEAAAQwB0ACJgCwAAABBwB1AZABQgAUALAARViwBC8bsQQcPlmxCAj0MDEAAQBQ/+wEcgXEACYAYbIAJygREjkAsABFWLAGLxuxBhw+WbAARViwGi8bsRoQPlmwBhCwC9CwBhCyDgEKK1gh2Bv0WbImGgYREjmwJhCyFAEKK1gh2Bv0WbAaELAf0LAaELIiAQorWCHYG/RZMDEBJiY1NCQzMhYWFSM0JiMiBhUUFgQWFhUUBCMiJCY1MxQWMzI2NCYCVvfhARPcluuBwaiZjp+XAWvNY/7s55b+/I3Bw6OYopYCiUfPmKzhdMx5hJd9b1l7Znukb7HVc8h/hJl81nUA//8AtwAAAXcFsAIGAC0AAP///9YAAAJfBwcCJgAtAAABBwBq/3ABQgAXALAARViwAi8bsQIcPlmxCwT0sBTQMDEA//8ANf/sA8wFsAIGAC4AAP//ALIAAAUdBbACBgHjAAD//wCpAAAFBQcuAiYALwAAAQcAdQF7ATAAFACwAEVYsAUvG7EFHD5ZsQ4I9DAx//8ATf/rBMsHGgImAN0AAAEHAKAA2gFDABMAsABFWLARLxuxERw+WbAV3DAxAP//ABwAAAUdBbACBgAlAAD//wCpAAAEiAWwAgYAJgAA//8AsQAABDAFsAIGALAAAP//AKkAAARGBbACBgApAAD//wCxAAAE/wcaAiYA2wAAAQcAoAExAUMAEwCwAEVYsAgvG7EIHD5ZsA3cMDEA//8AqQAABlIFsAIGADEAAP//AKkAAAUIBbACBgAsAAD//wB2/+wFCQXEAgYAMwAA//8AsgAABQEFsAIGALUAAP//AKkAAATABbACBgA0AAD//wB3/+wE2AXEAgYAJwAA//8AMQAABJcFsAIGADgAAP//ADkAAATOBbACBgA8AAD//wBt/+wD6gROAgYARQAA//8AXf/sA/METgIGAEkAAP//AJwAAAQBBcQCJgDvAAABBwCgAKL/7QATALAARViwCC8bsQgYPlmwDdwwMQD//wBb/+wENAROAgYAUwAA//8AjP5gBB4ETgIGAFQAAAABAFz/7APsBE4AHQBJshAeHxESOQCwAEVYsBAvG7EQGD5ZsABFWLAILxuxCBA+WbIAAQorWCHYG/RZsAgQsAPQsBAQsBTQsBAQshcBCitYIdgb9FkwMSUyNjczDgIjIgARNTQ2NjMyFhcjJiYjIgYVFRQWAj5jlAivBXbFbt3++3TZlLbxCK8Ij2mNm5qDeFpdqGQBJwEAH572iNquaYfLwCO7ygD//wAW/ksDsAQ6AgYAXQAA//8AKQAAA8oEOgIGAFwAAP//AF3/7APzBcUCJgBJAAABBwBqAI4AAAAXALAARViwCC8bsQgYPlmxJQH0sC7QMDEA//8AmgAAA0cF6gImAOsAAAEHAHUAzf/sABQAsABFWLAELxuxBBg+WbEICfQwMf//AF//7AO7BE4CBgBXAAD//wCNAAABaAXEAgYATQAA////vAAAAkUFxAImAIwAAAEHAGr/Vv//ABcAsABFWLACLxuxAhg+WbELAfSwFNAwMQD///+//ksBWQXEAgYATgAA//8AnAAABD8F6QImAPAAAAEHAHUBO//rABQAsABFWLAELxuxBBg+WbEPCfQwMf//ABb+SwOwBdgCJgBdAAABBgCgUAEAEwCwAEVYsA8vG7EPGD5ZsBPcMDEA//8APQAABu0HNAImADsAAAEHAEQCLAE2ABQAsABFWLADLxuxAxw+WbEUCPQwMf//ACsAAAXTBf4CJgBbAAABBwBEAYsAAAAUALAARViwCy8bsQsYPlmxDgn0MDH//wA9AAAG7Qc0AiYAOwAAAQcAdQK7ATYAFACwAEVYsAQvG7EEHD5ZsRUI9DAx//8AKwAABdMF/gImAFsAAAEHAHUCGgAAABQAsABFWLAMLxuxDBg+WbEPCfQwMf//AD0AAAbtBvsCJgA7AAABBwBqAfUBNgAXALAARViwAy8bsQMcPlmxGgT0sCPQMDEA//8AKwAABdMFxQImAFsAAAEHAGoBVAAAABcAsABFWLALLxuxCxg+WbEUAfSwHdAwMQD//wAPAAAEuwc0AiYAPQAAAQcARAD5ATYAFACwAEVYsAgvG7EIHD5ZsQoI9DAx//8AFv5LA7AF/gImAF0AAAEHAEQAjAAAABQAsABFWLAPLxuxDxg+WbERCfQwMf//AGcEIQD9BgACBgALAAD//wCIBBICIwYAAgYABgAA//8AoP/1A4oFsAAmAAUAAAAHAAUCDwAA////tP5LAj8F2AImAJsAAAEHAJ7/Sf/ZABQAsABFWLANLxuxDRg+WbETAfQwMf//ADAEFgFHBgACBgFtAAD//wCpAAAGUgc0AiYAMQAAAQcAdQKZATYAFACwAEVYsAIvG7ECHD5ZsREI9DAx//8AiwAABngF/gImAFEAAAEHAHUCrQAAABQAsABFWLADLxuxAxg+WbEgCfQwMf//ABz+awUdBbACJgAlAAAABwCmAX8AAP//AG3+awPqBE4CJgBFAAAABwCmAMcAAP//AKkAAARGB0ACJgApAAABBwBEAPsBQgAUALAARViwBi8bsQYcPlmxDQj0MDH//wCxAAAE/wdAAiYA2wAAAQcARAFtAUIAFACwAEVYsAgvG7EIHD5ZsQsI9DAx//8AXf/sA/MF/gImAEkAAAEHAEQAxQAAABQAsABFWLAILxuxCBg+WbEfCfQwMf//AJwAAAQBBeoCJgDvAAABBwBEAN7/7AAUALAARViwCC8bsQgYPlmxCwn0MDH//wBaAAAFIQWwAgYAuAAA//8AX/4oBUMEOgIGAMwAAP//ABYAAATdBugCJgEYAAABBwCrBDkA+gAXALAARViwDy8bsQ8cPlmxEQj0sBXQMDEA////+wAABAsFwQImARkAAAEHAKsD1P/TABcAsABFWLARLxuxERg+WbETCfSwF9AwMQD//wBb/ksIQAROACYAUwAAAAcAXQSQAAD//wB2/ksJMAXEACYAMwAAAAcAXQWAAAD//wBQ/lEEagXEAiYA2gAAAAcBsAGc/7j//wBY/lIDrARNAiYA7gAAAAcBsAFD/7n//wB3/lEE2AXEAiYAJwAAAAcBsAHl/7j//wBc/lED7AROAiYARwAAAAcBsAFS/7j//wAPAAAEuwWwAgYAPQAA//8ALv5gA98EOgIGALwAAP//ALcAAAF3BbACBgAtAAD//wAbAAAHNQcaAiYA2QAAAQcAoAH4AUMAEwCwAEVYsA0vG7ENHD5ZsBncMDEA//8AFQAABgQFxAImAO0AAAEHAKABX//tABMAsABFWLANLxuxDRg+WbAZ3DAxAP//ALcAAAF3BbACBgAtAAD//wAcAAAFHQcOAiYAJQAAAQcAoAD0ATcAEwCwAEVYsAQvG7EEHD5ZsA7cMDEA//8Abf/sA+oF2AImAEUAAAEHAKAAmQABABMAsABFWLAXLxuxFxg+WbAs3DAxAP//ABwAAAUdBvsCJgAlAAABBwBqAPkBNgAUALAARViwBC8bsQQcPlmxEgT0MDH//wBt/+wD6gXFAiYARQAAAQcAagCeAAAAFwCwAEVYsBcvG7EXGD5ZsTAB9LA50DAxAP////IAAAdXBbACBgCBAAD//wBO/+wGfAROAgYAhgAA//8AqQAABEYHGgImACkAAAEHAKAAvwFDABMAsABFWLAGLxuxBhw+WbAP3DAxAP//AF3/7APzBdgCJgBJAAABBwCgAIkAAQATALAARViwCC8bsQgYPlmwIdwwMQD//wBd/+wFEgbZAiYBRQAAAQcAagDTARQAFwCwAEVYsAAvG7EAHD5ZsScE9LAw0DAxAP//AGL/7APpBE8CBgCcAAD//wBi/+wD6QXGAiYAnAAAAQcAagCHAAEAFwCwAEVYsAAvG7EAGD5ZsSQB9LAt0DAxAP//ABsAAAc1BwcCJgDZAAABBwBqAf0BQgAXALAARViwDS8bsQ0cPlmxHQT0sCbQMDEA//8AFQAABgQFsQImAO0AAAEHAGoBZP/sABcAsABFWLANLxuxDRg+WbEdAfSwJtAwMQD//wBQ/+wEagccAiYA2gAAAQcAagC3AVcAFwCwAEVYsAsvG7ELHD5ZsTAE9LA50DAxAP//AFj/7QOsBcUCJgDuAAABBgBqXgAAFwCwAEVYsAovG7EKGD5ZsS4B9LA30DAxAP//ALEAAAT/BvoCJgDbAAABBwBwAQQBSgATALAARViwCC8bsQgcPlmwC9wwMQD//wCcAAAEAQWkAiYA7wAAAQYAcHX0ABMAsABFWLAHLxuxBxg+WbAL3DAxAP//ALEAAAT/BwcCJgDbAAABBwBqATYBQgAXALAARViwCC8bsQgcPlmxEQT0sBrQMDEA//8AnAAABAEFsQImAO8AAAEHAGoAp//sABcAsABFWLAILxuxCBg+WbERAfSwGtAwMQD//wB2/+wFCQb9AiYAMwAAAQcAagEbATgAFwCwAEVYsA0vG7ENHD5ZsScE9LAw0DAxAP//AFv/7AQ0BcUCJgBTAAABBwBqAJgAAAAXALAARViwBC8bsQQYPlmxIwH0sCzQMDEA//8AZ//sBPoFxAIGARYAAP//AFv/7AQ0BE4CBgEXAAD//wBn/+wE+gcCAiYBFgAAAQcAagEOAT0AFwCwAEVYsA0vG7ENHD5ZsScE9LAw0DAxAP//AFv/7AQ0BccCJgEXAAABBwBqAIgAAgAXALAARViwBC8bsQQYPlmxJAH0sC3QMDEA//8Ak//sBPQHHQImAOYAAAEHAGoBDQFYABcAsABFWLATLxuxExw+WbEnBPSwMNAwMQD//wBk/+wD4AXFAiYA/gAAAQYAanwAABcAsABFWLAILxuxCBg+WbEnAfSwMNAwMQD//wBN/+sEywb6AiYA3QAAAQcAcACtAUoAEwCwAEVYsBEvG7ERHD5ZsBPcMDEA//8AFv5LA7AFuAImAF0AAAEGAHAjCAATALAARViwDi8bsQ4YPlmwEdwwMQD//wBN/+sEywcHAiYA3QAAAQcAagDfAUIAFwCwAEVYsBEvG7ERHD5ZsRkE9LAi0DAxAP//ABb+SwOwBcUCJgBdAAABBgBqVQAAFwCwAEVYsA8vG7EPGD5ZsRcB9LAg0DAxAP//AE3/6wTLB0ECJgDdAAABBwClAS8BQgAXALAARViwAS8bsQEcPlmxFAj0sBjQMDEA//8AFv5LA9EF/wImAF0AAAEHAKUApQAAABcAsABFWLAPLxuxDxg+WbEWCfSwEtAwMQD//wCWAAAEyAcHAiYA4AAAAQcAagEJAUIAFwCwAEVYsAsvG7ELHD5ZsRoE9LAj0DAxAP//AGcAAAO9BbECJgD4AAABBgBqZOwAFwCwAEVYsAkvG7EJGD5ZsRgB9LAh0DAxAP//ALIAAAYwBwcAJgDlDwAAJwAtBLkAAAEHAGoB0wFCABcAsABFWLAKLxuxChw+WbEfBPSwKNAwMQD//wCdAAAFfwWxACYA/QAAACcAjAQqAAABBwBqAW3/7AAXALAARViwCi8bsQoYPlmxHwH0sCjQMDEA//8AOf5LBQ4FsAImADwAAAAHAa8DpwAA//8AKf5LBBwEOgImAFwAAAAHAa8CtQAA//8AX//sA/AGAAIGAEgAAP//AC/+SwWsBbACJgDcAAAABwGvBEUAAP//ACz+SwS7BDoCJgDxAAAABwGvA1QAAP//ABz+ogUdBbACJgAlAAAABwCsBQIAAP//AG3+ogPqBE4CJgBFAAAABwCsBEoAAP//ABwAAAUdB7oCJgAlAAABBwCqBO4BRgAUALAARViwBC8bsQQcPlmxCwj0MDH//wBt/+wD6gaEAiYARQAAAQcAqgSTABAAFACwAEVYsBcvG7EXGD5ZsSkB9DAx//8AHAAABR0HwwImACUAAAEHAbcAwwEuABcAsABFWLAFLxuxBRw+WbEODPSwFNAwMQD//wBt/+wEwAaOAiYARQAAAQYBt2j5ABcAsABFWLAXLxuxFxg+WbEsCPSwMtAwMQD//wAcAAAFHQe/AiYAJQAAAQcBtgDHAT0AFwCwAEVYsAQvG7EEHD5ZsQ4M9LAT0DAxAP///8r/7APqBokCJgBFAAABBgG2bAcAFwCwAEVYsBcvG7EXGD5ZsSwI9LAx0DAxAP//ABwAAAUdB+oCJgAlAAABBwG1AMgBGwAXALAARViwBS8bsQUcPlmxDAz0sCDQMDEA//8Abf/sBFkGtQImAEUAAAEGAbVt5gAXALAARViwFy8bsRcYPlmxKgj0sDDQMDEA//8AHAAABR0H2gImACUAAAEHAbQAxwEGABcAsABFWLAFLxuxBRw+WbEMDPSwFdAwMQD//wBt/+wD6galAiYARQAAAQYBtGzRABcAsABFWLAXLxuxFxg+WbEqCPSwM9AwMQD//wAc/qIFHQc2AiYAJQAAACcAnQDJATYBBwCsBQIAAAAUALAARViwBC8bsQQcPlmxDwb0MDH//wBt/qID6gYAAiYARQAAACYAnW4AAQcArARKAAAAFACwAEVYsBcvG7EXGD5ZsS0B9DAx//8AHAAABR0HtwImACUAAAEHAbMA6gEtABcAsABFWLAELxuxBBw+WbEOB/SwG9AwMQD//wBt/+wD6gaCAiYARQAAAQcBswCP//gAFwCwAEVYsBcvG7EXGD5ZsSwE9LA50DAxAP//ABwAAAUdB7cCJgAlAAABBwG4AOoBLQAXALAARViwBC8bsQQcPlmxDgf0sBzQMDEA//8Abf/sA+oGggImAEUAAAEHAbgAj//4ABcAsABFWLAXLxuxFxg+WbEsBPSwOtAwMQD//wAcAAAFHQhAAiYAJQAAAQcBsgDuAT0AFwCwAEVYsAQvG7EEHD5ZsQ4H9LAn0DAxAP//AG3/7APqBwoCJgBFAAABBwGyAJMABwAXALAARViwFy8bsRcYPlmxLAT0sEXQMDEA//8AHAAABR0IFQImACUAAAEHAbEA7gFFABcAsABFWLAELxuxBBw+WbEOB/SwHNAwMQD//wBt/+wD6gbfAiYARQAAAQcBsQCTAA8AFwCwAEVYsBcvG7EXGD5ZsSwE9LA60DAxAP//ABz+ogUdBw4CJgAlAAAAJwCgAPQBNwEHAKwFAgAAABMAsABFWLAELxuxBBw+WbAO3DAxAP//AG3+ogPqBdgCJgBFAAAAJwCgAJkAAQEHAKwESgAAABMAsABFWLAXLxuxFxg+WbAs3DAxAP//AKn+ogRGBbACJgApAAAABwCsBMAAAP//AF3+ogPzBE4CJgBJAAAABwCsBIwAAP//AKkAAARGB8YCJgApAAABBwCqBLkBUgAUALAARViwBi8bsQYcPlmxDAj0MDH//wBd/+wD8waEAiYASQAAAQcAqgSDABAAFACwAEVYsAgvG7EIGD5ZsR4B9DAx//8AqQAABEYHLgImACkAAAEHAKQAkAFGABQAsABFWLAGLxuxBhw+WbEPBPQwMf//AF3/7APzBewCJgBJAAABBgCkWgQAFACwAEVYsAgvG7EIGD5ZsSEB9DAx//8AqQAABOYHzwImACkAAAEHAbcAjgE6ABcAsABFWLAHLxuxBxw+WbEPDPSwFdAwMQD//wBd/+wEsAaOAiYASQAAAQYBt1j5ABcAsABFWLAILxuxCBg+WbEhCPSwJ9AwMQD////wAAAERgfLAiYAKQAAAQcBtgCSAUkAFwCwAEVYsAYvG7EGHD5ZsQ8M9LAU0DAxAP///7r/7APzBokCJgBJAAABBgG2XAcAFwCwAEVYsAgvG7EIGD5ZsSEI9LAm0DAxAP//AKkAAAR/B/YCJgApAAABBwG1AJMBJwAXALAARViwBi8bsQYcPlmxDwz0sBPQMDEA//8AXf/sBEkGtQImAEkAAAEGAbVd5gAXALAARViwCC8bsQgYPlmxHwj0sCXQMDEA//8AqQAABEYH5gImACkAAAEHAbQAkgESABcAsABFWLAGLxuxBhw+WbEPDPSwFtAwMQD//wBd/+wD8walAiYASQAAAQYBtFzRABcAsABFWLAILxuxCBg+WbEhCPSwKNAwMQD//wCp/qIERgdCAiYAKQAAACcAnQCUAUIBBwCsBMAAAAAUALAARViwBi8bsQYcPlmxEAb0MDH//wBd/qID8wYAAiYASQAAACYAnV4AAQcArASMAAAAFACwAEVYsAgvG7EIGD5ZsSAB9DAx//8AtwAAAfgHxgImAC0AAAEHAKoDZAFSABQAsABFWLACLxuxAhw+WbEECPQwMf//AJsAAAHeBoICJgCMAAABBwCqA0oADgAUALAARViwAi8bsQIYPlmxBAH0MDH//wCj/qIBfgWwAiYALQAAAAcArANrAAD//wCF/qIBaAXEAiYATQAAAAcArANNAAD//wB2/qIFCQXEAiYAMwAAAAcArAUYAAD//wBb/qIENAROAiYAUwAAAAcArASdAAD//wB2/+wFCQe8AiYAMwAAAQcAqgUQAUgAFACwAEVYsA0vG7ENHD5ZsS4I9DAx//8AW//sBDQGhAImAFMAAAEHAKoEjQAQABQAsABFWLAELxuxBBg+WbEqAfQwMf//AHb/7AU9B8UCJgAzAAABBwG3AOUBMAAXALAARViwDS8bsQ0cPlmxIwz0sCnQMDEA//8AW//sBLoGjgImAFMAAAEGAbdi+QAXALAARViwBC8bsQQYPlmxHwj0sCXQMDEA//8AR//sBQkHwQImADMAAAEHAbYA6QE/ABcAsABFWLANLxuxDRw+WbEhDPSwKNAwMQD////E/+wENAaJAiYAUwAAAQYBtmYHABcAsABFWLAELxuxBBg+WbEdCPSwJNAwMQD//wB2/+wFCQfsAiYAMwAAAQcBtQDqAR0AFwCwAEVYsA0vG7ENHD5ZsSEM9LAn0DAxAP//AFv/7ARTBrUCJgBTAAABBgG1Z+YAFwCwAEVYsAQvG7EEGD5ZsR0I9LAj0DAxAP//AHb/7AUJB9wCJgAzAAABBwG0AOkBCAAXALAARViwDS8bsQ0cPlmxIQz0sCrQMDEA//8AW//sBDQGpQImAFMAAAEGAbRm0QAXALAARViwBC8bsQQYPlmxHQj0sCbQMDEA//8Adv6iBQkHOAImADMAAAAnAJ0A6wE4AQcArAUYAAAAFACwAEVYsA0vG7ENHD5ZsSIG9DAx//8AW/6iBDQGAAImAFMAAAAmAJ1oAAEHAKwEnQAAABQAsABFWLAELxuxBBg+WbEeAfQwMf//AGX/7AWdBy8CJgCXAAABBwB1Ad0BMQAUALAARViwDS8bsQ0cPlmxKAj0MDH//wBb/+wEugX+AiYAmAAAAQcAdQFlAAAAFACwAEVYsAQvG7EEGD5ZsSYJ9DAx//8AZf/sBZ0HLwImAJcAAAEHAEQBTgExABQAsABFWLANLxuxDRw+WbEnCPQwMf//AFv/7AS6Bf4CJgCYAAABBwBEANYAAAAUALAARViwBC8bsQQYPlmxJQn0MDH//wBl/+wFnQe1AiYAlwAAAQcAqgUMAUEAFACwAEVYsA0vG7ENHD5ZsTQI9DAx//8AW//sBLoGhAImAJgAAAEHAKoElAAQABQAsABFWLAELxuxBBg+WbEyAfQwMf//AGX/7AWdBx0CJgCXAAABBwCkAOMBNQAUALAARViwDS8bsQ0cPlmxKQT0MDH//wBb/+wEugXsAiYAmAAAAQYApGsEABQAsABFWLAELxuxBBg+WbEnAfQwMf//AGX+ogWdBjcCJgCXAAAABwCsBQkAAP//AFv+ogS6BLACJgCYAAAABwCsBJsAAP//AIz+ogSqBbACJgA5AAAABwCsBO4AAP//AIj+ogPcBDoCJgBZAAAABwCsBFEAAP//AIz/7ASqB7oCJgA5AAABBwCqBOkBRgAUALAARViwCi8bsQocPlmxEwj0MDH//wCI/+wD3AaEAiYAWQAAAQcAqgSFABAAFACwAEVYsAcvG7EHGD5ZsREB9DAx//8AjP/sBh0HQAImAJkAAAEHAHUB1AFCABQAsABFWLAaLxuxGhw+WbEdCPQwMf//AIj/7AUPBeoCJgCaAAABBwB1AWP/7AAUALAARViwEy8bsRMYPlmxHAn0MDH//wCM/+wGHQdAAiYAmQAAAQcARAFFAUIAFACwAEVYsBIvG7ESHD5ZsRwI9DAx//8AiP/sBQ8F6gImAJoAAAEHAEQA1P/sABQAsABFWLANLxuxDRg+WbEbCfQwMf//AIz/7AYdB8YCJgCZAAABBwCqBQMBUgAUALAARViwGi8bsRocPlmxKQj0MDH//wCI/+wFDwZwAiYAmgAAAQcAqgSS//wAFACwAEVYsBMvG7ETGD5ZsSgB9DAx//8AjP/sBh0HLgImAJkAAAEHAKQA2gFGABQAsABFWLASLxuxEhw+WbEeBPQwMf//AIj/7AUPBdgCJgCaAAABBgCkafAAFACwAEVYsBMvG7ETGD5ZsR0B9DAx//8AjP6iBh0GAgImAJkAAAAHAKwFCQAA//8AiP6iBQ8EkAImAJoAAAAHAKwEVwAA//8AD/6iBLsFsAImAD0AAAAHAKwEuwAA//8AFv4FA7AEOgImAF0AAAAHAKwFHP9j//8ADwAABLsHugImAD0AAAEHAKoEtwFGABQAsABFWLAILxuxCBw+WbEJCPQwMf//ABb+SwOwBoQCJgBdAAABBwCqBEoAEAAUALAARViwDy8bsQ8YPlmxEAH0MDH//wAPAAAEuwciAiYAPQAAAQcApACOAToAFACwAEVYsAEvG7EBHD5ZsQwE9DAx//8AFv5LA7AF7AImAF0AAAEGAKQhBAAUALAARViwAS8bsQEYPlmxEwH0MDEAAgBf/+wErAYAABcAIgB/ALAUL7AARViwDS8bsQ0YPlmwAEVYsAMvG7EDED5ZsABFWLAGLxuxBhA+WbIPFAFdsi8UAV2yEwMUERI5sBMvshABCitYIdgb9FmwAdCyBAYNERI5sg8NBhESObATELAW0LAGELIbAQorWCHYG/RZsA0QsiABCitYIdgb9FkwMQEjESMnBiMiAjU1NBIzMhcRITUhNTMVMwEUFjMyNxEmIyIGBKy8qglvxrzt7L++b/75AQe5vPxsmIawUVOsiJgE0vsudIgBNPgO+QEvggEGl5eX/Ki40J4B8ZnSAP//AF/+zQSsBgAAJgBIAAAAJwHeAaECRwEHAEMAn/9kAAgAsi8eAV0wMf//ALL+mAVEBbACJgHjAAAABwGwBCP/////AJz+mQSBBDoCJgDwAAAABwGwA2AAAP//AKn+mQWpBbACJgAsAAAABwGwBIgAAP//AJz+mQSiBDoCJgDzAAAABwGwA4EAAP//ADH+mQSXBbACJgA4AAAABwGwAj8AAP//ACj+mQOwBDoCJgD1AAAABwGwAcYAAP//ADn+mQT4BbACJgA8AAAABwGwA9cAAP//ACn+mQQGBDoCJgBcAAAABwGwAuUAAP//AJb+mQVmBbACJgDgAAAABwGwBEUAAP//AGf+mQReBDsCJgD4AAAABwGwAz0AAP//AJb+mQTIBbACJgDgAAAABwGwAv4AAP//AGf+mQO9BDsCJgD4AAAABwGwAfUAAP//ALH+mQQwBbACJgCwAAAABwGwAO8AAP//AJr+mQNHBDoCJgDrAAAABwGwANUAAP//ABv+mQeCBbACJgDZAAAABwGwBmEAAP//ABX+mQY9BDoCJgDtAAAABwGwBRwAAP//AD/+VQW9BcMCJgE/AAAABwGwAwb/vP///97+WQRjBE4CJgFAAAAABwGwAgH/wP//AIwAAAPfBgACBgBMAAAAAv/UAAAEsQWwABIAGwBhALAARViwDy8bsQ8cPlmwAEVYsAovG7EKED5ZsgIKDxESObACL7IODwIREjmwDi+yCwEKK1gh2Bv0WbAB0LAOELAR0LACELITAQorWCHYG/RZsAoQshQBCitYIdgb9FkwMQEjFSEWBBUUBAchESM1MzUzFTMDESEyNjU0JicCUO0BauQBAP7+3/3Tz8/A7e0BX4+fmY0EUPID5MTF6gQEUJfJyf3Z/d2YgHuOAgAC/9QAAASxBbAAEgAbAGEAsABFWLAQLxuxEBw+WbAARViwCi8bsQoQPlmyAgoQERI5sAIvshECEBESObARL7IBAQorWCHYG/RZsAvQsBEQsA7QsAIQshMBCitYIdgb9FmwChCyFAEKK1gh2Bv0WTAxASMVIRYEFRQEByERIzUzNTMVMwMRITI2NTQmJwJQ7QFq5AEA/v7f/dPPz8Dt7QFfj5+ZjQRQ8gPkxMXqBARQl8nJ/dn93ZiAe44CAAEAAwAABDAFsAANAE4AsABFWLAILxuxCBw+WbAARViwAi8bsQIQPlmyDQgCERI5sA0vsnoNAV2yAAEKK1gh2Bv0WbAE0LANELAG0LAIELIKAQorWCHYG/RZMDEBIREjESM1MxEhFSERIQJ//vPBrq4Df/1CAQ0CrP1UAqyXAm2e/jEAAAH//AAAA0cEOgANAEkAsABFWLAILxuxCBg+WbAARViwAi8bsQIQPlmyDQgCERI5sA0vsgABCitYIdgb9FmwBNCwDRCwBtCwCBCyCgEKK1gh2Bv0WTAxASERIxEjNTMRIRUhESECeP7cup6eAq3+DQEkAd/+IQHflwHEmf7VAAEACwAABTEFsAAUAH4AsABFWLAILxuxCBw+WbAARViwEC8bsRAcPlmwAEVYsAIvG7ECED5ZsABFWLATLxuxExA+WbIOCAIREjmwDi+yLw4BXbLPDgFdsgEBCitYIdgb9FmyBwgCERI5sAcvsgQBCitYIdgb9FmwBxCwCtCwBBCwDNCyEgEOERI5MDEBIxEjESM1MzUzFSEVIREzATMBASMCN7HAu7vAAQH+/5YB/e/91AJV6wKO/XIEN5fi4pf+9wKC/T79EgAAAf/TAAAEKAYAABQAdACwAEVYsAgvG7EIHj5ZsABFWLAQLxuxEBg+WbAARViwAi8bsQIQPlmwAEVYsBMvG7ETED5Zsg4QAhESObAOL7IBAQorWCHYG/RZsgcIEBESObAHL7IEAQorWCHYG/RZsAcQsArQsAQQsAzQshIBDhESOTAxASMRIxEjNTM1MxUzFSMRMwEzAQEjAeCAutPTuu/vfgE72/6GAa7bAfX+CwTBl6iol/3NAaz+E/2zAP//ALH+mwWyBxoCJgDbAAAAJwCgATEBQwEHABAEfv+9ABMAsABFWLAILxuxCBw+WbAN3DAxAP//AJz+mwS1BcQCJgDvAAAAJwCgAKL/7QEHABADgf+9ABMAsABFWLAILxuxCBg+WbAN3DAxAP//AKn+mwW7BbACJgAsAAAABwAQBIf/vf//AJz+mwS0BDoCJgDzAAAABwAQA4D/vf//AKn+mwb4BbACJgAxAAAABwAQBcT/vf//AJ3+mwYGBDoCJgDyAAAABwAQBNL/vf//AC/+mwWoBbACJgDcAAAABwAQBHT/vf//ACz+mwS3BDoCJgDxAAAABwAQA4P/vQABAA8AAAS7BbAADgBWsgoPEBESOQCwAEVYsAgvG7EIHD5ZsABFWLALLxuxCxw+WbAARViwAi8bsQIQPlmyBggCERI5sAYvsgUBCitYIdgb9FmwANCyCggCERI5sAYQsA7QMDEBIxEjESM1MwEzAQEzATMDpuHA25T+UdwBegF82v5RmgIJ/fcCCZcDEP0lAtv88AAAAQAu/mAD3wQ6AA4AY7IKDxAREjkAsABFWLAILxuxCBg+WbAARViwCy8bsQsYPlmwAEVYsAIvG7ECEj5ZsABFWLAALxuxABA+WbAARViwBC8bsQQQPlmyBgEKK1gh2Bv0WbIKCwAREjmwDdCwDtAwMQUjESMRIzUzATMBATMBMwNK5rrcv/6hvQEfARi9/qPIC/5rAZWXA6782gMm/FIAAAEAOQAABM4FsAARAGMAsABFWLALLxuxCxw+WbAARViwDi8bsQ4cPlmwAEVYsAIvG7ECED5ZsABFWLAFLxuxBRA+WbIRCwIREjmwES+yAAEKK1gh2Bv0WbIECwIREjmwB9CwERCwCdCyDQsCERI5MDEBIwEjAQEjASM1MwEzAQEzATMDxKQBruT+mv6Y4wGvoJH+a+EBXwFd4v5rlgKe/WICOP3IAp6XAnv90gIu/YUAAQApAAADygQ6ABEAYwCwAEVYsAsvG7ELGD5ZsABFWLAOLxuxDhg+WbAARViwAi8bsQIQPlmwAEVYsAUvG7EFED5ZshEOAhESObARL7IAAQorWCHYG/RZsgQOAhESObAH0LARELAJ0LINDgIREjkwMQEjASMDAyMBIzUzATMTEzMBMwM8swFB1vr61wFBqp7+1tbt8Nj+1qcB4f4fAZX+awHhlwHC/nUBi/4+//8AY//sA+wETQIGAL4AAP//ABIAAAQvBbACJgAqAAAABwHe/4P+f///AJACiwXJAyIARgGXhABmZkAA//8AXQAABDMFxAIGABYAAP//AF7/7AP5BcQCBgAXAAD//wA1AAAEUAWwAgYAGAAA//8Amv/sBC0FsAIGABkAAP//AGT//wP4BcQABgAdAAD//wCH/+wEHgXEAAYAFBQA//8Aev/sBNwHVQImACsAAAEHAHUBvgFXABQAsABFWLALLxuxCxw+WbEiCPQwMf//AGD+VgPyBf4CJgBLAAABBwB1AUsAAAAUALAARViwAy8bsQMYPlmxJwn0MDH//wCpAAAFCAc0AiYAMgAAAQcARAFmATYAFACwAEVYsAYvG7EGHD5ZsQsI9DAx//8AjAAAA98F/gImAFIAAAEHAEQAzAAAABQAsABFWLADLxuxAxg+WbETCfQwMf//ABwAAAUdByACJgAlAAABBwCrBG0BMgAXALAARViwBC8bsQQcPlmxDAj0sBDQMDEA//8AOf/sA+oF6wImAEUAAAEHAKsEEv/9ABcAsABFWLAXLxuxFxg+WbEqCfSwLtAwMQD//wBfAAAERgcsAiYAKQAAAQcAqwQ4AT4AFwCwAEVYsAYvG7EGHD5ZsQ0I9LAR0DAxAP//ACn/7APzBesCJgBJAAABBwCrBAL//QAXALAARViwCC8bsQgYPlmxHwn0sCPQMDEA////CgAAAeoHLAImAC0AAAEHAKsC4wE+ABcAsABFWLACLxuxAhw+WbEFCPSwCdAwMQD///7wAAAB0AXpAiYAjAAAAQcAqwLJ//sAFwCwAEVYsAIvG7ECGD5ZsQUJ9LAJ0DAxAP//AHb/7AUJByICJgAzAAABBwCrBI8BNAAXALAARViwDS8bsQ0cPlmxIQj0sCXQMDEA//8AM//sBDQF6wImAFMAAAEHAKsEDP/9ABcAsABFWLAELxuxBBg+WbEdCfSwIdAwMQD//wBVAAAEyQcgAiYANgAAAQcAqwQuATIAFwCwAEVYsAQvG7EEHD5ZsRkI9LAd0DAxAP///4sAAAKXBesCJgBWAAABBwCrA2T//QAXALAARViwCy8bsQsYPlmxDwn0sBPQMDEA//8AjP/sBKoHIAImADkAAAEHAKsEaAEyABcAsABFWLAJLxuxCRw+WbEUCPSwGNAwMQD//wAr/+wD3AXrAiYAWQAAAQcAqwQE//0AFwCwAEVYsAcvG7EHGD5ZsRIJ9LAW0DAxAP///zoAAATSBj8AJgDPZAAABwCt/oMAAP//AKn+ogSIBbACJgAmAAAABwCsBLoAAP//AIz+ogQgBgACJgBGAAAABwCsBKsAAP//AKn+ogTGBbACJgAoAAAABwCsBLkAAP//AF/+ogPwBgACJgBIAAAABwCsBL0AAP//AKn9/wTGBbACJgAoAAAABwGiAWX+oP//AF/9/wPwBgACJgBIAAAABwGiAWn+oP//AKn+ogUIBbACJgAsAAAABwCsBR8AAP//AIz+ogPfBgACJgBMAAAABwCsBKEAAP//AKkAAAUFBy4CJgAvAAABBwB1AXsBMAAUALAARViwBS8bsQUcPlmxDgj0MDH//wCNAAAEDAc/AiYATwAAAQcAdQFEAUEACQCwBS+wD9wwMQD//wCp/qIFBQWwAiYALwAAAAcArAToAAD//wCN/qIEDAYAAiYATwAAAAcArARlAAD//wCp/qIEHAWwAiYAMAAAAAcArATAAAD//wCG/qIBYQYAAiYAUAAAAAcArANOAAD//wCp/qIGUgWwAiYAMQAAAAcArAXSAAD//wCL/qIGeAROAiYAUQAAAAcArAXWAAD//wCp/qIFCAWwAiYAMgAAAAcArAUkAAD//wCM/qID3wROAiYAUgAAAAcArASHAAD//wCpAAAEwAdAAiYANAAAAQcAdQF8AUIAFACwAEVYsAMvG7EDHD5ZsRYI9DAx//8AjP5gBB4F9QImAFQAAAEHAHUBk//3ABQAsABFWLAMLxuxDBg+WbEdCfQwMf//AKj+ogTJBbACJgA2AAAABwCsBLcAAP//AIL+ogKXBE4CJgBWAAAABwCsA0oAAP//AFD+ogRyBcQCJgA3AAAABwCsBMkAAP//AF/+ogO7BE4CJgBXAAAABwCsBIcAAP//ADH+ogSXBbACJgA4AAAABwCsBLoAAP//AAn+ogJWBUACJgBYAAAABwCsBBkAAP//ABwAAAT9By4CJgA6AAABBwCkALQBRgAUALAARViwBi8bsQYcPlmxCgT0MDH//wAhAAADugXjAiYAWgAAAQYApB37ABQAsABFWLABLxuxARg+WbEKAfQwMf//ABz+ogT9BbACJgA6AAAABwCsBOQAAP//ACH+ogO6BDoCJgBaAAAABwCsBE0AAP//AD3+ogbtBbACJgA7AAAABwCsBe8AAP//ACv+ogXTBDoCJgBbAAAABwCsBVMAAP//AFb+ogR6BbACJgA+AAAABwCsBLoAAP//AFj+ogOzBDoCJgBeAAAABwCsBGIAAP///nj/7AVPBdYAJgAzRgAABwFa/gkAAP//ABMAAARwBRwCJgG6AAAABwCt/9z+3f///58AAAPqBR8AJgG+PAAABwCt/uj+4P///7wAAASUBRwAJgHBPAAABwCt/wX+3f///8AAAAGNBR4AJgHCPAAABwCt/wn+3////9//8ARkBRwAJgHICgAABwCt/yj+3f///1cAAARYBRwAJgHSPAAABwCt/qD+3f////gAAASIBRsAJgHzCgAABwCt/0H+3P//ABMAAARwBI0CBgG6AAD//wCKAAAD7wSNAgYBuwAA//8AigAAA64EjQIGAb4AAP//AEcAAAPgBI0CBgHTAAD//wCKAAAEWASNAgYBwQAA//8AlwAAAVEEjQIGAcIAAP//AIoAAARXBI0CBgHEAAD//wCKAAAFdwSNAgYBxgAA//8AYP/wBFoEnQIGAcgAAP//AIoAAAQbBI0CBgHJAAD//wAoAAAD/QSNAgYBzQAA//8ADQAABBwEjQIGAdIAAP//ACYAAAQxBI0CBgHRAAD///+0AAACPQXjAiYBwgAAAQcAav9OAB4AFwCwAEVYsAIvG7ECGj5ZsQsC9LAU0DAxAP//AA0AAAQcBeMCJgHSAAABBgBqbR4AFwCwAEVYsAgvG7EIGj5ZsRAC9LAZ0DAxAP//AIoAAAOuBeMCJgG+AAABBgBqcR4AFwCwAEVYsAYvG7EGGj5ZsRMC9LAc0DAxAP//AIoAAAOFBhwCJgHqAAABBwB1ATQAHgAUALAARViwBC8bsQQaPlmxCAb0MDH//wBD//AD3QSdAgYBzAAA//8AlwAAAVEEjQIGAcIAAP///7QAAAI9BeMCJgHCAAABBwBq/04AHgAXALAARViwAi8bsQIaPlmxCwL0sBTQMDEA//8AK//wA00EjQIGAcMAAP//AIoAAARXBhwCJgHEAAABBwB1ASUAHgAUALAARViwBS8bsQUaPlmxDwb0MDH//wAi/+wECwX2AiYCAQAAAQYAoGcfABQAsABFWLACLxuxAho+WbEUCPQwMf//ABMAAARwBI0CBgG6AAD//wCKAAAD7wSNAgYBuwAA//8AigAAA4UEjQIGAeoAAP//AIoAAAOuBI0CBgG+AAD//wCKAAAEYQX2AiYB/gAAAQcAoADJAB8AFACwAEVYsAgvG7EIGj5ZsQ0I9DAx//8AigAABXcEjQIGAcYAAP//AIoAAARYBI0CBgHBAAD//wBg//AEWgSdAgYByAAA//8AigAABEQEjQIGAe8AAP//AIoAAAQbBI0CBgHJAAD//wBg//AEMASdAgYBvAAA//8AKAAAA/0EjQIGAc0AAP//ACYAAAQxBI0CBgHRAAAAAQBH/lAD1ASdACkAmgCwAEVYsAovG7EKGj5ZsABFWLAZLxuxGRA+WbAARViwGC8bsRgSPlmwChCyAwEKK1gh2Bv0WbIGChkREjmyJxkKERI5fLAnLxiy8CcBXbIAJwFxsqAnAV20YCdwJwJdsjAnAXG0YCdwJwJxsiYBCitYIdgb9FmyECYnERI5sBkQsBbQsh0ZChESObAZELIgAQorWCHYG/RZMDEBNCYjIgYVIzQ2MzIWFRQGBxYWFRQGBxEjESYmNTMWFjMyNjU0JSM1MzYDCIp9boG67bzT7m5ndnHLr7qjtrkFg3mIkv7/nZzvA1BUXVhPjrWollaNKSSSW4yvEv5bAacUrYhWYGBYwQWYBQAAAQCK/pkE+gSNAA8AXQCwAS+wAEVYsAkvG7EJGj5ZsABFWLADLxuxAxA+WbAARViwBi8bsQYQPlmyCwMJERI5fLALLxiyoAsBXbIEAQorWCHYG/RZsAkQsAzQsAMQsg4BCitYIdgb9FkwMQEjESMRIREjETMRIREzETME+rqh/aS5uQJcuaL+mQFnAfL+DgSN/f0CA/wMAAABAGD+VgQwBJ0AHwBYALAARViwDi8bsQ4aPlmwAEVYsAMvG7EDED5ZsABFWLAFLxuxBRI+WbADELAG0LAOELAS0LAOELIVAQorWCHYG/RZsAMQshwBCitYIdgb9FmwAxCwH9AwMQEGBgcRIxEmAjU1NDY2MzIWFyMmJiMiBgcVFBYzMjY3BDAUy6m6t9d755jM9xO5Eo1+macBn5eHjRQBeajHFP5gAaIeAR7jYaT5iNO7gnTLvWq9z2+D//8ADQAABBwEjQIGAdIAAP//AAL+UQVrBJ0CJgIXAAAABwGwArz/uP//AIoAAARhBdYCJgH+AAABBwBwAJwAJgATALAARViwCC8bsQgaPlmwC9wwMQD//wAi/+wECwXWAiYCAQAAAQYAcDomABMAsABFWLARLxuxERo+WbAT3DAxAP//AGAAAAUGBI0CBgHxAAD//wAc/k8FHQWwAiYAJQAAAAcAowF8AAD//wBt/k8D6gROAiYARQAAAAcAowDEAAD//wCp/lkERgWwAiYAKQAAAAcAowE6AAr//wBd/k8D8wROAiYASQAAAAcAowEGAAAAAAAAAA0AogADAAEECQAAAF4AAAADAAEECQABAAwAXgADAAEECQACAA4AagADAAEECQADAAwAXgADAAEECQAEAAwAXgADAAEECQAFACwAeAADAAEECQAGABwApAADAAEECQAHAEAAwAADAAEECQAJAAwBAAADAAEECQALABQBDAADAAEECQAMACYBIAADAAEECQANAFwBRgADAAEECQAOAFQBogBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADEAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AUgBvAGIAbwB0AG8AUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMgAuADAAMAAxADEAMAAxADsAIAAyADAAMQA0AFIAbwBiAG8AdABvAC0AUgBlAGcAdQBsAGEAcgBSAG8AYgBvAHQAbwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlAC4ARwBvAG8AZwBsAGUARwBvAG8AZwBsAGUALgBjAG8AbQBDAGgAcgBpAHMAdABpAGEAbgAgAFIAbwBiAGUAcgB0AHMAbwBuAEwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAQQBwAGEAYwBoAGUAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMgAuADAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcABhAGMAaABlAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBMAEkAQwBFAE4AUwBFAC0AMgAuADAAAwAAAAAAAP9qAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIACAAC//8ADwABAAAADAAAAAAAAAACAF4AJQA+AAEARQBeAAEAeQB5AAMAgQCBAAEAgwCDAAEAhgCGAAEAiQCJAAEAiwCVAAEAlwCcAAEAowCjAAMApwCsAAMAsACwAAEAuQC6AAEAvgC+AAEAwADAAAEAwgDCAAEAxgDGAAEAygDKAAEAzADNAAEAzwDQAAEA0gDSAAEA2QDdAAEA4ADgAAEA5ADkAAEA5gDoAAEA6gD6AAEA/AD8AAEA/gEAAAEBAgECAAEBBwEIAAEBFQEZAAEBGwEbAAEBHwEhAAEBIwEkAAMBOAE5AAEBPgFAAAEBRQFFAAEBTQFNAAEBTwFPAAEBUwFTAAEBVQFXAAEBWQFZAAEBogGiAAMBowGpAAIBugHTAAEB4gHiAAEB5AHkAAEB6gHqAAEB8wHzAAEB9QH1AAEB/AH+AAECAAIBAAECAwIDAAECBwIHAAECCQILAAECEQIRAAECFgIYAAECGgIaAAECPgJDAAECRwKvAAECsgNYAAEDWwNqAAEDcQNxAAEDcwN3AAEDegN/AAEDgQOEAAEDhgOKAAEDjAOnAAEDqwOrAAEDrQO0AAEDtgO4AAEDvQO/AAEDwQPNAAEDzwPZAAED3APsAAED7wRIAAEESwRLAAEETQRNAAEETwRQAAEEWwRbAAEEYgRkAAEEZgRmAAEEagRqAAEEbARtAAEEbwRvAAEEdwSGAAEEhwSHAAIEiASwAAEEsgTKAAEEzATQAAEE0gTVAAEE1wTZAAEE2wTcAAEE3gThAAEAAQAAAAoAXACaAARERkxUABpjeXJsAChncmVrADZsYXRuAEQABAAAAAD//wACAAAABAAEAAAAAP//AAIAAQAFAAQAAAAA//8AAgACAAYABAAAAAD//wACAAMABwAIY3BzcAAyY3BzcAAyY3BzcAAyY3BzcAAya2VybgA4a2VybgA4a2VybgA4a2VybgA4AAAAAQAAAAAAAQABAAIABgHYAAEAAAABAAgAAQAKAAUAJABIAAEA3gAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAkgCwALEAsgCzALQAtQC2ALcAuAC5ANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoASwBMAEyATgBOgE8AT4BPwFFAUYBfwGFAYoBjQJHAkgCSgJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgKDAoUChwKJAosCjQKPApECkwKVApcCmQKbAp0CnwKhAqMCpQKnAqkCqwKtAq8CsgK0ArYCuAK6ArwCvgLAAsICxQLHAskCywLNAs8C0QLTAtUC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8QLyAvQC9gNTA1QDVQNWA1cDWANZA1sDXANdA14DXwNgA2EDYgNkA2UDZgNnA2gDaQNqA3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DuwO9A78D1APaA+AESQRLBE8EVwRZBF4EagACAAAABAAOD84V8jViAAEDVAAEAAABpQrSCtIGggtwCoAK/g+aDAAGiA7uDu4MRg6gCiIO7g7uD5oKigaSDGYMRgrYCqwNUg8QCl4L4gsQDBYGmA22DbYNtgwgCxAKUAxMDbAMTAsQBqYN5gtwD5oLcAasBrIGvAbCBsgMTAbOBtgNtgb+BxQHKgcwB0YHTAdSB4QHigeQDcANwAe+Du4H4AgCDVIIMA7uDu4LJg7uDu4IRg3ADcAIeAiCCIwIpg1ICLgNsAjSCOgLEAkyCUwJaAloCxAJYgloCWgJaAtwDCAK2AxMCxAN5g1IDqAOoA1ICtIK0grSCtIK0gmKCbAJugnECeIJ9AoGChgK/g+aD5oPmg+aDGYLcAtwC3ALcAtwC3ALcAr+DAAMAAwADAAO7g7uDu4O7g7uD5oPmg+aD5oPmgxGDEYMRgxGDxAL4gviC+IL4gviC+IL4gwWDBYMFgwWDbYMIAwgDCAMIAwgDEwMTAtwC+ILcAviC3AL4gr+Cv4K/gr+D5oMAAwWDAAMFgwADBYMAAwWDAAMFg7uDbYO7g7uDu4O7g7uDEYOoAoiCiIKIgoiDu4Ntg7uDbYO7g22DbYPmgwgD5oMIA+aDCAKUApQClAMZgxmDGYMRgxGDEYMRgxGDEYKrA8QDEwPEApeCl4KXgtwDAAO7g7uD5oPEAtwCoAMAApeDu4O7g6gDu4O7g+aCooMZg8QDVIO7g8QDbYMIAxMDCAMAA3mDu4O7gxGDqAOoAsmC3AKgA3mDAAO7g7uD5oKigr+DGYNUgviDBYMIAsQDEwNsAwWDUgMTAqsCqwKrA8QDEwK0grSCtIO7g22C3AL4gwADBYK2AxMCv4PEAxMDu4NUg2wDu4LcAviC3AL4gwADBYMFgwWDVINsA+aDCAMIAsQCyYMTAsmDEwLJgxMDVINsAtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gwADBYMAAwWDAAMFgwADBYMAAwWDAAMFgwADBYMAAwWDu4O7g+aDCAPmgwgD5oMIA+aDCAPmgwgD5oMIA+aDCAMIAxGDEYPEAxMDxAMTA8QDEwOoA7uDGYNUg2wDeYNSA1SDbANtg3ADeYOoA7uDu4PEA+aAAIAhwAGAAYAAAALAAsAAQATABMAAgAlACoAAwAsADUACQA4AD4AEwBFAEYAGgBJAEoAHABMAEwAHgBRAFQAHwBWAFYAIwBaAFoAJABcAF0AJQCKAIoAJwCcAJwAKACwALQAKQC2ALgALgC6ALoAMQC8AL0AMgC/AMAANADCAMQANgDGAMsAOQDRANEAPwDTAN0AQADfAN8ASwDhAOMATADlAOcATwDpAO0AUgDwAPAAVwD1APcAWAD6APsAWwD9AP8AXQEDAQQAYAEJAQkAYgEMAQwAYwEXARkAZAErAS0AZwEwATAAagEyATIAawFJAUkAbAFsAW0AbQFvAXEAbwG6AboAcgG9Ab0AcwHEAcUAdAHIAcgAdgHKAcsAdwHNAc0AeQIoAigAegIqAisAewJHAkgAfQJKAkoAfwJMAm0AgAJvAnIAogJ3AnwApgKBAokArAKLAosAtQKNAo0AtgKPAo8AtwKRApEAuAKTApwAuQKlAqcAwwKpAqkAxgKrAqsAxwKtAq0AyAKvAq8AyQKyArIAygK0ArQAywK2ArYAzAK4ArgAzQK6AroAzgK8ArwAzwK+AsoA0ALMAswA3QLOAs4A3gLQAtAA3wLbAtsA4ALdAt0A4QLfAt8A4gLh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BB7/6wQg/+sEIv/rBCT/6wQm/+sEKP/rBCr/6wQs/+sELv/rBDD/6wQy/+sENP/qBDb/6gQ4/+oEOv/qBDz/6gQ+/+oEQP/qBEL/6ARE/+gERv/oBE0AFAAfADj/1QA6/+QAO//sAD3/3QDR/9UA1f/VARj/5AEy/9UBOv/VAmb/3QLb/9UC3f/VAt//1QLt/+wC7//dAvH/3QNY/90DZ//dA2r/3QOO/9UDoP/sA6L/7AOk/+wDpv/dA7f/5AO//90EQf/dBEP/3QRF/90ETf/VBGr/3QAaADj/sAA6/+0APf/QANH/sADV/7ABGP/tATL/sAE6/7ACZv/QAtv/sALd/7AC3/+wAu//0ALx/9ADWP/QA2f/0ANq/9ADjv+wA6b/0AO3/+0Dv//QBEH/0ARD/9AERf/QBE3/sARq/9AAEAAu/+4AOf/uAmL/7gJj/+4CZP/uAmX/7gKy/+4C4f/uAuP/7gLl/+4C5//uAun/7gLr/+4Df//uBDP/7gQ1/+4ARwAGABAACwAQAEf/6ABI/+gASf/oAEv/6ABV/+gAk//oAJj/6AC6/+gAx//oAMj/6AD2/+gBAv/oAR3/6AEh/+gBOf/oAUv/6AFM/+gBVv/oAWwAEAFtABABbwAQAXAAEAFxABACbv/oAm//6AJw/+gCcf/oAnL/6AKK/+gCjP/oAo7/6AKQ/+gCkv/oApT/6AKW/+gCmP/oApr/6AKc/+gCnv/oAqD/6AKi/+gCpP/oA2v/6AOR/+gDlf/oA5j/6AOoABADqQAQA6wAEAOz/+gDuf/oA77/6APM/+gDzv/oA8//6APb/+gD7P/oBAj/6AQK/+gEDP/oBA7/6AQQ/+gEEv/oBBT/6AQW/+gEKv/oBCz/6AQu/+gEMv/oAAEAVgAEAAAAJgCmAZwB+gIUAlYCzAPCBLgFkgYsCMYKjAteDFQOGg5MDn4O/BDiEVgSKhRMFQIWaBciF6gYBhjIGT4ewBlQGqIc4B0CHhgelh7AHuoAAQAmAE8AWABbAF8AnAC0ALYAtwC4AL8AwgDDAMQAyQDLAMwAzQDRANUA1wDYANoA4gDmAOcA6ADpAOoA7ADuAPAA9QD3APoA/wECASEBbQA9AEf/7ABI/+wASf/sAEv/7ABV/+wAk//sAJj/7AC6/+wAx//sAMj/7AD2/+wBAv/sAR3/7AEh/+wBOf/sAUv/7AFM/+wBVv/sAm7/7AJv/+wCcP/sAnH/7AJy/+wCiv/sAoz/7AKO/+wCkP/sApL/7AKU/+wClv/sApj/7AKa/+wCnP/sAp7/7AKg/+wCov/sAqT/7ANr/+wDkf/sA5X/7AOY/+wDs//sA7n/7AO+/+wDzP/sA87/7APP/+wD2//sA+z/7AQI/+wECv/sBAz/7AQO/+wEEP/sBBL/7AQU/+wEFv/sBCr/7AQs/+wELv/sBDL/7AAXAFP/7AEX/+wCeP/sAnn/7AJ6/+wCe//sAnz/7ALG/+wCyP/sAsr/7ANx/+wDd//sA5P/7APZ/+wD3f/sBBz/7AQe/+wEIP/sBCL/7AQk/+wEJv/sBCj/7AQw/+wABgAQ/4QAEv+EAW7/hAFy/4QBdv+EAXf/hAAQAC7/7AA5/+wCYv/sAmP/7AJk/+wCZf/sArL/7ALh/+wC4//sAuX/7ALn/+wC6f/sAuv/7AN//+wEM//sBDX/7AAdAAb/8gAL//IAWv/zAF3/8wC8//MBGf/zAWz/8gFt//IBb//yAXD/8gFx//ICgf/zAoL/8wLw//MDc//zA5b/8wOf//MDp//zA6j/8gOp//IDrP/yA7j/8wPA//MD4f/zA+P/8wPl//MEQv/zBET/8wRG//MAPQAn//MAK//zADP/8wA1//MAg//zAJL/8wCX//MAsv/zANL/8wEH//MBFv/zARr/8wEc//MBHv/zASD/8wE4//MBVf/zAij/8wIp//MCK//zAiz/8wJT//MCXf/zAl7/8wJf//MCYP/zAmH/8wKJ//MCi//zAo3/8wKP//MCnf/zAp//8wKh//MCo//zAsX/8wLH//MCyf/zAvr/8wNX//MDZP/zA4r/8wON//MDuv/zA73/8wPY//MD2v/zA9z/8wQb//MEHf/zBB//8wQh//MEI//zBCX/8wQn//MEKf/zBCv/8wQt//MEL//zBDH/8wSq//MAPQAn/+YAK//mADP/5gA1/+YAg//mAJL/5gCX/+YAsv/mANL/5gEH/+YBFv/mARr/5gEc/+YBHv/mASD/5gE4/+YBVf/mAij/5gIp/+YCK//mAiz/5gJT/+YCXf/mAl7/5gJf/+YCYP/mAmH/5gKJ/+YCi//mAo3/5gKP/+YCnf/mAp//5gKh/+YCo//mAsX/5gLH/+YCyf/mAvr/5gNX/+YDZP/mA4r/5gON/+YDuv/mA73/5gPY/+YD2v/mA9z/5gQb/+YEHf/mBB//5gQh/+YEI//mBCX/5gQn/+YEKf/mBCv/5gQt/+YEL//mBDH/5gSq/+YANgAl/+QAPP/SAD3/0wCx/+QAs//kANn/0gEM/+QCTP/kAk3/5AJO/+QCT//kAlD/5AJR/+QCUv/kAmb/0wKD/+QChf/kAof/5ALv/9MC8f/TA1P/5ANY/9MDW//kA2f/0wNo/9IDav/TA4P/5AOP/9IDpv/TA6//5AO//9MDwv/SA8X/5APH/+QD0P/SA+r/0gPv/+QD8f/kA/P/5AP1/+QD9//kA/n/5AP7/+QD/f/kA///5AQB/+QEA//kBAX/5ARB/9MEQ//TBEX/0wRP/9IEV//SBGr/0wAmABD/HgAS/x4AJf/NALH/zQCz/80BDP/NAW7/HgFy/x4Bdv8eAXf/HgJM/80CTf/NAk7/zQJP/80CUP/NAlH/zQJS/80Cg//NAoX/zQKH/80DU//NA1v/zQOD/80Dr//NA8X/zQPH/80D7//NA/H/zQPz/80D9f/NA/f/zQP5/80D+//NA/3/zQP//80EAf/NBAP/zQQF/80ApgBH/9wASP/cAEn/3ABL/9wAUf/zAFL/8wBT/9YAVP/zAFX/3ABZ/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAMD/8wDH/9wAyP/cAMr/3QDr//MA7//zAPD/8wDy//MA8//zAPT/8wD2/9wA9//zAPn/8wD6//MA/f/zAP//8wEC/9wBBP/zARf/1gEZ/+EBHf/cASH/3AE1//MBOf/cAUT/8wFJ//MBS//cAUz/3AFW/9wCbv/cAm//3AJw/9wCcf/cAnL/3AJ3//MCeP/WAnn/1gJ6/9YCe//WAnz/1gJ9/90Cfv/dAn//3QKA/90Cgf/hAoL/4QKK/9wCjP/cAo7/3AKQ/9wCkv/cApT/3AKW/9wCmP/cApr/3AKc/9wCnv/cAqD/3AKi/9wCpP/cAr//8wLB//MCw//zAsT/8wLG/9YCyP/WAsr/1gLi/90C5P/dAub/3QLo/90C6v/dAuz/3QLw/+EDa//cA23/8wNv/90Dcf/WA3P/4QN2/90Dd//WA3j/3QOR/9wDkv/zA5P/1gOU//MDlf/cA5b/4QOY/9wDmf/zA57/8wOf/+EDp//hA67/8wOz/9wDtP/zA7j/4QO5/9wDvv/cA8D/4QPM/9wDzv/cA8//3APV//MD1//zA9n/1gPb/9wD3f/WA+H/4QPj/+ED5f/hA+n/8wPs/9wECP/cBAr/3AQM/9wEDv/cBBD/3AQS/9wEFP/cBBb/3AQc/9YEHv/WBCD/1gQi/9YEJP/WBCb/1gQo/9YEKv/cBCz/3AQu/9wEMP/WBDL/3AQ0/90ENv/dBDj/3QQ6/90EPP/dBD7/3QRA/90EQv/hBET/4QRG/+EESv/zBEz/8wRW//MEY//zBGX/8wRn//MAcQAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADH//AAyP/wAMr/7wD2//ABAv/wARn/3AEd//ABIf/wATn/8AFL//ABTP/wAVb/8AFs/9oBbf/aAW//2gFw/9oBcf/aAm7/8AJv//ACcP/wAnH/8AJy//ACff/vAn7/7wJ//+8CgP/vAoH/3AKC/9wCiv/wAoz/8AKO//ACkP/wApL/8AKU//AClv/wApj/8AKa//ACnP/wAp7/8AKg//ACov/wAqT/8ALi/+8C5P/vAub/7wLo/+8C6v/vAuz/7wLw/9wDa//wA2//7wNz/9wDdv/vA3j/7wOR//ADlf/wA5b/3AOY//ADn//cA6f/3AOo/9oDqf/aA6z/2gOz//ADuP/cA7n/8AO+//ADwP/cA8z/8APO//ADz//wA9v/8APh/9wD4//cA+X/3APs//AECP/wBAr/8AQM//AEDv/wBBD/8AQS//AEFP/wBBb/8AQq//AELP/wBC7/8AQy//AENP/vBDb/7wQ4/+8EOv/vBDz/7wQ+/+8EQP/vBEL/3ARE/9wERv/cADQABv+gAAv/oABZ//EAWv/FAF3/xQCa//EAvP/FAMr/8QEZ/8UBbP+gAW3/oAFv/6ABcP+gAXH/oAJ9//ECfv/xAn//8QKA//ECgf/FAoL/xQLi//EC5P/xAub/8QLo//EC6v/xAuz/8QLw/8UDb//xA3P/xQN2//EDeP/xA5b/xQOf/8UDp//FA6j/oAOp/6ADrP+gA7j/xQPA/8UD4f/FA+P/xQPl/8UENP/xBDb/8QQ4//EEOv/xBDz/8QQ+//EEQP/xBEL/xQRE/8UERv/FAD0AR//nAEj/5wBJ/+cAS//nAFX/5wCT/+cAmP/nALr/5wDH/+cAyP/nAPb/5wEC/+cBHf/nASH/5wE5/+cBS//nAUz/5wFW/+cCbv/nAm//5wJw/+cCcf/nAnL/5wKK/+cCjP/nAo7/5wKQ/+cCkv/nApT/5wKW/+cCmP/nApr/5wKc/+cCnv/nAqD/5wKi/+cCpP/nA2v/5wOR/+cDlf/nA5j/5wOz/+cDuf/nA77/5wPM/+cDzv/nA8//5wPb/+cD7P/nBAj/5wQK/+cEDP/nBA7/5wQQ/+cEEv/nBBT/5wQW/+cEKv/nBCz/5wQu/+cEMv/nAHEABgAMAAsADABH/+gASP/oAEn/6ABL/+gAU//qAFX/6ABaAAsAXQALAJP/6ACY/+gAuv/oALwACwDH/+gAyP/oAPb/6AEC/+gBF//qARkACwEd/+gBIf/oATn/6AFL/+gBTP/oAVb/6AFsAAwBbQAMAW8ADAFwAAwBcQAMAm7/6AJv/+gCcP/oAnH/6AJy/+gCeP/qAnn/6gJ6/+oCe//qAnz/6gKBAAsCggALAor/6AKM/+gCjv/oApD/6AKS/+gClP/oApb/6AKY/+gCmv/oApz/6AKe/+gCoP/oAqL/6AKk/+gCxv/qAsj/6gLK/+oC8AALA2v/6ANx/+oDcwALA3f/6gOR/+gDk//qA5X/6AOWAAsDmP/oA58ACwOnAAsDqAAMA6kADAOsAAwDs//oA7gACwO5/+gDvv/oA8AACwPM/+gDzv/oA8//6APZ/+oD2//oA93/6gPhAAsD4wALA+UACwPs/+gECP/oBAr/6AQM/+gEDv/oBBD/6AQS/+gEFP/oBBb/6AQc/+oEHv/qBCD/6gQi/+oEJP/qBCb/6gQo/+oEKv/oBCz/6AQu/+gEMP/qBDL/6ARCAAsERAALBEYACwAMAFz/7QBe/+0A7f/tAvP/7QL1/+0C9//tA5f/7QPD/+0D0f/tA+v/7QRQ/+0EWP/tAAwAXP/yAF7/8gDt//IC8//yAvX/8gL3//IDl//yA8P/8gPR//ID6//yBFD/8gRY//IAHwBa//QAXP/yAF3/9ABe//MAvP/0AO3/8gEZ//QCgf/0AoL/9ALw//QC8//zAvX/8wL3//MDc//0A5b/9AOX//IDn//0A6f/9AO4//QDwP/0A8P/8gPR//ID4f/0A+P/9APl//QD6//yBEL/9ARE//QERv/0BFD/8gRY//IAeQAG/8oAC//KADj/0gA6/9QAPP/0AD3/0wBR/9EAUv/RAFT/0QBa/+YAXP/vAF3/5gC8/+YAwP/RANH/0gDV/9IA2f/0AN3/7QDg/+EA6//RAO3/7wDv/9EA8P/RAPL/0QDz/9EA9P/RAPf/0QD5/9EA+v/RAP3/0QD//9EBBP/RARj/1AEZ/+YBMv/SATX/0QE6/9IBRP/RAUn/0QFs/8oBbf/KAW//ygFw/8oBcf/KAmb/0wJ3/9ECgf/mAoL/5gK//9ECwf/RAsP/0QLE/9EC2//SAt3/0gLf/9IC7//TAvD/5gLx/9MDWP/TA2f/0wNo//QDav/TA23/0QNz/+YDgv/tA47/0gOP//QDkv/RA5T/0QOW/+YDl//vA5n/0QOe/9EDn//mA6b/0wOn/+YDqP/KA6n/ygOs/8oDrv/RA7T/0QO3/9QDuP/mA7//0wPA/+YDwv/0A8P/7wPQ//QD0f/vA9X/0QPX/9ED4P/tA+H/5gPi/+0D4//mA+T/7QPl/+YD5v/hA+n/0QPq//QD6//vBEH/0wRC/+YEQ//TBET/5gRF/9MERv/mBEr/0QRM/9EETf/SBE//9ARQ/+8EUf/hBFP/4QRW/9EEV//0BFj/7wRj/9EEZf/RBGf/0QRq/9MAHQA4/74AWv/vAF3/7wC8/+8A0f++ANX/vgEZ/+8BMv++ATr/vgKB/+8Cgv/vAtv/vgLd/74C3/++AvD/7wNz/+8Djv++A5b/7wOf/+8Dp//vA7j/7wPA/+8D4f/vA+P/7wPl/+8EQv/vBET/7wRG/+8ETf++ADQAOP/mADr/5wA8//IAPf/nAFz/8QDR/+YA1f/mANn/8gDd/+4A4P/oAO3/8QEY/+cBMv/mATr/5gJm/+cC2//mAt3/5gLf/+YC7//nAvH/5wNY/+cDZ//nA2j/8gNq/+cDgv/uA47/5gOP//IDl//xA6b/5wO3/+cDv//nA8L/8gPD//ED0P/yA9H/8QPg/+4D4v/uA+T/7gPm/+gD6v/yA+v/8QRB/+cEQ//nBEX/5wRN/+YET//yBFD/8QRR/+gEU//oBFf/8gRY//EEav/nAIgAJQAQACf/6AAr/+gAM//oADX/6AA4/+AAOv/gAD3/3wCD/+gAkv/oAJf/6ACxABAAsv/oALMAEADR/+AA0v/oANMAEADV/+AA3AAQAOD/4QDxABAA+P/gAQMAEAEH/+gBDAAQARb/6AEY/+ABGv/oARz/6AEe/+gBIP/oATL/4AE4/+gBOv/gAVEAEAFV/+gCKP/oAin/6AIr/+gCLP/oAkwAEAJNABACTgAQAk8AEAJQABACUQAQAlIAEAJT/+gCXf/oAl7/6AJf/+gCYP/oAmH/6AJm/98CgwAQAoUAEAKHABACif/oAov/6AKN/+gCj//oAp3/6AKf/+gCof/oAqP/6ALF/+gCx//oAsn/6ALb/+AC3f/gAt//4ALv/98C8f/fAvr/6ANTABADV//oA1j/3wNbABADZP/oA2f/3wNq/98DgwAQA4r/6AON/+gDjv/gA6b/3wOvABADt//gA7r/6AO9/+gDv//fA8UAEAPHABAD2P/oA9r/6APc/+gD5v/hA+f/4APtABAD7gAQA+8AEAPxABAD8wAQA/UAEAP3ABAD+QAQA/sAEAP9ABAD/wAQBAEAEAQDABAEBQAQBBv/6AQd/+gEH//oBCH/6AQj/+gEJf/oBCf/6AQp/+gEK//oBC3/6AQv/+gEMf/oBEH/3wRD/98ERf/fBE3/4ARR/+EEUv/gBFP/4QRU/+AEaAAQBGkAEARq/98Eqv/oAC0AOP/xADr/9AA8//QAPf/wANH/8QDT//UA1f/xANn/9ADc//UA3f/zARj/9AEy//EBOv/xAVH/9QJm//AC2//xAt3/8QLf//EC7//wAvH/8ANY//ADZ//wA2j/9ANq//ADgv/zA47/8QOP//QDpv/wA7f/9AO///ADwv/0A9D/9APg//MD4v/zA+T/8wPq//QD7f/1BEH/8ARD//AERf/wBE3/8QRP//QEV//0BGj/9QRq//AAWQAlAA8AOP/mADr/5gA8AA4APf/mALEADwCzAA8A0f/mANMADgDV/+YA2QAOANwADgDdAAsA4P/lAPEADwD4/+gBAwAPAQwADwEY/+YBMv/mATr/5gFRAA4CTAAPAk0ADwJOAA8CTwAPAlAADwJRAA8CUgAPAmb/5gKDAA8ChQAPAocADwLb/+YC3f/mAt//5gLv/+YC8f/mA1MADwNY/+YDWwAPA2f/5gNoAA4Dav/mA4IACwODAA8Djv/mA48ADgOm/+YDrwAPA7f/5gO//+YDwgAOA8UADwPHAA8D0AAOA+AACwPiAAsD5AALA+b/5QPn/+gD6gAO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ABADogOiABADpAOkABADpgOmAA8DpwOnABkDqAOpAB0DrAOsAB0DrQOtAAIDrgOuABcDsAOwABMDsQOxAAUDswOzABYDtwO3AA0DuAO4ABkDvQO9AAQDvgO+ABQDvwO/AA8DwAPAABkDwQPBAAIDwgPCAA4DwwPDABsDxAPEAAIDxgPGABMDyAPIABMDywPLAAUDzAPMABYDzgPPABYD0APQAA4D0QPRABsD2APYAAMD2QPZABgD3QPdABgD3wPfABUD4APgABID4QPhABkD4gPiABID4wPjABkD5APkABID5QPlABkD6gPqAA4D6wPrABsD8APwABMD8gPyABMD9AP0ABMD9gP2ABMD+AP4ABMD+gP6ABMD/AP8ABMD/gP+ABMEAAQAABMEAgQCABMEBAQEABMEBgQGABMEBwQHAAUECAQIABYECQQJAAUECgQKABYECwQLAAUEDAQMABYEDQQNAAUEDgQOABYEDwQPAAUEEAQQABYEEQQRAAUEEgQSABYEEwQTAAUEFAQUABYEFQQVAAUEFgQWABYEFwQXAAIEGQQZAAIEGwQbAAMEHAQcABgEHQQdAAMEHgQeABgEHwQfAAMEIAQgABgEIQQhAAMEIgQiABgEIwQjAAMEJAQkABgEJQQlAAMEJgQmABgEJwQnAAMEKAQoABgEMAQwABgEMwQzAAwENQQ1AAwEQQRBAA8EQgRCABkEQwRDAA8ERAREABkERQRFAA8ERgRGABkESQRJAAkESwRLAAIETQRNAAYETwRPAA4EUARQABsEVQRVAAcEVgRWAAgEVwRXAA4EWARYABsEWwRbABcEXQRdAB8EXgReAAcEYARgAAkEZARkAAIEZgRmAAIEagRqAA8EqgSqAAMAAgFtAAYABgAHAAsACwAHABAAEAATABEAEQAXABIAEgATACUAJQARACcAJwAFACsAKwAFAC4ALgAcADMAMwAFADUANQAFADcANwAZADgAOAAKADkAOQAGADoAOgANADsAOwAJADwAPAASAD0APQAOAD4APgAUAEUARQAaAEcASQAVAEsASwAVAFEAUgAYAFMAUwAIAFQAVAAYAFUAVQAVAFcAVwAbAFkAWQALAFoAWgACAFwAXAAWAF0AXQACAF4AXgAMAIMAgwAFAJIAkgAFAJMAkwAVAJcAlwAFAJgAmAAVAJoAmgALALEAsQAR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b20EbGRub20EbGRub20EbGZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmxpZ2EEfGxpZ2EEhGxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxvY2wEkGxvY2wElmxvY2wEnG51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqHBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5AAAAAEAAAAAAAIAAgADAAAAAQAHAAAAAQAYAAAAAwAVABYAFwAAAAIACAAJAAAAAQAJAAAAAQAUAAAAAQAEAAAAAQAGAAAAAQAFAAAAAQAZAAAAAQARAAAAAQATAAAAAQABAAAAAQAKAAAAAQALAAAAAQAMAAAAAQANAAAAAQAOAAAAAQAPAAAAAQAQAAAAAQASABsAOAPGBrQHYA3wDfAOBg4oDl4OhA6yDsYO2g7uDwAPGg9cD3oPmA/KD/wQLhBCEHoQbBB6EKYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCRAI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTdAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYB/wTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNgE2QTbAhoE3AIOBNcCEwINBNoCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkcCSAJKAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CrwKyArQCtgK4AroCvAK+AsACwgLFAscCyQLLAs0CzwLRAtMC1QLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvIC9AL2A1MDVANVA1YDVwNYA1kDWwNcA10DXgNfA2ADYQNiA2QDZQNmA2cDaANpA2oDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwO7A70DvwPUA9oD4ARJBEsETwRXBFkEXgRqAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAv0DMAI7AfoEygTLAfsB/AH9Af4B/wIABM4EzwTRBNQE3QICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZA08DGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNQA1EDUgTJBMwEzQTQBNIE0wIBBNUEwQTCBMMExATFBMYExwTIBNYE2ATZAhgE2wIaBNwC/AIOBNcCEwINBNoCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSwJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoQChgKIAooCjAKOApACkgKUApYCmAKaApwCngKgAqICpAKmAqgCqgKsAq4CswK1ArcCuQK7Ar0CvwLBAsMCxgLIAsoCzALOAtAC0gLUAtYC2gLcAt4C4ALiAuQC5gLoAuoC7ALuAvAC8wL1AvcDkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwO8A74DwAPOA9UD2wPhBEcESgRMBFAEWARaBFsEXwRrAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAAAaAAEAAQBNAAMAAAABABIAAQB4AAEAAAAaAAEAAQBOAAMAAAABABIAAQBgAAEAAAAaAAEAAQKuAAMAAAABABIAAQBIAAEAAAAaAAEAAQObAAMAAAABABIAAQAwAAEAAAAaAAEAAQOdAAMAAAABABIAAQAYAAEAAAAaAAEAAQQaAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCTAACAKcCTQACAKgCTwACAKkD8QACAKoEewACAKsD7wACAKwAAQAEBIgAAgCsAAEABAKJAAIAqAACAAYADASKAAIArASMAAIBogAGAA4AFAAaACAAJgAsAlQAAgCnAlUAAgCoBAsAAgCpBAkAAgCqBH0AAgCrBAcAAgCsAAIABgAMBHcAAgCoAqMAAgGiAAEABASOAAIArAAGAA4AFAAaACAAJgAsAlgAAgCnAlkAAgCoAqcAAgCpBBcAAgCqBH8AAgCrBBkAAgCsAAMACAAOABQEkAACAKgEkgACAKwCtAACAaIAAwAIAA4AFAK2AAIAqASUAAIArAK4AAIBogACAAYADAOtAAIAqASWAAIArAAFAAwAEgAYAB4AJAR5AAIApwK+AAIAqAJcAAIAqQSYAAIArALAAAIBogAGAA4AFAAaACAAJgAsAl0AAgCnAl4AAgCoAmAAAgCpBB0AAgCqBIEAAgCrBBsAAgCsAAEABASaAAIAqAAEAAoAEAAWABwCywACAKgEgwACAKsEnAACAKwCzQACAaIAAwAIAA4AFALRAAIAqASeAAIArALXAAIBogACAAYADASgAAIArALbAAIBogAGAA4AFAAaACAAJgAsAmIAAgCnAmMAAgCoAuEAAgCpBDUAAgCqBIUAAgCrBDMAAgCsAAIABgAMBKIAAgCpBKQAAgCsAAMACAAOABQDoAACAKcDogACAKgEpgACAKwABQAMABIAGAAeACQDpgACAKcCZgACAKgERQACAKkEQwACAKoEQQACAKwAAgAGAAwC8gACAKgEqAACAKwABgAOABQAGgAgACYALAJnAAIApwJoAAIAqAJqAAIAqQPyAAIAqgR8AAIAqwPwAAIArAABAAQEiQACAKwAAQAEAooAAgCoAAIABgAMBIsAAgCsBI0AAgGiAAYADgAUABoAIAAmACwCbwACAKcCcAACAKgEDAACAKkECgACAKoEfgACAKsECAACAKwAAQAEBHgAAgCoAAEABASPAAIArAABAAQEGgACAKwAAwAIAA4AFASRAAIAqASTAAIArAK1AAIBogADAAgADgAUArcAAgCoBJUAAgCsArkAAgGiAAIABgAMA64AAgCoBJcAAgCsAAUADAASABgAHgAkBHoAAgCnAr8AAgCoAncAAgCpBJkAAgCsAsEAAgGiAAYADgAUABoAIAAmACwCeAACAKcCeQACAKgCewACAKkEHgACAKoEggACAKsEHAACAKwAAQAEBJsAAgCoAAQACgAQABYAHALMAAIAqASEAAIAqwSdAAIArALOAAIBogADAAgADgAUAtIAAgCoBJ8AAgCsAtgAAgGiAAIABgAMBKEAAgCsAtwAAgGiAAYADgAUABoAIAAmACwCfQACAKcCfgACAKgC4gACAKkENgACAKoEhgACAKsENAACAKwAAgAGAAwEowACAKkEpQACAKwAAwAIAA4AFAOhAAIApwOjAAIAqASnAAIArAAFAAwAEgAYAB4AJAOnAAIApwKBAAIAqARGAAIAqQREAAIAqgRCAAIArAACAAYADALzAAIAqASpAAIArAABAAQC+AACAKgAAQAEAvoAAgCoAAEABAL5AAIAqAABAAQC+wACAKgABQAMABIAGAAeACQCcwACAKcCdAACAKgCqAACAKkEGAACAKoEgAACAKsABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQELAACAKcEKgACAKgEMAACAKkELgACAKoEMgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwABQAMABIAGAAeACQEOgACAKcEOAACAKgEPgACAKkEPAACAKoEQAACAKwAAQAEBIcAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLVAtYAAQAAAAEACAACAA4ABATeBN8E4AThAAEABAKHAogCmQKaAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiECIgGuAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAiIAAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIwRxBHIEcwR0BHUEdgABAAAAAQAIAAIAFgAIBHYCIwRxBHIEcwR0Aa0EdQABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAAAaAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwJDAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKuA5sDnQQa"
+};
+
+/*!
+   Copyright 2008-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ DataTables 1.10.20
+ ©2008-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(f,z,y){f instanceof String&&(f=String(f));for(var p=f.length,H=0;H<p;H++){var L=f[H];if(z.call(y,L,H,f))return{i:H,v:L}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(f,z,y){f!=Array.prototype&&f!=Object.prototype&&(f[z]=y.value)};$jscomp.getGlobal=function(f){return"undefined"!=typeof window&&window===f?f:"undefined"!=typeof global&&null!=global?global:f};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(f,z,y,p){if(z){y=$jscomp.global;f=f.split(".");for(p=0;p<f.length-1;p++){var H=f[p];H in y||(y[H]={});y=y[H]}f=f[f.length-1];p=y[f];z=z(p);z!=p&&null!=z&&$jscomp.defineProperty(y,f,{configurable:!0,writable:!0,value:z})}};$jscomp.polyfill("Array.prototype.find",function(f){return f?f:function(f,y){return $jscomp.findInternal(this,f,y).v}},"es6","es3");
+(function(f){"function"===typeof define&&define.amd?define(["jquery"],function(z){return f(z,window,document)}):"object"===typeof exports?module.exports=function(z,y){z||(z=window);y||(y="undefined"!==typeof window?require("jquery"):require("jquery")(z));return f(y,z,z.document)}:f(jQuery,window,document)})(function(f,z,y,p){function H(a){var b,c,d={};f.each(a,function(e,h){(b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" ")&&(c=e.replace(b[0],b[2].toLowerCase()),
+d[c]=e,"o"===b[1]&&H(a[e]))});a._hungarianMap=d}function L(a,b,c){a._hungarianMap||H(a);var d;f.each(b,function(e,h){d=a._hungarianMap[e];d===p||!c&&b[d]!==p||("o"===d.charAt(0)?(b[d]||(b[d]={}),f.extend(!0,b[d],b[e]),L(a[d],b[d],c)):b[d]=b[e])})}function Ga(a){var b=q.defaults.oLanguage,c=b.sDecimal;c&&Ha(c);if(a){var d=a.sZeroRecords;!a.sEmptyTable&&d&&"No data available in table"===b.sEmptyTable&&M(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&d&&"Loading..."===b.sLoadingRecords&&M(a,a,
+"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&c!==a&&Ha(a)}}function jb(a){F(a,"ordering","bSort");F(a,"orderMulti","bSortMulti");F(a,"orderClasses","bSortClasses");F(a,"orderCellsTop","bSortCellsTop");F(a,"order","aaSorting");F(a,"orderFixed","aaSortingFixed");F(a,"paging","bPaginate");F(a,"pagingType","sPaginationType");F(a,"pageLength","iDisplayLength");F(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":
+"");"boolean"===typeof a.scrollX&&(a.scrollX=a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&L(q.models.oSearch,a[b])}function kb(a){F(a,"orderable","bSortable");F(a,"orderData","aDataSort");F(a,"orderSequence","asSorting");F(a,"orderDataType","sortDataType");var b=a.aDataSort;"number"!==typeof b||f.isArray(b)||(a.aDataSort=[b])}function lb(a){if(!q.__browser){var b={};q.__browser=b;var c=f("<div/>").css({position:"fixed",top:0,left:-1*f(z).scrollLeft(),height:1,width:1,
+overflow:"hidden"}).append(f("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(f("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}f.extend(a.oBrowser,q.__browser);a.oScroll.iBarWidth=q.__browser.barWidth}
+function mb(a,b,c,d,e,h){var g=!1;if(c!==p){var k=c;g=!0}for(;d!==e;)a.hasOwnProperty(d)&&(k=g?b(k,a[d],d,a):a[d],g=!0,d+=h);return k}function Ia(a,b){var c=q.defaults.column,d=a.aoColumns.length;c=f.extend({},q.models.oColumn,c,{nTh:b?b:y.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=f.extend({},q.models.oSearch,c[d]);ma(a,d,f(b).data())}function ma(a,b,c){b=a.aoColumns[b];
+var d=a.oClasses,e=f(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var h=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);h&&(b.sWidthOrig=h[1])}c!==p&&null!==c&&(kb(c),L(q.defaults.column,c,!0),c.mDataProp===p||c.mData||(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),f.extend(b,c),M(b,c,"sWidth","sWidthOrig"),c.iDataSort!==p&&(b.aDataSort=[c.iDataSort]),M(b,c,"aDataSort"));var g=b.mData,k=U(g),
+l=b.mRender?U(b.mRender):null;c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=f.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=k(a,b,p,c);return l&&b?l(d,b,a,c):d};b.fnSetData=function(a,b,c){return Q(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==f.inArray("asc",b.asSorting);c=-1!==f.inArray("desc",b.asSorting);b.bSortable&&(a||c)?a&&!c?(b.sSortingClass=
+d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI):(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI="")}function aa(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ja(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;""===b.sY&&""===b.sX||na(a);A(a,null,"column-sizing",[a])}function ba(a,b){a=oa(a,"bVisible");return"number"===
+typeof a[b]?a[b]:null}function ca(a,b){a=oa(a,"bVisible");b=f.inArray(b,a);return-1!==b?b:null}function W(a){var b=0;f.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==f(d.nTh).css("display")&&b++});return b}function oa(a,b){var c=[];f.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Ka(a){var b=a.aoColumns,c=a.aoData,d=q.ext.type.detect,e,h,g;var k=0;for(e=b.length;k<e;k++){var f=b[k];var n=[];if(!f.sType&&f._sManualType)f.sType=f._sManualType;else if(!f.sType){var m=0;for(h=
+d.length;m<h;m++){var w=0;for(g=c.length;w<g;w++){n[w]===p&&(n[w]=I(a,w,k,"type"));var u=d[m](n[w],a);if(!u&&m!==d.length-1)break;if("html"===u)break}if(u){f.sType=u;break}}f.sType||(f.sType="string")}}}function nb(a,b,c,d){var e,h,g,k=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){var l=b[e];var n=l.targets!==p?l.targets:l.aTargets;f.isArray(n)||(n=[n]);var m=0;for(h=n.length;m<h;m++)if("number"===typeof n[m]&&0<=n[m]){for(;k.length<=n[m];)Ia(a);d(n[m],l)}else if("number"===typeof n[m]&&0>n[m])d(k.length+
+n[m],l);else if("string"===typeof n[m]){var w=0;for(g=k.length;w<g;w++)("_all"==n[m]||f(k[w].nTh).hasClass(n[m]))&&d(w,l)}}if(c)for(e=0,a=c.length;e<a;e++)d(e,c[e])}function R(a,b,c,d){var e=a.aoData.length,h=f.extend(!0,{},q.models.oRow,{src:c?"dom":"data",idx:e});h._aData=b;a.aoData.push(h);for(var g=a.aoColumns,k=0,l=g.length;k<l;k++)g[k].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==p&&(a.aIds[b]=h);!c&&a.oFeatures.bDeferRender||La(a,e,c,d);return e}function pa(a,b){var c;b instanceof
+f||(b=f(b));return b.map(function(b,e){c=Ma(a,e);return R(a,c.data,e,c.cells)})}function I(a,b,c,d){var e=a.iDraw,h=a.aoColumns[c],g=a.aoData[b]._aData,k=h.sDefaultContent,f=h.fnGetData(g,d,{settings:a,row:b,col:c});if(f===p)return a.iDrawError!=e&&null===k&&(O(a,0,"Requested unknown parameter "+("function"==typeof h.mData?"{function}":"'"+h.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),k;if((f===g||null===f)&&null!==k&&d!==p)f=k;else if("function"===typeof f)return f.call(g);return null===
+f&&"display"==d?"":f}function ob(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d,{settings:a,row:b,col:c})}function Na(a){return f.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\\./g,".")})}function U(a){if(f.isPlainObject(a)){var b={};f.each(a,function(a,c){c&&(b[a]=U(c))});return function(a,c,h,g){var d=b[c]||b._;return d!==p?d(a,c,h,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,h,g){return a(b,c,h,g)};if("string"!==typeof a||
+-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(b,c){return b[a]};var c=function(a,b,h){if(""!==h){var d=Na(h);for(var e=0,l=d.length;e<l;e++){h=d[e].match(da);var n=d[e].match(X);if(h){d[e]=d[e].replace(da,"");""!==d[e]&&(a=a[d[e]]);n=[];d.splice(0,e+1);d=d.join(".");if(f.isArray(a))for(e=0,l=a.length;e<l;e++)n.push(c(a[e],b,d));a=h[0].substring(1,h[0].length-1);a=""===a?n:n.join(a);break}else if(n){d[e]=d[e].replace(X,"");a=a[d[e]]();continue}if(null===a||a[d[e]]===
+p)return p;a=a[d[e]]}}return a};return function(b,e){return c(b,e,a)}}function Q(a){if(f.isPlainObject(a))return Q(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"!==typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(b,d){b[a]=d};var b=function(a,d,e){e=Na(e);var c=e[e.length-1];for(var g,k,l=0,n=e.length-1;l<n;l++){g=e[l].match(da);k=e[l].match(X);if(g){e[l]=e[l].replace(da,"");a[e[l]]=[];c=e.slice();
+c.splice(0,l+1);g=c.join(".");if(f.isArray(d))for(k=0,n=d.length;k<n;k++)c={},b(c,d[k],g),a[e[l]].push(c);else a[e[l]]=d;return}k&&(e[l]=e[l].replace(X,""),a=a[e[l]](d));if(null===a[e[l]]||a[e[l]]===p)a[e[l]]={};a=a[e[l]]}if(c.match(X))a[c.replace(X,"")](d);else a[c.replace(da,"")]=d};return function(c,d){return b(c,d,a)}}function Oa(a){return J(a.aoData,"_aData")}function qa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function ra(a,b,c){for(var d=-1,e=0,h=a.length;e<
+h;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===p&&a.splice(d,1)}function ea(a,b,c,d){var e=a.aoData[b],h,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=I(a,b,d,"display")};if("dom"!==c&&(c&&"auto"!==c||"dom"!==e.src)){var k=e.anCells;if(k)if(d!==p)g(k[d],d);else for(c=0,h=k.length;c<h;c++)g(k[c],c)}else e._aData=Ma(a,e,d,d===p?p:e._aData).data;e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==p)g[d].sType=null;else{c=0;for(h=g.length;c<h;c++)g[c].sType=null;
+Pa(a,e)}}function Ma(a,b,c,d){var e=[],h=b.firstChild,g,k=0,l,n=a.aoColumns,m=a._rowReadObject;d=d!==p?d:m?{}:[];var w=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),Q(a)(d,b.getAttribute(c)))}},u=function(a){if(c===p||c===k)g=n[k],l=f.trim(a.innerHTML),g&&g._bAttrSrc?(Q(g.mData._)(d,l),w(g.mData.sort,a),w(g.mData.type,a),w(g.mData.filter,a)):m?(g._setter||(g._setter=Q(g.mData)),g._setter(d,l)):d[k]=l;k++};if(h)for(;h;){var q=h.nodeName.toUpperCase();if("TD"==
+q||"TH"==q)u(h),e.push(h);h=h.nextSibling}else for(e=b.anCells,h=0,q=e.length;h<q;h++)u(e[h]);(b=b.firstChild?b:b.nTr)&&(b=b.getAttribute("id"))&&Q(a.rowId)(d,b);return{data:d,cells:e}}function La(a,b,c,d){var e=a.aoData[b],h=e._aData,g=[],k,l;if(null===e.nTr){var n=c||y.createElement("tr");e.nTr=n;e.anCells=g;n._DT_RowIndex=b;Pa(a,e);var m=0;for(k=a.aoColumns.length;m<k;m++){var w=a.aoColumns[m];var p=(l=c?!1:!0)?y.createElement(w.sCellType):d[m];p._DT_CellIndex={row:b,column:m};g.push(p);if(l||
+!(c&&!w.mRender&&w.mData===m||f.isPlainObject(w.mData)&&w.mData._===m+".display"))p.innerHTML=I(a,b,m,"display");w.sClass&&(p.className+=" "+w.sClass);w.bVisible&&!c?n.appendChild(p):!w.bVisible&&c&&p.parentNode.removeChild(p);w.fnCreatedCell&&w.fnCreatedCell.call(a.oInstance,p,I(a,b,m),h,b,m)}A(a,"aoRowCreatedCallback",null,[n,h,b,g])}e.nTr.setAttribute("role","row")}function Pa(a,b){var c=b.nTr,d=b._aData;if(c){if(a=a.rowIdFn(d))c.id=a;d.DT_RowClass&&(a=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?
+ta(b.__rowc.concat(a)):a,f(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&f(c).attr(d.DT_RowAttr);d.DT_RowData&&f(c).data(d.DT_RowData)}}function pb(a){var b,c,d=a.nTHead,e=a.nTFoot,h=0===f("th, td",d).length,g=a.oClasses,k=a.aoColumns;h&&(c=f("<tr/>").appendTo(d));var l=0;for(b=k.length;l<b;l++){var n=k[l];var m=f(n.nTh).addClass(n.sClass);h&&m.appendTo(c);a.oFeatures.bSort&&(m.addClass(n.sSortingClass),!1!==n.bSortable&&(m.attr("tabindex",a.iTabIndex).attr("aria-controls",
+a.sTableId),Qa(a,n.nTh,l)));n.sTitle!=m[0].innerHTML&&m.html(n.sTitle);Ra(a,"header")(a,m,n,g)}h&&fa(a.aoHeader,d);f(d).find(">tr").attr("role","row");f(d).find(">tr>th, >tr>td").addClass(g.sHeaderTH);f(e).find(">tr>th, >tr>td").addClass(g.sFooterTH);if(null!==e)for(a=a.aoFooter[0],l=0,b=a.length;l<b;l++)n=k[l],n.nTf=a[l].cell,n.sClass&&f(n.nTf).addClass(n.sClass)}function ha(a,b,c){var d,e,h=[],g=[],k=a.aoColumns.length;if(b){c===p&&(c=!1);var l=0;for(d=b.length;l<d;l++){h[l]=b[l].slice();h[l].nTr=
+b[l].nTr;for(e=k-1;0<=e;e--)a.aoColumns[e].bVisible||c||h[l].splice(e,1);g.push([])}l=0;for(d=h.length;l<d;l++){if(a=h[l].nTr)for(;e=a.firstChild;)a.removeChild(e);e=0;for(b=h[l].length;e<b;e++){var n=k=1;if(g[l][e]===p){a.appendChild(h[l][e].cell);for(g[l][e]=1;h[l+k]!==p&&h[l][e].cell==h[l+k][e].cell;)g[l+k][e]=1,k++;for(;h[l][e+n]!==p&&h[l][e].cell==h[l][e+n].cell;){for(c=0;c<k;c++)g[l+c][e+n]=1;n++}f(h[l][e].cell).attr("rowspan",k).attr("colspan",n)}}}}}function S(a){var b=A(a,"aoPreDrawCallback",
+"preDraw",[a]);if(-1!==f.inArray(!1,b))K(a,!1);else{b=[];var c=0,d=a.asStripeClasses,e=d.length,h=a.oLanguage,g=a.iInitDisplayStart,k="ssp"==D(a),l=a.aiDisplay;a.bDrawing=!0;g!==p&&-1!==g&&(a._iDisplayStart=k?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);g=a._iDisplayStart;var n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,K(a,!1);else if(!k)a.iDraw++;else if(!a.bDestroying&&!qb(a))return;if(0!==l.length)for(h=k?a.aoData.length:n,k=k?0:g;k<h;k++){var m=l[k],w=a.aoData[m];
+null===w.nTr&&La(a,m);var u=w.nTr;if(0!==e){var q=d[c%e];w._sRowStripe!=q&&(f(u).removeClass(w._sRowStripe).addClass(q),w._sRowStripe=q)}A(a,"aoRowCallback",null,[u,w._aData,c,k,m]);b.push(u);c++}else c=h.sZeroRecords,1==a.iDraw&&"ajax"==D(a)?c=h.sLoadingRecords:h.sEmptyTable&&0===a.fnRecordsTotal()&&(c=h.sEmptyTable),b[0]=f("<tr/>",{"class":e?d[0]:""}).append(f("<td />",{valign:"top",colSpan:W(a),"class":a.oClasses.sRowEmpty}).html(c))[0];A(a,"aoHeaderCallback","header",[f(a.nTHead).children("tr")[0],
+Oa(a),g,n,l]);A(a,"aoFooterCallback","footer",[f(a.nTFoot).children("tr")[0],Oa(a),g,n,l]);d=f(a.nTBody);d.children().detach();d.append(f(b));A(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function V(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&rb(a);d?ia(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;S(a);a._drawHold=!1}function sb(a){var b=a.oClasses,c=f(a.nTable);c=f("<div/>").insertBefore(c);var d=a.oFeatures,e=
+f("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var h=a.sDom.split(""),g,k,l,n,m,p,u=0;u<h.length;u++){g=null;k=h[u];if("<"==k){l=f("<div/>")[0];n=h[u+1];if("'"==n||'"'==n){m="";for(p=2;h[u+p]!=n;)m+=h[u+p],p++;"H"==m?m=b.sJUIHeader:"F"==m&&(m=b.sJUIFooter);-1!=m.indexOf(".")?(n=m.split("."),l.id=n[0].substr(1,n[0].length-1),l.className=n[1]):"#"==m.charAt(0)?l.id=m.substr(1,
+m.length-1):l.className=m;u+=p}e.append(l);e=f(l)}else if(">"==k)e=e.parent();else if("l"==k&&d.bPaginate&&d.bLengthChange)g=tb(a);else if("f"==k&&d.bFilter)g=ub(a);else if("r"==k&&d.bProcessing)g=vb(a);else if("t"==k)g=wb(a);else if("i"==k&&d.bInfo)g=xb(a);else if("p"==k&&d.bPaginate)g=yb(a);else if(0!==q.ext.feature.length)for(l=q.ext.feature,p=0,n=l.length;p<n;p++)if(k==l[p].cFeature){g=l[p].fnInit(a);break}g&&(l=a.aanFeatures,l[k]||(l[k]=[]),l[k].push(g),e.append(g))}c.replaceWith(e);a.nHolding=
+null}function fa(a,b){b=f(b).children("tr");var c,d,e;a.splice(0,a.length);var h=0;for(e=b.length;h<e;h++)a.push([]);h=0;for(e=b.length;h<e;h++){var g=b[h];for(c=g.firstChild;c;){if("TD"==c.nodeName.toUpperCase()||"TH"==c.nodeName.toUpperCase()){var k=1*c.getAttribute("colspan");var l=1*c.getAttribute("rowspan");k=k&&0!==k&&1!==k?k:1;l=l&&0!==l&&1!==l?l:1;var n=0;for(d=a[h];d[n];)n++;var m=n;var p=1===k?!0:!1;for(d=0;d<k;d++)for(n=0;n<l;n++)a[h+n][m+d]={cell:c,unique:p},a[h+n].nTr=g}c=c.nextSibling}}}
+function ua(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],fa(c,b)));b=0;for(var e=c.length;b<e;b++)for(var h=0,g=c[b].length;h<g;h++)!c[b][h].unique||d[h]&&a.bSortCellsTop||(d[h]=c[b][h].cell);return d}function va(a,b,c){A(a,"aoServerParams","serverParams",[b]);if(b&&f.isArray(b)){var d={},e=/(.*?)\[\]$/;f.each(b,function(a,b){(a=b.name.match(e))?(a=a[0],d[a]||(d[a]=[]),d[a].push(b.value)):d[b.name]=b.value});b=d}var h=a.ajax,g=a.oInstance,k=function(b){A(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(f.isPlainObject(h)&&
+h.data){var l=h.data;var n="function"===typeof l?l(b,a):l;b="function"===typeof l&&n?n:f.extend(!0,b,n);delete h.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&O(a,0,c);a.json=b;k(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c,d){d=A(a,null,"xhr",[a,null,a.jqXHR]);-1===f.inArray(!0,d)&&("parsererror"==c?O(a,0,"Invalid JSON response",1):4===b.readyState&&O(a,0,"Ajax error",7));K(a,!1)}};a.oAjaxData=b;A(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(g,
+a.sAjaxSource,f.map(b,function(a,b){return{name:b,value:a}}),k,a):a.sAjaxSource||"string"===typeof h?a.jqXHR=f.ajax(f.extend(n,{url:h||a.sAjaxSource})):"function"===typeof h?a.jqXHR=h.call(g,b,k,a):(a.jqXHR=f.ajax(f.extend(n,h)),h.data=l)}function qb(a){return a.bAjaxDataGet?(a.iDraw++,K(a,!0),va(a,zb(a),function(b){Ab(a,b)}),!1):!0}function zb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,h=a.aoPreSearchCols,g=[],k=Y(a);var l=a._iDisplayStart;var n=!1!==d.bPaginate?a._iDisplayLength:
+-1;var m=function(a,b){g.push({name:a,value:b})};m("sEcho",a.iDraw);m("iColumns",c);m("sColumns",J(b,"sName").join(","));m("iDisplayStart",l);m("iDisplayLength",n);var p={draw:a.iDraw,columns:[],order:[],start:l,length:n,search:{value:e.sSearch,regex:e.bRegex}};for(l=0;l<c;l++){var u=b[l];var sa=h[l];n="function"==typeof u.mData?"function":u.mData;p.columns.push({data:n,name:u.sName,searchable:u.bSearchable,orderable:u.bSortable,search:{value:sa.sSearch,regex:sa.bRegex}});m("mDataProp_"+l,n);d.bFilter&&
+(m("sSearch_"+l,sa.sSearch),m("bRegex_"+l,sa.bRegex),m("bSearchable_"+l,u.bSearchable));d.bSort&&m("bSortable_"+l,u.bSortable)}d.bFilter&&(m("sSearch",e.sSearch),m("bRegex",e.bRegex));d.bSort&&(f.each(k,function(a,b){p.order.push({column:b.col,dir:b.dir});m("iSortCol_"+a,b.col);m("sSortDir_"+a,b.dir)}),m("iSortingCols",k.length));b=q.ext.legacy.ajax;return null===b?a.sAjaxSource?g:p:b?g:p}function Ab(a,b){var c=function(a,c){return b[a]!==p?b[a]:b[c]},d=wa(a,b),e=c("sEcho","draw"),h=c("iTotalRecords",
+"recordsTotal");c=c("iTotalDisplayRecords","recordsFiltered");if(e){if(1*e<a.iDraw)return;a.iDraw=1*e}qa(a);a._iRecordsTotal=parseInt(h,10);a._iRecordsDisplay=parseInt(c,10);e=0;for(h=d.length;e<h;e++)R(a,d[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;S(a);a._bInitComplete||xa(a,b);a.bAjaxDataGet=!0;K(a,!1)}function wa(a,b){a=f.isPlainObject(a.ajax)&&a.ajax.dataSrc!==p?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===a?b.aaData||b[a]:""!==a?U(a)(b):b}function ub(a){var b=a.oClasses,c=
+a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,h=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',k=d.sSearch;k=k.match(/_INPUT_/)?k.replace("_INPUT_",g):k+g;b=f("<div/>",{id:h.f?null:c+"_filter","class":b.sFilter}).append(f("<label/>").append(k));h=function(){var b=this.value?this.value:"";b!=e.sSearch&&(ia(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,S(a))};g=null!==a.searchDelay?a.searchDelay:"ssp"===D(a)?400:0;var l=f("input",
+b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",g?Sa(h,g):h).on("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);f(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{l[0]!==y.activeElement&&l.val(e.sSearch)}catch(w){}});return b[0]}function ia(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,h=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive},g=function(a){return a.bEscapeRegex!==
+p?!a.bEscapeRegex:a.bRegex};Ka(a);if("ssp"!=D(a)){Bb(a,b.sSearch,c,g(b),b.bSmart,b.bCaseInsensitive);h(b);for(b=0;b<e.length;b++)Cb(a,e[b].sSearch,b,g(e[b]),e[b].bSmart,e[b].bCaseInsensitive);Db(a)}else h(b);a.bFiltered=!0;A(a,null,"search",[a])}function Db(a){for(var b=q.ext.search,c=a.aiDisplay,d,e,h=0,g=b.length;h<g;h++){for(var k=[],l=0,n=c.length;l<n;l++)e=c[l],d=a.aoData[e],b[h](a,d._aFilterData,e,d._aData,l)&&k.push(e);c.length=0;f.merge(c,k)}}function Cb(a,b,c,d,e,h){if(""!==b){var g=[],k=
+a.aiDisplay;d=Ta(b,d,e,h);for(e=0;e<k.length;e++)b=a.aoData[k[e]]._aFilterData[c],d.test(b)&&g.push(k[e]);a.aiDisplay=g}}function Bb(a,b,c,d,e,h){e=Ta(b,d,e,h);var g=a.oPreviousSearch.sSearch,k=a.aiDisplayMaster;h=[];0!==q.ext.search.length&&(c=!0);var f=Eb(a);if(0>=b.length)a.aiDisplay=k.slice();else{if(f||c||d||g.length>b.length||0!==b.indexOf(g)||a.bSorted)a.aiDisplay=k.slice();b=a.aiDisplay;for(c=0;c<b.length;c++)e.test(a.aoData[b[c]]._sFilterRow)&&h.push(b[c]);a.aiDisplay=h}}function Ta(a,b,
+c,d){a=b?a:Ua(a);c&&(a="^(?=.*?"+f.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0)){var b=a.match(/^"(.*)"$/);a=b?b[1]:a}return a.replace('"',"")}).join(")(?=.*?")+").*$");return new RegExp(a,d?"i":"")}function Eb(a){var b=a.aoColumns,c,d,e=q.ext.type.search;var h=!1;var g=0;for(c=a.aoData.length;g<c;g++){var k=a.aoData[g];if(!k._aFilterData){var f=[];var n=0;for(d=b.length;n<d;n++){h=b[n];if(h.bSearchable){var m=I(a,g,n,"filter");e[h.sType]&&(m=e[h.sType](m));null===m&&(m="");
+"string"!==typeof m&&m.toString&&(m=m.toString())}else m="";m.indexOf&&-1!==m.indexOf("&")&&(ya.innerHTML=m,m=$b?ya.textContent:ya.innerText);m.replace&&(m=m.replace(/[\r\n\u2028]/g,""));f.push(m)}k._aFilterData=f;k._sFilterRow=f.join("  ");h=!0}}return h}function Fb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Gb(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function xb(a){var b=a.sTableId,c=a.aanFeatures.i,
+d=f("<div/>",{"class":a.oClasses.sInfo,id:c?null:b+"_info"});c||(a.aoDrawCallback.push({fn:Hb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),f(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Hb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+1,e=a.fnDisplayEnd(),h=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),k=g?c.sInfo:c.sInfoEmpty;g!==h&&(k+=" "+c.sInfoFiltered);k+=c.sInfoPostFix;k=Ib(a,k);c=c.fnInfoCallback;null!==c&&(k=c.call(a.oInstance,
+a,d,e,h,g,k));f(b).html(k)}}function Ib(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,h=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,h)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(h/e)))}function ja(a){var b=a.iInitDisplayStart,c=a.aoColumns;var d=a.oFeatures;var e=a.bDeferLoading;if(a.bInitialised){sb(a);
+pb(a);ha(a,a.aoHeader);ha(a,a.aoFooter);K(a,!0);d.bAutoWidth&&Ja(a);var h=0;for(d=c.length;h<d;h++){var g=c[h];g.sWidth&&(g.nTh.style.width=B(g.sWidth))}A(a,null,"preInit",[a]);V(a);c=D(a);if("ssp"!=c||e)"ajax"==c?va(a,[],function(c){var d=wa(a,c);for(h=0;h<d.length;h++)R(a,d[h]);a.iInitDisplayStart=b;V(a);K(a,!1);xa(a,c)},a):(K(a,!1),xa(a))}else setTimeout(function(){ja(a)},200)}function xa(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&aa(a);A(a,null,"plugin-init",[a,b]);A(a,"aoInitComplete","init",
+[a,b])}function Va(a,b){b=parseInt(b,10);a._iDisplayLength=b;Wa(a);A(a,null,"length",[a,b])}function tb(a){var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=f.isArray(d[0]),h=e?d[0]:d;d=e?d[1]:d;e=f("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect});for(var g=0,k=h.length;g<k;g++)e[0][g]=new Option("number"===typeof d[g]?a.fnFormatNumber(d[g]):d[g],h[g]);var l=f("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(l[0].id=c+"_length");l.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",
+e[0].outerHTML));f("select",l).val(a._iDisplayLength).on("change.DT",function(b){Va(a,f(this).val());S(a)});f(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&f("select",l).val(d)});return l[0]}function yb(a){var b=a.sPaginationType,c=q.ext.pager[b],d="function"===typeof c,e=function(a){S(a)};b=f("<div/>").addClass(a.oClasses.sPaging+b)[0];var h=a.aanFeatures;d||c.fnInit(a,b,e);h.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,g=a._iDisplayLength,
+f=a.fnRecordsDisplay(),m=-1===g;b=m?0:Math.ceil(b/g);g=m?1:Math.ceil(f/g);f=c(b,g);var p;m=0;for(p=h.p.length;m<p;m++)Ra(a,"pageButton")(a,h.p[m],m,f,b,g)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Xa(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,h=a.fnRecordsDisplay();0===h||-1===e?d=0:"number"===typeof b?(d=b*e,d>h&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<h&&(d+=e):"last"==b?d=Math.floor((h-1)/e)*e:O(a,0,"Unknown paging action: "+b,5);b=
+a._iDisplayStart!==d;a._iDisplayStart=d;b&&(A(a,null,"page",[a]),c&&S(a));return b}function vb(a){return f("<div/>",{id:a.aanFeatures.r?null:a.sTableId+"_processing","class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function K(a,b){a.oFeatures.bProcessing&&f(a.aanFeatures.r).css("display",b?"block":"none");A(a,null,"processing",[a,b])}function wb(a){var b=f(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,
+h=a.oClasses,g=b.children("caption"),k=g.length?g[0]._captionSide:null,l=f(b[0].cloneNode(!1)),n=f(b[0].cloneNode(!1)),m=b.children("tfoot");m.length||(m=null);l=f("<div/>",{"class":h.sScrollWrapper}).append(f("<div/>",{"class":h.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?d?B(d):null:"100%"}).append(f("<div/>",{"class":h.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(l.removeAttr("id").css("margin-left",0).append("top"===k?g:null).append(b.children("thead"))))).append(f("<div/>",
+{"class":h.sScrollBody}).css({position:"relative",overflow:"auto",width:d?B(d):null}).append(b));m&&l.append(f("<div/>",{"class":h.sScrollFoot}).css({overflow:"hidden",border:0,width:d?d?B(d):null:"100%"}).append(f("<div/>",{"class":h.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",0).append("bottom"===k?g:null).append(b.children("tfoot")))));b=l.children();var p=b[0];h=b[1];var u=m?b[2]:null;if(d)f(h).on("scroll.DT",function(a){a=this.scrollLeft;p.scrollLeft=a;m&&(u.scrollLeft=a)});
+f(h).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=p;a.nScrollBody=h;a.nScrollFoot=u;a.aoDrawCallback.push({fn:na,sName:"scrolling"});return l[0]}function na(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY;b=b.iBarWidth;var h=f(a.nScrollHead),g=h[0].style,k=h.children("div"),l=k[0].style,n=k.children("table");k=a.nScrollBody;var m=f(k),w=k.style,u=f(a.nScrollFoot).children("div"),q=u.children("table"),t=f(a.nTHead),r=f(a.nTable),v=r[0],za=v.style,T=a.nTFoot?f(a.nTFoot):null,A=a.oBrowser,
+x=A.bScrollOversize,ac=J(a.aoColumns,"nTh"),Ya=[],y=[],z=[],C=[],G,H=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};var D=k.scrollHeight>k.clientHeight;if(a.scrollBarVis!==D&&a.scrollBarVis!==p)a.scrollBarVis=D,aa(a);else{a.scrollBarVis=D;r.children("thead, tfoot").remove();if(T){var E=T.clone().prependTo(r);var F=T.find("tr");E=E.find("tr")}var I=t.clone().prependTo(r);t=t.find("tr");D=I.find("tr");I.find("th, td").removeAttr("tabindex");
+c||(w.width="100%",h[0].style.width="100%");f.each(ua(a,I),function(b,c){G=ba(a,b);c.style.width=a.aoColumns[G].sWidth});T&&N(function(a){a.style.width=""},E);h=r.outerWidth();""===c?(za.width="100%",x&&(r.find("tbody").height()>k.offsetHeight||"scroll"==m.css("overflow-y"))&&(za.width=B(r.outerWidth()-b)),h=r.outerWidth()):""!==d&&(za.width=B(d),h=r.outerWidth());N(H,D);N(function(a){z.push(a.innerHTML);Ya.push(B(f(a).css("width")))},D);N(function(a,b){-1!==f.inArray(a,ac)&&(a.style.width=Ya[b])},
+t);f(D).height(0);T&&(N(H,E),N(function(a){C.push(a.innerHTML);y.push(B(f(a).css("width")))},E),N(function(a,b){a.style.width=y[b]},F),f(E).height(0));N(function(a,b){a.innerHTML='<div class="dataTables_sizing">'+z[b]+"</div>";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=Ya[b]},D);T&&N(function(a,b){a.innerHTML='<div class="dataTables_sizing">'+C[b]+"</div>";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=y[b]},E);r.outerWidth()<
+h?(F=k.scrollHeight>k.offsetHeight||"scroll"==m.css("overflow-y")?h+b:h,x&&(k.scrollHeight>k.offsetHeight||"scroll"==m.css("overflow-y"))&&(za.width=B(F-b)),""!==c&&""===d||O(a,1,"Possible column misalignment",6)):F="100%";w.width=B(F);g.width=B(F);T&&(a.nScrollFoot.style.width=B(F));!e&&x&&(w.height=B(v.offsetHeight+b));c=r.outerWidth();n[0].style.width=B(c);l.width=B(c);d=r.height()>k.clientHeight||"scroll"==m.css("overflow-y");e="padding"+(A.bScrollbarLeft?"Left":"Right");l[e]=d?b+"px":"0px";T&&
+(q[0].style.width=B(c),u[0].style.width=B(c),u[0].style[e]=d?b+"px":"0px");r.children("colgroup").insertBefore(r.children("thead"));m.trigger("scroll");!a.bSorted&&!a.bFiltered||a._drawHold||(k.scrollTop=0)}}function N(a,b,c){for(var d=0,e=0,h=b.length,g,k;e<h;){g=b[e].firstChild;for(k=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,k,d):a(g,d),d++),g=g.nextSibling,k=c?k.nextSibling:null;e++}}function Ja(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,h=d.sX,g=d.sXInner,k=c.length,l=oa(a,"bVisible"),
+n=f("th",a.nTHead),m=b.getAttribute("width"),p=b.parentNode,u=!1,q,t=a.oBrowser;d=t.bScrollOversize;(q=b.style.width)&&-1!==q.indexOf("%")&&(m=q);for(q=0;q<l.length;q++){var r=c[l[q]];null!==r.sWidth&&(r.sWidth=Jb(r.sWidthOrig,p),u=!0)}if(d||!u&&!h&&!e&&k==W(a)&&k==n.length)for(q=0;q<k;q++)l=ba(a,q),null!==l&&(c[l].sWidth=B(n.eq(q).width()));else{k=f(b).clone().css("visibility","hidden").removeAttr("id");k.find("tbody tr").remove();var v=f("<tr/>").appendTo(k.find("tbody"));k.find("thead, tfoot").remove();
+k.append(f(a.nTHead).clone()).append(f(a.nTFoot).clone());k.find("tfoot th, tfoot td").css("width","");n=ua(a,k.find("thead")[0]);for(q=0;q<l.length;q++)r=c[l[q]],n[q].style.width=null!==r.sWidthOrig&&""!==r.sWidthOrig?B(r.sWidthOrig):"",r.sWidthOrig&&h&&f(n[q]).append(f("<div/>").css({width:r.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(q=0;q<l.length;q++)u=l[q],r=c[u],f(Kb(a,u)).clone(!1).append(r.sContentPadding).appendTo(v);f("[name]",k).removeAttr("name");r=f("<div/>").css(h||
+e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(k).appendTo(p);h&&g?k.width(g):h?(k.css("width","auto"),k.removeAttr("width"),k.width()<p.clientWidth&&m&&k.width(p.clientWidth)):e?k.width(p.clientWidth):m&&k.width(m);for(q=e=0;q<l.length;q++)p=f(n[q]),g=p.outerWidth()-p.width(),p=t.bBounding?Math.ceil(n[q].getBoundingClientRect().width):p.outerWidth(),e+=p,c[l[q]].sWidth=B(p-g);b.style.width=B(e);r.remove()}m&&(b.style.width=B(m));!m&&!h||a._reszEvt||(b=function(){f(z).on("resize.DT-"+
+a.sInstance,Sa(function(){aa(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0)}function Jb(a,b){if(!a)return 0;a=f("<div/>").css("width",B(a)).appendTo(b||y.body);b=a[0].offsetWidth;a.remove();return b}function Kb(a,b){var c=Lb(a,b);if(0>c)return null;var d=a.aoData[c];return d.nTr?d.anCells[b]:f("<td/>").html(I(a,c,b,"display"))[0]}function Lb(a,b){for(var c,d=-1,e=-1,h=0,g=a.aoData.length;h<g;h++)c=I(a,h,b,"display")+"",c=c.replace(bc,""),c=c.replace(/&nbsp;/g," "),c.length>d&&(d=c.length,e=h);return e}
+function B(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Y(a){var b=[],c=a.aoColumns;var d=a.aaSortingFixed;var e=f.isPlainObject(d);var h=[];var g=function(a){a.length&&!f.isArray(a[0])?h.push(a):f.merge(h,a)};f.isArray(d)&&g(d);e&&d.pre&&g(d.pre);g(a.aaSorting);e&&d.post&&g(d.post);for(a=0;a<h.length;a++){var k=h[a][0];g=c[k].aDataSort;d=0;for(e=g.length;d<e;d++){var l=g[d];var n=c[l].sType||"string";h[a]._idx===p&&(h[a]._idx=f.inArray(h[a][1],c[l].asSorting));
+b.push({src:k,col:l,dir:h[a][1],index:h[a]._idx,type:n,formatter:q.ext.type.order[n+"-pre"]})}}return b}function rb(a){var b,c=[],d=q.ext.type.order,e=a.aoData,h=0,g=a.aiDisplayMaster;Ka(a);var k=Y(a);var f=0;for(b=k.length;f<b;f++){var n=k[f];n.formatter&&h++;Mb(a,n.col)}if("ssp"!=D(a)&&0!==k.length){f=0;for(b=g.length;f<b;f++)c[g[f]]=f;h===k.length?g.sort(function(a,b){var d,h=k.length,g=e[a]._aSortData,f=e[b]._aSortData;for(d=0;d<h;d++){var l=k[d];var m=g[l.col];var n=f[l.col];m=m<n?-1:m>n?1:0;
+if(0!==m)return"asc"===l.dir?m:-m}m=c[a];n=c[b];return m<n?-1:m>n?1:0}):g.sort(function(a,b){var h,g=k.length,f=e[a]._aSortData,l=e[b]._aSortData;for(h=0;h<g;h++){var m=k[h];var n=f[m.col];var p=l[m.col];m=d[m.type+"-"+m.dir]||d["string-"+m.dir];n=m(n,p);if(0!==n)return n}n=c[a];p=c[b];return n<p?-1:n>p?1:0})}a.bSorted=!0}function Nb(a){var b=a.aoColumns,c=Y(a);a=a.oLanguage.oAria;for(var d=0,e=b.length;d<e;d++){var h=b[d];var g=h.asSorting;var k=h.sTitle.replace(/<.*?>/g,"");var f=h.nTh;f.removeAttribute("aria-sort");
+h.bSortable&&(0<c.length&&c[0].col==d?(f.setAttribute("aria-sort","asc"==c[0].dir?"ascending":"descending"),h=g[c[0].index+1]||g[0]):h=g[0],k+="asc"===h?a.sSortAscending:a.sSortDescending);f.setAttribute("aria-label",k)}}function Za(a,b,c,d){var e=a.aaSorting,h=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===p&&(c=f.inArray(a[1],h));return c+1<h.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=f.inArray(b,J(e,"0")),-1!==c?(b=g(e[c],!0),null===
+b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=h[b],e[c]._idx=b)):(e.push([b,h[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=h[b],e[0]._idx=b):(e.length=0,e.push([b,h[0]]),e[0]._idx=0);V(a);"function"==typeof d&&d(a)}function Qa(a,b,c,d){var e=a.aoColumns[c];$a(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(K(a,!0),setTimeout(function(){Za(a,c,b.shiftKey,d);"ssp"!==D(a)&&K(a,!1)},0)):Za(a,c,b.shiftKey,d))})}function Aa(a){var b=a.aLastSort,
+c=a.oClasses.sSortColumn,d=Y(a),e=a.oFeatures,h;if(e.bSort&&e.bSortClasses){e=0;for(h=b.length;e<h;e++){var g=b[e].src;f(J(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3))}e=0;for(h=d.length;e<h;e++)g=d[e].src,f(J(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Mb(a,b){var c=a.aoColumns[b],d=q.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ca(a,b)));for(var h,g=q.ext.type.order[c.sType+"-pre"],k=0,f=a.aoData.length;k<f;k++)if(c=a.aoData[k],c._aSortData||(c._aSortData=
+[]),!c._aSortData[b]||d)h=d?e[k]:I(a,k,b,"sort"),c._aSortData[b]=g?g(h):h}function Ba(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:f.extend(!0,[],a.aaSorting),search:Fb(a.oPreviousSearch),columns:f.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:Fb(a.aoPreSearchCols[d])}})};A(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Ob(a,b,c){var d,
+e,h=a.aoColumns;b=function(b){if(b&&b.time){var g=A(a,"aoStateLoadParams","stateLoadParams",[a,b]);if(-1===f.inArray(!1,g)&&(g=a.iStateDuration,!(0<g&&b.time<+new Date-1E3*g||b.columns&&h.length!==b.columns.length))){a.oLoadedState=f.extend(!0,{},b);b.start!==p&&(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start);b.length!==p&&(a._iDisplayLength=b.length);b.order!==p&&(a.aaSorting=[],f.each(b.order,function(b,c){a.aaSorting.push(c[0]>=h.length?[0,c[1]]:c)}));b.search!==p&&f.extend(a.oPreviousSearch,
+Gb(b.search));if(b.columns)for(d=0,e=b.columns.length;d<e;d++)g=b.columns[d],g.visible!==p&&(h[d].bVisible=g.visible),g.search!==p&&f.extend(a.aoPreSearchCols[d],Gb(g.search));A(a,"aoStateLoaded","stateLoaded",[a,b])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==p&&b(g)}else c()}function Ca(a){var b=q.settings;a=f.inArray(a,J(b,"nTable"));return-1!==a?b[a]:null}function O(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+
+d);if(b)z.console&&console.log&&console.log(c);else if(b=q.ext,b=b.sErrMode||b.errMode,a&&A(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function M(a,b,c,d){f.isArray(c)?f.each(c,function(c,d){f.isArray(d)?M(a,b,d[0],d[1]):M(a,b,d)}):(d===p&&(d=c),b[c]!==p&&(a[d]=b[c]))}function ab(a,b,c){var d;for(d in b)if(b.hasOwnProperty(d)){var e=b[d];f.isPlainObject(e)?(f.isPlainObject(a[d])||(a[d]={}),f.extend(!0,a[d],e)):c&&"data"!==d&&"aaData"!==
+d&&f.isArray(e)?a[d]=e.slice():a[d]=e}return a}function $a(a,b,c){f(a).on("click.DT",b,function(b){f(a).blur();c(b)}).on("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).on("selectstart.DT",function(){return!1})}function E(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function A(a,b,c,d){var e=[];b&&(e=f.map(a[b].slice().reverse(),function(b,c){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=f.Event(c+".dt"),f(a.nTable).trigger(b,d),e.push(b.result));return e}function Wa(a){var b=a._iDisplayStart,
+c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Ra(a,b){a=a.renderer;var c=q.ext.renderer[b];return f.isPlainObject(a)&&a[b]?c[a[b]]||c._:"string"===typeof a?c[a]||c._:c._}function D(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ka(a,b){var c=Pb.numbers_length,d=Math.floor(c/2);b<=c?a=Z(0,b):a<=d?(a=Z(0,c-2),a.push("ellipsis"),a.push(b-1)):(a>=b-1-d?a=Z(b-(c-2),b):(a=Z(a-d+2,a+d-1),a.push("ellipsis"),
+a.push(b-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0));a.DT_el="span";return a}function Ha(a){f.each({num:function(b){return Da(b,a)},"num-fmt":function(b){return Da(b,a,bb)},"html-num":function(b){return Da(b,a,Ea)},"html-num-fmt":function(b){return Da(b,a,Ea,bb)}},function(b,c){C.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(C.type.search[b+a]=C.type.search.html)})}function Qb(a){return function(){var b=[Ca(this[q.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return q.ext.internal[a].apply(this,
+b)}}var q=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new v(Ca(this[C.iApiIndex])):new v(this)};this.fnAddData=function(a,b){var c=this.api(!0);a=f.isArray(a)&&(f.isArray(a[0])||f.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===p||b)&&c.draw();return a.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===p||a?b.draw(!1):
+(""!==d.sX||""!==d.sY)&&na(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===p||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0);a=d.rows(a);var e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===p||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,f){e=this.api(!0);null===b||b===p?
+e.search(a,c,d,f):e.column(b).search(a,c,d,f);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==p){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==p||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==p?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),
+[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){a=this.api(!0).page(a);(b===p||b)&&a.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===p||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return Ca(this[C.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=
+function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===p||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===p||e)&&h.columns.adjust();(d===p||d)&&h.draw();return 0};this.fnVersionCheck=C.fnVersionCheck;var b=this,c=a===p,d=this.length;c&&(a={});this.oApi=this.internal=C.internal;for(var e in q.ext.internal)e&&(this[e]=Qb(e));this.each(function(){var e={},g=1<d?ab(e,a,!0):a,k=0,l;e=this.getAttribute("id");var n=!1,m=q.defaults,w=f(this);if("table"!=
+this.nodeName.toLowerCase())O(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{jb(m);kb(m.column);L(m,m,!0);L(m.column,m.column,!0);L(m,f.extend(g,w.data()),!0);var u=q.settings;k=0;for(l=u.length;k<l;k++){var t=u[k];if(t.nTable==this||t.nTHead&&t.nTHead.parentNode==this||t.nTFoot&&t.nTFoot.parentNode==this){var v=g.bRetrieve!==p?g.bRetrieve:m.bRetrieve;if(c||v)return t.oInstance;if(g.bDestroy!==p?g.bDestroy:m.bDestroy){t.oInstance.fnDestroy();break}else{O(t,0,"Cannot reinitialise DataTable",
+3);return}}if(t.sTableId==this.id){u.splice(k,1);break}}if(null===e||""===e)this.id=e="DataTables_Table_"+q.ext._unique++;var r=f.extend(!0,{},q.models.oSettings,{sDestroyWidth:w[0].style.width,sInstance:e,sTableId:e});r.nTable=this;r.oApi=b.internal;r.oInit=g;u.push(r);r.oInstance=1===b.length?b:w.dataTable();jb(g);Ga(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=f.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);g=ab(f.extend(!0,{},m),g);M(r.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));
+M(r,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]);M(r.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],
+["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);M(r.oLanguage,g,"fnInfoCallback");E(r,"aoDrawCallback",g.fnDrawCallback,"user");E(r,"aoServerParams",g.fnServerParams,"user");E(r,"aoStateSaveParams",g.fnStateSaveParams,"user");E(r,"aoStateLoadParams",g.fnStateLoadParams,"user");E(r,"aoStateLoaded",g.fnStateLoaded,"user");E(r,"aoRowCallback",g.fnRowCallback,"user");E(r,"aoRowCreatedCallback",g.fnCreatedRow,"user");E(r,"aoHeaderCallback",g.fnHeaderCallback,"user");E(r,"aoFooterCallback",g.fnFooterCallback,
+"user");E(r,"aoInitComplete",g.fnInitComplete,"user");E(r,"aoPreDrawCallback",g.fnPreDrawCallback,"user");r.rowIdFn=U(g.rowId);lb(r);var x=r.oClasses;f.extend(x,q.ext.classes,g.oClasses);w.addClass(x.sTable);r.iInitDisplayStart===p&&(r.iInitDisplayStart=g.iDisplayStart,r._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(r.bDeferLoading=!0,e=f.isArray(g.iDeferLoading),r._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,r._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var y=r.oLanguage;
+f.extend(!0,y,g.oLanguage);y.sUrl&&(f.ajax({dataType:"json",url:y.sUrl,success:function(a){Ga(a);L(m.oLanguage,a);f.extend(!0,y,a);ja(r)},error:function(){ja(r)}}),n=!0);null===g.asStripeClasses&&(r.asStripeClasses=[x.sStripeOdd,x.sStripeEven]);e=r.asStripeClasses;var z=w.children("tbody").find("tr").eq(0);-1!==f.inArray(!0,f.map(e,function(a,b){return z.hasClass(a)}))&&(f("tbody tr",this).removeClass(e.join(" ")),r.asDestroyStripes=e.slice());e=[];u=this.getElementsByTagName("thead");0!==u.length&&
+(fa(r.aoHeader,u[0]),e=ua(r));if(null===g.aoColumns)for(u=[],k=0,l=e.length;k<l;k++)u.push(null);else u=g.aoColumns;k=0;for(l=u.length;k<l;k++)Ia(r,e?e[k]:null);nb(r,g.aoColumnDefs,u,function(a,b){ma(r,a,b)});if(z.length){var B=function(a,b){return null!==a.getAttribute("data-"+b)?b:null};f(z[0]).children("th, td").each(function(a,b){var c=r.aoColumns[a];if(c.mData===a){var d=B(b,"sort")||B(b,"order");b=B(b,"filter")||B(b,"search");if(null!==d||null!==b)c.mData={_:a+".display",sort:null!==d?a+".@data-"+
+d:p,type:null!==d?a+".@data-"+d:p,filter:null!==b?a+".@data-"+b:p},ma(r,a)}})}var C=r.oFeatures;e=function(){if(g.aaSorting===p){var a=r.aaSorting;k=0;for(l=a.length;k<l;k++)a[k][1]=r.aoColumns[k].asSorting[0]}Aa(r);C.bSort&&E(r,"aoDrawCallback",function(){if(r.bSorted){var a=Y(r),b={};f.each(a,function(a,c){b[c.src]=c.dir});A(r,null,"order",[r,a,b]);Nb(r)}});E(r,"aoDrawCallback",function(){(r.bSorted||"ssp"===D(r)||C.bDeferRender)&&Aa(r)},"sc");a=w.children("caption").each(function(){this._captionSide=
+f(this).css("caption-side")});var b=w.children("thead");0===b.length&&(b=f("<thead/>").appendTo(w));r.nTHead=b[0];b=w.children("tbody");0===b.length&&(b=f("<tbody/>").appendTo(w));r.nTBody=b[0];b=w.children("tfoot");0===b.length&&0<a.length&&(""!==r.oScroll.sX||""!==r.oScroll.sY)&&(b=f("<tfoot/>").appendTo(w));0===b.length||0===b.children().length?w.addClass(x.sNoFooter):0<b.length&&(r.nTFoot=b[0],fa(r.aoFooter,r.nTFoot));if(g.aaData)for(k=0;k<g.aaData.length;k++)R(r,g.aaData[k]);else(r.bDeferLoading||
+"dom"==D(r))&&pa(r,f(r.nTBody).children("tr"));r.aiDisplay=r.aiDisplayMaster.slice();r.bInitialised=!0;!1===n&&ja(r)};g.bStateSave?(C.bStateSave=!0,E(r,"aoDrawCallback",Ba,"state_save"),Ob(r,g,e)):e()}});b=null;return this},C,t,x,cb={},Rb=/[\r\n\u2028]/g,Ea=/<.*?>/g,cc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,dc=/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\|\$|\^|\-)/g,bb=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,P=function(a){return a&&!0!==a&&"-"!==a?!1:
+!0},Sb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Tb=function(a,b){cb[b]||(cb[b]=new RegExp(Ua(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(cb[b],"."):a},db=function(a,b,c){var d="string"===typeof a;if(P(a))return!0;b&&d&&(a=Tb(a,b));c&&d&&(a=a.replace(bb,""));return!isNaN(parseFloat(a))&&isFinite(a)},Ub=function(a,b,c){return P(a)?!0:P(a)||"string"===typeof a?db(a.replace(Ea,""),b,c)?!0:null:null},J=function(a,b,c){var d=[],e=0,h=a.length;if(c!==
+p)for(;e<h;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<h;e++)a[e]&&d.push(a[e][b]);return d},la=function(a,b,c,d){var e=[],h=0,g=b.length;if(d!==p)for(;h<g;h++)a[b[h]][c]&&e.push(a[b[h]][c][d]);else for(;h<g;h++)e.push(a[b[h]][c]);return e},Z=function(a,b){var c=[];if(b===p){b=0;var d=a}else d=b,b=a;for(a=b;a<d;a++)c.push(a);return c},Vb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},ta=function(a){a:{if(!(2>a.length)){var b=a.slice().sort();for(var c=b[0],d=1,
+e=b.length;d<e;d++){if(b[d]===c){b=!1;break a}c=b[d]}}b=!0}if(b)return a.slice();b=[];e=a.length;var h,g=0;d=0;a:for(;d<e;d++){c=a[d];for(h=0;h<g;h++)if(b[h]===c)continue a;b.push(c);g++}return b};q.util={throttle:function(a,b){var c=b!==p?b:200,d,e;return function(){var b=this,g=+new Date,f=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=p;a.apply(b,f)},c)):(d=g,a.apply(b,f))}},escapeRegex:function(a){return a.replace(dc,"\\$1")}};var F=function(a,b,c){a[b]!==p&&(a[c]=a[b])},da=/\[.*?\]$/,
+X=/\(\)$/,Ua=q.util.escapeRegex,ya=f("<div>")[0],$b=ya.textContent!==p,bc=/<.*?>/g,Sa=q.util.throttle,Wb=[],G=Array.prototype,ec=function(a){var b,c=q.settings,d=f.map(c,function(a,b){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase()){var e=f.inArray(a,d);return-1!==e?[c[e]]:null}if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?b=f(a):a instanceof f&&(b=a)}else return[];if(b)return b.map(function(a){e=f.inArray(this,
+d);return-1!==e?c[e]:null}).toArray()};var v=function(a,b){if(!(this instanceof v))return new v(a,b);var c=[],d=function(a){(a=ec(a))&&c.push.apply(c,a)};if(f.isArray(a))for(var e=0,h=a.length;e<h;e++)d(a[e]);else d(a);this.context=ta(c);b&&f.merge(this,b);this.selector={rows:null,cols:null,opts:null};v.extend(this,this,Wb)};q.Api=v;f.extend(v.prototype,{any:function(){return 0!==this.count()},concat:G.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=
+this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new v(b[a],this[a]):null},filter:function(a){var b=[];if(G.filter)b=G.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new v(this.context,b)},flatten:function(){var a=[];return new v(this.context,a.concat.apply(a,this.toArray()))},join:G.join,indexOf:G.indexOf||function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===
+a)return b;return-1},iterator:function(a,b,c,d){var e=[],h,g,f=this.context,l,n=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);var m=0;for(h=f.length;m<h;m++){var q=new v(f[m]);if("table"===b){var u=c.call(q,f[m],m);u!==p&&e.push(u)}else if("columns"===b||"rows"===b)u=c.call(q,f[m],this[m],m),u!==p&&e.push(u);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){var t=this[m];"column-rows"===b&&(l=Fa(f[m],n.opts));var x=0;for(g=t.length;x<g;x++)u=t[x],u="cell"===b?c.call(q,f[m],u.row,
+u.column,m,x):c.call(q,f[m],u,m,x,l),u!==p&&e.push(u)}}return e.length||d?(a=new v(f,a?e.concat.apply([],e):e),b=a.selector,b.rows=n.rows,b.cols=n.cols,b.opts=n.opts,a):this},lastIndexOf:G.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(G.map)b=G.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new v(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},
+pop:G.pop,push:G.push,reduce:G.reduce||function(a,b){return mb(this,a,b,0,this.length,1)},reduceRight:G.reduceRight||function(a,b){return mb(this,a,b,this.length-1,-1,-1)},reverse:G.reverse,selector:null,shift:G.shift,slice:function(){return new v(this.context,this)},sort:G.sort,splice:G.splice,toArray:function(){return G.slice.call(this)},to$:function(){return f(this)},toJQuery:function(){return f(this)},unique:function(){return new v(this.context,ta(this))},unshift:G.unshift});v.extend=function(a,
+b,c){if(c.length&&b&&(b instanceof v||b.__dt_wrapper)){var d,e=function(a,b,c){return function(){var d=b.apply(a,arguments);v.extend(d,d,c.methodExt);return d}};var h=0;for(d=c.length;h<d;h++){var g=c[h];b[g.name]="function"===g.type?e(a,g.val,g):"object"===g.type?{}:g.val;b[g.name].__dt_wrapper=!0;v.extend(a,b[g.name],g.propExt)}}};v.register=t=function(a,b){if(f.isArray(a))for(var c=0,d=a.length;c<d;c++)v.register(a[c],b);else{d=a.split(".");var e=Wb,h;a=0;for(c=d.length;a<c;a++){var g=(h=-1!==
+d[a].indexOf("()"))?d[a].replace("()",""):d[a];a:{var k=0;for(var l=e.length;k<l;k++)if(e[k].name===g){k=e[k];break a}k=null}k||(k={name:g,val:{},methodExt:[],propExt:[],type:"object"},e.push(k));a===c-1?(k.val=b,k.type="function"===typeof b?"function":f.isPlainObject(b)?"object":"other"):e=h?k.methodExt:k.propExt}}};v.registerPlural=x=function(a,b,c){v.register(a,c);v.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof v?a.length?f.isArray(a[0])?new v(a.context,
+a[0]):a[0]:p:a})};var fc=function(a,b){if("number"===typeof a)return[b[a]];var c=f.map(b,function(a,b){return a.nTable});return f(c).filter(a).map(function(a){a=f.inArray(this,c);return b[a]}).toArray()};t("tables()",function(a){return a?new v(fc(a,this.context)):this});t("table()",function(a){a=this.tables(a);var b=a.context;return b.length?new v(b[0]):a});x("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});x("tables().body()","table().body()",
+function(){return this.iterator("table",function(a){return a.nTBody},1)});x("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});x("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});x("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});t("draw()",function(a){return this.iterator("table",function(b){"page"===
+a?S(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),V(b,!1===a))})});t("page()",function(a){return a===p?this.page.info().page:this.iterator("table",function(b){Xa(b,a)})});t("page.info()",function(a){if(0===this.context.length)return p;a=this.context[0];var b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,
+serverSide:"ssp"===D(a)}});t("page.len()",function(a){return a===p?0!==this.context.length?this.context[0]._iDisplayLength:p:this.iterator("table",function(b){Va(b,a)})});var Xb=function(a,b,c){if(c){var d=new v(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==D(a))V(a,b);else{K(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();va(a,[],function(c){qa(a);c=wa(a,c);for(var d=0,e=c.length;d<e;d++)R(a,c[d]);V(a,b);K(a,!1)})}};t("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});
+t("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});t("ajax.reload()",function(a,b){return this.iterator("table",function(c){Xb(c,!1===b,a)})});t("ajax.url()",function(a){var b=this.context;if(a===p){if(0===b.length)return p;b=b[0];return b.ajax?f.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){f.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});t("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Xb(c,
+!1===b,a)})});var eb=function(a,b,c,d,e){var h=[],g,k,l;var n=typeof b;b&&"string"!==n&&"function"!==n&&b.length!==p||(b=[b]);n=0;for(k=b.length;n<k;n++){var m=b[n]&&b[n].split&&!b[n].match(/[\[\(:]/)?b[n].split(","):[b[n]];var q=0;for(l=m.length;q<l;q++)(g=c("string"===typeof m[q]?f.trim(m[q]):m[q]))&&g.length&&(h=h.concat(g))}a=C.selector[a];if(a.length)for(n=0,k=a.length;n<k;n++)h=a[n](d,e,h);return ta(h)},fb=function(a){a||(a={});a.filter&&a.search===p&&(a.search=a.filter);return f.extend({search:"none",
+order:"current",page:"all"},a)},gb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Fa=function(a,b){var c=[],d=a.aiDisplay;var e=a.aiDisplayMaster;var h=b.search;var g=b.order;b=b.page;if("ssp"==D(a))return"removed"===h?[]:Z(0,e.length);if("current"==b)for(g=a._iDisplayStart,a=a.fnDisplayEnd();g<a;g++)c.push(d[g]);else if("current"==g||"applied"==g)if("none"==h)c=e.slice();else if("applied"==h)c=
+d.slice();else{if("removed"==h){var k={};g=0;for(a=d.length;g<a;g++)k[d[g]]=null;c=f.map(e,function(a){return k.hasOwnProperty(a)?null:a})}}else if("index"==g||"original"==g)for(g=0,a=a.aoData.length;g<a;g++)"none"==h?c.push(g):(e=f.inArray(g,d),(-1===e&&"removed"==h||0<=e&&"applied"==h)&&c.push(g));return c},gc=function(a,b,c){var d;return eb("row",b,function(b){var e=Sb(b),g=a.aoData;if(null!==e&&!c)return[e];d||(d=Fa(a,c));if(null!==e&&-1!==f.inArray(e,d))return[e];if(null===b||b===p||""===b)return d;
+if("function"===typeof b)return f.map(d,function(a){var c=g[a];return b(a,c._aData,c.nTr)?a:null});if(b.nodeName){e=b._DT_RowIndex;var k=b._DT_CellIndex;if(e!==p)return g[e]&&g[e].nTr===b?[e]:[];if(k)return g[k.row]&&g[k.row].nTr===b.parentNode?[k.row]:[];e=f(b).closest("*[data-dt-row]");return e.length?[e.data("dt-row")]:[]}if("string"===typeof b&&"#"===b.charAt(0)&&(e=a.aIds[b.replace(/^#/,"")],e!==p))return[e.idx];e=Vb(la(a.aoData,d,"nTr"));return f(e).filter(b).map(function(){return this._DT_RowIndex}).toArray()},
+a,c)};t("rows()",function(a,b){a===p?a="":f.isPlainObject(a)&&(b=a,a="");b=fb(b);var c=this.iterator("table",function(c){return gc(c,a,b)},1);c.selector.rows=a;c.selector.opts=b;return c});t("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||p},1)});t("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return la(a.aoData,b,"_aData")},1)});x("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){b=b.aoData[c];
+return"search"===a?b._aFilterData:b._aSortData},1)});x("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ea(b,c,a)})});x("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});x("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var h=0,g=this[d].length;h<g;h++){var f=c[d].rowIdFn(c[d].aoData[this[d][h]]._aData);b.push((!0===a?"#":"")+f)}return new v(c,b)});x("rows().remove()",
+"row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,h=e[c],g,f;e.splice(c,1);var l=0;for(g=e.length;l<g;l++){var n=e[l];var m=n.anCells;null!==n.nTr&&(n.nTr._DT_RowIndex=l);if(null!==m)for(n=0,f=m.length;n<f;n++)m[n]._DT_CellIndex.row=l}ra(b.aiDisplayMaster,c);ra(b.aiDisplay,c);ra(a[d],c,!1);0<b._iRecordsDisplay&&b._iRecordsDisplay--;Wa(b);c=b.rowIdFn(h._aData);c!==p&&delete b.aIds[c]});this.iterator("table",function(a){for(var b=0,d=a.aoData.length;b<d;b++)a.aoData[b].idx=
+b});return this});t("rows.add()",function(a){var b=this.iterator("table",function(b){var c,d=[];var g=0;for(c=a.length;g<c;g++){var f=a[g];f.nodeName&&"TR"===f.nodeName.toUpperCase()?d.push(pa(b,f)[0]):d.push(R(b,f))}return d},1),c=this.rows(-1);c.pop();f.merge(c,b);return c});t("row()",function(a,b){return gb(this.rows(a,b))});t("row().data()",function(a){var b=this.context;if(a===p)return b.length&&this.length?b[0].aoData[this[0]]._aData:p;var c=b[0].aoData[this[0]];c._aData=a;f.isArray(a)&&c.nTr.id&&
+Q(b[0].rowId)(a,c.nTr.id);ea(b[0],this[0],"data");return this});t("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});t("row.add()",function(a){a instanceof f&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?pa(b,a)[0]:R(b,a)});return this.row(b[0])});var hc=function(a,b,c,d){var e=[],h=function(b,c){if(f.isArray(b)||b instanceof f)for(var d=0,g=b.length;d<g;d++)h(b[d],c);else b.nodeName&&
+"tr"===b.nodeName.toLowerCase()?e.push(b):(d=f("<tr><td/></tr>").addClass(c),f("td",d).addClass(c).html(b)[0].colSpan=W(a),e.push(d[0]))};h(c,d);b._details&&b._details.detach();b._details=f(e);b._detailsShow&&b._details.insertAfter(b.nTr)},hb=function(a,b){var c=a.context;c.length&&(a=c[0].aoData[b!==p?b:a[0]])&&a._details&&(a._details.remove(),a._detailsShow=p,a._details=p)},Yb=function(a,b){var c=a.context;c.length&&a.length&&(a=c[0].aoData[a[0]],a._details&&((a._detailsShow=b)?a._details.insertAfter(a.nTr):
+a._details.detach(),ic(c[0])))},ic=function(a){var b=new v(a),c=a.aoData;b.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<J(c,"_details").length&&(b.on("draw.dt.DT_details",function(d,e){a===e&&b.rows({page:"current"}).eq(0).each(function(a){a=c[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),b.on("column-visibility.dt.DT_details",function(b,e,f,g){if(a===e)for(e=W(e),f=0,g=c.length;f<g;f++)b=c[f],b._details&&b._details.children("td[colspan]").attr("colspan",
+e)}),b.on("destroy.dt.DT_details",function(d,e){if(a===e)for(d=0,e=c.length;d<e;d++)c[d]._details&&hb(b,d)}))};t("row().child()",function(a,b){var c=this.context;if(a===p)return c.length&&this.length?c[0].aoData[this[0]]._details:p;!0===a?this.child.show():!1===a?hb(this):c.length&&this.length&&hc(c[0],c[0].aoData[this[0]],a,b);return this});t(["row().child.show()","row().child().show()"],function(a){Yb(this,!0);return this});t(["row().child.hide()","row().child().hide()"],function(){Yb(this,!1);
+return this});t(["row().child.remove()","row().child().remove()"],function(){hb(this);return this});t("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var jc=/^([^:]+):(name|visIdx|visible)$/,Zb=function(a,b,c,d,e){c=[];d=0;for(var f=e.length;d<f;d++)c.push(I(a,e[d],b));return c},kc=function(a,b,c){var d=a.aoColumns,e=J(d,"sName"),h=J(d,"nTh");return eb("column",b,function(b){var g=Sb(b);if(""===b)return Z(d.length);if(null!==
+g)return[0<=g?g:d.length+g];if("function"===typeof b){var l=Fa(a,c);return f.map(d,function(c,d){return b(d,Zb(a,d,0,0,l),h[d])?d:null})}var n="string"===typeof b?b.match(jc):"";if(n)switch(n[2]){case "visIdx":case "visible":g=parseInt(n[1],10);if(0>g){var m=f.map(d,function(a,b){return a.bVisible?b:null});return[m[m.length+g]]}return[ba(a,g)];case "name":return f.map(e,function(a,b){return a===n[1]?b:null});default:return[]}if(b.nodeName&&b._DT_CellIndex)return[b._DT_CellIndex.column];g=f(h).filter(b).map(function(){return f.inArray(this,
+h)}).toArray();if(g.length||!b.nodeName)return g;g=f(b).closest("*[data-dt-column]");return g.length?[g.data("dt-column")]:[]},a,c)};t("columns()",function(a,b){a===p?a="":f.isPlainObject(a)&&(b=a,a="");b=fb(b);var c=this.iterator("table",function(c){return kc(c,a,b)},1);c.selector.cols=a;c.selector.opts=b;return c});x("columns().header()","column().header()",function(a,b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});x("columns().footer()","column().footer()",function(a,
+b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});x("columns().data()","column().data()",function(){return this.iterator("column-rows",Zb,1)});x("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});x("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return la(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});x("columns().nodes()",
+"column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return la(a.aoData,e,"anCells",b)},1)});x("columns().visible()","column().visible()",function(a,b){var c=this,d=this.iterator("column",function(b,c){if(a===p)return b.aoColumns[c].bVisible;var d=b.aoColumns,e=d[c],h=b.aoData,n;if(a!==p&&e.bVisible!==a){if(a){var m=f.inArray(!0,J(d,"bVisible"),c+1);d=0;for(n=h.length;d<n;d++){var q=h[d].nTr;b=h[d].anCells;q&&q.insertBefore(b[c],b[m]||null)}}else f(J(b.aoData,"anCells",
+c)).detach();e.bVisible=a}});a!==p&&this.iterator("table",function(d){ha(d,d.aoHeader);ha(d,d.aoFooter);d.aiDisplay.length||f(d.nTBody).find("td[colspan]").attr("colspan",W(d));Ba(d);c.iterator("column",function(c,d){A(c,null,"column-visibility",[c,d,a,b])});(b===p||b)&&c.columns.adjust()});return d});x("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?ca(b,c):c},1)});t("columns.adjust()",function(){return this.iterator("table",function(a){aa(a)},
+1)});t("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return ba(c,b);if("fromData"===a||"toVisible"===a)return ca(c,b)}});t("column()",function(a,b){return gb(this.columns(a,b))});var lc=function(a,b,c){var d=a.aoData,e=Fa(a,c),h=Vb(la(d,e,"anCells")),g=f([].concat.apply([],h)),k,l=a.aoColumns.length,n,m,q,u,t,v;return eb("cell",b,function(b){var c="function"===typeof b;if(null===b||b===p||c){n=[];m=0;for(q=e.length;m<q;m++)for(k=
+e[m],u=0;u<l;u++)t={row:k,column:u},c?(v=d[k],b(t,I(a,k,u),v.anCells?v.anCells[u]:null)&&n.push(t)):n.push(t);return n}if(f.isPlainObject(b))return b.column!==p&&b.row!==p&&-1!==f.inArray(b.row,e)?[b]:[];c=g.filter(b).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();if(c.length||!b.nodeName)return c;v=f(b).closest("*[data-dt-row]");return v.length?[{row:v.data("dt-row"),column:v.data("dt-column")}]:[]},a,c)};t("cells()",function(a,b,c){f.isPlainObject(a)&&
+(a.row===p?(c=a,a=null):(c=b,b=null));f.isPlainObject(b)&&(c=b,b=null);if(null===b||b===p)return this.iterator("table",function(b){return lc(b,a,fb(c))});var d=c?{page:c.page,order:c.order,search:c.search}:{},e=this.columns(b,d),h=this.rows(a,d),g,k,l,n;d=this.iterator("table",function(a,b){a=[];g=0;for(k=h[b].length;g<k;g++)for(l=0,n=e[b].length;l<n;l++)a.push({row:h[b][g],column:e[b][l]});return a},1);d=c&&c.selected?this.cells(d,c):d;f.extend(d.selector,{cols:b,rows:a,opts:c});return d});x("cells().nodes()",
+"cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&&a.anCells?a.anCells[c]:p},1)});t("cells().data()",function(){return this.iterator("cell",function(a,b,c){return I(a,b,c)},1)});x("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});x("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return I(b,c,d,a)},
+1)});x("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:ca(a,c)}},1)});x("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){ea(b,c,a,d)})});t("cell()",function(a,b,c){return gb(this.cells(a,b,c))});t("cell().data()",function(a){var b=this.context,c=this[0];if(a===p)return b.length&&c.length?I(b[0],c[0].row,c[0].column):p;ob(b[0],c[0].row,c[0].column,a);ea(b[0],c[0].row,
+"data",c[0].column);return this});t("order()",function(a,b){var c=this.context;if(a===p)return 0!==c.length?c[0].aaSorting:p;"number"===typeof a?a=[[a,b]]:a.length&&!f.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});t("order.listener()",function(a,b,c){return this.iterator("table",function(d){Qa(d,a,b,c)})});t("order.fixed()",function(a){if(!a){var b=this.context;b=b.length?b[0].aaSortingFixed:p;return f.isArray(b)?{pre:b}:
+b}return this.iterator("table",function(b){b.aaSortingFixed=f.extend(!0,{},a)})});t(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];f.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});t("search()",function(a,b,c,d){var e=this.context;return a===p?0!==e.length?e[0].oPreviousSearch.sSearch:p:this.iterator("table",function(e){e.oFeatures.bFilter&&ia(e,f.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===
+c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});x("columns().search()","column().search()",function(a,b,c,d){return this.iterator("column",function(e,h){var g=e.aoPreSearchCols;if(a===p)return g[h].sSearch;e.oFeatures.bFilter&&(f.extend(g[h],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ia(e,e.oPreviousSearch,1))})});t("state()",function(){return this.context.length?this.context[0].oSavedState:null});t("state.clear()",function(){return this.iterator("table",
+function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});t("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});t("state.save()",function(){return this.iterator("table",function(a){Ba(a)})});q.versionCheck=q.fnVersionCheck=function(a){var b=q.version.split(".");a=a.split(".");for(var c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};q.isDataTable=q.fnIsDataTable=function(a){var b=f(a).get(0),c=!1;if(a instanceof
+q.Api)return!0;f.each(q.settings,function(a,e){a=e.nScrollHead?f("table",e.nScrollHead)[0]:null;var d=e.nScrollFoot?f("table",e.nScrollFoot)[0]:null;if(e.nTable===b||a===b||d===b)c=!0});return c};q.tables=q.fnTables=function(a){var b=!1;f.isPlainObject(a)&&(b=a.api,a=a.visible);var c=f.map(q.settings,function(b){if(!a||a&&f(b.nTable).is(":visible"))return b.nTable});return b?new v(c):c};q.camelToHungarian=L;t("$()",function(a,b){b=this.rows(b).nodes();b=f(b);return f([].concat(b.filter(a).toArray(),
+b.find(a).toArray()))});f.each(["on","one","off"],function(a,b){t(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0]=f.map(a[0].split(/\s/),function(a){return a.match(/\.dt\b/)?a:a+".dt"}).join(" ");var d=f(this.tables().nodes());d[b].apply(d,a);return this})});t("clear()",function(){return this.iterator("table",function(a){qa(a)})});t("settings()",function(){return new v(this.context,this.context)});t("init()",function(){var a=this.context;return a.length?a[0].oInit:null});t("data()",
+function(){return this.iterator("table",function(a){return J(a.aoData,"_aData")}).flatten()});t("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,h=b.nTBody,g=b.nTHead,k=b.nTFoot,l=f(e);h=f(h);var n=f(b.nTableWrapper),m=f.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);a||(new v(b)).columns().visible(!0);n.off(".DT").find(":not(tbody *)").off(".DT");f(z).off(".DT-"+b.sInstance);
+e!=g.parentNode&&(l.children("thead").detach(),l.append(g));k&&e!=k.parentNode&&(l.children("tfoot").detach(),l.append(k));b.aaSorting=[];b.aaSortingFixed=[];Aa(b);f(m).removeClass(b.asStripeClasses.join(" "));f("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);h.children().detach();h.append(m);g=a?"remove":"detach";l[g]();n[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),l.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&&
+h.children().each(function(a){f(this).addClass(b.asDestroyStripes[a%p])}));c=f.inArray(b,q.settings);-1!==c&&q.settings.splice(c,1)})});f.each(["column","row","cell"],function(a,b){t(b+"s().every()",function(a){var c=this.selector.opts,e=this;return this.iterator(b,function(d,f,k,l,n){a.call(e[b](f,"cell"===b?k:c,"cell"===b?c:p),f,k,l,n)})})});t("i18n()",function(a,b,c){var d=this.context[0];a=U(a)(d.oLanguage);a===p&&(a=b);c!==p&&f.isPlainObject(a)&&(a=a[c]!==p?a[c]:a._);return a.replace("%d",c)});
+q.version="1.10.20";q.settings=[];q.models={};q.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};q.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};q.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,
+sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};q.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,
+bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},
+fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",
+sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:f.extend({},q.models.oSearch),sAjaxDataProp:"data",
+sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};H(q.defaults);q.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};H(q.defaults.column);q.models.oSettings=
+{oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},
+aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,
+aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:p,oAjaxData:p,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==D(this)?1*this._iRecordsTotal:
+this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==D(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};q.ext=C={buttons:{},
+classes:{},build:"bs4/jszip-2.5.0/pdfmake-0.1.36/dt-1.10.20/af-2.3.4/b-1.6.1/b-colvis-1.6.1/b-flash-1.6.1/b-html5-1.6.1/b-print-1.6.1/cr-1.5.2/fc-3.3.0/fh-3.1.6/kt-2.5.1/r-2.2.3/rg-1.1.1/rr-1.2.6/sc-2.0.1/sp-1.0.1/sl-1.3.1",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:q.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:q.version};f.extend(C,{afnFiltering:C.search,aTypes:C.type.detect,ofnSearch:C.type.search,oSort:C.type.order,afnSortData:C.order,aoFeatures:C.feature,oApi:C.internal,oStdClasses:C.classes,oPagination:C.pager});
+f.extend(q.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",
+sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",
+sJUIHeader:"",sJUIFooter:""});var Pb=q.ext.pager;f.extend(Pb,{simple:function(a,b){return["previous","next"]},full:function(a,b){return["first","previous","next","last"]},numbers:function(a,b){return[ka(a,b)]},simple_numbers:function(a,b){return["previous",ka(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ka(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ka(a,b),"last"]},_numbers:ka,numbers_length:7});f.extend(!0,q.ext.renderer,{pageButton:{_:function(a,b,
+c,d,e,h){var g=a.oClasses,k=a.oLanguage.oPaginate,l=a.oLanguage.oAria.paginate||{},n,m,q=0,t=function(b,d){var p,r=g.sPageButtonDisabled,u=function(b){Xa(a,b.data.action,!0)};var w=0;for(p=d.length;w<p;w++){var v=d[w];if(f.isArray(v)){var x=f("<"+(v.DT_el||"div")+"/>").appendTo(b);t(x,v)}else{n=null;m=v;x=a.iTabIndex;switch(v){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break;case "first":n=k.sFirst;0===e&&(x=-1,m+=" "+r);break;case "previous":n=k.sPrevious;0===e&&(x=-1,m+=
+" "+r);break;case "next":n=k.sNext;e===h-1&&(x=-1,m+=" "+r);break;case "last":n=k.sLast;e===h-1&&(x=-1,m+=" "+r);break;default:n=v+1,m=e===v?g.sPageButtonActive:""}null!==n&&(x=f("<a>",{"class":g.sPageButton+" "+m,"aria-controls":a.sTableId,"aria-label":l[v],"data-dt-idx":q,tabindex:x,id:0===c&&"string"===typeof v?a.sTableId+"_"+v:null}).html(n).appendTo(b),$a(x,{action:v},u),q++)}}};try{var v=f(b).find(y.activeElement).data("dt-idx")}catch(mc){}t(f(b).empty(),d);v!==p&&f(b).find("[data-dt-idx="+
+v+"]").focus()}}});f.extend(q.ext.type.detect,[function(a,b){b=b.oLanguage.sDecimal;return db(a,b)?"num"+b:null},function(a,b){if(a&&!(a instanceof Date)&&!cc.test(a))return null;b=Date.parse(a);return null!==b&&!isNaN(b)||P(a)?"date":null},function(a,b){b=b.oLanguage.sDecimal;return db(a,b,!0)?"num-fmt"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Ub(a,b)?"html-num"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Ub(a,b,!0)?"html-num-fmt"+b:null},function(a,b){return P(a)||"string"===
+typeof a&&-1!==a.indexOf("<")?"html":null}]);f.extend(q.ext.type.search,{html:function(a){return P(a)?a:"string"===typeof a?a.replace(Rb," ").replace(Ea,""):""},string:function(a){return P(a)?a:"string"===typeof a?a.replace(Rb," "):a}});var Da=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Tb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};f.extend(C.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return P(a)?
+"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return P(a)?"":"string"===typeof a?a.toLowerCase():a.toString?a.toString():""},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});Ha("");f.extend(!0,q.ext.renderer,{header:{_:function(a,b,c,d){f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc:
+c.sSortingClass))})},jqueryui:function(a,b,c,d){f("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(f("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc:c.sSortingClass),b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass("asc"==
+k[e]?d.sSortJUIAsc:"desc"==k[e]?d.sSortJUIDesc:c.sSortingClassJUI))})}}});var ib=function(a){return"string"===typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):a};q.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return ib(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
+a)+f+(e||"")}}},text:function(){return{display:ib,filter:ib}}};f.extend(q.ext.internal,{_fnExternApiFunc:Qb,_fnBuildAjax:va,_fnAjaxUpdate:qb,_fnAjaxParameters:zb,_fnAjaxUpdateDraw:Ab,_fnAjaxDataSrc:wa,_fnAddColumn:Ia,_fnColumnOptions:ma,_fnAdjustColumnSizing:aa,_fnVisibleToColumnIndex:ba,_fnColumnIndexToVisible:ca,_fnVisbleColumns:W,_fnGetColumns:oa,_fnColumnTypes:Ka,_fnApplyColumnDefs:nb,_fnHungarianMap:H,_fnCamelToHungarian:L,_fnLanguageCompat:Ga,_fnBrowserDetect:lb,_fnAddData:R,_fnAddTr:pa,_fnNodeToDataIndex:function(a,
+b){return b._DT_RowIndex!==p?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return f.inArray(c,a.aoData[b].anCells)},_fnGetCellData:I,_fnSetCellData:ob,_fnSplitObjNotation:Na,_fnGetObjectDataFn:U,_fnSetObjectDataFn:Q,_fnGetDataMaster:Oa,_fnClearTable:qa,_fnDeleteIndex:ra,_fnInvalidate:ea,_fnGetRowElements:Ma,_fnCreateTr:La,_fnBuildHead:pb,_fnDrawHead:ha,_fnDraw:S,_fnReDraw:V,_fnAddOptionsHtml:sb,_fnDetectHeader:fa,_fnGetUniqueThs:ua,_fnFeatureHtmlFilter:ub,_fnFilterComplete:ia,_fnFilterCustom:Db,
+_fnFilterColumn:Cb,_fnFilter:Bb,_fnFilterCreateSearch:Ta,_fnEscapeRegex:Ua,_fnFilterData:Eb,_fnFeatureHtmlInfo:xb,_fnUpdateInfo:Hb,_fnInfoMacros:Ib,_fnInitialise:ja,_fnInitComplete:xa,_fnLengthChange:Va,_fnFeatureHtmlLength:tb,_fnFeatureHtmlPaginate:yb,_fnPageChange:Xa,_fnFeatureHtmlProcessing:vb,_fnProcessingDisplay:K,_fnFeatureHtmlTable:wb,_fnScrollDraw:na,_fnApplyToChildren:N,_fnCalculateColumnWidths:Ja,_fnThrottle:Sa,_fnConvertToWidth:Jb,_fnGetWidestNode:Kb,_fnGetMaxLenString:Lb,_fnStringToCss:B,
+_fnSortFlatten:Y,_fnSort:rb,_fnSortAria:Nb,_fnSortListener:Za,_fnSortAttachListener:Qa,_fnSortingClasses:Aa,_fnSortData:Mb,_fnSaveState:Ba,_fnLoadState:Ob,_fnSettingsFromNode:Ca,_fnLog:O,_fnMap:M,_fnBindAction:$a,_fnCallbackReg:E,_fnCallbackFire:A,_fnLengthOverflow:Wa,_fnRenderer:Ra,_fnDataSource:D,_fnRowAttributes:Pa,_fnExtend:ab,_fnCalculateEnd:function(){}});f.fn.dataTable=q;q.$=f;f.fn.dataTableSettings=q.settings;f.fn.dataTableExt=q.ext;f.fn.DataTable=function(a){return f(this).dataTable(a).api()};
+f.each(q,function(a,b){f.fn.DataTable[a]=b});return f.fn.dataTable});
+
+
+/*!
+ DataTables Bootstrap 4 integration
+ ©2011-2017 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<e;d++){var k=a[d];if(b.call(c,k,d,a))return{i:d,v:k}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(a,b,c,e){if(b){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];d in c||(c[d]={});c=c[d]}a=a[a.length-1];e=c[a];b=b(e);b!=e&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},"es6","es3");
+(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,e){var d=a.fn.dataTable;a.extend(!0,d.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
+renderer:"bootstrap"});a.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});d.ext.renderer.pageButton.bootstrap=function(b,l,v,w,m,r){var k=new d.Api(b),x=b.oClasses,n=b.oLanguage.oPaginate,y=b.oLanguage.oAria.paginate||{},g,h,t=0,u=function(c,d){var e,l=function(b){b.preventDefault();
+a(b.currentTarget).hasClass("disabled")||k.page()==b.data.action||k.page(b.data.action).draw("page")};var q=0;for(e=d.length;q<e;q++){var f=d[q];if(a.isArray(f))u(c,f);else{h=g="";switch(f){case "ellipsis":g="&#x2026;";h="disabled";break;case "first":g=n.sFirst;h=f+(0<m?"":" disabled");break;case "previous":g=n.sPrevious;h=f+(0<m?"":" disabled");break;case "next":g=n.sNext;h=f+(m<r-1?"":" disabled");break;case "last":g=n.sLast;h=f+(m<r-1?"":" disabled");break;default:g=f+1,h=m===f?"active":""}if(g){var p=
+a("<li>",{"class":x.sPageButton+" "+h,id:0===v&&"string"===typeof f?b.sTableId+"_"+f:null}).append(a("<a>",{href:"#","aria-controls":b.sTableId,"aria-label":y[f],"data-dt-idx":t,tabindex:b.iTabIndex,"class":"page-link"}).html(g)).appendTo(c);b.oApi._fnBindAction(p,{action:f},l);t++}}}};try{var p=a(l).find(c.activeElement).data("dt-idx")}catch(z){}u(a(l).empty().html('<ul class="pagination"/>').children("ul"),w);p!==e&&a(l).find("[data-dt-idx="+p+"]").focus()};return d});
+
+
+/*!
+   Copyright 2010-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ AutoFill 2.3.4
+ ©2008-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(a){var h=0;return function(){return h<a.length?{done:!1,value:a[h++]}:{done:!0}}};$jscomp.arrayIterator=function(a){return{next:$jscomp.arrayIteratorImpl(a)}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,h,e){a!=Array.prototype&&a!=Object.prototype&&(a[h]=e.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};
+$jscomp.SymbolClass=function(a,h){this.$jscomp$symbol$id_=a;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:h})};$jscomp.SymbolClass.prototype.toString=function(){return this.$jscomp$symbol$id_};$jscomp.Symbol=function(){function a(e){if(this instanceof a)throw new TypeError("Symbol is not a constructor");return new $jscomp.SymbolClass($jscomp.SYMBOL_PREFIX+(e||"")+"_"+h++,e)}var h=0;return a}();
+$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("Symbol.iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}});$jscomp.initSymbolIterator=function(){}};
+$jscomp.initSymbolAsyncIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.asyncIterator;a||(a=$jscomp.global.Symbol.asyncIterator=$jscomp.global.Symbol("Symbol.asyncIterator"));$jscomp.initSymbolAsyncIterator=function(){}};$jscomp.iteratorPrototype=function(a){$jscomp.initSymbolIterator();a={next:a};a[$jscomp.global.Symbol.iterator]=function(){return this};return a};
+$jscomp.iteratorFromArray=function(a,h){$jscomp.initSymbolIterator();a instanceof String&&(a+="");var e=0,l={next:function(){if(e<a.length){var k=e++;return{value:h(k,a[k]),done:!1}}l.next=function(){return{done:!0,value:void 0}};return l.next()}};l[Symbol.iterator]=function(){return l};return l};
+$jscomp.polyfill=function(a,h,e,l){if(h){e=$jscomp.global;a=a.split(".");for(l=0;l<a.length-1;l++){var k=a[l];k in e||(e[k]={});e=e[k]}a=a[a.length-1];l=e[a];h=h(l);h!=l&&null!=h&&$jscomp.defineProperty(e,a,{configurable:!0,writable:!0,value:h})}};$jscomp.polyfill("Array.prototype.keys",function(a){return a?a:function(){return $jscomp.iteratorFromArray(this,function(a){return a})}},"es6","es3");
+(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(h){return a(h,window,document)}):"object"===typeof exports?module.exports=function(h,e){h||(h=window);e&&e.fn.dataTable||(e=require("datatables.net")(h,e).$);return a(e,h,h.document)}:a(jQuery,window,document)})(function(a,h,e,l){var k=a.fn.dataTable,w=0,m=function(b,d){if(!k.versionCheck||!k.versionCheck("1.10.8"))throw"Warning: AutoFill requires DataTables 1.10.8 or greater";this.c=a.extend(!0,{},k.defaults.autoFill,
+m.defaults,d);this.s={dt:new k.Api(b),namespace:".autoFill"+w++,scroll:{},scrollInterval:null,handle:{height:0,width:0},enabled:!1};this.dom={handle:a('<div class="dt-autofill-handle"/>'),select:{top:a('<div class="dt-autofill-select top"/>'),right:a('<div class="dt-autofill-select right"/>'),bottom:a('<div class="dt-autofill-select bottom"/>'),left:a('<div class="dt-autofill-select left"/>')},background:a('<div class="dt-autofill-background"/>'),list:a('<div class="dt-autofill-list">'+this.s.dt.i18n("autoFill.info",
+"")+"<ul/></div>"),dtScroll:null,offsetParent:null};this._constructor()};a.extend(m.prototype,{enabled:function(){return this.s.enabled},enable:function(b){var d=this;if(!1===b)return this.disable();this.s.enabled=!0;this._focusListener();this.dom.handle.on("mousedown",function(b){d._mousedown(b);return!1});return this},disable:function(){this.s.enabled=!1;this._focusListenerRemove();return this},_constructor:function(){var b=this,d=this.s.dt,c=a("div.dataTables_scrollBody",this.s.dt.table().container());
+d.settings()[0].autoFill=this;c.length&&(this.dom.dtScroll=c,"static"===c.css("position")&&c.css("position","relative"));!1!==this.c.enable&&this.enable();d.on("destroy.autoFill",function(){b._focusListenerRemove()})},_attach:function(b){var d=this.s.dt,c=d.cell(b).index(),f=this.dom.handle,g=this.s.handle;c&&-1!==d.columns(this.c.columns).indexes().indexOf(c.column)?(this.dom.offsetParent||(this.dom.offsetParent=a(d.table().node()).offsetParent()),g.height&&g.width||(f.appendTo("body"),g.height=
+f.outerHeight(),g.width=f.outerWidth()),d=this._getPosition(b,this.dom.offsetParent),this.dom.attachedTo=b,f.css({top:d.top+b.offsetHeight-g.height,left:d.left+b.offsetWidth-g.width}).appendTo(this.dom.offsetParent)):this._detach()},_actionSelector:function(b){var d=this,c=this.s.dt,f=m.actions,g=[];a.each(f,function(d,a){a.available(c,b)&&g.push(d)});if(1===g.length&&!1===this.c.alwaysAsk){var e=f[g[0]].execute(c,b);this._update(e,b)}else{var n=this.dom.list.children("ul").empty();g.push("cancel");
+a.each(g,function(g,e){n.append(a("<li/>").append('<div class="dt-autofill-question">'+f[e].option(c,b)+"<div>").append(a('<div class="dt-autofill-button">').append(a('<button class="'+m.classes.btn+'">'+c.i18n("autoFill.button","&gt;")+"</button>").on("click",function(){var g=f[e].execute(c,b,a(this).closest("li"));d._update(g,b);d.dom.background.remove();d.dom.list.remove()}))))});this.dom.background.appendTo("body");this.dom.list.appendTo("body");this.dom.list.css("margin-top",this.dom.list.outerHeight()/
+2*-1)}},_detach:function(){this.dom.attachedTo=null;this.dom.handle.detach()},_drawSelection:function(b,d){var c=this.s.dt;d=this.s.start;var f=a(this.dom.start),g={row:this.c.vertical?c.rows({page:"current"}).nodes().indexOf(b.parentNode):d.row,column:this.c.horizontal?a(b).index():d.column};b=c.column.index("toData",g.column);var e=c.row(":eq("+g.row+")",{page:"current"});e=a(c.cell(e.index(),b).node());if(c.cell(e).any()&&-1!==c.columns(this.c.columns).indexes().indexOf(b)){this.s.end=g;c=d.row<
+g.row?f:e;var n=d.row<g.row?e:f;b=d.column<g.column?f:e;f=d.column<g.column?e:f;c=this._getPosition(c.get(0)).top;b=this._getPosition(b.get(0)).left;d=this._getPosition(n.get(0)).top+n.outerHeight()-c;f=this._getPosition(f.get(0)).left+f.outerWidth()-b;g=this.dom.select;g.top.css({top:c,left:b,width:f});g.left.css({top:c,left:b,height:d});g.bottom.css({top:c+d,left:b,width:f});g.right.css({top:c,left:b+f,height:d})}},_editor:function(b){var d=this.s.dt,c=this.c.editor;if(c){for(var a={},g=[],e=c.fields(),
+n=0,h=b.length;n<h;n++)for(var k=0,m=b[n].length;k<m;k++){var q=b[n][k],p=d.settings()[0].aoColumns[q.index.column],r=p.editField;if(r===l){p=p.mData;for(var u=0,y=e.length;u<y;u++){var v=c.field(e[u]);if(v.dataSrc()===p){r=v.name();break}}}if(!r)throw"Could not automatically determine field data. Please see https://datatables.net/tn/11";a[r]||(a[r]={});p=d.row(q.index.row).id();a[r][p]=q.set;g.push(q.index)}c.bubble(g,!1).multiSet(a).submit()}},_emitEvent:function(b,d){this.s.dt.iterator("table",
+function(c,f){a(c.nTable).triggerHandler(b+".dt",d)})},_focusListener:function(){var b=this,d=this.s.dt,c=this.s.namespace,f=null!==this.c.focus?this.c.focus:d.init().keys||d.settings()[0].keytable?"focus":"hover";if("focus"===f)d.on("key-focus.autoFill",function(c,d,a){b._attach(a.node())}).on("key-blur.autoFill",function(c,a,d){b._detach()});else if("click"===f)a(d.table().body()).on("click"+c,"td, th",function(c){b._attach(this)}),a(e.body).on("click"+c,function(c){a(c.target).parents().filter(d.table().body()).length||
+b._detach()});else a(d.table().body()).on("mouseenter"+c,"td, th",function(c){b._attach(this)}).on("mouseleave"+c,function(c){a(c.relatedTarget).hasClass("dt-autofill-handle")||b._detach()})},_focusListenerRemove:function(){var b=this.s.dt;b.off(".autoFill");a(b.table().body()).off(this.s.namespace);a(e.body).off(this.s.namespace)},_getPosition:function(b,d){var c=0,f=0;d||(d=a(a(this.s.dt.table().node())[0].offsetParent));do{var g=b.offsetTop,e=b.offsetLeft;var h=a(b.offsetParent);c+=g+1*parseInt(h.css("border-top-width"));
+f+=e+1*parseInt(h.css("border-left-width"));if("body"===b.nodeName.toLowerCase())break;b=h.get(0)}while(h.get(0)!==d.get(0));return{top:c,left:f}},_mousedown:function(b){var d=this,c=this.s.dt;this.dom.start=this.dom.attachedTo;this.s.start={row:c.rows({page:"current"}).nodes().indexOf(a(this.dom.start).parent()[0]),column:a(this.dom.start).index()};a(e.body).on("mousemove.autoFill",function(b){d._mousemove(b)}).on("mouseup.autoFill",function(b){d._mouseup(b)});var f=this.dom.select;c=a(c.table().node()).offsetParent();
+f.top.appendTo(c);f.left.appendTo(c);f.right.appendTo(c);f.bottom.appendTo(c);this._drawSelection(this.dom.start,b);this.dom.handle.css("display","none");b=this.dom.dtScroll;this.s.scroll={windowHeight:a(h).height(),windowWidth:a(h).width(),dtTop:b?b.offset().top:null,dtLeft:b?b.offset().left:null,dtHeight:b?b.outerHeight():null,dtWidth:b?b.outerWidth():null}},_mousemove:function(b){var a=b.target.nodeName.toLowerCase();if("td"===a||"th"===a)this._drawSelection(b.target,b),this._shiftScroll(b)},_mouseup:function(b){a(e.body).off(".autoFill");
+var d=this,c=this.s.dt,f=this.dom.select;f.top.remove();f.left.remove();f.right.remove();f.bottom.remove();this.dom.handle.css("display","block");f=this.s.start;var g=this.s.end;if(f.row!==g.row||f.column!==g.column){var h=c.cell(":eq("+f.row+")",f.column+":visible",{page:"current"});if(a("div.DTE",h.node()).length){var n=c.editor();n.on("submitSuccess.dtaf close.dtaf",function(){n.off(".dtaf");setTimeout(function(){d._mouseup(b)},100)}).on("submitComplete.dtaf preSubmitCancelled.dtaf close.dtaf",
+function(){n.off(".dtaf")});n.submit()}else{var k=this._range(f.row,g.row);f=this._range(f.column,g.column);g=[];for(var m=c.settings()[0],x=m.aoColumns,q=c.columns(this.c.columns).indexes(),p=0;p<k.length;p++)g.push(a.map(f,function(b){var a=c.row(":eq("+k[p]+")",{page:"current"});b=c.cell(a.index(),b+":visible");a=b.data();var d=b.index(),f=x[d.column].editField;f!==l&&(a=m.oApi._fnGetObjectDataFn(f)(c.row(d.row).data()));if(-1!==q.indexOf(d.column))return{cell:b,data:a,label:b.data(),index:d}}));
+this._actionSelector(g);clearInterval(this.s.scrollInterval);this.s.scrollInterval=null}}},_range:function(b,a){var c=[];if(b<=a)for(;b<=a;b++)c.push(b);else for(;b>=a;b--)c.push(b);return c},_shiftScroll:function(b){var a=this,c=this.s.scroll,f=!1,g=b.pageY-e.body.scrollTop,h=b.pageX-e.body.scrollLeft,n,k,l,m;65>g?n=-5:g>c.windowHeight-65&&(n=5);65>h?k=-5:h>c.windowWidth-65&&(k=5);null!==c.dtTop&&b.pageY<c.dtTop+65?l=-5:null!==c.dtTop&&b.pageY>c.dtTop+c.dtHeight-65&&(l=5);null!==c.dtLeft&&b.pageX<
+c.dtLeft+65?m=-5:null!==c.dtLeft&&b.pageX>c.dtLeft+c.dtWidth-65&&(m=5);n||k||l||m?(c.windowVert=n,c.windowHoriz=k,c.dtVert=l,c.dtHoriz=m,f=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=null);!this.s.scrollInterval&&f&&(this.s.scrollInterval=setInterval(function(){c.windowVert&&(e.body.scrollTop+=c.windowVert);c.windowHoriz&&(e.body.scrollLeft+=c.windowHoriz);if(c.dtVert||c.dtHoriz){var b=a.dom.dtScroll[0];c.dtVert&&(b.scrollTop+=c.dtVert);c.dtHoriz&&(b.scrollLeft+=
+c.dtHoriz)}},20))},_update:function(b,a){if(!1!==b){b=this.s.dt;var c=b.columns(this.c.columns).indexes();this._emitEvent("preAutoFill",[b,a]);this._editor(a);if(null!==this.c.update?this.c.update:!this.c.editor){for(var d=0,g=a.length;d<g;d++)for(var e=0,h=a[d].length;e<h;e++){var k=a[d][e];-1!==c.indexOf(k.index.column)&&k.cell.data(k.set)}b.draw(!1)}this._emitEvent("autoFill",[b,a])}}});m.actions={increment:{available:function(b,a){b=a[0][0].label;return!isNaN(b-parseFloat(b))},option:function(b,
+a){return b.i18n("autoFill.increment",'Increment / decrement each cell by: <input type="number" value="1">')},execute:function(b,d,c){b=1*d[0][0].data;c=1*a("input",c).val();for(var f=0,g=d.length;f<g;f++)for(var e=0,h=d[f].length;e<h;e++)d[f][e].set=b,b+=c}},fill:{available:function(b,a){return!0},option:function(b,a){return b.i18n("autoFill.fill","Fill all cells with <i>"+a[0][0].label+"</i>")},execute:function(b,a,c){b=a[0][0].data;c=0;for(var d=a.length;c<d;c++)for(var e=0,h=a[c].length;e<h;e++)a[c][e].set=
+b}},fillHorizontal:{available:function(b,a){return 1<a.length&&1<a[0].length},option:function(b,a){return b.i18n("autoFill.fillHorizontal","Fill cells horizontally")},execute:function(b,a,c){b=0;for(c=a.length;b<c;b++)for(var d=0,e=a[b].length;d<e;d++)a[b][d].set=a[b][0].data}},fillVertical:{available:function(b,a){return 1<a.length&&1<a[0].length},option:function(b,a){return b.i18n("autoFill.fillVertical","Fill cells vertically")},execute:function(b,a,c){b=0;for(c=a.length;b<c;b++)for(var d=0,e=
+a[b].length;d<e;d++)a[b][d].set=a[0][d].data}},cancel:{available:function(){return!1},option:function(b){return b.i18n("autoFill.cancel","Cancel")},execute:function(){return!1}}};m.version="2.3.4";m.defaults={alwaysAsk:!1,focus:null,columns:"",enable:!0,update:null,editor:null,vertical:!0,horizontal:!0};m.classes={btn:"btn"};var t=a.fn.dataTable.Api;t.register("autoFill()",function(){return this});t.register("autoFill().enabled()",function(){var b=this.context[0];return b.autoFill?b.autoFill.enabled():
+!1});t.register("autoFill().enable()",function(b){return this.iterator("table",function(a){a.autoFill&&a.autoFill.enable(b)})});t.register("autoFill().disable()",function(){return this.iterator("table",function(a){a.autoFill&&a.autoFill.disable()})});a(e).on("preInit.dt.autofill",function(b,d,c){"dt"===b.namespace&&(b=d.oInit.autoFill,c=k.defaults.autoFill,b||c)&&(c=a.extend({},b,c),!1!==b&&new m(d,c))});k.AutoFill=m;return k.AutoFill=m});
+
+
+/*!
+ Bootstrap integration for DataTables' AutoFill
+ ©2015 SpryMedia Ltd - datatables.net/license
+*/
+(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-autofill"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,c){a||(a=window);c&&c.fn.dataTable||(c=require("datatables.net-bs4")(a,c).$);c.fn.dataTable.AutoFill||require("datatables.net-autofill")(a,c);return b(c,a,a.document)}:b(jQuery,window,document)})(function(b,a,c,d){b=b.fn.dataTable;b.AutoFill.classes.btn="btn btn-primary";return b});
+
+
+/*!
+ Buttons for DataTables 1.6.1
+ ©2016-2019 SpryMedia Ltd - datatables.net/license
+*/
+(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(u){return d(u,window,document)}):"object"===typeof exports?module.exports=function(u,t){u||(u=window);t&&t.fn.dataTable||(t=require("datatables.net")(u,t).$);return d(t,u,u.document)}:d(jQuery,window,document)})(function(d,u,t,p){function y(a){a=new m.Api(a);var b=a.init().buttons||m.defaults.buttons;return(new n(a,b)).container()}var m=d.fn.dataTable,B=0,C=0,q=m.ext.buttons,n=function(a,b){if(!(this instanceof
+n))return function(b){return(new n(b,a)).container()};"undefined"===typeof b&&(b={});!0===b&&(b={});d.isArray(b)&&(b={buttons:b});this.c=d.extend(!0,{},n.defaults,b);b.buttons&&(this.c.buttons=b.buttons);this.s={dt:new m.Api(a),buttons:[],listenKeys:"",namespace:"dtb"+B++};this.dom={container:d("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)};this._constructor()};d.extend(n.prototype,{action:function(a,b){a=this._nodeToButton(a);if(b===p)return a.conf.action;a.conf.action=
+b;return this},active:function(a,b){var c=this._nodeToButton(a);a=this.c.dom.button.active;c=d(c.node);if(b===p)return c.hasClass(a);c.toggleClass(a,b===p?!0:b);return this},add:function(a,b){var c=this.s.buttons;if("string"===typeof b){b=b.split("-");var e=this.s;c=0;for(var d=b.length-1;c<d;c++)e=e.buttons[1*b[c]];c=e.buttons;b=1*b[b.length-1]}this._expandButton(c,a,e!==p,b);this._draw();return this},container:function(){return this.dom.container},disable:function(a){a=this._nodeToButton(a);d(a.node).addClass(this.c.dom.button.disabled);
+return this},destroy:function(){d("body").off("keyup."+this.s.namespace);var a=this.s.buttons.slice(),b;var c=0;for(b=a.length;c<b;c++)this.remove(a[c].node);this.dom.container.remove();a=this.s.dt.settings()[0];c=0;for(b=a.length;c<b;c++)if(a.inst===this){a.splice(c,1);break}return this},enable:function(a,b){if(!1===b)return this.disable(a);a=this._nodeToButton(a);d(a.node).removeClass(this.c.dom.button.disabled);return this},name:function(){return this.c.name},node:function(a){if(!a)return this.dom.container;
+a=this._nodeToButton(a);return d(a.node)},processing:function(a,b){var c=this.s.dt,e=this._nodeToButton(a);if(b===p)return d(e.node).hasClass("processing");d(e.node).toggleClass("processing",b);d(c.table().node()).triggerHandler("buttons-processing.dt",[b,c.button(a),c,d(a),e.conf]);return this},remove:function(a){var b=this._nodeToButton(a),c=this._nodeToHost(a),e=this.s.dt;if(b.buttons.length)for(var g=b.buttons.length-1;0<=g;g--)this.remove(b.buttons[g].node);b.conf.destroy&&b.conf.destroy.call(e.button(a),
+e,d(a),b.conf);this._removeKey(b.conf);d(b.node).remove();a=d.inArray(b,c);c.splice(a,1);return this},text:function(a,b){var c=this._nodeToButton(a);a=this.c.dom.collection.buttonLiner;a=c.inCollection&&a&&a.tag?a.tag:this.c.dom.buttonLiner.tag;var e=this.s.dt,g=d(c.node),f=function(a){return"function"===typeof a?a(e,g,c.conf):a};if(b===p)return f(c.conf.text);c.conf.text=b;a?g.children(a).html(f(b)):g.html(f(b));return this},_constructor:function(){var a=this,b=this.s.dt,c=b.settings()[0],e=this.c.buttons;
+c._buttons||(c._buttons=[]);c._buttons.push({inst:this,name:this.c.name});for(var g=0,f=e.length;g<f;g++)this.add(e[g]);b.on("destroy",function(b,e){e===c&&a.destroy()});d("body").on("keyup."+this.s.namespace,function(b){if(!t.activeElement||t.activeElement===t.body){var c=String.fromCharCode(b.keyCode).toLowerCase();-1!==a.s.listenKeys.toLowerCase().indexOf(c)&&a._keypress(c,b)}})},_addKey:function(a){a.key&&(this.s.listenKeys+=d.isPlainObject(a.key)?a.key.key:a.key)},_draw:function(a,b){a||(a=this.dom.container,
+b=this.s.buttons);a.children().detach();for(var c=0,e=b.length;c<e;c++)a.append(b[c].inserter),a.append(" "),b[c].buttons&&b[c].buttons.length&&this._draw(b[c].collection,b[c].buttons)},_expandButton:function(a,b,c,e){var g=this.s.dt,f=0;b=d.isArray(b)?b:[b];for(var h=0,k=b.length;h<k;h++){var r=this._resolveExtends(b[h]);if(r)if(d.isArray(r))this._expandButton(a,r,c,e);else{var l=this._buildButton(r,c);l&&(e!==p?(a.splice(e,0,l),e++):a.push(l),l.conf.buttons&&(l.collection=d("<"+this.c.dom.collection.tag+
+"/>"),l.conf._collection=l.collection,this._expandButton(l.buttons,l.conf.buttons,!0,e)),r.init&&r.init.call(g.button(l.node),g,d(l.node),r),f++)}}},_buildButton:function(a,b){var c=this.c.dom.button,e=this.c.dom.buttonLiner,g=this.c.dom.collection,f=this.s.dt,h=function(b){return"function"===typeof b?b(f,l,a):b};b&&g.button&&(c=g.button);b&&g.buttonLiner&&(e=g.buttonLiner);if(a.available&&!a.available(f,a))return!1;var k=function(a,b,c,e){e.action.call(b.button(c),a,b,c,e);d(b.table().node()).triggerHandler("buttons-action.dt",
+[b.button(c),b,c,e])};g=a.tag||c.tag;var r=a.clickBlurs===p?!0:a.clickBlurs,l=d("<"+g+"/>").addClass(c.className).attr("tabindex",this.s.dt.settings()[0].iTabIndex).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(b){b.preventDefault();!l.hasClass(c.disabled)&&a.action&&k(b,f,l,a);r&&l.blur()}).on("keyup.dtb",function(b){13===b.keyCode&&!l.hasClass(c.disabled)&&a.action&&k(b,f,l,a)});"a"===g.toLowerCase()&&l.attr("href","#");"button"===g.toLowerCase()&&l.attr("type","button");
+e.tag?(g=d("<"+e.tag+"/>").html(h(a.text)).addClass(e.className),"a"===e.tag.toLowerCase()&&g.attr("href","#"),l.append(g)):l.html(h(a.text));!1===a.enabled&&l.addClass(c.disabled);a.className&&l.addClass(a.className);a.titleAttr&&l.attr("title",h(a.titleAttr));a.attr&&l.attr(a.attr);a.namespace||(a.namespace=".dt-button-"+C++);e=(e=this.c.dom.buttonContainer)&&e.tag?d("<"+e.tag+"/>").addClass(e.className).append(l):l;this._addKey(a);this.c.buttonCreated&&(e=this.c.buttonCreated(a,e));return{conf:a,
+node:l.get(0),inserter:e,buttons:[],inCollection:b,collection:null}},_nodeToButton:function(a,b){b||(b=this.s.buttons);for(var c=0,e=b.length;c<e;c++){if(b[c].node===a)return b[c];if(b[c].buttons.length){var d=this._nodeToButton(a,b[c].buttons);if(d)return d}}},_nodeToHost:function(a,b){b||(b=this.s.buttons);for(var c=0,e=b.length;c<e;c++){if(b[c].node===a)return b;if(b[c].buttons.length){var d=this._nodeToHost(a,b[c].buttons);if(d)return d}}},_keypress:function(a,b){if(!b._buttonsHandled){var c=
+function(e){for(var g=0,f=e.length;g<f;g++){var h=e[g].conf,k=e[g].node;h.key&&(h.key===a?(b._buttonsHandled=!0,d(k).click()):!d.isPlainObject(h.key)||h.key.key!==a||h.key.shiftKey&&!b.shiftKey||h.key.altKey&&!b.altKey||h.key.ctrlKey&&!b.ctrlKey||h.key.metaKey&&!b.metaKey||(b._buttonsHandled=!0,d(k).click()));e[g].buttons.length&&c(e[g].buttons)}};c(this.s.buttons)}},_removeKey:function(a){if(a.key){var b=d.isPlainObject(a.key)?a.key.key:a.key;a=this.s.listenKeys.split("");b=d.inArray(b,a);a.splice(b,
+1);this.s.listenKeys=a.join("")}},_resolveExtends:function(a){var b=this.s.dt,c,e=function(c){for(var e=0;!d.isPlainObject(c)&&!d.isArray(c);){if(c===p)return;if("function"===typeof c){if(c=c(b,a),!c)return!1}else if("string"===typeof c){if(!q[c])throw"Unknown button type: "+c;c=q[c]}e++;if(30<e)throw"Buttons: Too many iterations";}return d.isArray(c)?c:d.extend({},c)};for(a=e(a);a&&a.extend;){if(!q[a.extend])throw"Cannot extend unknown button type: "+a.extend;var g=e(q[a.extend]);if(d.isArray(g))return g;
+if(!g)return!1;var f=g.className;a=d.extend({},g,a);f&&a.className!==f&&(a.className=f+" "+a.className);var h=a.postfixButtons;if(h){a.buttons||(a.buttons=[]);f=0;for(c=h.length;f<c;f++)a.buttons.push(h[f]);a.postfixButtons=null}if(h=a.prefixButtons){a.buttons||(a.buttons=[]);f=0;for(c=h.length;f<c;f++)a.buttons.splice(f,0,h[f]);a.prefixButtons=null}a.extend=g.extend}return a},_popover:function(a,b,c){var e=this.c,g=d.extend({align:"button-left",autoClose:!1,background:!0,backgroundClassName:"dt-button-background",
+contentClassName:e.dom.collection.className,collectionLayout:"",collectionTitle:"",dropup:!1,fade:400,rightAlignClassName:"dt-button-right",tag:e.dom.collection.tag},c),f=b.node(),h=function(){d(".dt-button-collection").stop().fadeOut(g.fade,function(){d(this).detach()});d(b.buttons('[aria-haspopup="true"][aria-expanded="true"]').nodes()).attr("aria-expanded","false");d("div.dt-button-background").off("click.dtb-collection");n.background(!1,g.backgroundClassName,g.fade,f);d("body").off(".dtb-collection");
+b.off("buttons-action.b-internal")};!1===a&&h();c=d(b.buttons('[aria-haspopup="true"][aria-expanded="true"]').nodes());c.length&&(f=c.eq(0),h());c=d("<div/>").addClass("dt-button-collection").addClass(g.collectionLayout).css("display","none");a=d(a).addClass(g.contentClassName).attr("role","menu").appendTo(c);f.attr("aria-expanded","true");f.parents("body")[0]!==t.body&&(f=t.body.lastChild);g.collectionTitle&&c.prepend('<div class="dt-button-collection-title">'+g.collectionTitle+"</div>");c.insertAfter(f).fadeIn(g.fade);
+var k=d(b.table().container());e=c.css("position");"dt-container"===g.align&&(f=f.parent(),c.css("width",k.width()));if("absolute"===e){e=f.position();c.css({top:e.top+f.outerHeight(),left:e.left});var r=c.outerHeight(),l=c.outerWidth(),w=k.offset().top+k.height();w=e.top+f.outerHeight()+r-w;var D=e.top-r,m=k.offset().top;r=e.top-r-5;(w>m-D||g.dropup)&&-r<m&&c.css("top",r);(c.hasClass(g.rightAlignClassName)||"button-right"===g.align)&&c.css("left",e.left+f.outerWidth()-l);r=e.left+l;k=k.offset().left+
+k.width();r>k&&c.css("left",e.left-(r-k));k=f.offset().left+l;k>d(u).width()&&c.css("left",e.left-(k-d(u).width()))}else e=c.height()/2,e>d(u).height()/2&&(e=d(u).height()/2),c.css("marginTop",-1*e);g.background&&n.background(!0,g.backgroundClassName,g.fade,f);d("div.dt-button-background").on("click.dtb-collection",function(){});d("body").on("click.dtb-collection",function(b){var c=d.fn.addBack?"addBack":"andSelf";d(b.target).parents()[c]().filter(a).length||h()}).on("keyup.dtb-collection",function(a){27===
+a.keyCode&&h()});g.autoClose&&setTimeout(function(){b.on("buttons-action.b-internal",function(a,b,c,e){e[0]!==f[0]&&h()})},0)}});n.background=function(a,b,c,e){c===p&&(c=400);e||(e=t.body);a?d("<div/>").addClass(b).css("display","none").insertAfter(e).stop().fadeIn(c):d("div."+b).stop().fadeOut(c,function(){d(this).removeClass(b).remove()})};n.instanceSelector=function(a,b){if(a===p||null===a)return d.map(b,function(a){return a.inst});var c=[],e=d.map(b,function(a){return a.name}),g=function(a){if(d.isArray(a))for(var f=
+0,k=a.length;f<k;f++)g(a[f]);else"string"===typeof a?-1!==a.indexOf(",")?g(a.split(",")):(a=d.inArray(d.trim(a),e),-1!==a&&c.push(b[a].inst)):"number"===typeof a&&c.push(b[a].inst)};g(a);return c};n.buttonSelector=function(a,b){for(var c=[],e=function(a,b,c){for(var d,g,f=0,k=b.length;f<k;f++)if(d=b[f])g=c!==p?c+f:f+"",a.push({node:d.node,name:d.conf.name,idx:g}),d.buttons&&e(a,d.buttons,g+"-")},g=function(a,b){var f,h=[];e(h,b.s.buttons);var k=d.map(h,function(a){return a.node});if(d.isArray(a)||
+a instanceof d)for(k=0,f=a.length;k<f;k++)g(a[k],b);else if(null===a||a===p||"*"===a)for(k=0,f=h.length;k<f;k++)c.push({inst:b,node:h[k].node});else if("number"===typeof a)c.push({inst:b,node:b.s.buttons[a].node});else if("string"===typeof a)if(-1!==a.indexOf(","))for(h=a.split(","),k=0,f=h.length;k<f;k++)g(d.trim(h[k]),b);else if(a.match(/^\d+(\-\d+)*$/))k=d.map(h,function(a){return a.idx}),c.push({inst:b,node:h[d.inArray(a,k)].node});else if(-1!==a.indexOf(":name"))for(a=a.replace(":name",""),k=
+0,f=h.length;k<f;k++)h[k].name===a&&c.push({inst:b,node:h[k].node});else d(k).filter(a).each(function(){c.push({inst:b,node:this})});else"object"===typeof a&&a.nodeName&&(h=d.inArray(a,k),-1!==h&&c.push({inst:b,node:k[h]}))},f=0,h=a.length;f<h;f++)g(b,a[f]);return c};n.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{tag:"div",className:""},button:{tag:"ActiveXObject"in u?"a":"button",className:"dt-button",
+active:"active",disabled:"disabled"},buttonLiner:{tag:"span",className:""}}};n.version="1.6.1";d.extend(q,{collection:{text:function(a){return a.i18n("buttons.collection","Collection")},className:"buttons-collection",init:function(a,b,c){b.attr("aria-expanded",!1)},action:function(a,b,c,e){a.stopPropagation();e._collection.parents("body").length?this.popover(!1,e):this.popover(e._collection,e)},attr:{"aria-haspopup":!0}},copy:function(a,b){if(q.copyHtml5)return"copyHtml5";if(q.copyFlash&&q.copyFlash.available(a,
+b))return"copyFlash"},csv:function(a,b){if(q.csvHtml5&&q.csvHtml5.available(a,b))return"csvHtml5";if(q.csvFlash&&q.csvFlash.available(a,b))return"csvFlash"},excel:function(a,b){if(q.excelHtml5&&q.excelHtml5.available(a,b))return"excelHtml5";if(q.excelFlash&&q.excelFlash.available(a,b))return"excelFlash"},pdf:function(a,b){if(q.pdfHtml5&&q.pdfHtml5.available(a,b))return"pdfHtml5";if(q.pdfFlash&&q.pdfFlash.available(a,b))return"pdfFlash"},pageLength:function(a){a=a.settings()[0].aLengthMenu;var b=d.isArray(a[0])?
+a[0]:a,c=d.isArray(a[0])?a[1]:a;return{extend:"collection",text:function(a){return a.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},a.page.len())},className:"buttons-page-length",autoClose:!0,buttons:d.map(b,function(a,b){return{text:c[b],className:"button-page-length",action:function(b,c){c.page.len(a).draw()},init:function(b,c,d){var e=this;c=function(){e.active(b.page.len()===a)};b.on("length.dt"+d.namespace,c);c()},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}),
+init:function(a,b,c){var d=this;a.on("length.dt"+c.namespace,function(){d.text(c.text)})},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}});m.Api.register("buttons()",function(a,b){b===p&&(b=a,a=p);this.selector.buttonGroup=a;var c=this.iterator(!0,"table",function(c){if(c._buttons)return n.buttonSelector(n.instanceSelector(a,c._buttons),b)},!0);c._groupSelector=a;return c});m.Api.register("button()",function(a,b){a=this.buttons(a,b);1<a.length&&a.splice(1,a.length);return a});m.Api.registerPlural("buttons().active()",
+"button().active()",function(a){return a===p?this.map(function(a){return a.inst.active(a.node)}):this.each(function(b){b.inst.active(b.node,a)})});m.Api.registerPlural("buttons().action()","button().action()",function(a){return a===p?this.map(function(a){return a.inst.action(a.node)}):this.each(function(b){b.inst.action(b.node,a)})});m.Api.register(["buttons().enable()","button().enable()"],function(a){return this.each(function(b){b.inst.enable(b.node,a)})});m.Api.register(["buttons().disable()",
+"button().disable()"],function(){return this.each(function(a){a.inst.disable(a.node)})});m.Api.registerPlural("buttons().nodes()","button().node()",function(){var a=d();d(this.each(function(b){a=a.add(b.inst.node(b.node))}));return a});m.Api.registerPlural("buttons().processing()","button().processing()",function(a){return a===p?this.map(function(a){return a.inst.processing(a.node)}):this.each(function(b){b.inst.processing(b.node,a)})});m.Api.registerPlural("buttons().text()","button().text()",function(a){return a===
+p?this.map(function(a){return a.inst.text(a.node)}):this.each(function(b){b.inst.text(b.node,a)})});m.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(a){a.inst.node(a.node).trigger("click")})});m.Api.register("button().popover()",function(a,b){return this.map(function(c){return c.inst._popover(a,this.button(this[0].node),b)})});m.Api.register("buttons().containers()",function(){var a=d(),b=this._groupSelector;this.iterator(!0,"table",function(c){if(c._buttons){c=
+n.instanceSelector(b,c._buttons);for(var d=0,g=c.length;d<g;d++)a=a.add(c[d].container())}});return a});m.Api.register("buttons().container()",function(){return this.containers().eq(0)});m.Api.register("button().add()",function(a,b){var c=this.context;c.length&&(c=n.instanceSelector(this._groupSelector,c[0]._buttons),c.length&&c[0].add(b,a));return this.button(this._groupSelector,a)});m.Api.register("buttons().destroy()",function(){this.pluck("inst").unique().each(function(a){a.destroy()});return this});
+m.Api.registerPlural("buttons().remove()","buttons().remove()",function(){this.each(function(a){a.inst.remove(a.node)});return this});var v;m.Api.register("buttons.info()",function(a,b,c){var e=this;if(!1===a)return this.off("destroy.btn-info"),d("#datatables_buttons_info").fadeOut(function(){d(this).remove()}),clearTimeout(v),v=null,this;v&&clearTimeout(v);d("#datatables_buttons_info").length&&d("#datatables_buttons_info").remove();a=a?"<h2>"+a+"</h2>":"";d('<div id="datatables_buttons_info" class="dt-button-info"/>').html(a).append(d("<div/>")["string"===
+typeof b?"html":"append"](b)).css("display","none").appendTo("body").fadeIn();c!==p&&0!==c&&(v=setTimeout(function(){e.buttons.info(!1)},c));this.on("destroy.btn-info",function(){e.buttons.info(!1)});return this});m.Api.register("buttons.exportData()",function(a){if(this.context.length)return E(new m.Api(this.context[0]),a)});m.Api.register("buttons.exportInfo()",function(a){a||(a={});var b=a;var c="*"===b.filename&&"*"!==b.title&&b.title!==p&&null!==b.title&&""!==b.title?b.title:b.filename;"function"===
+typeof c&&(c=c());c===p||null===c?c=null:(-1!==c.indexOf("*")&&(c=d.trim(c.replace("*",d("head > title").text()))),c=c.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""),(b=x(b.extension))||(b=""),c+=b);b=x(a.title);b=null===b?null:-1!==b.indexOf("*")?b.replace("*",d("head > title").text()||"Exported data"):b;return{filename:c,title:b,messageTop:z(this,a.message||a.messageTop,"top"),messageBottom:z(this,a.messageBottom,"bottom")}});var x=function(a){return null===a||a===p?null:"function"===typeof a?
+a():a},z=function(a,b,c){b=x(b);if(null===b)return null;a=d("caption",a.table().container()).eq(0);return"*"===b?a.css("caption-side")!==c?null:a.length?a.text():"":b},A=d("<textarea/>")[0],E=function(a,b){var c=d.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,trim:!0,format:{header:function(a){return e(a)},footer:function(a){return e(a)},body:function(a){return e(a)}},customizeData:null},b),e=function(a){if("string"!==
+typeof a)return a;a=a.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"");a=a.replace(/<!\-\-.*?\-\->/g,"");c.stripHtml&&(a=a.replace(/<[^>]*>/g,""));c.trim&&(a=a.replace(/^\s+|\s+$/g,""));c.stripNewlines&&(a=a.replace(/\n/g," "));c.decodeEntities&&(A.innerHTML=a,a=A.value);return a};b=a.columns(c.columns).indexes().map(function(b){var d=a.column(b).header();return c.format.header(d.innerHTML,b,d)}).toArray();var g=a.table().footer()?a.columns(c.columns).indexes().map(function(b){var d=
+a.column(b).footer();return c.format.footer(d?d.innerHTML:"",b,d)}).toArray():null,f=d.extend({},c.modifier);a.select&&"function"===typeof a.select.info&&f.selected===p&&a.rows(c.rows,d.extend({selected:!0},f)).any()&&d.extend(f,{selected:!0});f=a.rows(c.rows,f).indexes().toArray();var h=a.cells(f,c.columns);f=h.render(c.orthogonal).toArray();h=h.nodes().toArray();for(var k=b.length,m=[],l=0,n=0,q=0<k?f.length/k:0;n<q;n++){for(var u=[k],t=0;t<k;t++)u[t]=c.format.body(f[l],n,t,h[l]),l++;m[n]=u}b={header:b,
+footer:g,body:m};c.customizeData&&c.customizeData(b);return b};d.fn.dataTable.Buttons=n;d.fn.DataTable.Buttons=n;d(t).on("init.dt plugin-init.dt",function(a,b){"dt"===a.namespace&&(a=b.oInit.buttons||m.defaults.buttons)&&!b._buttons&&(new n(b,a)).container()});m.ext.feature.push({fnInit:y,cFeature:"B"});m.ext.features&&m.ext.features.register("buttons",y);return n});
+
+
+/*!
+ Bootstrap integration for DataTables' Buttons
+ ©2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group flex-wrap"},
+button:{className:"btn btn-secondary"},collection:{tag:"div",className:"dropdown-menu",button:{tag:"a",className:"dt-button dropdown-item",active:"active",disabled:"disabled"}}},buttonCreated:function(a,b){return a.buttons?c('<div class="btn-group"/>').append(b):b}});a.ext.buttons.collection.className+=" dropdown-toggle";a.ext.buttons.collection.rightAlignClassName="dropdown-menu-right";return a.Buttons});
+
+
+/*!
+ Column visibility buttons for Buttons and DataTables.
+ 2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(f){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(c){return f(c,window,document)}):"object"===typeof exports?module.exports=function(c,e){c||(c=window);e&&e.fn.dataTable||(e=require("datatables.net")(c,e).$);e.fn.dataTable.Buttons||require("datatables.net-buttons")(c,e);return f(e,c,c.document)}:f(jQuery,window,document)})(function(f,c,e,h){c=f.fn.dataTable;f.extend(c.ext.buttons,{colvis:function(a,b){return{extend:"collection",
+text:function(b){return b.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",buttons:[{extend:"columnsToggle",columns:b.columns,columnText:b.columnText}]}},columnsToggle:function(a,b){return a.columns(b.columns).indexes().map(function(a){return{extend:"columnToggle",columns:a,columnText:b.columnText}}).toArray()},columnToggle:function(a,b){return{extend:"columnVisibility",columns:b.columns,columnText:b.columnText}},columnsVisibility:function(a,b){return a.columns(b.columns).indexes().map(function(a){return{extend:"columnVisibility",
+columns:a,visibility:b.visibility,columnText:b.columnText}}).toArray()},columnVisibility:{columns:h,text:function(a,b,d){return d._columnText(a,d)},className:"buttons-columnVisibility",action:function(a,b,d,g){a=b.columns(g.columns);b=a.visible();a.visible(g.visibility!==h?g.visibility:!(b.length&&b[0]))},init:function(a,b,d){var g=this;b.attr("data-cv-idx",d.columns);a.on("column-visibility.dt"+d.namespace,function(b,c){c.bDestroying||c.nTable!=a.settings()[0].nTable||g.active(a.column(d.columns).visible())}).on("column-reorder.dt"+
+d.namespace,function(c,e,f){1===a.columns(d.columns).count()&&(b.text(d._columnText(a,d)),g.active(a.column(d.columns).visible()))});this.active(a.column(d.columns).visible())},destroy:function(a,b,d){a.off("column-visibility.dt"+d.namespace).off("column-reorder.dt"+d.namespace)},_columnText:function(a,b){var d=a.column(b.columns).index(),c=a.settings()[0].aoColumns[d].sTitle.replace(/\n/g," ").replace(/<br\s*\/?>/gi," ").replace(/<select(.*?)<\/select>/g,"").replace(/<!\-\-.*?\-\->/g,"").replace(/<.*?>/g,
+"").replace(/^\s+|\s+$/g,"");return b.columnText?b.columnText(a,d,c):c}},colvisRestore:{className:"buttons-colvisRestore",text:function(a){return a.i18n("buttons.colvisRestore","Restore visibility")},init:function(a,b,d){d._visOriginal=a.columns().indexes().map(function(b){return a.column(b).visible()}).toArray()},action:function(a,b,d,c){b.columns().every(function(a){a=b.colReorder&&b.colReorder.transpose?b.colReorder.transpose(a,"toOriginal"):a;this.visible(c._visOriginal[a])})}},colvisGroup:{className:"buttons-colvisGroup",
+action:function(a,b,d,c){b.columns(c.show).visible(!0,!1);b.columns(c.hide).visible(!1,!1);b.columns.adjust()},show:[],hide:[]}});return c.Buttons});
+
+
+/*!
+ Flash export buttons for Buttons and DataTables.
+ 2015-2017 SpryMedia Ltd - datatables.net/license
+
+ ZeroClipbaord - MIT license
+ Copyright (c) 2012 Joseph Huckaby
+*/
+(function(g){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(n){return g(n,window,document)}):"object"===typeof exports?module.exports=function(n,m){n||(n=window);m&&m.fn.dataTable||(m=require("datatables.net")(n,m).$);m.fn.dataTable.Buttons||require("datatables.net-buttons")(n,m);return g(m,n,n.document)}:g(jQuery,window,document)})(function(g,n,m,u){function A(a){for(var b="";0<=a;)b=String.fromCharCode(a%26+65)+b,a=Math.floor(a/26)-1;
+return b}function r(a,b,c){var d=a.createElement(b);c&&(c.attr&&g(d).attr(c.attr),c.children&&g.each(c.children,function(a,b){d.appendChild(b)}),null!==c.text&&c.text!==u&&d.appendChild(a.createTextNode(c.text)));return d}function G(a,b){var c=a.header[b].length;a.footer&&a.footer[b].length>c&&(c=a.footer[b].length);for(var d=0,f=a.body.length;d<f;d++){var e=a.body[d][b];e=null!==e&&e!==u?e.toString():"";-1!==e.indexOf("\n")?(e=e.split("\n"),e.sort(function(a,b){return b.length-a.length}),e=e[0].length):
+e=e.length;e>c&&(c=e);if(40<c)return 52}c*=1.3;return 6<c?c:6}function B(a){v===u&&(v=-1===z.serializeToString(g.parseXML(t["xl/worksheets/sheet1.xml"])).indexOf("xmlns:r"));g.each(a,function(b,c){if(g.isPlainObject(c))B(c);else{if(v){var d=c.childNodes[0],f,e=[];for(f=d.attributes.length-1;0<=f;f--){var h=d.attributes[f].nodeName;var k=d.attributes[f].nodeValue;-1!==h.indexOf(":")&&(e.push({name:h,value:k}),d.removeAttribute(h))}f=0;for(h=e.length;f<h;f++)k=c.createAttribute(e[f].name.replace(":",
+"_dt_b_namespace_token_")),k.value=e[f].value,d.setAttributeNode(k)}c=z.serializeToString(c);v&&(-1===c.indexOf("<?xml")&&(c='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+c),c=c.replace(/_dt_b_namespace_token_/g,":"));c=c.replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");a[b]=c}})}var l=g.fn.dataTable,h={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(a){"string"==typeof a&&(a=m.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=
+function(){this.style.display=""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(new RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(new RegExp("\\s*"+a+"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,b,c){(a=this.clients[a])&&a.receiveEvent(b,c)},log:function(a){console.log("Flash: "+a)},register:function(a,
+b){this.clients[a]=b},getDOMObjectPosition:function(a){var b={left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!==a.style.width&&(b.width=a.style.width.replace("px",""));""!==a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b},Client:function(a){this.handlers={};this.id=h.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;h.register(this.id,this);a&&this.glue(a)}};
+h.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"",action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,sheetName:"",glue:function(a,b){this.domElement=h.$(a);a=99;this.domElement.style.zIndex&&(a=parseInt(this.domElement.style.zIndex,10)+1);var c=h.getDOMObjectPosition(this.domElement);this.div=m.createElement("div");var d=this.div.style;d.position="absolute";d.left="0px";d.top="0px";d.width=c.width+"px";d.height=c.height+"px";d.zIndex=a;"undefined"!=typeof b&&
+""!==b&&(this.div.title=b);0!==c.width&&0!==c.height&&(this.sized=!0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(c.width,c.height).replace(/&/g,"&amp;"))},positionElement:function(){var a=h.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!==a.width&&0!==a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=a.height)},getHTML:function(a,b){var c="",d="id="+this.id+
+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/)){var f=location.href.match(/^https/i)?"https://":"http://";c+='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+f+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+a+'" height="'+b+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+h.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+
+d+'"/><param name="wmode" value="transparent"/></object>'}else c+='<embed id="'+this.movieId+'" src="'+h.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+a+'" height="'+b+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+d+'" wmode="transparent" />';return c},hide:function(){this.div&&(this.div.style.left="-2000px")},
+show:function(){this.reposition()},destroy:function(){var a=this;this.domElement&&this.div&&(g(this.div).remove(),this.div=this.domElement=null,g.each(h.clients,function(b,c){c===a&&delete h.clients[b]}))},reposition:function(a){a&&((this.domElement=h.$(a))||this.hide());if(this.domElement&&this.div){a=h.getDOMObjectPosition(this.domElement);var b=this.div.style;b.left=""+a.left+"px";b.top=""+a.top+"px"}},clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+=
+a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},setSheetData:function(a){this.ready&&this.movie.setSheetData(JSON.stringify(a))},setAction:function(a){this.action=a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled=
+a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=m.getElementById(this.movieId);if(!this.movie){var c=this;setTimeout(function(){c.receiveEvent("load",null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){c=this;setTimeout(function(){c.receiveEvent("load",null)},100);this.ready=!0;return}this.ready=
+!0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setHandCursor(this.handCursorEnabled);break;case "mouseover":this.domElement&&this.cssEffects&&this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&&
+this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var d=0,f=this.handlers[a].length;d<f;d++){var e=this.handlers[a][d];if("function"==typeof e)e(this,b);else if("object"==typeof e&&2==e.length)e[0][e[1]](this,b);else if("string"==typeof e)n[e](this,b)}}};h.hasFlash=function(){try{return new ActiveXObject("ShockwaveFlash.ShockwaveFlash"),!0}catch(a){if(navigator.mimeTypes&&
+navigator.mimeTypes["application/x-shockwave-flash"]!==u&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin)return!0}return!1};n.ZeroClipboard_TableTools=h;var C=function(a,b){b.attr("id");b.parents("html").length?a.glue(b[0],""):setTimeout(function(){C(a,b)},500)},H=function(a){var b="Sheet1";a.sheetName&&(b=a.sheetName.replace(/[\[\]\*\/\\\?:]/g,""));return b},x=function(a,b){b=b.match(/[\s\S]{1,8192}/g)||[];a.clearText();for(var c=0,d=b.length;c<d;c++)a.appendText(b[c])},D=function(a){return a.newline?
+a.newline:navigator.userAgent.match(/Windows/)?"\r\n":"\n"},E=function(a,b){var c=D(b);a=a.buttons.exportData(b.exportOptions);var d=b.fieldBoundary,f=b.fieldSeparator,e=new RegExp(d,"g"),g=b.escapeChar!==u?b.escapeChar:"\\",h=function(a){for(var b="",c=0,h=a.length;c<h;c++)0<c&&(b+=f),b+=d?d+(""+a[c]).replace(e,g+d)+d:a[c];return b},n=b.header?h(a.header)+c:"";b=b.footer&&a.footer?c+h(a.footer):"";for(var m=[],p=0,r=a.body.length;p<r;p++)m.push(h(a.body[p]));return{str:n+m.join(c)+b,rows:m.length}},
+y={available:function(){return h.hasFlash()},init:function(a,b,c){h.moviePath=l.Buttons.swfPath;var d=new h.Client;d.setHandCursor(!0);d.addEventListener("mouseDown",function(d){c._fromFlash=!0;a.button(b[0]).trigger();c._fromFlash=!1});C(d,b);c._flash=d},destroy:function(a,b,c){c._flash.destroy()},fieldSeparator:",",fieldBoundary:'"',exportOptions:{},title:"*",messageTop:"*",messageBottom:"*",filename:"*",extension:".csv",header:!0,footer:!1},z="";z="undefined"===typeof n.XMLSerializer?new function(){this.serializeToString=
+function(a){return a.xml}}:new XMLSerializer;var v,t={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>',
+"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>',
+"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="" sheetId="1" r:id="rId1"/></sheets></workbook>',
+"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="#,##0.00_- [$$-45C]"/><numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="61"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'},
+F=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(a){return a/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(a){return a/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\([\d,]+\)$/,style:61,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^[\d,]+$/,style:63},{match:/^[\d,]+\.\d{2}$/,style:64}];l.Buttons.swfPath="//cdn.datatables.net/buttons/"+
+l.Buttons.version+"/swf/flashExport.swf";l.Api.register("buttons.resize()",function(){g.each(h.clients,function(a,b){b.domElement!==u&&b.domElement.parentNode&&b.positionElement()})});l.ext.buttons.copyFlash=g.extend({},y,{className:"buttons-copy buttons-flash",text:function(a){return a.i18n("buttons.copy","Copy")},action:function(a,b,c,d){if(d._fromFlash){this.processing(!0);a=d._flash;var f=E(b,d);c=b.buttons.exportInfo(d);var e=D(d);f=f.str;c.title&&(f=c.title+e+e+f);c.messageTop&&(f=c.messageTop+
+e+e+f);c.messageBottom&&(f=f+e+e+c.messageBottom);d.customize&&(f=d.customize(f,d,b));a.setAction("copy");x(a,f);this.processing(!1);b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),b.i18n("buttons.copySuccess",{_:"Copied %d rows to clipboard",1:"Copied 1 row to clipboard"},data.rows),3E3)}},fieldSeparator:"\t",fieldBoundary:""});l.ext.buttons.csvFlash=g.extend({},y,{className:"buttons-csv buttons-flash",text:function(a){return a.i18n("buttons.csv","CSV")},action:function(a,b,c,d){a=
+d._flash;var f=E(b,d);c=b.buttons.exportInfo(d);b=d.customize?d.customize(f.str,d,b):f.str;a.setAction("csv");a.setFileName(c.filename);x(a,b)},escapeChar:'"'});l.ext.buttons.excelFlash=g.extend({},y,{className:"buttons-excel buttons-flash",text:function(a){return a.i18n("buttons.excel","Excel")},action:function(a,b,c,d){this.processing(!0);a=d._flash;var f=0,e=g.parseXML(t["xl/worksheets/sheet1.xml"]),h=e.getElementsByTagName("sheetData")[0];c={_rels:{".rels":g.parseXML(t["_rels/.rels"])},xl:{_rels:{"workbook.xml.rels":g.parseXML(t["xl/_rels/workbook.xml.rels"])},
+"workbook.xml":g.parseXML(t["xl/workbook.xml"]),"styles.xml":g.parseXML(t["xl/styles.xml"]),worksheets:{"sheet1.xml":e}},"[Content_Types].xml":g.parseXML(t["[Content_Types].xml"])};var k=b.buttons.exportData(d.exportOptions),m,n,p=function(a){m=f+1;n=r(e,"row",{attr:{r:m}});for(var b=0,c=a.length;b<c;b++){var l=A(b)+""+m,k=null;if(null===a[b]||a[b]===u||""===a[b])if(!0===d.createEmptyCells)a[b]="";else continue;a[b]=g.trim(a[b]);for(var p=0,t=F.length;p<t;p++){var q=F[p];if(a[b].match&&!a[b].match(/^0\d+/)&&
+a[b].match(q.match)){k=a[b].replace(/[^\d\.\-]/g,"");q.fmt&&(k=q.fmt(k));k=r(e,"c",{attr:{r:l,s:q.style},children:[r(e,"v",{text:k})]});break}}k||("number"===typeof a[b]||a[b].match&&a[b].match(/^-?\d+(\.\d+)?$/)&&!a[b].match(/^0\d+/)?k=r(e,"c",{attr:{t:"n",r:l},children:[r(e,"v",{text:a[b]})]}):(q=a[b].replace?a[b].replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""):a[b],k=r(e,"c",{attr:{t:"inlineStr",r:l},children:{row:r(e,"is",{children:{row:r(e,"t",{text:q})}})}})));n.appendChild(k)}h.appendChild(n);
+f++};g("sheets sheet",c.xl["workbook.xml"]).attr("name",H(d));d.customizeData&&d.customizeData(k);var l=function(a,b){var c=g("mergeCells",e);c[0].appendChild(r(e,"mergeCell",{attr:{ref:"A"+a+":"+A(b)+a}}));c.attr("count",c.attr("count")+1);g("row:eq("+(a-1)+") c",e).attr("s","51")},q=b.buttons.exportInfo(d);q.title&&(p([q.title],f),l(f,k.header.length-1));q.messageTop&&(p([q.messageTop],f),l(f,k.header.length-1));d.header&&(p(k.header,f),g("row:last c",e).attr("s","2"));for(var w=0,v=k.body.length;w<
+v;w++)p(k.body[w],f);d.footer&&k.footer&&(p(k.footer,f),g("row:last c",e).attr("s","2"));q.messageBottom&&(p([q.messageBottom],f),l(f,k.header.length-1));p=r(e,"cols");g("worksheet",e).prepend(p);l=0;for(w=k.header.length;l<w;l++)p.appendChild(r(e,"col",{attr:{min:l+1,max:l+1,width:G(k,l),customWidth:1}}));d.customize&&d.customize(c,d,b);B(c);a.setAction("excel");a.setFileName(q.filename);a.setSheetData(c);x(a,"");this.processing(!1)},extension:".xlsx",createEmptyCells:!1});l.ext.buttons.pdfFlash=
+g.extend({},y,{className:"buttons-pdf buttons-flash",text:function(a){return a.i18n("buttons.pdf","PDF")},action:function(a,b,c,d){this.processing(!0);a=d._flash;c=b.buttons.exportData(d.exportOptions);var f=b.buttons.exportInfo(d),e=b.table().node().offsetWidth,g=b.columns(d.columns).indexes().map(function(a){return b.column(a).header().offsetWidth/e});a.setAction("pdf");a.setFileName(f.filename);x(a,JSON.stringify({title:f.title||"",messageTop:f.messageTop||"",messageBottom:f.messageBottom||"",
+colWidth:g.toArray(),orientation:d.orientation,size:d.pageSize,header:d.header?c.header:null,footer:d.footer?c.footer:null,body:c.body}));this.processing(!1)},extension:".pdf",orientation:"portrait",pageSize:"A4",newline:"\n"});return l.Buttons});
+
+
+/*!
+ HTML5 export buttons for Buttons and DataTables.
+ 2016 SpryMedia Ltd - datatables.net/license
+
+ FileSaver.js (1.3.3) - MIT license
+ Copyright © 2016 Eli Grey - http://eligrey.com
+*/
+(function(f){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(g){return f(g,window,document)}):"object"===typeof exports?module.exports=function(g,p,z,t){g||(g=window);p&&p.fn.dataTable||(p=require("datatables.net")(g,p).$);p.fn.dataTable.Buttons||require("datatables.net-buttons")(g,p);return f(p,g,g.document,z,t)}:f(jQuery,window,document)})(function(f,g,p,z,t,w){function A(a){for(var b="";0<=a;)b=String.fromCharCode(a%26+65)+b,a=Math.floor(a/
+26)-1;return b}function E(a,b){y===w&&(y=-1===C.serializeToString(f.parseXML(F["xl/worksheets/sheet1.xml"])).indexOf("xmlns:r"));f.each(b,function(b,c){if(f.isPlainObject(c))b=a.folder(b),E(b,c);else{if(y){var d=c.childNodes[0],e,h=[];for(e=d.attributes.length-1;0<=e;e--){var m=d.attributes[e].nodeName;var k=d.attributes[e].nodeValue;-1!==m.indexOf(":")&&(h.push({name:m,value:k}),d.removeAttribute(m))}e=0;for(m=h.length;e<m;e++)k=c.createAttribute(h[e].name.replace(":","_dt_b_namespace_token_")),
+k.value=h[e].value,d.setAttributeNode(k)}c=C.serializeToString(c);y&&(-1===c.indexOf("<?xml")&&(c='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+c),c=c.replace(/_dt_b_namespace_token_/g,":"),c=c.replace(/xmlns:NS[\d]+="" NS[\d]+:/g,""));c=c.replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");a.file(b,c)}})}function r(a,b,d){var c=a.createElement(b);d&&(d.attr&&f(c).attr(d.attr),d.children&&f.each(d.children,function(a,b){c.appendChild(b)}),null!==d.text&&d.text!==w&&c.appendChild(a.createTextNode(d.text)));
+return c}function L(a,b){var d=a.header[b].length;a.footer&&a.footer[b].length>d&&(d=a.footer[b].length);for(var c=0,f=a.body.length;c<f;c++){var e=a.body[c][b];e=null!==e&&e!==w?e.toString():"";-1!==e.indexOf("\n")?(e=e.split("\n"),e.sort(function(a,c){return c.length-a.length}),e=e[0].length):e=e.length;e>d&&(d=e);if(40<d)return 54}d*=1.35;return 6<d?d:6}var v=f.fn.dataTable;v.Buttons.pdfMake=function(a){if(!a)return t||g.pdfMake;t=m_ake};v.Buttons.jszip=function(a){if(!a)return z||g.JSZip;z=a};
+var B=function(a){if(!("undefined"===typeof a||"undefined"!==typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var b=a.document.createElementNS("http://www.w3.org/1999/xhtml","a"),d="download"in b,c=/constructor/i.test(a.HTMLElement)||a.safari,f=/CriOS\/[\d]+/.test(navigator.userAgent),e=function(c){(a.setImmediate||a.setTimeout)(function(){throw c;},0)},h=function(c){setTimeout(function(){"string"===typeof c?(a.URL||a.webkitURL||a).revokeObjectURL(c):c.remove()},4E4)},m=function(a){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?
+new Blob([String.fromCharCode(65279),a],{type:a.type}):a},k=function(k,q,n){n||(k=m(k));var l=this,g="application/octet-stream"===k.type,D=function(){var a=["writestart","progress","write","writeend"];a=[].concat(a);for(var c=a.length;c--;){var b=l["on"+a[c]];if("function"===typeof b)try{b.call(l,l)}catch(M){e(M)}}};l.readyState=l.INIT;if(d){var u=(a.URL||a.webkitURL||a).createObjectURL(k);setTimeout(function(){b.href=u;b.download=q;var a=new MouseEvent("click");b.dispatchEvent(a);D();h(u);l.readyState=
+l.DONE})}else(function(){if((f||g&&c)&&a.FileReader){var b=new FileReader;b.onloadend=function(){var c=f?b.result:b.result.replace(/^data:[^;]*;/,"data:attachment/file;");a.open(c,"_blank")||(a.location.href=c);l.readyState=l.DONE;D()};b.readAsDataURL(k);l.readyState=l.INIT}else u||(u=(a.URL||a.webkitURL||a).createObjectURL(k)),g?a.location.href=u:a.open(u,"_blank")||(a.location.href=u),l.readyState=l.DONE,D(),h(u)})()},n=k.prototype;if("undefined"!==typeof navigator&&navigator.msSaveOrOpenBlob)return function(a,
+c,b){c=c||a.name||"download";b||(a=m(a));return navigator.msSaveOrOpenBlob(a,c)};n.abort=function(){};n.readyState=n.INIT=0;n.WRITING=1;n.DONE=2;n.error=n.onwritestart=n.onprogress=n.onwrite=n.onabort=n.onerror=n.onwriteend=null;return function(a,c,b){return new k(a,c||a.name||"download",b)}}}("undefined"!==typeof self&&self||"undefined"!==typeof g&&g||this.content);v.fileSave=B;var G=function(a){var b="Sheet1";a.sheetName&&(b=a.sheetName.replace(/[\[\]\*\/\\\?:]/g,""));return b},H=function(a){return a.newline?
+a.newline:navigator.userAgent.match(/Windows/)?"\r\n":"\n"},I=function(a,b){var d=H(b);a=a.buttons.exportData(b.exportOptions);var c=b.fieldBoundary,f=b.fieldSeparator,e=new RegExp(c,"g"),h=b.escapeChar!==w?b.escapeChar:"\\",m=function(a){for(var b="",d=0,m=a.length;d<m;d++)0<d&&(b+=f),b+=c?c+(""+a[d]).replace(e,h+c)+c:a[d];return b},k=b.header?m(a.header)+d:"";b=b.footer&&a.footer?d+m(a.footer):"";for(var n=[],g=0,q=a.body.length;g<q;g++)n.push(m(a.body[g]));return{str:k+n.join(d)+b,rows:n.length}},
+J=function(){if(-1===navigator.userAgent.indexOf("Safari")||-1!==navigator.userAgent.indexOf("Chrome")||-1!==navigator.userAgent.indexOf("Opera"))return!1;var a=navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/);return a&&1<a.length&&603.1>1*a[1]?!0:!1};try{var C=new XMLSerializer,y}catch(a){}var F={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',
+"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>',"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>',
+"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><definedNames/></workbook>',
+"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="#,##0.00_- [$$-45C]"/><numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="67"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'},
+K=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(a){return a/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(a){return a/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\-?\d+$/,style:65},{match:/^\-?\d+\.\d{2}$/,style:66},{match:/^\([\d,]+\)$/,style:61,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^\-?[\d,]+$/,style:63},
+{match:/^\-?[\d,]+\.\d{2}$/,style:64}];v.ext.buttons.copyHtml5={className:"buttons-copy buttons-html5",text:function(a){return a.i18n("buttons.copy","Copy")},action:function(a,b,d,c){this.processing(!0);var g=this;a=I(b,c);var e=b.buttons.exportInfo(c),h=H(c),m=a.str;d=f("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0});e.title&&(m=e.title+h+h+m);e.messageTop&&(m=e.messageTop+h+h+m);e.messageBottom&&(m=m+h+h+e.messageBottom);c.customize&&(m=c.customize(m,c,b));c=f("<textarea readonly/>").val(m).appendTo(d);
+if(p.queryCommandSupported("copy")){d.appendTo(b.table().container());c[0].focus();c[0].select();try{var k=p.execCommand("copy");d.remove();if(k){b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),b.i18n("buttons.copySuccess",{1:"Copied one row to clipboard",_:"Copied %d rows to clipboard"},a.rows),2E3);this.processing(!1);return}}catch(q){}}k=f("<span>"+b.i18n("buttons.copyKeys","Press <i>ctrl</i> or <i>⌘</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>To cancel, click this message or press escape.")+
+"</span>").append(d);b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),k,0);c[0].focus();c[0].select();var n=f(k).closest(".dt-button-info"),r=function(){n.off("click.buttons-copy");f(p).off(".buttons-copy");b.buttons.info(!1)};n.on("click.buttons-copy",r);f(p).on("keydown.buttons-copy",function(a){27===a.keyCode&&(r(),g.processing(!1))}).on("copy.buttons-copy cut.buttons-copy",function(){r();g.processing(!1)})},exportOptions:{},fieldSeparator:"\t",fieldBoundary:"",header:!0,footer:!1,
+title:"*",messageTop:"*",messageBottom:"*"};v.ext.buttons.csvHtml5={bom:!1,className:"buttons-csv buttons-html5",available:function(){return g.FileReader!==w&&g.Blob},text:function(a){return a.i18n("buttons.csv","CSV")},action:function(a,b,d,c){this.processing(!0);a=I(b,c).str;d=b.buttons.exportInfo(c);var f=c.charset;c.customize&&(a=c.customize(a,c,b));!1!==f?(f||(f=p.characterSet||p.charset),f&&(f=";charset="+f)):f="";c.bom&&(a="﻿"+a);B(new Blob([a],{type:"text/csv"+f}),d.filename,!0);this.processing(!1)},
+filename:"*",extension:".csv",exportOptions:{},fieldSeparator:",",fieldBoundary:'"',escapeChar:'"',charset:null,header:!0,footer:!1};v.ext.buttons.excelHtml5={className:"buttons-excel buttons-html5",available:function(){return g.FileReader!==w&&(z||g.JSZip)!==w&&!J()&&C},text:function(a){return a.i18n("buttons.excel","Excel")},action:function(a,b,d,c){this.processing(!0);var p=this,e=0;a=function(a){return f.parseXML(F[a])};var h=a("xl/worksheets/sheet1.xml"),m=h.getElementsByTagName("sheetData")[0];
+a={_rels:{".rels":a("_rels/.rels")},xl:{_rels:{"workbook.xml.rels":a("xl/_rels/workbook.xml.rels")},"workbook.xml":a("xl/workbook.xml"),"styles.xml":a("xl/styles.xml"),worksheets:{"sheet1.xml":h}},"[Content_Types].xml":a("[Content_Types].xml")};var k=b.buttons.exportData(c.exportOptions),n,v,q=function(a){n=e+1;v=r(h,"row",{attr:{r:n}});for(var b=0,d=a.length;b<d;b++){var k=A(b)+""+n,g=null;if(null===a[b]||a[b]===w||""===a[b])if(!0===c.createEmptyCells)a[b]="";else continue;var l=a[b];a[b]=f.trim(a[b]);
+for(var q=0,p=K.length;q<p;q++){var u=K[q];if(a[b].match&&!a[b].match(/^0\d+/)&&a[b].match(u.match)){g=a[b].replace(/[^\d\.\-]/g,"");u.fmt&&(g=u.fmt(g));g=r(h,"c",{attr:{r:k,s:u.style},children:[r(h,"v",{text:g})]});break}}g||("number"===typeof a[b]||a[b].match&&a[b].match(/^-?\d+(\.\d+)?$/)&&!a[b].match(/^0\d+/)?g=r(h,"c",{attr:{t:"n",r:k},children:[r(h,"v",{text:a[b]})]}):(l=l.replace?l.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""):l,g=r(h,"c",{attr:{t:"inlineStr",r:k},children:{row:r(h,
+"is",{children:{row:r(h,"t",{text:l,attr:{"xml:space":"preserve"}})}})}})));v.appendChild(g)}m.appendChild(v);e++};c.customizeData&&c.customizeData(k);var x=function(a,b){var c=f("mergeCells",h);c[0].appendChild(r(h,"mergeCell",{attr:{ref:"A"+a+":"+A(b)+a}}));c.attr("count",parseFloat(c.attr("count"))+1);f("row:eq("+(a-1)+") c",h).attr("s","51")},l=b.buttons.exportInfo(c);l.title&&(q([l.title],e),x(e,k.header.length-1));l.messageTop&&(q([l.messageTop],e),x(e,k.header.length-1));c.header&&(q(k.header,
+e),f("row:last c",h).attr("s","2"));d=e;var t=0;for(var y=k.body.length;t<y;t++)q(k.body[t],e);t=e;c.footer&&k.footer&&(q(k.footer,e),f("row:last c",h).attr("s","2"));l.messageBottom&&(q([l.messageBottom],e),x(e,k.header.length-1));q=r(h,"cols");f("worksheet",h).prepend(q);x=0;for(y=k.header.length;x<y;x++)q.appendChild(r(h,"col",{attr:{min:x+1,max:x+1,width:L(k,x),customWidth:1}}));q=a.xl["workbook.xml"];f("sheets sheet",q).attr("name",G(c));c.autoFilter&&(f("mergeCells",h).before(r(h,"autoFilter",
+{attr:{ref:"A"+d+":"+A(k.header.length-1)+t}})),f("definedNames",q).append(r(q,"definedName",{attr:{name:"_xlnm._FilterDatabase",localSheetId:"0",hidden:1},text:G(c)+"!$A$"+d+":"+A(k.header.length-1)+t})));c.customize&&c.customize(a,c,b);0===f("mergeCells",h).children().length&&f("mergeCells",h).remove();b=new (z||g.JSZip);d={type:"blob",mimeType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};E(b,a);b.generateAsync?b.generateAsync(d).then(function(a){B(a,l.filename);p.processing(!1)}):
+(B(b.generate(d),l.filename),this.processing(!1))},filename:"*",extension:".xlsx",exportOptions:{},header:!0,footer:!1,title:"*",messageTop:"*",messageBottom:"*",createEmptyCells:!1,autoFilter:!1,sheetName:""};v.ext.buttons.pdfHtml5={className:"buttons-pdf buttons-html5",available:function(){return g.FileReader!==w&&(t||g.pdfMake)},text:function(a){return a.i18n("buttons.pdf","PDF")},action:function(a,b,d,c){this.processing(!0);d=b.buttons.exportData(c.exportOptions);a=b.buttons.exportInfo(c);var p=
+[];c.header&&p.push(f.map(d.header,function(a){return{text:"string"===typeof a?a:a+"",style:"tableHeader"}}));for(var e=0,h=d.body.length;e<h;e++)p.push(f.map(d.body[e],function(a){if(null===a||a===w)a="";return{text:"string"===typeof a?a:a+"",style:e%2?"tableBodyEven":"tableBodyOdd"}}));c.footer&&d.footer&&p.push(f.map(d.footer,function(a){return{text:"string"===typeof a?a:a+"",style:"tableFooter"}}));d={pageSize:c.pageSize,pageOrientation:c.orientation,content:[{table:{headerRows:1,body:p},layout:"noBorders"}],
+styles:{tableHeader:{bold:!0,fontSize:11,color:"white",fillColor:"#2d4154",alignment:"center"},tableBodyEven:{},tableBodyOdd:{fillColor:"#f3f3f3"},tableFooter:{bold:!0,fontSize:11,color:"white",fillColor:"#2d4154"},title:{alignment:"center",fontSize:15},message:{}},defaultStyle:{fontSize:10}};a.messageTop&&d.content.unshift({text:a.messageTop,style:"message",margin:[0,0,0,12]});a.messageBottom&&d.content.push({text:a.messageBottom,style:"message",margin:[0,0,0,12]});a.title&&d.content.unshift({text:a.title,
+style:"title",margin:[0,0,0,12]});c.customize&&c.customize(d,c,b);b=(t||g.pdfMake).createPdf(d);"open"!==c.download||J()?b.download(a.filename):b.open();this.processing(!1)},title:"*",filename:"*",extension:".pdf",exportOptions:{},orientation:"portrait",pageSize:"A4",header:!0,footer:!1,messageTop:"*",messageBottom:"*",customize:null,download:"download"};return v.Buttons});
+
+
+/*!
+ Print button for Buttons and DataTables.
+ 2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(e){return c(e,window,document)}):"object"===typeof exports?module.exports=function(e,a){e||(e=window);a&&a.fn.dataTable||(a=require("datatables.net")(e,a).$);a.fn.dataTable.Buttons||require("datatables.net-buttons")(e,a);return c(a,e,e.document)}:c(jQuery,window,document)})(function(c,e,a,q){var k=c.fn.dataTable,d=a.createElement("a"),p=function(b){d.href=b;b=d.host;-1===b.indexOf("/")&&
+0!==d.pathname.indexOf("/")&&(b+="/");return d.protocol+"//"+b+d.pathname+d.search};k.ext.buttons.print={className:"buttons-print",text:function(b){return b.i18n("buttons.print","Print")},action:function(b,a,d,g){b=a.buttons.exportData(c.extend({decodeEntities:!1},g.exportOptions));d=a.buttons.exportInfo(g);var k=a.columns(g.exportOptions.columns).flatten().map(function(b){return a.settings()[0].aoColumns[a.column(b).index()].sClass}).toArray(),m=function(b,a){for(var d="<tr>",c=0,e=b.length;c<e;c++)d+=
+"<"+a+" "+(k[c]?'class="'+k[c]+'"':"")+">"+(null===b[c]||b[c]===q?"":b[c])+"</"+a+">";return d+"</tr>"},h='<table class="'+a.table().node().className+'">';g.header&&(h+="<thead>"+m(b.header,"th")+"</thead>");h+="<tbody>";for(var n=0,r=b.body.length;n<r;n++)h+=m(b.body[n],"td");h+="</tbody>";g.footer&&b.footer&&(h+="<tfoot>"+m(b.footer,"th")+"</tfoot>");h+="</table>";var f=e.open("","");f.document.close();var l="<title>"+d.title+"</title>";c("style, link").each(function(){var b=l,a=c(this).clone()[0];
+"link"===a.nodeName.toLowerCase()&&(a.href=p(a.href));l=b+a.outerHTML});try{f.document.head.innerHTML=l}catch(t){c(f.document.head).html(l)}f.document.body.innerHTML="<h1>"+d.title+"</h1><div>"+(d.messageTop||"")+"</div>"+h+"<div>"+(d.messageBottom||"")+"</div>";c(f.document.body).addClass("dt-print-view");c("img",f.document.body).each(function(b,a){a.setAttribute("src",p(a.getAttribute("src")))});g.customize&&g.customize(f,g,a);b=function(){g.autoPrint&&(f.print(),f.close())};navigator.userAgent.match(/Trident\/\d.\d/)?
+b():f.setTimeout(b,1E3)},title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!1,autoPrint:!0,customize:null};return k.Buttons});
+
+
+/*!
+   Copyright 2010-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ ColReorder 1.5.2
+ ©2010-2019 SpryMedia Ltd - datatables.net/license
+*/
+(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return d(t,window,document)}):"object"===typeof exports?module.exports=function(t,r){t||(t=window);r&&r.fn.dataTable||(r=require("datatables.net")(t,r).$);return d(r,t,t.document)}:d(jQuery,window,document)})(function(d,t,r,w){function v(a){for(var b=[],c=0,d=a.length;c<d;c++)b[a[c]]=c;return b}function u(a,b,c){b=a.splice(b,1)[0];a.splice(c,0,b)}function x(a,b,c){for(var d=[],h=0,f=a.childNodes.length;h<
+f;h++)1==a.childNodes[h].nodeType&&d.push(a.childNodes[h]);b=d[b];null!==c?a.insertBefore(b,d[c]):a.appendChild(b)}var y=d.fn.dataTable;d.fn.dataTableExt.oApi.fnColReorder=function(a,b,c,g,h){var f,p,n=a.aoColumns.length;var q=function(a,b,c){if(a[b]&&"function"!==typeof a[b]){var e=a[b].split("."),d=e.shift();isNaN(1*d)||(a[b]=c[1*d]+"."+e.join("."))}};if(b!=c)if(0>b||b>=n)this.oApi._fnLog(a,1,"ColReorder 'from' index is out of bounds: "+b);else if(0>c||c>=n)this.oApi._fnLog(a,1,"ColReorder 'to' index is out of bounds: "+
+c);else{var l=[];var e=0;for(f=n;e<f;e++)l[e]=e;u(l,b,c);var k=v(l);e=0;for(f=a.aaSorting.length;e<f;e++)a.aaSorting[e][0]=k[a.aaSorting[e][0]];if(null!==a.aaSortingFixed)for(e=0,f=a.aaSortingFixed.length;e<f;e++)a.aaSortingFixed[e][0]=k[a.aaSortingFixed[e][0]];e=0;for(f=n;e<f;e++){var m=a.aoColumns[e];l=0;for(p=m.aDataSort.length;l<p;l++)m.aDataSort[l]=k[m.aDataSort[l]];m.idx=k[m.idx]}d.each(a.aLastSort,function(b,c){a.aLastSort[b].src=k[c.src]});e=0;for(f=n;e<f;e++)m=a.aoColumns[e],"number"==typeof m.mData?
+m.mData=k[m.mData]:d.isPlainObject(m.mData)&&(q(m.mData,"_",k),q(m.mData,"filter",k),q(m.mData,"sort",k),q(m.mData,"type",k));if(a.aoColumns[b].bVisible){q=this.oApi._fnColumnIndexToVisible(a,b);p=null;for(e=c<b?c:c+1;null===p&&e<n;)p=this.oApi._fnColumnIndexToVisible(a,e),e++;l=a.nTHead.getElementsByTagName("tr");e=0;for(f=l.length;e<f;e++)x(l[e],q,p);if(null!==a.nTFoot)for(l=a.nTFoot.getElementsByTagName("tr"),e=0,f=l.length;e<f;e++)x(l[e],q,p);e=0;for(f=a.aoData.length;e<f;e++)null!==a.aoData[e].nTr&&
+x(a.aoData[e].nTr,q,p)}u(a.aoColumns,b,c);e=0;for(f=n;e<f;e++)a.oApi._fnColumnOptions(a,e,{});u(a.aoPreSearchCols,b,c);e=0;for(f=a.aoData.length;e<f;e++){p=a.aoData[e];if(m=p.anCells)for(u(m,b,c),l=0,q=m.length;l<q;l++)m[l]&&m[l]._DT_CellIndex&&(m[l]._DT_CellIndex.column=l);"dom"!==p.src&&d.isArray(p._aData)&&u(p._aData,b,c)}e=0;for(f=a.aoHeader.length;e<f;e++)u(a.aoHeader[e],b,c);if(null!==a.aoFooter)for(e=0,f=a.aoFooter.length;e<f;e++)u(a.aoFooter[e],b,c);(h||h===w)&&d.fn.dataTable.Api(a).rows().invalidate();
+e=0;for(f=n;e<f;e++)d(a.aoColumns[e].nTh).off(".DT"),this.oApi._fnSortAttachListener(a,a.aoColumns[e].nTh,e);d(a.oInstance).trigger("column-reorder.dt",[a,{from:b,to:c,mapping:k,drop:g,iFrom:b,iTo:c,aiInvertMapping:k}])}};var k=function(a,b){a=(new d.fn.dataTable.Api(a)).settings()[0];if(a._colReorder)return a._colReorder;!0===b&&(b={});var c=d.fn.dataTable.camelToHungarian;c&&(c(k.defaults,k.defaults,!0),c(k.defaults,b||{}));this.s={dt:null,enable:null,init:d.extend(!0,{},k.defaults,b),fixed:0,fixedRight:0,
+reorderCallback:null,mouse:{startX:-1,startY:-1,offsetX:-1,offsetY:-1,target:-1,targetIndex:-1,fromIndex:-1},aoTargets:[]};this.dom={drag:null,pointer:null};this.s.enable=this.s.init.bEnable;this.s.dt=a;this.s.dt._colReorder=this;this._fnConstruct();return this};d.extend(k.prototype,{fnEnable:function(a){if(!1===a)return fnDisable();this.s.enable=!0},fnDisable:function(){this.s.enable=!1},fnReset:function(){this._fnOrderColumns(this.fnOrder());return this},fnGetCurrentOrder:function(){return this.fnOrder()},
+fnOrder:function(a,b){var c=[],g,h=this.s.dt.aoColumns;if(a===w){b=0;for(g=h.length;b<g;b++)c.push(h[b]._ColReorder_iOrigCol);return c}if(b){h=this.fnOrder();b=0;for(g=a.length;b<g;b++)c.push(d.inArray(a[b],h));a=c}this._fnOrderColumns(v(a));return this},fnTranspose:function(a,b){b||(b="toCurrent");var c=this.fnOrder(),g=this.s.dt.aoColumns;return"toCurrent"===b?d.isArray(a)?d.map(a,function(a){return d.inArray(a,c)}):d.inArray(a,c):d.isArray(a)?d.map(a,function(a){return g[a]._ColReorder_iOrigCol}):
+g[a]._ColReorder_iOrigCol},_fnConstruct:function(){var a=this,b=this.s.dt.aoColumns.length,c=this.s.dt.nTable,g;this.s.init.iFixedColumns&&(this.s.fixed=this.s.init.iFixedColumns);this.s.init.iFixedColumnsLeft&&(this.s.fixed=this.s.init.iFixedColumnsLeft);this.s.fixedRight=this.s.init.iFixedColumnsRight?this.s.init.iFixedColumnsRight:0;this.s.init.fnReorderCallback&&(this.s.reorderCallback=this.s.init.fnReorderCallback);for(g=0;g<b;g++)g>this.s.fixed-1&&g<b-this.s.fixedRight&&this._fnMouseListener(g,
+this.s.dt.aoColumns[g].nTh),this.s.dt.aoColumns[g]._ColReorder_iOrigCol=g;this.s.dt.oApi._fnCallbackReg(this.s.dt,"aoStateSaveParams",function(b,c){a._fnStateSave.call(a,c)},"ColReorder_State");var h=null;this.s.init.aiOrder&&(h=this.s.init.aiOrder.slice());this.s.dt.oLoadedState&&"undefined"!=typeof this.s.dt.oLoadedState.ColReorder&&this.s.dt.oLoadedState.ColReorder.length==this.s.dt.aoColumns.length&&(h=this.s.dt.oLoadedState.ColReorder);if(h)if(a.s.dt._bInitComplete)b=v(h),a._fnOrderColumns.call(a,
+b);else{var f=!1;d(c).on("draw.dt.colReorder",function(){if(!a.s.dt._bInitComplete&&!f){f=!0;var b=v(h);a._fnOrderColumns.call(a,b)}})}else this._fnSetColumnIndexes();d(c).on("destroy.dt.colReorder",function(){d(c).off("destroy.dt.colReorder draw.dt.colReorder");d.each(a.s.dt.aoColumns,function(a,b){d(b.nTh).off(".ColReorder");d(b.nTh).removeAttr("data-column-index")});a.s.dt._colReorder=null;a.s=null})},_fnOrderColumns:function(a){var b=!1;if(a.length!=this.s.dt.aoColumns.length)this.s.dt.oInstance.oApi._fnLog(this.s.dt,
+1,"ColReorder - array reorder does not match known number of columns. Skipping.");else{for(var c=0,g=a.length;c<g;c++){var h=d.inArray(c,a);c!=h&&(u(a,h,c),this.s.dt.oInstance.fnColReorder(h,c,!0,!1),b=!0)}this._fnSetColumnIndexes();b&&(d.fn.dataTable.Api(this.s.dt).rows().invalidate(),""===this.s.dt.oScroll.sX&&""===this.s.dt.oScroll.sY||this.s.dt.oInstance.fnAdjustColumnSizing(!1),this.s.dt.oInstance.oApi._fnSaveState(this.s.dt),null!==this.s.reorderCallback&&this.s.reorderCallback.call(this))}},
+_fnStateSave:function(a){var b,c,g=this.s.dt.aoColumns;a.ColReorder=[];if(a.aaSorting){for(b=0;b<a.aaSorting.length;b++)a.aaSorting[b][0]=g[a.aaSorting[b][0]]._ColReorder_iOrigCol;var h=d.extend(!0,[],a.aoSearchCols);b=0;for(c=g.length;b<c;b++){var f=g[b]._ColReorder_iOrigCol;a.aoSearchCols[f]=h[b];a.abVisCols[f]=g[b].bVisible;a.ColReorder.push(f)}}else if(a.order){for(b=0;b<a.order.length;b++)a.order[b][0]=g[a.order[b][0]]._ColReorder_iOrigCol;h=d.extend(!0,[],a.columns);b=0;for(c=g.length;b<c;b++)f=
+g[b]._ColReorder_iOrigCol,a.columns[f]=h[b],a.ColReorder.push(f)}},_fnMouseListener:function(a,b){var c=this;d(b).on("mousedown.ColReorder",function(a){c.s.enable&&1===a.which&&c._fnMouseDown.call(c,a,b)}).on("touchstart.ColReorder",function(a){c.s.enable&&c._fnMouseDown.call(c,a,b)})},_fnMouseDown:function(a,b){var c=this,g=d(a.target).closest("th, td").offset();b=parseInt(d(b).attr("data-column-index"),10);b!==w&&(this.s.mouse.startX=this._fnCursorPosition(a,"pageX"),this.s.mouse.startY=this._fnCursorPosition(a,
+"pageY"),this.s.mouse.offsetX=this._fnCursorPosition(a,"pageX")-g.left,this.s.mouse.offsetY=this._fnCursorPosition(a,"pageY")-g.top,this.s.mouse.target=this.s.dt.aoColumns[b].nTh,this.s.mouse.targetIndex=b,this.s.mouse.fromIndex=b,this._fnRegions(),d(r).on("mousemove.ColReorder touchmove.ColReorder",function(a){c._fnMouseMove.call(c,a)}).on("mouseup.ColReorder touchend.ColReorder",function(a){c._fnMouseUp.call(c,a)}))},_fnMouseMove:function(a){var b=this;if(null===this.dom.drag){if(5>Math.pow(Math.pow(this._fnCursorPosition(a,
+"pageX")-this.s.mouse.startX,2)+Math.pow(this._fnCursorPosition(a,"pageY")-this.s.mouse.startY,2),.5))return;this._fnCreateDragNode()}this.dom.drag.css({left:this._fnCursorPosition(a,"pageX")-this.s.mouse.offsetX,top:this._fnCursorPosition(a,"pageY")-this.s.mouse.offsetY});var c=this.s.mouse.toIndex;a=this._fnCursorPosition(a,"pageX");for(var d=function(a){for(;0<=a;){a--;if(0>=a)return null;if(b.s.aoTargets[a+1].x!==b.s.aoTargets[a].x)return b.s.aoTargets[a]}},h=function(){for(var a=0;a<b.s.aoTargets.length-
+1;a++)if(b.s.aoTargets[a].x!==b.s.aoTargets[a+1].x)return b.s.aoTargets[a]},f=function(){for(var a=b.s.aoTargets.length-1;0<a;a--)if(b.s.aoTargets[a].x!==b.s.aoTargets[a-1].x)return b.s.aoTargets[a]},k=1;k<this.s.aoTargets.length;k++){var n=d(k);n||(n=h());var q=n.x+(this.s.aoTargets[k].x-n.x)/2;if(this._fnIsLtr()){if(a<q){var l=n;break}}else if(a>q){l=n;break}}l?(this.dom.pointer.css("left",l.x),this.s.mouse.toIndex=l.to):(this.dom.pointer.css("left",f().x),this.s.mouse.toIndex=f().to);this.s.init.bRealtime&&
+c!==this.s.mouse.toIndex&&(this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex),this.s.mouse.fromIndex=this.s.mouse.toIndex,""===this.s.dt.oScroll.sX&&""===this.s.dt.oScroll.sY||this.s.dt.oInstance.fnAdjustColumnSizing(!1),this._fnRegions())},_fnMouseUp:function(a){d(r).off(".ColReorder");null!==this.dom.drag&&(this.dom.drag.remove(),this.dom.pointer.remove(),this.dom.drag=null,this.dom.pointer=null,this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex,
+!0),this._fnSetColumnIndexes(),""===this.s.dt.oScroll.sX&&""===this.s.dt.oScroll.sY||this.s.dt.oInstance.fnAdjustColumnSizing(!1),this.s.dt.oInstance.oApi._fnSaveState(this.s.dt),null!==this.s.reorderCallback&&this.s.reorderCallback.call(this))},_fnRegions:function(){var a=this.s.dt.aoColumns,b=this._fnIsLtr();this.s.aoTargets.splice(0,this.s.aoTargets.length);var c=d(this.s.dt.nTable).offset().left,g=[];d.each(a,function(a,f){if(f.bVisible&&"none"!==f.nTh.style.display){f=d(f.nTh);var h=f.offset().left;
+b&&(h+=f.outerWidth());g.push({index:a,bound:h});c=h}else g.push({index:a,bound:c})});var h=g[0];a=d(a[h.index].nTh).outerWidth();this.s.aoTargets.push({to:0,x:h.bound-a});for(h=0;h<g.length;h++){a=g[h];var f=a.index;a.index<this.s.mouse.fromIndex&&f++;this.s.aoTargets.push({to:f,x:a.bound})}0!==this.s.fixedRight&&this.s.aoTargets.splice(this.s.aoTargets.length-this.s.fixedRight);0!==this.s.fixed&&this.s.aoTargets.splice(0,this.s.fixed)},_fnCreateDragNode:function(){var a=""!==this.s.dt.oScroll.sX||
+""!==this.s.dt.oScroll.sY,b=this.s.dt.aoColumns[this.s.mouse.targetIndex].nTh,c=b.parentNode,g=c.parentNode,h=g.parentNode,f=d(b).clone();this.dom.drag=d(h.cloneNode(!1)).addClass("DTCR_clonedTable").append(d(g.cloneNode(!1)).append(d(c.cloneNode(!1)).append(f[0]))).css({position:"absolute",top:0,left:0,width:d(b).outerWidth(),height:d(b).outerHeight()}).appendTo("body");this.dom.pointer=d("<div></div>").addClass("DTCR_pointer").css({position:"absolute",top:a?d("div.dataTables_scroll",this.s.dt.nTableWrapper).offset().top:
+d(this.s.dt.nTable).offset().top,height:a?d("div.dataTables_scroll",this.s.dt.nTableWrapper).height():d(this.s.dt.nTable).height()}).appendTo("body")},_fnSetColumnIndexes:function(){d.each(this.s.dt.aoColumns,function(a,b){d(b.nTh).attr("data-column-index",a)})},_fnCursorPosition:function(a,b){return-1!==a.type.indexOf("touch")?a.originalEvent.touches[0][b]:a[b]},_fnIsLtr:function(){return"rtl"!==d(this.s.dt.nTable).css("direction")}});k.defaults={aiOrder:null,bEnable:!0,bRealtime:!0,iFixedColumnsLeft:0,
+iFixedColumnsRight:0,fnReorderCallback:null};k.version="1.5.2";d.fn.dataTable.ColReorder=k;d.fn.DataTable.ColReorder=k;"function"==typeof d.fn.dataTable&&"function"==typeof d.fn.dataTableExt.fnVersionCheck&&d.fn.dataTableExt.fnVersionCheck("1.10.8")?d.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInstance;a._colReorder?b.oApi._fnLog(a,1,"ColReorder attempted to initialise twice. Ignoring second"):(b=a.oInit,new k(a,b.colReorder||b.oColReorder||{}));return null},cFeature:"R",sFeature:"ColReorder"}):
+alert("Warning: ColReorder requires DataTables 1.10.8 or greater - www.datatables.net/download");d(r).on("preInit.dt.colReorder",function(a,b){if("dt"===a.namespace){a=b.oInit.colReorder;var c=y.defaults.colReorder;if(a||c)c=d.extend({},a,c),!1!==a&&new k(b,c)}});d.fn.dataTable.Api.register("colReorder.reset()",function(){return this.iterator("table",function(a){a._colReorder.fnReset()})});d.fn.dataTable.Api.register("colReorder.order()",function(a,b){return a?this.iterator("table",function(c){c._colReorder.fnOrder(a,
+b)}):this.context.length?this.context[0]._colReorder.fnOrder():null});d.fn.dataTable.Api.register("colReorder.transpose()",function(a,b){return this.context.length&&this.context[0]._colReorder?this.context[0]._colReorder.fnTranspose(a,b):a});d.fn.dataTable.Api.register("colReorder.move()",function(a,b,c,d){this.context.length&&(this.context[0]._colReorder.s.dt.oInstance.fnColReorder(a,b,c,d),this.context[0]._colReorder._fnSetColumnIndexes());return this});d.fn.dataTable.Api.register("colReorder.enable()",
+function(a){return this.iterator("table",function(b){b._colReorder&&b._colReorder.fnEnable(a)})});d.fn.dataTable.Api.register("colReorder.disable()",function(){return this.iterator("table",function(a){a._colReorder&&a._colReorder.fnDisable()})});return k});
+
+
+/*!
+   Copyright 2010-2018 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ FixedColumns 3.3.0
+ ©2010-2018 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(c,g,e){c instanceof String&&(c=String(c));for(var q=c.length,l=0;l<q;l++){var u=c[l];if(g.call(e,u,l,c))return{i:l,v:u}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(c,g,e){c!=Array.prototype&&c!=Object.prototype&&(c[g]=e.value)};$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global&&null!=global?global:c};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(c,g,e,q){if(g){e=$jscomp.global;c=c.split(".");for(q=0;q<c.length-1;q++){var l=c[q];l in e||(e[l]={});e=e[l]}c=c[c.length-1];q=e[c];g=g(q);g!=q&&null!=g&&$jscomp.defineProperty(e,c,{configurable:!0,writable:!0,value:g})}};$jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,e){return $jscomp.findInternal(this,c,e).v}},"es6","es3");
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(g){return c(g,window,document)}):"object"===typeof exports?module.exports=function(g,e){g||(g=window);e&&e.fn.dataTable||(e=require("datatables.net")(g,e).$);return c(e,g,g.document)}:c(jQuery,window,document)})(function(c,g,e,q){var l=c.fn.dataTable,u,p=function(a,b){var d=this;if(this instanceof p){if(b===q||!0===b)b={};var h=c.fn.dataTable.camelToHungarian;h&&(h(p.defaults,p.defaults,!0),h(p.defaults,
+b));a=(new c.fn.dataTable.Api(a)).settings()[0];this.s={dt:a,iTableColumns:a.aoColumns.length,aiOuterWidths:[],aiInnerWidths:[],rtl:"rtl"===c(a.nTable).css("direction")};this.dom={scroller:null,header:null,body:null,footer:null,grid:{wrapper:null,dt:null,left:{wrapper:null,head:null,body:null,foot:null},right:{wrapper:null,head:null,body:null,foot:null}},clone:{left:{header:null,body:null,footer:null},right:{header:null,body:null,footer:null}}};if(a._oFixedColumns)throw"FixedColumns already initialised on this table";
+a._oFixedColumns=this;a._bInitComplete?this._fnConstruct(b):a.oApi._fnCallbackReg(a,"aoInitComplete",function(){d._fnConstruct(b)},"FixedColumns")}else alert("FixedColumns warning: FixedColumns must be initialised with the 'new' keyword.")};c.extend(p.prototype,{fnUpdate:function(){this._fnDraw(!0)},fnRedrawLayout:function(){this._fnColCalc();this._fnGridLayout();this.fnUpdate()},fnRecalculateHeight:function(a){delete a._DTTC_iHeight;a.style.height="auto"},fnSetRowHeight:function(a,b){a.style.height=
+b+"px"},fnGetPosition:function(a){var b=this.s.dt.oInstance;if(c(a).parents(".DTFC_Cloned").length){if("tr"===a.nodeName.toLowerCase())return a=c(a).index(),b.fnGetPosition(c("tr",this.s.dt.nTBody)[a]);var d=c(a).index();a=c(a.parentNode).index();return[b.fnGetPosition(c("tr",this.s.dt.nTBody)[a]),d,b.oApi._fnVisibleToColumnIndex(this.s.dt,d)]}return b.fnGetPosition(a)},fnToFixedNode:function(a,b){var d;b<this.s.iLeftColumns?d=c(this.dom.clone.left.body).find("[data-dt-row="+a+"][data-dt-column="+
+b+"]"):b>=this.s.iRightColumns&&(d=c(this.dom.clone.right.body).find("[data-dt-row="+a+"][data-dt-column="+b+"]"));return d&&d.length?d[0]:(new c.fn.dataTable.Api(this.s.dt)).cell(a,b).node()},_fnConstruct:function(a){var b=this;if("function"!=typeof this.s.dt.oInstance.fnVersionCheck||!0!==this.s.dt.oInstance.fnVersionCheck("1.8.0"))alert("FixedColumns "+p.VERSION+" required DataTables 1.8.0 or later. Please upgrade your DataTables installation");else if(""===this.s.dt.oScroll.sX)this.s.dt.oInstance.oApi._fnLog(this.s.dt,
+1,"FixedColumns is not needed (no x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for column fixing when scrolling is not enabled");else{this.s=c.extend(!0,this.s,p.defaults,a);a=this.s.dt.oClasses;this.dom.grid.dt=c(this.s.dt.nTable).parents("div."+a.sScrollWrapper)[0];this.dom.scroller=c("div."+a.sScrollBody,this.dom.grid.dt)[0];this._fnColCalc();this._fnGridSetup();var d,h=!1;c(this.s.dt.nTableWrapper).on("mousedown.DTFC",function(a){0===a.button&&(h=!0,c(e).one("mouseup",
+function(){h=!1}))});c(this.dom.scroller).on("mouseover.DTFC touchstart.DTFC",function(){h||(d="main")}).on("scroll.DTFC",function(a){!d&&a.originalEvent&&(d="main");"main"===d&&(0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.scroller.scrollTop),0<b.s.iRightColumns&&(b.dom.grid.right.liner.scrollTop=b.dom.scroller.scrollTop))});var f="onwheel"in e.createElement("div")?"wheel.DTFC":"mousewheel.DTFC";if(0<b.s.iLeftColumns)c(b.dom.grid.left.liner).on("mouseover.DTFC touchstart.DTFC",function(){h||
+(d="left")}).on("scroll.DTFC",function(a){!d&&a.originalEvent&&(d="left");"left"===d&&(b.dom.scroller.scrollTop=b.dom.grid.left.liner.scrollTop,0<b.s.iRightColumns&&(b.dom.grid.right.liner.scrollTop=b.dom.grid.left.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});if(0<b.s.iRightColumns)c(b.dom.grid.right.liner).on("mouseover.DTFC touchstart.DTFC",function(){h||(d="right")}).on("scroll.DTFC",function(a){!d&&a.originalEvent&&
+(d="right");"right"===d&&(b.dom.scroller.scrollTop=b.dom.grid.right.liner.scrollTop,0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.grid.right.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});c(g).on("resize.DTFC",function(){b._fnGridLayout.call(b)});var m=!0,k=c(this.s.dt.nTable);k.on("draw.dt.DTFC",function(){b._fnColCalc();b._fnDraw.call(b,m);m=!1}).on("column-sizing.dt.DTFC",function(){b._fnColCalc();
+b._fnGridLayout(b)}).on("column-visibility.dt.DTFC",function(a,c,d,f,h){if(h===q||h)b._fnColCalc(),b._fnGridLayout(b),b._fnDraw(!0)}).on("select.dt.DTFC deselect.dt.DTFC",function(a,c,d,f){"dt"===a.namespace&&b._fnDraw(!1)}).on("destroy.dt.DTFC",function(){k.off(".DTFC");c(b.dom.scroller).off(".DTFC");c(g).off(".DTFC");c(b.s.dt.nTableWrapper).off(".DTFC");c(b.dom.grid.left.liner).off(".DTFC "+f);c(b.dom.grid.left.wrapper).remove();c(b.dom.grid.right.liner).off(".DTFC "+f);c(b.dom.grid.right.wrapper).remove()});
+this._fnGridLayout();this.s.dt.oInstance.fnDraw(!1)}},_fnColCalc:function(){var a=this,b=0,d=0;this.s.aiInnerWidths=[];this.s.aiOuterWidths=[];c.each(this.s.dt.aoColumns,function(h,f){f=c(f.nTh);if(f.filter(":visible").length){var m=f.outerWidth();if(0===a.s.aiOuterWidths.length){var k=c(a.s.dt.nTable).css("border-left-width");m+="string"===typeof k&&-1===k.indexOf("px")?1:parseInt(k,10)}a.s.aiOuterWidths.length===a.s.dt.aoColumns.length-1&&(k=c(a.s.dt.nTable).css("border-right-width"),m+="string"===
+typeof k&&-1===k.indexOf("px")?1:parseInt(k,10));a.s.aiOuterWidths.push(m);a.s.aiInnerWidths.push(f.width());h<a.s.iLeftColumns&&(b+=m);a.s.iTableColumns-a.s.iRightColumns<=h&&(d+=m)}else a.s.aiInnerWidths.push(0),a.s.aiOuterWidths.push(0)});this.s.iLeftWidth=b;this.s.iRightWidth=d},_fnGridSetup:function(){var a=this._fnDTOverflow();this.dom.body=this.s.dt.nTable;this.dom.header=this.s.dt.nTHead.parentNode;this.dom.header.parentNode.parentNode.style.position="relative";var b=c('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;"><div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;" aria-hidden="true"><div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div><div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; height:0; overflow:hidden;"><div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div></div><div class="DTFC_RightWrapper" style="position:absolute; top:0; right:0;" aria-hidden="true"><div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div><div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; height:0; overflow:hidden;"><div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div></div></div>')[0],
+d=b.childNodes[0],h=b.childNodes[1];this.dom.grid.dt.parentNode.insertBefore(b,this.dom.grid.dt);b.appendChild(this.dom.grid.dt);this.dom.grid.wrapper=b;0<this.s.iLeftColumns&&(this.dom.grid.left.wrapper=d,this.dom.grid.left.head=d.childNodes[0],this.dom.grid.left.body=d.childNodes[1],this.dom.grid.left.liner=c("div.DTFC_LeftBodyLiner",b)[0],b.appendChild(d));if(0<this.s.iRightColumns){this.dom.grid.right.wrapper=h;this.dom.grid.right.head=h.childNodes[0];this.dom.grid.right.body=h.childNodes[1];
+this.dom.grid.right.liner=c("div.DTFC_RightBodyLiner",b)[0];h.style.right=a.bar+"px";var f=c("div.DTFC_RightHeadBlocker",b)[0];f.style.width=a.bar+"px";f.style.right=-a.bar+"px";this.dom.grid.right.headBlock=f;f=c("div.DTFC_RightFootBlocker",b)[0];f.style.width=a.bar+"px";f.style.right=-a.bar+"px";this.dom.grid.right.footBlock=f;b.appendChild(h)}this.s.dt.nTFoot&&(this.dom.footer=this.s.dt.nTFoot.parentNode,0<this.s.iLeftColumns&&(this.dom.grid.left.foot=d.childNodes[2]),0<this.s.iRightColumns&&(this.dom.grid.right.foot=
+h.childNodes[2]));this.s.rtl&&c("div.DTFC_RightHeadBlocker",b).css({left:-a.bar+"px",right:""})},_fnGridLayout:function(){var a=this,b=this.dom.grid;c(b.wrapper).width();var d=this.s.dt.nTable.parentNode.offsetHeight,h=this.s.dt.nTable.parentNode.parentNode.offsetHeight,f=this._fnDTOverflow(),m=this.s.iLeftWidth,k=this.s.iRightWidth,x="rtl"===c(this.dom.body).css("direction"),w=function(b,d){f.bar?a._firefoxScrollError()?34<c(b).height()&&(b.style.width=d+f.bar+"px"):b.style.width=d+f.bar+"px":(b.style.width=
+d+20+"px",b.style.paddingRight="20px",b.style.boxSizing="border-box")};f.x&&(d-=f.bar);b.wrapper.style.height=h+"px";0<this.s.iLeftColumns&&(h=b.left.wrapper,h.style.width=m+"px",h.style.height="1px",x?(h.style.left="",h.style.right=0):(h.style.left=0,h.style.right=""),b.left.body.style.height=d+"px",b.left.foot&&(b.left.foot.style.top=(f.x?f.bar:0)+"px"),w(b.left.liner,m),b.left.liner.style.height=d+"px",b.left.liner.style.maxHeight=d+"px");0<this.s.iRightColumns&&(h=b.right.wrapper,h.style.width=
+k+"px",h.style.height="1px",this.s.rtl?(h.style.left=f.y?f.bar+"px":0,h.style.right=""):(h.style.left="",h.style.right=f.y?f.bar+"px":0),b.right.body.style.height=d+"px",b.right.foot&&(b.right.foot.style.top=(f.x?f.bar:0)+"px"),w(b.right.liner,k),b.right.liner.style.height=d+"px",b.right.liner.style.maxHeight=d+"px",b.right.headBlock.style.display=f.y?"block":"none",b.right.footBlock.style.display=f.y?"block":"none")},_fnDTOverflow:function(){var a=this.s.dt.nTable,b=a.parentNode,c={x:!1,y:!1,bar:this.s.dt.oScroll.iBarWidth};
+a.offsetWidth>b.clientWidth&&(c.x=!0);a.offsetHeight>b.clientHeight&&(c.y=!0);return c},_fnDraw:function(a){this._fnGridLayout();this._fnCloneLeft(a);this._fnCloneRight(a);null!==this.s.fnDrawCallback&&this.s.fnDrawCallback.call(this,this.dom.clone.left,this.dom.clone.right);c(this).trigger("draw.dtfc",{leftClone:this.dom.clone.left,rightClone:this.dom.clone.right})},_fnCloneRight:function(a){if(!(0>=this.s.iRightColumns)){var b,c=[];for(b=this.s.iTableColumns-this.s.iRightColumns;b<this.s.iTableColumns;b++)this.s.dt.aoColumns[b].bVisible&&
+c.push(b);this._fnClone(this.dom.clone.right,this.dom.grid.right,c,a)}},_fnCloneLeft:function(a){if(!(0>=this.s.iLeftColumns)){var b,c=[];for(b=0;b<this.s.iLeftColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.left,this.dom.grid.left,c,a)}},_fnCopyLayout:function(a,b,d){for(var h=[],f=[],m=[],k=0,x=a.length;k<x;k++){var w=[];w.nTr=c(a[k].nTr).clone(d,!1)[0];for(var e=0,n=this.s.iTableColumns;e<n;e++)if(-1!==c.inArray(e,b)){var g=c.inArray(a[k][e].cell,m);-1===g?(g=
+c(a[k][e].cell).clone(d,!1)[0],f.push(g),m.push(a[k][e].cell),w.push({cell:g,unique:a[k][e].unique})):w.push({cell:f[g],unique:a[k][e].unique})}h.push(w)}return h},_fnClone:function(a,b,d,h){var f=this,m,k,e=this.s.dt;if(h){c(a.header).remove();a.header=c(this.dom.header).clone(!0,!1)[0];a.header.className+=" DTFC_Cloned";a.header.style.width="100%";b.head.appendChild(a.header);var g=this._fnCopyLayout(e.aoHeader,d,!0);var l=c(">thead",a.header);l.empty();var n=0;for(m=g.length;n<m;n++)l[0].appendChild(g[n].nTr);
+e.oApi._fnDrawHead(e,g,!0)}else{g=this._fnCopyLayout(e.aoHeader,d,!1);var p=[];e.oApi._fnDetectHeader(p,c(">thead",a.header)[0]);n=0;for(m=g.length;n<m;n++){var t=0;for(l=g[n].length;t<l;t++)p[n][t].cell.className=g[n][t].cell.className,c("span.DataTables_sort_icon",p[n][t].cell).each(function(){this.className=c("span.DataTables_sort_icon",g[n][t].cell)[0].className})}}this._fnEqualiseHeights("thead",this.dom.header,a.header);"auto"==this.s.sHeightMatch&&c(">tbody>tr",f.dom.body).css("height","auto");
+null!==a.body&&(c(a.body).remove(),a.body=null);a.body=c(this.dom.body).clone(!0)[0];a.body.className+=" DTFC_Cloned";a.body.style.paddingBottom=e.oScroll.iBarWidth+"px";a.body.style.marginBottom=2*e.oScroll.iBarWidth+"px";null!==a.body.getAttribute("id")&&a.body.removeAttribute("id");c(">thead>tr",a.body).empty();c(">tfoot",a.body).remove();var u=c("tbody",a.body)[0];c(u).empty();if(0<e.aiDisplay.length){m=c(">thead>tr",a.body)[0];for(k=0;k<d.length;k++){var v=d[k];var r=c(e.aoColumns[v].nTh).clone(!0)[0];
+r.innerHTML="";l=r.style;l.paddingTop="0";l.paddingBottom="0";l.borderTopWidth="0";l.borderBottomWidth="0";l.height=0;l.width=f.s.aiInnerWidths[v]+"px";m.appendChild(r)}c(">tbody>tr",f.dom.body).each(function(a){a=!1===f.s.dt.oFeatures.bServerSide?f.s.dt.aiDisplay[f.s.dt._iDisplayStart+a]:a;var b=f.s.dt.aoData[a].anCells||c(this).children("td, th"),e=this.cloneNode(!1);e.removeAttribute("id");e.setAttribute("data-dt-row",a);for(k=0;k<d.length;k++)v=d[k],0<b.length&&(r=c(b[v]).clone(!0,!0)[0],r.removeAttribute("id"),
+r.setAttribute("data-dt-row",a),r.setAttribute("data-dt-column",v),e.appendChild(r));u.appendChild(e)})}else c(">tbody>tr",f.dom.body).each(function(a){r=this.cloneNode(!0);r.className+=" DTFC_NoData";c("td",r).html("");u.appendChild(r)});a.body.style.width="100%";a.body.style.margin="0";a.body.style.padding="0";e.oScroller!==q&&(m=e.oScroller.dom.force,b.forcer?b.forcer.style.height=m.style.height:(b.forcer=m.cloneNode(!0),b.liner.appendChild(b.forcer)));b.liner.appendChild(a.body);this._fnEqualiseHeights("tbody",
+f.dom.body,a.body);if(null!==e.nTFoot){if(h){null!==a.footer&&a.footer.parentNode.removeChild(a.footer);a.footer=c(this.dom.footer).clone(!0,!0)[0];a.footer.className+=" DTFC_Cloned";a.footer.style.width="100%";b.foot.appendChild(a.footer);g=this._fnCopyLayout(e.aoFooter,d,!0);b=c(">tfoot",a.footer);b.empty();n=0;for(m=g.length;n<m;n++)b[0].appendChild(g[n].nTr);e.oApi._fnDrawHead(e,g,!0)}else for(g=this._fnCopyLayout(e.aoFooter,d,!1),b=[],e.oApi._fnDetectHeader(b,c(">tfoot",a.footer)[0]),n=0,m=g.length;n<
+m;n++)for(t=0,l=g[n].length;t<l;t++)b[n][t].cell.className=g[n][t].cell.className;this._fnEqualiseHeights("tfoot",this.dom.footer,a.footer)}b=e.oApi._fnGetUniqueThs(e,c(">thead",a.header)[0]);c(b).each(function(a){v=d[a];this.style.width=f.s.aiInnerWidths[v]+"px"});null!==f.s.dt.nTFoot&&(b=e.oApi._fnGetUniqueThs(e,c(">tfoot",a.footer)[0]),c(b).each(function(a){v=d[a];this.style.width=f.s.aiInnerWidths[v]+"px"}))},_fnGetTrNodes:function(a){for(var b=[],c=0,e=a.childNodes.length;c<e;c++)"TR"==a.childNodes[c].nodeName.toUpperCase()&&
+b.push(a.childNodes[c]);return b},_fnEqualiseHeights:function(a,b,d){if("none"!=this.s.sHeightMatch||"thead"===a||"tfoot"===a){var e=b.getElementsByTagName(a)[0];d=d.getElementsByTagName(a)[0];a=c(">"+a+">tr:eq(0)",b).children(":first");a.outerHeight();a.height();e=this._fnGetTrNodes(e);b=this._fnGetTrNodes(d);var f=[];d=0;for(a=b.length;d<a;d++){var g=e[d].offsetHeight;var k=b[d].offsetHeight;g=k>g?k:g;"semiauto"==this.s.sHeightMatch&&(e[d]._DTTC_iHeight=g);f.push(g)}d=0;for(a=b.length;d<a;d++)b[d].style.height=
+f[d]+"px",e[d].style.height=f[d]+"px"}},_firefoxScrollError:function(){if(u===q){var a=c("<div/>").css({position:"absolute",top:0,left:0,height:10,width:50,overflow:"scroll"}).appendTo("body");u=a[0].clientWidth===a[0].offsetWidth&&0!==this._fnDTOverflow().bar;a.remove()}return u}});p.defaults={iLeftColumns:1,iRightColumns:0,fnDrawCallback:null,sHeightMatch:"semiauto"};p.version="3.3.0";l.Api.register("fixedColumns()",function(){return this});l.Api.register("fixedColumns().update()",function(){return this.iterator("table",
+function(a){a._oFixedColumns&&a._oFixedColumns.fnUpdate()})});l.Api.register("fixedColumns().relayout()",function(){return this.iterator("table",function(a){a._oFixedColumns&&a._oFixedColumns.fnRedrawLayout()})});l.Api.register("rows().recalcHeight()",function(){return this.iterator("row",function(a,b){a._oFixedColumns&&a._oFixedColumns.fnRecalculateHeight(this.row(b).node())})});l.Api.register("fixedColumns().rowIndex()",function(a){a=c(a);return a.parents(".DTFC_Cloned").length?this.rows({page:"current"}).indexes()[a.index()]:
+this.row(a).index()});l.Api.register("fixedColumns().cellIndex()",function(a){a=c(a);if(a.parents(".DTFC_Cloned").length){var b=a.parent().index();b=this.rows({page:"current"}).indexes()[b];a=a.parents(".DTFC_LeftWrapper").length?a.index():this.columns().flatten().length-this.context[0]._oFixedColumns.s.iRightColumns+a.index();return{row:b,column:this.column.index("toData",a),columnVisible:a}}return this.cell(a).index()});l.Api.registerPlural("cells().fixedNodes()","cell().fixedNode()",function(){return this.iterator("cell",
+function(a,b,c){return a._oFixedColumns?a._oFixedColumns.fnToFixedNode(b,c):this.node()},1)});c(e).on("init.dt.fixedColumns",function(a,b){if("dt"===a.namespace){a=b.oInit.fixedColumns;var d=l.defaults.fixedColumns;if(a||d)d=c.extend({},a,d),!1!==a&&new p(b,d)}});c.fn.dataTable.FixedColumns=p;return c.fn.DataTable.FixedColumns=p});
+
+
+/*!
+   Copyright 2009-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ FixedHeader 3.1.6
+ ©2009-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(c,f,g){c instanceof String&&(c=String(c));for(var l=c.length,h=0;h<l;h++){var n=c[h];if(f.call(g,n,h,c))return{i:h,v:n}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(c,f,g){c!=Array.prototype&&c!=Object.prototype&&(c[f]=g.value)};$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global&&null!=global?global:c};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(c,f,g,l){if(f){g=$jscomp.global;c=c.split(".");for(l=0;l<c.length-1;l++){var h=c[l];h in g||(g[h]={});g=g[h]}c=c[c.length-1];l=g[c];f=f(l);f!=l&&null!=f&&$jscomp.defineProperty(g,c,{configurable:!0,writable:!0,value:f})}};$jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,g){return $jscomp.findInternal(this,c,g).v}},"es6","es3");
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(f){return c(f,window,document)}):"object"===typeof exports?module.exports=function(f,g){f||(f=window);g&&g.fn.dataTable||(g=require("datatables.net")(f,g).$);return c(g,f,f.document)}:c(jQuery,window,document)})(function(c,f,g,l){var h=c.fn.dataTable,n=0,m=function(a,b){if(!(this instanceof m))throw"FixedHeader must be initialised with the 'new' keyword.";!0===b&&(b={});a=new h.Api(a);this.c=c.extend(!0,
+{},m.defaults,b);this.s={dt:a,position:{theadTop:0,tbodyTop:0,tfootTop:0,tfootBottom:0,width:0,left:0,tfootHeight:0,theadHeight:0,windowHeight:c(f).height(),visible:!0},headerMode:null,footerMode:null,autoWidth:a.settings()[0].oFeatures.bAutoWidth,namespace:".dtfc"+n++,scrollLeft:{header:-1,footer:-1},enable:!0};this.dom={floatingHeader:null,thead:c(a.table().header()),tbody:c(a.table().body()),tfoot:c(a.table().footer()),header:{host:null,floating:null,placeholder:null},footer:{host:null,floating:null,
+placeholder:null}};this.dom.header.host=this.dom.thead.parent();this.dom.footer.host=this.dom.tfoot.parent();a=a.settings()[0];if(a._fixedHeader)throw"FixedHeader already initialised on table "+a.nTable.id;a._fixedHeader=this;this._constructor()};c.extend(m.prototype,{destroy:function(){this.s.dt.off(".dtfc");c(f).off(this.s.namespace);this.c.header&&this._modeChange("in-place","header",!0);this.c.footer&&this.dom.tfoot.length&&this._modeChange("in-place","footer",!0)},enable:function(a,b){this.s.enable=
+a;if(b||b===l)this._positions(),this._scroll(!0)},enabled:function(){return this.s.enable},headerOffset:function(a){a!==l&&(this.c.headerOffset=a,this.update());return this.c.headerOffset},footerOffset:function(a){a!==l&&(this.c.footerOffset=a,this.update());return this.c.footerOffset},update:function(){var a=this.s.dt.table().node();c(a).is(":visible")?this.enable(!0,!1):this.enable(!1,!1);this._positions();this._scroll(!0)},_constructor:function(){var a=this,b=this.s.dt;c(f).on("scroll"+this.s.namespace,
+function(){a._scroll()}).on("resize"+this.s.namespace,h.util.throttle(function(){a.s.position.windowHeight=c(f).height();a.update()},50));var e=c(".fh-fixedHeader");!this.c.headerOffset&&e.length&&(this.c.headerOffset=e.outerHeight());e=c(".fh-fixedFooter");!this.c.footerOffset&&e.length&&(this.c.footerOffset=e.outerHeight());b.on("column-reorder.dt.dtfc column-visibility.dt.dtfc draw.dt.dtfc column-sizing.dt.dtfc responsive-display.dt.dtfc",function(){a.update()});b.on("destroy.dtfc",function(){a.destroy()});
+this._positions();this._scroll()},_clone:function(a,b){var e=this.s.dt,d=this.dom[a],k="header"===a?this.dom.thead:this.dom.tfoot;!b&&d.floating?d.floating.removeClass("fixedHeader-floating fixedHeader-locked"):(d.floating&&(d.placeholder.remove(),this._unsize(a),d.floating.children().detach(),d.floating.remove()),d.floating=c(e.table().node().cloneNode(!1)).css("table-layout","fixed").attr("aria-hidden","true").removeAttr("id").append(k).appendTo("body"),d.placeholder=k.clone(!1),d.placeholder.find("*[id]").removeAttr("id"),
+d.host.prepend(d.placeholder),this._matchWidths(d.placeholder,d.floating))},_matchWidths:function(a,b){var e=function(b){return c(b,a).map(function(){return c(this).width()}).toArray()},d=function(a,d){c(a,b).each(function(a){c(this).css({width:d[a],minWidth:d[a]})})},k=e("th");e=e("td");d("th",k);d("td",e)},_unsize:function(a){var b=this.dom[a].floating;b&&("footer"===a||"header"===a&&!this.s.autoWidth)?c("th, td",b).css({width:"",minWidth:""}):b&&"header"===a&&c("th, td",b).css("min-width","")},
+_horizontal:function(a,b){var c=this.dom[a],d=this.s.position,k=this.s.scrollLeft;c.floating&&k[a]!==b&&(c.floating.css("left",d.left-b),k[a]=b)},_modeChange:function(a,b,e){var d=this.dom[b],k=this.s.position,f=this.dom["footer"===b?"tfoot":"thead"],h=c.contains(f[0],g.activeElement)?g.activeElement:null;h&&h.blur();"in-place"===a?(d.placeholder&&(d.placeholder.remove(),d.placeholder=null),this._unsize(b),"header"===b?d.host.prepend(f):d.host.append(f),d.floating&&(d.floating.remove(),d.floating=
+null)):"in"===a?(this._clone(b,e),d.floating.addClass("fixedHeader-floating").css("header"===b?"top":"bottom",this.c[b+"Offset"]).css("left",k.left+"px").css("width",k.width+"px"),"footer"===b&&d.floating.css("top","")):"below"===a?(this._clone(b,e),d.floating.addClass("fixedHeader-locked").css("top",k.tfootTop-k.theadHeight).css("left",k.left+"px").css("width",k.width+"px")):"above"===a&&(this._clone(b,e),d.floating.addClass("fixedHeader-locked").css("top",k.tbodyTop).css("left",k.left+"px").css("width",
+k.width+"px"));h&&h!==g.activeElement&&setTimeout(function(){h.focus()},10);this.s.scrollLeft.header=-1;this.s.scrollLeft.footer=-1;this.s[b+"Mode"]=a},_positions:function(){var a=this.s.dt.table(),b=this.s.position,e=this.dom;a=c(a.node());var d=a.children("thead"),k=a.children("tfoot");e=e.tbody;b.visible=a.is(":visible");b.width=a.outerWidth();b.left=a.offset().left;b.theadTop=d.offset().top;b.tbodyTop=e.offset().top;b.tbodyHeight=e.outerHeight();b.theadHeight=b.tbodyTop-b.theadTop;k.length?(b.tfootTop=
+k.offset().top,b.tfootBottom=b.tfootTop+k.outerHeight(),b.tfootHeight=b.tfootBottom-b.tfootTop):(b.tfootTop=b.tbodyTop+e.outerHeight(),b.tfootBottom=b.tfootTop,b.tfootHeight=b.tfootTop)},_scroll:function(a){var b=c(g).scrollTop(),e=c(g).scrollLeft(),d=this.s.position,k;if(this.c.header){var f=this.s.enable?!d.visible||b<=d.theadTop-this.c.headerOffset?"in-place":b<=d.tfootTop-d.theadHeight-this.c.headerOffset?"in":"below":"in-place";(a||f!==this.s.headerMode)&&this._modeChange(f,"header",a);this._horizontal("header",
+e)}this.c.footer&&this.dom.tfoot.length&&(this.s.enable&&(k=!d.visible||b+d.windowHeight>=d.tfootBottom+this.c.footerOffset?"in-place":d.windowHeight+b>d.tbodyTop+d.tfootHeight+this.c.footerOffset?"in":"above"),(a||k!==this.s.footerMode)&&this._modeChange(k,"footer",a),this._horizontal("footer",e))}});m.version="3.1.6";m.defaults={header:!0,footer:!1,headerOffset:0,footerOffset:0};c.fn.dataTable.FixedHeader=m;c.fn.DataTable.FixedHeader=m;c(g).on("init.dt.dtfh",function(a,b,e){"dt"===a.namespace&&
+(a=b.oInit.fixedHeader,e=h.defaults.fixedHeader,!a&&!e||b._fixedHeader||(e=c.extend({},e,a),!1!==a&&new m(b,e)))});h.Api.register("fixedHeader()",function(){});h.Api.register("fixedHeader.adjust()",function(){return this.iterator("table",function(a){(a=a._fixedHeader)&&a.update()})});h.Api.register("fixedHeader.enable()",function(a){return this.iterator("table",function(b){b=b._fixedHeader;a=a!==l?a:!0;b&&a!==b.enabled()&&b.enable(a)})});h.Api.register("fixedHeader.enabled()",function(){return this.context.length&&
+fh?fh.enabled():!1});h.Api.register("fixedHeader.disable()",function(){return this.iterator("table",function(a){(a=a._fixedHeader)&&a.enabled()&&a.enable(!1)})});c.each(["header","footer"],function(a,b){h.Api.register("fixedHeader."+b+"Offset()",function(a){var c=this.context;return a===l?c.length&&c[0]._fixedHeader?c[0]._fixedHeader[b+"Offset"]():l:this.iterator("table",function(c){if(c=c._fixedHeader)c[b+"Offset"](a)})})});return m});
+
+
+/*!
+   Copyright 2009-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ KeyTable 2.5.1
+ ©2009-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(b){var f=0;return function(){return f<b.length?{done:!1,value:b[f++]}:{done:!0}}};$jscomp.arrayIterator=function(b){return{next:$jscomp.arrayIteratorImpl(b)}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(b,f,k){b!=Array.prototype&&b!=Object.prototype&&(b[f]=k.value)};$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};
+$jscomp.SymbolClass=function(b,f){this.$jscomp$symbol$id_=b;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:f})};$jscomp.SymbolClass.prototype.toString=function(){return this.$jscomp$symbol$id_};$jscomp.Symbol=function(){function b(k){if(this instanceof b)throw new TypeError("Symbol is not a constructor");return new $jscomp.SymbolClass($jscomp.SYMBOL_PREFIX+(k||"")+"_"+f++,k)}var f=0;return b}();
+$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.iterator;b||(b=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("Symbol.iterator"));"function"!=typeof Array.prototype[b]&&$jscomp.defineProperty(Array.prototype,b,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}});$jscomp.initSymbolIterator=function(){}};
+$jscomp.initSymbolAsyncIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.asyncIterator;b||(b=$jscomp.global.Symbol.asyncIterator=$jscomp.global.Symbol("Symbol.asyncIterator"));$jscomp.initSymbolAsyncIterator=function(){}};$jscomp.iteratorPrototype=function(b){$jscomp.initSymbolIterator();b={next:b};b[$jscomp.global.Symbol.iterator]=function(){return this};return b};
+$jscomp.iteratorFromArray=function(b,f){$jscomp.initSymbolIterator();b instanceof String&&(b+="");var k=0,l={next:function(){if(k<b.length){var g=k++;return{value:f(g,b[g]),done:!1}}l.next=function(){return{done:!0,value:void 0}};return l.next()}};l[Symbol.iterator]=function(){return l};return l};
+$jscomp.polyfill=function(b,f,k,l){if(f){k=$jscomp.global;b=b.split(".");for(l=0;l<b.length-1;l++){var g=b[l];g in k||(k[g]={});k=k[g]}b=b[b.length-1];l=k[b];f=f(l);f!=l&&null!=f&&$jscomp.defineProperty(k,b,{configurable:!0,writable:!0,value:f})}};$jscomp.polyfill("Array.prototype.keys",function(b){return b?b:function(){return $jscomp.iteratorFromArray(this,function(b){return b})}},"es6","es3");
+(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(f){return b(f,window,document)}):"object"===typeof exports?module.exports=function(f,k){f||(f=window);k&&k.fn.dataTable||(k=require("datatables.net")(f,k).$);return b(k,f,f.document)}:b(jQuery,window,document)})(function(b,f,k,l){var g=b.fn.dataTable,t=0,p=function(a,c){if(!g.versionCheck||!g.versionCheck("1.10.8"))throw"KeyTable requires DataTables 1.10.8 or newer";this.c=b.extend(!0,{},g.defaults.keyTable,
+p.defaults,c);this.s={dt:new g.Api(a),enable:!0,focusDraw:!1,waitingForDraw:!1,lastFocus:null,namespace:".keyTable-"+t++};this.dom={};a=this.s.dt.settings()[0];if(c=a.keytable)return c;a.keytable=this;this._constructor()};b.extend(p.prototype,{blur:function(){this._blur()},enable:function(a){this.s.enable=a},focus:function(a,c){this._focus(this.s.dt.cell(a,c))},focused:function(a){if(!this.s.lastFocus)return!1;var c=this.s.lastFocus.cell.index();return a.row===c.row&&a.column===c.column},_constructor:function(){this._tabInput();
+var a=this,c=this.s.dt,e=b(c.table().node()),d=this.s.namespace,m=!1;"static"===e.css("position")&&e.css("position","relative");b(c.table().body()).on("click"+d,"th, td",function(b){if(!1!==a.s.enable){var d=c.cell(this);d.any()&&a._focus(d,null,!1,b)}});b(k).on("keydown"+d,function(c){m||a._key(c)});if(this.c.blurable)b(k).on("mousedown"+d,function(d){b(d.target).parents(".dataTables_filter").length&&a._blur();b(d.target).parents().filter(c.table().container()).length||b(d.target).parents("div.DTE").length||
+b(d.target).parents("div.editor-datetime").length||b(d.target).parents().filter(".DTFC_Cloned").length||a._blur()});if(this.c.editor){var q=this.c.editor;q.on("open.keyTableMain",function(c,b,e){"inline"!==b&&a.s.enable&&(a.enable(!1),q.one("close"+d,function(){a.enable(!0)}))});if(this.c.editOnFocus)c.on("key-focus"+d+" key-refocus"+d,function(c,b,d,e){a._editor(null,e,!0)});c.on("key"+d,function(c,b,d,e,m){a._editor(d,m,!1)});b(c.table().body()).on("dblclick"+d,"th, td",function(b){!1!==a.s.enable&&
+c.cell(this).any()&&a._editor(null,b,!0)});q.on("preSubmit",function(){m=!0}).on("preSubmitCancelled",function(){m=!1}).on("submitComplete",function(){m=!1})}if(c.settings()[0].oFeatures.bStateSave)c.on("stateSaveParams"+d,function(b,c,d){d.keyTable=a.s.lastFocus?a.s.lastFocus.cell.index():null});c.on("draw"+d,function(d){if(!a.s.focusDraw){var e=a.s.lastFocus;if(e&&e.node&&b(e.node).closest("body")===k.body){e=a.s.lastFocus.relative;var m=c.page.info(),h=e.row+m.start;0!==m.recordsDisplay&&(h>=m.recordsDisplay&&
+(h=m.recordsDisplay-1),a._focus(h,e.column,!0,d))}}});this.c.clipboard&&this._clipboard();c.on("destroy"+d,function(){a._blur(!0);c.off(d);b(c.table().body()).off("click"+d,"th, td").off("dblclick"+d,"th, td");b(k).off("mousedown"+d).off("keydown"+d).off("copy"+d).off("paste"+d)});var h=c.state.loaded();if(h&&h.keyTable)c.one("init",function(){var a=c.cell(h.keyTable);a.any()&&a.focus()});else this.c.focus&&c.cell(this.c.focus).focus()},_blur:function(a){if(this.s.enable&&this.s.lastFocus){var c=
+this.s.lastFocus.cell;b(c.node()).removeClass(this.c.className);this.s.lastFocus=null;a||(this._updateFixedColumns(c.index().column),this._emitEvent("key-blur",[this.s.dt,c]))}},_clipboard:function(){var a=this.s.dt,c=this,e=this.s.namespace;f.getSelection&&(b(k).on("copy"+e,function(a){a=a.originalEvent;var b=f.getSelection().toString(),d=c.s.lastFocus;!b&&d&&(a.clipboardData.setData("text/plain",d.cell.render(c.c.clipboardOrthogonal)),a.preventDefault())}),b(k).on("paste"+e,function(b){b=b.originalEvent;
+var d=c.s.lastFocus,e=k.activeElement,h=c.c.editor,n;!d||e&&"body"!==e.nodeName.toLowerCase()||(b.preventDefault(),f.clipboardData&&f.clipboardData.getData?n=f.clipboardData.getData("Text"):b.clipboardData&&b.clipboardData.getData&&(n=b.clipboardData.getData("text/plain")),h?h.inline(d.cell.index()).set(h.displayed()[0],n).submit():(d.cell.data(n),a.draw(!1)))}))},_columns:function(){var a=this.s.dt,b=a.columns(this.c.columns).indexes(),e=[];a.columns(":visible").every(function(a){-1!==b.indexOf(a)&&
+e.push(a)});return e},_editor:function(a,c,e){var d=this,m=this.s.dt,f=this.c.editor,h=this.s.lastFocus.cell,n=this.s.namespace;if(!(b("div.DTE",h.node()).length||null!==a&&(0<=a&&9>=a||11===a||12===a||14<=a&&31>=a||112<=a&&123>=a||127<=a&&159>=a))){c.stopPropagation();13===a&&c.preventDefault();var g=function(){f.one("open"+n,function(){f.off("cancelOpen"+n);e||b("div.DTE_Field_InputControl input, div.DTE_Field_InputControl textarea").select();m.keys.enable(e?"tab-only":"navigation-only");m.on("key-blur.editor",
+function(a,b,c){f.displayed()&&c.node()===h.node()&&f.submit()});e&&b(m.table().container()).addClass("dtk-focus-alt");f.on("preSubmitCancelled"+n,function(){setTimeout(function(){d._focus(h,null,!1)},50)});f.on("submitUnsuccessful"+n,function(){d._focus(h,null,!1)});f.one("close",function(){m.keys.enable(!0);m.off("key-blur.editor");f.off(n);b(m.table().container()).removeClass("dtk-focus-alt")})}).one("cancelOpen"+n,function(){f.off(n)}).inline(h.index())};13===a?(e=!0,b(k).one("keyup",function(){g()})):
+g()}},_emitEvent:function(a,c){this.s.dt.iterator("table",function(e,d){b(e.nTable).triggerHandler(a,c)})},_focus:function(a,c,e,d){var m=this,g=this.s.dt,h=g.page.info(),n=this.s.lastFocus;d||(d=null);if(this.s.enable){if("number"!==typeof a){if(!a.any())return;var r=a.index();c=r.column;a=g.rows({filter:"applied",order:"applied"}).indexes().indexOf(r.row);if(0>a)return;h.serverSide&&(a+=h.start)}if(-1!==h.length&&(a<h.start||a>=h.start+h.length))this.s.focusDraw=!0,this.s.waitingForDraw=!0,g.one("draw",
+function(){m.s.focusDraw=!1;m.s.waitingForDraw=!1;m._focus(a,c,l,d)}).page(Math.floor(a/h.length)).draw(!1);else if(-1!==b.inArray(c,this._columns())){h.serverSide&&(a-=h.start);h=g.cells(null,c,{search:"applied",order:"applied"}).flatten();h=g.cell(h[a]);if(n){if(n.node===h.node()){this._emitEvent("key-refocus",[this.s.dt,h,d||null]);return}this._blur()}this._removeOtherFocus();n=b(h.node());n.addClass(this.c.className);this._updateFixedColumns(c);if(e===l||!0===e)this._scroll(b(f),b(k.body),n,"offset"),
+e=g.table().body().parentNode,e!==g.table().header().parentNode&&(e=b(e.parentNode),this._scroll(e,e,n,"position"));this.s.lastFocus={cell:h,node:h.node(),relative:{row:g.rows({page:"current"}).indexes().indexOf(h.index().row),column:h.index().column}};this._emitEvent("key-focus",[this.s.dt,h,d||null]);g.state.save()}}},_key:function(a){if(this.s.waitingForDraw)a.preventDefault();else{var c=this.s.enable,e=!0===c||"navigation-only"===c;if(c&&(!(0===a.keyCode||a.ctrlKey||a.metaKey||a.altKey)||a.ctrlKey&&
+a.altKey)){var d=this.s.lastFocus;if(d)if(this.s.dt.cell(d.node).any()){d=this.s.dt;var m=this.s.dt.settings()[0].oScroll.sY?!0:!1;if(!this.c.keys||-1!==b.inArray(a.keyCode,this.c.keys))switch(a.keyCode){case 9:this._shift(a,a.shiftKey?"left":"right",!0);break;case 27:this.s.blurable&&!0===c&&this._blur();break;case 33:case 34:e&&!m&&(a.preventDefault(),d.page(33===a.keyCode?"previous":"next").draw(!1));break;case 35:case 36:e&&(a.preventDefault(),c=d.cells({page:"current"}).indexes(),e=this._columns(),
+this._focus(d.cell(c[35===a.keyCode?c.length-1:e[0]]),null,!0,a));break;case 37:e&&this._shift(a,"left");break;case 38:e&&this._shift(a,"up");break;case 39:e&&this._shift(a,"right");break;case 40:e&&this._shift(a,"down");break;case 113:if(this.c.editor){this._editor(null,a,!0);break}default:!0===c&&this._emitEvent("key",[d,a.keyCode,this.s.lastFocus.cell,a])}}else this.s.lastFocus=null}}},_removeOtherFocus:function(){var a=this.s.dt.table().node();b.fn.dataTable.tables({api:!0}).iterator("table",
+function(b){this.table().node()!==a&&this.cell.blur()})},_scroll:function(a,b,e,d){var c=e[d](),f=e.outerHeight(),h=e.outerWidth(),k=b.scrollTop(),g=b.scrollLeft(),l=a.height();a=a.width();"position"===d&&(c.top+=parseInt(e.closest("table").css("top"),10));c.top<k&&b.scrollTop(c.top);c.left<g&&b.scrollLeft(c.left);c.top+f>k+l&&f<l&&b.scrollTop(c.top+f-l);c.left+h>g+a&&h<a&&b.scrollLeft(c.left+h-a)},_shift:function(a,c,e){var d=this.s.dt,f=d.page.info(),k=f.recordsDisplay,h=this.s.lastFocus.cell,g=
+this._columns();if(h){var l=d.rows({filter:"applied",order:"applied"}).indexes().indexOf(h.index().row);f.serverSide&&(l+=f.start);d=d.columns(g).indexes().indexOf(h.index().column);f=g[d];"right"===c?d>=g.length-1?(l++,f=g[0]):f=g[d+1]:"left"===c?0===d?(l--,f=g[g.length-1]):f=g[d-1]:"up"===c?l--:"down"===c&&l++;0<=l&&l<k&&-1!==b.inArray(f,g)?(a&&a.preventDefault(),this._focus(l,f,!0,a)):e&&this.c.blurable?this._blur():a&&a.preventDefault()}},_tabInput:function(){var a=this,c=this.s.dt,e=null!==this.c.tabIndex?
+this.c.tabIndex:c.settings()[0].iTabIndex;if(-1!=e)b('<div><input type="text" tabindex="'+e+'"/></div>').css({position:"absolute",height:1,width:0,overflow:"hidden"}).insertBefore(c.table().node()).children().on("focus",function(b){var d=c.cell(":eq(0)",a._columns(),{page:"current"});d.any()&&a._focus(d,null,!0,b)})},_updateFixedColumns:function(a){var b=this.s.dt,e=b.settings()[0];if(e._oFixedColumns){var d=e.aoColumns.length-e._oFixedColumns.s.iRightColumns;(a<e._oFixedColumns.s.iLeftColumns||a>=
+d)&&b.fixedColumns().update()}}});p.defaults={blurable:!0,className:"focus",clipboard:!0,clipboardOrthogonal:"display",columns:"",editor:null,editOnFocus:!1,focus:null,keys:null,tabIndex:null};p.version="2.5.1";b.fn.dataTable.KeyTable=p;b.fn.DataTable.KeyTable=p;g.Api.register("cell.blur()",function(){return this.iterator("table",function(a){a.keytable&&a.keytable.blur()})});g.Api.register("cell().focus()",function(){return this.iterator("cell",function(a,b,e){a.keytable&&a.keytable.focus(b,e)})});
+g.Api.register("keys.disable()",function(){return this.iterator("table",function(a){a.keytable&&a.keytable.enable(!1)})});g.Api.register("keys.enable()",function(a){return this.iterator("table",function(b){b.keytable&&b.keytable.enable(a===l?!0:a)})});g.Api.register("keys.move()",function(a){return this.iterator("table",function(b){b.keytable&&b.keytable._shift(null,a,!1)})});g.ext.selector.cell.push(function(a,b,e){b=b.focused;a=a.keytable;var c=[];if(!a||b===l)return e;for(var f=0,g=e.length;f<
+g;f++)(!0===b&&a.focused(e[f])||!1===b&&!a.focused(e[f]))&&c.push(e[f]);return c});b(k).on("preInit.dt.dtk",function(a,c,e){"dt"===a.namespace&&(a=c.oInit.keys,e=g.defaults.keys,a||e)&&(e=b.extend({},e,a),!1!==a&&new p(c,e))});return p});
+
+
+/*!
+ Responsive 2.2.3
+ 2014-2018 SpryMedia Ltd - datatables.net/license
+*/
+(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(l){return d(l,window,document)}):"object"===typeof exports?module.exports=function(l,j){l||(l=window);if(!j||!j.fn.dataTable)j=require("datatables.net")(l,j).$;return d(j,l,l.document)}:d(jQuery,window,document)})(function(d,l,j,q){function t(a,b,c){var e=b+"-"+c;if(n[e])return n[e];for(var d=[],a=a.cell(b,c).node().childNodes,b=0,c=a.length;b<c;b++)d.push(a[b]);return n[e]=d}function r(a,b,d){var e=b+
+"-"+d;if(n[e]){for(var a=a.cell(b,d).node(),d=n[e][0].parentNode.childNodes,b=[],f=0,g=d.length;f<g;f++)b.push(d[f]);d=0;for(f=b.length;d<f;d++)a.appendChild(b[d]);n[e]=q}}var o=d.fn.dataTable,i=function(a,b){if(!o.versionCheck||!o.versionCheck("1.10.10"))throw"DataTables Responsive requires DataTables 1.10.10 or newer";this.s={dt:new o.Api(a),columns:[],current:[]};this.s.dt.settings()[0].responsive||(b&&"string"===typeof b.details?b.details={type:b.details}:b&&!1===b.details?b.details={type:!1}:
+b&&!0===b.details&&(b.details={type:"inline"}),this.c=d.extend(!0,{},i.defaults,o.defaults.responsive,b),a.responsive=this,this._constructor())};d.extend(i.prototype,{_constructor:function(){var a=this,b=this.s.dt,c=b.settings()[0],e=d(l).width();b.settings()[0]._responsive=this;d(l).on("resize.dtr orientationchange.dtr",o.util.throttle(function(){var b=d(l).width();b!==e&&(a._resize(),e=b)}));c.oApi._fnCallbackReg(c,"aoRowCreatedCallback",function(e){-1!==d.inArray(!1,a.s.current)&&d(">td, >th",
+e).each(function(e){e=b.column.index("toData",e);!1===a.s.current[e]&&d(this).css("display","none")})});b.on("destroy.dtr",function(){b.off(".dtr");d(b.table().body()).off(".dtr");d(l).off("resize.dtr orientationchange.dtr");d.each(a.s.current,function(b,e){!1===e&&a._setColumnVis(b,!0)})});this.c.breakpoints.sort(function(a,b){return a.width<b.width?1:a.width>b.width?-1:0});this._classLogic();this._resizeAuto();c=this.c.details;!1!==c.type&&(a._detailsInit(),b.on("column-visibility.dtr",function(){a._timer&&
+clearTimeout(a._timer);a._timer=setTimeout(function(){a._timer=null;a._classLogic();a._resizeAuto();a._resize();a._redrawChildren()},100)}),b.on("draw.dtr",function(){a._redrawChildren()}),d(b.table().node()).addClass("dtr-"+c.type));b.on("column-reorder.dtr",function(){a._classLogic();a._resizeAuto();a._resize()});b.on("column-sizing.dtr",function(){a._resizeAuto();a._resize()});b.on("preXhr.dtr",function(){var e=[];b.rows().every(function(){this.child.isShown()&&e.push(this.id(true))});b.one("draw.dtr",
+function(){a._resizeAuto();a._resize();b.rows(e).every(function(){a._detailsDisplay(this,false)})})});b.on("init.dtr",function(){a._resizeAuto();a._resize();d.inArray(false,a.s.current)&&b.columns.adjust()});this._resize()},_columnsVisiblity:function(a){var b=this.s.dt,c=this.s.columns,e,f,g=c.map(function(a,b){return{columnIdx:b,priority:a.priority}}).sort(function(a,b){return a.priority!==b.priority?a.priority-b.priority:a.columnIdx-b.columnIdx}),h=d.map(c,function(e,c){return!1===b.column(c).visible()?
+"not-visible":e.auto&&null===e.minWidth?!1:!0===e.auto?"-":-1!==d.inArray(a,e.includeIn)}),m=0;e=0;for(f=h.length;e<f;e++)!0===h[e]&&(m+=c[e].minWidth);e=b.settings()[0].oScroll;e=e.sY||e.sX?e.iBarWidth:0;m=b.table().container().offsetWidth-e-m;e=0;for(f=h.length;e<f;e++)c[e].control&&(m-=c[e].minWidth);var s=!1;e=0;for(f=g.length;e<f;e++){var k=g[e].columnIdx;"-"===h[k]&&(!c[k].control&&c[k].minWidth)&&(s||0>m-c[k].minWidth?(s=!0,h[k]=!1):h[k]=!0,m-=c[k].minWidth)}g=!1;e=0;for(f=c.length;e<f;e++)if(!c[e].control&&
+!c[e].never&&!1===h[e]){g=!0;break}e=0;for(f=c.length;e<f;e++)c[e].control&&(h[e]=g),"not-visible"===h[e]&&(h[e]=!1);-1===d.inArray(!0,h)&&(h[0]=!0);return h},_classLogic:function(){var a=this,b=this.c.breakpoints,c=this.s.dt,e=c.columns().eq(0).map(function(a){var b=this.column(a),e=b.header().className,a=c.settings()[0].aoColumns[a].responsivePriority;a===q&&(b=d(b.header()).data("priority"),a=b!==q?1*b:1E4);return{className:e,includeIn:[],auto:!1,control:!1,never:e.match(/\bnever\b/)?!0:!1,priority:a}}),
+f=function(a,b){var c=e[a].includeIn;-1===d.inArray(b,c)&&c.push(b)},g=function(d,c,g,k){if(g)if("max-"===g){k=a._find(c).width;c=0;for(g=b.length;c<g;c++)b[c].width<=k&&f(d,b[c].name)}else if("min-"===g){k=a._find(c).width;c=0;for(g=b.length;c<g;c++)b[c].width>=k&&f(d,b[c].name)}else{if("not-"===g){c=0;for(g=b.length;c<g;c++)-1===b[c].name.indexOf(k)&&f(d,b[c].name)}}else e[d].includeIn.push(c)};e.each(function(a,e){for(var c=a.className.split(" "),f=!1,i=0,l=c.length;i<l;i++){var j=d.trim(c[i]);
+if("all"===j){f=!0;a.includeIn=d.map(b,function(a){return a.name});return}if("none"===j||a.never){f=!0;return}if("control"===j){f=!0;a.control=!0;return}d.each(b,function(a,b){var d=b.name.split("-"),c=j.match(RegExp("(min\\-|max\\-|not\\-)?("+d[0]+")(\\-[_a-zA-Z0-9])?"));c&&(f=!0,c[2]===d[0]&&c[3]==="-"+d[1]?g(e,b.name,c[1],c[2]+c[3]):c[2]===d[0]&&!c[3]&&g(e,b.name,c[1],c[2]))})}f||(a.auto=!0)});this.s.columns=e},_detailsDisplay:function(a,b){var c=this,e=this.s.dt,f=this.c.details;if(f&&!1!==f.type){var g=
+f.display(a,b,function(){return f.renderer(e,a[0],c._detailsObj(a[0]))});(!0===g||!1===g)&&d(e.table().node()).triggerHandler("responsive-display.dt",[e,a,g,b])}},_detailsInit:function(){var a=this,b=this.s.dt,c=this.c.details;"inline"===c.type&&(c.target="td:first-child, th:first-child");b.on("draw.dtr",function(){a._tabIndexes()});a._tabIndexes();d(b.table().body()).on("keyup.dtr","td, th",function(a){a.keyCode===13&&d(this).data("dtr-keyboard")&&d(this).click()});var e=c.target;d(b.table().body()).on("click.dtr mousedown.dtr mouseup.dtr",
+"string"===typeof e?e:"td, th",function(c){if(d(b.table().node()).hasClass("collapsed")&&d.inArray(d(this).closest("tr").get(0),b.rows().nodes().toArray())!==-1){if(typeof e==="number"){var g=e<0?b.columns().eq(0).length+e:e;if(b.cell(this).index().column!==g)return}g=b.row(d(this).closest("tr"));c.type==="click"?a._detailsDisplay(g,false):c.type==="mousedown"?d(this).css("outline","none"):c.type==="mouseup"&&d(this).blur().css("outline","")}})},_detailsObj:function(a){var b=this,c=this.s.dt;return d.map(this.s.columns,
+function(e,d){if(!e.never&&!e.control)return{title:c.settings()[0].aoColumns[d].sTitle,data:c.cell(a,d).render(b.c.orthogonal),hidden:c.column(d).visible()&&!b.s.current[d],columnIndex:d,rowIndex:a}})},_find:function(a){for(var b=this.c.breakpoints,c=0,e=b.length;c<e;c++)if(b[c].name===a)return b[c]},_redrawChildren:function(){var a=this,b=this.s.dt;b.rows({page:"current"}).iterator("row",function(c,e){b.row(e);a._detailsDisplay(b.row(e),!0)})},_resize:function(){var a=this,b=this.s.dt,c=d(l).width(),
+e=this.c.breakpoints,f=e[0].name,g=this.s.columns,h,m=this.s.current.slice();for(h=e.length-1;0<=h;h--)if(c<=e[h].width){f=e[h].name;break}var i=this._columnsVisiblity(f);this.s.current=i;e=!1;h=0;for(c=g.length;h<c;h++)if(!1===i[h]&&!g[h].never&&!g[h].control&&!1===!b.column(h).visible()){e=!0;break}d(b.table().node()).toggleClass("collapsed",e);var k=!1,j=0;b.columns().eq(0).each(function(b,c){!0===i[c]&&j++;i[c]!==m[c]&&(k=!0,a._setColumnVis(b,i[c]))});k&&(this._redrawChildren(),d(b.table().node()).trigger("responsive-resize.dt",
+[b,this.s.current]),0===b.page.info().recordsDisplay&&d("td",b.table().body()).eq(0).attr("colspan",j))},_resizeAuto:function(){var a=this.s.dt,b=this.s.columns;if(this.c.auto&&-1!==d.inArray(!0,d.map(b,function(a){return a.auto}))){d.isEmptyObject(n)||d.each(n,function(b){b=b.split("-");r(a,1*b[0],1*b[1])});a.table().node();var c=a.table().node().cloneNode(!1),e=d(a.table().header().cloneNode(!1)).appendTo(c),f=d(a.table().body()).clone(!1,!1).empty().appendTo(c),g=a.columns().header().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display",
+"table-cell").css("min-width",0);d(f).append(d(a.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display","");if(f=a.table().footer()){var f=d(f.cloneNode(!1)).appendTo(c),h=a.columns().footer().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display","table-cell");d("<tr/>").append(h).appendTo(f)}d("<tr/>").append(g).appendTo(e);"inline"===this.c.details.type&&d(c).addClass("dtr-inline collapsed");d(c).find("[name]").removeAttr("name");d(c).css("position","relative");
+c=d("<div/>").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(c);c.insertBefore(a.table().node());g.each(function(c){c=a.column.index("fromVisible",c);b[c].minWidth=this.offsetWidth||0});c.remove()}},_setColumnVis:function(a,b){var c=this.s.dt,e=b?"":"none";d(c.column(a).header()).css("display",e);d(c.column(a).footer()).css("display",e);c.column(a).nodes().to$().css("display",e);d.isEmptyObject(n)||c.cells(null,a).indexes().each(function(a){r(c,a.row,a.column)})},_tabIndexes:function(){var a=
+this.s.dt,b=a.cells({page:"current"}).nodes().to$(),c=a.settings()[0],e=this.c.details.target;b.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");"number"===typeof e?a.cells(null,e,{page:"current"}).nodes().to$().attr("tabIndex",c.iTabIndex).data("dtr-keyboard",1):("td:first-child, th:first-child"===e&&(e=">td:first-child, >th:first-child"),d(e,a.rows({page:"current"}).nodes()).attr("tabIndex",c.iTabIndex).data("dtr-keyboard",1))}});i.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",
+width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];i.display={childRow:function(a,b,c){if(b){if(d(a.node()).hasClass("parent"))return a.child(c(),"child").show(),!0}else{if(a.child.isShown())return a.child(!1),d(a.node()).removeClass("parent"),!1;a.child(c(),"child").show();d(a.node()).addClass("parent");return!0}},childRowImmediate:function(a,b,c){if(!b&&a.child.isShown()||!a.responsive.hasHidden())return a.child(!1),d(a.node()).removeClass("parent"),
+!1;a.child(c(),"child").show();d(a.node()).addClass("parent");return!0},modal:function(a){return function(b,c,e){if(c)d("div.dtr-modal-content").empty().append(e());else{var f=function(){g.remove();d(j).off("keypress.dtr")},g=d('<div class="dtr-modal"/>').append(d('<div class="dtr-modal-display"/>').append(d('<div class="dtr-modal-content"/>').append(e())).append(d('<div class="dtr-modal-close">&times;</div>').click(function(){f()}))).append(d('<div class="dtr-modal-background"/>').click(function(){f()})).appendTo("body");
+d(j).on("keyup.dtr",function(a){27===a.keyCode&&(a.stopPropagation(),f())})}a&&a.header&&d("div.dtr-modal-content").prepend("<h2>"+a.header(b)+"</h2>")}}};var n={};i.renderer={listHiddenNodes:function(){return function(a,b,c){var e=d('<ul data-dtr-index="'+b+'" class="dtr-details"/>'),f=!1;d.each(c,function(b,c){c.hidden&&(d('<li data-dtr-index="'+c.columnIndex+'" data-dt-row="'+c.rowIndex+'" data-dt-column="'+c.columnIndex+'"><span class="dtr-title">'+c.title+"</span> </li>").append(d('<span class="dtr-data"/>').append(t(a,
+c.rowIndex,c.columnIndex))).appendTo(e),f=!0)});return f?e:!1}},listHidden:function(){return function(a,b,c){return(a=d.map(c,function(a){return a.hidden?'<li data-dtr-index="'+a.columnIndex+'" data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><span class="dtr-title">'+a.title+'</span> <span class="dtr-data">'+a.data+"</span></li>":""}).join(""))?d('<ul data-dtr-index="'+b+'" class="dtr-details"/>').append(a):!1}},tableAll:function(a){a=d.extend({tableClass:""},a);return function(b,
+c,e){b=d.map(e,function(a){return'<tr data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><td>'+a.title+":</td> <td>"+a.data+"</td></tr>"}).join("");return d('<table class="'+a.tableClass+' dtr-details" width="100%"/>').append(b)}}};i.defaults={breakpoints:i.breakpoints,auto:!0,details:{display:i.display.childRow,renderer:i.renderer.listHidden(),target:0,type:"inline"},orthogonal:"display"};var p=d.fn.dataTable.Api;p.register("responsive()",function(){return this});p.register("responsive.index()",
+function(a){a=d(a);return{column:a.data("dtr-index"),row:a.parent().data("dtr-index")}});p.register("responsive.rebuild()",function(){return this.iterator("table",function(a){a._responsive&&a._responsive._classLogic()})});p.register("responsive.recalc()",function(){return this.iterator("table",function(a){a._responsive&&(a._responsive._resizeAuto(),a._responsive._resize())})});p.register("responsive.hasHidden()",function(){var a=this.context[0];return a._responsive?-1!==d.inArray(!1,a._responsive.s.current):
+!1});p.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(a,b){return a._responsive?a._responsive.s.current[b]:!1},1)});i.version="2.2.3";d.fn.dataTable.Responsive=i;d.fn.DataTable.Responsive=i;d(j).on("preInit.dt.dtr",function(a,b){if("dt"===a.namespace&&(d(b.nTable).hasClass("responsive")||d(b.nTable).hasClass("dt-responsive")||b.oInit.responsive||o.defaults.responsive)){var c=b.oInit.responsive;!1!==c&&new i(b,d.isPlainObject(c)?
+c:{})}});return i});
+
+
+/*!
+ Bootstrap 4 integration for DataTables' Responsive
+ ©2016 SpryMedia Ltd - datatables.net/license
+*/
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs4")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,g=b.modal,e=c('<div class="modal fade dtr-bs-modal" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body"/></div></div></div>');
+b.modal=function(a){return function(b,d,f){if(c.fn.modal){if(!d){if(a&&a.header){var d=e.find("div.modal-header"),h=d.find("button").detach();d.empty().append('<h4 class="modal-title">'+a.header(b)+"</h4>").append(h)}e.find("div.modal-body").empty().append(f());e.appendTo("body").modal()}}else g(b,d,f)}};return a.Responsive});
+
+
+/*!
+   Copyright 2017-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ RowGroup 1.1.1
+ ©2017-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,d,c){a instanceof String&&(a=String(a));for(var e=a.length,f=0;f<e;f++){var h=a[f];if(d.call(c,h,f,a))return{i:f,v:h}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,d,c){a!=Array.prototype&&a!=Object.prototype&&(a[d]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(a,d,c,e){if(d){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var f=a[e];f in c||(c[f]={});c=c[f]}a=a[a.length-1];e=c[a];d=d(e);d!=e&&null!=d&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:d})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},"es6","es3");
+(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(d){return a(d,window,document)}):"object"===typeof exports?module.exports=function(d,c){d||(d=window);c&&c.fn.dataTable||(c=require("datatables.net")(d,c).$);return a(c,d,d.document)}:a(jQuery,window,document)})(function(a,d,c,e){var f=a.fn.dataTable,h=function(b,g){if(!f.versionCheck||!f.versionCheck("1.10.8"))throw"RowGroup requires DataTables 1.10.8 or newer";this.c=a.extend(!0,{},f.defaults.rowGroup,
+h.defaults,g);this.s={dt:new f.Api(b)};this.dom={};b=this.s.dt.settings()[0];if(g=b.rowGroup)return g;b.rowGroup=this;this._constructor()};a.extend(h.prototype,{dataSrc:function(b){if(b===e)return this.c.dataSrc;var g=this.s.dt;this.c.dataSrc=b;a(g.table().node()).triggerHandler("rowgroup-datasrc.dt",[g,b]);return this},disable:function(){this.c.enable=!1;return this},enable:function(b){if(!1===b)return this.disable();this.c.enable=!0;return this},_constructor:function(){var b=this,a=this.s.dt;a.on("draw.dtrg",
+function(){b.c.enable&&b._draw()});a.on("column-visibility.dt.dtrg responsive-resize.dt.dtrg",function(){b._adjustColspan()});a.on("destroy",function(){a.off(".dtrg")});a.on("responsive-resize.dt",function(){b._adjustColspan()})},_adjustColspan:function(){a("tr."+this.c.className,this.s.dt.table().body()).find("td").attr("colspan",this._colspan())},_colspan:function(){return this.s.dt.columns().visible().reduce(function(b,a){return b+a},0)},_draw:function(){var b=this._group(0,this.s.dt.rows({page:"current"}).indexes());
+this._groupDisplay(0,b)},_group:function(b,g){for(var c=a.isArray(this.c.dataSrc)?this.c.dataSrc:[this.c.dataSrc],d=f.ext.oApi._fnGetObjectDataFn(c[b]),h=this.s.dt,l,n,m=[],k=0,p=g.length;k<p;k++){var q=g[k];l=h.row(q).data();l=d(l);if(null===l||l===e)l=this.c.emptyDataGroup;if(n===e||l!==n)m.push({dataPoint:l,rows:[]}),n=l;m[m.length-1].rows.push(q)}if(c[b+1]!==e)for(k=0,p=m.length;k<p;k++)m[k].children=this._group(b+1,m[k].rows);return m},_groupDisplay:function(b,a){for(var c=this.s.dt,g,d=0,f=
+a.length;d<f;d++){var e=a[d],h=e.dataPoint,k=e.rows;this.c.startRender&&(g=this.c.startRender.call(this,c.rows(k),h,b),(g=this._rowWrap(g,this.c.startClassName,b))&&g.insertBefore(c.row(k[0]).node()));this.c.endRender&&(g=this.c.endRender.call(this,c.rows(k),h,b),(g=this._rowWrap(g,this.c.endClassName,b))&&g.insertAfter(c.row(k[k.length-1]).node()));e.children&&this._groupDisplay(b+1,e.children)}},_rowWrap:function(b,g,c){if(null===b||""===b)b=this.c.emptyDataGroup;return b===e||null===b?null:("object"===
+typeof b&&b.nodeName&&"tr"===b.nodeName.toLowerCase()?a(b):b instanceof a&&b.length&&"tr"===b[0].nodeName.toLowerCase()?b:a("<tr/>").append(a("<td/>").attr("colspan",this._colspan()).append(b))).addClass(this.c.className).addClass(g).addClass("dtrg-level-"+c)}});h.defaults={className:"dtrg-group",dataSrc:0,emptyDataGroup:"No group",enable:!0,endClassName:"dtrg-end",endRender:null,startClassName:"dtrg-start",startRender:function(b,a){return a}};h.version="1.1.1";a.fn.dataTable.RowGroup=h;a.fn.DataTable.RowGroup=
+h;f.Api.register("rowGroup()",function(){return this});f.Api.register("rowGroup().disable()",function(){return this.iterator("table",function(a){a.rowGroup&&a.rowGroup.enable(!1)})});f.Api.register("rowGroup().enable()",function(a){return this.iterator("table",function(b){b.rowGroup&&b.rowGroup.enable(a===e?!0:a)})});f.Api.register("rowGroup().dataSrc()",function(a){return a===e?this.context[0].rowGroup.dataSrc():this.iterator("table",function(b){b.rowGroup&&b.rowGroup.dataSrc(a)})});a(c).on("preInit.dt.dtrg",
+function(b,c,d){"dt"===b.namespace&&(b=c.oInit.rowGroup,d=f.defaults.rowGroup,b||d)&&(d=a.extend({},d,b),!1!==b&&new h(c,d))});return h});
+
+
+/*!
+   Copyright 2015-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ RowReorder 1.2.6
+ 2015-2019 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,f,d){a instanceof String&&(a=String(a));for(var h=a.length,g=0;g<h;g++){var m=a[g];if(f.call(d,m,g,a))return{i:g,v:m}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,f,d){a!=Array.prototype&&a!=Object.prototype&&(a[f]=d.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(a,f,d,h){if(f){d=$jscomp.global;a=a.split(".");for(h=0;h<a.length-1;h++){var g=a[h];g in d||(d[g]={});d=d[g]}a=a[a.length-1];h=d[a];f=f(h);f!=h&&null!=f&&$jscomp.defineProperty(d,a,{configurable:!0,writable:!0,value:f})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,d){return $jscomp.findInternal(this,a,d).v}},"es6","es3");
+(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(f){return a(f,window,document)}):"object"===typeof exports?module.exports=function(f,d){f||(f=window);d&&d.fn.dataTable||(d=require("datatables.net")(f,d).$);return a(d,f,f.document)}:a(jQuery,window,document)})(function(a,f,d,h){var g=a.fn.dataTable,m=function(c,e){if(!g.versionCheck||!g.versionCheck("1.10.8"))throw"DataTables RowReorder requires DataTables 1.10.8 or newer";this.c=a.extend(!0,{},g.defaults.rowReorder,
+m.defaults,e);this.s={bodyTop:null,dt:new g.Api(c),getDataFn:g.ext.oApi._fnGetObjectDataFn(this.c.dataSrc),middles:null,scroll:{},scrollInterval:null,setDataFn:g.ext.oApi._fnSetObjectDataFn(this.c.dataSrc),start:{top:0,left:0,offsetTop:0,offsetLeft:0,nodes:[]},windowHeight:0,documentOuterHeight:0,domCloneOuterHeight:0};this.dom={clone:null,dtScroll:a("div.dataTables_scrollBody",this.s.dt.table().container())};c=this.s.dt.settings()[0];if(e=c.rowreorder)return e;c.rowreorder=this;this._constructor()};
+a.extend(m.prototype,{_constructor:function(){var c=this,e=this.s.dt,b=a(e.table().node());"static"===b.css("position")&&b.css("position","relative");a(e.table().container()).on("mousedown.rowReorder touchstart.rowReorder",this.c.selector,function(b){if(c.c.enable){if(a(b.target).is(c.c.excludedChildren))return!0;var d=a(this).closest("tr"),n=e.row(d);if(n.any())return c._emitEvent("pre-row-reorder",{node:n.node(),index:n.index()}),c._mouseDown(b,d),!1}});e.on("destroy.rowReorder",function(){a(e.table().container()).off(".rowReorder");
+e.off(".rowReorder")})},_cachePositions:function(){var c=this.s.dt,e=a(c.table().node()).find("thead").outerHeight(),b=a.unique(c.rows({page:"current"}).nodes().toArray()),n=a.map(b,function(c,b){return a(c).position().top-e});b=a.map(n,function(b,e){return n.length<e-1?(b+n[e+1])/2:(b+b+a(c.row(":last-child").node()).outerHeight())/2});this.s.middles=b;this.s.bodyTop=a(c.table().body()).offset().top;this.s.windowHeight=a(f).height();this.s.documentOuterHeight=a(d).outerHeight()},_clone:function(c){var e=
+a(this.s.dt.table().node().cloneNode(!1)).addClass("dt-rowReorder-float").append("<tbody/>").append(c.clone(!1)),b=c.outerWidth(),n=c.outerHeight(),d=c.children().map(function(){return a(this).width()});e.width(b).height(n).find("tr").children().each(function(a){this.style.width=d[a]+"px"});e.appendTo("body");this.dom.clone=e;this.s.domCloneOuterHeight=e.outerHeight()},_clonePosition:function(a){var c=this.s.start,b=this._eventToPage(a,"Y")-c.top;a=this._eventToPage(a,"X")-c.left;var d=this.c.snapX;
+b+=c.offsetTop;c=!0===d?c.offsetLeft:"number"===typeof d?c.offsetLeft+d:a+c.offsetLeft;0>b?b=0:b+this.s.domCloneOuterHeight>this.s.documentOuterHeight&&(b=this.s.documentOuterHeight-this.s.domCloneOuterHeight);this.dom.clone.css({top:b,left:c})},_emitEvent:function(c,e){this.s.dt.iterator("table",function(b,d){a(b.nTable).triggerHandler(c+".dt",e)})},_eventToPage:function(a,e){return-1!==a.type.indexOf("touch")?a.originalEvent.touches[0]["page"+e]:a["page"+e]},_mouseDown:function(c,e){var b=this,
+n=this.s.dt,g=this.s.start,t=e.offset();g.top=this._eventToPage(c,"Y");g.left=this._eventToPage(c,"X");g.offsetTop=t.top;g.offsetLeft=t.left;g.nodes=a.unique(n.rows({page:"current"}).nodes().toArray());this._cachePositions();this._clone(e);this._clonePosition(c);this.dom.target=e;e.addClass("dt-rowReorder-moving");a(d).on("mouseup.rowReorder touchend.rowReorder",function(a){b._mouseUp(a)}).on("mousemove.rowReorder touchmove.rowReorder",function(a){b._mouseMove(a)});a(f).width()===a(d).width()&&a(d.body).addClass("dt-rowReorder-noOverflow");
+c=this.dom.dtScroll;this.s.scroll={windowHeight:a(f).height(),windowWidth:a(f).width(),dtTop:c.length?c.offset().top:null,dtLeft:c.length?c.offset().left:null,dtHeight:c.length?c.outerHeight():null,dtWidth:c.length?c.outerWidth():null}},_mouseMove:function(c){this._clonePosition(c);for(var e=this._eventToPage(c,"Y")-this.s.bodyTop,b=this.s.middles,d=null,f=this.s.dt,g=f.table().body(),l=0,h=b.length;l<h;l++)if(e<b[l]){d=l;break}null===d&&(d=b.length);if(null===this.s.lastInsert||this.s.lastInsert!==
+d)0===d?this.dom.target.prependTo(g):(e=a.unique(f.rows({page:"current"}).nodes().toArray()),d>this.s.lastInsert?this.dom.target.insertAfter(e[d-1]):this.dom.target.insertBefore(e[d])),this._cachePositions(),this.s.lastInsert=d;this._shiftScroll(c)},_mouseUp:function(c){var e=this,b=this.s.dt,f,g=this.c.dataSrc;this.dom.clone.remove();this.dom.clone=null;this.dom.target.removeClass("dt-rowReorder-moving");a(d).off(".rowReorder");a(d.body).removeClass("dt-rowReorder-noOverflow");clearInterval(this.s.scrollInterval);
+this.s.scrollInterval=null;var h=this.s.start.nodes,l=a.unique(b.rows({page:"current"}).nodes().toArray()),m={},q=[],p=[],r=this.s.getDataFn,y=this.s.setDataFn;var k=0;for(f=h.length;k<f;k++)if(h[k]!==l[k]){var u=b.row(l[k]).id(),z=b.row(l[k]).data(),v=b.row(h[k]).data();u&&(m[u]=r(v));q.push({node:l[k],oldData:r(z),newData:r(v),newPosition:k,oldPosition:a.inArray(l[k],h)});p.push(l[k])}var w=[q,{dataSrc:g,nodes:p,values:m,triggerRow:b.row(this.dom.target),originalEvent:c}];this._emitEvent("row-reorder",
+w);var x=function(){if(e.c.update){k=0;for(f=q.length;k<f;k++){var a=b.row(q[k].node).data();y(a,q[k].newData);b.columns().every(function(){this.dataSrc()===g&&b.cell(q[k].node,this.index()).invalidate("data")})}e._emitEvent("row-reordered",w);b.draw(!1)}};this.c.editor?(this.c.enable=!1,this.c.editor.edit(p,!1,a.extend({submit:"changed"},this.c.formOptions)).multiSet(g,m).one("preSubmitCancelled.rowReorder",function(){e.c.enable=!0;e.c.editor.off(".rowReorder");b.draw(!1)}).one("submitUnsuccessful.rowReorder",
+function(){b.draw(!1)}).one("submitSuccess.rowReorder",function(){x()}).one("submitComplete",function(){e.c.enable=!0;e.c.editor.off(".rowReorder")}).submit()):x()},_shiftScroll:function(a){var c=this,b=this.s.scroll,f=!1,g=a.pageY-d.body.scrollTop,h,l;65>g?h=-5:g>b.windowHeight-65&&(h=5);null!==b.dtTop&&a.pageY<b.dtTop+65?l=-5:null!==b.dtTop&&a.pageY>b.dtTop+b.dtHeight-65&&(l=5);h||l?(b.windowVert=h,b.dtVert=l,f=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=
+null);!this.s.scrollInterval&&f&&(this.s.scrollInterval=setInterval(function(){b.windowVert&&(d.body.scrollTop+=b.windowVert);if(b.dtVert){var a=c.dom.dtScroll[0];b.dtVert&&(a.scrollTop+=b.dtVert)}},20))}});m.defaults={dataSrc:0,editor:null,enable:!0,formOptions:{},selector:"td:first-child",snapX:!1,update:!0,excludedChildren:"a"};var p=a.fn.dataTable.Api;p.register("rowReorder()",function(){return this});p.register("rowReorder.enable()",function(a){a===h&&(a=!0);return this.iterator("table",function(c){c.rowreorder&&
+(c.rowreorder.c.enable=a)})});p.register("rowReorder.disable()",function(){return this.iterator("table",function(a){a.rowreorder&&(a.rowreorder.c.enable=!1)})});m.version="1.2.6";a.fn.dataTable.RowReorder=m;a.fn.DataTable.RowReorder=m;a(d).on("init.dt.dtr",function(c,d,b){"dt"===c.namespace&&(c=d.oInit.rowReorder,b=g.defaults.rowReorder,c||b)&&(b=a.extend({},c,b),!1!==c&&new m(d,b))});return m});
+
+
+/*!
+   Copyright 2011-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ Scroller 2.0.1
+ ©2011-2019 SpryMedia Ltd - datatables.net/license
+*/
+(function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(h){return e(h,window,document)}):"object"===typeof exports?module.exports=function(h,k){h||(h=window);k&&k.fn.dataTable||(k=require("datatables.net")(h,k).$);return e(k,h,h.document)}:e(jQuery,window,document)})(function(e,h,k,n){var p=e.fn.dataTable,g=function(a,b){this instanceof g?(b===n&&(b={}),a=e.fn.dataTable.Api(a),this.s={dt:a.settings()[0],dtApi:a,tableTop:0,tableBottom:0,redrawTop:0,redrawBottom:0,
+autoHeight:!0,viewportRows:0,stateTO:null,drawTO:null,heights:{jump:null,page:null,virtual:null,scroll:null,row:null,viewport:null,labelFactor:1},topRowFloat:0,scrollDrawDiff:null,loaderVisible:!1,forceReposition:!1,baseRowTop:0,baseScrollTop:0,mousedown:!1,lastScrollTop:0},this.s=e.extend(this.s,g.oDefaults,b),this.s.heights.row=this.s.rowHeight,this.dom={force:k.createElement("div"),label:e('<div class="dts_label">0</div>'),scroller:null,table:null,loader:null},this.s.dt.oScroller||(this.s.dt.oScroller=
+this,this.construct())):alert("Scroller warning: Scroller must be initialised with the 'new' keyword.")};e.extend(g.prototype,{measure:function(a){this.s.autoHeight&&this._calcRowHeight();var b=this.s.heights;b.row&&(b.viewport=e.contains(k,this.dom.scroller)?this.dom.scroller.clientHeight:this._parseHeight(e(this.dom.scroller).css("height")),b.viewport||(b.viewport=this._parseHeight(e(this.dom.scroller).css("max-height"))),this.s.viewportRows=parseInt(b.viewport/b.row,10)+1,this.s.dt._iDisplayLength=
+this.s.viewportRows*this.s.displayBuffer);var c=this.dom.label.outerHeight();b.labelFactor=(b.viewport-c)/b.scroll;(a===n||a)&&this.s.dt.oInstance.fnDraw(!1)},pageInfo:function(){var a=this.dom.scroller.scrollTop,b=this.s.dt.fnRecordsDisplay(),c=Math.ceil(this.pixelsToRow(a+this.s.heights.viewport,!1,this.s.ani));return{start:Math.floor(this.pixelsToRow(a,!1,this.s.ani)),end:b<c?b-1:c-1}},pixelsToRow:function(a,b,c){a-=this.s.baseScrollTop;c=c?(this._domain("physicalToVirtual",this.s.baseScrollTop)+
+a)/this.s.heights.row:a/this.s.heights.row+this.s.baseRowTop;return b||b===n?parseInt(c,10):c},rowToPixels:function(a,b,c){a-=this.s.baseRowTop;c=c?this._domain("virtualToPhysical",this.s.baseScrollTop):this.s.baseScrollTop;c+=a*this.s.heights.row;return b||b===n?parseInt(c,10):c},scrollToRow:function(a,b){var c=this,d=!1,f=this.rowToPixels(a),m=a-(this.s.displayBuffer-1)/2*this.s.viewportRows;0>m&&(m=0);(f>this.s.redrawBottom||f<this.s.redrawTop)&&this.s.dt._iDisplayStart!==m&&(d=!0,f=this._domain("virtualToPhysical",
+a*this.s.heights.row),this.s.redrawTop<f&&f<this.s.redrawBottom&&(this.s.forceReposition=!0,b=!1));b===n||b?(this.s.ani=d,e(this.dom.scroller).animate({scrollTop:f},function(){setTimeout(function(){c.s.ani=!1},250)})):e(this.dom.scroller).scrollTop(f)},construct:function(){var a=this,b=this.s.dtApi;if(this.s.dt.oFeatures.bPaginate){this.dom.force.style.position="relative";this.dom.force.style.top="0px";this.dom.force.style.left="0px";this.dom.force.style.width="1px";this.dom.scroller=e("div."+this.s.dt.oClasses.sScrollBody,
+this.s.dt.nTableWrapper)[0];this.dom.scroller.appendChild(this.dom.force);this.dom.scroller.style.position="relative";this.dom.table=e(">table",this.dom.scroller)[0];this.dom.table.style.position="absolute";this.dom.table.style.top="0px";this.dom.table.style.left="0px";e(b.table().container()).addClass("dts DTS");this.s.loadingIndicator&&(this.dom.loader=e('<div class="dataTables_processing dts_loading">'+this.s.dt.oLanguage.sLoadingRecords+"</div>").css("display","none"),e(this.dom.scroller.parentNode).css("position",
+"relative").append(this.dom.loader));this.dom.label.appendTo(this.dom.scroller);this.s.heights.row&&"auto"!=this.s.heights.row&&(this.s.autoHeight=!1);this.measure(!1);this.s.ingnoreScroll=!0;this.s.stateSaveThrottle=this.s.dt.oApi._fnThrottle(function(){a.s.dtApi.state.save()},500);e(this.dom.scroller).on("scroll.dt-scroller",function(b){a._scroll.call(a)});e(this.dom.scroller).on("touchstart.dt-scroller",function(){a._scroll.call(a)});e(this.dom.scroller).on("mousedown.dt-scroller",function(){a.s.mousedown=
+!0}).on("mouseup.dt-scroller",function(){a.s.mouseup=!1;a.dom.label.css("display","none")});e(h).on("resize.dt-scroller",function(){a.measure(!1);a._info()});var c=!0,d=b.state.loaded();b.on("stateSaveParams.scroller",function(b,e,h){h.scroller={topRow:c&&d&&d.scroller?d.scroller.topRow:a.s.topRowFloat,baseScrollTop:a.s.baseScrollTop,baseRowTop:a.s.baseRowTop};c=!1});d&&d.scroller&&(this.s.topRowFloat=d.scroller.topRow,this.s.baseScrollTop=d.scroller.baseScrollTop,this.s.baseRowTop=d.scroller.baseRowTop);
+b.on("init.scroller",function(){a.measure(!1);a.s.scrollType="jump";a._draw();b.on("draw.scroller",function(){a._draw()})});b.on("preDraw.dt.scroller",function(){a._scrollForce()});b.on("destroy.scroller",function(){e(h).off("resize.dt-scroller");e(a.dom.scroller).off(".dt-scroller");e(a.s.dt.nTable).off(".scroller");e(a.s.dt.nTableWrapper).removeClass("DTS");e("div.DTS_Loading",a.dom.scroller.parentNode).remove();a.dom.table.style.position="";a.dom.table.style.top="";a.dom.table.style.left=""})}else this.s.dt.oApi._fnLog(this.s.dt,
+0,"Pagination must be enabled for Scroller")},_calcRowHeight:function(){var a=this.s.dt,b=a.nTable,c=b.cloneNode(!1),d=e("<tbody/>").appendTo(c),f=e('<div class="'+a.oClasses.sWrapper+' DTS"><div class="'+a.oClasses.sScrollWrapper+'"><div class="'+a.oClasses.sScrollBody+'"></div></div></div>');e("tbody tr:lt(4)",b).clone().appendTo(d);var m=e("tr",d).length;if(1===m)d.prepend("<tr><td>&#160;</td></tr>"),d.append("<tr><td>&#160;</td></tr>");else for(;3>m;m++)d.append("<tr><td>&#160;</td></tr>");e("div."+
+a.oClasses.sScrollBody,f).append(c);a=this.s.dt.nHolding||b.parentNode;e(a).is(":visible")||(a="body");f.appendTo(a);this.s.heights.row=e("tr",d).eq(1).outerHeight();f.remove()},_draw:function(){var a=this,b=this.s.heights,c=this.dom.scroller.scrollTop,d=e(this.s.dt.nTable).height(),f=this.s.dt._iDisplayStart,m=this.s.dt._iDisplayLength,h=this.s.dt.fnRecordsDisplay();this.s.skip=!0;!this.s.dt.bSorted&&!this.s.dt.bFiltered||0!==f||this.s.dt._drawHold||(this.s.topRowFloat=0);c="jump"===this.s.scrollType?
+this._domain("virtualToPhysical",this.s.topRowFloat*b.row):c;this.s.baseScrollTop=c;this.s.baseRowTop=this.s.topRowFloat;var g=c-(this.s.topRowFloat-f)*b.row;0===f?g=0:f+m>=h&&(g=b.scroll-d);this.dom.table.style.top=g+"px";this.s.tableTop=g;this.s.tableBottom=d+this.s.tableTop;d=(c-this.s.tableTop)*this.s.boundaryScale;this.s.redrawTop=c-d;this.s.redrawBottom=c+d>b.scroll-b.viewport-b.row?b.scroll-b.viewport-b.row:c+d;this.s.skip=!1;this.s.dt.oFeatures.bStateSave&&null!==this.s.dt.oLoadedState&&"undefined"!=
+typeof this.s.dt.oLoadedState.iScroller?((c=!this.s.dt.sAjaxSource&&!a.s.dt.ajax||this.s.dt.oFeatures.bServerSide?!1:!0)&&2==this.s.dt.iDraw||!c&&1==this.s.dt.iDraw)&&setTimeout(function(){e(a.dom.scroller).scrollTop(a.s.dt.oLoadedState.iScroller);a.s.redrawTop=a.s.dt.oLoadedState.iScroller-b.viewport/2;setTimeout(function(){a.s.ingnoreScroll=!1},0)},0):a.s.ingnoreScroll=!1;this.s.dt.oFeatures.bInfo&&setTimeout(function(){a._info.call(a)},0);this.dom.loader&&this.s.loaderVisible&&(this.dom.loader.css("display",
+"none"),this.s.loaderVisible=!1)},_domain:function(a,b){var c=this.s.heights;if(c.virtual===c.scroll||1E4>b)return b;if("virtualToPhysical"===a&&b>=c.virtual-1E4)return a=c.virtual-b,c.scroll-a;if("physicalToVirtual"===a&&b>=c.scroll-1E4)return a=c.scroll-b,c.virtual-a;c=(c.virtual-1E4-1E4)/(c.scroll-1E4-1E4);var d=1E4-1E4*c;return"virtualToPhysical"===a?(b-d)/c:c*b+d},_info:function(){if(this.s.dt.oFeatures.bInfo){var a=this.s.dt,b=a.oLanguage,c=this.dom.scroller.scrollTop,d=Math.floor(this.pixelsToRow(c,
+!1,this.s.ani)+1),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay();c=Math.ceil(this.pixelsToRow(c+this.s.heights.viewport,!1,this.s.ani));c=g<c?g:c;var h=a.fnFormatNumber(d),k=a.fnFormatNumber(c),l=a.fnFormatNumber(f),n=a.fnFormatNumber(g);h=0===a.fnRecordsDisplay()&&a.fnRecordsDisplay()==a.fnRecordsTotal()?b.sInfoEmpty+b.sInfoPostFix:0===a.fnRecordsDisplay()?b.sInfoEmpty+" "+b.sInfoFiltered.replace("_MAX_",l)+b.sInfoPostFix:a.fnRecordsDisplay()==a.fnRecordsTotal()?b.sInfo.replace("_START_",h).replace("_END_",
+k).replace("_MAX_",l).replace("_TOTAL_",n)+b.sInfoPostFix:b.sInfo.replace("_START_",h).replace("_END_",k).replace("_MAX_",l).replace("_TOTAL_",n)+" "+b.sInfoFiltered.replace("_MAX_",a.fnFormatNumber(a.fnRecordsTotal()))+b.sInfoPostFix;(b=b.fnInfoCallback)&&(h=b.call(a.oInstance,a,d,c,f,g,h));d=a.aanFeatures.i;if("undefined"!=typeof d)for(f=0,g=d.length;f<g;f++)e(d[f]).html(h);e(a.nTable).triggerHandler("info.dt")}},_parseHeight:function(a){var b,c=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(px|em|rem|vh)$/.exec(a);
+if(null===c)return 0;a=parseFloat(c[1]);c=c[2];"px"===c?b=a:"vh"===c?b=a/100*e(h).height():"rem"===c?b=a*parseFloat(e(":root").css("font-size")):"em"===c&&(b=a*parseFloat(e("body").css("font-size")));return b?b:0},_scroll:function(){var a=this,b=this.s.heights,c=this.dom.scroller.scrollTop;if(!this.s.skip&&!this.s.ingnoreScroll&&c!==this.s.lastScrollTop)if(this.s.dt.bFiltered||this.s.dt.bSorted)this.s.lastScrollTop=0;else{this._info();clearTimeout(this.s.stateTO);this.s.stateTO=setTimeout(function(){a.s.dtApi.state.save()},
+250);this.s.scrollType=Math.abs(c-this.s.lastScrollTop)>b.viewport?"jump":"cont";this.s.topRowFloat="cont"===this.s.scrollType?this.pixelsToRow(c,!1,!1):this._domain("physicalToVirtual",c)/b.row;0>this.s.topRowFloat&&(this.s.topRowFloat=0);if(this.s.forceReposition||c<this.s.redrawTop||c>this.s.redrawBottom){var d=Math.ceil((this.s.displayBuffer-1)/2*this.s.viewportRows);var f=parseInt(this.s.topRowFloat,10)-d;this.s.forceReposition=!1;0>=f?f=0:f+this.s.dt._iDisplayLength>this.s.dt.fnRecordsDisplay()?
+(f=this.s.dt.fnRecordsDisplay()-this.s.dt._iDisplayLength,0>f&&(f=0)):0!==f%2&&f++;f!=this.s.dt._iDisplayStart&&(this.s.tableTop=e(this.s.dt.nTable).offset().top,this.s.tableBottom=e(this.s.dt.nTable).height()+this.s.tableTop,d=function(){null===a.s.scrollDrawReq&&(a.s.scrollDrawReq=c);a.s.dt._iDisplayStart=f;a.s.dt.oApi._fnDraw(a.s.dt)},this.s.dt.oFeatures.bServerSide?(clearTimeout(this.s.drawTO),this.s.drawTO=setTimeout(d,this.s.serverWait)):d(),this.dom.loader&&!this.s.loaderVisible&&(this.dom.loader.css("display",
+"block"),this.s.loaderVisible=!0))}else this.s.topRowFloat=this.pixelsToRow(c,!1,!0);this.s.lastScrollTop=c;this.s.stateSaveThrottle();"jump"===this.s.scrollType&&this.s.mousedown&&this.dom.label.html(this.s.dt.fnFormatNumber(parseInt(this.s.topRowFloat,10)+1)).css("top",c+c*b.labelFactor).css("display","block")}},_scrollForce:function(){var a=this.s.heights;a.virtual=a.row*this.s.dt.fnRecordsDisplay();a.scroll=a.virtual;1E6<a.scroll&&(a.scroll=1E6);this.dom.force.style.height=a.scroll>this.s.heights.row?
+a.scroll+"px":this.s.heights.row+"px"}});g.defaults={boundaryScale:.5,displayBuffer:9,loadingIndicator:!1,rowHeight:"auto",serverWait:200};g.oDefaults=g.defaults;g.version="2.0.1";e(k).on("preInit.dt.dtscroller",function(a,b){if("dt"===a.namespace){a=b.oInit.scroller;var c=p.defaults.scroller;if(a||c)c=e.extend({},a,c),!1!==a&&new g(b,c)}});e.fn.dataTable.Scroller=g;e.fn.DataTable.Scroller=g;var l=e.fn.dataTable.Api;l.register("scroller()",function(){return this});l.register("scroller().rowToPixels()",
+function(a,b,c){var d=this.context;if(d.length&&d[0].oScroller)return d[0].oScroller.rowToPixels(a,b,c)});l.register("scroller().pixelsToRow()",function(a,b,c){var d=this.context;if(d.length&&d[0].oScroller)return d[0].oScroller.pixelsToRow(a,b,c)});l.register(["scroller().scrollToRow()","scroller.toPosition()"],function(a,b){this.iterator("table",function(c){c.oScroller&&c.oScroller.scrollToRow(a,b)});return this});l.register("row().scrollTo()",function(a){var b=this;this.iterator("row",function(c,
+d){c.oScroller&&(d=b.rows({order:"applied",search:"applied"}).indexes().indexOf(d),c.oScroller.scrollToRow(d,a))});return this});l.register("scroller.measure()",function(a){this.iterator("table",function(b){b.oScroller&&b.oScroller.measure(a)});return this});l.register("scroller.page()",function(){var a=this.context;if(a.length&&a[0].oScroller)return a[0].oScroller.pageInfo()});return g});
+
+
+/*!
+ SearchPanes 1.0.1
+ 2019-2020 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.checkEs6ConformanceViaProxy=function(){try{var b={},m=Object.create(new $jscomp.global.Proxy(b,{get:function(k,h,f){return k==b&&"q"==h&&f==m}}));return!0===m.q}catch(k){return!1}};$jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS=!1;
+$jscomp.ES6_CONFORMANCE=$jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS&&$jscomp.checkEs6ConformanceViaProxy();$jscomp.arrayIteratorImpl=function(b){var m=0;return function(){return m<b.length?{done:!1,value:b[m++]}:{done:!0}}};$jscomp.arrayIterator=function(b){return{next:$jscomp.arrayIteratorImpl(b)}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(b,m,k){b!=Array.prototype&&b!=Object.prototype&&(b[m]=k.value)};$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.SymbolClass=function(b,m){this.$jscomp$symbol$id_=b;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:m})};
+$jscomp.SymbolClass.prototype.toString=function(){return this.$jscomp$symbol$id_};$jscomp.Symbol=function(){function b(k){if(this instanceof b)throw new TypeError("Symbol is not a constructor");return new $jscomp.SymbolClass($jscomp.SYMBOL_PREFIX+(k||"")+"_"+m++,k)}var m=0;return b}();
+$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.iterator;b||(b=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("Symbol.iterator"));"function"!=typeof Array.prototype[b]&&$jscomp.defineProperty(Array.prototype,b,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}});$jscomp.initSymbolIterator=function(){}};
+$jscomp.initSymbolAsyncIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.asyncIterator;b||(b=$jscomp.global.Symbol.asyncIterator=$jscomp.global.Symbol("Symbol.asyncIterator"));$jscomp.initSymbolAsyncIterator=function(){}};$jscomp.iteratorPrototype=function(b){$jscomp.initSymbolIterator();b={next:b};b[$jscomp.global.Symbol.iterator]=function(){return this};return b};
+$jscomp.makeIterator=function(b){var m="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];return m?m.call(b):$jscomp.arrayIterator(b)};$jscomp.owns=function(b,m){return Object.prototype.hasOwnProperty.call(b,m)};$jscomp.polyfill=function(b,m,k,h){if(m){k=$jscomp.global;b=b.split(".");for(h=0;h<b.length-1;h++){var f=b[h];f in k||(k[f]={});k=k[f]}b=b[b.length-1];h=k[b];m=m(h);m!=h&&null!=m&&$jscomp.defineProperty(k,b,{configurable:!0,writable:!0,value:m})}};
+$jscomp.polyfill("WeakMap",function(b){function m(){if(!b||!Object.seal)return!1;try{var a=Object.seal({}),e=Object.seal({}),d=new b([[a,2],[e,3]]);if(2!=d.get(a)||3!=d.get(e))return!1;d.delete(a);d.set(e,4);return!d.has(a)&&4==d.get(e)}catch(n){return!1}}function k(){}function h(c){if(!$jscomp.owns(c,a)){var e=new k;$jscomp.defineProperty(c,a,{value:e})}}function f(a){var c=Object[a];c&&(Object[a]=function(a){if(a instanceof k)return a;h(a);return c(a)})}if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(b&&
+$jscomp.ES6_CONFORMANCE)return b}else if(m())return b;var a="$jscomp_hidden_"+Math.random();f("freeze");f("preventExtensions");f("seal");var d=0,g=function(a){this.id_=(d+=Math.random()+1).toString();if(a){a=$jscomp.makeIterator(a);for(var c;!(c=a.next()).done;)c=c.value,this.set(c[0],c[1])}};g.prototype.set=function(c,e){h(c);if(!$jscomp.owns(c,a))throw Error("WeakMap key fail: "+c);c[a][this.id_]=e;return this};g.prototype.get=function(c){return $jscomp.owns(c,a)?c[a][this.id_]:void 0};g.prototype.has=
+function(c){return $jscomp.owns(c,a)&&$jscomp.owns(c[a],this.id_)};g.prototype.delete=function(c){return $jscomp.owns(c,a)&&$jscomp.owns(c[a],this.id_)?delete c[a][this.id_]:!1};return g},"es6","es3");$jscomp.MapEntry=function(){};
+$jscomp.polyfill("Map",function(b){function m(){if($jscomp.ASSUME_NO_NATIVE_MAP||!b||"function"!=typeof b||!b.prototype.entries||"function"!=typeof Object.seal)return!1;try{var a=Object.seal({x:4}),e=new b($jscomp.makeIterator([[a,"s"]]));if("s"!=e.get(a)||1!=e.size||e.get({x:4})||e.set({x:4},"t")!=e||2!=e.size)return!1;var d=e.entries(),g=d.next();if(g.done||g.value[0]!=a||"s"!=g.value[1])return!1;g=d.next();return g.done||4!=g.value[0].x||"t"!=g.value[1]||!d.next().done?!1:!0}catch(l){return!1}}
+if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(b&&$jscomp.ES6_CONFORMANCE)return b}else if(m())return b;$jscomp.initSymbolIterator();var k=new WeakMap,h=function(a){this.data_={};this.head_=d();this.size=0;if(a){a=$jscomp.makeIterator(a);for(var c;!(c=a.next()).done;)c=c.value,this.set(c[0],c[1])}};h.prototype.set=function(a,d){a=0===a?0:a;var c=f(this,a);c.list||(c.list=this.data_[c.id]=[]);c.entry?c.entry.value=d:(c.entry={next:this.head_,previous:this.head_.previous,head:this.head_,key:a,
+value:d},c.list.push(c.entry),this.head_.previous.next=c.entry,this.head_.previous=c.entry,this.size++);return this};h.prototype.delete=function(a){a=f(this,a);return a.entry&&a.list?(a.list.splice(a.index,1),a.list.length||delete this.data_[a.id],a.entry.previous.next=a.entry.next,a.entry.next.previous=a.entry.previous,a.entry.head=null,this.size--,!0):!1};h.prototype.clear=function(){this.data_={};this.head_=this.head_.previous=d();this.size=0};h.prototype.has=function(a){return!!f(this,a).entry};
+h.prototype.get=function(a){return(a=f(this,a).entry)&&a.value};h.prototype.entries=function(){return a(this,function(a){return[a.key,a.value]})};h.prototype.keys=function(){return a(this,function(a){return a.key})};h.prototype.values=function(){return a(this,function(a){return a.value})};h.prototype.forEach=function(a,d){for(var c=this.entries(),e;!(e=c.next()).done;)e=e.value,a.call(d,e[1],e[0],this)};h.prototype[Symbol.iterator]=h.prototype.entries;var f=function(a,d){var c;var e=(c=d)&&typeof c;
+"object"==e||"function"==e?k.has(c)?c=k.get(c):(e=""+ ++g,k.set(c,e),c=e):c="p_"+c;if((e=a.data_[c])&&$jscomp.owns(a.data_,c))for(a=0;a<e.length;a++){var f=e[a];if(d!==d&&f.key!==f.key||d===f.key)return{id:c,list:e,index:a,entry:f}}return{id:c,list:e,index:-1,entry:void 0}},a=function(a,d){var c=a.head_;return $jscomp.iteratorPrototype(function(){if(c){for(;c.head!=a.head_;)c=c.previous;for(;c.next!=c.head;)return c=c.next,{done:!1,value:d(c)};c=null}return{done:!0,value:void 0}})},d=function(){var a=
+{};return a.previous=a.next=a.head=a},g=0;return h},"es6","es3");$jscomp.findInternal=function(b,m,k){b instanceof String&&(b=String(b));for(var h=b.length,f=0;f<h;f++){var a=b[f];if(m.call(k,a,f,b))return{i:f,v:a}}return{i:-1,v:void 0}};$jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(b,k){return $jscomp.findInternal(this,b,k).v}},"es6","es3");
+$jscomp.iteratorFromArray=function(b,m){$jscomp.initSymbolIterator();b instanceof String&&(b+="");var k=0,h={next:function(){if(k<b.length){var f=k++;return{value:m(f,b[f]),done:!1}}h.next=function(){return{done:!0,value:void 0}};return h.next()}};h[Symbol.iterator]=function(){return h};return h};$jscomp.polyfill("Array.prototype.keys",function(b){return b?b:function(){return $jscomp.iteratorFromArray(this,function(b){return b})}},"es6","es3");
+$jscomp.polyfill("Array.prototype.findIndex",function(b){return b?b:function(b,k){return $jscomp.findInternal(this,b,k).i}},"es6","es3");
+(function(){var b=$.fn.dataTable,m=function(){function f(a,d,g,c,e,r){var n=this;void 0===r&&(r=null);if(!b||!b.versionCheck||!b.versionCheck("1.10.0"))throw Error("SearchPane requires DataTables 1.10 or newer");if(!b.select)throw Error("SearchPane requires Select");a=new b.Api(a);this.classes=$.extend(!0,{},f.classes);this.c=$.extend(!0,{},f.defaults,d);this.customPaneSettings=r;this.s={cascadeRegen:!1,clearing:!1,colOpts:[],deselect:!1,displayed:!1,dt:a,dtPane:void 0,filteringActive:!1,index:g,
+indexes:[],lastSelect:!1,redraw:!1,rowData:{arrayFilter:[],arrayOriginal:[],arrayTotals:[],bins:{},binsOriginal:{},binsTotal:{},filterMap:new Map},searchFunction:void 0,selectPresent:!1,updating:!1};d=a.columns().eq(0).toArray().length;this.colExists=this.s.index<d;this.c.layout=c;d=parseInt(c.split("-")[1],10);this.dom={buttonGroup:$("<div/>").addClass(this.classes.buttonGroup),clear:$('<button type="button">&#215;</button>').addClass(this.classes.dull).addClass(this.classes.paneButton).addClass(this.classes.clearButton),
+container:$("<div/>").addClass(this.classes.container).addClass(this.classes.layout+(7>d?c:c.split("-")[0]+"-6")),countButton:$('<button type="button"></button>').addClass(this.classes.paneButton).addClass(this.classes.countButton),dtP:$("<table><thead><tr><th>"+(this.colExists?$(a.column(this.colExists?this.s.index:0).header()).text():this.customPaneSettings.header||"Custom Pane")+"</th><th/></tr></thead></table>"),lower:$("<div/>").addClass(this.classes.subRow2).addClass(this.classes.narrowButton),
+nameButton:$('<button type="button"></button>').addClass(this.classes.paneButton).addClass(this.classes.nameButton),searchBox:$("<input/>").addClass(this.classes.paneInputButton).addClass(this.classes.search),searchButton:$('<button type = "button" class="'+this.classes.searchIcon+'"></button>').addClass(this.classes.paneButton),searchCont:$("<div/>").addClass(this.classes.searchCont),searchLabelCont:$("<div/>").addClass(this.classes.searchLabelCont),topRow:$("<div/>").addClass(this.classes.topRow),
+upper:$("<div/>").addClass(this.classes.subRow1).addClass(this.classes.narrowSearch)};this.s.displayed=!1;a=this.s.dt;this.selections=[];this.s.colOpts=this.colExists?this._getOptions():this._getBonusOptions();var l=this.s.colOpts;c=$('<button type="button">X</button>').addClass(this.classes.paneButton);$(c).text(a.i18n("searchPanes.clearPane","X"));this.dom.container.addClass(l.className);this.dom.container.addClass(null!==this.customPaneSettings&&void 0!==this.customPaneSettings.className?this.customPaneSettings.className:
+"");$(e).append(this.dom.container);var q=a.table(0).node();this.s.searchFunction=function(a,c,d,e){if(0===n.selections.length||a.nTable!==q)return!0;a="";n.colExists&&(a=c[n.s.index],"filter"!==l.orthogonal.filter&&(a=n.s.rowData.filterMap.get(d),a instanceof $.fn.dataTable.Api&&(a=a.toArray())));return n._search(a,d)};$.fn.dataTable.ext.search.push(this.s.searchFunction);if(this.c.clear)$(c).on("click",function(){n.dom.container.find(n.classes.search).each(function(){$(this).val("");$(this).trigger("input")});
+n.clearPane()});a.on("draw.dtsp",function(){n._adjustTopRow()});$(window).on("resize.dtsp",b.util.throttle(function(){n._adjustTopRow()}));a.on("column-reorder.dtsp",function(a,c,d){n.s.index=d.mapping[n.s.index]});return this}f.prototype.clearData=function(){this.s.rowData={arrayFilter:[],arrayOriginal:[],arrayTotals:[],bins:{},binsOriginal:{},binsTotal:{},filterMap:new Map}};f.prototype.clearPane=function(){this.s.dtPane.rows({selected:!0}).deselect();this.updateTable();return this};f.prototype.destroy=
+function(){$(this.s.dtPane).off(".dtsp");$(this.s.dt).off(".dtsp");$(this.dom.nameButton).off(".dtsp");$(this.dom.countButton).off(".dtsp");$(this.dom.clear).off(".dtsp");$(this.dom.searchButton).off(".dtsp");$(this.dom.container).remove();for(var a=$.fn.dataTable.ext.search.indexOf(this.s.searchFunction);-1!==a;)$.fn.dataTable.ext.search.splice(a,1),a=$.fn.dataTable.ext.search.indexOf(this.s.searchFunction);void 0!==this.s.dtPane&&this.s.dtPane.destroy()};f.prototype.getPaneCount=function(){return void 0!==
+this.s.dtPane?this.s.dtPane.rows({selected:!0}).data().toArray().length:0};f.prototype.rebuildPane=function(){this.clearData();void 0!==this.s.dtPane&&this.s.dtPane.clear().destroy();this.dom.container.removeClass(this.classes.hidden);this.s.displayed=!1;this._buildPane();return this};f.prototype.removePane=function(){this.s.displayed=!1;$(this.dom.container).hide()};f.prototype.setCascadeRegen=function(a){this.s.cascadeRegen=a};f.prototype.setClear=function(a){this.s.clearing=a};f.prototype.updatePane=
+function(a){void 0===a&&(a=!1);this.s.updating=!0;this._updateCommon(a);this.s.updating=!1};f.prototype.updateTable=function(){this.selections=this.s.dtPane.rows({selected:!0}).data().toArray();this._searchExtras();(this.c.cascadePanes||this.c.viewTotal)&&this.updatePane()};f.prototype._addOption=function(a,d,g,c,e,r){if(Array.isArray(a)||a instanceof b.Api)if(a instanceof b.Api&&(a=a.toArray(),d=d.toArray()),a.length===d.length)for(var f=0;f<a.length;f++)r[a[f]]?r[a[f]]++:(r[a[f]]=1,e.push({display:d[f],
+filter:a[f],sort:g,type:c}));else throw Error("display and filter not the same length");else"string"===typeof this.s.colOpts.orthogonal?r[a]?r[a]++:(r[a]=1,e.push({display:d,filter:a,sort:g,type:c})):e.push({display:d,filter:a,sort:g,type:c})};f.prototype._addRow=function(a,d,g,c,e,f){for(var r,b=0,q=this.s.indexes;b<q.length;b++){var p=q[b];p.filter===d&&(r=p.index)}void 0===r&&(r=this.s.indexes.length,this.s.indexes.push({filter:d,index:r}));return this.s.dtPane.row.add({display:""!==a?a:this.c.emptyMessage,
+filter:d,index:r,shown:g,sort:""!==e?e:this.c.emptyMessage,total:c,type:f})};f.prototype._adjustTopRow=function(){var a=this.dom.container.find("."+this.classes.subRowsContainer),d=this.dom.container.find(".dtsp-subRow1"),g=this.dom.container.find(".dtsp-subRow2"),c=this.dom.container.find("."+this.classes.topRow);(252>$(a[0]).width()||252>$(c[0]).width())&&0!==$(a[0]).width()?($(a[0]).addClass(this.classes.narrow),$(d[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowSearch),$(g[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowButton)):
+($(a[0]).removeClass(this.classes.narrow),$(d[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowSearch),$(g[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowButton))};f.prototype._buildPane=function(){var a=this;this.selections=[];var d=this.s.dt,g=d.column(this.colExists?this.s.index:0),c=this.s.colOpts,e=this.s.rowData,r=d.i18n("searchPanes.count","{total}"),f=d.i18n("searchPanes.countFiltered","{shown} ({total})"),l=d.state.loaded();if(this.colExists){var q=
+-1;if(l&&l.searchPanes&&l.searchPanes.panes)for(var p=0;p<l.searchPanes.panes.length;p++)if(l.searchPanes.panes[p].id===this.s.index){q=p;break}if((!1===c.show||void 0!==c.show&&!0!==c.show)&&-1===q)return this.dom.container.addClass(this.classes.hidden),this.s.displayed=!1;if(!0===c.show||-1!==q)this.s.displayed=!0;if(0===e.arrayFilter.length)if(this._populatePane(),l&&l.searchPanes&&l.searchPanes.panes)if(-1!==q)e.binsOriginal=l.searchPanes.panes[q].bins,e.arrayOriginal=l.searchPanes.panes[q].arrayFilter;
+else{this.dom.container.addClass(this.classes.hidden);this.s.displayed=!1;return}else e.arrayOriginal=e.arrayFilter,e.binsOriginal=e.bins;p=Object.keys(e.binsOriginal).length;q=this._uniqueRatio(p,d.rows()[0].length);if(!1===this.s.displayed&&((void 0===c.show&&null===c.threshold?q>this.c.threshold:q>c.threshold)||!0!==c.show&&1>=p)){this.dom.container.addClass(this.classes.hidden);this.s.displayed=!1;return}this.c.viewTotal&&0===e.arrayTotals.length?this._detailsPane():e.binsTotal=e.bins;this.dom.container.addClass(this.classes.show)}this.s.displayed=
+!0;this._displayPane();this.dom.dtP.on("stateLoadParams.dt",function(a,c,e){$.isEmptyObject(d.state.loaded())&&$.each(e,function(a,c){delete e[a]})});p=$.fn.dataTable.ext.errMode;$.fn.dataTable.ext.errMode="none";q=b.Scroller;this.s.dtPane=$(this.dom.dtP).DataTable($.extend(!0,{dom:"t",columnDefs:[{className:"dtsp-nameColumn",data:"display",render:function(d,e,g){if("sort"===e)return g.sort;if("type"===e)return g.type;var b;a.s.filteringActive&&a.c.viewTotal?b=f.replace(/{total}/,g.total):b=r.replace(/{total}/,
+g.total);for(b=b.replace(/{shown}/,g.shown);-1!==b.indexOf("{total}");)b=b.replace(/{total}/,g.total);for(;-1!==b.indexOf("{shown}");)b=b.replace(/{shown}/,g.shown);e='<span class="'+a.classes.pill+'">'+b+"</span>";if(a.c.hideCount||c.hideCount)e="";return a.c.dataLength?d.length>a.c.dataLength?'<span class="'+a.classes.name+'">'+d.substr(0,a.c.dataLength)+"...</span>"+e:'<span class="'+a.classes.name+'">'+d+"</span>"+e:'<span class="'+a.classes.name+'">'+d+"</span>"+e},targets:0,type:void 0!==d.settings()[0].aoColumns[this.s.index]?
+d.settings()[0].aoColumns[this.s.index]._sManualType:null},{className:"dtsp-countColumn "+this.classes.badgePill,data:"total",targets:1,visible:!1}],deferRender:!0,info:!1,paging:q?!0:!1,scrollY:"200px",scroller:q?!0:!1,select:!0,stateSave:d.settings()[0].oFeatures.bStateSave?!0:!1},this.c.dtOpts,void 0!==c?c.dtOpts:{},null!==this.customPaneSettings&&void 0!==this.customPaneSettings.dtOpts?this.customPaneSettings.dtOpts:{}));$(this.dom.dtP).addClass(this.classes.table);$(this.dom.searchBox).attr("placeholder",
+void 0!==c.header?c.header:this.colExists?d.settings()[0].aoColumns[this.s.index].sTitle:this.customPaneSettings.header||"Custom Pane");$.fn.dataTable.select.init(this.s.dtPane);$.fn.dataTable.ext.errMode=p;if(this.colExists){g=(g=g.search())?g.substr(1,g.length-2).split("|"):[];var k=0;e.arrayFilter.forEach(function(a){""===a.filter&&k++});p=0;for(g=e.arrayFilter.length;p<g;p++)!e.arrayFilter[p]||void 0===e.bins[e.arrayFilter[p].filter]&&this.c.cascadePanes?this._addRow(this.c.emptyMessage,k,k,this.c.emptyMessage,
+this.c.emptyMessage,this.c.emptyMessage):(q=this._addRow(e.arrayFilter[p].display,e.arrayFilter[p].filter,e.bins[e.arrayFilter[p].filter],e.binsTotal[e.arrayFilter[p].filter],e.arrayFilter[p].sort,e.arrayFilter[p].type),void 0!==c.preSelect&&-1!==c.preSelect.indexOf(e.arrayFilter[p].filter)&&q.select())}(void 0!==c.options||null!==this.customPaneSettings&&void 0!==this.customPaneSettings.options)&&this._getComparisonRows();b.select.init(this.s.dtPane);this.s.dtPane.draw();this.s.dtPane.on("select.dtsp",
+function(){clearTimeout(h);$(a.dom.clear).removeClass(a.classes.dull);a.s.selectPresent=!0;a.s.updating||a._makeSelection();a.s.selectPresent=!1});this.s.dt.on("stateSaveParams.dtsp",function(c,d,g){if($.isEmptyObject(g))a.s.dtPane.state.clear();else{c=[];if(void 0!==a.s.dtPane){c=a.s.dtPane.rows({selected:!0}).data().map(function(a){return a.filter.toString()}).toArray();var b=$(a.dom.searchBox).val();var f=a.s.dtPane.order();var r=e.binsOriginal;var n=e.arrayOriginal}void 0===g.searchPanes&&(g.searchPanes=
+{});void 0===g.searchPanes.panes&&(g.searchPanes.panes=[]);g.searchPanes.panes.push({arrayFilter:n,bins:r,id:a.s.index,order:f,searchTerm:b,selected:c})}});if(l&&l.searchPanes&&l.searchPanes.panes)for(this.c.cascadePanes||this._reloadSelect(l),g=0,l=l.searchPanes.panes;g<l.length;g++)p=l[g],p.id===this.s.index&&($(this.dom.searchBox).val(p.searchTerm),this.s.dt.order(p.order));this.s.dtPane.on("user-select.dtsp",function(a,c,d,e,g){g.stopPropagation()});$(this.dom.nameButton).on("click.dtsp",function(){var c=
+a.s.dtPane.order()[0][1];a.s.dtPane.order([0,"asc"===c?"desc":"asc"]).draw()});$(this.dom.countButton).on("click.dtsp",function(){var c=a.s.dtPane.order()[0][1];a.s.dtPane.order([1,"asc"===c?"desc":"asc"]).draw()});$(this.dom.clear).on("click.dtsp",function(){a.dom.container.find("."+a.classes.search).each(function(){$(this).val("");$(this).trigger("input")});a.clearPane()});$(this.dom.searchButton).on("click.dtsp",function(){$(a.dom.searchBox).focus()});$(this.dom.searchBox).on("input.dtsp",function(){a.s.dtPane.search($(a.dom.searchBox).val()).draw();
+a.s.dt.state.save()});var h;this.s.dtPane.on("deselect.dtsp",function(){h=setTimeout(function(){a.s.deselect=!0;0===a.s.dtPane.rows({selected:!0}).data().toArray().length&&$(a.dom.clear).addClass(a.classes.dull);a._makeSelection();a.s.deselect=!1;a.s.dt.state.save()},50)});this.s.dt.state.save();return!0};f.prototype._detailsPane=function(){var a=this,d=this.s.dt;this.s.rowData.arrayTotals=[];this.s.rowData.binsTotal={};var g=this.s.dt.settings()[0];d.rows().every(function(c){a._populatePaneArray(c,
+a.s.rowData.arrayTotals,g,a.s.rowData.binsTotal)})};f.prototype._displayPane=function(){var a=this.dom.container,d=this.s.colOpts,g=parseInt(this.c.layout.split("-")[1],10);$(this.dom.topRow).empty();$(this.dom.dtP).empty();$(this.dom.topRow).addClass(this.classes.topRow);3<g&&$(this.dom.container).addClass(this.classes.smallGap);$(this.dom.topRow).addClass(this.classes.subRowsContainer);$(this.dom.upper).appendTo(this.dom.topRow);$(this.dom.lower).appendTo(this.dom.topRow);$(this.dom.searchCont).appendTo(this.dom.upper);
+$(this.dom.buttonGroup).appendTo(this.dom.lower);(!1===this.c.dtOpts.searching||void 0!==d.dtOpts&&!1===d.dtOpts.searching||!this.c.controls||!d.controls||null!==this.customPaneSettings&&void 0!==this.customPaneSettings.dtOpts&&void 0!==this.customPaneSettings.dtOpts.searching&&!this.customPaneSettings.dtOpts.searching)&&$(this.dom.searchBox).attr("disabled","disabled").removeClass(this.classes.paneInputButton).addClass(this.classes.disabledButton);$(this.dom.searchBox).appendTo(this.dom.searchCont);
+this._searchContSetup();this.c.clear&&this.c.controls&&d.controls&&$(this.dom.clear).appendTo(this.dom.buttonGroup);this.c.orderable&&d.orderable&&this.c.controls&&d.controls&&$(this.dom.nameButton).appendTo(this.dom.buttonGroup);!this.c.hideCount&&!d.hideCount&&this.c.orderable&&d.orderable&&this.c.controls&&d.controls&&$(this.dom.countButton).appendTo(this.dom.buttonGroup);$(this.dom.topRow).prependTo(this.dom.container);$(a).append(this.dom.dtP);$(a).show()};f.prototype._findUnique=function(a,
+d){for(var g=[],c=0;c<d.length;c++){var e=d[c];-1===g.indexOf(e.filter)&&(a.push({display:e.display,filter:e.filter,sort:e.sort,type:e.type}),g.push(e.filter))}};f.prototype._getBonusOptions=function(){return $.extend(!0,{},f.defaults,{orthogonal:{threshold:null},threshold:null},void 0!==this.c?this.c:{})};f.prototype._getComparisonRows=function(){var a=this.s.colOpts;a=void 0!==a.options?a.options:null!==this.customPaneSettings&&void 0!==this.customPaneSettings.options?this.customPaneSettings.options:
+void 0;if(void 0!==a){var d=this.s.dt.rows({search:"applied"}).data().toArray(),g=this.s.dt.rows({search:"applied"}),c=this.s.dt.rows().data().toArray(),e=this.s.dt.rows(),b=[];this.s.dtPane.clear();for(var f=0;f<a.length;f++){var l=a[f],q=""!==l.label?l.label:this.c.emptyMessage,k=q,h="function"===typeof l.value?l.value:[],m=0,v=q,u=0;if("function"===typeof l.value){for(var t=0;t<d.length;t++)l.value.call(this.s.dt,d[t],g[0][t])&&m++;for(t=0;t<c.length;t++)l.value.call(this.s.dt,c[t],e[0][t])&&u++;
+"function"!==typeof h&&h.push(l.filter)}(!this.c.cascadePanes||this.c.cascadePanes&&0!==m)&&b.push(this._addRow(k,h,m,u,v,q))}return b}};f.prototype._getOptions=function(){return $.extend(!0,{},f.defaults,{orthogonal:{threshold:null},threshold:null},this.s.dt.settings()[0].aoColumns[this.s.index].searchPanes)};f.prototype._makeSelection=function(){this.updateTable();this.s.updating=!0;this.s.dt.draw();this.s.updating=!1};f.prototype._populatePane=function(){var a=this.s.dt;this.s.rowData.arrayFilter=
+[];this.s.rowData.bins={};var d=this.s.dt.settings()[0],g=0;for(a=!this.c.cascadePanes&&!this.c.viewTotal||this.s.clearing?a.rows().indexes():a.rows({search:"applied"}).indexes();g<a.length;g++)this._populatePaneArray(a[g],this.s.rowData.arrayFilter,d)};f.prototype._populatePaneArray=function(a,d,g,c){void 0===c&&(c=this.s.rowData.bins);var e=this.s.colOpts;if("string"===typeof e.orthogonal)g=g.oApi._fnGetCellData(g,a,this.s.index,e.orthogonal),this.s.rowData.filterMap.set(a,g),this._addOption(g,
+g,g,g,d,c);else{var b=g.oApi._fnGetCellData(g,a,this.s.index,e.orthogonal.search);this.s.rowData.filterMap.set(a,b);c[b]?c[b]++:(c[b]=1,this._addOption(b,g.oApi._fnGetCellData(g,a,this.s.index,e.orthogonal.display),g.oApi._fnGetCellData(g,a,this.s.index,e.orthogonal.sort),g.oApi._fnGetCellData(g,a,this.s.index,e.orthogonal.type),d,c))}};f.prototype._reloadSelect=function(a){if(void 0!==a){for(var d,g=0;g<a.searchPanes.panes.length;g++)if(a.searchPanes.panes[g].id===this.s.index){d=g;break}if(void 0!==
+d){g=this.s.dtPane;var c=g.rows({order:"index"}).data().map(function(a){return null!==a.filter?a.filter.toString():null}).toArray(),e=0;for(a=a.searchPanes.panes[d].selected;e<a.length;e++){d=a[e];var b=-1;null!==d&&(b=c.indexOf(d.toString()));-1<b&&(g.row(b).select(),this.s.dt.state.save())}}}};f.prototype._search=function(a,d){for(var g=this.s.colOpts,c=this.s.dt,e=0,b=this.selections;e<b.length;e++){var f=b[e];if(Array.isArray(a)){if(-1!==a.indexOf(f.filter))return!0}else if("function"===typeof f.filter)if(f.filter.call(c,
+c.row(d).data(),d)){if(this.s.redraw||this.updatePane(),"or"===g.combiner)return!0}else{if("and"===g.combiner)return!1}else if(a===f.filter)return!0}return"and"===g.combiner?!0:!1};f.prototype._searchContSetup=function(){this.c.controls&&this.s.colOpts.controls&&$(this.dom.searchButton).appendTo(this.dom.searchLabelCont);!1===this.c.dtOpts.searching||!1===this.s.colOpts.dtOpts.searching||null!==this.customPaneSettings&&void 0!==this.customPaneSettings.dtOpts&&void 0!==this.customPaneSettings.dtOpts.searching&&
+!this.customPaneSettings.dtOpts.searching||$(this.dom.searchLabelCont).appendTo(this.dom.searchCont)};f.prototype._searchExtras=function(){var a=this.s.updating;this.s.updating=!0;var d=this.s.dtPane.rows({selected:!0}).data().pluck("filter").toArray(),g=d.indexOf(this.c.emptyMessage),c=$(this.s.dtPane.table().container());-1<g&&(d[g]="");0<d.length?c.addClass(this.classes.selected):0===d.length&&c.removeClass(this.classes.selected);this.s.updating=a};f.prototype._uniqueRatio=function(a,d){return 0<
+d?a/d:1};f.prototype._updateCommon=function(a){void 0===a&&(a=!1);if(!(void 0===this.s.dtPane||this.s.filteringActive&&!this.c.cascadePanes&&!0!==a||!0===this.c.cascadePanes&&!0===this.s.selectPresent||this.s.lastSelect)){var d=this.s.colOpts,g=this.s.dtPane.rows({selected:!0}).data().toArray();a=$(this.s.dtPane.table().node()).parent()[0].scrollTop;var c=this.s.rowData;this.s.dtPane.clear();if(this.colExists){0===c.arrayFilter.length?this._populatePane():this.c.cascadePanes&&this.s.dt.rows().data().toArray().length===
+this.s.dt.rows({search:"applied"}).data().toArray().length?(c.arrayFilter=c.arrayOriginal,c.bins=c.binsOriginal):(this.c.viewTotal||this.c.cascadePanes)&&this._populatePane();this.c.viewTotal?this._detailsPane():c.binsTotal=c.bins;this.c.viewTotal&&!this.c.cascadePanes&&(c.arrayFilter=c.arrayTotals);for(var e=function(a){if(a&&(void 0!==c.bins[a.filter]&&0!==c.bins[a.filter]&&b.c.cascadePanes||!b.c.cascadePanes||b.s.clearing)){var d=b._addRow(a.display,a.filter,b.c.viewTotal?void 0!==c.bins[a.filter]?
+c.bins[a.filter]:0:c.bins[a.filter],b.c.viewTotal?String(c.binsTotal[a.filter]):c.bins[a.filter],a.sort,a.type),e=g.findIndex(function(c){return c.filter===a.filter});-1!==e&&(d.select(),g.splice(e,1))}},b=this,f=0,l=c.arrayFilter;f<l.length;f++)e(l[f])}if(void 0!==d.searchPanes&&void 0!==d.searchPanes.options||void 0!==d.options||null!==this.customPaneSettings&&void 0!==this.customPaneSettings.options)for(e=function(a){var c=g.findIndex(function(c){if(c.display===a.data().display)return!0});-1!==
+c&&(a.select(),g.splice(c,1))},f=0,l=this._getComparisonRows();f<l.length;f++)d=l[f],e(d);for(e=0;e<g.length;e++)d=g[e],d=this._addRow(d.display,d.filter,0,this.c.viewTotal?d.total:0,d.filter,d.filter),d.select();this.s.dtPane.draw();this.s.dtPane.table().node().parentNode.scrollTop=a}};f.version="1.0.1";f.classes={buttonGroup:"dtsp-buttonGroup",buttonSub:"dtsp-buttonSub",clear:"dtsp-clear",clearAll:"dtsp-clearAll",clearButton:"clearButton",container:"dtsp-searchPane",countButton:"dtsp-countButton",
+disabledButton:"dtsp-disabledButton",dull:"dtsp-dull",hidden:"dtsp-hidden",hide:"dtsp-hide",layout:"dtsp-",name:"dtsp-name",nameButton:"dtsp-nameButton",narrow:"dtsp-narrow",paneButton:"dtsp-paneButton",paneInputButton:"dtsp-paneInputButton",pill:"dtsp-pill",search:"dtsp-search",searchCont:"dtsp-searchCont",searchIcon:"dtsp-searchIcon",searchLabelCont:"dtsp-searchButtonCont",selected:"dtsp-selected",smallGap:"dtsp-smallGap",subRow1:"dtsp-subRow1",subRow2:"dtsp-subRow2",subRowsContainer:"dtsp-subRowsContainer",
+title:"dtsp-title",topRow:"dtsp-topRow"};f.defaults={cascadePanes:!1,clear:!0,combiner:"or",controls:!0,container:function(a){return a.table().container()},dataLength:30,dtOpts:{},emptyMessage:"<i>No Data</i>",hideCount:!1,layout:"columns-3",orderable:!0,orthogonal:{display:"display",hideCount:!1,search:"filter",show:void 0,sort:"sort",threshold:.6,type:"type"},preSelect:[],threshold:.6,viewTotal:!1};return f}(),k=$.fn.dataTable,h=function(){function b(a,d,g){var c=this;void 0===g&&(g=!1);this.regenerating=
+!1;if(!k||!k.versionCheck||!k.versionCheck("1.10.0"))throw Error("SearchPane requires DataTables 1.10 or newer");if(!k.select)throw Error("SearchPane requires Select");var e=new k.Api(a);this.classes=$.extend(!0,{},b.classes);this.c=$.extend(!0,{},b.defaults,d);this.dom={clearAll:$('<button type="button">Clear All</button>').addClass(this.classes.clearAll),container:$("<div/>").addClass(this.classes.panes).text(e.i18n("searchPanes.loadMessage","Loading Search Panes...")),emptyMessage:$("<div/>").addClass(this.classes.emptyMessage),
+options:$("<div/>").addClass(this.classes.container),panes:$("<div/>").addClass(this.classes.container),title:$("<div/>").addClass(this.classes.title),titleRow:$("<div/>").addClass(this.classes.titleRow),wrapper:$("<div/>")};this.s={colOpts:[],dt:e,filterPane:-1,panes:[],selectionList:[],updating:!1};e.settings()[0]._searchPanes=this;this.dom.clearAll.text(e.i18n("searchPanes.clearMessage","Clear All"));this._getState();if(this.s.dt.settings()[0]._bInitComplete||g)this._paneDeclare(e,a,d);else e.on("preInit.dt",
+function(){c._paneDeclare(e,a,d)})}b.prototype.clearSelections=function(){this.dom.container.find(this.classes.search).each(function(){$(this).val("");$(this).trigger("input")});for(var a=[],d=0,b=this.s.panes;d<b.length;d++){var c=b[d];void 0!==c.s.dtPane&&a.push(c.clearPane())}this.s.dt.draw();return a};b.prototype.getNode=function(){return this.dom.container};b.prototype.rebuild=function(a){void 0===a&&(a=!1);$(this.dom.emptyMessage).remove();var d=[];this.clearSelections();for(var b=0,c=this.s.panes;b<
+c.length;b++){var e=c[b];if(!1===a||e.s.index===a)e.clearData(),d.push(e.rebuildPane())}this._updateFilterCount();this._attachPaneContainer();return 1===d.length?d[0]:d};b.prototype.redrawPanes=function(){var a=this.s.dt;if(!this.s.updating){var d=!0,b=this.s.filterPane;if(a.rows({search:"applied"}).data().toArray().length===a.rows().data().toArray().length)d=!1;else if(this.c.viewTotal)for(var c=0,e=this.s.panes;c<e.length;c++){var f=e[c];if(void 0!==f.s.dtPane){var n=f.s.dtPane.rows({selected:!0}).data().toArray().length;
+0<n&&-1===b?b=f.s.index:0<n&&(b=null)}}e=void 0;c=[];if(this.regenerating){c=0;for(a=this.s.panes;c<a.length;c++)if(f=a[c],void 0!==f.s.dtPane){e=!0;f.s.filteringActive=!0;if(-1!==b&&null!==b&&b===f.s.index||!1===d)e=!1,f.s.filteringActive=!1;f.updatePane(e?d:e)}this._updateFilterCount()}else{n=0;for(var l=this.s.panes;n<l.length;n++)if(f=l[n],f.s.selectPresent){this.s.selectionList.push({index:f.s.index,rows:f.s.dtPane.rows({selected:!0}).data().toArray(),protect:!1});a.state.save();break}else if(f.s.deselect){e=
+f.s.index;var h=f.s.dtPane.rows({selected:!0}).data().toArray();0<h.length&&this.s.selectionList.push({index:f.s.index,rows:h,protect:!0})}if(0<this.s.selectionList.length)for(a=this.s.selectionList[this.s.selectionList.length-1].index,n=0,l=this.s.panes;n<l.length;n++)f=l[n],f.s.lastSelect=f.s.index===a&&1===this.s.selectionList.length;for(f=0;f<this.s.selectionList.length;f++)if(this.s.selectionList[f].index!==e||!0===this.s.selectionList[f].protect){a=!1;for(n=f+1;n<this.s.selectionList.length;n++)this.s.selectionList[n].index===
+this.s.selectionList[f].index&&(a=!0);a||(c.push(this.s.selectionList[f]),this.s.selectionList[f].protect=!1)}a=0;for(n=this.s.panes;a<n.length;a++)if(f=n[a],void 0!==f.s.dtPane){e=!0;f.s.filteringActive=!0;if(-1!==b&&null!==b&&b===f.s.index||!1===d)e=!1,f.s.filteringActive=!1;f.updatePane(e?d:!1)}this._updateFilterCount();if(0<c.length&&c.length<this.s.selectionList.length)for(this._cascadeRegen(c),a=c[c.length-1].index,b=0,c=this.s.panes;b<c.length;b++)f=c[b],f.s.lastSelect=f.s.index===a&&1===this.s.selectionList.length;
+else if(0<c.length)for(f=0,c=this.s.panes;f<c.length;f++)if(a=c[f],void 0!==a.s.dtPane){e=!0;a.s.filteringActive=!0;if(-1!==b&&null!==b&&b===a.s.index||!1===d)e=!1,a.s.filteringActive=!1;a.updatePane(e?d:e)}}d||(this.s.selectionList=[])}};b.prototype._attach=function(){$(this.dom.container).removeClass(this.classes.hide);$(this.dom.titleRow).removeClass(this.classes.hide);$(this.dom.titleRow).remove();$(this.dom.title).appendTo(this.dom.titleRow);this.c.clear&&$(this.dom.clearAll).appendTo(this.dom.titleRow);
+$(this.dom.titleRow).appendTo(this.dom.container);for(var a=0,d=this.s.panes;a<d.length;a++)$(d[a].dom.container).appendTo(this.dom.panes);$(this.dom.panes).appendTo(this.dom.container);0===$("div."+this.classes.container).length&&$(this.dom.container).prependTo(this.s.dt);return this.dom.container};b.prototype._attachExtras=function(){$(this.dom.container).removeClass(this.classes.hide);$(this.dom.titleRow).removeClass(this.classes.hide);$(this.dom.titleRow).remove();$(this.dom.title).appendTo(this.dom.titleRow);
+this.c.clear&&$(this.dom.clearAll).appendTo(this.dom.titleRow);$(this.dom.titleRow).appendTo(this.dom.container);return this.dom.container};b.prototype._attachMessage=function(){try{var a=this.s.dt.i18n("searchPanes.emptyPanes","No SearchPanes")}catch(d){a=null}if(null===a)$(this.dom.container).addClass(this.classes.hide),$(this.dom.titleRow).removeClass(this.classes.hide);else return $(this.dom.container).removeClass(this.classes.hide),$(this.dom.titleRow).addClass(this.classes.hide),$(this.dom.emptyMessage).text(a),
+this.dom.emptyMessage.appendTo(this.dom.container),this.dom.container};b.prototype._attachPaneContainer=function(){for(var a=0,d=this.s.panes;a<d.length;a++)if(!0===d[a].s.displayed)return this._attach();return this._attachMessage()};b.prototype._cascadeRegen=function(a){this.regenerating=!0;var d=-1;1===a.length&&(d=a[0].index);for(var b=0,c=this.s.panes;b<c.length;b++){var e=c[b];e.setCascadeRegen(!0);e.setClear(!0);(void 0!==e.s.dtPane&&e.s.index===d||void 0!==e.s.dtPane)&&e.clearPane();e.setClear(!1)}this._makeCascadeSelections(a);
+this.s.selectionList=a;a=0;for(d=this.s.panes;a<d.length;a++)e=d[a],e.setCascadeRegen(!1);this.regenerating=!1};b.prototype._checkMessage=function(){for(var a=0,d=this.s.panes;a<d.length;a++)if(!0===d[a].s.displayed)return;return this._attachMessage()};b.prototype._getState=function(){var a=this.s.dt.state.loaded();a&&a.searchPanes&&void 0!==a.searchPanes.selectionList&&(this.s.selectionList=a.searchPanes.selectionList)};b.prototype._makeCascadeSelections=function(a){for(var d=0;d<a.length;d++)for(var b=
+a[d],c=function(a){if(a.s.index===b.index&&void 0!==a.s.dtPane){0<a.s.dtPane.rows({selected:!0}).data().toArray().length&&void 0!==a.s.dtPane&&(a.setClear(!0),a.clearPane(),a.setClear(!1));for(var c=function(c){a.s.dtPane.rows().every(function(d){a.s.dtPane.row(d).data().filter===c.filter&&a.s.dtPane.row(d).select()})},d=0,f=b.rows;d<f.length;d++)c(f[d]);e._updateFilterCount()}},e=this,f=0,n=this.s.panes;f<n.length;f++)c(n[f]);this.s.dt.state.save()};b.prototype._paneDeclare=function(a,d,b){var c=
+this;a.columns(0<this.c.columns.length?this.c.columns:void 0).eq(0).each(function(a){c.s.panes.push(new m(d,b,a,c.c.layout,c.dom.panes))});for(var e=a.columns().eq(0).toArray().length,f=this.c.panes.length,g=0;g<f;g++)this.s.panes.push(new m(d,b,e+g,this.c.layout,this.dom.panes,this.c.panes[g]));this.s.dt.settings()[0]._bInitComplete?this._paneStartup(a):this.s.dt.settings()[0].aoInitComplete.push({fn:function(){c._paneStartup(a)}})};b.prototype._paneStartup=function(a){var d=this;500>=this.s.dt.page.info().recordsTotal?
+this._startup(a):setTimeout(function(){d._startup(a)},100)};b.prototype._startup=function(a){var d=this;$(this.dom.container).text("");this._attachExtras();$(this.dom.container).append(this.dom.panes);for(var b=0,c=this.s.panes;b<c.length;b++)c[b].rebuildPane();this._updateFilterCount();this._checkMessage();a.on("draw.dtsps",function(){d._updateFilterCount();(d.c.cascadePanes||d.c.viewTotal)&&d.redrawPanes();d.s.filterPane=-1});this.s.dt.on("stateSaveParams.dtsp",function(a,c,b){void 0===b.searchPanes&&
+(b.searchPanes={});b.searchPanes.selectionList=d.s.selectionList});0<this.s.selectionList.length&&this.c.cascadePanes&&this._cascadeRegen(this.s.selectionList);a.columns(0<this.c.columns.length?this.c.columns:void 0).eq(0).each(function(a){if(void 0!==d.s.panes[a]&&void 0!==d.s.panes[a].s.dtPane&&void 0!==d.s.panes[a].s.colOpts.preSelect)for(var c=d.s.panes[a].s.dtPane.rows().data().toArray().length,b=0;b<c;b++)-1!==d.s.panes[a].s.colOpts.preSelect.indexOf(d.s.panes[a].s.dtPane.cell(b,0).data())&&
+(d.s.panes[a].s.dtPane.row(b).select(),d.s.panes[a].updateTable())});this._updateFilterCount();a.on("destroy.dtsps",function(){for(var c=0,b=d.s.panes;c<b.length;c++)b[c].destroy();a.off(".dtsps");$(d.dom.clearAll).off(".dtsps");$(d.dom.container).remove();d.clearSelections()});if(this.c.clear)$(this.dom.clearAll).on("click.dtsps",function(){d.clearSelections()});a.settings()[0]._searchPanes=this};b.prototype._updateFilterCount=function(){for(var a=0,b=0,f=this.s.panes;b<f.length;b++){var c=f[b];
+void 0!==c.s.dtPane&&(a+=c.getPaneCount())}a=this.s.dt.i18n("searchPanes.title","Filters Active - %d",a);$(this.dom.title).text(a)};b.version="1.0.1";b.classes={clear:"dtsp-clear",clearAll:"dtsp-clearAll",container:"dtsp-searchPanes",emptyMessage:"dtsp-emptyMessage",hide:"dtsp-hidden",panes:"dtsp-panesContainer",search:"dtsp-search",title:"dtsp-title",titleRow:"dtsp-titleRow"};b.defaults={cascadePanes:!1,clear:!0,container:function(a){return a.table().container()},columns:[],layout:"columns-3",panes:[],
+viewTotal:!1};return b}();(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);d&&d.fn.dataTable||(d=require("datatables.net")(a,d).$);return b(d,a,a.document)}:b(window.jQuery,window,document)})(function(b,a,d){function f(a,b){void 0===b&&(b=!1);a=new c.Api(a);var d=a.init().searchPanes||c.defaults.searchPanes;return(new h(a,d,b)).getNode()}var c=b.fn.dataTable;
+b.fn.dataTable.SearchPanes=h;b.fn.DataTable.SearchPanes=h;b.fn.dataTable.SearchPane=m;b.fn.DataTable.SearchPane=m;c.Api.register("searchPanes.rebuild()",function(){return this.iterator("table",function(){this.searchPanes&&this.searchPanes.rebuild()})});c.Api.register("column().paneOptions()",function(a){return this.iterator("column",function(b){b=this.aoColumns[b];b.searchPanes||(b.searchPanes={});b.searchPanes.values=a;this.searchPanes&&this.searchPanes.rebuild()})});a=b.fn.dataTable.Api.register;
+a("searchPanes()",function(){return this});a("searchPanes.clearSelections()",function(){this.context[0]._searchPanes.clearSelections();return this});a("searchPanes.rebuildPane()",function(a){this.context[0]._searchPanes.rebuild(a);return this});a("searchPanes.container()",function(){return this.context[0]._searchPanes.getNode()});b.fn.dataTable.ext.buttons.searchPanesClear={text:"Clear Panes",action:function(a,b,c,d){b.searchPanes.clearSelections()}};b.fn.dataTable.ext.buttons.searchPanes={text:"Search Panes",
+init:function(a,c,d){var e=new b.fn.dataTable.SearchPanes(a,{filterChanged:function(b){a.button(c).text(a.i18n("searchPanes.collapse",{0:"SearchPanes",_:"SearchPanes (%d)"},b))}}),f=a.i18n("searchPanes.collapse","SearchPanes");a.button(c).text(f);d._panes=e},action:function(a,b,c,d){a.stopPropagation();this.popover(d._panes.getNode(),{align:"dt-container"});d._panes.adjust()}};b(d).on("preInit.dt.dtsp",function(a,b,d){"dt"===a.namespace&&(b.oInit.searchPanes||c.defaults.searchPanes)&&(b._searchPanes||
+f(b,!0))});c.ext.feature.push({cFeature:"P",fnInit:f});c.ext.features&&c.ext.features.register("searchPanes",f)})})();
+
+
+/*!
+   Copyright 2015-2019 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license/mit
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net/extensions/select
+ Select for DataTables 1.3.1
+ 2015-2019 SpryMedia Ltd - datatables.net/license/mit
+*/
+(function(f){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(k){return f(k,window,document)}):"object"===typeof exports?module.exports=function(k,p){k||(k=window);p&&p.fn.dataTable||(p=require("datatables.net")(k,p).$);return f(p,k,k.document)}:f(jQuery,window,document)})(function(f,k,p,h){function z(a,b,c){var d=function(c,b){if(c>b){var d=b;b=c;c=d}var e=!1;return a.columns(":visible").indexes().filter(function(a){a===c&&(e=!0);return a===b?(e=!1,!0):e})};var e=
+function(c,b){var d=a.rows({search:"applied"}).indexes();if(d.indexOf(c)>d.indexOf(b)){var e=b;b=c;c=e}var f=!1;return d.filter(function(a){a===c&&(f=!0);return a===b?(f=!1,!0):f})};a.cells({selected:!0}).any()||c?(d=d(c.column,b.column),c=e(c.row,b.row)):(d=d(0,b.column),c=e(0,b.row));c=a.cells(c,d).flatten();a.cells(b,{selected:!0}).any()?a.cells(c).deselect():a.cells(c).select()}function v(a){var b=a.settings()[0]._select.selector;f(a.table().container()).off("mousedown.dtSelect",b).off("mouseup.dtSelect",
+b).off("click.dtSelect",b);f("body").off("click.dtSelect"+a.table().node().id.replace(/[^a-zA-Z0-9\-_]/g,"-"))}function A(a){var b=f(a.table().container()),c=a.settings()[0],d=c._select.selector,e;b.on("mousedown.dtSelect",d,function(a){if(a.shiftKey||a.metaKey||a.ctrlKey)b.css("-moz-user-select","none").one("selectstart.dtSelect",d,function(){return!1});k.getSelection&&(e=k.getSelection())}).on("mouseup.dtSelect",d,function(){b.css("-moz-user-select","")}).on("click.dtSelect",d,function(c){var b=
+a.select.items();if(e){var d=k.getSelection();if((!d.anchorNode||f(d.anchorNode).closest("table")[0]===a.table().node())&&d!==e)return}d=a.settings()[0];var l=f.trim(a.settings()[0].oClasses.sWrapper).replace(/ +/g,".");if(f(c.target).closest("div."+l)[0]==a.table().container()&&(l=a.cell(f(c.target).closest("td, th")),l.any())){var g=f.Event("user-select.dt");m(a,g,[b,l,c]);g.isDefaultPrevented()||(g=l.index(),"row"===b?(b=g.row,w(c,a,d,"row",b)):"column"===b?(b=l.index().column,w(c,a,d,"column",
+b)):"cell"===b&&(b=l.index(),w(c,a,d,"cell",b)),d._select_lastCell=g)}});f("body").on("click.dtSelect"+a.table().node().id.replace(/[^a-zA-Z0-9\-_]/g,"-"),function(b){!c._select.blurable||f(b.target).parents().filter(a.table().container()).length||0===f(b.target).parents("html").length||f(b.target).parents("div.DTE").length||r(c,!0)})}function m(a,b,c,d){if(!d||a.flatten().length)"string"===typeof b&&(b+=".dt"),c.unshift(a),f(a.table().node()).trigger(b,c)}function B(a){var b=a.settings()[0];if(b._select.info&&
+b.aanFeatures.i&&"api"!==a.select.style()){var c=a.rows({selected:!0}).flatten().length,d=a.columns({selected:!0}).flatten().length,e=a.cells({selected:!0}).flatten().length,l=function(b,c,d){b.append(f('<span class="select-item"/>').append(a.i18n("select."+c+"s",{_:"%d "+c+"s selected",0:"",1:"1 "+c+" selected"},d)))};f.each(b.aanFeatures.i,function(b,a){a=f(a);b=f('<span class="select-info"/>');l(b,"row",c);l(b,"column",d);l(b,"cell",e);var g=a.children("span.select-info");g.length&&g.remove();
+""!==b.text()&&a.append(b)})}}function D(a){var b=new g.Api(a);a.aoRowCreatedCallback.push({fn:function(b,d,e){d=a.aoData[e];d._select_selected&&f(b).addClass(a._select.className);b=0;for(e=a.aoColumns.length;b<e;b++)(a.aoColumns[b]._select_selected||d._selected_cells&&d._selected_cells[b])&&f(d.anCells[b]).addClass(a._select.className)},sName:"select-deferRender"});b.on("preXhr.dt.dtSelect",function(){var a=b.rows({selected:!0}).ids(!0).filter(function(b){return b!==h}),d=b.cells({selected:!0}).eq(0).map(function(a){var c=
+b.row(a.row).id(!0);return c?{row:c,column:a.column}:h}).filter(function(b){return b!==h});b.one("draw.dt.dtSelect",function(){b.rows(a).select();d.any()&&d.each(function(a){b.cells(a.row,a.column).select()})})});b.on("draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt",function(){B(b)});b.on("destroy.dtSelect",function(){v(b);b.off(".dtSelect")})}function C(a,b,c,d){var e=a[b+"s"]({search:"applied"}).indexes();d=f.inArray(d,e);var g=f.inArray(c,e);if(a[b+"s"]({selected:!0}).any()||
+-1!==d){if(d>g){var u=g;g=d;d=u}e.splice(g+1,e.length);e.splice(0,d)}else e.splice(f.inArray(c,e)+1,e.length);a[b](c,{selected:!0}).any()?(e.splice(f.inArray(c,e),1),a[b+"s"](e).deselect()):a[b+"s"](e).select()}function r(a,b){if(b||"single"===a._select.style)a=new g.Api(a),a.rows({selected:!0}).deselect(),a.columns({selected:!0}).deselect(),a.cells({selected:!0}).deselect()}function w(a,b,c,d,e){var f=b.select.style(),g=b.select.toggleable(),h=b[d](e,{selected:!0}).any();if(!h||g)"os"===f?a.ctrlKey||
+a.metaKey?b[d](e).select(!h):a.shiftKey?"cell"===d?z(b,e,c._select_lastCell||null):C(b,d,e,c._select_lastCell?c._select_lastCell[d]:null):(a=b[d+"s"]({selected:!0}),h&&1===a.flatten().length?b[d](e).deselect():(a.deselect(),b[d](e).select())):"multi+shift"==f?a.shiftKey?"cell"===d?z(b,e,c._select_lastCell||null):C(b,d,e,c._select_lastCell?c._select_lastCell[d]:null):b[d](e).select(!h):b[d](e).select(!h)}function t(a,b){return function(c){return c.i18n("buttons."+a,b)}}function x(a){a=a._eventNamespace;
+return"draw.dt.DT"+a+" select.dt.DT"+a+" deselect.dt.DT"+a}function E(a,b){return-1!==f.inArray("rows",b.limitTo)&&a.rows({selected:!0}).any()||-1!==f.inArray("columns",b.limitTo)&&a.columns({selected:!0}).any()||-1!==f.inArray("cells",b.limitTo)&&a.cells({selected:!0}).any()?!0:!1}var g=f.fn.dataTable;g.select={};g.select.version="1.3.1";g.select.init=function(a){var b=a.settings()[0],c=b.oInit.select,d=g.defaults.select;c=c===h?d:c;d="row";var e="api",l=!1,u=!0,k=!0,m="td, th",p="selected",n=!1;
+b._select={};!0===c?(e="os",n=!0):"string"===typeof c?(e=c,n=!0):f.isPlainObject(c)&&(c.blurable!==h&&(l=c.blurable),c.toggleable!==h&&(u=c.toggleable),c.info!==h&&(k=c.info),c.items!==h&&(d=c.items),e=c.style!==h?c.style:"os",n=!0,c.selector!==h&&(m=c.selector),c.className!==h&&(p=c.className));a.select.selector(m);a.select.items(d);a.select.style(e);a.select.blurable(l);a.select.toggleable(u);a.select.info(k);b._select.className=p;f.fn.dataTable.ext.order["select-checkbox"]=function(b,a){return this.api().column(a,
+{order:"index"}).nodes().map(function(a){return"row"===b._select.items?f(a).parent().hasClass(b._select.className):"cell"===b._select.items?f(a).hasClass(b._select.className):!1})};!n&&f(a.table().node()).hasClass("selectable")&&a.select.style("os")};f.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(a,b){g.ext.selector[b.type].push(function(a,d,e){d=d.selected;var c=[];if(!0!==d&&!1!==d)return e;for(var f=0,g=e.length;f<g;f++){var h=a[b.prop][e[f]];(!0===d&&!0===h._select_selected||
+!1===d&&!h._select_selected)&&c.push(e[f])}return c})});g.ext.selector.cell.push(function(a,b,c){b=b.selected;var d=[];if(b===h)return c;for(var e=0,f=c.length;e<f;e++){var g=a.aoData[c[e].row];(!0===b&&g._selected_cells&&!0===g._selected_cells[c[e].column]||!(!1!==b||g._selected_cells&&g._selected_cells[c[e].column]))&&d.push(c[e])}return d});var n=g.Api.register,q=g.Api.registerPlural;n("select()",function(){return this.iterator("table",function(a){g.select.init(new g.Api(a))})});n("select.blurable()",
+function(a){return a===h?this.context[0]._select.blurable:this.iterator("table",function(b){b._select.blurable=a})});n("select.toggleable()",function(a){return a===h?this.context[0]._select.toggleable:this.iterator("table",function(b){b._select.toggleable=a})});n("select.info()",function(a){return B===h?this.context[0]._select.info:this.iterator("table",function(b){b._select.info=a})});n("select.items()",function(a){return a===h?this.context[0]._select.items:this.iterator("table",function(b){b._select.items=
+a;m(new g.Api(b),"selectItems",[a])})});n("select.style()",function(a){return a===h?this.context[0]._select.style:this.iterator("table",function(b){b._select.style=a;b._select_init||D(b);var c=new g.Api(b);v(c);"api"!==a&&A(c);m(new g.Api(b),"selectStyle",[a])})});n("select.selector()",function(a){return a===h?this.context[0]._select.selector:this.iterator("table",function(b){v(new g.Api(b));b._select.selector=a;"api"!==b._select.style&&A(new g.Api(b))})});q("rows().select()","row().select()",function(a){var b=
+this;if(!1===a)return this.deselect();this.iterator("row",function(b,a){r(b);b.aoData[a]._select_selected=!0;f(b.aoData[a].nTr).addClass(b._select.className)});this.iterator("table",function(a,d){m(b,"select",["row",b[d]],!0)});return this});q("columns().select()","column().select()",function(a){var b=this;if(!1===a)return this.deselect();this.iterator("column",function(b,a){r(b);b.aoColumns[a]._select_selected=!0;a=(new g.Api(b)).column(a);f(a.header()).addClass(b._select.className);f(a.footer()).addClass(b._select.className);
+a.nodes().to$().addClass(b._select.className)});this.iterator("table",function(a,d){m(b,"select",["column",b[d]],!0)});return this});q("cells().select()","cell().select()",function(a){var b=this;if(!1===a)return this.deselect();this.iterator("cell",function(b,a,e){r(b);a=b.aoData[a];a._selected_cells===h&&(a._selected_cells=[]);a._selected_cells[e]=!0;a.anCells&&f(a.anCells[e]).addClass(b._select.className)});this.iterator("table",function(a,d){m(b,"select",["cell",b[d]],!0)});return this});q("rows().deselect()",
+"row().deselect()",function(){var a=this;this.iterator("row",function(a,c){a.aoData[c]._select_selected=!1;f(a.aoData[c].nTr).removeClass(a._select.className)});this.iterator("table",function(b,c){m(a,"deselect",["row",a[c]],!0)});return this});q("columns().deselect()","column().deselect()",function(){var a=this;this.iterator("column",function(a,c){a.aoColumns[c]._select_selected=!1;var b=new g.Api(a),e=b.column(c);f(e.header()).removeClass(a._select.className);f(e.footer()).removeClass(a._select.className);
+b.cells(null,c).indexes().each(function(b){var c=a.aoData[b.row],d=c._selected_cells;!c.anCells||d&&d[b.column]||f(c.anCells[b.column]).removeClass(a._select.className)})});this.iterator("table",function(b,c){m(a,"deselect",["column",a[c]],!0)});return this});q("cells().deselect()","cell().deselect()",function(){var a=this;this.iterator("cell",function(a,c,d){c=a.aoData[c];c._selected_cells[d]=!1;c.anCells&&!a.aoColumns[d]._select_selected&&f(c.anCells[d]).removeClass(a._select.className)});this.iterator("table",
+function(b,c){m(a,"deselect",["cell",a[c]],!0)});return this});var y=0;f.extend(g.ext.buttons,{selected:{text:t("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(a,b,c){var d=this;c._eventNamespace=".select"+y++;a.on(x(c),function(){d.enable(E(a,c))});this.disable()},destroy:function(a,b,c){a.off(c._eventNamespace)}},selectedSingle:{text:t("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(a,b,c){var d=this;c._eventNamespace=
+".select"+y++;a.on(x(c),function(){var b=a.rows({selected:!0}).flatten().length+a.columns({selected:!0}).flatten().length+a.cells({selected:!0}).flatten().length;d.enable(1===b)});this.disable()},destroy:function(a,b,c){a.off(c._eventNamespace)}},selectAll:{text:t("selectAll","Select all"),className:"buttons-select-all",action:function(){this[this.select.items()+"s"]().select()}},selectNone:{text:t("selectNone","Deselect all"),className:"buttons-select-none",action:function(){r(this.settings()[0],
+!0)},init:function(a,b,c){var d=this;c._eventNamespace=".select"+y++;a.on(x(c),function(){var b=a.rows({selected:!0}).flatten().length+a.columns({selected:!0}).flatten().length+a.cells({selected:!0}).flatten().length;d.enable(0<b)});this.disable()},destroy:function(a,b,c){a.off(c._eventNamespace)}}});f.each(["Row","Column","Cell"],function(a,b){var c=b.toLowerCase();g.ext.buttons["select"+b+"s"]={text:t("select"+b+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},
+init:function(a){var b=this;a.on("selectItems.dt.DT",function(a,d,e){b.active(e===c)})}}});f(p).on("preInit.dt.dtSelect",function(a,b){"dt"===a.namespace&&g.select.init(new g.Api(b))});return g.select});
+
+
Index: public/vendors/dataTable/pdfmake-0.1.36/pdfmake.js
===================================================================
--- public/vendors/dataTable/pdfmake-0.1.36/pdfmake.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/pdfmake-0.1.36/pdfmake.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,50490 @@
+/*! pdfmake v0.1.36, @license MIT, @link http://pdfmake.org */
+(function webpackUniversalModuleDefinition(root, factory) {
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory();
+	else if(typeof define === 'function' && define.amd)
+		define([], factory);
+	else {
+		var a = factory();
+		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
+	}
+})(typeof self !== 'undefined' ? self : this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, {
+/******/ 				configurable: false,
+/******/ 				enumerable: true,
+/******/ 				get: getter
+/******/ 			});
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 122);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+function isString(variable) {
+	return typeof variable === 'string' || variable instanceof String;
+}
+
+function isNumber(variable) {
+	return typeof variable === 'number' || variable instanceof Number;
+}
+
+function isBoolean(variable) {
+	return typeof variable === 'boolean';
+}
+
+function isArray(variable) {
+	return Array.isArray(variable);
+}
+
+function isFunction(variable) {
+	return typeof variable === 'function';
+}
+
+function isObject(variable) {
+	return variable !== null && typeof variable === 'object';
+}
+
+function isNull(variable) {
+	return variable === null;
+}
+
+function isUndefined(variable) {
+	return variable === undefined;
+}
+
+function pack() {
+	var result = {};
+
+	for (var i = 0, l = arguments.length; i < l; i++) {
+		var obj = arguments[i];
+
+		if (obj) {
+			for (var key in obj) {
+				if (obj.hasOwnProperty(key)) {
+					result[key] = obj[key];
+				}
+			}
+		}
+	}
+
+	return result;
+}
+
+function offsetVector(vector, x, y) {
+	switch (vector.type) {
+		case 'ellipse':
+		case 'rect':
+			vector.x += x;
+			vector.y += y;
+			break;
+		case 'line':
+			vector.x1 += x;
+			vector.x2 += x;
+			vector.y1 += y;
+			vector.y2 += y;
+			break;
+		case 'polyline':
+			for (var i = 0, l = vector.points.length; i < l; i++) {
+				vector.points[i].x += x;
+				vector.points[i].y += y;
+			}
+			break;
+	}
+}
+
+function fontStringify(key, val) {
+	if (key === 'font') {
+		return 'font';
+	}
+	return val;
+}
+
+module.exports = {
+	isString: isString,
+	isNumber: isNumber,
+	isBoolean: isBoolean,
+	isArray: isArray,
+	isFunction: isFunction,
+	isObject: isObject,
+	isNull: isNull,
+	isUndefined: isUndefined,
+	pack: pack,
+	fontStringify: fontStringify,
+	offsetVector: offsetVector
+};
+
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * @license  MIT
+ */
+/* eslint-disable no-proto */
+
+
+
+var base64 = __webpack_require__(124)
+var ieee754 = __webpack_require__(125)
+var isArray = __webpack_require__(76)
+
+exports.Buffer = Buffer
+exports.SlowBuffer = SlowBuffer
+exports.INSPECT_MAX_BYTES = 50
+
+/**
+ * If `Buffer.TYPED_ARRAY_SUPPORT`:
+ *   === true    Use Uint8Array implementation (fastest)
+ *   === false   Use Object implementation (most compatible, even IE6)
+ *
+ * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
+ * Opera 11.6+, iOS 4.2+.
+ *
+ * Due to various browser bugs, sometimes the Object implementation will be used even
+ * when the browser supports typed arrays.
+ *
+ * Note:
+ *
+ *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
+ *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
+ *
+ *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
+ *
+ *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
+ *     incorrect length in some situations.
+
+ * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
+ * get the Object implementation, which is slower but behaves correctly.
+ */
+Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
+  ? global.TYPED_ARRAY_SUPPORT
+  : typedArraySupport()
+
+/*
+ * Export kMaxLength after typed array support is determined.
+ */
+exports.kMaxLength = kMaxLength()
+
+function typedArraySupport () {
+  try {
+    var arr = new Uint8Array(1)
+    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
+    return arr.foo() === 42 && // typed array instances can be augmented
+        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
+        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
+  } catch (e) {
+    return false
+  }
+}
+
+function kMaxLength () {
+  return Buffer.TYPED_ARRAY_SUPPORT
+    ? 0x7fffffff
+    : 0x3fffffff
+}
+
+function createBuffer (that, length) {
+  if (kMaxLength() < length) {
+    throw new RangeError('Invalid typed array length')
+  }
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    // Return an augmented `Uint8Array` instance, for best performance
+    that = new Uint8Array(length)
+    that.__proto__ = Buffer.prototype
+  } else {
+    // Fallback: Return an object instance of the Buffer class
+    if (that === null) {
+      that = new Buffer(length)
+    }
+    that.length = length
+  }
+
+  return that
+}
+
+/**
+ * The Buffer constructor returns instances of `Uint8Array` that have their
+ * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
+ * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
+ * and the `Uint8Array` methods. Square bracket notation works as expected -- it
+ * returns a single octet.
+ *
+ * The `Uint8Array` prototype remains unmodified.
+ */
+
+function Buffer (arg, encodingOrOffset, length) {
+  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
+    return new Buffer(arg, encodingOrOffset, length)
+  }
+
+  // Common case.
+  if (typeof arg === 'number') {
+    if (typeof encodingOrOffset === 'string') {
+      throw new Error(
+        'If encoding is specified then the first argument must be a string'
+      )
+    }
+    return allocUnsafe(this, arg)
+  }
+  return from(this, arg, encodingOrOffset, length)
+}
+
+Buffer.poolSize = 8192 // not used by this implementation
+
+// TODO: Legacy, not needed anymore. Remove in next major version.
+Buffer._augment = function (arr) {
+  arr.__proto__ = Buffer.prototype
+  return arr
+}
+
+function from (that, value, encodingOrOffset, length) {
+  if (typeof value === 'number') {
+    throw new TypeError('"value" argument must not be a number')
+  }
+
+  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
+    return fromArrayBuffer(that, value, encodingOrOffset, length)
+  }
+
+  if (typeof value === 'string') {
+    return fromString(that, value, encodingOrOffset)
+  }
+
+  return fromObject(that, value)
+}
+
+/**
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
+ * if value is a number.
+ * Buffer.from(str[, encoding])
+ * Buffer.from(array)
+ * Buffer.from(buffer)
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
+ **/
+Buffer.from = function (value, encodingOrOffset, length) {
+  return from(null, value, encodingOrOffset, length)
+}
+
+if (Buffer.TYPED_ARRAY_SUPPORT) {
+  Buffer.prototype.__proto__ = Uint8Array.prototype
+  Buffer.__proto__ = Uint8Array
+  if (typeof Symbol !== 'undefined' && Symbol.species &&
+      Buffer[Symbol.species] === Buffer) {
+    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
+    Object.defineProperty(Buffer, Symbol.species, {
+      value: null,
+      configurable: true
+    })
+  }
+}
+
+function assertSize (size) {
+  if (typeof size !== 'number') {
+    throw new TypeError('"size" argument must be a number')
+  } else if (size < 0) {
+    throw new RangeError('"size" argument must not be negative')
+  }
+}
+
+function alloc (that, size, fill, encoding) {
+  assertSize(size)
+  if (size <= 0) {
+    return createBuffer(that, size)
+  }
+  if (fill !== undefined) {
+    // Only pay attention to encoding if it's a string. This
+    // prevents accidentally sending in a number that would
+    // be interpretted as a start offset.
+    return typeof encoding === 'string'
+      ? createBuffer(that, size).fill(fill, encoding)
+      : createBuffer(that, size).fill(fill)
+  }
+  return createBuffer(that, size)
+}
+
+/**
+ * Creates a new filled Buffer instance.
+ * alloc(size[, fill[, encoding]])
+ **/
+Buffer.alloc = function (size, fill, encoding) {
+  return alloc(null, size, fill, encoding)
+}
+
+function allocUnsafe (that, size) {
+  assertSize(size)
+  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
+  if (!Buffer.TYPED_ARRAY_SUPPORT) {
+    for (var i = 0; i < size; ++i) {
+      that[i] = 0
+    }
+  }
+  return that
+}
+
+/**
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
+ * */
+Buffer.allocUnsafe = function (size) {
+  return allocUnsafe(null, size)
+}
+/**
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
+ */
+Buffer.allocUnsafeSlow = function (size) {
+  return allocUnsafe(null, size)
+}
+
+function fromString (that, string, encoding) {
+  if (typeof encoding !== 'string' || encoding === '') {
+    encoding = 'utf8'
+  }
+
+  if (!Buffer.isEncoding(encoding)) {
+    throw new TypeError('"encoding" must be a valid string encoding')
+  }
+
+  var length = byteLength(string, encoding) | 0
+  that = createBuffer(that, length)
+
+  var actual = that.write(string, encoding)
+
+  if (actual !== length) {
+    // Writing a hex string, for example, that contains invalid characters will
+    // cause everything after the first invalid character to be ignored. (e.g.
+    // 'abxxcd' will be treated as 'ab')
+    that = that.slice(0, actual)
+  }
+
+  return that
+}
+
+function fromArrayLike (that, array) {
+  var length = array.length < 0 ? 0 : checked(array.length) | 0
+  that = createBuffer(that, length)
+  for (var i = 0; i < length; i += 1) {
+    that[i] = array[i] & 255
+  }
+  return that
+}
+
+function fromArrayBuffer (that, array, byteOffset, length) {
+  array.byteLength // this throws if `array` is not a valid ArrayBuffer
+
+  if (byteOffset < 0 || array.byteLength < byteOffset) {
+    throw new RangeError('\'offset\' is out of bounds')
+  }
+
+  if (array.byteLength < byteOffset + (length || 0)) {
+    throw new RangeError('\'length\' is out of bounds')
+  }
+
+  if (byteOffset === undefined && length === undefined) {
+    array = new Uint8Array(array)
+  } else if (length === undefined) {
+    array = new Uint8Array(array, byteOffset)
+  } else {
+    array = new Uint8Array(array, byteOffset, length)
+  }
+
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    // Return an augmented `Uint8Array` instance, for best performance
+    that = array
+    that.__proto__ = Buffer.prototype
+  } else {
+    // Fallback: Return an object instance of the Buffer class
+    that = fromArrayLike(that, array)
+  }
+  return that
+}
+
+function fromObject (that, obj) {
+  if (Buffer.isBuffer(obj)) {
+    var len = checked(obj.length) | 0
+    that = createBuffer(that, len)
+
+    if (that.length === 0) {
+      return that
+    }
+
+    obj.copy(that, 0, 0, len)
+    return that
+  }
+
+  if (obj) {
+    if ((typeof ArrayBuffer !== 'undefined' &&
+        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
+      if (typeof obj.length !== 'number' || isnan(obj.length)) {
+        return createBuffer(that, 0)
+      }
+      return fromArrayLike(that, obj)
+    }
+
+    if (obj.type === 'Buffer' && isArray(obj.data)) {
+      return fromArrayLike(that, obj.data)
+    }
+  }
+
+  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
+}
+
+function checked (length) {
+  // Note: cannot use `length < kMaxLength()` here because that fails when
+  // length is NaN (which is otherwise coerced to zero.)
+  if (length >= kMaxLength()) {
+    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
+                         'size: 0x' + kMaxLength().toString(16) + ' bytes')
+  }
+  return length | 0
+}
+
+function SlowBuffer (length) {
+  if (+length != length) { // eslint-disable-line eqeqeq
+    length = 0
+  }
+  return Buffer.alloc(+length)
+}
+
+Buffer.isBuffer = function isBuffer (b) {
+  return !!(b != null && b._isBuffer)
+}
+
+Buffer.compare = function compare (a, b) {
+  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
+    throw new TypeError('Arguments must be Buffers')
+  }
+
+  if (a === b) return 0
+
+  var x = a.length
+  var y = b.length
+
+  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
+    if (a[i] !== b[i]) {
+      x = a[i]
+      y = b[i]
+      break
+    }
+  }
+
+  if (x < y) return -1
+  if (y < x) return 1
+  return 0
+}
+
+Buffer.isEncoding = function isEncoding (encoding) {
+  switch (String(encoding).toLowerCase()) {
+    case 'hex':
+    case 'utf8':
+    case 'utf-8':
+    case 'ascii':
+    case 'latin1':
+    case 'binary':
+    case 'base64':
+    case 'ucs2':
+    case 'ucs-2':
+    case 'utf16le':
+    case 'utf-16le':
+      return true
+    default:
+      return false
+  }
+}
+
+Buffer.concat = function concat (list, length) {
+  if (!isArray(list)) {
+    throw new TypeError('"list" argument must be an Array of Buffers')
+  }
+
+  if (list.length === 0) {
+    return Buffer.alloc(0)
+  }
+
+  var i
+  if (length === undefined) {
+    length = 0
+    for (i = 0; i < list.length; ++i) {
+      length += list[i].length
+    }
+  }
+
+  var buffer = Buffer.allocUnsafe(length)
+  var pos = 0
+  for (i = 0; i < list.length; ++i) {
+    var buf = list[i]
+    if (!Buffer.isBuffer(buf)) {
+      throw new TypeError('"list" argument must be an Array of Buffers')
+    }
+    buf.copy(buffer, pos)
+    pos += buf.length
+  }
+  return buffer
+}
+
+function byteLength (string, encoding) {
+  if (Buffer.isBuffer(string)) {
+    return string.length
+  }
+  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
+      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
+    return string.byteLength
+  }
+  if (typeof string !== 'string') {
+    string = '' + string
+  }
+
+  var len = string.length
+  if (len === 0) return 0
+
+  // Use a for loop to avoid recursion
+  var loweredCase = false
+  for (;;) {
+    switch (encoding) {
+      case 'ascii':
+      case 'latin1':
+      case 'binary':
+        return len
+      case 'utf8':
+      case 'utf-8':
+      case undefined:
+        return utf8ToBytes(string).length
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return len * 2
+      case 'hex':
+        return len >>> 1
+      case 'base64':
+        return base64ToBytes(string).length
+      default:
+        if (loweredCase) return utf8ToBytes(string).length // assume utf8
+        encoding = ('' + encoding).toLowerCase()
+        loweredCase = true
+    }
+  }
+}
+Buffer.byteLength = byteLength
+
+function slowToString (encoding, start, end) {
+  var loweredCase = false
+
+  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
+  // property of a typed array.
+
+  // This behaves neither like String nor Uint8Array in that we set start/end
+  // to their upper/lower bounds if the value passed is out of range.
+  // undefined is handled specially as per ECMA-262 6th Edition,
+  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
+  if (start === undefined || start < 0) {
+    start = 0
+  }
+  // Return early if start > this.length. Done here to prevent potential uint32
+  // coercion fail below.
+  if (start > this.length) {
+    return ''
+  }
+
+  if (end === undefined || end > this.length) {
+    end = this.length
+  }
+
+  if (end <= 0) {
+    return ''
+  }
+
+  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
+  end >>>= 0
+  start >>>= 0
+
+  if (end <= start) {
+    return ''
+  }
+
+  if (!encoding) encoding = 'utf8'
+
+  while (true) {
+    switch (encoding) {
+      case 'hex':
+        return hexSlice(this, start, end)
+
+      case 'utf8':
+      case 'utf-8':
+        return utf8Slice(this, start, end)
+
+      case 'ascii':
+        return asciiSlice(this, start, end)
+
+      case 'latin1':
+      case 'binary':
+        return latin1Slice(this, start, end)
+
+      case 'base64':
+        return base64Slice(this, start, end)
+
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return utf16leSlice(this, start, end)
+
+      default:
+        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+        encoding = (encoding + '').toLowerCase()
+        loweredCase = true
+    }
+  }
+}
+
+// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
+// Buffer instances.
+Buffer.prototype._isBuffer = true
+
+function swap (b, n, m) {
+  var i = b[n]
+  b[n] = b[m]
+  b[m] = i
+}
+
+Buffer.prototype.swap16 = function swap16 () {
+  var len = this.length
+  if (len % 2 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 16-bits')
+  }
+  for (var i = 0; i < len; i += 2) {
+    swap(this, i, i + 1)
+  }
+  return this
+}
+
+Buffer.prototype.swap32 = function swap32 () {
+  var len = this.length
+  if (len % 4 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 32-bits')
+  }
+  for (var i = 0; i < len; i += 4) {
+    swap(this, i, i + 3)
+    swap(this, i + 1, i + 2)
+  }
+  return this
+}
+
+Buffer.prototype.swap64 = function swap64 () {
+  var len = this.length
+  if (len % 8 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 64-bits')
+  }
+  for (var i = 0; i < len; i += 8) {
+    swap(this, i, i + 7)
+    swap(this, i + 1, i + 6)
+    swap(this, i + 2, i + 5)
+    swap(this, i + 3, i + 4)
+  }
+  return this
+}
+
+Buffer.prototype.toString = function toString () {
+  var length = this.length | 0
+  if (length === 0) return ''
+  if (arguments.length === 0) return utf8Slice(this, 0, length)
+  return slowToString.apply(this, arguments)
+}
+
+Buffer.prototype.equals = function equals (b) {
+  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
+  if (this === b) return true
+  return Buffer.compare(this, b) === 0
+}
+
+Buffer.prototype.inspect = function inspect () {
+  var str = ''
+  var max = exports.INSPECT_MAX_BYTES
+  if (this.length > 0) {
+    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
+    if (this.length > max) str += ' ... '
+  }
+  return '<Buffer ' + str + '>'
+}
+
+Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
+  if (!Buffer.isBuffer(target)) {
+    throw new TypeError('Argument must be a Buffer')
+  }
+
+  if (start === undefined) {
+    start = 0
+  }
+  if (end === undefined) {
+    end = target ? target.length : 0
+  }
+  if (thisStart === undefined) {
+    thisStart = 0
+  }
+  if (thisEnd === undefined) {
+    thisEnd = this.length
+  }
+
+  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
+    throw new RangeError('out of range index')
+  }
+
+  if (thisStart >= thisEnd && start >= end) {
+    return 0
+  }
+  if (thisStart >= thisEnd) {
+    return -1
+  }
+  if (start >= end) {
+    return 1
+  }
+
+  start >>>= 0
+  end >>>= 0
+  thisStart >>>= 0
+  thisEnd >>>= 0
+
+  if (this === target) return 0
+
+  var x = thisEnd - thisStart
+  var y = end - start
+  var len = Math.min(x, y)
+
+  var thisCopy = this.slice(thisStart, thisEnd)
+  var targetCopy = target.slice(start, end)
+
+  for (var i = 0; i < len; ++i) {
+    if (thisCopy[i] !== targetCopy[i]) {
+      x = thisCopy[i]
+      y = targetCopy[i]
+      break
+    }
+  }
+
+  if (x < y) return -1
+  if (y < x) return 1
+  return 0
+}
+
+// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
+// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
+//
+// Arguments:
+// - buffer - a Buffer to search
+// - val - a string, Buffer, or number
+// - byteOffset - an index into `buffer`; will be clamped to an int32
+// - encoding - an optional encoding, relevant is val is a string
+// - dir - true for indexOf, false for lastIndexOf
+function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
+  // Empty buffer means no match
+  if (buffer.length === 0) return -1
+
+  // Normalize byteOffset
+  if (typeof byteOffset === 'string') {
+    encoding = byteOffset
+    byteOffset = 0
+  } else if (byteOffset > 0x7fffffff) {
+    byteOffset = 0x7fffffff
+  } else if (byteOffset < -0x80000000) {
+    byteOffset = -0x80000000
+  }
+  byteOffset = +byteOffset  // Coerce to Number.
+  if (isNaN(byteOffset)) {
+    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
+    byteOffset = dir ? 0 : (buffer.length - 1)
+  }
+
+  // Normalize byteOffset: negative offsets start from the end of the buffer
+  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
+  if (byteOffset >= buffer.length) {
+    if (dir) return -1
+    else byteOffset = buffer.length - 1
+  } else if (byteOffset < 0) {
+    if (dir) byteOffset = 0
+    else return -1
+  }
+
+  // Normalize val
+  if (typeof val === 'string') {
+    val = Buffer.from(val, encoding)
+  }
+
+  // Finally, search either indexOf (if dir is true) or lastIndexOf
+  if (Buffer.isBuffer(val)) {
+    // Special case: looking for empty string/buffer always fails
+    if (val.length === 0) {
+      return -1
+    }
+    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
+  } else if (typeof val === 'number') {
+    val = val & 0xFF // Search for a byte value [0-255]
+    if (Buffer.TYPED_ARRAY_SUPPORT &&
+        typeof Uint8Array.prototype.indexOf === 'function') {
+      if (dir) {
+        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
+      } else {
+        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
+      }
+    }
+    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
+  }
+
+  throw new TypeError('val must be string, number or Buffer')
+}
+
+function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
+  var indexSize = 1
+  var arrLength = arr.length
+  var valLength = val.length
+
+  if (encoding !== undefined) {
+    encoding = String(encoding).toLowerCase()
+    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
+        encoding === 'utf16le' || encoding === 'utf-16le') {
+      if (arr.length < 2 || val.length < 2) {
+        return -1
+      }
+      indexSize = 2
+      arrLength /= 2
+      valLength /= 2
+      byteOffset /= 2
+    }
+  }
+
+  function read (buf, i) {
+    if (indexSize === 1) {
+      return buf[i]
+    } else {
+      return buf.readUInt16BE(i * indexSize)
+    }
+  }
+
+  var i
+  if (dir) {
+    var foundIndex = -1
+    for (i = byteOffset; i < arrLength; i++) {
+      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
+        if (foundIndex === -1) foundIndex = i
+        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
+      } else {
+        if (foundIndex !== -1) i -= i - foundIndex
+        foundIndex = -1
+      }
+    }
+  } else {
+    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
+    for (i = byteOffset; i >= 0; i--) {
+      var found = true
+      for (var j = 0; j < valLength; j++) {
+        if (read(arr, i + j) !== read(val, j)) {
+          found = false
+          break
+        }
+      }
+      if (found) return i
+    }
+  }
+
+  return -1
+}
+
+Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
+  return this.indexOf(val, byteOffset, encoding) !== -1
+}
+
+Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
+  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
+}
+
+Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
+  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
+}
+
+function hexWrite (buf, string, offset, length) {
+  offset = Number(offset) || 0
+  var remaining = buf.length - offset
+  if (!length) {
+    length = remaining
+  } else {
+    length = Number(length)
+    if (length > remaining) {
+      length = remaining
+    }
+  }
+
+  // must be an even number of digits
+  var strLen = string.length
+  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
+
+  if (length > strLen / 2) {
+    length = strLen / 2
+  }
+  for (var i = 0; i < length; ++i) {
+    var parsed = parseInt(string.substr(i * 2, 2), 16)
+    if (isNaN(parsed)) return i
+    buf[offset + i] = parsed
+  }
+  return i
+}
+
+function utf8Write (buf, string, offset, length) {
+  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+function asciiWrite (buf, string, offset, length) {
+  return blitBuffer(asciiToBytes(string), buf, offset, length)
+}
+
+function latin1Write (buf, string, offset, length) {
+  return asciiWrite(buf, string, offset, length)
+}
+
+function base64Write (buf, string, offset, length) {
+  return blitBuffer(base64ToBytes(string), buf, offset, length)
+}
+
+function ucs2Write (buf, string, offset, length) {
+  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+Buffer.prototype.write = function write (string, offset, length, encoding) {
+  // Buffer#write(string)
+  if (offset === undefined) {
+    encoding = 'utf8'
+    length = this.length
+    offset = 0
+  // Buffer#write(string, encoding)
+  } else if (length === undefined && typeof offset === 'string') {
+    encoding = offset
+    length = this.length
+    offset = 0
+  // Buffer#write(string, offset[, length][, encoding])
+  } else if (isFinite(offset)) {
+    offset = offset | 0
+    if (isFinite(length)) {
+      length = length | 0
+      if (encoding === undefined) encoding = 'utf8'
+    } else {
+      encoding = length
+      length = undefined
+    }
+  // legacy write(string, encoding, offset, length) - remove in v0.13
+  } else {
+    throw new Error(
+      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
+    )
+  }
+
+  var remaining = this.length - offset
+  if (length === undefined || length > remaining) length = remaining
+
+  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
+    throw new RangeError('Attempt to write outside buffer bounds')
+  }
+
+  if (!encoding) encoding = 'utf8'
+
+  var loweredCase = false
+  for (;;) {
+    switch (encoding) {
+      case 'hex':
+        return hexWrite(this, string, offset, length)
+
+      case 'utf8':
+      case 'utf-8':
+        return utf8Write(this, string, offset, length)
+
+      case 'ascii':
+        return asciiWrite(this, string, offset, length)
+
+      case 'latin1':
+      case 'binary':
+        return latin1Write(this, string, offset, length)
+
+      case 'base64':
+        // Warning: maxLength not taken into account in base64Write
+        return base64Write(this, string, offset, length)
+
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return ucs2Write(this, string, offset, length)
+
+      default:
+        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+        encoding = ('' + encoding).toLowerCase()
+        loweredCase = true
+    }
+  }
+}
+
+Buffer.prototype.toJSON = function toJSON () {
+  return {
+    type: 'Buffer',
+    data: Array.prototype.slice.call(this._arr || this, 0)
+  }
+}
+
+function base64Slice (buf, start, end) {
+  if (start === 0 && end === buf.length) {
+    return base64.fromByteArray(buf)
+  } else {
+    return base64.fromByteArray(buf.slice(start, end))
+  }
+}
+
+function utf8Slice (buf, start, end) {
+  end = Math.min(buf.length, end)
+  var res = []
+
+  var i = start
+  while (i < end) {
+    var firstByte = buf[i]
+    var codePoint = null
+    var bytesPerSequence = (firstByte > 0xEF) ? 4
+      : (firstByte > 0xDF) ? 3
+      : (firstByte > 0xBF) ? 2
+      : 1
+
+    if (i + bytesPerSequence <= end) {
+      var secondByte, thirdByte, fourthByte, tempCodePoint
+
+      switch (bytesPerSequence) {
+        case 1:
+          if (firstByte < 0x80) {
+            codePoint = firstByte
+          }
+          break
+        case 2:
+          secondByte = buf[i + 1]
+          if ((secondByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
+            if (tempCodePoint > 0x7F) {
+              codePoint = tempCodePoint
+            }
+          }
+          break
+        case 3:
+          secondByte = buf[i + 1]
+          thirdByte = buf[i + 2]
+          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
+            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
+              codePoint = tempCodePoint
+            }
+          }
+          break
+        case 4:
+          secondByte = buf[i + 1]
+          thirdByte = buf[i + 2]
+          fourthByte = buf[i + 3]
+          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
+            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
+              codePoint = tempCodePoint
+            }
+          }
+      }
+    }
+
+    if (codePoint === null) {
+      // we did not generate a valid codePoint so insert a
+      // replacement char (U+FFFD) and advance only 1 byte
+      codePoint = 0xFFFD
+      bytesPerSequence = 1
+    } else if (codePoint > 0xFFFF) {
+      // encode to utf16 (surrogate pair dance)
+      codePoint -= 0x10000
+      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
+      codePoint = 0xDC00 | codePoint & 0x3FF
+    }
+
+    res.push(codePoint)
+    i += bytesPerSequence
+  }
+
+  return decodeCodePointsArray(res)
+}
+
+// Based on http://stackoverflow.com/a/22747272/680742, the browser with
+// the lowest limit is Chrome, with 0x10000 args.
+// We go 1 magnitude less, for safety
+var MAX_ARGUMENTS_LENGTH = 0x1000
+
+function decodeCodePointsArray (codePoints) {
+  var len = codePoints.length
+  if (len <= MAX_ARGUMENTS_LENGTH) {
+    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
+  }
+
+  // Decode in chunks to avoid "call stack size exceeded".
+  var res = ''
+  var i = 0
+  while (i < len) {
+    res += String.fromCharCode.apply(
+      String,
+      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
+    )
+  }
+  return res
+}
+
+function asciiSlice (buf, start, end) {
+  var ret = ''
+  end = Math.min(buf.length, end)
+
+  for (var i = start; i < end; ++i) {
+    ret += String.fromCharCode(buf[i] & 0x7F)
+  }
+  return ret
+}
+
+function latin1Slice (buf, start, end) {
+  var ret = ''
+  end = Math.min(buf.length, end)
+
+  for (var i = start; i < end; ++i) {
+    ret += String.fromCharCode(buf[i])
+  }
+  return ret
+}
+
+function hexSlice (buf, start, end) {
+  var len = buf.length
+
+  if (!start || start < 0) start = 0
+  if (!end || end < 0 || end > len) end = len
+
+  var out = ''
+  for (var i = start; i < end; ++i) {
+    out += toHex(buf[i])
+  }
+  return out
+}
+
+function utf16leSlice (buf, start, end) {
+  var bytes = buf.slice(start, end)
+  var res = ''
+  for (var i = 0; i < bytes.length; i += 2) {
+    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
+  }
+  return res
+}
+
+Buffer.prototype.slice = function slice (start, end) {
+  var len = this.length
+  start = ~~start
+  end = end === undefined ? len : ~~end
+
+  if (start < 0) {
+    start += len
+    if (start < 0) start = 0
+  } else if (start > len) {
+    start = len
+  }
+
+  if (end < 0) {
+    end += len
+    if (end < 0) end = 0
+  } else if (end > len) {
+    end = len
+  }
+
+  if (end < start) end = start
+
+  var newBuf
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    newBuf = this.subarray(start, end)
+    newBuf.__proto__ = Buffer.prototype
+  } else {
+    var sliceLen = end - start
+    newBuf = new Buffer(sliceLen, undefined)
+    for (var i = 0; i < sliceLen; ++i) {
+      newBuf[i] = this[i + start]
+    }
+  }
+
+  return newBuf
+}
+
+/*
+ * Need to make sure that buffer isn't trying to write out of bounds.
+ */
+function checkOffset (offset, ext, length) {
+  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
+  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
+}
+
+Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+  var val = this[offset]
+  var mul = 1
+  var i = 0
+  while (++i < byteLength && (mul *= 0x100)) {
+    val += this[offset + i] * mul
+  }
+
+  return val
+}
+
+Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) {
+    checkOffset(offset, byteLength, this.length)
+  }
+
+  var val = this[offset + --byteLength]
+  var mul = 1
+  while (byteLength > 0 && (mul *= 0x100)) {
+    val += this[offset + --byteLength] * mul
+  }
+
+  return val
+}
+
+Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 1, this.length)
+  return this[offset]
+}
+
+Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  return this[offset] | (this[offset + 1] << 8)
+}
+
+Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  return (this[offset] << 8) | this[offset + 1]
+}
+
+Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return ((this[offset]) |
+      (this[offset + 1] << 8) |
+      (this[offset + 2] << 16)) +
+      (this[offset + 3] * 0x1000000)
+}
+
+Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return (this[offset] * 0x1000000) +
+    ((this[offset + 1] << 16) |
+    (this[offset + 2] << 8) |
+    this[offset + 3])
+}
+
+Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+  var val = this[offset]
+  var mul = 1
+  var i = 0
+  while (++i < byteLength && (mul *= 0x100)) {
+    val += this[offset + i] * mul
+  }
+  mul *= 0x80
+
+  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+  return val
+}
+
+Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+  var i = byteLength
+  var mul = 1
+  var val = this[offset + --i]
+  while (i > 0 && (mul *= 0x100)) {
+    val += this[offset + --i] * mul
+  }
+  mul *= 0x80
+
+  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+  return val
+}
+
+Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 1, this.length)
+  if (!(this[offset] & 0x80)) return (this[offset])
+  return ((0xff - this[offset] + 1) * -1)
+}
+
+Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  var val = this[offset] | (this[offset + 1] << 8)
+  return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  var val = this[offset + 1] | (this[offset] << 8)
+  return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return (this[offset]) |
+    (this[offset + 1] << 8) |
+    (this[offset + 2] << 16) |
+    (this[offset + 3] << 24)
+}
+
+Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return (this[offset] << 24) |
+    (this[offset + 1] << 16) |
+    (this[offset + 2] << 8) |
+    (this[offset + 3])
+}
+
+Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+  return ieee754.read(this, offset, true, 23, 4)
+}
+
+Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+  return ieee754.read(this, offset, false, 23, 4)
+}
+
+Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 8, this.length)
+  return ieee754.read(this, offset, true, 52, 8)
+}
+
+Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 8, this.length)
+  return ieee754.read(this, offset, false, 52, 8)
+}
+
+function checkInt (buf, value, offset, ext, max, min) {
+  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
+  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
+  if (offset + ext > buf.length) throw new RangeError('Index out of range')
+}
+
+Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) {
+    var maxBytes = Math.pow(2, 8 * byteLength) - 1
+    checkInt(this, value, offset, byteLength, maxBytes, 0)
+  }
+
+  var mul = 1
+  var i = 0
+  this[offset] = value & 0xFF
+  while (++i < byteLength && (mul *= 0x100)) {
+    this[offset + i] = (value / mul) & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) {
+    var maxBytes = Math.pow(2, 8 * byteLength) - 1
+    checkInt(this, value, offset, byteLength, maxBytes, 0)
+  }
+
+  var i = byteLength - 1
+  var mul = 1
+  this[offset + i] = value & 0xFF
+  while (--i >= 0 && (mul *= 0x100)) {
+    this[offset + i] = (value / mul) & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
+  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+  this[offset] = (value & 0xff)
+  return offset + 1
+}
+
+function objectWriteUInt16 (buf, value, offset, littleEndian) {
+  if (value < 0) value = 0xffff + value + 1
+  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
+    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
+      (littleEndian ? i : 1 - i) * 8
+  }
+}
+
+Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value & 0xff)
+    this[offset + 1] = (value >>> 8)
+  } else {
+    objectWriteUInt16(this, value, offset, true)
+  }
+  return offset + 2
+}
+
+Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 8)
+    this[offset + 1] = (value & 0xff)
+  } else {
+    objectWriteUInt16(this, value, offset, false)
+  }
+  return offset + 2
+}
+
+function objectWriteUInt32 (buf, value, offset, littleEndian) {
+  if (value < 0) value = 0xffffffff + value + 1
+  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
+    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
+  }
+}
+
+Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset + 3] = (value >>> 24)
+    this[offset + 2] = (value >>> 16)
+    this[offset + 1] = (value >>> 8)
+    this[offset] = (value & 0xff)
+  } else {
+    objectWriteUInt32(this, value, offset, true)
+  }
+  return offset + 4
+}
+
+Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 24)
+    this[offset + 1] = (value >>> 16)
+    this[offset + 2] = (value >>> 8)
+    this[offset + 3] = (value & 0xff)
+  } else {
+    objectWriteUInt32(this, value, offset, false)
+  }
+  return offset + 4
+}
+
+Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) {
+    var limit = Math.pow(2, 8 * byteLength - 1)
+
+    checkInt(this, value, offset, byteLength, limit - 1, -limit)
+  }
+
+  var i = 0
+  var mul = 1
+  var sub = 0
+  this[offset] = value & 0xFF
+  while (++i < byteLength && (mul *= 0x100)) {
+    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
+      sub = 1
+    }
+    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) {
+    var limit = Math.pow(2, 8 * byteLength - 1)
+
+    checkInt(this, value, offset, byteLength, limit - 1, -limit)
+  }
+
+  var i = byteLength - 1
+  var mul = 1
+  var sub = 0
+  this[offset + i] = value & 0xFF
+  while (--i >= 0 && (mul *= 0x100)) {
+    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
+      sub = 1
+    }
+    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
+  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+  if (value < 0) value = 0xff + value + 1
+  this[offset] = (value & 0xff)
+  return offset + 1
+}
+
+Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value & 0xff)
+    this[offset + 1] = (value >>> 8)
+  } else {
+    objectWriteUInt16(this, value, offset, true)
+  }
+  return offset + 2
+}
+
+Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 8)
+    this[offset + 1] = (value & 0xff)
+  } else {
+    objectWriteUInt16(this, value, offset, false)
+  }
+  return offset + 2
+}
+
+Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value & 0xff)
+    this[offset + 1] = (value >>> 8)
+    this[offset + 2] = (value >>> 16)
+    this[offset + 3] = (value >>> 24)
+  } else {
+    objectWriteUInt32(this, value, offset, true)
+  }
+  return offset + 4
+}
+
+Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+  if (value < 0) value = 0xffffffff + value + 1
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 24)
+    this[offset + 1] = (value >>> 16)
+    this[offset + 2] = (value >>> 8)
+    this[offset + 3] = (value & 0xff)
+  } else {
+    objectWriteUInt32(this, value, offset, false)
+  }
+  return offset + 4
+}
+
+function checkIEEE754 (buf, value, offset, ext, max, min) {
+  if (offset + ext > buf.length) throw new RangeError('Index out of range')
+  if (offset < 0) throw new RangeError('Index out of range')
+}
+
+function writeFloat (buf, value, offset, littleEndian, noAssert) {
+  if (!noAssert) {
+    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
+  }
+  ieee754.write(buf, value, offset, littleEndian, 23, 4)
+  return offset + 4
+}
+
+Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
+  return writeFloat(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
+  return writeFloat(this, value, offset, false, noAssert)
+}
+
+function writeDouble (buf, value, offset, littleEndian, noAssert) {
+  if (!noAssert) {
+    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
+  }
+  ieee754.write(buf, value, offset, littleEndian, 52, 8)
+  return offset + 8
+}
+
+Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
+  return writeDouble(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
+  return writeDouble(this, value, offset, false, noAssert)
+}
+
+// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
+Buffer.prototype.copy = function copy (target, targetStart, start, end) {
+  if (!start) start = 0
+  if (!end && end !== 0) end = this.length
+  if (targetStart >= target.length) targetStart = target.length
+  if (!targetStart) targetStart = 0
+  if (end > 0 && end < start) end = start
+
+  // Copy 0 bytes; we're done
+  if (end === start) return 0
+  if (target.length === 0 || this.length === 0) return 0
+
+  // Fatal error conditions
+  if (targetStart < 0) {
+    throw new RangeError('targetStart out of bounds')
+  }
+  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
+  if (end < 0) throw new RangeError('sourceEnd out of bounds')
+
+  // Are we oob?
+  if (end > this.length) end = this.length
+  if (target.length - targetStart < end - start) {
+    end = target.length - targetStart + start
+  }
+
+  var len = end - start
+  var i
+
+  if (this === target && start < targetStart && targetStart < end) {
+    // descending copy from end
+    for (i = len - 1; i >= 0; --i) {
+      target[i + targetStart] = this[i + start]
+    }
+  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
+    // ascending copy from start
+    for (i = 0; i < len; ++i) {
+      target[i + targetStart] = this[i + start]
+    }
+  } else {
+    Uint8Array.prototype.set.call(
+      target,
+      this.subarray(start, start + len),
+      targetStart
+    )
+  }
+
+  return len
+}
+
+// Usage:
+//    buffer.fill(number[, offset[, end]])
+//    buffer.fill(buffer[, offset[, end]])
+//    buffer.fill(string[, offset[, end]][, encoding])
+Buffer.prototype.fill = function fill (val, start, end, encoding) {
+  // Handle string cases:
+  if (typeof val === 'string') {
+    if (typeof start === 'string') {
+      encoding = start
+      start = 0
+      end = this.length
+    } else if (typeof end === 'string') {
+      encoding = end
+      end = this.length
+    }
+    if (val.length === 1) {
+      var code = val.charCodeAt(0)
+      if (code < 256) {
+        val = code
+      }
+    }
+    if (encoding !== undefined && typeof encoding !== 'string') {
+      throw new TypeError('encoding must be a string')
+    }
+    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
+      throw new TypeError('Unknown encoding: ' + encoding)
+    }
+  } else if (typeof val === 'number') {
+    val = val & 255
+  }
+
+  // Invalid ranges are not set to a default, so can range check early.
+  if (start < 0 || this.length < start || this.length < end) {
+    throw new RangeError('Out of range index')
+  }
+
+  if (end <= start) {
+    return this
+  }
+
+  start = start >>> 0
+  end = end === undefined ? this.length : end >>> 0
+
+  if (!val) val = 0
+
+  var i
+  if (typeof val === 'number') {
+    for (i = start; i < end; ++i) {
+      this[i] = val
+    }
+  } else {
+    var bytes = Buffer.isBuffer(val)
+      ? val
+      : utf8ToBytes(new Buffer(val, encoding).toString())
+    var len = bytes.length
+    for (i = 0; i < end - start; ++i) {
+      this[i + start] = bytes[i % len]
+    }
+  }
+
+  return this
+}
+
+// HELPER FUNCTIONS
+// ================
+
+var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
+
+function base64clean (str) {
+  // Node strips out invalid characters like \n and \t from the string, base64-js does not
+  str = stringtrim(str).replace(INVALID_BASE64_RE, '')
+  // Node converts strings with length < 2 to ''
+  if (str.length < 2) return ''
+  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
+  while (str.length % 4 !== 0) {
+    str = str + '='
+  }
+  return str
+}
+
+function stringtrim (str) {
+  if (str.trim) return str.trim()
+  return str.replace(/^\s+|\s+$/g, '')
+}
+
+function toHex (n) {
+  if (n < 16) return '0' + n.toString(16)
+  return n.toString(16)
+}
+
+function utf8ToBytes (string, units) {
+  units = units || Infinity
+  var codePoint
+  var length = string.length
+  var leadSurrogate = null
+  var bytes = []
+
+  for (var i = 0; i < length; ++i) {
+    codePoint = string.charCodeAt(i)
+
+    // is surrogate component
+    if (codePoint > 0xD7FF && codePoint < 0xE000) {
+      // last char was a lead
+      if (!leadSurrogate) {
+        // no lead yet
+        if (codePoint > 0xDBFF) {
+          // unexpected trail
+          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+          continue
+        } else if (i + 1 === length) {
+          // unpaired lead
+          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+          continue
+        }
+
+        // valid lead
+        leadSurrogate = codePoint
+
+        continue
+      }
+
+      // 2 leads in a row
+      if (codePoint < 0xDC00) {
+        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+        leadSurrogate = codePoint
+        continue
+      }
+
+      // valid surrogate pair
+      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
+    } else if (leadSurrogate) {
+      // valid bmp char, but last char was a lead
+      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+    }
+
+    leadSurrogate = null
+
+    // encode utf8
+    if (codePoint < 0x80) {
+      if ((units -= 1) < 0) break
+      bytes.push(codePoint)
+    } else if (codePoint < 0x800) {
+      if ((units -= 2) < 0) break
+      bytes.push(
+        codePoint >> 0x6 | 0xC0,
+        codePoint & 0x3F | 0x80
+      )
+    } else if (codePoint < 0x10000) {
+      if ((units -= 3) < 0) break
+      bytes.push(
+        codePoint >> 0xC | 0xE0,
+        codePoint >> 0x6 & 0x3F | 0x80,
+        codePoint & 0x3F | 0x80
+      )
+    } else if (codePoint < 0x110000) {
+      if ((units -= 4) < 0) break
+      bytes.push(
+        codePoint >> 0x12 | 0xF0,
+        codePoint >> 0xC & 0x3F | 0x80,
+        codePoint >> 0x6 & 0x3F | 0x80,
+        codePoint & 0x3F | 0x80
+      )
+    } else {
+      throw new Error('Invalid code point')
+    }
+  }
+
+  return bytes
+}
+
+function asciiToBytes (str) {
+  var byteArray = []
+  for (var i = 0; i < str.length; ++i) {
+    // Node's code seems to be doing this and not & 0x7F..
+    byteArray.push(str.charCodeAt(i) & 0xFF)
+  }
+  return byteArray
+}
+
+function utf16leToBytes (str, units) {
+  var c, hi, lo
+  var byteArray = []
+  for (var i = 0; i < str.length; ++i) {
+    if ((units -= 2) < 0) break
+
+    c = str.charCodeAt(i)
+    hi = c >> 8
+    lo = c % 256
+    byteArray.push(lo)
+    byteArray.push(hi)
+  }
+
+  return byteArray
+}
+
+function base64ToBytes (str) {
+  return base64.toByteArray(base64clean(str))
+}
+
+function blitBuffer (src, dst, offset, length) {
+  for (var i = 0; i < length; ++i) {
+    if ((i + offset >= dst.length) || (i >= src.length)) break
+    dst[i + offset] = src[i]
+  }
+  return i
+}
+
+function isnan (val) {
+  return val !== val // eslint-disable-line no-self-compare
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports) {
+
+var core = module.exports = { version: '2.5.3' };
+if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
+
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var global = __webpack_require__(10);
+var core = __webpack_require__(2);
+var ctx = __webpack_require__(20);
+var hide = __webpack_require__(13);
+var PROTOTYPE = 'prototype';
+
+var $export = function (type, name, source) {
+  var IS_FORCED = type & $export.F;
+  var IS_GLOBAL = type & $export.G;
+  var IS_STATIC = type & $export.S;
+  var IS_PROTO = type & $export.P;
+  var IS_BIND = type & $export.B;
+  var IS_WRAP = type & $export.W;
+  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
+  var expProto = exports[PROTOTYPE];
+  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
+  var key, own, out;
+  if (IS_GLOBAL) source = name;
+  for (key in source) {
+    // contains in native
+    own = !IS_FORCED && target && target[key] !== undefined;
+    if (own && key in exports) continue;
+    // export native or passed
+    out = own ? target[key] : source[key];
+    // prevent global pollution for namespaces
+    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+    // bind timers to global for call from export context
+    : IS_BIND && own ? ctx(out, global)
+    // wrap global constructors for prevent change them in library
+    : IS_WRAP && target[key] == out ? (function (C) {
+      var F = function (a, b, c) {
+        if (this instanceof C) {
+          switch (arguments.length) {
+            case 0: return new C();
+            case 1: return new C(a);
+            case 2: return new C(a, b);
+          } return new C(a, b, c);
+        } return C.apply(this, arguments);
+      };
+      F[PROTOTYPE] = C[PROTOTYPE];
+      return F;
+    // make static versions for prototype methods
+    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+    if (IS_PROTO) {
+      (exports.virtual || (exports.virtual = {}))[key] = out;
+      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
+    }
+  }
+};
+// type bitmap
+$export.F = 1;   // forced
+$export.G = 2;   // global
+$export.S = 4;   // static
+$export.P = 8;   // proto
+$export.B = 16;  // bind
+$export.W = 32;  // wrap
+$export.U = 64;  // safe
+$export.R = 128; // real proto method for `library`
+module.exports = $export;
+
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var store = __webpack_require__(65)('wks');
+var uid = __webpack_require__(38);
+var Symbol = __webpack_require__(10).Symbol;
+var USE_SYMBOL = typeof Symbol == 'function';
+
+var $exports = module.exports = function (name) {
+  return store[name] || (store[name] =
+    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
+};
+
+$exports.store = store;
+
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Thank's IE8 for his funny defineProperty
+module.exports = !__webpack_require__(19)(function () {
+  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
+});
+
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var anObject = __webpack_require__(14);
+var IE8_DOM_DEFINE = __webpack_require__(95);
+var toPrimitive = __webpack_require__(58);
+var dP = Object.defineProperty;
+
+exports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
+  anObject(O);
+  P = toPrimitive(P, true);
+  anObject(Attributes);
+  if (IE8_DOM_DEFINE) try {
+    return dP(O, P, Attributes);
+  } catch (e) { /* empty */ }
+  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
+  if ('value' in Attributes) O[P] = Attributes.value;
+  return O;
+};
+
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+	return this;
+})();
+
+try {
+	// This works if eval is allowed (see CSP)
+	g = g || Function("return this")() || (1,eval)("this");
+} catch(e) {
+	// This works if the window reference is available
+	if(typeof window === "object")
+		g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer, __dirname) {
+
+function VirtualFileSystem() {
+	this.fileSystem = {};
+	this.baseSystem = {};
+}
+
+VirtualFileSystem.prototype.readFileSync = function (filename) {
+	filename = fixFilename(filename);
+
+	var base64content = this.baseSystem[filename];
+	if (base64content) {
+		return new Buffer(base64content, 'base64');
+	}
+
+	var content = this.fileSystem[filename];
+	if (content) {
+		return content;
+	}
+
+	throw 'File \'' + filename + '\' not found in virtual file system';
+};
+
+VirtualFileSystem.prototype.writeFileSync = function (filename, content) {
+	this.fileSystem[fixFilename(filename)] = content;
+};
+
+VirtualFileSystem.prototype.bindFS = function (data) {
+	this.baseSystem = data || {};
+};
+
+
+function fixFilename(filename) {
+	if (filename.indexOf(__dirname) === 0) {
+		filename = filename.substring(__dirname.length);
+	}
+
+	if (filename.indexOf('/') === 0) {
+		filename = filename.substring(1);
+	}
+
+	return filename;
+}
+
+module.exports = new VirtualFileSystem();
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, "/"))
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports) {
+
+module.exports = function (it) {
+  return typeof it === 'object' ? it !== null : typeof it === 'function';
+};
+
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports) {
+
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+var global = module.exports = typeof window != 'undefined' && window.Math == Math
+  ? window : typeof self != 'undefined' && self.Math == Math ? self
+  // eslint-disable-next-line no-new-func
+  : Function('return this')();
+if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
+
+
+/***/ }),
+/* 11 */
+/***/ (function(module, exports) {
+
+// shim for using process in browser
+var process = module.exports = {};
+
+// cached from whatever global is present so that test runners that stub it
+// don't break things.  But we need to wrap it in a try catch in case it is
+// wrapped in strict mode code which doesn't define any globals.  It's inside a
+// function because try/catches deoptimize in certain engines.
+
+var cachedSetTimeout;
+var cachedClearTimeout;
+
+function defaultSetTimout() {
+    throw new Error('setTimeout has not been defined');
+}
+function defaultClearTimeout () {
+    throw new Error('clearTimeout has not been defined');
+}
+(function () {
+    try {
+        if (typeof setTimeout === 'function') {
+            cachedSetTimeout = setTimeout;
+        } else {
+            cachedSetTimeout = defaultSetTimout;
+        }
+    } catch (e) {
+        cachedSetTimeout = defaultSetTimout;
+    }
+    try {
+        if (typeof clearTimeout === 'function') {
+            cachedClearTimeout = clearTimeout;
+        } else {
+            cachedClearTimeout = defaultClearTimeout;
+        }
+    } catch (e) {
+        cachedClearTimeout = defaultClearTimeout;
+    }
+} ())
+function runTimeout(fun) {
+    if (cachedSetTimeout === setTimeout) {
+        //normal enviroments in sane situations
+        return setTimeout(fun, 0);
+    }
+    // if setTimeout wasn't available but was latter defined
+    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+        cachedSetTimeout = setTimeout;
+        return setTimeout(fun, 0);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedSetTimeout(fun, 0);
+    } catch(e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+            return cachedSetTimeout.call(null, fun, 0);
+        } catch(e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+            return cachedSetTimeout.call(this, fun, 0);
+        }
+    }
+
+
+}
+function runClearTimeout(marker) {
+    if (cachedClearTimeout === clearTimeout) {
+        //normal enviroments in sane situations
+        return clearTimeout(marker);
+    }
+    // if clearTimeout wasn't available but was latter defined
+    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+        cachedClearTimeout = clearTimeout;
+        return clearTimeout(marker);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedClearTimeout(marker);
+    } catch (e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
+            return cachedClearTimeout.call(null, marker);
+        } catch (e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+            return cachedClearTimeout.call(this, marker);
+        }
+    }
+
+
+
+}
+var queue = [];
+var draining = false;
+var currentQueue;
+var queueIndex = -1;
+
+function cleanUpNextTick() {
+    if (!draining || !currentQueue) {
+        return;
+    }
+    draining = false;
+    if (currentQueue.length) {
+        queue = currentQueue.concat(queue);
+    } else {
+        queueIndex = -1;
+    }
+    if (queue.length) {
+        drainQueue();
+    }
+}
+
+function drainQueue() {
+    if (draining) {
+        return;
+    }
+    var timeout = runTimeout(cleanUpNextTick);
+    draining = true;
+
+    var len = queue.length;
+    while(len) {
+        currentQueue = queue;
+        queue = [];
+        while (++queueIndex < len) {
+            if (currentQueue) {
+                currentQueue[queueIndex].run();
+            }
+        }
+        queueIndex = -1;
+        len = queue.length;
+    }
+    currentQueue = null;
+    draining = false;
+    runClearTimeout(timeout);
+}
+
+process.nextTick = function (fun) {
+    var args = new Array(arguments.length - 1);
+    if (arguments.length > 1) {
+        for (var i = 1; i < arguments.length; i++) {
+            args[i - 1] = arguments[i];
+        }
+    }
+    queue.push(new Item(fun, args));
+    if (queue.length === 1 && !draining) {
+        runTimeout(drainQueue);
+    }
+};
+
+// v8 likes predictible objects
+function Item(fun, array) {
+    this.fun = fun;
+    this.array = array;
+}
+Item.prototype.run = function () {
+    this.fun.apply(null, this.array);
+};
+process.title = 'browser';
+process.browser = true;
+process.env = {};
+process.argv = [];
+process.version = ''; // empty string to avoid regexp issues
+process.versions = {};
+
+function noop() {}
+
+process.on = noop;
+process.addListener = noop;
+process.once = noop;
+process.off = noop;
+process.removeListener = noop;
+process.removeAllListeners = noop;
+process.emit = noop;
+process.prependListener = noop;
+process.prependOnceListener = noop;
+
+process.listeners = function (name) { return [] }
+
+process.binding = function (name) {
+    throw new Error('process.binding is not supported');
+};
+
+process.cwd = function () { return '/' };
+process.chdir = function (dir) {
+    throw new Error('process.chdir is not supported');
+};
+process.umask = function() { return 0; };
+
+
+/***/ }),
+/* 12 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var NumberT, PropertyDescriptor;
+
+  NumberT = __webpack_require__(22).Number;
+
+  exports.resolveLength = function(length, stream, parent) {
+    var res;
+    if (typeof length === 'number') {
+      res = length;
+    } else if (typeof length === 'function') {
+      res = length.call(parent, parent);
+    } else if (parent && typeof length === 'string') {
+      res = parent[length];
+    } else if (stream && length instanceof NumberT) {
+      res = length.decode(stream);
+    }
+    if (isNaN(res)) {
+      throw new Error('Not a fixed size');
+    }
+    return res;
+  };
+
+  PropertyDescriptor = (function() {
+    function PropertyDescriptor(opts) {
+      var key, val;
+      if (opts == null) {
+        opts = {};
+      }
+      this.enumerable = true;
+      this.configurable = true;
+      for (key in opts) {
+        val = opts[key];
+        this[key] = val;
+      }
+    }
+
+    return PropertyDescriptor;
+
+  })();
+
+  exports.PropertyDescriptor = PropertyDescriptor;
+
+}).call(this);
+
+
+/***/ }),
+/* 13 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var dP = __webpack_require__(6);
+var createDesc = __webpack_require__(27);
+module.exports = __webpack_require__(5) ? function (object, key, value) {
+  return dP.f(object, key, createDesc(1, value));
+} : function (object, key, value) {
+  object[key] = value;
+  return object;
+};
+
+
+/***/ }),
+/* 14 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(9);
+module.exports = function (it) {
+  if (!isObject(it)) throw TypeError(it + ' is not an object!');
+  return it;
+};
+
+
+/***/ }),
+/* 15 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+module.exports = Stream;
+
+var EE = __webpack_require__(31).EventEmitter;
+var inherits = __webpack_require__(21);
+
+inherits(Stream, EE);
+Stream.Readable = __webpack_require__(45);
+Stream.Writable = __webpack_require__(146);
+Stream.Duplex = __webpack_require__(147);
+Stream.Transform = __webpack_require__(148);
+Stream.PassThrough = __webpack_require__(149);
+
+// Backwards-compat with node 0.4.x
+Stream.Stream = Stream;
+
+
+
+// old-style streams.  Note that the pipe method (the only relevant
+// part of this class) is overridden in the Readable class.
+
+function Stream() {
+  EE.call(this);
+}
+
+Stream.prototype.pipe = function(dest, options) {
+  var source = this;
+
+  function ondata(chunk) {
+    if (dest.writable) {
+      if (false === dest.write(chunk) && source.pause) {
+        source.pause();
+      }
+    }
+  }
+
+  source.on('data', ondata);
+
+  function ondrain() {
+    if (source.readable && source.resume) {
+      source.resume();
+    }
+  }
+
+  dest.on('drain', ondrain);
+
+  // If the 'end' option is not supplied, dest.end() will be called when
+  // source gets the 'end' or 'close' events.  Only dest.end() once.
+  if (!dest._isStdio && (!options || options.end !== false)) {
+    source.on('end', onend);
+    source.on('close', onclose);
+  }
+
+  var didOnEnd = false;
+  function onend() {
+    if (didOnEnd) return;
+    didOnEnd = true;
+
+    dest.end();
+  }
+
+
+  function onclose() {
+    if (didOnEnd) return;
+    didOnEnd = true;
+
+    if (typeof dest.destroy === 'function') dest.destroy();
+  }
+
+  // don't leave dangling pipes when there are errors.
+  function onerror(er) {
+    cleanup();
+    if (EE.listenerCount(this, 'error') === 0) {
+      throw er; // Unhandled stream error in pipe.
+    }
+  }
+
+  source.on('error', onerror);
+  dest.on('error', onerror);
+
+  // remove all the event listeners that were added.
+  function cleanup() {
+    source.removeListener('data', ondata);
+    dest.removeListener('drain', ondrain);
+
+    source.removeListener('end', onend);
+    source.removeListener('close', onclose);
+
+    source.removeListener('error', onerror);
+    dest.removeListener('error', onerror);
+
+    source.removeListener('end', cleanup);
+    source.removeListener('close', cleanup);
+
+    dest.removeListener('close', cleanup);
+  }
+
+  source.on('end', cleanup);
+  source.on('close', cleanup);
+
+  dest.on('close', cleanup);
+
+  dest.emit('pipe', source);
+
+  // Allow for unix-like usage: A.pipe(B).pipe(C)
+  return dest;
+};
+
+
+/***/ }),
+/* 16 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// a duplex stream is just a stream that is both readable and writable.
+// Since JS doesn't have multiple prototypal inheritance, this class
+// prototypally inherits from Readable, and then parasitically from
+// Writable.
+
+
+
+/*<replacement>*/
+
+var processNextTick = __webpack_require__(32).nextTick;
+/*</replacement>*/
+
+/*<replacement>*/
+var objectKeys = Object.keys || function (obj) {
+  var keys = [];
+  for (var key in obj) {
+    keys.push(key);
+  }return keys;
+};
+/*</replacement>*/
+
+module.exports = Duplex;
+
+/*<replacement>*/
+var util = __webpack_require__(25);
+util.inherits = __webpack_require__(21);
+/*</replacement>*/
+
+var Readable = __webpack_require__(83);
+var Writable = __webpack_require__(46);
+
+util.inherits(Duplex, Readable);
+
+var keys = objectKeys(Writable.prototype);
+for (var v = 0; v < keys.length; v++) {
+  var method = keys[v];
+  if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
+}
+
+function Duplex(options) {
+  if (!(this instanceof Duplex)) return new Duplex(options);
+
+  Readable.call(this, options);
+  Writable.call(this, options);
+
+  if (options && options.readable === false) this.readable = false;
+
+  if (options && options.writable === false) this.writable = false;
+
+  this.allowHalfOpen = true;
+  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
+
+  this.once('end', onend);
+}
+
+// the no-half-open enforcer
+function onend() {
+  // if we allow half-open state, or if the writable side ended,
+  // then we're ok.
+  if (this.allowHalfOpen || this._writableState.ended) return;
+
+  // no more data can be written.
+  // But allow more writes to happen in this tick.
+  processNextTick(onEndNT, this);
+}
+
+function onEndNT(self) {
+  self.end();
+}
+
+Object.defineProperty(Duplex.prototype, 'destroyed', {
+  get: function () {
+    if (this._readableState === undefined || this._writableState === undefined) {
+      return false;
+    }
+    return this._readableState.destroyed && this._writableState.destroyed;
+  },
+  set: function (value) {
+    // we ignore the value if the stream
+    // has not been initialized yet
+    if (this._readableState === undefined || this._writableState === undefined) {
+      return;
+    }
+
+    // backward compatibility, the user is explicitly
+    // managing destroyed
+    this._readableState.destroyed = value;
+    this._writableState.destroyed = value;
+  }
+});
+
+Duplex.prototype._destroy = function (err, cb) {
+  this.push(null);
+  this.end();
+
+  processNextTick(cb, err);
+};
+
+function forEach(xs, f) {
+  for (var i = 0, l = xs.length; i < l; i++) {
+    f(xs[i], i);
+  }
+}
+
+/***/ }),
+/* 17 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// to indexed object, toObject with fallback for non-array-like ES3 strings
+var IObject = __webpack_require__(54);
+var defined = __webpack_require__(56);
+module.exports = function (it) {
+  return IObject(defined(it));
+};
+
+
+/***/ }),
+/* 18 */
+/***/ (function(module, exports) {
+
+var hasOwnProperty = {}.hasOwnProperty;
+module.exports = function (it, key) {
+  return hasOwnProperty.call(it, key);
+};
+
+
+/***/ }),
+/* 19 */
+/***/ (function(module, exports) {
+
+module.exports = function (exec) {
+  try {
+    return !!exec();
+  } catch (e) {
+    return true;
+  }
+};
+
+
+/***/ }),
+/* 20 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// optional / simple context binding
+var aFunction = __webpack_require__(97);
+module.exports = function (fn, that, length) {
+  aFunction(fn);
+  if (that === undefined) return fn;
+  switch (length) {
+    case 1: return function (a) {
+      return fn.call(that, a);
+    };
+    case 2: return function (a, b) {
+      return fn.call(that, a, b);
+    };
+    case 3: return function (a, b, c) {
+      return fn.call(that, a, b, c);
+    };
+  }
+  return function (/* ...args */) {
+    return fn.apply(that, arguments);
+  };
+};
+
+
+/***/ }),
+/* 21 */
+/***/ (function(module, exports) {
+
+if (typeof Object.create === 'function') {
+  // implementation from standard node.js 'util' module
+  module.exports = function inherits(ctor, superCtor) {
+    ctor.super_ = superCtor
+    ctor.prototype = Object.create(superCtor.prototype, {
+      constructor: {
+        value: ctor,
+        enumerable: false,
+        writable: true,
+        configurable: true
+      }
+    });
+  };
+} else {
+  // old school shim for old browsers
+  module.exports = function inherits(ctor, superCtor) {
+    ctor.super_ = superCtor
+    var TempCtor = function () {}
+    TempCtor.prototype = superCtor.prototype
+    ctor.prototype = new TempCtor()
+    ctor.prototype.constructor = ctor
+  }
+}
+
+
+/***/ }),
+/* 22 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var DecodeStream, Fixed, NumberT,
+    __hasProp = {}.hasOwnProperty,
+    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
+
+  DecodeStream = __webpack_require__(51);
+
+  NumberT = (function() {
+    function NumberT(type, endian) {
+      this.type = type;
+      this.endian = endian != null ? endian : 'BE';
+      this.fn = this.type;
+      if (this.type[this.type.length - 1] !== '8') {
+        this.fn += this.endian;
+      }
+    }
+
+    NumberT.prototype.size = function() {
+      return DecodeStream.TYPES[this.type];
+    };
+
+    NumberT.prototype.decode = function(stream) {
+      return stream['read' + this.fn]();
+    };
+
+    NumberT.prototype.encode = function(stream, val) {
+      return stream['write' + this.fn](val);
+    };
+
+    return NumberT;
+
+  })();
+
+  exports.Number = NumberT;
+
+  exports.uint8 = new NumberT('UInt8');
+
+  exports.uint16be = exports.uint16 = new NumberT('UInt16', 'BE');
+
+  exports.uint16le = new NumberT('UInt16', 'LE');
+
+  exports.uint24be = exports.uint24 = new NumberT('UInt24', 'BE');
+
+  exports.uint24le = new NumberT('UInt24', 'LE');
+
+  exports.uint32be = exports.uint32 = new NumberT('UInt32', 'BE');
+
+  exports.uint32le = new NumberT('UInt32', 'LE');
+
+  exports.int8 = new NumberT('Int8');
+
+  exports.int16be = exports.int16 = new NumberT('Int16', 'BE');
+
+  exports.int16le = new NumberT('Int16', 'LE');
+
+  exports.int24be = exports.int24 = new NumberT('Int24', 'BE');
+
+  exports.int24le = new NumberT('Int24', 'LE');
+
+  exports.int32be = exports.int32 = new NumberT('Int32', 'BE');
+
+  exports.int32le = new NumberT('Int32', 'LE');
+
+  exports.floatbe = exports.float = new NumberT('Float', 'BE');
+
+  exports.floatle = new NumberT('Float', 'LE');
+
+  exports.doublebe = exports.double = new NumberT('Double', 'BE');
+
+  exports.doublele = new NumberT('Double', 'LE');
+
+  Fixed = (function(_super) {
+    __extends(Fixed, _super);
+
+    function Fixed(size, endian, fracBits) {
+      if (fracBits == null) {
+        fracBits = size >> 1;
+      }
+      Fixed.__super__.constructor.call(this, "Int" + size, endian);
+      this._point = 1 << fracBits;
+    }
+
+    Fixed.prototype.decode = function(stream) {
+      return Fixed.__super__.decode.call(this, stream) / this._point;
+    };
+
+    Fixed.prototype.encode = function(stream, val) {
+      return Fixed.__super__.encode.call(this, stream, val * this._point | 0);
+    };
+
+    return Fixed;
+
+  })(NumberT);
+
+  exports.Fixed = Fixed;
+
+  exports.fixed16be = exports.fixed16 = new Fixed(16, 'BE');
+
+  exports.fixed16le = new Fixed(16, 'LE');
+
+  exports.fixed32be = exports.fixed32 = new Fixed(32, 'BE');
+
+  exports.fixed32le = new Fixed(32, 'LE');
+
+}).call(this);
+
+
+/***/ }),
+/* 23 */
+/***/ (function(module, exports) {
+
+module.exports = {};
+
+
+/***/ }),
+/* 24 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var $at = __webpack_require__(207)(true);
+
+// 21.1.3.27 String.prototype[@@iterator]()
+__webpack_require__(61)(String, 'String', function (iterated) {
+  this._t = String(iterated); // target
+  this._i = 0;                // next index
+// 21.1.5.2.1 %StringIteratorPrototype%.next()
+}, function () {
+  var O = this._t;
+  var index = this._i;
+  var point;
+  if (index >= O.length) return { value: undefined, done: true };
+  point = $at(O, index);
+  this._i += point.length;
+  return { value: point, done: false };
+});
+
+
+/***/ }),
+/* 25 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// NOTE: These type checking functions intentionally don't use `instanceof`
+// because it is fragile and can be easily faked with `Object.create()`.
+
+function isArray(arg) {
+  if (Array.isArray) {
+    return Array.isArray(arg);
+  }
+  return objectToString(arg) === '[object Array]';
+}
+exports.isArray = isArray;
+
+function isBoolean(arg) {
+  return typeof arg === 'boolean';
+}
+exports.isBoolean = isBoolean;
+
+function isNull(arg) {
+  return arg === null;
+}
+exports.isNull = isNull;
+
+function isNullOrUndefined(arg) {
+  return arg == null;
+}
+exports.isNullOrUndefined = isNullOrUndefined;
+
+function isNumber(arg) {
+  return typeof arg === 'number';
+}
+exports.isNumber = isNumber;
+
+function isString(arg) {
+  return typeof arg === 'string';
+}
+exports.isString = isString;
+
+function isSymbol(arg) {
+  return typeof arg === 'symbol';
+}
+exports.isSymbol = isSymbol;
+
+function isUndefined(arg) {
+  return arg === void 0;
+}
+exports.isUndefined = isUndefined;
+
+function isRegExp(re) {
+  return objectToString(re) === '[object RegExp]';
+}
+exports.isRegExp = isRegExp;
+
+function isObject(arg) {
+  return typeof arg === 'object' && arg !== null;
+}
+exports.isObject = isObject;
+
+function isDate(d) {
+  return objectToString(d) === '[object Date]';
+}
+exports.isDate = isDate;
+
+function isError(e) {
+  return (objectToString(e) === '[object Error]' || e instanceof Error);
+}
+exports.isError = isError;
+
+function isFunction(arg) {
+  return typeof arg === 'function';
+}
+exports.isFunction = isFunction;
+
+function isPrimitive(arg) {
+  return arg === null ||
+         typeof arg === 'boolean' ||
+         typeof arg === 'number' ||
+         typeof arg === 'string' ||
+         typeof arg === 'symbol' ||  // ES6 symbol
+         typeof arg === 'undefined';
+}
+exports.isPrimitive = isPrimitive;
+
+exports.isBuffer = Buffer.isBuffer;
+
+function objectToString(o) {
+  return Object.prototype.toString.call(o);
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 26 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+
+/*
+PDFObject - converts JavaScript types into their corrisponding PDF types.
+By Devon Govett
+ */
+
+(function() {
+  var PDFObject, PDFReference;
+
+  PDFObject = (function() {
+    var escapable, escapableRe, pad, swapBytes;
+
+    function PDFObject() {}
+
+    pad = function(str, length) {
+      return (Array(length + 1).join('0') + str).slice(-length);
+    };
+
+    escapableRe = /[\n\r\t\b\f\(\)\\]/g;
+
+    escapable = {
+      '\n': '\\n',
+      '\r': '\\r',
+      '\t': '\\t',
+      '\b': '\\b',
+      '\f': '\\f',
+      '\\': '\\\\',
+      '(': '\\(',
+      ')': '\\)'
+    };
+
+    swapBytes = function(buff) {
+      var a, i, j, l, ref;
+      l = buff.length;
+      if (l & 0x01) {
+        throw new Error("Buffer length must be even");
+      } else {
+        for (i = j = 0, ref = l - 1; j < ref; i = j += 2) {
+          a = buff[i];
+          buff[i] = buff[i + 1];
+          buff[i + 1] = a;
+        }
+      }
+      return buff;
+    };
+
+    PDFObject.convert = function(object) {
+      var e, i, isUnicode, items, j, key, out, ref, string, val;
+      if (typeof object === 'string') {
+        return '/' + object;
+      } else if (object instanceof String) {
+        string = object;
+        isUnicode = false;
+        for (i = j = 0, ref = string.length; j < ref; i = j += 1) {
+          if (string.charCodeAt(i) > 0x7f) {
+            isUnicode = true;
+            break;
+          }
+        }
+        if (isUnicode) {
+          string = swapBytes(new Buffer('\ufeff' + string, 'utf16le')).toString('binary');
+        }
+        string = string.replace(escapableRe, function(c) {
+          return escapable[c];
+        });
+        return '(' + string + ')';
+      } else if (Buffer.isBuffer(object)) {
+        return '<' + object.toString('hex') + '>';
+      } else if (object instanceof PDFReference) {
+        return object.toString();
+      } else if (object instanceof Date) {
+        return '(D:' + pad(object.getUTCFullYear(), 4) + pad(object.getUTCMonth() + 1, 2) + pad(object.getUTCDate(), 2) + pad(object.getUTCHours(), 2) + pad(object.getUTCMinutes(), 2) + pad(object.getUTCSeconds(), 2) + 'Z)';
+      } else if (Array.isArray(object)) {
+        items = ((function() {
+          var k, len, results;
+          results = [];
+          for (k = 0, len = object.length; k < len; k++) {
+            e = object[k];
+            results.push(PDFObject.convert(e));
+          }
+          return results;
+        })()).join(' ');
+        return '[' + items + ']';
+      } else if ({}.toString.call(object) === '[object Object]') {
+        out = ['<<'];
+        for (key in object) {
+          val = object[key];
+          out.push('/' + key + ' ' + PDFObject.convert(val));
+        }
+        out.push('>>');
+        return out.join('\n');
+      } else if (typeof object === 'number') {
+        return PDFObject.number(object);
+      } else {
+        return '' + object;
+      }
+    };
+
+    PDFObject.number = function(n) {
+      if (n > -1e21 && n < 1e21) {
+        return Math.round(n * 1e6) / 1e6;
+      }
+      throw new Error("unsupported number: " + n);
+    };
+
+    return PDFObject;
+
+  })();
+
+  module.exports = PDFObject;
+
+  PDFReference = __webpack_require__(87);
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 27 */
+/***/ (function(module, exports) {
+
+module.exports = function (bitmap, value) {
+  return {
+    enumerable: !(bitmap & 1),
+    configurable: !(bitmap & 2),
+    writable: !(bitmap & 4),
+    value: value
+  };
+};
+
+
+/***/ }),
+/* 28 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(201);
+var global = __webpack_require__(10);
+var hide = __webpack_require__(13);
+var Iterators = __webpack_require__(23);
+var TO_STRING_TAG = __webpack_require__(4)('toStringTag');
+
+var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
+  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
+  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
+  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
+  'TextTrackList,TouchList').split(',');
+
+for (var i = 0; i < DOMIterables.length; i++) {
+  var NAME = DOMIterables[i];
+  var Collection = global[NAME];
+  var proto = Collection && Collection.prototype;
+  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
+  Iterators[NAME] = Iterators.Array;
+}
+
+
+/***/ }),
+/* 29 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.14 / 15.2.3.14 Object.keys(O)
+var $keys = __webpack_require__(101);
+var enumBugKeys = __webpack_require__(66);
+
+module.exports = Object.keys || function keys(O) {
+  return $keys(O, enumBugKeys);
+};
+
+
+/***/ }),
+/* 30 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.1.13 ToObject(argument)
+var defined = __webpack_require__(56);
+module.exports = function (it) {
+  return Object(defined(it));
+};
+
+
+/***/ }),
+/* 31 */
+/***/ (function(module, exports) {
+
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+function EventEmitter() {
+  this._events = this._events || {};
+  this._maxListeners = this._maxListeners || undefined;
+}
+module.exports = EventEmitter;
+
+// Backwards-compat with node 0.10.x
+EventEmitter.EventEmitter = EventEmitter;
+
+EventEmitter.prototype._events = undefined;
+EventEmitter.prototype._maxListeners = undefined;
+
+// By default EventEmitters will print a warning if more than 10 listeners are
+// added to it. This is a useful default which helps finding memory leaks.
+EventEmitter.defaultMaxListeners = 10;
+
+// Obviously not all Emitters should be limited to 10. This function allows
+// that to be increased. Set to zero for unlimited.
+EventEmitter.prototype.setMaxListeners = function(n) {
+  if (!isNumber(n) || n < 0 || isNaN(n))
+    throw TypeError('n must be a positive number');
+  this._maxListeners = n;
+  return this;
+};
+
+EventEmitter.prototype.emit = function(type) {
+  var er, handler, len, args, i, listeners;
+
+  if (!this._events)
+    this._events = {};
+
+  // If there is no 'error' event listener then throw.
+  if (type === 'error') {
+    if (!this._events.error ||
+        (isObject(this._events.error) && !this._events.error.length)) {
+      er = arguments[1];
+      if (er instanceof Error) {
+        throw er; // Unhandled 'error' event
+      } else {
+        // At least give some kind of context to the user
+        var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
+        err.context = er;
+        throw err;
+      }
+    }
+  }
+
+  handler = this._events[type];
+
+  if (isUndefined(handler))
+    return false;
+
+  if (isFunction(handler)) {
+    switch (arguments.length) {
+      // fast cases
+      case 1:
+        handler.call(this);
+        break;
+      case 2:
+        handler.call(this, arguments[1]);
+        break;
+      case 3:
+        handler.call(this, arguments[1], arguments[2]);
+        break;
+      // slower
+      default:
+        args = Array.prototype.slice.call(arguments, 1);
+        handler.apply(this, args);
+    }
+  } else if (isObject(handler)) {
+    args = Array.prototype.slice.call(arguments, 1);
+    listeners = handler.slice();
+    len = listeners.length;
+    for (i = 0; i < len; i++)
+      listeners[i].apply(this, args);
+  }
+
+  return true;
+};
+
+EventEmitter.prototype.addListener = function(type, listener) {
+  var m;
+
+  if (!isFunction(listener))
+    throw TypeError('listener must be a function');
+
+  if (!this._events)
+    this._events = {};
+
+  // To avoid recursion in the case that type === "newListener"! Before
+  // adding it to the listeners, first emit "newListener".
+  if (this._events.newListener)
+    this.emit('newListener', type,
+              isFunction(listener.listener) ?
+              listener.listener : listener);
+
+  if (!this._events[type])
+    // Optimize the case of one listener. Don't need the extra array object.
+    this._events[type] = listener;
+  else if (isObject(this._events[type]))
+    // If we've already got an array, just append.
+    this._events[type].push(listener);
+  else
+    // Adding the second element, need to change to array.
+    this._events[type] = [this._events[type], listener];
+
+  // Check for listener leak
+  if (isObject(this._events[type]) && !this._events[type].warned) {
+    if (!isUndefined(this._maxListeners)) {
+      m = this._maxListeners;
+    } else {
+      m = EventEmitter.defaultMaxListeners;
+    }
+
+    if (m && m > 0 && this._events[type].length > m) {
+      this._events[type].warned = true;
+      console.error('(node) warning: possible EventEmitter memory ' +
+                    'leak detected. %d listeners added. ' +
+                    'Use emitter.setMaxListeners() to increase limit.',
+                    this._events[type].length);
+      if (typeof console.trace === 'function') {
+        // not supported in IE 10
+        console.trace();
+      }
+    }
+  }
+
+  return this;
+};
+
+EventEmitter.prototype.on = EventEmitter.prototype.addListener;
+
+EventEmitter.prototype.once = function(type, listener) {
+  if (!isFunction(listener))
+    throw TypeError('listener must be a function');
+
+  var fired = false;
+
+  function g() {
+    this.removeListener(type, g);
+
+    if (!fired) {
+      fired = true;
+      listener.apply(this, arguments);
+    }
+  }
+
+  g.listener = listener;
+  this.on(type, g);
+
+  return this;
+};
+
+// emits a 'removeListener' event iff the listener was removed
+EventEmitter.prototype.removeListener = function(type, listener) {
+  var list, position, length, i;
+
+  if (!isFunction(listener))
+    throw TypeError('listener must be a function');
+
+  if (!this._events || !this._events[type])
+    return this;
+
+  list = this._events[type];
+  length = list.length;
+  position = -1;
+
+  if (list === listener ||
+      (isFunction(list.listener) && list.listener === listener)) {
+    delete this._events[type];
+    if (this._events.removeListener)
+      this.emit('removeListener', type, listener);
+
+  } else if (isObject(list)) {
+    for (i = length; i-- > 0;) {
+      if (list[i] === listener ||
+          (list[i].listener && list[i].listener === listener)) {
+        position = i;
+        break;
+      }
+    }
+
+    if (position < 0)
+      return this;
+
+    if (list.length === 1) {
+      list.length = 0;
+      delete this._events[type];
+    } else {
+      list.splice(position, 1);
+    }
+
+    if (this._events.removeListener)
+      this.emit('removeListener', type, listener);
+  }
+
+  return this;
+};
+
+EventEmitter.prototype.removeAllListeners = function(type) {
+  var key, listeners;
+
+  if (!this._events)
+    return this;
+
+  // not listening for removeListener, no need to emit
+  if (!this._events.removeListener) {
+    if (arguments.length === 0)
+      this._events = {};
+    else if (this._events[type])
+      delete this._events[type];
+    return this;
+  }
+
+  // emit removeListener for all listeners on all events
+  if (arguments.length === 0) {
+    for (key in this._events) {
+      if (key === 'removeListener') continue;
+      this.removeAllListeners(key);
+    }
+    this.removeAllListeners('removeListener');
+    this._events = {};
+    return this;
+  }
+
+  listeners = this._events[type];
+
+  if (isFunction(listeners)) {
+    this.removeListener(type, listeners);
+  } else if (listeners) {
+    // LIFO order
+    while (listeners.length)
+      this.removeListener(type, listeners[listeners.length - 1]);
+  }
+  delete this._events[type];
+
+  return this;
+};
+
+EventEmitter.prototype.listeners = function(type) {
+  var ret;
+  if (!this._events || !this._events[type])
+    ret = [];
+  else if (isFunction(this._events[type]))
+    ret = [this._events[type]];
+  else
+    ret = this._events[type].slice();
+  return ret;
+};
+
+EventEmitter.prototype.listenerCount = function(type) {
+  if (this._events) {
+    var evlistener = this._events[type];
+
+    if (isFunction(evlistener))
+      return 1;
+    else if (evlistener)
+      return evlistener.length;
+  }
+  return 0;
+};
+
+EventEmitter.listenerCount = function(emitter, type) {
+  return emitter.listenerCount(type);
+};
+
+function isFunction(arg) {
+  return typeof arg === 'function';
+}
+
+function isNumber(arg) {
+  return typeof arg === 'number';
+}
+
+function isObject(arg) {
+  return typeof arg === 'object' && arg !== null;
+}
+
+function isUndefined(arg) {
+  return arg === void 0;
+}
+
+
+/***/ }),
+/* 32 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(process) {
+
+if (!process.version ||
+    process.version.indexOf('v0.') === 0 ||
+    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
+  module.exports = { nextTick: nextTick };
+} else {
+  module.exports = process
+}
+
+function nextTick(fn, arg1, arg2, arg3) {
+  if (typeof fn !== 'function') {
+    throw new TypeError('"callback" argument must be a function');
+  }
+  var len = arguments.length;
+  var args, i;
+  switch (len) {
+  case 0:
+  case 1:
+    return process.nextTick(fn);
+  case 2:
+    return process.nextTick(function afterTickOne() {
+      fn.call(null, arg1);
+    });
+  case 3:
+    return process.nextTick(function afterTickTwo() {
+      fn.call(null, arg1, arg2);
+    });
+  case 4:
+    return process.nextTick(function afterTickThree() {
+      fn.call(null, arg1, arg2, arg3);
+    });
+  default:
+    args = new Array(len - 1);
+    i = 0;
+    while (i < args.length) {
+      args[i++] = arguments[i];
+    }
+    return process.nextTick(function afterTick() {
+      fn.apply(null, args);
+    });
+  }
+}
+
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11)))
+
+/***/ }),
+/* 33 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* eslint-disable node/no-deprecated-api */
+var buffer = __webpack_require__(1)
+var Buffer = buffer.Buffer
+
+// alternative to using Object.keys for old browsers
+function copyProps (src, dst) {
+  for (var key in src) {
+    dst[key] = src[key]
+  }
+}
+if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
+  module.exports = buffer
+} else {
+  // Copy properties from require('buffer')
+  copyProps(buffer, exports)
+  exports.Buffer = SafeBuffer
+}
+
+function SafeBuffer (arg, encodingOrOffset, length) {
+  return Buffer(arg, encodingOrOffset, length)
+}
+
+// Copy static methods from Buffer
+copyProps(Buffer, SafeBuffer)
+
+SafeBuffer.from = function (arg, encodingOrOffset, length) {
+  if (typeof arg === 'number') {
+    throw new TypeError('Argument must not be a number')
+  }
+  return Buffer(arg, encodingOrOffset, length)
+}
+
+SafeBuffer.alloc = function (size, fill, encoding) {
+  if (typeof size !== 'number') {
+    throw new TypeError('Argument must be a number')
+  }
+  var buf = Buffer(size)
+  if (fill !== undefined) {
+    if (typeof encoding === 'string') {
+      buf.fill(fill, encoding)
+    } else {
+      buf.fill(fill)
+    }
+  } else {
+    buf.fill(0)
+  }
+  return buf
+}
+
+SafeBuffer.allocUnsafe = function (size) {
+  if (typeof size !== 'number') {
+    throw new TypeError('Argument must be a number')
+  }
+  return Buffer(size)
+}
+
+SafeBuffer.allocUnsafeSlow = function (size) {
+  if (typeof size !== 'number') {
+    throw new TypeError('Argument must be a number')
+  }
+  return buffer.SlowBuffer(size)
+}
+
+
+/***/ }),
+/* 34 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+
+var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&
+                (typeof Uint16Array !== 'undefined') &&
+                (typeof Int32Array !== 'undefined');
+
+function _has(obj, key) {
+  return Object.prototype.hasOwnProperty.call(obj, key);
+}
+
+exports.assign = function (obj /*from1, from2, from3, ...*/) {
+  var sources = Array.prototype.slice.call(arguments, 1);
+  while (sources.length) {
+    var source = sources.shift();
+    if (!source) { continue; }
+
+    if (typeof source !== 'object') {
+      throw new TypeError(source + 'must be non-object');
+    }
+
+    for (var p in source) {
+      if (_has(source, p)) {
+        obj[p] = source[p];
+      }
+    }
+  }
+
+  return obj;
+};
+
+
+// reduce buffer size, avoiding mem copy
+exports.shrinkBuf = function (buf, size) {
+  if (buf.length === size) { return buf; }
+  if (buf.subarray) { return buf.subarray(0, size); }
+  buf.length = size;
+  return buf;
+};
+
+
+var fnTyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    if (src.subarray && dest.subarray) {
+      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
+      return;
+    }
+    // Fallback to ordinary array
+    for (var i = 0; i < len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function (chunks) {
+    var i, l, len, pos, chunk, result;
+
+    // calculate data length
+    len = 0;
+    for (i = 0, l = chunks.length; i < l; i++) {
+      len += chunks[i].length;
+    }
+
+    // join chunks
+    result = new Uint8Array(len);
+    pos = 0;
+    for (i = 0, l = chunks.length; i < l; i++) {
+      chunk = chunks[i];
+      result.set(chunk, pos);
+      pos += chunk.length;
+    }
+
+    return result;
+  }
+};
+
+var fnUntyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    for (var i = 0; i < len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function (chunks) {
+    return [].concat.apply([], chunks);
+  }
+};
+
+
+// Enable/Disable typed arrays use, for testing
+//
+exports.setTyped = function (on) {
+  if (on) {
+    exports.Buf8  = Uint8Array;
+    exports.Buf16 = Uint16Array;
+    exports.Buf32 = Int32Array;
+    exports.assign(exports, fnTyped);
+  } else {
+    exports.Buf8  = Array;
+    exports.Buf16 = Array;
+    exports.Buf32 = Array;
+    exports.assign(exports, fnUntyped);
+  }
+};
+
+exports.setTyped(TYPED_OK);
+
+
+/***/ }),
+/* 35 */
+/***/ (function(module, exports) {
+
+exports.f = {}.propertyIsEnumerable;
+
+
+/***/ }),
+/* 36 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+var anObject = __webpack_require__(14);
+var dPs = __webpack_require__(100);
+var enumBugKeys = __webpack_require__(66);
+var IE_PROTO = __webpack_require__(64)('IE_PROTO');
+var Empty = function () { /* empty */ };
+var PROTOTYPE = 'prototype';
+
+// Create object with fake `null` prototype: use iframe Object with cleared prototype
+var createDict = function () {
+  // Thrash, waste and sodomy: IE GC bug
+  var iframe = __webpack_require__(96)('iframe');
+  var i = enumBugKeys.length;
+  var lt = '<';
+  var gt = '>';
+  var iframeDocument;
+  iframe.style.display = 'none';
+  __webpack_require__(205).appendChild(iframe);
+  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+  // createDict = iframe.contentWindow.Object;
+  // html.removeChild(iframe);
+  iframeDocument = iframe.contentWindow.document;
+  iframeDocument.open();
+  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
+  iframeDocument.close();
+  createDict = iframeDocument.F;
+  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
+  return createDict();
+};
+
+module.exports = Object.create || function create(O, Properties) {
+  var result;
+  if (O !== null) {
+    Empty[PROTOTYPE] = anObject(O);
+    result = new Empty();
+    Empty[PROTOTYPE] = null;
+    // add "__proto__" for Object.getPrototypeOf polyfill
+    result[IE_PROTO] = O;
+  } else result = createDict();
+  return Properties === undefined ? result : dPs(result, Properties);
+};
+
+
+/***/ }),
+/* 37 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.1.15 ToLength
+var toInteger = __webpack_require__(63);
+var min = Math.min;
+module.exports = function (it) {
+  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+};
+
+
+/***/ }),
+/* 38 */
+/***/ (function(module, exports) {
+
+var id = 0;
+var px = Math.random();
+module.exports = function (key) {
+  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+};
+
+
+/***/ }),
+/* 39 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var def = __webpack_require__(6).f;
+var has = __webpack_require__(18);
+var TAG = __webpack_require__(4)('toStringTag');
+
+module.exports = function (it, tag, stat) {
+  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
+};
+
+
+/***/ }),
+/* 40 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var META = __webpack_require__(38)('meta');
+var isObject = __webpack_require__(9);
+var has = __webpack_require__(18);
+var setDesc = __webpack_require__(6).f;
+var id = 0;
+var isExtensible = Object.isExtensible || function () {
+  return true;
+};
+var FREEZE = !__webpack_require__(19)(function () {
+  return isExtensible(Object.preventExtensions({}));
+});
+var setMeta = function (it) {
+  setDesc(it, META, { value: {
+    i: 'O' + ++id, // object ID
+    w: {}          // weak collections IDs
+  } });
+};
+var fastKey = function (it, create) {
+  // return primitive with prefix
+  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+  if (!has(it, META)) {
+    // can't set metadata to uncaught frozen object
+    if (!isExtensible(it)) return 'F';
+    // not necessary to add metadata
+    if (!create) return 'E';
+    // add missing metadata
+    setMeta(it);
+  // return object ID
+  } return it[META].i;
+};
+var getWeak = function (it, create) {
+  if (!has(it, META)) {
+    // can't set metadata to uncaught frozen object
+    if (!isExtensible(it)) return true;
+    // not necessary to add metadata
+    if (!create) return false;
+    // add missing metadata
+    setMeta(it);
+  // return hash weak collections IDs
+  } return it[META].w;
+};
+// add metadata on freeze-family methods calling
+var onFreeze = function (it) {
+  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
+  return it;
+};
+var meta = module.exports = {
+  KEY: META,
+  NEED: false,
+  fastKey: fastKey,
+  getWeak: getWeak,
+  onFreeze: onFreeze
+};
+
+
+/***/ }),
+/* 41 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ctx = __webpack_require__(20);
+var call = __webpack_require__(111);
+var isArrayIter = __webpack_require__(112);
+var anObject = __webpack_require__(14);
+var toLength = __webpack_require__(37);
+var getIterFn = __webpack_require__(67);
+var BREAK = {};
+var RETURN = {};
+var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
+  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
+  var f = ctx(fn, that, entries ? 2 : 1);
+  var index = 0;
+  var length, step, iterator, result;
+  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
+  // fast case for arrays with default iterator
+  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
+    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+    if (result === BREAK || result === RETURN) return result;
+  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
+    result = call(iterator, f, step.value, entries);
+    if (result === BREAK || result === RETURN) return result;
+  }
+};
+exports.BREAK = BREAK;
+exports.RETURN = RETURN;
+
+
+/***/ }),
+/* 42 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var isString = __webpack_require__(0).isString;
+var isNumber = __webpack_require__(0).isNumber;
+var isObject = __webpack_require__(0).isObject;
+var isArray = __webpack_require__(0).isArray;
+var LineBreaker = __webpack_require__(78);
+
+var LEADING = /^(\s)+/g;
+var TRAILING = /(\s)+$/g;
+
+/**
+ * Creates an instance of TextTools - text measurement utility
+ *
+ * @constructor
+ * @param {FontProvider} fontProvider
+ */
+function TextTools(fontProvider) {
+	this.fontProvider = fontProvider;
+}
+
+/**
+ * Converts an array of strings (or inline-definition-objects) into a collection
+ * of inlines and calculated minWidth/maxWidth.
+ * and their min/max widths
+ * @param  {Object} textArray - an array of inline-definition-objects (or strings)
+ * @param  {Object} styleContextStack current style stack
+ * @return {Object}                   collection of inlines, minWidth, maxWidth
+ */
+TextTools.prototype.buildInlines = function (textArray, styleContextStack) {
+	var measured = measure(this.fontProvider, textArray, styleContextStack);
+
+	var minWidth = 0,
+		maxWidth = 0,
+		currentLineWidth;
+
+	measured.forEach(function (inline) {
+		minWidth = Math.max(minWidth, inline.width - inline.leadingCut - inline.trailingCut);
+
+		if (!currentLineWidth) {
+			currentLineWidth = {width: 0, leadingCut: inline.leadingCut, trailingCut: 0};
+		}
+
+		currentLineWidth.width += inline.width;
+		currentLineWidth.trailingCut = inline.trailingCut;
+
+		maxWidth = Math.max(maxWidth, getTrimmedWidth(currentLineWidth));
+
+		if (inline.lineEnd) {
+			currentLineWidth = null;
+		}
+	});
+
+	if (getStyleProperty({}, styleContextStack, 'noWrap', false)) {
+		minWidth = maxWidth;
+	}
+
+	return {
+		items: measured,
+		minWidth: minWidth,
+		maxWidth: maxWidth
+	};
+
+	function getTrimmedWidth(item) {
+		return Math.max(0, item.width - item.leadingCut - item.trailingCut);
+	}
+};
+
+/**
+ * Returns size of the specified string (without breaking it) using the current style
+ * @param  {String} text              text to be measured
+ * @param  {Object} styleContextStack current style stack
+ * @return {Object}                   size of the specified string
+ */
+TextTools.prototype.sizeOfString = function (text, styleContextStack) {
+	text = text ? text.toString().replace(/\t/g, '    ') : '';
+
+	//TODO: refactor - extract from measure
+	var fontName = getStyleProperty({}, styleContextStack, 'font', 'Roboto');
+	var fontSize = getStyleProperty({}, styleContextStack, 'fontSize', 12);
+	var fontFeatures = getStyleProperty({}, styleContextStack, 'fontFeatures', null);
+	var bold = getStyleProperty({}, styleContextStack, 'bold', false);
+	var italics = getStyleProperty({}, styleContextStack, 'italics', false);
+	var lineHeight = getStyleProperty({}, styleContextStack, 'lineHeight', 1);
+	var characterSpacing = getStyleProperty({}, styleContextStack, 'characterSpacing', 0);
+
+	var font = this.fontProvider.provideFont(fontName, bold, italics);
+
+	return {
+		width: widthOfString(text, font, fontSize, characterSpacing, fontFeatures),
+		height: font.lineHeight(fontSize) * lineHeight,
+		fontSize: fontSize,
+		lineHeight: lineHeight,
+		ascender: font.ascender / 1000 * fontSize,
+		descender: font.descender / 1000 * fontSize
+	};
+};
+
+TextTools.prototype.widthOfString = function (text, font, fontSize, characterSpacing, fontFeatures) {
+	return widthOfString(text, font, fontSize, characterSpacing, fontFeatures);
+};
+
+function splitWords(text, noWrap) {
+	var results = [];
+	text = text.replace(/\t/g, '    ');
+
+	if (noWrap) {
+		results.push({text: text});
+		return results;
+	}
+
+	var breaker = new LineBreaker(text);
+	var last = 0;
+	var bk;
+
+	while (bk = breaker.nextBreak()) {
+		var word = text.slice(last, bk.position);
+
+		if (bk.required || word.match(/\r?\n$|\r$/)) { // new line
+			word = word.replace(/\r?\n$|\r$/, '');
+			results.push({text: word, lineEnd: true});
+		} else {
+			results.push({text: word});
+		}
+
+		last = bk.position;
+	}
+
+	return results;
+}
+
+function copyStyle(source, destination) {
+	destination = destination || {};
+	source = source || {}; //TODO: default style
+
+	for (var key in source) {
+		if (key != 'text' && source.hasOwnProperty(key)) {
+			destination[key] = source[key];
+		}
+	}
+
+	return destination;
+}
+
+function normalizeTextArray(array, styleContextStack) {
+	function flatten(array) {
+		return array.reduce(function (prev, cur) {
+			var current = isArray(cur.text) ? flatten(cur.text) : cur;
+			var more = [].concat(current).some(Array.isArray);
+			return prev.concat(more ? flatten(current) : current);
+		}, []);
+	}
+
+	var results = [];
+
+	if (!isArray(array)) {
+		array = [array];
+	}
+
+	array = flatten(array);
+
+	for (var i = 0, l = array.length; i < l; i++) {
+		var item = array[i];
+		var style = null;
+		var words;
+
+		var noWrap = getStyleProperty(item || {}, styleContextStack, 'noWrap', false);
+		if (isObject(item)) {
+			words = splitWords(normalizeString(item.text), noWrap);
+			style = copyStyle(item);
+		} else {
+			words = splitWords(normalizeString(item), noWrap);
+		}
+
+		for (var i2 = 0, l2 = words.length; i2 < l2; i2++) {
+			var result = {
+				text: words[i2].text
+			};
+
+			if (words[i2].lineEnd) {
+				result.lineEnd = true;
+			}
+
+			copyStyle(style, result);
+
+			results.push(result);
+		}
+	}
+
+	return results;
+}
+
+function normalizeString(value) {
+	if (value === undefined || value === null) {
+		return '';
+	} else if (isNumber(value)) {
+		return value.toString();
+	} else if (isString(value)) {
+		return value;
+	} else {
+		return value.toString();
+	}
+}
+
+function getStyleProperty(item, styleContextStack, property, defaultValue) {
+	var value;
+
+	if (item[property] !== undefined && item[property] !== null) {
+		// item defines this property
+		return item[property];
+	}
+
+	if (!styleContextStack) {
+		return defaultValue;
+	}
+
+	styleContextStack.auto(item, function () {
+		value = styleContextStack.getProperty(property);
+	});
+
+	if (value !== null && value !== undefined) {
+		return value;
+	} else {
+		return defaultValue;
+	}
+}
+
+function measure(fontProvider, textArray, styleContextStack) {
+	var normalized = normalizeTextArray(textArray, styleContextStack);
+
+	if (normalized.length) {
+		var leadingIndent = getStyleProperty(normalized[0], styleContextStack, 'leadingIndent', 0);
+
+		if (leadingIndent) {
+			normalized[0].leadingCut = -leadingIndent;
+			normalized[0].leadingIndent = leadingIndent;
+		}
+	}
+
+	normalized.forEach(function (item) {
+		var fontName = getStyleProperty(item, styleContextStack, 'font', 'Roboto');
+		var fontSize = getStyleProperty(item, styleContextStack, 'fontSize', 12);
+		var fontFeatures = getStyleProperty(item, styleContextStack, 'fontFeatures', null);
+		var bold = getStyleProperty(item, styleContextStack, 'bold', false);
+		var italics = getStyleProperty(item, styleContextStack, 'italics', false);
+		var color = getStyleProperty(item, styleContextStack, 'color', 'black');
+		var decoration = getStyleProperty(item, styleContextStack, 'decoration', null);
+		var decorationColor = getStyleProperty(item, styleContextStack, 'decorationColor', null);
+		var decorationStyle = getStyleProperty(item, styleContextStack, 'decorationStyle', null);
+		var background = getStyleProperty(item, styleContextStack, 'background', null);
+		var lineHeight = getStyleProperty(item, styleContextStack, 'lineHeight', 1);
+		var characterSpacing = getStyleProperty(item, styleContextStack, 'characterSpacing', 0);
+		var link = getStyleProperty(item, styleContextStack, 'link', null);
+		var linkToPage = getStyleProperty(item, styleContextStack, 'linkToPage', null);
+		var noWrap = getStyleProperty(item, styleContextStack, 'noWrap', null);
+		var preserveLeadingSpaces = getStyleProperty(item, styleContextStack, 'preserveLeadingSpaces', false);
+
+		var font = fontProvider.provideFont(fontName, bold, italics);
+
+		item.width = widthOfString(item.text, font, fontSize, characterSpacing, fontFeatures);
+		item.height = font.lineHeight(fontSize) * lineHeight;
+
+		var leadingSpaces = item.text.match(LEADING);
+
+		if (!item.leadingCut) {
+			item.leadingCut = 0;
+		}
+
+		if (leadingSpaces && !preserveLeadingSpaces) {
+			item.leadingCut += widthOfString(leadingSpaces[0], font, fontSize, characterSpacing, fontFeatures);
+		}
+
+		var trailingSpaces = item.text.match(TRAILING);
+		if (trailingSpaces) {
+			item.trailingCut = widthOfString(trailingSpaces[0], font, fontSize, characterSpacing, fontFeatures);
+		} else {
+			item.trailingCut = 0;
+		}
+
+		item.alignment = getStyleProperty(item, styleContextStack, 'alignment', 'left');
+		item.font = font;
+		item.fontSize = fontSize;
+		item.fontFeatures = fontFeatures;
+		item.characterSpacing = characterSpacing;
+		item.color = color;
+		item.decoration = decoration;
+		item.decorationColor = decorationColor;
+		item.decorationStyle = decorationStyle;
+		item.background = background;
+		item.link = link;
+		item.linkToPage = linkToPage;
+		item.noWrap = noWrap;
+	});
+
+	return normalized;
+}
+
+function widthOfString(text, font, fontSize, characterSpacing, fontFeatures) {
+	return font.widthOfString(text, fontSize, fontFeatures) + ((characterSpacing || 0) * (text.length - 1));
+}
+
+module.exports = TextTools;
+
+
+/***/ }),
+/* 43 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+var UnicodeTrie, inflate;
+
+inflate = __webpack_require__(79);
+
+UnicodeTrie = (function() {
+  var DATA_BLOCK_LENGTH, DATA_GRANULARITY, DATA_MASK, INDEX_1_OFFSET, INDEX_2_BLOCK_LENGTH, INDEX_2_BMP_LENGTH, INDEX_2_MASK, INDEX_SHIFT, LSCP_INDEX_2_LENGTH, LSCP_INDEX_2_OFFSET, OMITTED_BMP_INDEX_1_LENGTH, SHIFT_1, SHIFT_1_2, SHIFT_2, UTF8_2B_INDEX_2_LENGTH, UTF8_2B_INDEX_2_OFFSET;
+
+  SHIFT_1 = 6 + 5;
+
+  SHIFT_2 = 5;
+
+  SHIFT_1_2 = SHIFT_1 - SHIFT_2;
+
+  OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;
+
+  INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;
+
+  INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;
+
+  INDEX_SHIFT = 2;
+
+  DATA_BLOCK_LENGTH = 1 << SHIFT_2;
+
+  DATA_MASK = DATA_BLOCK_LENGTH - 1;
+
+  LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;
+
+  LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;
+
+  INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + LSCP_INDEX_2_LENGTH;
+
+  UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;
+
+  UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6;
+
+  INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;
+
+  DATA_GRANULARITY = 1 << INDEX_SHIFT;
+
+  function UnicodeTrie(data) {
+    var isBuffer, uncompressedLength, view;
+    isBuffer = typeof data.readUInt32BE === 'function' && typeof data.slice === 'function';
+    if (isBuffer || data instanceof Uint8Array) {
+      if (isBuffer) {
+        this.highStart = data.readUInt32BE(0);
+        this.errorValue = data.readUInt32BE(4);
+        uncompressedLength = data.readUInt32BE(8);
+        data = data.slice(12);
+      } else {
+        view = new DataView(data.buffer);
+        this.highStart = view.getUint32(0);
+        this.errorValue = view.getUint32(4);
+        uncompressedLength = view.getUint32(8);
+        data = data.subarray(12);
+      }
+      data = inflate(data, new Uint8Array(uncompressedLength));
+      data = inflate(data, new Uint8Array(uncompressedLength));
+      this.data = new Uint32Array(data.buffer);
+    } else {
+      this.data = data.data, this.highStart = data.highStart, this.errorValue = data.errorValue;
+    }
+  }
+
+  UnicodeTrie.prototype.get = function(codePoint) {
+    var index;
+    if (codePoint < 0 || codePoint > 0x10ffff) {
+      return this.errorValue;
+    }
+    if (codePoint < 0xd800 || (codePoint > 0xdbff && codePoint <= 0xffff)) {
+      index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);
+      return this.data[index];
+    }
+    if (codePoint <= 0xffff) {
+      index = (this.data[LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);
+      return this.data[index];
+    }
+    if (codePoint < this.highStart) {
+      index = this.data[(INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH) + (codePoint >> SHIFT_1)];
+      index = this.data[index + ((codePoint >> SHIFT_2) & INDEX_2_MASK)];
+      index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);
+      return this.data[index];
+    }
+    return this.data[this.data.length - DATA_GRANULARITY];
+  };
+
+  return UnicodeTrie;
+
+})();
+
+module.exports = UnicodeTrie;
+
+
+/***/ }),
+/* 44 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var isString = __webpack_require__(0).isString;
+
+function buildColumnWidths(columns, availableWidth) {
+	var autoColumns = [],
+		autoMin = 0, autoMax = 0,
+		starColumns = [],
+		starMaxMin = 0,
+		starMaxMax = 0,
+		fixedColumns = [],
+		initial_availableWidth = availableWidth;
+
+	columns.forEach(function (column) {
+		if (isAutoColumn(column)) {
+			autoColumns.push(column);
+			autoMin += column._minWidth;
+			autoMax += column._maxWidth;
+		} else if (isStarColumn(column)) {
+			starColumns.push(column);
+			starMaxMin = Math.max(starMaxMin, column._minWidth);
+			starMaxMax = Math.max(starMaxMax, column._maxWidth);
+		} else {
+			fixedColumns.push(column);
+		}
+	});
+
+	fixedColumns.forEach(function (col) {
+		// width specified as %
+		if (isString(col.width) && /\d+%/.test(col.width)) {
+			col.width = parseFloat(col.width) * initial_availableWidth / 100;
+		}
+		if (col.width < (col._minWidth) && col.elasticWidth) {
+			col._calcWidth = col._minWidth;
+		} else {
+			col._calcWidth = col.width;
+		}
+
+		availableWidth -= col._calcWidth;
+	});
+
+	// http://www.freesoft.org/CIE/RFC/1942/18.htm
+	// http://www.w3.org/TR/CSS2/tables.html#width-layout
+	// http://dev.w3.org/csswg/css3-tables-algorithms/Overview.src.htm
+	var minW = autoMin + starMaxMin * starColumns.length;
+	var maxW = autoMax + starMaxMax * starColumns.length;
+	if (minW >= availableWidth) {
+		// case 1 - there's no way to fit all columns within available width
+		// that's actually pretty bad situation with PDF as we have no horizontal scroll
+		// no easy workaround (unless we decide, in the future, to split single words)
+		// currently we simply use minWidths for all columns
+		autoColumns.forEach(function (col) {
+			col._calcWidth = col._minWidth;
+		});
+
+		starColumns.forEach(function (col) {
+			col._calcWidth = starMaxMin; // starMaxMin already contains padding
+		});
+	} else {
+		if (maxW < availableWidth) {
+			// case 2 - we can fit rest of the table within available space
+			autoColumns.forEach(function (col) {
+				col._calcWidth = col._maxWidth;
+				availableWidth -= col._calcWidth;
+			});
+		} else {
+			// maxW is too large, but minW fits within available width
+			var W = availableWidth - minW;
+			var D = maxW - minW;
+
+			autoColumns.forEach(function (col) {
+				var d = col._maxWidth - col._minWidth;
+				col._calcWidth = col._minWidth + d * W / D;
+				availableWidth -= col._calcWidth;
+			});
+		}
+
+		if (starColumns.length > 0) {
+			var starSize = availableWidth / starColumns.length;
+
+			starColumns.forEach(function (col) {
+				col._calcWidth = starSize;
+			});
+		}
+	}
+}
+
+function isAutoColumn(column) {
+	return column.width === 'auto';
+}
+
+function isStarColumn(column) {
+	return column.width === null || column.width === undefined || column.width === '*' || column.width === 'star';
+}
+
+//TODO: refactor and reuse in measureTable
+function measureMinMax(columns) {
+	var result = {min: 0, max: 0};
+
+	var maxStar = {min: 0, max: 0};
+	var starCount = 0;
+
+	for (var i = 0, l = columns.length; i < l; i++) {
+		var c = columns[i];
+
+		if (isStarColumn(c)) {
+			maxStar.min = Math.max(maxStar.min, c._minWidth);
+			maxStar.max = Math.max(maxStar.max, c._maxWidth);
+			starCount++;
+		} else if (isAutoColumn(c)) {
+			result.min += c._minWidth;
+			result.max += c._maxWidth;
+		} else {
+			result.min += ((c.width !== undefined && c.width) || c._minWidth);
+			result.max += ((c.width !== undefined && c.width) || c._maxWidth);
+		}
+	}
+
+	if (starCount) {
+		result.min += starCount * maxStar.min;
+		result.max += starCount * maxStar.max;
+	}
+
+	return result;
+}
+
+/**
+ * Calculates column widths
+ * @private
+ */
+module.exports = {
+	buildColumnWidths: buildColumnWidths,
+	measureMinMax: measureMinMax,
+	isAutoColumn: isAutoColumn,
+	isStarColumn: isStarColumn
+};
+
+
+/***/ }),
+/* 45 */
+/***/ (function(module, exports, __webpack_require__) {
+
+exports = module.exports = __webpack_require__(83);
+exports.Stream = exports;
+exports.Readable = exports;
+exports.Writable = __webpack_require__(46);
+exports.Duplex = __webpack_require__(16);
+exports.Transform = __webpack_require__(86);
+exports.PassThrough = __webpack_require__(145);
+
+
+/***/ }),
+/* 46 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// A bit simpler than readable streams.
+// Implement an async ._write(chunk, encoding, cb), and it'll handle all
+// the drain event emission and buffering.
+
+
+
+/*<replacement>*/
+
+var processNextTick = __webpack_require__(32).nextTick;
+/*</replacement>*/
+
+module.exports = Writable;
+
+/* <replacement> */
+function WriteReq(chunk, encoding, cb) {
+  this.chunk = chunk;
+  this.encoding = encoding;
+  this.callback = cb;
+  this.next = null;
+}
+
+// It seems a linked list but it is not
+// there will be only 2 of these for each stream
+function CorkedRequest(state) {
+  var _this = this;
+
+  this.next = null;
+  this.entry = null;
+  this.finish = function () {
+    onCorkedFinish(_this, state);
+  };
+}
+/* </replacement> */
+
+/*<replacement>*/
+var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
+/*</replacement>*/
+
+/*<replacement>*/
+var Duplex;
+/*</replacement>*/
+
+Writable.WritableState = WritableState;
+
+/*<replacement>*/
+var util = __webpack_require__(25);
+util.inherits = __webpack_require__(21);
+/*</replacement>*/
+
+/*<replacement>*/
+var internalUtil = {
+  deprecate: __webpack_require__(144)
+};
+/*</replacement>*/
+
+/*<replacement>*/
+var Stream = __webpack_require__(84);
+/*</replacement>*/
+
+/*<replacement>*/
+
+var Buffer = __webpack_require__(33).Buffer;
+var OurUint8Array = global.Uint8Array || function () {};
+function _uint8ArrayToBuffer(chunk) {
+  return Buffer.from(chunk);
+}
+function _isUint8Array(obj) {
+  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
+}
+
+/*</replacement>*/
+
+var destroyImpl = __webpack_require__(85);
+
+util.inherits(Writable, Stream);
+
+function nop() {}
+
+function WritableState(options, stream) {
+  Duplex = Duplex || __webpack_require__(16);
+
+  options = options || {};
+
+  // Duplex streams are both readable and writable, but share
+  // the same options object.
+  // However, some cases require setting options to different
+  // values for the readable and the writable sides of the duplex stream.
+  // These options can be provided separately as readableXXX and writableXXX.
+  var isDuplex = stream instanceof Duplex;
+
+  // object stream flag to indicate whether or not this stream
+  // contains buffers or objects.
+  this.objectMode = !!options.objectMode;
+
+  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
+
+  // the point at which write() starts returning false
+  // Note: 0 is a valid value, means that we always return false if
+  // the entire buffer is not flushed immediately on write()
+  var hwm = options.highWaterMark;
+  var writableHwm = options.writableHighWaterMark;
+  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
+
+  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
+
+  // cast to ints.
+  this.highWaterMark = Math.floor(this.highWaterMark);
+
+  // if _final has been called
+  this.finalCalled = false;
+
+  // drain event flag.
+  this.needDrain = false;
+  // at the start of calling end()
+  this.ending = false;
+  // when end() has been called, and returned
+  this.ended = false;
+  // when 'finish' is emitted
+  this.finished = false;
+
+  // has it been destroyed
+  this.destroyed = false;
+
+  // should we decode strings into buffers before passing to _write?
+  // this is here so that some node-core streams can optimize string
+  // handling at a lower level.
+  var noDecode = options.decodeStrings === false;
+  this.decodeStrings = !noDecode;
+
+  // Crypto is kind of old and crusty.  Historically, its default string
+  // encoding is 'binary' so we have to make this configurable.
+  // Everything else in the universe uses 'utf8', though.
+  this.defaultEncoding = options.defaultEncoding || 'utf8';
+
+  // not an actual buffer we keep track of, but a measurement
+  // of how much we're waiting to get pushed to some underlying
+  // socket or file.
+  this.length = 0;
+
+  // a flag to see when we're in the middle of a write.
+  this.writing = false;
+
+  // when true all writes will be buffered until .uncork() call
+  this.corked = 0;
+
+  // a flag to be able to tell if the onwrite cb is called immediately,
+  // or on a later tick.  We set this to true at first, because any
+  // actions that shouldn't happen until "later" should generally also
+  // not happen before the first write call.
+  this.sync = true;
+
+  // a flag to know if we're processing previously buffered items, which
+  // may call the _write() callback in the same tick, so that we don't
+  // end up in an overlapped onwrite situation.
+  this.bufferProcessing = false;
+
+  // the callback that's passed to _write(chunk,cb)
+  this.onwrite = function (er) {
+    onwrite(stream, er);
+  };
+
+  // the callback that the user supplies to write(chunk,encoding,cb)
+  this.writecb = null;
+
+  // the amount that is being written when _write is called.
+  this.writelen = 0;
+
+  this.bufferedRequest = null;
+  this.lastBufferedRequest = null;
+
+  // number of pending user-supplied write callbacks
+  // this must be 0 before 'finish' can be emitted
+  this.pendingcb = 0;
+
+  // emit prefinish if the only thing we're waiting for is _write cbs
+  // This is relevant for synchronous Transform streams
+  this.prefinished = false;
+
+  // True if the error was already emitted and should not be thrown again
+  this.errorEmitted = false;
+
+  // count buffered requests
+  this.bufferedRequestCount = 0;
+
+  // allocate the first CorkedRequest, there is always
+  // one allocated and free to use, and we maintain at most two
+  this.corkedRequestsFree = new CorkedRequest(this);
+}
+
+WritableState.prototype.getBuffer = function getBuffer() {
+  var current = this.bufferedRequest;
+  var out = [];
+  while (current) {
+    out.push(current);
+    current = current.next;
+  }
+  return out;
+};
+
+(function () {
+  try {
+    Object.defineProperty(WritableState.prototype, 'buffer', {
+      get: internalUtil.deprecate(function () {
+        return this.getBuffer();
+      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
+    });
+  } catch (_) {}
+})();
+
+// Test _writableState for inheritance to account for Duplex streams,
+// whose prototype chain only points to Readable.
+var realHasInstance;
+if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
+  realHasInstance = Function.prototype[Symbol.hasInstance];
+  Object.defineProperty(Writable, Symbol.hasInstance, {
+    value: function (object) {
+      if (realHasInstance.call(this, object)) return true;
+      if (this !== Writable) return false;
+
+      return object && object._writableState instanceof WritableState;
+    }
+  });
+} else {
+  realHasInstance = function (object) {
+    return object instanceof this;
+  };
+}
+
+function Writable(options) {
+  Duplex = Duplex || __webpack_require__(16);
+
+  // Writable ctor is applied to Duplexes, too.
+  // `realHasInstance` is necessary because using plain `instanceof`
+  // would return false, as no `_writableState` property is attached.
+
+  // Trying to use the custom `instanceof` for Writable here will also break the
+  // Node.js LazyTransform implementation, which has a non-trivial getter for
+  // `_writableState` that would lead to infinite recursion.
+  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
+    return new Writable(options);
+  }
+
+  this._writableState = new WritableState(options, this);
+
+  // legacy.
+  this.writable = true;
+
+  if (options) {
+    if (typeof options.write === 'function') this._write = options.write;
+
+    if (typeof options.writev === 'function') this._writev = options.writev;
+
+    if (typeof options.destroy === 'function') this._destroy = options.destroy;
+
+    if (typeof options.final === 'function') this._final = options.final;
+  }
+
+  Stream.call(this);
+}
+
+// Otherwise people can pipe Writable streams, which is just wrong.
+Writable.prototype.pipe = function () {
+  this.emit('error', new Error('Cannot pipe, not readable'));
+};
+
+function writeAfterEnd(stream, cb) {
+  var er = new Error('write after end');
+  // TODO: defer error events consistently everywhere, not just the cb
+  stream.emit('error', er);
+  processNextTick(cb, er);
+}
+
+// Checks that a user-supplied chunk is valid, especially for the particular
+// mode the stream is in. Currently this means that `null` is never accepted
+// and undefined/non-string values are only allowed in object mode.
+function validChunk(stream, state, chunk, cb) {
+  var valid = true;
+  var er = false;
+
+  if (chunk === null) {
+    er = new TypeError('May not write null values to stream');
+  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
+    er = new TypeError('Invalid non-string/buffer chunk');
+  }
+  if (er) {
+    stream.emit('error', er);
+    processNextTick(cb, er);
+    valid = false;
+  }
+  return valid;
+}
+
+Writable.prototype.write = function (chunk, encoding, cb) {
+  var state = this._writableState;
+  var ret = false;
+  var isBuf = !state.objectMode && _isUint8Array(chunk);
+
+  if (isBuf && !Buffer.isBuffer(chunk)) {
+    chunk = _uint8ArrayToBuffer(chunk);
+  }
+
+  if (typeof encoding === 'function') {
+    cb = encoding;
+    encoding = null;
+  }
+
+  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
+
+  if (typeof cb !== 'function') cb = nop;
+
+  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
+    state.pendingcb++;
+    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
+  }
+
+  return ret;
+};
+
+Writable.prototype.cork = function () {
+  var state = this._writableState;
+
+  state.corked++;
+};
+
+Writable.prototype.uncork = function () {
+  var state = this._writableState;
+
+  if (state.corked) {
+    state.corked--;
+
+    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
+  }
+};
+
+Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
+  // node::ParseEncoding() requires lower case.
+  if (typeof encoding === 'string') encoding = encoding.toLowerCase();
+  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
+  this._writableState.defaultEncoding = encoding;
+  return this;
+};
+
+function decodeChunk(state, chunk, encoding) {
+  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
+    chunk = Buffer.from(chunk, encoding);
+  }
+  return chunk;
+}
+
+// if we're already writing something, then just put this
+// in the queue, and wait our turn.  Otherwise, call _write
+// If we return false, then we need a drain event, so set that flag.
+function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
+  if (!isBuf) {
+    var newChunk = decodeChunk(state, chunk, encoding);
+    if (chunk !== newChunk) {
+      isBuf = true;
+      encoding = 'buffer';
+      chunk = newChunk;
+    }
+  }
+  var len = state.objectMode ? 1 : chunk.length;
+
+  state.length += len;
+
+  var ret = state.length < state.highWaterMark;
+  // we must ensure that previous needDrain will not be reset to false.
+  if (!ret) state.needDrain = true;
+
+  if (state.writing || state.corked) {
+    var last = state.lastBufferedRequest;
+    state.lastBufferedRequest = {
+      chunk: chunk,
+      encoding: encoding,
+      isBuf: isBuf,
+      callback: cb,
+      next: null
+    };
+    if (last) {
+      last.next = state.lastBufferedRequest;
+    } else {
+      state.bufferedRequest = state.lastBufferedRequest;
+    }
+    state.bufferedRequestCount += 1;
+  } else {
+    doWrite(stream, state, false, len, chunk, encoding, cb);
+  }
+
+  return ret;
+}
+
+function doWrite(stream, state, writev, len, chunk, encoding, cb) {
+  state.writelen = len;
+  state.writecb = cb;
+  state.writing = true;
+  state.sync = true;
+  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
+  state.sync = false;
+}
+
+function onwriteError(stream, state, sync, er, cb) {
+  --state.pendingcb;
+
+  if (sync) {
+    // defer the callback if we are being called synchronously
+    // to avoid piling up things on the stack
+    processNextTick(cb, er);
+    // this can emit finish, and it will always happen
+    // after error
+    processNextTick(finishMaybe, stream, state);
+    stream._writableState.errorEmitted = true;
+    stream.emit('error', er);
+  } else {
+    // the caller expect this to happen before if
+    // it is async
+    cb(er);
+    stream._writableState.errorEmitted = true;
+    stream.emit('error', er);
+    // this can emit finish, but finish must
+    // always follow error
+    finishMaybe(stream, state);
+  }
+}
+
+function onwriteStateUpdate(state) {
+  state.writing = false;
+  state.writecb = null;
+  state.length -= state.writelen;
+  state.writelen = 0;
+}
+
+function onwrite(stream, er) {
+  var state = stream._writableState;
+  var sync = state.sync;
+  var cb = state.writecb;
+
+  onwriteStateUpdate(state);
+
+  if (er) onwriteError(stream, state, sync, er, cb);else {
+    // Check if we're actually ready to finish, but don't emit yet
+    var finished = needFinish(state);
+
+    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
+      clearBuffer(stream, state);
+    }
+
+    if (sync) {
+      /*<replacement>*/
+      asyncWrite(afterWrite, stream, state, finished, cb);
+      /*</replacement>*/
+    } else {
+      afterWrite(stream, state, finished, cb);
+    }
+  }
+}
+
+function afterWrite(stream, state, finished, cb) {
+  if (!finished) onwriteDrain(stream, state);
+  state.pendingcb--;
+  cb();
+  finishMaybe(stream, state);
+}
+
+// Must force callback to be called on nextTick, so that we don't
+// emit 'drain' before the write() consumer gets the 'false' return
+// value, and has a chance to attach a 'drain' listener.
+function onwriteDrain(stream, state) {
+  if (state.length === 0 && state.needDrain) {
+    state.needDrain = false;
+    stream.emit('drain');
+  }
+}
+
+// if there's something in the buffer waiting, then process it
+function clearBuffer(stream, state) {
+  state.bufferProcessing = true;
+  var entry = state.bufferedRequest;
+
+  if (stream._writev && entry && entry.next) {
+    // Fast case, write everything using _writev()
+    var l = state.bufferedRequestCount;
+    var buffer = new Array(l);
+    var holder = state.corkedRequestsFree;
+    holder.entry = entry;
+
+    var count = 0;
+    var allBuffers = true;
+    while (entry) {
+      buffer[count] = entry;
+      if (!entry.isBuf) allBuffers = false;
+      entry = entry.next;
+      count += 1;
+    }
+    buffer.allBuffers = allBuffers;
+
+    doWrite(stream, state, true, state.length, buffer, '', holder.finish);
+
+    // doWrite is almost always async, defer these to save a bit of time
+    // as the hot path ends with doWrite
+    state.pendingcb++;
+    state.lastBufferedRequest = null;
+    if (holder.next) {
+      state.corkedRequestsFree = holder.next;
+      holder.next = null;
+    } else {
+      state.corkedRequestsFree = new CorkedRequest(state);
+    }
+    state.bufferedRequestCount = 0;
+  } else {
+    // Slow case, write chunks one-by-one
+    while (entry) {
+      var chunk = entry.chunk;
+      var encoding = entry.encoding;
+      var cb = entry.callback;
+      var len = state.objectMode ? 1 : chunk.length;
+
+      doWrite(stream, state, false, len, chunk, encoding, cb);
+      entry = entry.next;
+      state.bufferedRequestCount--;
+      // if we didn't call the onwrite immediately, then
+      // it means that we need to wait until it does.
+      // also, that means that the chunk and cb are currently
+      // being processed, so move the buffer counter past them.
+      if (state.writing) {
+        break;
+      }
+    }
+
+    if (entry === null) state.lastBufferedRequest = null;
+  }
+
+  state.bufferedRequest = entry;
+  state.bufferProcessing = false;
+}
+
+Writable.prototype._write = function (chunk, encoding, cb) {
+  cb(new Error('_write() is not implemented'));
+};
+
+Writable.prototype._writev = null;
+
+Writable.prototype.end = function (chunk, encoding, cb) {
+  var state = this._writableState;
+
+  if (typeof chunk === 'function') {
+    cb = chunk;
+    chunk = null;
+    encoding = null;
+  } else if (typeof encoding === 'function') {
+    cb = encoding;
+    encoding = null;
+  }
+
+  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
+
+  // .end() fully uncorks
+  if (state.corked) {
+    state.corked = 1;
+    this.uncork();
+  }
+
+  // ignore unnecessary end() calls.
+  if (!state.ending && !state.finished) endWritable(this, state, cb);
+};
+
+function needFinish(state) {
+  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
+}
+function callFinal(stream, state) {
+  stream._final(function (err) {
+    state.pendingcb--;
+    if (err) {
+      stream.emit('error', err);
+    }
+    state.prefinished = true;
+    stream.emit('prefinish');
+    finishMaybe(stream, state);
+  });
+}
+function prefinish(stream, state) {
+  if (!state.prefinished && !state.finalCalled) {
+    if (typeof stream._final === 'function') {
+      state.pendingcb++;
+      state.finalCalled = true;
+      processNextTick(callFinal, stream, state);
+    } else {
+      state.prefinished = true;
+      stream.emit('prefinish');
+    }
+  }
+}
+
+function finishMaybe(stream, state) {
+  var need = needFinish(state);
+  if (need) {
+    prefinish(stream, state);
+    if (state.pendingcb === 0) {
+      state.finished = true;
+      stream.emit('finish');
+    }
+  }
+  return need;
+}
+
+function endWritable(stream, state, cb) {
+  state.ending = true;
+  finishMaybe(stream, state);
+  if (cb) {
+    if (state.finished) processNextTick(cb);else stream.once('finish', cb);
+  }
+  state.ended = true;
+  stream.writable = false;
+}
+
+function onCorkedFinish(corkReq, state, err) {
+  var entry = corkReq.entry;
+  corkReq.entry = null;
+  while (entry) {
+    var cb = entry.callback;
+    state.pendingcb--;
+    cb(err);
+    entry = entry.next;
+  }
+  if (state.corkedRequestsFree) {
+    state.corkedRequestsFree.next = corkReq;
+  } else {
+    state.corkedRequestsFree = corkReq;
+  }
+}
+
+Object.defineProperty(Writable.prototype, 'destroyed', {
+  get: function () {
+    if (this._writableState === undefined) {
+      return false;
+    }
+    return this._writableState.destroyed;
+  },
+  set: function (value) {
+    // we ignore the value if the stream
+    // has not been initialized yet
+    if (!this._writableState) {
+      return;
+    }
+
+    // backward compatibility, the user is explicitly
+    // managing destroyed
+    this._writableState.destroyed = value;
+  }
+});
+
+Writable.prototype.destroy = destroyImpl.destroy;
+Writable.prototype._undestroy = destroyImpl.undestroy;
+Writable.prototype._destroy = function (err, cb) {
+  this.end();
+  cb(err);
+};
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11), __webpack_require__(142).setImmediate, __webpack_require__(7)))
+
+/***/ }),
+/* 47 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var Buffer = __webpack_require__(33).Buffer;
+
+var isEncoding = Buffer.isEncoding || function (encoding) {
+  encoding = '' + encoding;
+  switch (encoding && encoding.toLowerCase()) {
+    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
+      return true;
+    default:
+      return false;
+  }
+};
+
+function _normalizeEncoding(enc) {
+  if (!enc) return 'utf8';
+  var retried;
+  while (true) {
+    switch (enc) {
+      case 'utf8':
+      case 'utf-8':
+        return 'utf8';
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return 'utf16le';
+      case 'latin1':
+      case 'binary':
+        return 'latin1';
+      case 'base64':
+      case 'ascii':
+      case 'hex':
+        return enc;
+      default:
+        if (retried) return; // undefined
+        enc = ('' + enc).toLowerCase();
+        retried = true;
+    }
+  }
+};
+
+// Do not cache `Buffer.isEncoding` when checking encoding names as some
+// modules monkey-patch it to support additional encodings
+function normalizeEncoding(enc) {
+  var nenc = _normalizeEncoding(enc);
+  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
+  return nenc || enc;
+}
+
+// StringDecoder provides an interface for efficiently splitting a series of
+// buffers into a series of JS strings without breaking apart multi-byte
+// characters.
+exports.StringDecoder = StringDecoder;
+function StringDecoder(encoding) {
+  this.encoding = normalizeEncoding(encoding);
+  var nb;
+  switch (this.encoding) {
+    case 'utf16le':
+      this.text = utf16Text;
+      this.end = utf16End;
+      nb = 4;
+      break;
+    case 'utf8':
+      this.fillLast = utf8FillLast;
+      nb = 4;
+      break;
+    case 'base64':
+      this.text = base64Text;
+      this.end = base64End;
+      nb = 3;
+      break;
+    default:
+      this.write = simpleWrite;
+      this.end = simpleEnd;
+      return;
+  }
+  this.lastNeed = 0;
+  this.lastTotal = 0;
+  this.lastChar = Buffer.allocUnsafe(nb);
+}
+
+StringDecoder.prototype.write = function (buf) {
+  if (buf.length === 0) return '';
+  var r;
+  var i;
+  if (this.lastNeed) {
+    r = this.fillLast(buf);
+    if (r === undefined) return '';
+    i = this.lastNeed;
+    this.lastNeed = 0;
+  } else {
+    i = 0;
+  }
+  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
+  return r || '';
+};
+
+StringDecoder.prototype.end = utf8End;
+
+// Returns only complete characters in a Buffer
+StringDecoder.prototype.text = utf8Text;
+
+// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
+StringDecoder.prototype.fillLast = function (buf) {
+  if (this.lastNeed <= buf.length) {
+    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
+    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
+  }
+  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
+  this.lastNeed -= buf.length;
+};
+
+// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
+// continuation byte.
+function utf8CheckByte(byte) {
+  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
+  return -1;
+}
+
+// Checks at most 3 bytes at the end of a Buffer in order to detect an
+// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
+// needed to complete the UTF-8 character (if applicable) are returned.
+function utf8CheckIncomplete(self, buf, i) {
+  var j = buf.length - 1;
+  if (j < i) return 0;
+  var nb = utf8CheckByte(buf[j]);
+  if (nb >= 0) {
+    if (nb > 0) self.lastNeed = nb - 1;
+    return nb;
+  }
+  if (--j < i) return 0;
+  nb = utf8CheckByte(buf[j]);
+  if (nb >= 0) {
+    if (nb > 0) self.lastNeed = nb - 2;
+    return nb;
+  }
+  if (--j < i) return 0;
+  nb = utf8CheckByte(buf[j]);
+  if (nb >= 0) {
+    if (nb > 0) {
+      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
+    }
+    return nb;
+  }
+  return 0;
+}
+
+// Validates as many continuation bytes for a multi-byte UTF-8 character as
+// needed or are available. If we see a non-continuation byte where we expect
+// one, we "replace" the validated continuation bytes we've seen so far with
+// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
+// behavior. The continuation byte check is included three times in the case
+// where all of the continuation bytes for a character exist in the same buffer.
+// It is also done this way as a slight performance increase instead of using a
+// loop.
+function utf8CheckExtraBytes(self, buf, p) {
+  if ((buf[0] & 0xC0) !== 0x80) {
+    self.lastNeed = 0;
+    return '\ufffd'.repeat(p);
+  }
+  if (self.lastNeed > 1 && buf.length > 1) {
+    if ((buf[1] & 0xC0) !== 0x80) {
+      self.lastNeed = 1;
+      return '\ufffd'.repeat(p + 1);
+    }
+    if (self.lastNeed > 2 && buf.length > 2) {
+      if ((buf[2] & 0xC0) !== 0x80) {
+        self.lastNeed = 2;
+        return '\ufffd'.repeat(p + 2);
+      }
+    }
+  }
+}
+
+// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
+function utf8FillLast(buf) {
+  var p = this.lastTotal - this.lastNeed;
+  var r = utf8CheckExtraBytes(this, buf, p);
+  if (r !== undefined) return r;
+  if (this.lastNeed <= buf.length) {
+    buf.copy(this.lastChar, p, 0, this.lastNeed);
+    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
+  }
+  buf.copy(this.lastChar, p, 0, buf.length);
+  this.lastNeed -= buf.length;
+}
+
+// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
+// partial character, the character's bytes are buffered until the required
+// number of bytes are available.
+function utf8Text(buf, i) {
+  var total = utf8CheckIncomplete(this, buf, i);
+  if (!this.lastNeed) return buf.toString('utf8', i);
+  this.lastTotal = total;
+  var end = buf.length - (total - this.lastNeed);
+  buf.copy(this.lastChar, 0, end);
+  return buf.toString('utf8', i, end);
+}
+
+// For UTF-8, a replacement character for each buffered byte of a (partial)
+// character needs to be added to the output.
+function utf8End(buf) {
+  var r = buf && buf.length ? this.write(buf) : '';
+  if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
+  return r;
+}
+
+// UTF-16LE typically needs two bytes per character, but even if we have an even
+// number of bytes available, we need to check if we end on a leading/high
+// surrogate. In that case, we need to wait for the next two bytes in order to
+// decode the last character properly.
+function utf16Text(buf, i) {
+  if ((buf.length - i) % 2 === 0) {
+    var r = buf.toString('utf16le', i);
+    if (r) {
+      var c = r.charCodeAt(r.length - 1);
+      if (c >= 0xD800 && c <= 0xDBFF) {
+        this.lastNeed = 2;
+        this.lastTotal = 4;
+        this.lastChar[0] = buf[buf.length - 2];
+        this.lastChar[1] = buf[buf.length - 1];
+        return r.slice(0, -1);
+      }
+    }
+    return r;
+  }
+  this.lastNeed = 1;
+  this.lastTotal = 2;
+  this.lastChar[0] = buf[buf.length - 1];
+  return buf.toString('utf16le', i, buf.length - 1);
+}
+
+// For UTF-16LE we do not explicitly append special replacement characters if we
+// end on a partial character, we simply let v8 handle that.
+function utf16End(buf) {
+  var r = buf && buf.length ? this.write(buf) : '';
+  if (this.lastNeed) {
+    var end = this.lastTotal - this.lastNeed;
+    return r + this.lastChar.toString('utf16le', 0, end);
+  }
+  return r;
+}
+
+function base64Text(buf, i) {
+  var n = (buf.length - i) % 3;
+  if (n === 0) return buf.toString('base64', i);
+  this.lastNeed = 3 - n;
+  this.lastTotal = 3;
+  if (n === 1) {
+    this.lastChar[0] = buf[buf.length - 1];
+  } else {
+    this.lastChar[0] = buf[buf.length - 2];
+    this.lastChar[1] = buf[buf.length - 1];
+  }
+  return buf.toString('base64', i, buf.length - n);
+}
+
+function base64End(buf) {
+  var r = buf && buf.length ? this.write(buf) : '';
+  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
+  return r;
+}
+
+// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
+function simpleWrite(buf) {
+  return buf.toString(this.encoding);
+}
+
+function simpleEnd(buf) {
+  return buf && buf.length ? this.write(buf) : '';
+}
+
+/***/ }),
+/* 48 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(process) {
+
+var Buffer = __webpack_require__(1).Buffer;
+var Transform = __webpack_require__(15).Transform;
+var binding = __webpack_require__(150);
+var util = __webpack_require__(49);
+var assert = __webpack_require__(88).ok;
+var kMaxLength = __webpack_require__(1).kMaxLength;
+var kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';
+
+// zlib doesn't provide these, so kludge them in following the same
+// const naming scheme zlib uses.
+binding.Z_MIN_WINDOWBITS = 8;
+binding.Z_MAX_WINDOWBITS = 15;
+binding.Z_DEFAULT_WINDOWBITS = 15;
+
+// fewer than 64 bytes per chunk is stupid.
+// technically it could work with as few as 8, but even 64 bytes
+// is absurdly low.  Usually a MB or more is best.
+binding.Z_MIN_CHUNK = 64;
+binding.Z_MAX_CHUNK = Infinity;
+binding.Z_DEFAULT_CHUNK = 16 * 1024;
+
+binding.Z_MIN_MEMLEVEL = 1;
+binding.Z_MAX_MEMLEVEL = 9;
+binding.Z_DEFAULT_MEMLEVEL = 8;
+
+binding.Z_MIN_LEVEL = -1;
+binding.Z_MAX_LEVEL = 9;
+binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;
+
+// expose all the zlib constants
+var bkeys = Object.keys(binding);
+for (var bk = 0; bk < bkeys.length; bk++) {
+  var bkey = bkeys[bk];
+  if (bkey.match(/^Z/)) {
+    Object.defineProperty(exports, bkey, {
+      enumerable: true, value: binding[bkey], writable: false
+    });
+  }
+}
+
+// translation table for return codes.
+var codes = {
+  Z_OK: binding.Z_OK,
+  Z_STREAM_END: binding.Z_STREAM_END,
+  Z_NEED_DICT: binding.Z_NEED_DICT,
+  Z_ERRNO: binding.Z_ERRNO,
+  Z_STREAM_ERROR: binding.Z_STREAM_ERROR,
+  Z_DATA_ERROR: binding.Z_DATA_ERROR,
+  Z_MEM_ERROR: binding.Z_MEM_ERROR,
+  Z_BUF_ERROR: binding.Z_BUF_ERROR,
+  Z_VERSION_ERROR: binding.Z_VERSION_ERROR
+};
+
+var ckeys = Object.keys(codes);
+for (var ck = 0; ck < ckeys.length; ck++) {
+  var ckey = ckeys[ck];
+  codes[codes[ckey]] = ckey;
+}
+
+Object.defineProperty(exports, 'codes', {
+  enumerable: true, value: Object.freeze(codes), writable: false
+});
+
+exports.Deflate = Deflate;
+exports.Inflate = Inflate;
+exports.Gzip = Gzip;
+exports.Gunzip = Gunzip;
+exports.DeflateRaw = DeflateRaw;
+exports.InflateRaw = InflateRaw;
+exports.Unzip = Unzip;
+
+exports.createDeflate = function (o) {
+  return new Deflate(o);
+};
+
+exports.createInflate = function (o) {
+  return new Inflate(o);
+};
+
+exports.createDeflateRaw = function (o) {
+  return new DeflateRaw(o);
+};
+
+exports.createInflateRaw = function (o) {
+  return new InflateRaw(o);
+};
+
+exports.createGzip = function (o) {
+  return new Gzip(o);
+};
+
+exports.createGunzip = function (o) {
+  return new Gunzip(o);
+};
+
+exports.createUnzip = function (o) {
+  return new Unzip(o);
+};
+
+// Convenience methods.
+// compress/decompress a string or buffer in one step.
+exports.deflate = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new Deflate(opts), buffer, callback);
+};
+
+exports.deflateSync = function (buffer, opts) {
+  return zlibBufferSync(new Deflate(opts), buffer);
+};
+
+exports.gzip = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new Gzip(opts), buffer, callback);
+};
+
+exports.gzipSync = function (buffer, opts) {
+  return zlibBufferSync(new Gzip(opts), buffer);
+};
+
+exports.deflateRaw = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new DeflateRaw(opts), buffer, callback);
+};
+
+exports.deflateRawSync = function (buffer, opts) {
+  return zlibBufferSync(new DeflateRaw(opts), buffer);
+};
+
+exports.unzip = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new Unzip(opts), buffer, callback);
+};
+
+exports.unzipSync = function (buffer, opts) {
+  return zlibBufferSync(new Unzip(opts), buffer);
+};
+
+exports.inflate = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new Inflate(opts), buffer, callback);
+};
+
+exports.inflateSync = function (buffer, opts) {
+  return zlibBufferSync(new Inflate(opts), buffer);
+};
+
+exports.gunzip = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new Gunzip(opts), buffer, callback);
+};
+
+exports.gunzipSync = function (buffer, opts) {
+  return zlibBufferSync(new Gunzip(opts), buffer);
+};
+
+exports.inflateRaw = function (buffer, opts, callback) {
+  if (typeof opts === 'function') {
+    callback = opts;
+    opts = {};
+  }
+  return zlibBuffer(new InflateRaw(opts), buffer, callback);
+};
+
+exports.inflateRawSync = function (buffer, opts) {
+  return zlibBufferSync(new InflateRaw(opts), buffer);
+};
+
+function zlibBuffer(engine, buffer, callback) {
+  var buffers = [];
+  var nread = 0;
+
+  engine.on('error', onError);
+  engine.on('end', onEnd);
+
+  engine.end(buffer);
+  flow();
+
+  function flow() {
+    var chunk;
+    while (null !== (chunk = engine.read())) {
+      buffers.push(chunk);
+      nread += chunk.length;
+    }
+    engine.once('readable', flow);
+  }
+
+  function onError(err) {
+    engine.removeListener('end', onEnd);
+    engine.removeListener('readable', flow);
+    callback(err);
+  }
+
+  function onEnd() {
+    var buf;
+    var err = null;
+
+    if (nread >= kMaxLength) {
+      err = new RangeError(kRangeErrorMessage);
+    } else {
+      buf = Buffer.concat(buffers, nread);
+    }
+
+    buffers = [];
+    engine.close();
+    callback(err, buf);
+  }
+}
+
+function zlibBufferSync(engine, buffer) {
+  if (typeof buffer === 'string') buffer = Buffer.from(buffer);
+
+  if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');
+
+  var flushFlag = engine._finishFlushFlag;
+
+  return engine._processChunk(buffer, flushFlag);
+}
+
+// generic zlib
+// minimal 2-byte header
+function Deflate(opts) {
+  if (!(this instanceof Deflate)) return new Deflate(opts);
+  Zlib.call(this, opts, binding.DEFLATE);
+}
+
+function Inflate(opts) {
+  if (!(this instanceof Inflate)) return new Inflate(opts);
+  Zlib.call(this, opts, binding.INFLATE);
+}
+
+// gzip - bigger header, same deflate compression
+function Gzip(opts) {
+  if (!(this instanceof Gzip)) return new Gzip(opts);
+  Zlib.call(this, opts, binding.GZIP);
+}
+
+function Gunzip(opts) {
+  if (!(this instanceof Gunzip)) return new Gunzip(opts);
+  Zlib.call(this, opts, binding.GUNZIP);
+}
+
+// raw - no header
+function DeflateRaw(opts) {
+  if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);
+  Zlib.call(this, opts, binding.DEFLATERAW);
+}
+
+function InflateRaw(opts) {
+  if (!(this instanceof InflateRaw)) return new InflateRaw(opts);
+  Zlib.call(this, opts, binding.INFLATERAW);
+}
+
+// auto-detect header.
+function Unzip(opts) {
+  if (!(this instanceof Unzip)) return new Unzip(opts);
+  Zlib.call(this, opts, binding.UNZIP);
+}
+
+function isValidFlushFlag(flag) {
+  return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK;
+}
+
+// the Zlib class they all inherit from
+// This thing manages the queue of requests, and returns
+// true or false if there is anything in the queue when
+// you call the .write() method.
+
+function Zlib(opts, mode) {
+  var _this = this;
+
+  this._opts = opts = opts || {};
+  this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;
+
+  Transform.call(this, opts);
+
+  if (opts.flush && !isValidFlushFlag(opts.flush)) {
+    throw new Error('Invalid flush flag: ' + opts.flush);
+  }
+  if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {
+    throw new Error('Invalid flush flag: ' + opts.finishFlush);
+  }
+
+  this._flushFlag = opts.flush || binding.Z_NO_FLUSH;
+  this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH;
+
+  if (opts.chunkSize) {
+    if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {
+      throw new Error('Invalid chunk size: ' + opts.chunkSize);
+    }
+  }
+
+  if (opts.windowBits) {
+    if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {
+      throw new Error('Invalid windowBits: ' + opts.windowBits);
+    }
+  }
+
+  if (opts.level) {
+    if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {
+      throw new Error('Invalid compression level: ' + opts.level);
+    }
+  }
+
+  if (opts.memLevel) {
+    if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {
+      throw new Error('Invalid memLevel: ' + opts.memLevel);
+    }
+  }
+
+  if (opts.strategy) {
+    if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {
+      throw new Error('Invalid strategy: ' + opts.strategy);
+    }
+  }
+
+  if (opts.dictionary) {
+    if (!Buffer.isBuffer(opts.dictionary)) {
+      throw new Error('Invalid dictionary: it should be a Buffer instance');
+    }
+  }
+
+  this._handle = new binding.Zlib(mode);
+
+  var self = this;
+  this._hadError = false;
+  this._handle.onerror = function (message, errno) {
+    // there is no way to cleanly recover.
+    // continuing only obscures problems.
+    _close(self);
+    self._hadError = true;
+
+    var error = new Error(message);
+    error.errno = errno;
+    error.code = exports.codes[errno];
+    self.emit('error', error);
+  };
+
+  var level = exports.Z_DEFAULT_COMPRESSION;
+  if (typeof opts.level === 'number') level = opts.level;
+
+  var strategy = exports.Z_DEFAULT_STRATEGY;
+  if (typeof opts.strategy === 'number') strategy = opts.strategy;
+
+  this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);
+
+  this._buffer = Buffer.allocUnsafe(this._chunkSize);
+  this._offset = 0;
+  this._level = level;
+  this._strategy = strategy;
+
+  this.once('end', this.close);
+
+  Object.defineProperty(this, '_closed', {
+    get: function () {
+      return !_this._handle;
+    },
+    configurable: true,
+    enumerable: true
+  });
+}
+
+util.inherits(Zlib, Transform);
+
+Zlib.prototype.params = function (level, strategy, callback) {
+  if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {
+    throw new RangeError('Invalid compression level: ' + level);
+  }
+  if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {
+    throw new TypeError('Invalid strategy: ' + strategy);
+  }
+
+  if (this._level !== level || this._strategy !== strategy) {
+    var self = this;
+    this.flush(binding.Z_SYNC_FLUSH, function () {
+      assert(self._handle, 'zlib binding closed');
+      self._handle.params(level, strategy);
+      if (!self._hadError) {
+        self._level = level;
+        self._strategy = strategy;
+        if (callback) callback();
+      }
+    });
+  } else {
+    process.nextTick(callback);
+  }
+};
+
+Zlib.prototype.reset = function () {
+  assert(this._handle, 'zlib binding closed');
+  return this._handle.reset();
+};
+
+// This is the _flush function called by the transform class,
+// internally, when the last chunk has been written.
+Zlib.prototype._flush = function (callback) {
+  this._transform(Buffer.alloc(0), '', callback);
+};
+
+Zlib.prototype.flush = function (kind, callback) {
+  var _this2 = this;
+
+  var ws = this._writableState;
+
+  if (typeof kind === 'function' || kind === undefined && !callback) {
+    callback = kind;
+    kind = binding.Z_FULL_FLUSH;
+  }
+
+  if (ws.ended) {
+    if (callback) process.nextTick(callback);
+  } else if (ws.ending) {
+    if (callback) this.once('end', callback);
+  } else if (ws.needDrain) {
+    if (callback) {
+      this.once('drain', function () {
+        return _this2.flush(kind, callback);
+      });
+    }
+  } else {
+    this._flushFlag = kind;
+    this.write(Buffer.alloc(0), '', callback);
+  }
+};
+
+Zlib.prototype.close = function (callback) {
+  _close(this, callback);
+  process.nextTick(emitCloseNT, this);
+};
+
+function _close(engine, callback) {
+  if (callback) process.nextTick(callback);
+
+  // Caller may invoke .close after a zlib error (which will null _handle).
+  if (!engine._handle) return;
+
+  engine._handle.close();
+  engine._handle = null;
+}
+
+function emitCloseNT(self) {
+  self.emit('close');
+}
+
+Zlib.prototype._transform = function (chunk, encoding, cb) {
+  var flushFlag;
+  var ws = this._writableState;
+  var ending = ws.ending || ws.ended;
+  var last = ending && (!chunk || ws.length === chunk.length);
+
+  if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));
+
+  if (!this._handle) return cb(new Error('zlib binding closed'));
+
+  // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag
+  // (or whatever flag was provided using opts.finishFlush).
+  // If it's explicitly flushing at some other time, then we use
+  // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression
+  // goodness.
+  if (last) flushFlag = this._finishFlushFlag;else {
+    flushFlag = this._flushFlag;
+    // once we've flushed the last of the queue, stop flushing and
+    // go back to the normal behavior.
+    if (chunk.length >= ws.length) {
+      this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;
+    }
+  }
+
+  this._processChunk(chunk, flushFlag, cb);
+};
+
+Zlib.prototype._processChunk = function (chunk, flushFlag, cb) {
+  var availInBefore = chunk && chunk.length;
+  var availOutBefore = this._chunkSize - this._offset;
+  var inOff = 0;
+
+  var self = this;
+
+  var async = typeof cb === 'function';
+
+  if (!async) {
+    var buffers = [];
+    var nread = 0;
+
+    var error;
+    this.on('error', function (er) {
+      error = er;
+    });
+
+    assert(this._handle, 'zlib binding closed');
+    do {
+      var res = this._handle.writeSync(flushFlag, chunk, // in
+      inOff, // in_off
+      availInBefore, // in_len
+      this._buffer, // out
+      this._offset, //out_off
+      availOutBefore); // out_len
+    } while (!this._hadError && callback(res[0], res[1]));
+
+    if (this._hadError) {
+      throw error;
+    }
+
+    if (nread >= kMaxLength) {
+      _close(this);
+      throw new RangeError(kRangeErrorMessage);
+    }
+
+    var buf = Buffer.concat(buffers, nread);
+    _close(this);
+
+    return buf;
+  }
+
+  assert(this._handle, 'zlib binding closed');
+  var req = this._handle.write(flushFlag, chunk, // in
+  inOff, // in_off
+  availInBefore, // in_len
+  this._buffer, // out
+  this._offset, //out_off
+  availOutBefore); // out_len
+
+  req.buffer = chunk;
+  req.callback = callback;
+
+  function callback(availInAfter, availOutAfter) {
+    // When the callback is used in an async write, the callback's
+    // context is the `req` object that was created. The req object
+    // is === this._handle, and that's why it's important to null
+    // out the values after they are done being used. `this._handle`
+    // can stay in memory longer than the callback and buffer are needed.
+    if (this) {
+      this.buffer = null;
+      this.callback = null;
+    }
+
+    if (self._hadError) return;
+
+    var have = availOutBefore - availOutAfter;
+    assert(have >= 0, 'have should not go down');
+
+    if (have > 0) {
+      var out = self._buffer.slice(self._offset, self._offset + have);
+      self._offset += have;
+      // serve some output to the consumer.
+      if (async) {
+        self.push(out);
+      } else {
+        buffers.push(out);
+        nread += out.length;
+      }
+    }
+
+    // exhausted the output buffer, or used all the input create a new one.
+    if (availOutAfter === 0 || self._offset >= self._chunkSize) {
+      availOutBefore = self._chunkSize;
+      self._offset = 0;
+      self._buffer = Buffer.allocUnsafe(self._chunkSize);
+    }
+
+    if (availOutAfter === 0) {
+      // Not actually done.  Need to reprocess.
+      // Also, update the availInBefore to the availInAfter value,
+      // so that if we have to hit it a third (fourth, etc.) time,
+      // it'll have the correct byte counts.
+      inOff += availInBefore - availInAfter;
+      availInBefore = availInAfter;
+
+      if (!async) return true;
+
+      var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);
+      newReq.callback = callback; // this same function
+      newReq.buffer = chunk;
+      return;
+    }
+
+    if (!async) return false;
+
+    // finished with the chunk.
+    cb();
+  }
+};
+
+util.inherits(Deflate, Zlib);
+util.inherits(Inflate, Zlib);
+util.inherits(Gzip, Zlib);
+util.inherits(Gunzip, Zlib);
+util.inherits(DeflateRaw, Zlib);
+util.inherits(InflateRaw, Zlib);
+util.inherits(Unzip, Zlib);
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11)))
+
+/***/ }),
+/* 49 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+var formatRegExp = /%[sdj%]/g;
+exports.format = function(f) {
+  if (!isString(f)) {
+    var objects = [];
+    for (var i = 0; i < arguments.length; i++) {
+      objects.push(inspect(arguments[i]));
+    }
+    return objects.join(' ');
+  }
+
+  var i = 1;
+  var args = arguments;
+  var len = args.length;
+  var str = String(f).replace(formatRegExp, function(x) {
+    if (x === '%%') return '%';
+    if (i >= len) return x;
+    switch (x) {
+      case '%s': return String(args[i++]);
+      case '%d': return Number(args[i++]);
+      case '%j':
+        try {
+          return JSON.stringify(args[i++]);
+        } catch (_) {
+          return '[Circular]';
+        }
+      default:
+        return x;
+    }
+  });
+  for (var x = args[i]; i < len; x = args[++i]) {
+    if (isNull(x) || !isObject(x)) {
+      str += ' ' + x;
+    } else {
+      str += ' ' + inspect(x);
+    }
+  }
+  return str;
+};
+
+
+// Mark that a method should not be used.
+// Returns a modified function which warns once by default.
+// If --no-deprecation is set, then it is a no-op.
+exports.deprecate = function(fn, msg) {
+  // Allow for deprecating things in the process of starting up.
+  if (isUndefined(global.process)) {
+    return function() {
+      return exports.deprecate(fn, msg).apply(this, arguments);
+    };
+  }
+
+  if (process.noDeprecation === true) {
+    return fn;
+  }
+
+  var warned = false;
+  function deprecated() {
+    if (!warned) {
+      if (process.throwDeprecation) {
+        throw new Error(msg);
+      } else if (process.traceDeprecation) {
+        console.trace(msg);
+      } else {
+        console.error(msg);
+      }
+      warned = true;
+    }
+    return fn.apply(this, arguments);
+  }
+
+  return deprecated;
+};
+
+
+var debugs = {};
+var debugEnviron;
+exports.debuglog = function(set) {
+  if (isUndefined(debugEnviron))
+    debugEnviron = process.env.NODE_DEBUG || '';
+  set = set.toUpperCase();
+  if (!debugs[set]) {
+    if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
+      var pid = process.pid;
+      debugs[set] = function() {
+        var msg = exports.format.apply(exports, arguments);
+        console.error('%s %d: %s', set, pid, msg);
+      };
+    } else {
+      debugs[set] = function() {};
+    }
+  }
+  return debugs[set];
+};
+
+
+/**
+ * Echos the value of a value. Trys to print the value out
+ * in the best way possible given the different types.
+ *
+ * @param {Object} obj The object to print out.
+ * @param {Object} opts Optional options object that alters the output.
+ */
+/* legacy: obj, showHidden, depth, colors*/
+function inspect(obj, opts) {
+  // default options
+  var ctx = {
+    seen: [],
+    stylize: stylizeNoColor
+  };
+  // legacy...
+  if (arguments.length >= 3) ctx.depth = arguments[2];
+  if (arguments.length >= 4) ctx.colors = arguments[3];
+  if (isBoolean(opts)) {
+    // legacy...
+    ctx.showHidden = opts;
+  } else if (opts) {
+    // got an "options" object
+    exports._extend(ctx, opts);
+  }
+  // set default options
+  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
+  if (isUndefined(ctx.depth)) ctx.depth = 2;
+  if (isUndefined(ctx.colors)) ctx.colors = false;
+  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
+  if (ctx.colors) ctx.stylize = stylizeWithColor;
+  return formatValue(ctx, obj, ctx.depth);
+}
+exports.inspect = inspect;
+
+
+// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
+inspect.colors = {
+  'bold' : [1, 22],
+  'italic' : [3, 23],
+  'underline' : [4, 24],
+  'inverse' : [7, 27],
+  'white' : [37, 39],
+  'grey' : [90, 39],
+  'black' : [30, 39],
+  'blue' : [34, 39],
+  'cyan' : [36, 39],
+  'green' : [32, 39],
+  'magenta' : [35, 39],
+  'red' : [31, 39],
+  'yellow' : [33, 39]
+};
+
+// Don't use 'blue' not visible on cmd.exe
+inspect.styles = {
+  'special': 'cyan',
+  'number': 'yellow',
+  'boolean': 'yellow',
+  'undefined': 'grey',
+  'null': 'bold',
+  'string': 'green',
+  'date': 'magenta',
+  // "name": intentionally not styling
+  'regexp': 'red'
+};
+
+
+function stylizeWithColor(str, styleType) {
+  var style = inspect.styles[styleType];
+
+  if (style) {
+    return '\u001b[' + inspect.colors[style][0] + 'm' + str +
+           '\u001b[' + inspect.colors[style][1] + 'm';
+  } else {
+    return str;
+  }
+}
+
+
+function stylizeNoColor(str, styleType) {
+  return str;
+}
+
+
+function arrayToHash(array) {
+  var hash = {};
+
+  array.forEach(function(val, idx) {
+    hash[val] = true;
+  });
+
+  return hash;
+}
+
+
+function formatValue(ctx, value, recurseTimes) {
+  // Provide a hook for user-specified inspect functions.
+  // Check that value is an object with an inspect function on it
+  if (ctx.customInspect &&
+      value &&
+      isFunction(value.inspect) &&
+      // Filter out the util module, it's inspect function is special
+      value.inspect !== exports.inspect &&
+      // Also filter out any prototype objects using the circular check.
+      !(value.constructor && value.constructor.prototype === value)) {
+    var ret = value.inspect(recurseTimes, ctx);
+    if (!isString(ret)) {
+      ret = formatValue(ctx, ret, recurseTimes);
+    }
+    return ret;
+  }
+
+  // Primitive types cannot have properties
+  var primitive = formatPrimitive(ctx, value);
+  if (primitive) {
+    return primitive;
+  }
+
+  // Look up the keys of the object.
+  var keys = Object.keys(value);
+  var visibleKeys = arrayToHash(keys);
+
+  if (ctx.showHidden) {
+    keys = Object.getOwnPropertyNames(value);
+  }
+
+  // IE doesn't make error fields non-enumerable
+  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
+  if (isError(value)
+      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
+    return formatError(value);
+  }
+
+  // Some type of object without properties can be shortcutted.
+  if (keys.length === 0) {
+    if (isFunction(value)) {
+      var name = value.name ? ': ' + value.name : '';
+      return ctx.stylize('[Function' + name + ']', 'special');
+    }
+    if (isRegExp(value)) {
+      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+    }
+    if (isDate(value)) {
+      return ctx.stylize(Date.prototype.toString.call(value), 'date');
+    }
+    if (isError(value)) {
+      return formatError(value);
+    }
+  }
+
+  var base = '', array = false, braces = ['{', '}'];
+
+  // Make Array say that they are Array
+  if (isArray(value)) {
+    array = true;
+    braces = ['[', ']'];
+  }
+
+  // Make functions say that they are functions
+  if (isFunction(value)) {
+    var n = value.name ? ': ' + value.name : '';
+    base = ' [Function' + n + ']';
+  }
+
+  // Make RegExps say that they are RegExps
+  if (isRegExp(value)) {
+    base = ' ' + RegExp.prototype.toString.call(value);
+  }
+
+  // Make dates with properties first say the date
+  if (isDate(value)) {
+    base = ' ' + Date.prototype.toUTCString.call(value);
+  }
+
+  // Make error with message first say the error
+  if (isError(value)) {
+    base = ' ' + formatError(value);
+  }
+
+  if (keys.length === 0 && (!array || value.length == 0)) {
+    return braces[0] + base + braces[1];
+  }
+
+  if (recurseTimes < 0) {
+    if (isRegExp(value)) {
+      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+    } else {
+      return ctx.stylize('[Object]', 'special');
+    }
+  }
+
+  ctx.seen.push(value);
+
+  var output;
+  if (array) {
+    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
+  } else {
+    output = keys.map(function(key) {
+      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
+    });
+  }
+
+  ctx.seen.pop();
+
+  return reduceToSingleString(output, base, braces);
+}
+
+
+function formatPrimitive(ctx, value) {
+  if (isUndefined(value))
+    return ctx.stylize('undefined', 'undefined');
+  if (isString(value)) {
+    var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
+                                             .replace(/'/g, "\\'")
+                                             .replace(/\\"/g, '"') + '\'';
+    return ctx.stylize(simple, 'string');
+  }
+  if (isNumber(value))
+    return ctx.stylize('' + value, 'number');
+  if (isBoolean(value))
+    return ctx.stylize('' + value, 'boolean');
+  // For some reason typeof null is "object", so special case here.
+  if (isNull(value))
+    return ctx.stylize('null', 'null');
+}
+
+
+function formatError(value) {
+  return '[' + Error.prototype.toString.call(value) + ']';
+}
+
+
+function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
+  var output = [];
+  for (var i = 0, l = value.length; i < l; ++i) {
+    if (hasOwnProperty(value, String(i))) {
+      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+          String(i), true));
+    } else {
+      output.push('');
+    }
+  }
+  keys.forEach(function(key) {
+    if (!key.match(/^\d+$/)) {
+      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+          key, true));
+    }
+  });
+  return output;
+}
+
+
+function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
+  var name, str, desc;
+  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
+  if (desc.get) {
+    if (desc.set) {
+      str = ctx.stylize('[Getter/Setter]', 'special');
+    } else {
+      str = ctx.stylize('[Getter]', 'special');
+    }
+  } else {
+    if (desc.set) {
+      str = ctx.stylize('[Setter]', 'special');
+    }
+  }
+  if (!hasOwnProperty(visibleKeys, key)) {
+    name = '[' + key + ']';
+  }
+  if (!str) {
+    if (ctx.seen.indexOf(desc.value) < 0) {
+      if (isNull(recurseTimes)) {
+        str = formatValue(ctx, desc.value, null);
+      } else {
+        str = formatValue(ctx, desc.value, recurseTimes - 1);
+      }
+      if (str.indexOf('\n') > -1) {
+        if (array) {
+          str = str.split('\n').map(function(line) {
+            return '  ' + line;
+          }).join('\n').substr(2);
+        } else {
+          str = '\n' + str.split('\n').map(function(line) {
+            return '   ' + line;
+          }).join('\n');
+        }
+      }
+    } else {
+      str = ctx.stylize('[Circular]', 'special');
+    }
+  }
+  if (isUndefined(name)) {
+    if (array && key.match(/^\d+$/)) {
+      return str;
+    }
+    name = JSON.stringify('' + key);
+    if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
+      name = name.substr(1, name.length - 2);
+      name = ctx.stylize(name, 'name');
+    } else {
+      name = name.replace(/'/g, "\\'")
+                 .replace(/\\"/g, '"')
+                 .replace(/(^"|"$)/g, "'");
+      name = ctx.stylize(name, 'string');
+    }
+  }
+
+  return name + ': ' + str;
+}
+
+
+function reduceToSingleString(output, base, braces) {
+  var numLinesEst = 0;
+  var length = output.reduce(function(prev, cur) {
+    numLinesEst++;
+    if (cur.indexOf('\n') >= 0) numLinesEst++;
+    return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
+  }, 0);
+
+  if (length > 60) {
+    return braces[0] +
+           (base === '' ? '' : base + '\n ') +
+           ' ' +
+           output.join(',\n  ') +
+           ' ' +
+           braces[1];
+  }
+
+  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
+}
+
+
+// NOTE: These type checking functions intentionally don't use `instanceof`
+// because it is fragile and can be easily faked with `Object.create()`.
+function isArray(ar) {
+  return Array.isArray(ar);
+}
+exports.isArray = isArray;
+
+function isBoolean(arg) {
+  return typeof arg === 'boolean';
+}
+exports.isBoolean = isBoolean;
+
+function isNull(arg) {
+  return arg === null;
+}
+exports.isNull = isNull;
+
+function isNullOrUndefined(arg) {
+  return arg == null;
+}
+exports.isNullOrUndefined = isNullOrUndefined;
+
+function isNumber(arg) {
+  return typeof arg === 'number';
+}
+exports.isNumber = isNumber;
+
+function isString(arg) {
+  return typeof arg === 'string';
+}
+exports.isString = isString;
+
+function isSymbol(arg) {
+  return typeof arg === 'symbol';
+}
+exports.isSymbol = isSymbol;
+
+function isUndefined(arg) {
+  return arg === void 0;
+}
+exports.isUndefined = isUndefined;
+
+function isRegExp(re) {
+  return isObject(re) && objectToString(re) === '[object RegExp]';
+}
+exports.isRegExp = isRegExp;
+
+function isObject(arg) {
+  return typeof arg === 'object' && arg !== null;
+}
+exports.isObject = isObject;
+
+function isDate(d) {
+  return isObject(d) && objectToString(d) === '[object Date]';
+}
+exports.isDate = isDate;
+
+function isError(e) {
+  return isObject(e) &&
+      (objectToString(e) === '[object Error]' || e instanceof Error);
+}
+exports.isError = isError;
+
+function isFunction(arg) {
+  return typeof arg === 'function';
+}
+exports.isFunction = isFunction;
+
+function isPrimitive(arg) {
+  return arg === null ||
+         typeof arg === 'boolean' ||
+         typeof arg === 'number' ||
+         typeof arg === 'string' ||
+         typeof arg === 'symbol' ||  // ES6 symbol
+         typeof arg === 'undefined';
+}
+exports.isPrimitive = isPrimitive;
+
+exports.isBuffer = __webpack_require__(151);
+
+function objectToString(o) {
+  return Object.prototype.toString.call(o);
+}
+
+
+function pad(n) {
+  return n < 10 ? '0' + n.toString(10) : n.toString(10);
+}
+
+
+var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
+              'Oct', 'Nov', 'Dec'];
+
+// 26 Feb 16:19:34
+function timestamp() {
+  var d = new Date();
+  var time = [pad(d.getHours()),
+              pad(d.getMinutes()),
+              pad(d.getSeconds())].join(':');
+  return [d.getDate(), months[d.getMonth()], time].join(' ');
+}
+
+
+// log is just a thin wrapper to console.log that prepends a timestamp
+exports.log = function() {
+  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
+};
+
+
+/**
+ * Inherit the prototype methods from one constructor into another.
+ *
+ * The Function.prototype.inherits from lang.js rewritten as a standalone
+ * function (not on Function.prototype). NOTE: If this file is to be loaded
+ * during bootstrapping this function needs to be rewritten using some native
+ * functions as prototype setup using normal JavaScript does not work as
+ * expected during bootstrapping (see mirror.js in r114903).
+ *
+ * @param {function} ctor Constructor function which needs to inherit the
+ *     prototype.
+ * @param {function} superCtor Constructor function to inherit prototype from.
+ */
+exports.inherits = __webpack_require__(152);
+
+exports._extend = function(origin, add) {
+  // Don't do anything if add isn't an object
+  if (!add || !isObject(add)) return origin;
+
+  var keys = Object.keys(add);
+  var i = keys.length;
+  while (i--) {
+    origin[keys[i]] = add[keys[i]];
+  }
+  return origin;
+};
+
+function hasOwnProperty(obj, prop) {
+  return Object.prototype.hasOwnProperty.call(obj, prop);
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7), __webpack_require__(11)))
+
+/***/ }),
+/* 50 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+(function() {
+  var EmbeddedFont, PDFFont, StandardFont, fontkit;
+
+  fontkit = __webpack_require__(167);
+
+  PDFFont = (function() {
+    PDFFont.open = function(document, src, family, id) {
+      var font;
+      if (typeof src === 'string') {
+        if (StandardFont.isStandardFont(src)) {
+          return new StandardFont(document, src, id);
+        }
+        font = fontkit.openSync(src, family);
+      } else if (Buffer.isBuffer(src)) {
+        font = fontkit.create(src, family);
+      } else if (src instanceof Uint8Array) {
+        font = fontkit.create(new Buffer(src), family);
+      } else if (src instanceof ArrayBuffer) {
+        font = fontkit.create(new Buffer(new Uint8Array(src)), family);
+      }
+      if (font == null) {
+        throw new Error('Not a supported font format or standard PDF font.');
+      }
+      return new EmbeddedFont(document, font, id);
+    };
+
+    function PDFFont() {
+      throw new Error('Cannot construct a PDFFont directly.');
+    }
+
+    PDFFont.prototype.encode = function(text) {
+      throw new Error('Must be implemented by subclasses');
+    };
+
+    PDFFont.prototype.widthOfString = function(text) {
+      throw new Error('Must be implemented by subclasses');
+    };
+
+    PDFFont.prototype.ref = function() {
+      return this.dictionary != null ? this.dictionary : this.dictionary = this.document.ref();
+    };
+
+    PDFFont.prototype.finalize = function() {
+      if (this.embedded || (this.dictionary == null)) {
+        return;
+      }
+      this.embed();
+      return this.embedded = true;
+    };
+
+    PDFFont.prototype.embed = function() {
+      throw new Error('Must be implemented by subclasses');
+    };
+
+    PDFFont.prototype.lineHeight = function(size, includeGap) {
+      var gap;
+      if (includeGap == null) {
+        includeGap = false;
+      }
+      gap = includeGap ? this.lineGap : 0;
+      return (this.ascender + gap - this.descender) / 1000 * size;
+    };
+
+    return PDFFont;
+
+  })();
+
+  module.exports = PDFFont;
+
+  StandardFont = __webpack_require__(292);
+
+  EmbeddedFont = __webpack_require__(294);
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 51 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.7.1
+(function() {
+  var DecodeStream, iconv;
+
+  try {
+    iconv = __webpack_require__(52);
+  } catch (_error) {}
+
+  DecodeStream = (function() {
+    var key;
+
+    function DecodeStream(buffer) {
+      this.buffer = buffer;
+      this.pos = 0;
+      this.length = this.buffer.length;
+    }
+
+    DecodeStream.TYPES = {
+      UInt8: 1,
+      UInt16: 2,
+      UInt24: 3,
+      UInt32: 4,
+      Int8: 1,
+      Int16: 2,
+      Int24: 3,
+      Int32: 4,
+      Float: 4,
+      Double: 8
+    };
+
+    for (key in Buffer.prototype) {
+      if (key.slice(0, 4) === 'read') {
+        (function(key) {
+          var bytes;
+          bytes = DecodeStream.TYPES[key.replace(/read|[BL]E/g, '')];
+          return DecodeStream.prototype[key] = function() {
+            var ret;
+            ret = this.buffer[key](this.pos);
+            this.pos += bytes;
+            return ret;
+          };
+        })(key);
+      }
+    }
+
+    DecodeStream.prototype.readString = function(length, encoding) {
+      var buf, byte, i, _i, _ref;
+      if (encoding == null) {
+        encoding = 'ascii';
+      }
+      switch (encoding) {
+        case 'utf16le':
+        case 'ucs2':
+        case 'utf8':
+        case 'ascii':
+          return this.buffer.toString(encoding, this.pos, this.pos += length);
+        case 'utf16be':
+          buf = new Buffer(this.readBuffer(length));
+          for (i = _i = 0, _ref = buf.length - 1; _i < _ref; i = _i += 2) {
+            byte = buf[i];
+            buf[i] = buf[i + 1];
+            buf[i + 1] = byte;
+          }
+          return buf.toString('utf16le');
+        default:
+          buf = this.readBuffer(length);
+          if (iconv) {
+            try {
+              return iconv.decode(buf, encoding);
+            } catch (_error) {}
+          }
+          return buf;
+      }
+    };
+
+    DecodeStream.prototype.readBuffer = function(length) {
+      return this.buffer.slice(this.pos, this.pos += length);
+    };
+
+    DecodeStream.prototype.readUInt24BE = function() {
+      return (this.readUInt16BE() << 8) + this.readUInt8();
+    };
+
+    DecodeStream.prototype.readUInt24LE = function() {
+      return this.readUInt16LE() + (this.readUInt8() << 16);
+    };
+
+    DecodeStream.prototype.readInt24BE = function() {
+      return (this.readInt16BE() << 8) + this.readUInt8();
+    };
+
+    DecodeStream.prototype.readInt24LE = function() {
+      return this.readUInt16LE() + (this.readInt8() << 16);
+    };
+
+    return DecodeStream;
+
+  })();
+
+  module.exports = DecodeStream;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 52 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(process) {
+
+// Some environments don't have global Buffer (e.g. React Native).
+// Solution would be installing npm modules "buffer" and "stream" explicitly.
+var Buffer = __webpack_require__(1).Buffer;
+
+var bomHandling = __webpack_require__(170),
+    iconv = module.exports;
+
+// All codecs and aliases are kept here, keyed by encoding name/alias.
+// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.
+iconv.encodings = null;
+
+// Characters emitted in case of error.
+iconv.defaultCharUnicode = '�';
+iconv.defaultCharSingleByte = '?';
+
+// Public API.
+iconv.encode = function encode(str, encoding, options) {
+    str = "" + (str || ""); // Ensure string.
+
+    var encoder = iconv.getEncoder(encoding, options);
+
+    var res = encoder.write(str);
+    var trail = encoder.end();
+    
+    return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;
+}
+
+iconv.decode = function decode(buf, encoding, options) {
+    if (typeof buf === 'string') {
+        if (!iconv.skipDecodeWarning) {
+            console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');
+            iconv.skipDecodeWarning = true;
+        }
+
+        buf = new Buffer("" + (buf || ""), "binary"); // Ensure buffer.
+    }
+
+    var decoder = iconv.getDecoder(encoding, options);
+
+    var res = decoder.write(buf);
+    var trail = decoder.end();
+
+    return trail ? (res + trail) : res;
+}
+
+iconv.encodingExists = function encodingExists(enc) {
+    try {
+        iconv.getCodec(enc);
+        return true;
+    } catch (e) {
+        return false;
+    }
+}
+
+// Legacy aliases to convert functions
+iconv.toEncoding = iconv.encode;
+iconv.fromEncoding = iconv.decode;
+
+// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.
+iconv._codecDataCache = {};
+iconv.getCodec = function getCodec(encoding) {
+    if (!iconv.encodings)
+        iconv.encodings = __webpack_require__(171); // Lazy load all encoding definitions.
+    
+    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
+    var enc = (''+encoding).toLowerCase().replace(/[^0-9a-z]|:\d{4}$/g, "");
+
+    // Traverse iconv.encodings to find actual codec.
+    var codecOptions = {};
+    while (true) {
+        var codec = iconv._codecDataCache[enc];
+        if (codec)
+            return codec;
+
+        var codecDef = iconv.encodings[enc];
+
+        switch (typeof codecDef) {
+            case "string": // Direct alias to other encoding.
+                enc = codecDef;
+                break;
+
+            case "object": // Alias with options. Can be layered.
+                for (var key in codecDef)
+                    codecOptions[key] = codecDef[key];
+
+                if (!codecOptions.encodingName)
+                    codecOptions.encodingName = enc;
+                
+                enc = codecDef.type;
+                break;
+
+            case "function": // Codec itself.
+                if (!codecOptions.encodingName)
+                    codecOptions.encodingName = enc;
+
+                // The codec function must load all tables and return object with .encoder and .decoder methods.
+                // It'll be called only once (for each different options object).
+                codec = new codecDef(codecOptions, iconv);
+
+                iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.
+                return codec;
+
+            default:
+                throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')");
+        }
+    }
+}
+
+iconv.getEncoder = function getEncoder(encoding, options) {
+    var codec = iconv.getCodec(encoding),
+        encoder = new codec.encoder(options, codec);
+
+    if (codec.bomAware && options && options.addBOM)
+        encoder = new bomHandling.PrependBOM(encoder, options);
+
+    return encoder;
+}
+
+iconv.getDecoder = function getDecoder(encoding, options) {
+    var codec = iconv.getCodec(encoding),
+        decoder = new codec.decoder(options, codec);
+
+    if (codec.bomAware && !(options && options.stripBOM === false))
+        decoder = new bomHandling.StripBOM(decoder, options);
+
+    return decoder;
+}
+
+
+// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json.
+var nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node;
+if (nodeVer) {
+
+    // Load streaming support in Node v0.10+
+    var nodeVerArr = nodeVer.split(".").map(Number);
+    if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {
+        __webpack_require__(185)(iconv);
+    }
+
+    // Load Node primitive extensions.
+    __webpack_require__(186)(iconv);
+}
+
+if (false) {
+    console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.");
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11)))
+
+/***/ }),
+/* 53 */
+/***/ (function(module, exports) {
+
+module.exports = [["0","\u0000",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1","　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","！＂＃￥％",88,"￣"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰￢￤"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]
+
+/***/ }),
+/* 54 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// fallback for non-array-like ES3 and non-enumerable old V8 strings
+var cof = __webpack_require__(55);
+// eslint-disable-next-line no-prototype-builtins
+module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
+  return cof(it) == 'String' ? it.split('') : Object(it);
+};
+
+
+/***/ }),
+/* 55 */
+/***/ (function(module, exports) {
+
+var toString = {}.toString;
+
+module.exports = function (it) {
+  return toString.call(it).slice(8, -1);
+};
+
+
+/***/ }),
+/* 56 */
+/***/ (function(module, exports) {
+
+// 7.2.1 RequireObjectCoercible(argument)
+module.exports = function (it) {
+  if (it == undefined) throw TypeError("Can't call method on  " + it);
+  return it;
+};
+
+
+/***/ }),
+/* 57 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var pIE = __webpack_require__(35);
+var createDesc = __webpack_require__(27);
+var toIObject = __webpack_require__(17);
+var toPrimitive = __webpack_require__(58);
+var has = __webpack_require__(18);
+var IE8_DOM_DEFINE = __webpack_require__(95);
+var gOPD = Object.getOwnPropertyDescriptor;
+
+exports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P) {
+  O = toIObject(O);
+  P = toPrimitive(P, true);
+  if (IE8_DOM_DEFINE) try {
+    return gOPD(O, P);
+  } catch (e) { /* empty */ }
+  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
+};
+
+
+/***/ }),
+/* 58 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.1.1 ToPrimitive(input [, PreferredType])
+var isObject = __webpack_require__(9);
+// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+// and the second argument - flag - preferred type is a string
+module.exports = function (it, S) {
+  if (!isObject(it)) return it;
+  var fn, val;
+  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
+  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+  throw TypeError("Can't convert object to primitive value");
+};
+
+
+/***/ }),
+/* 59 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// most Object methods by ES6 should accept primitives
+var $export = __webpack_require__(3);
+var core = __webpack_require__(2);
+var fails = __webpack_require__(19);
+module.exports = function (KEY, exec) {
+  var fn = (core.Object || {})[KEY] || Object[KEY];
+  var exp = {};
+  exp[KEY] = exec(fn);
+  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
+};
+
+
+/***/ }),
+/* 60 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(200), __esModule: true };
+
+/***/ }),
+/* 61 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var LIBRARY = __webpack_require__(62);
+var $export = __webpack_require__(3);
+var redefine = __webpack_require__(99);
+var hide = __webpack_require__(13);
+var has = __webpack_require__(18);
+var Iterators = __webpack_require__(23);
+var $iterCreate = __webpack_require__(203);
+var setToStringTag = __webpack_require__(39);
+var getPrototypeOf = __webpack_require__(206);
+var ITERATOR = __webpack_require__(4)('iterator');
+var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
+var FF_ITERATOR = '@@iterator';
+var KEYS = 'keys';
+var VALUES = 'values';
+
+var returnThis = function () { return this; };
+
+module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
+  $iterCreate(Constructor, NAME, next);
+  var getMethod = function (kind) {
+    if (!BUGGY && kind in proto) return proto[kind];
+    switch (kind) {
+      case KEYS: return function keys() { return new Constructor(this, kind); };
+      case VALUES: return function values() { return new Constructor(this, kind); };
+    } return function entries() { return new Constructor(this, kind); };
+  };
+  var TAG = NAME + ' Iterator';
+  var DEF_VALUES = DEFAULT == VALUES;
+  var VALUES_BUG = false;
+  var proto = Base.prototype;
+  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
+  var $default = (!BUGGY && $native) || getMethod(DEFAULT);
+  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
+  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
+  var methods, key, IteratorPrototype;
+  // Fix native
+  if ($anyNative) {
+    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
+    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
+      // Set @@toStringTag to native iterators
+      setToStringTag(IteratorPrototype, TAG, true);
+      // fix for some old engines
+      if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);
+    }
+  }
+  // fix Array#{values, @@iterator}.name in V8 / FF
+  if (DEF_VALUES && $native && $native.name !== VALUES) {
+    VALUES_BUG = true;
+    $default = function values() { return $native.call(this); };
+  }
+  // Define iterator
+  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
+    hide(proto, ITERATOR, $default);
+  }
+  // Plug for library
+  Iterators[NAME] = $default;
+  Iterators[TAG] = returnThis;
+  if (DEFAULT) {
+    methods = {
+      values: DEF_VALUES ? $default : getMethod(VALUES),
+      keys: IS_SET ? $default : getMethod(KEYS),
+      entries: $entries
+    };
+    if (FORCED) for (key in methods) {
+      if (!(key in proto)) redefine(proto, key, methods[key]);
+    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
+  }
+  return methods;
+};
+
+
+/***/ }),
+/* 62 */
+/***/ (function(module, exports) {
+
+module.exports = true;
+
+
+/***/ }),
+/* 63 */
+/***/ (function(module, exports) {
+
+// 7.1.4 ToInteger
+var ceil = Math.ceil;
+var floor = Math.floor;
+module.exports = function (it) {
+  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+};
+
+
+/***/ }),
+/* 64 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var shared = __webpack_require__(65)('keys');
+var uid = __webpack_require__(38);
+module.exports = function (key) {
+  return shared[key] || (shared[key] = uid(key));
+};
+
+
+/***/ }),
+/* 65 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var global = __webpack_require__(10);
+var SHARED = '__core-js_shared__';
+var store = global[SHARED] || (global[SHARED] = {});
+module.exports = function (key) {
+  return store[key] || (store[key] = {});
+};
+
+
+/***/ }),
+/* 66 */
+/***/ (function(module, exports) {
+
+// IE 8- don't enum bug keys
+module.exports = (
+  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
+).split(',');
+
+
+/***/ }),
+/* 67 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var classof = __webpack_require__(68);
+var ITERATOR = __webpack_require__(4)('iterator');
+var Iterators = __webpack_require__(23);
+module.exports = __webpack_require__(2).getIteratorMethod = function (it) {
+  if (it != undefined) return it[ITERATOR]
+    || it['@@iterator']
+    || Iterators[classof(it)];
+};
+
+
+/***/ }),
+/* 68 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// getting tag from 19.1.3.6 Object.prototype.toString()
+var cof = __webpack_require__(55);
+var TAG = __webpack_require__(4)('toStringTag');
+// ES3 wrong here
+var ARG = cof(function () { return arguments; }()) == 'Arguments';
+
+// fallback for IE11 Script Access Denied error
+var tryGet = function (it, key) {
+  try {
+    return it[key];
+  } catch (e) { /* empty */ }
+};
+
+module.exports = function (it) {
+  var O, T, B;
+  return it === undefined ? 'Undefined' : it === null ? 'Null'
+    // @@toStringTag case
+    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
+    // builtinTag case
+    : ARG ? cof(O)
+    // ES3 arguments fallback
+    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
+};
+
+
+/***/ }),
+/* 69 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _iterator = __webpack_require__(103);
+
+var _iterator2 = _interopRequireDefault(_iterator);
+
+var _symbol = __webpack_require__(216);
+
+var _symbol2 = _interopRequireDefault(_symbol);
+
+var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {
+  return typeof obj === "undefined" ? "undefined" : _typeof(obj);
+} : function (obj) {
+  return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);
+};
+
+/***/ }),
+/* 70 */
+/***/ (function(module, exports, __webpack_require__) {
+
+exports.f = __webpack_require__(4);
+
+
+/***/ }),
+/* 71 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var global = __webpack_require__(10);
+var core = __webpack_require__(2);
+var LIBRARY = __webpack_require__(62);
+var wksExt = __webpack_require__(70);
+var defineProperty = __webpack_require__(6).f;
+module.exports = function (name) {
+  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
+  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
+};
+
+
+/***/ }),
+/* 72 */
+/***/ (function(module, exports) {
+
+exports.f = Object.getOwnPropertySymbols;
+
+
+/***/ }),
+/* 73 */
+/***/ (function(module, exports) {
+
+
+
+/***/ }),
+/* 74 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(223), __esModule: true };
+
+/***/ }),
+/* 75 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(9);
+module.exports = function (it, TYPE) {
+  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
+  return it;
+};
+
+
+/***/ }),
+/* 76 */
+/***/ (function(module, exports) {
+
+var toString = {}.toString;
+
+module.exports = Array.isArray || function (arr) {
+  return toString.call(arr) == '[object Array]';
+};
+
+
+/***/ }),
+/* 77 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+function TraversalTracker() {
+	this.events = {};
+}
+
+TraversalTracker.prototype.startTracking = function (event, callback) {
+	var callbacks = this.events[event] || (this.events[event] = []);
+
+	if (callbacks.indexOf(callback) < 0) {
+		callbacks.push(callback);
+	}
+};
+
+TraversalTracker.prototype.stopTracking = function (event, callback) {
+	var callbacks = this.events[event];
+
+	if (!callbacks) {
+		return;
+	}
+
+	var index = callbacks.indexOf(callback);
+	if (index >= 0) {
+		callbacks.splice(index, 1);
+	}
+};
+
+TraversalTracker.prototype.emit = function (event) {
+	var args = Array.prototype.slice.call(arguments, 1);
+	var callbacks = this.events[event];
+
+	if (!callbacks) {
+		return;
+	}
+
+	callbacks.forEach(function (callback) {
+		callback.apply(this, args);
+	});
+};
+
+TraversalTracker.prototype.auto = function (event, callback, innerFunction) {
+	this.startTracking(event, callback);
+	innerFunction();
+	this.stopTracking(event, callback);
+};
+
+module.exports = TraversalTracker;
+
+
+/***/ }),
+/* 78 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var AI, AL, BA, BK, CB, CI_BRK, CJ, CP_BRK, CR, DI_BRK, ID, IN_BRK, LF, LineBreaker, NL, NS, PR_BRK, SA, SG, SP, UnicodeTrie, WJ, XX, base64, characterClasses, classTrie, data, fs, pairTable, _ref, _ref1;
+
+  UnicodeTrie = __webpack_require__(43);
+
+  
+
+  base64 = __webpack_require__(131);
+
+  _ref = __webpack_require__(132), BK = _ref.BK, CR = _ref.CR, LF = _ref.LF, NL = _ref.NL, CB = _ref.CB, BA = _ref.BA, SP = _ref.SP, WJ = _ref.WJ, SP = _ref.SP, BK = _ref.BK, LF = _ref.LF, NL = _ref.NL, AI = _ref.AI, AL = _ref.AL, SA = _ref.SA, SG = _ref.SG, XX = _ref.XX, CJ = _ref.CJ, ID = _ref.ID, NS = _ref.NS, characterClasses = _ref.characterClasses;
+
+  _ref1 = __webpack_require__(133), DI_BRK = _ref1.DI_BRK, IN_BRK = _ref1.IN_BRK, CI_BRK = _ref1.CI_BRK, CP_BRK = _ref1.CP_BRK, PR_BRK = _ref1.PR_BRK, pairTable = _ref1.pairTable;
+
+  data = base64.toByteArray("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");
+
+  classTrie = new UnicodeTrie(data);
+
+  LineBreaker = (function() {
+    var Break, mapClass, mapFirst;
+
+    function LineBreaker(string) {
+      this.string = string;
+      this.pos = 0;
+      this.lastPos = 0;
+      this.curClass = null;
+      this.nextClass = null;
+    }
+
+    LineBreaker.prototype.nextCodePoint = function() {
+      var code, next;
+      code = this.string.charCodeAt(this.pos++);
+      next = this.string.charCodeAt(this.pos);
+      if ((0xd800 <= code && code <= 0xdbff) && (0xdc00 <= next && next <= 0xdfff)) {
+        this.pos++;
+        return ((code - 0xd800) * 0x400) + (next - 0xdc00) + 0x10000;
+      }
+      return code;
+    };
+
+    mapClass = function(c) {
+      switch (c) {
+        case AI:
+          return AL;
+        case SA:
+        case SG:
+        case XX:
+          return AL;
+        case CJ:
+          return NS;
+        default:
+          return c;
+      }
+    };
+
+    mapFirst = function(c) {
+      switch (c) {
+        case LF:
+        case NL:
+          return BK;
+        case CB:
+          return BA;
+        case SP:
+          return WJ;
+        default:
+          return c;
+      }
+    };
+
+    LineBreaker.prototype.nextCharClass = function(first) {
+      if (first == null) {
+        first = false;
+      }
+      return mapClass(classTrie.get(this.nextCodePoint()));
+    };
+
+    Break = (function() {
+      function Break(position, required) {
+        this.position = position;
+        this.required = required != null ? required : false;
+      }
+
+      return Break;
+
+    })();
+
+    LineBreaker.prototype.nextBreak = function() {
+      var cur, lastClass, shouldBreak;
+      if (this.curClass == null) {
+        this.curClass = mapFirst(this.nextCharClass());
+      }
+      while (this.pos < this.string.length) {
+        this.lastPos = this.pos;
+        lastClass = this.nextClass;
+        this.nextClass = this.nextCharClass();
+        if (this.curClass === BK || (this.curClass === CR && this.nextClass !== LF)) {
+          this.curClass = mapFirst(mapClass(this.nextClass));
+          return new Break(this.lastPos, true);
+        }
+        cur = (function() {
+          switch (this.nextClass) {
+            case SP:
+              return this.curClass;
+            case BK:
+            case LF:
+            case NL:
+              return BK;
+            case CR:
+              return CR;
+            case CB:
+              return BA;
+          }
+        }).call(this);
+        if (cur != null) {
+          this.curClass = cur;
+          if (this.nextClass === CB) {
+            return new Break(this.lastPos);
+          }
+          continue;
+        }
+        shouldBreak = false;
+        switch (pairTable[this.curClass][this.nextClass]) {
+          case DI_BRK:
+            shouldBreak = true;
+            break;
+          case IN_BRK:
+            shouldBreak = lastClass === SP;
+            break;
+          case CI_BRK:
+            shouldBreak = lastClass === SP;
+            if (!shouldBreak) {
+              continue;
+            }
+            break;
+          case CP_BRK:
+            if (lastClass !== SP) {
+              continue;
+            }
+        }
+        this.curClass = this.nextClass;
+        if (shouldBreak) {
+          return new Break(this.lastPos);
+        }
+      }
+      if (this.pos >= this.string.length) {
+        if (this.lastPos < this.string.length) {
+          this.lastPos = this.string.length;
+          return new Break(this.string.length);
+        } else {
+          return null;
+        }
+      }
+    };
+
+    return LineBreaker;
+
+  })();
+
+  module.exports = LineBreaker;
+
+}).call(this);
+
+
+/***/ }),
+/* 79 */
+/***/ (function(module, exports) {
+
+var TINF_OK = 0;
+var TINF_DATA_ERROR = -3;
+
+function Tree() {
+  this.table = new Uint16Array(16);   /* table of code length counts */
+  this.trans = new Uint16Array(288);  /* code -> symbol translation table */
+}
+
+function Data(source, dest) {
+  this.source = source;
+  this.sourceIndex = 0;
+  this.tag = 0;
+  this.bitcount = 0;
+  
+  this.dest = dest;
+  this.destLen = 0;
+  
+  this.ltree = new Tree();  /* dynamic length/symbol tree */
+  this.dtree = new Tree();  /* dynamic distance tree */
+}
+
+/* --------------------------------------------------- *
+ * -- uninitialized global data (static structures) -- *
+ * --------------------------------------------------- */
+
+var sltree = new Tree();
+var sdtree = new Tree();
+
+/* extra bits and base tables for length codes */
+var length_bits = new Uint8Array(30);
+var length_base = new Uint16Array(30);
+
+/* extra bits and base tables for distance codes */
+var dist_bits = new Uint8Array(30);
+var dist_base = new Uint16Array(30);
+
+/* special ordering of code length codes */
+var clcidx = new Uint8Array([
+  16, 17, 18, 0, 8, 7, 9, 6,
+  10, 5, 11, 4, 12, 3, 13, 2,
+  14, 1, 15
+]);
+
+/* used by tinf_decode_trees, avoids allocations every call */
+var code_tree = new Tree();
+var lengths = new Uint8Array(288 + 32);
+
+/* ----------------------- *
+ * -- utility functions -- *
+ * ----------------------- */
+
+/* build extra bits and base tables */
+function tinf_build_bits_base(bits, base, delta, first) {
+  var i, sum;
+
+  /* build bits table */
+  for (i = 0; i < delta; ++i) bits[i] = 0;
+  for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;
+
+  /* build base table */
+  for (sum = first, i = 0; i < 30; ++i) {
+    base[i] = sum;
+    sum += 1 << bits[i];
+  }
+}
+
+/* build the fixed huffman trees */
+function tinf_build_fixed_trees(lt, dt) {
+  var i;
+
+  /* build fixed length tree */
+  for (i = 0; i < 7; ++i) lt.table[i] = 0;
+
+  lt.table[7] = 24;
+  lt.table[8] = 152;
+  lt.table[9] = 112;
+
+  for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;
+  for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;
+  for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;
+  for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;
+
+  /* build fixed distance tree */
+  for (i = 0; i < 5; ++i) dt.table[i] = 0;
+
+  dt.table[5] = 32;
+
+  for (i = 0; i < 32; ++i) dt.trans[i] = i;
+}
+
+/* given an array of code lengths, build a tree */
+var offs = new Uint16Array(16);
+
+function tinf_build_tree(t, lengths, off, num) {
+  var i, sum;
+
+  /* clear code length count table */
+  for (i = 0; i < 16; ++i) t.table[i] = 0;
+
+  /* scan symbol lengths, and sum code length counts */
+  for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;
+
+  t.table[0] = 0;
+
+  /* compute offset table for distribution sort */
+  for (sum = 0, i = 0; i < 16; ++i) {
+    offs[i] = sum;
+    sum += t.table[i];
+  }
+
+  /* create code->symbol translation table (symbols sorted by code) */
+  for (i = 0; i < num; ++i) {
+    if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;
+  }
+}
+
+/* ---------------------- *
+ * -- decode functions -- *
+ * ---------------------- */
+
+/* get one bit from source stream */
+function tinf_getbit(d) {
+  /* check if tag is empty */
+  if (!d.bitcount--) {
+    /* load next tag */
+    d.tag = d.source[d.sourceIndex++];
+    d.bitcount = 7;
+  }
+
+  /* shift bit out of tag */
+  var bit = d.tag & 1;
+  d.tag >>>= 1;
+
+  return bit;
+}
+
+/* read a num bit value from a stream and add base */
+function tinf_read_bits(d, num, base) {
+  if (!num)
+    return base;
+
+  while (d.bitcount < 24) {
+    d.tag |= d.source[d.sourceIndex++] << d.bitcount;
+    d.bitcount += 8;
+  }
+
+  var val = d.tag & (0xffff >>> (16 - num));
+  d.tag >>>= num;
+  d.bitcount -= num;
+  return val + base;
+}
+
+/* given a data stream and a tree, decode a symbol */
+function tinf_decode_symbol(d, t) {
+  while (d.bitcount < 24) {
+    d.tag |= d.source[d.sourceIndex++] << d.bitcount;
+    d.bitcount += 8;
+  }
+  
+  var sum = 0, cur = 0, len = 0;
+  var tag = d.tag;
+
+  /* get more bits while code value is above sum */
+  do {
+    cur = 2 * cur + (tag & 1);
+    tag >>>= 1;
+    ++len;
+
+    sum += t.table[len];
+    cur -= t.table[len];
+  } while (cur >= 0);
+  
+  d.tag = tag;
+  d.bitcount -= len;
+
+  return t.trans[sum + cur];
+}
+
+/* given a data stream, decode dynamic trees from it */
+function tinf_decode_trees(d, lt, dt) {
+  var hlit, hdist, hclen;
+  var i, num, length;
+
+  /* get 5 bits HLIT (257-286) */
+  hlit = tinf_read_bits(d, 5, 257);
+
+  /* get 5 bits HDIST (1-32) */
+  hdist = tinf_read_bits(d, 5, 1);
+
+  /* get 4 bits HCLEN (4-19) */
+  hclen = tinf_read_bits(d, 4, 4);
+
+  for (i = 0; i < 19; ++i) lengths[i] = 0;
+
+  /* read code lengths for code length alphabet */
+  for (i = 0; i < hclen; ++i) {
+    /* get 3 bits code length (0-7) */
+    var clen = tinf_read_bits(d, 3, 0);
+    lengths[clcidx[i]] = clen;
+  }
+
+  /* build code length tree */
+  tinf_build_tree(code_tree, lengths, 0, 19);
+
+  /* decode code lengths for the dynamic trees */
+  for (num = 0; num < hlit + hdist;) {
+    var sym = tinf_decode_symbol(d, code_tree);
+
+    switch (sym) {
+      case 16:
+        /* copy previous code length 3-6 times (read 2 bits) */
+        var prev = lengths[num - 1];
+        for (length = tinf_read_bits(d, 2, 3); length; --length) {
+          lengths[num++] = prev;
+        }
+        break;
+      case 17:
+        /* repeat code length 0 for 3-10 times (read 3 bits) */
+        for (length = tinf_read_bits(d, 3, 3); length; --length) {
+          lengths[num++] = 0;
+        }
+        break;
+      case 18:
+        /* repeat code length 0 for 11-138 times (read 7 bits) */
+        for (length = tinf_read_bits(d, 7, 11); length; --length) {
+          lengths[num++] = 0;
+        }
+        break;
+      default:
+        /* values 0-15 represent the actual code lengths */
+        lengths[num++] = sym;
+        break;
+    }
+  }
+
+  /* build dynamic trees */
+  tinf_build_tree(lt, lengths, 0, hlit);
+  tinf_build_tree(dt, lengths, hlit, hdist);
+}
+
+/* ----------------------------- *
+ * -- block inflate functions -- *
+ * ----------------------------- */
+
+/* given a stream and two trees, inflate a block of data */
+function tinf_inflate_block_data(d, lt, dt) {
+  while (1) {
+    var sym = tinf_decode_symbol(d, lt);
+
+    /* check for end of block */
+    if (sym === 256) {
+      return TINF_OK;
+    }
+
+    if (sym < 256) {
+      d.dest[d.destLen++] = sym;
+    } else {
+      var length, dist, offs;
+      var i;
+
+      sym -= 257;
+
+      /* possibly get more bits from length code */
+      length = tinf_read_bits(d, length_bits[sym], length_base[sym]);
+
+      dist = tinf_decode_symbol(d, dt);
+
+      /* possibly get more bits from distance code */
+      offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);
+
+      /* copy match */
+      for (i = offs; i < offs + length; ++i) {
+        d.dest[d.destLen++] = d.dest[i];
+      }
+    }
+  }
+}
+
+/* inflate an uncompressed block of data */
+function tinf_inflate_uncompressed_block(d) {
+  var length, invlength;
+  var i;
+  
+  /* unread from bitbuffer */
+  while (d.bitcount > 8) {
+    d.sourceIndex--;
+    d.bitcount -= 8;
+  }
+
+  /* get length */
+  length = d.source[d.sourceIndex + 1];
+  length = 256 * length + d.source[d.sourceIndex];
+
+  /* get one's complement of length */
+  invlength = d.source[d.sourceIndex + 3];
+  invlength = 256 * invlength + d.source[d.sourceIndex + 2];
+
+  /* check length */
+  if (length !== (~invlength & 0x0000ffff))
+    return TINF_DATA_ERROR;
+
+  d.sourceIndex += 4;
+
+  /* copy block */
+  for (i = length; i; --i)
+    d.dest[d.destLen++] = d.source[d.sourceIndex++];
+
+  /* make sure we start next block on a byte boundary */
+  d.bitcount = 0;
+
+  return TINF_OK;
+}
+
+/* inflate stream from source to dest */
+function tinf_uncompress(source, dest) {
+  var d = new Data(source, dest);
+  var bfinal, btype, res;
+
+  do {
+    /* read final block flag */
+    bfinal = tinf_getbit(d);
+
+    /* read block type (2 bits) */
+    btype = tinf_read_bits(d, 2, 0);
+
+    /* decompress block */
+    switch (btype) {
+      case 0:
+        /* decompress uncompressed block */
+        res = tinf_inflate_uncompressed_block(d);
+        break;
+      case 1:
+        /* decompress block with fixed huffman trees */
+        res = tinf_inflate_block_data(d, sltree, sdtree);
+        break;
+      case 2:
+        /* decompress block with dynamic huffman trees */
+        tinf_decode_trees(d, d.ltree, d.dtree);
+        res = tinf_inflate_block_data(d, d.ltree, d.dtree);
+        break;
+      default:
+        res = TINF_DATA_ERROR;
+    }
+
+    if (res !== TINF_OK)
+      throw new Error('Data error');
+
+  } while (!bfinal);
+
+  if (d.destLen < d.dest.length) {
+    if (typeof d.dest.slice === 'function')
+      return d.dest.slice(0, d.destLen);
+    else
+      return d.dest.subarray(0, d.destLen);
+  }
+  
+  return d.dest;
+}
+
+/* -------------------- *
+ * -- initialization -- *
+ * -------------------- */
+
+/* build fixed huffman trees */
+tinf_build_fixed_trees(sltree, sdtree);
+
+/* build extra bits and base tables */
+tinf_build_bits_base(length_bits, length_base, 4, 3);
+tinf_build_bits_base(dist_bits, dist_base, 2, 1);
+
+/* fix a special case */
+length_bits[28] = 0;
+length_base[28] = 258;
+
+module.exports = tinf_uncompress;
+
+
+/***/ }),
+/* 80 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var isString = __webpack_require__(0).isString;
+var isArray = __webpack_require__(0).isArray;
+var isUndefined = __webpack_require__(0).isUndefined;
+var isNull = __webpack_require__(0).isNull;
+
+/**
+ * Creates an instance of StyleContextStack used for style inheritance and style overrides
+ *
+ * @constructor
+ * @this {StyleContextStack}
+ * @param {Object} named styles dictionary
+ * @param {Object} optional default style definition
+ */
+function StyleContextStack(styleDictionary, defaultStyle) {
+	this.defaultStyle = defaultStyle || {};
+	this.styleDictionary = styleDictionary;
+	this.styleOverrides = [];
+}
+
+/**
+ * Creates cloned version of current stack
+ * @return {StyleContextStack} current stack snapshot
+ */
+StyleContextStack.prototype.clone = function () {
+	var stack = new StyleContextStack(this.styleDictionary, this.defaultStyle);
+
+	this.styleOverrides.forEach(function (item) {
+		stack.styleOverrides.push(item);
+	});
+
+	return stack;
+};
+
+/**
+ * Pushes style-name or style-overrides-object onto the stack for future evaluation
+ *
+ * @param {String|Object} styleNameOrOverride style-name (referring to styleDictionary) or
+ *                                            a new dictionary defining overriding properties
+ */
+StyleContextStack.prototype.push = function (styleNameOrOverride) {
+	this.styleOverrides.push(styleNameOrOverride);
+};
+
+/**
+ * Removes last style-name or style-overrides-object from the stack
+ *
+ * @param {Number} howMany - optional number of elements to be popped (if not specified,
+ *                           one element will be removed from the stack)
+ */
+StyleContextStack.prototype.pop = function (howMany) {
+	howMany = howMany || 1;
+
+	while (howMany-- > 0) {
+		this.styleOverrides.pop();
+	}
+};
+
+/**
+ * Creates a set of named styles or/and a style-overrides-object based on the item,
+ * pushes those elements onto the stack for future evaluation and returns the number
+ * of elements pushed, so they can be easily poped then.
+ *
+ * @param {Object} item - an object with optional style property and/or style overrides
+ * @return the number of items pushed onto the stack
+ */
+StyleContextStack.prototype.autopush = function (item) {
+	if (isString(item)) {
+		return 0;
+	}
+
+	var styleNames = [];
+
+	if (item.style) {
+		if (isArray(item.style)) {
+			styleNames = item.style;
+		} else {
+			styleNames = [item.style];
+		}
+	}
+
+	for (var i = 0, l = styleNames.length; i < l; i++) {
+		this.push(styleNames[i]);
+	}
+
+	var styleProperties = [
+		'font',
+		'fontSize',
+		'fontFeatures',
+		'bold',
+		'italics',
+		'alignment',
+		'color',
+		'columnGap',
+		'fillColor',
+		'decoration',
+		'decorationStyle',
+		'decorationColor',
+		'background',
+		'lineHeight',
+		'characterSpacing',
+		'noWrap',
+		'markerColor',
+		'leadingIndent'
+			//'tableCellPadding'
+			// 'cellBorder',
+			// 'headerCellBorder',
+			// 'oddRowCellBorder',
+			// 'evenRowCellBorder',
+			// 'tableBorder'
+	];
+	var styleOverrideObject = {};
+	var pushStyleOverrideObject = false;
+
+	styleProperties.forEach(function (key) {
+		if (!isUndefined(item[key]) && !isNull(item[key])) {
+			styleOverrideObject[key] = item[key];
+			pushStyleOverrideObject = true;
+		}
+	});
+
+	if (pushStyleOverrideObject) {
+		this.push(styleOverrideObject);
+	}
+
+	return styleNames.length + (pushStyleOverrideObject ? 1 : 0);
+};
+
+/**
+ * Automatically pushes elements onto the stack, using autopush based on item,
+ * executes callback and then pops elements back. Returns value returned by callback
+ *
+ * @param  {Object}   item - an object with optional style property and/or style overrides
+ * @param  {Function} function to be called between autopush and pop
+ * @return {Object} value returned by callback
+ */
+StyleContextStack.prototype.auto = function (item, callback) {
+	var pushedItems = this.autopush(item);
+	var result = callback();
+
+	if (pushedItems > 0) {
+		this.pop(pushedItems);
+	}
+
+	return result;
+};
+
+/**
+ * Evaluates stack and returns value of a named property
+ *
+ * @param {String} property - property name
+ * @return property value or null if not found
+ */
+StyleContextStack.prototype.getProperty = function (property) {
+	if (this.styleOverrides) {
+		for (var i = this.styleOverrides.length - 1; i >= 0; i--) {
+			var item = this.styleOverrides[i];
+
+			if (isString(item)) {
+				// named-style-override
+				var style = this.styleDictionary[item];
+				if (style && !isUndefined(style[property]) && !isNull(style[property])) {
+					return style[property];
+				}
+			} else if (!isUndefined(item[property]) && !isNull(item[property])) {
+				// style-overrides-object
+				return item[property];
+			}
+		}
+	}
+
+	return this.defaultStyle && this.defaultStyle[property];
+};
+
+module.exports = StyleContextStack;
+
+
+/***/ }),
+/* 81 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var TraversalTracker = __webpack_require__(77);
+var isString = __webpack_require__(0).isString;
+
+/**
+ * Creates an instance of DocumentContext - a store for current x, y positions and available width/height.
+ * It facilitates column divisions and vertical sync
+ */
+function DocumentContext(pageSize, pageMargins) {
+	this.pages = [];
+
+	this.pageMargins = pageMargins;
+
+	this.x = pageMargins.left;
+	this.availableWidth = pageSize.width - pageMargins.left - pageMargins.right;
+	this.availableHeight = 0;
+	this.page = -1;
+
+	this.snapshots = [];
+
+	this.endingCell = null;
+
+	this.tracker = new TraversalTracker();
+
+	this.addPage(pageSize);
+
+	this.hasBackground = false;
+}
+
+DocumentContext.prototype.beginColumnGroup = function () {
+	this.snapshots.push({
+		x: this.x,
+		y: this.y,
+		availableHeight: this.availableHeight,
+		availableWidth: this.availableWidth,
+		page: this.page,
+		bottomMost: {
+			x: this.x,
+			y: this.y,
+			availableHeight: this.availableHeight,
+			availableWidth: this.availableWidth,
+			page: this.page
+		},
+		endingCell: this.endingCell,
+		lastColumnWidth: this.lastColumnWidth
+	});
+
+	this.lastColumnWidth = 0;
+};
+
+DocumentContext.prototype.beginColumn = function (width, offset, endingCell) {
+	var saved = this.snapshots[this.snapshots.length - 1];
+
+	this.calculateBottomMost(saved);
+
+	this.endingCell = endingCell;
+	this.page = saved.page;
+	this.x = this.x + this.lastColumnWidth + (offset || 0);
+	this.y = saved.y;
+	this.availableWidth = width;	//saved.availableWidth - offset;
+	this.availableHeight = saved.availableHeight;
+
+	this.lastColumnWidth = width;
+};
+
+DocumentContext.prototype.calculateBottomMost = function (destContext) {
+	if (this.endingCell) {
+		this.saveContextInEndingCell(this.endingCell);
+		this.endingCell = null;
+	} else {
+		destContext.bottomMost = bottomMostContext(this, destContext.bottomMost);
+	}
+};
+
+DocumentContext.prototype.markEnding = function (endingCell) {
+	this.page = endingCell._columnEndingContext.page;
+	this.x = endingCell._columnEndingContext.x;
+	this.y = endingCell._columnEndingContext.y;
+	this.availableWidth = endingCell._columnEndingContext.availableWidth;
+	this.availableHeight = endingCell._columnEndingContext.availableHeight;
+	this.lastColumnWidth = endingCell._columnEndingContext.lastColumnWidth;
+};
+
+DocumentContext.prototype.saveContextInEndingCell = function (endingCell) {
+	endingCell._columnEndingContext = {
+		page: this.page,
+		x: this.x,
+		y: this.y,
+		availableHeight: this.availableHeight,
+		availableWidth: this.availableWidth,
+		lastColumnWidth: this.lastColumnWidth
+	};
+};
+
+DocumentContext.prototype.completeColumnGroup = function (height) {
+	var saved = this.snapshots.pop();
+
+	this.calculateBottomMost(saved);
+
+	this.endingCell = null;
+	this.x = saved.x;
+
+	var y = saved.bottomMost.y;
+	if (height) {
+		if (saved.page === saved.bottomMost.page) {
+			if ((saved.y + height) > y) {
+				y = saved.y + height;
+			}
+		} else {
+			y += height;
+		}
+	}
+
+	this.y = y;
+	this.page = saved.bottomMost.page;
+	this.availableWidth = saved.availableWidth;
+	this.availableHeight = saved.bottomMost.availableHeight;
+	if (height) {
+		this.availableHeight -= (y - saved.bottomMost.y);
+	}
+	this.lastColumnWidth = saved.lastColumnWidth;
+};
+
+DocumentContext.prototype.addMargin = function (left, right) {
+	this.x += left;
+	this.availableWidth -= left + (right || 0);
+};
+
+DocumentContext.prototype.moveDown = function (offset) {
+	this.y += offset;
+	this.availableHeight -= offset;
+
+	return this.availableHeight > 0;
+};
+
+DocumentContext.prototype.initializePage = function () {
+	this.y = this.pageMargins.top;
+	this.availableHeight = this.getCurrentPage().pageSize.height - this.pageMargins.top - this.pageMargins.bottom;
+	this.pageSnapshot().availableWidth = this.getCurrentPage().pageSize.width - this.pageMargins.left - this.pageMargins.right;
+};
+
+DocumentContext.prototype.pageSnapshot = function () {
+	if (this.snapshots[0]) {
+		return this.snapshots[0];
+	} else {
+		return this;
+	}
+};
+
+DocumentContext.prototype.moveTo = function (x, y) {
+	if (x !== undefined && x !== null) {
+		this.x = x;
+		this.availableWidth = this.getCurrentPage().pageSize.width - this.x - this.pageMargins.right;
+	}
+	if (y !== undefined && y !== null) {
+		this.y = y;
+		this.availableHeight = this.getCurrentPage().pageSize.height - this.y - this.pageMargins.bottom;
+	}
+};
+
+DocumentContext.prototype.beginDetachedBlock = function () {
+	this.snapshots.push({
+		x: this.x,
+		y: this.y,
+		availableHeight: this.availableHeight,
+		availableWidth: this.availableWidth,
+		page: this.page,
+		endingCell: this.endingCell,
+		lastColumnWidth: this.lastColumnWidth
+	});
+};
+
+DocumentContext.prototype.endDetachedBlock = function () {
+	var saved = this.snapshots.pop();
+
+	this.x = saved.x;
+	this.y = saved.y;
+	this.availableWidth = saved.availableWidth;
+	this.availableHeight = saved.availableHeight;
+	this.page = saved.page;
+	this.endingCell = saved.endingCell;
+	this.lastColumnWidth = saved.lastColumnWidth;
+};
+
+function pageOrientation(pageOrientationString, currentPageOrientation) {
+	if (pageOrientationString === undefined) {
+		return currentPageOrientation;
+	} else if (isString(pageOrientationString) && (pageOrientationString.toLowerCase() === 'landscape')) {
+		return 'landscape';
+	} else {
+		return 'portrait';
+	}
+}
+
+var getPageSize = function (currentPage, newPageOrientation) {
+
+	newPageOrientation = pageOrientation(newPageOrientation, currentPage.pageSize.orientation);
+
+	if (newPageOrientation !== currentPage.pageSize.orientation) {
+		return {
+			orientation: newPageOrientation,
+			width: currentPage.pageSize.height,
+			height: currentPage.pageSize.width
+		};
+	} else {
+		return {
+			orientation: currentPage.pageSize.orientation,
+			width: currentPage.pageSize.width,
+			height: currentPage.pageSize.height
+		};
+	}
+
+};
+
+
+DocumentContext.prototype.moveToNextPage = function (pageOrientation) {
+	var nextPageIndex = this.page + 1;
+
+	var prevPage = this.page;
+	var prevY = this.y;
+
+	var createNewPage = nextPageIndex >= this.pages.length;
+	if (createNewPage) {
+		var currentAvailableWidth = this.availableWidth;
+		var currentPageOrientation = this.getCurrentPage().pageSize.orientation;
+
+		var pageSize = getPageSize(this.getCurrentPage(), pageOrientation);
+		this.addPage(pageSize);
+
+		if (currentPageOrientation === pageSize.orientation) {
+			this.availableWidth = currentAvailableWidth;
+		}
+	} else {
+		this.page = nextPageIndex;
+		this.initializePage();
+	}
+
+	return {
+		newPageCreated: createNewPage,
+		prevPage: prevPage,
+		prevY: prevY,
+		y: this.y
+	};
+};
+
+
+DocumentContext.prototype.addPage = function (pageSize) {
+	var page = {items: [], pageSize: pageSize};
+	this.pages.push(page);
+	this.page = this.pages.length - 1;
+	this.initializePage();
+
+	this.tracker.emit('pageAdded');
+
+	return page;
+};
+
+DocumentContext.prototype.getCurrentPage = function () {
+	if (this.page < 0 || this.page >= this.pages.length) {
+		return null;
+	}
+
+	return this.pages[this.page];
+};
+
+DocumentContext.prototype.getCurrentPosition = function () {
+	var pageSize = this.getCurrentPage().pageSize;
+	var innerHeight = pageSize.height - this.pageMargins.top - this.pageMargins.bottom;
+	var innerWidth = pageSize.width - this.pageMargins.left - this.pageMargins.right;
+
+	return {
+		pageNumber: this.page + 1,
+		pageOrientation: pageSize.orientation,
+		pageInnerHeight: innerHeight,
+		pageInnerWidth: innerWidth,
+		left: this.x,
+		top: this.y,
+		verticalRatio: ((this.y - this.pageMargins.top) / innerHeight),
+		horizontalRatio: ((this.x - this.pageMargins.left) / innerWidth)
+	};
+};
+
+function bottomMostContext(c1, c2) {
+	var r;
+
+	if (c1.page > c2.page) {
+		r = c1;
+	} else if (c2.page > c1.page) {
+		r = c2;
+	} else {
+		r = (c1.y > c2.y) ? c1 : c2;
+	}
+
+	return {
+		page: r.page,
+		x: r.x,
+		y: r.y,
+		availableHeight: r.availableHeight,
+		availableWidth: r.availableWidth
+	};
+}
+
+module.exports = DocumentContext;
+
+
+/***/ }),
+/* 82 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/**
+ * Creates an instance of Line
+ *
+ * @constructor
+ * @this {Line}
+ * @param {Number} Maximum width this line can have
+ */
+function Line(maxWidth) {
+	this.maxWidth = maxWidth;
+	this.leadingCut = 0;
+	this.trailingCut = 0;
+	this.inlineWidths = 0;
+	this.inlines = [];
+}
+
+Line.prototype.getAscenderHeight = function () {
+	var y = 0;
+
+	this.inlines.forEach(function (inline) {
+		y = Math.max(y, inline.font.ascender / 1000 * inline.fontSize);
+	});
+	return y;
+};
+
+Line.prototype.hasEnoughSpaceForInline = function (inline) {
+	if (this.inlines.length === 0) {
+		return true;
+	}
+	if (this.newLineForced) {
+		return false;
+	}
+
+	return this.inlineWidths + inline.width - this.leadingCut - (inline.trailingCut || 0) <= this.maxWidth;
+};
+
+Line.prototype.addInline = function (inline) {
+	if (this.inlines.length === 0) {
+		this.leadingCut = inline.leadingCut || 0;
+	}
+	this.trailingCut = inline.trailingCut || 0;
+
+	inline.x = this.inlineWidths - this.leadingCut;
+
+	this.inlines.push(inline);
+	this.inlineWidths += inline.width;
+
+	if (inline.lineEnd) {
+		this.newLineForced = true;
+	}
+};
+
+Line.prototype.getWidth = function () {
+	return this.inlineWidths - this.leadingCut - this.trailingCut;
+};
+
+/**
+ * Returns line height
+ * @return {Number}
+ */
+Line.prototype.getHeight = function () {
+	var max = 0;
+
+	this.inlines.forEach(function (item) {
+		max = Math.max(max, item.height || 0);
+	});
+
+	return max;
+};
+
+module.exports = Line;
+
+
+/***/ }),
+/* 83 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+/*<replacement>*/
+
+var processNextTick = __webpack_require__(32).nextTick;
+/*</replacement>*/
+
+module.exports = Readable;
+
+/*<replacement>*/
+var isArray = __webpack_require__(76);
+/*</replacement>*/
+
+/*<replacement>*/
+var Duplex;
+/*</replacement>*/
+
+Readable.ReadableState = ReadableState;
+
+/*<replacement>*/
+var EE = __webpack_require__(31).EventEmitter;
+
+var EElistenerCount = function (emitter, type) {
+  return emitter.listeners(type).length;
+};
+/*</replacement>*/
+
+/*<replacement>*/
+var Stream = __webpack_require__(84);
+/*</replacement>*/
+
+/*<replacement>*/
+
+var Buffer = __webpack_require__(33).Buffer;
+var OurUint8Array = global.Uint8Array || function () {};
+function _uint8ArrayToBuffer(chunk) {
+  return Buffer.from(chunk);
+}
+function _isUint8Array(obj) {
+  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
+}
+
+/*</replacement>*/
+
+/*<replacement>*/
+var util = __webpack_require__(25);
+util.inherits = __webpack_require__(21);
+/*</replacement>*/
+
+/*<replacement>*/
+var debugUtil = __webpack_require__(139);
+var debug = void 0;
+if (debugUtil && debugUtil.debuglog) {
+  debug = debugUtil.debuglog('stream');
+} else {
+  debug = function () {};
+}
+/*</replacement>*/
+
+var BufferList = __webpack_require__(140);
+var destroyImpl = __webpack_require__(85);
+var StringDecoder;
+
+util.inherits(Readable, Stream);
+
+var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
+
+function prependListener(emitter, event, fn) {
+  // Sadly this is not cacheable as some libraries bundle their own
+  // event emitter implementation with them.
+  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
+
+  // This is a hack to make sure that our error handler is attached before any
+  // userland ones.  NEVER DO THIS. This is here only because this code needs
+  // to continue to work with older versions of Node.js that do not include
+  // the prependListener() method. The goal is to eventually remove this hack.
+  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
+}
+
+function ReadableState(options, stream) {
+  Duplex = Duplex || __webpack_require__(16);
+
+  options = options || {};
+
+  // Duplex streams are both readable and writable, but share
+  // the same options object.
+  // However, some cases require setting options to different
+  // values for the readable and the writable sides of the duplex stream.
+  // These options can be provided separately as readableXXX and writableXXX.
+  var isDuplex = stream instanceof Duplex;
+
+  // object stream flag. Used to make read(n) ignore n and to
+  // make all the buffer merging and length checks go away
+  this.objectMode = !!options.objectMode;
+
+  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
+
+  // the point at which it stops calling _read() to fill the buffer
+  // Note: 0 is a valid value, means "don't call _read preemptively ever"
+  var hwm = options.highWaterMark;
+  var readableHwm = options.readableHighWaterMark;
+  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
+
+  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
+
+  // cast to ints.
+  this.highWaterMark = Math.floor(this.highWaterMark);
+
+  // A linked list is used to store data chunks instead of an array because the
+  // linked list can remove elements from the beginning faster than
+  // array.shift()
+  this.buffer = new BufferList();
+  this.length = 0;
+  this.pipes = null;
+  this.pipesCount = 0;
+  this.flowing = null;
+  this.ended = false;
+  this.endEmitted = false;
+  this.reading = false;
+
+  // a flag to be able to tell if the event 'readable'/'data' is emitted
+  // immediately, or on a later tick.  We set this to true at first, because
+  // any actions that shouldn't happen until "later" should generally also
+  // not happen before the first read call.
+  this.sync = true;
+
+  // whenever we return null, then we set a flag to say
+  // that we're awaiting a 'readable' event emission.
+  this.needReadable = false;
+  this.emittedReadable = false;
+  this.readableListening = false;
+  this.resumeScheduled = false;
+
+  // has it been destroyed
+  this.destroyed = false;
+
+  // Crypto is kind of old and crusty.  Historically, its default string
+  // encoding is 'binary' so we have to make this configurable.
+  // Everything else in the universe uses 'utf8', though.
+  this.defaultEncoding = options.defaultEncoding || 'utf8';
+
+  // the number of writers that are awaiting a drain event in .pipe()s
+  this.awaitDrain = 0;
+
+  // if true, a maybeReadMore has been scheduled
+  this.readingMore = false;
+
+  this.decoder = null;
+  this.encoding = null;
+  if (options.encoding) {
+    if (!StringDecoder) StringDecoder = __webpack_require__(47).StringDecoder;
+    this.decoder = new StringDecoder(options.encoding);
+    this.encoding = options.encoding;
+  }
+}
+
+function Readable(options) {
+  Duplex = Duplex || __webpack_require__(16);
+
+  if (!(this instanceof Readable)) return new Readable(options);
+
+  this._readableState = new ReadableState(options, this);
+
+  // legacy
+  this.readable = true;
+
+  if (options) {
+    if (typeof options.read === 'function') this._read = options.read;
+
+    if (typeof options.destroy === 'function') this._destroy = options.destroy;
+  }
+
+  Stream.call(this);
+}
+
+Object.defineProperty(Readable.prototype, 'destroyed', {
+  get: function () {
+    if (this._readableState === undefined) {
+      return false;
+    }
+    return this._readableState.destroyed;
+  },
+  set: function (value) {
+    // we ignore the value if the stream
+    // has not been initialized yet
+    if (!this._readableState) {
+      return;
+    }
+
+    // backward compatibility, the user is explicitly
+    // managing destroyed
+    this._readableState.destroyed = value;
+  }
+});
+
+Readable.prototype.destroy = destroyImpl.destroy;
+Readable.prototype._undestroy = destroyImpl.undestroy;
+Readable.prototype._destroy = function (err, cb) {
+  this.push(null);
+  cb(err);
+};
+
+// Manually shove something into the read() buffer.
+// This returns true if the highWaterMark has not been hit yet,
+// similar to how Writable.write() returns true if you should
+// write() some more.
+Readable.prototype.push = function (chunk, encoding) {
+  var state = this._readableState;
+  var skipChunkCheck;
+
+  if (!state.objectMode) {
+    if (typeof chunk === 'string') {
+      encoding = encoding || state.defaultEncoding;
+      if (encoding !== state.encoding) {
+        chunk = Buffer.from(chunk, encoding);
+        encoding = '';
+      }
+      skipChunkCheck = true;
+    }
+  } else {
+    skipChunkCheck = true;
+  }
+
+  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
+};
+
+// Unshift should *always* be something directly out of read()
+Readable.prototype.unshift = function (chunk) {
+  return readableAddChunk(this, chunk, null, true, false);
+};
+
+function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
+  var state = stream._readableState;
+  if (chunk === null) {
+    state.reading = false;
+    onEofChunk(stream, state);
+  } else {
+    var er;
+    if (!skipChunkCheck) er = chunkInvalid(state, chunk);
+    if (er) {
+      stream.emit('error', er);
+    } else if (state.objectMode || chunk && chunk.length > 0) {
+      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
+        chunk = _uint8ArrayToBuffer(chunk);
+      }
+
+      if (addToFront) {
+        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
+      } else if (state.ended) {
+        stream.emit('error', new Error('stream.push() after EOF'));
+      } else {
+        state.reading = false;
+        if (state.decoder && !encoding) {
+          chunk = state.decoder.write(chunk);
+          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
+        } else {
+          addChunk(stream, state, chunk, false);
+        }
+      }
+    } else if (!addToFront) {
+      state.reading = false;
+    }
+  }
+
+  return needMoreData(state);
+}
+
+function addChunk(stream, state, chunk, addToFront) {
+  if (state.flowing && state.length === 0 && !state.sync) {
+    stream.emit('data', chunk);
+    stream.read(0);
+  } else {
+    // update the buffer info.
+    state.length += state.objectMode ? 1 : chunk.length;
+    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
+
+    if (state.needReadable) emitReadable(stream);
+  }
+  maybeReadMore(stream, state);
+}
+
+function chunkInvalid(state, chunk) {
+  var er;
+  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
+    er = new TypeError('Invalid non-string/buffer chunk');
+  }
+  return er;
+}
+
+// if it's past the high water mark, we can push in some more.
+// Also, if we have no data yet, we can stand some
+// more bytes.  This is to work around cases where hwm=0,
+// such as the repl.  Also, if the push() triggered a
+// readable event, and the user called read(largeNumber) such that
+// needReadable was set, then we ought to push more, so that another
+// 'readable' event will be triggered.
+function needMoreData(state) {
+  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
+}
+
+Readable.prototype.isPaused = function () {
+  return this._readableState.flowing === false;
+};
+
+// backwards compatibility.
+Readable.prototype.setEncoding = function (enc) {
+  if (!StringDecoder) StringDecoder = __webpack_require__(47).StringDecoder;
+  this._readableState.decoder = new StringDecoder(enc);
+  this._readableState.encoding = enc;
+  return this;
+};
+
+// Don't raise the hwm > 8MB
+var MAX_HWM = 0x800000;
+function computeNewHighWaterMark(n) {
+  if (n >= MAX_HWM) {
+    n = MAX_HWM;
+  } else {
+    // Get the next highest power of 2 to prevent increasing hwm excessively in
+    // tiny amounts
+    n--;
+    n |= n >>> 1;
+    n |= n >>> 2;
+    n |= n >>> 4;
+    n |= n >>> 8;
+    n |= n >>> 16;
+    n++;
+  }
+  return n;
+}
+
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function howMuchToRead(n, state) {
+  if (n <= 0 || state.length === 0 && state.ended) return 0;
+  if (state.objectMode) return 1;
+  if (n !== n) {
+    // Only flow one buffer at a time
+    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
+  }
+  // If we're asking for more than the current hwm, then raise the hwm.
+  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
+  if (n <= state.length) return n;
+  // Don't have enough
+  if (!state.ended) {
+    state.needReadable = true;
+    return 0;
+  }
+  return state.length;
+}
+
+// you can override either this method, or the async _read(n) below.
+Readable.prototype.read = function (n) {
+  debug('read', n);
+  n = parseInt(n, 10);
+  var state = this._readableState;
+  var nOrig = n;
+
+  if (n !== 0) state.emittedReadable = false;
+
+  // if we're doing read(0) to trigger a readable event, but we
+  // already have a bunch of data in the buffer, then just trigger
+  // the 'readable' event and move on.
+  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
+    debug('read: emitReadable', state.length, state.ended);
+    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
+    return null;
+  }
+
+  n = howMuchToRead(n, state);
+
+  // if we've ended, and we're now clear, then finish it up.
+  if (n === 0 && state.ended) {
+    if (state.length === 0) endReadable(this);
+    return null;
+  }
+
+  // All the actual chunk generation logic needs to be
+  // *below* the call to _read.  The reason is that in certain
+  // synthetic stream cases, such as passthrough streams, _read
+  // may be a completely synchronous operation which may change
+  // the state of the read buffer, providing enough data when
+  // before there was *not* enough.
+  //
+  // So, the steps are:
+  // 1. Figure out what the state of things will be after we do
+  // a read from the buffer.
+  //
+  // 2. If that resulting state will trigger a _read, then call _read.
+  // Note that this may be asynchronous, or synchronous.  Yes, it is
+  // deeply ugly to write APIs this way, but that still doesn't mean
+  // that the Readable class should behave improperly, as streams are
+  // designed to be sync/async agnostic.
+  // Take note if the _read call is sync or async (ie, if the read call
+  // has returned yet), so that we know whether or not it's safe to emit
+  // 'readable' etc.
+  //
+  // 3. Actually pull the requested chunks out of the buffer and return.
+
+  // if we need a readable event, then we need to do some reading.
+  var doRead = state.needReadable;
+  debug('need readable', doRead);
+
+  // if we currently have less than the highWaterMark, then also read some
+  if (state.length === 0 || state.length - n < state.highWaterMark) {
+    doRead = true;
+    debug('length less than watermark', doRead);
+  }
+
+  // however, if we've ended, then there's no point, and if we're already
+  // reading, then it's unnecessary.
+  if (state.ended || state.reading) {
+    doRead = false;
+    debug('reading or ended', doRead);
+  } else if (doRead) {
+    debug('do read');
+    state.reading = true;
+    state.sync = true;
+    // if the length is currently zero, then we *need* a readable event.
+    if (state.length === 0) state.needReadable = true;
+    // call internal read method
+    this._read(state.highWaterMark);
+    state.sync = false;
+    // If _read pushed data synchronously, then `reading` will be false,
+    // and we need to re-evaluate how much data we can return to the user.
+    if (!state.reading) n = howMuchToRead(nOrig, state);
+  }
+
+  var ret;
+  if (n > 0) ret = fromList(n, state);else ret = null;
+
+  if (ret === null) {
+    state.needReadable = true;
+    n = 0;
+  } else {
+    state.length -= n;
+  }
+
+  if (state.length === 0) {
+    // If we have nothing in the buffer, then we want to know
+    // as soon as we *do* get something into the buffer.
+    if (!state.ended) state.needReadable = true;
+
+    // If we tried to read() past the EOF, then emit end on the next tick.
+    if (nOrig !== n && state.ended) endReadable(this);
+  }
+
+  if (ret !== null) this.emit('data', ret);
+
+  return ret;
+};
+
+function onEofChunk(stream, state) {
+  if (state.ended) return;
+  if (state.decoder) {
+    var chunk = state.decoder.end();
+    if (chunk && chunk.length) {
+      state.buffer.push(chunk);
+      state.length += state.objectMode ? 1 : chunk.length;
+    }
+  }
+  state.ended = true;
+
+  // emit 'readable' now to make sure it gets picked up.
+  emitReadable(stream);
+}
+
+// Don't emit readable right away in sync mode, because this can trigger
+// another read() call => stack overflow.  This way, it might trigger
+// a nextTick recursion warning, but that's not so bad.
+function emitReadable(stream) {
+  var state = stream._readableState;
+  state.needReadable = false;
+  if (!state.emittedReadable) {
+    debug('emitReadable', state.flowing);
+    state.emittedReadable = true;
+    if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
+  }
+}
+
+function emitReadable_(stream) {
+  debug('emit readable');
+  stream.emit('readable');
+  flow(stream);
+}
+
+// at this point, the user has presumably seen the 'readable' event,
+// and called read() to consume some data.  that may have triggered
+// in turn another _read(n) call, in which case reading = true if
+// it's in progress.
+// However, if we're not ended, or reading, and the length < hwm,
+// then go ahead and try to read some more preemptively.
+function maybeReadMore(stream, state) {
+  if (!state.readingMore) {
+    state.readingMore = true;
+    processNextTick(maybeReadMore_, stream, state);
+  }
+}
+
+function maybeReadMore_(stream, state) {
+  var len = state.length;
+  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
+    debug('maybeReadMore read 0');
+    stream.read(0);
+    if (len === state.length)
+      // didn't get any data, stop spinning.
+      break;else len = state.length;
+  }
+  state.readingMore = false;
+}
+
+// abstract method.  to be overridden in specific implementation classes.
+// call cb(er, data) where data is <= n in length.
+// for virtual (non-string, non-buffer) streams, "length" is somewhat
+// arbitrary, and perhaps not very meaningful.
+Readable.prototype._read = function (n) {
+  this.emit('error', new Error('_read() is not implemented'));
+};
+
+Readable.prototype.pipe = function (dest, pipeOpts) {
+  var src = this;
+  var state = this._readableState;
+
+  switch (state.pipesCount) {
+    case 0:
+      state.pipes = dest;
+      break;
+    case 1:
+      state.pipes = [state.pipes, dest];
+      break;
+    default:
+      state.pipes.push(dest);
+      break;
+  }
+  state.pipesCount += 1;
+  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
+
+  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
+
+  var endFn = doEnd ? onend : unpipe;
+  if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
+
+  dest.on('unpipe', onunpipe);
+  function onunpipe(readable, unpipeInfo) {
+    debug('onunpipe');
+    if (readable === src) {
+      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
+        unpipeInfo.hasUnpiped = true;
+        cleanup();
+      }
+    }
+  }
+
+  function onend() {
+    debug('onend');
+    dest.end();
+  }
+
+  // when the dest drains, it reduces the awaitDrain counter
+  // on the source.  This would be more elegant with a .once()
+  // handler in flow(), but adding and removing repeatedly is
+  // too slow.
+  var ondrain = pipeOnDrain(src);
+  dest.on('drain', ondrain);
+
+  var cleanedUp = false;
+  function cleanup() {
+    debug('cleanup');
+    // cleanup event handlers once the pipe is broken
+    dest.removeListener('close', onclose);
+    dest.removeListener('finish', onfinish);
+    dest.removeListener('drain', ondrain);
+    dest.removeListener('error', onerror);
+    dest.removeListener('unpipe', onunpipe);
+    src.removeListener('end', onend);
+    src.removeListener('end', unpipe);
+    src.removeListener('data', ondata);
+
+    cleanedUp = true;
+
+    // if the reader is waiting for a drain event from this
+    // specific writer, then it would cause it to never start
+    // flowing again.
+    // So, if this is awaiting a drain, then we just call it now.
+    // If we don't know, then assume that we are waiting for one.
+    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
+  }
+
+  // If the user pushes more data while we're writing to dest then we'll end up
+  // in ondata again. However, we only want to increase awaitDrain once because
+  // dest will only emit one 'drain' event for the multiple writes.
+  // => Introduce a guard on increasing awaitDrain.
+  var increasedAwaitDrain = false;
+  src.on('data', ondata);
+  function ondata(chunk) {
+    debug('ondata');
+    increasedAwaitDrain = false;
+    var ret = dest.write(chunk);
+    if (false === ret && !increasedAwaitDrain) {
+      // If the user unpiped during `dest.write()`, it is possible
+      // to get stuck in a permanently paused state if that write
+      // also returned false.
+      // => Check whether `dest` is still a piping destination.
+      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
+        debug('false write response, pause', src._readableState.awaitDrain);
+        src._readableState.awaitDrain++;
+        increasedAwaitDrain = true;
+      }
+      src.pause();
+    }
+  }
+
+  // if the dest has an error, then stop piping into it.
+  // however, don't suppress the throwing behavior for this.
+  function onerror(er) {
+    debug('onerror', er);
+    unpipe();
+    dest.removeListener('error', onerror);
+    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
+  }
+
+  // Make sure our error handler is attached before userland ones.
+  prependListener(dest, 'error', onerror);
+
+  // Both close and finish should trigger unpipe, but only once.
+  function onclose() {
+    dest.removeListener('finish', onfinish);
+    unpipe();
+  }
+  dest.once('close', onclose);
+  function onfinish() {
+    debug('onfinish');
+    dest.removeListener('close', onclose);
+    unpipe();
+  }
+  dest.once('finish', onfinish);
+
+  function unpipe() {
+    debug('unpipe');
+    src.unpipe(dest);
+  }
+
+  // tell the dest that it's being piped to
+  dest.emit('pipe', src);
+
+  // start the flow if it hasn't been started already.
+  if (!state.flowing) {
+    debug('pipe resume');
+    src.resume();
+  }
+
+  return dest;
+};
+
+function pipeOnDrain(src) {
+  return function () {
+    var state = src._readableState;
+    debug('pipeOnDrain', state.awaitDrain);
+    if (state.awaitDrain) state.awaitDrain--;
+    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
+      state.flowing = true;
+      flow(src);
+    }
+  };
+}
+
+Readable.prototype.unpipe = function (dest) {
+  var state = this._readableState;
+  var unpipeInfo = { hasUnpiped: false };
+
+  // if we're not piping anywhere, then do nothing.
+  if (state.pipesCount === 0) return this;
+
+  // just one destination.  most common case.
+  if (state.pipesCount === 1) {
+    // passed in one, but it's not the right one.
+    if (dest && dest !== state.pipes) return this;
+
+    if (!dest) dest = state.pipes;
+
+    // got a match.
+    state.pipes = null;
+    state.pipesCount = 0;
+    state.flowing = false;
+    if (dest) dest.emit('unpipe', this, unpipeInfo);
+    return this;
+  }
+
+  // slow case. multiple pipe destinations.
+
+  if (!dest) {
+    // remove all.
+    var dests = state.pipes;
+    var len = state.pipesCount;
+    state.pipes = null;
+    state.pipesCount = 0;
+    state.flowing = false;
+
+    for (var i = 0; i < len; i++) {
+      dests[i].emit('unpipe', this, unpipeInfo);
+    }return this;
+  }
+
+  // try to find the right one.
+  var index = indexOf(state.pipes, dest);
+  if (index === -1) return this;
+
+  state.pipes.splice(index, 1);
+  state.pipesCount -= 1;
+  if (state.pipesCount === 1) state.pipes = state.pipes[0];
+
+  dest.emit('unpipe', this, unpipeInfo);
+
+  return this;
+};
+
+// set up data events if they are asked for
+// Ensure readable listeners eventually get something
+Readable.prototype.on = function (ev, fn) {
+  var res = Stream.prototype.on.call(this, ev, fn);
+
+  if (ev === 'data') {
+    // Start flowing on next tick if stream isn't explicitly paused
+    if (this._readableState.flowing !== false) this.resume();
+  } else if (ev === 'readable') {
+    var state = this._readableState;
+    if (!state.endEmitted && !state.readableListening) {
+      state.readableListening = state.needReadable = true;
+      state.emittedReadable = false;
+      if (!state.reading) {
+        processNextTick(nReadingNextTick, this);
+      } else if (state.length) {
+        emitReadable(this);
+      }
+    }
+  }
+
+  return res;
+};
+Readable.prototype.addListener = Readable.prototype.on;
+
+function nReadingNextTick(self) {
+  debug('readable nexttick read 0');
+  self.read(0);
+}
+
+// pause() and resume() are remnants of the legacy readable stream API
+// If the user uses them, then switch into old mode.
+Readable.prototype.resume = function () {
+  var state = this._readableState;
+  if (!state.flowing) {
+    debug('resume');
+    state.flowing = true;
+    resume(this, state);
+  }
+  return this;
+};
+
+function resume(stream, state) {
+  if (!state.resumeScheduled) {
+    state.resumeScheduled = true;
+    processNextTick(resume_, stream, state);
+  }
+}
+
+function resume_(stream, state) {
+  if (!state.reading) {
+    debug('resume read 0');
+    stream.read(0);
+  }
+
+  state.resumeScheduled = false;
+  state.awaitDrain = 0;
+  stream.emit('resume');
+  flow(stream);
+  if (state.flowing && !state.reading) stream.read(0);
+}
+
+Readable.prototype.pause = function () {
+  debug('call pause flowing=%j', this._readableState.flowing);
+  if (false !== this._readableState.flowing) {
+    debug('pause');
+    this._readableState.flowing = false;
+    this.emit('pause');
+  }
+  return this;
+};
+
+function flow(stream) {
+  var state = stream._readableState;
+  debug('flow', state.flowing);
+  while (state.flowing && stream.read() !== null) {}
+}
+
+// wrap an old-style stream as the async data source.
+// This is *not* part of the readable stream interface.
+// It is an ugly unfortunate mess of history.
+Readable.prototype.wrap = function (stream) {
+  var _this = this;
+
+  var state = this._readableState;
+  var paused = false;
+
+  stream.on('end', function () {
+    debug('wrapped end');
+    if (state.decoder && !state.ended) {
+      var chunk = state.decoder.end();
+      if (chunk && chunk.length) _this.push(chunk);
+    }
+
+    _this.push(null);
+  });
+
+  stream.on('data', function (chunk) {
+    debug('wrapped data');
+    if (state.decoder) chunk = state.decoder.write(chunk);
+
+    // don't skip over falsy values in objectMode
+    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
+
+    var ret = _this.push(chunk);
+    if (!ret) {
+      paused = true;
+      stream.pause();
+    }
+  });
+
+  // proxy all the other methods.
+  // important when wrapping filters and duplexes.
+  for (var i in stream) {
+    if (this[i] === undefined && typeof stream[i] === 'function') {
+      this[i] = function (method) {
+        return function () {
+          return stream[method].apply(stream, arguments);
+        };
+      }(i);
+    }
+  }
+
+  // proxy certain important events.
+  for (var n = 0; n < kProxyEvents.length; n++) {
+    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
+  }
+
+  // when we try to consume some more bytes, simply unpause the
+  // underlying stream.
+  this._read = function (n) {
+    debug('wrapped _read', n);
+    if (paused) {
+      paused = false;
+      stream.resume();
+    }
+  };
+
+  return this;
+};
+
+// exposed for testing purposes only.
+Readable._fromList = fromList;
+
+// Pluck off n bytes from an array of buffers.
+// Length is the combined lengths of all the buffers in the list.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function fromList(n, state) {
+  // nothing buffered
+  if (state.length === 0) return null;
+
+  var ret;
+  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
+    // read it all, truncate the list
+    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
+    state.buffer.clear();
+  } else {
+    // read part of list
+    ret = fromListPartial(n, state.buffer, state.decoder);
+  }
+
+  return ret;
+}
+
+// Extracts only enough buffered data to satisfy the amount requested.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function fromListPartial(n, list, hasStrings) {
+  var ret;
+  if (n < list.head.data.length) {
+    // slice is the same for buffers and strings
+    ret = list.head.data.slice(0, n);
+    list.head.data = list.head.data.slice(n);
+  } else if (n === list.head.data.length) {
+    // first chunk is a perfect match
+    ret = list.shift();
+  } else {
+    // result spans more than one buffer
+    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
+  }
+  return ret;
+}
+
+// Copies a specified amount of characters from the list of buffered data
+// chunks.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function copyFromBufferString(n, list) {
+  var p = list.head;
+  var c = 1;
+  var ret = p.data;
+  n -= ret.length;
+  while (p = p.next) {
+    var str = p.data;
+    var nb = n > str.length ? str.length : n;
+    if (nb === str.length) ret += str;else ret += str.slice(0, n);
+    n -= nb;
+    if (n === 0) {
+      if (nb === str.length) {
+        ++c;
+        if (p.next) list.head = p.next;else list.head = list.tail = null;
+      } else {
+        list.head = p;
+        p.data = str.slice(nb);
+      }
+      break;
+    }
+    ++c;
+  }
+  list.length -= c;
+  return ret;
+}
+
+// Copies a specified amount of bytes from the list of buffered data chunks.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function copyFromBuffer(n, list) {
+  var ret = Buffer.allocUnsafe(n);
+  var p = list.head;
+  var c = 1;
+  p.data.copy(ret);
+  n -= p.data.length;
+  while (p = p.next) {
+    var buf = p.data;
+    var nb = n > buf.length ? buf.length : n;
+    buf.copy(ret, ret.length - n, 0, nb);
+    n -= nb;
+    if (n === 0) {
+      if (nb === buf.length) {
+        ++c;
+        if (p.next) list.head = p.next;else list.head = list.tail = null;
+      } else {
+        list.head = p;
+        p.data = buf.slice(nb);
+      }
+      break;
+    }
+    ++c;
+  }
+  list.length -= c;
+  return ret;
+}
+
+function endReadable(stream) {
+  var state = stream._readableState;
+
+  // If we get here before consuming all the bytes, then that is a
+  // bug in node.  Should never happen.
+  if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
+
+  if (!state.endEmitted) {
+    state.ended = true;
+    processNextTick(endReadableNT, state, stream);
+  }
+}
+
+function endReadableNT(state, stream) {
+  // Check that we didn't get one last unshift.
+  if (!state.endEmitted && state.length === 0) {
+    state.endEmitted = true;
+    stream.readable = false;
+    stream.emit('end');
+  }
+}
+
+function forEach(xs, f) {
+  for (var i = 0, l = xs.length; i < l; i++) {
+    f(xs[i], i);
+  }
+}
+
+function indexOf(xs, x) {
+  for (var i = 0, l = xs.length; i < l; i++) {
+    if (xs[i] === x) return i;
+  }
+  return -1;
+}
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7), __webpack_require__(11)))
+
+/***/ }),
+/* 84 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(31).EventEmitter;
+
+
+/***/ }),
+/* 85 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/*<replacement>*/
+
+var processNextTick = __webpack_require__(32).nextTick;
+/*</replacement>*/
+
+// undocumented cb() API, needed for core, not for public API
+function destroy(err, cb) {
+  var _this = this;
+
+  var readableDestroyed = this._readableState && this._readableState.destroyed;
+  var writableDestroyed = this._writableState && this._writableState.destroyed;
+
+  if (readableDestroyed || writableDestroyed) {
+    if (cb) {
+      cb(err);
+    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
+      processNextTick(emitErrorNT, this, err);
+    }
+    return this;
+  }
+
+  // we set destroyed to true before firing error callbacks in order
+  // to make it re-entrance safe in case destroy() is called within callbacks
+
+  if (this._readableState) {
+    this._readableState.destroyed = true;
+  }
+
+  // if this is a duplex stream mark the writable part as destroyed as well
+  if (this._writableState) {
+    this._writableState.destroyed = true;
+  }
+
+  this._destroy(err || null, function (err) {
+    if (!cb && err) {
+      processNextTick(emitErrorNT, _this, err);
+      if (_this._writableState) {
+        _this._writableState.errorEmitted = true;
+      }
+    } else if (cb) {
+      cb(err);
+    }
+  });
+
+  return this;
+}
+
+function undestroy() {
+  if (this._readableState) {
+    this._readableState.destroyed = false;
+    this._readableState.reading = false;
+    this._readableState.ended = false;
+    this._readableState.endEmitted = false;
+  }
+
+  if (this._writableState) {
+    this._writableState.destroyed = false;
+    this._writableState.ended = false;
+    this._writableState.ending = false;
+    this._writableState.finished = false;
+    this._writableState.errorEmitted = false;
+  }
+}
+
+function emitErrorNT(self, err) {
+  self.emit('error', err);
+}
+
+module.exports = {
+  destroy: destroy,
+  undestroy: undestroy
+};
+
+/***/ }),
+/* 86 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// a transform stream is a readable/writable stream where you do
+// something with the data.  Sometimes it's called a "filter",
+// but that's not a great name for it, since that implies a thing where
+// some bits pass through, and others are simply ignored.  (That would
+// be a valid example of a transform, of course.)
+//
+// While the output is causally related to the input, it's not a
+// necessarily symmetric or synchronous transformation.  For example,
+// a zlib stream might take multiple plain-text writes(), and then
+// emit a single compressed chunk some time in the future.
+//
+// Here's how this works:
+//
+// The Transform stream has all the aspects of the readable and writable
+// stream classes.  When you write(chunk), that calls _write(chunk,cb)
+// internally, and returns false if there's a lot of pending writes
+// buffered up.  When you call read(), that calls _read(n) until
+// there's enough pending readable data buffered up.
+//
+// In a transform stream, the written data is placed in a buffer.  When
+// _read(n) is called, it transforms the queued up data, calling the
+// buffered _write cb's as it consumes chunks.  If consuming a single
+// written chunk would result in multiple output chunks, then the first
+// outputted bit calls the readcb, and subsequent chunks just go into
+// the read buffer, and will cause it to emit 'readable' if necessary.
+//
+// This way, back-pressure is actually determined by the reading side,
+// since _read has to be called to start processing a new chunk.  However,
+// a pathological inflate type of transform can cause excessive buffering
+// here.  For example, imagine a stream where every byte of input is
+// interpreted as an integer from 0-255, and then results in that many
+// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in
+// 1kb of data being output.  In this case, you could write a very small
+// amount of input, and end up with a very large amount of output.  In
+// such a pathological inflating mechanism, there'd be no way to tell
+// the system to stop doing the transform.  A single 4MB write could
+// cause the system to run out of memory.
+//
+// However, even in such a pathological case, only a single written chunk
+// would be consumed, and then the rest would wait (un-transformed) until
+// the results of the previous transformed chunk were consumed.
+
+
+
+module.exports = Transform;
+
+var Duplex = __webpack_require__(16);
+
+/*<replacement>*/
+var util = __webpack_require__(25);
+util.inherits = __webpack_require__(21);
+/*</replacement>*/
+
+util.inherits(Transform, Duplex);
+
+function afterTransform(er, data) {
+  var ts = this._transformState;
+  ts.transforming = false;
+
+  var cb = ts.writecb;
+
+  if (!cb) {
+    return this.emit('error', new Error('write callback called multiple times'));
+  }
+
+  ts.writechunk = null;
+  ts.writecb = null;
+
+  if (data != null) // single equals check for both `null` and `undefined`
+    this.push(data);
+
+  cb(er);
+
+  var rs = this._readableState;
+  rs.reading = false;
+  if (rs.needReadable || rs.length < rs.highWaterMark) {
+    this._read(rs.highWaterMark);
+  }
+}
+
+function Transform(options) {
+  if (!(this instanceof Transform)) return new Transform(options);
+
+  Duplex.call(this, options);
+
+  this._transformState = {
+    afterTransform: afterTransform.bind(this),
+    needTransform: false,
+    transforming: false,
+    writecb: null,
+    writechunk: null,
+    writeencoding: null
+  };
+
+  // start out asking for a readable event once data is transformed.
+  this._readableState.needReadable = true;
+
+  // we have implemented the _read method, and done the other things
+  // that Readable wants before the first _read call, so unset the
+  // sync guard flag.
+  this._readableState.sync = false;
+
+  if (options) {
+    if (typeof options.transform === 'function') this._transform = options.transform;
+
+    if (typeof options.flush === 'function') this._flush = options.flush;
+  }
+
+  // When the writable side finishes, then flush out anything remaining.
+  this.on('prefinish', prefinish);
+}
+
+function prefinish() {
+  var _this = this;
+
+  if (typeof this._flush === 'function') {
+    this._flush(function (er, data) {
+      done(_this, er, data);
+    });
+  } else {
+    done(this, null, null);
+  }
+}
+
+Transform.prototype.push = function (chunk, encoding) {
+  this._transformState.needTransform = false;
+  return Duplex.prototype.push.call(this, chunk, encoding);
+};
+
+// This is the part where you do stuff!
+// override this function in implementation classes.
+// 'chunk' is an input chunk.
+//
+// Call `push(newChunk)` to pass along transformed output
+// to the readable side.  You may call 'push' zero or more times.
+//
+// Call `cb(err)` when you are done with this chunk.  If you pass
+// an error, then that'll put the hurt on the whole operation.  If you
+// never call cb(), then you'll never get another chunk.
+Transform.prototype._transform = function (chunk, encoding, cb) {
+  throw new Error('_transform() is not implemented');
+};
+
+Transform.prototype._write = function (chunk, encoding, cb) {
+  var ts = this._transformState;
+  ts.writecb = cb;
+  ts.writechunk = chunk;
+  ts.writeencoding = encoding;
+  if (!ts.transforming) {
+    var rs = this._readableState;
+    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
+  }
+};
+
+// Doesn't matter what the args are here.
+// _transform does all the work.
+// That we got here means that the readable side wants more data.
+Transform.prototype._read = function (n) {
+  var ts = this._transformState;
+
+  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
+    ts.transforming = true;
+    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
+  } else {
+    // mark that we need a transform, so that any data that comes in
+    // will get processed, now that we've asked for it.
+    ts.needTransform = true;
+  }
+};
+
+Transform.prototype._destroy = function (err, cb) {
+  var _this2 = this;
+
+  Duplex.prototype._destroy.call(this, err, function (err2) {
+    cb(err2);
+    _this2.emit('close');
+  });
+};
+
+function done(stream, er, data) {
+  if (er) return stream.emit('error', er);
+
+  if (data != null) // single equals check for both `null` and `undefined`
+    stream.push(data);
+
+  // if there's nothing in the write buffer, then that means
+  // that nothing more will ever be provided
+  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
+
+  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
+
+  return stream.push(null);
+}
+
+/***/ }),
+/* 87 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+
+/*
+PDFReference - represents a reference to another object in the PDF object heirarchy
+By Devon Govett
+ */
+
+(function() {
+  var PDFObject, PDFReference, stream, zlib,
+    bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  zlib = __webpack_require__(48);
+
+  stream = __webpack_require__(15);
+
+  PDFReference = (function(superClass) {
+    extend(PDFReference, superClass);
+
+    function PDFReference(document, id, data) {
+      this.document = document;
+      this.id = id;
+      this.data = data != null ? data : {};
+      this.finalize = bind(this.finalize, this);
+      PDFReference.__super__.constructor.call(this, {
+        decodeStrings: false
+      });
+      this.gen = 0;
+      this.deflate = null;
+      this.compress = this.document.compress && !this.data.Filter;
+      this.uncompressedLength = 0;
+      this.chunks = [];
+    }
+
+    PDFReference.prototype.initDeflate = function() {
+      this.data.Filter = 'FlateDecode';
+      this.deflate = zlib.createDeflate();
+      this.deflate.on('data', (function(_this) {
+        return function(chunk) {
+          _this.chunks.push(chunk);
+          return _this.data.Length += chunk.length;
+        };
+      })(this));
+      return this.deflate.on('end', this.finalize);
+    };
+
+    PDFReference.prototype._write = function(chunk, encoding, callback) {
+      var base;
+      if (!Buffer.isBuffer(chunk)) {
+        chunk = new Buffer(chunk + '\n', 'binary');
+      }
+      this.uncompressedLength += chunk.length;
+      if ((base = this.data).Length == null) {
+        base.Length = 0;
+      }
+      if (this.compress) {
+        if (!this.deflate) {
+          this.initDeflate();
+        }
+        this.deflate.write(chunk);
+      } else {
+        this.chunks.push(chunk);
+        this.data.Length += chunk.length;
+      }
+      return callback();
+    };
+
+    PDFReference.prototype.end = function(chunk) {
+      PDFReference.__super__.end.apply(this, arguments);
+      if (this.deflate) {
+        return this.deflate.end();
+      } else {
+        return this.finalize();
+      }
+    };
+
+    PDFReference.prototype.finalize = function() {
+      var chunk, i, len, ref;
+      this.offset = this.document._offset;
+      this.document._write(this.id + " " + this.gen + " obj");
+      this.document._write(PDFObject.convert(this.data));
+      if (this.chunks.length) {
+        this.document._write('stream');
+        ref = this.chunks;
+        for (i = 0, len = ref.length; i < len; i++) {
+          chunk = ref[i];
+          this.document._write(chunk);
+        }
+        this.chunks.length = 0;
+        this.document._write('\nendstream');
+      }
+      this.document._write('endobj');
+      return this.document._refEnd(this);
+    };
+
+    PDFReference.prototype.toString = function() {
+      return this.id + " " + this.gen + " R";
+    };
+
+    return PDFReference;
+
+  })(stream.Writable);
+
+  module.exports = PDFReference;
+
+  PDFObject = __webpack_require__(26);
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 88 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {
+
+// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
+// original notice:
+
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * @license  MIT
+ */
+function compare(a, b) {
+  if (a === b) {
+    return 0;
+  }
+
+  var x = a.length;
+  var y = b.length;
+
+  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
+    if (a[i] !== b[i]) {
+      x = a[i];
+      y = b[i];
+      break;
+    }
+  }
+
+  if (x < y) {
+    return -1;
+  }
+  if (y < x) {
+    return 1;
+  }
+  return 0;
+}
+function isBuffer(b) {
+  if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
+    return global.Buffer.isBuffer(b);
+  }
+  return !!(b != null && b._isBuffer);
+}
+
+// based on node assert, original notice:
+
+// http://wiki.commonjs.org/wiki/Unit_Testing/1.0
+//
+// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
+//
+// Originally from narwhal.js (http://narwhaljs.org)
+// Copyright (c) 2009 Thomas Robinson <280north.com>
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the 'Software'), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+var util = __webpack_require__(49);
+var hasOwn = Object.prototype.hasOwnProperty;
+var pSlice = Array.prototype.slice;
+var functionsHaveNames = (function () {
+  return function foo() {}.name === 'foo';
+}());
+function pToString (obj) {
+  return Object.prototype.toString.call(obj);
+}
+function isView(arrbuf) {
+  if (isBuffer(arrbuf)) {
+    return false;
+  }
+  if (typeof global.ArrayBuffer !== 'function') {
+    return false;
+  }
+  if (typeof ArrayBuffer.isView === 'function') {
+    return ArrayBuffer.isView(arrbuf);
+  }
+  if (!arrbuf) {
+    return false;
+  }
+  if (arrbuf instanceof DataView) {
+    return true;
+  }
+  if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
+    return true;
+  }
+  return false;
+}
+// 1. The assert module provides functions that throw
+// AssertionError's when particular conditions are not met. The
+// assert module must conform to the following interface.
+
+var assert = module.exports = ok;
+
+// 2. The AssertionError is defined in assert.
+// new assert.AssertionError({ message: message,
+//                             actual: actual,
+//                             expected: expected })
+
+var regex = /\s*function\s+([^\(\s]*)\s*/;
+// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
+function getName(func) {
+  if (!util.isFunction(func)) {
+    return;
+  }
+  if (functionsHaveNames) {
+    return func.name;
+  }
+  var str = func.toString();
+  var match = str.match(regex);
+  return match && match[1];
+}
+assert.AssertionError = function AssertionError(options) {
+  this.name = 'AssertionError';
+  this.actual = options.actual;
+  this.expected = options.expected;
+  this.operator = options.operator;
+  if (options.message) {
+    this.message = options.message;
+    this.generatedMessage = false;
+  } else {
+    this.message = getMessage(this);
+    this.generatedMessage = true;
+  }
+  var stackStartFunction = options.stackStartFunction || fail;
+  if (Error.captureStackTrace) {
+    Error.captureStackTrace(this, stackStartFunction);
+  } else {
+    // non v8 browsers so we can have a stacktrace
+    var err = new Error();
+    if (err.stack) {
+      var out = err.stack;
+
+      // try to strip useless frames
+      var fn_name = getName(stackStartFunction);
+      var idx = out.indexOf('\n' + fn_name);
+      if (idx >= 0) {
+        // once we have located the function frame
+        // we need to strip out everything before it (and its line)
+        var next_line = out.indexOf('\n', idx + 1);
+        out = out.substring(next_line + 1);
+      }
+
+      this.stack = out;
+    }
+  }
+};
+
+// assert.AssertionError instanceof Error
+util.inherits(assert.AssertionError, Error);
+
+function truncate(s, n) {
+  if (typeof s === 'string') {
+    return s.length < n ? s : s.slice(0, n);
+  } else {
+    return s;
+  }
+}
+function inspect(something) {
+  if (functionsHaveNames || !util.isFunction(something)) {
+    return util.inspect(something);
+  }
+  var rawname = getName(something);
+  var name = rawname ? ': ' + rawname : '';
+  return '[Function' +  name + ']';
+}
+function getMessage(self) {
+  return truncate(inspect(self.actual), 128) + ' ' +
+         self.operator + ' ' +
+         truncate(inspect(self.expected), 128);
+}
+
+// At present only the three keys mentioned above are used and
+// understood by the spec. Implementations or sub modules can pass
+// other keys to the AssertionError's constructor - they will be
+// ignored.
+
+// 3. All of the following functions must throw an AssertionError
+// when a corresponding condition is not met, with a message that
+// may be undefined if not provided.  All assertion methods provide
+// both the actual and expected values to the assertion error for
+// display purposes.
+
+function fail(actual, expected, message, operator, stackStartFunction) {
+  throw new assert.AssertionError({
+    message: message,
+    actual: actual,
+    expected: expected,
+    operator: operator,
+    stackStartFunction: stackStartFunction
+  });
+}
+
+// EXTENSION! allows for well behaved errors defined elsewhere.
+assert.fail = fail;
+
+// 4. Pure assertion tests whether a value is truthy, as determined
+// by !!guard.
+// assert.ok(guard, message_opt);
+// This statement is equivalent to assert.equal(true, !!guard,
+// message_opt);. To test strictly for the value true, use
+// assert.strictEqual(true, guard, message_opt);.
+
+function ok(value, message) {
+  if (!value) fail(value, true, message, '==', assert.ok);
+}
+assert.ok = ok;
+
+// 5. The equality assertion tests shallow, coercive equality with
+// ==.
+// assert.equal(actual, expected, message_opt);
+
+assert.equal = function equal(actual, expected, message) {
+  if (actual != expected) fail(actual, expected, message, '==', assert.equal);
+};
+
+// 6. The non-equality assertion tests for whether two objects are not equal
+// with != assert.notEqual(actual, expected, message_opt);
+
+assert.notEqual = function notEqual(actual, expected, message) {
+  if (actual == expected) {
+    fail(actual, expected, message, '!=', assert.notEqual);
+  }
+};
+
+// 7. The equivalence assertion tests a deep equality relation.
+// assert.deepEqual(actual, expected, message_opt);
+
+assert.deepEqual = function deepEqual(actual, expected, message) {
+  if (!_deepEqual(actual, expected, false)) {
+    fail(actual, expected, message, 'deepEqual', assert.deepEqual);
+  }
+};
+
+assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
+  if (!_deepEqual(actual, expected, true)) {
+    fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
+  }
+};
+
+function _deepEqual(actual, expected, strict, memos) {
+  // 7.1. All identical values are equivalent, as determined by ===.
+  if (actual === expected) {
+    return true;
+  } else if (isBuffer(actual) && isBuffer(expected)) {
+    return compare(actual, expected) === 0;
+
+  // 7.2. If the expected value is a Date object, the actual value is
+  // equivalent if it is also a Date object that refers to the same time.
+  } else if (util.isDate(actual) && util.isDate(expected)) {
+    return actual.getTime() === expected.getTime();
+
+  // 7.3 If the expected value is a RegExp object, the actual value is
+  // equivalent if it is also a RegExp object with the same source and
+  // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
+  } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
+    return actual.source === expected.source &&
+           actual.global === expected.global &&
+           actual.multiline === expected.multiline &&
+           actual.lastIndex === expected.lastIndex &&
+           actual.ignoreCase === expected.ignoreCase;
+
+  // 7.4. Other pairs that do not both pass typeof value == 'object',
+  // equivalence is determined by ==.
+  } else if ((actual === null || typeof actual !== 'object') &&
+             (expected === null || typeof expected !== 'object')) {
+    return strict ? actual === expected : actual == expected;
+
+  // If both values are instances of typed arrays, wrap their underlying
+  // ArrayBuffers in a Buffer each to increase performance
+  // This optimization requires the arrays to have the same type as checked by
+  // Object.prototype.toString (aka pToString). Never perform binary
+  // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
+  // bit patterns are not identical.
+  } else if (isView(actual) && isView(expected) &&
+             pToString(actual) === pToString(expected) &&
+             !(actual instanceof Float32Array ||
+               actual instanceof Float64Array)) {
+    return compare(new Uint8Array(actual.buffer),
+                   new Uint8Array(expected.buffer)) === 0;
+
+  // 7.5 For all other Object pairs, including Array objects, equivalence is
+  // determined by having the same number of owned properties (as verified
+  // with Object.prototype.hasOwnProperty.call), the same set of keys
+  // (although not necessarily the same order), equivalent values for every
+  // corresponding key, and an identical 'prototype' property. Note: this
+  // accounts for both named and indexed properties on Arrays.
+  } else if (isBuffer(actual) !== isBuffer(expected)) {
+    return false;
+  } else {
+    memos = memos || {actual: [], expected: []};
+
+    var actualIndex = memos.actual.indexOf(actual);
+    if (actualIndex !== -1) {
+      if (actualIndex === memos.expected.indexOf(expected)) {
+        return true;
+      }
+    }
+
+    memos.actual.push(actual);
+    memos.expected.push(expected);
+
+    return objEquiv(actual, expected, strict, memos);
+  }
+}
+
+function isArguments(object) {
+  return Object.prototype.toString.call(object) == '[object Arguments]';
+}
+
+function objEquiv(a, b, strict, actualVisitedObjects) {
+  if (a === null || a === undefined || b === null || b === undefined)
+    return false;
+  // if one is a primitive, the other must be same
+  if (util.isPrimitive(a) || util.isPrimitive(b))
+    return a === b;
+  if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
+    return false;
+  var aIsArgs = isArguments(a);
+  var bIsArgs = isArguments(b);
+  if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
+    return false;
+  if (aIsArgs) {
+    a = pSlice.call(a);
+    b = pSlice.call(b);
+    return _deepEqual(a, b, strict);
+  }
+  var ka = objectKeys(a);
+  var kb = objectKeys(b);
+  var key, i;
+  // having the same number of owned properties (keys incorporates
+  // hasOwnProperty)
+  if (ka.length !== kb.length)
+    return false;
+  //the same set of keys (although not necessarily the same order),
+  ka.sort();
+  kb.sort();
+  //~~~cheap key test
+  for (i = ka.length - 1; i >= 0; i--) {
+    if (ka[i] !== kb[i])
+      return false;
+  }
+  //equivalent values for every corresponding key, and
+  //~~~possibly expensive deep test
+  for (i = ka.length - 1; i >= 0; i--) {
+    key = ka[i];
+    if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
+      return false;
+  }
+  return true;
+}
+
+// 8. The non-equivalence assertion tests for any deep inequality.
+// assert.notDeepEqual(actual, expected, message_opt);
+
+assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
+  if (_deepEqual(actual, expected, false)) {
+    fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
+  }
+};
+
+assert.notDeepStrictEqual = notDeepStrictEqual;
+function notDeepStrictEqual(actual, expected, message) {
+  if (_deepEqual(actual, expected, true)) {
+    fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
+  }
+}
+
+
+// 9. The strict equality assertion tests strict equality, as determined by ===.
+// assert.strictEqual(actual, expected, message_opt);
+
+assert.strictEqual = function strictEqual(actual, expected, message) {
+  if (actual !== expected) {
+    fail(actual, expected, message, '===', assert.strictEqual);
+  }
+};
+
+// 10. The strict non-equality assertion tests for strict inequality, as
+// determined by !==.  assert.notStrictEqual(actual, expected, message_opt);
+
+assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
+  if (actual === expected) {
+    fail(actual, expected, message, '!==', assert.notStrictEqual);
+  }
+};
+
+function expectedException(actual, expected) {
+  if (!actual || !expected) {
+    return false;
+  }
+
+  if (Object.prototype.toString.call(expected) == '[object RegExp]') {
+    return expected.test(actual);
+  }
+
+  try {
+    if (actual instanceof expected) {
+      return true;
+    }
+  } catch (e) {
+    // Ignore.  The instanceof check doesn't work for arrow functions.
+  }
+
+  if (Error.isPrototypeOf(expected)) {
+    return false;
+  }
+
+  return expected.call({}, actual) === true;
+}
+
+function _tryBlock(block) {
+  var error;
+  try {
+    block();
+  } catch (e) {
+    error = e;
+  }
+  return error;
+}
+
+function _throws(shouldThrow, block, expected, message) {
+  var actual;
+
+  if (typeof block !== 'function') {
+    throw new TypeError('"block" argument must be a function');
+  }
+
+  if (typeof expected === 'string') {
+    message = expected;
+    expected = null;
+  }
+
+  actual = _tryBlock(block);
+
+  message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
+            (message ? ' ' + message : '.');
+
+  if (shouldThrow && !actual) {
+    fail(actual, expected, 'Missing expected exception' + message);
+  }
+
+  var userProvidedMessage = typeof message === 'string';
+  var isUnwantedException = !shouldThrow && util.isError(actual);
+  var isUnexpectedException = !shouldThrow && actual && !expected;
+
+  if ((isUnwantedException &&
+      userProvidedMessage &&
+      expectedException(actual, expected)) ||
+      isUnexpectedException) {
+    fail(actual, expected, 'Got unwanted exception' + message);
+  }
+
+  if ((shouldThrow && actual && expected &&
+      !expectedException(actual, expected)) || (!shouldThrow && actual)) {
+    throw actual;
+  }
+}
+
+// 11. Expected to throw an error:
+// assert.throws(block, Error_opt, message_opt);
+
+assert.throws = function(block, /*optional*/error, /*optional*/message) {
+  _throws(true, block, error, message);
+};
+
+// EXTENSION! This is annoying to write outside this module.
+assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
+  _throws(false, block, error, message);
+};
+
+assert.ifError = function(err) { if (err) throw err; };
+
+var objectKeys = Object.keys || function (obj) {
+  var keys = [];
+  for (var key in obj) {
+    if (hasOwn.call(obj, key)) keys.push(key);
+  }
+  return keys;
+};
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
+
+/***/ }),
+/* 89 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Note: adler32 takes 12% for level 0 and 2% for level 6.
+// It isn't worth it to make additional optimizations as in original.
+// Small size is preferable.
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+function adler32(adler, buf, len, pos) {
+  var s1 = (adler & 0xffff) |0,
+      s2 = ((adler >>> 16) & 0xffff) |0,
+      n = 0;
+
+  while (len !== 0) {
+    // Set limit ~ twice less than 5552, to keep
+    // s2 in 31-bits, because we force signed ints.
+    // in other case %= will fail.
+    n = len > 2000 ? 2000 : len;
+    len -= n;
+
+    do {
+      s1 = (s1 + buf[pos++]) |0;
+      s2 = (s2 + s1) |0;
+    } while (--n);
+
+    s1 %= 65521;
+    s2 %= 65521;
+  }
+
+  return (s1 | (s2 << 16)) |0;
+}
+
+
+module.exports = adler32;
+
+
+/***/ }),
+/* 90 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Note: we can't get significant speed boost here.
+// So write code to minimize size - no pregenerated tables
+// and array tools dependencies.
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+// Use ordinary array, since untyped makes no boost here
+function makeTable() {
+  var c, table = [];
+
+  for (var n = 0; n < 256; n++) {
+    c = n;
+    for (var k = 0; k < 8; k++) {
+      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
+    }
+    table[n] = c;
+  }
+
+  return table;
+}
+
+// Create table on load. Just 255 signed longs. Not a problem.
+var crcTable = makeTable();
+
+
+function crc32(crc, buf, len, pos) {
+  var t = crcTable,
+      end = pos + len;
+
+  crc ^= -1;
+
+  for (var i = pos; i < end; i++) {
+    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
+  }
+
+  return (crc ^ (-1)); // >>> 0;
+}
+
+
+module.exports = crc32;
+
+
+/***/ }),
+/* 91 */
+/***/ (function(module, exports) {
+
+module.exports = [["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31,"　"],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]]
+
+/***/ }),
+/* 92 */
+/***/ (function(module, exports) {
+
+module.exports = [["0","\u0000",127],["a140","　，、。．‧；：？！︰…‥﹐﹑﹒·﹔﹕﹖﹗｜–︱—︳╴︴﹏（）︵︶｛｝︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯￣＿ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢",4,"～∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣／"],["a240","＼∕﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳０",9,"Ⅰ",9,"〡",8,"十卄卅Ａ",25,"ａ",21],["a340","ｗｘｙｚΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]
+
+/***/ }),
+/* 93 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var ArrayT, NumberT, utils;
+
+  NumberT = __webpack_require__(22).Number;
+
+  utils = __webpack_require__(12);
+
+  ArrayT = (function() {
+    function ArrayT(type, length, lengthType) {
+      this.type = type;
+      this.length = length;
+      this.lengthType = lengthType != null ? lengthType : 'count';
+    }
+
+    ArrayT.prototype.decode = function(stream, parent) {
+      var ctx, i, length, pos, res, target, _i;
+      pos = stream.pos;
+      res = [];
+      ctx = parent;
+      if (this.length != null) {
+        length = utils.resolveLength(this.length, stream, parent);
+      }
+      if (this.length instanceof NumberT) {
+        Object.defineProperties(res, {
+          parent: {
+            value: parent
+          },
+          _startOffset: {
+            value: pos
+          },
+          _currentOffset: {
+            value: 0,
+            writable: true
+          },
+          _length: {
+            value: length
+          }
+        });
+        ctx = res;
+      }
+      if ((length == null) || this.lengthType === 'bytes') {
+        target = length != null ? stream.pos + length : (parent != null ? parent._length : void 0) ? parent._startOffset + parent._length : stream.length;
+        while (stream.pos < target) {
+          res.push(this.type.decode(stream, ctx));
+        }
+      } else {
+        for (i = _i = 0; _i < length; i = _i += 1) {
+          res.push(this.type.decode(stream, ctx));
+        }
+      }
+      return res;
+    };
+
+    ArrayT.prototype.size = function(array, ctx) {
+      var item, size, _i, _len;
+      if (!array) {
+        return this.type.size(null, ctx) * utils.resolveLength(this.length, null, ctx);
+      }
+      size = 0;
+      if (this.length instanceof NumberT) {
+        size += this.length.size();
+        ctx = {
+          parent: ctx
+        };
+      }
+      for (_i = 0, _len = array.length; _i < _len; _i++) {
+        item = array[_i];
+        size += this.type.size(item, ctx);
+      }
+      return size;
+    };
+
+    ArrayT.prototype.encode = function(stream, array, parent) {
+      var ctx, i, item, ptr, _i, _len;
+      ctx = parent;
+      if (this.length instanceof NumberT) {
+        ctx = {
+          pointers: [],
+          startOffset: stream.pos,
+          parent: parent
+        };
+        ctx.pointerOffset = stream.pos + this.size(array, ctx);
+        this.length.encode(stream, array.length);
+      }
+      for (_i = 0, _len = array.length; _i < _len; _i++) {
+        item = array[_i];
+        this.type.encode(stream, item, ctx);
+      }
+      if (this.length instanceof NumberT) {
+        i = 0;
+        while (i < ctx.pointers.length) {
+          ptr = ctx.pointers[i++];
+          ptr.type.encode(stream, ptr.val);
+        }
+      }
+    };
+
+    return ArrayT;
+
+  })();
+
+  module.exports = ArrayT;
+
+}).call(this);
+
+
+/***/ }),
+/* 94 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Struct, utils;
+
+  utils = __webpack_require__(12);
+
+  Struct = (function() {
+    function Struct(fields) {
+      this.fields = fields != null ? fields : {};
+    }
+
+    Struct.prototype.decode = function(stream, parent, length) {
+      var res, _ref;
+      if (length == null) {
+        length = 0;
+      }
+      res = this._setup(stream, parent, length);
+      this._parseFields(stream, res, this.fields);
+      if ((_ref = this.process) != null) {
+        _ref.call(res, stream);
+      }
+      return res;
+    };
+
+    Struct.prototype._setup = function(stream, parent, length) {
+      var res;
+      res = {};
+      Object.defineProperties(res, {
+        parent: {
+          value: parent
+        },
+        _startOffset: {
+          value: stream.pos
+        },
+        _currentOffset: {
+          value: 0,
+          writable: true
+        },
+        _length: {
+          value: length
+        }
+      });
+      return res;
+    };
+
+    Struct.prototype._parseFields = function(stream, res, fields) {
+      var key, type, val;
+      for (key in fields) {
+        type = fields[key];
+        if (typeof type === 'function') {
+          val = type.call(res, res);
+        } else {
+          val = type.decode(stream, res);
+        }
+        if (val !== void 0) {
+          if (val instanceof utils.PropertyDescriptor) {
+            Object.defineProperty(res, key, val);
+          } else {
+            res[key] = val;
+          }
+        }
+        res._currentOffset = stream.pos - res._startOffset;
+      }
+    };
+
+    Struct.prototype.size = function(val, parent, includePointers) {
+      var ctx, key, size, type, _ref;
+      if (val == null) {
+        val = {};
+      }
+      if (includePointers == null) {
+        includePointers = true;
+      }
+      ctx = {
+        parent: parent,
+        val: val,
+        pointerSize: 0
+      };
+      size = 0;
+      _ref = this.fields;
+      for (key in _ref) {
+        type = _ref[key];
+        if (type.size != null) {
+          size += type.size(val[key], ctx);
+        }
+      }
+      if (includePointers) {
+        size += ctx.pointerSize;
+      }
+      return size;
+    };
+
+    Struct.prototype.encode = function(stream, val, parent) {
+      var ctx, i, key, ptr, type, _ref, _ref1;
+      if ((_ref = this.preEncode) != null) {
+        _ref.call(val, stream);
+      }
+      ctx = {
+        pointers: [],
+        startOffset: stream.pos,
+        parent: parent,
+        val: val,
+        pointerSize: 0
+      };
+      ctx.pointerOffset = stream.pos + this.size(val, ctx, false);
+      _ref1 = this.fields;
+      for (key in _ref1) {
+        type = _ref1[key];
+        if (type.encode != null) {
+          type.encode(stream, val[key], ctx);
+        }
+      }
+      i = 0;
+      while (i < ctx.pointers.length) {
+        ptr = ctx.pointers[i++];
+        ptr.type.encode(stream, ptr.val, ptr.parent);
+      }
+    };
+
+    return Struct;
+
+  })();
+
+  module.exports = Struct;
+
+}).call(this);
+
+
+/***/ }),
+/* 95 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = !__webpack_require__(5) && !__webpack_require__(19)(function () {
+  return Object.defineProperty(__webpack_require__(96)('div'), 'a', { get: function () { return 7; } }).a != 7;
+});
+
+
+/***/ }),
+/* 96 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(9);
+var document = __webpack_require__(10).document;
+// typeof document.createElement is 'object' in old IE
+var is = isObject(document) && isObject(document.createElement);
+module.exports = function (it) {
+  return is ? document.createElement(it) : {};
+};
+
+
+/***/ }),
+/* 97 */
+/***/ (function(module, exports) {
+
+module.exports = function (it) {
+  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
+  return it;
+};
+
+
+/***/ }),
+/* 98 */
+/***/ (function(module, exports) {
+
+module.exports = function (done, value) {
+  return { value: value, done: !!done };
+};
+
+
+/***/ }),
+/* 99 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(13);
+
+
+/***/ }),
+/* 100 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var dP = __webpack_require__(6);
+var anObject = __webpack_require__(14);
+var getKeys = __webpack_require__(29);
+
+module.exports = __webpack_require__(5) ? Object.defineProperties : function defineProperties(O, Properties) {
+  anObject(O);
+  var keys = getKeys(Properties);
+  var length = keys.length;
+  var i = 0;
+  var P;
+  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
+  return O;
+};
+
+
+/***/ }),
+/* 101 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var has = __webpack_require__(18);
+var toIObject = __webpack_require__(17);
+var arrayIndexOf = __webpack_require__(204)(false);
+var IE_PROTO = __webpack_require__(64)('IE_PROTO');
+
+module.exports = function (object, names) {
+  var O = toIObject(object);
+  var i = 0;
+  var result = [];
+  var key;
+  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
+  // Don't enum bug & hidden keys
+  while (names.length > i) if (has(O, key = names[i++])) {
+    ~arrayIndexOf(result, key) || result.push(key);
+  }
+  return result;
+};
+
+
+/***/ }),
+/* 102 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toInteger = __webpack_require__(63);
+var max = Math.max;
+var min = Math.min;
+module.exports = function (index, length) {
+  index = toInteger(index);
+  return index < 0 ? max(index + length, 0) : min(index, length);
+};
+
+
+/***/ }),
+/* 103 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(215), __esModule: true };
+
+/***/ }),
+/* 104 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.2.2 IsArray(argument)
+var cof = __webpack_require__(55);
+module.exports = Array.isArray || function isArray(arg) {
+  return cof(arg) == 'Array';
+};
+
+
+/***/ }),
+/* 105 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
+var $keys = __webpack_require__(101);
+var hiddenKeys = __webpack_require__(66).concat('length', 'prototype');
+
+exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
+  return $keys(O, hiddenKeys);
+};
+
+
+/***/ }),
+/* 106 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+exports.default = function (instance, Constructor) {
+  if (!(instance instanceof Constructor)) {
+    throw new TypeError("Cannot call a class as a function");
+  }
+};
+
+/***/ }),
+/* 107 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _defineProperty = __webpack_require__(74);
+
+var _defineProperty2 = _interopRequireDefault(_defineProperty);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function () {
+  function defineProperties(target, props) {
+    for (var i = 0; i < props.length; i++) {
+      var descriptor = props[i];
+      descriptor.enumerable = descriptor.enumerable || false;
+      descriptor.configurable = true;
+      if ("value" in descriptor) descriptor.writable = true;
+      (0, _defineProperty2.default)(target, descriptor.key, descriptor);
+    }
+  }
+
+  return function (Constructor, protoProps, staticProps) {
+    if (protoProps) defineProperties(Constructor.prototype, protoProps);
+    if (staticProps) defineProperties(Constructor, staticProps);
+    return Constructor;
+  };
+}();
+
+/***/ }),
+/* 108 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var dP = __webpack_require__(6).f;
+var create = __webpack_require__(36);
+var redefineAll = __webpack_require__(109);
+var ctx = __webpack_require__(20);
+var anInstance = __webpack_require__(110);
+var forOf = __webpack_require__(41);
+var $iterDefine = __webpack_require__(61);
+var step = __webpack_require__(98);
+var setSpecies = __webpack_require__(228);
+var DESCRIPTORS = __webpack_require__(5);
+var fastKey = __webpack_require__(40).fastKey;
+var validate = __webpack_require__(75);
+var SIZE = DESCRIPTORS ? '_s' : 'size';
+
+var getEntry = function (that, key) {
+  // fast case
+  var index = fastKey(key);
+  var entry;
+  if (index !== 'F') return that._i[index];
+  // frozen object case
+  for (entry = that._f; entry; entry = entry.n) {
+    if (entry.k == key) return entry;
+  }
+};
+
+module.exports = {
+  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
+    var C = wrapper(function (that, iterable) {
+      anInstance(that, C, NAME, '_i');
+      that._t = NAME;         // collection type
+      that._i = create(null); // index
+      that._f = undefined;    // first entry
+      that._l = undefined;    // last entry
+      that[SIZE] = 0;         // size
+      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
+    });
+    redefineAll(C.prototype, {
+      // 23.1.3.1 Map.prototype.clear()
+      // 23.2.3.2 Set.prototype.clear()
+      clear: function clear() {
+        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
+          entry.r = true;
+          if (entry.p) entry.p = entry.p.n = undefined;
+          delete data[entry.i];
+        }
+        that._f = that._l = undefined;
+        that[SIZE] = 0;
+      },
+      // 23.1.3.3 Map.prototype.delete(key)
+      // 23.2.3.4 Set.prototype.delete(value)
+      'delete': function (key) {
+        var that = validate(this, NAME);
+        var entry = getEntry(that, key);
+        if (entry) {
+          var next = entry.n;
+          var prev = entry.p;
+          delete that._i[entry.i];
+          entry.r = true;
+          if (prev) prev.n = next;
+          if (next) next.p = prev;
+          if (that._f == entry) that._f = next;
+          if (that._l == entry) that._l = prev;
+          that[SIZE]--;
+        } return !!entry;
+      },
+      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+      forEach: function forEach(callbackfn /* , that = undefined */) {
+        validate(this, NAME);
+        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+        var entry;
+        while (entry = entry ? entry.n : this._f) {
+          f(entry.v, entry.k, this);
+          // revert to the last existing entry
+          while (entry && entry.r) entry = entry.p;
+        }
+      },
+      // 23.1.3.7 Map.prototype.has(key)
+      // 23.2.3.7 Set.prototype.has(value)
+      has: function has(key) {
+        return !!getEntry(validate(this, NAME), key);
+      }
+    });
+    if (DESCRIPTORS) dP(C.prototype, 'size', {
+      get: function () {
+        return validate(this, NAME)[SIZE];
+      }
+    });
+    return C;
+  },
+  def: function (that, key, value) {
+    var entry = getEntry(that, key);
+    var prev, index;
+    // change existing entry
+    if (entry) {
+      entry.v = value;
+    // create new entry
+    } else {
+      that._l = entry = {
+        i: index = fastKey(key, true), // <- index
+        k: key,                        // <- key
+        v: value,                      // <- value
+        p: prev = that._l,             // <- previous entry
+        n: undefined,                  // <- next entry
+        r: false                       // <- removed
+      };
+      if (!that._f) that._f = entry;
+      if (prev) prev.n = entry;
+      that[SIZE]++;
+      // add to index
+      if (index !== 'F') that._i[index] = entry;
+    } return that;
+  },
+  getEntry: getEntry,
+  setStrong: function (C, NAME, IS_MAP) {
+    // add .keys, .values, .entries, [@@iterator]
+    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+    $iterDefine(C, NAME, function (iterated, kind) {
+      this._t = validate(iterated, NAME); // target
+      this._k = kind;                     // kind
+      this._l = undefined;                // previous
+    }, function () {
+      var that = this;
+      var kind = that._k;
+      var entry = that._l;
+      // revert to the last existing entry
+      while (entry && entry.r) entry = entry.p;
+      // get next entry
+      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
+        // or finish the iteration
+        that._t = undefined;
+        return step(1);
+      }
+      // return step by kind
+      if (kind == 'keys') return step(0, entry.k);
+      if (kind == 'values') return step(0, entry.v);
+      return step(0, [entry.k, entry.v]);
+    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
+
+    // add [@@species], 23.1.2.2, 23.2.2.2
+    setSpecies(NAME);
+  }
+};
+
+
+/***/ }),
+/* 109 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var hide = __webpack_require__(13);
+module.exports = function (target, src, safe) {
+  for (var key in src) {
+    if (safe && target[key]) target[key] = src[key];
+    else hide(target, key, src[key]);
+  } return target;
+};
+
+
+/***/ }),
+/* 110 */
+/***/ (function(module, exports) {
+
+module.exports = function (it, Constructor, name, forbiddenField) {
+  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
+    throw TypeError(name + ': incorrect invocation!');
+  } return it;
+};
+
+
+/***/ }),
+/* 111 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// call something on iterator step with safe closing on error
+var anObject = __webpack_require__(14);
+module.exports = function (iterator, fn, value, entries) {
+  try {
+    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+  // 7.4.6 IteratorClose(iterator, completion)
+  } catch (e) {
+    var ret = iterator['return'];
+    if (ret !== undefined) anObject(ret.call(iterator));
+    throw e;
+  }
+};
+
+
+/***/ }),
+/* 112 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// check on default Array iterator
+var Iterators = __webpack_require__(23);
+var ITERATOR = __webpack_require__(4)('iterator');
+var ArrayProto = Array.prototype;
+
+module.exports = function (it) {
+  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+};
+
+
+/***/ }),
+/* 113 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var global = __webpack_require__(10);
+var $export = __webpack_require__(3);
+var meta = __webpack_require__(40);
+var fails = __webpack_require__(19);
+var hide = __webpack_require__(13);
+var redefineAll = __webpack_require__(109);
+var forOf = __webpack_require__(41);
+var anInstance = __webpack_require__(110);
+var isObject = __webpack_require__(9);
+var setToStringTag = __webpack_require__(39);
+var dP = __webpack_require__(6).f;
+var each = __webpack_require__(229)(0);
+var DESCRIPTORS = __webpack_require__(5);
+
+module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
+  var Base = global[NAME];
+  var C = Base;
+  var ADDER = IS_MAP ? 'set' : 'add';
+  var proto = C && C.prototype;
+  var O = {};
+  if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
+    new C().entries().next();
+  }))) {
+    // create collection constructor
+    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
+    redefineAll(C.prototype, methods);
+    meta.NEED = true;
+  } else {
+    C = wrapper(function (target, iterable) {
+      anInstance(target, C, NAME, '_c');
+      target._c = new Base();
+      if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);
+    });
+    each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {
+      var IS_ADDER = KEY == 'add' || KEY == 'set';
+      if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {
+        anInstance(this, C, KEY);
+        if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;
+        var result = this._c[KEY](a === 0 ? 0 : a, b);
+        return IS_ADDER ? this : result;
+      });
+    });
+    IS_WEAK || dP(C.prototype, 'size', {
+      get: function () {
+        return this._c.size;
+      }
+    });
+  }
+
+  setToStringTag(C, NAME);
+
+  O[NAME] = C;
+  $export($export.G + $export.W + $export.F, O);
+
+  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
+
+  return C;
+};
+
+
+/***/ }),
+/* 114 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var classof = __webpack_require__(68);
+var from = __webpack_require__(233);
+module.exports = function (NAME) {
+  return function toJSON() {
+    if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic");
+    return from(this);
+  };
+};
+
+
+/***/ }),
+/* 115 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// https://tc39.github.io/proposal-setmap-offrom/
+var $export = __webpack_require__(3);
+
+module.exports = function (COLLECTION) {
+  $export($export.S, COLLECTION, { of: function of() {
+    var length = arguments.length;
+    var A = new Array(length);
+    while (length--) A[length] = arguments[length];
+    return new this(A);
+  } });
+};
+
+
+/***/ }),
+/* 116 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// https://tc39.github.io/proposal-setmap-offrom/
+var $export = __webpack_require__(3);
+var aFunction = __webpack_require__(97);
+var ctx = __webpack_require__(20);
+var forOf = __webpack_require__(41);
+
+module.exports = function (COLLECTION) {
+  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
+    var mapFn = arguments[1];
+    var mapping, A, n, cb;
+    aFunction(this);
+    mapping = mapFn !== undefined;
+    if (mapping) aFunction(mapFn);
+    if (source == undefined) return new this();
+    A = [];
+    if (mapping) {
+      n = 0;
+      cb = ctx(mapFn, arguments[2], 2);
+      forOf(source, false, function (nextItem) {
+        A.push(cb(nextItem, n++));
+      });
+    } else {
+      forOf(source, false, A.push, A);
+    }
+    return new this(A);
+  } });
+};
+
+
+/***/ }),
+/* 117 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
+var BrotliInput = __webpack_require__(118).BrotliInput;
+var BrotliOutput = __webpack_require__(118).BrotliOutput;
+var BrotliBitReader = __webpack_require__(285);
+var BrotliDictionary = __webpack_require__(119);
+var HuffmanCode = __webpack_require__(120).HuffmanCode;
+var BrotliBuildHuffmanTable = __webpack_require__(120).BrotliBuildHuffmanTable;
+var Context = __webpack_require__(289);
+var Prefix = __webpack_require__(290);
+var Transform = __webpack_require__(291);
+
+var kDefaultCodeLength = 8;
+var kCodeLengthRepeatCode = 16;
+var kNumLiteralCodes = 256;
+var kNumInsertAndCopyCodes = 704;
+var kNumBlockLengthCodes = 26;
+var kLiteralContextBits = 6;
+var kDistanceContextBits = 2;
+
+var HUFFMAN_TABLE_BITS = 8;
+var HUFFMAN_TABLE_MASK = 0xff;
+/* Maximum possible Huffman table size for an alphabet size of 704, max code
+ * length 15 and root table bits 8. */
+var HUFFMAN_MAX_TABLE_SIZE = 1080;
+
+var CODE_LENGTH_CODES = 18;
+var kCodeLengthCodeOrder = new Uint8Array([
+  1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+]);
+
+var NUM_DISTANCE_SHORT_CODES = 16;
+var kDistanceShortCodeIndexOffset = new Uint8Array([
+  3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2
+]);
+
+var kDistanceShortCodeValueOffset = new Int8Array([
+  0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3
+]);
+
+var kMaxHuffmanTableSize = new Uint16Array([
+  256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,
+  854, 886, 920, 952, 984, 1016, 1048, 1080
+]);
+
+function DecodeWindowBits(br) {
+  var n;
+  if (br.readBits(1) === 0) {
+    return 16;
+  }
+  
+  n = br.readBits(3);
+  if (n > 0) {
+    return 17 + n;
+  }
+  
+  n = br.readBits(3);
+  if (n > 0) {
+    return 8 + n;
+  }
+  
+  return 17;
+}
+
+/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */
+function DecodeVarLenUint8(br) {
+  if (br.readBits(1)) {
+    var nbits = br.readBits(3);
+    if (nbits === 0) {
+      return 1;
+    } else {
+      return br.readBits(nbits) + (1 << nbits);
+    }
+  }
+  return 0;
+}
+
+function MetaBlockLength() {
+  this.meta_block_length = 0;
+  this.input_end = 0;
+  this.is_uncompressed = 0;
+  this.is_metadata = false;
+}
+
+function DecodeMetaBlockLength(br) {
+  var out = new MetaBlockLength;  
+  var size_nibbles;
+  var size_bytes;
+  var i;
+  
+  out.input_end = br.readBits(1);
+  if (out.input_end && br.readBits(1)) {
+    return out;
+  }
+  
+  size_nibbles = br.readBits(2) + 4;
+  if (size_nibbles === 7) {
+    out.is_metadata = true;
+    
+    if (br.readBits(1) !== 0)
+      throw new Error('Invalid reserved bit');
+    
+    size_bytes = br.readBits(2);
+    if (size_bytes === 0)
+      return out;
+    
+    for (i = 0; i < size_bytes; i++) {
+      var next_byte = br.readBits(8);
+      if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)
+        throw new Error('Invalid size byte');
+      
+      out.meta_block_length |= next_byte << (i * 8);
+    }
+  } else {
+    for (i = 0; i < size_nibbles; ++i) {
+      var next_nibble = br.readBits(4);
+      if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)
+        throw new Error('Invalid size nibble');
+      
+      out.meta_block_length |= next_nibble << (i * 4);
+    }
+  }
+  
+  ++out.meta_block_length;
+  
+  if (!out.input_end && !out.is_metadata) {
+    out.is_uncompressed = br.readBits(1);
+  }
+  
+  return out;
+}
+
+/* Decodes the next Huffman code from bit-stream. */
+function ReadSymbol(table, index, br) {
+  var start_index = index;
+  
+  var nbits;
+  br.fillBitWindow();
+  index += (br.val_ >>> br.bit_pos_) & HUFFMAN_TABLE_MASK;
+  nbits = table[index].bits - HUFFMAN_TABLE_BITS;
+  if (nbits > 0) {
+    br.bit_pos_ += HUFFMAN_TABLE_BITS;
+    index += table[index].value;
+    index += (br.val_ >>> br.bit_pos_) & ((1 << nbits) - 1);
+  }
+  br.bit_pos_ += table[index].bits;
+  return table[index].value;
+}
+
+function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {
+  var symbol = 0;
+  var prev_code_len = kDefaultCodeLength;
+  var repeat = 0;
+  var repeat_code_len = 0;
+  var space = 32768;
+  
+  var table = [];
+  for (var i = 0; i < 32; i++)
+    table.push(new HuffmanCode(0, 0));
+  
+  BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES);
+
+  while (symbol < num_symbols && space > 0) {
+    var p = 0;
+    var code_len;
+    
+    br.readMoreInput();
+    br.fillBitWindow();
+    p += (br.val_ >>> br.bit_pos_) & 31;
+    br.bit_pos_ += table[p].bits;
+    code_len = table[p].value & 0xff;
+    if (code_len < kCodeLengthRepeatCode) {
+      repeat = 0;
+      code_lengths[symbol++] = code_len;
+      if (code_len !== 0) {
+        prev_code_len = code_len;
+        space -= 32768 >> code_len;
+      }
+    } else {
+      var extra_bits = code_len - 14;
+      var old_repeat;
+      var repeat_delta;
+      var new_len = 0;
+      if (code_len === kCodeLengthRepeatCode) {
+        new_len = prev_code_len;
+      }
+      if (repeat_code_len !== new_len) {
+        repeat = 0;
+        repeat_code_len = new_len;
+      }
+      old_repeat = repeat;
+      if (repeat > 0) {
+        repeat -= 2;
+        repeat <<= extra_bits;
+      }
+      repeat += br.readBits(extra_bits) + 3;
+      repeat_delta = repeat - old_repeat;
+      if (symbol + repeat_delta > num_symbols) {
+        throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols');
+      }
+      
+      for (var x = 0; x < repeat_delta; x++)
+        code_lengths[symbol + x] = repeat_code_len;
+      
+      symbol += repeat_delta;
+      
+      if (repeat_code_len !== 0) {
+        space -= repeat_delta << (15 - repeat_code_len);
+      }
+    }
+  }
+  if (space !== 0) {
+    throw new Error("[ReadHuffmanCodeLengths] space = " + space);
+  }
+  
+  for (; symbol < num_symbols; symbol++)
+    code_lengths[symbol] = 0;
+}
+
+function ReadHuffmanCode(alphabet_size, tables, table, br) {
+  var table_size = 0;
+  var simple_code_or_skip;
+  var code_lengths = new Uint8Array(alphabet_size);
+  
+  br.readMoreInput();
+  
+  /* simple_code_or_skip is used as follows:
+     1 for simple code;
+     0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */
+  simple_code_or_skip = br.readBits(2);
+  if (simple_code_or_skip === 1) {
+    /* Read symbols, codes & code lengths directly. */
+    var i;
+    var max_bits_counter = alphabet_size - 1;
+    var max_bits = 0;
+    var symbols = new Int32Array(4);
+    var num_symbols = br.readBits(2) + 1;
+    while (max_bits_counter) {
+      max_bits_counter >>= 1;
+      ++max_bits;
+    }
+
+    for (i = 0; i < num_symbols; ++i) {
+      symbols[i] = br.readBits(max_bits) % alphabet_size;
+      code_lengths[symbols[i]] = 2;
+    }
+    code_lengths[symbols[0]] = 1;
+    switch (num_symbols) {
+      case 1:
+        break;
+      case 3:
+        if ((symbols[0] === symbols[1]) ||
+            (symbols[0] === symbols[2]) ||
+            (symbols[1] === symbols[2])) {
+          throw new Error('[ReadHuffmanCode] invalid symbols');
+        }
+        break;
+      case 2:
+        if (symbols[0] === symbols[1]) {
+          throw new Error('[ReadHuffmanCode] invalid symbols');
+        }
+        
+        code_lengths[symbols[1]] = 1;
+        break;
+      case 4:
+        if ((symbols[0] === symbols[1]) ||
+            (symbols[0] === symbols[2]) ||
+            (symbols[0] === symbols[3]) ||
+            (symbols[1] === symbols[2]) ||
+            (symbols[1] === symbols[3]) ||
+            (symbols[2] === symbols[3])) {
+          throw new Error('[ReadHuffmanCode] invalid symbols');
+        }
+        
+        if (br.readBits(1)) {
+          code_lengths[symbols[2]] = 3;
+          code_lengths[symbols[3]] = 3;
+        } else {
+          code_lengths[symbols[0]] = 2;
+        }
+        break;
+    }
+  } else {  /* Decode Huffman-coded code lengths. */
+    var i;
+    var code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES);
+    var space = 32;
+    var num_codes = 0;
+    /* Static Huffman code for the code length code lengths */
+    var huff = [
+      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), 
+      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),
+      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), 
+      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)
+    ];
+    for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) {
+      var code_len_idx = kCodeLengthCodeOrder[i];
+      var p = 0;
+      var v;
+      br.fillBitWindow();
+      p += (br.val_ >>> br.bit_pos_) & 15;
+      br.bit_pos_ += huff[p].bits;
+      v = huff[p].value;
+      code_length_code_lengths[code_len_idx] = v;
+      if (v !== 0) {
+        space -= (32 >> v);
+        ++num_codes;
+      }
+    }
+    
+    if (!(num_codes === 1 || space === 0))
+      throw new Error('[ReadHuffmanCode] invalid num_codes or space');
+    
+    ReadHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br);
+  }
+  
+  table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size);
+  
+  if (table_size === 0) {
+    throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");
+  }
+  
+  return table_size;
+}
+
+function ReadBlockLength(table, index, br) {
+  var code;
+  var nbits;
+  code = ReadSymbol(table, index, br);
+  nbits = Prefix.kBlockLengthPrefixCode[code].nbits;
+  return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);
+}
+
+function TranslateShortCodes(code, ringbuffer, index) {
+  var val;
+  if (code < NUM_DISTANCE_SHORT_CODES) {
+    index += kDistanceShortCodeIndexOffset[code];
+    index &= 3;
+    val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];
+  } else {
+    val = code - NUM_DISTANCE_SHORT_CODES + 1;
+  }
+  return val;
+}
+
+function MoveToFront(v, index) {
+  var value = v[index];
+  var i = index;
+  for (; i; --i) v[i] = v[i - 1];
+  v[0] = value;
+}
+
+function InverseMoveToFrontTransform(v, v_len) {
+  var mtf = new Uint8Array(256);
+  var i;
+  for (i = 0; i < 256; ++i) {
+    mtf[i] = i;
+  }
+  for (i = 0; i < v_len; ++i) {
+    var index = v[i];
+    v[i] = mtf[index];
+    if (index) MoveToFront(mtf, index);
+  }
+}
+
+/* Contains a collection of huffman trees with the same alphabet size. */
+function HuffmanTreeGroup(alphabet_size, num_htrees) {
+  this.alphabet_size = alphabet_size;
+  this.num_htrees = num_htrees;
+  this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[(alphabet_size + 31) >>> 5]);  
+  this.htrees = new Uint32Array(num_htrees);
+}
+
+HuffmanTreeGroup.prototype.decode = function(br) {
+  var i;
+  var table_size;
+  var next = 0;
+  for (i = 0; i < this.num_htrees; ++i) {
+    this.htrees[i] = next;
+    table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br);
+    next += table_size;
+  }
+};
+
+function DecodeContextMap(context_map_size, br) {
+  var out = { num_htrees: null, context_map: null };
+  var use_rle_for_zeros;
+  var max_run_length_prefix = 0;
+  var table;
+  var i;
+  
+  br.readMoreInput();
+  var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;
+
+  var context_map = out.context_map = new Uint8Array(context_map_size);
+  if (num_htrees <= 1) {
+    return out;
+  }
+
+  use_rle_for_zeros = br.readBits(1);
+  if (use_rle_for_zeros) {
+    max_run_length_prefix = br.readBits(4) + 1;
+  }
+  
+  table = [];
+  for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {
+    table[i] = new HuffmanCode(0, 0);
+  }
+  
+  ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br);
+  
+  for (i = 0; i < context_map_size;) {
+    var code;
+
+    br.readMoreInput();
+    code = ReadSymbol(table, 0, br);
+    if (code === 0) {
+      context_map[i] = 0;
+      ++i;
+    } else if (code <= max_run_length_prefix) {
+      var reps = 1 + (1 << code) + br.readBits(code);
+      while (--reps) {
+        if (i >= context_map_size) {
+          throw new Error("[DecodeContextMap] i >= context_map_size");
+        }
+        context_map[i] = 0;
+        ++i;
+      }
+    } else {
+      context_map[i] = code - max_run_length_prefix;
+      ++i;
+    }
+  }
+  if (br.readBits(1)) {
+    InverseMoveToFrontTransform(context_map, context_map_size);
+  }
+  
+  return out;
+}
+
+function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {
+  var ringbuffer = tree_type * 2;
+  var index = tree_type;
+  var type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br);
+  var block_type;
+  if (type_code === 0) {
+    block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];
+  } else if (type_code === 1) {
+    block_type = ringbuffers[ringbuffer + ((indexes[index] - 1) & 1)] + 1;
+  } else {
+    block_type = type_code - 2;
+  }
+  if (block_type >= max_block_type) {
+    block_type -= max_block_type;
+  }
+  block_types[tree_type] = block_type;
+  ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;
+  ++indexes[index];
+}
+
+function CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {
+  var rb_size = ringbuffer_mask + 1;
+  var rb_pos = pos & ringbuffer_mask;
+  var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;
+  var nbytes;
+
+  /* For short lengths copy byte-by-byte */
+  if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {
+    while (len-- > 0) {
+      br.readMoreInput();
+      ringbuffer[rb_pos++] = br.readBits(8);
+      if (rb_pos === rb_size) {
+        output.write(ringbuffer, rb_size);
+        rb_pos = 0;
+      }
+    }
+    return;
+  }
+
+  if (br.bit_end_pos_ < 32) {
+    throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32');
+  }
+
+  /* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */
+  while (br.bit_pos_ < 32) {
+    ringbuffer[rb_pos] = (br.val_ >>> br.bit_pos_);
+    br.bit_pos_ += 8;
+    ++rb_pos;
+    --len;
+  }
+
+  /* Copy remaining bytes from br.buf_ to ringbuffer. */
+  nbytes = (br.bit_end_pos_ - br.bit_pos_) >> 3;
+  if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {
+    var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;
+    for (var x = 0; x < tail; x++)
+      ringbuffer[rb_pos + x] = br.buf_[br_pos + x];
+    
+    nbytes -= tail;
+    rb_pos += tail;
+    len -= tail;
+    br_pos = 0;
+  }
+
+  for (var x = 0; x < nbytes; x++)
+    ringbuffer[rb_pos + x] = br.buf_[br_pos + x];
+  
+  rb_pos += nbytes;
+  len -= nbytes;
+
+  /* If we wrote past the logical end of the ringbuffer, copy the tail of the
+     ringbuffer to its beginning and flush the ringbuffer to the output. */
+  if (rb_pos >= rb_size) {
+    output.write(ringbuffer, rb_size);
+    rb_pos -= rb_size;    
+    for (var x = 0; x < rb_pos; x++)
+      ringbuffer[x] = ringbuffer[rb_size + x];
+  }
+
+  /* If we have more to copy than the remaining size of the ringbuffer, then we
+     first fill the ringbuffer from the input and then flush the ringbuffer to
+     the output */
+  while (rb_pos + len >= rb_size) {
+    nbytes = rb_size - rb_pos;
+    if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {
+      throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');
+    }
+    output.write(ringbuffer, rb_size);
+    len -= nbytes;
+    rb_pos = 0;
+  }
+
+  /* Copy straight from the input onto the ringbuffer. The ringbuffer will be
+     flushed to the output at a later time. */
+  if (br.input_.read(ringbuffer, rb_pos, len) < len) {
+    throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');
+  }
+
+  /* Restore the state of the bit reader. */
+  br.reset();
+}
+
+/* Advances the bit reader position to the next byte boundary and verifies
+   that any skipped bits are set to zero. */
+function JumpToByteBoundary(br) {
+  var new_bit_pos = (br.bit_pos_ + 7) & ~7;
+  var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);
+  return pad_bits == 0;
+}
+
+function BrotliDecompressedSize(buffer) {
+  var input = new BrotliInput(buffer);
+  var br = new BrotliBitReader(input);
+  DecodeWindowBits(br);
+  var out = DecodeMetaBlockLength(br);
+  return out.meta_block_length;
+}
+
+exports.BrotliDecompressedSize = BrotliDecompressedSize;
+
+function BrotliDecompressBuffer(buffer, output_size) {
+  var input = new BrotliInput(buffer);
+  
+  if (output_size == null) {
+    output_size = BrotliDecompressedSize(buffer);
+  }
+  
+  var output_buffer = new Uint8Array(output_size);
+  var output = new BrotliOutput(output_buffer);
+  
+  BrotliDecompress(input, output);
+  
+  if (output.pos < output.buffer.length) {
+    output.buffer = output.buffer.subarray(0, output.pos);
+  }
+  
+  return output.buffer;
+}
+
+exports.BrotliDecompressBuffer = BrotliDecompressBuffer;
+
+function BrotliDecompress(input, output) {
+  var i;
+  var pos = 0;
+  var input_end = 0;
+  var window_bits = 0;
+  var max_backward_distance;
+  var max_distance = 0;
+  var ringbuffer_size;
+  var ringbuffer_mask;
+  var ringbuffer;
+  var ringbuffer_end;
+  /* This ring buffer holds a few past copy distances that will be used by */
+  /* some special distance codes. */
+  var dist_rb = [ 16, 15, 11, 4 ];
+  var dist_rb_idx = 0;
+  /* The previous 2 bytes used for context. */
+  var prev_byte1 = 0;
+  var prev_byte2 = 0;
+  var hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)];
+  var block_type_trees;
+  var block_len_trees;
+  var br;
+
+  /* We need the slack region for the following reasons:
+       - always doing two 8-byte copies for fast backward copying
+       - transforms
+       - flushing the input ringbuffer when decoding uncompressed blocks */
+  var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;
+
+  br = new BrotliBitReader(input);
+
+  /* Decode window size. */
+  window_bits = DecodeWindowBits(br);
+  max_backward_distance = (1 << window_bits) - 16;
+
+  ringbuffer_size = 1 << window_bits;
+  ringbuffer_mask = ringbuffer_size - 1;
+  ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength);
+  ringbuffer_end = ringbuffer_size;
+
+  block_type_trees = [];
+  block_len_trees = [];
+  for (var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {
+    block_type_trees[x] = new HuffmanCode(0, 0);
+    block_len_trees[x] = new HuffmanCode(0, 0);
+  }
+
+  while (!input_end) {
+    var meta_block_remaining_len = 0;
+    var is_uncompressed;
+    var block_length = [ 1 << 28, 1 << 28, 1 << 28 ];
+    var block_type = [ 0 ];
+    var num_block_types = [ 1, 1, 1 ];
+    var block_type_rb = [ 0, 1, 0, 1, 0, 1 ];
+    var block_type_rb_index = [ 0 ];
+    var distance_postfix_bits;
+    var num_direct_distance_codes;
+    var distance_postfix_mask;
+    var num_distance_codes;
+    var context_map = null;
+    var context_modes = null;
+    var num_literal_htrees;
+    var dist_context_map = null;
+    var num_dist_htrees;
+    var context_offset = 0;
+    var context_map_slice = null;
+    var literal_htree_index = 0;
+    var dist_context_offset = 0;
+    var dist_context_map_slice = null;
+    var dist_htree_index = 0;
+    var context_lookup_offset1 = 0;
+    var context_lookup_offset2 = 0;
+    var context_mode;
+    var htree_command;
+
+    for (i = 0; i < 3; ++i) {
+      hgroup[i].codes = null;
+      hgroup[i].htrees = null;
+    }
+
+    br.readMoreInput();
+    
+    var _out = DecodeMetaBlockLength(br);
+    meta_block_remaining_len = _out.meta_block_length;
+    if (pos + meta_block_remaining_len > output.buffer.length) {
+      /* We need to grow the output buffer to fit the additional data. */
+      var tmp = new Uint8Array( pos + meta_block_remaining_len );
+      tmp.set( output.buffer );
+      output.buffer = tmp;
+    }    
+    input_end = _out.input_end;
+    is_uncompressed = _out.is_uncompressed;
+    
+    if (_out.is_metadata) {
+      JumpToByteBoundary(br);
+      
+      for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {
+        br.readMoreInput();
+        /* Read one byte and ignore it. */
+        br.readBits(8);
+      }
+      
+      continue;
+    }
+    
+    if (meta_block_remaining_len === 0) {
+      continue;
+    }
+    
+    if (is_uncompressed) {
+      br.bit_pos_ = (br.bit_pos_ + 7) & ~7;
+      CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos,
+                                    ringbuffer, ringbuffer_mask, br);
+      pos += meta_block_remaining_len;
+      continue;
+    }
+    
+    for (i = 0; i < 3; ++i) {
+      num_block_types[i] = DecodeVarLenUint8(br) + 1;
+      if (num_block_types[i] >= 2) {
+        ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
+        ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
+        block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
+        block_type_rb_index[i] = 1;
+      }
+    }
+    
+    br.readMoreInput();
+    
+    distance_postfix_bits = br.readBits(2);
+    num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);
+    distance_postfix_mask = (1 << distance_postfix_bits) - 1;
+    num_distance_codes = (num_direct_distance_codes + (48 << distance_postfix_bits));
+    context_modes = new Uint8Array(num_block_types[0]);
+
+    for (i = 0; i < num_block_types[0]; ++i) {
+       br.readMoreInput();
+       context_modes[i] = (br.readBits(2) << 1);
+    }
+    
+    var _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br);
+    num_literal_htrees = _o1.num_htrees;
+    context_map = _o1.context_map;
+    
+    var _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br);
+    num_dist_htrees = _o2.num_htrees;
+    dist_context_map = _o2.context_map;
+    
+    hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees);
+    hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]);
+    hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees);
+
+    for (i = 0; i < 3; ++i) {
+      hgroup[i].decode(br);
+    }
+
+    context_map_slice = 0;
+    dist_context_map_slice = 0;
+    context_mode = context_modes[block_type[0]];
+    context_lookup_offset1 = Context.lookupOffsets[context_mode];
+    context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
+    htree_command = hgroup[1].htrees[0];
+
+    while (meta_block_remaining_len > 0) {
+      var cmd_code;
+      var range_idx;
+      var insert_code;
+      var copy_code;
+      var insert_length;
+      var copy_length;
+      var distance_code;
+      var distance;
+      var context;
+      var j;
+      var copy_dst;
+
+      br.readMoreInput();
+      
+      if (block_length[1] === 0) {
+        DecodeBlockType(num_block_types[1],
+                        block_type_trees, 1, block_type, block_type_rb,
+                        block_type_rb_index, br);
+        block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br);
+        htree_command = hgroup[1].htrees[block_type[1]];
+      }
+      --block_length[1];
+      cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br);
+      range_idx = cmd_code >> 6;
+      if (range_idx >= 2) {
+        range_idx -= 2;
+        distance_code = -1;
+      } else {
+        distance_code = 0;
+      }
+      insert_code = Prefix.kInsertRangeLut[range_idx] + ((cmd_code >> 3) & 7);
+      copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);
+      insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset +
+          br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits);
+      copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset +
+          br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits);
+      prev_byte1 = ringbuffer[pos-1 & ringbuffer_mask];
+      prev_byte2 = ringbuffer[pos-2 & ringbuffer_mask];
+      for (j = 0; j < insert_length; ++j) {
+        br.readMoreInput();
+
+        if (block_length[0] === 0) {
+          DecodeBlockType(num_block_types[0],
+                          block_type_trees, 0, block_type, block_type_rb,
+                          block_type_rb_index, br);
+          block_length[0] = ReadBlockLength(block_len_trees, 0, br);
+          context_offset = block_type[0] << kLiteralContextBits;
+          context_map_slice = context_offset;
+          context_mode = context_modes[block_type[0]];
+          context_lookup_offset1 = Context.lookupOffsets[context_mode];
+          context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
+        }
+        context = (Context.lookup[context_lookup_offset1 + prev_byte1] |
+                   Context.lookup[context_lookup_offset2 + prev_byte2]);
+        literal_htree_index = context_map[context_map_slice + context];
+        --block_length[0];
+        prev_byte2 = prev_byte1;
+        prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br);
+        ringbuffer[pos & ringbuffer_mask] = prev_byte1;
+        if ((pos & ringbuffer_mask) === ringbuffer_mask) {
+          output.write(ringbuffer, ringbuffer_size);
+        }
+        ++pos;
+      }
+      meta_block_remaining_len -= insert_length;
+      if (meta_block_remaining_len <= 0) break;
+
+      if (distance_code < 0) {
+        var context;
+        
+        br.readMoreInput();
+        if (block_length[2] === 0) {
+          DecodeBlockType(num_block_types[2],
+                          block_type_trees, 2, block_type, block_type_rb,
+                          block_type_rb_index, br);
+          block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br);
+          dist_context_offset = block_type[2] << kDistanceContextBits;
+          dist_context_map_slice = dist_context_offset;
+        }
+        --block_length[2];
+        context = (copy_length > 4 ? 3 : copy_length - 2) & 0xff;
+        dist_htree_index = dist_context_map[dist_context_map_slice + context];
+        distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br);
+        if (distance_code >= num_direct_distance_codes) {
+          var nbits;
+          var postfix;
+          var offset;
+          distance_code -= num_direct_distance_codes;
+          postfix = distance_code & distance_postfix_mask;
+          distance_code >>= distance_postfix_bits;
+          nbits = (distance_code >> 1) + 1;
+          offset = ((2 + (distance_code & 1)) << nbits) - 4;
+          distance_code = num_direct_distance_codes +
+              ((offset + br.readBits(nbits)) <<
+               distance_postfix_bits) + postfix;
+        }
+      }
+
+      /* Convert the distance code to the actual distance by possibly looking */
+      /* up past distnaces from the ringbuffer. */
+      distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx);
+      if (distance < 0) {
+        throw new Error('[BrotliDecompress] invalid distance');
+      }
+
+      if (pos < max_backward_distance &&
+          max_distance !== max_backward_distance) {
+        max_distance = pos;
+      } else {
+        max_distance = max_backward_distance;
+      }
+
+      copy_dst = pos & ringbuffer_mask;
+
+      if (distance > max_distance) {
+        if (copy_length >= BrotliDictionary.minDictionaryWordLength &&
+            copy_length <= BrotliDictionary.maxDictionaryWordLength) {
+          var offset = BrotliDictionary.offsetsByLength[copy_length];
+          var word_id = distance - max_distance - 1;
+          var shift = BrotliDictionary.sizeBitsByLength[copy_length];
+          var mask = (1 << shift) - 1;
+          var word_idx = word_id & mask;
+          var transform_idx = word_id >> shift;
+          offset += word_idx * copy_length;
+          if (transform_idx < Transform.kNumTransforms) {
+            var len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx);
+            copy_dst += len;
+            pos += len;
+            meta_block_remaining_len -= len;
+            if (copy_dst >= ringbuffer_end) {
+              output.write(ringbuffer, ringbuffer_size);
+              
+              for (var _x = 0; _x < (copy_dst - ringbuffer_end); _x++)
+                ringbuffer[_x] = ringbuffer[ringbuffer_end + _x];
+            }
+          } else {
+            throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
+              " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
+          }
+        } else {
+          throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
+            " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
+        }
+      } else {
+        if (distance_code > 0) {
+          dist_rb[dist_rb_idx & 3] = distance;
+          ++dist_rb_idx;
+        }
+
+        if (copy_length > meta_block_remaining_len) {
+          throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
+            " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
+        }
+
+        for (j = 0; j < copy_length; ++j) {
+          ringbuffer[pos & ringbuffer_mask] = ringbuffer[(pos - distance) & ringbuffer_mask];
+          if ((pos & ringbuffer_mask) === ringbuffer_mask) {
+            output.write(ringbuffer, ringbuffer_size);
+          }
+          ++pos;
+          --meta_block_remaining_len;
+        }
+      }
+
+      /* When we get here, we must have inserted at least one literal and */
+      /* made a copy of at least length two, therefore accessing the last 2 */
+      /* bytes is valid. */
+      prev_byte1 = ringbuffer[(pos - 1) & ringbuffer_mask];
+      prev_byte2 = ringbuffer[(pos - 2) & ringbuffer_mask];
+    }
+
+    /* Protect pos from overflow, wrap it around at every GB of input data */
+    pos &= 0x3fffffff;
+  }
+
+  output.write(ringbuffer, pos & ringbuffer_mask);
+}
+
+exports.BrotliDecompress = BrotliDecompress;
+
+BrotliDictionary.init();
+
+
+/***/ }),
+/* 118 */
+/***/ (function(module, exports) {
+
+function BrotliInput(buffer) {
+  this.buffer = buffer;
+  this.pos = 0;
+}
+
+BrotliInput.prototype.read = function(buf, i, count) {
+  if (this.pos + count > this.buffer.length) {
+    count = this.buffer.length - this.pos;
+  }
+  
+  for (var p = 0; p < count; p++)
+    buf[i + p] = this.buffer[this.pos + p];
+  
+  this.pos += count;
+  return count;
+}
+
+exports.BrotliInput = BrotliInput;
+
+function BrotliOutput(buf) {
+  this.buffer = buf;
+  this.pos = 0;
+}
+
+BrotliOutput.prototype.write = function(buf, count) {
+  if (this.pos + count > this.buffer.length)
+    throw new Error('Output buffer is not large enough');
+  
+  this.buffer.set(buf.subarray(0, count), this.pos);
+  this.pos += count;
+  return count;
+};
+
+exports.BrotliOutput = BrotliOutput;
+
+
+/***/ }),
+/* 119 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Collection of static dictionary words.
+*/
+
+var data = __webpack_require__(286);
+exports.init = function() {
+  exports.dictionary = data.init();
+};
+
+exports.offsetsByLength = new Uint32Array([
+     0,     0,     0,     0,     0,  4096,  9216, 21504, 35840, 44032,
+ 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,
+ 115968, 118528, 119872, 121280, 122016,
+]);
+
+exports.sizeBitsByLength = new Uint8Array([
+  0,  0,  0,  0, 10, 10, 11, 11, 10, 10,
+ 10, 10, 10,  9,  9,  8,  7,  7,  8,  7,
+  7,  6,  6,  5,  5,
+]);
+
+exports.minDictionaryWordLength = 4;
+exports.maxDictionaryWordLength = 24;
+
+
+/***/ }),
+/* 120 */
+/***/ (function(module, exports) {
+
+function HuffmanCode(bits, value) {
+  this.bits = bits;   /* number of bits used for this symbol */
+  this.value = value; /* symbol value or table offset */
+}
+
+exports.HuffmanCode = HuffmanCode;
+
+var MAX_LENGTH = 15;
+
+/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the
+   bit-wise reversal of the len least significant bits of key. */
+function GetNextKey(key, len) {
+  var step = 1 << (len - 1);
+  while (key & step) {
+    step >>= 1;
+  }
+  return (key & (step - 1)) + step;
+}
+
+/* Stores code in table[0], table[step], table[2*step], ..., table[end] */
+/* Assumes that end is an integer multiple of step */
+function ReplicateValue(table, i, step, end, code) {
+  do {
+    end -= step;
+    table[i + end] = new HuffmanCode(code.bits, code.value);
+  } while (end > 0);
+}
+
+/* Returns the table width of the next 2nd level table. count is the histogram
+   of bit lengths for the remaining symbols, len is the code length of the next
+   processed symbol */
+function NextTableBitSize(count, len, root_bits) {
+  var left = 1 << (len - root_bits);
+  while (len < MAX_LENGTH) {
+    left -= count[len];
+    if (left <= 0) break;
+    ++len;
+    left <<= 1;
+  }
+  return len - root_bits;
+}
+
+exports.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {
+  var start_table = table;
+  var code;            /* current table entry */
+  var len;             /* current code length */
+  var symbol;          /* symbol index in original or sorted table */
+  var key;             /* reversed prefix code */
+  var step;            /* step size to replicate values in current table */
+  var low;             /* low bits for current root entry */
+  var mask;            /* mask for low bits */
+  var table_bits;      /* key length of current table */
+  var table_size;      /* size of current table */
+  var total_size;      /* sum of root table size and 2nd level table sizes */
+  var sorted;          /* symbols sorted by code length */
+  var count = new Int32Array(MAX_LENGTH + 1);  /* number of codes of each length */
+  var offset = new Int32Array(MAX_LENGTH + 1);  /* offsets in sorted table for each length */
+
+  sorted = new Int32Array(code_lengths_size);
+
+  /* build histogram of code lengths */
+  for (symbol = 0; symbol < code_lengths_size; symbol++) {
+    count[code_lengths[symbol]]++;
+  }
+
+  /* generate offsets into sorted symbol table by code length */
+  offset[1] = 0;
+  for (len = 1; len < MAX_LENGTH; len++) {
+    offset[len + 1] = offset[len] + count[len];
+  }
+
+  /* sort symbols by length, by symbol order within each length */
+  for (symbol = 0; symbol < code_lengths_size; symbol++) {
+    if (code_lengths[symbol] !== 0) {
+      sorted[offset[code_lengths[symbol]]++] = symbol;
+    }
+  }
+  
+  table_bits = root_bits;
+  table_size = 1 << table_bits;
+  total_size = table_size;
+
+  /* special case code with only one value */
+  if (offset[MAX_LENGTH] === 1) {
+    for (key = 0; key < total_size; ++key) {
+      root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff);
+    }
+    
+    return total_size;
+  }
+
+  /* fill in root table */
+  key = 0;
+  symbol = 0;
+  for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {
+    for (; count[len] > 0; --count[len]) {
+      code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff);
+      ReplicateValue(root_table, table + key, step, table_size, code);
+      key = GetNextKey(key, len);
+    }
+  }
+
+  /* fill in 2nd level tables and add pointers to root table */
+  mask = total_size - 1;
+  low = -1;
+  for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {
+    for (; count[len] > 0; --count[len]) {
+      if ((key & mask) !== low) {
+        table += table_size;
+        table_bits = NextTableBitSize(count, len, root_bits);
+        table_size = 1 << table_bits;
+        total_size += table_size;
+        low = key & mask;
+        root_table[start_table + low] = new HuffmanCode((table_bits + root_bits) & 0xff, ((table - start_table) - low) & 0xffff);
+      }
+      code = new HuffmanCode((len - root_bits) & 0xff, sorted[symbol++] & 0xffff);
+      ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code);
+      key = GetNextKey(key, len);
+    }
+  }
+  
+  return total_size;
+}
+
+
+/***/ }),
+/* 121 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+
+/*
+PDFImage - embeds images in PDF documents
+By Devon Govett
+ */
+
+(function() {
+  var Data, JPEG, PDFImage, PNG, fs;
+
+  fs = __webpack_require__(8);
+
+  Data = __webpack_require__(298);
+
+  JPEG = __webpack_require__(299);
+
+  PNG = __webpack_require__(300);
+
+  PDFImage = (function() {
+    function PDFImage() {}
+
+    PDFImage.open = function(src, label) {
+      var data, match;
+      if (Buffer.isBuffer(src)) {
+        data = src;
+      } else if (src instanceof ArrayBuffer) {
+        data = new Buffer(new Uint8Array(src));
+      } else {
+        if (match = /^data:.+;base64,(.*)$/.exec(src)) {
+          data = new Buffer(match[1], 'base64');
+        } else {
+          data = fs.readFileSync(src);
+          if (!data) {
+            return;
+          }
+        }
+      }
+      if (data[0] === 0xff && data[1] === 0xd8) {
+        return new JPEG(data, label);
+      } else if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') {
+        return new PNG(data, label);
+      } else {
+        throw new Error('Unknown image format.');
+      }
+    };
+
+    return PDFImage;
+
+  })();
+
+  module.exports = PDFImage;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 122 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global) {module.exports = global["pdfMake"] = __webpack_require__(123);
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
+
+/***/ }),
+/* 123 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer, global) {
+
+var PdfPrinter = __webpack_require__(126);
+var isFunction = __webpack_require__(0).isFunction;
+var FileSaver = __webpack_require__(306);
+var saveAs = FileSaver.saveAs;
+
+var defaultClientFonts = {
+	Roboto: {
+		normal: 'Roboto-Regular.ttf',
+		bold: 'Roboto-Medium.ttf',
+		italics: 'Roboto-Italic.ttf',
+		bolditalics: 'Roboto-MediumItalic.ttf'
+	}
+};
+
+function Document(docDefinition, tableLayouts, fonts, vfs) {
+	this.docDefinition = docDefinition;
+	this.tableLayouts = tableLayouts || null;
+	this.fonts = fonts || defaultClientFonts;
+	this.vfs = vfs;
+}
+
+function canCreatePdf() {
+	// Ensure the browser provides the level of support needed
+	if (!Object.keys) {
+		return false;
+	}
+	return true;
+}
+
+Document.prototype._createDoc = function (options, callback) {
+	options = options || {};
+	if (this.tableLayouts) {
+		options.tableLayouts = this.tableLayouts;
+	}
+
+	var printer = new PdfPrinter(this.fonts);
+	__webpack_require__(8).bindFS(this.vfs); // bind virtual file system to file system
+
+	var doc = printer.createPdfKitDocument(this.docDefinition, options);
+	var chunks = [];
+	var result;
+
+	doc.on('readable', function () {
+		var chunk;
+		while ((chunk = doc.read(9007199254740991)) !== null) {
+			chunks.push(chunk);
+		}
+	});
+	doc.on('end', function () {
+		result = Buffer.concat(chunks);
+		callback(result, doc._pdfMakePages);
+	});
+	doc.end();
+};
+
+Document.prototype._getPages = function (options, cb) {
+	if (!cb) {
+		throw '_getPages is an async method and needs a callback argument';
+	}
+	this._createDoc(options, function (ignoreBuffer, pages) {
+		cb(pages);
+	});
+};
+
+Document.prototype._bufferToBlob = function (buffer) {
+	var blob;
+	try {
+		blob = new Blob([buffer], {type: 'application/pdf'});
+	} catch (e) {
+		// Old browser which can't handle it without making it an byte array (ie10)
+		if (e.name === 'InvalidStateError') {
+			var byteArray = new Uint8Array(buffer);
+			blob = new Blob([byteArray.buffer], {type: 'application/pdf'});
+		}
+	}
+
+	if (!blob) {
+		throw 'Could not generate blob';
+	}
+
+	return blob;
+};
+
+Document.prototype._openWindow = function () {
+	// we have to open the window immediately and store the reference
+	// otherwise popup blockers will stop us
+	var win = window.open('', '_blank');
+	if (win === null) {
+		throw 'Open PDF in new window blocked by browser';
+	}
+
+	return win;
+};
+
+Document.prototype._openPdf = function (options, win) {
+	if (!win) {
+		win = this._openWindow();
+	}
+	try {
+		this.getBlob(function (result) {
+			var urlCreator = window.URL || window.webkitURL;
+			var pdfUrl = urlCreator.createObjectURL(result);
+			win.location.href = pdfUrl;
+		}, options);
+	} catch (e) {
+		win.close();
+		throw e;
+	}
+};
+
+Document.prototype.open = function (options, win) {
+	options = options || {};
+	options.autoPrint = false;
+	win = win || null;
+
+	this._openPdf(options, win);
+};
+
+
+Document.prototype.print = function (options, win) {
+	options = options || {};
+	options.autoPrint = true;
+	win = win || null;
+
+	this._openPdf(options, win);
+};
+
+Document.prototype.download = function (defaultFileName, cb, options) {
+	if (isFunction(defaultFileName)) {
+		cb = defaultFileName;
+		defaultFileName = null;
+	}
+
+	defaultFileName = defaultFileName || 'file.pdf';
+	this.getBlob(function (result) {
+		saveAs(result, defaultFileName);
+
+		if (isFunction(cb)) {
+			cb();
+		}
+	}, options);
+};
+
+Document.prototype.getBase64 = function (cb, options) {
+	if (!cb) {
+		throw 'getBase64 is an async method and needs a callback argument';
+	}
+	this.getBuffer(function (buffer) {
+		cb(buffer.toString('base64'));
+	}, options);
+};
+
+Document.prototype.getDataUrl = function (cb, options) {
+	if (!cb) {
+		throw 'getDataUrl is an async method and needs a callback argument';
+	}
+	this.getBuffer(function (buffer) {
+		cb('data:application/pdf;base64,' + buffer.toString('base64'));
+	}, options);
+};
+
+Document.prototype.getBlob = function (cb, options) {
+	if (!cb) {
+		throw 'getBlob is an async method and needs a callback argument';
+	}
+	var that = this;
+	this.getBuffer(function (result) {
+		var blob = that._bufferToBlob(result);
+		cb(blob);
+	}, options);
+};
+
+Document.prototype.getBuffer = function (cb, options) {
+	if (!cb) {
+		throw 'getBuffer is an async method and needs a callback argument';
+	}
+	this._createDoc(options, function (buffer) {
+		cb(buffer);
+	});
+};
+
+module.exports = {
+	createPdf: function (docDefinition) {
+		if (!canCreatePdf()) {
+			throw 'Your browser does not provide the level of support needed';
+		}
+		return new Document(docDefinition, global.pdfMake.tableLayouts, global.pdfMake.fonts, global.pdfMake.vfs);
+	}
+};
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, __webpack_require__(7)))
+
+/***/ }),
+/* 124 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.byteLength = byteLength
+exports.toByteArray = toByteArray
+exports.fromByteArray = fromByteArray
+
+var lookup = []
+var revLookup = []
+var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
+
+var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+for (var i = 0, len = code.length; i < len; ++i) {
+  lookup[i] = code[i]
+  revLookup[code.charCodeAt(i)] = i
+}
+
+// Support decoding URL-safe base64 strings, as Node.js does.
+// See: https://en.wikipedia.org/wiki/Base64#URL_applications
+revLookup['-'.charCodeAt(0)] = 62
+revLookup['_'.charCodeAt(0)] = 63
+
+function placeHoldersCount (b64) {
+  var len = b64.length
+  if (len % 4 > 0) {
+    throw new Error('Invalid string. Length must be a multiple of 4')
+  }
+
+  // the number of equal signs (place holders)
+  // if there are two placeholders, than the two characters before it
+  // represent one byte
+  // if there is only one, then the three characters before it represent 2 bytes
+  // this is just a cheap hack to not do indexOf twice
+  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
+}
+
+function byteLength (b64) {
+  // base64 is 4/3 + up to two characters of the original data
+  return (b64.length * 3 / 4) - placeHoldersCount(b64)
+}
+
+function toByteArray (b64) {
+  var i, l, tmp, placeHolders, arr
+  var len = b64.length
+  placeHolders = placeHoldersCount(b64)
+
+  arr = new Arr((len * 3 / 4) - placeHolders)
+
+  // if there are placeholders, only get up to the last complete 4 chars
+  l = placeHolders > 0 ? len - 4 : len
+
+  var L = 0
+
+  for (i = 0; i < l; i += 4) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
+    arr[L++] = (tmp >> 16) & 0xFF
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  if (placeHolders === 2) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
+    arr[L++] = tmp & 0xFF
+  } else if (placeHolders === 1) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  return arr
+}
+
+function tripletToBase64 (num) {
+  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
+}
+
+function encodeChunk (uint8, start, end) {
+  var tmp
+  var output = []
+  for (var i = start; i < end; i += 3) {
+    tmp = ((uint8[i] << 16) & 0xFF0000) + ((uint8[i + 1] << 8) & 0xFF00) + (uint8[i + 2] & 0xFF)
+    output.push(tripletToBase64(tmp))
+  }
+  return output.join('')
+}
+
+function fromByteArray (uint8) {
+  var tmp
+  var len = uint8.length
+  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
+  var output = ''
+  var parts = []
+  var maxChunkLength = 16383 // must be multiple of 3
+
+  // go through the array every three bytes, we'll deal with trailing stuff later
+  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
+    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
+  }
+
+  // pad the end with zeros, but make sure to not forget the extra bytes
+  if (extraBytes === 1) {
+    tmp = uint8[len - 1]
+    output += lookup[tmp >> 2]
+    output += lookup[(tmp << 4) & 0x3F]
+    output += '=='
+  } else if (extraBytes === 2) {
+    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
+    output += lookup[tmp >> 10]
+    output += lookup[(tmp >> 4) & 0x3F]
+    output += lookup[(tmp << 2) & 0x3F]
+    output += '='
+  }
+
+  parts.push(output)
+
+  return parts.join('')
+}
+
+
+/***/ }),
+/* 125 */
+/***/ (function(module, exports) {
+
+exports.read = function (buffer, offset, isLE, mLen, nBytes) {
+  var e, m
+  var eLen = nBytes * 8 - mLen - 1
+  var eMax = (1 << eLen) - 1
+  var eBias = eMax >> 1
+  var nBits = -7
+  var i = isLE ? (nBytes - 1) : 0
+  var d = isLE ? -1 : 1
+  var s = buffer[offset + i]
+
+  i += d
+
+  e = s & ((1 << (-nBits)) - 1)
+  s >>= (-nBits)
+  nBits += eLen
+  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+  m = e & ((1 << (-nBits)) - 1)
+  e >>= (-nBits)
+  nBits += mLen
+  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+  if (e === 0) {
+    e = 1 - eBias
+  } else if (e === eMax) {
+    return m ? NaN : ((s ? -1 : 1) * Infinity)
+  } else {
+    m = m + Math.pow(2, mLen)
+    e = e - eBias
+  }
+  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
+}
+
+exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
+  var e, m, c
+  var eLen = nBytes * 8 - mLen - 1
+  var eMax = (1 << eLen) - 1
+  var eBias = eMax >> 1
+  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
+  var i = isLE ? 0 : (nBytes - 1)
+  var d = isLE ? 1 : -1
+  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
+
+  value = Math.abs(value)
+
+  if (isNaN(value) || value === Infinity) {
+    m = isNaN(value) ? 1 : 0
+    e = eMax
+  } else {
+    e = Math.floor(Math.log(value) / Math.LN2)
+    if (value * (c = Math.pow(2, -e)) < 1) {
+      e--
+      c *= 2
+    }
+    if (e + eBias >= 1) {
+      value += rt / c
+    } else {
+      value += rt * Math.pow(2, 1 - eBias)
+    }
+    if (value * c >= 2) {
+      e++
+      c /= 2
+    }
+
+    if (e + eBias >= eMax) {
+      m = 0
+      e = eMax
+    } else if (e + eBias >= 1) {
+      m = (value * c - 1) * Math.pow(2, mLen)
+      e = e + eBias
+    } else {
+      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
+      e = 0
+    }
+  }
+
+  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
+
+  e = (e << mLen) | m
+  eLen += mLen
+  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
+
+  buffer[offset + i - d] |= s * 128
+}
+
+
+/***/ }),
+/* 126 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/*eslint no-unused-vars: ["error", {"args": "none"}]*/
+
+
+var FontProvider = __webpack_require__(127);
+var LayoutBuilder = __webpack_require__(128);
+var PdfKit = __webpack_require__(138);
+var sizes = __webpack_require__(303);
+var ImageMeasure = __webpack_require__(304);
+var textDecorator = __webpack_require__(305);
+var TextTools = __webpack_require__(42);
+var isFunction = __webpack_require__(0).isFunction;
+var isString = __webpack_require__(0).isString;
+var isNumber = __webpack_require__(0).isNumber;
+var isBoolean = __webpack_require__(0).isBoolean;
+var isArray = __webpack_require__(0).isArray;
+
+////////////////////////////////////////
+// PdfPrinter
+
+/**
+ * @class Creates an instance of a PdfPrinter which turns document definition into a pdf
+ *
+ * @param {Object} fontDescriptors font definition dictionary
+ *
+ * @example
+ * var fontDescriptors = {
+ *	Roboto: {
+ *		normal: 'fonts/Roboto-Regular.ttf',
+ *		bold: 'fonts/Roboto-Medium.ttf',
+ *		italics: 'fonts/Roboto-Italic.ttf',
+ *		bolditalics: 'fonts/Roboto-MediumItalic.ttf'
+ *	}
+ * };
+ *
+ * var printer = new PdfPrinter(fontDescriptors);
+ */
+function PdfPrinter(fontDescriptors) {
+	this.fontDescriptors = fontDescriptors;
+}
+
+/**
+ * Executes layout engine for the specified document and renders it into a pdfkit document
+ * ready to be saved.
+ *
+ * @param {Object} docDefinition document definition
+ * @param {Object} docDefinition.content an array describing the pdf structure (for more information take a look at the examples in the /examples folder)
+ * @param {Object} [docDefinition.defaultStyle] default (implicit) style definition
+ * @param {Object} [docDefinition.styles] dictionary defining all styles which can be used in the document
+ * @param {Object} [docDefinition.pageSize] page size (pdfkit units, A4 dimensions by default)
+ * @param {Number} docDefinition.pageSize.width width
+ * @param {Number} docDefinition.pageSize.height height
+ * @param {Object} [docDefinition.pageMargins] page margins (pdfkit units)
+ * @param {Number} docDefinition.maxPagesNumber maximum number of pages to render
+ *
+ * @example
+ *
+ * var docDefinition = {
+ * 	info: {
+ *		title: 'awesome Document',
+ *		author: 'john doe',
+ *		subject: 'subject of document',
+ *		keywords: 'keywords for document',
+ * 	},
+ *	content: [
+ *		'First paragraph',
+ *		'Second paragraph, this time a little bit longer',
+ *		{ text: 'Third paragraph, slightly bigger font size', fontSize: 20 },
+ *		{ text: 'Another paragraph using a named style', style: 'header' },
+ *		{ text: ['playing with ', 'inlines' ] },
+ *		{ text: ['and ', { text: 'restyling ', bold: true }, 'them'] },
+ *	],
+ *	styles: {
+ *		header: { fontSize: 30, bold: true }
+ *	}
+ * }
+ *
+ * var pdfKitDoc = printer.createPdfKitDocument(docDefinition);
+ *
+ * pdfKitDoc.pipe(fs.createWriteStream('sample.pdf'));
+ * pdfKitDoc.end();
+ *
+ * @return {Object} a pdfKit document object which can be saved or encode to data-url
+ */
+PdfPrinter.prototype.createPdfKitDocument = function (docDefinition, options) {
+	options = options || {};
+
+	var pageSize = fixPageSize(docDefinition.pageSize, docDefinition.pageOrientation);
+	var compressPdf = isBoolean(docDefinition.compress) ? docDefinition.compress : true;
+
+	this.pdfKitDoc = new PdfKit({size: [pageSize.width, pageSize.height], autoFirstPage: false, compress: compressPdf});
+	setMetadata(docDefinition, this.pdfKitDoc);
+
+	this.fontProvider = new FontProvider(this.fontDescriptors, this.pdfKitDoc);
+
+	docDefinition.images = docDefinition.images || {};
+
+	var builder = new LayoutBuilder(pageSize, fixPageMargins(docDefinition.pageMargins || 40), new ImageMeasure(this.pdfKitDoc, docDefinition.images));
+
+	registerDefaultTableLayouts(builder);
+	if (options.tableLayouts) {
+		builder.registerTableLayouts(options.tableLayouts);
+	}
+
+	var pages = builder.layoutDocument(docDefinition.content, this.fontProvider, docDefinition.styles || {}, docDefinition.defaultStyle || {fontSize: 12, font: 'Roboto'}, docDefinition.background, docDefinition.header, docDefinition.footer, docDefinition.images, docDefinition.watermark, docDefinition.pageBreakBefore);
+	var maxNumberPages = docDefinition.maxPagesNumber || -1;
+	if (isNumber(maxNumberPages) && maxNumberPages > -1) {
+		pages = pages.slice(0, maxNumberPages);
+	}
+
+	// if pageSize.height is set to Infinity, calculate the actual height of the page that
+	// was laid out using the height of each of the items in the page.
+	if (pageSize.height === Infinity) {
+		var pageHeight = calculatePageHeight(pages, docDefinition.pageMargins);
+		this.pdfKitDoc.options.size = [pageSize.width, pageHeight];
+	}
+
+	renderPages(pages, this.fontProvider, this.pdfKitDoc, options.progressCallback);
+
+	if (options.autoPrint) {
+		var printActionRef = this.pdfKitDoc.ref({
+			Type: 'Action',
+			S: 'Named',
+			N: 'Print'
+		});
+		this.pdfKitDoc._root.data.OpenAction = printActionRef;
+		printActionRef.end();
+	}
+	return this.pdfKitDoc;
+};
+
+function setMetadata(docDefinition, pdfKitDoc) {
+	// PDF standard has these properties reserved: Title, Author, Subject, Keywords,
+	// Creator, Producer, CreationDate, ModDate, Trapped.
+	// To keep the pdfmake api consistent, the info field are defined lowercase.
+	// Custom properties don't contain a space.
+	function standardizePropertyKey(key) {
+		var standardProperties = ['Title', 'Author', 'Subject', 'Keywords',
+			'Creator', 'Producer', 'CreationDate', 'ModDate', 'Trapped'];
+		var standardizedKey = key.charAt(0).toUpperCase() + key.slice(1);
+		if (standardProperties.indexOf(standardizedKey) !== -1) {
+			return standardizedKey;
+		}
+
+		return key.replace(/\s+/g, '');
+	}
+
+	pdfKitDoc.info.Producer = 'pdfmake';
+	pdfKitDoc.info.Creator = 'pdfmake';
+
+	if (docDefinition.info) {
+		for (var key in docDefinition.info) {
+			var value = docDefinition.info[key];
+			if (value) {
+				key = standardizePropertyKey(key);
+				pdfKitDoc.info[key] = value;
+			}
+		}
+	}
+}
+
+function calculatePageHeight(pages, margins) {
+	function getItemHeight(item) {
+		if (isFunction(item.item.getHeight)) {
+			return item.item.getHeight();
+		} else if (item.item._height) {
+			return item.item._height;
+		} else {
+			// TODO: add support for next item types
+			return 0;
+		}
+	}
+
+	var fixedMargins = fixPageMargins(margins || 40);
+	var height = fixedMargins.top + fixedMargins.bottom;
+	pages.forEach(function (page) {
+		page.items.forEach(function (item) {
+			height += getItemHeight(item);
+		});
+	});
+	return height;
+}
+
+function fixPageSize(pageSize, pageOrientation) {
+	function isNeedSwapPageSizes(pageOrientation) {
+		if (isString(pageOrientation)) {
+			pageOrientation = pageOrientation.toLowerCase();
+			return ((pageOrientation === 'portrait') && (size.width > size.height)) ||
+				((pageOrientation === 'landscape') && (size.width < size.height));
+		}
+		return false;
+	}
+
+	// if pageSize.height is set to auto, set the height to infinity so there are no page breaks.
+	if (pageSize && pageSize.height === 'auto') {
+		pageSize.height = Infinity;
+	}
+
+	var size = pageSize2widthAndHeight(pageSize || 'A4');
+	if (isNeedSwapPageSizes(pageOrientation)) { // swap page sizes
+		size = {width: size.height, height: size.width};
+	}
+	size.orientation = size.width > size.height ? 'landscape' : 'portrait';
+	return size;
+}
+
+function fixPageMargins(margin) {
+	if (!margin) {
+		return null;
+	}
+
+	if (isNumber(margin)) {
+		margin = {left: margin, right: margin, top: margin, bottom: margin};
+	} else if (isArray(margin)) {
+		if (margin.length === 2) {
+			margin = {left: margin[0], top: margin[1], right: margin[0], bottom: margin[1]};
+		} else if (margin.length === 4) {
+			margin = {left: margin[0], top: margin[1], right: margin[2], bottom: margin[3]};
+		} else {
+			throw 'Invalid pageMargins definition';
+		}
+	}
+
+	return margin;
+}
+
+function registerDefaultTableLayouts(layoutBuilder) {
+	layoutBuilder.registerTableLayouts({
+		noBorders: {
+			hLineWidth: function (i) {
+				return 0;
+			},
+			vLineWidth: function (i) {
+				return 0;
+			},
+			paddingLeft: function (i) {
+				return i && 4 || 0;
+			},
+			paddingRight: function (i, node) {
+				return (i < node.table.widths.length - 1) ? 4 : 0;
+			}
+		},
+		headerLineOnly: {
+			hLineWidth: function (i, node) {
+				if (i === 0 || i === node.table.body.length) {
+					return 0;
+				}
+				return (i === node.table.headerRows) ? 2 : 0;
+			},
+			vLineWidth: function (i) {
+				return 0;
+			},
+			paddingLeft: function (i) {
+				return i === 0 ? 0 : 8;
+			},
+			paddingRight: function (i, node) {
+				return (i === node.table.widths.length - 1) ? 0 : 8;
+			}
+		},
+		lightHorizontalLines: {
+			hLineWidth: function (i, node) {
+				if (i === 0 || i === node.table.body.length) {
+					return 0;
+				}
+				return (i === node.table.headerRows) ? 2 : 1;
+			},
+			vLineWidth: function (i) {
+				return 0;
+			},
+			hLineColor: function (i) {
+				return i === 1 ? 'black' : '#aaa';
+			},
+			paddingLeft: function (i) {
+				return i === 0 ? 0 : 8;
+			},
+			paddingRight: function (i, node) {
+				return (i === node.table.widths.length - 1) ? 0 : 8;
+			}
+		}
+	});
+}
+
+function pageSize2widthAndHeight(pageSize) {
+	if (isString(pageSize)) {
+		var size = sizes[pageSize.toUpperCase()];
+		if (!size) {
+			throw 'Page size ' + pageSize + ' not recognized';
+		}
+		return {width: size[0], height: size[1]};
+	}
+
+	return pageSize;
+}
+
+function updatePageOrientationInOptions(currentPage, pdfKitDoc) {
+	var previousPageOrientation = pdfKitDoc.options.size[0] > pdfKitDoc.options.size[1] ? 'landscape' : 'portrait';
+
+	if (currentPage.pageSize.orientation !== previousPageOrientation) {
+		var width = pdfKitDoc.options.size[0];
+		var height = pdfKitDoc.options.size[1];
+		pdfKitDoc.options.size = [height, width];
+	}
+}
+
+function renderPages(pages, fontProvider, pdfKitDoc, progressCallback) {
+	pdfKitDoc._pdfMakePages = pages;
+	pdfKitDoc.addPage();
+
+	var totalItems = 0;
+	if (progressCallback) {
+		pages.forEach(function (page) {
+			totalItems += page.items.length;
+		});
+	}
+
+	var renderedItems = 0;
+	progressCallback = progressCallback || function () {};
+
+	for (var i = 0; i < pages.length; i++) {
+		if (i > 0) {
+			updatePageOrientationInOptions(pages[i], pdfKitDoc);
+			pdfKitDoc.addPage(pdfKitDoc.options);
+		}
+
+		var page = pages[i];
+		for (var ii = 0, il = page.items.length; ii < il; ii++) {
+			var item = page.items[ii];
+			switch (item.type) {
+				case 'vector':
+					renderVector(item.item, pdfKitDoc);
+					break;
+				case 'line':
+					renderLine(item.item, item.item.x, item.item.y, pdfKitDoc);
+					break;
+				case 'image':
+					renderImage(item.item, item.item.x, item.item.y, pdfKitDoc);
+					break;
+				case 'beginClip':
+					beginClip(item.item, pdfKitDoc);
+					break;
+				case 'endClip':
+					endClip(pdfKitDoc);
+					break;
+			}
+			renderedItems++;
+			progressCallback(renderedItems / totalItems);
+		}
+		if (page.watermark) {
+			renderWatermark(page, pdfKitDoc);
+		}
+	}
+}
+
+function renderLine(line, x, y, pdfKitDoc) {
+	if (line._pageNodeRef) {
+		var newWidth;
+		var diffWidth;
+		var textTools = new TextTools(null);
+		var pageNumber = line._pageNodeRef.positions[0].pageNumber.toString();
+
+		line.inlines[0].text = pageNumber;
+		line.inlines[0].linkToPage = pageNumber;
+		newWidth = textTools.widthOfString(line.inlines[0].text, line.inlines[0].font, line.inlines[0].fontSize, line.inlines[0].characterSpacing, line.inlines[0].fontFeatures);
+		diffWidth = line.inlines[0].width - newWidth;
+		line.inlines[0].width = newWidth;
+
+		switch (line.inlines[0].alignment) {
+			case 'right':
+				line.inlines[0].x += diffWidth;
+				break;
+			case 'center':
+				line.inlines[0].x += diffWidth / 2;
+				break;
+		}
+	}
+
+	x = x || 0;
+	y = y || 0;
+
+	var lineHeight = line.getHeight();
+	var ascenderHeight = line.getAscenderHeight();
+	var descent = lineHeight - ascenderHeight;
+
+	textDecorator.drawBackground(line, x, y, pdfKitDoc);
+
+	//TODO: line.optimizeInlines();
+	for (var i = 0, l = line.inlines.length; i < l; i++) {
+		var inline = line.inlines[i];
+		var shiftToBaseline = lineHeight - ((inline.font.ascender / 1000) * inline.fontSize) - descent;
+		var options = {
+			lineBreak: false,
+			textWidth: inline.width,
+			characterSpacing: inline.characterSpacing,
+			wordCount: 1,
+			link: inline.link
+		};
+
+		if (inline.fontFeatures) {
+			options.features = inline.fontFeatures;
+		}
+
+		pdfKitDoc.fill(inline.color || 'black');
+
+		pdfKitDoc._font = inline.font;
+		pdfKitDoc.fontSize(inline.fontSize);
+		pdfKitDoc.text(inline.text, x + inline.x, y + shiftToBaseline, options);
+
+		if (inline.linkToPage) {
+			var _ref = pdfKitDoc.ref({Type: 'Action', S: 'GoTo', D: [inline.linkToPage, 0, 0]}).end();
+			pdfKitDoc.annotate(x + inline.x, y + shiftToBaseline, inline.width, inline.height, {Subtype: 'Link', Dest: [inline.linkToPage - 1, 'XYZ', null, null, null]});
+		}
+
+	}
+
+	textDecorator.drawDecorations(line, x, y, pdfKitDoc);
+}
+
+function renderWatermark(page, pdfKitDoc) {
+	var watermark = page.watermark;
+
+	pdfKitDoc.fill(watermark.color);
+	pdfKitDoc.opacity(watermark.opacity);
+
+	pdfKitDoc.save();
+
+	var angle = Math.atan2(pdfKitDoc.page.height, pdfKitDoc.page.width) * -180 / Math.PI;
+	pdfKitDoc.rotate(angle, {origin: [pdfKitDoc.page.width / 2, pdfKitDoc.page.height / 2]});
+
+	var x = pdfKitDoc.page.width / 2 - watermark.size.size.width / 2;
+	var y = pdfKitDoc.page.height / 2 - watermark.size.size.height / 4;
+
+	pdfKitDoc._font = watermark.font;
+	pdfKitDoc.fontSize(watermark.size.fontSize);
+	pdfKitDoc.text(watermark.text, x, y, {lineBreak: false});
+
+	pdfKitDoc.restore();
+}
+
+function renderVector(vector, pdfKitDoc) {
+	//TODO: pdf optimization (there's no need to write all properties everytime)
+	pdfKitDoc.lineWidth(vector.lineWidth || 1);
+	if (vector.dash) {
+		pdfKitDoc.dash(vector.dash.length, {space: vector.dash.space || vector.dash.length, phase: vector.dash.phase || 0});
+	} else {
+		pdfKitDoc.undash();
+	}
+	pdfKitDoc.lineJoin(vector.lineJoin || 'miter');
+	pdfKitDoc.lineCap(vector.lineCap || 'butt');
+
+	//TODO: clipping
+
+	switch (vector.type) {
+		case 'ellipse':
+			pdfKitDoc.ellipse(vector.x, vector.y, vector.r1, vector.r2);
+			break;
+		case 'rect':
+			if (vector.r) {
+				pdfKitDoc.roundedRect(vector.x, vector.y, vector.w, vector.h, vector.r);
+			} else {
+				pdfKitDoc.rect(vector.x, vector.y, vector.w, vector.h);
+			}
+
+			if (vector.linearGradient) {
+				var gradient = pdfKitDoc.linearGradient(vector.x, vector.y, vector.x + vector.w, vector.y);
+				var step = 1 / (vector.linearGradient.length - 1);
+
+				for (var i = 0; i < vector.linearGradient.length; i++) {
+					gradient.stop(i * step, vector.linearGradient[i]);
+				}
+
+				vector.color = gradient;
+			}
+			break;
+		case 'line':
+			pdfKitDoc.moveTo(vector.x1, vector.y1);
+			pdfKitDoc.lineTo(vector.x2, vector.y2);
+			break;
+		case 'polyline':
+			if (vector.points.length === 0) {
+				break;
+			}
+
+			pdfKitDoc.moveTo(vector.points[0].x, vector.points[0].y);
+			for (var i = 1, l = vector.points.length; i < l; i++) {
+				pdfKitDoc.lineTo(vector.points[i].x, vector.points[i].y);
+			}
+
+			if (vector.points.length > 1) {
+				var p1 = vector.points[0];
+				var pn = vector.points[vector.points.length - 1];
+
+				if (vector.closePath || p1.x === pn.x && p1.y === pn.y) {
+					pdfKitDoc.closePath();
+				}
+			}
+			break;
+		case 'path':
+			pdfKitDoc.path(vector.d);
+			break;
+	}
+
+	if (vector.color && vector.lineColor) {
+		pdfKitDoc.fillColor(vector.color, vector.fillOpacity || 1);
+		pdfKitDoc.strokeColor(vector.lineColor, vector.strokeOpacity || 1);
+		pdfKitDoc.fillAndStroke();
+	} else if (vector.color) {
+		pdfKitDoc.fillColor(vector.color, vector.fillOpacity || 1);
+		pdfKitDoc.fill();
+	} else {
+		pdfKitDoc.strokeColor(vector.lineColor || 'black', vector.strokeOpacity || 1);
+		pdfKitDoc.stroke();
+	}
+}
+
+function renderImage(image, x, y, pdfKitDoc) {
+	pdfKitDoc.image(image.image, image.x, image.y, {width: image._width, height: image._height});
+	if (image.link) {
+		pdfKitDoc.link(image.x, image.y, image._width, image._height, image.link);
+	}
+}
+
+function beginClip(rect, pdfKitDoc) {
+	pdfKitDoc.save();
+	pdfKitDoc.addContent('' + rect.x + ' ' + rect.y + ' ' + rect.width + ' ' + rect.height + ' re');
+	pdfKitDoc.clip();
+}
+
+function endClip(pdfKitDoc) {
+	pdfKitDoc.restore();
+}
+
+module.exports = PdfPrinter;
+
+
+/***/ }),
+/* 127 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var isArray = __webpack_require__(0).isArray;
+
+function typeName(bold, italics) {
+	var type = 'normal';
+	if (bold && italics) {
+		type = 'bolditalics';
+	} else if (bold) {
+		type = 'bold';
+	} else if (italics) {
+		type = 'italics';
+	}
+	return type;
+}
+
+function FontProvider(fontDescriptors, pdfKitDoc) {
+	this.fonts = {};
+	this.pdfKitDoc = pdfKitDoc;
+	this.fontCache = {};
+
+	for (var font in fontDescriptors) {
+		if (fontDescriptors.hasOwnProperty(font)) {
+			var fontDef = fontDescriptors[font];
+
+			this.fonts[font] = {
+				normal: fontDef.normal,
+				bold: fontDef.bold,
+				italics: fontDef.italics,
+				bolditalics: fontDef.bolditalics
+			};
+		}
+	}
+}
+
+FontProvider.prototype.provideFont = function (familyName, bold, italics) {
+	var type = typeName(bold, italics);
+	if (!this.fonts[familyName] || !this.fonts[familyName][type]) {
+		throw new Error('Font \'' + familyName + '\' in style \'' + type + '\' is not defined in the font section of the document definition.');
+	}
+
+	this.fontCache[familyName] = this.fontCache[familyName] || {};
+
+	if (!this.fontCache[familyName][type]) {
+		var def = this.fonts[familyName][type];
+		if (!isArray(def)) {
+			def = [def];
+		}
+		this.fontCache[familyName][type] = this.pdfKitDoc.font.apply(this.pdfKitDoc, def)._font;
+	}
+
+	return this.fontCache[familyName][type];
+};
+
+module.exports = FontProvider;
+
+
+/***/ }),
+/* 128 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var TraversalTracker = __webpack_require__(77);
+var DocPreprocessor = __webpack_require__(129);
+var DocMeasure = __webpack_require__(130);
+var DocumentContext = __webpack_require__(81);
+var PageElementWriter = __webpack_require__(135);
+var ColumnCalculator = __webpack_require__(44);
+var TableProcessor = __webpack_require__(137);
+var Line = __webpack_require__(82);
+var isString = __webpack_require__(0).isString;
+var isArray = __webpack_require__(0).isArray;
+var pack = __webpack_require__(0).pack;
+var offsetVector = __webpack_require__(0).offsetVector;
+var fontStringify = __webpack_require__(0).fontStringify;
+var isFunction = __webpack_require__(0).isFunction;
+var TextTools = __webpack_require__(42);
+var StyleContextStack = __webpack_require__(80);
+
+function addAll(target, otherArray) {
+	otherArray.forEach(function (item) {
+		target.push(item);
+	});
+}
+
+/**
+ * Creates an instance of LayoutBuilder - layout engine which turns document-definition-object
+ * into a set of pages, lines, inlines and vectors ready to be rendered into a PDF
+ *
+ * @param {Object} pageSize - an object defining page width and height
+ * @param {Object} pageMargins - an object defining top, left, right and bottom margins
+ */
+function LayoutBuilder(pageSize, pageMargins, imageMeasure) {
+	this.pageSize = pageSize;
+	this.pageMargins = pageMargins;
+	this.tracker = new TraversalTracker();
+	this.imageMeasure = imageMeasure;
+	this.tableLayouts = {};
+}
+
+LayoutBuilder.prototype.registerTableLayouts = function (tableLayouts) {
+	this.tableLayouts = pack(this.tableLayouts, tableLayouts);
+};
+
+/**
+ * Executes layout engine on document-definition-object and creates an array of pages
+ * containing positioned Blocks, Lines and inlines
+ *
+ * @param {Object} docStructure document-definition-object
+ * @param {Object} fontProvider font provider
+ * @param {Object} styleDictionary dictionary with style definitions
+ * @param {Object} defaultStyle default style definition
+ * @return {Array} an array of pages
+ */
+LayoutBuilder.prototype.layoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {
+
+	function addPageBreaksIfNecessary(linearNodeList, pages) {
+
+		if (!isFunction(pageBreakBeforeFct)) {
+			return false;
+		}
+
+		linearNodeList = linearNodeList.filter(function (node) {
+			return node.positions.length > 0;
+		});
+
+		linearNodeList.forEach(function (node) {
+			var nodeInfo = {};
+			[
+				'id', 'text', 'ul', 'ol', 'table', 'image', 'qr', 'canvas', 'columns',
+				'headlineLevel', 'style', 'pageBreak', 'pageOrientation',
+				'width', 'height'
+			].forEach(function (key) {
+				if (node[key] !== undefined) {
+					nodeInfo[key] = node[key];
+				}
+			});
+			nodeInfo.startPosition = node.positions[0];
+			nodeInfo.pageNumbers = node.positions.map(function (node) {
+				return node.pageNumber;
+			}).filter(function (element, position, array) {
+				return array.indexOf(element) === position;
+			});
+			nodeInfo.pages = pages.length;
+			nodeInfo.stack = isArray(node.stack);
+
+			node.nodeInfo = nodeInfo;
+		});
+
+		return linearNodeList.some(function (node, index, followingNodeList) {
+			if (node.pageBreak !== 'before' && !node.pageBreakCalculated) {
+				node.pageBreakCalculated = true;
+				var pageNumber = node.nodeInfo.pageNumbers[0];
+
+				var followingNodesOnPage = followingNodeList.slice(index + 1).filter(function (node0) {
+					return node0.nodeInfo.pageNumbers.indexOf(pageNumber) > -1;
+				});
+
+				var nodesOnNextPage = followingNodeList.slice(index + 1).filter(function (node0) {
+					return node0.nodeInfo.pageNumbers.indexOf(pageNumber + 1) > -1;
+				});
+
+				var previousNodesOnPage = followingNodeList.slice(0, index).filter(function (node0) {
+					return node0.nodeInfo.pageNumbers.indexOf(pageNumber) > -1;
+				});
+
+				if (
+					pageBreakBeforeFct(
+						node.nodeInfo,
+						followingNodesOnPage.map(function (node) {
+							return node.nodeInfo;
+						}),
+						nodesOnNextPage.map(function (node) {
+							return node.nodeInfo;
+						}),
+						previousNodesOnPage.map(function (node) {
+							return node.nodeInfo;
+						}))) {
+					node.pageBreak = 'before';
+					return true;
+				}
+			}
+		});
+	}
+
+	this.docPreprocessor = new DocPreprocessor();
+	this.docMeasure = new DocMeasure(fontProvider, styleDictionary, defaultStyle, this.imageMeasure, this.tableLayouts, images);
+
+
+	function resetXYs(result) {
+		result.linearNodeList.forEach(function (node) {
+			node.resetXY();
+		});
+	}
+
+	var result = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);
+	while (addPageBreaksIfNecessary(result.linearNodeList, result.pages)) {
+		resetXYs(result);
+		result = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);
+	}
+
+	return result.pages;
+};
+
+LayoutBuilder.prototype.tryLayoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {
+
+	this.linearNodeList = [];
+	docStructure = this.docPreprocessor.preprocessDocument(docStructure);
+	docStructure = this.docMeasure.measureDocument(docStructure);
+
+	this.writer = new PageElementWriter(
+		new DocumentContext(this.pageSize, this.pageMargins), this.tracker);
+
+	var _this = this;
+	this.writer.context().tracker.startTracking('pageAdded', function () {
+		_this.addBackground(background);
+	});
+
+	this.addBackground(background);
+	this.processNode(docStructure);
+	this.addHeadersAndFooters(header, footer);
+	if (watermark != null) {
+		this.addWatermark(watermark, fontProvider, defaultStyle);
+	}
+
+	return {pages: this.writer.context().pages, linearNodeList: this.linearNodeList};
+};
+
+
+LayoutBuilder.prototype.addBackground = function (background) {
+	var backgroundGetter = isFunction(background) ? background : function () {
+		return background;
+	};
+
+	var pageBackground = backgroundGetter(this.writer.context().page + 1);
+
+	if (pageBackground) {
+		var pageSize = this.writer.context().getCurrentPage().pageSize;
+		this.writer.beginUnbreakableBlock(pageSize.width, pageSize.height);
+		pageBackground = this.docPreprocessor.preprocessDocument(pageBackground);
+		this.processNode(this.docMeasure.measureDocument(pageBackground));
+		this.writer.commitUnbreakableBlock(0, 0);
+		this.writer.context().hasBackground = true;
+	}
+};
+
+LayoutBuilder.prototype.addStaticRepeatable = function (headerOrFooter, sizeFunction) {
+	this.addDynamicRepeatable(function () {
+		return JSON.parse(JSON.stringify(headerOrFooter)); // copy to new object
+	}, sizeFunction);
+};
+
+LayoutBuilder.prototype.addDynamicRepeatable = function (nodeGetter, sizeFunction) {
+	var pages = this.writer.context().pages;
+
+	for (var pageIndex = 0, l = pages.length; pageIndex < l; pageIndex++) {
+		this.writer.context().page = pageIndex;
+
+		var node = nodeGetter(pageIndex + 1, l, this.writer.context().pages[pageIndex].pageSize);
+
+		if (node) {
+			var sizes = sizeFunction(this.writer.context().getCurrentPage().pageSize, this.pageMargins);
+			this.writer.beginUnbreakableBlock(sizes.width, sizes.height);
+			node = this.docPreprocessor.preprocessDocument(node);
+			this.processNode(this.docMeasure.measureDocument(node));
+			this.writer.commitUnbreakableBlock(sizes.x, sizes.y);
+		}
+	}
+};
+
+LayoutBuilder.prototype.addHeadersAndFooters = function (header, footer) {
+	var headerSizeFct = function (pageSize, pageMargins) {
+		return {
+			x: 0,
+			y: 0,
+			width: pageSize.width,
+			height: pageMargins.top
+		};
+	};
+
+	var footerSizeFct = function (pageSize, pageMargins) {
+		return {
+			x: 0,
+			y: pageSize.height - pageMargins.bottom,
+			width: pageSize.width,
+			height: pageMargins.bottom
+		};
+	};
+
+	if (isFunction(header)) {
+		this.addDynamicRepeatable(header, headerSizeFct);
+	} else if (header) {
+		this.addStaticRepeatable(header, headerSizeFct);
+	}
+
+	if (isFunction(footer)) {
+		this.addDynamicRepeatable(footer, footerSizeFct);
+	} else if (footer) {
+		this.addStaticRepeatable(footer, footerSizeFct);
+	}
+};
+
+LayoutBuilder.prototype.addWatermark = function (watermark, fontProvider, defaultStyle) {
+	if (isString(watermark)) {
+		watermark = {'text': watermark};
+	}
+
+	if (!watermark.text) { // empty watermark text
+		return;
+	}
+
+	watermark.font = watermark.font || defaultStyle.font || 'Roboto';
+	watermark.color = watermark.color || 'black';
+	watermark.opacity = watermark.opacity || 0.6;
+	watermark.bold = watermark.bold || false;
+	watermark.italics = watermark.italics || false;
+
+	var watermarkObject = {
+		text: watermark.text,
+		font: fontProvider.provideFont(watermark.font, watermark.bold, watermark.italics),
+		size: getSize(this.pageSize, watermark, fontProvider),
+		color: watermark.color,
+		opacity: watermark.opacity
+	};
+
+	var pages = this.writer.context().pages;
+	for (var i = 0, l = pages.length; i < l; i++) {
+		pages[i].watermark = watermarkObject;
+	}
+
+	function getSize(pageSize, watermark, fontProvider) {
+		var width = pageSize.width;
+		var height = pageSize.height;
+		var targetWidth = Math.sqrt(width * width + height * height) * 0.8; /* page diagonal * sample factor */
+		var textTools = new TextTools(fontProvider);
+		var styleContextStack = new StyleContextStack(null, {font: watermark.font, bold: watermark.bold, italics: watermark.italics});
+		var size;
+
+		/**
+		 * Binary search the best font size.
+		 * Initial bounds [0, 1000]
+		 * Break when range < 1
+		 */
+		var a = 0;
+		var b = 1000;
+		var c = (a + b) / 2;
+		while (Math.abs(a - b) > 1) {
+			styleContextStack.push({
+				fontSize: c
+			});
+			size = textTools.sizeOfString(watermark.text, styleContextStack);
+			if (size.width > targetWidth) {
+				b = c;
+				c = (a + b) / 2;
+			} else if (size.width < targetWidth) {
+				a = c;
+				c = (a + b) / 2;
+			}
+			styleContextStack.pop();
+		}
+		/*
+		 End binary search
+		 */
+		return {size: size, fontSize: c};
+	}
+};
+
+function decorateNode(node) {
+	var x = node.x, y = node.y;
+	node.positions = [];
+
+	if (isArray(node.canvas)) {
+		node.canvas.forEach(function (vector) {
+			var x = vector.x, y = vector.y, x1 = vector.x1, y1 = vector.y1, x2 = vector.x2, y2 = vector.y2;
+			vector.resetXY = function () {
+				vector.x = x;
+				vector.y = y;
+				vector.x1 = x1;
+				vector.y1 = y1;
+				vector.x2 = x2;
+				vector.y2 = y2;
+			};
+		});
+	}
+
+	node.resetXY = function () {
+		node.x = x;
+		node.y = y;
+		if (isArray(node.canvas)) {
+			node.canvas.forEach(function (vector) {
+				vector.resetXY();
+			});
+		}
+	};
+}
+
+LayoutBuilder.prototype.processNode = function (node) {
+	var self = this;
+
+	this.linearNodeList.push(node);
+	decorateNode(node);
+
+	applyMargins(function () {
+		var unbreakable = node.unbreakable;
+		if (unbreakable) {
+			self.writer.beginUnbreakableBlock();
+		}
+
+		var absPosition = node.absolutePosition;
+		if (absPosition) {
+			self.writer.context().beginDetachedBlock();
+			self.writer.context().moveTo(absPosition.x || 0, absPosition.y || 0);
+		}
+
+		var relPosition = node.relativePosition;
+		if (relPosition) {
+			self.writer.context().beginDetachedBlock();
+			self.writer.context().moveTo((relPosition.x || 0) + self.writer.context().x, (relPosition.y || 0) + self.writer.context().y);
+		}
+
+		if (node.stack) {
+			self.processVerticalContainer(node);
+		} else if (node.columns) {
+			self.processColumns(node);
+		} else if (node.ul) {
+			self.processList(false, node);
+		} else if (node.ol) {
+			self.processList(true, node);
+		} else if (node.table) {
+			self.processTable(node);
+		} else if (node.text !== undefined) {
+			self.processLeaf(node);
+		} else if (node.toc) {
+			self.processToc(node);
+		} else if (node.image) {
+			self.processImage(node);
+		} else if (node.canvas) {
+			self.processCanvas(node);
+		} else if (node.qr) {
+			self.processQr(node);
+		} else if (!node._span) {
+			throw 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);
+		}
+
+		if (absPosition || relPosition) {
+			self.writer.context().endDetachedBlock();
+		}
+
+		if (unbreakable) {
+			self.writer.commitUnbreakableBlock();
+		}
+	});
+
+	function applyMargins(callback) {
+		var margin = node._margin;
+
+		if (node.pageBreak === 'before') {
+			self.writer.moveToNextPage(node.pageOrientation);
+		}
+
+		if (margin) {
+			self.writer.context().moveDown(margin[1]);
+			self.writer.context().addMargin(margin[0], margin[2]);
+		}
+
+		callback();
+
+		if (margin) {
+			self.writer.context().addMargin(-margin[0], -margin[2]);
+			self.writer.context().moveDown(margin[3]);
+		}
+
+		if (node.pageBreak === 'after') {
+			self.writer.moveToNextPage(node.pageOrientation);
+		}
+	}
+};
+
+// vertical container
+LayoutBuilder.prototype.processVerticalContainer = function (node) {
+	var self = this;
+	node.stack.forEach(function (item) {
+		self.processNode(item);
+		addAll(node.positions, item.positions);
+
+		//TODO: paragraph gap
+	});
+};
+
+// columns
+LayoutBuilder.prototype.processColumns = function (columnNode) {
+	var columns = columnNode.columns;
+	var availableWidth = this.writer.context().availableWidth;
+	var gaps = gapArray(columnNode._gap);
+
+	if (gaps) {
+		availableWidth -= (gaps.length - 1) * columnNode._gap;
+	}
+
+	ColumnCalculator.buildColumnWidths(columns, availableWidth);
+	var result = this.processRow(columns, columns, gaps);
+	addAll(columnNode.positions, result.positions);
+
+
+	function gapArray(gap) {
+		if (!gap) {
+			return null;
+		}
+
+		var gaps = [];
+		gaps.push(0);
+
+		for (var i = columns.length - 1; i > 0; i--) {
+			gaps.push(gap);
+		}
+
+		return gaps;
+	}
+};
+
+LayoutBuilder.prototype.processRow = function (columns, widths, gaps, tableBody, tableRow, height) {
+	var self = this;
+	var pageBreaks = [], positions = [];
+
+	this.tracker.auto('pageChanged', storePageBreakData, function () {
+		widths = widths || columns;
+
+		self.writer.context().beginColumnGroup();
+
+		for (var i = 0, l = columns.length; i < l; i++) {
+			var column = columns[i];
+			var width = widths[i]._calcWidth;
+			var leftOffset = colLeftOffset(i);
+
+			if (column.colSpan && column.colSpan > 1) {
+				for (var j = 1; j < column.colSpan; j++) {
+					width += widths[++i]._calcWidth + gaps[i];
+				}
+			}
+
+			self.writer.context().beginColumn(width, leftOffset, getEndingCell(column, i));
+			if (!column._span) {
+				self.processNode(column);
+				addAll(positions, column.positions);
+			} else if (column._columnEndingContext) {
+				// row-span ending
+				self.writer.context().markEnding(column);
+			}
+		}
+
+		self.writer.context().completeColumnGroup(height);
+	});
+
+	return {pageBreaks: pageBreaks, positions: positions};
+
+	function storePageBreakData(data) {
+		var pageDesc;
+
+		for (var i = 0, l = pageBreaks.length; i < l; i++) {
+			var desc = pageBreaks[i];
+			if (desc.prevPage === data.prevPage) {
+				pageDesc = desc;
+				break;
+			}
+		}
+
+		if (!pageDesc) {
+			pageDesc = data;
+			pageBreaks.push(pageDesc);
+		}
+		pageDesc.prevY = Math.max(pageDesc.prevY, data.prevY);
+		pageDesc.y = Math.min(pageDesc.y, data.y);
+	}
+
+	function colLeftOffset(i) {
+		if (gaps && gaps.length > i) {
+			return gaps[i];
+		}
+		return 0;
+	}
+
+	function getEndingCell(column, columnIndex) {
+		if (column.rowSpan && column.rowSpan > 1) {
+			var endingRow = tableRow + column.rowSpan - 1;
+			if (endingRow >= tableBody.length) {
+				throw 'Row span for column ' + columnIndex + ' (with indexes starting from 0) exceeded row count';
+			}
+			return tableBody[endingRow][columnIndex];
+		}
+
+		return null;
+	}
+};
+
+// lists
+LayoutBuilder.prototype.processList = function (orderedList, node) {
+	var self = this,
+		items = orderedList ? node.ol : node.ul,
+		gapSize = node._gapSize;
+
+	this.writer.context().addMargin(gapSize.width);
+
+	var nextMarker;
+	this.tracker.auto('lineAdded', addMarkerToFirstLeaf, function () {
+		items.forEach(function (item) {
+			nextMarker = item.listMarker;
+			self.processNode(item);
+			addAll(node.positions, item.positions);
+		});
+	});
+
+	this.writer.context().addMargin(-gapSize.width);
+
+	function addMarkerToFirstLeaf(line) {
+		// I'm not very happy with the way list processing is implemented
+		// (both code and algorithm should be rethinked)
+		if (nextMarker) {
+			var marker = nextMarker;
+			nextMarker = null;
+
+			if (marker.canvas) {
+				var vector = marker.canvas[0];
+
+				offsetVector(vector, -marker._minWidth, 0);
+				self.writer.addVector(vector);
+			} else if (marker._inlines) {
+				var markerLine = new Line(self.pageSize.width);
+				markerLine.addInline(marker._inlines[0]);
+				markerLine.x = -marker._minWidth;
+				markerLine.y = line.getAscenderHeight() - markerLine.getAscenderHeight();
+				self.writer.addLine(markerLine, true);
+			}
+		}
+	}
+};
+
+// tables
+LayoutBuilder.prototype.processTable = function (tableNode) {
+	var processor = new TableProcessor(tableNode);
+
+	processor.beginTable(this.writer);
+
+	var rowHeights = tableNode.table.heights;
+	for (var i = 0, l = tableNode.table.body.length; i < l; i++) {
+		processor.beginRow(i, this.writer);
+
+		var height;
+		if (isFunction(rowHeights)) {
+			height = rowHeights(i);
+		} else if (isArray(rowHeights)) {
+			height = rowHeights[i];
+		} else {
+			height = rowHeights;
+		}
+
+		if (height === 'auto') {
+			height = undefined;
+		}
+
+		var result = this.processRow(tableNode.table.body[i], tableNode.table.widths, tableNode._offsets.offsets, tableNode.table.body, i, height);
+		addAll(tableNode.positions, result.positions);
+
+		processor.endRow(i, this.writer, result.pageBreaks);
+	}
+
+	processor.endTable(this.writer);
+};
+
+// leafs (texts)
+LayoutBuilder.prototype.processLeaf = function (node) {
+	var line = this.buildNextLine(node);
+	var currentHeight = (line) ? line.getHeight() : 0;
+	var maxHeight = node.maxHeight || -1;
+
+	if (node._tocItemRef) {
+		line._pageNodeRef = node._tocItemRef;
+	}
+
+	if (node._pageRef) {
+		line._pageNodeRef = node._pageRef._nodeRef;
+	}
+
+	while (line && (maxHeight === -1 || currentHeight < maxHeight)) {
+		var positions = this.writer.addLine(line);
+		node.positions.push(positions);
+		line = this.buildNextLine(node);
+		if (line) {
+			currentHeight += line.getHeight();
+		}
+	}
+};
+
+LayoutBuilder.prototype.processToc = function (node) {
+	if (node.toc.title) {
+		this.processNode(node.toc.title);
+	}
+	this.processNode(node.toc._table);
+};
+
+LayoutBuilder.prototype.buildNextLine = function (textNode) {
+
+	function cloneInline(inline) {
+		var newInline = inline.constructor();
+		for (var key in inline) {
+			newInline[key] = inline[key];
+		}
+		return newInline;
+	}
+
+	if (!textNode._inlines || textNode._inlines.length === 0) {
+		return null;
+	}
+
+	var line = new Line(this.writer.context().availableWidth);
+	var textTools = new TextTools(null);
+
+	while (textNode._inlines && textNode._inlines.length > 0 && line.hasEnoughSpaceForInline(textNode._inlines[0])) {
+		var inline = textNode._inlines.shift();
+
+		if (!inline.noWrap && inline.text.length > 1 && inline.width > line.maxWidth) {
+			var widthPerChar = inline.width / inline.text.length;
+			var maxChars = Math.floor(line.maxWidth / widthPerChar);
+			if (maxChars < 1) {
+				maxChars = 1;
+			}
+			if (maxChars < inline.text.length) {
+				var newInline = cloneInline(inline);
+
+				newInline.text = inline.text.substr(maxChars);
+				inline.text = inline.text.substr(0, maxChars);
+
+				newInline.width = textTools.widthOfString(newInline.text, newInline.font, newInline.fontSize, newInline.characterSpacing, newInline.fontFeatures);
+				inline.width = textTools.widthOfString(inline.text, inline.font, inline.fontSize, inline.characterSpacing, inline.fontFeatures);
+
+				textNode._inlines.unshift(newInline);
+			}
+		}
+
+		line.addInline(inline);
+	}
+
+	line.lastLineInParagraph = textNode._inlines.length === 0;
+
+	return line;
+};
+
+// images
+LayoutBuilder.prototype.processImage = function (node) {
+	var position = this.writer.addImage(node);
+	node.positions.push(position);
+};
+
+LayoutBuilder.prototype.processCanvas = function (node) {
+	var height = node._minHeight;
+
+	if (node.absolutePosition === undefined && this.writer.context().availableHeight < height) {
+		// TODO: support for canvas larger than a page
+		// TODO: support for other overflow methods
+
+		this.writer.moveToNextPage();
+	}
+
+	this.writer.alignCanvas(node);
+
+	node.canvas.forEach(function (vector) {
+		var position = this.writer.addVector(vector);
+		node.positions.push(position);
+	}, this);
+
+	this.writer.context().moveDown(height);
+};
+
+LayoutBuilder.prototype.processQr = function (node) {
+	var position = this.writer.addQr(node);
+	node.positions.push(position);
+};
+
+module.exports = LayoutBuilder;
+
+
+/***/ }),
+/* 129 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer) {
+
+var isString = __webpack_require__(0).isString;
+var isNumber = __webpack_require__(0).isNumber;
+var isBoolean = __webpack_require__(0).isBoolean;
+var isArray = __webpack_require__(0).isArray;
+var isUndefined = __webpack_require__(0).isUndefined;
+var fontStringify = __webpack_require__(0).fontStringify;
+
+function DocPreprocessor() {
+
+}
+
+DocPreprocessor.prototype.preprocessDocument = function (docStructure) {
+	this.tocs = [];
+	this.nodeReferences = [];
+	return this.preprocessNode(docStructure);
+};
+
+DocPreprocessor.prototype.preprocessNode = function (node) {
+	// expand shortcuts and casting values
+	if (isArray(node)) {
+		node = {stack: node};
+	} else if (isString(node)) {
+		node = {text: node};
+	} else if (isNumber(node) || isBoolean(node)) {
+		node = {text: node.toString()};
+	} else if (node === null) {
+		node = {text: ''};
+	} else if (Object.keys(node).length === 0) { // empty object
+		node = {text: ''};
+	}
+
+	if (node.columns) {
+		return this.preprocessColumns(node);
+	} else if (node.stack) {
+		return this.preprocessVerticalContainer(node);
+	} else if (node.ul) {
+		return this.preprocessList(node);
+	} else if (node.ol) {
+		return this.preprocessList(node);
+	} else if (node.table) {
+		return this.preprocessTable(node);
+	} else if (node.text !== undefined) {
+		return this.preprocessText(node);
+	} else if (node.toc) {
+		return this.preprocessToc(node);
+	} else if (node.image) {
+		return this.preprocessImage(node);
+	} else if (node.canvas) {
+		return this.preprocessCanvas(node);
+	} else if (node.qr) {
+		return this.preprocessQr(node);
+	} else if (node.pageReference || node.textReference) {
+		return this.preprocessText(node);
+	} else {
+		throw 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);
+	}
+};
+
+DocPreprocessor.prototype.preprocessColumns = function (node) {
+	var columns = node.columns;
+
+	for (var i = 0, l = columns.length; i < l; i++) {
+		columns[i] = this.preprocessNode(columns[i]);
+	}
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessVerticalContainer = function (node) {
+	var items = node.stack;
+
+	for (var i = 0, l = items.length; i < l; i++) {
+		items[i] = this.preprocessNode(items[i]);
+	}
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessList = function (node) {
+	var items = node.ul || node.ol;
+
+	for (var i = 0, l = items.length; i < l; i++) {
+		items[i] = this.preprocessNode(items[i]);
+	}
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessTable = function (node) {
+	var col, row, cols, rows;
+
+	for (col = 0, cols = node.table.body[0].length; col < cols; col++) {
+		for (row = 0, rows = node.table.body.length; row < rows; row++) {
+			var rowData = node.table.body[row];
+			var data = rowData[col];
+			if (data !== undefined) {
+				if (data === null) { // transform to object
+					data = '';
+				}
+				if (!data._span) {
+					rowData[col] = this.preprocessNode(data);
+				}
+			}
+		}
+	}
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessText = function (node) {
+	if (node.tocItem) {
+		if (!isArray(node.tocItem)) {
+			node.tocItem = [node.tocItem];
+		}
+
+		for (var i = 0, l = node.tocItem.length; i < l; i++) {
+			if (!isString(node.tocItem[i])) {
+				node.tocItem[i] = '_default_';
+			}
+
+			var tocItemId = node.tocItem[i];
+
+			if (!this.tocs[tocItemId]) {
+				this.tocs[tocItemId] = {toc: {_items: [], _pseudo: true}};
+			}
+
+			this.tocs[tocItemId].toc._items.push(node);
+		}
+	}
+
+	if (node.id) {
+		if (this.nodeReferences[node.id]) {
+			if (!this.nodeReferences[node.id]._pseudo) {
+				throw "Node id '" + node.id + "' already exists";
+			}
+
+			this.nodeReferences[node.id]._nodeRef = node;
+			this.nodeReferences[node.id]._pseudo = false;
+		} else {
+			this.nodeReferences[node.id] = {_nodeRef: node};
+		}
+	}
+
+	if (node.pageReference) {
+		if (!this.nodeReferences[node.pageReference]) {
+			this.nodeReferences[node.pageReference] = {_nodeRef: {}, _pseudo: true};
+		}
+		node.text = '00000';
+		node._pageRef = this.nodeReferences[node.pageReference];
+	}
+
+	if (node.textReference) {
+		if (!this.nodeReferences[node.textReference]) {
+			this.nodeReferences[node.textReference] = {_nodeRef: {}, _pseudo: true};
+		}
+
+		node.text = '';
+		node._textRef = this.nodeReferences[node.textReference];
+	}
+
+	if (node.text && node.text.text) {
+		node.text = [this.preprocessNode(node.text)];
+	}
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessToc = function (node) {
+	if (!node.toc.id) {
+		node.toc.id = '_default_';
+	}
+
+	node.toc.title = node.toc.title ? this.preprocessNode(node.toc.title) : null;
+	node.toc._items = [];
+
+	if (this.tocs[node.toc.id]) {
+		if (!this.tocs[node.toc.id].toc._pseudo) {
+			throw "TOC '" + node.toc.id + "' already exists";
+		}
+
+		node.toc._items = this.tocs[node.toc.id].toc._items;
+	}
+
+	this.tocs[node.toc.id] = node;
+
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessImage = function (node) {
+	if (!isUndefined(node.image.type) && !isUndefined(node.image.data) && (node.image.type === 'Buffer') && isArray(node.image.data)) {
+		node.image = Buffer.from(node.image.data);
+	}
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessCanvas = function (node) {
+	return node;
+};
+
+DocPreprocessor.prototype.preprocessQr = function (node) {
+	return node;
+};
+
+module.exports = DocPreprocessor;
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 130 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/*eslint no-unused-vars: ["error", {"args": "none"}]*/
+
+
+
+var TextTools = __webpack_require__(42);
+var StyleContextStack = __webpack_require__(80);
+var ColumnCalculator = __webpack_require__(44);
+var isString = __webpack_require__(0).isString;
+var isNumber = __webpack_require__(0).isNumber;
+var isObject = __webpack_require__(0).isObject;
+var isArray = __webpack_require__(0).isArray;
+var fontStringify = __webpack_require__(0).fontStringify;
+var pack = __webpack_require__(0).pack;
+var qrEncoder = __webpack_require__(134);
+
+/**
+ * @private
+ */
+function DocMeasure(fontProvider, styleDictionary, defaultStyle, imageMeasure, tableLayouts, images) {
+	this.textTools = new TextTools(fontProvider);
+	this.styleStack = new StyleContextStack(styleDictionary, defaultStyle);
+	this.imageMeasure = imageMeasure;
+	this.tableLayouts = tableLayouts;
+	this.images = images;
+	this.autoImageIndex = 1;
+}
+
+/**
+ * Measures all nodes and sets min/max-width properties required for the second
+ * layout-pass.
+ * @param  {Object} docStructure document-definition-object
+ * @return {Object}              document-measurement-object
+ */
+DocMeasure.prototype.measureDocument = function (docStructure) {
+	return this.measureNode(docStructure);
+};
+
+DocMeasure.prototype.measureNode = function (node) {
+
+	var self = this;
+
+	return this.styleStack.auto(node, function () {
+		// TODO: refactor + rethink whether this is the proper way to handle margins
+		node._margin = getNodeMargin(node);
+
+		if (node.columns) {
+			return extendMargins(self.measureColumns(node));
+		} else if (node.stack) {
+			return extendMargins(self.measureVerticalContainer(node));
+		} else if (node.ul) {
+			return extendMargins(self.measureUnorderedList(node));
+		} else if (node.ol) {
+			return extendMargins(self.measureOrderedList(node));
+		} else if (node.table) {
+			return extendMargins(self.measureTable(node));
+		} else if (node.text !== undefined) {
+			return extendMargins(self.measureLeaf(node));
+		} else if (node.toc) {
+			return extendMargins(self.measureToc(node));
+		} else if (node.image) {
+			return extendMargins(self.measureImage(node));
+		} else if (node.canvas) {
+			return extendMargins(self.measureCanvas(node));
+		} else if (node.qr) {
+			return extendMargins(self.measureQr(node));
+		} else {
+			throw 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);
+		}
+	});
+
+	function extendMargins(node) {
+		var margin = node._margin;
+
+		if (margin) {
+			node._minWidth += margin[0] + margin[2];
+			node._maxWidth += margin[0] + margin[2];
+		}
+
+		return node;
+	}
+
+	function getNodeMargin() {
+
+		function processSingleMargins(node, currentMargin) {
+			if (node.marginLeft || node.marginTop || node.marginRight || node.marginBottom) {
+				return [
+					node.marginLeft || currentMargin[0] || 0,
+					node.marginTop || currentMargin[1] || 0,
+					node.marginRight || currentMargin[2] || 0,
+					node.marginBottom || currentMargin[3] || 0
+				];
+			}
+			return currentMargin;
+		}
+
+		function flattenStyleArray(styleArray) {
+			var flattenedStyles = {};
+			for (var i = styleArray.length - 1; i >= 0; i--) {
+				var styleName = styleArray[i];
+				var style = self.styleStack.styleDictionary[styleName];
+				for (var key in style) {
+					if (style.hasOwnProperty(key)) {
+						flattenedStyles[key] = style[key];
+					}
+				}
+			}
+			return flattenedStyles;
+		}
+
+		function convertMargin(margin) {
+			if (isNumber(margin)) {
+				margin = [margin, margin, margin, margin];
+			} else if (isArray(margin)) {
+				if (margin.length === 2) {
+					margin = [margin[0], margin[1], margin[0], margin[1]];
+				}
+			}
+			return margin;
+		}
+
+		var margin = [undefined, undefined, undefined, undefined];
+
+		if (node.style) {
+			var styleArray = isArray(node.style) ? node.style : [node.style];
+			var flattenedStyleArray = flattenStyleArray(styleArray);
+
+			if (flattenedStyleArray) {
+				margin = processSingleMargins(flattenedStyleArray, margin);
+			}
+
+			if (flattenedStyleArray.margin) {
+				margin = convertMargin(flattenedStyleArray.margin);
+			}
+		}
+
+		margin = processSingleMargins(node, margin);
+
+		if (node.margin) {
+			margin = convertMargin(node.margin);
+		}
+
+		if (margin[0] === undefined && margin[1] === undefined && margin[2] === undefined && margin[3] === undefined) {
+			return null;
+		} else {
+			return margin;
+		}
+	}
+};
+
+DocMeasure.prototype.convertIfBase64Image = function (node) {
+	if (/^data:image\/(jpeg|jpg|png);base64,/.test(node.image)) {
+		var label = '$$pdfmake$$' + this.autoImageIndex++;
+		this.images[label] = node.image;
+		node.image = label;
+	}
+};
+
+DocMeasure.prototype.measureImage = function (node) {
+	if (this.images) {
+		this.convertIfBase64Image(node);
+	}
+
+	var imageSize = this.imageMeasure.measureImage(node.image);
+
+	if (node.fit) {
+		var factor = (imageSize.width / imageSize.height > node.fit[0] / node.fit[1]) ? node.fit[0] / imageSize.width : node.fit[1] / imageSize.height;
+		node._width = node._minWidth = node._maxWidth = imageSize.width * factor;
+		node._height = imageSize.height * factor;
+	} else {
+		node._width = node._minWidth = node._maxWidth = node.width || imageSize.width;
+		node._height = node.height || (imageSize.height * node._width / imageSize.width);
+
+		if (isNumber(node.maxWidth) && node.maxWidth < node._width) {
+			node._width = node._minWidth = node._maxWidth = node.maxWidth;
+			node._height = node._width * imageSize.height / imageSize.width;
+		}
+
+		if (isNumber(node.maxHeight) && node.maxHeight < node._height) {
+			node._height = node.maxHeight;
+			node._width = node._minWidth = node._maxWidth = node._height * imageSize.width / imageSize.height;
+		}
+
+		if (isNumber(node.minWidth) && node.minWidth > node._width) {
+			node._width = node._minWidth = node._maxWidth = node.minWidth;
+			node._height = node._width * imageSize.height / imageSize.width;
+		}
+
+		if (isNumber(node.minHeight) && node.minHeight > node._height) {
+			node._height = node.minHeight;
+			node._width = node._minWidth = node._maxWidth = node._height * imageSize.width / imageSize.height;
+		}
+	}
+
+	node._alignment = this.styleStack.getProperty('alignment');
+	return node;
+};
+
+DocMeasure.prototype.measureLeaf = function (node) {
+
+	if (node._textRef && node._textRef._nodeRef.text) {
+		node.text = node._textRef._nodeRef.text;
+	}
+
+	// Make sure style properties of the node itself are considered when building inlines.
+	// We could also just pass [node] to buildInlines, but that fails for bullet points.
+	var styleStack = this.styleStack.clone();
+	styleStack.push(node);
+
+	var data = this.textTools.buildInlines(node.text, styleStack);
+
+	node._inlines = data.items;
+	node._minWidth = data.minWidth;
+	node._maxWidth = data.maxWidth;
+
+	return node;
+};
+
+DocMeasure.prototype.measureToc = function (node) {
+	if (node.toc.title) {
+		node.toc.title = this.measureNode(node.toc.title);
+	}
+
+	var body = [];
+	var textStyle = node.toc.textStyle || {};
+	var numberStyle = node.toc.numberStyle || textStyle;
+	var textMargin = node.toc.textMargin || [0, 0, 0, 0];
+	for (var i = 0, l = node.toc._items.length; i < l; i++) {
+		var item = node.toc._items[i];
+		var lineStyle = node.toc._items[i].tocStyle || textStyle;
+		var lineMargin = node.toc._items[i].tocMargin || textMargin;
+		body.push([
+			{text: item.text, alignment: 'left', style: lineStyle, margin: lineMargin},
+			{text: '00000', alignment: 'right', _tocItemRef: item, style: numberStyle, margin: [0, lineMargin[1], 0, lineMargin[3]]}
+		]);
+	}
+
+
+	node.toc._table = {
+		table: {
+			dontBreakRows: true,
+			widths: ['*', 'auto'],
+			body: body
+		},
+		layout: 'noBorders'
+	};
+
+	node.toc._table = this.measureNode(node.toc._table);
+
+	return node;
+};
+
+DocMeasure.prototype.measureVerticalContainer = function (node) {
+	var items = node.stack;
+
+	node._minWidth = 0;
+	node._maxWidth = 0;
+
+	for (var i = 0, l = items.length; i < l; i++) {
+		items[i] = this.measureNode(items[i]);
+
+		node._minWidth = Math.max(node._minWidth, items[i]._minWidth);
+		node._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth);
+	}
+
+	return node;
+};
+
+DocMeasure.prototype.gapSizeForList = function () {
+	return this.textTools.sizeOfString('9. ', this.styleStack);
+};
+
+DocMeasure.prototype.buildUnorderedMarker = function (styleStack, gapSize, type) {
+	function buildDisc(gapSize, color) {
+		// TODO: ascender-based calculations
+		var radius = gapSize.fontSize / 6;
+		return {
+			canvas: [{
+					x: radius,
+					y: (gapSize.height / gapSize.lineHeight) + gapSize.descender - gapSize.fontSize / 3,
+					r1: radius,
+					r2: radius,
+					type: 'ellipse',
+					color: color
+				}]
+		};
+	}
+
+	function buildSquare(gapSize, color) {
+		// TODO: ascender-based calculations
+		var size = gapSize.fontSize / 3;
+		return {
+			canvas: [{
+					x: 0,
+					y: (gapSize.height / gapSize.lineHeight) + gapSize.descender - (gapSize.fontSize / 3) - (size / 2),
+					h: size,
+					w: size,
+					type: 'rect',
+					color: color
+				}]
+		};
+	}
+
+	function buildCircle(gapSize, color) {
+		// TODO: ascender-based calculations
+		var radius = gapSize.fontSize / 6;
+		return {
+			canvas: [{
+					x: radius,
+					y: (gapSize.height / gapSize.lineHeight) + gapSize.descender - gapSize.fontSize / 3,
+					r1: radius,
+					r2: radius,
+					type: 'ellipse',
+					lineColor: color
+				}]
+		};
+	}
+
+	var marker;
+	var color = styleStack.getProperty('markerColor') || styleStack.getProperty('color') || 'black';
+
+	switch (type) {
+		case 'circle':
+			marker = buildCircle(gapSize, color);
+			break;
+
+		case 'square':
+			marker = buildSquare(gapSize, color);
+			break;
+
+		case 'none':
+			marker = {};
+			break;
+
+		case 'disc':
+		default:
+			marker = buildDisc(gapSize, color);
+			break;
+	}
+
+	marker._minWidth = marker._maxWidth = gapSize.width;
+	marker._minHeight = marker._maxHeight = gapSize.height;
+
+	return marker;
+};
+
+DocMeasure.prototype.buildOrderedMarker = function (counter, styleStack, type, separator) {
+	function prepareAlpha(counter) {
+		function toAlpha(num) {
+			return (num >= 26 ? toAlpha((num / 26 >> 0) - 1) : '') + 'abcdefghijklmnopqrstuvwxyz'[num % 26 >> 0];
+		}
+
+		if (counter < 1) {
+			return counter.toString();
+		}
+
+		return toAlpha(counter - 1);
+	}
+
+	function prepareRoman(counter) {
+		if (counter < 1 || counter > 4999) {
+			return counter.toString();
+		}
+		var num = counter;
+		var lookup = {M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1}, roman = '', i;
+		for (i in lookup) {
+			while (num >= lookup[i]) {
+				roman += i;
+				num -= lookup[i];
+			}
+		}
+		return roman;
+	}
+
+	function prepareDecimal(counter) {
+		return counter.toString();
+	}
+
+	var counterText;
+	switch (type) {
+		case 'none':
+			counterText = null;
+			break;
+
+		case 'upper-alpha':
+			counterText = prepareAlpha(counter).toUpperCase();
+			break;
+
+		case 'lower-alpha':
+			counterText = prepareAlpha(counter);
+			break;
+
+		case 'upper-roman':
+			counterText = prepareRoman(counter);
+			break;
+
+		case 'lower-roman':
+			counterText = prepareRoman(counter).toLowerCase();
+			break;
+
+		case 'decimal':
+		default:
+			counterText = prepareDecimal(counter);
+			break;
+	}
+
+	if (counterText === null) {
+		return {};
+	}
+
+	if (separator) {
+		if (isArray(separator)) {
+			if (separator[0]) {
+				counterText = separator[0] + counterText;
+			}
+
+			if (separator[1]) {
+				counterText += separator[1];
+			}
+			counterText += ' ';
+		} else {
+			counterText += separator + ' ';
+		}
+	}
+
+	var textArray = {text: counterText};
+	var markerColor = styleStack.getProperty('markerColor');
+	if (markerColor) {
+		textArray.color = markerColor;
+	}
+
+	return {_inlines: this.textTools.buildInlines(textArray, styleStack).items};
+};
+
+DocMeasure.prototype.measureUnorderedList = function (node) {
+	var style = this.styleStack.clone();
+	var items = node.ul;
+	node.type = node.type || 'disc';
+	node._gapSize = this.gapSizeForList();
+	node._minWidth = 0;
+	node._maxWidth = 0;
+
+	for (var i = 0, l = items.length; i < l; i++) {
+		var item = items[i] = this.measureNode(items[i]);
+
+		if (!item.ol && !item.ul) {
+			item.listMarker = this.buildUnorderedMarker(style, node._gapSize, item.listType || node.type);
+		}
+
+		node._minWidth = Math.max(node._minWidth, items[i]._minWidth + node._gapSize.width);
+		node._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth + node._gapSize.width);
+	}
+
+	return node;
+};
+
+DocMeasure.prototype.measureOrderedList = function (node) {
+	var style = this.styleStack.clone();
+	var items = node.ol;
+	node.type = node.type || 'decimal';
+	node.separator = node.separator || '.';
+	node.reversed = node.reversed || false;
+	if (!node.start) {
+		node.start = node.reversed ? items.length : 1;
+	}
+	node._gapSize = this.gapSizeForList();
+	node._minWidth = 0;
+	node._maxWidth = 0;
+
+	var counter = node.start;
+	for (var i = 0, l = items.length; i < l; i++) {
+		var item = items[i] = this.measureNode(items[i]);
+
+		if (!item.ol && !item.ul) {
+			item.listMarker = this.buildOrderedMarker(item.counter || counter, style, item.listType || node.type, node.separator);
+			if (item.listMarker._inlines) {
+				node._gapSize.width = Math.max(node._gapSize.width, item.listMarker._inlines[0].width);
+			}
+		}  // TODO: else - nested lists numbering
+
+		node._minWidth = Math.max(node._minWidth, items[i]._minWidth);
+		node._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth);
+
+		if (node.reversed) {
+			counter--;
+		} else {
+			counter++;
+		}
+	}
+
+	node._minWidth += node._gapSize.width;
+	node._maxWidth += node._gapSize.width;
+
+	for (var i = 0, l = items.length; i < l; i++) {
+		var item = items[i];
+		if (!item.ol && !item.ul) {
+			item.listMarker._minWidth = item.listMarker._maxWidth = node._gapSize.width;
+		}
+	}
+
+	return node;
+};
+
+DocMeasure.prototype.measureColumns = function (node) {
+	var columns = node.columns;
+	node._gap = this.styleStack.getProperty('columnGap') || 0;
+
+	for (var i = 0, l = columns.length; i < l; i++) {
+		columns[i] = this.measureNode(columns[i]);
+	}
+
+	var measures = ColumnCalculator.measureMinMax(columns);
+
+	var numGaps = (columns.length > 0) ? (columns.length - 1) : 0;
+	node._minWidth = measures.min + node._gap * numGaps;
+	node._maxWidth = measures.max + node._gap * numGaps;
+
+	return node;
+};
+
+DocMeasure.prototype.measureTable = function (node) {
+	extendTableWidths(node);
+	node._layout = getLayout(this.tableLayouts);
+	node._offsets = getOffsets(node._layout);
+
+	var colSpans = [];
+	var col, row, cols, rows;
+
+	for (col = 0, cols = node.table.body[0].length; col < cols; col++) {
+		var c = node.table.widths[col];
+		c._minWidth = 0;
+		c._maxWidth = 0;
+
+		for (row = 0, rows = node.table.body.length; row < rows; row++) {
+			var rowData = node.table.body[row];
+			var data = rowData[col];
+			if (data === undefined) {
+				console.error('Malformed table row ', rowData, 'in node ', node);
+				throw 'Malformed table row, a cell is undefined.';
+			}
+			if (data === null) { // transform to object
+				data = '';
+			}
+
+			if (!data._span) {
+				data = rowData[col] = this.styleStack.auto(data, measureCb(this, data));
+
+				if (data.colSpan && data.colSpan > 1) {
+					markSpans(rowData, col, data.colSpan);
+					colSpans.push({col: col, span: data.colSpan, minWidth: data._minWidth, maxWidth: data._maxWidth});
+				} else {
+					c._minWidth = Math.max(c._minWidth, data._minWidth);
+					c._maxWidth = Math.max(c._maxWidth, data._maxWidth);
+				}
+			}
+
+			if (data.rowSpan && data.rowSpan > 1) {
+				markVSpans(node.table, row, col, data.rowSpan);
+			}
+		}
+	}
+
+	extendWidthsForColSpans();
+
+	var measures = ColumnCalculator.measureMinMax(node.table.widths);
+
+	node._minWidth = measures.min + node._offsets.total;
+	node._maxWidth = measures.max + node._offsets.total;
+
+	return node;
+
+	function measureCb(_this, data) {
+		return function () {
+			if (isObject(data)) {
+				data.fillColor = _this.styleStack.getProperty('fillColor');
+			}
+			return _this.measureNode(data);
+		};
+	}
+
+	function getLayout(tableLayouts) {
+		var layout = node.layout;
+
+		if (isString(layout)) {
+			layout = tableLayouts[layout];
+		}
+
+		var defaultLayout = {
+			hLineWidth: function (i, node) {
+				return 1;
+			},
+			vLineWidth: function (i, node) {
+				return 1;
+			},
+			hLineColor: function (i, node) {
+				return 'black';
+			},
+			vLineColor: function (i, node) {
+				return 'black';
+			},
+			paddingLeft: function (i, node) {
+				return 4;
+			},
+			paddingRight: function (i, node) {
+				return 4;
+			},
+			paddingTop: function (i, node) {
+				return 2;
+			},
+			paddingBottom: function (i, node) {
+				return 2;
+			},
+			fillColor: function (i, node) {
+				return null;
+			},
+			defaultBorder: true
+		};
+
+		return pack(defaultLayout, layout);
+	}
+
+	function getOffsets(layout) {
+		var offsets = [];
+		var totalOffset = 0;
+		var prevRightPadding = 0;
+
+		for (var i = 0, l = node.table.widths.length; i < l; i++) {
+			var lOffset = prevRightPadding + layout.vLineWidth(i, node) + layout.paddingLeft(i, node);
+			offsets.push(lOffset);
+			totalOffset += lOffset;
+			prevRightPadding = layout.paddingRight(i, node);
+		}
+
+		totalOffset += prevRightPadding + layout.vLineWidth(node.table.widths.length, node);
+
+		return {
+			total: totalOffset,
+			offsets: offsets
+		};
+	}
+
+	function extendWidthsForColSpans() {
+		var q, j;
+
+		for (var i = 0, l = colSpans.length; i < l; i++) {
+			var span = colSpans[i];
+
+			var currentMinMax = getMinMax(span.col, span.span, node._offsets);
+			var minDifference = span.minWidth - currentMinMax.minWidth;
+			var maxDifference = span.maxWidth - currentMinMax.maxWidth;
+
+			if (minDifference > 0) {
+				q = minDifference / span.span;
+
+				for (j = 0; j < span.span; j++) {
+					node.table.widths[span.col + j]._minWidth += q;
+				}
+			}
+
+			if (maxDifference > 0) {
+				q = maxDifference / span.span;
+
+				for (j = 0; j < span.span; j++) {
+					node.table.widths[span.col + j]._maxWidth += q;
+				}
+			}
+		}
+	}
+
+	function getMinMax(col, span, offsets) {
+		var result = {minWidth: 0, maxWidth: 0};
+
+		for (var i = 0; i < span; i++) {
+			result.minWidth += node.table.widths[col + i]._minWidth + (i ? offsets.offsets[col + i] : 0);
+			result.maxWidth += node.table.widths[col + i]._maxWidth + (i ? offsets.offsets[col + i] : 0);
+		}
+
+		return result;
+	}
+
+	function markSpans(rowData, col, span) {
+		for (var i = 1; i < span; i++) {
+			rowData[col + i] = {
+				_span: true,
+				_minWidth: 0,
+				_maxWidth: 0,
+				rowSpan: rowData[col].rowSpan
+			};
+		}
+	}
+
+	function markVSpans(table, row, col, span) {
+		for (var i = 1; i < span; i++) {
+			table.body[row + i][col] = {
+				_span: true,
+				_minWidth: 0,
+				_maxWidth: 0,
+				fillColor: table.body[row][col].fillColor
+			};
+		}
+	}
+
+	function extendTableWidths(node) {
+		if (!node.table.widths) {
+			node.table.widths = 'auto';
+		}
+
+		if (isString(node.table.widths)) {
+			node.table.widths = [node.table.widths];
+
+			while (node.table.widths.length < node.table.body[0].length) {
+				node.table.widths.push(node.table.widths[node.table.widths.length - 1]);
+			}
+		}
+
+		for (var i = 0, l = node.table.widths.length; i < l; i++) {
+			var w = node.table.widths[i];
+			if (isNumber(w) || isString(w)) {
+				node.table.widths[i] = {width: w};
+			}
+		}
+	}
+};
+
+DocMeasure.prototype.measureCanvas = function (node) {
+	var w = 0, h = 0;
+
+	for (var i = 0, l = node.canvas.length; i < l; i++) {
+		var vector = node.canvas[i];
+
+		switch (vector.type) {
+			case 'ellipse':
+				w = Math.max(w, vector.x + vector.r1);
+				h = Math.max(h, vector.y + vector.r2);
+				break;
+			case 'rect':
+				w = Math.max(w, vector.x + vector.w);
+				h = Math.max(h, vector.y + vector.h);
+				break;
+			case 'line':
+				w = Math.max(w, vector.x1, vector.x2);
+				h = Math.max(h, vector.y1, vector.y2);
+				break;
+			case 'polyline':
+				for (var i2 = 0, l2 = vector.points.length; i2 < l2; i2++) {
+					w = Math.max(w, vector.points[i2].x);
+					h = Math.max(h, vector.points[i2].y);
+				}
+				break;
+		}
+	}
+
+	node._minWidth = node._maxWidth = w;
+	node._minHeight = node._maxHeight = h;
+	node._alignment = this.styleStack.getProperty('alignment');
+
+	return node;
+};
+
+DocMeasure.prototype.measureQr = function (node) {
+	node = qrEncoder.measure(node);
+	node._alignment = this.styleStack.getProperty('alignment');
+	return node;
+};
+
+module.exports = DocMeasure;
+
+
+/***/ }),
+/* 131 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+
+;(function (exports) {
+	'use strict';
+
+  var Arr = (typeof Uint8Array !== 'undefined')
+    ? Uint8Array
+    : Array
+
+	var PLUS   = '+'.charCodeAt(0)
+	var SLASH  = '/'.charCodeAt(0)
+	var NUMBER = '0'.charCodeAt(0)
+	var LOWER  = 'a'.charCodeAt(0)
+	var UPPER  = 'A'.charCodeAt(0)
+	var PLUS_URL_SAFE = '-'.charCodeAt(0)
+	var SLASH_URL_SAFE = '_'.charCodeAt(0)
+
+	function decode (elt) {
+		var code = elt.charCodeAt(0)
+		if (code === PLUS ||
+		    code === PLUS_URL_SAFE)
+			return 62 // '+'
+		if (code === SLASH ||
+		    code === SLASH_URL_SAFE)
+			return 63 // '/'
+		if (code < NUMBER)
+			return -1 //no match
+		if (code < NUMBER + 10)
+			return code - NUMBER + 26 + 26
+		if (code < UPPER + 26)
+			return code - UPPER
+		if (code < LOWER + 26)
+			return code - LOWER + 26
+	}
+
+	function b64ToByteArray (b64) {
+		var i, j, l, tmp, placeHolders, arr
+
+		if (b64.length % 4 > 0) {
+			throw new Error('Invalid string. Length must be a multiple of 4')
+		}
+
+		// the number of equal signs (place holders)
+		// if there are two placeholders, than the two characters before it
+		// represent one byte
+		// if there is only one, then the three characters before it represent 2 bytes
+		// this is just a cheap hack to not do indexOf twice
+		var len = b64.length
+		placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
+
+		// base64 is 4/3 + up to two characters of the original data
+		arr = new Arr(b64.length * 3 / 4 - placeHolders)
+
+		// if there are placeholders, only get up to the last complete 4 chars
+		l = placeHolders > 0 ? b64.length - 4 : b64.length
+
+		var L = 0
+
+		function push (v) {
+			arr[L++] = v
+		}
+
+		for (i = 0, j = 0; i < l; i += 4, j += 3) {
+			tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
+			push((tmp & 0xFF0000) >> 16)
+			push((tmp & 0xFF00) >> 8)
+			push(tmp & 0xFF)
+		}
+
+		if (placeHolders === 2) {
+			tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
+			push(tmp & 0xFF)
+		} else if (placeHolders === 1) {
+			tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
+			push((tmp >> 8) & 0xFF)
+			push(tmp & 0xFF)
+		}
+
+		return arr
+	}
+
+	function uint8ToBase64 (uint8) {
+		var i,
+			extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
+			output = "",
+			temp, length
+
+		function encode (num) {
+			return lookup.charAt(num)
+		}
+
+		function tripletToBase64 (num) {
+			return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
+		}
+
+		// go through the array every three bytes, we'll deal with trailing stuff later
+		for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
+			temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
+			output += tripletToBase64(temp)
+		}
+
+		// pad the end with zeros, but make sure to not forget the extra bytes
+		switch (extraBytes) {
+			case 1:
+				temp = uint8[uint8.length - 1]
+				output += encode(temp >> 2)
+				output += encode((temp << 4) & 0x3F)
+				output += '=='
+				break
+			case 2:
+				temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
+				output += encode(temp >> 10)
+				output += encode((temp >> 4) & 0x3F)
+				output += encode((temp << 2) & 0x3F)
+				output += '='
+				break
+		}
+
+		return output
+	}
+
+	exports.toByteArray = b64ToByteArray
+	exports.fromByteArray = uint8ToBase64
+}( false ? (this.base64js = {}) : exports))
+
+
+/***/ }),
+/* 132 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var AI, AL, B2, BA, BB, BK, CB, CJ, CL, CM, CP, CR, EX, GL, H2, H3, HL, HY, ID, IN, IS, JL, JT, JV, LF, NL, NS, NU, OP, PO, PR, QU, RI, SA, SG, SP, SY, WJ, XX, ZW;
+
+  exports.OP = OP = 0;
+
+  exports.CL = CL = 1;
+
+  exports.CP = CP = 2;
+
+  exports.QU = QU = 3;
+
+  exports.GL = GL = 4;
+
+  exports.NS = NS = 5;
+
+  exports.EX = EX = 6;
+
+  exports.SY = SY = 7;
+
+  exports.IS = IS = 8;
+
+  exports.PR = PR = 9;
+
+  exports.PO = PO = 10;
+
+  exports.NU = NU = 11;
+
+  exports.AL = AL = 12;
+
+  exports.HL = HL = 13;
+
+  exports.ID = ID = 14;
+
+  exports.IN = IN = 15;
+
+  exports.HY = HY = 16;
+
+  exports.BA = BA = 17;
+
+  exports.BB = BB = 18;
+
+  exports.B2 = B2 = 19;
+
+  exports.ZW = ZW = 20;
+
+  exports.CM = CM = 21;
+
+  exports.WJ = WJ = 22;
+
+  exports.H2 = H2 = 23;
+
+  exports.H3 = H3 = 24;
+
+  exports.JL = JL = 25;
+
+  exports.JV = JV = 26;
+
+  exports.JT = JT = 27;
+
+  exports.RI = RI = 28;
+
+  exports.AI = AI = 29;
+
+  exports.BK = BK = 30;
+
+  exports.CB = CB = 31;
+
+  exports.CJ = CJ = 32;
+
+  exports.CR = CR = 33;
+
+  exports.LF = LF = 34;
+
+  exports.NL = NL = 35;
+
+  exports.SA = SA = 36;
+
+  exports.SG = SG = 37;
+
+  exports.SP = SP = 38;
+
+  exports.XX = XX = 39;
+
+}).call(this);
+
+
+/***/ }),
+/* 133 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var CI_BRK, CP_BRK, DI_BRK, IN_BRK, PR_BRK;
+
+  exports.DI_BRK = DI_BRK = 0;
+
+  exports.IN_BRK = IN_BRK = 1;
+
+  exports.CI_BRK = CI_BRK = 2;
+
+  exports.CP_BRK = CP_BRK = 3;
+
+  exports.PR_BRK = PR_BRK = 4;
+
+  exports.pairTable = [[PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, CP_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK]];
+
+}).call(this);
+
+
+/***/ }),
+/* 134 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/*eslint no-unused-vars: ["error", {"args": "none"}]*/
+/*eslint no-redeclare: "off"*/
+
+
+/* qr.js -- QR code generator in Javascript (revision 2011-01-19)
+ * Written by Kang Seonghoon <public+qrjs@mearie.org>.
+ *
+ * This source code is in the public domain; if your jurisdiction does not
+ * recognize the public domain the terms of Creative Commons CC0 license
+ * apply. In the other words, you can always do what you want.
+ */
+
+
+// per-version information (cf. JIS X 0510:2004 pp. 30--36, 71)
+//
+// [0]: the degree of generator polynomial by ECC levels
+// [1]: # of code blocks by ECC levels
+// [2]: left-top positions of alignment patterns
+//
+// the number in this table (in particular, [0]) does not exactly match with
+// the numbers in the specficiation. see augumenteccs below for the reason.
+var VERSIONS = [
+	null,
+	[[10, 7, 17, 13], [1, 1, 1, 1], []],
+	[[16, 10, 28, 22], [1, 1, 1, 1], [4, 16]],
+	[[26, 15, 22, 18], [1, 1, 2, 2], [4, 20]],
+	[[18, 20, 16, 26], [2, 1, 4, 2], [4, 24]],
+	[[24, 26, 22, 18], [2, 1, 4, 4], [4, 28]],
+	[[16, 18, 28, 24], [4, 2, 4, 4], [4, 32]],
+	[[18, 20, 26, 18], [4, 2, 5, 6], [4, 20, 36]],
+	[[22, 24, 26, 22], [4, 2, 6, 6], [4, 22, 40]],
+	[[22, 30, 24, 20], [5, 2, 8, 8], [4, 24, 44]],
+	[[26, 18, 28, 24], [5, 4, 8, 8], [4, 26, 48]],
+	[[30, 20, 24, 28], [5, 4, 11, 8], [4, 28, 52]],
+	[[22, 24, 28, 26], [8, 4, 11, 10], [4, 30, 56]],
+	[[22, 26, 22, 24], [9, 4, 16, 12], [4, 32, 60]],
+	[[24, 30, 24, 20], [9, 4, 16, 16], [4, 24, 44, 64]],
+	[[24, 22, 24, 30], [10, 6, 18, 12], [4, 24, 46, 68]],
+	[[28, 24, 30, 24], [10, 6, 16, 17], [4, 24, 48, 72]],
+	[[28, 28, 28, 28], [11, 6, 19, 16], [4, 28, 52, 76]],
+	[[26, 30, 28, 28], [13, 6, 21, 18], [4, 28, 54, 80]],
+	[[26, 28, 26, 26], [14, 7, 25, 21], [4, 28, 56, 84]],
+	[[26, 28, 28, 30], [16, 8, 25, 20], [4, 32, 60, 88]],
+	[[26, 28, 30, 28], [17, 8, 25, 23], [4, 26, 48, 70, 92]],
+	[[28, 28, 24, 30], [17, 9, 34, 23], [4, 24, 48, 72, 96]],
+	[[28, 30, 30, 30], [18, 9, 30, 25], [4, 28, 52, 76, 100]],
+	[[28, 30, 30, 30], [20, 10, 32, 27], [4, 26, 52, 78, 104]],
+	[[28, 26, 30, 30], [21, 12, 35, 29], [4, 30, 56, 82, 108]],
+	[[28, 28, 30, 28], [23, 12, 37, 34], [4, 28, 56, 84, 112]],
+	[[28, 30, 30, 30], [25, 12, 40, 34], [4, 32, 60, 88, 116]],
+	[[28, 30, 30, 30], [26, 13, 42, 35], [4, 24, 48, 72, 96, 120]],
+	[[28, 30, 30, 30], [28, 14, 45, 38], [4, 28, 52, 76, 100, 124]],
+	[[28, 30, 30, 30], [29, 15, 48, 40], [4, 24, 50, 76, 102, 128]],
+	[[28, 30, 30, 30], [31, 16, 51, 43], [4, 28, 54, 80, 106, 132]],
+	[[28, 30, 30, 30], [33, 17, 54, 45], [4, 32, 58, 84, 110, 136]],
+	[[28, 30, 30, 30], [35, 18, 57, 48], [4, 28, 56, 84, 112, 140]],
+	[[28, 30, 30, 30], [37, 19, 60, 51], [4, 32, 60, 88, 116, 144]],
+	[[28, 30, 30, 30], [38, 19, 63, 53], [4, 28, 52, 76, 100, 124, 148]],
+	[[28, 30, 30, 30], [40, 20, 66, 56], [4, 22, 48, 74, 100, 126, 152]],
+	[[28, 30, 30, 30], [43, 21, 70, 59], [4, 26, 52, 78, 104, 130, 156]],
+	[[28, 30, 30, 30], [45, 22, 74, 62], [4, 30, 56, 82, 108, 134, 160]],
+	[[28, 30, 30, 30], [47, 24, 77, 65], [4, 24, 52, 80, 108, 136, 164]],
+	[[28, 30, 30, 30], [49, 25, 81, 68], [4, 28, 56, 84, 112, 140, 168]]];
+
+// mode constants (cf. Table 2 in JIS X 0510:2004 p. 16)
+var MODE_TERMINATOR = 0;
+var MODE_NUMERIC = 1, MODE_ALPHANUMERIC = 2, MODE_OCTET = 4, MODE_KANJI = 8;
+
+// validation regexps
+var NUMERIC_REGEXP = /^\d*$/;
+var ALPHANUMERIC_REGEXP = /^[A-Za-z0-9 $%*+\-./:]*$/;
+var ALPHANUMERIC_OUT_REGEXP = /^[A-Z0-9 $%*+\-./:]*$/;
+
+// ECC levels (cf. Table 22 in JIS X 0510:2004 p. 45)
+var ECCLEVEL_L = 1, ECCLEVEL_M = 0, ECCLEVEL_Q = 3, ECCLEVEL_H = 2;
+
+// GF(2^8)-to-integer mapping with a reducing polynomial x^8+x^4+x^3+x^2+1
+// invariant: GF256_MAP[GF256_INVMAP[i]] == i for all i in [1,256)
+var GF256_MAP = [], GF256_INVMAP = [-1];
+for (var i = 0, v = 1; i < 255; ++i) {
+	GF256_MAP.push(v);
+	GF256_INVMAP[v] = i;
+	v = (v * 2) ^ (v >= 128 ? 0x11d : 0);
+}
+
+// generator polynomials up to degree 30
+// (should match with polynomials in JIS X 0510:2004 Appendix A)
+//
+// generator polynomial of degree K is product of (x-\alpha^0), (x-\alpha^1),
+// ..., (x-\alpha^(K-1)). by convention, we omit the K-th coefficient (always 1)
+// from the result; also other coefficients are written in terms of the exponent
+// to \alpha to avoid the redundant calculation. (see also calculateecc below.)
+var GF256_GENPOLY = [[]];
+for (var i = 0; i < 30; ++i) {
+	var prevpoly = GF256_GENPOLY[i], poly = [];
+	for (var j = 0; j <= i; ++j) {
+		var a = (j < i ? GF256_MAP[prevpoly[j]] : 0);
+		var b = GF256_MAP[(i + (prevpoly[j - 1] || 0)) % 255];
+		poly.push(GF256_INVMAP[a ^ b]);
+	}
+	GF256_GENPOLY.push(poly);
+}
+
+// alphanumeric character mapping (cf. Table 5 in JIS X 0510:2004 p. 19)
+var ALPHANUMERIC_MAP = {};
+for (var i = 0; i < 45; ++i) {
+	ALPHANUMERIC_MAP['0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'.charAt(i)] = i;
+}
+
+// mask functions in terms of row # and column #
+// (cf. Table 20 in JIS X 0510:2004 p. 42)
+/*jshint unused: false */
+var MASKFUNCS = [
+	function (i, j) {
+		return (i + j) % 2 === 0;
+	},
+	function (i, j) {
+		return i % 2 === 0;
+	},
+	function (i, j) {
+		return j % 3 === 0;
+	},
+	function (i, j) {
+		return (i + j) % 3 === 0;
+	},
+	function (i, j) {
+		return (((i / 2) | 0) + ((j / 3) | 0)) % 2 === 0;
+	},
+	function (i, j) {
+		return (i * j) % 2 + (i * j) % 3 === 0;
+	},
+	function (i, j) {
+		return ((i * j) % 2 + (i * j) % 3) % 2 === 0;
+	},
+	function (i, j) {
+		return ((i + j) % 2 + (i * j) % 3) % 2 === 0;
+	}];
+
+// returns true when the version information has to be embeded.
+var needsverinfo = function (ver) {
+	return ver > 6;
+};
+
+// returns the size of entire QR code for given version.
+var getsizebyver = function (ver) {
+	return 4 * ver + 17;
+};
+
+// returns the number of bits available for code words in this version.
+var nfullbits = function (ver) {
+	/*
+	 * |<--------------- n --------------->|
+	 * |        |<----- n-17 ---->|        |
+	 * +-------+                ///+-------+ ----
+	 * |       |                ///|       |    ^
+	 * |  9x9  |       @@@@@    ///|  9x8  |    |
+	 * |       | # # # @5x5@ # # # |       |    |
+	 * +-------+       @@@@@       +-------+    |
+	 *       #                               ---|
+	 *                                        ^ |
+	 *       #                                |
+	 *     @@@@@       @@@@@       @@@@@      | n
+	 *     @5x5@       @5x5@       @5x5@   n-17
+	 *     @@@@@       @@@@@       @@@@@      | |
+	 *       #                                | |
+	 * //////                                 v |
+	 * //////#                               ---|
+	 * +-------+       @@@@@       @@@@@        |
+	 * |       |       @5x5@       @5x5@        |
+	 * |  8x9  |       @@@@@       @@@@@        |
+	 * |       |                                v
+	 * +-------+                             ----
+	 *
+	 * when the entire code has n^2 modules and there are m^2-3 alignment
+	 * patterns, we have:
+	 * - 225 (= 9x9 + 9x8 + 8x9) modules for finder patterns and
+	 *   format information;
+	 * - 2n-34 (= 2(n-17)) modules for timing patterns;
+	 * - 36 (= 3x6 + 6x3) modules for version information, if any;
+	 * - 25m^2-75 (= (m^2-3)(5x5)) modules for alignment patterns
+	 *   if any, but 10m-20 (= 2(m-2)x5) of them overlaps with
+	 *   timing patterns.
+	 */
+	var v = VERSIONS[ver];
+	var nbits = 16 * ver * ver + 128 * ver + 64; // finder, timing and format info.
+	if (needsverinfo(ver))
+		nbits -= 36; // version information
+	if (v[2].length) { // alignment patterns
+		nbits -= 25 * v[2].length * v[2].length - 10 * v[2].length - 55;
+	}
+	return nbits;
+};
+
+// returns the number of bits available for data portions (i.e. excludes ECC
+// bits but includes mode and length bits) in this version and ECC level.
+var ndatabits = function (ver, ecclevel) {
+	var nbits = nfullbits(ver) & ~7; // no sub-octet code words
+	var v = VERSIONS[ver];
+	nbits -= 8 * v[0][ecclevel] * v[1][ecclevel]; // ecc bits
+	return nbits;
+};
+
+// returns the number of bits required for the length of data.
+// (cf. Table 3 in JIS X 0510:2004 p. 16)
+var ndatalenbits = function (ver, mode) {
+	switch (mode) {
+		case MODE_NUMERIC:
+			return (ver < 10 ? 10 : ver < 27 ? 12 : 14);
+		case MODE_ALPHANUMERIC:
+			return (ver < 10 ? 9 : ver < 27 ? 11 : 13);
+		case MODE_OCTET:
+			return (ver < 10 ? 8 : 16);
+		case MODE_KANJI:
+			return (ver < 10 ? 8 : ver < 27 ? 10 : 12);
+	}
+};
+
+// returns the maximum length of data possible in given configuration.
+var getmaxdatalen = function (ver, mode, ecclevel) {
+	var nbits = ndatabits(ver, ecclevel) - 4 - ndatalenbits(ver, mode); // 4 for mode bits
+	switch (mode) {
+		case MODE_NUMERIC:
+			return ((nbits / 10) | 0) * 3 + (nbits % 10 < 4 ? 0 : nbits % 10 < 7 ? 1 : 2);
+		case MODE_ALPHANUMERIC:
+			return ((nbits / 11) | 0) * 2 + (nbits % 11 < 6 ? 0 : 1);
+		case MODE_OCTET:
+			return (nbits / 8) | 0;
+		case MODE_KANJI:
+			return (nbits / 13) | 0;
+	}
+};
+
+// checks if the given data can be encoded in given mode, and returns
+// the converted data for the further processing if possible. otherwise
+// returns null.
+//
+// this function does not check the length of data; it is a duty of
+// encode function below (as it depends on the version and ECC level too).
+var validatedata = function (mode, data) {
+	switch (mode) {
+		case MODE_NUMERIC:
+			if (!data.match(NUMERIC_REGEXP))
+				return null;
+			return data;
+
+		case MODE_ALPHANUMERIC:
+			if (!data.match(ALPHANUMERIC_REGEXP))
+				return null;
+			return data.toUpperCase();
+
+		case MODE_OCTET:
+			if (typeof data === 'string') { // encode as utf-8 string
+				var newdata = [];
+				for (var i = 0; i < data.length; ++i) {
+					var ch = data.charCodeAt(i);
+					if (ch < 0x80) {
+						newdata.push(ch);
+					} else if (ch < 0x800) {
+						newdata.push(0xc0 | (ch >> 6),
+							0x80 | (ch & 0x3f));
+					} else if (ch < 0x10000) {
+						newdata.push(0xe0 | (ch >> 12),
+							0x80 | ((ch >> 6) & 0x3f),
+							0x80 | (ch & 0x3f));
+					} else {
+						newdata.push(0xf0 | (ch >> 18),
+							0x80 | ((ch >> 12) & 0x3f),
+							0x80 | ((ch >> 6) & 0x3f),
+							0x80 | (ch & 0x3f));
+					}
+				}
+				return newdata;
+			} else {
+				return data;
+			}
+	}
+};
+
+// returns the code words (sans ECC bits) for given data and configurations.
+// requires data to be preprocessed by validatedata. no length check is
+// performed, and everything has to be checked before calling this function.
+var encode = function (ver, mode, data, maxbuflen) {
+	var buf = [];
+	var bits = 0, remaining = 8;
+	var datalen = data.length;
+
+	// this function is intentionally no-op when n=0.
+	var pack = function (x, n) {
+		if (n >= remaining) {
+			buf.push(bits | (x >> (n -= remaining)));
+			while (n >= 8)
+				buf.push((x >> (n -= 8)) & 255);
+			bits = 0;
+			remaining = 8;
+		}
+		if (n > 0)
+			bits |= (x & ((1 << n) - 1)) << (remaining -= n);
+	};
+
+	var nlenbits = ndatalenbits(ver, mode);
+	pack(mode, 4);
+	pack(datalen, nlenbits);
+
+	switch (mode) {
+		case MODE_NUMERIC:
+			for (var i = 2; i < datalen; i += 3) {
+				pack(parseInt(data.substring(i - 2, i + 1), 10), 10);
+			}
+			pack(parseInt(data.substring(i - 2), 10), [0, 4, 7][datalen % 3]);
+			break;
+
+		case MODE_ALPHANUMERIC:
+			for (var i = 1; i < datalen; i += 2) {
+				pack(ALPHANUMERIC_MAP[data.charAt(i - 1)] * 45 +
+					ALPHANUMERIC_MAP[data.charAt(i)], 11);
+			}
+			if (datalen % 2 == 1) {
+				pack(ALPHANUMERIC_MAP[data.charAt(i - 1)], 6);
+			}
+			break;
+
+		case MODE_OCTET:
+			for (var i = 0; i < datalen; ++i) {
+				pack(data[i], 8);
+			}
+			break;
+	}
+
+	// final bits. it is possible that adding terminator causes the buffer
+	// to overflow, but then the buffer truncated to the maximum size will
+	// be valid as the truncated terminator mode bits and padding is
+	// identical in appearance (cf. JIS X 0510:2004 sec 8.4.8).
+	pack(MODE_TERMINATOR, 4);
+	if (remaining < 8)
+		buf.push(bits);
+
+	// the padding to fill up the remaining space. we should not add any
+	// words when the overflow already occurred.
+	while (buf.length + 1 < maxbuflen)
+		buf.push(0xec, 0x11);
+	if (buf.length < maxbuflen)
+		buf.push(0xec);
+	return buf;
+};
+
+// calculates ECC code words for given code words and generator polynomial.
+//
+// this is quite similar to CRC calculation as both Reed-Solomon and CRC use
+// the certain kind of cyclic codes, which is effectively the division of
+// zero-augumented polynomial by the generator polynomial. the only difference
+// is that Reed-Solomon uses GF(2^8), instead of CRC's GF(2), and Reed-Solomon
+// uses the different generator polynomial than CRC's.
+var calculateecc = function (poly, genpoly) {
+	var modulus = poly.slice(0);
+	var polylen = poly.length, genpolylen = genpoly.length;
+	for (var i = 0; i < genpolylen; ++i)
+		modulus.push(0);
+	for (var i = 0; i < polylen; ) {
+		var quotient = GF256_INVMAP[modulus[i++]];
+		if (quotient >= 0) {
+			for (var j = 0; j < genpolylen; ++j) {
+				modulus[i + j] ^= GF256_MAP[(quotient + genpoly[j]) % 255];
+			}
+		}
+	}
+	return modulus.slice(polylen);
+};
+
+// auguments ECC code words to given code words. the resulting words are
+// ready to be encoded in the matrix.
+//
+// the much of actual augumenting procedure follows JIS X 0510:2004 sec 8.7.
+// the code is simplified using the fact that the size of each code & ECC
+// blocks is almost same; for example, when we have 4 blocks and 46 data words
+// the number of code words in those blocks are 11, 11, 12, 12 respectively.
+var augumenteccs = function (poly, nblocks, genpoly) {
+	var subsizes = [];
+	var subsize = (poly.length / nblocks) | 0, subsize0 = 0;
+	var pivot = nblocks - poly.length % nblocks;
+	for (var i = 0; i < pivot; ++i) {
+		subsizes.push(subsize0);
+		subsize0 += subsize;
+	}
+	for (var i = pivot; i < nblocks; ++i) {
+		subsizes.push(subsize0);
+		subsize0 += subsize + 1;
+	}
+	subsizes.push(subsize0);
+
+	var eccs = [];
+	for (var i = 0; i < nblocks; ++i) {
+		eccs.push(calculateecc(poly.slice(subsizes[i], subsizes[i + 1]), genpoly));
+	}
+
+	var result = [];
+	var nitemsperblock = (poly.length / nblocks) | 0;
+	for (var i = 0; i < nitemsperblock; ++i) {
+		for (var j = 0; j < nblocks; ++j) {
+			result.push(poly[subsizes[j] + i]);
+		}
+	}
+	for (var j = pivot; j < nblocks; ++j) {
+		result.push(poly[subsizes[j + 1] - 1]);
+	}
+	for (var i = 0; i < genpoly.length; ++i) {
+		for (var j = 0; j < nblocks; ++j) {
+			result.push(eccs[j][i]);
+		}
+	}
+	return result;
+};
+
+// auguments BCH(p+q,q) code to the polynomial over GF(2), given the proper
+// genpoly. the both input and output are in binary numbers, and unlike
+// calculateecc genpoly should include the 1 bit for the highest degree.
+//
+// actual polynomials used for this procedure are as follows:
+// - p=10, q=5, genpoly=x^10+x^8+x^5+x^4+x^2+x+1 (JIS X 0510:2004 Appendix C)
+// - p=18, q=6, genpoly=x^12+x^11+x^10+x^9+x^8+x^5+x^2+1 (ibid. Appendix D)
+var augumentbch = function (poly, p, genpoly, q) {
+	var modulus = poly << q;
+	for (var i = p - 1; i >= 0; --i) {
+		if ((modulus >> (q + i)) & 1)
+			modulus ^= genpoly << i;
+	}
+	return (poly << q) | modulus;
+};
+
+// creates the base matrix for given version. it returns two matrices, one of
+// them is the actual one and the another represents the "reserved" portion
+// (e.g. finder and timing patterns) of the matrix.
+//
+// some entries in the matrix may be undefined, rather than 0 or 1. this is
+// intentional (no initialization needed!), and putdata below will fill
+// the remaining ones.
+var makebasematrix = function (ver) {
+	var v = VERSIONS[ver], n = getsizebyver(ver);
+	var matrix = [], reserved = [];
+	for (var i = 0; i < n; ++i) {
+		matrix.push([]);
+		reserved.push([]);
+	}
+
+	var blit = function (y, x, h, w, bits) {
+		for (var i = 0; i < h; ++i) {
+			for (var j = 0; j < w; ++j) {
+				matrix[y + i][x + j] = (bits[i] >> j) & 1;
+				reserved[y + i][x + j] = 1;
+			}
+		}
+	};
+
+	// finder patterns and a part of timing patterns
+	// will also mark the format information area (not yet written) as reserved.
+	blit(0, 0, 9, 9, [0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x17f, 0x00, 0x40]);
+	blit(n - 8, 0, 8, 9, [0x100, 0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x7f]);
+	blit(0, n - 8, 9, 8, [0xfe, 0x82, 0xba, 0xba, 0xba, 0x82, 0xfe, 0x00, 0x00]);
+
+	// the rest of timing patterns
+	for (var i = 9; i < n - 8; ++i) {
+		matrix[6][i] = matrix[i][6] = ~i & 1;
+		reserved[6][i] = reserved[i][6] = 1;
+	}
+
+	// alignment patterns
+	var aligns = v[2], m = aligns.length;
+	for (var i = 0; i < m; ++i) {
+		var minj = (i === 0 || i === m - 1 ? 1 : 0), maxj = (i === 0 ? m - 1 : m);
+		for (var j = minj; j < maxj; ++j) {
+			blit(aligns[i], aligns[j], 5, 5, [0x1f, 0x11, 0x15, 0x11, 0x1f]);
+		}
+	}
+
+	// version information
+	if (needsverinfo(ver)) {
+		var code = augumentbch(ver, 6, 0x1f25, 12);
+		var k = 0;
+		for (var i = 0; i < 6; ++i) {
+			for (var j = 0; j < 3; ++j) {
+				matrix[i][(n - 11) + j] = matrix[(n - 11) + j][i] = (code >> k++) & 1;
+				reserved[i][(n - 11) + j] = reserved[(n - 11) + j][i] = 1;
+			}
+		}
+	}
+
+	return {matrix: matrix, reserved: reserved};
+};
+
+// fills the data portion (i.e. unmarked in reserved) of the matrix with given
+// code words. the size of code words should be no more than available bits,
+// and remaining bits are padded to 0 (cf. JIS X 0510:2004 sec 8.7.3).
+var putdata = function (matrix, reserved, buf) {
+	var n = matrix.length;
+	var k = 0, dir = -1;
+	for (var i = n - 1; i >= 0; i -= 2) {
+		if (i == 6)
+			--i; // skip the entire timing pattern column
+		var jj = (dir < 0 ? n - 1 : 0);
+		for (var j = 0; j < n; ++j) {
+			for (var ii = i; ii > i - 2; --ii) {
+				if (!reserved[jj][ii]) {
+					// may overflow, but (undefined >> x)
+					// is 0 so it will auto-pad to zero.
+					matrix[jj][ii] = (buf[k >> 3] >> (~k & 7)) & 1;
+					++k;
+				}
+			}
+			jj += dir;
+		}
+		dir = -dir;
+	}
+	return matrix;
+};
+
+// XOR-masks the data portion of the matrix. repeating the call with the same
+// arguments will revert the prior call (convenient in the matrix evaluation).
+var maskdata = function (matrix, reserved, mask) {
+	var maskf = MASKFUNCS[mask];
+	var n = matrix.length;
+	for (var i = 0; i < n; ++i) {
+		for (var j = 0; j < n; ++j) {
+			if (!reserved[i][j])
+				matrix[i][j] ^= maskf(i, j);
+		}
+	}
+	return matrix;
+};
+
+// puts the format information.
+var putformatinfo = function (matrix, reserved, ecclevel, mask) {
+	var n = matrix.length;
+	var code = augumentbch((ecclevel << 3) | mask, 5, 0x537, 10) ^ 0x5412;
+	for (var i = 0; i < 15; ++i) {
+		var r = [0, 1, 2, 3, 4, 5, 7, 8, n - 7, n - 6, n - 5, n - 4, n - 3, n - 2, n - 1][i];
+		var c = [n - 1, n - 2, n - 3, n - 4, n - 5, n - 6, n - 7, n - 8, 7, 5, 4, 3, 2, 1, 0][i];
+		matrix[r][8] = matrix[8][c] = (code >> i) & 1;
+		// we don't have to mark those bits reserved; always done
+		// in makebasematrix above.
+	}
+	return matrix;
+};
+
+// evaluates the resulting matrix and returns the score (lower is better).
+// (cf. JIS X 0510:2004 sec 8.8.2)
+//
+// the evaluation procedure tries to avoid the problematic patterns naturally
+// occuring from the original matrix. for example, it penaltizes the patterns
+// which just look like the finder pattern which will confuse the decoder.
+// we choose the mask which results in the lowest score among 8 possible ones.
+//
+// note: zxing seems to use the same procedure and in many cases its choice
+// agrees to ours, but sometimes it does not. practically it doesn't matter.
+var evaluatematrix = function (matrix) {
+	// N1+(k-5) points for each consecutive row of k same-colored modules,
+	// where k >= 5. no overlapping row counts.
+	var PENALTY_CONSECUTIVE = 3;
+	// N2 points for each 2x2 block of same-colored modules.
+	// overlapping block does count.
+	var PENALTY_TWOBYTWO = 3;
+	// N3 points for each pattern with >4W:1B:1W:3B:1W:1B or
+	// 1B:1W:3B:1W:1B:>4W, or their multiples (e.g. highly unlikely,
+	// but 13W:3B:3W:9B:3W:3B counts).
+	var PENALTY_FINDERLIKE = 40;
+	// N4*k points for every (5*k)% deviation from 50% black density.
+	// i.e. k=1 for 55~60% and 40~45%, k=2 for 60~65% and 35~40%, etc.
+	var PENALTY_DENSITY = 10;
+
+	var evaluategroup = function (groups) { // assumes [W,B,W,B,W,...,B,W]
+		var score = 0;
+		for (var i = 0; i < groups.length; ++i) {
+			if (groups[i] >= 5)
+				score += PENALTY_CONSECUTIVE + (groups[i] - 5);
+		}
+		for (var i = 5; i < groups.length; i += 2) {
+			var p = groups[i];
+			if (groups[i - 1] == p && groups[i - 2] == 3 * p && groups[i - 3] == p &&
+				groups[i - 4] == p && (groups[i - 5] >= 4 * p || groups[i + 1] >= 4 * p)) {
+				// this part differs from zxing...
+				score += PENALTY_FINDERLIKE;
+			}
+		}
+		return score;
+	};
+
+	var n = matrix.length;
+	var score = 0, nblacks = 0;
+	for (var i = 0; i < n; ++i) {
+		var row = matrix[i];
+		var groups;
+
+		// evaluate the current row
+		groups = [0]; // the first empty group of white
+		for (var j = 0; j < n; ) {
+			var k;
+			for (k = 0; j < n && row[j]; ++k)
+				++j;
+			groups.push(k);
+			for (k = 0; j < n && !row[j]; ++k)
+				++j;
+			groups.push(k);
+		}
+		score += evaluategroup(groups);
+
+		// evaluate the current column
+		groups = [0];
+		for (var j = 0; j < n; ) {
+			var k;
+			for (k = 0; j < n && matrix[j][i]; ++k)
+				++j;
+			groups.push(k);
+			for (k = 0; j < n && !matrix[j][i]; ++k)
+				++j;
+			groups.push(k);
+		}
+		score += evaluategroup(groups);
+
+		// check the 2x2 box and calculate the density
+		var nextrow = matrix[i + 1] || [];
+		nblacks += row[0];
+		for (var j = 1; j < n; ++j) {
+			var p = row[j];
+			nblacks += p;
+			// at least comparison with next row should be strict...
+			if (row[j - 1] == p && nextrow[j] === p && nextrow[j - 1] === p) {
+				score += PENALTY_TWOBYTWO;
+			}
+		}
+	}
+
+	score += PENALTY_DENSITY * ((Math.abs(nblacks / n / n - 0.5) / 0.05) | 0);
+	return score;
+};
+
+// returns the fully encoded QR code matrix which contains given data.
+// it also chooses the best mask automatically when mask is -1.
+var generate = function (data, ver, mode, ecclevel, mask) {
+	var v = VERSIONS[ver];
+	var buf = encode(ver, mode, data, ndatabits(ver, ecclevel) >> 3);
+	buf = augumenteccs(buf, v[1][ecclevel], GF256_GENPOLY[v[0][ecclevel]]);
+
+	var result = makebasematrix(ver);
+	var matrix = result.matrix, reserved = result.reserved;
+	putdata(matrix, reserved, buf);
+
+	if (mask < 0) {
+		// find the best mask
+		maskdata(matrix, reserved, 0);
+		putformatinfo(matrix, reserved, ecclevel, 0);
+		var bestmask = 0, bestscore = evaluatematrix(matrix);
+		maskdata(matrix, reserved, 0);
+		for (mask = 1; mask < 8; ++mask) {
+			maskdata(matrix, reserved, mask);
+			putformatinfo(matrix, reserved, ecclevel, mask);
+			var score = evaluatematrix(matrix);
+			if (bestscore > score) {
+				bestscore = score;
+				bestmask = mask;
+			}
+			maskdata(matrix, reserved, mask);
+		}
+		mask = bestmask;
+	}
+
+	maskdata(matrix, reserved, mask);
+	putformatinfo(matrix, reserved, ecclevel, mask);
+	return matrix;
+};
+
+// the public interface is trivial; the options available are as follows:
+//
+// - version: an integer in [1,40]. when omitted (or -1) the smallest possible
+//   version is chosen.
+// - mode: one of 'numeric', 'alphanumeric', 'octet'. when omitted the smallest
+//   possible mode is chosen.
+// - eccLevel: one of 'L', 'M', 'Q', 'H'. defaults to 'L'.
+// - mask: an integer in [0,7]. when omitted (or -1) the best mask is chosen.
+//
+
+function generateFrame(data, options) {
+	var MODES = {'numeric': MODE_NUMERIC, 'alphanumeric': MODE_ALPHANUMERIC,
+		'octet': MODE_OCTET};
+	var ECCLEVELS = {'L': ECCLEVEL_L, 'M': ECCLEVEL_M, 'Q': ECCLEVEL_Q,
+		'H': ECCLEVEL_H};
+
+	options = options || {};
+	var ver = options.version || -1;
+	var ecclevel = ECCLEVELS[(options.eccLevel || 'L').toUpperCase()];
+	var mode = options.mode ? MODES[options.mode.toLowerCase()] : -1;
+	var mask = 'mask' in options ? options.mask : -1;
+
+	if (mode < 0) {
+		if (typeof data === 'string') {
+			if (data.match(NUMERIC_REGEXP)) {
+				mode = MODE_NUMERIC;
+			} else if (data.match(ALPHANUMERIC_OUT_REGEXP)) {
+				// while encode supports case-insensitive encoding, we restrict the data to be uppercased when auto-selecting the mode.
+				mode = MODE_ALPHANUMERIC;
+			} else {
+				mode = MODE_OCTET;
+			}
+		} else {
+			mode = MODE_OCTET;
+		}
+	} else if (!(mode == MODE_NUMERIC || mode == MODE_ALPHANUMERIC ||
+		mode == MODE_OCTET)) {
+		throw 'invalid or unsupported mode';
+	}
+
+	data = validatedata(mode, data);
+	if (data === null)
+		throw 'invalid data format';
+
+	if (ecclevel < 0 || ecclevel > 3)
+		throw 'invalid ECC level';
+
+	if (ver < 0) {
+		for (ver = 1; ver <= 40; ++ver) {
+			if (data.length <= getmaxdatalen(ver, mode, ecclevel))
+				break;
+		}
+		if (ver > 40)
+			throw 'too large data for the Qr format';
+	} else if (ver < 1 || ver > 40) {
+		throw 'invalid Qr version! should be between 1 and 40';
+	}
+
+	if (mask != -1 && (mask < 0 || mask > 8))
+		throw 'invalid mask';
+	//console.log('version:', ver, 'mode:', mode, 'ECC:', ecclevel, 'mask:', mask )
+	return generate(data, ver, mode, ecclevel, mask);
+}
+
+
+// options
+// - modulesize: a number. this is a size of each modules in pixels, and
+//   defaults to 5px.
+// - margin: a number. this is a size of margin in *modules*, and defaults to
+//   4 (white modules). the specficiation mandates the margin no less than 4
+//   modules, so it is better not to alter this value unless you know what
+//   you're doing.
+function buildCanvas(data, options) {
+
+	var canvas = [];
+	var background = options.background || '#fff';
+	var foreground = options.foreground || '#000';
+	//var margin = options.margin || 4;
+	var matrix = generateFrame(data, options);
+	var n = matrix.length;
+	var modSize = Math.floor(options.fit ? options.fit / n : 5);
+	var size = n * modSize;
+
+	canvas.push({
+		type: 'rect',
+		x: 0, y: 0, w: size, h: size, lineWidth: 0, color: background
+	});
+
+	for (var i = 0; i < n; ++i) {
+		for (var j = 0; j < n; ++j) {
+			if (matrix[i][j]) {
+				canvas.push({
+					type: 'rect',
+					x: modSize * j,
+					y: modSize * i,
+					w: modSize,
+					h: modSize,
+					lineWidth: 0,
+					color: foreground
+				});
+			}
+		}
+	}
+
+	return {
+		canvas: canvas,
+		size: size
+	};
+
+}
+
+function measure(node) {
+	var cd = buildCanvas(node.qr, node);
+	node._canvas = cd.canvas;
+	node._width = node._height = node._minWidth = node._maxWidth = node._minHeight = node._maxHeight = cd.size;
+	return node;
+}
+
+module.exports = {
+	measure: measure
+};
+
+/***/ }),
+/* 135 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var ElementWriter = __webpack_require__(136);
+
+/**
+ * Creates an instance of PageElementWriter - an extended ElementWriter
+ * which can handle:
+ * - page-breaks (it adds new pages when there's not enough space left),
+ * - repeatable fragments (like table-headers, which are repeated everytime
+ *                         a page-break occurs)
+ * - transactions (used for unbreakable-blocks when we want to make sure
+ *                 whole block will be rendered on the same page)
+ */
+function PageElementWriter(context, tracker) {
+	this.transactionLevel = 0;
+	this.repeatables = [];
+	this.tracker = tracker;
+	this.writer = new ElementWriter(context, tracker);
+}
+
+function fitOnPage(self, addFct) {
+	var position = addFct(self);
+	if (!position) {
+		self.moveToNextPage();
+		position = addFct(self);
+	}
+	return position;
+}
+
+PageElementWriter.prototype.addLine = function (line, dontUpdateContextPosition, index) {
+	return fitOnPage(this, function (self) {
+		return self.writer.addLine(line, dontUpdateContextPosition, index);
+	});
+};
+
+PageElementWriter.prototype.addImage = function (image, index) {
+	return fitOnPage(this, function (self) {
+		return self.writer.addImage(image, index);
+	});
+};
+
+PageElementWriter.prototype.addQr = function (qr, index) {
+	return fitOnPage(this, function (self) {
+		return self.writer.addQr(qr, index);
+	});
+};
+
+PageElementWriter.prototype.addVector = function (vector, ignoreContextX, ignoreContextY, index) {
+	return this.writer.addVector(vector, ignoreContextX, ignoreContextY, index);
+};
+
+PageElementWriter.prototype.beginClip = function (width, height) {
+	return this.writer.beginClip(width, height);
+};
+
+PageElementWriter.prototype.endClip = function () {
+	return this.writer.endClip();
+};
+
+PageElementWriter.prototype.alignCanvas = function (node) {
+	this.writer.alignCanvas(node);
+};
+
+PageElementWriter.prototype.addFragment = function (fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition) {
+	if (!this.writer.addFragment(fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition)) {
+		this.moveToNextPage();
+		this.writer.addFragment(fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition);
+	}
+};
+
+PageElementWriter.prototype.moveToNextPage = function (pageOrientation) {
+
+	var nextPage = this.writer.context.moveToNextPage(pageOrientation);
+
+	if (nextPage.newPageCreated) {
+		this.repeatables.forEach(function (rep) {
+			this.writer.addFragment(rep, true);
+		}, this);
+	} else {
+		this.repeatables.forEach(function (rep) {
+			this.writer.context.moveDown(rep.height);
+		}, this);
+	}
+
+	this.writer.tracker.emit('pageChanged', {
+		prevPage: nextPage.prevPage,
+		prevY: nextPage.prevY,
+		y: nextPage.y
+	});
+};
+
+PageElementWriter.prototype.beginUnbreakableBlock = function (width, height) {
+	if (this.transactionLevel++ === 0) {
+		this.originalX = this.writer.context.x;
+		this.writer.pushContext(width, height);
+	}
+};
+
+PageElementWriter.prototype.commitUnbreakableBlock = function (forcedX, forcedY) {
+	if (--this.transactionLevel === 0) {
+		var unbreakableContext = this.writer.context;
+		this.writer.popContext();
+
+		var nbPages = unbreakableContext.pages.length;
+		if (nbPages > 0) {
+			// no support for multi-page unbreakableBlocks
+			var fragment = unbreakableContext.pages[0];
+			fragment.xOffset = forcedX;
+			fragment.yOffset = forcedY;
+
+			//TODO: vectors can influence height in some situations
+			if (nbPages > 1) {
+				// on out-of-context blocs (headers, footers, background) height should be the whole DocumentContext height
+				if (forcedX !== undefined || forcedY !== undefined) {
+					fragment.height = unbreakableContext.getCurrentPage().pageSize.height - unbreakableContext.pageMargins.top - unbreakableContext.pageMargins.bottom;
+				} else {
+					fragment.height = this.writer.context.getCurrentPage().pageSize.height - this.writer.context.pageMargins.top - this.writer.context.pageMargins.bottom;
+					for (var i = 0, l = this.repeatables.length; i < l; i++) {
+						fragment.height -= this.repeatables[i].height;
+					}
+				}
+			} else {
+				fragment.height = unbreakableContext.y;
+			}
+
+			if (forcedX !== undefined || forcedY !== undefined) {
+				this.writer.addFragment(fragment, true, true, true);
+			} else {
+				this.addFragment(fragment);
+			}
+		}
+	}
+};
+
+PageElementWriter.prototype.currentBlockToRepeatable = function () {
+	var unbreakableContext = this.writer.context;
+	var rep = {items: []};
+
+	unbreakableContext.pages[0].items.forEach(function (item) {
+		rep.items.push(item);
+	});
+
+	rep.xOffset = this.originalX;
+
+	//TODO: vectors can influence height in some situations
+	rep.height = unbreakableContext.y;
+
+	return rep;
+};
+
+PageElementWriter.prototype.pushToRepeatables = function (rep) {
+	this.repeatables.push(rep);
+};
+
+PageElementWriter.prototype.popFromRepeatables = function () {
+	this.repeatables.pop();
+};
+
+PageElementWriter.prototype.context = function () {
+	return this.writer.context;
+};
+
+module.exports = PageElementWriter;
+
+
+/***/ }),
+/* 136 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var Line = __webpack_require__(82);
+var isNumber = __webpack_require__(0).isNumber;
+var pack = __webpack_require__(0).pack;
+var offsetVector = __webpack_require__(0).offsetVector;
+var DocumentContext = __webpack_require__(81);
+
+/**
+ * Creates an instance of ElementWriter - a line/vector writer, which adds
+ * elements to current page and sets their positions based on the context
+ */
+function ElementWriter(context, tracker) {
+	this.context = context;
+	this.contextStack = [];
+	this.tracker = tracker;
+}
+
+function addPageItem(page, item, index) {
+	if (index === null || index === undefined || index < 0 || index > page.items.length) {
+		page.items.push(item);
+	} else {
+		page.items.splice(index, 0, item);
+	}
+}
+
+ElementWriter.prototype.addLine = function (line, dontUpdateContextPosition, index) {
+	var height = line.getHeight();
+	var context = this.context;
+	var page = context.getCurrentPage(),
+		position = this.getCurrentPositionOnPage();
+
+	if (context.availableHeight < height || !page) {
+		return false;
+	}
+
+	line.x = context.x + (line.x || 0);
+	line.y = context.y + (line.y || 0);
+
+	this.alignLine(line);
+
+	addPageItem(page, {
+		type: 'line',
+		item: line
+	}, index);
+	this.tracker.emit('lineAdded', line);
+
+	if (!dontUpdateContextPosition) {
+		context.moveDown(height);
+	}
+
+	return position;
+};
+
+ElementWriter.prototype.alignLine = function (line) {
+	var width = this.context.availableWidth;
+	var lineWidth = line.getWidth();
+
+	var alignment = line.inlines && line.inlines.length > 0 && line.inlines[0].alignment;
+
+	var offset = 0;
+	switch (alignment) {
+		case 'right':
+			offset = width - lineWidth;
+			break;
+		case 'center':
+			offset = (width - lineWidth) / 2;
+			break;
+	}
+
+	if (offset) {
+		line.x = (line.x || 0) + offset;
+	}
+
+	if (alignment === 'justify' &&
+		!line.newLineForced &&
+		!line.lastLineInParagraph &&
+		line.inlines.length > 1) {
+		var additionalSpacing = (width - lineWidth) / (line.inlines.length - 1);
+
+		for (var i = 1, l = line.inlines.length; i < l; i++) {
+			offset = i * additionalSpacing;
+
+			line.inlines[i].x += offset;
+			line.inlines[i].justifyShift = additionalSpacing;
+		}
+	}
+};
+
+ElementWriter.prototype.addImage = function (image, index) {
+	var context = this.context;
+	var page = context.getCurrentPage(),
+		position = this.getCurrentPositionOnPage();
+
+	if (!page || (image.absolutePosition === undefined && context.availableHeight < image._height && page.items.length > 0)) {
+		return false;
+	}
+
+	if (image._x === undefined) {
+		image._x = image.x || 0;
+	}
+
+	image.x = context.x + image._x;
+	image.y = context.y;
+
+	this.alignImage(image);
+
+	addPageItem(page, {
+		type: 'image',
+		item: image
+	}, index);
+
+	context.moveDown(image._height);
+
+	return position;
+};
+
+ElementWriter.prototype.addQr = function (qr, index) {
+	var context = this.context;
+	var page = context.getCurrentPage(),
+		position = this.getCurrentPositionOnPage();
+
+	if (!page || (qr.absolutePosition === undefined && context.availableHeight < qr._height)) {
+		return false;
+	}
+
+	if (qr._x === undefined) {
+		qr._x = qr.x || 0;
+	}
+
+	qr.x = context.x + qr._x;
+	qr.y = context.y;
+
+	this.alignImage(qr);
+
+	for (var i = 0, l = qr._canvas.length; i < l; i++) {
+		var vector = qr._canvas[i];
+		vector.x += qr.x;
+		vector.y += qr.y;
+		this.addVector(vector, true, true, index);
+	}
+
+	context.moveDown(qr._height);
+
+	return position;
+};
+
+ElementWriter.prototype.alignImage = function (image) {
+	var width = this.context.availableWidth;
+	var imageWidth = image._minWidth;
+	var offset = 0;
+	switch (image._alignment) {
+		case 'right':
+			offset = width - imageWidth;
+			break;
+		case 'center':
+			offset = (width - imageWidth) / 2;
+			break;
+	}
+
+	if (offset) {
+		image.x = (image.x || 0) + offset;
+	}
+};
+
+ElementWriter.prototype.alignCanvas = function (node) {
+	var width = this.context.availableWidth;
+	var canvasWidth = node._minWidth;
+	var offset = 0;
+	switch (node._alignment) {
+		case 'right':
+			offset = width - canvasWidth;
+			break;
+		case 'center':
+			offset = (width - canvasWidth) / 2;
+			break;
+	}
+	if (offset) {
+		node.canvas.forEach(function (vector) {
+			offsetVector(vector, offset, 0);
+		});
+	}
+};
+
+ElementWriter.prototype.addVector = function (vector, ignoreContextX, ignoreContextY, index) {
+	var context = this.context;
+	var page = context.getCurrentPage(),
+		position = this.getCurrentPositionOnPage();
+
+	if (page) {
+		offsetVector(vector, ignoreContextX ? 0 : context.x, ignoreContextY ? 0 : context.y);
+		addPageItem(page, {
+			type: 'vector',
+			item: vector
+		}, index);
+		return position;
+	}
+};
+
+ElementWriter.prototype.beginClip = function (width, height) {
+	var ctx = this.context;
+	var page = ctx.getCurrentPage();
+	page.items.push({
+		type: 'beginClip',
+		item: {x: ctx.x, y: ctx.y, width: width, height: height}
+	});
+	return true;
+};
+
+ElementWriter.prototype.endClip = function () {
+	var ctx = this.context;
+	var page = ctx.getCurrentPage();
+	page.items.push({
+		type: 'endClip'
+	});
+	return true;
+};
+
+function cloneLine(line) {
+	var result = new Line(line.maxWidth);
+
+	for (var key in line) {
+		if (line.hasOwnProperty(key)) {
+			result[key] = line[key];
+		}
+	}
+
+	return result;
+}
+
+ElementWriter.prototype.addFragment = function (block, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition) {
+	var ctx = this.context;
+	var page = ctx.getCurrentPage();
+
+	if (!useBlockXOffset && block.height > ctx.availableHeight) {
+		return false;
+	}
+
+	block.items.forEach(function (item) {
+		switch (item.type) {
+			case 'line':
+				var l = cloneLine(item.item);
+
+				l.x = (l.x || 0) + (useBlockXOffset ? (block.xOffset || 0) : ctx.x);
+				l.y = (l.y || 0) + (useBlockYOffset ? (block.yOffset || 0) : ctx.y);
+
+				page.items.push({
+					type: 'line',
+					item: l
+				});
+				break;
+
+			case 'vector':
+				var v = pack(item.item);
+
+				offsetVector(v, useBlockXOffset ? (block.xOffset || 0) : ctx.x, useBlockYOffset ? (block.yOffset || 0) : ctx.y);
+				page.items.push({
+					type: 'vector',
+					item: v
+				});
+				break;
+
+			case 'image':
+				var img = pack(item.item);
+
+				img.x = (img.x || 0) + (useBlockXOffset ? (block.xOffset || 0) : ctx.x);
+				img.y = (img.y || 0) + (useBlockYOffset ? (block.yOffset || 0) : ctx.y);
+
+				page.items.push({
+					type: 'image',
+					item: img
+				});
+				break;
+		}
+	});
+
+	if (!dontUpdateContextPosition) {
+		ctx.moveDown(block.height);
+	}
+
+	return true;
+};
+
+/**
+ * Pushes the provided context onto the stack or creates a new one
+ *
+ * pushContext(context) - pushes the provided context and makes it current
+ * pushContext(width, height) - creates and pushes a new context with the specified width and height
+ * pushContext() - creates a new context for unbreakable blocks (with current availableWidth and full-page-height)
+ */
+ElementWriter.prototype.pushContext = function (contextOrWidth, height) {
+	if (contextOrWidth === undefined) {
+		height = this.context.getCurrentPage().height - this.context.pageMargins.top - this.context.pageMargins.bottom;
+		contextOrWidth = this.context.availableWidth;
+	}
+
+	if (isNumber(contextOrWidth)) {
+		contextOrWidth = new DocumentContext({width: contextOrWidth, height: height}, {left: 0, right: 0, top: 0, bottom: 0});
+	}
+
+	this.contextStack.push(this.context);
+	this.context = contextOrWidth;
+};
+
+ElementWriter.prototype.popContext = function () {
+	this.context = this.contextStack.pop();
+};
+
+ElementWriter.prototype.getCurrentPositionOnPage = function () {
+	return (this.contextStack[0] || this.context).getCurrentPosition();
+};
+
+
+module.exports = ElementWriter;
+
+
+/***/ }),
+/* 137 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var ColumnCalculator = __webpack_require__(44);
+var isFunction = __webpack_require__(0).isFunction;
+
+function TableProcessor(tableNode) {
+	this.tableNode = tableNode;
+}
+
+TableProcessor.prototype.beginTable = function (writer) {
+	var tableNode;
+	var availableWidth;
+	var self = this;
+
+	tableNode = this.tableNode;
+	this.offsets = tableNode._offsets;
+	this.layout = tableNode._layout;
+
+	availableWidth = writer.context().availableWidth - this.offsets.total;
+	ColumnCalculator.buildColumnWidths(tableNode.table.widths, availableWidth);
+
+	this.tableWidth = tableNode._offsets.total + getTableInnerContentWidth();
+	this.rowSpanData = prepareRowSpanData();
+	this.cleanUpRepeatables = false;
+
+	this.headerRows = tableNode.table.headerRows || 0;
+	this.rowsWithoutPageBreak = this.headerRows + (tableNode.table.keepWithHeaderRows || 0);
+	this.dontBreakRows = tableNode.table.dontBreakRows || false;
+
+	if (this.rowsWithoutPageBreak) {
+		writer.beginUnbreakableBlock();
+	}
+
+	// update the border properties of all cells before drawing any lines
+	prepareCellBorders(this.tableNode.table.body);
+
+	this.drawHorizontalLine(0, writer);
+
+	function getTableInnerContentWidth() {
+		var width = 0;
+
+		tableNode.table.widths.forEach(function (w) {
+			width += w._calcWidth;
+		});
+
+		return width;
+	}
+
+	function prepareRowSpanData() {
+		var rsd = [];
+		var x = 0;
+		var lastWidth = 0;
+
+		rsd.push({left: 0, rowSpan: 0});
+
+		for (var i = 0, l = self.tableNode.table.body[0].length; i < l; i++) {
+			var paddings = self.layout.paddingLeft(i, self.tableNode) + self.layout.paddingRight(i, self.tableNode);
+			var lBorder = self.layout.vLineWidth(i, self.tableNode);
+			lastWidth = paddings + lBorder + self.tableNode.table.widths[i]._calcWidth;
+			rsd[rsd.length - 1].width = lastWidth;
+			x += lastWidth;
+			rsd.push({left: x, rowSpan: 0, width: 0});
+		}
+
+		return rsd;
+	}
+
+	// Iterate through all cells. If the current cell is the start of a
+	// rowSpan/colSpan, update the border property of the cells on its
+	// bottom/right accordingly. This is needed since each iteration of the
+	// line-drawing loops draws lines for a single cell, not for an entire
+	// rowSpan/colSpan.
+	function prepareCellBorders(body) {
+		for (var rowIndex = 0; rowIndex < body.length; rowIndex++) {
+			var row = body[rowIndex];
+
+			for (var colIndex = 0; colIndex < row.length; colIndex++) {
+				var cell = row[colIndex];
+
+				if (cell.border) {
+					var rowSpan = cell.rowSpan || 1;
+					var colSpan = cell.colSpan || 1;
+
+					for (var rowOffset = 0; rowOffset < rowSpan; rowOffset++) {
+						// set left border
+						if (cell.border[0] !== undefined && rowOffset > 0) {
+							setBorder(rowIndex + rowOffset, colIndex, 0, cell.border[0]);
+						}
+
+						// set right border
+						if (cell.border[2] !== undefined) {
+							setBorder(rowIndex + rowOffset, colIndex + colSpan - 1, 2, cell.border[2]);
+						}
+					}
+
+					for (var colOffset = 0; colOffset < colSpan; colOffset++) {
+						// set top border
+						if (cell.border[1] !== undefined && colOffset > 0) {
+							setBorder(rowIndex, colIndex + colOffset, 1, cell.border[1]);
+						}
+
+						// set bottom border
+						if (cell.border[3] !== undefined) {
+							setBorder(rowIndex + rowSpan - 1, colIndex + colOffset, 3, cell.border[3]);
+						}
+					}
+				}
+			}
+		}
+
+		// helper function to set the border for a given cell
+		function setBorder(rowIndex, colIndex, borderIndex, borderValue) {
+			var cell = body[rowIndex][colIndex];
+			cell.border = cell.border || {};
+			cell.border[borderIndex] = borderValue;
+		}
+	}
+};
+
+TableProcessor.prototype.onRowBreak = function (rowIndex, writer) {
+	var self = this;
+	return function () {
+		var offset = self.rowPaddingTop + (!self.headerRows ? self.topLineWidth : 0);
+		writer.context().availableHeight -= self.reservedAtBottom;
+		writer.context().moveDown(offset);
+	};
+};
+
+TableProcessor.prototype.beginRow = function (rowIndex, writer) {
+	this.topLineWidth = this.layout.hLineWidth(rowIndex, this.tableNode);
+	this.rowPaddingTop = this.layout.paddingTop(rowIndex, this.tableNode);
+	this.bottomLineWidth = this.layout.hLineWidth(rowIndex + 1, this.tableNode);
+	this.rowPaddingBottom = this.layout.paddingBottom(rowIndex, this.tableNode);
+
+	this.rowCallback = this.onRowBreak(rowIndex, writer);
+	writer.tracker.startTracking('pageChanged', this.rowCallback);
+	if (this.dontBreakRows) {
+		writer.beginUnbreakableBlock();
+	}
+	this.rowTopY = writer.context().y;
+	this.reservedAtBottom = this.bottomLineWidth + this.rowPaddingBottom;
+
+	writer.context().availableHeight -= this.reservedAtBottom;
+
+	writer.context().moveDown(this.rowPaddingTop);
+};
+
+TableProcessor.prototype.drawHorizontalLine = function (lineIndex, writer, overrideY) {
+	var lineWidth = this.layout.hLineWidth(lineIndex, this.tableNode);
+	if (lineWidth) {
+		var offset = lineWidth / 2;
+		var currentLine = null;
+		var body = this.tableNode.table.body;
+
+		for (var i = 0, l = this.rowSpanData.length; i < l; i++) {
+			var data = this.rowSpanData[i];
+			var shouldDrawLine = !data.rowSpan;
+
+			// draw only if the current cell requires a top border or the cell in the
+			// row above requires a bottom border
+			if (shouldDrawLine && i < l - 1) {
+				var topBorder = false, bottomBorder = false;
+
+				// the current cell
+				if (lineIndex < body.length) {
+					var cell = body[lineIndex][i];
+					topBorder = cell.border ? cell.border[1] : this.layout.defaultBorder;
+				}
+
+				// the cell in the row above
+				if (lineIndex > 0) {
+					var cellAbove = body[lineIndex - 1][i];
+					bottomBorder = cellAbove.border ? cellAbove.border[3] : this.layout.defaultBorder;
+				}
+
+				shouldDrawLine = topBorder || bottomBorder;
+			}
+
+			if (!currentLine && shouldDrawLine) {
+				currentLine = {left: data.left, width: 0};
+			}
+
+			if (shouldDrawLine) {
+				currentLine.width += (data.width || 0);
+			}
+
+			var y = (overrideY || 0) + offset;
+
+			if (!shouldDrawLine || i === l - 1) {
+				if (currentLine && currentLine.width) {
+					writer.addVector({
+						type: 'line',
+						x1: currentLine.left,
+						x2: currentLine.left + currentLine.width,
+						y1: y,
+						y2: y,
+						lineWidth: lineWidth,
+						lineColor: isFunction(this.layout.hLineColor) ? this.layout.hLineColor(lineIndex, this.tableNode) : this.layout.hLineColor
+					}, false, overrideY);
+					currentLine = null;
+				}
+			}
+		}
+
+		writer.context().moveDown(lineWidth);
+	}
+};
+
+TableProcessor.prototype.drawVerticalLine = function (x, y0, y1, vLineIndex, writer) {
+	var width = this.layout.vLineWidth(vLineIndex, this.tableNode);
+	if (width === 0) {
+		return;
+	}
+	writer.addVector({
+		type: 'line',
+		x1: x + width / 2,
+		x2: x + width / 2,
+		y1: y0,
+		y2: y1,
+		lineWidth: width,
+		lineColor: isFunction(this.layout.vLineColor) ? this.layout.vLineColor(vLineIndex, this.tableNode) : this.layout.vLineColor
+	}, false, true);
+};
+
+TableProcessor.prototype.endTable = function (writer) {
+	if (this.cleanUpRepeatables) {
+		writer.popFromRepeatables();
+		this.headerRepeatableHeight = null;
+	}
+};
+
+TableProcessor.prototype.endRow = function (rowIndex, writer, pageBreaks) {
+	var l, i;
+	var self = this;
+	writer.tracker.stopTracking('pageChanged', this.rowCallback);
+	writer.context().moveDown(this.layout.paddingBottom(rowIndex, this.tableNode));
+	writer.context().availableHeight += this.reservedAtBottom;
+
+	var endingPage = writer.context().page;
+	var endingY = writer.context().y;
+
+	var xs = getLineXs();
+
+	var ys = [];
+
+	var hasBreaks = pageBreaks && pageBreaks.length > 0;
+	var body = this.tableNode.table.body;
+
+	ys.push({
+		y0: this.rowTopY,
+		page: hasBreaks ? pageBreaks[0].prevPage : endingPage
+	});
+
+	if (hasBreaks) {
+		for (i = 0, l = pageBreaks.length; i < l; i++) {
+			var pageBreak = pageBreaks[i];
+			ys[ys.length - 1].y1 = pageBreak.prevY;
+
+			ys.push({y0: pageBreak.y, page: pageBreak.prevPage + 1});
+
+			if (this.headerRepeatableHeight) {
+				ys[ys.length - 1].y0 += this.headerRepeatableHeight;
+			}
+		}
+	}
+
+	ys[ys.length - 1].y1 = endingY;
+
+	var skipOrphanePadding = (ys[0].y1 - ys[0].y0 === this.rowPaddingTop);
+	for (var yi = (skipOrphanePadding ? 1 : 0), yl = ys.length; yi < yl; yi++) {
+		var willBreak = yi < ys.length - 1;
+		var rowBreakWithoutHeader = (yi > 0 && !this.headerRows);
+		var hzLineOffset = rowBreakWithoutHeader ? 0 : this.topLineWidth;
+		var y1 = ys[yi].y0;
+		var y2 = ys[yi].y1;
+
+		if (willBreak) {
+			y2 = y2 + this.rowPaddingBottom;
+		}
+
+		if (writer.context().page != ys[yi].page) {
+			writer.context().page = ys[yi].page;
+
+			//TODO: buggy, availableHeight should be updated on every pageChanged event
+			// TableProcessor should be pageChanged listener, instead of processRow
+			this.reservedAtBottom = 0;
+		}
+
+		for (i = 0, l = xs.length; i < l; i++) {
+			var leftBorder = false, rightBorder = false;
+			var colIndex = xs[i].index;
+
+			// the current cell
+			if (colIndex < body[rowIndex].length) {
+				var cell = body[rowIndex][colIndex];
+				leftBorder = cell.border ? cell.border[0] : this.layout.defaultBorder;
+			}
+
+			// the cell from before column
+			if (colIndex > 0) {
+				var cell = body[rowIndex][colIndex - 1];
+				rightBorder = cell.border ? cell.border[2] : this.layout.defaultBorder;
+			}
+
+			if (leftBorder || rightBorder) {
+				this.drawVerticalLine(xs[i].x, y1 - hzLineOffset, y2 + this.bottomLineWidth, xs[i].index, writer);
+			}
+
+			if (i < l - 1) {
+				var fillColor = body[rowIndex][colIndex].fillColor;
+				if (!fillColor) {
+					fillColor = isFunction(this.layout.fillColor) ? this.layout.fillColor(rowIndex, this.tableNode, colIndex) : this.layout.fillColor;
+				}
+				if (fillColor) {
+					var wBorder = (leftBorder || rightBorder) ? this.layout.vLineWidth(colIndex, this.tableNode) : 0;
+					var xf = xs[i].x + wBorder;
+					var yf = this.dontBreakRows ? y1 : y1 - hzLineOffset;
+					writer.addVector({
+						type: 'rect',
+						x: xf,
+						y: yf,
+						w: xs[i + 1].x - xf,
+						h: y2 + this.bottomLineWidth - yf,
+						lineWidth: 0,
+						color: fillColor
+					}, false, true, writer.context().hasBackground ? 1 : 0);
+				}
+			}
+		}
+
+		if (willBreak && this.layout.hLineWhenBroken !== false) {
+			this.drawHorizontalLine(rowIndex + 1, writer, y2);
+		}
+		if (rowBreakWithoutHeader && this.layout.hLineWhenBroken !== false) {
+			this.drawHorizontalLine(rowIndex, writer, y1);
+		}
+	}
+
+	writer.context().page = endingPage;
+	writer.context().y = endingY;
+
+	var row = this.tableNode.table.body[rowIndex];
+	for (i = 0, l = row.length; i < l; i++) {
+		if (row[i].rowSpan) {
+			this.rowSpanData[i].rowSpan = row[i].rowSpan;
+
+			// fix colSpans
+			if (row[i].colSpan && row[i].colSpan > 1) {
+				for (var j = 1; j < row[i].rowSpan; j++) {
+					this.tableNode.table.body[rowIndex + j][i]._colSpan = row[i].colSpan;
+				}
+			}
+		}
+
+		if (this.rowSpanData[i].rowSpan > 0) {
+			this.rowSpanData[i].rowSpan--;
+		}
+	}
+
+	this.drawHorizontalLine(rowIndex + 1, writer);
+
+	if (this.headerRows && rowIndex === this.headerRows - 1) {
+		this.headerRepeatable = writer.currentBlockToRepeatable();
+	}
+
+	if (this.dontBreakRows) {
+		writer.tracker.auto('pageChanged',
+			function () {
+				if (!self.headerRows && self.layout.hLineWhenBroken !== false) {
+					self.drawHorizontalLine(rowIndex, writer);
+				}
+			},
+			function () {
+				writer.commitUnbreakableBlock();
+			}
+		);
+	}
+
+	if (this.headerRepeatable && (rowIndex === (this.rowsWithoutPageBreak - 1) || rowIndex === this.tableNode.table.body.length - 1)) {
+		this.headerRepeatableHeight = this.headerRepeatable.height;
+		writer.commitUnbreakableBlock();
+		writer.pushToRepeatables(this.headerRepeatable);
+		this.cleanUpRepeatables = true;
+		this.headerRepeatable = null;
+	}
+
+	function getLineXs() {
+		var result = [];
+		var cols = 0;
+
+		for (var i = 0, l = self.tableNode.table.body[rowIndex].length; i < l; i++) {
+			if (!cols) {
+				result.push({x: self.rowSpanData[i].left, index: i});
+
+				var item = self.tableNode.table.body[rowIndex][i];
+				cols = (item._colSpan || item.colSpan || 0);
+			}
+			if (cols > 0) {
+				cols--;
+			}
+		}
+
+		result.push({x: self.rowSpanData[self.rowSpanData.length - 1].left, index: self.rowSpanData.length - 1});
+
+		return result;
+	}
+};
+
+module.exports = TableProcessor;
+
+
+/***/ }),
+/* 138 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+
+/*
+PDFDocument - represents an entire PDF document
+By Devon Govett
+ */
+
+(function() {
+  var PDFDocument, PDFObject, PDFPage, PDFReference, fs, stream,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  stream = __webpack_require__(15);
+
+  fs = __webpack_require__(8);
+
+  PDFObject = __webpack_require__(26);
+
+  PDFReference = __webpack_require__(87);
+
+  PDFPage = __webpack_require__(161);
+
+  PDFDocument = (function(superClass) {
+    var mixin;
+
+    extend(PDFDocument, superClass);
+
+    function PDFDocument(options1) {
+      var key, ref1, ref2, val;
+      this.options = options1 != null ? options1 : {};
+      PDFDocument.__super__.constructor.apply(this, arguments);
+      this.version = 1.3;
+      this.compress = (ref1 = this.options.compress) != null ? ref1 : true;
+      this._pageBuffer = [];
+      this._pageBufferStart = 0;
+      this._offsets = [];
+      this._waiting = 0;
+      this._ended = false;
+      this._offset = 0;
+      this._root = this.ref({
+        Type: 'Catalog',
+        Pages: this.ref({
+          Type: 'Pages',
+          Count: 0,
+          Kids: []
+        })
+      });
+      this.page = null;
+      this.initColor();
+      this.initVector();
+      this.initFonts();
+      this.initText();
+      this.initImages();
+      this.info = {
+        Producer: 'PDFKit',
+        Creator: 'PDFKit',
+        CreationDate: new Date()
+      };
+      if (this.options.info) {
+        ref2 = this.options.info;
+        for (key in ref2) {
+          val = ref2[key];
+          this.info[key] = val;
+        }
+      }
+      this._write("%PDF-" + this.version);
+      this._write("%\xFF\xFF\xFF\xFF");
+      if (this.options.autoFirstPage !== false) {
+        this.addPage();
+      }
+    }
+
+    mixin = function(methods) {
+      var method, name, results;
+      results = [];
+      for (name in methods) {
+        method = methods[name];
+        results.push(PDFDocument.prototype[name] = method);
+      }
+      return results;
+    };
+
+    mixin(__webpack_require__(162));
+
+    mixin(__webpack_require__(164));
+
+    mixin(__webpack_require__(166));
+
+    mixin(__webpack_require__(295));
+
+    mixin(__webpack_require__(297));
+
+    mixin(__webpack_require__(302));
+
+    PDFDocument.prototype.addPage = function(options) {
+      var pages;
+      if (options == null) {
+        options = this.options;
+      }
+      if (!this.options.bufferPages) {
+        this.flushPages();
+      }
+      this.page = new PDFPage(this, options);
+      this._pageBuffer.push(this.page);
+      pages = this._root.data.Pages.data;
+      pages.Kids.push(this.page.dictionary);
+      pages.Count++;
+      this.x = this.page.margins.left;
+      this.y = this.page.margins.top;
+      this._ctm = [1, 0, 0, 1, 0, 0];
+      this.transform(1, 0, 0, -1, 0, this.page.height);
+      this.emit('pageAdded');
+      return this;
+    };
+
+    PDFDocument.prototype.bufferedPageRange = function() {
+      return {
+        start: this._pageBufferStart,
+        count: this._pageBuffer.length
+      };
+    };
+
+    PDFDocument.prototype.switchToPage = function(n) {
+      var page;
+      if (!(page = this._pageBuffer[n - this._pageBufferStart])) {
+        throw new Error("switchToPage(" + n + ") out of bounds, current buffer covers pages " + this._pageBufferStart + " to " + (this._pageBufferStart + this._pageBuffer.length - 1));
+      }
+      return this.page = page;
+    };
+
+    PDFDocument.prototype.flushPages = function() {
+      var i, len, page, pages;
+      pages = this._pageBuffer;
+      this._pageBuffer = [];
+      this._pageBufferStart += pages.length;
+      for (i = 0, len = pages.length; i < len; i++) {
+        page = pages[i];
+        page.end();
+      }
+    };
+
+    PDFDocument.prototype.ref = function(data) {
+      var ref;
+      ref = new PDFReference(this, this._offsets.length + 1, data);
+      this._offsets.push(null);
+      this._waiting++;
+      return ref;
+    };
+
+    PDFDocument.prototype._read = function() {};
+
+    PDFDocument.prototype._write = function(data) {
+      if (!Buffer.isBuffer(data)) {
+        data = new Buffer(data + '\n', 'binary');
+      }
+      this.push(data);
+      return this._offset += data.length;
+    };
+
+    PDFDocument.prototype.addContent = function(data) {
+      this.page.write(data);
+      return this;
+    };
+
+    PDFDocument.prototype._refEnd = function(ref) {
+      this._offsets[ref.id - 1] = ref.offset;
+      if (--this._waiting === 0 && this._ended) {
+        this._finalize();
+        return this._ended = false;
+      }
+    };
+
+    PDFDocument.prototype.write = function(filename, fn) {
+      var err;
+      err = new Error('PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. Please pipe the document into a Node stream.');
+      console.warn(err.stack);
+      this.pipe(fs.createWriteStream(filename));
+      this.end();
+      return this.once('end', fn);
+    };
+
+    PDFDocument.prototype.output = function(fn) {
+      throw new Error('PDFDocument#output is deprecated, and has been removed from PDFKit. Please pipe the document into a Node stream.');
+    };
+
+    PDFDocument.prototype.end = function() {
+      var font, key, name, ref1, ref2, val;
+      this.flushPages();
+      this._info = this.ref();
+      ref1 = this.info;
+      for (key in ref1) {
+        val = ref1[key];
+        if (typeof val === 'string') {
+          val = new String(val);
+        }
+        this._info.data[key] = val;
+      }
+      this._info.end();
+      ref2 = this._fontFamilies;
+      for (name in ref2) {
+        font = ref2[name];
+        font.finalize();
+      }
+      this._root.end();
+      this._root.data.Pages.end();
+      if (this._waiting === 0) {
+        return this._finalize();
+      } else {
+        return this._ended = true;
+      }
+    };
+
+    PDFDocument.prototype._finalize = function(fn) {
+      var i, len, offset, ref1, xRefOffset;
+      xRefOffset = this._offset;
+      this._write("xref");
+      this._write("0 " + (this._offsets.length + 1));
+      this._write("0000000000 65535 f ");
+      ref1 = this._offsets;
+      for (i = 0, len = ref1.length; i < len; i++) {
+        offset = ref1[i];
+        offset = ('0000000000' + offset).slice(-10);
+        this._write(offset + ' 00000 n ');
+      }
+      this._write('trailer');
+      this._write(PDFObject.convert({
+        Size: this._offsets.length + 1,
+        Root: this._root,
+        Info: this._info
+      }));
+      this._write('startxref');
+      this._write("" + xRefOffset);
+      this._write('%%EOF');
+      return this.push(null);
+    };
+
+    PDFDocument.prototype.toString = function() {
+      return "[object PDFDocument]";
+    };
+
+    return PDFDocument;
+
+  })(stream.Readable);
+
+  module.exports = PDFDocument;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 139 */
+/***/ (function(module, exports) {
+
+/* (ignored) */
+
+/***/ }),
+/* 140 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var Buffer = __webpack_require__(33).Buffer;
+var util = __webpack_require__(141);
+
+function copyBuffer(src, target, offset) {
+  src.copy(target, offset);
+}
+
+module.exports = function () {
+  function BufferList() {
+    _classCallCheck(this, BufferList);
+
+    this.head = null;
+    this.tail = null;
+    this.length = 0;
+  }
+
+  BufferList.prototype.push = function push(v) {
+    var entry = { data: v, next: null };
+    if (this.length > 0) this.tail.next = entry;else this.head = entry;
+    this.tail = entry;
+    ++this.length;
+  };
+
+  BufferList.prototype.unshift = function unshift(v) {
+    var entry = { data: v, next: this.head };
+    if (this.length === 0) this.tail = entry;
+    this.head = entry;
+    ++this.length;
+  };
+
+  BufferList.prototype.shift = function shift() {
+    if (this.length === 0) return;
+    var ret = this.head.data;
+    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
+    --this.length;
+    return ret;
+  };
+
+  BufferList.prototype.clear = function clear() {
+    this.head = this.tail = null;
+    this.length = 0;
+  };
+
+  BufferList.prototype.join = function join(s) {
+    if (this.length === 0) return '';
+    var p = this.head;
+    var ret = '' + p.data;
+    while (p = p.next) {
+      ret += s + p.data;
+    }return ret;
+  };
+
+  BufferList.prototype.concat = function concat(n) {
+    if (this.length === 0) return Buffer.alloc(0);
+    if (this.length === 1) return this.head.data;
+    var ret = Buffer.allocUnsafe(n >>> 0);
+    var p = this.head;
+    var i = 0;
+    while (p) {
+      copyBuffer(p.data, ret, i);
+      i += p.data.length;
+      p = p.next;
+    }
+    return ret;
+  };
+
+  return BufferList;
+}();
+
+if (util && util.inspect && util.inspect.custom) {
+  module.exports.prototype[util.inspect.custom] = function () {
+    var obj = util.inspect({ length: this.length });
+    return this.constructor.name + ' ' + obj;
+  };
+}
+
+/***/ }),
+/* 141 */
+/***/ (function(module, exports) {
+
+/* (ignored) */
+
+/***/ }),
+/* 142 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global) {var apply = Function.prototype.apply;
+
+// DOM APIs, for completeness
+
+exports.setTimeout = function() {
+  return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);
+};
+exports.setInterval = function() {
+  return new Timeout(apply.call(setInterval, window, arguments), clearInterval);
+};
+exports.clearTimeout =
+exports.clearInterval = function(timeout) {
+  if (timeout) {
+    timeout.close();
+  }
+};
+
+function Timeout(id, clearFn) {
+  this._id = id;
+  this._clearFn = clearFn;
+}
+Timeout.prototype.unref = Timeout.prototype.ref = function() {};
+Timeout.prototype.close = function() {
+  this._clearFn.call(window, this._id);
+};
+
+// Does not start the time, just sets up the members needed.
+exports.enroll = function(item, msecs) {
+  clearTimeout(item._idleTimeoutId);
+  item._idleTimeout = msecs;
+};
+
+exports.unenroll = function(item) {
+  clearTimeout(item._idleTimeoutId);
+  item._idleTimeout = -1;
+};
+
+exports._unrefActive = exports.active = function(item) {
+  clearTimeout(item._idleTimeoutId);
+
+  var msecs = item._idleTimeout;
+  if (msecs >= 0) {
+    item._idleTimeoutId = setTimeout(function onTimeout() {
+      if (item._onTimeout)
+        item._onTimeout();
+    }, msecs);
+  }
+};
+
+// setimmediate attaches itself to the global object
+__webpack_require__(143);
+// On some exotic environments, it's not clear which object `setimmeidate` was
+// able to install onto.  Search each possibility in the same order as the
+// `setimmediate` library.
+exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) ||
+                       (typeof global !== "undefined" && global.setImmediate) ||
+                       (this && this.setImmediate);
+exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) ||
+                         (typeof global !== "undefined" && global.clearImmediate) ||
+                         (this && this.clearImmediate);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
+
+/***/ }),
+/* 143 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {
+    "use strict";
+
+    if (global.setImmediate) {
+        return;
+    }
+
+    var nextHandle = 1; // Spec says greater than zero
+    var tasksByHandle = {};
+    var currentlyRunningATask = false;
+    var doc = global.document;
+    var registerImmediate;
+
+    function setImmediate(callback) {
+      // Callback can either be a function or a string
+      if (typeof callback !== "function") {
+        callback = new Function("" + callback);
+      }
+      // Copy function arguments
+      var args = new Array(arguments.length - 1);
+      for (var i = 0; i < args.length; i++) {
+          args[i] = arguments[i + 1];
+      }
+      // Store and register the task
+      var task = { callback: callback, args: args };
+      tasksByHandle[nextHandle] = task;
+      registerImmediate(nextHandle);
+      return nextHandle++;
+    }
+
+    function clearImmediate(handle) {
+        delete tasksByHandle[handle];
+    }
+
+    function run(task) {
+        var callback = task.callback;
+        var args = task.args;
+        switch (args.length) {
+        case 0:
+            callback();
+            break;
+        case 1:
+            callback(args[0]);
+            break;
+        case 2:
+            callback(args[0], args[1]);
+            break;
+        case 3:
+            callback(args[0], args[1], args[2]);
+            break;
+        default:
+            callback.apply(undefined, args);
+            break;
+        }
+    }
+
+    function runIfPresent(handle) {
+        // From the spec: "Wait until any invocations of this algorithm started before this one have completed."
+        // So if we're currently running a task, we'll need to delay this invocation.
+        if (currentlyRunningATask) {
+            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
+            // "too much recursion" error.
+            setTimeout(runIfPresent, 0, handle);
+        } else {
+            var task = tasksByHandle[handle];
+            if (task) {
+                currentlyRunningATask = true;
+                try {
+                    run(task);
+                } finally {
+                    clearImmediate(handle);
+                    currentlyRunningATask = false;
+                }
+            }
+        }
+    }
+
+    function installNextTickImplementation() {
+        registerImmediate = function(handle) {
+            process.nextTick(function () { runIfPresent(handle); });
+        };
+    }
+
+    function canUsePostMessage() {
+        // The test against `importScripts` prevents this implementation from being installed inside a web worker,
+        // where `global.postMessage` means something completely different and can't be used for this purpose.
+        if (global.postMessage && !global.importScripts) {
+            var postMessageIsAsynchronous = true;
+            var oldOnMessage = global.onmessage;
+            global.onmessage = function() {
+                postMessageIsAsynchronous = false;
+            };
+            global.postMessage("", "*");
+            global.onmessage = oldOnMessage;
+            return postMessageIsAsynchronous;
+        }
+    }
+
+    function installPostMessageImplementation() {
+        // Installs an event handler on `global` for the `message` event: see
+        // * https://developer.mozilla.org/en/DOM/window.postMessage
+        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
+
+        var messagePrefix = "setImmediate$" + Math.random() + "$";
+        var onGlobalMessage = function(event) {
+            if (event.source === global &&
+                typeof event.data === "string" &&
+                event.data.indexOf(messagePrefix) === 0) {
+                runIfPresent(+event.data.slice(messagePrefix.length));
+            }
+        };
+
+        if (global.addEventListener) {
+            global.addEventListener("message", onGlobalMessage, false);
+        } else {
+            global.attachEvent("onmessage", onGlobalMessage);
+        }
+
+        registerImmediate = function(handle) {
+            global.postMessage(messagePrefix + handle, "*");
+        };
+    }
+
+    function installMessageChannelImplementation() {
+        var channel = new MessageChannel();
+        channel.port1.onmessage = function(event) {
+            var handle = event.data;
+            runIfPresent(handle);
+        };
+
+        registerImmediate = function(handle) {
+            channel.port2.postMessage(handle);
+        };
+    }
+
+    function installReadyStateChangeImplementation() {
+        var html = doc.documentElement;
+        registerImmediate = function(handle) {
+            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
+            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
+            var script = doc.createElement("script");
+            script.onreadystatechange = function () {
+                runIfPresent(handle);
+                script.onreadystatechange = null;
+                html.removeChild(script);
+                script = null;
+            };
+            html.appendChild(script);
+        };
+    }
+
+    function installSetTimeoutImplementation() {
+        registerImmediate = function(handle) {
+            setTimeout(runIfPresent, 0, handle);
+        };
+    }
+
+    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
+    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
+    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
+
+    // Don't get fooled by e.g. browserify environments.
+    if ({}.toString.call(global.process) === "[object process]") {
+        // For Node.js before 0.9
+        installNextTickImplementation();
+
+    } else if (canUsePostMessage()) {
+        // For non-IE10 modern browsers
+        installPostMessageImplementation();
+
+    } else if (global.MessageChannel) {
+        // For web workers, where supported
+        installMessageChannelImplementation();
+
+    } else if (doc && "onreadystatechange" in doc.createElement("script")) {
+        // For IE 6–8
+        installReadyStateChangeImplementation();
+
+    } else {
+        // For older browsers
+        installSetTimeoutImplementation();
+    }
+
+    attachTo.setImmediate = setImmediate;
+    attachTo.clearImmediate = clearImmediate;
+}(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7), __webpack_require__(11)))
+
+/***/ }),
+/* 144 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global) {
+/**
+ * Module exports.
+ */
+
+module.exports = deprecate;
+
+/**
+ * Mark that a method should not be used.
+ * Returns a modified function which warns once by default.
+ *
+ * If `localStorage.noDeprecation = true` is set, then it is a no-op.
+ *
+ * If `localStorage.throwDeprecation = true` is set, then deprecated functions
+ * will throw an Error when invoked.
+ *
+ * If `localStorage.traceDeprecation = true` is set, then deprecated functions
+ * will invoke `console.trace()` instead of `console.error()`.
+ *
+ * @param {Function} fn - the function to deprecate
+ * @param {String} msg - the string to print to the console when `fn` is invoked
+ * @returns {Function} a new "deprecated" version of `fn`
+ * @api public
+ */
+
+function deprecate (fn, msg) {
+  if (config('noDeprecation')) {
+    return fn;
+  }
+
+  var warned = false;
+  function deprecated() {
+    if (!warned) {
+      if (config('throwDeprecation')) {
+        throw new Error(msg);
+      } else if (config('traceDeprecation')) {
+        console.trace(msg);
+      } else {
+        console.warn(msg);
+      }
+      warned = true;
+    }
+    return fn.apply(this, arguments);
+  }
+
+  return deprecated;
+}
+
+/**
+ * Checks `localStorage` for boolean values for the given `name`.
+ *
+ * @param {String} name
+ * @returns {Boolean}
+ * @api private
+ */
+
+function config (name) {
+  // accessing global.localStorage can trigger a DOMException in sandboxed iframes
+  try {
+    if (!global.localStorage) return false;
+  } catch (_) {
+    return false;
+  }
+  var val = global.localStorage[name];
+  if (null == val) return false;
+  return String(val).toLowerCase() === 'true';
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
+
+/***/ }),
+/* 145 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// a passthrough stream.
+// basically just the most minimal sort of Transform stream.
+// Every written chunk gets output as-is.
+
+
+
+module.exports = PassThrough;
+
+var Transform = __webpack_require__(86);
+
+/*<replacement>*/
+var util = __webpack_require__(25);
+util.inherits = __webpack_require__(21);
+/*</replacement>*/
+
+util.inherits(PassThrough, Transform);
+
+function PassThrough(options) {
+  if (!(this instanceof PassThrough)) return new PassThrough(options);
+
+  Transform.call(this, options);
+}
+
+PassThrough.prototype._transform = function (chunk, encoding, cb) {
+  cb(null, chunk);
+};
+
+/***/ }),
+/* 146 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(46);
+
+
+/***/ }),
+/* 147 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(16);
+
+
+/***/ }),
+/* 148 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(45).Transform
+
+
+/***/ }),
+/* 149 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(45).PassThrough
+
+
+/***/ }),
+/* 150 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer, process) {
+/* eslint camelcase: "off" */
+
+var assert = __webpack_require__(88);
+
+var Zstream = __webpack_require__(153);
+var zlib_deflate = __webpack_require__(154);
+var zlib_inflate = __webpack_require__(157);
+var constants = __webpack_require__(160);
+
+for (var key in constants) {
+  exports[key] = constants[key];
+}
+
+// zlib modes
+exports.NONE = 0;
+exports.DEFLATE = 1;
+exports.INFLATE = 2;
+exports.GZIP = 3;
+exports.GUNZIP = 4;
+exports.DEFLATERAW = 5;
+exports.INFLATERAW = 6;
+exports.UNZIP = 7;
+
+var GZIP_HEADER_ID1 = 0x1f;
+var GZIP_HEADER_ID2 = 0x8b;
+
+/**
+ * Emulate Node's zlib C++ layer for use by the JS layer in index.js
+ */
+function Zlib(mode) {
+  if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {
+    throw new TypeError('Bad argument');
+  }
+
+  this.dictionary = null;
+  this.err = 0;
+  this.flush = 0;
+  this.init_done = false;
+  this.level = 0;
+  this.memLevel = 0;
+  this.mode = mode;
+  this.strategy = 0;
+  this.windowBits = 0;
+  this.write_in_progress = false;
+  this.pending_close = false;
+  this.gzip_id_bytes_read = 0;
+}
+
+Zlib.prototype.close = function () {
+  if (this.write_in_progress) {
+    this.pending_close = true;
+    return;
+  }
+
+  this.pending_close = false;
+
+  assert(this.init_done, 'close before init');
+  assert(this.mode <= exports.UNZIP);
+
+  if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {
+    zlib_deflate.deflateEnd(this.strm);
+  } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {
+    zlib_inflate.inflateEnd(this.strm);
+  }
+
+  this.mode = exports.NONE;
+
+  this.dictionary = null;
+};
+
+Zlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {
+  return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);
+};
+
+Zlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {
+  return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);
+};
+
+Zlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {
+  assert.equal(arguments.length, 8);
+
+  assert(this.init_done, 'write before init');
+  assert(this.mode !== exports.NONE, 'already finalized');
+  assert.equal(false, this.write_in_progress, 'write already in progress');
+  assert.equal(false, this.pending_close, 'close is pending');
+
+  this.write_in_progress = true;
+
+  assert.equal(false, flush === undefined, 'must provide flush value');
+
+  this.write_in_progress = true;
+
+  if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {
+    throw new Error('Invalid flush value');
+  }
+
+  if (input == null) {
+    input = Buffer.alloc(0);
+    in_len = 0;
+    in_off = 0;
+  }
+
+  this.strm.avail_in = in_len;
+  this.strm.input = input;
+  this.strm.next_in = in_off;
+  this.strm.avail_out = out_len;
+  this.strm.output = out;
+  this.strm.next_out = out_off;
+  this.flush = flush;
+
+  if (!async) {
+    // sync version
+    this._process();
+
+    if (this._checkError()) {
+      return this._afterSync();
+    }
+    return;
+  }
+
+  // async version
+  var self = this;
+  process.nextTick(function () {
+    self._process();
+    self._after();
+  });
+
+  return this;
+};
+
+Zlib.prototype._afterSync = function () {
+  var avail_out = this.strm.avail_out;
+  var avail_in = this.strm.avail_in;
+
+  this.write_in_progress = false;
+
+  return [avail_in, avail_out];
+};
+
+Zlib.prototype._process = function () {
+  var next_expected_header_byte = null;
+
+  // If the avail_out is left at 0, then it means that it ran out
+  // of room.  If there was avail_out left over, then it means
+  // that all of the input was consumed.
+  switch (this.mode) {
+    case exports.DEFLATE:
+    case exports.GZIP:
+    case exports.DEFLATERAW:
+      this.err = zlib_deflate.deflate(this.strm, this.flush);
+      break;
+    case exports.UNZIP:
+      if (this.strm.avail_in > 0) {
+        next_expected_header_byte = this.strm.next_in;
+      }
+
+      switch (this.gzip_id_bytes_read) {
+        case 0:
+          if (next_expected_header_byte === null) {
+            break;
+          }
+
+          if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {
+            this.gzip_id_bytes_read = 1;
+            next_expected_header_byte++;
+
+            if (this.strm.avail_in === 1) {
+              // The only available byte was already read.
+              break;
+            }
+          } else {
+            this.mode = exports.INFLATE;
+            break;
+          }
+
+        // fallthrough
+        case 1:
+          if (next_expected_header_byte === null) {
+            break;
+          }
+
+          if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {
+            this.gzip_id_bytes_read = 2;
+            this.mode = exports.GUNZIP;
+          } else {
+            // There is no actual difference between INFLATE and INFLATERAW
+            // (after initialization).
+            this.mode = exports.INFLATE;
+          }
+
+          break;
+        default:
+          throw new Error('invalid number of gzip magic number bytes read');
+      }
+
+    // fallthrough
+    case exports.INFLATE:
+    case exports.GUNZIP:
+    case exports.INFLATERAW:
+      this.err = zlib_inflate.inflate(this.strm, this.flush
+
+      // If data was encoded with dictionary
+      );if (this.err === exports.Z_NEED_DICT && this.dictionary) {
+        // Load it
+        this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);
+        if (this.err === exports.Z_OK) {
+          // And try to decode again
+          this.err = zlib_inflate.inflate(this.strm, this.flush);
+        } else if (this.err === exports.Z_DATA_ERROR) {
+          // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.
+          // Make it possible for After() to tell a bad dictionary from bad
+          // input.
+          this.err = exports.Z_NEED_DICT;
+        }
+      }
+      while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {
+        // Bytes remain in input buffer. Perhaps this is another compressed
+        // member in the same archive, or just trailing garbage.
+        // Trailing zero bytes are okay, though, since they are frequently
+        // used for padding.
+
+        this.reset();
+        this.err = zlib_inflate.inflate(this.strm, this.flush);
+      }
+      break;
+    default:
+      throw new Error('Unknown mode ' + this.mode);
+  }
+};
+
+Zlib.prototype._checkError = function () {
+  // Acceptable error states depend on the type of zlib stream.
+  switch (this.err) {
+    case exports.Z_OK:
+    case exports.Z_BUF_ERROR:
+      if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {
+        this._error('unexpected end of file');
+        return false;
+      }
+      break;
+    case exports.Z_STREAM_END:
+      // normal statuses, not fatal
+      break;
+    case exports.Z_NEED_DICT:
+      if (this.dictionary == null) {
+        this._error('Missing dictionary');
+      } else {
+        this._error('Bad dictionary');
+      }
+      return false;
+    default:
+      // something else.
+      this._error('Zlib error');
+      return false;
+  }
+
+  return true;
+};
+
+Zlib.prototype._after = function () {
+  if (!this._checkError()) {
+    return;
+  }
+
+  var avail_out = this.strm.avail_out;
+  var avail_in = this.strm.avail_in;
+
+  this.write_in_progress = false;
+
+  // call the write() cb
+  this.callback(avail_in, avail_out);
+
+  if (this.pending_close) {
+    this.close();
+  }
+};
+
+Zlib.prototype._error = function (message) {
+  if (this.strm.msg) {
+    message = this.strm.msg;
+  }
+  this.onerror(message, this.err
+
+  // no hope of rescue.
+  );this.write_in_progress = false;
+  if (this.pending_close) {
+    this.close();
+  }
+};
+
+Zlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {
+  assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');
+
+  assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');
+  assert(level >= -1 && level <= 9, 'invalid compression level');
+
+  assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');
+
+  assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');
+
+  this._init(level, windowBits, memLevel, strategy, dictionary);
+  this._setDictionary();
+};
+
+Zlib.prototype.params = function () {
+  throw new Error('deflateParams Not supported');
+};
+
+Zlib.prototype.reset = function () {
+  this._reset();
+  this._setDictionary();
+};
+
+Zlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {
+  this.level = level;
+  this.windowBits = windowBits;
+  this.memLevel = memLevel;
+  this.strategy = strategy;
+
+  this.flush = exports.Z_NO_FLUSH;
+
+  this.err = exports.Z_OK;
+
+  if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {
+    this.windowBits += 16;
+  }
+
+  if (this.mode === exports.UNZIP) {
+    this.windowBits += 32;
+  }
+
+  if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {
+    this.windowBits = -1 * this.windowBits;
+  }
+
+  this.strm = new Zstream();
+
+  switch (this.mode) {
+    case exports.DEFLATE:
+    case exports.GZIP:
+    case exports.DEFLATERAW:
+      this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);
+      break;
+    case exports.INFLATE:
+    case exports.GUNZIP:
+    case exports.INFLATERAW:
+    case exports.UNZIP:
+      this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);
+      break;
+    default:
+      throw new Error('Unknown mode ' + this.mode);
+  }
+
+  if (this.err !== exports.Z_OK) {
+    this._error('Init error');
+  }
+
+  this.dictionary = dictionary;
+
+  this.write_in_progress = false;
+  this.init_done = true;
+};
+
+Zlib.prototype._setDictionary = function () {
+  if (this.dictionary == null) {
+    return;
+  }
+
+  this.err = exports.Z_OK;
+
+  switch (this.mode) {
+    case exports.DEFLATE:
+    case exports.DEFLATERAW:
+      this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);
+      break;
+    default:
+      break;
+  }
+
+  if (this.err !== exports.Z_OK) {
+    this._error('Failed to set dictionary');
+  }
+};
+
+Zlib.prototype._reset = function () {
+  this.err = exports.Z_OK;
+
+  switch (this.mode) {
+    case exports.DEFLATE:
+    case exports.DEFLATERAW:
+    case exports.GZIP:
+      this.err = zlib_deflate.deflateReset(this.strm);
+      break;
+    case exports.INFLATE:
+    case exports.INFLATERAW:
+    case exports.GUNZIP:
+      this.err = zlib_inflate.inflateReset(this.strm);
+      break;
+    default:
+      break;
+  }
+
+  if (this.err !== exports.Z_OK) {
+    this._error('Failed to reset stream');
+  }
+};
+
+exports.Zlib = Zlib;
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, __webpack_require__(11)))
+
+/***/ }),
+/* 151 */
+/***/ (function(module, exports) {
+
+module.exports = function isBuffer(arg) {
+  return arg && typeof arg === 'object'
+    && typeof arg.copy === 'function'
+    && typeof arg.fill === 'function'
+    && typeof arg.readUInt8 === 'function';
+}
+
+/***/ }),
+/* 152 */
+/***/ (function(module, exports) {
+
+if (typeof Object.create === 'function') {
+  // implementation from standard node.js 'util' module
+  module.exports = function inherits(ctor, superCtor) {
+    ctor.super_ = superCtor
+    ctor.prototype = Object.create(superCtor.prototype, {
+      constructor: {
+        value: ctor,
+        enumerable: false,
+        writable: true,
+        configurable: true
+      }
+    });
+  };
+} else {
+  // old school shim for old browsers
+  module.exports = function inherits(ctor, superCtor) {
+    ctor.super_ = superCtor
+    var TempCtor = function () {}
+    TempCtor.prototype = superCtor.prototype
+    ctor.prototype = new TempCtor()
+    ctor.prototype.constructor = ctor
+  }
+}
+
+
+/***/ }),
+/* 153 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+function ZStream() {
+  /* next input byte */
+  this.input = null; // JS specific, because we have no pointers
+  this.next_in = 0;
+  /* number of bytes available at input */
+  this.avail_in = 0;
+  /* total number of input bytes read so far */
+  this.total_in = 0;
+  /* next output byte should be put there */
+  this.output = null; // JS specific, because we have no pointers
+  this.next_out = 0;
+  /* remaining free space at output */
+  this.avail_out = 0;
+  /* total number of bytes output so far */
+  this.total_out = 0;
+  /* last error message, NULL if no error */
+  this.msg = ''/*Z_NULL*/;
+  /* not visible by applications */
+  this.state = null;
+  /* best guess about the data type: binary or text */
+  this.data_type = 2/*Z_UNKNOWN*/;
+  /* adler32 value of the uncompressed data */
+  this.adler = 0;
+}
+
+module.exports = ZStream;
+
+
+/***/ }),
+/* 154 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils   = __webpack_require__(34);
+var trees   = __webpack_require__(155);
+var adler32 = __webpack_require__(89);
+var crc32   = __webpack_require__(90);
+var msg     = __webpack_require__(156);
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+var Z_NO_FLUSH      = 0;
+var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+//var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+//var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+//var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+
+/* compression levels */
+//var Z_NO_COMPRESSION      = 0;
+//var Z_BEST_SPEED          = 1;
+//var Z_BEST_COMPRESSION    = 9;
+var Z_DEFAULT_COMPRESSION = -1;
+
+
+var Z_FILTERED            = 1;
+var Z_HUFFMAN_ONLY        = 2;
+var Z_RLE                 = 3;
+var Z_FIXED               = 4;
+var Z_DEFAULT_STRATEGY    = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+//var Z_BINARY              = 0;
+//var Z_TEXT                = 1;
+//var Z_ASCII               = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+/*============================================================================*/
+
+
+var MAX_MEM_LEVEL = 9;
+/* Maximum value for memLevel in deflateInit2 */
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_MEM_LEVEL = 8;
+
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+var D_CODES       = 30;
+/* number of distance codes */
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+var HEAP_SIZE     = 2 * L_CODES + 1;
+/* maximum heap size */
+var MAX_BITS  = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var MIN_MATCH = 3;
+var MAX_MATCH = 258;
+var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
+
+var PRESET_DICT = 0x20;
+
+var INIT_STATE = 42;
+var EXTRA_STATE = 69;
+var NAME_STATE = 73;
+var COMMENT_STATE = 91;
+var HCRC_STATE = 103;
+var BUSY_STATE = 113;
+var FINISH_STATE = 666;
+
+var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
+var BS_BLOCK_DONE     = 2; /* block flush performed */
+var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
+var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */
+
+var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
+
+function err(strm, errorCode) {
+  strm.msg = msg[errorCode];
+  return errorCode;
+}
+
+function rank(f) {
+  return ((f) << 1) - ((f) > 4 ? 9 : 0);
+}
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+
+/* =========================================================================
+ * Flush as much pending output as possible. All deflate() output goes
+ * through this function so some applications may wish to modify it
+ * to avoid allocating a large strm->output buffer and copying into it.
+ * (See also read_buf()).
+ */
+function flush_pending(strm) {
+  var s = strm.state;
+
+  //_tr_flush_bits(s);
+  var len = s.pending;
+  if (len > strm.avail_out) {
+    len = strm.avail_out;
+  }
+  if (len === 0) { return; }
+
+  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
+  strm.next_out += len;
+  s.pending_out += len;
+  strm.total_out += len;
+  strm.avail_out -= len;
+  s.pending -= len;
+  if (s.pending === 0) {
+    s.pending_out = 0;
+  }
+}
+
+
+function flush_block_only(s, last) {
+  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
+  s.block_start = s.strstart;
+  flush_pending(s.strm);
+}
+
+
+function put_byte(s, b) {
+  s.pending_buf[s.pending++] = b;
+}
+
+
+/* =========================================================================
+ * Put a short in the pending buffer. The 16-bit value is put in MSB order.
+ * IN assertion: the stream state is correct and there is enough room in
+ * pending_buf.
+ */
+function putShortMSB(s, b) {
+//  put_byte(s, (Byte)(b >> 8));
+//  put_byte(s, (Byte)(b & 0xff));
+  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
+  s.pending_buf[s.pending++] = b & 0xff;
+}
+
+
+/* ===========================================================================
+ * Read a new buffer from the current input stream, update the adler32
+ * and total number of bytes read.  All deflate() input goes through
+ * this function so some applications may wish to modify it to avoid
+ * allocating a large strm->input buffer and copying from it.
+ * (See also flush_pending()).
+ */
+function read_buf(strm, buf, start, size) {
+  var len = strm.avail_in;
+
+  if (len > size) { len = size; }
+  if (len === 0) { return 0; }
+
+  strm.avail_in -= len;
+
+  // zmemcpy(buf, strm->next_in, len);
+  utils.arraySet(buf, strm.input, strm.next_in, len, start);
+  if (strm.state.wrap === 1) {
+    strm.adler = adler32(strm.adler, buf, len, start);
+  }
+
+  else if (strm.state.wrap === 2) {
+    strm.adler = crc32(strm.adler, buf, len, start);
+  }
+
+  strm.next_in += len;
+  strm.total_in += len;
+
+  return len;
+}
+
+
+/* ===========================================================================
+ * Set match_start to the longest match starting at the given string and
+ * return its length. Matches shorter or equal to prev_length are discarded,
+ * in which case the result is equal to prev_length and match_start is
+ * garbage.
+ * IN assertions: cur_match is the head of the hash chain for the current
+ *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
+ * OUT assertion: the match length is not greater than s->lookahead.
+ */
+function longest_match(s, cur_match) {
+  var chain_length = s.max_chain_length;      /* max hash chain length */
+  var scan = s.strstart; /* current string */
+  var match;                       /* matched string */
+  var len;                           /* length of current match */
+  var best_len = s.prev_length;              /* best match length so far */
+  var nice_match = s.nice_match;             /* stop if match long enough */
+  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
+      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
+
+  var _win = s.window; // shortcut
+
+  var wmask = s.w_mask;
+  var prev  = s.prev;
+
+  /* Stop when cur_match becomes <= limit. To simplify the code,
+   * we prevent matches with the string of window index 0.
+   */
+
+  var strend = s.strstart + MAX_MATCH;
+  var scan_end1  = _win[scan + best_len - 1];
+  var scan_end   = _win[scan + best_len];
+
+  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
+   * It is easy to get rid of this optimization if necessary.
+   */
+  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
+
+  /* Do not waste too much time if we already have a good match: */
+  if (s.prev_length >= s.good_match) {
+    chain_length >>= 2;
+  }
+  /* Do not look for matches beyond the end of the input. This is necessary
+   * to make deflate deterministic.
+   */
+  if (nice_match > s.lookahead) { nice_match = s.lookahead; }
+
+  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+
+  do {
+    // Assert(cur_match < s->strstart, "no future");
+    match = cur_match;
+
+    /* Skip to next match if the match length cannot increase
+     * or if the match length is less than 2.  Note that the checks below
+     * for insufficient lookahead only occur occasionally for performance
+     * reasons.  Therefore uninitialized memory will be accessed, and
+     * conditional jumps will be made that depend on those values.
+     * However the length of the match is limited to the lookahead, so
+     * the output of deflate is not affected by the uninitialized values.
+     */
+
+    if (_win[match + best_len]     !== scan_end  ||
+        _win[match + best_len - 1] !== scan_end1 ||
+        _win[match]                !== _win[scan] ||
+        _win[++match]              !== _win[scan + 1]) {
+      continue;
+    }
+
+    /* The check at best_len-1 can be removed because it will be made
+     * again later. (This heuristic is not always a win.)
+     * It is not necessary to compare scan[2] and match[2] since they
+     * are always equal when the other bytes match, given that
+     * the hash keys are equal and that HASH_BITS >= 8.
+     */
+    scan += 2;
+    match++;
+    // Assert(*scan == *match, "match[2]?");
+
+    /* We check for insufficient lookahead only every 8th comparison;
+     * the 256th check will be made at strstart+258.
+     */
+    do {
+      /*jshint noempty:false*/
+    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             scan < strend);
+
+    // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+
+    len = MAX_MATCH - (strend - scan);
+    scan = strend - MAX_MATCH;
+
+    if (len > best_len) {
+      s.match_start = cur_match;
+      best_len = len;
+      if (len >= nice_match) {
+        break;
+      }
+      scan_end1  = _win[scan + best_len - 1];
+      scan_end   = _win[scan + best_len];
+    }
+  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
+
+  if (best_len <= s.lookahead) {
+    return best_len;
+  }
+  return s.lookahead;
+}
+
+
+/* ===========================================================================
+ * Fill the window when the lookahead becomes insufficient.
+ * Updates strstart and lookahead.
+ *
+ * IN assertion: lookahead < MIN_LOOKAHEAD
+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
+ *    At least one byte has been read, or avail_in == 0; reads are
+ *    performed for at least two bytes (required for the zip translate_eol
+ *    option -- not supported here).
+ */
+function fill_window(s) {
+  var _w_size = s.w_size;
+  var p, n, m, more, str;
+
+  //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+
+  do {
+    more = s.window_size - s.lookahead - s.strstart;
+
+    // JS ints have 32 bit, block below not needed
+    /* Deal with !@#$% 64K limit: */
+    //if (sizeof(int) <= 2) {
+    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+    //        more = wsize;
+    //
+    //  } else if (more == (unsigned)(-1)) {
+    //        /* Very unlikely, but possible on 16 bit machine if
+    //         * strstart == 0 && lookahead == 1 (input done a byte at time)
+    //         */
+    //        more--;
+    //    }
+    //}
+
+
+    /* If the window is almost full and there is insufficient lookahead,
+     * move the upper half to the lower one to make room in the upper half.
+     */
+    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
+
+      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
+      s.match_start -= _w_size;
+      s.strstart -= _w_size;
+      /* we now have strstart >= MAX_DIST */
+      s.block_start -= _w_size;
+
+      /* Slide the hash table (could be avoided with 32 bit values
+       at the expense of memory usage). We slide even when level == 0
+       to keep the hash table consistent if we switch back to level > 0
+       later. (Using level 0 permanently is not an optimal usage of
+       zlib, so we don't care about this pathological case.)
+       */
+
+      n = s.hash_size;
+      p = n;
+      do {
+        m = s.head[--p];
+        s.head[p] = (m >= _w_size ? m - _w_size : 0);
+      } while (--n);
+
+      n = _w_size;
+      p = n;
+      do {
+        m = s.prev[--p];
+        s.prev[p] = (m >= _w_size ? m - _w_size : 0);
+        /* If n is not on any hash chain, prev[n] is garbage but
+         * its value will never be used.
+         */
+      } while (--n);
+
+      more += _w_size;
+    }
+    if (s.strm.avail_in === 0) {
+      break;
+    }
+
+    /* If there was no sliding:
+     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+     *    more == window_size - lookahead - strstart
+     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+     * => more >= window_size - 2*WSIZE + 2
+     * In the BIG_MEM or MMAP case (not yet supported),
+     *   window_size == input_size + MIN_LOOKAHEAD  &&
+     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+     * Otherwise, window_size == 2*WSIZE so more >= 2.
+     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+     */
+    //Assert(more >= 2, "more < 2");
+    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
+    s.lookahead += n;
+
+    /* Initialize the hash value now that we have some input: */
+    if (s.lookahead + s.insert >= MIN_MATCH) {
+      str = s.strstart - s.insert;
+      s.ins_h = s.window[str];
+
+      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
+//#if MIN_MATCH != 3
+//        Call update_hash() MIN_MATCH-3 more times
+//#endif
+      while (s.insert) {
+        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
+
+        s.prev[str & s.w_mask] = s.head[s.ins_h];
+        s.head[s.ins_h] = str;
+        str++;
+        s.insert--;
+        if (s.lookahead + s.insert < MIN_MATCH) {
+          break;
+        }
+      }
+    }
+    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+     * but this is not important since only literal bytes will be emitted.
+     */
+
+  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
+
+  /* If the WIN_INIT bytes after the end of the current data have never been
+   * written, then zero those bytes in order to avoid memory check reports of
+   * the use of uninitialized (or uninitialised as Julian writes) bytes by
+   * the longest match routines.  Update the high water mark for the next
+   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+   */
+//  if (s.high_water < s.window_size) {
+//    var curr = s.strstart + s.lookahead;
+//    var init = 0;
+//
+//    if (s.high_water < curr) {
+//      /* Previous high water mark below current data -- zero WIN_INIT
+//       * bytes or up to end of window, whichever is less.
+//       */
+//      init = s.window_size - curr;
+//      if (init > WIN_INIT)
+//        init = WIN_INIT;
+//      zmemzero(s->window + curr, (unsigned)init);
+//      s->high_water = curr + init;
+//    }
+//    else if (s->high_water < (ulg)curr + WIN_INIT) {
+//      /* High water mark at or above current data, but below current data
+//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+//       * to end of window, whichever is less.
+//       */
+//      init = (ulg)curr + WIN_INIT - s->high_water;
+//      if (init > s->window_size - s->high_water)
+//        init = s->window_size - s->high_water;
+//      zmemzero(s->window + s->high_water, (unsigned)init);
+//      s->high_water += init;
+//    }
+//  }
+//
+//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+//    "not enough room for search");
+}
+
+/* ===========================================================================
+ * Copy without compression as much as possible from the input stream, return
+ * the current block state.
+ * This function does not insert new strings in the dictionary since
+ * uncompressible data is probably not useful. This function is used
+ * only for the level=0 compression option.
+ * NOTE: this function should be optimized to avoid extra copying from
+ * window to pending_buf.
+ */
+function deflate_stored(s, flush) {
+  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
+   * to pending_buf_size, and each stored block has a 5 byte header:
+   */
+  var max_block_size = 0xffff;
+
+  if (max_block_size > s.pending_buf_size - 5) {
+    max_block_size = s.pending_buf_size - 5;
+  }
+
+  /* Copy as much as possible from input to output: */
+  for (;;) {
+    /* Fill the window as much as possible: */
+    if (s.lookahead <= 1) {
+
+      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
+      //  s->block_start >= (long)s->w_size, "slide too late");
+//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
+//        s.block_start >= s.w_size)) {
+//        throw  new Error("slide too late");
+//      }
+
+      fill_window(s);
+      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+
+      if (s.lookahead === 0) {
+        break;
+      }
+      /* flush the current block */
+    }
+    //Assert(s->block_start >= 0L, "block gone");
+//    if (s.block_start < 0) throw new Error("block gone");
+
+    s.strstart += s.lookahead;
+    s.lookahead = 0;
+
+    /* Emit a stored block if pending_buf will be full: */
+    var max_start = s.block_start + max_block_size;
+
+    if (s.strstart === 0 || s.strstart >= max_start) {
+      /* strstart == 0 is possible when wraparound on 16-bit machine */
+      s.lookahead = s.strstart - max_start;
+      s.strstart = max_start;
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+
+
+    }
+    /* Flush if we may have to slide, otherwise block_start may become
+     * negative and the data will be gone:
+     */
+    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+
+  s.insert = 0;
+
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+
+  if (s.strstart > s.block_start) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_NEED_MORE;
+}
+
+/* ===========================================================================
+ * Compress as much as possible from the input stream, return the current
+ * block state.
+ * This function does not perform lazy evaluation of matches and inserts
+ * new strings in the dictionary only for unmatched strings or for short
+ * matches. It is used only for the fast compression options.
+ */
+function deflate_fast(s, flush) {
+  var hash_head;        /* head of the hash chain */
+  var bflush;           /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) {
+        break; /* flush the current block */
+      }
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     * At this point we have always match_length < MIN_MATCH
+     */
+    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+    }
+    if (s.match_length >= MIN_MATCH) {
+      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
+
+      /*** _tr_tally_dist(s, s.strstart - s.match_start,
+                     s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+
+      /* Insert new strings in the hash table only if the match length
+       * is not too large. This saves time but degrades compression.
+       */
+      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
+        s.match_length--; /* string at strstart already in table */
+        do {
+          s.strstart++;
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+          /* strstart never exceeds WSIZE-MAX_MATCH, so there are
+           * always MIN_MATCH bytes ahead.
+           */
+        } while (--s.match_length !== 0);
+        s.strstart++;
+      } else
+      {
+        s.strstart += s.match_length;
+        s.match_length = 0;
+        s.ins_h = s.window[s.strstart];
+        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;
+
+//#if MIN_MATCH != 3
+//                Call UPDATE_HASH() MIN_MATCH-3 more times
+//#endif
+        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
+         * matter since it will be recomputed at next deflate call.
+         */
+      }
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s.window[s.strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * Same as above, but achieves better compression. We use a lazy
+ * evaluation for matches: a match is finally adopted only if there is
+ * no better match at the next window position.
+ */
+function deflate_slow(s, flush) {
+  var hash_head;          /* head of hash chain */
+  var bflush;              /* set if current block must be flushed */
+
+  var max_insert;
+
+  /* Process the input block. */
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     */
+    s.prev_length = s.match_length;
+    s.prev_match = s.match_start;
+    s.match_length = MIN_MATCH - 1;
+
+    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
+        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+
+      if (s.match_length <= 5 &&
+         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
+
+        /* If prev_match is also MIN_MATCH, match_start is garbage
+         * but we will ignore the current match anyway.
+         */
+        s.match_length = MIN_MATCH - 1;
+      }
+    }
+    /* If there was a match at the previous step and the current
+     * match is not better, output the previous match:
+     */
+    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
+      max_insert = s.strstart + s.lookahead - MIN_MATCH;
+      /* Do not insert strings in hash table beyond this. */
+
+      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
+
+      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
+                     s.prev_length - MIN_MATCH, bflush);***/
+      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
+      /* Insert in hash table all strings up to the end of the match.
+       * strstart-1 and strstart are already inserted. If there is not
+       * enough lookahead, the last two strings are not inserted in
+       * the hash table.
+       */
+      s.lookahead -= s.prev_length - 1;
+      s.prev_length -= 2;
+      do {
+        if (++s.strstart <= max_insert) {
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+        }
+      } while (--s.prev_length !== 0);
+      s.match_available = 0;
+      s.match_length = MIN_MATCH - 1;
+      s.strstart++;
+
+      if (bflush) {
+        /*** FLUSH_BLOCK(s, 0); ***/
+        flush_block_only(s, false);
+        if (s.strm.avail_out === 0) {
+          return BS_NEED_MORE;
+        }
+        /***/
+      }
+
+    } else if (s.match_available) {
+      /* If there was no match at the previous position, output a
+       * single literal. If there was a match but the current match
+       * is longer, truncate the previous match to a single literal.
+       */
+      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
+
+      if (bflush) {
+        /*** FLUSH_BLOCK_ONLY(s, 0) ***/
+        flush_block_only(s, false);
+        /***/
+      }
+      s.strstart++;
+      s.lookahead--;
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+    } else {
+      /* There is no previous match to compare with, wait for
+       * the next step to decide.
+       */
+      s.match_available = 1;
+      s.strstart++;
+      s.lookahead--;
+    }
+  }
+  //Assert (flush != Z_NO_FLUSH, "no flush?");
+  if (s.match_available) {
+    //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
+
+    s.match_available = 0;
+  }
+  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_BLOCK_DONE;
+}
+
+
+/* ===========================================================================
+ * For Z_RLE, simply look for runs of bytes, generate matches only of distance
+ * one.  Do not maintain a hash table.  (It will be regenerated if this run of
+ * deflate switches away from Z_RLE.)
+ */
+function deflate_rle(s, flush) {
+  var bflush;            /* set if current block must be flushed */
+  var prev;              /* byte at distance one to match */
+  var scan, strend;      /* scan goes up to strend for length of run */
+
+  var _win = s.window;
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the longest run, plus one for the unrolled loop.
+     */
+    if (s.lookahead <= MAX_MATCH) {
+      fill_window(s);
+      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* See how many times the previous byte repeats */
+    s.match_length = 0;
+    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
+      scan = s.strstart - 1;
+      prev = _win[scan];
+      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
+        strend = s.strstart + MAX_MATCH;
+        do {
+          /*jshint noempty:false*/
+        } while (prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 scan < strend);
+        s.match_length = MAX_MATCH - (strend - scan);
+        if (s.match_length > s.lookahead) {
+          s.match_length = s.lookahead;
+        }
+      }
+      //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
+    }
+
+    /* Emit match if have run of MIN_MATCH or longer, else emit literal */
+    if (s.match_length >= MIN_MATCH) {
+      //check_match(s, s.strstart, s.strstart - 1, s.match_length);
+
+      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+      s.strstart += s.match_length;
+      s.match_length = 0;
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s->window[s->strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
+ * (It will be regenerated if this run of deflate switches away from Huffman.)
+ */
+function deflate_huff(s, flush) {
+  var bflush;             /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we have a literal to write. */
+    if (s.lookahead === 0) {
+      fill_window(s);
+      if (s.lookahead === 0) {
+        if (flush === Z_NO_FLUSH) {
+          return BS_NEED_MORE;
+        }
+        break;      /* flush the current block */
+      }
+    }
+
+    /* Output a literal byte */
+    s.match_length = 0;
+    //Tracevv((stderr,"%c", s->window[s->strstart]));
+    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+    s.lookahead--;
+    s.strstart++;
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* Values for max_lazy_match, good_match and max_chain_length, depending on
+ * the desired pack level (0..9). The values given below have been tuned to
+ * exclude worst case performance for pathological files. Better values may be
+ * found for specific files.
+ */
+function Config(good_length, max_lazy, nice_length, max_chain, func) {
+  this.good_length = good_length;
+  this.max_lazy = max_lazy;
+  this.nice_length = nice_length;
+  this.max_chain = max_chain;
+  this.func = func;
+}
+
+var configuration_table;
+
+configuration_table = [
+  /*      good lazy nice chain */
+  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
+  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
+  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
+  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */
+
+  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
+  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
+  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
+  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
+  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
+  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
+];
+
+
+/* ===========================================================================
+ * Initialize the "longest match" routines for a new zlib stream
+ */
+function lm_init(s) {
+  s.window_size = 2 * s.w_size;
+
+  /*** CLEAR_HASH(s); ***/
+  zero(s.head); // Fill with NIL (= 0);
+
+  /* Set the default configuration parameters:
+   */
+  s.max_lazy_match = configuration_table[s.level].max_lazy;
+  s.good_match = configuration_table[s.level].good_length;
+  s.nice_match = configuration_table[s.level].nice_length;
+  s.max_chain_length = configuration_table[s.level].max_chain;
+
+  s.strstart = 0;
+  s.block_start = 0;
+  s.lookahead = 0;
+  s.insert = 0;
+  s.match_length = s.prev_length = MIN_MATCH - 1;
+  s.match_available = 0;
+  s.ins_h = 0;
+}
+
+
+function DeflateState() {
+  this.strm = null;            /* pointer back to this zlib stream */
+  this.status = 0;            /* as the name implies */
+  this.pending_buf = null;      /* output still pending */
+  this.pending_buf_size = 0;  /* size of pending_buf */
+  this.pending_out = 0;       /* next pending byte to output to the stream */
+  this.pending = 0;           /* nb of bytes in the pending buffer */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.gzhead = null;         /* gzip header information to write */
+  this.gzindex = 0;           /* where in extra, name, or comment */
+  this.method = Z_DEFLATED; /* can only be DEFLATED */
+  this.last_flush = -1;   /* value of flush param for previous deflate call */
+
+  this.w_size = 0;  /* LZ77 window size (32K by default) */
+  this.w_bits = 0;  /* log2(w_size)  (8..16) */
+  this.w_mask = 0;  /* w_size - 1 */
+
+  this.window = null;
+  /* Sliding window. Input bytes are read into the second half of the window,
+   * and move to the first half later to keep a dictionary of at least wSize
+   * bytes. With this organization, matches are limited to a distance of
+   * wSize-MAX_MATCH bytes, but this ensures that IO is always
+   * performed with a length multiple of the block size.
+   */
+
+  this.window_size = 0;
+  /* Actual size of window: 2*wSize, except when the user input buffer
+   * is directly used as sliding window.
+   */
+
+  this.prev = null;
+  /* Link to older string with same hash index. To limit the size of this
+   * array to 64K, this link is maintained only for the last 32K strings.
+   * An index in this array is thus a window index modulo 32K.
+   */
+
+  this.head = null;   /* Heads of the hash chains or NIL. */
+
+  this.ins_h = 0;       /* hash index of string to be inserted */
+  this.hash_size = 0;   /* number of elements in hash table */
+  this.hash_bits = 0;   /* log2(hash_size) */
+  this.hash_mask = 0;   /* hash_size-1 */
+
+  this.hash_shift = 0;
+  /* Number of bits by which ins_h must be shifted at each input
+   * step. It must be such that after MIN_MATCH steps, the oldest
+   * byte no longer takes part in the hash key, that is:
+   *   hash_shift * MIN_MATCH >= hash_bits
+   */
+
+  this.block_start = 0;
+  /* Window position at the beginning of the current output block. Gets
+   * negative when the window is moved backwards.
+   */
+
+  this.match_length = 0;      /* length of best match */
+  this.prev_match = 0;        /* previous match */
+  this.match_available = 0;   /* set if previous match exists */
+  this.strstart = 0;          /* start of string to insert */
+  this.match_start = 0;       /* start of matching string */
+  this.lookahead = 0;         /* number of valid bytes ahead in window */
+
+  this.prev_length = 0;
+  /* Length of the best match at previous step. Matches not greater than this
+   * are discarded. This is used in the lazy match evaluation.
+   */
+
+  this.max_chain_length = 0;
+  /* To speed up deflation, hash chains are never searched beyond this
+   * length.  A higher limit improves compression ratio but degrades the
+   * speed.
+   */
+
+  this.max_lazy_match = 0;
+  /* Attempt to find a better match only when the current match is strictly
+   * smaller than this value. This mechanism is used only for compression
+   * levels >= 4.
+   */
+  // That's alias to max_lazy_match, don't use directly
+  //this.max_insert_length = 0;
+  /* Insert new strings in the hash table only if the match length is not
+   * greater than this length. This saves time but degrades compression.
+   * max_insert_length is used only for compression levels <= 3.
+   */
+
+  this.level = 0;     /* compression level (1..9) */
+  this.strategy = 0;  /* favor or force Huffman coding*/
+
+  this.good_match = 0;
+  /* Use a faster search when the previous match is longer than this */
+
+  this.nice_match = 0; /* Stop searching when current match exceeds this */
+
+              /* used by trees.c: */
+
+  /* Didn't use ct_data typedef below to suppress compiler warning */
+
+  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
+  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
+  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
+
+  // Use flat array of DOUBLE size, with interleaved fata,
+  // because JS does not support effective
+  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
+  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);
+  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);
+  zero(this.dyn_ltree);
+  zero(this.dyn_dtree);
+  zero(this.bl_tree);
+
+  this.l_desc   = null;         /* desc. for literal tree */
+  this.d_desc   = null;         /* desc. for distance tree */
+  this.bl_desc  = null;         /* desc. for bit length tree */
+
+  //ush bl_count[MAX_BITS+1];
+  this.bl_count = new utils.Buf16(MAX_BITS + 1);
+  /* number of codes at each bit length for an optimal tree */
+
+  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
+  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */
+  zero(this.heap);
+
+  this.heap_len = 0;               /* number of elements in the heap */
+  this.heap_max = 0;               /* element of largest frequency */
+  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
+   * The same heap array is used to build all trees.
+   */
+
+  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];
+  zero(this.depth);
+  /* Depth of each subtree used as tie breaker for trees of equal frequency
+   */
+
+  this.l_buf = 0;          /* buffer index for literals or lengths */
+
+  this.lit_bufsize = 0;
+  /* Size of match buffer for literals/lengths.  There are 4 reasons for
+   * limiting lit_bufsize to 64K:
+   *   - frequencies can be kept in 16 bit counters
+   *   - if compression is not successful for the first block, all input
+   *     data is still in the window so we can still emit a stored block even
+   *     when input comes from standard input.  (This can also be done for
+   *     all blocks if lit_bufsize is not greater than 32K.)
+   *   - if compression is not successful for a file smaller than 64K, we can
+   *     even emit a stored file instead of a stored block (saving 5 bytes).
+   *     This is applicable only for zip (not gzip or zlib).
+   *   - creating new Huffman trees less frequently may not provide fast
+   *     adaptation to changes in the input data statistics. (Take for
+   *     example a binary file with poorly compressible code followed by
+   *     a highly compressible string table.) Smaller buffer sizes give
+   *     fast adaptation but have of course the overhead of transmitting
+   *     trees more frequently.
+   *   - I can't count above 4
+   */
+
+  this.last_lit = 0;      /* running index in l_buf */
+
+  this.d_buf = 0;
+  /* Buffer index for distances. To simplify the code, d_buf and l_buf have
+   * the same number of elements. To use different lengths, an extra flag
+   * array would be necessary.
+   */
+
+  this.opt_len = 0;       /* bit length of current block with optimal trees */
+  this.static_len = 0;    /* bit length of current block with static trees */
+  this.matches = 0;       /* number of string matches in current block */
+  this.insert = 0;        /* bytes at end of window left to insert */
+
+
+  this.bi_buf = 0;
+  /* Output buffer. bits are inserted starting at the bottom (least
+   * significant bits).
+   */
+  this.bi_valid = 0;
+  /* Number of valid bits in bi_buf.  All bits above the last valid bit
+   * are always zero.
+   */
+
+  // Used for window memory init. We safely ignore it for JS. That makes
+  // sense only for pointers and memory check tools.
+  //this.high_water = 0;
+  /* High water mark offset in window for initialized bytes -- bytes above
+   * this are set to zero in order to avoid memory check warnings when
+   * longest match routines access bytes past the input.  This is then
+   * updated to the new high water mark.
+   */
+}
+
+
+function deflateResetKeep(strm) {
+  var s;
+
+  if (!strm || !strm.state) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.total_in = strm.total_out = 0;
+  strm.data_type = Z_UNKNOWN;
+
+  s = strm.state;
+  s.pending = 0;
+  s.pending_out = 0;
+
+  if (s.wrap < 0) {
+    s.wrap = -s.wrap;
+    /* was made negative by deflate(..., Z_FINISH); */
+  }
+  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
+  strm.adler = (s.wrap === 2) ?
+    0  // crc32(0, Z_NULL, 0)
+  :
+    1; // adler32(0, Z_NULL, 0)
+  s.last_flush = Z_NO_FLUSH;
+  trees._tr_init(s);
+  return Z_OK;
+}
+
+
+function deflateReset(strm) {
+  var ret = deflateResetKeep(strm);
+  if (ret === Z_OK) {
+    lm_init(strm.state);
+  }
+  return ret;
+}
+
+
+function deflateSetHeader(strm, head) {
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
+  strm.state.gzhead = head;
+  return Z_OK;
+}
+
+
+function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
+  if (!strm) { // === Z_NULL
+    return Z_STREAM_ERROR;
+  }
+  var wrap = 1;
+
+  if (level === Z_DEFAULT_COMPRESSION) {
+    level = 6;
+  }
+
+  if (windowBits < 0) { /* suppress zlib wrapper */
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+
+  else if (windowBits > 15) {
+    wrap = 2;           /* write gzip wrapper instead */
+    windowBits -= 16;
+  }
+
+
+  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
+    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
+    strategy < 0 || strategy > Z_FIXED) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+
+  if (windowBits === 8) {
+    windowBits = 9;
+  }
+  /* until 256-byte window bug fixed */
+
+  var s = new DeflateState();
+
+  strm.state = s;
+  s.strm = strm;
+
+  s.wrap = wrap;
+  s.gzhead = null;
+  s.w_bits = windowBits;
+  s.w_size = 1 << s.w_bits;
+  s.w_mask = s.w_size - 1;
+
+  s.hash_bits = memLevel + 7;
+  s.hash_size = 1 << s.hash_bits;
+  s.hash_mask = s.hash_size - 1;
+  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
+
+  s.window = new utils.Buf8(s.w_size * 2);
+  s.head = new utils.Buf16(s.hash_size);
+  s.prev = new utils.Buf16(s.w_size);
+
+  // Don't need mem init magic for JS.
+  //s.high_water = 0;  /* nothing written to s->window yet */
+
+  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
+
+  s.pending_buf_size = s.lit_bufsize * 4;
+
+  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
+  //s->pending_buf = (uchf *) overlay;
+  s.pending_buf = new utils.Buf8(s.pending_buf_size);
+
+  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)
+  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
+  s.d_buf = 1 * s.lit_bufsize;
+
+  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
+  s.l_buf = (1 + 2) * s.lit_bufsize;
+
+  s.level = level;
+  s.strategy = strategy;
+  s.method = method;
+
+  return deflateReset(strm);
+}
+
+function deflateInit(strm, level) {
+  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
+}
+
+
+function deflate(strm, flush) {
+  var old_flush, s;
+  var beg, val; // for gzip header write only
+
+  if (!strm || !strm.state ||
+    flush > Z_BLOCK || flush < 0) {
+    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
+  }
+
+  s = strm.state;
+
+  if (!strm.output ||
+      (!strm.input && strm.avail_in !== 0) ||
+      (s.status === FINISH_STATE && flush !== Z_FINISH)) {
+    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
+  }
+
+  s.strm = strm; /* just in case */
+  old_flush = s.last_flush;
+  s.last_flush = flush;
+
+  /* Write the header */
+  if (s.status === INIT_STATE) {
+
+    if (s.wrap === 2) { // GZIP header
+      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
+      put_byte(s, 31);
+      put_byte(s, 139);
+      put_byte(s, 8);
+      if (!s.gzhead) { // s->gzhead == Z_NULL
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, OS_CODE);
+        s.status = BUSY_STATE;
+      }
+      else {
+        put_byte(s, (s.gzhead.text ? 1 : 0) +
+                    (s.gzhead.hcrc ? 2 : 0) +
+                    (!s.gzhead.extra ? 0 : 4) +
+                    (!s.gzhead.name ? 0 : 8) +
+                    (!s.gzhead.comment ? 0 : 16)
+                );
+        put_byte(s, s.gzhead.time & 0xff);
+        put_byte(s, (s.gzhead.time >> 8) & 0xff);
+        put_byte(s, (s.gzhead.time >> 16) & 0xff);
+        put_byte(s, (s.gzhead.time >> 24) & 0xff);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, s.gzhead.os & 0xff);
+        if (s.gzhead.extra && s.gzhead.extra.length) {
+          put_byte(s, s.gzhead.extra.length & 0xff);
+          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
+        }
+        if (s.gzhead.hcrc) {
+          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
+        }
+        s.gzindex = 0;
+        s.status = EXTRA_STATE;
+      }
+    }
+    else // DEFLATE header
+    {
+      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
+      var level_flags = -1;
+
+      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
+        level_flags = 0;
+      } else if (s.level < 6) {
+        level_flags = 1;
+      } else if (s.level === 6) {
+        level_flags = 2;
+      } else {
+        level_flags = 3;
+      }
+      header |= (level_flags << 6);
+      if (s.strstart !== 0) { header |= PRESET_DICT; }
+      header += 31 - (header % 31);
+
+      s.status = BUSY_STATE;
+      putShortMSB(s, header);
+
+      /* Save the adler32 of the preset dictionary: */
+      if (s.strstart !== 0) {
+        putShortMSB(s, strm.adler >>> 16);
+        putShortMSB(s, strm.adler & 0xffff);
+      }
+      strm.adler = 1; // adler32(0L, Z_NULL, 0);
+    }
+  }
+
+//#ifdef GZIP
+  if (s.status === EXTRA_STATE) {
+    if (s.gzhead.extra/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+
+      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            break;
+          }
+        }
+        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
+        s.gzindex++;
+      }
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (s.gzindex === s.gzhead.extra.length) {
+        s.gzindex = 0;
+        s.status = NAME_STATE;
+      }
+    }
+    else {
+      s.status = NAME_STATE;
+    }
+  }
+  if (s.status === NAME_STATE) {
+    if (s.gzhead.name/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.name.length) {
+          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.gzindex = 0;
+        s.status = COMMENT_STATE;
+      }
+    }
+    else {
+      s.status = COMMENT_STATE;
+    }
+  }
+  if (s.status === COMMENT_STATE) {
+    if (s.gzhead.comment/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.comment.length) {
+          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.status = HCRC_STATE;
+      }
+    }
+    else {
+      s.status = HCRC_STATE;
+    }
+  }
+  if (s.status === HCRC_STATE) {
+    if (s.gzhead.hcrc) {
+      if (s.pending + 2 > s.pending_buf_size) {
+        flush_pending(strm);
+      }
+      if (s.pending + 2 <= s.pending_buf_size) {
+        put_byte(s, strm.adler & 0xff);
+        put_byte(s, (strm.adler >> 8) & 0xff);
+        strm.adler = 0; //crc32(0L, Z_NULL, 0);
+        s.status = BUSY_STATE;
+      }
+    }
+    else {
+      s.status = BUSY_STATE;
+    }
+  }
+//#endif
+
+  /* Flush as much pending output as possible */
+  if (s.pending !== 0) {
+    flush_pending(strm);
+    if (strm.avail_out === 0) {
+      /* Since avail_out is 0, deflate will be called again with
+       * more output space, but possibly with both pending and
+       * avail_in equal to zero. There won't be anything to do,
+       * but this is not an error situation so make sure we
+       * return OK instead of BUF_ERROR at next call of deflate:
+       */
+      s.last_flush = -1;
+      return Z_OK;
+    }
+
+    /* Make sure there is something to do and avoid duplicate consecutive
+     * flushes. For repeated and useless calls with Z_FINISH, we keep
+     * returning Z_STREAM_END instead of Z_BUF_ERROR.
+     */
+  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
+    flush !== Z_FINISH) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* User must not provide more input after the first FINISH: */
+  if (s.status === FINISH_STATE && strm.avail_in !== 0) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* Start a new block or continue the current one.
+   */
+  if (strm.avail_in !== 0 || s.lookahead !== 0 ||
+    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
+    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
+      (s.strategy === Z_RLE ? deflate_rle(s, flush) :
+        configuration_table[s.level].func(s, flush));
+
+    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
+      s.status = FINISH_STATE;
+    }
+    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
+      if (strm.avail_out === 0) {
+        s.last_flush = -1;
+        /* avoid BUF_ERROR next call, see above */
+      }
+      return Z_OK;
+      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
+       * of deflate should use the same flush parameter to make sure
+       * that the flush is complete. So we don't have to output an
+       * empty block here, this will be done at next call. This also
+       * ensures that for a very small output buffer, we emit at most
+       * one empty block.
+       */
+    }
+    if (bstate === BS_BLOCK_DONE) {
+      if (flush === Z_PARTIAL_FLUSH) {
+        trees._tr_align(s);
+      }
+      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
+
+        trees._tr_stored_block(s, 0, 0, false);
+        /* For a full flush, this empty block will be recognized
+         * as a special marker by inflate_sync().
+         */
+        if (flush === Z_FULL_FLUSH) {
+          /*** CLEAR_HASH(s); ***/             /* forget history */
+          zero(s.head); // Fill with NIL (= 0);
+
+          if (s.lookahead === 0) {
+            s.strstart = 0;
+            s.block_start = 0;
+            s.insert = 0;
+          }
+        }
+      }
+      flush_pending(strm);
+      if (strm.avail_out === 0) {
+        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
+        return Z_OK;
+      }
+    }
+  }
+  //Assert(strm->avail_out > 0, "bug2");
+  //if (strm.avail_out <= 0) { throw new Error("bug2");}
+
+  if (flush !== Z_FINISH) { return Z_OK; }
+  if (s.wrap <= 0) { return Z_STREAM_END; }
+
+  /* Write the trailer */
+  if (s.wrap === 2) {
+    put_byte(s, strm.adler & 0xff);
+    put_byte(s, (strm.adler >> 8) & 0xff);
+    put_byte(s, (strm.adler >> 16) & 0xff);
+    put_byte(s, (strm.adler >> 24) & 0xff);
+    put_byte(s, strm.total_in & 0xff);
+    put_byte(s, (strm.total_in >> 8) & 0xff);
+    put_byte(s, (strm.total_in >> 16) & 0xff);
+    put_byte(s, (strm.total_in >> 24) & 0xff);
+  }
+  else
+  {
+    putShortMSB(s, strm.adler >>> 16);
+    putShortMSB(s, strm.adler & 0xffff);
+  }
+
+  flush_pending(strm);
+  /* If avail_out is zero, the application will call deflate again
+   * to flush the rest.
+   */
+  if (s.wrap > 0) { s.wrap = -s.wrap; }
+  /* write the trailer only once! */
+  return s.pending !== 0 ? Z_OK : Z_STREAM_END;
+}
+
+function deflateEnd(strm) {
+  var status;
+
+  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  status = strm.state.status;
+  if (status !== INIT_STATE &&
+    status !== EXTRA_STATE &&
+    status !== NAME_STATE &&
+    status !== COMMENT_STATE &&
+    status !== HCRC_STATE &&
+    status !== BUSY_STATE &&
+    status !== FINISH_STATE
+  ) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.state = null;
+
+  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
+}
+
+
+/* =========================================================================
+ * Initializes the compression dictionary from the given byte
+ * sequence without producing any compressed output.
+ */
+function deflateSetDictionary(strm, dictionary) {
+  var dictLength = dictionary.length;
+
+  var s;
+  var str, n;
+  var wrap;
+  var avail;
+  var next;
+  var input;
+  var tmpDict;
+
+  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  s = strm.state;
+  wrap = s.wrap;
+
+  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {
+    return Z_STREAM_ERROR;
+  }
+
+  /* when using zlib wrappers, compute Adler-32 for provided dictionary */
+  if (wrap === 1) {
+    /* adler32(strm->adler, dictionary, dictLength); */
+    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
+  }
+
+  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */
+
+  /* if dictionary would fill window, just replace the history */
+  if (dictLength >= s.w_size) {
+    if (wrap === 0) {            /* already empty otherwise */
+      /*** CLEAR_HASH(s); ***/
+      zero(s.head); // Fill with NIL (= 0);
+      s.strstart = 0;
+      s.block_start = 0;
+      s.insert = 0;
+    }
+    /* use the tail */
+    // dictionary = dictionary.slice(dictLength - s.w_size);
+    tmpDict = new utils.Buf8(s.w_size);
+    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
+    dictionary = tmpDict;
+    dictLength = s.w_size;
+  }
+  /* insert dictionary into window and hash */
+  avail = strm.avail_in;
+  next = strm.next_in;
+  input = strm.input;
+  strm.avail_in = dictLength;
+  strm.next_in = 0;
+  strm.input = dictionary;
+  fill_window(s);
+  while (s.lookahead >= MIN_MATCH) {
+    str = s.strstart;
+    n = s.lookahead - (MIN_MATCH - 1);
+    do {
+      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
+
+      s.prev[str & s.w_mask] = s.head[s.ins_h];
+
+      s.head[s.ins_h] = str;
+      str++;
+    } while (--n);
+    s.strstart = str;
+    s.lookahead = MIN_MATCH - 1;
+    fill_window(s);
+  }
+  s.strstart += s.lookahead;
+  s.block_start = s.strstart;
+  s.insert = s.lookahead;
+  s.lookahead = 0;
+  s.match_length = s.prev_length = MIN_MATCH - 1;
+  s.match_available = 0;
+  strm.next_in = next;
+  strm.input = input;
+  strm.avail_in = avail;
+  s.wrap = wrap;
+  return Z_OK;
+}
+
+
+exports.deflateInit = deflateInit;
+exports.deflateInit2 = deflateInit2;
+exports.deflateReset = deflateReset;
+exports.deflateResetKeep = deflateResetKeep;
+exports.deflateSetHeader = deflateSetHeader;
+exports.deflate = deflate;
+exports.deflateEnd = deflateEnd;
+exports.deflateSetDictionary = deflateSetDictionary;
+exports.deflateInfo = 'pako deflate (from Nodeca project)';
+
+/* Not implemented
+exports.deflateBound = deflateBound;
+exports.deflateCopy = deflateCopy;
+exports.deflateParams = deflateParams;
+exports.deflatePending = deflatePending;
+exports.deflatePrime = deflatePrime;
+exports.deflateTune = deflateTune;
+*/
+
+
+/***/ }),
+/* 155 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils = __webpack_require__(34);
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+//var Z_FILTERED          = 1;
+//var Z_HUFFMAN_ONLY      = 2;
+//var Z_RLE               = 3;
+var Z_FIXED               = 4;
+//var Z_DEFAULT_STRATEGY  = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+var Z_BINARY              = 0;
+var Z_TEXT                = 1;
+//var Z_ASCII             = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+/*============================================================================*/
+
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+// From zutil.h
+
+var STORED_BLOCK = 0;
+var STATIC_TREES = 1;
+var DYN_TREES    = 2;
+/* The three kinds of block type */
+
+var MIN_MATCH    = 3;
+var MAX_MATCH    = 258;
+/* The minimum and maximum match lengths */
+
+// From deflate.h
+/* ===========================================================================
+ * Internal compression state.
+ */
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+
+var D_CODES       = 30;
+/* number of distance codes */
+
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+
+var HEAP_SIZE     = 2 * L_CODES + 1;
+/* maximum heap size */
+
+var MAX_BITS      = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var Buf_size      = 16;
+/* size of bit buffer in bi_buf */
+
+
+/* ===========================================================================
+ * Constants
+ */
+
+var MAX_BL_BITS = 7;
+/* Bit length codes must not exceed MAX_BL_BITS bits */
+
+var END_BLOCK   = 256;
+/* end of block literal code */
+
+var REP_3_6     = 16;
+/* repeat previous bit length 3-6 times (2 bits of repeat count) */
+
+var REPZ_3_10   = 17;
+/* repeat a zero length 3-10 times  (3 bits of repeat count) */
+
+var REPZ_11_138 = 18;
+/* repeat a zero length 11-138 times  (7 bits of repeat count) */
+
+/* eslint-disable comma-spacing,array-bracket-spacing */
+var extra_lbits =   /* extra bits for each length code */
+  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];
+
+var extra_dbits =   /* extra bits for each distance code */
+  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];
+
+var extra_blbits =  /* extra bits for each bit length code */
+  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];
+
+var bl_order =
+  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
+/* eslint-enable comma-spacing,array-bracket-spacing */
+
+/* The lengths of the bit length codes are sent in order of decreasing
+ * probability, to avoid transmitting the lengths for unused bit length codes.
+ */
+
+/* ===========================================================================
+ * Local data. These are initialized only once.
+ */
+
+// We pre-fill arrays with 0 to avoid uninitialized gaps
+
+var DIST_CODE_LEN = 512; /* see definition of array dist_code below */
+
+// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1
+var static_ltree  = new Array((L_CODES + 2) * 2);
+zero(static_ltree);
+/* The static literal tree. Since the bit lengths are imposed, there is no
+ * need for the L_CODES extra codes used during heap construction. However
+ * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
+ * below).
+ */
+
+var static_dtree  = new Array(D_CODES * 2);
+zero(static_dtree);
+/* The static distance tree. (Actually a trivial tree since all codes use
+ * 5 bits.)
+ */
+
+var _dist_code    = new Array(DIST_CODE_LEN);
+zero(_dist_code);
+/* Distance codes. The first 256 values correspond to the distances
+ * 3 .. 258, the last 256 values correspond to the top 8 bits of
+ * the 15 bit distances.
+ */
+
+var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);
+zero(_length_code);
+/* length code for each normalized match length (0 == MIN_MATCH) */
+
+var base_length   = new Array(LENGTH_CODES);
+zero(base_length);
+/* First normalized length for each code (0 = MIN_MATCH) */
+
+var base_dist     = new Array(D_CODES);
+zero(base_dist);
+/* First normalized distance for each code (0 = distance of 1) */
+
+
+function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
+
+  this.static_tree  = static_tree;  /* static tree or NULL */
+  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
+  this.extra_base   = extra_base;   /* base index for extra_bits */
+  this.elems        = elems;        /* max number of elements in the tree */
+  this.max_length   = max_length;   /* max bit length for the codes */
+
+  // show if `static_tree` has data or dummy - needed for monomorphic objects
+  this.has_stree    = static_tree && static_tree.length;
+}
+
+
+var static_l_desc;
+var static_d_desc;
+var static_bl_desc;
+
+
+function TreeDesc(dyn_tree, stat_desc) {
+  this.dyn_tree = dyn_tree;     /* the dynamic tree */
+  this.max_code = 0;            /* largest code with non zero frequency */
+  this.stat_desc = stat_desc;   /* the corresponding static tree */
+}
+
+
+
+function d_code(dist) {
+  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
+}
+
+
+/* ===========================================================================
+ * Output a short LSB first on the stream.
+ * IN assertion: there is enough room in pendingBuf.
+ */
+function put_short(s, w) {
+//    put_byte(s, (uch)((w) & 0xff));
+//    put_byte(s, (uch)((ush)(w) >> 8));
+  s.pending_buf[s.pending++] = (w) & 0xff;
+  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
+}
+
+
+/* ===========================================================================
+ * Send a value on a given number of bits.
+ * IN assertion: length <= 16 and value fits in length bits.
+ */
+function send_bits(s, value, length) {
+  if (s.bi_valid > (Buf_size - length)) {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    put_short(s, s.bi_buf);
+    s.bi_buf = value >> (Buf_size - s.bi_valid);
+    s.bi_valid += length - Buf_size;
+  } else {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    s.bi_valid += length;
+  }
+}
+
+
+function send_code(s, c, tree) {
+  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);
+}
+
+
+/* ===========================================================================
+ * Reverse the first len bits of a code, using straightforward code (a faster
+ * method would use a table)
+ * IN assertion: 1 <= len <= 15
+ */
+function bi_reverse(code, len) {
+  var res = 0;
+  do {
+    res |= code & 1;
+    code >>>= 1;
+    res <<= 1;
+  } while (--len > 0);
+  return res >>> 1;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer, keeping at most 7 bits in it.
+ */
+function bi_flush(s) {
+  if (s.bi_valid === 16) {
+    put_short(s, s.bi_buf);
+    s.bi_buf = 0;
+    s.bi_valid = 0;
+
+  } else if (s.bi_valid >= 8) {
+    s.pending_buf[s.pending++] = s.bi_buf & 0xff;
+    s.bi_buf >>= 8;
+    s.bi_valid -= 8;
+  }
+}
+
+
+/* ===========================================================================
+ * Compute the optimal bit lengths for a tree and update the total bit length
+ * for the current block.
+ * IN assertion: the fields freq and dad are set, heap[heap_max] and
+ *    above are the tree nodes sorted by increasing frequency.
+ * OUT assertions: the field len is set to the optimal bit length, the
+ *     array bl_count contains the frequencies for each bit length.
+ *     The length opt_len is updated; static_len is also updated if stree is
+ *     not null.
+ */
+function gen_bitlen(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc;    /* the tree descriptor */
+{
+  var tree            = desc.dyn_tree;
+  var max_code        = desc.max_code;
+  var stree           = desc.stat_desc.static_tree;
+  var has_stree       = desc.stat_desc.has_stree;
+  var extra           = desc.stat_desc.extra_bits;
+  var base            = desc.stat_desc.extra_base;
+  var max_length      = desc.stat_desc.max_length;
+  var h;              /* heap index */
+  var n, m;           /* iterate over the tree elements */
+  var bits;           /* bit length */
+  var xbits;          /* extra bits */
+  var f;              /* frequency */
+  var overflow = 0;   /* number of elements with bit length too large */
+
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    s.bl_count[bits] = 0;
+  }
+
+  /* In a first pass, compute the optimal bit lengths (which may
+   * overflow in the case of the bit length tree).
+   */
+  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */
+
+  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
+    n = s.heap[h];
+    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
+    if (bits > max_length) {
+      bits = max_length;
+      overflow++;
+    }
+    tree[n * 2 + 1]/*.Len*/ = bits;
+    /* We overwrite tree[n].Dad which is no longer needed */
+
+    if (n > max_code) { continue; } /* not a leaf node */
+
+    s.bl_count[bits]++;
+    xbits = 0;
+    if (n >= base) {
+      xbits = extra[n - base];
+    }
+    f = tree[n * 2]/*.Freq*/;
+    s.opt_len += f * (bits + xbits);
+    if (has_stree) {
+      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);
+    }
+  }
+  if (overflow === 0) { return; }
+
+  // Trace((stderr,"\nbit length overflow\n"));
+  /* This happens for example on obj2 and pic of the Calgary corpus */
+
+  /* Find the first bit length which could increase: */
+  do {
+    bits = max_length - 1;
+    while (s.bl_count[bits] === 0) { bits--; }
+    s.bl_count[bits]--;      /* move one leaf down the tree */
+    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */
+    s.bl_count[max_length]--;
+    /* The brother of the overflow item also moves one step up,
+     * but this does not affect bl_count[max_length]
+     */
+    overflow -= 2;
+  } while (overflow > 0);
+
+  /* Now recompute all bit lengths, scanning in increasing frequency.
+   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
+   * lengths instead of fixing only the wrong ones. This idea is taken
+   * from 'ar' written by Haruhiko Okumura.)
+   */
+  for (bits = max_length; bits !== 0; bits--) {
+    n = s.bl_count[bits];
+    while (n !== 0) {
+      m = s.heap[--h];
+      if (m > max_code) { continue; }
+      if (tree[m * 2 + 1]/*.Len*/ !== bits) {
+        // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
+        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;
+        tree[m * 2 + 1]/*.Len*/ = bits;
+      }
+      n--;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Generate the codes for a given tree and bit counts (which need not be
+ * optimal).
+ * IN assertion: the array bl_count contains the bit length statistics for
+ * the given tree and the field len is set for all tree elements.
+ * OUT assertion: the field code is set for all tree elements of non
+ *     zero code length.
+ */
+function gen_codes(tree, max_code, bl_count)
+//    ct_data *tree;             /* the tree to decorate */
+//    int max_code;              /* largest code with non zero frequency */
+//    ushf *bl_count;            /* number of codes at each bit length */
+{
+  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */
+  var code = 0;              /* running code value */
+  var bits;                  /* bit index */
+  var n;                     /* code index */
+
+  /* The distribution counts are first used to generate the code values
+   * without bit reversal.
+   */
+  for (bits = 1; bits <= MAX_BITS; bits++) {
+    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;
+  }
+  /* Check that the bit counts in bl_count are consistent. The last code
+   * must be all ones.
+   */
+  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
+  //        "inconsistent bit counts");
+  //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
+
+  for (n = 0;  n <= max_code; n++) {
+    var len = tree[n * 2 + 1]/*.Len*/;
+    if (len === 0) { continue; }
+    /* Now reverse the bits */
+    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);
+
+    //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
+    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
+  }
+}
+
+
+/* ===========================================================================
+ * Initialize the various 'constant' tables.
+ */
+function tr_static_init() {
+  var n;        /* iterates over tree elements */
+  var bits;     /* bit counter */
+  var length;   /* length value */
+  var code;     /* code value */
+  var dist;     /* distance index */
+  var bl_count = new Array(MAX_BITS + 1);
+  /* number of codes at each bit length for an optimal tree */
+
+  // do check in _tr_init()
+  //if (static_init_done) return;
+
+  /* For some embedded targets, global variables are not initialized: */
+/*#ifdef NO_INIT_GLOBAL_POINTERS
+  static_l_desc.static_tree = static_ltree;
+  static_l_desc.extra_bits = extra_lbits;
+  static_d_desc.static_tree = static_dtree;
+  static_d_desc.extra_bits = extra_dbits;
+  static_bl_desc.extra_bits = extra_blbits;
+#endif*/
+
+  /* Initialize the mapping length (0..255) -> length code (0..28) */
+  length = 0;
+  for (code = 0; code < LENGTH_CODES - 1; code++) {
+    base_length[code] = length;
+    for (n = 0; n < (1 << extra_lbits[code]); n++) {
+      _length_code[length++] = code;
+    }
+  }
+  //Assert (length == 256, "tr_static_init: length != 256");
+  /* Note that the length 255 (match length 258) can be represented
+   * in two different ways: code 284 + 5 bits or code 285, so we
+   * overwrite length_code[255] to use the best encoding:
+   */
+  _length_code[length - 1] = code;
+
+  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
+  dist = 0;
+  for (code = 0; code < 16; code++) {
+    base_dist[code] = dist;
+    for (n = 0; n < (1 << extra_dbits[code]); n++) {
+      _dist_code[dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: dist != 256");
+  dist >>= 7; /* from now on, all distances are divided by 128 */
+  for (; code < D_CODES; code++) {
+    base_dist[code] = dist << 7;
+    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
+      _dist_code[256 + dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: 256+dist != 512");
+
+  /* Construct the codes of the static literal tree */
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    bl_count[bits] = 0;
+  }
+
+  n = 0;
+  while (n <= 143) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  while (n <= 255) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 9;
+    n++;
+    bl_count[9]++;
+  }
+  while (n <= 279) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 7;
+    n++;
+    bl_count[7]++;
+  }
+  while (n <= 287) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  /* Codes 286 and 287 do not exist, but we must include them in the
+   * tree construction to get a canonical Huffman tree (longest code
+   * all ones)
+   */
+  gen_codes(static_ltree, L_CODES + 1, bl_count);
+
+  /* The static distance tree is trivial: */
+  for (n = 0; n < D_CODES; n++) {
+    static_dtree[n * 2 + 1]/*.Len*/ = 5;
+    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);
+  }
+
+  // Now data ready and we can init static trees
+  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
+  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
+  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);
+
+  //static_init_done = true;
+}
+
+
+/* ===========================================================================
+ * Initialize a new block.
+ */
+function init_block(s) {
+  var n; /* iterates over tree elements */
+
+  /* Initialize the trees. */
+  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }
+  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }
+  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }
+
+  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;
+  s.opt_len = s.static_len = 0;
+  s.last_lit = s.matches = 0;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer and align the output on a byte boundary
+ */
+function bi_windup(s)
+{
+  if (s.bi_valid > 8) {
+    put_short(s, s.bi_buf);
+  } else if (s.bi_valid > 0) {
+    //put_byte(s, (Byte)s->bi_buf);
+    s.pending_buf[s.pending++] = s.bi_buf;
+  }
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+}
+
+/* ===========================================================================
+ * Copy a stored block, storing first the length and its
+ * one's complement if requested.
+ */
+function copy_block(s, buf, len, header)
+//DeflateState *s;
+//charf    *buf;    /* the input data */
+//unsigned len;     /* its length */
+//int      header;  /* true if block header must be written */
+{
+  bi_windup(s);        /* align on byte boundary */
+
+  if (header) {
+    put_short(s, len);
+    put_short(s, ~len);
+  }
+//  while (len--) {
+//    put_byte(s, *buf++);
+//  }
+  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
+  s.pending += len;
+}
+
+/* ===========================================================================
+ * Compares to subtrees, using the tree depth as tie breaker when
+ * the subtrees have equal frequency. This minimizes the worst case length.
+ */
+function smaller(tree, n, m, depth) {
+  var _n2 = n * 2;
+  var _m2 = m * 2;
+  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
+         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
+}
+
+/* ===========================================================================
+ * Restore the heap property by moving down the tree starting at node k,
+ * exchanging a node with the smallest of its two sons if necessary, stopping
+ * when the heap property is re-established (each father smaller than its
+ * two sons).
+ */
+function pqdownheap(s, tree, k)
+//    deflate_state *s;
+//    ct_data *tree;  /* the tree to restore */
+//    int k;               /* node to move down */
+{
+  var v = s.heap[k];
+  var j = k << 1;  /* left son of k */
+  while (j <= s.heap_len) {
+    /* Set j to the smallest of the two sons: */
+    if (j < s.heap_len &&
+      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
+      j++;
+    }
+    /* Exit if v is smaller than both sons */
+    if (smaller(tree, v, s.heap[j], s.depth)) { break; }
+
+    /* Exchange v with the smallest son */
+    s.heap[k] = s.heap[j];
+    k = j;
+
+    /* And continue down the tree, setting j to the left son of k */
+    j <<= 1;
+  }
+  s.heap[k] = v;
+}
+
+
+// inlined manually
+// var SMALLEST = 1;
+
+/* ===========================================================================
+ * Send the block data compressed using the given Huffman trees
+ */
+function compress_block(s, ltree, dtree)
+//    deflate_state *s;
+//    const ct_data *ltree; /* literal tree */
+//    const ct_data *dtree; /* distance tree */
+{
+  var dist;           /* distance of matched string */
+  var lc;             /* match length or unmatched char (if dist == 0) */
+  var lx = 0;         /* running index in l_buf */
+  var code;           /* the code to send */
+  var extra;          /* number of extra bits to send */
+
+  if (s.last_lit !== 0) {
+    do {
+      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);
+      lc = s.pending_buf[s.l_buf + lx];
+      lx++;
+
+      if (dist === 0) {
+        send_code(s, lc, ltree); /* send a literal byte */
+        //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
+      } else {
+        /* Here, lc is the match length - MIN_MATCH */
+        code = _length_code[lc];
+        send_code(s, code + LITERALS + 1, ltree); /* send the length code */
+        extra = extra_lbits[code];
+        if (extra !== 0) {
+          lc -= base_length[code];
+          send_bits(s, lc, extra);       /* send the extra length bits */
+        }
+        dist--; /* dist is now the match distance - 1 */
+        code = d_code(dist);
+        //Assert (code < D_CODES, "bad d_code");
+
+        send_code(s, code, dtree);       /* send the distance code */
+        extra = extra_dbits[code];
+        if (extra !== 0) {
+          dist -= base_dist[code];
+          send_bits(s, dist, extra);   /* send the extra distance bits */
+        }
+      } /* literal or match pair ? */
+
+      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
+      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
+      //       "pendingBuf overflow");
+
+    } while (lx < s.last_lit);
+  }
+
+  send_code(s, END_BLOCK, ltree);
+}
+
+
+/* ===========================================================================
+ * Construct one Huffman tree and assigns the code bit strings and lengths.
+ * Update the total bit length for the current block.
+ * IN assertion: the field freq is set for all tree elements.
+ * OUT assertions: the fields len and code are set to the optimal bit length
+ *     and corresponding code. The length opt_len is updated; static_len is
+ *     also updated if stree is not null. The field max_code is set.
+ */
+function build_tree(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc; /* the tree descriptor */
+{
+  var tree     = desc.dyn_tree;
+  var stree    = desc.stat_desc.static_tree;
+  var has_stree = desc.stat_desc.has_stree;
+  var elems    = desc.stat_desc.elems;
+  var n, m;          /* iterate over heap elements */
+  var max_code = -1; /* largest code with non zero frequency */
+  var node;          /* new node being created */
+
+  /* Construct the initial heap, with least frequent element in
+   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
+   * heap[0] is not used.
+   */
+  s.heap_len = 0;
+  s.heap_max = HEAP_SIZE;
+
+  for (n = 0; n < elems; n++) {
+    if (tree[n * 2]/*.Freq*/ !== 0) {
+      s.heap[++s.heap_len] = max_code = n;
+      s.depth[n] = 0;
+
+    } else {
+      tree[n * 2 + 1]/*.Len*/ = 0;
+    }
+  }
+
+  /* The pkzip format requires that at least one distance code exists,
+   * and that at least one bit should be sent even if there is only one
+   * possible code. So to avoid special checks later on we force at least
+   * two codes of non zero frequency.
+   */
+  while (s.heap_len < 2) {
+    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
+    tree[node * 2]/*.Freq*/ = 1;
+    s.depth[node] = 0;
+    s.opt_len--;
+
+    if (has_stree) {
+      s.static_len -= stree[node * 2 + 1]/*.Len*/;
+    }
+    /* node is 0 or 1 so it does not have extra bits */
+  }
+  desc.max_code = max_code;
+
+  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
+   * establish sub-heaps of increasing lengths:
+   */
+  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
+
+  /* Construct the Huffman tree by repeatedly combining the least two
+   * frequent nodes.
+   */
+  node = elems;              /* next internal node of the tree */
+  do {
+    //pqremove(s, tree, n);  /* n = node of least frequency */
+    /*** pqremove ***/
+    n = s.heap[1/*SMALLEST*/];
+    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+    /***/
+
+    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
+
+    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
+    s.heap[--s.heap_max] = m;
+
+    /* Create a new node father of n and m */
+    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
+    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
+    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;
+
+    /* and insert the new node in the heap */
+    s.heap[1/*SMALLEST*/] = node++;
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+
+  } while (s.heap_len >= 2);
+
+  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
+
+  /* At this point, the fields freq and dad are set. We can now
+   * generate the bit lengths.
+   */
+  gen_bitlen(s, desc);
+
+  /* The field len is now set, we can generate the bit codes */
+  gen_codes(tree, max_code, s.bl_count);
+}
+
+
+/* ===========================================================================
+ * Scan a literal or distance tree to determine the frequencies of the codes
+ * in the bit length tree.
+ */
+function scan_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree;   /* the tree to be scanned */
+//    int max_code;    /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      s.bl_tree[curlen * 2]/*.Freq*/ += count;
+
+    } else if (curlen !== 0) {
+
+      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
+      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;
+
+    } else if (count <= 10) {
+      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;
+
+    } else {
+      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
+    }
+
+    count = 0;
+    prevlen = curlen;
+
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Send a literal or distance tree in compressed form, using the codes in
+ * bl_tree.
+ */
+function send_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree; /* the tree to be scanned */
+//    int max_code;       /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  /* tree[max_code+1].Len = -1; */  /* guard already set */
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
+
+    } else if (curlen !== 0) {
+      if (curlen !== prevlen) {
+        send_code(s, curlen, s.bl_tree);
+        count--;
+      }
+      //Assert(count >= 3 && count <= 6, " 3_6?");
+      send_code(s, REP_3_6, s.bl_tree);
+      send_bits(s, count - 3, 2);
+
+    } else if (count <= 10) {
+      send_code(s, REPZ_3_10, s.bl_tree);
+      send_bits(s, count - 3, 3);
+
+    } else {
+      send_code(s, REPZ_11_138, s.bl_tree);
+      send_bits(s, count - 11, 7);
+    }
+
+    count = 0;
+    prevlen = curlen;
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Construct the Huffman tree for the bit lengths and return the index in
+ * bl_order of the last bit length code to send.
+ */
+function build_bl_tree(s) {
+  var max_blindex;  /* index of last bit length code of non zero freq */
+
+  /* Determine the bit length frequencies for literal and distance trees */
+  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
+  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
+
+  /* Build the bit length tree: */
+  build_tree(s, s.bl_desc);
+  /* opt_len now includes the length of the tree representations, except
+   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
+   */
+
+  /* Determine the number of bit length codes to send. The pkzip format
+   * requires that at least 4 bit length codes be sent. (appnote.txt says
+   * 3 but the actual value used is 4.)
+   */
+  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
+    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {
+      break;
+    }
+  }
+  /* Update opt_len to include the bit length tree and counts */
+  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
+  //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
+  //        s->opt_len, s->static_len));
+
+  return max_blindex;
+}
+
+
+/* ===========================================================================
+ * Send the header for a block using dynamic Huffman trees: the counts, the
+ * lengths of the bit length codes, the literal tree and the distance tree.
+ * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
+ */
+function send_all_trees(s, lcodes, dcodes, blcodes)
+//    deflate_state *s;
+//    int lcodes, dcodes, blcodes; /* number of codes for each tree */
+{
+  var rank;                    /* index in bl_order */
+
+  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
+  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
+  //        "too many codes");
+  //Tracev((stderr, "\nbl counts: "));
+  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
+  send_bits(s, dcodes - 1,   5);
+  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */
+  for (rank = 0; rank < blcodes; rank++) {
+    //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
+    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);
+  }
+  //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */
+  //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */
+  //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
+}
+
+
+/* ===========================================================================
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
+ * - TEXT if the two conditions below are satisfied:
+ *    a) There are no non-portable control characters belonging to the
+ *       "black list" (0..6, 14..25, 28..31).
+ *    b) There is at least one printable character belonging to the
+ *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * - BINARY otherwise.
+ * - The following partially-portable control characters form a
+ *   "gray list" that is ignored in this detection algorithm:
+ *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
+ * IN assertion: the fields Freq of dyn_ltree are set.
+ */
+function detect_data_type(s) {
+  /* black_mask is the bit mask of black-listed bytes
+   * set bits 0..6, 14..25, and 28..31
+   * 0xf3ffc07f = binary 11110011111111111100000001111111
+   */
+  var black_mask = 0xf3ffc07f;
+  var n;
+
+  /* Check for non-textual ("black-listed") bytes. */
+  for (n = 0; n <= 31; n++, black_mask >>>= 1) {
+    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {
+      return Z_BINARY;
+    }
+  }
+
+  /* Check for textual ("white-listed") bytes. */
+  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
+      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
+    return Z_TEXT;
+  }
+  for (n = 32; n < LITERALS; n++) {
+    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
+      return Z_TEXT;
+    }
+  }
+
+  /* There are no "black-listed" or "white-listed" bytes:
+   * this stream either is empty or has tolerated ("gray-listed") bytes only.
+   */
+  return Z_BINARY;
+}
+
+
+var static_init_done = false;
+
+/* ===========================================================================
+ * Initialize the tree data structures for a new zlib stream.
+ */
+function _tr_init(s)
+{
+
+  if (!static_init_done) {
+    tr_static_init();
+    static_init_done = true;
+  }
+
+  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
+  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
+  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
+
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+
+  /* Initialize the first block of the first file: */
+  init_block(s);
+}
+
+
+/* ===========================================================================
+ * Send a stored block
+ */
+function _tr_stored_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */
+  copy_block(s, buf, stored_len, true); /* with header */
+}
+
+
+/* ===========================================================================
+ * Send one empty static block to give enough lookahead for inflate.
+ * This takes 10 bits, of which 7 may remain in the bit buffer.
+ */
+function _tr_align(s) {
+  send_bits(s, STATIC_TREES << 1, 3);
+  send_code(s, END_BLOCK, static_ltree);
+  bi_flush(s);
+}
+
+
+/* ===========================================================================
+ * Determine the best encoding for the current block: dynamic trees, static
+ * trees or store, and output the encoded block to the zip file.
+ */
+function _tr_flush_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block, or NULL if too old */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
+  var max_blindex = 0;        /* index of last bit length code of non zero freq */
+
+  /* Build the Huffman trees unless a stored block is forced */
+  if (s.level > 0) {
+
+    /* Check if the file is binary or text */
+    if (s.strm.data_type === Z_UNKNOWN) {
+      s.strm.data_type = detect_data_type(s);
+    }
+
+    /* Construct the literal and distance trees */
+    build_tree(s, s.l_desc);
+    // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+
+    build_tree(s, s.d_desc);
+    // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+    /* At this point, opt_len and static_len are the total bit lengths of
+     * the compressed block data, excluding the tree representations.
+     */
+
+    /* Build the bit length tree for the above two trees, and get the index
+     * in bl_order of the last bit length code to send.
+     */
+    max_blindex = build_bl_tree(s);
+
+    /* Determine the best encoding. Compute the block lengths in bytes. */
+    opt_lenb = (s.opt_len + 3 + 7) >>> 3;
+    static_lenb = (s.static_len + 3 + 7) >>> 3;
+
+    // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
+    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
+    //        s->last_lit));
+
+    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
+
+  } else {
+    // Assert(buf != (char*)0, "lost buf");
+    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
+  }
+
+  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {
+    /* 4: two words for the lengths */
+
+    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
+     * Otherwise we can't have processed more than WSIZE input bytes since
+     * the last block flush, because compression would have been
+     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
+     * transform a block into a stored block.
+     */
+    _tr_stored_block(s, buf, stored_len, last);
+
+  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
+
+    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
+    compress_block(s, static_ltree, static_dtree);
+
+  } else {
+    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
+    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
+    compress_block(s, s.dyn_ltree, s.dyn_dtree);
+  }
+  // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
+  /* The above check is made mod 2^32, for files larger than 512 MB
+   * and uLong implemented on 32 bits.
+   */
+  init_block(s);
+
+  if (last) {
+    bi_windup(s);
+  }
+  // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
+  //       s->compressed_len-7*last));
+}
+
+/* ===========================================================================
+ * Save the match info and tally the frequency counts. Return true if
+ * the current block must be flushed.
+ */
+function _tr_tally(s, dist, lc)
+//    deflate_state *s;
+//    unsigned dist;  /* distance of matched string */
+//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
+{
+  //var out_length, in_length, dcode;
+
+  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
+  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;
+
+  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
+  s.last_lit++;
+
+  if (dist === 0) {
+    /* lc is the unmatched char */
+    s.dyn_ltree[lc * 2]/*.Freq*/++;
+  } else {
+    s.matches++;
+    /* Here, lc is the match length - MIN_MATCH */
+    dist--;             /* dist = match distance - 1 */
+    //Assert((ush)dist < (ush)MAX_DIST(s) &&
+    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
+    //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
+
+    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;
+    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
+  }
+
+// (!) This block is disabled in zlib defaults,
+// don't enable it for binary compatibility
+
+//#ifdef TRUNCATE_BLOCK
+//  /* Try to guess if it is profitable to stop the current block here */
+//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
+//    /* Compute an upper bound for the compressed length */
+//    out_length = s.last_lit*8;
+//    in_length = s.strstart - s.block_start;
+//
+//    for (dcode = 0; dcode < D_CODES; dcode++) {
+//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
+//    }
+//    out_length >>>= 3;
+//    //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
+//    //       s->last_lit, in_length, out_length,
+//    //       100L - out_length*100L/in_length));
+//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
+//      return true;
+//    }
+//  }
+//#endif
+
+  return (s.last_lit === s.lit_bufsize - 1);
+  /* We avoid equality with lit_bufsize because of wraparound at 64K
+   * on 16 bit machines and because stored blocks are restricted to
+   * 64K-1 bytes.
+   */
+}
+
+exports._tr_init  = _tr_init;
+exports._tr_stored_block = _tr_stored_block;
+exports._tr_flush_block  = _tr_flush_block;
+exports._tr_tally = _tr_tally;
+exports._tr_align = _tr_align;
+
+
+/***/ }),
+/* 156 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+module.exports = {
+  2:      'need dictionary',     /* Z_NEED_DICT       2  */
+  1:      'stream end',          /* Z_STREAM_END      1  */
+  0:      '',                    /* Z_OK              0  */
+  '-1':   'file error',          /* Z_ERRNO         (-1) */
+  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */
+  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */
+  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */
+  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */
+  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */
+};
+
+
+/***/ }),
+/* 157 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils         = __webpack_require__(34);
+var adler32       = __webpack_require__(89);
+var crc32         = __webpack_require__(90);
+var inflate_fast  = __webpack_require__(158);
+var inflate_table = __webpack_require__(159);
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+//var Z_NO_FLUSH      = 0;
+//var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+//var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+
+/* STATES ====================================================================*/
+/* ===========================================================================*/
+
+
+var    HEAD = 1;       /* i: waiting for magic header */
+var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
+var    TIME = 3;       /* i: waiting for modification time (gzip) */
+var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
+var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
+var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
+var    NAME = 7;       /* i: waiting for end of file name (gzip) */
+var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
+var    HCRC = 9;       /* i: waiting for header crc (gzip) */
+var    DICTID = 10;    /* i: waiting for dictionary check value */
+var    DICT = 11;      /* waiting for inflateSetDictionary() call */
+var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
+var        STORED = 14;    /* i: waiting for stored size (length and complement) */
+var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
+var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
+var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
+var        LENLENS = 18;   /* i: waiting for code length code lengths */
+var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
+var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
+var            LEN = 21;       /* i: waiting for length/lit/eob code */
+var            LENEXT = 22;    /* i: waiting for length extra bits */
+var            DIST = 23;      /* i: waiting for distance code */
+var            DISTEXT = 24;   /* i: waiting for distance extra bits */
+var            MATCH = 25;     /* o: waiting for output space to copy string */
+var            LIT = 26;       /* o: waiting for output space to write literal */
+var    CHECK = 27;     /* i: waiting for 32-bit check value */
+var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
+var    DONE = 29;      /* finished check, done -- remain here until reset */
+var    BAD = 30;       /* got a data error -- remain here until reset */
+var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
+var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */
+
+/* ===========================================================================*/
+
+
+
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);
+
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_WBITS = MAX_WBITS;
+
+
+function zswap32(q) {
+  return  (((q >>> 24) & 0xff) +
+          ((q >>> 8) & 0xff00) +
+          ((q & 0xff00) << 8) +
+          ((q & 0xff) << 24));
+}
+
+
+function InflateState() {
+  this.mode = 0;             /* current inflate mode */
+  this.last = false;          /* true if processing last block */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.havedict = false;      /* true if dictionary provided */
+  this.flags = 0;             /* gzip header method and flags (0 if zlib) */
+  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
+  this.check = 0;             /* protected copy of check value */
+  this.total = 0;             /* protected copy of output count */
+  // TODO: may be {}
+  this.head = null;           /* where to save gzip header information */
+
+  /* sliding window */
+  this.wbits = 0;             /* log base 2 of requested window size */
+  this.wsize = 0;             /* window size or zero if not using window */
+  this.whave = 0;             /* valid bytes in the window */
+  this.wnext = 0;             /* window write index */
+  this.window = null;         /* allocated sliding window, if needed */
+
+  /* bit accumulator */
+  this.hold = 0;              /* input bit accumulator */
+  this.bits = 0;              /* number of bits in "in" */
+
+  /* for string and stored block copying */
+  this.length = 0;            /* literal or length of data to copy */
+  this.offset = 0;            /* distance back to copy string from */
+
+  /* for table and code decoding */
+  this.extra = 0;             /* extra bits needed */
+
+  /* fixed and dynamic code tables */
+  this.lencode = null;          /* starting table for length/literal codes */
+  this.distcode = null;         /* starting table for distance codes */
+  this.lenbits = 0;           /* index bits for lencode */
+  this.distbits = 0;          /* index bits for distcode */
+
+  /* dynamic table building */
+  this.ncode = 0;             /* number of code length code lengths */
+  this.nlen = 0;              /* number of length code lengths */
+  this.ndist = 0;             /* number of distance code lengths */
+  this.have = 0;              /* number of code lengths in lens[] */
+  this.next = null;              /* next available space in codes[] */
+
+  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
+  this.work = new utils.Buf16(288); /* work area for code table building */
+
+  /*
+   because we don't have pointers in js, we use lencode and distcode directly
+   as buffers so we don't need codes
+  */
+  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
+  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
+  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
+  this.sane = 0;                   /* if false, allow invalid distance too far */
+  this.back = 0;                   /* bits back of last unprocessed length/lit */
+  this.was = 0;                    /* initial length of match */
+}
+
+function inflateResetKeep(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  strm.total_in = strm.total_out = state.total = 0;
+  strm.msg = ''; /*Z_NULL*/
+  if (state.wrap) {       /* to support ill-conceived Java test suite */
+    strm.adler = state.wrap & 1;
+  }
+  state.mode = HEAD;
+  state.last = 0;
+  state.havedict = 0;
+  state.dmax = 32768;
+  state.head = null/*Z_NULL*/;
+  state.hold = 0;
+  state.bits = 0;
+  //state.lencode = state.distcode = state.next = state.codes;
+  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
+  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
+
+  state.sane = 1;
+  state.back = -1;
+  //Tracev((stderr, "inflate: reset\n"));
+  return Z_OK;
+}
+
+function inflateReset(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  state.wsize = 0;
+  state.whave = 0;
+  state.wnext = 0;
+  return inflateResetKeep(strm);
+
+}
+
+function inflateReset2(strm, windowBits) {
+  var wrap;
+  var state;
+
+  /* get the state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+
+  /* extract wrap request from windowBits parameter */
+  if (windowBits < 0) {
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+  else {
+    wrap = (windowBits >> 4) + 1;
+    if (windowBits < 48) {
+      windowBits &= 15;
+    }
+  }
+
+  /* set number of window bits, free window if different */
+  if (windowBits && (windowBits < 8 || windowBits > 15)) {
+    return Z_STREAM_ERROR;
+  }
+  if (state.window !== null && state.wbits !== windowBits) {
+    state.window = null;
+  }
+
+  /* update state and reset the rest of it */
+  state.wrap = wrap;
+  state.wbits = windowBits;
+  return inflateReset(strm);
+}
+
+function inflateInit2(strm, windowBits) {
+  var ret;
+  var state;
+
+  if (!strm) { return Z_STREAM_ERROR; }
+  //strm.msg = Z_NULL;                 /* in case we return an error */
+
+  state = new InflateState();
+
+  //if (state === Z_NULL) return Z_MEM_ERROR;
+  //Tracev((stderr, "inflate: allocated\n"));
+  strm.state = state;
+  state.window = null/*Z_NULL*/;
+  ret = inflateReset2(strm, windowBits);
+  if (ret !== Z_OK) {
+    strm.state = null/*Z_NULL*/;
+  }
+  return ret;
+}
+
+function inflateInit(strm) {
+  return inflateInit2(strm, DEF_WBITS);
+}
+
+
+/*
+ Return state with length and distance decoding tables and index sizes set to
+ fixed code decoding.  Normally this returns fixed tables from inffixed.h.
+ If BUILDFIXED is defined, then instead this routine builds the tables the
+ first time it's called, and returns those tables the first time and
+ thereafter.  This reduces the size of the code by about 2K bytes, in
+ exchange for a little execution time.  However, BUILDFIXED should not be
+ used for threaded applications, since the rewriting of the tables and virgin
+ may not be thread-safe.
+ */
+var virgin = true;
+
+var lenfix, distfix; // We have no pointers in JS, so keep tables separate
+
+function fixedtables(state) {
+  /* build fixed huffman tables if first call (may not be thread safe) */
+  if (virgin) {
+    var sym;
+
+    lenfix = new utils.Buf32(512);
+    distfix = new utils.Buf32(32);
+
+    /* literal/length table */
+    sym = 0;
+    while (sym < 144) { state.lens[sym++] = 8; }
+    while (sym < 256) { state.lens[sym++] = 9; }
+    while (sym < 280) { state.lens[sym++] = 7; }
+    while (sym < 288) { state.lens[sym++] = 8; }
+
+    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });
+
+    /* distance table */
+    sym = 0;
+    while (sym < 32) { state.lens[sym++] = 5; }
+
+    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });
+
+    /* do this just once */
+    virgin = false;
+  }
+
+  state.lencode = lenfix;
+  state.lenbits = 9;
+  state.distcode = distfix;
+  state.distbits = 5;
+}
+
+
+/*
+ Update the window with the last wsize (normally 32K) bytes written before
+ returning.  If window does not exist yet, create it.  This is only called
+ when a window is already in use, or when output has been written during this
+ inflate call, but the end of the deflate stream has not been reached yet.
+ It is also called to create a window for dictionary data when a dictionary
+ is loaded.
+
+ Providing output buffers larger than 32K to inflate() should provide a speed
+ advantage, since only the last 32K of output is copied to the sliding window
+ upon return from inflate(), and since all distances after the first 32K of
+ output will fall in the output data, making match copies simpler and faster.
+ The advantage may be dependent on the size of the processor's data caches.
+ */
+function updatewindow(strm, src, end, copy) {
+  var dist;
+  var state = strm.state;
+
+  /* if it hasn't been done already, allocate space for the window */
+  if (state.window === null) {
+    state.wsize = 1 << state.wbits;
+    state.wnext = 0;
+    state.whave = 0;
+
+    state.window = new utils.Buf8(state.wsize);
+  }
+
+  /* copy state->wsize or less output bytes into the circular window */
+  if (copy >= state.wsize) {
+    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
+    state.wnext = 0;
+    state.whave = state.wsize;
+  }
+  else {
+    dist = state.wsize - state.wnext;
+    if (dist > copy) {
+      dist = copy;
+    }
+    //zmemcpy(state->window + state->wnext, end - copy, dist);
+    utils.arraySet(state.window, src, end - copy, dist, state.wnext);
+    copy -= dist;
+    if (copy) {
+      //zmemcpy(state->window, end - copy, copy);
+      utils.arraySet(state.window, src, end - copy, copy, 0);
+      state.wnext = copy;
+      state.whave = state.wsize;
+    }
+    else {
+      state.wnext += dist;
+      if (state.wnext === state.wsize) { state.wnext = 0; }
+      if (state.whave < state.wsize) { state.whave += dist; }
+    }
+  }
+  return 0;
+}
+
+function inflate(strm, flush) {
+  var state;
+  var input, output;          // input/output buffers
+  var next;                   /* next input INDEX */
+  var put;                    /* next output INDEX */
+  var have, left;             /* available input and output */
+  var hold;                   /* bit buffer */
+  var bits;                   /* bits in bit buffer */
+  var _in, _out;              /* save starting available input and output */
+  var copy;                   /* number of stored or match bytes to copy */
+  var from;                   /* where to copy match bytes from */
+  var from_source;
+  var here = 0;               /* current decoding table entry */
+  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
+  //var last;                   /* parent table entry */
+  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
+  var len;                    /* length to copy for repeats, bits to drop */
+  var ret;                    /* return code */
+  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
+  var opts;
+
+  var n; // temporary var for NEED_BITS
+
+  var order = /* permutation of code lengths */
+    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];
+
+
+  if (!strm || !strm.state || !strm.output ||
+      (!strm.input && strm.avail_in !== 0)) {
+    return Z_STREAM_ERROR;
+  }
+
+  state = strm.state;
+  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */
+
+
+  //--- LOAD() ---
+  put = strm.next_out;
+  output = strm.output;
+  left = strm.avail_out;
+  next = strm.next_in;
+  input = strm.input;
+  have = strm.avail_in;
+  hold = state.hold;
+  bits = state.bits;
+  //---
+
+  _in = have;
+  _out = left;
+  ret = Z_OK;
+
+  inf_leave: // goto emulation
+  for (;;) {
+    switch (state.mode) {
+      case HEAD:
+        if (state.wrap === 0) {
+          state.mode = TYPEDO;
+          break;
+        }
+        //=== NEEDBITS(16);
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
+          state.check = 0/*crc32(0L, Z_NULL, 0)*/;
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+          state.mode = FLAGS;
+          break;
+        }
+        state.flags = 0;           /* expect zlib header */
+        if (state.head) {
+          state.head.done = false;
+        }
+        if (!(state.wrap & 1) ||   /* check if zlib header allowed */
+          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
+          strm.msg = 'incorrect header check';
+          state.mode = BAD;
+          break;
+        }
+        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
+          strm.msg = 'unknown compression method';
+          state.mode = BAD;
+          break;
+        }
+        //--- DROPBITS(4) ---//
+        hold >>>= 4;
+        bits -= 4;
+        //---//
+        len = (hold & 0x0f)/*BITS(4)*/ + 8;
+        if (state.wbits === 0) {
+          state.wbits = len;
+        }
+        else if (len > state.wbits) {
+          strm.msg = 'invalid window size';
+          state.mode = BAD;
+          break;
+        }
+        state.dmax = 1 << len;
+        //Tracev((stderr, "inflate:   zlib header ok\n"));
+        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+        state.mode = hold & 0x200 ? DICTID : TYPE;
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        break;
+      case FLAGS:
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.flags = hold;
+        if ((state.flags & 0xff) !== Z_DEFLATED) {
+          strm.msg = 'unknown compression method';
+          state.mode = BAD;
+          break;
+        }
+        if (state.flags & 0xe000) {
+          strm.msg = 'unknown header flags set';
+          state.mode = BAD;
+          break;
+        }
+        if (state.head) {
+          state.head.text = ((hold >> 8) & 1);
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = TIME;
+        /* falls through */
+      case TIME:
+        //=== NEEDBITS(32); */
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (state.head) {
+          state.head.time = hold;
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC4(state.check, hold)
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          hbuf[2] = (hold >>> 16) & 0xff;
+          hbuf[3] = (hold >>> 24) & 0xff;
+          state.check = crc32(state.check, hbuf, 4, 0);
+          //===
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = OS;
+        /* falls through */
+      case OS:
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (state.head) {
+          state.head.xflags = (hold & 0xff);
+          state.head.os = (hold >> 8);
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = EXLEN;
+        /* falls through */
+      case EXLEN:
+        if (state.flags & 0x0400) {
+          //=== NEEDBITS(16); */
+          while (bits < 16) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.length = hold;
+          if (state.head) {
+            state.head.extra_len = hold;
+          }
+          if (state.flags & 0x0200) {
+            //=== CRC2(state.check, hold);
+            hbuf[0] = hold & 0xff;
+            hbuf[1] = (hold >>> 8) & 0xff;
+            state.check = crc32(state.check, hbuf, 2, 0);
+            //===//
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+        }
+        else if (state.head) {
+          state.head.extra = null/*Z_NULL*/;
+        }
+        state.mode = EXTRA;
+        /* falls through */
+      case EXTRA:
+        if (state.flags & 0x0400) {
+          copy = state.length;
+          if (copy > have) { copy = have; }
+          if (copy) {
+            if (state.head) {
+              len = state.head.extra_len - state.length;
+              if (!state.head.extra) {
+                // Use untyped array for more convenient processing later
+                state.head.extra = new Array(state.head.extra_len);
+              }
+              utils.arraySet(
+                state.head.extra,
+                input,
+                next,
+                // extra field is limited to 65536 bytes
+                // - no need for additional size check
+                copy,
+                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
+                len
+              );
+              //zmemcpy(state.head.extra + len, next,
+              //        len + copy > state.head.extra_max ?
+              //        state.head.extra_max - len : copy);
+            }
+            if (state.flags & 0x0200) {
+              state.check = crc32(state.check, input, copy, next);
+            }
+            have -= copy;
+            next += copy;
+            state.length -= copy;
+          }
+          if (state.length) { break inf_leave; }
+        }
+        state.length = 0;
+        state.mode = NAME;
+        /* falls through */
+      case NAME:
+        if (state.flags & 0x0800) {
+          if (have === 0) { break inf_leave; }
+          copy = 0;
+          do {
+            // TODO: 2 or 1 bytes?
+            len = input[next + copy++];
+            /* use constant limit because in js we should not preallocate memory */
+            if (state.head && len &&
+                (state.length < 65536 /*state.head.name_max*/)) {
+              state.head.name += String.fromCharCode(len);
+            }
+          } while (len && copy < have);
+
+          if (state.flags & 0x0200) {
+            state.check = crc32(state.check, input, copy, next);
+          }
+          have -= copy;
+          next += copy;
+          if (len) { break inf_leave; }
+        }
+        else if (state.head) {
+          state.head.name = null;
+        }
+        state.length = 0;
+        state.mode = COMMENT;
+        /* falls through */
+      case COMMENT:
+        if (state.flags & 0x1000) {
+          if (have === 0) { break inf_leave; }
+          copy = 0;
+          do {
+            len = input[next + copy++];
+            /* use constant limit because in js we should not preallocate memory */
+            if (state.head && len &&
+                (state.length < 65536 /*state.head.comm_max*/)) {
+              state.head.comment += String.fromCharCode(len);
+            }
+          } while (len && copy < have);
+          if (state.flags & 0x0200) {
+            state.check = crc32(state.check, input, copy, next);
+          }
+          have -= copy;
+          next += copy;
+          if (len) { break inf_leave; }
+        }
+        else if (state.head) {
+          state.head.comment = null;
+        }
+        state.mode = HCRC;
+        /* falls through */
+      case HCRC:
+        if (state.flags & 0x0200) {
+          //=== NEEDBITS(16); */
+          while (bits < 16) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          if (hold !== (state.check & 0xffff)) {
+            strm.msg = 'header crc mismatch';
+            state.mode = BAD;
+            break;
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+        }
+        if (state.head) {
+          state.head.hcrc = ((state.flags >> 9) & 1);
+          state.head.done = true;
+        }
+        strm.adler = state.check = 0;
+        state.mode = TYPE;
+        break;
+      case DICTID:
+        //=== NEEDBITS(32); */
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        strm.adler = state.check = zswap32(hold);
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = DICT;
+        /* falls through */
+      case DICT:
+        if (state.havedict === 0) {
+          //--- RESTORE() ---
+          strm.next_out = put;
+          strm.avail_out = left;
+          strm.next_in = next;
+          strm.avail_in = have;
+          state.hold = hold;
+          state.bits = bits;
+          //---
+          return Z_NEED_DICT;
+        }
+        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+        state.mode = TYPE;
+        /* falls through */
+      case TYPE:
+        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
+        /* falls through */
+      case TYPEDO:
+        if (state.last) {
+          //--- BYTEBITS() ---//
+          hold >>>= bits & 7;
+          bits -= bits & 7;
+          //---//
+          state.mode = CHECK;
+          break;
+        }
+        //=== NEEDBITS(3); */
+        while (bits < 3) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.last = (hold & 0x01)/*BITS(1)*/;
+        //--- DROPBITS(1) ---//
+        hold >>>= 1;
+        bits -= 1;
+        //---//
+
+        switch ((hold & 0x03)/*BITS(2)*/) {
+          case 0:                             /* stored block */
+            //Tracev((stderr, "inflate:     stored block%s\n",
+            //        state.last ? " (last)" : ""));
+            state.mode = STORED;
+            break;
+          case 1:                             /* fixed block */
+            fixedtables(state);
+            //Tracev((stderr, "inflate:     fixed codes block%s\n",
+            //        state.last ? " (last)" : ""));
+            state.mode = LEN_;             /* decode codes */
+            if (flush === Z_TREES) {
+              //--- DROPBITS(2) ---//
+              hold >>>= 2;
+              bits -= 2;
+              //---//
+              break inf_leave;
+            }
+            break;
+          case 2:                             /* dynamic block */
+            //Tracev((stderr, "inflate:     dynamic codes block%s\n",
+            //        state.last ? " (last)" : ""));
+            state.mode = TABLE;
+            break;
+          case 3:
+            strm.msg = 'invalid block type';
+            state.mode = BAD;
+        }
+        //--- DROPBITS(2) ---//
+        hold >>>= 2;
+        bits -= 2;
+        //---//
+        break;
+      case STORED:
+        //--- BYTEBITS() ---// /* go to byte boundary */
+        hold >>>= bits & 7;
+        bits -= bits & 7;
+        //---//
+        //=== NEEDBITS(32); */
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
+          strm.msg = 'invalid stored block lengths';
+          state.mode = BAD;
+          break;
+        }
+        state.length = hold & 0xffff;
+        //Tracev((stderr, "inflate:       stored length %u\n",
+        //        state.length));
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = COPY_;
+        if (flush === Z_TREES) { break inf_leave; }
+        /* falls through */
+      case COPY_:
+        state.mode = COPY;
+        /* falls through */
+      case COPY:
+        copy = state.length;
+        if (copy) {
+          if (copy > have) { copy = have; }
+          if (copy > left) { copy = left; }
+          if (copy === 0) { break inf_leave; }
+          //--- zmemcpy(put, next, copy); ---
+          utils.arraySet(output, input, next, copy, put);
+          //---//
+          have -= copy;
+          next += copy;
+          left -= copy;
+          put += copy;
+          state.length -= copy;
+          break;
+        }
+        //Tracev((stderr, "inflate:       stored end\n"));
+        state.mode = TYPE;
+        break;
+      case TABLE:
+        //=== NEEDBITS(14); */
+        while (bits < 14) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
+        //--- DROPBITS(5) ---//
+        hold >>>= 5;
+        bits -= 5;
+        //---//
+        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
+        //--- DROPBITS(5) ---//
+        hold >>>= 5;
+        bits -= 5;
+        //---//
+        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
+        //--- DROPBITS(4) ---//
+        hold >>>= 4;
+        bits -= 4;
+        //---//
+//#ifndef PKZIP_BUG_WORKAROUND
+        if (state.nlen > 286 || state.ndist > 30) {
+          strm.msg = 'too many length or distance symbols';
+          state.mode = BAD;
+          break;
+        }
+//#endif
+        //Tracev((stderr, "inflate:       table sizes ok\n"));
+        state.have = 0;
+        state.mode = LENLENS;
+        /* falls through */
+      case LENLENS:
+        while (state.have < state.ncode) {
+          //=== NEEDBITS(3);
+          while (bits < 3) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
+          //--- DROPBITS(3) ---//
+          hold >>>= 3;
+          bits -= 3;
+          //---//
+        }
+        while (state.have < 19) {
+          state.lens[order[state.have++]] = 0;
+        }
+        // We have separate tables & no pointers. 2 commented lines below not needed.
+        //state.next = state.codes;
+        //state.lencode = state.next;
+        // Switch to use dynamic table
+        state.lencode = state.lendyn;
+        state.lenbits = 7;
+
+        opts = { bits: state.lenbits };
+        ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
+        state.lenbits = opts.bits;
+
+        if (ret) {
+          strm.msg = 'invalid code lengths set';
+          state.mode = BAD;
+          break;
+        }
+        //Tracev((stderr, "inflate:       code lengths ok\n"));
+        state.have = 0;
+        state.mode = CODELENS;
+        /* falls through */
+      case CODELENS:
+        while (state.have < state.nlen + state.ndist) {
+          for (;;) {
+            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
+            here_bits = here >>> 24;
+            here_op = (here >>> 16) & 0xff;
+            here_val = here & 0xffff;
+
+            if ((here_bits) <= bits) { break; }
+            //--- PULLBYTE() ---//
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+            //---//
+          }
+          if (here_val < 16) {
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            state.lens[state.have++] = here_val;
+          }
+          else {
+            if (here_val === 16) {
+              //=== NEEDBITS(here.bits + 2);
+              n = here_bits + 2;
+              while (bits < n) {
+                if (have === 0) { break inf_leave; }
+                have--;
+                hold += input[next++] << bits;
+                bits += 8;
+              }
+              //===//
+              //--- DROPBITS(here.bits) ---//
+              hold >>>= here_bits;
+              bits -= here_bits;
+              //---//
+              if (state.have === 0) {
+                strm.msg = 'invalid bit length repeat';
+                state.mode = BAD;
+                break;
+              }
+              len = state.lens[state.have - 1];
+              copy = 3 + (hold & 0x03);//BITS(2);
+              //--- DROPBITS(2) ---//
+              hold >>>= 2;
+              bits -= 2;
+              //---//
+            }
+            else if (here_val === 17) {
+              //=== NEEDBITS(here.bits + 3);
+              n = here_bits + 3;
+              while (bits < n) {
+                if (have === 0) { break inf_leave; }
+                have--;
+                hold += input[next++] << bits;
+                bits += 8;
+              }
+              //===//
+              //--- DROPBITS(here.bits) ---//
+              hold >>>= here_bits;
+              bits -= here_bits;
+              //---//
+              len = 0;
+              copy = 3 + (hold & 0x07);//BITS(3);
+              //--- DROPBITS(3) ---//
+              hold >>>= 3;
+              bits -= 3;
+              //---//
+            }
+            else {
+              //=== NEEDBITS(here.bits + 7);
+              n = here_bits + 7;
+              while (bits < n) {
+                if (have === 0) { break inf_leave; }
+                have--;
+                hold += input[next++] << bits;
+                bits += 8;
+              }
+              //===//
+              //--- DROPBITS(here.bits) ---//
+              hold >>>= here_bits;
+              bits -= here_bits;
+              //---//
+              len = 0;
+              copy = 11 + (hold & 0x7f);//BITS(7);
+              //--- DROPBITS(7) ---//
+              hold >>>= 7;
+              bits -= 7;
+              //---//
+            }
+            if (state.have + copy > state.nlen + state.ndist) {
+              strm.msg = 'invalid bit length repeat';
+              state.mode = BAD;
+              break;
+            }
+            while (copy--) {
+              state.lens[state.have++] = len;
+            }
+          }
+        }
+
+        /* handle error breaks in while */
+        if (state.mode === BAD) { break; }
+
+        /* check for end-of-block code (better have one) */
+        if (state.lens[256] === 0) {
+          strm.msg = 'invalid code -- missing end-of-block';
+          state.mode = BAD;
+          break;
+        }
+
+        /* build code tables -- note: do not change the lenbits or distbits
+           values here (9 and 6) without reading the comments in inftrees.h
+           concerning the ENOUGH constants, which depend on those values */
+        state.lenbits = 9;
+
+        opts = { bits: state.lenbits };
+        ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
+        // We have separate tables & no pointers. 2 commented lines below not needed.
+        // state.next_index = opts.table_index;
+        state.lenbits = opts.bits;
+        // state.lencode = state.next;
+
+        if (ret) {
+          strm.msg = 'invalid literal/lengths set';
+          state.mode = BAD;
+          break;
+        }
+
+        state.distbits = 6;
+        //state.distcode.copy(state.codes);
+        // Switch to use dynamic table
+        state.distcode = state.distdyn;
+        opts = { bits: state.distbits };
+        ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
+        // We have separate tables & no pointers. 2 commented lines below not needed.
+        // state.next_index = opts.table_index;
+        state.distbits = opts.bits;
+        // state.distcode = state.next;
+
+        if (ret) {
+          strm.msg = 'invalid distances set';
+          state.mode = BAD;
+          break;
+        }
+        //Tracev((stderr, 'inflate:       codes ok\n'));
+        state.mode = LEN_;
+        if (flush === Z_TREES) { break inf_leave; }
+        /* falls through */
+      case LEN_:
+        state.mode = LEN;
+        /* falls through */
+      case LEN:
+        if (have >= 6 && left >= 258) {
+          //--- RESTORE() ---
+          strm.next_out = put;
+          strm.avail_out = left;
+          strm.next_in = next;
+          strm.avail_in = have;
+          state.hold = hold;
+          state.bits = bits;
+          //---
+          inflate_fast(strm, _out);
+          //--- LOAD() ---
+          put = strm.next_out;
+          output = strm.output;
+          left = strm.avail_out;
+          next = strm.next_in;
+          input = strm.input;
+          have = strm.avail_in;
+          hold = state.hold;
+          bits = state.bits;
+          //---
+
+          if (state.mode === TYPE) {
+            state.back = -1;
+          }
+          break;
+        }
+        state.back = 0;
+        for (;;) {
+          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if (here_bits <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        if (here_op && (here_op & 0xf0) === 0) {
+          last_bits = here_bits;
+          last_op = here_op;
+          last_val = here_val;
+          for (;;) {
+            here = state.lencode[last_val +
+                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+            here_bits = here >>> 24;
+            here_op = (here >>> 16) & 0xff;
+            here_val = here & 0xffff;
+
+            if ((last_bits + here_bits) <= bits) { break; }
+            //--- PULLBYTE() ---//
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+            //---//
+          }
+          //--- DROPBITS(last.bits) ---//
+          hold >>>= last_bits;
+          bits -= last_bits;
+          //---//
+          state.back += last_bits;
+        }
+        //--- DROPBITS(here.bits) ---//
+        hold >>>= here_bits;
+        bits -= here_bits;
+        //---//
+        state.back += here_bits;
+        state.length = here_val;
+        if (here_op === 0) {
+          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+          //        "inflate:         literal '%c'\n" :
+          //        "inflate:         literal 0x%02x\n", here.val));
+          state.mode = LIT;
+          break;
+        }
+        if (here_op & 32) {
+          //Tracevv((stderr, "inflate:         end of block\n"));
+          state.back = -1;
+          state.mode = TYPE;
+          break;
+        }
+        if (here_op & 64) {
+          strm.msg = 'invalid literal/length code';
+          state.mode = BAD;
+          break;
+        }
+        state.extra = here_op & 15;
+        state.mode = LENEXT;
+        /* falls through */
+      case LENEXT:
+        if (state.extra) {
+          //=== NEEDBITS(state.extra);
+          n = state.extra;
+          while (bits < n) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
+          //--- DROPBITS(state.extra) ---//
+          hold >>>= state.extra;
+          bits -= state.extra;
+          //---//
+          state.back += state.extra;
+        }
+        //Tracevv((stderr, "inflate:         length %u\n", state.length));
+        state.was = state.length;
+        state.mode = DIST;
+        /* falls through */
+      case DIST:
+        for (;;) {
+          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        if ((here_op & 0xf0) === 0) {
+          last_bits = here_bits;
+          last_op = here_op;
+          last_val = here_val;
+          for (;;) {
+            here = state.distcode[last_val +
+                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+            here_bits = here >>> 24;
+            here_op = (here >>> 16) & 0xff;
+            here_val = here & 0xffff;
+
+            if ((last_bits + here_bits) <= bits) { break; }
+            //--- PULLBYTE() ---//
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+            //---//
+          }
+          //--- DROPBITS(last.bits) ---//
+          hold >>>= last_bits;
+          bits -= last_bits;
+          //---//
+          state.back += last_bits;
+        }
+        //--- DROPBITS(here.bits) ---//
+        hold >>>= here_bits;
+        bits -= here_bits;
+        //---//
+        state.back += here_bits;
+        if (here_op & 64) {
+          strm.msg = 'invalid distance code';
+          state.mode = BAD;
+          break;
+        }
+        state.offset = here_val;
+        state.extra = (here_op) & 15;
+        state.mode = DISTEXT;
+        /* falls through */
+      case DISTEXT:
+        if (state.extra) {
+          //=== NEEDBITS(state.extra);
+          n = state.extra;
+          while (bits < n) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
+          //--- DROPBITS(state.extra) ---//
+          hold >>>= state.extra;
+          bits -= state.extra;
+          //---//
+          state.back += state.extra;
+        }
+//#ifdef INFLATE_STRICT
+        if (state.offset > state.dmax) {
+          strm.msg = 'invalid distance too far back';
+          state.mode = BAD;
+          break;
+        }
+//#endif
+        //Tracevv((stderr, "inflate:         distance %u\n", state.offset));
+        state.mode = MATCH;
+        /* falls through */
+      case MATCH:
+        if (left === 0) { break inf_leave; }
+        copy = _out - left;
+        if (state.offset > copy) {         /* copy from window */
+          copy = state.offset - copy;
+          if (copy > state.whave) {
+            if (state.sane) {
+              strm.msg = 'invalid distance too far back';
+              state.mode = BAD;
+              break;
+            }
+// (!) This block is disabled in zlib defaults,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//          Trace((stderr, "inflate.c too far\n"));
+//          copy -= state.whave;
+//          if (copy > state.length) { copy = state.length; }
+//          if (copy > left) { copy = left; }
+//          left -= copy;
+//          state.length -= copy;
+//          do {
+//            output[put++] = 0;
+//          } while (--copy);
+//          if (state.length === 0) { state.mode = LEN; }
+//          break;
+//#endif
+          }
+          if (copy > state.wnext) {
+            copy -= state.wnext;
+            from = state.wsize - copy;
+          }
+          else {
+            from = state.wnext - copy;
+          }
+          if (copy > state.length) { copy = state.length; }
+          from_source = state.window;
+        }
+        else {                              /* copy from output */
+          from_source = output;
+          from = put - state.offset;
+          copy = state.length;
+        }
+        if (copy > left) { copy = left; }
+        left -= copy;
+        state.length -= copy;
+        do {
+          output[put++] = from_source[from++];
+        } while (--copy);
+        if (state.length === 0) { state.mode = LEN; }
+        break;
+      case LIT:
+        if (left === 0) { break inf_leave; }
+        output[put++] = state.length;
+        left--;
+        state.mode = LEN;
+        break;
+      case CHECK:
+        if (state.wrap) {
+          //=== NEEDBITS(32);
+          while (bits < 32) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            // Use '|' instead of '+' to make sure that result is signed
+            hold |= input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          _out -= left;
+          strm.total_out += _out;
+          state.total += _out;
+          if (_out) {
+            strm.adler = state.check =
+                /*UPDATE(state.check, put - _out, _out);*/
+                (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));
+
+          }
+          _out = left;
+          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
+          if ((state.flags ? hold : zswap32(hold)) !== state.check) {
+            strm.msg = 'incorrect data check';
+            state.mode = BAD;
+            break;
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+          //Tracev((stderr, "inflate:   check matches trailer\n"));
+        }
+        state.mode = LENGTH;
+        /* falls through */
+      case LENGTH:
+        if (state.wrap && state.flags) {
+          //=== NEEDBITS(32);
+          while (bits < 32) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          if (hold !== (state.total & 0xffffffff)) {
+            strm.msg = 'incorrect length check';
+            state.mode = BAD;
+            break;
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+          //Tracev((stderr, "inflate:   length matches trailer\n"));
+        }
+        state.mode = DONE;
+        /* falls through */
+      case DONE:
+        ret = Z_STREAM_END;
+        break inf_leave;
+      case BAD:
+        ret = Z_DATA_ERROR;
+        break inf_leave;
+      case MEM:
+        return Z_MEM_ERROR;
+      case SYNC:
+        /* falls through */
+      default:
+        return Z_STREAM_ERROR;
+    }
+  }
+
+  // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
+
+  /*
+     Return from inflate(), updating the total counts and the check value.
+     If there was no progress during the inflate() call, return a buffer
+     error.  Call updatewindow() to create and/or update the window state.
+     Note: a memory error from inflate() is non-recoverable.
+   */
+
+  //--- RESTORE() ---
+  strm.next_out = put;
+  strm.avail_out = left;
+  strm.next_in = next;
+  strm.avail_in = have;
+  state.hold = hold;
+  state.bits = bits;
+  //---
+
+  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
+                      (state.mode < CHECK || flush !== Z_FINISH))) {
+    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
+      state.mode = MEM;
+      return Z_MEM_ERROR;
+    }
+  }
+  _in -= strm.avail_in;
+  _out -= strm.avail_out;
+  strm.total_in += _in;
+  strm.total_out += _out;
+  state.total += _out;
+  if (state.wrap && _out) {
+    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
+      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
+  }
+  strm.data_type = state.bits + (state.last ? 64 : 0) +
+                    (state.mode === TYPE ? 128 : 0) +
+                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
+  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
+    ret = Z_BUF_ERROR;
+  }
+  return ret;
+}
+
+function inflateEnd(strm) {
+
+  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  var state = strm.state;
+  if (state.window) {
+    state.window = null;
+  }
+  strm.state = null;
+  return Z_OK;
+}
+
+function inflateGetHeader(strm, head) {
+  var state;
+
+  /* check state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }
+
+  /* save header structure */
+  state.head = head;
+  head.done = false;
+  return Z_OK;
+}
+
+function inflateSetDictionary(strm, dictionary) {
+  var dictLength = dictionary.length;
+
+  var state;
+  var dictid;
+  var ret;
+
+  /* check state */
+  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }
+  state = strm.state;
+
+  if (state.wrap !== 0 && state.mode !== DICT) {
+    return Z_STREAM_ERROR;
+  }
+
+  /* check for correct dictionary identifier */
+  if (state.mode === DICT) {
+    dictid = 1; /* adler32(0, null, 0)*/
+    /* dictid = adler32(dictid, dictionary, dictLength); */
+    dictid = adler32(dictid, dictionary, dictLength, 0);
+    if (dictid !== state.check) {
+      return Z_DATA_ERROR;
+    }
+  }
+  /* copy dictionary to window using updatewindow(), which will amend the
+   existing dictionary if appropriate */
+  ret = updatewindow(strm, dictionary, dictLength, dictLength);
+  if (ret) {
+    state.mode = MEM;
+    return Z_MEM_ERROR;
+  }
+  state.havedict = 1;
+  // Tracev((stderr, "inflate:   dictionary set\n"));
+  return Z_OK;
+}
+
+exports.inflateReset = inflateReset;
+exports.inflateReset2 = inflateReset2;
+exports.inflateResetKeep = inflateResetKeep;
+exports.inflateInit = inflateInit;
+exports.inflateInit2 = inflateInit2;
+exports.inflate = inflate;
+exports.inflateEnd = inflateEnd;
+exports.inflateGetHeader = inflateGetHeader;
+exports.inflateSetDictionary = inflateSetDictionary;
+exports.inflateInfo = 'pako inflate (from Nodeca project)';
+
+/* Not implemented
+exports.inflateCopy = inflateCopy;
+exports.inflateGetDictionary = inflateGetDictionary;
+exports.inflateMark = inflateMark;
+exports.inflatePrime = inflatePrime;
+exports.inflateSync = inflateSync;
+exports.inflateSyncPoint = inflateSyncPoint;
+exports.inflateUndermine = inflateUndermine;
+*/
+
+
+/***/ }),
+/* 158 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+// See state defs from inflate.js
+var BAD = 30;       /* got a data error -- remain here until reset */
+var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+
+/*
+   Decode literal, length, and distance codes and write out the resulting
+   literal and match bytes until either not enough input or output is
+   available, an end-of-block is encountered, or a data error is encountered.
+   When large enough input and output buffers are supplied to inflate(), for
+   example, a 16K input buffer and a 64K output buffer, more than 95% of the
+   inflate execution time is spent in this routine.
+
+   Entry assumptions:
+
+        state.mode === LEN
+        strm.avail_in >= 6
+        strm.avail_out >= 258
+        start >= strm.avail_out
+        state.bits < 8
+
+   On return, state.mode is one of:
+
+        LEN -- ran out of enough output space or enough available input
+        TYPE -- reached end of block code, inflate() to interpret next block
+        BAD -- error in block data
+
+   Notes:
+
+    - The maximum input bits used by a length/distance pair is 15 bits for the
+      length code, 5 bits for the length extra, 15 bits for the distance code,
+      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
+      Therefore if strm.avail_in >= 6, then there is enough input to avoid
+      checking for available input while decoding.
+
+    - The maximum bytes that a single length/distance pair can output is 258
+      bytes, which is the maximum length that can be coded.  inflate_fast()
+      requires strm.avail_out >= 258 for each loop to avoid checking for
+      output space.
+ */
+module.exports = function inflate_fast(strm, start) {
+  var state;
+  var _in;                    /* local strm.input */
+  var last;                   /* have enough input while in < last */
+  var _out;                   /* local strm.output */
+  var beg;                    /* inflate()'s initial strm.output */
+  var end;                    /* while out < end, enough space available */
+//#ifdef INFLATE_STRICT
+  var dmax;                   /* maximum distance from zlib header */
+//#endif
+  var wsize;                  /* window size or zero if not using window */
+  var whave;                  /* valid bytes in the window */
+  var wnext;                  /* window write index */
+  // Use `s_window` instead `window`, avoid conflict with instrumentation tools
+  var s_window;               /* allocated sliding window, if wsize != 0 */
+  var hold;                   /* local strm.hold */
+  var bits;                   /* local strm.bits */
+  var lcode;                  /* local strm.lencode */
+  var dcode;                  /* local strm.distcode */
+  var lmask;                  /* mask for first level of length codes */
+  var dmask;                  /* mask for first level of distance codes */
+  var here;                   /* retrieved table entry */
+  var op;                     /* code bits, operation, extra bits, or */
+                              /*  window position, window bytes to copy */
+  var len;                    /* match length, unused bytes */
+  var dist;                   /* match distance */
+  var from;                   /* where to copy match from */
+  var from_source;
+
+
+  var input, output; // JS specific, because we have no pointers
+
+  /* copy state to local variables */
+  state = strm.state;
+  //here = state.here;
+  _in = strm.next_in;
+  input = strm.input;
+  last = _in + (strm.avail_in - 5);
+  _out = strm.next_out;
+  output = strm.output;
+  beg = _out - (start - strm.avail_out);
+  end = _out + (strm.avail_out - 257);
+//#ifdef INFLATE_STRICT
+  dmax = state.dmax;
+//#endif
+  wsize = state.wsize;
+  whave = state.whave;
+  wnext = state.wnext;
+  s_window = state.window;
+  hold = state.hold;
+  bits = state.bits;
+  lcode = state.lencode;
+  dcode = state.distcode;
+  lmask = (1 << state.lenbits) - 1;
+  dmask = (1 << state.distbits) - 1;
+
+
+  /* decode literals and length/distances until end-of-block or not enough
+     input data or output space */
+
+  top:
+  do {
+    if (bits < 15) {
+      hold += input[_in++] << bits;
+      bits += 8;
+      hold += input[_in++] << bits;
+      bits += 8;
+    }
+
+    here = lcode[hold & lmask];
+
+    dolen:
+    for (;;) { // Goto emulation
+      op = here >>> 24/*here.bits*/;
+      hold >>>= op;
+      bits -= op;
+      op = (here >>> 16) & 0xff/*here.op*/;
+      if (op === 0) {                          /* literal */
+        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+        //        "inflate:         literal '%c'\n" :
+        //        "inflate:         literal 0x%02x\n", here.val));
+        output[_out++] = here & 0xffff/*here.val*/;
+      }
+      else if (op & 16) {                     /* length base */
+        len = here & 0xffff/*here.val*/;
+        op &= 15;                           /* number of extra bits */
+        if (op) {
+          if (bits < op) {
+            hold += input[_in++] << bits;
+            bits += 8;
+          }
+          len += hold & ((1 << op) - 1);
+          hold >>>= op;
+          bits -= op;
+        }
+        //Tracevv((stderr, "inflate:         length %u\n", len));
+        if (bits < 15) {
+          hold += input[_in++] << bits;
+          bits += 8;
+          hold += input[_in++] << bits;
+          bits += 8;
+        }
+        here = dcode[hold & dmask];
+
+        dodist:
+        for (;;) { // goto emulation
+          op = here >>> 24/*here.bits*/;
+          hold >>>= op;
+          bits -= op;
+          op = (here >>> 16) & 0xff/*here.op*/;
+
+          if (op & 16) {                      /* distance base */
+            dist = here & 0xffff/*here.val*/;
+            op &= 15;                       /* number of extra bits */
+            if (bits < op) {
+              hold += input[_in++] << bits;
+              bits += 8;
+              if (bits < op) {
+                hold += input[_in++] << bits;
+                bits += 8;
+              }
+            }
+            dist += hold & ((1 << op) - 1);
+//#ifdef INFLATE_STRICT
+            if (dist > dmax) {
+              strm.msg = 'invalid distance too far back';
+              state.mode = BAD;
+              break top;
+            }
+//#endif
+            hold >>>= op;
+            bits -= op;
+            //Tracevv((stderr, "inflate:         distance %u\n", dist));
+            op = _out - beg;                /* max distance in output */
+            if (dist > op) {                /* see if copy from window */
+              op = dist - op;               /* distance back in window */
+              if (op > whave) {
+                if (state.sane) {
+                  strm.msg = 'invalid distance too far back';
+                  state.mode = BAD;
+                  break top;
+                }
+
+// (!) This block is disabled in zlib defaults,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//                if (len <= op - whave) {
+//                  do {
+//                    output[_out++] = 0;
+//                  } while (--len);
+//                  continue top;
+//                }
+//                len -= op - whave;
+//                do {
+//                  output[_out++] = 0;
+//                } while (--op > whave);
+//                if (op === 0) {
+//                  from = _out - dist;
+//                  do {
+//                    output[_out++] = output[from++];
+//                  } while (--len);
+//                  continue top;
+//                }
+//#endif
+              }
+              from = 0; // window index
+              from_source = s_window;
+              if (wnext === 0) {           /* very common case */
+                from += wsize - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = s_window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              else if (wnext < op) {      /* wrap around window */
+                from += wsize + wnext - op;
+                op -= wnext;
+                if (op < len) {         /* some from end of window */
+                  len -= op;
+                  do {
+                    output[_out++] = s_window[from++];
+                  } while (--op);
+                  from = 0;
+                  if (wnext < len) {  /* some from start of window */
+                    op = wnext;
+                    len -= op;
+                    do {
+                      output[_out++] = s_window[from++];
+                    } while (--op);
+                    from = _out - dist;      /* rest from output */
+                    from_source = output;
+                  }
+                }
+              }
+              else {                      /* contiguous in window */
+                from += wnext - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = s_window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              while (len > 2) {
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                len -= 3;
+              }
+              if (len) {
+                output[_out++] = from_source[from++];
+                if (len > 1) {
+                  output[_out++] = from_source[from++];
+                }
+              }
+            }
+            else {
+              from = _out - dist;          /* copy direct from output */
+              do {                        /* minimum length is three */
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                len -= 3;
+              } while (len > 2);
+              if (len) {
+                output[_out++] = output[from++];
+                if (len > 1) {
+                  output[_out++] = output[from++];
+                }
+              }
+            }
+          }
+          else if ((op & 64) === 0) {          /* 2nd level distance code */
+            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+            continue dodist;
+          }
+          else {
+            strm.msg = 'invalid distance code';
+            state.mode = BAD;
+            break top;
+          }
+
+          break; // need to emulate goto via "continue"
+        }
+      }
+      else if ((op & 64) === 0) {              /* 2nd level length code */
+        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+        continue dolen;
+      }
+      else if (op & 32) {                     /* end-of-block */
+        //Tracevv((stderr, "inflate:         end of block\n"));
+        state.mode = TYPE;
+        break top;
+      }
+      else {
+        strm.msg = 'invalid literal/length code';
+        state.mode = BAD;
+        break top;
+      }
+
+      break; // need to emulate goto via "continue"
+    }
+  } while (_in < last && _out < end);
+
+  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
+  len = bits >> 3;
+  _in -= len;
+  bits -= len << 3;
+  hold &= (1 << bits) - 1;
+
+  /* update state and return */
+  strm.next_in = _in;
+  strm.next_out = _out;
+  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
+  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
+  state.hold = hold;
+  state.bits = bits;
+  return;
+};
+
+
+/***/ }),
+/* 159 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils = __webpack_require__(34);
+
+var MAXBITS = 15;
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+var lbase = [ /* Length codes 257..285 base */
+  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
+  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
+];
+
+var lext = [ /* Length codes 257..285 extra */
+  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
+  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
+];
+
+var dbase = [ /* Distance codes 0..29 base */
+  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
+  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
+  8193, 12289, 16385, 24577, 0, 0
+];
+
+var dext = [ /* Distance codes 0..29 extra */
+  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
+  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
+  28, 28, 29, 29, 64, 64
+];
+
+module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
+{
+  var bits = opts.bits;
+      //here = opts.here; /* table entry for duplication */
+
+  var len = 0;               /* a code's length in bits */
+  var sym = 0;               /* index of code symbols */
+  var min = 0, max = 0;          /* minimum and maximum code lengths */
+  var root = 0;              /* number of index bits for root table */
+  var curr = 0;              /* number of index bits for current table */
+  var drop = 0;              /* code bits to drop for sub-table */
+  var left = 0;                   /* number of prefix codes available */
+  var used = 0;              /* code entries in table used */
+  var huff = 0;              /* Huffman code */
+  var incr;              /* for incrementing code, index */
+  var fill;              /* index for replicating entries */
+  var low;               /* low bits for current root entry */
+  var mask;              /* mask for low root bits */
+  var next;             /* next available space in table */
+  var base = null;     /* base value table to use */
+  var base_index = 0;
+//  var shoextra;    /* extra bits table to use */
+  var end;                    /* use base and extra for symbol > end */
+  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */
+  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */
+  var extra = null;
+  var extra_index = 0;
+
+  var here_bits, here_op, here_val;
+
+  /*
+   Process a set of code lengths to create a canonical Huffman code.  The
+   code lengths are lens[0..codes-1].  Each length corresponds to the
+   symbols 0..codes-1.  The Huffman code is generated by first sorting the
+   symbols by length from short to long, and retaining the symbol order
+   for codes with equal lengths.  Then the code starts with all zero bits
+   for the first code of the shortest length, and the codes are integer
+   increments for the same length, and zeros are appended as the length
+   increases.  For the deflate format, these bits are stored backwards
+   from their more natural integer increment ordering, and so when the
+   decoding tables are built in the large loop below, the integer codes
+   are incremented backwards.
+
+   This routine assumes, but does not check, that all of the entries in
+   lens[] are in the range 0..MAXBITS.  The caller must assure this.
+   1..MAXBITS is interpreted as that code length.  zero means that that
+   symbol does not occur in this code.
+
+   The codes are sorted by computing a count of codes for each length,
+   creating from that a table of starting indices for each length in the
+   sorted table, and then entering the symbols in order in the sorted
+   table.  The sorted table is work[], with that space being provided by
+   the caller.
+
+   The length counts are used for other purposes as well, i.e. finding
+   the minimum and maximum length codes, determining if there are any
+   codes at all, checking for a valid set of lengths, and looking ahead
+   at length counts to determine sub-table sizes when building the
+   decoding tables.
+   */
+
+  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
+  for (len = 0; len <= MAXBITS; len++) {
+    count[len] = 0;
+  }
+  for (sym = 0; sym < codes; sym++) {
+    count[lens[lens_index + sym]]++;
+  }
+
+  /* bound code lengths, force root to be within code lengths */
+  root = bits;
+  for (max = MAXBITS; max >= 1; max--) {
+    if (count[max] !== 0) { break; }
+  }
+  if (root > max) {
+    root = max;
+  }
+  if (max === 0) {                     /* no symbols to code at all */
+    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
+    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
+    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+
+    //table.op[opts.table_index] = 64;
+    //table.bits[opts.table_index] = 1;
+    //table.val[opts.table_index++] = 0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+    opts.bits = 1;
+    return 0;     /* no symbols, but wait for decoding to report error */
+  }
+  for (min = 1; min < max; min++) {
+    if (count[min] !== 0) { break; }
+  }
+  if (root < min) {
+    root = min;
+  }
+
+  /* check for an over-subscribed or incomplete set of lengths */
+  left = 1;
+  for (len = 1; len <= MAXBITS; len++) {
+    left <<= 1;
+    left -= count[len];
+    if (left < 0) {
+      return -1;
+    }        /* over-subscribed */
+  }
+  if (left > 0 && (type === CODES || max !== 1)) {
+    return -1;                      /* incomplete set */
+  }
+
+  /* generate offsets into symbol table for each length for sorting */
+  offs[1] = 0;
+  for (len = 1; len < MAXBITS; len++) {
+    offs[len + 1] = offs[len] + count[len];
+  }
+
+  /* sort symbols by length, by symbol order within each length */
+  for (sym = 0; sym < codes; sym++) {
+    if (lens[lens_index + sym] !== 0) {
+      work[offs[lens[lens_index + sym]]++] = sym;
+    }
+  }
+
+  /*
+   Create and fill in decoding tables.  In this loop, the table being
+   filled is at next and has curr index bits.  The code being used is huff
+   with length len.  That code is converted to an index by dropping drop
+   bits off of the bottom.  For codes where len is less than drop + curr,
+   those top drop + curr - len bits are incremented through all values to
+   fill the table with replicated entries.
+
+   root is the number of index bits for the root table.  When len exceeds
+   root, sub-tables are created pointed to by the root entry with an index
+   of the low root bits of huff.  This is saved in low to check for when a
+   new sub-table should be started.  drop is zero when the root table is
+   being filled, and drop is root when sub-tables are being filled.
+
+   When a new sub-table is needed, it is necessary to look ahead in the
+   code lengths to determine what size sub-table is needed.  The length
+   counts are used for this, and so count[] is decremented as codes are
+   entered in the tables.
+
+   used keeps track of how many table entries have been allocated from the
+   provided *table space.  It is checked for LENS and DIST tables against
+   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
+   the initial root table size constants.  See the comments in inftrees.h
+   for more information.
+
+   sym increments through all symbols, and the loop terminates when
+   all codes of length max, i.e. all codes, have been processed.  This
+   routine permits incomplete codes, so another loop after this one fills
+   in the rest of the decoding tables with invalid code markers.
+   */
+
+  /* set up for code type */
+  // poor man optimization - use if-else instead of switch,
+  // to avoid deopts in old v8
+  if (type === CODES) {
+    base = extra = work;    /* dummy value--not used */
+    end = 19;
+
+  } else if (type === LENS) {
+    base = lbase;
+    base_index -= 257;
+    extra = lext;
+    extra_index -= 257;
+    end = 256;
+
+  } else {                    /* DISTS */
+    base = dbase;
+    extra = dext;
+    end = -1;
+  }
+
+  /* initialize opts for loop */
+  huff = 0;                   /* starting code */
+  sym = 0;                    /* starting code symbol */
+  len = min;                  /* starting code length */
+  next = table_index;              /* current table to fill in */
+  curr = root;                /* current table index bits */
+  drop = 0;                   /* current bits to drop from code for index */
+  low = -1;                   /* trigger new sub-table when len > root */
+  used = 1 << root;          /* use root table entries */
+  mask = used - 1;            /* mask for comparing low */
+
+  /* check available table space */
+  if ((type === LENS && used > ENOUGH_LENS) ||
+    (type === DISTS && used > ENOUGH_DISTS)) {
+    return 1;
+  }
+
+  /* process all codes and make table entries */
+  for (;;) {
+    /* create table entry */
+    here_bits = len - drop;
+    if (work[sym] < end) {
+      here_op = 0;
+      here_val = work[sym];
+    }
+    else if (work[sym] > end) {
+      here_op = extra[extra_index + work[sym]];
+      here_val = base[base_index + work[sym]];
+    }
+    else {
+      here_op = 32 + 64;         /* end of block */
+      here_val = 0;
+    }
+
+    /* replicate for those indices with low len bits equal to huff */
+    incr = 1 << (len - drop);
+    fill = 1 << curr;
+    min = fill;                 /* save offset to next table */
+    do {
+      fill -= incr;
+      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
+    } while (fill !== 0);
+
+    /* backwards increment the len-bit code huff */
+    incr = 1 << (len - 1);
+    while (huff & incr) {
+      incr >>= 1;
+    }
+    if (incr !== 0) {
+      huff &= incr - 1;
+      huff += incr;
+    } else {
+      huff = 0;
+    }
+
+    /* go to next symbol, update count, len */
+    sym++;
+    if (--count[len] === 0) {
+      if (len === max) { break; }
+      len = lens[lens_index + work[sym]];
+    }
+
+    /* create new sub-table if needed */
+    if (len > root && (huff & mask) !== low) {
+      /* if first time, transition to sub-tables */
+      if (drop === 0) {
+        drop = root;
+      }
+
+      /* increment past last table */
+      next += min;            /* here min is 1 << curr */
+
+      /* determine length of next table */
+      curr = len - drop;
+      left = 1 << curr;
+      while (curr + drop < max) {
+        left -= count[curr + drop];
+        if (left <= 0) { break; }
+        curr++;
+        left <<= 1;
+      }
+
+      /* check for enough space */
+      used += 1 << curr;
+      if ((type === LENS && used > ENOUGH_LENS) ||
+        (type === DISTS && used > ENOUGH_DISTS)) {
+        return 1;
+      }
+
+      /* point entry in root table to sub-table */
+      low = huff & mask;
+      /*table.op[low] = curr;
+      table.bits[low] = root;
+      table.val[low] = next - opts.table_index;*/
+      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
+    }
+  }
+
+  /* fill in remaining table entry if code is incomplete (guaranteed to have
+   at most one remaining entry, since if the code is incomplete, the
+   maximum code length that was allowed to get this far is one bit) */
+  if (huff !== 0) {
+    //table.op[next + huff] = 64;            /* invalid code marker */
+    //table.bits[next + huff] = len - drop;
+    //table.val[next + huff] = 0;
+    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
+  }
+
+  /* set return parameters */
+  //opts.table_index += used;
+  opts.bits = root;
+  return 0;
+};
+
+
+/***/ }),
+/* 160 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+module.exports = {
+
+  /* Allowed flush values; see deflate() and inflate() below for details */
+  Z_NO_FLUSH:         0,
+  Z_PARTIAL_FLUSH:    1,
+  Z_SYNC_FLUSH:       2,
+  Z_FULL_FLUSH:       3,
+  Z_FINISH:           4,
+  Z_BLOCK:            5,
+  Z_TREES:            6,
+
+  /* Return codes for the compression/decompression functions. Negative values
+  * are errors, positive values are used for special but normal events.
+  */
+  Z_OK:               0,
+  Z_STREAM_END:       1,
+  Z_NEED_DICT:        2,
+  Z_ERRNO:           -1,
+  Z_STREAM_ERROR:    -2,
+  Z_DATA_ERROR:      -3,
+  //Z_MEM_ERROR:     -4,
+  Z_BUF_ERROR:       -5,
+  //Z_VERSION_ERROR: -6,
+
+  /* compression levels */
+  Z_NO_COMPRESSION:         0,
+  Z_BEST_SPEED:             1,
+  Z_BEST_COMPRESSION:       9,
+  Z_DEFAULT_COMPRESSION:   -1,
+
+
+  Z_FILTERED:               1,
+  Z_HUFFMAN_ONLY:           2,
+  Z_RLE:                    3,
+  Z_FIXED:                  4,
+  Z_DEFAULT_STRATEGY:       0,
+
+  /* Possible values of the data_type field (though see inflate()) */
+  Z_BINARY:                 0,
+  Z_TEXT:                   1,
+  //Z_ASCII:                1, // = Z_TEXT (deprecated)
+  Z_UNKNOWN:                2,
+
+  /* The deflate compression method */
+  Z_DEFLATED:               8
+  //Z_NULL:                 null // Use -1 or null inline, depending on var type
+};
+
+
+/***/ }),
+/* 161 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.12.6
+
+/*
+PDFPage - represents a single page in the PDF document
+By Devon Govett
+ */
+
+(function() {
+  var PDFPage;
+
+  PDFPage = (function() {
+    var DEFAULT_MARGINS, SIZES;
+
+    function PDFPage(document, options) {
+      var dimensions;
+      this.document = document;
+      if (options == null) {
+        options = {};
+      }
+      this.size = options.size || 'letter';
+      this.layout = options.layout || 'portrait';
+      if (typeof options.margin === 'number') {
+        this.margins = {
+          top: options.margin,
+          left: options.margin,
+          bottom: options.margin,
+          right: options.margin
+        };
+      } else {
+        this.margins = options.margins || DEFAULT_MARGINS;
+      }
+      dimensions = Array.isArray(this.size) ? this.size : SIZES[this.size.toUpperCase()];
+      this.width = dimensions[this.layout === 'portrait' ? 0 : 1];
+      this.height = dimensions[this.layout === 'portrait' ? 1 : 0];
+      this.content = this.document.ref();
+      this.resources = this.document.ref({
+        ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']
+      });
+      Object.defineProperties(this, {
+        fonts: {
+          get: (function(_this) {
+            return function() {
+              var base;
+              return (base = _this.resources.data).Font != null ? base.Font : base.Font = {};
+            };
+          })(this)
+        },
+        xobjects: {
+          get: (function(_this) {
+            return function() {
+              var base;
+              return (base = _this.resources.data).XObject != null ? base.XObject : base.XObject = {};
+            };
+          })(this)
+        },
+        ext_gstates: {
+          get: (function(_this) {
+            return function() {
+              var base;
+              return (base = _this.resources.data).ExtGState != null ? base.ExtGState : base.ExtGState = {};
+            };
+          })(this)
+        },
+        patterns: {
+          get: (function(_this) {
+            return function() {
+              var base;
+              return (base = _this.resources.data).Pattern != null ? base.Pattern : base.Pattern = {};
+            };
+          })(this)
+        },
+        annotations: {
+          get: (function(_this) {
+            return function() {
+              var base;
+              return (base = _this.dictionary.data).Annots != null ? base.Annots : base.Annots = [];
+            };
+          })(this)
+        }
+      });
+      this.dictionary = this.document.ref({
+        Type: 'Page',
+        Parent: this.document._root.data.Pages,
+        MediaBox: [0, 0, this.width, this.height],
+        Contents: this.content,
+        Resources: this.resources
+      });
+    }
+
+    PDFPage.prototype.maxY = function() {
+      return this.height - this.margins.bottom;
+    };
+
+    PDFPage.prototype.write = function(chunk) {
+      return this.content.write(chunk);
+    };
+
+    PDFPage.prototype.end = function() {
+      this.dictionary.end();
+      this.resources.end();
+      return this.content.end();
+    };
+
+    DEFAULT_MARGINS = {
+      top: 72,
+      left: 72,
+      bottom: 72,
+      right: 72
+    };
+
+    SIZES = {
+      '4A0': [4767.87, 6740.79],
+      '2A0': [3370.39, 4767.87],
+      A0: [2383.94, 3370.39],
+      A1: [1683.78, 2383.94],
+      A2: [1190.55, 1683.78],
+      A3: [841.89, 1190.55],
+      A4: [595.28, 841.89],
+      A5: [419.53, 595.28],
+      A6: [297.64, 419.53],
+      A7: [209.76, 297.64],
+      A8: [147.40, 209.76],
+      A9: [104.88, 147.40],
+      A10: [73.70, 104.88],
+      B0: [2834.65, 4008.19],
+      B1: [2004.09, 2834.65],
+      B2: [1417.32, 2004.09],
+      B3: [1000.63, 1417.32],
+      B4: [708.66, 1000.63],
+      B5: [498.90, 708.66],
+      B6: [354.33, 498.90],
+      B7: [249.45, 354.33],
+      B8: [175.75, 249.45],
+      B9: [124.72, 175.75],
+      B10: [87.87, 124.72],
+      C0: [2599.37, 3676.54],
+      C1: [1836.85, 2599.37],
+      C2: [1298.27, 1836.85],
+      C3: [918.43, 1298.27],
+      C4: [649.13, 918.43],
+      C5: [459.21, 649.13],
+      C6: [323.15, 459.21],
+      C7: [229.61, 323.15],
+      C8: [161.57, 229.61],
+      C9: [113.39, 161.57],
+      C10: [79.37, 113.39],
+      RA0: [2437.80, 3458.27],
+      RA1: [1729.13, 2437.80],
+      RA2: [1218.90, 1729.13],
+      RA3: [864.57, 1218.90],
+      RA4: [609.45, 864.57],
+      SRA0: [2551.18, 3628.35],
+      SRA1: [1814.17, 2551.18],
+      SRA2: [1275.59, 1814.17],
+      SRA3: [907.09, 1275.59],
+      SRA4: [637.80, 907.09],
+      EXECUTIVE: [521.86, 756.00],
+      FOLIO: [612.00, 936.00],
+      LEGAL: [612.00, 1008.00],
+      LETTER: [612.00, 792.00],
+      TABLOID: [792.00, 1224.00]
+    };
+
+    return PDFPage;
+
+  })();
+
+  module.exports = PDFPage;
+
+}).call(this);
+
+
+/***/ }),
+/* 162 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var PDFGradient, PDFLinearGradient, PDFRadialGradient, namedColors, ref;
+
+  ref = __webpack_require__(163), PDFGradient = ref.PDFGradient, PDFLinearGradient = ref.PDFLinearGradient, PDFRadialGradient = ref.PDFRadialGradient;
+
+  module.exports = {
+    initColor: function() {
+      this._opacityRegistry = {};
+      this._opacityCount = 0;
+      return this._gradCount = 0;
+    },
+    _normalizeColor: function(color) {
+      var hex, part;
+      if (color instanceof PDFGradient) {
+        return color;
+      }
+      if (typeof color === 'string') {
+        if (color.charAt(0) === '#') {
+          if (color.length === 4) {
+            color = color.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i, "#$1$1$2$2$3$3");
+          }
+          hex = parseInt(color.slice(1), 16);
+          color = [hex >> 16, hex >> 8 & 0xff, hex & 0xff];
+        } else if (namedColors[color]) {
+          color = namedColors[color];
+        }
+      }
+      if (Array.isArray(color)) {
+        if (color.length === 3) {
+          color = (function() {
+            var i, len, results;
+            results = [];
+            for (i = 0, len = color.length; i < len; i++) {
+              part = color[i];
+              results.push(part / 255);
+            }
+            return results;
+          })();
+        } else if (color.length === 4) {
+          color = (function() {
+            var i, len, results;
+            results = [];
+            for (i = 0, len = color.length; i < len; i++) {
+              part = color[i];
+              results.push(part / 100);
+            }
+            return results;
+          })();
+        }
+        return color;
+      }
+      return null;
+    },
+    _setColor: function(color, stroke) {
+      var op, space;
+      color = this._normalizeColor(color);
+      if (!color) {
+        return false;
+      }
+      op = stroke ? 'SCN' : 'scn';
+      if (color instanceof PDFGradient) {
+        this._setColorSpace('Pattern', stroke);
+        color.apply(op);
+      } else {
+        space = color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB';
+        this._setColorSpace(space, stroke);
+        color = color.join(' ');
+        this.addContent(color + " " + op);
+      }
+      return true;
+    },
+    _setColorSpace: function(space, stroke) {
+      var op;
+      op = stroke ? 'CS' : 'cs';
+      return this.addContent("/" + space + " " + op);
+    },
+    fillColor: function(color, opacity) {
+      var set;
+      set = this._setColor(color, false);
+      if (set) {
+        this.fillOpacity(opacity);
+      }
+      this._fillColor = [color, opacity];
+      return this;
+    },
+    strokeColor: function(color, opacity) {
+      var set;
+      set = this._setColor(color, true);
+      if (set) {
+        this.strokeOpacity(opacity);
+      }
+      return this;
+    },
+    opacity: function(opacity) {
+      this._doOpacity(opacity, opacity);
+      return this;
+    },
+    fillOpacity: function(opacity) {
+      this._doOpacity(opacity, null);
+      return this;
+    },
+    strokeOpacity: function(opacity) {
+      this._doOpacity(null, opacity);
+      return this;
+    },
+    _doOpacity: function(fillOpacity, strokeOpacity) {
+      var dictionary, id, key, name, ref1;
+      if (!((fillOpacity != null) || (strokeOpacity != null))) {
+        return;
+      }
+      if (fillOpacity != null) {
+        fillOpacity = Math.max(0, Math.min(1, fillOpacity));
+      }
+      if (strokeOpacity != null) {
+        strokeOpacity = Math.max(0, Math.min(1, strokeOpacity));
+      }
+      key = fillOpacity + "_" + strokeOpacity;
+      if (this._opacityRegistry[key]) {
+        ref1 = this._opacityRegistry[key], dictionary = ref1[0], name = ref1[1];
+      } else {
+        dictionary = {
+          Type: 'ExtGState'
+        };
+        if (fillOpacity != null) {
+          dictionary.ca = fillOpacity;
+        }
+        if (strokeOpacity != null) {
+          dictionary.CA = strokeOpacity;
+        }
+        dictionary = this.ref(dictionary);
+        dictionary.end();
+        id = ++this._opacityCount;
+        name = "Gs" + id;
+        this._opacityRegistry[key] = [dictionary, name];
+      }
+      this.page.ext_gstates[name] = dictionary;
+      return this.addContent("/" + name + " gs");
+    },
+    linearGradient: function(x1, y1, x2, y2) {
+      return new PDFLinearGradient(this, x1, y1, x2, y2);
+    },
+    radialGradient: function(x1, y1, r1, x2, y2, r2) {
+      return new PDFRadialGradient(this, x1, y1, r1, x2, y2, r2);
+    }
+  };
+
+  namedColors = {
+    aliceblue: [240, 248, 255],
+    antiquewhite: [250, 235, 215],
+    aqua: [0, 255, 255],
+    aquamarine: [127, 255, 212],
+    azure: [240, 255, 255],
+    beige: [245, 245, 220],
+    bisque: [255, 228, 196],
+    black: [0, 0, 0],
+    blanchedalmond: [255, 235, 205],
+    blue: [0, 0, 255],
+    blueviolet: [138, 43, 226],
+    brown: [165, 42, 42],
+    burlywood: [222, 184, 135],
+    cadetblue: [95, 158, 160],
+    chartreuse: [127, 255, 0],
+    chocolate: [210, 105, 30],
+    coral: [255, 127, 80],
+    cornflowerblue: [100, 149, 237],
+    cornsilk: [255, 248, 220],
+    crimson: [220, 20, 60],
+    cyan: [0, 255, 255],
+    darkblue: [0, 0, 139],
+    darkcyan: [0, 139, 139],
+    darkgoldenrod: [184, 134, 11],
+    darkgray: [169, 169, 169],
+    darkgreen: [0, 100, 0],
+    darkgrey: [169, 169, 169],
+    darkkhaki: [189, 183, 107],
+    darkmagenta: [139, 0, 139],
+    darkolivegreen: [85, 107, 47],
+    darkorange: [255, 140, 0],
+    darkorchid: [153, 50, 204],
+    darkred: [139, 0, 0],
+    darksalmon: [233, 150, 122],
+    darkseagreen: [143, 188, 143],
+    darkslateblue: [72, 61, 139],
+    darkslategray: [47, 79, 79],
+    darkslategrey: [47, 79, 79],
+    darkturquoise: [0, 206, 209],
+    darkviolet: [148, 0, 211],
+    deeppink: [255, 20, 147],
+    deepskyblue: [0, 191, 255],
+    dimgray: [105, 105, 105],
+    dimgrey: [105, 105, 105],
+    dodgerblue: [30, 144, 255],
+    firebrick: [178, 34, 34],
+    floralwhite: [255, 250, 240],
+    forestgreen: [34, 139, 34],
+    fuchsia: [255, 0, 255],
+    gainsboro: [220, 220, 220],
+    ghostwhite: [248, 248, 255],
+    gold: [255, 215, 0],
+    goldenrod: [218, 165, 32],
+    gray: [128, 128, 128],
+    grey: [128, 128, 128],
+    green: [0, 128, 0],
+    greenyellow: [173, 255, 47],
+    honeydew: [240, 255, 240],
+    hotpink: [255, 105, 180],
+    indianred: [205, 92, 92],
+    indigo: [75, 0, 130],
+    ivory: [255, 255, 240],
+    khaki: [240, 230, 140],
+    lavender: [230, 230, 250],
+    lavenderblush: [255, 240, 245],
+    lawngreen: [124, 252, 0],
+    lemonchiffon: [255, 250, 205],
+    lightblue: [173, 216, 230],
+    lightcoral: [240, 128, 128],
+    lightcyan: [224, 255, 255],
+    lightgoldenrodyellow: [250, 250, 210],
+    lightgray: [211, 211, 211],
+    lightgreen: [144, 238, 144],
+    lightgrey: [211, 211, 211],
+    lightpink: [255, 182, 193],
+    lightsalmon: [255, 160, 122],
+    lightseagreen: [32, 178, 170],
+    lightskyblue: [135, 206, 250],
+    lightslategray: [119, 136, 153],
+    lightslategrey: [119, 136, 153],
+    lightsteelblue: [176, 196, 222],
+    lightyellow: [255, 255, 224],
+    lime: [0, 255, 0],
+    limegreen: [50, 205, 50],
+    linen: [250, 240, 230],
+    magenta: [255, 0, 255],
+    maroon: [128, 0, 0],
+    mediumaquamarine: [102, 205, 170],
+    mediumblue: [0, 0, 205],
+    mediumorchid: [186, 85, 211],
+    mediumpurple: [147, 112, 219],
+    mediumseagreen: [60, 179, 113],
+    mediumslateblue: [123, 104, 238],
+    mediumspringgreen: [0, 250, 154],
+    mediumturquoise: [72, 209, 204],
+    mediumvioletred: [199, 21, 133],
+    midnightblue: [25, 25, 112],
+    mintcream: [245, 255, 250],
+    mistyrose: [255, 228, 225],
+    moccasin: [255, 228, 181],
+    navajowhite: [255, 222, 173],
+    navy: [0, 0, 128],
+    oldlace: [253, 245, 230],
+    olive: [128, 128, 0],
+    olivedrab: [107, 142, 35],
+    orange: [255, 165, 0],
+    orangered: [255, 69, 0],
+    orchid: [218, 112, 214],
+    palegoldenrod: [238, 232, 170],
+    palegreen: [152, 251, 152],
+    paleturquoise: [175, 238, 238],
+    palevioletred: [219, 112, 147],
+    papayawhip: [255, 239, 213],
+    peachpuff: [255, 218, 185],
+    peru: [205, 133, 63],
+    pink: [255, 192, 203],
+    plum: [221, 160, 221],
+    powderblue: [176, 224, 230],
+    purple: [128, 0, 128],
+    red: [255, 0, 0],
+    rosybrown: [188, 143, 143],
+    royalblue: [65, 105, 225],
+    saddlebrown: [139, 69, 19],
+    salmon: [250, 128, 114],
+    sandybrown: [244, 164, 96],
+    seagreen: [46, 139, 87],
+    seashell: [255, 245, 238],
+    sienna: [160, 82, 45],
+    silver: [192, 192, 192],
+    skyblue: [135, 206, 235],
+    slateblue: [106, 90, 205],
+    slategray: [112, 128, 144],
+    slategrey: [112, 128, 144],
+    snow: [255, 250, 250],
+    springgreen: [0, 255, 127],
+    steelblue: [70, 130, 180],
+    tan: [210, 180, 140],
+    teal: [0, 128, 128],
+    thistle: [216, 191, 216],
+    tomato: [255, 99, 71],
+    turquoise: [64, 224, 208],
+    violet: [238, 130, 238],
+    wheat: [245, 222, 179],
+    white: [255, 255, 255],
+    whitesmoke: [245, 245, 245],
+    yellow: [255, 255, 0],
+    yellowgreen: [154, 205, 50]
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 163 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var PDFGradient, PDFLinearGradient, PDFRadialGradient,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  PDFGradient = (function() {
+    function PDFGradient(doc) {
+      this.doc = doc;
+      this.stops = [];
+      this.embedded = false;
+      this.transform = [1, 0, 0, 1, 0, 0];
+      this._colorSpace = 'DeviceRGB';
+    }
+
+    PDFGradient.prototype.stop = function(pos, color, opacity) {
+      if (opacity == null) {
+        opacity = 1;
+      }
+      opacity = Math.max(0, Math.min(1, opacity));
+      this.stops.push([pos, this.doc._normalizeColor(color), opacity]);
+      return this;
+    };
+
+    PDFGradient.prototype.setTransform = function(m11, m12, m21, m22, dx, dy) {
+      this.transform = [m11, m12, m21, m22, dx, dy];
+      return this;
+    };
+
+    PDFGradient.prototype.embed = function(m) {
+      var bounds, encode, fn, form, grad, gstate, i, j, k, last, len, opacityPattern, pageBBox, pattern, ref, ref1, shader, stop, stops, v;
+      if (this.stops.length === 0) {
+        return;
+      }
+      this.embedded = true;
+      this.matrix = m;
+      last = this.stops[this.stops.length - 1];
+      if (last[0] < 1) {
+        this.stops.push([1, last[1], last[2]]);
+      }
+      bounds = [];
+      encode = [];
+      stops = [];
+      for (i = j = 0, ref = this.stops.length - 1; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        encode.push(0, 1);
+        if (i + 2 !== this.stops.length) {
+          bounds.push(this.stops[i + 1][0]);
+        }
+        fn = this.doc.ref({
+          FunctionType: 2,
+          Domain: [0, 1],
+          C0: this.stops[i + 0][1],
+          C1: this.stops[i + 1][1],
+          N: 1
+        });
+        stops.push(fn);
+        fn.end();
+      }
+      if (stops.length === 1) {
+        fn = stops[0];
+      } else {
+        fn = this.doc.ref({
+          FunctionType: 3,
+          Domain: [0, 1],
+          Functions: stops,
+          Bounds: bounds,
+          Encode: encode
+        });
+        fn.end();
+      }
+      this.id = 'Sh' + (++this.doc._gradCount);
+      shader = this.shader(fn);
+      shader.end();
+      pattern = this.doc.ref({
+        Type: 'Pattern',
+        PatternType: 2,
+        Shading: shader,
+        Matrix: (function() {
+          var k, len, ref1, results;
+          ref1 = this.matrix;
+          results = [];
+          for (k = 0, len = ref1.length; k < len; k++) {
+            v = ref1[k];
+            results.push(+v.toFixed(5));
+          }
+          return results;
+        }).call(this)
+      });
+      pattern.end();
+      if (this.stops.some(function(stop) {
+        return stop[2] < 1;
+      })) {
+        grad = this.opacityGradient();
+        grad._colorSpace = 'DeviceGray';
+        ref1 = this.stops;
+        for (k = 0, len = ref1.length; k < len; k++) {
+          stop = ref1[k];
+          grad.stop(stop[0], [stop[2]]);
+        }
+        grad = grad.embed(this.matrix);
+        pageBBox = [0, 0, this.doc.page.width, this.doc.page.height];
+        form = this.doc.ref({
+          Type: 'XObject',
+          Subtype: 'Form',
+          FormType: 1,
+          BBox: pageBBox,
+          Group: {
+            Type: 'Group',
+            S: 'Transparency',
+            CS: 'DeviceGray'
+          },
+          Resources: {
+            ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],
+            Pattern: {
+              Sh1: grad
+            }
+          }
+        });
+        form.write("/Pattern cs /Sh1 scn");
+        form.end((pageBBox.join(" ")) + " re f");
+        gstate = this.doc.ref({
+          Type: 'ExtGState',
+          SMask: {
+            Type: 'Mask',
+            S: 'Luminosity',
+            G: form
+          }
+        });
+        gstate.end();
+        opacityPattern = this.doc.ref({
+          Type: 'Pattern',
+          PatternType: 1,
+          PaintType: 1,
+          TilingType: 2,
+          BBox: pageBBox,
+          XStep: pageBBox[2],
+          YStep: pageBBox[3],
+          Resources: {
+            ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],
+            Pattern: {
+              Sh1: pattern
+            },
+            ExtGState: {
+              Gs1: gstate
+            }
+          }
+        });
+        opacityPattern.write("/Gs1 gs /Pattern cs /Sh1 scn");
+        opacityPattern.end((pageBBox.join(" ")) + " re f");
+        this.doc.page.patterns[this.id] = opacityPattern;
+      } else {
+        this.doc.page.patterns[this.id] = pattern;
+      }
+      return pattern;
+    };
+
+    PDFGradient.prototype.apply = function(op) {
+      var dx, dy, m, m0, m1, m11, m12, m2, m21, m22, m3, m4, m5, ref, ref1;
+      ref = this.doc._ctm.slice(), m0 = ref[0], m1 = ref[1], m2 = ref[2], m3 = ref[3], m4 = ref[4], m5 = ref[5];
+      ref1 = this.transform, m11 = ref1[0], m12 = ref1[1], m21 = ref1[2], m22 = ref1[3], dx = ref1[4], dy = ref1[5];
+      m = [m0 * m11 + m2 * m12, m1 * m11 + m3 * m12, m0 * m21 + m2 * m22, m1 * m21 + m3 * m22, m0 * dx + m2 * dy + m4, m1 * dx + m3 * dy + m5];
+      if (!(this.embedded && m.join(" ") === this.matrix.join(" "))) {
+        this.embed(m);
+      }
+      return this.doc.addContent("/" + this.id + " " + op);
+    };
+
+    return PDFGradient;
+
+  })();
+
+  PDFLinearGradient = (function(superClass) {
+    extend(PDFLinearGradient, superClass);
+
+    function PDFLinearGradient(doc, x1, y1, x2, y2) {
+      this.doc = doc;
+      this.x1 = x1;
+      this.y1 = y1;
+      this.x2 = x2;
+      this.y2 = y2;
+      PDFLinearGradient.__super__.constructor.apply(this, arguments);
+    }
+
+    PDFLinearGradient.prototype.shader = function(fn) {
+      return this.doc.ref({
+        ShadingType: 2,
+        ColorSpace: this._colorSpace,
+        Coords: [this.x1, this.y1, this.x2, this.y2],
+        Function: fn,
+        Extend: [true, true]
+      });
+    };
+
+    PDFLinearGradient.prototype.opacityGradient = function() {
+      return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2);
+    };
+
+    return PDFLinearGradient;
+
+  })(PDFGradient);
+
+  PDFRadialGradient = (function(superClass) {
+    extend(PDFRadialGradient, superClass);
+
+    function PDFRadialGradient(doc, x1, y1, r1, x2, y2, r2) {
+      this.doc = doc;
+      this.x1 = x1;
+      this.y1 = y1;
+      this.r1 = r1;
+      this.x2 = x2;
+      this.y2 = y2;
+      this.r2 = r2;
+      PDFRadialGradient.__super__.constructor.apply(this, arguments);
+    }
+
+    PDFRadialGradient.prototype.shader = function(fn) {
+      return this.doc.ref({
+        ShadingType: 3,
+        ColorSpace: this._colorSpace,
+        Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2],
+        Function: fn,
+        Extend: [true, true]
+      });
+    };
+
+    PDFRadialGradient.prototype.opacityGradient = function() {
+      return new PDFRadialGradient(this.doc, this.x1, this.y1, this.r1, this.x2, this.y2, this.r2);
+    };
+
+    return PDFRadialGradient;
+
+  })(PDFGradient);
+
+  module.exports = {
+    PDFGradient: PDFGradient,
+    PDFLinearGradient: PDFLinearGradient,
+    PDFRadialGradient: PDFRadialGradient
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 164 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var KAPPA, SVGPath, number,
+    slice = [].slice;
+
+  SVGPath = __webpack_require__(165);
+
+  number = __webpack_require__(26).number;
+
+  KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);
+
+  module.exports = {
+    initVector: function() {
+      this._ctm = [1, 0, 0, 1, 0, 0];
+      return this._ctmStack = [];
+    },
+    save: function() {
+      this._ctmStack.push(this._ctm.slice());
+      return this.addContent('q');
+    },
+    restore: function() {
+      this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0];
+      return this.addContent('Q');
+    },
+    closePath: function() {
+      return this.addContent('h');
+    },
+    lineWidth: function(w) {
+      return this.addContent((number(w)) + " w");
+    },
+    _CAP_STYLES: {
+      BUTT: 0,
+      ROUND: 1,
+      SQUARE: 2
+    },
+    lineCap: function(c) {
+      if (typeof c === 'string') {
+        c = this._CAP_STYLES[c.toUpperCase()];
+      }
+      return this.addContent(c + " J");
+    },
+    _JOIN_STYLES: {
+      MITER: 0,
+      ROUND: 1,
+      BEVEL: 2
+    },
+    lineJoin: function(j) {
+      if (typeof j === 'string') {
+        j = this._JOIN_STYLES[j.toUpperCase()];
+      }
+      return this.addContent(j + " j");
+    },
+    miterLimit: function(m) {
+      return this.addContent((number(m)) + " M");
+    },
+    dash: function(length, options) {
+      var phase, ref, space, v;
+      if (options == null) {
+        options = {};
+      }
+      if (length == null) {
+        return this;
+      }
+      if (Array.isArray(length)) {
+        length = ((function() {
+          var i, len, results;
+          results = [];
+          for (i = 0, len = length.length; i < len; i++) {
+            v = length[i];
+            results.push(number(v));
+          }
+          return results;
+        })()).join(' ');
+        phase = options.phase || 0;
+        return this.addContent("[" + length + "] " + (number(phase)) + " d");
+      } else {
+        space = (ref = options.space) != null ? ref : length;
+        phase = options.phase || 0;
+        return this.addContent("[" + (number(length)) + " " + (number(space)) + "] " + (number(phase)) + " d");
+      }
+    },
+    undash: function() {
+      return this.addContent("[] 0 d");
+    },
+    moveTo: function(x, y) {
+      return this.addContent((number(x)) + " " + (number(y)) + " m");
+    },
+    lineTo: function(x, y) {
+      return this.addContent((number(x)) + " " + (number(y)) + " l");
+    },
+    bezierCurveTo: function(cp1x, cp1y, cp2x, cp2y, x, y) {
+      return this.addContent((number(cp1x)) + " " + (number(cp1y)) + " " + (number(cp2x)) + " " + (number(cp2y)) + " " + (number(x)) + " " + (number(y)) + " c");
+    },
+    quadraticCurveTo: function(cpx, cpy, x, y) {
+      return this.addContent((number(cpx)) + " " + (number(cpy)) + " " + (number(x)) + " " + (number(y)) + " v");
+    },
+    rect: function(x, y, w, h) {
+      return this.addContent((number(x)) + " " + (number(y)) + " " + (number(w)) + " " + (number(h)) + " re");
+    },
+    roundedRect: function(x, y, w, h, r) {
+      var c;
+      if (r == null) {
+        r = 0;
+      }
+      r = Math.min(r, 0.5 * w, 0.5 * h);
+      c = r * (1.0 - KAPPA);
+      this.moveTo(x + r, y);
+      this.lineTo(x + w - r, y);
+      this.bezierCurveTo(x + w - c, y, x + w, y + c, x + w, y + r);
+      this.lineTo(x + w, y + h - r);
+      this.bezierCurveTo(x + w, y + h - c, x + w - c, y + h, x + w - r, y + h);
+      this.lineTo(x + r, y + h);
+      this.bezierCurveTo(x + c, y + h, x, y + h - c, x, y + h - r);
+      this.lineTo(x, y + r);
+      this.bezierCurveTo(x, y + c, x + c, y, x + r, y);
+      return this.closePath();
+    },
+    ellipse: function(x, y, r1, r2) {
+      var ox, oy, xe, xm, ye, ym;
+      if (r2 == null) {
+        r2 = r1;
+      }
+      x -= r1;
+      y -= r2;
+      ox = r1 * KAPPA;
+      oy = r2 * KAPPA;
+      xe = x + r1 * 2;
+      ye = y + r2 * 2;
+      xm = x + r1;
+      ym = y + r2;
+      this.moveTo(x, ym);
+      this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);
+      this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);
+      this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);
+      this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);
+      return this.closePath();
+    },
+    circle: function(x, y, radius) {
+      return this.ellipse(x, y, radius);
+    },
+    arc: function(x, y, radius, startAngle, endAngle, anticlockwise) {
+      var HALF_PI, TWO_PI, ax, ay, cp1x, cp1y, cp2x, cp2y, curAng, deltaAng, deltaCx, deltaCy, dir, handleLen, i, numSegs, ref, segAng, segIdx;
+      if (anticlockwise == null) {
+        anticlockwise = false;
+      }
+      TWO_PI = 2.0 * Math.PI;
+      HALF_PI = 0.5 * Math.PI;
+      deltaAng = endAngle - startAngle;
+      if (Math.abs(deltaAng) > TWO_PI) {
+        deltaAng = TWO_PI;
+      } else if (deltaAng !== 0 && anticlockwise !== (deltaAng < 0)) {
+        dir = anticlockwise ? -1 : 1;
+        deltaAng = dir * TWO_PI + deltaAng;
+      }
+      numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI);
+      segAng = deltaAng / numSegs;
+      handleLen = (segAng / HALF_PI) * KAPPA * radius;
+      curAng = startAngle;
+      deltaCx = -Math.sin(curAng) * handleLen;
+      deltaCy = Math.cos(curAng) * handleLen;
+      ax = x + Math.cos(curAng) * radius;
+      ay = y + Math.sin(curAng) * radius;
+      this.moveTo(ax, ay);
+      for (segIdx = i = 0, ref = numSegs; 0 <= ref ? i < ref : i > ref; segIdx = 0 <= ref ? ++i : --i) {
+        cp1x = ax + deltaCx;
+        cp1y = ay + deltaCy;
+        curAng += segAng;
+        ax = x + Math.cos(curAng) * radius;
+        ay = y + Math.sin(curAng) * radius;
+        deltaCx = -Math.sin(curAng) * handleLen;
+        deltaCy = Math.cos(curAng) * handleLen;
+        cp2x = ax - deltaCx;
+        cp2y = ay - deltaCy;
+        this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay);
+      }
+      return this;
+    },
+    polygon: function() {
+      var i, len, point, points;
+      points = 1 <= arguments.length ? slice.call(arguments, 0) : [];
+      this.moveTo.apply(this, points.shift());
+      for (i = 0, len = points.length; i < len; i++) {
+        point = points[i];
+        this.lineTo.apply(this, point);
+      }
+      return this.closePath();
+    },
+    path: function(path) {
+      SVGPath.apply(this, path);
+      return this;
+    },
+    _windingRule: function(rule) {
+      if (/even-?odd/.test(rule)) {
+        return '*';
+      }
+      return '';
+    },
+    fill: function(color, rule) {
+      if (/(even-?odd)|(non-?zero)/.test(color)) {
+        rule = color;
+        color = null;
+      }
+      if (color) {
+        this.fillColor(color);
+      }
+      return this.addContent('f' + this._windingRule(rule));
+    },
+    stroke: function(color) {
+      if (color) {
+        this.strokeColor(color);
+      }
+      return this.addContent('S');
+    },
+    fillAndStroke: function(fillColor, strokeColor, rule) {
+      var isFillRule;
+      if (strokeColor == null) {
+        strokeColor = fillColor;
+      }
+      isFillRule = /(even-?odd)|(non-?zero)/;
+      if (isFillRule.test(fillColor)) {
+        rule = fillColor;
+        fillColor = null;
+      }
+      if (isFillRule.test(strokeColor)) {
+        rule = strokeColor;
+        strokeColor = fillColor;
+      }
+      if (fillColor) {
+        this.fillColor(fillColor);
+        this.strokeColor(strokeColor);
+      }
+      return this.addContent('B' + this._windingRule(rule));
+    },
+    clip: function(rule) {
+      return this.addContent('W' + this._windingRule(rule) + ' n');
+    },
+    transform: function(m11, m12, m21, m22, dx, dy) {
+      var m, m0, m1, m2, m3, m4, m5, v, values;
+      m = this._ctm;
+      m0 = m[0], m1 = m[1], m2 = m[2], m3 = m[3], m4 = m[4], m5 = m[5];
+      m[0] = m0 * m11 + m2 * m12;
+      m[1] = m1 * m11 + m3 * m12;
+      m[2] = m0 * m21 + m2 * m22;
+      m[3] = m1 * m21 + m3 * m22;
+      m[4] = m0 * dx + m2 * dy + m4;
+      m[5] = m1 * dx + m3 * dy + m5;
+      values = ((function() {
+        var i, len, ref, results;
+        ref = [m11, m12, m21, m22, dx, dy];
+        results = [];
+        for (i = 0, len = ref.length; i < len; i++) {
+          v = ref[i];
+          results.push(number(v));
+        }
+        return results;
+      })()).join(' ');
+      return this.addContent(values + " cm");
+    },
+    translate: function(x, y) {
+      return this.transform(1, 0, 0, 1, x, y);
+    },
+    rotate: function(angle, options) {
+      var cos, rad, ref, sin, x, x1, y, y1;
+      if (options == null) {
+        options = {};
+      }
+      rad = angle * Math.PI / 180;
+      cos = Math.cos(rad);
+      sin = Math.sin(rad);
+      x = y = 0;
+      if (options.origin != null) {
+        ref = options.origin, x = ref[0], y = ref[1];
+        x1 = x * cos - y * sin;
+        y1 = x * sin + y * cos;
+        x -= x1;
+        y -= y1;
+      }
+      return this.transform(cos, sin, -sin, cos, x, y);
+    },
+    scale: function(xFactor, yFactor, options) {
+      var ref, x, y;
+      if (yFactor == null) {
+        yFactor = xFactor;
+      }
+      if (options == null) {
+        options = {};
+      }
+      if (typeof yFactor === "object") {
+        options = yFactor;
+        yFactor = xFactor;
+      }
+      x = y = 0;
+      if (options.origin != null) {
+        ref = options.origin, x = ref[0], y = ref[1];
+        x -= xFactor * x;
+        y -= yFactor * y;
+      }
+      return this.transform(xFactor, 0, 0, yFactor, x, y);
+    }
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 165 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var SVGPath;
+
+  SVGPath = (function() {
+    var apply, arcToSegments, cx, cy, parameters, parse, px, py, runners, segmentToBezier, solveArc, sx, sy;
+
+    function SVGPath() {}
+
+    SVGPath.apply = function(doc, path) {
+      var commands;
+      commands = parse(path);
+      return apply(commands, doc);
+    };
+
+    parameters = {
+      A: 7,
+      a: 7,
+      C: 6,
+      c: 6,
+      H: 1,
+      h: 1,
+      L: 2,
+      l: 2,
+      M: 2,
+      m: 2,
+      Q: 4,
+      q: 4,
+      S: 4,
+      s: 4,
+      T: 2,
+      t: 2,
+      V: 1,
+      v: 1,
+      Z: 0,
+      z: 0
+    };
+
+    parse = function(path) {
+      var args, c, cmd, curArg, foundDecimal, j, len, params, ret;
+      ret = [];
+      args = [];
+      curArg = "";
+      foundDecimal = false;
+      params = 0;
+      for (j = 0, len = path.length; j < len; j++) {
+        c = path[j];
+        if (parameters[c] != null) {
+          params = parameters[c];
+          if (cmd) {
+            if (curArg.length > 0) {
+              args[args.length] = +curArg;
+            }
+            ret[ret.length] = {
+              cmd: cmd,
+              args: args
+            };
+            args = [];
+            curArg = "";
+            foundDecimal = false;
+          }
+          cmd = c;
+        } else if ((c === " " || c === ",") || (c === "-" && curArg.length > 0 && curArg[curArg.length - 1] !== 'e') || (c === "." && foundDecimal)) {
+          if (curArg.length === 0) {
+            continue;
+          }
+          if (args.length === params) {
+            ret[ret.length] = {
+              cmd: cmd,
+              args: args
+            };
+            args = [+curArg];
+            if (cmd === "M") {
+              cmd = "L";
+            }
+            if (cmd === "m") {
+              cmd = "l";
+            }
+          } else {
+            args[args.length] = +curArg;
+          }
+          foundDecimal = c === ".";
+          curArg = c === '-' || c === '.' ? c : '';
+        } else {
+          curArg += c;
+          if (c === '.') {
+            foundDecimal = true;
+          }
+        }
+      }
+      if (curArg.length > 0) {
+        if (args.length === params) {
+          ret[ret.length] = {
+            cmd: cmd,
+            args: args
+          };
+          args = [+curArg];
+          if (cmd === "M") {
+            cmd = "L";
+          }
+          if (cmd === "m") {
+            cmd = "l";
+          }
+        } else {
+          args[args.length] = +curArg;
+        }
+      }
+      ret[ret.length] = {
+        cmd: cmd,
+        args: args
+      };
+      return ret;
+    };
+
+    cx = cy = px = py = sx = sy = 0;
+
+    apply = function(commands, doc) {
+      var c, i, j, len, name;
+      cx = cy = px = py = sx = sy = 0;
+      for (i = j = 0, len = commands.length; j < len; i = ++j) {
+        c = commands[i];
+        if (typeof runners[name = c.cmd] === "function") {
+          runners[name](doc, c.args);
+        }
+      }
+      return cx = cy = px = py = 0;
+    };
+
+    runners = {
+      M: function(doc, a) {
+        cx = a[0];
+        cy = a[1];
+        px = py = null;
+        sx = cx;
+        sy = cy;
+        return doc.moveTo(cx, cy);
+      },
+      m: function(doc, a) {
+        cx += a[0];
+        cy += a[1];
+        px = py = null;
+        sx = cx;
+        sy = cy;
+        return doc.moveTo(cx, cy);
+      },
+      C: function(doc, a) {
+        cx = a[4];
+        cy = a[5];
+        px = a[2];
+        py = a[3];
+        return doc.bezierCurveTo.apply(doc, a);
+      },
+      c: function(doc, a) {
+        doc.bezierCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy, a[4] + cx, a[5] + cy);
+        px = cx + a[2];
+        py = cy + a[3];
+        cx += a[4];
+        return cy += a[5];
+      },
+      S: function(doc, a) {
+        if (px === null) {
+          px = cx;
+          py = cy;
+        }
+        doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);
+        px = a[0];
+        py = a[1];
+        cx = a[2];
+        return cy = a[3];
+      },
+      s: function(doc, a) {
+        if (px === null) {
+          px = cx;
+          py = cy;
+        }
+        doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), cx + a[0], cy + a[1], cx + a[2], cy + a[3]);
+        px = cx + a[0];
+        py = cy + a[1];
+        cx += a[2];
+        return cy += a[3];
+      },
+      Q: function(doc, a) {
+        px = a[0];
+        py = a[1];
+        cx = a[2];
+        cy = a[3];
+        return doc.quadraticCurveTo(a[0], a[1], cx, cy);
+      },
+      q: function(doc, a) {
+        doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);
+        px = cx + a[0];
+        py = cy + a[1];
+        cx += a[2];
+        return cy += a[3];
+      },
+      T: function(doc, a) {
+        if (px === null) {
+          px = cx;
+          py = cy;
+        } else {
+          px = cx - (px - cx);
+          py = cy - (py - cy);
+        }
+        doc.quadraticCurveTo(px, py, a[0], a[1]);
+        px = cx - (px - cx);
+        py = cy - (py - cy);
+        cx = a[0];
+        return cy = a[1];
+      },
+      t: function(doc, a) {
+        if (px === null) {
+          px = cx;
+          py = cy;
+        } else {
+          px = cx - (px - cx);
+          py = cy - (py - cy);
+        }
+        doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]);
+        cx += a[0];
+        return cy += a[1];
+      },
+      A: function(doc, a) {
+        solveArc(doc, cx, cy, a);
+        cx = a[5];
+        return cy = a[6];
+      },
+      a: function(doc, a) {
+        a[5] += cx;
+        a[6] += cy;
+        solveArc(doc, cx, cy, a);
+        cx = a[5];
+        return cy = a[6];
+      },
+      L: function(doc, a) {
+        cx = a[0];
+        cy = a[1];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      l: function(doc, a) {
+        cx += a[0];
+        cy += a[1];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      H: function(doc, a) {
+        cx = a[0];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      h: function(doc, a) {
+        cx += a[0];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      V: function(doc, a) {
+        cy = a[0];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      v: function(doc, a) {
+        cy += a[0];
+        px = py = null;
+        return doc.lineTo(cx, cy);
+      },
+      Z: function(doc) {
+        doc.closePath();
+        cx = sx;
+        return cy = sy;
+      },
+      z: function(doc) {
+        doc.closePath();
+        cx = sx;
+        return cy = sy;
+      }
+    };
+
+    solveArc = function(doc, x, y, coords) {
+      var bez, ex, ey, j, large, len, results, rot, rx, ry, seg, segs, sweep;
+      rx = coords[0], ry = coords[1], rot = coords[2], large = coords[3], sweep = coords[4], ex = coords[5], ey = coords[6];
+      segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);
+      results = [];
+      for (j = 0, len = segs.length; j < len; j++) {
+        seg = segs[j];
+        bez = segmentToBezier.apply(null, seg);
+        results.push(doc.bezierCurveTo.apply(doc, bez));
+      }
+      return results;
+    };
+
+    arcToSegments = function(x, y, rx, ry, large, sweep, rotateX, ox, oy) {
+      var a00, a01, a10, a11, cos_th, d, i, j, pl, ref, result, segments, sfactor, sfactor_sq, sin_th, th, th0, th1, th2, th3, th_arc, x0, x1, xc, y0, y1, yc;
+      th = rotateX * (Math.PI / 180);
+      sin_th = Math.sin(th);
+      cos_th = Math.cos(th);
+      rx = Math.abs(rx);
+      ry = Math.abs(ry);
+      px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;
+      py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;
+      pl = (px * px) / (rx * rx) + (py * py) / (ry * ry);
+      if (pl > 1) {
+        pl = Math.sqrt(pl);
+        rx *= pl;
+        ry *= pl;
+      }
+      a00 = cos_th / rx;
+      a01 = sin_th / rx;
+      a10 = (-sin_th) / ry;
+      a11 = cos_th / ry;
+      x0 = a00 * ox + a01 * oy;
+      y0 = a10 * ox + a11 * oy;
+      x1 = a00 * x + a01 * y;
+      y1 = a10 * x + a11 * y;
+      d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);
+      sfactor_sq = 1 / d - 0.25;
+      if (sfactor_sq < 0) {
+        sfactor_sq = 0;
+      }
+      sfactor = Math.sqrt(sfactor_sq);
+      if (sweep === large) {
+        sfactor = -sfactor;
+      }
+      xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);
+      yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);
+      th0 = Math.atan2(y0 - yc, x0 - xc);
+      th1 = Math.atan2(y1 - yc, x1 - xc);
+      th_arc = th1 - th0;
+      if (th_arc < 0 && sweep === 1) {
+        th_arc += 2 * Math.PI;
+      } else if (th_arc > 0 && sweep === 0) {
+        th_arc -= 2 * Math.PI;
+      }
+      segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));
+      result = [];
+      for (i = j = 0, ref = segments; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        th2 = th0 + i * th_arc / segments;
+        th3 = th0 + (i + 1) * th_arc / segments;
+        result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];
+      }
+      return result;
+    };
+
+    segmentToBezier = function(cx, cy, th0, th1, rx, ry, sin_th, cos_th) {
+      var a00, a01, a10, a11, t, th_half, x1, x2, x3, y1, y2, y3;
+      a00 = cos_th * rx;
+      a01 = -sin_th * ry;
+      a10 = sin_th * rx;
+      a11 = cos_th * ry;
+      th_half = 0.5 * (th1 - th0);
+      t = (8 / 3) * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5) / Math.sin(th_half);
+      x1 = cx + Math.cos(th0) - t * Math.sin(th0);
+      y1 = cy + Math.sin(th0) + t * Math.cos(th0);
+      x3 = cx + Math.cos(th1);
+      y3 = cy + Math.sin(th1);
+      x2 = x3 + t * Math.sin(th1);
+      y2 = y3 - t * Math.cos(th1);
+      return [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];
+    };
+
+    return SVGPath;
+
+  })();
+
+  module.exports = SVGPath;
+
+}).call(this);
+
+
+/***/ }),
+/* 166 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var PDFFont;
+
+  PDFFont = __webpack_require__(50);
+
+  module.exports = {
+    initFonts: function() {
+      this._fontFamilies = {};
+      this._fontCount = 0;
+      this._fontSize = 12;
+      this._font = null;
+      this._registeredFonts = {};
+      
+    },
+    font: function(src, family, size) {
+      var cacheKey, font, id, ref;
+      if (typeof family === 'number') {
+        size = family;
+        family = null;
+      }
+      if (typeof src === 'string' && this._registeredFonts[src]) {
+        cacheKey = src;
+        ref = this._registeredFonts[src], src = ref.src, family = ref.family;
+      } else {
+        cacheKey = family || src;
+        if (typeof cacheKey !== 'string') {
+          cacheKey = null;
+        }
+      }
+      if (size != null) {
+        this.fontSize(size);
+      }
+      if (font = this._fontFamilies[cacheKey]) {
+        this._font = font;
+        return this;
+      }
+      id = 'F' + (++this._fontCount);
+      this._font = PDFFont.open(this, src, family, id);
+      if (font = this._fontFamilies[this._font.name]) {
+        this._font = font;
+        return this;
+      }
+      if (cacheKey) {
+        this._fontFamilies[cacheKey] = this._font;
+      }
+      if (this._font.name) {
+        this._fontFamilies[this._font.name] = this._font;
+      }
+      return this;
+    },
+    fontSize: function(_fontSize) {
+      this._fontSize = _fontSize;
+      return this;
+    },
+    currentLineHeight: function(includeGap) {
+      if (includeGap == null) {
+        includeGap = false;
+      }
+      return this._font.lineHeight(this._fontSize, includeGap);
+    },
+    registerFont: function(name, src, family) {
+      this._registeredFonts[name] = {
+        src: src,
+        family: family
+      };
+      return this;
+    }
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 167 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer, process) {
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var r = _interopDefault(__webpack_require__(168));
+var _Object$getOwnPropertyDescriptor = _interopDefault(__webpack_require__(197));
+var _getIterator = _interopDefault(__webpack_require__(60));
+var _Object$freeze = _interopDefault(__webpack_require__(209));
+var _Object$keys = _interopDefault(__webpack_require__(212));
+var _typeof = _interopDefault(__webpack_require__(69));
+var _Object$defineProperty = _interopDefault(__webpack_require__(74));
+var _classCallCheck = _interopDefault(__webpack_require__(106));
+var _createClass = _interopDefault(__webpack_require__(107));
+var _Map = _interopDefault(__webpack_require__(225));
+var _possibleConstructorReturn = _interopDefault(__webpack_require__(236));
+var _inherits = _interopDefault(__webpack_require__(237));
+var restructure_src_utils = __webpack_require__(12);
+var _Object$defineProperties = _interopDefault(__webpack_require__(245));
+var isEqual = _interopDefault(__webpack_require__(248));
+var _Object$assign = _interopDefault(__webpack_require__(251));
+var _String$fromCodePoint = _interopDefault(__webpack_require__(255));
+var _Array$from = _interopDefault(__webpack_require__(258));
+var _Set = _interopDefault(__webpack_require__(263));
+var unicode = _interopDefault(__webpack_require__(269));
+var UnicodeTrie = _interopDefault(__webpack_require__(43));
+var StateMachine = _interopDefault(__webpack_require__(271));
+var _Number$EPSILON = _interopDefault(__webpack_require__(280));
+var cloneDeep = _interopDefault(__webpack_require__(283));
+var inflate = _interopDefault(__webpack_require__(79));
+var brotli = _interopDefault(__webpack_require__(284));
+
+
+
+var fontkit = {};
+fontkit.logErrors = false;
+
+var formats = [];
+fontkit.registerFormat = function (format) {
+  formats.push(format);
+};
+
+fontkit.openSync = function (filename, postscriptName) {
+  var buffer = __webpack_require__(8).readFileSync(filename);
+  return fontkit.create(buffer, postscriptName);
+};
+
+fontkit.open = function (filename, postscriptName, callback) {
+  if (typeof postscriptName === 'function') {
+    callback = postscriptName;
+    postscriptName = null;
+  }
+
+  __webpack_require__(8).readFile(filename, function (err, buffer) {
+    if (err) {
+      return callback(err);
+    }
+
+    try {
+      var font = fontkit.create(buffer, postscriptName);
+    } catch (e) {
+      return callback(e);
+    }
+
+    return callback(null, font);
+  });
+
+  return;
+};
+
+fontkit.create = function (buffer, postscriptName) {
+  for (var i = 0; i < formats.length; i++) {
+    var format = formats[i];
+    if (format.probe(buffer)) {
+      var font = new format(new r.DecodeStream(buffer));
+      if (postscriptName) {
+        return font.getFont(postscriptName);
+      }
+
+      return font;
+    }
+  }
+
+  throw new Error('Unknown font format');
+};
+
+/**
+ * This decorator caches the results of a getter or method such that
+ * the results are lazily computed once, and then cached.
+ * @private
+ */
+function cache(target, key, descriptor) {
+  if (descriptor.get) {
+    var get = descriptor.get;
+    descriptor.get = function () {
+      var value = get.call(this);
+      _Object$defineProperty(this, key, { value: value });
+      return value;
+    };
+  } else if (typeof descriptor.value === 'function') {
+    var fn = descriptor.value;
+
+    return {
+      get: function get() {
+        var cache = new _Map();
+        function memoized() {
+          for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+            args[_key] = arguments[_key];
+          }
+
+          var key = args.length > 0 ? args[0] : 'value';
+          if (cache.has(key)) {
+            return cache.get(key);
+          }
+
+          var result = fn.apply(this, args);
+          cache.set(key, result);
+          return result;
+        };
+
+        _Object$defineProperty(this, key, { value: memoized });
+        return memoized;
+      }
+    };
+  }
+}
+
+var SubHeader = new r.Struct({
+  firstCode: r.uint16,
+  entryCount: r.uint16,
+  idDelta: r.int16,
+  idRangeOffset: r.uint16
+});
+
+var CmapGroup = new r.Struct({
+  startCharCode: r.uint32,
+  endCharCode: r.uint32,
+  glyphID: r.uint32
+});
+
+var UnicodeValueRange = new r.Struct({
+  startUnicodeValue: r.uint24,
+  additionalCount: r.uint8
+});
+
+var UVSMapping = new r.Struct({
+  unicodeValue: r.uint24,
+  glyphID: r.uint16
+});
+
+var DefaultUVS = new r.Array(UnicodeValueRange, r.uint32);
+var NonDefaultUVS = new r.Array(UVSMapping, r.uint32);
+
+var VarSelectorRecord = new r.Struct({
+  varSelector: r.uint24,
+  defaultUVS: new r.Pointer(r.uint32, DefaultUVS, { type: 'parent' }),
+  nonDefaultUVS: new r.Pointer(r.uint32, NonDefaultUVS, { type: 'parent' })
+});
+
+var CmapSubtable = new r.VersionedStruct(r.uint16, {
+  0: { // Byte encoding
+    length: r.uint16, // Total table length in bytes (set to 262 for format 0)
+    language: r.uint16, // Language code for this encoding subtable, or zero if language-independent
+    codeMap: new r.LazyArray(r.uint8, 256)
+  },
+
+  2: { // High-byte mapping (CJK)
+    length: r.uint16,
+    language: r.uint16,
+    subHeaderKeys: new r.Array(r.uint16, 256),
+    subHeaderCount: function subHeaderCount(t) {
+      return Math.max.apply(Math, t.subHeaderKeys);
+    },
+    subHeaders: new r.LazyArray(SubHeader, 'subHeaderCount'),
+    glyphIndexArray: new r.LazyArray(r.uint16, 'subHeaderCount')
+  },
+
+  4: { // Segment mapping to delta values
+    length: r.uint16, // Total table length in bytes
+    language: r.uint16, // Language code
+    segCountX2: r.uint16,
+    segCount: function segCount(t) {
+      return t.segCountX2 >> 1;
+    },
+    searchRange: r.uint16,
+    entrySelector: r.uint16,
+    rangeShift: r.uint16,
+    endCode: new r.LazyArray(r.uint16, 'segCount'),
+    reservedPad: new r.Reserved(r.uint16), // This value should be zero
+    startCode: new r.LazyArray(r.uint16, 'segCount'),
+    idDelta: new r.LazyArray(r.int16, 'segCount'),
+    idRangeOffset: new r.LazyArray(r.uint16, 'segCount'),
+    glyphIndexArray: new r.LazyArray(r.uint16, function (t) {
+      return (t.length - t._currentOffset) / 2;
+    })
+  },
+
+  6: { // Trimmed table
+    length: r.uint16,
+    language: r.uint16,
+    firstCode: r.uint16,
+    entryCount: r.uint16,
+    glyphIndices: new r.LazyArray(r.uint16, 'entryCount')
+  },
+
+  8: { // mixed 16-bit and 32-bit coverage
+    reserved: new r.Reserved(r.uint16),
+    length: r.uint32,
+    language: r.uint16,
+    is32: new r.LazyArray(r.uint8, 8192),
+    nGroups: r.uint32,
+    groups: new r.LazyArray(CmapGroup, 'nGroups')
+  },
+
+  10: { // Trimmed Array
+    reserved: new r.Reserved(r.uint16),
+    length: r.uint32,
+    language: r.uint32,
+    firstCode: r.uint32,
+    entryCount: r.uint32,
+    glyphIndices: new r.LazyArray(r.uint16, 'numChars')
+  },
+
+  12: { // Segmented coverage
+    reserved: new r.Reserved(r.uint16),
+    length: r.uint32,
+    language: r.uint32,
+    nGroups: r.uint32,
+    groups: new r.LazyArray(CmapGroup, 'nGroups')
+  },
+
+  13: { // Many-to-one range mappings (same as 12 except for group.startGlyphID)
+    reserved: new r.Reserved(r.uint16),
+    length: r.uint32,
+    language: r.uint32,
+    nGroups: r.uint32,
+    groups: new r.LazyArray(CmapGroup, 'nGroups')
+  },
+
+  14: { // Unicode Variation Sequences
+    length: r.uint32,
+    numRecords: r.uint32,
+    varSelectors: new r.LazyArray(VarSelectorRecord, 'numRecords')
+  }
+});
+
+var CmapEntry = new r.Struct({
+  platformID: r.uint16, // Platform identifier
+  encodingID: r.uint16, // Platform-specific encoding identifier
+  table: new r.Pointer(r.uint32, CmapSubtable, { type: 'parent', lazy: true })
+});
+
+// character to glyph mapping
+var cmap = new r.Struct({
+  version: r.uint16,
+  numSubtables: r.uint16,
+  tables: new r.Array(CmapEntry, 'numSubtables')
+});
+
+// font header
+var head = new r.Struct({
+  version: r.int32, // 0x00010000 (version 1.0)
+  revision: r.int32, // set by font manufacturer
+  checkSumAdjustment: r.uint32,
+  magicNumber: r.uint32, // set to 0x5F0F3CF5
+  flags: r.uint16,
+  unitsPerEm: r.uint16, // range from 64 to 16384
+  created: new r.Array(r.int32, 2),
+  modified: new r.Array(r.int32, 2),
+  xMin: r.int16, // for all glyph bounding boxes
+  yMin: r.int16, // for all glyph bounding boxes
+  xMax: r.int16, // for all glyph bounding boxes
+  yMax: r.int16, // for all glyph bounding boxes
+  macStyle: new r.Bitfield(r.uint16, ['bold', 'italic', 'underline', 'outline', 'shadow', 'condensed', 'extended']),
+  lowestRecPPEM: r.uint16, // smallest readable size in pixels
+  fontDirectionHint: r.int16,
+  indexToLocFormat: r.int16, // 0 for short offsets, 1 for long
+  glyphDataFormat: r.int16 // 0 for current format
+});
+
+// horizontal header
+var hhea = new r.Struct({
+  version: r.int32,
+  ascent: r.int16, // Distance from baseline of highest ascender
+  descent: r.int16, // Distance from baseline of lowest descender
+  lineGap: r.int16, // Typographic line gap
+  advanceWidthMax: r.uint16, // Maximum advance width value in 'hmtx' table
+  minLeftSideBearing: r.int16, // Maximum advance width value in 'hmtx' table
+  minRightSideBearing: r.int16, // Minimum right sidebearing value
+  xMaxExtent: r.int16,
+  caretSlopeRise: r.int16, // Used to calculate the slope of the cursor (rise/run); 1 for vertical
+  caretSlopeRun: r.int16, // 0 for vertical
+  caretOffset: r.int16, // Set to 0 for non-slanted fonts
+  reserved: new r.Reserved(r.int16, 4),
+  metricDataFormat: r.int16, // 0 for current format
+  numberOfMetrics: r.uint16 // Number of advance widths in 'hmtx' table
+});
+
+var HmtxEntry = new r.Struct({
+  advance: r.uint16,
+  bearing: r.int16
+});
+
+var hmtx = new r.Struct({
+  metrics: new r.LazyArray(HmtxEntry, function (t) {
+    return t.parent.hhea.numberOfMetrics;
+  }),
+  bearings: new r.LazyArray(r.int16, function (t) {
+    return t.parent.maxp.numGlyphs - t.parent.hhea.numberOfMetrics;
+  })
+});
+
+// maxiumum profile
+var maxp = new r.Struct({
+  version: r.int32,
+  numGlyphs: r.uint16, // The number of glyphs in the font
+  maxPoints: r.uint16, // Maximum points in a non-composite glyph
+  maxContours: r.uint16, // Maximum contours in a non-composite glyph
+  maxComponentPoints: r.uint16, // Maximum points in a composite glyph
+  maxComponentContours: r.uint16, // Maximum contours in a composite glyph
+  maxZones: r.uint16, // 1 if instructions do not use the twilight zone, 2 otherwise
+  maxTwilightPoints: r.uint16, // Maximum points used in Z0
+  maxStorage: r.uint16, // Number of Storage Area locations
+  maxFunctionDefs: r.uint16, // Number of FDEFs
+  maxInstructionDefs: r.uint16, // Number of IDEFs
+  maxStackElements: r.uint16, // Maximum stack depth
+  maxSizeOfInstructions: r.uint16, // Maximum byte count for glyph instructions
+  maxComponentElements: r.uint16, // Maximum number of components referenced at “top level” for any composite glyph
+  maxComponentDepth: r.uint16 // Maximum levels of recursion; 1 for simple components
+});
+
+/**
+ * Gets an encoding name from platform, encoding, and language ids.
+ * Returned encoding names can be used in iconv-lite to decode text.
+ */
+function getEncoding(platformID, encodingID) {
+  var languageID = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+
+  if (platformID === 1 && MAC_LANGUAGE_ENCODINGS[languageID]) {
+    return MAC_LANGUAGE_ENCODINGS[languageID];
+  }
+
+  return ENCODINGS[platformID][encodingID];
+}
+
+// Map of platform ids to encoding ids.
+var ENCODINGS = [
+// unicode
+['utf16be', 'utf16be', 'utf16be', 'utf16be', 'utf16be', 'utf16be'],
+
+// macintosh
+// Mappings available at http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/
+// 0	Roman                 17	Malayalam
+// 1	Japanese	            18	Sinhalese
+// 2	Traditional Chinese	  19	Burmese
+// 3	Korean	              20	Khmer
+// 4	Arabic	              21	Thai
+// 5	Hebrew	              22	Laotian
+// 6	Greek	                23	Georgian
+// 7	Russian	              24	Armenian
+// 8	RSymbol	              25	Simplified Chinese
+// 9	Devanagari	          26	Tibetan
+// 10	Gurmukhi	            27	Mongolian
+// 11	Gujarati	            28	Geez
+// 12	Oriya	                29	Slavic
+// 13	Bengali	              30	Vietnamese
+// 14	Tamil	                31	Sindhi
+// 15	Telugu	              32	(Uninterpreted)
+// 16	Kannada
+['macroman', 'shift-jis', 'big5', 'euc-kr', 'iso-8859-6', 'iso-8859-8', 'macgreek', 'maccyrillic', 'symbol', 'Devanagari', 'Gurmukhi', 'Gujarati', 'Oriya', 'Bengali', 'Tamil', 'Telugu', 'Kannada', 'Malayalam', 'Sinhalese', 'Burmese', 'Khmer', 'macthai', 'Laotian', 'Georgian', 'Armenian', 'gb-2312-80', 'Tibetan', 'Mongolian', 'Geez', 'maccenteuro', 'Vietnamese', 'Sindhi'],
+
+// ISO (deprecated)
+['ascii'],
+
+// windows
+// Docs here: http://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx
+['symbol', 'utf16be', 'shift-jis', 'gb18030', 'big5', 'wansung', 'johab', null, null, null, 'utf16be']];
+
+// Overrides for Mac scripts by language id.
+// See http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt
+var MAC_LANGUAGE_ENCODINGS = {
+  15: 'maciceland',
+  17: 'macturkish',
+  18: 'maccroatian',
+  24: 'maccenteuro',
+  25: 'maccenteuro',
+  26: 'maccenteuro',
+  27: 'maccenteuro',
+  28: 'maccenteuro',
+  30: 'maciceland',
+  37: 'macromania',
+  38: 'maccenteuro',
+  39: 'maccenteuro',
+  40: 'maccenteuro',
+  143: 'macinuit', // Unsupported by iconv-lite
+  146: 'macgaelic' // Unsupported by iconv-lite
+};
+
+// Map of platform ids to BCP-47 language codes.
+var LANGUAGES = [
+// unicode
+[], { // macintosh
+  0: 'en', 30: 'fo', 60: 'ks', 90: 'rw',
+  1: 'fr', 31: 'fa', 61: 'ku', 91: 'rn',
+  2: 'de', 32: 'ru', 62: 'sd', 92: 'ny',
+  3: 'it', 33: 'zh', 63: 'bo', 93: 'mg',
+  4: 'nl', 34: 'nl-BE', 64: 'ne', 94: 'eo',
+  5: 'sv', 35: 'ga', 65: 'sa', 128: 'cy',
+  6: 'es', 36: 'sq', 66: 'mr', 129: 'eu',
+  7: 'da', 37: 'ro', 67: 'bn', 130: 'ca',
+  8: 'pt', 38: 'cz', 68: 'as', 131: 'la',
+  9: 'no', 39: 'sk', 69: 'gu', 132: 'qu',
+  10: 'he', 40: 'si', 70: 'pa', 133: 'gn',
+  11: 'ja', 41: 'yi', 71: 'or', 134: 'ay',
+  12: 'ar', 42: 'sr', 72: 'ml', 135: 'tt',
+  13: 'fi', 43: 'mk', 73: 'kn', 136: 'ug',
+  14: 'el', 44: 'bg', 74: 'ta', 137: 'dz',
+  15: 'is', 45: 'uk', 75: 'te', 138: 'jv',
+  16: 'mt', 46: 'be', 76: 'si', 139: 'su',
+  17: 'tr', 47: 'uz', 77: 'my', 140: 'gl',
+  18: 'hr', 48: 'kk', 78: 'km', 141: 'af',
+  19: 'zh-Hant', 49: 'az-Cyrl', 79: 'lo', 142: 'br',
+  20: 'ur', 50: 'az-Arab', 80: 'vi', 143: 'iu',
+  21: 'hi', 51: 'hy', 81: 'id', 144: 'gd',
+  22: 'th', 52: 'ka', 82: 'tl', 145: 'gv',
+  23: 'ko', 53: 'mo', 83: 'ms', 146: 'ga',
+  24: 'lt', 54: 'ky', 84: 'ms-Arab', 147: 'to',
+  25: 'pl', 55: 'tg', 85: 'am', 148: 'el-polyton',
+  26: 'hu', 56: 'tk', 86: 'ti', 149: 'kl',
+  27: 'es', 57: 'mn-CN', 87: 'om', 150: 'az',
+  28: 'lv', 58: 'mn', 88: 'so', 151: 'nn',
+  29: 'se', 59: 'ps', 89: 'sw'
+},
+
+// ISO (deprecated)
+[], { // windows                                        
+  0x0436: 'af', 0x4009: 'en-IN', 0x0487: 'rw', 0x0432: 'tn',
+  0x041C: 'sq', 0x1809: 'en-IE', 0x0441: 'sw', 0x045B: 'si',
+  0x0484: 'gsw', 0x2009: 'en-JM', 0x0457: 'kok', 0x041B: 'sk',
+  0x045E: 'am', 0x4409: 'en-MY', 0x0412: 'ko', 0x0424: 'sl',
+  0x1401: 'ar-DZ', 0x1409: 'en-NZ', 0x0440: 'ky', 0x2C0A: 'es-AR',
+  0x3C01: 'ar-BH', 0x3409: 'en-PH', 0x0454: 'lo', 0x400A: 'es-BO',
+  0x0C01: 'ar', 0x4809: 'en-SG', 0x0426: 'lv', 0x340A: 'es-CL',
+  0x0801: 'ar-IQ', 0x1C09: 'en-ZA', 0x0427: 'lt', 0x240A: 'es-CO',
+  0x2C01: 'ar-JO', 0x2C09: 'en-TT', 0x082E: 'dsb', 0x140A: 'es-CR',
+  0x3401: 'ar-KW', 0x0809: 'en-GB', 0x046E: 'lb', 0x1C0A: 'es-DO',
+  0x3001: 'ar-LB', 0x0409: 'en', 0x042F: 'mk', 0x300A: 'es-EC',
+  0x1001: 'ar-LY', 0x3009: 'en-ZW', 0x083E: 'ms-BN', 0x440A: 'es-SV',
+  0x1801: 'ary', 0x0425: 'et', 0x043E: 'ms', 0x100A: 'es-GT',
+  0x2001: 'ar-OM', 0x0438: 'fo', 0x044C: 'ml', 0x480A: 'es-HN',
+  0x4001: 'ar-QA', 0x0464: 'fil', 0x043A: 'mt', 0x080A: 'es-MX',
+  0x0401: 'ar-SA', 0x040B: 'fi', 0x0481: 'mi', 0x4C0A: 'es-NI',
+  0x2801: 'ar-SY', 0x080C: 'fr-BE', 0x047A: 'arn', 0x180A: 'es-PA',
+  0x1C01: 'aeb', 0x0C0C: 'fr-CA', 0x044E: 'mr', 0x3C0A: 'es-PY',
+  0x3801: 'ar-AE', 0x040C: 'fr', 0x047C: 'moh', 0x280A: 'es-PE',
+  0x2401: 'ar-YE', 0x140C: 'fr-LU', 0x0450: 'mn', 0x500A: 'es-PR',
+  0x042B: 'hy', 0x180C: 'fr-MC', 0x0850: 'mn-CN', 0x0C0A: 'es',
+  0x044D: 'as', 0x100C: 'fr-CH', 0x0461: 'ne', 0x040A: 'es',
+  0x082C: 'az-Cyrl', 0x0462: 'fy', 0x0414: 'nb', 0x540A: 'es-US',
+  0x042C: 'az', 0x0456: 'gl', 0x0814: 'nn', 0x380A: 'es-UY',
+  0x046D: 'ba', 0x0437: 'ka', 0x0482: 'oc', 0x200A: 'es-VE',
+  0x042D: 'eu', 0x0C07: 'de-AT', 0x0448: 'or', 0x081D: 'sv-FI',
+  0x0423: 'be', 0x0407: 'de', 0x0463: 'ps', 0x041D: 'sv',
+  0x0845: 'bn', 0x1407: 'de-LI', 0x0415: 'pl', 0x045A: 'syr',
+  0x0445: 'bn-IN', 0x1007: 'de-LU', 0x0416: 'pt', 0x0428: 'tg',
+  0x201A: 'bs-Cyrl', 0x0807: 'de-CH', 0x0816: 'pt-PT', 0x085F: 'tzm',
+  0x141A: 'bs', 0x0408: 'el', 0x0446: 'pa', 0x0449: 'ta',
+  0x047E: 'br', 0x046F: 'kl', 0x046B: 'qu-BO', 0x0444: 'tt',
+  0x0402: 'bg', 0x0447: 'gu', 0x086B: 'qu-EC', 0x044A: 'te',
+  0x0403: 'ca', 0x0468: 'ha', 0x0C6B: 'qu', 0x041E: 'th',
+  0x0C04: 'zh-HK', 0x040D: 'he', 0x0418: 'ro', 0x0451: 'bo',
+  0x1404: 'zh-MO', 0x0439: 'hi', 0x0417: 'rm', 0x041F: 'tr',
+  0x0804: 'zh', 0x040E: 'hu', 0x0419: 'ru', 0x0442: 'tk',
+  0x1004: 'zh-SG', 0x040F: 'is', 0x243B: 'smn', 0x0480: 'ug',
+  0x0404: 'zh-TW', 0x0470: 'ig', 0x103B: 'smj-NO', 0x0422: 'uk',
+  0x0483: 'co', 0x0421: 'id', 0x143B: 'smj', 0x042E: 'hsb',
+  0x041A: 'hr', 0x045D: 'iu', 0x0C3B: 'se-FI', 0x0420: 'ur',
+  0x101A: 'hr-BA', 0x085D: 'iu-Latn', 0x043B: 'se', 0x0843: 'uz-Cyrl',
+  0x0405: 'cs', 0x083C: 'ga', 0x083B: 'se-SE', 0x0443: 'uz',
+  0x0406: 'da', 0x0434: 'xh', 0x203B: 'sms', 0x042A: 'vi',
+  0x048C: 'prs', 0x0435: 'zu', 0x183B: 'sma-NO', 0x0452: 'cy',
+  0x0465: 'dv', 0x0410: 'it', 0x1C3B: 'sms', 0x0488: 'wo',
+  0x0813: 'nl-BE', 0x0810: 'it-CH', 0x044F: 'sa', 0x0485: 'sah',
+  0x0413: 'nl', 0x0411: 'ja', 0x1C1A: 'sr-Cyrl-BA', 0x0478: 'ii',
+  0x0C09: 'en-AU', 0x044B: 'kn', 0x0C1A: 'sr', 0x046A: 'yo',
+  0x2809: 'en-BZ', 0x043F: 'kk', 0x181A: 'sr-Latn-BA',
+  0x1009: 'en-CA', 0x0453: 'km', 0x081A: 'sr-Latn',
+  0x2409: 'en-029', 0x0486: 'quc', 0x046C: 'nso'
+}];
+
+var NameRecord = new r.Struct({
+  platformID: r.uint16,
+  encodingID: r.uint16,
+  languageID: r.uint16,
+  nameID: r.uint16,
+  length: r.uint16,
+  string: new r.Pointer(r.uint16, new r.String('length', function (t) {
+    return getEncoding(t.platformID, t.encodingID, t.languageID);
+  }), { type: 'parent', relativeTo: 'parent.stringOffset', allowNull: false })
+});
+
+var LangTagRecord = new r.Struct({
+  length: r.uint16,
+  tag: new r.Pointer(r.uint16, new r.String('length', 'utf16be'), { type: 'parent', relativeTo: 'stringOffset' })
+});
+
+var NameTable = new r.VersionedStruct(r.uint16, {
+  0: {
+    count: r.uint16,
+    stringOffset: r.uint16,
+    records: new r.Array(NameRecord, 'count')
+  },
+  1: {
+    count: r.uint16,
+    stringOffset: r.uint16,
+    records: new r.Array(NameRecord, 'count'),
+    langTagCount: r.uint16,
+    langTags: new r.Array(LangTagRecord, 'langTagCount')
+  }
+});
+
+var NAMES = ['copyright', 'fontFamily', 'fontSubfamily', 'uniqueSubfamily', 'fullName', 'version', 'postscriptName', // Note: A font may have only one PostScript name and that name must be ASCII.
+'trademark', 'manufacturer', 'designer', 'description', 'vendorURL', 'designerURL', 'license', 'licenseURL', null, // reserved
+'preferredFamily', 'preferredSubfamily', 'compatibleFull', 'sampleText', 'postscriptCIDFontName', 'wwsFamilyName', 'wwsSubfamilyName'];
+
+NameTable.process = function (stream) {
+  var records = {};
+  for (var _iterator = this.records, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var record = _ref;
+
+    // find out what language this is for
+    var language = LANGUAGES[record.platformID][record.languageID];
+
+    if (language == null && this.langTags != null && record.languageID >= 0x8000) {
+      language = this.langTags[record.languageID - 0x8000].tag;
+    }
+
+    if (language == null) {
+      language = record.platformID + '-' + record.languageID;
+    }
+
+    // if the nameID is >= 256, it is a font feature record (AAT)
+    var key = record.nameID >= 256 ? 'fontFeatures' : NAMES[record.nameID] || record.nameID;
+    if (records[key] == null) {
+      records[key] = {};
+    }
+
+    var obj = records[key];
+    if (record.nameID >= 256) {
+      obj = obj[record.nameID] || (obj[record.nameID] = {});
+    }
+
+    if (typeof record.string === 'string' || typeof obj[language] !== 'string') {
+      obj[language] = record.string;
+    }
+  }
+
+  this.records = records;
+};
+
+NameTable.preEncode = function () {
+  if (Array.isArray(this.records)) return;
+  this.version = 0;
+
+  var records = [];
+  for (var key in this.records) {
+    var val = this.records[key];
+    if (key === 'fontFeatures') continue;
+
+    records.push({
+      platformID: 3,
+      encodingID: 1,
+      languageID: 0x409,
+      nameID: NAMES.indexOf(key),
+      length: Buffer.byteLength(val.en, 'utf16le'),
+      string: val.en
+    });
+
+    if (key === 'postscriptName') {
+      records.push({
+        platformID: 1,
+        encodingID: 0,
+        languageID: 0,
+        nameID: NAMES.indexOf(key),
+        length: val.en.length,
+        string: val.en
+      });
+    }
+  }
+
+  this.records = records;
+  this.count = records.length;
+  this.stringOffset = NameTable.size(this, null, false);
+};
+
+var OS2 = new r.VersionedStruct(r.uint16, {
+  header: {
+    xAvgCharWidth: r.int16, // average weighted advance width of lower case letters and space
+    usWeightClass: r.uint16, // visual weight of stroke in glyphs
+    usWidthClass: r.uint16, // relative change from the normal aspect ratio (width to height ratio)
+    fsType: new r.Bitfield(r.uint16, [// Indicates font embedding licensing rights
+    null, 'noEmbedding', 'viewOnly', 'editable', null, null, null, null, 'noSubsetting', 'bitmapOnly']),
+    ySubscriptXSize: r.int16, // recommended horizontal size in pixels for subscripts
+    ySubscriptYSize: r.int16, // recommended vertical size in pixels for subscripts
+    ySubscriptXOffset: r.int16, // recommended horizontal offset for subscripts
+    ySubscriptYOffset: r.int16, // recommended vertical offset form the baseline for subscripts
+    ySuperscriptXSize: r.int16, // recommended horizontal size in pixels for superscripts
+    ySuperscriptYSize: r.int16, // recommended vertical size in pixels for superscripts
+    ySuperscriptXOffset: r.int16, // recommended horizontal offset for superscripts
+    ySuperscriptYOffset: r.int16, // recommended vertical offset from the baseline for superscripts
+    yStrikeoutSize: r.int16, // width of the strikeout stroke
+    yStrikeoutPosition: r.int16, // position of the strikeout stroke relative to the baseline
+    sFamilyClass: r.int16, // classification of font-family design
+    panose: new r.Array(r.uint8, 10), // describe the visual characteristics of a given typeface
+    ulCharRange: new r.Array(r.uint32, 4),
+    vendorID: new r.String(4), // four character identifier for the font vendor
+    fsSelection: new r.Bitfield(r.uint16, [// bit field containing information about the font
+    'italic', 'underscore', 'negative', 'outlined', 'strikeout', 'bold', 'regular', 'useTypoMetrics', 'wws', 'oblique']),
+    usFirstCharIndex: r.uint16, // The minimum Unicode index in this font
+    usLastCharIndex: r.uint16 // The maximum Unicode index in this font
+  },
+
+  // The Apple version of this table ends here, but the Microsoft one continues on...
+  0: {},
+
+  1: {
+    typoAscender: r.int16,
+    typoDescender: r.int16,
+    typoLineGap: r.int16,
+    winAscent: r.uint16,
+    winDescent: r.uint16,
+    codePageRange: new r.Array(r.uint32, 2)
+  },
+
+  2: {
+    // these should be common with version 1 somehow
+    typoAscender: r.int16,
+    typoDescender: r.int16,
+    typoLineGap: r.int16,
+    winAscent: r.uint16,
+    winDescent: r.uint16,
+    codePageRange: new r.Array(r.uint32, 2),
+
+    xHeight: r.int16,
+    capHeight: r.int16,
+    defaultChar: r.uint16,
+    breakChar: r.uint16,
+    maxContent: r.uint16
+  },
+
+  5: {
+    typoAscender: r.int16,
+    typoDescender: r.int16,
+    typoLineGap: r.int16,
+    winAscent: r.uint16,
+    winDescent: r.uint16,
+    codePageRange: new r.Array(r.uint32, 2),
+
+    xHeight: r.int16,
+    capHeight: r.int16,
+    defaultChar: r.uint16,
+    breakChar: r.uint16,
+    maxContent: r.uint16,
+
+    usLowerOpticalPointSize: r.uint16,
+    usUpperOpticalPointSize: r.uint16
+  }
+});
+
+var versions = OS2.versions;
+versions[3] = versions[4] = versions[2];
+
+// PostScript information
+var post = new r.VersionedStruct(r.fixed32, {
+  header: { // these fields exist at the top of all versions
+    italicAngle: r.fixed32, // Italic angle in counter-clockwise degrees from the vertical.
+    underlinePosition: r.int16, // Suggested distance of the top of the underline from the baseline
+    underlineThickness: r.int16, // Suggested values for the underline thickness
+    isFixedPitch: r.uint32, // Whether the font is monospaced
+    minMemType42: r.uint32, // Minimum memory usage when a TrueType font is downloaded as a Type 42 font
+    maxMemType42: r.uint32, // Maximum memory usage when a TrueType font is downloaded as a Type 42 font
+    minMemType1: r.uint32, // Minimum memory usage when a TrueType font is downloaded as a Type 1 font
+    maxMemType1: r.uint32 // Maximum memory usage when a TrueType font is downloaded as a Type 1 font
+  },
+
+  1: {}, // version 1 has no additional fields
+
+  2: {
+    numberOfGlyphs: r.uint16,
+    glyphNameIndex: new r.Array(r.uint16, 'numberOfGlyphs'),
+    names: new r.Array(new r.String(r.uint8))
+  },
+
+  2.5: {
+    numberOfGlyphs: r.uint16,
+    offsets: new r.Array(r.uint8, 'numberOfGlyphs')
+  },
+
+  3: {}, // version 3 has no additional fields
+
+  4: {
+    map: new r.Array(r.uint32, function (t) {
+      return t.parent.maxp.numGlyphs;
+    })
+  }
+});
+
+// An array of predefined values accessible by instructions
+var cvt = new r.Struct({
+  controlValues: new r.Array(r.int16)
+});
+
+// A list of instructions that are executed once when a font is first used.
+// These instructions are known as the font program. The main use of this table
+// is for the definition of functions that are used in many different glyph programs.
+var fpgm = new r.Struct({
+  instructions: new r.Array(r.uint8)
+});
+
+var loca = new r.VersionedStruct('head.indexToLocFormat', {
+  0: {
+    offsets: new r.Array(r.uint16)
+  },
+  1: {
+    offsets: new r.Array(r.uint32)
+  }
+});
+
+loca.process = function () {
+  if (this.version === 0) {
+    for (var i = 0; i < this.offsets.length; i++) {
+      this.offsets[i] <<= 1;
+    }
+  }
+};
+
+loca.preEncode = function () {
+  if (this.version != null) return;
+
+  // assume this.offsets is a sorted array
+  this.version = this.offsets[this.offsets.length - 1] > 0xffff ? 1 : 0;
+
+  if (this.version === 0) {
+    for (var i = 0; i < this.offsets.length; i++) {
+      this.offsets[i] >>>= 1;
+    }
+  }
+};
+
+// Set of instructions executed whenever the point size or font transformation change
+var prep = new r.Struct({
+  controlValueProgram: new r.Array(r.uint8)
+});
+
+// only used for encoding
+var glyf = new r.Array(new r.Buffer());
+
+var CFFIndex = function () {
+  function CFFIndex(type) {
+    _classCallCheck(this, CFFIndex);
+
+    this.type = type;
+  }
+
+  CFFIndex.prototype.getCFFVersion = function getCFFVersion(ctx) {
+    while (ctx && !ctx.hdrSize) {
+      ctx = ctx.parent;
+    }
+
+    return ctx ? ctx.version : -1;
+  };
+
+  CFFIndex.prototype.decode = function decode(stream, parent) {
+    var version = this.getCFFVersion(parent);
+    var count = version >= 2 ? stream.readUInt32BE() : stream.readUInt16BE();
+
+    if (count === 0) {
+      return [];
+    }
+
+    var offSize = stream.readUInt8();
+    var offsetType = void 0;
+    if (offSize === 1) {
+      offsetType = r.uint8;
+    } else if (offSize === 2) {
+      offsetType = r.uint16;
+    } else if (offSize === 3) {
+      offsetType = r.uint24;
+    } else if (offSize === 4) {
+      offsetType = r.uint32;
+    } else {
+      throw new Error("Bad offset size in CFFIndex: " + offSize + " " + stream.pos);
+    }
+
+    var ret = [];
+    var startPos = stream.pos + (count + 1) * offSize - 1;
+
+    var start = offsetType.decode(stream);
+    for (var i = 0; i < count; i++) {
+      var end = offsetType.decode(stream);
+
+      if (this.type != null) {
+        var pos = stream.pos;
+        stream.pos = startPos + start;
+
+        parent.length = end - start;
+        ret.push(this.type.decode(stream, parent));
+        stream.pos = pos;
+      } else {
+        ret.push({
+          offset: startPos + start,
+          length: end - start
+        });
+      }
+
+      start = end;
+    }
+
+    stream.pos = startPos + start;
+    return ret;
+  };
+
+  CFFIndex.prototype.size = function size(arr, parent) {
+    var size = 2;
+    if (arr.length === 0) {
+      return size;
+    }
+
+    var type = this.type || new r.Buffer();
+
+    // find maximum offset to detminine offset type
+    var offset = 1;
+    for (var i = 0; i < arr.length; i++) {
+      var item = arr[i];
+      offset += type.size(item, parent);
+    }
+
+    var offsetType = void 0;
+    if (offset <= 0xff) {
+      offsetType = r.uint8;
+    } else if (offset <= 0xffff) {
+      offsetType = r.uint16;
+    } else if (offset <= 0xffffff) {
+      offsetType = r.uint24;
+    } else if (offset <= 0xffffffff) {
+      offsetType = r.uint32;
+    } else {
+      throw new Error("Bad offset in CFFIndex");
+    }
+
+    size += 1 + offsetType.size() * (arr.length + 1);
+    size += offset - 1;
+
+    return size;
+  };
+
+  CFFIndex.prototype.encode = function encode(stream, arr, parent) {
+    stream.writeUInt16BE(arr.length);
+    if (arr.length === 0) {
+      return;
+    }
+
+    var type = this.type || new r.Buffer();
+
+    // find maximum offset to detminine offset type
+    var sizes = [];
+    var offset = 1;
+    for (var _iterator = arr, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var item = _ref;
+
+      var s = type.size(item, parent);
+      sizes.push(s);
+      offset += s;
+    }
+
+    var offsetType = void 0;
+    if (offset <= 0xff) {
+      offsetType = r.uint8;
+    } else if (offset <= 0xffff) {
+      offsetType = r.uint16;
+    } else if (offset <= 0xffffff) {
+      offsetType = r.uint24;
+    } else if (offset <= 0xffffffff) {
+      offsetType = r.uint32;
+    } else {
+      throw new Error("Bad offset in CFFIndex");
+    }
+
+    // write offset size
+    stream.writeUInt8(offsetType.size());
+
+    // write elements
+    offset = 1;
+    offsetType.encode(stream, offset);
+
+    for (var _iterator2 = sizes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var size = _ref2;
+
+      offset += size;
+      offsetType.encode(stream, offset);
+    }
+
+    for (var _iterator3 = arr, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+      var _ref3;
+
+      if (_isArray3) {
+        if (_i3 >= _iterator3.length) break;
+        _ref3 = _iterator3[_i3++];
+      } else {
+        _i3 = _iterator3.next();
+        if (_i3.done) break;
+        _ref3 = _i3.value;
+      }
+
+      var _item = _ref3;
+
+      type.encode(stream, _item, parent);
+    }
+
+    return;
+  };
+
+  return CFFIndex;
+}();
+
+var FLOAT_EOF = 0xf;
+var FLOAT_LOOKUP = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-'];
+
+var FLOAT_ENCODE_LOOKUP = {
+  '.': 10,
+  'E': 11,
+  'E-': 12,
+  '-': 14
+};
+
+var CFFOperand = function () {
+  function CFFOperand() {
+    _classCallCheck(this, CFFOperand);
+  }
+
+  CFFOperand.decode = function decode(stream, value) {
+    if (32 <= value && value <= 246) {
+      return value - 139;
+    }
+
+    if (247 <= value && value <= 250) {
+      return (value - 247) * 256 + stream.readUInt8() + 108;
+    }
+
+    if (251 <= value && value <= 254) {
+      return -(value - 251) * 256 - stream.readUInt8() - 108;
+    }
+
+    if (value === 28) {
+      return stream.readInt16BE();
+    }
+
+    if (value === 29) {
+      return stream.readInt32BE();
+    }
+
+    if (value === 30) {
+      var str = '';
+      while (true) {
+        var b = stream.readUInt8();
+
+        var n1 = b >> 4;
+        if (n1 === FLOAT_EOF) {
+          break;
+        }
+        str += FLOAT_LOOKUP[n1];
+
+        var n2 = b & 15;
+        if (n2 === FLOAT_EOF) {
+          break;
+        }
+        str += FLOAT_LOOKUP[n2];
+      }
+
+      return parseFloat(str);
+    }
+
+    return null;
+  };
+
+  CFFOperand.size = function size(value) {
+    // if the value needs to be forced to the largest size (32 bit)
+    // e.g. for unknown pointers, set to 32768
+    if (value.forceLarge) {
+      value = 32768;
+    }
+
+    if ((value | 0) !== value) {
+      // floating point
+      var str = '' + value;
+      return 1 + Math.ceil((str.length + 1) / 2);
+    } else if (-107 <= value && value <= 107) {
+      return 1;
+    } else if (108 <= value && value <= 1131 || -1131 <= value && value <= -108) {
+      return 2;
+    } else if (-32768 <= value && value <= 32767) {
+      return 3;
+    } else {
+      return 5;
+    }
+  };
+
+  CFFOperand.encode = function encode(stream, value) {
+    // if the value needs to be forced to the largest size (32 bit)
+    // e.g. for unknown pointers, save the old value and set to 32768
+    var val = Number(value);
+
+    if (value.forceLarge) {
+      stream.writeUInt8(29);
+      return stream.writeInt32BE(val);
+    } else if ((val | 0) !== val) {
+      // floating point
+      stream.writeUInt8(30);
+
+      var str = '' + val;
+      for (var i = 0; i < str.length; i += 2) {
+        var c1 = str[i];
+        var n1 = FLOAT_ENCODE_LOOKUP[c1] || +c1;
+
+        if (i === str.length - 1) {
+          var n2 = FLOAT_EOF;
+        } else {
+          var c2 = str[i + 1];
+          var n2 = FLOAT_ENCODE_LOOKUP[c2] || +c2;
+        }
+
+        stream.writeUInt8(n1 << 4 | n2 & 15);
+      }
+
+      if (n2 !== FLOAT_EOF) {
+        return stream.writeUInt8(FLOAT_EOF << 4);
+      }
+    } else if (-107 <= val && val <= 107) {
+      return stream.writeUInt8(val + 139);
+    } else if (108 <= val && val <= 1131) {
+      val -= 108;
+      stream.writeUInt8((val >> 8) + 247);
+      return stream.writeUInt8(val & 0xff);
+    } else if (-1131 <= val && val <= -108) {
+      val = -val - 108;
+      stream.writeUInt8((val >> 8) + 251);
+      return stream.writeUInt8(val & 0xff);
+    } else if (-32768 <= val && val <= 32767) {
+      stream.writeUInt8(28);
+      return stream.writeInt16BE(val);
+    } else {
+      stream.writeUInt8(29);
+      return stream.writeInt32BE(val);
+    }
+  };
+
+  return CFFOperand;
+}();
+
+var CFFDict = function () {
+  function CFFDict() {
+    var ops = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+
+    _classCallCheck(this, CFFDict);
+
+    this.ops = ops;
+    this.fields = {};
+    for (var _iterator = ops, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var field = _ref;
+
+      var key = Array.isArray(field[0]) ? field[0][0] << 8 | field[0][1] : field[0];
+      this.fields[key] = field;
+    }
+  }
+
+  CFFDict.prototype.decodeOperands = function decodeOperands(type, stream, ret, operands) {
+    var _this = this;
+
+    if (Array.isArray(type)) {
+      return operands.map(function (op, i) {
+        return _this.decodeOperands(type[i], stream, ret, [op]);
+      });
+    } else if (type.decode != null) {
+      return type.decode(stream, ret, operands);
+    } else {
+      switch (type) {
+        case 'number':
+        case 'offset':
+        case 'sid':
+          return operands[0];
+        case 'boolean':
+          return !!operands[0];
+        default:
+          return operands;
+      }
+    }
+  };
+
+  CFFDict.prototype.encodeOperands = function encodeOperands(type, stream, ctx, operands) {
+    var _this2 = this;
+
+    if (Array.isArray(type)) {
+      return operands.map(function (op, i) {
+        return _this2.encodeOperands(type[i], stream, ctx, op)[0];
+      });
+    } else if (type.encode != null) {
+      return type.encode(stream, operands, ctx);
+    } else if (typeof operands === 'number') {
+      return [operands];
+    } else if (typeof operands === 'boolean') {
+      return [+operands];
+    } else if (Array.isArray(operands)) {
+      return operands;
+    } else {
+      return [operands];
+    }
+  };
+
+  CFFDict.prototype.decode = function decode(stream, parent) {
+    var end = stream.pos + parent.length;
+    var ret = {};
+    var operands = [];
+
+    // define hidden properties
+    _Object$defineProperties(ret, {
+      parent: { value: parent },
+      _startOffset: { value: stream.pos }
+    });
+
+    // fill in defaults
+    for (var key in this.fields) {
+      var field = this.fields[key];
+      ret[field[1]] = field[3];
+    }
+
+    while (stream.pos < end) {
+      var b = stream.readUInt8();
+      if (b < 28) {
+        if (b === 12) {
+          b = b << 8 | stream.readUInt8();
+        }
+
+        var _field = this.fields[b];
+        if (!_field) {
+          throw new Error('Unknown operator ' + b);
+        }
+
+        var val = this.decodeOperands(_field[2], stream, ret, operands);
+        if (val != null) {
+          if (val instanceof restructure_src_utils.PropertyDescriptor) {
+            _Object$defineProperty(ret, _field[1], val);
+          } else {
+            ret[_field[1]] = val;
+          }
+        }
+
+        operands = [];
+      } else {
+        operands.push(CFFOperand.decode(stream, b));
+      }
+    }
+
+    return ret;
+  };
+
+  CFFDict.prototype.size = function size(dict, parent) {
+    var includePointers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+
+    var ctx = {
+      parent: parent,
+      val: dict,
+      pointerSize: 0,
+      startOffset: parent.startOffset || 0
+    };
+
+    var len = 0;
+
+    for (var k in this.fields) {
+      var field = this.fields[k];
+      var val = dict[field[1]];
+      if (val == null || isEqual(val, field[3])) {
+        continue;
+      }
+
+      var operands = this.encodeOperands(field[2], null, ctx, val);
+      for (var _iterator2 = operands, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var op = _ref2;
+
+        len += CFFOperand.size(op);
+      }
+
+      var key = Array.isArray(field[0]) ? field[0] : [field[0]];
+      len += key.length;
+    }
+
+    if (includePointers) {
+      len += ctx.pointerSize;
+    }
+
+    return len;
+  };
+
+  CFFDict.prototype.encode = function encode(stream, dict, parent) {
+    var ctx = {
+      pointers: [],
+      startOffset: stream.pos,
+      parent: parent,
+      val: dict,
+      pointerSize: 0
+    };
+
+    ctx.pointerOffset = stream.pos + this.size(dict, ctx, false);
+
+    for (var _iterator3 = this.ops, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+      var _ref3;
+
+      if (_isArray3) {
+        if (_i3 >= _iterator3.length) break;
+        _ref3 = _iterator3[_i3++];
+      } else {
+        _i3 = _iterator3.next();
+        if (_i3.done) break;
+        _ref3 = _i3.value;
+      }
+
+      var field = _ref3;
+
+      var val = dict[field[1]];
+      if (val == null || isEqual(val, field[3])) {
+        continue;
+      }
+
+      var operands = this.encodeOperands(field[2], stream, ctx, val);
+      for (var _iterator4 = operands, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+        var _ref4;
+
+        if (_isArray4) {
+          if (_i4 >= _iterator4.length) break;
+          _ref4 = _iterator4[_i4++];
+        } else {
+          _i4 = _iterator4.next();
+          if (_i4.done) break;
+          _ref4 = _i4.value;
+        }
+
+        var op = _ref4;
+
+        CFFOperand.encode(stream, op);
+      }
+
+      var key = Array.isArray(field[0]) ? field[0] : [field[0]];
+      for (var _iterator5 = key, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
+        var _ref5;
+
+        if (_isArray5) {
+          if (_i5 >= _iterator5.length) break;
+          _ref5 = _iterator5[_i5++];
+        } else {
+          _i5 = _iterator5.next();
+          if (_i5.done) break;
+          _ref5 = _i5.value;
+        }
+
+        var _op = _ref5;
+
+        stream.writeUInt8(_op);
+      }
+    }
+
+    var i = 0;
+    while (i < ctx.pointers.length) {
+      var ptr = ctx.pointers[i++];
+      ptr.type.encode(stream, ptr.val, ptr.parent);
+    }
+
+    return;
+  };
+
+  return CFFDict;
+}();
+
+var CFFPointer = function (_r$Pointer) {
+  _inherits(CFFPointer, _r$Pointer);
+
+  function CFFPointer(type) {
+    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+    _classCallCheck(this, CFFPointer);
+
+    if (options.type == null) {
+      options.type = 'global';
+    }
+
+    return _possibleConstructorReturn(this, _r$Pointer.call(this, null, type, options));
+  }
+
+  CFFPointer.prototype.decode = function decode(stream, parent, operands) {
+    this.offsetType = {
+      decode: function decode() {
+        return operands[0];
+      }
+    };
+
+    return _r$Pointer.prototype.decode.call(this, stream, parent, operands);
+  };
+
+  CFFPointer.prototype.encode = function encode(stream, value, ctx) {
+    if (!stream) {
+      // compute the size (so ctx.pointerSize is correct)
+      this.offsetType = {
+        size: function size() {
+          return 0;
+        }
+      };
+
+      this.size(value, ctx);
+      return [new Ptr(0)];
+    }
+
+    var ptr = null;
+    this.offsetType = {
+      encode: function encode(stream, val) {
+        return ptr = val;
+      }
+    };
+
+    _r$Pointer.prototype.encode.call(this, stream, value, ctx);
+    return [new Ptr(ptr)];
+  };
+
+  return CFFPointer;
+}(r.Pointer);
+
+var Ptr = function () {
+  function Ptr(val) {
+    _classCallCheck(this, Ptr);
+
+    this.val = val;
+    this.forceLarge = true;
+  }
+
+  Ptr.prototype.valueOf = function valueOf() {
+    return this.val;
+  };
+
+  return Ptr;
+}();
+
+var CFFBlendOp = function () {
+  function CFFBlendOp() {
+    _classCallCheck(this, CFFBlendOp);
+  }
+
+  CFFBlendOp.decode = function decode(stream, parent, operands) {
+    var numBlends = operands.pop();
+
+    // TODO: actually blend. For now just consume the deltas
+    // since we don't use any of the values anyway.
+    while (operands.length > numBlends) {
+      operands.pop();
+    }
+  };
+
+  return CFFBlendOp;
+}();
+
+var CFFPrivateDict = new CFFDict([
+// key       name                    type                                          default
+[6, 'BlueValues', 'delta', null], [7, 'OtherBlues', 'delta', null], [8, 'FamilyBlues', 'delta', null], [9, 'FamilyOtherBlues', 'delta', null], [[12, 9], 'BlueScale', 'number', 0.039625], [[12, 10], 'BlueShift', 'number', 7], [[12, 11], 'BlueFuzz', 'number', 1], [10, 'StdHW', 'number', null], [11, 'StdVW', 'number', null], [[12, 12], 'StemSnapH', 'delta', null], [[12, 13], 'StemSnapV', 'delta', null], [[12, 14], 'ForceBold', 'boolean', false], [[12, 17], 'LanguageGroup', 'number', 0], [[12, 18], 'ExpansionFactor', 'number', 0.06], [[12, 19], 'initialRandomSeed', 'number', 0], [20, 'defaultWidthX', 'number', 0], [21, 'nominalWidthX', 'number', 0], [22, 'vsindex', 'number', 0], [23, 'blend', CFFBlendOp, null], [19, 'Subrs', new CFFPointer(new CFFIndex(), { type: 'local' }), null]]);
+
+// Automatically generated from Appendix A of the CFF specification; do
+// not edit. Length should be 391.
+var standardStrings = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", "Semibold"];
+
+var StandardEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls'];
+
+var ExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
+
+var ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron'];
+
+var ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
+
+var ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior'];
+
+//########################
+// Scripts and Languages #
+//########################
+
+var LangSysTable = new r.Struct({
+  reserved: new r.Reserved(r.uint16),
+  reqFeatureIndex: r.uint16,
+  featureCount: r.uint16,
+  featureIndexes: new r.Array(r.uint16, 'featureCount')
+});
+
+var LangSysRecord = new r.Struct({
+  tag: new r.String(4),
+  langSys: new r.Pointer(r.uint16, LangSysTable, { type: 'parent' })
+});
+
+var Script = new r.Struct({
+  defaultLangSys: new r.Pointer(r.uint16, LangSysTable),
+  count: r.uint16,
+  langSysRecords: new r.Array(LangSysRecord, 'count')
+});
+
+var ScriptRecord = new r.Struct({
+  tag: new r.String(4),
+  script: new r.Pointer(r.uint16, Script, { type: 'parent' })
+});
+
+var ScriptList = new r.Array(ScriptRecord, r.uint16);
+
+//#######################
+// Features and Lookups #
+//#######################
+
+var Feature = new r.Struct({
+  featureParams: r.uint16, // pointer
+  lookupCount: r.uint16,
+  lookupListIndexes: new r.Array(r.uint16, 'lookupCount')
+});
+
+var FeatureRecord = new r.Struct({
+  tag: new r.String(4),
+  feature: new r.Pointer(r.uint16, Feature, { type: 'parent' })
+});
+
+var FeatureList = new r.Array(FeatureRecord, r.uint16);
+
+var LookupFlags = new r.Struct({
+  markAttachmentType: r.uint8,
+  flags: new r.Bitfield(r.uint8, ['rightToLeft', 'ignoreBaseGlyphs', 'ignoreLigatures', 'ignoreMarks', 'useMarkFilteringSet'])
+});
+
+function LookupList(SubTable) {
+  var Lookup = new r.Struct({
+    lookupType: r.uint16,
+    flags: LookupFlags,
+    subTableCount: r.uint16,
+    subTables: new r.Array(new r.Pointer(r.uint16, SubTable), 'subTableCount'),
+    markFilteringSet: new r.Optional(r.uint16, function (t) {
+      return t.flags.flags.useMarkFilteringSet;
+    })
+  });
+
+  return new r.LazyArray(new r.Pointer(r.uint16, Lookup), r.uint16);
+}
+
+//#################
+// Coverage Table #
+//#################
+
+var RangeRecord = new r.Struct({
+  start: r.uint16,
+  end: r.uint16,
+  startCoverageIndex: r.uint16
+});
+
+var Coverage = new r.VersionedStruct(r.uint16, {
+  1: {
+    glyphCount: r.uint16,
+    glyphs: new r.Array(r.uint16, 'glyphCount')
+  },
+  2: {
+    rangeCount: r.uint16,
+    rangeRecords: new r.Array(RangeRecord, 'rangeCount')
+  }
+});
+
+//#########################
+// Class Definition Table #
+//#########################
+
+var ClassRangeRecord = new r.Struct({
+  start: r.uint16,
+  end: r.uint16,
+  class: r.uint16
+});
+
+var ClassDef = new r.VersionedStruct(r.uint16, {
+  1: { // Class array
+    startGlyph: r.uint16,
+    glyphCount: r.uint16,
+    classValueArray: new r.Array(r.uint16, 'glyphCount')
+  },
+  2: { // Class ranges
+    classRangeCount: r.uint16,
+    classRangeRecord: new r.Array(ClassRangeRecord, 'classRangeCount')
+  }
+});
+
+//###############
+// Device Table #
+//###############
+
+var Device = new r.Struct({
+  a: r.uint16, // startSize for hinting Device, outerIndex for VariationIndex
+  b: r.uint16, // endSize for Device, innerIndex for VariationIndex
+  deltaFormat: r.uint16
+});
+
+//#############################################
+// Contextual Substitution/Positioning Tables #
+//#############################################
+
+var LookupRecord = new r.Struct({
+  sequenceIndex: r.uint16,
+  lookupListIndex: r.uint16
+});
+
+var Rule = new r.Struct({
+  glyphCount: r.uint16,
+  lookupCount: r.uint16,
+  input: new r.Array(r.uint16, function (t) {
+    return t.glyphCount - 1;
+  }),
+  lookupRecords: new r.Array(LookupRecord, 'lookupCount')
+});
+
+var RuleSet = new r.Array(new r.Pointer(r.uint16, Rule), r.uint16);
+
+var ClassRule = new r.Struct({
+  glyphCount: r.uint16,
+  lookupCount: r.uint16,
+  classes: new r.Array(r.uint16, function (t) {
+    return t.glyphCount - 1;
+  }),
+  lookupRecords: new r.Array(LookupRecord, 'lookupCount')
+});
+
+var ClassSet = new r.Array(new r.Pointer(r.uint16, ClassRule), r.uint16);
+
+var Context = new r.VersionedStruct(r.uint16, {
+  1: { // Simple context
+    coverage: new r.Pointer(r.uint16, Coverage),
+    ruleSetCount: r.uint16,
+    ruleSets: new r.Array(new r.Pointer(r.uint16, RuleSet), 'ruleSetCount')
+  },
+  2: { // Class-based context
+    coverage: new r.Pointer(r.uint16, Coverage),
+    classDef: new r.Pointer(r.uint16, ClassDef),
+    classSetCnt: r.uint16,
+    classSet: new r.Array(new r.Pointer(r.uint16, ClassSet), 'classSetCnt')
+  },
+  3: {
+    glyphCount: r.uint16,
+    lookupCount: r.uint16,
+    coverages: new r.Array(new r.Pointer(r.uint16, Coverage), 'glyphCount'),
+    lookupRecords: new r.Array(LookupRecord, 'lookupCount')
+  }
+});
+
+//######################################################
+// Chaining Contextual Substitution/Positioning Tables #
+//######################################################
+
+var ChainRule = new r.Struct({
+  backtrackGlyphCount: r.uint16,
+  backtrack: new r.Array(r.uint16, 'backtrackGlyphCount'),
+  inputGlyphCount: r.uint16,
+  input: new r.Array(r.uint16, function (t) {
+    return t.inputGlyphCount - 1;
+  }),
+  lookaheadGlyphCount: r.uint16,
+  lookahead: new r.Array(r.uint16, 'lookaheadGlyphCount'),
+  lookupCount: r.uint16,
+  lookupRecords: new r.Array(LookupRecord, 'lookupCount')
+});
+
+var ChainRuleSet = new r.Array(new r.Pointer(r.uint16, ChainRule), r.uint16);
+
+var ChainingContext = new r.VersionedStruct(r.uint16, {
+  1: { // Simple context glyph substitution
+    coverage: new r.Pointer(r.uint16, Coverage),
+    chainCount: r.uint16,
+    chainRuleSets: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')
+  },
+
+  2: { // Class-based chaining context
+    coverage: new r.Pointer(r.uint16, Coverage),
+    backtrackClassDef: new r.Pointer(r.uint16, ClassDef),
+    inputClassDef: new r.Pointer(r.uint16, ClassDef),
+    lookaheadClassDef: new r.Pointer(r.uint16, ClassDef),
+    chainCount: r.uint16,
+    chainClassSet: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')
+  },
+
+  3: { // Coverage-based chaining context
+    backtrackGlyphCount: r.uint16,
+    backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),
+    inputGlyphCount: r.uint16,
+    inputCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'inputGlyphCount'),
+    lookaheadGlyphCount: r.uint16,
+    lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),
+    lookupCount: r.uint16,
+    lookupRecords: new r.Array(LookupRecord, 'lookupCount')
+  }
+});
+
+var _;
+
+/*******************
+ * Variation Store *
+ *******************/
+
+var F2DOT14 = new r.Fixed(16, 'BE', 14);
+var RegionAxisCoordinates = new r.Struct({
+  startCoord: F2DOT14,
+  peakCoord: F2DOT14,
+  endCoord: F2DOT14
+});
+
+var VariationRegionList = new r.Struct({
+  axisCount: r.uint16,
+  regionCount: r.uint16,
+  variationRegions: new r.Array(new r.Array(RegionAxisCoordinates, 'axisCount'), 'regionCount')
+});
+
+var DeltaSet = new r.Struct({
+  shortDeltas: new r.Array(r.int16, function (t) {
+    return t.parent.shortDeltaCount;
+  }),
+  regionDeltas: new r.Array(r.int8, function (t) {
+    return t.parent.regionIndexCount - t.parent.shortDeltaCount;
+  }),
+  deltas: function deltas(t) {
+    return t.shortDeltas.concat(t.regionDeltas);
+  }
+});
+
+var ItemVariationData = new r.Struct({
+  itemCount: r.uint16,
+  shortDeltaCount: r.uint16,
+  regionIndexCount: r.uint16,
+  regionIndexes: new r.Array(r.uint16, 'regionIndexCount'),
+  deltaSets: new r.Array(DeltaSet, 'itemCount')
+});
+
+var ItemVariationStore = new r.Struct({
+  format: r.uint16,
+  variationRegionList: new r.Pointer(r.uint32, VariationRegionList),
+  variationDataCount: r.uint16,
+  itemVariationData: new r.Array(new r.Pointer(r.uint32, ItemVariationData), 'variationDataCount')
+});
+
+/**********************
+ * Feature Variations *
+ **********************/
+
+var ConditionTable = new r.VersionedStruct(r.uint16, {
+  1: (_ = {
+    axisIndex: r.uint16
+  }, _['axisIndex'] = r.uint16, _.filterRangeMinValue = F2DOT14, _.filterRangeMaxValue = F2DOT14, _)
+});
+
+var ConditionSet = new r.Struct({
+  conditionCount: r.uint16,
+  conditionTable: new r.Array(new r.Pointer(r.uint32, ConditionTable), 'conditionCount')
+});
+
+var FeatureTableSubstitutionRecord = new r.Struct({
+  featureIndex: r.uint16,
+  alternateFeatureTable: new r.Pointer(r.uint32, Feature, { type: 'parent' })
+});
+
+var FeatureTableSubstitution = new r.Struct({
+  version: r.fixed32,
+  substitutionCount: r.uint16,
+  substitutions: new r.Array(FeatureTableSubstitutionRecord, 'substitutionCount')
+});
+
+var FeatureVariationRecord = new r.Struct({
+  conditionSet: new r.Pointer(r.uint32, ConditionSet, { type: 'parent' }),
+  featureTableSubstitution: new r.Pointer(r.uint32, FeatureTableSubstitution, { type: 'parent' })
+});
+
+var FeatureVariations = new r.Struct({
+  majorVersion: r.uint16,
+  minorVersion: r.uint16,
+  featureVariationRecordCount: r.uint32,
+  featureVariationRecords: new r.Array(FeatureVariationRecord, 'featureVariationRecordCount')
+});
+
+// Checks if an operand is an index of a predefined value,
+// otherwise delegates to the provided type.
+
+var PredefinedOp = function () {
+  function PredefinedOp(predefinedOps, type) {
+    _classCallCheck(this, PredefinedOp);
+
+    this.predefinedOps = predefinedOps;
+    this.type = type;
+  }
+
+  PredefinedOp.prototype.decode = function decode(stream, parent, operands) {
+    if (this.predefinedOps[operands[0]]) {
+      return this.predefinedOps[operands[0]];
+    }
+
+    return this.type.decode(stream, parent, operands);
+  };
+
+  PredefinedOp.prototype.size = function size(value, ctx) {
+    return this.type.size(value, ctx);
+  };
+
+  PredefinedOp.prototype.encode = function encode(stream, value, ctx) {
+    var index = this.predefinedOps.indexOf(value);
+    if (index !== -1) {
+      return index;
+    }
+
+    return this.type.encode(stream, value, ctx);
+  };
+
+  return PredefinedOp;
+}();
+
+var CFFEncodingVersion = function (_r$Number) {
+  _inherits(CFFEncodingVersion, _r$Number);
+
+  function CFFEncodingVersion() {
+    _classCallCheck(this, CFFEncodingVersion);
+
+    return _possibleConstructorReturn(this, _r$Number.call(this, 'UInt8'));
+  }
+
+  CFFEncodingVersion.prototype.decode = function decode(stream) {
+    return r.uint8.decode(stream) & 0x7f;
+  };
+
+  return CFFEncodingVersion;
+}(r.Number);
+
+var Range1 = new r.Struct({
+  first: r.uint16,
+  nLeft: r.uint8
+});
+
+var Range2 = new r.Struct({
+  first: r.uint16,
+  nLeft: r.uint16
+});
+
+var CFFCustomEncoding = new r.VersionedStruct(new CFFEncodingVersion(), {
+  0: {
+    nCodes: r.uint8,
+    codes: new r.Array(r.uint8, 'nCodes')
+  },
+
+  1: {
+    nRanges: r.uint8,
+    ranges: new r.Array(Range1, 'nRanges')
+  }
+
+  // TODO: supplement?
+});
+
+var CFFEncoding = new PredefinedOp([StandardEncoding, ExpertEncoding], new CFFPointer(CFFCustomEncoding, { lazy: true }));
+
+// Decodes an array of ranges until the total
+// length is equal to the provided length.
+
+var RangeArray = function (_r$Array) {
+  _inherits(RangeArray, _r$Array);
+
+  function RangeArray() {
+    _classCallCheck(this, RangeArray);
+
+    return _possibleConstructorReturn(this, _r$Array.apply(this, arguments));
+  }
+
+  RangeArray.prototype.decode = function decode(stream, parent) {
+    var length = restructure_src_utils.resolveLength(this.length, stream, parent);
+    var count = 0;
+    var res = [];
+    while (count < length) {
+      var range = this.type.decode(stream, parent);
+      range.offset = count;
+      count += range.nLeft + 1;
+      res.push(range);
+    }
+
+    return res;
+  };
+
+  return RangeArray;
+}(r.Array);
+
+var CFFCustomCharset = new r.VersionedStruct(r.uint8, {
+  0: {
+    glyphs: new r.Array(r.uint16, function (t) {
+      return t.parent.CharStrings.length - 1;
+    })
+  },
+
+  1: {
+    ranges: new RangeArray(Range1, function (t) {
+      return t.parent.CharStrings.length - 1;
+    })
+  },
+
+  2: {
+    ranges: new RangeArray(Range2, function (t) {
+      return t.parent.CharStrings.length - 1;
+    })
+  }
+});
+
+var CFFCharset = new PredefinedOp([ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset], new CFFPointer(CFFCustomCharset, { lazy: true }));
+
+var FDRange3 = new r.Struct({
+  first: r.uint16,
+  fd: r.uint8
+});
+
+var FDRange4 = new r.Struct({
+  first: r.uint32,
+  fd: r.uint16
+});
+
+var FDSelect = new r.VersionedStruct(r.uint8, {
+  0: {
+    fds: new r.Array(r.uint8, function (t) {
+      return t.parent.CharStrings.length;
+    })
+  },
+
+  3: {
+    nRanges: r.uint16,
+    ranges: new r.Array(FDRange3, 'nRanges'),
+    sentinel: r.uint16
+  },
+
+  4: {
+    nRanges: r.uint32,
+    ranges: new r.Array(FDRange4, 'nRanges'),
+    sentinel: r.uint32
+  }
+});
+
+var ptr = new CFFPointer(CFFPrivateDict);
+
+var CFFPrivateOp = function () {
+  function CFFPrivateOp() {
+    _classCallCheck(this, CFFPrivateOp);
+  }
+
+  CFFPrivateOp.prototype.decode = function decode(stream, parent, operands) {
+    parent.length = operands[0];
+    return ptr.decode(stream, parent, [operands[1]]);
+  };
+
+  CFFPrivateOp.prototype.size = function size(dict, ctx) {
+    return [CFFPrivateDict.size(dict, ctx, false), ptr.size(dict, ctx)[0]];
+  };
+
+  CFFPrivateOp.prototype.encode = function encode(stream, dict, ctx) {
+    return [CFFPrivateDict.size(dict, ctx, false), ptr.encode(stream, dict, ctx)[0]];
+  };
+
+  return CFFPrivateOp;
+}();
+
+var FontDict = new CFFDict([
+// key       name                   type(s)                                 default
+[18, 'Private', new CFFPrivateOp(), null], [[12, 38], 'FontName', 'sid', null]]);
+
+var CFFTopDict = new CFFDict([
+// key       name                   type(s)                                 default
+[[12, 30], 'ROS', ['sid', 'sid', 'number'], null], [0, 'version', 'sid', null], [1, 'Notice', 'sid', null], [[12, 0], 'Copyright', 'sid', null], [2, 'FullName', 'sid', null], [3, 'FamilyName', 'sid', null], [4, 'Weight', 'sid', null], [[12, 1], 'isFixedPitch', 'boolean', false], [[12, 2], 'ItalicAngle', 'number', 0], [[12, 3], 'UnderlinePosition', 'number', -100], [[12, 4], 'UnderlineThickness', 'number', 50], [[12, 5], 'PaintType', 'number', 0], [[12, 6], 'CharstringType', 'number', 2], [[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [13, 'UniqueID', 'number', null], [5, 'FontBBox', 'array', [0, 0, 0, 0]], [[12, 8], 'StrokeWidth', 'number', 0], [14, 'XUID', 'array', null], [15, 'charset', CFFCharset, ISOAdobeCharset], [16, 'Encoding', CFFEncoding, StandardEncoding], [17, 'CharStrings', new CFFPointer(new CFFIndex()), null], [18, 'Private', new CFFPrivateOp(), null], [[12, 20], 'SyntheticBase', 'number', null], [[12, 21], 'PostScript', 'sid', null], [[12, 22], 'BaseFontName', 'sid', null], [[12, 23], 'BaseFontBlend', 'delta', null],
+
+// CID font specific
+[[12, 31], 'CIDFontVersion', 'number', 0], [[12, 32], 'CIDFontRevision', 'number', 0], [[12, 33], 'CIDFontType', 'number', 0], [[12, 34], 'CIDCount', 'number', 8720], [[12, 35], 'UIDBase', 'number', null], [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null], [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null], [[12, 38], 'FontName', 'sid', null]]);
+
+var VariationStore = new r.Struct({
+  length: r.uint16,
+  itemVariationStore: ItemVariationStore
+});
+
+var CFF2TopDict = new CFFDict([[[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [17, 'CharStrings', new CFFPointer(new CFFIndex()), null], [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null], [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null], [24, 'vstore', new CFFPointer(VariationStore), null], [25, 'maxstack', 'number', 193]]);
+
+var CFFTop = new r.VersionedStruct(r.fixed16, {
+  1: {
+    hdrSize: r.uint8,
+    offSize: r.uint8,
+    nameIndex: new CFFIndex(new r.String('length')),
+    topDictIndex: new CFFIndex(CFFTopDict),
+    stringIndex: new CFFIndex(new r.String('length')),
+    globalSubrIndex: new CFFIndex()
+  },
+
+  2: {
+    hdrSize: r.uint8,
+    length: r.uint16,
+    topDict: CFF2TopDict,
+    globalSubrIndex: new CFFIndex()
+  }
+});
+
+var CFFFont = function () {
+  function CFFFont(stream) {
+    _classCallCheck(this, CFFFont);
+
+    this.stream = stream;
+    this.decode();
+  }
+
+  CFFFont.decode = function decode(stream) {
+    return new CFFFont(stream);
+  };
+
+  CFFFont.prototype.decode = function decode() {
+    var start = this.stream.pos;
+    var top = CFFTop.decode(this.stream);
+    for (var key in top) {
+      var val = top[key];
+      this[key] = val;
+    }
+
+    if (this.version < 2) {
+      if (this.topDictIndex.length !== 1) {
+        throw new Error("Only a single font is allowed in CFF");
+      }
+
+      this.topDict = this.topDictIndex[0];
+    }
+
+    this.isCIDFont = this.topDict.ROS != null;
+    return this;
+  };
+
+  CFFFont.prototype.string = function string(sid) {
+    if (this.version >= 2) {
+      return null;
+    }
+
+    if (sid < standardStrings.length) {
+      return standardStrings[sid];
+    }
+
+    return this.stringIndex[sid - standardStrings.length];
+  };
+
+  CFFFont.prototype.getCharString = function getCharString(glyph) {
+    this.stream.pos = this.topDict.CharStrings[glyph].offset;
+    return this.stream.readBuffer(this.topDict.CharStrings[glyph].length);
+  };
+
+  CFFFont.prototype.getGlyphName = function getGlyphName(gid) {
+    // CFF2 glyph names are in the post table.
+    if (this.version >= 2) {
+      return null;
+    }
+
+    // CID-keyed fonts don't have glyph names
+    if (this.isCIDFont) {
+      return null;
+    }
+
+    var charset = this.topDict.charset;
+
+    if (Array.isArray(charset)) {
+      return charset[gid];
+    }
+
+    if (gid === 0) {
+      return '.notdef';
+    }
+
+    gid -= 1;
+
+    switch (charset.version) {
+      case 0:
+        return this.string(charset.glyphs[gid]);
+
+      case 1:
+      case 2:
+        for (var i = 0; i < charset.ranges.length; i++) {
+          var range = charset.ranges[i];
+          if (range.offset <= gid && gid <= range.offset + range.nLeft) {
+            return this.string(range.first + (gid - range.offset));
+          }
+        }
+        break;
+    }
+
+    return null;
+  };
+
+  CFFFont.prototype.fdForGlyph = function fdForGlyph(gid) {
+    if (!this.topDict.FDSelect) {
+      return null;
+    }
+
+    switch (this.topDict.FDSelect.version) {
+      case 0:
+        return this.topDict.FDSelect.fds[gid];
+
+      case 3:
+      case 4:
+        var ranges = this.topDict.FDSelect.ranges;
+
+        var low = 0;
+        var high = ranges.length - 1;
+
+        while (low <= high) {
+          var mid = low + high >> 1;
+
+          if (gid < ranges[mid].first) {
+            high = mid - 1;
+          } else if (mid < high && gid > ranges[mid + 1].first) {
+            low = mid + 1;
+          } else {
+            return ranges[mid].fd;
+          }
+        }
+      default:
+        throw new Error('Unknown FDSelect version: ' + this.topDict.FDSelect.version);
+    }
+  };
+
+  CFFFont.prototype.privateDictForGlyph = function privateDictForGlyph(gid) {
+    if (this.topDict.FDSelect) {
+      var fd = this.fdForGlyph(gid);
+      if (this.topDict.FDArray[fd]) {
+        return this.topDict.FDArray[fd].Private;
+      }
+
+      return null;
+    }
+
+    if (this.version < 2) {
+      return this.topDict.Private;
+    }
+
+    return this.topDict.FDArray[0].Private;
+  };
+
+  _createClass(CFFFont, [{
+    key: 'postscriptName',
+    get: function get() {
+      if (this.version < 2) {
+        return this.nameIndex[0];
+      }
+
+      return null;
+    }
+  }, {
+    key: 'fullName',
+    get: function get() {
+      return this.string(this.topDict.FullName);
+    }
+  }, {
+    key: 'familyName',
+    get: function get() {
+      return this.string(this.topDict.FamilyName);
+    }
+  }]);
+
+  return CFFFont;
+}();
+
+var VerticalOrigin = new r.Struct({
+  glyphIndex: r.uint16,
+  vertOriginY: r.int16
+});
+
+var VORG = new r.Struct({
+  majorVersion: r.uint16,
+  minorVersion: r.uint16,
+  defaultVertOriginY: r.int16,
+  numVertOriginYMetrics: r.uint16,
+  metrics: new r.Array(VerticalOrigin, 'numVertOriginYMetrics')
+});
+
+var BigMetrics = new r.Struct({
+  height: r.uint8,
+  width: r.uint8,
+  horiBearingX: r.int8,
+  horiBearingY: r.int8,
+  horiAdvance: r.uint8,
+  vertBearingX: r.int8,
+  vertBearingY: r.int8,
+  vertAdvance: r.uint8
+});
+
+var SmallMetrics = new r.Struct({
+  height: r.uint8,
+  width: r.uint8,
+  bearingX: r.int8,
+  bearingY: r.int8,
+  advance: r.uint8
+});
+
+var EBDTComponent = new r.Struct({
+  glyph: r.uint16,
+  xOffset: r.int8,
+  yOffset: r.int8
+});
+
+var ByteAligned = function ByteAligned() {
+  _classCallCheck(this, ByteAligned);
+};
+
+var BitAligned = function BitAligned() {
+  _classCallCheck(this, BitAligned);
+};
+
+var glyph = new r.VersionedStruct('version', {
+  1: {
+    metrics: SmallMetrics,
+    data: ByteAligned
+  },
+
+  2: {
+    metrics: SmallMetrics,
+    data: BitAligned
+  },
+
+  // format 3 is deprecated
+  // format 4 is not supported by Microsoft
+
+  5: {
+    data: BitAligned
+  },
+
+  6: {
+    metrics: BigMetrics,
+    data: ByteAligned
+  },
+
+  7: {
+    metrics: BigMetrics,
+    data: BitAligned
+  },
+
+  8: {
+    metrics: SmallMetrics,
+    pad: new r.Reserved(r.uint8),
+    numComponents: r.uint16,
+    components: new r.Array(EBDTComponent, 'numComponents')
+  },
+
+  9: {
+    metrics: BigMetrics,
+    pad: new r.Reserved(r.uint8),
+    numComponents: r.uint16,
+    components: new r.Array(EBDTComponent, 'numComponents')
+  },
+
+  17: {
+    metrics: SmallMetrics,
+    dataLen: r.uint32,
+    data: new r.Buffer('dataLen')
+  },
+
+  18: {
+    metrics: BigMetrics,
+    dataLen: r.uint32,
+    data: new r.Buffer('dataLen')
+  },
+
+  19: {
+    dataLen: r.uint32,
+    data: new r.Buffer('dataLen')
+  }
+});
+
+var SBitLineMetrics = new r.Struct({
+  ascender: r.int8,
+  descender: r.int8,
+  widthMax: r.uint8,
+  caretSlopeNumerator: r.int8,
+  caretSlopeDenominator: r.int8,
+  caretOffset: r.int8,
+  minOriginSB: r.int8,
+  minAdvanceSB: r.int8,
+  maxBeforeBL: r.int8,
+  minAfterBL: r.int8,
+  pad: new r.Reserved(r.int8, 2)
+});
+
+var CodeOffsetPair = new r.Struct({
+  glyphCode: r.uint16,
+  offset: r.uint16
+});
+
+var IndexSubtable = new r.VersionedStruct(r.uint16, {
+  header: {
+    imageFormat: r.uint16,
+    imageDataOffset: r.uint32
+  },
+
+  1: {
+    offsetArray: new r.Array(r.uint32, function (t) {
+      return t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1;
+    })
+  },
+
+  2: {
+    imageSize: r.uint32,
+    bigMetrics: BigMetrics
+  },
+
+  3: {
+    offsetArray: new r.Array(r.uint16, function (t) {
+      return t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1;
+    })
+  },
+
+  4: {
+    numGlyphs: r.uint32,
+    glyphArray: new r.Array(CodeOffsetPair, function (t) {
+      return t.numGlyphs + 1;
+    })
+  },
+
+  5: {
+    imageSize: r.uint32,
+    bigMetrics: BigMetrics,
+    numGlyphs: r.uint32,
+    glyphCodeArray: new r.Array(r.uint16, 'numGlyphs')
+  }
+});
+
+var IndexSubtableArray = new r.Struct({
+  firstGlyphIndex: r.uint16,
+  lastGlyphIndex: r.uint16,
+  subtable: new r.Pointer(r.uint32, IndexSubtable)
+});
+
+var BitmapSizeTable = new r.Struct({
+  indexSubTableArray: new r.Pointer(r.uint32, new r.Array(IndexSubtableArray, 1), { type: 'parent' }),
+  indexTablesSize: r.uint32,
+  numberOfIndexSubTables: r.uint32,
+  colorRef: r.uint32,
+  hori: SBitLineMetrics,
+  vert: SBitLineMetrics,
+  startGlyphIndex: r.uint16,
+  endGlyphIndex: r.uint16,
+  ppemX: r.uint8,
+  ppemY: r.uint8,
+  bitDepth: r.uint8,
+  flags: new r.Bitfield(r.uint8, ['horizontal', 'vertical'])
+});
+
+var EBLC = new r.Struct({
+  version: r.uint32, // 0x00020000
+  numSizes: r.uint32,
+  sizes: new r.Array(BitmapSizeTable, 'numSizes')
+});
+
+var ImageTable = new r.Struct({
+  ppem: r.uint16,
+  resolution: r.uint16,
+  imageOffsets: new r.Array(new r.Pointer(r.uint32, 'void'), function (t) {
+    return t.parent.parent.maxp.numGlyphs + 1;
+  })
+});
+
+// This is the Apple sbix table, used by the "Apple Color Emoji" font.
+// It includes several image tables with images for each bitmap glyph
+// of several different sizes.
+var sbix = new r.Struct({
+  version: r.uint16,
+  flags: new r.Bitfield(r.uint16, ['renderOutlines']),
+  numImgTables: r.uint32,
+  imageTables: new r.Array(new r.Pointer(r.uint32, ImageTable), 'numImgTables')
+});
+
+var LayerRecord = new r.Struct({
+  gid: r.uint16, // Glyph ID of layer glyph (must be in z-order from bottom to top).
+  paletteIndex: r.uint16 // Index value to use in the appropriate palette. This value must
+}); // be less than numPaletteEntries in the CPAL table, except for
+// the special case noted below. Each palette entry is 16 bits.
+// A palette index of 0xFFFF is a special case indicating that
+// the text foreground color should be used.
+
+var BaseGlyphRecord = new r.Struct({
+  gid: r.uint16, // Glyph ID of reference glyph. This glyph is for reference only
+  // and is not rendered for color.
+  firstLayerIndex: r.uint16, // Index (from beginning of the Layer Records) to the layer record.
+  // There will be numLayers consecutive entries for this base glyph.
+  numLayers: r.uint16
+});
+
+var COLR = new r.Struct({
+  version: r.uint16,
+  numBaseGlyphRecords: r.uint16,
+  baseGlyphRecord: new r.Pointer(r.uint32, new r.Array(BaseGlyphRecord, 'numBaseGlyphRecords')),
+  layerRecords: new r.Pointer(r.uint32, new r.Array(LayerRecord, 'numLayerRecords'), { lazy: true }),
+  numLayerRecords: r.uint16
+});
+
+var ColorRecord = new r.Struct({
+  blue: r.uint8,
+  green: r.uint8,
+  red: r.uint8,
+  alpha: r.uint8
+});
+
+var CPAL = new r.VersionedStruct(r.uint16, {
+  header: {
+    numPaletteEntries: r.uint16,
+    numPalettes: r.uint16,
+    numColorRecords: r.uint16,
+    colorRecords: new r.Pointer(r.uint32, new r.Array(ColorRecord, 'numColorRecords')),
+    colorRecordIndices: new r.Array(r.uint16, 'numPalettes')
+  },
+  0: {},
+  1: {
+    offsetPaletteTypeArray: new r.Pointer(r.uint32, new r.Array(r.uint32, 'numPalettes')),
+    offsetPaletteLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPalettes')),
+    offsetPaletteEntryLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPaletteEntries'))
+  }
+});
+
+var BaseCoord = new r.VersionedStruct(r.uint16, {
+  1: { // Design units only
+    coordinate: r.int16 // X or Y value, in design units
+  },
+
+  2: { // Design units plus contour point
+    coordinate: r.int16, // X or Y value, in design units
+    referenceGlyph: r.uint16, // GlyphID of control glyph
+    baseCoordPoint: r.uint16 // Index of contour point on the referenceGlyph
+  },
+
+  3: { // Design units plus Device table
+    coordinate: r.int16, // X or Y value, in design units
+    deviceTable: new r.Pointer(r.uint16, Device) // Device table for X or Y value
+  }
+});
+
+var BaseValues = new r.Struct({
+  defaultIndex: r.uint16, // Index of default baseline for this script-same index in the BaseTagList
+  baseCoordCount: r.uint16,
+  baseCoords: new r.Array(new r.Pointer(r.uint16, BaseCoord), 'baseCoordCount')
+});
+
+var FeatMinMaxRecord = new r.Struct({
+  tag: new r.String(4), // 4-byte feature identification tag-must match FeatureTag in FeatureList
+  minCoord: new r.Pointer(r.uint16, BaseCoord, { type: 'parent' }), // May be NULL
+  maxCoord: new r.Pointer(r.uint16, BaseCoord, { type: 'parent' }) // May be NULL
+});
+
+var MinMax = new r.Struct({
+  minCoord: new r.Pointer(r.uint16, BaseCoord), // May be NULL
+  maxCoord: new r.Pointer(r.uint16, BaseCoord), // May be NULL
+  featMinMaxCount: r.uint16, // May be 0
+  featMinMaxRecords: new r.Array(FeatMinMaxRecord, 'featMinMaxCount') // In alphabetical order
+});
+
+var BaseLangSysRecord = new r.Struct({
+  tag: new r.String(4), // 4-byte language system identification tag
+  minMax: new r.Pointer(r.uint16, MinMax, { type: 'parent' })
+});
+
+var BaseScript = new r.Struct({
+  baseValues: new r.Pointer(r.uint16, BaseValues), // May be NULL
+  defaultMinMax: new r.Pointer(r.uint16, MinMax), // May be NULL
+  baseLangSysCount: r.uint16, // May be 0
+  baseLangSysRecords: new r.Array(BaseLangSysRecord, 'baseLangSysCount') // in alphabetical order by BaseLangSysTag
+});
+
+var BaseScriptRecord = new r.Struct({
+  tag: new r.String(4), // 4-byte script identification tag
+  script: new r.Pointer(r.uint16, BaseScript, { type: 'parent' })
+});
+
+var BaseScriptList = new r.Array(BaseScriptRecord, r.uint16);
+
+// Array of 4-byte baseline identification tags-must be in alphabetical order
+var BaseTagList = new r.Array(new r.String(4), r.uint16);
+
+var Axis = new r.Struct({
+  baseTagList: new r.Pointer(r.uint16, BaseTagList), // May be NULL
+  baseScriptList: new r.Pointer(r.uint16, BaseScriptList)
+});
+
+var BASE = new r.VersionedStruct(r.uint32, {
+  header: {
+    horizAxis: new r.Pointer(r.uint16, Axis), // May be NULL
+    vertAxis: new r.Pointer(r.uint16, Axis) // May be NULL
+  },
+
+  0x00010000: {},
+  0x00010001: {
+    itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)
+  }
+});
+
+var AttachPoint = new r.Array(r.uint16, r.uint16);
+var AttachList = new r.Struct({
+  coverage: new r.Pointer(r.uint16, Coverage),
+  glyphCount: r.uint16,
+  attachPoints: new r.Array(new r.Pointer(r.uint16, AttachPoint), 'glyphCount')
+});
+
+var CaretValue = new r.VersionedStruct(r.uint16, {
+  1: { // Design units only
+    coordinate: r.int16
+  },
+
+  2: { // Contour point
+    caretValuePoint: r.uint16
+  },
+
+  3: { // Design units plus Device table
+    coordinate: r.int16,
+    deviceTable: new r.Pointer(r.uint16, Device)
+  }
+});
+
+var LigGlyph = new r.Array(new r.Pointer(r.uint16, CaretValue), r.uint16);
+
+var LigCaretList = new r.Struct({
+  coverage: new r.Pointer(r.uint16, Coverage),
+  ligGlyphCount: r.uint16,
+  ligGlyphs: new r.Array(new r.Pointer(r.uint16, LigGlyph), 'ligGlyphCount')
+});
+
+var MarkGlyphSetsDef = new r.Struct({
+  markSetTableFormat: r.uint16,
+  markSetCount: r.uint16,
+  coverage: new r.Array(new r.Pointer(r.uint32, Coverage), 'markSetCount')
+});
+
+var GDEF = new r.VersionedStruct(r.uint32, {
+  header: {
+    glyphClassDef: new r.Pointer(r.uint16, ClassDef),
+    attachList: new r.Pointer(r.uint16, AttachList),
+    ligCaretList: new r.Pointer(r.uint16, LigCaretList),
+    markAttachClassDef: new r.Pointer(r.uint16, ClassDef)
+  },
+
+  0x00010000: {},
+  0x00010002: {
+    markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef)
+  },
+  0x00010003: {
+    markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef),
+    itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)
+  }
+});
+
+var ValueFormat = new r.Bitfield(r.uint16, ['xPlacement', 'yPlacement', 'xAdvance', 'yAdvance', 'xPlaDevice', 'yPlaDevice', 'xAdvDevice', 'yAdvDevice']);
+
+var types = {
+  xPlacement: r.int16,
+  yPlacement: r.int16,
+  xAdvance: r.int16,
+  yAdvance: r.int16,
+  xPlaDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: 'rel' }),
+  yPlaDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: 'rel' }),
+  xAdvDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: 'rel' }),
+  yAdvDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: 'rel' })
+};
+
+var ValueRecord = function () {
+  function ValueRecord() {
+    var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'valueFormat';
+
+    _classCallCheck(this, ValueRecord);
+
+    this.key = key;
+  }
+
+  ValueRecord.prototype.buildStruct = function buildStruct(parent) {
+    var struct = parent;
+    while (!struct[this.key] && struct.parent) {
+      struct = struct.parent;
+    }
+
+    if (!struct[this.key]) return;
+
+    var fields = {};
+    fields.rel = function () {
+      return struct._startOffset;
+    };
+
+    var format = struct[this.key];
+    for (var key in format) {
+      if (format[key]) {
+        fields[key] = types[key];
+      }
+    }
+
+    return new r.Struct(fields);
+  };
+
+  ValueRecord.prototype.size = function size(val, ctx) {
+    return this.buildStruct(ctx).size(val, ctx);
+  };
+
+  ValueRecord.prototype.decode = function decode(stream, parent) {
+    var res = this.buildStruct(parent).decode(stream, parent);
+    delete res.rel;
+    return res;
+  };
+
+  return ValueRecord;
+}();
+
+var PairValueRecord = new r.Struct({
+  secondGlyph: r.uint16,
+  value1: new ValueRecord('valueFormat1'),
+  value2: new ValueRecord('valueFormat2')
+});
+
+var PairSet = new r.Array(PairValueRecord, r.uint16);
+
+var Class2Record = new r.Struct({
+  value1: new ValueRecord('valueFormat1'),
+  value2: new ValueRecord('valueFormat2')
+});
+
+var Anchor = new r.VersionedStruct(r.uint16, {
+  1: { // Design units only
+    xCoordinate: r.int16,
+    yCoordinate: r.int16
+  },
+
+  2: { // Design units plus contour point
+    xCoordinate: r.int16,
+    yCoordinate: r.int16,
+    anchorPoint: r.uint16
+  },
+
+  3: { // Design units plus Device tables
+    xCoordinate: r.int16,
+    yCoordinate: r.int16,
+    xDeviceTable: new r.Pointer(r.uint16, Device),
+    yDeviceTable: new r.Pointer(r.uint16, Device)
+  }
+});
+
+var EntryExitRecord = new r.Struct({
+  entryAnchor: new r.Pointer(r.uint16, Anchor, { type: 'parent' }),
+  exitAnchor: new r.Pointer(r.uint16, Anchor, { type: 'parent' })
+});
+
+var MarkRecord = new r.Struct({
+  class: r.uint16,
+  markAnchor: new r.Pointer(r.uint16, Anchor, { type: 'parent' })
+});
+
+var MarkArray = new r.Array(MarkRecord, r.uint16);
+
+var BaseRecord = new r.Array(new r.Pointer(r.uint16, Anchor), function (t) {
+  return t.parent.classCount;
+});
+var BaseArray = new r.Array(BaseRecord, r.uint16);
+
+var ComponentRecord = new r.Array(new r.Pointer(r.uint16, Anchor), function (t) {
+  return t.parent.parent.classCount;
+});
+var LigatureAttach = new r.Array(ComponentRecord, r.uint16);
+var LigatureArray = new r.Array(new r.Pointer(r.uint16, LigatureAttach), r.uint16);
+
+var GPOSLookup = new r.VersionedStruct('lookupType', {
+  1: new r.VersionedStruct(r.uint16, { // Single Adjustment
+    1: { // Single positioning value
+      coverage: new r.Pointer(r.uint16, Coverage),
+      valueFormat: ValueFormat,
+      value: new ValueRecord()
+    },
+    2: {
+      coverage: new r.Pointer(r.uint16, Coverage),
+      valueFormat: ValueFormat,
+      valueCount: r.uint16,
+      values: new r.LazyArray(new ValueRecord(), 'valueCount')
+    }
+  }),
+
+  2: new r.VersionedStruct(r.uint16, { // Pair Adjustment Positioning
+    1: { // Adjustments for glyph pairs
+      coverage: new r.Pointer(r.uint16, Coverage),
+      valueFormat1: ValueFormat,
+      valueFormat2: ValueFormat,
+      pairSetCount: r.uint16,
+      pairSets: new r.LazyArray(new r.Pointer(r.uint16, PairSet), 'pairSetCount')
+    },
+
+    2: { // Class pair adjustment
+      coverage: new r.Pointer(r.uint16, Coverage),
+      valueFormat1: ValueFormat,
+      valueFormat2: ValueFormat,
+      classDef1: new r.Pointer(r.uint16, ClassDef),
+      classDef2: new r.Pointer(r.uint16, ClassDef),
+      class1Count: r.uint16,
+      class2Count: r.uint16,
+      classRecords: new r.LazyArray(new r.LazyArray(Class2Record, 'class2Count'), 'class1Count')
+    }
+  }),
+
+  3: { // Cursive Attachment Positioning
+    format: r.uint16,
+    coverage: new r.Pointer(r.uint16, Coverage),
+    entryExitCount: r.uint16,
+    entryExitRecords: new r.Array(EntryExitRecord, 'entryExitCount')
+  },
+
+  4: { // MarkToBase Attachment Positioning
+    format: r.uint16,
+    markCoverage: new r.Pointer(r.uint16, Coverage),
+    baseCoverage: new r.Pointer(r.uint16, Coverage),
+    classCount: r.uint16,
+    markArray: new r.Pointer(r.uint16, MarkArray),
+    baseArray: new r.Pointer(r.uint16, BaseArray)
+  },
+
+  5: { // MarkToLigature Attachment Positioning
+    format: r.uint16,
+    markCoverage: new r.Pointer(r.uint16, Coverage),
+    ligatureCoverage: new r.Pointer(r.uint16, Coverage),
+    classCount: r.uint16,
+    markArray: new r.Pointer(r.uint16, MarkArray),
+    ligatureArray: new r.Pointer(r.uint16, LigatureArray)
+  },
+
+  6: { // MarkToMark Attachment Positioning
+    format: r.uint16,
+    mark1Coverage: new r.Pointer(r.uint16, Coverage),
+    mark2Coverage: new r.Pointer(r.uint16, Coverage),
+    classCount: r.uint16,
+    mark1Array: new r.Pointer(r.uint16, MarkArray),
+    mark2Array: new r.Pointer(r.uint16, BaseArray)
+  },
+
+  7: Context, // Contextual positioning
+  8: ChainingContext, // Chaining contextual positioning
+
+  9: { // Extension Positioning
+    posFormat: r.uint16,
+    lookupType: r.uint16, // cannot also be 9
+    extension: new r.Pointer(r.uint32, GPOSLookup)
+  }
+});
+
+// Fix circular reference
+GPOSLookup.versions[9].extension.type = GPOSLookup;
+
+var GPOS = new r.VersionedStruct(r.uint32, {
+  header: {
+    scriptList: new r.Pointer(r.uint16, ScriptList),
+    featureList: new r.Pointer(r.uint16, FeatureList),
+    lookupList: new r.Pointer(r.uint16, new LookupList(GPOSLookup))
+  },
+
+  0x00010000: {},
+  0x00010001: {
+    featureVariations: new r.Pointer(r.uint32, FeatureVariations)
+  }
+});
+
+var Sequence = new r.Array(r.uint16, r.uint16);
+var AlternateSet = Sequence;
+
+var Ligature = new r.Struct({
+  glyph: r.uint16,
+  compCount: r.uint16,
+  components: new r.Array(r.uint16, function (t) {
+    return t.compCount - 1;
+  })
+});
+
+var LigatureSet = new r.Array(new r.Pointer(r.uint16, Ligature), r.uint16);
+
+var GSUBLookup = new r.VersionedStruct('lookupType', {
+  1: new r.VersionedStruct(r.uint16, { // Single Substitution
+    1: {
+      coverage: new r.Pointer(r.uint16, Coverage),
+      deltaGlyphID: r.int16
+    },
+    2: {
+      coverage: new r.Pointer(r.uint16, Coverage),
+      glyphCount: r.uint16,
+      substitute: new r.LazyArray(r.uint16, 'glyphCount')
+    }
+  }),
+
+  2: { // Multiple Substitution
+    substFormat: r.uint16,
+    coverage: new r.Pointer(r.uint16, Coverage),
+    count: r.uint16,
+    sequences: new r.LazyArray(new r.Pointer(r.uint16, Sequence), 'count')
+  },
+
+  3: { // Alternate Substitution
+    substFormat: r.uint16,
+    coverage: new r.Pointer(r.uint16, Coverage),
+    count: r.uint16,
+    alternateSet: new r.LazyArray(new r.Pointer(r.uint16, AlternateSet), 'count')
+  },
+
+  4: { // Ligature Substitution
+    substFormat: r.uint16,
+    coverage: new r.Pointer(r.uint16, Coverage),
+    count: r.uint16,
+    ligatureSets: new r.LazyArray(new r.Pointer(r.uint16, LigatureSet), 'count')
+  },
+
+  5: Context, // Contextual Substitution
+  6: ChainingContext, // Chaining Contextual Substitution
+
+  7: { // Extension Substitution
+    substFormat: r.uint16,
+    lookupType: r.uint16, // cannot also be 7
+    extension: new r.Pointer(r.uint32, GSUBLookup)
+  },
+
+  8: { // Reverse Chaining Contextual Single Substitution
+    substFormat: r.uint16,
+    coverage: new r.Pointer(r.uint16, Coverage),
+    backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),
+    lookaheadGlyphCount: r.uint16,
+    lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),
+    glyphCount: r.uint16,
+    substitutes: new r.Array(r.uint16, 'glyphCount')
+  }
+});
+
+// Fix circular reference
+GSUBLookup.versions[7].extension.type = GSUBLookup;
+
+var GSUB = new r.VersionedStruct(r.uint32, {
+  header: {
+    scriptList: new r.Pointer(r.uint16, ScriptList),
+    featureList: new r.Pointer(r.uint16, FeatureList),
+    lookupList: new r.Pointer(r.uint16, new LookupList(GSUBLookup))
+  },
+
+  0x00010000: {},
+  0x00010001: {
+    featureVariations: new r.Pointer(r.uint32, FeatureVariations)
+  }
+});
+
+var JstfGSUBModList = new r.Array(r.uint16, r.uint16);
+
+var JstfPriority = new r.Struct({
+  shrinkageEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
+  shrinkageDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
+  shrinkageEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
+  shrinkageDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
+  shrinkageJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup)),
+  extensionEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
+  extensionDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
+  extensionEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
+  extensionDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
+  extensionJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup))
+});
+
+var JstfLangSys = new r.Array(new r.Pointer(r.uint16, JstfPriority), r.uint16);
+
+var JstfLangSysRecord = new r.Struct({
+  tag: new r.String(4),
+  jstfLangSys: new r.Pointer(r.uint16, JstfLangSys)
+});
+
+var JstfScript = new r.Struct({
+  extenderGlyphs: new r.Pointer(r.uint16, new r.Array(r.uint16, r.uint16)), // array of glyphs to extend line length
+  defaultLangSys: new r.Pointer(r.uint16, JstfLangSys),
+  langSysCount: r.uint16,
+  langSysRecords: new r.Array(JstfLangSysRecord, 'langSysCount')
+});
+
+var JstfScriptRecord = new r.Struct({
+  tag: new r.String(4),
+  script: new r.Pointer(r.uint16, JstfScript, { type: 'parent' })
+});
+
+var JSTF = new r.Struct({
+  version: r.uint32, // should be 0x00010000
+  scriptCount: r.uint16,
+  scriptList: new r.Array(JstfScriptRecord, 'scriptCount')
+});
+
+// TODO: add this to restructure
+
+var VariableSizeNumber = function () {
+  function VariableSizeNumber(size) {
+    _classCallCheck(this, VariableSizeNumber);
+
+    this._size = size;
+  }
+
+  VariableSizeNumber.prototype.decode = function decode(stream, parent) {
+    switch (this.size(0, parent)) {
+      case 1:
+        return stream.readUInt8();
+      case 2:
+        return stream.readUInt16BE();
+      case 3:
+        return stream.readUInt24BE();
+      case 4:
+        return stream.readUInt32BE();
+    }
+  };
+
+  VariableSizeNumber.prototype.size = function size(val, parent) {
+    return restructure_src_utils.resolveLength(this._size, null, parent);
+  };
+
+  return VariableSizeNumber;
+}();
+
+var MapDataEntry = new r.Struct({
+  entry: new VariableSizeNumber(function (t) {
+    return ((t.parent.entryFormat & 0x0030) >> 4) + 1;
+  }),
+  outerIndex: function outerIndex(t) {
+    return t.entry >> (t.parent.entryFormat & 0x000F) + 1;
+  },
+  innerIndex: function innerIndex(t) {
+    return t.entry & (1 << (t.parent.entryFormat & 0x000F) + 1) - 1;
+  }
+});
+
+var DeltaSetIndexMap = new r.Struct({
+  entryFormat: r.uint16,
+  mapCount: r.uint16,
+  mapData: new r.Array(MapDataEntry, 'mapCount')
+});
+
+var HVAR = new r.Struct({
+  majorVersion: r.uint16,
+  minorVersion: r.uint16,
+  itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore),
+  advanceWidthMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),
+  LSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),
+  RSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap)
+});
+
+var Signature = new r.Struct({
+  format: r.uint32,
+  length: r.uint32,
+  offset: r.uint32
+});
+
+var SignatureBlock = new r.Struct({
+  reserved: new r.Reserved(r.uint16, 2),
+  cbSignature: r.uint32, // Length (in bytes) of the PKCS#7 packet in pbSignature
+  signature: new r.Buffer('cbSignature')
+});
+
+var DSIG = new r.Struct({
+  ulVersion: r.uint32, // Version number of the DSIG table (0x00000001)
+  usNumSigs: r.uint16, // Number of signatures in the table
+  usFlag: r.uint16, // Permission flags
+  signatures: new r.Array(Signature, 'usNumSigs'),
+  signatureBlocks: new r.Array(SignatureBlock, 'usNumSigs')
+});
+
+var GaspRange = new r.Struct({
+  rangeMaxPPEM: r.uint16, // Upper limit of range, in ppem
+  rangeGaspBehavior: new r.Bitfield(r.uint16, [// Flags describing desired rasterizer behavior
+  'grayscale', 'gridfit', 'symmetricSmoothing', 'symmetricGridfit' // only in version 1, for ClearType
+  ])
+});
+
+var gasp = new r.Struct({
+  version: r.uint16, // set to 0
+  numRanges: r.uint16,
+  gaspRanges: new r.Array(GaspRange, 'numRanges') // Sorted by ppem
+});
+
+var DeviceRecord = new r.Struct({
+  pixelSize: r.uint8,
+  maximumWidth: r.uint8,
+  widths: new r.Array(r.uint8, function (t) {
+    return t.parent.parent.maxp.numGlyphs;
+  })
+});
+
+// The Horizontal Device Metrics table stores integer advance widths scaled to particular pixel sizes
+var hdmx = new r.Struct({
+  version: r.uint16,
+  numRecords: r.int16,
+  sizeDeviceRecord: r.int32,
+  records: new r.Array(DeviceRecord, 'numRecords')
+});
+
+var KernPair = new r.Struct({
+  left: r.uint16,
+  right: r.uint16,
+  value: r.int16
+});
+
+var ClassTable = new r.Struct({
+  firstGlyph: r.uint16,
+  nGlyphs: r.uint16,
+  offsets: new r.Array(r.uint16, 'nGlyphs'),
+  max: function max(t) {
+    return t.offsets.length && Math.max.apply(Math, t.offsets);
+  }
+});
+
+var Kern2Array = new r.Struct({
+  off: function off(t) {
+    return t._startOffset - t.parent.parent._startOffset;
+  },
+  len: function len(t) {
+    return ((t.parent.leftTable.max - t.off) / t.parent.rowWidth + 1) * (t.parent.rowWidth / 2);
+  },
+  values: new r.LazyArray(r.int16, 'len')
+});
+
+var KernSubtable = new r.VersionedStruct('format', {
+  0: {
+    nPairs: r.uint16,
+    searchRange: r.uint16,
+    entrySelector: r.uint16,
+    rangeShift: r.uint16,
+    pairs: new r.Array(KernPair, 'nPairs')
+  },
+
+  2: {
+    rowWidth: r.uint16,
+    leftTable: new r.Pointer(r.uint16, ClassTable, { type: 'parent' }),
+    rightTable: new r.Pointer(r.uint16, ClassTable, { type: 'parent' }),
+    array: new r.Pointer(r.uint16, Kern2Array, { type: 'parent' })
+  },
+
+  3: {
+    glyphCount: r.uint16,
+    kernValueCount: r.uint8,
+    leftClassCount: r.uint8,
+    rightClassCount: r.uint8,
+    flags: r.uint8,
+    kernValue: new r.Array(r.int16, 'kernValueCount'),
+    leftClass: new r.Array(r.uint8, 'glyphCount'),
+    rightClass: new r.Array(r.uint8, 'glyphCount'),
+    kernIndex: new r.Array(r.uint8, function (t) {
+      return t.leftClassCount * t.rightClassCount;
+    })
+  }
+});
+
+var KernTable = new r.VersionedStruct('version', {
+  0: { // Microsoft uses this format
+    subVersion: r.uint16, // Microsoft has an extra sub-table version number
+    length: r.uint16, // Length of the subtable, in bytes
+    format: r.uint8, // Format of subtable
+    coverage: new r.Bitfield(r.uint8, ['horizontal', // 1 if table has horizontal data, 0 if vertical
+    'minimum', // If set to 1, the table has minimum values. If set to 0, the table has kerning values.
+    'crossStream', // If set to 1, kerning is perpendicular to the flow of the text
+    'override' // If set to 1 the value in this table replaces the accumulated value
+    ]),
+    subtable: KernSubtable,
+    padding: new r.Reserved(r.uint8, function (t) {
+      return t.length - t._currentOffset;
+    })
+  },
+  1: { // Apple uses this format
+    length: r.uint32,
+    coverage: new r.Bitfield(r.uint8, [null, null, null, null, null, 'variation', // Set if table has variation kerning values
+    'crossStream', // Set if table has cross-stream kerning values
+    'vertical' // Set if table has vertical kerning values
+    ]),
+    format: r.uint8,
+    tupleIndex: r.uint16,
+    subtable: KernSubtable,
+    padding: new r.Reserved(r.uint8, function (t) {
+      return t.length - t._currentOffset;
+    })
+  }
+});
+
+var kern = new r.VersionedStruct(r.uint16, {
+  0: { // Microsoft Version
+    nTables: r.uint16,
+    tables: new r.Array(KernTable, 'nTables')
+  },
+
+  1: { // Apple Version
+    reserved: new r.Reserved(r.uint16), // the other half of the version number
+    nTables: r.uint32,
+    tables: new r.Array(KernTable, 'nTables')
+  }
+});
+
+// Linear Threshold table
+// Records the ppem for each glyph at which the scaling becomes linear again,
+// despite instructions effecting the advance width
+var LTSH = new r.Struct({
+  version: r.uint16,
+  numGlyphs: r.uint16,
+  yPels: new r.Array(r.uint8, 'numGlyphs')
+});
+
+// PCL 5 Table
+// NOTE: The PCLT table is strongly discouraged for OpenType fonts with TrueType outlines
+var PCLT = new r.Struct({
+  version: r.uint16,
+  fontNumber: r.uint32,
+  pitch: r.uint16,
+  xHeight: r.uint16,
+  style: r.uint16,
+  typeFamily: r.uint16,
+  capHeight: r.uint16,
+  symbolSet: r.uint16,
+  typeface: new r.String(16),
+  characterComplement: new r.String(8),
+  fileName: new r.String(6),
+  strokeWeight: new r.String(1),
+  widthType: new r.String(1),
+  serifStyle: r.uint8,
+  reserved: new r.Reserved(r.uint8)
+});
+
+// VDMX tables contain ascender/descender overrides for certain (usually small)
+// sizes. This is needed in order to match font metrics on Windows.
+
+var Ratio = new r.Struct({
+  bCharSet: r.uint8, // Character set
+  xRatio: r.uint8, // Value to use for x-Ratio
+  yStartRatio: r.uint8, // Starting y-Ratio value
+  yEndRatio: r.uint8 // Ending y-Ratio value
+});
+
+var vTable = new r.Struct({
+  yPelHeight: r.uint16, // yPelHeight to which values apply
+  yMax: r.int16, // Maximum value (in pels) for this yPelHeight
+  yMin: r.int16 // Minimum value (in pels) for this yPelHeight
+});
+
+var VdmxGroup = new r.Struct({
+  recs: r.uint16, // Number of height records in this group
+  startsz: r.uint8, // Starting yPelHeight
+  endsz: r.uint8, // Ending yPelHeight
+  entries: new r.Array(vTable, 'recs') // The VDMX records
+});
+
+var VDMX = new r.Struct({
+  version: r.uint16, // Version number (0 or 1)
+  numRecs: r.uint16, // Number of VDMX groups present
+  numRatios: r.uint16, // Number of aspect ratio groupings
+  ratioRanges: new r.Array(Ratio, 'numRatios'), // Ratio ranges
+  offsets: new r.Array(r.uint16, 'numRatios'), // Offset to the VDMX group for this ratio range
+  groups: new r.Array(VdmxGroup, 'numRecs') // The actual VDMX groupings
+});
+
+// Vertical Header Table
+var vhea = new r.Struct({
+  version: r.uint16, // Version number of the Vertical Header Table
+  ascent: r.int16, // The vertical typographic ascender for this font
+  descent: r.int16, // The vertical typographic descender for this font
+  lineGap: r.int16, // The vertical typographic line gap for this font
+  advanceHeightMax: r.int16, // The maximum advance height measurement found in the font
+  minTopSideBearing: r.int16, // The minimum top side bearing measurement found in the font
+  minBottomSideBearing: r.int16, // The minimum bottom side bearing measurement found in the font
+  yMaxExtent: r.int16,
+  caretSlopeRise: r.int16, // Caret slope (rise/run)
+  caretSlopeRun: r.int16,
+  caretOffset: r.int16, // Set value equal to 0 for nonslanted fonts
+  reserved: new r.Reserved(r.int16, 4),
+  metricDataFormat: r.int16, // Set to 0
+  numberOfMetrics: r.uint16 // Number of advance heights in the Vertical Metrics table
+});
+
+var VmtxEntry = new r.Struct({
+  advance: r.uint16, // The advance height of the glyph
+  bearing: r.int16 // The top sidebearing of the glyph
+});
+
+// Vertical Metrics Table
+var vmtx = new r.Struct({
+  metrics: new r.LazyArray(VmtxEntry, function (t) {
+    return t.parent.vhea.numberOfMetrics;
+  }),
+  bearings: new r.LazyArray(r.int16, function (t) {
+    return t.parent.maxp.numGlyphs - t.parent.vhea.numberOfMetrics;
+  })
+});
+
+var shortFrac = new r.Fixed(16, 'BE', 14);
+
+var Correspondence = new r.Struct({
+  fromCoord: shortFrac,
+  toCoord: shortFrac
+});
+
+var Segment = new r.Struct({
+  pairCount: r.uint16,
+  correspondence: new r.Array(Correspondence, 'pairCount')
+});
+
+var avar = new r.Struct({
+  version: r.fixed32,
+  axisCount: r.uint32,
+  segment: new r.Array(Segment, 'axisCount')
+});
+
+var UnboundedArrayAccessor = function () {
+  function UnboundedArrayAccessor(type, stream, parent) {
+    _classCallCheck(this, UnboundedArrayAccessor);
+
+    this.type = type;
+    this.stream = stream;
+    this.parent = parent;
+    this.base = this.stream.pos;
+    this._items = [];
+  }
+
+  UnboundedArrayAccessor.prototype.getItem = function getItem(index) {
+    if (this._items[index] == null) {
+      var pos = this.stream.pos;
+      this.stream.pos = this.base + this.type.size(null, this.parent) * index;
+      this._items[index] = this.type.decode(this.stream, this.parent);
+      this.stream.pos = pos;
+    }
+
+    return this._items[index];
+  };
+
+  UnboundedArrayAccessor.prototype.inspect = function inspect() {
+    return '[UnboundedArray ' + this.type.constructor.name + ']';
+  };
+
+  return UnboundedArrayAccessor;
+}();
+
+var UnboundedArray = function (_r$Array) {
+  _inherits(UnboundedArray, _r$Array);
+
+  function UnboundedArray(type) {
+    _classCallCheck(this, UnboundedArray);
+
+    return _possibleConstructorReturn(this, _r$Array.call(this, type, 0));
+  }
+
+  UnboundedArray.prototype.decode = function decode(stream, parent) {
+    return new UnboundedArrayAccessor(this.type, stream, parent);
+  };
+
+  return UnboundedArray;
+}(r.Array);
+
+var LookupTable = function LookupTable() {
+  var ValueType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : r.uint16;
+
+  // Helper class that makes internal structures invisible to pointers
+  var Shadow = function () {
+    function Shadow(type) {
+      _classCallCheck(this, Shadow);
+
+      this.type = type;
+    }
+
+    Shadow.prototype.decode = function decode(stream, ctx) {
+      ctx = ctx.parent.parent;
+      return this.type.decode(stream, ctx);
+    };
+
+    Shadow.prototype.size = function size(val, ctx) {
+      ctx = ctx.parent.parent;
+      return this.type.size(val, ctx);
+    };
+
+    Shadow.prototype.encode = function encode(stream, val, ctx) {
+      ctx = ctx.parent.parent;
+      return this.type.encode(stream, val, ctx);
+    };
+
+    return Shadow;
+  }();
+
+  ValueType = new Shadow(ValueType);
+
+  var BinarySearchHeader = new r.Struct({
+    unitSize: r.uint16,
+    nUnits: r.uint16,
+    searchRange: r.uint16,
+    entrySelector: r.uint16,
+    rangeShift: r.uint16
+  });
+
+  var LookupSegmentSingle = new r.Struct({
+    lastGlyph: r.uint16,
+    firstGlyph: r.uint16,
+    value: ValueType
+  });
+
+  var LookupSegmentArray = new r.Struct({
+    lastGlyph: r.uint16,
+    firstGlyph: r.uint16,
+    values: new r.Pointer(r.uint16, new r.Array(ValueType, function (t) {
+      return t.lastGlyph - t.firstGlyph + 1;
+    }), { type: 'parent' })
+  });
+
+  var LookupSingle = new r.Struct({
+    glyph: r.uint16,
+    value: ValueType
+  });
+
+  return new r.VersionedStruct(r.uint16, {
+    0: {
+      values: new UnboundedArray(ValueType) // length == number of glyphs maybe?
+    },
+    2: {
+      binarySearchHeader: BinarySearchHeader,
+      segments: new r.Array(LookupSegmentSingle, function (t) {
+        return t.binarySearchHeader.nUnits;
+      })
+    },
+    4: {
+      binarySearchHeader: BinarySearchHeader,
+      segments: new r.Array(LookupSegmentArray, function (t) {
+        return t.binarySearchHeader.nUnits;
+      })
+    },
+    6: {
+      binarySearchHeader: BinarySearchHeader,
+      segments: new r.Array(LookupSingle, function (t) {
+        return t.binarySearchHeader.nUnits;
+      })
+    },
+    8: {
+      firstGlyph: r.uint16,
+      count: r.uint16,
+      values: new r.Array(ValueType, 'count')
+    }
+  });
+};
+
+function StateTable() {
+  var entryData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var lookupType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : r.uint16;
+
+  var entry = _Object$assign({
+    newState: r.uint16,
+    flags: r.uint16
+  }, entryData);
+
+  var Entry = new r.Struct(entry);
+  var StateArray = new UnboundedArray(new r.Array(r.uint16, function (t) {
+    return t.nClasses;
+  }));
+
+  var StateHeader = new r.Struct({
+    nClasses: r.uint32,
+    classTable: new r.Pointer(r.uint32, new LookupTable(lookupType)),
+    stateArray: new r.Pointer(r.uint32, StateArray),
+    entryTable: new r.Pointer(r.uint32, new UnboundedArray(Entry))
+  });
+
+  return StateHeader;
+}
+
+// This is the old version of the StateTable structure
+function StateTable1() {
+  var entryData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var lookupType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : r.uint16;
+
+  var ClassLookupTable = new r.Struct({
+    version: function version() {
+      return 8;
+    },
+    // simulate LookupTable
+    firstGlyph: r.uint16,
+    values: new r.Array(r.uint8, r.uint16)
+  });
+
+  var entry = _Object$assign({
+    newStateOffset: r.uint16,
+    // convert offset to stateArray index
+    newState: function newState(t) {
+      return (t.newStateOffset - (t.parent.stateArray.base - t.parent._startOffset)) / t.parent.nClasses;
+    },
+    flags: r.uint16
+  }, entryData);
+
+  var Entry = new r.Struct(entry);
+  var StateArray = new UnboundedArray(new r.Array(r.uint8, function (t) {
+    return t.nClasses;
+  }));
+
+  var StateHeader1 = new r.Struct({
+    nClasses: r.uint16,
+    classTable: new r.Pointer(r.uint16, ClassLookupTable),
+    stateArray: new r.Pointer(r.uint16, StateArray),
+    entryTable: new r.Pointer(r.uint16, new UnboundedArray(Entry))
+  });
+
+  return StateHeader1;
+}
+
+var BslnSubtable = new r.VersionedStruct('format', {
+  0: { // Distance-based, no mapping
+    deltas: new r.Array(r.int16, 32)
+  },
+
+  1: { // Distance-based, with mapping
+    deltas: new r.Array(r.int16, 32),
+    mappingData: new LookupTable(r.uint16)
+  },
+
+  2: { // Control point-based, no mapping
+    standardGlyph: r.uint16,
+    controlPoints: new r.Array(r.uint16, 32)
+  },
+
+  3: { // Control point-based, with mapping
+    standardGlyph: r.uint16,
+    controlPoints: new r.Array(r.uint16, 32),
+    mappingData: new LookupTable(r.uint16)
+  }
+});
+
+var bsln = new r.Struct({
+  version: r.fixed32,
+  format: r.uint16,
+  defaultBaseline: r.uint16,
+  subtable: BslnSubtable
+});
+
+var Setting = new r.Struct({
+  setting: r.uint16,
+  nameIndex: r.int16,
+  name: function name(t) {
+    return t.parent.parent.parent.name.records.fontFeatures[t.nameIndex];
+  }
+});
+
+var FeatureName = new r.Struct({
+  feature: r.uint16,
+  nSettings: r.uint16,
+  settingTable: new r.Pointer(r.uint32, new r.Array(Setting, 'nSettings'), { type: 'parent' }),
+  featureFlags: new r.Bitfield(r.uint8, [null, null, null, null, null, null, 'hasDefault', 'exclusive']),
+  defaultSetting: r.uint8,
+  nameIndex: r.int16,
+  name: function name(t) {
+    return t.parent.parent.name.records.fontFeatures[t.nameIndex];
+  }
+});
+
+var feat = new r.Struct({
+  version: r.fixed32,
+  featureNameCount: r.uint16,
+  reserved1: new r.Reserved(r.uint16),
+  reserved2: new r.Reserved(r.uint32),
+  featureNames: new r.Array(FeatureName, 'featureNameCount')
+});
+
+var Axis$1 = new r.Struct({
+  axisTag: new r.String(4),
+  minValue: r.fixed32,
+  defaultValue: r.fixed32,
+  maxValue: r.fixed32,
+  flags: r.uint16,
+  nameID: r.uint16,
+  name: function name(t) {
+    return t.parent.parent.name.records.fontFeatures[t.nameID];
+  }
+});
+
+var Instance = new r.Struct({
+  nameID: r.uint16,
+  name: function name(t) {
+    return t.parent.parent.name.records.fontFeatures[t.nameID];
+  },
+  flags: r.uint16,
+  coord: new r.Array(r.fixed32, function (t) {
+    return t.parent.axisCount;
+  }),
+  postscriptNameID: new r.Optional(r.uint16, function (t) {
+    return t.parent.instanceSize - t._currentOffset > 0;
+  })
+});
+
+var fvar = new r.Struct({
+  version: r.fixed32,
+  offsetToData: r.uint16,
+  countSizePairs: r.uint16,
+  axisCount: r.uint16,
+  axisSize: r.uint16,
+  instanceCount: r.uint16,
+  instanceSize: r.uint16,
+  axis: new r.Array(Axis$1, 'axisCount'),
+  instance: new r.Array(Instance, 'instanceCount')
+});
+
+var shortFrac$1 = new r.Fixed(16, 'BE', 14);
+
+var Offset = function () {
+  function Offset() {
+    _classCallCheck(this, Offset);
+  }
+
+  Offset.decode = function decode(stream, parent) {
+    // In short format, offsets are multiplied by 2.
+    // This doesn't seem to be documented by Apple, but it
+    // is implemented this way in Freetype.
+    return parent.flags ? stream.readUInt32BE() : stream.readUInt16BE() * 2;
+  };
+
+  return Offset;
+}();
+
+var gvar = new r.Struct({
+  version: r.uint16,
+  reserved: new r.Reserved(r.uint16),
+  axisCount: r.uint16,
+  globalCoordCount: r.uint16,
+  globalCoords: new r.Pointer(r.uint32, new r.Array(new r.Array(shortFrac$1, 'axisCount'), 'globalCoordCount')),
+  glyphCount: r.uint16,
+  flags: r.uint16,
+  offsetToData: r.uint32,
+  offsets: new r.Array(new r.Pointer(Offset, 'void', { relativeTo: 'offsetToData', allowNull: false }), function (t) {
+    return t.glyphCount + 1;
+  })
+});
+
+var ClassTable$1 = new r.Struct({
+  length: r.uint16,
+  coverage: r.uint16,
+  subFeatureFlags: r.uint32,
+  stateTable: new StateTable1()
+});
+
+var WidthDeltaRecord = new r.Struct({
+  justClass: r.uint32,
+  beforeGrowLimit: r.fixed32,
+  beforeShrinkLimit: r.fixed32,
+  afterGrowLimit: r.fixed32,
+  afterShrinkLimit: r.fixed32,
+  growFlags: r.uint16,
+  shrinkFlags: r.uint16
+});
+
+var WidthDeltaCluster = new r.Array(WidthDeltaRecord, r.uint32);
+
+var ActionData = new r.VersionedStruct('actionType', {
+  0: { // Decomposition action
+    lowerLimit: r.fixed32,
+    upperLimit: r.fixed32,
+    order: r.uint16,
+    glyphs: new r.Array(r.uint16, r.uint16)
+  },
+
+  1: { // Unconditional add glyph action
+    addGlyph: r.uint16
+  },
+
+  2: { // Conditional add glyph action
+    substThreshold: r.fixed32,
+    addGlyph: r.uint16,
+    substGlyph: r.uint16
+  },
+
+  3: {}, // Stretch glyph action (no data, not supported by CoreText)
+
+  4: { // Ductile glyph action (not supported by CoreText)
+    variationAxis: r.uint32,
+    minimumLimit: r.fixed32,
+    noStretchValue: r.fixed32,
+    maximumLimit: r.fixed32
+  },
+
+  5: { // Repeated add glyph action
+    flags: r.uint16,
+    glyph: r.uint16
+  }
+});
+
+var Action = new r.Struct({
+  actionClass: r.uint16,
+  actionType: r.uint16,
+  actionLength: r.uint32,
+  actionData: ActionData,
+  padding: new r.Reserved(r.uint8, function (t) {
+    return t.actionLength - t._currentOffset;
+  })
+});
+
+var PostcompensationAction = new r.Array(Action, r.uint32);
+var PostCompensationTable = new r.Struct({
+  lookupTable: new LookupTable(new r.Pointer(r.uint16, PostcompensationAction))
+});
+
+var JustificationTable = new r.Struct({
+  classTable: new r.Pointer(r.uint16, ClassTable$1, { type: 'parent' }),
+  wdcOffset: r.uint16,
+  postCompensationTable: new r.Pointer(r.uint16, PostCompensationTable, { type: 'parent' }),
+  widthDeltaClusters: new LookupTable(new r.Pointer(r.uint16, WidthDeltaCluster, { type: 'parent', relativeTo: 'wdcOffset' }))
+});
+
+var just = new r.Struct({
+  version: r.uint32,
+  format: r.uint16,
+  horizontal: new r.Pointer(r.uint16, JustificationTable),
+  vertical: new r.Pointer(r.uint16, JustificationTable)
+});
+
+var LigatureData = {
+  action: r.uint16
+};
+
+var ContextualData = {
+  markIndex: r.uint16,
+  currentIndex: r.uint16
+};
+
+var InsertionData = {
+  currentInsertIndex: r.uint16,
+  markedInsertIndex: r.uint16
+};
+
+var SubstitutionTable = new r.Struct({
+  items: new UnboundedArray(new r.Pointer(r.uint32, new LookupTable()))
+});
+
+var SubtableData = new r.VersionedStruct('type', {
+  0: { // Indic Rearrangement Subtable
+    stateTable: new StateTable()
+  },
+
+  1: { // Contextual Glyph Substitution Subtable
+    stateTable: new StateTable(ContextualData),
+    substitutionTable: new r.Pointer(r.uint32, SubstitutionTable)
+  },
+
+  2: { // Ligature subtable
+    stateTable: new StateTable(LigatureData),
+    ligatureActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint32)),
+    components: new r.Pointer(r.uint32, new UnboundedArray(r.uint16)),
+    ligatureList: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))
+  },
+
+  4: { // Non-contextual Glyph Substitution Subtable
+    lookupTable: new LookupTable()
+  },
+
+  5: { // Glyph Insertion Subtable
+    stateTable: new StateTable(InsertionData),
+    insertionActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))
+  }
+});
+
+var Subtable = new r.Struct({
+  length: r.uint32,
+  coverage: r.uint24,
+  type: r.uint8,
+  subFeatureFlags: r.uint32,
+  table: SubtableData,
+  padding: new r.Reserved(r.uint8, function (t) {
+    return t.length - t._currentOffset;
+  })
+});
+
+var FeatureEntry = new r.Struct({
+  featureType: r.uint16,
+  featureSetting: r.uint16,
+  enableFlags: r.uint32,
+  disableFlags: r.uint32
+});
+
+var MorxChain = new r.Struct({
+  defaultFlags: r.uint32,
+  chainLength: r.uint32,
+  nFeatureEntries: r.uint32,
+  nSubtables: r.uint32,
+  features: new r.Array(FeatureEntry, 'nFeatureEntries'),
+  subtables: new r.Array(Subtable, 'nSubtables')
+});
+
+var morx = new r.Struct({
+  version: r.uint16,
+  unused: new r.Reserved(r.uint16),
+  nChains: r.uint32,
+  chains: new r.Array(MorxChain, 'nChains')
+});
+
+var OpticalBounds = new r.Struct({
+  left: r.int16,
+  top: r.int16,
+  right: r.int16,
+  bottom: r.int16
+});
+
+var opbd = new r.Struct({
+  version: r.fixed32,
+  format: r.uint16,
+  lookupTable: new LookupTable(OpticalBounds)
+});
+
+var tables = {};
+// Required Tables
+tables.cmap = cmap;
+tables.head = head;
+tables.hhea = hhea;
+tables.hmtx = hmtx;
+tables.maxp = maxp;
+tables.name = NameTable;
+tables['OS/2'] = OS2;
+tables.post = post;
+
+// TrueType Outlines
+tables.fpgm = fpgm;
+tables.loca = loca;
+tables.prep = prep;
+tables['cvt '] = cvt;
+tables.glyf = glyf;
+
+// PostScript Outlines
+tables['CFF '] = CFFFont;
+tables['CFF2'] = CFFFont;
+tables.VORG = VORG;
+
+// Bitmap Glyphs
+tables.EBLC = EBLC;
+tables.CBLC = tables.EBLC;
+tables.sbix = sbix;
+tables.COLR = COLR;
+tables.CPAL = CPAL;
+
+// Advanced OpenType Tables
+tables.BASE = BASE;
+tables.GDEF = GDEF;
+tables.GPOS = GPOS;
+tables.GSUB = GSUB;
+tables.JSTF = JSTF;
+
+// OpenType variations tables
+tables.HVAR = HVAR;
+
+// Other OpenType Tables
+tables.DSIG = DSIG;
+tables.gasp = gasp;
+tables.hdmx = hdmx;
+tables.kern = kern;
+tables.LTSH = LTSH;
+tables.PCLT = PCLT;
+tables.VDMX = VDMX;
+tables.vhea = vhea;
+tables.vmtx = vmtx;
+
+// Apple Advanced Typography Tables
+tables.avar = avar;
+tables.bsln = bsln;
+tables.feat = feat;
+tables.fvar = fvar;
+tables.gvar = gvar;
+tables.just = just;
+tables.morx = morx;
+tables.opbd = opbd;
+
+var TableEntry = new r.Struct({
+  tag: new r.String(4),
+  checkSum: r.uint32,
+  offset: new r.Pointer(r.uint32, 'void', { type: 'global' }),
+  length: r.uint32
+});
+
+var Directory = new r.Struct({
+  tag: new r.String(4),
+  numTables: r.uint16,
+  searchRange: r.uint16,
+  entrySelector: r.uint16,
+  rangeShift: r.uint16,
+  tables: new r.Array(TableEntry, 'numTables')
+});
+
+Directory.process = function () {
+  var tables = {};
+  for (var _iterator = this.tables, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var table = _ref;
+
+    tables[table.tag] = table;
+  }
+
+  this.tables = tables;
+};
+
+Directory.preEncode = function (stream) {
+  var tables$$ = [];
+  for (var tag in this.tables) {
+    var table = this.tables[tag];
+    if (table) {
+      tables$$.push({
+        tag: tag,
+        checkSum: 0,
+        offset: new r.VoidPointer(tables[tag], table),
+        length: tables[tag].size(table)
+      });
+    }
+  }
+
+  this.tag = 'true';
+  this.numTables = tables$$.length;
+  this.tables = tables$$;
+
+  this.searchRange = Math.floor(Math.log(this.numTables) / Math.LN2) * 16;
+  this.entrySelector = Math.floor(this.searchRange / Math.LN2);
+  this.rangeShift = this.numTables * 16 - this.searchRange;
+};
+
+function binarySearch(arr, cmp) {
+  var min = 0;
+  var max = arr.length - 1;
+  while (min <= max) {
+    var mid = min + max >> 1;
+    var res = cmp(arr[mid]);
+
+    if (res < 0) {
+      max = mid - 1;
+    } else if (res > 0) {
+      min = mid + 1;
+    } else {
+      return mid;
+    }
+  }
+
+  return -1;
+}
+
+function range(index, end) {
+  var range = [];
+  while (index < end) {
+    range.push(index++);
+  }
+  return range;
+}
+
+var _class$1;
+function _applyDecoratedDescriptor$1(target, property, decorators, descriptor, context) {
+  var desc = {};
+  Object['ke' + 'ys'](descriptor).forEach(function (key) {
+    desc[key] = descriptor[key];
+  });
+  desc.enumerable = !!desc.enumerable;
+  desc.configurable = !!desc.configurable;
+
+  if ('value' in desc || desc.initializer) {
+    desc.writable = true;
+  }
+
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+    return decorator(target, property, desc) || desc;
+  }, desc);
+
+  if (context && desc.initializer !== void 0) {
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+    desc.initializer = undefined;
+  }
+
+  if (desc.initializer === void 0) {
+    Object['define' + 'Property'](target, property, desc);
+    desc = null;
+  }
+
+  return desc;
+}
+
+// iconv-lite is an optional dependency.
+try {
+  var iconv = __webpack_require__(52);
+} catch (err) {}
+
+var CmapProcessor = (_class$1 = function () {
+  function CmapProcessor(cmapTable) {
+    _classCallCheck(this, CmapProcessor);
+
+    // Attempt to find a Unicode cmap first
+    this.encoding = null;
+    this.cmap = this.findSubtable(cmapTable, [
+    // 32-bit subtables
+    [3, 10], [0, 6], [0, 4],
+
+    // 16-bit subtables
+    [3, 1], [0, 3], [0, 2], [0, 1], [0, 0]]);
+
+    // If not unicode cmap was found, and iconv-lite is installed,
+    // take the first table with a supported encoding.
+    if (!this.cmap && iconv) {
+      for (var _iterator = cmapTable.tables, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var cmap = _ref;
+
+        var encoding = getEncoding(cmap.platformID, cmap.encodingID, cmap.table.language - 1);
+        if (iconv.encodingExists(encoding)) {
+          this.cmap = cmap.table;
+          this.encoding = encoding;
+        }
+      }
+    }
+
+    if (!this.cmap) {
+      throw new Error("Could not find a supported cmap table");
+    }
+
+    this.uvs = this.findSubtable(cmapTable, [[0, 5]]);
+    if (this.uvs && this.uvs.version !== 14) {
+      this.uvs = null;
+    }
+  }
+
+  CmapProcessor.prototype.findSubtable = function findSubtable(cmapTable, pairs) {
+    for (var _iterator2 = pairs, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var _ref3 = _ref2,
+          platformID = _ref3[0],
+          encodingID = _ref3[1];
+
+      for (var _iterator3 = cmapTable.tables, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref4;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref4 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref4 = _i3.value;
+        }
+
+        var cmap = _ref4;
+
+        if (cmap.platformID === platformID && cmap.encodingID === encodingID) {
+          return cmap.table;
+        }
+      }
+    }
+
+    return null;
+  };
+
+  CmapProcessor.prototype.lookup = function lookup(codepoint, variationSelector) {
+    // If there is no Unicode cmap in this font, we need to re-encode
+    // the codepoint in the encoding that the cmap supports.
+    if (this.encoding) {
+      var buf = iconv.encode(_String$fromCodePoint(codepoint), this.encoding);
+      codepoint = 0;
+      for (var i = 0; i < buf.length; i++) {
+        codepoint = codepoint << 8 | buf[i];
+      }
+
+      // Otherwise, try to get a Unicode variation selector for this codepoint if one is provided.
+    } else if (variationSelector) {
+      var gid = this.getVariationSelector(codepoint, variationSelector);
+      if (gid) {
+        return gid;
+      }
+    }
+
+    var cmap = this.cmap;
+    switch (cmap.version) {
+      case 0:
+        return cmap.codeMap.get(codepoint) || 0;
+
+      case 4:
+        {
+          var min = 0;
+          var max = cmap.segCount - 1;
+          while (min <= max) {
+            var mid = min + max >> 1;
+
+            if (codepoint < cmap.startCode.get(mid)) {
+              max = mid - 1;
+            } else if (codepoint > cmap.endCode.get(mid)) {
+              min = mid + 1;
+            } else {
+              var rangeOffset = cmap.idRangeOffset.get(mid);
+              var _gid = void 0;
+
+              if (rangeOffset === 0) {
+                _gid = codepoint + cmap.idDelta.get(mid);
+              } else {
+                var index = rangeOffset / 2 + (codepoint - cmap.startCode.get(mid)) - (cmap.segCount - mid);
+                _gid = cmap.glyphIndexArray.get(index) || 0;
+                if (_gid !== 0) {
+                  _gid += cmap.idDelta.get(mid);
+                }
+              }
+
+              return _gid & 0xffff;
+            }
+          }
+
+          return 0;
+        }
+
+      case 8:
+        throw new Error('TODO: cmap format 8');
+
+      case 6:
+      case 10:
+        return cmap.glyphIndices.get(codepoint - cmap.firstCode) || 0;
+
+      case 12:
+      case 13:
+        {
+          var _min = 0;
+          var _max = cmap.nGroups - 1;
+          while (_min <= _max) {
+            var _mid = _min + _max >> 1;
+            var group = cmap.groups.get(_mid);
+
+            if (codepoint < group.startCharCode) {
+              _max = _mid - 1;
+            } else if (codepoint > group.endCharCode) {
+              _min = _mid + 1;
+            } else {
+              if (cmap.version === 12) {
+                return group.glyphID + (codepoint - group.startCharCode);
+              } else {
+                return group.glyphID;
+              }
+            }
+          }
+
+          return 0;
+        }
+
+      case 14:
+        throw new Error('TODO: cmap format 14');
+
+      default:
+        throw new Error('Unknown cmap format ' + cmap.version);
+    }
+  };
+
+  CmapProcessor.prototype.getVariationSelector = function getVariationSelector(codepoint, variationSelector) {
+    if (!this.uvs) {
+      return 0;
+    }
+
+    var selectors = this.uvs.varSelectors.toArray();
+    var i = binarySearch(selectors, function (x) {
+      return variationSelector - x.varSelector;
+    });
+    var sel = selectors[i];
+
+    if (i !== -1 && sel.defaultUVS) {
+      i = binarySearch(sel.defaultUVS, function (x) {
+        return codepoint < x.startUnicodeValue ? -1 : codepoint > x.startUnicodeValue + x.additionalCount ? +1 : 0;
+      });
+    }
+
+    if (i !== -1 && sel.nonDefaultUVS) {
+      i = binarySearch(sel.nonDefaultUVS, function (x) {
+        return codepoint - x.unicodeValue;
+      });
+      if (i !== -1) {
+        return sel.nonDefaultUVS[i].glyphID;
+      }
+    }
+
+    return 0;
+  };
+
+  CmapProcessor.prototype.getCharacterSet = function getCharacterSet() {
+    var cmap = this.cmap;
+    switch (cmap.version) {
+      case 0:
+        return range(0, cmap.codeMap.length);
+
+      case 4:
+        {
+          var res = [];
+          var endCodes = cmap.endCode.toArray();
+          for (var i = 0; i < endCodes.length; i++) {
+            var tail = endCodes[i] + 1;
+            var start = cmap.startCode.get(i);
+            res.push.apply(res, range(start, tail));
+          }
+
+          return res;
+        }
+
+      case 8:
+        throw new Error('TODO: cmap format 8');
+
+      case 6:
+      case 10:
+        return range(cmap.firstCode, cmap.firstCode + cmap.glyphIndices.length);
+
+      case 12:
+      case 13:
+        {
+          var _res = [];
+          for (var _iterator4 = cmap.groups.toArray(), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+            var _ref5;
+
+            if (_isArray4) {
+              if (_i4 >= _iterator4.length) break;
+              _ref5 = _iterator4[_i4++];
+            } else {
+              _i4 = _iterator4.next();
+              if (_i4.done) break;
+              _ref5 = _i4.value;
+            }
+
+            var group = _ref5;
+
+            _res.push.apply(_res, range(group.startCharCode, group.endCharCode + 1));
+          }
+
+          return _res;
+        }
+
+      case 14:
+        throw new Error('TODO: cmap format 14');
+
+      default:
+        throw new Error('Unknown cmap format ' + cmap.version);
+    }
+  };
+
+  CmapProcessor.prototype.codePointsForGlyph = function codePointsForGlyph(gid) {
+    var cmap = this.cmap;
+    switch (cmap.version) {
+      case 0:
+        {
+          var res = [];
+          for (var i = 0; i < 256; i++) {
+            if (cmap.codeMap.get(i) === gid) {
+              res.push(i);
+            }
+          }
+
+          return res;
+        }
+
+      case 4:
+        {
+          var _res2 = [];
+          for (var _i5 = 0; _i5 < cmap.segCount; _i5++) {
+            var end = cmap.endCode.get(_i5);
+            var start = cmap.startCode.get(_i5);
+            var rangeOffset = cmap.idRangeOffset.get(_i5);
+            var delta = cmap.idDelta.get(_i5);
+
+            for (var c = start; c <= end; c++) {
+              var g = 0;
+              if (rangeOffset === 0) {
+                g = c + delta;
+              } else {
+                var index = rangeOffset / 2 + (c - start) - (cmap.segCount - _i5);
+                g = cmap.glyphIndexArray.get(index) || 0;
+                if (g !== 0) {
+                  g += delta;
+                }
+              }
+
+              if (g === gid) {
+                _res2.push(c);
+              }
+            }
+          }
+
+          return _res2;
+        }
+
+      case 12:
+        {
+          var _res3 = [];
+          for (var _iterator5 = cmap.groups.toArray(), _isArray5 = Array.isArray(_iterator5), _i6 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
+            var _ref6;
+
+            if (_isArray5) {
+              if (_i6 >= _iterator5.length) break;
+              _ref6 = _iterator5[_i6++];
+            } else {
+              _i6 = _iterator5.next();
+              if (_i6.done) break;
+              _ref6 = _i6.value;
+            }
+
+            var group = _ref6;
+
+            if (gid >= group.glyphID && gid <= group.glyphID + (group.endCharCode - group.startCharCode)) {
+              _res3.push(group.startCharCode + (gid - group.glyphID));
+            }
+          }
+
+          return _res3;
+        }
+
+      case 13:
+        {
+          var _res4 = [];
+          for (var _iterator6 = cmap.groups.toArray(), _isArray6 = Array.isArray(_iterator6), _i7 = 0, _iterator6 = _isArray6 ? _iterator6 : _getIterator(_iterator6);;) {
+            var _ref7;
+
+            if (_isArray6) {
+              if (_i7 >= _iterator6.length) break;
+              _ref7 = _iterator6[_i7++];
+            } else {
+              _i7 = _iterator6.next();
+              if (_i7.done) break;
+              _ref7 = _i7.value;
+            }
+
+            var _group = _ref7;
+
+            if (gid === _group.glyphID) {
+              _res4.push.apply(_res4, range(_group.startCharCode, _group.endCharCode + 1));
+            }
+          }
+
+          return _res4;
+        }
+
+      default:
+        throw new Error('Unknown cmap format ' + cmap.version);
+    }
+  };
+
+  return CmapProcessor;
+}(), (_applyDecoratedDescriptor$1(_class$1.prototype, 'getCharacterSet', [cache], _Object$getOwnPropertyDescriptor(_class$1.prototype, 'getCharacterSet'), _class$1.prototype), _applyDecoratedDescriptor$1(_class$1.prototype, 'codePointsForGlyph', [cache], _Object$getOwnPropertyDescriptor(_class$1.prototype, 'codePointsForGlyph'), _class$1.prototype)), _class$1);
+
+var KernProcessor = function () {
+  function KernProcessor(font) {
+    _classCallCheck(this, KernProcessor);
+
+    this.kern = font.kern;
+  }
+
+  KernProcessor.prototype.process = function process(glyphs, positions) {
+    for (var glyphIndex = 0; glyphIndex < glyphs.length - 1; glyphIndex++) {
+      var left = glyphs[glyphIndex].id;
+      var right = glyphs[glyphIndex + 1].id;
+      positions[glyphIndex].xAdvance += this.getKerning(left, right);
+    }
+  };
+
+  KernProcessor.prototype.getKerning = function getKerning(left, right) {
+    var res = 0;
+
+    for (var _iterator = this.kern.tables, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var table = _ref;
+
+      if (table.coverage.crossStream) {
+        continue;
+      }
+
+      switch (table.version) {
+        case 0:
+          if (!table.coverage.horizontal) {
+            continue;
+          }
+
+          break;
+        case 1:
+          if (table.coverage.vertical || table.coverage.variation) {
+            continue;
+          }
+
+          break;
+        default:
+          throw new Error('Unsupported kerning table version ' + table.version);
+      }
+
+      var val = 0;
+      var s = table.subtable;
+      switch (table.format) {
+        case 0:
+          var pairIdx = binarySearch(s.pairs, function (pair) {
+            return left - pair.left || right - pair.right;
+          });
+
+          if (pairIdx >= 0) {
+            val = s.pairs[pairIdx].value;
+          }
+
+          break;
+
+        case 2:
+          var leftOffset = 0,
+              rightOffset = 0;
+          if (left >= s.leftTable.firstGlyph && left < s.leftTable.firstGlyph + s.leftTable.nGlyphs) {
+            leftOffset = s.leftTable.offsets[left - s.leftTable.firstGlyph];
+          } else {
+            leftOffset = s.array.off;
+          }
+
+          if (right >= s.rightTable.firstGlyph && right < s.rightTable.firstGlyph + s.rightTable.nGlyphs) {
+            rightOffset = s.rightTable.offsets[right - s.rightTable.firstGlyph];
+          }
+
+          var index = (leftOffset + rightOffset - s.array.off) / 2;
+          val = s.array.values.get(index);
+          break;
+
+        case 3:
+          if (left >= s.glyphCount || right >= s.glyphCount) {
+            return 0;
+          }
+
+          val = s.kernValue[s.kernIndex[s.leftClass[left] * s.rightClassCount + s.rightClass[right]]];
+          break;
+
+        default:
+          throw new Error('Unsupported kerning sub-table format ' + table.format);
+      }
+
+      // Microsoft supports the override flag, which resets the result
+      // Otherwise, the sum of the results from all subtables is returned
+      if (table.coverage.override) {
+        res = val;
+      } else {
+        res += val;
+      }
+    }
+
+    return res;
+  };
+
+  return KernProcessor;
+}();
+
+/**
+ * This class is used when GPOS does not define 'mark' or 'mkmk' features
+ * for positioning marks relative to base glyphs. It uses the unicode
+ * combining class property to position marks.
+ *
+ * Based on code from Harfbuzz, thanks!
+ * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-fallback.cc
+ */
+
+var UnicodeLayoutEngine = function () {
+  function UnicodeLayoutEngine(font) {
+    _classCallCheck(this, UnicodeLayoutEngine);
+
+    this.font = font;
+  }
+
+  UnicodeLayoutEngine.prototype.positionGlyphs = function positionGlyphs(glyphs, positions) {
+    // find each base + mark cluster, and position the marks relative to the base
+    var clusterStart = 0;
+    var clusterEnd = 0;
+    for (var index = 0; index < glyphs.length; index++) {
+      var glyph = glyphs[index];
+      if (glyph.isMark) {
+        // TODO: handle ligatures
+        clusterEnd = index;
+      } else {
+        if (clusterStart !== clusterEnd) {
+          this.positionCluster(glyphs, positions, clusterStart, clusterEnd);
+        }
+
+        clusterStart = clusterEnd = index;
+      }
+    }
+
+    if (clusterStart !== clusterEnd) {
+      this.positionCluster(glyphs, positions, clusterStart, clusterEnd);
+    }
+
+    return positions;
+  };
+
+  UnicodeLayoutEngine.prototype.positionCluster = function positionCluster(glyphs, positions, clusterStart, clusterEnd) {
+    var base = glyphs[clusterStart];
+    var baseBox = base.cbox.copy();
+
+    // adjust bounding box for ligature glyphs
+    if (base.codePoints.length > 1) {
+      // LTR. TODO: RTL support.
+      baseBox.minX += (base.codePoints.length - 1) * baseBox.width / base.codePoints.length;
+    }
+
+    var xOffset = -positions[clusterStart].xAdvance;
+    var yOffset = 0;
+    var yGap = this.font.unitsPerEm / 16;
+
+    // position each of the mark glyphs relative to the base glyph
+    for (var index = clusterStart + 1; index <= clusterEnd; index++) {
+      var mark = glyphs[index];
+      var markBox = mark.cbox;
+      var position = positions[index];
+
+      var combiningClass = this.getCombiningClass(mark.codePoints[0]);
+
+      if (combiningClass !== 'Not_Reordered') {
+        position.xOffset = position.yOffset = 0;
+
+        // x positioning
+        switch (combiningClass) {
+          case 'Double_Above':
+          case 'Double_Below':
+            // LTR. TODO: RTL support.
+            position.xOffset += baseBox.minX - markBox.width / 2 - markBox.minX;
+            break;
+
+          case 'Attached_Below_Left':
+          case 'Below_Left':
+          case 'Above_Left':
+            // left align
+            position.xOffset += baseBox.minX - markBox.minX;
+            break;
+
+          case 'Attached_Above_Right':
+          case 'Below_Right':
+          case 'Above_Right':
+            // right align
+            position.xOffset += baseBox.maxX - markBox.width - markBox.minX;
+            break;
+
+          default:
+            // Attached_Below, Attached_Above, Below, Above, other
+            // center align
+            position.xOffset += baseBox.minX + (baseBox.width - markBox.width) / 2 - markBox.minX;
+        }
+
+        // y positioning
+        switch (combiningClass) {
+          case 'Double_Below':
+          case 'Below_Left':
+          case 'Below':
+          case 'Below_Right':
+          case 'Attached_Below_Left':
+          case 'Attached_Below':
+            // add a small gap between the glyphs if they are not attached
+            if (combiningClass === 'Attached_Below_Left' || combiningClass === 'Attached_Below') {
+              baseBox.minY += yGap;
+            }
+
+            position.yOffset = -baseBox.minY - markBox.maxY;
+            baseBox.minY += markBox.height;
+            break;
+
+          case 'Double_Above':
+          case 'Above_Left':
+          case 'Above':
+          case 'Above_Right':
+          case 'Attached_Above':
+          case 'Attached_Above_Right':
+            // add a small gap between the glyphs if they are not attached
+            if (combiningClass === 'Attached_Above' || combiningClass === 'Attached_Above_Right') {
+              baseBox.maxY += yGap;
+            }
+
+            position.yOffset = baseBox.maxY - markBox.minY;
+            baseBox.maxY += markBox.height;
+            break;
+        }
+
+        position.xAdvance = position.yAdvance = 0;
+        position.xOffset += xOffset;
+        position.yOffset += yOffset;
+      } else {
+        xOffset -= position.xAdvance;
+        yOffset -= position.yAdvance;
+      }
+    }
+
+    return;
+  };
+
+  UnicodeLayoutEngine.prototype.getCombiningClass = function getCombiningClass(codePoint) {
+    var combiningClass = unicode.getCombiningClass(codePoint);
+
+    // Thai / Lao need some per-character work
+    if ((codePoint & ~0xff) === 0x0e00) {
+      if (combiningClass === 'Not_Reordered') {
+        switch (codePoint) {
+          case 0x0e31:
+          case 0x0e34:
+          case 0x0e35:
+          case 0x0e36:
+          case 0x0e37:
+          case 0x0e47:
+          case 0x0e4c:
+          case 0x0e3d:
+          case 0x0e4e:
+            return 'Above_Right';
+
+          case 0x0eb1:
+          case 0x0eb4:
+          case 0x0eb5:
+          case 0x0eb6:
+          case 0x0eb7:
+          case 0x0ebb:
+          case 0x0ecc:
+          case 0x0ecd:
+            return 'Above';
+
+          case 0x0ebc:
+            return 'Below';
+        }
+      } else if (codePoint === 0x0e3a) {
+        // virama
+        return 'Below_Right';
+      }
+    }
+
+    switch (combiningClass) {
+      // Hebrew
+
+      case 'CCC10': // sheva
+      case 'CCC11': // hataf segol
+      case 'CCC12': // hataf patah
+      case 'CCC13': // hataf qamats
+      case 'CCC14': // hiriq
+      case 'CCC15': // tsere
+      case 'CCC16': // segol
+      case 'CCC17': // patah
+      case 'CCC18': // qamats
+      case 'CCC20': // qubuts
+      case 'CCC22':
+        // meteg
+        return 'Below';
+
+      case 'CCC23':
+        // rafe
+        return 'Attached_Above';
+
+      case 'CCC24':
+        // shin dot
+        return 'Above_Right';
+
+      case 'CCC25': // sin dot
+      case 'CCC19':
+        // holam
+        return 'Above_Left';
+
+      case 'CCC26':
+        // point varika
+        return 'Above';
+
+      case 'CCC21':
+        // dagesh
+        break;
+
+      // Arabic and Syriac
+
+      case 'CCC27': // fathatan
+      case 'CCC28': // dammatan
+      case 'CCC30': // fatha
+      case 'CCC31': // damma
+      case 'CCC33': // shadda
+      case 'CCC34': // sukun
+      case 'CCC35': // superscript alef
+      case 'CCC36':
+        // superscript alaph
+        return 'Above';
+
+      case 'CCC29': // kasratan
+      case 'CCC32':
+        // kasra
+        return 'Below';
+
+      // Thai
+
+      case 'CCC103':
+        // sara u / sara uu
+        return 'Below_Right';
+
+      case 'CCC107':
+        // mai
+        return 'Above_Right';
+
+      // Lao
+
+      case 'CCC118':
+        // sign u / sign uu
+        return 'Below';
+
+      case 'CCC122':
+        // mai
+        return 'Above';
+
+      // Tibetan
+
+      case 'CCC129': // sign aa
+      case 'CCC132':
+        // sign u
+        return 'Below';
+
+      case 'CCC130':
+        // sign i
+        return 'Above';
+    }
+
+    return combiningClass;
+  };
+
+  return UnicodeLayoutEngine;
+}();
+
+/**
+ * Represents a glyph bounding box
+ */
+var BBox = function () {
+  function BBox() {
+    var minX = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Infinity;
+    var minY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Infinity;
+    var maxX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -Infinity;
+    var maxY = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -Infinity;
+
+    _classCallCheck(this, BBox);
+
+    /**
+     * The minimum X position in the bounding box
+     * @type {number}
+     */
+    this.minX = minX;
+
+    /**
+     * The minimum Y position in the bounding box
+     * @type {number}
+     */
+    this.minY = minY;
+
+    /**
+     * The maxmimum X position in the bounding box
+     * @type {number}
+     */
+    this.maxX = maxX;
+
+    /**
+     * The maxmimum Y position in the bounding box
+     * @type {number}
+     */
+    this.maxY = maxY;
+  }
+
+  /**
+   * The width of the bounding box
+   * @type {number}
+   */
+
+
+  BBox.prototype.addPoint = function addPoint(x, y) {
+    if (Math.abs(x) !== Infinity) {
+      if (x < this.minX) {
+        this.minX = x;
+      }
+
+      if (x > this.maxX) {
+        this.maxX = x;
+      }
+    }
+
+    if (Math.abs(y) !== Infinity) {
+      if (y < this.minY) {
+        this.minY = y;
+      }
+
+      if (y > this.maxY) {
+        this.maxY = y;
+      }
+    }
+  };
+
+  BBox.prototype.copy = function copy() {
+    return new BBox(this.minX, this.minY, this.maxX, this.maxY);
+  };
+
+  _createClass(BBox, [{
+    key: "width",
+    get: function get() {
+      return this.maxX - this.minX;
+    }
+
+    /**
+     * The height of the bounding box
+     * @type {number}
+     */
+
+  }, {
+    key: "height",
+    get: function get() {
+      return this.maxY - this.minY;
+    }
+  }]);
+
+  return BBox;
+}();
+
+// This maps the Unicode Script property to an OpenType script tag
+// Data from http://www.microsoft.com/typography/otspec/scripttags.htm
+// and http://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt.
+var UNICODE_SCRIPTS = {
+  Caucasian_Albanian: 'aghb',
+  Arabic: 'arab',
+  Imperial_Aramaic: 'armi',
+  Armenian: 'armn',
+  Avestan: 'avst',
+  Balinese: 'bali',
+  Bamum: 'bamu',
+  Bassa_Vah: 'bass',
+  Batak: 'batk',
+  Bengali: ['bng2', 'beng'],
+  Bopomofo: 'bopo',
+  Brahmi: 'brah',
+  Braille: 'brai',
+  Buginese: 'bugi',
+  Buhid: 'buhd',
+  Chakma: 'cakm',
+  Canadian_Aboriginal: 'cans',
+  Carian: 'cari',
+  Cham: 'cham',
+  Cherokee: 'cher',
+  Coptic: 'copt',
+  Cypriot: 'cprt',
+  Cyrillic: 'cyrl',
+  Devanagari: ['dev2', 'deva'],
+  Deseret: 'dsrt',
+  Duployan: 'dupl',
+  Egyptian_Hieroglyphs: 'egyp',
+  Elbasan: 'elba',
+  Ethiopic: 'ethi',
+  Georgian: 'geor',
+  Glagolitic: 'glag',
+  Gothic: 'goth',
+  Grantha: 'gran',
+  Greek: 'grek',
+  Gujarati: ['gjr2', 'gujr'],
+  Gurmukhi: ['gur2', 'guru'],
+  Hangul: 'hang',
+  Han: 'hani',
+  Hanunoo: 'hano',
+  Hebrew: 'hebr',
+  Hiragana: 'hira',
+  Pahawh_Hmong: 'hmng',
+  Katakana_Or_Hiragana: 'hrkt',
+  Old_Italic: 'ital',
+  Javanese: 'java',
+  Kayah_Li: 'kali',
+  Katakana: 'kana',
+  Kharoshthi: 'khar',
+  Khmer: 'khmr',
+  Khojki: 'khoj',
+  Kannada: ['knd2', 'knda'],
+  Kaithi: 'kthi',
+  Tai_Tham: 'lana',
+  Lao: 'lao ',
+  Latin: 'latn',
+  Lepcha: 'lepc',
+  Limbu: 'limb',
+  Linear_A: 'lina',
+  Linear_B: 'linb',
+  Lisu: 'lisu',
+  Lycian: 'lyci',
+  Lydian: 'lydi',
+  Mahajani: 'mahj',
+  Mandaic: 'mand',
+  Manichaean: 'mani',
+  Mende_Kikakui: 'mend',
+  Meroitic_Cursive: 'merc',
+  Meroitic_Hieroglyphs: 'mero',
+  Malayalam: ['mlm2', 'mlym'],
+  Modi: 'modi',
+  Mongolian: 'mong',
+  Mro: 'mroo',
+  Meetei_Mayek: 'mtei',
+  Myanmar: ['mym2', 'mymr'],
+  Old_North_Arabian: 'narb',
+  Nabataean: 'nbat',
+  Nko: 'nko ',
+  Ogham: 'ogam',
+  Ol_Chiki: 'olck',
+  Old_Turkic: 'orkh',
+  Oriya: ['ory2', 'orya'],
+  Osmanya: 'osma',
+  Palmyrene: 'palm',
+  Pau_Cin_Hau: 'pauc',
+  Old_Permic: 'perm',
+  Phags_Pa: 'phag',
+  Inscriptional_Pahlavi: 'phli',
+  Psalter_Pahlavi: 'phlp',
+  Phoenician: 'phnx',
+  Miao: 'plrd',
+  Inscriptional_Parthian: 'prti',
+  Rejang: 'rjng',
+  Runic: 'runr',
+  Samaritan: 'samr',
+  Old_South_Arabian: 'sarb',
+  Saurashtra: 'saur',
+  Shavian: 'shaw',
+  Sharada: 'shrd',
+  Siddham: 'sidd',
+  Khudawadi: 'sind',
+  Sinhala: 'sinh',
+  Sora_Sompeng: 'sora',
+  Sundanese: 'sund',
+  Syloti_Nagri: 'sylo',
+  Syriac: 'syrc',
+  Tagbanwa: 'tagb',
+  Takri: 'takr',
+  Tai_Le: 'tale',
+  New_Tai_Lue: 'talu',
+  Tamil: ['tml2', 'taml'],
+  Tai_Viet: 'tavt',
+  Telugu: ['tel2', 'telu'],
+  Tifinagh: 'tfng',
+  Tagalog: 'tglg',
+  Thaana: 'thaa',
+  Thai: 'thai',
+  Tibetan: 'tibt',
+  Tirhuta: 'tirh',
+  Ugaritic: 'ugar',
+  Vai: 'vai ',
+  Warang_Citi: 'wara',
+  Old_Persian: 'xpeo',
+  Cuneiform: 'xsux',
+  Yi: 'yi  ',
+  Inherited: 'zinh',
+  Common: 'zyyy',
+  Unknown: 'zzzz'
+};
+
+var OPENTYPE_SCRIPTS = {};
+for (var script in UNICODE_SCRIPTS) {
+  var tag = UNICODE_SCRIPTS[script];
+  if (Array.isArray(tag)) {
+    for (var _iterator = tag, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var t = _ref;
+
+      OPENTYPE_SCRIPTS[t] = script;
+    }
+  } else {
+    OPENTYPE_SCRIPTS[tag] = script;
+  }
+}
+
+function fromOpenType(tag) {
+  return OPENTYPE_SCRIPTS[tag];
+}
+
+function forString(string) {
+  var len = string.length;
+  var idx = 0;
+  while (idx < len) {
+    var code = string.charCodeAt(idx++);
+
+    // Check if this is a high surrogate
+    if (0xd800 <= code && code <= 0xdbff && idx < len) {
+      var next = string.charCodeAt(idx);
+
+      // Check if this is a low surrogate
+      if (0xdc00 <= next && next <= 0xdfff) {
+        idx++;
+        code = ((code & 0x3FF) << 10) + (next & 0x3FF) + 0x10000;
+      }
+    }
+
+    var _script = unicode.getScript(code);
+    if (_script !== 'Common' && _script !== 'Inherited' && _script !== 'Unknown') {
+      return UNICODE_SCRIPTS[_script];
+    }
+  }
+
+  return UNICODE_SCRIPTS.Unknown;
+}
+
+function forCodePoints(codePoints) {
+  for (var i = 0; i < codePoints.length; i++) {
+    var codePoint = codePoints[i];
+    var _script2 = unicode.getScript(codePoint);
+    if (_script2 !== 'Common' && _script2 !== 'Inherited' && _script2 !== 'Unknown') {
+      return UNICODE_SCRIPTS[_script2];
+    }
+  }
+
+  return UNICODE_SCRIPTS.Unknown;
+}
+
+// The scripts in this map are written from right to left
+var RTL = {
+  arab: true, // Arabic
+  hebr: true, // Hebrew
+  syrc: true, // Syriac
+  thaa: true, // Thaana
+  cprt: true, // Cypriot Syllabary
+  khar: true, // Kharosthi
+  phnx: true, // Phoenician
+  'nko ': true, // N'Ko
+  lydi: true, // Lydian
+  avst: true, // Avestan
+  armi: true, // Imperial Aramaic
+  phli: true, // Inscriptional Pahlavi
+  prti: true, // Inscriptional Parthian
+  sarb: true, // Old South Arabian
+  orkh: true, // Old Turkic, Orkhon Runic
+  samr: true, // Samaritan
+  mand: true, // Mandaic, Mandaean
+  merc: true, // Meroitic Cursive
+  mero: true, // Meroitic Hieroglyphs
+
+  // Unicode 7.0 (not listed on http://www.microsoft.com/typography/otspec/scripttags.htm)
+  mani: true, // Manichaean
+  mend: true, // Mende Kikakui
+  nbat: true, // Nabataean
+  narb: true, // Old North Arabian
+  palm: true, // Palmyrene
+  phlp: true // Psalter Pahlavi
+};
+
+function direction(script) {
+  if (RTL[script]) {
+    return 'rtl';
+  }
+
+  return 'ltr';
+}
+
+/**
+ * Represents a run of Glyph and GlyphPosition objects.
+ * Returned by the font layout method.
+ */
+
+var GlyphRun = function () {
+  function GlyphRun(glyphs, features, script, language, direction$$) {
+    _classCallCheck(this, GlyphRun);
+
+    /**
+     * An array of Glyph objects in the run
+     * @type {Glyph[]}
+     */
+    this.glyphs = glyphs;
+
+    /**
+     * An array of GlyphPosition objects for each glyph in the run
+     * @type {GlyphPosition[]}
+     */
+    this.positions = null;
+
+    /**
+     * The script that was requested for shaping. This was either passed in or detected automatically.
+     * @type {string}
+     */
+    this.script = script;
+
+    /**
+     * The language requested for shaping, as passed in. If `null`, the default language for the
+     * script was used.
+     * @type {string}
+     */
+    this.language = language || null;
+
+    /**
+     * The direction requested for shaping, as passed in (either ltr or rtl).
+     * If `null`, the default direction of the script is used.
+     * @type {string}
+     */
+    this.direction = direction$$ || direction(script);
+
+    /**
+     * The features requested during shaping. This is a combination of user
+     * specified features and features chosen by the shaper.
+     * @type {object}
+     */
+    this.features = {};
+
+    // Convert features to an object
+    if (Array.isArray(features)) {
+      for (var _iterator = features, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var tag = _ref;
+
+        this.features[tag] = true;
+      }
+    } else if ((typeof features === 'undefined' ? 'undefined' : _typeof(features)) === 'object') {
+      this.features = features;
+    }
+  }
+
+  /**
+   * The total advance width of the run.
+   * @type {number}
+   */
+
+
+  _createClass(GlyphRun, [{
+    key: 'advanceWidth',
+    get: function get() {
+      var width = 0;
+      for (var _iterator2 = this.positions, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var position = _ref2;
+
+        width += position.xAdvance;
+      }
+
+      return width;
+    }
+
+    /**
+     * The total advance height of the run.
+     * @type {number}
+     */
+
+  }, {
+    key: 'advanceHeight',
+    get: function get() {
+      var height = 0;
+      for (var _iterator3 = this.positions, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref3 = _i3.value;
+        }
+
+        var position = _ref3;
+
+        height += position.yAdvance;
+      }
+
+      return height;
+    }
+
+    /**
+     * The bounding box containing all glyphs in the run.
+     * @type {BBox}
+     */
+
+  }, {
+    key: 'bbox',
+    get: function get() {
+      var bbox = new BBox();
+
+      var x = 0;
+      var y = 0;
+      for (var index = 0; index < this.glyphs.length; index++) {
+        var glyph = this.glyphs[index];
+        var p = this.positions[index];
+        var b = glyph.bbox;
+
+        bbox.addPoint(b.minX + x + p.xOffset, b.minY + y + p.yOffset);
+        bbox.addPoint(b.maxX + x + p.xOffset, b.maxY + y + p.yOffset);
+
+        x += p.xAdvance;
+        y += p.yAdvance;
+      }
+
+      return bbox;
+    }
+  }]);
+
+  return GlyphRun;
+}();
+
+/**
+ * Represents positioning information for a glyph in a GlyphRun.
+ */
+var GlyphPosition = function GlyphPosition() {
+  var xAdvance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+  var yAdvance = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+  var xOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+  var yOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+
+  _classCallCheck(this, GlyphPosition);
+
+  /**
+   * The amount to move the virtual pen in the X direction after rendering this glyph.
+   * @type {number}
+   */
+  this.xAdvance = xAdvance;
+
+  /**
+   * The amount to move the virtual pen in the Y direction after rendering this glyph.
+   * @type {number}
+   */
+  this.yAdvance = yAdvance;
+
+  /**
+   * The offset from the pen position in the X direction at which to render this glyph.
+   * @type {number}
+   */
+  this.xOffset = xOffset;
+
+  /**
+   * The offset from the pen position in the Y direction at which to render this glyph.
+   * @type {number}
+   */
+  this.yOffset = yOffset;
+};
+
+// see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html
+// and /System/Library/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h on a Mac
+var features = {
+  allTypographicFeatures: {
+    code: 0,
+    exclusive: false,
+    allTypeFeatures: 0
+  },
+  ligatures: {
+    code: 1,
+    exclusive: false,
+    requiredLigatures: 0,
+    commonLigatures: 2,
+    rareLigatures: 4,
+    // logos: 6
+    rebusPictures: 8,
+    diphthongLigatures: 10,
+    squaredLigatures: 12,
+    abbrevSquaredLigatures: 14,
+    symbolLigatures: 16,
+    contextualLigatures: 18,
+    historicalLigatures: 20
+  },
+  cursiveConnection: {
+    code: 2,
+    exclusive: true,
+    unconnected: 0,
+    partiallyConnected: 1,
+    cursive: 2
+  },
+  letterCase: {
+    code: 3,
+    exclusive: true
+  },
+  // upperAndLowerCase: 0          # deprecated
+  // allCaps: 1                    # deprecated
+  // allLowerCase: 2               # deprecated
+  // smallCaps: 3                  # deprecated
+  // initialCaps: 4                # deprecated
+  // initialCapsAndSmallCaps: 5    # deprecated
+  verticalSubstitution: {
+    code: 4,
+    exclusive: false,
+    substituteVerticalForms: 0
+  },
+  linguisticRearrangement: {
+    code: 5,
+    exclusive: false,
+    linguisticRearrangement: 0
+  },
+  numberSpacing: {
+    code: 6,
+    exclusive: true,
+    monospacedNumbers: 0,
+    proportionalNumbers: 1,
+    thirdWidthNumbers: 2,
+    quarterWidthNumbers: 3
+  },
+  smartSwash: {
+    code: 8,
+    exclusive: false,
+    wordInitialSwashes: 0,
+    wordFinalSwashes: 2,
+    // lineInitialSwashes: 4
+    // lineFinalSwashes: 6
+    nonFinalSwashes: 8
+  },
+  diacritics: {
+    code: 9,
+    exclusive: true,
+    showDiacritics: 0,
+    hideDiacritics: 1,
+    decomposeDiacritics: 2
+  },
+  verticalPosition: {
+    code: 10,
+    exclusive: true,
+    normalPosition: 0,
+    superiors: 1,
+    inferiors: 2,
+    ordinals: 3,
+    scientificInferiors: 4
+  },
+  fractions: {
+    code: 11,
+    exclusive: true,
+    noFractions: 0,
+    verticalFractions: 1,
+    diagonalFractions: 2
+  },
+  overlappingCharacters: {
+    code: 13,
+    exclusive: false,
+    preventOverlap: 0
+  },
+  typographicExtras: {
+    code: 14,
+    exclusive: false,
+    // hyphensToEmDash: 0
+    // hyphenToEnDash: 2
+    slashedZero: 4
+  },
+  // formInterrobang: 6
+  // smartQuotes: 8
+  // periodsToEllipsis: 10
+  mathematicalExtras: {
+    code: 15,
+    exclusive: false,
+    // hyphenToMinus: 0
+    // asteristoMultiply: 2
+    // slashToDivide: 4
+    // inequalityLigatures: 6
+    // exponents: 8
+    mathematicalGreek: 10
+  },
+  ornamentSets: {
+    code: 16,
+    exclusive: true,
+    noOrnaments: 0,
+    dingbats: 1,
+    piCharacters: 2,
+    fleurons: 3,
+    decorativeBorders: 4,
+    internationalSymbols: 5,
+    mathSymbols: 6
+  },
+  characterAlternatives: {
+    code: 17,
+    exclusive: true,
+    noAlternates: 0
+  },
+  // user defined options
+  designComplexity: {
+    code: 18,
+    exclusive: true,
+    designLevel1: 0,
+    designLevel2: 1,
+    designLevel3: 2,
+    designLevel4: 3,
+    designLevel5: 4
+  },
+  styleOptions: {
+    code: 19,
+    exclusive: true,
+    noStyleOptions: 0,
+    displayText: 1,
+    engravedText: 2,
+    illuminatedCaps: 3,
+    titlingCaps: 4,
+    tallCaps: 5
+  },
+  characterShape: {
+    code: 20,
+    exclusive: true,
+    traditionalCharacters: 0,
+    simplifiedCharacters: 1,
+    JIS1978Characters: 2,
+    JIS1983Characters: 3,
+    JIS1990Characters: 4,
+    traditionalAltOne: 5,
+    traditionalAltTwo: 6,
+    traditionalAltThree: 7,
+    traditionalAltFour: 8,
+    traditionalAltFive: 9,
+    expertCharacters: 10,
+    JIS2004Characters: 11,
+    hojoCharacters: 12,
+    NLCCharacters: 13,
+    traditionalNamesCharacters: 14
+  },
+  numberCase: {
+    code: 21,
+    exclusive: true,
+    lowerCaseNumbers: 0,
+    upperCaseNumbers: 1
+  },
+  textSpacing: {
+    code: 22,
+    exclusive: true,
+    proportionalText: 0,
+    monospacedText: 1,
+    halfWidthText: 2,
+    thirdWidthText: 3,
+    quarterWidthText: 4,
+    altProportionalText: 5,
+    altHalfWidthText: 6
+  },
+  transliteration: {
+    code: 23,
+    exclusive: true,
+    noTransliteration: 0
+  },
+  // hanjaToHangul: 1
+  // hiraganaToKatakana: 2
+  // katakanaToHiragana: 3
+  // kanaToRomanization: 4
+  // romanizationToHiragana: 5
+  // romanizationToKatakana: 6
+  // hanjaToHangulAltOne: 7
+  // hanjaToHangulAltTwo: 8
+  // hanjaToHangulAltThree: 9
+  annotation: {
+    code: 24,
+    exclusive: true,
+    noAnnotation: 0,
+    boxAnnotation: 1,
+    roundedBoxAnnotation: 2,
+    circleAnnotation: 3,
+    invertedCircleAnnotation: 4,
+    parenthesisAnnotation: 5,
+    periodAnnotation: 6,
+    romanNumeralAnnotation: 7,
+    diamondAnnotation: 8,
+    invertedBoxAnnotation: 9,
+    invertedRoundedBoxAnnotation: 10
+  },
+  kanaSpacing: {
+    code: 25,
+    exclusive: true,
+    fullWidthKana: 0,
+    proportionalKana: 1
+  },
+  ideographicSpacing: {
+    code: 26,
+    exclusive: true,
+    fullWidthIdeographs: 0,
+    proportionalIdeographs: 1,
+    halfWidthIdeographs: 2
+  },
+  unicodeDecomposition: {
+    code: 27,
+    exclusive: false,
+    canonicalComposition: 0,
+    compatibilityComposition: 2,
+    transcodingComposition: 4
+  },
+  rubyKana: {
+    code: 28,
+    exclusive: false,
+    // noRubyKana: 0     # deprecated - use rubyKanaOff instead
+    // rubyKana: 1     # deprecated - use rubyKanaOn instead
+    rubyKana: 2
+  },
+  CJKSymbolAlternatives: {
+    code: 29,
+    exclusive: true,
+    noCJKSymbolAlternatives: 0,
+    CJKSymbolAltOne: 1,
+    CJKSymbolAltTwo: 2,
+    CJKSymbolAltThree: 3,
+    CJKSymbolAltFour: 4,
+    CJKSymbolAltFive: 5
+  },
+  ideographicAlternatives: {
+    code: 30,
+    exclusive: true,
+    noIdeographicAlternatives: 0,
+    ideographicAltOne: 1,
+    ideographicAltTwo: 2,
+    ideographicAltThree: 3,
+    ideographicAltFour: 4,
+    ideographicAltFive: 5
+  },
+  CJKVerticalRomanPlacement: {
+    code: 31,
+    exclusive: true,
+    CJKVerticalRomanCentered: 0,
+    CJKVerticalRomanHBaseline: 1
+  },
+  italicCJKRoman: {
+    code: 32,
+    exclusive: false,
+    // noCJKItalicRoman: 0     # deprecated - use CJKItalicRomanOff instead
+    // CJKItalicRoman: 1     # deprecated - use CJKItalicRomanOn instead
+    CJKItalicRoman: 2
+  },
+  caseSensitiveLayout: {
+    code: 33,
+    exclusive: false,
+    caseSensitiveLayout: 0,
+    caseSensitiveSpacing: 2
+  },
+  alternateKana: {
+    code: 34,
+    exclusive: false,
+    alternateHorizKana: 0,
+    alternateVertKana: 2
+  },
+  stylisticAlternatives: {
+    code: 35,
+    exclusive: false,
+    noStylisticAlternates: 0,
+    stylisticAltOne: 2,
+    stylisticAltTwo: 4,
+    stylisticAltThree: 6,
+    stylisticAltFour: 8,
+    stylisticAltFive: 10,
+    stylisticAltSix: 12,
+    stylisticAltSeven: 14,
+    stylisticAltEight: 16,
+    stylisticAltNine: 18,
+    stylisticAltTen: 20,
+    stylisticAltEleven: 22,
+    stylisticAltTwelve: 24,
+    stylisticAltThirteen: 26,
+    stylisticAltFourteen: 28,
+    stylisticAltFifteen: 30,
+    stylisticAltSixteen: 32,
+    stylisticAltSeventeen: 34,
+    stylisticAltEighteen: 36,
+    stylisticAltNineteen: 38,
+    stylisticAltTwenty: 40
+  },
+  contextualAlternates: {
+    code: 36,
+    exclusive: false,
+    contextualAlternates: 0,
+    swashAlternates: 2,
+    contextualSwashAlternates: 4
+  },
+  lowerCase: {
+    code: 37,
+    exclusive: true,
+    defaultLowerCase: 0,
+    lowerCaseSmallCaps: 1,
+    lowerCasePetiteCaps: 2
+  },
+  upperCase: {
+    code: 38,
+    exclusive: true,
+    defaultUpperCase: 0,
+    upperCaseSmallCaps: 1,
+    upperCasePetiteCaps: 2
+  },
+  languageTag: { // indices into ltag table
+    code: 39,
+    exclusive: true
+  },
+  CJKRomanSpacing: {
+    code: 103,
+    exclusive: true,
+    halfWidthCJKRoman: 0,
+    proportionalCJKRoman: 1,
+    defaultCJKRoman: 2,
+    fullWidthCJKRoman: 3
+  }
+};
+
+var feature = function feature(name, selector) {
+  return [features[name].code, features[name][selector]];
+};
+
+var OTMapping = {
+  rlig: feature('ligatures', 'requiredLigatures'),
+  clig: feature('ligatures', 'contextualLigatures'),
+  dlig: feature('ligatures', 'rareLigatures'),
+  hlig: feature('ligatures', 'historicalLigatures'),
+  liga: feature('ligatures', 'commonLigatures'),
+  hist: feature('ligatures', 'historicalLigatures'), // ??
+
+  smcp: feature('lowerCase', 'lowerCaseSmallCaps'),
+  pcap: feature('lowerCase', 'lowerCasePetiteCaps'),
+
+  frac: feature('fractions', 'diagonalFractions'),
+  dnom: feature('fractions', 'diagonalFractions'), // ??
+  numr: feature('fractions', 'diagonalFractions'), // ??
+  afrc: feature('fractions', 'verticalFractions'),
+  // aalt
+  // abvf, abvm, abvs, akhn, blwf, blwm, blws, cfar, cjct, cpsp, falt, isol, jalt, ljmo, mset?
+  // ltra, ltrm, nukt, pref, pres, pstf, psts, rand, rkrf, rphf, rtla, rtlm, size, tjmo, tnum?
+  // unic, vatu, vhal, vjmo, vpal, vrt2
+  // dist -> trak table?
+  // kern, vkrn -> kern table
+  // lfbd + opbd + rtbd -> opbd table?
+  // mark, mkmk -> acnt table?
+  // locl -> languageTag + ltag table
+
+  case: feature('caseSensitiveLayout', 'caseSensitiveLayout'), // also caseSensitiveSpacing
+  ccmp: feature('unicodeDecomposition', 'canonicalComposition'), // compatibilityComposition?
+  cpct: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'), // guess..., probably not given below
+  valt: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),
+  swsh: feature('contextualAlternates', 'swashAlternates'),
+  cswh: feature('contextualAlternates', 'contextualSwashAlternates'),
+  curs: feature('cursiveConnection', 'cursive'), // ??
+  c2pc: feature('upperCase', 'upperCasePetiteCaps'),
+  c2sc: feature('upperCase', 'upperCaseSmallCaps'),
+
+  init: feature('smartSwash', 'wordInitialSwashes'), // ??
+  fin2: feature('smartSwash', 'wordFinalSwashes'), // ??
+  medi: feature('smartSwash', 'nonFinalSwashes'), // ??
+  med2: feature('smartSwash', 'nonFinalSwashes'), // ??
+  fin3: feature('smartSwash', 'wordFinalSwashes'), // ??
+  fina: feature('smartSwash', 'wordFinalSwashes'), // ??
+
+  pkna: feature('kanaSpacing', 'proportionalKana'),
+  half: feature('textSpacing', 'halfWidthText'), // also HalfWidthCJKRoman, HalfWidthIdeographs?
+  halt: feature('textSpacing', 'altHalfWidthText'),
+
+  hkna: feature('alternateKana', 'alternateHorizKana'),
+  vkna: feature('alternateKana', 'alternateVertKana'),
+  // hngl: feature 'transliteration', 'hanjaToHangulSelector' # deprecated
+
+  ital: feature('italicCJKRoman', 'CJKItalicRoman'),
+  lnum: feature('numberCase', 'upperCaseNumbers'),
+  onum: feature('numberCase', 'lowerCaseNumbers'),
+  mgrk: feature('mathematicalExtras', 'mathematicalGreek'),
+
+  // nalt: not enough info. what type of annotation?
+  // ornm: ditto, which ornament style?
+
+  calt: feature('contextualAlternates', 'contextualAlternates'), // or more?
+  vrt2: feature('verticalSubstitution', 'substituteVerticalForms'), // oh... below?
+  vert: feature('verticalSubstitution', 'substituteVerticalForms'),
+  tnum: feature('numberSpacing', 'monospacedNumbers'),
+  pnum: feature('numberSpacing', 'proportionalNumbers'),
+  sups: feature('verticalPosition', 'superiors'),
+  subs: feature('verticalPosition', 'inferiors'),
+  ordn: feature('verticalPosition', 'ordinals'),
+  pwid: feature('textSpacing', 'proportionalText'),
+  hwid: feature('textSpacing', 'halfWidthText'),
+  qwid: feature('textSpacing', 'quarterWidthText'), // also QuarterWidthNumbers?
+  twid: feature('textSpacing', 'thirdWidthText'), // also ThirdWidthNumbers?
+  fwid: feature('textSpacing', 'proportionalText'), //??
+  palt: feature('textSpacing', 'altProportionalText'),
+  trad: feature('characterShape', 'traditionalCharacters'),
+  smpl: feature('characterShape', 'simplifiedCharacters'),
+  jp78: feature('characterShape', 'JIS1978Characters'),
+  jp83: feature('characterShape', 'JIS1983Characters'),
+  jp90: feature('characterShape', 'JIS1990Characters'),
+  jp04: feature('characterShape', 'JIS2004Characters'),
+  expt: feature('characterShape', 'expertCharacters'),
+  hojo: feature('characterShape', 'hojoCharacters'),
+  nlck: feature('characterShape', 'NLCCharacters'),
+  tnam: feature('characterShape', 'traditionalNamesCharacters'),
+  ruby: feature('rubyKana', 'rubyKana'),
+  titl: feature('styleOptions', 'titlingCaps'),
+  zero: feature('typographicExtras', 'slashedZero'),
+
+  ss01: feature('stylisticAlternatives', 'stylisticAltOne'),
+  ss02: feature('stylisticAlternatives', 'stylisticAltTwo'),
+  ss03: feature('stylisticAlternatives', 'stylisticAltThree'),
+  ss04: feature('stylisticAlternatives', 'stylisticAltFour'),
+  ss05: feature('stylisticAlternatives', 'stylisticAltFive'),
+  ss06: feature('stylisticAlternatives', 'stylisticAltSix'),
+  ss07: feature('stylisticAlternatives', 'stylisticAltSeven'),
+  ss08: feature('stylisticAlternatives', 'stylisticAltEight'),
+  ss09: feature('stylisticAlternatives', 'stylisticAltNine'),
+  ss10: feature('stylisticAlternatives', 'stylisticAltTen'),
+  ss11: feature('stylisticAlternatives', 'stylisticAltEleven'),
+  ss12: feature('stylisticAlternatives', 'stylisticAltTwelve'),
+  ss13: feature('stylisticAlternatives', 'stylisticAltThirteen'),
+  ss14: feature('stylisticAlternatives', 'stylisticAltFourteen'),
+  ss15: feature('stylisticAlternatives', 'stylisticAltFifteen'),
+  ss16: feature('stylisticAlternatives', 'stylisticAltSixteen'),
+  ss17: feature('stylisticAlternatives', 'stylisticAltSeventeen'),
+  ss18: feature('stylisticAlternatives', 'stylisticAltEighteen'),
+  ss19: feature('stylisticAlternatives', 'stylisticAltNineteen'),
+  ss20: feature('stylisticAlternatives', 'stylisticAltTwenty')
+};
+
+// salt: feature 'stylisticAlternatives', 'stylisticAltOne' # hmm, which one to choose
+
+// Add cv01-cv99 features
+for (var i = 1; i <= 99; i++) {
+  OTMapping['cv' + ('00' + i).slice(-2)] = [features.characterAlternatives.code, i];
+}
+
+// create inverse mapping
+var AATMapping = {};
+for (var ot in OTMapping) {
+  var aat = OTMapping[ot];
+  if (AATMapping[aat[0]] == null) {
+    AATMapping[aat[0]] = {};
+  }
+
+  AATMapping[aat[0]][aat[1]] = ot;
+}
+
+// Maps an array of OpenType features to AAT features
+// in the form of {featureType:{featureSetting:true}}
+function mapOTToAAT(features) {
+  var res = {};
+  for (var k in features) {
+    var r = void 0;
+    if (r = OTMapping[k]) {
+      if (res[r[0]] == null) {
+        res[r[0]] = {};
+      }
+
+      res[r[0]][r[1]] = features[k];
+    }
+  }
+
+  return res;
+}
+
+// Maps strings in a [featureType, featureSetting]
+// to their equivalent number codes
+function mapFeatureStrings(f) {
+  var type = f[0],
+      setting = f[1];
+
+  if (isNaN(type)) {
+    var typeCode = features[type] && features[type].code;
+  } else {
+    var typeCode = type;
+  }
+
+  if (isNaN(setting)) {
+    var settingCode = features[type] && features[type][setting];
+  } else {
+    var settingCode = setting;
+  }
+
+  return [typeCode, settingCode];
+}
+
+// Maps AAT features to an array of OpenType features
+// Supports both arrays in the form of [[featureType, featureSetting]]
+// and objects in the form of {featureType:{featureSetting:true}}
+// featureTypes and featureSettings can be either strings or number codes
+function mapAATToOT(features) {
+  var res = {};
+  if (Array.isArray(features)) {
+    for (var k = 0; k < features.length; k++) {
+      var r = void 0;
+      var f = mapFeatureStrings(features[k]);
+      if (r = AATMapping[f[0]] && AATMapping[f[0]][f[1]]) {
+        res[r] = true;
+      }
+    }
+  } else if ((typeof features === 'undefined' ? 'undefined' : _typeof(features)) === 'object') {
+    for (var type in features) {
+      var _feature = features[type];
+      for (var setting in _feature) {
+        var _r = void 0;
+        var _f = mapFeatureStrings([type, setting]);
+        if (_feature[setting] && (_r = AATMapping[_f[0]] && AATMapping[_f[0]][_f[1]])) {
+          res[_r] = true;
+        }
+      }
+    }
+  }
+
+  return _Object$keys(res);
+}
+
+var _class$3;
+function _applyDecoratedDescriptor$3(target, property, decorators, descriptor, context) {
+  var desc = {};
+  Object['ke' + 'ys'](descriptor).forEach(function (key) {
+    desc[key] = descriptor[key];
+  });
+  desc.enumerable = !!desc.enumerable;
+  desc.configurable = !!desc.configurable;
+
+  if ('value' in desc || desc.initializer) {
+    desc.writable = true;
+  }
+
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+    return decorator(target, property, desc) || desc;
+  }, desc);
+
+  if (context && desc.initializer !== void 0) {
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+    desc.initializer = undefined;
+  }
+
+  if (desc.initializer === void 0) {
+    Object['define' + 'Property'](target, property, desc);
+    desc = null;
+  }
+
+  return desc;
+}
+
+var AATLookupTable = (_class$3 = function () {
+  function AATLookupTable(table) {
+    _classCallCheck(this, AATLookupTable);
+
+    this.table = table;
+  }
+
+  AATLookupTable.prototype.lookup = function lookup(glyph) {
+    switch (this.table.version) {
+      case 0:
+        // simple array format
+        return this.table.values.getItem(glyph);
+
+      case 2: // segment format
+      case 4:
+        {
+          var min = 0;
+          var max = this.table.binarySearchHeader.nUnits - 1;
+
+          while (min <= max) {
+            var mid = min + max >> 1;
+            var seg = this.table.segments[mid];
+
+            // special end of search value
+            if (seg.firstGlyph === 0xffff) {
+              return null;
+            }
+
+            if (glyph < seg.firstGlyph) {
+              max = mid - 1;
+            } else if (glyph > seg.lastGlyph) {
+              min = mid + 1;
+            } else {
+              if (this.table.version === 2) {
+                return seg.value;
+              } else {
+                return seg.values[glyph - seg.firstGlyph];
+              }
+            }
+          }
+
+          return null;
+        }
+
+      case 6:
+        {
+          // lookup single
+          var _min = 0;
+          var _max = this.table.binarySearchHeader.nUnits - 1;
+
+          while (_min <= _max) {
+            var mid = _min + _max >> 1;
+            var seg = this.table.segments[mid];
+
+            // special end of search value
+            if (seg.glyph === 0xffff) {
+              return null;
+            }
+
+            if (glyph < seg.glyph) {
+              _max = mid - 1;
+            } else if (glyph > seg.glyph) {
+              _min = mid + 1;
+            } else {
+              return seg.value;
+            }
+          }
+
+          return null;
+        }
+
+      case 8:
+        // lookup trimmed
+        return this.table.values[glyph - this.table.firstGlyph];
+
+      default:
+        throw new Error('Unknown lookup table format: ' + this.table.version);
+    }
+  };
+
+  AATLookupTable.prototype.glyphsForValue = function glyphsForValue(classValue) {
+    var res = [];
+
+    switch (this.table.version) {
+      case 2: // segment format
+      case 4:
+        {
+          for (var _iterator = this.table.segments, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+            var _ref;
+
+            if (_isArray) {
+              if (_i >= _iterator.length) break;
+              _ref = _iterator[_i++];
+            } else {
+              _i = _iterator.next();
+              if (_i.done) break;
+              _ref = _i.value;
+            }
+
+            var segment = _ref;
+
+            if (this.table.version === 2 && segment.value === classValue) {
+              res.push.apply(res, range(segment.firstGlyph, segment.lastGlyph + 1));
+            } else {
+              for (var index = 0; index < segment.values.length; index++) {
+                if (segment.values[index] === classValue) {
+                  res.push(segment.firstGlyph + index);
+                }
+              }
+            }
+          }
+
+          break;
+        }
+
+      case 6:
+        {
+          // lookup single
+          for (var _iterator2 = this.table.segments, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+            var _ref2;
+
+            if (_isArray2) {
+              if (_i2 >= _iterator2.length) break;
+              _ref2 = _iterator2[_i2++];
+            } else {
+              _i2 = _iterator2.next();
+              if (_i2.done) break;
+              _ref2 = _i2.value;
+            }
+
+            var _segment = _ref2;
+
+            if (_segment.value === classValue) {
+              res.push(_segment.glyph);
+            }
+          }
+
+          break;
+        }
+
+      case 8:
+        {
+          // lookup trimmed
+          for (var i = 0; i < this.table.values.length; i++) {
+            if (this.table.values[i] === classValue) {
+              res.push(this.table.firstGlyph + i);
+            }
+          }
+
+          break;
+        }
+
+      default:
+        throw new Error('Unknown lookup table format: ' + this.table.version);
+    }
+
+    return res;
+  };
+
+  return AATLookupTable;
+}(), (_applyDecoratedDescriptor$3(_class$3.prototype, 'glyphsForValue', [cache], _Object$getOwnPropertyDescriptor(_class$3.prototype, 'glyphsForValue'), _class$3.prototype)), _class$3);
+
+var START_OF_TEXT_STATE = 0;
+var END_OF_TEXT_CLASS = 0;
+var OUT_OF_BOUNDS_CLASS = 1;
+var DELETED_GLYPH_CLASS = 2;
+var DONT_ADVANCE = 0x4000;
+
+var AATStateMachine = function () {
+  function AATStateMachine(stateTable) {
+    _classCallCheck(this, AATStateMachine);
+
+    this.stateTable = stateTable;
+    this.lookupTable = new AATLookupTable(stateTable.classTable);
+  }
+
+  AATStateMachine.prototype.process = function process(glyphs, reverse, processEntry) {
+    var currentState = START_OF_TEXT_STATE; // START_OF_LINE_STATE is used for kashida glyph insertions sometimes I think?
+    var index = reverse ? glyphs.length - 1 : 0;
+    var dir = reverse ? -1 : 1;
+
+    while (dir === 1 && index <= glyphs.length || dir === -1 && index >= -1) {
+      var glyph = null;
+      var classCode = OUT_OF_BOUNDS_CLASS;
+      var shouldAdvance = true;
+
+      if (index === glyphs.length || index === -1) {
+        classCode = END_OF_TEXT_CLASS;
+      } else {
+        glyph = glyphs[index];
+        if (glyph.id === 0xffff) {
+          // deleted glyph
+          classCode = DELETED_GLYPH_CLASS;
+        } else {
+          classCode = this.lookupTable.lookup(glyph.id);
+          if (classCode == null) {
+            classCode = OUT_OF_BOUNDS_CLASS;
+          }
+        }
+      }
+
+      var row = this.stateTable.stateArray.getItem(currentState);
+      var entryIndex = row[classCode];
+      var entry = this.stateTable.entryTable.getItem(entryIndex);
+
+      if (classCode !== END_OF_TEXT_CLASS && classCode !== DELETED_GLYPH_CLASS) {
+        processEntry(glyph, entry, index);
+        shouldAdvance = !(entry.flags & DONT_ADVANCE);
+      }
+
+      currentState = entry.newState;
+      if (shouldAdvance) {
+        index += dir;
+      }
+    }
+
+    return glyphs;
+  };
+
+  /**
+   * Performs a depth-first traversal of the glyph strings
+   * represented by the state machine.
+   */
+
+
+  AATStateMachine.prototype.traverse = function traverse(opts) {
+    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+    var visited = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new _Set();
+
+    if (visited.has(state)) {
+      return;
+    }
+
+    visited.add(state);
+
+    var _stateTable = this.stateTable,
+        nClasses = _stateTable.nClasses,
+        stateArray = _stateTable.stateArray,
+        entryTable = _stateTable.entryTable;
+
+    var row = stateArray.getItem(state);
+
+    // Skip predefined classes
+    for (var classCode = 4; classCode < nClasses; classCode++) {
+      var entryIndex = row[classCode];
+      var entry = entryTable.getItem(entryIndex);
+
+      // Try all glyphs in the class
+      for (var _iterator = this.lookupTable.glyphsForValue(classCode), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var glyph = _ref;
+
+        if (opts.enter) {
+          opts.enter(glyph, entry);
+        }
+
+        if (entry.newState !== 0) {
+          this.traverse(opts, entry.newState, visited);
+        }
+
+        if (opts.exit) {
+          opts.exit(glyph, entry);
+        }
+      }
+    }
+  };
+
+  return AATStateMachine;
+}();
+
+var _class$2;
+function _applyDecoratedDescriptor$2(target, property, decorators, descriptor, context) {
+  var desc = {};
+  Object['ke' + 'ys'](descriptor).forEach(function (key) {
+    desc[key] = descriptor[key];
+  });
+  desc.enumerable = !!desc.enumerable;
+  desc.configurable = !!desc.configurable;
+
+  if ('value' in desc || desc.initializer) {
+    desc.writable = true;
+  }
+
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+    return decorator(target, property, desc) || desc;
+  }, desc);
+
+  if (context && desc.initializer !== void 0) {
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+    desc.initializer = undefined;
+  }
+
+  if (desc.initializer === void 0) {
+    Object['define' + 'Property'](target, property, desc);
+    desc = null;
+  }
+
+  return desc;
+}
+
+// indic replacement flags
+var MARK_FIRST = 0x8000;
+var MARK_LAST = 0x2000;
+var VERB = 0x000F;
+
+// contextual substitution and glyph insertion flag
+var SET_MARK = 0x8000;
+
+// ligature entry flags
+var SET_COMPONENT = 0x8000;
+var PERFORM_ACTION = 0x2000;
+
+// ligature action masks
+var LAST_MASK = 0x80000000;
+var STORE_MASK = 0x40000000;
+var OFFSET_MASK = 0x3FFFFFFF;
+
+var REVERSE_DIRECTION = 0x400000;
+var CURRENT_INSERT_BEFORE = 0x0800;
+var MARKED_INSERT_BEFORE = 0x0400;
+var CURRENT_INSERT_COUNT = 0x03E0;
+var MARKED_INSERT_COUNT = 0x001F;
+
+var AATMorxProcessor = (_class$2 = function () {
+  function AATMorxProcessor(font) {
+    _classCallCheck(this, AATMorxProcessor);
+
+    this.processIndicRearragement = this.processIndicRearragement.bind(this);
+    this.processContextualSubstitution = this.processContextualSubstitution.bind(this);
+    this.processLigature = this.processLigature.bind(this);
+    this.processNoncontextualSubstitutions = this.processNoncontextualSubstitutions.bind(this);
+    this.processGlyphInsertion = this.processGlyphInsertion.bind(this);
+    this.font = font;
+    this.morx = font.morx;
+    this.inputCache = null;
+  }
+
+  // Processes an array of glyphs and applies the specified features
+  // Features should be in the form of {featureType:{featureSetting:true}}
+
+
+  AATMorxProcessor.prototype.process = function process(glyphs) {
+    var features = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+    for (var _iterator = this.morx.chains, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var chain = _ref;
+
+      var flags = chain.defaultFlags;
+
+      // enable/disable the requested features
+      for (var _iterator2 = chain.features, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var feature = _ref2;
+
+        var f = void 0;
+        if ((f = features[feature.featureType]) && f[feature.featureSetting]) {
+          flags &= feature.disableFlags;
+          flags |= feature.enableFlags;
+        }
+      }
+
+      for (var _iterator3 = chain.subtables, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref3 = _i3.value;
+        }
+
+        var subtable = _ref3;
+
+        if (subtable.subFeatureFlags & flags) {
+          this.processSubtable(subtable, glyphs);
+        }
+      }
+    }
+
+    // remove deleted glyphs
+    var index = glyphs.length - 1;
+    while (index >= 0) {
+      if (glyphs[index].id === 0xffff) {
+        glyphs.splice(index, 1);
+      }
+
+      index--;
+    }
+
+    return glyphs;
+  };
+
+  AATMorxProcessor.prototype.processSubtable = function processSubtable(subtable, glyphs) {
+    this.subtable = subtable;
+    this.glyphs = glyphs;
+    if (this.subtable.type === 4) {
+      this.processNoncontextualSubstitutions(this.subtable, this.glyphs);
+      return;
+    }
+
+    this.ligatureStack = [];
+    this.markedGlyph = null;
+    this.firstGlyph = null;
+    this.lastGlyph = null;
+    this.markedIndex = null;
+
+    var stateMachine = this.getStateMachine(subtable);
+    var process = this.getProcessor();
+
+    var reverse = !!(this.subtable.coverage & REVERSE_DIRECTION);
+    return stateMachine.process(this.glyphs, reverse, process);
+  };
+
+  AATMorxProcessor.prototype.getStateMachine = function getStateMachine(subtable) {
+    return new AATStateMachine(subtable.table.stateTable);
+  };
+
+  AATMorxProcessor.prototype.getProcessor = function getProcessor() {
+    switch (this.subtable.type) {
+      case 0:
+        return this.processIndicRearragement;
+      case 1:
+        return this.processContextualSubstitution;
+      case 2:
+        return this.processLigature;
+      case 4:
+        return this.processNoncontextualSubstitutions;
+      case 5:
+        return this.processGlyphInsertion;
+      default:
+        throw new Error('Invalid morx subtable type: ' + this.subtable.type);
+    }
+  };
+
+  AATMorxProcessor.prototype.processIndicRearragement = function processIndicRearragement(glyph, entry, index) {
+    if (entry.flags & MARK_FIRST) {
+      this.firstGlyph = index;
+    }
+
+    if (entry.flags & MARK_LAST) {
+      this.lastGlyph = index;
+    }
+
+    reorderGlyphs(this.glyphs, entry.flags & VERB, this.firstGlyph, this.lastGlyph);
+  };
+
+  AATMorxProcessor.prototype.processContextualSubstitution = function processContextualSubstitution(glyph, entry, index) {
+    var subsitutions = this.subtable.table.substitutionTable.items;
+    if (entry.markIndex !== 0xffff) {
+      var lookup = subsitutions.getItem(entry.markIndex);
+      var lookupTable = new AATLookupTable(lookup);
+      glyph = this.glyphs[this.markedGlyph];
+      var gid = lookupTable.lookup(glyph.id);
+      if (gid) {
+        this.glyphs[this.markedGlyph] = this.font.getGlyph(gid, glyph.codePoints);
+      }
+    }
+
+    if (entry.currentIndex !== 0xffff) {
+      var _lookup = subsitutions.getItem(entry.currentIndex);
+      var _lookupTable = new AATLookupTable(_lookup);
+      glyph = this.glyphs[index];
+      var gid = _lookupTable.lookup(glyph.id);
+      if (gid) {
+        this.glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);
+      }
+    }
+
+    if (entry.flags & SET_MARK) {
+      this.markedGlyph = index;
+    }
+  };
+
+  AATMorxProcessor.prototype.processLigature = function processLigature(glyph, entry, index) {
+    if (entry.flags & SET_COMPONENT) {
+      this.ligatureStack.push(index);
+    }
+
+    if (entry.flags & PERFORM_ACTION) {
+      var _ligatureStack;
+
+      var actions = this.subtable.table.ligatureActions;
+      var components = this.subtable.table.components;
+      var ligatureList = this.subtable.table.ligatureList;
+
+      var actionIndex = entry.action;
+      var last = false;
+      var ligatureIndex = 0;
+      var codePoints = [];
+      var ligatureGlyphs = [];
+
+      while (!last) {
+        var _codePoints;
+
+        var componentGlyph = this.ligatureStack.pop();
+        (_codePoints = codePoints).unshift.apply(_codePoints, this.glyphs[componentGlyph].codePoints);
+
+        var action = actions.getItem(actionIndex++);
+        last = !!(action & LAST_MASK);
+        var store = !!(action & STORE_MASK);
+        var offset = (action & OFFSET_MASK) << 2 >> 2; // sign extend 30 to 32 bits
+        offset += this.glyphs[componentGlyph].id;
+
+        var component = components.getItem(offset);
+        ligatureIndex += component;
+
+        if (last || store) {
+          var ligatureEntry = ligatureList.getItem(ligatureIndex);
+          this.glyphs[componentGlyph] = this.font.getGlyph(ligatureEntry, codePoints);
+          ligatureGlyphs.push(componentGlyph);
+          ligatureIndex = 0;
+          codePoints = [];
+        } else {
+          this.glyphs[componentGlyph] = this.font.getGlyph(0xffff);
+        }
+      }
+
+      // Put ligature glyph indexes back on the stack
+      (_ligatureStack = this.ligatureStack).push.apply(_ligatureStack, ligatureGlyphs);
+    }
+  };
+
+  AATMorxProcessor.prototype.processNoncontextualSubstitutions = function processNoncontextualSubstitutions(subtable, glyphs, index) {
+    var lookupTable = new AATLookupTable(subtable.table.lookupTable);
+
+    for (index = 0; index < glyphs.length; index++) {
+      var glyph = glyphs[index];
+      if (glyph.id !== 0xffff) {
+        var gid = lookupTable.lookup(glyph.id);
+        if (gid) {
+          // 0 means do nothing
+          glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);
+        }
+      }
+    }
+  };
+
+  AATMorxProcessor.prototype._insertGlyphs = function _insertGlyphs(glyphIndex, insertionActionIndex, count, isBefore) {
+    var _glyphs;
+
+    var insertions = [];
+    while (count--) {
+      var gid = this.subtable.table.insertionActions.getItem(insertionActionIndex++);
+      insertions.push(this.font.getGlyph(gid));
+    }
+
+    if (!isBefore) {
+      glyphIndex++;
+    }
+
+    (_glyphs = this.glyphs).splice.apply(_glyphs, [glyphIndex, 0].concat(insertions));
+  };
+
+  AATMorxProcessor.prototype.processGlyphInsertion = function processGlyphInsertion(glyph, entry, index) {
+    if (entry.flags & SET_MARK) {
+      this.markedIndex = index;
+    }
+
+    if (entry.markedInsertIndex !== 0xffff) {
+      var count = (entry.flags & MARKED_INSERT_COUNT) >>> 5;
+      var isBefore = !!(entry.flags & MARKED_INSERT_BEFORE);
+      this._insertGlyphs(this.markedIndex, entry.markedInsertIndex, count, isBefore);
+    }
+
+    if (entry.currentInsertIndex !== 0xffff) {
+      var _count = (entry.flags & CURRENT_INSERT_COUNT) >>> 5;
+      var _isBefore = !!(entry.flags & CURRENT_INSERT_BEFORE);
+      this._insertGlyphs(index, entry.currentInsertIndex, _count, _isBefore);
+    }
+  };
+
+  AATMorxProcessor.prototype.getSupportedFeatures = function getSupportedFeatures() {
+    var features = [];
+    for (var _iterator4 = this.morx.chains, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+      var _ref4;
+
+      if (_isArray4) {
+        if (_i4 >= _iterator4.length) break;
+        _ref4 = _iterator4[_i4++];
+      } else {
+        _i4 = _iterator4.next();
+        if (_i4.done) break;
+        _ref4 = _i4.value;
+      }
+
+      var chain = _ref4;
+
+      for (var _iterator5 = chain.features, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
+        var _ref5;
+
+        if (_isArray5) {
+          if (_i5 >= _iterator5.length) break;
+          _ref5 = _iterator5[_i5++];
+        } else {
+          _i5 = _iterator5.next();
+          if (_i5.done) break;
+          _ref5 = _i5.value;
+        }
+
+        var feature = _ref5;
+
+        features.push([feature.featureType, feature.featureSetting]);
+      }
+    }
+
+    return features;
+  };
+
+  AATMorxProcessor.prototype.generateInputs = function generateInputs(gid) {
+    if (!this.inputCache) {
+      this.generateInputCache();
+    }
+
+    return this.inputCache[gid] || [];
+  };
+
+  AATMorxProcessor.prototype.generateInputCache = function generateInputCache() {
+    this.inputCache = {};
+
+    for (var _iterator6 = this.morx.chains, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _getIterator(_iterator6);;) {
+      var _ref6;
+
+      if (_isArray6) {
+        if (_i6 >= _iterator6.length) break;
+        _ref6 = _iterator6[_i6++];
+      } else {
+        _i6 = _iterator6.next();
+        if (_i6.done) break;
+        _ref6 = _i6.value;
+      }
+
+      var chain = _ref6;
+
+      var flags = chain.defaultFlags;
+
+      for (var _iterator7 = chain.subtables, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _getIterator(_iterator7);;) {
+        var _ref7;
+
+        if (_isArray7) {
+          if (_i7 >= _iterator7.length) break;
+          _ref7 = _iterator7[_i7++];
+        } else {
+          _i7 = _iterator7.next();
+          if (_i7.done) break;
+          _ref7 = _i7.value;
+        }
+
+        var subtable = _ref7;
+
+        if (subtable.subFeatureFlags & flags) {
+          this.generateInputsForSubtable(subtable);
+        }
+      }
+    }
+  };
+
+  AATMorxProcessor.prototype.generateInputsForSubtable = function generateInputsForSubtable(subtable) {
+    var _this = this;
+
+    // Currently, only supporting ligature subtables.
+    if (subtable.type !== 2) {
+      return;
+    }
+
+    var reverse = !!(subtable.coverage & REVERSE_DIRECTION);
+    if (reverse) {
+      throw new Error('Reverse subtable, not supported.');
+    }
+
+    this.subtable = subtable;
+    this.ligatureStack = [];
+
+    var stateMachine = this.getStateMachine(subtable);
+    var process = this.getProcessor();
+
+    var input = [];
+    var stack = [];
+    this.glyphs = [];
+
+    stateMachine.traverse({
+      enter: function enter(glyph, entry) {
+        var glyphs = _this.glyphs;
+        stack.push({
+          glyphs: glyphs.slice(),
+          ligatureStack: _this.ligatureStack.slice()
+        });
+
+        // Add glyph to input and glyphs to process.
+        var g = _this.font.getGlyph(glyph);
+        input.push(g);
+        glyphs.push(input[input.length - 1]);
+
+        // Process ligature substitution
+        process(glyphs[glyphs.length - 1], entry, glyphs.length - 1);
+
+        // Add input to result if only one matching (non-deleted) glyph remains.
+        var count = 0;
+        var found = 0;
+        for (var i = 0; i < glyphs.length && count <= 1; i++) {
+          if (glyphs[i].id !== 0xffff) {
+            count++;
+            found = glyphs[i].id;
+          }
+        }
+
+        if (count === 1) {
+          var result = input.map(function (g) {
+            return g.id;
+          });
+          var _cache = _this.inputCache[found];
+          if (_cache) {
+            _cache.push(result);
+          } else {
+            _this.inputCache[found] = [result];
+          }
+        }
+      },
+
+      exit: function exit() {
+        var _stack$pop = stack.pop();
+
+        _this.glyphs = _stack$pop.glyphs;
+        _this.ligatureStack = _stack$pop.ligatureStack;
+
+        input.pop();
+      }
+    });
+  };
+
+  return AATMorxProcessor;
+}(), (_applyDecoratedDescriptor$2(_class$2.prototype, 'getStateMachine', [cache], _Object$getOwnPropertyDescriptor(_class$2.prototype, 'getStateMachine'), _class$2.prototype)), _class$2);
+
+function swap(glyphs, rangeA, rangeB) {
+  var reverseA = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
+  var reverseB = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
+
+  var end = glyphs.splice(rangeB[0] - (rangeB[1] - 1), rangeB[1]);
+  if (reverseB) {
+    end.reverse();
+  }
+
+  var start = glyphs.splice.apply(glyphs, [rangeA[0], rangeA[1]].concat(end));
+  if (reverseA) {
+    start.reverse();
+  }
+
+  glyphs.splice.apply(glyphs, [rangeB[0] - (rangeA[1] - 1), 0].concat(start));
+  return glyphs;
+}
+
+function reorderGlyphs(glyphs, verb, firstGlyph, lastGlyph) {
+  var length = lastGlyph - firstGlyph + 1;
+  switch (verb) {
+    case 0:
+      // no change
+      return glyphs;
+
+    case 1:
+      // Ax => xA
+      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 0]);
+
+    case 2:
+      // xD => Dx
+      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 1]);
+
+    case 3:
+      // AxD => DxA
+      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 1]);
+
+    case 4:
+      // ABx => xAB
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0]);
+
+    case 5:
+      // ABx => xBA
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0], true, false);
+
+    case 6:
+      // xCD => CDx
+      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2]);
+
+    case 7:
+      // xCD => DCx
+      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2], false, true);
+
+    case 8:
+      // AxCD => CDxA
+      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2]);
+
+    case 9:
+      // AxCD => DCxA
+      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2], false, true);
+
+    case 10:
+      // ABxD => DxAB
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1]);
+
+    case 11:
+      // ABxD => DxBA
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1], true, false);
+
+    case 12:
+      // ABxCD => CDxAB
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2]);
+
+    case 13:
+      // ABxCD => CDxBA
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, false);
+
+    case 14:
+      // ABxCD => DCxAB
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], false, true);
+
+    case 15:
+      // ABxCD => DCxBA
+      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, true);
+
+    default:
+      throw new Error('Unknown verb: ' + verb);
+  }
+}
+
+var AATLayoutEngine = function () {
+  function AATLayoutEngine(font) {
+    _classCallCheck(this, AATLayoutEngine);
+
+    this.font = font;
+    this.morxProcessor = new AATMorxProcessor(font);
+    this.fallbackPosition = false;
+  }
+
+  AATLayoutEngine.prototype.substitute = function substitute(glyphRun) {
+    // AAT expects the glyphs to be in visual order prior to morx processing,
+    // so reverse the glyphs if the script is right-to-left.
+    if (glyphRun.direction === 'rtl') {
+      glyphRun.glyphs.reverse();
+    }
+
+    this.morxProcessor.process(glyphRun.glyphs, mapOTToAAT(glyphRun.features));
+  };
+
+  AATLayoutEngine.prototype.getAvailableFeatures = function getAvailableFeatures(script, language) {
+    return mapAATToOT(this.morxProcessor.getSupportedFeatures());
+  };
+
+  AATLayoutEngine.prototype.stringsForGlyph = function stringsForGlyph(gid) {
+    var glyphStrings = this.morxProcessor.generateInputs(gid);
+    var result = new _Set();
+
+    for (var _iterator = glyphStrings, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var glyphs = _ref;
+
+      this._addStrings(glyphs, 0, result, '');
+    }
+
+    return result;
+  };
+
+  AATLayoutEngine.prototype._addStrings = function _addStrings(glyphs, index, strings, string) {
+    var codePoints = this.font._cmapProcessor.codePointsForGlyph(glyphs[index]);
+
+    for (var _iterator2 = codePoints, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var codePoint = _ref2;
+
+      var s = string + _String$fromCodePoint(codePoint);
+      if (index < glyphs.length - 1) {
+        this._addStrings(glyphs, index + 1, strings, s);
+      } else {
+        strings.add(s);
+      }
+    }
+  };
+
+  return AATLayoutEngine;
+}();
+
+/**
+ * ShapingPlans are used by the OpenType shapers to store which
+ * features should by applied, and in what order to apply them.
+ * The features are applied in groups called stages. A feature
+ * can be applied globally to all glyphs, or locally to only
+ * specific glyphs.
+ *
+ * @private
+ */
+
+var ShapingPlan = function () {
+  function ShapingPlan(font, script, direction) {
+    _classCallCheck(this, ShapingPlan);
+
+    this.font = font;
+    this.script = script;
+    this.direction = direction;
+    this.stages = [];
+    this.globalFeatures = {};
+    this.allFeatures = {};
+  }
+
+  /**
+   * Adds the given features to the last stage.
+   * Ignores features that have already been applied.
+   */
+
+
+  ShapingPlan.prototype._addFeatures = function _addFeatures(features, global) {
+    var stageIndex = this.stages.length - 1;
+    var stage = this.stages[stageIndex];
+    for (var _iterator = features, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var feature = _ref;
+
+      if (this.allFeatures[feature] == null) {
+        stage.push(feature);
+        this.allFeatures[feature] = stageIndex;
+
+        if (global) {
+          this.globalFeatures[feature] = true;
+        }
+      }
+    }
+  };
+
+  /**
+   * Add features to the last stage
+   */
+
+
+  ShapingPlan.prototype.add = function add(arg) {
+    var global = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+    if (this.stages.length === 0) {
+      this.stages.push([]);
+    }
+
+    if (typeof arg === 'string') {
+      arg = [arg];
+    }
+
+    if (Array.isArray(arg)) {
+      this._addFeatures(arg, global);
+    } else if ((typeof arg === 'undefined' ? 'undefined' : _typeof(arg)) === 'object') {
+      this._addFeatures(arg.global || [], true);
+      this._addFeatures(arg.local || [], false);
+    } else {
+      throw new Error("Unsupported argument to ShapingPlan#add");
+    }
+  };
+
+  /**
+   * Add a new stage
+   */
+
+
+  ShapingPlan.prototype.addStage = function addStage(arg, global) {
+    if (typeof arg === 'function') {
+      this.stages.push(arg, []);
+    } else {
+      this.stages.push([]);
+      this.add(arg, global);
+    }
+  };
+
+  ShapingPlan.prototype.setFeatureOverrides = function setFeatureOverrides(features) {
+    if (Array.isArray(features)) {
+      this.add(features);
+    } else if ((typeof features === 'undefined' ? 'undefined' : _typeof(features)) === 'object') {
+      for (var tag in features) {
+        if (features[tag]) {
+          this.add(tag);
+        } else if (this.allFeatures[tag] != null) {
+          var stage = this.stages[this.allFeatures[tag]];
+          stage.splice(stage.indexOf(tag), 1);
+          delete this.allFeatures[tag];
+          delete this.globalFeatures[tag];
+        }
+      }
+    }
+  };
+
+  /**
+   * Assigns the global features to the given glyphs
+   */
+
+
+  ShapingPlan.prototype.assignGlobalFeatures = function assignGlobalFeatures(glyphs) {
+    for (var _iterator2 = glyphs, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var glyph = _ref2;
+
+      for (var feature in this.globalFeatures) {
+        glyph.features[feature] = true;
+      }
+    }
+  };
+
+  /**
+   * Executes the planned stages using the given OTProcessor
+   */
+
+
+  ShapingPlan.prototype.process = function process(processor, glyphs, positions) {
+    for (var _iterator3 = this.stages, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+      var _ref3;
+
+      if (_isArray3) {
+        if (_i3 >= _iterator3.length) break;
+        _ref3 = _iterator3[_i3++];
+      } else {
+        _i3 = _iterator3.next();
+        if (_i3.done) break;
+        _ref3 = _i3.value;
+      }
+
+      var stage = _ref3;
+
+      if (typeof stage === 'function') {
+        if (!positions) {
+          stage(this.font, glyphs, this);
+        }
+      } else if (stage.length > 0) {
+        processor.applyFeatures(stage, glyphs, positions);
+      }
+    }
+  };
+
+  return ShapingPlan;
+}();
+
+var _class$4;
+var _temp;
+var VARIATION_FEATURES = ['rvrn'];
+var COMMON_FEATURES = ['ccmp', 'locl', 'rlig', 'mark', 'mkmk'];
+var FRACTIONAL_FEATURES = ['frac', 'numr', 'dnom'];
+var HORIZONTAL_FEATURES = ['calt', 'clig', 'liga', 'rclt', 'curs', 'kern'];
+var DIRECTIONAL_FEATURES = {
+  ltr: ['ltra', 'ltrm'],
+  rtl: ['rtla', 'rtlm']
+};
+
+var DefaultShaper = (_temp = _class$4 = function () {
+  function DefaultShaper() {
+    _classCallCheck(this, DefaultShaper);
+  }
+
+  DefaultShaper.plan = function plan(_plan, glyphs, features) {
+    // Plan the features we want to apply
+    this.planPreprocessing(_plan);
+    this.planFeatures(_plan);
+    this.planPostprocessing(_plan, features);
+
+    // Assign the global features to all the glyphs
+    _plan.assignGlobalFeatures(glyphs);
+
+    // Assign local features to glyphs
+    this.assignFeatures(_plan, glyphs);
+  };
+
+  DefaultShaper.planPreprocessing = function planPreprocessing(plan) {
+    plan.add({
+      global: [].concat(VARIATION_FEATURES, DIRECTIONAL_FEATURES[plan.direction]),
+      local: FRACTIONAL_FEATURES
+    });
+  };
+
+  DefaultShaper.planFeatures = function planFeatures(plan) {
+    // Do nothing by default. Let subclasses override this.
+  };
+
+  DefaultShaper.planPostprocessing = function planPostprocessing(plan, userFeatures) {
+    plan.add([].concat(COMMON_FEATURES, HORIZONTAL_FEATURES));
+    plan.setFeatureOverrides(userFeatures);
+  };
+
+  DefaultShaper.assignFeatures = function assignFeatures(plan, glyphs) {
+    // Enable contextual fractions
+    for (var i = 0; i < glyphs.length; i++) {
+      var glyph = glyphs[i];
+      if (glyph.codePoints[0] === 0x2044) {
+        // fraction slash
+        var start = i;
+        var end = i + 1;
+
+        // Apply numerator
+        while (start > 0 && unicode.isDigit(glyphs[start - 1].codePoints[0])) {
+          glyphs[start - 1].features.numr = true;
+          glyphs[start - 1].features.frac = true;
+          start--;
+        }
+
+        // Apply denominator
+        while (end < glyphs.length && unicode.isDigit(glyphs[end].codePoints[0])) {
+          glyphs[end].features.dnom = true;
+          glyphs[end].features.frac = true;
+          end++;
+        }
+
+        // Apply fraction slash
+        glyph.features.frac = true;
+        i = end - 1;
+      }
+    }
+  };
+
+  return DefaultShaper;
+}(), _class$4.zeroMarkWidths = 'AFTER_GPOS', _temp);
+
+var trie = new UnicodeTrie(Buffer("AAEQAAAAAAAAADGgAZUBav7t2CtPA0EUBeDZB00pin9AJZIEgyUEj0QhweDAgQOJxCBRBElQSBwSicLgkOAwnNKZ5GaY2c7uzj4o5yZfZrrbefbuIx2nSq3CGmzAWH/+K+UO7MIe7MMhHMMpnMMFXMIVXIt2t3CnP088iPqjqNN8e4Ij7Rle4LUH82rLm6i/92A+RERERERERERNmfz/89GDeRARERERzbN8ceps2Iwt9H0C9/AJ6yOlDkbTczcot5VSm8Pm1vcFWfb7+BKOLTuOd2UlTX4wGP85Eg953lWPFbnuN7PkjtLmalOWbNenkHOSa7T3KmR9MVTZ2zZkVj1kHa68MueVKH0R4zqQ44WEXLM8VjcWHP0PtKLfPzQnMtGn3W4QYf6qxFxceVI394r2xnV+1rih0fV1Vzf3fO1n3evL5J78ruvZ5ptX2Rwy92Tfb1wlEqut3U+sZ3HXOeJ7/zDrbyuP6+Zz0fqa6Nv3vhY7Yu1xWnGevmsvsUpTT/RYIe8waUH/rvHMWKFzLfN8L+rTfp645mfX7ftlnfDtYxN59w0=","base64"));
+var FEATURES = ['isol', 'fina', 'fin2', 'fin3', 'medi', 'med2', 'init'];
+
+var ShapingClasses = {
+  Non_Joining: 0,
+  Left_Joining: 1,
+  Right_Joining: 2,
+  Dual_Joining: 3,
+  Join_Causing: 3,
+  ALAPH: 4,
+  'DALATH RISH': 5,
+  Transparent: 6
+};
+
+var ISOL = 'isol';
+var FINA = 'fina';
+var FIN2 = 'fin2';
+var FIN3 = 'fin3';
+var MEDI = 'medi';
+var MED2 = 'med2';
+var INIT = 'init';
+var NONE = null;
+
+// Each entry is [prevAction, curAction, nextState]
+var STATE_TABLE = [
+//   Non_Joining,        Left_Joining,       Right_Joining,     Dual_Joining,           ALAPH,            DALATH RISH
+// State 0: prev was U,  not willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 6]],
+
+// State 1: prev was R or ISOL/ALAPH,  not willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, FIN2, 5], [NONE, ISOL, 6]],
+
+// State 2: prev was D/L in ISOL form,  willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [INIT, FINA, 1], [INIT, FINA, 3], [INIT, FINA, 4], [INIT, FINA, 6]],
+
+// State 3: prev was D in FINA form,  willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [MEDI, FINA, 1], [MEDI, FINA, 3], [MEDI, FINA, 4], [MEDI, FINA, 6]],
+
+// State 4: prev was FINA ALAPH,  not willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [MED2, ISOL, 1], [MED2, ISOL, 2], [MED2, FIN2, 5], [MED2, ISOL, 6]],
+
+// State 5: prev was FIN2/FIN3 ALAPH,  not willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [ISOL, ISOL, 1], [ISOL, ISOL, 2], [ISOL, FIN2, 5], [ISOL, ISOL, 6]],
+
+// State 6: prev was DALATH/RISH,  not willing to join.
+[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, FIN3, 5], [NONE, ISOL, 6]]];
+
+/**
+ * This is a shaper for Arabic, and other cursive scripts.
+ * It uses data from ArabicShaping.txt in the Unicode database,
+ * compiled to a UnicodeTrie by generate-data.coffee.
+ *
+ * The shaping state machine was ported from Harfbuzz.
+ * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-arabic.cc
+ */
+
+var ArabicShaper = function (_DefaultShaper) {
+  _inherits(ArabicShaper, _DefaultShaper);
+
+  function ArabicShaper() {
+    _classCallCheck(this, ArabicShaper);
+
+    return _possibleConstructorReturn(this, _DefaultShaper.apply(this, arguments));
+  }
+
+  ArabicShaper.planFeatures = function planFeatures(plan) {
+    plan.add(['ccmp', 'locl']);
+    for (var i = 0; i < FEATURES.length; i++) {
+      var feature = FEATURES[i];
+      plan.addStage(feature, false);
+    }
+
+    plan.addStage('mset');
+  };
+
+  ArabicShaper.assignFeatures = function assignFeatures(plan, glyphs) {
+    _DefaultShaper.assignFeatures.call(this, plan, glyphs);
+
+    var prev = -1;
+    var state = 0;
+    var actions = [];
+
+    // Apply the state machine to map glyphs to features
+    for (var i = 0; i < glyphs.length; i++) {
+      var curAction = void 0,
+          prevAction = void 0;
+      var glyph = glyphs[i];
+      var type = getShapingClass(glyph.codePoints[0]);
+      if (type === ShapingClasses.Transparent) {
+        actions[i] = NONE;
+        continue;
+      }
+
+      var _STATE_TABLE$state$ty = STATE_TABLE[state][type];
+      prevAction = _STATE_TABLE$state$ty[0];
+      curAction = _STATE_TABLE$state$ty[1];
+      state = _STATE_TABLE$state$ty[2];
+
+
+      if (prevAction !== NONE && prev !== -1) {
+        actions[prev] = prevAction;
+      }
+
+      actions[i] = curAction;
+      prev = i;
+    }
+
+    // Apply the chosen features to their respective glyphs
+    for (var index = 0; index < glyphs.length; index++) {
+      var feature = void 0;
+      var glyph = glyphs[index];
+      if (feature = actions[index]) {
+        glyph.features[feature] = true;
+      }
+    }
+  };
+
+  return ArabicShaper;
+}(DefaultShaper);
+
+function getShapingClass(codePoint) {
+  var res = trie.get(codePoint);
+  if (res) {
+    return res - 1;
+  }
+
+  var category = unicode.getCategory(codePoint);
+  if (category === 'Mn' || category === 'Me' || category === 'Cf') {
+    return ShapingClasses.Transparent;
+  }
+
+  return ShapingClasses.Non_Joining;
+}
+
+var GlyphIterator = function () {
+  function GlyphIterator(glyphs, options) {
+    _classCallCheck(this, GlyphIterator);
+
+    this.glyphs = glyphs;
+    this.reset(options);
+  }
+
+  GlyphIterator.prototype.reset = function reset() {
+    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+    var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+    this.options = options;
+    this.flags = options.flags || {};
+    this.markAttachmentType = options.markAttachmentType || 0;
+    this.index = index;
+  };
+
+  GlyphIterator.prototype.shouldIgnore = function shouldIgnore(glyph) {
+    return this.flags.ignoreMarks && glyph.isMark || this.flags.ignoreBaseGlyphs && glyph.isBase || this.flags.ignoreLigatures && glyph.isLigature || this.markAttachmentType && glyph.isMark && glyph.markAttachmentType !== this.markAttachmentType;
+  };
+
+  GlyphIterator.prototype.move = function move(dir) {
+    this.index += dir;
+    while (0 <= this.index && this.index < this.glyphs.length && this.shouldIgnore(this.glyphs[this.index])) {
+      this.index += dir;
+    }
+
+    if (0 > this.index || this.index >= this.glyphs.length) {
+      return null;
+    }
+
+    return this.glyphs[this.index];
+  };
+
+  GlyphIterator.prototype.next = function next() {
+    return this.move(+1);
+  };
+
+  GlyphIterator.prototype.prev = function prev() {
+    return this.move(-1);
+  };
+
+  GlyphIterator.prototype.peek = function peek() {
+    var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
+
+    var idx = this.index;
+    var res = this.increment(count);
+    this.index = idx;
+    return res;
+  };
+
+  GlyphIterator.prototype.peekIndex = function peekIndex() {
+    var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
+
+    var idx = this.index;
+    this.increment(count);
+    var res = this.index;
+    this.index = idx;
+    return res;
+  };
+
+  GlyphIterator.prototype.increment = function increment() {
+    var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
+
+    var dir = count < 0 ? -1 : 1;
+    count = Math.abs(count);
+    while (count--) {
+      this.move(dir);
+    }
+
+    return this.glyphs[this.index];
+  };
+
+  _createClass(GlyphIterator, [{
+    key: "cur",
+    get: function get() {
+      return this.glyphs[this.index] || null;
+    }
+  }]);
+
+  return GlyphIterator;
+}();
+
+var DEFAULT_SCRIPTS = ['DFLT', 'dflt', 'latn'];
+
+var OTProcessor = function () {
+  function OTProcessor(font, table) {
+    _classCallCheck(this, OTProcessor);
+
+    this.font = font;
+    this.table = table;
+
+    this.script = null;
+    this.scriptTag = null;
+
+    this.language = null;
+    this.languageTag = null;
+
+    this.features = {};
+    this.lookups = {};
+
+    // Setup variation substitutions
+    this.variationsIndex = font._variationProcessor ? this.findVariationsIndex(font._variationProcessor.normalizedCoords) : -1;
+
+    // initialize to default script + language
+    this.selectScript();
+
+    // current context (set by applyFeatures)
+    this.glyphs = [];
+    this.positions = []; // only used by GPOS
+    this.ligatureID = 1;
+    this.currentFeature = null;
+  }
+
+  OTProcessor.prototype.findScript = function findScript(script) {
+    if (this.table.scriptList == null) {
+      return null;
+    }
+
+    if (!Array.isArray(script)) {
+      script = [script];
+    }
+
+    for (var _iterator = script, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var s = _ref;
+
+      for (var _iterator2 = this.table.scriptList, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var entry = _ref2;
+
+        if (entry.tag === s) {
+          return entry;
+        }
+      }
+    }
+
+    return null;
+  };
+
+  OTProcessor.prototype.selectScript = function selectScript(script, language, direction$$) {
+    var changed = false;
+    var entry = void 0;
+    if (!this.script || script !== this.scriptTag) {
+      entry = this.findScript(script);
+      if (!entry) {
+        entry = this.findScript(DEFAULT_SCRIPTS);
+      }
+
+      if (!entry) {
+        return this.scriptTag;
+      }
+
+      this.scriptTag = entry.tag;
+      this.script = entry.script;
+      this.language = null;
+      this.languageTag = null;
+      changed = true;
+    }
+
+    if (!direction$$ || direction$$ !== this.direction) {
+      this.direction = direction$$ || direction(script);
+    }
+
+    if (language && language.length < 4) {
+      language += ' '.repeat(4 - language.length);
+    }
+
+    if (!language || language !== this.languageTag) {
+      this.language = null;
+
+      for (var _iterator3 = this.script.langSysRecords, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref3 = _i3.value;
+        }
+
+        var lang = _ref3;
+
+        if (lang.tag === language) {
+          this.language = lang.langSys;
+          this.languageTag = lang.tag;
+          break;
+        }
+      }
+
+      if (!this.language) {
+        this.language = this.script.defaultLangSys;
+        this.languageTag = null;
+      }
+
+      changed = true;
+    }
+
+    // Build a feature lookup table
+    if (changed) {
+      this.features = {};
+      if (this.language) {
+        for (var _iterator4 = this.language.featureIndexes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+          var _ref4;
+
+          if (_isArray4) {
+            if (_i4 >= _iterator4.length) break;
+            _ref4 = _iterator4[_i4++];
+          } else {
+            _i4 = _iterator4.next();
+            if (_i4.done) break;
+            _ref4 = _i4.value;
+          }
+
+          var featureIndex = _ref4;
+
+          var record = this.table.featureList[featureIndex];
+          var substituteFeature = this.substituteFeatureForVariations(featureIndex);
+          this.features[record.tag] = substituteFeature || record.feature;
+        }
+      }
+    }
+
+    return this.scriptTag;
+  };
+
+  OTProcessor.prototype.lookupsForFeatures = function lookupsForFeatures() {
+    var userFeatures = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+    var exclude = arguments[1];
+
+    var lookups = [];
+    for (var _iterator5 = userFeatures, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
+      var _ref5;
+
+      if (_isArray5) {
+        if (_i5 >= _iterator5.length) break;
+        _ref5 = _iterator5[_i5++];
+      } else {
+        _i5 = _iterator5.next();
+        if (_i5.done) break;
+        _ref5 = _i5.value;
+      }
+
+      var tag = _ref5;
+
+      var feature = this.features[tag];
+      if (!feature) {
+        continue;
+      }
+
+      for (var _iterator6 = feature.lookupListIndexes, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _getIterator(_iterator6);;) {
+        var _ref6;
+
+        if (_isArray6) {
+          if (_i6 >= _iterator6.length) break;
+          _ref6 = _iterator6[_i6++];
+        } else {
+          _i6 = _iterator6.next();
+          if (_i6.done) break;
+          _ref6 = _i6.value;
+        }
+
+        var lookupIndex = _ref6;
+
+        if (exclude && exclude.indexOf(lookupIndex) !== -1) {
+          continue;
+        }
+
+        lookups.push({
+          feature: tag,
+          index: lookupIndex,
+          lookup: this.table.lookupList.get(lookupIndex)
+        });
+      }
+    }
+
+    lookups.sort(function (a, b) {
+      return a.index - b.index;
+    });
+    return lookups;
+  };
+
+  OTProcessor.prototype.substituteFeatureForVariations = function substituteFeatureForVariations(featureIndex) {
+    if (this.variationsIndex === -1) {
+      return null;
+    }
+
+    var record = this.table.featureVariations.featureVariationRecords[this.variationsIndex];
+    var substitutions = record.featureTableSubstitution.substitutions;
+    for (var _iterator7 = substitutions, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _getIterator(_iterator7);;) {
+      var _ref7;
+
+      if (_isArray7) {
+        if (_i7 >= _iterator7.length) break;
+        _ref7 = _iterator7[_i7++];
+      } else {
+        _i7 = _iterator7.next();
+        if (_i7.done) break;
+        _ref7 = _i7.value;
+      }
+
+      var substitution = _ref7;
+
+      if (substitution.featureIndex === featureIndex) {
+        return substitution.alternateFeatureTable;
+      }
+    }
+
+    return null;
+  };
+
+  OTProcessor.prototype.findVariationsIndex = function findVariationsIndex(coords) {
+    var variations = this.table.featureVariations;
+    if (!variations) {
+      return -1;
+    }
+
+    var records = variations.featureVariationRecords;
+    for (var i = 0; i < records.length; i++) {
+      var conditions = records[i].conditionSet.conditionTable;
+      if (this.variationConditionsMatch(conditions, coords)) {
+        return i;
+      }
+    }
+
+    return -1;
+  };
+
+  OTProcessor.prototype.variationConditionsMatch = function variationConditionsMatch(conditions, coords) {
+    return conditions.every(function (condition) {
+      var coord = condition.axisIndex < coords.length ? coords[condition.axisIndex] : 0;
+      return condition.filterRangeMinValue <= coord && coord <= condition.filterRangeMaxValue;
+    });
+  };
+
+  OTProcessor.prototype.applyFeatures = function applyFeatures(userFeatures, glyphs, advances) {
+    var lookups = this.lookupsForFeatures(userFeatures);
+    this.applyLookups(lookups, glyphs, advances);
+  };
+
+  OTProcessor.prototype.applyLookups = function applyLookups(lookups, glyphs, positions) {
+    this.glyphs = glyphs;
+    this.positions = positions;
+    this.glyphIterator = new GlyphIterator(glyphs);
+
+    for (var _iterator8 = lookups, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _getIterator(_iterator8);;) {
+      var _ref8;
+
+      if (_isArray8) {
+        if (_i8 >= _iterator8.length) break;
+        _ref8 = _iterator8[_i8++];
+      } else {
+        _i8 = _iterator8.next();
+        if (_i8.done) break;
+        _ref8 = _i8.value;
+      }
+
+      var _ref9 = _ref8,
+          feature = _ref9.feature,
+          lookup = _ref9.lookup;
+
+      this.currentFeature = feature;
+      this.glyphIterator.reset(lookup.flags);
+
+      while (this.glyphIterator.index < glyphs.length) {
+        if (!(feature in this.glyphIterator.cur.features)) {
+          this.glyphIterator.next();
+          continue;
+        }
+
+        for (var _iterator9 = lookup.subTables, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _getIterator(_iterator9);;) {
+          var _ref10;
+
+          if (_isArray9) {
+            if (_i9 >= _iterator9.length) break;
+            _ref10 = _iterator9[_i9++];
+          } else {
+            _i9 = _iterator9.next();
+            if (_i9.done) break;
+            _ref10 = _i9.value;
+          }
+
+          var table = _ref10;
+
+          var res = this.applyLookup(lookup.lookupType, table);
+          if (res) {
+            break;
+          }
+        }
+
+        this.glyphIterator.next();
+      }
+    }
+  };
+
+  OTProcessor.prototype.applyLookup = function applyLookup(lookup, table) {
+    throw new Error("applyLookup must be implemented by subclasses");
+  };
+
+  OTProcessor.prototype.applyLookupList = function applyLookupList(lookupRecords) {
+    var options = this.glyphIterator.options;
+    var glyphIndex = this.glyphIterator.index;
+
+    for (var _iterator10 = lookupRecords, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _getIterator(_iterator10);;) {
+      var _ref11;
+
+      if (_isArray10) {
+        if (_i10 >= _iterator10.length) break;
+        _ref11 = _iterator10[_i10++];
+      } else {
+        _i10 = _iterator10.next();
+        if (_i10.done) break;
+        _ref11 = _i10.value;
+      }
+
+      var lookupRecord = _ref11;
+
+      // Reset flags and find glyph index for this lookup record
+      this.glyphIterator.reset(options, glyphIndex);
+      this.glyphIterator.increment(lookupRecord.sequenceIndex);
+
+      // Get the lookup and setup flags for subtables
+      var lookup = this.table.lookupList.get(lookupRecord.lookupListIndex);
+      this.glyphIterator.reset(lookup.flags, this.glyphIterator.index);
+
+      // Apply lookup subtables until one matches
+      for (var _iterator11 = lookup.subTables, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _getIterator(_iterator11);;) {
+        var _ref12;
+
+        if (_isArray11) {
+          if (_i11 >= _iterator11.length) break;
+          _ref12 = _iterator11[_i11++];
+        } else {
+          _i11 = _iterator11.next();
+          if (_i11.done) break;
+          _ref12 = _i11.value;
+        }
+
+        var table = _ref12;
+
+        if (this.applyLookup(lookup.lookupType, table)) {
+          break;
+        }
+      }
+    }
+
+    this.glyphIterator.reset(options, glyphIndex);
+    return true;
+  };
+
+  OTProcessor.prototype.coverageIndex = function coverageIndex(coverage, glyph) {
+    if (glyph == null) {
+      glyph = this.glyphIterator.cur.id;
+    }
+
+    switch (coverage.version) {
+      case 1:
+        return coverage.glyphs.indexOf(glyph);
+
+      case 2:
+        for (var _iterator12 = coverage.rangeRecords, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _getIterator(_iterator12);;) {
+          var _ref13;
+
+          if (_isArray12) {
+            if (_i12 >= _iterator12.length) break;
+            _ref13 = _iterator12[_i12++];
+          } else {
+            _i12 = _iterator12.next();
+            if (_i12.done) break;
+            _ref13 = _i12.value;
+          }
+
+          var range = _ref13;
+
+          if (range.start <= glyph && glyph <= range.end) {
+            return range.startCoverageIndex + glyph - range.start;
+          }
+        }
+
+        break;
+    }
+
+    return -1;
+  };
+
+  OTProcessor.prototype.match = function match(sequenceIndex, sequence, fn, matched) {
+    var pos = this.glyphIterator.index;
+    var glyph = this.glyphIterator.increment(sequenceIndex);
+    var idx = 0;
+
+    while (idx < sequence.length && glyph && fn(sequence[idx], glyph)) {
+      if (matched) {
+        matched.push(this.glyphIterator.index);
+      }
+
+      idx++;
+      glyph = this.glyphIterator.next();
+    }
+
+    this.glyphIterator.index = pos;
+    if (idx < sequence.length) {
+      return false;
+    }
+
+    return matched || true;
+  };
+
+  OTProcessor.prototype.sequenceMatches = function sequenceMatches(sequenceIndex, sequence) {
+    return this.match(sequenceIndex, sequence, function (component, glyph) {
+      return component === glyph.id;
+    });
+  };
+
+  OTProcessor.prototype.sequenceMatchIndices = function sequenceMatchIndices(sequenceIndex, sequence) {
+    var _this = this;
+
+    return this.match(sequenceIndex, sequence, function (component, glyph) {
+      // If the current feature doesn't apply to this glyph,
+      if (!(_this.currentFeature in glyph.features)) {
+        return false;
+      }
+
+      return component === glyph.id;
+    }, []);
+  };
+
+  OTProcessor.prototype.coverageSequenceMatches = function coverageSequenceMatches(sequenceIndex, sequence) {
+    var _this2 = this;
+
+    return this.match(sequenceIndex, sequence, function (coverage, glyph) {
+      return _this2.coverageIndex(coverage, glyph.id) >= 0;
+    });
+  };
+
+  OTProcessor.prototype.getClassID = function getClassID(glyph, classDef) {
+    switch (classDef.version) {
+      case 1:
+        // Class array
+        var i = glyph - classDef.startGlyph;
+        if (i >= 0 && i < classDef.classValueArray.length) {
+          return classDef.classValueArray[i];
+        }
+
+        break;
+
+      case 2:
+        for (var _iterator13 = classDef.classRangeRecord, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _getIterator(_iterator13);;) {
+          var _ref14;
+
+          if (_isArray13) {
+            if (_i13 >= _iterator13.length) break;
+            _ref14 = _iterator13[_i13++];
+          } else {
+            _i13 = _iterator13.next();
+            if (_i13.done) break;
+            _ref14 = _i13.value;
+          }
+
+          var range = _ref14;
+
+          if (range.start <= glyph && glyph <= range.end) {
+            return range.class;
+          }
+        }
+
+        break;
+    }
+
+    return 0;
+  };
+
+  OTProcessor.prototype.classSequenceMatches = function classSequenceMatches(sequenceIndex, sequence, classDef) {
+    var _this3 = this;
+
+    return this.match(sequenceIndex, sequence, function (classID, glyph) {
+      return classID === _this3.getClassID(glyph.id, classDef);
+    });
+  };
+
+  OTProcessor.prototype.applyContext = function applyContext(table) {
+    switch (table.version) {
+      case 1:
+        var index = this.coverageIndex(table.coverage);
+        if (index === -1) {
+          return false;
+        }
+
+        var set = table.ruleSets[index];
+        for (var _iterator14 = set, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _getIterator(_iterator14);;) {
+          var _ref15;
+
+          if (_isArray14) {
+            if (_i14 >= _iterator14.length) break;
+            _ref15 = _iterator14[_i14++];
+          } else {
+            _i14 = _iterator14.next();
+            if (_i14.done) break;
+            _ref15 = _i14.value;
+          }
+
+          var rule = _ref15;
+
+          if (this.sequenceMatches(1, rule.input)) {
+            return this.applyLookupList(rule.lookupRecords);
+          }
+        }
+
+        break;
+
+      case 2:
+        if (this.coverageIndex(table.coverage) === -1) {
+          return false;
+        }
+
+        index = this.getClassID(this.glyphIterator.cur.id, table.classDef);
+        if (index === -1) {
+          return false;
+        }
+
+        set = table.classSet[index];
+        for (var _iterator15 = set, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _getIterator(_iterator15);;) {
+          var _ref16;
+
+          if (_isArray15) {
+            if (_i15 >= _iterator15.length) break;
+            _ref16 = _iterator15[_i15++];
+          } else {
+            _i15 = _iterator15.next();
+            if (_i15.done) break;
+            _ref16 = _i15.value;
+          }
+
+          var _rule = _ref16;
+
+          if (this.classSequenceMatches(1, _rule.classes, table.classDef)) {
+            return this.applyLookupList(_rule.lookupRecords);
+          }
+        }
+
+        break;
+
+      case 3:
+        if (this.coverageSequenceMatches(0, table.coverages)) {
+          return this.applyLookupList(table.lookupRecords);
+        }
+
+        break;
+    }
+
+    return false;
+  };
+
+  OTProcessor.prototype.applyChainingContext = function applyChainingContext(table) {
+    switch (table.version) {
+      case 1:
+        var index = this.coverageIndex(table.coverage);
+        if (index === -1) {
+          return false;
+        }
+
+        var set = table.chainRuleSets[index];
+        for (var _iterator16 = set, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _getIterator(_iterator16);;) {
+          var _ref17;
+
+          if (_isArray16) {
+            if (_i16 >= _iterator16.length) break;
+            _ref17 = _iterator16[_i16++];
+          } else {
+            _i16 = _iterator16.next();
+            if (_i16.done) break;
+            _ref17 = _i16.value;
+          }
+
+          var rule = _ref17;
+
+          if (this.sequenceMatches(-rule.backtrack.length, rule.backtrack) && this.sequenceMatches(1, rule.input) && this.sequenceMatches(1 + rule.input.length, rule.lookahead)) {
+            return this.applyLookupList(rule.lookupRecords);
+          }
+        }
+
+        break;
+
+      case 2:
+        if (this.coverageIndex(table.coverage) === -1) {
+          return false;
+        }
+
+        index = this.getClassID(this.glyphIterator.cur.id, table.inputClassDef);
+        var rules = table.chainClassSet[index];
+        if (!rules) {
+          return false;
+        }
+
+        for (var _iterator17 = rules, _isArray17 = Array.isArray(_iterator17), _i17 = 0, _iterator17 = _isArray17 ? _iterator17 : _getIterator(_iterator17);;) {
+          var _ref18;
+
+          if (_isArray17) {
+            if (_i17 >= _iterator17.length) break;
+            _ref18 = _iterator17[_i17++];
+          } else {
+            _i17 = _iterator17.next();
+            if (_i17.done) break;
+            _ref18 = _i17.value;
+          }
+
+          var _rule2 = _ref18;
+
+          if (this.classSequenceMatches(-_rule2.backtrack.length, _rule2.backtrack, table.backtrackClassDef) && this.classSequenceMatches(1, _rule2.input, table.inputClassDef) && this.classSequenceMatches(1 + _rule2.input.length, _rule2.lookahead, table.lookaheadClassDef)) {
+            return this.applyLookupList(_rule2.lookupRecords);
+          }
+        }
+
+        break;
+
+      case 3:
+        if (this.coverageSequenceMatches(-table.backtrackGlyphCount, table.backtrackCoverage) && this.coverageSequenceMatches(0, table.inputCoverage) && this.coverageSequenceMatches(table.inputGlyphCount, table.lookaheadCoverage)) {
+          return this.applyLookupList(table.lookupRecords);
+        }
+
+        break;
+    }
+
+    return false;
+  };
+
+  return OTProcessor;
+}();
+
+var GlyphInfo = function () {
+  function GlyphInfo(font, id) {
+    var codePoints = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
+    var features = arguments[3];
+
+    _classCallCheck(this, GlyphInfo);
+
+    this._font = font;
+    this.codePoints = codePoints;
+    this.id = id;
+
+    this.features = {};
+    if (Array.isArray(features)) {
+      for (var i = 0; i < features.length; i++) {
+        var feature = features[i];
+        this.features[feature] = true;
+      }
+    } else if ((typeof features === 'undefined' ? 'undefined' : _typeof(features)) === 'object') {
+      _Object$assign(this.features, features);
+    }
+
+    this.ligatureID = null;
+    this.ligatureComponent = null;
+    this.isLigated = false;
+    this.cursiveAttachment = null;
+    this.markAttachment = null;
+    this.shaperInfo = null;
+    this.substituted = false;
+    this.isMultiplied = false;
+  }
+
+  GlyphInfo.prototype.copy = function copy() {
+    return new GlyphInfo(this._font, this.id, this.codePoints, this.features);
+  };
+
+  _createClass(GlyphInfo, [{
+    key: 'id',
+    get: function get() {
+      return this._id;
+    },
+    set: function set(id) {
+      this._id = id;
+      this.substituted = true;
+
+      var GDEF = this._font.GDEF;
+      if (GDEF && GDEF.glyphClassDef) {
+        // TODO: clean this up
+        var classID = OTProcessor.prototype.getClassID(id, GDEF.glyphClassDef);
+        this.isBase = classID === 1;
+        this.isLigature = classID === 2;
+        this.isMark = classID === 3;
+        this.markAttachmentType = GDEF.markAttachClassDef ? OTProcessor.prototype.getClassID(id, GDEF.markAttachClassDef) : 0;
+      } else {
+        this.isMark = this.codePoints.every(unicode.isMark);
+        this.isBase = !this.isMark;
+        this.isLigature = this.codePoints.length > 1;
+        this.markAttachmentType = 0;
+      }
+    }
+  }]);
+
+  return GlyphInfo;
+}();
+
+var _class$5;
+var _temp$1;
+/**
+ * This is a shaper for the Hangul script, used by the Korean language.
+ * It does the following:
+ *   - decompose if unsupported by the font:
+ *     <LV>   -> <L,V>
+ *     <LVT>  -> <L,V,T>
+ *     <LV,T> -> <L,V,T>
+ *
+ *   - compose if supported by the font:
+ *     <L,V>   -> <LV>
+ *     <L,V,T> -> <LVT>
+ *     <LV,T>  -> <LVT>
+ *
+ *   - reorder tone marks (S is any valid syllable):
+ *     <S, M> -> <M, S>
+ *
+ *   - apply ljmo, vjmo, and tjmo OpenType features to decomposed Jamo sequences.
+ *
+ * This logic is based on the following documents:
+ *   - http://www.microsoft.com/typography/OpenTypeDev/hangul/intro.htm
+ *   - http://ktug.org/~nomos/harfbuzz-hangul/hangulshaper.pdf
+ */
+var HangulShaper = (_temp$1 = _class$5 = function (_DefaultShaper) {
+  _inherits(HangulShaper, _DefaultShaper);
+
+  function HangulShaper() {
+    _classCallCheck(this, HangulShaper);
+
+    return _possibleConstructorReturn(this, _DefaultShaper.apply(this, arguments));
+  }
+
+  HangulShaper.planFeatures = function planFeatures(plan) {
+    plan.add(['ljmo', 'vjmo', 'tjmo'], false);
+  };
+
+  HangulShaper.assignFeatures = function assignFeatures(plan, glyphs) {
+    var state = 0;
+    var i = 0;
+    while (i < glyphs.length) {
+      var action = void 0;
+      var glyph = glyphs[i];
+      var code = glyph.codePoints[0];
+      var type = getType(code);
+
+      var _STATE_TABLE$state$ty = STATE_TABLE$1[state][type];
+      action = _STATE_TABLE$state$ty[0];
+      state = _STATE_TABLE$state$ty[1];
+
+
+      switch (action) {
+        case DECOMPOSE:
+          // Decompose the composed syllable if it is not supported by the font.
+          if (!plan.font.hasGlyphForCodePoint(code)) {
+            i = decompose(glyphs, i, plan.font);
+          }
+          break;
+
+        case COMPOSE:
+          // Found a decomposed syllable. Try to compose if supported by the font.
+          i = compose(glyphs, i, plan.font);
+          break;
+
+        case TONE_MARK:
+          // Got a valid syllable, followed by a tone mark. Move the tone mark to the beginning of the syllable.
+          reorderToneMark(glyphs, i, plan.font);
+          break;
+
+        case INVALID:
+          // Tone mark has no valid syllable to attach to, so insert a dotted circle
+          i = insertDottedCircle(glyphs, i, plan.font);
+          break;
+      }
+
+      i++;
+    }
+  };
+
+  return HangulShaper;
+}(DefaultShaper), _class$5.zeroMarkWidths = 'NONE', _temp$1);
+var HANGUL_BASE = 0xac00;
+var HANGUL_END = 0xd7a4;
+var HANGUL_COUNT = HANGUL_END - HANGUL_BASE + 1;
+var L_BASE = 0x1100; // lead
+var V_BASE = 0x1161; // vowel
+var T_BASE = 0x11a7; // trail
+var L_COUNT = 19;
+var V_COUNT = 21;
+var T_COUNT = 28;
+var L_END = L_BASE + L_COUNT - 1;
+var V_END = V_BASE + V_COUNT - 1;
+var T_END = T_BASE + T_COUNT - 1;
+var DOTTED_CIRCLE = 0x25cc;
+
+var isL = function isL(code) {
+  return 0x1100 <= code && code <= 0x115f || 0xa960 <= code && code <= 0xa97c;
+};
+var isV = function isV(code) {
+  return 0x1160 <= code && code <= 0x11a7 || 0xd7b0 <= code && code <= 0xd7c6;
+};
+var isT = function isT(code) {
+  return 0x11a8 <= code && code <= 0x11ff || 0xd7cb <= code && code <= 0xd7fb;
+};
+var isTone = function isTone(code) {
+  return 0x302e <= code && code <= 0x302f;
+};
+var isLVT = function isLVT(code) {
+  return HANGUL_BASE <= code && code <= HANGUL_END;
+};
+var isLV = function isLV(code) {
+  return code - HANGUL_BASE < HANGUL_COUNT && (code - HANGUL_BASE) % T_COUNT === 0;
+};
+var isCombiningL = function isCombiningL(code) {
+  return L_BASE <= code && code <= L_END;
+};
+var isCombiningV = function isCombiningV(code) {
+  return V_BASE <= code && code <= V_END;
+};
+var isCombiningT = function isCombiningT(code) {
+  return T_BASE + 1 && 1 <= code && code <= T_END;
+};
+
+// Character categories
+var X = 0; // Other character
+var L = 1; // Leading consonant
+var V = 2; // Medial vowel
+var T = 3; // Trailing consonant
+var LV = 4; // Composed <LV> syllable
+var LVT = 5; // Composed <LVT> syllable
+var M = 6; // Tone mark
+
+// This function classifies a character using the above categories.
+function getType(code) {
+  if (isL(code)) {
+    return L;
+  }
+  if (isV(code)) {
+    return V;
+  }
+  if (isT(code)) {
+    return T;
+  }
+  if (isLV(code)) {
+    return LV;
+  }
+  if (isLVT(code)) {
+    return LVT;
+  }
+  if (isTone(code)) {
+    return M;
+  }
+  return X;
+}
+
+// State machine actions
+var NO_ACTION = 0;
+var DECOMPOSE = 1;
+var COMPOSE = 2;
+var TONE_MARK = 4;
+var INVALID = 5;
+
+// Build a state machine that accepts valid syllables, and applies actions along the way.
+// The logic this is implementing is documented at the top of the file.
+var STATE_TABLE$1 = [
+//       X                 L                 V                T                  LV                LVT               M
+// State 0: start state
+[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [INVALID, 0]],
+
+// State 1: <L>
+[[NO_ACTION, 0], [NO_ACTION, 1], [COMPOSE, 2], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [INVALID, 0]],
+
+// State 2: <L,V> or <LV>
+[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [COMPOSE, 3], [DECOMPOSE, 2], [DECOMPOSE, 3], [TONE_MARK, 0]],
+
+// State 3: <L,V,T> or <LVT>
+[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [TONE_MARK, 0]]];
+
+function getGlyph(font, code, features) {
+  return new GlyphInfo(font, font.glyphForCodePoint(code).id, [code], features);
+}
+
+function decompose(glyphs, i, font) {
+  var glyph = glyphs[i];
+  var code = glyph.codePoints[0];
+
+  var s = code - HANGUL_BASE;
+  var t = T_BASE + s % T_COUNT;
+  s = s / T_COUNT | 0;
+  var l = L_BASE + s / V_COUNT | 0;
+  var v = V_BASE + s % V_COUNT;
+
+  // Don't decompose if all of the components are not available
+  if (!font.hasGlyphForCodePoint(l) || !font.hasGlyphForCodePoint(v) || t !== T_BASE && !font.hasGlyphForCodePoint(t)) {
+    return i;
+  }
+
+  // Replace the current glyph with decomposed L, V, and T glyphs,
+  // and apply the proper OpenType features to each component.
+  var ljmo = getGlyph(font, l, glyph.features);
+  ljmo.features.ljmo = true;
+
+  var vjmo = getGlyph(font, v, glyph.features);
+  vjmo.features.vjmo = true;
+
+  var insert = [ljmo, vjmo];
+
+  if (t > T_BASE) {
+    var tjmo = getGlyph(font, t, glyph.features);
+    tjmo.features.tjmo = true;
+    insert.push(tjmo);
+  }
+
+  glyphs.splice.apply(glyphs, [i, 1].concat(insert));
+  return i + insert.length - 1;
+}
+
+function compose(glyphs, i, font) {
+  var glyph = glyphs[i];
+  var code = glyphs[i].codePoints[0];
+  var type = getType(code);
+
+  var prev = glyphs[i - 1].codePoints[0];
+  var prevType = getType(prev);
+
+  // Figure out what type of syllable we're dealing with
+  var lv = void 0,
+      ljmo = void 0,
+      vjmo = void 0,
+      tjmo = void 0;
+  if (prevType === LV && type === T) {
+    // <LV,T>
+    lv = prev;
+    tjmo = glyph;
+  } else {
+    if (type === V) {
+      // <L,V>
+      ljmo = glyphs[i - 1];
+      vjmo = glyph;
+    } else {
+      // <L,V,T>
+      ljmo = glyphs[i - 2];
+      vjmo = glyphs[i - 1];
+      tjmo = glyph;
+    }
+
+    var l = ljmo.codePoints[0];
+    var v = vjmo.codePoints[0];
+
+    // Make sure L and V are combining characters
+    if (isCombiningL(l) && isCombiningV(v)) {
+      lv = HANGUL_BASE + ((l - L_BASE) * V_COUNT + (v - V_BASE)) * T_COUNT;
+    }
+  }
+
+  var t = tjmo && tjmo.codePoints[0] || T_BASE;
+  if (lv != null && (t === T_BASE || isCombiningT(t))) {
+    var s = lv + (t - T_BASE);
+
+    // Replace with a composed glyph if supported by the font,
+    // otherwise apply the proper OpenType features to each component.
+    if (font.hasGlyphForCodePoint(s)) {
+      var del = prevType === V ? 3 : 2;
+      glyphs.splice(i - del + 1, del, getGlyph(font, s, glyph.features));
+      return i - del + 1;
+    }
+  }
+
+  // Didn't compose (either a non-combining component or unsupported by font).
+  if (ljmo) {
+    ljmo.features.ljmo = true;
+  }
+  if (vjmo) {
+    vjmo.features.vjmo = true;
+  }
+  if (tjmo) {
+    tjmo.features.tjmo = true;
+  }
+
+  if (prevType === LV) {
+    // Sequence was originally <L,V>, which got combined earlier.
+    // Either the T was non-combining, or the LVT glyph wasn't supported.
+    // Decompose the glyph again and apply OT features.
+    decompose(glyphs, i - 1, font);
+    return i + 1;
+  }
+
+  return i;
+}
+
+function getLength(code) {
+  switch (getType(code)) {
+    case LV:
+    case LVT:
+      return 1;
+    case V:
+      return 2;
+    case T:
+      return 3;
+  }
+}
+
+function reorderToneMark(glyphs, i, font) {
+  var glyph = glyphs[i];
+  var code = glyphs[i].codePoints[0];
+
+  // Move tone mark to the beginning of the previous syllable, unless it is zero width
+  if (font.glyphForCodePoint(code).advanceWidth === 0) {
+    return;
+  }
+
+  var prev = glyphs[i - 1].codePoints[0];
+  var len = getLength(prev);
+
+  glyphs.splice(i, 1);
+  return glyphs.splice(i - len, 0, glyph);
+}
+
+function insertDottedCircle(glyphs, i, font) {
+  var glyph = glyphs[i];
+  var code = glyphs[i].codePoints[0];
+
+  if (font.hasGlyphForCodePoint(DOTTED_CIRCLE)) {
+    var dottedCircle = getGlyph(font, DOTTED_CIRCLE, glyph.features);
+
+    // If the tone mark is zero width, insert the dotted circle before, otherwise after
+    var idx = font.glyphForCodePoint(code).advanceWidth === 0 ? i : i + 1;
+    glyphs.splice(idx, 0, dottedCircle);
+    i++;
+  }
+
+  return i;
+}
+
+var stateTable = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 11, 12, 13, 14, 15, 16, 17], [0, 0, 0, 18, 19, 20, 21, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 28, 29, 30, 31, 32, 33, 0, 34, 0, 0, 35, 36, 0, 0, 37, 0], [0, 0, 0, 38, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 39, 0, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 43, 44, 44, 8, 9, 0, 0, 0, 0, 12, 43, 0, 0, 0, 0], [0, 0, 0, 0, 43, 44, 44, 8, 9, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0], [0, 0, 0, 45, 46, 47, 48, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 50, 0, 0, 51, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 53, 54, 55, 56, 57, 58, 0, 59, 0, 0, 60, 61, 0, 0, 62, 0], [0, 0, 0, 4, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 63, 64, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 63, 0, 0], [0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 11, 12, 13, 0, 2, 16, 0], [0, 0, 0, 18, 65, 20, 21, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 0, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 0, 0], [0, 0, 0, 69, 0, 70, 70, 0, 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 73, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 75, 0, 0, 0, 76, 77, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 79, 80, 80, 22, 23, 0, 0, 0, 0, 25, 79, 0, 0, 0, 0], [0, 0, 0, 18, 19, 20, 74, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 81, 82, 83, 84, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 86, 0, 0, 87, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 18, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 89, 90, 0, 0, 76, 77, 0, 23, 0, 24, 0, 0, 0, 78, 0, 89, 0, 0], [0, 0, 0, 0, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 0, 0], [0, 0, 0, 94, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 96, 0, 0, 0, 97, 98, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 35, 100, 0, 0, 0, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0], [0, 0, 0, 102, 103, 104, 105, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 107, 0, 0, 108, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 28, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 110, 111, 0, 0, 97, 98, 0, 33, 0, 34, 0, 0, 0, 99, 0, 110, 0, 0], [0, 0, 0, 0, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 0, 0], [0, 0, 0, 0, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 0, 0, 115, 116, 117, 118, 8, 9, 0, 10, 0, 0, 119, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 39, 0, 122, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 124, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0], [0, 39, 0, 0, 0, 121, 125, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 126, 126, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 46, 47, 48, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 47, 47, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 127, 127, 49, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 128, 127, 127, 49, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 129, 130, 131, 132, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 135, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 136, 0, 0, 0, 137, 138, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 140, 141, 141, 57, 58, 0, 0, 0, 0, 60, 140, 0, 0, 0, 0], [0, 0, 0, 0, 140, 141, 141, 57, 58, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0], [0, 0, 0, 142, 143, 144, 145, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 147, 0, 0, 148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 53, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 150, 151, 0, 0, 137, 138, 0, 58, 0, 59, 0, 0, 0, 139, 0, 150, 0, 0], [0, 0, 0, 0, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 0, 0], [0, 0, 0, 155, 116, 156, 157, 8, 9, 0, 10, 0, 0, 158, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 75, 3, 4, 5, 159, 160, 8, 161, 0, 162, 0, 11, 12, 163, 0, 75, 16, 0], [0, 0, 0, 0, 0, 40, 164, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0], [0, 124, 64, 0, 0, 40, 164, 0, 9, 0, 10, 0, 0, 0, 42, 0, 124, 0, 0], [0, 0, 0, 0, 0, 70, 70, 0, 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 166, 0, 0, 167, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 0, 0, 0, 79, 80, 80, 22, 23, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0], [0, 0, 0, 169, 170, 171, 172, 22, 23, 0, 24, 0, 0, 173, 174, 0, 0, 27, 0], [0, 0, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 75, 0, 176, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 178, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0], [0, 75, 0, 0, 0, 175, 179, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 180, 180, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 82, 83, 84, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 83, 83, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 181, 181, 85, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 182, 181, 181, 85, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 183, 184, 185, 186, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 189, 170, 190, 191, 22, 23, 0, 24, 0, 0, 192, 174, 0, 0, 27, 0], [0, 0, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 76, 193, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 0, 194, 0, 0, 0, 0], [0, 178, 90, 0, 0, 76, 193, 0, 23, 0, 24, 0, 0, 0, 78, 0, 178, 0, 0], [0, 0, 0, 0, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0], [0, 0, 0, 195, 196, 197, 198, 32, 33, 0, 34, 0, 0, 199, 200, 0, 0, 37, 0], [0, 0, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 96, 0, 202, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 204, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0], [0, 96, 0, 0, 0, 201, 205, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 206, 206, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 103, 104, 105, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 104, 104, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 207, 207, 106, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 208, 207, 207, 106, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 209, 210, 211, 212, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 215, 196, 216, 217, 32, 33, 0, 34, 0, 0, 218, 200, 0, 0, 37, 0], [0, 0, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 97, 219, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0], [0, 204, 111, 0, 0, 97, 219, 0, 33, 0, 34, 0, 0, 0, 99, 0, 204, 0, 0], [0, 0, 0, 221, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 223, 0, 0, 0, 40, 224, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 119, 225, 0, 0, 0, 0], [0, 0, 0, 115, 116, 117, 222, 8, 9, 0, 10, 0, 0, 119, 120, 0, 0, 16, 0], [0, 0, 0, 115, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 226, 64, 0, 0, 40, 224, 0, 9, 0, 10, 0, 0, 0, 42, 0, 226, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 39, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 44, 44, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 228, 229, 0, 9, 0, 10, 0, 0, 230, 0, 0, 0, 0, 0], [0, 39, 0, 122, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 231, 231, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 130, 131, 132, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 131, 131, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 233, 233, 133, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 234, 233, 233, 133, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 235, 236, 237, 238, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 0, 0, 240, 241, 242, 243, 57, 58, 0, 59, 0, 0, 244, 245, 0, 0, 62, 0], [0, 0, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 136, 0, 247, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 249, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0], [0, 136, 0, 0, 0, 246, 250, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 251, 251, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 143, 144, 145, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 144, 144, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 252, 252, 146, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 253, 252, 252, 146, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 254, 255, 256, 257, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 260, 241, 261, 262, 57, 58, 0, 59, 0, 0, 263, 245, 0, 0, 62, 0], [0, 0, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 137, 264, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0], [0, 249, 151, 0, 0, 137, 264, 0, 58, 0, 59, 0, 0, 0, 139, 0, 249, 0, 0], [0, 0, 0, 221, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 158, 225, 0, 0, 0, 0], [0, 0, 0, 155, 116, 156, 222, 8, 9, 0, 10, 0, 0, 158, 120, 0, 0, 16, 0], [0, 0, 0, 155, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 43, 266, 266, 8, 161, 0, 24, 0, 0, 12, 267, 0, 0, 0, 0], [0, 75, 0, 176, 43, 268, 268, 269, 161, 0, 24, 0, 0, 0, 267, 0, 75, 0, 0], [0, 0, 0, 0, 0, 270, 0, 0, 271, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0], [0, 273, 274, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 273, 0, 0], [0, 0, 0, 40, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 121, 275, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 277, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 279, 0, 0, 0, 76, 280, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 173, 281, 0, 0, 0, 0], [0, 0, 0, 169, 170, 171, 278, 22, 23, 0, 24, 0, 0, 173, 174, 0, 0, 27, 0], [0, 0, 0, 169, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 282, 90, 0, 0, 76, 280, 0, 23, 0, 24, 0, 0, 0, 78, 0, 282, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 75, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 80, 80, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 284, 285, 0, 23, 0, 24, 0, 0, 286, 0, 0, 0, 0, 0], [0, 75, 0, 176, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 287, 287, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 184, 185, 186, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 185, 185, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 289, 289, 187, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 290, 289, 289, 187, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 291, 292, 293, 294, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 277, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 192, 281, 0, 0, 0, 0], [0, 0, 0, 189, 170, 190, 278, 22, 23, 0, 24, 0, 0, 192, 174, 0, 0, 27, 0], [0, 0, 0, 189, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 76, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 175, 296, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 297, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 299, 0, 0, 0, 97, 300, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 199, 301, 0, 0, 0, 0], [0, 0, 0, 195, 196, 197, 298, 32, 33, 0, 34, 0, 0, 199, 200, 0, 0, 37, 0], [0, 0, 0, 195, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 302, 111, 0, 0, 97, 300, 0, 33, 0, 34, 0, 0, 0, 99, 0, 302, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 96, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 101, 101, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 304, 305, 0, 33, 0, 34, 0, 0, 306, 0, 0, 0, 0, 0], [0, 96, 0, 202, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 307, 307, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 210, 211, 212, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 211, 211, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 309, 309, 213, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 310, 309, 309, 213, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 311, 312, 313, 314, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 297, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 218, 301, 0, 0, 0, 0], [0, 0, 0, 215, 196, 216, 298, 32, 33, 0, 34, 0, 0, 218, 200, 0, 0, 37, 0], [0, 0, 0, 215, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 97, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 201, 316, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0], [0, 0, 0, 317, 318, 319, 320, 8, 9, 0, 10, 0, 0, 321, 322, 0, 0, 16, 0], [0, 223, 0, 323, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 223, 0, 0, 0, 121, 324, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 325, 318, 326, 327, 8, 9, 0, 10, 0, 0, 328, 322, 0, 0, 16, 0], [0, 0, 0, 64, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 228, 121, 0, 9, 0, 10, 0, 0, 230, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0], [0, 0, 0, 0, 0, 329, 329, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 236, 237, 238, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 237, 237, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 331, 331, 239, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 332, 331, 331, 239, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 333, 40, 121, 334, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 335, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 337, 0, 0, 0, 137, 338, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 244, 339, 0, 0, 0, 0], [0, 0, 0, 240, 241, 242, 336, 57, 58, 0, 59, 0, 0, 244, 245, 0, 0, 62, 0], [0, 0, 0, 240, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 340, 151, 0, 0, 137, 338, 0, 58, 0, 59, 0, 0, 0, 139, 0, 340, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 136, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 141, 141, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 342, 343, 0, 58, 0, 59, 0, 0, 344, 0, 0, 0, 0, 0], [0, 136, 0, 247, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 345, 345, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 255, 256, 257, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 256, 256, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 347, 347, 258, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 348, 347, 347, 258, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 349, 350, 351, 352, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 335, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 263, 339, 0, 0, 0, 0], [0, 0, 0, 260, 241, 261, 336, 57, 58, 0, 59, 0, 0, 263, 245, 0, 0, 62, 0], [0, 0, 0, 260, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 137, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 246, 354, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 126, 126, 8, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 355, 90, 0, 0, 121, 125, 0, 9, 0, 10, 0, 0, 0, 42, 0, 355, 0, 0], [0, 0, 0, 0, 0, 356, 356, 269, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 357, 358, 359, 360, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 270, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 364, 116, 365, 366, 8, 161, 0, 162, 0, 0, 367, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 40, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 0, 281, 0, 0, 0, 0], [0, 0, 0, 369, 370, 371, 372, 22, 23, 0, 24, 0, 0, 373, 374, 0, 0, 27, 0], [0, 279, 0, 375, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 279, 0, 0, 0, 175, 376, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 377, 370, 378, 379, 22, 23, 0, 24, 0, 0, 380, 374, 0, 0, 27, 0], [0, 0, 0, 90, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 286, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 284, 175, 0, 23, 0, 24, 0, 0, 286, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0], [0, 0, 0, 0, 0, 381, 381, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 292, 293, 294, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 293, 293, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 383, 383, 295, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 384, 383, 383, 295, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 385, 76, 175, 386, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 76, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 0, 301, 0, 0, 0, 0], [0, 0, 0, 387, 388, 389, 390, 32, 33, 0, 34, 0, 0, 391, 392, 0, 0, 37, 0], [0, 299, 0, 393, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 299, 0, 0, 0, 201, 394, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 395, 388, 396, 397, 32, 33, 0, 34, 0, 0, 398, 392, 0, 0, 37, 0], [0, 0, 0, 111, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 304, 201, 0, 33, 0, 34, 0, 0, 306, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0], [0, 0, 0, 0, 0, 399, 399, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 312, 313, 314, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 313, 313, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 401, 401, 315, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 402, 401, 401, 315, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 403, 97, 201, 404, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 97, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 405, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 407, 0, 0, 0, 40, 408, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 321, 409, 0, 0, 0, 0], [0, 0, 0, 317, 318, 319, 406, 8, 9, 0, 10, 0, 0, 321, 322, 0, 0, 16, 0], [0, 0, 0, 317, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 410, 64, 0, 0, 40, 408, 0, 9, 0, 10, 0, 0, 0, 42, 0, 410, 0, 0], [0, 223, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 223, 0, 323, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 405, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 328, 409, 0, 0, 0, 0], [0, 0, 0, 325, 318, 326, 406, 8, 9, 0, 10, 0, 0, 328, 322, 0, 0, 16, 0], [0, 0, 0, 325, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0], [0, 0, 0, 0, 0, 411, 411, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 40, 121, 334, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 413, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 0, 339, 0, 0, 0, 0], [0, 0, 0, 414, 415, 416, 417, 57, 58, 0, 59, 0, 0, 418, 419, 0, 0, 62, 0], [0, 337, 0, 420, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 337, 0, 0, 0, 246, 421, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 422, 415, 423, 424, 57, 58, 0, 59, 0, 0, 425, 419, 0, 0, 62, 0], [0, 0, 0, 151, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 344, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 342, 246, 0, 58, 0, 59, 0, 0, 344, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0], [0, 0, 0, 0, 0, 426, 426, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 350, 351, 352, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 351, 351, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 428, 428, 353, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 429, 428, 428, 353, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 430, 137, 246, 431, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 137, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 432, 116, 433, 434, 8, 161, 0, 162, 0, 0, 435, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 180, 180, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 358, 359, 360, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 359, 359, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 436, 436, 361, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 437, 436, 436, 361, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 438, 439, 440, 441, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 443, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 443, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 444, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 367, 225, 0, 0, 0, 0], [0, 0, 0, 364, 116, 365, 445, 8, 161, 0, 162, 0, 0, 367, 120, 0, 0, 16, 0], [0, 0, 0, 364, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 446, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 448, 0, 0, 0, 76, 449, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 373, 450, 0, 0, 0, 0], [0, 0, 0, 369, 370, 371, 447, 22, 23, 0, 24, 0, 0, 373, 374, 0, 0, 27, 0], [0, 0, 0, 369, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 451, 90, 0, 0, 76, 449, 0, 23, 0, 24, 0, 0, 0, 78, 0, 451, 0, 0], [0, 279, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 279, 0, 375, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 446, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 380, 450, 0, 0, 0, 0], [0, 0, 0, 377, 370, 378, 447, 22, 23, 0, 24, 0, 0, 380, 374, 0, 0, 27, 0], [0, 0, 0, 377, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0], [0, 0, 0, 0, 0, 452, 452, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 76, 175, 386, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 454, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 455, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 457, 0, 0, 0, 97, 458, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 391, 459, 0, 0, 0, 0], [0, 0, 0, 387, 388, 389, 456, 32, 33, 0, 34, 0, 0, 391, 392, 0, 0, 37, 0], [0, 0, 0, 387, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 460, 111, 0, 0, 97, 458, 0, 33, 0, 34, 0, 0, 0, 99, 0, 460, 0, 0], [0, 299, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 299, 0, 393, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 455, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 398, 459, 0, 0, 0, 0], [0, 0, 0, 395, 388, 396, 456, 32, 33, 0, 34, 0, 0, 398, 392, 0, 0, 37, 0], [0, 0, 0, 395, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0], [0, 0, 0, 0, 0, 461, 461, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 97, 201, 404, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 463, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 0, 409, 0, 0, 0, 0], [0, 0, 0, 464, 465, 466, 467, 8, 9, 0, 10, 0, 0, 468, 469, 0, 0, 16, 0], [0, 407, 0, 470, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 407, 0, 0, 0, 121, 471, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 472, 465, 473, 474, 8, 9, 0, 10, 0, 0, 475, 469, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0], [0, 0, 0, 0, 0, 0, 476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 477, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 479, 0, 0, 0, 137, 480, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 418, 481, 0, 0, 0, 0], [0, 0, 0, 414, 415, 416, 478, 57, 58, 0, 59, 0, 0, 418, 419, 0, 0, 62, 0], [0, 0, 0, 414, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 482, 151, 0, 0, 137, 480, 0, 58, 0, 59, 0, 0, 0, 139, 0, 482, 0, 0], [0, 337, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 337, 0, 420, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 477, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 425, 481, 0, 0, 0, 0], [0, 0, 0, 422, 415, 423, 478, 57, 58, 0, 59, 0, 0, 425, 419, 0, 0, 62, 0], [0, 0, 0, 422, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0], [0, 0, 0, 0, 0, 483, 483, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 137, 246, 431, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 485, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 444, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 435, 225, 0, 0, 0, 0], [0, 0, 0, 432, 116, 433, 445, 8, 161, 0, 162, 0, 0, 435, 120, 0, 0, 16, 0], [0, 0, 0, 432, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 486, 486, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 439, 440, 441, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 440, 440, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 488, 488, 442, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 489, 488, 488, 442, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 490, 491, 492, 493, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 495, 0, 496, 497, 0, 161, 0, 162, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 0, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0], [0, 0, 0, 0, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 0, 450, 0, 0, 0, 0], [0, 0, 0, 499, 500, 501, 502, 22, 23, 0, 24, 0, 0, 503, 504, 0, 0, 27, 0], [0, 448, 0, 505, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 448, 0, 0, 0, 175, 506, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 507, 500, 508, 509, 22, 23, 0, 24, 0, 0, 510, 504, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 292, 0, 0], [0, 0, 0, 0, 0, 0, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 0, 459, 0, 0, 0, 0], [0, 0, 0, 512, 513, 514, 515, 32, 33, 0, 34, 0, 0, 516, 517, 0, 0, 37, 0], [0, 457, 0, 518, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 457, 0, 0, 0, 201, 519, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 520, 513, 521, 522, 32, 33, 0, 34, 0, 0, 523, 517, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0], [0, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 525, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 527, 0, 0, 0, 40, 528, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 468, 529, 0, 0, 0, 0], [0, 0, 0, 464, 465, 466, 526, 8, 9, 0, 10, 0, 0, 468, 469, 0, 0, 16, 0], [0, 0, 0, 464, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 530, 64, 0, 0, 40, 528, 0, 9, 0, 10, 0, 0, 0, 42, 0, 530, 0, 0], [0, 407, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 407, 0, 470, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 525, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 475, 529, 0, 0, 0, 0], [0, 0, 0, 472, 465, 473, 526, 8, 9, 0, 10, 0, 0, 475, 469, 0, 0, 16, 0], [0, 0, 0, 472, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0], [0, 0, 0, 0, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 0, 481, 0, 0, 0, 0], [0, 0, 0, 531, 532, 533, 534, 57, 58, 0, 59, 0, 0, 535, 536, 0, 0, 62, 0], [0, 479, 0, 537, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 479, 0, 0, 0, 246, 538, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 539, 532, 540, 541, 57, 58, 0, 59, 0, 0, 542, 536, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 0, 0], [0, 0, 0, 0, 0, 0, 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 0, 0], [0, 0, 0, 0, 0, 544, 544, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 491, 492, 493, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 492, 492, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 546, 546, 494, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 547, 546, 546, 494, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 548, 549, 368, 550, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 274, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 495, 0, 496, 368, 0, 161, 0, 162, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 495, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 551, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 553, 0, 0, 0, 76, 554, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 503, 555, 0, 0, 0, 0], [0, 0, 0, 499, 500, 501, 552, 22, 23, 0, 24, 0, 0, 503, 504, 0, 0, 27, 0], [0, 0, 0, 499, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 556, 90, 0, 0, 76, 554, 0, 23, 0, 24, 0, 0, 0, 78, 0, 556, 0, 0], [0, 448, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 448, 0, 505, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 551, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 510, 555, 0, 0, 0, 0], [0, 0, 0, 507, 500, 508, 552, 22, 23, 0, 24, 0, 0, 510, 504, 0, 0, 27, 0], [0, 0, 0, 507, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0], [0, 0, 0, 557, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 559, 0, 0, 0, 97, 560, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 516, 561, 0, 0, 0, 0], [0, 0, 0, 512, 513, 514, 558, 32, 33, 0, 34, 0, 0, 516, 517, 0, 0, 37, 0], [0, 0, 0, 512, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 562, 111, 0, 0, 97, 560, 0, 33, 0, 34, 0, 0, 0, 99, 0, 562, 0, 0], [0, 457, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 457, 0, 518, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 557, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 523, 561, 0, 0, 0, 0], [0, 0, 0, 520, 513, 521, 558, 32, 33, 0, 34, 0, 0, 523, 517, 0, 0, 37, 0], [0, 0, 0, 520, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0], [0, 0, 0, 0, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 0, 529, 0, 0, 0, 0], [0, 0, 0, 563, 66, 564, 565, 8, 9, 0, 10, 0, 0, 566, 68, 0, 0, 16, 0], [0, 527, 0, 567, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 527, 0, 0, 0, 121, 568, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 569, 66, 570, 571, 8, 9, 0, 10, 0, 0, 572, 68, 0, 0, 16, 0], [0, 0, 0, 573, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 575, 0, 0, 0, 137, 576, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 535, 577, 0, 0, 0, 0], [0, 0, 0, 531, 532, 533, 574, 57, 58, 0, 59, 0, 0, 535, 536, 0, 0, 62, 0], [0, 0, 0, 531, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 578, 151, 0, 0, 137, 576, 0, 58, 0, 59, 0, 0, 0, 139, 0, 578, 0, 0], [0, 479, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 479, 0, 537, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 573, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 542, 577, 0, 0, 0, 0], [0, 0, 0, 539, 532, 540, 574, 57, 58, 0, 59, 0, 0, 542, 536, 0, 0, 62, 0], [0, 0, 0, 539, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0], [0, 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 439, 0, 0], [0, 0, 0, 0, 0, 579, 579, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 549, 368, 550, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 581, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 0, 555, 0, 0, 0, 0], [0, 0, 0, 582, 91, 583, 584, 22, 23, 0, 24, 0, 0, 585, 93, 0, 0, 27, 0], [0, 553, 0, 586, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 553, 0, 0, 0, 175, 587, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 588, 91, 589, 590, 22, 23, 0, 24, 0, 0, 591, 93, 0, 0, 27, 0], [0, 0, 0, 0, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 0, 561, 0, 0, 0, 0], [0, 0, 0, 592, 112, 593, 594, 32, 33, 0, 34, 0, 0, 595, 114, 0, 0, 37, 0], [0, 559, 0, 596, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 559, 0, 0, 0, 201, 597, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 598, 112, 599, 600, 32, 33, 0, 34, 0, 0, 601, 114, 0, 0, 37, 0], [0, 0, 0, 602, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 566, 165, 0, 0, 0, 0], [0, 0, 0, 563, 66, 564, 67, 8, 9, 0, 10, 0, 0, 566, 68, 0, 0, 16, 0], [0, 0, 0, 563, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 527, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 527, 0, 567, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 602, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 572, 165, 0, 0, 0, 0], [0, 0, 0, 569, 66, 570, 67, 8, 9, 0, 10, 0, 0, 572, 68, 0, 0, 16, 0], [0, 0, 0, 569, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 0, 577, 0, 0, 0, 0], [0, 0, 0, 603, 152, 604, 605, 57, 58, 0, 59, 0, 0, 606, 154, 0, 0, 62, 0], [0, 575, 0, 607, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 575, 0, 0, 0, 246, 608, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 609, 152, 610, 611, 57, 58, 0, 59, 0, 0, 612, 154, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 491, 0, 0], [0, 0, 0, 0, 0, 0, 613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 614, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 585, 194, 0, 0, 0, 0], [0, 0, 0, 582, 91, 583, 92, 22, 23, 0, 24, 0, 0, 585, 93, 0, 0, 27, 0], [0, 0, 0, 582, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 553, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 553, 0, 586, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 614, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 591, 194, 0, 0, 0, 0], [0, 0, 0, 588, 91, 589, 92, 22, 23, 0, 24, 0, 0, 591, 93, 0, 0, 27, 0], [0, 0, 0, 588, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 615, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 595, 220, 0, 0, 0, 0], [0, 0, 0, 592, 112, 593, 113, 32, 33, 0, 34, 0, 0, 595, 114, 0, 0, 37, 0], [0, 0, 0, 592, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 559, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 559, 0, 596, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 615, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 601, 220, 0, 0, 0, 0], [0, 0, 0, 598, 112, 599, 113, 32, 33, 0, 34, 0, 0, 601, 114, 0, 0, 37, 0], [0, 0, 0, 598, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 616, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 606, 265, 0, 0, 0, 0], [0, 0, 0, 603, 152, 604, 153, 57, 58, 0, 59, 0, 0, 606, 154, 0, 0, 62, 0], [0, 0, 0, 603, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 575, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 575, 0, 607, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 616, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 612, 265, 0, 0, 0, 0], [0, 0, 0, 609, 152, 610, 153, 57, 58, 0, 59, 0, 0, 612, 154, 0, 0, 62, 0], [0, 0, 0, 609, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 549, 0, 0], [0, 0, 0, 0, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0]];
+var accepting = [false, true, true, true, true, true, false, false, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, false, false, true, true, true, true, true, true, true, true, true, true, false, true, true, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, false, false, true, false, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, true, true, false, false, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, false, false, true, true, false, false, true, true, true, false, true, false, true, true, true, true, false, false, false, true, false, true, true, true, true, false, false, false, true, true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, true, true, true, false, false, false, false, false, false, false, true, true, false, false, true, true, false, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, true, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, false, true, true, false, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, true, false, true, true, true, true, false, false, false, true, false, true, true, true, true, true, false, true, true, true, false, true, true, true, true, true, false, true, true, true, true, false, true, true, true, true, true, false, true, true, false, true, true, true];
+var tags = [[], ["broken_cluster"], ["consonant_syllable"], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["consonant_syllable"], ["broken_cluster"], ["symbol_cluster"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["broken_cluster"], ["broken_cluster"], ["consonant_syllable", "broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["symbol_cluster"], [], ["symbol_cluster"], ["symbol_cluster"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], [], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["symbol_cluster"], ["symbol_cluster"], ["symbol_cluster"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], [], ["consonant_syllable"], ["consonant_syllable"], [], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], [], ["vowel_syllable"], ["vowel_syllable"], [], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], [], [], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["broken_cluster"], ["symbol_cluster"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], [], [], ["consonant_syllable"], ["consonant_syllable"], [], [], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], [], [], ["vowel_syllable"], ["vowel_syllable"], [], [], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], [], [], ["broken_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], [], [], ["consonant_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], [], [], ["vowel_syllable"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], [], [], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], ["standalone_cluster"], [], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], [], [], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], [], [], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], [], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], [], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], ["consonant_syllable"], ["vowel_syllable"], ["standalone_cluster"]];
+var indicMachine = {
+	stateTable: stateTable,
+	accepting: accepting,
+	tags: tags
+};
+
+var categories = ["O", "IND", "S", "GB", "B", "FM", "CGJ", "VMAbv", "VMPst", "VAbv", "VPst", "CMBlw", "VPre", "VBlw", "H", "VMBlw", "CMAbv", "MBlw", "CS", "R", "SUB", "MPst", "MPre", "FAbv", "FPst", "FBlw", "SMAbv", "SMBlw", "VMPre", "ZWNJ", "ZWJ", "WJ", "VS", "N", "HN", "MAbv"];
+var decompositions$1 = { "2507": [2503, 2494], "2508": [2503, 2519], "2888": [2887, 2902], "2891": [2887, 2878], "2892": [2887, 2903], "3018": [3014, 3006], "3019": [3015, 3006], "3020": [3014, 3031], "3144": [3142, 3158], "3264": [3263, 3285], "3271": [3270, 3285], "3272": [3270, 3286], "3274": [3270, 3266], "3275": [3270, 3266, 3285], "3402": [3398, 3390], "3403": [3399, 3390], "3404": [3398, 3415], "3546": [3545, 3530], "3548": [3545, 3535], "3549": [3545, 3535, 3530], "3550": [3545, 3551], "3635": [3661, 3634], "3763": [3789, 3762], "3955": [3953, 3954], "3957": [3953, 3956], "3958": [4018, 3968], "3959": [4018, 3953, 3968], "3960": [4019, 3968], "3961": [4019, 3953, 3968], "3969": [3953, 3968], "6971": [6970, 6965], "6973": [6972, 6965], "6976": [6974, 6965], "6977": [6975, 6965], "6979": [6978, 6965], "69934": [69937, 69927], "69935": [69938, 69927], "70475": [70471, 70462], "70476": [70471, 70487], "70843": [70841, 70842], "70844": [70841, 70832], "70846": [70841, 70845], "71098": [71096, 71087], "71099": [71097, 71087] };
+var stateTable$1 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [2, 2, 3, 4, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 17, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 2, 0, 24, 0, 25], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 0, 0, 27, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 39, 0, 0, 47], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 9, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 9, 0, 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 0, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 4, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 48, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 49, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 16, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 16, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 0, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 33, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 0, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 33, 0, 0, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 0, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 52, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 53, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 40, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 40, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 0, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 48, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 0, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 52, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0]];
+var accepting$1 = [false, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true];
+var tags$1 = [[], ["broken_cluster"], ["independent_cluster"], ["symbol_cluster"], ["standard_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["numeral_cluster"], ["broken_cluster"], ["independent_cluster"], ["symbol_cluster"], ["symbol_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["virama_terminated_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["broken_cluster"], ["broken_cluster"], ["numeral_cluster"], ["number_joiner_terminated_cluster"], ["standard_cluster"], ["standard_cluster"], ["numeral_cluster"]];
+var useData = {
+	categories: categories,
+	decompositions: decompositions$1,
+	stateTable: stateTable$1,
+	accepting: accepting$1,
+	tags: tags$1
+};
+
+// Cateories used in the OpenType spec:
+// https://www.microsoft.com/typography/otfntdev/devanot/shaping.aspx
+var CATEGORIES = {
+  X: 1 << 0,
+  C: 1 << 1,
+  V: 1 << 2,
+  N: 1 << 3,
+  H: 1 << 4,
+  ZWNJ: 1 << 5,
+  ZWJ: 1 << 6,
+  M: 1 << 7,
+  SM: 1 << 8,
+  VD: 1 << 9,
+  A: 1 << 10,
+  Placeholder: 1 << 11,
+  Dotted_Circle: 1 << 12,
+  RS: 1 << 13, // Register Shifter, used in Khmer OT spec.
+  Coeng: 1 << 14, // Khmer-style Virama.
+  Repha: 1 << 15, // Atomically-encoded logical or visual repha.
+  Ra: 1 << 16,
+  CM: 1 << 17, // Consonant-Medial.
+  Symbol: 1 << 18 // Avagraha, etc that take marks (SM,A,VD).
+};
+
+// Visual positions in a syllable from left to right.
+var POSITIONS = {
+  Start: 1 << 0,
+
+  Ra_To_Become_Reph: 1 << 1,
+  Pre_M: 1 << 2,
+  Pre_C: 1 << 3,
+
+  Base_C: 1 << 4,
+  After_Main: 1 << 5,
+
+  Above_C: 1 << 6,
+
+  Before_Sub: 1 << 7,
+  Below_C: 1 << 8,
+  After_Sub: 1 << 9,
+
+  Before_Post: 1 << 10,
+  Post_C: 1 << 11,
+  After_Post: 1 << 12,
+
+  Final_C: 1 << 13,
+  SMVD: 1 << 14,
+
+  End: 1 << 15
+};
+
+var CONSONANT_FLAGS = CATEGORIES.C | CATEGORIES.Ra | CATEGORIES.CM | CATEGORIES.V | CATEGORIES.Placeholder | CATEGORIES.Dotted_Circle;
+var JOINER_FLAGS = CATEGORIES.ZWJ | CATEGORIES.ZWNJ;
+var HALANT_OR_COENG_FLAGS = CATEGORIES.H | CATEGORIES.Coeng;
+
+var INDIC_CONFIGS = {
+  Default: {
+    hasOldSpec: false,
+    virama: 0,
+    basePos: 'Last',
+    rephPos: POSITIONS.Before_Post,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Devanagari: {
+    hasOldSpec: true,
+    virama: 0x094D,
+    basePos: 'Last',
+    rephPos: POSITIONS.Before_Post,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Bengali: {
+    hasOldSpec: true,
+    virama: 0x09CD,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Sub,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Gurmukhi: {
+    hasOldSpec: true,
+    virama: 0x0A4D,
+    basePos: 'Last',
+    rephPos: POSITIONS.Before_Sub,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Gujarati: {
+    hasOldSpec: true,
+    virama: 0x0ACD,
+    basePos: 'Last',
+    rephPos: POSITIONS.Before_Post,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Oriya: {
+    hasOldSpec: true,
+    virama: 0x0B4D,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Main,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Tamil: {
+    hasOldSpec: true,
+    virama: 0x0BCD,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Post,
+    rephMode: 'Implicit',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  Telugu: {
+    hasOldSpec: true,
+    virama: 0x0C4D,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Post,
+    rephMode: 'Explicit',
+    blwfMode: 'Post_Only'
+  },
+
+  Kannada: {
+    hasOldSpec: true,
+    virama: 0x0CCD,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Post,
+    rephMode: 'Implicit',
+    blwfMode: 'Post_Only'
+  },
+
+  Malayalam: {
+    hasOldSpec: true,
+    virama: 0x0D4D,
+    basePos: 'Last',
+    rephPos: POSITIONS.After_Main,
+    rephMode: 'Log_Repha',
+    blwfMode: 'Pre_And_Post'
+  },
+
+  // Handled by UniversalShaper
+  // Sinhala: {
+  //   hasOldSpec: false,
+  //   virama: 0x0DCA,
+  //   basePos: 'Last_Sinhala',
+  //   rephPos: POSITIONS.After_Main,
+  //   rephMode: 'Explicit',
+  //   blwfMode: 'Pre_And_Post'
+  // },
+
+  Khmer: {
+    hasOldSpec: false,
+    virama: 0x17D2,
+    basePos: 'First',
+    rephPos: POSITIONS.Ra_To_Become_Reph,
+    rephMode: 'Vis_Repha',
+    blwfMode: 'Pre_And_Post'
+  }
+};
+
+// Additional decompositions that aren't in Unicode
+var INDIC_DECOMPOSITIONS = {
+  // Khmer
+  0x17BE: [0x17C1, 0x17BE],
+  0x17BF: [0x17C1, 0x17BF],
+  0x17C0: [0x17C1, 0x17C0],
+  0x17C4: [0x17C1, 0x17C4],
+  0x17C5: [0x17C1, 0x17C5]
+};
+
+var _class$6;
+var _temp$2;
+var decompositions = useData.decompositions;
+
+var trie$1 = new UnicodeTrie(Buffer("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","base64"));
+var stateMachine = new StateMachine(indicMachine);
+
+/**
+ * The IndicShaper supports indic scripts e.g. Devanagari, Kannada, etc.
+ * Based on code from Harfbuzz: https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-indic.cc
+ */
+var IndicShaper = (_temp$2 = _class$6 = function (_DefaultShaper) {
+  _inherits(IndicShaper, _DefaultShaper);
+
+  function IndicShaper() {
+    _classCallCheck(this, IndicShaper);
+
+    return _possibleConstructorReturn(this, _DefaultShaper.apply(this, arguments));
+  }
+
+  IndicShaper.planFeatures = function planFeatures(plan) {
+    plan.addStage(setupSyllables);
+
+    plan.addStage(['locl', 'ccmp']);
+
+    plan.addStage(initialReordering);
+
+    plan.addStage('nukt');
+    plan.addStage('akhn');
+    plan.addStage('rphf', false);
+    plan.addStage('rkrf');
+    plan.addStage('pref', false);
+    plan.addStage('blwf', false);
+    plan.addStage('abvf', false);
+    plan.addStage('half', false);
+    plan.addStage('pstf', false);
+    plan.addStage('vatu');
+    plan.addStage('cjct');
+    plan.addStage('cfar', false);
+
+    plan.addStage(finalReordering);
+
+    plan.addStage({
+      local: ['init'],
+      global: ['pres', 'abvs', 'blws', 'psts', 'haln', 'dist', 'abvm', 'blwm', 'calt', 'clig']
+    });
+
+    // Setup the indic config for the selected script
+    plan.unicodeScript = fromOpenType(plan.script);
+    plan.indicConfig = INDIC_CONFIGS[plan.unicodeScript] || INDIC_CONFIGS.Default;
+    plan.isOldSpec = plan.indicConfig.hasOldSpec && plan.script[plan.script.length - 1] !== '2';
+
+    // TODO: turn off kern (Khmer) and liga features.
+  };
+
+  IndicShaper.assignFeatures = function assignFeatures(plan, glyphs) {
+    var _loop = function _loop(i) {
+      var codepoint = glyphs[i].codePoints[0];
+      var d = INDIC_DECOMPOSITIONS[codepoint] || decompositions[codepoint];
+      if (d) {
+        var decomposed = d.map(function (c) {
+          var g = plan.font.glyphForCodePoint(c);
+          return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);
+        });
+
+        glyphs.splice.apply(glyphs, [i, 1].concat(decomposed));
+      }
+    };
+
+    // Decompose split matras
+    // TODO: do this in a more general unicode normalizer
+    for (var i = glyphs.length - 1; i >= 0; i--) {
+      _loop(i);
+    }
+  };
+
+  return IndicShaper;
+}(DefaultShaper), _class$6.zeroMarkWidths = 'NONE', _temp$2);
+function indicCategory(glyph) {
+  return trie$1.get(glyph.codePoints[0]) >> 8;
+}
+
+function indicPosition(glyph) {
+  return 1 << (trie$1.get(glyph.codePoints[0]) & 0xff);
+}
+
+var IndicInfo = function IndicInfo(category, position, syllableType, syllable) {
+  _classCallCheck(this, IndicInfo);
+
+  this.category = category;
+  this.position = position;
+  this.syllableType = syllableType;
+  this.syllable = syllable;
+};
+
+function setupSyllables(font, glyphs) {
+  var syllable = 0;
+  var last = 0;
+  for (var _iterator = stateMachine.match(glyphs.map(indicCategory)), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var _ref2 = _ref,
+        start = _ref2[0],
+        end = _ref2[1],
+        tags = _ref2[2];
+
+    if (start > last) {
+      ++syllable;
+      for (var _i2 = last; _i2 < start; _i2++) {
+        glyphs[_i2].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);
+      }
+    }
+
+    ++syllable;
+
+    // Create shaper info
+    for (var _i3 = start; _i3 <= end; _i3++) {
+      glyphs[_i3].shaperInfo = new IndicInfo(1 << indicCategory(glyphs[_i3]), indicPosition(glyphs[_i3]), tags[0], syllable);
+    }
+
+    last = end + 1;
+  }
+
+  if (last < glyphs.length) {
+    ++syllable;
+    for (var i = last; i < glyphs.length; i++) {
+      glyphs[i].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);
+    }
+  }
+}
+
+function isConsonant(glyph) {
+  return glyph.shaperInfo.category & CONSONANT_FLAGS;
+}
+
+function isJoiner(glyph) {
+  return glyph.shaperInfo.category & JOINER_FLAGS;
+}
+
+function isHalantOrCoeng(glyph) {
+  return glyph.shaperInfo.category & HALANT_OR_COENG_FLAGS;
+}
+
+function wouldSubstitute(glyphs, feature) {
+  for (var _iterator2 = glyphs, _isArray2 = Array.isArray(_iterator2), _i4 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+    var _glyph$features;
+
+    var _ref3;
+
+    if (_isArray2) {
+      if (_i4 >= _iterator2.length) break;
+      _ref3 = _iterator2[_i4++];
+    } else {
+      _i4 = _iterator2.next();
+      if (_i4.done) break;
+      _ref3 = _i4.value;
+    }
+
+    var glyph = _ref3;
+
+    glyph.features = (_glyph$features = {}, _glyph$features[feature] = true, _glyph$features);
+  }
+
+  var GSUB = glyphs[0]._font._layoutEngine.engine.GSUBProcessor;
+  GSUB.applyFeatures([feature], glyphs);
+
+  return glyphs.length === 1;
+}
+
+function consonantPosition(font, consonant, virama) {
+  var glyphs = [virama, consonant, virama];
+  if (wouldSubstitute(glyphs.slice(0, 2), 'blwf') || wouldSubstitute(glyphs.slice(1, 3), 'blwf')) {
+    return POSITIONS.Below_C;
+  } else if (wouldSubstitute(glyphs.slice(0, 2), 'pstf') || wouldSubstitute(glyphs.slice(1, 3), 'pstf')) {
+    return POSITIONS.Post_C;
+  } else if (wouldSubstitute(glyphs.slice(0, 2), 'pref') || wouldSubstitute(glyphs.slice(1, 3), 'pref')) {
+    return POSITIONS.Post_C;
+  }
+
+  return POSITIONS.Base_C;
+}
+
+function initialReordering(font, glyphs, plan) {
+  var indicConfig = plan.indicConfig;
+  var features = font._layoutEngine.engine.GSUBProcessor.features;
+
+  var dottedCircle = font.glyphForCodePoint(0x25cc).id;
+  var virama = font.glyphForCodePoint(indicConfig.virama).id;
+  if (virama) {
+    var info = new GlyphInfo(font, virama, [indicConfig.virama]);
+    for (var i = 0; i < glyphs.length; i++) {
+      if (glyphs[i].shaperInfo.position === POSITIONS.Base_C) {
+        glyphs[i].shaperInfo.position = consonantPosition(font, glyphs[i].copy(), info);
+      }
+    }
+  }
+
+  for (var start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {
+    var _glyphs$start$shaperI = glyphs[start].shaperInfo,
+        category = _glyphs$start$shaperI.category,
+        syllableType = _glyphs$start$shaperI.syllableType;
+
+
+    if (syllableType === 'symbol_cluster' || syllableType === 'non_indic_cluster') {
+      continue;
+    }
+
+    if (syllableType === 'broken_cluster' && dottedCircle) {
+      var g = new GlyphInfo(font, dottedCircle, [0x25cc]);
+      g.shaperInfo = new IndicInfo(1 << indicCategory(g), indicPosition(g), glyphs[start].shaperInfo.syllableType, glyphs[start].shaperInfo.syllable);
+
+      // Insert after possible Repha.
+      var _i5 = start;
+      while (_i5 < end && glyphs[_i5].shaperInfo.category === CATEGORIES.Repha) {
+        _i5++;
+      }
+
+      glyphs.splice(_i5++, 0, g);
+      end++;
+    }
+
+    // 1. Find base consonant:
+    //
+    // The shaping engine finds the base consonant of the syllable, using the
+    // following algorithm: starting from the end of the syllable, move backwards
+    // until a consonant is found that does not have a below-base or post-base
+    // form (post-base forms have to follow below-base forms), or that is not a
+    // pre-base reordering Ra, or arrive at the first consonant. The consonant
+    // stopped at will be the base.
+
+    var base = end;
+    var limit = start;
+    var hasReph = false;
+
+    // If the syllable starts with Ra + Halant (in a script that has Reph)
+    // and has more than one consonant, Ra is excluded from candidates for
+    // base consonants.
+    if (indicConfig.rephPos !== POSITIONS.Ra_To_Become_Reph && features.rphf && start + 3 <= end && (indicConfig.rephMode === 'Implicit' && !isJoiner(glyphs[start + 2]) || indicConfig.rephMode === 'Explicit' && glyphs[start + 2].shaperInfo.category === CATEGORIES.ZWJ)) {
+      // See if it matches the 'rphf' feature.
+      var _g = [glyphs[start].copy(), glyphs[start + 1].copy(), glyphs[start + 2].copy()];
+      if (wouldSubstitute(_g.slice(0, 2), 'rphf') || indicConfig.rephMode === 'Explicit' && wouldSubstitute(_g, 'rphf')) {
+        limit += 2;
+        while (limit < end && isJoiner(glyphs[limit])) {
+          limit++;
+        }
+        base = start;
+        hasReph = true;
+      }
+    } else if (indicConfig.rephMode === 'Log_Repha' && glyphs[start].shaperInfo.category === CATEGORIES.Repha) {
+      limit++;
+      while (limit < end && isJoiner(glyphs[limit])) {
+        limit++;
+      }
+      base = start;
+      hasReph = true;
+    }
+
+    switch (indicConfig.basePos) {
+      case 'Last':
+        {
+          // starting from the end of the syllable, move backwards
+          var _i6 = end;
+          var seenBelow = false;
+
+          do {
+            var _info = glyphs[--_i6].shaperInfo;
+
+            // until a consonant is found
+            if (isConsonant(glyphs[_i6])) {
+              // that does not have a below-base or post-base form
+              // (post-base forms have to follow below-base forms),
+              if (_info.position !== POSITIONS.Below_C && (_info.position !== POSITIONS.Post_C || seenBelow)) {
+                base = _i6;
+                break;
+              }
+
+              // or that is not a pre-base reordering Ra,
+              //
+              // IMPLEMENTATION NOTES:
+              //
+              // Our pre-base reordering Ra's are marked POS_POST_C, so will be skipped
+              // by the logic above already.
+              //
+
+              // or arrive at the first consonant. The consonant stopped at will
+              // be the base.
+              if (_info.position === POSITIONS.Below_C) {
+                seenBelow = true;
+              }
+
+              base = _i6;
+            } else if (start < _i6 && _info.category === CATEGORIES.ZWJ && glyphs[_i6 - 1].shaperInfo.category === CATEGORIES.H) {
+              // A ZWJ after a Halant stops the base search, and requests an explicit
+              // half form.
+              // A ZWJ before a Halant, requests a subjoined form instead, and hence
+              // search continues.  This is particularly important for Bengali
+              // sequence Ra,H,Ya that should form Ya-Phalaa by subjoining Ya.
+              break;
+            }
+          } while (_i6 > limit);
+          break;
+        }
+
+      case 'First':
+        {
+          // The first consonant is always the base.
+          base = start;
+
+          // Mark all subsequent consonants as below.
+          for (var _i7 = base + 1; _i7 < end; _i7++) {
+            if (isConsonant(glyphs[_i7])) {
+              glyphs[_i7].shaperInfo.position = POSITIONS.Below_C;
+            }
+          }
+        }
+    }
+
+    // If the syllable starts with Ra + Halant (in a script that has Reph)
+    // and has more than one consonant, Ra is excluded from candidates for
+    // base consonants.
+    //
+    //  Only do this for unforced Reph. (ie. not for Ra,H,ZWJ)
+    if (hasReph && base === start && limit - base <= 2) {
+      hasReph = false;
+    }
+
+    // 2. Decompose and reorder Matras:
+    //
+    // Each matra and any syllable modifier sign in the cluster are moved to the
+    // appropriate position relative to the consonant(s) in the cluster. The
+    // shaping engine decomposes two- or three-part matras into their constituent
+    // parts before any repositioning. Matra characters are classified by which
+    // consonant in a conjunct they have affinity for and are reordered to the
+    // following positions:
+    //
+    //   o Before first half form in the syllable
+    //   o After subjoined consonants
+    //   o After post-form consonant
+    //   o After main consonant (for above marks)
+    //
+    // IMPLEMENTATION NOTES:
+    //
+    // The normalize() routine has already decomposed matras for us, so we don't
+    // need to worry about that.
+
+    // 3.  Reorder marks to canonical order:
+    //
+    // Adjacent nukta and halant or nukta and vedic sign are always repositioned
+    // if necessary, so that the nukta is first.
+    //
+    // IMPLEMENTATION NOTES:
+    //
+    // We don't need to do this: the normalize() routine already did this for us.
+
+    // Reorder characters
+
+    for (var _i8 = start; _i8 < base; _i8++) {
+      var _info2 = glyphs[_i8].shaperInfo;
+      _info2.position = Math.min(POSITIONS.Pre_C, _info2.position);
+    }
+
+    if (base < end) {
+      glyphs[base].shaperInfo.position = POSITIONS.Base_C;
+    }
+
+    // Mark final consonants.  A final consonant is one appearing after a matra,
+    // like in Khmer.
+    for (var _i9 = base + 1; _i9 < end; _i9++) {
+      if (glyphs[_i9].shaperInfo.category === CATEGORIES.M) {
+        for (var j = _i9 + 1; j < end; j++) {
+          if (isConsonant(glyphs[j])) {
+            glyphs[j].shaperInfo.position = POSITIONS.Final_C;
+            break;
+          }
+        }
+        break;
+      }
+    }
+
+    // Handle beginning Ra
+    if (hasReph) {
+      glyphs[start].shaperInfo.position = POSITIONS.Ra_To_Become_Reph;
+    }
+
+    // For old-style Indic script tags, move the first post-base Halant after
+    // last consonant.
+    //
+    // Reports suggest that in some scripts Uniscribe does this only if there
+    // is *not* a Halant after last consonant already (eg. Kannada), while it
+    // does it unconditionally in other scripts (eg. Malayalam).  We don't
+    // currently know about other scripts, so we single out Malayalam for now.
+    //
+    // Kannada test case:
+    // U+0C9A,U+0CCD,U+0C9A,U+0CCD
+    // With some versions of Lohit Kannada.
+    // https://bugs.freedesktop.org/show_bug.cgi?id=59118
+    //
+    // Malayalam test case:
+    // U+0D38,U+0D4D,U+0D31,U+0D4D,U+0D31,U+0D4D
+    // With lohit-ttf-20121122/Lohit-Malayalam.ttf
+    if (plan.isOldSpec) {
+      var disallowDoubleHalants = plan.unicodeScript !== 'Malayalam';
+      for (var _i10 = base + 1; _i10 < end; _i10++) {
+        if (glyphs[_i10].shaperInfo.category === CATEGORIES.H) {
+          var _j = void 0;
+          for (_j = end - 1; _j > _i10; _j--) {
+            if (isConsonant(glyphs[_j]) || disallowDoubleHalants && glyphs[_j].shaperInfo.category === CATEGORIES.H) {
+              break;
+            }
+          }
+
+          if (glyphs[_j].shaperInfo.category !== CATEGORIES.H && _j > _i10) {
+            // Move Halant to after last consonant.
+            var t = glyphs[_i10];
+            glyphs.splice.apply(glyphs, [_i10, 0].concat(glyphs.splice(_i10 + 1, _j - _i10)));
+            glyphs[_j] = t;
+          }
+
+          break;
+        }
+      }
+    }
+
+    // Attach misc marks to previous char to move with them.
+    var lastPos = POSITIONS.Start;
+    for (var _i11 = start; _i11 < end; _i11++) {
+      var _info3 = glyphs[_i11].shaperInfo;
+      if (_info3.category & (JOINER_FLAGS | CATEGORIES.N | CATEGORIES.RS | CATEGORIES.CM | HALANT_OR_COENG_FLAGS & _info3.category)) {
+        _info3.position = lastPos;
+        if (_info3.category === CATEGORIES.H && _info3.position === POSITIONS.Pre_M) {
+          // Uniscribe doesn't move the Halant with Left Matra.
+          // TEST: U+092B,U+093F,U+094DE
+          // We follow.  This is important for the Sinhala
+          // U+0DDA split matra since it decomposes to U+0DD9,U+0DCA
+          // where U+0DD9 is a left matra and U+0DCA is the virama.
+          // We don't want to move the virama with the left matra.
+          // TEST: U+0D9A,U+0DDA
+          for (var _j2 = _i11; _j2 > start; _j2--) {
+            if (glyphs[_j2 - 1].shaperInfo.position !== POSITIONS.Pre_M) {
+              _info3.position = glyphs[_j2 - 1].shaperInfo.position;
+              break;
+            }
+          }
+        }
+      } else if (_info3.position !== POSITIONS.SMVD) {
+        lastPos = _info3.position;
+      }
+    }
+
+    // For post-base consonants let them own anything before them
+    // since the last consonant or matra.
+    var last = base;
+    for (var _i12 = base + 1; _i12 < end; _i12++) {
+      if (isConsonant(glyphs[_i12])) {
+        for (var _j3 = last + 1; _j3 < _i12; _j3++) {
+          if (glyphs[_j3].shaperInfo.position < POSITIONS.SMVD) {
+            glyphs[_j3].shaperInfo.position = glyphs[_i12].shaperInfo.position;
+          }
+        }
+        last = _i12;
+      } else if (glyphs[_i12].shaperInfo.category === CATEGORIES.M) {
+        last = _i12;
+      }
+    }
+
+    var arr = glyphs.slice(start, end);
+    arr.sort(function (a, b) {
+      return a.shaperInfo.position - b.shaperInfo.position;
+    });
+    glyphs.splice.apply(glyphs, [start, arr.length].concat(arr));
+
+    // Find base again
+    for (var _i13 = start; _i13 < end; _i13++) {
+      if (glyphs[_i13].shaperInfo.position === POSITIONS.Base_C) {
+        base = _i13;
+        break;
+      }
+    }
+
+    // Setup features now
+
+    // Reph
+    for (var _i14 = start; _i14 < end && glyphs[_i14].shaperInfo.position === POSITIONS.Ra_To_Become_Reph; _i14++) {
+      glyphs[_i14].features.rphf = true;
+    }
+
+    // Pre-base
+    var blwf = !plan.isOldSpec && indicConfig.blwfMode === 'Pre_And_Post';
+    for (var _i15 = start; _i15 < base; _i15++) {
+      glyphs[_i15].features.half = true;
+      if (blwf) {
+        glyphs[_i15].features.blwf = true;
+      }
+    }
+
+    // Post-base
+    for (var _i16 = base + 1; _i16 < end; _i16++) {
+      glyphs[_i16].features.abvf = true;
+      glyphs[_i16].features.pstf = true;
+      glyphs[_i16].features.blwf = true;
+    }
+
+    if (plan.isOldSpec && plan.unicodeScript === 'Devanagari') {
+      // Old-spec eye-lash Ra needs special handling.  From the
+      // spec:
+      //
+      // "The feature 'below-base form' is applied to consonants
+      // having below-base forms and following the base consonant.
+      // The exception is vattu, which may appear below half forms
+      // as well as below the base glyph. The feature 'below-base
+      // form' will be applied to all such occurrences of Ra as well."
+      //
+      // Test case: U+0924,U+094D,U+0930,U+094d,U+0915
+      // with Sanskrit 2003 font.
+      //
+      // However, note that Ra,Halant,ZWJ is the correct way to
+      // request eyelash form of Ra, so we wouldbn't inhibit it
+      // in that sequence.
+      //
+      // Test case: U+0924,U+094D,U+0930,U+094d,U+200D,U+0915
+      for (var _i17 = start; _i17 + 1 < base; _i17++) {
+        if (glyphs[_i17].shaperInfo.category === CATEGORIES.Ra && glyphs[_i17 + 1].shaperInfo.category === CATEGORIES.H && (_i17 + 1 === base || glyphs[_i17 + 2].shaperInfo.category === CATEGORIES.ZWJ)) {
+          glyphs[_i17].features.blwf = true;
+          glyphs[_i17 + 1].features.blwf = true;
+        }
+      }
+    }
+
+    var prefLen = 2;
+    if (features.pref && base + prefLen < end) {
+      // Find a Halant,Ra sequence and mark it for pre-base reordering processing.
+      for (var _i18 = base + 1; _i18 + prefLen - 1 < end; _i18++) {
+        var _g2 = [glyphs[_i18].copy(), glyphs[_i18 + 1].copy()];
+        if (wouldSubstitute(_g2, 'pref')) {
+          for (var _j4 = 0; _j4 < prefLen; _j4++) {
+            glyphs[_i18++].features.pref = true;
+          }
+
+          // Mark the subsequent stuff with 'cfar'.  Used in Khmer.
+          // Read the feature spec.
+          // This allows distinguishing the following cases with MS Khmer fonts:
+          // U+1784,U+17D2,U+179A,U+17D2,U+1782
+          // U+1784,U+17D2,U+1782,U+17D2,U+179A
+          if (features.cfar) {
+            for (; _i18 < end; _i18++) {
+              glyphs[_i18].features.cfar = true;
+            }
+          }
+
+          break;
+        }
+      }
+    }
+
+    // Apply ZWJ/ZWNJ effects
+    for (var _i19 = start + 1; _i19 < end; _i19++) {
+      if (isJoiner(glyphs[_i19])) {
+        var nonJoiner = glyphs[_i19].shaperInfo.category === CATEGORIES.ZWNJ;
+        var _j5 = _i19;
+
+        do {
+          _j5--;
+
+          // ZWJ/ZWNJ should disable CJCT.  They do that by simply
+          // being there, since we don't skip them for the CJCT
+          // feature (ie. F_MANUAL_ZWJ)
+
+          // A ZWNJ disables HALF.
+          if (nonJoiner) {
+            delete glyphs[_j5].features.half;
+          }
+        } while (_j5 > start && !isConsonant(glyphs[_j5]));
+      }
+    }
+  }
+}
+
+function finalReordering(font, glyphs, plan) {
+  var indicConfig = plan.indicConfig;
+  var features = font._layoutEngine.engine.GSUBProcessor.features;
+
+  for (var start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {
+    // 4. Final reordering:
+    //
+    // After the localized forms and basic shaping forms GSUB features have been
+    // applied (see below), the shaping engine performs some final glyph
+    // reordering before applying all the remaining font features to the entire
+    // cluster.
+
+    var tryPref = !!features.pref;
+
+    // Find base again
+    var base = start;
+    for (; base < end; base++) {
+      if (glyphs[base].shaperInfo.position >= POSITIONS.Base_C) {
+        if (tryPref && base + 1 < end) {
+          for (var i = base + 1; i < end; i++) {
+            if (glyphs[i].features.pref) {
+              if (!(glyphs[i].substituted && glyphs[i].isLigated && !glyphs[i].isMultiplied)) {
+                // Ok, this was a 'pref' candidate but didn't form any.
+                // Base is around here...
+                base = i;
+                while (base < end && isHalantOrCoeng(glyphs[base])) {
+                  base++;
+                }
+                glyphs[base].shaperInfo.position = POSITIONS.BASE_C;
+                tryPref = false;
+              }
+              break;
+            }
+          }
+        }
+
+        // For Malayalam, skip over unformed below- (but NOT post-) forms.
+        if (plan.unicodeScript === 'Malayalam') {
+          for (var _i20 = base + 1; _i20 < end; _i20++) {
+            while (_i20 < end && isJoiner(glyphs[_i20])) {
+              _i20++;
+            }
+
+            if (_i20 === end || !isHalantOrCoeng(glyphs[_i20])) {
+              break;
+            }
+
+            _i20++; // Skip halant.
+            while (_i20 < end && isJoiner(glyphs[_i20])) {
+              _i20++;
+            }
+
+            if (_i20 < end && isConsonant(glyphs[_i20]) && glyphs[_i20].shaperInfo.position === POSITIONS.Below_C) {
+              base = _i20;
+              glyphs[base].shaperInfo.position = POSITIONS.Base_C;
+            }
+          }
+        }
+
+        if (start < base && glyphs[base].shaperInfo.position > POSITIONS.Base_C) {
+          base--;
+        }
+        break;
+      }
+    }
+
+    if (base === end && start < base && glyphs[base - 1].shaperInfo.category === CATEGORIES.ZWJ) {
+      base--;
+    }
+
+    if (base < end) {
+      while (start < base && glyphs[base].shaperInfo.category & (CATEGORIES.N | HALANT_OR_COENG_FLAGS)) {
+        base--;
+      }
+    }
+
+    // o Reorder matras:
+    //
+    // If a pre-base matra character had been reordered before applying basic
+    // features, the glyph can be moved closer to the main consonant based on
+    // whether half-forms had been formed. Actual position for the matra is
+    // defined as “after last standalone halant glyph, after initial matra
+    // position and before the main consonant”. If ZWJ or ZWNJ follow this
+    // halant, position is moved after it.
+    //
+
+    if (start + 1 < end && start < base) {
+      // Otherwise there can't be any pre-base matra characters.
+      // If we lost track of base, alas, position before last thingy.
+      var newPos = base === end ? base - 2 : base - 1;
+
+      // Malayalam / Tamil do not have "half" forms or explicit virama forms.
+      // The glyphs formed by 'half' are Chillus or ligated explicit viramas.
+      // We want to position matra after them.
+      if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {
+        while (newPos > start && !(glyphs[newPos].shaperInfo.category & (CATEGORIES.M | HALANT_OR_COENG_FLAGS))) {
+          newPos--;
+        }
+
+        // If we found no Halant we are done.
+        // Otherwise only proceed if the Halant does
+        // not belong to the Matra itself!
+        if (isHalantOrCoeng(glyphs[newPos]) && glyphs[newPos].shaperInfo.position !== POSITIONS.Pre_M) {
+          // If ZWJ or ZWNJ follow this halant, position is moved after it.
+          if (newPos + 1 < end && isJoiner(glyphs[newPos + 1])) {
+            newPos++;
+          }
+        } else {
+          newPos = start; // No move.
+        }
+      }
+
+      if (start < newPos && glyphs[newPos].shaperInfo.position !== POSITIONS.Pre_M) {
+        // Now go see if there's actually any matras...
+        for (var _i21 = newPos; _i21 > start; _i21--) {
+          if (glyphs[_i21 - 1].shaperInfo.position === POSITIONS.Pre_M) {
+            var oldPos = _i21 - 1;
+            if (oldPos < base && base <= newPos) {
+              // Shouldn't actually happen.
+              base--;
+            }
+
+            var tmp = glyphs[oldPos];
+            glyphs.splice.apply(glyphs, [oldPos, 0].concat(glyphs.splice(oldPos + 1, newPos - oldPos)));
+            glyphs[newPos] = tmp;
+
+            newPos--;
+          }
+        }
+      }
+    }
+
+    // o Reorder reph:
+    //
+    // Reph’s original position is always at the beginning of the syllable,
+    // (i.e. it is not reordered at the character reordering stage). However,
+    // it will be reordered according to the basic-forms shaping results.
+    // Possible positions for reph, depending on the script, are; after main,
+    // before post-base consonant forms, and after post-base consonant forms.
+
+    // Two cases:
+    //
+    // - If repha is encoded as a sequence of characters (Ra,H or Ra,H,ZWJ), then
+    //   we should only move it if the sequence ligated to the repha form.
+    //
+    // - If repha is encoded separately and in the logical position, we should only
+    //   move it if it did NOT ligate.  If it ligated, it's probably the font trying
+    //   to make it work without the reordering.
+    if (start + 1 < end && glyphs[start].shaperInfo.position === POSITIONS.Ra_To_Become_Reph && glyphs[start].shaperInfo.category === CATEGORIES.Repha !== (glyphs[start].isLigated && !glyphs[start].isMultiplied)) {
+      var newRephPos = void 0;
+      var rephPos = indicConfig.rephPos;
+      var found = false;
+
+      // 1. If reph should be positioned after post-base consonant forms,
+      //    proceed to step 5.
+      if (rephPos !== POSITIONS.After_Post) {
+        //  2. If the reph repositioning class is not after post-base: target
+        //     position is after the first explicit halant glyph between the
+        //     first post-reph consonant and last main consonant. If ZWJ or ZWNJ
+        //     are following this halant, position is moved after it. If such
+        //     position is found, this is the target position. Otherwise,
+        //     proceed to the next step.
+        //
+        //     Note: in old-implementation fonts, where classifications were
+        //     fixed in shaping engine, there was no case where reph position
+        //     will be found on this step.
+        newRephPos = start + 1;
+        while (newRephPos < base && !isHalantOrCoeng(glyphs[newRephPos])) {
+          newRephPos++;
+        }
+
+        if (newRephPos < base && isHalantOrCoeng(glyphs[newRephPos])) {
+          // ->If ZWJ or ZWNJ are following this halant, position is moved after it.
+          if (newRephPos + 1 < base && isJoiner(glyphs[newRephPos + 1])) {
+            newRephPos++;
+          }
+
+          found = true;
+        }
+
+        // 3. If reph should be repositioned after the main consonant: find the
+        //    first consonant not ligated with main, or find the first
+        //    consonant that is not a potential pre-base reordering Ra.
+        if (!found && rephPos === POSITIONS.After_Main) {
+          newRephPos = base;
+          while (newRephPos + 1 < end && glyphs[newRephPos + 1].shaperInfo.position <= POSITIONS.After_Main) {
+            newRephPos++;
+          }
+
+          found = newRephPos < end;
+        }
+
+        // 4. If reph should be positioned before post-base consonant, find
+        //    first post-base classified consonant not ligated with main. If no
+        //    consonant is found, the target position should be before the
+        //    first matra, syllable modifier sign or vedic sign.
+        //
+        // This is our take on what step 4 is trying to say (and failing, BADLY).
+        if (!found && rephPos === POSITIONS.After_Sub) {
+          newRephPos = base;
+          while (newRephPos + 1 < end && !(glyphs[newRephPos + 1].shaperInfo.position & (POSITIONS.Post_C | POSITIONS.After_Post | POSITIONS.SMVD))) {
+            newRephPos++;
+          }
+
+          found = newRephPos < end;
+        }
+      }
+
+      //  5. If no consonant is found in steps 3 or 4, move reph to a position
+      //     immediately before the first post-base matra, syllable modifier
+      //     sign or vedic sign that has a reordering class after the intended
+      //     reph position. For example, if the reordering position for reph
+      //     is post-main, it will skip above-base matras that also have a
+      //     post-main position.
+      if (!found) {
+        // Copied from step 2.
+        newRephPos = start + 1;
+        while (newRephPos < base && !isHalantOrCoeng(glyphs[newRephPos])) {
+          newRephPos++;
+        }
+
+        if (newRephPos < base && isHalantOrCoeng(glyphs[newRephPos])) {
+          // ->If ZWJ or ZWNJ are following this halant, position is moved after it.
+          if (newRephPos + 1 < base && isJoiner(glyphs[newRephPos + 1])) {
+            newRephPos++;
+          }
+
+          found = true;
+        }
+      }
+
+      // 6. Otherwise, reorder reph to the end of the syllable.
+      if (!found) {
+        newRephPos = end - 1;
+        while (newRephPos > start && glyphs[newRephPos].shaperInfo.position === POSITIONS.SMVD) {
+          newRephPos--;
+        }
+
+        // If the Reph is to be ending up after a Matra,Halant sequence,
+        // position it before that Halant so it can interact with the Matra.
+        // However, if it's a plain Consonant,Halant we shouldn't do that.
+        // Uniscribe doesn't do this.
+        // TEST: U+0930,U+094D,U+0915,U+094B,U+094D
+        if (isHalantOrCoeng(glyphs[newRephPos])) {
+          for (var _i22 = base + 1; _i22 < newRephPos; _i22++) {
+            if (glyphs[_i22].shaperInfo.category === CATEGORIES.M) {
+              newRephPos--;
+            }
+          }
+        }
+      }
+
+      var reph = glyphs[start];
+      glyphs.splice.apply(glyphs, [start, 0].concat(glyphs.splice(start + 1, newRephPos - start)));
+      glyphs[newRephPos] = reph;
+
+      if (start < base && base <= newRephPos) {
+        base--;
+      }
+    }
+
+    // o Reorder pre-base reordering consonants:
+    //
+    // If a pre-base reordering consonant is found, reorder it according to
+    // the following rules:
+    if (tryPref && base + 1 < end) {
+      for (var _i23 = base + 1; _i23 < end; _i23++) {
+        if (glyphs[_i23].features.pref) {
+          // 1. Only reorder a glyph produced by substitution during application
+          //    of the <pref> feature. (Note that a font may shape a Ra consonant with
+          //    the feature generally but block it in certain contexts.)
+
+          // Note: We just check that something got substituted.  We don't check that
+          // the <pref> feature actually did it...
+          //
+          // Reorder pref only if it ligated.
+          if (glyphs[_i23].isLigated && !glyphs[_i23].isMultiplied) {
+            // 2. Try to find a target position the same way as for pre-base matra.
+            //    If it is found, reorder pre-base consonant glyph.
+            //
+            // 3. If position is not found, reorder immediately before main
+            //    consonant.
+            var _newPos = base;
+
+            // Malayalam / Tamil do not have "half" forms or explicit virama forms.
+            // The glyphs formed by 'half' are Chillus or ligated explicit viramas.
+            // We want to position matra after them.
+            if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {
+              while (_newPos > start && !(glyphs[_newPos - 1].shaperInfo.category & (CATEGORIES.M | HALANT_OR_COENG_FLAGS))) {
+                _newPos--;
+              }
+
+              // In Khmer coeng model, a H,Ra can go *after* matras.  If it goes after a
+              // split matra, it should be reordered to *before* the left part of such matra.
+              if (_newPos > start && glyphs[_newPos - 1].shaperInfo.category === CATEGORIES.M) {
+                var _oldPos2 = _i23;
+                for (var j = base + 1; j < _oldPos2; j++) {
+                  if (glyphs[j].shaperInfo.category === CATEGORIES.M) {
+                    _newPos--;
+                    break;
+                  }
+                }
+              }
+            }
+
+            if (_newPos > start && isHalantOrCoeng(glyphs[_newPos - 1])) {
+              // -> If ZWJ or ZWNJ follow this halant, position is moved after it.
+              if (_newPos < end && isJoiner(glyphs[_newPos])) {
+                _newPos++;
+              }
+            }
+
+            var _oldPos = _i23;
+            var _tmp = glyphs[_oldPos];
+            glyphs.splice.apply(glyphs, [_newPos + 1, 0].concat(glyphs.splice(_newPos, _oldPos - _newPos)));
+            glyphs[_newPos] = _tmp;
+
+            if (_newPos <= base && base < _oldPos) {
+              base++;
+            }
+          }
+
+          break;
+        }
+      }
+    }
+
+    // Apply 'init' to the Left Matra if it's a word start.
+    if (glyphs[start].shaperInfo.position === POSITIONS.Pre_M && (!start || !/Cf|Mn/.test(unicode.getCategory(glyphs[start - 1].codePoints[0])))) {
+      glyphs[start].features.init = true;
+    }
+  }
+}
+
+function nextSyllable(glyphs, start) {
+  if (start >= glyphs.length) return start;
+  var syllable = glyphs[start].shaperInfo.syllable;
+  while (++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable) {}
+  return start;
+}
+
+var _class$7;
+var _temp$3;
+var categories$1 = useData.categories;
+var decompositions$2 = useData.decompositions;
+var trie$2 = new UnicodeTrie(Buffer("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","base64"));
+var stateMachine$1 = new StateMachine(useData);
+
+/**
+ * This shaper is an implementation of the Universal Shaping Engine, which
+ * uses Unicode data to shape a number of scripts without a dedicated shaping engine.
+ * See https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm.
+ */
+var UniversalShaper = (_temp$3 = _class$7 = function (_DefaultShaper) {
+  _inherits(UniversalShaper, _DefaultShaper);
+
+  function UniversalShaper() {
+    _classCallCheck(this, UniversalShaper);
+
+    return _possibleConstructorReturn(this, _DefaultShaper.apply(this, arguments));
+  }
+
+  UniversalShaper.planFeatures = function planFeatures(plan) {
+    plan.addStage(setupSyllables$1);
+
+    // Default glyph pre-processing group
+    plan.addStage(['locl', 'ccmp', 'nukt', 'akhn']);
+
+    // Reordering group
+    plan.addStage(clearSubstitutionFlags);
+    plan.addStage(['rphf'], false);
+    plan.addStage(recordRphf);
+    plan.addStage(clearSubstitutionFlags);
+    plan.addStage(['pref']);
+    plan.addStage(recordPref);
+
+    // Orthographic unit shaping group
+    plan.addStage(['rkrf', 'abvf', 'blwf', 'half', 'pstf', 'vatu', 'cjct']);
+    plan.addStage(reorder);
+
+    // Topographical features
+    // Scripts that need this are handled by the Arabic shaper, not implemented here for now.
+    // plan.addStage(['isol', 'init', 'medi', 'fina', 'med2', 'fin2', 'fin3'], false);
+
+    // Standard topographic presentation and positional feature application
+    plan.addStage(['abvs', 'blws', 'pres', 'psts', 'dist', 'abvm', 'blwm']);
+  };
+
+  UniversalShaper.assignFeatures = function assignFeatures(plan, glyphs) {
+    var _loop = function _loop(i) {
+      var codepoint = glyphs[i].codePoints[0];
+      if (decompositions$2[codepoint]) {
+        var decomposed = decompositions$2[codepoint].map(function (c) {
+          var g = plan.font.glyphForCodePoint(c);
+          return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);
+        });
+
+        glyphs.splice.apply(glyphs, [i, 1].concat(decomposed));
+      }
+    };
+
+    // Decompose split vowels
+    // TODO: do this in a more general unicode normalizer
+    for (var i = glyphs.length - 1; i >= 0; i--) {
+      _loop(i);
+    }
+  };
+
+  return UniversalShaper;
+}(DefaultShaper), _class$7.zeroMarkWidths = 'BEFORE_GPOS', _temp$3);
+function useCategory(glyph) {
+  return trie$2.get(glyph.codePoints[0]);
+}
+
+var USEInfo = function USEInfo(category, syllableType, syllable) {
+  _classCallCheck(this, USEInfo);
+
+  this.category = category;
+  this.syllableType = syllableType;
+  this.syllable = syllable;
+};
+
+function setupSyllables$1(font, glyphs) {
+  var syllable = 0;
+  for (var _iterator = stateMachine$1.match(glyphs.map(useCategory)), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var _ref2 = _ref,
+        start = _ref2[0],
+        end = _ref2[1],
+        tags = _ref2[2];
+
+    ++syllable;
+
+    // Create shaper info
+    for (var i = start; i <= end; i++) {
+      glyphs[i].shaperInfo = new USEInfo(categories$1[useCategory(glyphs[i])], tags[0], syllable);
+    }
+
+    // Assign rphf feature
+    var limit = glyphs[start].shaperInfo.category === 'R' ? 1 : Math.min(3, end - start);
+    for (var _i2 = start; _i2 < start + limit; _i2++) {
+      glyphs[_i2].features.rphf = true;
+    }
+  }
+}
+
+function clearSubstitutionFlags(font, glyphs) {
+  for (var _iterator2 = glyphs, _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+    var _ref3;
+
+    if (_isArray2) {
+      if (_i3 >= _iterator2.length) break;
+      _ref3 = _iterator2[_i3++];
+    } else {
+      _i3 = _iterator2.next();
+      if (_i3.done) break;
+      _ref3 = _i3.value;
+    }
+
+    var glyph = _ref3;
+
+    glyph.substituted = false;
+  }
+}
+
+function recordRphf(font, glyphs) {
+  for (var _iterator3 = glyphs, _isArray3 = Array.isArray(_iterator3), _i4 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+    var _ref4;
+
+    if (_isArray3) {
+      if (_i4 >= _iterator3.length) break;
+      _ref4 = _iterator3[_i4++];
+    } else {
+      _i4 = _iterator3.next();
+      if (_i4.done) break;
+      _ref4 = _i4.value;
+    }
+
+    var glyph = _ref4;
+
+    if (glyph.substituted && glyph.features.rphf) {
+      // Mark a substituted repha.
+      glyph.shaperInfo.category = 'R';
+    }
+  }
+}
+
+function recordPref(font, glyphs) {
+  for (var _iterator4 = glyphs, _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+    var _ref5;
+
+    if (_isArray4) {
+      if (_i5 >= _iterator4.length) break;
+      _ref5 = _iterator4[_i5++];
+    } else {
+      _i5 = _iterator4.next();
+      if (_i5.done) break;
+      _ref5 = _i5.value;
+    }
+
+    var glyph = _ref5;
+
+    if (glyph.substituted) {
+      // Mark a substituted pref as VPre, as they behave the same way.
+      glyph.shaperInfo.category = 'VPre';
+    }
+  }
+}
+
+function reorder(font, glyphs) {
+  var dottedCircle = font.glyphForCodePoint(0x25cc).id;
+
+  for (var start = 0, end = nextSyllable$1(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable$1(glyphs, start)) {
+    var i = void 0,
+        j = void 0;
+    var info = glyphs[start].shaperInfo;
+    var type = info.syllableType;
+
+    // Only a few syllable types need reordering.
+    if (type !== 'virama_terminated_cluster' && type !== 'standard_cluster' && type !== 'broken_cluster') {
+      continue;
+    }
+
+    // Insert a dotted circle glyph in broken clusters.
+    if (type === 'broken_cluster' && dottedCircle) {
+      var g = new GlyphInfo(font, dottedCircle, [0x25cc]);
+      g.shaperInfo = info;
+
+      // Insert after possible Repha.
+      for (i = start; i < end && glyphs[i].shaperInfo.category === 'R'; i++) {}
+      glyphs.splice(++i, 0, g);
+      end++;
+    }
+
+    // Move things forward.
+    if (info.category === 'R' && end - start > 1) {
+      // Got a repha. Reorder it to after first base, before first halant.
+      for (i = start + 1; i < end; i++) {
+        info = glyphs[i].shaperInfo;
+        if (isBase(info) || isHalant(glyphs[i])) {
+          // If we hit a halant, move before it; otherwise it's a base: move to it's
+          // place, and shift things in between backward.
+          if (isHalant(glyphs[i])) {
+            i--;
+          }
+
+          glyphs.splice.apply(glyphs, [start, 0].concat(glyphs.splice(start + 1, i - start), [glyphs[i]]));
+          break;
+        }
+      }
+    }
+
+    // Move things back.
+    for (i = start, j = end; i < end; i++) {
+      info = glyphs[i].shaperInfo;
+      if (isBase(info) || isHalant(glyphs[i])) {
+        // If we hit a halant, move after it; otherwise it's a base: move to it's
+        // place, and shift things in between backward.
+        j = isHalant(glyphs[i]) ? i + 1 : i;
+      } else if ((info.category === 'VPre' || info.category === 'VMPre') && j < i) {
+        glyphs.splice.apply(glyphs, [j, 1, glyphs[i]].concat(glyphs.splice(j, i - j)));
+      }
+    }
+  }
+}
+
+function nextSyllable$1(glyphs, start) {
+  if (start >= glyphs.length) return start;
+  var syllable = glyphs[start].shaperInfo.syllable;
+  while (++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable) {}
+  return start;
+}
+
+function isHalant(glyph) {
+  return glyph.shaperInfo.category === 'H' && !glyph.isLigated;
+}
+
+function isBase(info) {
+  return info.category === 'B' || info.category === 'GB';
+}
+
+var SHAPERS = {
+  arab: ArabicShaper, // Arabic
+  mong: ArabicShaper, // Mongolian
+  syrc: ArabicShaper, // Syriac
+  'nko ': ArabicShaper, // N'Ko
+  phag: ArabicShaper, // Phags Pa
+  mand: ArabicShaper, // Mandaic
+  mani: ArabicShaper, // Manichaean
+  phlp: ArabicShaper, // Psalter Pahlavi
+
+  hang: HangulShaper, // Hangul
+
+  bng2: IndicShaper, // Bengali
+  beng: IndicShaper, // Bengali
+  dev2: IndicShaper, // Devanagari
+  deva: IndicShaper, // Devanagari
+  gjr2: IndicShaper, // Gujarati
+  gujr: IndicShaper, // Gujarati
+  guru: IndicShaper, // Gurmukhi
+  gur2: IndicShaper, // Gurmukhi
+  knda: IndicShaper, // Kannada
+  knd2: IndicShaper, // Kannada
+  mlm2: IndicShaper, // Malayalam
+  mlym: IndicShaper, // Malayalam
+  ory2: IndicShaper, // Oriya
+  orya: IndicShaper, // Oriya
+  taml: IndicShaper, // Tamil
+  tml2: IndicShaper, // Tamil
+  telu: IndicShaper, // Telugu
+  tel2: IndicShaper, // Telugu
+  khmr: IndicShaper, // Khmer
+
+  bali: UniversalShaper, // Balinese
+  batk: UniversalShaper, // Batak
+  brah: UniversalShaper, // Brahmi
+  bugi: UniversalShaper, // Buginese
+  buhd: UniversalShaper, // Buhid
+  cakm: UniversalShaper, // Chakma
+  cham: UniversalShaper, // Cham
+  dupl: UniversalShaper, // Duployan
+  egyp: UniversalShaper, // Egyptian Hieroglyphs
+  gran: UniversalShaper, // Grantha
+  hano: UniversalShaper, // Hanunoo
+  java: UniversalShaper, // Javanese
+  kthi: UniversalShaper, // Kaithi
+  kali: UniversalShaper, // Kayah Li
+  khar: UniversalShaper, // Kharoshthi
+  khoj: UniversalShaper, // Khojki
+  sind: UniversalShaper, // Khudawadi
+  lepc: UniversalShaper, // Lepcha
+  limb: UniversalShaper, // Limbu
+  mahj: UniversalShaper, // Mahajani
+  // mand: UniversalShaper, // Mandaic
+  // mani: UniversalShaper, // Manichaean
+  mtei: UniversalShaper, // Meitei Mayek
+  modi: UniversalShaper, // Modi
+  // mong: UniversalShaper, // Mongolian
+  // 'nko ': UniversalShaper, // N’Ko
+  hmng: UniversalShaper, // Pahawh Hmong
+  // phag: UniversalShaper, // Phags-pa
+  // phlp: UniversalShaper, // Psalter Pahlavi
+  rjng: UniversalShaper, // Rejang
+  saur: UniversalShaper, // Saurashtra
+  shrd: UniversalShaper, // Sharada
+  sidd: UniversalShaper, // Siddham
+  sinh: UniversalShaper, // Sinhala
+  sund: UniversalShaper, // Sundanese
+  sylo: UniversalShaper, // Syloti Nagri
+  tglg: UniversalShaper, // Tagalog
+  tagb: UniversalShaper, // Tagbanwa
+  tale: UniversalShaper, // Tai Le
+  lana: UniversalShaper, // Tai Tham
+  tavt: UniversalShaper, // Tai Viet
+  takr: UniversalShaper, // Takri
+  tibt: UniversalShaper, // Tibetan
+  tfng: UniversalShaper, // Tifinagh
+  tirh: UniversalShaper, // Tirhuta
+
+  latn: DefaultShaper, // Latin
+  DFLT: DefaultShaper // Default
+};
+
+function choose(script) {
+  if (!Array.isArray(script)) {
+    script = [script];
+  }
+
+  for (var _iterator = script, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var s = _ref;
+
+    var shaper = SHAPERS[s];
+    if (shaper) {
+      return shaper;
+    }
+  }
+
+  return DefaultShaper;
+}
+
+var GSUBProcessor = function (_OTProcessor) {
+  _inherits(GSUBProcessor, _OTProcessor);
+
+  function GSUBProcessor() {
+    _classCallCheck(this, GSUBProcessor);
+
+    return _possibleConstructorReturn(this, _OTProcessor.apply(this, arguments));
+  }
+
+  GSUBProcessor.prototype.applyLookup = function applyLookup(lookupType, table) {
+    var _this2 = this;
+
+    switch (lookupType) {
+      case 1:
+        {
+          // Single Substitution
+          var index = this.coverageIndex(table.coverage);
+          if (index === -1) {
+            return false;
+          }
+
+          var glyph = this.glyphIterator.cur;
+          switch (table.version) {
+            case 1:
+              glyph.id = glyph.id + table.deltaGlyphID & 0xffff;
+              break;
+
+            case 2:
+              glyph.id = table.substitute.get(index);
+              break;
+          }
+
+          return true;
+        }
+
+      case 2:
+        {
+          // Multiple Substitution
+          var _index = this.coverageIndex(table.coverage);
+          if (_index !== -1) {
+            var _glyphs;
+
+            var sequence = table.sequences.get(_index);
+            this.glyphIterator.cur.id = sequence[0];
+            this.glyphIterator.cur.ligatureComponent = 0;
+
+            var features = this.glyphIterator.cur.features;
+            var curGlyph = this.glyphIterator.cur;
+            var replacement = sequence.slice(1).map(function (gid, i) {
+              var glyph = new GlyphInfo(_this2.font, gid, undefined, features);
+              glyph.shaperInfo = curGlyph.shaperInfo;
+              glyph.isLigated = curGlyph.isLigated;
+              glyph.ligatureComponent = i + 1;
+              glyph.substituted = true;
+              glyph.isMultiplied = true;
+              return glyph;
+            });
+
+            (_glyphs = this.glyphs).splice.apply(_glyphs, [this.glyphIterator.index + 1, 0].concat(replacement));
+            return true;
+          }
+
+          return false;
+        }
+
+      case 3:
+        {
+          // Alternate Substitution
+          var _index2 = this.coverageIndex(table.coverage);
+          if (_index2 !== -1) {
+            var USER_INDEX = 0; // TODO
+            this.glyphIterator.cur.id = table.alternateSet.get(_index2)[USER_INDEX];
+            return true;
+          }
+
+          return false;
+        }
+
+      case 4:
+        {
+          // Ligature Substitution
+          var _index3 = this.coverageIndex(table.coverage);
+          if (_index3 === -1) {
+            return false;
+          }
+
+          for (var _iterator = table.ligatureSets.get(_index3), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+            var _ref;
+
+            if (_isArray) {
+              if (_i >= _iterator.length) break;
+              _ref = _iterator[_i++];
+            } else {
+              _i = _iterator.next();
+              if (_i.done) break;
+              _ref = _i.value;
+            }
+
+            var ligature = _ref;
+
+            var matched = this.sequenceMatchIndices(1, ligature.components);
+            if (!matched) {
+              continue;
+            }
+
+            var _curGlyph = this.glyphIterator.cur;
+
+            // Concatenate all of the characters the new ligature will represent
+            var characters = _curGlyph.codePoints.slice();
+            for (var _iterator2 = matched, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+              var _ref2;
+
+              if (_isArray2) {
+                if (_i2 >= _iterator2.length) break;
+                _ref2 = _iterator2[_i2++];
+              } else {
+                _i2 = _iterator2.next();
+                if (_i2.done) break;
+                _ref2 = _i2.value;
+              }
+
+              var _index4 = _ref2;
+
+              characters.push.apply(characters, this.glyphs[_index4].codePoints);
+            }
+
+            // Create the replacement ligature glyph
+            var ligatureGlyph = new GlyphInfo(this.font, ligature.glyph, characters, _curGlyph.features);
+            ligatureGlyph.shaperInfo = _curGlyph.shaperInfo;
+            ligatureGlyph.isLigated = true;
+            ligatureGlyph.substituted = true;
+
+            // From Harfbuzz:
+            // - If it *is* a mark ligature, we don't allocate a new ligature id, and leave
+            //   the ligature to keep its old ligature id.  This will allow it to attach to
+            //   a base ligature in GPOS.  Eg. if the sequence is: LAM,LAM,SHADDA,FATHA,HEH,
+            //   and LAM,LAM,HEH for a ligature, they will leave SHADDA and FATHA with a
+            //   ligature id and component value of 2.  Then if SHADDA,FATHA form a ligature
+            //   later, we don't want them to lose their ligature id/component, otherwise
+            //   GPOS will fail to correctly position the mark ligature on top of the
+            //   LAM,LAM,HEH ligature. See https://bugzilla.gnome.org/show_bug.cgi?id=676343
+            //
+            // - If a ligature is formed of components that some of which are also ligatures
+            //   themselves, and those ligature components had marks attached to *their*
+            //   components, we have to attach the marks to the new ligature component
+            //   positions!  Now *that*'s tricky!  And these marks may be following the
+            //   last component of the whole sequence, so we should loop forward looking
+            //   for them and update them.
+            //
+            //   Eg. the sequence is LAM,LAM,SHADDA,FATHA,HEH, and the font first forms a
+            //   'calt' ligature of LAM,HEH, leaving the SHADDA and FATHA with a ligature
+            //   id and component == 1.  Now, during 'liga', the LAM and the LAM-HEH ligature
+            //   form a LAM-LAM-HEH ligature.  We need to reassign the SHADDA and FATHA to
+            //   the new ligature with a component value of 2.
+            //
+            //   This in fact happened to a font...  See https://bugzilla.gnome.org/show_bug.cgi?id=437633
+            var isMarkLigature = _curGlyph.isMark;
+            for (var i = 0; i < matched.length && isMarkLigature; i++) {
+              isMarkLigature = this.glyphs[matched[i]].isMark;
+            }
+
+            ligatureGlyph.ligatureID = isMarkLigature ? null : this.ligatureID++;
+
+            var lastLigID = _curGlyph.ligatureID;
+            var lastNumComps = _curGlyph.codePoints.length;
+            var curComps = lastNumComps;
+            var idx = this.glyphIterator.index + 1;
+
+            // Set ligatureID and ligatureComponent on glyphs that were skipped in the matched sequence.
+            // This allows GPOS to attach marks to the correct ligature components.
+            for (var _iterator3 = matched, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+              var _ref3;
+
+              if (_isArray3) {
+                if (_i3 >= _iterator3.length) break;
+                _ref3 = _iterator3[_i3++];
+              } else {
+                _i3 = _iterator3.next();
+                if (_i3.done) break;
+                _ref3 = _i3.value;
+              }
+
+              var matchIndex = _ref3;
+
+              // Don't assign new ligature components for mark ligatures (see above)
+              if (isMarkLigature) {
+                idx = matchIndex;
+              } else {
+                while (idx < matchIndex) {
+                  var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[idx].ligatureComponent || 1, lastNumComps);
+                  this.glyphs[idx].ligatureID = ligatureGlyph.ligatureID;
+                  this.glyphs[idx].ligatureComponent = ligatureComponent;
+                  idx++;
+                }
+              }
+
+              lastLigID = this.glyphs[idx].ligatureID;
+              lastNumComps = this.glyphs[idx].codePoints.length;
+              curComps += lastNumComps;
+              idx++; // skip base glyph
+            }
+
+            // Adjust ligature components for any marks following
+            if (lastLigID && !isMarkLigature) {
+              for (var _i4 = idx; _i4 < this.glyphs.length; _i4++) {
+                if (this.glyphs[_i4].ligatureID === lastLigID) {
+                  var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[_i4].ligatureComponent || 1, lastNumComps);
+                  this.glyphs[_i4].ligatureComponent = ligatureComponent;
+                } else {
+                  break;
+                }
+              }
+            }
+
+            // Delete the matched glyphs, and replace the current glyph with the ligature glyph
+            for (var _i5 = matched.length - 1; _i5 >= 0; _i5--) {
+              this.glyphs.splice(matched[_i5], 1);
+            }
+
+            this.glyphs[this.glyphIterator.index] = ligatureGlyph;
+            return true;
+          }
+
+          return false;
+        }
+
+      case 5:
+        // Contextual Substitution
+        return this.applyContext(table);
+
+      case 6:
+        // Chaining Contextual Substitution
+        return this.applyChainingContext(table);
+
+      case 7:
+        // Extension Substitution
+        return this.applyLookup(table.lookupType, table.extension);
+
+      default:
+        throw new Error('GSUB lookupType ' + lookupType + ' is not supported');
+    }
+  };
+
+  return GSUBProcessor;
+}(OTProcessor);
+
+var GPOSProcessor = function (_OTProcessor) {
+  _inherits(GPOSProcessor, _OTProcessor);
+
+  function GPOSProcessor() {
+    _classCallCheck(this, GPOSProcessor);
+
+    return _possibleConstructorReturn(this, _OTProcessor.apply(this, arguments));
+  }
+
+  GPOSProcessor.prototype.applyPositionValue = function applyPositionValue(sequenceIndex, value) {
+    var position = this.positions[this.glyphIterator.peekIndex(sequenceIndex)];
+    if (value.xAdvance != null) {
+      position.xAdvance += value.xAdvance;
+    }
+
+    if (value.yAdvance != null) {
+      position.yAdvance += value.yAdvance;
+    }
+
+    if (value.xPlacement != null) {
+      position.xOffset += value.xPlacement;
+    }
+
+    if (value.yPlacement != null) {
+      position.yOffset += value.yPlacement;
+    }
+
+    // Adjustments for font variations
+    var variationProcessor = this.font._variationProcessor;
+    var variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;
+    if (variationProcessor && variationStore) {
+      if (value.xPlaDevice) {
+        position.xOffset += variationProcessor.getDelta(variationStore, value.xPlaDevice.a, value.xPlaDevice.b);
+      }
+
+      if (value.yPlaDevice) {
+        position.yOffset += variationProcessor.getDelta(variationStore, value.yPlaDevice.a, value.yPlaDevice.b);
+      }
+
+      if (value.xAdvDevice) {
+        position.xAdvance += variationProcessor.getDelta(variationStore, value.xAdvDevice.a, value.xAdvDevice.b);
+      }
+
+      if (value.yAdvDevice) {
+        position.yAdvance += variationProcessor.getDelta(variationStore, value.yAdvDevice.a, value.yAdvDevice.b);
+      }
+    }
+
+    // TODO: device tables
+  };
+
+  GPOSProcessor.prototype.applyLookup = function applyLookup(lookupType, table) {
+    switch (lookupType) {
+      case 1:
+        {
+          // Single positioning value
+          var index = this.coverageIndex(table.coverage);
+          if (index === -1) {
+            return false;
+          }
+
+          switch (table.version) {
+            case 1:
+              this.applyPositionValue(0, table.value);
+              break;
+
+            case 2:
+              this.applyPositionValue(0, table.values.get(index));
+              break;
+          }
+
+          return true;
+        }
+
+      case 2:
+        {
+          // Pair Adjustment Positioning
+          var nextGlyph = this.glyphIterator.peek();
+          if (!nextGlyph) {
+            return false;
+          }
+
+          var _index = this.coverageIndex(table.coverage);
+          if (_index === -1) {
+            return false;
+          }
+
+          switch (table.version) {
+            case 1:
+              // Adjustments for glyph pairs
+              var set = table.pairSets.get(_index);
+
+              for (var _iterator = set, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+                var _ref;
+
+                if (_isArray) {
+                  if (_i >= _iterator.length) break;
+                  _ref = _iterator[_i++];
+                } else {
+                  _i = _iterator.next();
+                  if (_i.done) break;
+                  _ref = _i.value;
+                }
+
+                var _pair = _ref;
+
+                if (_pair.secondGlyph === nextGlyph.id) {
+                  this.applyPositionValue(0, _pair.value1);
+                  this.applyPositionValue(1, _pair.value2);
+                  return true;
+                }
+              }
+
+              return false;
+
+            case 2:
+              // Class pair adjustment
+              var class1 = this.getClassID(this.glyphIterator.cur.id, table.classDef1);
+              var class2 = this.getClassID(nextGlyph.id, table.classDef2);
+              if (class1 === -1 || class2 === -1) {
+                return false;
+              }
+
+              var pair = table.classRecords.get(class1).get(class2);
+              this.applyPositionValue(0, pair.value1);
+              this.applyPositionValue(1, pair.value2);
+              return true;
+          }
+        }
+
+      case 3:
+        {
+          // Cursive Attachment Positioning
+          var nextIndex = this.glyphIterator.peekIndex();
+          var _nextGlyph = this.glyphs[nextIndex];
+          if (!_nextGlyph) {
+            return false;
+          }
+
+          var curRecord = table.entryExitRecords[this.coverageIndex(table.coverage)];
+          if (!curRecord || !curRecord.exitAnchor) {
+            return false;
+          }
+
+          var nextRecord = table.entryExitRecords[this.coverageIndex(table.coverage, _nextGlyph.id)];
+          if (!nextRecord || !nextRecord.entryAnchor) {
+            return false;
+          }
+
+          var entry = this.getAnchor(nextRecord.entryAnchor);
+          var exit = this.getAnchor(curRecord.exitAnchor);
+
+          var cur = this.positions[this.glyphIterator.index];
+          var next = this.positions[nextIndex];
+
+          switch (this.direction) {
+            case 'ltr':
+              cur.xAdvance = exit.x + cur.xOffset;
+
+              var d = entry.x + next.xOffset;
+              next.xAdvance -= d;
+              next.xOffset -= d;
+              break;
+
+            case 'rtl':
+              d = exit.x + cur.xOffset;
+              cur.xAdvance -= d;
+              cur.xOffset -= d;
+              next.xAdvance = entry.x + next.xOffset;
+              break;
+          }
+
+          if (this.glyphIterator.flags.rightToLeft) {
+            this.glyphIterator.cur.cursiveAttachment = nextIndex;
+            cur.yOffset = entry.y - exit.y;
+          } else {
+            _nextGlyph.cursiveAttachment = this.glyphIterator.index;
+            cur.yOffset = exit.y - entry.y;
+          }
+
+          return true;
+        }
+
+      case 4:
+        {
+          // Mark to base positioning
+          var markIndex = this.coverageIndex(table.markCoverage);
+          if (markIndex === -1) {
+            return false;
+          }
+
+          // search backward for a base glyph
+          var baseGlyphIndex = this.glyphIterator.index;
+          while (--baseGlyphIndex >= 0 && (this.glyphs[baseGlyphIndex].isMark || this.glyphs[baseGlyphIndex].ligatureComponent > 0)) {}
+
+          if (baseGlyphIndex < 0) {
+            return false;
+          }
+
+          var baseIndex = this.coverageIndex(table.baseCoverage, this.glyphs[baseGlyphIndex].id);
+          if (baseIndex === -1) {
+            return false;
+          }
+
+          var markRecord = table.markArray[markIndex];
+          var baseAnchor = table.baseArray[baseIndex][markRecord.class];
+          this.applyAnchor(markRecord, baseAnchor, baseGlyphIndex);
+          return true;
+        }
+
+      case 5:
+        {
+          // Mark to ligature positioning
+          var _markIndex = this.coverageIndex(table.markCoverage);
+          if (_markIndex === -1) {
+            return false;
+          }
+
+          // search backward for a base glyph
+          var _baseGlyphIndex = this.glyphIterator.index;
+          while (--_baseGlyphIndex >= 0 && this.glyphs[_baseGlyphIndex].isMark) {}
+
+          if (_baseGlyphIndex < 0) {
+            return false;
+          }
+
+          var ligIndex = this.coverageIndex(table.ligatureCoverage, this.glyphs[_baseGlyphIndex].id);
+          if (ligIndex === -1) {
+            return false;
+          }
+
+          var ligAttach = table.ligatureArray[ligIndex];
+          var markGlyph = this.glyphIterator.cur;
+          var ligGlyph = this.glyphs[_baseGlyphIndex];
+          var compIndex = ligGlyph.ligatureID && ligGlyph.ligatureID === markGlyph.ligatureID && markGlyph.ligatureComponent > 0 ? Math.min(markGlyph.ligatureComponent, ligGlyph.codePoints.length) - 1 : ligGlyph.codePoints.length - 1;
+
+          var _markRecord = table.markArray[_markIndex];
+          var _baseAnchor = ligAttach[compIndex][_markRecord.class];
+          this.applyAnchor(_markRecord, _baseAnchor, _baseGlyphIndex);
+          return true;
+        }
+
+      case 6:
+        {
+          // Mark to mark positioning
+          var mark1Index = this.coverageIndex(table.mark1Coverage);
+          if (mark1Index === -1) {
+            return false;
+          }
+
+          // get the previous mark to attach to
+          var prevIndex = this.glyphIterator.peekIndex(-1);
+          var prev = this.glyphs[prevIndex];
+          if (!prev || !prev.isMark) {
+            return false;
+          }
+
+          var _cur = this.glyphIterator.cur;
+
+          // The following logic was borrowed from Harfbuzz
+          var good = false;
+          if (_cur.ligatureID === prev.ligatureID) {
+            if (!_cur.ligatureID) {
+              // Marks belonging to the same base
+              good = true;
+            } else if (_cur.ligatureComponent === prev.ligatureComponent) {
+              // Marks belonging to the same ligature component
+              good = true;
+            }
+          } else {
+            // If ligature ids don't match, it may be the case that one of the marks
+            // itself is a ligature, in which case match.
+            if (_cur.ligatureID && !_cur.ligatureComponent || prev.ligatureID && !prev.ligatureComponent) {
+              good = true;
+            }
+          }
+
+          if (!good) {
+            return false;
+          }
+
+          var mark2Index = this.coverageIndex(table.mark2Coverage, prev.id);
+          if (mark2Index === -1) {
+            return false;
+          }
+
+          var _markRecord2 = table.mark1Array[mark1Index];
+          var _baseAnchor2 = table.mark2Array[mark2Index][_markRecord2.class];
+          this.applyAnchor(_markRecord2, _baseAnchor2, prevIndex);
+          return true;
+        }
+
+      case 7:
+        // Contextual positioning
+        return this.applyContext(table);
+
+      case 8:
+        // Chaining contextual positioning
+        return this.applyChainingContext(table);
+
+      case 9:
+        // Extension positioning
+        return this.applyLookup(table.lookupType, table.extension);
+
+      default:
+        throw new Error('Unsupported GPOS table: ' + lookupType);
+    }
+  };
+
+  GPOSProcessor.prototype.applyAnchor = function applyAnchor(markRecord, baseAnchor, baseGlyphIndex) {
+    var baseCoords = this.getAnchor(baseAnchor);
+    var markCoords = this.getAnchor(markRecord.markAnchor);
+
+    var basePos = this.positions[baseGlyphIndex];
+    var markPos = this.positions[this.glyphIterator.index];
+
+    markPos.xOffset = baseCoords.x - markCoords.x;
+    markPos.yOffset = baseCoords.y - markCoords.y;
+    this.glyphIterator.cur.markAttachment = baseGlyphIndex;
+  };
+
+  GPOSProcessor.prototype.getAnchor = function getAnchor(anchor) {
+    // TODO: contour point, device tables
+    var x = anchor.xCoordinate;
+    var y = anchor.yCoordinate;
+
+    // Adjustments for font variations
+    var variationProcessor = this.font._variationProcessor;
+    var variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;
+    if (variationProcessor && variationStore) {
+      if (anchor.xDeviceTable) {
+        x += variationProcessor.getDelta(variationStore, anchor.xDeviceTable.a, anchor.xDeviceTable.b);
+      }
+
+      if (anchor.yDeviceTable) {
+        y += variationProcessor.getDelta(variationStore, anchor.yDeviceTable.a, anchor.yDeviceTable.b);
+      }
+    }
+
+    return { x: x, y: y };
+  };
+
+  GPOSProcessor.prototype.applyFeatures = function applyFeatures(userFeatures, glyphs, advances) {
+    _OTProcessor.prototype.applyFeatures.call(this, userFeatures, glyphs, advances);
+
+    for (var i = 0; i < this.glyphs.length; i++) {
+      this.fixCursiveAttachment(i);
+    }
+
+    this.fixMarkAttachment();
+  };
+
+  GPOSProcessor.prototype.fixCursiveAttachment = function fixCursiveAttachment(i) {
+    var glyph = this.glyphs[i];
+    if (glyph.cursiveAttachment != null) {
+      var j = glyph.cursiveAttachment;
+
+      glyph.cursiveAttachment = null;
+      this.fixCursiveAttachment(j);
+
+      this.positions[i].yOffset += this.positions[j].yOffset;
+    }
+  };
+
+  GPOSProcessor.prototype.fixMarkAttachment = function fixMarkAttachment() {
+    for (var i = 0; i < this.glyphs.length; i++) {
+      var glyph = this.glyphs[i];
+      if (glyph.markAttachment != null) {
+        var j = glyph.markAttachment;
+
+        this.positions[i].xOffset += this.positions[j].xOffset;
+        this.positions[i].yOffset += this.positions[j].yOffset;
+
+        if (this.direction === 'ltr') {
+          for (var k = j; k < i; k++) {
+            this.positions[i].xOffset -= this.positions[k].xAdvance;
+            this.positions[i].yOffset -= this.positions[k].yAdvance;
+          }
+        } else {
+          for (var _k = j + 1; _k < i + 1; _k++) {
+            this.positions[i].xOffset += this.positions[_k].xAdvance;
+            this.positions[i].yOffset += this.positions[_k].yAdvance;
+          }
+        }
+      }
+    }
+  };
+
+  return GPOSProcessor;
+}(OTProcessor);
+
+var OTLayoutEngine = function () {
+  function OTLayoutEngine(font) {
+    _classCallCheck(this, OTLayoutEngine);
+
+    this.font = font;
+    this.glyphInfos = null;
+    this.plan = null;
+    this.GSUBProcessor = null;
+    this.GPOSProcessor = null;
+    this.fallbackPosition = true;
+
+    if (font.GSUB) {
+      this.GSUBProcessor = new GSUBProcessor(font, font.GSUB);
+    }
+
+    if (font.GPOS) {
+      this.GPOSProcessor = new GPOSProcessor(font, font.GPOS);
+    }
+  }
+
+  OTLayoutEngine.prototype.setup = function setup(glyphRun) {
+    var _this = this;
+
+    // Map glyphs to GlyphInfo objects so data can be passed between
+    // GSUB and GPOS without mutating the real (shared) Glyph objects.
+    this.glyphInfos = glyphRun.glyphs.map(function (glyph) {
+      return new GlyphInfo(_this.font, glyph.id, [].concat(glyph.codePoints));
+    });
+
+    // Select a script based on what is available in GSUB/GPOS.
+    var script = null;
+    if (this.GPOSProcessor) {
+      script = this.GPOSProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);
+    }
+
+    if (this.GSUBProcessor) {
+      script = this.GSUBProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);
+    }
+
+    // Choose a shaper based on the script, and setup a shaping plan.
+    // This determines which features to apply to which glyphs.
+    this.shaper = choose(script);
+    this.plan = new ShapingPlan(this.font, script, glyphRun.direction);
+    this.shaper.plan(this.plan, this.glyphInfos, glyphRun.features);
+
+    // Assign chosen features to output glyph run
+    for (var key in this.plan.allFeatures) {
+      glyphRun.features[key] = true;
+    }
+  };
+
+  OTLayoutEngine.prototype.substitute = function substitute(glyphRun) {
+    var _this2 = this;
+
+    if (this.GSUBProcessor) {
+      this.plan.process(this.GSUBProcessor, this.glyphInfos);
+
+      // Map glyph infos back to normal Glyph objects
+      glyphRun.glyphs = this.glyphInfos.map(function (glyphInfo) {
+        return _this2.font.getGlyph(glyphInfo.id, glyphInfo.codePoints);
+      });
+    }
+  };
+
+  OTLayoutEngine.prototype.position = function position(glyphRun) {
+    if (this.shaper.zeroMarkWidths === 'BEFORE_GPOS') {
+      this.zeroMarkAdvances(glyphRun.positions);
+    }
+
+    if (this.GPOSProcessor) {
+      this.plan.process(this.GPOSProcessor, this.glyphInfos, glyphRun.positions);
+    }
+
+    if (this.shaper.zeroMarkWidths === 'AFTER_GPOS') {
+      this.zeroMarkAdvances(glyphRun.positions);
+    }
+
+    // Reverse the glyphs and positions if the script is right-to-left
+    if (glyphRun.direction === 'rtl') {
+      glyphRun.glyphs.reverse();
+      glyphRun.positions.reverse();
+    }
+
+    return this.GPOSProcessor && this.GPOSProcessor.features;
+  };
+
+  OTLayoutEngine.prototype.zeroMarkAdvances = function zeroMarkAdvances(positions) {
+    for (var i = 0; i < this.glyphInfos.length; i++) {
+      if (this.glyphInfos[i].isMark) {
+        positions[i].xAdvance = 0;
+        positions[i].yAdvance = 0;
+      }
+    }
+  };
+
+  OTLayoutEngine.prototype.cleanup = function cleanup() {
+    this.glyphInfos = null;
+    this.plan = null;
+    this.shaper = null;
+  };
+
+  OTLayoutEngine.prototype.getAvailableFeatures = function getAvailableFeatures(script, language) {
+    var features = [];
+
+    if (this.GSUBProcessor) {
+      this.GSUBProcessor.selectScript(script, language);
+      features.push.apply(features, _Object$keys(this.GSUBProcessor.features));
+    }
+
+    if (this.GPOSProcessor) {
+      this.GPOSProcessor.selectScript(script, language);
+      features.push.apply(features, _Object$keys(this.GPOSProcessor.features));
+    }
+
+    return features;
+  };
+
+  return OTLayoutEngine;
+}();
+
+var LayoutEngine = function () {
+  function LayoutEngine(font) {
+    _classCallCheck(this, LayoutEngine);
+
+    this.font = font;
+    this.unicodeLayoutEngine = null;
+    this.kernProcessor = null;
+
+    // Choose an advanced layout engine. We try the AAT morx table first since more
+    // scripts are currently supported because the shaping logic is built into the font.
+    if (this.font.morx) {
+      this.engine = new AATLayoutEngine(this.font);
+    } else if (this.font.GSUB || this.font.GPOS) {
+      this.engine = new OTLayoutEngine(this.font);
+    }
+  }
+
+  LayoutEngine.prototype.layout = function layout(string, features, script, language, direction) {
+    // Make the features parameter optional
+    if (typeof features === 'string') {
+      direction = language;
+      language = script;
+      script = features;
+      features = [];
+    }
+
+    // Map string to glyphs if needed
+    if (typeof string === 'string') {
+      // Attempt to detect the script from the string if not provided.
+      if (script == null) {
+        script = forString(string);
+      }
+
+      var glyphs = this.font.glyphsForString(string);
+    } else {
+      // Attempt to detect the script from the glyph code points if not provided.
+      if (script == null) {
+        var codePoints = [];
+        for (var _iterator = string, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+          var _ref;
+
+          if (_isArray) {
+            if (_i >= _iterator.length) break;
+            _ref = _iterator[_i++];
+          } else {
+            _i = _iterator.next();
+            if (_i.done) break;
+            _ref = _i.value;
+          }
+
+          var glyph = _ref;
+
+          codePoints.push.apply(codePoints, glyph.codePoints);
+        }
+
+        script = forCodePoints(codePoints);
+      }
+
+      var glyphs = string;
+    }
+
+    var glyphRun = new GlyphRun(glyphs, features, script, language, direction);
+
+    // Return early if there are no glyphs
+    if (glyphs.length === 0) {
+      glyphRun.positions = [];
+      return glyphRun;
+    }
+
+    // Setup the advanced layout engine
+    if (this.engine && this.engine.setup) {
+      this.engine.setup(glyphRun);
+    }
+
+    // Substitute and position the glyphs
+    this.substitute(glyphRun);
+    this.position(glyphRun);
+
+    this.hideDefaultIgnorables(glyphRun.glyphs, glyphRun.positions);
+
+    // Let the layout engine clean up any state it might have
+    if (this.engine && this.engine.cleanup) {
+      this.engine.cleanup();
+    }
+
+    return glyphRun;
+  };
+
+  LayoutEngine.prototype.substitute = function substitute(glyphRun) {
+    // Call the advanced layout engine to make substitutions
+    if (this.engine && this.engine.substitute) {
+      this.engine.substitute(glyphRun);
+    }
+  };
+
+  LayoutEngine.prototype.position = function position(glyphRun) {
+    // Get initial glyph positions
+    glyphRun.positions = glyphRun.glyphs.map(function (glyph) {
+      return new GlyphPosition(glyph.advanceWidth);
+    });
+    var positioned = null;
+
+    // Call the advanced layout engine. Returns the features applied.
+    if (this.engine && this.engine.position) {
+      positioned = this.engine.position(glyphRun);
+    }
+
+    // if there is no GPOS table, use unicode properties to position marks.
+    if (!positioned && (!this.engine || this.engine.fallbackPosition)) {
+      if (!this.unicodeLayoutEngine) {
+        this.unicodeLayoutEngine = new UnicodeLayoutEngine(this.font);
+      }
+
+      this.unicodeLayoutEngine.positionGlyphs(glyphRun.glyphs, glyphRun.positions);
+    }
+
+    // if kerning is not supported by GPOS, do kerning with the TrueType/AAT kern table
+    if ((!positioned || !positioned.kern) && glyphRun.features.kern !== false && this.font.kern) {
+      if (!this.kernProcessor) {
+        this.kernProcessor = new KernProcessor(this.font);
+      }
+
+      this.kernProcessor.process(glyphRun.glyphs, glyphRun.positions);
+      glyphRun.features.kern = true;
+    }
+  };
+
+  LayoutEngine.prototype.hideDefaultIgnorables = function hideDefaultIgnorables(glyphs, positions) {
+    var space = this.font.glyphForCodePoint(0x20);
+    for (var i = 0; i < glyphs.length; i++) {
+      if (this.isDefaultIgnorable(glyphs[i].codePoints[0])) {
+        glyphs[i] = space;
+        positions[i].xAdvance = 0;
+        positions[i].yAdvance = 0;
+      }
+    }
+  };
+
+  LayoutEngine.prototype.isDefaultIgnorable = function isDefaultIgnorable(ch) {
+    // From DerivedCoreProperties.txt in the Unicode database,
+    // minus U+115F, U+1160, U+3164 and U+FFA0, which is what
+    // Harfbuzz and Uniscribe do.
+    var plane = ch >> 16;
+    if (plane === 0) {
+      // BMP
+      switch (ch >> 8) {
+        case 0x00:
+          return ch === 0x00AD;
+        case 0x03:
+          return ch === 0x034F;
+        case 0x06:
+          return ch === 0x061C;
+        case 0x17:
+          return 0x17B4 <= ch && ch <= 0x17B5;
+        case 0x18:
+          return 0x180B <= ch && ch <= 0x180E;
+        case 0x20:
+          return 0x200B <= ch && ch <= 0x200F || 0x202A <= ch && ch <= 0x202E || 0x2060 <= ch && ch <= 0x206F;
+        case 0xFE:
+          return 0xFE00 <= ch && ch <= 0xFE0F || ch === 0xFEFF;
+        case 0xFF:
+          return 0xFFF0 <= ch && ch <= 0xFFF8;
+        default:
+          return false;
+      }
+    } else {
+      // Other planes
+      switch (plane) {
+        case 0x01:
+          return 0x1BCA0 <= ch && ch <= 0x1BCA3 || 0x1D173 <= ch && ch <= 0x1D17A;
+        case 0x0E:
+          return 0xE0000 <= ch && ch <= 0xE0FFF;
+        default:
+          return false;
+      }
+    }
+  };
+
+  LayoutEngine.prototype.getAvailableFeatures = function getAvailableFeatures(script, language) {
+    var features = [];
+
+    if (this.engine) {
+      features.push.apply(features, this.engine.getAvailableFeatures(script, language));
+    }
+
+    if (this.font.kern && features.indexOf('kern') === -1) {
+      features.push('kern');
+    }
+
+    return features;
+  };
+
+  LayoutEngine.prototype.stringsForGlyph = function stringsForGlyph(gid) {
+    var result = new _Set();
+
+    var codePoints = this.font._cmapProcessor.codePointsForGlyph(gid);
+    for (var _iterator2 = codePoints, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var codePoint = _ref2;
+
+      result.add(_String$fromCodePoint(codePoint));
+    }
+
+    if (this.engine && this.engine.stringsForGlyph) {
+      for (var _iterator3 = this.engine.stringsForGlyph(gid), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref3 = _i3.value;
+        }
+
+        var string = _ref3;
+
+        result.add(string);
+      }
+    }
+
+    return _Array$from(result);
+  };
+
+  return LayoutEngine;
+}();
+
+var SVG_COMMANDS = {
+  moveTo: 'M',
+  lineTo: 'L',
+  quadraticCurveTo: 'Q',
+  bezierCurveTo: 'C',
+  closePath: 'Z'
+};
+
+/**
+ * Path objects are returned by glyphs and represent the actual
+ * vector outlines for each glyph in the font. Paths can be converted
+ * to SVG path data strings, or to functions that can be applied to
+ * render the path to a graphics context.
+ */
+
+var Path = function () {
+  function Path() {
+    _classCallCheck(this, Path);
+
+    this.commands = [];
+    this._bbox = null;
+    this._cbox = null;
+  }
+
+  /**
+   * Compiles the path to a JavaScript function that can be applied with
+   * a graphics context in order to render the path.
+   * @return {string}
+   */
+
+
+  Path.prototype.toFunction = function toFunction() {
+    var cmds = this.commands.map(function (c) {
+      return '  ctx.' + c.command + '(' + c.args.join(', ') + ');';
+    });
+    return new Function('ctx', cmds.join('\n'));
+  };
+
+  /**
+   * Converts the path to an SVG path data string
+   * @return {string}
+   */
+
+
+  Path.prototype.toSVG = function toSVG() {
+    var cmds = this.commands.map(function (c) {
+      var args = c.args.map(function (arg) {
+        return Math.round(arg * 100) / 100;
+      });
+      return '' + SVG_COMMANDS[c.command] + args.join(' ');
+    });
+
+    return cmds.join('');
+  };
+
+  /**
+   * Gets the "control box" of a path.
+   * This is like the bounding box, but it includes all points including
+   * control points of bezier segments and is much faster to compute than
+   * the real bounding box.
+   * @type {BBox}
+   */
+
+
+  /**
+   * Applies a mapping function to each point in the path.
+   * @param {function} fn
+   * @return {Path}
+   */
+  Path.prototype.mapPoints = function mapPoints(fn) {
+    var path = new Path();
+
+    for (var _iterator = this.commands, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var c = _ref;
+
+      var args = [];
+      for (var _i2 = 0; _i2 < c.args.length; _i2 += 2) {
+        var _fn = fn(c.args[_i2], c.args[_i2 + 1]),
+            x = _fn[0],
+            y = _fn[1];
+
+        args.push(x, y);
+      }
+
+      path[c.command].apply(path, args);
+    }
+
+    return path;
+  };
+
+  /**
+   * Transforms the path by the given matrix.
+   */
+
+
+  Path.prototype.transform = function transform(m0, m1, m2, m3, m4, m5) {
+    return this.mapPoints(function (x, y) {
+      x = m0 * x + m2 * y + m4;
+      y = m1 * x + m3 * y + m5;
+      return [x, y];
+    });
+  };
+
+  /**
+   * Translates the path by the given offset.
+   */
+
+
+  Path.prototype.translate = function translate(x, y) {
+    return this.transform(1, 0, 0, 1, x, y);
+  };
+
+  /**
+   * Rotates the path by the given angle (in radians).
+   */
+
+
+  Path.prototype.rotate = function rotate(angle) {
+    var cos = Math.cos(angle);
+    var sin = Math.sin(angle);
+    return this.transform(cos, sin, -sin, cos, 0, 0);
+  };
+
+  /**
+   * Scales the path.
+   */
+
+
+  Path.prototype.scale = function scale(scaleX) {
+    var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;
+
+    return this.transform(scaleX, 0, 0, scaleY, 0, 0);
+  };
+
+  _createClass(Path, [{
+    key: 'cbox',
+    get: function get() {
+      if (!this._cbox) {
+        var cbox = new BBox();
+        for (var _iterator2 = this.commands, _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+          var _ref2;
+
+          if (_isArray2) {
+            if (_i3 >= _iterator2.length) break;
+            _ref2 = _iterator2[_i3++];
+          } else {
+            _i3 = _iterator2.next();
+            if (_i3.done) break;
+            _ref2 = _i3.value;
+          }
+
+          var command = _ref2;
+
+          for (var _i4 = 0; _i4 < command.args.length; _i4 += 2) {
+            cbox.addPoint(command.args[_i4], command.args[_i4 + 1]);
+          }
+        }
+
+        this._cbox = _Object$freeze(cbox);
+      }
+
+      return this._cbox;
+    }
+
+    /**
+     * Gets the exact bounding box of the path by evaluating curve segments.
+     * Slower to compute than the control box, but more accurate.
+     * @type {BBox}
+     */
+
+  }, {
+    key: 'bbox',
+    get: function get() {
+      if (this._bbox) {
+        return this._bbox;
+      }
+
+      var bbox = new BBox();
+      var cx = 0,
+          cy = 0;
+
+      var f = function f(t) {
+        return Math.pow(1 - t, 3) * p0[i] + 3 * Math.pow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + Math.pow(t, 3) * p3[i];
+      };
+
+      for (var _iterator3 = this.commands, _isArray3 = Array.isArray(_iterator3), _i5 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i5 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i5++];
+        } else {
+          _i5 = _iterator3.next();
+          if (_i5.done) break;
+          _ref3 = _i5.value;
+        }
+
+        var c = _ref3;
+
+        switch (c.command) {
+          case 'moveTo':
+          case 'lineTo':
+            var _c$args = c.args,
+                x = _c$args[0],
+                y = _c$args[1];
+
+            bbox.addPoint(x, y);
+            cx = x;
+            cy = y;
+            break;
+
+          case 'quadraticCurveTo':
+          case 'bezierCurveTo':
+            if (c.command === 'quadraticCurveTo') {
+              // http://fontforge.org/bezier.html
+              var _c$args2 = c.args,
+                  qp1x = _c$args2[0],
+                  qp1y = _c$args2[1],
+                  p3x = _c$args2[2],
+                  p3y = _c$args2[3];
+
+              var cp1x = cx + 2 / 3 * (qp1x - cx); // CP1 = QP0 + 2/3 * (QP1-QP0)
+              var cp1y = cy + 2 / 3 * (qp1y - cy);
+              var cp2x = p3x + 2 / 3 * (qp1x - p3x); // CP2 = QP2 + 2/3 * (QP1-QP2)
+              var cp2y = p3y + 2 / 3 * (qp1y - p3y);
+            } else {
+              var _c$args3 = c.args,
+                  cp1x = _c$args3[0],
+                  cp1y = _c$args3[1],
+                  cp2x = _c$args3[2],
+                  cp2y = _c$args3[3],
+                  p3x = _c$args3[4],
+                  p3y = _c$args3[5];
+            }
+
+            // http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+            bbox.addPoint(p3x, p3y);
+
+            var p0 = [cx, cy];
+            var p1 = [cp1x, cp1y];
+            var p2 = [cp2x, cp2y];
+            var p3 = [p3x, p3y];
+
+            for (var i = 0; i <= 1; i++) {
+              var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];
+              var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];
+              c = 3 * p1[i] - 3 * p0[i];
+
+              if (a === 0) {
+                if (b === 0) {
+                  continue;
+                }
+
+                var t = -c / b;
+                if (0 < t && t < 1) {
+                  if (i === 0) {
+                    bbox.addPoint(f(t), bbox.maxY);
+                  } else if (i === 1) {
+                    bbox.addPoint(bbox.maxX, f(t));
+                  }
+                }
+
+                continue;
+              }
+
+              var b2ac = Math.pow(b, 2) - 4 * c * a;
+              if (b2ac < 0) {
+                continue;
+              }
+
+              var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);
+              if (0 < t1 && t1 < 1) {
+                if (i === 0) {
+                  bbox.addPoint(f(t1), bbox.maxY);
+                } else if (i === 1) {
+                  bbox.addPoint(bbox.maxX, f(t1));
+                }
+              }
+
+              var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);
+              if (0 < t2 && t2 < 1) {
+                if (i === 0) {
+                  bbox.addPoint(f(t2), bbox.maxY);
+                } else if (i === 1) {
+                  bbox.addPoint(bbox.maxX, f(t2));
+                }
+              }
+            }
+
+            cx = p3x;
+            cy = p3y;
+            break;
+        }
+      }
+
+      return this._bbox = _Object$freeze(bbox);
+    }
+  }]);
+
+  return Path;
+}();
+
+var _arr = ['moveTo', 'lineTo', 'quadraticCurveTo', 'bezierCurveTo', 'closePath'];
+
+var _loop = function _loop() {
+  var command = _arr[_i6];
+  Path.prototype[command] = function () {
+    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+      args[_key] = arguments[_key];
+    }
+
+    this._bbox = this._cbox = null;
+    this.commands.push({
+      command: command,
+      args: args
+    });
+
+    return this;
+  };
+};
+
+for (var _i6 = 0; _i6 < _arr.length; _i6++) {
+  _loop();
+}
+
+var StandardNames = ['.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];
+
+var _class$8;
+function _applyDecoratedDescriptor$4(target, property, decorators, descriptor, context) {
+  var desc = {};
+  Object['ke' + 'ys'](descriptor).forEach(function (key) {
+    desc[key] = descriptor[key];
+  });
+  desc.enumerable = !!desc.enumerable;
+  desc.configurable = !!desc.configurable;
+
+  if ('value' in desc || desc.initializer) {
+    desc.writable = true;
+  }
+
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+    return decorator(target, property, desc) || desc;
+  }, desc);
+
+  if (context && desc.initializer !== void 0) {
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+    desc.initializer = undefined;
+  }
+
+  if (desc.initializer === void 0) {
+    Object['define' + 'Property'](target, property, desc);
+    desc = null;
+  }
+
+  return desc;
+}
+
+/**
+ * Glyph objects represent a glyph in the font. They have various properties for accessing metrics and
+ * the actual vector path the glyph represents, and methods for rendering the glyph to a graphics context.
+ *
+ * You do not create glyph objects directly. They are created by various methods on the font object.
+ * There are several subclasses of the base Glyph class internally that may be returned depending
+ * on the font format, but they all inherit from this class.
+ */
+var Glyph = (_class$8 = function () {
+  function Glyph(id, codePoints, font) {
+    _classCallCheck(this, Glyph);
+
+    /**
+     * The glyph id in the font
+     * @type {number}
+     */
+    this.id = id;
+
+    /**
+     * An array of unicode code points that are represented by this glyph.
+     * There can be multiple code points in the case of ligatures and other glyphs
+     * that represent multiple visual characters.
+     * @type {number[]}
+     */
+    this.codePoints = codePoints;
+    this._font = font;
+
+    // TODO: get this info from GDEF if available
+    this.isMark = this.codePoints.every(unicode.isMark);
+    this.isLigature = this.codePoints.length > 1;
+  }
+
+  Glyph.prototype._getPath = function _getPath() {
+    return new Path();
+  };
+
+  Glyph.prototype._getCBox = function _getCBox() {
+    return this.path.cbox;
+  };
+
+  Glyph.prototype._getBBox = function _getBBox() {
+    return this.path.bbox;
+  };
+
+  Glyph.prototype._getTableMetrics = function _getTableMetrics(table) {
+    if (this.id < table.metrics.length) {
+      return table.metrics.get(this.id);
+    }
+
+    var metric = table.metrics.get(table.metrics.length - 1);
+    var res = {
+      advance: metric ? metric.advance : 0,
+      bearing: table.bearings.get(this.id - table.metrics.length) || 0
+    };
+
+    return res;
+  };
+
+  Glyph.prototype._getMetrics = function _getMetrics(cbox) {
+    if (this._metrics) {
+      return this._metrics;
+    }
+
+    var _getTableMetrics2 = this._getTableMetrics(this._font.hmtx),
+        advanceWidth = _getTableMetrics2.advance,
+        leftBearing = _getTableMetrics2.bearing;
+
+    // For vertical metrics, use vmtx if available, or fall back to global data from OS/2 or hhea
+
+
+    if (this._font.vmtx) {
+      var _getTableMetrics3 = this._getTableMetrics(this._font.vmtx),
+          advanceHeight = _getTableMetrics3.advance,
+          topBearing = _getTableMetrics3.bearing;
+    } else {
+      var os2 = void 0;
+      if (typeof cbox === 'undefined' || cbox === null) {
+        cbox = this.cbox;
+      }
+
+      if ((os2 = this._font['OS/2']) && os2.version > 0) {
+        var advanceHeight = Math.abs(os2.typoAscender - os2.typoDescender);
+        var topBearing = os2.typoAscender - cbox.maxY;
+      } else {
+        var hhea = this._font.hhea;
+
+        var advanceHeight = Math.abs(hhea.ascent - hhea.descent);
+        var topBearing = hhea.ascent - cbox.maxY;
+      }
+    }
+
+    if (this._font._variationProcessor && this._font.HVAR) {
+      advanceWidth += this._font._variationProcessor.getAdvanceAdjustment(this.id, this._font.HVAR);
+    }
+
+    return this._metrics = { advanceWidth: advanceWidth, advanceHeight: advanceHeight, leftBearing: leftBearing, topBearing: topBearing };
+  };
+
+  /**
+   * The glyph’s control box.
+   * This is often the same as the bounding box, but is faster to compute.
+   * Because of the way bezier curves are defined, some of the control points
+   * can be outside of the bounding box. Where `bbox` takes this into account,
+   * `cbox` does not. Thus, cbox is less accurate, but faster to compute.
+   * See [here](http://www.freetype.org/freetype2/docs/glyphs/glyphs-6.html#section-2)
+   * for a more detailed description.
+   *
+   * @type {BBox}
+   */
+
+
+  /**
+   * Returns a path scaled to the given font size.
+   * @param {number} size
+   * @return {Path}
+   */
+  Glyph.prototype.getScaledPath = function getScaledPath(size) {
+    var scale = 1 / this._font.unitsPerEm * size;
+    return this.path.scale(scale);
+  };
+
+  /**
+   * The glyph's advance width.
+   * @type {number}
+   */
+
+
+  Glyph.prototype._getName = function _getName() {
+    var post = this._font.post;
+
+    if (!post) {
+      return null;
+    }
+
+    switch (post.version) {
+      case 1:
+        return StandardNames[this.id];
+
+      case 2:
+        var id = post.glyphNameIndex[this.id];
+        if (id < StandardNames.length) {
+          return StandardNames[id];
+        }
+
+        return post.names[id - StandardNames.length];
+
+      case 2.5:
+        return StandardNames[this.id + post.offsets[this.id]];
+
+      case 4:
+        return String.fromCharCode(post.map[this.id]);
+    }
+  };
+
+  /**
+   * The glyph's name
+   * @type {string}
+   */
+
+
+  /**
+   * Renders the glyph to the given graphics context, at the specified font size.
+   * @param {CanvasRenderingContext2d} ctx
+   * @param {number} size
+   */
+  Glyph.prototype.render = function render(ctx, size) {
+    ctx.save();
+
+    var scale = 1 / this._font.head.unitsPerEm * size;
+    ctx.scale(scale, scale);
+
+    var fn = this.path.toFunction();
+    fn(ctx);
+    ctx.fill();
+
+    ctx.restore();
+  };
+
+  _createClass(Glyph, [{
+    key: 'cbox',
+    get: function get() {
+      return this._getCBox();
+    }
+
+    /**
+     * The glyph’s bounding box, i.e. the rectangle that encloses the
+     * glyph outline as tightly as possible.
+     * @type {BBox}
+     */
+
+  }, {
+    key: 'bbox',
+    get: function get() {
+      return this._getBBox();
+    }
+
+    /**
+     * A vector Path object representing the glyph outline.
+     * @type {Path}
+     */
+
+  }, {
+    key: 'path',
+    get: function get() {
+      // Cache the path so we only decode it once
+      // Decoding is actually performed by subclasses
+      return this._getPath();
+    }
+  }, {
+    key: 'advanceWidth',
+    get: function get() {
+      return this._getMetrics().advanceWidth;
+    }
+
+    /**
+     * The glyph's advance height.
+     * @type {number}
+     */
+
+  }, {
+    key: 'advanceHeight',
+    get: function get() {
+      return this._getMetrics().advanceHeight;
+    }
+  }, {
+    key: 'ligatureCaretPositions',
+    get: function get() {}
+  }, {
+    key: 'name',
+    get: function get() {
+      return this._getName();
+    }
+  }]);
+
+  return Glyph;
+}(), (_applyDecoratedDescriptor$4(_class$8.prototype, 'cbox', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'cbox'), _class$8.prototype), _applyDecoratedDescriptor$4(_class$8.prototype, 'bbox', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'bbox'), _class$8.prototype), _applyDecoratedDescriptor$4(_class$8.prototype, 'path', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'path'), _class$8.prototype), _applyDecoratedDescriptor$4(_class$8.prototype, 'advanceWidth', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'advanceWidth'), _class$8.prototype), _applyDecoratedDescriptor$4(_class$8.prototype, 'advanceHeight', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'advanceHeight'), _class$8.prototype), _applyDecoratedDescriptor$4(_class$8.prototype, 'name', [cache], _Object$getOwnPropertyDescriptor(_class$8.prototype, 'name'), _class$8.prototype)), _class$8);
+
+// The header for both simple and composite glyphs
+var GlyfHeader = new r.Struct({
+  numberOfContours: r.int16, // if negative, this is a composite glyph
+  xMin: r.int16,
+  yMin: r.int16,
+  xMax: r.int16,
+  yMax: r.int16
+});
+
+// Flags for simple glyphs
+var ON_CURVE = 1 << 0;
+var X_SHORT_VECTOR = 1 << 1;
+var Y_SHORT_VECTOR = 1 << 2;
+var REPEAT = 1 << 3;
+var SAME_X = 1 << 4;
+var SAME_Y = 1 << 5;
+
+// Flags for composite glyphs
+var ARG_1_AND_2_ARE_WORDS = 1 << 0;
+var WE_HAVE_A_SCALE = 1 << 3;
+var MORE_COMPONENTS = 1 << 5;
+var WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;
+var WE_HAVE_A_TWO_BY_TWO = 1 << 7;
+var WE_HAVE_INSTRUCTIONS = 1 << 8;
+// Represents a point in a simple glyph
+var Point = function () {
+  function Point(onCurve, endContour) {
+    var x = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+    var y = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
+
+    _classCallCheck(this, Point);
+
+    this.onCurve = onCurve;
+    this.endContour = endContour;
+    this.x = x;
+    this.y = y;
+  }
+
+  Point.prototype.copy = function copy() {
+    return new Point(this.onCurve, this.endContour, this.x, this.y);
+  };
+
+  return Point;
+}();
+
+// Represents a component in a composite glyph
+
+var Component = function Component(glyphID, dx, dy) {
+  _classCallCheck(this, Component);
+
+  this.glyphID = glyphID;
+  this.dx = dx;
+  this.dy = dy;
+  this.pos = 0;
+  this.scaleX = this.scaleY = 1;
+  this.scale01 = this.scale10 = 0;
+};
+
+/**
+ * Represents a TrueType glyph.
+ */
+
+
+var TTFGlyph = function (_Glyph) {
+  _inherits(TTFGlyph, _Glyph);
+
+  function TTFGlyph() {
+    _classCallCheck(this, TTFGlyph);
+
+    return _possibleConstructorReturn(this, _Glyph.apply(this, arguments));
+  }
+
+  // Parses just the glyph header and returns the bounding box
+  TTFGlyph.prototype._getCBox = function _getCBox(internal) {
+    // We need to decode the glyph if variation processing is requested,
+    // so it's easier just to recompute the path's cbox after decoding.
+    if (this._font._variationProcessor && !internal) {
+      return this.path.cbox;
+    }
+
+    var stream = this._font._getTableStream('glyf');
+    stream.pos += this._font.loca.offsets[this.id];
+    var glyph = GlyfHeader.decode(stream);
+
+    var cbox = new BBox(glyph.xMin, glyph.yMin, glyph.xMax, glyph.yMax);
+    return _Object$freeze(cbox);
+  };
+
+  // Parses a single glyph coordinate
+
+
+  TTFGlyph.prototype._parseGlyphCoord = function _parseGlyphCoord(stream, prev, short, same) {
+    if (short) {
+      var val = stream.readUInt8();
+      if (!same) {
+        val = -val;
+      }
+
+      val += prev;
+    } else {
+      if (same) {
+        var val = prev;
+      } else {
+        var val = prev + stream.readInt16BE();
+      }
+    }
+
+    return val;
+  };
+
+  // Decodes the glyph data into points for simple glyphs,
+  // or components for composite glyphs
+
+
+  TTFGlyph.prototype._decode = function _decode() {
+    var glyfPos = this._font.loca.offsets[this.id];
+    var nextPos = this._font.loca.offsets[this.id + 1];
+
+    // Nothing to do if there is no data for this glyph
+    if (glyfPos === nextPos) {
+      return null;
+    }
+
+    var stream = this._font._getTableStream('glyf');
+    stream.pos += glyfPos;
+    var startPos = stream.pos;
+
+    var glyph = GlyfHeader.decode(stream);
+
+    if (glyph.numberOfContours > 0) {
+      this._decodeSimple(glyph, stream);
+    } else if (glyph.numberOfContours < 0) {
+      this._decodeComposite(glyph, stream, startPos);
+    }
+
+    return glyph;
+  };
+
+  TTFGlyph.prototype._decodeSimple = function _decodeSimple(glyph, stream) {
+    // this is a simple glyph
+    glyph.points = [];
+
+    var endPtsOfContours = new r.Array(r.uint16, glyph.numberOfContours).decode(stream);
+    glyph.instructions = new r.Array(r.uint8, r.uint16).decode(stream);
+
+    var flags = [];
+    var numCoords = endPtsOfContours[endPtsOfContours.length - 1] + 1;
+
+    while (flags.length < numCoords) {
+      var flag = stream.readUInt8();
+      flags.push(flag);
+
+      // check for repeat flag
+      if (flag & REPEAT) {
+        var count = stream.readUInt8();
+        for (var j = 0; j < count; j++) {
+          flags.push(flag);
+        }
+      }
+    }
+
+    for (var i = 0; i < flags.length; i++) {
+      var flag = flags[i];
+      var point = new Point(!!(flag & ON_CURVE), endPtsOfContours.indexOf(i) >= 0, 0, 0);
+      glyph.points.push(point);
+    }
+
+    var px = 0;
+    for (var i = 0; i < flags.length; i++) {
+      var flag = flags[i];
+      glyph.points[i].x = px = this._parseGlyphCoord(stream, px, flag & X_SHORT_VECTOR, flag & SAME_X);
+    }
+
+    var py = 0;
+    for (var i = 0; i < flags.length; i++) {
+      var flag = flags[i];
+      glyph.points[i].y = py = this._parseGlyphCoord(stream, py, flag & Y_SHORT_VECTOR, flag & SAME_Y);
+    }
+
+    if (this._font._variationProcessor) {
+      var points = glyph.points.slice();
+      points.push.apply(points, this._getPhantomPoints(glyph));
+
+      this._font._variationProcessor.transformPoints(this.id, points);
+      glyph.phantomPoints = points.slice(-4);
+    }
+
+    return;
+  };
+
+  TTFGlyph.prototype._decodeComposite = function _decodeComposite(glyph, stream) {
+    var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+
+    // this is a composite glyph
+    glyph.components = [];
+    var haveInstructions = false;
+    var flags = MORE_COMPONENTS;
+
+    while (flags & MORE_COMPONENTS) {
+      flags = stream.readUInt16BE();
+      var gPos = stream.pos - offset;
+      var glyphID = stream.readUInt16BE();
+      if (!haveInstructions) {
+        haveInstructions = (flags & WE_HAVE_INSTRUCTIONS) !== 0;
+      }
+
+      if (flags & ARG_1_AND_2_ARE_WORDS) {
+        var dx = stream.readInt16BE();
+        var dy = stream.readInt16BE();
+      } else {
+        var dx = stream.readInt8();
+        var dy = stream.readInt8();
+      }
+
+      var component = new Component(glyphID, dx, dy);
+      component.pos = gPos;
+
+      if (flags & WE_HAVE_A_SCALE) {
+        // fixed number with 14 bits of fraction
+        component.scaleX = component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+      } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {
+        component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+        component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+      } else if (flags & WE_HAVE_A_TWO_BY_TWO) {
+        component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+        component.scale01 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+        component.scale10 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+        component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
+      }
+
+      glyph.components.push(component);
+    }
+
+    if (this._font._variationProcessor) {
+      var points = [];
+      for (var j = 0; j < glyph.components.length; j++) {
+        var component = glyph.components[j];
+        points.push(new Point(true, true, component.dx, component.dy));
+      }
+
+      points.push.apply(points, this._getPhantomPoints(glyph));
+
+      this._font._variationProcessor.transformPoints(this.id, points);
+      glyph.phantomPoints = points.splice(-4, 4);
+
+      for (var i = 0; i < points.length; i++) {
+        var point = points[i];
+        glyph.components[i].dx = point.x;
+        glyph.components[i].dy = point.y;
+      }
+    }
+
+    return haveInstructions;
+  };
+
+  TTFGlyph.prototype._getPhantomPoints = function _getPhantomPoints(glyph) {
+    var cbox = this._getCBox(true);
+    if (this._metrics == null) {
+      this._metrics = Glyph.prototype._getMetrics.call(this, cbox);
+    }
+
+    var _metrics = this._metrics,
+        advanceWidth = _metrics.advanceWidth,
+        advanceHeight = _metrics.advanceHeight,
+        leftBearing = _metrics.leftBearing,
+        topBearing = _metrics.topBearing;
+
+
+    return [new Point(false, true, glyph.xMin - leftBearing, 0), new Point(false, true, glyph.xMin - leftBearing + advanceWidth, 0), new Point(false, true, 0, glyph.yMax + topBearing), new Point(false, true, 0, glyph.yMax + topBearing + advanceHeight)];
+  };
+
+  // Decodes font data, resolves composite glyphs, and returns an array of contours
+
+
+  TTFGlyph.prototype._getContours = function _getContours() {
+    var glyph = this._decode();
+    if (!glyph) {
+      return [];
+    }
+
+    var points = [];
+
+    if (glyph.numberOfContours < 0) {
+      // resolve composite glyphs
+      for (var _iterator = glyph.components, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var component = _ref;
+
+        var _contours = this._font.getGlyph(component.glyphID)._getContours();
+        for (var i = 0; i < _contours.length; i++) {
+          var contour = _contours[i];
+          for (var j = 0; j < contour.length; j++) {
+            var _point = contour[j];
+            var x = _point.x * component.scaleX + _point.y * component.scale01 + component.dx;
+            var y = _point.y * component.scaleY + _point.x * component.scale10 + component.dy;
+            points.push(new Point(_point.onCurve, _point.endContour, x, y));
+          }
+        }
+      }
+    } else {
+      points = glyph.points || [];
+    }
+
+    // Recompute and cache metrics if we performed variation processing, and don't have an HVAR table
+    if (glyph.phantomPoints && !this._font.directory.tables.HVAR) {
+      this._metrics.advanceWidth = glyph.phantomPoints[1].x - glyph.phantomPoints[0].x;
+      this._metrics.advanceHeight = glyph.phantomPoints[3].y - glyph.phantomPoints[2].y;
+      this._metrics.leftBearing = glyph.xMin - glyph.phantomPoints[0].x;
+      this._metrics.topBearing = glyph.phantomPoints[2].y - glyph.yMax;
+    }
+
+    var contours = [];
+    var cur = [];
+    for (var k = 0; k < points.length; k++) {
+      var point = points[k];
+      cur.push(point);
+      if (point.endContour) {
+        contours.push(cur);
+        cur = [];
+      }
+    }
+
+    return contours;
+  };
+
+  TTFGlyph.prototype._getMetrics = function _getMetrics() {
+    if (this._metrics) {
+      return this._metrics;
+    }
+
+    var cbox = this._getCBox(true);
+    _Glyph.prototype._getMetrics.call(this, cbox);
+
+    if (this._font._variationProcessor && !this._font.HVAR) {
+      // No HVAR table, decode the glyph. This triggers recomputation of metrics.
+      this.path;
+    }
+
+    return this._metrics;
+  };
+
+  // Converts contours to a Path object that can be rendered
+
+
+  TTFGlyph.prototype._getPath = function _getPath() {
+    var contours = this._getContours();
+    var path = new Path();
+
+    for (var i = 0; i < contours.length; i++) {
+      var contour = contours[i];
+      var firstPt = contour[0];
+      var lastPt = contour[contour.length - 1];
+      var start = 0;
+
+      if (firstPt.onCurve) {
+        // The first point will be consumed by the moveTo command, so skip in the loop
+        var curvePt = null;
+        start = 1;
+      } else {
+        if (lastPt.onCurve) {
+          // Start at the last point if the first point is off curve and the last point is on curve
+          firstPt = lastPt;
+        } else {
+          // Start at the middle if both the first and last points are off curve
+          firstPt = new Point(false, false, (firstPt.x + lastPt.x) / 2, (firstPt.y + lastPt.y) / 2);
+        }
+
+        var curvePt = firstPt;
+      }
+
+      path.moveTo(firstPt.x, firstPt.y);
+
+      for (var j = start; j < contour.length; j++) {
+        var pt = contour[j];
+        var prevPt = j === 0 ? firstPt : contour[j - 1];
+
+        if (prevPt.onCurve && pt.onCurve) {
+          path.lineTo(pt.x, pt.y);
+        } else if (prevPt.onCurve && !pt.onCurve) {
+          var curvePt = pt;
+        } else if (!prevPt.onCurve && !pt.onCurve) {
+          var midX = (prevPt.x + pt.x) / 2;
+          var midY = (prevPt.y + pt.y) / 2;
+          path.quadraticCurveTo(prevPt.x, prevPt.y, midX, midY);
+          var curvePt = pt;
+        } else if (!prevPt.onCurve && pt.onCurve) {
+          path.quadraticCurveTo(curvePt.x, curvePt.y, pt.x, pt.y);
+          var curvePt = null;
+        } else {
+          throw new Error("Unknown TTF path state");
+        }
+      }
+
+      // Connect the first and last points
+      if (curvePt) {
+        path.quadraticCurveTo(curvePt.x, curvePt.y, firstPt.x, firstPt.y);
+      }
+
+      path.closePath();
+    }
+
+    return path;
+  };
+
+  return TTFGlyph;
+}(Glyph);
+
+/**
+ * Represents an OpenType PostScript glyph, in the Compact Font Format.
+ */
+
+var CFFGlyph = function (_Glyph) {
+  _inherits(CFFGlyph, _Glyph);
+
+  function CFFGlyph() {
+    _classCallCheck(this, CFFGlyph);
+
+    return _possibleConstructorReturn(this, _Glyph.apply(this, arguments));
+  }
+
+  CFFGlyph.prototype._getName = function _getName() {
+    if (this._font.CFF2) {
+      return _Glyph.prototype._getName.call(this);
+    }
+
+    return this._font['CFF '].getGlyphName(this.id);
+  };
+
+  CFFGlyph.prototype.bias = function bias(s) {
+    if (s.length < 1240) {
+      return 107;
+    } else if (s.length < 33900) {
+      return 1131;
+    } else {
+      return 32768;
+    }
+  };
+
+  CFFGlyph.prototype._getPath = function _getPath() {
+    var stream = this._font.stream;
+    var pos = stream.pos;
+
+
+    var cff = this._font.CFF2 || this._font['CFF '];
+    var str = cff.topDict.CharStrings[this.id];
+    var end = str.offset + str.length;
+    stream.pos = str.offset;
+
+    var path = new Path();
+    var stack = [];
+    var trans = [];
+
+    var width = null;
+    var nStems = 0;
+    var x = 0,
+        y = 0;
+    var usedGsubrs = void 0;
+    var usedSubrs = void 0;
+    var open = false;
+
+    this._usedGsubrs = usedGsubrs = {};
+    this._usedSubrs = usedSubrs = {};
+
+    var gsubrs = cff.globalSubrIndex || [];
+    var gsubrsBias = this.bias(gsubrs);
+
+    var privateDict = cff.privateDictForGlyph(this.id);
+    var subrs = privateDict.Subrs || [];
+    var subrsBias = this.bias(subrs);
+
+    var vstore = cff.topDict.vstore && cff.topDict.vstore.itemVariationStore;
+    var vsindex = privateDict.vsindex;
+    var variationProcessor = this._font._variationProcessor;
+
+    function checkWidth() {
+      if (width == null) {
+        width = stack.shift() + privateDict.nominalWidthX;
+      }
+    }
+
+    function parseStems() {
+      if (stack.length % 2 !== 0) {
+        checkWidth();
+      }
+
+      nStems += stack.length >> 1;
+      return stack.length = 0;
+    }
+
+    function moveTo(x, y) {
+      if (open) {
+        path.closePath();
+      }
+
+      path.moveTo(x, y);
+      open = true;
+    }
+
+    var parse = function parse() {
+      while (stream.pos < end) {
+        var op = stream.readUInt8();
+        if (op < 32) {
+          switch (op) {
+            case 1: // hstem
+            case 3: // vstem
+            case 18: // hstemhm
+            case 23:
+              // vstemhm
+              parseStems();
+              break;
+
+            case 4:
+              // vmoveto
+              if (stack.length > 1) {
+                checkWidth();
+              }
+
+              y += stack.shift();
+              moveTo(x, y);
+              break;
+
+            case 5:
+              // rlineto
+              while (stack.length >= 2) {
+                x += stack.shift();
+                y += stack.shift();
+                path.lineTo(x, y);
+              }
+              break;
+
+            case 6: // hlineto
+            case 7:
+              // vlineto
+              var phase = op === 6;
+              while (stack.length >= 1) {
+                if (phase) {
+                  x += stack.shift();
+                } else {
+                  y += stack.shift();
+                }
+
+                path.lineTo(x, y);
+                phase = !phase;
+              }
+              break;
+
+            case 8:
+              // rrcurveto
+              while (stack.length > 0) {
+                var c1x = x + stack.shift();
+                var c1y = y + stack.shift();
+                var c2x = c1x + stack.shift();
+                var c2y = c1y + stack.shift();
+                x = c2x + stack.shift();
+                y = c2y + stack.shift();
+                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+              }
+              break;
+
+            case 10:
+              // callsubr
+              var index = stack.pop() + subrsBias;
+              var subr = subrs[index];
+              if (subr) {
+                usedSubrs[index] = true;
+                var p = stream.pos;
+                var e = end;
+                stream.pos = subr.offset;
+                end = subr.offset + subr.length;
+                parse();
+                stream.pos = p;
+                end = e;
+              }
+              break;
+
+            case 11:
+              // return
+              if (cff.version >= 2) {
+                break;
+              }
+              return;
+
+            case 14:
+              // endchar
+              if (cff.version >= 2) {
+                break;
+              }
+
+              if (stack.length > 0) {
+                checkWidth();
+              }
+
+              if (open) {
+                path.closePath();
+                open = false;
+              }
+              break;
+
+            case 15:
+              {
+                // vsindex
+                if (cff.version < 2) {
+                  throw new Error('vsindex operator not supported in CFF v1');
+                }
+
+                vsindex = stack.pop();
+                break;
+              }
+
+            case 16:
+              {
+                // blend
+                if (cff.version < 2) {
+                  throw new Error('blend operator not supported in CFF v1');
+                }
+
+                if (!variationProcessor) {
+                  throw new Error('blend operator in non-variation font');
+                }
+
+                var blendVector = variationProcessor.getBlendVector(vstore, vsindex);
+                var numBlends = stack.pop();
+                var numOperands = numBlends * blendVector.length;
+                var delta = stack.length - numOperands;
+                var base = delta - numBlends;
+
+                for (var i = 0; i < numBlends; i++) {
+                  var sum = stack[base + i];
+                  for (var j = 0; j < blendVector.length; j++) {
+                    sum += blendVector[j] * stack[delta++];
+                  }
+
+                  stack[base + i] = sum;
+                }
+
+                while (numOperands--) {
+                  stack.pop();
+                }
+
+                break;
+              }
+
+            case 19: // hintmask
+            case 20:
+              // cntrmask
+              parseStems();
+              stream.pos += nStems + 7 >> 3;
+              break;
+
+            case 21:
+              // rmoveto
+              if (stack.length > 2) {
+                checkWidth();
+              }
+
+              x += stack.shift();
+              y += stack.shift();
+              moveTo(x, y);
+              break;
+
+            case 22:
+              // hmoveto
+              if (stack.length > 1) {
+                checkWidth();
+              }
+
+              x += stack.shift();
+              moveTo(x, y);
+              break;
+
+            case 24:
+              // rcurveline
+              while (stack.length >= 8) {
+                var c1x = x + stack.shift();
+                var c1y = y + stack.shift();
+                var c2x = c1x + stack.shift();
+                var c2y = c1y + stack.shift();
+                x = c2x + stack.shift();
+                y = c2y + stack.shift();
+                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+              }
+
+              x += stack.shift();
+              y += stack.shift();
+              path.lineTo(x, y);
+              break;
+
+            case 25:
+              // rlinecurve
+              while (stack.length >= 8) {
+                x += stack.shift();
+                y += stack.shift();
+                path.lineTo(x, y);
+              }
+
+              var c1x = x + stack.shift();
+              var c1y = y + stack.shift();
+              var c2x = c1x + stack.shift();
+              var c2y = c1y + stack.shift();
+              x = c2x + stack.shift();
+              y = c2y + stack.shift();
+              path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+              break;
+
+            case 26:
+              // vvcurveto
+              if (stack.length % 2) {
+                x += stack.shift();
+              }
+
+              while (stack.length >= 4) {
+                c1x = x;
+                c1y = y + stack.shift();
+                c2x = c1x + stack.shift();
+                c2y = c1y + stack.shift();
+                x = c2x;
+                y = c2y + stack.shift();
+                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+              }
+              break;
+
+            case 27:
+              // hhcurveto
+              if (stack.length % 2) {
+                y += stack.shift();
+              }
+
+              while (stack.length >= 4) {
+                c1x = x + stack.shift();
+                c1y = y;
+                c2x = c1x + stack.shift();
+                c2y = c1y + stack.shift();
+                x = c2x + stack.shift();
+                y = c2y;
+                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+              }
+              break;
+
+            case 28:
+              // shortint
+              stack.push(stream.readInt16BE());
+              break;
+
+            case 29:
+              // callgsubr
+              index = stack.pop() + gsubrsBias;
+              subr = gsubrs[index];
+              if (subr) {
+                usedGsubrs[index] = true;
+                var p = stream.pos;
+                var e = end;
+                stream.pos = subr.offset;
+                end = subr.offset + subr.length;
+                parse();
+                stream.pos = p;
+                end = e;
+              }
+              break;
+
+            case 30: // vhcurveto
+            case 31:
+              // hvcurveto
+              phase = op === 31;
+              while (stack.length >= 4) {
+                if (phase) {
+                  c1x = x + stack.shift();
+                  c1y = y;
+                  c2x = c1x + stack.shift();
+                  c2y = c1y + stack.shift();
+                  y = c2y + stack.shift();
+                  x = c2x + (stack.length === 1 ? stack.shift() : 0);
+                } else {
+                  c1x = x;
+                  c1y = y + stack.shift();
+                  c2x = c1x + stack.shift();
+                  c2y = c1y + stack.shift();
+                  x = c2x + stack.shift();
+                  y = c2y + (stack.length === 1 ? stack.shift() : 0);
+                }
+
+                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
+                phase = !phase;
+              }
+              break;
+
+            case 12:
+              op = stream.readUInt8();
+              switch (op) {
+                case 3:
+                  // and
+                  var a = stack.pop();
+                  var b = stack.pop();
+                  stack.push(a && b ? 1 : 0);
+                  break;
+
+                case 4:
+                  // or
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a || b ? 1 : 0);
+                  break;
+
+                case 5:
+                  // not
+                  a = stack.pop();
+                  stack.push(a ? 0 : 1);
+                  break;
+
+                case 9:
+                  // abs
+                  a = stack.pop();
+                  stack.push(Math.abs(a));
+                  break;
+
+                case 10:
+                  // add
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a + b);
+                  break;
+
+                case 11:
+                  // sub
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a - b);
+                  break;
+
+                case 12:
+                  // div
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a / b);
+                  break;
+
+                case 14:
+                  // neg
+                  a = stack.pop();
+                  stack.push(-a);
+                  break;
+
+                case 15:
+                  // eq
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a === b ? 1 : 0);
+                  break;
+
+                case 18:
+                  // drop
+                  stack.pop();
+                  break;
+
+                case 20:
+                  // put
+                  var val = stack.pop();
+                  var idx = stack.pop();
+                  trans[idx] = val;
+                  break;
+
+                case 21:
+                  // get
+                  idx = stack.pop();
+                  stack.push(trans[idx] || 0);
+                  break;
+
+                case 22:
+                  // ifelse
+                  var s1 = stack.pop();
+                  var s2 = stack.pop();
+                  var v1 = stack.pop();
+                  var v2 = stack.pop();
+                  stack.push(v1 <= v2 ? s1 : s2);
+                  break;
+
+                case 23:
+                  // random
+                  stack.push(Math.random());
+                  break;
+
+                case 24:
+                  // mul
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(a * b);
+                  break;
+
+                case 26:
+                  // sqrt
+                  a = stack.pop();
+                  stack.push(Math.sqrt(a));
+                  break;
+
+                case 27:
+                  // dup
+                  a = stack.pop();
+                  stack.push(a, a);
+                  break;
+
+                case 28:
+                  // exch
+                  a = stack.pop();
+                  b = stack.pop();
+                  stack.push(b, a);
+                  break;
+
+                case 29:
+                  // index
+                  idx = stack.pop();
+                  if (idx < 0) {
+                    idx = 0;
+                  } else if (idx > stack.length - 1) {
+                    idx = stack.length - 1;
+                  }
+
+                  stack.push(stack[idx]);
+                  break;
+
+                case 30:
+                  // roll
+                  var n = stack.pop();
+                  var _j = stack.pop();
+
+                  if (_j >= 0) {
+                    while (_j > 0) {
+                      var t = stack[n - 1];
+                      for (var _i = n - 2; _i >= 0; _i--) {
+                        stack[_i + 1] = stack[_i];
+                      }
+
+                      stack[0] = t;
+                      _j--;
+                    }
+                  } else {
+                    while (_j < 0) {
+                      var t = stack[0];
+                      for (var _i2 = 0; _i2 <= n; _i2++) {
+                        stack[_i2] = stack[_i2 + 1];
+                      }
+
+                      stack[n - 1] = t;
+                      _j++;
+                    }
+                  }
+                  break;
+
+                case 34:
+                  // hflex
+                  c1x = x + stack.shift();
+                  c1y = y;
+                  c2x = c1x + stack.shift();
+                  c2y = c1y + stack.shift();
+                  var c3x = c2x + stack.shift();
+                  var c3y = c2y;
+                  var c4x = c3x + stack.shift();
+                  var c4y = c3y;
+                  var c5x = c4x + stack.shift();
+                  var c5y = c4y;
+                  var c6x = c5x + stack.shift();
+                  var c6y = c5y;
+                  x = c6x;
+                  y = c6y;
+
+                  path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);
+                  path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);
+                  break;
+
+                case 35:
+                  // flex
+                  var pts = [];
+
+                  for (var _i3 = 0; _i3 <= 5; _i3++) {
+                    x += stack.shift();
+                    y += stack.shift();
+                    pts.push(x, y);
+                  }
+
+                  path.bezierCurveTo.apply(path, pts.slice(0, 6));
+                  path.bezierCurveTo.apply(path, pts.slice(6));
+                  stack.shift(); // fd
+                  break;
+
+                case 36:
+                  // hflex1
+                  c1x = x + stack.shift();
+                  c1y = y + stack.shift();
+                  c2x = c1x + stack.shift();
+                  c2y = c1y + stack.shift();
+                  c3x = c2x + stack.shift();
+                  c3y = c2y;
+                  c4x = c3x + stack.shift();
+                  c4y = c3y;
+                  c5x = c4x + stack.shift();
+                  c5y = c4y + stack.shift();
+                  c6x = c5x + stack.shift();
+                  c6y = c5y;
+                  x = c6x;
+                  y = c6y;
+
+                  path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);
+                  path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);
+                  break;
+
+                case 37:
+                  // flex1
+                  var startx = x;
+                  var starty = y;
+
+                  pts = [];
+                  for (var _i4 = 0; _i4 <= 4; _i4++) {
+                    x += stack.shift();
+                    y += stack.shift();
+                    pts.push(x, y);
+                  }
+
+                  if (Math.abs(x - startx) > Math.abs(y - starty)) {
+                    // horizontal
+                    x += stack.shift();
+                    y = starty;
+                  } else {
+                    x = startx;
+                    y += stack.shift();
+                  }
+
+                  pts.push(x, y);
+                  path.bezierCurveTo.apply(path, pts.slice(0, 6));
+                  path.bezierCurveTo.apply(path, pts.slice(6));
+                  break;
+
+                default:
+                  throw new Error('Unknown op: 12 ' + op);
+              }
+              break;
+
+            default:
+              throw new Error('Unknown op: ' + op);
+          }
+        } else if (op < 247) {
+          stack.push(op - 139);
+        } else if (op < 251) {
+          var b1 = stream.readUInt8();
+          stack.push((op - 247) * 256 + b1 + 108);
+        } else if (op < 255) {
+          var b1 = stream.readUInt8();
+          stack.push(-(op - 251) * 256 - b1 - 108);
+        } else {
+          stack.push(stream.readInt32BE() / 65536);
+        }
+      }
+    };
+
+    parse();
+
+    if (open) {
+      path.closePath();
+    }
+
+    return path;
+  };
+
+  return CFFGlyph;
+}(Glyph);
+
+var SBIXImage = new r.Struct({
+  originX: r.uint16,
+  originY: r.uint16,
+  type: new r.String(4),
+  data: new r.Buffer(function (t) {
+    return t.parent.buflen - t._currentOffset;
+  })
+});
+
+/**
+ * Represents a color (e.g. emoji) glyph in Apple's SBIX format.
+ */
+
+var SBIXGlyph = function (_TTFGlyph) {
+  _inherits(SBIXGlyph, _TTFGlyph);
+
+  function SBIXGlyph() {
+    _classCallCheck(this, SBIXGlyph);
+
+    return _possibleConstructorReturn(this, _TTFGlyph.apply(this, arguments));
+  }
+
+  /**
+   * Returns an object representing a glyph image at the given point size.
+   * The object has a data property with a Buffer containing the actual image data,
+   * along with the image type, and origin.
+   *
+   * @param {number} size
+   * @return {object}
+   */
+  SBIXGlyph.prototype.getImageForSize = function getImageForSize(size) {
+    for (var i = 0; i < this._font.sbix.imageTables.length; i++) {
+      var table = this._font.sbix.imageTables[i];
+      if (table.ppem >= size) {
+        break;
+      }
+    }
+
+    var offsets = table.imageOffsets;
+    var start = offsets[this.id];
+    var end = offsets[this.id + 1];
+
+    if (start === end) {
+      return null;
+    }
+
+    this._font.stream.pos = start;
+    return SBIXImage.decode(this._font.stream, { buflen: end - start });
+  };
+
+  SBIXGlyph.prototype.render = function render(ctx, size) {
+    var img = this.getImageForSize(size);
+    if (img != null) {
+      var scale = size / this._font.unitsPerEm;
+      ctx.image(img.data, { height: size, x: img.originX, y: (this.bbox.minY - img.originY) * scale });
+    }
+
+    if (this._font.sbix.flags.renderOutlines) {
+      _TTFGlyph.prototype.render.call(this, ctx, size);
+    }
+  };
+
+  return SBIXGlyph;
+}(TTFGlyph);
+
+var COLRLayer = function COLRLayer(glyph, color) {
+  _classCallCheck(this, COLRLayer);
+
+  this.glyph = glyph;
+  this.color = color;
+};
+
+/**
+ * Represents a color (e.g. emoji) glyph in Microsoft's COLR format.
+ * Each glyph in this format contain a list of colored layers, each
+ * of which  is another vector glyph.
+ */
+
+
+var COLRGlyph = function (_Glyph) {
+  _inherits(COLRGlyph, _Glyph);
+
+  function COLRGlyph() {
+    _classCallCheck(this, COLRGlyph);
+
+    return _possibleConstructorReturn(this, _Glyph.apply(this, arguments));
+  }
+
+  COLRGlyph.prototype._getBBox = function _getBBox() {
+    var bbox = new BBox();
+    for (var i = 0; i < this.layers.length; i++) {
+      var layer = this.layers[i];
+      var b = layer.glyph.bbox;
+      bbox.addPoint(b.minX, b.minY);
+      bbox.addPoint(b.maxX, b.maxY);
+    }
+
+    return bbox;
+  };
+
+  /**
+   * Returns an array of objects containing the glyph and color for
+   * each layer in the composite color glyph.
+   * @type {object[]}
+   */
+
+
+  COLRGlyph.prototype.render = function render(ctx, size) {
+    for (var _iterator = this.layers, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var _ref2 = _ref,
+          glyph = _ref2.glyph,
+          color = _ref2.color;
+
+      ctx.fillColor([color.red, color.green, color.blue], color.alpha / 255 * 100);
+      glyph.render(ctx, size);
+    }
+
+    return;
+  };
+
+  _createClass(COLRGlyph, [{
+    key: 'layers',
+    get: function get() {
+      var cpal = this._font.CPAL;
+      var colr = this._font.COLR;
+      var low = 0;
+      var high = colr.baseGlyphRecord.length - 1;
+
+      while (low <= high) {
+        var mid = low + high >> 1;
+        var rec = colr.baseGlyphRecord[mid];
+
+        if (this.id < rec.gid) {
+          high = mid - 1;
+        } else if (this.id > rec.gid) {
+          low = mid + 1;
+        } else {
+          var baseLayer = rec;
+          break;
+        }
+      }
+
+      // if base glyph not found in COLR table,
+      // default to normal glyph from glyf or CFF
+      if (baseLayer == null) {
+        var g = this._font._getBaseGlyph(this.id);
+        var color = {
+          red: 0,
+          green: 0,
+          blue: 0,
+          alpha: 255
+        };
+
+        return [new COLRLayer(g, color)];
+      }
+
+      // otherwise, return an array of all the layers
+      var layers = [];
+      for (var i = baseLayer.firstLayerIndex; i < baseLayer.firstLayerIndex + baseLayer.numLayers; i++) {
+        var rec = colr.layerRecords[i];
+        var color = cpal.colorRecords[rec.paletteIndex];
+        var g = this._font._getBaseGlyph(rec.gid);
+        layers.push(new COLRLayer(g, color));
+      }
+
+      return layers;
+    }
+  }]);
+
+  return COLRGlyph;
+}(Glyph);
+
+var TUPLES_SHARE_POINT_NUMBERS = 0x8000;
+var TUPLE_COUNT_MASK = 0x0fff;
+var EMBEDDED_TUPLE_COORD = 0x8000;
+var INTERMEDIATE_TUPLE = 0x4000;
+var PRIVATE_POINT_NUMBERS = 0x2000;
+var TUPLE_INDEX_MASK = 0x0fff;
+var POINTS_ARE_WORDS = 0x80;
+var POINT_RUN_COUNT_MASK = 0x7f;
+var DELTAS_ARE_ZERO = 0x80;
+var DELTAS_ARE_WORDS = 0x40;
+var DELTA_RUN_COUNT_MASK = 0x3f;
+
+/**
+ * This class is transforms TrueType glyphs according to the data from
+ * the Apple Advanced Typography variation tables (fvar, gvar, and avar).
+ * These tables allow infinite adjustments to glyph weight, width, slant,
+ * and optical size without the designer needing to specify every exact style.
+ *
+ * Apple's documentation for these tables is not great, so thanks to the
+ * Freetype project for figuring much of this out.
+ *
+ * @private
+ */
+
+var GlyphVariationProcessor = function () {
+  function GlyphVariationProcessor(font, coords) {
+    _classCallCheck(this, GlyphVariationProcessor);
+
+    this.font = font;
+    this.normalizedCoords = this.normalizeCoords(coords);
+    this.blendVectors = new _Map();
+  }
+
+  GlyphVariationProcessor.prototype.normalizeCoords = function normalizeCoords(coords) {
+    // the default mapping is linear along each axis, in two segments:
+    // from the minValue to defaultValue, and from defaultValue to maxValue.
+    var normalized = [];
+    for (var i = 0; i < this.font.fvar.axis.length; i++) {
+      var axis = this.font.fvar.axis[i];
+      if (coords[i] < axis.defaultValue) {
+        normalized.push((coords[i] - axis.defaultValue + _Number$EPSILON) / (axis.defaultValue - axis.minValue + _Number$EPSILON));
+      } else {
+        normalized.push((coords[i] - axis.defaultValue + _Number$EPSILON) / (axis.maxValue - axis.defaultValue + _Number$EPSILON));
+      }
+    }
+
+    // if there is an avar table, the normalized value is calculated
+    // by interpolating between the two nearest mapped values.
+    if (this.font.avar) {
+      for (var i = 0; i < this.font.avar.segment.length; i++) {
+        var segment = this.font.avar.segment[i];
+        for (var j = 0; j < segment.correspondence.length; j++) {
+          var pair = segment.correspondence[j];
+          if (j >= 1 && normalized[i] < pair.fromCoord) {
+            var prev = segment.correspondence[j - 1];
+            normalized[i] = ((normalized[i] - prev.fromCoord) * (pair.toCoord - prev.toCoord) + _Number$EPSILON) / (pair.fromCoord - prev.fromCoord + _Number$EPSILON) + prev.toCoord;
+
+            break;
+          }
+        }
+      }
+    }
+
+    return normalized;
+  };
+
+  GlyphVariationProcessor.prototype.transformPoints = function transformPoints(gid, glyphPoints) {
+    if (!this.font.fvar || !this.font.gvar) {
+      return;
+    }
+
+    var gvar = this.font.gvar;
+
+    if (gid >= gvar.glyphCount) {
+      return;
+    }
+
+    var offset = gvar.offsets[gid];
+    if (offset === gvar.offsets[gid + 1]) {
+      return;
+    }
+
+    // Read the gvar data for this glyph
+    var stream = this.font.stream;
+
+    stream.pos = offset;
+    if (stream.pos >= stream.length) {
+      return;
+    }
+
+    var tupleCount = stream.readUInt16BE();
+    var offsetToData = offset + stream.readUInt16BE();
+
+    if (tupleCount & TUPLES_SHARE_POINT_NUMBERS) {
+      var here = stream.pos;
+      stream.pos = offsetToData;
+      var sharedPoints = this.decodePoints();
+      offsetToData = stream.pos;
+      stream.pos = here;
+    }
+
+    var origPoints = glyphPoints.map(function (pt) {
+      return pt.copy();
+    });
+
+    tupleCount &= TUPLE_COUNT_MASK;
+    for (var i = 0; i < tupleCount; i++) {
+      var tupleDataSize = stream.readUInt16BE();
+      var tupleIndex = stream.readUInt16BE();
+
+      if (tupleIndex & EMBEDDED_TUPLE_COORD) {
+        var tupleCoords = [];
+        for (var a = 0; a < gvar.axisCount; a++) {
+          tupleCoords.push(stream.readInt16BE() / 16384);
+        }
+      } else {
+        if ((tupleIndex & TUPLE_INDEX_MASK) >= gvar.globalCoordCount) {
+          throw new Error('Invalid gvar table');
+        }
+
+        var tupleCoords = gvar.globalCoords[tupleIndex & TUPLE_INDEX_MASK];
+      }
+
+      if (tupleIndex & INTERMEDIATE_TUPLE) {
+        var startCoords = [];
+        for (var _a = 0; _a < gvar.axisCount; _a++) {
+          startCoords.push(stream.readInt16BE() / 16384);
+        }
+
+        var endCoords = [];
+        for (var _a2 = 0; _a2 < gvar.axisCount; _a2++) {
+          endCoords.push(stream.readInt16BE() / 16384);
+        }
+      }
+
+      // Get the factor at which to apply this tuple
+      var factor = this.tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords);
+      if (factor === 0) {
+        offsetToData += tupleDataSize;
+        continue;
+      }
+
+      var here = stream.pos;
+      stream.pos = offsetToData;
+
+      if (tupleIndex & PRIVATE_POINT_NUMBERS) {
+        var points = this.decodePoints();
+      } else {
+        var points = sharedPoints;
+      }
+
+      // points.length = 0 means there are deltas for all points
+      var nPoints = points.length === 0 ? glyphPoints.length : points.length;
+      var xDeltas = this.decodeDeltas(nPoints);
+      var yDeltas = this.decodeDeltas(nPoints);
+
+      if (points.length === 0) {
+        // all points
+        for (var _i = 0; _i < glyphPoints.length; _i++) {
+          var point = glyphPoints[_i];
+          point.x += Math.round(xDeltas[_i] * factor);
+          point.y += Math.round(yDeltas[_i] * factor);
+        }
+      } else {
+        var outPoints = origPoints.map(function (pt) {
+          return pt.copy();
+        });
+        var hasDelta = glyphPoints.map(function () {
+          return false;
+        });
+
+        for (var _i2 = 0; _i2 < points.length; _i2++) {
+          var idx = points[_i2];
+          if (idx < glyphPoints.length) {
+            var _point = outPoints[idx];
+            hasDelta[idx] = true;
+
+            _point.x += Math.round(xDeltas[_i2] * factor);
+            _point.y += Math.round(yDeltas[_i2] * factor);
+          }
+        }
+
+        this.interpolateMissingDeltas(outPoints, origPoints, hasDelta);
+
+        for (var _i3 = 0; _i3 < glyphPoints.length; _i3++) {
+          var deltaX = outPoints[_i3].x - origPoints[_i3].x;
+          var deltaY = outPoints[_i3].y - origPoints[_i3].y;
+
+          glyphPoints[_i3].x += deltaX;
+          glyphPoints[_i3].y += deltaY;
+        }
+      }
+
+      offsetToData += tupleDataSize;
+      stream.pos = here;
+    }
+  };
+
+  GlyphVariationProcessor.prototype.decodePoints = function decodePoints() {
+    var stream = this.font.stream;
+    var count = stream.readUInt8();
+
+    if (count & POINTS_ARE_WORDS) {
+      count = (count & POINT_RUN_COUNT_MASK) << 8 | stream.readUInt8();
+    }
+
+    var points = new Uint16Array(count);
+    var i = 0;
+    var point = 0;
+    while (i < count) {
+      var run = stream.readUInt8();
+      var runCount = (run & POINT_RUN_COUNT_MASK) + 1;
+      var fn = run & POINTS_ARE_WORDS ? stream.readUInt16 : stream.readUInt8;
+
+      for (var j = 0; j < runCount && i < count; j++) {
+        point += fn.call(stream);
+        points[i++] = point;
+      }
+    }
+
+    return points;
+  };
+
+  GlyphVariationProcessor.prototype.decodeDeltas = function decodeDeltas(count) {
+    var stream = this.font.stream;
+    var i = 0;
+    var deltas = new Int16Array(count);
+
+    while (i < count) {
+      var run = stream.readUInt8();
+      var runCount = (run & DELTA_RUN_COUNT_MASK) + 1;
+
+      if (run & DELTAS_ARE_ZERO) {
+        i += runCount;
+      } else {
+        var fn = run & DELTAS_ARE_WORDS ? stream.readInt16BE : stream.readInt8;
+        for (var j = 0; j < runCount && i < count; j++) {
+          deltas[i++] = fn.call(stream);
+        }
+      }
+    }
+
+    return deltas;
+  };
+
+  GlyphVariationProcessor.prototype.tupleFactor = function tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords) {
+    var normalized = this.normalizedCoords;
+    var gvar = this.font.gvar;
+
+    var factor = 1;
+
+    for (var i = 0; i < gvar.axisCount; i++) {
+      if (tupleCoords[i] === 0) {
+        continue;
+      }
+
+      if (normalized[i] === 0) {
+        return 0;
+      }
+
+      if ((tupleIndex & INTERMEDIATE_TUPLE) === 0) {
+        if (normalized[i] < Math.min(0, tupleCoords[i]) || normalized[i] > Math.max(0, tupleCoords[i])) {
+          return 0;
+        }
+
+        factor = (factor * normalized[i] + _Number$EPSILON) / (tupleCoords[i] + _Number$EPSILON);
+      } else {
+        if (normalized[i] < startCoords[i] || normalized[i] > endCoords[i]) {
+          return 0;
+        } else if (normalized[i] < tupleCoords[i]) {
+          factor = factor * (normalized[i] - startCoords[i] + _Number$EPSILON) / (tupleCoords[i] - startCoords[i] + _Number$EPSILON);
+        } else {
+          factor = factor * (endCoords[i] - normalized[i] + _Number$EPSILON) / (endCoords[i] - tupleCoords[i] + _Number$EPSILON);
+        }
+      }
+    }
+
+    return factor;
+  };
+
+  // Interpolates points without delta values.
+  // Needed for the Ø and Q glyphs in Skia.
+  // Algorithm from Freetype.
+
+
+  GlyphVariationProcessor.prototype.interpolateMissingDeltas = function interpolateMissingDeltas(points, inPoints, hasDelta) {
+    if (points.length === 0) {
+      return;
+    }
+
+    var point = 0;
+    while (point < points.length) {
+      var firstPoint = point;
+
+      // find the end point of the contour
+      var endPoint = point;
+      var pt = points[endPoint];
+      while (!pt.endContour) {
+        pt = points[++endPoint];
+      }
+
+      // find the first point that has a delta
+      while (point <= endPoint && !hasDelta[point]) {
+        point++;
+      }
+
+      if (point > endPoint) {
+        continue;
+      }
+
+      var firstDelta = point;
+      var curDelta = point;
+      point++;
+
+      while (point <= endPoint) {
+        // find the next point with a delta, and interpolate intermediate points
+        if (hasDelta[point]) {
+          this.deltaInterpolate(curDelta + 1, point - 1, curDelta, point, inPoints, points);
+          curDelta = point;
+        }
+
+        point++;
+      }
+
+      // shift contour if we only have a single delta
+      if (curDelta === firstDelta) {
+        this.deltaShift(firstPoint, endPoint, curDelta, inPoints, points);
+      } else {
+        // otherwise, handle the remaining points at the end and beginning of the contour
+        this.deltaInterpolate(curDelta + 1, endPoint, curDelta, firstDelta, inPoints, points);
+
+        if (firstDelta > 0) {
+          this.deltaInterpolate(firstPoint, firstDelta - 1, curDelta, firstDelta, inPoints, points);
+        }
+      }
+
+      point = endPoint + 1;
+    }
+  };
+
+  GlyphVariationProcessor.prototype.deltaInterpolate = function deltaInterpolate(p1, p2, ref1, ref2, inPoints, outPoints) {
+    if (p1 > p2) {
+      return;
+    }
+
+    var iterable = ['x', 'y'];
+    for (var i = 0; i < iterable.length; i++) {
+      var k = iterable[i];
+      if (inPoints[ref1][k] > inPoints[ref2][k]) {
+        var p = ref1;
+        ref1 = ref2;
+        ref2 = p;
+      }
+
+      var in1 = inPoints[ref1][k];
+      var in2 = inPoints[ref2][k];
+      var out1 = outPoints[ref1][k];
+      var out2 = outPoints[ref2][k];
+
+      // If the reference points have the same coordinate but different
+      // delta, inferred delta is zero.  Otherwise interpolate.
+      if (in1 !== in2 || out1 === out2) {
+        var scale = in1 === in2 ? 0 : (out2 - out1) / (in2 - in1);
+
+        for (var _p = p1; _p <= p2; _p++) {
+          var out = inPoints[_p][k];
+
+          if (out <= in1) {
+            out += out1 - in1;
+          } else if (out >= in2) {
+            out += out2 - in2;
+          } else {
+            out = out1 + (out - in1) * scale;
+          }
+
+          outPoints[_p][k] = out;
+        }
+      }
+    }
+  };
+
+  GlyphVariationProcessor.prototype.deltaShift = function deltaShift(p1, p2, ref, inPoints, outPoints) {
+    var deltaX = outPoints[ref].x - inPoints[ref].x;
+    var deltaY = outPoints[ref].y - inPoints[ref].y;
+
+    if (deltaX === 0 && deltaY === 0) {
+      return;
+    }
+
+    for (var p = p1; p <= p2; p++) {
+      if (p !== ref) {
+        outPoints[p].x += deltaX;
+        outPoints[p].y += deltaY;
+      }
+    }
+  };
+
+  GlyphVariationProcessor.prototype.getAdvanceAdjustment = function getAdvanceAdjustment(gid, table) {
+    var outerIndex = void 0,
+        innerIndex = void 0;
+
+    if (table.advanceWidthMapping) {
+      var idx = gid;
+      if (idx >= table.advanceWidthMapping.mapCount) {
+        idx = table.advanceWidthMapping.mapCount - 1;
+      }
+
+      var entryFormat = table.advanceWidthMapping.entryFormat;
+      var _table$advanceWidthMa = table.advanceWidthMapping.mapData[idx];
+      outerIndex = _table$advanceWidthMa.outerIndex;
+      innerIndex = _table$advanceWidthMa.innerIndex;
+    } else {
+      outerIndex = 0;
+      innerIndex = gid;
+    }
+
+    return this.getDelta(table.itemVariationStore, outerIndex, innerIndex);
+  };
+
+  // See pseudo code from `Font Variations Overview'
+  // in the OpenType specification.
+
+
+  GlyphVariationProcessor.prototype.getDelta = function getDelta(itemStore, outerIndex, innerIndex) {
+    if (outerIndex >= itemStore.itemVariationData.length) {
+      return 0;
+    }
+
+    var varData = itemStore.itemVariationData[outerIndex];
+    if (innerIndex >= varData.deltaSets.length) {
+      return 0;
+    }
+
+    var deltaSet = varData.deltaSets[innerIndex];
+    var blendVector = this.getBlendVector(itemStore, outerIndex);
+    var netAdjustment = 0;
+
+    for (var master = 0; master < varData.regionIndexCount; master++) {
+      netAdjustment += deltaSet.deltas[master] * blendVector[master];
+    }
+
+    return netAdjustment;
+  };
+
+  GlyphVariationProcessor.prototype.getBlendVector = function getBlendVector(itemStore, outerIndex) {
+    var varData = itemStore.itemVariationData[outerIndex];
+    if (this.blendVectors.has(varData)) {
+      return this.blendVectors.get(varData);
+    }
+
+    var normalizedCoords = this.normalizedCoords;
+    var blendVector = [];
+
+    // outer loop steps through master designs to be blended
+    for (var master = 0; master < varData.regionIndexCount; master++) {
+      var scalar = 1;
+      var regionIndex = varData.regionIndexes[master];
+      var axes = itemStore.variationRegionList.variationRegions[regionIndex];
+
+      // inner loop steps through axes in this region
+      for (var j = 0; j < axes.length; j++) {
+        var axis = axes[j];
+        var axisScalar = void 0;
+
+        // compute the scalar contribution of this axis
+        // ignore invalid ranges
+        if (axis.startCoord > axis.peakCoord || axis.peakCoord > axis.endCoord) {
+          axisScalar = 1;
+        } else if (axis.startCoord < 0 && axis.endCoord > 0 && axis.peakCoord !== 0) {
+          axisScalar = 1;
+
+          // peak of 0 means ignore this axis
+        } else if (axis.peakCoord === 0) {
+          axisScalar = 1;
+
+          // ignore this region if coords are out of range
+        } else if (normalizedCoords[j] < axis.startCoord || normalizedCoords[j] > axis.endCoord) {
+          axisScalar = 0;
+
+          // calculate a proportional factor
+        } else {
+          if (normalizedCoords[j] === axis.peakCoord) {
+            axisScalar = 1;
+          } else if (normalizedCoords[j] < axis.peakCoord) {
+            axisScalar = (normalizedCoords[j] - axis.startCoord + _Number$EPSILON) / (axis.peakCoord - axis.startCoord + _Number$EPSILON);
+          } else {
+            axisScalar = (axis.endCoord - normalizedCoords[j] + _Number$EPSILON) / (axis.endCoord - axis.peakCoord + _Number$EPSILON);
+          }
+        }
+
+        // take product of all the axis scalars
+        scalar *= axisScalar;
+      }
+
+      blendVector[master] = scalar;
+    }
+
+    this.blendVectors.set(varData, blendVector);
+    return blendVector;
+  };
+
+  return GlyphVariationProcessor;
+}();
+
+var Subset = function () {
+  function Subset(font) {
+    _classCallCheck(this, Subset);
+
+    this.font = font;
+    this.glyphs = [];
+    this.mapping = {};
+
+    // always include the missing glyph
+    this.includeGlyph(0);
+  }
+
+  Subset.prototype.includeGlyph = function includeGlyph(glyph) {
+    if ((typeof glyph === 'undefined' ? 'undefined' : _typeof(glyph)) === 'object') {
+      glyph = glyph.id;
+    }
+
+    if (this.mapping[glyph] == null) {
+      this.glyphs.push(glyph);
+      this.mapping[glyph] = this.glyphs.length - 1;
+    }
+
+    return this.mapping[glyph];
+  };
+
+  Subset.prototype.encodeStream = function encodeStream() {
+    var _this = this;
+
+    var s = new r.EncodeStream();
+
+    process.nextTick(function () {
+      _this.encode(s);
+      return s.end();
+    });
+
+    return s;
+  };
+
+  return Subset;
+}();
+
+// Flags for simple glyphs
+var ON_CURVE$1 = 1 << 0;
+var X_SHORT_VECTOR$1 = 1 << 1;
+var Y_SHORT_VECTOR$1 = 1 << 2;
+var REPEAT$1 = 1 << 3;
+var SAME_X$1 = 1 << 4;
+var SAME_Y$1 = 1 << 5;
+
+var Point$1 = function () {
+  function Point() {
+    _classCallCheck(this, Point);
+  }
+
+  Point.size = function size(val) {
+    return val >= 0 && val <= 255 ? 1 : 2;
+  };
+
+  Point.encode = function encode(stream, value) {
+    if (value >= 0 && value <= 255) {
+      stream.writeUInt8(value);
+    } else {
+      stream.writeInt16BE(value);
+    }
+  };
+
+  return Point;
+}();
+
+var Glyf = new r.Struct({
+  numberOfContours: r.int16, // if negative, this is a composite glyph
+  xMin: r.int16,
+  yMin: r.int16,
+  xMax: r.int16,
+  yMax: r.int16,
+  endPtsOfContours: new r.Array(r.uint16, 'numberOfContours'),
+  instructions: new r.Array(r.uint8, r.uint16),
+  flags: new r.Array(r.uint8, 0),
+  xPoints: new r.Array(Point$1, 0),
+  yPoints: new r.Array(Point$1, 0)
+});
+
+/**
+ * Encodes TrueType glyph outlines
+ */
+
+var TTFGlyphEncoder = function () {
+  function TTFGlyphEncoder() {
+    _classCallCheck(this, TTFGlyphEncoder);
+  }
+
+  TTFGlyphEncoder.prototype.encodeSimple = function encodeSimple(path) {
+    var instructions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+    var endPtsOfContours = [];
+    var xPoints = [];
+    var yPoints = [];
+    var flags = [];
+    var same = 0;
+    var lastX = 0,
+        lastY = 0,
+        lastFlag = 0;
+    var pointCount = 0;
+
+    for (var i = 0; i < path.commands.length; i++) {
+      var c = path.commands[i];
+
+      for (var j = 0; j < c.args.length; j += 2) {
+        var x = c.args[j];
+        var y = c.args[j + 1];
+        var flag = 0;
+
+        // If the ending point of a quadratic curve is the midpoint
+        // between the control point and the control point of the next
+        // quadratic curve, we can omit the ending point.
+        if (c.command === 'quadraticCurveTo' && j === 2) {
+          var next = path.commands[i + 1];
+          if (next && next.command === 'quadraticCurveTo') {
+            var midX = (lastX + next.args[0]) / 2;
+            var midY = (lastY + next.args[1]) / 2;
+
+            if (x === midX && y === midY) {
+              continue;
+            }
+          }
+        }
+
+        // All points except control points are on curve.
+        if (!(c.command === 'quadraticCurveTo' && j === 0)) {
+          flag |= ON_CURVE$1;
+        }
+
+        flag = this._encodePoint(x, lastX, xPoints, flag, X_SHORT_VECTOR$1, SAME_X$1);
+        flag = this._encodePoint(y, lastY, yPoints, flag, Y_SHORT_VECTOR$1, SAME_Y$1);
+
+        if (flag === lastFlag && same < 255) {
+          flags[flags.length - 1] |= REPEAT$1;
+          same++;
+        } else {
+          if (same > 0) {
+            flags.push(same);
+            same = 0;
+          }
+
+          flags.push(flag);
+          lastFlag = flag;
+        }
+
+        lastX = x;
+        lastY = y;
+        pointCount++;
+      }
+
+      if (c.command === 'closePath') {
+        endPtsOfContours.push(pointCount - 1);
+      }
+    }
+
+    // Close the path if the last command didn't already
+    if (path.commands.length > 1 && path.commands[path.commands.length - 1].command !== 'closePath') {
+      endPtsOfContours.push(pointCount - 1);
+    }
+
+    var bbox = path.bbox;
+    var glyf = {
+      numberOfContours: endPtsOfContours.length,
+      xMin: bbox.minX,
+      yMin: bbox.minY,
+      xMax: bbox.maxX,
+      yMax: bbox.maxY,
+      endPtsOfContours: endPtsOfContours,
+      instructions: instructions,
+      flags: flags,
+      xPoints: xPoints,
+      yPoints: yPoints
+    };
+
+    var size = Glyf.size(glyf);
+    var tail = 4 - size % 4;
+
+    var stream = new r.EncodeStream(size + tail);
+    Glyf.encode(stream, glyf);
+
+    // Align to 4-byte length
+    if (tail !== 0) {
+      stream.fill(0, tail);
+    }
+
+    return stream.buffer;
+  };
+
+  TTFGlyphEncoder.prototype._encodePoint = function _encodePoint(value, last, points, flag, shortFlag, sameFlag) {
+    var diff = value - last;
+
+    if (value === last) {
+      flag |= sameFlag;
+    } else {
+      if (-255 <= diff && diff <= 255) {
+        flag |= shortFlag;
+        if (diff < 0) {
+          diff = -diff;
+        } else {
+          flag |= sameFlag;
+        }
+      }
+
+      points.push(diff);
+    }
+
+    return flag;
+  };
+
+  return TTFGlyphEncoder;
+}();
+
+var TTFSubset = function (_Subset) {
+  _inherits(TTFSubset, _Subset);
+
+  function TTFSubset(font) {
+    _classCallCheck(this, TTFSubset);
+
+    var _this = _possibleConstructorReturn(this, _Subset.call(this, font));
+
+    _this.glyphEncoder = new TTFGlyphEncoder();
+    return _this;
+  }
+
+  TTFSubset.prototype._addGlyph = function _addGlyph(gid) {
+    var glyph = this.font.getGlyph(gid);
+    var glyf = glyph._decode();
+
+    // get the offset to the glyph from the loca table
+    var curOffset = this.font.loca.offsets[gid];
+    var nextOffset = this.font.loca.offsets[gid + 1];
+
+    var stream = this.font._getTableStream('glyf');
+    stream.pos += curOffset;
+
+    var buffer = stream.readBuffer(nextOffset - curOffset);
+
+    // if it is a compound glyph, include its components
+    if (glyf && glyf.numberOfContours < 0) {
+      buffer = new Buffer(buffer);
+      for (var _iterator = glyf.components, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var component = _ref;
+
+        gid = this.includeGlyph(component.glyphID);
+        buffer.writeUInt16BE(gid, component.pos);
+      }
+    } else if (glyf && this.font._variationProcessor) {
+      // If this is a TrueType variation glyph, re-encode the path
+      buffer = this.glyphEncoder.encodeSimple(glyph.path, glyf.instructions);
+    }
+
+    this.glyf.push(buffer);
+    this.loca.offsets.push(this.offset);
+
+    this.hmtx.metrics.push({
+      advance: glyph.advanceWidth,
+      bearing: glyph._getMetrics().leftBearing
+    });
+
+    this.offset += buffer.length;
+    return this.glyf.length - 1;
+  };
+
+  TTFSubset.prototype.encode = function encode(stream) {
+    // tables required by PDF spec:
+    //   head, hhea, loca, maxp, cvt , prep, glyf, hmtx, fpgm
+    //
+    // additional tables required for standalone fonts:
+    //   name, cmap, OS/2, post
+
+    this.glyf = [];
+    this.offset = 0;
+    this.loca = {
+      offsets: []
+    };
+
+    this.hmtx = {
+      metrics: [],
+      bearings: []
+    };
+
+    // include all the glyphs
+    // not using a for loop because we need to support adding more
+    // glyphs to the array as we go, and CoffeeScript caches the length.
+    var i = 0;
+    while (i < this.glyphs.length) {
+      this._addGlyph(this.glyphs[i++]);
+    }
+
+    var maxp = cloneDeep(this.font.maxp);
+    maxp.numGlyphs = this.glyf.length;
+
+    this.loca.offsets.push(this.offset);
+    tables.loca.preEncode.call(this.loca);
+
+    var head = cloneDeep(this.font.head);
+    head.indexToLocFormat = this.loca.version;
+
+    var hhea = cloneDeep(this.font.hhea);
+    hhea.numberOfMetrics = this.hmtx.metrics.length;
+
+    // map = []
+    // for index in [0...256]
+    //     if index < @numGlyphs
+    //         map[index] = index
+    //     else
+    //         map[index] = 0
+    //
+    // cmapTable =
+    //     version: 0
+    //     length: 262
+    //     language: 0
+    //     codeMap: map
+    //
+    // cmap =
+    //     version: 0
+    //     numSubtables: 1
+    //     tables: [
+    //         platformID: 1
+    //         encodingID: 0
+    //         table: cmapTable
+    //     ]
+
+    // TODO: subset prep, cvt, fpgm?
+    Directory.encode(stream, {
+      tables: {
+        head: head,
+        hhea: hhea,
+        loca: this.loca,
+        maxp: maxp,
+        'cvt ': this.font['cvt '],
+        prep: this.font.prep,
+        glyf: this.glyf,
+        hmtx: this.hmtx,
+        fpgm: this.font.fpgm
+
+        // name: clone @font.name
+        // 'OS/2': clone @font['OS/2']
+        // post: clone @font.post
+        // cmap: cmap
+      }
+    });
+  };
+
+  return TTFSubset;
+}(Subset);
+
+var CFFSubset = function (_Subset) {
+  _inherits(CFFSubset, _Subset);
+
+  function CFFSubset(font) {
+    _classCallCheck(this, CFFSubset);
+
+    var _this = _possibleConstructorReturn(this, _Subset.call(this, font));
+
+    _this.cff = _this.font['CFF '];
+    if (!_this.cff) {
+      throw new Error('Not a CFF Font');
+    }
+    return _this;
+  }
+
+  CFFSubset.prototype.subsetCharstrings = function subsetCharstrings() {
+    this.charstrings = [];
+    var gsubrs = {};
+
+    for (var _iterator = this.glyphs, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var gid = _ref;
+
+      this.charstrings.push(this.cff.getCharString(gid));
+
+      var glyph = this.font.getGlyph(gid);
+      var path = glyph.path; // this causes the glyph to be parsed
+
+      for (var subr in glyph._usedGsubrs) {
+        gsubrs[subr] = true;
+      }
+    }
+
+    this.gsubrs = this.subsetSubrs(this.cff.globalSubrIndex, gsubrs);
+  };
+
+  CFFSubset.prototype.subsetSubrs = function subsetSubrs(subrs, used) {
+    var res = [];
+    for (var i = 0; i < subrs.length; i++) {
+      var subr = subrs[i];
+      if (used[i]) {
+        this.cff.stream.pos = subr.offset;
+        res.push(this.cff.stream.readBuffer(subr.length));
+      } else {
+        res.push(new Buffer([11])); // return
+      }
+    }
+
+    return res;
+  };
+
+  CFFSubset.prototype.subsetFontdict = function subsetFontdict(topDict) {
+    topDict.FDArray = [];
+    topDict.FDSelect = {
+      version: 0,
+      fds: []
+    };
+
+    var used_fds = {};
+    var used_subrs = [];
+    for (var _iterator2 = this.glyphs, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var gid = _ref2;
+
+      var fd = this.cff.fdForGlyph(gid);
+      if (fd == null) {
+        continue;
+      }
+
+      if (!used_fds[fd]) {
+        topDict.FDArray.push(_Object$assign({}, this.cff.topDict.FDArray[fd]));
+        used_subrs.push({});
+      }
+
+      used_fds[fd] = true;
+      topDict.FDSelect.fds.push(topDict.FDArray.length - 1);
+
+      var glyph = this.font.getGlyph(gid);
+      var path = glyph.path; // this causes the glyph to be parsed
+      for (var subr in glyph._usedSubrs) {
+        used_subrs[used_subrs.length - 1][subr] = true;
+      }
+    }
+
+    for (var i = 0; i < topDict.FDArray.length; i++) {
+      var dict = topDict.FDArray[i];
+      delete dict.FontName;
+      if (dict.Private && dict.Private.Subrs) {
+        dict.Private = _Object$assign({}, dict.Private);
+        dict.Private.Subrs = this.subsetSubrs(dict.Private.Subrs, used_subrs[i]);
+      }
+    }
+
+    return;
+  };
+
+  CFFSubset.prototype.createCIDFontdict = function createCIDFontdict(topDict) {
+    var used_subrs = {};
+    for (var _iterator3 = this.glyphs, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+      var _ref3;
+
+      if (_isArray3) {
+        if (_i3 >= _iterator3.length) break;
+        _ref3 = _iterator3[_i3++];
+      } else {
+        _i3 = _iterator3.next();
+        if (_i3.done) break;
+        _ref3 = _i3.value;
+      }
+
+      var gid = _ref3;
+
+      var glyph = this.font.getGlyph(gid);
+      var path = glyph.path; // this causes the glyph to be parsed
+
+      for (var subr in glyph._usedSubrs) {
+        used_subrs[subr] = true;
+      }
+    }
+
+    var privateDict = _Object$assign({}, this.cff.topDict.Private);
+    privateDict.Subrs = this.subsetSubrs(this.cff.topDict.Private.Subrs, used_subrs);
+
+    topDict.FDArray = [{ Private: privateDict }];
+    return topDict.FDSelect = {
+      version: 3,
+      nRanges: 1,
+      ranges: [{ first: 0, fd: 0 }],
+      sentinel: this.charstrings.length
+    };
+  };
+
+  CFFSubset.prototype.addString = function addString(string) {
+    if (!string) {
+      return null;
+    }
+
+    if (!this.strings) {
+      this.strings = [];
+    }
+
+    this.strings.push(string);
+    return standardStrings.length + this.strings.length - 1;
+  };
+
+  CFFSubset.prototype.encode = function encode(stream) {
+    this.subsetCharstrings();
+
+    var charset = {
+      version: this.charstrings.length > 255 ? 2 : 1,
+      ranges: [{ first: 1, nLeft: this.charstrings.length - 2 }]
+    };
+
+    var topDict = _Object$assign({}, this.cff.topDict);
+    topDict.Private = null;
+    topDict.charset = charset;
+    topDict.Encoding = null;
+    topDict.CharStrings = this.charstrings;
+
+    var _arr = ['version', 'Notice', 'Copyright', 'FullName', 'FamilyName', 'Weight', 'PostScript', 'BaseFontName', 'FontName'];
+    for (var _i4 = 0; _i4 < _arr.length; _i4++) {
+      var key = _arr[_i4];
+      topDict[key] = this.addString(this.cff.string(topDict[key]));
+    }
+
+    topDict.ROS = [this.addString('Adobe'), this.addString('Identity'), 0];
+    topDict.CIDCount = this.charstrings.length;
+
+    if (this.cff.isCIDFont) {
+      this.subsetFontdict(topDict);
+    } else {
+      this.createCIDFontdict(topDict);
+    }
+
+    var top = {
+      version: 1,
+      hdrSize: this.cff.hdrSize,
+      offSize: this.cff.length,
+      header: this.cff.header,
+      nameIndex: [this.cff.postscriptName],
+      topDictIndex: [topDict],
+      stringIndex: this.strings,
+      globalSubrIndex: this.gsubrs
+    };
+
+    CFFTop.encode(stream, top);
+  };
+
+  return CFFSubset;
+}(Subset);
+
+var _class;
+function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
+  var desc = {};
+  Object['ke' + 'ys'](descriptor).forEach(function (key) {
+    desc[key] = descriptor[key];
+  });
+  desc.enumerable = !!desc.enumerable;
+  desc.configurable = !!desc.configurable;
+
+  if ('value' in desc || desc.initializer) {
+    desc.writable = true;
+  }
+
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+    return decorator(target, property, desc) || desc;
+  }, desc);
+
+  if (context && desc.initializer !== void 0) {
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+    desc.initializer = undefined;
+  }
+
+  if (desc.initializer === void 0) {
+    Object['define' + 'Property'](target, property, desc);
+    desc = null;
+  }
+
+  return desc;
+}
+
+/**
+ * This is the base class for all SFNT-based font formats in fontkit.
+ * It supports TrueType, and PostScript glyphs, and several color glyph formats.
+ */
+var TTFFont = (_class = function () {
+  TTFFont.probe = function probe(buffer) {
+    var format = buffer.toString('ascii', 0, 4);
+    return format === 'true' || format === 'OTTO' || format === String.fromCharCode(0, 1, 0, 0);
+  };
+
+  function TTFFont(stream) {
+    var variationCoords = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+
+    _classCallCheck(this, TTFFont);
+
+    this.stream = stream;
+    this.variationCoords = variationCoords;
+
+    this._directoryPos = this.stream.pos;
+    this._tables = {};
+    this._glyphs = {};
+    this._decodeDirectory();
+
+    // define properties for each table to lazily parse
+    for (var tag in this.directory.tables) {
+      var table = this.directory.tables[tag];
+      if (tables[tag] && table.length > 0) {
+        _Object$defineProperty(this, tag, {
+          get: this._getTable.bind(this, table)
+        });
+      }
+    }
+  }
+
+  TTFFont.prototype._getTable = function _getTable(table) {
+    if (!(table.tag in this._tables)) {
+      try {
+        this._tables[table.tag] = this._decodeTable(table);
+      } catch (e) {
+        if (fontkit.logErrors) {
+          console.error('Error decoding table ' + table.tag);
+          console.error(e.stack);
+        }
+      }
+    }
+
+    return this._tables[table.tag];
+  };
+
+  TTFFont.prototype._getTableStream = function _getTableStream(tag) {
+    var table = this.directory.tables[tag];
+    if (table) {
+      this.stream.pos = table.offset;
+      return this.stream;
+    }
+
+    return null;
+  };
+
+  TTFFont.prototype._decodeDirectory = function _decodeDirectory() {
+    return this.directory = Directory.decode(this.stream, { _startOffset: 0 });
+  };
+
+  TTFFont.prototype._decodeTable = function _decodeTable(table) {
+    var pos = this.stream.pos;
+
+    var stream = this._getTableStream(table.tag);
+    var result = tables[table.tag].decode(stream, this, table.length);
+
+    this.stream.pos = pos;
+    return result;
+  };
+
+  /**
+   * The unique PostScript name for this font
+   * @type {string}
+   */
+
+
+  /**
+   * Gets a string from the font's `name` table
+   * `lang` is a BCP-47 language code.
+   * @return {string}
+   */
+  TTFFont.prototype.getName = function getName(key) {
+    var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';
+
+    var record = this.name.records[key];
+    if (record) {
+      return record[lang];
+    }
+
+    return null;
+  };
+
+  /**
+   * The font's full name, e.g. "Helvetica Bold"
+   * @type {string}
+   */
+
+
+  /**
+   * Returns whether there is glyph in the font for the given unicode code point.
+   *
+   * @param {number} codePoint
+   * @return {boolean}
+   */
+  TTFFont.prototype.hasGlyphForCodePoint = function hasGlyphForCodePoint(codePoint) {
+    return !!this._cmapProcessor.lookup(codePoint);
+  };
+
+  /**
+   * Maps a single unicode code point to a Glyph object.
+   * Does not perform any advanced substitutions (there is no context to do so).
+   *
+   * @param {number} codePoint
+   * @return {Glyph}
+   */
+
+
+  TTFFont.prototype.glyphForCodePoint = function glyphForCodePoint(codePoint) {
+    return this.getGlyph(this._cmapProcessor.lookup(codePoint), [codePoint]);
+  };
+
+  /**
+   * Returns an array of Glyph objects for the given string.
+   * This is only a one-to-one mapping from characters to glyphs.
+   * For most uses, you should use font.layout (described below), which
+   * provides a much more advanced mapping supporting AAT and OpenType shaping.
+   *
+   * @param {string} string
+   * @return {Glyph[]}
+   */
+
+
+  TTFFont.prototype.glyphsForString = function glyphsForString(string) {
+    var glyphs = [];
+    var len = string.length;
+    var idx = 0;
+    var last = -1;
+    var state = -1;
+
+    while (idx <= len) {
+      var code = 0;
+      var nextState = 0;
+
+      if (idx < len) {
+        // Decode the next codepoint from UTF 16
+        code = string.charCodeAt(idx++);
+        if (0xd800 <= code && code <= 0xdbff && idx < len) {
+          var next = string.charCodeAt(idx);
+          if (0xdc00 <= next && next <= 0xdfff) {
+            idx++;
+            code = ((code & 0x3ff) << 10) + (next & 0x3ff) + 0x10000;
+          }
+        }
+
+        // Compute the next state: 1 if the next codepoint is a variation selector, 0 otherwise.
+        nextState = 0xfe00 <= code && code <= 0xfe0f || 0xe0100 <= code && code <= 0xe01ef ? 1 : 0;
+      } else {
+        idx++;
+      }
+
+      if (state === 0 && nextState === 1) {
+        // Variation selector following normal codepoint.
+        glyphs.push(this.getGlyph(this._cmapProcessor.lookup(last, code), [last, code]));
+      } else if (state === 0 && nextState === 0) {
+        // Normal codepoint following normal codepoint.
+        glyphs.push(this.glyphForCodePoint(last));
+      }
+
+      last = code;
+      state = nextState;
+    }
+
+    return glyphs;
+  };
+
+  /**
+   * Returns a GlyphRun object, which includes an array of Glyphs and GlyphPositions for the given string.
+   *
+   * @param {string} string
+   * @param {string[]} [userFeatures]
+   * @param {string} [script]
+   * @param {string} [language]
+   * @param {string} [direction]
+   * @return {GlyphRun}
+   */
+  TTFFont.prototype.layout = function layout(string, userFeatures, script, language, direction) {
+    return this._layoutEngine.layout(string, userFeatures, script, language, direction);
+  };
+
+  /**
+   * Returns an array of strings that map to the given glyph id.
+   * @param {number} gid - glyph id
+   */
+
+
+  TTFFont.prototype.stringsForGlyph = function stringsForGlyph(gid) {
+    return this._layoutEngine.stringsForGlyph(gid);
+  };
+
+  /**
+   * An array of all [OpenType feature tags](https://www.microsoft.com/typography/otspec/featuretags.htm)
+   * (or mapped AAT tags) supported by the font.
+   * The features parameter is an array of OpenType feature tags to be applied in addition to the default set.
+   * If this is an AAT font, the OpenType feature tags are mapped to AAT features.
+   *
+   * @type {string[]}
+   */
+
+
+  TTFFont.prototype.getAvailableFeatures = function getAvailableFeatures(script, language) {
+    return this._layoutEngine.getAvailableFeatures(script, language);
+  };
+
+  TTFFont.prototype._getBaseGlyph = function _getBaseGlyph(glyph) {
+    var characters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+    if (!this._glyphs[glyph]) {
+      if (this.directory.tables.glyf) {
+        this._glyphs[glyph] = new TTFGlyph(glyph, characters, this);
+      } else if (this.directory.tables['CFF '] || this.directory.tables.CFF2) {
+        this._glyphs[glyph] = new CFFGlyph(glyph, characters, this);
+      }
+    }
+
+    return this._glyphs[glyph] || null;
+  };
+
+  /**
+   * Returns a glyph object for the given glyph id.
+   * You can pass the array of code points this glyph represents for
+   * your use later, and it will be stored in the glyph object.
+   *
+   * @param {number} glyph
+   * @param {number[]} characters
+   * @return {Glyph}
+   */
+
+
+  TTFFont.prototype.getGlyph = function getGlyph(glyph) {
+    var characters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+    if (!this._glyphs[glyph]) {
+      if (this.directory.tables.sbix) {
+        this._glyphs[glyph] = new SBIXGlyph(glyph, characters, this);
+      } else if (this.directory.tables.COLR && this.directory.tables.CPAL) {
+        this._glyphs[glyph] = new COLRGlyph(glyph, characters, this);
+      } else {
+        this._getBaseGlyph(glyph, characters);
+      }
+    }
+
+    return this._glyphs[glyph] || null;
+  };
+
+  /**
+   * Returns a Subset for this font.
+   * @return {Subset}
+   */
+
+
+  TTFFont.prototype.createSubset = function createSubset() {
+    if (this.directory.tables['CFF ']) {
+      return new CFFSubset(this);
+    }
+
+    return new TTFSubset(this);
+  };
+
+  /**
+   * Returns an object describing the available variation axes
+   * that this font supports. Keys are setting tags, and values
+   * contain the axis name, range, and default value.
+   *
+   * @type {object}
+   */
+
+
+  /**
+   * Returns a new font with the given variation settings applied.
+   * Settings can either be an instance name, or an object containing
+   * variation tags as specified by the `variationAxes` property.
+   *
+   * @param {object} settings
+   * @return {TTFFont}
+   */
+  TTFFont.prototype.getVariation = function getVariation(settings) {
+    if (!(this.directory.tables.fvar && (this.directory.tables.gvar && this.directory.tables.glyf || this.directory.tables.CFF2))) {
+      throw new Error('Variations require a font with the fvar, gvar and glyf, or CFF2 tables.');
+    }
+
+    if (typeof settings === 'string') {
+      settings = this.namedVariations[settings];
+    }
+
+    if ((typeof settings === 'undefined' ? 'undefined' : _typeof(settings)) !== 'object') {
+      throw new Error('Variation settings must be either a variation name or settings object.');
+    }
+
+    // normalize the coordinates
+    var coords = this.fvar.axis.map(function (axis, i) {
+      var axisTag = axis.axisTag.trim();
+      if (axisTag in settings) {
+        return Math.max(axis.minValue, Math.min(axis.maxValue, settings[axisTag]));
+      } else {
+        return axis.defaultValue;
+      }
+    });
+
+    var stream = new r.DecodeStream(this.stream.buffer);
+    stream.pos = this._directoryPos;
+
+    var font = new TTFFont(stream, coords);
+    font._tables = this._tables;
+
+    return font;
+  };
+
+  // Standardized format plugin API
+  TTFFont.prototype.getFont = function getFont(name) {
+    return this.getVariation(name);
+  };
+
+  _createClass(TTFFont, [{
+    key: 'postscriptName',
+    get: function get() {
+      var name = this.name.records.postscriptName;
+      if (name) {
+        var lang = _Object$keys(name)[0];
+        return name[lang];
+      }
+
+      return null;
+    }
+  }, {
+    key: 'fullName',
+    get: function get() {
+      return this.getName('fullName');
+    }
+
+    /**
+     * The font's family name, e.g. "Helvetica"
+     * @type {string}
+     */
+
+  }, {
+    key: 'familyName',
+    get: function get() {
+      return this.getName('fontFamily');
+    }
+
+    /**
+     * The font's sub-family, e.g. "Bold".
+     * @type {string}
+     */
+
+  }, {
+    key: 'subfamilyName',
+    get: function get() {
+      return this.getName('fontSubfamily');
+    }
+
+    /**
+     * The font's copyright information
+     * @type {string}
+     */
+
+  }, {
+    key: 'copyright',
+    get: function get() {
+      return this.getName('copyright');
+    }
+
+    /**
+     * The font's version number
+     * @type {string}
+     */
+
+  }, {
+    key: 'version',
+    get: function get() {
+      return this.getName('version');
+    }
+
+    /**
+     * The font’s [ascender](https://en.wikipedia.org/wiki/Ascender_(typography))
+     * @type {number}
+     */
+
+  }, {
+    key: 'ascent',
+    get: function get() {
+      return this.hhea.ascent;
+    }
+
+    /**
+     * The font’s [descender](https://en.wikipedia.org/wiki/Descender)
+     * @type {number}
+     */
+
+  }, {
+    key: 'descent',
+    get: function get() {
+      return this.hhea.descent;
+    }
+
+    /**
+     * The amount of space that should be included between lines
+     * @type {number}
+     */
+
+  }, {
+    key: 'lineGap',
+    get: function get() {
+      return this.hhea.lineGap;
+    }
+
+    /**
+     * The offset from the normal underline position that should be used
+     * @type {number}
+     */
+
+  }, {
+    key: 'underlinePosition',
+    get: function get() {
+      return this.post.underlinePosition;
+    }
+
+    /**
+     * The weight of the underline that should be used
+     * @type {number}
+     */
+
+  }, {
+    key: 'underlineThickness',
+    get: function get() {
+      return this.post.underlineThickness;
+    }
+
+    /**
+     * If this is an italic font, the angle the cursor should be drawn at to match the font design
+     * @type {number}
+     */
+
+  }, {
+    key: 'italicAngle',
+    get: function get() {
+      return this.post.italicAngle;
+    }
+
+    /**
+     * The height of capital letters above the baseline.
+     * See [here](https://en.wikipedia.org/wiki/Cap_height) for more details.
+     * @type {number}
+     */
+
+  }, {
+    key: 'capHeight',
+    get: function get() {
+      var os2 = this['OS/2'];
+      return os2 ? os2.capHeight : this.ascent;
+    }
+
+    /**
+     * The height of lower case letters in the font.
+     * See [here](https://en.wikipedia.org/wiki/X-height) for more details.
+     * @type {number}
+     */
+
+  }, {
+    key: 'xHeight',
+    get: function get() {
+      var os2 = this['OS/2'];
+      return os2 ? os2.xHeight : 0;
+    }
+
+    /**
+     * The number of glyphs in the font.
+     * @type {number}
+     */
+
+  }, {
+    key: 'numGlyphs',
+    get: function get() {
+      return this.maxp.numGlyphs;
+    }
+
+    /**
+     * The size of the font’s internal coordinate grid
+     * @type {number}
+     */
+
+  }, {
+    key: 'unitsPerEm',
+    get: function get() {
+      return this.head.unitsPerEm;
+    }
+
+    /**
+     * The font’s bounding box, i.e. the box that encloses all glyphs in the font.
+     * @type {BBox}
+     */
+
+  }, {
+    key: 'bbox',
+    get: function get() {
+      return _Object$freeze(new BBox(this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax));
+    }
+  }, {
+    key: '_cmapProcessor',
+    get: function get() {
+      return new CmapProcessor(this.cmap);
+    }
+
+    /**
+     * An array of all of the unicode code points supported by the font.
+     * @type {number[]}
+     */
+
+  }, {
+    key: 'characterSet',
+    get: function get() {
+      return this._cmapProcessor.getCharacterSet();
+    }
+  }, {
+    key: '_layoutEngine',
+    get: function get() {
+      return new LayoutEngine(this);
+    }
+  }, {
+    key: 'availableFeatures',
+    get: function get() {
+      return this._layoutEngine.getAvailableFeatures();
+    }
+  }, {
+    key: 'variationAxes',
+    get: function get() {
+      var res = {};
+      if (!this.fvar) {
+        return res;
+      }
+
+      for (var _iterator = this.fvar.axis, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+        var _ref;
+
+        if (_isArray) {
+          if (_i >= _iterator.length) break;
+          _ref = _iterator[_i++];
+        } else {
+          _i = _iterator.next();
+          if (_i.done) break;
+          _ref = _i.value;
+        }
+
+        var axis = _ref;
+
+        res[axis.axisTag.trim()] = {
+          name: axis.name.en,
+          min: axis.minValue,
+          default: axis.defaultValue,
+          max: axis.maxValue
+        };
+      }
+
+      return res;
+    }
+
+    /**
+     * Returns an object describing the named variation instances
+     * that the font designer has specified. Keys are variation names
+     * and values are the variation settings for this instance.
+     *
+     * @type {object}
+     */
+
+  }, {
+    key: 'namedVariations',
+    get: function get() {
+      var res = {};
+      if (!this.fvar) {
+        return res;
+      }
+
+      for (var _iterator2 = this.fvar.instance, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var instance = _ref2;
+
+        var settings = {};
+        for (var i = 0; i < this.fvar.axis.length; i++) {
+          var axis = this.fvar.axis[i];
+          settings[axis.axisTag.trim()] = instance.coord[i];
+        }
+
+        res[instance.name.en] = settings;
+      }
+
+      return res;
+    }
+  }, {
+    key: '_variationProcessor',
+    get: function get() {
+      if (!this.fvar) {
+        return null;
+      }
+
+      var variationCoords = this.variationCoords;
+
+      // Ignore if no variation coords and not CFF2
+      if (!variationCoords && !this.CFF2) {
+        return null;
+      }
+
+      if (!variationCoords) {
+        variationCoords = this.fvar.axis.map(function (axis) {
+          return axis.defaultValue;
+        });
+      }
+
+      return new GlyphVariationProcessor(this, variationCoords);
+    }
+  }]);
+
+  return TTFFont;
+}(), (_applyDecoratedDescriptor(_class.prototype, 'bbox', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, 'bbox'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, '_cmapProcessor', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, '_cmapProcessor'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'characterSet', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, 'characterSet'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, '_layoutEngine', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, '_layoutEngine'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'variationAxes', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, 'variationAxes'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'namedVariations', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, 'namedVariations'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, '_variationProcessor', [cache], _Object$getOwnPropertyDescriptor(_class.prototype, '_variationProcessor'), _class.prototype)), _class);
+
+var WOFFDirectoryEntry = new r.Struct({
+  tag: new r.String(4),
+  offset: new r.Pointer(r.uint32, 'void', { type: 'global' }),
+  compLength: r.uint32,
+  length: r.uint32,
+  origChecksum: r.uint32
+});
+
+var WOFFDirectory = new r.Struct({
+  tag: new r.String(4), // should be 'wOFF'
+  flavor: r.uint32,
+  length: r.uint32,
+  numTables: r.uint16,
+  reserved: new r.Reserved(r.uint16),
+  totalSfntSize: r.uint32,
+  majorVersion: r.uint16,
+  minorVersion: r.uint16,
+  metaOffset: r.uint32,
+  metaLength: r.uint32,
+  metaOrigLength: r.uint32,
+  privOffset: r.uint32,
+  privLength: r.uint32,
+  tables: new r.Array(WOFFDirectoryEntry, 'numTables')
+});
+
+WOFFDirectory.process = function () {
+  var tables = {};
+  for (var _iterator = this.tables, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+    var _ref;
+
+    if (_isArray) {
+      if (_i >= _iterator.length) break;
+      _ref = _iterator[_i++];
+    } else {
+      _i = _iterator.next();
+      if (_i.done) break;
+      _ref = _i.value;
+    }
+
+    var table = _ref;
+
+    tables[table.tag] = table;
+  }
+
+  this.tables = tables;
+};
+
+var WOFFFont = function (_TTFFont) {
+  _inherits(WOFFFont, _TTFFont);
+
+  function WOFFFont() {
+    _classCallCheck(this, WOFFFont);
+
+    return _possibleConstructorReturn(this, _TTFFont.apply(this, arguments));
+  }
+
+  WOFFFont.probe = function probe(buffer) {
+    return buffer.toString('ascii', 0, 4) === 'wOFF';
+  };
+
+  WOFFFont.prototype._decodeDirectory = function _decodeDirectory() {
+    this.directory = WOFFDirectory.decode(this.stream, { _startOffset: 0 });
+  };
+
+  WOFFFont.prototype._getTableStream = function _getTableStream(tag) {
+    var table = this.directory.tables[tag];
+    if (table) {
+      this.stream.pos = table.offset;
+
+      if (table.compLength < table.length) {
+        this.stream.pos += 2; // skip deflate header
+        var outBuffer = new Buffer(table.length);
+        var buf = inflate(this.stream.readBuffer(table.compLength - 2), outBuffer);
+        return new r.DecodeStream(buf);
+      } else {
+        return this.stream;
+      }
+    }
+
+    return null;
+  };
+
+  return WOFFFont;
+}(TTFFont);
+
+/**
+ * Represents a TrueType glyph in the WOFF2 format, which compresses glyphs differently.
+ */
+
+var WOFF2Glyph = function (_TTFGlyph) {
+  _inherits(WOFF2Glyph, _TTFGlyph);
+
+  function WOFF2Glyph() {
+    _classCallCheck(this, WOFF2Glyph);
+
+    return _possibleConstructorReturn(this, _TTFGlyph.apply(this, arguments));
+  }
+
+  WOFF2Glyph.prototype._decode = function _decode() {
+    // We have to decode in advance (in WOFF2Font), so just return the pre-decoded data.
+    return this._font._transformedGlyphs[this.id];
+  };
+
+  WOFF2Glyph.prototype._getCBox = function _getCBox() {
+    return this.path.bbox;
+  };
+
+  return WOFF2Glyph;
+}(TTFGlyph);
+
+var Base128 = {
+  decode: function decode(stream) {
+    var result = 0;
+    var iterable = [0, 1, 2, 3, 4];
+    for (var j = 0; j < iterable.length; j++) {
+      var i = iterable[j];
+      var code = stream.readUInt8();
+
+      // If any of the top seven bits are set then we're about to overflow.
+      if (result & 0xe0000000) {
+        throw new Error('Overflow');
+      }
+
+      result = result << 7 | code & 0x7f;
+      if ((code & 0x80) === 0) {
+        return result;
+      }
+    }
+
+    throw new Error('Bad base 128 number');
+  }
+};
+
+var knownTags = ['cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'OS/2', 'post', 'cvt ', 'fpgm', 'glyf', 'loca', 'prep', 'CFF ', 'VORG', 'EBDT', 'EBLC', 'gasp', 'hdmx', 'kern', 'LTSH', 'PCLT', 'VDMX', 'vhea', 'vmtx', 'BASE', 'GDEF', 'GPOS', 'GSUB', 'EBSC', 'JSTF', 'MATH', 'CBDT', 'CBLC', 'COLR', 'CPAL', 'SVG ', 'sbix', 'acnt', 'avar', 'bdat', 'bloc', 'bsln', 'cvar', 'fdsc', 'feat', 'fmtx', 'fvar', 'gvar', 'hsty', 'just', 'lcar', 'mort', 'morx', 'opbd', 'prop', 'trak', 'Zapf', 'Silf', 'Glat', 'Gloc', 'Feat', 'Sill'];
+
+var WOFF2DirectoryEntry = new r.Struct({
+  flags: r.uint8,
+  customTag: new r.Optional(new r.String(4), function (t) {
+    return (t.flags & 0x3f) === 0x3f;
+  }),
+  tag: function tag(t) {
+    return t.customTag || knownTags[t.flags & 0x3f];
+  }, // || (() => { throw new Error(`Bad tag: ${flags & 0x3f}`); })(); },
+  length: Base128,
+  transformVersion: function transformVersion(t) {
+    return t.flags >>> 6 & 0x03;
+  },
+  transformed: function transformed(t) {
+    return t.tag === 'glyf' || t.tag === 'loca' ? t.transformVersion === 0 : t.transformVersion !== 0;
+  },
+  transformLength: new r.Optional(Base128, function (t) {
+    return t.transformed;
+  })
+});
+
+var WOFF2Directory = new r.Struct({
+  tag: new r.String(4), // should be 'wOF2'
+  flavor: r.uint32,
+  length: r.uint32,
+  numTables: r.uint16,
+  reserved: new r.Reserved(r.uint16),
+  totalSfntSize: r.uint32,
+  totalCompressedSize: r.uint32,
+  majorVersion: r.uint16,
+  minorVersion: r.uint16,
+  metaOffset: r.uint32,
+  metaLength: r.uint32,
+  metaOrigLength: r.uint32,
+  privOffset: r.uint32,
+  privLength: r.uint32,
+  tables: new r.Array(WOFF2DirectoryEntry, 'numTables')
+});
+
+WOFF2Directory.process = function () {
+  var tables = {};
+  for (var i = 0; i < this.tables.length; i++) {
+    var table = this.tables[i];
+    tables[table.tag] = table;
+  }
+
+  return this.tables = tables;
+};
+
+/**
+ * Subclass of TTFFont that represents a TTF/OTF font compressed by WOFF2
+ * See spec here: http://www.w3.org/TR/WOFF2/
+ */
+
+var WOFF2Font = function (_TTFFont) {
+  _inherits(WOFF2Font, _TTFFont);
+
+  function WOFF2Font() {
+    _classCallCheck(this, WOFF2Font);
+
+    return _possibleConstructorReturn(this, _TTFFont.apply(this, arguments));
+  }
+
+  WOFF2Font.probe = function probe(buffer) {
+    return buffer.toString('ascii', 0, 4) === 'wOF2';
+  };
+
+  WOFF2Font.prototype._decodeDirectory = function _decodeDirectory() {
+    this.directory = WOFF2Directory.decode(this.stream);
+    this._dataPos = this.stream.pos;
+  };
+
+  WOFF2Font.prototype._decompress = function _decompress() {
+    // decompress data and setup table offsets if we haven't already
+    if (!this._decompressed) {
+      this.stream.pos = this._dataPos;
+      var buffer = this.stream.readBuffer(this.directory.totalCompressedSize);
+
+      var decompressedSize = 0;
+      for (var tag in this.directory.tables) {
+        var entry = this.directory.tables[tag];
+        entry.offset = decompressedSize;
+        decompressedSize += entry.transformLength != null ? entry.transformLength : entry.length;
+      }
+
+      var decompressed = brotli(buffer, decompressedSize);
+      if (!decompressed) {
+        throw new Error('Error decoding compressed data in WOFF2');
+      }
+
+      this.stream = new r.DecodeStream(new Buffer(decompressed));
+      this._decompressed = true;
+    }
+  };
+
+  WOFF2Font.prototype._decodeTable = function _decodeTable(table) {
+    this._decompress();
+    return _TTFFont.prototype._decodeTable.call(this, table);
+  };
+
+  // Override this method to get a glyph and return our
+  // custom subclass if there is a glyf table.
+
+
+  WOFF2Font.prototype._getBaseGlyph = function _getBaseGlyph(glyph) {
+    var characters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+    if (!this._glyphs[glyph]) {
+      if (this.directory.tables.glyf && this.directory.tables.glyf.transformed) {
+        if (!this._transformedGlyphs) {
+          this._transformGlyfTable();
+        }
+        return this._glyphs[glyph] = new WOFF2Glyph(glyph, characters, this);
+      } else {
+        return _TTFFont.prototype._getBaseGlyph.call(this, glyph, characters);
+      }
+    }
+  };
+
+  WOFF2Font.prototype._transformGlyfTable = function _transformGlyfTable() {
+    this._decompress();
+    this.stream.pos = this.directory.tables.glyf.offset;
+    var table = GlyfTable.decode(this.stream);
+    var glyphs = [];
+
+    for (var index = 0; index < table.numGlyphs; index++) {
+      var glyph = {};
+      var nContours = table.nContours.readInt16BE();
+      glyph.numberOfContours = nContours;
+
+      if (nContours > 0) {
+        // simple glyph
+        var nPoints = [];
+        var totalPoints = 0;
+
+        for (var i = 0; i < nContours; i++) {
+          var _r = read255UInt16(table.nPoints);
+          totalPoints += _r;
+          nPoints.push(totalPoints);
+        }
+
+        glyph.points = decodeTriplet(table.flags, table.glyphs, totalPoints);
+        for (var _i = 0; _i < nContours; _i++) {
+          glyph.points[nPoints[_i] - 1].endContour = true;
+        }
+
+        var instructionSize = read255UInt16(table.glyphs);
+      } else if (nContours < 0) {
+        // composite glyph
+        var haveInstructions = TTFGlyph.prototype._decodeComposite.call({ _font: this }, glyph, table.composites);
+        if (haveInstructions) {
+          var instructionSize = read255UInt16(table.glyphs);
+        }
+      }
+
+      glyphs.push(glyph);
+    }
+
+    this._transformedGlyphs = glyphs;
+  };
+
+  return WOFF2Font;
+}(TTFFont);
+
+var Substream = function () {
+  function Substream(length) {
+    _classCallCheck(this, Substream);
+
+    this.length = length;
+    this._buf = new r.Buffer(length);
+  }
+
+  Substream.prototype.decode = function decode(stream, parent) {
+    return new r.DecodeStream(this._buf.decode(stream, parent));
+  };
+
+  return Substream;
+}();
+
+// This struct represents the entire glyf table
+
+
+var GlyfTable = new r.Struct({
+  version: r.uint32,
+  numGlyphs: r.uint16,
+  indexFormat: r.uint16,
+  nContourStreamSize: r.uint32,
+  nPointsStreamSize: r.uint32,
+  flagStreamSize: r.uint32,
+  glyphStreamSize: r.uint32,
+  compositeStreamSize: r.uint32,
+  bboxStreamSize: r.uint32,
+  instructionStreamSize: r.uint32,
+  nContours: new Substream('nContourStreamSize'),
+  nPoints: new Substream('nPointsStreamSize'),
+  flags: new Substream('flagStreamSize'),
+  glyphs: new Substream('glyphStreamSize'),
+  composites: new Substream('compositeStreamSize'),
+  bboxes: new Substream('bboxStreamSize'),
+  instructions: new Substream('instructionStreamSize')
+});
+
+var WORD_CODE = 253;
+var ONE_MORE_BYTE_CODE2 = 254;
+var ONE_MORE_BYTE_CODE1 = 255;
+var LOWEST_U_CODE = 253;
+
+function read255UInt16(stream) {
+  var code = stream.readUInt8();
+
+  if (code === WORD_CODE) {
+    return stream.readUInt16BE();
+  }
+
+  if (code === ONE_MORE_BYTE_CODE1) {
+    return stream.readUInt8() + LOWEST_U_CODE;
+  }
+
+  if (code === ONE_MORE_BYTE_CODE2) {
+    return stream.readUInt8() + LOWEST_U_CODE * 2;
+  }
+
+  return code;
+}
+
+function withSign(flag, baseval) {
+  return flag & 1 ? baseval : -baseval;
+}
+
+function decodeTriplet(flags, glyphs, nPoints) {
+  var y = void 0;
+  var x = y = 0;
+  var res = [];
+
+  for (var i = 0; i < nPoints; i++) {
+    var dx = 0,
+        dy = 0;
+    var flag = flags.readUInt8();
+    var onCurve = !(flag >> 7);
+    flag &= 0x7f;
+
+    if (flag < 10) {
+      dx = 0;
+      dy = withSign(flag, ((flag & 14) << 7) + glyphs.readUInt8());
+    } else if (flag < 20) {
+      dx = withSign(flag, ((flag - 10 & 14) << 7) + glyphs.readUInt8());
+      dy = 0;
+    } else if (flag < 84) {
+      var b0 = flag - 20;
+      var b1 = glyphs.readUInt8();
+      dx = withSign(flag, 1 + (b0 & 0x30) + (b1 >> 4));
+      dy = withSign(flag >> 1, 1 + ((b0 & 0x0c) << 2) + (b1 & 0x0f));
+    } else if (flag < 120) {
+      var b0 = flag - 84;
+      dx = withSign(flag, 1 + (b0 / 12 << 8) + glyphs.readUInt8());
+      dy = withSign(flag >> 1, 1 + (b0 % 12 >> 2 << 8) + glyphs.readUInt8());
+    } else if (flag < 124) {
+      var b1 = glyphs.readUInt8();
+      var b2 = glyphs.readUInt8();
+      dx = withSign(flag, (b1 << 4) + (b2 >> 4));
+      dy = withSign(flag >> 1, ((b2 & 0x0f) << 8) + glyphs.readUInt8());
+    } else {
+      dx = withSign(flag, glyphs.readUInt16BE());
+      dy = withSign(flag >> 1, glyphs.readUInt16BE());
+    }
+
+    x += dx;
+    y += dy;
+    res.push(new Point(onCurve, false, x, y));
+  }
+
+  return res;
+}
+
+var TTCHeader = new r.VersionedStruct(r.uint32, {
+  0x00010000: {
+    numFonts: r.uint32,
+    offsets: new r.Array(r.uint32, 'numFonts')
+  },
+  0x00020000: {
+    numFonts: r.uint32,
+    offsets: new r.Array(r.uint32, 'numFonts'),
+    dsigTag: r.uint32,
+    dsigLength: r.uint32,
+    dsigOffset: r.uint32
+  }
+});
+
+var TrueTypeCollection = function () {
+  TrueTypeCollection.probe = function probe(buffer) {
+    return buffer.toString('ascii', 0, 4) === 'ttcf';
+  };
+
+  function TrueTypeCollection(stream) {
+    _classCallCheck(this, TrueTypeCollection);
+
+    this.stream = stream;
+    if (stream.readString(4) !== 'ttcf') {
+      throw new Error('Not a TrueType collection');
+    }
+
+    this.header = TTCHeader.decode(stream);
+  }
+
+  TrueTypeCollection.prototype.getFont = function getFont(name) {
+    for (var _iterator = this.header.offsets, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var offset = _ref;
+
+      var stream = new r.DecodeStream(this.stream.buffer);
+      stream.pos = offset;
+      var font = new TTFFont(stream);
+      if (font.postscriptName === name) {
+        return font;
+      }
+    }
+
+    return null;
+  };
+
+  _createClass(TrueTypeCollection, [{
+    key: 'fonts',
+    get: function get() {
+      var fonts = [];
+      for (var _iterator2 = this.header.offsets, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+        var _ref2;
+
+        if (_isArray2) {
+          if (_i2 >= _iterator2.length) break;
+          _ref2 = _iterator2[_i2++];
+        } else {
+          _i2 = _iterator2.next();
+          if (_i2.done) break;
+          _ref2 = _i2.value;
+        }
+
+        var offset = _ref2;
+
+        var stream = new r.DecodeStream(this.stream.buffer);
+        stream.pos = offset;
+        fonts.push(new TTFFont(stream));
+      }
+
+      return fonts;
+    }
+  }]);
+
+  return TrueTypeCollection;
+}();
+
+var DFontName = new r.String(r.uint8);
+var DFontData = new r.Struct({
+  len: r.uint32,
+  buf: new r.Buffer('len')
+});
+
+var Ref = new r.Struct({
+  id: r.uint16,
+  nameOffset: r.int16,
+  attr: r.uint8,
+  dataOffset: r.uint24,
+  handle: r.uint32
+});
+
+var Type = new r.Struct({
+  name: new r.String(4),
+  maxTypeIndex: r.uint16,
+  refList: new r.Pointer(r.uint16, new r.Array(Ref, function (t) {
+    return t.maxTypeIndex + 1;
+  }), { type: 'parent' })
+});
+
+var TypeList = new r.Struct({
+  length: r.uint16,
+  types: new r.Array(Type, function (t) {
+    return t.length + 1;
+  })
+});
+
+var DFontMap = new r.Struct({
+  reserved: new r.Reserved(r.uint8, 24),
+  typeList: new r.Pointer(r.uint16, TypeList),
+  nameListOffset: new r.Pointer(r.uint16, 'void')
+});
+
+var DFontHeader = new r.Struct({
+  dataOffset: r.uint32,
+  map: new r.Pointer(r.uint32, DFontMap),
+  dataLength: r.uint32,
+  mapLength: r.uint32
+});
+
+var DFont = function () {
+  DFont.probe = function probe(buffer) {
+    var stream = new r.DecodeStream(buffer);
+
+    try {
+      var header = DFontHeader.decode(stream);
+    } catch (e) {
+      return false;
+    }
+
+    for (var _iterator = header.map.typeList.types, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+      var _ref;
+
+      if (_isArray) {
+        if (_i >= _iterator.length) break;
+        _ref = _iterator[_i++];
+      } else {
+        _i = _iterator.next();
+        if (_i.done) break;
+        _ref = _i.value;
+      }
+
+      var type = _ref;
+
+      if (type.name === 'sfnt') {
+        return true;
+      }
+    }
+
+    return false;
+  };
+
+  function DFont(stream) {
+    _classCallCheck(this, DFont);
+
+    this.stream = stream;
+    this.header = DFontHeader.decode(this.stream);
+
+    for (var _iterator2 = this.header.map.typeList.types, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+      var _ref2;
+
+      if (_isArray2) {
+        if (_i2 >= _iterator2.length) break;
+        _ref2 = _iterator2[_i2++];
+      } else {
+        _i2 = _iterator2.next();
+        if (_i2.done) break;
+        _ref2 = _i2.value;
+      }
+
+      var type = _ref2;
+
+      for (var _iterator3 = type.refList, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+        var _ref3;
+
+        if (_isArray3) {
+          if (_i3 >= _iterator3.length) break;
+          _ref3 = _iterator3[_i3++];
+        } else {
+          _i3 = _iterator3.next();
+          if (_i3.done) break;
+          _ref3 = _i3.value;
+        }
+
+        var ref = _ref3;
+
+        if (ref.nameOffset >= 0) {
+          this.stream.pos = ref.nameOffset + this.header.map.nameListOffset;
+          ref.name = DFontName.decode(this.stream);
+        } else {
+          ref.name = null;
+        }
+      }
+
+      if (type.name === 'sfnt') {
+        this.sfnt = type;
+      }
+    }
+  }
+
+  DFont.prototype.getFont = function getFont(name) {
+    if (!this.sfnt) {
+      return null;
+    }
+
+    for (var _iterator4 = this.sfnt.refList, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+      var _ref4;
+
+      if (_isArray4) {
+        if (_i4 >= _iterator4.length) break;
+        _ref4 = _iterator4[_i4++];
+      } else {
+        _i4 = _iterator4.next();
+        if (_i4.done) break;
+        _ref4 = _i4.value;
+      }
+
+      var ref = _ref4;
+
+      var pos = this.header.dataOffset + ref.dataOffset + 4;
+      var stream = new r.DecodeStream(this.stream.buffer.slice(pos));
+      var font = new TTFFont(stream);
+      if (font.postscriptName === name) {
+        return font;
+      }
+    }
+
+    return null;
+  };
+
+  _createClass(DFont, [{
+    key: 'fonts',
+    get: function get() {
+      var fonts = [];
+      for (var _iterator5 = this.sfnt.refList, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
+        var _ref5;
+
+        if (_isArray5) {
+          if (_i5 >= _iterator5.length) break;
+          _ref5 = _iterator5[_i5++];
+        } else {
+          _i5 = _iterator5.next();
+          if (_i5.done) break;
+          _ref5 = _i5.value;
+        }
+
+        var ref = _ref5;
+
+        var pos = this.header.dataOffset + ref.dataOffset + 4;
+        var stream = new r.DecodeStream(this.stream.buffer.slice(pos));
+        fonts.push(new TTFFont(stream));
+      }
+
+      return fonts;
+    }
+  }]);
+
+  return DFont;
+}();
+
+// Register font formats
+fontkit.registerFormat(TTFFont);
+fontkit.registerFormat(WOFFFont);
+fontkit.registerFormat(WOFF2Font);
+fontkit.registerFormat(TrueTypeCollection);
+fontkit.registerFormat(DFont);
+
+module.exports = fontkit;
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, __webpack_require__(11)))
+
+/***/ }),
+/* 168 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var key, val, _ref, _ref1;
+
+  exports.EncodeStream = __webpack_require__(169);
+
+  exports.DecodeStream = __webpack_require__(51);
+
+  exports.Array = __webpack_require__(93);
+
+  exports.LazyArray = __webpack_require__(187);
+
+  exports.Bitfield = __webpack_require__(188);
+
+  exports.Boolean = __webpack_require__(189);
+
+  exports.Buffer = __webpack_require__(190);
+
+  exports.Enum = __webpack_require__(191);
+
+  exports.Optional = __webpack_require__(192);
+
+  exports.Reserved = __webpack_require__(193);
+
+  exports.String = __webpack_require__(194);
+
+  exports.Struct = __webpack_require__(94);
+
+  exports.VersionedStruct = __webpack_require__(195);
+
+  _ref = __webpack_require__(22);
+  for (key in _ref) {
+    val = _ref[key];
+    exports[key] = val;
+  }
+
+  _ref1 = __webpack_require__(196);
+  for (key in _ref1) {
+    val = _ref1[key];
+    exports[key] = val;
+  }
+
+}).call(this);
+
+
+/***/ }),
+/* 169 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.7.1
+(function() {
+  var DecodeStream, EncodeStream, iconv, stream,
+    __hasProp = {}.hasOwnProperty,
+    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
+
+  stream = __webpack_require__(15);
+
+  DecodeStream = __webpack_require__(51);
+
+  try {
+    iconv = __webpack_require__(52);
+  } catch (_error) {}
+
+  EncodeStream = (function(_super) {
+    var key;
+
+    __extends(EncodeStream, _super);
+
+    function EncodeStream(bufferSize) {
+      if (bufferSize == null) {
+        bufferSize = 65536;
+      }
+      EncodeStream.__super__.constructor.apply(this, arguments);
+      this.buffer = new Buffer(bufferSize);
+      this.bufferOffset = 0;
+      this.pos = 0;
+    }
+
+    for (key in Buffer.prototype) {
+      if (key.slice(0, 5) === 'write') {
+        (function(key) {
+          var bytes;
+          bytes = +DecodeStream.TYPES[key.replace(/write|[BL]E/g, '')];
+          return EncodeStream.prototype[key] = function(value) {
+            this.ensure(bytes);
+            this.buffer[key](value, this.bufferOffset);
+            this.bufferOffset += bytes;
+            return this.pos += bytes;
+          };
+        })(key);
+      }
+    }
+
+    EncodeStream.prototype._read = function() {};
+
+    EncodeStream.prototype.ensure = function(bytes) {
+      if (this.bufferOffset + bytes > this.buffer.length) {
+        return this.flush();
+      }
+    };
+
+    EncodeStream.prototype.flush = function() {
+      if (this.bufferOffset > 0) {
+        this.push(new Buffer(this.buffer.slice(0, this.bufferOffset)));
+        return this.bufferOffset = 0;
+      }
+    };
+
+    EncodeStream.prototype.writeBuffer = function(buffer) {
+      this.flush();
+      this.push(buffer);
+      return this.pos += buffer.length;
+    };
+
+    EncodeStream.prototype.writeString = function(string, encoding) {
+      var buf, byte, i, _i, _ref;
+      if (encoding == null) {
+        encoding = 'ascii';
+      }
+      switch (encoding) {
+        case 'utf16le':
+        case 'ucs2':
+        case 'utf8':
+        case 'ascii':
+          return this.writeBuffer(new Buffer(string, encoding));
+        case 'utf16be':
+          buf = new Buffer(string, 'utf16le');
+          for (i = _i = 0, _ref = buf.length - 1; _i < _ref; i = _i += 2) {
+            byte = buf[i];
+            buf[i] = buf[i + 1];
+            buf[i + 1] = byte;
+          }
+          return this.writeBuffer(buf);
+        default:
+          if (iconv) {
+            return this.writeBuffer(iconv.encode(string, encoding));
+          } else {
+            throw new Error('Install iconv-lite to enable additional string encodings.');
+          }
+      }
+    };
+
+    EncodeStream.prototype.writeUInt24BE = function(val) {
+      this.ensure(3);
+      this.buffer[this.bufferOffset++] = val >>> 16 & 0xff;
+      this.buffer[this.bufferOffset++] = val >>> 8 & 0xff;
+      this.buffer[this.bufferOffset++] = val & 0xff;
+      return this.pos += 3;
+    };
+
+    EncodeStream.prototype.writeUInt24LE = function(val) {
+      this.ensure(3);
+      this.buffer[this.bufferOffset++] = val & 0xff;
+      this.buffer[this.bufferOffset++] = val >>> 8 & 0xff;
+      this.buffer[this.bufferOffset++] = val >>> 16 & 0xff;
+      return this.pos += 3;
+    };
+
+    EncodeStream.prototype.writeInt24BE = function(val) {
+      if (val >= 0) {
+        return this.writeUInt24BE(val);
+      } else {
+        return this.writeUInt24BE(val + 0xffffff + 1);
+      }
+    };
+
+    EncodeStream.prototype.writeInt24LE = function(val) {
+      if (val >= 0) {
+        return this.writeUInt24LE(val);
+      } else {
+        return this.writeUInt24LE(val + 0xffffff + 1);
+      }
+    };
+
+    EncodeStream.prototype.fill = function(val, length) {
+      var buf;
+      if (length < this.buffer.length) {
+        this.ensure(length);
+        this.buffer.fill(val, this.bufferOffset, this.bufferOffset + length);
+        this.bufferOffset += length;
+        return this.pos += length;
+      } else {
+        buf = new Buffer(length);
+        buf.fill(val);
+        return this.writeBuffer(buf);
+      }
+    };
+
+    EncodeStream.prototype.end = function() {
+      this.flush();
+      return this.push(null);
+    };
+
+    return EncodeStream;
+
+  })(stream.Readable);
+
+  module.exports = EncodeStream;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 170 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var BOMChar = '\uFEFF';
+
+exports.PrependBOM = PrependBOMWrapper
+function PrependBOMWrapper(encoder, options) {
+    this.encoder = encoder;
+    this.addBOM = true;
+}
+
+PrependBOMWrapper.prototype.write = function(str) {
+    if (this.addBOM) {
+        str = BOMChar + str;
+        this.addBOM = false;
+    }
+
+    return this.encoder.write(str);
+}
+
+PrependBOMWrapper.prototype.end = function() {
+    return this.encoder.end();
+}
+
+
+//------------------------------------------------------------------------------
+
+exports.StripBOM = StripBOMWrapper;
+function StripBOMWrapper(decoder, options) {
+    this.decoder = decoder;
+    this.pass = false;
+    this.options = options || {};
+}
+
+StripBOMWrapper.prototype.write = function(buf) {
+    var res = this.decoder.write(buf);
+    if (this.pass || !res)
+        return res;
+
+    if (res[0] === BOMChar) {
+        res = res.slice(1);
+        if (typeof this.options.stripBOM === 'function')
+            this.options.stripBOM();
+    }
+
+    this.pass = true;
+    return res;
+}
+
+StripBOMWrapper.prototype.end = function() {
+    return this.decoder.end();
+}
+
+
+
+/***/ }),
+/* 171 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Update this array if you add/rename/remove files in this directory.
+// We support Browserify by skipping automatic module discovery and requiring modules directly.
+var modules = [
+    __webpack_require__(172),
+    __webpack_require__(173),
+    __webpack_require__(174),
+    __webpack_require__(175),
+    __webpack_require__(176),
+    __webpack_require__(177),
+    __webpack_require__(178),
+    __webpack_require__(179),
+];
+
+// Put all encoding/alias/codec definitions to single object and export it. 
+for (var i = 0; i < modules.length; i++) {
+    var module = modules[i];
+    for (var enc in module)
+        if (Object.prototype.hasOwnProperty.call(module, enc))
+            exports[enc] = module[enc];
+}
+
+
+/***/ }),
+/* 172 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// Export Node.js internal encodings.
+
+module.exports = {
+    // Encodings
+    utf8:   { type: "_internal", bomAware: true},
+    cesu8:  { type: "_internal", bomAware: true},
+    unicode11utf8: "utf8",
+
+    ucs2:   { type: "_internal", bomAware: true},
+    utf16le: "ucs2",
+
+    binary: { type: "_internal" },
+    base64: { type: "_internal" },
+    hex:    { type: "_internal" },
+
+    // Codec.
+    _internal: InternalCodec,
+};
+
+//------------------------------------------------------------------------------
+
+function InternalCodec(codecOptions, iconv) {
+    this.enc = codecOptions.encodingName;
+    this.bomAware = codecOptions.bomAware;
+
+    if (this.enc === "base64")
+        this.encoder = InternalEncoderBase64;
+    else if (this.enc === "cesu8") {
+        this.enc = "utf8"; // Use utf8 for decoding.
+        this.encoder = InternalEncoderCesu8;
+
+        // Add decoder for versions of Node not supporting CESU-8
+        if (new Buffer('eda0bdedb2a9', 'hex').toString() !== '💩') {
+            this.decoder = InternalDecoderCesu8;
+            this.defaultCharUnicode = iconv.defaultCharUnicode;
+        }
+    }
+}
+
+InternalCodec.prototype.encoder = InternalEncoder;
+InternalCodec.prototype.decoder = InternalDecoder;
+
+//------------------------------------------------------------------------------
+
+// We use node.js internal decoder. Its signature is the same as ours.
+var StringDecoder = __webpack_require__(47).StringDecoder;
+
+if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.
+    StringDecoder.prototype.end = function() {};
+
+
+function InternalDecoder(options, codec) {
+    StringDecoder.call(this, codec.enc);
+}
+
+InternalDecoder.prototype = StringDecoder.prototype;
+
+
+//------------------------------------------------------------------------------
+// Encoder is mostly trivial
+
+function InternalEncoder(options, codec) {
+    this.enc = codec.enc;
+}
+
+InternalEncoder.prototype.write = function(str) {
+    return new Buffer(str, this.enc);
+}
+
+InternalEncoder.prototype.end = function() {
+}
+
+
+//------------------------------------------------------------------------------
+// Except base64 encoder, which must keep its state.
+
+function InternalEncoderBase64(options, codec) {
+    this.prevStr = '';
+}
+
+InternalEncoderBase64.prototype.write = function(str) {
+    str = this.prevStr + str;
+    var completeQuads = str.length - (str.length % 4);
+    this.prevStr = str.slice(completeQuads);
+    str = str.slice(0, completeQuads);
+
+    return new Buffer(str, "base64");
+}
+
+InternalEncoderBase64.prototype.end = function() {
+    return new Buffer(this.prevStr, "base64");
+}
+
+
+//------------------------------------------------------------------------------
+// CESU-8 encoder is also special.
+
+function InternalEncoderCesu8(options, codec) {
+}
+
+InternalEncoderCesu8.prototype.write = function(str) {
+    var buf = new Buffer(str.length * 3), bufIdx = 0;
+    for (var i = 0; i < str.length; i++) {
+        var charCode = str.charCodeAt(i);
+        // Naive implementation, but it works because CESU-8 is especially easy
+        // to convert from UTF-16 (which all JS strings are encoded in).
+        if (charCode < 0x80)
+            buf[bufIdx++] = charCode;
+        else if (charCode < 0x800) {
+            buf[bufIdx++] = 0xC0 + (charCode >>> 6);
+            buf[bufIdx++] = 0x80 + (charCode & 0x3f);
+        }
+        else { // charCode will always be < 0x10000 in javascript.
+            buf[bufIdx++] = 0xE0 + (charCode >>> 12);
+            buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);
+            buf[bufIdx++] = 0x80 + (charCode & 0x3f);
+        }
+    }
+    return buf.slice(0, bufIdx);
+}
+
+InternalEncoderCesu8.prototype.end = function() {
+}
+
+//------------------------------------------------------------------------------
+// CESU-8 decoder is not implemented in Node v4.0+
+
+function InternalDecoderCesu8(options, codec) {
+    this.acc = 0;
+    this.contBytes = 0;
+    this.accBytes = 0;
+    this.defaultCharUnicode = codec.defaultCharUnicode;
+}
+
+InternalDecoderCesu8.prototype.write = function(buf) {
+    var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, 
+        res = '';
+    for (var i = 0; i < buf.length; i++) {
+        var curByte = buf[i];
+        if ((curByte & 0xC0) !== 0x80) { // Leading byte
+            if (contBytes > 0) { // Previous code is invalid
+                res += this.defaultCharUnicode;
+                contBytes = 0;
+            }
+
+            if (curByte < 0x80) { // Single-byte code
+                res += String.fromCharCode(curByte);
+            } else if (curByte < 0xE0) { // Two-byte code
+                acc = curByte & 0x1F;
+                contBytes = 1; accBytes = 1;
+            } else if (curByte < 0xF0) { // Three-byte code
+                acc = curByte & 0x0F;
+                contBytes = 2; accBytes = 1;
+            } else { // Four or more are not supported for CESU-8.
+                res += this.defaultCharUnicode;
+            }
+        } else { // Continuation byte
+            if (contBytes > 0) { // We're waiting for it.
+                acc = (acc << 6) | (curByte & 0x3f);
+                contBytes--; accBytes++;
+                if (contBytes === 0) {
+                    // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)
+                    if (accBytes === 2 && acc < 0x80 && acc > 0)
+                        res += this.defaultCharUnicode;
+                    else if (accBytes === 3 && acc < 0x800)
+                        res += this.defaultCharUnicode;
+                    else
+                        // Actually add character.
+                        res += String.fromCharCode(acc);
+                }
+            } else { // Unexpected continuation byte
+                res += this.defaultCharUnicode;
+            }
+        }
+    }
+    this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;
+    return res;
+}
+
+InternalDecoderCesu8.prototype.end = function() {
+    var res = 0;
+    if (this.contBytes > 0)
+        res += this.defaultCharUnicode;
+    return res;
+}
+
+
+/***/ }),
+/* 173 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js
+
+// == UTF16-BE codec. ==========================================================
+
+exports.utf16be = Utf16BECodec;
+function Utf16BECodec() {
+}
+
+Utf16BECodec.prototype.encoder = Utf16BEEncoder;
+Utf16BECodec.prototype.decoder = Utf16BEDecoder;
+Utf16BECodec.prototype.bomAware = true;
+
+
+// -- Encoding
+
+function Utf16BEEncoder() {
+}
+
+Utf16BEEncoder.prototype.write = function(str) {
+    var buf = new Buffer(str, 'ucs2');
+    for (var i = 0; i < buf.length; i += 2) {
+        var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;
+    }
+    return buf;
+}
+
+Utf16BEEncoder.prototype.end = function() {
+}
+
+
+// -- Decoding
+
+function Utf16BEDecoder() {
+    this.overflowByte = -1;
+}
+
+Utf16BEDecoder.prototype.write = function(buf) {
+    if (buf.length == 0)
+        return '';
+
+    var buf2 = new Buffer(buf.length + 1),
+        i = 0, j = 0;
+
+    if (this.overflowByte !== -1) {
+        buf2[0] = buf[0];
+        buf2[1] = this.overflowByte;
+        i = 1; j = 2;
+    }
+
+    for (; i < buf.length-1; i += 2, j+= 2) {
+        buf2[j] = buf[i+1];
+        buf2[j+1] = buf[i];
+    }
+
+    this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;
+
+    return buf2.slice(0, j).toString('ucs2');
+}
+
+Utf16BEDecoder.prototype.end = function() {
+}
+
+
+// == UTF-16 codec =============================================================
+// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.
+// Defaults to UTF-16LE, as it's prevalent and default in Node.
+// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le
+// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});
+
+// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).
+
+exports.utf16 = Utf16Codec;
+function Utf16Codec(codecOptions, iconv) {
+    this.iconv = iconv;
+}
+
+Utf16Codec.prototype.encoder = Utf16Encoder;
+Utf16Codec.prototype.decoder = Utf16Decoder;
+
+
+// -- Encoding (pass-through)
+
+function Utf16Encoder(options, codec) {
+    options = options || {};
+    if (options.addBOM === undefined)
+        options.addBOM = true;
+    this.encoder = codec.iconv.getEncoder('utf-16le', options);
+}
+
+Utf16Encoder.prototype.write = function(str) {
+    return this.encoder.write(str);
+}
+
+Utf16Encoder.prototype.end = function() {
+    return this.encoder.end();
+}
+
+
+// -- Decoding
+
+function Utf16Decoder(options, codec) {
+    this.decoder = null;
+    this.initialBytes = [];
+    this.initialBytesLen = 0;
+
+    this.options = options || {};
+    this.iconv = codec.iconv;
+}
+
+Utf16Decoder.prototype.write = function(buf) {
+    if (!this.decoder) {
+        // Codec is not chosen yet. Accumulate initial bytes.
+        this.initialBytes.push(buf);
+        this.initialBytesLen += buf.length;
+        
+        if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below)
+            return '';
+
+        // We have enough bytes -> detect endianness.
+        var buf = Buffer.concat(this.initialBytes),
+            encoding = detectEncoding(buf, this.options.defaultEncoding);
+        this.decoder = this.iconv.getDecoder(encoding, this.options);
+        this.initialBytes.length = this.initialBytesLen = 0;
+    }
+
+    return this.decoder.write(buf);
+}
+
+Utf16Decoder.prototype.end = function() {
+    if (!this.decoder) {
+        var buf = Buffer.concat(this.initialBytes),
+            encoding = detectEncoding(buf, this.options.defaultEncoding);
+        this.decoder = this.iconv.getDecoder(encoding, this.options);
+
+        var res = this.decoder.write(buf),
+            trail = this.decoder.end();
+
+        return trail ? (res + trail) : res;
+    }
+    return this.decoder.end();
+}
+
+function detectEncoding(buf, defaultEncoding) {
+    var enc = defaultEncoding || 'utf-16le';
+
+    if (buf.length >= 2) {
+        // Check BOM.
+        if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM
+            enc = 'utf-16be';
+        else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM
+            enc = 'utf-16le';
+        else {
+            // No BOM found. Try to deduce encoding from initial content.
+            // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.
+            // So, we count ASCII as if it was LE or BE, and decide from that.
+            var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions
+                _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even.
+
+            for (var i = 0; i < _len; i += 2) {
+                if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++;
+                if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++;
+            }
+
+            if (asciiCharsBE > asciiCharsLE)
+                enc = 'utf-16be';
+            else if (asciiCharsBE < asciiCharsLE)
+                enc = 'utf-16le';
+        }
+    }
+
+    return enc;
+}
+
+
+
+
+/***/ }),
+/* 174 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152
+// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3
+
+exports.utf7 = Utf7Codec;
+exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7
+function Utf7Codec(codecOptions, iconv) {
+    this.iconv = iconv;
+};
+
+Utf7Codec.prototype.encoder = Utf7Encoder;
+Utf7Codec.prototype.decoder = Utf7Decoder;
+Utf7Codec.prototype.bomAware = true;
+
+
+// -- Encoding
+
+var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;
+
+function Utf7Encoder(options, codec) {
+    this.iconv = codec.iconv;
+}
+
+Utf7Encoder.prototype.write = function(str) {
+    // Naive implementation.
+    // Non-direct chars are encoded as "+<base64>-"; single "+" char is encoded as "+-".
+    return new Buffer(str.replace(nonDirectChars, function(chunk) {
+        return "+" + (chunk === '+' ? '' : 
+            this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) 
+            + "-";
+    }.bind(this)));
+}
+
+Utf7Encoder.prototype.end = function() {
+}
+
+
+// -- Decoding
+
+function Utf7Decoder(options, codec) {
+    this.iconv = codec.iconv;
+    this.inBase64 = false;
+    this.base64Accum = '';
+}
+
+var base64Regex = /[A-Za-z0-9\/+]/;
+var base64Chars = [];
+for (var i = 0; i < 256; i++)
+    base64Chars[i] = base64Regex.test(String.fromCharCode(i));
+
+var plusChar = '+'.charCodeAt(0), 
+    minusChar = '-'.charCodeAt(0),
+    andChar = '&'.charCodeAt(0);
+
+Utf7Decoder.prototype.write = function(buf) {
+    var res = "", lastI = 0,
+        inBase64 = this.inBase64,
+        base64Accum = this.base64Accum;
+
+    // The decoder is more involved as we must handle chunks in stream.
+
+    for (var i = 0; i < buf.length; i++) {
+        if (!inBase64) { // We're in direct mode.
+            // Write direct chars until '+'
+            if (buf[i] == plusChar) {
+                res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
+                lastI = i+1;
+                inBase64 = true;
+            }
+        } else { // We decode base64.
+            if (!base64Chars[buf[i]]) { // Base64 ended.
+                if (i == lastI && buf[i] == minusChar) {// "+-" -> "+"
+                    res += "+";
+                } else {
+                    var b64str = base64Accum + buf.slice(lastI, i).toString();
+                    res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be");
+                }
+
+                if (buf[i] != minusChar) // Minus is absorbed after base64.
+                    i--;
+
+                lastI = i+1;
+                inBase64 = false;
+                base64Accum = '';
+            }
+        }
+    }
+
+    if (!inBase64) {
+        res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
+    } else {
+        var b64str = base64Accum + buf.slice(lastI).toString();
+
+        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
+        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
+        b64str = b64str.slice(0, canBeDecoded);
+
+        res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be");
+    }
+
+    this.inBase64 = inBase64;
+    this.base64Accum = base64Accum;
+
+    return res;
+}
+
+Utf7Decoder.prototype.end = function() {
+    var res = "";
+    if (this.inBase64 && this.base64Accum.length > 0)
+        res = this.iconv.decode(new Buffer(this.base64Accum, 'base64'), "utf16-be");
+
+    this.inBase64 = false;
+    this.base64Accum = '';
+    return res;
+}
+
+
+// UTF-7-IMAP codec.
+// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)
+// Differences:
+//  * Base64 part is started by "&" instead of "+"
+//  * Direct characters are 0x20-0x7E, except "&" (0x26)
+//  * In Base64, "," is used instead of "/"
+//  * Base64 must not be used to represent direct characters.
+//  * No implicit shift back from Base64 (should always end with '-')
+//  * String must end in non-shifted position.
+//  * "-&" while in base64 is not allowed.
+
+
+exports.utf7imap = Utf7IMAPCodec;
+function Utf7IMAPCodec(codecOptions, iconv) {
+    this.iconv = iconv;
+};
+
+Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;
+Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;
+Utf7IMAPCodec.prototype.bomAware = true;
+
+
+// -- Encoding
+
+function Utf7IMAPEncoder(options, codec) {
+    this.iconv = codec.iconv;
+    this.inBase64 = false;
+    this.base64Accum = new Buffer(6);
+    this.base64AccumIdx = 0;
+}
+
+Utf7IMAPEncoder.prototype.write = function(str) {
+    var inBase64 = this.inBase64,
+        base64Accum = this.base64Accum,
+        base64AccumIdx = this.base64AccumIdx,
+        buf = new Buffer(str.length*5 + 10), bufIdx = 0;
+
+    for (var i = 0; i < str.length; i++) {
+        var uChar = str.charCodeAt(i);
+        if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.
+            if (inBase64) {
+                if (base64AccumIdx > 0) {
+                    bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
+                    base64AccumIdx = 0;
+                }
+
+                buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
+                inBase64 = false;
+            }
+
+            if (!inBase64) {
+                buf[bufIdx++] = uChar; // Write direct character
+
+                if (uChar === andChar)  // Ampersand -> '&-'
+                    buf[bufIdx++] = minusChar;
+            }
+
+        } else { // Non-direct character
+            if (!inBase64) {
+                buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.
+                inBase64 = true;
+            }
+            if (inBase64) {
+                base64Accum[base64AccumIdx++] = uChar >> 8;
+                base64Accum[base64AccumIdx++] = uChar & 0xFF;
+
+                if (base64AccumIdx == base64Accum.length) {
+                    bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx);
+                    base64AccumIdx = 0;
+                }
+            }
+        }
+    }
+
+    this.inBase64 = inBase64;
+    this.base64AccumIdx = base64AccumIdx;
+
+    return buf.slice(0, bufIdx);
+}
+
+Utf7IMAPEncoder.prototype.end = function() {
+    var buf = new Buffer(10), bufIdx = 0;
+    if (this.inBase64) {
+        if (this.base64AccumIdx > 0) {
+            bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
+            this.base64AccumIdx = 0;
+        }
+
+        buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
+        this.inBase64 = false;
+    }
+
+    return buf.slice(0, bufIdx);
+}
+
+
+// -- Decoding
+
+function Utf7IMAPDecoder(options, codec) {
+    this.iconv = codec.iconv;
+    this.inBase64 = false;
+    this.base64Accum = '';
+}
+
+var base64IMAPChars = base64Chars.slice();
+base64IMAPChars[','.charCodeAt(0)] = true;
+
+Utf7IMAPDecoder.prototype.write = function(buf) {
+    var res = "", lastI = 0,
+        inBase64 = this.inBase64,
+        base64Accum = this.base64Accum;
+
+    // The decoder is more involved as we must handle chunks in stream.
+    // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).
+
+    for (var i = 0; i < buf.length; i++) {
+        if (!inBase64) { // We're in direct mode.
+            // Write direct chars until '&'
+            if (buf[i] == andChar) {
+                res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
+                lastI = i+1;
+                inBase64 = true;
+            }
+        } else { // We decode base64.
+            if (!base64IMAPChars[buf[i]]) { // Base64 ended.
+                if (i == lastI && buf[i] == minusChar) { // "&-" -> "&"
+                    res += "&";
+                } else {
+                    var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/');
+                    res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be");
+                }
+
+                if (buf[i] != minusChar) // Minus may be absorbed after base64.
+                    i--;
+
+                lastI = i+1;
+                inBase64 = false;
+                base64Accum = '';
+            }
+        }
+    }
+
+    if (!inBase64) {
+        res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
+    } else {
+        var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/');
+
+        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
+        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
+        b64str = b64str.slice(0, canBeDecoded);
+
+        res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be");
+    }
+
+    this.inBase64 = inBase64;
+    this.base64Accum = base64Accum;
+
+    return res;
+}
+
+Utf7IMAPDecoder.prototype.end = function() {
+    var res = "";
+    if (this.inBase64 && this.base64Accum.length > 0)
+        res = this.iconv.decode(new Buffer(this.base64Accum, 'base64'), "utf16-be");
+
+    this.inBase64 = false;
+    this.base64Accum = '';
+    return res;
+}
+
+
+
+
+/***/ }),
+/* 175 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that
+// correspond to encoded bytes (if 128 - then lower half is ASCII). 
+
+exports._sbcs = SBCSCodec;
+function SBCSCodec(codecOptions, iconv) {
+    if (!codecOptions)
+        throw new Error("SBCS codec is called without the data.")
+    
+    // Prepare char buffer for decoding.
+    if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))
+        throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)");
+    
+    if (codecOptions.chars.length === 128) {
+        var asciiString = "";
+        for (var i = 0; i < 128; i++)
+            asciiString += String.fromCharCode(i);
+        codecOptions.chars = asciiString + codecOptions.chars;
+    }
+
+    this.decodeBuf = new Buffer(codecOptions.chars, 'ucs2');
+    
+    // Encoding buffer.
+    var encodeBuf = new Buffer(65536);
+    encodeBuf.fill(iconv.defaultCharSingleByte.charCodeAt(0));
+
+    for (var i = 0; i < codecOptions.chars.length; i++)
+        encodeBuf[codecOptions.chars.charCodeAt(i)] = i;
+
+    this.encodeBuf = encodeBuf;
+}
+
+SBCSCodec.prototype.encoder = SBCSEncoder;
+SBCSCodec.prototype.decoder = SBCSDecoder;
+
+
+function SBCSEncoder(options, codec) {
+    this.encodeBuf = codec.encodeBuf;
+}
+
+SBCSEncoder.prototype.write = function(str) {
+    var buf = new Buffer(str.length);
+    for (var i = 0; i < str.length; i++)
+        buf[i] = this.encodeBuf[str.charCodeAt(i)];
+    
+    return buf;
+}
+
+SBCSEncoder.prototype.end = function() {
+}
+
+
+function SBCSDecoder(options, codec) {
+    this.decodeBuf = codec.decodeBuf;
+}
+
+SBCSDecoder.prototype.write = function(buf) {
+    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.
+    var decodeBuf = this.decodeBuf;
+    var newBuf = new Buffer(buf.length*2);
+    var idx1 = 0, idx2 = 0;
+    for (var i = 0; i < buf.length; i++) {
+        idx1 = buf[i]*2; idx2 = i*2;
+        newBuf[idx2] = decodeBuf[idx1];
+        newBuf[idx2+1] = decodeBuf[idx1+1];
+    }
+    return newBuf.toString('ucs2');
+}
+
+SBCSDecoder.prototype.end = function() {
+}
+
+
+/***/ }),
+/* 176 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Manually added data to be used by sbcs codec in addition to generated one.
+
+module.exports = {
+    // Not supported by iconv, not sure why.
+    "10029": "maccenteuro",
+    "maccenteuro": {
+        "type": "_sbcs",
+        "chars": "ÄĀāÉĄÖÜáąČäčĆćéŹźĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņŃ¬√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"
+    },
+
+    "808": "cp808",
+    "ibm808": "cp808",
+    "cp808": {
+        "type": "_sbcs",
+        "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "
+    },
+
+    // Aliases of generated encodings.
+    "ascii8bit": "ascii",
+    "usascii": "ascii",
+    "ansix34": "ascii",
+    "ansix341968": "ascii",
+    "ansix341986": "ascii",
+    "csascii": "ascii",
+    "cp367": "ascii",
+    "ibm367": "ascii",
+    "isoir6": "ascii",
+    "iso646us": "ascii",
+    "iso646irv": "ascii",
+    "us": "ascii",
+
+    "latin1": "iso88591",
+    "latin2": "iso88592",
+    "latin3": "iso88593",
+    "latin4": "iso88594",
+    "latin5": "iso88599",
+    "latin6": "iso885910",
+    "latin7": "iso885913",
+    "latin8": "iso885914",
+    "latin9": "iso885915",
+    "latin10": "iso885916",
+
+    "csisolatin1": "iso88591",
+    "csisolatin2": "iso88592",
+    "csisolatin3": "iso88593",
+    "csisolatin4": "iso88594",
+    "csisolatincyrillic": "iso88595",
+    "csisolatinarabic": "iso88596",
+    "csisolatingreek" : "iso88597",
+    "csisolatinhebrew": "iso88598",
+    "csisolatin5": "iso88599",
+    "csisolatin6": "iso885910",
+
+    "l1": "iso88591",
+    "l2": "iso88592",
+    "l3": "iso88593",
+    "l4": "iso88594",
+    "l5": "iso88599",
+    "l6": "iso885910",
+    "l7": "iso885913",
+    "l8": "iso885914",
+    "l9": "iso885915",
+    "l10": "iso885916",
+
+    "isoir14": "iso646jp",
+    "isoir57": "iso646cn",
+    "isoir100": "iso88591",
+    "isoir101": "iso88592",
+    "isoir109": "iso88593",
+    "isoir110": "iso88594",
+    "isoir144": "iso88595",
+    "isoir127": "iso88596",
+    "isoir126": "iso88597",
+    "isoir138": "iso88598",
+    "isoir148": "iso88599",
+    "isoir157": "iso885910",
+    "isoir166": "tis620",
+    "isoir179": "iso885913",
+    "isoir199": "iso885914",
+    "isoir203": "iso885915",
+    "isoir226": "iso885916",
+
+    "cp819": "iso88591",
+    "ibm819": "iso88591",
+
+    "cyrillic": "iso88595",
+
+    "arabic": "iso88596",
+    "arabic8": "iso88596",
+    "ecma114": "iso88596",
+    "asmo708": "iso88596",
+
+    "greek" : "iso88597",
+    "greek8" : "iso88597",
+    "ecma118" : "iso88597",
+    "elot928" : "iso88597",
+
+    "hebrew": "iso88598",
+    "hebrew8": "iso88598",
+
+    "turkish": "iso88599",
+    "turkish8": "iso88599",
+
+    "thai": "iso885911",
+    "thai8": "iso885911",
+
+    "celtic": "iso885914",
+    "celtic8": "iso885914",
+    "isoceltic": "iso885914",
+
+    "tis6200": "tis620",
+    "tis62025291": "tis620",
+    "tis62025330": "tis620",
+
+    "10000": "macroman",
+    "10006": "macgreek",
+    "10007": "maccyrillic",
+    "10079": "maciceland",
+    "10081": "macturkish",
+
+    "cspc8codepage437": "cp437",
+    "cspc775baltic": "cp775",
+    "cspc850multilingual": "cp850",
+    "cspcp852": "cp852",
+    "cspc862latinhebrew": "cp862",
+    "cpgr": "cp869",
+
+    "msee": "cp1250",
+    "mscyrl": "cp1251",
+    "msansi": "cp1252",
+    "msgreek": "cp1253",
+    "msturk": "cp1254",
+    "mshebr": "cp1255",
+    "msarab": "cp1256",
+    "winbaltrim": "cp1257",
+
+    "cp20866": "koi8r",
+    "20866": "koi8r",
+    "ibm878": "koi8r",
+    "cskoi8r": "koi8r",
+
+    "cp21866": "koi8u",
+    "21866": "koi8u",
+    "ibm1168": "koi8u",
+
+    "strk10482002": "rk1048",
+
+    "tcvn5712": "tcvn",
+    "tcvn57121": "tcvn",
+
+    "gb198880": "iso646cn",
+    "cn": "iso646cn",
+
+    "csiso14jisc6220ro": "iso646jp",
+    "jisc62201969ro": "iso646jp",
+    "jp": "iso646jp",
+
+    "cshproman8": "hproman8",
+    "r8": "hproman8",
+    "roman8": "hproman8",
+    "xroman8": "hproman8",
+    "ibm1051": "hproman8",
+
+    "mac": "macintosh",
+    "csmacintosh": "macintosh",
+};
+
+
+
+/***/ }),
+/* 177 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.
+module.exports = {
+  "437": "cp437",
+  "737": "cp737",
+  "775": "cp775",
+  "850": "cp850",
+  "852": "cp852",
+  "855": "cp855",
+  "856": "cp856",
+  "857": "cp857",
+  "858": "cp858",
+  "860": "cp860",
+  "861": "cp861",
+  "862": "cp862",
+  "863": "cp863",
+  "864": "cp864",
+  "865": "cp865",
+  "866": "cp866",
+  "869": "cp869",
+  "874": "windows874",
+  "922": "cp922",
+  "1046": "cp1046",
+  "1124": "cp1124",
+  "1125": "cp1125",
+  "1129": "cp1129",
+  "1133": "cp1133",
+  "1161": "cp1161",
+  "1162": "cp1162",
+  "1163": "cp1163",
+  "1250": "windows1250",
+  "1251": "windows1251",
+  "1252": "windows1252",
+  "1253": "windows1253",
+  "1254": "windows1254",
+  "1255": "windows1255",
+  "1256": "windows1256",
+  "1257": "windows1257",
+  "1258": "windows1258",
+  "28591": "iso88591",
+  "28592": "iso88592",
+  "28593": "iso88593",
+  "28594": "iso88594",
+  "28595": "iso88595",
+  "28596": "iso88596",
+  "28597": "iso88597",
+  "28598": "iso88598",
+  "28599": "iso88599",
+  "28600": "iso885910",
+  "28601": "iso885911",
+  "28603": "iso885913",
+  "28604": "iso885914",
+  "28605": "iso885915",
+  "28606": "iso885916",
+  "windows874": {
+    "type": "_sbcs",
+    "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
+  },
+  "win874": "windows874",
+  "cp874": "windows874",
+  "windows1250": {
+    "type": "_sbcs",
+    "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
+  },
+  "win1250": "windows1250",
+  "cp1250": "windows1250",
+  "windows1251": {
+    "type": "_sbcs",
+    "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
+  },
+  "win1251": "windows1251",
+  "cp1251": "windows1251",
+  "windows1252": {
+    "type": "_sbcs",
+    "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
+  },
+  "win1252": "windows1252",
+  "cp1252": "windows1252",
+  "windows1253": {
+    "type": "_sbcs",
+    "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
+  },
+  "win1253": "windows1253",
+  "cp1253": "windows1253",
+  "windows1254": {
+    "type": "_sbcs",
+    "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
+  },
+  "win1254": "windows1254",
+  "cp1254": "windows1254",
+  "windows1255": {
+    "type": "_sbcs",
+    "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
+  },
+  "win1255": "windows1255",
+  "cp1255": "windows1255",
+  "windows1256": {
+    "type": "_sbcs",
+    "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"
+  },
+  "win1256": "windows1256",
+  "cp1256": "windows1256",
+  "windows1257": {
+    "type": "_sbcs",
+    "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"
+  },
+  "win1257": "windows1257",
+  "cp1257": "windows1257",
+  "windows1258": {
+    "type": "_sbcs",
+    "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
+  },
+  "win1258": "windows1258",
+  "cp1258": "windows1258",
+  "iso88591": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
+  },
+  "cp28591": "iso88591",
+  "iso88592": {
+    "type": "_sbcs",
+    "chars": "
+ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
+  },
+  "cp28592": "iso88592",
+  "iso88593": {
+    "type": "_sbcs",
+    "chars": "
+ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"
+  },
+  "cp28593": "iso88593",
+  "iso88594": {
+    "type": "_sbcs",
+    "chars": "
+ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"
+  },
+  "cp28594": "iso88594",
+  "iso88595": {
+    "type": "_sbcs",
+    "chars": "
+ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"
+  },
+  "cp28595": "iso88595",
+  "iso88596": {
+    "type": "_sbcs",
+    "chars": "
+ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"
+  },
+  "cp28596": "iso88596",
+  "iso88597": {
+    "type": "_sbcs",
+    "chars": "
+ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
+  },
+  "cp28597": "iso88597",
+  "iso88598": {
+    "type": "_sbcs",
+    "chars": "
+ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
+  },
+  "cp28598": "iso88598",
+  "iso88599": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
+  },
+  "cp28599": "iso88599",
+  "iso885910": {
+    "type": "_sbcs",
+    "chars": "
+ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"
+  },
+  "cp28600": "iso885910",
+  "iso885911": {
+    "type": "_sbcs",
+    "chars": "
+ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
+  },
+  "cp28601": "iso885911",
+  "iso885913": {
+    "type": "_sbcs",
+    "chars": "
+ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"
+  },
+  "cp28603": "iso885913",
+  "iso885914": {
+    "type": "_sbcs",
+    "chars": "
+ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"
+  },
+  "cp28604": "iso885914",
+  "iso885915": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
+  },
+  "cp28605": "iso885915",
+  "iso885916": {
+    "type": "_sbcs",
+    "chars": "
+ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"
+  },
+  "cp28606": "iso885916",
+  "cp437": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm437": "cp437",
+  "csibm437": "cp437",
+  "cp737": {
+    "type": "_sbcs",
+    "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "
+  },
+  "ibm737": "cp737",
+  "csibm737": "cp737",
+  "cp775": {
+    "type": "_sbcs",
+    "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ "
+  },
+  "ibm775": "cp775",
+  "csibm775": "cp775",
+  "cp850": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "
+  },
+  "ibm850": "cp850",
+  "csibm850": "cp850",
+  "cp852": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘę¬źČş«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ "
+  },
+  "ibm852": "cp852",
+  "csibm852": "cp852",
+  "cp855": {
+    "type": "_sbcs",
+    "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ "
+  },
+  "ibm855": "cp855",
+  "csibm855": "cp855",
+  "cp856": {
+    "type": "_sbcs",
+    "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ "
+  },
+  "ibm856": "cp856",
+  "csibm856": "cp856",
+  "cp857": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞğ¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ "
+  },
+  "ibm857": "cp857",
+  "csibm857": "cp857",
+  "cp858": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "
+  },
+  "ibm858": "cp858",
+  "csibm858": "cp858",
+  "cp860": {
+    "type": "_sbcs",
+    "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñÑªº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm860": "cp860",
+  "csibm860": "cp860",
+  "cp861": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm861": "cp861",
+  "csibm861": "cp861",
+  "cp862": {
+    "type": "_sbcs",
+    "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm862": "cp862",
+  "csibm862": "cp862",
+  "cp863": {
+    "type": "_sbcs",
+    "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm863": "cp863",
+  "csibm863": "cp863",
+  "cp864": {
+    "type": "_sbcs",
+    "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"
+  },
+  "ibm864": "cp864",
+  "csibm864": "cp864",
+  "cp865": {
+    "type": "_sbcs",
+    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñÑªº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+  },
+  "ibm865": "cp865",
+  "csibm865": "cp865",
+  "cp866": {
+    "type": "_sbcs",
+    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "
+  },
+  "ibm866": "cp866",
+  "csibm866": "cp866",
+  "cp869": {
+    "type": "_sbcs",
+    "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "
+  },
+  "ibm869": "cp869",
+  "csibm869": "cp869",
+  "cp922": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"
+  },
+  "ibm922": "cp922",
+  "csibm922": "cp922",
+  "cp1046": {
+    "type": "_sbcs",
+    "chars": "ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"
+  },
+  "ibm1046": "cp1046",
+  "csibm1046": "cp1046",
+  "cp1124": {
+    "type": "_sbcs",
+    "chars": "
+ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"
+  },
+  "ibm1124": "cp1124",
+  "csibm1124": "cp1124",
+  "cp1125": {
+    "type": "_sbcs",
+    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "
+  },
+  "ibm1125": "cp1125",
+  "csibm1125": "cp1125",
+  "cp1129": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
+  },
+  "ibm1129": "cp1129",
+  "csibm1129": "cp1129",
+  "cp1133": {
+    "type": "_sbcs",
+    "chars": "
+ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"
+  },
+  "ibm1133": "cp1133",
+  "csibm1133": "cp1133",
+  "cp1161": {
+    "type": "_sbcs",
+    "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "
+  },
+  "ibm1161": "cp1161",
+  "csibm1161": "cp1161",
+  "cp1162": {
+    "type": "_sbcs",
+    "chars": "€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
+  },
+  "ibm1162": "cp1162",
+  "csibm1162": "cp1162",
+  "cp1163": {
+    "type": "_sbcs",
+    "chars": "
+ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
+  },
+  "ibm1163": "cp1163",
+  "csibm1163": "cp1163",
+  "maccroatian": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"
+  },
+  "maccyrillic": {
+    "type": "_sbcs",
+    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
+  },
+  "macgreek": {
+    "type": "_sbcs",
+    "chars": "Ä¹²É³ÖÜ΅àâä΄¨çéèêë£™îï•½‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"
+  },
+  "maciceland": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
+  },
+  "macroman": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
+  },
+  "macromania": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
+  },
+  "macthai": {
+    "type": "_sbcs",
+    "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู﻿​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"
+  },
+  "macturkish": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"
+  },
+  "macukraine": {
+    "type": "_sbcs",
+    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
+  },
+  "koi8r": {
+    "type": "_sbcs",
+    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
+  },
+  "koi8u": {
+    "type": "_sbcs",
+    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
+  },
+  "koi8ru": {
+    "type": "_sbcs",
+    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
+  },
+  "koi8t": {
+    "type": "_sbcs",
+    "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
+  },
+  "armscii8": {
+    "type": "_sbcs",
+    "chars": "
+ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"
+  },
+  "rk1048": {
+    "type": "_sbcs",
+    "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
+  },
+  "tcvn": {
+    "type": "_sbcs",
+    "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"
+  },
+  "georgianacademy": {
+    "type": "_sbcs",
+    "chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
+  },
+  "georgianps": {
+    "type": "_sbcs",
+    "chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
+  },
+  "pt154": {
+    "type": "_sbcs",
+    "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
+  },
+  "viscii": {
+    "type": "_sbcs",
+    "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"
+  },
+  "iso646cn": {
+    "type": "_sbcs",
+    "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
+  },
+  "iso646jp": {
+    "type": "_sbcs",
+    "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
+  },
+  "hproman8": {
+    "type": "_sbcs",
+    "chars": "
+ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"
+  },
+  "macintosh": {
+    "type": "_sbcs",
+    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
+  },
+  "ascii": {
+    "type": "_sbcs",
+    "chars": "��������������������������������������������������������������������������������������������������������������������������������"
+  },
+  "tis620": {
+    "type": "_sbcs",
+    "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
+  }
+}
+
+/***/ }),
+/* 178 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.
+// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.
+// To save memory and loading time, we read table files only when requested.
+
+exports._dbcs = DBCSCodec;
+
+var UNASSIGNED = -1,
+    GB18030_CODE = -2,
+    SEQ_START  = -10,
+    NODE_START = -1000,
+    UNASSIGNED_NODE = new Array(0x100),
+    DEF_CHAR = -1;
+
+for (var i = 0; i < 0x100; i++)
+    UNASSIGNED_NODE[i] = UNASSIGNED;
+
+
+// Class DBCSCodec reads and initializes mapping tables.
+function DBCSCodec(codecOptions, iconv) {
+    this.encodingName = codecOptions.encodingName;
+    if (!codecOptions)
+        throw new Error("DBCS codec is called without the data.")
+    if (!codecOptions.table)
+        throw new Error("Encoding '" + this.encodingName + "' has no data.");
+
+    // Load tables.
+    var mappingTable = codecOptions.table();
+
+
+    // Decode tables: MBCS -> Unicode.
+
+    // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.
+    // Trie root is decodeTables[0].
+    // Values: >=  0 -> unicode character code. can be > 0xFFFF
+    //         == UNASSIGNED -> unknown/unassigned sequence.
+    //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.
+    //         <= NODE_START -> index of the next node in our trie to process next byte.
+    //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.
+    this.decodeTables = [];
+    this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.
+
+    // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. 
+    this.decodeTableSeq = [];
+
+    // Actual mapping tables consist of chunks. Use them to fill up decode tables.
+    for (var i = 0; i < mappingTable.length; i++)
+        this._addDecodeChunk(mappingTable[i]);
+
+    this.defaultCharUnicode = iconv.defaultCharUnicode;
+
+    
+    // Encode tables: Unicode -> DBCS.
+
+    // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.
+    // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.
+    // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).
+    //         == UNASSIGNED -> no conversion found. Output a default char.
+    //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.
+    this.encodeTable = [];
+    
+    // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of
+    // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key
+    // means end of sequence (needed when one sequence is a strict subsequence of another).
+    // Objects are kept separately from encodeTable to increase performance.
+    this.encodeTableSeq = [];
+
+    // Some chars can be decoded, but need not be encoded.
+    var skipEncodeChars = {};
+    if (codecOptions.encodeSkipVals)
+        for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {
+            var val = codecOptions.encodeSkipVals[i];
+            if (typeof val === 'number')
+                skipEncodeChars[val] = true;
+            else
+                for (var j = val.from; j <= val.to; j++)
+                    skipEncodeChars[j] = true;
+        }
+        
+    // Use decode trie to recursively fill out encode tables.
+    this._fillEncodeTable(0, 0, skipEncodeChars);
+
+    // Add more encoding pairs when needed.
+    if (codecOptions.encodeAdd) {
+        for (var uChar in codecOptions.encodeAdd)
+            if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))
+                this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);
+    }
+
+    this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];
+    if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];
+    if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0);
+
+
+    // Load & create GB18030 tables when needed.
+    if (typeof codecOptions.gb18030 === 'function') {
+        this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.
+
+        // Add GB18030 decode tables.
+        var thirdByteNodeIdx = this.decodeTables.length;
+        var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);
+
+        var fourthByteNodeIdx = this.decodeTables.length;
+        var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);
+
+        for (var i = 0x81; i <= 0xFE; i++) {
+            var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];
+            var secondByteNode = this.decodeTables[secondByteNodeIdx];
+            for (var j = 0x30; j <= 0x39; j++)
+                secondByteNode[j] = NODE_START - thirdByteNodeIdx;
+        }
+        for (var i = 0x81; i <= 0xFE; i++)
+            thirdByteNode[i] = NODE_START - fourthByteNodeIdx;
+        for (var i = 0x30; i <= 0x39; i++)
+            fourthByteNode[i] = GB18030_CODE
+    }        
+}
+
+DBCSCodec.prototype.encoder = DBCSEncoder;
+DBCSCodec.prototype.decoder = DBCSDecoder;
+
+// Decoder helpers
+DBCSCodec.prototype._getDecodeTrieNode = function(addr) {
+    var bytes = [];
+    for (; addr > 0; addr >>= 8)
+        bytes.push(addr & 0xFF);
+    if (bytes.length == 0)
+        bytes.push(0);
+
+    var node = this.decodeTables[0];
+    for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.
+        var val = node[bytes[i]];
+
+        if (val == UNASSIGNED) { // Create new node.
+            node[bytes[i]] = NODE_START - this.decodeTables.length;
+            this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));
+        }
+        else if (val <= NODE_START) { // Existing node.
+            node = this.decodeTables[NODE_START - val];
+        }
+        else
+            throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));
+    }
+    return node;
+}
+
+
+DBCSCodec.prototype._addDecodeChunk = function(chunk) {
+    // First element of chunk is the hex mbcs code where we start.
+    var curAddr = parseInt(chunk[0], 16);
+
+    // Choose the decoding node where we'll write our chars.
+    var writeTable = this._getDecodeTrieNode(curAddr);
+    curAddr = curAddr & 0xFF;
+
+    // Write all other elements of the chunk to the table.
+    for (var k = 1; k < chunk.length; k++) {
+        var part = chunk[k];
+        if (typeof part === "string") { // String, write as-is.
+            for (var l = 0; l < part.length;) {
+                var code = part.charCodeAt(l++);
+                if (0xD800 <= code && code < 0xDC00) { // Decode surrogate
+                    var codeTrail = part.charCodeAt(l++);
+                    if (0xDC00 <= codeTrail && codeTrail < 0xE000)
+                        writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);
+                    else
+                        throw new Error("Incorrect surrogate pair in "  + this.encodingName + " at chunk " + chunk[0]);
+                }
+                else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)
+                    var len = 0xFFF - code + 2;
+                    var seq = [];
+                    for (var m = 0; m < len; m++)
+                        seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.
+
+                    writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;
+                    this.decodeTableSeq.push(seq);
+                }
+                else
+                    writeTable[curAddr++] = code; // Basic char
+            }
+        } 
+        else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character.
+            var charCode = writeTable[curAddr - 1] + 1;
+            for (var l = 0; l < part; l++)
+                writeTable[curAddr++] = charCode++;
+        }
+        else
+            throw new Error("Incorrect type '" + typeof part + "' given in "  + this.encodingName + " at chunk " + chunk[0]);
+    }
+    if (curAddr > 0xFF)
+        throw new Error("Incorrect chunk in "  + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);
+}
+
+// Encoder helpers
+DBCSCodec.prototype._getEncodeBucket = function(uCode) {
+    var high = uCode >> 8; // This could be > 0xFF because of astral characters.
+    if (this.encodeTable[high] === undefined)
+        this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.
+    return this.encodeTable[high];
+}
+
+DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {
+    var bucket = this._getEncodeBucket(uCode);
+    var low = uCode & 0xFF;
+    if (bucket[low] <= SEQ_START)
+        this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.
+    else if (bucket[low] == UNASSIGNED)
+        bucket[low] = dbcsCode;
+}
+
+DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {
+    
+    // Get the root of character tree according to first character of the sequence.
+    var uCode = seq[0];
+    var bucket = this._getEncodeBucket(uCode);
+    var low = uCode & 0xFF;
+
+    var node;
+    if (bucket[low] <= SEQ_START) {
+        // There's already a sequence with  - use it.
+        node = this.encodeTableSeq[SEQ_START-bucket[low]];
+    }
+    else {
+        // There was no sequence object - allocate a new one.
+        node = {};
+        if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.
+        bucket[low] = SEQ_START - this.encodeTableSeq.length;
+        this.encodeTableSeq.push(node);
+    }
+
+    // Traverse the character tree, allocating new nodes as needed.
+    for (var j = 1; j < seq.length-1; j++) {
+        var oldVal = node[uCode];
+        if (typeof oldVal === 'object')
+            node = oldVal;
+        else {
+            node = node[uCode] = {}
+            if (oldVal !== undefined)
+                node[DEF_CHAR] = oldVal
+        }
+    }
+
+    // Set the leaf to given dbcsCode.
+    uCode = seq[seq.length-1];
+    node[uCode] = dbcsCode;
+}
+
+DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {
+    var node = this.decodeTables[nodeIdx];
+    for (var i = 0; i < 0x100; i++) {
+        var uCode = node[i];
+        var mbCode = prefix + i;
+        if (skipEncodeChars[mbCode])
+            continue;
+
+        if (uCode >= 0)
+            this._setEncodeChar(uCode, mbCode);
+        else if (uCode <= NODE_START)
+            this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);
+        else if (uCode <= SEQ_START)
+            this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);
+    }
+}
+
+
+
+// == Encoder ==================================================================
+
+function DBCSEncoder(options, codec) {
+    // Encoder state
+    this.leadSurrogate = -1;
+    this.seqObj = undefined;
+    
+    // Static data
+    this.encodeTable = codec.encodeTable;
+    this.encodeTableSeq = codec.encodeTableSeq;
+    this.defaultCharSingleByte = codec.defCharSB;
+    this.gb18030 = codec.gb18030;
+}
+
+DBCSEncoder.prototype.write = function(str) {
+    var newBuf = new Buffer(str.length * (this.gb18030 ? 4 : 3)), 
+        leadSurrogate = this.leadSurrogate,
+        seqObj = this.seqObj, nextChar = -1,
+        i = 0, j = 0;
+
+    while (true) {
+        // 0. Get next character.
+        if (nextChar === -1) {
+            if (i == str.length) break;
+            var uCode = str.charCodeAt(i++);
+        }
+        else {
+            var uCode = nextChar;
+            nextChar = -1;    
+        }
+
+        // 1. Handle surrogates.
+        if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.
+            if (uCode < 0xDC00) { // We've got lead surrogate.
+                if (leadSurrogate === -1) {
+                    leadSurrogate = uCode;
+                    continue;
+                } else {
+                    leadSurrogate = uCode;
+                    // Double lead surrogate found.
+                    uCode = UNASSIGNED;
+                }
+            } else { // We've got trail surrogate.
+                if (leadSurrogate !== -1) {
+                    uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);
+                    leadSurrogate = -1;
+                } else {
+                    // Incomplete surrogate pair - only trail surrogate found.
+                    uCode = UNASSIGNED;
+                }
+                
+            }
+        }
+        else if (leadSurrogate !== -1) {
+            // Incomplete surrogate pair - only lead surrogate found.
+            nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.
+            leadSurrogate = -1;
+        }
+
+        // 2. Convert uCode character.
+        var dbcsCode = UNASSIGNED;
+        if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence
+            var resCode = seqObj[uCode];
+            if (typeof resCode === 'object') { // Sequence continues.
+                seqObj = resCode;
+                continue;
+
+            } else if (typeof resCode == 'number') { // Sequence finished. Write it.
+                dbcsCode = resCode;
+
+            } else if (resCode == undefined) { // Current character is not part of the sequence.
+
+                // Try default character for this sequence
+                resCode = seqObj[DEF_CHAR];
+                if (resCode !== undefined) {
+                    dbcsCode = resCode; // Found. Write it.
+                    nextChar = uCode; // Current character will be written too in the next iteration.
+
+                } else {
+                    // TODO: What if we have no default? (resCode == undefined)
+                    // Then, we should write first char of the sequence as-is and try the rest recursively.
+                    // Didn't do it for now because no encoding has this situation yet.
+                    // Currently, just skip the sequence and write current char.
+                }
+            }
+            seqObj = undefined;
+        }
+        else if (uCode >= 0) {  // Regular character
+            var subtable = this.encodeTable[uCode >> 8];
+            if (subtable !== undefined)
+                dbcsCode = subtable[uCode & 0xFF];
+            
+            if (dbcsCode <= SEQ_START) { // Sequence start
+                seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];
+                continue;
+            }
+
+            if (dbcsCode == UNASSIGNED && this.gb18030) {
+                // Use GB18030 algorithm to find character(s) to write.
+                var idx = findIdx(this.gb18030.uChars, uCode);
+                if (idx != -1) {
+                    var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);
+                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;
+                    newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;
+                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;
+                    newBuf[j++] = 0x30 + dbcsCode;
+                    continue;
+                }
+            }
+        }
+
+        // 3. Write dbcsCode character.
+        if (dbcsCode === UNASSIGNED)
+            dbcsCode = this.defaultCharSingleByte;
+        
+        if (dbcsCode < 0x100) {
+            newBuf[j++] = dbcsCode;
+        }
+        else if (dbcsCode < 0x10000) {
+            newBuf[j++] = dbcsCode >> 8;   // high byte
+            newBuf[j++] = dbcsCode & 0xFF; // low byte
+        }
+        else {
+            newBuf[j++] = dbcsCode >> 16;
+            newBuf[j++] = (dbcsCode >> 8) & 0xFF;
+            newBuf[j++] = dbcsCode & 0xFF;
+        }
+    }
+
+    this.seqObj = seqObj;
+    this.leadSurrogate = leadSurrogate;
+    return newBuf.slice(0, j);
+}
+
+DBCSEncoder.prototype.end = function() {
+    if (this.leadSurrogate === -1 && this.seqObj === undefined)
+        return; // All clean. Most often case.
+
+    var newBuf = new Buffer(10), j = 0;
+
+    if (this.seqObj) { // We're in the sequence.
+        var dbcsCode = this.seqObj[DEF_CHAR];
+        if (dbcsCode !== undefined) { // Write beginning of the sequence.
+            if (dbcsCode < 0x100) {
+                newBuf[j++] = dbcsCode;
+            }
+            else {
+                newBuf[j++] = dbcsCode >> 8;   // high byte
+                newBuf[j++] = dbcsCode & 0xFF; // low byte
+            }
+        } else {
+            // See todo above.
+        }
+        this.seqObj = undefined;
+    }
+
+    if (this.leadSurrogate !== -1) {
+        // Incomplete surrogate pair - only lead surrogate found.
+        newBuf[j++] = this.defaultCharSingleByte;
+        this.leadSurrogate = -1;
+    }
+    
+    return newBuf.slice(0, j);
+}
+
+// Export for testing
+DBCSEncoder.prototype.findIdx = findIdx;
+
+
+// == Decoder ==================================================================
+
+function DBCSDecoder(options, codec) {
+    // Decoder state
+    this.nodeIdx = 0;
+    this.prevBuf = new Buffer(0);
+
+    // Static data
+    this.decodeTables = codec.decodeTables;
+    this.decodeTableSeq = codec.decodeTableSeq;
+    this.defaultCharUnicode = codec.defaultCharUnicode;
+    this.gb18030 = codec.gb18030;
+}
+
+DBCSDecoder.prototype.write = function(buf) {
+    var newBuf = new Buffer(buf.length*2),
+        nodeIdx = this.nodeIdx, 
+        prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,
+        seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.
+        uCode;
+
+    if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.
+        prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);
+    
+    for (var i = 0, j = 0; i < buf.length; i++) {
+        var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];
+
+        // Lookup in current trie node.
+        var uCode = this.decodeTables[nodeIdx][curByte];
+
+        if (uCode >= 0) { 
+            // Normal character, just use it.
+        }
+        else if (uCode === UNASSIGNED) { // Unknown char.
+            // TODO: Callback with seq.
+            //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);
+            i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle).
+            uCode = this.defaultCharUnicode.charCodeAt(0);
+        }
+        else if (uCode === GB18030_CODE) {
+            var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);
+            var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);
+            var idx = findIdx(this.gb18030.gbChars, ptr);
+            uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];
+        }
+        else if (uCode <= NODE_START) { // Go to next trie node.
+            nodeIdx = NODE_START - uCode;
+            continue;
+        }
+        else if (uCode <= SEQ_START) { // Output a sequence of chars.
+            var seq = this.decodeTableSeq[SEQ_START - uCode];
+            for (var k = 0; k < seq.length - 1; k++) {
+                uCode = seq[k];
+                newBuf[j++] = uCode & 0xFF;
+                newBuf[j++] = uCode >> 8;
+            }
+            uCode = seq[seq.length-1];
+        }
+        else
+            throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);
+
+        // Write the character to buffer, handling higher planes using surrogate pair.
+        if (uCode > 0xFFFF) { 
+            uCode -= 0x10000;
+            var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);
+            newBuf[j++] = uCodeLead & 0xFF;
+            newBuf[j++] = uCodeLead >> 8;
+
+            uCode = 0xDC00 + uCode % 0x400;
+        }
+        newBuf[j++] = uCode & 0xFF;
+        newBuf[j++] = uCode >> 8;
+
+        // Reset trie node.
+        nodeIdx = 0; seqStart = i+1;
+    }
+
+    this.nodeIdx = nodeIdx;
+    this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);
+    return newBuf.slice(0, j).toString('ucs2');
+}
+
+DBCSDecoder.prototype.end = function() {
+    var ret = '';
+
+    // Try to parse all remaining chars.
+    while (this.prevBuf.length > 0) {
+        // Skip 1 character in the buffer.
+        ret += this.defaultCharUnicode;
+        var buf = this.prevBuf.slice(1);
+
+        // Parse remaining as usual.
+        this.prevBuf = new Buffer(0);
+        this.nodeIdx = 0;
+        if (buf.length > 0)
+            ret += this.write(buf);
+    }
+
+    this.nodeIdx = 0;
+    return ret;
+}
+
+// Binary search for GB18030. Returns largest i such that table[i] <= val.
+function findIdx(table, val) {
+    if (table[0] > val)
+        return -1;
+
+    var l = 0, r = table.length;
+    while (l < r-1) { // always table[l] <= val < table[r]
+        var mid = l + Math.floor((r-l+1)/2);
+        if (table[mid] <= val)
+            l = mid;
+        else
+            r = mid;
+    }
+    return l;
+}
+
+
+
+/***/ }),
+/* 179 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Description of supported double byte encodings and aliases.
+// Tables are not require()-d until they are needed to speed up library load.
+// require()-s are direct to support Browserify.
+
+module.exports = {
+    
+    // == Japanese/ShiftJIS ====================================================
+    // All japanese encodings are based on JIS X set of standards:
+    // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.
+    // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. 
+    //              Has several variations in 1978, 1983, 1990 and 1997.
+    // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.
+    // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.
+    //              2 planes, first is superset of 0208, second - revised 0212.
+    //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)
+
+    // Byte encodings are:
+    //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte
+    //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.
+    //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.
+    //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.
+    //               0x00-0x7F       - lower part of 0201
+    //               0x8E, 0xA1-0xDF - upper part of 0201
+    //               (0xA1-0xFE)x2   - 0208 plane (94x94).
+    //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).
+    //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.
+    //               Used as-is in ISO2022 family.
+    //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, 
+    //                0201-1976 Roman, 0208-1978, 0208-1983.
+    //  * ISO2022-JP-1: Adds esc seq for 0212-1990.
+    //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.
+    //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.
+    //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.
+    //
+    // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.
+    //
+    // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html
+
+    'shiftjis': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(180) },
+        encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
+        encodeSkipVals: [{from: 0xED40, to: 0xF940}],
+    },
+    'csshiftjis': 'shiftjis',
+    'mskanji': 'shiftjis',
+    'sjis': 'shiftjis',
+    'windows31j': 'shiftjis',
+    'ms31j': 'shiftjis',
+    'xsjis': 'shiftjis',
+    'windows932': 'shiftjis',
+    'ms932': 'shiftjis',
+    '932': 'shiftjis',
+    'cp932': 'shiftjis',
+
+    'eucjp': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(181) },
+        encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
+    },
+
+    // TODO: KDDI extension to Shift_JIS
+    // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.
+    // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.
+
+
+    // == Chinese/GBK ==========================================================
+    // http://en.wikipedia.org/wiki/GBK
+    // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder
+
+    // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936
+    'gb2312': 'cp936',
+    'gb231280': 'cp936',
+    'gb23121980': 'cp936',
+    'csgb2312': 'cp936',
+    'csiso58gb231280': 'cp936',
+    'euccn': 'cp936',
+
+    // Microsoft's CP936 is a subset and approximation of GBK.
+    'windows936': 'cp936',
+    'ms936': 'cp936',
+    '936': 'cp936',
+    'cp936': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(53) },
+    },
+
+    // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.
+    'gbk': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(53).concat(__webpack_require__(91)) },
+    },
+    'xgbk': 'gbk',
+    'isoir58': 'gbk',
+
+    // GB18030 is an algorithmic extension of GBK.
+    // Main source: https://www.w3.org/TR/encoding/#gbk-encoder
+    // http://icu-project.org/docs/papers/gb18030.html
+    // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml
+    // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0
+    'gb18030': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(53).concat(__webpack_require__(91)) },
+        gb18030: function() { return __webpack_require__(182) },
+        encodeSkipVals: [0x80],
+        encodeAdd: {'€': 0xA2E3},
+    },
+
+    'chinese': 'gb18030',
+
+
+    // == Korean ===============================================================
+    // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.
+    'windows949': 'cp949',
+    'ms949': 'cp949',
+    '949': 'cp949',
+    'cp949': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(183) },
+    },
+
+    'cseuckr': 'cp949',
+    'csksc56011987': 'cp949',
+    'euckr': 'cp949',
+    'isoir149': 'cp949',
+    'korean': 'cp949',
+    'ksc56011987': 'cp949',
+    'ksc56011989': 'cp949',
+    'ksc5601': 'cp949',
+
+
+    // == Big5/Taiwan/Hong Kong ================================================
+    // There are lots of tables for Big5 and cp950. Please see the following links for history:
+    // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html
+    // Variations, in roughly number of defined chars:
+    //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
+    //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/
+    //  * Big5-2003 (Taiwan standard) almost superset of cp950.
+    //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.
+    //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. 
+    //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.
+    //    Plus, it has 4 combining sequences.
+    //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299
+    //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.
+    //    Implementations are not consistent within browsers; sometimes labeled as just big5.
+    //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.
+    //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31
+    //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.
+    //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt
+    //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt
+    // 
+    // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder
+    // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.
+
+    'windows950': 'cp950',
+    'ms950': 'cp950',
+    '950': 'cp950',
+    'cp950': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(92) },
+    },
+
+    // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.
+    'big5': 'big5hkscs',
+    'big5hkscs': {
+        type: '_dbcs',
+        table: function() { return __webpack_require__(92).concat(__webpack_require__(184)) },
+        encodeSkipVals: [0xa2cc],
+    },
+
+    'cnbig5': 'big5hkscs',
+    'csbig5': 'big5hkscs',
+    'xxbig5': 'big5hkscs',
+};
+
+
+/***/ }),
+/* 180 */
+/***/ (function(module, exports) {
+
+module.exports = [["0","\u0000",128],["a1","｡",62],["8140","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×"],["8180","÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨￢⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","Å‰♯♭♪†‡¶"],["81fc","◯"],["824f","０",9],["8260","Ａ",25],["8281","ａ",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"￢￤＇＂"],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"￢￤＇＂㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]
+
+/***/ }),
+/* 181 */
+/***/ (function(module, exports) {
+
+module.exports = [["0","\u0000",127],["8ea1","｡",62],["a1a1","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨￢⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","Å‰♯♭♪†‡¶"],["a2fe","◯"],["a3b0","０",9],["a3c1","Ａ",25],["a3e1","ａ",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"￢￤＇＂"],["8fa2af","˘ˇ¸˙˝¯˛˚～΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","Ĳ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıĳĸłŀŉŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]
+
+/***/ }),
+/* 182 */
+/***/ (function(module, exports) {
+
+module.exports = {"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}
+
+/***/ }),
+/* 183 */
+/***/ (function(module, exports) {
+
+module.exports = [["0","\u0000",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛！",58,"￦］",32,"￣"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","Ĳ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıĳĸŀłøœßþŧŋŉ㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]
+
+/***/ }),
+/* 184 */
+/***/ (function(module, exports) {
+
+module.exports = [["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー［］✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","￢￤＇＂㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","￭"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]
+
+/***/ }),
+/* 185 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var Buffer = __webpack_require__(1).Buffer,
+    Transform = __webpack_require__(15).Transform;
+
+
+// == Exports ==================================================================
+module.exports = function(iconv) {
+    
+    // Additional Public API.
+    iconv.encodeStream = function encodeStream(encoding, options) {
+        return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);
+    }
+
+    iconv.decodeStream = function decodeStream(encoding, options) {
+        return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);
+    }
+
+    iconv.supportsStreams = true;
+
+
+    // Not published yet.
+    iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;
+    iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;
+    iconv._collect = IconvLiteDecoderStream.prototype.collect;
+};
+
+
+// == Encoder stream =======================================================
+function IconvLiteEncoderStream(conv, options) {
+    this.conv = conv;
+    options = options || {};
+    options.decodeStrings = false; // We accept only strings, so we don't need to decode them.
+    Transform.call(this, options);
+}
+
+IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {
+    constructor: { value: IconvLiteEncoderStream }
+});
+
+IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {
+    if (typeof chunk != 'string')
+        return done(new Error("Iconv encoding stream needs strings as its input."));
+    try {
+        var res = this.conv.write(chunk);
+        if (res && res.length) this.push(res);
+        done();
+    }
+    catch (e) {
+        done(e);
+    }
+}
+
+IconvLiteEncoderStream.prototype._flush = function(done) {
+    try {
+        var res = this.conv.end();
+        if (res && res.length) this.push(res);
+        done();
+    }
+    catch (e) {
+        done(e);
+    }
+}
+
+IconvLiteEncoderStream.prototype.collect = function(cb) {
+    var chunks = [];
+    this.on('error', cb);
+    this.on('data', function(chunk) { chunks.push(chunk); });
+    this.on('end', function() {
+        cb(null, Buffer.concat(chunks));
+    });
+    return this;
+}
+
+
+// == Decoder stream =======================================================
+function IconvLiteDecoderStream(conv, options) {
+    this.conv = conv;
+    options = options || {};
+    options.encoding = this.encoding = 'utf8'; // We output strings.
+    Transform.call(this, options);
+}
+
+IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
+    constructor: { value: IconvLiteDecoderStream }
+});
+
+IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {
+    if (!Buffer.isBuffer(chunk))
+        return done(new Error("Iconv decoding stream needs buffers as its input."));
+    try {
+        var res = this.conv.write(chunk);
+        if (res && res.length) this.push(res, this.encoding);
+        done();
+    }
+    catch (e) {
+        done(e);
+    }
+}
+
+IconvLiteDecoderStream.prototype._flush = function(done) {
+    try {
+        var res = this.conv.end();
+        if (res && res.length) this.push(res, this.encoding);                
+        done();
+    }
+    catch (e) {
+        done(e);
+    }
+}
+
+IconvLiteDecoderStream.prototype.collect = function(cb) {
+    var res = '';
+    this.on('error', cb);
+    this.on('data', function(chunk) { res += chunk; });
+    this.on('end', function() {
+        cb(null, res);
+    });
+    return this;
+}
+
+
+
+/***/ }),
+/* 186 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var Buffer = __webpack_require__(1).Buffer;
+
+// == Extend Node primitives to use iconv-lite =================================
+
+module.exports = function (iconv) {
+    var original = undefined; // Place to keep original methods.
+
+    // Node authors rewrote Buffer internals to make it compatible with
+    // Uint8Array and we cannot patch key functions since then.
+    iconv.supportsNodeEncodingsExtension = !(new Buffer(0) instanceof Uint8Array);
+
+    iconv.extendNodeEncodings = function extendNodeEncodings() {
+        if (original) return;
+        original = {};
+
+        if (!iconv.supportsNodeEncodingsExtension) {
+            console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node");
+            console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");
+            return;
+        }
+
+        var nodeNativeEncodings = {
+            'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, 
+            'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true,
+        };
+
+        Buffer.isNativeEncoding = function(enc) {
+            return enc && nodeNativeEncodings[enc.toLowerCase()];
+        }
+
+        // -- SlowBuffer -----------------------------------------------------------
+        var SlowBuffer = __webpack_require__(1).SlowBuffer;
+
+        original.SlowBufferToString = SlowBuffer.prototype.toString;
+        SlowBuffer.prototype.toString = function(encoding, start, end) {
+            encoding = String(encoding || 'utf8').toLowerCase();
+
+            // Use native conversion when possible
+            if (Buffer.isNativeEncoding(encoding))
+                return original.SlowBufferToString.call(this, encoding, start, end);
+
+            // Otherwise, use our decoding method.
+            if (typeof start == 'undefined') start = 0;
+            if (typeof end == 'undefined') end = this.length;
+            return iconv.decode(this.slice(start, end), encoding);
+        }
+
+        original.SlowBufferWrite = SlowBuffer.prototype.write;
+        SlowBuffer.prototype.write = function(string, offset, length, encoding) {
+            // Support both (string, offset, length, encoding)
+            // and the legacy (string, encoding, offset, length)
+            if (isFinite(offset)) {
+                if (!isFinite(length)) {
+                    encoding = length;
+                    length = undefined;
+                }
+            } else {  // legacy
+                var swap = encoding;
+                encoding = offset;
+                offset = length;
+                length = swap;
+            }
+
+            offset = +offset || 0;
+            var remaining = this.length - offset;
+            if (!length) {
+                length = remaining;
+            } else {
+                length = +length;
+                if (length > remaining) {
+                    length = remaining;
+                }
+            }
+            encoding = String(encoding || 'utf8').toLowerCase();
+
+            // Use native conversion when possible
+            if (Buffer.isNativeEncoding(encoding))
+                return original.SlowBufferWrite.call(this, string, offset, length, encoding);
+
+            if (string.length > 0 && (length < 0 || offset < 0))
+                throw new RangeError('attempt to write beyond buffer bounds');
+
+            // Otherwise, use our encoding method.
+            var buf = iconv.encode(string, encoding);
+            if (buf.length < length) length = buf.length;
+            buf.copy(this, offset, 0, length);
+            return length;
+        }
+
+        // -- Buffer ---------------------------------------------------------------
+
+        original.BufferIsEncoding = Buffer.isEncoding;
+        Buffer.isEncoding = function(encoding) {
+            return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding);
+        }
+
+        original.BufferByteLength = Buffer.byteLength;
+        Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) {
+            encoding = String(encoding || 'utf8').toLowerCase();
+
+            // Use native conversion when possible
+            if (Buffer.isNativeEncoding(encoding))
+                return original.BufferByteLength.call(this, str, encoding);
+
+            // Slow, I know, but we don't have a better way yet.
+            return iconv.encode(str, encoding).length;
+        }
+
+        original.BufferToString = Buffer.prototype.toString;
+        Buffer.prototype.toString = function(encoding, start, end) {
+            encoding = String(encoding || 'utf8').toLowerCase();
+
+            // Use native conversion when possible
+            if (Buffer.isNativeEncoding(encoding))
+                return original.BufferToString.call(this, encoding, start, end);
+
+            // Otherwise, use our decoding method.
+            if (typeof start == 'undefined') start = 0;
+            if (typeof end == 'undefined') end = this.length;
+            return iconv.decode(this.slice(start, end), encoding);
+        }
+
+        original.BufferWrite = Buffer.prototype.write;
+        Buffer.prototype.write = function(string, offset, length, encoding) {
+            var _offset = offset, _length = length, _encoding = encoding;
+            // Support both (string, offset, length, encoding)
+            // and the legacy (string, encoding, offset, length)
+            if (isFinite(offset)) {
+                if (!isFinite(length)) {
+                    encoding = length;
+                    length = undefined;
+                }
+            } else {  // legacy
+                var swap = encoding;
+                encoding = offset;
+                offset = length;
+                length = swap;
+            }
+
+            encoding = String(encoding || 'utf8').toLowerCase();
+
+            // Use native conversion when possible
+            if (Buffer.isNativeEncoding(encoding))
+                return original.BufferWrite.call(this, string, _offset, _length, _encoding);
+
+            offset = +offset || 0;
+            var remaining = this.length - offset;
+            if (!length) {
+                length = remaining;
+            } else {
+                length = +length;
+                if (length > remaining) {
+                    length = remaining;
+                }
+            }
+
+            if (string.length > 0 && (length < 0 || offset < 0))
+                throw new RangeError('attempt to write beyond buffer bounds');
+
+            // Otherwise, use our encoding method.
+            var buf = iconv.encode(string, encoding);
+            if (buf.length < length) length = buf.length;
+            buf.copy(this, offset, 0, length);
+            return length;
+
+            // TODO: Set _charsWritten.
+        }
+
+
+        // -- Readable -------------------------------------------------------------
+        if (iconv.supportsStreams) {
+            var Readable = __webpack_require__(15).Readable;
+
+            original.ReadableSetEncoding = Readable.prototype.setEncoding;
+            Readable.prototype.setEncoding = function setEncoding(enc, options) {
+                // Use our own decoder, it has the same interface.
+                // We cannot use original function as it doesn't handle BOM-s.
+                this._readableState.decoder = iconv.getDecoder(enc, options);
+                this._readableState.encoding = enc;
+            }
+
+            Readable.prototype.collect = iconv._collect;
+        }
+    }
+
+    // Remove iconv-lite Node primitive extensions.
+    iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() {
+        if (!iconv.supportsNodeEncodingsExtension)
+            return;
+        if (!original)
+            throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.")
+
+        delete Buffer.isNativeEncoding;
+
+        var SlowBuffer = __webpack_require__(1).SlowBuffer;
+
+        SlowBuffer.prototype.toString = original.SlowBufferToString;
+        SlowBuffer.prototype.write = original.SlowBufferWrite;
+
+        Buffer.isEncoding = original.BufferIsEncoding;
+        Buffer.byteLength = original.BufferByteLength;
+        Buffer.prototype.toString = original.BufferToString;
+        Buffer.prototype.write = original.BufferWrite;
+
+        if (iconv.supportsStreams) {
+            var Readable = __webpack_require__(15).Readable;
+
+            Readable.prototype.setEncoding = original.ReadableSetEncoding;
+            delete Readable.prototype.collect;
+        }
+
+        original = undefined;
+    }
+}
+
+
+/***/ }),
+/* 187 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var ArrayT, LazyArray, LazyArrayT, NumberT, inspect, utils,
+    __hasProp = {}.hasOwnProperty,
+    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
+
+  ArrayT = __webpack_require__(93);
+
+  NumberT = __webpack_require__(22).Number;
+
+  utils = __webpack_require__(12);
+
+  inspect = __webpack_require__(49).inspect;
+
+  LazyArrayT = (function(_super) {
+    __extends(LazyArrayT, _super);
+
+    function LazyArrayT() {
+      return LazyArrayT.__super__.constructor.apply(this, arguments);
+    }
+
+    LazyArrayT.prototype.decode = function(stream, parent) {
+      var length, pos, res;
+      pos = stream.pos;
+      length = utils.resolveLength(this.length, stream, parent);
+      if (this.length instanceof NumberT) {
+        parent = {
+          parent: parent,
+          _startOffset: pos,
+          _currentOffset: 0,
+          _length: length
+        };
+      }
+      res = new LazyArray(this.type, length, stream, parent);
+      stream.pos += length * this.type.size(null, parent);
+      return res;
+    };
+
+    LazyArrayT.prototype.size = function(val, ctx) {
+      if (val instanceof LazyArray) {
+        val = val.toArray();
+      }
+      return LazyArrayT.__super__.size.call(this, val, ctx);
+    };
+
+    LazyArrayT.prototype.encode = function(stream, val, ctx) {
+      if (val instanceof LazyArray) {
+        val = val.toArray();
+      }
+      return LazyArrayT.__super__.encode.call(this, stream, val, ctx);
+    };
+
+    return LazyArrayT;
+
+  })(ArrayT);
+
+  LazyArray = (function() {
+    function LazyArray(type, length, stream, ctx) {
+      this.type = type;
+      this.length = length;
+      this.stream = stream;
+      this.ctx = ctx;
+      this.base = this.stream.pos;
+      this.items = [];
+    }
+
+    LazyArray.prototype.get = function(index) {
+      var pos;
+      if (index < 0 || index >= this.length) {
+        return void 0;
+      }
+      if (this.items[index] == null) {
+        pos = this.stream.pos;
+        this.stream.pos = this.base + this.type.size(null, this.ctx) * index;
+        this.items[index] = this.type.decode(this.stream, this.ctx);
+        this.stream.pos = pos;
+      }
+      return this.items[index];
+    };
+
+    LazyArray.prototype.toArray = function() {
+      var i, _i, _ref, _results;
+      _results = [];
+      for (i = _i = 0, _ref = this.length; _i < _ref; i = _i += 1) {
+        _results.push(this.get(i));
+      }
+      return _results;
+    };
+
+    LazyArray.prototype.inspect = function() {
+      return inspect(this.toArray());
+    };
+
+    return LazyArray;
+
+  })();
+
+  module.exports = LazyArrayT;
+
+}).call(this);
+
+
+/***/ }),
+/* 188 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Bitfield;
+
+  Bitfield = (function() {
+    function Bitfield(type, flags) {
+      this.type = type;
+      this.flags = flags != null ? flags : [];
+    }
+
+    Bitfield.prototype.decode = function(stream) {
+      var flag, i, res, val, _i, _len, _ref;
+      val = this.type.decode(stream);
+      res = {};
+      _ref = this.flags;
+      for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
+        flag = _ref[i];
+        if (flag != null) {
+          res[flag] = !!(val & (1 << i));
+        }
+      }
+      return res;
+    };
+
+    Bitfield.prototype.size = function() {
+      return this.type.size();
+    };
+
+    Bitfield.prototype.encode = function(stream, keys) {
+      var flag, i, val, _i, _len, _ref;
+      val = 0;
+      _ref = this.flags;
+      for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
+        flag = _ref[i];
+        if (flag != null) {
+          if (keys[flag]) {
+            val |= 1 << i;
+          }
+        }
+      }
+      return this.type.encode(stream, val);
+    };
+
+    return Bitfield;
+
+  })();
+
+  module.exports = Bitfield;
+
+}).call(this);
+
+
+/***/ }),
+/* 189 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var BooleanT;
+
+  BooleanT = (function() {
+    function BooleanT(type) {
+      this.type = type;
+    }
+
+    BooleanT.prototype.decode = function(stream, parent) {
+      return !!this.type.decode(stream, parent);
+    };
+
+    BooleanT.prototype.size = function(val, parent) {
+      return this.type.size(val, parent);
+    };
+
+    BooleanT.prototype.encode = function(stream, val, parent) {
+      return this.type.encode(stream, +val, parent);
+    };
+
+    return BooleanT;
+
+  })();
+
+  module.exports = BooleanT;
+
+}).call(this);
+
+
+/***/ }),
+/* 190 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var BufferT, NumberT, utils;
+
+  utils = __webpack_require__(12);
+
+  NumberT = __webpack_require__(22).Number;
+
+  BufferT = (function() {
+    function BufferT(length) {
+      this.length = length;
+    }
+
+    BufferT.prototype.decode = function(stream, parent) {
+      var length;
+      length = utils.resolveLength(this.length, stream, parent);
+      return stream.readBuffer(length);
+    };
+
+    BufferT.prototype.size = function(val, parent) {
+      if (!val) {
+        return utils.resolveLength(this.length, null, parent);
+      }
+      return val.length;
+    };
+
+    BufferT.prototype.encode = function(stream, buf, parent) {
+      if (this.length instanceof NumberT) {
+        this.length.encode(stream, buf.length);
+      }
+      return stream.writeBuffer(buf);
+    };
+
+    return BufferT;
+
+  })();
+
+  module.exports = BufferT;
+
+}).call(this);
+
+
+/***/ }),
+/* 191 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Enum;
+
+  Enum = (function() {
+    function Enum(type, options) {
+      this.type = type;
+      this.options = options != null ? options : [];
+    }
+
+    Enum.prototype.decode = function(stream) {
+      var index;
+      index = this.type.decode(stream);
+      return this.options[index] || index;
+    };
+
+    Enum.prototype.size = function() {
+      return this.type.size();
+    };
+
+    Enum.prototype.encode = function(stream, val) {
+      var index;
+      index = this.options.indexOf(val);
+      if (index === -1) {
+        throw new Error("Unknown option in enum: " + val);
+      }
+      return this.type.encode(stream, index);
+    };
+
+    return Enum;
+
+  })();
+
+  module.exports = Enum;
+
+}).call(this);
+
+
+/***/ }),
+/* 192 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Optional;
+
+  Optional = (function() {
+    function Optional(type, condition) {
+      this.type = type;
+      this.condition = condition != null ? condition : true;
+    }
+
+    Optional.prototype.decode = function(stream, parent) {
+      var condition;
+      condition = this.condition;
+      if (typeof condition === 'function') {
+        condition = condition.call(parent, parent);
+      }
+      if (condition) {
+        return this.type.decode(stream, parent);
+      }
+    };
+
+    Optional.prototype.size = function(val, parent) {
+      var condition;
+      condition = this.condition;
+      if (typeof condition === 'function') {
+        condition = condition.call(parent, parent);
+      }
+      if (condition) {
+        return this.type.size(val, parent);
+      } else {
+        return 0;
+      }
+    };
+
+    Optional.prototype.encode = function(stream, val, parent) {
+      var condition;
+      condition = this.condition;
+      if (typeof condition === 'function') {
+        condition = condition.call(parent, parent);
+      }
+      if (condition) {
+        return this.type.encode(stream, val, parent);
+      }
+    };
+
+    return Optional;
+
+  })();
+
+  module.exports = Optional;
+
+}).call(this);
+
+
+/***/ }),
+/* 193 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Reserved, utils;
+
+  utils = __webpack_require__(12);
+
+  Reserved = (function() {
+    function Reserved(type, count) {
+      this.type = type;
+      this.count = count != null ? count : 1;
+    }
+
+    Reserved.prototype.decode = function(stream, parent) {
+      stream.pos += this.size(null, parent);
+      return void 0;
+    };
+
+    Reserved.prototype.size = function(data, parent) {
+      var count;
+      count = utils.resolveLength(this.count, null, parent);
+      return this.type.size() * count;
+    };
+
+    Reserved.prototype.encode = function(stream, val, parent) {
+      return stream.fill(0, this.size(val, parent));
+    };
+
+    return Reserved;
+
+  })();
+
+  module.exports = Reserved;
+
+}).call(this);
+
+
+/***/ }),
+/* 194 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.7.1
+(function() {
+  var NumberT, StringT, utils;
+
+  NumberT = __webpack_require__(22).Number;
+
+  utils = __webpack_require__(12);
+
+  StringT = (function() {
+    function StringT(length, encoding) {
+      this.length = length;
+      this.encoding = encoding != null ? encoding : 'ascii';
+    }
+
+    StringT.prototype.decode = function(stream, parent) {
+      var buffer, encoding, length, pos, string;
+      length = (function() {
+        if (this.length != null) {
+          return utils.resolveLength(this.length, stream, parent);
+        } else {
+          buffer = stream.buffer, length = stream.length, pos = stream.pos;
+          while (pos < length && buffer[pos] !== 0x00) {
+            ++pos;
+          }
+          return pos - stream.pos;
+        }
+      }).call(this);
+      encoding = this.encoding;
+      if (typeof encoding === 'function') {
+        encoding = encoding.call(parent, parent) || 'ascii';
+      }
+      string = stream.readString(length, encoding);
+      if ((this.length == null) && stream.pos < stream.length) {
+        stream.pos++;
+      }
+      return string;
+    };
+
+    StringT.prototype.size = function(val, parent) {
+      var encoding, size;
+      if (!val) {
+        return utils.resolveLength(this.length, null, parent);
+      }
+      encoding = this.encoding;
+      if (typeof encoding === 'function') {
+        encoding = encoding.call(parent != null ? parent.val : void 0, parent != null ? parent.val : void 0) || 'ascii';
+      }
+      if (encoding === 'utf16be') {
+        encoding = 'utf16le';
+      }
+      size = Buffer.byteLength(val, encoding);
+      if (this.length instanceof NumberT) {
+        size += this.length.size();
+      }
+      if (this.length == null) {
+        size++;
+      }
+      return size;
+    };
+
+    StringT.prototype.encode = function(stream, val, parent) {
+      var encoding;
+      encoding = this.encoding;
+      if (typeof encoding === 'function') {
+        encoding = encoding.call(parent != null ? parent.val : void 0, parent != null ? parent.val : void 0) || 'ascii';
+      }
+      if (this.length instanceof NumberT) {
+        this.length.encode(stream, Buffer.byteLength(val, encoding));
+      }
+      stream.writeString(val, encoding);
+      if (this.length == null) {
+        return stream.writeUInt8(0x00);
+      }
+    };
+
+    return StringT;
+
+  })();
+
+  module.exports = StringT;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 195 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Struct, VersionedStruct,
+    __hasProp = {}.hasOwnProperty,
+    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
+
+  Struct = __webpack_require__(94);
+
+  VersionedStruct = (function(_super) {
+    __extends(VersionedStruct, _super);
+
+    function VersionedStruct(type, versions) {
+      this.type = type;
+      this.versions = versions != null ? versions : {};
+      if (typeof this.type === 'string') {
+        this.versionGetter = new Function('parent', "return parent." + this.type);
+        this.versionSetter = new Function('parent', 'version', "return parent." + this.type + " = version");
+      }
+    }
+
+    VersionedStruct.prototype.decode = function(stream, parent, length) {
+      var fields, res, _ref;
+      if (length == null) {
+        length = 0;
+      }
+      res = this._setup(stream, parent, length);
+      if (typeof this.type === 'string') {
+        res.version = this.versionGetter(parent);
+      } else {
+        res.version = this.type.decode(stream);
+      }
+      if (this.versions.header) {
+        this._parseFields(stream, res, this.versions.header);
+      }
+      fields = this.versions[res.version];
+      if (fields == null) {
+        throw new Error("Unknown version " + res.version);
+      }
+      if (fields instanceof VersionedStruct) {
+        return fields.decode(stream, parent);
+      }
+      this._parseFields(stream, res, fields);
+      if ((_ref = this.process) != null) {
+        _ref.call(res, stream);
+      }
+      return res;
+    };
+
+    VersionedStruct.prototype.size = function(val, parent, includePointers) {
+      var ctx, fields, key, size, type, _ref;
+      if (includePointers == null) {
+        includePointers = true;
+      }
+      if (!val) {
+        throw new Error('Not a fixed size');
+      }
+      ctx = {
+        parent: parent,
+        val: val,
+        pointerSize: 0
+      };
+      size = 0;
+      if (typeof this.type !== 'string') {
+        size += this.type.size(val.version, ctx);
+      }
+      if (this.versions.header) {
+        _ref = this.versions.header;
+        for (key in _ref) {
+          type = _ref[key];
+          if (type.size != null) {
+            size += type.size(val[key], ctx);
+          }
+        }
+      }
+      fields = this.versions[val.version];
+      if (fields == null) {
+        throw new Error("Unknown version " + val.version);
+      }
+      for (key in fields) {
+        type = fields[key];
+        if (type.size != null) {
+          size += type.size(val[key], ctx);
+        }
+      }
+      if (includePointers) {
+        size += ctx.pointerSize;
+      }
+      return size;
+    };
+
+    VersionedStruct.prototype.encode = function(stream, val, parent) {
+      var ctx, fields, i, key, ptr, type, _ref, _ref1;
+      if ((_ref = this.preEncode) != null) {
+        _ref.call(val, stream);
+      }
+      ctx = {
+        pointers: [],
+        startOffset: stream.pos,
+        parent: parent,
+        val: val,
+        pointerSize: 0
+      };
+      ctx.pointerOffset = stream.pos + this.size(val, ctx, false);
+      if (typeof this.type !== 'string') {
+        this.type.encode(stream, val.version);
+      }
+      if (this.versions.header) {
+        _ref1 = this.versions.header;
+        for (key in _ref1) {
+          type = _ref1[key];
+          if (type.encode != null) {
+            type.encode(stream, val[key], ctx);
+          }
+        }
+      }
+      fields = this.versions[val.version];
+      for (key in fields) {
+        type = fields[key];
+        if (type.encode != null) {
+          type.encode(stream, val[key], ctx);
+        }
+      }
+      i = 0;
+      while (i < ctx.pointers.length) {
+        ptr = ctx.pointers[i++];
+        ptr.type.encode(stream, ptr.val, ptr.parent);
+      }
+    };
+
+    return VersionedStruct;
+
+  })(Struct);
+
+  module.exports = VersionedStruct;
+
+}).call(this);
+
+
+/***/ }),
+/* 196 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.7.1
+(function() {
+  var Pointer, VoidPointer, utils;
+
+  utils = __webpack_require__(12);
+
+  Pointer = (function() {
+    function Pointer(offsetType, type, options) {
+      var _base, _base1, _base2, _base3;
+      this.offsetType = offsetType;
+      this.type = type;
+      this.options = options != null ? options : {};
+      if (this.type === 'void') {
+        this.type = null;
+      }
+      if ((_base = this.options).type == null) {
+        _base.type = 'local';
+      }
+      if ((_base1 = this.options).allowNull == null) {
+        _base1.allowNull = true;
+      }
+      if ((_base2 = this.options).nullValue == null) {
+        _base2.nullValue = 0;
+      }
+      if ((_base3 = this.options).lazy == null) {
+        _base3.lazy = false;
+      }
+      if (this.options.relativeTo) {
+        this.relativeToGetter = new Function('ctx', "return ctx." + this.options.relativeTo);
+      }
+    }
+
+    Pointer.prototype.decode = function(stream, ctx) {
+      var c, decodeValue, offset, ptr, relative, val;
+      offset = this.offsetType.decode(stream, ctx);
+      if (offset === this.options.nullValue && this.options.allowNull) {
+        return null;
+      }
+      relative = (function() {
+        switch (this.options.type) {
+          case 'local':
+            return ctx._startOffset;
+          case 'immediate':
+            return stream.pos - this.offsetType.size();
+          case 'parent':
+            return ctx.parent._startOffset;
+          default:
+            c = ctx;
+            while (c.parent) {
+              c = c.parent;
+            }
+            return c._startOffset || 0;
+        }
+      }).call(this);
+      if (this.options.relativeTo) {
+        relative += this.relativeToGetter(ctx);
+      }
+      ptr = offset + relative;
+      if (this.type != null) {
+        val = null;
+        decodeValue = (function(_this) {
+          return function() {
+            var pos;
+            if (val != null) {
+              return val;
+            }
+            pos = stream.pos;
+            stream.pos = ptr;
+            val = _this.type.decode(stream, ctx);
+            stream.pos = pos;
+            return val;
+          };
+        })(this);
+        if (this.options.lazy) {
+          return new utils.PropertyDescriptor({
+            get: decodeValue
+          });
+        }
+        return decodeValue();
+      } else {
+        return ptr;
+      }
+    };
+
+    Pointer.prototype.size = function(val, ctx) {
+      var parent, type;
+      parent = ctx;
+      switch (this.options.type) {
+        case 'local':
+        case 'immediate':
+          break;
+        case 'parent':
+          ctx = ctx.parent;
+          break;
+        default:
+          while (ctx.parent) {
+            ctx = ctx.parent;
+          }
+      }
+      type = this.type;
+      if (type == null) {
+        if (!(val instanceof VoidPointer)) {
+          throw new Error("Must be a VoidPointer");
+        }
+        type = val.type;
+        val = val.value;
+      }
+      if (val && ctx) {
+        ctx.pointerSize += type.size(val, parent);
+      }
+      return this.offsetType.size();
+    };
+
+    Pointer.prototype.encode = function(stream, val, ctx) {
+      var parent, relative, type;
+      parent = ctx;
+      if (val == null) {
+        this.offsetType.encode(stream, this.options.nullValue);
+        return;
+      }
+      switch (this.options.type) {
+        case 'local':
+          relative = ctx.startOffset;
+          break;
+        case 'immediate':
+          relative = stream.pos + this.offsetType.size(val, parent);
+          break;
+        case 'parent':
+          ctx = ctx.parent;
+          relative = ctx.startOffset;
+          break;
+        default:
+          relative = 0;
+          while (ctx.parent) {
+            ctx = ctx.parent;
+          }
+      }
+      if (this.options.relativeTo) {
+        relative += this.relativeToGetter(parent.val);
+      }
+      this.offsetType.encode(stream, ctx.pointerOffset - relative);
+      type = this.type;
+      if (type == null) {
+        if (!(val instanceof VoidPointer)) {
+          throw new Error("Must be a VoidPointer");
+        }
+        type = val.type;
+        val = val.value;
+      }
+      ctx.pointers.push({
+        type: type,
+        val: val,
+        parent: parent
+      });
+      return ctx.pointerOffset += type.size(val, parent);
+    };
+
+    return Pointer;
+
+  })();
+
+  VoidPointer = (function() {
+    function VoidPointer(type, value) {
+      this.type = type;
+      this.value = value;
+    }
+
+    return VoidPointer;
+
+  })();
+
+  exports.Pointer = Pointer;
+
+  exports.VoidPointer = VoidPointer;
+
+}).call(this);
+
+
+/***/ }),
+/* 197 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(198), __esModule: true };
+
+/***/ }),
+/* 198 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(199);
+var $Object = __webpack_require__(2).Object;
+module.exports = function getOwnPropertyDescriptor(it, key) {
+  return $Object.getOwnPropertyDescriptor(it, key);
+};
+
+
+/***/ }),
+/* 199 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+var toIObject = __webpack_require__(17);
+var $getOwnPropertyDescriptor = __webpack_require__(57).f;
+
+__webpack_require__(59)('getOwnPropertyDescriptor', function () {
+  return function getOwnPropertyDescriptor(it, key) {
+    return $getOwnPropertyDescriptor(toIObject(it), key);
+  };
+});
+
+
+/***/ }),
+/* 200 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(28);
+__webpack_require__(24);
+module.exports = __webpack_require__(208);
+
+
+/***/ }),
+/* 201 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var addToUnscopables = __webpack_require__(202);
+var step = __webpack_require__(98);
+var Iterators = __webpack_require__(23);
+var toIObject = __webpack_require__(17);
+
+// 22.1.3.4 Array.prototype.entries()
+// 22.1.3.13 Array.prototype.keys()
+// 22.1.3.29 Array.prototype.values()
+// 22.1.3.30 Array.prototype[@@iterator]()
+module.exports = __webpack_require__(61)(Array, 'Array', function (iterated, kind) {
+  this._t = toIObject(iterated); // target
+  this._i = 0;                   // next index
+  this._k = kind;                // kind
+// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
+}, function () {
+  var O = this._t;
+  var kind = this._k;
+  var index = this._i++;
+  if (!O || index >= O.length) {
+    this._t = undefined;
+    return step(1);
+  }
+  if (kind == 'keys') return step(0, index);
+  if (kind == 'values') return step(0, O[index]);
+  return step(0, [index, O[index]]);
+}, 'values');
+
+// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
+Iterators.Arguments = Iterators.Array;
+
+addToUnscopables('keys');
+addToUnscopables('values');
+addToUnscopables('entries');
+
+
+/***/ }),
+/* 202 */
+/***/ (function(module, exports) {
+
+module.exports = function () { /* empty */ };
+
+
+/***/ }),
+/* 203 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var create = __webpack_require__(36);
+var descriptor = __webpack_require__(27);
+var setToStringTag = __webpack_require__(39);
+var IteratorPrototype = {};
+
+// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+__webpack_require__(13)(IteratorPrototype, __webpack_require__(4)('iterator'), function () { return this; });
+
+module.exports = function (Constructor, NAME, next) {
+  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
+  setToStringTag(Constructor, NAME + ' Iterator');
+};
+
+
+/***/ }),
+/* 204 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// false -> Array#indexOf
+// true  -> Array#includes
+var toIObject = __webpack_require__(17);
+var toLength = __webpack_require__(37);
+var toAbsoluteIndex = __webpack_require__(102);
+module.exports = function (IS_INCLUDES) {
+  return function ($this, el, fromIndex) {
+    var O = toIObject($this);
+    var length = toLength(O.length);
+    var index = toAbsoluteIndex(fromIndex, length);
+    var value;
+    // Array#includes uses SameValueZero equality algorithm
+    // eslint-disable-next-line no-self-compare
+    if (IS_INCLUDES && el != el) while (length > index) {
+      value = O[index++];
+      // eslint-disable-next-line no-self-compare
+      if (value != value) return true;
+    // Array#indexOf ignores holes, Array#includes - not
+    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
+      if (O[index] === el) return IS_INCLUDES || index || 0;
+    } return !IS_INCLUDES && -1;
+  };
+};
+
+
+/***/ }),
+/* 205 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var document = __webpack_require__(10).document;
+module.exports = document && document.documentElement;
+
+
+/***/ }),
+/* 206 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
+var has = __webpack_require__(18);
+var toObject = __webpack_require__(30);
+var IE_PROTO = __webpack_require__(64)('IE_PROTO');
+var ObjectProto = Object.prototype;
+
+module.exports = Object.getPrototypeOf || function (O) {
+  O = toObject(O);
+  if (has(O, IE_PROTO)) return O[IE_PROTO];
+  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
+    return O.constructor.prototype;
+  } return O instanceof Object ? ObjectProto : null;
+};
+
+
+/***/ }),
+/* 207 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toInteger = __webpack_require__(63);
+var defined = __webpack_require__(56);
+// true  -> String#at
+// false -> String#codePointAt
+module.exports = function (TO_STRING) {
+  return function (that, pos) {
+    var s = String(defined(that));
+    var i = toInteger(pos);
+    var l = s.length;
+    var a, b;
+    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
+    a = s.charCodeAt(i);
+    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
+      ? TO_STRING ? s.charAt(i) : a
+      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
+  };
+};
+
+
+/***/ }),
+/* 208 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var anObject = __webpack_require__(14);
+var get = __webpack_require__(67);
+module.exports = __webpack_require__(2).getIterator = function (it) {
+  var iterFn = get(it);
+  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
+  return anObject(iterFn.call(it));
+};
+
+
+/***/ }),
+/* 209 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(210), __esModule: true };
+
+/***/ }),
+/* 210 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(211);
+module.exports = __webpack_require__(2).Object.freeze;
+
+
+/***/ }),
+/* 211 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.5 Object.freeze(O)
+var isObject = __webpack_require__(9);
+var meta = __webpack_require__(40).onFreeze;
+
+__webpack_require__(59)('freeze', function ($freeze) {
+  return function freeze(it) {
+    return $freeze && isObject(it) ? $freeze(meta(it)) : it;
+  };
+});
+
+
+/***/ }),
+/* 212 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(213), __esModule: true };
+
+/***/ }),
+/* 213 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(214);
+module.exports = __webpack_require__(2).Object.keys;
+
+
+/***/ }),
+/* 214 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.14 Object.keys(O)
+var toObject = __webpack_require__(30);
+var $keys = __webpack_require__(29);
+
+__webpack_require__(59)('keys', function () {
+  return function keys(it) {
+    return $keys(toObject(it));
+  };
+});
+
+
+/***/ }),
+/* 215 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(24);
+__webpack_require__(28);
+module.exports = __webpack_require__(70).f('iterator');
+
+
+/***/ }),
+/* 216 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(217), __esModule: true };
+
+/***/ }),
+/* 217 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(218);
+__webpack_require__(73);
+__webpack_require__(221);
+__webpack_require__(222);
+module.exports = __webpack_require__(2).Symbol;
+
+
+/***/ }),
+/* 218 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// ECMAScript 6 symbols shim
+var global = __webpack_require__(10);
+var has = __webpack_require__(18);
+var DESCRIPTORS = __webpack_require__(5);
+var $export = __webpack_require__(3);
+var redefine = __webpack_require__(99);
+var META = __webpack_require__(40).KEY;
+var $fails = __webpack_require__(19);
+var shared = __webpack_require__(65);
+var setToStringTag = __webpack_require__(39);
+var uid = __webpack_require__(38);
+var wks = __webpack_require__(4);
+var wksExt = __webpack_require__(70);
+var wksDefine = __webpack_require__(71);
+var enumKeys = __webpack_require__(219);
+var isArray = __webpack_require__(104);
+var anObject = __webpack_require__(14);
+var isObject = __webpack_require__(9);
+var toIObject = __webpack_require__(17);
+var toPrimitive = __webpack_require__(58);
+var createDesc = __webpack_require__(27);
+var _create = __webpack_require__(36);
+var gOPNExt = __webpack_require__(220);
+var $GOPD = __webpack_require__(57);
+var $DP = __webpack_require__(6);
+var $keys = __webpack_require__(29);
+var gOPD = $GOPD.f;
+var dP = $DP.f;
+var gOPN = gOPNExt.f;
+var $Symbol = global.Symbol;
+var $JSON = global.JSON;
+var _stringify = $JSON && $JSON.stringify;
+var PROTOTYPE = 'prototype';
+var HIDDEN = wks('_hidden');
+var TO_PRIMITIVE = wks('toPrimitive');
+var isEnum = {}.propertyIsEnumerable;
+var SymbolRegistry = shared('symbol-registry');
+var AllSymbols = shared('symbols');
+var OPSymbols = shared('op-symbols');
+var ObjectProto = Object[PROTOTYPE];
+var USE_NATIVE = typeof $Symbol == 'function';
+var QObject = global.QObject;
+// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
+
+// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+var setSymbolDesc = DESCRIPTORS && $fails(function () {
+  return _create(dP({}, 'a', {
+    get: function () { return dP(this, 'a', { value: 7 }).a; }
+  })).a != 7;
+}) ? function (it, key, D) {
+  var protoDesc = gOPD(ObjectProto, key);
+  if (protoDesc) delete ObjectProto[key];
+  dP(it, key, D);
+  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
+} : dP;
+
+var wrap = function (tag) {
+  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
+  sym._k = tag;
+  return sym;
+};
+
+var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
+  return typeof it == 'symbol';
+} : function (it) {
+  return it instanceof $Symbol;
+};
+
+var $defineProperty = function defineProperty(it, key, D) {
+  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
+  anObject(it);
+  key = toPrimitive(key, true);
+  anObject(D);
+  if (has(AllSymbols, key)) {
+    if (!D.enumerable) {
+      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
+      it[HIDDEN][key] = true;
+    } else {
+      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
+      D = _create(D, { enumerable: createDesc(0, false) });
+    } return setSymbolDesc(it, key, D);
+  } return dP(it, key, D);
+};
+var $defineProperties = function defineProperties(it, P) {
+  anObject(it);
+  var keys = enumKeys(P = toIObject(P));
+  var i = 0;
+  var l = keys.length;
+  var key;
+  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
+  return it;
+};
+var $create = function create(it, P) {
+  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
+};
+var $propertyIsEnumerable = function propertyIsEnumerable(key) {
+  var E = isEnum.call(this, key = toPrimitive(key, true));
+  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
+  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
+};
+var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
+  it = toIObject(it);
+  key = toPrimitive(key, true);
+  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
+  var D = gOPD(it, key);
+  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
+  return D;
+};
+var $getOwnPropertyNames = function getOwnPropertyNames(it) {
+  var names = gOPN(toIObject(it));
+  var result = [];
+  var i = 0;
+  var key;
+  while (names.length > i) {
+    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
+  } return result;
+};
+var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
+  var IS_OP = it === ObjectProto;
+  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
+  var result = [];
+  var i = 0;
+  var key;
+  while (names.length > i) {
+    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
+  } return result;
+};
+
+// 19.4.1.1 Symbol([description])
+if (!USE_NATIVE) {
+  $Symbol = function Symbol() {
+    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
+    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
+    var $set = function (value) {
+      if (this === ObjectProto) $set.call(OPSymbols, value);
+      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
+      setSymbolDesc(this, tag, createDesc(1, value));
+    };
+    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
+    return wrap(tag);
+  };
+  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
+    return this._k;
+  });
+
+  $GOPD.f = $getOwnPropertyDescriptor;
+  $DP.f = $defineProperty;
+  __webpack_require__(105).f = gOPNExt.f = $getOwnPropertyNames;
+  __webpack_require__(35).f = $propertyIsEnumerable;
+  __webpack_require__(72).f = $getOwnPropertySymbols;
+
+  if (DESCRIPTORS && !__webpack_require__(62)) {
+    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
+  }
+
+  wksExt.f = function (name) {
+    return wrap(wks(name));
+  };
+}
+
+$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });
+
+for (var es6Symbols = (
+  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
+  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
+).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);
+
+for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);
+
+$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
+  // 19.4.2.1 Symbol.for(key)
+  'for': function (key) {
+    return has(SymbolRegistry, key += '')
+      ? SymbolRegistry[key]
+      : SymbolRegistry[key] = $Symbol(key);
+  },
+  // 19.4.2.5 Symbol.keyFor(sym)
+  keyFor: function keyFor(sym) {
+    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
+    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
+  },
+  useSetter: function () { setter = true; },
+  useSimple: function () { setter = false; }
+});
+
+$export($export.S + $export.F * !USE_NATIVE, 'Object', {
+  // 19.1.2.2 Object.create(O [, Properties])
+  create: $create,
+  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
+  defineProperty: $defineProperty,
+  // 19.1.2.3 Object.defineProperties(O, Properties)
+  defineProperties: $defineProperties,
+  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
+  // 19.1.2.7 Object.getOwnPropertyNames(O)
+  getOwnPropertyNames: $getOwnPropertyNames,
+  // 19.1.2.8 Object.getOwnPropertySymbols(O)
+  getOwnPropertySymbols: $getOwnPropertySymbols
+});
+
+// 24.3.2 JSON.stringify(value [, replacer [, space]])
+$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
+  var S = $Symbol();
+  // MS Edge converts symbol values to JSON as {}
+  // WebKit converts symbol values to JSON as null
+  // V8 throws on boxed symbols
+  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
+})), 'JSON', {
+  stringify: function stringify(it) {
+    var args = [it];
+    var i = 1;
+    var replacer, $replacer;
+    while (arguments.length > i) args.push(arguments[i++]);
+    $replacer = replacer = args[1];
+    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
+    if (!isArray(replacer)) replacer = function (key, value) {
+      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
+      if (!isSymbol(value)) return value;
+    };
+    args[1] = replacer;
+    return _stringify.apply($JSON, args);
+  }
+});
+
+// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
+$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(13)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
+// 19.4.3.5 Symbol.prototype[@@toStringTag]
+setToStringTag($Symbol, 'Symbol');
+// 20.2.1.9 Math[@@toStringTag]
+setToStringTag(Math, 'Math', true);
+// 24.3.3 JSON[@@toStringTag]
+setToStringTag(global.JSON, 'JSON', true);
+
+
+/***/ }),
+/* 219 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// all enumerable object keys, includes symbols
+var getKeys = __webpack_require__(29);
+var gOPS = __webpack_require__(72);
+var pIE = __webpack_require__(35);
+module.exports = function (it) {
+  var result = getKeys(it);
+  var getSymbols = gOPS.f;
+  if (getSymbols) {
+    var symbols = getSymbols(it);
+    var isEnum = pIE.f;
+    var i = 0;
+    var key;
+    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
+  } return result;
+};
+
+
+/***/ }),
+/* 220 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+var toIObject = __webpack_require__(17);
+var gOPN = __webpack_require__(105).f;
+var toString = {}.toString;
+
+var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
+  ? Object.getOwnPropertyNames(window) : [];
+
+var getWindowNames = function (it) {
+  try {
+    return gOPN(it);
+  } catch (e) {
+    return windowNames.slice();
+  }
+};
+
+module.exports.f = function getOwnPropertyNames(it) {
+  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
+};
+
+
+/***/ }),
+/* 221 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(71)('asyncIterator');
+
+
+/***/ }),
+/* 222 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(71)('observable');
+
+
+/***/ }),
+/* 223 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(224);
+var $Object = __webpack_require__(2).Object;
+module.exports = function defineProperty(it, key, desc) {
+  return $Object.defineProperty(it, key, desc);
+};
+
+
+/***/ }),
+/* 224 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__(3);
+// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperty: __webpack_require__(6).f });
+
+
+/***/ }),
+/* 225 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(226), __esModule: true };
+
+/***/ }),
+/* 226 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(73);
+__webpack_require__(24);
+__webpack_require__(28);
+__webpack_require__(227);
+__webpack_require__(232);
+__webpack_require__(234);
+__webpack_require__(235);
+module.exports = __webpack_require__(2).Map;
+
+
+/***/ }),
+/* 227 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var strong = __webpack_require__(108);
+var validate = __webpack_require__(75);
+var MAP = 'Map';
+
+// 23.1 Map Objects
+module.exports = __webpack_require__(113)(MAP, function (get) {
+  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+  // 23.1.3.6 Map.prototype.get(key)
+  get: function get(key) {
+    var entry = strong.getEntry(validate(this, MAP), key);
+    return entry && entry.v;
+  },
+  // 23.1.3.9 Map.prototype.set(key, value)
+  set: function set(key, value) {
+    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);
+  }
+}, strong, true);
+
+
+/***/ }),
+/* 228 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var global = __webpack_require__(10);
+var core = __webpack_require__(2);
+var dP = __webpack_require__(6);
+var DESCRIPTORS = __webpack_require__(5);
+var SPECIES = __webpack_require__(4)('species');
+
+module.exports = function (KEY) {
+  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
+  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
+    configurable: true,
+    get: function () { return this; }
+  });
+};
+
+
+/***/ }),
+/* 229 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 0 -> Array#forEach
+// 1 -> Array#map
+// 2 -> Array#filter
+// 3 -> Array#some
+// 4 -> Array#every
+// 5 -> Array#find
+// 6 -> Array#findIndex
+var ctx = __webpack_require__(20);
+var IObject = __webpack_require__(54);
+var toObject = __webpack_require__(30);
+var toLength = __webpack_require__(37);
+var asc = __webpack_require__(230);
+module.exports = function (TYPE, $create) {
+  var IS_MAP = TYPE == 1;
+  var IS_FILTER = TYPE == 2;
+  var IS_SOME = TYPE == 3;
+  var IS_EVERY = TYPE == 4;
+  var IS_FIND_INDEX = TYPE == 6;
+  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
+  var create = $create || asc;
+  return function ($this, callbackfn, that) {
+    var O = toObject($this);
+    var self = IObject(O);
+    var f = ctx(callbackfn, that, 3);
+    var length = toLength(self.length);
+    var index = 0;
+    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
+    var val, res;
+    for (;length > index; index++) if (NO_HOLES || index in self) {
+      val = self[index];
+      res = f(val, index, O);
+      if (TYPE) {
+        if (IS_MAP) result[index] = res;   // map
+        else if (res) switch (TYPE) {
+          case 3: return true;             // some
+          case 5: return val;              // find
+          case 6: return index;            // findIndex
+          case 2: result.push(val);        // filter
+        } else if (IS_EVERY) return false; // every
+      }
+    }
+    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
+  };
+};
+
+
+/***/ }),
+/* 230 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
+var speciesConstructor = __webpack_require__(231);
+
+module.exports = function (original, length) {
+  return new (speciesConstructor(original))(length);
+};
+
+
+/***/ }),
+/* 231 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(9);
+var isArray = __webpack_require__(104);
+var SPECIES = __webpack_require__(4)('species');
+
+module.exports = function (original) {
+  var C;
+  if (isArray(original)) {
+    C = original.constructor;
+    // cross-realm fallback
+    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
+    if (isObject(C)) {
+      C = C[SPECIES];
+      if (C === null) C = undefined;
+    }
+  } return C === undefined ? Array : C;
+};
+
+
+/***/ }),
+/* 232 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var $export = __webpack_require__(3);
+
+$export($export.P + $export.R, 'Map', { toJSON: __webpack_require__(114)('Map') });
+
+
+/***/ }),
+/* 233 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var forOf = __webpack_require__(41);
+
+module.exports = function (iter, ITERATOR) {
+  var result = [];
+  forOf(iter, false, result.push, result, ITERATOR);
+  return result;
+};
+
+
+/***/ }),
+/* 234 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
+__webpack_require__(115)('Map');
+
+
+/***/ }),
+/* 235 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
+__webpack_require__(116)('Map');
+
+
+/***/ }),
+/* 236 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _typeof2 = __webpack_require__(69);
+
+var _typeof3 = _interopRequireDefault(_typeof2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (self, call) {
+  if (!self) {
+    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+  }
+
+  return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;
+};
+
+/***/ }),
+/* 237 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _setPrototypeOf = __webpack_require__(238);
+
+var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);
+
+var _create = __webpack_require__(242);
+
+var _create2 = _interopRequireDefault(_create);
+
+var _typeof2 = __webpack_require__(69);
+
+var _typeof3 = _interopRequireDefault(_typeof2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (subClass, superClass) {
+  if (typeof superClass !== "function" && superClass !== null) {
+    throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));
+  }
+
+  subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {
+    constructor: {
+      value: subClass,
+      enumerable: false,
+      writable: true,
+      configurable: true
+    }
+  });
+  if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;
+};
+
+/***/ }),
+/* 238 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(239), __esModule: true };
+
+/***/ }),
+/* 239 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(240);
+module.exports = __webpack_require__(2).Object.setPrototypeOf;
+
+
+/***/ }),
+/* 240 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.3.19 Object.setPrototypeOf(O, proto)
+var $export = __webpack_require__(3);
+$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(241).set });
+
+
+/***/ }),
+/* 241 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Works with __proto__ only. Old v8 can't work with null proto objects.
+/* eslint-disable no-proto */
+var isObject = __webpack_require__(9);
+var anObject = __webpack_require__(14);
+var check = function (O, proto) {
+  anObject(O);
+  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
+};
+module.exports = {
+  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
+    function (test, buggy, set) {
+      try {
+        set = __webpack_require__(20)(Function.call, __webpack_require__(57).f(Object.prototype, '__proto__').set, 2);
+        set(test, []);
+        buggy = !(test instanceof Array);
+      } catch (e) { buggy = true; }
+      return function setPrototypeOf(O, proto) {
+        check(O, proto);
+        if (buggy) O.__proto__ = proto;
+        else set(O, proto);
+        return O;
+      };
+    }({}, false) : undefined),
+  check: check
+};
+
+
+/***/ }),
+/* 242 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(243), __esModule: true };
+
+/***/ }),
+/* 243 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(244);
+var $Object = __webpack_require__(2).Object;
+module.exports = function create(P, D) {
+  return $Object.create(P, D);
+};
+
+
+/***/ }),
+/* 244 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__(3);
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+$export($export.S, 'Object', { create: __webpack_require__(36) });
+
+
+/***/ }),
+/* 245 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(246), __esModule: true };
+
+/***/ }),
+/* 246 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(247);
+var $Object = __webpack_require__(2).Object;
+module.exports = function defineProperties(T, D) {
+  return $Object.defineProperties(T, D);
+};
+
+
+/***/ }),
+/* 247 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__(3);
+// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
+$export($export.S + $export.F * !__webpack_require__(5), 'Object', { defineProperties: __webpack_require__(100) });
+
+
+/***/ }),
+/* 248 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var pSlice = Array.prototype.slice;
+var objectKeys = __webpack_require__(249);
+var isArguments = __webpack_require__(250);
+
+var deepEqual = module.exports = function (actual, expected, opts) {
+  if (!opts) opts = {};
+  // 7.1. All identical values are equivalent, as determined by ===.
+  if (actual === expected) {
+    return true;
+
+  } else if (actual instanceof Date && expected instanceof Date) {
+    return actual.getTime() === expected.getTime();
+
+  // 7.3. Other pairs that do not both pass typeof value == 'object',
+  // equivalence is determined by ==.
+  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {
+    return opts.strict ? actual === expected : actual == expected;
+
+  // 7.4. For all other Object pairs, including Array objects, equivalence is
+  // determined by having the same number of owned properties (as verified
+  // with Object.prototype.hasOwnProperty.call), the same set of keys
+  // (although not necessarily the same order), equivalent values for every
+  // corresponding key, and an identical 'prototype' property. Note: this
+  // accounts for both named and indexed properties on Arrays.
+  } else {
+    return objEquiv(actual, expected, opts);
+  }
+}
+
+function isUndefinedOrNull(value) {
+  return value === null || value === undefined;
+}
+
+function isBuffer (x) {
+  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;
+  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
+    return false;
+  }
+  if (x.length > 0 && typeof x[0] !== 'number') return false;
+  return true;
+}
+
+function objEquiv(a, b, opts) {
+  var i, key;
+  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
+    return false;
+  // an identical 'prototype' property.
+  if (a.prototype !== b.prototype) return false;
+  //~~~I've managed to break Object.keys through screwy arguments passing.
+  //   Converting to array solves the problem.
+  if (isArguments(a)) {
+    if (!isArguments(b)) {
+      return false;
+    }
+    a = pSlice.call(a);
+    b = pSlice.call(b);
+    return deepEqual(a, b, opts);
+  }
+  if (isBuffer(a)) {
+    if (!isBuffer(b)) {
+      return false;
+    }
+    if (a.length !== b.length) return false;
+    for (i = 0; i < a.length; i++) {
+      if (a[i] !== b[i]) return false;
+    }
+    return true;
+  }
+  try {
+    var ka = objectKeys(a),
+        kb = objectKeys(b);
+  } catch (e) {//happens when one is a string literal and the other isn't
+    return false;
+  }
+  // having the same number of owned properties (keys incorporates
+  // hasOwnProperty)
+  if (ka.length != kb.length)
+    return false;
+  //the same set of keys (although not necessarily the same order),
+  ka.sort();
+  kb.sort();
+  //~~~cheap key test
+  for (i = ka.length - 1; i >= 0; i--) {
+    if (ka[i] != kb[i])
+      return false;
+  }
+  //equivalent values for every corresponding key, and
+  //~~~possibly expensive deep test
+  for (i = ka.length - 1; i >= 0; i--) {
+    key = ka[i];
+    if (!deepEqual(a[key], b[key], opts)) return false;
+  }
+  return typeof a === typeof b;
+}
+
+
+/***/ }),
+/* 249 */
+/***/ (function(module, exports) {
+
+exports = module.exports = typeof Object.keys === 'function'
+  ? Object.keys : shim;
+
+exports.shim = shim;
+function shim (obj) {
+  var keys = [];
+  for (var key in obj) keys.push(key);
+  return keys;
+}
+
+
+/***/ }),
+/* 250 */
+/***/ (function(module, exports) {
+
+var supportsArgumentsClass = (function(){
+  return Object.prototype.toString.call(arguments)
+})() == '[object Arguments]';
+
+exports = module.exports = supportsArgumentsClass ? supported : unsupported;
+
+exports.supported = supported;
+function supported(object) {
+  return Object.prototype.toString.call(object) == '[object Arguments]';
+};
+
+exports.unsupported = unsupported;
+function unsupported(object){
+  return object &&
+    typeof object == 'object' &&
+    typeof object.length == 'number' &&
+    Object.prototype.hasOwnProperty.call(object, 'callee') &&
+    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||
+    false;
+};
+
+
+/***/ }),
+/* 251 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(252), __esModule: true };
+
+/***/ }),
+/* 252 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(253);
+module.exports = __webpack_require__(2).Object.assign;
+
+
+/***/ }),
+/* 253 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.3.1 Object.assign(target, source)
+var $export = __webpack_require__(3);
+
+$export($export.S + $export.F, 'Object', { assign: __webpack_require__(254) });
+
+
+/***/ }),
+/* 254 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// 19.1.2.1 Object.assign(target, source, ...)
+var getKeys = __webpack_require__(29);
+var gOPS = __webpack_require__(72);
+var pIE = __webpack_require__(35);
+var toObject = __webpack_require__(30);
+var IObject = __webpack_require__(54);
+var $assign = Object.assign;
+
+// should work with symbols and should have deterministic property order (V8 bug)
+module.exports = !$assign || __webpack_require__(19)(function () {
+  var A = {};
+  var B = {};
+  // eslint-disable-next-line no-undef
+  var S = Symbol();
+  var K = 'abcdefghijklmnopqrst';
+  A[S] = 7;
+  K.split('').forEach(function (k) { B[k] = k; });
+  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
+}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
+  var T = toObject(target);
+  var aLen = arguments.length;
+  var index = 1;
+  var getSymbols = gOPS.f;
+  var isEnum = pIE.f;
+  while (aLen > index) {
+    var S = IObject(arguments[index++]);
+    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
+    var length = keys.length;
+    var j = 0;
+    var key;
+    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
+  } return T;
+} : $assign;
+
+
+/***/ }),
+/* 255 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(256), __esModule: true };
+
+/***/ }),
+/* 256 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(257);
+module.exports = __webpack_require__(2).String.fromCodePoint;
+
+
+/***/ }),
+/* 257 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__(3);
+var toAbsoluteIndex = __webpack_require__(102);
+var fromCharCode = String.fromCharCode;
+var $fromCodePoint = String.fromCodePoint;
+
+// length should be 1, old FF problem
+$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
+  // 21.1.2.2 String.fromCodePoint(...codePoints)
+  fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars
+    var res = [];
+    var aLen = arguments.length;
+    var i = 0;
+    var code;
+    while (aLen > i) {
+      code = +arguments[i++];
+      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
+      res.push(code < 0x10000
+        ? fromCharCode(code)
+        : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
+      );
+    } return res.join('');
+  }
+});
+
+
+/***/ }),
+/* 258 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(259), __esModule: true };
+
+/***/ }),
+/* 259 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(24);
+__webpack_require__(260);
+module.exports = __webpack_require__(2).Array.from;
+
+
+/***/ }),
+/* 260 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var ctx = __webpack_require__(20);
+var $export = __webpack_require__(3);
+var toObject = __webpack_require__(30);
+var call = __webpack_require__(111);
+var isArrayIter = __webpack_require__(112);
+var toLength = __webpack_require__(37);
+var createProperty = __webpack_require__(261);
+var getIterFn = __webpack_require__(67);
+
+$export($export.S + $export.F * !__webpack_require__(262)(function (iter) { Array.from(iter); }), 'Array', {
+  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
+  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
+    var O = toObject(arrayLike);
+    var C = typeof this == 'function' ? this : Array;
+    var aLen = arguments.length;
+    var mapfn = aLen > 1 ? arguments[1] : undefined;
+    var mapping = mapfn !== undefined;
+    var index = 0;
+    var iterFn = getIterFn(O);
+    var length, result, step, iterator;
+    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
+    // if object isn't iterable or it's array with default iterator - use simple case
+    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
+      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
+        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
+      }
+    } else {
+      length = toLength(O.length);
+      for (result = new C(length); length > index; index++) {
+        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
+      }
+    }
+    result.length = index;
+    return result;
+  }
+});
+
+
+/***/ }),
+/* 261 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var $defineProperty = __webpack_require__(6);
+var createDesc = __webpack_require__(27);
+
+module.exports = function (object, index, value) {
+  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
+  else object[index] = value;
+};
+
+
+/***/ }),
+/* 262 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ITERATOR = __webpack_require__(4)('iterator');
+var SAFE_CLOSING = false;
+
+try {
+  var riter = [7][ITERATOR]();
+  riter['return'] = function () { SAFE_CLOSING = true; };
+  // eslint-disable-next-line no-throw-literal
+  Array.from(riter, function () { throw 2; });
+} catch (e) { /* empty */ }
+
+module.exports = function (exec, skipClosing) {
+  if (!skipClosing && !SAFE_CLOSING) return false;
+  var safe = false;
+  try {
+    var arr = [7];
+    var iter = arr[ITERATOR]();
+    iter.next = function () { return { done: safe = true }; };
+    arr[ITERATOR] = function () { return iter; };
+    exec(arr);
+  } catch (e) { /* empty */ }
+  return safe;
+};
+
+
+/***/ }),
+/* 263 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(264), __esModule: true };
+
+/***/ }),
+/* 264 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(73);
+__webpack_require__(24);
+__webpack_require__(28);
+__webpack_require__(265);
+__webpack_require__(266);
+__webpack_require__(267);
+__webpack_require__(268);
+module.exports = __webpack_require__(2).Set;
+
+
+/***/ }),
+/* 265 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var strong = __webpack_require__(108);
+var validate = __webpack_require__(75);
+var SET = 'Set';
+
+// 23.2 Set Objects
+module.exports = __webpack_require__(113)(SET, function (get) {
+  return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+  // 23.2.3.1 Set.prototype.add(value)
+  add: function add(value) {
+    return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);
+  }
+}, strong);
+
+
+/***/ }),
+/* 266 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var $export = __webpack_require__(3);
+
+$export($export.P + $export.R, 'Set', { toJSON: __webpack_require__(114)('Set') });
+
+
+/***/ }),
+/* 267 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of
+__webpack_require__(115)('Set');
+
+
+/***/ }),
+/* 268 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from
+__webpack_require__(116)('Set');
+
+
+/***/ }),
+/* 269 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.9.1
+var CATEGORY_BITS, CATEGORY_MASK, CATEGORY_SHIFT, COMBINING_BITS, COMBINING_MASK, COMBINING_SHIFT, EAW_BITS, EAW_MASK, EAW_SHIFT, NUMBER_BITS, NUMBER_MASK, SCRIPT_BITS, SCRIPT_MASK, SCRIPT_SHIFT, UnicodeTrie, bits, data, fs, log2, trie;
+
+UnicodeTrie = __webpack_require__(43);
+
+data = __webpack_require__(270);
+
+
+
+trie = new UnicodeTrie(Buffer("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","base64"));
+
+log2 = Math.log2 || function(n) {
+  return Math.log(n) / Math.LN2;
+};
+
+bits = function(n) {
+  return (log2(n) + 1) | 0;
+};
+
+CATEGORY_BITS = bits(data.categories.length - 1);
+
+COMBINING_BITS = bits(data.combiningClasses.length - 1);
+
+SCRIPT_BITS = bits(data.scripts.length - 1);
+
+EAW_BITS = bits(data.eaw.length - 1);
+
+NUMBER_BITS = 10;
+
+CATEGORY_SHIFT = COMBINING_BITS + SCRIPT_BITS + EAW_BITS + NUMBER_BITS;
+
+COMBINING_SHIFT = SCRIPT_BITS + EAW_BITS + NUMBER_BITS;
+
+SCRIPT_SHIFT = EAW_BITS + NUMBER_BITS;
+
+EAW_SHIFT = NUMBER_BITS;
+
+CATEGORY_MASK = (1 << CATEGORY_BITS) - 1;
+
+COMBINING_MASK = (1 << COMBINING_BITS) - 1;
+
+SCRIPT_MASK = (1 << SCRIPT_BITS) - 1;
+
+EAW_MASK = (1 << EAW_BITS) - 1;
+
+NUMBER_MASK = (1 << NUMBER_BITS) - 1;
+
+exports.getCategory = function(codePoint) {
+  var val;
+  val = trie.get(codePoint);
+  return data.categories[(val >> CATEGORY_SHIFT) & CATEGORY_MASK];
+};
+
+exports.getCombiningClass = function(codePoint) {
+  var val;
+  val = trie.get(codePoint);
+  return data.combiningClasses[(val >> COMBINING_SHIFT) & COMBINING_MASK];
+};
+
+exports.getScript = function(codePoint) {
+  var val;
+  val = trie.get(codePoint);
+  return data.scripts[(val >> SCRIPT_SHIFT) & SCRIPT_MASK];
+};
+
+exports.getEastAsianWidth = function(codePoint) {
+  var val;
+  val = trie.get(codePoint);
+  return data.eaw[(val >> EAW_SHIFT) & EAW_MASK];
+};
+
+exports.getNumericValue = function(codePoint) {
+  var denominator, exp, num, numerator, val;
+  val = trie.get(codePoint);
+  num = val & NUMBER_MASK;
+  if (num === 0) {
+    return null;
+  } else if (num <= 50) {
+    return num - 1;
+  } else if (num < 0x1e0) {
+    numerator = (num >> 4) - 12;
+    denominator = (num & 0xf) + 1;
+    return numerator / denominator;
+  } else if (num < 0x300) {
+    val = (num >> 5) - 14;
+    exp = (num & 0x1f) + 2;
+    while (exp > 0) {
+      val *= 10;
+      exp--;
+    }
+    return val;
+  } else {
+    val = (num >> 2) - 0xbf;
+    exp = (num & 3) + 1;
+    while (exp > 0) {
+      val *= 60;
+      exp--;
+    }
+    return val;
+  }
+};
+
+exports.isAlphabetic = function(codePoint) {
+  var ref;
+  return (ref = exports.getCategory(codePoint)) === 'Lu' || ref === 'Ll' || ref === 'Lt' || ref === 'Lm' || ref === 'Lo' || ref === 'Nl';
+};
+
+exports.isDigit = function(codePoint) {
+  return exports.getCategory(codePoint) === 'Nd';
+};
+
+exports.isPunctuation = function(codePoint) {
+  var ref;
+  return (ref = exports.getCategory(codePoint)) === 'Pc' || ref === 'Pd' || ref === 'Pe' || ref === 'Pf' || ref === 'Pi' || ref === 'Po' || ref === 'Ps';
+};
+
+exports.isLowerCase = function(codePoint) {
+  return exports.getCategory(codePoint) === 'Ll';
+};
+
+exports.isUpperCase = function(codePoint) {
+  return exports.getCategory(codePoint) === 'Lu';
+};
+
+exports.isTitleCase = function(codePoint) {
+  return exports.getCategory(codePoint) === 'Lt';
+};
+
+exports.isWhiteSpace = function(codePoint) {
+  var ref;
+  return (ref = exports.getCategory(codePoint)) === 'Zs' || ref === 'Zl' || ref === 'Zp';
+};
+
+exports.isBaseForm = function(codePoint) {
+  var ref;
+  return (ref = exports.getCategory(codePoint)) === 'Nd' || ref === 'No' || ref === 'Nl' || ref === 'Lu' || ref === 'Ll' || ref === 'Lt' || ref === 'Lm' || ref === 'Lo' || ref === 'Me' || ref === 'Mc';
+};
+
+exports.isMark = function(codePoint) {
+  var ref;
+  return (ref = exports.getCategory(codePoint)) === 'Mn' || ref === 'Me' || ref === 'Mc';
+};
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 270 */
+/***/ (function(module, exports) {
+
+module.exports = {"categories":["Cc","Zs","Po","Sc","Ps","Pe","Sm","Pd","Nd","Lu","Sk","Pc","Ll","So","Lo","Pi","Cf","No","Pf","Lt","Lm","Mn","Me","Mc","Nl","Zl","Zp","Cs","Co"],"combiningClasses":["Not_Reordered","Above","Above_Right","Below","Attached_Above_Right","Attached_Below","Overlay","Iota_Subscript","Double_Below","Double_Above","Below_Right","Above_Left","CCC10","CCC11","CCC12","CCC13","CCC14","CCC15","CCC16","CCC17","CCC18","CCC19","CCC20","CCC21","CCC22","CCC23","CCC24","CCC25","CCC30","CCC31","CCC32","CCC27","CCC28","CCC29","CCC33","CCC34","CCC35","CCC36","Nukta","Virama","CCC84","CCC91","CCC103","CCC107","CCC118","CCC122","CCC129","CCC130","CCC132","Attached_Above","Below_Left","Left","Kana_Voicing","CCC26","Right"],"scripts":["Common","Latin","Bopomofo","Inherited","Greek","Coptic","Cyrillic","Armenian","Hebrew","Arabic","Syriac","Thaana","Nko","Samaritan","Mandaic","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","Hangul","Ethiopic","Cherokee","Canadian_Aboriginal","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","Tai_Le","New_Tai_Lue","Buginese","Tai_Tham","Balinese","Sundanese","Batak","Lepcha","Ol_Chiki","Braille","Glagolitic","Tifinagh","Han","Hiragana","Katakana","Yi","Lisu","Vai","Bamum","Syloti_Nagri","Phags_Pa","Saurashtra","Kayah_Li","Rejang","Javanese","Cham","Tai_Viet","Meetei_Mayek","null","Linear_B","Lycian","Carian","Old_Italic","Gothic","Old_Permic","Ugaritic","Old_Persian","Deseret","Shavian","Osmanya","Elbasan","Caucasian_Albanian","Linear_A","Cypriot","Imperial_Aramaic","Palmyrene","Nabataean","Hatran","Phoenician","Lydian","Meroitic_Hieroglyphs","Meroitic_Cursive","Kharoshthi","Old_South_Arabian","Old_North_Arabian","Manichaean","Avestan","Inscriptional_Parthian","Inscriptional_Pahlavi","Psalter_Pahlavi","Old_Turkic","Old_Hungarian","Brahmi","Kaithi","Sora_Sompeng","Chakma","Mahajani","Sharada","Khojki","Multani","Khudawadi","Grantha","Tirhuta","Siddham","Modi","Takri","Ahom","Warang_Citi","Pau_Cin_Hau","Cuneiform","Egyptian_Hieroglyphs","Anatolian_Hieroglyphs","Mro","Bassa_Vah","Pahawh_Hmong","Miao","Duployan","SignWriting","Mende_Kikakui"],"eaw":["N","Na","A","W","H","F"]}
+
+/***/ }),
+/* 271 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var _slicedToArray = _interopDefault(__webpack_require__(272));
+var _getIterator = _interopDefault(__webpack_require__(60));
+var _defineProperty = _interopDefault(__webpack_require__(276));
+var _regeneratorRuntime = _interopDefault(__webpack_require__(277));
+var _Symbol$iterator = _interopDefault(__webpack_require__(103));
+var _classCallCheck = _interopDefault(__webpack_require__(106));
+var _createClass = _interopDefault(__webpack_require__(107));
+
+var INITIAL_STATE = 1;
+var FAIL_STATE = 0;
+
+/**
+ * A StateMachine represents a deterministic finite automaton.
+ * It can perform matches over a sequence of values, similar to a regular expression.
+ */
+
+var StateMachine = function () {
+  function StateMachine(dfa) {
+    _classCallCheck(this, StateMachine);
+
+    this.stateTable = dfa.stateTable;
+    this.accepting = dfa.accepting;
+    this.tags = dfa.tags;
+  }
+
+  /**
+   * Returns an iterable object that yields pattern matches over the input sequence.
+   * Matches are of the form [startIndex, endIndex, tags].
+   */
+
+
+  _createClass(StateMachine, [{
+    key: 'match',
+    value: function match(str) {
+      var self = this;
+      return _defineProperty({}, _Symbol$iterator, _regeneratorRuntime.mark(function _callee() {
+        var state, startRun, lastAccepting, lastState, p, c;
+        return _regeneratorRuntime.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                state = INITIAL_STATE;
+                startRun = null;
+                lastAccepting = null;
+                lastState = null;
+                p = 0;
+
+              case 5:
+                if (!(p < str.length)) {
+                  _context.next = 21;
+                  break;
+                }
+
+                c = str[p];
+
+
+                lastState = state;
+                state = self.stateTable[state][c];
+
+                if (!(state === FAIL_STATE)) {
+                  _context.next = 15;
+                  break;
+                }
+
+                if (!(startRun != null && lastAccepting != null && lastAccepting >= startRun)) {
+                  _context.next = 13;
+                  break;
+                }
+
+                _context.next = 13;
+                return [startRun, lastAccepting, self.tags[lastState]];
+
+              case 13:
+
+                // reset the state as if we started over from the initial state
+                state = self.stateTable[INITIAL_STATE][c];
+                startRun = null;
+
+              case 15:
+
+                // start a run if not in the failure state
+                if (state !== FAIL_STATE && startRun == null) {
+                  startRun = p;
+                }
+
+                // if accepting, mark the potential match end
+                if (self.accepting[state]) {
+                  lastAccepting = p;
+                }
+
+                // reset the state to the initial state if we get into the failure state
+                if (state === FAIL_STATE) {
+                  state = INITIAL_STATE;
+                }
+
+              case 18:
+                p++;
+                _context.next = 5;
+                break;
+
+              case 21:
+                if (!(startRun != null && lastAccepting != null && lastAccepting >= startRun)) {
+                  _context.next = 24;
+                  break;
+                }
+
+                _context.next = 24;
+                return [startRun, lastAccepting, self.tags[state]];
+
+              case 24:
+              case 'end':
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
+    }
+
+    /**
+     * For each match over the input sequence, action functions matching
+     * the tag definitions in the input pattern are called with the startIndex,
+     * endIndex, and sub-match sequence.
+     */
+
+  }, {
+    key: 'apply',
+    value: function apply(str, actions) {
+      var _iteratorNormalCompletion = true;
+      var _didIteratorError = false;
+      var _iteratorError = undefined;
+
+      try {
+        for (var _iterator = _getIterator(this.match(str)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+          var _step$value = _slicedToArray(_step.value, 3);
+
+          var start = _step$value[0];
+          var end = _step$value[1];
+          var tags = _step$value[2];
+          var _iteratorNormalCompletion2 = true;
+          var _didIteratorError2 = false;
+          var _iteratorError2 = undefined;
+
+          try {
+            for (var _iterator2 = _getIterator(tags), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+              var tag = _step2.value;
+
+              if (typeof actions[tag] === 'function') {
+                actions[tag](start, end, str.slice(start, end + 1));
+              }
+            }
+          } catch (err) {
+            _didIteratorError2 = true;
+            _iteratorError2 = err;
+          } finally {
+            try {
+              if (!_iteratorNormalCompletion2 && _iterator2.return) {
+                _iterator2.return();
+              }
+            } finally {
+              if (_didIteratorError2) {
+                throw _iteratorError2;
+              }
+            }
+          }
+        }
+      } catch (err) {
+        _didIteratorError = true;
+        _iteratorError = err;
+      } finally {
+        try {
+          if (!_iteratorNormalCompletion && _iterator.return) {
+            _iterator.return();
+          }
+        } finally {
+          if (_didIteratorError) {
+            throw _iteratorError;
+          }
+        }
+      }
+    }
+  }]);
+
+  return StateMachine;
+}();
+
+module.exports = StateMachine;
+
+
+/***/ }),
+/* 272 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _isIterable2 = __webpack_require__(273);
+
+var _isIterable3 = _interopRequireDefault(_isIterable2);
+
+var _getIterator2 = __webpack_require__(60);
+
+var _getIterator3 = _interopRequireDefault(_getIterator2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function () {
+  function sliceIterator(arr, i) {
+    var _arr = [];
+    var _n = true;
+    var _d = false;
+    var _e = undefined;
+
+    try {
+      for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {
+        _arr.push(_s.value);
+
+        if (i && _arr.length === i) break;
+      }
+    } catch (err) {
+      _d = true;
+      _e = err;
+    } finally {
+      try {
+        if (!_n && _i["return"]) _i["return"]();
+      } finally {
+        if (_d) throw _e;
+      }
+    }
+
+    return _arr;
+  }
+
+  return function (arr, i) {
+    if (Array.isArray(arr)) {
+      return arr;
+    } else if ((0, _isIterable3.default)(Object(arr))) {
+      return sliceIterator(arr, i);
+    } else {
+      throw new TypeError("Invalid attempt to destructure non-iterable instance");
+    }
+  };
+}();
+
+/***/ }),
+/* 273 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(274), __esModule: true };
+
+/***/ }),
+/* 274 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(28);
+__webpack_require__(24);
+module.exports = __webpack_require__(275);
+
+
+/***/ }),
+/* 275 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var classof = __webpack_require__(68);
+var ITERATOR = __webpack_require__(4)('iterator');
+var Iterators = __webpack_require__(23);
+module.exports = __webpack_require__(2).isIterable = function (it) {
+  var O = Object(it);
+  return O[ITERATOR] !== undefined
+    || '@@iterator' in O
+    // eslint-disable-next-line no-prototype-builtins
+    || Iterators.hasOwnProperty(classof(O));
+};
+
+
+/***/ }),
+/* 276 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _defineProperty = __webpack_require__(74);
+
+var _defineProperty2 = _interopRequireDefault(_defineProperty);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (obj, key, value) {
+  if (key in obj) {
+    (0, _defineProperty2.default)(obj, key, {
+      value: value,
+      enumerable: true,
+      configurable: true,
+      writable: true
+    });
+  } else {
+    obj[key] = value;
+  }
+
+  return obj;
+};
+
+/***/ }),
+/* 277 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(278);
+
+
+/***/ }),
+/* 278 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+// This method of obtaining a reference to the global object needs to be
+// kept identical to the way it is obtained in runtime.js
+var g = (function() { return this })() || Function("return this")();
+
+// Use `getOwnPropertyNames` because not all browsers support calling
+// `hasOwnProperty` on the global `self` object in a worker. See #183.
+var hadRuntime = g.regeneratorRuntime &&
+  Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
+
+// Save the old regeneratorRuntime in case it needs to be restored later.
+var oldRuntime = hadRuntime && g.regeneratorRuntime;
+
+// Force reevalutation of runtime.js.
+g.regeneratorRuntime = undefined;
+
+module.exports = __webpack_require__(279);
+
+if (hadRuntime) {
+  // Restore the original runtime.
+  g.regeneratorRuntime = oldRuntime;
+} else {
+  // Remove the global property added by runtime.js.
+  try {
+    delete g.regeneratorRuntime;
+  } catch(e) {
+    g.regeneratorRuntime = undefined;
+  }
+}
+
+
+/***/ }),
+/* 279 */
+/***/ (function(module, exports) {
+
+/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+!(function(global) {
+  "use strict";
+
+  var Op = Object.prototype;
+  var hasOwn = Op.hasOwnProperty;
+  var undefined; // More compressible than void 0.
+  var $Symbol = typeof Symbol === "function" ? Symbol : {};
+  var iteratorSymbol = $Symbol.iterator || "@@iterator";
+  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
+  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
+
+  var inModule = typeof module === "object";
+  var runtime = global.regeneratorRuntime;
+  if (runtime) {
+    if (inModule) {
+      // If regeneratorRuntime is defined globally and we're in a module,
+      // make the exports object identical to regeneratorRuntime.
+      module.exports = runtime;
+    }
+    // Don't bother evaluating the rest of this file if the runtime was
+    // already defined globally.
+    return;
+  }
+
+  // Define the runtime globally (as expected by generated code) as either
+  // module.exports (if we're in a module) or a new, empty object.
+  runtime = global.regeneratorRuntime = inModule ? module.exports : {};
+
+  function wrap(innerFn, outerFn, self, tryLocsList) {
+    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
+    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
+    var generator = Object.create(protoGenerator.prototype);
+    var context = new Context(tryLocsList || []);
+
+    // The ._invoke method unifies the implementations of the .next,
+    // .throw, and .return methods.
+    generator._invoke = makeInvokeMethod(innerFn, self, context);
+
+    return generator;
+  }
+  runtime.wrap = wrap;
+
+  // Try/catch helper to minimize deoptimizations. Returns a completion
+  // record like context.tryEntries[i].completion. This interface could
+  // have been (and was previously) designed to take a closure to be
+  // invoked without arguments, but in all the cases we care about we
+  // already have an existing method we want to call, so there's no need
+  // to create a new function object. We can even get away with assuming
+  // the method takes exactly one argument, since that happens to be true
+  // in every case, so we don't have to touch the arguments object. The
+  // only additional allocation required is the completion record, which
+  // has a stable shape and so hopefully should be cheap to allocate.
+  function tryCatch(fn, obj, arg) {
+    try {
+      return { type: "normal", arg: fn.call(obj, arg) };
+    } catch (err) {
+      return { type: "throw", arg: err };
+    }
+  }
+
+  var GenStateSuspendedStart = "suspendedStart";
+  var GenStateSuspendedYield = "suspendedYield";
+  var GenStateExecuting = "executing";
+  var GenStateCompleted = "completed";
+
+  // Returning this object from the innerFn has the same effect as
+  // breaking out of the dispatch switch statement.
+  var ContinueSentinel = {};
+
+  // Dummy constructor functions that we use as the .constructor and
+  // .constructor.prototype properties for functions that return Generator
+  // objects. For full spec compliance, you may wish to configure your
+  // minifier not to mangle the names of these two functions.
+  function Generator() {}
+  function GeneratorFunction() {}
+  function GeneratorFunctionPrototype() {}
+
+  // This is a polyfill for %IteratorPrototype% for environments that
+  // don't natively support it.
+  var IteratorPrototype = {};
+  IteratorPrototype[iteratorSymbol] = function () {
+    return this;
+  };
+
+  var getProto = Object.getPrototypeOf;
+  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
+  if (NativeIteratorPrototype &&
+      NativeIteratorPrototype !== Op &&
+      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
+    // This environment has a native %IteratorPrototype%; use it instead
+    // of the polyfill.
+    IteratorPrototype = NativeIteratorPrototype;
+  }
+
+  var Gp = GeneratorFunctionPrototype.prototype =
+    Generator.prototype = Object.create(IteratorPrototype);
+  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
+  GeneratorFunctionPrototype.constructor = GeneratorFunction;
+  GeneratorFunctionPrototype[toStringTagSymbol] =
+    GeneratorFunction.displayName = "GeneratorFunction";
+
+  // Helper for defining the .next, .throw, and .return methods of the
+  // Iterator interface in terms of a single ._invoke method.
+  function defineIteratorMethods(prototype) {
+    ["next", "throw", "return"].forEach(function(method) {
+      prototype[method] = function(arg) {
+        return this._invoke(method, arg);
+      };
+    });
+  }
+
+  runtime.isGeneratorFunction = function(genFun) {
+    var ctor = typeof genFun === "function" && genFun.constructor;
+    return ctor
+      ? ctor === GeneratorFunction ||
+        // For the native GeneratorFunction constructor, the best we can
+        // do is to check its .name property.
+        (ctor.displayName || ctor.name) === "GeneratorFunction"
+      : false;
+  };
+
+  runtime.mark = function(genFun) {
+    if (Object.setPrototypeOf) {
+      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
+    } else {
+      genFun.__proto__ = GeneratorFunctionPrototype;
+      if (!(toStringTagSymbol in genFun)) {
+        genFun[toStringTagSymbol] = "GeneratorFunction";
+      }
+    }
+    genFun.prototype = Object.create(Gp);
+    return genFun;
+  };
+
+  // Within the body of any async function, `await x` is transformed to
+  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
+  // `hasOwn.call(value, "__await")` to determine if the yielded value is
+  // meant to be awaited.
+  runtime.awrap = function(arg) {
+    return { __await: arg };
+  };
+
+  function AsyncIterator(generator) {
+    function invoke(method, arg, resolve, reject) {
+      var record = tryCatch(generator[method], generator, arg);
+      if (record.type === "throw") {
+        reject(record.arg);
+      } else {
+        var result = record.arg;
+        var value = result.value;
+        if (value &&
+            typeof value === "object" &&
+            hasOwn.call(value, "__await")) {
+          return Promise.resolve(value.__await).then(function(value) {
+            invoke("next", value, resolve, reject);
+          }, function(err) {
+            invoke("throw", err, resolve, reject);
+          });
+        }
+
+        return Promise.resolve(value).then(function(unwrapped) {
+          // When a yielded Promise is resolved, its final value becomes
+          // the .value of the Promise<{value,done}> result for the
+          // current iteration. If the Promise is rejected, however, the
+          // result for this iteration will be rejected with the same
+          // reason. Note that rejections of yielded Promises are not
+          // thrown back into the generator function, as is the case
+          // when an awaited Promise is rejected. This difference in
+          // behavior between yield and await is important, because it
+          // allows the consumer to decide what to do with the yielded
+          // rejection (swallow it and continue, manually .throw it back
+          // into the generator, abandon iteration, whatever). With
+          // await, by contrast, there is no opportunity to examine the
+          // rejection reason outside the generator function, so the
+          // only option is to throw it from the await expression, and
+          // let the generator function handle the exception.
+          result.value = unwrapped;
+          resolve(result);
+        }, reject);
+      }
+    }
+
+    var previousPromise;
+
+    function enqueue(method, arg) {
+      function callInvokeWithMethodAndArg() {
+        return new Promise(function(resolve, reject) {
+          invoke(method, arg, resolve, reject);
+        });
+      }
+
+      return previousPromise =
+        // If enqueue has been called before, then we want to wait until
+        // all previous Promises have been resolved before calling invoke,
+        // so that results are always delivered in the correct order. If
+        // enqueue has not been called before, then it is important to
+        // call invoke immediately, without waiting on a callback to fire,
+        // so that the async generator function has the opportunity to do
+        // any necessary setup in a predictable way. This predictability
+        // is why the Promise constructor synchronously invokes its
+        // executor callback, and why async functions synchronously
+        // execute code before the first await. Since we implement simple
+        // async functions in terms of async generators, it is especially
+        // important to get this right, even though it requires care.
+        previousPromise ? previousPromise.then(
+          callInvokeWithMethodAndArg,
+          // Avoid propagating failures to Promises returned by later
+          // invocations of the iterator.
+          callInvokeWithMethodAndArg
+        ) : callInvokeWithMethodAndArg();
+    }
+
+    // Define the unified helper method that is used to implement .next,
+    // .throw, and .return (see defineIteratorMethods).
+    this._invoke = enqueue;
+  }
+
+  defineIteratorMethods(AsyncIterator.prototype);
+  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
+    return this;
+  };
+  runtime.AsyncIterator = AsyncIterator;
+
+  // Note that simple async functions are implemented on top of
+  // AsyncIterator objects; they just return a Promise for the value of
+  // the final result produced by the iterator.
+  runtime.async = function(innerFn, outerFn, self, tryLocsList) {
+    var iter = new AsyncIterator(
+      wrap(innerFn, outerFn, self, tryLocsList)
+    );
+
+    return runtime.isGeneratorFunction(outerFn)
+      ? iter // If outerFn is a generator, return the full iterator.
+      : iter.next().then(function(result) {
+          return result.done ? result.value : iter.next();
+        });
+  };
+
+  function makeInvokeMethod(innerFn, self, context) {
+    var state = GenStateSuspendedStart;
+
+    return function invoke(method, arg) {
+      if (state === GenStateExecuting) {
+        throw new Error("Generator is already running");
+      }
+
+      if (state === GenStateCompleted) {
+        if (method === "throw") {
+          throw arg;
+        }
+
+        // Be forgiving, per 25.3.3.3.3 of the spec:
+        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
+        return doneResult();
+      }
+
+      context.method = method;
+      context.arg = arg;
+
+      while (true) {
+        var delegate = context.delegate;
+        if (delegate) {
+          var delegateResult = maybeInvokeDelegate(delegate, context);
+          if (delegateResult) {
+            if (delegateResult === ContinueSentinel) continue;
+            return delegateResult;
+          }
+        }
+
+        if (context.method === "next") {
+          // Setting context._sent for legacy support of Babel's
+          // function.sent implementation.
+          context.sent = context._sent = context.arg;
+
+        } else if (context.method === "throw") {
+          if (state === GenStateSuspendedStart) {
+            state = GenStateCompleted;
+            throw context.arg;
+          }
+
+          context.dispatchException(context.arg);
+
+        } else if (context.method === "return") {
+          context.abrupt("return", context.arg);
+        }
+
+        state = GenStateExecuting;
+
+        var record = tryCatch(innerFn, self, context);
+        if (record.type === "normal") {
+          // If an exception is thrown from innerFn, we leave state ===
+          // GenStateExecuting and loop back for another invocation.
+          state = context.done
+            ? GenStateCompleted
+            : GenStateSuspendedYield;
+
+          if (record.arg === ContinueSentinel) {
+            continue;
+          }
+
+          return {
+            value: record.arg,
+            done: context.done
+          };
+
+        } else if (record.type === "throw") {
+          state = GenStateCompleted;
+          // Dispatch the exception by looping back around to the
+          // context.dispatchException(context.arg) call above.
+          context.method = "throw";
+          context.arg = record.arg;
+        }
+      }
+    };
+  }
+
+  // Call delegate.iterator[context.method](context.arg) and handle the
+  // result, either by returning a { value, done } result from the
+  // delegate iterator, or by modifying context.method and context.arg,
+  // setting context.delegate to null, and returning the ContinueSentinel.
+  function maybeInvokeDelegate(delegate, context) {
+    var method = delegate.iterator[context.method];
+    if (method === undefined) {
+      // A .throw or .return when the delegate iterator has no .throw
+      // method always terminates the yield* loop.
+      context.delegate = null;
+
+      if (context.method === "throw") {
+        if (delegate.iterator.return) {
+          // If the delegate iterator has a return method, give it a
+          // chance to clean up.
+          context.method = "return";
+          context.arg = undefined;
+          maybeInvokeDelegate(delegate, context);
+
+          if (context.method === "throw") {
+            // If maybeInvokeDelegate(context) changed context.method from
+            // "return" to "throw", let that override the TypeError below.
+            return ContinueSentinel;
+          }
+        }
+
+        context.method = "throw";
+        context.arg = new TypeError(
+          "The iterator does not provide a 'throw' method");
+      }
+
+      return ContinueSentinel;
+    }
+
+    var record = tryCatch(method, delegate.iterator, context.arg);
+
+    if (record.type === "throw") {
+      context.method = "throw";
+      context.arg = record.arg;
+      context.delegate = null;
+      return ContinueSentinel;
+    }
+
+    var info = record.arg;
+
+    if (! info) {
+      context.method = "throw";
+      context.arg = new TypeError("iterator result is not an object");
+      context.delegate = null;
+      return ContinueSentinel;
+    }
+
+    if (info.done) {
+      // Assign the result of the finished delegate to the temporary
+      // variable specified by delegate.resultName (see delegateYield).
+      context[delegate.resultName] = info.value;
+
+      // Resume execution at the desired location (see delegateYield).
+      context.next = delegate.nextLoc;
+
+      // If context.method was "throw" but the delegate handled the
+      // exception, let the outer generator proceed normally. If
+      // context.method was "next", forget context.arg since it has been
+      // "consumed" by the delegate iterator. If context.method was
+      // "return", allow the original .return call to continue in the
+      // outer generator.
+      if (context.method !== "return") {
+        context.method = "next";
+        context.arg = undefined;
+      }
+
+    } else {
+      // Re-yield the result returned by the delegate method.
+      return info;
+    }
+
+    // The delegate iterator is finished, so forget it and continue with
+    // the outer generator.
+    context.delegate = null;
+    return ContinueSentinel;
+  }
+
+  // Define Generator.prototype.{next,throw,return} in terms of the
+  // unified ._invoke helper method.
+  defineIteratorMethods(Gp);
+
+  Gp[toStringTagSymbol] = "Generator";
+
+  // A Generator should always return itself as the iterator object when the
+  // @@iterator function is called on it. Some browsers' implementations of the
+  // iterator prototype chain incorrectly implement this, causing the Generator
+  // object to not be returned from this call. This ensures that doesn't happen.
+  // See https://github.com/facebook/regenerator/issues/274 for more details.
+  Gp[iteratorSymbol] = function() {
+    return this;
+  };
+
+  Gp.toString = function() {
+    return "[object Generator]";
+  };
+
+  function pushTryEntry(locs) {
+    var entry = { tryLoc: locs[0] };
+
+    if (1 in locs) {
+      entry.catchLoc = locs[1];
+    }
+
+    if (2 in locs) {
+      entry.finallyLoc = locs[2];
+      entry.afterLoc = locs[3];
+    }
+
+    this.tryEntries.push(entry);
+  }
+
+  function resetTryEntry(entry) {
+    var record = entry.completion || {};
+    record.type = "normal";
+    delete record.arg;
+    entry.completion = record;
+  }
+
+  function Context(tryLocsList) {
+    // The root entry object (effectively a try statement without a catch
+    // or a finally block) gives us a place to store values thrown from
+    // locations where there is no enclosing try statement.
+    this.tryEntries = [{ tryLoc: "root" }];
+    tryLocsList.forEach(pushTryEntry, this);
+    this.reset(true);
+  }
+
+  runtime.keys = function(object) {
+    var keys = [];
+    for (var key in object) {
+      keys.push(key);
+    }
+    keys.reverse();
+
+    // Rather than returning an object with a next method, we keep
+    // things simple and return the next function itself.
+    return function next() {
+      while (keys.length) {
+        var key = keys.pop();
+        if (key in object) {
+          next.value = key;
+          next.done = false;
+          return next;
+        }
+      }
+
+      // To avoid creating an additional object, we just hang the .value
+      // and .done properties off the next function object itself. This
+      // also ensures that the minifier will not anonymize the function.
+      next.done = true;
+      return next;
+    };
+  };
+
+  function values(iterable) {
+    if (iterable) {
+      var iteratorMethod = iterable[iteratorSymbol];
+      if (iteratorMethod) {
+        return iteratorMethod.call(iterable);
+      }
+
+      if (typeof iterable.next === "function") {
+        return iterable;
+      }
+
+      if (!isNaN(iterable.length)) {
+        var i = -1, next = function next() {
+          while (++i < iterable.length) {
+            if (hasOwn.call(iterable, i)) {
+              next.value = iterable[i];
+              next.done = false;
+              return next;
+            }
+          }
+
+          next.value = undefined;
+          next.done = true;
+
+          return next;
+        };
+
+        return next.next = next;
+      }
+    }
+
+    // Return an iterator with no values.
+    return { next: doneResult };
+  }
+  runtime.values = values;
+
+  function doneResult() {
+    return { value: undefined, done: true };
+  }
+
+  Context.prototype = {
+    constructor: Context,
+
+    reset: function(skipTempReset) {
+      this.prev = 0;
+      this.next = 0;
+      // Resetting context._sent for legacy support of Babel's
+      // function.sent implementation.
+      this.sent = this._sent = undefined;
+      this.done = false;
+      this.delegate = null;
+
+      this.method = "next";
+      this.arg = undefined;
+
+      this.tryEntries.forEach(resetTryEntry);
+
+      if (!skipTempReset) {
+        for (var name in this) {
+          // Not sure about the optimal order of these conditions:
+          if (name.charAt(0) === "t" &&
+              hasOwn.call(this, name) &&
+              !isNaN(+name.slice(1))) {
+            this[name] = undefined;
+          }
+        }
+      }
+    },
+
+    stop: function() {
+      this.done = true;
+
+      var rootEntry = this.tryEntries[0];
+      var rootRecord = rootEntry.completion;
+      if (rootRecord.type === "throw") {
+        throw rootRecord.arg;
+      }
+
+      return this.rval;
+    },
+
+    dispatchException: function(exception) {
+      if (this.done) {
+        throw exception;
+      }
+
+      var context = this;
+      function handle(loc, caught) {
+        record.type = "throw";
+        record.arg = exception;
+        context.next = loc;
+
+        if (caught) {
+          // If the dispatched exception was caught by a catch block,
+          // then let that catch block handle the exception normally.
+          context.method = "next";
+          context.arg = undefined;
+        }
+
+        return !! caught;
+      }
+
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        var record = entry.completion;
+
+        if (entry.tryLoc === "root") {
+          // Exception thrown outside of any try block that could handle
+          // it, so set the completion value of the entire function to
+          // throw the exception.
+          return handle("end");
+        }
+
+        if (entry.tryLoc <= this.prev) {
+          var hasCatch = hasOwn.call(entry, "catchLoc");
+          var hasFinally = hasOwn.call(entry, "finallyLoc");
+
+          if (hasCatch && hasFinally) {
+            if (this.prev < entry.catchLoc) {
+              return handle(entry.catchLoc, true);
+            } else if (this.prev < entry.finallyLoc) {
+              return handle(entry.finallyLoc);
+            }
+
+          } else if (hasCatch) {
+            if (this.prev < entry.catchLoc) {
+              return handle(entry.catchLoc, true);
+            }
+
+          } else if (hasFinally) {
+            if (this.prev < entry.finallyLoc) {
+              return handle(entry.finallyLoc);
+            }
+
+          } else {
+            throw new Error("try statement without catch or finally");
+          }
+        }
+      }
+    },
+
+    abrupt: function(type, arg) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.tryLoc <= this.prev &&
+            hasOwn.call(entry, "finallyLoc") &&
+            this.prev < entry.finallyLoc) {
+          var finallyEntry = entry;
+          break;
+        }
+      }
+
+      if (finallyEntry &&
+          (type === "break" ||
+           type === "continue") &&
+          finallyEntry.tryLoc <= arg &&
+          arg <= finallyEntry.finallyLoc) {
+        // Ignore the finally entry if control is not jumping to a
+        // location outside the try/catch block.
+        finallyEntry = null;
+      }
+
+      var record = finallyEntry ? finallyEntry.completion : {};
+      record.type = type;
+      record.arg = arg;
+
+      if (finallyEntry) {
+        this.method = "next";
+        this.next = finallyEntry.finallyLoc;
+        return ContinueSentinel;
+      }
+
+      return this.complete(record);
+    },
+
+    complete: function(record, afterLoc) {
+      if (record.type === "throw") {
+        throw record.arg;
+      }
+
+      if (record.type === "break" ||
+          record.type === "continue") {
+        this.next = record.arg;
+      } else if (record.type === "return") {
+        this.rval = this.arg = record.arg;
+        this.method = "return";
+        this.next = "end";
+      } else if (record.type === "normal" && afterLoc) {
+        this.next = afterLoc;
+      }
+
+      return ContinueSentinel;
+    },
+
+    finish: function(finallyLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.finallyLoc === finallyLoc) {
+          this.complete(entry.completion, entry.afterLoc);
+          resetTryEntry(entry);
+          return ContinueSentinel;
+        }
+      }
+    },
+
+    "catch": function(tryLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.tryLoc === tryLoc) {
+          var record = entry.completion;
+          if (record.type === "throw") {
+            var thrown = record.arg;
+            resetTryEntry(entry);
+          }
+          return thrown;
+        }
+      }
+
+      // The context.catch method must only be called with a location
+      // argument that corresponds to a known catch block.
+      throw new Error("illegal catch attempt");
+    },
+
+    delegateYield: function(iterable, resultName, nextLoc) {
+      this.delegate = {
+        iterator: values(iterable),
+        resultName: resultName,
+        nextLoc: nextLoc
+      };
+
+      if (this.method === "next") {
+        // Deliberately forget the last sent value so that we don't
+        // accidentally pass it on to the delegate.
+        this.arg = undefined;
+      }
+
+      return ContinueSentinel;
+    }
+  };
+})(
+  // In sloppy mode, unbound `this` refers to the global object, fallback to
+  // Function constructor if we're in global strict mode. That is sadly a form
+  // of indirect eval which violates Content Security Policy.
+  (function() { return this })() || Function("return this")()
+);
+
+
+/***/ }),
+/* 280 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = { "default": __webpack_require__(281), __esModule: true };
+
+/***/ }),
+/* 281 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(282);
+module.exports = Math.pow(2, -52);
+
+
+/***/ }),
+/* 282 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 20.1.2.1 Number.EPSILON
+var $export = __webpack_require__(3);
+
+$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });
+
+
+/***/ }),
+/* 283 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {var clone = (function() {
+'use strict';
+
+/**
+ * Clones (copies) an Object using deep copying.
+ *
+ * This function supports circular references by default, but if you are certain
+ * there are no circular references in your object, you can save some CPU time
+ * by calling clone(obj, false).
+ *
+ * Caution: if `circular` is false and `parent` contains circular references,
+ * your program may enter an infinite loop and crash.
+ *
+ * @param `parent` - the object to be cloned
+ * @param `circular` - set to true if the object to be cloned may contain
+ *    circular references. (optional - true by default)
+ * @param `depth` - set to a number if the object is only to be cloned to
+ *    a particular depth. (optional - defaults to Infinity)
+ * @param `prototype` - sets the prototype to be used when cloning an object.
+ *    (optional - defaults to parent prototype).
+*/
+function clone(parent, circular, depth, prototype) {
+  var filter;
+  if (typeof circular === 'object') {
+    depth = circular.depth;
+    prototype = circular.prototype;
+    filter = circular.filter;
+    circular = circular.circular
+  }
+  // maintain two arrays for circular references, where corresponding parents
+  // and children have the same index
+  var allParents = [];
+  var allChildren = [];
+
+  var useBuffer = typeof Buffer != 'undefined';
+
+  if (typeof circular == 'undefined')
+    circular = true;
+
+  if (typeof depth == 'undefined')
+    depth = Infinity;
+
+  // recurse this function so we don't reset allParents and allChildren
+  function _clone(parent, depth) {
+    // cloning null always returns null
+    if (parent === null)
+      return null;
+
+    if (depth == 0)
+      return parent;
+
+    var child;
+    var proto;
+    if (typeof parent != 'object') {
+      return parent;
+    }
+
+    if (clone.__isArray(parent)) {
+      child = [];
+    } else if (clone.__isRegExp(parent)) {
+      child = new RegExp(parent.source, __getRegExpFlags(parent));
+      if (parent.lastIndex) child.lastIndex = parent.lastIndex;
+    } else if (clone.__isDate(parent)) {
+      child = new Date(parent.getTime());
+    } else if (useBuffer && Buffer.isBuffer(parent)) {
+      child = new Buffer(parent.length);
+      parent.copy(child);
+      return child;
+    } else {
+      if (typeof prototype == 'undefined') {
+        proto = Object.getPrototypeOf(parent);
+        child = Object.create(proto);
+      }
+      else {
+        child = Object.create(prototype);
+        proto = prototype;
+      }
+    }
+
+    if (circular) {
+      var index = allParents.indexOf(parent);
+
+      if (index != -1) {
+        return allChildren[index];
+      }
+      allParents.push(parent);
+      allChildren.push(child);
+    }
+
+    for (var i in parent) {
+      var attrs;
+      if (proto) {
+        attrs = Object.getOwnPropertyDescriptor(proto, i);
+      }
+
+      if (attrs && attrs.set == null) {
+        continue;
+      }
+      child[i] = _clone(parent[i], depth - 1);
+    }
+
+    return child;
+  }
+
+  return _clone(parent, depth);
+}
+
+/**
+ * Simple flat clone using prototype, accepts only objects, usefull for property
+ * override on FLAT configuration object (no nested props).
+ *
+ * USE WITH CAUTION! This may not behave as you wish if you do not know how this
+ * works.
+ */
+clone.clonePrototype = function clonePrototype(parent) {
+  if (parent === null)
+    return null;
+
+  var c = function () {};
+  c.prototype = parent;
+  return new c();
+};
+
+// private utility functions
+
+function __objToStr(o) {
+  return Object.prototype.toString.call(o);
+};
+clone.__objToStr = __objToStr;
+
+function __isDate(o) {
+  return typeof o === 'object' && __objToStr(o) === '[object Date]';
+};
+clone.__isDate = __isDate;
+
+function __isArray(o) {
+  return typeof o === 'object' && __objToStr(o) === '[object Array]';
+};
+clone.__isArray = __isArray;
+
+function __isRegExp(o) {
+  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';
+};
+clone.__isRegExp = __isRegExp;
+
+function __getRegExpFlags(re) {
+  var flags = '';
+  if (re.global) flags += 'g';
+  if (re.ignoreCase) flags += 'i';
+  if (re.multiline) flags += 'm';
+  return flags;
+};
+clone.__getRegExpFlags = __getRegExpFlags;
+
+return clone;
+})();
+
+if (typeof module === 'object' && module.exports) {
+  module.exports = clone;
+}
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 284 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(117).BrotliDecompressBuffer;
+
+
+/***/ }),
+/* 285 */
+/***/ (function(module, exports) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Bit reading helpers
+*/
+
+var BROTLI_READ_SIZE = 4096;
+var BROTLI_IBUF_SIZE =  (2 * BROTLI_READ_SIZE + 32);
+var BROTLI_IBUF_MASK =  (2 * BROTLI_READ_SIZE - 1);
+
+var kBitMask = new Uint32Array([
+  0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,
+  65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215
+]);
+
+/* Input byte buffer, consist of a ringbuffer and a "slack" region where */
+/* bytes from the start of the ringbuffer are copied. */
+function BrotliBitReader(input) {
+  this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);
+  this.input_ = input;    /* input callback */
+  
+  this.reset();
+}
+
+BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;
+BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;
+
+BrotliBitReader.prototype.reset = function() {
+  this.buf_ptr_ = 0;      /* next input will write here */
+  this.val_ = 0;          /* pre-fetched bits */
+  this.pos_ = 0;          /* byte position in stream */
+  this.bit_pos_ = 0;      /* current bit-reading position in val_ */
+  this.bit_end_pos_ = 0;  /* bit-reading end position from LSB of val_ */
+  this.eos_ = 0;          /* input stream is finished */
+  
+  this.readMoreInput();
+  for (var i = 0; i < 4; i++) {
+    this.val_ |= this.buf_[this.pos_] << (8 * i);
+    ++this.pos_;
+  }
+  
+  return this.bit_end_pos_ > 0;
+};
+
+/* Fills up the input ringbuffer by calling the input callback.
+
+   Does nothing if there are at least 32 bytes present after current position.
+
+   Returns 0 if either:
+    - the input callback returned an error, or
+    - there is no more input and the position is past the end of the stream.
+
+   After encountering the end of the input stream, 32 additional zero bytes are
+   copied to the ringbuffer, therefore it is safe to call this function after
+   every 32 bytes of input is read.
+*/
+BrotliBitReader.prototype.readMoreInput = function() {
+  if (this.bit_end_pos_ > 256) {
+    return;
+  } else if (this.eos_) {
+    if (this.bit_pos_ > this.bit_end_pos_)
+      throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_);
+  } else {
+    var dst = this.buf_ptr_;
+    var bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE);
+    if (bytes_read < 0) {
+      throw new Error('Unexpected end of input');
+    }
+    
+    if (bytes_read < BROTLI_READ_SIZE) {
+      this.eos_ = 1;
+      /* Store 32 bytes of zero after the stream end. */
+      for (var p = 0; p < 32; p++)
+        this.buf_[dst + bytes_read + p] = 0;
+    }
+    
+    if (dst === 0) {
+      /* Copy the head of the ringbuffer to the slack region. */
+      for (var p = 0; p < 32; p++)
+        this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p];
+
+      this.buf_ptr_ = BROTLI_READ_SIZE;
+    } else {
+      this.buf_ptr_ = 0;
+    }
+    
+    this.bit_end_pos_ += bytes_read << 3;
+  }
+};
+
+/* Guarantees that there are at least 24 bits in the buffer. */
+BrotliBitReader.prototype.fillBitWindow = function() {    
+  while (this.bit_pos_ >= 8) {
+    this.val_ >>>= 8;
+    this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;
+    ++this.pos_;
+    this.bit_pos_ = this.bit_pos_ - 8 >>> 0;
+    this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;
+  }
+};
+
+/* Reads the specified number of bits from Read Buffer. */
+BrotliBitReader.prototype.readBits = function(n_bits) {
+  if (32 - this.bit_pos_ < n_bits) {
+    this.fillBitWindow();
+  }
+  
+  var val = ((this.val_ >>> this.bit_pos_) & kBitMask[n_bits]);
+  this.bit_pos_ += n_bits;
+  return val;
+};
+
+module.exports = BrotliBitReader;
+
+
+/***/ }),
+/* 286 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var base64 = __webpack_require__(287);
+var fs = __webpack_require__(8);
+
+/**
+ * The normal dictionary-data.js is quite large, which makes it 
+ * unsuitable for browser usage. In order to make it smaller, 
+ * we read dictionary.bin, which is a compressed version of
+ * the dictionary, and on initial load, Brotli decompresses 
+ * it's own dictionary. 😜
+ */
+exports.init = function() {
+  var BrotliDecompressBuffer = __webpack_require__(117).BrotliDecompressBuffer;
+  var compressed = base64.toByteArray(__webpack_require__(288));
+  return BrotliDecompressBuffer(compressed);
+};
+
+
+/***/ }),
+/* 287 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.byteLength = byteLength
+exports.toByteArray = toByteArray
+exports.fromByteArray = fromByteArray
+
+var lookup = []
+var revLookup = []
+var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
+
+var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+for (var i = 0, len = code.length; i < len; ++i) {
+  lookup[i] = code[i]
+  revLookup[code.charCodeAt(i)] = i
+}
+
+// Support decoding URL-safe base64 strings, as Node.js does.
+// See: https://en.wikipedia.org/wiki/Base64#URL_applications
+revLookup['-'.charCodeAt(0)] = 62
+revLookup['_'.charCodeAt(0)] = 63
+
+function placeHoldersCount (b64) {
+  var len = b64.length
+  if (len % 4 > 0) {
+    throw new Error('Invalid string. Length must be a multiple of 4')
+  }
+
+  // the number of equal signs (place holders)
+  // if there are two placeholders, than the two characters before it
+  // represent one byte
+  // if there is only one, then the three characters before it represent 2 bytes
+  // this is just a cheap hack to not do indexOf twice
+  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
+}
+
+function byteLength (b64) {
+  // base64 is 4/3 + up to two characters of the original data
+  return (b64.length * 3 / 4) - placeHoldersCount(b64)
+}
+
+function toByteArray (b64) {
+  var i, l, tmp, placeHolders, arr
+  var len = b64.length
+  placeHolders = placeHoldersCount(b64)
+
+  arr = new Arr((len * 3 / 4) - placeHolders)
+
+  // if there are placeholders, only get up to the last complete 4 chars
+  l = placeHolders > 0 ? len - 4 : len
+
+  var L = 0
+
+  for (i = 0; i < l; i += 4) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
+    arr[L++] = (tmp >> 16) & 0xFF
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  if (placeHolders === 2) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
+    arr[L++] = tmp & 0xFF
+  } else if (placeHolders === 1) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  return arr
+}
+
+function tripletToBase64 (num) {
+  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
+}
+
+function encodeChunk (uint8, start, end) {
+  var tmp
+  var output = []
+  for (var i = start; i < end; i += 3) {
+    tmp = ((uint8[i] << 16) & 0xFF0000) + ((uint8[i + 1] << 8) & 0xFF00) + (uint8[i + 2] & 0xFF)
+    output.push(tripletToBase64(tmp))
+  }
+  return output.join('')
+}
+
+function fromByteArray (uint8) {
+  var tmp
+  var len = uint8.length
+  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
+  var output = ''
+  var parts = []
+  var maxChunkLength = 16383 // must be multiple of 3
+
+  // go through the array every three bytes, we'll deal with trailing stuff later
+  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
+    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
+  }
+
+  // pad the end with zeros, but make sure to not forget the extra bytes
+  if (extraBytes === 1) {
+    tmp = uint8[len - 1]
+    output += lookup[tmp >> 2]
+    output += lookup[(tmp << 4) & 0x3F]
+    output += '=='
+  } else if (extraBytes === 2) {
+    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
+    output += lookup[tmp >> 10]
+    output += lookup[(tmp >> 4) & 0x3F]
+    output += lookup[(tmp << 2) & 0x3F]
+    output += '='
+  }
+
+  parts.push(output)
+
+  return parts.join('')
+}
+
+
+/***/ }),
+/* 288 */
+/***/ (function(module, exports) {
+
+module.exports="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";
+
+
+/***/ }),
+/* 289 */
+/***/ (function(module, exports) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Lookup table to map the previous two bytes to a context id.
+
+   There are four different context modeling modes defined here:
+     CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,
+     CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,
+     CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,
+     CONTEXT_SIGNED: second-order context model tuned for signed integers.
+
+   The context id for the UTF8 context model is calculated as follows. If p1
+   and p2 are the previous two bytes, we calcualte the context as
+
+     context = kContextLookup[p1] | kContextLookup[p2 + 256].
+
+   If the previous two bytes are ASCII characters (i.e. < 128), this will be
+   equivalent to
+
+     context = 4 * context1(p1) + context2(p2),
+
+   where context1 is based on the previous byte in the following way:
+
+     0  : non-ASCII control
+     1  : \t, \n, \r
+     2  : space
+     3  : other punctuation
+     4  : " '
+     5  : %
+     6  : ( < [ {
+     7  : ) > ] }
+     8  : , ; :
+     9  : .
+     10 : =
+     11 : number
+     12 : upper-case vowel
+     13 : upper-case consonant
+     14 : lower-case vowel
+     15 : lower-case consonant
+
+   and context2 is based on the second last byte:
+
+     0 : control, space
+     1 : punctuation
+     2 : upper-case letter, number
+     3 : lower-case letter
+
+   If the last byte is ASCII, and the second last byte is not (in a valid UTF8
+   stream it will be a continuation byte, value between 128 and 191), the
+   context is the same as if the second last byte was an ASCII control or space.
+
+   If the last byte is a UTF8 lead byte (value >= 192), then the next byte will
+   be a continuation byte and the context id is 2 or 3 depending on the LSB of
+   the last byte and to a lesser extent on the second last byte if it is ASCII.
+
+   If the last byte is a UTF8 continuation byte, the second last byte can be:
+     - continuation byte: the next byte is probably ASCII or lead byte (assuming
+       4-byte UTF8 characters are rare) and the context id is 0 or 1.
+     - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1
+     - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3
+
+   The possible value combinations of the previous two bytes, the range of
+   context ids and the type of the next byte is summarized in the table below:
+
+   |--------\-----------------------------------------------------------------|
+   |         \                         Last byte                              |
+   | Second   \---------------------------------------------------------------|
+   | last byte \    ASCII            |   cont. byte        |   lead byte      |
+   |            \   (0-127)          |   (128-191)         |   (192-)         |
+   |=============|===================|=====================|==================|
+   |  ASCII      | next: ASCII/lead  |  not valid          |  next: cont.     |
+   |  (0-127)    | context: 4 - 63   |                     |  context: 2 - 3  |
+   |-------------|-------------------|---------------------|------------------|
+   |  cont. byte | next: ASCII/lead  |  next: ASCII/lead   |  next: cont.     |
+   |  (128-191)  | context: 4 - 63   |  context: 0 - 1     |  context: 2 - 3  |
+   |-------------|-------------------|---------------------|------------------|
+   |  lead byte  | not valid         |  next: ASCII/lead   |  not valid       |
+   |  (192-207)  |                   |  context: 0 - 1     |                  |
+   |-------------|-------------------|---------------------|------------------|
+   |  lead byte  | not valid         |  next: cont.        |  not valid       |
+   |  (208-)     |                   |  context: 2 - 3     |                  |
+   |-------------|-------------------|---------------------|------------------|
+
+   The context id for the signed context mode is calculated as:
+
+     context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].
+
+   For any context modeling modes, the context ids can be calculated by |-ing
+   together two lookups from one table using context model dependent offsets:
+
+     context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].
+
+   where offset1 and offset2 are dependent on the context mode.
+*/
+
+var CONTEXT_LSB6         = 0;
+var CONTEXT_MSB6         = 1;
+var CONTEXT_UTF8         = 2;
+var CONTEXT_SIGNED       = 3;
+
+/* Common context lookup table for all context modes. */
+exports.lookup = new Uint8Array([
+  /* CONTEXT_UTF8, last byte. */
+  /* ASCII range. */
+   0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  4,  0,  0,
+   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+   8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,
+  44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,
+  12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,
+  52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,
+  12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,
+  60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12,  0,
+  /* UTF8 continuation byte range. */
+  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+  /* UTF8 lead byte range. */
+  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+  /* CONTEXT_UTF8 second last byte. */
+  /* ASCII range. */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
+  1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
+  1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,
+  /* UTF8 continuation byte range. */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  /* UTF8 lead byte range. */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  /* CONTEXT_SIGNED, second last byte. */
+  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
+  /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */
+   0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+  48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
+  /* CONTEXT_LSB6, last byte. */
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+  /* CONTEXT_MSB6, last byte. */
+   0,  0,  0,  0,  1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  3,
+   4,  4,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
+   8,  8,  8,  8,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 11,
+  12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,
+  16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,
+  20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,
+  24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,
+  28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,
+  32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,
+  36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,
+  40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,
+  44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,
+  48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,
+  52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,
+  56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,
+  60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,
+  /* CONTEXT_{M,L}SB6, second last byte, */
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+]);
+
+exports.lookupOffsets = new Uint16Array([
+  /* CONTEXT_LSB6 */
+  1024, 1536,
+  /* CONTEXT_MSB6 */
+  1280, 1536,
+  /* CONTEXT_UTF8 */
+  0, 256,
+  /* CONTEXT_SIGNED */
+  768, 512,
+]);
+
+
+/***/ }),
+/* 290 */
+/***/ (function(module, exports) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Lookup tables to map prefix codes to value ranges. This is used during
+   decoding of the block lengths, literal insertion lengths and copy lengths.
+*/
+
+/* Represents the range of values belonging to a prefix code: */
+/* [offset, offset + 2^nbits) */
+function PrefixCodeRange(offset, nbits) {
+  this.offset = offset;
+  this.nbits = nbits;
+}
+
+exports.kBlockLengthPrefixCode = [
+  new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),
+  new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),
+  new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),
+  new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),
+  new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),
+  new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),
+  new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)
+];
+
+exports.kInsertLengthPrefixCode = [
+  new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),
+  new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),
+  new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),
+  new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),
+  new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),
+  new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),
+];
+
+exports.kCopyLengthPrefixCode = [
+  new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),
+  new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),
+  new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),
+  new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),
+  new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),
+  new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),
+];
+
+exports.kInsertRangeLut = [
+  0, 0, 8, 8, 0, 16, 8, 16, 16,
+];
+
+exports.kCopyRangeLut = [
+  0, 8, 0, 8, 16, 0, 16, 8, 16,
+];
+
+
+/***/ }),
+/* 291 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Transformations on dictionary words.
+*/
+
+var BrotliDictionary = __webpack_require__(119);
+
+var kIdentity       = 0;
+var kOmitLast1      = 1;
+var kOmitLast2      = 2;
+var kOmitLast3      = 3;
+var kOmitLast4      = 4;
+var kOmitLast5      = 5;
+var kOmitLast6      = 6;
+var kOmitLast7      = 7;
+var kOmitLast8      = 8;
+var kOmitLast9      = 9;
+var kUppercaseFirst = 10;
+var kUppercaseAll   = 11;
+var kOmitFirst1     = 12;
+var kOmitFirst2     = 13;
+var kOmitFirst3     = 14;
+var kOmitFirst4     = 15;
+var kOmitFirst5     = 16;
+var kOmitFirst6     = 17;
+var kOmitFirst7     = 18;
+var kOmitFirst8     = 19;
+var kOmitFirst9     = 20;
+
+function Transform(prefix, transform, suffix) {
+  this.prefix = new Uint8Array(prefix.length);
+  this.transform = transform;
+  this.suffix = new Uint8Array(suffix.length);
+  
+  for (var i = 0; i < prefix.length; i++)
+    this.prefix[i] = prefix.charCodeAt(i);
+  
+  for (var i = 0; i < suffix.length; i++)
+    this.suffix[i] = suffix.charCodeAt(i);
+}
+
+var kTransforms = [
+     new Transform(         "", kIdentity,       ""           ),
+     new Transform(         "", kIdentity,       " "          ),
+     new Transform(        " ", kIdentity,       " "          ),
+     new Transform(         "", kOmitFirst1,     ""           ),
+     new Transform(         "", kUppercaseFirst, " "          ),
+     new Transform(         "", kIdentity,       " the "      ),
+     new Transform(        " ", kIdentity,       ""           ),
+     new Transform(       "s ", kIdentity,       " "          ),
+     new Transform(         "", kIdentity,       " of "       ),
+     new Transform(         "", kUppercaseFirst, ""           ),
+     new Transform(         "", kIdentity,       " and "      ),
+     new Transform(         "", kOmitFirst2,     ""           ),
+     new Transform(         "", kOmitLast1,      ""           ),
+     new Transform(       ", ", kIdentity,       " "          ),
+     new Transform(         "", kIdentity,       ", "         ),
+     new Transform(        " ", kUppercaseFirst, " "          ),
+     new Transform(         "", kIdentity,       " in "       ),
+     new Transform(         "", kIdentity,       " to "       ),
+     new Transform(       "e ", kIdentity,       " "          ),
+     new Transform(         "", kIdentity,       "\""         ),
+     new Transform(         "", kIdentity,       "."          ),
+     new Transform(         "", kIdentity,       "\">"        ),
+     new Transform(         "", kIdentity,       "\n"         ),
+     new Transform(         "", kOmitLast3,      ""           ),
+     new Transform(         "", kIdentity,       "]"          ),
+     new Transform(         "", kIdentity,       " for "      ),
+     new Transform(         "", kOmitFirst3,     ""           ),
+     new Transform(         "", kOmitLast2,      ""           ),
+     new Transform(         "", kIdentity,       " a "        ),
+     new Transform(         "", kIdentity,       " that "     ),
+     new Transform(        " ", kUppercaseFirst, ""           ),
+     new Transform(         "", kIdentity,       ". "         ),
+     new Transform(        ".", kIdentity,       ""           ),
+     new Transform(        " ", kIdentity,       ", "         ),
+     new Transform(         "", kOmitFirst4,     ""           ),
+     new Transform(         "", kIdentity,       " with "     ),
+     new Transform(         "", kIdentity,       "'"          ),
+     new Transform(         "", kIdentity,       " from "     ),
+     new Transform(         "", kIdentity,       " by "       ),
+     new Transform(         "", kOmitFirst5,     ""           ),
+     new Transform(         "", kOmitFirst6,     ""           ),
+     new Transform(    " the ", kIdentity,       ""           ),
+     new Transform(         "", kOmitLast4,      ""           ),
+     new Transform(         "", kIdentity,       ". The "     ),
+     new Transform(         "", kUppercaseAll,   ""           ),
+     new Transform(         "", kIdentity,       " on "       ),
+     new Transform(         "", kIdentity,       " as "       ),
+     new Transform(         "", kIdentity,       " is "       ),
+     new Transform(         "", kOmitLast7,      ""           ),
+     new Transform(         "", kOmitLast1,      "ing "       ),
+     new Transform(         "", kIdentity,       "\n\t"       ),
+     new Transform(         "", kIdentity,       ":"          ),
+     new Transform(        " ", kIdentity,       ". "         ),
+     new Transform(         "", kIdentity,       "ed "        ),
+     new Transform(         "", kOmitFirst9,     ""           ),
+     new Transform(         "", kOmitFirst7,     ""           ),
+     new Transform(         "", kOmitLast6,      ""           ),
+     new Transform(         "", kIdentity,       "("          ),
+     new Transform(         "", kUppercaseFirst, ", "         ),
+     new Transform(         "", kOmitLast8,      ""           ),
+     new Transform(         "", kIdentity,       " at "       ),
+     new Transform(         "", kIdentity,       "ly "        ),
+     new Transform(    " the ", kIdentity,       " of "       ),
+     new Transform(         "", kOmitLast5,      ""           ),
+     new Transform(         "", kOmitLast9,      ""           ),
+     new Transform(        " ", kUppercaseFirst, ", "         ),
+     new Transform(         "", kUppercaseFirst, "\""         ),
+     new Transform(        ".", kIdentity,       "("          ),
+     new Transform(         "", kUppercaseAll,   " "          ),
+     new Transform(         "", kUppercaseFirst, "\">"        ),
+     new Transform(         "", kIdentity,       "=\""        ),
+     new Transform(        " ", kIdentity,       "."          ),
+     new Transform(    ".com/", kIdentity,       ""           ),
+     new Transform(    " the ", kIdentity,       " of the "   ),
+     new Transform(         "", kUppercaseFirst, "'"          ),
+     new Transform(         "", kIdentity,       ". This "    ),
+     new Transform(         "", kIdentity,       ","          ),
+     new Transform(        ".", kIdentity,       " "          ),
+     new Transform(         "", kUppercaseFirst, "("          ),
+     new Transform(         "", kUppercaseFirst, "."          ),
+     new Transform(         "", kIdentity,       " not "      ),
+     new Transform(        " ", kIdentity,       "=\""        ),
+     new Transform(         "", kIdentity,       "er "        ),
+     new Transform(        " ", kUppercaseAll,   " "          ),
+     new Transform(         "", kIdentity,       "al "        ),
+     new Transform(        " ", kUppercaseAll,   ""           ),
+     new Transform(         "", kIdentity,       "='"         ),
+     new Transform(         "", kUppercaseAll,   "\""         ),
+     new Transform(         "", kUppercaseFirst, ". "         ),
+     new Transform(        " ", kIdentity,       "("          ),
+     new Transform(         "", kIdentity,       "ful "       ),
+     new Transform(        " ", kUppercaseFirst, ". "         ),
+     new Transform(         "", kIdentity,       "ive "       ),
+     new Transform(         "", kIdentity,       "less "      ),
+     new Transform(         "", kUppercaseAll,   "'"          ),
+     new Transform(         "", kIdentity,       "est "       ),
+     new Transform(        " ", kUppercaseFirst, "."          ),
+     new Transform(         "", kUppercaseAll,   "\">"        ),
+     new Transform(        " ", kIdentity,       "='"         ),
+     new Transform(         "", kUppercaseFirst, ","          ),
+     new Transform(         "", kIdentity,       "ize "       ),
+     new Transform(         "", kUppercaseAll,   "."          ),
+     new Transform( "\xc2\xa0", kIdentity,       ""           ),
+     new Transform(        " ", kIdentity,       ","          ),
+     new Transform(         "", kUppercaseFirst, "=\""        ),
+     new Transform(         "", kUppercaseAll,   "=\""        ),
+     new Transform(         "", kIdentity,       "ous "       ),
+     new Transform(         "", kUppercaseAll,   ", "         ),
+     new Transform(         "", kUppercaseFirst, "='"         ),
+     new Transform(        " ", kUppercaseFirst, ","          ),
+     new Transform(        " ", kUppercaseAll,   "=\""        ),
+     new Transform(        " ", kUppercaseAll,   ", "         ),
+     new Transform(         "", kUppercaseAll,   ","          ),
+     new Transform(         "", kUppercaseAll,   "("          ),
+     new Transform(         "", kUppercaseAll,   ". "         ),
+     new Transform(        " ", kUppercaseAll,   "."          ),
+     new Transform(         "", kUppercaseAll,   "='"         ),
+     new Transform(        " ", kUppercaseAll,   ". "         ),
+     new Transform(        " ", kUppercaseFirst, "=\""        ),
+     new Transform(        " ", kUppercaseAll,   "='"         ),
+     new Transform(        " ", kUppercaseFirst, "='"         )
+];
+
+exports.kTransforms = kTransforms;
+exports.kNumTransforms = kTransforms.length;
+
+function ToUpperCase(p, i) {
+  if (p[i] < 0xc0) {
+    if (p[i] >= 97 && p[i] <= 122) {
+      p[i] ^= 32;
+    }
+    return 1;
+  }
+  
+  /* An overly simplified uppercasing model for utf-8. */
+  if (p[i] < 0xe0) {
+    p[i + 1] ^= 32;
+    return 2;
+  }
+  
+  /* An arbitrary transform for three byte characters. */
+  p[i + 2] ^= 5;
+  return 3;
+}
+
+exports.transformDictionaryWord = function(dst, idx, word, len, transform) {
+  var prefix = kTransforms[transform].prefix;
+  var suffix = kTransforms[transform].suffix;
+  var t = kTransforms[transform].transform;
+  var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1);
+  var i = 0;
+  var start_idx = idx;
+  var uppercase;
+  
+  if (skip > len) {
+    skip = len;
+  }
+  
+  var prefix_pos = 0;
+  while (prefix_pos < prefix.length) {
+    dst[idx++] = prefix[prefix_pos++];
+  }
+  
+  word += skip;
+  len -= skip;
+  
+  if (t <= kOmitLast9) {
+    len -= t;
+  }
+  
+  for (i = 0; i < len; i++) {
+    dst[idx++] = BrotliDictionary.dictionary[word + i];
+  }
+  
+  uppercase = idx - len;
+  
+  if (t === kUppercaseFirst) {
+    ToUpperCase(dst, uppercase);
+  } else if (t === kUppercaseAll) {
+    while (len > 0) {
+      var step = ToUpperCase(dst, uppercase);
+      uppercase += step;
+      len -= step;
+    }
+  }
+  
+  var suffix_pos = 0;
+  while (suffix_pos < suffix.length) {
+    dst[idx++] = suffix[suffix_pos++];
+  }
+  
+  return idx - start_idx;
+}
+
+
+/***/ }),
+/* 292 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(__dirname) {// Generated by CoffeeScript 1.12.6
+(function() {
+  var AFMFont, PDFFont, StandardFont, fs,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  AFMFont = __webpack_require__(293);
+
+  PDFFont = __webpack_require__(50);
+
+  fs = __webpack_require__(8);
+
+  StandardFont = (function(superClass) {
+    var STANDARD_FONTS;
+
+    extend(StandardFont, superClass);
+
+    function StandardFont(document, name1, id) {
+      var ref;
+      this.document = document;
+      this.name = name1;
+      this.id = id;
+      this.font = new AFMFont(STANDARD_FONTS[this.name]());
+      ref = this.font, this.ascender = ref.ascender, this.descender = ref.descender, this.bbox = ref.bbox, this.lineGap = ref.lineGap;
+    }
+
+    StandardFont.prototype.embed = function() {
+      this.dictionary.data = {
+        Type: 'Font',
+        BaseFont: this.name,
+        Subtype: 'Type1',
+        Encoding: 'WinAnsiEncoding'
+      };
+      return this.dictionary.end();
+    };
+
+    StandardFont.prototype.encode = function(text) {
+      var advances, encoded, glyph, glyphs, i, j, len, positions;
+      encoded = this.font.encodeText(text);
+      glyphs = this.font.glyphsForString('' + text);
+      advances = this.font.advancesForGlyphs(glyphs);
+      positions = [];
+      for (i = j = 0, len = glyphs.length; j < len; i = ++j) {
+        glyph = glyphs[i];
+        positions.push({
+          xAdvance: advances[i],
+          yAdvance: 0,
+          xOffset: 0,
+          yOffset: 0,
+          advanceWidth: this.font.widthOfGlyph(glyph)
+        });
+      }
+      return [encoded, positions];
+    };
+
+    StandardFont.prototype.widthOfString = function(string, size) {
+      var advance, advances, glyphs, j, len, scale, width;
+      glyphs = this.font.glyphsForString('' + string);
+      advances = this.font.advancesForGlyphs(glyphs);
+      width = 0;
+      for (j = 0, len = advances.length; j < len; j++) {
+        advance = advances[j];
+        width += advance;
+      }
+      scale = size / 1000;
+      return width * scale;
+    };
+
+    StandardFont.isStandardFont = function(name) {
+      return name in STANDARD_FONTS;
+    };
+
+    STANDARD_FONTS = {
+      "Courier": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Courier.afm", 'utf8');
+      },
+      "Courier-Bold": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Courier-Bold.afm", 'utf8');
+      },
+      "Courier-Oblique": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Courier-Oblique.afm", 'utf8');
+      },
+      "Courier-BoldOblique": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Courier-BoldOblique.afm", 'utf8');
+      },
+      "Helvetica": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Helvetica.afm", 'utf8');
+      },
+      "Helvetica-Bold": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Helvetica-Bold.afm", 'utf8');
+      },
+      "Helvetica-Oblique": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Helvetica-Oblique.afm", 'utf8');
+      },
+      "Helvetica-BoldOblique": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Helvetica-BoldOblique.afm", 'utf8');
+      },
+      "Times-Roman": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Times-Roman.afm", 'utf8');
+      },
+      "Times-Bold": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Times-Bold.afm", 'utf8');
+      },
+      "Times-Italic": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Times-Italic.afm", 'utf8');
+      },
+      "Times-BoldItalic": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Times-BoldItalic.afm", 'utf8');
+      },
+      "Symbol": function() {
+        return fs.readFileSync(__dirname + "/../font/data/Symbol.afm", 'utf8');
+      },
+      "ZapfDingbats": function() {
+        return fs.readFileSync(__dirname + "/../font/data/ZapfDingbats.afm", 'utf8');
+      }
+    };
+
+    return StandardFont;
+
+  })(PDFFont);
+
+  module.exports = StandardFont;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, "/"))
+
+/***/ }),
+/* 293 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var AFMFont, fs;
+
+  fs = __webpack_require__(8);
+
+  AFMFont = (function() {
+    var WIN_ANSI_MAP, characters;
+
+    AFMFont.open = function(filename) {
+      return new AFMFont(fs.readFileSync(filename, 'utf8'));
+    };
+
+    function AFMFont(contents) {
+      var e, i;
+      this.contents = contents;
+      this.attributes = {};
+      this.glyphWidths = {};
+      this.boundingBoxes = {};
+      this.kernPairs = {};
+      this.parse();
+      this.charWidths = (function() {
+        var j, results;
+        results = [];
+        for (i = j = 0; j <= 255; i = ++j) {
+          results.push(this.glyphWidths[characters[i]]);
+        }
+        return results;
+      }).call(this);
+      this.bbox = (function() {
+        var j, len, ref, results;
+        ref = this.attributes['FontBBox'].split(/\s+/);
+        results = [];
+        for (j = 0, len = ref.length; j < len; j++) {
+          e = ref[j];
+          results.push(+e);
+        }
+        return results;
+      }).call(this);
+      this.ascender = +(this.attributes['Ascender'] || 0);
+      this.descender = +(this.attributes['Descender'] || 0);
+      this.lineGap = (this.bbox[3] - this.bbox[1]) - (this.ascender - this.descender);
+    }
+
+    AFMFont.prototype.parse = function() {
+      var a, j, key, len, line, match, name, ref, section, value;
+      section = '';
+      ref = this.contents.split('\n');
+      for (j = 0, len = ref.length; j < len; j++) {
+        line = ref[j];
+        if (match = line.match(/^Start(\w+)/)) {
+          section = match[1];
+          continue;
+        } else if (match = line.match(/^End(\w+)/)) {
+          section = '';
+          continue;
+        }
+        switch (section) {
+          case 'FontMetrics':
+            match = line.match(/(^\w+)\s+(.*)/);
+            key = match[1];
+            value = match[2];
+            if (a = this.attributes[key]) {
+              if (!Array.isArray(a)) {
+                a = this.attributes[key] = [a];
+              }
+              a.push(value);
+            } else {
+              this.attributes[key] = value;
+            }
+            break;
+          case 'CharMetrics':
+            if (!/^CH?\s/.test(line)) {
+              continue;
+            }
+            name = line.match(/\bN\s+(\.?\w+)\s*;/)[1];
+            this.glyphWidths[name] = +line.match(/\bWX\s+(\d+)\s*;/)[1];
+            break;
+          case 'KernPairs':
+            match = line.match(/^KPX\s+(\.?\w+)\s+(\.?\w+)\s+(-?\d+)/);
+            if (match) {
+              this.kernPairs[match[1] + '\0' + match[2]] = parseInt(match[3]);
+            }
+        }
+      }
+    };
+
+    WIN_ANSI_MAP = {
+      402: 131,
+      8211: 150,
+      8212: 151,
+      8216: 145,
+      8217: 146,
+      8218: 130,
+      8220: 147,
+      8221: 148,
+      8222: 132,
+      8224: 134,
+      8225: 135,
+      8226: 149,
+      8230: 133,
+      8364: 128,
+      8240: 137,
+      8249: 139,
+      8250: 155,
+      710: 136,
+      8482: 153,
+      338: 140,
+      339: 156,
+      732: 152,
+      352: 138,
+      353: 154,
+      376: 159,
+      381: 142,
+      382: 158
+    };
+
+    AFMFont.prototype.encodeText = function(text) {
+      var char, i, j, ref, res;
+      res = [];
+      for (i = j = 0, ref = text.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        char = text.charCodeAt(i);
+        char = WIN_ANSI_MAP[char] || char;
+        res.push(char.toString(16));
+      }
+      return res;
+    };
+
+    AFMFont.prototype.glyphsForString = function(string) {
+      var charCode, glyphs, i, j, ref;
+      glyphs = [];
+      for (i = j = 0, ref = string.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        charCode = string.charCodeAt(i);
+        glyphs.push(this.characterToGlyph(charCode));
+      }
+      return glyphs;
+    };
+
+    AFMFont.prototype.characterToGlyph = function(character) {
+      return characters[WIN_ANSI_MAP[character] || character] || '.notdef';
+    };
+
+    AFMFont.prototype.widthOfGlyph = function(glyph) {
+      return this.glyphWidths[glyph] || 0;
+    };
+
+    AFMFont.prototype.getKernPair = function(left, right) {
+      return this.kernPairs[left + '\0' + right] || 0;
+    };
+
+    AFMFont.prototype.advancesForGlyphs = function(glyphs) {
+      var advances, index, j, left, len, right;
+      advances = [];
+      for (index = j = 0, len = glyphs.length; j < len; index = ++j) {
+        left = glyphs[index];
+        right = glyphs[index + 1];
+        advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right));
+      }
+      return advances;
+    };
+
+    characters = '.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n\nspace         exclam         quotedbl       numbersign\ndollar        percent        ampersand      quotesingle\nparenleft     parenright     asterisk       plus\ncomma         hyphen         period         slash\nzero          one            two            three\nfour          five           six            seven\neight         nine           colon          semicolon\nless          equal          greater        question\n\nat            A              B              C\nD             E              F              G\nH             I              J              K\nL             M              N              O\nP             Q              R              S\nT             U              V              W\nX             Y              Z              bracketleft\nbackslash     bracketright   asciicircum    underscore\n\ngrave         a              b              c\nd             e              f              g\nh             i              j              k\nl             m              n              o\np             q              r              s\nt             u              v              w\nx             y              z              braceleft\nbar           braceright     asciitilde     .notdef\n\nEuro          .notdef        quotesinglbase florin\nquotedblbase  ellipsis       dagger         daggerdbl\ncircumflex    perthousand    Scaron         guilsinglleft\nOE            .notdef        Zcaron         .notdef\n.notdef       quoteleft      quoteright     quotedblleft\nquotedblright bullet         endash         emdash\ntilde         trademark      scaron         guilsinglright\noe            .notdef        zcaron         ydieresis\n\nspace         exclamdown     cent           sterling\ncurrency      yen            brokenbar      section\ndieresis      copyright      ordfeminine    guillemotleft\nlogicalnot    hyphen         registered     macron\ndegree        plusminus      twosuperior    threesuperior\nacute         mu             paragraph      periodcentered\ncedilla       onesuperior    ordmasculine   guillemotright\nonequarter    onehalf        threequarters  questiondown\n\nAgrave        Aacute         Acircumflex    Atilde\nAdieresis     Aring          AE             Ccedilla\nEgrave        Eacute         Ecircumflex    Edieresis\nIgrave        Iacute         Icircumflex    Idieresis\nEth           Ntilde         Ograve         Oacute\nOcircumflex   Otilde         Odieresis      multiply\nOslash        Ugrave         Uacute         Ucircumflex\nUdieresis     Yacute         Thorn          germandbls\n\nagrave        aacute         acircumflex    atilde\nadieresis     aring          ae             ccedilla\negrave        eacute         ecircumflex    edieresis\nigrave        iacute         icircumflex    idieresis\neth           ntilde         ograve         oacute\nocircumflex   otilde         odieresis      divide\noslash        ugrave         uacute         ucircumflex\nudieresis     yacute         thorn          ydieresis'.split(/\s+/);
+
+    return AFMFont;
+
+  })();
+
+  module.exports = AFMFont;
+
+}).call(this);
+
+
+/***/ }),
+/* 294 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var EmbeddedFont, PDFFont, PDFObject,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty,
+    slice = [].slice;
+
+  PDFFont = __webpack_require__(50);
+
+  PDFObject = __webpack_require__(26);
+
+  EmbeddedFont = (function(superClass) {
+    var toHex;
+
+    extend(EmbeddedFont, superClass);
+
+    function EmbeddedFont(document, font, id) {
+      this.document = document;
+      this.font = font;
+      this.id = id;
+      this.subset = this.font.createSubset();
+      this.unicode = [[0]];
+      this.widths = [this.font.getGlyph(0).advanceWidth];
+      this.name = this.font.postscriptName;
+      this.scale = 1000 / this.font.unitsPerEm;
+      this.ascender = this.font.ascent * this.scale;
+      this.descender = this.font.descent * this.scale;
+      this.lineGap = this.font.lineGap * this.scale;
+      this.bbox = this.font.bbox;
+      this.layoutCache = Object.create(null);
+    }
+
+    EmbeddedFont.prototype.layoutRun = function(text, features) {
+      var i, j, key, len, position, ref, run;
+      run = this.font.layout(text, features);
+      ref = run.positions;
+      for (i = j = 0, len = ref.length; j < len; i = ++j) {
+        position = ref[i];
+        for (key in position) {
+          position[key] *= this.scale;
+        }
+        position.advanceWidth = run.glyphs[i].advanceWidth * this.scale;
+      }
+      return run;
+    };
+
+    EmbeddedFont.prototype.layoutCached = function(text) {
+      var cached, run;
+      if (cached = this.layoutCache[text]) {
+        return cached;
+      }
+      run = this.layoutRun(text);
+      this.layoutCache[text] = run;
+      return run;
+    };
+
+    EmbeddedFont.prototype.layout = function(text, features, onlyWidth) {
+      var advanceWidth, glyphs, index, last, positions, ref, run;
+      if (onlyWidth == null) {
+        onlyWidth = false;
+      }
+      if (features) {
+        return this.layoutRun(text, features);
+      }
+      glyphs = onlyWidth ? null : [];
+      positions = onlyWidth ? null : [];
+      advanceWidth = 0;
+      last = 0;
+      index = 0;
+      while (index <= text.length) {
+        if ((index === text.length && last < index) || ((ref = text.charAt(index)) === ' ' || ref === '\t')) {
+          run = this.layoutCached(text.slice(last, ++index));
+          if (!onlyWidth) {
+            glyphs.push.apply(glyphs, run.glyphs);
+            positions.push.apply(positions, run.positions);
+          }
+          advanceWidth += run.advanceWidth;
+          last = index;
+        } else {
+          index++;
+        }
+      }
+      return {
+        glyphs: glyphs,
+        positions: positions,
+        advanceWidth: advanceWidth
+      };
+    };
+
+    EmbeddedFont.prototype.encode = function(text, features) {
+      var base, base1, gid, glyph, glyphs, i, j, len, positions, ref, res;
+      ref = this.layout(text, features), glyphs = ref.glyphs, positions = ref.positions;
+      res = [];
+      for (i = j = 0, len = glyphs.length; j < len; i = ++j) {
+        glyph = glyphs[i];
+        gid = this.subset.includeGlyph(glyph.id);
+        res.push(('0000' + gid.toString(16)).slice(-4));
+        if ((base = this.widths)[gid] == null) {
+          base[gid] = glyph.advanceWidth * this.scale;
+        }
+        if ((base1 = this.unicode)[gid] == null) {
+          base1[gid] = glyph.codePoints;
+        }
+      }
+      return [res, positions];
+    };
+
+    EmbeddedFont.prototype.widthOfString = function(string, size, features) {
+      var scale, width;
+      width = this.layout(string, features, true).advanceWidth;
+      scale = size / 1000;
+      return width * scale;
+    };
+
+    EmbeddedFont.prototype.embed = function() {
+      var bbox, descendantFont, descriptor, familyClass, flags, fontFile, i, isCFF, name, ref, tag;
+      isCFF = this.subset.cff != null;
+      fontFile = this.document.ref();
+      if (isCFF) {
+        fontFile.data.Subtype = 'CIDFontType0C';
+      }
+      this.subset.encodeStream().pipe(fontFile);
+      familyClass = (((ref = this.font['OS/2']) != null ? ref.sFamilyClass : void 0) || 0) >> 8;
+      flags = 0;
+      if (this.font.post.isFixedPitch) {
+        flags |= 1 << 0;
+      }
+      if ((1 <= familyClass && familyClass <= 7)) {
+        flags |= 1 << 1;
+      }
+      flags |= 1 << 2;
+      if (familyClass === 10) {
+        flags |= 1 << 3;
+      }
+      if (this.font.head.macStyle.italic) {
+        flags |= 1 << 6;
+      }
+      tag = ((function() {
+        var j, results;
+        results = [];
+        for (i = j = 0; j < 6; i = ++j) {
+          results.push(String.fromCharCode(Math.random() * 26 + 65));
+        }
+        return results;
+      })()).join('');
+      name = tag + '+' + this.font.postscriptName;
+      bbox = this.font.bbox;
+      descriptor = this.document.ref({
+        Type: 'FontDescriptor',
+        FontName: name,
+        Flags: flags,
+        FontBBox: [bbox.minX * this.scale, bbox.minY * this.scale, bbox.maxX * this.scale, bbox.maxY * this.scale],
+        ItalicAngle: this.font.italicAngle,
+        Ascent: this.ascender,
+        Descent: this.descender,
+        CapHeight: (this.font.capHeight || this.font.ascent) * this.scale,
+        XHeight: (this.font.xHeight || 0) * this.scale,
+        StemV: 0
+      });
+      if (isCFF) {
+        descriptor.data.FontFile3 = fontFile;
+      } else {
+        descriptor.data.FontFile2 = fontFile;
+      }
+      descriptor.end();
+      descendantFont = this.document.ref({
+        Type: 'Font',
+        Subtype: isCFF ? 'CIDFontType0' : 'CIDFontType2',
+        BaseFont: name,
+        CIDSystemInfo: {
+          Registry: new String('Adobe'),
+          Ordering: new String('Identity'),
+          Supplement: 0
+        },
+        FontDescriptor: descriptor,
+        W: [0, this.widths]
+      });
+      descendantFont.end();
+      this.dictionary.data = {
+        Type: 'Font',
+        Subtype: 'Type0',
+        BaseFont: name,
+        Encoding: 'Identity-H',
+        DescendantFonts: [descendantFont],
+        ToUnicode: this.toUnicodeCmap()
+      };
+      return this.dictionary.end();
+    };
+
+    toHex = function() {
+      var code, codePoints, codes;
+      codePoints = 1 <= arguments.length ? slice.call(arguments, 0) : [];
+      codes = (function() {
+        var j, len, results;
+        results = [];
+        for (j = 0, len = codePoints.length; j < len; j++) {
+          code = codePoints[j];
+          results.push(('0000' + code.toString(16)).slice(-4));
+        }
+        return results;
+      })();
+      return codes.join('');
+    };
+
+    EmbeddedFont.prototype.toUnicodeCmap = function() {
+      var cmap, codePoints, encoded, entries, j, k, len, len1, ref, value;
+      cmap = this.document.ref();
+      entries = [];
+      ref = this.unicode;
+      for (j = 0, len = ref.length; j < len; j++) {
+        codePoints = ref[j];
+        encoded = [];
+        for (k = 0, len1 = codePoints.length; k < len1; k++) {
+          value = codePoints[k];
+          if (value > 0xffff) {
+            value -= 0x10000;
+            encoded.push(toHex(value >>> 10 & 0x3ff | 0xd800));
+            value = 0xdc00 | value & 0x3ff;
+          }
+          encoded.push(toHex(value));
+        }
+        entries.push("<" + (encoded.join(' ')) + ">");
+      }
+      cmap.end("/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n  /Registry (Adobe)\n  /Ordering (UCS)\n  /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange\n1 beginbfrange\n<0000> <" + (toHex(entries.length - 1)) + "> [" + (entries.join(' ')) + "]\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend");
+      return cmap;
+    };
+
+    return EmbeddedFont;
+
+  })(PDFFont);
+
+  module.exports = EmbeddedFont;
+
+}).call(this);
+
+
+/***/ }),
+/* 295 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var LineWrapper, number;
+
+  LineWrapper = __webpack_require__(296);
+
+  number = __webpack_require__(26).number;
+
+  module.exports = {
+    initText: function() {
+      this.x = 0;
+      this.y = 0;
+      return this._lineGap = 0;
+    },
+    lineGap: function(_lineGap) {
+      this._lineGap = _lineGap;
+      return this;
+    },
+    moveDown: function(lines) {
+      if (lines == null) {
+        lines = 1;
+      }
+      this.y += this.currentLineHeight(true) * lines + this._lineGap;
+      return this;
+    },
+    moveUp: function(lines) {
+      if (lines == null) {
+        lines = 1;
+      }
+      this.y -= this.currentLineHeight(true) * lines + this._lineGap;
+      return this;
+    },
+    _text: function(text, x, y, options, lineCallback) {
+      var j, len, line, ref, wrapper;
+      options = this._initOptions(x, y, options);
+      text = text == null ? '' : '' + text;
+      if (options.wordSpacing) {
+        text = text.replace(/\s{2,}/g, ' ');
+      }
+      if (options.width) {
+        wrapper = this._wrapper;
+        if (!wrapper) {
+          wrapper = new LineWrapper(this, options);
+          wrapper.on('line', lineCallback);
+        }
+        this._wrapper = options.continued ? wrapper : null;
+        this._textOptions = options.continued ? options : null;
+        wrapper.wrap(text, options);
+      } else {
+        ref = text.split('\n');
+        for (j = 0, len = ref.length; j < len; j++) {
+          line = ref[j];
+          lineCallback(line, options);
+        }
+      }
+      return this;
+    },
+    text: function(text, x, y, options) {
+      return this._text(text, x, y, options, this._line.bind(this));
+    },
+    widthOfString: function(string, options) {
+      if (options == null) {
+        options = {};
+      }
+      return this._font.widthOfString(string, this._fontSize, options.features) + (options.characterSpacing || 0) * (string.length - 1);
+    },
+    heightOfString: function(text, options) {
+      var height, lineGap, ref, x, y;
+      if (options == null) {
+        options = {};
+      }
+      ref = this, x = ref.x, y = ref.y;
+      options = this._initOptions(options);
+      options.height = 2e308;
+      lineGap = options.lineGap || this._lineGap || 0;
+      this._text(text, this.x, this.y, options, (function(_this) {
+        return function(line, options) {
+          return _this.y += _this.currentLineHeight(true) + lineGap;
+        };
+      })(this));
+      height = this.y - y;
+      this.x = x;
+      this.y = y;
+      return height;
+    },
+    list: function(list, x, y, options, wrapper) {
+      var flatten, i, indent, itemIndent, items, level, levels, midLine, r;
+      options = this._initOptions(x, y, options);
+      midLine = Math.round((this._font.ascender / 1000 * this._fontSize) / 2);
+      r = options.bulletRadius || Math.round((this._font.ascender / 1000 * this._fontSize) / 3);
+      indent = options.textIndent || r * 5;
+      itemIndent = options.bulletIndent || r * 8;
+      level = 1;
+      items = [];
+      levels = [];
+      flatten = function(list) {
+        var i, item, j, len, results;
+        results = [];
+        for (i = j = 0, len = list.length; j < len; i = ++j) {
+          item = list[i];
+          if (Array.isArray(item)) {
+            level++;
+            flatten(item);
+            results.push(level--);
+          } else {
+            items.push(item);
+            results.push(levels.push(level));
+          }
+        }
+        return results;
+      };
+      flatten(list);
+      wrapper = new LineWrapper(this, options);
+      wrapper.on('line', this._line.bind(this));
+      level = 1;
+      i = 0;
+      wrapper.on('firstLine', (function(_this) {
+        return function() {
+          var diff, l;
+          if ((l = levels[i++]) !== level) {
+            diff = itemIndent * (l - level);
+            _this.x += diff;
+            wrapper.lineWidth -= diff;
+            level = l;
+          }
+          _this.circle(_this.x - indent + r, _this.y + midLine, r);
+          return _this.fill();
+        };
+      })(this));
+      wrapper.on('sectionStart', (function(_this) {
+        return function() {
+          var pos;
+          pos = indent + itemIndent * (level - 1);
+          _this.x += pos;
+          return wrapper.lineWidth -= pos;
+        };
+      })(this));
+      wrapper.on('sectionEnd', (function(_this) {
+        return function() {
+          var pos;
+          pos = indent + itemIndent * (level - 1);
+          _this.x -= pos;
+          return wrapper.lineWidth += pos;
+        };
+      })(this));
+      wrapper.wrap(items.join('\n'), options);
+      return this;
+    },
+    _initOptions: function(x, y, options) {
+      var key, ref, val;
+      if (x == null) {
+        x = {};
+      }
+      if (options == null) {
+        options = {};
+      }
+      if (typeof x === 'object') {
+        options = x;
+        x = null;
+      }
+      options = (function() {
+        var k, opts, v;
+        opts = {};
+        for (k in options) {
+          v = options[k];
+          opts[k] = v;
+        }
+        return opts;
+      })();
+      if (this._textOptions) {
+        ref = this._textOptions;
+        for (key in ref) {
+          val = ref[key];
+          if (key !== 'continued') {
+            if (options[key] == null) {
+              options[key] = val;
+            }
+          }
+        }
+      }
+      if (x != null) {
+        this.x = x;
+      }
+      if (y != null) {
+        this.y = y;
+      }
+      if (options.lineBreak !== false) {
+        if (options.width == null) {
+          options.width = this.page.width - this.x - this.page.margins.right;
+        }
+      }
+      options.columns || (options.columns = 0);
+      if (options.columnGap == null) {
+        options.columnGap = 18;
+      }
+      return options;
+    },
+    _line: function(text, options, wrapper) {
+      var lineGap;
+      if (options == null) {
+        options = {};
+      }
+      this._fragment(text, this.x, this.y, options);
+      lineGap = options.lineGap || this._lineGap || 0;
+      if (!wrapper) {
+        return this.x += this.widthOfString(text);
+      } else {
+        return this.y += this.currentLineHeight(true) + lineGap;
+      }
+    },
+    _fragment: function(text, x, y, options) {
+      var addSegment, align, base, characterSpacing, commands, d, encoded, encodedWord, flush, hadOffset, i, j, key, last, len, len1, lineWidth, lineY, m, mode, name, pos, positions, positionsWord, ref, ref1, ref2, renderedWidth, scale, space, spaceWidth, textWidth, val, word, wordSpacing, words;
+      text = ('' + text).replace(/\n/g, '');
+      if (text.length === 0) {
+        return;
+      }
+      align = options.align || 'left';
+      wordSpacing = options.wordSpacing || 0;
+      characterSpacing = options.characterSpacing || 0;
+      if (options.width) {
+        switch (align) {
+          case 'right':
+            textWidth = this.widthOfString(text.replace(/\s+$/, ''), options);
+            x += options.lineWidth - textWidth;
+            break;
+          case 'center':
+            x += options.lineWidth / 2 - options.textWidth / 2;
+            break;
+          case 'justify':
+            words = text.trim().split(/\s+/);
+            textWidth = this.widthOfString(text.replace(/\s+/g, ''), options);
+            spaceWidth = this.widthOfString(' ') + characterSpacing;
+            wordSpacing = Math.max(0, (options.lineWidth - textWidth) / Math.max(1, words.length - 1) - spaceWidth);
+        }
+      }
+      renderedWidth = options.textWidth + (wordSpacing * (options.wordCount - 1)) + (characterSpacing * (text.length - 1));
+      if (options.link) {
+        this.link(x, y, renderedWidth, this.currentLineHeight(), options.link);
+      }
+      if (options.underline || options.strike) {
+        this.save();
+        if (!options.stroke) {
+          this.strokeColor.apply(this, this._fillColor);
+        }
+        lineWidth = this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);
+        this.lineWidth(lineWidth);
+        d = options.underline ? 1 : 2;
+        lineY = y + this.currentLineHeight() / d;
+        if (options.underline) {
+          lineY -= lineWidth;
+        }
+        this.moveTo(x, lineY);
+        this.lineTo(x + renderedWidth, lineY);
+        this.stroke();
+        this.restore();
+      }
+      this.save();
+      this.transform(1, 0, 0, -1, 0, this.page.height);
+      y = this.page.height - y - (this._font.ascender / 1000 * this._fontSize);
+      if ((base = this.page.fonts)[name = this._font.id] == null) {
+        base[name] = this._font.ref();
+      }
+      this.addContent("BT");
+      this.addContent("1 0 0 1 " + (number(x)) + " " + (number(y)) + " Tm");
+      this.addContent("/" + this._font.id + " " + (number(this._fontSize)) + " Tf");
+      mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;
+      if (mode) {
+        this.addContent(mode + " Tr");
+      }
+      if (characterSpacing) {
+        this.addContent((number(characterSpacing)) + " Tc");
+      }
+      if (wordSpacing) {
+        words = text.trim().split(/\s+/);
+        wordSpacing += this.widthOfString(' ') + characterSpacing;
+        wordSpacing *= 1000 / this._fontSize;
+        encoded = [];
+        positions = [];
+        for (j = 0, len = words.length; j < len; j++) {
+          word = words[j];
+          ref = this._font.encode(word, options.features), encodedWord = ref[0], positionsWord = ref[1];
+          encoded.push.apply(encoded, encodedWord);
+          positions.push.apply(positions, positionsWord);
+          space = {};
+          ref1 = positions[positions.length - 1];
+          for (key in ref1) {
+            val = ref1[key];
+            space[key] = val;
+          }
+          space.xAdvance += wordSpacing;
+          positions[positions.length - 1] = space;
+        }
+      } else {
+        ref2 = this._font.encode(text, options.features), encoded = ref2[0], positions = ref2[1];
+      }
+      scale = this._fontSize / 1000;
+      commands = [];
+      last = 0;
+      hadOffset = false;
+      addSegment = (function(_this) {
+        return function(cur) {
+          var advance, hex;
+          if (last < cur) {
+            hex = encoded.slice(last, cur).join('');
+            advance = positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;
+            commands.push("<" + hex + "> " + (number(-advance)));
+          }
+          return last = cur;
+        };
+      })(this);
+      flush = (function(_this) {
+        return function(i) {
+          addSegment(i);
+          if (commands.length > 0) {
+            _this.addContent("[" + (commands.join(' ')) + "] TJ");
+            return commands.length = 0;
+          }
+        };
+      })(this);
+      for (i = m = 0, len1 = positions.length; m < len1; i = ++m) {
+        pos = positions[i];
+        if (pos.xOffset || pos.yOffset) {
+          flush(i);
+          this.addContent("1 0 0 1 " + (number(x + pos.xOffset * scale)) + " " + (number(y + pos.yOffset * scale)) + " Tm");
+          flush(i + 1);
+          hadOffset = true;
+        } else {
+          if (hadOffset) {
+            this.addContent("1 0 0 1 " + (number(x)) + " " + (number(y)) + " Tm");
+            hadOffset = false;
+          }
+          if (pos.xAdvance - pos.advanceWidth !== 0) {
+            addSegment(i + 1);
+          }
+        }
+        x += pos.xAdvance * scale;
+      }
+      flush(i);
+      this.addContent("ET");
+      return this.restore();
+    }
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 296 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var EventEmitter, LineBreaker, LineWrapper,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  EventEmitter = __webpack_require__(31).EventEmitter;
+
+  LineBreaker = __webpack_require__(78);
+
+  LineWrapper = (function(superClass) {
+    extend(LineWrapper, superClass);
+
+    function LineWrapper(document, options) {
+      var ref;
+      this.document = document;
+      this.indent = options.indent || 0;
+      this.characterSpacing = options.characterSpacing || 0;
+      this.wordSpacing = options.wordSpacing === 0;
+      this.columns = options.columns || 1;
+      this.columnGap = (ref = options.columnGap) != null ? ref : 18;
+      this.lineWidth = (options.width - (this.columnGap * (this.columns - 1))) / this.columns;
+      this.spaceLeft = this.lineWidth;
+      this.startX = this.document.x;
+      this.startY = this.document.y;
+      this.column = 1;
+      this.ellipsis = options.ellipsis;
+      this.continuedX = 0;
+      this.features = options.features;
+      if (options.height != null) {
+        this.height = options.height;
+        this.maxY = this.startY + options.height;
+      } else {
+        this.maxY = this.document.page.maxY();
+      }
+      this.on('firstLine', (function(_this) {
+        return function(options) {
+          var indent;
+          indent = _this.continuedX || _this.indent;
+          _this.document.x += indent;
+          _this.lineWidth -= indent;
+          return _this.once('line', function() {
+            _this.document.x -= indent;
+            _this.lineWidth += indent;
+            if (options.continued && !_this.continuedX) {
+              _this.continuedX = _this.indent;
+            }
+            if (!options.continued) {
+              return _this.continuedX = 0;
+            }
+          });
+        };
+      })(this));
+      this.on('lastLine', (function(_this) {
+        return function(options) {
+          var align;
+          align = options.align;
+          if (align === 'justify') {
+            options.align = 'left';
+          }
+          _this.lastLine = true;
+          return _this.once('line', function() {
+            _this.document.y += options.paragraphGap || 0;
+            options.align = align;
+            return _this.lastLine = false;
+          });
+        };
+      })(this));
+    }
+
+    LineWrapper.prototype.wordWidth = function(word) {
+      return this.document.widthOfString(word, this) + this.characterSpacing + this.wordSpacing;
+    };
+
+    LineWrapper.prototype.eachWord = function(text, fn) {
+      var bk, breaker, fbk, l, last, lbk, shouldContinue, w, word, wordWidths;
+      breaker = new LineBreaker(text);
+      last = null;
+      wordWidths = Object.create(null);
+      while (bk = breaker.nextBreak()) {
+        word = text.slice((last != null ? last.position : void 0) || 0, bk.position);
+        w = wordWidths[word] != null ? wordWidths[word] : wordWidths[word] = this.wordWidth(word);
+        if (w > this.lineWidth + this.continuedX) {
+          lbk = last;
+          fbk = {};
+          while (word.length) {
+            l = word.length;
+            while (w > this.spaceLeft) {
+              w = this.wordWidth(word.slice(0, --l));
+            }
+            fbk.required = l < word.length;
+            shouldContinue = fn(word.slice(0, l), w, fbk, lbk);
+            lbk = {
+              required: false
+            };
+            word = word.slice(l);
+            w = this.wordWidth(word);
+            if (shouldContinue === false) {
+              break;
+            }
+          }
+        } else {
+          shouldContinue = fn(word, w, bk, last);
+        }
+        if (shouldContinue === false) {
+          break;
+        }
+        last = bk;
+      }
+    };
+
+    LineWrapper.prototype.wrap = function(text, options) {
+      var buffer, emitLine, lc, nextY, textWidth, wc, y;
+      if (options.indent != null) {
+        this.indent = options.indent;
+      }
+      if (options.characterSpacing != null) {
+        this.characterSpacing = options.characterSpacing;
+      }
+      if (options.wordSpacing != null) {
+        this.wordSpacing = options.wordSpacing;
+      }
+      if (options.ellipsis != null) {
+        this.ellipsis = options.ellipsis;
+      }
+      nextY = this.document.y + this.document.currentLineHeight(true);
+      if (this.document.y > this.maxY || nextY > this.maxY) {
+        this.nextSection();
+      }
+      buffer = '';
+      textWidth = 0;
+      wc = 0;
+      lc = 0;
+      y = this.document.y;
+      emitLine = (function(_this) {
+        return function() {
+          options.textWidth = textWidth + _this.wordSpacing * (wc - 1);
+          options.wordCount = wc;
+          options.lineWidth = _this.lineWidth;
+          y = _this.document.y;
+          _this.emit('line', buffer, options, _this);
+          return lc++;
+        };
+      })(this);
+      this.emit('sectionStart', options, this);
+      this.eachWord(text, (function(_this) {
+        return function(word, w, bk, last) {
+          var lh, shouldContinue;
+          if ((last == null) || last.required) {
+            _this.emit('firstLine', options, _this);
+            _this.spaceLeft = _this.lineWidth;
+          }
+          if (w <= _this.spaceLeft) {
+            buffer += word;
+            textWidth += w;
+            wc++;
+          }
+          if (bk.required || w > _this.spaceLeft) {
+            if (bk.required) {
+              _this.emit('lastLine', options, _this);
+            }
+            lh = _this.document.currentLineHeight(true);
+            if ((_this.height != null) && _this.ellipsis && _this.document.y + lh * 2 > _this.maxY && _this.column >= _this.columns) {
+              if (_this.ellipsis === true) {
+                _this.ellipsis = '…';
+              }
+              buffer = buffer.replace(/\s+$/, '');
+              textWidth = _this.wordWidth(buffer + _this.ellipsis);
+              while (textWidth > _this.lineWidth) {
+                buffer = buffer.slice(0, -1).replace(/\s+$/, '');
+                textWidth = _this.wordWidth(buffer + _this.ellipsis);
+              }
+              buffer = buffer + _this.ellipsis;
+            }
+            if (bk.required && w > _this.spaceLeft) {
+              buffer = word;
+              textWidth = w;
+              wc = 1;
+            }
+            emitLine();
+            if (_this.document.y + lh > _this.maxY) {
+              shouldContinue = _this.nextSection();
+              if (!shouldContinue) {
+                wc = 0;
+                buffer = '';
+                return false;
+              }
+            }
+            if (bk.required) {
+              _this.spaceLeft = _this.lineWidth;
+              buffer = '';
+              textWidth = 0;
+              return wc = 0;
+            } else {
+              _this.spaceLeft = _this.lineWidth - w;
+              buffer = word;
+              textWidth = w;
+              return wc = 1;
+            }
+          } else {
+            return _this.spaceLeft -= w;
+          }
+        };
+      })(this));
+      if (wc > 0) {
+        this.emit('lastLine', options, this);
+        emitLine();
+      }
+      this.emit('sectionEnd', options, this);
+      if (options.continued === true) {
+        if (lc > 1) {
+          this.continuedX = 0;
+        }
+        this.continuedX += options.textWidth;
+        return this.document.y = y;
+      } else {
+        return this.document.x = this.startX;
+      }
+    };
+
+    LineWrapper.prototype.nextSection = function(options) {
+      var ref;
+      this.emit('sectionEnd', options, this);
+      if (++this.column > this.columns) {
+        if (this.height != null) {
+          return false;
+        }
+        this.document.addPage();
+        this.column = 1;
+        this.startY = this.document.page.margins.top;
+        this.maxY = this.document.page.maxY();
+        this.document.x = this.startX;
+        if (this.document._fillColor) {
+          (ref = this.document).fillColor.apply(ref, this.document._fillColor);
+        }
+        this.emit('pageBreak', options, this);
+      } else {
+        this.document.x += this.lineWidth + this.columnGap;
+        this.document.y = this.startY;
+        this.emit('columnBreak', options, this);
+      }
+      this.emit('sectionStart', options, this);
+      return true;
+    };
+
+    return LineWrapper;
+
+  })(EventEmitter);
+
+  module.exports = LineWrapper;
+
+}).call(this);
+
+
+/***/ }),
+/* 297 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var PDFImage;
+
+  PDFImage = __webpack_require__(121);
+
+  module.exports = {
+    initImages: function() {
+      this._imageRegistry = {};
+      return this._imageCount = 0;
+    },
+    image: function(src, x, y, options) {
+      var base, bh, bp, bw, h, hp, image, ip, name, ref, ref1, ref2, ref3, w, wp;
+      if (options == null) {
+        options = {};
+      }
+      if (typeof x === 'object') {
+        options = x;
+        x = null;
+      }
+      x = (ref = x != null ? x : options.x) != null ? ref : this.x;
+      y = (ref1 = y != null ? y : options.y) != null ? ref1 : this.y;
+      if (typeof src === 'string') {
+        image = this._imageRegistry[src];
+      }
+      if (!image) {
+        if (src.width && src.height) {
+          image = src;
+        } else {
+          image = this.openImage(src);
+        }
+      }
+      if (!image.obj) {
+        image.embed(this);
+      }
+      if ((base = this.page.xobjects)[name = image.label] == null) {
+        base[name] = image.obj;
+      }
+      w = options.width || image.width;
+      h = options.height || image.height;
+      if (options.width && !options.height) {
+        wp = w / image.width;
+        w = image.width * wp;
+        h = image.height * wp;
+      } else if (options.height && !options.width) {
+        hp = h / image.height;
+        w = image.width * hp;
+        h = image.height * hp;
+      } else if (options.scale) {
+        w = image.width * options.scale;
+        h = image.height * options.scale;
+      } else if (options.fit) {
+        ref2 = options.fit, bw = ref2[0], bh = ref2[1];
+        bp = bw / bh;
+        ip = image.width / image.height;
+        if (ip > bp) {
+          w = bw;
+          h = bw / ip;
+        } else {
+          h = bh;
+          w = bh * ip;
+        }
+      } else if (options.cover) {
+        ref3 = options.cover, bw = ref3[0], bh = ref3[1];
+        bp = bw / bh;
+        ip = image.width / image.height;
+        if (ip > bp) {
+          h = bh;
+          w = bh * ip;
+        } else {
+          w = bw;
+          h = bw / ip;
+        }
+      }
+      if (options.fit || options.cover) {
+        if (options.align === 'center') {
+          x = x + bw / 2 - w / 2;
+        } else if (options.align === 'right') {
+          x = x + bw - w;
+        }
+        if (options.valign === 'center') {
+          y = y + bh / 2 - h / 2;
+        } else if (options.valign === 'bottom') {
+          y = y + bh - h;
+        }
+      }
+      if (this.y === y) {
+        this.y += h;
+      }
+      this.save();
+      this.transform(w, 0, 0, -h, x, y + h);
+      this.addContent("/" + image.label + " Do");
+      this.restore();
+      return this;
+    },
+    openImage: function(src) {
+      var image;
+      if (typeof src === 'string') {
+        image = this._imageRegistry[src];
+      }
+      if (!image) {
+        image = PDFImage.open(src, 'I' + (++this._imageCount));
+        if (typeof src === 'string') {
+          this._imageRegistry[src] = image;
+        }
+      }
+      return image;
+    }
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 298 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var Data;
+
+  Data = (function() {
+    function Data(data) {
+      this.data = data != null ? data : [];
+      this.pos = 0;
+      this.length = this.data.length;
+    }
+
+    Data.prototype.readByte = function() {
+      return this.data[this.pos++];
+    };
+
+    Data.prototype.writeByte = function(byte) {
+      return this.data[this.pos++] = byte;
+    };
+
+    Data.prototype.byteAt = function(index) {
+      return this.data[index];
+    };
+
+    Data.prototype.readBool = function() {
+      return !!this.readByte();
+    };
+
+    Data.prototype.writeBool = function(val) {
+      return this.writeByte(val ? 1 : 0);
+    };
+
+    Data.prototype.readUInt32 = function() {
+      var b1, b2, b3, b4;
+      b1 = this.readByte() * 0x1000000;
+      b2 = this.readByte() << 16;
+      b3 = this.readByte() << 8;
+      b4 = this.readByte();
+      return b1 + b2 + b3 + b4;
+    };
+
+    Data.prototype.writeUInt32 = function(val) {
+      this.writeByte((val >>> 24) & 0xff);
+      this.writeByte((val >> 16) & 0xff);
+      this.writeByte((val >> 8) & 0xff);
+      return this.writeByte(val & 0xff);
+    };
+
+    Data.prototype.readInt32 = function() {
+      var int;
+      int = this.readUInt32();
+      if (int >= 0x80000000) {
+        return int - 0x100000000;
+      } else {
+        return int;
+      }
+    };
+
+    Data.prototype.writeInt32 = function(val) {
+      if (val < 0) {
+        val += 0x100000000;
+      }
+      return this.writeUInt32(val);
+    };
+
+    Data.prototype.readUInt16 = function() {
+      var b1, b2;
+      b1 = this.readByte() << 8;
+      b2 = this.readByte();
+      return b1 | b2;
+    };
+
+    Data.prototype.writeUInt16 = function(val) {
+      this.writeByte((val >> 8) & 0xff);
+      return this.writeByte(val & 0xff);
+    };
+
+    Data.prototype.readInt16 = function() {
+      var int;
+      int = this.readUInt16();
+      if (int >= 0x8000) {
+        return int - 0x10000;
+      } else {
+        return int;
+      }
+    };
+
+    Data.prototype.writeInt16 = function(val) {
+      if (val < 0) {
+        val += 0x10000;
+      }
+      return this.writeUInt16(val);
+    };
+
+    Data.prototype.readString = function(length) {
+      var i, j, ref, ret;
+      ret = [];
+      for (i = j = 0, ref = length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        ret[i] = String.fromCharCode(this.readByte());
+      }
+      return ret.join('');
+    };
+
+    Data.prototype.writeString = function(val) {
+      var i, j, ref, results;
+      results = [];
+      for (i = j = 0, ref = val.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        results.push(this.writeByte(val.charCodeAt(i)));
+      }
+      return results;
+    };
+
+    Data.prototype.stringAt = function(pos, length) {
+      this.pos = pos;
+      return this.readString(length);
+    };
+
+    Data.prototype.readShort = function() {
+      return this.readInt16();
+    };
+
+    Data.prototype.writeShort = function(val) {
+      return this.writeInt16(val);
+    };
+
+    Data.prototype.readLongLong = function() {
+      var b1, b2, b3, b4, b5, b6, b7, b8;
+      b1 = this.readByte();
+      b2 = this.readByte();
+      b3 = this.readByte();
+      b4 = this.readByte();
+      b5 = this.readByte();
+      b6 = this.readByte();
+      b7 = this.readByte();
+      b8 = this.readByte();
+      if (b1 & 0x80) {
+        return ((b1 ^ 0xff) * 0x100000000000000 + (b2 ^ 0xff) * 0x1000000000000 + (b3 ^ 0xff) * 0x10000000000 + (b4 ^ 0xff) * 0x100000000 + (b5 ^ 0xff) * 0x1000000 + (b6 ^ 0xff) * 0x10000 + (b7 ^ 0xff) * 0x100 + (b8 ^ 0xff) + 1) * -1;
+      }
+      return b1 * 0x100000000000000 + b2 * 0x1000000000000 + b3 * 0x10000000000 + b4 * 0x100000000 + b5 * 0x1000000 + b6 * 0x10000 + b7 * 0x100 + b8;
+    };
+
+    Data.prototype.writeLongLong = function(val) {
+      var high, low;
+      high = Math.floor(val / 0x100000000);
+      low = val & 0xffffffff;
+      this.writeByte((high >> 24) & 0xff);
+      this.writeByte((high >> 16) & 0xff);
+      this.writeByte((high >> 8) & 0xff);
+      this.writeByte(high & 0xff);
+      this.writeByte((low >> 24) & 0xff);
+      this.writeByte((low >> 16) & 0xff);
+      this.writeByte((low >> 8) & 0xff);
+      return this.writeByte(low & 0xff);
+    };
+
+    Data.prototype.readInt = function() {
+      return this.readInt32();
+    };
+
+    Data.prototype.writeInt = function(val) {
+      return this.writeInt32(val);
+    };
+
+    Data.prototype.slice = function(start, end) {
+      return this.data.slice(start, end);
+    };
+
+    Data.prototype.read = function(bytes) {
+      var buf, i, j, ref;
+      buf = [];
+      for (i = j = 0, ref = bytes; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
+        buf.push(this.readByte());
+      }
+      return buf;
+    };
+
+    Data.prototype.write = function(bytes) {
+      var byte, j, len, results;
+      results = [];
+      for (j = 0, len = bytes.length; j < len; j++) {
+        byte = bytes[j];
+        results.push(this.writeByte(byte));
+      }
+      return results;
+    };
+
+    return Data;
+
+  })();
+
+  module.exports = Data;
+
+}).call(this);
+
+
+/***/ }),
+/* 299 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  var JPEG, fs,
+    indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
+
+  fs = __webpack_require__(8);
+
+  JPEG = (function() {
+    var MARKERS;
+
+    MARKERS = [0xFFC0, 0xFFC1, 0xFFC2, 0xFFC3, 0xFFC5, 0xFFC6, 0xFFC7, 0xFFC8, 0xFFC9, 0xFFCA, 0xFFCB, 0xFFCC, 0xFFCD, 0xFFCE, 0xFFCF];
+
+    function JPEG(data, label) {
+      var channels, marker, pos;
+      this.data = data;
+      this.label = label;
+      if (this.data.readUInt16BE(0) !== 0xFFD8) {
+        throw "SOI not found in JPEG";
+      }
+      pos = 2;
+      while (pos < this.data.length) {
+        marker = this.data.readUInt16BE(pos);
+        pos += 2;
+        if (indexOf.call(MARKERS, marker) >= 0) {
+          break;
+        }
+        pos += this.data.readUInt16BE(pos);
+      }
+      if (indexOf.call(MARKERS, marker) < 0) {
+        throw "Invalid JPEG.";
+      }
+      pos += 2;
+      this.bits = this.data[pos++];
+      this.height = this.data.readUInt16BE(pos);
+      pos += 2;
+      this.width = this.data.readUInt16BE(pos);
+      pos += 2;
+      channels = this.data[pos++];
+      this.colorSpace = (function() {
+        switch (channels) {
+          case 1:
+            return 'DeviceGray';
+          case 3:
+            return 'DeviceRGB';
+          case 4:
+            return 'DeviceCMYK';
+        }
+      })();
+      this.obj = null;
+    }
+
+    JPEG.prototype.embed = function(document) {
+      if (this.obj) {
+        return;
+      }
+      this.obj = document.ref({
+        Type: 'XObject',
+        Subtype: 'Image',
+        BitsPerComponent: this.bits,
+        Width: this.width,
+        Height: this.height,
+        ColorSpace: this.colorSpace,
+        Filter: 'DCTDecode'
+      });
+      if (this.colorSpace === 'DeviceCMYK') {
+        this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0];
+      }
+      this.obj.end(this.data);
+      return this.data = null;
+    };
+
+    return JPEG;
+
+  })();
+
+  module.exports = JPEG;
+
+}).call(this);
+
+
+/***/ }),
+/* 300 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.12.6
+(function() {
+  var PNG, PNGImage, zlib;
+
+  zlib = __webpack_require__(48);
+
+  PNG = __webpack_require__(301);
+
+  PNGImage = (function() {
+    function PNGImage(data, label) {
+      this.label = label;
+      this.image = new PNG(data);
+      this.width = this.image.width;
+      this.height = this.image.height;
+      this.imgData = this.image.imgData;
+      this.obj = null;
+    }
+
+    PNGImage.prototype.embed = function(document) {
+      var k, len1, mask, palette, params, rgb, val, x;
+      this.document = document;
+      if (this.obj) {
+        return;
+      }
+      this.obj = this.document.ref({
+        Type: 'XObject',
+        Subtype: 'Image',
+        BitsPerComponent: this.image.bits,
+        Width: this.width,
+        Height: this.height,
+        Filter: 'FlateDecode'
+      });
+      if (!this.image.hasAlphaChannel) {
+        params = this.document.ref({
+          Predictor: 15,
+          Colors: this.image.colors,
+          BitsPerComponent: this.image.bits,
+          Columns: this.width
+        });
+        this.obj.data['DecodeParms'] = params;
+        params.end();
+      }
+      if (this.image.palette.length === 0) {
+        this.obj.data['ColorSpace'] = this.image.colorSpace;
+      } else {
+        palette = this.document.ref();
+        palette.end(new Buffer(this.image.palette));
+        this.obj.data['ColorSpace'] = ['Indexed', 'DeviceRGB', (this.image.palette.length / 3) - 1, palette];
+      }
+      if (this.image.transparency.grayscale) {
+        val = this.image.transparency.greyscale;
+        return this.obj.data['Mask'] = [val, val];
+      } else if (this.image.transparency.rgb) {
+        rgb = this.image.transparency.rgb;
+        mask = [];
+        for (k = 0, len1 = rgb.length; k < len1; k++) {
+          x = rgb[k];
+          mask.push(x, x);
+        }
+        return this.obj.data['Mask'] = mask;
+      } else if (this.image.transparency.indexed) {
+        return this.loadIndexedAlphaChannel();
+      } else if (this.image.hasAlphaChannel) {
+        return this.splitAlphaChannel();
+      } else {
+        return this.finalize();
+      }
+    };
+
+    PNGImage.prototype.finalize = function() {
+      var sMask;
+      if (this.alphaChannel) {
+        sMask = this.document.ref({
+          Type: 'XObject',
+          Subtype: 'Image',
+          Height: this.height,
+          Width: this.width,
+          BitsPerComponent: 8,
+          Filter: 'FlateDecode',
+          ColorSpace: 'DeviceGray',
+          Decode: [0, 1]
+        });
+        sMask.end(this.alphaChannel);
+        this.obj.data['SMask'] = sMask;
+      }
+      this.obj.end(this.imgData);
+      this.image = null;
+      return this.imgData = null;
+    };
+
+    PNGImage.prototype.splitAlphaChannel = function() {
+      return this.image.decodePixels((function(_this) {
+        return function(pixels) {
+          var a, alphaChannel, colorByteSize, done, i, imgData, len, p, pixelCount;
+          colorByteSize = _this.image.colors * _this.image.bits / 8;
+          pixelCount = _this.width * _this.height;
+          imgData = new Buffer(pixelCount * colorByteSize);
+          alphaChannel = new Buffer(pixelCount);
+          i = p = a = 0;
+          len = pixels.length;
+          while (i < len) {
+            imgData[p++] = pixels[i++];
+            imgData[p++] = pixels[i++];
+            imgData[p++] = pixels[i++];
+            alphaChannel[a++] = pixels[i++];
+          }
+          done = 0;
+          zlib.deflate(imgData, function(err, imgData1) {
+            _this.imgData = imgData1;
+            if (err) {
+              throw err;
+            }
+            if (++done === 2) {
+              return _this.finalize();
+            }
+          });
+          return zlib.deflate(alphaChannel, function(err, alphaChannel1) {
+            _this.alphaChannel = alphaChannel1;
+            if (err) {
+              throw err;
+            }
+            if (++done === 2) {
+              return _this.finalize();
+            }
+          });
+        };
+      })(this));
+    };
+
+    PNGImage.prototype.loadIndexedAlphaChannel = function(fn) {
+      var transparency;
+      transparency = this.image.transparency.indexed;
+      return this.image.decodePixels((function(_this) {
+        return function(pixels) {
+          var alphaChannel, i, j, k, ref;
+          alphaChannel = new Buffer(_this.width * _this.height);
+          i = 0;
+          for (j = k = 0, ref = pixels.length; k < ref; j = k += 1) {
+            alphaChannel[i++] = transparency[pixels[j]];
+          }
+          return zlib.deflate(alphaChannel, function(err, alphaChannel1) {
+            _this.alphaChannel = alphaChannel1;
+            if (err) {
+              throw err;
+            }
+            return _this.finalize();
+          });
+        };
+      })(this));
+    };
+
+    return PNGImage;
+
+  })();
+
+  module.exports = PNGImage;
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 301 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.4.0
+
+/*
+# MIT LICENSE
+# Copyright (c) 2011 Devon Govett
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a copy of this 
+# software and associated documentation files (the "Software"), to deal in the Software 
+# without restriction, including without limitation the rights to use, copy, modify, merge, 
+# publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons 
+# to whom the Software is furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included in all copies or 
+# substantial portions of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 
+# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
+# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+(function() {
+  var PNG, fs, zlib;
+
+  fs = __webpack_require__(8);
+
+  zlib = __webpack_require__(48);
+
+  module.exports = PNG = (function() {
+
+    PNG.decode = function(path, fn) {
+      return fs.readFile(path, function(err, file) {
+        var png;
+        png = new PNG(file);
+        return png.decode(function(pixels) {
+          return fn(pixels);
+        });
+      });
+    };
+
+    PNG.load = function(path) {
+      var file;
+      file = fs.readFileSync(path);
+      return new PNG(file);
+    };
+
+    function PNG(data) {
+      var chunkSize, colors, i, index, key, section, short, text, _i, _j, _ref;
+      this.data = data;
+      this.pos = 8;
+      this.palette = [];
+      this.imgData = [];
+      this.transparency = {};
+      this.text = {};
+      while (true) {
+        chunkSize = this.readUInt32();
+        section = ((function() {
+          var _i, _results;
+          _results = [];
+          for (i = _i = 0; _i < 4; i = ++_i) {
+            _results.push(String.fromCharCode(this.data[this.pos++]));
+          }
+          return _results;
+        }).call(this)).join('');
+        switch (section) {
+          case 'IHDR':
+            this.width = this.readUInt32();
+            this.height = this.readUInt32();
+            this.bits = this.data[this.pos++];
+            this.colorType = this.data[this.pos++];
+            this.compressionMethod = this.data[this.pos++];
+            this.filterMethod = this.data[this.pos++];
+            this.interlaceMethod = this.data[this.pos++];
+            break;
+          case 'PLTE':
+            this.palette = this.read(chunkSize);
+            break;
+          case 'IDAT':
+            for (i = _i = 0; _i < chunkSize; i = _i += 1) {
+              this.imgData.push(this.data[this.pos++]);
+            }
+            break;
+          case 'tRNS':
+            this.transparency = {};
+            switch (this.colorType) {
+              case 3:
+                this.transparency.indexed = this.read(chunkSize);
+                short = 255 - this.transparency.indexed.length;
+                if (short > 0) {
+                  for (i = _j = 0; 0 <= short ? _j < short : _j > short; i = 0 <= short ? ++_j : --_j) {
+                    this.transparency.indexed.push(255);
+                  }
+                }
+                break;
+              case 0:
+                this.transparency.grayscale = this.read(chunkSize)[0];
+                break;
+              case 2:
+                this.transparency.rgb = this.read(chunkSize);
+            }
+            break;
+          case 'tEXt':
+            text = this.read(chunkSize);
+            index = text.indexOf(0);
+            key = String.fromCharCode.apply(String, text.slice(0, index));
+            this.text[key] = String.fromCharCode.apply(String, text.slice(index + 1));
+            break;
+          case 'IEND':
+            this.colors = (function() {
+              switch (this.colorType) {
+                case 0:
+                case 3:
+                case 4:
+                  return 1;
+                case 2:
+                case 6:
+                  return 3;
+              }
+            }).call(this);
+            this.hasAlphaChannel = (_ref = this.colorType) === 4 || _ref === 6;
+            colors = this.colors + (this.hasAlphaChannel ? 1 : 0);
+            this.pixelBitlength = this.bits * colors;
+            this.colorSpace = (function() {
+              switch (this.colors) {
+                case 1:
+                  return 'DeviceGray';
+                case 3:
+                  return 'DeviceRGB';
+              }
+            }).call(this);
+            this.imgData = new Buffer(this.imgData);
+            return;
+          default:
+            this.pos += chunkSize;
+        }
+        this.pos += 4;
+        if (this.pos > this.data.length) {
+          throw new Error("Incomplete or corrupt PNG file");
+        }
+      }
+      return;
+    }
+
+    PNG.prototype.read = function(bytes) {
+      var i, _i, _results;
+      _results = [];
+      for (i = _i = 0; 0 <= bytes ? _i < bytes : _i > bytes; i = 0 <= bytes ? ++_i : --_i) {
+        _results.push(this.data[this.pos++]);
+      }
+      return _results;
+    };
+
+    PNG.prototype.readUInt32 = function() {
+      var b1, b2, b3, b4;
+      b1 = this.data[this.pos++] << 24;
+      b2 = this.data[this.pos++] << 16;
+      b3 = this.data[this.pos++] << 8;
+      b4 = this.data[this.pos++];
+      return b1 | b2 | b3 | b4;
+    };
+
+    PNG.prototype.readUInt16 = function() {
+      var b1, b2;
+      b1 = this.data[this.pos++] << 8;
+      b2 = this.data[this.pos++];
+      return b1 | b2;
+    };
+
+    PNG.prototype.decodePixels = function(fn) {
+      var _this = this;
+      return zlib.inflate(this.imgData, function(err, data) {
+        var byte, c, col, i, left, length, p, pa, paeth, pb, pc, pixelBytes, pixels, pos, row, scanlineLength, upper, upperLeft, _i, _j, _k, _l, _m;
+        if (err) {
+          throw err;
+        }
+        pixelBytes = _this.pixelBitlength / 8;
+        scanlineLength = pixelBytes * _this.width;
+        pixels = new Buffer(scanlineLength * _this.height);
+        length = data.length;
+        row = 0;
+        pos = 0;
+        c = 0;
+        while (pos < length) {
+          switch (data[pos++]) {
+            case 0:
+              for (i = _i = 0; _i < scanlineLength; i = _i += 1) {
+                pixels[c++] = data[pos++];
+              }
+              break;
+            case 1:
+              for (i = _j = 0; _j < scanlineLength; i = _j += 1) {
+                byte = data[pos++];
+                left = i < pixelBytes ? 0 : pixels[c - pixelBytes];
+                pixels[c++] = (byte + left) % 256;
+              }
+              break;
+            case 2:
+              for (i = _k = 0; _k < scanlineLength; i = _k += 1) {
+                byte = data[pos++];
+                col = (i - (i % pixelBytes)) / pixelBytes;
+                upper = row && pixels[(row - 1) * scanlineLength + col * pixelBytes + (i % pixelBytes)];
+                pixels[c++] = (upper + byte) % 256;
+              }
+              break;
+            case 3:
+              for (i = _l = 0; _l < scanlineLength; i = _l += 1) {
+                byte = data[pos++];
+                col = (i - (i % pixelBytes)) / pixelBytes;
+                left = i < pixelBytes ? 0 : pixels[c - pixelBytes];
+                upper = row && pixels[(row - 1) * scanlineLength + col * pixelBytes + (i % pixelBytes)];
+                pixels[c++] = (byte + Math.floor((left + upper) / 2)) % 256;
+              }
+              break;
+            case 4:
+              for (i = _m = 0; _m < scanlineLength; i = _m += 1) {
+                byte = data[pos++];
+                col = (i - (i % pixelBytes)) / pixelBytes;
+                left = i < pixelBytes ? 0 : pixels[c - pixelBytes];
+                if (row === 0) {
+                  upper = upperLeft = 0;
+                } else {
+                  upper = pixels[(row - 1) * scanlineLength + col * pixelBytes + (i % pixelBytes)];
+                  upperLeft = col && pixels[(row - 1) * scanlineLength + (col - 1) * pixelBytes + (i % pixelBytes)];
+                }
+                p = left + upper - upperLeft;
+                pa = Math.abs(p - left);
+                pb = Math.abs(p - upper);
+                pc = Math.abs(p - upperLeft);
+                if (pa <= pb && pa <= pc) {
+                  paeth = left;
+                } else if (pb <= pc) {
+                  paeth = upper;
+                } else {
+                  paeth = upperLeft;
+                }
+                pixels[c++] = (byte + paeth) % 256;
+              }
+              break;
+            default:
+              throw new Error("Invalid filter algorithm: " + data[pos - 1]);
+          }
+          row++;
+        }
+        return fn(pixels);
+      });
+    };
+
+    PNG.prototype.decodePalette = function() {
+      var c, i, length, palette, pos, ret, transparency, _i, _ref, _ref1;
+      palette = this.palette;
+      transparency = this.transparency.indexed || [];
+      ret = new Buffer(transparency.length + palette.length);
+      pos = 0;
+      length = palette.length;
+      c = 0;
+      for (i = _i = 0, _ref = palette.length; _i < _ref; i = _i += 3) {
+        ret[pos++] = palette[i];
+        ret[pos++] = palette[i + 1];
+        ret[pos++] = palette[i + 2];
+        ret[pos++] = (_ref1 = transparency[c++]) != null ? _ref1 : 255;
+      }
+      return ret;
+    };
+
+    PNG.prototype.copyToImageData = function(imageData, pixels) {
+      var alpha, colors, data, i, input, j, k, length, palette, v, _ref;
+      colors = this.colors;
+      palette = null;
+      alpha = this.hasAlphaChannel;
+      if (this.palette.length) {
+        palette = (_ref = this._decodedPalette) != null ? _ref : this._decodedPalette = this.decodePalette();
+        colors = 4;
+        alpha = true;
+      }
+      data = (imageData != null ? imageData.data : void 0) || imageData;
+      length = data.length;
+      input = palette || pixels;
+      i = j = 0;
+      if (colors === 1) {
+        while (i < length) {
+          k = palette ? pixels[i / 4] * 4 : j;
+          v = input[k++];
+          data[i++] = v;
+          data[i++] = v;
+          data[i++] = v;
+          data[i++] = alpha ? input[k++] : 255;
+          j = k;
+        }
+      } else {
+        while (i < length) {
+          k = palette ? pixels[i / 4] * 4 : j;
+          data[i++] = input[k++];
+          data[i++] = input[k++];
+          data[i++] = input[k++];
+          data[i++] = alpha ? input[k++] : 255;
+          j = k;
+        }
+      }
+    };
+
+    PNG.prototype.decode = function(fn) {
+      var ret,
+        _this = this;
+      ret = new Buffer(this.width * this.height * 4);
+      return this.decodePixels(function(pixels) {
+        _this.copyToImageData(ret, pixels);
+        return fn(ret);
+      });
+    };
+
+    return PNG;
+
+  })();
+
+}).call(this);
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 302 */
+/***/ (function(module, exports) {
+
+// Generated by CoffeeScript 1.12.6
+(function() {
+  module.exports = {
+    annotate: function(x, y, w, h, options) {
+      var key, ref, val;
+      options.Type = 'Annot';
+      options.Rect = this._convertRect(x, y, w, h);
+      options.Border = [0, 0, 0];
+      if (options.Subtype !== 'Link') {
+        if (options.C == null) {
+          options.C = this._normalizeColor(options.color || [0, 0, 0]);
+        }
+      }
+      delete options.color;
+      if (typeof options.Dest === 'string') {
+        options.Dest = new String(options.Dest);
+      }
+      for (key in options) {
+        val = options[key];
+        options[key[0].toUpperCase() + key.slice(1)] = val;
+      }
+      ref = this.ref(options);
+      this.page.annotations.push(ref);
+      ref.end();
+      return this;
+    },
+    note: function(x, y, w, h, contents, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Text';
+      options.Contents = new String(contents);
+      options.Name = 'Comment';
+      if (options.color == null) {
+        options.color = [243, 223, 92];
+      }
+      return this.annotate(x, y, w, h, options);
+    },
+    link: function(x, y, w, h, url, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Link';
+      options.A = this.ref({
+        S: 'URI',
+        URI: new String(url)
+      });
+      options.A.end();
+      return this.annotate(x, y, w, h, options);
+    },
+    _markup: function(x, y, w, h, options) {
+      var ref1, x1, x2, y1, y2;
+      if (options == null) {
+        options = {};
+      }
+      ref1 = this._convertRect(x, y, w, h), x1 = ref1[0], y1 = ref1[1], x2 = ref1[2], y2 = ref1[3];
+      options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];
+      options.Contents = new String;
+      return this.annotate(x, y, w, h, options);
+    },
+    highlight: function(x, y, w, h, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Highlight';
+      if (options.color == null) {
+        options.color = [241, 238, 148];
+      }
+      return this._markup(x, y, w, h, options);
+    },
+    underline: function(x, y, w, h, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Underline';
+      return this._markup(x, y, w, h, options);
+    },
+    strike: function(x, y, w, h, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'StrikeOut';
+      return this._markup(x, y, w, h, options);
+    },
+    lineAnnotation: function(x1, y1, x2, y2, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Line';
+      options.Contents = new String;
+      options.L = [x1, this.page.height - y1, x2, this.page.height - y2];
+      return this.annotate(x1, y1, x2, y2, options);
+    },
+    rectAnnotation: function(x, y, w, h, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Square';
+      options.Contents = new String;
+      return this.annotate(x, y, w, h, options);
+    },
+    ellipseAnnotation: function(x, y, w, h, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'Circle';
+      options.Contents = new String;
+      return this.annotate(x, y, w, h, options);
+    },
+    textAnnotation: function(x, y, w, h, text, options) {
+      if (options == null) {
+        options = {};
+      }
+      options.Subtype = 'FreeText';
+      options.Contents = new String(text);
+      options.DA = new String;
+      return this.annotate(x, y, w, h, options);
+    },
+    _convertRect: function(x1, y1, w, h) {
+      var m0, m1, m2, m3, m4, m5, ref1, x2, y2;
+      y2 = y1;
+      y1 += h;
+      x2 = x1 + w;
+      ref1 = this._ctm, m0 = ref1[0], m1 = ref1[1], m2 = ref1[2], m3 = ref1[3], m4 = ref1[4], m5 = ref1[5];
+      x1 = m0 * x1 + m2 * y1 + m4;
+      y1 = m1 * x1 + m3 * y1 + m5;
+      x2 = m0 * x2 + m2 * y2 + m4;
+      y2 = m1 * x2 + m3 * y2 + m5;
+      return [x1, y1, x2, y2];
+    }
+  };
+
+}).call(this);
+
+
+/***/ }),
+/* 303 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+module.exports = {
+	'4A0': [4767.87, 6740.79],
+	'2A0': [3370.39, 4767.87],
+	A0: [2383.94, 3370.39],
+	A1: [1683.78, 2383.94],
+	A2: [1190.55, 1683.78],
+	A3: [841.89, 1190.55],
+	A4: [595.28, 841.89],
+	A5: [419.53, 595.28],
+	A6: [297.64, 419.53],
+	A7: [209.76, 297.64],
+	A8: [147.40, 209.76],
+	A9: [104.88, 147.40],
+	A10: [73.70, 104.88],
+	B0: [2834.65, 4008.19],
+	B1: [2004.09, 2834.65],
+	B2: [1417.32, 2004.09],
+	B3: [1000.63, 1417.32],
+	B4: [708.66, 1000.63],
+	B5: [498.90, 708.66],
+	B6: [354.33, 498.90],
+	B7: [249.45, 354.33],
+	B8: [175.75, 249.45],
+	B9: [124.72, 175.75],
+	B10: [87.87, 124.72],
+	C0: [2599.37, 3676.54],
+	C1: [1836.85, 2599.37],
+	C2: [1298.27, 1836.85],
+	C3: [918.43, 1298.27],
+	C4: [649.13, 918.43],
+	C5: [459.21, 649.13],
+	C6: [323.15, 459.21],
+	C7: [229.61, 323.15],
+	C8: [161.57, 229.61],
+	C9: [113.39, 161.57],
+	C10: [79.37, 113.39],
+	RA0: [2437.80, 3458.27],
+	RA1: [1729.13, 2437.80],
+	RA2: [1218.90, 1729.13],
+	RA3: [864.57, 1218.90],
+	RA4: [609.45, 864.57],
+	SRA0: [2551.18, 3628.35],
+	SRA1: [1814.17, 2551.18],
+	SRA2: [1275.59, 1814.17],
+	SRA3: [907.09, 1275.59],
+	SRA4: [637.80, 907.09],
+	EXECUTIVE: [521.86, 756.00],
+	FOLIO: [612.00, 936.00],
+	LEGAL: [612.00, 1008.00],
+	LETTER: [612.00, 792.00],
+	TABLOID: [792.00, 1224.00]
+};
+
+
+/***/ }),
+/* 304 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(Buffer) {
+
+var PDFImage = __webpack_require__(121);
+
+function ImageMeasure(pdfKitDoc, imageDictionary) {
+	this.pdfKitDoc = pdfKitDoc;
+	this.imageDictionary = imageDictionary || {};
+}
+
+ImageMeasure.prototype.measureImage = function (src) {
+	var image, label;
+	var that = this;
+
+	if (!this.pdfKitDoc._imageRegistry[src]) {
+		label = 'I' + (++this.pdfKitDoc._imageCount);
+		try {
+			image = PDFImage.open(realImageSrc(src), label);
+		} catch (error) {
+			image = null;
+		}
+		if (image === null || image === undefined) {
+			throw 'invalid image, images dictionary should contain dataURL entries (or local file paths in node.js)';
+		}
+		image.embed(this.pdfKitDoc);
+		this.pdfKitDoc._imageRegistry[src] = image;
+	} else {
+		image = this.pdfKitDoc._imageRegistry[src];
+	}
+
+	return {width: image.width, height: image.height};
+
+	function realImageSrc(src) {
+		var img = that.imageDictionary[src];
+
+		if (!img) {
+			return src;
+		}
+
+		var index = img.indexOf('base64,');
+		if (index < 0) {
+			return that.imageDictionary[src];
+		}
+
+		return Buffer.from(img.substring(index + 7), 'base64');
+	}
+};
+
+module.exports = ImageMeasure;
+
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))
+
+/***/ }),
+/* 305 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var isArray = __webpack_require__(0).isArray;
+
+function groupDecorations(line) {
+	var groups = [], currentGroup = null;
+	for (var i = 0, l = line.inlines.length; i < l; i++) {
+		var inline = line.inlines[i];
+		var decoration = inline.decoration;
+		if (!decoration) {
+			currentGroup = null;
+			continue;
+		}
+		if (!isArray(decoration)) {
+			decoration = [decoration];
+		}
+		var color = inline.decorationColor || inline.color || 'black';
+		var style = inline.decorationStyle || 'solid';
+		for (var ii = 0, ll = decoration.length; ii < ll; ii++) {
+			var decorationItem = decoration[ii];
+			if (!currentGroup || decorationItem !== currentGroup.decoration ||
+				style !== currentGroup.decorationStyle || color !== currentGroup.decorationColor ||
+				decorationItem === 'lineThrough') {
+
+				currentGroup = {
+					line: line,
+					decoration: decorationItem,
+					decorationColor: color,
+					decorationStyle: style,
+					inlines: [inline]
+				};
+				groups.push(currentGroup);
+			} else {
+				currentGroup.inlines.push(inline);
+			}
+		}
+	}
+
+	return groups;
+}
+
+function drawDecoration(group, x, y, pdfKitDoc) {
+	function maxInline() {
+		var max = 0;
+		for (var i = 0, l = group.inlines.length; i < l; i++) {
+			var inline = group.inlines[i];
+			max = inline.fontSize > max ? i : max;
+		}
+		return group.inlines[max];
+	}
+	function width() {
+		var sum = 0;
+		for (var i = 0, l = group.inlines.length; i < l; i++) {
+			sum += group.inlines[i].width;
+		}
+		return sum;
+	}
+	var firstInline = group.inlines[0],
+		biggerInline = maxInline(),
+		totalWidth = width(),
+		lineAscent = group.line.getAscenderHeight(),
+		ascent = biggerInline.font.ascender / 1000 * biggerInline.fontSize,
+		height = biggerInline.height,
+		descent = height - ascent;
+
+	var lw = 0.5 + Math.floor(Math.max(biggerInline.fontSize - 8, 0) / 2) * 0.12;
+
+	switch (group.decoration) {
+		case 'underline':
+			y += lineAscent + descent * 0.45;
+			break;
+		case 'overline':
+			y += lineAscent - (ascent * 0.85);
+			break;
+		case 'lineThrough':
+			y += lineAscent - (ascent * 0.25);
+			break;
+		default:
+			throw 'Unkown decoration : ' + group.decoration;
+	}
+	pdfKitDoc.save();
+
+	if (group.decorationStyle === 'double') {
+		var gap = Math.max(0.5, lw * 2);
+		pdfKitDoc.fillColor(group.decorationColor)
+			.rect(x + firstInline.x, y - lw / 2, totalWidth, lw / 2).fill()
+			.rect(x + firstInline.x, y + gap - lw / 2, totalWidth, lw / 2).fill();
+	} else if (group.decorationStyle === 'dashed') {
+		var nbDashes = Math.ceil(totalWidth / (3.96 + 2.84));
+		var rdx = x + firstInline.x;
+		pdfKitDoc.rect(rdx, y, totalWidth, lw).clip();
+		pdfKitDoc.fillColor(group.decorationColor);
+		for (var i = 0; i < nbDashes; i++) {
+			pdfKitDoc.rect(rdx, y - lw / 2, 3.96, lw).fill();
+			rdx += 3.96 + 2.84;
+		}
+	} else if (group.decorationStyle === 'dotted') {
+		var nbDots = Math.ceil(totalWidth / (lw * 3));
+		var rx = x + firstInline.x;
+		pdfKitDoc.rect(rx, y, totalWidth, lw).clip();
+		pdfKitDoc.fillColor(group.decorationColor);
+		for (var ii = 0; ii < nbDots; ii++) {
+			pdfKitDoc.rect(rx, y - lw / 2, lw, lw).fill();
+			rx += (lw * 3);
+		}
+	} else if (group.decorationStyle === 'wavy') {
+		var sh = 0.7, sv = 1;
+		var nbWaves = Math.ceil(totalWidth / (sh * 2)) + 1;
+		var rwx = x + firstInline.x - 1;
+		pdfKitDoc.rect(x + firstInline.x, y - sv, totalWidth, y + sv).clip();
+		pdfKitDoc.lineWidth(0.24);
+		pdfKitDoc.moveTo(rwx, y);
+		for (var iii = 0; iii < nbWaves; iii++) {
+			pdfKitDoc.bezierCurveTo(rwx + sh, y - sv, rwx + sh * 2, y - sv, rwx + sh * 3, y)
+				.bezierCurveTo(rwx + sh * 4, y + sv, rwx + sh * 5, y + sv, rwx + sh * 6, y);
+			rwx += sh * 6;
+		}
+		pdfKitDoc.stroke(group.decorationColor);
+	} else {
+		pdfKitDoc.fillColor(group.decorationColor)
+			.rect(x + firstInline.x, y - lw / 2, totalWidth, lw)
+			.fill();
+	}
+	pdfKitDoc.restore();
+}
+
+function drawDecorations(line, x, y, pdfKitDoc) {
+	var groups = groupDecorations(line);
+	for (var i = 0, l = groups.length; i < l; i++) {
+		drawDecoration(groups[i], x, y, pdfKitDoc);
+	}
+}
+
+function drawBackground(line, x, y, pdfKitDoc) {
+	var height = line.getHeight();
+	for (var i = 0, l = line.inlines.length; i < l; i++) {
+		var inline = line.inlines[i];
+		if (!inline.background) {
+			continue;
+		}
+		var justifyShift = (inline.justifyShift || 0);
+		pdfKitDoc.fillColor(inline.background)
+			.rect(x + inline.x - justifyShift, y, inline.width + justifyShift, height)
+			.fill();
+	}
+}
+
+module.exports = {
+	drawBackground: drawBackground,
+	drawDecorations: drawDecorations
+};
+
+/***/ }),
+/* 306 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var __WEBPACK_AMD_DEFINE_RESULT__;/* FileSaver.js
+ * A saveAs() FileSaver implementation.
+ * 1.3.2
+ * 2016-06-16 18:25:19
+ *
+ * By Eli Grey, http://eligrey.com
+ * License: MIT
+ *   See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
+ */
+
+/*global self */
+/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
+
+/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
+
+var saveAs = saveAs || (function(view) {
+	"use strict";
+	// IE <10 is explicitly unsupported
+	if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
+		return;
+	}
+	var
+		  doc = view.document
+		  // only get URL when necessary in case Blob.js hasn't overridden it yet
+		, get_URL = function() {
+			return view.URL || view.webkitURL || view;
+		}
+		, save_link = doc ? doc.createElementNS("http://www.w3.org/1999/xhtml", "a") : []
+		, can_use_save_link = "download" in save_link
+		, click = function(node) {
+			var event = new MouseEvent("click");
+			node.dispatchEvent(event);
+		}
+		, is_safari = /constructor/i.test(view.HTMLElement) || view.safari
+		, is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent)
+		, throw_outside = function(ex) {
+			(view.setImmediate || view.setTimeout)(function() {
+				throw ex;
+			}, 0);
+		}
+		, force_saveable_type = "application/octet-stream"
+		// the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
+		, arbitrary_revoke_timeout = 1000 * 40 // in ms
+		, revoke = function(file) {
+			var revoker = function() {
+				if (typeof file === "string") { // file is an object URL
+					get_URL().revokeObjectURL(file);
+				} else { // file is a File
+					file.remove();
+				}
+			};
+			setTimeout(revoker, arbitrary_revoke_timeout);
+		}
+		, dispatch = function(filesaver, event_types, event) {
+			event_types = [].concat(event_types);
+			var i = event_types.length;
+			while (i--) {
+				var listener = filesaver["on" + event_types[i]];
+				if (typeof listener === "function") {
+					try {
+						listener.call(filesaver, event || filesaver);
+					} catch (ex) {
+						throw_outside(ex);
+					}
+				}
+			}
+		}
+		, auto_bom = function(blob) {
+			// prepend BOM for UTF-8 XML and text/* types (including HTML)
+			// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
+			if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
+				return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
+			}
+			return blob;
+		}
+		, FileSaver = function(blob, name, no_auto_bom) {
+			if (!no_auto_bom) {
+				blob = auto_bom(blob);
+			}
+			// First try a.download, then web filesystem, then object URLs
+			var
+				  filesaver = this
+				, type = blob.type
+				, force = type === force_saveable_type
+				, object_url
+				, dispatch_all = function() {
+					dispatch(filesaver, "writestart progress write writeend".split(" "));
+				}
+				// on any filesys errors revert to saving with object URLs
+				, fs_error = function() {
+					if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
+						// Safari doesn't allow downloading of blob urls
+						var reader = new FileReader();
+						reader.onloadend = function() {
+							var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
+							var popup = view.open(url, '_blank');
+							if(!popup) view.location.href = url;
+							url=undefined; // release reference before dispatching
+							filesaver.readyState = filesaver.DONE;
+							dispatch_all();
+						};
+						reader.readAsDataURL(blob);
+						filesaver.readyState = filesaver.INIT;
+						return;
+					}
+					// don't create more object URLs than needed
+					if (!object_url) {
+						object_url = get_URL().createObjectURL(blob);
+					}
+					if (force) {
+						view.location.href = object_url;
+					} else {
+						var opened = view.open(object_url, "_blank");
+						if (!opened) {
+							// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
+							view.location.href = object_url;
+						}
+					}
+					filesaver.readyState = filesaver.DONE;
+					dispatch_all();
+					revoke(object_url);
+				}
+			;
+			filesaver.readyState = filesaver.INIT;
+
+			if (can_use_save_link) {
+				object_url = get_URL().createObjectURL(blob);
+				setTimeout(function() {
+					save_link.href = object_url;
+					save_link.download = name;
+					click(save_link);
+					dispatch_all();
+					revoke(object_url);
+					filesaver.readyState = filesaver.DONE;
+				});
+				return;
+			}
+
+			fs_error();
+		}
+		, FS_proto = FileSaver.prototype
+		, saveAs = function(blob, name, no_auto_bom) {
+			return new FileSaver(blob, name || blob.name || "download", no_auto_bom);
+		}
+	;
+	// IE 10+ (native saveAs)
+	if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
+		return function(blob, name, no_auto_bom) {
+			name = name || blob.name || "download";
+
+			if (!no_auto_bom) {
+				blob = auto_bom(blob);
+			}
+			return navigator.msSaveOrOpenBlob(blob, name);
+		};
+	}
+
+	FS_proto.abort = function(){};
+	FS_proto.readyState = FS_proto.INIT = 0;
+	FS_proto.WRITING = 1;
+	FS_proto.DONE = 2;
+
+	FS_proto.error =
+	FS_proto.onwritestart =
+	FS_proto.onprogress =
+	FS_proto.onwrite =
+	FS_proto.onabort =
+	FS_proto.onerror =
+	FS_proto.onwriteend =
+		null;
+
+	return saveAs;
+}(
+	   typeof self !== "undefined" && self
+	|| typeof window !== "undefined" && window
+	|| this.content
+));
+// `self` is undefined in Firefox for Android content script context
+// while `this` is nsIContentFrameMessageManager
+// with an attribute `content` that corresponds to the window
+
+if (typeof module !== "undefined" && module.exports) {
+  module.exports.saveAs = saveAs;
+} else if (("function" !== "undefined" && __webpack_require__(307) !== null) && (__webpack_require__(308) !== null)) {
+  !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
+    return saveAs;
+  }).call(exports, __webpack_require__, exports, module),
+				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+}
+
+
+/***/ }),
+/* 307 */
+/***/ (function(module, exports) {
+
+module.exports = function() {
+	throw new Error("define cannot be used indirect");
+};
+
+
+/***/ }),
+/* 308 */
+/***/ (function(module, exports) {
+
+/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */
+module.exports = __webpack_amd_options__;
+
+/* WEBPACK VAR INJECTION */}.call(exports, {}))
+
+/***/ })
+/******/ ]);
+});
Index: public/vendors/dataTable/pdfmake-0.1.36/pdfmake.min.js
===================================================================
--- public/vendors/dataTable/pdfmake-0.1.36/pdfmake.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/pdfmake-0.1.36/pdfmake.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,39 @@
+/*! pdfmake v0.1.36, @license MIT, @link http://pdfmake.org */
+!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}("undefined"!=typeof self?self:this,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=122)}([function(t,e,n){"use strict";t.exports={isString:function(t){return"string"==typeof t||t instanceof String},isNumber:function(t){return"number"==typeof t||t instanceof Number},isBoolean:function(t){return"boolean"==typeof t},isArray:function(t){return Array.isArray(t)},isFunction:function(t){return"function"==typeof t},isObject:function(t){return null!==t&&"object"==typeof t},isNull:function(t){return null===t},isUndefined:function(t){return void 0===t},pack:function(){for(var t={},e=0,n=arguments.length;e<n;e++){var r=arguments[e];if(r)for(var i in r)r.hasOwnProperty(i)&&(t[i]=r[i])}return t},fontStringify:function(t,e){return"font"===t?"font":e},offsetVector:function(t,e,n){switch(t.type){case"ellipse":case"rect":t.x+=e,t.y+=n;break;case"line":t.x1+=e,t.x2+=e,t.y1+=n,t.y2+=n;break;case"polyline":for(var r=0,i=t.points.length;r<i;r++)t.points[r].x+=e,t.points[r].y+=n}}}},function(t,e,n){"use strict";(function(t){var r=n(124),i=n(125),a=n(76);function o(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,e){if(o()<e)throw new RangeError("Invalid typed array length");return l.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=l.prototype:(null===t&&(t=new l(e)),t.length=e),t}function l(t,e,n){if(!(l.TYPED_ARRAY_SUPPORT||this instanceof l))return new l(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return h(this,t)}return u(this,t,e,n)}function u(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r);l.TYPED_ARRAY_SUPPORT?(t=e).__proto__=l.prototype:t=f(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!l.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|p(e,n),i=(t=s(t,r)).write(e,n);i!==r&&(t=t.slice(0,i));return t}(t,e,n):function(t,e){if(l.isBuffer(e)){var n=0|d(e.length);return 0===(t=s(t,n)).length?t:(e.copy(t,0,0,n),t)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?s(t,0):f(t,e);if("Buffer"===e.type&&a(e.data))return f(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function c(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function h(t,e){if(c(e),t=s(t,e<0?0:0|d(e)),!l.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function f(t,e){var n=e.length<0?0:0|d(e.length);t=s(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function d(t){if(t>=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function p(t,e){if(l.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return F(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return D(t).length;default:if(r)return F(t).length;e=(""+e).toLowerCase(),r=!0}}function g(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function y(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=l.from(e,r)),l.isBuffer(e))return 0===e.length?-1:v(t,e,n,r,i);if("number"==typeof e)return e&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):v(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function v(t,e,n,r,i){var a,o=1,s=t.length,l=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,n/=2}function u(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var c=-1;for(a=n;a<s;a++)if(u(t,a)===u(e,-1===c?0:a-c)){if(-1===c&&(c=a),a-c+1===l)return c*o}else-1!==c&&(a-=a-c),c=-1}else for(n+l>s&&(n=s-l),a=n;a>=0;a--){for(var h=!0,f=0;f<l;f++)if(u(t,a+f)!==u(e,f)){h=!1;break}if(h)return a}return-1}function b(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var a=e.length;if(a%2!=0)throw new TypeError("Invalid hex string");r>a/2&&(r=a/2);for(var o=0;o<r;++o){var s=parseInt(e.substr(2*o,2),16);if(isNaN(s))return o;t[n+o]=s}return o}function m(t,e,n,r){return z(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function w(t,e,n){return 0===e&&n===t.length?r.fromByteArray(t):r.fromByteArray(t.slice(e,n))}function x(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var a,o,s,l,u=t[i],c=null,h=u>239?4:u>223?3:u>191?2:1;if(i+h<=n)switch(h){case 1:u<128&&(c=u);break;case 2:128==(192&(a=t[i+1]))&&(l=(31&u)<<6|63&a)>127&&(c=l);break;case 3:a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&(l=(15&u)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&u)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(c=l)}null===c?(c=65533,h=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),i+=h}return function(t){var e=t.length;if(e<=S)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=S));return n}(r)}e.Buffer=l,e.SlowBuffer=function(t){+t!=t&&(t=0);return l.alloc(+t)},e.INSPECT_MAX_BYTES=50,l.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=o(),l.poolSize=8192,l._augment=function(t){return t.__proto__=l.prototype,t},l.from=function(t,e,n){return u(null,t,e,n)},l.TYPED_ARRAY_SUPPORT&&(l.prototype.__proto__=Uint8Array.prototype,l.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&l[Symbol.species]===l&&Object.defineProperty(l,Symbol.species,{value:null,configurable:!0})),l.alloc=function(t,e,n){return r=null,a=e,o=n,c(i=t),i<=0?s(r,i):void 0!==a?"string"==typeof o?s(r,i).fill(a,o):s(r,i).fill(a):s(r,i);var r,i,a,o},l.allocUnsafe=function(t){return h(null,t)},l.allocUnsafeSlow=function(t){return h(null,t)},l.isBuffer=function(t){return!(null==t||!t._isBuffer)},l.compare=function(t,e){if(!l.isBuffer(t)||!l.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,a=Math.min(n,r);i<a;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},l.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(t,e){if(!a(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return l.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=l.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var o=t[n];if(!l.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(r,i),i+=o.length}return r},l.byteLength=p,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)g(this,e,e+1);return this},l.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)g(this,e,e+3),g(this,e+1,e+2);return this},l.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)g(this,e,e+7),g(this,e+1,e+6),g(this,e+2,e+5),g(this,e+3,e+4);return this},l.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?x(this,0,t):function(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return C(this,e,n);case"utf8":case"utf-8":return x(this,e,n);case"ascii":return _(this,e,n);case"latin1":case"binary":return k(this,e,n);case"base64":return w(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}.apply(this,arguments)},l.prototype.equals=function(t){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===l.compare(this,t)},l.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},l.prototype.compare=function(t,e,n,r,i){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var a=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(e>>>=0),s=Math.min(a,o),u=this.slice(r,i),c=t.slice(e,n),h=0;h<s;++h)if(u[h]!==c[h]){a=u[h],o=c[h];break}return a<o?-1:o<a?1:0},l.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},l.prototype.indexOf=function(t,e,n){return y(this,t,e,n,!0)},l.prototype.lastIndexOf=function(t,e,n){return y(this,t,e,n,!1)},l.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var a,o,s,l,u,c,h,f,d,p=!1;;)switch(r){case"hex":return b(this,t,e,n);case"utf8":case"utf-8":return f=e,d=n,z(F(t,(h=this).length-f),h,f,d);case"ascii":return m(this,t,e,n);case"latin1":case"binary":return m(this,t,e,n);case"base64":return l=this,u=e,c=n,z(D(t),l,u,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o=e,s=n,z(function(t,e){for(var n,r,i,a=[],o=0;o<t.length&&!((e-=2)<0);++o)n=t.charCodeAt(o),r=n>>8,i=n%256,a.push(i),a.push(r);return a}(t,(a=this).length-o),a,o,s);default:if(p)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),p=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var S=4096;function _(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function k(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function C(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",a=e;a<n;++a)i+=R(t[a]);return i}function A(t,e,n){for(var r=t.slice(e,n),i="",a=0;a<r.length;a+=2)i+=String.fromCharCode(r[a]+256*r[a+1]);return i}function P(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function E(t,e,n,r,i,a){if(!l.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<a)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function I(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,a=Math.min(t.length-n,2);i<a;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function T(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,a=Math.min(t.length-n,4);i<a;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function O(t,e,n,r,i,a){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function L(t,e,n,r,a){return a||O(t,0,n,4),i.write(t,e,n,r,23,4),n+4}function B(t,e,n,r,a){return a||O(t,0,n,8),i.write(t,e,n,r,52,8),n+8}l.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),l.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=l.prototype;else{var i=e-t;n=new l(i,void 0);for(var a=0;a<i;++a)n[a]=this[a+t]}return n},l.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||P(t,e,this.length);for(var r=this[t],i=1,a=0;++a<e&&(i*=256);)r+=this[t+a]*i;return r},l.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||P(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},l.prototype.readUInt8=function(t,e){return e||P(t,1,this.length),this[t]},l.prototype.readUInt16LE=function(t,e){return e||P(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUInt16BE=function(t,e){return e||P(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUInt32LE=function(t,e){return e||P(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUInt32BE=function(t,e){return e||P(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||P(t,e,this.length);for(var r=this[t],i=1,a=0;++a<e&&(i*=256);)r+=this[t+a]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*e)),r},l.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||P(t,e,this.length);for(var r=e,i=1,a=this[t+--r];r>0&&(i*=256);)a+=this[t+--r]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},l.prototype.readInt8=function(t,e){return e||P(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,e){e||P(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(t,e){e||P(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(t,e){return e||P(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,e){return e||P(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,e){return e||P(t,4,this.length),i.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,e){return e||P(t,4,this.length),i.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,e){return e||P(t,8,this.length),i.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,e){return e||P(t,8,this.length),i.read(this,t,!1,52,8)},l.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||E(this,t,e,n,Math.pow(2,8*n)-1,0);var i=1,a=0;for(this[e]=255&t;++a<n&&(i*=256);)this[e+a]=t/i&255;return e+n},l.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||E(this,t,e,n,Math.pow(2,8*n)-1,0);var i=n-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+n},l.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,1,255,0),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},l.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):I(this,t,e,!0),e+2},l.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):I(this,t,e,!1),e+2},l.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):T(this,t,e,!0),e+4},l.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):T(this,t,e,!1),e+4},l.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);E(this,t,e,n,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a<n&&(o*=256);)t<0&&0===s&&0!==this[e+a-1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+n},l.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);E(this,t,e,n,i-1,-i)}var a=n-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+n},l.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,1,127,-128),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},l.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):I(this,t,e,!0),e+2},l.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):I(this,t,e,!1),e+2},l.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):T(this,t,e,!0),e+4},l.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||E(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):T(this,t,e,!1),e+4},l.prototype.writeFloatLE=function(t,e,n){return L(this,t,e,!0,n)},l.prototype.writeFloatBE=function(t,e,n){return L(this,t,e,!1,n)},l.prototype.writeDoubleLE=function(t,e,n){return B(this,t,e,!0,n)},l.prototype.writeDoubleBE=function(t,e,n){return B(this,t,e,!1,n)},l.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,a=r-n;if(this===t&&n<e&&e<r)for(i=a-1;i>=0;--i)t[i+e]=this[i+n];else if(a<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i<a;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),e);return a},l.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!l.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var a;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(a=e;a<n;++a)this[a]=t;else{var o=l.isBuffer(t)?t:F(new l(t,r).toString()),s=o.length;for(a=0;a<n-e;++a)this[a+e]=o[a%s]}return this};var M=/[^+\/0-9A-Za-z-_]/g;function R(t){return t<16?"0"+t.toString(16):t.toString(16)}function F(t,e){var n;e=e||1/0;for(var r=t.length,i=null,a=[],o=0;o<r;++o){if((n=t.charCodeAt(o))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===r){(e-=3)>-1&&a.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&a.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;a.push(n)}else if(n<2048){if((e-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function D(t){return r.toByteArray(function(t){var e;if((t=(e=t,e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")).replace(M,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}}).call(e,n(7))},function(t,e){var n=t.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(10),i=n(2),a=n(20),o=n(13),s="prototype",l=function(t,e,n){var u,c,h,f=t&l.F,d=t&l.G,p=t&l.S,g=t&l.P,y=t&l.B,v=t&l.W,b=d?i:i[e]||(i[e]={}),m=b[s],w=d?r:p?r[e]:(r[e]||{})[s];for(u in d&&(n=e),n)(c=!f&&w&&void 0!==w[u])&&u in b||(h=c?w[u]:n[u],b[u]=d&&"function"!=typeof w[u]?n[u]:y&&c?a(h,r):v&&w[u]==h?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[s]=t[s],e}(h):g&&"function"==typeof h?a(Function.call,h):h,g&&((b.virtual||(b.virtual={}))[u]=h,t&l.R&&m&&!m[u]&&o(m,u,h)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,t.exports=l},function(t,e,n){var r=n(65)("wks"),i=n(38),a=n(10).Symbol,o="function"==typeof a;(t.exports=function(t){return r[t]||(r[t]=o&&a[t]||(o?a:i)("Symbol."+t))}).store=r},function(t,e,n){t.exports=!n(19)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(14),i=n(95),a=n(58),o=Object.defineProperty;e.f=n(5)?Object.defineProperty:function(t,e,n){if(r(t),e=a(e,!0),r(n),i)try{return o(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";(function(e,n){function r(){this.fileSystem={},this.baseSystem={}}function i(t){return 0===t.indexOf(n)&&(t=t.substring(n.length)),0===t.indexOf("/")&&(t=t.substring(1)),t}r.prototype.readFileSync=function(t){t=i(t);var n=this.baseSystem[t];if(n)return new e(n,"base64");var r=this.fileSystem[t];if(r)return r;throw"File '"+t+"' not found in virtual file system"},r.prototype.writeFileSync=function(t,e){this.fileSystem[i(t)]=e},r.prototype.bindFS=function(t){this.baseSystem=t||{}},t.exports=new r}).call(e,n(1).Buffer,"/")},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n,r,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var l,u=[],c=!1,h=-1;function f(){c&&l&&(c=!1,l.length?u=l.concat(u):h=-1,u.length&&d())}function d(){if(!c){var t=s(f);c=!0;for(var e=u.length;e;){for(l=u,u=[];++h<e;)l&&l[h].run();h=-1,e=u.length}l=null,c=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function g(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new p(t,e)),1!==u.length||c||s(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(t,e,n){(function(){var t,r;t=n(22).Number,e.resolveLength=function(e,n,r){var i;if("number"==typeof e?i=e:"function"==typeof e?i=e.call(r,r):r&&"string"==typeof e?i=r[e]:n&&e instanceof t&&(i=e.decode(n)),isNaN(i))throw new Error("Not a fixed size");return i},r=function(t){var e,n;for(e in null==t&&(t={}),this.enumerable=!0,this.configurable=!0,t)n=t[e],this[e]=n},e.PropertyDescriptor=r}).call(this)},function(t,e,n){var r=n(6),i=n(27);t.exports=n(5)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(9);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){t.exports=i;var r=n(31).EventEmitter;function i(){r.call(this)}n(21)(i,r),i.Readable=n(45),i.Writable=n(146),i.Duplex=n(147),i.Transform=n(148),i.PassThrough=n(149),i.Stream=i,i.prototype.pipe=function(t,e){var n=this;function i(e){t.writable&&!1===t.write(e)&&n.pause&&n.pause()}function a(){n.readable&&n.resume&&n.resume()}n.on("data",i),t.on("drain",a),t._isStdio||e&&!1===e.end||(n.on("end",s),n.on("close",l));var o=!1;function s(){o||(o=!0,t.end())}function l(){o||(o=!0,"function"==typeof t.destroy&&t.destroy())}function u(t){if(c(),0===r.listenerCount(this,"error"))throw t}function c(){n.removeListener("data",i),t.removeListener("drain",a),n.removeListener("end",s),n.removeListener("close",l),n.removeListener("error",u),t.removeListener("error",u),n.removeListener("end",c),n.removeListener("close",c),t.removeListener("close",c)}return n.on("error",u),t.on("error",u),n.on("end",c),n.on("close",c),t.on("close",c),t.emit("pipe",n),t}},function(t,e,n){"use strict";var r=n(32).nextTick,i=Object.keys||function(t){var e=[];for(var n in t)e.push(n);return e};t.exports=h;var a=n(25);a.inherits=n(21);var o=n(83),s=n(46);a.inherits(h,o);for(var l=i(s.prototype),u=0;u<l.length;u++){var c=l[u];h.prototype[c]||(h.prototype[c]=s.prototype[c])}function h(t){if(!(this instanceof h))return new h(t);o.call(this,t),s.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",f)}function f(){this.allowHalfOpen||this._writableState.ended||r(d,this)}function d(t){t.end()}Object.defineProperty(h.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}}),h.prototype._destroy=function(t,e){this.push(null),this.end(),r(e,t)}},function(t,e,n){var r=n(54),i=n(56);t.exports=function(t){return r(i(t))}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(97);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){(function(){var t,r,i,a={}.hasOwnProperty;t=n(51),i=function(){function e(t,e){this.type=t,this.endian=null!=e?e:"BE",this.fn=this.type,"8"!==this.type[this.type.length-1]&&(this.fn+=this.endian)}return e.prototype.size=function(){return t.TYPES[this.type]},e.prototype.decode=function(t){return t["read"+this.fn]()},e.prototype.encode=function(t,e){return t["write"+this.fn](e)},e}(),e.Number=i,e.uint8=new i("UInt8"),e.uint16be=e.uint16=new i("UInt16","BE"),e.uint16le=new i("UInt16","LE"),e.uint24be=e.uint24=new i("UInt24","BE"),e.uint24le=new i("UInt24","LE"),e.uint32be=e.uint32=new i("UInt32","BE"),e.uint32le=new i("UInt32","LE"),e.int8=new i("Int8"),e.int16be=e.int16=new i("Int16","BE"),e.int16le=new i("Int16","LE"),e.int24be=e.int24=new i("Int24","BE"),e.int24le=new i("Int24","LE"),e.int32be=e.int32=new i("Int32","BE"),e.int32le=new i("Int32","LE"),e.floatbe=e.float=new i("Float","BE"),e.floatle=new i("Float","LE"),e.doublebe=e.double=new i("Double","BE"),e.doublele=new i("Double","LE"),r=function(t){function e(t,n,r){null==r&&(r=t>>1),e.__super__.constructor.call(this,"Int"+t,n),this._point=1<<r}return function(t,e){for(var n in e)a.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(e,i),e.prototype.decode=function(t){return e.__super__.decode.call(this,t)/this._point},e.prototype.encode=function(t,n){return e.__super__.encode.call(this,t,n*this._point|0)},e}(),e.Fixed=r,e.fixed16be=e.fixed16=new r(16,"BE"),e.fixed16le=new r(16,"LE"),e.fixed32be=e.fixed32=new r(32,"BE"),e.fixed32le=new r(32,"LE")}).call(this)},function(t,e){t.exports={}},function(t,e,n){"use strict";var r=n(207)(!0);n(61)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){(function(t){function n(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===n(t)},e.isBoolean=function(t){return"boolean"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return"number"==typeof t},e.isString=function(t){return"string"==typeof t},e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return"[object RegExp]"===n(t)},e.isObject=function(t){return"object"==typeof t&&null!==t},e.isDate=function(t){return"[object Date]"===n(t)},e.isError=function(t){return"[object Error]"===n(t)||t instanceof Error},e.isFunction=function(t){return"function"==typeof t},e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=t.isBuffer}).call(e,n(1).Buffer)},function(t,e,n){(function(e){(function(){var r,i;r=function(){var t,n,r,a;function o(){}return r=function(t,e){return(Array(e+1).join("0")+t).slice(-e)},n=/[\n\r\t\b\f\(\)\\]/g,t={"\n":"\\n","\r":"\\r","\t":"\\t","\b":"\\b","\f":"\\f","\\":"\\\\","(":"\\(",")":"\\)"},a=function(t){var e,n,r,i,a;if(1&(i=t.length))throw new Error("Buffer length must be even");for(n=r=0,a=i-1;r<a;n=r+=2)e=t[n],t[n]=t[n+1],t[n+1]=e;return t},o.convert=function(s){var l,u,c,h,f,d,p,g,y;if("string"==typeof s)return"/"+s;if(s instanceof String){for(c=!1,u=h=0,p=(g=s).length;h<p;u=h+=1)if(g.charCodeAt(u)>127){c=!0;break}return c&&(g=a(new e("\ufeff"+g,"utf16le")).toString("binary")),"("+(g=g.replace(n,function(e){return t[e]}))+")"}if(e.isBuffer(s))return"<"+s.toString("hex")+">";if(s instanceof i)return s.toString();if(s instanceof Date)return"(D:"+r(s.getUTCFullYear(),4)+r(s.getUTCMonth()+1,2)+r(s.getUTCDate(),2)+r(s.getUTCHours(),2)+r(s.getUTCMinutes(),2)+r(s.getUTCSeconds(),2)+"Z)";if(Array.isArray(s))return"["+function(){var t,e,n;for(n=[],t=0,e=s.length;t<e;t++)l=s[t],n.push(o.convert(l));return n}().join(" ")+"]";if("[object Object]"==={}.toString.call(s)){for(f in d=["<<"],s)y=s[f],d.push("/"+f+" "+o.convert(y));return d.push(">>"),d.join("\n")}return"number"==typeof s?o.number(s):""+s},o.number=function(t){if(t>-1e21&&t<1e21)return Math.round(1e6*t)/1e6;throw new Error("unsupported number: "+t)},o}(),t.exports=r,i=n(87)}).call(this)}).call(e,n(1).Buffer)},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){n(201);for(var r=n(10),i=n(13),a=n(23),o=n(4)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l<s.length;l++){var u=s[l],c=r[u],h=c&&c.prototype;h&&!h[o]&&i(h,o,u),a[u]=a.Array}},function(t,e,n){var r=n(101),i=n(66);t.exports=Object.keys||function(t){return r(t,i)}},function(t,e,n){var r=n(56);t.exports=function(t){return Object(r(t))}},function(t,e){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(t){return"function"==typeof t}function i(t){return"object"==typeof t&&null!==t}function a(t){return void 0===t}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(t){if("number"!=typeof t||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},n.prototype.emit=function(t){var e,n,o,s,l,u;if(this._events||(this._events={}),"error"===t&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var c=new Error('Uncaught, unspecified "error" event. ('+e+")");throw c.context=e,c}if(a(n=this._events[t]))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(i(n))for(s=Array.prototype.slice.call(arguments,1),o=(u=n.slice()).length,l=0;l<o;l++)u[l].apply(this,s);return!0},n.prototype.on=n.prototype.addListener=function(t,e){var o;if(!r(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,r(e.listener)?e.listener:e),this._events[t]?i(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,i(this._events[t])&&!this._events[t].warned&&(o=a(this._maxListeners)?n.defaultMaxListeners:this._maxListeners)&&o>0&&this._events[t].length>o&&(this._events[t].warned=!0,console.trace),this},n.prototype.once=function(t,e){if(!r(e))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(t,i),n||(n=!0,e.apply(this,arguments))}return i.listener=e,this.on(t,i),this},n.prototype.removeListener=function(t,e){var n,a,o,s;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(o=(n=this._events[t]).length,a=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(i(n)){for(s=o;s-- >0;)if(n[s]===e||n[s].listener&&n[s].listener===e){a=s;break}if(a<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(a,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[t]))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){return this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,n){"use strict";(function(e){!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?t.exports={nextTick:function(t,n,r,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var a,o,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,n)});case 3:return e.nextTick(function(){t.call(null,n,r)});case 4:return e.nextTick(function(){t.call(null,n,r,i)});default:for(a=new Array(s-1),o=0;o<a.length;)a[o++]=arguments[o];return e.nextTick(function(){t.apply(null,a)})}}}:t.exports=e}).call(e,n(11))},function(t,e,n){var r=n(1),i=r.Buffer;function a(t,e){for(var n in t)e[n]=t[n]}function o(t,e,n){return i(t,e,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=r:(a(r,e),e.Buffer=o),a(i,o),o.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return i(t,e,n)},o.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var r=i(t);return void 0!==e?"string"==typeof n?r.fill(e,n):r.fill(e):r.fill(0),r},o.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i(t)},o.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r.SlowBuffer(t)}},function(t,e,n){"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;e.assign=function(t){for(var e,n,r=Array.prototype.slice.call(arguments,1);r.length;){var i=r.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(var a in i)e=i,n=a,Object.prototype.hasOwnProperty.call(e,n)&&(t[a]=i[a])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var i={arraySet:function(t,e,n,r,i){if(e.subarray&&t.subarray)t.set(e.subarray(n,n+r),i);else for(var a=0;a<r;a++)t[i+a]=e[n+a]},flattenChunks:function(t){var e,n,r,i,a,o;for(r=0,e=0,n=t.length;e<n;e++)r+=t[e].length;for(o=new Uint8Array(r),i=0,e=0,n=t.length;e<n;e++)a=t[e],o.set(a,i),i+=a.length;return o}},a={arraySet:function(t,e,n,r,i){for(var a=0;a<r;a++)t[i+a]=e[n+a]},flattenChunks:function(t){return[].concat.apply([],t)}};e.setTyped=function(t){t?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,i)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,a))},e.setTyped(r)},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(14),i=n(100),a=n(66),o=n(64)("IE_PROTO"),s=function(){},l="prototype",u=function(){var t,e=n(96)("iframe"),r=a.length;for(e.style.display="none",n(205).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),u=t.F;r--;)delete u[l][a[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(s[l]=r(t),n=new s,s[l]=null,n[o]=t):n=u(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(63),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e,n){var r=n(6).f,i=n(18),a=n(4)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},function(t,e,n){var r=n(38)("meta"),i=n(9),a=n(18),o=n(6).f,s=0,l=Object.isExtensible||function(){return!0},u=!n(19)(function(){return l(Object.preventExtensions({}))}),c=function(t){o(t,r,{value:{i:"O"+ ++s,w:{}}})},h=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!a(t,r)){if(!l(t))return"F";if(!e)return"E";c(t)}return t[r].i},getWeak:function(t,e){if(!a(t,r)){if(!l(t))return!0;if(!e)return!1;c(t)}return t[r].w},onFreeze:function(t){return u&&h.NEED&&l(t)&&!a(t,r)&&c(t),t}}},function(t,e,n){var r=n(20),i=n(111),a=n(112),o=n(14),s=n(37),l=n(67),u={},c={};(e=t.exports=function(t,e,n,h,f){var d,p,g,y,v=f?function(){return t}:l(t),b=r(n,h,e?2:1),m=0;if("function"!=typeof v)throw TypeError(t+" is not iterable!");if(a(v)){for(d=s(t.length);d>m;m++)if((y=e?b(o(p=t[m])[0],p[1]):b(t[m]))===u||y===c)return y}else for(g=v.call(t);!(p=g.next()).done;)if((y=i(g,b,p.value,e))===u||y===c)return y}).BREAK=u,e.RETURN=c},function(t,e,n){"use strict";var r=n(0).isString,i=n(0).isNumber,a=n(0).isObject,o=n(0).isArray,s=n(78),l=/^(\s)+/g,u=/(\s)+$/g;function c(t){this.fontProvider=t}function h(t,e){var n=[];if(t=t.replace(/\t/g,"    "),e)return n.push({text:t}),n;for(var r,i=new s(t),a=0;r=i.nextBreak();){var o=t.slice(a,r.position);r.required||o.match(/\r?\n$|\r$/)?(o=o.replace(/\r?\n$|\r$/,""),n.push({text:o,lineEnd:!0})):n.push({text:o}),a=r.position}return n}function f(t,e){for(var n in e=e||{},t=t||{})"text"!=n&&t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function d(t){return null==t?"":i(t)?t.toString():r(t)?t:t.toString()}function p(t,e,n,r){var i;return void 0!==t[n]&&null!==t[n]?t[n]:e?(e.auto(t,function(){i=e.getProperty(n)}),null!=i?i:r):r}function g(t,e,n,r,i){return e.widthOfString(t,n,i)+(r||0)*(t.length-1)}c.prototype.buildInlines=function(t,e){var n,r=function(t,e,n){var r=function(t,e){var n=[];o(t)||(t=[t]);t=function t(e){return e.reduce(function(e,n){var r=o(n.text)?t(n.text):n,i=[].concat(r).some(Array.isArray);return e.concat(i?t(r):r)},[])}(t);for(var r=0,i=t.length;r<i;r++){var s,l=t[r],u=null,c=p(l||{},e,"noWrap",!1);a(l)?(s=h(d(l.text),c),u=f(l)):s=h(d(l),c);for(var g=0,y=s.length;g<y;g++){var v={text:s[g].text};s[g].lineEnd&&(v.lineEnd=!0),f(u,v),n.push(v)}}return n}(e,n);if(r.length){var i=p(r[0],n,"leadingIndent",0);i&&(r[0].leadingCut=-i,r[0].leadingIndent=i)}return r.forEach(function(e){var r=p(e,n,"font","Roboto"),i=p(e,n,"fontSize",12),a=p(e,n,"fontFeatures",null),o=p(e,n,"bold",!1),s=p(e,n,"italics",!1),c=p(e,n,"color","black"),h=p(e,n,"decoration",null),f=p(e,n,"decorationColor",null),d=p(e,n,"decorationStyle",null),y=p(e,n,"background",null),v=p(e,n,"lineHeight",1),b=p(e,n,"characterSpacing",0),m=p(e,n,"link",null),w=p(e,n,"linkToPage",null),x=p(e,n,"noWrap",null),S=p(e,n,"preserveLeadingSpaces",!1),_=t.provideFont(r,o,s);e.width=g(e.text,_,i,b,a),e.height=_.lineHeight(i)*v;var k=e.text.match(l);e.leadingCut||(e.leadingCut=0),k&&!S&&(e.leadingCut+=g(k[0],_,i,b,a));var C=e.text.match(u);e.trailingCut=C?g(C[0],_,i,b,a):0,e.alignment=p(e,n,"alignment","left"),e.font=_,e.fontSize=i,e.fontFeatures=a,e.characterSpacing=b,e.color=c,e.decoration=h,e.decorationColor=f,e.decorationStyle=d,e.background=y,e.link=m,e.linkToPage=w,e.noWrap=x}),r}(this.fontProvider,t,e),i=0,s=0;return r.forEach(function(t){var e;i=Math.max(i,t.width-t.leadingCut-t.trailingCut),n||(n={width:0,leadingCut:t.leadingCut,trailingCut:0}),n.width+=t.width,n.trailingCut=t.trailingCut,s=Math.max(s,(e=n,Math.max(0,e.width-e.leadingCut-e.trailingCut))),t.lineEnd&&(n=null)}),p({},e,"noWrap",!1)&&(i=s),{items:r,minWidth:i,maxWidth:s}},c.prototype.sizeOfString=function(t,e){t=t?t.toString().replace(/\t/g,"    "):"";var n=p({},e,"font","Roboto"),r=p({},e,"fontSize",12),i=p({},e,"fontFeatures",null),a=p({},e,"bold",!1),o=p({},e,"italics",!1),s=p({},e,"lineHeight",1),l=p({},e,"characterSpacing",0),u=this.fontProvider.provideFont(n,a,o);return{width:g(t,u,r,l,i),height:u.lineHeight(r)*s,fontSize:r,lineHeight:s,ascender:u.ascender/1e3*r,descender:u.descender/1e3*r}},c.prototype.widthOfString=function(t,e,n,r,i){return g(t,e,n,r,i)},t.exports=c},function(t,e,n){var r,i;i=n(79),r=function(){function t(t){var e,n,r;(e="function"==typeof t.readUInt32BE&&"function"==typeof t.slice)||t instanceof Uint8Array?(e?(this.highStart=t.readUInt32BE(0),this.errorValue=t.readUInt32BE(4),n=t.readUInt32BE(8),t=t.slice(12)):(r=new DataView(t.buffer),this.highStart=r.getUint32(0),this.errorValue=r.getUint32(4),n=r.getUint32(8),t=t.subarray(12)),t=i(t,new Uint8Array(n)),t=i(t,new Uint8Array(n)),this.data=new Uint32Array(t.buffer)):(this.data=t.data,this.highStart=t.highStart,this.errorValue=t.errorValue)}return 11,5,6,32,64,63,2,32,31,2048,32,2080,2080,32,2112,4,t.prototype.get=function(t){var e;return t<0||t>1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>5]<<2)+(31&t),this.data[e]):t<=65535?(e=(this.data[2048+(t-55296>>5)]<<2)+(31&t),this.data[e]):t<this.highStart?(e=this.data[2080+(t>>11)],e=((e=this.data[e+(t>>5&63)])<<2)+(31&t),this.data[e]):this.data[this.data.length-4]},t}(),t.exports=r},function(t,e,n){"use strict";var r=n(0).isString;function i(t){return"auto"===t.width}function a(t){return null===t.width||void 0===t.width||"*"===t.width||"star"===t.width}t.exports={buildColumnWidths:function(t,e){var n=[],o=0,s=0,l=[],u=0,c=0,h=[],f=e;t.forEach(function(t){i(t)?(n.push(t),o+=t._minWidth,s+=t._maxWidth):a(t)?(l.push(t),u=Math.max(u,t._minWidth),c=Math.max(c,t._maxWidth)):h.push(t)}),h.forEach(function(t){r(t.width)&&/\d+%/.test(t.width)&&(t.width=parseFloat(t.width)*f/100),t.width<t._minWidth&&t.elasticWidth?t._calcWidth=t._minWidth:t._calcWidth=t.width,e-=t._calcWidth});var d=o+u*l.length,p=s+c*l.length;if(d>=e)n.forEach(function(t){t._calcWidth=t._minWidth}),l.forEach(function(t){t._calcWidth=u});else{if(p<e)n.forEach(function(t){t._calcWidth=t._maxWidth,e-=t._calcWidth});else{var g=e-d,y=p-d;n.forEach(function(t){var n=t._maxWidth-t._minWidth;t._calcWidth=t._minWidth+n*g/y,e-=t._calcWidth})}if(l.length>0){var v=e/l.length;l.forEach(function(t){t._calcWidth=v})}}},measureMinMax:function(t){for(var e={min:0,max:0},n={min:0,max:0},r=0,o=0,s=t.length;o<s;o++){var l=t[o];a(l)?(n.min=Math.max(n.min,l._minWidth),n.max=Math.max(n.max,l._maxWidth),r++):i(l)?(e.min+=l._minWidth,e.max+=l._maxWidth):(e.min+=void 0!==l.width&&l.width||l._minWidth,e.max+=void 0!==l.width&&l.width||l._maxWidth)}return r&&(e.min+=r*n.min,e.max+=r*n.max),e},isAutoColumn:i,isStarColumn:a}},function(t,e,n){(e=t.exports=n(83)).Stream=e,e.Readable=e,e.Writable=n(46),e.Duplex=n(16),e.Transform=n(86),e.PassThrough=n(145)},function(t,e,n){"use strict";(function(e,r,i){var a=n(32).nextTick;function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,n){var r=t.entry;t.entry=null;for(;r;){var i=r.callback;e.pendingcb--,i(n),r=r.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}t.exports=b;var s,l=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?r:a;b.WritableState=v;var u=n(25);u.inherits=n(21);var c={deprecate:n(144)},h=n(84),f=n(33).Buffer,d=i.Uint8Array||function(){};var p,g=n(85);function y(){}function v(t,e){s=s||n(16),t=t||{};var r=e instanceof s;this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,u=t.writableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(u||0===u)?u:c,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===t.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var n=t._writableState,r=n.sync,i=n.writecb;if(d=n,d.writing=!1,d.writecb=null,d.length-=d.writelen,d.writelen=0,e)s=t,u=n,c=r,h=e,f=i,--u.pendingcb,c?(a(f,h),a(k,s,u),s._writableState.errorEmitted=!0,s.emit("error",h)):(f(h),s._writableState.errorEmitted=!0,s.emit("error",h),k(s,u));else{var o=S(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||x(t,n),r?l(w,t,n,o,i):w(t,n,o,i)}var s,u,c,h,f;var d}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function b(t){if(s=s||n(16),!(p.call(b,this)||this instanceof s))return new b(t);this._writableState=new v(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function m(t,e,n,r,i,a,o){e.writelen=r,e.writecb=o,e.writing=!0,e.sync=!0,n?t._writev(i,e.onwrite):t._write(i,a,e.onwrite),e.sync=!1}function w(t,e,n,r){var i,a;n||(i=t,0===(a=e).length&&a.needDrain&&(a.needDrain=!1,i.emit("drain"))),e.pendingcb--,r(),k(t,e)}function x(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var r=e.bufferedRequestCount,i=new Array(r),a=e.corkedRequestsFree;a.entry=n;for(var s=0,l=!0;n;)i[s]=n,n.isBuf||(l=!1),n=n.next,s+=1;i.allBuffers=l,m(t,e,!0,e.length,i,"",a.finish),e.pendingcb++,e.lastBufferedRequest=null,a.next?(e.corkedRequestsFree=a.next,a.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;n;){var u=n.chunk,c=n.encoding,h=n.callback;if(m(t,e,!1,e.objectMode?1:u.length,u,c,h),n=n.next,e.bufferedRequestCount--,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequest=n,e.bufferProcessing=!1}function S(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function _(t,e){t._final(function(n){e.pendingcb--,n&&t.emit("error",n),e.prefinished=!0,t.emit("prefinish"),k(t,e)})}function k(t,e){var n,r,i=S(e);return i&&(n=t,(r=e).prefinished||r.finalCalled||("function"==typeof n._final?(r.pendingcb++,r.finalCalled=!0,a(_,n,r)):(r.prefinished=!0,n.emit("prefinish"))),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),i}u.inherits(b,h),v.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(v.prototype,"buffer",{get:c.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(b,Symbol.hasInstance,{value:function(t){return!!p.call(this,t)||this===b&&(t&&t._writableState instanceof v)}})):p=function(t){return t instanceof this},b.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},b.prototype.write=function(t,e,n){var r,i,o,s,l,u,c,h,p,g,v,b=this._writableState,w=!1,x=!b.objectMode&&(r=t,f.isBuffer(r)||r instanceof d);return x&&!f.isBuffer(t)&&(i=t,t=f.from(i)),"function"==typeof e&&(n=e,e=null),x?e="buffer":e||(e=b.defaultEncoding),"function"!=typeof n&&(n=y),b.ended?(p=this,g=n,v=new Error("write after end"),p.emit("error",v),a(g,v)):(x||(o=this,s=b,u=n,c=!0,h=!1,null===(l=t)?h=new TypeError("May not write null values to stream"):"string"==typeof l||void 0===l||s.objectMode||(h=new TypeError("Invalid non-string/buffer chunk")),h&&(o.emit("error",h),a(u,h),c=!1),c))&&(b.pendingcb++,w=function(t,e,n,r,i,a){if(!n){var o=function(t,e,n){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=f.from(e,n));return e}(e,r,i);r!==o&&(n=!0,i="buffer",r=o)}var s=e.objectMode?1:r.length;e.length+=s;var l=e.length<e.highWaterMark;l||(e.needDrain=!0);if(e.writing||e.corked){var u=e.lastBufferedRequest;e.lastBufferedRequest={chunk:r,encoding:i,isBuf:n,callback:a,next:null},u?u.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else m(t,e,!1,s,r,i,a);return l}(this,b,x,t,e,n)),w},b.prototype.cork=function(){this._writableState.corked++},b.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||x(this,t))},b.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},b.prototype._write=function(t,e,n){n(new Error("_write() is not implemented"))},b.prototype._writev=null,b.prototype.end=function(t,e,n){var r=this._writableState;"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(t,e,n){e.ending=!0,k(t,e),n&&(e.finished?a(n):t.once("finish",n));e.ended=!0,t.writable=!1}(this,r,n)},Object.defineProperty(b.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),b.prototype.destroy=g.destroy,b.prototype._undestroy=g.undestroy,b.prototype._destroy=function(t,e){this.end(),e(t)}}).call(e,n(11),n(142).setImmediate,n(7))},function(t,e,n){"use strict";var r=n(33).Buffer,i=r.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(r.isEncoding===i||!i(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=l,this.end=u,e=4;break;case"utf8":this.fillLast=s,e=4;break;case"base64":this.text=c,this.end=h,e=3;break;default:return this.write=f,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:-1}function s(t){var e=this.lastTotal-this.lastNeed,n=function(t,e,n){if(128!=(192&e[0]))return t.lastNeed=0,"�".repeat(n);if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�".repeat(n+1);if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�".repeat(n+2)}}(this,t,e);return void 0!==n?n:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var n=t.toString("utf16le",e);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function u(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,n)}return e}function c(t,e){var n=(t.length-e)%3;return 0===n?t.toString("base64",e):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-n))}function h(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function f(t){return t.toString(this.encoding)}function d(t){return t&&t.length?this.write(t):""}e.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return"";var e,n;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<t.length?e?e+this.text(t,n):this.text(t,n):e||""},a.prototype.end=function(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�".repeat(this.lastTotal-this.lastNeed):e},a.prototype.text=function(t,e){var n=function(t,e,n){var r=e.length-1;if(r<n)return 0;var i=o(e[r]);if(i>=0)return i>0&&(t.lastNeed=i-1),i;if(--r<n)return 0;if((i=o(e[r]))>=0)return i>0&&(t.lastNeed=i-2),i;if(--r<n)return 0;if((i=o(e[r]))>=0)return i>0&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=n;var r=t.length-(n-this.lastNeed);return t.copy(this.lastChar,0,r),t.toString("utf8",e,r)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,n){"use strict";(function(t){var r=n(1).Buffer,i=n(15).Transform,a=n(150),o=n(49),s=n(88).ok,l=n(1).kMaxLength,u="Cannot create final Buffer. It would be larger than 0x"+l.toString(16)+" bytes";a.Z_MIN_WINDOWBITS=8,a.Z_MAX_WINDOWBITS=15,a.Z_DEFAULT_WINDOWBITS=15,a.Z_MIN_CHUNK=64,a.Z_MAX_CHUNK=1/0,a.Z_DEFAULT_CHUNK=16384,a.Z_MIN_MEMLEVEL=1,a.Z_MAX_MEMLEVEL=9,a.Z_DEFAULT_MEMLEVEL=8,a.Z_MIN_LEVEL=-1,a.Z_MAX_LEVEL=9,a.Z_DEFAULT_LEVEL=a.Z_DEFAULT_COMPRESSION;for(var c=Object.keys(a),h=0;h<c.length;h++){var f=c[h];f.match(/^Z/)&&Object.defineProperty(e,f,{enumerable:!0,value:a[f],writable:!1})}for(var d={Z_OK:a.Z_OK,Z_STREAM_END:a.Z_STREAM_END,Z_NEED_DICT:a.Z_NEED_DICT,Z_ERRNO:a.Z_ERRNO,Z_STREAM_ERROR:a.Z_STREAM_ERROR,Z_DATA_ERROR:a.Z_DATA_ERROR,Z_MEM_ERROR:a.Z_MEM_ERROR,Z_BUF_ERROR:a.Z_BUF_ERROR,Z_VERSION_ERROR:a.Z_VERSION_ERROR},p=Object.keys(d),g=0;g<p.length;g++){var y=p[g];d[d[y]]=y}function v(t,e,n){var i=[],a=0;function o(){for(var e;null!==(e=t.read());)i.push(e),a+=e.length;t.once("readable",o)}function s(){var e,o=null;a>=l?o=new RangeError(u):e=r.concat(i,a),i=[],t.close(),n(o,e)}t.on("error",function(e){t.removeListener("end",s),t.removeListener("readable",o),n(e)}),t.on("end",s),t.end(e),o()}function b(t,e){if("string"==typeof e&&(e=r.from(e)),!r.isBuffer(e))throw new TypeError("Not a string or buffer");var n=t._finishFlushFlag;return t._processChunk(e,n)}function m(t){if(!(this instanceof m))return new m(t);P.call(this,t,a.DEFLATE)}function w(t){if(!(this instanceof w))return new w(t);P.call(this,t,a.INFLATE)}function x(t){if(!(this instanceof x))return new x(t);P.call(this,t,a.GZIP)}function S(t){if(!(this instanceof S))return new S(t);P.call(this,t,a.GUNZIP)}function _(t){if(!(this instanceof _))return new _(t);P.call(this,t,a.DEFLATERAW)}function k(t){if(!(this instanceof k))return new k(t);P.call(this,t,a.INFLATERAW)}function C(t){if(!(this instanceof C))return new C(t);P.call(this,t,a.UNZIP)}function A(t){return t===a.Z_NO_FLUSH||t===a.Z_PARTIAL_FLUSH||t===a.Z_SYNC_FLUSH||t===a.Z_FULL_FLUSH||t===a.Z_FINISH||t===a.Z_BLOCK}function P(t,n){var o=this;if(this._opts=t=t||{},this._chunkSize=t.chunkSize||e.Z_DEFAULT_CHUNK,i.call(this,t),t.flush&&!A(t.flush))throw new Error("Invalid flush flag: "+t.flush);if(t.finishFlush&&!A(t.finishFlush))throw new Error("Invalid flush flag: "+t.finishFlush);if(this._flushFlag=t.flush||a.Z_NO_FLUSH,this._finishFlushFlag=void 0!==t.finishFlush?t.finishFlush:a.Z_FINISH,t.chunkSize&&(t.chunkSize<e.Z_MIN_CHUNK||t.chunkSize>e.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+t.chunkSize);if(t.windowBits&&(t.windowBits<e.Z_MIN_WINDOWBITS||t.windowBits>e.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+t.windowBits);if(t.level&&(t.level<e.Z_MIN_LEVEL||t.level>e.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+t.level);if(t.memLevel&&(t.memLevel<e.Z_MIN_MEMLEVEL||t.memLevel>e.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+t.memLevel);if(t.strategy&&t.strategy!=e.Z_FILTERED&&t.strategy!=e.Z_HUFFMAN_ONLY&&t.strategy!=e.Z_RLE&&t.strategy!=e.Z_FIXED&&t.strategy!=e.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+t.strategy);if(t.dictionary&&!r.isBuffer(t.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new a.Zlib(n);var s=this;this._hadError=!1,this._handle.onerror=function(t,n){E(s),s._hadError=!0;var r=new Error(t);r.errno=n,r.code=e.codes[n],s.emit("error",r)};var l=e.Z_DEFAULT_COMPRESSION;"number"==typeof t.level&&(l=t.level);var u=e.Z_DEFAULT_STRATEGY;"number"==typeof t.strategy&&(u=t.strategy),this._handle.init(t.windowBits||e.Z_DEFAULT_WINDOWBITS,l,t.memLevel||e.Z_DEFAULT_MEMLEVEL,u,t.dictionary),this._buffer=r.allocUnsafe(this._chunkSize),this._offset=0,this._level=l,this._strategy=u,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!o._handle},configurable:!0,enumerable:!0})}function E(e,n){n&&t.nextTick(n),e._handle&&(e._handle.close(),e._handle=null)}function I(t){t.emit("close")}Object.defineProperty(e,"codes",{enumerable:!0,value:Object.freeze(d),writable:!1}),e.Deflate=m,e.Inflate=w,e.Gzip=x,e.Gunzip=S,e.DeflateRaw=_,e.InflateRaw=k,e.Unzip=C,e.createDeflate=function(t){return new m(t)},e.createInflate=function(t){return new w(t)},e.createDeflateRaw=function(t){return new _(t)},e.createInflateRaw=function(t){return new k(t)},e.createGzip=function(t){return new x(t)},e.createGunzip=function(t){return new S(t)},e.createUnzip=function(t){return new C(t)},e.deflate=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new m(e),t,n)},e.deflateSync=function(t,e){return b(new m(e),t)},e.gzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new x(e),t,n)},e.gzipSync=function(t,e){return b(new x(e),t)},e.deflateRaw=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new _(e),t,n)},e.deflateRawSync=function(t,e){return b(new _(e),t)},e.unzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new C(e),t,n)},e.unzipSync=function(t,e){return b(new C(e),t)},e.inflate=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new w(e),t,n)},e.inflateSync=function(t,e){return b(new w(e),t)},e.gunzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new S(e),t,n)},e.gunzipSync=function(t,e){return b(new S(e),t)},e.inflateRaw=function(t,e,n){return"function"==typeof e&&(n=e,e={}),v(new k(e),t,n)},e.inflateRawSync=function(t,e){return b(new k(e),t)},o.inherits(P,i),P.prototype.params=function(n,r,i){if(n<e.Z_MIN_LEVEL||n>e.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+n);if(r!=e.Z_FILTERED&&r!=e.Z_HUFFMAN_ONLY&&r!=e.Z_RLE&&r!=e.Z_FIXED&&r!=e.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+r);if(this._level!==n||this._strategy!==r){var o=this;this.flush(a.Z_SYNC_FLUSH,function(){s(o._handle,"zlib binding closed"),o._handle.params(n,r),o._hadError||(o._level=n,o._strategy=r,i&&i())})}else t.nextTick(i)},P.prototype.reset=function(){return s(this._handle,"zlib binding closed"),this._handle.reset()},P.prototype._flush=function(t){this._transform(r.alloc(0),"",t)},P.prototype.flush=function(e,n){var i=this,o=this._writableState;("function"==typeof e||void 0===e&&!n)&&(n=e,e=a.Z_FULL_FLUSH),o.ended?n&&t.nextTick(n):o.ending?n&&this.once("end",n):o.needDrain?n&&this.once("drain",function(){return i.flush(e,n)}):(this._flushFlag=e,this.write(r.alloc(0),"",n))},P.prototype.close=function(e){E(this,e),t.nextTick(I,this)},P.prototype._transform=function(t,e,n){var i,o=this._writableState,s=(o.ending||o.ended)&&(!t||o.length===t.length);return null===t||r.isBuffer(t)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,t.length>=o.length&&(this._flushFlag=this._opts.flush||a.Z_NO_FLUSH)),void this._processChunk(t,i,n)):n(new Error("zlib binding closed")):n(new Error("invalid input"))},P.prototype._processChunk=function(t,e,n){var i=t&&t.length,a=this._chunkSize-this._offset,o=0,c=this,h="function"==typeof n;if(!h){var f,d=[],p=0;this.on("error",function(t){f=t}),s(this._handle,"zlib binding closed");do{var g=this._handle.writeSync(e,t,o,i,this._buffer,this._offset,a)}while(!this._hadError&&b(g[0],g[1]));if(this._hadError)throw f;if(p>=l)throw E(this),new RangeError(u);var y=r.concat(d,p);return E(this),y}s(this._handle,"zlib binding closed");var v=this._handle.write(e,t,o,i,this._buffer,this._offset,a);function b(l,u){if(this&&(this.buffer=null,this.callback=null),!c._hadError){var f=a-u;if(s(f>=0,"have should not go down"),f>0){var g=c._buffer.slice(c._offset,c._offset+f);c._offset+=f,h?c.push(g):(d.push(g),p+=g.length)}if((0===u||c._offset>=c._chunkSize)&&(a=c._chunkSize,c._offset=0,c._buffer=r.allocUnsafe(c._chunkSize)),0===u){if(o+=i-l,i=l,!h)return!0;var y=c._handle.write(e,t,o,i,c._buffer,c._offset,c._chunkSize);return y.callback=b,void(y.buffer=t)}if(!h)return!1;n()}}v.buffer=t,v.callback=b},o.inherits(m,P),o.inherits(w,P),o.inherits(x,P),o.inherits(S,P),o.inherits(_,P),o.inherits(k,P),o.inherits(C,P)}).call(e,n(11))},function(t,e,n){(function(t,r){var i=/%[sdj%]/g;e.format=function(t){if(!v(t)){for(var e=[],n=0;n<arguments.length;n++)e.push(s(arguments[n]));return e.join(" ")}n=1;for(var r=arguments,a=r.length,o=String(t).replace(i,function(t){if("%%"===t)return"%";if(n>=a)return t;switch(t){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(t){return"[Circular]"}default:return t}}),l=r[n];n<a;l=r[++n])g(l)||!w(l)?o+=" "+l:o+=" "+s(l);return o},e.deprecate=function(n,i){if(b(t.process))return function(){return e.deprecate(n,i).apply(this,arguments)};if(!0===r.noDeprecation)return n;var a=!1;return function(){if(!a){if(r.throwDeprecation)throw new Error(i);r.traceDeprecation,a=!0}return n.apply(this,arguments)}};var a,o={};function s(t,n){var r={seen:[],stylize:u};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),p(n)?r.showHidden=n:n&&e._extend(r,n),b(r.showHidden)&&(r.showHidden=!1),b(r.depth)&&(r.depth=2),b(r.colors)&&(r.colors=!1),b(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=l),c(r,t,r.depth)}function l(t,e){var n=s.styles[e];return n?"["+s.colors[n][0]+"m"+t+"["+s.colors[n][1]+"m":t}function u(t,e){return t}function c(t,n,r){if(t.customInspect&&n&&_(n.inspect)&&n.inspect!==e.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,t);return v(i)||(i=c(t,i,r)),i}var a=function(t,e){if(b(e))return t.stylize("undefined","undefined");if(v(e)){var n="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(n,"string")}if(y(e))return t.stylize(""+e,"number");if(p(e))return t.stylize(""+e,"boolean");if(g(e))return t.stylize("null","null")}(t,n);if(a)return a;var o,s=Object.keys(n),l=(o={},s.forEach(function(t,e){o[t]=!0}),o);if(t.showHidden&&(s=Object.getOwnPropertyNames(n)),S(n)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return h(n);if(0===s.length){if(_(n)){var u=n.name?": "+n.name:"";return t.stylize("[Function"+u+"]","special")}if(m(n))return t.stylize(RegExp.prototype.toString.call(n),"regexp");if(x(n))return t.stylize(Date.prototype.toString.call(n),"date");if(S(n))return h(n)}var w,k="",A=!1,P=["{","}"];(d(n)&&(A=!0,P=["[","]"]),_(n))&&(k=" [Function"+(n.name?": "+n.name:"")+"]");return m(n)&&(k=" "+RegExp.prototype.toString.call(n)),x(n)&&(k=" "+Date.prototype.toUTCString.call(n)),S(n)&&(k=" "+h(n)),0!==s.length||A&&0!=n.length?r<0?m(n)?t.stylize(RegExp.prototype.toString.call(n),"regexp"):t.stylize("[Object]","special"):(t.seen.push(n),w=A?function(t,e,n,r,i){for(var a=[],o=0,s=e.length;o<s;++o)C(e,String(o))?a.push(f(t,e,n,r,String(o),!0)):a.push("");return i.forEach(function(i){i.match(/^\d+$/)||a.push(f(t,e,n,r,i,!0))}),a}(t,n,r,l,s):s.map(function(e){return f(t,n,r,l,e,A)}),t.seen.pop(),function(t,e,n){if(t.reduce(function(t,e){return 0,e.indexOf("\n")>=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return n[0]+(""===e?"":e+"\n ")+" "+t.join(",\n  ")+" "+n[1];return n[0]+e+" "+t.join(", ")+" "+n[1]}(w,k,P)):P[0]+k+P[1]}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function f(t,e,n,r,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?s=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(s=t.stylize("[Setter]","special")),C(r,i)||(o="["+i+"]"),s||(t.seen.indexOf(l.value)<0?(s=g(n)?c(t,l.value,null):c(t,l.value,n-1)).indexOf("\n")>-1&&(s=a?s.split("\n").map(function(t){return"  "+t}).join("\n").substr(2):"\n"+s.split("\n").map(function(t){return"   "+t}).join("\n")):s=t.stylize("[Circular]","special")),b(o)){if(a&&i.match(/^\d+$/))return s;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=t.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=t.stylize(o,"string"))}return o+": "+s}function d(t){return Array.isArray(t)}function p(t){return"boolean"==typeof t}function g(t){return null===t}function y(t){return"number"==typeof t}function v(t){return"string"==typeof t}function b(t){return void 0===t}function m(t){return w(t)&&"[object RegExp]"===k(t)}function w(t){return"object"==typeof t&&null!==t}function x(t){return w(t)&&"[object Date]"===k(t)}function S(t){return w(t)&&("[object Error]"===k(t)||t instanceof Error)}function _(t){return"function"==typeof t}function k(t){return Object.prototype.toString.call(t)}e.debuglog=function(t){if(b(a)&&(a=r.env.NODE_DEBUG||""),t=t.toUpperCase(),!o[t])if(new RegExp("\\b"+t+"\\b","i").test(a)){r.pid;o[t]=function(){e.format.apply(e,arguments)}}else o[t]=function(){};return o[t]},e.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=d,e.isBoolean=p,e.isNull=g,e.isNullOrUndefined=function(t){return null==t},e.isNumber=y,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=b,e.isRegExp=m,e.isObject=w,e.isDate=x,e.isError=S,e.isFunction=_,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=n(151);function C(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){},e.inherits=n(152),e._extend=function(t,e){if(!e||!w(e))return t;for(var n=Object.keys(e),r=n.length;r--;)t[n[r]]=e[n[r]];return t}}).call(e,n(7),n(11))},function(t,e,n){(function(e){(function(){var r,i,a,o;o=n(167),i=function(){function t(){throw new Error("Cannot construct a PDFFont directly.")}return t.open=function(t,n,i,s){var l;if("string"==typeof n){if(a.isStandardFont(n))return new a(t,n,s);l=o.openSync(n,i)}else e.isBuffer(n)?l=o.create(n,i):n instanceof Uint8Array?l=o.create(new e(n),i):n instanceof ArrayBuffer&&(l=o.create(new e(new Uint8Array(n)),i));if(null==l)throw new Error("Not a supported font format or standard PDF font.");return new r(t,l,s)},t.prototype.encode=function(t){throw new Error("Must be implemented by subclasses")},t.prototype.widthOfString=function(t){throw new Error("Must be implemented by subclasses")},t.prototype.ref=function(){return null!=this.dictionary?this.dictionary:this.dictionary=this.document.ref()},t.prototype.finalize=function(){if(!this.embedded&&null!=this.dictionary)return this.embed(),this.embedded=!0},t.prototype.embed=function(){throw new Error("Must be implemented by subclasses")},t.prototype.lineHeight=function(t,e){var n;return null==e&&(e=!1),n=e?this.lineGap:0,(this.ascender+n-this.descender)/1e3*t},t}(),t.exports=i,a=n(292),r=n(294)}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){(function(e){(function(){var r,i;try{i=n(52)}catch(t){}r=function(){var t;function n(t){this.buffer=t,this.pos=0,this.length=this.buffer.length}for(t in n.TYPES={UInt8:1,UInt16:2,UInt24:3,UInt32:4,Int8:1,Int16:2,Int24:3,Int32:4,Float:4,Double:8},e.prototype)"read"===t.slice(0,4)&&function(t){var e;e=n.TYPES[t.replace(/read|[BL]E/g,"")],n.prototype[t]=function(){var n;return n=this.buffer[t](this.pos),this.pos+=e,n}}(t);return n.prototype.readString=function(t,n){var r,a,o,s,l;switch(null==n&&(n="ascii"),n){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.buffer.toString(n,this.pos,this.pos+=t);case"utf16be":for(o=s=0,l=(r=new e(this.readBuffer(t))).length-1;s<l;o=s+=2)a=r[o],r[o]=r[o+1],r[o+1]=a;return r.toString("utf16le");default:if(r=this.readBuffer(t),i)try{return i.decode(r,n)}catch(t){}return r}},n.prototype.readBuffer=function(t){return this.buffer.slice(this.pos,this.pos+=t)},n.prototype.readUInt24BE=function(){return(this.readUInt16BE()<<8)+this.readUInt8()},n.prototype.readUInt24LE=function(){return this.readUInt16LE()+(this.readUInt8()<<16)},n.prototype.readInt24BE=function(){return(this.readInt16BE()<<8)+this.readUInt8()},n.prototype.readInt24LE=function(){return this.readUInt16LE()+(this.readInt8()<<16)},n}(),t.exports=r}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){"use strict";(function(e){var r=n(1).Buffer,i=n(170),a=t.exports;a.encodings=null,a.defaultCharUnicode="�",a.defaultCharSingleByte="?",a.encode=function(t,e,n){t=""+(t||"");var i=a.getEncoder(e,n),o=i.write(t),s=i.end();return s&&s.length>0?r.concat([o,s]):o},a.decode=function(t,e,n){"string"==typeof t&&(a.skipDecodeWarning||(a.skipDecodeWarning=!0),t=new r(""+(t||""),"binary"));var i=a.getDecoder(e,n),o=i.write(t),s=i.end();return s?o+s:o},a.encodingExists=function(t){try{return a.getCodec(t),!0}catch(t){return!1}},a.toEncoding=a.encode,a.fromEncoding=a.decode,a._codecDataCache={},a.getCodec=function(t){a.encodings||(a.encodings=n(171));for(var e=(""+t).toLowerCase().replace(/[^0-9a-z]|:\d{4}$/g,""),r={};;){var i=a._codecDataCache[e];if(i)return i;var o=a.encodings[e];switch(typeof o){case"string":e=o;break;case"object":for(var s in o)r[s]=o[s];r.encodingName||(r.encodingName=e),e=o.type;break;case"function":return r.encodingName||(r.encodingName=e),i=new o(r,a),a._codecDataCache[r.encodingName]=i,i;default:throw new Error("Encoding not recognized: '"+t+"' (searched as: '"+e+"')")}}},a.getEncoder=function(t,e){var n=a.getCodec(t),r=new n.encoder(e,n);return n.bomAware&&e&&e.addBOM&&(r=new i.PrependBOM(r,e)),r},a.getDecoder=function(t,e){var n=a.getCodec(t),r=new n.decoder(e,n);return!n.bomAware||e&&!1===e.stripBOM||(r=new i.StripBOM(r,e)),r};var o=void 0!==e&&e.versions&&e.versions.node;if(o){var s=o.split(".").map(Number);(s[0]>0||s[1]>=10)&&n(185)(a),n(186)(a)}}).call(e,n(11))},function(t,e){t.exports=[["0","\0",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1","　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","！＂＃￥％",88,"￣"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰￢￤"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]},function(t,e,n){var r=n(55);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},function(t,e,n){var r=n(35),i=n(27),a=n(17),o=n(58),s=n(18),l=n(95),u=Object.getOwnPropertyDescriptor;e.f=n(5)?u:function(t,e){if(t=a(t),e=o(e,!0),l)try{return u(t,e)}catch(t){}if(s(t,e))return i(!r.f.call(t,e),t[e])}},function(t,e,n){var r=n(9);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){var r=n(3),i=n(2),a=n(19);t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],o={};o[t]=e(n),r(r.S+r.F*a(function(){n(1)}),"Object",o)}},function(t,e,n){t.exports={default:n(200),__esModule:!0}},function(t,e,n){"use strict";var r=n(62),i=n(3),a=n(99),o=n(13),s=n(18),l=n(23),u=n(203),c=n(39),h=n(206),f=n(4)("iterator"),d=!([].keys&&"next"in[].keys()),p="values",g=function(){return this};t.exports=function(t,e,n,y,v,b,m){u(n,e,y);var w,x,S,_=function(t){if(!d&&t in P)return P[t];switch(t){case"keys":case p:return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",C=v==p,A=!1,P=t.prototype,E=P[f]||P["@@iterator"]||v&&P[v],I=!d&&E||_(v),T=v?C?_("entries"):I:void 0,O="Array"==e&&P.entries||E;if(O&&(S=h(O.call(new t)))!==Object.prototype&&S.next&&(c(S,k,!0),r||s(S,f)||o(S,f,g)),C&&E&&E.name!==p&&(A=!0,I=function(){return E.call(this)}),r&&!m||!d&&!A&&P[f]||o(P,f,I),l[e]=I,l[k]=g,v)if(w={values:C?I:_(p),keys:b?I:_("keys"),entries:T},m)for(x in w)x in P||a(P,x,w[x]);else i(i.P+i.F*(d||A),e,w);return w}},function(t,e){t.exports=!0},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(65)("keys"),i=n(38);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){var r=n(10),i="__core-js_shared__",a=r[i]||(r[i]={});t.exports=function(t){return a[t]||(a[t]={})}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(68),i=n(4)("iterator"),a=n(23);t.exports=n(2).getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||a[r(t)]}},function(t,e,n){var r=n(55),i=n(4)("toStringTag"),a="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?n:a?r(e):"Object"==(o=r(e))&&"function"==typeof e.callee?"Arguments":o}},function(t,e,n){"use strict";e.__esModule=!0;var r=o(n(103)),i=o(n(216)),a="function"==typeof i.default&&"symbol"==typeof r.default?function(t){return typeof t}:function(t){return t&&"function"==typeof i.default&&t.constructor===i.default&&t!==i.default.prototype?"symbol":typeof t};function o(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof i.default&&"symbol"===a(r.default)?function(t){return void 0===t?"undefined":a(t)}:function(t){return t&&"function"==typeof i.default&&t.constructor===i.default&&t!==i.default.prototype?"symbol":void 0===t?"undefined":a(t)}},function(t,e,n){e.f=n(4)},function(t,e,n){var r=n(10),i=n(2),a=n(62),o=n(70),s=n(6).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=a?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:o.f(t)})}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){},function(t,e,n){t.exports={default:n(223),__esModule:!0}},function(t,e,n){var r=n(9);t.exports=function(t,e){if(!r(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){"use strict";function r(){this.events={}}r.prototype.startTracking=function(t,e){var n=this.events[t]||(this.events[t]=[]);n.indexOf(e)<0&&n.push(e)},r.prototype.stopTracking=function(t,e){var n=this.events[t];if(n){var r=n.indexOf(e);r>=0&&n.splice(r,1)}},r.prototype.emit=function(t){var e=Array.prototype.slice.call(arguments,1),n=this.events[t];n&&n.forEach(function(t){t.apply(this,e)})},r.prototype.auto=function(t,e,n){this.startTracking(t,e),n(),this.stopTracking(t,e)},t.exports=r},function(t,e,n){(function(){var e,r,i,a,o,s,l,u,c,h,f,d,p,g,y,v,b,m,w,x,S,_,k,C,A,P,E;w=n(43),_=n(131),P=n(132),P.BK,c=P.CR,P.LF,P.NL,o=P.CB,i=P.BA,P.SP,x=P.WJ,m=P.SP,a=P.BK,d=P.LF,g=P.NL,e=P.AI,r=P.AL,v=P.SA,b=P.SG,S=P.XX,l=P.CJ,P.ID,y=P.NS,P.characterClasses,E=n(133),h=E.DI_BRK,f=E.IN_BRK,s=E.CI_BRK,u=E.CP_BRK,E.PR_BRK,A=E.pairTable,C=_.toByteArray("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"),k=new w(C),p=function(){var t,n,p;function w(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null}return w.prototype.nextCodePoint=function(){var t,e;return t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos),55296<=t&&t<=56319&&56320<=e&&e<=57343?(this.pos++,1024*(t-55296)+(e-56320)+65536):t},n=function(t){switch(t){case e:return r;case v:case b:case S:return r;case l:return y;default:return t}},p=function(t){switch(t){case d:case g:return a;case o:return i;case m:return x;default:return t}},w.prototype.nextCharClass=function(t){return null==t&&(t=!1),n(k.get(this.nextCodePoint()))},t=function(t,e){this.position=t,this.required=null!=e&&e},w.prototype.nextBreak=function(){var e,r,l;for(null==this.curClass&&(this.curClass=p(this.nextCharClass()));this.pos<this.string.length;){if(this.lastPos=this.pos,r=this.nextClass,this.nextClass=this.nextCharClass(),this.curClass===a||this.curClass===c&&this.nextClass!==d)return this.curClass=p(n(this.nextClass)),new t(this.lastPos,!0);if(null==(e=function(){switch(this.nextClass){case m:return this.curClass;case a:case d:case g:return a;case c:return c;case o:return i}}.call(this))){switch(l=!1,A[this.curClass][this.nextClass]){case h:l=!0;break;case f:l=r===m;break;case s:if(!(l=r===m))continue;break;case u:if(r!==m)continue}if(this.curClass=this.nextClass,l)return new t(this.lastPos)}else if(this.curClass=e,this.nextClass===o)return new t(this.lastPos)}if(this.pos>=this.string.length)return this.lastPos<this.string.length?(this.lastPos=this.string.length,new t(this.string.length)):null},w}(),t.exports=p}).call(this)},function(t,e){var n=0,r=-3;function i(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}var a=new i,o=new i,s=new Uint8Array(30),l=new Uint16Array(30),u=new Uint8Array(30),c=new Uint16Array(30),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),f=new i,d=new Uint8Array(320);function p(t,e,n,r){var i,a;for(i=0;i<n;++i)t[i]=0;for(i=0;i<30-n;++i)t[i+n]=i/n|0;for(a=r,i=0;i<30;++i)e[i]=a,a+=1<<t[i]}var g=new Uint16Array(16);function y(t,e,n,r){var i,a;for(i=0;i<16;++i)t.table[i]=0;for(i=0;i<r;++i)t.table[e[n+i]]++;for(t.table[0]=0,a=0,i=0;i<16;++i)g[i]=a,a+=t.table[i];for(i=0;i<r;++i)e[n+i]&&(t.trans[g[e[n+i]]++]=i)}function v(t){t.bitcount--||(t.tag=t.source[t.sourceIndex++],t.bitcount=7);var e=1&t.tag;return t.tag>>>=1,e}function b(t,e,n){if(!e)return n;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var r=t.tag&65535>>>16-e;return t.tag>>>=e,t.bitcount-=e,r+n}function m(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;for(var n=0,r=0,i=0,a=t.tag;r=2*r+(1&a),a>>>=1,++i,n+=e.table[i],(r-=e.table[i])>=0;);return t.tag=a,t.bitcount-=i,e.trans[n+r]}function w(t,e,n){var r,i,a,o,s,l;for(r=b(t,5,257),i=b(t,5,1),a=b(t,4,4),o=0;o<19;++o)d[o]=0;for(o=0;o<a;++o){var u=b(t,3,0);d[h[o]]=u}for(y(f,d,0,19),s=0;s<r+i;){var c=m(t,f);switch(c){case 16:var p=d[s-1];for(l=b(t,2,3);l;--l)d[s++]=p;break;case 17:for(l=b(t,3,3);l;--l)d[s++]=0;break;case 18:for(l=b(t,7,11);l;--l)d[s++]=0;break;default:d[s++]=c}}y(e,d,0,r),y(n,d,r,i)}function x(t,e,r){for(;;){var i,a,o,h,f=m(t,e);if(256===f)return n;if(f<256)t.dest[t.destLen++]=f;else for(i=b(t,s[f-=257],l[f]),a=m(t,r),h=o=t.destLen-b(t,u[a],c[a]);h<o+i;++h)t.dest[t.destLen++]=t.dest[h]}}function S(t){for(var e,i;t.bitcount>8;)t.sourceIndex--,t.bitcount-=8;if((e=256*(e=t.source[t.sourceIndex+1])+t.source[t.sourceIndex])!==(65535&~(256*t.source[t.sourceIndex+3]+t.source[t.sourceIndex+2])))return r;for(t.sourceIndex+=4,i=e;i;--i)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,n}!function(t,e){var n;for(n=0;n<7;++n)t.table[n]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,n=0;n<24;++n)t.trans[n]=256+n;for(n=0;n<144;++n)t.trans[24+n]=n;for(n=0;n<8;++n)t.trans[168+n]=280+n;for(n=0;n<112;++n)t.trans[176+n]=144+n;for(n=0;n<5;++n)e.table[n]=0;for(e.table[5]=32,n=0;n<32;++n)e.trans[n]=n}(a,o),p(s,l,4,3),p(u,c,2,1),s[28]=0,l[28]=258,t.exports=function(t,e){var s,l,u=new function(t,e){this.source=t,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=e,this.destLen=0,this.ltree=new i,this.dtree=new i}(t,e);do{switch(s=v(u),b(u,2,0)){case 0:l=S(u);break;case 1:l=x(u,a,o);break;case 2:w(u,u.ltree,u.dtree),l=x(u,u.ltree,u.dtree);break;default:l=r}if(l!==n)throw new Error("Data error")}while(!s);return u.destLen<u.dest.length?"function"==typeof u.dest.slice?u.dest.slice(0,u.destLen):u.dest.subarray(0,u.destLen):u.dest}},function(t,e,n){"use strict";var r=n(0).isString,i=n(0).isArray,a=n(0).isUndefined,o=n(0).isNull;function s(t,e){this.defaultStyle=e||{},this.styleDictionary=t,this.styleOverrides=[]}s.prototype.clone=function(){var t=new s(this.styleDictionary,this.defaultStyle);return this.styleOverrides.forEach(function(e){t.styleOverrides.push(e)}),t},s.prototype.push=function(t){this.styleOverrides.push(t)},s.prototype.pop=function(t){for(t=t||1;t-- >0;)this.styleOverrides.pop()},s.prototype.autopush=function(t){if(r(t))return 0;var e=[];t.style&&(e=i(t.style)?t.style:[t.style]);for(var n=0,s=e.length;n<s;n++)this.push(e[n]);var l={},u=!1;return["font","fontSize","fontFeatures","bold","italics","alignment","color","columnGap","fillColor","decoration","decorationStyle","decorationColor","background","lineHeight","characterSpacing","noWrap","markerColor","leadingIndent"].forEach(function(e){a(t[e])||o(t[e])||(l[e]=t[e],u=!0)}),u&&this.push(l),e.length+(u?1:0)},s.prototype.auto=function(t,e){var n=this.autopush(t),r=e();return n>0&&this.pop(n),r},s.prototype.getProperty=function(t){if(this.styleOverrides)for(var e=this.styleOverrides.length-1;e>=0;e--){var n=this.styleOverrides[e];if(r(n)){var i=this.styleDictionary[n];if(i&&!a(i[t])&&!o(i[t]))return i[t]}else if(!a(n[t])&&!o(n[t]))return n[t]}return this.defaultStyle&&this.defaultStyle[t]},t.exports=s},function(t,e,n){"use strict";var r=n(77),i=n(0).isString;function a(t,e){this.pages=[],this.pageMargins=e,this.x=e.left,this.availableWidth=t.width-e.left-e.right,this.availableHeight=0,this.page=-1,this.snapshots=[],this.endingCell=null,this.tracker=new r,this.addPage(t),this.hasBackground=!1}a.prototype.beginColumnGroup=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,bottomMost:{x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page},endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth}),this.lastColumnWidth=0},a.prototype.beginColumn=function(t,e,n){var r=this.snapshots[this.snapshots.length-1];this.calculateBottomMost(r),this.endingCell=n,this.page=r.page,this.x=this.x+this.lastColumnWidth+(e||0),this.y=r.y,this.availableWidth=t,this.availableHeight=r.availableHeight,this.lastColumnWidth=t},a.prototype.calculateBottomMost=function(t){this.endingCell?(this.saveContextInEndingCell(this.endingCell),this.endingCell=null):t.bottomMost=function(t,e){var n;n=t.page>e.page?t:e.page>t.page?e:t.y>e.y?t:e;return{page:n.page,x:n.x,y:n.y,availableHeight:n.availableHeight,availableWidth:n.availableWidth}}(this,t.bottomMost)},a.prototype.markEnding=function(t){this.page=t._columnEndingContext.page,this.x=t._columnEndingContext.x,this.y=t._columnEndingContext.y,this.availableWidth=t._columnEndingContext.availableWidth,this.availableHeight=t._columnEndingContext.availableHeight,this.lastColumnWidth=t._columnEndingContext.lastColumnWidth},a.prototype.saveContextInEndingCell=function(t){t._columnEndingContext={page:this.page,x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,lastColumnWidth:this.lastColumnWidth}},a.prototype.completeColumnGroup=function(t){var e=this.snapshots.pop();this.calculateBottomMost(e),this.endingCell=null,this.x=e.x;var n=e.bottomMost.y;t&&(e.page===e.bottomMost.page?e.y+t>n&&(n=e.y+t):n+=t),this.y=n,this.page=e.bottomMost.page,this.availableWidth=e.availableWidth,this.availableHeight=e.bottomMost.availableHeight,t&&(this.availableHeight-=n-e.bottomMost.y),this.lastColumnWidth=e.lastColumnWidth},a.prototype.addMargin=function(t,e){this.x+=t,this.availableWidth-=t+(e||0)},a.prototype.moveDown=function(t){return this.y+=t,this.availableHeight-=t,this.availableHeight>0},a.prototype.initializePage=function(){this.y=this.pageMargins.top,this.availableHeight=this.getCurrentPage().pageSize.height-this.pageMargins.top-this.pageMargins.bottom,this.pageSnapshot().availableWidth=this.getCurrentPage().pageSize.width-this.pageMargins.left-this.pageMargins.right},a.prototype.pageSnapshot=function(){return this.snapshots[0]?this.snapshots[0]:this},a.prototype.moveTo=function(t,e){null!=t&&(this.x=t,this.availableWidth=this.getCurrentPage().pageSize.width-this.x-this.pageMargins.right),null!=e&&(this.y=e,this.availableHeight=this.getCurrentPage().pageSize.height-this.y-this.pageMargins.bottom)},a.prototype.beginDetachedBlock=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth})},a.prototype.endDetachedBlock=function(){var t=this.snapshots.pop();this.x=t.x,this.y=t.y,this.availableWidth=t.availableWidth,this.availableHeight=t.availableHeight,this.page=t.page,this.endingCell=t.endingCell,this.lastColumnWidth=t.lastColumnWidth};var o=function(t,e){var n,r;return n=e,r=t.pageSize.orientation,(e=void 0===n?r:i(n)&&"landscape"===n.toLowerCase()?"landscape":"portrait")!==t.pageSize.orientation?{orientation:e,width:t.pageSize.height,height:t.pageSize.width}:{orientation:t.pageSize.orientation,width:t.pageSize.width,height:t.pageSize.height}};a.prototype.moveToNextPage=function(t){var e=this.page+1,n=this.page,r=this.y,i=e>=this.pages.length;if(i){var a=this.availableWidth,s=this.getCurrentPage().pageSize.orientation,l=o(this.getCurrentPage(),t);this.addPage(l),s===l.orientation&&(this.availableWidth=a)}else this.page=e,this.initializePage();return{newPageCreated:i,prevPage:n,prevY:r,y:this.y}},a.prototype.addPage=function(t){var e={items:[],pageSize:t};return this.pages.push(e),this.page=this.pages.length-1,this.initializePage(),this.tracker.emit("pageAdded"),e},a.prototype.getCurrentPage=function(){return this.page<0||this.page>=this.pages.length?null:this.pages[this.page]},a.prototype.getCurrentPosition=function(){var t=this.getCurrentPage().pageSize,e=t.height-this.pageMargins.top-this.pageMargins.bottom,n=t.width-this.pageMargins.left-this.pageMargins.right;return{pageNumber:this.page+1,pageOrientation:t.orientation,pageInnerHeight:e,pageInnerWidth:n,left:this.x,top:this.y,verticalRatio:(this.y-this.pageMargins.top)/e,horizontalRatio:(this.x-this.pageMargins.left)/n}},t.exports=a},function(t,e,n){"use strict";function r(t){this.maxWidth=t,this.leadingCut=0,this.trailingCut=0,this.inlineWidths=0,this.inlines=[]}r.prototype.getAscenderHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.font.ascender/1e3*e.fontSize)}),t},r.prototype.hasEnoughSpaceForInline=function(t){return 0===this.inlines.length||!this.newLineForced&&this.inlineWidths+t.width-this.leadingCut-(t.trailingCut||0)<=this.maxWidth},r.prototype.addInline=function(t){0===this.inlines.length&&(this.leadingCut=t.leadingCut||0),this.trailingCut=t.trailingCut||0,t.x=this.inlineWidths-this.leadingCut,this.inlines.push(t),this.inlineWidths+=t.width,t.lineEnd&&(this.newLineForced=!0)},r.prototype.getWidth=function(){return this.inlineWidths-this.leadingCut-this.trailingCut},r.prototype.getHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.height||0)}),t},t.exports=r},function(t,e,n){"use strict";(function(e,r){var i=n(32).nextTick;t.exports=m;var a,o=n(76);m.ReadableState=b;n(31).EventEmitter;var s=function(t,e){return t.listeners(e).length},l=n(84),u=n(33).Buffer,c=e.Uint8Array||function(){};var h=n(25);h.inherits=n(21);var f=n(139),d=void 0;d=f&&f.debuglog?f.debuglog("stream"):function(){};var p,g=n(140),y=n(85);h.inherits(m,l);var v=["error","close","destroy","pause","resume"];function b(t,e){t=t||{};var r=e instanceof(a=a||n(16));this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var i=t.highWaterMark,o=t.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(p||(p=n(47).StringDecoder),this.decoder=new p(t.encoding),this.encoding=t.encoding)}function m(t){if(a=a||n(16),!(this instanceof m))return new m(t);this._readableState=new b(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),l.call(this)}function w(t,e,n,r,i){var a,o,s,l=t._readableState;null===e?(l.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,k(t)}(t,l)):(i||(a=function(t,e){var n;r=e,u.isBuffer(r)||r instanceof c||"string"==typeof e||void 0===e||t.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));var r;return n}(l,e)),a?t.emit("error",a):l.objectMode||e&&e.length>0?("string"==typeof e||l.objectMode||Object.getPrototypeOf(e)===u.prototype||(o=e,e=u.from(o)),r?l.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):x(t,l,e,!0):l.ended?t.emit("error",new Error("stream.push() after EOF")):(l.reading=!1,l.decoder&&!n?(e=l.decoder.write(e),l.objectMode||0!==e.length?x(t,l,e,!1):A(t,l)):x(t,l,e,!1))):r||(l.reading=!1));return!(s=l).ended&&(s.needReadable||s.length<s.highWaterMark||0===s.length)}function x(t,e,n,r){e.flowing&&0===e.length&&!e.sync?(t.emit("data",n),t.read(0)):(e.length+=e.objectMode?1:n.length,r?e.buffer.unshift(n):e.buffer.push(n),e.needReadable&&k(t)),A(t,e)}Object.defineProperty(m.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),m.prototype.destroy=y.destroy,m.prototype._undestroy=y.undestroy,m.prototype._destroy=function(t,e){this.push(null),e(t)},m.prototype.push=function(t,e){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof t&&((e=e||r.defaultEncoding)!==r.encoding&&(t=u.from(t,e),e=""),n=!0),w(this,t,e,!1,n)},m.prototype.unshift=function(t){return w(this,t,null,!0,!1)},m.prototype.isPaused=function(){return!1===this._readableState.flowing},m.prototype.setEncoding=function(t){return p||(p=n(47).StringDecoder),this._readableState.decoder=new p(t),this._readableState.encoding=t,this};var S=8388608;function _(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=((n=t)>=S?n=S:(n--,n|=n>>>1,n|=n>>>2,n|=n>>>4,n|=n>>>8,n|=n>>>16,n++),n)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0));var n}function k(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(d("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?i(C,t):C(t))}function C(t){d("emit readable"),t.emit("readable"),T(t)}function A(t,e){e.readingMore||(e.readingMore=!0,i(P,t,e))}function P(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(d("maybeReadMore read 0"),t.read(0),n!==e.length);)n=e.length;e.readingMore=!1}function E(t){d("readable nexttick read 0"),t.read(0)}function I(t,e){e.reading||(d("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),T(t),e.flowing&&!e.reading&&t.read(0)}function T(t){var e=t._readableState;for(d("flow",e.flowing);e.flowing&&null!==t.read(););}function O(t,e){return 0===e.length?null:(e.objectMode?n=e.buffer.shift():!t||t>=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):n=function(t,e,n){var r;t<e.head.data.length?(r=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):r=t===e.head.data.length?e.shift():n?function(t,e){var n=e.head,r=1,i=n.data;t-=i.length;for(;n=n.next;){var a=n.data,o=t>a.length?a.length:t;if(o===a.length?i+=a:i+=a.slice(0,t),0===(t-=o)){o===a.length?(++r,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=a.slice(o));break}++r}return e.length-=r,i}(t,e):function(t,e){var n=u.allocUnsafe(t),r=e.head,i=1;r.data.copy(n),t-=r.data.length;for(;r=r.next;){var a=r.data,o=t>a.length?a.length:t;if(a.copy(n,n.length-t,0,o),0===(t-=o)){o===a.length?(++i,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=a.slice(o));break}++i}return e.length-=i,n}(t,e);return r}(t,e.buffer,e.decoder),n);var n}function L(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,i(B,e,t))}function B(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function M(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1}m.prototype.read=function(t){d("read",t),t=parseInt(t,10);var e=this._readableState,n=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return d("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?L(this):k(this),null;if(0===(t=_(t,e))&&e.ended)return 0===e.length&&L(this),null;var r,i=e.needReadable;return d("need readable",i),(0===e.length||e.length-t<e.highWaterMark)&&d("length less than watermark",i=!0),e.ended||e.reading?d("reading or ended",i=!1):i&&(d("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=_(n,e))),null===(r=t>0?O(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&L(this)),null!==r&&this.emit("data",r),r},m.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},m.prototype.pipe=function(t,e){var n=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=t;break;case 1:a.pipes=[a.pipes,t];break;default:a.pipes.push(t)}a.pipesCount+=1,d("pipe count=%d opts=%j",a.pipesCount,e);var l=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?c:w;function u(e,r){d("onunpipe"),e===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,d("cleanup"),t.removeListener("close",b),t.removeListener("finish",m),t.removeListener("drain",f),t.removeListener("error",v),t.removeListener("unpipe",u),n.removeListener("end",c),n.removeListener("end",w),n.removeListener("data",y),p=!0,!a.awaitDrain||t._writableState&&!t._writableState.needDrain||f())}function c(){d("onend"),t.end()}a.endEmitted?i(l):n.once("end",l),t.on("unpipe",u);var h,f=(h=n,function(){var t=h._readableState;d("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(h,"data")&&(t.flowing=!0,T(h))});t.on("drain",f);var p=!1;var g=!1;function y(e){d("ondata"),g=!1,!1!==t.write(e)||g||((1===a.pipesCount&&a.pipes===t||a.pipesCount>1&&-1!==M(a.pipes,t))&&!p&&(d("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,g=!0),n.pause())}function v(e){d("onerror",e),w(),t.removeListener("error",v),0===s(t,"error")&&t.emit("error",e)}function b(){t.removeListener("finish",m),w()}function m(){d("onfinish"),t.removeListener("close",b),w()}function w(){d("unpipe"),n.unpipe(t)}return n.on("data",y),function(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?o(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}(t,"error",v),t.once("close",b),t.once("finish",m),t.emit("pipe",n),a.flowing||(d("pipe resume"),n.resume()),t},m.prototype.unpipe=function(t){var e=this._readableState,n={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,n),this);if(!t){var r=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a<i;a++)r[a].emit("unpipe",this,n);return this}var o=M(e.pipes,t);return-1===o?this:(e.pipes.splice(o,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,n),this)},m.prototype.addListener=m.prototype.on=function(t,e){var n=l.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&k(this):i(E,this))}return n},m.prototype.resume=function(){var t,e,n=this._readableState;return n.flowing||(d("resume"),n.flowing=!0,t=this,(e=n).resumeScheduled||(e.resumeScheduled=!0,i(I,t,e))),this},m.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this},m.prototype.wrap=function(t){var e=this,n=this._readableState,r=!1;for(var i in t.on("end",function(){if(d("wrapped end"),n.decoder&&!n.ended){var t=n.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(i){(d("wrapped data"),n.decoder&&(i=n.decoder.write(i)),n.objectMode&&null==i)||(n.objectMode||i&&i.length)&&(e.push(i)||(r=!0,t.pause()))}),t)void 0===this[i]&&"function"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var a=0;a<v.length;a++)t.on(v[a],this.emit.bind(this,v[a]));return this._read=function(e){d("wrapped _read",e),r&&(r=!1,t.resume())},this},m._fromList=O}).call(e,n(7),n(11))},function(t,e,n){t.exports=n(31).EventEmitter},function(t,e,n){"use strict";var r=n(32).nextTick;function i(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var n=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||r(i,this,t),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?(r(i,n,t),n._writableState&&(n._writableState.errorEmitted=!0)):e&&e(t)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(t,e,n){"use strict";t.exports=a;var r=n(16),i=n(25);function a(t){if(!(this instanceof a))return new a(t);r.call(this,t),this._transformState={afterTransform:function(t,e){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=e&&this.push(e),r(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",o)}function o(){var t=this;"function"==typeof this._flush?this._flush(function(e,n){s(t,e,n)}):s(this,null,null)}function s(t,e,n){if(e)return t.emit("error",e);if(null!=n&&t.push(n),t._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(t._transformState.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}i.inherits=n(21),i.inherits(a,r),a.prototype.push=function(t,e){return this._transformState.needTransform=!1,r.prototype.push.call(this,t,e)},a.prototype._transform=function(t,e,n){throw new Error("_transform() is not implemented")},a.prototype._write=function(t,e,n){var r=this._transformState;if(r.writecb=n,r.writechunk=t,r.writeencoding=e,!r.transforming){var i=this._readableState;(r.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},a.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},a.prototype._destroy=function(t,e){var n=this;r.prototype._destroy.call(this,t,function(t){e(t),n.emit("close")})}},function(t,e,n){(function(e){(function(){var r,i,a,o,s=function(t,e){return function(){return t.apply(e,arguments)}},l={}.hasOwnProperty;o=n(48),a=n(15),i=function(t){function n(t,e,r){this.document=t,this.id=e,this.data=null!=r?r:{},this.finalize=s(this.finalize,this),n.__super__.constructor.call(this,{decodeStrings:!1}),this.gen=0,this.deflate=null,this.compress=this.document.compress&&!this.data.Filter,this.uncompressedLength=0,this.chunks=[]}return function(t,e){for(var n in e)l.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(n,a.Writable),n.prototype.initDeflate=function(){var t;return this.data.Filter="FlateDecode",this.deflate=o.createDeflate(),this.deflate.on("data",(t=this,function(e){return t.chunks.push(e),t.data.Length+=e.length})),this.deflate.on("end",this.finalize)},n.prototype._write=function(t,n,r){var i;return e.isBuffer(t)||(t=new e(t+"\n","binary")),this.uncompressedLength+=t.length,null==(i=this.data).Length&&(i.Length=0),this.compress?(this.deflate||this.initDeflate(),this.deflate.write(t)):(this.chunks.push(t),this.data.Length+=t.length),r()},n.prototype.end=function(t){return n.__super__.end.apply(this,arguments),this.deflate?this.deflate.end():this.finalize()},n.prototype.finalize=function(){var t,e,n,i;if(this.offset=this.document._offset,this.document._write(this.id+" "+this.gen+" obj"),this.document._write(r.convert(this.data)),this.chunks.length){for(this.document._write("stream"),e=0,n=(i=this.chunks).length;e<n;e++)t=i[e],this.document._write(t);this.chunks.length=0,this.document._write("\nendstream")}return this.document._write("endobj"),this.document._refEnd(this)},n.prototype.toString=function(){return this.id+" "+this.gen+" R"},n}(),t.exports=i,r=n(26)}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){"use strict";(function(e){function r(t,e){if(t===e)return 0;for(var n=t.length,r=e.length,i=0,a=Math.min(n,r);i<a;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0}function i(t){return e.Buffer&&"function"==typeof e.Buffer.isBuffer?e.Buffer.isBuffer(t):!(null==t||!t._isBuffer)}var a=n(49),o=Object.prototype.hasOwnProperty,s=Array.prototype.slice,l="foo"===function(){}.name;function u(t){return Object.prototype.toString.call(t)}function c(t){return!i(t)&&("function"==typeof e.ArrayBuffer&&("function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):!!t&&(t instanceof DataView||!!(t.buffer&&t.buffer instanceof ArrayBuffer))))}var h=t.exports=v,f=/\s*function\s+([^\(\s]*)\s*/;function d(t){if(a.isFunction(t)){if(l)return t.name;var e=t.toString().match(f);return e&&e[1]}}function p(t,e){return"string"==typeof t?t.length<e?t:t.slice(0,e):t}function g(t){if(l||!a.isFunction(t))return a.inspect(t);var e=d(t);return"[Function"+(e?": "+e:"")+"]"}function y(t,e,n,r,i){throw new h.AssertionError({message:n,actual:t,expected:e,operator:r,stackStartFunction:i})}function v(t,e){t||y(t,!0,e,"==",h.ok)}function b(t,e,n,o){if(t===e)return!0;if(i(t)&&i(e))return 0===r(t,e);if(a.isDate(t)&&a.isDate(e))return t.getTime()===e.getTime();if(a.isRegExp(t)&&a.isRegExp(e))return t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase;if(null!==t&&"object"==typeof t||null!==e&&"object"==typeof e){if(c(t)&&c(e)&&u(t)===u(e)&&!(t instanceof Float32Array||t instanceof Float64Array))return 0===r(new Uint8Array(t.buffer),new Uint8Array(e.buffer));if(i(t)!==i(e))return!1;var l=(o=o||{actual:[],expected:[]}).actual.indexOf(t);return-1!==l&&l===o.expected.indexOf(e)||(o.actual.push(t),o.expected.push(e),function(t,e,n,r){if(null==t||null==e)return!1;if(a.isPrimitive(t)||a.isPrimitive(e))return t===e;if(n&&Object.getPrototypeOf(t)!==Object.getPrototypeOf(e))return!1;var i=m(t),o=m(e);if(i&&!o||!i&&o)return!1;if(i)return t=s.call(t),e=s.call(e),b(t,e,n);var l,u,c=S(t),h=S(e);if(c.length!==h.length)return!1;for(c.sort(),h.sort(),u=c.length-1;u>=0;u--)if(c[u]!==h[u])return!1;for(u=c.length-1;u>=0;u--)if(l=c[u],!b(t[l],e[l],n,r))return!1;return!0}(t,e,n,o))}return n?t===e:t==e}function m(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function w(t,e){if(!t||!e)return!1;if("[object RegExp]"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&!0===e.call({},t)}function x(t,e,n,r){var i;if("function"!=typeof e)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(r=n,n=null),i=function(t){var e;try{t()}catch(t){e=t}return e}(e),r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),t&&!i&&y(i,n,"Missing expected exception"+r);var o="string"==typeof r,s=!t&&i&&!n;if((!t&&a.isError(i)&&o&&w(i,n)||s)&&y(i,n,"Got unwanted exception"+r),t&&i&&n&&!w(i,n)||!t&&i)throw i}h.AssertionError=function(t){var e;this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=p(g((e=this).actual),128)+" "+e.operator+" "+p(g(e.expected),128),this.generatedMessage=!0);var n=t.stackStartFunction||y;if(Error.captureStackTrace)Error.captureStackTrace(this,n);else{var r=new Error;if(r.stack){var i=r.stack,a=d(n),o=i.indexOf("\n"+a);if(o>=0){var s=i.indexOf("\n",o+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(h.AssertionError,Error),h.fail=y,h.ok=v,h.equal=function(t,e,n){t!=e&&y(t,e,n,"==",h.equal)},h.notEqual=function(t,e,n){t==e&&y(t,e,n,"!=",h.notEqual)},h.deepEqual=function(t,e,n){b(t,e,!1)||y(t,e,n,"deepEqual",h.deepEqual)},h.deepStrictEqual=function(t,e,n){b(t,e,!0)||y(t,e,n,"deepStrictEqual",h.deepStrictEqual)},h.notDeepEqual=function(t,e,n){b(t,e,!1)&&y(t,e,n,"notDeepEqual",h.notDeepEqual)},h.notDeepStrictEqual=function t(e,n,r){b(e,n,!0)&&y(e,n,r,"notDeepStrictEqual",t)},h.strictEqual=function(t,e,n){t!==e&&y(t,e,n,"===",h.strictEqual)},h.notStrictEqual=function(t,e,n){t===e&&y(t,e,n,"!==",h.notStrictEqual)},h.throws=function(t,e,n){x(!0,t,e,n)},h.doesNotThrow=function(t,e,n){x(!1,t,e,n)},h.ifError=function(t){if(t)throw t};var S=Object.keys||function(t){var e=[];for(var n in t)o.call(t,n)&&e.push(n);return e}}).call(e,n(7))},function(t,e,n){"use strict";t.exports=function(t,e,n,r){for(var i=65535&t|0,a=t>>>16&65535|0,o=0;0!==n;){for(n-=o=n>2e3?2e3:n;a=a+(i=i+e[r++]|0)|0,--o;);i%=65521,a%=65521}return i|a<<16|0}},function(t,e,n){"use strict";var r=function(){for(var t,e=[],n=0;n<256;n++){t=n;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}();t.exports=function(t,e,n,i){var a=r,o=i+n;t^=-1;for(var s=i;s<o;s++)t=t>>>8^a[255&(t^e[s])];return-1^t}},function(t,e){t.exports=[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31,"　"],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]]},function(t,e){t.exports=[["0","\0",127],["a140","　，、。．‧；：？！︰…‥﹐﹑﹒·﹔﹕﹖﹗｜–︱—︳╴︴﹏（）︵︶｛｝︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯￣＿ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢",4,"～∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣／"],["a240","＼∕﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳０",9,"Ⅰ",9,"〡",8,"十卄卅Ａ",25,"ａ",21],["a340","ｗｘｙｚΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]},function(t,e,n){(function(){var e,r,i;r=n(22).Number,i=n(12),e=function(){function t(t,e,n){this.type=t,this.length=e,this.lengthType=null!=n?n:"count"}return t.prototype.decode=function(t,e){var n,a,o,s,l,u;if(o=t.pos,s=[],n=e,null!=this.length&&(a=i.resolveLength(this.length,t,e)),this.length instanceof r&&(Object.defineProperties(s,{parent:{value:e},_startOffset:{value:o},_currentOffset:{value:0,writable:!0},_length:{value:a}}),n=s),null==a||"bytes"===this.lengthType)for(l=null!=a?t.pos+a:(null!=e?e._length:void 0)?e._startOffset+e._length:t.length;t.pos<l;)s.push(this.type.decode(t,n));else for(u=0;u<a;u+=1)s.push(this.type.decode(t,n));return s},t.prototype.size=function(t,e){var n,a,o,s;if(!t)return this.type.size(null,e)*i.resolveLength(this.length,null,e);for(a=0,this.length instanceof r&&(a+=this.length.size(),e={parent:e}),o=0,s=t.length;o<s;o++)n=t[o],a+=this.type.size(n,e);return a},t.prototype.encode=function(t,e,n){var i,a,o,s,l,u;for(i=n,this.length instanceof r&&((i={pointers:[],startOffset:t.pos,parent:n}).pointerOffset=t.pos+this.size(e,i),this.length.encode(t,e.length)),l=0,u=e.length;l<u;l++)o=e[l],this.type.encode(t,o,i);if(this.length instanceof r)for(a=0;a<i.pointers.length;)(s=i.pointers[a++]).type.encode(t,s.val)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r;r=n(12),e=function(){function t(t){this.fields=null!=t?t:{}}return t.prototype.decode=function(t,e,n){var r,i;return null==n&&(n=0),r=this._setup(t,e,n),this._parseFields(t,r,this.fields),null!=(i=this.process)&&i.call(r,t),r},t.prototype._setup=function(t,e,n){var r;return r={},Object.defineProperties(r,{parent:{value:e},_startOffset:{value:t.pos},_currentOffset:{value:0,writable:!0},_length:{value:n}}),r},t.prototype._parseFields=function(t,e,n){var i,a,o;for(i in n)void 0!==(o="function"==typeof(a=n[i])?a.call(e,e):a.decode(t,e))&&(o instanceof r.PropertyDescriptor?Object.defineProperty(e,i,o):e[i]=o),e._currentOffset=t.pos-e._startOffset},t.prototype.size=function(t,e,n){var r,i,a,o,s;for(i in null==t&&(t={}),null==n&&(n=!0),r={parent:e,val:t,pointerSize:0},a=0,s=this.fields)null!=(o=s[i]).size&&(a+=o.size(t[i],r));return n&&(a+=r.pointerSize),a},t.prototype.encode=function(t,e,n){var r,i,a,o,s,l,u;for(a in null!=(l=this.preEncode)&&l.call(e,t),(r={pointers:[],startOffset:t.pos,parent:n,val:e,pointerSize:0}).pointerOffset=t.pos+this.size(e,r,!1),u=this.fields)null!=(s=u[a]).encode&&s.encode(t,e[a],r);for(i=0;i<r.pointers.length;)(o=r.pointers[i++]).type.encode(t,o.val,o.parent)},t}(),t.exports=e}).call(this)},function(t,e,n){t.exports=!n(5)&&!n(19)(function(){return 7!=Object.defineProperty(n(96)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(9),i=n(10).document,a=r(i)&&r(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){t.exports=n(13)},function(t,e,n){var r=n(6),i=n(14),a=n(29);t.exports=n(5)?Object.defineProperties:function(t,e){i(t);for(var n,o=a(e),s=o.length,l=0;s>l;)r.f(t,n=o[l++],e[n]);return t}},function(t,e,n){var r=n(18),i=n(17),a=n(204)(!1),o=n(64)("IE_PROTO");t.exports=function(t,e){var n,s=i(t),l=0,u=[];for(n in s)n!=o&&r(s,n)&&u.push(n);for(;e.length>l;)r(s,n=e[l++])&&(~a(u,n)||u.push(n));return u}},function(t,e,n){var r=n(63),i=Math.max,a=Math.min;t.exports=function(t,e){return(t=r(t))<0?i(t+e,0):a(t,e)}},function(t,e,n){t.exports={default:n(215),__esModule:!0}},function(t,e,n){var r=n(55);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(101),i=n(66).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,e,n){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e,n){"use strict";e.__esModule=!0;var r,i=n(74),a=(r=i)&&r.__esModule?r:{default:r};e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),(0,a.default)(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}()},function(t,e,n){"use strict";var r=n(6).f,i=n(36),a=n(109),o=n(20),s=n(110),l=n(41),u=n(61),c=n(98),h=n(228),f=n(5),d=n(40).fastKey,p=n(75),g=f?"_s":"size",y=function(t,e){var n,r=d(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,u){var c=t(function(t,r){s(t,c,e,"_i"),t._t=e,t._i=i(null),t._f=void 0,t._l=void 0,t[g]=0,null!=r&&l(r,n,t[u],t)});return a(c.prototype,{clear:function(){for(var t=p(this,e),n=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];t._f=t._l=void 0,t[g]=0},delete:function(t){var n=p(this,e),r=y(n,t);if(r){var i=r.n,a=r.p;delete n._i[r.i],r.r=!0,a&&(a.n=i),i&&(i.p=a),n._f==r&&(n._f=i),n._l==r&&(n._l=a),n[g]--}return!!r},forEach:function(t){p(this,e);for(var n,r=o(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!y(p(this,e),t)}}),f&&r(c.prototype,"size",{get:function(){return p(this,e)[g]}}),c},def:function(t,e,n){var r,i,a=y(t,e);return a?a.v=n:(t._l=a={i:i=d(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=a),r&&(r.n=a),t[g]++,"F"!==i&&(t._i[i]=a)),t},getEntry:y,setStrong:function(t,e,n){u(t,e,function(t,n){this._t=p(t,e),this._k=n,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?c(0,"keys"==e?n.k:"values"==e?n.v:[n.k,n.v]):(t._t=void 0,c(1))},n?"entries":"values",!n,!0),h(e)}}},function(t,e,n){var r=n(13);t.exports=function(t,e,n){for(var i in e)n&&t[i]?t[i]=e[i]:r(t,i,e[i]);return t}},function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var r=n(14);t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(e){var a=t.return;throw void 0!==a&&r(a.call(t)),e}}},function(t,e,n){var r=n(23),i=n(4)("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||a[i]===t)}},function(t,e,n){"use strict";var r=n(10),i=n(3),a=n(40),o=n(19),s=n(13),l=n(109),u=n(41),c=n(110),h=n(9),f=n(39),d=n(6).f,p=n(229)(0),g=n(5);t.exports=function(t,e,n,y,v,b){var m=r[t],w=m,x=v?"set":"add",S=w&&w.prototype,_={};return g&&"function"==typeof w&&(b||S.forEach&&!o(function(){(new w).entries().next()}))?(w=e(function(e,n){c(e,w,t,"_c"),e._c=new m,null!=n&&u(n,v,e[x],e)}),p("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(t){var e="add"==t||"set"==t;t in S&&(!b||"clear"!=t)&&s(w.prototype,t,function(n,r){if(c(this,w,t),!e&&b&&!h(n))return"get"==t&&void 0;var i=this._c[t](0===n?0:n,r);return e?this:i})}),b||d(w.prototype,"size",{get:function(){return this._c.size}})):(w=y.getConstructor(e,t,v,x),l(w.prototype,n),a.NEED=!0),f(w,t),_[t]=w,i(i.G+i.W+i.F,_),b||y.setStrong(w,t,v),w}},function(t,e,n){var r=n(68),i=n(233);t.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");return i(this)}}},function(t,e,n){"use strict";var r=n(3);t.exports=function(t){r(r.S,t,{of:function(){for(var t=arguments.length,e=new Array(t);t--;)e[t]=arguments[t];return new this(e)}})}},function(t,e,n){"use strict";var r=n(3),i=n(97),a=n(20),o=n(41);t.exports=function(t){r(r.S,t,{from:function(t){var e,n,r,s,l=arguments[1];return i(this),(e=void 0!==l)&&i(l),null==t?new this:(n=[],e?(r=0,s=a(l,arguments[2],2),o(t,!1,function(t){n.push(s(t,r++))})):o(t,!1,n.push,n),new this(n))}})}},function(t,e,n){var r=n(118).BrotliInput,i=n(118).BrotliOutput,a=n(285),o=n(119),s=n(120).HuffmanCode,l=n(120).BrotliBuildHuffmanTable,u=n(289),c=n(290),h=n(291),f=8,d=16,p=256,g=704,y=26,v=6,b=2,m=8,w=255,x=1080,S=18,_=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),k=16,C=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),A=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),P=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function E(t){var e;return 0===t.readBits(1)?16:(e=t.readBits(3))>0?17+e:(e=t.readBits(3))>0?8+e:17}function I(t){if(t.readBits(1)){var e=t.readBits(3);return 0===e?1:t.readBits(e)+(1<<e)}return 0}function T(t){var e,n,r,i=new function(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1};if(i.input_end=t.readBits(1),i.input_end&&t.readBits(1))return i;if(7===(e=t.readBits(2)+4)){if(i.is_metadata=!0,0!==t.readBits(1))throw new Error("Invalid reserved bit");if(0===(n=t.readBits(2)))return i;for(r=0;r<n;r++){var a=t.readBits(8);if(r+1===n&&n>1&&0===a)throw new Error("Invalid size byte");i.meta_block_length|=a<<8*r}}else for(r=0;r<e;++r){var o=t.readBits(4);if(r+1===e&&e>4&&0===o)throw new Error("Invalid size nibble");i.meta_block_length|=o<<4*r}return++i.meta_block_length,i.input_end||i.is_metadata||(i.is_uncompressed=t.readBits(1)),i}function O(t,e,n){var r;return n.fillBitWindow(),(r=t[e+=n.val_>>>n.bit_pos_&w].bits-m)>0&&(n.bit_pos_+=m,e+=t[e].value,e+=n.val_>>>n.bit_pos_&(1<<r)-1),n.bit_pos_+=t[e].bits,t[e].value}function L(t,e,n,r){var i,a,o=new Uint8Array(t);if(r.readMoreInput(),1===(a=r.readBits(2))){for(var u=t-1,c=0,h=new Int32Array(4),p=r.readBits(2)+1;u;)u>>=1,++c;for(g=0;g<p;++g)h[g]=r.readBits(c)%t,o[h[g]]=2;switch(o[h[0]]=1,p){case 1:break;case 3:if(h[0]===h[1]||h[0]===h[2]||h[1]===h[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(h[0]===h[1])throw new Error("[ReadHuffmanCode] invalid symbols");o[h[1]]=1;break;case 4:if(h[0]===h[1]||h[0]===h[2]||h[0]===h[3]||h[1]===h[2]||h[1]===h[3]||h[2]===h[3])throw new Error("[ReadHuffmanCode] invalid symbols");r.readBits(1)?(o[h[2]]=3,o[h[3]]=3):o[h[0]]=2}}else{var g,y=new Uint8Array(S),v=32,b=0,w=[new s(2,0),new s(2,4),new s(2,3),new s(3,2),new s(2,0),new s(2,4),new s(2,3),new s(4,1),new s(2,0),new s(2,4),new s(2,3),new s(3,2),new s(2,0),new s(2,4),new s(2,3),new s(4,5)];for(g=a;g<S&&v>0;++g){var x,k=_[g],C=0;r.fillBitWindow(),C+=r.val_>>>r.bit_pos_&15,r.bit_pos_+=w[C].bits,x=w[C].value,y[k]=x,0!==x&&(v-=32>>x,++b)}if(1!==b&&0!==v)throw new Error("[ReadHuffmanCode] invalid num_codes or space");!function(t,e,n,r){for(var i=0,a=f,o=0,u=0,c=32768,h=[],p=0;p<32;p++)h.push(new s(0,0));for(l(h,0,5,t,S);i<e&&c>0;){var g,y=0;if(r.readMoreInput(),r.fillBitWindow(),y+=r.val_>>>r.bit_pos_&31,r.bit_pos_+=h[y].bits,(g=255&h[y].value)<d)o=0,n[i++]=g,0!==g&&(a=g,c-=32768>>g);else{var v,b,m=g-14,w=0;if(g===d&&(w=a),u!==w&&(o=0,u=w),v=o,o>0&&(o-=2,o<<=m),i+(b=(o+=r.readBits(m)+3)-v)>e)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var x=0;x<b;x++)n[i+x]=u;i+=b,0!==u&&(c-=b<<15-u)}}if(0!==c)throw new Error("[ReadHuffmanCodeLengths] space = "+c);for(;i<e;i++)n[i]=0}(y,t,o,r)}if(0===(i=l(e,n,m,o,t)))throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return i}function B(t,e,n){var r,i;return r=O(t,e,n),i=c.kBlockLengthPrefixCode[r].nbits,c.kBlockLengthPrefixCode[r].offset+n.readBits(i)}function M(t,e){for(var n=t[e],r=e;r;--r)t[r]=t[r-1];t[0]=n}function R(t,e){this.alphabet_size=t,this.num_htrees=e,this.codes=new Array(e+e*P[t+31>>>5]),this.htrees=new Uint32Array(e)}function F(t,e){var n,r,i={num_htrees:null,context_map:null},a=0;e.readMoreInput();var o=i.num_htrees=I(e)+1,l=i.context_map=new Uint8Array(t);if(o<=1)return i;for(e.readBits(1)&&(a=e.readBits(4)+1),n=[],r=0;r<x;r++)n[r]=new s(0,0);for(L(o+a,n,0,e),r=0;r<t;){var u;if(e.readMoreInput(),0===(u=O(n,0,e)))l[r]=0,++r;else if(u<=a)for(var c=1+(1<<u)+e.readBits(u);--c;){if(r>=t)throw new Error("[DecodeContextMap] i >= context_map_size");l[r]=0,++r}else l[r]=u-a,++r}return e.readBits(1)&&function(t,e){var n,r=new Uint8Array(256);for(n=0;n<256;++n)r[n]=n;for(n=0;n<e;++n){var i=t[n];t[n]=r[i],i&&M(r,i)}}(l,t),i}function D(t,e,n,r,i,a,o){var s,l=2*n,u=n,c=O(e,n*x,o);(s=0===c?i[l+(1&a[u])]:1===c?i[l+(a[u]-1&1)]+1:c-2)>=t&&(s-=t),r[n]=s,i[l+(1&a[u])]=s,++a[u]}function z(t,e,n,r,i,o){var s,l=i+1,u=n&i,c=o.pos_&a.IBUF_MASK;if(e<8||o.bit_pos_+(e<<3)<o.bit_end_pos_)for(;e-- >0;)o.readMoreInput(),r[u++]=o.readBits(8),u===l&&(t.write(r,l),u=0);else{if(o.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;o.bit_pos_<32;)r[u]=o.val_>>>o.bit_pos_,o.bit_pos_+=8,++u,--e;if(c+(s=o.bit_end_pos_-o.bit_pos_>>3)>a.IBUF_MASK){for(var h=a.IBUF_MASK+1-c,f=0;f<h;f++)r[u+f]=o.buf_[c+f];s-=h,u+=h,e-=h,c=0}for(f=0;f<s;f++)r[u+f]=o.buf_[c+f];if(e-=s,(u+=s)>=l){t.write(r,l),u-=l;for(f=0;f<u;f++)r[f]=r[l+f]}for(;u+e>=l;){if(s=l-u,o.input_.read(r,u,s)<s)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");t.write(r,l),e-=s,u=0}if(o.input_.read(r,u,e)<e)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");o.reset()}}function N(t){var e=new r(t),n=new a(e);return E(n),T(n).meta_block_length}function U(t,e){var n,r,i,l,f,d,m,w,S,_,P,M,N,U,W,G,V=0,j=0,H=0,q=[16,15,11,4],Z=0,Y=0,X=0,K=[new R(0,0),new R(0,0),new R(0,0)],J=128+a.READ_SIZE;i=(1<<(r=E(_=new a(t))))-16,f=(l=1<<r)-1,d=new Uint8Array(l+J+o.maxDictionaryWordLength),m=l,w=[],S=[];for(var Q=0;Q<3*x;Q++)w[Q]=new s(0,0),S[Q]=new s(0,0);for(;!j;){var $,tt,et,nt,rt,it,at,ot,st,lt,ut,ct=0,ht=[1<<28,1<<28,1<<28],ft=[0],dt=[1,1,1],pt=[0,1,0,1,0,1],gt=[0],yt=null,vt=null,bt=0,mt=null,wt=0,xt=0,St=0;for(n=0;n<3;++n)K[n].codes=null,K[n].htrees=null;_.readMoreInput();var _t=T(_);if(V+(ct=_t.meta_block_length)>e.buffer.length){var kt=new Uint8Array(V+ct);kt.set(e.buffer),e.buffer=kt}if(j=_t.input_end,$=_t.is_uncompressed,_t.is_metadata)for(void 0,G=(W=_).bit_pos_+7&-8,W.readBits(G-W.bit_pos_);ct>0;--ct)_.readMoreInput(),_.readBits(8);else if(0!==ct)if($)_.bit_pos_=_.bit_pos_+7&-8,z(e,ct,V,d,f,_),V+=ct;else{for(n=0;n<3;++n)dt[n]=I(_)+1,dt[n]>=2&&(L(dt[n]+2,w,n*x,_),L(y,S,n*x,_),ht[n]=B(S,n*x,_),gt[n]=1);for(_.readMoreInput(),nt=(1<<(tt=_.readBits(2)))-1,rt=(et=k+(_.readBits(4)<<tt))+(48<<tt),yt=new Uint8Array(dt[0]),n=0;n<dt[0];++n)_.readMoreInput(),yt[n]=_.readBits(2)<<1;var Ct=F(dt[0]<<v,_);at=Ct.num_htrees,it=Ct.context_map;var At=F(dt[2]<<b,_);for(st=At.num_htrees,ot=At.context_map,K[0]=new R(p,at),K[1]=new R(g,dt[1]),K[2]=new R(rt,st),n=0;n<3;++n)K[n].decode(_);for(vt=0,mt=0,lt=yt[ft[0]],xt=u.lookupOffsets[lt],St=u.lookupOffsets[lt+1],ut=K[1].htrees[0];ct>0;){var Pt,Et,It,Tt,Ot,Lt,Bt,Mt,Rt,Ft,Dt,zt;for(_.readMoreInput(),0===ht[1]&&(D(dt[1],w,1,ft,pt,gt,_),ht[1]=B(S,x,_),ut=K[1].htrees[ft[1]]),--ht[1],(Et=(Pt=O(K[1].codes,ut,_))>>6)>=2?(Et-=2,Bt=-1):Bt=0,It=c.kInsertRangeLut[Et]+(Pt>>3&7),Tt=c.kCopyRangeLut[Et]+(7&Pt),Ot=c.kInsertLengthPrefixCode[It].offset+_.readBits(c.kInsertLengthPrefixCode[It].nbits),Lt=c.kCopyLengthPrefixCode[Tt].offset+_.readBits(c.kCopyLengthPrefixCode[Tt].nbits),Y=d[V-1&f],X=d[V-2&f],Rt=0;Rt<Ot;++Rt)_.readMoreInput(),0===ht[0]&&(D(dt[0],w,0,ft,pt,gt,_),ht[0]=B(S,0,_),vt=ft[0]<<v,lt=yt[ft[0]],xt=u.lookupOffsets[lt],St=u.lookupOffsets[lt+1]),bt=it[vt+(u.lookup[xt+Y]|u.lookup[St+X])],--ht[0],X=Y,Y=O(K[0].codes,K[0].htrees[bt],_),d[V&f]=Y,(V&f)===f&&e.write(d,l),++V;if((ct-=Ot)<=0)break;if(Bt<0)if(_.readMoreInput(),0===ht[2]&&(D(dt[2],w,2,ft,pt,gt,_),ht[2]=B(S,2*x,_),mt=ft[2]<<b),--ht[2],wt=ot[mt+(255&(Lt>4?3:Lt-2))],(Bt=O(K[2].codes,K[2].htrees[wt],_))>=et)zt=(Bt-=et)&nt,Bt=et+((Nt=(2+(1&(Bt>>=tt))<<(Dt=1+(Bt>>1)))-4)+_.readBits(Dt)<<tt)+zt;if(M=q,N=Z,U=void 0,(P=Bt)<k?(N+=C[P],U=M[N&=3]+A[P]):U=P-k+1,(Mt=U)<0)throw new Error("[BrotliDecompress] invalid distance");if(Ft=V&f,Mt>(H=V<i&&H!==i?V:i)){if(!(Lt>=o.minDictionaryWordLength&&Lt<=o.maxDictionaryWordLength))throw new Error("Invalid backward reference. pos: "+V+" distance: "+Mt+" len: "+Lt+" bytes left: "+ct);var Nt=o.offsetsByLength[Lt],Ut=Mt-H-1,Wt=o.sizeBitsByLength[Lt],Gt=Ut>>Wt;if(Nt+=(Ut&(1<<Wt)-1)*Lt,!(Gt<h.kNumTransforms))throw new Error("Invalid backward reference. pos: "+V+" distance: "+Mt+" len: "+Lt+" bytes left: "+ct);var Vt=h.transformDictionaryWord(d,Ft,Nt,Lt,Gt);if(V+=Vt,ct-=Vt,(Ft+=Vt)>=m){e.write(d,l);for(var jt=0;jt<Ft-m;jt++)d[jt]=d[m+jt]}}else{if(Bt>0&&(q[3&Z]=Mt,++Z),Lt>ct)throw new Error("Invalid backward reference. pos: "+V+" distance: "+Mt+" len: "+Lt+" bytes left: "+ct);for(Rt=0;Rt<Lt;++Rt)d[V&f]=d[V-Mt&f],(V&f)===f&&e.write(d,l),++V,--ct}Y=d[V-1&f],X=d[V-2&f]}V&=1073741823}}e.write(d,V&f)}R.prototype.decode=function(t){var e,n=0;for(e=0;e<this.num_htrees;++e)this.htrees[e]=n,n+=L(this.alphabet_size,this.codes,n,t)},e.BrotliDecompressedSize=N,e.BrotliDecompressBuffer=function(t,e){var n=new r(t);null==e&&(e=N(t));var a=new Uint8Array(e),o=new i(a);return U(n,o),o.pos<o.buffer.length&&(o.buffer=o.buffer.subarray(0,o.pos)),o.buffer},e.BrotliDecompress=U,o.init()},function(t,e){function n(t){this.buffer=t,this.pos=0}function r(t){this.buffer=t,this.pos=0}n.prototype.read=function(t,e,n){this.pos+n>this.buffer.length&&(n=this.buffer.length-this.pos);for(var r=0;r<n;r++)t[e+r]=this.buffer[this.pos+r];return this.pos+=n,n},e.BrotliInput=n,r.prototype.write=function(t,e){if(this.pos+e>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(t.subarray(0,e),this.pos),this.pos+=e,e},e.BrotliOutput=r},function(t,e,n){var r=n(286);e.init=function(){e.dictionary=r.init()},e.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),e.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),e.minDictionaryWordLength=4,e.maxDictionaryWordLength=24},function(t,e){function n(t,e){this.bits=t,this.value=e}e.HuffmanCode=n;var r=15;function i(t,e){for(var n=1<<e-1;t&n;)n>>=1;return(t&n-1)+n}function a(t,e,r,i,a){for(;t[e+(i-=r)]=new n(a.bits,a.value),i>0;);}function o(t,e,n){for(var i=1<<e-n;e<r&&!((i-=t[e])<=0);)++e,i<<=1;return e-n}e.BrotliBuildHuffmanTable=function(t,e,s,l,u){var c,h,f,d,p,g,y,v,b,m,w=e,x=new Int32Array(r+1),S=new Int32Array(r+1);for(m=new Int32Array(u),h=0;h<u;h++)x[l[h]]++;for(S[1]=0,c=1;c<r;c++)S[c+1]=S[c]+x[c];for(h=0;h<u;h++)0!==l[h]&&(m[S[l[h]]++]=h);if(b=v=1<<(y=s),1===S[r]){for(f=0;f<b;++f)t[e+f]=new n(0,65535&m[0]);return b}for(f=0,h=0,c=1,d=2;c<=s;++c,d<<=1)for(;x[c]>0;--x[c])a(t,e+f,d,v,new n(255&c,65535&m[h++])),f=i(f,c);for(g=b-1,p=-1,c=s+1,d=2;c<=r;++c,d<<=1)for(;x[c]>0;--x[c])(f&g)!==p&&(e+=v,b+=v=1<<(y=o(x,c,s)),t[w+(p=f&g)]=new n(y+s&255,e-w-p&65535)),a(t,e+(f>>s),d,v,new n(c-s&255,65535&m[h++])),f=i(f,c);return b}},function(t,e,n){(function(e){(function(){var r,i,a,o;o=n(8),n(298),r=n(299),a=n(300),i=function(){function t(){}return t.open=function(t,n){var i,s;if(e.isBuffer(t))i=t;else if(t instanceof ArrayBuffer)i=new e(new Uint8Array(t));else if(s=/^data:.+;base64,(.*)$/.exec(t))i=new e(s[1],"base64");else if(!(i=o.readFileSync(t)))return;if(255===i[0]&&216===i[1])return new r(i,n);if(137===i[0]&&"PNG"===i.toString("ascii",1,4))return new a(i,n);throw new Error("Unknown image format.")},t}(),t.exports=i}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){(function(e){t.exports=e.pdfMake=n(123)}).call(e,n(7))},function(t,e,n){"use strict";(function(e,r){var i=n(126),a=n(0).isFunction,o=n(306).saveAs,s={Roboto:{normal:"Roboto-Regular.ttf",bold:"Roboto-Medium.ttf",italics:"Roboto-Italic.ttf",bolditalics:"Roboto-MediumItalic.ttf"}};function l(t,e,n,r){this.docDefinition=t,this.tableLayouts=e||null,this.fonts=n||s,this.vfs=r}l.prototype._createDoc=function(t,r){t=t||{},this.tableLayouts&&(t.tableLayouts=this.tableLayouts);var a=new i(this.fonts);n(8).bindFS(this.vfs);var o,s=a.createPdfKitDocument(this.docDefinition,t),l=[];s.on("readable",function(){for(var t;null!==(t=s.read(9007199254740991));)l.push(t)}),s.on("end",function(){o=e.concat(l),r(o,s._pdfMakePages)}),s.end()},l.prototype._getPages=function(t,e){if(!e)throw"_getPages is an async method and needs a callback argument";this._createDoc(t,function(t,n){e(n)})},l.prototype._bufferToBlob=function(t){var e;try{e=new Blob([t],{type:"application/pdf"})}catch(r){if("InvalidStateError"===r.name){var n=new Uint8Array(t);e=new Blob([n.buffer],{type:"application/pdf"})}}if(!e)throw"Could not generate blob";return e},l.prototype._openWindow=function(){var t=window.open("","_blank");if(null===t)throw"Open PDF in new window blocked by browser";return t},l.prototype._openPdf=function(t,e){e||(e=this._openWindow());try{this.getBlob(function(t){var n=(window.URL||window.webkitURL).createObjectURL(t);e.location.href=n},t)}catch(t){throw e.close(),t}},l.prototype.open=function(t,e){(t=t||{}).autoPrint=!1,e=e||null,this._openPdf(t,e)},l.prototype.print=function(t,e){(t=t||{}).autoPrint=!0,e=e||null,this._openPdf(t,e)},l.prototype.download=function(t,e,n){a(t)&&(e=t,t=null),t=t||"file.pdf",this.getBlob(function(n){o(n,t),a(e)&&e()},n)},l.prototype.getBase64=function(t,e){if(!t)throw"getBase64 is an async method and needs a callback argument";this.getBuffer(function(e){t(e.toString("base64"))},e)},l.prototype.getDataUrl=function(t,e){if(!t)throw"getDataUrl is an async method and needs a callback argument";this.getBuffer(function(e){t("data:application/pdf;base64,"+e.toString("base64"))},e)},l.prototype.getBlob=function(t,e){if(!t)throw"getBlob is an async method and needs a callback argument";var n=this;this.getBuffer(function(e){var r=n._bufferToBlob(e);t(r)},e)},l.prototype.getBuffer=function(t,e){if(!t)throw"getBuffer is an async method and needs a callback argument";this._createDoc(e,function(e){t(e)})},t.exports={createPdf:function(t){if(!Object.keys)throw"Your browser does not provide the level of support needed";return new l(t,r.pdfMake.tableLayouts,r.pdfMake.fonts,r.pdfMake.vfs)}}}).call(e,n(1).Buffer,n(7))},function(t,e,n){"use strict";e.byteLength=function(t){return 3*t.length/4-u(t)},e.toByteArray=function(t){var e,n,r,o,s,l=t.length;o=u(t),s=new a(3*l/4-o),n=o>0?l-4:l;var c=0;for(e=0;e<n;e+=4)r=i[t.charCodeAt(e)]<<18|i[t.charCodeAt(e+1)]<<12|i[t.charCodeAt(e+2)]<<6|i[t.charCodeAt(e+3)],s[c++]=r>>16&255,s[c++]=r>>8&255,s[c++]=255&r;2===o?(r=i[t.charCodeAt(e)]<<2|i[t.charCodeAt(e+1)]>>4,s[c++]=255&r):1===o&&(r=i[t.charCodeAt(e)]<<10|i[t.charCodeAt(e+1)]<<4|i[t.charCodeAt(e+2)]>>2,s[c++]=r>>8&255,s[c++]=255&r);return s},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,a="",o=[],s=0,l=n-i;s<l;s+=16383)o.push(c(t,s,s+16383>l?l:s+16383));1===i?(e=t[n-1],a+=r[e>>2],a+=r[e<<4&63],a+="=="):2===i&&(e=(t[n-2]<<8)+t[n-1],a+=r[e>>10],a+=r[e>>4&63],a+=r[e<<2&63],a+="=");return o.push(a),o.join("")};for(var r=[],i=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=o.length;s<l;++s)r[s]=o[s],i[o.charCodeAt(s)]=s;function u(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function c(t,e,n){for(var i,a,o=[],s=e;s<n;s+=3)i=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),o.push(r[(a=i)>>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,n,r,i){var a,o,s=8*i-r-1,l=(1<<s)-1,u=l>>1,c=-7,h=n?i-1:0,f=n?-1:1,d=t[e+h];for(h+=f,a=d&(1<<-c)-1,d>>=-c,c+=s;c>0;a=256*a+t[e+h],h+=f,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=r;c>0;o=256*o+t[e+h],h+=f,c-=8);if(0===a)a=1-u;else{if(a===l)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,r),a-=u}return(d?-1:1)*o*Math.pow(2,a-r)},e.write=function(t,e,n,r,i,a){var o,s,l,u=8*a-i-1,c=(1<<u)-1,h=c>>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:a-1,p=r?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+h>=1?f/l:f*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=c?(s=0,o=c):o+h>=1?(s=(e*l-1)*Math.pow(2,i),o+=h):(s=e*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;t[n+d]=255&s,d+=p,s/=256,i-=8);for(o=o<<i|s,u+=i;u>0;t[n+d]=255&o,d+=p,o/=256,u-=8);t[n+d-p]|=128*g}},function(t,e,n){"use strict";var r=n(127),i=n(128),a=n(138),o=n(303),s=n(304),l=n(305),u=n(42),c=n(0).isFunction,h=n(0).isString,f=n(0).isNumber,d=n(0).isBoolean,p=n(0).isArray;function g(t){this.fontDescriptors=t}function y(t){if(!t)return null;if(f(t))t={left:t,right:t,top:t,bottom:t};else if(p(t))if(2===t.length)t={left:t[0],top:t[1],right:t[0],bottom:t[1]};else{if(4!==t.length)throw"Invalid pageMargins definition";t={left:t[0],top:t[1],right:t[2],bottom:t[3]}}return t}function v(t,e){var n=e.options.size[0]>e.options.size[1]?"landscape":"portrait";if(t.pageSize.orientation!==n){var r=e.options.size[0],i=e.options.size[1];e.options.size=[i,r]}}function b(t,e,n,r){if(t._pageNodeRef){var i,a,o=new u(null),s=t._pageNodeRef.positions[0].pageNumber.toString();switch(t.inlines[0].text=s,t.inlines[0].linkToPage=s,i=o.widthOfString(t.inlines[0].text,t.inlines[0].font,t.inlines[0].fontSize,t.inlines[0].characterSpacing,t.inlines[0].fontFeatures),a=t.inlines[0].width-i,t.inlines[0].width=i,t.inlines[0].alignment){case"right":t.inlines[0].x+=a;break;case"center":t.inlines[0].x+=a/2}}e=e||0,n=n||0;var c=t.getHeight(),h=c-t.getAscenderHeight();l.drawBackground(t,e,n,r);for(var f=0,d=t.inlines.length;f<d;f++){var p=t.inlines[f],g=c-p.font.ascender/1e3*p.fontSize-h,y={lineBreak:!1,textWidth:p.width,characterSpacing:p.characterSpacing,wordCount:1,link:p.link};if(p.fontFeatures&&(y.features=p.fontFeatures),r.fill(p.color||"black"),r._font=p.font,r.fontSize(p.fontSize),r.text(p.text,e+p.x,n+g,y),p.linkToPage){r.ref({Type:"Action",S:"GoTo",D:[p.linkToPage,0,0]}).end();r.annotate(e+p.x,n+g,p.width,p.height,{Subtype:"Link",Dest:[p.linkToPage-1,"XYZ",null,null,null]})}}l.drawDecorations(t,e,n,r)}function m(t,e){var n=t.watermark;e.fill(n.color),e.opacity(n.opacity),e.save();var r=-180*Math.atan2(e.page.height,e.page.width)/Math.PI;e.rotate(r,{origin:[e.page.width/2,e.page.height/2]});var i=e.page.width/2-n.size.size.width/2,a=e.page.height/2-n.size.size.height/4;e._font=n.font,e.fontSize(n.size.fontSize),e.text(n.text,i,a,{lineBreak:!1}),e.restore()}function w(t,e){switch(e.lineWidth(t.lineWidth||1),t.dash?e.dash(t.dash.length,{space:t.dash.space||t.dash.length,phase:t.dash.phase||0}):e.undash(),e.lineJoin(t.lineJoin||"miter"),e.lineCap(t.lineCap||"butt"),t.type){case"ellipse":e.ellipse(t.x,t.y,t.r1,t.r2);break;case"rect":if(t.r?e.roundedRect(t.x,t.y,t.w,t.h,t.r):e.rect(t.x,t.y,t.w,t.h),t.linearGradient){for(var n=e.linearGradient(t.x,t.y,t.x+t.w,t.y),r=1/(t.linearGradient.length-1),i=0;i<t.linearGradient.length;i++)n.stop(i*r,t.linearGradient[i]);t.color=n}break;case"line":e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2);break;case"polyline":if(0===t.points.length)break;e.moveTo(t.points[0].x,t.points[0].y);i=1;for(var a=t.points.length;i<a;i++)e.lineTo(t.points[i].x,t.points[i].y);if(t.points.length>1){var o=t.points[0],s=t.points[t.points.length-1];(t.closePath||o.x===s.x&&o.y===s.y)&&e.closePath()}break;case"path":e.path(t.d)}t.color&&t.lineColor?(e.fillColor(t.color,t.fillOpacity||1),e.strokeColor(t.lineColor,t.strokeOpacity||1),e.fillAndStroke()):t.color?(e.fillColor(t.color,t.fillOpacity||1),e.fill()):(e.strokeColor(t.lineColor||"black",t.strokeOpacity||1),e.stroke())}function x(t,e,n,r){r.image(t.image,t.x,t.y,{width:t._width,height:t._height}),t.link&&r.link(t.x,t.y,t._width,t._height,t.link)}function S(t,e){e.save(),e.addContent(t.x+" "+t.y+" "+t.width+" "+t.height+" re"),e.clip()}g.prototype.createPdfKitDocument=function(t,e){e=e||{};var n=function(t,e){t&&"auto"===t.height&&(t.height=1/0);var n=function(t){if(h(t)){var e=o[t.toUpperCase()];if(!e)throw"Page size "+t+" not recognized";return{width:e[0],height:e[1]}}return t}(t||"A4");(function(t){if(h(t))return"portrait"===(t=t.toLowerCase())&&n.width>n.height||"landscape"===t&&n.width<n.height;return!1})(e)&&(n={width:n.height,height:n.width});return n.orientation=n.width>n.height?"landscape":"portrait",n}(t.pageSize,t.pageOrientation),l=!d(t.compress)||t.compress;this.pdfKitDoc=new a({size:[n.width,n.height],autoFirstPage:!1,compress:l}),function(t,e){function n(t){var e=t.charAt(0).toUpperCase()+t.slice(1);return-1!==["Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped"].indexOf(e)?e:t.replace(/\s+/g,"")}if(e.info.Producer="pdfmake",e.info.Creator="pdfmake",t.info)for(var r in t.info){var i=t.info[r];i&&(r=n(r),e.info[r]=i)}}(t,this.pdfKitDoc),this.fontProvider=new r(this.fontDescriptors,this.pdfKitDoc),t.images=t.images||{};var u=new i(n,y(t.pageMargins||40),new s(this.pdfKitDoc,t.images));u.registerTableLayouts({noBorders:{hLineWidth:function(t){return 0},vLineWidth:function(t){return 0},paddingLeft:function(t){return t?4:0},paddingRight:function(t,e){return t<e.table.widths.length-1?4:0}},headerLineOnly:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:t===e.table.headerRows?2:0},vLineWidth:function(t){return 0},paddingLeft:function(t){return 0===t?0:8},paddingRight:function(t,e){return t===e.table.widths.length-1?0:8}},lightHorizontalLines:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:t===e.table.headerRows?2:1},vLineWidth:function(t){return 0},hLineColor:function(t){return 1===t?"black":"#aaa"},paddingLeft:function(t){return 0===t?0:8},paddingRight:function(t,e){return t===e.table.widths.length-1?0:8}}}),e.tableLayouts&&u.registerTableLayouts(e.tableLayouts);var p,g,_,k,C=u.layoutDocument(t.content,this.fontProvider,t.styles||{},t.defaultStyle||{fontSize:12,font:"Roboto"},t.background,t.header,t.footer,t.images,t.watermark,t.pageBreakBefore),A=t.maxPagesNumber||-1;if(f(A)&&A>-1&&(C=C.slice(0,A)),n.height===1/0){var P=(p=C,g=t.pageMargins,_=y(g||40),k=_.top+_.bottom,p.forEach(function(t){t.items.forEach(function(t){var e;k+=c((e=t).item.getHeight)?e.item.getHeight():e.item._height?e.item._height:0})}),k);this.pdfKitDoc.options.size=[n.width,P]}if(function(t,e,n,r){n._pdfMakePages=t,n.addPage();var i=0;r&&t.forEach(function(t){i+=t.items.length});var a=0;r=r||function(){};for(var o=0;o<t.length;o++){o>0&&(v(t[o],n),n.addPage(n.options));for(var s=t[o],l=0,u=s.items.length;l<u;l++){var c=s.items[l];switch(c.type){case"vector":w(c.item,n);break;case"line":b(c.item,c.item.x,c.item.y,n);break;case"image":x(c.item,c.item.x,c.item.y,n);break;case"beginClip":S(c.item,n);break;case"endClip":n.restore()}r(++a/i)}s.watermark&&m(s,n)}}(C,this.fontProvider,this.pdfKitDoc,e.progressCallback),e.autoPrint){var E=this.pdfKitDoc.ref({Type:"Action",S:"Named",N:"Print"});this.pdfKitDoc._root.data.OpenAction=E,E.end()}return this.pdfKitDoc},t.exports=g},function(t,e,n){"use strict";var r=n(0).isArray;function i(t,e){for(var n in this.fonts={},this.pdfKitDoc=e,this.fontCache={},t)if(t.hasOwnProperty(n)){var r=t[n];this.fonts[n]={normal:r.normal,bold:r.bold,italics:r.italics,bolditalics:r.bolditalics}}}i.prototype.provideFont=function(t,e,n){var i,a,o,s=(a=n,o="normal",(i=e)&&a?o="bolditalics":i?o="bold":a&&(o="italics"),o);if(!this.fonts[t]||!this.fonts[t][s])throw new Error("Font '"+t+"' in style '"+s+"' is not defined in the font section of the document definition.");if(this.fontCache[t]=this.fontCache[t]||{},!this.fontCache[t][s]){var l=this.fonts[t][s];r(l)||(l=[l]),this.fontCache[t][s]=this.pdfKitDoc.font.apply(this.pdfKitDoc,l)._font}return this.fontCache[t][s]},t.exports=i},function(t,e,n){"use strict";var r=n(77),i=n(129),a=n(130),o=n(81),s=n(135),l=n(44),u=n(137),c=n(82),h=n(0).isString,f=n(0).isArray,d=n(0).pack,p=n(0).offsetVector,g=n(0).fontStringify,y=n(0).isFunction,v=n(42),b=n(80);function m(t,e){e.forEach(function(e){t.push(e)})}function w(t,e,n){this.pageSize=t,this.pageMargins=e,this.tracker=new r,this.imageMeasure=n,this.tableLayouts={}}w.prototype.registerTableLayouts=function(t){this.tableLayouts=d(this.tableLayouts,t)},w.prototype.layoutDocument=function(t,e,n,r,o,s,l,u,c,h){function d(t,e){return!!y(h)&&((t=t.filter(function(t){return t.positions.length>0})).forEach(function(t){var n={};["id","text","ul","ol","table","image","qr","canvas","columns","headlineLevel","style","pageBreak","pageOrientation","width","height"].forEach(function(e){void 0!==t[e]&&(n[e]=t[e])}),n.startPosition=t.positions[0],n.pageNumbers=t.positions.map(function(t){return t.pageNumber}).filter(function(t,e,n){return n.indexOf(t)===e}),n.pages=e.length,n.stack=f(t.stack),t.nodeInfo=n}),t.some(function(t,e,n){if("before"!==t.pageBreak&&!t.pageBreakCalculated){t.pageBreakCalculated=!0;var r=t.nodeInfo.pageNumbers[0],i=n.slice(e+1).filter(function(t){return t.nodeInfo.pageNumbers.indexOf(r)>-1}),a=n.slice(e+1).filter(function(t){return t.nodeInfo.pageNumbers.indexOf(r+1)>-1}),o=n.slice(0,e).filter(function(t){return t.nodeInfo.pageNumbers.indexOf(r)>-1});if(h(t.nodeInfo,i.map(function(t){return t.nodeInfo}),a.map(function(t){return t.nodeInfo}),o.map(function(t){return t.nodeInfo})))return t.pageBreak="before",!0}}))}this.docPreprocessor=new i,this.docMeasure=new a(e,n,r,this.imageMeasure,this.tableLayouts,u);for(var p=this.tryLayoutDocument(t,e,n,r,o,s,l,u,c);d(p.linearNodeList,p.pages);)p.linearNodeList.forEach(function(t){t.resetXY()}),p=this.tryLayoutDocument(t,e,n,r,o,s,l,u,c);return p.pages},w.prototype.tryLayoutDocument=function(t,e,n,r,i,a,l,u,c,h){this.linearNodeList=[],t=this.docPreprocessor.preprocessDocument(t),t=this.docMeasure.measureDocument(t),this.writer=new s(new o(this.pageSize,this.pageMargins),this.tracker);var f=this;return this.writer.context().tracker.startTracking("pageAdded",function(){f.addBackground(i)}),this.addBackground(i),this.processNode(t),this.addHeadersAndFooters(a,l),null!=c&&this.addWatermark(c,e,r),{pages:this.writer.context().pages,linearNodeList:this.linearNodeList}},w.prototype.addBackground=function(t){var e=(y(t)?t:function(){return t})(this.writer.context().page+1);if(e){var n=this.writer.context().getCurrentPage().pageSize;this.writer.beginUnbreakableBlock(n.width,n.height),e=this.docPreprocessor.preprocessDocument(e),this.processNode(this.docMeasure.measureDocument(e)),this.writer.commitUnbreakableBlock(0,0),this.writer.context().hasBackground=!0}},w.prototype.addStaticRepeatable=function(t,e){this.addDynamicRepeatable(function(){return JSON.parse(JSON.stringify(t))},e)},w.prototype.addDynamicRepeatable=function(t,e){for(var n=0,r=this.writer.context().pages.length;n<r;n++){this.writer.context().page=n;var i=t(n+1,r,this.writer.context().pages[n].pageSize);if(i){var a=e(this.writer.context().getCurrentPage().pageSize,this.pageMargins);this.writer.beginUnbreakableBlock(a.width,a.height),i=this.docPreprocessor.preprocessDocument(i),this.processNode(this.docMeasure.measureDocument(i)),this.writer.commitUnbreakableBlock(a.x,a.y)}}},w.prototype.addHeadersAndFooters=function(t,e){var n=function(t,e){return{x:0,y:0,width:t.width,height:e.top}},r=function(t,e){return{x:0,y:t.height-e.bottom,width:t.width,height:e.bottom}};y(t)?this.addDynamicRepeatable(t,n):t&&this.addStaticRepeatable(t,n),y(e)?this.addDynamicRepeatable(e,r):e&&this.addStaticRepeatable(e,r)},w.prototype.addWatermark=function(t,e,n){if(h(t)&&(t={text:t}),t.text){t.font=t.font||n.font||"Roboto",t.color=t.color||"black",t.opacity=t.opacity||.6,t.bold=t.bold||!1,t.italics=t.italics||!1;for(var r={text:t.text,font:e.provideFont(t.font,t.bold,t.italics),size:function(t,e,n){var r,i=t.width,a=t.height,o=.8*Math.sqrt(i*i+a*a),s=new v(n),l=new b(null,{font:e.font,bold:e.bold,italics:e.italics}),u=0,c=1e3,h=(u+c)/2;for(;Math.abs(u-c)>1;)l.push({fontSize:h}),(r=s.sizeOfString(e.text,l)).width>o?h=(u+(c=h))/2:r.width<o&&(h=((u=h)+c)/2),l.pop();return{size:r,fontSize:h}}(this.pageSize,t,e),color:t.color,opacity:t.opacity},i=this.writer.context().pages,a=0,o=i.length;a<o;a++)i[a].watermark=r}},w.prototype.processNode=function(t){var e,n,r,i=this;this.linearNodeList.push(t),n=(e=t).x,r=e.y,e.positions=[],f(e.canvas)&&e.canvas.forEach(function(t){var e=t.x,n=t.y,r=t.x1,i=t.y1,a=t.x2,o=t.y2;t.resetXY=function(){t.x=e,t.y=n,t.x1=r,t.y1=i,t.x2=a,t.y2=o}}),e.resetXY=function(){e.x=n,e.y=r,f(e.canvas)&&e.canvas.forEach(function(t){t.resetXY()})},function(e){var n=t._margin;"before"===t.pageBreak&&i.writer.moveToNextPage(t.pageOrientation);n&&(i.writer.context().moveDown(n[1]),i.writer.context().addMargin(n[0],n[2]));e(),n&&(i.writer.context().addMargin(-n[0],-n[2]),i.writer.context().moveDown(n[3]));"after"===t.pageBreak&&i.writer.moveToNextPage(t.pageOrientation)}(function(){var e=t.unbreakable;e&&i.writer.beginUnbreakableBlock();var n=t.absolutePosition;n&&(i.writer.context().beginDetachedBlock(),i.writer.context().moveTo(n.x||0,n.y||0));var r=t.relativePosition;if(r&&(i.writer.context().beginDetachedBlock(),i.writer.context().moveTo((r.x||0)+i.writer.context().x,(r.y||0)+i.writer.context().y)),t.stack)i.processVerticalContainer(t);else if(t.columns)i.processColumns(t);else if(t.ul)i.processList(!1,t);else if(t.ol)i.processList(!0,t);else if(t.table)i.processTable(t);else if(void 0!==t.text)i.processLeaf(t);else if(t.toc)i.processToc(t);else if(t.image)i.processImage(t);else if(t.canvas)i.processCanvas(t);else if(t.qr)i.processQr(t);else if(!t._span)throw"Unrecognized document structure: "+JSON.stringify(t,g);(n||r)&&i.writer.context().endDetachedBlock(),e&&i.writer.commitUnbreakableBlock()})},w.prototype.processVerticalContainer=function(t){var e=this;t.stack.forEach(function(n){e.processNode(n),m(t.positions,n.positions)})},w.prototype.processColumns=function(t){var e=t.columns,n=this.writer.context().availableWidth,r=function(t){if(!t)return null;var n=[];n.push(0);for(var r=e.length-1;r>0;r--)n.push(t);return n}(t._gap);r&&(n-=(r.length-1)*t._gap),l.buildColumnWidths(e,n);var i=this.processRow(e,e,r);m(t.positions,i.positions)},w.prototype.processRow=function(t,e,n,r,i,a){var o=this,s=[],l=[];return this.tracker.auto("pageChanged",function(t){for(var e,n=0,r=s.length;n<r;n++){var i=s[n];if(i.prevPage===t.prevPage){e=i;break}}e||(e=t,s.push(e));e.prevY=Math.max(e.prevY,t.prevY),e.y=Math.min(e.y,t.y)},function(){e=e||t,o.writer.context().beginColumnGroup();for(var r=0,i=t.length;r<i;r++){var s=t[r],h=e[r]._calcWidth,f=u(r);if(s.colSpan&&s.colSpan>1)for(var d=1;d<s.colSpan;d++)h+=e[++r]._calcWidth+n[r];o.writer.context().beginColumn(h,f,c(s,r)),s._span?s._columnEndingContext&&o.writer.context().markEnding(s):(o.processNode(s),m(l,s.positions))}o.writer.context().completeColumnGroup(a)}),{pageBreaks:s,positions:l};function u(t){return n&&n.length>t?n[t]:0}function c(t,e){if(t.rowSpan&&t.rowSpan>1){var n=i+t.rowSpan-1;if(n>=r.length)throw"Row span for column "+e+" (with indexes starting from 0) exceeded row count";return r[n][e]}return null}},w.prototype.processList=function(t,e){var n,r=this,i=t?e.ol:e.ul,a=e._gapSize;this.writer.context().addMargin(a.width),this.tracker.auto("lineAdded",function(t){if(n){var e=n;if(n=null,e.canvas){var i=e.canvas[0];p(i,-e._minWidth,0),r.writer.addVector(i)}else if(e._inlines){var a=new c(r.pageSize.width);a.addInline(e._inlines[0]),a.x=-e._minWidth,a.y=t.getAscenderHeight()-a.getAscenderHeight(),r.writer.addLine(a,!0)}}},function(){i.forEach(function(t){n=t.listMarker,r.processNode(t),m(e.positions,t.positions)})}),this.writer.context().addMargin(-a.width)},w.prototype.processTable=function(t){var e=new u(t);e.beginTable(this.writer);for(var n=t.table.heights,r=0,i=t.table.body.length;r<i;r++){var a;e.beginRow(r,this.writer),"auto"===(a=y(n)?n(r):f(n)?n[r]:n)&&(a=void 0);var o=this.processRow(t.table.body[r],t.table.widths,t._offsets.offsets,t.table.body,r,a);m(t.positions,o.positions),e.endRow(r,this.writer,o.pageBreaks)}e.endTable(this.writer)},w.prototype.processLeaf=function(t){var e=this.buildNextLine(t),n=e?e.getHeight():0,r=t.maxHeight||-1;for(t._tocItemRef&&(e._pageNodeRef=t._tocItemRef),t._pageRef&&(e._pageNodeRef=t._pageRef._nodeRef);e&&(-1===r||n<r);){var i=this.writer.addLine(e);t.positions.push(i),(e=this.buildNextLine(t))&&(n+=e.getHeight())}},w.prototype.processToc=function(t){t.toc.title&&this.processNode(t.toc.title),this.processNode(t.toc._table)},w.prototype.buildNextLine=function(t){function e(t){var e=t.constructor();for(var n in t)e[n]=t[n];return e}if(!t._inlines||0===t._inlines.length)return null;for(var n=new c(this.writer.context().availableWidth),r=new v(null);t._inlines&&t._inlines.length>0&&n.hasEnoughSpaceForInline(t._inlines[0]);){var i=t._inlines.shift();if(!i.noWrap&&i.text.length>1&&i.width>n.maxWidth){var a=i.width/i.text.length,o=Math.floor(n.maxWidth/a);if(o<1&&(o=1),o<i.text.length){var s=e(i);s.text=i.text.substr(o),i.text=i.text.substr(0,o),s.width=r.widthOfString(s.text,s.font,s.fontSize,s.characterSpacing,s.fontFeatures),i.width=r.widthOfString(i.text,i.font,i.fontSize,i.characterSpacing,i.fontFeatures),t._inlines.unshift(s)}}n.addInline(i)}return n.lastLineInParagraph=0===t._inlines.length,n},w.prototype.processImage=function(t){var e=this.writer.addImage(t);t.positions.push(e)},w.prototype.processCanvas=function(t){var e=t._minHeight;void 0===t.absolutePosition&&this.writer.context().availableHeight<e&&this.writer.moveToNextPage(),this.writer.alignCanvas(t),t.canvas.forEach(function(e){var n=this.writer.addVector(e);t.positions.push(n)},this),this.writer.context().moveDown(e)},w.prototype.processQr=function(t){var e=this.writer.addQr(t);t.positions.push(e)},t.exports=w},function(t,e,n){"use strict";(function(e){var r=n(0).isString,i=n(0).isNumber,a=n(0).isBoolean,o=n(0).isArray,s=n(0).isUndefined,l=n(0).fontStringify;function u(){}u.prototype.preprocessDocument=function(t){return this.tocs=[],this.nodeReferences=[],this.preprocessNode(t)},u.prototype.preprocessNode=function(t){if(o(t)?t={stack:t}:r(t)?t={text:t}:i(t)||a(t)?t={text:t.toString()}:null===t?t={text:""}:0===Object.keys(t).length&&(t={text:""}),t.columns)return this.preprocessColumns(t);if(t.stack)return this.preprocessVerticalContainer(t);if(t.ul)return this.preprocessList(t);if(t.ol)return this.preprocessList(t);if(t.table)return this.preprocessTable(t);if(void 0!==t.text)return this.preprocessText(t);if(t.toc)return this.preprocessToc(t);if(t.image)return this.preprocessImage(t);if(t.canvas)return this.preprocessCanvas(t);if(t.qr)return this.preprocessQr(t);if(t.pageReference||t.textReference)return this.preprocessText(t);throw"Unrecognized document structure: "+JSON.stringify(t,l)},u.prototype.preprocessColumns=function(t){for(var e=t.columns,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},u.prototype.preprocessVerticalContainer=function(t){for(var e=t.stack,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},u.prototype.preprocessList=function(t){for(var e=t.ul||t.ol,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},u.prototype.preprocessTable=function(t){var e,n,r,i;for(e=0,r=t.table.body[0].length;e<r;e++)for(n=0,i=t.table.body.length;n<i;n++){var a=t.table.body[n],o=a[e];void 0!==o&&(null===o&&(o=""),o._span||(a[e]=this.preprocessNode(o)))}return t},u.prototype.preprocessText=function(t){if(t.tocItem){o(t.tocItem)||(t.tocItem=[t.tocItem]);for(var e=0,n=t.tocItem.length;e<n;e++){r(t.tocItem[e])||(t.tocItem[e]="_default_");var i=t.tocItem[e];this.tocs[i]||(this.tocs[i]={toc:{_items:[],_pseudo:!0}}),this.tocs[i].toc._items.push(t)}}if(t.id)if(this.nodeReferences[t.id]){if(!this.nodeReferences[t.id]._pseudo)throw"Node id '"+t.id+"' already exists";this.nodeReferences[t.id]._nodeRef=t,this.nodeReferences[t.id]._pseudo=!1}else this.nodeReferences[t.id]={_nodeRef:t};return t.pageReference&&(this.nodeReferences[t.pageReference]||(this.nodeReferences[t.pageReference]={_nodeRef:{},_pseudo:!0}),t.text="00000",t._pageRef=this.nodeReferences[t.pageReference]),t.textReference&&(this.nodeReferences[t.textReference]||(this.nodeReferences[t.textReference]={_nodeRef:{},_pseudo:!0}),t.text="",t._textRef=this.nodeReferences[t.textReference]),t.text&&t.text.text&&(t.text=[this.preprocessNode(t.text)]),t},u.prototype.preprocessToc=function(t){if(t.toc.id||(t.toc.id="_default_"),t.toc.title=t.toc.title?this.preprocessNode(t.toc.title):null,t.toc._items=[],this.tocs[t.toc.id]){if(!this.tocs[t.toc.id].toc._pseudo)throw"TOC '"+t.toc.id+"' already exists";t.toc._items=this.tocs[t.toc.id].toc._items}return this.tocs[t.toc.id]=t,t},u.prototype.preprocessImage=function(t){return s(t.image.type)||s(t.image.data)||"Buffer"!==t.image.type||!o(t.image.data)||(t.image=e.from(t.image.data)),t},u.prototype.preprocessCanvas=function(t){return t},u.prototype.preprocessQr=function(t){return t},t.exports=u}).call(e,n(1).Buffer)},function(t,e,n){"use strict";var r=n(42),i=n(80),a=n(44),o=n(0).isString,s=n(0).isNumber,l=n(0).isObject,u=n(0).isArray,c=n(0).fontStringify,h=n(0).pack,f=n(134);function d(t,e,n,a,o,s){this.textTools=new r(t),this.styleStack=new i(e,n),this.imageMeasure=a,this.tableLayouts=o,this.images=s,this.autoImageIndex=1}d.prototype.measureDocument=function(t){return this.measureNode(t)},d.prototype.measureNode=function(t){var e=this;return this.styleStack.auto(t,function(){if(t._margin=function(){function n(t,e){return t.marginLeft||t.marginTop||t.marginRight||t.marginBottom?[t.marginLeft||e[0]||0,t.marginTop||e[1]||0,t.marginRight||e[2]||0,t.marginBottom||e[3]||0]:e}function r(t){return s(t)?t=[t,t,t,t]:u(t)&&2===t.length&&(t=[t[0],t[1],t[0],t[1]]),t}var i=[void 0,void 0,void 0,void 0];if(t.style){var a=u(t.style)?t.style:[t.style],o=function(t){for(var n={},r=t.length-1;r>=0;r--){var i=t[r],a=e.styleStack.styleDictionary[i];for(var o in a)a.hasOwnProperty(o)&&(n[o]=a[o])}return n}(a);o&&(i=n(o,i)),o.margin&&(i=r(o.margin))}i=n(t,i),t.margin&&(i=r(t.margin));return void 0===i[0]&&void 0===i[1]&&void 0===i[2]&&void 0===i[3]?null:i}(),t.columns)return n(e.measureColumns(t));if(t.stack)return n(e.measureVerticalContainer(t));if(t.ul)return n(e.measureUnorderedList(t));if(t.ol)return n(e.measureOrderedList(t));if(t.table)return n(e.measureTable(t));if(void 0!==t.text)return n(e.measureLeaf(t));if(t.toc)return n(e.measureToc(t));if(t.image)return n(e.measureImage(t));if(t.canvas)return n(e.measureCanvas(t));if(t.qr)return n(e.measureQr(t));throw"Unrecognized document structure: "+JSON.stringify(t,c)});function n(t){var e=t._margin;return e&&(t._minWidth+=e[0]+e[2],t._maxWidth+=e[0]+e[2]),t}},d.prototype.convertIfBase64Image=function(t){if(/^data:image\/(jpeg|jpg|png);base64,/.test(t.image)){var e="$$pdfmake$$"+this.autoImageIndex++;this.images[e]=t.image,t.image=e}},d.prototype.measureImage=function(t){this.images&&this.convertIfBase64Image(t);var e=this.imageMeasure.measureImage(t.image);if(t.fit){var n=e.width/e.height>t.fit[0]/t.fit[1]?t.fit[0]/e.width:t.fit[1]/e.height;t._width=t._minWidth=t._maxWidth=e.width*n,t._height=e.height*n}else t._width=t._minWidth=t._maxWidth=t.width||e.width,t._height=t.height||e.height*t._width/e.width,s(t.maxWidth)&&t.maxWidth<t._width&&(t._width=t._minWidth=t._maxWidth=t.maxWidth,t._height=t._width*e.height/e.width),s(t.maxHeight)&&t.maxHeight<t._height&&(t._height=t.maxHeight,t._width=t._minWidth=t._maxWidth=t._height*e.width/e.height),s(t.minWidth)&&t.minWidth>t._width&&(t._width=t._minWidth=t._maxWidth=t.minWidth,t._height=t._width*e.height/e.width),s(t.minHeight)&&t.minHeight>t._height&&(t._height=t.minHeight,t._width=t._minWidth=t._maxWidth=t._height*e.width/e.height);return t._alignment=this.styleStack.getProperty("alignment"),t},d.prototype.measureLeaf=function(t){t._textRef&&t._textRef._nodeRef.text&&(t.text=t._textRef._nodeRef.text);var e=this.styleStack.clone();e.push(t);var n=this.textTools.buildInlines(t.text,e);return t._inlines=n.items,t._minWidth=n.minWidth,t._maxWidth=n.maxWidth,t},d.prototype.measureToc=function(t){t.toc.title&&(t.toc.title=this.measureNode(t.toc.title));for(var e=[],n=t.toc.textStyle||{},r=t.toc.numberStyle||n,i=t.toc.textMargin||[0,0,0,0],a=0,o=t.toc._items.length;a<o;a++){var s=t.toc._items[a],l=t.toc._items[a].tocStyle||n,u=t.toc._items[a].tocMargin||i;e.push([{text:s.text,alignment:"left",style:l,margin:u},{text:"00000",alignment:"right",_tocItemRef:s,style:r,margin:[0,u[1],0,u[3]]}])}return t.toc._table={table:{dontBreakRows:!0,widths:["*","auto"],body:e},layout:"noBorders"},t.toc._table=this.measureNode(t.toc._table),t},d.prototype.measureVerticalContainer=function(t){var e=t.stack;t._minWidth=0,t._maxWidth=0;for(var n=0,r=e.length;n<r;n++)e[n]=this.measureNode(e[n]),t._minWidth=Math.max(t._minWidth,e[n]._minWidth),t._maxWidth=Math.max(t._maxWidth,e[n]._maxWidth);return t},d.prototype.gapSizeForList=function(){return this.textTools.sizeOfString("9. ",this.styleStack)},d.prototype.buildUnorderedMarker=function(t,e,n){var r,i,a,o,s,l,u,c,h,f,d=t.getProperty("markerColor")||t.getProperty("color")||"black";switch(n){case"circle":h=d,r={canvas:[{x:f=(c=e).fontSize/6,y:c.height/c.lineHeight+c.descender-c.fontSize/3,r1:f,r2:f,type:"ellipse",lineColor:h}]};break;case"square":l=d,u=(s=e).fontSize/3,r={canvas:[{x:0,y:s.height/s.lineHeight+s.descender-s.fontSize/3-u/2,h:u,w:u,type:"rect",color:l}]};break;case"none":r={};break;case"disc":default:a=d,r={canvas:[{x:o=(i=e).fontSize/6,y:i.height/i.lineHeight+i.descender-i.fontSize/3,r1:o,r2:o,type:"ellipse",color:a}]}}return r._minWidth=r._maxWidth=e.width,r._minHeight=r._maxHeight=e.height,r},d.prototype.buildOrderedMarker=function(t,e,n,r){function i(t){return t<1?t.toString():function t(e){return(e>=26?t((e/26>>0)-1):"")+"abcdefghijklmnopqrstuvwxyz"[e%26>>0]}(t-1)}function a(t){if(t<1||t>4999)return t.toString();var e,n=t,r={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},i="";for(e in r)for(;n>=r[e];)i+=e,n-=r[e];return i}var o;switch(n){case"none":o=null;break;case"upper-alpha":o=i(t).toUpperCase();break;case"lower-alpha":o=i(t);break;case"upper-roman":o=a(t);break;case"lower-roman":o=a(t).toLowerCase();break;case"decimal":default:o=t.toString()}if(null===o)return{};r&&(u(r)?(r[0]&&(o=r[0]+o),r[1]&&(o+=r[1]),o+=" "):o+=r+" ");var s={text:o},l=e.getProperty("markerColor");return l&&(s.color=l),{_inlines:this.textTools.buildInlines(s,e).items}},d.prototype.measureUnorderedList=function(t){var e=this.styleStack.clone(),n=t.ul;t.type=t.type||"disc",t._gapSize=this.gapSizeForList(),t._minWidth=0,t._maxWidth=0;for(var r=0,i=n.length;r<i;r++){var a=n[r]=this.measureNode(n[r]);a.ol||a.ul||(a.listMarker=this.buildUnorderedMarker(e,t._gapSize,a.listType||t.type)),t._minWidth=Math.max(t._minWidth,n[r]._minWidth+t._gapSize.width),t._maxWidth=Math.max(t._maxWidth,n[r]._maxWidth+t._gapSize.width)}return t},d.prototype.measureOrderedList=function(t){var e=this.styleStack.clone(),n=t.ol;t.type=t.type||"decimal",t.separator=t.separator||".",t.reversed=t.reversed||!1,t.start||(t.start=t.reversed?n.length:1),t._gapSize=this.gapSizeForList(),t._minWidth=0,t._maxWidth=0;for(var r=t.start,i=0,a=n.length;i<a;i++){(o=n[i]=this.measureNode(n[i])).ol||o.ul||(o.listMarker=this.buildOrderedMarker(o.counter||r,e,o.listType||t.type,t.separator),o.listMarker._inlines&&(t._gapSize.width=Math.max(t._gapSize.width,o.listMarker._inlines[0].width))),t._minWidth=Math.max(t._minWidth,n[i]._minWidth),t._maxWidth=Math.max(t._maxWidth,n[i]._maxWidth),t.reversed?r--:r++}t._minWidth+=t._gapSize.width,t._maxWidth+=t._gapSize.width;for(i=0,a=n.length;i<a;i++){var o;(o=n[i]).ol||o.ul||(o.listMarker._minWidth=o.listMarker._maxWidth=t._gapSize.width)}return t},d.prototype.measureColumns=function(t){var e=t.columns;t._gap=this.styleStack.getProperty("columnGap")||0;for(var n=0,r=e.length;n<r;n++)e[n]=this.measureNode(e[n]);var i=a.measureMinMax(e),o=e.length>0?e.length-1:0;return t._minWidth=i.min+t._gap*o,t._maxWidth=i.max+t._gap*o,t},d.prototype.measureTable=function(t){!function(t){t.table.widths||(t.table.widths="auto");if(o(t.table.widths))for(t.table.widths=[t.table.widths];t.table.widths.length<t.table.body[0].length;)t.table.widths.push(t.table.widths[t.table.widths.length-1]);for(var e=0,n=t.table.widths.length;e<n;e++){var r=t.table.widths[e];(s(r)||o(r))&&(t.table.widths[e]={width:r})}}(t),t._layout=function(e){var n=t.layout;o(n)&&(n=e[n]);return h({hLineWidth:function(t,e){return 1},vLineWidth:function(t,e){return 1},hLineColor:function(t,e){return"black"},vLineColor:function(t,e){return"black"},paddingLeft:function(t,e){return 4},paddingRight:function(t,e){return 4},paddingTop:function(t,e){return 2},paddingBottom:function(t,e){return 2},fillColor:function(t,e){return null},defaultBorder:!0},n)}(this.tableLayouts),t._offsets=function(e){for(var n=[],r=0,i=0,a=0,o=t.table.widths.length;a<o;a++){var s=i+e.vLineWidth(a,t)+e.paddingLeft(a,t);n.push(s),r+=s,i=e.paddingRight(a,t)}return{total:r+=i+e.vLineWidth(t.table.widths.length,t),offsets:n}}(t._layout);var e,n,r,i,u=[];for(e=0,r=t.table.body[0].length;e<r;e++){var c=t.table.widths[e];for(c._minWidth=0,c._maxWidth=0,n=0,i=t.table.body.length;n<i;n++){var f=t.table.body[n],d=f[e];if(void 0===d)throw"Malformed table row, a cell is undefined.";null===d&&(d=""),d._span||((d=f[e]=this.styleStack.auto(d,g(this,d))).colSpan&&d.colSpan>1?(v(f,e,d.colSpan),u.push({col:e,span:d.colSpan,minWidth:d._minWidth,maxWidth:d._maxWidth})):(c._minWidth=Math.max(c._minWidth,d._minWidth),c._maxWidth=Math.max(c._maxWidth,d._maxWidth))),d.rowSpan&&d.rowSpan>1&&b(t.table,n,e,d.rowSpan)}}!function(){for(var e,n,r=0,i=u.length;r<i;r++){var a=u[r],o=y(a.col,a.span,t._offsets),s=a.minWidth-o.minWidth,l=a.maxWidth-o.maxWidth;if(s>0)for(e=s/a.span,n=0;n<a.span;n++)t.table.widths[a.col+n]._minWidth+=e;if(l>0)for(e=l/a.span,n=0;n<a.span;n++)t.table.widths[a.col+n]._maxWidth+=e}}();var p=a.measureMinMax(t.table.widths);return t._minWidth=p.min+t._offsets.total,t._maxWidth=p.max+t._offsets.total,t;function g(t,e){return function(){return l(e)&&(e.fillColor=t.styleStack.getProperty("fillColor")),t.measureNode(e)}}function y(e,n,r){for(var i={minWidth:0,maxWidth:0},a=0;a<n;a++)i.minWidth+=t.table.widths[e+a]._minWidth+(a?r.offsets[e+a]:0),i.maxWidth+=t.table.widths[e+a]._maxWidth+(a?r.offsets[e+a]:0);return i}function v(t,e,n){for(var r=1;r<n;r++)t[e+r]={_span:!0,_minWidth:0,_maxWidth:0,rowSpan:t[e].rowSpan}}function b(t,e,n,r){for(var i=1;i<r;i++)t.body[e+i][n]={_span:!0,_minWidth:0,_maxWidth:0,fillColor:t.body[e][n].fillColor}}},d.prototype.measureCanvas=function(t){for(var e=0,n=0,r=0,i=t.canvas.length;r<i;r++){var a=t.canvas[r];switch(a.type){case"ellipse":e=Math.max(e,a.x+a.r1),n=Math.max(n,a.y+a.r2);break;case"rect":e=Math.max(e,a.x+a.w),n=Math.max(n,a.y+a.h);break;case"line":e=Math.max(e,a.x1,a.x2),n=Math.max(n,a.y1,a.y2);break;case"polyline":for(var o=0,s=a.points.length;o<s;o++)e=Math.max(e,a.points[o].x),n=Math.max(n,a.points[o].y)}}return t._minWidth=t._maxWidth=e,t._minHeight=t._maxHeight=n,t._alignment=this.styleStack.getProperty("alignment"),t},d.prototype.measureQr=function(t){return(t=f.measure(t))._alignment=this.styleStack.getProperty("alignment"),t},t.exports=d},function(t,e,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";!function(t){"use strict";var e="undefined"!=typeof Uint8Array?Uint8Array:Array,n="+".charCodeAt(0),i="/".charCodeAt(0),a="0".charCodeAt(0),o="a".charCodeAt(0),s="A".charCodeAt(0),l="-".charCodeAt(0),u="_".charCodeAt(0);function c(t){var e=t.charCodeAt(0);return e===n||e===l?62:e===i||e===u?63:e<a?-1:e<a+10?e-a+26+26:e<s+26?e-s:e<o+26?e-o+26:void 0}t.toByteArray=function(t){var n,r,i,a,o,s;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var l=t.length;o="="===t.charAt(l-2)?2:"="===t.charAt(l-1)?1:0,s=new e(3*t.length/4-o),i=o>0?t.length-4:t.length;var u=0;function h(t){s[u++]=t}for(n=0,r=0;n<i;n+=4,r+=3)h((16711680&(a=c(t.charAt(n))<<18|c(t.charAt(n+1))<<12|c(t.charAt(n+2))<<6|c(t.charAt(n+3))))>>16),h((65280&a)>>8),h(255&a);return 2===o?h(255&(a=c(t.charAt(n))<<2|c(t.charAt(n+1))>>4)):1===o&&(h((a=c(t.charAt(n))<<10|c(t.charAt(n+1))<<4|c(t.charAt(n+2))>>2)>>8&255),h(255&a)),s},t.fromByteArray=function(t){var e,n,i,a,o=t.length%3,s="";function l(t){return r.charAt(t)}for(e=0,i=t.length-o;e<i;e+=3)n=(t[e]<<16)+(t[e+1]<<8)+t[e+2],s+=l((a=n)>>18&63)+l(a>>12&63)+l(a>>6&63)+l(63&a);switch(o){case 1:s+=l((n=t[t.length-1])>>2),s+=l(n<<4&63),s+="==";break;case 2:s+=l((n=(t[t.length-2]<<8)+t[t.length-1])>>10),s+=l(n>>4&63),s+=l(n<<2&63),s+="="}return s}}(e)},function(t,e){(function(){e.OP=0,e.CL=1,e.CP=2,e.QU=3,e.GL=4,e.NS=5,e.EX=6,e.SY=7,e.IS=8,e.PR=9,e.PO=10,e.NU=11,e.AL=12,e.HL=13,e.ID=14,e.IN=15,e.HY=16,e.BA=17,e.BB=18,e.B2=19,e.ZW=20,e.CM=21,e.WJ=22,e.H2=23,e.H3=24,e.JL=25,e.JV=26,e.JT=27,e.RI=28,e.AI=29,e.BK=30,e.CB=31,e.CJ=32,e.CR=33,e.LF=34,e.NL=35,e.SA=36,e.SG=37,e.SP=38,e.XX=39}).call(this)},function(t,e){(function(){e.DI_BRK=0,e.IN_BRK=1,e.CI_BRK=2,e.CP_BRK=3,e.PR_BRK=4,e.pairTable=[[4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4],[0,4,4,1,1,4,4,4,4,1,1,0,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,4,4,4,4,1,1,1,1,1,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[4,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,1,4,4,4,0,0,1,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,1,4,4,4,0,0,1,1,1,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,1,0,1,1,0,0,4,2,4,1,1,1,1,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,0,1,4,4,4,0,0,1,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[0,4,4,1,0,1,4,4,4,0,0,0,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,0,1,1,0,4,4,2,4,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,1,1,1,1,0,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,0,1,1,0,0,4,2,4,0,0,0,0,0,1]]}).call(this)},function(t,e,n){"use strict";for(var r=[null,[[10,7,17,13],[1,1,1,1],[]],[[16,10,28,22],[1,1,1,1],[4,16]],[[26,15,22,18],[1,1,2,2],[4,20]],[[18,20,16,26],[2,1,4,2],[4,24]],[[24,26,22,18],[2,1,4,4],[4,28]],[[16,18,28,24],[4,2,4,4],[4,32]],[[18,20,26,18],[4,2,5,6],[4,20,36]],[[22,24,26,22],[4,2,6,6],[4,22,40]],[[22,30,24,20],[5,2,8,8],[4,24,44]],[[26,18,28,24],[5,4,8,8],[4,26,48]],[[30,20,24,28],[5,4,11,8],[4,28,52]],[[22,24,28,26],[8,4,11,10],[4,30,56]],[[22,26,22,24],[9,4,16,12],[4,32,60]],[[24,30,24,20],[9,4,16,16],[4,24,44,64]],[[24,22,24,30],[10,6,18,12],[4,24,46,68]],[[28,24,30,24],[10,6,16,17],[4,24,48,72]],[[28,28,28,28],[11,6,19,16],[4,28,52,76]],[[26,30,28,28],[13,6,21,18],[4,28,54,80]],[[26,28,26,26],[14,7,25,21],[4,28,56,84]],[[26,28,28,30],[16,8,25,20],[4,32,60,88]],[[26,28,30,28],[17,8,25,23],[4,26,48,70,92]],[[28,28,24,30],[17,9,34,23],[4,24,48,72,96]],[[28,30,30,30],[18,9,30,25],[4,28,52,76,100]],[[28,30,30,30],[20,10,32,27],[4,26,52,78,104]],[[28,26,30,30],[21,12,35,29],[4,30,56,82,108]],[[28,28,30,28],[23,12,37,34],[4,28,56,84,112]],[[28,30,30,30],[25,12,40,34],[4,32,60,88,116]],[[28,30,30,30],[26,13,42,35],[4,24,48,72,96,120]],[[28,30,30,30],[28,14,45,38],[4,28,52,76,100,124]],[[28,30,30,30],[29,15,48,40],[4,24,50,76,102,128]],[[28,30,30,30],[31,16,51,43],[4,28,54,80,106,132]],[[28,30,30,30],[33,17,54,45],[4,32,58,84,110,136]],[[28,30,30,30],[35,18,57,48],[4,28,56,84,112,140]],[[28,30,30,30],[37,19,60,51],[4,32,60,88,116,144]],[[28,30,30,30],[38,19,63,53],[4,28,52,76,100,124,148]],[[28,30,30,30],[40,20,66,56],[4,22,48,74,100,126,152]],[[28,30,30,30],[43,21,70,59],[4,26,52,78,104,130,156]],[[28,30,30,30],[45,22,74,62],[4,30,56,82,108,134,160]],[[28,30,30,30],[47,24,77,65],[4,24,52,80,108,136,164]],[[28,30,30,30],[49,25,81,68],[4,28,56,84,112,140,168]]],i=1,a=2,o=4,s=/^\d*$/,l=/^[A-Za-z0-9 $%*+\-./:]*$/,u=/^[A-Z0-9 $%*+\-./:]*$/,c=1,h=0,f=3,d=2,p=[],g=[-1],y=0,v=1;y<255;++y)p.push(v),g[v]=y,v=2*v^(v>=128?285:0);var b=[[]];for(y=0;y<30;++y){for(var m=b[y],w=[],x=0;x<=y;++x){var S=x<y?p[m[x]]:0,_=p[(y+(m[x-1]||0))%255];w.push(g[S^_])}b.push(w)}var k={};for(y=0;y<45;++y)k["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:".charAt(y)]=y;var C=[function(t,e){return(t+e)%2==0},function(t,e){return t%2==0},function(t,e){return e%3==0},function(t,e){return(t+e)%3==0},function(t,e){return((t/2|0)+(e/3|0))%2==0},function(t,e){return t*e%2+t*e%3==0},function(t,e){return(t*e%2+t*e%3)%2==0},function(t,e){return((t+e)%2+t*e%3)%2==0}],A=function(t){return t>6},P=function(t,e){var n,i,a,o=-8&(i=r[n=t],a=16*n*n+128*n+64,A(n)&&(a-=36),i[2].length&&(a-=25*i[2].length*i[2].length-10*i[2].length-55),a),s=r[t];return o-=8*s[0][e]*s[1][e]},E=function(t,e){switch(e){case i:return t<10?10:t<27?12:14;case a:return t<10?9:t<27?11:13;case o:return t<10?8:16;case 8:return t<10?8:t<27?10:12}},I=function(t,e,n){var r=P(t,n)-4-E(t,e);switch(e){case i:return 3*(r/10|0)+(r%10<4?0:r%10<7?1:2);case a:return 2*(r/11|0)+(r%11<6?0:1);case o:return r/8|0;case 8:return r/13|0}},T=function(t,e){switch(t){case i:return e.match(s)?e:null;case a:return e.match(l)?e.toUpperCase():null;case o:if("string"==typeof e){for(var n=[],r=0;r<e.length;++r){var u=e.charCodeAt(r);u<128?n.push(u):u<2048?n.push(192|u>>6,128|63&u):u<65536?n.push(224|u>>12,128|u>>6&63,128|63&u):n.push(240|u>>18,128|u>>12&63,128|u>>6&63,128|63&u)}return n}return e}},O=function(t,e){for(var n=t.slice(0),r=t.length,i=e.length,a=0;a<i;++a)n.push(0);for(a=0;a<r;){var o=g[n[a++]];if(o>=0)for(var s=0;s<i;++s)n[a+s]^=p[(o+e[s])%255]}return n.slice(r)},L=function(t,e,n,r){for(var i=t<<r,a=e-1;a>=0;--a)i>>r+a&1&&(i^=n<<a);return t<<r|i},B=function(t,e,n){for(var r=C[n],i=t.length,a=0;a<i;++a)for(var o=0;o<i;++o)e[a][o]||(t[a][o]^=r(a,o));return t},M=function(t,e,n,r){for(var i=t.length,a=21522^L(n<<3|r,5,1335,10),o=0;o<15;++o){var s=[i-1,i-2,i-3,i-4,i-5,i-6,i-7,i-8,7,5,4,3,2,1,0][o];t[[0,1,2,3,4,5,7,8,i-7,i-6,i-5,i-4,i-3,i-2,i-1][o]][8]=t[8][s]=a>>o&1}return t},R=function(t){for(var e=function(t){for(var e=0,n=0;n<t.length;++n)t[n]>=5&&(e+=t[n]-5+3);for(n=5;n<t.length;n+=2){var r=t[n];t[n-1]==r&&t[n-2]==3*r&&t[n-3]==r&&t[n-4]==r&&(t[n-5]>=4*r||t[n+1]>=4*r)&&(e+=40)}return e},n=t.length,r=0,i=0,a=0;a<n;++a){var o,s=t[a];o=[0];for(var l=0;l<n;){for(u=0;l<n&&s[l];++u)++l;for(o.push(u),u=0;l<n&&!s[l];++u)++l;o.push(u)}r+=e(o),o=[0];for(l=0;l<n;){var u;for(u=0;l<n&&t[l][a];++u)++l;for(o.push(u),u=0;l<n&&!t[l][a];++u)++l;o.push(u)}r+=e(o);var c=t[a+1]||[];i+=s[0];for(l=1;l<n;++l){var h=s[l];i+=h,s[l-1]==h&&c[l]===h&&c[l-1]===h&&(r+=3)}}return r+=10*(Math.abs(i/n/n-.5)/.05|0)},F=function(t,e,n,s,l){var u=r[e],c=function(t,e,n,r){var s=[],l=0,u=8,c=n.length,h=function(t,e){if(e>=u){for(s.push(l|t>>(e-=u));e>=8;)s.push(t>>(e-=8)&255);l=0,u=8}e>0&&(l|=(t&(1<<e)-1)<<(u-=e))},f=E(t,e);switch(h(e,4),h(c,f),e){case i:for(var d=2;d<c;d+=3)h(parseInt(n.substring(d-2,d+1),10),10);h(parseInt(n.substring(d-2),10),[0,4,7][c%3]);break;case a:for(d=1;d<c;d+=2)h(45*k[n.charAt(d-1)]+k[n.charAt(d)],11);c%2==1&&h(k[n.charAt(d-1)],6);break;case o:for(d=0;d<c;++d)h(n[d],8)}for(h(0,4),u<8&&s.push(l);s.length+1<r;)s.push(236,17);return s.length<r&&s.push(236),s}(e,n,t,P(e,s)>>3);c=function(t,e,n){for(var r=[],i=t.length/e|0,a=0,o=e-t.length%e,s=0;s<o;++s)r.push(a),a+=i;for(s=o;s<e;++s)r.push(a),a+=i+1;r.push(a);var l=[];for(s=0;s<e;++s)l.push(O(t.slice(r[s],r[s+1]),n));var u=[],c=t.length/e|0;for(s=0;s<c;++s)for(var h=0;h<e;++h)u.push(t[r[h]+s]);for(h=o;h<e;++h)u.push(t[r[h+1]-1]);for(s=0;s<n.length;++s)for(h=0;h<e;++h)u.push(l[h][s]);return u}(c,u[1][s],b[u[0][s]]);var h=function(t){for(var e=r[t],n=4*t+17,i=[],a=[],o=0;o<n;++o)i.push([]),a.push([]);var s=function(t,e,n,r,o){for(var s=0;s<n;++s)for(var l=0;l<r;++l)i[t+s][e+l]=o[s]>>l&1,a[t+s][e+l]=1};s(0,0,9,9,[127,65,93,93,93,65,383,0,64]),s(n-8,0,8,9,[256,127,65,93,93,93,65,127]),s(0,n-8,9,8,[254,130,186,186,186,130,254,0,0]);for(o=9;o<n-8;++o)i[6][o]=i[o][6]=1&~o,a[6][o]=a[o][6]=1;var l=e[2],u=l.length;for(o=0;o<u;++o)for(var c=0===o?u-1:u,h=0===o||o===u-1?1:0;h<c;++h)s(l[o],l[h],5,5,[31,17,21,17,31]);if(A(t)){var f=L(t,6,7973,12),d=0;for(o=0;o<6;++o)for(h=0;h<3;++h)i[o][n-11+h]=i[n-11+h][o]=f>>d++&1,a[o][n-11+h]=a[n-11+h][o]=1}return{matrix:i,reserved:a}}(e),f=h.matrix,d=h.reserved;if(function(t,e,n){for(var r=t.length,i=0,a=-1,o=r-1;o>=0;o-=2){6==o&&--o;for(var s=a<0?r-1:0,l=0;l<r;++l){for(var u=o;u>o-2;--u)e[s][u]||(t[s][u]=n[i>>3]>>(7&~i)&1,++i);s+=a}a=-a}}(f,d,c),l<0){B(f,d,0),M(f,0,s,0);var p=0,g=R(f);for(B(f,d,0),l=1;l<8;++l){B(f,d,l),M(f,0,s,l);var y=R(f);g>y&&(g=y,p=l),B(f,d,l)}l=p}return B(f,d,l),M(f,0,s,l),f};function D(t,e){var n=[],r=e.background||"#fff",l=e.foreground||"#000",p=function(t,e){var n={numeric:i,alphanumeric:a,octet:o},r={L:c,M:h,Q:f,H:d},l=(e=e||{}).version||-1,p=r[(e.eccLevel||"L").toUpperCase()],g=e.mode?n[e.mode.toLowerCase()]:-1,y="mask"in e?e.mask:-1;if(g<0)g="string"==typeof t?t.match(s)?i:t.match(u)?a:o:o;else if(g!=i&&g!=a&&g!=o)throw"invalid or unsupported mode";if(null===(t=T(g,t)))throw"invalid data format";if(p<0||p>3)throw"invalid ECC level";if(l<0){for(l=1;l<=40&&!(t.length<=I(l,g,p));++l);if(l>40)throw"too large data for the Qr format"}else if(l<1||l>40)throw"invalid Qr version! should be between 1 and 40";if(-1!=y&&(y<0||y>8))throw"invalid mask";return F(t,l,g,p,y)}(t,e),g=p.length,y=Math.floor(e.fit?e.fit/g:5),v=g*y;n.push({type:"rect",x:0,y:0,w:v,h:v,lineWidth:0,color:r});for(var b=0;b<g;++b)for(var m=0;m<g;++m)p[b][m]&&n.push({type:"rect",x:y*m,y:y*b,w:y,h:y,lineWidth:0,color:l});return{canvas:n,size:v}}t.exports={measure:function(t){var e=D(t.qr,t);return t._canvas=e.canvas,t._width=t._height=t._minWidth=t._maxWidth=t._minHeight=t._maxHeight=e.size,t}}},function(t,e,n){"use strict";var r=n(136);function i(t,e){this.transactionLevel=0,this.repeatables=[],this.tracker=e,this.writer=new r(t,e)}function a(t,e){var n=e(t);return n||(t.moveToNextPage(),n=e(t)),n}i.prototype.addLine=function(t,e,n){return a(this,function(r){return r.writer.addLine(t,e,n)})},i.prototype.addImage=function(t,e){return a(this,function(n){return n.writer.addImage(t,e)})},i.prototype.addQr=function(t,e){return a(this,function(n){return n.writer.addQr(t,e)})},i.prototype.addVector=function(t,e,n,r){return this.writer.addVector(t,e,n,r)},i.prototype.beginClip=function(t,e){return this.writer.beginClip(t,e)},i.prototype.endClip=function(){return this.writer.endClip()},i.prototype.alignCanvas=function(t){this.writer.alignCanvas(t)},i.prototype.addFragment=function(t,e,n,r){this.writer.addFragment(t,e,n,r)||(this.moveToNextPage(),this.writer.addFragment(t,e,n,r))},i.prototype.moveToNextPage=function(t){var e=this.writer.context.moveToNextPage(t);e.newPageCreated?this.repeatables.forEach(function(t){this.writer.addFragment(t,!0)},this):this.repeatables.forEach(function(t){this.writer.context.moveDown(t.height)},this),this.writer.tracker.emit("pageChanged",{prevPage:e.prevPage,prevY:e.prevY,y:e.y})},i.prototype.beginUnbreakableBlock=function(t,e){0==this.transactionLevel++&&(this.originalX=this.writer.context.x,this.writer.pushContext(t,e))},i.prototype.commitUnbreakableBlock=function(t,e){if(0==--this.transactionLevel){var n=this.writer.context;this.writer.popContext();var r=n.pages.length;if(r>0){var i=n.pages[0];if(i.xOffset=t,i.yOffset=e,r>1)if(void 0!==t||void 0!==e)i.height=n.getCurrentPage().pageSize.height-n.pageMargins.top-n.pageMargins.bottom;else{i.height=this.writer.context.getCurrentPage().pageSize.height-this.writer.context.pageMargins.top-this.writer.context.pageMargins.bottom;for(var a=0,o=this.repeatables.length;a<o;a++)i.height-=this.repeatables[a].height}else i.height=n.y;void 0!==t||void 0!==e?this.writer.addFragment(i,!0,!0,!0):this.addFragment(i)}}},i.prototype.currentBlockToRepeatable=function(){var t=this.writer.context,e={items:[]};return t.pages[0].items.forEach(function(t){e.items.push(t)}),e.xOffset=this.originalX,e.height=t.y,e},i.prototype.pushToRepeatables=function(t){this.repeatables.push(t)},i.prototype.popFromRepeatables=function(){this.repeatables.pop()},i.prototype.context=function(){return this.writer.context},t.exports=i},function(t,e,n){"use strict";var r=n(82),i=n(0).isNumber,a=n(0).pack,o=n(0).offsetVector,s=n(81);function l(t,e){this.context=t,this.contextStack=[],this.tracker=e}function u(t,e,n){null==n||n<0||n>t.items.length?t.items.push(e):t.items.splice(n,0,e)}l.prototype.addLine=function(t,e,n){var r=t.getHeight(),i=this.context,a=i.getCurrentPage(),o=this.getCurrentPositionOnPage();return!(i.availableHeight<r||!a)&&(t.x=i.x+(t.x||0),t.y=i.y+(t.y||0),this.alignLine(t),u(a,{type:"line",item:t},n),this.tracker.emit("lineAdded",t),e||i.moveDown(r),o)},l.prototype.alignLine=function(t){var e=this.context.availableWidth,n=t.getWidth(),r=t.inlines&&t.inlines.length>0&&t.inlines[0].alignment,i=0;switch(r){case"right":i=e-n;break;case"center":i=(e-n)/2}if(i&&(t.x=(t.x||0)+i),"justify"===r&&!t.newLineForced&&!t.lastLineInParagraph&&t.inlines.length>1)for(var a=(e-n)/(t.inlines.length-1),o=1,s=t.inlines.length;o<s;o++)i=o*a,t.inlines[o].x+=i,t.inlines[o].justifyShift=a},l.prototype.addImage=function(t,e){var n=this.context,r=n.getCurrentPage(),i=this.getCurrentPositionOnPage();return!(!r||void 0===t.absolutePosition&&n.availableHeight<t._height&&r.items.length>0)&&(void 0===t._x&&(t._x=t.x||0),t.x=n.x+t._x,t.y=n.y,this.alignImage(t),u(r,{type:"image",item:t},e),n.moveDown(t._height),i)},l.prototype.addQr=function(t,e){var n=this.context,r=n.getCurrentPage(),i=this.getCurrentPositionOnPage();if(!r||void 0===t.absolutePosition&&n.availableHeight<t._height)return!1;void 0===t._x&&(t._x=t.x||0),t.x=n.x+t._x,t.y=n.y,this.alignImage(t);for(var a=0,o=t._canvas.length;a<o;a++){var s=t._canvas[a];s.x+=t.x,s.y+=t.y,this.addVector(s,!0,!0,e)}return n.moveDown(t._height),i},l.prototype.alignImage=function(t){var e=this.context.availableWidth,n=t._minWidth,r=0;switch(t._alignment){case"right":r=e-n;break;case"center":r=(e-n)/2}r&&(t.x=(t.x||0)+r)},l.prototype.alignCanvas=function(t){var e=this.context.availableWidth,n=t._minWidth,r=0;switch(t._alignment){case"right":r=e-n;break;case"center":r=(e-n)/2}r&&t.canvas.forEach(function(t){o(t,r,0)})},l.prototype.addVector=function(t,e,n,r){var i=this.context,a=i.getCurrentPage(),s=this.getCurrentPositionOnPage();if(a)return o(t,e?0:i.x,n?0:i.y),u(a,{type:"vector",item:t},r),s},l.prototype.beginClip=function(t,e){var n=this.context;return n.getCurrentPage().items.push({type:"beginClip",item:{x:n.x,y:n.y,width:t,height:e}}),!0},l.prototype.endClip=function(){return this.context.getCurrentPage().items.push({type:"endClip"}),!0},l.prototype.addFragment=function(t,e,n,i){var s=this.context,l=s.getCurrentPage();return!(!e&&t.height>s.availableHeight)&&(t.items.forEach(function(i){switch(i.type){case"line":var u=function(t){var e=new r(t.maxWidth);for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}(i.item);u.x=(u.x||0)+(e?t.xOffset||0:s.x),u.y=(u.y||0)+(n?t.yOffset||0:s.y),l.items.push({type:"line",item:u});break;case"vector":var c=a(i.item);o(c,e?t.xOffset||0:s.x,n?t.yOffset||0:s.y),l.items.push({type:"vector",item:c});break;case"image":var h=a(i.item);h.x=(h.x||0)+(e?t.xOffset||0:s.x),h.y=(h.y||0)+(n?t.yOffset||0:s.y),l.items.push({type:"image",item:h})}}),i||s.moveDown(t.height),!0)},l.prototype.pushContext=function(t,e){void 0===t&&(e=this.context.getCurrentPage().height-this.context.pageMargins.top-this.context.pageMargins.bottom,t=this.context.availableWidth),i(t)&&(t=new s({width:t,height:e},{left:0,right:0,top:0,bottom:0})),this.contextStack.push(this.context),this.context=t},l.prototype.popContext=function(){this.context=this.contextStack.pop()},l.prototype.getCurrentPositionOnPage=function(){return(this.contextStack[0]||this.context).getCurrentPosition()},t.exports=l},function(t,e,n){"use strict";var r=n(44),i=n(0).isFunction;function a(t){this.tableNode=t}a.prototype.beginTable=function(t){var e,n,i,a=this;e=this.tableNode,this.offsets=e._offsets,this.layout=e._layout,n=t.context().availableWidth-this.offsets.total,r.buildColumnWidths(e.table.widths,n),this.tableWidth=e._offsets.total+(i=0,e.table.widths.forEach(function(t){i+=t._calcWidth}),i),this.rowSpanData=function(){var t=[],e=0,n=0;t.push({left:0,rowSpan:0});for(var r=0,i=a.tableNode.table.body[0].length;r<i;r++){var o=a.layout.paddingLeft(r,a.tableNode)+a.layout.paddingRight(r,a.tableNode),s=a.layout.vLineWidth(r,a.tableNode);n=o+s+a.tableNode.table.widths[r]._calcWidth,t[t.length-1].width=n,e+=n,t.push({left:e,rowSpan:0,width:0})}return t}(),this.cleanUpRepeatables=!1,this.headerRows=e.table.headerRows||0,this.rowsWithoutPageBreak=this.headerRows+(e.table.keepWithHeaderRows||0),this.dontBreakRows=e.table.dontBreakRows||!1,this.rowsWithoutPageBreak&&t.beginUnbreakableBlock(),function(t){for(var e=0;e<t.length;e++)for(var n=t[e],r=0;r<n.length;r++){var i=n[r];if(i.border){for(var a=i.rowSpan||1,o=i.colSpan||1,s=0;s<a;s++)void 0!==i.border[0]&&s>0&&u(e+s,r,0,i.border[0]),void 0!==i.border[2]&&u(e+s,r+o-1,2,i.border[2]);for(var l=0;l<o;l++)void 0!==i.border[1]&&l>0&&u(e,r+l,1,i.border[1]),void 0!==i.border[3]&&u(e+a-1,r+l,3,i.border[3])}}function u(e,n,r,i){var a=t[e][n];a.border=a.border||{},a.border[r]=i}}(this.tableNode.table.body),this.drawHorizontalLine(0,t)},a.prototype.onRowBreak=function(t,e){var n=this;return function(){var t=n.rowPaddingTop+(n.headerRows?0:n.topLineWidth);e.context().availableHeight-=n.reservedAtBottom,e.context().moveDown(t)}},a.prototype.beginRow=function(t,e){this.topLineWidth=this.layout.hLineWidth(t,this.tableNode),this.rowPaddingTop=this.layout.paddingTop(t,this.tableNode),this.bottomLineWidth=this.layout.hLineWidth(t+1,this.tableNode),this.rowPaddingBottom=this.layout.paddingBottom(t,this.tableNode),this.rowCallback=this.onRowBreak(t,e),e.tracker.startTracking("pageChanged",this.rowCallback),this.dontBreakRows&&e.beginUnbreakableBlock(),this.rowTopY=e.context().y,this.reservedAtBottom=this.bottomLineWidth+this.rowPaddingBottom,e.context().availableHeight-=this.reservedAtBottom,e.context().moveDown(this.rowPaddingTop)},a.prototype.drawHorizontalLine=function(t,e,n){var r=this.layout.hLineWidth(t,this.tableNode);if(r){for(var a=r/2,o=null,s=this.tableNode.table.body,l=0,u=this.rowSpanData.length;l<u;l++){var c=this.rowSpanData[l],h=!c.rowSpan;if(h&&l<u-1){var f=!1,d=!1;if(t<s.length){var p=s[t][l];f=p.border?p.border[1]:this.layout.defaultBorder}if(t>0){var g=s[t-1][l];d=g.border?g.border[3]:this.layout.defaultBorder}h=f||d}!o&&h&&(o={left:c.left,width:0}),h&&(o.width+=c.width||0);var y=(n||0)+a;h&&l!==u-1||o&&o.width&&(e.addVector({type:"line",x1:o.left,x2:o.left+o.width,y1:y,y2:y,lineWidth:r,lineColor:i(this.layout.hLineColor)?this.layout.hLineColor(t,this.tableNode):this.layout.hLineColor},!1,n),o=null)}e.context().moveDown(r)}},a.prototype.drawVerticalLine=function(t,e,n,r,a){var o=this.layout.vLineWidth(r,this.tableNode);0!==o&&a.addVector({type:"line",x1:t+o/2,x2:t+o/2,y1:e,y2:n,lineWidth:o,lineColor:i(this.layout.vLineColor)?this.layout.vLineColor(r,this.tableNode):this.layout.vLineColor},!1,!0)},a.prototype.endTable=function(t){this.cleanUpRepeatables&&(t.popFromRepeatables(),this.headerRepeatableHeight=null)},a.prototype.endRow=function(t,e,n){var r,a,o=this;e.tracker.stopTracking("pageChanged",this.rowCallback),e.context().moveDown(this.layout.paddingBottom(t,this.tableNode)),e.context().availableHeight+=this.reservedAtBottom;var s=e.context().page,l=e.context().y,u=function(){for(var e=[],n=0,r=0,i=o.tableNode.table.body[t].length;r<i;r++){if(!n){e.push({x:o.rowSpanData[r].left,index:r});var a=o.tableNode.table.body[t][r];n=a._colSpan||a.colSpan||0}n>0&&n--}return e.push({x:o.rowSpanData[o.rowSpanData.length-1].left,index:o.rowSpanData.length-1}),e}(),c=[],h=n&&n.length>0,f=this.tableNode.table.body;if(c.push({y0:this.rowTopY,page:h?n[0].prevPage:s}),h)for(a=0,r=n.length;a<r;a++){var d=n[a];c[c.length-1].y1=d.prevY,c.push({y0:d.y,page:d.prevPage+1}),this.headerRepeatableHeight&&(c[c.length-1].y0+=this.headerRepeatableHeight)}c[c.length-1].y1=l;for(var p=c[0].y1-c[0].y0===this.rowPaddingTop?1:0,g=c.length;p<g;p++){var y=p<c.length-1,v=p>0&&!this.headerRows,b=v?0:this.topLineWidth,m=c[p].y0,w=c[p].y1;for(y&&(w+=this.rowPaddingBottom),e.context().page!=c[p].page&&(e.context().page=c[p].page,this.reservedAtBottom=0),a=0,r=u.length;a<r;a++){var x,S=!1,_=!1,k=u[a].index;if(k<f[t].length)S=(x=f[t][k]).border?x.border[0]:this.layout.defaultBorder;if(k>0)_=(x=f[t][k-1]).border?x.border[2]:this.layout.defaultBorder;if((S||_)&&this.drawVerticalLine(u[a].x,m-b,w+this.bottomLineWidth,u[a].index,e),a<r-1){var C=f[t][k].fillColor;if(C||(C=i(this.layout.fillColor)?this.layout.fillColor(t,this.tableNode,k):this.layout.fillColor),C){var A=S||_?this.layout.vLineWidth(k,this.tableNode):0,P=u[a].x+A,E=this.dontBreakRows?m:m-b;e.addVector({type:"rect",x:P,y:E,w:u[a+1].x-P,h:w+this.bottomLineWidth-E,lineWidth:0,color:C},!1,!0,e.context().hasBackground?1:0)}}}y&&!1!==this.layout.hLineWhenBroken&&this.drawHorizontalLine(t+1,e,w),v&&!1!==this.layout.hLineWhenBroken&&this.drawHorizontalLine(t,e,m)}e.context().page=s,e.context().y=l;var I=this.tableNode.table.body[t];for(a=0,r=I.length;a<r;a++){if(I[a].rowSpan&&(this.rowSpanData[a].rowSpan=I[a].rowSpan,I[a].colSpan&&I[a].colSpan>1))for(var T=1;T<I[a].rowSpan;T++)this.tableNode.table.body[t+T][a]._colSpan=I[a].colSpan;this.rowSpanData[a].rowSpan>0&&this.rowSpanData[a].rowSpan--}this.drawHorizontalLine(t+1,e),this.headerRows&&t===this.headerRows-1&&(this.headerRepeatable=e.currentBlockToRepeatable()),this.dontBreakRows&&e.tracker.auto("pageChanged",function(){o.headerRows||!1===o.layout.hLineWhenBroken||o.drawHorizontalLine(t,e)},function(){e.commitUnbreakableBlock()}),!this.headerRepeatable||t!==this.rowsWithoutPageBreak-1&&t!==this.tableNode.table.body.length-1||(this.headerRepeatableHeight=this.headerRepeatable.height,e.commitUnbreakableBlock(),e.pushToRepeatables(this.headerRepeatable),this.cleanUpRepeatables=!0,this.headerRepeatable=null)},t.exports=a},function(t,e,n){(function(e){(function(){var r,i,a,o,s,l,u={}.hasOwnProperty;l=n(15),s=n(8),i=n(26),o=n(87),a=n(161),r=function(t){var r;function c(t){var e,n,r,i;if(this.options=null!=t?t:{},c.__super__.constructor.apply(this,arguments),this.version=1.3,this.compress=null==(n=this.options.compress)||n,this._pageBuffer=[],this._pageBufferStart=0,this._offsets=[],this._waiting=0,this._ended=!1,this._offset=0,this._root=this.ref({Type:"Catalog",Pages:this.ref({Type:"Pages",Count:0,Kids:[]})}),this.page=null,this.initColor(),this.initVector(),this.initFonts(),this.initText(),this.initImages(),this.info={Producer:"PDFKit",Creator:"PDFKit",CreationDate:new Date},this.options.info)for(e in r=this.options.info)i=r[e],this.info[e]=i;this._write("%PDF-"+this.version),this._write("%ÿÿÿÿ"),!1!==this.options.autoFirstPage&&this.addPage()}return function(t,e){for(var n in e)u.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(c,l.Readable),(r=function(t){var e,n,r;for(n in r=[],t)e=t[n],r.push(c.prototype[n]=e);return r})(n(162)),r(n(164)),r(n(166)),r(n(295)),r(n(297)),r(n(302)),c.prototype.addPage=function(t){var e;return null==t&&(t=this.options),this.options.bufferPages||this.flushPages(),this.page=new a(this,t),this._pageBuffer.push(this.page),(e=this._root.data.Pages.data).Kids.push(this.page.dictionary),e.Count++,this.x=this.page.margins.left,this.y=this.page.margins.top,this._ctm=[1,0,0,1,0,0],this.transform(1,0,0,-1,0,this.page.height),this.emit("pageAdded"),this},c.prototype.bufferedPageRange=function(){return{start:this._pageBufferStart,count:this._pageBuffer.length}},c.prototype.switchToPage=function(t){var e;if(!(e=this._pageBuffer[t-this._pageBufferStart]))throw new Error("switchToPage("+t+") out of bounds, current buffer covers pages "+this._pageBufferStart+" to "+(this._pageBufferStart+this._pageBuffer.length-1));return this.page=e},c.prototype.flushPages=function(){var t,e,n;for(n=this._pageBuffer,this._pageBuffer=[],this._pageBufferStart+=n.length,t=0,e=n.length;t<e;t++)n[t].end()},c.prototype.ref=function(t){var e;return e=new o(this,this._offsets.length+1,t),this._offsets.push(null),this._waiting++,e},c.prototype._read=function(){},c.prototype._write=function(t){return e.isBuffer(t)||(t=new e(t+"\n","binary")),this.push(t),this._offset+=t.length},c.prototype.addContent=function(t){return this.page.write(t),this},c.prototype._refEnd=function(t){if(this._offsets[t.id-1]=t.offset,0==--this._waiting&&this._ended)return this._finalize(),this._ended=!1},c.prototype.write=function(t,e){return new Error("PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. Please pipe the document into a Node stream."),this.pipe(s.createWriteStream(t)),this.end(),this.once("end",e)},c.prototype.output=function(t){throw new Error("PDFDocument#output is deprecated, and has been removed from PDFKit. Please pipe the document into a Node stream.")},c.prototype.end=function(){var t,e,n,r,i;for(t in this.flushPages(),this._info=this.ref(),n=this.info)"string"==typeof(i=n[t])&&(i=new String(i)),this._info.data[t]=i;for(e in this._info.end(),r=this._fontFamilies)r[e].finalize();return this._root.end(),this._root.data.Pages.end(),0===this._waiting?this._finalize():this._ended=!0},c.prototype._finalize=function(t){var e,n,r,a,o;for(o=this._offset,this._write("xref"),this._write("0 "+(this._offsets.length+1)),this._write("0000000000 65535 f "),e=0,n=(a=this._offsets).length;e<n;e++)r=("0000000000"+(r=a[e])).slice(-10),this._write(r+" 00000 n ");return this._write("trailer"),this._write(i.convert({Size:this._offsets.length+1,Root:this._root,Info:this._info})),this._write("startxref"),this._write(""+o),this._write("%%EOF"),this.push(null)},c.prototype.toString=function(){return"[object PDFDocument]"},c}(),t.exports=r}).call(this)}).call(e,n(1).Buffer)},function(t,e){},function(t,e,n){"use strict";var r=n(33).Buffer,i=n(141);t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,n=""+e.data;e=e.next;)n+=t+e.data;return n},t.prototype.concat=function(t){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var e,n,i,a=r.allocUnsafe(t>>>0),o=this.head,s=0;o;)e=o.data,n=a,i=s,e.copy(n,i),s+=o.data.length,o=o.next;return a},t}(),i&&i.inspect&&i.inspect.custom&&(t.exports.prototype[i.inspect.custom]=function(){var t=i.inspect({length:this.length});return this.constructor.name+" "+t})},function(t,e){},function(t,e,n){(function(t){var r=Function.prototype.apply;function i(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new i(r.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new i(r.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(143),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(e,n(7))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,i,a,o,s,l=1,u={},c=!1,h=t.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(t);f=f&&f.setTimeout?f:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick(function(){p(t)})}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((a=new MessageChannel).port1.onmessage=function(t){p(t.data)},r=function(t){a.port2.postMessage(t)}):h&&"onreadystatechange"in h.createElement("script")?(i=h.documentElement,r=function(t){var e=h.createElement("script");e.onreadystatechange=function(){p(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e)}):r=function(t){setTimeout(p,0,t)}:(o="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(o)&&p(+e.data.slice(o.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(o+e,"*")}),f.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var i={callback:t,args:e};return u[l]=i,r(l),l++},f.clearImmediate=d}function d(t){delete u[t]}function p(t){if(c)setTimeout(p,0,t);else{var e=u[t];if(e){c=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}(e)}finally{d(t),c=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(e,n(7),n(11))},function(t,e,n){(function(e){function n(t){try{if(!e.localStorage)return!1}catch(t){return!1}var n=e.localStorage[t];return null!=n&&"true"===String(n).toLowerCase()}t.exports=function(t,e){if(n("noDeprecation"))return t;var r=!1;return function(){if(!r){if(n("throwDeprecation"))throw new Error(e);n("traceDeprecation"),r=!0}return t.apply(this,arguments)}}}).call(e,n(7))},function(t,e,n){"use strict";t.exports=a;var r=n(86),i=n(25);function a(t){if(!(this instanceof a))return new a(t);r.call(this,t)}i.inherits=n(21),i.inherits(a,r),a.prototype._transform=function(t,e,n){n(null,t)}},function(t,e,n){t.exports=n(46)},function(t,e,n){t.exports=n(16)},function(t,e,n){t.exports=n(45).Transform},function(t,e,n){t.exports=n(45).PassThrough},function(t,e,n){"use strict";(function(t,r){var i=n(88),a=n(153),o=n(154),s=n(157),l=n(160);for(var u in l)e[u]=l[u];e.NONE=0,e.DEFLATE=1,e.INFLATE=2,e.GZIP=3,e.GUNZIP=4,e.DEFLATERAW=5,e.INFLATERAW=6,e.UNZIP=7;function c(t){if("number"!=typeof t||t<e.DEFLATE||t>e.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=t,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}c.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,"close before init"),i(this.mode<=e.UNZIP),this.mode===e.DEFLATE||this.mode===e.GZIP||this.mode===e.DEFLATERAW?o.deflateEnd(this.strm):this.mode!==e.INFLATE&&this.mode!==e.GUNZIP&&this.mode!==e.INFLATERAW&&this.mode!==e.UNZIP||s.inflateEnd(this.strm),this.mode=e.NONE,this.dictionary=null)},c.prototype.write=function(t,e,n,r,i,a,o){return this._write(!0,t,e,n,r,i,a,o)},c.prototype.writeSync=function(t,e,n,r,i,a,o){return this._write(!1,t,e,n,r,i,a,o)},c.prototype._write=function(n,a,o,s,l,u,c,h){if(i.equal(arguments.length,8),i(this.init_done,"write before init"),i(this.mode!==e.NONE,"already finalized"),i.equal(!1,this.write_in_progress,"write already in progress"),i.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,i.equal(!1,void 0===a,"must provide flush value"),this.write_in_progress=!0,a!==e.Z_NO_FLUSH&&a!==e.Z_PARTIAL_FLUSH&&a!==e.Z_SYNC_FLUSH&&a!==e.Z_FULL_FLUSH&&a!==e.Z_FINISH&&a!==e.Z_BLOCK)throw new Error("Invalid flush value");if(null==o&&(o=t.alloc(0),l=0,s=0),this.strm.avail_in=l,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=u,this.strm.next_out=c,this.flush=a,!n)return this._process(),this._checkError()?this._afterSync():void 0;var f=this;return r.nextTick(function(){f._process(),f._after()}),this},c.prototype._afterSync=function(){var t=this.strm.avail_out,e=this.strm.avail_in;return this.write_in_progress=!1,[e,t]},c.prototype._process=function(){var t=null;switch(this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=o.deflate(this.strm,this.flush);break;case e.UNZIP:switch(this.strm.avail_in>0&&(t=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===t)break;if(31!==this.strm.input[t]){this.mode=e.INFLATE;break}if(this.gzip_id_bytes_read=1,t++,1===this.strm.avail_in)break;case 1:if(null===t)break;139===this.strm.input[t]?(this.gzip_id_bytes_read=2,this.mode=e.GUNZIP):this.mode=e.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===e.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===e.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===e.Z_DATA_ERROR&&(this.err=e.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===e.GUNZIP&&this.err===e.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},c.prototype._checkError=function(){switch(this.err){case e.Z_OK:case e.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===e.Z_FINISH)return this._error("unexpected end of file"),!1;break;case e.Z_STREAM_END:break;case e.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},c.prototype._after=function(){if(this._checkError()){var t=this.strm.avail_out,e=this.strm.avail_in;this.write_in_progress=!1,this.callback(e,t),this.pending_close&&this.close()}},c.prototype._error=function(t){this.strm.msg&&(t=this.strm.msg),this.onerror(t,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},c.prototype.init=function(t,n,r,a,o){i(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),i(t>=8&&t<=15,"invalid windowBits"),i(n>=-1&&n<=9,"invalid compression level"),i(r>=1&&r<=9,"invalid memlevel"),i(a===e.Z_FILTERED||a===e.Z_HUFFMAN_ONLY||a===e.Z_RLE||a===e.Z_FIXED||a===e.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(n,t,r,a,o),this._setDictionary()},c.prototype.params=function(){throw new Error("deflateParams Not supported")},c.prototype.reset=function(){this._reset(),this._setDictionary()},c.prototype._init=function(t,n,r,i,l){switch(this.level=t,this.windowBits=n,this.memLevel=r,this.strategy=i,this.flush=e.Z_NO_FLUSH,this.err=e.Z_OK,this.mode!==e.GZIP&&this.mode!==e.GUNZIP||(this.windowBits+=16),this.mode===e.UNZIP&&(this.windowBits+=32),this.mode!==e.DEFLATERAW&&this.mode!==e.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new a,this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=o.deflateInit2(this.strm,this.level,e.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:case e.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==e.Z_OK&&this._error("Init error"),this.dictionary=l,this.write_in_progress=!1,this.init_done=!0},c.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:this.err=o.deflateSetDictionary(this.strm,this.dictionary)}this.err!==e.Z_OK&&this._error("Failed to set dictionary")}},c.prototype._reset=function(){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:case e.GZIP:this.err=o.deflateReset(this.strm);break;case e.INFLATE:case e.INFLATERAW:case e.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==e.Z_OK&&this._error("Failed to reset stream")},e.Zlib=c}).call(e,n(1).Buffer,n(11))},function(t,e){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},function(t,e,n){"use strict";var r,i=n(34),a=n(155),o=n(89),s=n(90),l=n(156),u=0,c=1,h=3,f=4,d=5,p=0,g=1,y=-2,v=-3,b=-5,m=-1,w=1,x=2,S=3,_=4,k=0,C=2,A=8,P=9,E=15,I=8,T=286,O=30,L=19,B=2*T+1,M=15,R=3,F=258,D=F+R+1,z=32,N=42,U=69,W=73,G=91,V=103,j=113,H=666,q=1,Z=2,Y=3,X=4,K=3;function J(t,e){return t.msg=l[e],e}function Q(t){return(t<<1)-(t>4?9:0)}function $(t){for(var e=t.length;--e>=0;)t[e]=0}function tt(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(i.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function et(t,e){a._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,tt(t.strm)}function nt(t,e){t.pending_buf[t.pending++]=e}function rt(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function it(t,e){var n,r,i=t.max_chain_length,a=t.strstart,o=t.prev_length,s=t.nice_match,l=t.strstart>t.w_size-D?t.strstart-(t.w_size-D):0,u=t.window,c=t.w_mask,h=t.prev,f=t.strstart+F,d=u[a+o-1],p=u[a+o];t.prev_length>=t.good_match&&(i>>=2),s>t.lookahead&&(s=t.lookahead);do{if(u[(n=e)+o]===p&&u[n+o-1]===d&&u[n]===u[a]&&u[++n]===u[a+1]){a+=2,n++;do{}while(u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&u[++a]===u[++n]&&a<f);if(r=F-(f-a),a=f-F,r>o){if(t.match_start=e,o=r,r>=s)break;d=u[a+o-1],p=u[a+o]}}}while((e=h[e&c])>l&&0!=--i);return o<=t.lookahead?o:t.lookahead}function at(t){var e,n,r,a,l,u,c,h,f,d,p=t.w_size;do{if(a=t.window_size-t.lookahead-t.strstart,t.strstart>=p+(p-D)){for(i.arraySet(t.window,t.window,p,p,0),t.match_start-=p,t.strstart-=p,t.block_start-=p,e=n=t.hash_size;r=t.head[--e],t.head[e]=r>=p?r-p:0,--n;);for(e=n=p;r=t.prev[--e],t.prev[e]=r>=p?r-p:0,--n;);a+=p}if(0===t.strm.avail_in)break;if(u=t.strm,c=t.window,h=t.strstart+t.lookahead,f=a,d=void 0,(d=u.avail_in)>f&&(d=f),n=0===d?0:(u.avail_in-=d,i.arraySet(c,u.input,u.next_in,d,h),1===u.state.wrap?u.adler=o(u.adler,c,d,h):2===u.state.wrap&&(u.adler=s(u.adler,c,d,h)),u.next_in+=d,u.total_in+=d,d),t.lookahead+=n,t.lookahead+t.insert>=R)for(l=t.strstart-t.insert,t.ins_h=t.window[l],t.ins_h=(t.ins_h<<t.hash_shift^t.window[l+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[l+R-1])&t.hash_mask,t.prev[l&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=l,l++,t.insert--,!(t.lookahead+t.insert<R)););}while(t.lookahead<D&&0!==t.strm.avail_in)}function ot(t,e){for(var n,r;;){if(t.lookahead<D){if(at(t),t.lookahead<D&&e===u)return q;if(0===t.lookahead)break}if(n=0,t.lookahead>=R&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+R-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==n&&t.strstart-n<=t.w_size-D&&(t.match_length=it(t,n)),t.match_length>=R)if(r=a._tr_tally(t,t.strstart-t.match_start,t.match_length-R),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=R){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+R-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart,0!=--t.match_length;);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else r=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(r&&(et(t,!1),0===t.strm.avail_out))return q}return t.insert=t.strstart<R-1?t.strstart:R-1,e===f?(et(t,!0),0===t.strm.avail_out?Y:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?q:Z}function st(t,e){for(var n,r,i;;){if(t.lookahead<D){if(at(t),t.lookahead<D&&e===u)return q;if(0===t.lookahead)break}if(n=0,t.lookahead>=R&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+R-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=R-1,0!==n&&t.prev_length<t.max_lazy_match&&t.strstart-n<=t.w_size-D&&(t.match_length=it(t,n),t.match_length<=5&&(t.strategy===w||t.match_length===R&&t.strstart-t.match_start>4096)&&(t.match_length=R-1)),t.prev_length>=R&&t.match_length<=t.prev_length){for(i=t.strstart+t.lookahead-R,r=a._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-R),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=i&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+R-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!=--t.prev_length;);if(t.match_available=0,t.match_length=R-1,t.strstart++,r&&(et(t,!1),0===t.strm.avail_out))return q}else if(t.match_available){if((r=a._tr_tally(t,0,t.window[t.strstart-1]))&&et(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return q}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(r=a._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<R-1?t.strstart:R-1,e===f?(et(t,!0),0===t.strm.avail_out?Y:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?q:Z}function lt(t,e,n,r,i){this.good_length=t,this.max_lazy=e,this.nice_length=n,this.max_chain=r,this.func=i}function ut(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=C,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?N:j,t.adler=2===e.wrap?0:1,e.last_flush=u,a._tr_init(e),p):J(t,y)}function ct(t){var e,n=ut(t);return n===p&&((e=t.state).window_size=2*e.w_size,$(e.head),e.max_lazy_match=r[e.level].max_lazy,e.good_match=r[e.level].good_length,e.nice_match=r[e.level].nice_length,e.max_chain_length=r[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=R-1,e.match_available=0,e.ins_h=0),n}function ht(t,e,n,r,a,o){if(!t)return y;var s=1;if(e===m&&(e=6),r<0?(s=0,r=-r):r>15&&(s=2,r-=16),a<1||a>P||n!==A||r<8||r>15||e<0||e>9||o<0||o>_)return J(t,y);8===r&&(r=9);var l=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*B),this.dyn_dtree=new i.Buf16(2*(2*O+1)),this.bl_tree=new i.Buf16(2*(2*L+1)),$(this.dyn_ltree),$(this.dyn_dtree),$(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(M+1),this.heap=new i.Buf16(2*T+1),$(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*T+1),$(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return t.state=l,l.strm=t,l.wrap=s,l.gzhead=null,l.w_bits=r,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=a+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+R-1)/R),l.window=new i.Buf8(2*l.w_size),l.head=new i.Buf16(l.hash_size),l.prev=new i.Buf16(l.w_size),l.lit_bufsize=1<<a+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new i.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=e,l.strategy=o,l.method=n,ct(t)}r=[new lt(0,0,0,0,function(t,e){var n=65535;for(n>t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(at(t),0===t.lookahead&&e===u)return q;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var r=t.block_start+n;if((0===t.strstart||t.strstart>=r)&&(t.lookahead=t.strstart-r,t.strstart=r,et(t,!1),0===t.strm.avail_out))return q;if(t.strstart-t.block_start>=t.w_size-D&&(et(t,!1),0===t.strm.avail_out))return q}return t.insert=0,e===f?(et(t,!0),0===t.strm.avail_out?Y:X):(t.strstart>t.block_start&&(et(t,!1),t.strm.avail_out),q)}),new lt(4,4,8,4,ot),new lt(4,5,16,8,ot),new lt(4,6,32,32,ot),new lt(4,4,16,16,st),new lt(8,16,32,32,st),new lt(8,16,128,128,st),new lt(8,32,128,256,st),new lt(32,128,258,1024,st),new lt(32,258,258,4096,st)],e.deflateInit=function(t,e){return ht(t,e,A,E,I,k)},e.deflateInit2=ht,e.deflateReset=ct,e.deflateResetKeep=ut,e.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?y:(t.state.gzhead=e,p):y},e.deflate=function(t,e){var n,i,o,l;if(!t||!t.state||e>d||e<0)return t?J(t,y):y;if(i=t.state,!t.output||!t.input&&0!==t.avail_in||i.status===H&&e!==f)return J(t,0===t.avail_out?b:y);if(i.strm=t,n=i.last_flush,i.last_flush=e,i.status===N)if(2===i.wrap)t.adler=0,nt(i,31),nt(i,139),nt(i,8),i.gzhead?(nt(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),nt(i,255&i.gzhead.time),nt(i,i.gzhead.time>>8&255),nt(i,i.gzhead.time>>16&255),nt(i,i.gzhead.time>>24&255),nt(i,9===i.level?2:i.strategy>=x||i.level<2?4:0),nt(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(nt(i,255&i.gzhead.extra.length),nt(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=s(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=U):(nt(i,0),nt(i,0),nt(i,0),nt(i,0),nt(i,0),nt(i,9===i.level?2:i.strategy>=x||i.level<2?4:0),nt(i,K),i.status=j);else{var v=A+(i.w_bits-8<<4)<<8;v|=(i.strategy>=x||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(v|=z),v+=31-v%31,i.status=j,rt(i,v),0!==i.strstart&&(rt(i,t.adler>>>16),rt(i,65535&t.adler)),t.adler=1}if(i.status===U)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),tt(t),o=i.pending,i.pending!==i.pending_buf_size));)nt(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=W)}else i.status=W;if(i.status===W)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),tt(t),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,nt(i,l)}while(0!==l);i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.gzindex=0,i.status=G)}else i.status=G;if(i.status===G)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),tt(t),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,nt(i,l)}while(0!==l);i.gzhead.hcrc&&i.pending>o&&(t.adler=s(t.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.status=V)}else i.status=V;if(i.status===V&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&tt(t),i.pending+2<=i.pending_buf_size&&(nt(i,255&t.adler),nt(i,t.adler>>8&255),t.adler=0,i.status=j)):i.status=j),0!==i.pending){if(tt(t),0===t.avail_out)return i.last_flush=-1,p}else if(0===t.avail_in&&Q(e)<=Q(n)&&e!==f)return J(t,b);if(i.status===H&&0!==t.avail_in)return J(t,b);if(0!==t.avail_in||0!==i.lookahead||e!==u&&i.status!==H){var m=i.strategy===x?function(t,e){for(var n;;){if(0===t.lookahead&&(at(t),0===t.lookahead)){if(e===u)return q;break}if(t.match_length=0,n=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(et(t,!1),0===t.strm.avail_out))return q}return t.insert=0,e===f?(et(t,!0),0===t.strm.avail_out?Y:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?q:Z}(i,e):i.strategy===S?function(t,e){for(var n,r,i,o,s=t.window;;){if(t.lookahead<=F){if(at(t),t.lookahead<=F&&e===u)return q;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=R&&t.strstart>0&&(r=s[i=t.strstart-1])===s[++i]&&r===s[++i]&&r===s[++i]){o=t.strstart+F;do{}while(r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&i<o);t.match_length=F-(o-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=R?(n=a._tr_tally(t,1,t.match_length-R),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(et(t,!1),0===t.strm.avail_out))return q}return t.insert=0,e===f?(et(t,!0),0===t.strm.avail_out?Y:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?q:Z}(i,e):r[i.level].func(i,e);if(m!==Y&&m!==X||(i.status=H),m===q||m===Y)return 0===t.avail_out&&(i.last_flush=-1),p;if(m===Z&&(e===c?a._tr_align(i):e!==d&&(a._tr_stored_block(i,0,0,!1),e===h&&($(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),tt(t),0===t.avail_out))return i.last_flush=-1,p}return e!==f?p:i.wrap<=0?g:(2===i.wrap?(nt(i,255&t.adler),nt(i,t.adler>>8&255),nt(i,t.adler>>16&255),nt(i,t.adler>>24&255),nt(i,255&t.total_in),nt(i,t.total_in>>8&255),nt(i,t.total_in>>16&255),nt(i,t.total_in>>24&255)):(rt(i,t.adler>>>16),rt(i,65535&t.adler)),tt(t),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?p:g)},e.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==N&&e!==U&&e!==W&&e!==G&&e!==V&&e!==j&&e!==H?J(t,y):(t.state=null,e===j?J(t,v):p):y},e.deflateSetDictionary=function(t,e){var n,r,a,s,l,u,c,h,f=e.length;if(!t||!t.state)return y;if(2===(s=(n=t.state).wrap)||1===s&&n.status!==N||n.lookahead)return y;for(1===s&&(t.adler=o(t.adler,e,f,0)),n.wrap=0,f>=n.w_size&&(0===s&&($(n.head),n.strstart=0,n.block_start=0,n.insert=0),h=new i.Buf8(n.w_size),i.arraySet(h,e,f-n.w_size,n.w_size,0),e=h,f=n.w_size),l=t.avail_in,u=t.next_in,c=t.input,t.avail_in=f,t.next_in=0,t.input=e,at(n);n.lookahead>=R;){for(r=n.strstart,a=n.lookahead-(R-1);n.ins_h=(n.ins_h<<n.hash_shift^n.window[r+R-1])&n.hash_mask,n.prev[r&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=r,r++,--a;);n.strstart=r,n.lookahead=R-1,at(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=R-1,n.match_available=0,t.next_in=u,t.input=c,t.avail_in=l,n.wrap=s,p},e.deflateInfo="pako deflate (from Nodeca project)"},function(t,e,n){"use strict";var r=n(34),i=4,a=0,o=1,s=2;function l(t){for(var e=t.length;--e>=0;)t[e]=0}var u=0,c=1,h=2,f=29,d=256,p=d+1+f,g=30,y=19,v=2*p+1,b=15,m=16,w=7,x=256,S=16,_=17,k=18,C=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],E=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],I=new Array(2*(p+2));l(I);var T=new Array(2*g);l(T);var O=new Array(512);l(O);var L=new Array(256);l(L);var B=new Array(f);l(B);var M,R,F,D=new Array(g);function z(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}function N(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function U(t){return t<256?O[t]:O[256+(t>>>7)]}function W(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function G(t,e,n){t.bi_valid>m-n?(t.bi_buf|=e<<t.bi_valid&65535,W(t,t.bi_buf),t.bi_buf=e>>m-t.bi_valid,t.bi_valid+=n-m):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=n)}function V(t,e,n){G(t,n[2*e],n[2*e+1])}function j(t,e){for(var n=0;n|=1&t,t>>>=1,n<<=1,--e>0;);return n>>>1}function H(t,e,n){var r,i,a=new Array(b+1),o=0;for(r=1;r<=b;r++)a[r]=o=o+n[r-1]<<1;for(i=0;i<=e;i++){var s=t[2*i+1];0!==s&&(t[2*i]=j(a[s]++,s))}}function q(t){var e;for(e=0;e<p;e++)t.dyn_ltree[2*e]=0;for(e=0;e<g;e++)t.dyn_dtree[2*e]=0;for(e=0;e<y;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*x]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function Z(t){t.bi_valid>8?W(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function Y(t,e,n,r){var i=2*e,a=2*n;return t[i]<t[a]||t[i]===t[a]&&r[e]<=r[n]}function X(t,e,n){for(var r=t.heap[n],i=n<<1;i<=t.heap_len&&(i<t.heap_len&&Y(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!Y(e,r,t.heap[i],t.depth));)t.heap[n]=t.heap[i],n=i,i<<=1;t.heap[n]=r}function K(t,e,n){var r,i,a,o,s=0;if(0!==t.last_lit)for(;r=t.pending_buf[t.d_buf+2*s]<<8|t.pending_buf[t.d_buf+2*s+1],i=t.pending_buf[t.l_buf+s],s++,0===r?V(t,i,e):(V(t,(a=L[i])+d+1,e),0!==(o=C[a])&&G(t,i-=B[a],o),V(t,a=U(--r),n),0!==(o=A[a])&&G(t,r-=D[a],o)),s<t.last_lit;);V(t,x,e)}function J(t,e){var n,r,i,a=e.dyn_tree,o=e.stat_desc.static_tree,s=e.stat_desc.has_stree,l=e.stat_desc.elems,u=-1;for(t.heap_len=0,t.heap_max=v,n=0;n<l;n++)0!==a[2*n]?(t.heap[++t.heap_len]=u=n,t.depth[n]=0):a[2*n+1]=0;for(;t.heap_len<2;)a[2*(i=t.heap[++t.heap_len]=u<2?++u:0)]=1,t.depth[i]=0,t.opt_len--,s&&(t.static_len-=o[2*i+1]);for(e.max_code=u,n=t.heap_len>>1;n>=1;n--)X(t,a,n);for(i=l;n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],X(t,a,1),r=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=r,a[2*i]=a[2*n]+a[2*r],t.depth[i]=(t.depth[n]>=t.depth[r]?t.depth[n]:t.depth[r])+1,a[2*n+1]=a[2*r+1]=i,t.heap[1]=i++,X(t,a,1),t.heap_len>=2;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var n,r,i,a,o,s,l=e.dyn_tree,u=e.max_code,c=e.stat_desc.static_tree,h=e.stat_desc.has_stree,f=e.stat_desc.extra_bits,d=e.stat_desc.extra_base,p=e.stat_desc.max_length,g=0;for(a=0;a<=b;a++)t.bl_count[a]=0;for(l[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;n<v;n++)(a=l[2*l[2*(r=t.heap[n])+1]+1]+1)>p&&(a=p,g++),l[2*r+1]=a,r>u||(t.bl_count[a]++,o=0,r>=d&&(o=f[r-d]),s=l[2*r],t.opt_len+=s*(a+o),h&&(t.static_len+=s*(c[2*r+1]+o)));if(0!==g){do{for(a=p-1;0===t.bl_count[a];)a--;t.bl_count[a]--,t.bl_count[a+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(a=p;0!==a;a--)for(r=t.bl_count[a];0!==r;)(i=t.heap[--n])>u||(l[2*i+1]!==a&&(t.opt_len+=(a-l[2*i+1])*l[2*i],l[2*i+1]=a),r--)}}(t,e),H(a,u,t.bl_count)}function Q(t,e,n){var r,i,a=-1,o=e[1],s=0,l=7,u=4;for(0===o&&(l=138,u=3),e[2*(n+1)+1]=65535,r=0;r<=n;r++)i=o,o=e[2*(r+1)+1],++s<l&&i===o||(s<u?t.bl_tree[2*i]+=s:0!==i?(i!==a&&t.bl_tree[2*i]++,t.bl_tree[2*S]++):s<=10?t.bl_tree[2*_]++:t.bl_tree[2*k]++,s=0,a=i,0===o?(l=138,u=3):i===o?(l=6,u=3):(l=7,u=4))}function $(t,e,n){var r,i,a=-1,o=e[1],s=0,l=7,u=4;for(0===o&&(l=138,u=3),r=0;r<=n;r++)if(i=o,o=e[2*(r+1)+1],!(++s<l&&i===o)){if(s<u)for(;V(t,i,t.bl_tree),0!=--s;);else 0!==i?(i!==a&&(V(t,i,t.bl_tree),s--),V(t,S,t.bl_tree),G(t,s-3,2)):s<=10?(V(t,_,t.bl_tree),G(t,s-3,3)):(V(t,k,t.bl_tree),G(t,s-11,7));s=0,a=i,0===o?(l=138,u=3):i===o?(l=6,u=3):(l=7,u=4)}}l(D);var tt=!1;function et(t,e,n,i){var a,o,s,l;G(t,(u<<1)+(i?1:0),3),o=e,s=n,l=!0,Z(a=t),l&&(W(a,s),W(a,~s)),r.arraySet(a.pending_buf,a.window,o,s,a.pending),a.pending+=s}e._tr_init=function(t){tt||(function(){var t,e,n,r,i,a=new Array(b+1);for(n=0,r=0;r<f-1;r++)for(B[r]=n,t=0;t<1<<C[r];t++)L[n++]=r;for(L[n-1]=r,i=0,r=0;r<16;r++)for(D[r]=i,t=0;t<1<<A[r];t++)O[i++]=r;for(i>>=7;r<g;r++)for(D[r]=i<<7,t=0;t<1<<A[r]-7;t++)O[256+i++]=r;for(e=0;e<=b;e++)a[e]=0;for(t=0;t<=143;)I[2*t+1]=8,t++,a[8]++;for(;t<=255;)I[2*t+1]=9,t++,a[9]++;for(;t<=279;)I[2*t+1]=7,t++,a[7]++;for(;t<=287;)I[2*t+1]=8,t++,a[8]++;for(H(I,p+1,a),t=0;t<g;t++)T[2*t+1]=5,T[2*t]=j(t,5);M=new z(I,C,d+1,p,b),R=new z(T,A,0,g,b),F=new z(new Array(0),P,0,y,w)}(),tt=!0),t.l_desc=new N(t.dyn_ltree,M),t.d_desc=new N(t.dyn_dtree,R),t.bl_desc=new N(t.bl_tree,F),t.bi_buf=0,t.bi_valid=0,q(t)},e._tr_stored_block=et,e._tr_flush_block=function(t,e,n,r){var l,u,f=0;t.level>0?(t.strm.data_type===s&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return a;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return o;for(e=32;e<d;e++)if(0!==t.dyn_ltree[2*e])return o;return a}(t)),J(t,t.l_desc),J(t,t.d_desc),f=function(t){var e;for(Q(t,t.dyn_ltree,t.l_desc.max_code),Q(t,t.dyn_dtree,t.d_desc.max_code),J(t,t.bl_desc),e=y-1;e>=3&&0===t.bl_tree[2*E[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),l=t.opt_len+3+7>>>3,(u=t.static_len+3+7>>>3)<=l&&(l=u)):l=u=n+5,n+4<=l&&-1!==e?et(t,e,n,r):t.strategy===i||u===l?(G(t,(c<<1)+(r?1:0),3),K(t,I,T)):(G(t,(h<<1)+(r?1:0),3),function(t,e,n,r){var i;for(G(t,e-257,5),G(t,n-1,5),G(t,r-4,4),i=0;i<r;i++)G(t,t.bl_tree[2*E[i]+1],3);$(t,t.dyn_ltree,e-1),$(t,t.dyn_dtree,n-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,f+1),K(t,t.dyn_ltree,t.dyn_dtree)),q(t),r&&Z(t)},e._tr_tally=function(t,e,n){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(L[n]+d+1)]++,t.dyn_dtree[2*U(e)]++),t.last_lit===t.lit_bufsize-1},e._tr_align=function(t){var e;G(t,c<<1,3),V(t,x,I),16===(e=t).bi_valid?(W(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},function(t,e,n){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},function(t,e,n){"use strict";var r=n(34),i=n(89),a=n(90),o=n(158),s=n(159),l=0,u=1,c=2,h=4,f=5,d=6,p=0,g=1,y=2,v=-2,b=-3,m=-4,w=-5,x=8,S=1,_=2,k=3,C=4,A=5,P=6,E=7,I=8,T=9,O=10,L=11,B=12,M=13,R=14,F=15,D=16,z=17,N=18,U=19,W=20,G=21,V=22,j=23,H=24,q=25,Z=26,Y=27,X=28,K=29,J=30,Q=31,$=32,tt=852,et=592,nt=15;function rt(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function it(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=S,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new r.Buf32(tt),e.distcode=e.distdyn=new r.Buf32(et),e.sane=1,e.back=-1,p):v}function at(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,it(t)):v}function ot(t,e){var n,r;return t&&t.state?(r=t.state,e<0?(n=0,e=-e):(n=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?v:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=n,r.wbits=e,at(t))):v}function st(t,e){var n,i;return t?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},t.state=i,i.window=null,(n=ot(t,e))!==p&&(t.state=null),n):v}var lt,ut,ct=!0;function ht(t){if(ct){var e;for(lt=new r.Buf32(512),ut=new r.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(s(u,t.lens,0,288,lt,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;s(c,t.lens,0,32,ut,0,t.work,{bits:5}),ct=!1}t.lencode=lt,t.lenbits=9,t.distcode=ut,t.distbits=5}function ft(t,e,n,i){var a,o=t.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new r.Buf8(o.wsize)),i>=o.wsize?(r.arraySet(o.window,e,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>i&&(a=i),r.arraySet(o.window,e,n-i,a,o.wnext),(i-=a)?(r.arraySet(o.window,e,n-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=a))),0}e.inflateReset=at,e.inflateReset2=ot,e.inflateResetKeep=it,e.inflateInit=function(t){return st(t,nt)},e.inflateInit2=st,e.inflate=function(t,e){var n,tt,et,nt,it,at,ot,st,lt,ut,ct,dt,pt,gt,yt,vt,bt,mt,wt,xt,St,_t,kt,Ct,At=0,Pt=new r.Buf8(4),Et=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return v;(n=t.state).mode===B&&(n.mode=M),it=t.next_out,et=t.output,ot=t.avail_out,nt=t.next_in,tt=t.input,at=t.avail_in,st=n.hold,lt=n.bits,ut=at,ct=ot,_t=p;t:for(;;)switch(n.mode){case S:if(0===n.wrap){n.mode=M;break}for(;lt<16;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(2&n.wrap&&35615===st){n.check=0,Pt[0]=255&st,Pt[1]=st>>>8&255,n.check=a(n.check,Pt,2,0),st=0,lt=0,n.mode=_;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&st)<<8)+(st>>8))%31){t.msg="incorrect header check",n.mode=J;break}if((15&st)!==x){t.msg="unknown compression method",n.mode=J;break}if(lt-=4,St=8+(15&(st>>>=4)),0===n.wbits)n.wbits=St;else if(St>n.wbits){t.msg="invalid window size",n.mode=J;break}n.dmax=1<<St,t.adler=n.check=1,n.mode=512&st?O:B,st=0,lt=0;break;case _:for(;lt<16;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(n.flags=st,(255&n.flags)!==x){t.msg="unknown compression method",n.mode=J;break}if(57344&n.flags){t.msg="unknown header flags set",n.mode=J;break}n.head&&(n.head.text=st>>8&1),512&n.flags&&(Pt[0]=255&st,Pt[1]=st>>>8&255,n.check=a(n.check,Pt,2,0)),st=0,lt=0,n.mode=k;case k:for(;lt<32;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.head&&(n.head.time=st),512&n.flags&&(Pt[0]=255&st,Pt[1]=st>>>8&255,Pt[2]=st>>>16&255,Pt[3]=st>>>24&255,n.check=a(n.check,Pt,4,0)),st=0,lt=0,n.mode=C;case C:for(;lt<16;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.head&&(n.head.xflags=255&st,n.head.os=st>>8),512&n.flags&&(Pt[0]=255&st,Pt[1]=st>>>8&255,n.check=a(n.check,Pt,2,0)),st=0,lt=0,n.mode=A;case A:if(1024&n.flags){for(;lt<16;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.length=st,n.head&&(n.head.extra_len=st),512&n.flags&&(Pt[0]=255&st,Pt[1]=st>>>8&255,n.check=a(n.check,Pt,2,0)),st=0,lt=0}else n.head&&(n.head.extra=null);n.mode=P;case P:if(1024&n.flags&&((dt=n.length)>at&&(dt=at),dt&&(n.head&&(St=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),r.arraySet(n.head.extra,tt,nt,dt,St)),512&n.flags&&(n.check=a(n.check,tt,dt,nt)),at-=dt,nt+=dt,n.length-=dt),n.length))break t;n.length=0,n.mode=E;case E:if(2048&n.flags){if(0===at)break t;for(dt=0;St=tt[nt+dt++],n.head&&St&&n.length<65536&&(n.head.name+=String.fromCharCode(St)),St&&dt<at;);if(512&n.flags&&(n.check=a(n.check,tt,dt,nt)),at-=dt,nt+=dt,St)break t}else n.head&&(n.head.name=null);n.length=0,n.mode=I;case I:if(4096&n.flags){if(0===at)break t;for(dt=0;St=tt[nt+dt++],n.head&&St&&n.length<65536&&(n.head.comment+=String.fromCharCode(St)),St&&dt<at;);if(512&n.flags&&(n.check=a(n.check,tt,dt,nt)),at-=dt,nt+=dt,St)break t}else n.head&&(n.head.comment=null);n.mode=T;case T:if(512&n.flags){for(;lt<16;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(st!==(65535&n.check)){t.msg="header crc mismatch",n.mode=J;break}st=0,lt=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=B;break;case O:for(;lt<32;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}t.adler=n.check=rt(st),st=0,lt=0,n.mode=L;case L:if(0===n.havedict)return t.next_out=it,t.avail_out=ot,t.next_in=nt,t.avail_in=at,n.hold=st,n.bits=lt,y;t.adler=n.check=1,n.mode=B;case B:if(e===f||e===d)break t;case M:if(n.last){st>>>=7&lt,lt-=7&lt,n.mode=Y;break}for(;lt<3;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}switch(n.last=1&st,lt-=1,3&(st>>>=1)){case 0:n.mode=R;break;case 1:if(ht(n),n.mode=W,e===d){st>>>=2,lt-=2;break t}break;case 2:n.mode=z;break;case 3:t.msg="invalid block type",n.mode=J}st>>>=2,lt-=2;break;case R:for(st>>>=7&lt,lt-=7&lt;lt<32;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if((65535&st)!=(st>>>16^65535)){t.msg="invalid stored block lengths",n.mode=J;break}if(n.length=65535&st,st=0,lt=0,n.mode=F,e===d)break t;case F:n.mode=D;case D:if(dt=n.length){if(dt>at&&(dt=at),dt>ot&&(dt=ot),0===dt)break t;r.arraySet(et,tt,nt,dt,it),at-=dt,nt+=dt,ot-=dt,it+=dt,n.length-=dt;break}n.mode=B;break;case z:for(;lt<14;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(n.nlen=257+(31&st),st>>>=5,lt-=5,n.ndist=1+(31&st),st>>>=5,lt-=5,n.ncode=4+(15&st),st>>>=4,lt-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=J;break}n.have=0,n.mode=N;case N:for(;n.have<n.ncode;){for(;lt<3;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.lens[Et[n.have++]]=7&st,st>>>=3,lt-=3}for(;n.have<19;)n.lens[Et[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,kt={bits:n.lenbits},_t=s(l,n.lens,0,19,n.lencode,0,n.work,kt),n.lenbits=kt.bits,_t){t.msg="invalid code lengths set",n.mode=J;break}n.have=0,n.mode=U;case U:for(;n.have<n.nlen+n.ndist;){for(;vt=(At=n.lencode[st&(1<<n.lenbits)-1])>>>16&255,bt=65535&At,!((yt=At>>>24)<=lt);){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(bt<16)st>>>=yt,lt-=yt,n.lens[n.have++]=bt;else{if(16===bt){for(Ct=yt+2;lt<Ct;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(st>>>=yt,lt-=yt,0===n.have){t.msg="invalid bit length repeat",n.mode=J;break}St=n.lens[n.have-1],dt=3+(3&st),st>>>=2,lt-=2}else if(17===bt){for(Ct=yt+3;lt<Ct;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}lt-=yt,St=0,dt=3+(7&(st>>>=yt)),st>>>=3,lt-=3}else{for(Ct=yt+7;lt<Ct;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}lt-=yt,St=0,dt=11+(127&(st>>>=yt)),st>>>=7,lt-=7}if(n.have+dt>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=J;break}for(;dt--;)n.lens[n.have++]=St}}if(n.mode===J)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=J;break}if(n.lenbits=9,kt={bits:n.lenbits},_t=s(u,n.lens,0,n.nlen,n.lencode,0,n.work,kt),n.lenbits=kt.bits,_t){t.msg="invalid literal/lengths set",n.mode=J;break}if(n.distbits=6,n.distcode=n.distdyn,kt={bits:n.distbits},_t=s(c,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,kt),n.distbits=kt.bits,_t){t.msg="invalid distances set",n.mode=J;break}if(n.mode=W,e===d)break t;case W:n.mode=G;case G:if(at>=6&&ot>=258){t.next_out=it,t.avail_out=ot,t.next_in=nt,t.avail_in=at,n.hold=st,n.bits=lt,o(t,ct),it=t.next_out,et=t.output,ot=t.avail_out,nt=t.next_in,tt=t.input,at=t.avail_in,st=n.hold,lt=n.bits,n.mode===B&&(n.back=-1);break}for(n.back=0;vt=(At=n.lencode[st&(1<<n.lenbits)-1])>>>16&255,bt=65535&At,!((yt=At>>>24)<=lt);){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(vt&&0==(240&vt)){for(mt=yt,wt=vt,xt=bt;vt=(At=n.lencode[xt+((st&(1<<mt+wt)-1)>>mt)])>>>16&255,bt=65535&At,!(mt+(yt=At>>>24)<=lt);){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}st>>>=mt,lt-=mt,n.back+=mt}if(st>>>=yt,lt-=yt,n.back+=yt,n.length=bt,0===vt){n.mode=Z;break}if(32&vt){n.back=-1,n.mode=B;break}if(64&vt){t.msg="invalid literal/length code",n.mode=J;break}n.extra=15&vt,n.mode=V;case V:if(n.extra){for(Ct=n.extra;lt<Ct;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.length+=st&(1<<n.extra)-1,st>>>=n.extra,lt-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=j;case j:for(;vt=(At=n.distcode[st&(1<<n.distbits)-1])>>>16&255,bt=65535&At,!((yt=At>>>24)<=lt);){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(0==(240&vt)){for(mt=yt,wt=vt,xt=bt;vt=(At=n.distcode[xt+((st&(1<<mt+wt)-1)>>mt)])>>>16&255,bt=65535&At,!(mt+(yt=At>>>24)<=lt);){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}st>>>=mt,lt-=mt,n.back+=mt}if(st>>>=yt,lt-=yt,n.back+=yt,64&vt){t.msg="invalid distance code",n.mode=J;break}n.offset=bt,n.extra=15&vt,n.mode=H;case H:if(n.extra){for(Ct=n.extra;lt<Ct;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}n.offset+=st&(1<<n.extra)-1,st>>>=n.extra,lt-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=J;break}n.mode=q;case q:if(0===ot)break t;if(dt=ct-ot,n.offset>dt){if((dt=n.offset-dt)>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=J;break}dt>n.wnext?(dt-=n.wnext,pt=n.wsize-dt):pt=n.wnext-dt,dt>n.length&&(dt=n.length),gt=n.window}else gt=et,pt=it-n.offset,dt=n.length;for(dt>ot&&(dt=ot),ot-=dt,n.length-=dt;et[it++]=gt[pt++],--dt;);0===n.length&&(n.mode=G);break;case Z:if(0===ot)break t;et[it++]=n.length,ot--,n.mode=G;break;case Y:if(n.wrap){for(;lt<32;){if(0===at)break t;at--,st|=tt[nt++]<<lt,lt+=8}if(ct-=ot,t.total_out+=ct,n.total+=ct,ct&&(t.adler=n.check=n.flags?a(n.check,et,ct,it-ct):i(n.check,et,ct,it-ct)),ct=ot,(n.flags?st:rt(st))!==n.check){t.msg="incorrect data check",n.mode=J;break}st=0,lt=0}n.mode=X;case X:if(n.wrap&&n.flags){for(;lt<32;){if(0===at)break t;at--,st+=tt[nt++]<<lt,lt+=8}if(st!==(4294967295&n.total)){t.msg="incorrect length check",n.mode=J;break}st=0,lt=0}n.mode=K;case K:_t=g;break t;case J:_t=b;break t;case Q:return m;case $:default:return v}return t.next_out=it,t.avail_out=ot,t.next_in=nt,t.avail_in=at,n.hold=st,n.bits=lt,(n.wsize||ct!==t.avail_out&&n.mode<J&&(n.mode<Y||e!==h))&&ft(t,t.output,t.next_out,ct-t.avail_out)?(n.mode=Q,m):(ut-=t.avail_in,ct-=t.avail_out,t.total_in+=ut,t.total_out+=ct,n.total+=ct,n.wrap&&ct&&(t.adler=n.check=n.flags?a(n.check,et,ct,t.next_out-ct):i(n.check,et,ct,t.next_out-ct)),t.data_type=n.bits+(n.last?64:0)+(n.mode===B?128:0)+(n.mode===W||n.mode===F?256:0),(0===ut&&0===ct||e===h)&&_t===p&&(_t=w),_t)},e.inflateEnd=function(t){if(!t||!t.state)return v;var e=t.state;return e.window&&(e.window=null),t.state=null,p},e.inflateGetHeader=function(t,e){var n;return t&&t.state?0==(2&(n=t.state).wrap)?v:(n.head=e,e.done=!1,p):v},e.inflateSetDictionary=function(t,e){var n,r=e.length;return t&&t.state?0!==(n=t.state).wrap&&n.mode!==L?v:n.mode===L&&i(1,e,r,0)!==n.check?b:ft(t,e,r,r)?(n.mode=Q,m):(n.havedict=1,p):v},e.inflateInfo="pako inflate (from Nodeca project)"},function(t,e,n){"use strict";t.exports=function(t,e){var n,r,i,a,o,s,l,u,c,h,f,d,p,g,y,v,b,m,w,x,S,_,k,C,A;n=t.state,r=t.next_in,C=t.input,i=r+(t.avail_in-5),a=t.next_out,A=t.output,o=a-(e-t.avail_out),s=a+(t.avail_out-257),l=n.dmax,u=n.wsize,c=n.whave,h=n.wnext,f=n.window,d=n.hold,p=n.bits,g=n.lencode,y=n.distcode,v=(1<<n.lenbits)-1,b=(1<<n.distbits)-1;t:do{p<15&&(d+=C[r++]<<p,p+=8,d+=C[r++]<<p,p+=8),m=g[d&v];e:for(;;){if(d>>>=w=m>>>24,p-=w,0===(w=m>>>16&255))A[a++]=65535&m;else{if(!(16&w)){if(0==(64&w)){m=g[(65535&m)+(d&(1<<w)-1)];continue e}if(32&w){n.mode=12;break t}t.msg="invalid literal/length code",n.mode=30;break t}x=65535&m,(w&=15)&&(p<w&&(d+=C[r++]<<p,p+=8),x+=d&(1<<w)-1,d>>>=w,p-=w),p<15&&(d+=C[r++]<<p,p+=8,d+=C[r++]<<p,p+=8),m=y[d&b];n:for(;;){if(d>>>=w=m>>>24,p-=w,!(16&(w=m>>>16&255))){if(0==(64&w)){m=y[(65535&m)+(d&(1<<w)-1)];continue n}t.msg="invalid distance code",n.mode=30;break t}if(S=65535&m,p<(w&=15)&&(d+=C[r++]<<p,(p+=8)<w&&(d+=C[r++]<<p,p+=8)),(S+=d&(1<<w)-1)>l){t.msg="invalid distance too far back",n.mode=30;break t}if(d>>>=w,p-=w,S>(w=a-o)){if((w=S-w)>c&&n.sane){t.msg="invalid distance too far back",n.mode=30;break t}if(_=0,k=f,0===h){if(_+=u-w,w<x){for(x-=w;A[a++]=f[_++],--w;);_=a-S,k=A}}else if(h<w){if(_+=u+h-w,(w-=h)<x){for(x-=w;A[a++]=f[_++],--w;);if(_=0,h<x){for(x-=w=h;A[a++]=f[_++],--w;);_=a-S,k=A}}}else if(_+=h-w,w<x){for(x-=w;A[a++]=f[_++],--w;);_=a-S,k=A}for(;x>2;)A[a++]=k[_++],A[a++]=k[_++],A[a++]=k[_++],x-=3;x&&(A[a++]=k[_++],x>1&&(A[a++]=k[_++]))}else{for(_=a-S;A[a++]=A[_++],A[a++]=A[_++],A[a++]=A[_++],(x-=3)>2;);x&&(A[a++]=A[_++],x>1&&(A[a++]=A[_++]))}break}}break}}while(r<i&&a<s);r-=x=p>>3,d&=(1<<(p-=x<<3))-1,t.next_in=r,t.next_out=a,t.avail_in=r<i?i-r+5:5-(r-i),t.avail_out=a<s?s-a+257:257-(a-s),n.hold=d,n.bits=p}},function(t,e,n){"use strict";var r=n(34),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(t,e,n,l,u,c,h,f){var d,p,g,y,v,b,m,w,x,S=f.bits,_=0,k=0,C=0,A=0,P=0,E=0,I=0,T=0,O=0,L=0,B=null,M=0,R=new r.Buf16(16),F=new r.Buf16(16),D=null,z=0;for(_=0;_<=15;_++)R[_]=0;for(k=0;k<l;k++)R[e[n+k]]++;for(P=S,A=15;A>=1&&0===R[A];A--);if(P>A&&(P=A),0===A)return u[c++]=20971520,u[c++]=20971520,f.bits=1,0;for(C=1;C<A&&0===R[C];C++);for(P<C&&(P=C),T=1,_=1;_<=15;_++)if(T<<=1,(T-=R[_])<0)return-1;if(T>0&&(0===t||1!==A))return-1;for(F[1]=0,_=1;_<15;_++)F[_+1]=F[_]+R[_];for(k=0;k<l;k++)0!==e[n+k]&&(h[F[e[n+k]]++]=k);if(0===t?(B=D=h,b=19):1===t?(B=i,M-=257,D=a,z-=257,b=256):(B=o,D=s,b=-1),L=0,k=0,_=C,v=c,E=P,I=0,g=-1,y=(O=1<<P)-1,1===t&&O>852||2===t&&O>592)return 1;for(;;){for(m=_-I,h[k]<b?(w=0,x=h[k]):h[k]>b?(w=D[z+h[k]],x=B[M+h[k]]):(w=96,x=0),d=1<<_-I,C=p=1<<E;u[v+(L>>I)+(p-=d)]=m<<24|w<<16|x|0,0!==p;);for(d=1<<_-1;L&d;)d>>=1;if(0!==d?(L&=d-1,L+=d):L=0,k++,0==--R[_]){if(_===A)break;_=e[n+h[k]]}if(_>P&&(L&y)!==g){for(0===I&&(I=P),v+=C,T=1<<(E=_-I);E+I<A&&!((T-=R[E+I])<=0);)E++,T<<=1;if(O+=1<<E,1===t&&O>852||2===t&&O>592)return 1;u[g=L&y]=P<<24|E<<16|v-c|0}}return 0!==L&&(u[v+L]=_-I<<24|64<<16|0),f.bits=P,0}},function(t,e,n){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(t,e){(function(){var e;e=function(){var t,e;function n(n,r){var i,a,o,s,l,u;this.document=n,null==r&&(r={}),this.size=r.size||"letter",this.layout=r.layout||"portrait","number"==typeof r.margin?this.margins={top:r.margin,left:r.margin,bottom:r.margin,right:r.margin}:this.margins=r.margins||t,i=Array.isArray(this.size)?this.size:e[this.size.toUpperCase()],this.width=i["portrait"===this.layout?0:1],this.height=i["portrait"===this.layout?1:0],this.content=this.document.ref(),this.resources=this.document.ref({ProcSet:["PDF","Text","ImageB","ImageC","ImageI"]}),Object.defineProperties(this,{fonts:{get:(u=this,function(){var t;return null!=(t=u.resources.data).Font?t.Font:t.Font={}})},xobjects:{get:(l=this,function(){var t;return null!=(t=l.resources.data).XObject?t.XObject:t.XObject={}})},ext_gstates:{get:(s=this,function(){var t;return null!=(t=s.resources.data).ExtGState?t.ExtGState:t.ExtGState={}})},patterns:{get:(o=this,function(){var t;return null!=(t=o.resources.data).Pattern?t.Pattern:t.Pattern={}})},annotations:{get:(a=this,function(){var t;return null!=(t=a.dictionary.data).Annots?t.Annots:t.Annots=[]})}}),this.dictionary=this.document.ref({Type:"Page",Parent:this.document._root.data.Pages,MediaBox:[0,0,this.width,this.height],Contents:this.content,Resources:this.resources})}return n.prototype.maxY=function(){return this.height-this.margins.bottom},n.prototype.write=function(t){return this.content.write(t)},n.prototype.end=function(){return this.dictionary.end(),this.resources.end(),this.content.end()},t={top:72,left:72,bottom:72,right:72},e={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]},n}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i,a,o;o=n(163),e=o.PDFGradient,r=o.PDFLinearGradient,i=o.PDFRadialGradient,t.exports={initColor:function(){return this._opacityRegistry={},this._opacityCount=0,this._gradCount=0},_normalizeColor:function(t){var n,r;return t instanceof e?t:("string"==typeof t&&("#"===t.charAt(0)?(4===t.length&&(t=t.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i,"#$1$1$2$2$3$3")),n=parseInt(t.slice(1),16),t=[n>>16,n>>8&255,255&n]):a[t]&&(t=a[t])),Array.isArray(t)?(3===t.length?t=function(){var e,n,i;for(i=[],e=0,n=t.length;e<n;e++)r=t[e],i.push(r/255);return i}():4===t.length&&(t=function(){var e,n,i;for(i=[],e=0,n=t.length;e<n;e++)r=t[e],i.push(r/100);return i}()),t):null)},_setColor:function(t,n){var r,i;return!!(t=this._normalizeColor(t))&&(r=n?"SCN":"scn",t instanceof e?(this._setColorSpace("Pattern",n),t.apply(r)):(i=4===t.length?"DeviceCMYK":"DeviceRGB",this._setColorSpace(i,n),t=t.join(" "),this.addContent(t+" "+r)),!0)},_setColorSpace:function(t,e){var n;return n=e?"CS":"cs",this.addContent("/"+t+" "+n)},fillColor:function(t,e){return this._setColor(t,!1)&&this.fillOpacity(e),this._fillColor=[t,e],this},strokeColor:function(t,e){return this._setColor(t,!0)&&this.strokeOpacity(e),this},opacity:function(t){return this._doOpacity(t,t),this},fillOpacity:function(t){return this._doOpacity(t,null),this},strokeOpacity:function(t){return this._doOpacity(null,t),this},_doOpacity:function(t,e){var n,r,i,a;if(null!=t||null!=e)return null!=t&&(t=Math.max(0,Math.min(1,t))),null!=e&&(e=Math.max(0,Math.min(1,e))),r=t+"_"+e,this._opacityRegistry[r]?(n=(a=this._opacityRegistry[r])[0],i=a[1]):(n={Type:"ExtGState"},null!=t&&(n.ca=t),null!=e&&(n.CA=e),(n=this.ref(n)).end(),i="Gs"+ ++this._opacityCount,this._opacityRegistry[r]=[n,i]),this.page.ext_gstates[i]=n,this.addContent("/"+i+" gs")},linearGradient:function(t,e,n,i){return new r(this,t,e,n,i)},radialGradient:function(t,e,n,r,a,o){return new i(this,t,e,n,r,a,o)}},a={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}).call(this)},function(t,e){(function(){var e,n,r,i=function(t,e){for(var n in e)a.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}return r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype,t},a={}.hasOwnProperty;e=function(){function t(t){this.doc=t,this.stops=[],this.embedded=!1,this.transform=[1,0,0,1,0,0],this._colorSpace="DeviceRGB"}return t.prototype.stop=function(t,e,n){return null==n&&(n=1),n=Math.max(0,Math.min(1,n)),this.stops.push([t,this.doc._normalizeColor(e),n]),this},t.prototype.setTransform=function(t,e,n,r,i,a){return this.transform=[t,e,n,r,i,a],this},t.prototype.embed=function(t){var e,n,r,i,a,o,s,l,u,c,h,f,d,p,g,y,v,b,m,w;if(0!==this.stops.length){for(this.embedded=!0,this.matrix=t,(c=this.stops[this.stops.length-1])[0]<1&&this.stops.push([1,c[1],c[2]]),e=[],n=[],m=[],s=l=0,g=this.stops.length-1;0<=g?l<g:l>g;s=0<=g?++l:--l)n.push(0,1),s+2!==this.stops.length&&e.push(this.stops[s+1][0]),r=this.doc.ref({FunctionType:2,Domain:[0,1],C0:this.stops[s+0][1],C1:this.stops[s+1][1],N:1}),m.push(r),r.end();if(1===m.length?r=m[0]:(r=this.doc.ref({FunctionType:3,Domain:[0,1],Functions:m,Bounds:e,Encode:n})).end(),this.id="Sh"+ ++this.doc._gradCount,(v=this.shader(r)).end(),(p=this.doc.ref({Type:"Pattern",PatternType:2,Shading:v,Matrix:function(){var t,e,n,r;for(r=[],t=0,e=(n=this.matrix).length;t<e;t++)w=n[t],r.push(+w.toFixed(5));return r}.call(this)})).end(),this.stops.some(function(t){return t[2]<1})){for((a=this.opacityGradient())._colorSpace="DeviceGray",u=0,h=(y=this.stops).length;u<h;u++)b=y[u],a.stop(b[0],[b[2]]);a=a.embed(this.matrix),d=[0,0,this.doc.page.width,this.doc.page.height],(i=this.doc.ref({Type:"XObject",Subtype:"Form",FormType:1,BBox:d,Group:{Type:"Group",S:"Transparency",CS:"DeviceGray"},Resources:{ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],Pattern:{Sh1:a}}})).write("/Pattern cs /Sh1 scn"),i.end(d.join(" ")+" re f"),(o=this.doc.ref({Type:"ExtGState",SMask:{Type:"Mask",S:"Luminosity",G:i}})).end(),(f=this.doc.ref({Type:"Pattern",PatternType:1,PaintType:1,TilingType:2,BBox:d,XStep:d[2],YStep:d[3],Resources:{ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],Pattern:{Sh1:p},ExtGState:{Gs1:o}}})).write("/Gs1 gs /Pattern cs /Sh1 scn"),f.end(d.join(" ")+" re f"),this.doc.page.patterns[this.id]=f}else this.doc.page.patterns[this.id]=p;return p}},t.prototype.apply=function(t){var e,n,r,i,a,o,s,l,u,c,h,f,d,p,g;return i=(p=this.doc._ctm.slice())[0],a=p[1],l=p[2],h=p[3],f=p[4],d=p[5],r=[i*(o=(g=this.transform)[0])+l*(s=g[1]),a*o+h*s,i*(u=g[2])+l*(c=g[3]),a*u+h*c,i*(e=g[4])+l*(n=g[5])+f,a*e+h*n+d],this.embedded&&r.join(" ")===this.matrix.join(" ")||this.embed(r),this.doc.addContent("/"+this.id+" "+t)},t}(),n=function(t){function n(t,e,r,i,a){this.doc=t,this.x1=e,this.y1=r,this.x2=i,this.y2=a,n.__super__.constructor.apply(this,arguments)}return i(n,e),n.prototype.shader=function(t){return this.doc.ref({ShadingType:2,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.x2,this.y2],Function:t,Extend:[!0,!0]})},n.prototype.opacityGradient=function(){return new n(this.doc,this.x1,this.y1,this.x2,this.y2)},n}(),r=function(t){function n(t,e,r,i,a,o,s){this.doc=t,this.x1=e,this.y1=r,this.r1=i,this.x2=a,this.y2=o,this.r2=s,n.__super__.constructor.apply(this,arguments)}return i(n,e),n.prototype.shader=function(t){return this.doc.ref({ShadingType:3,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.r1,this.x2,this.y2,this.r2],Function:t,Extend:[!0,!0]})},n.prototype.opacityGradient=function(){return new n(this.doc,this.x1,this.y1,this.r1,this.x2,this.y2,this.r2)},n}(),t.exports={PDFGradient:e,PDFLinearGradient:n,PDFRadialGradient:r}}).call(this)},function(t,e,n){(function(){var e,r,i,a=[].slice;r=n(165),i=n(26).number,e=(Math.sqrt(2)-1)/3*4,t.exports={initVector:function(){return this._ctm=[1,0,0,1,0,0],this._ctmStack=[]},save:function(){return this._ctmStack.push(this._ctm.slice()),this.addContent("q")},restore:function(){return this._ctm=this._ctmStack.pop()||[1,0,0,1,0,0],this.addContent("Q")},closePath:function(){return this.addContent("h")},lineWidth:function(t){return this.addContent(i(t)+" w")},_CAP_STYLES:{BUTT:0,ROUND:1,SQUARE:2},lineCap:function(t){return"string"==typeof t&&(t=this._CAP_STYLES[t.toUpperCase()]),this.addContent(t+" J")},_JOIN_STYLES:{MITER:0,ROUND:1,BEVEL:2},lineJoin:function(t){return"string"==typeof t&&(t=this._JOIN_STYLES[t.toUpperCase()]),this.addContent(t+" j")},miterLimit:function(t){return this.addContent(i(t)+" M")},dash:function(t,e){var n,r,a,o;return null==e&&(e={}),null==t?this:Array.isArray(t)?(t=function(){var e,n,r;for(r=[],e=0,n=t.length;e<n;e++)o=t[e],r.push(i(o));return r}().join(" "),n=e.phase||0,this.addContent("["+t+"] "+i(n)+" d")):(a=null!=(r=e.space)?r:t,n=e.phase||0,this.addContent("["+i(t)+" "+i(a)+"] "+i(n)+" d"))},undash:function(){return this.addContent("[] 0 d")},moveTo:function(t,e){return this.addContent(i(t)+" "+i(e)+" m")},lineTo:function(t,e){return this.addContent(i(t)+" "+i(e)+" l")},bezierCurveTo:function(t,e,n,r,a,o){return this.addContent(i(t)+" "+i(e)+" "+i(n)+" "+i(r)+" "+i(a)+" "+i(o)+" c")},quadraticCurveTo:function(t,e,n,r){return this.addContent(i(t)+" "+i(e)+" "+i(n)+" "+i(r)+" v")},rect:function(t,e,n,r){return this.addContent(i(t)+" "+i(e)+" "+i(n)+" "+i(r)+" re")},roundedRect:function(t,n,r,i,a){var o;return null==a&&(a=0),o=(a=Math.min(a,.5*r,.5*i))*(1-e),this.moveTo(t+a,n),this.lineTo(t+r-a,n),this.bezierCurveTo(t+r-o,n,t+r,n+o,t+r,n+a),this.lineTo(t+r,n+i-a),this.bezierCurveTo(t+r,n+i-o,t+r-o,n+i,t+r-a,n+i),this.lineTo(t+a,n+i),this.bezierCurveTo(t+o,n+i,t,n+i-o,t,n+i-a),this.lineTo(t,n+a),this.bezierCurveTo(t,n+o,t+o,n,t+a,n),this.closePath()},ellipse:function(t,n,r,i){var a,o,s,l,u,c;return null==i&&(i=r),a=r*e,o=i*e,s=(t-=r)+2*r,u=(n-=i)+2*i,l=t+r,c=n+i,this.moveTo(t,c),this.bezierCurveTo(t,c-o,l-a,n,l,n),this.bezierCurveTo(l+a,n,s,c-o,s,c),this.bezierCurveTo(s,c+o,l+a,u,l,u),this.bezierCurveTo(l-a,u,t,c+o,t,c),this.closePath()},circle:function(t,e,n){return this.ellipse(t,e,n)},arc:function(t,n,r,i,a,o){var s,l,u,c,h,f,d,p,g,y,v,b,m,w,x,S,_;for(null==o&&(o=!1),l=2*Math.PI,s=.5*Math.PI,y=a-i,Math.abs(y)>l?y=l:0!==y&&o!==y<0&&(y=(o?-1:1)*l+y),m=(_=y/(x=Math.ceil(Math.abs(y)/s)))/s*e*r,g=i,v=-Math.sin(g)*m,b=Math.cos(g)*m,u=t+Math.cos(g)*r,c=n+Math.sin(g)*r,this.moveTo(u,c),w=0,S=x;0<=S?w<S:w>S;0<=S?++w:--w)h=u+v,f=c+b,g+=_,u=t+Math.cos(g)*r,c=n+Math.sin(g)*r,d=u-(v=-Math.sin(g)*m),p=c-(b=Math.cos(g)*m),this.bezierCurveTo(h,f,d,p,u,c);return this},polygon:function(){var t,e,n,r;for(r=1<=arguments.length?a.call(arguments,0):[],this.moveTo.apply(this,r.shift()),t=0,e=r.length;t<e;t++)n=r[t],this.lineTo.apply(this,n);return this.closePath()},path:function(t){return r.apply(this,t),this},_windingRule:function(t){return/even-?odd/.test(t)?"*":""},fill:function(t,e){return/(even-?odd)|(non-?zero)/.test(t)&&(e=t,t=null),t&&this.fillColor(t),this.addContent("f"+this._windingRule(e))},stroke:function(t){return t&&this.strokeColor(t),this.addContent("S")},fillAndStroke:function(t,e,n){var r;return null==e&&(e=t),(r=/(even-?odd)|(non-?zero)/).test(t)&&(n=t,t=null),r.test(e)&&(n=e,e=t),t&&(this.fillColor(t),this.strokeColor(e)),this.addContent("B"+this._windingRule(n))},clip:function(t){return this.addContent("W"+this._windingRule(t)+" n")},transform:function(t,e,n,r,a,o){var s,l,u,c,h,f,d,p,g;return l=(s=this._ctm)[0],u=s[1],c=s[2],h=s[3],f=s[4],d=s[5],s[0]=l*t+c*e,s[1]=u*t+h*e,s[2]=l*n+c*r,s[3]=u*n+h*r,s[4]=l*a+c*o+f,s[5]=u*a+h*o+d,g=function(){var s,l,u,c;for(c=[],s=0,l=(u=[t,e,n,r,a,o]).length;s<l;s++)p=u[s],c.push(i(p));return c}().join(" "),this.addContent(g+" cm")},translate:function(t,e){return this.transform(1,0,0,1,t,e)},rotate:function(t,e){var n,r,i,a,o,s,l;return null==e&&(e={}),r=t*Math.PI/180,n=Math.cos(r),a=Math.sin(r),o=s=0,null!=e.origin&&(l=(o=(i=e.origin)[0])*a+(s=i[1])*n,o-=o*n-s*a,s-=l),this.transform(n,a,-a,n,o,s)},scale:function(t,e,n){var r,i,a;return null==e&&(e=t),null==n&&(n={}),"object"==typeof e&&(n=e,e=t),i=a=0,null!=n.origin&&(i=(r=n.origin)[0],a=r[1],i-=t*i,a-=e*a),this.transform(t,0,0,e,i,a)}}}).call(this)},function(t,e){(function(){var e;e=function(){var t,e,n,r,i,a,o,s,l,u,c,h,f;function d(){}return d.apply=function(e,n){var r;return r=a(n),t(r,e)},i={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0},a=function(t){var e,n,r,a,o,s,l,u,c;for(c=[],e=[],a="",o=!1,u=0,s=0,l=t.length;s<l;s++)if(n=t[s],null!=i[n])u=i[n],r&&(a.length>0&&(e[e.length]=+a),c[c.length]={cmd:r,args:e},e=[],a="",o=!1),r=n;else if(" "===n||","===n||"-"===n&&a.length>0&&"e"!==a[a.length-1]||"."===n&&o){if(0===a.length)continue;e.length===u?(c[c.length]={cmd:r,args:e},e=[+a],"M"===r&&(r="L"),"m"===r&&(r="l")):e[e.length]=+a,o="."===n,a="-"===n||"."===n?n:""}else a+=n,"."===n&&(o=!0);return a.length>0&&(e.length===u?(c[c.length]={cmd:r,args:e},e=[+a],"M"===r&&(r="L"),"m"===r&&(r="l")):e[e.length]=+a),c[c.length]={cmd:r,args:e},c},n=r=o=s=h=f=0,t=function(t,e){var i,a,u,c,d;for(n=r=o=s=h=f=0,a=u=0,c=t.length;u<c;a=++u)i=t[a],"function"==typeof l[d=i.cmd]&&l[d](e,i.args);return n=r=o=s=0},l={M:function(t,e){return n=e[0],r=e[1],o=s=null,h=n,f=r,t.moveTo(n,r)},m:function(t,e){return n+=e[0],r+=e[1],o=s=null,h=n,f=r,t.moveTo(n,r)},C:function(t,e){return n=e[4],r=e[5],o=e[2],s=e[3],t.bezierCurveTo.apply(t,e)},c:function(t,e){return t.bezierCurveTo(e[0]+n,e[1]+r,e[2]+n,e[3]+r,e[4]+n,e[5]+r),o=n+e[2],s=r+e[3],n+=e[4],r+=e[5]},S:function(t,e){return null===o&&(o=n,s=r),t.bezierCurveTo(n-(o-n),r-(s-r),e[0],e[1],e[2],e[3]),o=e[0],s=e[1],n=e[2],r=e[3]},s:function(t,e){return null===o&&(o=n,s=r),t.bezierCurveTo(n-(o-n),r-(s-r),n+e[0],r+e[1],n+e[2],r+e[3]),o=n+e[0],s=r+e[1],n+=e[2],r+=e[3]},Q:function(t,e){return o=e[0],s=e[1],n=e[2],r=e[3],t.quadraticCurveTo(e[0],e[1],n,r)},q:function(t,e){return t.quadraticCurveTo(e[0]+n,e[1]+r,e[2]+n,e[3]+r),o=n+e[0],s=r+e[1],n+=e[2],r+=e[3]},T:function(t,e){return null===o?(o=n,s=r):(o=n-(o-n),s=r-(s-r)),t.quadraticCurveTo(o,s,e[0],e[1]),o=n-(o-n),s=r-(s-r),n=e[0],r=e[1]},t:function(t,e){return null===o?(o=n,s=r):(o=n-(o-n),s=r-(s-r)),t.quadraticCurveTo(o,s,n+e[0],r+e[1]),n+=e[0],r+=e[1]},A:function(t,e){return c(t,n,r,e),n=e[5],r=e[6]},a:function(t,e){return e[5]+=n,e[6]+=r,c(t,n,r,e),n=e[5],r=e[6]},L:function(t,e){return n=e[0],r=e[1],o=s=null,t.lineTo(n,r)},l:function(t,e){return n+=e[0],r+=e[1],o=s=null,t.lineTo(n,r)},H:function(t,e){return n=e[0],o=s=null,t.lineTo(n,r)},h:function(t,e){return n+=e[0],o=s=null,t.lineTo(n,r)},V:function(t,e){return r=e[0],o=s=null,t.lineTo(n,r)},v:function(t,e){return r+=e[0],o=s=null,t.lineTo(n,r)},Z:function(t){return t.closePath(),n=h,r=f},z:function(t){return t.closePath(),n=h,r=f}},c=function(t,n,r,i){var a,o,s,l,c,h,f,d,p,g,y,v,b;for(p=i[0],g=i[1],d=i[2],c=i[3],b=i[4],o=i[5],s=i[6],f=[],l=0,h=(v=e(o,s,p,g,c,b,d,n,r)).length;l<h;l++)y=v[l],a=u.apply(null,y),f.push(t.bezierCurveTo.apply(t,a));return f},e=function(t,e,n,r,i,a,l,u,c){var h,f,d,p,g,y,v,b,m,w,x,S,_,k,C,A,P,E,I,T,O,L,B,M,R;for(C=l*(Math.PI/180),k=Math.sin(C),g=Math.cos(C),n=Math.abs(n),r=Math.abs(r),(b=(o=g*(u-t)*.5+k*(c-e)*.5)*o/(n*n)+(s=g*(c-e)*.5-k*(u-t)*.5)*s/(r*r))>1&&(n*=b=Math.sqrt(b),r*=b),(_=1/(((O=(h=g/n)*t+(f=k/n)*e)-(T=h*u+f*c))*(O-T)+((M=(d=-k/r)*t+(p=g/r)*e)-(B=d*u+p*c))*(M-B))-.25)<0&&(_=0),S=Math.sqrt(_),a===i&&(S=-S),L=.5*(T+O)-S*(M-B),R=.5*(B+M)+S*(O-T),A=Math.atan2(B-R,T-L),(I=Math.atan2(M-R,O-L)-A)<0&&1===a?I+=2*Math.PI:I>0&&0===a&&(I-=2*Math.PI),w=[],y=v=0,m=x=Math.ceil(Math.abs(I/(.5*Math.PI+.001)));0<=m?v<m:v>m;y=0<=m?++v:--v)P=A+y*I/x,E=A+(y+1)*I/x,w[y]=[L,R,P,E,n,r,k,g];return w},u=function(t,e,n,r,i,a,o,s){var l,u,c,h,f,d,p,g,y,v,b,m;return l=s*i,u=-o*a,c=o*i,h=s*a,d=.5*(r-n),f=8/3*Math.sin(.5*d)*Math.sin(.5*d)/Math.sin(d),p=t+Math.cos(n)-f*Math.sin(n),v=e+Math.sin(n)+f*Math.cos(n),y=t+Math.cos(r),m=e+Math.sin(r),[l*p+u*v,c*p+h*v,l*(g=y+f*Math.sin(r))+u*(b=m-f*Math.cos(r)),c*g+h*b,l*y+u*m,c*y+h*m]},d}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e;e=n(50),t.exports={initFonts:function(){this._fontFamilies={},this._fontCount=0,this._fontSize=12,this._font=null,this._registeredFonts={}},font:function(t,n,r){var i,a,o,s;return"number"==typeof n&&(r=n,n=null),"string"==typeof t&&this._registeredFonts[t]?(i=t,t=(s=this._registeredFonts[t]).src,n=s.family):"string"!=typeof(i=n||t)&&(i=null),null!=r&&this.fontSize(r),(a=this._fontFamilies[i])?(this._font=a,this):(o="F"+ ++this._fontCount,this._font=e.open(this,t,n,o),(a=this._fontFamilies[this._font.name])?(this._font=a,this):(i&&(this._fontFamilies[i]=this._font),this._font.name&&(this._fontFamilies[this._font.name]=this._font),this))},fontSize:function(t){return this._fontSize=t,this},currentLineHeight:function(t){return null==t&&(t=!1),this._font.lineHeight(this._fontSize,t)},registerFont:function(t,e,n){return this._registeredFonts[t]={src:e,family:n},this}}}).call(this)},function(t,e,n){"use strict";(function(e,r){function i(t){return t&&"object"==typeof t&&"default"in t?t.default:t}var a=i(n(168)),o=i(n(197)),s=i(n(60)),l=i(n(209)),u=i(n(212)),c=i(n(69)),h=i(n(74)),f=i(n(106)),d=i(n(107)),p=i(n(225)),g=i(n(236)),y=i(n(237)),v=n(12),b=i(n(245)),m=i(n(248)),w=i(n(251)),x=i(n(255)),S=i(n(258)),_=i(n(263)),k=i(n(269)),C=i(n(43)),A=i(n(271)),P=i(n(280)),E=i(n(283)),I=i(n(79)),T=i(n(284)),O={logErrors:!1},L=[];function B(t,e,n){if(n.get){var r=n.get;n.get=function(){var t=r.call(this);return h(this,e,{value:t}),t}}else if("function"==typeof n.value){var i=n.value;return{get:function(){var t=new p;function n(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];var a=n.length>0?n[0]:"value";if(t.has(a))return t.get(a);var o=i.apply(this,n);return t.set(a,o),o}return h(this,e,{value:n}),n}}}}O.registerFormat=function(t){L.push(t)},O.openSync=function(t,e){var r=n(8).readFileSync(t);return O.create(r,e)},O.open=function(t,e,r){"function"==typeof e&&(r=e,e=null),n(8).readFile(t,function(t,n){if(t)return r(t);try{var i=O.create(n,e)}catch(t){return r(t)}return r(null,i)})},O.create=function(t,e){for(var n=0;n<L.length;n++){var r=L[n];if(r.probe(t)){var i=new r(new a.DecodeStream(t));return e?i.getFont(e):i}}throw new Error("Unknown font format")};var M=new a.Struct({firstCode:a.uint16,entryCount:a.uint16,idDelta:a.int16,idRangeOffset:a.uint16}),R=new a.Struct({startCharCode:a.uint32,endCharCode:a.uint32,glyphID:a.uint32}),F=new a.Struct({startUnicodeValue:a.uint24,additionalCount:a.uint8}),D=new a.Struct({unicodeValue:a.uint24,glyphID:a.uint16}),z=new a.Array(F,a.uint32),N=new a.Array(D,a.uint32),U=new a.Struct({varSelector:a.uint24,defaultUVS:new a.Pointer(a.uint32,z,{type:"parent"}),nonDefaultUVS:new a.Pointer(a.uint32,N,{type:"parent"})}),W=new a.VersionedStruct(a.uint16,{0:{length:a.uint16,language:a.uint16,codeMap:new a.LazyArray(a.uint8,256)},2:{length:a.uint16,language:a.uint16,subHeaderKeys:new a.Array(a.uint16,256),subHeaderCount:function(t){return Math.max.apply(Math,t.subHeaderKeys)},subHeaders:new a.LazyArray(M,"subHeaderCount"),glyphIndexArray:new a.LazyArray(a.uint16,"subHeaderCount")},4:{length:a.uint16,language:a.uint16,segCountX2:a.uint16,segCount:function(t){return t.segCountX2>>1},searchRange:a.uint16,entrySelector:a.uint16,rangeShift:a.uint16,endCode:new a.LazyArray(a.uint16,"segCount"),reservedPad:new a.Reserved(a.uint16),startCode:new a.LazyArray(a.uint16,"segCount"),idDelta:new a.LazyArray(a.int16,"segCount"),idRangeOffset:new a.LazyArray(a.uint16,"segCount"),glyphIndexArray:new a.LazyArray(a.uint16,function(t){return(t.length-t._currentOffset)/2})},6:{length:a.uint16,language:a.uint16,firstCode:a.uint16,entryCount:a.uint16,glyphIndices:new a.LazyArray(a.uint16,"entryCount")},8:{reserved:new a.Reserved(a.uint16),length:a.uint32,language:a.uint16,is32:new a.LazyArray(a.uint8,8192),nGroups:a.uint32,groups:new a.LazyArray(R,"nGroups")},10:{reserved:new a.Reserved(a.uint16),length:a.uint32,language:a.uint32,firstCode:a.uint32,entryCount:a.uint32,glyphIndices:new a.LazyArray(a.uint16,"numChars")},12:{reserved:new a.Reserved(a.uint16),length:a.uint32,language:a.uint32,nGroups:a.uint32,groups:new a.LazyArray(R,"nGroups")},13:{reserved:new a.Reserved(a.uint16),length:a.uint32,language:a.uint32,nGroups:a.uint32,groups:new a.LazyArray(R,"nGroups")},14:{length:a.uint32,numRecords:a.uint32,varSelectors:new a.LazyArray(U,"numRecords")}}),G=new a.Struct({platformID:a.uint16,encodingID:a.uint16,table:new a.Pointer(a.uint32,W,{type:"parent",lazy:!0})}),V=new a.Struct({version:a.uint16,numSubtables:a.uint16,tables:new a.Array(G,"numSubtables")}),j=new a.Struct({version:a.int32,revision:a.int32,checkSumAdjustment:a.uint32,magicNumber:a.uint32,flags:a.uint16,unitsPerEm:a.uint16,created:new a.Array(a.int32,2),modified:new a.Array(a.int32,2),xMin:a.int16,yMin:a.int16,xMax:a.int16,yMax:a.int16,macStyle:new a.Bitfield(a.uint16,["bold","italic","underline","outline","shadow","condensed","extended"]),lowestRecPPEM:a.uint16,fontDirectionHint:a.int16,indexToLocFormat:a.int16,glyphDataFormat:a.int16}),H=new a.Struct({version:a.int32,ascent:a.int16,descent:a.int16,lineGap:a.int16,advanceWidthMax:a.uint16,minLeftSideBearing:a.int16,minRightSideBearing:a.int16,xMaxExtent:a.int16,caretSlopeRise:a.int16,caretSlopeRun:a.int16,caretOffset:a.int16,reserved:new a.Reserved(a.int16,4),metricDataFormat:a.int16,numberOfMetrics:a.uint16}),q=new a.Struct({advance:a.uint16,bearing:a.int16}),Z=new a.Struct({metrics:new a.LazyArray(q,function(t){return t.parent.hhea.numberOfMetrics}),bearings:new a.LazyArray(a.int16,function(t){return t.parent.maxp.numGlyphs-t.parent.hhea.numberOfMetrics})}),Y=new a.Struct({version:a.int32,numGlyphs:a.uint16,maxPoints:a.uint16,maxContours:a.uint16,maxComponentPoints:a.uint16,maxComponentContours:a.uint16,maxZones:a.uint16,maxTwilightPoints:a.uint16,maxStorage:a.uint16,maxFunctionDefs:a.uint16,maxInstructionDefs:a.uint16,maxStackElements:a.uint16,maxSizeOfInstructions:a.uint16,maxComponentElements:a.uint16,maxComponentDepth:a.uint16});function X(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return 1===t&&J[n]?J[n]:K[t][e]}var K=[["utf16be","utf16be","utf16be","utf16be","utf16be","utf16be"],["macroman","shift-jis","big5","euc-kr","iso-8859-6","iso-8859-8","macgreek","maccyrillic","symbol","Devanagari","Gurmukhi","Gujarati","Oriya","Bengali","Tamil","Telugu","Kannada","Malayalam","Sinhalese","Burmese","Khmer","macthai","Laotian","Georgian","Armenian","gb-2312-80","Tibetan","Mongolian","Geez","maccenteuro","Vietnamese","Sindhi"],["ascii"],["symbol","utf16be","shift-jis","gb18030","big5","wansung","johab",null,null,null,"utf16be"]],J={15:"maciceland",17:"macturkish",18:"maccroatian",24:"maccenteuro",25:"maccenteuro",26:"maccenteuro",27:"maccenteuro",28:"maccenteuro",30:"maciceland",37:"macromania",38:"maccenteuro",39:"maccenteuro",40:"maccenteuro",143:"macinuit",146:"macgaelic"},Q=[[],{0:"en",30:"fo",60:"ks",90:"rw",1:"fr",31:"fa",61:"ku",91:"rn",2:"de",32:"ru",62:"sd",92:"ny",3:"it",33:"zh",63:"bo",93:"mg",4:"nl",34:"nl-BE",64:"ne",94:"eo",5:"sv",35:"ga",65:"sa",128:"cy",6:"es",36:"sq",66:"mr",129:"eu",7:"da",37:"ro",67:"bn",130:"ca",8:"pt",38:"cz",68:"as",131:"la",9:"no",39:"sk",69:"gu",132:"qu",10:"he",40:"si",70:"pa",133:"gn",11:"ja",41:"yi",71:"or",134:"ay",12:"ar",42:"sr",72:"ml",135:"tt",13:"fi",43:"mk",73:"kn",136:"ug",14:"el",44:"bg",74:"ta",137:"dz",15:"is",45:"uk",75:"te",138:"jv",16:"mt",46:"be",76:"si",139:"su",17:"tr",47:"uz",77:"my",140:"gl",18:"hr",48:"kk",78:"km",141:"af",19:"zh-Hant",49:"az-Cyrl",79:"lo",142:"br",20:"ur",50:"az-Arab",80:"vi",143:"iu",21:"hi",51:"hy",81:"id",144:"gd",22:"th",52:"ka",82:"tl",145:"gv",23:"ko",53:"mo",83:"ms",146:"ga",24:"lt",54:"ky",84:"ms-Arab",147:"to",25:"pl",55:"tg",85:"am",148:"el-polyton",26:"hu",56:"tk",86:"ti",149:"kl",27:"es",57:"mn-CN",87:"om",150:"az",28:"lv",58:"mn",88:"so",151:"nn",29:"se",59:"ps",89:"sw"},[],{1078:"af",16393:"en-IN",1159:"rw",1074:"tn",1052:"sq",6153:"en-IE",1089:"sw",1115:"si",1156:"gsw",8201:"en-JM",1111:"kok",1051:"sk",1118:"am",17417:"en-MY",1042:"ko",1060:"sl",5121:"ar-DZ",5129:"en-NZ",1088:"ky",11274:"es-AR",15361:"ar-BH",13321:"en-PH",1108:"lo",16394:"es-BO",3073:"ar",18441:"en-SG",1062:"lv",13322:"es-CL",2049:"ar-IQ",7177:"en-ZA",1063:"lt",9226:"es-CO",11265:"ar-JO",11273:"en-TT",2094:"dsb",5130:"es-CR",13313:"ar-KW",2057:"en-GB",1134:"lb",7178:"es-DO",12289:"ar-LB",1033:"en",1071:"mk",12298:"es-EC",4097:"ar-LY",12297:"en-ZW",2110:"ms-BN",17418:"es-SV",6145:"ary",1061:"et",1086:"ms",4106:"es-GT",8193:"ar-OM",1080:"fo",1100:"ml",18442:"es-HN",16385:"ar-QA",1124:"fil",1082:"mt",2058:"es-MX",1025:"ar-SA",1035:"fi",1153:"mi",19466:"es-NI",10241:"ar-SY",2060:"fr-BE",1146:"arn",6154:"es-PA",7169:"aeb",3084:"fr-CA",1102:"mr",15370:"es-PY",14337:"ar-AE",1036:"fr",1148:"moh",10250:"es-PE",9217:"ar-YE",5132:"fr-LU",1104:"mn",20490:"es-PR",1067:"hy",6156:"fr-MC",2128:"mn-CN",3082:"es",1101:"as",4108:"fr-CH",1121:"ne",1034:"es",2092:"az-Cyrl",1122:"fy",1044:"nb",21514:"es-US",1068:"az",1110:"gl",2068:"nn",14346:"es-UY",1133:"ba",1079:"ka",1154:"oc",8202:"es-VE",1069:"eu",3079:"de-AT",1096:"or",2077:"sv-FI",1059:"be",1031:"de",1123:"ps",1053:"sv",2117:"bn",5127:"de-LI",1045:"pl",1114:"syr",1093:"bn-IN",4103:"de-LU",1046:"pt",1064:"tg",8218:"bs-Cyrl",2055:"de-CH",2070:"pt-PT",2143:"tzm",5146:"bs",1032:"el",1094:"pa",1097:"ta",1150:"br",1135:"kl",1131:"qu-BO",1092:"tt",1026:"bg",1095:"gu",2155:"qu-EC",1098:"te",1027:"ca",1128:"ha",3179:"qu",1054:"th",3076:"zh-HK",1037:"he",1048:"ro",1105:"bo",5124:"zh-MO",1081:"hi",1047:"rm",1055:"tr",2052:"zh",1038:"hu",1049:"ru",1090:"tk",4100:"zh-SG",1039:"is",9275:"smn",1152:"ug",1028:"zh-TW",1136:"ig",4155:"smj-NO",1058:"uk",1155:"co",1057:"id",5179:"smj",1070:"hsb",1050:"hr",1117:"iu",3131:"se-FI",1056:"ur",4122:"hr-BA",2141:"iu-Latn",1083:"se",2115:"uz-Cyrl",1029:"cs",2108:"ga",2107:"se-SE",1091:"uz",1030:"da",1076:"xh",8251:"sms",1066:"vi",1164:"prs",1077:"zu",6203:"sma-NO",1106:"cy",1125:"dv",1040:"it",7227:"sms",1160:"wo",2067:"nl-BE",2064:"it-CH",1103:"sa",1157:"sah",1043:"nl",1041:"ja",7194:"sr-Cyrl-BA",1144:"ii",3081:"en-AU",1099:"kn",3098:"sr",1130:"yo",10249:"en-BZ",1087:"kk",6170:"sr-Latn-BA",4105:"en-CA",1107:"km",2074:"sr-Latn",9225:"en-029",1158:"quc",1132:"nso"}],$=new a.Struct({platformID:a.uint16,encodingID:a.uint16,languageID:a.uint16,nameID:a.uint16,length:a.uint16,string:new a.Pointer(a.uint16,new a.String("length",function(t){return X(t.platformID,t.encodingID,t.languageID)}),{type:"parent",relativeTo:"parent.stringOffset",allowNull:!1})}),tt=new a.Struct({length:a.uint16,tag:new a.Pointer(a.uint16,new a.String("length","utf16be"),{type:"parent",relativeTo:"stringOffset"})}),NameTable=new a.VersionedStruct(a.uint16,{0:{count:a.uint16,stringOffset:a.uint16,records:new a.Array($,"count")},1:{count:a.uint16,stringOffset:a.uint16,records:new a.Array($,"count"),langTagCount:a.uint16,langTags:new a.Array(tt,"langTagCount")}}),et=["copyright","fontFamily","fontSubfamily","uniqueSubfamily","fullName","version","postscriptName","trademark","manufacturer","designer","description","vendorURL","designerURL","license","licenseURL",null,"preferredFamily","preferredSubfamily","compatibleFull","sampleText","postscriptCIDFontName","wwsFamilyName","wwsSubfamilyName"];NameTable.process=function(t){var e={},n=this.records,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=Q[o.platformID][o.languageID];null==l&&null!=this.langTags&&o.languageID>=32768&&(l=this.langTags[o.languageID-32768].tag),null==l&&(l=o.platformID+"-"+o.languageID);var u=o.nameID>=256?"fontFeatures":et[o.nameID]||o.nameID;null==e[u]&&(e[u]={});var c=e[u];o.nameID>=256&&(c=c[o.nameID]||(c[o.nameID]={})),"string"!=typeof o.string&&"string"==typeof c[l]||(c[l]=o.string)}this.records=e},NameTable.preEncode=function(){if(!Array.isArray(this.records)){this.version=0;var t=[];for(var n in this.records){var r=this.records[n];"fontFeatures"!==n&&(t.push({platformID:3,encodingID:1,languageID:1033,nameID:et.indexOf(n),length:e.byteLength(r.en,"utf16le"),string:r.en}),"postscriptName"===n&&t.push({platformID:1,encodingID:0,languageID:0,nameID:et.indexOf(n),length:r.en.length,string:r.en}))}this.records=t,this.count=t.length,this.stringOffset=NameTable.size(this,null,!1)}};var nt=new a.VersionedStruct(a.uint16,{header:{xAvgCharWidth:a.int16,usWeightClass:a.uint16,usWidthClass:a.uint16,fsType:new a.Bitfield(a.uint16,[null,"noEmbedding","viewOnly","editable",null,null,null,null,"noSubsetting","bitmapOnly"]),ySubscriptXSize:a.int16,ySubscriptYSize:a.int16,ySubscriptXOffset:a.int16,ySubscriptYOffset:a.int16,ySuperscriptXSize:a.int16,ySuperscriptYSize:a.int16,ySuperscriptXOffset:a.int16,ySuperscriptYOffset:a.int16,yStrikeoutSize:a.int16,yStrikeoutPosition:a.int16,sFamilyClass:a.int16,panose:new a.Array(a.uint8,10),ulCharRange:new a.Array(a.uint32,4),vendorID:new a.String(4),fsSelection:new a.Bitfield(a.uint16,["italic","underscore","negative","outlined","strikeout","bold","regular","useTypoMetrics","wws","oblique"]),usFirstCharIndex:a.uint16,usLastCharIndex:a.uint16},0:{},1:{typoAscender:a.int16,typoDescender:a.int16,typoLineGap:a.int16,winAscent:a.uint16,winDescent:a.uint16,codePageRange:new a.Array(a.uint32,2)},2:{typoAscender:a.int16,typoDescender:a.int16,typoLineGap:a.int16,winAscent:a.uint16,winDescent:a.uint16,codePageRange:new a.Array(a.uint32,2),xHeight:a.int16,capHeight:a.int16,defaultChar:a.uint16,breakChar:a.uint16,maxContent:a.uint16},5:{typoAscender:a.int16,typoDescender:a.int16,typoLineGap:a.int16,winAscent:a.uint16,winDescent:a.uint16,codePageRange:new a.Array(a.uint32,2),xHeight:a.int16,capHeight:a.int16,defaultChar:a.uint16,breakChar:a.uint16,maxContent:a.uint16,usLowerOpticalPointSize:a.uint16,usUpperOpticalPointSize:a.uint16}}),rt=nt.versions;rt[3]=rt[4]=rt[2];var it=new a.VersionedStruct(a.fixed32,{header:{italicAngle:a.fixed32,underlinePosition:a.int16,underlineThickness:a.int16,isFixedPitch:a.uint32,minMemType42:a.uint32,maxMemType42:a.uint32,minMemType1:a.uint32,maxMemType1:a.uint32},1:{},2:{numberOfGlyphs:a.uint16,glyphNameIndex:new a.Array(a.uint16,"numberOfGlyphs"),names:new a.Array(new a.String(a.uint8))},2.5:{numberOfGlyphs:a.uint16,offsets:new a.Array(a.uint8,"numberOfGlyphs")},3:{},4:{map:new a.Array(a.uint32,function(t){return t.parent.maxp.numGlyphs})}}),at=new a.Struct({controlValues:new a.Array(a.int16)}),ot=new a.Struct({instructions:new a.Array(a.uint8)}),st=new a.VersionedStruct("head.indexToLocFormat",{0:{offsets:new a.Array(a.uint16)},1:{offsets:new a.Array(a.uint32)}});st.process=function(){if(0===this.version)for(var t=0;t<this.offsets.length;t++)this.offsets[t]<<=1},st.preEncode=function(){if(null==this.version&&(this.version=this.offsets[this.offsets.length-1]>65535?1:0,0===this.version))for(var t=0;t<this.offsets.length;t++)this.offsets[t]>>>=1};var lt=new a.Struct({controlValueProgram:new a.Array(a.uint8)}),ut=new a.Array(new a.Buffer),ct=function(){function t(e){f(this,t),this.type=e}return t.prototype.getCFFVersion=function(t){for(;t&&!t.hdrSize;)t=t.parent;return t?t.version:-1},t.prototype.decode=function(t,e){var n=this.getCFFVersion(e)>=2?t.readUInt32BE():t.readUInt16BE();if(0===n)return[];var r=t.readUInt8(),i=void 0;if(1===r)i=a.uint8;else if(2===r)i=a.uint16;else if(3===r)i=a.uint24;else{if(4!==r)throw new Error("Bad offset size in CFFIndex: "+r+" "+t.pos);i=a.uint32}for(var o=[],s=t.pos+(n+1)*r-1,l=i.decode(t),u=0;u<n;u++){var c=i.decode(t);if(null!=this.type){var h=t.pos;t.pos=s+l,e.length=c-l,o.push(this.type.decode(t,e)),t.pos=h}else o.push({offset:s+l,length:c-l});l=c}return t.pos=s+l,o},t.prototype.size=function(t,e){var n=2;if(0===t.length)return n;for(var r=this.type||new a.Buffer,i=1,o=0;o<t.length;o++){var s=t[o];i+=r.size(s,e)}var l=void 0;if(i<=255)l=a.uint8;else if(i<=65535)l=a.uint16;else if(i<=16777215)l=a.uint24;else{if(!(i<=4294967295))throw new Error("Bad offset in CFFIndex");l=a.uint32}return n+=1+l.size()*(t.length+1),n+=i-1,n},t.prototype.encode=function(t,e,n){if(t.writeUInt16BE(e.length),0!==e.length){var r=this.type||new a.Buffer,i=[],o=1,l=e,u=Array.isArray(l),c=0;for(l=u?l:s(l);;){var h;if(u){if(c>=l.length)break;h=l[c++]}else{if((c=l.next()).done)break;h=c.value}var f=h,d=r.size(f,n);i.push(d),o+=d}var p=void 0;if(o<=255)p=a.uint8;else if(o<=65535)p=a.uint16;else if(o<=16777215)p=a.uint24;else{if(!(o<=4294967295))throw new Error("Bad offset in CFFIndex");p=a.uint32}t.writeUInt8(p.size()),o=1,p.encode(t,o);var g=i,y=Array.isArray(g),v=0;for(g=y?g:s(g);;){var b;if(y){if(v>=g.length)break;b=g[v++]}else{if((v=g.next()).done)break;b=v.value}o+=b,p.encode(t,o)}var m=e,w=Array.isArray(m),x=0;for(m=w?m:s(m);;){var S;if(w){if(x>=m.length)break;S=m[x++]}else{if((x=m.next()).done)break;S=x.value}var _=S;r.encode(t,_,n)}}},t}(),ht=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],ft={".":10,E:11,"E-":12,"-":14},dt=function(){function t(){f(this,t)}return t.decode=function(t,e){if(32<=e&&e<=246)return e-139;if(247<=e&&e<=250)return 256*(e-247)+t.readUInt8()+108;if(251<=e&&e<=254)return 256*-(e-251)-t.readUInt8()-108;if(28===e)return t.readInt16BE();if(29===e)return t.readInt32BE();if(30===e){for(var n="";;){var r=t.readUInt8(),i=r>>4;if(15===i)break;n+=ht[i];var a=15&r;if(15===a)break;n+=ht[a]}return parseFloat(n)}return null},t.size=function(t){if(t.forceLarge&&(t=32768),(0|t)!==t){var e=""+t;return 1+Math.ceil((e.length+1)/2)}return-107<=t&&t<=107?1:108<=t&&t<=1131||-1131<=t&&t<=-108?2:-32768<=t&&t<=32767?3:5},t.encode=function(t,e){var n=Number(e);if(e.forceLarge)return t.writeUInt8(29),t.writeInt32BE(n);if((0|n)===n)return-107<=n&&n<=107?t.writeUInt8(n+139):108<=n&&n<=1131?(n-=108,t.writeUInt8(247+(n>>8)),t.writeUInt8(255&n)):-1131<=n&&n<=-108?(n=-n-108,t.writeUInt8(251+(n>>8)),t.writeUInt8(255&n)):-32768<=n&&n<=32767?(t.writeUInt8(28),t.writeInt16BE(n)):(t.writeUInt8(29),t.writeInt32BE(n));t.writeUInt8(30);for(var r=""+n,i=0;i<r.length;i+=2){var a=r[i],o=ft[a]||+a;if(i===r.length-1)var s=15;else{var l=r[i+1];s=ft[l]||+l}t.writeUInt8(o<<4|15&s)}return 15!==s?t.writeUInt8(240):void 0},t}(),pt=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];f(this,t),this.ops=e,this.fields={};var n=e,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=Array.isArray(o[0])?o[0][0]<<8|o[0][1]:o[0];this.fields[l]=o}}return t.prototype.decodeOperands=function(t,e,n,r){var i=this;if(Array.isArray(t))return r.map(function(r,a){return i.decodeOperands(t[a],e,n,[r])});if(null!=t.decode)return t.decode(e,n,r);switch(t){case"number":case"offset":case"sid":return r[0];case"boolean":return!!r[0];default:return r}},t.prototype.encodeOperands=function(t,e,n,r){var i=this;return Array.isArray(t)?r.map(function(r,a){return i.encodeOperands(t[a],e,n,r)[0]}):null!=t.encode?t.encode(e,r,n):"number"==typeof r?[r]:"boolean"==typeof r?[+r]:Array.isArray(r)?r:[r]},t.prototype.decode=function(t,e){var n=t.pos+e.length,r={},i=[];for(var a in b(r,{parent:{value:e},_startOffset:{value:t.pos}}),this.fields){var o=this.fields[a];r[o[1]]=o[3]}for(;t.pos<n;){var s=t.readUInt8();if(s<28){12===s&&(s=s<<8|t.readUInt8());var l=this.fields[s];if(!l)throw new Error("Unknown operator "+s);var u=this.decodeOperands(l[2],t,r,i);null!=u&&(u instanceof v.PropertyDescriptor?h(r,l[1],u):r[l[1]]=u),i=[]}else i.push(dt.decode(t,s))}return r},t.prototype.size=function(t,e){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r={parent:e,val:t,pointerSize:0,startOffset:e.startOffset||0},i=0;for(var a in this.fields){var o=this.fields[a],l=t[o[1]];if(null!=l&&!m(l,o[3])){var u=this.encodeOperands(o[2],null,r,l),c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d=f;i+=dt.size(d)}i+=(Array.isArray(o[0])?o[0]:[o[0]]).length}}return n&&(i+=r.pointerSize),i},t.prototype.encode=function(t,e,n){var r={pointers:[],startOffset:t.pos,parent:n,val:e,pointerSize:0};r.pointerOffset=t.pos+this.size(e,r,!1);var i=this.ops,a=Array.isArray(i),o=0;for(i=a?i:s(i);;){var l;if(a){if(o>=i.length)break;l=i[o++]}else{if((o=i.next()).done)break;l=o.value}var u=l,c=e[u[1]];if(null!=c&&!m(c,u[3])){var h=this.encodeOperands(u[2],t,r,c),f=Array.isArray(h),d=0;for(h=f?h:s(h);;){var p;if(f){if(d>=h.length)break;p=h[d++]}else{if((d=h.next()).done)break;p=d.value}var g=p;dt.encode(t,g)}var y=Array.isArray(u[0])?u[0]:[u[0]],v=Array.isArray(y),b=0;for(y=v?y:s(y);;){var w;if(v){if(b>=y.length)break;w=y[b++]}else{if((b=y.next()).done)break;w=b.value}var x=w;t.writeUInt8(x)}}}for(var S=0;S<r.pointers.length;){var _=r.pointers[S++];_.type.encode(t,_.val,_.parent)}},t}(),gt=function(t){function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return f(this,e),null==r.type&&(r.type="global"),g(this,t.call(this,null,n,r))}return y(e,t),e.prototype.decode=function(e,n,r){return this.offsetType={decode:function(){return r[0]}},t.prototype.decode.call(this,e,n,r)},e.prototype.encode=function(e,n,r){if(!e)return this.offsetType={size:function(){return 0}},this.size(n,r),[new yt(0)];var i=null;return this.offsetType={encode:function(t,e){return i=e}},t.prototype.encode.call(this,e,n,r),[new yt(i)]},e}(a.Pointer),yt=function(){function t(e){f(this,t),this.val=e,this.forceLarge=!0}return t.prototype.valueOf=function(){return this.val},t}(),vt=new pt([[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","number",.039625],[[12,10],"BlueShift","number",7],[[12,11],"BlueFuzz","number",1],[10,"StdHW","number",null],[11,"StdVW","number",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","boolean",!1],[[12,17],"LanguageGroup","number",0],[[12,18],"ExpansionFactor","number",.06],[[12,19],"initialRandomSeed","number",0],[20,"defaultWidthX","number",0],[21,"nominalWidthX","number",0],[22,"vsindex","number",0],[23,"blend",function(){function t(){f(this,t)}return t.decode=function(t,e,n){for(var r=n.pop();n.length>r;)n.pop()},t}(),null],[19,"Subrs",new gt(new ct,{type:"local"}),null]]),bt=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],mt=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],wt=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],xt=new a.Struct({reserved:new a.Reserved(a.uint16),reqFeatureIndex:a.uint16,featureCount:a.uint16,featureIndexes:new a.Array(a.uint16,"featureCount")}),St=new a.Struct({tag:new a.String(4),langSys:new a.Pointer(a.uint16,xt,{type:"parent"})}),_t=new a.Struct({defaultLangSys:new a.Pointer(a.uint16,xt),count:a.uint16,langSysRecords:new a.Array(St,"count")}),kt=new a.Struct({tag:new a.String(4),script:new a.Pointer(a.uint16,_t,{type:"parent"})}),Ct=new a.Array(kt,a.uint16),At=new a.Struct({featureParams:a.uint16,lookupCount:a.uint16,lookupListIndexes:new a.Array(a.uint16,"lookupCount")}),Pt=new a.Struct({tag:new a.String(4),feature:new a.Pointer(a.uint16,At,{type:"parent"})}),Et=new a.Array(Pt,a.uint16),It=new a.Struct({markAttachmentType:a.uint8,flags:new a.Bitfield(a.uint8,["rightToLeft","ignoreBaseGlyphs","ignoreLigatures","ignoreMarks","useMarkFilteringSet"])});function Tt(t){var e=new a.Struct({lookupType:a.uint16,flags:It,subTableCount:a.uint16,subTables:new a.Array(new a.Pointer(a.uint16,t),"subTableCount"),markFilteringSet:new a.Optional(a.uint16,function(t){return t.flags.flags.useMarkFilteringSet})});return new a.LazyArray(new a.Pointer(a.uint16,e),a.uint16)}var Ot,Lt=new a.Struct({start:a.uint16,end:a.uint16,startCoverageIndex:a.uint16}),Bt=new a.VersionedStruct(a.uint16,{1:{glyphCount:a.uint16,glyphs:new a.Array(a.uint16,"glyphCount")},2:{rangeCount:a.uint16,rangeRecords:new a.Array(Lt,"rangeCount")}}),Mt=new a.Struct({start:a.uint16,end:a.uint16,class:a.uint16}),Rt=new a.VersionedStruct(a.uint16,{1:{startGlyph:a.uint16,glyphCount:a.uint16,classValueArray:new a.Array(a.uint16,"glyphCount")},2:{classRangeCount:a.uint16,classRangeRecord:new a.Array(Mt,"classRangeCount")}}),Ft=new a.Struct({a:a.uint16,b:a.uint16,deltaFormat:a.uint16}),Dt=new a.Struct({sequenceIndex:a.uint16,lookupListIndex:a.uint16}),zt=new a.Struct({glyphCount:a.uint16,lookupCount:a.uint16,input:new a.Array(a.uint16,function(t){return t.glyphCount-1}),lookupRecords:new a.Array(Dt,"lookupCount")}),Nt=new a.Array(new a.Pointer(a.uint16,zt),a.uint16),Ut=new a.Struct({glyphCount:a.uint16,lookupCount:a.uint16,classes:new a.Array(a.uint16,function(t){return t.glyphCount-1}),lookupRecords:new a.Array(Dt,"lookupCount")}),Wt=new a.Array(new a.Pointer(a.uint16,Ut),a.uint16),Gt=new a.VersionedStruct(a.uint16,{1:{coverage:new a.Pointer(a.uint16,Bt),ruleSetCount:a.uint16,ruleSets:new a.Array(new a.Pointer(a.uint16,Nt),"ruleSetCount")},2:{coverage:new a.Pointer(a.uint16,Bt),classDef:new a.Pointer(a.uint16,Rt),classSetCnt:a.uint16,classSet:new a.Array(new a.Pointer(a.uint16,Wt),"classSetCnt")},3:{glyphCount:a.uint16,lookupCount:a.uint16,coverages:new a.Array(new a.Pointer(a.uint16,Bt),"glyphCount"),lookupRecords:new a.Array(Dt,"lookupCount")}}),Vt=new a.Struct({backtrackGlyphCount:a.uint16,backtrack:new a.Array(a.uint16,"backtrackGlyphCount"),inputGlyphCount:a.uint16,input:new a.Array(a.uint16,function(t){return t.inputGlyphCount-1}),lookaheadGlyphCount:a.uint16,lookahead:new a.Array(a.uint16,"lookaheadGlyphCount"),lookupCount:a.uint16,lookupRecords:new a.Array(Dt,"lookupCount")}),jt=new a.Array(new a.Pointer(a.uint16,Vt),a.uint16),Ht=new a.VersionedStruct(a.uint16,{1:{coverage:new a.Pointer(a.uint16,Bt),chainCount:a.uint16,chainRuleSets:new a.Array(new a.Pointer(a.uint16,jt),"chainCount")},2:{coverage:new a.Pointer(a.uint16,Bt),backtrackClassDef:new a.Pointer(a.uint16,Rt),inputClassDef:new a.Pointer(a.uint16,Rt),lookaheadClassDef:new a.Pointer(a.uint16,Rt),chainCount:a.uint16,chainClassSet:new a.Array(new a.Pointer(a.uint16,jt),"chainCount")},3:{backtrackGlyphCount:a.uint16,backtrackCoverage:new a.Array(new a.Pointer(a.uint16,Bt),"backtrackGlyphCount"),inputGlyphCount:a.uint16,inputCoverage:new a.Array(new a.Pointer(a.uint16,Bt),"inputGlyphCount"),lookaheadGlyphCount:a.uint16,lookaheadCoverage:new a.Array(new a.Pointer(a.uint16,Bt),"lookaheadGlyphCount"),lookupCount:a.uint16,lookupRecords:new a.Array(Dt,"lookupCount")}}),qt=new a.Fixed(16,"BE",14),Zt=new a.Struct({startCoord:qt,peakCoord:qt,endCoord:qt}),Yt=new a.Struct({axisCount:a.uint16,regionCount:a.uint16,variationRegions:new a.Array(new a.Array(Zt,"axisCount"),"regionCount")}),Xt=new a.Struct({shortDeltas:new a.Array(a.int16,function(t){return t.parent.shortDeltaCount}),regionDeltas:new a.Array(a.int8,function(t){return t.parent.regionIndexCount-t.parent.shortDeltaCount}),deltas:function(t){return t.shortDeltas.concat(t.regionDeltas)}}),Kt=new a.Struct({itemCount:a.uint16,shortDeltaCount:a.uint16,regionIndexCount:a.uint16,regionIndexes:new a.Array(a.uint16,"regionIndexCount"),deltaSets:new a.Array(Xt,"itemCount")}),Jt=new a.Struct({format:a.uint16,variationRegionList:new a.Pointer(a.uint32,Yt),variationDataCount:a.uint16,itemVariationData:new a.Array(new a.Pointer(a.uint32,Kt),"variationDataCount")}),Qt=new a.VersionedStruct(a.uint16,{1:(Ot={axisIndex:a.uint16},Ot.axisIndex=a.uint16,Ot.filterRangeMinValue=qt,Ot.filterRangeMaxValue=qt,Ot)}),$t=new a.Struct({conditionCount:a.uint16,conditionTable:new a.Array(new a.Pointer(a.uint32,Qt),"conditionCount")}),te=new a.Struct({featureIndex:a.uint16,alternateFeatureTable:new a.Pointer(a.uint32,At,{type:"parent"})}),ee=new a.Struct({version:a.fixed32,substitutionCount:a.uint16,substitutions:new a.Array(te,"substitutionCount")}),ne=new a.Struct({conditionSet:new a.Pointer(a.uint32,$t,{type:"parent"}),featureTableSubstitution:new a.Pointer(a.uint32,ee,{type:"parent"})}),re=new a.Struct({majorVersion:a.uint16,minorVersion:a.uint16,featureVariationRecordCount:a.uint32,featureVariationRecords:new a.Array(ne,"featureVariationRecordCount")}),ie=function(){function t(e,n){f(this,t),this.predefinedOps=e,this.type=n}return t.prototype.decode=function(t,e,n){return this.predefinedOps[n[0]]?this.predefinedOps[n[0]]:this.type.decode(t,e,n)},t.prototype.size=function(t,e){return this.type.size(t,e)},t.prototype.encode=function(t,e,n){var r=this.predefinedOps.indexOf(e);return-1!==r?r:this.type.encode(t,e,n)},t}(),ae=function(t){function e(){return f(this,e),g(this,t.call(this,"UInt8"))}return y(e,t),e.prototype.decode=function(t){return 127&a.uint8.decode(t)},e}(a.Number),oe=new a.Struct({first:a.uint16,nLeft:a.uint8}),se=new a.Struct({first:a.uint16,nLeft:a.uint16}),le=new ie([mt,["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"]],new gt(new a.VersionedStruct(new ae,{0:{nCodes:a.uint8,codes:new a.Array(a.uint8,"nCodes")},1:{nRanges:a.uint8,ranges:new a.Array(oe,"nRanges")}}),{lazy:!0})),ue=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype.decode=function(t,e){for(var n=v.resolveLength(this.length,t,e),r=0,i=[];r<n;){var a=this.type.decode(t,e);a.offset=r,r+=a.nLeft+1,i.push(a)}return i},e}(a.Array),ce=new ie([wt,[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"]],new gt(new a.VersionedStruct(a.uint8,{0:{glyphs:new a.Array(a.uint16,function(t){return t.parent.CharStrings.length-1})},1:{ranges:new ue(oe,function(t){return t.parent.CharStrings.length-1})},2:{ranges:new ue(se,function(t){return t.parent.CharStrings.length-1})}}),{lazy:!0})),he=new a.Struct({first:a.uint16,fd:a.uint8}),fe=new a.Struct({first:a.uint32,fd:a.uint16}),de=new a.VersionedStruct(a.uint8,{0:{fds:new a.Array(a.uint8,function(t){return t.parent.CharStrings.length})},3:{nRanges:a.uint16,ranges:new a.Array(he,"nRanges"),sentinel:a.uint16},4:{nRanges:a.uint32,ranges:new a.Array(fe,"nRanges"),sentinel:a.uint32}}),pe=new gt(vt),ge=function(){function t(){f(this,t)}return t.prototype.decode=function(t,e,n){return e.length=n[0],pe.decode(t,e,[n[1]])},t.prototype.size=function(t,e){return[vt.size(t,e,!1),pe.size(t,e)[0]]},t.prototype.encode=function(t,e,n){return[vt.size(e,n,!1),pe.encode(t,e,n)[0]]},t}(),ye=new pt([[18,"Private",new ge,null],[[12,38],"FontName","sid",null]]),ve=new pt([[[12,30],"ROS",["sid","sid","number"],null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","boolean",!1],[[12,2],"ItalicAngle","number",0],[[12,3],"UnderlinePosition","number",-100],[[12,4],"UnderlineThickness","number",50],[[12,5],"PaintType","number",0],[[12,6],"CharstringType","number",2],[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[13,"UniqueID","number",null],[5,"FontBBox","array",[0,0,0,0]],[[12,8],"StrokeWidth","number",0],[14,"XUID","array",null],[15,"charset",ce,wt],[16,"Encoding",le,mt],[17,"CharStrings",new gt(new ct),null],[18,"Private",new ge,null],[[12,20],"SyntheticBase","number",null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","number",0],[[12,32],"CIDFontRevision","number",0],[[12,33],"CIDFontType","number",0],[[12,34],"CIDCount","number",8720],[[12,35],"UIDBase","number",null],[[12,37],"FDSelect",new gt(de),null],[[12,36],"FDArray",new gt(new ct(ye)),null],[[12,38],"FontName","sid",null]]),be=new a.Struct({length:a.uint16,itemVariationStore:Jt}),me=new pt([[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[17,"CharStrings",new gt(new ct),null],[[12,37],"FDSelect",new gt(de),null],[[12,36],"FDArray",new gt(new ct(ye)),null],[24,"vstore",new gt(be),null],[25,"maxstack","number",193]]),we=new a.VersionedStruct(a.fixed16,{1:{hdrSize:a.uint8,offSize:a.uint8,nameIndex:new ct(new a.String("length")),topDictIndex:new ct(ve),stringIndex:new ct(new a.String("length")),globalSubrIndex:new ct},2:{hdrSize:a.uint8,length:a.uint16,topDict:me,globalSubrIndex:new ct}}),xe=function(){function t(e){f(this,t),this.stream=e,this.decode()}return t.decode=function(e){return new t(e)},t.prototype.decode=function(){this.stream.pos;var t=we.decode(this.stream);for(var e in t){var n=t[e];this[e]=n}if(this.version<2){if(1!==this.topDictIndex.length)throw new Error("Only a single font is allowed in CFF");this.topDict=this.topDictIndex[0]}return this.isCIDFont=null!=this.topDict.ROS,this},t.prototype.string=function(t){return this.version>=2?null:t<bt.length?bt[t]:this.stringIndex[t-bt.length]},t.prototype.getCharString=function(t){return this.stream.pos=this.topDict.CharStrings[t].offset,this.stream.readBuffer(this.topDict.CharStrings[t].length)},t.prototype.getGlyphName=function(t){if(this.version>=2)return null;if(this.isCIDFont)return null;var e=this.topDict.charset;if(Array.isArray(e))return e[t];if(0===t)return".notdef";switch(t-=1,e.version){case 0:return this.string(e.glyphs[t]);case 1:case 2:for(var n=0;n<e.ranges.length;n++){var r=e.ranges[n];if(r.offset<=t&&t<=r.offset+r.nLeft)return this.string(r.first+(t-r.offset))}}return null},t.prototype.fdForGlyph=function(t){if(!this.topDict.FDSelect)return null;switch(this.topDict.FDSelect.version){case 0:return this.topDict.FDSelect.fds[t];case 3:case 4:for(var e=this.topDict.FDSelect.ranges,n=0,r=e.length-1;n<=r;){var i=n+r>>1;if(t<e[i].first)r=i-1;else{if(!(i<r&&t>e[i+1].first))return e[i].fd;n=i+1}}default:throw new Error("Unknown FDSelect version: "+this.topDict.FDSelect.version)}},t.prototype.privateDictForGlyph=function(t){if(this.topDict.FDSelect){var e=this.fdForGlyph(t);return this.topDict.FDArray[e]?this.topDict.FDArray[e].Private:null}return this.version<2?this.topDict.Private:this.topDict.FDArray[0].Private},d(t,[{key:"postscriptName",get:function(){return this.version<2?this.nameIndex[0]:null}},{key:"fullName",get:function(){return this.string(this.topDict.FullName)}},{key:"familyName",get:function(){return this.string(this.topDict.FamilyName)}}]),t}(),Se=new a.Struct({glyphIndex:a.uint16,vertOriginY:a.int16}),_e=new a.Struct({majorVersion:a.uint16,minorVersion:a.uint16,defaultVertOriginY:a.int16,numVertOriginYMetrics:a.uint16,metrics:new a.Array(Se,"numVertOriginYMetrics")}),ke=new a.Struct({height:a.uint8,width:a.uint8,horiBearingX:a.int8,horiBearingY:a.int8,horiAdvance:a.uint8,vertBearingX:a.int8,vertBearingY:a.int8,vertAdvance:a.uint8}),Ce=new a.Struct({height:a.uint8,width:a.uint8,bearingX:a.int8,bearingY:a.int8,advance:a.uint8}),Ae=new a.Struct({glyph:a.uint16,xOffset:a.int8,yOffset:a.int8}),Pe=function t(){f(this,t)},Ee=function t(){f(this,t)},Ie=(new a.VersionedStruct("version",{1:{metrics:Ce,data:Pe},2:{metrics:Ce,data:Ee},5:{data:Ee},6:{metrics:ke,data:Pe},7:{metrics:ke,data:Ee},8:{metrics:Ce,pad:new a.Reserved(a.uint8),numComponents:a.uint16,components:new a.Array(Ae,"numComponents")},9:{metrics:ke,pad:new a.Reserved(a.uint8),numComponents:a.uint16,components:new a.Array(Ae,"numComponents")},17:{metrics:Ce,dataLen:a.uint32,data:new a.Buffer("dataLen")},18:{metrics:ke,dataLen:a.uint32,data:new a.Buffer("dataLen")},19:{dataLen:a.uint32,data:new a.Buffer("dataLen")}}),new a.Struct({ascender:a.int8,descender:a.int8,widthMax:a.uint8,caretSlopeNumerator:a.int8,caretSlopeDenominator:a.int8,caretOffset:a.int8,minOriginSB:a.int8,minAdvanceSB:a.int8,maxBeforeBL:a.int8,minAfterBL:a.int8,pad:new a.Reserved(a.int8,2)})),Te=new a.Struct({glyphCode:a.uint16,offset:a.uint16}),Oe=new a.VersionedStruct(a.uint16,{header:{imageFormat:a.uint16,imageDataOffset:a.uint32},1:{offsetArray:new a.Array(a.uint32,function(t){return t.parent.lastGlyphIndex-t.parent.firstGlyphIndex+1})},2:{imageSize:a.uint32,bigMetrics:ke},3:{offsetArray:new a.Array(a.uint16,function(t){return t.parent.lastGlyphIndex-t.parent.firstGlyphIndex+1})},4:{numGlyphs:a.uint32,glyphArray:new a.Array(Te,function(t){return t.numGlyphs+1})},5:{imageSize:a.uint32,bigMetrics:ke,numGlyphs:a.uint32,glyphCodeArray:new a.Array(a.uint16,"numGlyphs")}}),Le=new a.Struct({firstGlyphIndex:a.uint16,lastGlyphIndex:a.uint16,subtable:new a.Pointer(a.uint32,Oe)}),Be=new a.Struct({indexSubTableArray:new a.Pointer(a.uint32,new a.Array(Le,1),{type:"parent"}),indexTablesSize:a.uint32,numberOfIndexSubTables:a.uint32,colorRef:a.uint32,hori:Ie,vert:Ie,startGlyphIndex:a.uint16,endGlyphIndex:a.uint16,ppemX:a.uint8,ppemY:a.uint8,bitDepth:a.uint8,flags:new a.Bitfield(a.uint8,["horizontal","vertical"])}),Me=new a.Struct({version:a.uint32,numSizes:a.uint32,sizes:new a.Array(Be,"numSizes")}),Re=new a.Struct({ppem:a.uint16,resolution:a.uint16,imageOffsets:new a.Array(new a.Pointer(a.uint32,"void"),function(t){return t.parent.parent.maxp.numGlyphs+1})}),Fe=new a.Struct({version:a.uint16,flags:new a.Bitfield(a.uint16,["renderOutlines"]),numImgTables:a.uint32,imageTables:new a.Array(new a.Pointer(a.uint32,Re),"numImgTables")}),De=new a.Struct({gid:a.uint16,paletteIndex:a.uint16}),ze=new a.Struct({gid:a.uint16,firstLayerIndex:a.uint16,numLayers:a.uint16}),Ne=new a.Struct({version:a.uint16,numBaseGlyphRecords:a.uint16,baseGlyphRecord:new a.Pointer(a.uint32,new a.Array(ze,"numBaseGlyphRecords")),layerRecords:new a.Pointer(a.uint32,new a.Array(De,"numLayerRecords"),{lazy:!0}),numLayerRecords:a.uint16}),Ue=new a.Struct({blue:a.uint8,green:a.uint8,red:a.uint8,alpha:a.uint8}),We=new a.VersionedStruct(a.uint16,{header:{numPaletteEntries:a.uint16,numPalettes:a.uint16,numColorRecords:a.uint16,colorRecords:new a.Pointer(a.uint32,new a.Array(Ue,"numColorRecords")),colorRecordIndices:new a.Array(a.uint16,"numPalettes")},0:{},1:{offsetPaletteTypeArray:new a.Pointer(a.uint32,new a.Array(a.uint32,"numPalettes")),offsetPaletteLabelArray:new a.Pointer(a.uint32,new a.Array(a.uint16,"numPalettes")),offsetPaletteEntryLabelArray:new a.Pointer(a.uint32,new a.Array(a.uint16,"numPaletteEntries"))}}),Ge=new a.VersionedStruct(a.uint16,{1:{coordinate:a.int16},2:{coordinate:a.int16,referenceGlyph:a.uint16,baseCoordPoint:a.uint16},3:{coordinate:a.int16,deviceTable:new a.Pointer(a.uint16,Ft)}}),Ve=new a.Struct({defaultIndex:a.uint16,baseCoordCount:a.uint16,baseCoords:new a.Array(new a.Pointer(a.uint16,Ge),"baseCoordCount")}),je=new a.Struct({tag:new a.String(4),minCoord:new a.Pointer(a.uint16,Ge,{type:"parent"}),maxCoord:new a.Pointer(a.uint16,Ge,{type:"parent"})}),He=new a.Struct({minCoord:new a.Pointer(a.uint16,Ge),maxCoord:new a.Pointer(a.uint16,Ge),featMinMaxCount:a.uint16,featMinMaxRecords:new a.Array(je,"featMinMaxCount")}),qe=new a.Struct({tag:new a.String(4),minMax:new a.Pointer(a.uint16,He,{type:"parent"})}),Ze=new a.Struct({baseValues:new a.Pointer(a.uint16,Ve),defaultMinMax:new a.Pointer(a.uint16,He),baseLangSysCount:a.uint16,baseLangSysRecords:new a.Array(qe,"baseLangSysCount")}),Ye=new a.Struct({tag:new a.String(4),script:new a.Pointer(a.uint16,Ze,{type:"parent"})}),Xe=new a.Array(Ye,a.uint16),Ke=new a.Array(new a.String(4),a.uint16),Je=new a.Struct({baseTagList:new a.Pointer(a.uint16,Ke),baseScriptList:new a.Pointer(a.uint16,Xe)}),Qe=new a.VersionedStruct(a.uint32,{header:{horizAxis:new a.Pointer(a.uint16,Je),vertAxis:new a.Pointer(a.uint16,Je)},65536:{},65537:{itemVariationStore:new a.Pointer(a.uint32,Jt)}}),$e=new a.Array(a.uint16,a.uint16),tn=new a.Struct({coverage:new a.Pointer(a.uint16,Bt),glyphCount:a.uint16,attachPoints:new a.Array(new a.Pointer(a.uint16,$e),"glyphCount")}),en=new a.VersionedStruct(a.uint16,{1:{coordinate:a.int16},2:{caretValuePoint:a.uint16},3:{coordinate:a.int16,deviceTable:new a.Pointer(a.uint16,Ft)}}),nn=new a.Array(new a.Pointer(a.uint16,en),a.uint16),rn=new a.Struct({coverage:new a.Pointer(a.uint16,Bt),ligGlyphCount:a.uint16,ligGlyphs:new a.Array(new a.Pointer(a.uint16,nn),"ligGlyphCount")}),an=new a.Struct({markSetTableFormat:a.uint16,markSetCount:a.uint16,coverage:new a.Array(new a.Pointer(a.uint32,Bt),"markSetCount")}),on=new a.VersionedStruct(a.uint32,{header:{glyphClassDef:new a.Pointer(a.uint16,Rt),attachList:new a.Pointer(a.uint16,tn),ligCaretList:new a.Pointer(a.uint16,rn),markAttachClassDef:new a.Pointer(a.uint16,Rt)},65536:{},65538:{markGlyphSetsDef:new a.Pointer(a.uint16,an)},65539:{markGlyphSetsDef:new a.Pointer(a.uint16,an),itemVariationStore:new a.Pointer(a.uint32,Jt)}}),sn=new a.Bitfield(a.uint16,["xPlacement","yPlacement","xAdvance","yAdvance","xPlaDevice","yPlaDevice","xAdvDevice","yAdvDevice"]),ln={xPlacement:a.int16,yPlacement:a.int16,xAdvance:a.int16,yAdvance:a.int16,xPlaDevice:new a.Pointer(a.uint16,Ft,{type:"global",relativeTo:"rel"}),yPlaDevice:new a.Pointer(a.uint16,Ft,{type:"global",relativeTo:"rel"}),xAdvDevice:new a.Pointer(a.uint16,Ft,{type:"global",relativeTo:"rel"}),yAdvDevice:new a.Pointer(a.uint16,Ft,{type:"global",relativeTo:"rel"})},un=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"valueFormat";f(this,t),this.key=e}return t.prototype.buildStruct=function(t){for(var e=t;!e[this.key]&&e.parent;)e=e.parent;if(e[this.key]){var n={rel:function(){return e._startOffset}},r=e[this.key];for(var i in r)r[i]&&(n[i]=ln[i]);return new a.Struct(n)}},t.prototype.size=function(t,e){return this.buildStruct(e).size(t,e)},t.prototype.decode=function(t,e){var n=this.buildStruct(e).decode(t,e);return delete n.rel,n},t}(),cn=new a.Struct({secondGlyph:a.uint16,value1:new un("valueFormat1"),value2:new un("valueFormat2")}),hn=new a.Array(cn,a.uint16),fn=new a.Struct({value1:new un("valueFormat1"),value2:new un("valueFormat2")}),dn=new a.VersionedStruct(a.uint16,{1:{xCoordinate:a.int16,yCoordinate:a.int16},2:{xCoordinate:a.int16,yCoordinate:a.int16,anchorPoint:a.uint16},3:{xCoordinate:a.int16,yCoordinate:a.int16,xDeviceTable:new a.Pointer(a.uint16,Ft),yDeviceTable:new a.Pointer(a.uint16,Ft)}}),pn=new a.Struct({entryAnchor:new a.Pointer(a.uint16,dn,{type:"parent"}),exitAnchor:new a.Pointer(a.uint16,dn,{type:"parent"})}),gn=new a.Struct({class:a.uint16,markAnchor:new a.Pointer(a.uint16,dn,{type:"parent"})}),yn=new a.Array(gn,a.uint16),vn=new a.Array(new a.Pointer(a.uint16,dn),function(t){return t.parent.classCount}),bn=new a.Array(vn,a.uint16),mn=new a.Array(new a.Pointer(a.uint16,dn),function(t){return t.parent.parent.classCount}),wn=new a.Array(mn,a.uint16),xn=new a.Array(new a.Pointer(a.uint16,wn),a.uint16),Sn=new a.VersionedStruct("lookupType",{1:new a.VersionedStruct(a.uint16,{1:{coverage:new a.Pointer(a.uint16,Bt),valueFormat:sn,value:new un},2:{coverage:new a.Pointer(a.uint16,Bt),valueFormat:sn,valueCount:a.uint16,values:new a.LazyArray(new un,"valueCount")}}),2:new a.VersionedStruct(a.uint16,{1:{coverage:new a.Pointer(a.uint16,Bt),valueFormat1:sn,valueFormat2:sn,pairSetCount:a.uint16,pairSets:new a.LazyArray(new a.Pointer(a.uint16,hn),"pairSetCount")},2:{coverage:new a.Pointer(a.uint16,Bt),valueFormat1:sn,valueFormat2:sn,classDef1:new a.Pointer(a.uint16,Rt),classDef2:new a.Pointer(a.uint16,Rt),class1Count:a.uint16,class2Count:a.uint16,classRecords:new a.LazyArray(new a.LazyArray(fn,"class2Count"),"class1Count")}}),3:{format:a.uint16,coverage:new a.Pointer(a.uint16,Bt),entryExitCount:a.uint16,entryExitRecords:new a.Array(pn,"entryExitCount")},4:{format:a.uint16,markCoverage:new a.Pointer(a.uint16,Bt),baseCoverage:new a.Pointer(a.uint16,Bt),classCount:a.uint16,markArray:new a.Pointer(a.uint16,yn),baseArray:new a.Pointer(a.uint16,bn)},5:{format:a.uint16,markCoverage:new a.Pointer(a.uint16,Bt),ligatureCoverage:new a.Pointer(a.uint16,Bt),classCount:a.uint16,markArray:new a.Pointer(a.uint16,yn),ligatureArray:new a.Pointer(a.uint16,xn)},6:{format:a.uint16,mark1Coverage:new a.Pointer(a.uint16,Bt),mark2Coverage:new a.Pointer(a.uint16,Bt),classCount:a.uint16,mark1Array:new a.Pointer(a.uint16,yn),mark2Array:new a.Pointer(a.uint16,bn)},7:Gt,8:Ht,9:{posFormat:a.uint16,lookupType:a.uint16,extension:new a.Pointer(a.uint32,Sn)}});Sn.versions[9].extension.type=Sn;var _n=new a.VersionedStruct(a.uint32,{header:{scriptList:new a.Pointer(a.uint16,Ct),featureList:new a.Pointer(a.uint16,Et),lookupList:new a.Pointer(a.uint16,new Tt(Sn))},65536:{},65537:{featureVariations:new a.Pointer(a.uint32,re)}}),kn=new a.Array(a.uint16,a.uint16),Cn=kn,An=new a.Struct({glyph:a.uint16,compCount:a.uint16,components:new a.Array(a.uint16,function(t){return t.compCount-1})}),Pn=new a.Array(new a.Pointer(a.uint16,An),a.uint16),En=new a.VersionedStruct("lookupType",{1:new a.VersionedStruct(a.uint16,{1:{coverage:new a.Pointer(a.uint16,Bt),deltaGlyphID:a.int16},2:{coverage:new a.Pointer(a.uint16,Bt),glyphCount:a.uint16,substitute:new a.LazyArray(a.uint16,"glyphCount")}}),2:{substFormat:a.uint16,coverage:new a.Pointer(a.uint16,Bt),count:a.uint16,sequences:new a.LazyArray(new a.Pointer(a.uint16,kn),"count")},3:{substFormat:a.uint16,coverage:new a.Pointer(a.uint16,Bt),count:a.uint16,alternateSet:new a.LazyArray(new a.Pointer(a.uint16,Cn),"count")},4:{substFormat:a.uint16,coverage:new a.Pointer(a.uint16,Bt),count:a.uint16,ligatureSets:new a.LazyArray(new a.Pointer(a.uint16,Pn),"count")},5:Gt,6:Ht,7:{substFormat:a.uint16,lookupType:a.uint16,extension:new a.Pointer(a.uint32,En)},8:{substFormat:a.uint16,coverage:new a.Pointer(a.uint16,Bt),backtrackCoverage:new a.Array(new a.Pointer(a.uint16,Bt),"backtrackGlyphCount"),lookaheadGlyphCount:a.uint16,lookaheadCoverage:new a.Array(new a.Pointer(a.uint16,Bt),"lookaheadGlyphCount"),glyphCount:a.uint16,substitutes:new a.Array(a.uint16,"glyphCount")}});En.versions[7].extension.type=En;var In=new a.VersionedStruct(a.uint32,{header:{scriptList:new a.Pointer(a.uint16,Ct),featureList:new a.Pointer(a.uint16,Et),lookupList:new a.Pointer(a.uint16,new Tt(En))},65536:{},65537:{featureVariations:new a.Pointer(a.uint32,re)}}),Tn=new a.Array(a.uint16,a.uint16),On=new a.Struct({shrinkageEnableGSUB:new a.Pointer(a.uint16,Tn),shrinkageDisableGSUB:new a.Pointer(a.uint16,Tn),shrinkageEnableGPOS:new a.Pointer(a.uint16,Tn),shrinkageDisableGPOS:new a.Pointer(a.uint16,Tn),shrinkageJstfMax:new a.Pointer(a.uint16,new Tt(Sn)),extensionEnableGSUB:new a.Pointer(a.uint16,Tn),extensionDisableGSUB:new a.Pointer(a.uint16,Tn),extensionEnableGPOS:new a.Pointer(a.uint16,Tn),extensionDisableGPOS:new a.Pointer(a.uint16,Tn),extensionJstfMax:new a.Pointer(a.uint16,new Tt(Sn))}),Ln=new a.Array(new a.Pointer(a.uint16,On),a.uint16),Bn=new a.Struct({tag:new a.String(4),jstfLangSys:new a.Pointer(a.uint16,Ln)}),Mn=new a.Struct({extenderGlyphs:new a.Pointer(a.uint16,new a.Array(a.uint16,a.uint16)),defaultLangSys:new a.Pointer(a.uint16,Ln),langSysCount:a.uint16,langSysRecords:new a.Array(Bn,"langSysCount")}),Rn=new a.Struct({tag:new a.String(4),script:new a.Pointer(a.uint16,Mn,{type:"parent"})}),Fn=new a.Struct({version:a.uint32,scriptCount:a.uint16,scriptList:new a.Array(Rn,"scriptCount")}),Dn=function(){function t(e){f(this,t),this._size=e}return t.prototype.decode=function(t,e){switch(this.size(0,e)){case 1:return t.readUInt8();case 2:return t.readUInt16BE();case 3:return t.readUInt24BE();case 4:return t.readUInt32BE()}},t.prototype.size=function(t,e){return v.resolveLength(this._size,null,e)},t}(),zn=new a.Struct({entry:new Dn(function(t){return 1+((48&t.parent.entryFormat)>>4)}),outerIndex:function(t){return t.entry>>1+(15&t.parent.entryFormat)},innerIndex:function(t){return t.entry&(1<<1+(15&t.parent.entryFormat))-1}}),Nn=new a.Struct({entryFormat:a.uint16,mapCount:a.uint16,mapData:new a.Array(zn,"mapCount")}),Un=new a.Struct({majorVersion:a.uint16,minorVersion:a.uint16,itemVariationStore:new a.Pointer(a.uint32,Jt),advanceWidthMapping:new a.Pointer(a.uint32,Nn),LSBMapping:new a.Pointer(a.uint32,Nn),RSBMapping:new a.Pointer(a.uint32,Nn)}),Wn=new a.Struct({format:a.uint32,length:a.uint32,offset:a.uint32}),Gn=new a.Struct({reserved:new a.Reserved(a.uint16,2),cbSignature:a.uint32,signature:new a.Buffer("cbSignature")}),Vn=new a.Struct({ulVersion:a.uint32,usNumSigs:a.uint16,usFlag:a.uint16,signatures:new a.Array(Wn,"usNumSigs"),signatureBlocks:new a.Array(Gn,"usNumSigs")}),jn=new a.Struct({rangeMaxPPEM:a.uint16,rangeGaspBehavior:new a.Bitfield(a.uint16,["grayscale","gridfit","symmetricSmoothing","symmetricGridfit"])}),Hn=new a.Struct({version:a.uint16,numRanges:a.uint16,gaspRanges:new a.Array(jn,"numRanges")}),qn=new a.Struct({pixelSize:a.uint8,maximumWidth:a.uint8,widths:new a.Array(a.uint8,function(t){return t.parent.parent.maxp.numGlyphs})}),Zn=new a.Struct({version:a.uint16,numRecords:a.int16,sizeDeviceRecord:a.int32,records:new a.Array(qn,"numRecords")}),Yn=new a.Struct({left:a.uint16,right:a.uint16,value:a.int16}),Xn=new a.Struct({firstGlyph:a.uint16,nGlyphs:a.uint16,offsets:new a.Array(a.uint16,"nGlyphs"),max:function(t){return t.offsets.length&&Math.max.apply(Math,t.offsets)}}),Kn=new a.Struct({off:function(t){return t._startOffset-t.parent.parent._startOffset},len:function(t){return((t.parent.leftTable.max-t.off)/t.parent.rowWidth+1)*(t.parent.rowWidth/2)},values:new a.LazyArray(a.int16,"len")}),Jn=new a.VersionedStruct("format",{0:{nPairs:a.uint16,searchRange:a.uint16,entrySelector:a.uint16,rangeShift:a.uint16,pairs:new a.Array(Yn,"nPairs")},2:{rowWidth:a.uint16,leftTable:new a.Pointer(a.uint16,Xn,{type:"parent"}),rightTable:new a.Pointer(a.uint16,Xn,{type:"parent"}),array:new a.Pointer(a.uint16,Kn,{type:"parent"})},3:{glyphCount:a.uint16,kernValueCount:a.uint8,leftClassCount:a.uint8,rightClassCount:a.uint8,flags:a.uint8,kernValue:new a.Array(a.int16,"kernValueCount"),leftClass:new a.Array(a.uint8,"glyphCount"),rightClass:new a.Array(a.uint8,"glyphCount"),kernIndex:new a.Array(a.uint8,function(t){return t.leftClassCount*t.rightClassCount})}}),Qn=new a.VersionedStruct("version",{0:{subVersion:a.uint16,length:a.uint16,format:a.uint8,coverage:new a.Bitfield(a.uint8,["horizontal","minimum","crossStream","override"]),subtable:Jn,padding:new a.Reserved(a.uint8,function(t){return t.length-t._currentOffset})},1:{length:a.uint32,coverage:new a.Bitfield(a.uint8,[null,null,null,null,null,"variation","crossStream","vertical"]),format:a.uint8,tupleIndex:a.uint16,subtable:Jn,padding:new a.Reserved(a.uint8,function(t){return t.length-t._currentOffset})}}),$n=new a.VersionedStruct(a.uint16,{0:{nTables:a.uint16,tables:new a.Array(Qn,"nTables")},1:{reserved:new a.Reserved(a.uint16),nTables:a.uint32,tables:new a.Array(Qn,"nTables")}}),tr=new a.Struct({version:a.uint16,numGlyphs:a.uint16,yPels:new a.Array(a.uint8,"numGlyphs")}),er=new a.Struct({version:a.uint16,fontNumber:a.uint32,pitch:a.uint16,xHeight:a.uint16,style:a.uint16,typeFamily:a.uint16,capHeight:a.uint16,symbolSet:a.uint16,typeface:new a.String(16),characterComplement:new a.String(8),fileName:new a.String(6),strokeWeight:new a.String(1),widthType:new a.String(1),serifStyle:a.uint8,reserved:new a.Reserved(a.uint8)}),nr=new a.Struct({bCharSet:a.uint8,xRatio:a.uint8,yStartRatio:a.uint8,yEndRatio:a.uint8}),rr=new a.Struct({yPelHeight:a.uint16,yMax:a.int16,yMin:a.int16}),ir=new a.Struct({recs:a.uint16,startsz:a.uint8,endsz:a.uint8,entries:new a.Array(rr,"recs")}),ar=new a.Struct({version:a.uint16,numRecs:a.uint16,numRatios:a.uint16,ratioRanges:new a.Array(nr,"numRatios"),offsets:new a.Array(a.uint16,"numRatios"),groups:new a.Array(ir,"numRecs")}),or=new a.Struct({version:a.uint16,ascent:a.int16,descent:a.int16,lineGap:a.int16,advanceHeightMax:a.int16,minTopSideBearing:a.int16,minBottomSideBearing:a.int16,yMaxExtent:a.int16,caretSlopeRise:a.int16,caretSlopeRun:a.int16,caretOffset:a.int16,reserved:new a.Reserved(a.int16,4),metricDataFormat:a.int16,numberOfMetrics:a.uint16}),sr=new a.Struct({advance:a.uint16,bearing:a.int16}),lr=new a.Struct({metrics:new a.LazyArray(sr,function(t){return t.parent.vhea.numberOfMetrics}),bearings:new a.LazyArray(a.int16,function(t){return t.parent.maxp.numGlyphs-t.parent.vhea.numberOfMetrics})}),ur=new a.Fixed(16,"BE",14),cr=new a.Struct({fromCoord:ur,toCoord:ur}),hr=new a.Struct({pairCount:a.uint16,correspondence:new a.Array(cr,"pairCount")}),fr=new a.Struct({version:a.fixed32,axisCount:a.uint32,segment:new a.Array(hr,"axisCount")}),dr=function(){function t(e,n,r){f(this,t),this.type=e,this.stream=n,this.parent=r,this.base=this.stream.pos,this._items=[]}return t.prototype.getItem=function(t){if(null==this._items[t]){var e=this.stream.pos;this.stream.pos=this.base+this.type.size(null,this.parent)*t,this._items[t]=this.type.decode(this.stream,this.parent),this.stream.pos=e}return this._items[t]},t.prototype.inspect=function(){return"[UnboundedArray "+this.type.constructor.name+"]"},t}(),pr=function(t){function e(n){return f(this,e),g(this,t.call(this,n,0))}return y(e,t),e.prototype.decode=function(t,e){return new dr(this.type,t,e)},e}(a.Array),gr=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.uint16;t=new(function(){function t(e){f(this,t),this.type=e}return t.prototype.decode=function(t,e){return e=e.parent.parent,this.type.decode(t,e)},t.prototype.size=function(t,e){return e=e.parent.parent,this.type.size(t,e)},t.prototype.encode=function(t,e,n){return n=n.parent.parent,this.type.encode(t,e,n)},t}())(t);var e=new a.Struct({unitSize:a.uint16,nUnits:a.uint16,searchRange:a.uint16,entrySelector:a.uint16,rangeShift:a.uint16}),n=new a.Struct({lastGlyph:a.uint16,firstGlyph:a.uint16,value:t}),r=new a.Struct({lastGlyph:a.uint16,firstGlyph:a.uint16,values:new a.Pointer(a.uint16,new a.Array(t,function(t){return t.lastGlyph-t.firstGlyph+1}),{type:"parent"})}),i=new a.Struct({glyph:a.uint16,value:t});return new a.VersionedStruct(a.uint16,{0:{values:new pr(t)},2:{binarySearchHeader:e,segments:new a.Array(n,function(t){return t.binarySearchHeader.nUnits})},4:{binarySearchHeader:e,segments:new a.Array(r,function(t){return t.binarySearchHeader.nUnits})},6:{binarySearchHeader:e,segments:new a.Array(i,function(t){return t.binarySearchHeader.nUnits})},8:{firstGlyph:a.uint16,count:a.uint16,values:new a.Array(t,"count")}})};function yr(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.uint16,n=w({newState:a.uint16,flags:a.uint16},t),r=new a.Struct(n),i=new pr(new a.Array(a.uint16,function(t){return t.nClasses}));return new a.Struct({nClasses:a.uint32,classTable:new a.Pointer(a.uint32,new gr(e)),stateArray:new a.Pointer(a.uint32,i),entryTable:new a.Pointer(a.uint32,new pr(r))})}var vr=new a.VersionedStruct("format",{0:{deltas:new a.Array(a.int16,32)},1:{deltas:new a.Array(a.int16,32),mappingData:new gr(a.uint16)},2:{standardGlyph:a.uint16,controlPoints:new a.Array(a.uint16,32)},3:{standardGlyph:a.uint16,controlPoints:new a.Array(a.uint16,32),mappingData:new gr(a.uint16)}}),br=new a.Struct({version:a.fixed32,format:a.uint16,defaultBaseline:a.uint16,subtable:vr}),mr=new a.Struct({setting:a.uint16,nameIndex:a.int16,name:function(t){return t.parent.parent.parent.name.records.fontFeatures[t.nameIndex]}}),wr=new a.Struct({feature:a.uint16,nSettings:a.uint16,settingTable:new a.Pointer(a.uint32,new a.Array(mr,"nSettings"),{type:"parent"}),featureFlags:new a.Bitfield(a.uint8,[null,null,null,null,null,null,"hasDefault","exclusive"]),defaultSetting:a.uint8,nameIndex:a.int16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameIndex]}}),xr=new a.Struct({version:a.fixed32,featureNameCount:a.uint16,reserved1:new a.Reserved(a.uint16),reserved2:new a.Reserved(a.uint32),featureNames:new a.Array(wr,"featureNameCount")}),Sr=new a.Struct({axisTag:new a.String(4),minValue:a.fixed32,defaultValue:a.fixed32,maxValue:a.fixed32,flags:a.uint16,nameID:a.uint16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameID]}}),_r=new a.Struct({nameID:a.uint16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameID]},flags:a.uint16,coord:new a.Array(a.fixed32,function(t){return t.parent.axisCount}),postscriptNameID:new a.Optional(a.uint16,function(t){return t.parent.instanceSize-t._currentOffset>0})}),kr=new a.Struct({version:a.fixed32,offsetToData:a.uint16,countSizePairs:a.uint16,axisCount:a.uint16,axisSize:a.uint16,instanceCount:a.uint16,instanceSize:a.uint16,axis:new a.Array(Sr,"axisCount"),instance:new a.Array(_r,"instanceCount")}),Cr=new a.Fixed(16,"BE",14),Ar=function(){function t(){f(this,t)}return t.decode=function(t,e){return e.flags?t.readUInt32BE():2*t.readUInt16BE()},t}(),Pr=new a.Struct({version:a.uint16,reserved:new a.Reserved(a.uint16),axisCount:a.uint16,globalCoordCount:a.uint16,globalCoords:new a.Pointer(a.uint32,new a.Array(new a.Array(Cr,"axisCount"),"globalCoordCount")),glyphCount:a.uint16,flags:a.uint16,offsetToData:a.uint32,offsets:new a.Array(new a.Pointer(Ar,"void",{relativeTo:"offsetToData",allowNull:!1}),function(t){return t.glyphCount+1})}),Er=new a.Struct({length:a.uint16,coverage:a.uint16,subFeatureFlags:a.uint32,stateTable:new function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.uint16,new a.Struct({version:function(){return 8},firstGlyph:a.uint16,values:new a.Array(a.uint8,a.uint16)})),n=w({newStateOffset:a.uint16,newState:function(t){return(t.newStateOffset-(t.parent.stateArray.base-t.parent._startOffset))/t.parent.nClasses},flags:a.uint16},t),r=new a.Struct(n),i=new pr(new a.Array(a.uint8,function(t){return t.nClasses}));return new a.Struct({nClasses:a.uint16,classTable:new a.Pointer(a.uint16,e),stateArray:new a.Pointer(a.uint16,i),entryTable:new a.Pointer(a.uint16,new pr(r))})}}),Ir=new a.Struct({justClass:a.uint32,beforeGrowLimit:a.fixed32,beforeShrinkLimit:a.fixed32,afterGrowLimit:a.fixed32,afterShrinkLimit:a.fixed32,growFlags:a.uint16,shrinkFlags:a.uint16}),Tr=new a.Array(Ir,a.uint32),Or=new a.VersionedStruct("actionType",{0:{lowerLimit:a.fixed32,upperLimit:a.fixed32,order:a.uint16,glyphs:new a.Array(a.uint16,a.uint16)},1:{addGlyph:a.uint16},2:{substThreshold:a.fixed32,addGlyph:a.uint16,substGlyph:a.uint16},3:{},4:{variationAxis:a.uint32,minimumLimit:a.fixed32,noStretchValue:a.fixed32,maximumLimit:a.fixed32},5:{flags:a.uint16,glyph:a.uint16}}),Lr=new a.Struct({actionClass:a.uint16,actionType:a.uint16,actionLength:a.uint32,actionData:Or,padding:new a.Reserved(a.uint8,function(t){return t.actionLength-t._currentOffset})}),Br=new a.Array(Lr,a.uint32),Mr=new a.Struct({lookupTable:new gr(new a.Pointer(a.uint16,Br))}),Rr=new a.Struct({classTable:new a.Pointer(a.uint16,Er,{type:"parent"}),wdcOffset:a.uint16,postCompensationTable:new a.Pointer(a.uint16,Mr,{type:"parent"}),widthDeltaClusters:new gr(new a.Pointer(a.uint16,Tr,{type:"parent",relativeTo:"wdcOffset"}))}),Fr=new a.Struct({version:a.uint32,format:a.uint16,horizontal:new a.Pointer(a.uint16,Rr),vertical:new a.Pointer(a.uint16,Rr)}),Dr={action:a.uint16},zr={markIndex:a.uint16,currentIndex:a.uint16},Nr={currentInsertIndex:a.uint16,markedInsertIndex:a.uint16},Ur=new a.Struct({items:new pr(new a.Pointer(a.uint32,new gr))}),Wr=new a.VersionedStruct("type",{0:{stateTable:new yr},1:{stateTable:new yr(zr),substitutionTable:new a.Pointer(a.uint32,Ur)},2:{stateTable:new yr(Dr),ligatureActions:new a.Pointer(a.uint32,new pr(a.uint32)),components:new a.Pointer(a.uint32,new pr(a.uint16)),ligatureList:new a.Pointer(a.uint32,new pr(a.uint16))},4:{lookupTable:new gr},5:{stateTable:new yr(Nr),insertionActions:new a.Pointer(a.uint32,new pr(a.uint16))}}),Gr=new a.Struct({length:a.uint32,coverage:a.uint24,type:a.uint8,subFeatureFlags:a.uint32,table:Wr,padding:new a.Reserved(a.uint8,function(t){return t.length-t._currentOffset})}),Vr=new a.Struct({featureType:a.uint16,featureSetting:a.uint16,enableFlags:a.uint32,disableFlags:a.uint32}),jr=new a.Struct({defaultFlags:a.uint32,chainLength:a.uint32,nFeatureEntries:a.uint32,nSubtables:a.uint32,features:new a.Array(Vr,"nFeatureEntries"),subtables:new a.Array(Gr,"nSubtables")}),Hr=new a.Struct({version:a.uint16,unused:new a.Reserved(a.uint16),nChains:a.uint32,chains:new a.Array(jr,"nChains")}),qr=new a.Struct({left:a.int16,top:a.int16,right:a.int16,bottom:a.int16}),Zr=new a.Struct({version:a.fixed32,format:a.uint16,lookupTable:new gr(qr)}),Yr={};Yr.cmap=V,Yr.head=j,Yr.hhea=H,Yr.hmtx=Z,Yr.maxp=Y,Yr.name=NameTable,Yr["OS/2"]=nt,Yr.post=it,Yr.fpgm=ot,Yr.loca=st,Yr.prep=lt,Yr["cvt "]=at,Yr.glyf=ut,Yr["CFF "]=xe,Yr.CFF2=xe,Yr.VORG=_e,Yr.EBLC=Me,Yr.CBLC=Yr.EBLC,Yr.sbix=Fe,Yr.COLR=Ne,Yr.CPAL=We,Yr.BASE=Qe,Yr.GDEF=on,Yr.GPOS=_n,Yr.GSUB=In,Yr.JSTF=Fn,Yr.HVAR=Un,Yr.DSIG=Vn,Yr.gasp=Hn,Yr.hdmx=Zn,Yr.kern=$n,Yr.LTSH=tr,Yr.PCLT=er,Yr.VDMX=ar,Yr.vhea=or,Yr.vmtx=lr,Yr.avar=fr,Yr.bsln=br,Yr.feat=xr,Yr.fvar=kr,Yr.gvar=Pr,Yr.just=Fr,Yr.morx=Hr,Yr.opbd=Zr;var Xr,Kr=new a.Struct({tag:new a.String(4),checkSum:a.uint32,offset:new a.Pointer(a.uint32,"void",{type:"global"}),length:a.uint32}),Jr=new a.Struct({tag:new a.String(4),numTables:a.uint16,searchRange:a.uint16,entrySelector:a.uint16,rangeShift:a.uint16,tables:new a.Array(Kr,"numTables")});function Qr(t,e){for(var n=0,r=t.length-1;n<=r;){var i=n+r>>1,a=e(t[i]);if(a<0)r=i-1;else{if(!(a>0))return i;n=i+1}}return-1}function $r(t,e){for(var n=[];t<e;)n.push(t++);return n}function ti(t,e,n,r,i){var a={};return Object.keys(r).forEach(function(t){a[t]=r[t]}),a.enumerable=!!a.enumerable,a.configurable=!!a.configurable,("value"in a||a.initializer)&&(a.writable=!0),a=n.slice().reverse().reduce(function(n,r){return r(t,e,n)||n},a),i&&void 0!==a.initializer&&(a.value=a.initializer?a.initializer.call(i):void 0,a.initializer=void 0),void 0===a.initializer&&(Object.defineProperty(t,e,a),a=null),a}Jr.process=function(){var t={},e=this.tables,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;t[a.tag]=a}this.tables=t},Jr.preEncode=function(t){var e=[];for(var n in this.tables){var r=this.tables[n];r&&e.push({tag:n,checkSum:0,offset:new a.VoidPointer(Yr[n],r),length:Yr[n].size(r)})}this.tag="true",this.numTables=e.length,this.tables=e,this.searchRange=16*Math.floor(Math.log(this.numTables)/Math.LN2),this.entrySelector=Math.floor(this.searchRange/Math.LN2),this.rangeShift=16*this.numTables-this.searchRange};try{var ei=n(52)}catch(t){}var ni=(ti((Xr=function(){function t(e){if(f(this,t),this.encoding=null,this.cmap=this.findSubtable(e,[[3,10],[0,6],[0,4],[3,1],[0,3],[0,2],[0,1],[0,0]]),!this.cmap&&ei){var n=e.tables,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=X(o.platformID,o.encodingID,o.table.language-1);ei.encodingExists(l)&&(this.cmap=o.table,this.encoding=l)}}if(!this.cmap)throw new Error("Could not find a supported cmap table");this.uvs=this.findSubtable(e,[[0,5]]),this.uvs&&14!==this.uvs.version&&(this.uvs=null)}return t.prototype.findSubtable=function(t,e){var n=e,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=o[0],u=o[1],c=t.tables,h=Array.isArray(c),f=0;for(c=h?c:s(c);;){var d;if(h){if(f>=c.length)break;d=c[f++]}else{if((f=c.next()).done)break;d=f.value}var p=d;if(p.platformID===l&&p.encodingID===u)return p.table}}return null},t.prototype.lookup=function(t,e){if(this.encoding){var n=ei.encode(x(t),this.encoding);t=0;for(var r=0;r<n.length;r++)t=t<<8|n[r]}else if(e){var i=this.getVariationSelector(t,e);if(i)return i}var a=this.cmap;switch(a.version){case 0:return a.codeMap.get(t)||0;case 4:for(var o=0,s=a.segCount-1;o<=s;){var l=o+s>>1;if(t<a.startCode.get(l))s=l-1;else{if(!(t>a.endCode.get(l))){var u=a.idRangeOffset.get(l),c=void 0;if(0===u)c=t+a.idDelta.get(l);else{var h=u/2+(t-a.startCode.get(l))-(a.segCount-l);0!==(c=a.glyphIndexArray.get(h)||0)&&(c+=a.idDelta.get(l))}return 65535&c}o=l+1}}return 0;case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return a.glyphIndices.get(t-a.firstCode)||0;case 12:case 13:for(var f=0,d=a.nGroups-1;f<=d;){var p=f+d>>1,g=a.groups.get(p);if(t<g.startCharCode)d=p-1;else{if(!(t>g.endCharCode))return 12===a.version?g.glyphID+(t-g.startCharCode):g.glyphID;f=p+1}}return 0;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format "+a.version)}},t.prototype.getVariationSelector=function(t,e){if(!this.uvs)return 0;var n=this.uvs.varSelectors.toArray(),r=Qr(n,function(t){return e-t.varSelector}),i=n[r];return-1!==r&&i.defaultUVS&&(r=Qr(i.defaultUVS,function(e){return t<e.startUnicodeValue?-1:t>e.startUnicodeValue+e.additionalCount?1:0})),-1!==r&&i.nonDefaultUVS&&-1!==(r=Qr(i.nonDefaultUVS,function(e){return t-e.unicodeValue}))?i.nonDefaultUVS[r].glyphID:0},t.prototype.getCharacterSet=function(){var t=this.cmap;switch(t.version){case 0:return $r(0,t.codeMap.length);case 4:for(var e=[],n=t.endCode.toArray(),r=0;r<n.length;r++){var i=n[r]+1,a=t.startCode.get(r);e.push.apply(e,$r(a,i))}return e;case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return $r(t.firstCode,t.firstCode+t.glyphIndices.length);case 12:case 13:var o=[],l=t.groups.toArray(),u=Array.isArray(l),c=0;for(l=u?l:s(l);;){var h;if(u){if(c>=l.length)break;h=l[c++]}else{if((c=l.next()).done)break;h=c.value}var f=h;o.push.apply(o,$r(f.startCharCode,f.endCharCode+1))}return o;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format "+t.version)}},t.prototype.codePointsForGlyph=function(t){var e=this.cmap;switch(e.version){case 0:for(var n=[],r=0;r<256;r++)e.codeMap.get(r)===t&&n.push(r);return n;case 4:for(var i=[],a=0;a<e.segCount;a++)for(var o=e.endCode.get(a),l=e.startCode.get(a),u=e.idRangeOffset.get(a),c=e.idDelta.get(a),h=l;h<=o;h++){var f=0;if(0===u)f=h+c;else{var d=u/2+(h-l)-(e.segCount-a);0!==(f=e.glyphIndexArray.get(d)||0)&&(f+=c)}f===t&&i.push(h)}return i;case 12:var p=[],g=e.groups.toArray(),y=Array.isArray(g),v=0;for(g=y?g:s(g);;){var b;if(y){if(v>=g.length)break;b=g[v++]}else{if((v=g.next()).done)break;b=v.value}var m=b;t>=m.glyphID&&t<=m.glyphID+(m.endCharCode-m.startCharCode)&&p.push(m.startCharCode+(t-m.glyphID))}return p;case 13:var w=[],x=e.groups.toArray(),S=Array.isArray(x),_=0;for(x=S?x:s(x);;){var k;if(S){if(_>=x.length)break;k=x[_++]}else{if((_=x.next()).done)break;k=_.value}var C=k;t===C.glyphID&&w.push.apply(w,$r(C.startCharCode,C.endCharCode+1))}return w;default:throw new Error("Unknown cmap format "+e.version)}},t}()).prototype,"getCharacterSet",[B],o(Xr.prototype,"getCharacterSet"),Xr.prototype),ti(Xr.prototype,"codePointsForGlyph",[B],o(Xr.prototype,"codePointsForGlyph"),Xr.prototype),Xr),ri=function(){function t(e){f(this,t),this.kern=e.kern}return t.prototype.process=function(t,e){for(var n=0;n<t.length-1;n++){var r=t[n].id,i=t[n+1].id;e[n].xAdvance+=this.getKerning(r,i)}},t.prototype.getKerning=function(t,e){var n=0,r=this.kern.tables,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;if(!l.coverage.crossStream){switch(l.version){case 0:if(!l.coverage.horizontal)continue;break;case 1:if(l.coverage.vertical||l.coverage.variation)continue;break;default:throw new Error("Unsupported kerning table version "+l.version)}var u=0,c=l.subtable;switch(l.format){case 0:var h=Qr(c.pairs,function(n){return t-n.left||e-n.right});h>=0&&(u=c.pairs[h].value);break;case 2:var f=0,d=0;f=t>=c.leftTable.firstGlyph&&t<c.leftTable.firstGlyph+c.leftTable.nGlyphs?c.leftTable.offsets[t-c.leftTable.firstGlyph]:c.array.off,e>=c.rightTable.firstGlyph&&e<c.rightTable.firstGlyph+c.rightTable.nGlyphs&&(d=c.rightTable.offsets[e-c.rightTable.firstGlyph]);var p=(f+d-c.array.off)/2;u=c.array.values.get(p);break;case 3:if(t>=c.glyphCount||e>=c.glyphCount)return 0;u=c.kernValue[c.kernIndex[c.leftClass[t]*c.rightClassCount+c.rightClass[e]]];break;default:throw new Error("Unsupported kerning sub-table format "+l.format)}l.coverage.override?n=u:n+=u}}return n},t}(),ii=function(){function t(e){f(this,t),this.font=e}return t.prototype.positionGlyphs=function(t,e){for(var n=0,r=0,i=0;i<t.length;i++){t[i].isMark?r=i:(n!==r&&this.positionCluster(t,e,n,r),n=r=i)}return n!==r&&this.positionCluster(t,e,n,r),e},t.prototype.positionCluster=function(t,e,n,r){var i=t[n],a=i.cbox.copy();i.codePoints.length>1&&(a.minX+=(i.codePoints.length-1)*a.width/i.codePoints.length);for(var o=-e[n].xAdvance,s=0,l=this.font.unitsPerEm/16,u=n+1;u<=r;u++){var c=t[u],h=c.cbox,f=e[u],d=this.getCombiningClass(c.codePoints[0]);if("Not_Reordered"!==d){switch(f.xOffset=f.yOffset=0,d){case"Double_Above":case"Double_Below":f.xOffset+=a.minX-h.width/2-h.minX;break;case"Attached_Below_Left":case"Below_Left":case"Above_Left":f.xOffset+=a.minX-h.minX;break;case"Attached_Above_Right":case"Below_Right":case"Above_Right":f.xOffset+=a.maxX-h.width-h.minX;break;default:f.xOffset+=a.minX+(a.width-h.width)/2-h.minX}switch(d){case"Double_Below":case"Below_Left":case"Below":case"Below_Right":case"Attached_Below_Left":case"Attached_Below":"Attached_Below_Left"!==d&&"Attached_Below"!==d||(a.minY+=l),f.yOffset=-a.minY-h.maxY,a.minY+=h.height;break;case"Double_Above":case"Above_Left":case"Above":case"Above_Right":case"Attached_Above":case"Attached_Above_Right":"Attached_Above"!==d&&"Attached_Above_Right"!==d||(a.maxY+=l),f.yOffset=a.maxY-h.minY,a.maxY+=h.height}f.xAdvance=f.yAdvance=0,f.xOffset+=o,f.yOffset+=s}else o-=f.xAdvance,s-=f.yAdvance}},t.prototype.getCombiningClass=function(t){var e=k.getCombiningClass(t);if(3584==(-256&t))if("Not_Reordered"===e)switch(t){case 3633:case 3636:case 3637:case 3638:case 3639:case 3655:case 3660:case 3645:case 3662:return"Above_Right";case 3761:case 3764:case 3765:case 3766:case 3767:case 3771:case 3788:case 3789:return"Above";case 3772:return"Below"}else if(3642===t)return"Below_Right";switch(e){case"CCC10":case"CCC11":case"CCC12":case"CCC13":case"CCC14":case"CCC15":case"CCC16":case"CCC17":case"CCC18":case"CCC20":case"CCC22":return"Below";case"CCC23":return"Attached_Above";case"CCC24":return"Above_Right";case"CCC25":case"CCC19":return"Above_Left";case"CCC26":return"Above";case"CCC21":break;case"CCC27":case"CCC28":case"CCC30":case"CCC31":case"CCC33":case"CCC34":case"CCC35":case"CCC36":return"Above";case"CCC29":case"CCC32":return"Below";case"CCC103":return"Below_Right";case"CCC107":return"Above_Right";case"CCC118":return"Below";case"CCC122":return"Above";case"CCC129":case"CCC132":return"Below";case"CCC130":return"Above"}return e},t}(),ai=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1/0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1/0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1/0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1/0;f(this,t),this.minX=e,this.minY=n,this.maxX=r,this.maxY=i}return t.prototype.addPoint=function(t,e){Math.abs(t)!==1/0&&(t<this.minX&&(this.minX=t),t>this.maxX&&(this.maxX=t)),Math.abs(e)!==1/0&&(e<this.minY&&(this.minY=e),e>this.maxY&&(this.maxY=e))},t.prototype.copy=function(){return new t(this.minX,this.minY,this.maxX,this.maxY)},d(t,[{key:"width",get:function(){return this.maxX-this.minX}},{key:"height",get:function(){return this.maxY-this.minY}}]),t}(),oi={Caucasian_Albanian:"aghb",Arabic:"arab",Imperial_Aramaic:"armi",Armenian:"armn",Avestan:"avst",Balinese:"bali",Bamum:"bamu",Bassa_Vah:"bass",Batak:"batk",Bengali:["bng2","beng"],Bopomofo:"bopo",Brahmi:"brah",Braille:"brai",Buginese:"bugi",Buhid:"buhd",Chakma:"cakm",Canadian_Aboriginal:"cans",Carian:"cari",Cham:"cham",Cherokee:"cher",Coptic:"copt",Cypriot:"cprt",Cyrillic:"cyrl",Devanagari:["dev2","deva"],Deseret:"dsrt",Duployan:"dupl",Egyptian_Hieroglyphs:"egyp",Elbasan:"elba",Ethiopic:"ethi",Georgian:"geor",Glagolitic:"glag",Gothic:"goth",Grantha:"gran",Greek:"grek",Gujarati:["gjr2","gujr"],Gurmukhi:["gur2","guru"],Hangul:"hang",Han:"hani",Hanunoo:"hano",Hebrew:"hebr",Hiragana:"hira",Pahawh_Hmong:"hmng",Katakana_Or_Hiragana:"hrkt",Old_Italic:"ital",Javanese:"java",Kayah_Li:"kali",Katakana:"kana",Kharoshthi:"khar",Khmer:"khmr",Khojki:"khoj",Kannada:["knd2","knda"],Kaithi:"kthi",Tai_Tham:"lana",Lao:"lao ",Latin:"latn",Lepcha:"lepc",Limbu:"limb",Linear_A:"lina",Linear_B:"linb",Lisu:"lisu",Lycian:"lyci",Lydian:"lydi",Mahajani:"mahj",Mandaic:"mand",Manichaean:"mani",Mende_Kikakui:"mend",Meroitic_Cursive:"merc",Meroitic_Hieroglyphs:"mero",Malayalam:["mlm2","mlym"],Modi:"modi",Mongolian:"mong",Mro:"mroo",Meetei_Mayek:"mtei",Myanmar:["mym2","mymr"],Old_North_Arabian:"narb",Nabataean:"nbat",Nko:"nko ",Ogham:"ogam",Ol_Chiki:"olck",Old_Turkic:"orkh",Oriya:["ory2","orya"],Osmanya:"osma",Palmyrene:"palm",Pau_Cin_Hau:"pauc",Old_Permic:"perm",Phags_Pa:"phag",Inscriptional_Pahlavi:"phli",Psalter_Pahlavi:"phlp",Phoenician:"phnx",Miao:"plrd",Inscriptional_Parthian:"prti",Rejang:"rjng",Runic:"runr",Samaritan:"samr",Old_South_Arabian:"sarb",Saurashtra:"saur",Shavian:"shaw",Sharada:"shrd",Siddham:"sidd",Khudawadi:"sind",Sinhala:"sinh",Sora_Sompeng:"sora",Sundanese:"sund",Syloti_Nagri:"sylo",Syriac:"syrc",Tagbanwa:"tagb",Takri:"takr",Tai_Le:"tale",New_Tai_Lue:"talu",Tamil:["tml2","taml"],Tai_Viet:"tavt",Telugu:["tel2","telu"],Tifinagh:"tfng",Tagalog:"tglg",Thaana:"thaa",Thai:"thai",Tibetan:"tibt",Tirhuta:"tirh",Ugaritic:"ugar",Vai:"vai ",Warang_Citi:"wara",Old_Persian:"xpeo",Cuneiform:"xsux",Yi:"yi  ",Inherited:"zinh",Common:"zyyy",Unknown:"zzzz"},si={};for(var li in oi){var ui=oi[li];if(Array.isArray(ui)){var ci=ui,hi=Array.isArray(ci),fi=0;for(ci=hi?ci:s(ci);;){var di;if(hi){if(fi>=ci.length)break;di=ci[fi++]}else{if((fi=ci.next()).done)break;di=fi.value}si[di]=li}}else si[ui]=li}var pi={arab:!0,hebr:!0,syrc:!0,thaa:!0,cprt:!0,khar:!0,phnx:!0,"nko ":!0,lydi:!0,avst:!0,armi:!0,phli:!0,prti:!0,sarb:!0,orkh:!0,samr:!0,mand:!0,merc:!0,mero:!0,mani:!0,mend:!0,nbat:!0,narb:!0,palm:!0,phlp:!0};function gi(t){return pi[t]?"rtl":"ltr"}for(var yi=function(){function t(e,n,r,i,a){if(f(this,t),this.glyphs=e,this.positions=null,this.script=r,this.language=i||null,this.direction=a||gi(r),this.features={},Array.isArray(n)){var o=n,l=Array.isArray(o),u=0;for(o=l?o:s(o);;){var h;if(l){if(u>=o.length)break;h=o[u++]}else{if((u=o.next()).done)break;h=u.value}var d=h;this.features[d]=!0}}else"object"===(void 0===n?"undefined":c(n))&&(this.features=n)}return d(t,[{key:"advanceWidth",get:function(){var t=0,e=this.positions,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}t+=i.xAdvance}return t}},{key:"advanceHeight",get:function(){var t=0,e=this.positions,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}t+=i.yAdvance}return t}},{key:"bbox",get:function(){for(var t=new ai,e=0,n=0,r=0;r<this.glyphs.length;r++){var i=this.glyphs[r],a=this.positions[r],o=i.bbox;t.addPoint(o.minX+e+a.xOffset,o.minY+n+a.yOffset),t.addPoint(o.maxX+e+a.xOffset,o.maxY+n+a.yOffset),e+=a.xAdvance,n+=a.yAdvance}return t}}]),t}(),vi={allTypographicFeatures:{code:0,exclusive:!1,allTypeFeatures:0},ligatures:{code:1,exclusive:!1,requiredLigatures:0,commonLigatures:2,rareLigatures:4,rebusPictures:8,diphthongLigatures:10,squaredLigatures:12,abbrevSquaredLigatures:14,symbolLigatures:16,contextualLigatures:18,historicalLigatures:20},cursiveConnection:{code:2,exclusive:!0,unconnected:0,partiallyConnected:1,cursive:2},letterCase:{code:3,exclusive:!0},verticalSubstitution:{code:4,exclusive:!1,substituteVerticalForms:0},linguisticRearrangement:{code:5,exclusive:!1,linguisticRearrangement:0},numberSpacing:{code:6,exclusive:!0,monospacedNumbers:0,proportionalNumbers:1,thirdWidthNumbers:2,quarterWidthNumbers:3},smartSwash:{code:8,exclusive:!1,wordInitialSwashes:0,wordFinalSwashes:2,nonFinalSwashes:8},diacritics:{code:9,exclusive:!0,showDiacritics:0,hideDiacritics:1,decomposeDiacritics:2},verticalPosition:{code:10,exclusive:!0,normalPosition:0,superiors:1,inferiors:2,ordinals:3,scientificInferiors:4},fractions:{code:11,exclusive:!0,noFractions:0,verticalFractions:1,diagonalFractions:2},overlappingCharacters:{code:13,exclusive:!1,preventOverlap:0},typographicExtras:{code:14,exclusive:!1,slashedZero:4},mathematicalExtras:{code:15,exclusive:!1,mathematicalGreek:10},ornamentSets:{code:16,exclusive:!0,noOrnaments:0,dingbats:1,piCharacters:2,fleurons:3,decorativeBorders:4,internationalSymbols:5,mathSymbols:6},characterAlternatives:{code:17,exclusive:!0,noAlternates:0},designComplexity:{code:18,exclusive:!0,designLevel1:0,designLevel2:1,designLevel3:2,designLevel4:3,designLevel5:4},styleOptions:{code:19,exclusive:!0,noStyleOptions:0,displayText:1,engravedText:2,illuminatedCaps:3,titlingCaps:4,tallCaps:5},characterShape:{code:20,exclusive:!0,traditionalCharacters:0,simplifiedCharacters:1,JIS1978Characters:2,JIS1983Characters:3,JIS1990Characters:4,traditionalAltOne:5,traditionalAltTwo:6,traditionalAltThree:7,traditionalAltFour:8,traditionalAltFive:9,expertCharacters:10,JIS2004Characters:11,hojoCharacters:12,NLCCharacters:13,traditionalNamesCharacters:14},numberCase:{code:21,exclusive:!0,lowerCaseNumbers:0,upperCaseNumbers:1},textSpacing:{code:22,exclusive:!0,proportionalText:0,monospacedText:1,halfWidthText:2,thirdWidthText:3,quarterWidthText:4,altProportionalText:5,altHalfWidthText:6},transliteration:{code:23,exclusive:!0,noTransliteration:0},annotation:{code:24,exclusive:!0,noAnnotation:0,boxAnnotation:1,roundedBoxAnnotation:2,circleAnnotation:3,invertedCircleAnnotation:4,parenthesisAnnotation:5,periodAnnotation:6,romanNumeralAnnotation:7,diamondAnnotation:8,invertedBoxAnnotation:9,invertedRoundedBoxAnnotation:10},kanaSpacing:{code:25,exclusive:!0,fullWidthKana:0,proportionalKana:1},ideographicSpacing:{code:26,exclusive:!0,fullWidthIdeographs:0,proportionalIdeographs:1,halfWidthIdeographs:2},unicodeDecomposition:{code:27,exclusive:!1,canonicalComposition:0,compatibilityComposition:2,transcodingComposition:4},rubyKana:{code:28,exclusive:!1,rubyKana:2},CJKSymbolAlternatives:{code:29,exclusive:!0,noCJKSymbolAlternatives:0,CJKSymbolAltOne:1,CJKSymbolAltTwo:2,CJKSymbolAltThree:3,CJKSymbolAltFour:4,CJKSymbolAltFive:5},ideographicAlternatives:{code:30,exclusive:!0,noIdeographicAlternatives:0,ideographicAltOne:1,ideographicAltTwo:2,ideographicAltThree:3,ideographicAltFour:4,ideographicAltFive:5},CJKVerticalRomanPlacement:{code:31,exclusive:!0,CJKVerticalRomanCentered:0,CJKVerticalRomanHBaseline:1},italicCJKRoman:{code:32,exclusive:!1,CJKItalicRoman:2},caseSensitiveLayout:{code:33,exclusive:!1,caseSensitiveLayout:0,caseSensitiveSpacing:2},alternateKana:{code:34,exclusive:!1,alternateHorizKana:0,alternateVertKana:2},stylisticAlternatives:{code:35,exclusive:!1,noStylisticAlternates:0,stylisticAltOne:2,stylisticAltTwo:4,stylisticAltThree:6,stylisticAltFour:8,stylisticAltFive:10,stylisticAltSix:12,stylisticAltSeven:14,stylisticAltEight:16,stylisticAltNine:18,stylisticAltTen:20,stylisticAltEleven:22,stylisticAltTwelve:24,stylisticAltThirteen:26,stylisticAltFourteen:28,stylisticAltFifteen:30,stylisticAltSixteen:32,stylisticAltSeventeen:34,stylisticAltEighteen:36,stylisticAltNineteen:38,stylisticAltTwenty:40},contextualAlternates:{code:36,exclusive:!1,contextualAlternates:0,swashAlternates:2,contextualSwashAlternates:4},lowerCase:{code:37,exclusive:!0,defaultLowerCase:0,lowerCaseSmallCaps:1,lowerCasePetiteCaps:2},upperCase:{code:38,exclusive:!0,defaultUpperCase:0,upperCaseSmallCaps:1,upperCasePetiteCaps:2},languageTag:{code:39,exclusive:!0},CJKRomanSpacing:{code:103,exclusive:!0,halfWidthCJKRoman:0,proportionalCJKRoman:1,defaultCJKRoman:2,fullWidthCJKRoman:3}},bi=function(t,e){return[vi[t].code,vi[t][e]]},mi={rlig:bi("ligatures","requiredLigatures"),clig:bi("ligatures","contextualLigatures"),dlig:bi("ligatures","rareLigatures"),hlig:bi("ligatures","historicalLigatures"),liga:bi("ligatures","commonLigatures"),hist:bi("ligatures","historicalLigatures"),smcp:bi("lowerCase","lowerCaseSmallCaps"),pcap:bi("lowerCase","lowerCasePetiteCaps"),frac:bi("fractions","diagonalFractions"),dnom:bi("fractions","diagonalFractions"),numr:bi("fractions","diagonalFractions"),afrc:bi("fractions","verticalFractions"),case:bi("caseSensitiveLayout","caseSensitiveLayout"),ccmp:bi("unicodeDecomposition","canonicalComposition"),cpct:bi("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),valt:bi("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),swsh:bi("contextualAlternates","swashAlternates"),cswh:bi("contextualAlternates","contextualSwashAlternates"),curs:bi("cursiveConnection","cursive"),c2pc:bi("upperCase","upperCasePetiteCaps"),c2sc:bi("upperCase","upperCaseSmallCaps"),init:bi("smartSwash","wordInitialSwashes"),fin2:bi("smartSwash","wordFinalSwashes"),medi:bi("smartSwash","nonFinalSwashes"),med2:bi("smartSwash","nonFinalSwashes"),fin3:bi("smartSwash","wordFinalSwashes"),fina:bi("smartSwash","wordFinalSwashes"),pkna:bi("kanaSpacing","proportionalKana"),half:bi("textSpacing","halfWidthText"),halt:bi("textSpacing","altHalfWidthText"),hkna:bi("alternateKana","alternateHorizKana"),vkna:bi("alternateKana","alternateVertKana"),ital:bi("italicCJKRoman","CJKItalicRoman"),lnum:bi("numberCase","upperCaseNumbers"),onum:bi("numberCase","lowerCaseNumbers"),mgrk:bi("mathematicalExtras","mathematicalGreek"),calt:bi("contextualAlternates","contextualAlternates"),vrt2:bi("verticalSubstitution","substituteVerticalForms"),vert:bi("verticalSubstitution","substituteVerticalForms"),tnum:bi("numberSpacing","monospacedNumbers"),pnum:bi("numberSpacing","proportionalNumbers"),sups:bi("verticalPosition","superiors"),subs:bi("verticalPosition","inferiors"),ordn:bi("verticalPosition","ordinals"),pwid:bi("textSpacing","proportionalText"),hwid:bi("textSpacing","halfWidthText"),qwid:bi("textSpacing","quarterWidthText"),twid:bi("textSpacing","thirdWidthText"),fwid:bi("textSpacing","proportionalText"),palt:bi("textSpacing","altProportionalText"),trad:bi("characterShape","traditionalCharacters"),smpl:bi("characterShape","simplifiedCharacters"),jp78:bi("characterShape","JIS1978Characters"),jp83:bi("characterShape","JIS1983Characters"),jp90:bi("characterShape","JIS1990Characters"),jp04:bi("characterShape","JIS2004Characters"),expt:bi("characterShape","expertCharacters"),hojo:bi("characterShape","hojoCharacters"),nlck:bi("characterShape","NLCCharacters"),tnam:bi("characterShape","traditionalNamesCharacters"),ruby:bi("rubyKana","rubyKana"),titl:bi("styleOptions","titlingCaps"),zero:bi("typographicExtras","slashedZero"),ss01:bi("stylisticAlternatives","stylisticAltOne"),ss02:bi("stylisticAlternatives","stylisticAltTwo"),ss03:bi("stylisticAlternatives","stylisticAltThree"),ss04:bi("stylisticAlternatives","stylisticAltFour"),ss05:bi("stylisticAlternatives","stylisticAltFive"),ss06:bi("stylisticAlternatives","stylisticAltSix"),ss07:bi("stylisticAlternatives","stylisticAltSeven"),ss08:bi("stylisticAlternatives","stylisticAltEight"),ss09:bi("stylisticAlternatives","stylisticAltNine"),ss10:bi("stylisticAlternatives","stylisticAltTen"),ss11:bi("stylisticAlternatives","stylisticAltEleven"),ss12:bi("stylisticAlternatives","stylisticAltTwelve"),ss13:bi("stylisticAlternatives","stylisticAltThirteen"),ss14:bi("stylisticAlternatives","stylisticAltFourteen"),ss15:bi("stylisticAlternatives","stylisticAltFifteen"),ss16:bi("stylisticAlternatives","stylisticAltSixteen"),ss17:bi("stylisticAlternatives","stylisticAltSeventeen"),ss18:bi("stylisticAlternatives","stylisticAltEighteen"),ss19:bi("stylisticAlternatives","stylisticAltNineteen"),ss20:bi("stylisticAlternatives","stylisticAltTwenty")},wi=1;wi<=99;wi++)mi["cv"+("00"+wi).slice(-2)]=[vi.characterAlternatives.code,wi];var xi,Si={};for(var _i in mi){var ki=mi[_i];null==Si[ki[0]]&&(Si[ki[0]]={}),Si[ki[0]][ki[1]]=_i}function Ci(t){var e=t[0],n=t[1];if(isNaN(e))var r=vi[e]&&vi[e].code;else r=e;if(isNaN(n))var i=vi[e]&&vi[e][n];else i=n;return[r,i]}var Ai,Pi,Ei,Ii,Ti,Oi,Li,Bi=(xi=function(){function t(e){f(this,t),this.table=e}return t.prototype.lookup=function(t){switch(this.table.version){case 0:return this.table.values.getItem(t);case 2:case 4:for(var e=0,n=this.table.binarySearchHeader.nUnits-1;e<=n;){var r=e+n>>1;if(65535===(o=this.table.segments[r]).firstGlyph)return null;if(t<o.firstGlyph)n=r-1;else{if(!(t>o.lastGlyph))return 2===this.table.version?o.value:o.values[t-o.firstGlyph];e=r+1}}return null;case 6:for(var i=0,a=this.table.binarySearchHeader.nUnits-1;i<=a;){var o;r=i+a>>1;if(65535===(o=this.table.segments[r]).glyph)return null;if(t<o.glyph)a=r-1;else{if(!(t>o.glyph))return o.value;i=r+1}}return null;case 8:return this.table.values[t-this.table.firstGlyph];default:throw new Error("Unknown lookup table format: "+this.table.version)}},t.prototype.glyphsForValue=function(t){var e=[];switch(this.table.version){case 2:case 4:var n=this.table.segments,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;if(2===this.table.version&&o.value===t)e.push.apply(e,$r(o.firstGlyph,o.lastGlyph+1));else for(var l=0;l<o.values.length;l++)o.values[l]===t&&e.push(o.firstGlyph+l)}break;case 6:var u=this.table.segments,c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d=f;d.value===t&&e.push(d.glyph)}break;case 8:for(var p=0;p<this.table.values.length;p++)this.table.values[p]===t&&e.push(this.table.firstGlyph+p);break;default:throw new Error("Unknown lookup table format: "+this.table.version)}return e},t}(),Ai=xi.prototype,Pi="glyphsForValue",Ei=[B],Ii=o(xi.prototype,"glyphsForValue"),Ti=xi.prototype,Oi={},Object.keys(Ii).forEach(function(t){Oi[t]=Ii[t]}),Oi.enumerable=!!Oi.enumerable,Oi.configurable=!!Oi.configurable,("value"in Oi||Oi.initializer)&&(Oi.writable=!0),Oi=Ei.slice().reverse().reduce(function(t,e){return e(Ai,Pi,t)||t},Oi),Ti&&void 0!==Oi.initializer&&(Oi.value=Oi.initializer?Oi.initializer.call(Ti):void 0,Oi.initializer=void 0),void 0===Oi.initializer&&(Object.defineProperty(Ai,Pi,Oi),Oi=null),xi),Mi=function(){function t(e){f(this,t),this.stateTable=e,this.lookupTable=new Bi(e.classTable)}return t.prototype.process=function(t,e,n){for(var r=0,i=e?t.length-1:0,a=e?-1:1;1===a&&i<=t.length||-1===a&&i>=-1;){var o=null,s=1,l=!0;i===t.length||-1===i?s=0:65535===(o=t[i]).id?s=2:null==(s=this.lookupTable.lookup(o.id))&&(s=1);var u=this.stateTable.stateArray.getItem(r)[s],c=this.stateTable.entryTable.getItem(u);0!==s&&2!==s&&(n(o,c,i),l=!(16384&c.flags)),r=c.newState,l&&(i+=a)}return t},t.prototype.traverse=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new _;if(!n.has(e)){n.add(e);for(var r=this.stateTable,i=r.nClasses,a=r.stateArray,o=r.entryTable,l=a.getItem(e),u=4;u<i;u++){var c=l[u],h=o.getItem(c),f=this.lookupTable.glyphsForValue(u),d=Array.isArray(f),p=0;for(f=d?f:s(f);;){var g;if(d){if(p>=f.length)break;g=f[p++]}else{if((p=f.next()).done)break;g=p.value}var y=g;t.enter&&t.enter(y,h),0!==h.newState&&this.traverse(t,h.newState,n),t.exit&&t.exit(y,h)}}}},t}();var Ri,Fi,Di,zi,Ni,Ui,Wi=(Li=function(){function t(e){f(this,t),this.processIndicRearragement=this.processIndicRearragement.bind(this),this.processContextualSubstitution=this.processContextualSubstitution.bind(this),this.processLigature=this.processLigature.bind(this),this.processNoncontextualSubstitutions=this.processNoncontextualSubstitutions.bind(this),this.processGlyphInsertion=this.processGlyphInsertion.bind(this),this.font=e,this.morx=e.morx,this.inputCache=null}return t.prototype.process=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.morx.chains,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=o.defaultFlags,u=o.features,c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d,p=f;(d=e[p.featureType])&&d[p.featureSetting]&&(l&=p.disableFlags,l|=p.enableFlags)}var g=o.subtables,y=Array.isArray(g),v=0;for(g=y?g:s(g);;){var b;if(y){if(v>=g.length)break;b=g[v++]}else{if((v=g.next()).done)break;b=v.value}var m=b;m.subFeatureFlags&l&&this.processSubtable(m,t)}}for(var w=t.length-1;w>=0;)65535===t[w].id&&t.splice(w,1),w--;return t},t.prototype.processSubtable=function(t,e){if(this.subtable=t,this.glyphs=e,4!==this.subtable.type){this.ligatureStack=[],this.markedGlyph=null,this.firstGlyph=null,this.lastGlyph=null,this.markedIndex=null;var n=this.getStateMachine(t),r=this.getProcessor(),i=!!(4194304&this.subtable.coverage);return n.process(this.glyphs,i,r)}this.processNoncontextualSubstitutions(this.subtable,this.glyphs)},t.prototype.getStateMachine=function(t){return new Mi(t.table.stateTable)},t.prototype.getProcessor=function(){switch(this.subtable.type){case 0:return this.processIndicRearragement;case 1:return this.processContextualSubstitution;case 2:return this.processLigature;case 4:return this.processNoncontextualSubstitutions;case 5:return this.processGlyphInsertion;default:throw new Error("Invalid morx subtable type: "+this.subtable.type)}},t.prototype.processIndicRearragement=function(t,e,n){32768&e.flags&&(this.firstGlyph=n),8192&e.flags&&(this.lastGlyph=n),function(t,e,n,r){switch(e){case 0:return t;case 1:return Gi(t,[n,1],[r,0]);case 2:return Gi(t,[n,0],[r,1]);case 3:return Gi(t,[n,1],[r,1]);case 4:return Gi(t,[n,2],[r,0]);case 5:return Gi(t,[n,2],[r,0],!0,!1);case 6:return Gi(t,[n,0],[r,2]);case 7:return Gi(t,[n,0],[r,2],!1,!0);case 8:return Gi(t,[n,1],[r,2]);case 9:return Gi(t,[n,1],[r,2],!1,!0);case 10:return Gi(t,[n,2],[r,1]);case 11:return Gi(t,[n,2],[r,1],!0,!1);case 12:return Gi(t,[n,2],[r,2]);case 13:return Gi(t,[n,2],[r,2],!0,!1);case 14:return Gi(t,[n,2],[r,2],!1,!0);case 15:return Gi(t,[n,2],[r,2],!0,!0);default:throw new Error("Unknown verb: "+e)}}(this.glyphs,15&e.flags,this.firstGlyph,this.lastGlyph)},t.prototype.processContextualSubstitution=function(t,e,n){var r=this.subtable.table.substitutionTable.items;if(65535!==e.markIndex){var i=r.getItem(e.markIndex),a=new Bi(i);t=this.glyphs[this.markedGlyph],(o=a.lookup(t.id))&&(this.glyphs[this.markedGlyph]=this.font.getGlyph(o,t.codePoints))}if(65535!==e.currentIndex){var o,s=r.getItem(e.currentIndex),l=new Bi(s);t=this.glyphs[n],(o=l.lookup(t.id))&&(this.glyphs[n]=this.font.getGlyph(o,t.codePoints))}32768&e.flags&&(this.markedGlyph=n)},t.prototype.processLigature=function(t,e,n){if(32768&e.flags&&this.ligatureStack.push(n),8192&e.flags){for(var r,i=this.subtable.table.ligatureActions,a=this.subtable.table.components,o=this.subtable.table.ligatureList,s=e.action,l=!1,u=0,c=[],h=[];!l;){var f,d=this.ligatureStack.pop();(f=c).unshift.apply(f,this.glyphs[d].codePoints);var p=i.getItem(s++);l=!!(2147483648&p);var g=!!(1073741824&p),y=(1073741823&p)<<2>>2;if(y+=this.glyphs[d].id,u+=a.getItem(y),l||g){var v=o.getItem(u);this.glyphs[d]=this.font.getGlyph(v,c),h.push(d),u=0,c=[]}else this.glyphs[d]=this.font.getGlyph(65535)}(r=this.ligatureStack).push.apply(r,h)}},t.prototype.processNoncontextualSubstitutions=function(t,e,n){var r=new Bi(t.table.lookupTable);for(n=0;n<e.length;n++){var i=e[n];if(65535!==i.id){var a=r.lookup(i.id);a&&(e[n]=this.font.getGlyph(a,i.codePoints))}}},t.prototype._insertGlyphs=function(t,e,n,r){for(var i,a=[];n--;){var o=this.subtable.table.insertionActions.getItem(e++);a.push(this.font.getGlyph(o))}r||t++,(i=this.glyphs).splice.apply(i,[t,0].concat(a))},t.prototype.processGlyphInsertion=function(t,e,n){if(32768&e.flags&&(this.markedIndex=n),65535!==e.markedInsertIndex){var r=(31&e.flags)>>>5,i=!!(1024&e.flags);this._insertGlyphs(this.markedIndex,e.markedInsertIndex,r,i)}if(65535!==e.currentInsertIndex){var a=(992&e.flags)>>>5,o=!!(2048&e.flags);this._insertGlyphs(n,e.currentInsertIndex,a,o)}},t.prototype.getSupportedFeatures=function(){var t=[],e=this.morx.chains,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i.features,o=Array.isArray(a),l=0;for(a=o?a:s(a);;){var u;if(o){if(l>=a.length)break;u=a[l++]}else{if((l=a.next()).done)break;u=l.value}var c=u;t.push([c.featureType,c.featureSetting])}}return t},t.prototype.generateInputs=function(t){return this.inputCache||this.generateInputCache(),this.inputCache[t]||[]},t.prototype.generateInputCache=function(){this.inputCache={};var t=this.morx.chains,e=Array.isArray(t),n=0;for(t=e?t:s(t);;){var r;if(e){if(n>=t.length)break;r=t[n++]}else{if((n=t.next()).done)break;r=n.value}var i=r,a=i.defaultFlags,o=i.subtables,l=Array.isArray(o),u=0;for(o=l?o:s(o);;){var c;if(l){if(u>=o.length)break;c=o[u++]}else{if((u=o.next()).done)break;c=u.value}var h=c;h.subFeatureFlags&a&&this.generateInputsForSubtable(h)}}},t.prototype.generateInputsForSubtable=function(t){var e=this;if(2===t.type){if(!!(4194304&t.coverage))throw new Error("Reverse subtable, not supported.");this.subtable=t,this.ligatureStack=[];var n=this.getStateMachine(t),r=this.getProcessor(),i=[],a=[];this.glyphs=[],n.traverse({enter:function(t,n){var o=e.glyphs;a.push({glyphs:o.slice(),ligatureStack:e.ligatureStack.slice()});var s=e.font.getGlyph(t);i.push(s),o.push(i[i.length-1]),r(o[o.length-1],n,o.length-1);for(var l=0,u=0,c=0;c<o.length&&l<=1;c++)65535!==o[c].id&&(l++,u=o[c].id);if(1===l){var h=i.map(function(t){return t.id}),f=e.inputCache[u];f?f.push(h):e.inputCache[u]=[h]}},exit:function(){var t=a.pop();e.glyphs=t.glyphs,e.ligatureStack=t.ligatureStack,i.pop()}})}},t}(),Ri=Li.prototype,Fi="getStateMachine",Di=[B],zi=o(Li.prototype,"getStateMachine"),Ni=Li.prototype,Ui={},Object.keys(zi).forEach(function(t){Ui[t]=zi[t]}),Ui.enumerable=!!Ui.enumerable,Ui.configurable=!!Ui.configurable,("value"in Ui||Ui.initializer)&&(Ui.writable=!0),Ui=Di.slice().reverse().reduce(function(t,e){return e(Ri,Fi,t)||t},Ui),Ni&&void 0!==Ui.initializer&&(Ui.value=Ui.initializer?Ui.initializer.call(Ni):void 0,Ui.initializer=void 0),void 0===Ui.initializer&&(Object.defineProperty(Ri,Fi,Ui),Ui=null),Li);function Gi(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a=t.splice(n[0]-(n[1]-1),n[1]);i&&a.reverse();var o=t.splice.apply(t,[e[0],e[1]].concat(a));return r&&o.reverse(),t.splice.apply(t,[n[0]-(e[1]-1),0].concat(o)),t}var Vi,ji,Hi=function(){function t(e){f(this,t),this.font=e,this.morxProcessor=new Wi(e),this.fallbackPosition=!1}return t.prototype.substitute=function(t){"rtl"===t.direction&&t.glyphs.reverse(),this.morxProcessor.process(t.glyphs,function(t){var e={};for(var n in t){var r;(r=mi[n])&&(null==e[r[0]]&&(e[r[0]]={}),e[r[0]][r[1]]=t[n])}return e}(t.features))},t.prototype.getAvailableFeatures=function(t,e){return function(t){var e={};if(Array.isArray(t))for(var n=0;n<t.length;n++){var r,i=Ci(t[n]);(r=Si[i[0]]&&Si[i[0]][i[1]])&&(e[r]=!0)}else if("object"===(void 0===t?"undefined":c(t)))for(var a in t){var o=t[a];for(var s in o){var l=void 0,h=Ci([a,s]);o[s]&&(l=Si[h[0]]&&Si[h[0]][h[1]])&&(e[l]=!0)}}return u(e)}(this.morxProcessor.getSupportedFeatures())},t.prototype.stringsForGlyph=function(t){var e=this.morxProcessor.generateInputs(t),n=new _,r=e,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;this._addStrings(l,0,n,"")}return n},t.prototype._addStrings=function(t,e,n,r){var i=this.font._cmapProcessor.codePointsForGlyph(t[e]),a=Array.isArray(i),o=0;for(i=a?i:s(i);;){var l;if(a){if(o>=i.length)break;l=i[o++]}else{if((o=i.next()).done)break;l=o.value}var u=r+x(l);e<t.length-1?this._addStrings(t,e+1,n,u):n.add(u)}},t}(),qi=function(){function t(e,n,r){f(this,t),this.font=e,this.script=n,this.direction=r,this.stages=[],this.globalFeatures={},this.allFeatures={}}return t.prototype._addFeatures=function(t,e){var n=this.stages.length-1,r=this.stages[n],i=t,a=Array.isArray(i),o=0;for(i=a?i:s(i);;){var l;if(a){if(o>=i.length)break;l=i[o++]}else{if((o=i.next()).done)break;l=o.value}var u=l;null==this.allFeatures[u]&&(r.push(u),this.allFeatures[u]=n,e&&(this.globalFeatures[u]=!0))}},t.prototype.add=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(0===this.stages.length&&this.stages.push([]),"string"==typeof t&&(t=[t]),Array.isArray(t))this._addFeatures(t,e);else{if("object"!==(void 0===t?"undefined":c(t)))throw new Error("Unsupported argument to ShapingPlan#add");this._addFeatures(t.global||[],!0),this._addFeatures(t.local||[],!1)}},t.prototype.addStage=function(t,e){"function"==typeof t?this.stages.push(t,[]):(this.stages.push([]),this.add(t,e))},t.prototype.setFeatureOverrides=function(t){if(Array.isArray(t))this.add(t);else if("object"===(void 0===t?"undefined":c(t)))for(var e in t)if(t[e])this.add(e);else if(null!=this.allFeatures[e]){var n=this.stages[this.allFeatures[e]];n.splice(n.indexOf(e),1),delete this.allFeatures[e],delete this.globalFeatures[e]}},t.prototype.assignGlobalFeatures=function(t){var e=t,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;for(var o in this.globalFeatures)a.features[o]=!0}},t.prototype.process=function(t,e,n){var r=this.stages,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;"function"==typeof l?n||l(this.font,e,this):l.length>0&&t.applyFeatures(l,e,n)}},t}(),Zi=["rvrn"],Yi=["ccmp","locl","rlig","mark","mkmk"],Xi=["frac","numr","dnom"],Ki=["calt","clig","liga","rclt","curs","kern"],Ji={ltr:["ltra","ltrm"],rtl:["rtla","rtlm"]},Qi=(ji=Vi=function(){function t(){f(this,t)}return t.plan=function(t,e,n){this.planPreprocessing(t),this.planFeatures(t),this.planPostprocessing(t,n),t.assignGlobalFeatures(e),this.assignFeatures(t,e)},t.planPreprocessing=function(t){t.add({global:[].concat(Zi,Ji[t.direction]),local:Xi})},t.planFeatures=function(t){},t.planPostprocessing=function(t,e){t.add([].concat(Yi,Ki)),t.setFeatureOverrides(e)},t.assignFeatures=function(t,e){for(var n=0;n<e.length;n++){var r=e[n];if(8260===r.codePoints[0]){for(var i=n,a=n+1;i>0&&k.isDigit(e[i-1].codePoints[0]);)e[i-1].features.numr=!0,e[i-1].features.frac=!0,i--;for(;a<e.length&&k.isDigit(e[a].codePoints[0]);)e[a].features.dnom=!0,e[a].features.frac=!0,a++;r.features.frac=!0,n=a-1}}},t}(),Vi.zeroMarkWidths="AFTER_GPOS",ji),$i=new C(e("AAEQAAAAAAAAADGgAZUBav7t2CtPA0EUBeDZB00pin9AJZIEgyUEj0QhweDAgQOJxCBRBElQSBwSicLgkOAwnNKZ5GaY2c7uzj4o5yZfZrrbefbuIx2nSq3CGmzAWH/+K+UO7MIe7MMhHMMpnMMFXMIVXIt2t3CnP088iPqjqNN8e4Ij7Rle4LUH82rLm6i/92A+RERERERERERNmfz/89GDeRARERERzbN8ceps2Iwt9H0C9/AJ6yOlDkbTczcot5VSm8Pm1vcFWfb7+BKOLTuOd2UlTX4wGP85Eg953lWPFbnuN7PkjtLmalOWbNenkHOSa7T3KmR9MVTZ2zZkVj1kHa68MueVKH0R4zqQ44WEXLM8VjcWHP0PtKLfPzQnMtGn3W4QYf6qxFxceVI394r2xnV+1rih0fV1Vzf3fO1n3evL5J78ruvZ5ptX2Rwy92Tfb1wlEqut3U+sZ3HXOeJ7/zDrbyuP6+Zz0fqa6Nv3vhY7Yu1xWnGevmsvsUpTT/RYIe8waUH/rvHMWKFzLfN8L+rTfp645mfX7ftlnfDtYxN59w0=","base64")),ta=["isol","fina","fin2","fin3","medi","med2","init"],ea={Non_Joining:0,Left_Joining:1,Right_Joining:2,Dual_Joining:3,Join_Causing:3,ALAPH:4,"DALATH RISH":5,Transparent:6},na="isol",ra="fina",ia="medi",aa="med2",oa="init",sa=null,la=[[[sa,sa,0],[sa,na,2],[sa,na,1],[sa,na,2],[sa,na,1],[sa,na,6]],[[sa,sa,0],[sa,na,2],[sa,na,1],[sa,na,2],[sa,"fin2",5],[sa,na,6]],[[sa,sa,0],[sa,na,2],[oa,ra,1],[oa,ra,3],[oa,ra,4],[oa,ra,6]],[[sa,sa,0],[sa,na,2],[ia,ra,1],[ia,ra,3],[ia,ra,4],[ia,ra,6]],[[sa,sa,0],[sa,na,2],[aa,na,1],[aa,na,2],[aa,"fin2",5],[aa,na,6]],[[sa,sa,0],[sa,na,2],[na,na,1],[na,na,2],[na,"fin2",5],[na,na,6]],[[sa,sa,0],[sa,na,2],[sa,na,1],[sa,na,2],[sa,"fin3",5],[sa,na,6]]],ua=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.planFeatures=function(t){t.add(["ccmp","locl"]);for(var e=0;e<ta.length;e++){var n=ta[e];t.addStage(n,!1)}t.addStage("mset")},e.assignFeatures=function(e,n){t.assignFeatures.call(this,e,n);for(var r=-1,i=0,a=[],o=0;o<n.length;o++){var s,l,u=ca((d=n[o]).codePoints[0]);if(u!==ea.Transparent){var c=la[i][u];l=c[0],s=c[1],i=c[2],l!==sa&&-1!==r&&(a[r]=l),a[o]=s,r=o}else a[o]=sa}for(var h=0;h<n.length;h++){var f,d=n[h];(f=a[h])&&(d.features[f]=!0)}},e}(Qi);function ca(t){var e=$i.get(t);if(e)return e-1;var n=k.getCategory(t);return"Mn"===n||"Me"===n||"Cf"===n?ea.Transparent:ea.Non_Joining}var ha,fa,da=function(){function t(e,n){f(this,t),this.glyphs=e,this.reset(n)}return t.prototype.reset=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.options=t,this.flags=t.flags||{},this.markAttachmentType=t.markAttachmentType||0,this.index=e},t.prototype.shouldIgnore=function(t){return this.flags.ignoreMarks&&t.isMark||this.flags.ignoreBaseGlyphs&&t.isBase||this.flags.ignoreLigatures&&t.isLigature||this.markAttachmentType&&t.isMark&&t.markAttachmentType!==this.markAttachmentType},t.prototype.move=function(t){for(this.index+=t;0<=this.index&&this.index<this.glyphs.length&&this.shouldIgnore(this.glyphs[this.index]);)this.index+=t;return 0>this.index||this.index>=this.glyphs.length?null:this.glyphs[this.index]},t.prototype.next=function(){return this.move(1)},t.prototype.prev=function(){return this.move(-1)},t.prototype.peek=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=this.index,n=this.increment(t);return this.index=e,n},t.prototype.peekIndex=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=this.index;this.increment(t);var n=this.index;return this.index=e,n},t.prototype.increment=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=t<0?-1:1;for(t=Math.abs(t);t--;)this.move(e);return this.glyphs[this.index]},d(t,[{key:"cur",get:function(){return this.glyphs[this.index]||null}}]),t}(),pa=["DFLT","dflt","latn"],ga=function(){function t(e,n){f(this,t),this.font=e,this.table=n,this.script=null,this.scriptTag=null,this.language=null,this.languageTag=null,this.features={},this.lookups={},this.variationsIndex=e._variationProcessor?this.findVariationsIndex(e._variationProcessor.normalizedCoords):-1,this.selectScript(),this.glyphs=[],this.positions=[],this.ligatureID=1,this.currentFeature=null}return t.prototype.findScript=function(t){if(null==this.table.scriptList)return null;Array.isArray(t)||(t=[t]);var e=t,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i,o=this.table.scriptList,l=Array.isArray(o),u=0;for(o=l?o:s(o);;){var c;if(l){if(u>=o.length)break;c=o[u++]}else{if((u=o.next()).done)break;c=u.value}var h=c;if(h.tag===a)return h}}return null},t.prototype.selectScript=function(t,e,n){var r=!1,i=void 0;if(!this.script||t!==this.scriptTag){if((i=this.findScript(t))||(i=this.findScript(pa)),!i)return this.scriptTag;this.scriptTag=i.tag,this.script=i.script,this.language=null,this.languageTag=null,r=!0}if(n&&n===this.direction||(this.direction=n||gi(t)),e&&e.length<4&&(e+=" ".repeat(4-e.length)),!e||e!==this.languageTag){this.language=null;var a=this.script.langSysRecords,o=Array.isArray(a),l=0;for(a=o?a:s(a);;){var u;if(o){if(l>=a.length)break;u=a[l++]}else{if((l=a.next()).done)break;u=l.value}var c=u;if(c.tag===e){this.language=c.langSys,this.languageTag=c.tag;break}}this.language||(this.language=this.script.defaultLangSys,this.languageTag=null),r=!0}if(r&&(this.features={},this.language)){var h=this.language.featureIndexes,f=Array.isArray(h),d=0;for(h=f?h:s(h);;){var p;if(f){if(d>=h.length)break;p=h[d++]}else{if((d=h.next()).done)break;p=d.value}var g=p,y=this.table.featureList[g],v=this.substituteFeatureForVariations(g);this.features[y.tag]=v||y.feature}}return this.scriptTag},t.prototype.lookupsForFeatures=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments[1],n=[],r=t,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o,u=this.features[l];if(u){var c=u.lookupListIndexes,h=Array.isArray(c),f=0;for(c=h?c:s(c);;){var d;if(h){if(f>=c.length)break;d=c[f++]}else{if((f=c.next()).done)break;d=f.value}var p=d;e&&-1!==e.indexOf(p)||n.push({feature:l,index:p,lookup:this.table.lookupList.get(p)})}}}return n.sort(function(t,e){return t.index-e.index}),n},t.prototype.substituteFeatureForVariations=function(t){if(-1===this.variationsIndex)return null;var e=this.table.featureVariations.featureVariationRecords[this.variationsIndex].featureTableSubstitution.substitutions,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;if(a.featureIndex===t)return a.alternateFeatureTable}return null},t.prototype.findVariationsIndex=function(t){var e=this.table.featureVariations;if(!e)return-1;for(var n=e.featureVariationRecords,r=0;r<n.length;r++){var i=n[r].conditionSet.conditionTable;if(this.variationConditionsMatch(i,t))return r}return-1},t.prototype.variationConditionsMatch=function(t,e){return t.every(function(t){var n=t.axisIndex<e.length?e[t.axisIndex]:0;return t.filterRangeMinValue<=n&&n<=t.filterRangeMaxValue})},t.prototype.applyFeatures=function(t,e,n){var r=this.lookupsForFeatures(t);this.applyLookups(r,e,n)},t.prototype.applyLookups=function(t,e,n){this.glyphs=e,this.positions=n,this.glyphIterator=new da(e);var r=t,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o,u=l.feature,c=l.lookup;for(this.currentFeature=u,this.glyphIterator.reset(c.flags);this.glyphIterator.index<e.length;)if(u in this.glyphIterator.cur.features){var h=c.subTables,f=Array.isArray(h),d=0;for(h=f?h:s(h);;){var p;if(f){if(d>=h.length)break;p=h[d++]}else{if((d=h.next()).done)break;p=d.value}var g=p;if(this.applyLookup(c.lookupType,g))break}this.glyphIterator.next()}else this.glyphIterator.next()}},t.prototype.applyLookup=function(t,e){throw new Error("applyLookup must be implemented by subclasses")},t.prototype.applyLookupList=function(t){var e=this.glyphIterator.options,n=this.glyphIterator.index,r=t,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;this.glyphIterator.reset(e,n),this.glyphIterator.increment(l.sequenceIndex);var u=this.table.lookupList.get(l.lookupListIndex);this.glyphIterator.reset(u.flags,this.glyphIterator.index);var c=u.subTables,h=Array.isArray(c),f=0;for(c=h?c:s(c);;){var d;if(h){if(f>=c.length)break;d=c[f++]}else{if((f=c.next()).done)break;d=f.value}var p=d;if(this.applyLookup(u.lookupType,p))break}}return this.glyphIterator.reset(e,n),!0},t.prototype.coverageIndex=function(t,e){switch(null==e&&(e=this.glyphIterator.cur.id),t.version){case 1:return t.glyphs.indexOf(e);case 2:var n=t.rangeRecords,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;if(o.start<=e&&e<=o.end)return o.startCoverageIndex+e-o.start}}return-1},t.prototype.match=function(t,e,n,r){for(var i=this.glyphIterator.index,a=this.glyphIterator.increment(t),o=0;o<e.length&&a&&n(e[o],a);)r&&r.push(this.glyphIterator.index),o++,a=this.glyphIterator.next();return this.glyphIterator.index=i,!(o<e.length)&&(r||!0)},t.prototype.sequenceMatches=function(t,e){return this.match(t,e,function(t,e){return t===e.id})},t.prototype.sequenceMatchIndices=function(t,e){var n=this;return this.match(t,e,function(t,e){return n.currentFeature in e.features&&t===e.id},[])},t.prototype.coverageSequenceMatches=function(t,e){var n=this;return this.match(t,e,function(t,e){return n.coverageIndex(t,e.id)>=0})},t.prototype.getClassID=function(t,e){switch(e.version){case 1:var n=t-e.startGlyph;if(n>=0&&n<e.classValueArray.length)return e.classValueArray[n];break;case 2:var r=e.classRangeRecord,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;if(l.start<=t&&t<=l.end)return l.class}}return 0},t.prototype.classSequenceMatches=function(t,e,n){var r=this;return this.match(t,e,function(t,e){return t===r.getClassID(e.id,n)})},t.prototype.applyContext=function(t){switch(t.version){case 1:var e=this.coverageIndex(t.coverage);if(-1===e)return!1;var n=t.ruleSets[e],r=n,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o;if(this.sequenceMatches(1,l.input))return this.applyLookupList(l.lookupRecords)}break;case 2:if(-1===this.coverageIndex(t.coverage))return!1;if(-1===(e=this.getClassID(this.glyphIterator.cur.id,t.classDef)))return!1;var u=n=t.classSet[e],c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d=f;if(this.classSequenceMatches(1,d.classes,t.classDef))return this.applyLookupList(d.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(0,t.coverages))return this.applyLookupList(t.lookupRecords)}return!1},t.prototype.applyChainingContext=function(t){switch(t.version){case 1:var e=this.coverageIndex(t.coverage);if(-1===e)return!1;var n=t.chainRuleSets[e],r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;if(this.sequenceMatches(-o.backtrack.length,o.backtrack)&&this.sequenceMatches(1,o.input)&&this.sequenceMatches(1+o.input.length,o.lookahead))return this.applyLookupList(o.lookupRecords)}break;case 2:if(-1===this.coverageIndex(t.coverage))return!1;e=this.getClassID(this.glyphIterator.cur.id,t.inputClassDef);var l=t.chainClassSet[e];if(!l)return!1;var u=l,c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d=f;if(this.classSequenceMatches(-d.backtrack.length,d.backtrack,t.backtrackClassDef)&&this.classSequenceMatches(1,d.input,t.inputClassDef)&&this.classSequenceMatches(1+d.input.length,d.lookahead,t.lookaheadClassDef))return this.applyLookupList(d.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(-t.backtrackGlyphCount,t.backtrackCoverage)&&this.coverageSequenceMatches(0,t.inputCoverage)&&this.coverageSequenceMatches(t.inputGlyphCount,t.lookaheadCoverage))return this.applyLookupList(t.lookupRecords)}return!1},t}(),ya=function(){function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i=arguments[3];if(f(this,t),this._font=e,this.codePoints=r,this.id=n,this.features={},Array.isArray(i))for(var a=0;a<i.length;a++){var o=i[a];this.features[o]=!0}else"object"===(void 0===i?"undefined":c(i))&&w(this.features,i);this.ligatureID=null,this.ligatureComponent=null,this.isLigated=!1,this.cursiveAttachment=null,this.markAttachment=null,this.shaperInfo=null,this.substituted=!1,this.isMultiplied=!1}return t.prototype.copy=function(){return new t(this._font,this.id,this.codePoints,this.features)},d(t,[{key:"id",get:function(){return this._id},set:function(t){this._id=t,this.substituted=!0;var e=this._font.GDEF;if(e&&e.glyphClassDef){var n=ga.prototype.getClassID(t,e.glyphClassDef);this.isBase=1===n,this.isLigature=2===n,this.isMark=3===n,this.markAttachmentType=e.markAttachClassDef?ga.prototype.getClassID(t,e.markAttachClassDef):0}else this.isMark=this.codePoints.every(k.isMark),this.isBase=!this.isMark,this.isLigature=this.codePoints.length>1,this.markAttachmentType=0}}]),t}(),va=(fa=ha=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.planFeatures=function(t){t.add(["ljmo","vjmo","tjmo"],!1)},e.assignFeatures=function(t,e){for(var n=0,r=0;r<e.length;){var i,a=e[r].codePoints[0],o=Ha(a),s=Ka[n][o];switch(i=s[0],n=s[1],i){case qa:t.font.hasGlyphForCodePoint(a)||(r=Qa(e,r,t.font));break;case Za:r=$a(e,r,t.font);break;case Ya:to(e,r,t.font);break;case Xa:r=eo(e,r,t.font)}r++}},e}(Qi),ha.zeroMarkWidths="NONE",fa),ba=44032,ma=55204-ba+1,wa=4352,xa=4449,Sa=4519,_a=21,ka=28,Ca=wa+19-1,Aa=xa+_a-1,Pa=Sa+ka-1,Ea=9676,Ia=function(t){return 4352<=t&&t<=4447||43360<=t&&t<=43388},Ta=function(t){return 4448<=t&&t<=4519||55216<=t&&t<=55238},Oa=function(t){return 4520<=t&&t<=4607||55243<=t&&t<=55291},La=function(t){return 12334<=t&&t<=12335},Ba=function(t){return ba<=t&&t<=55204},Ma=function(t){return t-ba<ma&&(t-ba)%ka==0},Ra=function(t){return wa<=t&&t<=Ca},Fa=function(t){return xa<=t&&t<=Aa},Da=function(t){return Sa+1&&1<=t&&t<=Pa},za=0,Na=1,Ua=2,Wa=3,Ga=4,Va=5,ja=6;function Ha(t){return Ia(t)?Na:Ta(t)?Ua:Oa(t)?Wa:Ma(t)?Ga:Ba(t)?Va:La(t)?ja:za}var qa=1,Za=2,Ya=4,Xa=5,Ka=[[[0,0],[0,1],[0,0],[0,0],[qa,2],[qa,3],[Xa,0]],[[0,0],[0,1],[Za,2],[0,0],[qa,2],[qa,3],[Xa,0]],[[0,0],[0,1],[0,0],[Za,3],[qa,2],[qa,3],[Ya,0]],[[0,0],[0,1],[0,0],[0,0],[qa,2],[qa,3],[Ya,0]]];function Ja(t,e,n){return new ya(t,t.glyphForCodePoint(e).id,[e],n)}function Qa(t,e,n){var r=t[e],i=r.codePoints[0]-ba,a=Sa+i%ka,o=wa+(i=i/ka|0)/_a|0,s=xa+i%_a;if(!n.hasGlyphForCodePoint(o)||!n.hasGlyphForCodePoint(s)||a!==Sa&&!n.hasGlyphForCodePoint(a))return e;var l=Ja(n,o,r.features);l.features.ljmo=!0;var u=Ja(n,s,r.features);u.features.vjmo=!0;var c=[l,u];if(a>Sa){var h=Ja(n,a,r.features);h.features.tjmo=!0,c.push(h)}return t.splice.apply(t,[e,1].concat(c)),e+c.length-1}function $a(t,e,n){var r=t[e],i=Ha(t[e].codePoints[0]),a=t[e-1].codePoints[0],o=Ha(a),s=void 0,l=void 0,u=void 0,c=void 0;if(o===Ga&&i===Wa)s=a,c=r;else{i===Ua?(l=t[e-1],u=r):(l=t[e-2],u=t[e-1],c=r);var h=l.codePoints[0],f=u.codePoints[0];Ra(h)&&Fa(f)&&(s=ba+((h-wa)*_a+(f-xa))*ka)}var d=c&&c.codePoints[0]||Sa;if(null!=s&&(d===Sa||Da(d))){var p=s+(d-Sa);if(n.hasGlyphForCodePoint(p)){var g=o===Ua?3:2;return t.splice(e-g+1,g,Ja(n,p,r.features)),e-g+1}}return l&&(l.features.ljmo=!0),u&&(u.features.vjmo=!0),c&&(c.features.tjmo=!0),o===Ga?(Qa(t,e-1,n),e+1):e}function to(t,e,n){var r=t[e],i=t[e].codePoints[0];if(0!==n.glyphForCodePoint(i).advanceWidth){var a=function(t){switch(Ha(t)){case Ga:case Va:return 1;case Ua:return 2;case Wa:return 3}}(t[e-1].codePoints[0]);return t.splice(e,1),t.splice(e-a,0,r)}}function eo(t,e,n){var r=t[e],i=t[e].codePoints[0];if(n.hasGlyphForCodePoint(Ea)){var a=Ja(n,Ea,r.features),o=0===n.glyphForCodePoint(i).advanceWidth?e:e+1;t.splice(o,0,a),e++}return e}var no,ro,io={stateTable:[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,14,15,16,17],[0,0,0,18,19,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,28,29,30,31,32,33,0,34,0,0,35,36,0,0,37,0],[0,0,0,38,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,39,0,0,0,40,41,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,12,43,0,0,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,0,43,0,0,0,0],[0,0,0,45,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,50,0,0,51,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0],[0,0,0,53,54,55,56,57,58,0,59,0,0,60,61,0,0,62,0],[0,0,0,4,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,63,64,0,0,40,41,0,9,0,10,0,0,0,42,0,63,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,0,2,16,0],[0,0,0,18,65,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,0,0],[0,0,0,69,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,73,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,75,0,0,0,76,77,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,25,79,0,0,0,0],[0,0,0,18,19,20,74,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,81,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,86,0,0,87,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0],[0,0,0,18,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,89,90,0,0,76,77,0,23,0,24,0,0,0,78,0,89,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,0,0],[0,0,0,94,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,96,0,0,0,97,98,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,35,100,0,0,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,102,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,107,0,0,108,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0],[0,0,0,28,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,110,111,0,0,97,98,0,33,0,34,0,0,0,99,0,110,0,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,0,0],[0,0,0,0,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,0,0,115,116,117,118,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,39,0,122,0,123,123,8,9,0,10,0,0,0,42,0,39,0,0],[0,124,64,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0],[0,39,0,0,0,121,125,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,126,126,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,47,47,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,128,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,129,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,50,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,134,0,0,0,0,0,0,0,0],[0,0,0,135,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,136,0,0,0,137,138,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,60,140,0,0,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,0,140,0,0,0,0],[0,0,0,142,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,147,0,0,148,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,149,0,0,0,0,0,0,0,0],[0,0,0,53,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,150,151,0,0,137,138,0,58,0,59,0,0,0,139,0,150,0,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,0,0],[0,0,0,155,116,156,157,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,75,3,4,5,159,160,8,161,0,162,0,11,12,163,0,75,16,0],[0,0,0,0,0,40,164,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,0,165,0,0,0,0],[0,124,64,0,0,40,164,0,9,0,10,0,0,0,42,0,124,0,0],[0,0,0,0,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,167,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0],[0,0,0,0,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,0,79,0,0,0,0],[0,0,0,169,170,171,172,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,75,0,176,0,177,177,22,23,0,24,0,0,0,78,0,75,0,0],[0,178,90,0,0,0,0,0,0,0,0,0,0,0,0,0,178,0,0],[0,75,0,0,0,175,179,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,180,180,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,83,83,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,182,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,183,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,86,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,0],[0,0,0,189,170,190,191,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,76,193,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,0,194,0,0,0,0],[0,178,90,0,0,76,193,0,23,0,24,0,0,0,78,0,178,0,0],[0,0,0,0,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,195,196,197,198,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,96,0,202,0,203,203,32,33,0,34,0,0,0,99,0,96,0,0],[0,204,111,0,0,0,0,0,0,0,0,0,0,0,0,0,204,0,0],[0,96,0,0,0,201,205,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,206,206,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,104,104,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,208,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,209,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,107,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,214,0,0,0,0,0,0,0,0],[0,0,0,215,196,216,217,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,97,219,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,0,220,0,0,0,0],[0,204,111,0,0,97,219,0,33,0,34,0,0,0,99,0,204,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,223,0,0,0,40,224,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,119,225,0,0,0,0],[0,0,0,115,116,117,222,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,115,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,226,64,0,0,40,224,0,9,0,10,0,0,0,42,0,226,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,39,0,0,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,44,44,8,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,227,0,228,229,0,9,0,10,0,0,230,0,0,0,0,0],[0,39,0,122,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,231,231,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,232,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,131,131,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,234,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,235,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,0,0,240,241,242,243,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,136,0,247,0,248,248,57,58,0,59,0,0,0,139,0,136,0,0],[0,249,151,0,0,0,0,0,0,0,0,0,0,0,0,0,249,0,0],[0,136,0,0,0,246,250,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,251,251,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,144,144,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,253,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,254,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,147,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0],[0,0,0,260,241,261,262,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,137,264,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,0,265,0,0,0,0],[0,249,151,0,0,137,264,0,58,0,59,0,0,0,139,0,249,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,158,225,0,0,0,0],[0,0,0,155,116,156,222,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,155,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,43,266,266,8,161,0,24,0,0,12,267,0,0,0,0],[0,75,0,176,43,268,268,269,161,0,24,0,0,0,267,0,75,0,0],[0,0,0,0,0,270,0,0,271,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,272,0,0,0,0,0,0,0,0],[0,273,274,0,0,40,41,0,9,0,10,0,0,0,42,0,273,0,0],[0,0,0,40,0,123,123,8,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,121,275,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,276,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,279,0,0,0,76,280,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,173,281,0,0,0,0],[0,0,0,169,170,171,278,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,169,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,282,90,0,0,76,280,0,23,0,24,0,0,0,78,0,282,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,75,0,0,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,80,80,22,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,283,0,284,285,0,23,0,24,0,0,286,0,0,0,0,0],[0,75,0,176,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,287,287,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,288,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,185,185,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,290,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,291,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,192,281,0,0,0,0],[0,0,0,189,170,190,278,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,189,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,76,0,177,177,22,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,175,296,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,299,0,0,0,97,300,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,199,301,0,0,0,0],[0,0,0,195,196,197,298,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,195,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,302,111,0,0,97,300,0,33,0,34,0,0,0,99,0,302,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,96,0,0,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,101,101,32,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,303,0,304,305,0,33,0,34,0,0,306,0,0,0,0,0],[0,96,0,202,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,307,307,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,308,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,211,211,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,310,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,311,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,218,301,0,0,0,0],[0,0,0,215,196,216,298,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,215,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,97,0,203,203,32,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,201,316,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,0,225,0,0,0,0],[0,0,0,317,318,319,320,8,9,0,10,0,0,321,322,0,0,16,0],[0,223,0,323,0,123,123,8,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,0,0,121,324,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,325,318,326,327,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,64,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,230,0,0,0,0,0],[0,0,0,227,0,228,121,0,9,0,10,0,0,230,0,0,0,0,0],[0,0,0,227,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0],[0,0,0,0,0,329,329,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,330,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,237,237,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,332,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,333,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,337,0,0,0,137,338,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,244,339,0,0,0,0],[0,0,0,240,241,242,336,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,240,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,340,151,0,0,137,338,0,58,0,59,0,0,0,139,0,340,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,136,0,0,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,141,141,57,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,341,0,342,343,0,58,0,59,0,0,344,0,0,0,0,0],[0,136,0,247,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,345,345,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,346,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,256,256,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,348,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,349,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,263,339,0,0,0,0],[0,0,0,260,241,261,336,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,260,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,137,0,248,248,57,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,246,354,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,126,126,8,23,0,0,0,0,0,0,0,0,0,0],[0,355,90,0,0,121,125,0,9,0,10,0,0,0,42,0,355,0,0],[0,0,0,0,0,356,356,269,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,357,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,270,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,363,0,0,0,0,0,0,0,0],[0,0,0,364,116,365,366,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,40,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,0,281,0,0,0,0],[0,0,0,369,370,371,372,22,23,0,24,0,0,373,374,0,0,27,0],[0,279,0,375,0,177,177,22,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,0,0,175,376,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,377,370,378,379,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,90,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,286,0,0,0,0,0],[0,0,0,283,0,284,175,0,23,0,24,0,0,286,0,0,0,0,0],[0,0,0,283,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0],[0,0,0,0,0,381,381,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,293,293,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,384,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,385,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,76,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,0,301,0,0,0,0],[0,0,0,387,388,389,390,32,33,0,34,0,0,391,392,0,0,37,0],[0,299,0,393,0,203,203,32,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,0,0,201,394,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,395,388,396,397,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,111,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,306,0,0,0,0,0],[0,0,0,303,0,304,201,0,33,0,34,0,0,306,0,0,0,0,0],[0,0,0,303,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,0,0],[0,0,0,0,0,399,399,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,400,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,313,313,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,402,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,403,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,97,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,407,0,0,0,40,408,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,321,409,0,0,0,0],[0,0,0,317,318,319,406,8,9,0,10,0,0,321,322,0,0,16,0],[0,0,0,317,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,410,64,0,0,40,408,0,9,0,10,0,0,0,42,0,410,0,0],[0,223,0,0,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,323,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,328,409,0,0,0,0],[0,0,0,325,318,326,406,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,325,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0],[0,0,0,0,0,411,411,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,412,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,413,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,0,339,0,0,0,0],[0,0,0,414,415,416,417,57,58,0,59,0,0,418,419,0,0,62,0],[0,337,0,420,0,248,248,57,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,0,0,246,421,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,422,415,423,424,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,151,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,344,0,0,0,0,0],[0,0,0,341,0,342,246,0,58,0,59,0,0,344,0,0,0,0,0],[0,0,0,341,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0],[0,0,0,0,0,426,426,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,427,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,351,351,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,429,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,430,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,137,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,432,116,433,434,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,0,0,180,180,269,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,359,359,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,437,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,438,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,443,274,0,0,0,0,0,0,0,0,0,0,0,0,0,443,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,367,225,0,0,0,0],[0,0,0,364,116,365,445,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,364,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,448,0,0,0,76,449,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,373,450,0,0,0,0],[0,0,0,369,370,371,447,22,23,0,24,0,0,373,374,0,0,27,0],[0,0,0,369,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,451,90,0,0,76,449,0,23,0,24,0,0,0,78,0,451,0,0],[0,279,0,0,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,375,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,380,450,0,0,0,0],[0,0,0,377,370,378,447,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,377,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,0,0,0,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,0,0],[0,0,0,0,0,452,452,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,453,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,454,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,457,0,0,0,97,458,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,391,459,0,0,0,0],[0,0,0,387,388,389,456,32,33,0,34,0,0,391,392,0,0,37,0],[0,0,0,387,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,460,111,0,0,97,458,0,33,0,34,0,0,0,99,0,460,0,0],[0,299,0,0,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,393,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,398,459,0,0,0,0],[0,0,0,395,388,396,456,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,395,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,0,0,0,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,0,0],[0,0,0,0,0,461,461,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,462,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,463,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,0,409,0,0,0,0],[0,0,0,464,465,466,467,8,9,0,10,0,0,468,469,0,0,16,0],[0,407,0,470,0,123,123,8,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,0,0,121,471,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,472,465,473,474,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,0,0,0,0,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,0,0],[0,0,0,0,0,0,476,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,479,0,0,0,137,480,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,418,481,0,0,0,0],[0,0,0,414,415,416,478,57,58,0,59,0,0,418,419,0,0,62,0],[0,0,0,414,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,482,151,0,0,137,480,0,58,0,59,0,0,0,139,0,482,0,0],[0,337,0,0,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,420,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,425,481,0,0,0,0],[0,0,0,422,415,423,478,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,422,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,0,0,0,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0],[0,0,0,0,0,483,483,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,485,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,435,225,0,0,0,0],[0,0,0,432,116,433,445,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,432,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,486,486,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,487,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,440,440,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,489,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,490,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,495,0,496,497,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,0,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,0,225,0,0,0,0],[0,0,0,0,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,0,450,0,0,0,0],[0,0,0,499,500,501,502,22,23,0,24,0,0,503,504,0,0,27,0],[0,448,0,505,0,177,177,22,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,0,0,175,506,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,507,500,508,509,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,0,0,0,0,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,0,0],[0,0,0,0,0,0,511,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,0,459,0,0,0,0],[0,0,0,512,513,514,515,32,33,0,34,0,0,516,517,0,0,37,0],[0,457,0,518,0,203,203,32,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,0,0,201,519,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,520,513,521,522,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,0,0,0,0,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,312,0,0],[0,0,0,0,0,0,524,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,527,0,0,0,40,528,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,468,529,0,0,0,0],[0,0,0,464,465,466,526,8,9,0,10,0,0,468,469,0,0,16,0],[0,0,0,464,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,530,64,0,0,40,528,0,9,0,10,0,0,0,42,0,530,0,0],[0,407,0,0,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,470,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,475,529,0,0,0,0],[0,0,0,472,465,473,526,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,472,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0],[0,0,0,0,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,0,481,0,0,0,0],[0,0,0,531,532,533,534,57,58,0,59,0,0,535,536,0,0,62,0],[0,479,0,537,0,248,248,57,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,0,0,246,538,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,539,532,540,541,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,0,0,0,0,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,350,0,0],[0,0,0,0,0,0,543,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,358,0,0],[0,0,0,0,0,544,544,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,545,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,492,492,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,547,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,548,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,274,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,498,0,0,0,0,0],[0,0,0,495,0,496,368,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,495,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,553,0,0,0,76,554,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,503,555,0,0,0,0],[0,0,0,499,500,501,552,22,23,0,24,0,0,503,504,0,0,27,0],[0,0,0,499,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,556,90,0,0,76,554,0,23,0,24,0,0,0,78,0,556,0,0],[0,448,0,0,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,505,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,510,555,0,0,0,0],[0,0,0,507,500,508,552,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,507,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,559,0,0,0,97,560,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,516,561,0,0,0,0],[0,0,0,512,513,514,558,32,33,0,34,0,0,516,517,0,0,37,0],[0,0,0,512,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,562,111,0,0,97,560,0,33,0,34,0,0,0,99,0,562,0,0],[0,457,0,0,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,518,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,523,561,0,0,0,0],[0,0,0,520,513,521,558,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,520,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0],[0,0,0,0,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,0,529,0,0,0,0],[0,0,0,563,66,564,565,8,9,0,10,0,0,566,68,0,0,16,0],[0,527,0,567,0,123,123,8,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,0,0,121,568,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,569,66,570,571,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,575,0,0,0,137,576,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,535,577,0,0,0,0],[0,0,0,531,532,533,574,57,58,0,59,0,0,535,536,0,0,62,0],[0,0,0,531,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,578,151,0,0,137,576,0,58,0,59,0,0,0,139,0,578,0,0],[0,479,0,0,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,537,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,542,577,0,0,0,0],[0,0,0,539,532,540,574,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,539,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,0,0],[0,0,0,0,0,0,0,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,439,0,0],[0,0,0,0,0,579,579,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,580,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,581,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,0,555,0,0,0,0],[0,0,0,582,91,583,584,22,23,0,24,0,0,585,93,0,0,27,0],[0,553,0,586,0,177,177,22,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,0,0,175,587,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,588,91,589,590,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,0,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,0,561,0,0,0,0],[0,0,0,592,112,593,594,32,33,0,34,0,0,595,114,0,0,37,0],[0,559,0,596,0,203,203,32,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,0,0,201,597,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,598,112,599,600,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,566,165,0,0,0,0],[0,0,0,563,66,564,67,8,9,0,10,0,0,566,68,0,0,16,0],[0,0,0,563,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,527,0,0,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,567,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,572,165,0,0,0,0],[0,0,0,569,66,570,67,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,569,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,0,577,0,0,0,0],[0,0,0,603,152,604,605,57,58,0,59,0,0,606,154,0,0,62,0],[0,575,0,607,0,248,248,57,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,0,0,246,608,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,609,152,610,611,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,0,0,0,0,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,491,0,0],[0,0,0,0,0,0,613,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,585,194,0,0,0,0],[0,0,0,582,91,583,92,22,23,0,24,0,0,585,93,0,0,27,0],[0,0,0,582,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,553,0,0,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,586,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,591,194,0,0,0,0],[0,0,0,588,91,589,92,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,588,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,595,220,0,0,0,0],[0,0,0,592,112,593,113,32,33,0,34,0,0,595,114,0,0,37,0],[0,0,0,592,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,559,0,0,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,596,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,601,220,0,0,0,0],[0,0,0,598,112,599,113,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,598,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,606,265,0,0,0,0],[0,0,0,603,152,604,153,57,58,0,59,0,0,606,154,0,0,62,0],[0,0,0,603,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,575,0,0,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,607,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,612,265,0,0,0,0],[0,0,0,609,152,610,153,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,609,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,549,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0]],accepting:[!1,!0,!0,!0,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!1,!1,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0],tags:[[],["broken_cluster"],["consonant_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],[],["broken_cluster"],["symbol_cluster"],[],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["symbol_cluster"],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],[],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],[],[],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],["consonant_syllable"],["vowel_syllable"],["standalone_cluster"]]},ao={categories:["O","IND","S","GB","B","FM","CGJ","VMAbv","VMPst","VAbv","VPst","CMBlw","VPre","VBlw","H","VMBlw","CMAbv","MBlw","CS","R","SUB","MPst","MPre","FAbv","FPst","FBlw","SMAbv","SMBlw","VMPre","ZWNJ","ZWJ","WJ","VS","N","HN","MAbv"],decompositions:{2507:[2503,2494],2508:[2503,2519],2888:[2887,2902],2891:[2887,2878],2892:[2887,2903],3018:[3014,3006],3019:[3015,3006],3020:[3014,3031],3144:[3142,3158],3264:[3263,3285],3271:[3270,3285],3272:[3270,3286],3274:[3270,3266],3275:[3270,3266,3285],3402:[3398,3390],3403:[3399,3390],3404:[3398,3415],3546:[3545,3530],3548:[3545,3535],3549:[3545,3535,3530],3550:[3545,3551],3635:[3661,3634],3763:[3789,3762],3955:[3953,3954],3957:[3953,3956],3958:[4018,3968],3959:[4018,3953,3968],3960:[4019,3968],3961:[4019,3953,3968],3969:[3953,3968],6971:[6970,6965],6973:[6972,6965],6976:[6974,6965],6977:[6975,6965],6979:[6978,6965],69934:[69937,69927],69935:[69938,69927],70475:[70471,70462],70476:[70471,70487],70843:[70841,70842],70844:[70841,70832],70846:[70841,70845],71098:[71096,71087],71099:[71097,71087]},stateTable:[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[2,2,3,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,17,18,11,19,20,21,22,0,0,23,0,0,2,0,24,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,27,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,39,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,11,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,49,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,35,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,53,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0]],accepting:[!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0],tags:[[],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["symbol_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["virama_terminated_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["number_joiner_terminated_cluster"],["standard_cluster"],["standard_cluster"],["numeral_cluster"]]},oo={X:1,C:2,V:4,N:8,H:16,ZWNJ:32,ZWJ:64,M:128,SM:256,VD:512,A:1024,Placeholder:2048,Dotted_Circle:4096,RS:8192,Coeng:16384,Repha:32768,Ra:65536,CM:1<<17,Symbol:1<<18},so={Start:1,Ra_To_Become_Reph:2,Pre_M:4,Pre_C:8,Base_C:16,After_Main:32,Above_C:64,Before_Sub:128,Below_C:256,After_Sub:512,Before_Post:1024,Post_C:2048,After_Post:4096,Final_C:8192,SMVD:16384,End:32768},lo=oo.C|oo.Ra|oo.CM|oo.V|oo.Placeholder|oo.Dotted_Circle,uo=oo.ZWJ|oo.ZWNJ,co=oo.H|oo.Coeng,ho={Default:{hasOldSpec:!1,virama:0,basePos:"Last",rephPos:so.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Devanagari:{hasOldSpec:!0,virama:2381,basePos:"Last",rephPos:so.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Bengali:{hasOldSpec:!0,virama:2509,basePos:"Last",rephPos:so.After_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gurmukhi:{hasOldSpec:!0,virama:2637,basePos:"Last",rephPos:so.Before_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gujarati:{hasOldSpec:!0,virama:2765,basePos:"Last",rephPos:so.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Oriya:{hasOldSpec:!0,virama:2893,basePos:"Last",rephPos:so.After_Main,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Tamil:{hasOldSpec:!0,virama:3021,basePos:"Last",rephPos:so.After_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Telugu:{hasOldSpec:!0,virama:3149,basePos:"Last",rephPos:so.After_Post,rephMode:"Explicit",blwfMode:"Post_Only"},Kannada:{hasOldSpec:!0,virama:3277,basePos:"Last",rephPos:so.After_Post,rephMode:"Implicit",blwfMode:"Post_Only"},Malayalam:{hasOldSpec:!0,virama:3405,basePos:"Last",rephPos:so.After_Main,rephMode:"Log_Repha",blwfMode:"Pre_And_Post"},Khmer:{hasOldSpec:!1,virama:6098,basePos:"First",rephPos:so.Ra_To_Become_Reph,rephMode:"Vis_Repha",blwfMode:"Pre_And_Post"}},fo={6078:[6081,6078],6079:[6081,6079],6080:[6081,6080],6084:[6081,6084],6085:[6081,6085]},po=ao.decompositions,go=new C(e("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","base64")),yo=new A(io),vo=(ro=no=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.planFeatures=function(t){var e;t.addStage(_o),t.addStage(["locl","ccmp"]),t.addStage(Eo),t.addStage("nukt"),t.addStage("akhn"),t.addStage("rphf",!1),t.addStage("rkrf"),t.addStage("pref",!1),t.addStage("blwf",!1),t.addStage("abvf",!1),t.addStage("half",!1),t.addStage("pstf",!1),t.addStage("vatu"),t.addStage("cjct"),t.addStage("cfar",!1),t.addStage(Io),t.addStage({local:["init"],global:["pres","abvs","blws","psts","haln","dist","abvm","blwm","calt","clig"]}),t.unicodeScript=(e=t.script,si[e]),t.indicConfig=ho[t.unicodeScript]||ho.Default,t.isOldSpec=t.indicConfig.hasOldSpec&&"2"!==t.script[t.script.length-1]},e.assignFeatures=function(t,e){for(var n=function(n){var r=e[n].codePoints[0],i=fo[r]||po[r];if(i){var a=i.map(function(r){var i=t.font.glyphForCodePoint(r);return new ya(t.font,i.id,[r],e[n].features)});e.splice.apply(e,[n,1].concat(a))}},r=e.length-1;r>=0;r--)n(r)},e}(Qi),no.zeroMarkWidths="NONE",ro);function bo(t){return go.get(t.codePoints[0])>>8}function mo(t){return 1<<(255&go.get(t.codePoints[0]))}var wo,xo,So=function t(e,n,r,i){f(this,t),this.category=e,this.position=n,this.syllableType=r,this.syllable=i};function _o(t,e){var n=0,r=0,i=yo.match(e.map(bo)),a=Array.isArray(i),o=0;for(i=a?i:s(i);;){var l;if(a){if(o>=i.length)break;l=i[o++]}else{if((o=i.next()).done)break;l=o.value}var u=l,c=u[0],h=u[1],f=u[2];if(c>r){++n;for(var d=r;d<c;d++)e[d].shaperInfo=new So(oo.X,so.End,"non_indic_cluster",n)}++n;for(var p=c;p<=h;p++)e[p].shaperInfo=new So(1<<bo(e[p]),mo(e[p]),f[0],n);r=h+1}if(r<e.length){++n;for(var g=r;g<e.length;g++)e[g].shaperInfo=new So(oo.X,so.End,"non_indic_cluster",n)}}function ko(t){return t.shaperInfo.category&lo}function Co(t){return t.shaperInfo.category&uo}function Ao(t){return t.shaperInfo.category&co}function Po(t,e){var n=t,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a,o;if(r){if(i>=n.length)break;o=n[i++]}else{if((i=n.next()).done)break;o=i.value}o.features=((a={})[e]=!0,a)}return t[0]._font._layoutEngine.engine.GSUBProcessor.applyFeatures([e],t),1===t.length}function Eo(t,e,n){var r,i,a,o=n.indicConfig,s=t._layoutEngine.engine.GSUBProcessor.features,l=t.glyphForCodePoint(9676).id,u=t.glyphForCodePoint(o.virama).id;if(u)for(var c=new ya(t,u,[o.virama]),h=0;h<e.length;h++)e[h].shaperInfo.position===so.Base_C&&(e[h].shaperInfo.position=(r=e[h].copy(),a=void 0,Po((a=[i=c,r,i]).slice(0,2),"blwf")||Po(a.slice(1,3),"blwf")?so.Below_C:Po(a.slice(0,2),"pstf")||Po(a.slice(1,3),"pstf")?so.Post_C:Po(a.slice(0,2),"pref")||Po(a.slice(1,3),"pref")?so.Post_C:so.Base_C));for(var f=0,d=To(e,0);f<e.length;d=To(e,f=d)){var p=e[f].shaperInfo,g=(p.category,p.syllableType);if("symbol_cluster"!==g&&"non_indic_cluster"!==g){if("broken_cluster"===g&&l){var y=new ya(t,l,[9676]);y.shaperInfo=new So(1<<bo(y),mo(y),e[f].shaperInfo.syllableType,e[f].shaperInfo.syllable);for(var v=f;v<d&&e[v].shaperInfo.category===oo.Repha;)v++;e.splice(v++,0,y),d++}var b=d,m=f,w=!1;if(o.rephPos!==so.Ra_To_Become_Reph&&s.rphf&&f+3<=d&&("Implicit"===o.rephMode&&!Co(e[f+2])||"Explicit"===o.rephMode&&e[f+2].shaperInfo.category===oo.ZWJ)){var x=[e[f].copy(),e[f+1].copy(),e[f+2].copy()];if(Po(x.slice(0,2),"rphf")||"Explicit"===o.rephMode&&Po(x,"rphf")){for(m+=2;m<d&&Co(e[m]);)m++;b=f,w=!0}}else if("Log_Repha"===o.rephMode&&e[f].shaperInfo.category===oo.Repha){for(m++;m<d&&Co(e[m]);)m++;b=f,w=!0}switch(o.basePos){case"Last":var S=d,_=!1;do{var k=e[--S].shaperInfo;if(ko(e[S])){if(k.position!==so.Below_C&&(k.position!==so.Post_C||_)){b=S;break}k.position===so.Below_C&&(_=!0),b=S}else if(f<S&&k.category===oo.ZWJ&&e[S-1].shaperInfo.category===oo.H)break}while(S>m);break;case"First":for(var C=(b=f)+1;C<d;C++)ko(e[C])&&(e[C].shaperInfo.position=so.Below_C)}w&&b===f&&m-b<=2&&(w=!1);for(var A=f;A<b;A++){var P=e[A].shaperInfo;P.position=Math.min(so.Pre_C,P.position)}b<d&&(e[b].shaperInfo.position=so.Base_C);for(var E=b+1;E<d;E++)if(e[E].shaperInfo.category===oo.M){for(var I=E+1;I<d;I++)if(ko(e[I])){e[I].shaperInfo.position=so.Final_C;break}break}if(w&&(e[f].shaperInfo.position=so.Ra_To_Become_Reph),n.isOldSpec)for(var T="Malayalam"!==n.unicodeScript,O=b+1;O<d;O++)if(e[O].shaperInfo.category===oo.H){var L=void 0;for(L=d-1;L>O&&!(ko(e[L])||T&&e[L].shaperInfo.category===oo.H);L--);if(e[L].shaperInfo.category!==oo.H&&L>O){var B=e[O];e.splice.apply(e,[O,0].concat(e.splice(O+1,L-O))),e[L]=B}break}for(var M=so.Start,R=f;R<d;R++){var F=e[R].shaperInfo;if(F.category&(uo|oo.N|oo.RS|oo.CM|co&F.category)){if(F.position=M,F.category===oo.H&&F.position===so.Pre_M)for(var D=R;D>f;D--)if(e[D-1].shaperInfo.position!==so.Pre_M){F.position=e[D-1].shaperInfo.position;break}}else F.position!==so.SMVD&&(M=F.position)}for(var z=b,N=b+1;N<d;N++)if(ko(e[N])){for(var U=z+1;U<N;U++)e[U].shaperInfo.position<so.SMVD&&(e[U].shaperInfo.position=e[N].shaperInfo.position);z=N}else e[N].shaperInfo.category===oo.M&&(z=N);var W=e.slice(f,d);W.sort(function(t,e){return t.shaperInfo.position-e.shaperInfo.position}),e.splice.apply(e,[f,W.length].concat(W));for(var G=f;G<d;G++)if(e[G].shaperInfo.position===so.Base_C){b=G;break}for(var V=f;V<d&&e[V].shaperInfo.position===so.Ra_To_Become_Reph;V++)e[V].features.rphf=!0;for(var j=!n.isOldSpec&&"Pre_And_Post"===o.blwfMode,H=f;H<b;H++)e[H].features.half=!0,j&&(e[H].features.blwf=!0);for(var q=b+1;q<d;q++)e[q].features.abvf=!0,e[q].features.pstf=!0,e[q].features.blwf=!0;if(n.isOldSpec&&"Devanagari"===n.unicodeScript)for(var Z=f;Z+1<b;Z++)e[Z].shaperInfo.category!==oo.Ra||e[Z+1].shaperInfo.category!==oo.H||Z+1!==b&&e[Z+2].shaperInfo.category!==oo.ZWJ||(e[Z].features.blwf=!0,e[Z+1].features.blwf=!0);if(s.pref&&b+2<d)for(var Y=b+1;Y+2-1<d;Y++){if(Po([e[Y].copy(),e[Y+1].copy()],"pref")){for(var X=0;X<2;X++)e[Y++].features.pref=!0;if(s.cfar)for(;Y<d;Y++)e[Y].features.cfar=!0;break}}for(var K=f+1;K<d;K++)if(Co(e[K]))for(var J=e[K].shaperInfo.category===oo.ZWNJ,Q=K;Q--,J&&delete e[Q].features.half,Q>f&&!ko(e[Q]););}}}function Io(t,e,n){for(var r=n.indicConfig,i=t._layoutEngine.engine.GSUBProcessor.features,a=0,o=To(e,0);a<e.length;o=To(e,a=o)){for(var s=!!i.pref,l=a;l<o;l++)if(e[l].shaperInfo.position>=so.Base_C){if(s&&l+1<o)for(var u=l+1;u<o;u++)if(e[u].features.pref){if(!e[u].substituted||!e[u].isLigated||e[u].isMultiplied){for(l=u;l<o&&Ao(e[l]);)l++;e[l].shaperInfo.position=so.BASE_C,s=!1}break}if("Malayalam"===n.unicodeScript)for(var c=l+1;c<o;c++){for(;c<o&&Co(e[c]);)c++;if(c===o||!Ao(e[c]))break;for(c++;c<o&&Co(e[c]);)c++;c<o&&ko(e[c])&&e[c].shaperInfo.position===so.Below_C&&(e[l=c].shaperInfo.position=so.Base_C)}a<l&&e[l].shaperInfo.position>so.Base_C&&l--;break}if(l===o&&a<l&&e[l-1].shaperInfo.category===oo.ZWJ&&l--,l<o)for(;a<l&&e[l].shaperInfo.category&(oo.N|co);)l--;if(a+1<o&&a<l){var h=l===o?l-2:l-1;if("Malayalam"!==n.unicodeScript&&"Tamil"!==n.unicodeScript){for(;h>a&&!(e[h].shaperInfo.category&(oo.M|co));)h--;Ao(e[h])&&e[h].shaperInfo.position!==so.Pre_M?h+1<o&&Co(e[h+1])&&h++:h=a}if(a<h&&e[h].shaperInfo.position!==so.Pre_M)for(var f=h;f>a;f--)if(e[f-1].shaperInfo.position===so.Pre_M){var d=f-1;d<l&&l<=h&&l--;var p=e[d];e.splice.apply(e,[d,0].concat(e.splice(d+1,h-d))),e[h]=p,h--}}if(a+1<o&&e[a].shaperInfo.position===so.Ra_To_Become_Reph&&e[a].shaperInfo.category===oo.Repha!==(e[a].isLigated&&!e[a].isMultiplied)){var g=void 0,y=r.rephPos,v=!1;if(y!==so.After_Post){for(g=a+1;g<l&&!Ao(e[g]);)g++;if(g<l&&Ao(e[g])&&(g+1<l&&Co(e[g+1])&&g++,v=!0),!v&&y===so.After_Main){for(g=l;g+1<o&&e[g+1].shaperInfo.position<=so.After_Main;)g++;v=g<o}if(!v&&y===so.After_Sub){for(g=l;g+1<o&&!(e[g+1].shaperInfo.position&(so.Post_C|so.After_Post|so.SMVD));)g++;v=g<o}}if(!v){for(g=a+1;g<l&&!Ao(e[g]);)g++;g<l&&Ao(e[g])&&(g+1<l&&Co(e[g+1])&&g++,v=!0)}if(!v){for(g=o-1;g>a&&e[g].shaperInfo.position===so.SMVD;)g--;if(Ao(e[g]))for(var b=l+1;b<g;b++)e[b].shaperInfo.category===oo.M&&g--}var m=e[a];e.splice.apply(e,[a,0].concat(e.splice(a+1,g-a))),e[g]=m,a<l&&l<=g&&l--}if(s&&l+1<o)for(var w=l+1;w<o;w++)if(e[w].features.pref){if(e[w].isLigated&&!e[w].isMultiplied){var x=l;if("Malayalam"!==n.unicodeScript&&"Tamil"!==n.unicodeScript){for(;x>a&&!(e[x-1].shaperInfo.category&(oo.M|co));)x--;if(x>a&&e[x-1].shaperInfo.category===oo.M)for(var S=w,_=l+1;_<S;_++)if(e[_].shaperInfo.category===oo.M){x--;break}}x>a&&Ao(e[x-1])&&x<o&&Co(e[x])&&x++;var C=w,A=e[C];e.splice.apply(e,[x+1,0].concat(e.splice(x,C-x))),e[x]=A,x<=l&&l<C&&l++}break}e[a].shaperInfo.position!==so.Pre_M||a&&/Cf|Mn/.test(k.getCategory(e[a-1].codePoints[0]))||(e[a].features.init=!0)}}function To(t,e){if(e>=t.length)return e;for(var n=t[e].shaperInfo.syllable;++e<t.length&&t[e].shaperInfo.syllable===n;);return e}var Oo=ao.categories,Lo=ao.decompositions,Bo=new C(e("AAIAAAAAAAAAAKnQAVEMrvPtnH+oHUcVx+fd99799W5e8mx+9NkYm7YUI2KtimkVDG3FWgVTFY1Fqa2VJirYB0IaUFLBaKGJViXir6oxKCSBoi0UTKtg2yA26h+milYNtMH+0WK1VQyvtBS/487hnncyMzuzu7N7n7kHPszu7OzMmTNzdmdmfzzfUmpiUqkemAMbwSZwKbjcxM1XEL4VvB28G3zAk+56cLMlfgdYADvBbvBF8GWwH9xl+CFLfwj8BPwU/MKS38/AMfA86v9ro9ucQcdR+CjCP4CT4EnwDPg3eAFMTik1A+bAPNgINoFLwGawZSpLfzXCrWAb+AjYDm4BO8FusAfsA/vBXeAgOALuNfv3g4fAcXACPAaeAE+B58Bp8NJUpnN7WqlZsHY629+A8GLwWvAG8BZwJXinOf5ehB8EN4AdYGE6q7dmF9uugs8hvz0V58nZK/L+Kva/BX4ADoN7prP6HgUPgkfA73L0eQzHnwBPgX+Y80+DF8FUW6lBO4tbjXA9uAi8pj3sS2/E9mawBVwNtoJt5pzrTXgzwk+B7awP7sT+7nY6WxFfQBlfAl8H3wU/Anezcu/D9s/BMRN3HOEJ8EdwMkC/J5HmmXZmq2fBIjgEVEepbieLX4Fw0MnSrzRxmrVsm7MB8ReDV4vjr3ekJy7rZGVPMb196Xm6oug83oRyt4CrwDVgK9gGPtzxn3uTOD6YPDPNJ5Hm0+AznazffJ7Z4KSnXncg3VfAN8EBhx42/z/UGdbrx52sr9yH8AFTrt5+2GzfnWPbKuw7ZszZyNh/xowZM2bMmDFjxsQyZ5lPNs3h9nBNYHuAfr9ic9ffiHnsJzznU91/j3P+2snWYf6G8O/gn+A0eMnEt7vQp5ulX4NwHmwEm7rZ8UsRXg6uMPvXIHwPuK7rLl+nu9FzfMyYMWPGpGVuslmarv+YMWPSkNq/d2D8uNDNngvdivA2y3jy9m72bF9v3ymOf2MExp8fG2TsAcfA2wJYBJetWBq3i+0fwPafwLmzSl0LFmZNPMLHZ4fpnsX2AdjgcXB+T6kPge+AG7D/vXYW/tLsc9r9M+MkVyLNR1m6g9g+ZfYvmMExcHCm+ftP0+T5y/e17Uw/PYLwHnC0m80TH+zG30/3mjSDnPS2/B4pUJ4rX3n+b5H3o92l6UjfvZ7y/oJzToGnu8O66XTPYf8/Jr8XWL6TPXf9bPnHtmVs+89AnxVgDVgPLgKvAg+Y/F6H7c1gC7jKHH8XeJ/x15vAjt4wvwVs7wKfBXvAPvA18G1wsJevj36f5gjS3etIq+ft9+PYQ73h/nFsn2D7f+5l75bo/VPYftpTblFb2/Jo2pdjfL0uXOX/qxfnp8vZVk2Xv9hbmu+LxvYt3A/7/WZsPoptPkr9bdCv1ya+d4TuMO8Tre5n4XkILwSbzP4l/WHazX1//r2O/z7cFHnvSYW8R/Vm02ZXIHxHze1Xdf9bbn7p0z2kDroNr2X9WL+7937sX9fP+v9h9n6jTrfI3jG9EfsfN3G35PR/G4uRfY3eMTwdkFa/C3hrf2kcfy/xYTOmprrfZsLbEe7rDPW/U9Rrv9k/ahmTL0cWWxP/YxRkgtES+zwNhZPs+FQgMj/liEsto2HxsZBQX2pZoLZqWc5riXDaQBLSt1L3hcnE+Vct7aYVKCEhbXk2+b7NZ84mmXAwCiL14Ne85S62MYPcXi5StM/YxlJF2lfabznZsC6/C807xvZV+yFve9d1KY//d3HNO8pKUXuTDh0Gpp7B852q6QFMgdWM2dfbAxOuEPQEfcEsO5fquJLZrMfyCtWP0heZF6oSdiH9u4aQvJRIJ/eL6BBynItLp5D2JRkY5L5u3xAf6lviXHWSZcfaKO/+5zvO/c9Xtq8uRXSObd+8bS0zJrS1rxTyX7k/a0nrk5D+mHeOC90uq1Q216X57lykfqHt62uTGJ2rat+i/kttyq/RSi29PlclZf2Xxq55ZeSV34T96d5X5PqZJ9I3ZX2lnkXt3xL1Kyrav/LutbZ6uGxuS6ss6V3pXOXY4kP7EBfyJT7+4TJQS9uf74f6n+3+6ZIi9bCtieatFfCxUMx4KMYfy/pzrB30vm88q9SZ11K+n9eeNN612UFKWX8uI9TmRca7TbWvKy2JvF6naF+b/0uRupZp35cZikhZvyniY2R/CbdB3vXynIC6hbRBHf4l1xps6w4x/lVEtxRtGZMuRA8uNh/jfYV8kdpsBUszcODrD7E2JT2KrB3V6XMhbdNjcXItxzaOJWkpf976/I5glQn1sbLP86U9FQvz4l0S28/lcWUJbbrE2l+Z/TlHvi4/kvZXLMyrmy1PW7x8hl6UFgvlmNM1Jq3aJ3Se0yJcpdwS6mOp/ZgLX5N1rdFKaIzH9ztquMbqq+/qCFRk+hRoyZvrTHuO8fNd/djmEzZJ3TdisN1bNQNl7y96DV/3mVkTtwasVdk1ai6ybGlDek8nT1fXc4M5tVSPvhqOsWQeXQs8L1n3IradU8OxCeVjK7dr7Dpl0cMHnUvt18TzfVsfb/pZY56fV2GnVPVIYaOi9xcZJ8cmKcu3wcuPsVHV5cdKFfZXNZefp5sWft+wzR1cczKCxh99NRx76HvwOpWNv6YZtAajt6WPyPswtVVs/VOJ7xpYx3VR31er7gMxNuV9Q443CDlW43KuYSXblsybfKYt58trfez7A1X7Tdm+V7TcoudL+LpVGf2khN63U5OyD5Af0NoUv06l7Jc0Rte+so4xL9Ayy3Rz+SufY5Jf267xcm7J4dd3kumIOrmk7Pl549bUY1puI91Gdb8Tpu+9tjmhXFdwtfVsTv5SQvXKW0cK4eXgPBO6iJ07NNVOHH7/tF1jyJdnWbrU/Uau3VNI156QZ2ZaZFu76i6vQXy9YJ2H9QZ97aF3p1xlx1yfuYRcd0Kl7NyaX190+pUOKI0tvus5j7/nSWKLo3FER8R3LHEx8gqwge1POgi1l1yfirV3zHpISHxs3vLeFXOellcG1DFGbGP00PPkeKEOaXIsqhzbruOh9Qk5L08nW2grJ0avsvWocv0zRh/fGCG0TV35hB4v0rds5Vddjm/sFCKx+aXSt2yalPZsolxXW46CDnXp0YQ0rdso9OUYPSYT6+yzuxxzlrVfFfavQ/LKqsP+dbVzE/0qRb8pKin6V9U6Fnn24pqHufLMWy90nV+0DkXmcrb0Uq+6pU7/qcs/67SHTeTaaBk9ipyXQvLqW1U7uPKpux/ESlP9umydR8H3UjzHoXxj0/J1Yr5ubHsPrWOJqxK+hk5r+EVtH3pe1XWIXa+1vQ9YJ/oZre1bGReh3xKWeX7BxfYstwh5errGJi59be8482cSsfUPQT4Xlc9K+XMmatcY0fo2+SxYQs/4XO8M03Ng/TxujYH+FRELSdH+6mtveu8itb1Cy7C9X8GfsVOcfN86RHg56wJ0ob5qOz/E/rIdq7YhF34/0cfoeWKVftJjIbWDbDfXeXR/prBOKWJ/3dd43+sr+32TvgEIEZ6/7Zt5/l7ghMm77u+ey4gcz5xfktA5vE9C5vy2Y3lpXeX40tHcLMX42qZHS/ltZluXiSlDxillt3VdIvufbc0j75wy5aWaOxWRUZmfl5nDSh3LzoWbXJOg8uumKkndp1PnH2IPfe+U33z7vjWhdPQuWMh4raqxWMh9X89RZtSZ7/JpyXs3NWQcETN3CZHU/lmVnstZB1+ZfM5A/1VJ2V9t8wTXN1S+f27mzaulbCxJHePwC1Tz/0K1/VdPvtOsba+vL7ZxM1/jakJ/V9/yfdtNx+i7bhVRRll/rrK+sk3qLt/3T0afH+tzz1HDfxzZ/HlGDduK1y/GL21zvKptQGWFSpVlFm0z+ZxD/vdAt9EqQ971NkRHW7qytog53+cfVfeFGLStfddfYka5x6dl+yi//4z6/559aUn4/+/k2pv8BqfM/0qVCnu+If2OJPRZUcyzJF/5RQm5xtM9ln+LRN+8U9+iMQS1Veg9q2z/TlV3Ett3/rLOIXOookidy/5X3GYD+S8a1z2e0vH695T9vhEqdbY//0dU3jWZ2rYq/cvCRT8r08/NLlT5/zySdSurv1ybLiup5tAp5+NNzfPJ5r61warapajItfTQNeK610/rWEMPyb+uOo/ierRNbGU01Z+rqneIPWNsT9t1rD+OYr8rm0eKvp/Ch1P4Yepyy+hWVD/f+VWXX5X+TZdfZZ+KLb9J+S8=","base64")),Mo=new A(ao),Ro=(xo=wo=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.planFeatures=function(t){t.addStage(zo),t.addStage(["locl","ccmp","nukt","akhn"]),t.addStage(No),t.addStage(["rphf"],!1),t.addStage(Uo),t.addStage(No),t.addStage(["pref"]),t.addStage(Wo),t.addStage(["rkrf","abvf","blwf","half","pstf","vatu","cjct"]),t.addStage(Go),t.addStage(["abvs","blws","pres","psts","dist","abvm","blwm"])},e.assignFeatures=function(t,e){for(var n=function(n){var r=e[n].codePoints[0];if(Lo[r]){var i=Lo[r].map(function(r){var i=t.font.glyphForCodePoint(r);return new ya(t.font,i.id,[r],e[n].features)});e.splice.apply(e,[n,1].concat(i))}},r=e.length-1;r>=0;r--)n(r)},e}(Qi),wo.zeroMarkWidths="BEFORE_GPOS",xo);function Fo(t){return Bo.get(t.codePoints[0])}var Do=function t(e,n,r){f(this,t),this.category=e,this.syllableType=n,this.syllable=r};function zo(t,e){var n=0,r=Mo.match(e.map(Fo)),i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o,u=l[0],c=l[1],h=l[2];++n;for(var f=u;f<=c;f++)e[f].shaperInfo=new Do(Oo[Fo(e[f])],h[0],n);for(var d="R"===e[u].shaperInfo.category?1:Math.min(3,c-u),p=u;p<u+d;p++)e[p].features.rphf=!0}}function No(t,e){var n=e,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}a.substituted=!1}}function Uo(t,e){var n=e,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;o.substituted&&o.features.rphf&&(o.shaperInfo.category="R")}}function Wo(t,e){var n=e,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;o.substituted&&(o.shaperInfo.category="VPre")}}function Go(t,e){for(var n=t.glyphForCodePoint(9676).id,r=0,i=Vo(e,0);r<e.length;i=Vo(e,r=i)){var a=void 0,o=void 0,s=e[r].shaperInfo,l=s.syllableType;if("virama_terminated_cluster"===l||"standard_cluster"===l||"broken_cluster"===l){if("broken_cluster"===l&&n){var u=new ya(t,n,[9676]);for(u.shaperInfo=s,a=r;a<i&&"R"===e[a].shaperInfo.category;a++);e.splice(++a,0,u),i++}if("R"===s.category&&i-r>1)for(a=r+1;a<i;a++)if(Ho(s=e[a].shaperInfo)||jo(e[a])){jo(e[a])&&a--,e.splice.apply(e,[r,0].concat(e.splice(r+1,a-r),[e[a]]));break}for(a=r,o=i;a<i;a++)Ho(s=e[a].shaperInfo)||jo(e[a])?o=jo(e[a])?a+1:a:("VPre"===s.category||"VMPre"===s.category)&&o<a&&e.splice.apply(e,[o,1,e[a]].concat(e.splice(o,a-o)))}}}function Vo(t,e){if(e>=t.length)return e;for(var n=t[e].shaperInfo.syllable;++e<t.length&&t[e].shaperInfo.syllable===n;);return e}function jo(t){return"H"===t.shaperInfo.category&&!t.isLigated}function Ho(t){return"B"===t.category||"GB"===t.category}var qo={arab:ua,mong:ua,syrc:ua,"nko ":ua,phag:ua,mand:ua,mani:ua,phlp:ua,hang:va,bng2:vo,beng:vo,dev2:vo,deva:vo,gjr2:vo,gujr:vo,guru:vo,gur2:vo,knda:vo,knd2:vo,mlm2:vo,mlym:vo,ory2:vo,orya:vo,taml:vo,tml2:vo,telu:vo,tel2:vo,khmr:vo,bali:Ro,batk:Ro,brah:Ro,bugi:Ro,buhd:Ro,cakm:Ro,cham:Ro,dupl:Ro,egyp:Ro,gran:Ro,hano:Ro,java:Ro,kthi:Ro,kali:Ro,khar:Ro,khoj:Ro,sind:Ro,lepc:Ro,limb:Ro,mahj:Ro,mtei:Ro,modi:Ro,hmng:Ro,rjng:Ro,saur:Ro,shrd:Ro,sidd:Ro,sinh:Ro,sund:Ro,sylo:Ro,tglg:Ro,tagb:Ro,tale:Ro,lana:Ro,tavt:Ro,takr:Ro,tibt:Ro,tfng:Ro,tirh:Ro,latn:Qi,DFLT:Qi};for(var Zo=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype.applyLookup=function(t,e){var n=this;switch(t){case 1:var r=this.coverageIndex(e.coverage);if(-1===r)return!1;var i=this.glyphIterator.cur;switch(e.version){case 1:i.id=i.id+e.deltaGlyphID&65535;break;case 2:i.id=e.substitute.get(r)}return!0;case 2:var a=this.coverageIndex(e.coverage);if(-1!==a){var o,l=e.sequences.get(a);this.glyphIterator.cur.id=l[0],this.glyphIterator.cur.ligatureComponent=0;var u=this.glyphIterator.cur.features,c=this.glyphIterator.cur,h=l.slice(1).map(function(t,e){var r=new ya(n.font,t,void 0,u);return r.shaperInfo=c.shaperInfo,r.isLigated=c.isLigated,r.ligatureComponent=e+1,r.substituted=!0,r.isMultiplied=!0,r});return(o=this.glyphs).splice.apply(o,[this.glyphIterator.index+1,0].concat(h)),!0}return!1;case 3:var f=this.coverageIndex(e.coverage);if(-1!==f){return this.glyphIterator.cur.id=e.alternateSet.get(f)[0],!0}return!1;case 4:var d=this.coverageIndex(e.coverage);if(-1===d)return!1;var p=e.ligatureSets.get(d),g=Array.isArray(p),y=0;for(p=g?p:s(p);;){var v;if(g){if(y>=p.length)break;v=p[y++]}else{if((y=p.next()).done)break;v=y.value}var b=v,m=this.sequenceMatchIndices(1,b.components);if(m){var w=this.glyphIterator.cur,x=w.codePoints.slice(),S=m,_=Array.isArray(S),k=0;for(S=_?S:s(S);;){var C;if(_){if(k>=S.length)break;C=S[k++]}else{if((k=S.next()).done)break;C=k.value}var A=C;x.push.apply(x,this.glyphs[A].codePoints)}var P=new ya(this.font,b.glyph,x,w.features);P.shaperInfo=w.shaperInfo,P.isLigated=!0,P.substituted=!0;for(var E=w.isMark,I=0;I<m.length&&E;I++)E=this.glyphs[m[I]].isMark;P.ligatureID=E?null:this.ligatureID++;var T=w.ligatureID,O=w.codePoints.length,L=O,B=this.glyphIterator.index+1,M=m,R=Array.isArray(M),F=0;for(M=R?M:s(M);;){var D;if(R){if(F>=M.length)break;D=M[F++]}else{if((F=M.next()).done)break;D=F.value}var z=D;if(E)B=z;else for(;B<z;){var N=L-O+Math.min(this.glyphs[B].ligatureComponent||1,O);this.glyphs[B].ligatureID=P.ligatureID,this.glyphs[B].ligatureComponent=N,B++}T=this.glyphs[B].ligatureID,L+=O=this.glyphs[B].codePoints.length,B++}if(T&&!E)for(var U=B;U<this.glyphs.length&&this.glyphs[U].ligatureID===T;U++){N=L-O+Math.min(this.glyphs[U].ligatureComponent||1,O);this.glyphs[U].ligatureComponent=N}for(var W=m.length-1;W>=0;W--)this.glyphs.splice(m[W],1);return this.glyphs[this.glyphIterator.index]=P,!0}}return!1;case 5:return this.applyContext(e);case 6:return this.applyChainingContext(e);case 7:return this.applyLookup(e.lookupType,e.extension);default:throw new Error("GSUB lookupType "+t+" is not supported")}},e}(ga),Yo=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype.applyPositionValue=function(t,e){var n=this.positions[this.glyphIterator.peekIndex(t)];null!=e.xAdvance&&(n.xAdvance+=e.xAdvance),null!=e.yAdvance&&(n.yAdvance+=e.yAdvance),null!=e.xPlacement&&(n.xOffset+=e.xPlacement),null!=e.yPlacement&&(n.yOffset+=e.yPlacement);var r=this.font._variationProcessor,i=this.font.GDEF&&this.font.GDEF.itemVariationStore;r&&i&&(e.xPlaDevice&&(n.xOffset+=r.getDelta(i,e.xPlaDevice.a,e.xPlaDevice.b)),e.yPlaDevice&&(n.yOffset+=r.getDelta(i,e.yPlaDevice.a,e.yPlaDevice.b)),e.xAdvDevice&&(n.xAdvance+=r.getDelta(i,e.xAdvDevice.a,e.xAdvDevice.b)),e.yAdvDevice&&(n.yAdvance+=r.getDelta(i,e.yAdvDevice.a,e.yAdvDevice.b)))},e.prototype.applyLookup=function(t,e){switch(t){case 1:var n=this.coverageIndex(e.coverage);if(-1===n)return!1;switch(e.version){case 1:this.applyPositionValue(0,e.value);break;case 2:this.applyPositionValue(0,e.values.get(n))}return!0;case 2:var r=this.glyphIterator.peek();if(!r)return!1;var i=this.coverageIndex(e.coverage);if(-1===i)return!1;switch(e.version){case 1:var a=e.pairSets.get(i),o=Array.isArray(a),l=0;for(a=o?a:s(a);;){var u;if(o){if(l>=a.length)break;u=a[l++]}else{if((l=a.next()).done)break;u=l.value}var c=u;if(c.secondGlyph===r.id)return this.applyPositionValue(0,c.value1),this.applyPositionValue(1,c.value2),!0}return!1;case 2:var h=this.getClassID(this.glyphIterator.cur.id,e.classDef1),f=this.getClassID(r.id,e.classDef2);if(-1===h||-1===f)return!1;var d=e.classRecords.get(h).get(f);return this.applyPositionValue(0,d.value1),this.applyPositionValue(1,d.value2),!0}case 3:var p=this.glyphIterator.peekIndex(),g=this.glyphs[p];if(!g)return!1;var y=e.entryExitRecords[this.coverageIndex(e.coverage)];if(!y||!y.exitAnchor)return!1;var v=e.entryExitRecords[this.coverageIndex(e.coverage,g.id)];if(!v||!v.entryAnchor)return!1;var b=this.getAnchor(v.entryAnchor),m=this.getAnchor(y.exitAnchor),w=this.positions[this.glyphIterator.index],x=this.positions[p];switch(this.direction){case"ltr":w.xAdvance=m.x+w.xOffset;var S=b.x+x.xOffset;x.xAdvance-=S,x.xOffset-=S;break;case"rtl":S=m.x+w.xOffset,w.xAdvance-=S,w.xOffset-=S,x.xAdvance=b.x+x.xOffset}return this.glyphIterator.flags.rightToLeft?(this.glyphIterator.cur.cursiveAttachment=p,w.yOffset=b.y-m.y):(g.cursiveAttachment=this.glyphIterator.index,w.yOffset=m.y-b.y),!0;case 4:var _=this.coverageIndex(e.markCoverage);if(-1===_)return!1;for(var k=this.glyphIterator.index;--k>=0&&(this.glyphs[k].isMark||this.glyphs[k].ligatureComponent>0););if(k<0)return!1;var C=this.coverageIndex(e.baseCoverage,this.glyphs[k].id);if(-1===C)return!1;var A=e.markArray[_],P=e.baseArray[C][A.class];return this.applyAnchor(A,P,k),!0;case 5:var E=this.coverageIndex(e.markCoverage);if(-1===E)return!1;for(var I=this.glyphIterator.index;--I>=0&&this.glyphs[I].isMark;);if(I<0)return!1;var T=this.coverageIndex(e.ligatureCoverage,this.glyphs[I].id);if(-1===T)return!1;var O=e.ligatureArray[T],L=this.glyphIterator.cur,B=this.glyphs[I],M=B.ligatureID&&B.ligatureID===L.ligatureID&&L.ligatureComponent>0?Math.min(L.ligatureComponent,B.codePoints.length)-1:B.codePoints.length-1,R=e.markArray[E],F=O[M][R.class];return this.applyAnchor(R,F,I),!0;case 6:var D=this.coverageIndex(e.mark1Coverage);if(-1===D)return!1;var z=this.glyphIterator.peekIndex(-1),N=this.glyphs[z];if(!N||!N.isMark)return!1;var U=this.glyphIterator.cur,W=!1;if(U.ligatureID===N.ligatureID?U.ligatureID?U.ligatureComponent===N.ligatureComponent&&(W=!0):W=!0:(U.ligatureID&&!U.ligatureComponent||N.ligatureID&&!N.ligatureComponent)&&(W=!0),!W)return!1;var G=this.coverageIndex(e.mark2Coverage,N.id);if(-1===G)return!1;var V=e.mark1Array[D],j=e.mark2Array[G][V.class];return this.applyAnchor(V,j,z),!0;case 7:return this.applyContext(e);case 8:return this.applyChainingContext(e);case 9:return this.applyLookup(e.lookupType,e.extension);default:throw new Error("Unsupported GPOS table: "+t)}},e.prototype.applyAnchor=function(t,e,n){var r=this.getAnchor(e),i=this.getAnchor(t.markAnchor),a=(this.positions[n],this.positions[this.glyphIterator.index]);a.xOffset=r.x-i.x,a.yOffset=r.y-i.y,this.glyphIterator.cur.markAttachment=n},e.prototype.getAnchor=function(t){var e=t.xCoordinate,n=t.yCoordinate,r=this.font._variationProcessor,i=this.font.GDEF&&this.font.GDEF.itemVariationStore;return r&&i&&(t.xDeviceTable&&(e+=r.getDelta(i,t.xDeviceTable.a,t.xDeviceTable.b)),t.yDeviceTable&&(n+=r.getDelta(i,t.yDeviceTable.a,t.yDeviceTable.b))),{x:e,y:n}},e.prototype.applyFeatures=function(e,n,r){t.prototype.applyFeatures.call(this,e,n,r);for(var i=0;i<this.glyphs.length;i++)this.fixCursiveAttachment(i);this.fixMarkAttachment()},e.prototype.fixCursiveAttachment=function(t){var e=this.glyphs[t];if(null!=e.cursiveAttachment){var n=e.cursiveAttachment;e.cursiveAttachment=null,this.fixCursiveAttachment(n),this.positions[t].yOffset+=this.positions[n].yOffset}},e.prototype.fixMarkAttachment=function(){for(var t=0;t<this.glyphs.length;t++){var e=this.glyphs[t];if(null!=e.markAttachment){var n=e.markAttachment;if(this.positions[t].xOffset+=this.positions[n].xOffset,this.positions[t].yOffset+=this.positions[n].yOffset,"ltr"===this.direction)for(var r=n;r<t;r++)this.positions[t].xOffset-=this.positions[r].xAdvance,this.positions[t].yOffset-=this.positions[r].yAdvance;else for(var i=n+1;i<t+1;i++)this.positions[t].xOffset+=this.positions[i].xAdvance,this.positions[t].yOffset+=this.positions[i].yAdvance}}},e}(ga),Xo=function(){function t(e){f(this,t),this.font=e,this.glyphInfos=null,this.plan=null,this.GSUBProcessor=null,this.GPOSProcessor=null,this.fallbackPosition=!0,e.GSUB&&(this.GSUBProcessor=new Zo(e,e.GSUB)),e.GPOS&&(this.GPOSProcessor=new Yo(e,e.GPOS))}return t.prototype.setup=function(t){var e=this;this.glyphInfos=t.glyphs.map(function(t){return new ya(e.font,t.id,[].concat(t.codePoints))});var n=null;for(var r in this.GPOSProcessor&&(n=this.GPOSProcessor.selectScript(t.script,t.language,t.direction)),this.GSUBProcessor&&(n=this.GSUBProcessor.selectScript(t.script,t.language,t.direction)),this.shaper=function(t){Array.isArray(t)||(t=[t]);var e=t,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=qo[i];if(a)return a}return Qi}(n),this.plan=new qi(this.font,n,t.direction),this.shaper.plan(this.plan,this.glyphInfos,t.features),this.plan.allFeatures)t.features[r]=!0},t.prototype.substitute=function(t){var e=this;this.GSUBProcessor&&(this.plan.process(this.GSUBProcessor,this.glyphInfos),t.glyphs=this.glyphInfos.map(function(t){return e.font.getGlyph(t.id,t.codePoints)}))},t.prototype.position=function(t){return"BEFORE_GPOS"===this.shaper.zeroMarkWidths&&this.zeroMarkAdvances(t.positions),this.GPOSProcessor&&this.plan.process(this.GPOSProcessor,this.glyphInfos,t.positions),"AFTER_GPOS"===this.shaper.zeroMarkWidths&&this.zeroMarkAdvances(t.positions),"rtl"===t.direction&&(t.glyphs.reverse(),t.positions.reverse()),this.GPOSProcessor&&this.GPOSProcessor.features},t.prototype.zeroMarkAdvances=function(t){for(var e=0;e<this.glyphInfos.length;e++)this.glyphInfos[e].isMark&&(t[e].xAdvance=0,t[e].yAdvance=0)},t.prototype.cleanup=function(){this.glyphInfos=null,this.plan=null,this.shaper=null},t.prototype.getAvailableFeatures=function(t,e){var n=[];return this.GSUBProcessor&&(this.GSUBProcessor.selectScript(t,e),n.push.apply(n,u(this.GSUBProcessor.features))),this.GPOSProcessor&&(this.GPOSProcessor.selectScript(t,e),n.push.apply(n,u(this.GPOSProcessor.features))),n},t}(),Ko=function(){function t(e){f(this,t),this.font=e,this.unicodeLayoutEngine=null,this.kernProcessor=null,this.font.morx?this.engine=new Hi(this.font):(this.font.GSUB||this.font.GPOS)&&(this.engine=new Xo(this.font))}return t.prototype.layout=function(t,e,n,r,i){if("string"==typeof e&&(i=r,r=n,n=e,e=[]),"string"==typeof t){null==n&&(n=function(t){for(var e=t.length,n=0;n<e;){var r=t.charCodeAt(n++);if(55296<=r&&r<=56319&&n<e){var i=t.charCodeAt(n);56320<=i&&i<=57343&&(n++,r=((1023&r)<<10)+(1023&i)+65536)}var a=k.getScript(r);if("Common"!==a&&"Inherited"!==a&&"Unknown"!==a)return oi[a]}return oi.Unknown}(t));var a=this.font.glyphsForString(t)}else{if(null==n){var o=[],l=t,u=Array.isArray(l),c=0;for(l=u?l:s(l);;){var h;if(u){if(c>=l.length)break;h=l[c++]}else{if((c=l.next()).done)break;h=c.value}var f=h;o.push.apply(o,f.codePoints)}n=function(t){for(var e=0;e<t.length;e++){var n=t[e],r=k.getScript(n);if("Common"!==r&&"Inherited"!==r&&"Unknown"!==r)return oi[r]}return oi.Unknown}(o)}a=t}var d=new yi(a,e,n,r,i);return 0===a.length?(d.positions=[],d):(this.engine&&this.engine.setup&&this.engine.setup(d),this.substitute(d),this.position(d),this.hideDefaultIgnorables(d.glyphs,d.positions),this.engine&&this.engine.cleanup&&this.engine.cleanup(),d)},t.prototype.substitute=function(t){this.engine&&this.engine.substitute&&this.engine.substitute(t)},t.prototype.position=function(t){t.positions=t.glyphs.map(function(t){return new function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;f(this,t),this.xAdvance=e,this.yAdvance=n,this.xOffset=r,this.yOffset=i}(t.advanceWidth)});var e=null;this.engine&&this.engine.position&&(e=this.engine.position(t)),e||this.engine&&!this.engine.fallbackPosition||(this.unicodeLayoutEngine||(this.unicodeLayoutEngine=new ii(this.font)),this.unicodeLayoutEngine.positionGlyphs(t.glyphs,t.positions)),e&&e.kern||!1===t.features.kern||!this.font.kern||(this.kernProcessor||(this.kernProcessor=new ri(this.font)),this.kernProcessor.process(t.glyphs,t.positions),t.features.kern=!0)},t.prototype.hideDefaultIgnorables=function(t,e){for(var n=this.font.glyphForCodePoint(32),r=0;r<t.length;r++)this.isDefaultIgnorable(t[r].codePoints[0])&&(t[r]=n,e[r].xAdvance=0,e[r].yAdvance=0)},t.prototype.isDefaultIgnorable=function(t){var e=t>>16;if(0===e)switch(t>>8){case 0:return 173===t;case 3:return 847===t;case 6:return 1564===t;case 23:return 6068<=t&&t<=6069;case 24:return 6155<=t&&t<=6158;case 32:return 8203<=t&&t<=8207||8234<=t&&t<=8238||8288<=t&&t<=8303;case 254:return 65024<=t&&t<=65039||65279===t;case 255:return 65520<=t&&t<=65528;default:return!1}else switch(e){case 1:return 113824<=t&&t<=113827||119155<=t&&t<=119162;case 14:return 917504<=t&&t<=921599;default:return!1}},t.prototype.getAvailableFeatures=function(t,e){var n=[];return this.engine&&n.push.apply(n,this.engine.getAvailableFeatures(t,e)),this.font.kern&&-1===n.indexOf("kern")&&n.push("kern"),n},t.prototype.stringsForGlyph=function(t){var e=new _,n=this.font._cmapProcessor.codePointsForGlyph(t),r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a;e.add(x(o))}if(this.engine&&this.engine.stringsForGlyph){var l=this.engine.stringsForGlyph(t),u=Array.isArray(l),c=0;for(l=u?l:s(l);;){var h;if(u){if(c>=l.length)break;h=l[c++]}else{if((c=l.next()).done)break;h=c.value}var f=h;e.add(f)}}return S(e)},t}(),Jo={moveTo:"M",lineTo:"L",quadraticCurveTo:"Q",bezierCurveTo:"C",closePath:"Z"},Qo=function(){function t(){f(this,t),this.commands=[],this._bbox=null,this._cbox=null}return t.prototype.toFunction=function(){var t=this.commands.map(function(t){return"  ctx."+t.command+"("+t.args.join(", ")+");"});return new Function("ctx",t.join("\n"))},t.prototype.toSVG=function(){return this.commands.map(function(t){var e=t.args.map(function(t){return Math.round(100*t)/100});return""+Jo[t.command]+e.join(" ")}).join("")},t.prototype.mapPoints=function(e){var n=new t,r=this.commands,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}for(var l=o,u=[],c=0;c<l.args.length;c+=2){var h=e(l.args[c],l.args[c+1]),f=h[0],d=h[1];u.push(f,d)}n[l.command].apply(n,u)}return n},t.prototype.transform=function(t,e,n,r,i,a){return this.mapPoints(function(o,s){return[o=t*o+n*s+i,s=e*o+r*s+a]})},t.prototype.translate=function(t,e){return this.transform(1,0,0,1,t,e)},t.prototype.rotate=function(t){var e=Math.cos(t),n=Math.sin(t);return this.transform(e,n,-n,e,0,0)},t.prototype.scale=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;return this.transform(t,0,0,e,0,0)},d(t,[{key:"cbox",get:function(){if(!this._cbox){var t=new ai,e=this.commands,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}for(var a=i,o=0;o<a.args.length;o+=2)t.addPoint(a.args[o],a.args[o+1])}this._cbox=l(t)}return this._cbox}},{key:"bbox",get:function(){if(this._bbox)return this._bbox;var t=new ai,e=0,n=0,r=function(t){return Math.pow(1-t,3)*k[E]+3*Math.pow(1-t,2)*t*C[E]+3*(1-t)*Math.pow(t,2)*A[E]+Math.pow(t,3)*P[E]},i=this.commands,a=Array.isArray(i),o=0;for(i=a?i:s(i);;){var u;if(a){if(o>=i.length)break;u=i[o++]}else{if((o=i.next()).done)break;u=o.value}var c=u;switch(c.command){case"moveTo":case"lineTo":var h=c.args,f=h[0],d=h[1];t.addPoint(f,d),e=f,n=d;break;case"quadraticCurveTo":case"bezierCurveTo":if("quadraticCurveTo"===c.command)var p=c.args,g=p[0],y=p[1],v=e+2/3*(g-e),b=n+2/3*(y-n),m=(S=p[2])+2/3*(g-S),w=(_=p[3])+2/3*(y-_);else var x=c.args,S=(v=x[0],b=x[1],m=x[2],w=x[3],x[4]),_=x[5];t.addPoint(S,_);for(var k=[e,n],C=[v,b],A=[m,w],P=[S,_],E=0;E<=1;E++){var I=6*k[E]-12*C[E]+6*A[E],T=-3*k[E]+9*C[E]-9*A[E]+3*P[E];if(c=3*C[E]-3*k[E],0!==T){var O=Math.pow(I,2)-4*c*T;if(!(O<0)){var L=(-I+Math.sqrt(O))/(2*T);0<L&&L<1&&(0===E?t.addPoint(r(L),t.maxY):1===E&&t.addPoint(t.maxX,r(L)));var B=(-I-Math.sqrt(O))/(2*T);0<B&&B<1&&(0===E?t.addPoint(r(B),t.maxY):1===E&&t.addPoint(t.maxX,r(B)))}}else{if(0===I)continue;var M=-c/I;0<M&&M<1&&(0===E?t.addPoint(r(M),t.maxY):1===E&&t.addPoint(t.maxX,r(M)))}}e=S,n=_}}return this._bbox=l(t)}}]),t}(),$o=["moveTo","lineTo","quadraticCurveTo","bezierCurveTo","closePath"],ts=function(){var t=$o[es];Qo.prototype[t]=function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return this._bbox=this._cbox=null,this.commands.push({command:t,args:n}),this}},es=0;es<$o.length;es++)ts();var ns,rs=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function is(t,e,n,r,i){var a={};return Object.keys(r).forEach(function(t){a[t]=r[t]}),a.enumerable=!!a.enumerable,a.configurable=!!a.configurable,("value"in a||a.initializer)&&(a.writable=!0),a=n.slice().reverse().reduce(function(n,r){return r(t,e,n)||n},a),i&&void 0!==a.initializer&&(a.value=a.initializer?a.initializer.call(i):void 0,a.initializer=void 0),void 0===a.initializer&&(Object.defineProperty(t,e,a),a=null),a}var as,os=(is((ns=function(){function t(e,n,r){f(this,t),this.id=e,this.codePoints=n,this._font=r,this.isMark=this.codePoints.every(k.isMark),this.isLigature=this.codePoints.length>1}return t.prototype._getPath=function(){return new Qo},t.prototype._getCBox=function(){return this.path.cbox},t.prototype._getBBox=function(){return this.path.bbox},t.prototype._getTableMetrics=function(t){if(this.id<t.metrics.length)return t.metrics.get(this.id);var e=t.metrics.get(t.metrics.length-1);return{advance:e?e.advance:0,bearing:t.bearings.get(this.id-t.metrics.length)||0}},t.prototype._getMetrics=function(t){if(this._metrics)return this._metrics;var e=this._getTableMetrics(this._font.hmtx),n=e.advance,r=e.bearing;if(this._font.vmtx)var i=this._getTableMetrics(this._font.vmtx),a=i.advance,o=i.bearing;else{var s;if(null==t&&(t=this.cbox),(s=this._font["OS/2"])&&s.version>0)a=Math.abs(s.typoAscender-s.typoDescender),o=s.typoAscender-t.maxY;else{var l=this._font.hhea;a=Math.abs(l.ascent-l.descent),o=l.ascent-t.maxY}}return this._font._variationProcessor&&this._font.HVAR&&(n+=this._font._variationProcessor.getAdvanceAdjustment(this.id,this._font.HVAR)),this._metrics={advanceWidth:n,advanceHeight:a,leftBearing:r,topBearing:o}},t.prototype.getScaledPath=function(t){var e=1/this._font.unitsPerEm*t;return this.path.scale(e)},t.prototype._getName=function(){var t=this._font.post;if(!t)return null;switch(t.version){case 1:return rs[this.id];case 2:var e=t.glyphNameIndex[this.id];return e<rs.length?rs[e]:t.names[e-rs.length];case 2.5:return rs[this.id+t.offsets[this.id]];case 4:return String.fromCharCode(t.map[this.id])}},t.prototype.render=function(t,e){t.save();var n=1/this._font.head.unitsPerEm*e;t.scale(n,n),this.path.toFunction()(t),t.fill(),t.restore()},d(t,[{key:"cbox",get:function(){return this._getCBox()}},{key:"bbox",get:function(){return this._getBBox()}},{key:"path",get:function(){return this._getPath()}},{key:"advanceWidth",get:function(){return this._getMetrics().advanceWidth}},{key:"advanceHeight",get:function(){return this._getMetrics().advanceHeight}},{key:"ligatureCaretPositions",get:function(){}},{key:"name",get:function(){return this._getName()}}]),t}()).prototype,"cbox",[B],o(ns.prototype,"cbox"),ns.prototype),is(ns.prototype,"bbox",[B],o(ns.prototype,"bbox"),ns.prototype),is(ns.prototype,"path",[B],o(ns.prototype,"path"),ns.prototype),is(ns.prototype,"advanceWidth",[B],o(ns.prototype,"advanceWidth"),ns.prototype),is(ns.prototype,"advanceHeight",[B],o(ns.prototype,"advanceHeight"),ns.prototype),is(ns.prototype,"name",[B],o(ns.prototype,"name"),ns.prototype),ns),ss=new a.Struct({numberOfContours:a.int16,xMin:a.int16,yMin:a.int16,xMax:a.int16,yMax:a.int16}),ls=function(){function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;f(this,t),this.onCurve=e,this.endContour=n,this.x=r,this.y=i}return t.prototype.copy=function(){return new t(this.onCurve,this.endContour,this.x,this.y)},t}(),us=function t(e,n,r){f(this,t),this.glyphID=e,this.dx=n,this.dy=r,this.pos=0,this.scaleX=this.scaleY=1,this.scale01=this.scale10=0},cs=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype._getCBox=function(t){if(this._font._variationProcessor&&!t)return this.path.cbox;var e=this._font._getTableStream("glyf");e.pos+=this._font.loca.offsets[this.id];var n=ss.decode(e),r=new ai(n.xMin,n.yMin,n.xMax,n.yMax);return l(r)},e.prototype._parseGlyphCoord=function(t,e,n,r){if(n){var i=t.readUInt8();r||(i=-i),i+=e}else if(r)i=e;else i=e+t.readInt16BE();return i},e.prototype._decode=function(){var t=this._font.loca.offsets[this.id];if(t===this._font.loca.offsets[this.id+1])return null;var e=this._font._getTableStream("glyf");e.pos+=t;var n=e.pos,r=ss.decode(e);return r.numberOfContours>0?this._decodeSimple(r,e):r.numberOfContours<0&&this._decodeComposite(r,e,n),r},e.prototype._decodeSimple=function(t,e){t.points=[];var n=new a.Array(a.uint16,t.numberOfContours).decode(e);t.instructions=new a.Array(a.uint8,a.uint16).decode(e);for(var r=[],i=n[n.length-1]+1;r.length<i;){var o=e.readUInt8();if(r.push(o),8&o)for(var s=e.readUInt8(),l=0;l<s;l++)r.push(o)}for(var u=0;u<r.length;u++){o=r[u];var c=new ls(!!(1&o),n.indexOf(u)>=0,0,0);t.points.push(c)}var h=0;for(u=0;u<r.length;u++){o=r[u];t.points[u].x=h=this._parseGlyphCoord(e,h,2&o,16&o)}var f=0;for(u=0;u<r.length;u++){o=r[u];t.points[u].y=f=this._parseGlyphCoord(e,f,4&o,32&o)}if(this._font._variationProcessor){var d=t.points.slice();d.push.apply(d,this._getPhantomPoints(t)),this._font._variationProcessor.transformPoints(this.id,d),t.phantomPoints=d.slice(-4)}},e.prototype._decodeComposite=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;t.components=[];for(var r=!1,i=32;32&i;){i=e.readUInt16BE();var a=e.pos-n,o=e.readUInt16BE();if(r||(r=0!=(256&i)),1&i)var s=e.readInt16BE(),l=e.readInt16BE();else s=e.readInt8(),l=e.readInt8();(h=new us(o,s,l)).pos=a,8&i?h.scaleX=h.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824:64&i?(h.scaleX=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,h.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824):128&i&&(h.scaleX=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,h.scale01=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,h.scale10=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,h.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824),t.components.push(h)}if(this._font._variationProcessor){for(var u=[],c=0;c<t.components.length;c++){var h=t.components[c];u.push(new ls(!0,!0,h.dx,h.dy))}u.push.apply(u,this._getPhantomPoints(t)),this._font._variationProcessor.transformPoints(this.id,u),t.phantomPoints=u.splice(-4,4);for(var f=0;f<u.length;f++){var d=u[f];t.components[f].dx=d.x,t.components[f].dy=d.y}}return r},e.prototype._getPhantomPoints=function(t){var e=this._getCBox(!0);null==this._metrics&&(this._metrics=os.prototype._getMetrics.call(this,e));var n=this._metrics,r=n.advanceWidth,i=n.advanceHeight,a=n.leftBearing,o=n.topBearing;return[new ls(!1,!0,t.xMin-a,0),new ls(!1,!0,t.xMin-a+r,0),new ls(!1,!0,0,t.yMax+o),new ls(!1,!0,0,t.yMax+o+i)]},e.prototype._getContours=function(){var t=this._decode();if(!t)return[];var e=[];if(t.numberOfContours<0){var n=t.components,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}for(var o=a,l=this._font.getGlyph(o.glyphID)._getContours(),u=0;u<l.length;u++)for(var c=l[u],h=0;h<c.length;h++){var f=c[h],d=f.x*o.scaleX+f.y*o.scale01+o.dx,p=f.y*o.scaleY+f.x*o.scale10+o.dy;e.push(new ls(f.onCurve,f.endContour,d,p))}}}else e=t.points||[];t.phantomPoints&&!this._font.directory.tables.HVAR&&(this._metrics.advanceWidth=t.phantomPoints[1].x-t.phantomPoints[0].x,this._metrics.advanceHeight=t.phantomPoints[3].y-t.phantomPoints[2].y,this._metrics.leftBearing=t.xMin-t.phantomPoints[0].x,this._metrics.topBearing=t.phantomPoints[2].y-t.yMax);for(var g=[],y=[],v=0;v<e.length;v++){var b=e[v];y.push(b),b.endContour&&(g.push(y),y=[])}return g},e.prototype._getMetrics=function(){if(this._metrics)return this._metrics;var e=this._getCBox(!0);return t.prototype._getMetrics.call(this,e),this._font._variationProcessor&&!this._font.HVAR&&this.path,this._metrics},e.prototype._getPath=function(){for(var t=this._getContours(),e=new Qo,n=0;n<t.length;n++){var r=t[n],i=r[0],a=r[r.length-1],o=0;if(i.onCurve){var s=null;o=1}else s=i=a.onCurve?a:new ls(!1,!1,(i.x+a.x)/2,(i.y+a.y)/2);e.moveTo(i.x,i.y);for(var l=o;l<r.length;l++){var u=r[l],c=0===l?i:r[l-1];if(c.onCurve&&u.onCurve)e.lineTo(u.x,u.y);else if(c.onCurve&&!u.onCurve)s=u;else if(c.onCurve||u.onCurve){if(c.onCurve||!u.onCurve)throw new Error("Unknown TTF path state");e.quadraticCurveTo(s.x,s.y,u.x,u.y);s=null}else{var h=(c.x+u.x)/2,f=(c.y+u.y)/2;e.quadraticCurveTo(c.x,c.y,h,f);var s=u}}s&&e.quadraticCurveTo(s.x,s.y,i.x,i.y),e.closePath()}return e},e}(os),hs=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype._getName=function(){return this._font.CFF2?t.prototype._getName.call(this):this._font["CFF "].getGlyphName(this.id)},e.prototype.bias=function(t){return t.length<1240?107:t.length<33900?1131:32768},e.prototype._getPath=function(){var t=this._font.stream,e=(t.pos,this._font.CFF2||this._font["CFF "]),n=e.topDict.CharStrings[this.id],r=n.offset+n.length;t.pos=n.offset;var i=new Qo,a=[],o=[],s=null,l=0,u=0,c=0,h=void 0,f=void 0,d=!1;this._usedGsubrs=h={},this._usedSubrs=f={};var p=e.globalSubrIndex||[],g=this.bias(p),y=e.privateDictForGlyph(this.id),v=y.Subrs||[],b=this.bias(v),m=e.topDict.vstore&&e.topDict.vstore.itemVariationStore,w=y.vsindex,x=this._font._variationProcessor;function S(){null==s&&(s=a.shift()+y.nominalWidthX)}function _(){return a.length%2!=0&&S(),l+=a.length>>1,a.length=0}function k(t,e){d&&i.closePath(),i.moveTo(t,e),d=!0}return function n(){for(;t.pos<r;){var s=t.readUInt8();if(s<32)switch(s){case 1:case 3:case 18:case 23:_();break;case 4:a.length>1&&S(),c+=a.shift(),k(u,c);break;case 5:for(;a.length>=2;)u+=a.shift(),c+=a.shift(),i.lineTo(u,c);break;case 6:case 7:for(var y=6===s;a.length>=1;)y?u+=a.shift():c+=a.shift(),i.lineTo(u,c),y=!y;break;case 8:for(;a.length>0;){var C=u+a.shift(),A=c+a.shift(),P=C+a.shift(),E=A+a.shift();u=P+a.shift(),c=E+a.shift(),i.bezierCurveTo(C,A,P,E,u,c)}break;case 10:var I=a.pop()+b,T=v[I];if(T){f[I]=!0;var O=t.pos,L=r;t.pos=T.offset,r=T.offset+T.length,n(),t.pos=O,r=L}break;case 11:if(e.version>=2)break;return;case 14:if(e.version>=2)break;a.length>0&&S(),d&&(i.closePath(),d=!1);break;case 15:if(e.version<2)throw new Error("vsindex operator not supported in CFF v1");w=a.pop();break;case 16:if(e.version<2)throw new Error("blend operator not supported in CFF v1");if(!x)throw new Error("blend operator in non-variation font");for(var B=x.getBlendVector(m,w),M=a.pop(),R=M*B.length,F=a.length-R,D=F-M,z=0;z<M;z++){for(var N=a[D+z],U=0;U<B.length;U++)N+=B[U]*a[F++];a[D+z]=N}for(;R--;)a.pop();break;case 19:case 20:_(),t.pos+=l+7>>3;break;case 21:a.length>2&&S(),u+=a.shift(),c+=a.shift(),k(u,c);break;case 22:a.length>1&&S(),k(u+=a.shift(),c);break;case 24:for(;a.length>=8;)C=u+a.shift(),A=c+a.shift(),P=C+a.shift(),E=A+a.shift(),u=P+a.shift(),c=E+a.shift(),i.bezierCurveTo(C,A,P,E,u,c);u+=a.shift(),c+=a.shift(),i.lineTo(u,c);break;case 25:for(;a.length>=8;)u+=a.shift(),c+=a.shift(),i.lineTo(u,c);C=u+a.shift(),A=c+a.shift(),P=C+a.shift(),E=A+a.shift(),u=P+a.shift(),c=E+a.shift(),i.bezierCurveTo(C,A,P,E,u,c);break;case 26:for(a.length%2&&(u+=a.shift());a.length>=4;)C=u,A=c+a.shift(),P=C+a.shift(),E=A+a.shift(),u=P,c=E+a.shift(),i.bezierCurveTo(C,A,P,E,u,c);break;case 27:for(a.length%2&&(c+=a.shift());a.length>=4;)C=u+a.shift(),A=c,P=C+a.shift(),E=A+a.shift(),u=P+a.shift(),c=E,i.bezierCurveTo(C,A,P,E,u,c);break;case 28:a.push(t.readInt16BE());break;case 29:I=a.pop()+g,(T=p[I])&&(h[I]=!0,O=t.pos,L=r,t.pos=T.offset,r=T.offset+T.length,n(),t.pos=O,r=L);break;case 30:case 31:for(y=31===s;a.length>=4;)y?(C=u+a.shift(),A=c,P=C+a.shift(),E=A+a.shift(),c=E+a.shift(),u=P+(1===a.length?a.shift():0)):(C=u,A=c+a.shift(),P=C+a.shift(),E=A+a.shift(),u=P+a.shift(),c=E+(1===a.length?a.shift():0)),i.bezierCurveTo(C,A,P,E,u,c),y=!y;break;case 12:switch(s=t.readUInt8()){case 3:var W=a.pop(),G=a.pop();a.push(W&&G?1:0);break;case 4:W=a.pop(),G=a.pop(),a.push(W||G?1:0);break;case 5:W=a.pop(),a.push(W?0:1);break;case 9:W=a.pop(),a.push(Math.abs(W));break;case 10:W=a.pop(),G=a.pop(),a.push(W+G);break;case 11:W=a.pop(),G=a.pop(),a.push(W-G);break;case 12:W=a.pop(),G=a.pop(),a.push(W/G);break;case 14:W=a.pop(),a.push(-W);break;case 15:W=a.pop(),G=a.pop(),a.push(W===G?1:0);break;case 18:a.pop();break;case 20:var V=a.pop(),j=a.pop();o[j]=V;break;case 21:j=a.pop(),a.push(o[j]||0);break;case 22:var H=a.pop(),q=a.pop(),Z=a.pop(),Y=a.pop();a.push(Z<=Y?H:q);break;case 23:a.push(Math.random());break;case 24:W=a.pop(),G=a.pop(),a.push(W*G);break;case 26:W=a.pop(),a.push(Math.sqrt(W));break;case 27:W=a.pop(),a.push(W,W);break;case 28:W=a.pop(),G=a.pop(),a.push(G,W);break;case 29:(j=a.pop())<0?j=0:j>a.length-1&&(j=a.length-1),a.push(a[j]);break;case 30:var X=a.pop(),K=a.pop();if(K>=0)for(;K>0;){for(var J=a[X-1],Q=X-2;Q>=0;Q--)a[Q+1]=a[Q];a[0]=J,K--}else for(;K<0;){J=a[0];for(var $=0;$<=X;$++)a[$]=a[$+1];a[X-1]=J,K++}break;case 34:C=u+a.shift(),A=c,P=C+a.shift(),E=A+a.shift();var tt=P+a.shift(),et=E,nt=tt+a.shift(),rt=et,it=nt+a.shift(),at=rt,ot=it+a.shift(),st=at;u=ot,c=st,i.bezierCurveTo(C,A,P,E,tt,et),i.bezierCurveTo(nt,rt,it,at,ot,st);break;case 35:for(var lt=[],ut=0;ut<=5;ut++)u+=a.shift(),c+=a.shift(),lt.push(u,c);i.bezierCurveTo.apply(i,lt.slice(0,6)),i.bezierCurveTo.apply(i,lt.slice(6)),a.shift();break;case 36:C=u+a.shift(),A=c+a.shift(),P=C+a.shift(),rt=et=E=A+a.shift(),it=(nt=(tt=P+a.shift())+a.shift())+a.shift(),at=rt+a.shift(),ot=it+a.shift(),u=ot,c=st=at,i.bezierCurveTo(C,A,P,E,tt,et),i.bezierCurveTo(nt,rt,it,at,ot,st);break;case 37:var ct=u,ht=c;lt=[];for(var ft=0;ft<=4;ft++)u+=a.shift(),c+=a.shift(),lt.push(u,c);Math.abs(u-ct)>Math.abs(c-ht)?(u+=a.shift(),c=ht):(u=ct,c+=a.shift()),lt.push(u,c),i.bezierCurveTo.apply(i,lt.slice(0,6)),i.bezierCurveTo.apply(i,lt.slice(6));break;default:throw new Error("Unknown op: 12 "+s)}break;default:throw new Error("Unknown op: "+s)}else if(s<247)a.push(s-139);else if(s<251){var dt=t.readUInt8();a.push(256*(s-247)+dt+108)}else s<255?(dt=t.readUInt8(),a.push(256*-(s-251)-dt-108)):a.push(t.readInt32BE()/65536)}}(),d&&i.closePath(),i},e}(os),fs=new a.Struct({originX:a.uint16,originY:a.uint16,type:new a.String(4),data:new a.Buffer(function(t){return t.parent.buflen-t._currentOffset})}),ds=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype.getImageForSize=function(t){for(var e=0;e<this._font.sbix.imageTables.length;e++){var n=this._font.sbix.imageTables[e];if(n.ppem>=t)break}var r=n.imageOffsets,i=r[this.id],a=r[this.id+1];return i===a?null:(this._font.stream.pos=i,fs.decode(this._font.stream,{buflen:a-i}))},e.prototype.render=function(e,n){var r=this.getImageForSize(n);if(null!=r){var i=n/this._font.unitsPerEm;e.image(r.data,{height:n,x:r.originX,y:(this.bbox.minY-r.originY)*i})}this._font.sbix.flags.renderOutlines&&t.prototype.render.call(this,e,n)},e}(cs),ps=function t(e,n){f(this,t),this.glyph=e,this.color=n},gs=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype._getBBox=function(){for(var t=new ai,e=0;e<this.layers.length;e++){var n=this.layers[e].glyph.bbox;t.addPoint(n.minX,n.minY),t.addPoint(n.maxX,n.maxY)}return t},e.prototype.render=function(t,e){var n=this.layers,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=o.glyph,u=o.color;t.fillColor([u.red,u.green,u.blue],u.alpha/255*100),l.render(t,e)}},d(e,[{key:"layers",get:function(){for(var t=this._font.CPAL,e=this._font.COLR,n=0,r=e.baseGlyphRecord.length-1;n<=r;){var i=n+r>>1,a=e.baseGlyphRecord[i];if(this.id<a.gid)r=i-1;else{if(!(this.id>a.gid)){var o=a;break}n=i+1}}if(null==o){var s=this._font._getBaseGlyph(this.id);return[new ps(s,c={red:0,green:0,blue:0,alpha:255})]}for(var l=[],u=o.firstLayerIndex;u<o.firstLayerIndex+o.numLayers;u++){a=e.layerRecords[u];var c=t.colorRecords[a.paletteIndex];s=this._font._getBaseGlyph(a.gid);l.push(new ps(s,c))}return l}}]),e}(os),ys=function(){function t(e,n){f(this,t),this.font=e,this.normalizedCoords=this.normalizeCoords(n),this.blendVectors=new p}return t.prototype.normalizeCoords=function(t){for(var e=[],n=0;n<this.font.fvar.axis.length;n++){var r=this.font.fvar.axis[n];t[n]<r.defaultValue?e.push((t[n]-r.defaultValue+P)/(r.defaultValue-r.minValue+P)):e.push((t[n]-r.defaultValue+P)/(r.maxValue-r.defaultValue+P))}if(this.font.avar)for(n=0;n<this.font.avar.segment.length;n++)for(var i=this.font.avar.segment[n],a=0;a<i.correspondence.length;a++){var o=i.correspondence[a];if(a>=1&&e[n]<o.fromCoord){var s=i.correspondence[a-1];e[n]=((e[n]-s.fromCoord)*(o.toCoord-s.toCoord)+P)/(o.fromCoord-s.fromCoord+P)+s.toCoord;break}}return e},t.prototype.transformPoints=function(t,e){if(this.font.fvar&&this.font.gvar){var n=this.font.gvar;if(!(t>=n.glyphCount)){var r=n.offsets[t];if(r!==n.offsets[t+1]){var i=this.font.stream;if(i.pos=r,!(i.pos>=i.length)){var a=i.readUInt16BE(),o=r+i.readUInt16BE();if(32768&a){var s=i.pos;i.pos=o;var l=this.decodePoints();o=i.pos,i.pos=s}var u=e.map(function(t){return t.copy()});a&=4095;for(var c=0;c<a;c++){var h=i.readUInt16BE(),f=i.readUInt16BE();if(32768&f)for(var d=[],p=0;p<n.axisCount;p++)d.push(i.readInt16BE()/16384);else{if((4095&f)>=n.globalCoordCount)throw new Error("Invalid gvar table");d=n.globalCoords[4095&f]}if(16384&f){for(var g=[],y=0;y<n.axisCount;y++)g.push(i.readInt16BE()/16384);for(var v=[],b=0;b<n.axisCount;b++)v.push(i.readInt16BE()/16384)}var m=this.tupleFactor(f,d,g,v);if(0!==m){s=i.pos;if(i.pos=o,8192&f)var w=this.decodePoints();else w=l;var x=0===w.length?e.length:w.length,S=this.decodeDeltas(x),_=this.decodeDeltas(x);if(0===w.length)for(var k=0;k<e.length;k++){var C=e[k];C.x+=Math.round(S[k]*m),C.y+=Math.round(_[k]*m)}else{for(var A=u.map(function(t){return t.copy()}),P=e.map(function(){return!1}),E=0;E<w.length;E++){var I=w[E];if(I<e.length){var T=A[I];P[I]=!0,T.x+=Math.round(S[E]*m),T.y+=Math.round(_[E]*m)}}this.interpolateMissingDeltas(A,u,P);for(var O=0;O<e.length;O++){var L=A[O].x-u[O].x,B=A[O].y-u[O].y;e[O].x+=L,e[O].y+=B}}o+=h,i.pos=s}else o+=h}}}}}},t.prototype.decodePoints=function(){var t=this.font.stream,e=t.readUInt8();128&e&&(e=(127&e)<<8|t.readUInt8());for(var n=new Uint16Array(e),r=0,i=0;r<e;)for(var a=t.readUInt8(),o=1+(127&a),s=128&a?t.readUInt16:t.readUInt8,l=0;l<o&&r<e;l++)i+=s.call(t),n[r++]=i;return n},t.prototype.decodeDeltas=function(t){for(var e=this.font.stream,n=0,r=new Int16Array(t);n<t;){var i=e.readUInt8(),a=1+(63&i);if(128&i)n+=a;else for(var o=64&i?e.readInt16BE:e.readInt8,s=0;s<a&&n<t;s++)r[n++]=o.call(e)}return r},t.prototype.tupleFactor=function(t,e,n,r){for(var i=this.normalizedCoords,a=this.font.gvar,o=1,s=0;s<a.axisCount;s++)if(0!==e[s]){if(0===i[s])return 0;if(0==(16384&t)){if(i[s]<Math.min(0,e[s])||i[s]>Math.max(0,e[s]))return 0;o=(o*i[s]+P)/(e[s]+P)}else{if(i[s]<n[s]||i[s]>r[s])return 0;o=i[s]<e[s]?o*(i[s]-n[s]+P)/(e[s]-n[s]+P):o*(r[s]-i[s]+P)/(r[s]-e[s]+P)}}return o},t.prototype.interpolateMissingDeltas=function(t,e,n){if(0!==t.length)for(var r=0;r<t.length;){for(var i=r,a=r,o=t[a];!o.endContour;)o=t[++a];for(;r<=a&&!n[r];)r++;if(!(r>a)){var s=r,l=r;for(r++;r<=a;)n[r]&&(this.deltaInterpolate(l+1,r-1,l,r,e,t),l=r),r++;l===s?this.deltaShift(i,a,l,e,t):(this.deltaInterpolate(l+1,a,l,s,e,t),s>0&&this.deltaInterpolate(i,s-1,l,s,e,t)),r=a+1}}},t.prototype.deltaInterpolate=function(t,e,n,r,i,a){if(!(t>e))for(var o=["x","y"],s=0;s<o.length;s++){var l=o[s];if(i[n][l]>i[r][l]){var u=n;n=r,r=u}var c=i[n][l],h=i[r][l],f=a[n][l],d=a[r][l];if(c!==h||f===d)for(var p=c===h?0:(d-f)/(h-c),g=t;g<=e;g++){var y=i[g][l];y<=c?y+=f-c:y>=h?y+=d-h:y=f+(y-c)*p,a[g][l]=y}}},t.prototype.deltaShift=function(t,e,n,r,i){var a=i[n].x-r[n].x,o=i[n].y-r[n].y;if(0!==a||0!==o)for(var s=t;s<=e;s++)s!==n&&(i[s].x+=a,i[s].y+=o)},t.prototype.getAdvanceAdjustment=function(t,e){var n=void 0,r=void 0;if(e.advanceWidthMapping){var i=t;i>=e.advanceWidthMapping.mapCount&&(i=e.advanceWidthMapping.mapCount-1);e.advanceWidthMapping.entryFormat;var a=e.advanceWidthMapping.mapData[i];n=a.outerIndex,r=a.innerIndex}else n=0,r=t;return this.getDelta(e.itemVariationStore,n,r)},t.prototype.getDelta=function(t,e,n){if(e>=t.itemVariationData.length)return 0;var r=t.itemVariationData[e];if(n>=r.deltaSets.length)return 0;for(var i=r.deltaSets[n],a=this.getBlendVector(t,e),o=0,s=0;s<r.regionIndexCount;s++)o+=i.deltas[s]*a[s];return o},t.prototype.getBlendVector=function(t,e){var n=t.itemVariationData[e];if(this.blendVectors.has(n))return this.blendVectors.get(n);for(var r=this.normalizedCoords,i=[],a=0;a<n.regionIndexCount;a++){for(var o=1,s=n.regionIndexes[a],l=t.variationRegionList.variationRegions[s],u=0;u<l.length;u++){var c=l[u];o*=c.startCoord>c.peakCoord||c.peakCoord>c.endCoord?1:c.startCoord<0&&c.endCoord>0&&0!==c.peakCoord?1:0===c.peakCoord?1:r[u]<c.startCoord||r[u]>c.endCoord?0:r[u]===c.peakCoord?1:r[u]<c.peakCoord?(r[u]-c.startCoord+P)/(c.peakCoord-c.startCoord+P):(c.endCoord-r[u]+P)/(c.endCoord-c.peakCoord+P)}i[a]=o}return this.blendVectors.set(n,i),i},t}(),vs=function(){function t(e){f(this,t),this.font=e,this.glyphs=[],this.mapping={},this.includeGlyph(0)}return t.prototype.includeGlyph=function(t){return"object"===(void 0===t?"undefined":c(t))&&(t=t.id),null==this.mapping[t]&&(this.glyphs.push(t),this.mapping[t]=this.glyphs.length-1),this.mapping[t]},t.prototype.encodeStream=function(){var t=this,e=new a.EncodeStream;return r.nextTick(function(){return t.encode(e),e.end()}),e},t}(),bs=function(){function t(){f(this,t)}return t.size=function(t){return t>=0&&t<=255?1:2},t.encode=function(t,e){e>=0&&e<=255?t.writeUInt8(e):t.writeInt16BE(e)},t}(),ms=new a.Struct({numberOfContours:a.int16,xMin:a.int16,yMin:a.int16,xMax:a.int16,yMax:a.int16,endPtsOfContours:new a.Array(a.uint16,"numberOfContours"),instructions:new a.Array(a.uint8,a.uint16),flags:new a.Array(a.uint8,0),xPoints:new a.Array(bs,0),yPoints:new a.Array(bs,0)}),ws=function(){function t(){f(this,t)}return t.prototype.encodeSimple=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=[],r=[],i=[],o=[],s=0,l=0,u=0,c=0,h=0,f=0;f<t.commands.length;f++){for(var d=t.commands[f],p=0;p<d.args.length;p+=2){var g=d.args[p],y=d.args[p+1],v=0;if("quadraticCurveTo"===d.command&&2===p){var b=t.commands[f+1];if(b&&"quadraticCurveTo"===b.command){var m=(l+b.args[0])/2,w=(u+b.args[1])/2;if(g===m&&y===w)continue}}"quadraticCurveTo"===d.command&&0===p||(v|=1),v=this._encodePoint(g,l,r,v,2,16),(v=this._encodePoint(y,u,i,v,4,32))===c&&s<255?(o[o.length-1]|=8,s++):(s>0&&(o.push(s),s=0),o.push(v),c=v),l=g,u=y,h++}"closePath"===d.command&&n.push(h-1)}t.commands.length>1&&"closePath"!==t.commands[t.commands.length-1].command&&n.push(h-1);var x=t.bbox,S={numberOfContours:n.length,xMin:x.minX,yMin:x.minY,xMax:x.maxX,yMax:x.maxY,endPtsOfContours:n,instructions:e,flags:o,xPoints:r,yPoints:i},_=ms.size(S),k=4-_%4,C=new a.EncodeStream(_+k);return ms.encode(C,S),0!==k&&C.fill(0,k),C.buffer},t.prototype._encodePoint=function(t,e,n,r,i,a){var o=t-e;return t===e?r|=a:(-255<=o&&o<=255&&(r|=i,o<0?o=-o:r|=a),n.push(o)),r},t}(),xs=function(t){function n(e){f(this,n);var r=g(this,t.call(this,e));return r.glyphEncoder=new ws,r}return y(n,t),n.prototype._addGlyph=function(t){var n=this.font.getGlyph(t),r=n._decode(),i=this.font.loca.offsets[t],a=this.font.loca.offsets[t+1],o=this.font._getTableStream("glyf");o.pos+=i;var l=o.readBuffer(a-i);if(r&&r.numberOfContours<0){l=new e(l);var u=r.components,c=Array.isArray(u),h=0;for(u=c?u:s(u);;){var f;if(c){if(h>=u.length)break;f=u[h++]}else{if((h=u.next()).done)break;f=h.value}var d=f;t=this.includeGlyph(d.glyphID),l.writeUInt16BE(t,d.pos)}}else r&&this.font._variationProcessor&&(l=this.glyphEncoder.encodeSimple(n.path,r.instructions));return this.glyf.push(l),this.loca.offsets.push(this.offset),this.hmtx.metrics.push({advance:n.advanceWidth,bearing:n._getMetrics().leftBearing}),this.offset+=l.length,this.glyf.length-1},n.prototype.encode=function(t){this.glyf=[],this.offset=0,this.loca={offsets:[]},this.hmtx={metrics:[],bearings:[]};for(var e=0;e<this.glyphs.length;)this._addGlyph(this.glyphs[e++]);var n=E(this.font.maxp);n.numGlyphs=this.glyf.length,this.loca.offsets.push(this.offset),Yr.loca.preEncode.call(this.loca);var r=E(this.font.head);r.indexToLocFormat=this.loca.version;var i=E(this.font.hhea);i.numberOfMetrics=this.hmtx.metrics.length,Jr.encode(t,{tables:{head:r,hhea:i,loca:this.loca,maxp:n,"cvt ":this.font["cvt "],prep:this.font.prep,glyf:this.glyf,hmtx:this.hmtx,fpgm:this.font.fpgm}})},n}(vs),Ss=function(t){function n(e){f(this,n);var r=g(this,t.call(this,e));if(r.cff=r.font["CFF "],!r.cff)throw new Error("Not a CFF Font");return r}return y(n,t),n.prototype.subsetCharstrings=function(){this.charstrings=[];var t={},e=this.glyphs,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;this.charstrings.push(this.cff.getCharString(a));var o=this.font.getGlyph(a);o.path;for(var l in o._usedGsubrs)t[l]=!0}this.gsubrs=this.subsetSubrs(this.cff.globalSubrIndex,t)},n.prototype.subsetSubrs=function(t,n){for(var r=[],i=0;i<t.length;i++){var a=t[i];n[i]?(this.cff.stream.pos=a.offset,r.push(this.cff.stream.readBuffer(a.length))):r.push(new e([11]))}return r},n.prototype.subsetFontdict=function(t){t.FDArray=[],t.FDSelect={version:0,fds:[]};var e={},n=[],r=this.glyphs,i=Array.isArray(r),a=0;for(r=i?r:s(r);;){var o;if(i){if(a>=r.length)break;o=r[a++]}else{if((a=r.next()).done)break;o=a.value}var l=o,u=this.cff.fdForGlyph(l);if(null!=u){e[u]||(t.FDArray.push(w({},this.cff.topDict.FDArray[u])),n.push({})),e[u]=!0,t.FDSelect.fds.push(t.FDArray.length-1);var c=this.font.getGlyph(l);c.path;for(var h in c._usedSubrs)n[n.length-1][h]=!0}}for(var f=0;f<t.FDArray.length;f++){var d=t.FDArray[f];delete d.FontName,d.Private&&d.Private.Subrs&&(d.Private=w({},d.Private),d.Private.Subrs=this.subsetSubrs(d.Private.Subrs,n[f]))}},n.prototype.createCIDFontdict=function(t){var e={},n=this.glyphs,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=this.font.getGlyph(o);l.path;for(var u in l._usedSubrs)e[u]=!0}var c=w({},this.cff.topDict.Private);return c.Subrs=this.subsetSubrs(this.cff.topDict.Private.Subrs,e),t.FDArray=[{Private:c}],t.FDSelect={version:3,nRanges:1,ranges:[{first:0,fd:0}],sentinel:this.charstrings.length}},n.prototype.addString=function(t){return t?(this.strings||(this.strings=[]),this.strings.push(t),bt.length+this.strings.length-1):null},n.prototype.encode=function(t){this.subsetCharstrings();var e={version:this.charstrings.length>255?2:1,ranges:[{first:1,nLeft:this.charstrings.length-2}]},n=w({},this.cff.topDict);n.Private=null,n.charset=e,n.Encoding=null,n.CharStrings=this.charstrings;for(var r=["version","Notice","Copyright","FullName","FamilyName","Weight","PostScript","BaseFontName","FontName"],i=0;i<r.length;i++){var a=r[i];n[a]=this.addString(this.cff.string(n[a]))}n.ROS=[this.addString("Adobe"),this.addString("Identity"),0],n.CIDCount=this.charstrings.length,this.cff.isCIDFont?this.subsetFontdict(n):this.createCIDFontdict(n);var o={version:1,hdrSize:this.cff.hdrSize,offSize:this.cff.length,header:this.cff.header,nameIndex:[this.cff.postscriptName],topDictIndex:[n],stringIndex:this.strings,globalSubrIndex:this.gsubrs};we.encode(t,o)},n}(vs);function _s(t,e,n,r,i){var a={};return Object.keys(r).forEach(function(t){a[t]=r[t]}),a.enumerable=!!a.enumerable,a.configurable=!!a.configurable,("value"in a||a.initializer)&&(a.writable=!0),a=n.slice().reverse().reduce(function(n,r){return r(t,e,n)||n},a),i&&void 0!==a.initializer&&(a.value=a.initializer?a.initializer.call(i):void 0,a.initializer=void 0),void 0===a.initializer&&(Object.defineProperty(t,e,a),a=null),a}var ks=(_s((as=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;for(var r in f(this,t),this.stream=e,this.variationCoords=n,this._directoryPos=this.stream.pos,this._tables={},this._glyphs={},this._decodeDirectory(),this.directory.tables){var i=this.directory.tables[r];Yr[r]&&i.length>0&&h(this,r,{get:this._getTable.bind(this,i)})}}return t.probe=function(t){var e=t.toString("ascii",0,4);return"true"===e||"OTTO"===e||e===String.fromCharCode(0,1,0,0)},t.prototype._getTable=function(t){if(!(t.tag in this._tables))try{this._tables[t.tag]=this._decodeTable(t)}catch(t){O.logErrors}return this._tables[t.tag]},t.prototype._getTableStream=function(t){var e=this.directory.tables[t];return e?(this.stream.pos=e.offset,this.stream):null},t.prototype._decodeDirectory=function(){return this.directory=Jr.decode(this.stream,{_startOffset:0})},t.prototype._decodeTable=function(t){var e=this.stream.pos,n=this._getTableStream(t.tag),r=Yr[t.tag].decode(n,this,t.length);return this.stream.pos=e,r},t.prototype.getName=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en",n=this.name.records[t];return n?n[e]:null},t.prototype.hasGlyphForCodePoint=function(t){return!!this._cmapProcessor.lookup(t)},t.prototype.glyphForCodePoint=function(t){return this.getGlyph(this._cmapProcessor.lookup(t),[t])},t.prototype.glyphsForString=function(t){for(var e=[],n=t.length,r=0,i=-1,a=-1;r<=n;){var o=0,s=0;if(r<n){if(55296<=(o=t.charCodeAt(r++))&&o<=56319&&r<n){var l=t.charCodeAt(r);56320<=l&&l<=57343&&(r++,o=((1023&o)<<10)+(1023&l)+65536)}s=65024<=o&&o<=65039||917760<=o&&o<=917999?1:0}else r++;0===a&&1===s?e.push(this.getGlyph(this._cmapProcessor.lookup(i,o),[i,o])):0===a&&0===s&&e.push(this.glyphForCodePoint(i)),i=o,a=s}return e},t.prototype.layout=function(t,e,n,r,i){return this._layoutEngine.layout(t,e,n,r,i)},t.prototype.stringsForGlyph=function(t){return this._layoutEngine.stringsForGlyph(t)},t.prototype.getAvailableFeatures=function(t,e){return this._layoutEngine.getAvailableFeatures(t,e)},t.prototype._getBaseGlyph=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this._glyphs[t]||(this.directory.tables.glyf?this._glyphs[t]=new cs(t,e,this):(this.directory.tables["CFF "]||this.directory.tables.CFF2)&&(this._glyphs[t]=new hs(t,e,this))),this._glyphs[t]||null},t.prototype.getGlyph=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this._glyphs[t]||(this.directory.tables.sbix?this._glyphs[t]=new ds(t,e,this):this.directory.tables.COLR&&this.directory.tables.CPAL?this._glyphs[t]=new gs(t,e,this):this._getBaseGlyph(t,e)),this._glyphs[t]||null},t.prototype.createSubset=function(){return this.directory.tables["CFF "]?new Ss(this):new xs(this)},t.prototype.getVariation=function(e){if(!this.directory.tables.fvar||!(this.directory.tables.gvar&&this.directory.tables.glyf||this.directory.tables.CFF2))throw new Error("Variations require a font with the fvar, gvar and glyf, or CFF2 tables.");if("string"==typeof e&&(e=this.namedVariations[e]),"object"!==(void 0===e?"undefined":c(e)))throw new Error("Variation settings must be either a variation name or settings object.");var n=this.fvar.axis.map(function(t,n){var r=t.axisTag.trim();return r in e?Math.max(t.minValue,Math.min(t.maxValue,e[r])):t.defaultValue}),r=new a.DecodeStream(this.stream.buffer);r.pos=this._directoryPos;var i=new t(r,n);return i._tables=this._tables,i},t.prototype.getFont=function(t){return this.getVariation(t)},d(t,[{key:"postscriptName",get:function(){var t=this.name.records.postscriptName;return t?t[u(t)[0]]:null}},{key:"fullName",get:function(){return this.getName("fullName")}},{key:"familyName",get:function(){return this.getName("fontFamily")}},{key:"subfamilyName",get:function(){return this.getName("fontSubfamily")}},{key:"copyright",get:function(){return this.getName("copyright")}},{key:"version",get:function(){return this.getName("version")}},{key:"ascent",get:function(){return this.hhea.ascent}},{key:"descent",get:function(){return this.hhea.descent}},{key:"lineGap",get:function(){return this.hhea.lineGap}},{key:"underlinePosition",get:function(){return this.post.underlinePosition}},{key:"underlineThickness",get:function(){return this.post.underlineThickness}},{key:"italicAngle",get:function(){return this.post.italicAngle}},{key:"capHeight",get:function(){var t=this["OS/2"];return t?t.capHeight:this.ascent}},{key:"xHeight",get:function(){var t=this["OS/2"];return t?t.xHeight:0}},{key:"numGlyphs",get:function(){return this.maxp.numGlyphs}},{key:"unitsPerEm",get:function(){return this.head.unitsPerEm}},{key:"bbox",get:function(){return l(new ai(this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax))}},{key:"_cmapProcessor",get:function(){return new ni(this.cmap)}},{key:"characterSet",get:function(){return this._cmapProcessor.getCharacterSet()}},{key:"_layoutEngine",get:function(){return new Ko(this)}},{key:"availableFeatures",get:function(){return this._layoutEngine.getAvailableFeatures()}},{key:"variationAxes",get:function(){var t={};if(!this.fvar)return t;var e=this.fvar.axis,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;t[a.axisTag.trim()]={name:a.name.en,min:a.minValue,default:a.defaultValue,max:a.maxValue}}return t}},{key:"namedVariations",get:function(){var t={};if(!this.fvar)return t;var e=this.fvar.instance,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}for(var a=i,o={},l=0;l<this.fvar.axis.length;l++){o[this.fvar.axis[l].axisTag.trim()]=a.coord[l]}t[a.name.en]=o}return t}},{key:"_variationProcessor",get:function(){if(!this.fvar)return null;var t=this.variationCoords;return t||this.CFF2?(t||(t=this.fvar.axis.map(function(t){return t.defaultValue})),new ys(this,t)):null}}]),t}()).prototype,"bbox",[B],o(as.prototype,"bbox"),as.prototype),_s(as.prototype,"_cmapProcessor",[B],o(as.prototype,"_cmapProcessor"),as.prototype),_s(as.prototype,"characterSet",[B],o(as.prototype,"characterSet"),as.prototype),_s(as.prototype,"_layoutEngine",[B],o(as.prototype,"_layoutEngine"),as.prototype),_s(as.prototype,"variationAxes",[B],o(as.prototype,"variationAxes"),as.prototype),_s(as.prototype,"namedVariations",[B],o(as.prototype,"namedVariations"),as.prototype),_s(as.prototype,"_variationProcessor",[B],o(as.prototype,"_variationProcessor"),as.prototype),as),Cs=new a.Struct({tag:new a.String(4),offset:new a.Pointer(a.uint32,"void",{type:"global"}),compLength:a.uint32,length:a.uint32,origChecksum:a.uint32}),As=new a.Struct({tag:new a.String(4),flavor:a.uint32,length:a.uint32,numTables:a.uint16,reserved:new a.Reserved(a.uint16),totalSfntSize:a.uint32,majorVersion:a.uint16,minorVersion:a.uint16,metaOffset:a.uint32,metaLength:a.uint32,metaOrigLength:a.uint32,privOffset:a.uint32,privLength:a.uint32,tables:new a.Array(Cs,"numTables")});As.process=function(){var t={},e=this.tables,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var a=i;t[a.tag]=a}this.tables=t};var Ps=function(t){function n(){return f(this,n),g(this,t.apply(this,arguments))}return y(n,t),n.probe=function(t){return"wOFF"===t.toString("ascii",0,4)},n.prototype._decodeDirectory=function(){this.directory=As.decode(this.stream,{_startOffset:0})},n.prototype._getTableStream=function(t){var n=this.directory.tables[t];if(n){if(this.stream.pos=n.offset,n.compLength<n.length){this.stream.pos+=2;var r=new e(n.length),i=I(this.stream.readBuffer(n.compLength-2),r);return new a.DecodeStream(i)}return this.stream}return null},n}(ks),Es=function(t){function e(){return f(this,e),g(this,t.apply(this,arguments))}return y(e,t),e.prototype._decode=function(){return this._font._transformedGlyphs[this.id]},e.prototype._getCBox=function(){return this.path.bbox},e}(cs),Is={decode:function(t){for(var e=0,n=[0,1,2,3,4],r=0;r<n.length;r++){var i=t.readUInt8();if(3758096384&e)throw new Error("Overflow");if(e=e<<7|127&i,0==(128&i))return e}throw new Error("Bad base 128 number")}},Ts=["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"],Os=new a.Struct({flags:a.uint8,customTag:new a.Optional(new a.String(4),function(t){return 63==(63&t.flags)}),tag:function(t){return t.customTag||Ts[63&t.flags]},length:Is,transformVersion:function(t){return t.flags>>>6&3},transformed:function(t){return"glyf"===t.tag||"loca"===t.tag?0===t.transformVersion:0!==t.transformVersion},transformLength:new a.Optional(Is,function(t){return t.transformed})}),Ls=new a.Struct({tag:new a.String(4),flavor:a.uint32,length:a.uint32,numTables:a.uint16,reserved:new a.Reserved(a.uint16),totalSfntSize:a.uint32,totalCompressedSize:a.uint32,majorVersion:a.uint16,minorVersion:a.uint16,metaOffset:a.uint32,metaLength:a.uint32,metaOrigLength:a.uint32,privOffset:a.uint32,privLength:a.uint32,tables:new a.Array(Os,"numTables")});Ls.process=function(){for(var t={},e=0;e<this.tables.length;e++){var n=this.tables[e];t[n.tag]=n}return this.tables=t};var Bs=function(t){function n(){return f(this,n),g(this,t.apply(this,arguments))}return y(n,t),n.probe=function(t){return"wOF2"===t.toString("ascii",0,4)},n.prototype._decodeDirectory=function(){this.directory=Ls.decode(this.stream),this._dataPos=this.stream.pos},n.prototype._decompress=function(){if(!this._decompressed){this.stream.pos=this._dataPos;var t=this.stream.readBuffer(this.directory.totalCompressedSize),n=0;for(var r in this.directory.tables){var i=this.directory.tables[r];i.offset=n,n+=null!=i.transformLength?i.transformLength:i.length}var o=T(t,n);if(!o)throw new Error("Error decoding compressed data in WOFF2");this.stream=new a.DecodeStream(new e(o)),this._decompressed=!0}},n.prototype._decodeTable=function(e){return this._decompress(),t.prototype._decodeTable.call(this,e)},n.prototype._getBaseGlyph=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this._glyphs[e])return this.directory.tables.glyf&&this.directory.tables.glyf.transformed?(this._transformedGlyphs||this._transformGlyfTable(),this._glyphs[e]=new Es(e,n,this)):t.prototype._getBaseGlyph.call(this,e,n)},n.prototype._transformGlyfTable=function(){this._decompress(),this.stream.pos=this.directory.tables.glyf.offset;for(var t=GlyfTable.decode(this.stream),e=[],n=0;n<t.numGlyphs;n++){var r={},i=t.nContours.readInt16BE();if(r.numberOfContours=i,i>0){for(var a=[],o=0,s=0;s<i;s++){o+=Ns(t.nPoints),a.push(o)}r.points=Ws(t.flags,t.glyphs,o);for(var l=0;l<i;l++)r.points[a[l]-1].endContour=!0;Ns(t.glyphs)}else if(i<0){if(cs.prototype._decodeComposite.call({_font:this},r,t.composites))Ns(t.glyphs)}e.push(r)}this._transformedGlyphs=e},n}(ks),Ms=function(){function t(e){f(this,t),this.length=e,this._buf=new a.Buffer(e)}return t.prototype.decode=function(t,e){return new a.DecodeStream(this._buf.decode(t,e))},t}(),GlyfTable=new a.Struct({version:a.uint32,numGlyphs:a.uint16,indexFormat:a.uint16,nContourStreamSize:a.uint32,nPointsStreamSize:a.uint32,flagStreamSize:a.uint32,glyphStreamSize:a.uint32,compositeStreamSize:a.uint32,bboxStreamSize:a.uint32,instructionStreamSize:a.uint32,nContours:new Ms("nContourStreamSize"),nPoints:new Ms("nPointsStreamSize"),flags:new Ms("flagStreamSize"),glyphs:new Ms("glyphStreamSize"),composites:new Ms("compositeStreamSize"),bboxes:new Ms("bboxStreamSize"),instructions:new Ms("instructionStreamSize")}),Rs=253,Fs=254,Ds=255,zs=253;function Ns(t){var e=t.readUInt8();return e===Rs?t.readUInt16BE():e===Ds?t.readUInt8()+zs:e===Fs?t.readUInt8()+2*zs:e}function Us(t,e){return 1&t?e:-e}function Ws(t,e,n){for(var r=void 0,i=r=0,a=[],o=0;o<n;o++){var s=0,l=0,u=t.readUInt8(),c=!(u>>7);if((u&=127)<10)s=0,l=Us(u,((14&u)<<7)+e.readUInt8());else if(u<20)s=Us(u,((u-10&14)<<7)+e.readUInt8()),l=0;else if(u<84){s=Us(u,1+(48&(h=u-20))+((f=e.readUInt8())>>4)),l=Us(u>>1,1+((12&h)<<2)+(15&f))}else if(u<120){var h;s=Us(u,1+((h=u-84)/12<<8)+e.readUInt8()),l=Us(u>>1,1+(h%12>>2<<8)+e.readUInt8())}else if(u<124){var f=e.readUInt8(),d=e.readUInt8();s=Us(u,(f<<4)+(d>>4)),l=Us(u>>1,((15&d)<<8)+e.readUInt8())}else s=Us(u,e.readUInt16BE()),l=Us(u>>1,e.readUInt16BE());i+=s,r+=l,a.push(new ls(c,!1,i,r))}return a}var Gs=new a.VersionedStruct(a.uint32,{65536:{numFonts:a.uint32,offsets:new a.Array(a.uint32,"numFonts")},131072:{numFonts:a.uint32,offsets:new a.Array(a.uint32,"numFonts"),dsigTag:a.uint32,dsigLength:a.uint32,dsigOffset:a.uint32}}),Vs=function(){function t(e){if(f(this,t),this.stream=e,"ttcf"!==e.readString(4))throw new Error("Not a TrueType collection");this.header=Gs.decode(e)}return t.probe=function(t){return"ttcf"===t.toString("ascii",0,4)},t.prototype.getFont=function(t){var e=this.header.offsets,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var o=i,l=new a.DecodeStream(this.stream.buffer);l.pos=o;var u=new ks(l);if(u.postscriptName===t)return u}return null},d(t,[{key:"fonts",get:function(){var t=[],e=this.header.offsets,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var o=i,l=new a.DecodeStream(this.stream.buffer);l.pos=o,t.push(new ks(l))}return t}}]),t}(),js=new a.String(a.uint8),Hs=(new a.Struct({len:a.uint32,buf:new a.Buffer("len")}),new a.Struct({id:a.uint16,nameOffset:a.int16,attr:a.uint8,dataOffset:a.uint24,handle:a.uint32})),qs=new a.Struct({name:new a.String(4),maxTypeIndex:a.uint16,refList:new a.Pointer(a.uint16,new a.Array(Hs,function(t){return t.maxTypeIndex+1}),{type:"parent"})}),Zs=new a.Struct({length:a.uint16,types:new a.Array(qs,function(t){return t.length+1})}),Ys=new a.Struct({reserved:new a.Reserved(a.uint8,24),typeList:new a.Pointer(a.uint16,Zs),nameListOffset:new a.Pointer(a.uint16,"void")}),Xs=new a.Struct({dataOffset:a.uint32,map:new a.Pointer(a.uint32,Ys),dataLength:a.uint32,mapLength:a.uint32}),Ks=function(){function t(e){f(this,t),this.stream=e,this.header=Xs.decode(this.stream);var n=this.header.map.typeList.types,r=Array.isArray(n),i=0;for(n=r?n:s(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var o=a,l=o.refList,u=Array.isArray(l),c=0;for(l=u?l:s(l);;){var h;if(u){if(c>=l.length)break;h=l[c++]}else{if((c=l.next()).done)break;h=c.value}var d=h;d.nameOffset>=0?(this.stream.pos=d.nameOffset+this.header.map.nameListOffset,d.name=js.decode(this.stream)):d.name=null}"sfnt"===o.name&&(this.sfnt=o)}}return t.probe=function(t){var e=new a.DecodeStream(t);try{var n=Xs.decode(e)}catch(t){return!1}var r=n.map.typeList.types,i=Array.isArray(r),o=0;for(r=i?r:s(r);;){var l;if(i){if(o>=r.length)break;l=r[o++]}else{if((o=r.next()).done)break;l=o.value}if("sfnt"===l.name)return!0}return!1},t.prototype.getFont=function(t){if(!this.sfnt)return null;var e=this.sfnt.refList,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var o=i,l=this.header.dataOffset+o.dataOffset+4,u=new a.DecodeStream(this.stream.buffer.slice(l)),c=new ks(u);if(c.postscriptName===t)return c}return null},d(t,[{key:"fonts",get:function(){var t=[],e=this.sfnt.refList,n=Array.isArray(e),r=0;for(e=n?e:s(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if((r=e.next()).done)break;i=r.value}var o=i,l=this.header.dataOffset+o.dataOffset+4,u=new a.DecodeStream(this.stream.buffer.slice(l));t.push(new ks(u))}return t}}]),t}();O.registerFormat(ks),O.registerFormat(Ps),O.registerFormat(Bs),O.registerFormat(Vs),O.registerFormat(Ks),t.exports=O}).call(e,n(1).Buffer,n(11))},function(t,e,n){(function(){var t,r,i,a;for(t in e.EncodeStream=n(169),e.DecodeStream=n(51),e.Array=n(93),e.LazyArray=n(187),e.Bitfield=n(188),e.Boolean=n(189),e.Buffer=n(190),e.Enum=n(191),e.Optional=n(192),e.Reserved=n(193),e.String=n(194),e.Struct=n(94),e.VersionedStruct=n(195),i=n(22))r=i[t],e[t]=r;for(t in a=n(196))r=a[t],e[t]=r}).call(this)},function(t,e,n){(function(e){(function(){var r,i,a,o,s={}.hasOwnProperty;o=n(15),r=n(51);try{a=n(52)}catch(t){}i=function(t){var n;function i(t){null==t&&(t=65536),i.__super__.constructor.apply(this,arguments),this.buffer=new e(t),this.bufferOffset=0,this.pos=0}for(n in function(t,e){for(var n in e)s.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(i,t),e.prototype)"write"===n.slice(0,5)&&function(t){var e;e=+r.TYPES[t.replace(/write|[BL]E/g,"")],i.prototype[t]=function(n){return this.ensure(e),this.buffer[t](n,this.bufferOffset),this.bufferOffset+=e,this.pos+=e}}(n);return i.prototype._read=function(){},i.prototype.ensure=function(t){if(this.bufferOffset+t>this.buffer.length)return this.flush()},i.prototype.flush=function(){if(this.bufferOffset>0)return this.push(new e(this.buffer.slice(0,this.bufferOffset))),this.bufferOffset=0},i.prototype.writeBuffer=function(t){return this.flush(),this.push(t),this.pos+=t.length},i.prototype.writeString=function(t,n){var r,i,o,s,l;switch(null==n&&(n="ascii"),n){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.writeBuffer(new e(t,n));case"utf16be":for(o=s=0,l=(r=new e(t,"utf16le")).length-1;s<l;o=s+=2)i=r[o],r[o]=r[o+1],r[o+1]=i;return this.writeBuffer(r);default:if(a)return this.writeBuffer(a.encode(t,n));throw new Error("Install iconv-lite to enable additional string encodings.")}},i.prototype.writeUInt24BE=function(t){return this.ensure(3),this.buffer[this.bufferOffset++]=t>>>16&255,this.buffer[this.bufferOffset++]=t>>>8&255,this.buffer[this.bufferOffset++]=255&t,this.pos+=3},i.prototype.writeUInt24LE=function(t){return this.ensure(3),this.buffer[this.bufferOffset++]=255&t,this.buffer[this.bufferOffset++]=t>>>8&255,this.buffer[this.bufferOffset++]=t>>>16&255,this.pos+=3},i.prototype.writeInt24BE=function(t){return t>=0?this.writeUInt24BE(t):this.writeUInt24BE(t+16777215+1)},i.prototype.writeInt24LE=function(t){return t>=0?this.writeUInt24LE(t):this.writeUInt24LE(t+16777215+1)},i.prototype.fill=function(t,n){var r;return n<this.buffer.length?(this.ensure(n),this.buffer.fill(t,this.bufferOffset,this.bufferOffset+n),this.bufferOffset+=n,this.pos+=n):((r=new e(n)).fill(t),this.writeBuffer(r))},i.prototype.end=function(){return this.flush(),this.push(null)},i}(o.Readable),t.exports=i}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){"use strict";function r(t,e){this.encoder=t,this.addBOM=!0}function i(t,e){this.decoder=t,this.pass=!1,this.options=e||{}}e.PrependBOM=r,r.prototype.write=function(t){return this.addBOM&&(t="\ufeff"+t,this.addBOM=!1),this.encoder.write(t)},r.prototype.end=function(){return this.encoder.end()},e.StripBOM=i,i.prototype.write=function(t){var e=this.decoder.write(t);return this.pass||!e?e:("\ufeff"===e[0]&&(e=e.slice(1),"function"==typeof this.options.stripBOM&&this.options.stripBOM()),this.pass=!0,e)},i.prototype.end=function(){return this.decoder.end()}},function(t,e,n){"use strict";for(var r=[n(172),n(173),n(174),n(175),n(176),n(177),n(178),n(179)],i=0;i<r.length;i++){t=r[i];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a])}},function(t,e,n){"use strict";var r=n(1).Buffer;function i(t,e){this.enc=t.encodingName,this.bomAware=t.bomAware,"base64"===this.enc?this.encoder=l:"cesu8"===this.enc&&(this.enc="utf8",this.encoder=u,"💩"!==new r("eda0bdedb2a9","hex").toString()&&(this.decoder=c,this.defaultCharUnicode=e.defaultCharUnicode))}t.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:i},i.prototype.encoder=s,i.prototype.decoder=o;var a=n(47).StringDecoder;function o(t,e){a.call(this,e.enc)}function s(t,e){this.enc=e.enc}function l(t,e){this.prevStr=""}function u(t,e){}function c(t,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}a.prototype.end||(a.prototype.end=function(){}),o.prototype=a.prototype,s.prototype.write=function(t){return new r(t,this.enc)},s.prototype.end=function(){},l.prototype.write=function(t){var e=(t=this.prevStr+t).length-t.length%4;return this.prevStr=t.slice(e),t=t.slice(0,e),new r(t,"base64")},l.prototype.end=function(){return new r(this.prevStr,"base64")},u.prototype.write=function(t){for(var e=new r(3*t.length),n=0,i=0;i<t.length;i++){var a=t.charCodeAt(i);a<128?e[n++]=a:a<2048?(e[n++]=192+(a>>>6),e[n++]=128+(63&a)):(e[n++]=224+(a>>>12),e[n++]=128+(a>>>6&63),e[n++]=128+(63&a))}return e.slice(0,n)},u.prototype.end=function(){},c.prototype.write=function(t){for(var e=this.acc,n=this.contBytes,r=this.accBytes,i="",a=0;a<t.length;a++){var o=t[a];128!=(192&o)?(n>0&&(i+=this.defaultCharUnicode,n=0),o<128?i+=String.fromCharCode(o):o<224?(e=31&o,n=1,r=1):o<240?(e=15&o,n=2,r=1):i+=this.defaultCharUnicode):n>0?(e=e<<6|63&o,r++,0===--n&&(i+=2===r&&e<128&&e>0?this.defaultCharUnicode:3===r&&e<2048?this.defaultCharUnicode:String.fromCharCode(e))):i+=this.defaultCharUnicode}return this.acc=e,this.contBytes=n,this.accBytes=r,i},c.prototype.end=function(){var t=0;return this.contBytes>0&&(t+=this.defaultCharUnicode),t}},function(t,e,n){"use strict";var r=n(1).Buffer;function i(){}function a(){}function o(){this.overflowByte=-1}function s(t,e){this.iconv=e}function l(t,e){void 0===(t=t||{}).addBOM&&(t.addBOM=!0),this.encoder=e.iconv.getEncoder("utf-16le",t)}function u(t,e){this.decoder=null,this.initialBytes=[],this.initialBytesLen=0,this.options=t||{},this.iconv=e.iconv}function c(t,e){var n=e||"utf-16le";if(t.length>=2)if(254==t[0]&&255==t[1])n="utf-16be";else if(255==t[0]&&254==t[1])n="utf-16le";else{for(var r=0,i=0,a=Math.min(t.length-t.length%2,64),o=0;o<a;o+=2)0===t[o]&&0!==t[o+1]&&i++,0!==t[o]&&0===t[o+1]&&r++;i>r?n="utf-16be":i<r&&(n="utf-16le")}return n}e.utf16be=i,i.prototype.encoder=a,i.prototype.decoder=o,i.prototype.bomAware=!0,a.prototype.write=function(t){for(var e=new r(t,"ucs2"),n=0;n<e.length;n+=2){var i=e[n];e[n]=e[n+1],e[n+1]=i}return e},a.prototype.end=function(){},o.prototype.write=function(t){if(0==t.length)return"";var e=new r(t.length+1),n=0,i=0;for(-1!==this.overflowByte&&(e[0]=t[0],e[1]=this.overflowByte,n=1,i=2);n<t.length-1;n+=2,i+=2)e[i]=t[n+1],e[i+1]=t[n];return this.overflowByte=n==t.length-1?t[t.length-1]:-1,e.slice(0,i).toString("ucs2")},o.prototype.end=function(){},e.utf16=s,s.prototype.encoder=l,s.prototype.decoder=u,l.prototype.write=function(t){return this.encoder.write(t)},l.prototype.end=function(){return this.encoder.end()},u.prototype.write=function(t){if(!this.decoder){if(this.initialBytes.push(t),this.initialBytesLen+=t.length,this.initialBytesLen<16)return"";var e=c(t=r.concat(this.initialBytes),this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options),this.initialBytes.length=this.initialBytesLen=0}return this.decoder.write(t)},u.prototype.end=function(){if(!this.decoder){var t=r.concat(this.initialBytes),e=c(t,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options);var n=this.decoder.write(t),i=this.decoder.end();return i?n+i:n}return this.decoder.end()}},function(t,e,n){"use strict";var r=n(1).Buffer;function i(t,e){this.iconv=e}e.utf7=i,e.unicode11utf7="utf7",i.prototype.encoder=o,i.prototype.decoder=s,i.prototype.bomAware=!0;var a=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function o(t,e){this.iconv=e.iconv}function s(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}o.prototype.write=function(t){return new r(t.replace(a,function(t){return"+"+("+"===t?"":this.iconv.encode(t,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))},o.prototype.end=function(){};for(var l=/[A-Za-z0-9\/+]/,u=[],c=0;c<256;c++)u[c]=l.test(String.fromCharCode(c));var h="+".charCodeAt(0),f="-".charCodeAt(0),d="&".charCodeAt(0);function p(t,e){this.iconv=e}function g(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=new r(6),this.base64AccumIdx=0}function y(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}s.prototype.write=function(t){for(var e="",n=0,i=this.inBase64,a=this.base64Accum,o=0;o<t.length;o++)if(i){if(!u[t[o]]){if(o==n&&t[o]==f)e+="+";else{var s=a+t.slice(n,o).toString();e+=this.iconv.decode(new r(s,"base64"),"utf16-be")}t[o]!=f&&o--,n=o+1,i=!1,a=""}}else t[o]==h&&(e+=this.iconv.decode(t.slice(n,o),"ascii"),n=o+1,i=!0);if(i){var l=(s=a+t.slice(n).toString()).length-s.length%8;a=s.slice(l),s=s.slice(0,l),e+=this.iconv.decode(new r(s,"base64"),"utf16-be")}else e+=this.iconv.decode(t.slice(n),"ascii");return this.inBase64=i,this.base64Accum=a,e},s.prototype.end=function(){var t="";return this.inBase64&&this.base64Accum.length>0&&(t=this.iconv.decode(new r(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t},e.utf7imap=p,p.prototype.encoder=g,p.prototype.decoder=y,p.prototype.bomAware=!0,g.prototype.write=function(t){for(var e=this.inBase64,n=this.base64Accum,i=this.base64AccumIdx,a=new r(5*t.length+10),o=0,s=0;s<t.length;s++){var l=t.charCodeAt(s);32<=l&&l<=126?(e&&(i>0&&(o+=a.write(n.slice(0,i).toString("base64").replace(/\//g,",").replace(/=+$/,""),o),i=0),a[o++]=f,e=!1),e||(a[o++]=l,l===d&&(a[o++]=f))):(e||(a[o++]=d,e=!0),e&&(n[i++]=l>>8,n[i++]=255&l,i==n.length&&(o+=a.write(n.toString("base64").replace(/\//g,","),o),i=0)))}return this.inBase64=e,this.base64AccumIdx=i,a.slice(0,o)},g.prototype.end=function(){var t=new r(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=t.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),t[e++]=f,this.inBase64=!1),t.slice(0,e)};var v=u.slice();v[",".charCodeAt(0)]=!0,y.prototype.write=function(t){for(var e="",n=0,i=this.inBase64,a=this.base64Accum,o=0;o<t.length;o++)if(i){if(!v[t[o]]){if(o==n&&t[o]==f)e+="&";else{var s=a+t.slice(n,o).toString().replace(/,/g,"/");e+=this.iconv.decode(new r(s,"base64"),"utf16-be")}t[o]!=f&&o--,n=o+1,i=!1,a=""}}else t[o]==d&&(e+=this.iconv.decode(t.slice(n,o),"ascii"),n=o+1,i=!0);if(i){var l=(s=a+t.slice(n).toString().replace(/,/g,"/")).length-s.length%8;a=s.slice(l),s=s.slice(0,l),e+=this.iconv.decode(new r(s,"base64"),"utf16-be")}else e+=this.iconv.decode(t.slice(n),"ascii");return this.inBase64=i,this.base64Accum=a,e},y.prototype.end=function(){var t="";return this.inBase64&&this.base64Accum.length>0&&(t=this.iconv.decode(new r(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t}},function(t,e,n){"use strict";var r=n(1).Buffer;function i(t,e){if(!t)throw new Error("SBCS codec is called without the data.");if(!t.chars||128!==t.chars.length&&256!==t.chars.length)throw new Error("Encoding '"+t.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(128===t.chars.length){for(var n="",i=0;i<128;i++)n+=String.fromCharCode(i);t.chars=n+t.chars}this.decodeBuf=new r(t.chars,"ucs2");var a=new r(65536);a.fill(e.defaultCharSingleByte.charCodeAt(0));for(i=0;i<t.chars.length;i++)a[t.chars.charCodeAt(i)]=i;this.encodeBuf=a}function a(t,e){this.encodeBuf=e.encodeBuf}function o(t,e){this.decodeBuf=e.decodeBuf}e._sbcs=i,i.prototype.encoder=a,i.prototype.decoder=o,a.prototype.write=function(t){for(var e=new r(t.length),n=0;n<t.length;n++)e[n]=this.encodeBuf[t.charCodeAt(n)];return e},a.prototype.end=function(){},o.prototype.write=function(t){for(var e=this.decodeBuf,n=new r(2*t.length),i=0,a=0,o=0;o<t.length;o++)i=2*t[o],n[a=2*o]=e[i],n[a+1]=e[i+1];return n.toString("ucs2")},o.prototype.end=function(){}},function(t,e,n){"use strict";t.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"ÄĀāÉĄÖÜáąČäčĆćéŹźĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņŃ¬√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",10000:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}},function(t,e,n){"use strict";t.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"
+ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"
+ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"
+ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"
+ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"
+ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"
+ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"
+ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"
+ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"
+ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"
+ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"
+ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"
+ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"
+ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"
+ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"
+ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ "},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘę¬źČş«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ "},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ "},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ "},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞğ¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ "},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñÑªº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:"\0\b\t\n\v\f\r
+
+
+ !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñÑªº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"
+ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"
+ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"
+ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"
+ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"
+ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"},maccyrillic:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},macgreek:{type:"_sbcs",chars:"Ä¹²É³ÖÜ΅àâä΄¨çéèêë£™îï•½‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"},maciceland:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macroman:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macromania:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macthai:{type:"_sbcs",chars:"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\ufeff​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"},macturkish:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"},macukraine:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},koi8r:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8u:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8ru:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8t:{type:"_sbcs",chars:"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},armscii8:{type:"_sbcs",chars:"
+ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"},rk1048:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},tcvn:{type:"_sbcs",chars:"\0ÚỤỪỬỮ\b\t\n\v\f\rỨỰỲỶỸÝỴ
+
+
+ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"},georgianacademy:{type:"_sbcs",chars:"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},georgianps:{type:"_sbcs",chars:"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},pt154:{type:"_sbcs",chars:"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},viscii:{type:"_sbcs",chars:"\0ẲẴẪ\b\t\n\v\f\rỶỸ
+
+Ỵ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"},iso646cn:{type:"_sbcs",chars:"\0\b\t\n\v\f\r
+
+
+ !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},iso646jp:{type:"_sbcs",chars:"\0\b\t\n\v\f\r
+
+
+ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},hproman8:{type:"_sbcs",chars:"
+ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"},macintosh:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},ascii:{type:"_sbcs",chars:"��������������������������������������������������������������������������������������������������������������������������������"},tis620:{type:"_sbcs",chars:"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"}}},function(t,e,n){"use strict";var r=n(1).Buffer;e._dbcs=u;for(var i=-1,a=-2,o=-1e3,s=new Array(256),l=0;l<256;l++)s[l]=i;function u(t,e){if(this.encodingName=t.encodingName,!t)throw new Error("DBCS codec is called without the data.");if(!t.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var n=t.table();this.decodeTables=[],this.decodeTables[0]=s.slice(0),this.decodeTableSeq=[];for(var r=0;r<n.length;r++)this._addDecodeChunk(n[r]);this.defaultCharUnicode=e.defaultCharUnicode,this.encodeTable=[],this.encodeTableSeq=[];var l={};if(t.encodeSkipVals)for(r=0;r<t.encodeSkipVals.length;r++){var u=t.encodeSkipVals[r];if("number"==typeof u)l[u]=!0;else for(var c=u.from;c<=u.to;c++)l[c]=!0}if(this._fillEncodeTable(0,0,l),t.encodeAdd)for(var h in t.encodeAdd)Object.prototype.hasOwnProperty.call(t.encodeAdd,h)&&this._setEncodeChar(h.charCodeAt(0),t.encodeAdd[h]);if(this.defCharSB=this.encodeTable[0][e.defaultCharSingleByte.charCodeAt(0)],this.defCharSB===i&&(this.defCharSB=this.encodeTable[0]["?"]),this.defCharSB===i&&(this.defCharSB="?".charCodeAt(0)),"function"==typeof t.gb18030){this.gb18030=t.gb18030();var f=this.decodeTables.length,d=this.decodeTables[f]=s.slice(0),p=this.decodeTables.length,g=this.decodeTables[p]=s.slice(0);for(r=129;r<=254;r++){var y=o-this.decodeTables[0][r],v=this.decodeTables[y];for(c=48;c<=57;c++)v[c]=o-f}for(r=129;r<=254;r++)d[r]=o-p;for(r=48;r<=57;r++)g[r]=a}}function c(t,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}function h(t,e){this.nodeIdx=0,this.prevBuf=new r(0),this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}function f(t,e){if(t[0]>e)return-1;for(var n=0,r=t.length;n<r-1;){var i=n+Math.floor((r-n+1)/2);t[i]<=e?n=i:r=i}return n}u.prototype.encoder=c,u.prototype.decoder=h,u.prototype._getDecodeTrieNode=function(t){for(var e=[];t>0;t>>=8)e.push(255&t);0==e.length&&e.push(0);for(var n=this.decodeTables[0],r=e.length-1;r>0;r--){var a=n[e[r]];if(a==i)n[e[r]]=o-this.decodeTables.length,this.decodeTables.push(n=s.slice(0));else{if(!(a<=o))throw new Error("Overwrite byte in "+this.encodingName+", addr: "+t.toString(16));n=this.decodeTables[o-a]}}return n},u.prototype._addDecodeChunk=function(t){var e=parseInt(t[0],16),n=this._getDecodeTrieNode(e);e&=255;for(var r=1;r<t.length;r++){var i=t[r];if("string"==typeof i)for(var a=0;a<i.length;){var o=i.charCodeAt(a++);if(55296<=o&&o<56320){var s=i.charCodeAt(a++);if(!(56320<=s&&s<57344))throw new Error("Incorrect surrogate pair in "+this.encodingName+" at chunk "+t[0]);n[e++]=65536+1024*(o-55296)+(s-56320)}else if(4080<o&&o<=4095){for(var l=4095-o+2,u=[],c=0;c<l;c++)u.push(i.charCodeAt(a++));n[e++]=-10-this.decodeTableSeq.length,this.decodeTableSeq.push(u)}else n[e++]=o}else{if("number"!=typeof i)throw new Error("Incorrect type '"+typeof i+"' given in "+this.encodingName+" at chunk "+t[0]);var h=n[e-1]+1;for(a=0;a<i;a++)n[e++]=h++}}if(e>255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+t[0]+": too long"+e)},u.prototype._getEncodeBucket=function(t){var e=t>>8;return void 0===this.encodeTable[e]&&(this.encodeTable[e]=s.slice(0)),this.encodeTable[e]},u.prototype._setEncodeChar=function(t,e){var n=this._getEncodeBucket(t),r=255&t;n[r]<=-10?this.encodeTableSeq[-10-n[r]][-1]=e:n[r]==i&&(n[r]=e)},u.prototype._setEncodeSequence=function(t,e){var n,r=t[0],a=this._getEncodeBucket(r),o=255&r;a[o]<=-10?n=this.encodeTableSeq[-10-a[o]]:(n={},a[o]!==i&&(n[-1]=a[o]),a[o]=-10-this.encodeTableSeq.length,this.encodeTableSeq.push(n));for(var s=1;s<t.length-1;s++){var l=n[r];"object"==typeof l?n=l:(n=n[r]={},void 0!==l&&(n[-1]=l))}n[r=t[t.length-1]]=e},u.prototype._fillEncodeTable=function(t,e,n){for(var r=this.decodeTables[t],i=0;i<256;i++){var a=r[i],s=e+i;n[s]||(a>=0?this._setEncodeChar(a,s):a<=o?this._fillEncodeTable(o-a,s<<8,n):a<=-10&&this._setEncodeSequence(this.decodeTableSeq[-10-a],s))}},c.prototype.write=function(t){for(var e=new r(t.length*(this.gb18030?4:3)),n=this.leadSurrogate,a=this.seqObj,o=-1,s=0,l=0;;){if(-1===o){if(s==t.length)break;var u=t.charCodeAt(s++)}else{u=o;o=-1}if(55296<=u&&u<57344)if(u<56320){if(-1===n){n=u;continue}n=u,u=i}else-1!==n?(u=65536+1024*(n-55296)+(u-56320),n=-1):u=i;else-1!==n&&(o=u,u=i,n=-1);var c=i;if(void 0!==a&&u!=i){var h=a[u];if("object"==typeof h){a=h;continue}"number"==typeof h?c=h:null==h&&void 0!==(h=a[-1])&&(c=h,o=u),a=void 0}else if(u>=0){var d=this.encodeTable[u>>8];if(void 0!==d&&(c=d[255&u]),c<=-10){a=this.encodeTableSeq[-10-c];continue}if(c==i&&this.gb18030){var p=f(this.gb18030.uChars,u);if(-1!=p){c=this.gb18030.gbChars[p]+(u-this.gb18030.uChars[p]);e[l++]=129+Math.floor(c/12600),c%=12600,e[l++]=48+Math.floor(c/1260),c%=1260,e[l++]=129+Math.floor(c/10),c%=10,e[l++]=48+c;continue}}}c===i&&(c=this.defaultCharSingleByte),c<256?e[l++]=c:c<65536?(e[l++]=c>>8,e[l++]=255&c):(e[l++]=c>>16,e[l++]=c>>8&255,e[l++]=255&c)}return this.seqObj=a,this.leadSurrogate=n,e.slice(0,l)},c.prototype.end=function(){if(-1!==this.leadSurrogate||void 0!==this.seqObj){var t=new r(10),e=0;if(this.seqObj){var n=this.seqObj[-1];void 0!==n&&(n<256?t[e++]=n:(t[e++]=n>>8,t[e++]=255&n)),this.seqObj=void 0}return-1!==this.leadSurrogate&&(t[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),t.slice(0,e)}},c.prototype.findIdx=f,h.prototype.write=function(t){var e=new r(2*t.length),n=this.nodeIdx,s=this.prevBuf,l=this.prevBuf.length,u=-this.prevBuf.length;l>0&&(s=r.concat([s,t.slice(0,10)]));for(var c=0,h=0;c<t.length;c++){var d,p=c>=0?t[c]:s[c+l];if((d=this.decodeTables[n][p])>=0);else if(d===i)c=u,d=this.defaultCharUnicode.charCodeAt(0);else if(d===a){var g=u>=0?t.slice(u,c+1):s.slice(u+l,c+1+l),y=12600*(g[0]-129)+1260*(g[1]-48)+10*(g[2]-129)+(g[3]-48),v=f(this.gb18030.gbChars,y);d=this.gb18030.uChars[v]+y-this.gb18030.gbChars[v]}else{if(d<=o){n=o-d;continue}if(!(d<=-10))throw new Error("iconv-lite internal error: invalid decoding table value "+d+" at "+n+"/"+p);for(var b=this.decodeTableSeq[-10-d],m=0;m<b.length-1;m++)d=b[m],e[h++]=255&d,e[h++]=d>>8;d=b[b.length-1]}if(d>65535){d-=65536;var w=55296+Math.floor(d/1024);e[h++]=255&w,e[h++]=w>>8,d=56320+d%1024}e[h++]=255&d,e[h++]=d>>8,n=0,u=c+1}return this.nodeIdx=n,this.prevBuf=u>=0?t.slice(u):s.slice(u+l),e.slice(0,h).toString("ucs2")},h.prototype.end=function(){for(var t="";this.prevBuf.length>0;){t+=this.defaultCharUnicode;var e=this.prevBuf.slice(1);this.prevBuf=new r(0),this.nodeIdx=0,e.length>0&&(t+=this.write(e))}return this.nodeIdx=0,t}},function(t,e,n){"use strict";t.exports={shiftjis:{type:"_dbcs",table:function(){return n(180)},encodeAdd:{"¥":92,"‾":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return n(181)},encodeAdd:{"¥":92,"‾":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return n(53)}},gbk:{type:"_dbcs",table:function(){return n(53).concat(n(91))}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return n(53).concat(n(91))},gb18030:function(){return n(182)},encodeSkipVals:[128],encodeAdd:{"€":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return n(183)}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return n(92)}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return n(92).concat(n(184))},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}},function(t,e){t.exports=[["0","\0",128],["a1","｡",62],["8140","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×"],["8180","÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨￢⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","Å‰♯♭♪†‡¶"],["81fc","◯"],["824f","０",9],["8260","Ａ",25],["8281","ａ",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"￢￤＇＂"],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"￢￤＇＂㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]},function(t,e){t.exports=[["0","\0",127],["8ea1","｡",62],["a1a1","　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈",9,"＋－±×÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨￢⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","Å‰♯♭♪†‡¶"],["a2fe","◯"],["a3b0","０",9],["a3c1","Ａ",25],["a3e1","ａ",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"￢￤＇＂"],["8fa2af","˘ˇ¸˙˝¯˛˚～΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","Ĳ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıĳĸłŀŉŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]},function(t,e){t.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}},function(t,e){t.exports=[["0","\0",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛！",58,"￦］",32,"￣"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","Ĳ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıĳĸŀłøœßþŧŋŉ㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]},function(t,e){t.exports=[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー［］✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","￢￤＇＂㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","￭"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]},function(t,e,n){"use strict";var r=n(1).Buffer,i=n(15).Transform;function a(t,e){this.conv=t,(e=e||{}).decodeStrings=!1,i.call(this,e)}function o(t,e){this.conv=t,(e=e||{}).encoding=this.encoding="utf8",i.call(this,e)}t.exports=function(t){t.encodeStream=function(e,n){return new a(t.getEncoder(e,n),n)},t.decodeStream=function(e,n){return new o(t.getDecoder(e,n),n)},t.supportsStreams=!0,t.IconvLiteEncoderStream=a,t.IconvLiteDecoderStream=o,t._collect=o.prototype.collect},(a.prototype=Object.create(i.prototype,{constructor:{value:a}}))._transform=function(t,e,n){if("string"!=typeof t)return n(new Error("Iconv encoding stream needs strings as its input."));try{var r=this.conv.write(t);r&&r.length&&this.push(r),n()}catch(t){n(t)}},a.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e),t()}catch(e){t(e)}},a.prototype.collect=function(t){var e=[];return this.on("error",t),this.on("data",function(t){e.push(t)}),this.on("end",function(){t(null,r.concat(e))}),this},(o.prototype=Object.create(i.prototype,{constructor:{value:o}}))._transform=function(t,e,n){if(!r.isBuffer(t))return n(new Error("Iconv decoding stream needs buffers as its input."));try{var i=this.conv.write(t);i&&i.length&&this.push(i,this.encoding),n()}catch(t){n(t)}},o.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e,this.encoding),t()}catch(e){t(e)}},o.prototype.collect=function(t){var e="";return this.on("error",t),this.on("data",function(t){e+=t}),this.on("end",function(){t(null,e)}),this}},function(t,e,n){"use strict";var r=n(1).Buffer;t.exports=function(t){var e=void 0;t.supportsNodeEncodingsExtension=!(new r(0)instanceof Uint8Array),t.extendNodeEncodings=function(){if(!e&&(e={},t.supportsNodeEncodingsExtension)){var i={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};r.isNativeEncoding=function(t){return t&&i[t.toLowerCase()]};var a=n(1).SlowBuffer;if(e.SlowBufferToString=a.prototype.toString,a.prototype.toString=function(n,i,a){return n=String(n||"utf8").toLowerCase(),r.isNativeEncoding(n)?e.SlowBufferToString.call(this,n,i,a):(void 0===i&&(i=0),void 0===a&&(a=this.length),t.decode(this.slice(i,a),n))},e.SlowBufferWrite=a.prototype.write,a.prototype.write=function(n,i,a,o){if(isFinite(i))isFinite(a)||(o=a,a=void 0);else{var s=o;o=i,i=a,a=s}i=+i||0;var l=this.length-i;if(a?(a=+a)>l&&(a=l):a=l,o=String(o||"utf8").toLowerCase(),r.isNativeEncoding(o))return e.SlowBufferWrite.call(this,n,i,a,o);if(n.length>0&&(a<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var u=t.encode(n,o);return u.length<a&&(a=u.length),u.copy(this,i,0,a),a},e.BufferIsEncoding=r.isEncoding,r.isEncoding=function(e){return r.isNativeEncoding(e)||t.encodingExists(e)},e.BufferByteLength=r.byteLength,r.byteLength=a.byteLength=function(n,i){return i=String(i||"utf8").toLowerCase(),r.isNativeEncoding(i)?e.BufferByteLength.call(this,n,i):t.encode(n,i).length},e.BufferToString=r.prototype.toString,r.prototype.toString=function(n,i,a){return n=String(n||"utf8").toLowerCase(),r.isNativeEncoding(n)?e.BufferToString.call(this,n,i,a):(void 0===i&&(i=0),void 0===a&&(a=this.length),t.decode(this.slice(i,a),n))},e.BufferWrite=r.prototype.write,r.prototype.write=function(n,i,a,o){var s=i,l=a,u=o;if(isFinite(i))isFinite(a)||(o=a,a=void 0);else{var c=o;o=i,i=a,a=c}if(o=String(o||"utf8").toLowerCase(),r.isNativeEncoding(o))return e.BufferWrite.call(this,n,s,l,u);i=+i||0;var h=this.length-i;if(a?(a=+a)>h&&(a=h):a=h,n.length>0&&(a<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var f=t.encode(n,o);return f.length<a&&(a=f.length),f.copy(this,i,0,a),a},t.supportsStreams){var o=n(15).Readable;e.ReadableSetEncoding=o.prototype.setEncoding,o.prototype.setEncoding=function(e,n){this._readableState.decoder=t.getDecoder(e,n),this._readableState.encoding=e},o.prototype.collect=t._collect}}},t.undoExtendNodeEncodings=function(){if(t.supportsNodeEncodingsExtension){if(!e)throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.");delete r.isNativeEncoding;var i=n(1).SlowBuffer;if(i.prototype.toString=e.SlowBufferToString,i.prototype.write=e.SlowBufferWrite,r.isEncoding=e.BufferIsEncoding,r.byteLength=e.BufferByteLength,r.prototype.toString=e.BufferToString,r.prototype.write=e.BufferWrite,t.supportsStreams){var a=n(15).Readable;a.prototype.setEncoding=e.ReadableSetEncoding,delete a.prototype.collect}e=void 0}}}},function(t,e,n){(function(){var e,r,i,a,o,s,l={}.hasOwnProperty;e=n(93),a=n(22).Number,s=n(12),o=n(49).inspect,i=function(t){function n(){return n.__super__.constructor.apply(this,arguments)}return function(t,e){for(var n in e)l.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(n,e),n.prototype.decode=function(t,e){var n,i,o;return i=t.pos,n=s.resolveLength(this.length,t,e),this.length instanceof a&&(e={parent:e,_startOffset:i,_currentOffset:0,_length:n}),o=new r(this.type,n,t,e),t.pos+=n*this.type.size(null,e),o},n.prototype.size=function(t,e){return t instanceof r&&(t=t.toArray()),n.__super__.size.call(this,t,e)},n.prototype.encode=function(t,e,i){return e instanceof r&&(e=e.toArray()),n.__super__.encode.call(this,t,e,i)},n}(),r=function(){function t(t,e,n,r){this.type=t,this.length=e,this.stream=n,this.ctx=r,this.base=this.stream.pos,this.items=[]}return t.prototype.get=function(t){var e;if(!(t<0||t>=this.length))return null==this.items[t]&&(e=this.stream.pos,this.stream.pos=this.base+this.type.size(null,this.ctx)*t,this.items[t]=this.type.decode(this.stream,this.ctx),this.stream.pos=e),this.items[t]},t.prototype.toArray=function(){var t,e,n,r;for(r=[],t=e=0,n=this.length;e<n;t=e+=1)r.push(this.get(t));return r},t.prototype.inspect=function(){return o(this.toArray())},t}(),t.exports=i}).call(this)},function(t,e){(function(){var e;e=function(){function t(t,e){this.type=t,this.flags=null!=e?e:[]}return t.prototype.decode=function(t){var e,n,r,i,a,o,s;for(i=this.type.decode(t),r={},n=a=0,o=(s=this.flags).length;a<o;n=++a)null!=(e=s[n])&&(r[e]=!!(i&1<<n));return r},t.prototype.size=function(){return this.type.size()},t.prototype.encode=function(t,e){var n,r,i,a,o,s;for(i=0,r=a=0,o=(s=this.flags).length;a<o;r=++a)null!=(n=s[r])&&e[n]&&(i|=1<<r);return this.type.encode(t,i)},t}(),t.exports=e}).call(this)},function(t,e){(function(){var e;e=function(){function t(t){this.type=t}return t.prototype.decode=function(t,e){return!!this.type.decode(t,e)},t.prototype.size=function(t,e){return this.type.size(t,e)},t.prototype.encode=function(t,e,n){return this.type.encode(t,+e,n)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i;i=n(12),r=n(22).Number,e=function(){function t(t){this.length=t}return t.prototype.decode=function(t,e){var n;return n=i.resolveLength(this.length,t,e),t.readBuffer(n)},t.prototype.size=function(t,e){return t?t.length:i.resolveLength(this.length,null,e)},t.prototype.encode=function(t,e,n){return this.length instanceof r&&this.length.encode(t,e.length),t.writeBuffer(e)},t}(),t.exports=e}).call(this)},function(t,e){(function(){var e;e=function(){function t(t,e){this.type=t,this.options=null!=e?e:[]}return t.prototype.decode=function(t){var e;return e=this.type.decode(t),this.options[e]||e},t.prototype.size=function(){return this.type.size()},t.prototype.encode=function(t,e){var n;if(-1===(n=this.options.indexOf(e)))throw new Error("Unknown option in enum: "+e);return this.type.encode(t,n)},t}(),t.exports=e}).call(this)},function(t,e){(function(){var e;e=function(){function t(t,e){this.type=t,this.condition=null==e||e}return t.prototype.decode=function(t,e){var n;if("function"==typeof(n=this.condition)&&(n=n.call(e,e)),n)return this.type.decode(t,e)},t.prototype.size=function(t,e){var n;return"function"==typeof(n=this.condition)&&(n=n.call(e,e)),n?this.type.size(t,e):0},t.prototype.encode=function(t,e,n){var r;if("function"==typeof(r=this.condition)&&(r=r.call(n,n)),r)return this.type.encode(t,e,n)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r;r=n(12),e=function(){function t(t,e){this.type=t,this.count=null!=e?e:1}return t.prototype.decode=function(t,e){t.pos+=this.size(null,e)},t.prototype.size=function(t,e){var n;return n=r.resolveLength(this.count,null,e),this.type.size()*n},t.prototype.encode=function(t,e,n){return t.fill(0,this.size(e,n))},t}(),t.exports=e}).call(this)},function(t,e,n){(function(e){(function(){var r,i,a;r=n(22).Number,a=n(12),i=function(){function t(t,e){this.length=t,this.encoding=null!=e?e:"ascii"}return t.prototype.decode=function(t,e){var n,r,i,o,s;return i=function(){if(null!=this.length)return a.resolveLength(this.length,t,e);for(n=t.buffer,i=t.length,o=t.pos;o<i&&0!==n[o];)++o;return o-t.pos}.call(this),"function"==typeof(r=this.encoding)&&(r=r.call(e,e)||"ascii"),s=t.readString(i,r),null==this.length&&t.pos<t.length&&t.pos++,s},t.prototype.size=function(t,n){var i,o;return t?("function"==typeof(i=this.encoding)&&(i=i.call(null!=n?n.val:void 0,null!=n?n.val:void 0)||"ascii"),"utf16be"===i&&(i="utf16le"),o=e.byteLength(t,i),this.length instanceof r&&(o+=this.length.size()),null==this.length&&o++,o):a.resolveLength(this.length,null,n)},t.prototype.encode=function(t,n,i){var a;if("function"==typeof(a=this.encoding)&&(a=a.call(null!=i?i.val:void 0,null!=i?i.val:void 0)||"ascii"),this.length instanceof r&&this.length.encode(t,e.byteLength(n,a)),t.writeString(n,a),null==this.length)return t.writeUInt8(0)},t}(),t.exports=i}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){(function(){var e,r,i={}.hasOwnProperty;e=n(94),r=function(t){function n(t,e){this.type=t,this.versions=null!=e?e:{},"string"==typeof this.type&&(this.versionGetter=new Function("parent","return parent."+this.type),this.versionSetter=new Function("parent","version","return parent."+this.type+" = version"))}return function(t,e){for(var n in e)i.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(n,e),n.prototype.decode=function(t,e,r){var i,a,o;if(null==r&&(r=0),a=this._setup(t,e,r),"string"==typeof this.type?a.version=this.versionGetter(e):a.version=this.type.decode(t),this.versions.header&&this._parseFields(t,a,this.versions.header),null==(i=this.versions[a.version]))throw new Error("Unknown version "+a.version);return i instanceof n?i.decode(t,e):(this._parseFields(t,a,i),null!=(o=this.process)&&o.call(a,t),a)},n.prototype.size=function(t,e,n){var r,i,a,o,s,l;if(null==n&&(n=!0),!t)throw new Error("Not a fixed size");if(r={parent:e,val:t,pointerSize:0},o=0,"string"!=typeof this.type&&(o+=this.type.size(t.version,r)),this.versions.header)for(a in l=this.versions.header)null!=(s=l[a]).size&&(o+=s.size(t[a],r));if(null==(i=this.versions[t.version]))throw new Error("Unknown version "+t.version);for(a in i)null!=(s=i[a]).size&&(o+=s.size(t[a],r));return n&&(o+=r.pointerSize),o},n.prototype.encode=function(t,e,n){var r,i,a,o,s,l,u,c;if(null!=(u=this.preEncode)&&u.call(e,t),(r={pointers:[],startOffset:t.pos,parent:n,val:e,pointerSize:0}).pointerOffset=t.pos+this.size(e,r,!1),"string"!=typeof this.type&&this.type.encode(t,e.version),this.versions.header)for(o in c=this.versions.header)null!=(l=c[o]).encode&&l.encode(t,e[o],r);for(o in i=this.versions[e.version])null!=(l=i[o]).encode&&l.encode(t,e[o],r);for(a=0;a<r.pointers.length;)(s=r.pointers[a++]).type.encode(t,s.val,s.parent)},n}(),t.exports=r}).call(this)},function(t,e,n){(function(){var t,r,i;i=n(12),t=function(){function t(t,e,n){var r,i,a,o;this.offsetType=t,this.type=e,this.options=null!=n?n:{},"void"===this.type&&(this.type=null),null==(r=this.options).type&&(r.type="local"),null==(i=this.options).allowNull&&(i.allowNull=!0),null==(a=this.options).nullValue&&(a.nullValue=0),null==(o=this.options).lazy&&(o.lazy=!1),this.options.relativeTo&&(this.relativeToGetter=new Function("ctx","return ctx."+this.options.relativeTo))}return t.prototype.decode=function(t,e){var n,r,a,o,s,l,u;return(a=this.offsetType.decode(t,e))===this.options.nullValue&&this.options.allowNull?null:(s=function(){switch(this.options.type){case"local":return e._startOffset;case"immediate":return t.pos-this.offsetType.size();case"parent":return e.parent._startOffset;default:for(n=e;n.parent;)n=n.parent;return n._startOffset||0}}.call(this),this.options.relativeTo&&(s+=this.relativeToGetter(e)),o=a+s,null!=this.type?(l=null,u=this,r=function(){var n;return null!=l?l:(n=t.pos,t.pos=o,l=u.type.decode(t,e),t.pos=n,l)},this.options.lazy?new i.PropertyDescriptor({get:r}):r()):o)},t.prototype.size=function(t,e){var n,i;switch(n=e,this.options.type){case"local":case"immediate":break;case"parent":e=e.parent;break;default:for(;e.parent;)e=e.parent}if(null==(i=this.type)){if(!(t instanceof r))throw new Error("Must be a VoidPointer");i=t.type,t=t.value}return t&&e&&(e.pointerSize+=i.size(t,n)),this.offsetType.size()},t.prototype.encode=function(t,e,n){var i,a,o;if(i=n,null!=e){switch(this.options.type){case"local":a=n.startOffset;break;case"immediate":a=t.pos+this.offsetType.size(e,i);break;case"parent":a=(n=n.parent).startOffset;break;default:for(a=0;n.parent;)n=n.parent}if(this.options.relativeTo&&(a+=this.relativeToGetter(i.val)),this.offsetType.encode(t,n.pointerOffset-a),null==(o=this.type)){if(!(e instanceof r))throw new Error("Must be a VoidPointer");o=e.type,e=e.value}return n.pointers.push({type:o,val:e,parent:i}),n.pointerOffset+=o.size(e,i)}this.offsetType.encode(t,this.options.nullValue)},t}(),r=function(t,e){this.type=t,this.value=e},e.Pointer=t,e.VoidPointer=r}).call(this)},function(t,e,n){t.exports={default:n(198),__esModule:!0}},function(t,e,n){n(199);var r=n(2).Object;t.exports=function(t,e){return r.getOwnPropertyDescriptor(t,e)}},function(t,e,n){var r=n(17),i=n(57).f;n(59)("getOwnPropertyDescriptor",function(){return function(t,e){return i(r(t),e)}})},function(t,e,n){n(28),n(24),t.exports=n(208)},function(t,e,n){"use strict";var r=n(202),i=n(98),a=n(23),o=n(17);t.exports=n(61)(Array,"Array",function(t,e){this._t=o(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(){}},function(t,e,n){"use strict";var r=n(36),i=n(27),a=n(39),o={};n(13)(o,n(4)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(o,{next:i(1,n)}),a(t,e+" Iterator")}},function(t,e,n){var r=n(17),i=n(37),a=n(102);t.exports=function(t){return function(e,n,o){var s,l=r(e),u=i(l.length),c=a(o,u);if(t&&n!=n){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((t||c in l)&&l[c]===n)return t||c||0;return!t&&-1}}},function(t,e,n){var r=n(10).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(18),i=n(30),a=n(64)("IE_PROTO"),o=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,a)?t[a]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?o:null}},function(t,e,n){var r=n(63),i=n(56);t.exports=function(t){return function(e,n){var a,o,s=String(i(e)),l=r(n),u=s.length;return l<0||l>=u?t?"":void 0:(a=s.charCodeAt(l))<55296||a>56319||l+1===u||(o=s.charCodeAt(l+1))<56320||o>57343?t?s.charAt(l):a:t?s.slice(l,l+2):o-56320+(a-55296<<10)+65536}}},function(t,e,n){var r=n(14),i=n(67);t.exports=n(2).getIterator=function(t){var e=i(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return r(e.call(t))}},function(t,e,n){t.exports={default:n(210),__esModule:!0}},function(t,e,n){n(211),t.exports=n(2).Object.freeze},function(t,e,n){var r=n(9),i=n(40).onFreeze;n(59)("freeze",function(t){return function(e){return t&&r(e)?t(i(e)):e}})},function(t,e,n){t.exports={default:n(213),__esModule:!0}},function(t,e,n){n(214),t.exports=n(2).Object.keys},function(t,e,n){var r=n(30),i=n(29);n(59)("keys",function(){return function(t){return i(r(t))}})},function(t,e,n){n(24),n(28),t.exports=n(70).f("iterator")},function(t,e,n){t.exports={default:n(217),__esModule:!0}},function(t,e,n){n(218),n(73),n(221),n(222),t.exports=n(2).Symbol},function(t,e,n){"use strict";var r=n(10),i=n(18),a=n(5),o=n(3),s=n(99),l=n(40).KEY,u=n(19),c=n(65),h=n(39),f=n(38),d=n(4),p=n(70),g=n(71),y=n(219),v=n(104),b=n(14),m=n(9),w=n(17),x=n(58),S=n(27),_=n(36),k=n(220),C=n(57),A=n(6),P=n(29),E=C.f,I=A.f,T=k.f,O=r.Symbol,L=r.JSON,B=L&&L.stringify,M="prototype",R=d("_hidden"),F=d("toPrimitive"),D={}.propertyIsEnumerable,z=c("symbol-registry"),N=c("symbols"),U=c("op-symbols"),W=Object[M],G="function"==typeof O,V=r.QObject,j=!V||!V[M]||!V[M].findChild,H=a&&u(function(){return 7!=_(I({},"a",{get:function(){return I(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=E(W,e);r&&delete W[e],I(t,e,n),r&&t!==W&&I(W,e,r)}:I,q=function(t){var e=N[t]=_(O[M]);return e._k=t,e},Z=G&&"symbol"==typeof O.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof O},Y=function(t,e,n){return t===W&&Y(U,e,n),b(t),e=x(e,!0),b(n),i(N,e)?(n.enumerable?(i(t,R)&&t[R][e]&&(t[R][e]=!1),n=_(n,{enumerable:S(0,!1)})):(i(t,R)||I(t,R,S(1,{})),t[R][e]=!0),H(t,e,n)):I(t,e,n)},X=function(t,e){b(t);for(var n,r=y(e=w(e)),i=0,a=r.length;a>i;)Y(t,n=r[i++],e[n]);return t},K=function(t){var e=D.call(this,t=x(t,!0));return!(this===W&&i(N,t)&&!i(U,t))&&(!(e||!i(this,t)||!i(N,t)||i(this,R)&&this[R][t])||e)},J=function(t,e){if(t=w(t),e=x(e,!0),t!==W||!i(N,e)||i(U,e)){var n=E(t,e);return!n||!i(N,e)||i(t,R)&&t[R][e]||(n.enumerable=!0),n}},Q=function(t){for(var e,n=T(w(t)),r=[],a=0;n.length>a;)i(N,e=n[a++])||e==R||e==l||r.push(e);return r},$=function(t){for(var e,n=t===W,r=T(n?U:w(t)),a=[],o=0;r.length>o;)!i(N,e=r[o++])||n&&!i(W,e)||a.push(N[e]);return a};G||(s((O=function(){if(this instanceof O)throw TypeError("Symbol is not a constructor!");var t=f(arguments.length>0?arguments[0]:void 0),e=function(n){this===W&&e.call(U,n),i(this,R)&&i(this[R],t)&&(this[R][t]=!1),H(this,t,S(1,n))};return a&&j&&H(W,t,{configurable:!0,set:e}),q(t)})[M],"toString",function(){return this._k}),C.f=J,A.f=Y,n(105).f=k.f=Q,n(35).f=K,n(72).f=$,a&&!n(62)&&s(W,"propertyIsEnumerable",K,!0),p.f=function(t){return q(d(t))}),o(o.G+o.W+o.F*!G,{Symbol:O});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)d(tt[et++]);for(var nt=P(d.store),rt=0;nt.length>rt;)g(nt[rt++]);o(o.S+o.F*!G,"Symbol",{for:function(t){return i(z,t+="")?z[t]:z[t]=O(t)},keyFor:function(t){if(!Z(t))throw TypeError(t+" is not a symbol!");for(var e in z)if(z[e]===t)return e},useSetter:function(){j=!0},useSimple:function(){j=!1}}),o(o.S+o.F*!G,"Object",{create:function(t,e){return void 0===e?_(t):X(_(t),e)},defineProperty:Y,defineProperties:X,getOwnPropertyDescriptor:J,getOwnPropertyNames:Q,getOwnPropertySymbols:$}),L&&o(o.S+o.F*(!G||u(function(){var t=O();return"[null]"!=B([t])||"{}"!=B({a:t})||"{}"!=B(Object(t))})),"JSON",{stringify:function(t){for(var e,n,r=[t],i=1;arguments.length>i;)r.push(arguments[i++]);if(n=e=r[1],(m(e)||void 0!==t)&&!Z(t))return v(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!Z(e))return e}),r[1]=e,B.apply(L,r)}}),O[M][F]||n(13)(O[M],F,O[M].valueOf),h(O,"Symbol"),h(Math,"Math",!0),h(r.JSON,"JSON",!0)},function(t,e,n){var r=n(29),i=n(72),a=n(35);t.exports=function(t){var e=r(t),n=i.f;if(n)for(var o,s=n(t),l=a.f,u=0;s.length>u;)l.call(t,o=s[u++])&&e.push(o);return e}},function(t,e,n){var r=n(17),i=n(105).f,a={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return o&&"[object Window]"==a.call(t)?function(t){try{return i(t)}catch(t){return o.slice()}}(t):i(r(t))}},function(t,e,n){n(71)("asyncIterator")},function(t,e,n){n(71)("observable")},function(t,e,n){n(224);var r=n(2).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},function(t,e,n){var r=n(3);r(r.S+r.F*!n(5),"Object",{defineProperty:n(6).f})},function(t,e,n){t.exports={default:n(226),__esModule:!0}},function(t,e,n){n(73),n(24),n(28),n(227),n(232),n(234),n(235),t.exports=n(2).Map},function(t,e,n){"use strict";var r=n(108),i=n(75);t.exports=n(113)("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=r.getEntry(i(this,"Map"),t);return e&&e.v},set:function(t,e){return r.def(i(this,"Map"),0===t?0:t,e)}},r,!0)},function(t,e,n){"use strict";var r=n(10),i=n(2),a=n(6),o=n(5),s=n(4)("species");t.exports=function(t){var e="function"==typeof i[t]?i[t]:r[t];o&&e&&!e[s]&&a.f(e,s,{configurable:!0,get:function(){return this}})}},function(t,e,n){var r=n(20),i=n(54),a=n(30),o=n(37),s=n(230);t.exports=function(t,e){var n=1==t,l=2==t,u=3==t,c=4==t,h=6==t,f=5==t||h,d=e||s;return function(e,s,p){for(var g,y,v=a(e),b=i(v),m=r(s,p,3),w=o(b.length),x=0,S=n?d(e,w):l?d(e,0):void 0;w>x;x++)if((f||x in b)&&(y=m(g=b[x],x,v),t))if(n)S[x]=y;else if(y)switch(t){case 3:return!0;case 5:return g;case 6:return x;case 2:S.push(g)}else if(c)return!1;return h?-1:u||c?c:S}}},function(t,e,n){var r=n(231);t.exports=function(t,e){return new(r(t))(e)}},function(t,e,n){var r=n(9),i=n(104),a=n(4)("species");t.exports=function(t){var e;return i(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!i(e.prototype)||(e=void 0),r(e)&&null===(e=e[a])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var r=n(3);r(r.P+r.R,"Map",{toJSON:n(114)("Map")})},function(t,e,n){var r=n(41);t.exports=function(t,e){var n=[];return r(t,!1,n.push,n,e),n}},function(t,e,n){n(115)("Map")},function(t,e,n){n(116)("Map")},function(t,e,n){"use strict";e.__esModule=!0;var r,i=n(69),a=(r=i)&&r.__esModule?r:{default:r};e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":(0,a.default)(e))&&"function"!=typeof e?t:e}},function(t,e,n){"use strict";e.__esModule=!0;var r=o(n(238)),i=o(n(242)),a=o(n(69));function o(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":(0,a.default)(e)));t.prototype=(0,i.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(r.default?(0,r.default)(t,e):t.__proto__=e)}},function(t,e,n){t.exports={default:n(239),__esModule:!0}},function(t,e,n){n(240),t.exports=n(2).Object.setPrototypeOf},function(t,e,n){var r=n(3);r(r.S,"Object",{setPrototypeOf:n(241).set})},function(t,e,n){var r=n(9),i=n(14),a=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n(20)(Function.call,n(57).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return a(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:a}},function(t,e,n){t.exports={default:n(243),__esModule:!0}},function(t,e,n){n(244);var r=n(2).Object;t.exports=function(t,e){return r.create(t,e)}},function(t,e,n){var r=n(3);r(r.S,"Object",{create:n(36)})},function(t,e,n){t.exports={default:n(246),__esModule:!0}},function(t,e,n){n(247);var r=n(2).Object;t.exports=function(t,e){return r.defineProperties(t,e)}},function(t,e,n){var r=n(3);r(r.S+r.F*!n(5),"Object",{defineProperties:n(100)})},function(t,e,n){var r=Array.prototype.slice,i=n(249),a=n(250),o=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:function(t,e,n){var u,c;if(s(t)||s(e))return!1;if(t.prototype!==e.prototype)return!1;if(a(t))return!!a(e)&&(t=r.call(t),e=r.call(e),o(t,e,n));if(l(t)){if(!l(e))return!1;if(t.length!==e.length)return!1;for(u=0;u<t.length;u++)if(t[u]!==e[u])return!1;return!0}try{var h=i(t),f=i(e)}catch(t){return!1}if(h.length!=f.length)return!1;for(h.sort(),f.sort(),u=h.length-1;u>=0;u--)if(h[u]!=f[u])return!1;for(u=h.length-1;u>=0;u--)if(c=h[u],!o(t[c],e[c],n))return!1;return typeof t==typeof e}(t,e,n))};function s(t){return null==t}function l(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}},function(t,e){function n(t){var e=[];for(var n in t)e.push(n);return e}(t.exports="function"==typeof Object.keys?Object.keys:n).shim=n},function(t,e){var n="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();function r(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function i(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}(e=t.exports=n?r:i).supported=r,e.unsupported=i},function(t,e,n){t.exports={default:n(252),__esModule:!0}},function(t,e,n){n(253),t.exports=n(2).Object.assign},function(t,e,n){var r=n(3);r(r.S+r.F,"Object",{assign:n(254)})},function(t,e,n){"use strict";var r=n(29),i=n(72),a=n(35),o=n(30),s=n(54),l=Object.assign;t.exports=!l||n(19)(function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach(function(t){e[t]=t}),7!=l({},t)[n]||Object.keys(l({},e)).join("")!=r})?function(t,e){for(var n=o(t),l=arguments.length,u=1,c=i.f,h=a.f;l>u;)for(var f,d=s(arguments[u++]),p=c?r(d).concat(c(d)):r(d),g=p.length,y=0;g>y;)h.call(d,f=p[y++])&&(n[f]=d[f]);return n}:l},function(t,e,n){t.exports={default:n(256),__esModule:!0}},function(t,e,n){n(257),t.exports=n(2).String.fromCodePoint},function(t,e,n){var r=n(3),i=n(102),a=String.fromCharCode,o=String.fromCodePoint;r(r.S+r.F*(!!o&&1!=o.length),"String",{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,o=0;r>o;){if(e=+arguments[o++],i(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?a(e):a(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},function(t,e,n){t.exports={default:n(259),__esModule:!0}},function(t,e,n){n(24),n(260),t.exports=n(2).Array.from},function(t,e,n){"use strict";var r=n(20),i=n(3),a=n(30),o=n(111),s=n(112),l=n(37),u=n(261),c=n(67);i(i.S+i.F*!n(262)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,i,h,f=a(t),d="function"==typeof this?this:Array,p=arguments.length,g=p>1?arguments[1]:void 0,y=void 0!==g,v=0,b=c(f);if(y&&(g=r(g,p>2?arguments[2]:void 0,2)),null==b||d==Array&&s(b))for(n=new d(e=l(f.length));e>v;v++)u(n,v,y?g(f[v],v):f[v]);else for(h=b.call(f),n=new d;!(i=h.next()).done;v++)u(n,v,y?o(h,g,[i.value,v],!0):i.value);return n.length=v,n}})},function(t,e,n){"use strict";var r=n(6),i=n(27);t.exports=function(t,e,n){e in t?r.f(t,e,i(0,n)):t[e]=n}},function(t,e,n){var r=n(4)("iterator"),i=!1;try{var a=[7][r]();a.return=function(){i=!0},Array.from(a,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var a=[7],o=a[r]();o.next=function(){return{done:n=!0}},a[r]=function(){return o},t(a)}catch(t){}return n}},function(t,e,n){t.exports={default:n(264),__esModule:!0}},function(t,e,n){n(73),n(24),n(28),n(265),n(266),n(267),n(268),t.exports=n(2).Set},function(t,e,n){"use strict";var r=n(108),i=n(75);t.exports=n(113)("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(i(this,"Set"),t=0===t?0:t,t)}},r)},function(t,e,n){var r=n(3);r(r.P+r.R,"Set",{toJSON:n(114)("Set")})},function(t,e,n){n(115)("Set")},function(t,e,n){n(116)("Set")},function(t,e,n){(function(t){var r,i,a,o,s,l,u,c,h,f,d,p,g,y,v,b;p=n(43),y=n(270),b=new p(t("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","base64")),v=Math.log2||function(t){return Math.log(t)/Math.LN2},r=(g=function(t){return v(t)+1|0})(y.categories.length-1),o=g(y.combiningClasses.length-1),h=g(y.scripts.length-1),u=g(y.eaw.length-1),a=o+h+u+10,l=h+u+10,d=u+10,i=(1<<r)-1,s=(1<<o)-1,f=(1<<h)-1,c=(1<<u)-1,e.getCategory=function(t){var e;return e=b.get(t),y.categories[e>>a&i]},e.getCombiningClass=function(t){var e;return e=b.get(t),y.combiningClasses[e>>l&s]},e.getScript=function(t){var e;return e=b.get(t),y.scripts[e>>d&f]},e.getEastAsianWidth=function(t){var e;return e=b.get(t),y.eaw[e>>10&c]},e.getNumericValue=function(t){var e,n,r;if(0===(n=1023&(r=b.get(t))))return null;if(n<=50)return n-1;if(n<480)return((n>>4)-12)/(1+(15&n));if(n<768){for(r=(n>>5)-14,e=2+(31&n);e>0;)r*=10,e--;return r}for(r=(n>>2)-191,e=1+(3&n);e>0;)r*=60,e--;return r},e.isAlphabetic=function(t){var n;return"Lu"===(n=e.getCategory(t))||"Ll"===n||"Lt"===n||"Lm"===n||"Lo"===n||"Nl"===n},e.isDigit=function(t){return"Nd"===e.getCategory(t)},e.isPunctuation=function(t){var n;return"Pc"===(n=e.getCategory(t))||"Pd"===n||"Pe"===n||"Pf"===n||"Pi"===n||"Po"===n||"Ps"===n},e.isLowerCase=function(t){return"Ll"===e.getCategory(t)},e.isUpperCase=function(t){return"Lu"===e.getCategory(t)},e.isTitleCase=function(t){return"Lt"===e.getCategory(t)},e.isWhiteSpace=function(t){var n;return"Zs"===(n=e.getCategory(t))||"Zl"===n||"Zp"===n},e.isBaseForm=function(t){var n;return"Nd"===(n=e.getCategory(t))||"No"===n||"Nl"===n||"Lu"===n||"Ll"===n||"Lt"===n||"Lm"===n||"Lo"===n||"Me"===n||"Mc"===n},e.isMark=function(t){var n;return"Mn"===(n=e.getCategory(t))||"Me"===n||"Mc"===n}}).call(e,n(1).Buffer)},function(t,e){t.exports={categories:["Cc","Zs","Po","Sc","Ps","Pe","Sm","Pd","Nd","Lu","Sk","Pc","Ll","So","Lo","Pi","Cf","No","Pf","Lt","Lm","Mn","Me","Mc","Nl","Zl","Zp","Cs","Co"],combiningClasses:["Not_Reordered","Above","Above_Right","Below","Attached_Above_Right","Attached_Below","Overlay","Iota_Subscript","Double_Below","Double_Above","Below_Right","Above_Left","CCC10","CCC11","CCC12","CCC13","CCC14","CCC15","CCC16","CCC17","CCC18","CCC19","CCC20","CCC21","CCC22","CCC23","CCC24","CCC25","CCC30","CCC31","CCC32","CCC27","CCC28","CCC29","CCC33","CCC34","CCC35","CCC36","Nukta","Virama","CCC84","CCC91","CCC103","CCC107","CCC118","CCC122","CCC129","CCC130","CCC132","Attached_Above","Below_Left","Left","Kana_Voicing","CCC26","Right"],scripts:["Common","Latin","Bopomofo","Inherited","Greek","Coptic","Cyrillic","Armenian","Hebrew","Arabic","Syriac","Thaana","Nko","Samaritan","Mandaic","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","Hangul","Ethiopic","Cherokee","Canadian_Aboriginal","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","Tai_Le","New_Tai_Lue","Buginese","Tai_Tham","Balinese","Sundanese","Batak","Lepcha","Ol_Chiki","Braille","Glagolitic","Tifinagh","Han","Hiragana","Katakana","Yi","Lisu","Vai","Bamum","Syloti_Nagri","Phags_Pa","Saurashtra","Kayah_Li","Rejang","Javanese","Cham","Tai_Viet","Meetei_Mayek","null","Linear_B","Lycian","Carian","Old_Italic","Gothic","Old_Permic","Ugaritic","Old_Persian","Deseret","Shavian","Osmanya","Elbasan","Caucasian_Albanian","Linear_A","Cypriot","Imperial_Aramaic","Palmyrene","Nabataean","Hatran","Phoenician","Lydian","Meroitic_Hieroglyphs","Meroitic_Cursive","Kharoshthi","Old_South_Arabian","Old_North_Arabian","Manichaean","Avestan","Inscriptional_Parthian","Inscriptional_Pahlavi","Psalter_Pahlavi","Old_Turkic","Old_Hungarian","Brahmi","Kaithi","Sora_Sompeng","Chakma","Mahajani","Sharada","Khojki","Multani","Khudawadi","Grantha","Tirhuta","Siddham","Modi","Takri","Ahom","Warang_Citi","Pau_Cin_Hau","Cuneiform","Egyptian_Hieroglyphs","Anatolian_Hieroglyphs","Mro","Bassa_Vah","Pahawh_Hmong","Miao","Duployan","SignWriting","Mende_Kikakui"],eaw:["N","Na","A","W","H","F"]}},function(t,e,n){"use strict";function r(t){return t&&"object"==typeof t&&"default"in t?t.default:t}var i=r(n(272)),a=r(n(60)),o=r(n(276)),s=r(n(277)),l=r(n(103)),u=r(n(106)),c=r(n(107)),h=function(){function t(e){u(this,t),this.stateTable=e.stateTable,this.accepting=e.accepting,this.tags=e.tags}return c(t,[{key:"match",value:function(t){var e=this;return o({},l,s.mark(function n(){var r,i,a,o,l,u;return s.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:r=1,i=null,a=null,o=null,l=0;case 5:if(!(l<t.length)){n.next=21;break}if(u=t[l],o=r,0!==(r=e.stateTable[r][u])){n.next=15;break}if(!(null!=i&&null!=a&&a>=i)){n.next=13;break}return n.next=13,[i,a,e.tags[o]];case 13:r=e.stateTable[1][u],i=null;case 15:0!==r&&null==i&&(i=l),e.accepting[r]&&(a=l),0===r&&(r=1);case 18:l++,n.next=5;break;case 21:if(!(null!=i&&null!=a&&a>=i)){n.next=24;break}return n.next=24,[i,a,e.tags[r]];case 24:case"end":return n.stop()}},n,this)}))}},{key:"apply",value:function(t,e){var n=!0,r=!1,o=void 0;try{for(var s,l=a(this.match(t));!(n=(s=l.next()).done);n=!0){var u=i(s.value,3),c=u[0],h=u[1],f=u[2],d=!0,p=!1,g=void 0;try{for(var y,v=a(f);!(d=(y=v.next()).done);d=!0){var b=y.value;"function"==typeof e[b]&&e[b](c,h,t.slice(c,h+1))}}catch(t){p=!0,g=t}finally{try{!d&&v.return&&v.return()}finally{if(p)throw g}}}}catch(t){r=!0,o=t}finally{try{!n&&l.return&&l.return()}finally{if(r)throw o}}}}]),t}();t.exports=h},function(t,e,n){"use strict";e.__esModule=!0;var r=a(n(273)),i=a(n(60));function a(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){if(Array.isArray(t))return t;if((0,r.default)(Object(t)))return function(t,e){var n=[],r=!0,a=!1,o=void 0;try{for(var s,l=(0,i.default)(t);!(r=(s=l.next()).done)&&(n.push(s.value),!e||n.length!==e);r=!0);}catch(t){a=!0,o=t}finally{try{!r&&l.return&&l.return()}finally{if(a)throw o}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}},function(t,e,n){t.exports={default:n(274),__esModule:!0}},function(t,e,n){n(28),n(24),t.exports=n(275)},function(t,e,n){var r=n(68),i=n(4)("iterator"),a=n(23);t.exports=n(2).isIterable=function(t){var e=Object(t);return void 0!==e[i]||"@@iterator"in e||a.hasOwnProperty(r(e))}},function(t,e,n){"use strict";e.__esModule=!0;var r,i=n(74),a=(r=i)&&r.__esModule?r:{default:r};e.default=function(t,e,n){return e in t?(0,a.default)(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){t.exports=n(278)},function(t,e,n){var r=function(){return this}()||Function("return this")(),i=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,a=i&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(279),i)r.regeneratorRuntime=a;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}},function(t,e){!function(e){"use strict";var n,r=Object.prototype,i=r.hasOwnProperty,a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",s=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag",u="object"==typeof t,c=e.regeneratorRuntime;if(c)u&&(t.exports=c);else{(c=e.regeneratorRuntime=u?t.exports:{}).wrap=w;var h="suspendedStart",f="suspendedYield",d="executing",p="completed",g={},y={};y[o]=function(){return this};var v=Object.getPrototypeOf,b=v&&v(v(O([])));b&&b!==r&&i.call(b,o)&&(y=b);var m=k.prototype=S.prototype=Object.create(y);_.prototype=m.constructor=k,k.constructor=_,k[l]=_.displayName="GeneratorFunction",c.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===_||"GeneratorFunction"===(e.displayName||e.name))},c.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,k):(t.__proto__=k,l in t||(t[l]="GeneratorFunction")),t.prototype=Object.create(m),t},c.awrap=function(t){return{__await:t}},C(A.prototype),A.prototype[s]=function(){return this},c.AsyncIterator=A,c.async=function(t,e,n,r){var i=new A(w(t,e,n,r));return c.isGeneratorFunction(e)?i:i.next().then(function(t){return t.done?t.value:i.next()})},C(m),m[l]="Generator",m[o]=function(){return this},m.toString=function(){return"[object Generator]"},c.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},c.values=O,T.prototype={constructor:T,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(I),!t)for(var e in this)"t"===e.charAt(0)&&i.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,i){return s.type="throw",s.arg=t,e.next=r,i&&(e.method="next",e.arg=n),!!i}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],s=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=i.call(o,"catchLoc"),u=i.call(o,"finallyLoc");if(l&&u){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var o=a?a.completion:{};return o.type=t,o.arg=e,a?(this.method="next",this.next=a.finallyLoc,g):this.complete(o)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),g},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),I(n),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;I(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=n),g}}}function w(t,e,n,r){var i,a,o,s,l=e&&e.prototype instanceof S?e:S,u=Object.create(l.prototype),c=new T(r||[]);return u._invoke=(i=t,a=n,o=c,s=h,function(t,e){if(s===d)throw new Error("Generator is already running");if(s===p){if("throw"===t)throw e;return L()}for(o.method=t,o.arg=e;;){var n=o.delegate;if(n){var r=P(n,o);if(r){if(r===g)continue;return r}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(s===h)throw s=p,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);s=d;var l=x(i,a,o);if("normal"===l.type){if(s=o.done?p:f,l.arg===g)continue;return{value:l.arg,done:o.done}}"throw"===l.type&&(s=p,o.method="throw",o.arg=l.arg)}}),u}function x(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function S(){}function _(){}function k(){}function C(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function A(t){var e;this._invoke=function(n,r){function a(){return new Promise(function(e,a){!function e(n,r,a,o){var s=x(t[n],t,r);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==typeof u&&i.call(u,"__await")?Promise.resolve(u.__await).then(function(t){e("next",t,a,o)},function(t){e("throw",t,a,o)}):Promise.resolve(u).then(function(t){l.value=t,a(l)},o)}o(s.arg)}(n,r,e,a)})}return e=e?e.then(a,a):a()}}function P(t,e){var r=t.iterator[e.method];if(r===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=n,P(t,e),"throw"===e.method))return g;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var i=x(r,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,g;var a=i.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,g):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,g)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,a=function e(){for(;++r<t.length;)if(i.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=n,e.done=!0,e};return a.next=a}}return{next:L}}function L(){return{value:n,done:!0}}}(function(){return this}()||Function("return this")())},function(t,e,n){t.exports={default:n(281),__esModule:!0}},function(t,e,n){n(282),t.exports=Math.pow(2,-52)},function(t,e,n){var r=n(3);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,e,n){(function(e){var n=function(){"use strict";function t(n,i,a,o){"object"==typeof i&&(a=i.depth,o=i.prototype,i.filter,i=i.circular);var s=[],l=[],u=void 0!==e;return void 0===i&&(i=!0),void 0===a&&(a=1/0),function n(a,c){if(null===a)return null;if(0==c)return a;var h,f;if("object"!=typeof a)return a;if(t.__isArray(a))h=[];else if(t.__isRegExp(a))h=new RegExp(a.source,r(a)),a.lastIndex&&(h.lastIndex=a.lastIndex);else if(t.__isDate(a))h=new Date(a.getTime());else{if(u&&e.isBuffer(a))return h=new e(a.length),a.copy(h),h;void 0===o?(f=Object.getPrototypeOf(a),h=Object.create(f)):(h=Object.create(o),f=o)}if(i){var d=s.indexOf(a);if(-1!=d)return l[d];s.push(a),l.push(h)}for(var p in a){var g;f&&(g=Object.getOwnPropertyDescriptor(f,p)),g&&null==g.set||(h[p]=n(a[p],c-1))}return h}(n,a)}function n(t){return Object.prototype.toString.call(t)}function r(t){var e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),e}return t.clonePrototype=function(t){if(null===t)return null;var e=function(){};return e.prototype=t,new e},t.__objToStr=n,t.__isDate=function(t){return"object"==typeof t&&"[object Date]"===n(t)},t.__isArray=function(t){return"object"==typeof t&&"[object Array]"===n(t)},t.__isRegExp=function(t){return"object"==typeof t&&"[object RegExp]"===n(t)},t.__getRegExpFlags=r,t}();"object"==typeof t&&t.exports&&(t.exports=n)}).call(e,n(1).Buffer)},function(t,e,n){t.exports=n(117).BrotliDecompressBuffer},function(t,e){var n=8224,r=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function i(t){this.buf_=new Uint8Array(n),this.input_=t,this.reset()}i.READ_SIZE=4096,i.IBUF_MASK=8191,i.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var t=0;t<4;t++)this.val_|=this.buf_[this.pos_]<<8*t,++this.pos_;return this.bit_end_pos_>0},i.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var t=this.buf_ptr_,e=this.input_.read(this.buf_,t,4096);if(e<0)throw new Error("Unexpected end of input");if(e<4096){this.eos_=1;for(var n=0;n<32;n++)this.buf_[t+e+n]=0}if(0===t){for(n=0;n<32;n++)this.buf_[8192+n]=this.buf_[n];this.buf_ptr_=4096}else this.buf_ptr_=0;this.bit_end_pos_+=e<<3}},i.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[8191&this.pos_]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},i.prototype.readBits=function(t){32-this.bit_pos_<t&&this.fillBitWindow();var e=this.val_>>>this.bit_pos_&r[t];return this.bit_pos_+=t,e},t.exports=i},function(t,e,n){var r=n(287);n(8);e.init=function(){return(0,n(117).BrotliDecompressBuffer)(r.toByteArray(n(288)))}},function(t,e,n){"use strict";e.byteLength=function(t){return 3*t.length/4-u(t)},e.toByteArray=function(t){var e,n,r,o,s,l=t.length;o=u(t),s=new a(3*l/4-o),n=o>0?l-4:l;var c=0;for(e=0;e<n;e+=4)r=i[t.charCodeAt(e)]<<18|i[t.charCodeAt(e+1)]<<12|i[t.charCodeAt(e+2)]<<6|i[t.charCodeAt(e+3)],s[c++]=r>>16&255,s[c++]=r>>8&255,s[c++]=255&r;2===o?(r=i[t.charCodeAt(e)]<<2|i[t.charCodeAt(e+1)]>>4,s[c++]=255&r):1===o&&(r=i[t.charCodeAt(e)]<<10|i[t.charCodeAt(e+1)]<<4|i[t.charCodeAt(e+2)]>>2,s[c++]=r>>8&255,s[c++]=255&r);return s},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,a="",o=[],s=0,l=n-i;s<l;s+=16383)o.push(c(t,s,s+16383>l?l:s+16383));1===i?(e=t[n-1],a+=r[e>>2],a+=r[e<<4&63],a+="=="):2===i&&(e=(t[n-2]<<8)+t[n-1],a+=r[e>>10],a+=r[e>>4&63],a+=r[e<<2&63],a+="=");return o.push(a),o.join("")};for(var r=[],i=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=o.length;s<l;++s)r[s]=o[s],i[o.charCodeAt(s)]=s;function u(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function c(t,e,n){for(var i,a,o=[],s=e;s<n;s+=3)i=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),o.push(r[(a=i)>>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){t.exports="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"},function(t,e){e.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),e.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},function(t,e){function n(t,e){this.offset=t,this.nbits=e}e.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],e.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],e.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],e.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],e.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},function(t,e,n){var r=n(119);function i(t,e,n){this.prefix=new Uint8Array(t.length),this.transform=e,this.suffix=new Uint8Array(n.length);for(var r=0;r<t.length;r++)this.prefix[r]=t.charCodeAt(r);for(r=0;r<n.length;r++)this.suffix[r]=n.charCodeAt(r)}var a=[new i("",0,""),new i("",0," "),new i(" ",0," "),new i("",12,""),new i("",10," "),new i("",0," the "),new i(" ",0,""),new i("s ",0," "),new i("",0," of "),new i("",10,""),new i("",0," and "),new i("",13,""),new i("",1,""),new i(", ",0," "),new i("",0,", "),new i(" ",10," "),new i("",0," in "),new i("",0," to "),new i("e ",0," "),new i("",0,'"'),new i("",0,"."),new i("",0,'">'),new i("",0,"\n"),new i("",3,""),new i("",0,"]"),new i("",0," for "),new i("",14,""),new i("",2,""),new i("",0," a "),new i("",0," that "),new i(" ",10,""),new i("",0,". "),new i(".",0,""),new i(" ",0,", "),new i("",15,""),new i("",0," with "),new i("",0,"'"),new i("",0," from "),new i("",0," by "),new i("",16,""),new i("",17,""),new i(" the ",0,""),new i("",4,""),new i("",0,". The "),new i("",11,""),new i("",0," on "),new i("",0," as "),new i("",0," is "),new i("",7,""),new i("",1,"ing "),new i("",0,"\n\t"),new i("",0,":"),new i(" ",0,". "),new i("",0,"ed "),new i("",20,""),new i("",18,""),new i("",6,""),new i("",0,"("),new i("",10,", "),new i("",8,""),new i("",0," at "),new i("",0,"ly "),new i(" the ",0," of "),new i("",5,""),new i("",9,""),new i(" ",10,", "),new i("",10,'"'),new i(".",0,"("),new i("",11," "),new i("",10,'">'),new i("",0,'="'),new i(" ",0,"."),new i(".com/",0,""),new i(" the ",0," of the "),new i("",10,"'"),new i("",0,". This "),new i("",0,","),new i(".",0," "),new i("",10,"("),new i("",10,"."),new i("",0," not "),new i(" ",0,'="'),new i("",0,"er "),new i(" ",11," "),new i("",0,"al "),new i(" ",11,""),new i("",0,"='"),new i("",11,'"'),new i("",10,". "),new i(" ",0,"("),new i("",0,"ful "),new i(" ",10,". "),new i("",0,"ive "),new i("",0,"less "),new i("",11,"'"),new i("",0,"est "),new i(" ",10,"."),new i("",11,'">'),new i(" ",0,"='"),new i("",10,","),new i("",0,"ize "),new i("",11,"."),new i("Â ",0,""),new i(" ",0,","),new i("",10,'="'),new i("",11,'="'),new i("",0,"ous "),new i("",11,", "),new i("",10,"='"),new i(" ",10,","),new i(" ",11,'="'),new i(" ",11,", "),new i("",11,","),new i("",11,"("),new i("",11,". "),new i(" ",11,"."),new i("",11,"='"),new i(" ",11,". "),new i(" ",10,'="'),new i(" ",11,"='"),new i(" ",10,"='")];function o(t,e){return t[e]<192?(t[e]>=97&&t[e]<=122&&(t[e]^=32),1):t[e]<224?(t[e+1]^=32,2):(t[e+2]^=5,3)}e.kTransforms=a,e.kNumTransforms=a.length,e.transformDictionaryWord=function(t,e,n,i,s){var l,u=a[s].prefix,c=a[s].suffix,h=a[s].transform,f=h<12?0:h-11,d=0,p=e;f>i&&(f=i);for(var g=0;g<u.length;)t[e++]=u[g++];for(n+=f,i-=f,h<=9&&(i-=h),d=0;d<i;d++)t[e++]=r.dictionary[n+d];if(l=e-i,10===h)o(t,l);else if(11===h)for(;i>0;){var y=o(t,l);l+=y,i-=y}for(var v=0;v<c.length;)t[e++]=c[v++];return e-p}},function(t,e,n){(function(e){(function(){var r,i,a,o,s={}.hasOwnProperty;r=n(293),i=n(50),o=n(8),a=function(t){var n;function a(t,e,i){var a;this.document=t,this.name=e,this.id=i,this.font=new r(n[this.name]()),a=this.font,this.ascender=a.ascender,this.descender=a.descender,this.bbox=a.bbox,this.lineGap=a.lineGap}return function(t,e){for(var n in e)s.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(a,i),a.prototype.embed=function(){return this.dictionary.data={Type:"Font",BaseFont:this.name,Subtype:"Type1",Encoding:"WinAnsiEncoding"},this.dictionary.end()},a.prototype.encode=function(t){var e,n,r,i,a,o,s,l;for(n=this.font.encodeText(t),i=this.font.glyphsForString(""+t),e=this.font.advancesForGlyphs(i),l=[],a=o=0,s=i.length;o<s;a=++o)r=i[a],l.push({xAdvance:e[a],yAdvance:0,xOffset:0,yOffset:0,advanceWidth:this.font.widthOfGlyph(r)});return[n,l]},a.prototype.widthOfString=function(t,e){var n,r,i,a,o;for(r=this.font.glyphsForString(""+t),o=0,i=0,a=(n=this.font.advancesForGlyphs(r)).length;i<a;i++)o+=n[i];return o*(e/1e3)},a.isStandardFont=function(t){return t in n},n={Courier:function(){return o.readFileSync(e+"/../font/data/Courier.afm","utf8")},"Courier-Bold":function(){return o.readFileSync(e+"/../font/data/Courier-Bold.afm","utf8")},"Courier-Oblique":function(){return o.readFileSync(e+"/../font/data/Courier-Oblique.afm","utf8")},"Courier-BoldOblique":function(){return o.readFileSync(e+"/../font/data/Courier-BoldOblique.afm","utf8")},Helvetica:function(){return o.readFileSync(e+"/../font/data/Helvetica.afm","utf8")},"Helvetica-Bold":function(){return o.readFileSync(e+"/../font/data/Helvetica-Bold.afm","utf8")},"Helvetica-Oblique":function(){return o.readFileSync(e+"/../font/data/Helvetica-Oblique.afm","utf8")},"Helvetica-BoldOblique":function(){return o.readFileSync(e+"/../font/data/Helvetica-BoldOblique.afm","utf8")},"Times-Roman":function(){return o.readFileSync(e+"/../font/data/Times-Roman.afm","utf8")},"Times-Bold":function(){return o.readFileSync(e+"/../font/data/Times-Bold.afm","utf8")},"Times-Italic":function(){return o.readFileSync(e+"/../font/data/Times-Italic.afm","utf8")},"Times-BoldItalic":function(){return o.readFileSync(e+"/../font/data/Times-BoldItalic.afm","utf8")},Symbol:function(){return o.readFileSync(e+"/../font/data/Symbol.afm","utf8")},ZapfDingbats:function(){return o.readFileSync(e+"/../font/data/ZapfDingbats.afm","utf8")}},a}(),t.exports=a}).call(this)}).call(e,"/")},function(t,e,n){(function(){var e,r;r=n(8),e=function(){var t,e;function n(t){var n,r;this.contents=t,this.attributes={},this.glyphWidths={},this.boundingBoxes={},this.kernPairs={},this.parse(),this.charWidths=function(){var t,n;for(n=[],r=t=0;t<=255;r=++t)n.push(this.glyphWidths[e[r]]);return n}.call(this),this.bbox=function(){var t,e,r,i;for(i=[],t=0,e=(r=this.attributes.FontBBox.split(/\s+/)).length;t<e;t++)n=r[t],i.push(+n);return i}.call(this),this.ascender=+(this.attributes.Ascender||0),this.descender=+(this.attributes.Descender||0),this.lineGap=this.bbox[3]-this.bbox[1]-(this.ascender-this.descender)}return n.open=function(t){return new n(r.readFileSync(t,"utf8"))},n.prototype.parse=function(){var t,e,n,r,i,a,o,s,l,u;for(l="",e=0,r=(s=this.contents.split("\n")).length;e<r;e++)if(a=(i=s[e]).match(/^Start(\w+)/))l=a[1];else if(a=i.match(/^End(\w+)/))l="";else switch(l){case"FontMetrics":n=(a=i.match(/(^\w+)\s+(.*)/))[1],u=a[2],(t=this.attributes[n])?(Array.isArray(t)||(t=this.attributes[n]=[t]),t.push(u)):this.attributes[n]=u;break;case"CharMetrics":if(!/^CH?\s/.test(i))continue;o=i.match(/\bN\s+(\.?\w+)\s*;/)[1],this.glyphWidths[o]=+i.match(/\bWX\s+(\d+)\s*;/)[1];break;case"KernPairs":(a=i.match(/^KPX\s+(\.?\w+)\s+(\.?\w+)\s+(-?\d+)/))&&(this.kernPairs[a[1]+"\0"+a[2]]=parseInt(a[3]))}},t={402:131,8211:150,8212:151,8216:145,8217:146,8218:130,8220:147,8221:148,8222:132,8224:134,8225:135,8226:149,8230:133,8364:128,8240:137,8249:139,8250:155,710:136,8482:153,338:140,339:156,732:152,352:138,353:154,376:159,381:142,382:158},n.prototype.encodeText=function(e){var n,r,i,a,o;for(o=[],r=i=0,a=e.length;0<=a?i<a:i>a;r=0<=a?++i:--i)n=e.charCodeAt(r),n=t[n]||n,o.push(n.toString(16));return o},n.prototype.glyphsForString=function(t){var e,n,r,i,a;for(n=[],r=i=0,a=t.length;0<=a?i<a:i>a;r=0<=a?++i:--i)e=t.charCodeAt(r),n.push(this.characterToGlyph(e));return n},n.prototype.characterToGlyph=function(n){return e[t[n]||n]||".notdef"},n.prototype.widthOfGlyph=function(t){return this.glyphWidths[t]||0},n.prototype.getKernPair=function(t,e){return this.kernPairs[t+"\0"+e]||0},n.prototype.advancesForGlyphs=function(t){var e,n,r,i,a,o;for(e=[],n=r=0,a=t.length;r<a;n=++r)i=t[n],o=t[n+1],e.push(this.widthOfGlyph(i)+this.getKernPair(i,o));return e},e=".notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n\nspace         exclam         quotedbl       numbersign\ndollar        percent        ampersand      quotesingle\nparenleft     parenright     asterisk       plus\ncomma         hyphen         period         slash\nzero          one            two            three\nfour          five           six            seven\neight         nine           colon          semicolon\nless          equal          greater        question\n\nat            A              B              C\nD             E              F              G\nH             I              J              K\nL             M              N              O\nP             Q              R              S\nT             U              V              W\nX             Y              Z              bracketleft\nbackslash     bracketright   asciicircum    underscore\n\ngrave         a              b              c\nd             e              f              g\nh             i              j              k\nl             m              n              o\np             q              r              s\nt             u              v              w\nx             y              z              braceleft\nbar           braceright     asciitilde     .notdef\n\nEuro          .notdef        quotesinglbase florin\nquotedblbase  ellipsis       dagger         daggerdbl\ncircumflex    perthousand    Scaron         guilsinglleft\nOE            .notdef        Zcaron         .notdef\n.notdef       quoteleft      quoteright     quotedblleft\nquotedblright bullet         endash         emdash\ntilde         trademark      scaron         guilsinglright\noe            .notdef        zcaron         ydieresis\n\nspace         exclamdown     cent           sterling\ncurrency      yen            brokenbar      section\ndieresis      copyright      ordfeminine    guillemotleft\nlogicalnot    hyphen         registered     macron\ndegree        plusminus      twosuperior    threesuperior\nacute         mu             paragraph      periodcentered\ncedilla       onesuperior    ordmasculine   guillemotright\nonequarter    onehalf        threequarters  questiondown\n\nAgrave        Aacute         Acircumflex    Atilde\nAdieresis     Aring          AE             Ccedilla\nEgrave        Eacute         Ecircumflex    Edieresis\nIgrave        Iacute         Icircumflex    Idieresis\nEth           Ntilde         Ograve         Oacute\nOcircumflex   Otilde         Odieresis      multiply\nOslash        Ugrave         Uacute         Ucircumflex\nUdieresis     Yacute         Thorn          germandbls\n\nagrave        aacute         acircumflex    atilde\nadieresis     aring          ae             ccedilla\negrave        eacute         ecircumflex    edieresis\nigrave        iacute         icircumflex    idieresis\neth           ntilde         ograve         oacute\nocircumflex   otilde         odieresis      divide\noslash        ugrave         uacute         ucircumflex\nudieresis     yacute         thorn          ydieresis".split(/\s+/),n}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i={}.hasOwnProperty,a=[].slice;r=n(50),n(26),e=function(t){var e;function n(t,e,n){this.document=t,this.font=e,this.id=n,this.subset=this.font.createSubset(),this.unicode=[[0]],this.widths=[this.font.getGlyph(0).advanceWidth],this.name=this.font.postscriptName,this.scale=1e3/this.font.unitsPerEm,this.ascender=this.font.ascent*this.scale,this.descender=this.font.descent*this.scale,this.lineGap=this.font.lineGap*this.scale,this.bbox=this.font.bbox,this.layoutCache=Object.create(null)}return function(t,e){for(var n in e)i.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(n,r),n.prototype.layoutRun=function(t,e){var n,r,i,a,o,s,l;for(n=r=0,a=(s=(l=this.font.layout(t,e)).positions).length;r<a;n=++r){for(i in o=s[n])o[i]*=this.scale;o.advanceWidth=l.glyphs[n].advanceWidth*this.scale}return l},n.prototype.layoutCached=function(t){var e,n;return(e=this.layoutCache[t])?e:(n=this.layoutRun(t),this.layoutCache[t]=n,n)},n.prototype.layout=function(t,e,n){var r,i,a,o,s,l,u;if(null==n&&(n=!1),e)return this.layoutRun(t,e);for(i=n?null:[],s=n?null:[],r=0,o=0,a=0;a<=t.length;)a===t.length&&o<a||" "===(l=t.charAt(a))||"\t"===l?(u=this.layoutCached(t.slice(o,++a)),n||(i.push.apply(i,u.glyphs),s.push.apply(s,u.positions)),r+=u.advanceWidth,o=a):a++;return{glyphs:i,positions:s,advanceWidth:r}},n.prototype.encode=function(t,e){var n,r,i,a,o,s,l,u,c,h,f;for(o=(h=this.layout(t,e)).glyphs,c=h.positions,f=[],s=l=0,u=o.length;l<u;s=++l)a=o[s],i=this.subset.includeGlyph(a.id),f.push(("0000"+i.toString(16)).slice(-4)),null==(n=this.widths)[i]&&(n[i]=a.advanceWidth*this.scale),null==(r=this.unicode)[i]&&(r[i]=a.codePoints);return[f,c]},n.prototype.widthOfString=function(t,e,n){return this.layout(t,n,!0).advanceWidth*(e/1e3)},n.prototype.embed=function(){var t,e,n,r,i,a,o,s,l;return o=null!=this.subset.cff,a=this.document.ref(),o&&(a.data.Subtype="CIDFontType0C"),this.subset.encodeStream().pipe(a),r=((null!=(l=this.font["OS/2"])?l.sFamilyClass:void 0)||0)>>8,i=0,this.font.post.isFixedPitch&&(i|=1),1<=r&&r<=7&&(i|=2),i|=4,10===r&&(i|=8),this.font.head.macStyle.italic&&(i|=64),s=function(){var t,e;for(e=[],t=0;t<6;++t)e.push(String.fromCharCode(26*Math.random()+65));return e}().join("")+"+"+this.font.postscriptName,t=this.font.bbox,n=this.document.ref({Type:"FontDescriptor",FontName:s,Flags:i,FontBBox:[t.minX*this.scale,t.minY*this.scale,t.maxX*this.scale,t.maxY*this.scale],ItalicAngle:this.font.italicAngle,Ascent:this.ascender,Descent:this.descender,CapHeight:(this.font.capHeight||this.font.ascent)*this.scale,XHeight:(this.font.xHeight||0)*this.scale,StemV:0}),o?n.data.FontFile3=a:n.data.FontFile2=a,n.end(),(e=this.document.ref({Type:"Font",Subtype:o?"CIDFontType0":"CIDFontType2",BaseFont:s,CIDSystemInfo:{Registry:new String("Adobe"),Ordering:new String("Identity"),Supplement:0},FontDescriptor:n,W:[0,this.widths]})).end(),this.dictionary.data={Type:"Font",Subtype:"Type0",BaseFont:s,Encoding:"Identity-H",DescendantFonts:[e],ToUnicode:this.toUnicodeCmap()},this.dictionary.end()},e=function(){var t,e;return e=1<=arguments.length?a.call(arguments,0):[],function(){var n,r,i;for(i=[],n=0,r=e.length;n<r;n++)t=e[n],i.push(("0000"+t.toString(16)).slice(-4));return i}().join("")},n.prototype.toUnicodeCmap=function(){var t,n,r,i,a,o,s,l,u,c;for(t=this.document.ref(),i=[],a=0,s=(u=this.unicode).length;a<s;a++){for(r=[],o=0,l=(n=u[a]).length;o<l;o++)(c=n[o])>65535&&(c-=65536,r.push(e(c>>>10&1023|55296)),c=56320|1023&c),r.push(e(c));i.push("<"+r.join(" ")+">")}return t.end("/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n  /Registry (Adobe)\n  /Ordering (UCS)\n  /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange\n1 beginbfrange\n<0000> <"+e(i.length-1)+"> ["+i.join(" ")+"]\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"),t},n}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r;e=n(296),r=n(26).number,t.exports={initText:function(){return this.x=0,this.y=0,this._lineGap=0},lineGap:function(t){return this._lineGap=t,this},moveDown:function(t){return null==t&&(t=1),this.y+=this.currentLineHeight(!0)*t+this._lineGap,this},moveUp:function(t){return null==t&&(t=1),this.y-=this.currentLineHeight(!0)*t+this._lineGap,this},_text:function(t,n,r,i,a){var o,s,l,u;if(t=null==t?"":""+t,(i=this._initOptions(n,r,i)).wordSpacing&&(t=t.replace(/\s{2,}/g," ")),i.width)(u=this._wrapper)||(u=new e(this,i)).on("line",a),this._wrapper=i.continued?u:null,this._textOptions=i.continued?i:null,u.wrap(t,i);else for(o=0,s=(l=t.split("\n")).length;o<s;o++)a(l[o],i);return this},text:function(t,e,n,r){return this._text(t,e,n,r,this._line.bind(this))},widthOfString:function(t,e){return null==e&&(e={}),this._font.widthOfString(t,this._fontSize,e.features)+(e.characterSpacing||0)*(t.length-1)},heightOfString:function(t,e){var n,r,i,a,o;return null==e&&(e={}),this,i=this.x,a=this.y,(e=this._initOptions(e)).height=Infinity,r=e.lineGap||this._lineGap||0,this._text(t,this.x,this.y,e,(o=this,function(t,e){return o.y+=o.currentLineHeight(!0)+r})),n=this.y-a,this.x=i,this.y=a,n},list:function(t,n,r,i,a){var o,s,l,u,c,h,f,d,p,g,y,v;return i=this._initOptions(n,r,i),d=Math.round(this._font.ascender/1e3*this._fontSize/2),p=i.bulletRadius||Math.round(this._font.ascender/1e3*this._fontSize/3),l=i.textIndent||5*p,u=i.bulletIndent||8*p,h=1,c=[],f=[],(o=function(t){var e,n,r,i,a;for(a=[],e=r=0,i=t.length;r<i;e=++r)n=t[e],Array.isArray(n)?(h++,o(n),a.push(h--)):(c.push(n),a.push(f.push(h)));return a})(t),(a=new e(this,i)).on("line",this._line.bind(this)),h=1,s=0,a.on("firstLine",(g=this,function(){var t,e;return(e=f[s++])!==h&&(t=u*(e-h),g.x+=t,a.lineWidth-=t,h=e),g.circle(g.x-l+p,g.y+d,p),g.fill()})),a.on("sectionStart",(y=this,function(){var t;return t=l+u*(h-1),y.x+=t,a.lineWidth-=t})),a.on("sectionEnd",(v=this,function(){var t;return t=l+u*(h-1),v.x-=t,a.lineWidth+=t})),a.wrap(c.join("\n"),i),this},_initOptions:function(t,e,n){var r,i,a;if(null==t&&(t={}),null==n&&(n={}),"object"==typeof t&&(n=t,t=null),n=function(){var t,e,r;for(t in e={},n)r=n[t],e[t]=r;return e}(),this._textOptions)for(r in i=this._textOptions)a=i[r],"continued"!==r&&null==n[r]&&(n[r]=a);return null!=t&&(this.x=t),null!=e&&(this.y=e),!1!==n.lineBreak&&null==n.width&&(n.width=this.page.width-this.x-this.page.margins.right),n.columns||(n.columns=0),null==n.columnGap&&(n.columnGap=18),n},_line:function(t,e,n){var r;return null==e&&(e={}),this._fragment(t,this.x,this.y,e),r=e.lineGap||this._lineGap||0,n?this.y+=this.currentLineHeight(!0)+r:this.x+=this.widthOfString(t)},_fragment:function(t,e,n,i){var a,o,s,l,u,c,h,f,d,p,g,y,v,b,m,w,x,S,_,k,C,A,P,E,I,T,O,L,B,M,R,F,D,z,N,U;if(0!==(t=(""+t).replace(/\n/g,"")).length){if(o=i.align||"left",N=i.wordSpacing||0,l=i.characterSpacing||0,i.width)switch(o){case"right":F=this.widthOfString(t.replace(/\s+$/,""),i),e+=i.lineWidth-F;break;case"center":e+=i.lineWidth/2-i.textWidth/2;break;case"justify":U=t.trim().split(/\s+/),F=this.widthOfString(t.replace(/\s+/g,""),i),R=this.widthOfString(" ")+l,N=Math.max(0,(i.lineWidth-F)/Math.max(1,U.length-1)-R)}if(L=i.textWidth+N*(i.wordCount-1)+l*(t.length-1),i.link&&this.link(e,n,L,this.currentLineHeight(),i.link),(i.underline||i.strike)&&(this.save(),i.stroke||this.strokeColor.apply(this,this._fillColor),x=this._fontSize<10?.5:Math.floor(this._fontSize/10),this.lineWidth(x),c=i.underline?1:2,S=n+this.currentLineHeight()/c,i.underline&&(S-=x),this.moveTo(e,S),this.lineTo(e+L,S),this.stroke(),this.restore()),this.save(),this.transform(1,0,0,-1,0,this.page.height),n=this.page.height-n-this._font.ascender/1e3*this._fontSize,null==(s=this.page.fonts)[C=this._font.id]&&(s[C]=this._font.ref()),this.addContent("BT"),this.addContent("1 0 0 1 "+r(e)+" "+r(n)+" Tm"),this.addContent("/"+this._font.id+" "+r(this._fontSize)+" Tf"),(k=i.fill&&i.stroke?2:i.stroke?1:0)&&this.addContent(k+" Tr"),l&&this.addContent(r(l)+" Tc"),N)for(U=t.trim().split(/\s+/),N+=this.widthOfString(" ")+l,N*=1e3/this._fontSize,h=[],P=[],y=0,m=U.length;y<m;y++){for(v in z=U[y],f=(I=this._font.encode(z,i.features))[0],E=I[1],h.push.apply(h,f),P.push.apply(P,E),M={},T=P[P.length-1])D=T[v],M[v]=D;M.xAdvance+=N,P[P.length-1]=M}else O=this._font.encode(t,i.features),h=O[0],P=O[1];var W;for(B=this._fontSize/1e3,u=[],b=0,p=!1,a=function(t){var e,n;return b<t&&(n=h.slice(b,t).join(""),e=P[t-1].xAdvance-P[t-1].advanceWidth,u.push("<"+n+"> "+r(-e))),b=t},W=this,d=function(t){if(a(t),u.length>0)return W.addContent("["+u.join(" ")+"] TJ"),u.length=0},g=_=0,w=P.length;_<w;g=++_)(A=P[g]).xOffset||A.yOffset?(d(g),this.addContent("1 0 0 1 "+r(e+A.xOffset*B)+" "+r(n+A.yOffset*B)+" Tm"),d(g+1),p=!0):(p&&(this.addContent("1 0 0 1 "+r(e)+" "+r(n)+" Tm"),p=!1),A.xAdvance-A.advanceWidth!=0&&a(g+1)),e+=A.xAdvance*B;return d(g),this.addContent("ET"),this.restore()}}}}).call(this)},function(t,e,n){(function(){var e,r,i,a={}.hasOwnProperty;e=n(31).EventEmitter,r=n(78),i=function(t){function n(t,e){var n,r,i;this.document=t,this.indent=e.indent||0,this.characterSpacing=e.characterSpacing||0,this.wordSpacing=0===e.wordSpacing,this.columns=e.columns||1,this.columnGap=null!=(n=e.columnGap)?n:18,this.lineWidth=(e.width-this.columnGap*(this.columns-1))/this.columns,this.spaceLeft=this.lineWidth,this.startX=this.document.x,this.startY=this.document.y,this.column=1,this.ellipsis=e.ellipsis,this.continuedX=0,this.features=e.features,null!=e.height?(this.height=e.height,this.maxY=this.startY+e.height):this.maxY=this.document.page.maxY(),this.on("firstLine",(r=this,function(t){var e;return e=r.continuedX||r.indent,r.document.x+=e,r.lineWidth-=e,r.once("line",function(){if(r.document.x-=e,r.lineWidth+=e,t.continued&&!r.continuedX&&(r.continuedX=r.indent),!t.continued)return r.continuedX=0})})),this.on("lastLine",(i=this,function(t){var e;return"justify"===(e=t.align)&&(t.align="left"),i.lastLine=!0,i.once("line",function(){return i.document.y+=t.paragraphGap||0,t.align=e,i.lastLine=!1})}))}return function(t,e){for(var n in e)a.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype}(n,e),n.prototype.wordWidth=function(t){return this.document.widthOfString(t,this)+this.characterSpacing+this.wordSpacing},n.prototype.eachWord=function(t,e){var n,i,a,o,s,l,u,c,h,f;for(i=new r(t),s=null,f=Object.create(null);n=i.nextBreak();){if((c=null!=f[h=t.slice((null!=s?s.position:void 0)||0,n.position)]?f[h]:f[h]=this.wordWidth(h))>this.lineWidth+this.continuedX)for(l=s,a={};h.length;){for(o=h.length;c>this.spaceLeft;)c=this.wordWidth(h.slice(0,--o));if(a.required=o<h.length,u=e(h.slice(0,o),c,a,l),l={required:!1},h=h.slice(o),c=this.wordWidth(h),!1===u)break}else u=e(h,c,n,s);if(!1===u)break;s=n}},n.prototype.wrap=function(t,e){var n,r,i,a,o,s,l,u,c;return null!=e.indent&&(this.indent=e.indent),null!=e.characterSpacing&&(this.characterSpacing=e.characterSpacing),null!=e.wordSpacing&&(this.wordSpacing=e.wordSpacing),null!=e.ellipsis&&(this.ellipsis=e.ellipsis),a=this.document.y+this.document.currentLineHeight(!0),(this.document.y>this.maxY||a>this.maxY)&&this.nextSection(),n="",o=0,s=0,i=0,l=this.document.y,u=this,r=function(){return e.textWidth=o+u.wordSpacing*(s-1),e.wordCount=s,e.lineWidth=u.lineWidth,l=u.document.y,u.emit("line",n,e,u),i++},this.emit("sectionStart",e,this),this.eachWord(t,(c=this,function(t,i,a,l){var u;if((null==l||l.required)&&(c.emit("firstLine",e,c),c.spaceLeft=c.lineWidth),i<=c.spaceLeft&&(n+=t,o+=i,s++),a.required||i>c.spaceLeft){if(a.required&&c.emit("lastLine",e,c),u=c.document.currentLineHeight(!0),null!=c.height&&c.ellipsis&&c.document.y+2*u>c.maxY&&c.column>=c.columns){for(!0===c.ellipsis&&(c.ellipsis="…"),n=n.replace(/\s+$/,""),o=c.wordWidth(n+c.ellipsis);o>c.lineWidth;)n=n.slice(0,-1).replace(/\s+$/,""),o=c.wordWidth(n+c.ellipsis);n+=c.ellipsis}return a.required&&i>c.spaceLeft&&(n=t,o=i,s=1),r(),c.document.y+u>c.maxY&&!c.nextSection()?(s=0,n="",!1):a.required?(c.spaceLeft=c.lineWidth,n="",o=0,s=0):(c.spaceLeft=c.lineWidth-i,n=t,o=i,s=1)}return c.spaceLeft-=i})),s>0&&(this.emit("lastLine",e,this),r()),this.emit("sectionEnd",e,this),!0===e.continued?(i>1&&(this.continuedX=0),this.continuedX+=e.textWidth,this.document.y=l):this.document.x=this.startX},n.prototype.nextSection=function(t){var e;if(this.emit("sectionEnd",t,this),++this.column>this.columns){if(null!=this.height)return!1;this.document.addPage(),this.column=1,this.startY=this.document.page.margins.top,this.maxY=this.document.page.maxY(),this.document.x=this.startX,this.document._fillColor&&(e=this.document).fillColor.apply(e,this.document._fillColor),this.emit("pageBreak",t,this)}else this.document.x+=this.lineWidth+this.columnGap,this.document.y=this.startY,this.emit("columnBreak",t,this);return this.emit("sectionStart",t,this),!0},n}(),t.exports=i}).call(this)},function(t,e,n){(function(){var e;e=n(121),t.exports={initImages:function(){return this._imageRegistry={},this._imageCount=0},image:function(t,e,n,r){var i,a,o,s,l,u,c,h,f,d,p,g,y,v,b;return null==r&&(r={}),"object"==typeof e&&(r=e,e=null),e=null!=(d=null!=e?e:r.x)?d:this.x,n=null!=(p=null!=n?n:r.y)?p:this.y,"string"==typeof t&&(c=this._imageRegistry[t]),c||(c=t.width&&t.height?t:this.openImage(t)),c.obj||c.embed(this),null==(i=this.page.xobjects)[f=c.label]&&(i[f]=c.obj),v=r.width||c.width,l=r.height||c.height,r.width&&!r.height?(b=v/c.width,v=c.width*b,l=c.height*b):r.height&&!r.width?(u=l/c.height,v=c.width*u,l=c.height*u):r.scale?(v=c.width*r.scale,l=c.height*r.scale):r.fit?(o=(s=(g=r.fit)[0])/(a=g[1]),(h=c.width/c.height)>o?(v=s,l=s/h):(l=a,v=a*h)):r.cover&&(o=(s=(y=r.cover)[0])/(a=y[1]),(h=c.width/c.height)>o?(l=a,v=a*h):(v=s,l=s/h)),(r.fit||r.cover)&&("center"===r.align?e=e+s/2-v/2:"right"===r.align&&(e=e+s-v),"center"===r.valign?n=n+a/2-l/2:"bottom"===r.valign&&(n=n+a-l)),this.y===n&&(this.y+=l),this.save(),this.transform(v,0,0,-l,e,n+l),this.addContent("/"+c.label+" Do"),this.restore(),this},openImage:function(t){var n;return"string"==typeof t&&(n=this._imageRegistry[t]),n||(n=e.open(t,"I"+ ++this._imageCount),"string"==typeof t&&(this._imageRegistry[t]=n)),n}}}).call(this)},function(t,e){(function(){var e;e=function(){function t(t){this.data=null!=t?t:[],this.pos=0,this.length=this.data.length}return t.prototype.readByte=function(){return this.data[this.pos++]},t.prototype.writeByte=function(t){return this.data[this.pos++]=t},t.prototype.byteAt=function(t){return this.data[t]},t.prototype.readBool=function(){return!!this.readByte()},t.prototype.writeBool=function(t){return this.writeByte(t?1:0)},t.prototype.readUInt32=function(){return 16777216*this.readByte()+(this.readByte()<<16)+(this.readByte()<<8)+this.readByte()},t.prototype.writeUInt32=function(t){return this.writeByte(t>>>24&255),this.writeByte(t>>16&255),this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt32=function(){var t;return(t=this.readUInt32())>=2147483648?t-4294967296:t},t.prototype.writeInt32=function(t){return t<0&&(t+=4294967296),this.writeUInt32(t)},t.prototype.readUInt16=function(){return this.readByte()<<8|this.readByte()},t.prototype.writeUInt16=function(t){return this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt16=function(){var t;return(t=this.readUInt16())>=32768?t-65536:t},t.prototype.writeInt16=function(t){return t<0&&(t+=65536),this.writeUInt16(t)},t.prototype.readString=function(t){var e,n,r,i;for(i=[],e=n=0,r=t;0<=r?n<r:n>r;e=0<=r?++n:--n)i[e]=String.fromCharCode(this.readByte());return i.join("")},t.prototype.writeString=function(t){var e,n,r,i;for(i=[],e=n=0,r=t.length;0<=r?n<r:n>r;e=0<=r?++n:--n)i.push(this.writeByte(t.charCodeAt(e)));return i},t.prototype.stringAt=function(t,e){return this.pos=t,this.readString(e)},t.prototype.readShort=function(){return this.readInt16()},t.prototype.writeShort=function(t){return this.writeInt16(t)},t.prototype.readLongLong=function(){var t,e,n,r,i,a,o,s;return t=this.readByte(),e=this.readByte(),n=this.readByte(),r=this.readByte(),i=this.readByte(),a=this.readByte(),o=this.readByte(),s=this.readByte(),128&t?-1*(72057594037927940*(255^t)+281474976710656*(255^e)+1099511627776*(255^n)+4294967296*(255^r)+16777216*(255^i)+65536*(255^a)+256*(255^o)+(255^s)+1):72057594037927940*t+281474976710656*e+1099511627776*n+4294967296*r+16777216*i+65536*a+256*o+s},t.prototype.writeLongLong=function(t){var e,n;return e=Math.floor(t/4294967296),n=4294967295&t,this.writeByte(e>>24&255),this.writeByte(e>>16&255),this.writeByte(e>>8&255),this.writeByte(255&e),this.writeByte(n>>24&255),this.writeByte(n>>16&255),this.writeByte(n>>8&255),this.writeByte(255&n)},t.prototype.readInt=function(){return this.readInt32()},t.prototype.writeInt=function(t){return this.writeInt32(t)},t.prototype.slice=function(t,e){return this.data.slice(t,e)},t.prototype.read=function(t){var e,n,r;for(e=[],n=0,r=t;0<=r?n<r:n>r;0<=r?++n:--n)e.push(this.readByte());return e},t.prototype.write=function(t){var e,n,r,i;for(i=[],n=0,r=t.length;n<r;n++)e=t[n],i.push(this.writeByte(e));return i},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r=[].indexOf||function(t){for(var e=0,n=this.length;e<n;e++)if(e in this&&this[e]===t)return e;return-1};n(8),e=function(){var t;function e(e,n){var i,a,o;if(this.data=e,this.label=n,65496!==this.data.readUInt16BE(0))throw"SOI not found in JPEG";for(o=2;o<this.data.length&&(a=this.data.readUInt16BE(o),o+=2,!(r.call(t,a)>=0));)o+=this.data.readUInt16BE(o);if(r.call(t,a)<0)throw"Invalid JPEG.";o+=2,this.bits=this.data[o++],this.height=this.data.readUInt16BE(o),o+=2,this.width=this.data.readUInt16BE(o),o+=2,i=this.data[o++],this.colorSpace=function(){switch(i){case 1:return"DeviceGray";case 3:return"DeviceRGB";case 4:return"DeviceCMYK"}}(),this.obj=null}return t=[65472,65473,65474,65475,65477,65478,65479,65480,65481,65482,65483,65484,65485,65486,65487],e.prototype.embed=function(t){if(!this.obj)return this.obj=t.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.bits,Width:this.width,Height:this.height,ColorSpace:this.colorSpace,Filter:"DCTDecode"}),"DeviceCMYK"===this.colorSpace&&(this.obj.data.Decode=[1,0,1,0,1,0,1,0]),this.obj.end(this.data),this.data=null},e}(),t.exports=e}).call(this)},function(t,e,n){(function(e){(function(){var r,i,a;a=n(48),r=n(301),i=function(){function t(t,e){this.label=e,this.image=new r(t),this.width=this.image.width,this.height=this.image.height,this.imgData=this.image.imgData,this.obj=null}return t.prototype.embed=function(t){var n,r,i,a,o,s,l,u;if(this.document=t,!this.obj){if(this.obj=this.document.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.image.bits,Width:this.width,Height:this.height,Filter:"FlateDecode"}),this.image.hasAlphaChannel||(o=this.document.ref({Predictor:15,Colors:this.image.colors,BitsPerComponent:this.image.bits,Columns:this.width}),this.obj.data.DecodeParms=o,o.end()),0===this.image.palette.length?this.obj.data.ColorSpace=this.image.colorSpace:((a=this.document.ref()).end(new e(this.image.palette)),this.obj.data.ColorSpace=["Indexed","DeviceRGB",this.image.palette.length/3-1,a]),this.image.transparency.grayscale)return l=this.image.transparency.greyscale,this.obj.data.Mask=[l,l];if(this.image.transparency.rgb){for(i=[],n=0,r=(s=this.image.transparency.rgb).length;n<r;n++)u=s[n],i.push(u,u);return this.obj.data.Mask=i}return this.image.transparency.indexed?this.loadIndexedAlphaChannel():this.image.hasAlphaChannel?this.splitAlphaChannel():this.finalize()}},t.prototype.finalize=function(){var t;return this.alphaChannel&&((t=this.document.ref({Type:"XObject",Subtype:"Image",Height:this.height,Width:this.width,BitsPerComponent:8,Filter:"FlateDecode",ColorSpace:"DeviceGray",Decode:[0,1]})).end(this.alphaChannel),this.obj.data.SMask=t),this.obj.end(this.imgData),this.image=null,this.imgData=null},t.prototype.splitAlphaChannel=function(){return this.image.decodePixels((t=this,function(n){var r,i,o,s,l,u,c,h,f;for(o=t.image.colors*t.image.bits/8,f=t.width*t.height,u=new e(f*o),i=new e(f),l=h=r=0,c=n.length;l<c;)u[h++]=n[l++],u[h++]=n[l++],u[h++]=n[l++],i[r++]=n[l++];return s=0,a.deflate(u,function(e,n){if(t.imgData=n,e)throw e;if(2==++s)return t.finalize()}),a.deflate(i,function(e,n){if(t.alphaChannel=n,e)throw e;if(2==++s)return t.finalize()})}));var t},t.prototype.loadIndexedAlphaChannel=function(t){var n,r;return n=this.image.transparency.indexed,this.image.decodePixels((r=this,function(t){var i,o,s,l,u;for(i=new e(r.width*r.height),o=0,s=l=0,u=t.length;l<u;s=l+=1)i[o++]=n[t[s]];return a.deflate(i,function(t,e){if(r.alphaChannel=e,t)throw t;return r.finalize()})}))},t}(),t.exports=i}).call(this)}).call(e,n(1).Buffer)},function(t,e,n){(function(e){(function(){var r,i;r=n(8),i=n(48),t.exports=function(){function t(t){var n,r,i,a,o,s,l,u,c;for(this.data=t,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.text={};;){switch(n=this.readUInt32(),function(){var t,e;for(e=[],t=0;t<4;++t)e.push(String.fromCharCode(this.data[this.pos++]));return e}.call(this).join("")){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"PLTE":this.palette=this.read(n);break;case"IDAT":for(l=0;l<n;l+=1)this.imgData.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={},this.colorType){case 3:if(this.transparency.indexed=this.read(n),(o=255-this.transparency.indexed.length)>0)for(u=0;0<=o?u<o:u>o;0<=o?++u:--u)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(n)[0];break;case 2:this.transparency.rgb=this.read(n)}break;case"tEXt":i=(s=this.read(n)).indexOf(0),a=String.fromCharCode.apply(String,s.slice(0,i)),this.text[a]=String.fromCharCode.apply(String,s.slice(i+1));break;case"IEND":return this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(c=this.colorType)||6===c,r=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*r,this.colorSpace=function(){switch(this.colors){case 1:return"DeviceGray";case 3:return"DeviceRGB"}}.call(this),void(this.imgData=new e(this.imgData));default:this.pos+=n}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}return t.decode=function(e,n){return r.readFile(e,function(e,r){return new t(r).decode(function(t){return n(t)})})},t.load=function(e){return new t(r.readFileSync(e))},t.prototype.read=function(t){var e,n;for(n=[],e=0;0<=t?e<t:e>t;0<=t?++e:--e)n.push(this.data[this.pos++]);return n},t.prototype.readUInt32=function(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]},t.prototype.readUInt16=function(){return this.data[this.pos++]<<8|this.data[this.pos++]},t.prototype.decodePixels=function(t){var n=this;return i.inflate(this.imgData,function(r,i){var a,o,s,l,u,c,h,f,d,p,g,y,v,b,m,w,x,S,_,k,C,A,P;if(r)throw r;for(w=(y=n.pixelBitlength/8)*n.width,v=new e(w*n.height),c=i.length,m=0,b=0,o=0;b<c;){switch(i[b++]){case 0:for(l=_=0;_<w;l=_+=1)v[o++]=i[b++];break;case 1:for(l=k=0;k<w;l=k+=1)a=i[b++],u=l<y?0:v[o-y],v[o++]=(a+u)%256;break;case 2:for(l=C=0;C<w;l=C+=1)a=i[b++],s=(l-l%y)/y,x=m&&v[(m-1)*w+s*y+l%y],v[o++]=(x+a)%256;break;case 3:for(l=A=0;A<w;l=A+=1)a=i[b++],s=(l-l%y)/y,u=l<y?0:v[o-y],x=m&&v[(m-1)*w+s*y+l%y],v[o++]=(a+Math.floor((u+x)/2))%256;break;case 4:for(l=P=0;P<w;l=P+=1)a=i[b++],s=(l-l%y)/y,u=l<y?0:v[o-y],0===m?x=S=0:(x=v[(m-1)*w+s*y+l%y],S=s&&v[(m-1)*w+(s-1)*y+l%y]),h=u+x-S,f=Math.abs(h-u),p=Math.abs(h-x),g=Math.abs(h-S),d=f<=p&&f<=g?u:p<=g?x:S,v[o++]=(a+d)%256;break;default:throw new Error("Invalid filter algorithm: "+i[b-1])}m++}return t(v)})},t.prototype.decodePalette=function(){var t,n,r,i,a,o,s,l,u;for(r=this.palette,o=this.transparency.indexed||[],a=new e(o.length+r.length),i=0,r.length,t=0,n=s=0,l=r.length;s<l;n=s+=3)a[i++]=r[n],a[i++]=r[n+1],a[i++]=r[n+2],a[i++]=null!=(u=o[t++])?u:255;return a},t.prototype.copyToImageData=function(t,e){var n,r,i,a,o,s,l,u,c,h,f;if(r=this.colors,c=null,n=this.hasAlphaChannel,this.palette.length&&(c=null!=(f=this._decodedPalette)?f:this._decodedPalette=this.decodePalette(),r=4,n=!0),u=(i=(null!=t?t.data:void 0)||t).length,o=c||e,a=s=0,1===r)for(;a<u;)l=c?4*e[a/4]:s,h=o[l++],i[a++]=h,i[a++]=h,i[a++]=h,i[a++]=n?o[l++]:255,s=l;else for(;a<u;)l=c?4*e[a/4]:s,i[a++]=o[l++],i[a++]=o[l++],i[a++]=o[l++],i[a++]=n?o[l++]:255,s=l},t.prototype.decode=function(t){var n,r=this;return n=new e(this.width*this.height*4),this.decodePixels(function(e){return r.copyToImageData(n,e),t(n)})},t}()}).call(this)}).call(e,n(1).Buffer)},function(t,e){(function(){t.exports={annotate:function(t,e,n,r,i){var a,o,s;for(a in i.Type="Annot",i.Rect=this._convertRect(t,e,n,r),i.Border=[0,0,0],"Link"!==i.Subtype&&null==i.C&&(i.C=this._normalizeColor(i.color||[0,0,0])),delete i.color,"string"==typeof i.Dest&&(i.Dest=new String(i.Dest)),i)s=i[a],i[a[0].toUpperCase()+a.slice(1)]=s;return o=this.ref(i),this.page.annotations.push(o),o.end(),this},note:function(t,e,n,r,i,a){return null==a&&(a={}),a.Subtype="Text",a.Contents=new String(i),a.Name="Comment",null==a.color&&(a.color=[243,223,92]),this.annotate(t,e,n,r,a)},link:function(t,e,n,r,i,a){return null==a&&(a={}),a.Subtype="Link",a.A=this.ref({S:"URI",URI:new String(i)}),a.A.end(),this.annotate(t,e,n,r,a)},_markup:function(t,e,n,r,i){var a,o,s,l,u;return null==i&&(i={}),o=(a=this._convertRect(t,e,n,r))[0],l=a[1],s=a[2],u=a[3],i.QuadPoints=[o,u,s,u,o,l,s,l],i.Contents=new String,this.annotate(t,e,n,r,i)},highlight:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Highlight",null==i.color&&(i.color=[241,238,148]),this._markup(t,e,n,r,i)},underline:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Underline",this._markup(t,e,n,r,i)},strike:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="StrikeOut",this._markup(t,e,n,r,i)},lineAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Line",i.Contents=new String,i.L=[t,this.page.height-e,n,this.page.height-r],this.annotate(t,e,n,r,i)},rectAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Square",i.Contents=new String,this.annotate(t,e,n,r,i)},ellipseAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Circle",i.Contents=new String,this.annotate(t,e,n,r,i)},textAnnotation:function(t,e,n,r,i,a){return null==a&&(a={}),a.Subtype="FreeText",a.Contents=new String(i),a.DA=new String,this.annotate(t,e,n,r,a)},_convertRect:function(t,e,n,r){var i,a,o,s,l,u,c,h,f;return f=e,e+=r,h=t+n,i=(c=this._ctm)[0],a=c[1],o=c[2],s=c[3],[t=i*t+o*e+(l=c[4]),e=a*t+s*e+(u=c[5]),h=i*h+o*f+l,f=a*h+s*f+u]}}}).call(this)},function(t,e,n){"use strict";t.exports={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]}},function(t,e,n){"use strict";(function(e){var r=n(121);function i(t,e){this.pdfKitDoc=t,this.imageDictionary=e||{}}i.prototype.measureImage=function(t){var n,i,a=this;if(this.pdfKitDoc._imageRegistry[t])n=this.pdfKitDoc._imageRegistry[t];else{i="I"+ ++this.pdfKitDoc._imageCount;try{n=r.open(function(t){var n=a.imageDictionary[t];if(!n)return t;var r=n.indexOf("base64,");if(r<0)return a.imageDictionary[t];return e.from(n.substring(r+7),"base64")}(t),i)}catch(t){n=null}if(null==n)throw"invalid image, images dictionary should contain dataURL entries (or local file paths in node.js)";n.embed(this.pdfKitDoc),this.pdfKitDoc._imageRegistry[t]=n}return{width:n.width,height:n.height}},t.exports=i}).call(e,n(1).Buffer)},function(t,e,n){"use strict";var r=n(0).isArray;function i(t,e,n,r){var i=t.inlines[0],a=function(){for(var e=0,n=0,r=t.inlines.length;n<r;n++)e=t.inlines[n].fontSize>e?n:e;return t.inlines[e]}(),o=function(){for(var e=0,n=0,r=t.inlines.length;n<r;n++)e+=t.inlines[n].width;return e}(),s=t.line.getAscenderHeight(),l=a.font.ascender/1e3*a.fontSize,u=a.height-l,c=.5+.12*Math.floor(Math.max(a.fontSize-8,0)/2);switch(t.decoration){case"underline":n+=s+.45*u;break;case"overline":n+=s-.85*l;break;case"lineThrough":n+=s-.25*l;break;default:throw"Unkown decoration : "+t.decoration}if(r.save(),"double"===t.decorationStyle){var h=Math.max(.5,2*c);r.fillColor(t.decorationColor).rect(e+i.x,n-c/2,o,c/2).fill().rect(e+i.x,n+h-c/2,o,c/2).fill()}else if("dashed"===t.decorationStyle){var f=Math.ceil(o/6.8),d=e+i.x;r.rect(d,n,o,c).clip(),r.fillColor(t.decorationColor);for(var p=0;p<f;p++)r.rect(d,n-c/2,3.96,c).fill(),d+=6.8}else if("dotted"===t.decorationStyle){var g=Math.ceil(o/(3*c)),y=e+i.x;r.rect(y,n,o,c).clip(),r.fillColor(t.decorationColor);for(var v=0;v<g;v++)r.rect(y,n-c/2,c,c).fill(),y+=3*c}else if("wavy"===t.decorationStyle){var b=Math.ceil(o/1.4)+1,m=e+i.x-1;r.rect(e+i.x,n-1,o,n+1).clip(),r.lineWidth(.24),r.moveTo(m,n);for(var w=0;w<b;w++)r.bezierCurveTo(m+.7,n-1,m+1.4,n-1,m+.7*3,n).bezierCurveTo(m+2.8,n+1,m+3.5,n+1,m+.7*6,n),m+=.7*6;r.stroke(t.decorationColor)}else r.fillColor(t.decorationColor).rect(e+i.x,n-c/2,o,c).fill();r.restore()}t.exports={drawBackground:function(t,e,n,r){for(var i=t.getHeight(),a=0,o=t.inlines.length;a<o;a++){var s=t.inlines[a];if(s.background){var l=s.justifyShift||0;r.fillColor(s.background).rect(e+s.x-l,n,s.width+l,i).fill()}}},drawDecorations:function(t,e,n,a){for(var o=function(t){for(var e=[],n=null,i=0,a=t.inlines.length;i<a;i++){var o=t.inlines[i],s=o.decoration;if(s){r(s)||(s=[s]);for(var l=o.decorationColor||o.color||"black",u=o.decorationStyle||"solid",c=0,h=s.length;c<h;c++){var f=s[c];n&&f===n.decoration&&u===n.decorationStyle&&l===n.decorationColor&&"lineThrough"!==f?n.inlines.push(o):(n={line:t,decoration:f,decorationColor:l,decorationStyle:u,inlines:[o]},e.push(n))}}else n=null}return e}(t),s=0,l=o.length;s<l;s++)i(o[s],e,n,a)}}},function(t,e,n){var r,i=i||function(t){"use strict";if(!(void 0===t||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var e=t.document,n=function(){return t.URL||t.webkitURL||t},r=e?e.createElementNS("http://www.w3.org/1999/xhtml","a"):[],i="download"in r,a=/constructor/i.test(t.HTMLElement)||t.safari,o=/CriOS\/[\d]+/.test(navigator.userAgent),s=function(e){(t.setImmediate||t.setTimeout)(function(){throw e},0)},l=function(t){setTimeout(function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()},4e4)},u=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},c=function(e,c,h){h||(e=u(e));var f,d=this,p="application/octet-stream"===e.type,g=function(){!function(t,e,n){for(var r=(e=[].concat(e)).length;r--;){var i=t["on"+e[r]];if("function"==typeof i)try{i.call(t,n||t)}catch(t){s(t)}}}(d,"writestart progress write writeend".split(" "))};if(d.readyState=d.INIT,i)return f=n().createObjectURL(e),void setTimeout(function(){var t,e;r.href=f,r.download=c,t=r,e=new MouseEvent("click"),t.dispatchEvent(e),g(),l(f),d.readyState=d.DONE});!function(){if((o||p&&a)&&t.FileReader){var r=new FileReader;return r.onloadend=function(){var e=o?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");t.open(e,"_blank")||(t.location.href=e),e=void 0,d.readyState=d.DONE,g()},r.readAsDataURL(e),void(d.readyState=d.INIT)}f||(f=n().createObjectURL(e)),p?t.location.href=f:t.open(f,"_blank")||(t.location.href=f);d.readyState=d.DONE,g(),l(f)}()},h=c.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,n){return e=e||t.name||"download",n||(t=u(t)),navigator.msSaveOrOpenBlob(t,e)}:(h.abort=function(){},h.readyState=h.INIT=0,h.WRITING=1,h.DONE=2,h.error=h.onwritestart=h.onprogress=h.onwrite=h.onabort=h.onerror=h.onwriteend=null,function(t,e,n){return new c(t,e||t.name||"download",n)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);void 0!==t&&t.exports?t.exports.saveAs=i:null!==n(307)&&null!==n(308)&&(void 0===(r=function(){return i}.call(e,n,e,t))||(t.exports=r))},function(t,e){t.exports=function(){throw new Error("define cannot be used indirect")}},function(t,e){(function(e){t.exports=e}).call(e,{})}])});
+//# sourceMappingURL=pdfmake.min.js.map
Index: public/vendors/dataTable/pdfmake-0.1.36/vfs_fonts.js
===================================================================
--- public/vendors/dataTable/pdfmake-0.1.36/vfs_fonts.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dataTable/pdfmake-0.1.36/vfs_fonts.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = {
+  "Roboto-Italic.ttf": "AAEAAAASAQAABAAgR0RFRtRX1FkAAgp8AAACREdQT1NKcuCzAAIMwAAAUiRHU1VCw4aZEQACXuQAABfoT1MvMqCnsO0AAAGoAAAAYGNtYXBAbb9DAAAafAAABoBjdnQgJEEG5QAAI5QAAABMZnBnbWf0XKsAACD8AAABvGdhc3AACAATAAIKcAAAAAxnbHlmoLsktAAALagAAdn2aGRteCEe/AUAABWQAAAE7GhlYWT4gasAAAABLAAAADZoaGVhDKYSegAAAWQAAAAkaG10eHJO1ygAAAIIAAATiGxvY2EXM5zBAAAj4AAACcZtYXhwBxICWwAAAYgAAAAgbmFtZTlLZFAAAgegAAACrnBvc3T/YQBkAAIKUAAAACBwcmVwdKCP7AAAIrgAAADbAAEAAAACAAAcadIiXw889QAbCAAAAAAAxPARLgAAAADQ206M+jj91QlMCHMAAgAJAAIAAAAAAAAAAQAAB2z+DAAACRb6OP52CUwIAAGzAAAAAAAAAAAAAAAABOIAAQAABOIAkAAWAFYABQABAAAAAAAOAAACAAFzAAYAAQADBAsBkAAFAAAFmgUzAAABHwWaBTMAAAPRAGYCAAAAAgAAAAAAAAAAAOAACv9QACF/AAAAIQAAAABHT09HAAEAAP/9BgD+AABmB5oCACAAAZ8AAAAABDoFsAAgACAAAgOWAGQACgAAAAoAAAH2AAAB9gAAAgkAQwKFAMgE0QBSBGYASgW5ALsE3QA6AWQAqgKxAG0Cvf+PA2IAawRwAEwBkP+PAi4AGQIVADUDPf+PBGYAaARmAPkEZgAXBGYANARmAAUEZgByBGYAcARmAJ0EZgBBBGYAlAHrACsBrv+bA/wAQQRMAHAEGAA6A7QApQcCAEQFGv+vBN8AOwUXAHQFIQA7BHMAOwRUADsFUwB5BZIAOwImAEkEUgAKBOcAOwQ3ADsG0AA7BZIAOwVgAHcE7wA7BWAAbwTRADoEpQAnBKsAqAUSAGcE+gCkBuwAwwTn/9QEswCoBK//6wIZ//8DOQC/Ahn/egNIAE8Div+BAnAAzwRDADMEZQAfBBoARgRqAEsEJgBFArwAdARlAAQEUAAfAewALwHk/xQD+QAgAewALwbXAB4EUgAfBHcARQRl/9cEcwBJAqoAHwQKAC4CkwBDBFEAWwPMAG4F3wCAA+P/xAO2/6UD4//tAqoAOAHuACECqv+MBVEAaQHu//EESABSBIz/8wWSABIEvQBTAeb/9wTM/90DSADbBiMAYgOCAMMDrgBZBFYAgQYkAGEDmADjAvAA6AQvACUC4gBcAuIAbgJ5ANUEb//lA9UAewIQAKUB9v/IAuIA3wORAMADrQAPBbkAuQYPALQGEwCeA7b/0wdL/4QELQAoBWAAIASgADgEpwAeBpcAEwSWAFwEeABEBG8AOQSD/+AFeQA1AfUALgRbAC0EOAAiAiIAIwVqADUEbwAkB3AAVAcWAEcB9wAzBWcAUQKu/0kFXgBnBHkAQgVvAGcE1wBaAf7/CQQhAD4DsQEXA3wBJgOZAOMDWgEHAewBDgKiAQECI/+vA7MA3QLvAMICUv/pAAr9agAK/esACv0LAAr99QAK/NsB6vy7AgcBIQP2APMCEQClBFsAQwWD/7EFUQBpBSD/xAR4AAwFkwBEBHj/2gWZAFQFaACGBTMACgRsAEgEo//wA+0AhARvAEMEOQApBA8AggRvACQEdQBzAo0AhQRW/7cD2AA/BKkAYARv/9wENgBOBG8ASgQWAIcERQBnBYIAQQV5AE8GbgBmBIcAUQQrAGcGIgBmBdsAoQVFAHgIWf/MCGwAQwZaALQFkgBCBO4ANAXg/4sHFf+sBKUAJQWSAEMFiP/KBOoAkwYHAFsFtgBBBVoAzgdXAEIHjgBCBe0AiQbAAEUE6AA2BUUAdAb6AEkE+//oBFQARgR5ADADSwAtBLn/jQX7/6UD+wAhBIUALwQ7AC8Ehv/IBcsAMASEAC8EhQAvA8QAYAWqAEwEowAvBEIAewZQAC8GdQAkBNsAVgYQADAEQQAwBDYANAZfADAETP+/BFAAHwQ2AE4Gn//DBrkALwRwAB8EhQAvBtwAbwYGAE8EPwAuBv4ASQXUACwEt/+6BC//ogbfAFoF5wBOBqcAJgW+ACkIyQBIB58ALgQN/84Dx//KBVEAaQRyAEIE7QCtA+4AhAVRAGoEbwBEBtUAdAX/AFIG3ABvBgYATwUUAGYEMABNBOEAQAAK/OgACv0LAAr+FwAK/jsACvo4AAr6TwQ/AC4E/gA6BHD/1wRLADUDfwAkBMAAQwPwACQE7AA2BGYALQZkALsFYwB0B50AOgWSACQH/ABCBskAJAXKAHEEuABfBv8ArAU9AFcFTwDEBFIAmAVQAOwGCgCKBKMABwTsADUEQwAtBZAAQwRvACQFZwBRBI4APASO//wEnf/4Azr/6QTaADEGawAyBrkATAYvAK0FDQBoBDIArwPyAKAHj//fBk3/2gfIADsGeAAjBNoAagQHAEwFiwCaBQMAfQVFAGoDEgDyA/8AAAf0AAAD/wAAB/QAAAKuAAACBAAAAVwAAARmAAACKQAAAZ8AAADVAAAACgAAAi0AGQItABkFIgCnBhkAmQOU/18BlwCuAZcAiQGV/5gBlwDUAsgAtgLPAJUCtv+UBFEAdwR2//YCpwCgA7EAOQU7ADkA+QAaB3kAlwJeAF8CXgACA5H/7wLiAGEDUAB+BIz/8wYuAAoGaAA5CD8AOgc0ACIGBgAfBGYAUQW3AEMEDABJBFwACgUp//IFMP/lBcQAzAO7AEsIBQA1BOUA6gT6AIIGAQC1BqwAkgalAI8GQwC+BHYATQVtACQElf+sBHkAqwSqAEEIBQBNAgb/GgRpADEETABwA/z/1AQZABkD8wBBAkQAeAKFAHAB/v/jBNcAdARWAFgEcgB0BqoAdAaqAHQE0gB0BnIAKQAKAAAH/v+rCDUAXAQKAGIEhQBBAff/DwGP/70DkgETA4wBEgONARED4ADNA/kAzgPfACID2wDSA5IBEQH4APwEbP+lBDkAHQRkAEcEZwAdA9IAHQO4AB0EkgBMBMcAHQHjACoDvP/2BD0AHQOiAB0F3gAdBMcAHQShAEoERQAdBKEARQQzAB0ECgARBBAAbQRkAEUETwB6BfAAlQQ9/7YEFQB0BA3/3ALiAB0C4gBrAuL/6QLi//sC4v/wAuIAFgLiAB4C4gAvAuIACwLiADYDhACTAqoBCwQk/5oEqABLBS0AQwUHAEQD/gAlBR8ARAP6ACUECgASBB0ABgQlADQDnQAdBE//sAShAEoET/+wA3j/0wSzAB0D2//VBUgAUQT6AH4E1gAMBVIAbARkAEcHE//EByEAHQVUAG0EsgAdBEIAHwUH/4kF5/+vBCgAEQTQAB8ENwAeBKb/xAQJAFgFCgAdBFIAWgYqAB0GgwAdBQAAUAXNAB8ENwAfBGMAIAZOAB0Ebv/fA/z/+gYh/68EYQAeBOwAHgUZAGkFoABQBEcAdASO/7YGOgBsBFIAWgRSAB0FoQAvBK8AQQQoABEEoQBKBB3//wPPAB4H7gAdBJH/3QRlAB8EHABDBHoARwRzACQDaACpBHT/1wSDAEYEJgBFBGUANQVhAIEFjACEBXIARAW9AIUFwACFA8IAuwRpADkDnQAdBEH/gQS0/9MC4gCQAuIAYQLiAIkC4gCRAuIAogLiAH4C4gCpBFP/1QQYACsGewBJBJ8APwTkAGQCAP8JAf//CQH2AC4B9v96AfYALgH2//EEOQAdAfYAAAIuABkFPwAvBT8ALwRuAD0EqwCoApP/9AUa/68FGv+vBRr/rwUa/68FGv+vBRr/rwUa/68FFwB0BHMAOwRzADsEcwA7BHMAOwImAEkCJgBJAiYASQImAEkFkgA7BWAAdwVgAHcFYAB3BWAAdwVgAHcFEgBnBRIAZwUSAGcFEgBnBLMAqARDADMEQwAzBEMAMwRDADMEQwAzBEMAMwRDADMEGgBGBCYARQQmAEUEJgBFBCYARQH1AC4B9QAuAfUALgH1AC4EUgAfBHcARQR3AEUEdwBFBHcARQR3AEUEUQBbBFEAWwRRAFsEUQBbA7b/pQO2/6UFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFFwB0BBoARgUXAHQEGgBGBRcAdAQaAEYFFwB0BBoARgUhADsFAABLBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQVTAHkEZQAEBVMAeQRlAAQFUwB5BGUABAVTAHkEZQAEBZIAOwRQAB8CJgBJAfUAEQImAEkB9QAaAiYASQH1AC4CJv+OAez/cAImAEkGeABJA9AALwRSAAoB/v8JBOcAOwP5ACAENwA7AewALwQ3ADsB7P+jBDcAOwKCAC8ENwA7AsgALwWSADsEUgAfBZIAOwRSAB8FkgA7BFIAHwRSAB8FYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUE0QA6AqoAHwTRADoCqv+fBNEAOgKqAB8EpQAnBAoALgSlACcECgAuBKUAJwQKAC4EpQAnBAoALgSlACcECgAuBKsAqAKTAEMEqwCoApMAQwSrAKgCuwBDBRIAZwRRAFsFEgBnBFEAWwUSAGcEUQBbBRIAZwRRAFsFEgBnBFEAWwUSAGcEUQBbBuwAwwXfAIAEswCoA7b/pQSzAKgEr//rA+P/7QSv/+sD4//tBK//6wPj/+0HS/+EBpcAEwVgACAEbwA5BGf/sARn/7AEEABtBGz/pQRs/6UEbP+lBGz/pQRs/6UEbP+lBGz/pQRkAEcD0gAdA9IAHQPSAB0D0gAdAeMAKgHjACoB4wAqAeMAKgTHAB0EoQBKBKEASgShAEoEoQBKBKEASgRkAEUEZABFBGQARQRkAEUEFQB0BGz/pQRs/6UEbP+lBGQARwRkAEcEZABHBGQARwRnAB0D0gAdA9IAHQPSAB0D0gAdA9IAHQSSAEwEkgBMBJIATASSAEwExwAdAeMADwHjABgB4wAqAeP/egHjACoDvP/2BD0AHQOiAB0DogAdA6IAHQOiAB0ExwAdBMcAHQTHAB0EoQBKBKEASgShAEoEMwAdBDMAHQQzAB0ECgARBAoAEQQKABEECgARBBAAbQQQAG0EEABtBGQARQRkAEUEZABFBGQARQRkAEUEZABFBfAAlQQVAHQEFQB0BA3/3AQN/9wEDf/cBRr/rwTXAGMF9gBxAooAdwV0AGoFF//uBUcAHgKNACAFGv+vBN8AOwRzADsEr//rBZIAOwImAEkE5wA7BtAAOwWSADsFYAB3BO8AOwSrAKgEswCoBOf/1AImAEkEswCoBGwASAQ5ACkEbwAkAo0AhQRFAGcEWwAtBHcARQRv/+UDzABuA+P/xAKNAGcERQBnBHcARQRFAGcGbgBmBHMAOwRbAEMEpQAnAiYASQImAEkEUgAKBQcARATnADsE6gCTBRr/rwTfADsEWwBDBHMAOwWSAEMG0AA7BZIAOwVgAHcFkwBEBO8AOwUXAHQEqwCoBOf/1ARDADMEJgBFBIUALwR3AEUEZf/XBBoARgO2/6UD4//EBCYARQNLAC0ECgAuAewALwH1AC4B5P8UBDsALwO2/6UG7ADDBd8AgAbsAMMF3wCABuwAwwXfAIAEswCoA7b/pQFkAKoChQDIBBIAQwH+/wkBlwCJBtAAOwbXAB4FGv+vBEMAMwRzADsFkgBDBCYARQSFAC8FaACGBXkATwTtAK0D7gCECC0ARQkWAHcEpQAlA/sAIQUXAHQEGgBGBLMAqAPtAIQCJgBJBxX/rAX7/6UCJgBJBRr/rwRDADMFGv+vBEMAMwdL/4QGlwATBHMAOwQmAEUFZwBRBCEAPgQhAD4HFf+sBfv/pQSlACUD+wAhBZIAQwSFAC8FkgBDBIUALwVgAHcEdwBFBVEAaQRyAEIFUQBpBHIAQgVFAHQENgA0BOoAkwO2/6UE6gCTA7b/pQTqAJMDtv+lBVoAzgRCAHsGwABFBhAAMATn/9QD4//EBGoASwWI/8oEhv/IBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQImAEkB9QAuAiYADgHs//EFYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUFYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUFYAB3BHcARQVeAGcEeQBCBV4AZwR5AEIFXgBnBHkAQgVeAGcEeQBCBV4AZwR5AEIFEgBnBFEAWwUSAGcEUQBbBW8AZwTXAFoFbwBnBNcAWgVvAGcE1wBaBW8AZwTXAFoFbwBnBNcAWgSzAKgDtv+lBLMAqAO2/6UEswCoA7b/pQSIAEsEiAAABQcARAQ7AC8FkgA7BIQALwSrAKgDxABgBOf/1APj/8QFWgDOBEIAewVaAM4EQgB7BFsAQwNLAC0HFf+sBfv/pQYKAIoEowAHBFAAHwToACsE6AArBFsAEANL/+YFGwBYBBIAOQWSAEMEhQAvBZIAOwSEAC8G0AA7BcsAMAWI/8oEhv/IBLMAqAPtAF0E5//UA+P/xAQ5ACkEVP/XBhkAmQRmABcEZgA0BGYABQRmAHIEegCUBI4AfAVTAHkEZQAEBZIAOwRSAB8FGv+vBEMAMwRzADsEJgBFAib/3wH1/40FYAB3BHcARQTRADoCqgAfBRIAZwRRAFsEj/+yBN8AOwRlAB8FIQA7BGoASwUhADsEagBLBZIAOwRQAB8E5wA7A/kAIATnADsD+QAgBDcAOwHs//IG0AA7BtcAHgWSADsEUgAfBO8AOwRl/9cE0QA6Aqr/7gSlACcECgAuBKsAqAKTAEME+gCkA8wAbgT6AKQDzABuBuwAwwXfAIAEr//rA+P/7QWm/wwEbP+lBA7/4QUD//0CHwABBKsAHQRR/5sE4AAWBGz/pQQ5AB0D0gAdBA3/3ATHAB0B4wAqBD0AHQXeAB0EoQBKBEUAHQQQAG0EFQB0BD3/tgHjACoEFQB0A9IAHQOdAB0ECgARAeMAKgHjACoDvP/2BD0AHQQJAFgEbP+lBDkAHQOdAB0D0gAdBNAAHwXeAB0ExwAdBKEASgSzAB0ERQAdBGQARwQQAG0EPf+2BCgAEQTHAB0EZABIBBUAdAWhAC8E0AAfBAkAWAVIAFEFGv+vBEMAMwRzADsEJgBFAAAAAQAABOQJCgQAAAICAgMFBQYFAgMDBAUCAgIEBQUFBQUFBQUFBQICBAUFBAgGBQYGBQUGBgIFBgUIBgYGBgUFBQYGCAYFBQIEAgQEAwUFBQUFAwUFAgIEAggFBQUFAwUDBQQHBAQEAwIDBgIFBQYFAgUEBwQEBQcEAwUDAwMFBAICAwQEBgcHBAgFBgUFBwUFBQUGAgUFAgYFCAgCBgMGBQYFAgUEBAQEAgMCBAMDAAAAAAACAgQCBQYGBgUGBQYGBgUFBAUFBQUFAwUEBQUFBQUFBgYHBQUHBwYJCQcGBgcIBQYGBgcGBggJBwgGBggGBQUEBQcEBQUFBwUFBAYFBQcHBQcFBQcFBQUHCAUFCAcFCAcFBQgHBwYKCQUEBgUGBAYFCAcIBwYFBQAAAAAAAAUGBQUEBQQGBQcGCQYJCAcFCAYGBQYHBQYFBgUGBQUFBAUHCAcGBQQJBwkHBQUGBgYDBQkFCQMCAgUCAgEAAgIGBwQCAgICAwMDBQUDBAYBCAMDBAMEBQcHCQgHBQYFBQYGBgQJBgYHCAcHBQYFBQUJAgUFBAUEAwMCBQUFCAgFBwAJCQUFAgIEBAQEBAQEBAIFBQUFBAQFBQIEBQQHBQUFBQUFBQUFBwUFBQMDAwMDAwMDAwMEAwUFBgYEBgQFBQUEBQUFBAUEBgYFBgUICAYFBQYHBQUFBQUGBQcHBgcFBQcFBAcFBgYGBQUHBQUGBQUFBQQJBQUFBQUEBQUFBQYGBgYGBAUEBQUDAwMDAwMDBQUHBQYCAgICAgIFAgIGBgUFAwYGBgYGBgYGBQUFBQICAgIGBgYGBgYGBgYGBQUFBQUFBQUFBQUFBQICAgIFBQUFBQUFBQUFBAQGBQYFBgUGBQYFBgUGBQYGBQUFBQUFBQUFBQYFBgUGBQYFBgUCAgICAgICAgIHBAUCBgQFAgUCBQMFAwYFBgUGBQUGBQYFBgUFAwUDBQMFBQUFBQUFBQUFBQMFAwUDBgUGBQYFBgUGBQYFCAcFBAUFBAUEBQQIBwYFBQUFBQUF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c3dzd3N/c4dzkXObc7Jz0XPvdA50LnQ6dEZ0d3S4dR11QnVOdV51cnZGdmJ2f3aSdqZ273d6eBx4qXi1eXh503pZewR7ZnvpfEd8uH1dfcl+W368fyR/Pn9Yf3J/jH//gCeAYYB9gLKBO4GBgfiCOYJHglWCjoKbgsKC24Lng0qDo4Q3hMKFQ4YXhheHlIfxiCKIgIiviMWJKIl6ibqKLIqFisWLCItIi2KLqIwejHqMx40TjU+Nto4EjiKOWI6cjsSPFo9Uj7OQA5BhkLWRI5FPkYuRvpISkleSi5LIkxuTRpOVlAaUSJSolQiVNZW+liCWN5aBlz6XuZgtmHyYwpkEmUyZzJo4mq+a2psQm4ibuZwHnDqcepzunVCdu54enoyfA597n9KgDaBpoMGhN6G8ofqiS6KUotijE6Nbo5uj5aRApEyknaURpZyl+aZIptCnM6eYp/iooqiuqQGpTamiqeuqZarSqzerq6xHrM6tb63irk+uqK8Tr5yvpLAQsH6w6bFysdWyQLKSsvSzWrOFs9q0BLRdtKG0tbTJtNu077UBtRi1LLWOtba2RLa0tw23FbcdtyW3MLc4t0S3sLewt7i4KLiYuPq5QLmoub+51rntugS6HLovuju6R7peunC6h7qaurG6w7rauu27BLsbuy27RLtbu267hbuXu667wbvTu+q7/LwSvCO8NrxJvFW8Ybx4vIq8oLyzvMm82rzxvQm9Gr0xvUO9Wb1qvX29lL2mvby9z73hvfO+Cr4gvje+Sb62v2S/dr+Iv5q/q7+9v8+/4b/ywATAEMAiwDPARcBXwGnAe8DvwX3Bj8GgwbLBw8HVwefB+cILwhfCKcI7wk/CYcJzwoXCl8KpwrvCxsLRwuPC78L7ww3DH8MrwzfDScNbw2fDc8OIw5TDoMOsw77D0MPcw+jD+sQLxBfEKcQ6xEzEXsRxxITElsSoxLTEwMTSxOPE9cUHxRnFKsU2xULFTsVaxWzFfcWJxZXFocWtxb/Fy8Xdxe7GAMYRxiPGNcZIxlvGbsaBxuLHUcdjx3XHh8eYx6vHvcfPx+HH88gFyBbILchEyFvIcsiVyLjIyMjfyPHJB8kYySvJPslKyVbJbcl/yZDJosm4ycnJ28nuygDKF8opyjvKTcpgynfKicqayq3Kv8rQyuLLSctby2zLfsuQy6HLssvDy9XMT8xg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AdMAAAEHAKEBFwAeAAkAsAcvsBPcMDEA////3AAABA4GIAImAdMAAAEGAJ5VHwAJALAHL7AO3DAxAP///68AAASLBj8CJgAlAAAABgCtBAD//wBjAAAFFQY/ACYAKWQAAAcArf9CAAD//wBxAAAF2wZBACYALGQAAAcArf9QAAL//wB3AAACZQZAACYALWQAAAcArf9WAAH//wBq/+cFIQY/ACYAMxQAAAcArf9JAAD////uAAAFlgY/ACYAPWQAAAcArf7NAAD//wAeAAAE7gY/ACYAuRQAAAcArf9MAAD//wAg//QDGwZ0AiYAwgAAAQcArv8t/+wAHACwAEVYsA4vG7EOGD5ZsBvcsBHQsBsQsCTQMDH///+vAAAEiwWwAgYAJQAA//8AOwAABKAFsAIGACYAAP//ADsAAASxBbACBgApAAD////rAAAEzgWwAgYAPgAA//8AOwAABXcFsAIGACwAAP//AEkAAAIBBbACBgAtAAD//wA7AAAFUAWwAgYALwAA//8AOwAABrcFsAIGADEAAP//ADsAAAV3BbACBgAyAAD//wB3/+cFDQXIAgYAMwAA//8AOwAABPMFsAIGADQAAP//AKgAAAUJBbACBgA4AAD//wCoAAAFMgWwAgYAPQAA////1AAABSsFsAIGADwAAP//AEkAAAMKBwkCJgAtAAABBwBq/7gBQgAMALACL7AZ3LAE0DAx//8AqAAABTIG/QImAD0AAAEHAGoA/QE2AAwAsAEvsB7csAnQMDH//wBI/+cEMgY6AiYAugAAAQcArQFo//sACQCwFS+wKNwwMQD//wAp/+cD5QY5AiYAvgAAAQcArQEh//oACQCwGi+wK9wwMQD//wAk/mED8wY6AiYAwAAAAQcArQE7//sACQCwAy+wFdwwMQD//wCF//QCZQYlAiYAwgAAAQYArSTmAAkAsAAvsBHcMDEA//8AZ//lBAoGdAImAMoAAAEGAK4c7AASALALL7Ar3LAW0LArELAa0DAx//8ALQAABFcEOgIGAI0AAP//AEX/6AQfBFICBgBTAAD////l/mAEJQQ6AgYAdgAA//8AbgAAA+0EOgIGAFoAAP///8QAAAP0BDoCBgBcAAD//wBn//QC3gWzAiYAwgAAAQYAaozsAAwAsAAvsCTcsA/QMDH//wBn/+UD+gWzAiYAygAAAQYAanvs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3LAi0DAx//8Ak//mBUAG+gImAN0AAAEHAHAA7AFKAAkAsAEvsBHcMDEA////pf5FA+wFuAImAF0AAAEGAHAvCAAJALABL7AQ3DAxAP//AJP/5gVABwkCJgDdAAABBwBqARsBQgAMALABL7Am3LAR0DAx////pf5FA+wFxwImAF0AAAEGAGpeAAAMALABL7Al3LAQ0DAx//8Ak//mBUAHQQImAN0AAAEHAKUBXQFCABYAsABFWLABLxuxARw+WbAT3LAX0DAx////pf5FBF4F/wImAF0AAAEHAKUAoAAAABYAsABFWLABLxuxARg+WbAS3LAW0DAx//8AzgAABUQHCQImAOAAAAEHAGoBRAFCABYAsABFWLASLxuxEhw+WbAo3LAc0DAx//8AewAABAAFswImAPgAAAEGAGpp7AAMALAIL7Ao3LAT0DAx//8ARQAABpYHCQAmAOUPAAAnAC0ElQAAAQcAagIIAUIAFgCwAEVYsAovG7EKHD5ZsCHcsC3QMDH//wAwAAAFqQWzACYA/QAAACcAjAQKAAABBwBqAWr/7AAWALAARViwCi8bsQoYPlmwIdywLdAwMf///9T+RQUrBbACJgA8AAAABwGvA5UAAP///8T+RQP0BDoCJgBcAAAABwGvAqoAAP//AEv/6AR1BgACBgBIAAD////K/kUFZQWwAiYA3AAAAAcBrwQkAAD////I/kUESgQ6AiYA8QAAAAcBrwM7AAD///+v/p8EiwWwAiYAJQAAAAcArATcAAD//wAz/p8DzwRRAiYARQAAAAcArAQpAAD///+vAAAEiwe5AiYAJQAAAQcAqgUBAUYACQCwBC+wGNwwMQD//wAz/+gDzwaDAiYARQAAAQcAqgRzABAACQCwGC+wOdwwMQD///+vAAAF7QfDAiYAJQAAAQcBtwDyAS4AFgCwAEVYsAUvG7EFHD5ZsA7csBTQMDH//wAz/+gFXwaOAiYARQAAAQYBt2T5ABYAsABFWLAYLxuxGBg+WbAv3LA10DAx////rwAABIsHvwImACUAAAEHAbYA+AE9ABYAsABFWLAFLxuxBRw+WbAM3LAT0DAx//8AM//oA/0GiQImAEUAAAEGAbZqBwAWALAARViwGC8bsRgYPlmwL9ywNNAwMf///68AAAVsB+oCJgAlAAABBwG1APMBGwAWALAARViwBS8bsQUcPlmwDNywINAwMf//ADP/6ATeBrUCJgBFAAABBgG1ZeYAFgCwAEVYsBgvG7EYGD5ZsC/csDPQMDH///+vAAAEiwfZAiYAJQAAAQcBtADvAQYAFgCwAEVYsAQvG7EEHD5ZsA7csBXQMDH//wAz/+gD9wakAiYARQAAAQYBtGHRABYAsABFWLAYLxuxGBg+WbAt3LA20DAx////r/6fBIsHNgImACUAAAAnAJ0A+QE2AQcArATcAAAAEwCwAEVYsAQvG7EEHD5ZsBDcMDEA//8AM/6fA88GAAImAEUAAAAmAJ1rAAEHAKwEKQAAABMAsABFWLAYLxuxGBg+WbAx3DAxAP///68AAASLB7cCJgAlAAABBwGzARcBLQAMALAEL7AO3LAa0DAx//8AM//oA+UGggImAEUAAAEHAbMAif/4AAwAsBgvsC/csDvQMDH///+vAAAEiwe3AiYAJQAAAQcBuAEXAS0ADACwBC+wDtywGtAwMf//ADP/6APlBoICJgBFAAABBwG4AIn/+AAMALAYL7Av3LA70DAx////rwAABIsIQAImACUAAAEHAbIBHgE9AAwAsAQvsA7csBfQMDH//wAz/+gD1QcKAiYARQAAAQcBsgCQAAcADACwGC+wL9ywONAwMf///68AAASSCBQCJgAlAAABBwGxAR8BRQAMALAEL7AO3LAX0DAx//8AM//oBAQG3gImAEUAAAEHAbEAkQAPAAwAsBgvsC/csDjQMDH///+v/p8EiwcPAiYAJQAAACcAoAEuATcBBwCsBNwAAAATALAARViwBC8bsQQcPlmwDtwwMQD//wAz/p8D7AXZAiYARQAAACcAoACgAAEBBwCsBCkAAAATALAARViwGC8bsRgYPlmwL9wwMQD//wA7/qkEsQWwAiYAKQAAAAcArASdAAr//wBF/p8D4ARRAiYASQAAAAcArAR0AAD//wA7AAAEsQfFAiYAKQAAAQcAqgTPAVIACQCwBi+wGdwwMQD//wBF/+oD4AaDAiYASQAAAQcAqgRYABAACQCwCC+wLdwwMQD//wA7AAAEsQctAiYAKQAAAQcApADPAUYACQCwBi+wFtwwMQD//wBF/+oEBgXrAiYASQAAAQYApFgEAAkAsAgvsCrcMDEA//8AOwAABbsHzwImACkAAAEHAbcAwAE6ABYAsABFWLAGLxuxBhw+WbAR3LAV0DAx//8ARf/qBUQGjgImAEkAAAEGAbdJ+QAWALAARViwCC8bsQgYPlmwI9ywKdAwMf//ADsAAASxB8sCJgApAAABBwG2AMYBSQAWALAARViwBi8bsQYcPlmwD9ywFNAwMf//AEX/6gPiBokCJgBJAAABBgG2TwcAFgCwAEVYsAgvG7EIGD5ZsCPcsCjQMDH//wA7AAAFOgf2AiYAKQAAAQcBtQDBAScAFgCwAEVYsAYvG7EGHD5ZsA/csCHQMDH//wBF/+oEwwa1AiYASQAAAQYBtUrmABYAsABFWLAILxuxCBg+WbAh3LA10DAx//8AOwAABLEH5QImACkAAAEHAbQAvQESABYAsABFWLAGLxuxBhw+WbAP3LAW0DAx//8ARf/qA+AGpAImAEkAAAEGAbRG0QAWALAARViwCC8bsQgYPlmwI9ywKtAwMf//ADv+qQSxB0ICJgApAAAAJwCdAMcBQgEHAKwEnQAKABMAsABFWLAGLxuxBhw+WbAR3DAxAP//AEX+nwPgBgACJgBJAAAAJgCdUAABBwCsBHQAAAATALAARViwCC8bsQgYPlmwJdwwMQD//wBJAAACuwfFAiYALQAAAQcAqgOFAVIACQCwAi+wEdwwMQD//wAuAAACaQaBAiYAjAAAAQcAqgMzAA4ACQCwAi+wEdwwMQD//wAO/qgCAQWwAiYALQAAAAcArANTAAn////x/qkB4wXHAiYATQAAAAcArAM2AAr//wB3/p8FDQXIAiYAMwAAAAcArATxAAD//wBF/p8EHwRSAiYAUwAAAAcArASEAAD//wB3/+cFDQe7AiYAMwAAAQcAqgUiAUgACQCwCi+wMNwwMQD//wBF/+gEHwaDAiYAUwAAAQcAqgRhABAACQCwAC+wMNwwMQD//wB3/+cGDgfFAiYAMwAAAQcBtwETATAAFgCwAEVYsAovG7EKHD5ZsCbcsCzQMDH//wBF/+gFTQaOAiYAUwAAAQYBt1L5ABYAsABFWLAALxuxABg+WbAm3LAs0DAx//8Ad//nBQ0HwQImADMAAAEHAbYBGQE/ABYAsABFWLAKLxuxChw+WbAm3LAr0DAx//8ARf/oBB8GiQImAFMAAAEGAbZYBwAWALAARViwAC8bsQAYPlmwJtywK9AwMf//AHf/5wWNB+wCJgAzAAABBwG1ARQBHQAWALAARViwCi8bsQocPlmwJtywKtAwMf//AEX/6ATMBrUCJgBTAAABBgG1U+YAFgCwAEVYsAAvG7EAGD5ZsCTcsDjQMDH//wB3/+cFDQfbAiYAMwAAAQcBtAEQAQgAFgCwAEVYsAovG7EKHD5ZsCTcsC3QMDH//wBF/+gEHwakAiYAUwAAAQYBtE/RABYAsABFWLAALxuxABg+WbAk3LAt0DAx//8Ad/6fBQ0HOAImADMAAAAnAJ0BGgE4AQcArATxAAAAEwCwAEVYsAovG7EKHD5ZsCjcMDEA//8ARf6fBB8GAAImAFMAAAAmAJ1ZAAEHAKwEhAAAABMAsABFWLAALxuxABg+WbAo3DAxAP//AGf/6QYbBy8CJgCXAAABBwB1Ag8BMQATALAARViwCi8bsQocPlmwK9wwMQD//wBC/+cE/wX+AiYAmAAAAQcAdQFmAAAAEwCwAEVYsAAvG7EAGD5ZsCjcMDEA//8AZ//pBhsHLwImAJcAAAEHAEQBhQExABMAsABFWLAKLxuxChw+WbAq3DAxAP//AEL/5wT/Bf4CJgCYAAABBwBEANwAAAATALAARViwAC8bsQAYPlmwJ9wwMQD//wBn/+kGGwe0AiYAlwAAAQcAqgUdAUEAEwCwAEVYsAovG7EKHD5ZsCncMDEA//8AQv/nBP8GgwImAJgAAAEHAKoEdAAQABMAsABFWLAALxuxABg+WbAm3DAxAP//AGf/6QYbBxwCJgCXAAABBwCkAR0BNQATALAARViwCi8bsQocPlmwLNwwMQD//wBC/+cE/wXrAiYAmAAAAQYApHQEABMAsABFWLAALxuxABg+WbAp3DAxAP//AGf+nwYbBjcCJgCXAAAABwCsBOMAAP//AEL+lgT/BLACJgCYAAAABwCsBHb/9///AGf+nwUgBbACJgA5AAAABwCsBMgAAP//AFv+nwQeBDoCJgBZAAAABwCsBDAAAP//AGf/5wUgB7kCJgA5AAABBwCqBPwBRgAJALAAL7Ag3DAxAP//AFv/6AQeBoMCJgBZAAABBwCqBGUAEAAJALAGL7Ah3DAxAP//AGf/6AaaB0ACJgCZAAABBwB1AgkBQgATALAARViwGi8bsRocPlmwHdwwMQD//wBa/+gFTgXqAiYAmgAAAQcAdQFg/+wAEwCwAEVYsBYvG7EWGD5ZsB7cMDEA//8AZ//oBpoHQAImAJkAAAEHAEQBfwFCABMAsABFWLASLxuxEhw+WbAc3DAxAP//AFr/6AVOBeoCJgCaAAABBwBEANb/7AATALAARViwDS8bsQ0YPlmwHdwwMQD//wBn/+gGmgfFAiYAmQAAAQcAqgUXAVIAEwCwAEVYsBovG7EaHD5ZsCjcMDEA//8AWv/oBU4GbwImAJoAAAEHAKoEbv/8ABMAsABFWLANLxuxDRg+WbAc3DAxAP//AGf/6AaaBy0CJgCZAAABBwCkARcBRgATALAARViwGi8bsRocPlmwHtwwMQD//wBa/+gFTgXXAiYAmgAAAQYApG7wABMAsABFWLAWLxuxFhg+WbAf3DAxAP//AGf+lwaaBgICJgCZAAAABwCsBOH/+P//AFr+nwVOBJECJgCaAAAABwCsBDYAAP//AKj+nwUyBbACJgA9AAAABwCsBJcAAP///6X+AgPsBDoCJgBdAAAABwCsBNr/Y///AKgAAAUyB7kCJgA9AAABBwCqBMsBRgAJALABL7AW3DAxAP///6X+RQPsBoMCJgBdAAABBwCqBCwAEAAJALABL7Ad3DAxAP//AKgAAAUyByECJgA9AAABBwCkAMsBOgAJALABL7AT3DAxAP///6X+RQPsBesCJgBdAAABBgCkLAQACQCwAS+wGtwwMQAAAgBL/+gFEQYAABkAJQB8ALAWL7AARViwDy8bsQ8YPlmwAEVYsAMvG7EDED5ZsABFWLAGLxuxBhA+WbIPFgFdsi8WAV2yFAMWERI5sBQvsBjQsgEBCitYIdgb9FmyBAYPERI5shEPBhESObAS0LAGELIdAQorWCHYG/RZsA8QsiIBCitYIdgb9FkwMQEjAyM3BicmJicmNzYSNhcWFxMjNzM3MwczAQYWFxY3EyYnJgYGBPa11qUTgLyWsgcDCBSO0H21YTD8G/0ctRq2+/ADbGidelY8nmujVQTS+y50jAQE4787UqUBCoQDBIABB5eXl/xOj54CB6UB9JQEA4fz//8AAP7NBREGAAAmAEgAAAAnAd4B+QJHAAcAQwB//2T//wBE/pgFagWwAiYB4wAAAAcBsAQC/////wAv/pkEVwQ6AiYA8AAAAAcBsANGAAD//wA7/pkFdwWwAiYALAAAAAcBsARlAAD//wAv/pkENgQ6AiYA8wAAAAcBsANmAAD//wCo/pkFCQWwAiYAOAAAAAcBsAItAAD//wBg/pkD6AQ6AiYA9QAAAAcBsAG4AAD////U/pkFKwWwAiYAPAAAAAcBsAPDAAD////E/pkD9AQ6AiYAXAAAAAcBsALYAAD//wDO/pkFRAWwAiYA4AAAAAcBsAQkAAD//wB7/pkEAAQ7AiYA+AAAAAcBsAMkAAD//wDO/pkFRAWwAiYA4AAAAAcBsALnAAD//wB7/pkEAAQ7AiYA+AAAAAcBsAHmAAD//wBD/pkEpQWwAiYAsAAAAAcBsADnAAD//wAt/pkDgwQ6AiYA6wAAAAcBsADOAAD///+s/pkHdQWwAiYA2QAAAAcBsAYwAAD///+l/pkGDgQ6AiYA7QAAAAcBsAT0AAD//wCK/lUFxQXIAiYBPwAAAAcBsALj/7z//wAH/lkERwRTAiYBQAAAAAcBsAHn/8D//wAfAAAD4wYAAgYATAAAAAIAKwAABIEFsAASABsAbrIVHB0REjmwFRCwANAAsABFWLAPLxuxDxw+WbAARViwCS8bsQkQPlmyDg8JERI5sA4vsgsBCitYIdgb9FmwANCyAg8JERI5sAIvsA4QsBHQsAIQshMBCitYIdgb9FmwCRCyFAEKK1gh2Bv0WTAxASMHBRYWBwYEIyETIzczNzMHMwEDBTI2NzYmJwKV5CoBNtjsERD+2On957/KG8kjvCPl/rxgAUqNwBEOfHwEUPIBAeK/x/QEUJfJyf3Z/d0BnoN2iAQAAgArAAAEgQWwABIAGwBxshUcHRESObAVELAA0ACwAEVYsBAvG7EQHD5ZsABFWLAJLxuxCRA+WbISEAkREjmwEi+yAAEKK1gh2Bv0WbIDEAkREjmwAy+wABCwC9CwEhCwDdCwCRCyFQEKK1gh2Bv0WbADELIbAQorWCHYG/RZMDEBIwcFFhYHBgQjIRMjNzM3MwczAQMFMjY3NiYnApXkKgE22OwREP7Y6f3nv8obySO8I+X+vGABSo3AEQ58fARQ8gEB4r/H9ARQl8nJ/dn93QGeg3aIBAAAAQAQAAAEpQWwAA0AULILDg8REjkAsABFWLAILxuxCBw+WbAARViwAi8bsQIQPlmyDQgCERI5sA0vsgABCitYIdgb9FmwBNCwDRCwBtCwCBCyCgEKK1gh2Bv0WTAxASEDIxMjNzMTIQchAyECev78dr13qhupbANlHP1YUQEFAqz9VAKslwJtnv4xAAAB/+YAAAODBDoADQBQsgsODxESOQCwAEVYsAgvG7EIGD5ZsABFWLACLxuxAhA+WbINCAIREjmwDS+yAAEKK1gh2Bv0WbAE0LANELAG0LAIELIKAQorWCHYG/RZMDEBIQMjEyM3MxMhByEDIQJQ/uZTtlOaG5lPApoc/h00ARsB3/4hAd+XAcSZ/tUAAAEAWAAABX4FsAAUAG0AsABFWLASLxuxEhw+WbAARViwBC8bsQQcPlmwAEVYsAsvG7ELED5ZsABFWLAILxuxCBA+WbITEgsREjmwEy+wENCyDQEKK1gh2Bv0WbAB0LALELAC0LACL7IKAQorWCHYG/RZsgYKAhESOTAxASMDMwEzAQEjASMDIxMjNzM3MwczAsf4LokCXff9YQG81v5ysnG8u7YbtSi7J/kEN/73AoL9Nf0bAo79cgQ3l+LiAAABADkAAAQyBgAAFABmALARL7AARViwBC8bsQQYPlmwAEVYsAsvG7ELED5ZsABFWLAILxuxCBA+WbIQEQsREjmwEC+wE9CyAQEKK1gh2Bv0WbALELAC0LACL7IKAQorWCHYG/RZsgYKAhESObABELAN0DAxASMDMwEzAQEjASMDIxMjNzM3MwczAqnoYXIBfOT+MgE3yP71gle2080bzR21HegEwf3NAaz+Cv28AfX+CwTBl6io//8AQ/6aBW4HGwImANsAAAAnAKABawFDAQcAEARQ/70AEwCwAEVYsAgvG7EIHD5ZsA3cMDEA//8AL/6aBEUFxQImAO8AAAAnAKAApf/tAQcAEANb/70AEwCwAEVYsAgvG7EIGD5ZsA3cMDEA//8AO/6aBXcFsAImACwAAAAHABAEWf+9//8AL/6aBEQEOgImAPMAAAAHABADWv+9//8AO/6aBrcFsAImADEAAAAHABAFjP+9//8AMP6aBYsEOgImAPIAAAAHABAEof+9////yv6aBWUFsAImANwAAAAHABAERv+9////yP6aBEcEOgImAPEAAAAHABADXf+9AAEAqAAABTIFsAAOAFayCg8QERI5ALAARViwCC8bsQgcPlmwAEVYsAsvG7ELHD5ZsABFWLACLxuxAhA+WbIGAggREjmwBi+yBQEKK1gh2Bv0WbAA0LIKCAIREjmwBhCwDtAwMQEjAyMTIzczATMTATMBMwN82Vu7WtUblf7mzO8B7+D91ZACCf33AgmXAxD9JgLa/PAAAAEAXf5gBBoEOgAOAGOyAQ8QERI5ALAARViwCS8bsQkYPlmwAEVYsAsvG7ELGD5ZsABFWLADLxuxAxI+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsgYBCitYIdgb9FmyCgsAERI5sA3QsA7QMDEFIwMjEyM3MwMzEwEzATMCx99GtUbWG72xsYkBnMD+Cr4L/msBlZcDrvzcAyT8UgAB/9QAAAUrBbAAEQBiALAARViwDC8bsQwcPlmwAEVYsA4vG7EOHD5ZsABFWLAFLxuxBRA+WbAARViwAy8bsQMQPlmyCQwFERI5fLAJLxiwENCyAAEKK1gh2Bv0WbIEBQwREjmwCNCyDQwFERI5MDEBIwEjAQEjASM3MwEzEwEzATMDsaQBOtP+/v5K6AIKlxuR/trQ/QGp6P4TjgKe/WICN/3JAp6XAnv90wIt/YUAAAH/xAAAA/QEOgARAGoAsABFWLAMLxuxDBg+WbAARViwDi8bsQ4YPlmwAEVYsAUvG7EFED5ZsABFWLADLxuxAxA+WbIJBQwREjl8sAkvGLIIAQorWCHYG/RZsAHQsgQFDBESObINDAUREjmwCRCwEdB8sBEvGDAxASMTIwMBIwEjNzMDMxMBMwEzAw+x7MWz/s/dAYKhG57bxqcBJt7+mZ0B4f4fAZT+bAHhlwHC/nYBiv4+//8AKf/nA+UETQIGAL4AAP///9cAAASkBbACJgAqAAAABwHe/0T+f///AJkCiwXXAyIARgGXiABmZkAA//8AFwAABCsFxwIGABYAAP//ADT/6AQhBccCBgAXAAD//wAFAAAEHQWwAgYAGAAA//8Acv/nBGoFsAIGABkAAP//AJT//gQTBcgABgAdAAD//wB8/+cEPwXJAAYAFBQA//8Aef/qBQYHVQImACsAAAEHAHUB9wFXABMAsABFWLAMLxuxDBw+WbAk3DAxAP//AAT+TwQoBf4CJgBLAAABBwB1AU0AAAATALAARViwBC8bsQQYPlmwLNwwMQD//wA7AAAFdwc0AiYAMgAAAQcARAGdATYAEwCwAEVYsAYvG7EGHD5ZsAvcMDEA//8AHwAAA+MF/gImAFIAAAEHAEQA0gAAABMAsABFWLADLxuxAxg+WbAU3DAxAP///68AAASLByACJgAlAAABBwCrBIABMgAWALAARViwBC8bsQQcPlmwDNywENAwMf//ADP/6APPBesCJgBFAAABBwCrA/L//QAWALAARViwGC8bsRgYPlmwLdywMdAwMf//ADsAAASxBywCJgApAAABBwCrBE4BPgAWALAARViwBi8bsQYcPlmwDdywEdAwMf//AEX/6gPgBesCJgBJAAABBwCrA9f//QAWALAARViwCC8bsQgYPlmwIdywJdAwMf///98AAAKKBywCJgAtAAABBwCrAwQBPgAWALAARViwAi8bsQIcPlmwBdywCdAwMf///40AAAI4BekCJgCMAAABBwCrArL/+wAWALAARViwAi8bsQIYPlmwBdywCdAwMf//AHf/5wUNByICJgAzAAABBwCrBKEBNAAWALAARViwCi8bsQocPlmwJNywKNAwMf//AEX/6AQfBesCJgBTAAABBwCrA+D//QAWALAARViwAC8bsQAYPlmwJNywKNAwMf//ADoAAATCByACJgA2AAABBwCrBEMBMgAWALAARViwBC8bsQQcPlmwGdywHdAwMf//AB8AAALUBesCJgBWAAABBwCrA0n//QAWALAARViwCi8bsQoYPlmwEtywDdAwMf//AGf/5wUgByACJgA5AAABBwCrBHsBMgAWALAARViwCi8bsQocPlmwFNywGNAwMf//AFv/6AQeBesCJgBZAAABBwCrA+T//QAWALAARViwBy8bsQcYPlmwFdywGdAwMf///7IAAAU8Bj8AJgDPZAAABwCt/pEAAP//ADv+qQSgBbACJgAmAAAABwCsBJgACv//AB/+lgP+BgACJgBGAAAABwCsBIb/9///ADv+qQTVBbACJgAoAAAABwCsBJcACv//AEv+nwR1BgACJgBIAAAABwCsBJkAAP//ADv+CQTVBbACJgAoAAAABwGiAR/+qv//AEv9/wR1BgACJgBIAAAABwGiASH+oP//ADv+qQV3BbACJgAsAAAABwCsBPoACv//AB/+qQPjBgACJgBMAAAABwCsBH8ACv//ADsAAAVQBy4CJgAvAAABBwB1AbABMAATALAARViwBS8bsQUcPlmwDtwwMQD//wAgAAAEIgc/AiYATwAAAQcAdQF9AUEACQCwBS+wD9wwMQD//wA7/vgFUAWwAiYALwAAAAcArATSAFn//wAg/uUEGgYAAiYATwAAAAcArARQAEb//wA7/qkDsQWwAiYAMAAAAAcArASdAAr////y/qkB7gYAAiYAUAAAAAcArAM3AAr//wA7/qkGtwWwAiYAMQAAAAcArAWnAAr//wAe/qkGagRSAiYAUQAAAAcArAWrAAr//wA7/qkFdwWwAiYAMgAAAAcArAT+AAr//wAf/qkD4wRSAiYAUgAAAAcArARmAAr//wA7AAAE8wdAAiYANAAAAQcAdQG0AUIAEwCwAEVYsAMvG7EDHD5ZsBbcMDEA////1/5gBDYF9QImAFQAAAEHAHUBkf/3ABMAsABFWLANLxuxDRg+WbAh3DAxAP//ADr+qQTCBbACJgA2AAAABwCsBJUACv///+7+qQLUBFQCJgBWAAAABwCsAzMACv//ACf+nwSjBccCJgA3AAAABwCsBKQAAP//AC7+lwO2BFACJgBXAAAABwCsBG3/+P//AKj+nwUJBbACJgA4AAAABwCsBJYAAP//AEP+nwKUBUACJgBYAAAABwCsA/oAAP//AKQAAAVhBy0CJgA6AAABBwCkAOEBRgATALAARViwAS8bsQEcPlmwCtwwMQD//wBuAAAD7QXiAiYAWgAAAQYApBv7ABMAsABFWLABLxuxARg+WbAK3DAxAP//AKT+qQVhBbACJgA6AAAABwCsBMoACv//AG7+qQPtBDoCJgBaAAAABwCsBDgACv//AMP+qQdBBbACJgA7AAAABwCsBc0ACv//AID+qQX+BDoCJgBbAAAABwCsBSwACv///+v+qQTOBbACJgA+AAAABwCsBJgACv///+3+qQPOBDoCJgBeAAAABwCsBEIACv///wz/5wVTBdYAJgAzRgAABwFa/hoAAP///6UAAAPjBRwCJgG6AAAABwCt/6v+3f///+EAAAQrBR8AJgG+PAAABwCt/sD+4P////0AAATWBRwAJgHBPAAABwCt/tz+3f//AAEAAAHmBR4AJgHCPAAABwCt/uD+3///AB3/6gRYBRwAJgHICgAABwCt/vz+3f///5sAAAShBRwAJgHSPAAABwCt/nr+3f//ABYAAAR0BRsAJgHzCgAABwCt/xT+3P///6UAAAPjBI0CBgG6AAD//wAdAAAD5wSNAgYBuwAA//8AHQAAA+8EjQIGAb4AAP///9wAAAQOBI0CBgHTAAD//wAdAAAEmgSNAgYBwQAA//8AKgAAAaoEjQIGAcIAAP//AB0AAAR/BI0CBgHEAAD//wAdAAAFsASNAgYBxgAA//8ASv/qBE4EowIGAcgAAP//AB0AAAQpBI0CBgHJAAD//wBtAAAEQgSNAgYBzQAA//8AdAAABGUEjQIGAdIAAP///7YAAARtBI0CBgHRAAD//wAqAAACtgXlAiYBwgAAAQcAav9kAB4AFgCwAEVYsAIvG7ECGj5ZsA3csBnQMDH//wB0AAAEZQXlAiYB0gAAAQYAanoeABYAsABFWLAILxuxCBo+WbAS3LAe0DAx//8AHQAAA+8F5QImAb4AAAEGAGp+HgAWALAARViwBi8bsQYaPlmwFdywIdAwMf//AB0AAAPgBhwCJgHqAAABBwB1ATsAHgATALAARViwBS8bsQUaPlmwCNwwMQD//wAR/+sD7QSdAgYBzAAA//8AKgAAAaoEjQIGAcIAAP//ACoAAAK2BeUCJgHCAAABBwBq/2QAHgAWALAARViwAi8bsQIaPlmwDdywGdAwMf////b/6wObBI0CBgHDAAD//wAdAAAEfwYcAiYBxAAAAQcAdQEtAB4AEwCwAEVYsAgvG7EIGj5ZsA/cMDEA//8AWP/oBFQF9wImAgEAAAEGAKB0HwATALAARViwAi8bsQIaPlmwFdwwMQD///+lAAAD4wSNAgYBugAA//8AHQAAA+cEjQIGAbsAAP//AB0AAAPNBI0CBgHqAAD//wAdAAAD7wSNAgYBvgAA//8AHwAABKEF9wImAf4AAAEHAKAA1AAfABMAsABFWLAILxuxCBo+WbAN3DAxAP//AB0AAAWwBI0CBgHGAAD//wAdAAAEmgSNAgYBwQAA//8ASv/qBE4EowIGAcgAAP//AB0AAASGBI0CBgHvAAD//wAdAAAEKQSNAgYByQAA//8AR//sBDcEowIGAbwAAP//AG0AAARCBI0CBgHNAAD///+2AAAEbQSNAgYB0QAAAAEAEf5QA94EoAAqAIYAsABFWLAPLxuxDxo+WbAARViwHS8bsR0QPlmwAEVYsBsvG7EbEj5ZsA8QsgcBCitYIdgb9FmwDxCwDNCyKh0PERI5fLAqLxi0YCpwKgJdsqAqAV20YCpwKgJxsikBCitYIdgb9FmyFCkqERI5sB0QsBrQsCHQsBoQsiMBCitYIdgb9FkwMQEyNjc2JyYnJgcGBwc2NhcWFgcGBxYWBwYGBwMjEyYmNzMUFxY2NzYlJzcCAX+SCgcZM5ZrRUMRthD7t77XCgryVWAFCOS8SLZKi5AFstmBqQsY/vuEGwKfYVc2JU0EAi0sUQGWsAIDpo24YiGGXZG4D/5eAawcqn+xBQNmW7wCAZgAAQAd/pkEmgSNAA8AcgCwAS+wAEVYsAkvG7EJGj5ZsABFWLAMLxuxDBo+WbAARViwBi8bsQYQPlmwAEVYsAIvG7ECED5ZsgoGCRESOXywCi8YtGAKcAoCcbKgCgFdtGAKcAoCXbIFAQorWCHYG/RZsAIQsg4BCitYIdgb9FkwMQEjEyMTIQMjEzMDIRMzAzMELrY+m1b9uFe1y7RZAkhatbGe/pkBZwHy/g4Ejf39AgP8DAAAAQBI/lYEPwSjAB4AWACwAEVYsA0vG7ENGj5ZsABFWLADLxuxAxA+WbAARViwBC8bsQQSPlmwAxCwBtCwDRCwEdCwDRCyFAEKK1gh2Bv0WbADELIcAQorWCHYG/RZsAMQsB7QMDEBBgYHAyMTJgI3NxIAFxYWFyMmJicmBgcGFxYWFxY3A+4f7KxHtkqdnxgMJQE54LjVCLMFbXiTyh8bBgV2bPtMAXqp0Q7+ZAGpKAEmxlgBCAEwBgTVtnKCBAXKtp5jdYsECvwA//8AdAAABGUEjQIGAdIAAP//AC/+UQVhBKECJgIXAAAABwGwApv/uP//AB8AAAShBdYCJgH+AAABBwBwAKoAJgATALAARViwCC8bsQgaPlmwC9wwMQD//wBY/+gEVAXWAiYCAQAAAQYAcEomABMAsABFWLARLxuxERo+WbAT3DAxAP//AFEAAATzBI0CBgHxAAD///+v/k8EiwWwAiYAJQAAAAcAowFnAAD//wAz/k8DzwRRAiYARQAAAAcAowC0AAD//wA7/lkEsQWwAiYAKQAAAAcAowEoAAr//wBF/k8D4ARRAiYASQAAAAcAowD/AAAAAAAAAA0AogADAAEECQAAAF4AAAADAAEECQABAAwAXgADAAEECQACAAwAagADAAEECQADABoAdgADAAEECQAEABoAdgADAAEECQAFACwAkAADAAEECQAGABoAvAADAAEECQAHAEAA1gADAAEECQAJAAwBFgADAAEECQALABQBIgADAAEECQAMACYBNgADAAEECQANAFwBXAADAAEECQAOAFQBuABDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADEAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AUgBvAGIAbwB0AG8ASQB0AGEAbABpAGMAUgBvAGIAbwB0AG8AIABJAHQAYQBsAGkAYwBWAGUAcgBzAGkAbwBuACAAMgAuADAAMAAxADEAMAAxADsAIAAyADAAMQA0AFIAbwBiAG8AdABvAC0ASQB0AGEAbABpAGMAUgBvAGIAbwB0AG8AIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABHAG8AbwBnAGwAZQAuAEcAbwBvAGcAbABlAEcAbwBvAGcAbABlAC4AYwBvAG0AQwBoAHIAaQBzAHQAaQBhAG4AIABSAG8AYgBlAHIAdABzAG8AbgBMAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEEAcABhAGMAaABlACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADIALgAwAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHAAYQBjAGgAZQAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8ATABJAEMARQBOAFMARQAtADIALgAwAAAAAwAA//QAAP9qAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIACAAC//8ADwABAAAADAAAAAAAAAACAF4AJQA+AAEARQBeAAEAeQB5AAMAgQCBAAEAgwCDAAEAhgCGAAEAiQCJAAEAiwCVAAEAlwCcAAEAowCjAAMApwCsAAMAsACwAAEAuQC6AAEAvgC+AAEAwADAAAEAwgDCAAEAxgDGAAEAygDKAAEAzADNAAEAzwDQAAEA0gDSAAEA2QDdAAEA4ADgAAEA5ADkAAEA5gDoAAEA6gD6AAEA/AD8AAEA/gEAAAEBAgECAAEBBwEIAAEBFQEZAAEBGwEbAAEBHwEhAAEBIwEkAAMBOAE5AAEBPgFAAAEBRQFFAAEBTQFNAAEBTwFPAAEBUwFTAAEBVQFXAAEBWQFZAAEBogGiAAMBowGpAAIBugHTAAEB4gHiAAEB5AHkAAEB6gHqAAEB8wHzAAEB9QH1AAEB/AH+AAECAAIBAAECAwIDAAECBwIHAAECCQILAAECEQIRAAECFgIYAAECGgIaAAECPgJDAAECRwKvAAECsgNYAAEDWwNqAAEDcQNxAAEDcwN3AAEDegN/AAEDgQOEAAEDhgOKAAEDjAOnAAEDqwOrAAEDrQO0AAEDtgO4AAEDvQO/AAEDwQPNAAEDzwPZAAED3APsAAED7wRIAAEESwRLAAEETQRNAAEETwRQAAEEWwRbAAEEYgRkAAEEZgRmAAEEagRqAAEEbARtAAEEbwRvAAEEdwSGAAEEhwSHAAIEiASwAAEEsgTKAAEEzATQAAEE0gTVAAEE1wTZAAEE2wTcAAEE3gThAAEAAQAAAAoAXACaAARERkxUABpjeXJsAChncmVrADZsYXRuAEQABAAAAAD//wACAAAABAAEAAAAAP//AAIAAQAFAAQAAAAA//8AAgACAAYABAAAAAD//wACAAMABwAIY3BzcAAyY3BzcAAyY3BzcAAyY3BzcAAya2VybgA4a2VybgA4a2VybgA4a2VybgA4AAAAAQAAAAAAAQABAAIABgHYAAEAAAABAAgAAQAKAAUAJABIAAEA3gAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAkgCwALEAsgCzALQAtQC2ALcAuAC5ANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoASwBMAEyATgBOgE8AT4BPwFFAUYBfwGFAYoBjQJHAkgCSgJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgKDAoUChwKJAosCjQKPApECkwKVApcCmQKbAp0CnwKhAqMCpQKnAqkCqwKtAq8CsgK0ArYCuAK6ArwCvgLAAsICxQLHAskCywLNAs8C0QLTAtUC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8QLyAvQC9gNTA1QDVQNWA1cDWANZA1sDXANdA14DXwNgA2EDYgNkA2UDZgNnA2gDaQNqA3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DuwO9A78D1APaA+AESQRLBE8EVwRZBF4EagACAAAABAAOD84V8jViAAEDVAAEAAABpQrSCtIGggtwCoAK/g+aDAAGiA7uDu4MRg6gCiIO7g7uD5oKigaSDGYMRgrYCqwNUg8QCl4L4gsQDBYGmA22DbYNtgwgCxAKUAxMDbAMTAsQBqYN5gtwD5oLcAasBrIGvAbCBsgMTAbOBtgNtgb+BxQHKgcwB0YHTAdSB4QHigeQDcANwAe+Du4H4AgCDVIIMA7uDu4LJg7uDu4IRg3ADcAIeAiCCIwIpg1ICLgNsAjSCOgLEAkyCUwJaAloCxAJYgloCWgJaAtwDCAK2AxMCxAN5g1IDqAOoA1ICtIK0grSCtIK0gmKCbAJugnECeIJ9AoGChgK/g+aD5oPmg+aDGYLcAtwC3ALcAtwC3ALcAr+DAAMAAwADAAO7g7uDu4O7g7uD5oPmg+aD5oPmgxGDEYMRgxGDxAL4gviC+IL4gviC+IL4gwWDBYMFgwWDbYMIAwgDCAMIAwgDEwMTAtwC+ILcAviC3AL4gr+Cv4K/gr+D5oMAAwWDAAMFgwADBYMAAwWDAAMFg7uDbYO7g7uDu4O7g7uDEYOoAoiCiIKIgoiDu4Ntg7uDbYO7g22DbYPmgwgD5oMIA+aDCAKUApQClAMZgxmDGYMRgxGDEYMRgxGDEYKrA8QDEwPEApeCl4KXgtwDAAO7g7uD5oPEAtwCoAMAApeDu4O7g6gDu4O7g+aCooMZg8QDVIO7g8QDbYMIAxMDCAMAA3mDu4O7gxGDqAOoAsmC3AKgA3mDAAO7g7uD5oKigr+DGYNUgviDBYMIAsQDEwNsAwWDUgMTAqsCqwKrA8QDEwK0grSCtIO7g22C3AL4gwADBYK2AxMCv4PEAxMDu4NUg2wDu4LcAviC3AL4gwADBYMFgwWDVINsA+aDCAMIAsQCyYMTAsmDEwLJgxMDVINsAtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gwADBYMAAwWDAAMFgwADBYMAAwWDAAMFgwADBYMAAwWDu4O7g+aDCAPmgwgD5oMIA+aDCAPmgwgD5oMIA+aDCAMIAxGDEYPEAxMDxAMTA8QDEwOoA7uDGYNUg2wDeYNSA1SDbANtg3ADeYOoA7uDu4PEA+aAAIAhwAGAAYAAAALAAsAAQATABMAAgAlACoAAwAsADUACQA4AD4AEwBFAEYAGgBJAEoAHABMAEwAHgBRAFQAHwBWAFYAIwBaAFoAJABcAF0AJQCKAIoAJwCcAJwAKACwALQAKQC2ALgALgC6ALoAMQC8AL0AMgC/AMAANADCAMQANgDGAMsAOQDRANEAPwDTAN0AQADfAN8ASwDhAOMATADlAOcATwDpAO0AUgDwAPAAVwD1APcAWAD6APsAWwD9AP8AXQEDAQQAYAEJAQkAYgEMAQwAYwEXARkAZAErAS0AZwEwATAAagEyATIAawFJAUkAbAFsAW0AbQFvAXEAbwG6AboAcgG9Ab0AcwHEAcUAdAHIAcgAdgHKAcsAdwHNAc0AeQIoAigAegIqAisAewJHAkgAfQJKAkoAfwJMAm0AgAJvAnIAogJ3AnwApgKBAokArAKLAosAtQKNAo0AtgKPAo8AtwKRApEAuAKTApwAuQKlAqcAwwKpAqkAxgKrAqsAxwKtAq0AyAKvAq8AyQKyArIAygK0ArQAywK2ArYAzAK4ArgAzQK6AroAzgK8ArwAzwK+AsoA0ALMAswA3QLOAs4A3gLQAtAA3wLbAtsA4ALdAt0A4QLfAt8A4gLhAuEA4wLjAuMA5ALlAuUA5QLnAucA5gLpAukA5wLrAusA6ALtAu0A6QLvAvIA6gL0AvQA7gL2AvYA7wNTA1gA8ANbA2oA9gNtA20BBgNxA3EBBwNzA3MBCAN3A3cBCQN6A3sBCgN9A4YBDAOIA4oBFgOMA5EBGQOTA5QBHwOWA5kBIQOfA6ABJQOiA6IBJwOkA6QBKAOmA6kBKQOsA7EBLQOzA7MBMwO3A7gBNAO9A70BNgO/A8gBNwPLA8wBQQPOA9EBQwPYA9kBRwPdA90BSQPfA+UBSgPqA+sBUQPvBBcBUwQZBBkBfAQbBCgBfQQwBDABiwQzBDMBjAQ1BDUBjQRBBEYBjgRJBEkBlARLBEsBlQRNBE0BlgRPBFABlwRVBFgBmQRbBFsBnQRdBF4BngRgBGABoARkBGQBoQRmBGYBogRqBGoBowSqBKoBpAABABP/IAACAFb/5gG6/8AAAQG6AA4AAwANABQAQQASAGEAEwABAPX/9QABAMMADQACALf/wgDDABAAAQDD/+IAAQDG//IAAQDDAA4AAgDJ/+0A9f/AAAkAvv/mAMH/6wDC/+kAxP/wAMX/5wDJ/+MAy//OAMz/1ADN/9sABQDB/+wAwwAPAMX/6gDJ/8QAy//nAAUASv/pAMH/7gDD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Aor/6wKM/+sCjv/rApD/6wKS/+sClP/rApb/6wKY/+sCmv/rApz/6wKe/+sCoP/rAqL/6wKk/+sCsv74Asb/6wLI/+sCyv/rAtsAFALdABQC3wAUAuL/6gLk/+oC5v/qAuj/6gLq/+oC7P/qAvD/6ANT/1YDW/9WA2v/6wNv/+oDcf/rA3P/6AN2/+oDd//rA3j/6gN//vgDg/9WA44AFAOQ/94Dkf/rA5P/6wOV/+sDlv/oA5j/6wOf/+gDp//oA6//VgOw/94Ds//rA7j/6AO5/+sDvv/rA8D/6APF/1YDxv/eA8f/VgPI/94DzP/rA87/6wPP/+sD2f/rA9v/6wPd/+sD4f/oA+P/6APl/+gD7P/rA+//VgPw/94D8f9WA/L/3gPz/1YD9P/eA/X/VgP2/94D9/9WA/j/3gP5/1YD+v/eA/v/VgP8/94D/f9WA/7/3gP//1YEAP/eBAH/VgQC/94EA/9WBAT/3gQF/1YEBv/eBAj/6wQK/+sEDP/rBA7/6wQQ/+sEEv/rBBT/6wQW/+sEHP/rBB7/6wQg/+sEIv/rBCT/6wQm/+sEKP/rBCr/6wQs/+sELv/rBDD/6wQy/+sENP/qBDb/6gQ4/+oEOv/qBDz/6gQ+/+oEQP/qBEL/6ARE/+gERv/oBE0AFAAfADj/1QA6/+QAO//sAD3/3QDR/9UA1f/VARj/5AEy/9UBOv/VAmb/3QLb/9UC3f/VAt//1QLt/+wC7//dAvH/3QNY/90DZ//dA2r/3QOO/9UDoP/sA6L/7AOk/+wDpv/dA7f/5AO//90EQf/dBEP/3QRF/90ETf/VBGr/3QAaADj/sAA6/+0APf/QANH/sADV/7ABGP/tATL/sAE6/7ACZv/QAtv/sALd/7AC3/+wAu//0ALx/9ADWP/QA2f/0ANq/9ADjv+wA6b/0AO3/+0Dv//QBEH/0ARD/9AERf/QBE3/sARq/9AAEAAu/+4AOf/uAmL/7gJj/+4CZP/uAmX/7gKy/+4C4f/uAuP/7gLl/+4C5//uAun/7gLr/+4Df//uBDP/7gQ1/+4ARwAGABAACwAQAEf/6ABI/+gASf/oAEv/6ABV/+gAk//oAJj/6AC6/+gAx//oAMj/6AD2/+gBAv/oAR3/6AEh/+gBOf/oAUv/6AFM/+gBVv/oAWwAEAFtABABbwAQAXAAEAFxABACbv/o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/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAMD/8wDH/9wAyP/cAMr/3QDr//MA7//zAPD/8wDy//MA8//zAPT/8wD2/9wA9//zAPn/8wD6//MA/f/zAP//8wEC/9wBBP/zARf/1gEZ/+EBHf/cASH/3AE1//MBOf/cAUT/8wFJ//MBS//cAUz/3AFW/9wCbv/cAm//3AJw/9wCcf/cAnL/3AJ3//MCeP/WAnn/1gJ6/9YCe//WAnz/1gJ9/90Cfv/dAn//3QKA/90Cgf/hAoL/4QKK/9wCjP/cAo7/3AKQ/9wCkv/cApT/3AKW/9wCmP/cApr/3AKc/9wCnv/cAqD/3AKi/9wCpP/cAr//8wLB//MCw//zAsT/8wLG/9YCyP/WAsr/1gLi/90C5P/dAub/3QLo/90C6v/dAuz/3QLw/+EDa//cA23/8wNv/90Dcf/WA3P/4QN2/90Dd//WA3j/3QOR/9wDkv/zA5P/1gOU//MDlf/cA5b/4QOY/9wDmf/zA57/8wOf/+EDp//hA67/8wOz/9wDtP/zA7j/4QO5/9wDvv/cA8D/4QPM/9wDzv/cA8//3APV//MD1//zA9n/1gPb/9wD3f/WA+H/4QPj/+ED5f/hA+n/8wPs/9wECP/cBAr/3AQM/9wEDv/cBBD/3AQS/9wEFP/cBBb/3AQc/9YEHv/WBCD/1gQi/9YEJP/WBCb/1gQo/9YEKv/cBCz/3AQu/9wEMP/WBDL/3AQ0/90ENv/dBDj/3QQ6/90EPP/dBD7/3QRA/90EQv/hBET/4QRG/+EESv/zBEz/8wRW//MEY//zBGX/8wRn//MAcQAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADH//AAyP/wAMr/7wD2//ABAv/wARn/3AEd//ABIf/wATn/8AFL//ABTP/wAVb/8AFs/9oBbf/aAW//2gFw/9oBcf/aAm7/8AJv//ACcP/wAnH/8AJy//ACff/vAn7/7wJ//+8CgP/vAoH/3AKC/9wCiv/wAoz/8AKO//ACkP/wApL/8AKU//AClv/wApj/8AKa//ACnP/wAp7/8AKg//ACov/wAqT/8ALi/+8C5P/vAub/7wLo/+8C6v/vAuz/7wLw/9wDa//wA2//7wNz/9wDdv/v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//UA1f/xANn/9ADc//UA3f/zARj/9AEy//EBOv/xAVH/9QJm//AC2//xAt3/8QLf//EC7//wAvH/8ANY//ADZ//wA2j/9ANq//ADgv/zA47/8QOP//QDpv/wA7f/9AO///ADwv/0A9D/9APg//MD4v/zA+T/8wPq//QD7f/1BEH/8ARD//AERf/wBE3/8QRP//QEV//0BGj/9QRq//AAWQAlAA8AOP/mADr/5gA8AA4APf/mALEADwCzAA8A0f/mANMADgDV/+YA2QAOANwADgDdAAsA4P/lAPEADwD4/+gBAwAPAQwADwEY/+YBMv/mATr/5gFRAA4CTAAPAk0ADwJOAA8CTwAPAlAADwJRAA8CUgAPAmb/5gKDAA8ChQAPAocADwLb/+YC3f/mAt//5gLv/+YC8f/mA1MADwNY/+YDWwAPA2f/5gNoAA4Dav/mA4IACwODAA8Djv/mA48ADgOm/+YDrwAPA7f/5gO//+YDwgAOA8UADwPHAA8D0AAOA+AACwPiAAsD5AALA+b/5QPn/+gD6gAOA+0ADgPuAA8D7wAPA/EADwPzAA8D9QAPA/cADwP5AA8D+wAPA/0ADwP/AA8EAQAPBAMADwQFAA8EQf/mBEP/5gRF/+YETf/mBE8ADgRR/+UEUv/oBFP/5QRU/+gEVwAOBGgADgRpAA8Eav/mAC4AOP/jADz/5QA9/+QA0f/jANP/5QDV/+MA2f/lANz/5QDd/+kA8f/qAQP/6gEy/+MBOv/jAVH/5QJm/+QC2//jAt3/4wLf/+MC7//kAvH/5ANY/+QDZ//kA2j/5QNq/+QDgv/pA47/4wOP/+UDpv/kA7//5APC/+UD0P/lA+D/6QPi/+kD5P/pA+r/5QPt/+UD7v/qBEH/5ARD/+QERf/kBE3/4wRP/+UEV//lBGj/5QRp/+oEav/kACEAOP/iADz/5ADR/+IA0//kANX/4gDZ/+QA3P/kAN3/6QDx/+sBA//rATL/4gE6/+IBUf/kAtv/4gLd/+IC3//iA2j/5AOC/+kDjv/iA4//5APC/+QD0P/kA+D/6QPi/+kD5P/pA+r/5APt/+QD7v/rBE3/4gRP/+QEV//kBGj/5ARp/+sAFwA4/+sAPf/zANH/6wDV/+sBMv/rATr/6wJm//MC2//rAt3/6wLf/+sC7//zAvH/8wNY//MDZ//zA2r/8wOO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ABgEJwQnAAMEKAQoABgEMAQwABgEMwQzAAwENQQ1AAwEQQRBAA8EQgRCABkEQwRDAA8ERAREABkERQRFAA8ERgRGABkESQRJAAkESwRLAAIETQRNAAYETwRPAA4EUARQABsEVQRVAAcEVgRWAAgEVwRXAA4EWARYABsEWwRbABcEXQRdAB8EXgReAAcEYARgAAkEZARkAAIEZgRmAAIEagRqAA8EqgSqAAMAAgFtAAYABgAHAAsACwAHABAAEAATABEAEQAXABIAEgATACUAJQARACcAJwAFACsAKwAFAC4ALgAcADMAMwAFADUANQAFADcANwAZADgAOAAKADkAOQAGADoAOgANADsAOwAJADwAPAASAD0APQAOAD4APgAUAEUARQAaAEcASQAVAEsASwAVAFEAUgAYAFMAUwAIAFQAVAAYAFUAVQAVAFcAVwAbAFkAWQALAFoAWgACAFwAXAAWAF0AXQACAF4AXgAMAIMAgwAFAJIAkgAFAJMAkwAVAJcAlwAFAJgAmAAVAJoAmgALALEAsQARALIAsgAFALMAswARALoAugAVALwAvAACAMAAwAAYAMcAyAAVAMoAygALANEA0QAKANIA0gAFANMA0wABANUA1QAKANkA2QASANwA3AABAN0A3QAQAOAA4AAPAOsA6wAYAO0A7QAWAO8A8AAYAPEA8QAEAPIA9AAYAPYA9gAVAPcA9wAYAPgA+AADAPkA+gAYAP0A/QAYAP8A/wAYAQIBAgAVAQMBAwAEAQQBBAAYAQcBBwAFAQwBDAARARYBFgAFARcBFwAIARgBGAANARkBGQACARoBGgAFARwBHAAFAR0BHQAVAR4BHgAFASABIAAFASEBIQAVATIBMgAKATUBNQAYATgBOAAFATkBOQAVAToBOgAKAUQBRAAYAUkBSQAYAUsBTAAVAVEBUQABAVUBVQAFAVYBVgAVAWkBagAXAWwBbQAHAW4BbgATAW8BcQAHAXIBcgATAXYBdwATAigCKQAFAisCLAAFAkYCRgAXAkwCUgARAlMCUwAFAl0CYQAFAmICZQAGAmYCZgAOAmcCbQAaAm4CcgAVAncCdwAYAngCfAAIAn0CgAALAoECggACAoMCgwARAoQChAAaAoUChQARAoYChgAaAocChwARAogCiAAaAokCiQAFAooCigAVAosCiwAFAowCjAAVAo0CjQAFAo4CjgAVAo8CjwAFApACkAAVApICkgAVApQClAAVApYClgAVApgCmAAVApoCmgAVApwCnAAVAp0CnQAFAp4CngAVAp8CnwAFAqACoAAVAqECoQAFAqICogAVAqMCowAFAqQCpAAVArICsgAcAr8CvwAYAsECwQAYAsMCxAAYAsUCxQAFAsYCxgAIAscCxwAFAsgCyAAIAskCyQAFAsoCygAIAtEC0QAZAtIC0gAbAtMC0wAZAtQC1AAbAtUC1QAZAtYC1gAbAtcC1wAZAtgC2AAbAtkC2QAZAtoC2gAbAtsC2wAKAt0C3QAKAt8C3wAKAuEC4QAGAuIC4gALAuMC4wAGAuQC5AALAuUC5QAGAuYC5gALAucC5wAGAugC6AALAukC6QAGAuoC6gALAusC6wAGAuwC7AALAu0C7QAJAu8C7wAOAvAC8AACAvEC8QAOAvIC8gAUAvMC8wAMAvQC9AAUAvUC9QAMAvYC9gAUAvcC9wAMAvoC+gAFA1MDUwARA1cDVwAFA1gDWAAOA1sDWwARA14DXgAUA2QDZAAFA2cDZwAOA2gDaAASA2oDagAOA2sDawAVA20DbQAYA28DbwALA3EDcQAIA3MDcwACA3YDdgALA3cDdwAIA3gDeAALA38DfwAcA4IDggAQA4MDgwARA4oDigAFA40DjQAFA44DjgAKA48DjwASA5ADkAAaA5EDkQAVA5IDkgAYA5MDkwAIA5QDlAAYA5UDlQAVA5YDlgACA5cDlwAWA5gDmAAVA5kDmQAYA5oDmgAbA54DngAYA58DnwACA6ADoAAJA6IDogAJA6QDpAAJA6YDpgAOA6cDpwACA6gDqQAHA6wDrAAHA64DrgAYA68DrwARA7ADsAAaA7MDswAVA7QDtAAYA7cDtwANA7gDuAACA7kDuQAVA7oDugAFA70DvQAFA74DvgAVA78DvwAOA8ADwAACA8IDwgASA8MDwwAWA8UDxQARA8YDxgAaA8cDxwARA8gDyAAaA8wDzAAVA84DzwAVA9AD0AASA9ED0QAWA9UD1QAYA9cD1wAYA9gD2AAFA9kD2QAIA9oD2gAFA9sD2wAVA9wD3AAFA90D3QAIA+AD4AAQA+ED4QACA+ID4gAQA+MD4wACA+QD5AAQA+UD5QACA+YD5gAPA+cD5wADA+kD6QAYA+oD6gASA+sD6wAWA+wD7AAVA+0D7QABA+4D7gAEA+8D7wARA/AD8AAaA/ED8QARA/ID8gAaA/MD8wARA/QD9AAaA/UD9QARA/YD9gAaA/cD9wARA/gD+AAaA/kD+QARA/oD+gAaA/sD+wARA/wD/AAaA/0D/QARA/4D/gAaA/8D/wARBAAEAAAaBAEEAQARBAIEAgAaBAMEAwARBAQEBAAaBAUEBQARBAYEBgAaBAgECAAVBAoECgAVBAwEDAAVBA4EDgAVBBAEEAAVBBIEEgAVBBQEFAAVBBYEFgAVBBsEGwAFBBwEHAAIBB0EHQAFBB4EHgAIBB8EHwAFBCAEIAAIBCEEIQAFBCIEIgAIBCMEIwAFBCQEJAAIBCUEJQAFBCYEJgAIBCcEJwAFBCgEKAAIBCkEKQAFBCoEKgAVBCsEKwAFBCwELAAVBC0ELQAFBC4ELgAVBC8ELwAFBDAEMAAIBDEEMQAFBDIEMgAVBDMEMwAGBDQENAALBDUENQAGBDYENgALBDgEOAALBDoEOgALBDwEPAALBD4EPgALBEAEQAALBEEEQQAOBEIEQgACBEMEQwAOBEQERAACBEUERQAOBEYERgACBEoESgAYBEwETAAYBE0ETQAKBE8ETwASBFAEUAAWBFEEUQAPBFIEUgADBFMEUwAPBFQEVAADBFYEVgAYBFcEVwASBFgEWAAWBGMEYwAYBGUEZQAYBGcEZwAYBGgEaAABBGkEaQAEBGoEagAOBHAEcAAXBKoEqgAFAAEAAAAKAgYG8AAEREZMVAAaY3lybABIZ3JlawB2bGF0bgCkAAQAAAAA//8AEgAAAAoAFAAeACgANABBAEsAVQBfAGkAcwB9AIcAkQCbAKUArwAEAAAAAP//ABIAAQALABUAHwApADUAQgBMAFYAYABqAHQAfgCIAJIAnACmALAABAAAAAD//wASAAIADAAWACAAKgA2AEMATQBXAGEAawB1AH8AiQCTAJ0ApwCxACgABkFaRSAAVENSVCAAfk1PTCAAqE5BViAA1FJPTSABAFRVUiABLAAA//8AEwADAA0AFwAhACsAMgA3AEQATgBYAGIAbAB2AIAAigCUAJ4AqACyAAD//wASAAQADgAYACIALAA4AEUATwBZAGMAbQB3AIEAiwCVAJ8AqQCzAAD//wASAAUADwAZACMALQA5AEYAUABaAGQAbgB4AIIAjACWAKAAqgC0AAD//wATAAYAEAAaACQALgA6AD4ARwBRAFsAZQBvAHkAgwCNAJcAoQCrALUAAP//ABMABwARABsAJQAvADsAPwBIAFIAXABmAHAAegCEAI4AmACiAKwAtgAA//8AEwAIABIAHAAmADAAPABAAEkAUwBdAGcAcQB7AIUAjwCZAKMArQC3AAD//wATAAkAEwAdACcAMQAzAD0ASgBUAF4AaAByAHwAhgCQAJoApACuALgAuWMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmxpZ2EEfGxpZ2EEhGxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxvY2wEkGxvY2wElmxvY2wEnG51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqHBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5AAAAAEAAAAAAAIAAgADAAAAAQAHAAAAAQAYAAAAAwAVABYAFwAAAAIACAAJAAAAAQAJAAAAAQAUAAAAAQAEAAAAAQAGAAAAAQAFAAAAAQAZAAAAAQARAAAAAQATAAAAAQABAAAAAQAKAAAAAQALAAAAAQAMAAAAAQANAAAAAQAOAAAAAQAPAAAAAQAQAAAAAQASABsAOAPGBrQHYA3wDfAOBg4oDl4OhA6yDsYO2g7uDwAPGg9cD3oPmA/KD/wQLhBCEHoQbBB6EKYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCRAI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTdAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYB/wTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNgE2QTbAhoE3AIOBNcCEwINBNoCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkcCSAJKAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CrwKyArQCtgK4AroCvAK+AsACwgLFAscCyQLLAs0CzwLRAtMC1QLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvIC9AL2A1MDVANVA1YDVwNYA1kDWwNcA10DXgNfA2ADYQNiA2QDZQNmA2cDaANpA2oDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwO7A70DvwPUA9oD4ARJBEsETwRXBFkEXgRqAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAv0DMAI7AfoEygTLAfsB/AH9Af4B/wIABM4EzwTRBNQE3QICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZA08DGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNQA1EDUgTJBMwEzQTQBNIE0wIBBNUEwQTCBMMExATFBMYExwTIBNYE2ATZAhgE2wIaBNwC/AIOBNcCEwINBNoCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSwJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoQChgKIAooCjAKOApACkgKUApYCmAKaApwCngKgAqICpAKmAqgCqgKsAq4CswK1ArcCuQK7Ar0CvwLBAsMCxgLIAsoCzALOAtAC0gLUAtYC2gLcAt4C4ALiAuQC5gLoAuoC7ALuAvAC8wL1AvcDkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwO8A74DwAPOA9UD2wPhBEcESgRMBFAEWARaBFsEXwRrAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAAAaAAEAAQBNAAMAAAABABIAAQB4AAEAAAAaAAEAAQBOAAMAAAABABIAAQBgAAEAAAAaAAEAAQKuAAMAAAABABIAAQBIAAEAAAAaAAEAAQObAAMAAAABABIAAQAwAAEAAAAaAAEAAQOdAAMAAAABABIAAQAYAAEAAAAaAAEAAQQaAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCTAACAKcCTQACAKgCTwACAKkD8QACAKoEewACAKsD7wACAKwAAQAEBIgAAgCsAAEABAKJAAIAqAACAAYADASKAAIArASMAAIBogAGAA4AFAAaACAAJgAsAlQAAgCnAlUAAgCoBAsAAgCpBAkAAgCqBH0AAgCrBAcAAgCsAAIABgAMBHcAAgCoAqMAAgGiAAEABASOAAIArAAGAA4AFAAaACAAJgAsAlgAAgCnAlkAAgCoAqcAAgCpBBcAAgCqBH8AAgCrBBkAAgCsAAMACAAOABQEkAACAKgEkgACAKwCtAACAaIAAwAIAA4AFAK2AAIAqASUAAIArAK4AAIBogACAAYADAOtAAIAqASWAAIArAAFAAwAEgAYAB4AJAR5AAIApwK+AAIAqAJcAAIAqQSYAAIArALAAAIBogAGAA4AFAAaACAAJgAsAl0AAgCnAl4AAgCoAmAAAgCpBB0AAgCqBIEAAgCrBBsAAgCsAAEABASaAAIAqAAEAAoAEAAWABwCywACAKgEgwACAKsEnAACAKwCzQACAaIAAwAIAA4AFALRAAIAqASeAAIArALXAAIBogACAAYADASgAAIArALbAAIBogAGAA4AFAAaACAAJgAsAmIAAgCnAmMAAgCoAuEAAgCpBDUAAgCqBIUAAgCrBDMAAgCsAAIABgAMBKIAAgCpBKQAAgCsAAMACAAOABQDoAACAKcDogACAKgEpgACAKwABQAMABIAGAAeACQDpgACAKcCZgACAKgERQACAKkEQwACAKoEQQACAKwAAgAGAAwC8gACAKgEqAACAKwABgAOABQAGgAgACYALAJnAAIApwJoAAIAqAJqAAIAqQPyAAIAqgR8AAIAqwPwAAIArAABAAQEiQACAKwAAQAEAooAAgCoAAIABgAMBIsAAgCsBI0AAgGiAAYADgAUABoAIAAmACwCbwACAKcCcAACAKgEDAACAKkECgACAKoEfgACAKsECAACAKwAAQAEBHgAAgCoAAEABASPAAIArAABAAQEGgACAKwAAwAIAA4AFASRAAIAqASTAAIArAK1AAIBogADAAgADgAUArcAAgCoBJUAAgCsArkAAgGiAAIABgAMA64AAgCoBJcAAgCsAAUADAASABgAHgAkBHoAAgCnAr8AAgCoAncAAgCpBJkAAgCsAsEAAgGiAAYADgAUABoAIAAmACwCeAACAKcCeQACAKgCewACAKkEHgACAKoEggACAKsEHAACAKwAAQAEBJsAAgCoAAQACgAQABYAHALMAAIAqASEAAIAqwSdAAIArALOAAIBogADAAgADgAUAtIAAgCoBJ8AAgCsAtgAAgGiAAIABgAMBKEAAgCsAtwAAgGiAAYADgAUABoAIAAmACwCfQACAKcCfgACAKgC4gACAKkENgACAKoEhgACAKsENAACAKwAAgAGAAwEowACAKkEpQACAKwAAwAIAA4AFAOhAAIApwOjAAIAqASnAAIArAAFAAwAEgAYAB4AJAOnAAIApwKBAAIAqARGAAIAqQREAAIAqgRCAAIArAACAAYADALzAAIAqASpAAIArAABAAQC+AACAKgAAQAEAvoAAgCoAAEABAL5AAIAqAABAAQC+wACAKgABQAMABIAGAAeACQCcwACAKcCdAACAKgCqAACAKkEGAACAKoEgAACAKsABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQELAACAKcEKgACAKgEMAACAKkELgACAKoEMgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwABQAMABIAGAAeACQEOgACAKcEOAACAKgEPgACAKkEPAACAKoEQAACAKwAAQAEBIcAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLVAtYAAQAAAAEACAACAA4ABATeBN8E4AThAAEABAKHAogCmQKaAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiECIgGuAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAiIAAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIwRxBHIEcwR0BHUEdgABAAAAAQAIAAIAFgAIBHYCIwRxBHIEcwR0Aa0EdQABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAAAaAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwJDAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKuA5sDnQQa",
+  "Roboto-Medium.ttf": "AAEAAAARAQAABAAQR1BPU32qcYwAAgioAABZDEdTVUJMnCjgAAJhtAAAGWhPUy8yoQuxtgAAAZgAAABgY21hcEAmSHIAABpsAAASyGN2dCAElytKAAAvvAAAAFZmcGdte/lhqwAALTQAAAG8Z2FzcAAIABMAAgicAAAADGdseWaunmLpAAA53AABy8xoZG14PT88IAAAFYAAAATsaGVhZPh7qwgAAAEcAAAANmhoZWEK7wqbAAABVAAAACRobXR4JPNE9QAAAfgAABOIbG9jYd3eZq0AADAUAAAJxm1heHAHEgL1AAABeAAAACBuYW1lPWNvTAACBagAAALUcG9zdP9tAGQAAgh8AAAAIHByZXAbsfg2AAAu8AAAAMwAAQAAAAIAABFApG1fDzz1ABsIAAAAAADE8BEuAAAAANDbTpT6JP3VCVwIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJa/ok/kEJXAABAAAAAAAAAAAAAAAAAAAE4gABAAAE4gCPABYATgAFAAEAAAAAAA4AAAIAAhYABgABAAMElQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAK/1AAIX8AAAAhAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwACAAIAACA4wAZAAAAAAAAAAAAf4AAAH+AAACJQCPApgAZQTiAGAEjABkBeAAYwUdAFYBWgBSAsoAgALSACgDiQAbBHUARAHCABwCoABHAjwAhwMqAAIEjABpBIwAqASMAFEEjABPBIwANASMAIEEjAB1BIwARQSMAGgEjABdAh8AggHnAC4EEQA/BHoAkQQqAIAD5AA8BygAWwVTABIFDACUBTkAZgU6AJQEhgCUBGUAlAVyAGoFrwCUAkIAowRxAC0FCwCUBFQAlAcBAJQFrgCUBYYAZgUdAJQFhgBgBP4AlATUAEoE2wAtBTcAfQUtABIHCgAwBRAAKQTgAAcE0QBQAjEAhANYABQCMQAMA2sANQOcAAMClAAxBFQAWgSBAHwEMABPBIQATwRLAFMC1gAtBIkAUgRxAHkCCwB9AgH/tQQtAH0CCwCMBvYAfARzAHkEjgBPBIEAfASLAE8C0AB8BCEASwKpAAgEcgB3A/UAFgXyACEEBgAfA+UADAQGAFICrwA4AgIArgKvABsFUQB1Ah4AhgR9AGQEtQBeBZ0AXQTgABkB/ACIBPgAWgOFAF0GRABXA5EAjQPiAFcEbQB/BkQAVwPbAIcDCgB/BEoAXwL2ADwC9gA3ApsAcAS7AJID7QBFAkIAjgIQAG0C9gCAA6cAdwPiAF0F0ABZBisAUAZXAGcD5ABCB4X/9gREAE0FhABpBMoAlATnAIgGwQBIBKcAZwSRAEMEiABPBJcAggWwAB8CGgCPBJgAjgRkACICTwAhBZMAkASIAH4HtABkBzoAWwIMAIsFiABRAtD/5AWKAFgEngBPBaQAfQTyAHcCJv+1BDwAWQPmAJQDsAByA9wAhwN8AHUCCwCBArIAeAJNACkD2AB6Ax8ASQJsAIIAAPyOAAD9XgAA/HMAAP0+AAD8DAAA/RwCXQDGBDwAZwJCAI4EdQCbBb8AGQV6AFsFOAAgBJAAbAWxAJsEkABHBe8ASgWqAEQFWwBrBIQAVgTGAJYEDgAgBIgAVARgAGAEGgBhBIgAfgShAHMCqgCpBGoAFgQTAGQE8wAtBIgAgAQ3AFIEkABSBC0APwRgAIAF0ABEBckATwaUAGYEswB2BHv/4QZxADMF/gAiBVkAaAiIAC0IjwCbBlsAMQWqAJIFCACQBgYAJAeiABYE1gBJBagAlAWpAC0FCgA5Bl8ATwX5AJIFiQCOB5sAmAf5AJgGGgAYBvkAmwUHAJAFUABrB1QAoAT3ACAEfQBbBI8AjwNaAIUE9gAnBnYAHgQWAE0EmACGBG4AjwSaACEGAwCPBJcAhgSYAIYD9QAjBdMAVATTAIYEZgBfBo4AhgbsAH4FFwAfBm8AjwRoAI8EPABRBoQAkQRwACcEcf/bBDwAVAbRAB4G5ACGBIn/7gSYAIYHSQCIBk8AcARn/+AHKACYBgEAhgUMABwEYAAKB0IArAY2AJ0G7QCABeYAggkyAKMH+QCPBCAAKAPwADMFegBfBIgATwUaABAEDgAgBXoAXwSIAE8HRQCIBkQAdAdJAIgGTwBwBRoAZgRKAFwE/wBtAAD8ZgAA/HMAAP17AAD9pQAA+iQAAPpNBGf/4AUTAJQEhgB8BGoAjwOhAH4EtwCbBCAAfgUsAJAEqwCOBpUANAWkAD0H0ACUBaoAfghHAJsG9QB+BioAZwT/AGEHMQAtBXAAJgV0AIAEcwB0BYcAhQYkABYEw//LBSEAkAR4AI4FrwCbBIgAfgWIAFEEpgBbBKYAXQTHADQDUwAtBQcAUgbxAGgG3QBeBlMAPAUoAC8EewBIBD4AdAe+AEIGnQBAB/0AlAaeAHcFBABdBCwAVQWqACEFHQBEBVUAgQMsAGcEFAAACCkAAAQUAAAIKQAAArkAAAIKAAABXAAABH8AAAIwAAABogAAANEAAAAAAAACoQBHAqEARwUpAJ0GMACBA50ABAHAAGMBvAAzAc4AMgGoAEoDFABsAxsAQAMIADIEXQBABJkAXALLAIgD+gCKBaYAigFsAEcHpwBKAnIAbAJpAFQDnAAtAvYANQNcAGkEtQBfBnAAIQa4AJgIkwCUB4gANQaMAHwEjABeBfUAIQQ0ACgEogAhBV4ATwV9ACgF5ABwA+IATAguAJAFCQBtBRQAlgY1AFkG3QBUBtEAWwaiAFgEkQBiBZYApgTZAEAEgwCeBLIAOwhFAF4CLf+vBI4AZQR6AJEEEQA8BCoAgAQMACQCWwChApgAYwHxAEUFGwAtBKgAGAS8AC0HIwAtByMALQURAC0GtwBLAAAAAAgwAFkINQBcBDMAOgSTAE8CEP+wAbMAXAOhAHUDoQB1A6EAdQQLAHUECwB1BAv/TAQLAHoDoQB1AgUAlASeAAkEYAB2BIAATwR6AHYD4AB2A8UAdgSmAFQE3gB2AfwAhQPVACQEWwB2A7kAdgYGAHYE3QB2BMAATwRtAHYEwABMBFwAdgQ0AD4EOwAkBIQAZwR7AAkGBwAoBF4AFQQ8AAUEKgBBAvYASwL2AIAC9gA8AvYANwL2ADUC9gBPAvYATQL2ADYC9gBLAvYARgO5AJACsgCWBDsACgS7AFYFRACbBSgAmwQwAIEFOQCbBC0AgQQ0AD4EZgA4BE0ADgO5AHYEewAJBMAATwR7AAkDmABCBNgAdgQZAEQFnQBQBVQAUATkAF8FkQAkBIAATwdUACQHVwB2BZcAJATXAHYEcQB2BVkAJwY6ABoERgBCBOQAdgRcAHYEywAkBEYAHwVdAHYEjABBBoQAdgcKAHYFWgAKBiAAdgRnAHYEgAA8BpIAdgSIAEMEIgAKBpIAGgSdAHYFGgB2BW4AJAXwAE8EWgAFBMQAFQaVACQEjABBBIwAdgX+AAoE0gBPBEYAQgTAAE8EZgA4A/cARgg2AHYE6wAoBIgAfAQ9AFAEmABPA6QAWwShAEwElAB8BJ8ATwRLAFMEiQBRBXoAawWiAGsFhgCbBeAAawXiAGsEGwCXBIIAbgO5AHYEVwAPBL4ANQL2AEsC9gA1AvYATwL2AE0C9gA2AvYASwL2AEYEawBmBC4AQwaYAE8EtABzBOsAYgIm/7UCJv+1AhsAjwIb//sCGwCPBGAAdgH+AAACoABHBVj/9wVY//cEj//UBNsALQKp/+gFUwASBVMAEgVTABIFUwASBVMAEgVTABIFUwASBTkAZgSGAJQEhgCUBIYAlASGAJQCQv/IAkIAowJC/8sCQv+/Ba4AlAWGAGYFhgBmBYYAZgWGAGYFhgBmBTcAfQU3AH0FNwB9BTcAfQTgAAcEVABaBFQAWgRUAFoEVABaBFQAWgRUAFoEVABaBDAATwRLAFMESwBTBEsAUwRLAFMCGv+0AhoAjwIa/7cCGv+rBHMAeQSOAE8EjgBPBI4ATwSOAE8EjgBPBHIAdwRyAHcEcgB3BHIAdwPlAAwD5QAMBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBTkAZgQwAE8FOQBmBDAATwU5AGYEMABPBTkAZgQwAE8FOgCUBRoATwSGAJQESwBTBIYAlARLAFMEhgCUBEsAUwSGAJQESwBTBIYAlARLAFMFcgBqBIkAUgVyAGoEiQBSBXIAagSJAFIFcgBqBIkAUgWvAJQEcQB5AkL/swIa/58CQv+5Ahr/pQJC/98CGv/LAkIAFwILAAACQgCdBrMAowQMAH0EcQAtAib/tQULAJQELQB9BFQAlAILAIoEVACUAgsAVQRUAJQCoQCMBFQAlALnAIwFrgCUBHMAeQWuAJQEcwB5Ba4AlARzAHkEc/+lBYYAZgSOAE8FhgBmBI4ATwWGAGYEjgBPBP4AlALQAHwE/gCUAtAATwT+AJQC0AA4BNQASgQhAEsE1ABKBCEASwTUAEoEIQBLBNQASgQhAEsE1ABKBCEASwTbAC0CqQAIBNsALQKpAAgE2wAtAtEACAU3AH0EcgB3BTcAfQRyAHcFNwB9BHIAdwU3AH0EcgB3BTcAfQRyAHcFNwB9BHIAdwcKADAF8gAhBOAABwPlAAwE4AAHBNEAUAQGAFIE0QBQBAYAUgTRAFAEBgBSB4X/9gbBAEgFhABpBIgATwR6/6YEev+mBDsAJASeAAkEngAJBJ4ACQSeAAkEngAJBJ4ACQSeAAkEgABPA+AAdgPgAHYD4AB2A+AAdgH8/6YB/ACDAfz/qQH8/50E3QB2BMAATwTAAE8EwABPBMAATwTAAE8EhABnBIQAZwSEAGcEhABnBDwABQSeAAkEngAJBJ4ACQSAAE8EgABPBIAATwSAAE8EegBqA+AAdgPgAHYD4AB2A+AAdgPgAHYEpgBUBKYAVASmAFQEpgBUBN4AdgH8/5EB/P+XAfz/vQH8ABUB/AB8A9UAJARbAHYDuQB2A7kAdgO5AHYDuQB2BN0AdgTdAHYE3QB2BMAATwTAAE8EwABPBFwAdgRcAHYEXAB2BDQAPgQ0AD4ENAA+BDQAPgQ7ACQEOwAkBDsAJASEAGcEhABnBIQAZwSEAGcEhABnBIQAZwYHACgEPAAFBDwABQQqAEEEKgBBBCoAQQVTABIE6v9KBhP/UwKm/1YFmv+nBUT+4QVv/7ICqv+HBVMAEgUMAJQEhgCUBNEAUAWvAJQCQgCjBQsAlAcBAJQFrgCUBYYAZgUdAJQE2wAtBOAABwUQACkCQv+/BOAABwSEAFYEYABgBIgAfgKqAKkEYACABJgAjgSOAE8EuwCSA/UAFgQGAB8Cqv/MBGAAgASOAE8EYACABpQAZgSGAJQEdQCbBNQASgJCAKMCQv+/BHEALQUoAJsFCwCUBQoAOQVTABIFDACUBHUAmwSGAJQFqACUBwEAlAWvAJQFhgBmBbEAmwUdAJQFOQBmBNsALQUQACkEVABaBEsAUwSYAIYEjgBPBIEAfAQwAE8D5QAMBAYAHwRLAFMDWgCFBCEASwILAH0CGv+rAgH/tQRuAI8D5QAMBwoAMAXyACEHCgAwBfIAIQcKADAF8gAhBOAABwPlAAwBWgBSApgAZQRKAI8CJv+xAbwAMwcBAJQG9gB8BVMAEgRUAFoEhgCUBagAlARLAFMEmACGBaoARAXJAE8FGgAQBA7/8QhzAE8JawBmBNYASQQWAE0FOQBmBDAATwTgAAcEDgAgAkIAoweiABYGdgAeAkIAowVTABIEVABaBVMAEgRUAFoHhf/2BsEASASGAJQESwBTBYgAUQQ8AFkEPABZB6IAFgZ2AB4E1gBJBBYATQWoAJQEmACGBagAlASYAIYFhgBmBI4ATwV6AF8EiABPBXoAXwSIAE8FUABrBDwAUQUKADkD5QAMBQoAOQPlAAwFCgA5A+UADAWJAI4EZgBfBvkAmwZvAI8FEAApBAYAHwSEAE8FqQAtBJoAIQVTABIEVABaBVMAEgRUAFoFUwASBFQAWgVTABAEVP+aBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBVMAEgRUAFoFUwASBFQAWgSGAJQESwBTBIYAlARLAFMEhgCUBEsAUwSGAJQESwBTBIb/1QRL/44EhgCUBEsAUwSGAJQESwBTBIYAlARLAFMCQgCjAhoAjwJCAJQCCwB4BYYAZgSOAE8FhgBmBI4ATwWGAGYEjgBPBYYAJwSO/6MFhgBmBI4ATwWGAGYEjgBPBYYAZgSOAE8FigBYBJ4ATwWKAFgEngBPBYoAWASeAE8FigBYBJ4ATwWKAFgEngBPBTcAfQRyAHcFNwB9BHIAdwWkAH0E8gB3BaQAfQTyAHcFpAB9BPIAdwWkAH0E8gB3BaQAfQTyAHcE4AAHA+UADATgAAcD5QAMBOAABwPlAAwEogBPBKIATwUoAJsEbgCPBa8AlASXAIYE2wAtA/UAIwUQACkEBgAfBYkAjgRmAF8FiQCOBGYAXwR1AJsDWgCFB6IAFgZ2AB4GJAAWBMP/ywRxAHkFB//QBQf/0AR1//ADWv/iBTz/4wRE/64FqACUBJgAhgWvAJQElwCGBwEAlAYDAI8FqQAtBJoAIQTgAAcEDgAgBRAAKQQGAB8EYABgBGUAAgYwAIEEjABRBIwATwSMADQEjACBBKAAXQS0AH0FcgBqBIkAUgWuAJQEcwB5BVMAEgRUAA0EhgBIBEsAAQJC/vYCGv7iBYYAZgSOABYE/gAyAtD/bgU3AHEEcgAPBN/+rAUMAJQEgQB8BToAlASEAE8FOgCUBIQATwWvAJQEcQB5BQsAlAQtAH0FCwCUBC0AfQRUAJQCCwB4BwEAlAb2AHwFrgCUBHMAeQUdAJQEgQB8BP4AlALQAHIE1ABKBCEASwTbAC0CqQAIBS0AEgP1ABYFLQASA/UAFgcKADAF8gAhBNEAUAQGAFIFzP4cBJ4ACQQc/yoFGv83Ajj/OQTK/5MEeP7oBO7/pASeAAkEYAB2A+AAdgQqAEEE3gB2AfwAhQRbAHYGBgB2BMAATwRtAHYEOwAkBDwABQReABUB/P+dBDwABQPgAHYDuQB2BDQAPgH8AIUB/P+dA9UAJARbAHYERgAfBJ4ACQRgAHYDuQB2A+AAdgTkAHYGBgB2BN4AdgTAAE8E2AB2BG0AdgSAAE8EOwAkBF4AFQRGAEIE3gB2BIAATwQ8AAUF/gAKBOQAdgRGAB8FnQBQBVMAEgRUAFoEhgCUBEsAUwIaAHgAAAABAAAE5AkLBAAAAgICAwYFBwYCAwMEBQIDAwQFBQUFBQUFBQUFAgIFBQUECAYGBgYFBQYGAwUGBQgGBgYGBgUFBgYIBgUFAgQCBAQDBQUFBQUDBQUCAgUCCAUFBQUDBQMFBAcFBAUDAgMGAgUFBgUCBgQHBAQFBwQDBQMDAwUEAwIDBAQHBwcECAUGBQYIBQUFBQYCBQUDBgUJCAIGAwYFBgYCBQQEBAQCAwMEBAMAAAAAAAADBQMFBgYGBQYFBwYGBQUFBQUFBQUDBQUGBQUFBQUHBwcFBQcHBgoKBwYGBwkFBgYGBwcGCQkHCAYGCAYFBQQGBwUFBQUHBQUEBwUFBwgGBwUFBwUFBQgIBQUIBwUIBwYFCAcIBwoJBQQGBQYFBgUIBwgHBgUGAAAAAAAABQYFBQQFBQYFBwYJBgkIBwYIBgYFBgcFBgUGBQYFBQUEBggIBwYFBQkHCQcGBQYGBgQFCQUJAwICBQICAQADAwYHBAICAgIDBAMFBQMEBgIJAwMEAwQFBwgKCAcFBwUFBgYHBAkGBgcICAcFBgUFBQkCBQUFBQUDAwIGBQUICAYIAAkJBQUCAgQEBAUFBQUEAgUFBQUEBAUFAgQFBAcFBQUFBQUFBQUHBQUFAwMDAwMDAwMDAwQDBQUGBgUGBQUFBQQFBQUEBQUGBgYGBQgIBgUFBgcFBgUFBQYFBwgGBwUFBwUFBwUGBgcFBQcFBQcFBQUFBAkGBQUFBAUFBQUFBgYGBwcFBQQFBQMDAwMDAwMFBQcFBgICAgICBQIDBgYFBQMGBgYGBgYGBgUFBQUDAwMDBgYGBgYGBgYGBgUFBQUFBQUFBQUFBQUCAgICBQUFBQUFBQUFBQQEBgUGBQYFBgUGBQYFBgUGBgUFBQUFBQUFBQUGBQYFBgUGBQYFAwIDAgMCAwIDCAUFAgYFBQIFAgUDBQMGBQYFBgUFBgUGBQYFBgMGAwYDBQUFBQUFBQUFBQUDBQMFAwYFBgUGBQYFBgUGBQgHBQQFBQUFBQUFCAgGBQUFBQUFBQUFBQUFBAQEBAICAgIFBQUFBQUFBQUFBQUFBQUFBQUFBAQEBAQFBQUFBQICAgICBAUEBAQEBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQcFBQUFBQYGBwMGBgYDBgYFBQYDBggGBgYFBQYDBQUFBQMFBQUFBAUDBQUFBwUFBQMDBQYGBgYGBQUGCAYGBgYGBQYFBQUFBQUEBQUEBQICAgUECAcIBwgHBQQCAwUCAggIBgUFBgUFBgcGBQoLBQUGBQUFAwkHAwYFBgUICAUFBgUFCQcFBQYFBgUGBQYFBgUGBQYEBgQGBAYFCAcGBQUGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQUFBQUFBQUFBQUFBQUFBQUDAgMCBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQYGBgYGBgYGBgYFBAUEBQQFBQYFBgUFBAYFBgUGBQUECQcHBQUGBgUEBgUGBQYFCAcGBQUFBgUFBQcFBQUFBQUGBQYFBgUFBQMCBgUGAwYFBQYFBgUGBQYFBgUGBQUCCAgGBQYFBgMFBQUDBgQGBAgHBQUHBQUGAwUFBgUFBAUFAgUHBQUFBQUCBQQEBQICBAUFBQUEBAYHBQUFBQUFBQUFBQUHBgUGBgUFBQIAAAADAAAAAwAAABwAAwABAAAAHAADAAoAAAaIAAQGbAAAAOoAgAAGAGoAAAACAA0AfgCgAKwArQC/AMYAzwDmAO8A/gEPAREBJQEnATABUwFfAWcBfgF/AY8BkgGhAbAB8AH/AhsCNwJZArwCxwLJAt0C8wMBAwMDCQMPAyMDigOMA5IDoQOwA7kDyQPOA9ID1gQlBC8ERQRPBGIEbwR5BIYEzgTXBOEE9QUBBRAFEx4BHj8ehR7xHvMe+R9NIAsgESAVIB4gIiAnIDAgMyA6IDwgRCB0IH8gpCCqIKwgsSC6IL0hBSETIRYhIiEmIS4hXiICIgYiDyISIhoiHiIrIkgiYCJlJcruAvbD+wT+///9//8AAAAAAAIADQAgAKAAoQCtAK4AwADHANAA5wDwAP8BEAESASYBKAExAVQBYAFoAX8BjwGSAaABrwHwAfoCGAI3AlkCvALGAskC2ALzAwADAwMJAw8DIwOEA4wDjgOTA6MDsQO6A8oD0QPWBAAEJgQwBEYEUARjBHAEegSIBM8E2ATiBPYFAgURHgAePh6AHqAe8h70H00gACAQIBMgFyAgICUgMCAyIDkgPCBEIHQgfyCjIKYgqyCxILkgvCEFIRMhFiEiISYhLiFbIgIiBiIPIhEiGiIeIisiSCJgImQlyu4B9sP7Af7///z//wABAAD/9v/kAaT/wgGY/8EAAAGLAAABhgAAAYIAAAGAAAABfgAAAXYAAAF4/xX/Bv8E/vf+6gG6AAAAAP5k/kMA7/3X/db9yP2z/af9pv2h/Zz9iQAA/8r/yQAAAAD9CQAA/6r8/fz6AAD8uQAA/LEAAPymAAD8oAAA/vQAAP7xAAD8SQAA5a7lbuUf5U7ks+VM5VzhW+FXAADhVOFT4VHhSeN14UHjbeE44Qng/wAA4NoAAODV4M7gzeCG4Hngd+Bs35PgYeA135Leq9+G34Xfft9732/fU9883znb1ROfCt8GowKrAa8AAQAAAAAAAAAAAAAAAAAAAAAA2gAAAOQAAAEOAAABKAAAASgAAAEoAAABagAAAAAAAAAAAAAAAAAAAWoBdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFiAAAAAAFqAYYAAAGeAAAAAAAAAbYAAAH+AAACJgAAAkgAAAJYAAAC4gAAAvIAAAMGAAAAAAAAAAAAAAAAAAAAAAAAAvgAAAAAAAAAAAAAAAAAAAAAAAAAAALoAAAC6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJLAkwCTQJOAk8CUACBAkcCWwJcAl0CXgJfAmAAggCDAmECYgJjAmQCZQCEAIUCZgJnAmgCaQJqAmsAhgCHAnYCdwJ4AnkCegJ7AIgAiQJ8An0CfgJ/AoAAigJGBEYAiwJIAIwCrwKwArECsgKzArQAjQK1ArYCtwK4ArkCugK7ArwAjgCPAr0CvgK/AsACwQLCAsMAkACRAsQCxQLGAscCyALJAJIAkwLYAtkC3ALdAt4C3wJJAkoCUQJsAvcC+AL5AvoC1gLXAtoC2wCtAK4DUgCvA1MDVANVALAAsQNcA10DXgCyA18DYACzA2EDYgC0A2MAtQNkALYDZQNmALcDZwC4ALkDaANpA2oDawNsA20DbgNvAMMDcQNyAMQDcADFAMYAxwDIAMkAygDLA3MAzADNA7ADeQDRA3oA0gN7A3wDfQN+ANMA1ADVA4ADsQOBANYDggDXA4MDhADYA4UA2QDaANsDhgN/ANwDhwOIA4kDigOLA4wDjQDdAN4DjgOPAOkA6gDrAOwDkADtAO4A7wORAPAA8QDyAPMDkgD0A5MDlAD1A5UA9gOWA7IDlwEBA5gBAgOZA5oDmwOcAQMBBAEFA50DswOeAQYBBwEIBFwDtAO1ARYBFwEYARkDtgO3A7kDuAEnASgEYQRiBFsBKQEqASsBLAEtBF0EXgEuAS8EVgRXA7oDuwRIBEkBMAExBF8EYAEyATMESgRLATQBNQE2ATcBOAE5A7wDvQRMBE0DvgO/BGkEagROBE8BOgE7BFAEUQE8AT0BPgRaAT8BQARYBFkDwAPBA8IBQQFCBGcEaAFDAUQEYwRkBFIEUwRlBGYBRQPNA8wDzgPPA9AD0QPSAUYBRwRUBFUD5wPoAUgBSQPpA+oEawRsAUoD6wRtA+wD7QFpAWoEbwRuAX8ERwGFAAwAAAAADEAAAAAAAAABBAAAAAAAAAAAAAAAAQAAAAIAAAACAAAAAgAAAA0AAAANAAAAAwAAACAAAAB+AAAABAAAAKAAAACgAAACRAAAAKEAAACsAAAAYwAAAK0AAACtAAACRQAAAK4AAAC/AAAAbwAAAMAAAADFAAACSwAAAMYAAADGAAAAgQAAAMcAAADPAAACUgAAANAAAADQAAACRwAAANEAAADWAAACWwAAANcAAADYAAAAggAAANkAAADdAAACYQAAAN4AAADfAAAAhAAAAOAAAADlAAACZgAAAOYAAADmAAAAhgAAAOcAAADvAAACbQAAAPAAAADwAAAAhwAAAPEAAAD2AAACdgAAAPcAAAD4AAAAiAAAAPkAAAD9AAACfAAAAP4AAAD+AAAAigAAAP8AAAEPAAACgQAAARAAAAEQAAACRgAAAREAAAERAAAERgAAARIAAAElAAACkgAAASYAAAEmAAAAiwAAAScAAAEnAAACSAAAASgAAAEwAAACpgAAATEAAAExAAAAjAAAATIAAAE3AAACrwAAATgAAAE4AAAAjQAAATkAAAFAAAACtQAAAUEAAAFCAAAAjgAAAUMAAAFJAAACvQAAAUoAAAFLAAAAkAAAAUwAAAFRAAACxAAAAVIAAAFTAAAAkgAAAVQAAAFfAAACygAAAWAAAAFhAAAC2AAAAWIAAAFlAAAC3AAAAWYAAAFnAAACSQAAAWgAAAF+AAAC4AAAAX8AAAF/AAAAlAAAAY8AAAGPAAAAlQAAAZIAAAGSAAAAlgAAAaAAAAGhAAAAlwAAAa8AAAGwAAAAmQAAAfAAAAHwAAADqgAAAfoAAAH6AAACUQAAAfsAAAH7AAACbAAAAfwAAAH/AAAC9wAAAhgAAAIZAAAC1gAAAhoAAAIbAAAC2gAAAjcAAAI3AAAAmwAAAlkAAAJZAAAAnAAAArwAAAK8AAADqwAAAsYAAALHAAAAnQAAAskAAALJAAAAnwAAAtgAAALdAAAAoAAAAvMAAALzAAAApgAAAwAAAAMBAAAApwAAAwMAAAMDAAAAqQAAAwkAAAMJAAAAqgAAAw8AAAMPAAAAqwAAAyMAAAMjAAAArAAAA4QAAAOFAAAArQAAA4YAAAOGAAADUgAAA4cAAAOHAAAArwAAA4gAAAOKAAADUwAAA4wAAAOMAAADVgAAA44AAAOSAAADVwAAA5MAAAOUAAAAsAAAA5UAAAOXAAADXAAAA5gAAAOYAAAAsgAAA5kAAAOaAAADXwAAA5sAAAObAAAAswAAA5wAAAOdAAADYQAAA54AAAOeAAAAtAAAA58AAAOfAAADYwAAA6AAAAOgAAAAtQAAA6EAAAOhAAADZAAAA6MAAAOjAAAAtgAAA6QAAAOlAAADZQAAA6YAAAOmAAAAtwAAA6cAAAOnAAADZwAAA6gAAAOpAAAAuAAAA6oAAAOwAAADaAAAA7EAAAO5AAAAugAAA7oAAAO6AAADbwAAA7sAAAO7AAAAwwAAA7wAAAO9AAADcQAAA74AAAO+AAAAxAAAA78AAAO/AAADcAAAA8AAAAPGAAAAxQAAA8cAAAPHAAADcwAAA8gAAAPJAAAAzAAAA8oAAAPOAAADdAAAA9EAAAPSAAAAzgAAA9YAAAPWAAAA0AAABAAAAAQAAAADsAAABAEAAAQBAAADeQAABAIAAAQCAAAA0QAABAMAAAQDAAADegAABAQAAAQEAAAA0gAABAUAAAQIAAADewAABAkAAAQLAAAA0wAABAwAAAQMAAADgAAABA0AAAQNAAADsQAABA4AAAQOAAADgQAABA8AAAQPAAAA1gAABBAAAAQQAAADggAABBEAAAQRAAAA1wAABBIAAAQTAAADgwAABBQAAAQUAAAA2AAABBUAAAQVAAADhQAABBYAAAQYAAAA2QAABBkAAAQZAAADhgAABBoAAAQaAAADfwAABBsAAAQbAAAA3AAABBwAAAQiAAADhwAABCMAAAQkAAAA3QAABCUAAAQlAAADjgAABCYAAAQvAAAA3wAABDAAAAQwAAADjwAABDEAAAQ0AAAA6QAABDUAAAQ1AAADkAAABDYAAAQ4AAAA7QAABDkAAAQ5AAADkQAABDoAAAQ9AAAA8AAABD4AAAQ+AAADkgAABD8AAAQ/AAAA9AAABEAAAARBAAADkwAABEIAAARCAAAA9QAABEMAAARDAAADlQAABEQAAAREAAAA9gAABEUAAARFAAADlgAABEYAAARPAAAA9wAABFAAAARQAAADsgAABFEAAARRAAADlwAABFIAAARSAAABAQAABFMAAARTAAADmAAABFQAAARUAAABAgAABFUAAARYAAADmQAABFkAAARbAAABAwAABFwAAARcAAADnQAABF0AAARdAAADswAABF4AAAReAAADngAABF8AAARhAAABBgAABGIAAARiAAAEXAAABGMAAARvAAABCQAABHAAAARxAAADtAAABHIAAAR1AAABFgAABHYAAAR3AAADtgAABHgAAAR4AAADuQAABHkAAAR5AAADuAAABHoAAASGAAABGgAABIgAAASJAAABJwAABIoAAASLAAAEYQAABIwAAASMAAAEWwAABI0AAASRAAABKQAABJIAAASTAAAEXQAABJQAAASVAAABLgAABJYAAASXAAAEVgAABJgAAASZAAADugAABJoAAASbAAAESAAABJwAAASdAAABMAAABJ4AAASfAAAEXwAABKAAAAShAAABMgAABKIAAASjAAAESgAABKQAAASpAAABNAAABKoAAASrAAADvAAABKwAAAStAAAETAAABK4AAASvAAADvgAABLAAAASxAAAEaQAABLIAAASzAAAETgAABLQAAAS1AAABOgAABLYAAAS3AAAEUAAABLgAAAS6AAABPAAABLsAAAS7AAAEWgAABLwAAAS9AAABPwAABL4AAAS/AAAEWAAABMAAAATCAAADwAAABMMAAATEAAABQQAABMUAAATGAAAEZwAABMcAAATIAAABQwAABMkAAATKAAAEYwAABMsAAATMAAAEUgAABM0AAATOAAAEZQAABM8AAATXAAADwwAABNgAAATYAAABRQAABNkAAATZAAADzQAABNoAAATaAAADzAAABNsAAATfAAADzgAABOAAAAThAAABRgAABOIAAAT1AAAD0wAABPYAAAT3AAAEVAAABPgAAAT5AAAD5wAABPoAAAT7AAABSAAABPwAAAT9AAAD6QAABP4AAAT/AAAEawAABQAAAAUAAAABSgAABQEAAAUBAAAD6wAABQIAAAUQAAABSwAABREAAAURAAAEbQAABRIAAAUTAAAD7AAAHgAAAB4BAAADrgAAHj4AAB4/AAADrAAAHoAAAB6FAAADnwAAHqAAAB7xAAAD7gAAHvIAAB7zAAADpQAAHvQAAB75AAAEQAAAH00AAB9NAAAEqQAAIAAAACALAAABWwAAIBAAACARAAABZwAAIBMAACAUAAABaQAAIBUAACAVAAAEbwAAIBcAACAeAAABawAAICAAACAiAAABcwAAICUAACAnAAABdgAAIDAAACAwAAABeQAAIDIAACAzAAADpwAAIDkAACA6AAABegAAIDwAACA8AAADqQAAIEQAACBEAAABfAAAIHQAACB0AAABfQAAIH8AACB/AAABfgAAIKMAACCjAAAEbgAAIKQAACCkAAABfwAAIKYAACCqAAABgAAAIKsAACCrAAAERwAAIKwAACCsAAABhQAAILEAACCxAAABhgAAILkAACC6AAABhwAAILwAACC9AAABiQAAIQUAACEFAAABiwAAIRMAACETAAABjAAAIRYAACEWAAABjQAAISIAACEiAAABjgAAISYAACEmAAAAuQAAIS4AACEuAAABjwAAIVsAACFeAAABkAAAIgIAACICAAABlAAAIgYAACIGAAAAsQAAIg8AACIPAAABlQAAIhEAACISAAABlgAAIhoAACIaAAABmAAAIh4AACIeAAABmQAAIisAACIrAAABmgAAIkgAACJIAAABmwAAImAAACJgAAABnAAAImQAACJlAAABnQAAJcoAACXKAAABnwAA7gEAAO4CAAABoAAA9sMAAPbDAAABogAA+wEAAPsEAAABpAAA/v8AAP7/AAABqgAA//wAAP/9AAABq7AALEuwCVBYsQEBjlm4Af+FsIQdsQkDX14tsAEsICBFaUSwAWAtsAIssAEqIS2wAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbAELCBGsAQlRlJY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seix/7IWsi6yRbJcsnOyi7KdsrSyy7LisvmzEbMoszqzUbNps4Czl7Ops7+z1bPstAS0ELQctDO0RbRbtHK0iLSetLW0zbTetPW1B7UdtS61RrVdtW+1hbWcta61xbXcte22BLYbtoW3J7c5t0u3Yrd4t4+3pre4t8m327fruAK4E7gquEC4V7huuNu5crmJuZq5sbnHud659LoLuiK6LrpAule6abqAupK6qbrAute67rr5uwS7G7snuzO7Srthu227ebuQu6e7s7u/u9S76bv1vAG8GLwqvDa8QrxZvGq8f7yWvKe8vrzVvO29Bb0XvSm9Nb1BvVO9ZL12vYi9n721vcG9zb3ZveW9974IvhS+IL4svji+T75bvnK+iL6avrC+x77evvG/BL8cvy+/jb/vwAbAHcA0wErAYsB5wJDAp8C+wNDA4cD4wQrBIcE4wWjBmMGowb/B1sHswf3CFcItwjnCRcJcwnPCicKgwrfCzcLkwvzDDsMlwzfDTcNew3bDjcOkw7rD0sPpw//EFsR9xI/EpcS8xM3E3sT0xQrFIcWOxaTFusXRxejF9MYKxhzGM8ZKxlXGa8aCxo7GpMawxsXG0cboxvTHC8ccxzPHRsdYx2THdceHx53Hqce6x8bH3Mfox/7ID8gmyDnITMityMTI2sjxyQjJH8k1yUDJTMlYyWTJcMl8yYjJo8mrybPJu8nDycvJ08nbyePJ68nzyfvKA8oLyhPKK8pDylXKZ8p5yorKpMqsyrTKvMrEyszK5Mr7yw3LH8sxy0nLYMvOy9bL7sv2y/7MFcwszDTMPMxEzEzMY8xrzHPMe8yDzIvMk8ybzKPMq8yzzMrM0szazS7NNs0+zVXNbM10zXzNlM2czbPNyc3gzffODs4lzjjOS85iznPOh86mzrLOxM7MzuPO9c8Bzw3PJM87z1LPac9xz3nPkc+pz7XPwc/Nz9nP5c/xz/nQAdAJ0CDQN9A/0FbQbdCF0JzQpNCs0MPQ2dDx0PnRENEo0UDRWNFv0YbRnNG00czR5NH80gTSDNIk0jvSU9Jq0nzSjdKl0rzS1NLs0wTTG9M301PTX9Nr03PTf9OL05fTo9O108fT4NPy1AvUHdQw1ELUVdRn1HfUhtSZ1KvUvtTQ1OPU9dUI1RrVKtU61UbVUtVk1XbViNWZ1bLVxNXd1e/WAtYU1ifWOdZJ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CRCwBtCwBi+wAdCwAS8wMf//AI//8gPIBbAAJgAFAAAABwAFAiUAAP///7H+SwJzBd8CJgCbAAABBwCe/z//3gAJALAAL7AR3DAxAP//ADMEAAFlBgACBgFtAAD//wCUAAAGagc2AiYAMQAAAQcAdQKQATYAEwCwAEVYsAIvG7ECHz5ZsBHcMDEA//8AfAAABnkGAAImAFEAAAEHAHUCoAAAAAkAsAMvsCDcMDEA//8AEv5tBUIFsAImACUAAAAHAKYBegAD//8AWv5xA/sETgImAEUAAAAHAKYArQAH//8AlAAABEwHPQImACkAAAEHAEQA6AE9ABMAsABFWLAGLxuxBh8+WbAN3DAxAP//AJQAAAUNBz0CJgDbAAABBwBEAUoBPQATALAARViwCC8bsQgfPlmwC9wwMQD//wBT/+wECwYAAiYASQAAAQcARAChAAAAEwCwAEVYsAgvG7EIGz5ZsB/cMDEA//8AhgAABBIF8wImAO8AAAEHAEQAxP/zABMAsABFWLAILxuxCBs+WbAL3DAxAP//AEQAAAVcBbACBgC4AAD//wBP/iIFfgQ6AgYAzAAA//8AEAAABPMG/AImARgAAAEHAKsESQEOABYAsABFWLAPLxuxDx8+WbAR3LAV0DAx////8QAABBgF0AImARkAAAEHAKsD5f/iABYAsABFWLARLxuxERs+WbAT3LAX0DAx//8AT/5LCGQETgAmAFMAAAAHAF0EjgAA//8AZv5LCVwFxAAmADMAAAAHAF0FhgAA//8ASf46BH8FwwImANoAAAAHAbABkv+g//8ATf47A8QETQImAO4AAAAHAbABOf+h//8AZv4+BOsFxAImACcAAAAHAbAB1v+k//8AT/4+A/UETgImAEcAAAAHAbABSv+k//8ABwAABNYFsAIGAD0AAP//ACD+XwP1BDoCBgC8AAD//wCjAAABnwWwAgYALQAA//8AFgAAB5sHIwImANkAAAEHAKACHQE9ABMAsABFWLANLxuxDR8+WbAZ3DAxAP//AB4AAAZcBdkCJgDtAAABBwCgAYf/8wATALAARViwDS8bsQ0bPlmwGdwwMQD//wCjAAABnwWwAgYALQAA//8AEgAABUIHHAImACUAAAEHAKAA9gE2ABMAsABFWLAELxuxBB8+WbAO3DAxAP//AFr/7AP7BeYCJgBFAAABBwCg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ALAARViwBy8bsQcfPlmxDwn0sBXQMDEA//8AU//sBMgGfAImAEkAAAEGAbc97AAMALAIL7Ag3LAl0DAx////1QAABEwHtQImACkAAAEHAbYAiQEyABcAsABFWLAGLxuxBh8+WbEPCfSwFNAwMQD///+O/+wECwZ5AiYASQAAAQYBtkL2AAwAsAgvsB7csCXQMDH//wCUAAAEkgflAiYAKQAAAQcBtQCIARoADACwBi+wDNywE9AwMf//AFP/7ARLBqkCJgBJAAABBgG1Qd4ADACwCC+wHtywJdAwMf//AJQAAARMB90CJgApAAABBwG0AIkBDAAMALAGL7AM3LAT0DAx//8AU//sBAsGoQImAEkAAAEGAbRC0AAMALAIL7Ae3LAl0DAx//8AlP6eBEwHPgImACkAAAAnAJ0AiAE9AAcArATLAAr//wBT/pQECwYBAiYASQAAACYAnUEAAAcArASPAAD//wCjAAACEQfCAiYALQAAAQcAqgN4AUMACQCwAi+wBNwwMQD//wCPAAAB/QZ+AiYAjAAAAQcAqgNk//8ACQCwAi+wBNwwMQD//wCU/poBpwWwAiYALQAAAAcArAN4AAb//wB4/p4BkAXVAiYATQAAAAcArANcAAr//wBm/pQFHgXEAiYAMwAAAAcArAUdAAD//wBP/pIEPQROAiYAUwAAAAcArASd//7//wBm/+wFHge7AiYAMwAAAQcAqgUcATwACQCwFC+wH9wwMQD//wBP/+wEPQaFAiYAUwAAAQcAqgSYAAYACQCwBC+wG9wwMQD//wBm/+wFYQexAiYAMwAAAQcBtwDWASEADACwFC+wIdywJtAwMf//AE//7ATdBnwCJgBTAAABBgG3UuwADACwBC+wHdywItAwMf//ACf/7AUeB64CJgAzAAABBwG2ANsBKwAMALAUL7Af3LAm0DAx////o//sBD0GeQImAFMAAAEGAbZX9gAMALAEL7Ab3LAi0DAx//8AZv/sBR4H3gImADMAAAEHAbUA2gETAAwAsBQvsB/csCbQMDH//wBP/+wEYAapAiYAUwAAAQYBtVbeAAwAsAQvsBvcsCLQMDH//wBm/+wFHgfWAiYAMwAAAQcBtADbAQUADACwFC+wH9ywJtAwMf//AE//7AQ9BqECJgBTAAABBgG0V9AADACwBC+wG9ywItAwMf//AGb+lAUe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GzIcqB5aIBg63iFOIuA5MiUuOt463jb2Ot463iX4J5I5oChwKTIpwCoeKvg5KCuCOZAsTCx2Ldw23DBiMKAx0jOQNtwyVDLaMwQzWjOQN0A3+DakOCQztjbcOco5KDqMOow5KDaeM+A2njaeNp41UjV4NYI1jDWqNbw1zjXgNso7ijuKO4o7ijg+N0A3QDdAN0A3QDdAN0A2yjfYN9g32DfYOt463jreOt463juKO4o7ijuKO4o4HjgeOB44HjsAN7Y3tje2N7Y3tje2N7Y37jfuN+437jmWN/g3+Df4N/g3+DgkOCQ3QDe2N0A3tjdAN7Y2yjbKNso2yjuKN9g37jfYN+432DfuN9g37jfYN+463jmWOt463jreOt463jgeOow16jXqNeo16jreOZY63jmWOt45ljmWO4o3+DuKN/g7ijf4Nhg2GDYYOD44Pjg+OB44HjgeOB44HjgeNng7ADgkOwA2KjYqNio3QDfYOt463juKOwA3QDZMN9g2KjreOt46jDreOt47ijZWOD47ADkyOt47ADmWN/g4JDf4N9g5yjreOt44HjqMOow29jdANkw5yjfYOt463juKNlY2yjg+OTI3tjfuN/g23DgkOZA37jkoOCQ2eDZ4Nng7ADgkNp42njaeOt45ljdAN7Y32DfuNqQ4JDbKOwA4JDreOTI5kDreN0A3tjdAN7Y32DfuN+437jkyOZA7ijf4N/g23Db2OCQ29jgkNvY4JDkyOZA3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y32DfuN9g37jfYN+432DfuN9g37jfYN+432DfuN9g37jreOt47ijf4O4o3+DuKN/g7ijf4O4o3+DuKN/g7ijf4N/g4HjgeOwA4JDsAOCQ7ADgkOow63jg+OTI5kDnKOSg5MjmQOZY5oDnKOow63jreOwA7igACAIsABAAEAAAABgAGAAEACwAMAAIAEwATAAQAJQAqAAUALAA2AAsAOAA/ABYARQBGAB4ASQBKACAATABMACIATwBPACMAUQBUACQAVgBWACgAWABYACkAWgBdACoAXwBfAC4AigCKAC8AnACcADAAsAC0ADEAtgC4ADYAugC6ADkAvAC8ADoAvwDAADsAwgDCAD0AxADEAD4AxgDNAD8A0QDRAEcA0wDdAEgA3wDfAFMA4QDjAFQA5QDuAFcA8ADwAGEA9QD3AGIA+gD7AGUA/QD/AGcBAgEEAGoBCQEJAG0BDAEMAG4BFwEZAG8BIQEhAHIBKwEtAHMBMAEwAHYBMgEyAHcBSQFJAHgBbAFtAHkBbwFxAHsBugG6AH4BvQG9AH8BxAHFAIAByAHIAIIBygHLAIMBzQHNAIUCKAIoAIYCKgIrAIcCRgJHAIkCSQJJAIsCSwJsAIwCbgJxAK4CdgJ7ALICgAKIALgCigKKAMECjAKMAMICjgKOAMMCkAKQAMQCkgKbAMUCpAKmAM8CqAKoANICqgKqANMCrAKsANQCrgKuANUCsQKxANYCswKzANcCtQK1ANgCtwK3ANkCuQK5ANoCuwK7ANsCvQLJANwCywLLAOkCzQLNAOoCzwLPAOsC2gLaAOwC3ALcAO0C3gLeAO4C4ALgAO8C4gLiAPAC5ALkAPEC5gLmAPIC6ALoAPMC6gLqAPQC7ALsAPUC7gLxAPYC8wLzAPoC9QL1APsDUgNXAPwDWgNpAQIDbANsARIDcANwARMDcgNyARQDdgN2ARUDeQN6ARYDfAOFARgDhwOJASIDiwOQASUDkgOTASsDlQOYAS0DngOfATEDoQOhATMDowOjATQDpQOoATUDqwOwATkDsgOyAT8DtgO3AUADvAO8AUIDvgPHAUMDygPLAU0DzQPQAU8D1wPYAVMD3APcAVUD3gPkAVYD6QPqAV0D7gQWAV8EGAQYAYgEGgQnAYkELwQvAZcEMgQyAZgENAQ0AZkEQARFAZoESARIAaAESgRKAaEETARMAaIETgRPAaMEVARXAaUEWgRaAakEXARdAaoEXwRfAawEYwRjAa0EZQRlAa4EaQRpAa8EqQSpAbAACgA4/8QA0f/EANX/xAEy/8QBOv/EAtr/xALc/8QC3v/EA43/xARM/8QAFQA6ABQAOwAmAD0AFgEYABQCZQAWAuwAJgLuABYC8AAWA1cAFgNmABYDaQAWA58AJgOhACYDowAmA6UAFgO2ABQDvgAWBEAAFgRCABYERAAWBGkAFgABABP/CADOABD+7gAS/u4AJf9AAC7/MAA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFb/5gBZ/+oAWv/oAF3/6ACT/+sAmP/rAJr/6gCx/0AAs/9AALr/6wC8/+gAx//rAMj/6wDK/+oA0QAUANUAFAD2/+sBAv/rAQz/QAEX/+sBGf/oAR3/6wEh/+sBMgAUATn/6wE6ABQBS//rAUz/6wFW/+sBbv7uAXL+7gF2/u4Bd/7uAbr/wAJL/0ACTP9AAk3/QAJO/0ACT/9AAlD/QAJR/0ACZv/eAmf/3gJo/94Caf/eAmr/3gJr/94CbP/eAm3/6wJu/+sCb//rAnD/6wJx/+sCd//rAnj/6wJ5/+sCev/rAnv/6wJ8/+oCff/qAn7/6gJ//+oCgP/oAoH/6AKC/0ACg//eAoT/QAKF/94Chv9AAof/3gKJ/+sCi//rAo3/6wKP/+sCkf/rApP/6wKV/+sCl//rApn/6wKb/+sCnf/rAp//6wKh/+sCo//rArH/MALF/+sCx//rAsn/6wLaABQC3AAUAt4AFALh/+oC4//qAuX/6gLn/+oC6f/qAuv/6gLv/+gDUv9AA1r/QANq/+sDbv/qA3D/6wNy/+gDdf/qA3b/6wN3/+oDfv8wA4L/QAONABQDj//eA5D/6wOS/+sDlP/rA5X/6AOX/+sDnv/oA6b/6AOu/0ADr//eA7L/6wO3/+gDuP/rA73/6wO//+gDxP9AA8X/3gPG/0ADx//eA8v/6wPN/+sDzv/rA9j/6wPa/+sD3P/rA+D/6APi/+gD5P/oA+v/6wPu/0AD7//eA/D/QAPx/94D8v9AA/P/3gP0/0AD9f/eA/b/QAP3/94D+P9AA/n/3gP6/0AD+//eA/z/QAP9/94D/v9AA///3gQA/0AEAf/eBAL/QAQD/94EBP9ABAX/3gQH/+sECf/rBAv/6wQN/+sED//rBBH/6wQT/+sEFf/rBBv/6wQd/+sEH//rBCH/6wQj/+sEJf/rBCf/6wQp/+sEK//rBC3/6wQv/+sEMf/rBDP/6gQ1/+oEN//qBDn/6gQ7/+oEPf/qBD//6gRB/+gEQ//oBEX/6ARMABQAIAA4/98AOv/kADv/7AA9/90A0f/fANX/3wEY/+QBMv/fATr/3wG6AA4CZf/dAtr/3wLc/98C3v/fAuz/7ALu/90C8P/dA1f/3QNm/90Daf/dA43/3wOf/+wDof/sA6P/7AOl/90Dtv/kA77/3QRA/90EQv/dBET/3QRM/98Eaf/dABoAOP/OADr/7QA9/9AA0f/OANX/zgEY/+0BMv/OATr/zgJl/9AC2v/OAtz/zgLe/84C7v/QAvD/0ANX/9ADZv/QA2n/0AON/84Dpf/QA7b/7QO+/9AEQP/QBEL/0ARE/9AETP/OBGn/0AAQAC7/7gA5/+4CYf/uAmL/7gJj/+4CZP/uArH/7gLg/+4C4v/uAuT/7gLm/+4C6P/uAur/7gN+/+4EMv/uBDT/7gBKAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCT/+gAmP/oALr/6ADH/+gAyP/oAPb/6AEC/+gBHf/oASH/6AE5/+gBS//oAUz/6AFW/+gBbAAQAW0AEAFvABABcAAQAXEAEAJt/+gCbv/oAm//6AJw/+gCcf/oAon/6AKL/+gCjf/oAo//6AKR/+gCk//oApX/6AKX/+gCmf/oApv/6AKd/+gCn//oAqH/6AKj/+gDav/oA5D/6AOU/+gDl//oA6cAEAOoABADqwAQA7L/6AO4/+gDvf/oA8v/6APN/+gDzv/oA9r/6APr/+gEB//oBAn/6AQL/+gEDf/oBA//6AQR/+gEE//oBBX/6AQp/+gEK//oBC3/6AQx/+gAAgD1/9YBbf+YAD0AR//sAEj/7ABJ/+wAS//sAFX/7ACT/+wAmP/sALr/7ADH/+wAyP/sAPb/7AEC/+wBHf/sASH/7AE5/+wBS//sAUz/7AFW/+wCbf/sAm7/7AJv/+wCcP/sAnH/7AKJ/+wCi//sAo3/7AKP/+wCkf/sApP/7AKV/+wCl//sApn/7AKb/+wCnf/sAp//7AKh/+wCo//sA2r/7AOQ/+wDlP/sA5f/7AOy/+wDuP/sA73/7APL/+wDzf/sA87/7APa/+wD6//sBAf/7AQJ/+wEC//sBA3/7AQP/+wEEf/sBBP/7AQV/+wEKf/sBCv/7AQt/+wEMf/sABgAU//iARf/4gFtABgCd//iAnj/4gJ5/+ICev/iAnv/4gLF/+ICx//iAsn/4gNw/+IDdv/iA5L/4gPY/+ID3P/iBBv/4gQd/+IEH//iBCH/4gQj/+IEJf/iBCf/4gQv/+IABgAQ/4QAEv+EAW7/hAFy/4QBdv+EAXf/hAAQAC7/7AA5/+wCYf/sAmL/7AJj/+wCZP/sArH/7ALg/+wC4v/sAuT/7ALm/+wC6P/sAur/7AN+/+wEMv/sBDT/7AAeAAb/8gAL//IAWv/zAF3/8wC8//MA9f/1ARn/8wFs//IBbf/yAW//8gFw//IBcf/yAoD/8wKB//MC7//zA3L/8wOV//MDnv/zA6b/8wOn//IDqP/yA6v/8gO3//MDv//zA+D/8wPi//MD5P/zBEH/8wRD//MERf/zAD4AJ//zACv/8wAz//MANf/zAIP/8wCS//MAl//zALL/8wDDAA0A0v/zAQf/8wEW//MBGv/zARz/8wEe//MBIP/zATj/8wFV//MCKP/zAin/8wIr//MCLP/zAlL/8wJc//MCXf/zAl7/8wJf//MCYP/zAoj/8wKK//MCjP/zAo7/8wKc//MCnv/zAqD/8wKi//MCxP/zAsb/8wLI//MC+f/zA1b/8wNj//MDif/zA4z/8wO5//MDvP/zA9f/8wPZ//MD2//zBBr/8wQc//MEHv/zBCD/8wQi//MEJP/zBCb/8wQo//MEKv/zBCz/8wQu//MEMP/zBKn/8wA/ACf/5gAr/+YAM//mADX/5gCD/+YAkv/mAJf/5gCy/+YAt//CAMMAEADS/+YBB//mARb/5gEa/+YBHP/mAR7/5gEg/+YBOP/mAVX/5gIo/+YCKf/mAiv/5gIs/+YCUv/mAlz/5gJd/+YCXv/mAl//5gJg/+YCiP/mAor/5gKM/+YCjv/mApz/5gKe/+YCoP/mAqL/5gLE/+YCxv/mAsj/5gL5/+YDVv/mA2P/5gOJ/+YDjP/mA7n/5gO8/+YD1//mA9n/5gPb/+YEGv/mBBz/5gQe/+YEIP/mBCL/5gQk/+YEJv/mBCj/5gQq/+YELP/mBC7/5gQw/+YEqf/mADcAJf/kADz/0gA9/9MAsf/kALP/5ADD/+IA2f/SAQz/5AJL/+QCTP/kAk3/5AJO/+QCT//kAlD/5AJR/+QCZf/TAoL/5AKE/+QChv/kAu7/0wLw/9MDUv/kA1f/0wNa/+QDZv/TA2f/0gNp/9MDgv/kA47/0gOl/9MDrv/kA77/0wPB/9IDxP/kA8b/5APP/9ID6f/SA+7/5APw/+QD8v/kA/T/5AP2/+QD+P/kA/r/5AP8/+QD/v/kBAD/5AQC/+QEBP/kBED/0wRC/9MERP/TBE7/0gRW/9IEaf/TACcAEP9GABL/RgAl/80Asf/NALP/zQDG//IBDP/NAW7/RgFy/0YBdv9GAXf/RgJL/80CTP/NAk3/zQJO/80CT//NAlD/zQJR/80Cgv/NAoT/zQKG/80DUv/NA1r/zQOC/80Drv/NA8T/zQPG/80D7v/NA/D/zQPy/80D9P/NA/b/zQP4/80D+v/NA/z/zQP+/80EAP/NBAL/zQQE/80AAQDDAA4ArwBH/9wASP/cAEn/3ABL/9wAUf/BAFL/wQBT/9YAVP/BAFX/3ABZ/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAL7/5gDA/8EAwf/rAML/6QDE//AAxf/nAMf/3ADI/9wAyf/jAMr/3QDL/84AzP/UAM3/2wDr/8EA7//BAPD/wQDy/8EA8//BAPT/wQD2/9wA9//BAPn/wQD6/8EA/f/BAP//wQEC/9wBBP/BARf/1gEZ/+EBHf/cASH/3AE1/8EBOf/cAUT/wQFJ/8EBS//cAUz/3AFW/9wCbf/cAm7/3AJv/9wCcP/cAnH/3AJ2/8ECd//WAnj/1gJ5/9YCev/WAnv/1gJ8/90Cff/dAn7/3QJ//90CgP/hAoH/4QKJ/9wCi//cAo3/3AKP/9wCkf/cApP/3AKV/9wCl//cApn/3AKb/9wCnf/cAp//3AKh/9wCo//cAr7/wQLA/8ECwv/BAsP/wQLF/9YCx//WAsn/1gLh/90C4//dAuX/3QLn/90C6f/dAuv/3QLv/+EDav/cA2z/wQNu/90DcP/WA3L/4QN1/90Ddv/WA3f/3QOQ/9wDkf/BA5L/1gOT/8EDlP/cA5X/4QOX/9wDmP/BA53/wQOe/+EDpv/hA63/wQOy/9wDs//BA7f/4QO4/9wDvf/cA7//4QPL/9wDzf/cA87/3APU/8ED1v/BA9j/1gPa/9wD3P/WA+D/4QPi/+ED5P/hA+j/wQPr/9wEB//cBAn/3AQL/9wEDf/cBA//3AQR/9wEE//cBBX/3AQb/9YEHf/WBB//1gQh/9YEI//WBCX/1gQn/9YEKf/cBCv/3AQt/9wEL//WBDH/3AQz/90ENf/dBDf/3QQ5/90EO//dBD3/3QQ//90EQf/hBEP/4QRF/+EESf/BBEv/wQRV/8EEYv/BBGT/wQRm/8EAdgAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADB/+wAwwAPAMX/6gDH//AAyP/wAMn/zgDK/+8Ay//nAPb/8AEC//ABGf/cAR3/8AEh//ABOf/wAUv/8AFM//ABVv/wAWz/2gFt/9oBb//aAXD/2gFx/9oCbf/wAm7/8AJv//ACcP/wAnH/8AJ8/+8Cff/vAn7/7wJ//+8CgP/cAoH/3AKJ//ACi//wAo3/8AKP//ACkf/wApP/8AKV//ACl//wApn/8AKb//ACnf/wAp//8AKh//ACo//wAuH/7wLj/+8C5f/vAuf/7wLp/+8C6//vAu//3ANq//ADbv/vA3L/3AN1/+8Dd//vA5D/8AOU//ADlf/cA5f/8AOe/9wDpv/cA6f/2gOo/9oDq//aA7L/8AO3/9wDuP/wA73/8AO//9wDy//wA83/8APO//AD2v/wA+D/3APi/9wD5P/cA+v/8AQH//AECf/wBAv/8AQN//AED//wBBH/8AQT//AEFf/wBCn/8AQr//AELf/wBDH/8AQz/+8ENf/vBDf/7wQ5/+8EO//vBD3/7wQ//+8EQf/cBEP/3ARF/9wARAAQAAwAEgAMAEf/5wBI/+cASf/nAEv/5wBV/+cAk//nAJj/5wC6/+cAwwAPAMf/5wDI/+cA9v/nAQL/5wEd/+cBIf/nATn/5wFL/+cBTP/nAVb/5wFuAAwBcgAMAXYADAF3AAwCbf/nAm7/5wJv/+cCcP/nAnH/5wKJ/+cCi//nAo3/5wKP/+cCkf/nApP/5wKV/+cCl//nApn/5wKb/+cCnf/nAp//5wKh/+cCo//nA2r/5wOQ/+cDlP/nA5f/5wOy/+cDuP/nA73/5wPL/+cDzf/nA87/5wPa/+cD6//nBAf/5wQJ/+cEC//nBA3/5wQP/+cEEf/nBBP/5wQV/+cEKf/nBCv/5wQt/+cEMf/nAAYAyf/qAOz/7gD1/9UA/f/tATP/7AFY/+wAAQD1/8AAAQDJACAAfgAGAAwACwAMAEf/6ABI/+gASf/oAEoADABL/+gAU//qAFX/6ABaAAsAXQALAJP/6ACY/+gAuv/oALwACwDD/5AAxQALAMf/6ADI/+gAyQAMAPb/6AEC/+gBF//qARkACwEd/+gBIf/oATn/6AFL/+gBTP/oAVb/6AFsAAwBbQAMAW8ADAFwAAwBcQAMAbr/vwG8/+4BwP/sAcj/7QHK/+wBzP/1Ac0ADgHPAA0B0gANAm3/6AJu/+gCb//oAnD/6AJx/+gCd//qAnj/6gJ5/+oCev/qAnv/6gKAAAsCgQALAon/6AKL/+gCjf/oAo//6AKR/+gCk//oApX/6AKX/+gCmf/oApv/6AKd/+gCn//oAqH/6AKj/+gCxf/qAsf/6gLJ/+oC7wALA2r/6ANw/+oDcgALA3b/6gOQ/+gDkv/qA5T/6AOVAAsDl//oA54ACwOmAAsDpwAMA6gADAOrAAwDsv/oA7cACwO4/+gDvf/oA78ACwPL/+gDzf/oA87/6APY/+oD2v/oA9z/6gPgAAsD4gALA+QACwPr/+gEB//oBAn/6AQL/+gEDf/oBA//6AQR/+gEE//oBBX/6AQb/+oEHf/qBB//6gQh/+oEI//qBCX/6gQn/+oEKf/oBCv/6AQt/+gEL//qBDH/6ARBAAsEQwALBEUACwABAPX/4gANAFz/7QBe/+0A7f/tAPX/wALy/+0C9P/tAvb/7QOW/+0Dwv/tA9D/7QPq/+0ET//tBFf/7QAMAFz/8gBe//IA7f/yAvL/8gL0//IC9v/yA5b/8gPC//ID0P/yA+r/8gRP//IEV//yAB8AWv/0AFz/8gBd//QAXv/zALz/9ADt//IBGf/0AoD/9AKB//QC7//0AvL/8wL0//MC9v/zA3L/9AOV//QDlv/yA57/9AOm//QDt//0A7//9APC//ID0P/yA+D/9APi//QD5P/0A+r/8gRB//QEQ//0BEX/9ARP//IEV//yAF0ABv/KAAv/ygA4/9IAOv/UADz/9AA9/9MAWv/mAFz/7wBd/+YAvP/mANH/0gDV/9IA2f/0AN3/7QDg/+EA5f/UAO3/7wD1/8kA/f/RAQj/5QEY/9QBGf/mAR//4wEy/9IBM//EATr/0gE8/+EBTf/UAU7/9QFP/+cBV/9kAVj/yQFs/8oBbf/KAW//ygFw/8oBcf/KAmX/0wKA/+YCgf/mAtr/0gLc/9IC3v/SAu7/0wLv/+YC8P/TA1f/0wNm/9MDZ//0A2n/0wNy/+YDgf/tA43/0gOO//QDlf/mA5b/7wOe/+YDpf/TA6b/5gOn/8oDqP/KA6v/ygO2/9QDt//mA77/0wO//+YDwf/0A8L/7wPP//QD0P/vA9//7QPg/+YD4f/tA+L/5gPj/+0D5P/mA+X/4QPp//QD6v/vBED/0wRB/+YEQv/TBEP/5gRE/9MERf/mBEz/0gRO//QET//vBFD/4QRS/+EEVv/0BFf/7wRp/9MAbAAG/8AAC//AADj/nQA6/8cAPP/wAD3/qwBR/9IAUv/SAFT/0gDA/9IA0f+dANP/9QDV/50A2f/wANz/9QDd/+oA4P/lAOX/wQDr/9IA7//SAPD/0gDy/9IA8//SAPT/0gD1/80A9//SAPn/0gD6/9IA/f/SAP//0gEE/9IBGP/HATL/nQEz/8wBNf/SATr/nQE8/+UBP//fAUT/0gFJ/9IBTf/OAU//6gFR//UBV/+eAVj/zgFs/8ABbf/AAW//wAFw/8ABcf/AAmX/qwJ2/9ICvv/SAsD/0gLC/9ICw//SAtr/nQLc/50C3v+dAu7/qwLw/6sDV/+rA2b/qwNn//ADaf+rA2z/0gOB/+oDjf+dA47/8AOR/9IDk//SA5j/0gOd/9IDpf+rA6f/wAOo/8ADq//AA63/0gOz/9IDtv/HA77/qwPB//ADz//wA9T/0gPW/9ID3//qA+H/6gPj/+oD5f/lA+j/0gPp//AD7P/1BED/qwRC/6sERP+rBEn/0gRL/9IETP+dBE7/8ARQ/+UEUv/lBFX/0gRW//AEYv/SBGT/0gRm/9IEZ//1BGn/qwBvAAb/sQAL/7EAOP+eADr/xQA8//IAPf+oAFH/zwBS/88AVP/PAFz/7wDA/88A0f+eANX/ngDZ//IA3f/sAOD/4QDl/8IA6//PAO3/7wDv/88A8P/PAPL/zwDz/88A9P/PAPX/xgD3/88A+f/PAPr/zwD9/88A///PAQT/zwEY/8UBMv+eATP/wAE1/88BOv+eATz/4QE//98BRP/PAUn/zwFN/80BT//oAVf/nwFY/8YBbP+xAW3/sQFv/7EBcP+xAXH/sQJl/6gCdv/PAr7/zwLA/88Cwv/PAsP/zwLa/54C3P+eAt7/ngLu/6gC8P+oA1f/qANm/6gDZ//yA2n/qANs/88Dgf/sA43/ngOO//IDkf/PA5P/zwOW/+8DmP/PA53/zwOl/6gDp/+xA6j/sQOr/7EDrf/PA7P/zwO2/8UDvv+oA8H/8gPC/+8Dz//yA9D/7wPU/88D1v/PA9//7APh/+wD4//sA+X/4QPo/88D6f/yA+r/7wRA/6gEQv+oBET/qARJ/88ES//PBEz/ngRO//IET//vBFD/4QRS/+EEVf/PBFb/8gRX/+8EYv/PBGT/zwRm/88Eaf+oAE0AOP++AFH/4QBS/+EAVP/hAFr/7wBd/+8AvP/vAMD/4QDR/74A1f++AOX/yQDr/+EA7//hAPD/4QDy/+EA8//hAPT/4QD1/98A9//hAPn/4QD6/+EA/f/hAP//4QEE/+EBCP/tARn/7wEf/+sBMv++ATP/3wE1/+EBOv++AT//6QFE/+EBSf/hAU7/9QFY/+ACdv/hAoD/7wKB/+8Cvv/hAsD/4QLC/+ECw//hAtr/vgLc/74C3v++Au//7wNs/+EDcv/vA43/vgOR/+EDk//hA5X/7wOY/+EDnf/hA57/7wOm/+8Drf/hA7P/4QO3/+8Dv//vA9T/4QPW/+ED4P/vA+L/7wPk/+8D6P/hBEH/7wRD/+8ERf/vBEn/4QRL/+EETP++BFX/4QRi/+EEZP/hBGb/4QBkADj/5gA6/+cAPP/yAD3/5wBR/9YAUv/WAFT/1gBc//EAwP/WANH/5gDV/+YA2f/yAN3/7gDg/+gA5f/mAOv/1gDt//EA7//WAPD/1gDy/9YA8//WAPT/1gD1/9AA9//WAPn/1gD6/9YA/f/WAP//1gEE/9YBGP/nATL/5gEz/84BNf/WATr/5gE8/+gBRP/WAUn/1gFN/+cBT//tAVf/5gFY/9ACZf/nAnb/1gK+/9YCwP/WAsL/1gLD/9YC2v/mAtz/5gLe/+YC7v/nAvD/5wNX/+cDZv/nA2f/8gNp/+cDbP/WA4H/7gON/+YDjv/yA5H/1gOT/9YDlv/xA5j/1gOd/9YDpf/nA63/1gOz/9YDtv/nA77/5wPB//IDwv/xA8//8gPQ//ED1P/WA9b/1gPf/+4D4f/uA+P/7gPl/+gD6P/WA+n/8gPq//EEQP/nBEL/5wRE/+cESf/WBEv/1gRM/+YETv/yBE//8QRQ/+gEUv/oBFX/1gRW//IEV//xBGL/1gRk/9YEZv/WBGn/5wCTACUAEAAn/+gAK//oADP/6AA1/+gAOP/gADr/4AA9/98Ag//oAJL/6ACX/+gAsQAQALL/6ACzABAA0f/gANL/6ADTABAA1f/gANgAFADcABAA4P/hAOX/4ADsABMA8QAQAPj/4AEDABABB//oAQwAEAEW/+gBGP/gARr/6AEc/+gBHv/oASD/6AEy/+ABOP/oATr/4AE8/+EBPf/gAUD/4QFF/+kBTf/fAU//3gFRABABVf/oAVf/3wFZ//ICKP/oAin/6AIr/+gCLP/oAksAEAJMABACTQAQAk4AEAJPABACUAAQAlEAEAJS/+gCXP/oAl3/6AJe/+gCX//oAmD/6AJl/98CggAQAoQAEAKGABACiP/oAor/6AKM/+gCjv/oApz/6AKe/+gCoP/oAqL/6ALE/+gCxv/oAsj/6ALa/+AC3P/gAt7/4ALu/98C8P/fAvn/6ANSABADVv/oA1f/3wNaABADY//oA2b/3wNp/98DggAQA4n/6AOM/+gDjf/gA6X/3wOuABADtv/gA7n/6AO8/+gDvv/fA8QAEAPGABAD1//oA9n/6APb/+gD5f/hA+b/4APsABAD7QAQA+4AEAPwABAD8gAQA/QAEAP2ABAD+AAQA/oAEAP8ABAD/gAQBAAAEAQCABAEBAAQBBr/6AQc/+gEHv/oBCD/6AQi/+gEJP/oBCb/6AQo/+gEKv/oBCz/6AQu/+gEMP/oBED/3wRC/98ERP/fBEz/4ARQ/+EEUf/gBFL/4QRT/+AEZwAQBGgAEARp/98Eqf/oADIAG//yADj/8QA6//QAPP/0AD3/8ADR//EA0//1ANX/8QDZ//QA3P/1AN3/8wDl//EBGP/0ATL/8QE6//EBTf/yAU//8gFR//UBV//yAmX/8ALa//EC3P/xAt7/8QLu//AC8P/wA1f/8ANm//ADZ//0A2n/8AOB//MDjf/xA47/9AOl//ADtv/0A77/8APB//QDz//0A9//8wPh//MD4//zA+n/9APs//UEQP/wBEL/8ARE//AETP/xBE7/9ARW//QEZ//1BGn/8ABmACUADwA4/+YAOv/mADwADgA9/+YAsQAPALMADwDR/+YA0wAOANX/5gDYABMA2QAOANwADgDdAAsA4P/lAOX/5gDm//QA7AASAPEADwD1/+cA+P/oAP3/5wEDAA8BDAAPARj/5gEy/+YBM//nATr/5gE8/+UBPf/oAU3/5gFP/+YBUQAOAVf/5gFY/+cCSwAPAkwADwJNAA8CTgAPAk8ADwJQAA8CUQAPAmX/5gKCAA8ChAAPAoYADwLa/+YC3P/mAt7/5gLu/+YC8P/mA1IADwNX/+YDWgAPA2b/5gNnAA4Daf/mA4EACwOCAA8Djf/mA44ADgOl/+YDrgAPA7b/5gO+/+YDwQAOA8QADwPGAA8DzwAOA98ACwPhAAsD4wALA+X/5QPm/+gD6QAOA+wADgPtAA8D7gAPA/AADwPyAA8D9AAPA/YADwP4AA8D+gAPA/wADwP+AA8EAAAPBAIADwQEAA8EQP/mBEL/5gRE/+YETP/mBE4ADgRQ/+UEUf/oBFL/5QRT/+gEVgAOBGcADgRoAA8Eaf/mADcABv+/AAv/vwA4/58AOv/JAD3/rQDR/58A1f+fAN3/7ADg/+YA5f/EAPX/zQD9/9UBGP/JATL/nwEz/8wBOv+fATz/5gE//98BTf/RAU//7AFX/6EBWP/PAWz/vwFt/78Bb/+/AXD/vwFx/78CZf+tAtr/nwLc/58C3v+fAu7/rQLw/60DV/+tA2b/rQNp/60Dgf/sA43/nwOl/60Dp/+/A6j/vwOr/78Dtv/JA77/rQPf/+wD4f/sA+P/7APl/+YEQP+tBEL/rQRE/60ETP+fBFD/5gRS/+YEaf+tADAAOP/jADz/5QA9/+QA0f/jANP/5QDV/+MA2P/iANn/5QDc/+UA3f/pAPH/6gED/+oBMv/jATr/4wFR/+UBV//kAmX/5ALa/+MC3P/jAt7/4wLu/+QC8P/kA1f/5ANm/+QDZ//lA2n/5AOB/+kDjf/jA47/5QOl/+QDvv/kA8H/5QPP/+UD3//pA+H/6QPj/+kD6f/lA+z/5QPt/+oEQP/kBEL/5ARE/+QETP/jBE7/5QRW/+UEZ//lBGj/6gRp/+QAIwA4/+IAPP/kANH/4gDT/+QA1f/iANj/4QDZ/+QA3P/kAN3/6QDs/+QA8f/rAQP/6wEy/+IBOv/iAVH/5ALa/+IC3P/iAt7/4gNn/+QDgf/pA43/4gOO/+QDwf/kA8//5APf/+kD4f/pA+P/6QPp/+QD7P/kA+3/6wRM/+IETv/kBFb/5ARn/+QEaP/rABcAOP/rAD3/8wDR/+sA1f/rATL/6wE6/+sCZf/zAtr/6wLc/+sC3v/rAu7/8wLw//MDV//zA2b/8wNp//MDjf/rA6X/8wO+//MEQP/zBEL/8wRE//METP/rBGn/8wA2AFH/7wBS/+8AVP/vAFz/8ADA/+8A6//vAOz/7gDt//AA7//vAPD/7wDy/+8A8//vAPT/7wD1/+4A9//vAPn/7wD6/+8A/f/vAP//7wEE/+8BCP/0AR//8QEz/+8BNf/vAUT/7wFJ/+8BWP/vAnb/7wK+/+8CwP/vAsL/7wLD/+8DbP/vA5H/7wOT/+8Dlv/wA5j/7wOd/+8Drf/vA7P/7wPC//AD0P/wA9T/7wPW/+8D6P/vA+r/8ARJ/+8ES//vBE//8ARV/+8EV//wBGL/7wRk/+8EZv/vACIABv/yAAv/8gBa//UAXf/1ALz/9QD1//QA/f/0AQj/9QEZ//UBM//1AVj/9QFs//IBbf/yAW//8gFw//IBcf/yAoD/9QKB//UC7//1A3L/9QOV//UDnv/1A6b/9QOn//IDqP/yA6v/8gO3//UDv//1A+D/9QPi//UD5P/1BEH/9QRD//UERf/1ADIAUf/uAFL/7gBU/+4AwP/uAOv/7gDsABQA7//uAPD/7gDy/+4A8//uAPT/7gD1/+0A9//uAPj/7QD5/+4A+v/uAPv/0AD9/+4A///uAQT/7gEz/+0BNf/uAT3/7QFE/+4BSf/uAVj/7QJ2/+4Cvv/uAsD/7gLC/+4Cw//uA2z/7gOR/+4Dk//uA5j/7gOd/+4Drf/uA7P/7gPU/+4D1v/uA+b/7QPo/+4ESf/uBEv/7gRR/+0EU//tBFX/7gRi/+4EZP/uBGb/7gAKAAb/9QAL//UBbP/1AW3/9QFv//UBcP/1AXH/9QOn//UDqP/1A6v/9QBZAEf/8ABI//AASf/wAEv/8ABT/8cAVf/wAJP/8ACY//AAuv/wAMf/8ADI//AA9v/wAQL/8AEX/8cBG//rAR3/8AEh//ABOf/wAUv/8AFM//ABVv/wAbz/6wHA/+kByP/rAcr/6wJt//ACbv/wAm//8AJw//ACcf/wAnf/xwJ4/8cCef/HAnr/xwJ7/8cCif/wAov/8AKN//ACj//wApH/8AKT//AClf/wApf/8AKZ//ACm//wAp3/8AKf//ACof/wAqP/8ALF/8cCx//HAsn/xwNq//ADcP/HA3b/xwOQ//ADkv/HA5T/8AOX//ADsv/wA7j/8AO9//ADy//wA83/8APO//AD2P/HA9r/8APc/8cD6//wBAf/8AQJ//AEC//wBA3/8AQP//AEEf/wBBP/8AQV//AEG//HBB3/xwQf/8cEIf/HBCP/xwQl/8cEJ//HBCn/8AQr//AELf/wBC//xwQx//AAoQAGAA0ACwANAEX/8ABH/8AASP/AAEn/wABKAA0AS//AAFP/4gBV/8AAWgALAF0ACwCT/8AAmP/AALr/wAC8AAsAxv/WAMf/wADI/8AAy//VAOz/yADx/9cA9v/AAQL/wAED/9cBF//iARkACwEb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AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCwALMAKAC8ALwALADAAMAALQDGAMYALgDTANQALwDWANYAMQDZANkAMgDbAN0AMwDfAN8ANgDhAOEANwDjAOMAOADlAOUAOQDrAOsAOgDtAO0AOwD2APYAPAD7APsAPQD9AP4APgEDAQQAQAEJAQkAQgEMAQwAQwEXARkARAErAS0ARwEwATAASgEyATIASwFJAUkATAFsAXIATQF2AXcAVAIoAigAVgIqAisAVwJGAkcAWQJJAkkAWwJLAnEAXAJ2AnsAgwKAApAAiQKSApsAmgKkAqYApAKoAqgApwKqAqoAqAKsAqwAqQKuAq4AqgKxArEAqwKzArMArAK1ArUArQK3ArcArgK5ArkArwK7ArsAsAK9AskAsQLLAssAvgLNAs0AvwLPAs8AwALaAtoAwQLcAtwAwgLeAt4AwwLgAuAAxALiAuIAxQLkAuQAxgLmAuYAxwLoAugAyALqAuoAyQLsAuwAygLuAvYAywNSA1cA1ANaA2kA2gNsA2wA6gNwA3AA6wNyA3IA7AN2A3YA7QN5A3oA7gN8A4UA8AOHA4kA+gOLA5AA/QOSA5gBAwOeA58BCgOhA6EBDAOjA6MBDQOlA6gBDgOrA7ABEgOyA7IBGAO2A7cBGQO8A8cBGwPKA8sBJwPNA9ABKQPXA9gBLQPcA9wBLwPeA+QBMAPpA+oBNwPuBBYBOQQYBBgBYgQaBCcBYwQvBC8BcQQyBDIBcgQ0BDQBcwRABEUBdARIBEgBegRKBEoBewRMBEwBfAROBE8BfQRUBFcBfwRaBFoBgwRcBF0BhARfBF8BhgRjBGMBhwRlBGUBiARpBGkBiQSpBKkBigACAU4AEAAQAAEAEgASAAEAJQAlAAIAJgAmAAMAJwAnAAQAKAAoAAUAKQApAAYALAAtAAcALgAuAAgALwAvAAkAMAAwAAoAMQAyAAcAMwAzAAUANAA0AAsAOAA4AAwAOQA5AAgAOgA6AA0AOwA7AA4APAA8AA8APQA9ABAAPgA+ABEARQBFABIARgBGABMARwBHABQASQBJABUATABMABYAUQBSABYAUwBTABcAVABUABMAVgBWABgAWgBaABkAXABcABoAXQBdABkAXgBeABsAigCKABMAsACwABwAsQCxAAIAsgCyAAUAswCzAAIAvAC8ABkAwADAABYAxgDGABMA0wDUAB0A1gDWAAcA2QDZAA8A2wDcAAcA3QDdAB4A3wDfAAcA4QDhAAcA4wDjAB0A5QDlAB0A6wDrAB8A7QDtABoA9gD2ABMA+wD7ACAA/QD9ACAA/gD+ABMBAwEEACABCQEJACABDAEMAAIBFwEXABcBGAEYAA0BGQEZABkBKwErABMBLAEsABwBLQEtAB8BMAEwAAkBMgEyAAkBSQFJAB8BbgFuAAEBcgFyAAEBdgF3AAECKAIoAAQCKgIrAAUCRgJHAAUCSQJJAAwCSwJRAAICUgJSAAQCUwJWAAYCVwJbAAcCXAJgAAUCYQJkAAgCZQJlABACZgJsABICbQJtABQCbgJxABUCdgJ2ABYCdwJ7ABcCgAKBABkCggKCAAICgwKDABIChAKEAAIChQKFABIChgKGAAIChwKHABICiAKIAAQCiQKJABQCigKKAAQCiwKLABQCjAKMAAQCjQKNABQCjgKOAAQCjwKPABQCkAKQAAUCkgKSAAYCkwKTABUClAKUAAYClQKVABUClgKWAAYClwKXABUCmAKYAAYCmQKZABUCmgKaAAYCmwKbABUCpAKkAAcCpQKlABYCpgKmAAcCqAKoAAcCqgKqAAcCrAKsAAcCrgKuAAcCsQKxAAgCswKzAAkCtQK1AAoCtwK3AAoCuQK5AAoCuwK7AAoCvQK9AAcCvgK+ABYCvwK/AAcCwALAABYCwQLBAAcCwgLDABYCxALEAAUCxQLFABcCxgLGAAUCxwLHABcCyALIAAUCyQLJABcCywLLABgCzQLNABgCzwLPABgC2gLaAAwC3ALcAAwC3gLeAAwC4ALgAAgC4gLiAAgC5ALkAAgC5gLmAAgC6ALoAAgC6gLqAAgC7ALsAA4C7gLuABAC7wLvABkC8ALwABAC8QLxABEC8gLyABsC8wLzABEC9AL0ABsC9QL1ABEC9gL2ABsDUgNSAAIDUwNTAAYDVANVAAcDVgNWAAUDVwNXABADWgNaAAIDWwNbAAMDXANcAAYDXQNdABEDXgNfAAcDYANgAAkDYQNiAAcDYwNjAAUDZANkAAsDZQNlAAwDZgNmABADZwNnAA8DaANoAAcDaQNpABADbANsABYDcANwABcDcgNyABkDdgN2ABcDeQN5AAYDegN6ABwDfAN9AAcDfgN+AAgDfwOAAAkDgQOBAB4DggOCAAIDgwODAAMDhAOEABwDhQOFAAYDhwOIAAcDiQOJAAUDiwOLAAsDjAOMAAQDjQONAAwDjgOOAA8DjwOPABIDkAOQABUDkgOSABcDkwOTABMDlAOUABQDlQOVABkDlgOWABoDlwOXABUDmAOYAB8DngOeABkDnwOfAA4DoQOhAA4DowOjAA4DpQOlABADpgOmABkDrAOsAAcDrQOtABYDrgOuAAIDrwOvABIDsAOwAAYDsgOyABUDtgO2AA0DtwO3ABkDvAO8AAQDvQO9ABQDvgO+ABADvwO/ABkDwAPAAAcDwQPBAA8DwgPCABoDwwPDAAcDxAPEAAIDxQPFABIDxgPGAAIDxwPHABIDygPKAAYDywPLABUDzQPOABUDzwPPAA8D0APQABoD1wPXAAUD2APYABcD3APcABcD3gPeABMD3wPfAB4D4APgABkD4QPhAB4D4gPiABkD4wPjAB4D5APkABkD6QPpAA8D6gPqABoD7gPuAAID7wPvABID8APwAAID8QPxABID8gPyAAID8wPzABID9AP0AAID9QP1ABID9gP2AAID9wP3ABID+AP4AAID+QP5ABID+gP6AAID+wP7ABID/AP8AAID/QP9ABID/gP+AAID/wP/ABIEAAQAAAIEAQQBABIEAgQCAAIEAwQDABIEBAQEAAIEBQQFABIEBgQGAAYEBwQHABUECAQIAAYECQQJABUECgQKAAYECwQLABUEDAQMAAYEDQQNABUEDgQOAAYEDwQPABUEEAQQAAYEEQQRABUEEgQSAAYEEwQTABUEFAQUAAYEFQQVABUEFgQWAAcEGAQYAAcEGgQaAAUEGwQbABcEHAQcAAUEHQQdABcEHgQeAAUEHwQfABcEIAQgAAUEIQQhABcEIgQiAAUEIwQjABcEJAQkAAUEJQQlABcEJgQmAAUEJwQnABcELwQvABcEMgQyAAgENAQ0AAgEQARAABAEQQRBABkEQgRCABAEQwRDABkERAREABAERQRFABkESARIAAkESgRKAAcETARMAAwETgROAA8ETwRPABoEVARUABwEVQRVAB8EVgRWAA8EVwRXABoEWgRaABYEXARcAB0EXQRdABwEXwRfAAkEYwRjAAcEZQRlAAcEaQRpABAEqQSpAAUAAgFtAAYABgABAAsACwABABAAEAAWABEAEQAZABIAEgAWACUAJQACACcAJwAIACsAKwAIAC4ALgAaADMAMwAIADUANQAIADcANwAbADgAOAAJADkAOQAKADoAOgALADsAOwAMADwAPAAXAD0APQANAD4APgAYAEUARQADAEcASQAEAEsASwAEAFEAUgAFAFMAUwAGAFQAVAAFAFUAVQAEAFcAVwAHAFkAWQAOAFoAWgAPAFwAXAAcAF0AXQAPAF4AXgAQAIMAgwAIAJIAkgAIAJMAkwAEAJcAlwAIAJgAmAAEAJoAmgAOALEAsQACALIAsgAIALMAswACALoAugAEALwAvAAPAMAAwAAFAMcAyAAEAMoAygAOANEA0QAJANIA0gAIANMA0wARANUA1QAJANkA2QAXANwA3AARAN0A3QAVAOAA4AASAOsA6wAFAO0A7QAcAO8A8AAFAPEA8QATAPIA9AAFAPYA9gAEAPcA9wAFAPgA+AAUAPkA+gAFAP0A/QAFAP8A/wAFAQIBAgAEAQMBAwATAQQBBAAFAQcBBwAIAQwBDAACARYBFgAIARcBFwAGARgBGAALARkBGQAPARoBGgAIARwBHAAIAR0BHQAEAR4BHgAIASABIAAIASEBIQAEATIBMgAJATUBNQAFATgBOAAIATkBOQAEAToBOgAJAUQBRAAFAUkBSQAFAUsBTAAEAVEBUQARAVUBVQAIAVYBVgAEAWkBagAZAWwBbQABAW4BbgAWAW8BcQABAXIBcgAWAXYBdwAWAigCKQAIAisCLAAIAkUCRQAZAksCUQACAlICUgAIAlwCYAAIAmECZAAKAmUCZQANAmYCbAADAm0CcQAEAnYCdgAFAncCewAGAnwCfwAOAoACgQAPAoICggACAoMCgwADAoQChAACAoUChQADAoYChgACAocChwADAogCiAAIAokCiQAEAooCigAIAosCiwAEAowCjAAIAo0CjQAEAo4CjgAIAo8CjwAEApECkQAEApMCkwAEApUClQAEApcClwAEApkCmQAEApsCmwAEApwCnAAIAp0CnQAEAp4CngAIAp8CnwAEAqACoAAIAqECoQAEAqICogAIAqMCowAEArECsQAaAr4CvgAFAsACwAAFAsICwwAFAsQCxAAIAsUCxQAGAsYCxgAIAscCxwAGAsgCyAAIAskCyQAGAtAC0AAbAtEC0QAH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ALgAuWMyc2MEWGMyc2MEXmMyc2MEZGMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGRsaWcEeGRsaWcEfmRsaWcEhGRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRub20EkGRub20ElmRub20EnGRub20EomRub20EomRub20EomRub20EomRub20EomRub20EomRub20EomZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGxpZ2EEsmxpZ2EEumxudW0EwGxudW0ExmxudW0EzGxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxvY2wE2GxvY2wE3mxvY2wE5G51bXIE6m51bXIE8G51bXIE9m51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G9udW0FAm9udW0FCG9udW0FDm9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFHBudW0FGnBudW0FIHBudW0FJnBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHNtY3AFMnNtY3AFOHNtY3AFPnNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNzMDEFSnNzMDEFUHNzMDEFVnNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDIFYnNzMDIFaHNzMDIFbnNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDMFenNzMDMFgHNzMDMFhnNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDQFknNzMDQFmHNzMDQFnnNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDUFqnNzMDUFsHNzMDUFtnNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDYFwnNzMDYFyHNzMDYFznNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDcF2nNzMDcF4HNzMDcF5nNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HRudW0F8nRudW0F+HRudW0F/nRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBAAAAAEAAQAAAAEAAwAAAAEAAgAAAAEAAAAAAAIACAAJAAAAAQAOAAAAAQAQAAAAAQAPAAAAAQANAAAAAQBDAAAAAQBFAAAAAQBEAAAAAQBCAAAAAwA/AEAAQQAAAAIAEQASAAAAAQASAAAAAQA8AAAAAQA+AAAAAQA9AAAAAQA7AAAAAQAKAAAAAQAMAAAAAQALAAAAAQBHAAAAAQBJAAAAAQBIAAAAAQBGAAAAAQAwAAAAAQAyAAAAAQAxAAAAAQAvAAAAAQA4AAAAAQA6AAAAAQA5AAAAAQA3AAAAAQAFAAAAAQAHAAAAAQAGAAAAAQAEAAAAAQAUAAAAAQAWAAAAAQAVAAAAAQATAAAAAQAYAAAAAQAaAAAAAQAZAAAAAQAXAAAAAQAcAAAAAQAeAAAAAQAdAAAAAQAbAAAAAQAgAAAAAQAiAAAAAQAhAAAAAQAfAAAAAQAkAAAAAQAmAAAAAQAlAAAAAQAjAAAAAQAoAAAAAQAqAAAAAQApAAAAAQAnAAAAAQAsAAAAAQAuAAAAAQAtAAAAAQArAAAAAQA0AAAAAQA2AAAAAQA1AAAAAQAzAEsAmACYAJgAmAQmBCYEJgQmBxQHwA5QDlAOZg6IDogOiA6IDr4O5A8SDxIPEg8SDyYPJg8mDyYPOg86DzoPOg9OD04PTg9OD2APYA9gD2APeg96D3oPeg+8D7wPvA+8D9oP2g/aD9oP+A/4D/gP+BAqECoQKhAqEFwQXBBcEFwQjhCiENoQzBDMEMwQzBDaENoQ2hDaEQYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCQwI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTcAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRQNEA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUB/wTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNcE2ATaAhoE2wIOBNYCEwINBNkCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkYCRwJJAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAoIChAKGAogCigKMAo4CkAKSApQClgKYApoCnAKeAqACogKkAqYCqAKqAqwCrgKxArMCtQK3ArkCuwK9Ar8CwQLEAsYCyALKAswCzgLQAtIC1ALYAtoC3ALeAuAC4gLkAuYC6ALqAuwC7gLwAvEC8wL1A1IDUwNUA1UDVgNXA1gDWgNbA1wDXQNeA18DYANhA2MDZANlA2YDZwNoA2kDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgO6A7wDvgPTA9kD3wRIBEoETgRWBFgEXQRpAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAvwDLwI7AfoEyQTKAfsB/AH9Af4B/wIABM0EzgTQBNME3AICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYA04DGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRQNEA0YDRwNIA0kDSgNLA0wDTQNPA1ADUQTIBMsEzATPBNEE0gIBBNQEwATBBMIEwwTEBMUExgTHBNUE1wTYAhgE2gIaBNsC+wIOBNYCEwINBNkCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSgJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CsgK0ArYCuAK6ArwCvgLAAsICxQLHAskCywLNAs8C0QLTAtUC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8gL0AvYDjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngO7A70DvwPNA9QD2gPgBEYESQRLBE8EVwRZBFoEXgRqAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAABKAAEAAQBNAAMAAAABABIAAQB4AAEAAABKAAEAAQBOAAMAAAABABIAAQBgAAEAAABKAAEAAQKtAAMAAAABABIAAQBIAAEAAABKAAEAAQOaAAMAAAABABIAAQAwAAEAAABKAAEAAQOcAAMAAAABABIAAQAYAAEAAABKAAEAAQQZAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCSwACAKcCTAACAKgCTgACAKkD8AACAKoEegACAKsD7gACAKwAAQAEBIcAAgCsAAEABAKIAAIAqAACAAYADASJAAIArASLAAIBogAGAA4AFAAaACAAJgAsAlMAAgCnAlQAAgCoBAoAAgCpBAgAAgCqBHwAAgCrBAYAAgCsAAIABgAMBHYAAgCoAqIAAgGiAAEABASNAAIArAAGAA4AFAAaACAAJgAsAlcAAgCnAlgAAgCoAqYAAgCpBBYAAgCqBH4AAgCrBBgAAgCsAAMACAAOABQEjwACAKgEkQACAKwCswACAaIAAwAIAA4AFAK1AAIAqASTAAIArAK3AAIBogACAAYADAOsAAIAqASVAAIArAAFAAwAEgAYAB4AJAR4AAIApwK9AAIAqAJbAAIAqQSXAAIArAK/AAIBogAGAA4AFAAaACAAJgAsAlwAAgCnAl0AAgCoAl8AAgCpBBwAAgCqBIAAAgCrBBoAAgCsAAEABASZAAIAqAAEAAoAEAAWABwCygACAKgEggACAKsEmwACAKwCzAACAaIAAwAIAA4AFALQAAIAqASdAAIArALWAAIBogACAAYADASfAAIArALaAAIBogAGAA4AFAAaACAAJgAsAmEAAgCnAmIAAgCoAuAAAgCpBDQAAgCqBIQAAgCrBDIAAgCsAAIABgAMBKEAAgCpBKMAAgCsAAMACAAOABQDnwACAKcDoQACAKgEpQACAKwABQAMABIAGAAeACQDpQACAKcCZQACAKgERAACAKkEQgACAKoEQAACAKwAAgAGAAwC8QACAKgEpwACAKwABgAOABQAGgAgACYALAJmAAIApwJnAAIAqAJpAAIAqQPxAAIAqgR7AAIAqwPvAAIArAABAAQEiAACAKwAAQAEAokAAgCoAAIABgAMBIoAAgCsBIwAAgGiAAYADgAUABoAIAAmACwCbgACAKcCbwACAKgECwACAKkECQACAKoEfQACAKsEBwACAKwAAQAEBHcAAgCoAAEABASOAAIArAABAAQEGQACAKwAAwAIAA4AFASQAAIAqASSAAIArAK0AAIBogADAAgADgAUArYAAgCoBJQAAgCsArgAAgGiAAIABgAMA60AAgCoBJYAAgCsAAUADAASABgAHgAkBHkAAgCnAr4AAgCoAnYAAgCpBJgAAgCsAsAAAgGiAAYADgAUABoAIAAmACwCdwACAKcCeAACAKgCegACAKkEHQACAKoEgQACAKsEGwACAKwAAQAEBJoAAgCoAAQACgAQABYAHALLAAIAqASDAAIAqwScAAIArALNAAIBogADAAgADgAUAtEAAgCoBJ4AAgCsAtcAAgGiAAIABgAMBKAAAgCsAtsAAgGiAAYADgAUABoAIAAmACwCfAACAKcCfQACAKgC4QACAKkENQACAKoEhQACAKsEMwACAKwAAgAGAAwEogACAKkEpAACAKwAAwAIAA4AFAOgAAIApwOiAAIAqASmAAIArAAFAAwAEgAYAB4AJAOmAAIApwKAAAIAqARFAAIAqQRDAAIAqgRBAAIArAACAAYADALyAAIAqASoAAIArAABAAQC9wACAKgAAQAEAvkAAgCoAAEABAL4AAIAqAABAAQC+gACAKgABQAMABIAGAAeACQCcgACAKcCcwACAKgCpwACAKkEFwACAKoEfwACAKsABQAMABIAGAAeACQEKgACAKcEKAACAKgELgACAKkELAACAKoEMAACAKwABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQEOAACAKcENgACAKgEPAACAKkEOgACAKoEPgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwAAQAEBIYAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLUAtUAAQAAAAEACAACAA4ABATdBN4E3wTgAAEABAKGAocCmAKZAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiEBrgIjAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAa4AAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIgRwBHEEcgRzBHQEdQABAAAAAQAIAAIAFgAIBHUCIgRwBHEEcgRzAa0EdAABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAABKAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwThAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKtA5oDnAQZ",
+  "Roboto-MediumItalic.ttf": "AAEAAAARAQAABAAQR1BPUyEcbY8AAhQcAABZakdTVULEnLdcAAJtiAAAGXxPUy8yoQuw+wAAAZgAAABgY21hcNhuDxIAABpsAAAGXGN2dCAElytKAAAjUAAAAFZmcGdte/lhqwAAIMgAAAG8Z2FzcAAIABMAAhQQAAAADGdseWZgubUGAAAtcAAB42poZG14LxpP7wAAFYAAAATsaGVhZPi2qwsAAAEcAAAANmhoZWEM2xKRAAABVAAAACRobXR4rRqYNAAAAfgAABOIbG9jYSKZqcwAACOoAAAJxm1heHAHEgLZAAABeAAAACBuYW1lRuRz4wACENwAAAMUcG9zdP9hAGQAAhPwAAAAIHByZXAbsfg2AAAihAAAAMwAAQAAAAIAALDh6v1fDzz1ABsIAAAAAADE8BEuAAAAANDbTpf6Qf3VCXgIcwACAAkAAgAAAAAAAAABAAAHbP4MAAAJN/pB/mwJeAgAAbMAAAAAAAAAAAAAAAAE4gABAAAE4gCPABYAVgAFAAEAAAAAAA4AAAIAAfIABgABAAMEGQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAK/1AAIX8AAAAhAAAAAEdPT0cAAQAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwACAAIAACA5YAZAAKAAAACgAAAfkAAAH5AAACHwA3Ao4AoQTHADsEcwBCBb0AtQUAAC0BWgCQAr8AaALG/5QDeABnBF0APQG//4kClgA2AjUAMAMc/38EcwBgBHMA7wRzAAsEcwAmBHMACQRzAFoEcwBjBHMAhgRzADsEcwCOAhkAKwHi/5oD/AAyBGIAYgQUAC8D0ACVBvsAMgU0/6QE7wAnBRsAZQUcACcEbQAnBE0AJwVSAGsFjQAnAjsANQRZAAME7gAnBD0AJwbVACcFjAAnBWYAawUAACcFZgBkBOIAJwS5ACQEwACcBRkAWwUPAJsG3gC3BPP/wwTFAKEEtv/lAir/7wNIAKwCKv96A1sARAOK/3kCigDKBD0AIgRoABAEGgA4BGsAOwQ0ADsCygBfBHD/9wRZAA0CBQAfAfz/DAQXABECBQAfBssAEARbAA0EdQA5BGj/xwRyADsCxAAQBAsAHAKfADsEWgBKA+EAZAXOAHcD8f+5A9H/tQPx/+cCpAAwAf0AIAKk/5kFMgBbAfkAAAIY/+YEZQBMBJv/9gV8AAgExQBQAff/7ATc/9wDdADRBh4AXgOAAL4DzgBJBFUAgAKWADYGHgBeA8cA7wL9AOQEMwAbAukAVgLpAGcCkQDIBKH/3QPZAH0COwCeAgr/0wLpAOEDlQC+A84AAgWtALkGBgCxBjAAlgPQ/9IFNP+kBTT/pAU0/6QFNP+kBTT/pAU0/6QHVf+HBRsAZQRtACcEbQAnBG0AJwRtACcCOwA1AjsANQI7ADUCOwA1BTr//wWMACcFZgBrBWYAawVmAGsFZgBrBWYAawQtACMFZAAVBRkAWwUZAFsFGQBbBRkAWwTFAKEErwAnBMsAGwQ9ACIEPQAiBD0AIgQ9ACIEPQAiBD0AIgaXAA8EGgA4BDQAOwQ0ADsENAA7BDQAOwIUACICFAAiAhQAIgIUACIEjQBGBFsADQR1ADkEdQA5BHUAOQR1ADkEdQA5BHgAPQRvACoEWgBKBFoASgRaAEoEWgBKA9H/tQR+/80D0f+1BTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBRsAZQQaADgFGwBlBBoAOAUbAGUEGgA4BRsAZQQaADgFHAAnBQEAOwU6//8EiQA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADwEbQAnBDQAOwVSAGsEcP/3BVIAawRw//cFUgBrBHD/9wVSAGsEcP/3BY0AJwRZAA0FjgAuBHcAKwI7ADUCFAAUAjsANQIUAB8COwA1AhQAIgI7/44CBf92AjsANQIUACIGlAA1BAEAHwRZAAMCIP8PBO4AJwQXABEEfwAhBD0AJwIFAB8EPQAnAgX/ogQ9ACcCmwAfBD0AJwLhAB8ETAAhAkcAHwWMACcEWwANBYwAJwRbAA0FjAAnBFsADQRbAA0FcgAjBG8AEQVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQeDAFAHDQBCBOIAJwLEABAE4gAnAsT/nATiACcCxAAQBLkAJAQLABwEuQAkBAsAHAS5ACQECwAcBLkAJAQLABwEwACcAp8AOwTAAJwCxwA7BMAAnAKf/+IFGQBbBFoASgUZAFsEWgBKBRkAWwRaAEoFGQBbBFoASgUZAFsEWgBKBRkAWwRaAEoG3gC3Bc4AdwTFAKED0f+1BMUAoQS2/+UD8f/nBLb/5QPx/+cEtv/lA/H/5wIGAB4FaABOAsT/SgVpAFsEhQA2BYMAWwTWAEoCIP8PBVIAawRw//cFjAAnBFsADQU0/6QEPQAiB1X/hwaXAA8FZAAVBG8AKgU0/6QEPQAiBG0AJwQ0ADsCO//JAhT/fgVmAGsEdQA5BOIAJwLEAAcFGQBbBFoASgS5ACQECwAcBMAAnAKfADsCIP8PBCUANgG5AIoD0gECA54BDQPIAO8DawD+AgUBAgKnAPoCRf+oA8QA3gMRAKwCY//uAAr9VAAK/dcACvz2AAr91gAK/L8ACvygAlUBLgQlAOgFNP+kAjsAngTR/74F8f/GAp//ygV6ABgFKf9YBVAAHQKgAAsFNP+kBO8AJwRdAC4Fnf+qBG0AJwS2/+UFjQAnBVoAXgI7ADUE7gAnBRr/sgbVACcFjAAnBHcAAAVmAGsFjwAuBQAAJwR3/9wEwACcBMUAoQXLAFIE8//DBYkAdQU8AAkCOwA1BMUAoQRrAD4ESAAoBG8AEQKgAG4ESABXBGsAPgSr/+UD+QB3BG8AOARIACgEBQBmBG8AEQSHAGwCoABuBH8AIQRS/6gEof/dA+EAZAP+AD4EdQA5BNcAXQRv/8sEIQA7BHcAOAQXAG4ESABXBa0AMgPx/7kFpwA/BmsAVAKgAEwESABXBHUAOQRIAFcGawBUBJkAUARjAG0Ex/8kBkoAVwRtACcEbQAnBdoAkQRdAC4FOgBnBLkAJAI7ADUCOwA1BFkAAwhQ/8oIVwAuBjQAoATuACcFhwAnBO0AmwWJACUFNP+kBOsAIwTvACcEXQAuBeL/hARtACcHcf+lBLsAHgWHACcFhwAnBQoALgWI/8oG1QAnBY0AJwVmAGsFjwAuBQAAJwUbAGUEwACcBO0AmwY4AFYE8//DBdUAJQVoAMUHawArB8YAKwX1AIkGzQAuBOoAIwUxAE8HJgAyBNv/sAQ9ACIEZQBDBHYAIgNKABgE2v+FBDQAOwZO/60EAQAWBH8AGQR/ABkEVgAiBIH/vwXfACIEfgAZBHUAOQR/ABkEaP/HBBoAOAPhAFMD0f+1BbAAPQPx/7kEuAAZBE4AcAZmABkGwQASBPoATwZIACIEUAAiBCUAIwZcACQEWP+2BDQAOwQ0ADsEWQANA0oAGAQlADsECwAcAgUAHwIUACIB/P8MBqf/vQa5ABkEcAANBFYAIgR/ABkD0f+1BH8AGQcbAGAGKQBEBOoAIwRPACEG+wArBd0AGQTv/64ESP+cBxQAPgYQADAGwgAUBcMAFgj1ADUHxgAiBAr/qgPc/7UFiQB1BacAPwVaAGIEbwA2BP0AqAP5AHcE/QCoA/kAdwk3AGsIRgA5BVoAZgRvADgHFwBiBh4ASwcbAGAGKQBEBP0AVgQzAEUE4wA4AAr85gAK/Q4ACv4rAAr+PAAK+kEACvpvBYcAJwR/ABkE6gAjBE8AIQT2ACcEbf/HBFIAIgOPABEEXf/8A0r/ywSdAC4ECgARB3H/pQZO/60EuwAeBAEAFgUKAC4EVgAiBQ4AIwSRACEFHgA3BC4AGQZsAKQFgwBsBY0AJwR+ABkHngAnBYkAEQgRAC4GygARBgUAZQTjAEsFGwBlBBoAOATAAJwD4QBTBMUAoQP5AHcExQChA/kAVATz/8MD8f+5BwQAnQVQAFYFaADFBE4AcAVUALkEWwCFBWcA5wRZAA0F/wBiBKj/9AX/AGIEqP/0AjsANQdx/6UGTv+tBQQAIwRgACEFiP/KBIH/vwWNAC4EbwARBY0AJwR+ABkFaADFBE4AcAbVACcF3wAiAjsANQU0/6QEPQAiBTT/pAQ9ACIHVf+HBpcADwRtACcENAA7BWgASAQlADYFaABIBCUANgdx/6UGTv+tBLsAHgQBABYEjAAvBIz/8AWHACcEfwAZBYcAJwR/ABkFZgBrBHUAOQVaAGIEbwA2BVoAYgRvADYFMQBPBCUAIwTtAJsD0f+1BO0AmwPR/7UE7QCbA9H/tQVoAMUETgBwBF0ALgNKABgGzQAuBkgAIgSsADMDQwAJBPP/wwPx/7kE8//DA/H/uQTqADAEawA7BsYARQayAEcGLACqBQoAYQRjAJIEJwCMB43/3gZ0/94HygAnBnUACwTnAEwEFgA9BYkAkAUAAHMFNgBWBEgAKAWI/8oEgf+/BTT/pAQ9ACIE7wAnBGgAEAUcACcEawA7BRwAJwRrADsFjQAnBFkADQTuACcEFwARBO4AJwQXABEEPQAnAgX/5AbVACcGywAQBtUAJwbLABAFjAAnBFsADQUAACcEaP/HBOIAJwLE/94EuQAkBAsAHATAAJwCnwA7BQ8AmwPhAGQFDwCbA+EAZAbeALcFzgB3Bt4AtwXOAHcG3gC3Bc4AdwbeALcFzgB3BLb/5QPx/+cFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7AjsANQIUACICO///AgX/5AVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQVmAGsEdQA5BWkAWwSFADYFaQBbBIUANgVpAFsEhQA2BWkAWwSFADYFaQBbBIUANgUZAFsEWgBKBRkAWwRaAEoFgwBbBNYASgWDAFsE1gBKBYMAWwTWAEoFgwBbBNYASgWDAFsE1gBKBMUAoQPR/7UExQChA9H/tQTFAKED0f+1BMUAoQPR/7UFrP6zAx4A7AP/AAAH9AAAA/8AAAf0AAACrgAAAgQAAAFcAAAEZgAAAikAAAGfAAAA1QAAAAoAAAKXADYClwA2BQsAnAYKAIIGCgCCA4v/TgG9AK4BuQCKAcr/pAGlAM0DBgC3Aw0AlwL7/6EERQBpBID/+wLAAJ4D5QAzBYUAMwFrADYHdgCdAVoAkAKOAKECaQBdAmD/+QQ+ADcDiv/hAukAYwNMAG4ETf/DBJv/9gZJAA0GjgArCFsAJwdYACoGZAAQBIn/9ARzAE4F0QBCBB4AOwSIABAFP//kBV3/5gXBAMIDzgAxB/kAIwTsAO0E9wB9Bg8AtgayAIIGpwCIBnkAtQR4AEUFdQAfBL7/pwRqAJwEmAA0CA8ASQIm/xcEdQAwBGIAYgP8/9UEFAAXA/cAOgJTAGkCjgBmAez/zwT+AF8EjgBLBKIAXwb2AF8G9gBfBPQAXwaNABcACgAAB/v/qQg1AFwDhv/XBGP/pwSmADoEY/+nA6YACgQ2AC0ETgARBB4ADgQXABQFGwAuBBoAFAUKAC4FJgAuBKEAOwQl/4cCpwEGBL0ACgLpADMC6QAIAukAIwLpABYC6QAKAun/8QLp//QC6f/jAukAbQLpABcEBP/ZBXwAQwU1AHAEyAAAA6YAkwXjAIwEYwBwBGsAOQQlAGIEHgAOBEUACgSmADcEVQAKBKYAOgTCAAoF4gAKA6YACgREAAoDwv/yAfcAGATDAAoEjAA/A7IACgPMAAoEYgAKBGcAOQRIAAoEhf+bAf8A6wOPAQQD9gDcA/YAEwP2ANgD9gDXA48BBAOPAQUDjwEEBEb/pAQlAG0EZwA5BXAAYgQdAFUEegAqAgr/BwGw/7IEFP/WByb/wQcpAAoFdgBiBLwACgRZAAsFOv+DBhT/qQQvAAwEyAALBEUACgSw/8EELwByBT4ACgRzAF0GXAAKBt4ACgU7AEoF+wALBE8ACwRnABMGagAKBG//0gQM//UGav+pBIQACgT9AAoFTgBiBcwAQARDAG0Eqf+kBmwAYgRzAF0EcwAKBdoANwS3ADQELwAMBKYAOgROAAQD4wAeCAEACgTP/9kEbwAQBCYANwR/ADsDkgCkBIcANAR7/8cEhgA7BDQAOwRwADAFWgBvBYEAcQVmAC4FvQByBb8AcgQFAKsEaQAfA6YACgRA/38EpP/RAukAigLpAGQC6QB9AukAiQLpAJYC6QB7AukApgRT/9QEGAAnBm8AOgSaAEcEzwBOAiD/DwIg/w8CFQAiAhX/fQIVACIESAAKBGL/lwRi/5cEJQBiBIX/mwSF/5sEhf+bBIX/mwSF/5sEhf+bBIX/mwRnADkDzAAKA8wACgPMAAoDzAAKAfcAGAH3ABgB9wAYAfcAGATCAAoEpgA6BKYAOgSmADoEpgA6BKYAOgRrADkEmwB0BIcAjgRzAFoEcwAJBHMAJgRzAAsEawA5BGsAOQRrADkEJQBtBIX/mwSF/5sEhf+bBGcAOQRnADkEZwA5BGcAOQRiAAoDzAAKA8wACgPMAAoDzAAKA8wACgSMAD8EjAA/BIwAPwSMAD8EwwAKAfcADQH3ABgB9wAYAff/igH3ABgDwv/yBEQACgOmAAoDpgAKA6YACgOmAAoEwgAKBMIACgTCAAoEpgA6BKYAOgSmADoERQAKBEUACgRFAAoEHgAOBB4ADgQeAA4EHgAOBCUAYgQlAGIEJQBiBGsAOQRrADkEawA5BGsAOQRrADkEawA6BeMAjAQlAG0EJQBtBBT/1gQU/9YEFP/WBIX/mwQI/20E//94AjP/ewSw/9IEYf8sBNL/4gSF/5sESAAKA8wACgQU/9YEwwAKAfcAGAREAAoF4gAKBKYAOgRVAAoEJQBiBCUAbQRG/6QB9wAYBCUAbQPMAAoDpgAKBB4ADgH3ABgB9wAYA8L/8gREAAoELwByBIX/mwRIAAoDpgAKA8wACgTIAAsF4gAKBMMACgSmADoEvQAKBFUACgRnADkEJQBiBEb/pAQvAA0EwwAKBGcAOgQlAG0F2gA3BMgACwQvAHIFfABDBTT/pAQ9ACIEbQAnBDQAOwIU/+QAAAABAAAE5AkKBAAAAgICAwUFBgYCAwMEBQIDAgQFBQUFBQUFBQUFAgIEBQUECAYGBgYFBQYGAwUGBQgGBgYGBgUFBgYIBgUFAgQCBAQDBQUFBQUDBQUCAgUCCAUFBQUDBQMFBAcEBAQDAgMGAgIFBQYFAgUEBwQEBQMHBAMFAwMDBQQDAgMEBAYHBwQGBgYGBgYIBgUFBQUDAwMDBgYGBgYGBgUGBgYGBgUFBQUFBQUFBQcFBQUFBQICAgIFBQUFBQUFBQUFBQUFBAUEBgUGBQYFBgUGBQYFBgUGBgYFBQUFBQUFBQUFBQYFBgUGBQYFBgUGBQMCAwIDAgMCAwIHBQUCBgUFBQIFAgUDBQMFAwYFBgUGBQUGBQYFBgUGBQgIBgMGAwYDBQUFBQUFBQUFAwUDBQMGBQYFBgUGBQYFBgUIBwUEBQUEBQQFBAIGAwYFBgUCBgUGBQYFCAcGBQYFBQUDAgYFBgMGBQUFBQMCBQIEBAQEAgMDBAMDAAAAAAAAAwUGAwUHAwYGBgMGBgUGBQUGBgMGBggGBQYGBgUFBQcGBgYDBQUFBQMFBQUEBQUFBQUDBQUFBAQFBQUFBQUFBgQGBwMFBQUHBQUFBwUFBwUGBQMDBQkJBwYGBgYGBgYFBwUIBQYGBgYIBgYGBgYFBgcGBwYICQcIBgYIBQUFBQQFBQcFBQUFBQcFBQUFBQQEBgQFBQcIBgcFBQcFBQUFBAUFAgICBwgFBQUEBQgHBgUIBwYFCAcIBgoJBQQGBgYFBgQGBAoJBgUIBwgHBgUGAAAAAAAABgUGBQYFBQQFBAUFCAcFBQYFBgUGBQcGBgUJBgkIBwYGBQUEBQQFBAYECAYGBQYFBgUHBQcFAwgHBgUGBQYFBgUGBQgHAwYFBgUIBwUFBgUGBQgHBQUFBQYFBgUGBQYFBgUGBQYEBgQGBAYFBQQIBwUEBgQGBAYFCAgHBgUFCQcJBwYFBgYGBQYFBgUGBQYFBgUGBQYFBgUFAggICAgGBQYFBgMFBQUDBgQGBAgHCAcIBwgHBQQGBQYFBgUGBQYFBgUGBQYF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RvpHAkcKRzFHXkdmR25HdkgASAhIEEg9SEVITUiPSJdIx0jPSQ1JFUkdSZtJo0oDSnJKhUqYSqpKvErOSt9K9Et+S/lMLUytTT5Nm03qTnFOok6qTwVPDU8VT4xPlE/sUE9Qt1EnUW9RulIqUjJSlFMPUyJTNFNGU1hTalPqVERUUFTPVOZU+VVhVXhV91ZtVnVWiFaQVw5XhVfgV/dYDlggWF9YZ1jDWMtY01ksWTRZoVopWmRadlp+Wspa0lraWuJa6lryWvpbAltHW8JbylwCXElciVzVXTBdmF3pXmle9V9VX11f22BcYINg3GDkYVNh6WIkYjZiiGLRYxxjdWN9Y61jtWQLZDhkQGTgZOhlIGVoZahl8GZLZrFnAGdzZ/5oXWh0aIZpBWkcaYVpjWmVaahpsGopaqBrCmshazhrSWuIa/lsZWzSbUBty25YbqVu9G9hb9BwSHC6cUxx3HJ5cyhzMHM4c7V0JXRpdK50xnTedOp09nVqddh2s3eIeBh4qHkFeV95k3mweel6AHoXevJ7YXt8e5d8BHxzfM99S317faV95n4ofoR+037ffut+938Dfw9/G391f8yALICKgNyBM4E/gUuBmIHpgk+CqYNUg++D+4QHhBOEH4QnhC+Ee4TLhNeE44UshXKFfoWKheGGMYZ2hn6HAIeNh5mHpYeth7+H0YgziI6ImoimiQmJZ4lziX+Ji4mXiaOJr4m3icmJ24nuigGKCYoRiiOKNIqniq+KworUiueK+osNix+Lhovni/6MFIwnjDqMTYxfjGeMb4yCjJSMp4y5jMuM3IzvjQGNFI0sjT+NUY1djWmNhY2hjbCNwI3MjdiOMo6JjtyO5I9Oj+eQY5DakU2Ru5Iukp2TEJOCk+OUOpSTlOqVb5V3lYOVj5WblaeVs5W/lcuV15Xjle+V+5YHlhmWK5Y3lkOWT5ZblnKWhJaQlpyWqJa0lsaW2JbklvCW/JcIlxSXIJcyl0OXT5dbl3KXiZegl7eXypfdl+mX9ZgBmA2YGZglmDeYSZhhmHiYkJinmL+Y1pjumQWZIJk6mVKZaZl8mY6ZoZmzmcaZ2Jnzmg6aGpommjiaSppcmm2ahZqcmrSay5rjmvqbEpspm0SbXptwm4Kbjpuam6abspvEm9ab7pwFnB2cNJxMnGOce5ySnK2cx5zenPWdDJ0jnTqdUZ1o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A/wDXgAA////pP5sBK4FsAImACUAAAAHAXABbwAD//8AIv5wA9wEUAImAEUAAAAHAXAAqQAH//8AJ/6bBLwFsAImACYAAAAHAXYElwAK//8AEP6IBA8GAAImAEYAAAAHAXYEpf/3//8AJ/6bBOAFsAImACgAAAAHAXYEcwAK//8AO/6RBIgGAAImAEgAAAAHAXYEkAAA//8AJ/35BOAFsAImACgAAAAHA6sBAf6S//8AO/35BIgGAAImAEgAAAAHA6sBHv6S//8AJ/6bBYcFsAImACwAAAAHAXYFAAAK//8ADf6bA/kGAAImAEwAAAAHAXYEfwAK//8AJwAABXEHNgImAC8AAAEHAHcBpQE2AAkAsAQvsA/cMDEA//8AEQAABHUHPQImAE8AAAEHAHcBowE9AAkAsAQvsA/cMDEA//8AJ/7cBXEFsAImAC8AAAAHAXYE0QBL//8AEf7HBEoGAAImAE8AAAAHAXYEYAA2//8AJ/6bA8MFsAImADAAAAAHAXYElwAK////5P6bAhcGAAImAFAAAAAHAXYDRAAK//8AJwAABs4HNgImADEAAAEHAHcCvgE2ABMAsABFWLACLxuxAh8+WbAR3DAxAP//ABAAAAZoBgACJgBRAAABBwB3ApgAAAAJALADL7Ak3DAxAP//ACf+mwbOBbACJgAxAAAABwF2BasACv//ABD+mwZoBFICJgBRAAAABwF2Ba4ACv//ACf+lwWGBbACJgAyAAAABwF2BQIABv//AA3+mwP6BFICJgBSAAAABwF2BGwACv//ACcAAAUEB0ICJgA0AAABBwB3AasBQgAJALADL7AW3DAxAP///8f+YARtBfcCJgBUAAABBwB3AZv/9wAJALANL7Ah3DAxAP//ACf+mwTYBbACJgA2AAAABwF2BJgACv///97+mwLvBFMCJgBWAAAABwF2Az4ACv//ACT+kQS7BccCJgA3AAAABwF2BLAAAP//ABz+iAPEBFACJgBXAAAABwF2BGL/9///AJz+lAUiBbACJgA4AAAABwF2BJ8AA///ADv+kQKuBUECJgBYAAAABwF2A/UAAP//AJsAAAWBBzcCJgA6AAABBwFuAN0BQwAJALABL7AR3DAxAP//AGQAAAQNBewCJgBaAAABBgFuFvgACQCwAS+wEdwwMQD//wCb/psFgQWwAiYAOgAAAAcBdgTV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AesB7AHtAe4B7wHwAfEB8gJSAlQCWAJaAlwCXgJiAmQCagJsAnACcgJ0AnYCegJ8An4CgAKaAqICpAKqArADhwOOA5MDlgACAAAAAgAKO9oAAQNsAAQAAAGxBtI6+jr6BvwHUjfeI2I7mDuqOHYHWDiWOJY43jTeDqg4ljiWO6omhAqSCxQ1MDjeNI43uDdKOOQPYgt+OFQ2GjiMC8AM6gz0N643rji4NhoO1g3qOW4OTDeoOW4OZjfeN9433jfeN9433juYOHY4djh2OHY4ljiWOJY4ljuqOJY7qjuqO6o7qjuqON443jjeON445DhUOFQ4VDhUOFQ4VDiMOIw4jDiMN644uDi4OLg4uDi4OW42GjluN944VDfeOFQ33jhUO5g7mDuYO5g7qjuqOHY4jDh2OIw4djiMOHY4jDh2OIw4ljeuOJY4ljiWOJY4ljjeNN4OqA6oDqgOqDiWN644ljeuOJY3rjeuO6o4uDuqOLg7qji4DtYO1g7WNTA1MDUwON443jjeON443jjeN7g45DluOOQPYg9iD2I33jhUNTAO6Dr6N944djiWOJY7qjjkN94jYjZ+N944dg9iOJY7qjiWNN433jiWOJYPhDuqJoQQfjUwOOQRfDdKElo4ljjkN64S+DluEv43rhW8OW4Xlji4GKgYwhjIGM4ayBrOGwQbNji4OHY4dhu0Nn44ljiWON4dKh7cIJo03jY0OJY33iHQI2I2fiNsOHY3SiW6OJY03jiWOJY4ljuqJoQ7mDUwNjQ3SjiWOJYmpihAND4pHingKm44VCrMK6Y3QCwwOIw3qCz6LSQ4uDYaLoo5bjYaN6gxEDFOMoA0aDYaMwI4jDiMN0AziDOyNAg5bjQ+NGg33ji4NI45bjSOOW40tDYaNn43QDZ+N0o3qDTeNN403jTeOJY7mDUwOOQ5bjjkN0o3qDeuOJY3SjeoOJY4ljiWN944VDfeOFQ4djiMOIw4jDdKN6g7qji4OLg2GjY0OW42NDluNjQ5bjZ+N0A3QDdKN6g33jhUOJY3rje4N7g3uDfeOFQ33jhUN944VDfeOFQ33jhUN944VDfeOFQ33jhUN944VDfeOFQ33jhUN944VDh2OIw4djiMOHY4jDh2OIw4djiMOHY4jDh2OIw4djiMOJY4ljuqOLg7qji4O6o4uDuqOLg7qji4O6o4uDuqOLg4uDjeON445DluOOQ5bjjkOW445DluO6o6+jmIOvo6+jr6Ovo6+jsAOwo7HDsuO0A7XjtoO3I7mDuqO6oAAQGxAAQABgALAAwAEwAlACYAJwAoACkAKgAsAC0ALgAvADAAMQAyADMANAA1ADYAOAA5ADoAOwA8AD0APgA/AEUARgBJAEoATABPAFEAUgBTAFQAVgBYAFoAWwBcAF0AXwCDAIQAhQCGAIcAiACKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJwAnQCeAJ8AoACjAKQApQCmAKcAqACrAKwArQCuALQAtQC2ALcAuAC5AMAAwQDCAMMAxADFAMYAxwDIAMkAywDNAM8A0QDTANUA1gDXANgA2QDaANsA3ADdAN4A5wDoAOsA7QDvAPEA8wD3APkA/AD+AQABAgEGAQcBCAEJAQoBCwEMAQ8BEAERARIBEwEUARgBGgEcASUBJwEpASsBLQEvATEBMwE1ATcBOQE6ATsBPAE+AUABTgFPAWIBZQFmAXkBewF8AX0BfgF/AYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZIBkwGUAZUBlgGXAZgBmgGbAZ4BoQGjAaYBpwGpAa0BrgGvAbEBsgGzAbQBtQG2AbgBuQG8AcMBxAHFAcYByQHKAcsBzAHNAc4BzwHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3QHeAd8B4AHhAeMB5AHlAeYB6AHpAesB7AHtAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6Af0CAQIDAgUCBgIHAggCCQIMAg0CDwIQAhECEwIUAhYCFwIcAh0CIQIlAiYCKQI2AjcCOAI5AjoCRAJRAlICUwJUAlgCWQJcAl4CYAJiAmQCbAJuAnACcQJyAnQCdQJ9AoICgwKEAosCjwKRApICkwKUApUCmAKZApsCnQKeAp8CqAKpAq0CrwKwArECsgKzArQCtQK4ArkCvQK+Ar8C1gLXAuYC5wL4AvoC/AMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDLAMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDQwNGA0gDVANVA1YDVwNYA1kDWgNbA1wDcANxA3MDdAN1A34DfwPZA9sD3APeA+ED4gPpA+wEMQQzBDQACgA4/8QBJf/EASf/xAFi/8QBxf/EAc7/xAHl/8QCYv/EAm7/xAJ2/8QAFQA6ABQAOwAmAD0AFgCgABYBNwAmATkAFgE7ABYBfwAWAZUAFgGbABYCNwAUAjkAFAJwABYCcgAWAvgAJgL6ACYC/AAmA1QAFgNWABYDWAAWA1oAFgABABP/CADOABD+7gAS/u4AJf9AAC7/MAA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFb/5gBZ/+oAWv/oAF3/6ACD/0AAhP9AAIX/QACG/0AAh/9AAIj/QACj/94ApP/eAKX/3gCm/94Ap//eAKj/3gCq/+sAq//rAKz/6wCt/+sArv/rALX/6wC2/+sAt//rALj/6wC5/+sAvP/qAL3/6gC+/+oAv//qAMD/6ADC/+gAw/9AAMT/3gDF/0AAxv/eAMf/QADI/94Ayv/rAMz/6wDO/+sA0P/rANL/6wDW/+sA2P/rANr/6wDc/+sA3v/rAOD/6wDi/+sA5P/rAOb/6wD3/zABEP/rARL/6wEU/+sBFv/rASUAFAEnABQBLP/qAS7/6gEw/+oBMv/qATT/6gE2/+oBOv/oAUb/6wFI/+oBTv9AAU//3gFiABQBef9AAYL/QAGF/0ABjP9AAZz/6wGg/+oBof/rAaP/6AGt/+gBr//rAbL/6wGz/+sBtf/qAbv/6gG8/+sBvf/qAcUAFAHL/zABzgAUAdP/QAHlABQB8//eAfj/6wIB/+sCBP/rAgb/6AIH/+sCE//rAhT/6wIX/+sCIf/oAin/QAI2/+sCOP/oAjr/6AI8/+sCQP/rAkT/6wJiABQCa//rAm3/6wJuABQCcf/oAnYAFAKS/0ACk//eApT/QAKV/94Cmf/rApv/6wKd/+sCqf/rAqv/6wKt/+sCsf/oArP/6AK1/+gCw//rAsT/6wLF/+sCz//rAtb/QALX/94DAv9AAwP/3gME/0ADBf/eAwb/QAMH/94DCP9AAwn/3gMK/0ADC//eAwz/QAMN/94DDv9AAw//3gMQ/0ADEf/eAxL/QAMT/94DFP9AAxX/3gMW/0ADF//eAxj/QAMZ/94DG//rAx3/6wMf/+sDIf/rAyP/6wMl/+sDJ//rAyn/6wMv/+sDMf/rAzP/6wM1/+sDN//rAzn/6wM7/+sDPf/rAz//6wNB/+sDQ//rA0X/6wNH/+oDSf/qA0v/6gNN/+oDT//qA1H/6gNT/+oDVf/oA1f/6ANZ/+gDW//oA3L+7gN2/u4Dev7uA3v+7gPs/8AAIAA4/98AOv/kADv/7AA9/90AoP/dASX/3wEn/98BN//sATn/3QE7/90BYv/fAX//3QGV/90Bm//dAcX/3wHO/98B5f/fAjf/5AI5/+QCYv/fAm7/3wJw/90Ccv/dAnb/3wL4/+wC+v/sAvz/7ANU/90DVv/dA1j/3QNa/90D7AAOABoAOP/OADr/7QA9/9AAoP/QASX/zgEn/84BOf/QATv/0AFi/84Bf//QAZX/0AGb/9ABxf/OAc7/zgHl/84CN//tAjn/7QJi/84Cbv/OAnD/0AJy/9ACdv/OA1T/0ANW/9ADWP/QA1r/0AAQAC7/7gA5/+4AnP/uAJ3/7gCe/+4An//uAPf/7gEr/+4BLf/uAS//7gEx/+4BM//uATX/7gHL/+4DRv/uA0j/7gBKAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCq/+gAq//oAKz/6ACt/+gArv/oAMr/6ADM/+gAzv/oAND/6ADS/+gA1v/oANj/6ADa/+gA3P/oAN7/6ADg/+gA4v/oAOT/6ADm/+gBFv/oAUb/6AFmABABnP/oAaH/6AGy/+gBs//oAfj/6AIE/+gCB//oAhP/6AIU/+gCF//oAjz/6AJA/+gCRP/oAmv/6AJt/+gCmf/oApv/6AKd/+gCq//oAsP/6ALE/+gCxf/oAs//6AMb/+gDHf/oAx//6AMh/+gDI//oAyX/6AMn/+gDKf/oAz3/6AM//+gDQf/oA0X/6ANwABADcQAQA3MAEAN0ABADdQAQA34AEAN/ABAAAgIF/9YDcf+YAD0AR//sAEj/7ABJ/+wAS//sAFX/7ACq/+wAq//sAKz/7ACt/+wArv/sAMr/7ADM/+wAzv/sAND/7ADS/+wA1v/sANj/7ADa/+wA3P/sAN7/7ADg/+wA4v/sAOT/7ADm/+wBFv/sAUb/7AGc/+wBof/sAbL/7AGz/+wB+P/sAgT/7AIH/+wCE//sAhT/7AIX/+wCPP/sAkD/7AJE/+wCa//sAm3/7AKZ/+wCm//sAp3/7AKr/+wCw//sAsT/7ALF/+wCz//sAxv/7AMd/+wDH//sAyH/7AMj/+wDJf/sAyf/7AMp/+wDPf/sAz//7ANB/+wDRf/sABgAU//iALX/4gC2/+IAt//iALj/4gC5/+IBEP/iARL/4gEU/+IBr//iAbz/4gIB/+ICNv/iAqn/4gKt/+IDL//iAzH/4gMz/+IDNf/iAzf/4gM5/+IDO//iA0P/4gNxABgABgAQ/4QAEv+EA3L/hAN2/4QDev+EA3v/hAAQAC7/7AA5/+wAnP/sAJ3/7ACe/+wAn//sAPf/7AEr/+wBLf/sAS//7AEx/+wBM//sATX/7AHL/+wDRv/sA0j/7AALAFv/zAPW/9cD1/+4A9j/7gPZ/70D3P/yA97/8gPm//ED6v/zA+wAEwP3/7cABABKABQAWAAyAFsAEQNxABAAHgAG//IAC//yAFr/8wBd//MAwP/zAML/8wE6//MBZv/yAaP/8wGt//MCBf/1Agb/8wIh//MCOP/zAjr/8wJx//MCsf/zArP/8wK1//MDVf/zA1f/8wNZ//MDW//zA3D/8gNx//IDc//yA3T/8gN1//IDfv/yA3//8gAIAFv/5QGW/8sBuP/kA9z/7APe/+wD5v/rA+r/7QPsAA0APgAn//MAK//zADP/8wA1//MAiv/zAJX/8wCW//MAl//zAJj/8wCZ//MAm//zAMn/8wDL//MAzf/zAM//8wDf//MA4f/zAOP/8wDl//MBD//zARH/8wET//MBFf/zAUX/8wFS//MBfv/zAYn/8wGQ//MBqwANAcf/8wHh//MB5P/zAiP/8wI1//MCO//zAj3/8wI///MCQf/zAkP/8wJq//MCbP/zAqj/8wKq//MCrP/zAs7/8wMu//MDMP/zAzL/8wM0//MDNv/zAzj/8wM6//MDPP/zAz7/8wNA//MDQv/zA0T/8wNc//MEMf/zBDL/8wQ0//MENf/zAD8AJ//mACv/5gAz/+YANf/mAIr/5gCV/+YAlv/mAJf/5gCY/+YAmf/mAJv/5gDJ/+YAy//mAM3/5gDP/+YA3//mAOH/5gDj/+YA5f/mAQ//5gER/+YBE//mARX/5gFF/+YBUv/mAX7/5gGJ/+YBkP/mAZb/wgGrABABx//mAeH/5gHk/+YCI//mAjX/5gI7/+YCPf/mAj//5gJB/+YCQ//mAmr/5gJs/+YCqP/mAqr/5gKs/+YCzv/mAy7/5gMw/+YDMv/mAzT/5gM2/+YDOP/mAzr/5gM8/+YDPv/mA0D/5gNC/+YDRP/mA1z/5gQx/+YEMv/mBDT/5gQ1/+YANwAl/+QAPP/SAD3/0wCD/+QAhP/kAIX/5ACG/+QAh//kAIj/5ACg/9MAw//kAMX/5ADH/+QBOf/TATv/0wFO/+QBef/kAX//0wGC/+QBhf/kAYz/5AGV/9MBl//SAZv/0wGr/+IB0//kAdn/0gHo/9ICKf/kAlj/0gJw/9MCcv/TAnT/0gKD/9ICkv/kApT/5AKe/9ICvv/SAtb/5AMC/+QDBP/kAwb/5AMI/+QDCv/kAwz/5AMO/+QDEP/kAxL/5AMU/+QDFv/kAxj/5ANU/9MDVv/TA1j/0wNa/9MAJwAQ/0YAEv9GACX/zQCD/80AhP/NAIX/zQCG/80Ah//NAIj/zQDD/80Axf/NAMf/zQFO/80Bef/NAYL/zQGF/80BjP/NAbH/8gHT/80CKf/NApL/zQKU/80C1v/NAwL/zQME/80DBv/NAwj/zQMK/80DDP/NAw7/zQMQ/80DEv/NAxT/zQMW/80DGP/NA3L/RgN2/0YDev9GA3v/RgABAasADgCvAEf/3ABI/9wASf/cAEv/3ABR/8EAUv/BAFP/1gBU/8EAVf/cAFn/3QBa/+EAXf/hAKr/3ACr/9wArP/cAK3/3ACu/9wAtP/BALX/1gC2/9YAt//WALj/1gC5/9YAvP/dAL3/3QC+/90Av//dAMD/4QDC/+EAyv/cAMz/3ADO/9wA0P/cANL/3ADW/9wA2P/cANr/3ADc/9wA3v/cAOD/3ADi/9wA5P/cAOb/3AEH/8EBCf/BAQv/wQEM/8EBEP/WARL/1gEU/9YBFv/cASz/3QEu/90BMP/dATL/3QE0/90BNv/dATr/4QFG/9wBSP/dAZz/3AGe/8EBoP/dAaH/3AGj/+EBpf/mAaf/wQGo/+sBqf/pAa3/4QGu//ABr//WAbD/5wGy/9wBs//cAbT/4wG1/90Btv/OAbj/1AG5/9sBu//dAbz/1gG9/90B9v/BAfj/3AH7/8EB/P/BAf3/wQH//8ECAP/BAgH/1gIC/8ECA//BAgT/3AIG/+ECB//cAgn/wQIL/8ECDP/BAg//wQIR/8ECE//cAhT/3AIW/8ECF//cAh3/wQIf/8ECIP/BAiH/4QI2/9YCOP/hAjr/4QI8/9wCQP/cAkT/3AJN/8ECXf/BAmX/wQJn/8ECa//cAm3/3AJx/+ECiv/BAoz/wQKQ/8ECmf/cApv/3AKd/9wCpf/BAqf/wQKp/9YCq//cAq3/1gKx/+ECs//hArX/4QK5/8ECu//BAr3/wQLD/9wCxP/cAsX/3ALP/9wC5//BAxv/3AMd/9wDH//cAyH/3AMj/9wDJf/cAyf/3AMp/9wDL//WAzH/1gMz/9YDNf/WAzf/1gM5/9YDO//WAz3/3AM//9wDQf/cA0P/1gNF/9wDR//dA0n/3QNL/90DTf/dA0//3QNR/90DU//dA1X/4QNX/+EDWf/hA1v/4QB2AAb/2gAL/9oAR//wAEj/8ABJ//AAS//wAFX/8ABZ/+8AWv/cAF3/3ACq//AAq//wAKz/8ACt//AArv/wALz/7wC9/+8Avv/vAL//7wDA/9wAwv/cAMr/8ADM//AAzv/wAND/8ADS//AA1v/wANj/8ADa//AA3P/wAN7/8ADg//AA4v/wAOT/8ADm//ABFv/wASz/7wEu/+8BMP/vATL/7wE0/+8BNv/vATr/3AFG//ABSP/vAWb/2gGc//ABoP/vAaH/8AGj/9wBqP/sAasADwGt/9wBsP/qAbL/8AGz//ABtP/OAbX/7wG2/+cBu//vAb3/7wH4//ACBP/wAgb/3AIH//ACE//wAhT/8AIX//ACIf/cAjj/3AI6/9wCPP/wAkD/8AJE//ACa//wAm3/8AJx/9wCmf/wApv/8AKd//ACq//wArH/3AKz/9wCtf/cAsP/8ALE//ACxf/wAs//8AMb//ADHf/wAx//8AMh//ADI//wAyX/8AMn//ADKf/wAz3/8AM///ADQf/wA0X/8ANH/+8DSf/vA0v/7wNN/+8DT//vA1H/7wNT/+8DVf/cA1f/3ANZ/9wDW//cA3D/2gNx/9oDc//aA3T/2gN1/9oDfv/aA3//2gBEABAADAASAAwAR//nAEj/5wBJ/+cAS//nAFX/5wCq/+cAq//nAKz/5wCt/+cArv/nAMr/5wDM/+cAzv/nAND/5wDS/+cA1v/nANj/5wDa/+cA3P/nAN7/5wDg/+cA4v/nAOT/5wDm/+cBFv/nAUb/5wGc/+cBof/nAasADwGy/+cBs//nAfj/5wIE/+cCB//nAhP/5wIU/+cCF//nAjz/5wJA/+cCRP/nAmv/5wJt/+cCmf/nApv/5wKd/+cCq//nAsP/5wLE/+cCxf/nAs//5wMb/+cDHf/nAx//5wMh/+cDI//nAyX/5wMn/+cDKf/nAz3/5wM//+cDQf/nA0X/5wNyAAwDdgAMA3oADAN7AAwABgG0/+oB9//uAgX/1QIP/+0CY//sAtH/7AABAgX/wAABAbQAIAB+AAYADAALAAwAR//oAEj/6ABJ/+gASgAMAEv/6ABT/+oAVf/oAFoACwBdAAsAqv/oAKv/6ACs/+gArf/oAK7/6AC1/+oAtv/qALf/6gC4/+oAuf/qAMAACwDCAAsAyv/oAMz/6ADO/+gA0P/oANL/6ADW/+gA2P/oANr/6ADc/+gA3v/oAOD/6ADi/+gA5P/oAOb/6AEQ/+oBEv/qART/6gEW/+gBOgALAUb/6AFmAAwBnP/oAaH/6AGjAAsBq/+QAa0ACwGv/+oBsAALAbL/6AGz/+gBtAAMAbz/6gH4/+gCAf/qAgT/6AIGAAsCB//oAhP/6AIU/+gCF//oAiEACwI2/+oCOAALAjoACwI8/+gCQP/oAkT/6AJr/+gCbf/oAnEACwKZ/+gCm//oAp3/6AKp/+oCq//oAq3/6gKxAAsCswALArUACwLD/+gCxP/oAsX/6ALP/+gDG//oAx3/6AMf/+gDIf/oAyP/6AMl/+gDJ//oAyn/6AMv/+oDMf/qAzP/6gM1/+oDN//qAzn/6gM7/+oDPf/oAz//6ANB/+gDQ//qA0X/6ANVAAsDVwALA1kACwNbAAsDcAAMA3EADANzAAwDdAAMA3UADAN+AAwDfwAMA9cADQPZAA4D2v/1A9z/7APe/+0D5v/sA+r/7gPs/78D9wANAAECBf/iAA0AXP/tAF7/7QE9/+0BP//tAUH/7QH5/+0CBf/AAgj/7QJZ/+0Cdf/tAoT/7QKf/+0Cv//tAAwAXP/yAF7/8gE9//IBP//yAUH/8gH5//ICCP/yAln/8gJ1//IChP/yAp//8gK///IAHwBa//QAXP/yAF3/9ABe//MAwP/0AML/9AE6//QBPf/zAT//8wFB//MBo//0Aa3/9AH5//ICBv/0Agj/8gIh//QCOP/0Ajr/9AJZ//ICcf/0AnX/8gKE//ICn//yArH/9AKz//QCtf/0Ar//8gNV//QDV//0A1n/9ANb//QAXQAG/8oAC//KADj/0gA6/9QAPP/0AD3/0wBa/+YAXP/vAF3/5gCg/9MAwP/mAML/5gEl/9IBJ//SATn/0wE6/+YBO//TAWL/0gFm/8oBf//TAZX/0wGX//QBm//TAaP/5gGt/+YBxf/SAc7/0gHR/+0B2f/0AeX/0gHm/+0B6P/0Aer/4QHv/9QB+f/vAgX/yQIG/+YCCP/vAg//0QIh/+YCJP/lAjf/1AI4/+YCOf/UAjr/5gJC/+MCWP/0Aln/7wJi/9ICY//EAm7/0gJw/9MCcf/mAnL/0wJ0//QCdf/vAnb/0gJ4/+ECev/hAoP/9AKE/+8Cjf/hAp7/9AKf/+8CsP/tArH/5gKy/+0Cs//mArT/7QK1/+YCtv/hAr7/9AK//+8Cxv/UAsf/9QLI/+cC0P9kAtH/yQNU/9MDVf/mA1b/0wNX/+YDWP/TA1n/5gNa/9MDW//mA3D/ygNx/8oDc//KA3T/ygN1/8oDfv/KA3//ygBsAAb/wAAL/8AAOP+dADr/xwA8//AAPf+rAFH/0gBS/9IAVP/SAKD/qwC0/9IBB//SAQn/0gEL/9IBDP/SASX/nQEn/50BOf+rATv/qwFi/50BZv/AAX//qwGV/6sBl//wAZv/qwGe/9IBp//SAcX/nQHM//UBzv+dAdH/6gHZ//AB3v/1AeX/nQHm/+oB6P/wAer/5QHv/8EB9v/SAfv/0gH8/9IB/f/SAf//0gIA/9ICAv/SAgP/0gIF/80CCf/SAgv/0gIM/9ICD//SAhH/0gIW/9ICHf/SAh//0gIg/9ICN//HAjn/xwJN/9ICWP/wAl3/0gJi/50CY//MAmX/0gJn/9ICbv+dAnD/qwJy/6sCdP/wAnb/nQJ4/+UCev/lAn7/3wKD//ACh//1Aor/0gKM/9ICjf/lApD/0gKe//ACpf/SAqf/0gKw/+oCsv/qArT/6gK2/+UCuf/SArv/0gK9/9ICvv/wAsb/zgLI/+oCyv/1AtD/ngLR/84C1P/1Auf/0gNU/6sDVv+rA1j/qwNa/6sDcP/AA3H/wANz/8ADdP/AA3X/wAN+/8ADf//AAG8ABv+xAAv/sQA4/54AOv/FADz/8gA9/6gAUf/PAFL/zwBU/88AXP/vAKD/qAC0/88BB//PAQn/zwEL/88BDP/PASX/ngEn/54BOf+oATv/qAFi/54BZv+xAX//qAGV/6gBl//yAZv/qAGe/88Bp//PAcX/ngHO/54B0f/sAdn/8gHl/54B5v/sAej/8gHq/+EB7//CAfb/zwH5/+8B+//PAfz/zwH9/88B///PAgD/zwIC/88CA//PAgX/xgII/+8CCf/PAgv/zwIM/88CD//PAhH/zwIW/88CHf/PAh//zwIg/88CN//FAjn/xQJN/88CWP/yAln/7wJd/88CYv+eAmP/wAJl/88CZ//PAm7/ngJw/6gCcv+oAnT/8gJ1/+8Cdv+eAnj/4QJ6/+ECfv/fAoP/8gKE/+8Civ/PAoz/zwKN/+ECkP/PAp7/8gKf/+8Cpf/PAqf/zwKw/+wCsv/sArT/7AK2/+ECuf/PArv/zwK9/88Cvv/yAr//7wLG/80CyP/oAtD/nwLR/8YC5//PA1T/qANW/6gDWP+oA1r/qANw/7EDcf+xA3P/sQN0/7EDdf+xA37/sQN//7EATQA4/74AUf/hAFL/4QBU/+EAWv/vAF3/7wC0/+EAwP/vAML/7wEH/+EBCf/hAQv/4QEM/+EBJf++ASf/vgE6/+8BYv++AZ7/4QGj/+8Bp//hAa3/7wHF/74Bzv++AeX/vgHv/8kB9v/hAfv/4QH8/+EB/f/hAf//4QIA/+ECAv/hAgP/4QIF/98CBv/vAgn/4QIL/+ECDP/hAg//4QIR/+ECFv/hAh3/4QIf/+ECIP/hAiH/7wIk/+0COP/vAjr/7wJC/+sCTf/hAl3/4QJi/74CY//fAmX/4QJn/+ECbv++AnH/7wJ2/74Cfv/pAor/4QKM/+ECkP/hAqX/4QKn/+ECsf/vArP/7wK1/+8Cuf/hArv/4QK9/+ECx//1AtH/4ALn/+EDVf/vA1f/7wNZ/+8DW//vAGQAOP/mADr/5wA8//IAPf/nAFH/1gBS/9YAVP/WAFz/8QCg/+cAtP/WAQf/1gEJ/9YBC//WAQz/1gEl/+YBJ//mATn/5wE7/+cBYv/mAX//5wGV/+cBl//yAZv/5wGe/9YBp//WAcX/5gHO/+YB0f/uAdn/8gHl/+YB5v/uAej/8gHq/+gB7//mAfb/1gH5//EB+//WAfz/1gH9/9YB///WAgD/1gIC/9YCA//WAgX/0AII//ECCf/WAgv/1gIM/9YCD//WAhH/1gIW/9YCHf/WAh//1gIg/9YCN//nAjn/5wJN/9YCWP/yAln/8QJd/9YCYv/mAmP/zgJl/9YCZ//WAm7/5gJw/+cCcv/nAnT/8gJ1//ECdv/mAnj/6AJ6/+gCg//yAoT/8QKK/9YCjP/WAo3/6AKQ/9YCnv/yAp//8QKl/9YCp//WArD/7gKy/+4CtP/uArb/6AK5/9YCu//WAr3/1gK+//ICv//xAsb/5wLI/+0C0P/mAtH/0ALn/9YDVP/nA1b/5wNY/+cDWv/nAAICLQALAtD/5gCTACUAEAAn/+gAK//oADP/6AA1/+gAOP/gADr/4AA9/98AgwAQAIQAEACFABAAhgAQAIcAEACIABAAiv/oAJX/6ACW/+gAl//oAJj/6ACZ/+gAm//oAKD/3wDDABAAxQAQAMcAEADJ/+gAy//oAM3/6ADP/+gA3//oAOH/6ADj/+gA5f/oAQ//6AER/+gBE//oARX/6AEl/+ABJ//gATn/3wE7/98BRf/oAU4AEAFS/+gBYv/gAXkAEAF+/+gBf//fAYIAEAGFABABif/oAYwAEAGQ/+gBlf/fAZv/3wHF/+ABx//oAcwAEAHO/+AB0wAQAdcAFAHeABAB4f/oAeT/6AHl/+AB6v/hAe//4AH3ABMB/gAQAgr/4AIcABACI//oAikAEAI1/+gCN//gAjn/4AI7/+gCPf/oAj//6AJB/+gCQ//oAmL/4AJq/+gCbP/oAm7/4AJw/98Ccv/fAnb/4AJ4/+ECef/gAnr/4QJ7/+ACf//hAocAEAKIABACjf/hAo7/4AKSABAClAAQApr/6QKo/+gCqv/oAqz/6AK2/+ECt//gAsb/3wLI/94CygAQAs7/6ALQ/98C0v/yAtQAEALVABAC1gAQAwIAEAMEABADBgAQAwgAEAMKABADDAAQAw4AEAMQABADEgAQAxQAEAMWABADGAAQAy7/6AMw/+gDMv/oAzT/6AM2/+gDOP/oAzr/6AM8/+gDPv/oA0D/6ANC/+gDRP/oA1T/3wNW/98DWP/fA1r/3wNc/+gEMf/oBDL/6AQ0/+gENf/oADIAG//yADj/8QA6//QAPP/0AD3/8ACg//ABJf/xASf/8QE5//ABO//wAWL/8QF///ABlf/wAZf/9AGb//ABxf/xAcz/9QHO//EB0f/zAdn/9AHe//UB5f/xAeb/8wHo//QB7//xAjf/9AI5//QCWP/0AmL/8QJu//ECcP/wAnL/8AJ0//QCdv/xAoP/9AKH//UCnv/0ArD/8wKy//MCtP/zAr7/9ALG//ICyP/yAsr/9QLQ//IC1P/1A1T/8ANW//ADWP/wA1r/8AAIAFgADgCJ/tcBq/+YAbH/xwHX/xIB9/9SAsL/zwPs/4AAZgAlAA8AOP/mADr/5gA8AA4APf/mAIMADwCEAA8AhQAPAIYADwCHAA8AiAAPAKD/5gDDAA8AxQAPAMcADwEl/+YBJ//mATn/5gE7/+YBTgAPAWL/5gF5AA8Bf//mAYIADwGFAA8BjAAPAZX/5gGXAA4Bm//mAcX/5gHMAA4Bzv/mAdEACwHTAA8B1wATAdkADgHeAA4B5f/mAeYACwHoAA4B6v/lAe//5gHw//QB9wASAf4ADwIF/+cCCv/oAg//5wIcAA8CKQAPAjf/5gI5/+YCWAAOAmL/5gJj/+cCbv/mAnD/5gJy/+YCdAAOAnb/5gJ4/+UCef/oAnr/5QJ7/+gCgwAOAocADgKIAA8Cjf/lAo7/6AKSAA8ClAAPAp4ADgKwAAsCsgALArQACwK2/+UCt//oAr4ADgLG/+YCyP/mAsoADgLQ/+YC0f/nAtQADgLVAA8C1gAPAwIADwMEAA8DBgAPAwgADwMKAA8DDAAPAw4ADwMQAA8DEgAPAxQADwMWAA8DGAAPA1T/5gNW/+YDWP/mA1r/5gA3AAb/vwAL/78AOP+fADr/yQA9/60AoP+tASX/nwEn/58BOf+tATv/rQFi/58BZv+/AX//rQGV/60Bm/+tAcX/nwHO/58B0f/sAeX/nwHm/+wB6v/mAe//xAIF/80CD//VAjf/yQI5/8kCYv+fAmP/zAJu/58CcP+tAnL/rQJ2/58CeP/mAnr/5gJ+/98Cjf/mArD/7AKy/+wCtP/sArb/5gLG/9ECyP/sAtD/oQLR/88DVP+tA1b/rQNY/60DWv+tA3D/vwNx/78Dc/+/A3T/vwN1/78Dfv+/A3//vwAwADj/4wA8/+UAPf/kAKD/5AEl/+MBJ//jATn/5AE7/+QBYv/jAX//5AGV/+QBl//lAZv/5AHF/+MBzP/lAc7/4wHR/+kB1//iAdn/5QHe/+UB5f/jAeb/6QHo/+UB/v/qAhz/6gJY/+UCYv/jAm7/4wJw/+QCcv/kAnT/5QJ2/+MCg//lAof/5QKI/+oCnv/lArD/6QKy/+kCtP/pAr7/5QLK/+UC0P/kAtT/5QLV/+oDVP/kA1b/5ANY/+QDWv/kACMAOP/iADz/5AEl/+IBJ//iAWL/4gGX/+QBxf/iAcz/5AHO/+IB0f/pAdf/4QHZ/+QB3v/kAeX/4gHm/+kB6P/kAff/5AH+/+sCHP/rAlj/5AJi/+ICbv/iAnT/5AJ2/+ICg//kAof/5AKI/+sCnv/kArD/6QKy/+kCtP/pAr7/5ALK/+QC1P/kAtX/6wAXADj/6wA9//MAoP/zASX/6wEn/+sBOf/zATv/8wFi/+sBf//zAZX/8wGb//MBxf/rAc7/6wHl/+sCYv/rAm7/6wJw//MCcv/zAnb/6wNU//MDVv/zA1j/8wNa//MANgBR/+8AUv/vAFT/7wBc//AAtP/vAQf/7wEJ/+8BC//vAQz/7wGe/+8Bp//vAfb/7wH3/+4B+f/wAfv/7wH8/+8B/f/vAf//7wIA/+8CAv/vAgP/7wIF/+4CCP/wAgn/7wIL/+8CDP/vAg//7wIR/+8CFv/vAh3/7wIf/+8CIP/vAiT/9AJC//ECTf/vAln/8AJd/+8CY//vAmX/7wJn/+8Cdf/wAoT/8AKK/+8CjP/vApD/7wKf//ACpf/vAqf/7wK5/+8Cu//vAr3/7wK///AC0f/vAuf/7wAiAAb/8gAL//IAWv/1AF3/9QDA//UAwv/1ATr/9QFm//IBo//1Aa3/9QIF//QCBv/1Ag//9AIh//UCJP/1Ajj/9QI6//UCY//1AnH/9QKx//UCs//1ArX/9QLR//UDVf/1A1f/9QNZ//UDW//1A3D/8gNx//IDc//yA3T/8gN1//IDfv/yA3//8gAyAFH/7gBS/+4AVP/uALT/7gEH/+4BCf/uAQv/7gEM/+4Bnv/uAaf/7gH2/+4B9wAUAfv/7gH8/+4B/f/uAf//7gIA/+4CAv/uAgP/7gIF/+0CCf/uAgr/7QIL/+4CDP/uAg3/0AIP/+4CEf/uAhb/7gId/+4CH//uAiD/7gJN/+4CXf/uAmP/7QJl/+4CZ//uAnn/7QJ7/+0Civ/uAoz/7gKO/+0CkP/uAqX/7gKn/+4Ct//tArn/7gK7/+4Cvf/uAtH/7QLn/+4ACgAG//UAC//1AWb/9QNw//UDcf/1A3P/9QN0//UDdf/1A37/9QN///UAWQBH//AASP/wAEn/8ABL//AAU//HAFX/8ACq//AAq//wAKz/8ACt//AArv/wALX/xwC2/8cAt//HALj/xwC5/8cAyv/wAMz/8ADO//AA0P/wANL/8ADW//AA2P/wANr/8ADc//AA3v/wAOD/8ADi//AA5P/wAOb/8AEQ/8cBEv/HART/xwEW//ABRv/wAZz/8AGh//ABr//HAbL/8AGz//ABvP/HAfj/8AIB/8cCBP/wAgf/8AIT//ACFP/wAhf/8AI2/8cCPP/wAj7/6wJA//ACRP/wAmv/8AJt//ACmf/wApv/8AKd//ACqf/HAqv/8AKt/8cCw//wAsT/8ALF//ACz//wAxv/8AMd//ADH//wAyH/8AMj//ADJf/wAyf/8AMp//ADL//HAzH/xwMz/8cDNf/HAzf/xwM5/8cDO//HAz3/8AM///ADQf/wA0P/xwNF//AD3P/rA97/6wPm/+kD6v/rAKEABgANAAsADQBF//AAR//AAEj/wABJ/8AASgANAEv/wABT/+IAVf/AAFoACwBdAAsAo//wAKT/8ACl//AApv/wAKf/8ACo//AAqv/AAKv/wACs/8AArf/AAK7/wAC1/+IAtv/iALf/4gC4/+IAuf/iAMAACwDCAAsAxP/wAMb/8ADI//AAyv/AAMz/wADO/8AA0P/AANL/wADW/8AA2P/AANr/wADc/8AA3v/AAOD/wADi/8AA5P/AAOb/wAEQ/+IBEv/iART/4gEW/8ABOgALAUb/wAFP//ABZgANAZz/wAGh/8ABowALAa0ACwGv/+IBsf/WAbL/wAGz/8ABtv/VAbz/4gHz//AB9//IAfj/wAH+/9cCAf/iAgT/wAIGAAsCB//AAhP/wAIU/8ACF//AAhz/1wIhAAsCNv/iAjgACwI6AAsCPP/AAj7/7AJA/8ACQgAMAkT/wAJr/8ACbf/AAnEACwKI/9cCk//wApX/8AKZ/8ACm//AAp3/wAKp/+ICq//AAq3/4gKxAAsCswALArUACwLD/8ACxP/AAsX/wALHAAsCyQALAs//wALV/9cC1//wAwP/8AMF//ADB//wAwn/8AML//ADDf/wAw//8AMR//ADE//wAxX/8AMX//ADGf/wAxv/wAMd/8ADH//AAyH/wAMj/8ADJf/AAyf/wAMp/8ADL//iAzH/4gMz/+IDNf/iAzf/4gM5/+IDO//iAz3/wAM//8ADQf/AA0P/4gNF/8ADVQALA1cACwNZAAsDWwALA3AADQNxAA0DcwANA3QADQN1AA0DfgANA38ADQPXAA0D2QAOA9r/9QPc/+wD3v/tA+b/7APq/+4D7P+/A/cADQAPAfcAFAH+ABACBf/wAgr/8AIP//ACEgAWAhwAEAJj/+YCef/wAnv/3AKIABACjv/wArf/8ALR//AC1QAQAEwAR//uAEj/7gBJ/+4AS//uAFX/7gCq/+4Aq//uAKz/7gCt/+4Arv/uAMr/7gDM/+4Azv/uAND/7gDS/+4A1v/uANj/7gDa/+4A3P/uAN7/7gDg/+4A4v/uAOT/7gDm/+4BFv/uAUb/7gGc/+4Bof/uAbL/7gGz/+4B9wASAfj/7gH+AA4CBP/uAgX/4wIH/+4CCv/jAg3/uAIP/+MCE//uAhT/7gIX/+4CHAAOAjz/7gJA/+4CRP/uAmP/ugJr/+4Cbf/uAnn/4wJ7/9kCiAAOAo7/4wKZ/+4Cm//uAp3/7gKr/+4Ct//jAsP/7gLE/+4Cxf/uAs//7gLR/+MC1QAOAxv/7gMd/+4DH//uAyH/7gMj/+4DJf/uAyf/7gMp/+4DPf/uAz//7gNB/+4DRf/uACAAWv/AAF3/wADA/8AAwv/AATr/wAGj/8ABrf/AAgX/gAIG/8ACCv/uAg//8AIh/8ACJP/bAjj/wAI6/8ACQv/cAmP/RwJx/8ACef/uAnv/7gKO/+4Csf/AArP/wAK1/8ACt//uAscABwLJ//QC0f9/A1X/wANX/8ADWf/AA1v/wAAhAFr/9ABc//AAXf/0AMD/9ADC//QBOv/0AaP/9AGt//QB9//vAfn/8AH+//MCBv/0Agj/8AIP/+4CHP/zAiH/9AI4//QCOv/0Aln/8AJx//QCdf/wAoT/8AKI//MCn//wArH/9AKz//QCtf/0Ar//8ALV//MDVf/0A1f/9ANZ//QDW//0AAoABv/WAAv/1gFm/9YDcP/WA3H/1gNz/9YDdP/WA3X/1gN+/9YDf//WABUAXP/gAfn/4AIF/3YCCP/gAgr/wgIP/9MCJP/ZAkL/2wJZ/+ACY/8eAnX/4AJ5/8ICe//tAoT/4AKO/8ICn//gArf/wgK//+ACx//wAsn/8gLR/1YADQIF/2QCCv/SAg//2QIk/9kCQv/bAmP/HgJ5/9ICe//tAo7/0gK3/9ICx//wAsn/8gLR/1YACgHv/8MCBf/PAg//1AJj/84Cev/nAn7/3wLG/9ECyP/sAtD/oALR/9EACQIF/2oCD//GAiT/2QJC/9sCY/8eAnv/7QLH//ACyf/yAtH/VgAJAA0AFABBABEAVv/iAGEAEwPc/9kD3v/ZA+b/2QPq/9kD7P+0AAoABv/XAAv/1wFm/9cDcP/XA3H/1wNz/9cDdP/XA3X/1wN+/9cDf//XABQAW//BAZb/xQG0/7QB9P/XAgX/uQIP/+kCJP+yAj7/0gJC/8gCY/+gAnv/xQKa/+QCx//MAsn/zALR/8sC0v/vA9z/5wPe/+cD5v/mA+r/6AA6AAT/xABW/78AW//RAG7/bAB+/24Aif9DAKn/rAC7/6EBlv+4AaX/fgGp/3sBsP+bAbH/eQG0/7IBtv9+Abj/fQG5/3wB1/+vAe8ADwH0/+QB9f+gAff/dAH6/4ACBf+yAg7/fQIP/7ICEP+AAhL/eQIVACgCIv99AiT/fwI+/2YCQv/aAlH/gQJT/5gCX/99AmP/swJp/6ACe/98An7/mgJ//2wCmv/mAsL/awLH/5ICyf+tAs3/ewLQAA8C0f+RAtL/8gPW//ED2f/xA9r/vAPc/7kD3v+5A+b/uQPq/7kD7P+vA/b/7QAGAbT/6gH3/+4CBf/WAg//7QJj/+wC0f/sABIB1/+uAe8AEgH1/+AB9/+tAfr/1gIO/98CEv/SAiL/4AI+/84CUf/dAlP/4gJf/+ACaf/gAnv/6QJ//9oCwv+9As3/3wLQABEAMABW/34AW/+dAG7+8QB+/vQAif6rAKn/XgC7/0sBlv9yAaX/DwGp/woBsP9BAbH/BwG0/2gBtv8PAbj/DgG5/wwB1/9jAe8ABQH0/70B9f9JAff+/gH6/xMCBf9oAg7/DgIP/2gCEP8TAhL/BwIVADACIv8OAiT/EQI+/ucCQv+sAlH/FQJT/zwCX/8OAmP/agJp/0kCe/8MAn7/PwJ//vECmv/AAsL+7wLH/zECyf9fAs3/CgLQAAUC0f8wAtL/1QACAff/aAI+/+4AFwGW/9QBqP/tAasAEQG0/+ABtv/nAbj/5QG5/+4B1wASAfT/6QIF/9cCY//XAnv/0wJ+/9YCf//FApr/5wLGAA0CyAAMAtH/1gLS//ID3P/pA97/5wPm/+cD6v/pAAECPv/xAAICBf/WA3H/iAAJAA0ADwBBAAwAVv/rAGEADgPc/+cD3v/nA+b/5wPq/+kD7P/LAB0AI/+vAFj/7wBb/98BR//u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AX4BfgAFAX8BfwAQAYIBggACAYMBgwADAYQBhAAcAYUBhQACAYYBhgAGAYcBhwARAYgBiAAHAYkBiQAFAYoBigAHAYsBiwAJAYwBjAACAY0BjgAHAZABkAAFAZIBkgALAZQBlAAMAZUBlQAQAZcBlwAPAZoBmgAHAZsBmwAQAZ4BngAWAaMBowAZAacBpwAWAa0BrQAZAa8BrwAXAbEBsQATAbwBvAAXAcMBxAAGAcYBxgAcAckBygAHAcsBywAIAcwBzQAdAc8BzwAJAdEB0QAeAdIB0gAHAdMB0wACAdUB1QADAdYB1gAcAdgB2AAGAdkB2QAPAdsB2wAHAd0B3QAJAd4B4AAHAeEB4QAFAeMB4wALAeQB5AAEAeUB5QAMAeYB5gAeAegB6AAPAekB6QAHAesB6wAHAe0B7QAdAe8B7wAdAfMB8wASAfYB9gAfAfgB+AAVAfkB+QAaAgECAQAXAgMCAwATAgQCBAAUAgYCBgAZAgcCBwATAggCCAAaAg0CDQAgAg8CDwAgAhACEAATAhMCFAAVAhYCFgAfAhwCHQAgAiECIQAZAiUCJQAdAiYCJgAgAikCKQACAjYCNgAXAjcCNwANAjgCOAAZAjkCOQANAjoCOgAZAlECUQATAlICUgAcAlMCUwAfAlQCVAAcAlgCWAAPAlkCWQAaAlwCXAAJAl4CXgAJAmACYAAJAmICYgAJAmQCZAAHAmwCbAAEAm0CbQAUAm4CbgAMAnACcAAQAnECcQAZAnICcgAQAnQCdAAPAnUCdQAaAn0CfQAWAoICggAHAoMCgwAPAoQChAAaAosCiwAHAo8CjwAHApECkQAHApICkgACApMCkwASApQClAACApUClQASApgCmAAGApkCmQAVApsCmwAVAp0CnQAVAp4CngAPAp8CnwAaAqgCqAAFAqkCqQAXAq0CrQAXAq8CrwATArACsAAeArECsQAZArICsgAeArMCswAZArQCtAAeArUCtQAZArgCuAAcArkCuQAfAr0CvQAfAr4CvgAPAr8CvwAaAtYC1gACAtcC1wASAuYC5gAHAucC5wAWAvgC+AAOAvoC+gAOAvwC/AAOAwIDAgACAwMDAwASAwQDBAACAwUDBQASAwYDBgACAwcDBwASAwgDCAACAwkDCQASAwoDCgACAwsDCwASAwwDDAACAw0DDQASAw4DDgACAw8DDwASAxADEAACAxEDEQASAxIDEgACAxMDEwASAxQDFAACAxUDFQASAxYDFgACAxcDFwASAxgDGAACAxkDGQASAxoDGgAGAxsDGwAVAxwDHAAGAx0DHQAVAx4DHgAGAx8DHwAVAyADIAAGAyEDIQAVAyIDIgAGAyMDIwAVAyQDJAAGAyUDJQAVAyYDJgAGAycDJwAVAygDKAAGAykDKQAVAyoDKgAHAywDLAAHAy4DLgAFAy8DLwAXAzADMAAFAzEDMQAXAzIDMgAFAzMDMwAXAzQDNAAFAzUDNQAXAzYDNgAFAzcDNwAXAzgDOAAFAzkDOQAXAzoDOgAFAzsDOwAXA0MDQwAXA0YDRgAIA0gDSAAIA1QDVAAQA1UDVQAZA1YDVgAQA1cDVwAZA1gDWAAQA1kDWQAZA1oDWgAQA1sDWwAZA1wDXAAFA3IDcgABA3YDdgABA3oDewABBDEEMQAEBDMENAAFAAEABgQwAAEAAAAAAAAAAAABAAAAAAAAAAAAFgAZABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAAAAAACAAAAAAAGgAAAAAAAAAAAAgAAAAIAAAAGwAJAAoACwAMABcADQAYAAAAAAAAAAAAAAAAAAMAAAAEAAQABAAAAAQAAAAAAAAAAAAAAAUABQAGAAUABAAAAAcAAAAOAA8AAAAcAA8AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgAAAAIAAoACgAKAAoADQAAAAAAAwADAAMAAwADAAMAAAAEAAQABAAEAAQAAAAAAAAAAAAAAAUABgAGAAYABgAGAAAAAAAOAA4ADgAOAA8AAAAPAAIAAwACAAMAAgADAAgABAAIAAQACAAEAAgABAAAAAQAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQACAAEAAgABAAIAAQACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABQAAAAUABQAAAAAACAAGAAgABgAIAAYACAAEAAAAAAAAAAAAAAAAABsABwAbAAcAGwAHABsABwAJAAAACQAAAAAAAAAKAA4ACgAOAAoADgAKAA4ACgAOAAoADgAMAAAADQAPAA0AGAAQABgAEAAYABAAAAAAAAAACAAEAAAADgAAAAAAAAAAAAAAAgADAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAHAAkAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAACAANAAAAAAACAAAAAAACAAAAGAAAAAgAAAAAAAIAAAAAAAAACAAAAAAAAAAAAA0AAAAXAAAAAAAAAA0ABAAAAAUAAAAOAAQAAAAPAAAAAAAAAAUAAAAAAAAAAAAAAA8AAAAGAAAAAAAEAAQAAAAOAAAAAAAAAAAAAAAOAAYADgAAAAAAAAAAAAAAAAAAAAkAAAAIAAAAAAAAABoAEQAAAAkAAAAAABUAAAACAAAAAAAAAAAAAAAXAAAAAAAAAAAAEQAAAAAACAAAAAAACAAJABUAAAAXAAAAEgAAAAAAAAAAAAAAAAAAAAAAAwAAAAAABQAAAAQAHAAAAAUABQAFABMABQAFAAYABQAFAAQAAAAPAAQAHAAFABQABQAFAAAAAAAFAAAABQAAAAQABAAAAAUABAAHAAAAAAAAABMABQAAAAUABQAPAAAACAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAGAAsADwALAA8ACAAEAAgAAAAIAAQACAAAAAgABAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAABcAHAAAAAAAAAAFAAAAAAAAAAAACQAAAAAABQAAAAUAAAAAAAgABAAIAAQACQAAAA0ADwANAAAAFwAcAAkAAAASABQAAAAAAAAAAAAAAAAAAAAAAAAAFwAcAAAAAAARABMAAAAFAAAABQASABQAAAAFAAAAAgADAAIAAwAAAAAAAAAEAAAABAAAAAQAFwAcAAAAAAAAAAAAAAAFAAAABQAIAAYACAAEAAgABgAAAAAAFQAPABUADwAVAA8AEgAUAAAABQAAAAUAAAAFABcAHAAAAAAAAAAEAAQABAAAAAAAAAAAABEAAAAAAAAACAAEAAAAAAAAAAAAEQATAAIAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAACAAMAAgADAAIAAwACAAMAAgADAAIAAwACAAMAAgADAAIAAwACAAMAAgADAAIAAwAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABAAIAAQACAAEAAgABgAIAAQACgAOAAoADgAAAA4AAAAOAAAADgAAAA4AAAAOAA0ADwANAA8ADQAPAA0ADwAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAGQAZAAAAAQABABYAAQABAAEAFgAAAAAAAAAWABYAAAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgAAAAIAAgAAAABAAAACgIGCBAABERGTFQAGmN5cmwASGdyZWsAdmxhdG4ApAAEAAAAAP//ABIAAAAKABQAHgAoADQAQQBLAFUAXwBpAHMAfQCHAJEAmwClAK8ABAAAAAD//wASAAEACwAVAB8AKQA1AEIATABWAGAAagB0AH4AiACSAJwApgCwAAQAAAAA//8AEgACAAwAFgAgACoANgBDAE0AVwBhAGsAdQB/AIkAkwCdAKcAsQAoAAZBWkUgAFRDUlQgAH5NT0wgAKhOQVYgANRST00gAQBUVVIgASwAAP//ABMAAwANABcAIQArADIANwBEAE4AWABiAGwAdgCAAIoAlACeAKgAsgAA//8AEgAEAA4AGAAiACwAOABFAE8AWQBjAG0AdwCBAIsAlQCfAKkAswAA//8AEgAFAA8AGQAjAC0AOQBGAFAAWgBkAG4AeACCAIwAlgCgAKoAtAAA//8AEwAGABAAGgAkAC4AOgA+AEcAUQBbAGUAbwB5AIMAjQCXAKEAqwC1AAD//wATAAcAEQAbACUALwA7AD8ASABSAFwAZgBwAHoAhACOAJgAogCsALYAAP//ABMACAASABwAJgAwADwAQABJAFMAXQBnAHEAewCFAI8AmQCjAK0AtwAA//8AEwAJABMAHQAnADEAMwA9AEoAVABeAGgAcgB8AIYAkACaAKQArgC4ALljMnNjBFhjMnNjBF5jMnNjBGRjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBkbGlnBHhkbGlnBH5kbGlnBIRkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbm9tBJBkbm9tBJZkbm9tBJxkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhsaWdhBLJsaWdhBLpsbnVtBMBsbnVtBMZsbnVtBMxsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsb2NsBNhsb2NsBN5sb2NsBORudW1yBOpudW1yBPBudW1yBPZudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxvbnVtBQJvbnVtBQhvbnVtBQ5vbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRwbnVtBRpwbnVtBSBwbnVtBSZwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxzbWNwBTJzbWNwBThzbWNwBT5zbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzczAxBUpzczAxBVBzczAxBVZzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAyBWJzczAyBWhzczAyBW5zczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAzBXpzczAzBYBzczAzBYZzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczA0BZJzczA0BZhzczA0BZ5zczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA1BapzczA1BbBzczA1BbZzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA2BcJzczA2BchzczA2Bc5zczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA3BdpzczA3BeBzczA3BeZzczA3BexzczA3BexzczA3BexzczA3BexzczA3BexzczA3BexzczA3Bex0bnVtBfJ0bnVtBfh0bnVtBf50bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgQAAAABAAEAAAABAAMAAAABAAIAAAABAAAAAAACAAgACQAAAAEADgAAAAEAEAAAAAEADwAAAAEADQAAAAEAQwAAAAEARQAAAAEARAAAAAEAQgAAAAMAPwBAAEEAAAACABEAEgAAAAEAEgAAAAEAPAAAAAEAPgAAAAEAPQAAAAEAOwAAAAEACgAAAAEADAAAAAEACwAAAAEARwAAAAEASQAAAAEASAAAAAEARgAAAAEAMAAAAAEAMgAAAAEAMQAAAAEALwAAAAEAOAAAAAEAOgAAAAEAOQAAAAEANwAAAAEABQAAAAEABwAAAAEABgAAAAEABAAAAAEAFAAAAAEAFgAAAAEAFQAAAAEAEwAAAAEAGAAAAAEAGgAAAAEAGQAAAAEAFwAAAAEAHAAAAAEAHgAAAAEAHQAAAAEAGwAAAAEAIAAAAAEAIgAAAAEAIQAAAAEAHwAAAAEAJAAAAAEAJgAAAAEAJQAAAAEAIwAAAAEAKAAAAAEAKgAAAAEAKQAAAAEAJwAAAAEALAAAAAEALgAAAAEALQAAAAEAKwAAAAEANAAAAAEANgAAAAEANQAAAAEAMwBLAJgAmACYAJgEJgQmBCYEJgcUB8AOUA5QDmYOiA6IDogOiA6+DuQPEg8SDxIPEg8mDyYPJg8mDzoPOg86DzoPTg9OD04PTg9gD2APYA9gD3oPeg96D3oPvA+8D7wPvA/aD9oP2g/aD/gP+A/4D/gQKhAqECoQKhBcEFwQXBBcEI4QohDuEMwQzBDMEMwQ7hDuEO4Q7hEaAAEAAAABAAgAAgHEAN8DvQPsA+sD6gPpA+gD5wPmA+UD5APjA+ID4QPgA98D3gPdA9wD2wPaA9kD2APXA9YD9gP3BKkDvAO7BFAEUQRSBFMEVARVBFcEWARZBFoEWwRcBF0EXgRfBE4EYARhBGIEYwRkBGUEZgRtBG4EbwRwBEwEcQRyBHMEdAR1BHYEdwR4BE0EeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMERASUBJUElgSXBJgEmQSaBJ0EnARPBJ4EnwSgBKEEogSjBKQEpQSmBKcEqAP+BFYEmwSqBKsErAStBK4ErwSwBLEEsgO6A7kEswS0BLUDuAS2BLcDtwS4A7YEuQPGBLoD0QS7BLwD0gS9A9MD1AS+BL8EwAP5BMED+ATCBMMExATFA/8EAAQBBMYExwQCBMgEAwTJBMoEBATLBAUEBgQHBMwECAQJBM0EzgTPBNAE0QTSBNMECgTcBNQECwQMBA0EDgQPBBAEEQQSBBMEFAQ4BBUEFgTVBBcEGAQZBNYEGgTXBNgEGwQcBB0EHgQfBCAE2QQhBCIE2gQjBNsEJAQlBCcEJgABAN8ACAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AZgBoAIMAhACFAIYAhwCIAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAnACdAJ4AnwCgAKIAwwDFAMcAyQDLAM0AzwDRANMA1QDXANkA2wDdAN8A4QDjAOUA5wDrAO0A7wDxAPMA9wD5APwA/gEAAQIBBgEIAQoBDwERARMBFQEXARkBGwEdAR8BIQEjASUBJwEpASsBLQEvATEBMwE1ATcBOQE7ATwBPgFAAU4BYgF5AXsBfAF9AX4BfwGAAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gJSAlQCWAJaAlwCXgJiAmQCagJsAnACcgJ0AnYCegJ8An4CgAKaAqICpAKqArADhwOOA5MDlgABAAAAAQAIAAIBdAC3A+wD6wPqA+kD6APnA+YD5QPkA+MD4gPhA+AD3wPeA90D3APbA9oD2QPYA9cD1gP2A/cEqQRQBFEEUgRTBFQEVQRXBFgEWQRaBFsEXARdBF4EXwROBGAEYQRiBGMEZARlBGYEbQRuBG8EcASmBHEEcgRzBHQEdQR2BHcEeARNBHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBEQElASVBJYElwSYBJkEmgSdBJwETwSeBJ8EoAShBKIEowSkBKUEpwSoA/4EVgSbBMgEAwTJBMoEBATLBAUEBgQHBMwECAQJBM0EzgTPBNAE0QTSBNMECgTcBNQECwQMBA0EDgQPBBAEEQQSBBMEFATAA/kEwQP4BMIEwwTEBMUD/wQABAEExgTHBAIEOAQVBBYE1QQXBBgEGQTWBBoE1wTYBBsEHAQdBB4EHwQgBNkEIQQiBNoEIwTbAAEAtwBFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AowCkAKUApgCnAKgAqgCrAKwArQCuAK8AsACxALIAswC0ALUAtgC3ALgAuQC8AL0AvgC/AMAAwgDEAMYAyADKAMwAzgDQANIA1ADWANgA2gDcAN4A4ADiAOQA5gDoAOwA7gDwAPIA9AD4APoA/QD/AQEBAwEHAQkBCwEQARIBFAEWARgBGgEcAR4BIAEiASQBJgEoASoBLAEuATABMgE0ATYBOAE6AT0BPwFBAU8BYwHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIQIiAlMCVQJZAlsCXQJfAmMCZQJrAm0CcQJzAnUCdwJ7An0CfwKBApsCowKlAqsCsQAGAAAABgASACoAQgBaAHIAigADAAAAAQASAAEAkAABAAAASgABAAEATQADAAAAAQASAAEAeAABAAAASgABAAEATgADAAAAAQASAAEAYAABAAAASgABAAEA8gADAAAAAQASAAEASAABAAAASgABAAECGQADAAAAAQASAAEAMAABAAAASgABAAECGwADAAAAAQASAAEAGAABAAAASgABAAEDLQACAAEBcQF1AAAABAAAAAEACAABBh4ANgByAKQArgC4AMoA/AEOARgBSgFkAX4BkAG6AewB9gIYAjICRAJ2AogCogLMAt4DEAMaAyQDNgNoA3IDfAOGA6ADugPMA/YEKAQyBFQEbgSABLIExATeBQgFGgUkBS4FOAVCBWwFlgXABeoGFAAGAA4AFAAaACAAJgAsAIMAAgFxAIQAAgFyAIYAAgFzAwQAAgF0AVQAAgF1AwIAAgF2AAEABALYAAIBdgABAAQAyQACAXIAAgAGAAwC2gACAXYC3AACA6sABgAOABQAGgAgACYALACLAAIBcQCMAAIBcgMeAAIBcwMcAAIBdAFWAAIBdQMaAAIBdgACAAYADAFKAAIBcgDlAAIDqwABAAQC3gACAXYABgAOABQAGgAgACYALACPAAIBcQCQAAIBcgDrAAIBcwMqAAIBdAFYAAIBdQMsAAIBdgADAAgADgAUAuAAAgFyAuIAAgF2APkAAgOrAAMACAAOABQA/AACAXIC5AACAXYA/gACA6sAAgAGAAwC5gACAXIC6AACAXYABQAMABIAGAAeACQBTAACAXEBBgACAXIAlAACAXMC6gACAXYBCAACA6sABgAOABQAGgAgACYALACVAAIBcQCWAAIBcgCYAAIBcwMwAAIBdAFaAAIBdQMuAAIBdgABAAQC7AACAXIABAAKABAAFgAcARcAAgFyAVwAAgF1Au4AAgF2ARkAAgOrAAMACAAOABQBHQACAXIC8AACAXYBYAACA6sAAgAGAAwC8gACAXYBYgACA6sABgAOABQAGgAgACYALACcAAIBcQCdAAIBcgErAAIBcwNIAAIBdAFeAAIBdQNGAAIBdgACAAYADAL0AAIBcwL2AAIBdgADAAgADgAUAvgAAgFxAvoAAgFyAv4AAgF2AAUADAASABgAHgAkA1QAAgFxAKAAAgFyA1oAAgFzA1gAAgF0A1YAAgF2AAIABgAMATwAAgFyAwAAAgF2AAYADgAUABoAIAAmACwAowACAXEApAACAXIApgACAXMDBQACAXQBVQACAXUDAwACAXYAAQAEAtkAAgF2AAEABADKAAIBcgACAAYADALbAAIBdgLdAAIDqwAGAA4AFAAaACAAJgAsAKsAAgFxAKwAAgFyAx8AAgFzAx0AAgF0AVcAAgF1AxsAAgF2AAEABAFLAAIBcgABAAQC3wACAXYAAQAEAy0AAgF2AAMACAAOABQC4QACAXIC4wACAXYA+gACA6sAAwAIAA4AFAD9AAIBcgLlAAIBdgD/AAIDqwACAAYADALnAAIBcgLpAAIBdgAFAAwAEgAYAB4AJAFNAAIBcQEHAAIBcgC0AAIBcwLrAAIBdgEJAAIDqwAGAA4AFAAaACAAJgAsALUAAgFxALYAAgFyALgAAgFzAzEAAgF0AVsAAgF1Ay8AAgF2AAEABALtAAIBcgAEAAoAEAAWABwBGAACAXIBXQACAXUC7wACAXYBGgACA6sAAwAIAA4AFAEeAAIBcgLxAAIBdgFhAAIDqwACAAYADALzAAIBdgFjAAIDqwAGAA4AFAAaACAAJgAsALwAAgFxAL0AAgFyASwAAgFzA0kAAgF0AV8AAgF1A0cAAgF2AAIABgAMAvUAAgFzAvcAAgF2AAMACAAOABQC+QACAXEC+wACAXIC/wACAXYABQAMABIAGAAeACQDVQACAXEAwAACAXIDWwACAXMDWQACAXQDVwACAXYAAgAGAAwBPQACAXIDAQACAXYAAQAEAVAAAgFyAAEABAFSAAIBcgABAAQBUQACAXIAAQAEAVMAAgFyAAUADAASABgAHgAkAK8AAgFxALAAAgFyAOwAAgFzAysAAgF0AVkAAgF1AAUADAASABgAHgAkAz4AAgFxAzwAAgFyA0IAAgFzA0AAAgF0A0QAAgF2AAUADAASABgAHgAkAz8AAgFxAz0AAgFyA0MAAgFzA0EAAgF0A0UAAgF2AAUADAASABgAHgAkA0wAAgFxA0oAAgFyA1AAAgFzA04AAgF0A1IAAgF2AAUADAASABgAHgAkA00AAgFxA0sAAgFyA1EAAgFzA08AAgF0A1MAAgF2AAEABAHBAAIBcgACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAiQCJACwAmwCbAC0AqQCpAC4AuwC7AC8A9AD0ADABRQFIADEBwAHAADUAAQAAAAEACAABAAYAPwABAAIBIQEiAAEAAAABAAgAAgAOAAQE3QTeBN8E4AABAAQAxwDIANsA3AAEAAAAAQAIAAEAJgACAAoAHAACAAYADAOsAAIASgOxAAIAWAABAAQDsgACAFgAAQACAEoAVwAEAAAAAQAIAAEARAACAAoAFAABAAQDrQACAE0AAQAEA68AAgBNAAQAAAABAAgAAQAeAAIACgAUAAEABAOuAAIAUAABAAQDsAACAFAAAQACAEoDrAABAAAAAQAIAAEABgN5AAEAAQBLAAEAAAABAAgAAQAGAiIAAQABAaEAAQAAAAEACAABAAYDjAABAAEANgABAAAAAQAIAAIAHAACA8EDwAABAAAAAQAIAAIACgACA78DvgABAAIALwBPAAEAAAABAAgAAgAeAAwEMQQzBDIENAQ1BCgEKQQqA/sELAQtBC4AAQAMACcAKAArADMANQBGAEcASABLAFMAVABVAAEAAAABAAgAAgAMAAMELwQwBDAAAQADAEkASwP7AAEAAAABAAgAAgBmAAgERgQ2BDcEOQQ6BEIEQwRFAAEAAAABAAgAAgAWAAgAGwAVABQAHQAZABgAFwAWAAEACAP6BCsEZwRoBGkEagRrBGwAAQAAAAEACAACABYACARnBCsEbARrBGoEaQP6BGgAAQAIABQAFQAWABcAGAAZABsAHQABAAAAAQAIAAIAFgAIABUAFgAXABgAGQAbAB0AFAABAAgENgQ3BDkEOgRCBEMERQRGAAEAAAABAAgAAQAGA3AAAQABABMABgAAAAEACAADAAEAEgABAGYAAAABAAAASgACAAIDgwODAAADxwPQAAEAAQAAAAEACAACADwACgPQA88DzgPNA8wDywPKA8kDyAPHAAEAAAABAAgAAgAaAAoEOwB8AHUAdgQ8BD0EPgQ/BEAEQQACAAEAFAAdAAAAAQAAAAEACAACACYAEAPQA88DzgPNA8wDywPKA8kDyAPHBEkERwRKBEsESAThAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgDyAhkCGwMt",
+  "Roboto-Regular.ttf": "AAEAAAASAQAABAAgR0RFRtRX1FkAAg/sAAACREdQT1NKcuCzAAISMAAAUiRHU1VCw4aZEQACZFQAABfoT1MvMqCnsaYAAAGoAAAAYGNtYXBAmkl2AAAafAAAEshjdnQgJEEG5QAAL9wAAABMZnBnbWf0XKsAAC1EAAABvGdhc3AACAATAAIP4AAAAAxnbHlmHN2bBQAAOfAAAdM2aGRteDc4ERcAABWQAAAE7GhlYWT4RqsOAAABLAAAADZoaGVhCroKggAAAWQAAAAkaG10eOiEiIgAAAIIAAATiGxvY2HgyGepAAAwKAAACcZtYXhwBxIC+QAAAYgAAAAgbmFtZTVTY1kAAg0oAAACmHBvc3T/bQBkAAIPwAAAACBwcmVwdKCP7AAALwAAAADbAAEAAAACAACEKlnoXw889QAbCAAAAAAAxPARLgAAAADQ206a+hv91QkwCHMAAAAJAAIAAAAAAAAAAQAAB2z+DAAACUn6G/5KCTAAAQAAAAAAAAAAAAAAAAAABOIAAQAABOIAjwAWAFQABQABAAAAAAAOAAACAAIUAAYAAQADBIUBkAAFAAAFmgUzAAABHwWaBTMAAAPRAGYCAAAAAgAAAAAAAAAAAOAACv9QACF/AAAAIQAAAABHT09HAEAAAP/9BgD+AABmB5oCACAAAZ8AAAAABDoFsAAgACAAAgOMAGQAAAAAAAAAAAH7AAAB+wAAAg8AoAKPAIgE7QB3BH4AbgXcAGkE+QBlAWUAZwK8AIUCyAAmA3IAHASJAE4BkgAdAjUAJQIbAJADTAASBH4AcwR+AKoEfgBdBH4AXgR+ADUEfgCaBH4AhAR+AE0EfgBwBH4AZAHwAIYBsQApBBEASARkAJgELgCGA8cASwcvAGoFOAAcBPsAqQU1AHcFPwCpBIwAqQRsAKkFcwB6BbQAqQItALcEagA1BQQAqQROAKkG/ACpBbQAqQWAAHYFDACpBYAAbQTtAKgEvwBQBMYAMQUwAIwFFwAcBxkAPQUEADkEzgAPBMoAVgIfAJIDSAAoAh8ACQNYAEADnAAEAnkAOQRaAG0EfQCMBDAAXASDAF8EPQBdAscAPAR9AGAEaACMAfEAjQHp/78EDgCNAfEAnAcDAIsEagCMBJAAWwR9AIwEjABfArUAjAQgAF8CnQAJBGkAiAPgACEGAwArA/cAKQPJABYD9wBYArUAQAHzAK8CtQATBXEAgwHzAIsEYABpBKYAWwW0AGkE2AAfAesAkwToAFoDWABmBkkAWwOTAJMDwQBmBG4AfwZKAFoDqgB4Av0AggRGAGEC7wBCAu8APgKCAHsEiACaA+kAQwIWAJMB+wB0Au8AegOjAHoDwABmBdwAVQY1AFAGOQBvA8kARAd6//IERABZBYAAdgS6AKYEwgCLBsEATgSwAH4EkQBHBIgAWwScAJUFmgAdAfoAmwRzAJoETwAiAikAIgWLAKIEiACRB6EAaAdEAGEB/ACgBYcAXQK5/+QFfgBlBJIAWwWQAIwE8wCIAgP/tAQ3AGIDxACpA40AjAOrAHgDagCBAfEAjQKtAHkCKgAyA8YAewL8AF4CWgB+AAD8pwAA/W8AAPyLAAD9XgAA/CcB7/04Ag0AtwQLAHECFwCTBHMAsQWkAB8FcQBnBT4AMgSRAHgFtQCyBJEARQW7AE0FiQBaBVIAcQSFAGQEvQCgBAIALgSIAGAEUABjBCUAbQSIAJEEjgB6ApcAwwRuACUD7ABlBMQAKQSIAJEETQBlBIgAYAQsAFEEXQCPBaMAVwWaAF8GlwB6BKEAeQRC/9oGSABKBf8AKgVkAHsIkQAxCKQAsQaCAD4FtACwBQsAogYEADIHQwAbBL8AUAW0ALEFqQAvBQcATQYsAFMF2QCvBXoAlgeHALAHwACwBhIAEAbrALIFBQCjBWQAkwcnALcFGABZBGwAYQSSAJ0DWwCaBNQALgYgABUEEABYBJ4AnARSAJwEoAAsBe8AnQSdAJwEngCcA9gAKAXNAGQEvQCcBFkAZwZ4AJwGngCRBPcAHgY2AJ0EWACdBE0AZAaHAJ0EZAAvBGj/6ARNAGcGyQAnBuQAnASJ//0EngCcBwgAnAYrAIEEVv/cBysAtwX4AJkE0gAoBEYADwcLAMkGCwC8BtEAkwXhAJYJBAC2B9EAmwQjAFAD2wBMBXEAZwSLAFsFCgAWBAMALgVxAGcEiABbBwEAnAYkAH4HCACcBisAgQUyAHUERwBkBP0AdAAA/GcAAPxxAAD9ZgAA/aQAAPobAAD6LARW/9wFGwCoBIkAjARjAKIDkACRBNsAsQQFAJEFCQCjBH4AmgaMAEQFgwA+B88AqAW0AJEIMQCwBvQAkQXuAHEE0wBtBywANAVcAB8FbwCWBGoAgwVwAIoGLwA/BL3/3gUJAKMEWgCaBbIAsQSIAJEFhwBdBKgAaASoAGkEtwA6A0kAOwT2AFcGlABZBuQAZAZWADYFKwAxBEkAUgQHAHkHwQBEBnUAPwf7AKkGoQCQBPYAdgQdAGUFrQAjBSAARgVkAJYDIABvBBQAAAgpAAAEFAAACCkAAAK5AAACCgAAAVwAAAR/AAACMAAAAaIAAADRAAAAAAAAAjQAJQI0ACUFQACiBj8AkAOmAA0BmQBgAZkAMAGXACQBmQBPAtQAaALbADwCwQAkBGkARgSPAFcCsgCKA8QAlAVaAJQA9gAmB6oARAJmAGwCZgBZA6MAOwLvADYDYAB6BKYAWwZVAB8GkACnCHYAqAdjADkGKwCMBH4AXwXaAB8EIgAqBHQAIAVIAF0FTwAfBecAegPOAGgIOgCiBQEAZwUXAJgGJgBUBtcAZAbPAGMGagBZBI8AagWOAKkErwBFBJIAqATFAD8IOgBiAgz/sASCAGUEZACYBBEAPgQvAIUECAArAkwAtQKPAG4CAwBcBPMAPARuAB8EiwA8BtQAPAbUADwE7gA8BpsAXwAAAAAIMwBbCDUAXAQgADsEngBaAfz/tgGRAGcDpACDA54AgQOfAIED9ABpBA4AaQPz/14D7wBuA6QAgQH9AJ8EhQATBFAAigR8AGAEgACKA+YAigPLAIoErABjBOMAigHoAJcDzwArBFQAigO0AIoGAgCKBOMAigS7AGAEXACKBLsAWQRKAIoEIABDBCYAKAR8AHQEZwAUBhUAMQRUACYEKwANBCMARwLvAFAC7wB6Au8AQgLvAD4C7wA2Au8AWwLvAFYC7wA6Au8ATwLvAEkDlgCPArUAngQ6AB4EwwBkBUwAsQUkALIEEwCSBT0AsgQPAJIEIABDBDMAMAQ8ABYDrwCKBGcAFAS7AGAEZwAUA4kAPgTOAIoD7wA/BWcAYAUXAGAE8gB1BXIAJgR8AGAHQQAnB08AigV0ACgEzQCKBFkAigUkAC4GCwAfBD8ARwTsAIoETgCLBMEAJwQfACIFKACKBGoAPQZRAIoGrACKBR0ACAXxAIoETgCKBHsASwZ2AIoEhwBQBBEACwZHAB8EeQCLBQkAiwU3ACMFwgBgBF8ADQSoACYGYQAmBGoAPQRqAIoFwwACBMoAXgQ/AEcEuwBgBDMAMAPjAEIIIgCKBKsAKAR9AIwEMgBcBJMAWwSMAFsDeQBXBI0AjAScAFsEPQBdBH0AYAWBAH4FrgB+BZMAsgXgAH4F4wB+A9UAoASCAIMDrwCKBFgADwTPAD4C7wBQAu8ANgLvAFsC7wBWAu8AOgLvAE8C7wBJBGsAZQQuAEoGpABgBLkAggUAAHgCBv+0AgT/tAH7AJsB+//6AfsAmwH7AIYEUACKAfsAAAI1ACUFXQAlBV0AJQSGAAAExgAxAp3/9AU4ABwFOAAcBTgAHAU4ABwFOAAcBTgAHAU4ABwFNQB3BIwAqQSMAKkEjACpBIwAqQIt/+ACLQCwAi3/6QIt/9YFtACpBYAAdgWAAHYFgAB2BYAAdgWAAHYFMACMBTAAjAUwAIwFMACMBM4ADwRaAG0EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EMABcBD0AXQQ9AF0EPQBdBD0AXQH6/8YB+gCWAfr/zwH6/7wEagCMBJAAWwSQAFsEkABbBJAAWwSQAFsEaQCIBGkAiARpAIgEaQCIA8kAFgPJABYFOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FNQB3BDAAXAU1AHcEMABcBTUAdwQwAFwFNQB3BDAAXAU/AKkFGQBfBIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQVzAHoEfQBgBXMAegR9AGAFcwB6BH0AYAVzAHoEfQBgBbQAqQRoAIwCLf+3Afr/nQIt/7YB+v+cAi3/7AH6/9ICLQAYAfH/+wItAKoGlwC3A9oAjQRqADUCA/+0BQQAqQQOAI0ETgChAfEAkwROAKkB8QBXBE4AqQKHAJwETgCpAs0AnAW0AKkEagCMBbQAqQRqAIwFtACpBGoAjARq/7wFgAB2BJAAWwWAAHYEkABbBYAAdgSQAFsE7QCoArUAjATtAKgCtQBTBO0AqAK1AGMEvwBQBCAAXwS/AFAEIABfBL8AUAQgAF8EvwBQBCAAXwS/AFAEIABfBMYAMQKdAAkExgAxAp0ACQTGADECxQAJBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBxkAPQYDACsEzgAPA8kAFgTOAA8EygBWA/cAWATKAFYD9wBYBMoAVgP3AFgHev/yBsEATgWAAHYEiABbBID/vgSA/74EJgAoBIUAEwSFABMEhQATBIUAEwSFABMEhQATBIUAEwR8AGAD5gCKA+YAigPmAIoD5gCKAej/vgHoAI4B6P/HAej/tATjAIoEuwBgBLsAYAS7AGAEuwBgBLsAYAR8AHQEfAB0BHwAdAR8AHQEKwANBIUAEwSFABMEhQATBHwAYAR8AGAEfABgBHwAYASAAIoD5gCKA+YAigPmAIoD5gCKA+YAigSsAGMErABjBKwAYwSsAGME4wCKAej/lQHo/5QB6P/KAegABgHoAIkDzwArBFQAigO0AIIDtACKA7QAigO0AIoE4wCKBOMAigTjAIoEuwBgBLsAYAS7AGAESgCKBEoAigRKAIoEIABDBCAAQwQgAEMEIABDBCYAKAQmACgEJgAoBHwAdAR8AHQEfAB0BHwAdAR8AHQEfAB0BhUAMQQrAA0EKwANBCMARwQjAEcEIwBHBTgAHATw//AGGP/+ApEABAWU//oFMv94BWb//QKX/5sFOAAcBPsAqQSMAKkEygBWBbQAqQItALcFBACpBvwAqQW0AKkFgAB2BQwAqQTGADEEzgAPBQQAOQIt/9YEzgAPBIUAZARQAGMEiACRApcAwwRdAI8EcwCaBJAAWwSIAJoD4AAhA/cAKQKX/+YEXQCPBJAAWwRdAI8GlwB6BIwAqQRzALEEvwBQAi0AtwIt/9YEagA1BSQAsgUEAKkFBwBNBTgAHAT7AKkEcwCxBIwAqQW0ALEG/ACpBbQAqQWAAHYFtQCyBQwAqQU1AHcExgAxBQQAOQRaAG0EPQBdBJ4AnASQAFsEfQCMBDAAXAPJABYD9wApBD0AXQNbAJoEIABfAfEAjQH6/7wB6f+/BFIAnAPJABYHGQA9BgMAKwcZAD0GAwArBxkAPQYDACsEzgAPA8kAFgFlAGcCjwCIBB4AoAID/7QBmQAwBvwAqQcDAIsFOAAcBFoAbQSMAKkFtACxBD0AXQSeAJwFiQBaBZoAXwUKABYEA//7CFkAWwlJAHYEvwBQBBAAWAU1AHcEMABcBM4ADwQCAC4CLQC3B0MAGwYgABUCLQC3BTgAHARaAG0FOAAcBFoAbQd6//IGwQBOBIwAqQQ9AF0FhwBdBDcAYgQ3AGIHQwAbBiAAFQS/AFAEEABYBbQAsQSeAJwFtACxBJ4AnAWAAHYEkABbBXEAZwSLAFsFcQBnBIsAWwVkAJMETQBkBQcATQPJABYFBwBNA8kAFgUHAE0DyQAWBXoAlgRZAGcG6wCyBjYAnQUEADkD9wApBIMAXwWpAC8EoAAsBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBTgAHARa/8oFOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjP/wBD3/ugSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQItALcB+gCbAi0AowHxAIUFgAB2BJAAWwWAAHYEkABbBYAAdgSQAFsFgABHBJD/xAWAAHYEkABbBYAAdgSQAFsFgAB2BJAAWwV+AGUEkgBbBX4AZQSSAFsFfgBlBJIAWwV+AGUEkgBbBX4AZQSSAFsFMACMBGkAiAUwAIwEaQCIBZAAjATzAIgFkACMBPMAiAWQAIwE8wCIBZAAjATzAIgFkACMBPMAiATOAA8DyQAWBM4ADwPJABYEzgAPA8kAFgShAF8EoQBfBSQAsgRSAJwFtACpBJ0AnATGADED2AAoBQQAOQP3ACkFegCWBFkAZwV6AJYEWQBnBHMAsQNbAJoHQwAbBiAAFQYvAD8Evf/eBGgAjAUF/9QFBf/UBHMAAwNb//wFOAALBCf/0wW0ALEEngCcBbQAqQSdAJwG/ACpBe8AnQWpAC8EoAAsBM4ADwQCAC4FBAA5A/cAKQRQAGMEbAASBj8AkAR+AF0EfgBeBH4ANQR+AJoEkgBkBKYAhwVzAHoEfQBgBbQAqQRqAIwFOAAcBFoAOQSMAF8EPQApAi3/CgH6/vAFgAB2BJAAMwTtAFUCtf+LBTAAjARpACsEpv86BPsAqQR9AIwFPwCpBIMAXwU/AKkEgwBfBbQAqQRoAIwFBACpBA4AjQUEAKkEDgCNBE4AqQHxAIYG/ACpBwMAiwW0AKkEagCMBQwAqQR9AIwE7QCoArUAggS/AFAEIABfBMYAMQKdAAkFFwAcA+AAIQUXABwD4AAhBxkAPQYDACsEygBWA/cAWAXG/ngEhQATBCL/nwUf/7wCJP/ABMX/3wRn/1cE/P/4BIUAEwRQAIoD5gCKBCMARwTjAIoB6ACXBFQAigYCAIoEuwBgBFwAigQmACgEKwANBFQAJgHo/7QEKwANA+YAigOvAIoEIABDAegAlwHo/7QDzwArBFQAigQfACIEhQATBFAAigOvAIoD5gCKBOwAigYCAIoE4wCKBLsAYATOAIoEXACKBHwAYAQmACgEVAAmBD8ARwTjAIoEfABgBCsADQXDAAIE7ACKBB8AIgVnAGAFOAAcBFoAbQSMAKkEPQBdAAAAAQAABOQJCgQAAAICAgMGBQcGAgMDBAUCAgIEBQUFBQUFBQUFBQICBQUFBAgGBgYGBQUGBgIFBgUIBgYGBgYFBQYGCAYFBQIEAgQEAwUFBQUFAwUFAgIFAggFBQUFAwUDBQQHBAQEAwIDBgIFBQYFAgYEBwQEBQcEAwUDAwMFBAICAwQEBwcHBAgFBgUFCAUFBQUGAgUFAgYFCQgCBgMGBQYGAgUEBAQEAgMCBAMDAAAAAAACAgUCBQYGBgUGBQYGBgUFBQUFBQUFAwUEBQUFBQUFBgYHBQUHBwYKCgcGBgcIBQYGBgcHBggJBwgGBggGBQUEBQcFBQUFBwUFBAcFBQcHBgcFBQcFBQUICAUFCAcFCAcFBQgHCAcKCQUEBgUGBQYFCAcIBwYFBgAAAAAAAAUGBQUEBQUGBQcGCQYJCAcFCAYGBQYHBQYFBgUGBQUFBAYHCAcGBQUJBwkHBgUGBgYEBQkFCQMCAgUCAgEAAgIGBwQCAgICAwMDBQUDBAYBCQMDBAMEBQcHCggHBQcFBQYGBwQJBgYHCAgHBQYFBQUJAgUFBQUFAwMCBgUFCAgGBwAJCQUFAgIEBAQEBQQEBAIFBQUFBAQFBgIEBQQHBgUFBQUFBQUFBwUFBQMDAwMDAwMDAwMEAwUFBgYFBgUFBQUEBQUFBAUEBgYGBgUICAYFBQYHBQYFBQUGBQcIBgcFBQcFBQcFBgYGBQUHBQUGBQUFBQQJBQUFBQUEBQUFBQYGBgcHBAUEBQUDAwMDAwMDBQUHBQYCAgICAgIFAgIGBgUFAwYGBgYGBgYGBQUFBQICAgIGBgYGBgYGBgYGBQUFBQUFBQUFBQUFBQICAgIFBQUFBQUFBQUFBAQGBQYFBgUGBQYFBgUGBQYGBQUFBQUFBQUFBQYFBgUGBQYFBgUCAgICAgICAgIHBAUCBgUFAgUCBQMFAwYFBgUGBQUGBQYFBgUGAwYDBgMFBQUFBQUFBQUFBQMFAwUDBgUGBQYFBgUGBQYFCAcFBAUFBAUEBQQICAYFBQUFBQUF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sRCxUrG2sc2x5LH7shKyK7JEslCyXLJzsoqyobK6stGy6LL/sxizL7NGs12zdLOLs6Szu7PSs+m0ArQZtDC0R7RdtHO0jLSltLG0vbTUtOu1AbUatTC1RrVdtXa1jLWjtbq10LXmtf+2FrYttkO2XLZztou2ora4ts+25rdJt9+39rgNuCS4OrhRuGi4f7iVuKy43bj0uQq5Ibk4uU+5ZrnOulK6abp/upa6rLrDutq68bsIuxS7K7tCu1S7a7uCu5m7sLvHu9676bv0vAu8F7wjvDq8UbxdvGm8gLyXvKO8r7zEvPm9Bb0RvSi9P71LvVe9br2EvZS9q73Bvdi9774IviG+OL5Pvlu+Z75+vpS+q77Cvtm+7777vwe/E78fvza/TL9Yv2S/cL98v5O/n7+2v8y/47/5wBDAJ8BAwFnAcsCLwOjBTsFlwXzBk8GpwcLB2cHwwgfCHsI1wkvCYsJ5wpDCp8LKwvLDBcMcwzPDScNfw3jDkcOdw6nDwMPXw+3EBcQbxDHESMRhxHjEj8SmxL3E1MTtxQTFG8UxxUrFYcV3xY7F8cYIxh7GNcZMxmLGeMaOxqXHDsckxzrHUcdox3THi8eix7nH0Mfbx/HICMgUyCrINshLyFfIbsh6yJHIqMi/yNjI78j7yRHJKMk+yUrJYMlsyYLJjsmkybrJ0cnqygPKX8p2yozKpMq7ytLK6Mrzyv/LC8sXyyPLL8s7y1fLX8tny2/Ld8t/y4fLj8uXy5/Lp8uvy7fLv8vHy+DL+cwQzCfMPsxUzG/Md8x/zIfMj8yXzK/Mx8zezPXNDM0lzTzNp82vzcjN0M3Yze/OBs4OzhbOHs4mzj3ORc5NzlXOXc5lzm3Odc59zoXOjc6kzqzOtM8Hzw/PF88wz0fPT89Xz3DPeM+Pz6XPvM/Tz+rQAdAa0DPQStBh0GnQcdB90JTQnNCz0MrQ1tDi0PnRENEn0T7RRtFO0WfRgNGM0ZjRpNGw0bzRyNHQ0djR4NH30g7SFtIt0kTSW9J00nzShNKb0rLSy9LT0uzTBdMe0zfTT9Nm03zTldOu08fT4NPo0/DUCdQi1DvUU9Rq1IDUmdSx1MrU49T81RTVMdVO1VrVZtVu1XrVhtWS1Z7VtdXM1eXV/dYW1i7WR9Zf1njWkNar1sXW3tb31xDXKddC11vXdNeN16jXw9fP19vX8tgJ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AAUAJABIAAEA3gAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAkgCwALEAsgCzALQAtQC2ALcAuAC5ANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoASwBMAEyATgBOgE8AT4BPwFFAUYBfwGFAYoBjQJHAkgCSgJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgKDAoUChwKJAosCjQKPApECkwKVApcCmQKbAp0CnwKhAqMCpQKnAqkCqwKtAq8CsgK0ArYCuAK6ArwCvgLAAsICxQLHAskCywLNAs8C0QLTAtUC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8QLyAvQC9gNTA1QDVQNWA1cDWANZA1sDXANdA14DXwNgA2EDYgNkA2UDZgNnA2gDaQNqA3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DuwO9A78D1APaA+AESQRLBE8EVwRZBF4EagACAAAABAAOD84V8jViAAEDVAAEAAABpQrSCtIGggtwCoAK/g+aDAAGiA7uDu4MRg6gCiIO7g7uD5oKigaSDGYMRgrYCqwNUg8QCl4L4gsQDBYGmA22DbYNtgwgCxAKUAxMDbAMTAsQBqYN5gtwD5oLcAasBrIGvAbCBsgMTAbOBtgNtgb+BxQHKgcwB0YHTAdSB4QHigeQDcANwAe+Du4H4AgCDVIIMA7uDu4LJg7uDu4IRg3ADcAIeAiCCIwIpg1ICLgNsAjSCOgLEAkyCUwJaAloCxAJYgloCWgJaAtwDCAK2AxMCxAN5g1IDqAOoA1ICtIK0grSCtIK0gmKCbAJugnECeIJ9AoGChgK/g+aD5oPmg+aDGYLcAtwC3ALcAtwC3ALcAr+DAAMAAwADAAO7g7uDu4O7g7uD5oPmg+aD5oPmgxGDEYMRgxGDxAL4gviC+IL4gviC+IL4gwWDBYMFgwWDbYMIAwgDCAMIAwgDEwMTAtwC+ILcAviC3AL4gr+Cv4K/gr+D5oMAAwWDAAMFgwADBYMAAwWDAAMFg7uDbYO7g7uDu4O7g7uDEYOoAoiCiIKIgoiDu4Ntg7uDbYO7g22DbYPmgwgD5oMIA+aDCAKUApQClAMZgxmDGYMRgxGDEYMRgxGDEYKrA8QDEwPEApeCl4KXgtwDAAO7g7uD5oPEAtwCoAMAApeDu4O7g6gDu4O7g+aCooMZg8QDVIO7g8QDbYMIAxMDCAMAA3mDu4O7gxGDqAOoAsmC3AKgA3mDAAO7g7uD5oKigr+DGYNUgviDBYMIAsQDEwNsAwWDUgMTAqsCqwKrA8QDEwK0grSCtIO7g22C3AL4gwADBYK2AxMCv4PEAxMDu4NUg2wDu4LcAviC3AL4gwADBYMFgwWDVINsA+aDCAMIAsQCyYMTAsmDEwLJgxMDVINsAtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gwADBYMAAwWDAAMFgwADBYMAAwWDAAMFgwADBYMAAwWDu4O7g+aDCAPmgwgD5oMIA+aDCAPmgwgD5oMIA+aDCAMIAxGDEYPEAxMDxAMTA8QDEwOoA7uDGYNUg2wDeYNSA1SDbANtg3ADeYOoA7uDu4PEA+aAAIAhwAGAAYAAAALAAsAAQATABMAAgAlACoAAwAsADUACQA4AD4AEwBFAEYAGgBJAEoAHABMAEwAHgBRAFQAHwBWAFYAIwBaAFoAJABcAF0AJQCKAIoAJwCcAJwAKACwALQAKQC2ALgALgC6ALoAMQC8AL0AMgC/AMAANADCAMQANgDGAMsAOQDRANEAPwDTAN0AQADfAN8ASwDhAOMATADlAOcATwDpAO0AUgDwAPAAVwD1APcAWAD6APsAWwD9AP8AXQEDAQQAYAEJAQkAYgEMAQwAYwEXARkAZAErAS0AZwEwATAAagEyATIAawFJAUkAbAFsAW0AbQFvAXEAbwG6AboAcgG9Ab0AcwHEAcUAdAHIAcgAdgHKAcsAdwHNAc0AeQIoAigAegIqAisAewJHAkgAfQJKAkoAfwJMAm0AgAJvAnIAogJ3AnwApgKBAokArAKLAosAtQKNAo0AtgKPAo8AtwKRApEAuAKTApwAuQKlAqcAwwKpAqkAxgKrAqsAxwKtAq0AyAKvAq8AyQKyArIAygK0ArQAywK2ArYAzAK4ArgAzQK6AroAzgK8ArwAzwK+AsoA0ALMAswA3QLOAs4A3gLQAtAA3wLbAtsA4ALdAt0A4QLfAt8A4gLh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BB7/6wQg/+sEIv/rBCT/6wQm/+sEKP/rBCr/6wQs/+sELv/rBDD/6wQy/+sENP/qBDb/6gQ4/+oEOv/qBDz/6gQ+/+oEQP/qBEL/6ARE/+gERv/oBE0AFAAfADj/1QA6/+QAO//sAD3/3QDR/9UA1f/VARj/5AEy/9UBOv/VAmb/3QLb/9UC3f/VAt//1QLt/+wC7//dAvH/3QNY/90DZ//dA2r/3QOO/9UDoP/sA6L/7AOk/+wDpv/dA7f/5AO//90EQf/dBEP/3QRF/90ETf/VBGr/3QAaADj/sAA6/+0APf/QANH/sADV/7ABGP/tATL/sAE6/7ACZv/QAtv/sALd/7AC3/+wAu//0ALx/9ADWP/QA2f/0ANq/9ADjv+wA6b/0AO3/+0Dv//QBEH/0ARD/9AERf/QBE3/sARq/9AAEAAu/+4AOf/uAmL/7gJj/+4CZP/uAmX/7gKy/+4C4f/uAuP/7gLl/+4C5//uAun/7gLr/+4Df//uBDP/7gQ1/+4ARwAGABAACwAQAEf/6ABI/+gASf/oAEv/6ABV/+gAk//oAJj/6AC6/+gAx//oAMj/6AD2/+gBAv/oAR3/6AEh/+gBOf/oAUv/6AFM/+gBVv/oAWwAEAFtABABbwAQAXAAEAFxABACbv/oAm//6AJw/+gCcf/oAnL/6AKK/+gCjP/oAo7/6AKQ/+gCkv/oApT/6AKW/+gCmP/oApr/6AKc/+gCnv/oAqD/6AKi/+gCpP/oA2v/6AOR/+gDlf/oA5j/6AOoABADqQAQA6wAEAOz/+gDuf/oA77/6APM/+gDzv/oA8//6APb/+gD7P/oBAj/6AQK/+gEDP/oBA7/6AQQ/+gEEv/oBBT/6AQW/+gEKv/oBCz/6AQu/+gEMv/oAAEAVgAEAAAAJgCmAZwB+gIUAlYCzAPCBLgFkgYsCMYKjAteDFQOGg5MDn4O/BDiEVgSKhRMFQIWaBciF6gYBhjIGT4ewBlQGqIc4B0CHhgelh7AHuoAAQAmAE8AWABbAF8AnAC0ALYAtwC4AL8AwgDDAMQAyQDLAMwAzQDRANUA1wDYANoA4gDmAOcA6ADpAOoA7ADuAPAA9QD3APoA/wECASEBbQA9AEf/7ABI/+wASf/sAEv/7ABV/+wAk//sAJj/7AC6/+wAx//sAMj/7AD2/+wBAv/sAR3/7AEh/+wBOf/sAUv/7AFM/+wBVv/sAm7/7AJv/+wCcP/sAnH/7AJy/+wCiv/sAoz/7AKO/+wCkP/sApL/7AKU/+wClv/sApj/7AKa/+wCnP/sAp7/7AKg/+wCov/sAqT/7ANr/+wDkf/sA5X/7AOY/+wDs//sA7n/7AO+/+wDzP/sA87/7APP/+wD2//sA+z/7AQI/+wECv/sBAz/7AQO/+wEEP/sBBL/7AQU/+wEFv/sBCr/7AQs/+wELv/sBDL/7AAXAFP/7AEX/+wCeP/sAnn/7AJ6/+wCe//sAnz/7ALG/+wCyP/sAsr/7ANx/+wDd//sA5P/7APZ/+wD3f/sBBz/7AQe/+wEIP/sBCL/7AQk/+wEJv/sBCj/7AQw/+wABgAQ/4QAEv+EAW7/hAFy/4QBdv+EAXf/hAAQAC7/7AA5/+wCYv/sAmP/7AJk/+wCZf/sArL/7ALh/+wC4//sAuX/7ALn/+wC6f/sAuv/7AN//+wEM//sBDX/7AAdAAb/8gAL//IAWv/zAF3/8wC8//MBGf/zAWz/8gFt//IBb//yAXD/8gFx//ICgf/zAoL/8wLw//MDc//zA5b/8wOf//MDp//zA6j/8gOp//IDrP/yA7j/8wPA//MD4f/zA+P/8wPl//MEQv/zBET/8wRG//MAPQAn//MAK//zADP/8wA1//MAg//zAJL/8wCX//MAsv/zANL/8wEH//MBFv/zARr/8wEc//MBHv/zASD/8wE4//MBVf/zAij/8wIp//MCK//zAiz/8wJT//MCXf/zAl7/8wJf//MCYP/zAmH/8wKJ//MCi//zAo3/8wKP//MCnf/zAp//8wKh//MCo//zAsX/8wLH//MCyf/zAvr/8wNX//MDZP/zA4r/8wON//MDuv/zA73/8wPY//MD2v/zA9z/8wQb//MEHf/zBB//8wQh//MEI//zBCX/8wQn//MEKf/zBCv/8wQt//MEL//zBDH/8wSq//MAPQAn/+YAK//mADP/5gA1/+YAg//mAJL/5gCX/+YAsv/mANL/5gEH/+YBFv/mARr/5gEc/+YBHv/mASD/5gE4/+YBVf/mAij/5gIp/+YCK//mAiz/5gJT/+YCXf/mAl7/5gJf/+YCYP/mAmH/5gKJ/+YCi//mAo3/5gKP/+YCnf/mAp//5gKh/+YCo//mAsX/5gLH/+YCyf/mAvr/5gNX/+YDZP/mA4r/5gON/+YDuv/mA73/5gPY/+YD2v/mA9z/5gQb/+YEHf/mBB//5gQh/+YEI//mBCX/5gQn/+YEKf/mBCv/5gQt/+YEL//mBDH/5gSq/+YANgAl/+QAPP/SAD3/0wCx/+QAs//kANn/0gEM/+QCTP/kAk3/5AJO/+QCT//kAlD/5AJR/+QCUv/kAmb/0wKD/+QChf/kAof/5ALv/9MC8f/TA1P/5ANY/9MDW//kA2f/0wNo/9IDav/TA4P/5AOP/9IDpv/TA6//5AO//9MDwv/SA8X/5APH/+QD0P/SA+r/0gPv/+QD8f/kA/P/5AP1/+QD9//kA/n/5AP7/+QD/f/kA///5AQB/+QEA//kBAX/5ARB/9MEQ//TBEX/0wRP/9IEV//SBGr/0wAmABD/HgAS/x4AJf/NALH/zQCz/80BDP/NAW7/HgFy/x4Bdv8eAXf/HgJM/80CTf/NAk7/zQJP/80CUP/NAlH/zQJS/80Cg//NAoX/zQKH/80DU//NA1v/zQOD/80Dr//NA8X/zQPH/80D7//NA/H/zQPz/80D9f/NA/f/zQP5/80D+//NA/3/zQP//80EAf/NBAP/zQQF/80ApgBH/9wASP/cAEn/3ABL/9wAUf/zAFL/8wBT/9YAVP/zAFX/3ABZ/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAMD/8wDH/9wAyP/cAMr/3QDr//MA7//zAPD/8wDy//MA8//zAPT/8wD2/9wA9//zAPn/8wD6//MA/f/zAP//8wEC/9wBBP/zARf/1gEZ/+EBHf/cASH/3AE1//MBOf/cAUT/8wFJ//MBS//cAUz/3AFW/9wCbv/cAm//3AJw/9wCcf/cAnL/3AJ3//MCeP/WAnn/1gJ6/9YCe//WAnz/1gJ9/90Cfv/dAn//3QKA/90Cgf/hAoL/4QKK/9wCjP/cAo7/3AKQ/9wCkv/cApT/3AKW/9wCmP/cApr/3AKc/9wCnv/cAqD/3AKi/9wCpP/cAr//8wLB//MCw//zAsT/8wLG/9YCyP/WAsr/1gLi/90C5P/dAub/3QLo/90C6v/dAuz/3QLw/+EDa//cA23/8wNv/90Dcf/WA3P/4QN2/90Dd//WA3j/3QOR/9wDkv/zA5P/1gOU//MDlf/cA5b/4QOY/9wDmf/zA57/8wOf/+EDp//hA67/8wOz/9wDtP/zA7j/4QO5/9wDvv/cA8D/4QPM/9wDzv/cA8//3APV//MD1//zA9n/1gPb/9wD3f/WA+H/4QPj/+ED5f/hA+n/8wPs/9wECP/cBAr/3AQM/9wEDv/cBBD/3AQS/9wEFP/cBBb/3AQc/9YEHv/WBCD/1gQi/9YEJP/WBCb/1gQo/9YEKv/cBCz/3AQu/9wEMP/WBDL/3AQ0/90ENv/dBDj/3QQ6/90EPP/dBD7/3QRA/90EQv/hBET/4QRG/+EESv/zBEz/8wRW//MEY//zBGX/8wRn//MAcQAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADH//AAyP/wAMr/7wD2//ABAv/wARn/3AEd//ABIf/wATn/8AFL//ABTP/wAVb/8AFs/9oBbf/aAW//2gFw/9oBcf/aAm7/8AJv//ACcP/wAnH/8AJy//ACff/vAn7/7wJ//+8CgP/vAoH/3AKC/9wCiv/wAoz/8AKO//ACkP/wApL/8AKU//AClv/wApj/8AKa//ACnP/wAp7/8AKg//ACov/wAqT/8ALi/+8C5P/vAub/7wLo/+8C6v/vAuz/7wLw/9wDa//wA2//7wNz/9wDdv/vA3j/7wOR//ADlf/wA5b/3AOY//ADn//cA6f/3AOo/9oDqf/aA6z/2gOz//ADuP/cA7n/8AO+//ADwP/cA8z/8APO//ADz//wA9v/8APh/9wD4//cA+X/3APs//AECP/wBAr/8AQM//AEDv/wBBD/8AQS//AEFP/wBBb/8AQq//AELP/wBC7/8AQy//AENP/vBDb/7wQ4/+8EOv/vBDz/7wQ+/+8EQP/vBEL/3ARE/9wERv/cADQABv+gAAv/oABZ//EAWv/FAF3/xQCa//EAvP/FAMr/8QEZ/8UBbP+gAW3/oAFv/6ABcP+gAXH/oAJ9//ECfv/xAn//8QKA//ECgf/FAoL/xQLi//EC5P/xAub/8QLo//EC6v/xAuz/8QLw/8UDb//xA3P/xQN2//EDeP/xA5b/xQOf/8UDp//FA6j/oAOp/6ADrP+gA7j/xQPA/8UD4f/FA+P/xQPl/8UENP/xBDb/8QQ4//EEOv/xBDz/8QQ+//EEQP/xBEL/xQRE/8UERv/FAD0AR//nAEj/5wBJ/+cAS//nAFX/5wCT/+cAmP/nALr/5wDH/+cAyP/nAPb/5wEC/+cBHf/nASH/5wE5/+cBS//nAUz/5wFW/+cCbv/nAm//5wJw/+cCcf/nAnL/5wKK/+cCjP/nAo7/5wKQ/+cCkv/nApT/5wKW/+cCmP/nApr/5wKc/+cCnv/nAqD/5wKi/+cCpP/nA2v/5wOR/+cDlf/nA5j/5wOz/+cDuf/nA77/5wPM/+cDzv/nA8//5wPb/+cD7P/nBAj/5wQK/+cEDP/nBA7/5wQQ/+cEEv/nBBT/5wQW/+cEKv/nBCz/5wQu/+cEMv/nAHEABgAMAAsADABH/+gASP/oAEn/6ABL/+gAU//qAFX/6ABaAAsAXQALAJP/6ACY/+gAuv/oALwACwDH/+gAyP/oAPb/6AEC/+gBF//qARkACwEd/+gBIf/oATn/6AFL/+gBTP/oAVb/6AFsAAwBbQAMAW8ADAFwAAwBcQAMAm7/6AJv/+gCcP/oAnH/6AJy/+gCeP/qAnn/6gJ6/+oCe//qAnz/6gKBAAsCggALAor/6AKM/+gCjv/oApD/6AKS/+gClP/oApb/6AKY/+gCmv/oApz/6AKe/+gCoP/oAqL/6AKk/+gCxv/qAsj/6gLK/+oC8AALA2v/6ANx/+oDcwALA3f/6gOR/+gDk//qA5X/6AOWAAsDmP/oA58ACwOnAAsDqAAMA6kADAOsAAwDs//oA7gACwO5/+gDvv/oA8AACwPM/+gDzv/oA8//6APZ/+oD2//oA93/6gPhAAsD4wALA+UACwPs/+gECP/oBAr/6AQM/+gEDv/oBBD/6AQS/+gEFP/oBBb/6AQc/+oEHv/qBCD/6gQi/+oEJP/qBCb/6gQo/+oEKv/oBCz/6AQu/+gEMP/qBDL/6ARCAAsERAALBEYACwAMAFz/7QBe/+0A7f/tAvP/7QL1/+0C9//tA5f/7QPD/+0D0f/tA+v/7QRQ/+0EWP/tAAwAXP/yAF7/8gDt//IC8//yAvX/8gL3//IDl//yA8P/8gPR//ID6//yBFD/8gRY//IAHwBa//QAXP/yAF3/9ABe//MAvP/0AO3/8gEZ//QCgf/0AoL/9ALw//QC8//zAvX/8wL3//MDc//0A5b/9AOX//IDn//0A6f/9AO4//QDwP/0A8P/8gPR//ID4f/0A+P/9APl//QD6//yBEL/9ARE//QERv/0BFD/8gRY//IAeQAG/8oAC//KADj/0gA6/9QAPP/0AD3/0wBR/9EAUv/RAFT/0QBa/+YAXP/vAF3/5gC8/+YAwP/RANH/0gDV/9IA2f/0AN3/7QDg/+EA6//RAO3/7wDv/9EA8P/RAPL/0QDz/9EA9P/RAPf/0QD5/9EA+v/RAP3/0QD//9EBBP/RARj/1AEZ/+YBMv/SATX/0QE6/9IBRP/RAUn/0QFs/8oBbf/KAW//ygFw/8oBcf/KAmb/0wJ3/9ECgf/mAoL/5gK//9ECwf/RAsP/0QLE/9EC2//SAt3/0gLf/9IC7//TAvD/5gLx/9MDWP/TA2f/0wNo//QDav/TA23/0QNz/+YDgv/tA47/0gOP//QDkv/RA5T/0QOW/+YDl//vA5n/0QOe/9EDn//mA6b/0wOn/+YDqP/KA6n/ygOs/8oDrv/RA7T/0QO3/9QDuP/mA7//0wPA/+YDwv/0A8P/7wPQ//QD0f/vA9X/0QPX/9ED4P/tA+H/5gPi/+0D4//mA+T/7QPl/+YD5v/hA+n/0QPq//QD6//vBEH/0wRC/+YEQ//TBET/5gRF/9MERv/mBEr/0QRM/9EETf/SBE//9ARQ/+8EUf/hBFP/4QRW/9EEV//0BFj/7wRj/9EEZf/RBGf/0QRq/9MAHQA4/74AWv/vAF3/7wC8/+8A0f++ANX/vgEZ/+8BMv++ATr/vgKB/+8Cgv/vAtv/vgLd/74C3/++AvD/7wNz/+8Djv++A5b/7wOf/+8Dp//vA7j/7wPA/+8D4f/vA+P/7wPl/+8EQv/vBET/7wRG/+8ETf++ADQAOP/mADr/5wA8//IAPf/nAFz/8QDR/+YA1f/mANn/8gDd/+4A4P/oAO3/8QEY/+cBMv/mATr/5gJm/+cC2//mAt3/5gLf/+YC7//nAvH/5wNY/+cDZ//nA2j/8gNq/+cDgv/uA47/5gOP//IDl//xA6b/5wO3/+cDv//nA8L/8gPD//ED0P/yA9H/8QPg/+4D4v/uA+T/7gPm/+gD6v/yA+v/8QRB/+cEQ//nBEX/5wRN/+YET//yBFD/8QRR/+gEU//oBFf/8gRY//EEav/nAIgAJQAQACf/6AAr/+gAM//oADX/6AA4/+AAOv/gAD3/3wCD/+gAkv/oAJf/6ACxABAAsv/oALMAEADR/+AA0v/oANMAEADV/+AA3AAQAOD/4QDxABAA+P/gAQMAEAEH/+gBDAAQARb/6AEY/+ABGv/oARz/6AEe/+gBIP/oATL/4AE4/+gBOv/gAVEAEAFV/+gCKP/oAin/6AIr/+gCLP/oAkwAEAJNABACTgAQAk8AEAJQABACUQAQAlIAEAJT/+gCXf/oAl7/6AJf/+gCYP/oAmH/6AJm/98CgwAQAoUAEAKHABACif/oAov/6AKN/+gCj//oAp3/6AKf/+gCof/oAqP/6ALF/+gCx//oAsn/6ALb/+AC3f/gAt//4ALv/98C8f/fAvr/6ANTABADV//oA1j/3wNbABADZP/oA2f/3wNq/98DgwAQA4r/6AON/+gDjv/gA6b/3wOvABADt//gA7r/6AO9/+gDv//fA8UAEAPHABAD2P/oA9r/6APc/+gD5v/hA+f/4APtABAD7gAQA+8AEAPxABAD8wAQA/UAEAP3ABAD+QAQA/sAEAP9ABAD/wAQBAEAEAQDABAEBQAQBBv/6AQd/+gEH//oBCH/6AQj/+gEJf/oBCf/6AQp/+gEK//oBC3/6AQv/+gEMf/oBEH/3wRD/98ERf/fBE3/4ARR/+EEUv/gBFP/4QRU/+AEaAAQBGkAEARq/98Eqv/oAC0AOP/xADr/9AA8//QAPf/wANH/8QDT//UA1f/xANn/9ADc//UA3f/zARj/9AEy//EBOv/xAVH/9QJm//AC2//xAt3/8QLf//EC7//wAvH/8ANY//ADZ//wA2j/9ANq//ADgv/zA47/8QOP//QDpv/wA7f/9AO///ADwv/0A9D/9APg//MD4v/zA+T/8wPq//QD7f/1BEH/8ARD//AERf/wBE3/8QRP//QEV//0BGj/9QRq//AAWQAlAA8AOP/mADr/5gA8AA4APf/mALEADwCzAA8A0f/mANMADgDV/+YA2QAOANwADgDdAAsA4P/lAPEADwD4/+gBAwAPAQwADwEY/+YBMv/mATr/5gFRAA4CTAAPAk0ADwJOAA8CTwAPAlAADwJRAA8CUgAPAmb/5gKDAA8ChQAPAocADwLb/+YC3f/mAt//5gLv/+YC8f/mA1MADwNY/+YDWwAPA2f/5gNoAA4Dav/mA4IACwODAA8Djv/mA48ADgOm/+YDrwAPA7f/5gO//+YDwgAOA8UADwPHAA8D0AAOA+AACwPiAAsD5AALA+b/5QPn/+gD6gAO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ABADogOiABADpAOkABADpgOmAA8DpwOnABkDqAOpAB0DrAOsAB0DrQOtAAIDrgOuABcDsAOwABMDsQOxAAUDswOzABYDtwO3AA0DuAO4ABkDvQO9AAQDvgO+ABQDvwO/AA8DwAPAABkDwQPBAAIDwgPCAA4DwwPDABsDxAPEAAIDxgPGABMDyAPIABMDywPLAAUDzAPMABYDzgPPABYD0APQAA4D0QPRABsD2APYAAMD2QPZABgD3QPdABgD3wPfABUD4APgABID4QPhABkD4gPiABID4wPjABkD5APkABID5QPlABkD6gPqAA4D6wPrABsD8APwABMD8gPyABMD9AP0ABMD9gP2ABMD+AP4ABMD+gP6ABMD/AP8ABMD/gP+ABMEAAQAABMEAgQCABMEBAQEABMEBgQGABMEBwQHAAUECAQIABYECQQJAAUECgQKABYECwQLAAUEDAQMABYEDQQNAAUEDgQOABYEDwQPAAUEEAQQABYEEQQRAAUEEgQSABYEEwQTAAUEFAQUABYEFQQVAAUEFgQWABYEFwQXAAIEGQQZAAIEGwQbAAMEHAQcABgEHQQdAAMEHgQeABgEHwQfAAMEIAQgABgEIQQhAAMEIgQiABgEIwQjAAMEJAQkABgEJQQlAAMEJgQmABgEJwQnAAMEKAQoABgEMAQwABgEMwQzAAwENQQ1AAwEQQRBAA8EQgRCABkEQwRDAA8ERAREABkERQRFAA8ERgRGABkESQRJAAkESwRLAAIETQRNAAYETwRPAA4EUARQABsEVQRVAAcEVgRWAAgEVwRXAA4EWARYABsEWwRbABcEXQRdAB8EXgReAAcEYARgAAkEZARkAAIEZgRmAAIEagRqAA8EqgSqAAMAAgFtAAYABgAHAAsACwAHABAAEAATABEAEQAXABIAEgATACUAJQARACcAJwAFACsAKwAFAC4ALgAcADMAMwAFADUANQAFADcANwAZADgAOAAKADkAOQAGADoAOgANADsAOwAJADwAPAASAD0APQAOAD4APgAUAEUARQAaAEcASQAVAEsASwAVAFEAUgAYAFMAUwAIAFQAVAAYAFUAVQAVAFcAVwAbAFkAWQALAFoAWgACAFwAXAAWAF0AXQACAF4AXgAMAIMAgwAFAJIAkgAFAJMAkwAVAJcAlwAFAJgAmAAVAJoAmgALALEAsQAR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b20EbGRub20EbGRub20EbGZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmxpZ2EEfGxpZ2EEhGxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxvY2wEkGxvY2wElmxvY2wEnG51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqHBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5AAAAAEAAAAAAAIAAgADAAAAAQAHAAAAAQAYAAAAAwAVABYAFwAAAAIACAAJAAAAAQAJAAAAAQAUAAAAAQAEAAAAAQAGAAAAAQAFAAAAAQAZAAAAAQARAAAAAQATAAAAAQABAAAAAQAKAAAAAQALAAAAAQAMAAAAAQANAAAAAQAOAAAAAQAPAAAAAQAQAAAAAQASABsAOAPGBrQHYA3wDfAOBg4oDl4OhA6yDsYO2g7uDwAPGg9cD3oPmA/KD/wQLhBCEHoQbBB6EKYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCRAI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTdAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYB/wTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNgE2QTbAhoE3AIOBNcCEwINBNoCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkcCSAJKAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CrwKyArQCtgK4AroCvAK+AsACwgLFAscCyQLLAs0CzwLRAtMC1QLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvIC9AL2A1MDVANVA1YDVwNYA1kDWwNcA10DXgNfA2ADYQNiA2QDZQNmA2cDaANpA2oDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwO7A70DvwPUA9oD4ARJBEsETwRXBFkEXgRqAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAv0DMAI7AfoEygTLAfsB/AH9Af4B/wIABM4EzwTRBNQE3QICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZA08DGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNQA1EDUgTJBMwEzQTQBNIE0wIBBNUEwQTCBMMExATFBMYExwTIBNYE2ATZAhgE2wIaBNwC/AIOBNcCEwINBNoCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSwJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoQChgKIAooCjAKOApACkgKUApYCmAKaApwCngKgAqICpAKmAqgCqgKsAq4CswK1ArcCuQK7Ar0CvwLBAsMCxgLIAsoCzALOAtAC0gLUAtYC2gLcAt4C4ALiAuQC5gLoAuoC7ALuAvAC8wL1AvcDkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwO8A74DwAPOA9UD2wPhBEcESgRMBFAEWARaBFsEXwRrAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAAAaAAEAAQBNAAMAAAABABIAAQB4AAEAAAAaAAEAAQBOAAMAAAABABIAAQBgAAEAAAAaAAEAAQKuAAMAAAABABIAAQBIAAEAAAAaAAEAAQObAAMAAAABABIAAQAwAAEAAAAaAAEAAQOdAAMAAAABABIAAQAYAAEAAAAaAAEAAQQaAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCTAACAKcCTQACAKgCTwACAKkD8QACAKoEewACAKsD7wACAKwAAQAEBIgAAgCsAAEABAKJAAIAqAACAAYADASKAAIArASMAAIBogAGAA4AFAAaACAAJgAsAlQAAgCnAlUAAgCoBAsAAgCpBAkAAgCqBH0AAgCrBAcAAgCsAAIABgAMBHcAAgCoAqMAAgGiAAEABASOAAIArAAGAA4AFAAaACAAJgAsAlgAAgCnAlkAAgCoAqcAAgCpBBcAAgCqBH8AAgCrBBkAAgCsAAMACAAOABQEkAACAKgEkgACAKwCtAACAaIAAwAIAA4AFAK2AAIAqASUAAIArAK4AAIBogACAAYADAOtAAIAqASWAAIArAAFAAwAEgAYAB4AJAR5AAIApwK+AAIAqAJcAAIAqQSYAAIArALAAAIBogAGAA4AFAAaACAAJgAsAl0AAgCnAl4AAgCoAmAAAgCpBB0AAgCqBIEAAgCrBBsAAgCsAAEABASaAAIAqAAEAAoAEAAWABwCywACAKgEgwACAKsEnAACAKwCzQACAaIAAwAIAA4AFALRAAIAqASeAAIArALXAAIBogACAAYADASgAAIArALbAAIBogAGAA4AFAAaACAAJgAsAmIAAgCnAmMAAgCoAuEAAgCpBDUAAgCqBIUAAgCrBDMAAgCsAAIABgAMBKIAAgCpBKQAAgCsAAMACAAOABQDoAACAKcDogACAKgEpgACAKwABQAMABIAGAAeACQDpgACAKcCZgACAKgERQACAKkEQwACAKoEQQACAKwAAgAGAAwC8gACAKgEqAACAKwABgAOABQAGgAgACYALAJnAAIApwJoAAIAqAJqAAIAqQPyAAIAqgR8AAIAqwPwAAIArAABAAQEiQACAKwAAQAEAooAAgCoAAIABgAMBIsAAgCsBI0AAgGiAAYADgAUABoAIAAmACwCbwACAKcCcAACAKgEDAACAKkECgACAKoEfgACAKsECAACAKwAAQAEBHgAAgCoAAEABASPAAIArAABAAQEGgACAKwAAwAIAA4AFASRAAIAqASTAAIArAK1AAIBogADAAgADgAUArcAAgCoBJUAAgCsArkAAgGiAAIABgAMA64AAgCoBJcAAgCsAAUADAASABgAHgAkBHoAAgCnAr8AAgCoAncAAgCpBJkAAgCsAsEAAgGiAAYADgAUABoAIAAmACwCeAACAKcCeQACAKgCewACAKkEHgACAKoEggACAKsEHAACAKwAAQAEBJsAAgCoAAQACgAQABYAHALMAAIAqASEAAIAqwSdAAIArALOAAIBogADAAgADgAUAtIAAgCoBJ8AAgCsAtgAAgGiAAIABgAMBKEAAgCsAtwAAgGiAAYADgAUABoAIAAmACwCfQACAKcCfgACAKgC4gACAKkENgACAKoEhgACAKsENAACAKwAAgAGAAwEowACAKkEpQACAKwAAwAIAA4AFAOhAAIApwOjAAIAqASnAAIArAAFAAwAEgAYAB4AJAOnAAIApwKBAAIAqARGAAIAqQREAAIAqgRCAAIArAACAAYADALzAAIAqASpAAIArAABAAQC+AACAKgAAQAEAvoAAgCoAAEABAL5AAIAqAABAAQC+wACAKgABQAMABIAGAAeACQCcwACAKcCdAACAKgCqAACAKkEGAACAKoEgAACAKsABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQELAACAKcEKgACAKgEMAACAKkELgACAKoEMgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwABQAMABIAGAAeACQEOgACAKcEOAACAKgEPgACAKkEPAACAKoEQAACAKwAAQAEBIcAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLVAtYAAQAAAAEACAACAA4ABATeBN8E4AThAAEABAKHAogCmQKaAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiECIgGuAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAiIAAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIwRxBHIEcwR0BHUEdgABAAAAAQAIAAIAFgAIBHYCIwRxBHIEcwR0Aa0EdQABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAAAaAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwJDAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKuA5sDnQQa"
+};
Index: public/vendors/datepicker/daterangepicker.css
===================================================================
--- public/vendors/datepicker/daterangepicker.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/datepicker/daterangepicker.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+.daterangepicker{position:absolute;color:inherit;background-color:#fff;border-radius:4px;border:1px solid #ddd;width:278px;max-width:none;padding:0;margin-top:7px;top:100px;left:20px;z-index:3001;display:none;font-family:arial;font-size:15px;line-height:1em}.daterangepicker:after,.daterangepicker:before{position:absolute;display:inline-block;content:''}.daterangepicker:before{top:-7px;border-right:7px solid transparent;border-left:7px solid transparent;border-bottom:7px solid #ccc}.daterangepicker:after{top:-6px;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent}.daterangepicker.opensleft:before{right:9px}.daterangepicker.opensleft:after{right:10px}.daterangepicker.openscenter:after,.daterangepicker.openscenter:before{left:0;right:0;width:0;margin-left:auto;margin-right:auto}.daterangepicker.opensright:before{left:9px}.daterangepicker.opensright:after{left:10px}.daterangepicker.drop-up{margin-top:-7px}.daterangepicker.drop-up:before{top:initial;bottom:-7px;border-bottom:initial;border-top:7px solid #ccc}.daterangepicker.drop-up:after{top:initial;bottom:-6px;border-bottom:initial;border-top:6px solid #fff}.daterangepicker.single .daterangepicker .ranges,.daterangepicker.single .drp-calendar{float:none}.daterangepicker.single .drp-selected{display:none}.daterangepicker.show-calendar .drp-buttons,.daterangepicker.show-calendar .drp-calendar{display:block}.daterangepicker.auto-apply .drp-buttons{display:none}.daterangepicker .drp-calendar{display:none;max-width:270px}.daterangepicker .drp-calendar.left{padding:8px 0 8px 8px}.daterangepicker .drp-calendar.right{padding:8px}.daterangepicker .drp-calendar.single .calendar-table{border:none}.daterangepicker .calendar-table .next span,.daterangepicker .calendar-table .prev span{color:#fff;border:solid #000;border-width:0 2px 2px 0;border-radius:0;display:inline-block;padding:3px}.daterangepicker .calendar-table .next span{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}.daterangepicker .calendar-table .prev span{transform:rotate(135deg);-webkit-transform:rotate(135deg)}.daterangepicker .calendar-table td,.daterangepicker .calendar-table th{text-align:center;vertical-align:middle;min-width:32px;width:32px;height:24px;line-height:24px;font-size:12px;border-radius:4px;border:1px solid transparent;white-space:nowrap;cursor:pointer}.daterangepicker .calendar-table{border:1px solid #fff;border-radius:4px;background-color:#fff}.daterangepicker .calendar-table table{width:100%;margin:0;border-spacing:0;border-collapse:collapse}.daterangepicker td.available:hover,.daterangepicker th.available:hover{background-color:#eee;border-color:transparent;color:inherit}.daterangepicker td.week,.daterangepicker th.week{font-size:80%;color:#ccc}.daterangepicker td.off,.daterangepicker td.off.end-date,.daterangepicker td.off.in-range,.daterangepicker td.off.start-date{background-color:#fff;border-color:transparent;color:#999}.daterangepicker td.in-range{background-color:#ebf4f8;border-color:transparent;color:#000;border-radius:0}.daterangepicker td.start-date{border-radius:4px 0 0 4px}.daterangepicker td.end-date{border-radius:0 4px 4px 0}.daterangepicker td.start-date.end-date{border-radius:4px}.daterangepicker td.active,.daterangepicker td.active:hover{background-color:#357ebd;border-color:transparent;color:#fff}.daterangepicker th.month{width:auto}.daterangepicker option.disabled,.daterangepicker td.disabled{color:#999;cursor:not-allowed;text-decoration:line-through}.daterangepicker select.monthselect,.daterangepicker select.yearselect{font-size:12px;padding:1px;height:auto;margin:0;cursor:default}.daterangepicker select.monthselect{margin-right:2%;width:56%}.daterangepicker select.yearselect{width:40%}.daterangepicker select.ampmselect,.daterangepicker select.hourselect,.daterangepicker select.minuteselect,.daterangepicker select.secondselect{width:50px;margin:0 auto;background:#eee;border:1px solid #eee;padding:2px;outline:0;font-size:12px}.daterangepicker .calendar-time{text-align:center;margin:4px auto 0;line-height:30px;position:relative}.daterangepicker .calendar-time select.disabled{color:#ccc;cursor:not-allowed}.daterangepicker .drp-buttons{clear:both;text-align:right;padding:8px;border-top:1px solid #ddd;display:none;line-height:12px;vertical-align:middle}.daterangepicker .drp-selected{display:inline-block;font-size:12px;padding-right:8px}.daterangepicker .drp-buttons .btn{margin-left:8px;font-size:12px;font-weight:700;padding:4px 8px}.daterangepicker.show-ranges .drp-calendar.left{border-left:1px solid #ddd}.daterangepicker .ranges{float:none;text-align:left;margin:0}.daterangepicker.show-calendar .ranges{margin-top:8px}.daterangepicker .ranges ul{list-style:none;margin:0 auto;padding:0;width:100%}.daterangepicker .ranges li{font-size:12px;padding:8px 12px;cursor:pointer}.daterangepicker .ranges li:hover{background-color:#eee}.daterangepicker .ranges li.active{background-color:#08c;color:#fff}@media (min-width:564px){.daterangepicker.ltr .drp-calendar.right .calendar-table,.daterangepicker.rtl .drp-calendar.left .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}.daterangepicker.ltr .drp-calendar.left .calendar-table,.daterangepicker.rtl .drp-calendar.right .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.daterangepicker{width:auto}.daterangepicker .ranges ul{width:140px}.daterangepicker.single .ranges ul{width:100%}.daterangepicker.single .drp-calendar.left{clear:none}.daterangepicker.single.ltr .drp-calendar,.daterangepicker.single.ltr .ranges{float:left}.daterangepicker.single.rtl .drp-calendar,.daterangepicker.single.rtl .ranges{float:right}.daterangepicker.ltr{direction:ltr;text-align:left}.daterangepicker.ltr .drp-calendar.left{clear:left;margin-right:0}.daterangepicker.ltr .drp-calendar.left .calendar-table{padding-right:8px}.daterangepicker.ltr .drp-calendar.right{margin-left:0}.daterangepicker.ltr .drp-calendar,.daterangepicker.ltr .ranges{float:left}.daterangepicker.rtl{direction:rtl;text-align:right}.daterangepicker.rtl .drp-calendar.left{clear:right;margin-left:0}.daterangepicker.rtl .drp-calendar.left .calendar-table{padding-left:12px}.daterangepicker.rtl .drp-calendar.right{margin-right:0}.daterangepicker.rtl .drp-calendar,.daterangepicker.rtl .ranges{text-align:right;float:right}}@media (min-width:730px){.daterangepicker .ranges{width:auto}.daterangepicker.ltr .ranges{float:left}.daterangepicker.rtl .ranges{float:right}.daterangepicker .drp-calendar.left{clear:none!important}}
Index: public/vendors/datepicker/daterangepicker.js
===================================================================
--- public/vendors/datepicker/daterangepicker.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/datepicker/daterangepicker.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function d(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function h(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,"toString")&&(e.toString=t.toString),m(t,"valueOf")&&(e.valueOf=t.valueOf),e}function y(e,t,n,s){return Ot(e,t,n,s,!0).utc()}function g(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function p(e){if(null==e._isValid){var t=g(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function v(e){var t=y(NaN);return null!=e?_(g(t),e):g(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var r=c.momentProperties=[];function w(e,t){var n,s,i;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=g(t)),l(t._locale)||(e._locale=t._locale),0<r.length)for(n=0;n<r.length;n++)l(i=t[s=r[n]])||(e[s]=i);return e}var t=!1;function M(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,c.updateOffset(this),t=!1)}function S(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function D(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function k(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=D(t)),n}function a(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&k(e[s])!==k(t[s]))&&a++;return a+r}function Y(e){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function n(i,r){var a=!0;return _(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,i),a){for(var e,t=[],n=0;n<arguments.length;n++){if(e="","object"==typeof arguments[n]){for(var s in e+="\n["+n+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[n];t.push(e)}Y(i+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,O={};function T(e,t){null!=c.deprecationHandler&&c.deprecationHandler(e,t),O[e]||(Y(t),O[e]=!0)}function x(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,t){var n,s=_({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},_(s[n],e[n]),_(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=_({},s[n]));return s}function P(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};var W={};function H(e,t){var n=e.toLowerCase();W[n]=W[n+"s"]=W[t]=e}function R(e){return"string"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function C(e){var t,n,s={};for(n in e)m(e,n)&&(t=R(n))&&(s[t]=e[n]);return s}var F={};function L(e,t){F[e]=t}function U(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},E={};function I(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(E[e]=i),t&&(E[t[0]]=function(){return U(i.apply(this,arguments),t[1],t[2])}),n&&(E[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function A(e,t){return e.isValid()?(t=j(t,e.localeData()),V[t]=V[t]||function(s){var e,i,t,r=s.match(N);for(e=0,i=r.length;e<i;e++)E[r[e]]?r[e]=E[r[e]]:r[e]=(t=r[e]).match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"");return function(e){var t,n="";for(t=0;t<i;t++)n+=x(r[t])?r[t].call(e,s):r[t];return n}}(t),V[t](e)):e.localeData().invalidDate()}function j(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(G.lastIndex=0;0<=n&&G.test(e);)e=e.replace(G,s),G.lastIndex=0,n-=1;return e}var Z=/\d/,z=/\d\d/,$=/\d{3}/,q=/\d{4}/,J=/[+-]?\d{6}/,B=/\d\d?/,Q=/\d\d\d\d?/,X=/\d\d\d\d\d\d?/,K=/\d{1,3}/,ee=/\d{1,4}/,te=/[+-]?\d{1,6}/,ne=/\d+/,se=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,re=/Z|[+-]\d\d(?::?\d\d)?/gi,ae=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,oe={};function ue(e,n,s){oe[e]=x(n)?n:function(e,t){return e&&s?s:n}}function le(e,t){return m(oe,e)?oe[e](t._strict,t._locale):new RegExp(de(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function de(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var he={};function ce(e,n){var t,s=n;for("string"==typeof e&&(e=[e]),d(n)&&(s=function(e,t){t[n]=k(e)}),t=0;t<e.length;t++)he[e[t]]=s}function fe(e,i){ce(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var me=0,_e=1,ye=2,ge=3,pe=4,ve=5,we=6,Me=7,Se=8;function De(e){return ke(e)?366:365}function ke(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),H("year","y"),L("year",1),ue("Y",se),ue("YY",B,z),ue("YYYY",ee,q),ue("YYYYY",te,J),ue("YYYYYY",te,J),ce(["YYYYY","YYYYYY"],me),ce("YYYY",function(e,t){t[me]=2===e.length?c.parseTwoDigitYear(e):k(e)}),ce("YY",function(e,t){t[me]=c.parseTwoDigitYear(e)}),ce("Y",function(e,t){t[me]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return k(e)+(68<k(e)?1900:2e3)};var Ye,Oe=Te("FullYear",!0);function Te(t,n){return function(e){return null!=e?(be(this,t,e),c.updateOffset(this,n),this):xe(this,t)}}function xe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function be(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ke(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Pe(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?ke(e)?29:28:31-s%7%2}Ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),H("month","M"),L("month",8),ue("M",B),ue("MM",B,z),ue("MMM",function(e,t){return t.monthsShortRegex(e)}),ue("MMMM",function(e,t){return t.monthsRegex(e)}),ce(["M","MM"],function(e,t){t[_e]=k(e)-1}),ce(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[_e]=i:g(n).invalidMonth=e});var We=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,He="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var Re="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ce(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=k(t);else if(!d(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Pe(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function Fe(e){return null!=e?(Ce(this,e),c.updateOffset(this,!0),this):xe(this,"Month")}var Le=ae;var Ue=ae;function Ne(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=y([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=de(s[t]),i[t]=de(i[t]);for(t=0;t<24;t++)r[t]=de(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ge(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&0<=e&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function Ve(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ee(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ve(e,s,i);return o<=0?a=De(r=e-1)+o:o>De(e)?(r=e+1,a=o-De(e)):(r=e,a=o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(De(e)-s+i)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),H("week","w"),H("isoWeek","W"),L("week",5),L("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=k(e)});I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),H("day","d"),H("weekday","e"),H("isoWeekday","E"),L("day",11),L("weekday",11),L("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=k(e)});var je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var ze="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var $e=ae;var qe=ae;var Je=ae;function Be(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=de(o[t]),u[t]=de(u[t]),l[t]=de(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Xe(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Ke(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Qe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+U(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),Xe("a",!0),Xe("A",!1),H("hour","h"),L("hour",13),ue("a",Ke),ue("A",Ke),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){var s=k(e);t[ge]=24===s?0:s}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=k(e),g(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s)),g(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i)),g(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i))});var et,tt=Te("Hours",!0),nt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:He,monthsShort:Re,week:{dow:0,doy:6},weekdays:je,weekdaysMin:ze,weekdaysShort:Ze,meridiemParse:/[ap]\.?m?\.?/i},st={},it={};function rt(e){return e?e.toLowerCase().replace("_","-"):e}function at(e){var t=null;if(!st[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=et._abbr,require("./locale/"+e),ot(t)}catch(e){}return st[e]}function ot(e,t){var n;return e&&((n=l(t)?lt(e):ut(e,t))?et=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),et._abbr}function ut(e,t){if(null!==t){var n,s=nt;if(t.abbr=e,null!=st[e])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=st[e]._config;else if(null!=t.parentLocale)if(null!=st[t.parentLocale])s=st[t.parentLocale]._config;else{if(null==(n=at(t.parentLocale)))return it[t.parentLocale]||(it[t.parentLocale]=[]),it[t.parentLocale].push({name:e,config:t}),null;s=n._config}return st[e]=new P(b(s,t)),it[e]&&it[e].forEach(function(e){ut(e.name,e.config)}),ot(e),st[e]}return delete st[e],null}function lt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return et;if(!o(e)){if(t=at(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=rt(e[r]).split("-")).length,n=(n=rt(e[r+1]))?n.split("-"):null;0<t;){if(s=at(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&a(i,n,!0)>=t-1)break;t--}r++}return et}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11<n[_e]?_e:n[ye]<1||n[ye]>Pe(n[me],n[_e])?ye:n[ge]<0||24<n[ge]||24===n[ge]&&(0!==n[pe]||0!==n[ve]||0!==n[we])?ge:n[pe]<0||59<n[pe]?pe:n[ve]<0||59<n[ve]?ve:n[we]<0||999<n[we]?we:-1,g(e)._overflowDayOfYear&&(t<me||ye<t)&&(t=ye),g(e)._overflowWeeks&&-1===t&&(t=Me),g(e)._overflowWeekday&&-1===t&&(t=Se),g(e).overflow=t),e}function ht(e,t,n){return null!=e?e:null!=t?t:n}function ct(e){var t,n,s,i,r,a=[];if(!e._d){var o,u;for(o=e,u=new Date(c.now()),s=o._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],e._w&&null==e._a[ye]&&null==e._a[_e]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ht(t.GG,e._a[me],Ie(Tt(),1,4).year),s=ht(t.W,1),((i=ht(t.E,1))<1||7<i)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=Ie(Tt(),r,a);n=ht(t.gg,e._a[me],l.year),s=ht(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r}s<1||s>Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ht(e._a[me],s[me]),(e._dayOfYear>De(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[pe]&&0===e._a[ve]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o=new Date(e,t,n,s,i,r,a);return e<100&&0<=e&&isFinite(o.getFullYear())&&o.setFullYear(e),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var ft=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/Z|[+-]\d\d(?::?\d\d)?/,yt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],gt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function vt(e){var t,n,s,i,r,a,o=e._i,u=ft.exec(o)||mt.exec(o);if(u){for(g(e).iso=!0,t=0,n=yt.length;t<n;t++)if(yt[t][1].exec(u[1])){i=yt[t][0],s=!1!==yt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[3])){r=(u[2]||" ")+gt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!_t.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),kt(e)}else e._isValid=!1}var wt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function Mt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),Re.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}var St={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dt(e){var t,n,s,i=wt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(i){var r=Mt(i[4],i[3],i[2],i[5],i[6],i[7]);if(t=i[1],n=r,s=e,t&&Ze.indexOf(t)!==new Date(n[0],n[1],n[2]).getDay()&&(g(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=r,e._tzm=function(e,t,n){if(e)return St[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(i[8],i[9],i[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),g(e).rfc2822=!0}else e._isValid=!1}function kt(e){if(e._f!==c.ISO_8601)if(e._f!==c.RFC_2822){e._a=[],g(e).empty=!0;var t,n,s,i,r,a,o,u,l=""+e._i,d=l.length,h=0;for(s=j(e._f,e._locale).match(N)||[],t=0;t<s.length;t++)i=s[t],(n=(l.match(le(i,e))||[])[0])&&(0<(r=l.substr(0,l.indexOf(n))).length&&g(e).unusedInput.push(r),l=l.slice(l.indexOf(n)+n.length),h+=n.length),E[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),a=i,u=e,null!=(o=n)&&m(he,a)&&he[a](o,u._a,u,a)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=d-h,0<l.length&&g(e).unusedInput.push(l),e._a[ge]<=12&&!0===g(e).bigHour&&0<e._a[ge]&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[ge]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[ge],e._meridiem),ct(e),dt(e)}else Dt(e);else vt(e)}function Yt(e){var t,n,s,i,r=e._i,a=e._f;return e._locale=e._locale||lt(e._l),null===r||void 0===a&&""===r?v({nullInput:!0}):("string"==typeof r&&(e._i=r=e._locale.preparse(r)),S(r)?new M(dt(r)):(h(r)?e._d=r:o(a)?function(e){var t,n,s,i,r;if(0===e._f.length)return g(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],kt(t),p(t)&&(r+=g(t).charsLeftOver,r+=10*g(t).unusedTokens.length,g(t).score=r,(null==s||r<s)&&(s=r,n=t));_(e,n||t)}(e):a?kt(e):l(n=(t=e)._i)?t._d=new Date(c.now()):h(n)?t._d=new Date(n.valueOf()):"string"==typeof n?(s=t,null===(i=pt.exec(s._i))?(vt(s),!1===s._isValid&&(delete s._isValid,Dt(s),!1===s._isValid&&(delete s._isValid,c.createFromInputFallback(s)))):s._d=new Date(+i[1])):o(n)?(t._a=f(n.slice(0),function(e){return parseInt(e,10)}),ct(t)):u(n)?function(e){if(!e._d){var t=C(e._i);e._a=f([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),ct(e)}}(t):d(n)?t._d=new Date(n):c.createFromInputFallback(t),p(e)||(e._d=null),e))}function Ot(e,t,n,s,i){var r,a={};return!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new M(dt(Yt(a))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function Tt(e,t,n,s){return Ot(e,t,n,s,!1)}c.createFromInputFallback=n("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var xt=n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:v()}),bt=n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:v()});function Pt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Tt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Wt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ht(e){var t=C(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ye.call(Wt,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<Wt.length;++s)if(e[Wt[s]]){if(n)return!1;parseFloat(e[Wt[s]])!==k(e[Wt[s]])&&(n=!0)}return!0}(t),this._milliseconds=+d+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=lt(),this._bubble()}function Rt(e){return e instanceof Ht}function Ct(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){I(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+U(~~(e/60),2)+n+U(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),ue("Z",re),ue("ZZ",re),ce(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Ut(re,e)});var Lt=/([\+\-]|\d\d)/gi;function Ut(e,t){var n=(t||"").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+"").match(Lt)||["-",0,0],i=60*s[1]+k(s[2]);return 0===i?0:"+"===s[0]?i:-i}function Nt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(S(e)||h(e)?e.valueOf():Tt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),c.updateOffset(n,!1),n):Tt(e).local()}function Gt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Vt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var Et=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,It=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function At(e,t){var n,s,i,r=e,a=null;return Rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:d(e)?(r={},t?r[t]=e:r.milliseconds=e):(a=Et.exec(e))?(n="-"===a[1]?-1:1,r={y:0,d:k(a[ye])*n,h:k(a[ge])*n,m:k(a[pe])*n,s:k(a[ve])*n,ms:k(Ct(1e3*a[we]))*n}):(a=It.exec(e))?(n="-"===a[1]?-1:(a[1],1),r={y:jt(a[2],n),M:jt(a[3],n),w:jt(a[4],n),d:jt(a[5],n),h:jt(a[6],n),m:jt(a[7],n),s:jt(a[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Nt(t,e),e.isBefore(t)?n=Zt(e,t):((n=Zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(Tt(r.from),Tt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ht(r),Rt(e)&&m(e,"_locale")&&(s._locale=e._locale),s}function jt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Zt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function zt(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(T(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),$t(this,At(e="string"==typeof e?+e:e,t),s),this}}function $t(e,t,n,s){var i=t._milliseconds,r=Ct(t._days),a=Ct(t._months);e.isValid()&&(s=null==s||s,a&&Ce(e,xe(e,"Month")+a*n),r&&be(e,"Date",xe(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&c.updateOffset(e,r||a))}At.fn=Ht.prototype,At.invalid=function(){return At(NaN)};var qt=zt(1,"add"),Jt=zt(-1,"subtract");function Bt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(n+1,"months")-s)))||0}function Qt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=lt(e))&&(this._locale=t),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Xt=n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Kt(){return this._locale}function en(e,t){I(0,[e,e.length],0,t)}function tn(e,t,n,s,i){var r;return null==e?Ie(this,s,i).year:((r=Ae(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),en("gggg","weekYear"),en("ggggg","weekYear"),en("GGGG","isoWeekYear"),en("GGGGG","isoWeekYear"),H("weekYear","gg"),H("isoWeekYear","GG"),L("weekYear",1),L("isoWeekYear",1),ue("G",se),ue("g",se),ue("GG",B,z),ue("gg",B,z),ue("GGGG",ee,q),ue("gggg",ee,q),ue("GGGGG",te,J),ue("ggggg",te,J),fe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=k(e)}),fe(["gg","GG"],function(e,t,n,s){t[s]=c.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),H("quarter","Q"),L("quarter",7),ue("Q",Z),ce("Q",function(e,t){t[_e]=3*(k(e)-1)}),I("D",["DD",2],"Do","date"),H("date","D"),L("date",9),ue("D",B),ue("DD",B,z),ue("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],ye),ce("Do",function(e,t){t[ye]=k(e.match(B)[0])});var nn=Te("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),H("dayOfYear","DDD"),L("dayOfYear",4),ue("DDD",K),ue("DDDD",$),ce(["DDD","DDDD"],function(e,t,n){n._dayOfYear=k(e)}),I("m",["mm",2],0,"minute"),H("minute","m"),L("minute",14),ue("m",B),ue("mm",B,z),ce(["m","mm"],pe);var sn=Te("Minutes",!1);I("s",["ss",2],0,"second"),H("second","s"),L("second",15),ue("s",B),ue("ss",B,z),ce(["s","ss"],ve);var rn,an=Te("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),H("millisecond","ms"),L("millisecond",16),ue("S",K,Z),ue("SS",K,z),ue("SSS",K,$),rn="SSSS";rn.length<=9;rn+="S")ue(rn,ne);function on(e,t){t[we]=k(1e3*("0."+e))}for(rn="S";rn.length<=9;rn+="S")ce(rn,on);var un=Te("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var ln=M.prototype;function dn(e){return e}ln.add=qt,ln.calendar=function(e,t){var n=e||Tt(),s=Nt(n,this).startOf("day"),i=c.calendarFormat(this,s)||"sameElse",r=t&&(x(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,Tt(n)))},ln.clone=function(){return new M(this)},ln.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Nt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=R(t)){case"year":r=Bt(this,s)/12;break;case"month":r=Bt(this,s);break;case"quarter":r=Bt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:D(r)},ln.endOf=function(e){return void 0===(e=R(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},ln.format=function(e){e||(e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var t=A(this,e);return this.localeData().postformat(t)},ln.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.fromNow=function(e){return this.from(Tt(),e)},ln.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.toNow=function(e){return this.to(Tt(),e)},ln.get=function(e){return x(this[e=R(e)])?this[e]():this},ln.invalidAt=function(){return g(this).overflow},ln.isAfter=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(l(t)?"millisecond":t))?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},ln.isBefore=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(l(t)?"millisecond":t))?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},ln.isBetween=function(e,t,n,s){return("("===(s=s||"()")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===s[1]?this.isBefore(t,n):!this.isAfter(t,n))},ln.isSame=function(e,t){var n,s=S(e)?e:Tt(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=R(t||"millisecond"))?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},ln.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},ln.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},ln.isValid=function(){return p(this)},ln.lang=Xt,ln.locale=Qt,ln.localeData=Kt,ln.max=bt,ln.min=xt,ln.parsingFlags=function(){return _({},g(this))},ln.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:F[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=C(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(x(this[e=R(e)]))return this[e](t);return this},ln.startOf=function(e){switch(e=R(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},ln.subtract=Jt,ln.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},ln.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},ln.toDate=function(){return new Date(this.valueOf())},ln.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?A(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):x(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",A(n,"Z")):A(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},ln.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+s+"-MM-DD[T]HH:mm:ss.SSS"+i)},ln.toJSON=function(){return this.isValid()?this.toISOString():null},ln.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},ln.unix=function(){return Math.floor(this.valueOf()/1e3)},ln.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},ln.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},ln.year=Oe,ln.isLeapYear=function(){return ke(this.year())},ln.weekYear=function(e){return tn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},ln.isoWeekYear=function(e){return tn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},ln.quarter=ln.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},ln.month=Fe,ln.daysInMonth=function(){return Pe(this.year(),this.month())},ln.week=ln.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},ln.isoWeek=ln.isoWeeks=function(e){var t=Ie(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},ln.weeksInYear=function(){var e=this.localeData()._week;return Ae(this.year(),e.dow,e.doy)},ln.isoWeeksInYear=function(){return Ae(this.year(),1,4)},ln.date=nn,ln.day=ln.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},ln.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},ln.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=(n=e,s=this.localeData(),"string"==typeof n?s.weekdaysParse(n)%7||7:isNaN(n)?null:n);return this.day(this.day()%7?t:t-7)}return this.day()||7;var n,s},ln.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},ln.hour=ln.hours=tt,ln.minute=ln.minutes=sn,ln.second=ln.seconds=an,ln.millisecond=ln.milliseconds=un,ln.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Ut(re,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Gt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?$t(this,At(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Gt(this)},ln.utc=function(e){return this.utcOffset(0,e)},ln.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Gt(this),"m")),this},ln.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Ut(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},ln.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Tt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},ln.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},ln.isLocal=function(){return!!this.isValid()&&!this._isUTC},ln.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},ln.isUtc=Vt,ln.isUTC=Vt,ln.zoneAbbr=function(){return this._isUTC?"UTC":""},ln.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},ln.dates=n("dates accessor is deprecated. Use date instead.",nn),ln.months=n("months accessor is deprecated. Use month instead",Fe),ln.years=n("years accessor is deprecated. Use year instead",Oe),ln.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),ln.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Yt(e))._a){var t=e._isUTC?y(e._a):Tt(e._a);this._isDSTShifted=this.isValid()&&0<a(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var hn=P.prototype;function cn(e,t,n,s){var i=lt(),r=y().set(s,t);return i[n](r,e)}function fn(e,t,n){if(d(e)&&(t=e,e=void 0),e=e||"",null!=t)return cn(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=cn(e,s,n,"month");return i}function mn(e,t,n,s){"boolean"==typeof e?d(t)&&(n=t,t=void 0):(t=e,e=!1,d(n=t)&&(n=t,t=void 0)),t=t||"";var i,r=lt(),a=e?r._week.dow:0;if(null!=n)return cn(t,(n+a)%7,s,"day");var o=[];for(i=0;i<7;i++)o[i]=cn(t,(i+a)%7,s,"day");return o}hn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return x(s)?s.call(t,n):s},hn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},hn.invalidDate=function(){return this._invalidDate},hn.ordinal=function(e){return this._ordinal.replace("%d",e)},hn.preparse=dn,hn.postformat=dn,hn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return x(i)?i(e,t,n,s):i.replace(/%d/i,e)},hn.pastFuture=function(e,t){var n=this._relativeTime[0<e?"future":"past"];return x(n)?n(t):n.replace(/%s/i,t)},hn.set=function(e){var t,n;for(n in e)x(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},hn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||We).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},hn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[We.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},hn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=y([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=y([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},hn.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Ue),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},hn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Le),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},hn.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},hn.firstDayOfYear=function(){return this._week.doy},hn.firstDayOfWeek=function(){return this._week.dow},hn.weekdays=function(e,t){return e?o(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:o(this._weekdays)?this._weekdays:this._weekdays.standalone},hn.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},hn.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},hn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=y([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=y([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".",".?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},hn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=$e),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},hn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=qe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},hn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Je),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},hn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},hn.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ot("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===k(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),c.lang=n("moment.lang is deprecated. Use moment.locale instead.",ot),c.langData=n("moment.langData is deprecated. Use moment.localeData instead.",lt);var _n=Math.abs;function yn(e,t,n,s){var i=At(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function gn(e){return e<0?Math.floor(e):Math.ceil(e)}function pn(e){return 4800*e/146097}function vn(e){return 146097*e/4800}function wn(e){return function(){return this.as(e)}}var Mn=wn("ms"),Sn=wn("s"),Dn=wn("m"),kn=wn("h"),Yn=wn("d"),On=wn("w"),Tn=wn("M"),xn=wn("y");function bn(e){return function(){return this.isValid()?this._data[e]:NaN}}var Pn=bn("milliseconds"),Wn=bn("seconds"),Hn=bn("minutes"),Rn=bn("hours"),Cn=bn("days"),Fn=bn("months"),Ln=bn("years");var Un=Math.round,Nn={ss:44,s:45,m:45,h:22,d:26,M:11};var Gn=Math.abs;function Vn(e){return(0<e)-(e<0)||+e}function En(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Gn(this._milliseconds)/1e3,s=Gn(this._days),i=Gn(this._months);t=D((e=D(n/60))/60),n%=60,e%=60;var r=D(i/12),a=i%=12,o=s,u=t,l=e,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=Vn(this._months)!==Vn(h)?"-":"",m=Vn(this._days)!==Vn(h)?"-":"",_=Vn(this._milliseconds)!==Vn(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(o?m+o+"D":"")+(u||l||d?"T":"")+(u?_+u+"H":"")+(l?_+l+"M":"")+(d?_+d+"S":"")}var In=Ht.prototype;return In.isValid=function(){return this._isValid},In.abs=function(){var e=this._data;return this._milliseconds=_n(this._milliseconds),this._days=_n(this._days),this._months=_n(this._months),e.milliseconds=_n(e.milliseconds),e.seconds=_n(e.seconds),e.minutes=_n(e.minutes),e.hours=_n(e.hours),e.months=_n(e.months),e.years=_n(e.years),this},In.add=function(e,t){return yn(this,e,t,1)},In.subtract=function(e,t){return yn(this,e,t,-1)},In.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=R(e))||"year"===e)return t=this._days+s/864e5,n=this._months+pn(t),"month"===e?n:n/12;switch(t=this._days+Math.round(vn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},In.asMilliseconds=Mn,In.asSeconds=Sn,In.asMinutes=Dn,In.asHours=kn,In.asDays=Yn,In.asWeeks=On,In.asMonths=Tn,In.asYears=xn,In.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},In._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*gn(vn(o)+a),o=a=0),u.milliseconds=r%1e3,e=D(r/1e3),u.seconds=e%60,t=D(e/60),u.minutes=t%60,n=D(t/60),u.hours=n%24,o+=i=D(pn(a+=D(n/24))),a-=gn(vn(i)),s=D(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},In.clone=function(){return At(this)},In.get=function(e){return e=R(e),this.isValid()?this[e+"s"]():NaN},In.milliseconds=Pn,In.seconds=Wn,In.minutes=Hn,In.hours=Rn,In.days=Cn,In.weeks=function(){return D(this.days()/7)},In.months=Fn,In.years=Ln,In.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,n,s,i,r,a,o,u,l,d,h,c=this.localeData(),f=(n=!e,s=c,i=At(t=this).abs(),r=Un(i.as("s")),a=Un(i.as("m")),o=Un(i.as("h")),u=Un(i.as("d")),l=Un(i.as("M")),d=Un(i.as("y")),(h=r<=Nn.ss&&["s",r]||r<Nn.s&&["ss",r]||a<=1&&["m"]||a<Nn.m&&["mm",a]||o<=1&&["h"]||o<Nn.h&&["hh",o]||u<=1&&["d"]||u<Nn.d&&["dd",u]||l<=1&&["M"]||l<Nn.M&&["MM",l]||d<=1&&["y"]||["yy",d])[2]=n,h[3]=0<+t,h[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,h));return e&&(f=c.pastFuture(+this,f)),c.postformat(f)},In.toISOString=En,In.toString=En,In.toJSON=En,In.locale=Qt,In.localeData=Kt,In.toIsoString=n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",En),In.lang=Xt,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ue("x",se),ue("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,n){n._d=new Date(k(e))}),c.version="2.22.1",e=Tt,c.fn=ln,c.min=function(){return Pt("isBefore",[].slice.call(arguments,0))},c.max=function(){return Pt("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=y,c.unix=function(e){return Tt(1e3*e)},c.months=function(e,t){return fn(e,t,"months")},c.isDate=h,c.locale=ot,c.invalid=v,c.duration=At,c.isMoment=S,c.weekdays=function(e,t,n){return mn(e,t,n,"weekdays")},c.parseZone=function(){return Tt.apply(null,arguments).parseZone()},c.localeData=lt,c.isDuration=Rt,c.monthsShort=function(e,t){return fn(e,t,"monthsShort")},c.weekdaysMin=function(e,t,n){return mn(e,t,n,"weekdaysMin")},c.defineLocale=ut,c.updateLocale=function(e,t){if(null!=t){var n,s,i=nt;null!=(s=at(e))&&(i=s._config),(n=new P(t=b(i,t))).parentLocale=st[e],st[e]=n,ot(e)}else null!=st[e]&&(null!=st[e].parentLocale?st[e]=st[e].parentLocale:null!=st[e]&&delete st[e]);return st[e]},c.locales=function(){return s(st)},c.weekdaysShort=function(e,t,n){return mn(e,t,n,"weekdaysShort")},c.normalizeUnits=R,c.relativeTimeRounding=function(e){return void 0===e?Un:"function"==typeof e&&(Un=e,!0)},c.relativeTimeThreshold=function(e,t){return void 0!==Nn[e]&&(void 0===t?Nn[e]:(Nn[e]=t,"s"===e&&(Nn.ss=t-1),!0))},c.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},c.prototype=ln,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},c});
+
+/**
+* @version: 3.0.3
+* @author: Dan Grossman http://www.dangrossman.info/
+* @copyright: Copyright (c) 2012-2018 Dan Grossman. All rights reserved.
+* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
+* @website: http://www.daterangepicker.com/
+*/
+
+!function(t,e){if("function"==typeof define&&define.amd)define(["moment","jquery"],function(t,a){return a.fn||(a.fn={}),"function"!=typeof t&&t.default&&(t=t.default),e(t,a)});else if("object"==typeof module&&module.exports){var a="undefined"!=typeof window?window.jQuery:void 0;a||(a=require("jquery")).fn||(a.fn={});var i="undefined"!=typeof window&&void 0!==window.moment?window.moment:require("moment");module.exports=e(i,a)}else t.daterangepicker=e(t.moment,t.jQuery)}(this,function(t,e){var a=function(a,i,s){if(this.parentEl="body",this.element=e(a),this.startDate=t().startOf("day"),this.endDate=t().endOf("day"),this.minDate=!1,this.maxDate=!1,this.maxSpan=!1,this.autoApply=!1,this.singleDatePicker=!1,this.showDropdowns=!1,this.minYear=t().subtract(100,"year").format("YYYY"),this.maxYear=t().add(100,"year").format("YYYY"),this.showWeekNumbers=!1,this.showISOWeekNumbers=!1,this.showCustomRangeLabel=!0,this.timePicker=!1,this.timePicker24Hour=!1,this.timePickerIncrement=1,this.timePickerSeconds=!1,this.linkedCalendars=!0,this.autoUpdateInput=!0,this.alwaysShowCalendars=!1,this.ranges={},this.opens="right",this.element.hasClass("pull-right")&&(this.opens="left"),this.drops="down",this.element.hasClass("dropup")&&(this.drops="up"),this.buttonClasses="btn btn-sm",this.applyButtonClasses="btn-primary",this.cancelButtonClasses="btn-default",this.locale={direction:"ltr",format:t.localeData().longDateFormat("L"),separator:" - ",applyLabel:"Apply",cancelLabel:"Cancel",weekLabel:"W",customRangeLabel:"Custom Range",daysOfWeek:t.weekdaysMin(),monthNames:t.monthsShort(),firstDay:t.localeData().firstDayOfWeek()},this.callback=function(){},this.isShowing=!1,this.leftCalendar={},this.rightCalendar={},"object"==typeof i&&null!==i||(i={}),"string"==typeof(i=e.extend(this.element.data(),i)).template||i.template instanceof e||(i.template='<div class="daterangepicker"><div class="ranges"></div><div class="drp-calendar left"><div class="calendar-table"></div><div class="calendar-time"></div></div><div class="drp-calendar right"><div class="calendar-table"></div><div class="calendar-time"></div></div><div class="drp-buttons"><span class="drp-selected"></span><button class="cancelBtn" type="button"></button><button class="applyBtn" disabled="disabled" type="button"></button> </div></div>'),this.parentEl=i.parentEl&&e(i.parentEl).length?e(i.parentEl):e(this.parentEl),this.container=e(i.template).appendTo(this.parentEl),"object"==typeof i.locale&&("string"==typeof i.locale.direction&&(this.locale.direction=i.locale.direction),"string"==typeof i.locale.format&&(this.locale.format=i.locale.format),"string"==typeof i.locale.separator&&(this.locale.separator=i.locale.separator),"object"==typeof i.locale.daysOfWeek&&(this.locale.daysOfWeek=i.locale.daysOfWeek.slice()),"object"==typeof i.locale.monthNames&&(this.locale.monthNames=i.locale.monthNames.slice()),"number"==typeof i.locale.firstDay&&(this.locale.firstDay=i.locale.firstDay),"string"==typeof i.locale.applyLabel&&(this.locale.applyLabel=i.locale.applyLabel),"string"==typeof i.locale.cancelLabel&&(this.locale.cancelLabel=i.locale.cancelLabel),"string"==typeof i.locale.weekLabel&&(this.locale.weekLabel=i.locale.weekLabel),"string"==typeof i.locale.customRangeLabel)){(f=document.createElement("textarea")).innerHTML=i.locale.customRangeLabel;var n=f.value;this.locale.customRangeLabel=n}if(this.container.addClass(this.locale.direction),"string"==typeof i.startDate&&(this.startDate=t(i.startDate,this.locale.format)),"string"==typeof i.endDate&&(this.endDate=t(i.endDate,this.locale.format)),"string"==typeof i.minDate&&(this.minDate=t(i.minDate,this.locale.format)),"string"==typeof i.maxDate&&(this.maxDate=t(i.maxDate,this.locale.format)),"object"==typeof i.startDate&&(this.startDate=t(i.startDate)),"object"==typeof i.endDate&&(this.endDate=t(i.endDate)),"object"==typeof i.minDate&&(this.minDate=t(i.minDate)),"object"==typeof i.maxDate&&(this.maxDate=t(i.maxDate)),this.minDate&&this.startDate.isBefore(this.minDate)&&(this.startDate=this.minDate.clone()),this.maxDate&&this.endDate.isAfter(this.maxDate)&&(this.endDate=this.maxDate.clone()),"string"==typeof i.applyButtonClasses&&(this.applyButtonClasses=i.applyButtonClasses),"string"==typeof i.applyClass&&(this.applyButtonClasses=i.applyClass),"string"==typeof i.cancelButtonClasses&&(this.cancelButtonClasses=i.cancelButtonClasses),"string"==typeof i.cancelClass&&(this.cancelButtonClasses=i.cancelClass),"object"==typeof i.maxSpan&&(this.maxSpan=i.maxSpan),"object"==typeof i.dateLimit&&(this.maxSpan=i.dateLimit),"string"==typeof i.opens&&(this.opens=i.opens),"string"==typeof i.drops&&(this.drops=i.drops),"boolean"==typeof i.showWeekNumbers&&(this.showWeekNumbers=i.showWeekNumbers),"boolean"==typeof i.showISOWeekNumbers&&(this.showISOWeekNumbers=i.showISOWeekNumbers),"string"==typeof i.buttonClasses&&(this.buttonClasses=i.buttonClasses),"object"==typeof i.buttonClasses&&(this.buttonClasses=i.buttonClasses.join(" ")),"boolean"==typeof i.showDropdowns&&(this.showDropdowns=i.showDropdowns),"number"==typeof i.minYear&&(this.minYear=i.minYear),"number"==typeof i.maxYear&&(this.maxYear=i.maxYear),"boolean"==typeof i.showCustomRangeLabel&&(this.showCustomRangeLabel=i.showCustomRangeLabel),"boolean"==typeof i.singleDatePicker&&(this.singleDatePicker=i.singleDatePicker,this.singleDatePicker&&(this.endDate=this.startDate.clone())),"boolean"==typeof i.timePicker&&(this.timePicker=i.timePicker),"boolean"==typeof i.timePickerSeconds&&(this.timePickerSeconds=i.timePickerSeconds),"number"==typeof i.timePickerIncrement&&(this.timePickerIncrement=i.timePickerIncrement),"boolean"==typeof i.timePicker24Hour&&(this.timePicker24Hour=i.timePicker24Hour),"boolean"==typeof i.autoApply&&(this.autoApply=i.autoApply),"boolean"==typeof i.autoUpdateInput&&(this.autoUpdateInput=i.autoUpdateInput),"boolean"==typeof i.linkedCalendars&&(this.linkedCalendars=i.linkedCalendars),"function"==typeof i.isInvalidDate&&(this.isInvalidDate=i.isInvalidDate),"function"==typeof i.isCustomDate&&(this.isCustomDate=i.isCustomDate),"boolean"==typeof i.alwaysShowCalendars&&(this.alwaysShowCalendars=i.alwaysShowCalendars),0!=this.locale.firstDay)for(var r=this.locale.firstDay;r>0;)this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()),r--;var o,h,l;if(void 0===i.startDate&&void 0===i.endDate&&e(this.element).is(":text")){var c=e(this.element).val(),d=c.split(this.locale.separator);o=h=null,2==d.length?(o=t(d[0],this.locale.format),h=t(d[1],this.locale.format)):this.singleDatePicker&&""!==c&&(o=t(c,this.locale.format),h=t(c,this.locale.format)),null!==o&&null!==h&&(this.setStartDate(o),this.setEndDate(h))}if("object"==typeof i.ranges){for(l in i.ranges){o="string"==typeof i.ranges[l][0]?t(i.ranges[l][0],this.locale.format):t(i.ranges[l][0]),h="string"==typeof i.ranges[l][1]?t(i.ranges[l][1],this.locale.format):t(i.ranges[l][1]),this.minDate&&o.isBefore(this.minDate)&&(o=this.minDate.clone());var m=this.maxDate;if(this.maxSpan&&m&&o.clone().add(this.maxSpan).isAfter(m)&&(m=o.clone().add(this.maxSpan)),m&&h.isAfter(m)&&(h=m.clone()),!(this.minDate&&h.isBefore(this.minDate,this.timepicker?"minute":"day")||m&&o.isAfter(m,this.timepicker?"minute":"day"))){var f;(f=document.createElement("textarea")).innerHTML=l;n=f.value;this.ranges[n]=[o,h]}}var p="<ul>";for(l in this.ranges)p+='<li data-range-key="'+l+'">'+l+"</li>";this.showCustomRangeLabel&&(p+='<li data-range-key="'+this.locale.customRangeLabel+'">'+this.locale.customRangeLabel+"</li>"),p+="</ul>",this.container.find(".ranges").prepend(p)}"function"==typeof s&&(this.callback=s),this.timePicker||(this.startDate=this.startDate.startOf("day"),this.endDate=this.endDate.endOf("day"),this.container.find(".calendar-time").hide()),this.timePicker&&this.autoApply&&(this.autoApply=!1),this.autoApply&&this.container.addClass("auto-apply"),"object"==typeof i.ranges&&this.container.addClass("show-ranges"),this.singleDatePicker&&(this.container.addClass("single"),this.container.find(".drp-calendar.left").addClass("single"),this.container.find(".drp-calendar.left").show(),this.container.find(".drp-calendar.right").hide(),this.timePicker||this.container.addClass("auto-apply")),(void 0===i.ranges&&!this.singleDatePicker||this.alwaysShowCalendars)&&this.container.addClass("show-calendar"),this.container.addClass("opens"+this.opens),this.container.find(".applyBtn, .cancelBtn").addClass(this.buttonClasses),this.applyButtonClasses.length&&this.container.find(".applyBtn").addClass(this.applyButtonClasses),this.cancelButtonClasses.length&&this.container.find(".cancelBtn").addClass(this.cancelButtonClasses),this.container.find(".applyBtn").html(this.locale.applyLabel),this.container.find(".cancelBtn").html(this.locale.cancelLabel),this.container.find(".drp-calendar").on("click.daterangepicker",".prev",e.proxy(this.clickPrev,this)).on("click.daterangepicker",".next",e.proxy(this.clickNext,this)).on("mousedown.daterangepicker","td.available",e.proxy(this.clickDate,this)).on("mouseenter.daterangepicker","td.available",e.proxy(this.hoverDate,this)).on("change.daterangepicker","select.yearselect",e.proxy(this.monthOrYearChanged,this)).on("change.daterangepicker","select.monthselect",e.proxy(this.monthOrYearChanged,this)).on("change.daterangepicker","select.hourselect,select.minuteselect,select.secondselect,select.ampmselect",e.proxy(this.timeChanged,this)),this.container.find(".ranges").on("click.daterangepicker","li",e.proxy(this.clickRange,this)),this.container.find(".drp-buttons").on("click.daterangepicker","button.applyBtn",e.proxy(this.clickApply,this)).on("click.daterangepicker","button.cancelBtn",e.proxy(this.clickCancel,this)),this.element.is("input")||this.element.is("button")?this.element.on({"click.daterangepicker":e.proxy(this.show,this),"focus.daterangepicker":e.proxy(this.show,this),"keyup.daterangepicker":e.proxy(this.elementChanged,this),"keydown.daterangepicker":e.proxy(this.keydown,this)}):(this.element.on("click.daterangepicker",e.proxy(this.toggle,this)),this.element.on("keydown.daterangepicker",e.proxy(this.toggle,this))),this.updateElement()};return a.prototype={constructor:a,setStartDate:function(e){"string"==typeof e&&(this.startDate=t(e,this.locale.format)),"object"==typeof e&&(this.startDate=t(e)),this.timePicker||(this.startDate=this.startDate.startOf("day")),this.timePicker&&this.timePickerIncrement&&this.startDate.minute(Math.round(this.startDate.minute()/this.timePickerIncrement)*this.timePickerIncrement),this.minDate&&this.startDate.isBefore(this.minDate)&&(this.startDate=this.minDate.clone(),this.timePicker&&this.timePickerIncrement&&this.startDate.minute(Math.round(this.startDate.minute()/this.timePickerIncrement)*this.timePickerIncrement)),this.maxDate&&this.startDate.isAfter(this.maxDate)&&(this.startDate=this.maxDate.clone(),this.timePicker&&this.timePickerIncrement&&this.startDate.minute(Math.floor(this.startDate.minute()/this.timePickerIncrement)*this.timePickerIncrement)),this.isShowing||this.updateElement(),this.updateMonthsInView()},setEndDate:function(e){"string"==typeof e&&(this.endDate=t(e,this.locale.format)),"object"==typeof e&&(this.endDate=t(e)),this.timePicker||(this.endDate=this.endDate.add(1,"d").startOf("day").subtract(1,"second")),this.timePicker&&this.timePickerIncrement&&this.endDate.minute(Math.round(this.endDate.minute()/this.timePickerIncrement)*this.timePickerIncrement),this.endDate.isBefore(this.startDate)&&(this.endDate=this.startDate.clone()),this.maxDate&&this.endDate.isAfter(this.maxDate)&&(this.endDate=this.maxDate.clone()),this.maxSpan&&this.startDate.clone().add(this.maxSpan).isBefore(this.endDate)&&(this.endDate=this.startDate.clone().add(this.maxSpan)),this.previousRightTime=this.endDate.clone(),this.container.find(".drp-selected").html(this.startDate.format(this.locale.format)+this.locale.separator+this.endDate.format(this.locale.format)),this.isShowing||this.updateElement(),this.updateMonthsInView()},isInvalidDate:function(){return!1},isCustomDate:function(){return!1},updateView:function(){this.timePicker&&(this.renderTimePicker("left"),this.renderTimePicker("right"),this.endDate?this.container.find(".right .calendar-time select").removeAttr("disabled").removeClass("disabled"):this.container.find(".right .calendar-time select").attr("disabled","disabled").addClass("disabled")),this.endDate&&this.container.find(".drp-selected").html(this.startDate.format(this.locale.format)+this.locale.separator+this.endDate.format(this.locale.format)),this.updateMonthsInView(),this.updateCalendars(),this.updateFormInputs()},updateMonthsInView:function(){if(this.endDate){if(!this.singleDatePicker&&this.leftCalendar.month&&this.rightCalendar.month&&(this.startDate.format("YYYY-MM")==this.leftCalendar.month.format("YYYY-MM")||this.startDate.format("YYYY-MM")==this.rightCalendar.month.format("YYYY-MM"))&&(this.endDate.format("YYYY-MM")==this.leftCalendar.month.format("YYYY-MM")||this.endDate.format("YYYY-MM")==this.rightCalendar.month.format("YYYY-MM")))return;this.leftCalendar.month=this.startDate.clone().date(2),this.linkedCalendars||this.endDate.month()==this.startDate.month()&&this.endDate.year()==this.startDate.year()?this.rightCalendar.month=this.startDate.clone().date(2).add(1,"month"):this.rightCalendar.month=this.endDate.clone().date(2)}else this.leftCalendar.month.format("YYYY-MM")!=this.startDate.format("YYYY-MM")&&this.rightCalendar.month.format("YYYY-MM")!=this.startDate.format("YYYY-MM")&&(this.leftCalendar.month=this.startDate.clone().date(2),this.rightCalendar.month=this.startDate.clone().date(2).add(1,"month"));this.maxDate&&this.linkedCalendars&&!this.singleDatePicker&&this.rightCalendar.month>this.maxDate&&(this.rightCalendar.month=this.maxDate.clone().date(2),this.leftCalendar.month=this.maxDate.clone().date(2).subtract(1,"month"))},updateCalendars:function(){if(this.timePicker){var t,e,a,i;if(this.endDate){if(t=parseInt(this.container.find(".left .hourselect").val(),10),e=parseInt(this.container.find(".left .minuteselect").val(),10),a=this.timePickerSeconds?parseInt(this.container.find(".left .secondselect").val(),10):0,!this.timePicker24Hour)"PM"===(i=this.container.find(".left .ampmselect").val())&&t<12&&(t+=12),"AM"===i&&12===t&&(t=0)}else if(t=parseInt(this.container.find(".right .hourselect").val(),10),e=parseInt(this.container.find(".right .minuteselect").val(),10),a=this.timePickerSeconds?parseInt(this.container.find(".right .secondselect").val(),10):0,!this.timePicker24Hour)"PM"===(i=this.container.find(".right .ampmselect").val())&&t<12&&(t+=12),"AM"===i&&12===t&&(t=0);this.leftCalendar.month.hour(t).minute(e).second(a),this.rightCalendar.month.hour(t).minute(e).second(a)}this.renderCalendar("left"),this.renderCalendar("right"),this.container.find(".ranges li").removeClass("active"),null!=this.endDate&&this.calculateChosenLabel()},renderCalendar:function(a){var i,s=(i="left"==a?this.leftCalendar:this.rightCalendar).month.month(),n=i.month.year(),r=i.month.hour(),o=i.month.minute(),h=i.month.second(),l=t([n,s]).daysInMonth(),c=t([n,s,1]),d=t([n,s,l]),m=t(c).subtract(1,"month").month(),f=t(c).subtract(1,"month").year(),p=t([f,m]).daysInMonth(),u=c.day();(i=[]).firstDay=c,i.lastDay=d;for(var D=0;D<6;D++)i[D]=[];var g=p-u+this.locale.firstDay+1;g>p&&(g-=7),u==this.locale.firstDay&&(g=p-6);for(var y=t([f,m,g,12,o,h]),k=(D=0,0),b=0;D<42;D++,k++,y=t(y).add(24,"hour"))D>0&&k%7==0&&(k=0,b++),i[b][k]=y.clone().hour(r).minute(o).second(h),y.hour(12),this.minDate&&i[b][k].format("YYYY-MM-DD")==this.minDate.format("YYYY-MM-DD")&&i[b][k].isBefore(this.minDate)&&"left"==a&&(i[b][k]=this.minDate.clone()),this.maxDate&&i[b][k].format("YYYY-MM-DD")==this.maxDate.format("YYYY-MM-DD")&&i[b][k].isAfter(this.maxDate)&&"right"==a&&(i[b][k]=this.maxDate.clone());"left"==a?this.leftCalendar.calendar=i:this.rightCalendar.calendar=i;var C="left"==a?this.minDate:this.startDate,v=this.maxDate,Y=("left"==a?this.startDate:this.endDate,this.locale.direction,'<table class="table-condensed">');Y+="<thead>",Y+="<tr>",(this.showWeekNumbers||this.showISOWeekNumbers)&&(Y+="<th></th>"),C&&!C.isBefore(i.firstDay)||this.linkedCalendars&&"left"!=a?Y+="<th></th>":Y+='<th class="prev available"><span></span></th>';var w=this.locale.monthNames[i[1][1].month()]+i[1][1].format(" YYYY");if(this.showDropdowns){for(var P=i[1][1].month(),x=i[1][1].year(),M=v&&v.year()||this.maxYear,S=C&&C.year()||this.minYear,I=x==S,B=x==M,A='<select class="monthselect">',L=0;L<12;L++)(!I||L>=C.month())&&(!B||L<=v.month())?A+="<option value='"+L+"'"+(L===P?" selected='selected'":"")+">"+this.locale.monthNames[L]+"</option>":A+="<option value='"+L+"'"+(L===P?" selected='selected'":"")+" disabled='disabled'>"+this.locale.monthNames[L]+"</option>";A+="</select>";for(var E='<select class="yearselect">',W=S;W<=M;W++)E+='<option value="'+W+'"'+(W===x?' selected="selected"':"")+">"+W+"</option>";w=A+(E+="</select>")}if(Y+='<th colspan="5" class="month">'+w+"</th>",v&&!v.isAfter(i.lastDay)||this.linkedCalendars&&"right"!=a&&!this.singleDatePicker?Y+="<th></th>":Y+='<th class="next available"><span></span></th>',Y+="</tr>",Y+="<tr>",(this.showWeekNumbers||this.showISOWeekNumbers)&&(Y+='<th class="week">'+this.locale.weekLabel+"</th>"),e.each(this.locale.daysOfWeek,function(t,e){Y+="<th>"+e+"</th>"}),Y+="</tr>",Y+="</thead>",Y+="<tbody>",null==this.endDate&&this.maxSpan){var O=this.startDate.clone().add(this.maxSpan).endOf("day");v&&!O.isBefore(v)||(v=O)}for(b=0;b<6;b++){Y+="<tr>",this.showWeekNumbers?Y+='<td class="week">'+i[b][0].week()+"</td>":this.showISOWeekNumbers&&(Y+='<td class="week">'+i[b][0].isoWeek()+"</td>");for(k=0;k<7;k++){var N=[];i[b][k].isSame(new Date,"day")&&N.push("today"),i[b][k].isoWeekday()>5&&N.push("weekend"),i[b][k].month()!=i[1][1].month()&&N.push("off"),this.minDate&&i[b][k].isBefore(this.minDate,"day")&&N.push("off","disabled"),v&&i[b][k].isAfter(v,"day")&&N.push("off","disabled"),this.isInvalidDate(i[b][k])&&N.push("off","disabled"),i[b][k].format("YYYY-MM-DD")==this.startDate.format("YYYY-MM-DD")&&N.push("active","start-date"),null!=this.endDate&&i[b][k].format("YYYY-MM-DD")==this.endDate.format("YYYY-MM-DD")&&N.push("active","end-date"),null!=this.endDate&&i[b][k]>this.startDate&&i[b][k]<this.endDate&&N.push("in-range");var H=this.isCustomDate(i[b][k]);!1!==H&&("string"==typeof H?N.push(H):Array.prototype.push.apply(N,H));var j="",R=!1;for(D=0;D<N.length;D++)j+=N[D]+" ","disabled"==N[D]&&(R=!0);R||(j+="available"),Y+='<td class="'+j.replace(/^\s+|\s+$/g,"")+'" data-title="r'+b+"c"+k+'">'+i[b][k].date()+"</td>"}Y+="</tr>"}Y+="</tbody>",Y+="</table>",this.container.find(".drp-calendar."+a+" .calendar-table").html(Y)},renderTimePicker:function(t){if("right"!=t||this.endDate){var e,a,i,s=this.maxDate;if(!this.maxSpan||this.maxDate&&!this.startDate.clone().add(this.maxSpan).isAfter(this.maxDate)||(s=this.startDate.clone().add(this.maxSpan)),"left"==t)a=this.startDate.clone(),i=this.minDate;else if("right"==t){a=this.endDate.clone(),i=this.startDate;var n=this.container.find(".drp-calendar.right .calendar-time");if(""!=n.html()&&(a.hour(a.hour()||n.find(".hourselect option:selected").val()),a.minute(a.minute()||n.find(".minuteselect option:selected").val()),a.second(a.second()||n.find(".secondselect option:selected").val()),!this.timePicker24Hour)){var r=n.find(".ampmselect option:selected").val();"PM"===r&&a.hour()<12&&a.hour(a.hour()+12),"AM"===r&&12===a.hour()&&a.hour(0)}a.isBefore(this.startDate)&&(a=this.startDate.clone()),s&&a.isAfter(s)&&(a=s.clone())}e='<select class="hourselect">';for(var o=this.timePicker24Hour?0:1,h=this.timePicker24Hour?23:12,l=o;l<=h;l++){var c=l;this.timePicker24Hour||(c=a.hour()>=12?12==l?12:l+12:12==l?0:l);var d=a.clone().hour(c),m=!1;i&&d.minute(59).isBefore(i)&&(m=!0),s&&d.minute(0).isAfter(s)&&(m=!0),c!=a.hour()||m?e+=m?'<option value="'+l+'" disabled="disabled" class="disabled">'+l+"</option>":'<option value="'+l+'">'+l+"</option>":e+='<option value="'+l+'" selected="selected">'+l+"</option>"}e+="</select> ",e+=': <select class="minuteselect">';for(l=0;l<60;l+=this.timePickerIncrement){var f=l<10?"0"+l:l;d=a.clone().minute(l),m=!1;i&&d.second(59).isBefore(i)&&(m=!0),s&&d.second(0).isAfter(s)&&(m=!0),a.minute()!=l||m?e+=m?'<option value="'+l+'" disabled="disabled" class="disabled">'+f+"</option>":'<option value="'+l+'">'+f+"</option>":e+='<option value="'+l+'" selected="selected">'+f+"</option>"}if(e+="</select> ",this.timePickerSeconds){e+=': <select class="secondselect">';for(l=0;l<60;l++){f=l<10?"0"+l:l,d=a.clone().second(l),m=!1;i&&d.isBefore(i)&&(m=!0),s&&d.isAfter(s)&&(m=!0),a.second()!=l||m?e+=m?'<option value="'+l+'" disabled="disabled" class="disabled">'+f+"</option>":'<option value="'+l+'">'+f+"</option>":e+='<option value="'+l+'" selected="selected">'+f+"</option>"}e+="</select> "}if(!this.timePicker24Hour){e+='<select class="ampmselect">';var p="",u="";i&&a.clone().hour(12).minute(0).second(0).isBefore(i)&&(p=' disabled="disabled" class="disabled"'),s&&a.clone().hour(0).minute(0).second(0).isAfter(s)&&(u=' disabled="disabled" class="disabled"'),a.hour()>=12?e+='<option value="AM"'+p+'>AM</option><option value="PM" selected="selected"'+u+">PM</option>":e+='<option value="AM" selected="selected"'+p+'>AM</option><option value="PM"'+u+">PM</option>",e+="</select>"}this.container.find(".drp-calendar."+t+" .calendar-time").html(e)}},updateFormInputs:function(){this.singleDatePicker||this.endDate&&(this.startDate.isBefore(this.endDate)||this.startDate.isSame(this.endDate))?this.container.find("button.applyBtn").removeAttr("disabled"):this.container.find("button.applyBtn").attr("disabled","disabled")},move:function(){var t,a={top:0,left:0},i=e(window).width();this.parentEl.is("body")||(a={top:this.parentEl.offset().top-this.parentEl.scrollTop(),left:this.parentEl.offset().left-this.parentEl.scrollLeft()},i=this.parentEl[0].clientWidth+this.parentEl.offset().left),t="up"==this.drops?this.element.offset().top-this.container.outerHeight()-a.top:this.element.offset().top+this.element.outerHeight()-a.top,this.container["up"==this.drops?"addClass":"removeClass"]("drop-up"),"left"==this.opens?(this.container.css({top:t,right:i-this.element.offset().left-this.element.outerWidth(),left:"auto"}),this.container.offset().left<0&&this.container.css({right:"auto",left:9})):"center"==this.opens?(this.container.css({top:t,left:this.element.offset().left-a.left+this.element.outerWidth()/2-this.container.outerWidth()/2,right:"auto"}),this.container.offset().left<0&&this.container.css({right:"auto",left:9})):(this.container.css({top:t,left:this.element.offset().left-a.left,right:"auto"}),this.container.offset().left+this.container.outerWidth()>e(window).width()&&this.container.css({left:"auto",right:0}))},show:function(t){this.isShowing||(this._outsideClickProxy=e.proxy(function(t){this.outsideClick(t)},this),e(document).on("mousedown.daterangepicker",this._outsideClickProxy).on("touchend.daterangepicker",this._outsideClickProxy).on("click.daterangepicker","[data-toggle=dropdown]",this._outsideClickProxy).on("focusin.daterangepicker",this._outsideClickProxy),e(window).on("resize.daterangepicker",e.proxy(function(t){this.move(t)},this)),this.oldStartDate=this.startDate.clone(),this.oldEndDate=this.endDate.clone(),this.previousRightTime=this.endDate.clone(),this.updateView(),this.container.show(),this.move(),this.element.trigger("show.daterangepicker",this),this.isShowing=!0)},hide:function(t){this.isShowing&&(this.endDate||(this.startDate=this.oldStartDate.clone(),this.endDate=this.oldEndDate.clone()),this.startDate.isSame(this.oldStartDate)&&this.endDate.isSame(this.oldEndDate)||this.callback(this.startDate.clone(),this.endDate.clone(),this.chosenLabel),this.updateElement(),e(document).off(".daterangepicker"),e(window).off(".daterangepicker"),this.container.hide(),this.element.trigger("hide.daterangepicker",this),this.isShowing=!1)},toggle:function(t){this.isShowing?this.hide():this.show()},outsideClick:function(t){var a=e(t.target);"focusin"==t.type||a.closest(this.element).length||a.closest(this.container).length||a.closest(".calendar-table").length||(this.hide(),this.element.trigger("outsideClick.daterangepicker",this))},showCalendars:function(){this.container.addClass("show-calendar"),this.move(),this.element.trigger("showCalendar.daterangepicker",this)},hideCalendars:function(){this.container.removeClass("show-calendar"),this.element.trigger("hideCalendar.daterangepicker",this)},clickRange:function(t){var e=t.target.getAttribute("data-range-key");if(this.chosenLabel=e,e==this.locale.customRangeLabel)this.showCalendars();else{var a=this.ranges[e];this.startDate=a[0],this.endDate=a[1],this.timePicker||(this.startDate.startOf("day"),this.endDate.endOf("day")),this.alwaysShowCalendars||this.hideCalendars(),this.clickApply()}},clickPrev:function(t){e(t.target).parents(".drp-calendar").hasClass("left")?(this.leftCalendar.month.subtract(1,"month"),this.linkedCalendars&&this.rightCalendar.month.subtract(1,"month")):this.rightCalendar.month.subtract(1,"month"),this.updateCalendars()},clickNext:function(t){e(t.target).parents(".drp-calendar").hasClass("left")?this.leftCalendar.month.add(1,"month"):(this.rightCalendar.month.add(1,"month"),this.linkedCalendars&&this.leftCalendar.month.add(1,"month")),this.updateCalendars()},hoverDate:function(t){if(e(t.target).hasClass("available")){var a=e(t.target).attr("data-title"),i=a.substr(1,1),s=a.substr(3,1),n=e(t.target).parents(".drp-calendar").hasClass("left")?this.leftCalendar.calendar[i][s]:this.rightCalendar.calendar[i][s],r=this.leftCalendar,o=this.rightCalendar,h=this.startDate;this.endDate||this.container.find(".drp-calendar tbody td").each(function(t,a){if(!e(a).hasClass("week")){var i=e(a).attr("data-title"),s=i.substr(1,1),l=i.substr(3,1),c=e(a).parents(".drp-calendar").hasClass("left")?r.calendar[s][l]:o.calendar[s][l];c.isAfter(h)&&c.isBefore(n)||c.isSame(n,"day")?e(a).addClass("in-range"):e(a).removeClass("in-range")}})}},clickDate:function(t){if(e(t.target).hasClass("available")){var a=e(t.target).attr("data-title"),i=a.substr(1,1),s=a.substr(3,1),n=e(t.target).parents(".drp-calendar").hasClass("left")?this.leftCalendar.calendar[i][s]:this.rightCalendar.calendar[i][s];if(this.endDate||n.isBefore(this.startDate,"day")){if(this.timePicker){var r=parseInt(this.container.find(".left .hourselect").val(),10);if(!this.timePicker24Hour)"PM"===(l=this.container.find(".left .ampmselect").val())&&r<12&&(r+=12),"AM"===l&&12===r&&(r=0);var o=parseInt(this.container.find(".left .minuteselect").val(),10),h=this.timePickerSeconds?parseInt(this.container.find(".left .secondselect").val(),10):0;n=n.clone().hour(r).minute(o).second(h)}this.endDate=null,this.setStartDate(n.clone())}else if(!this.endDate&&n.isBefore(this.startDate))this.setEndDate(this.startDate.clone());else{if(this.timePicker){var l;r=parseInt(this.container.find(".right .hourselect").val(),10);if(!this.timePicker24Hour)"PM"===(l=this.container.find(".right .ampmselect").val())&&r<12&&(r+=12),"AM"===l&&12===r&&(r=0);o=parseInt(this.container.find(".right .minuteselect").val(),10),h=this.timePickerSeconds?parseInt(this.container.find(".right .secondselect").val(),10):0;n=n.clone().hour(r).minute(o).second(h)}this.setEndDate(n.clone()),this.autoApply&&(this.calculateChosenLabel(),this.clickApply())}this.singleDatePicker&&(this.setEndDate(this.startDate),this.timePicker||this.clickApply()),this.updateView(),t.stopPropagation()}},calculateChosenLabel:function(){var t=!0,e=0;for(var a in this.ranges){if(this.timePicker){var i=this.timePickerSeconds?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm";if(this.startDate.format(i)==this.ranges[a][0].format(i)&&this.endDate.format(i)==this.ranges[a][1].format(i)){t=!1,this.chosenLabel=this.container.find(".ranges li:eq("+e+")").addClass("active").attr("data-range-key");break}}else if(this.startDate.format("YYYY-MM-DD")==this.ranges[a][0].format("YYYY-MM-DD")&&this.endDate.format("YYYY-MM-DD")==this.ranges[a][1].format("YYYY-MM-DD")){t=!1,this.chosenLabel=this.container.find(".ranges li:eq("+e+")").addClass("active").attr("data-range-key");break}e++}t&&(this.showCustomRangeLabel?this.chosenLabel=this.container.find(".ranges li:last").addClass("active").attr("data-range-key"):this.chosenLabel=null,this.showCalendars())},clickApply:function(t){this.hide(),this.element.trigger("apply.daterangepicker",this)},clickCancel:function(t){this.startDate=this.oldStartDate,this.endDate=this.oldEndDate,this.hide(),this.element.trigger("cancel.daterangepicker",this)},monthOrYearChanged:function(t){var a=e(t.target).closest(".drp-calendar").hasClass("left"),i=a?"left":"right",s=this.container.find(".drp-calendar."+i),n=parseInt(s.find(".monthselect").val(),10),r=s.find(".yearselect").val();a||(r<this.startDate.year()||r==this.startDate.year()&&n<this.startDate.month())&&(n=this.startDate.month(),r=this.startDate.year()),this.minDate&&(r<this.minDate.year()||r==this.minDate.year()&&n<this.minDate.month())&&(n=this.minDate.month(),r=this.minDate.year()),this.maxDate&&(r>this.maxDate.year()||r==this.maxDate.year()&&n>this.maxDate.month())&&(n=this.maxDate.month(),r=this.maxDate.year()),a?(this.leftCalendar.month.month(n).year(r),this.linkedCalendars&&(this.rightCalendar.month=this.leftCalendar.month.clone().add(1,"month"))):(this.rightCalendar.month.month(n).year(r),this.linkedCalendars&&(this.leftCalendar.month=this.rightCalendar.month.clone().subtract(1,"month"))),this.updateCalendars()},timeChanged:function(t){var a=e(t.target).closest(".drp-calendar"),i=a.hasClass("left"),s=parseInt(a.find(".hourselect").val(),10),n=parseInt(a.find(".minuteselect").val(),10),r=this.timePickerSeconds?parseInt(a.find(".secondselect").val(),10):0;if(!this.timePicker24Hour){var o=a.find(".ampmselect").val();"PM"===o&&s<12&&(s+=12),"AM"===o&&12===s&&(s=0)}if(i){var h=this.startDate.clone();h.hour(s),h.minute(n),h.second(r),this.setStartDate(h),this.singleDatePicker?this.endDate=this.startDate.clone():this.endDate&&this.endDate.format("YYYY-MM-DD")==h.format("YYYY-MM-DD")&&this.endDate.isBefore(h)&&this.setEndDate(h.clone())}else if(this.endDate){var l=this.endDate.clone();l.hour(s),l.minute(n),l.second(r),this.setEndDate(l)}this.updateCalendars(),this.updateFormInputs(),this.renderTimePicker("left"),this.renderTimePicker("right")},elementChanged:function(){if(this.element.is("input")&&this.element.val().length){var e=this.element.val().split(this.locale.separator),a=null,i=null;2===e.length&&(a=t(e[0],this.locale.format),i=t(e[1],this.locale.format)),(this.singleDatePicker||null===a||null===i)&&(i=a=t(this.element.val(),this.locale.format)),a.isValid()&&i.isValid()&&(this.setStartDate(a),this.setEndDate(i),this.updateView())}},keydown:function(t){9!==t.keyCode&&13!==t.keyCode||this.hide(),27===t.keyCode&&(t.preventDefault(),t.stopPropagation(),this.hide())},updateElement:function(){if(this.element.is("input")&&this.autoUpdateInput){var t=this.startDate.format(this.locale.format);this.singleDatePicker||(t+=this.locale.separator+this.endDate.format(this.locale.format)),t!==this.element.val()&&this.element.val(t).trigger("change")}},remove:function(){this.container.remove(),this.element.off(".daterangepicker"),this.element.removeData()}},e.fn.daterangepicker=function(t,i){var s=e.extend(!0,{},e.fn.daterangepicker.defaultOptions,t);return this.each(function(){var t=e(this);t.data("daterangepicker")&&t.data("daterangepicker").remove(),t.data("daterangepicker",new a(t,s,i))}),this},a});
Index: public/vendors/dropzone/dropzone.css
===================================================================
--- public/vendors/dropzone/dropzone.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dropzone/dropzone.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+@-webkit-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-moz-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-webkit-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}}@keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes pulse{0%,20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}}@-moz-keyframes pulse{0%,20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}}@keyframes pulse{0%,20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:2px solid rgba(0,0,0,.3);background:#fff;padding:20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.dropzone .dz-preview.dz-file-preview .dz-details,.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-message{text-align:center;margin:2em 0}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom,#eee,#ddd)}.dropzone .dz-preview.dz-image-preview{background:#fff}.dropzone .dz-preview.dz-image-preview .dz-details{-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-ms-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:rgba(0,0,0,.9);line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:rgba(255,255,255,.8)}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:rgba(255,255,255,.4);padding:0 .4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{-webkit-transform:scale(1.05,1.05);-moz-transform:scale(1.05,1.05);-ms-transform:scale(1.05,1.05);-o-transform:scale(1.05,1.05);transform:scale(1.05,1.05);-webkit-filter:blur(8px);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{-webkit-animation:passing-through 3s cubic-bezier(.77,0,.175,1);-moz-animation:passing-through 3s cubic-bezier(.77,0,.175,1);-ms-animation:passing-through 3s cubic-bezier(.77,0,.175,1);-o-animation:passing-through 3s cubic-bezier(.77,0,.175,1);animation:passing-through 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;-webkit-animation:slide-in 3s cubic-bezier(.77,0,.175,1);-moz-animation:slide-in 3s cubic-bezier(.77,0,.175,1);-ms-animation:slide-in 3s cubic-bezier(.77,0,.175,1);-o-animation:slide-in 3s cubic-bezier(.77,0,.175,1);animation:slide-in 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px}.dropzone .dz-preview .dz-error-mark svg,.dropzone .dz-preview .dz-success-mark svg{display:block;width:54px;height:54px}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;-webkit-transition:all .2s linear;-moz-transition:all .2s linear;-ms-transition:all .2s linear;-o-transition:all .2s linear;transition:all .2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;-webkit-transition:opacity .4s ease-in;-moz-transition:opacity .4s ease-in;-ms-transition:opacity .4s ease-in;-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{-webkit-animation:pulse 6s ease infinite;-moz-animation:pulse 6s ease infinite;-ms-animation:pulse 6s ease infinite;-o-animation:pulse 6s ease infinite;animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:16px;left:50%;top:50%;margin-top:-8px;width:80px;margin-left:-40px;background:rgba(255,255,255,.9);-webkit-transform:scale(1);border-radius:8px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#333;background:linear-gradient(to bottom,#666,#444);position:absolute;top:0;left:0;bottom:0;width:0;-webkit-transition:width .3s ease-in-out;-moz-transition:width .3s ease-in-out;-ms-transition:width .3s ease-in-out;-o-transition:width .3s ease-in-out;transition:width .3s ease-in-out}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;-webkit-transition:opacity .3s ease;-moz-transition:opacity .3s ease;-ms-transition:opacity .3s ease;-o-transition:opacity .3s ease;transition:opacity .3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#be2626;background:linear-gradient(to bottom,#be2626,#a92222);padding:.5em 1.2em;color:#fff}.dropzone .dz-preview .dz-error-message:after{content:'';position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #be2626}
Index: public/vendors/dropzone/dropzone.js
===================================================================
--- public/vendors/dropzone/dropzone.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/dropzone/dropzone.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+"use strict";var _createClass=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}();function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var Emitter=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"on",value:function(e,t){return this._callbacks=this._callbacks||{},this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),this}},{key:"emit",value:function(e){this._callbacks=this._callbacks||{};var t=this._callbacks[e];if(t){for(var i=arguments.length,n=Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];for(var o=0,a=a=t;;){if(o>=a.length)break;a[o++].apply(this,n)}}return this}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var i=this._callbacks[e];if(!i)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var n=0;n<i.length;n++){if(i[n]===t){i.splice(n,1);break}}return this}}]),e}(),Dropzone=function(e){function t(e,i){_classCallCheck(this,t);var n,r=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)),o=void 0;if(r.element=e,r.version=t.version,r.defaultOptions.previewTemplate=r.defaultOptions.previewTemplate.replace(/\n*/g,""),r.clickableElements=[],r.listeners=[],r.files=[],"string"==typeof r.element&&(r.element=document.querySelector(r.element)),!r.element||null==r.element.nodeType)throw new Error("Invalid dropzone element.");if(r.element.dropzone)throw new Error("Dropzone already attached.");t.instances.push(r),r.element.dropzone=r;var a,s=null!=(n=t.optionsForElement(r.element))?n:{};if(r.options=t.extend({},r.defaultOptions,s,null!=i?i:{}),r.options.forceFallback||!t.isBrowserSupported())return a=r.options.fallback.call(r),_possibleConstructorReturn(r,a);if(null==r.options.url&&(r.options.url=r.element.getAttribute("action")),!r.options.url)throw new Error("No URL provided.");if(r.options.acceptedFiles&&r.options.acceptedMimeTypes)throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");if(r.options.uploadMultiple&&r.options.chunking)throw new Error("You cannot set both: uploadMultiple and chunking.");return r.options.acceptedMimeTypes&&(r.options.acceptedFiles=r.options.acceptedMimeTypes,delete r.options.acceptedMimeTypes),null!=r.options.renameFilename&&(r.options.renameFile=function(e){return r.options.renameFilename.call(r,e.name,e)}),r.options.method=r.options.method.toUpperCase(),(o=r.getExistingFallback())&&o.parentNode&&o.parentNode.removeChild(o),!1!==r.options.previewsContainer&&(r.options.previewsContainer?r.previewsContainer=t.getElement(r.options.previewsContainer,"previewsContainer"):r.previewsContainer=r.element),r.options.clickable&&(!0===r.options.clickable?r.clickableElements=[r.element]:r.clickableElements=t.getElements(r.options.clickable,"clickable")),r.init(),r}return _inherits(t,Emitter),_createClass(t,null,[{key:"initClass",value:function(){this.prototype.Emitter=Emitter,this.prototype.events=["drop","dragstart","dragend","dragenter","dragover","dragleave","addedfile","addedfiles","removedfile","thumbnail","error","errormultiple","processing","processingmultiple","uploadprogress","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","canceledmultiple","complete","completemultiple","reset","maxfilesexceeded","maxfilesreached","queuecomplete"],this.prototype.defaultOptions={url:null,method:"post",withCredentials:!1,timeout:3e4,parallelUploads:2,uploadMultiple:!1,chunking:!1,forceChunking:!1,chunkSize:2e6,parallelChunkUploads:!1,retryChunks:!1,retryChunksLimit:3,maxFilesize:256,paramName:"file",createImageThumbnails:!0,maxThumbnailFilesize:10,thumbnailWidth:120,thumbnailHeight:120,thumbnailMethod:"crop",resizeWidth:null,resizeHeight:null,resizeMimeType:null,resizeQuality:.8,resizeMethod:"contain",filesizeBase:1e3,maxFiles:null,headers:null,clickable:!0,ignoreHiddenFiles:!0,acceptedFiles:null,acceptedMimeTypes:null,autoProcessQueue:!0,autoQueue:!0,addRemoveLinks:!1,previewsContainer:null,hiddenInputContainer:"body",capture:null,renameFilename:null,renameFile:null,forceFallback:!1,dictDefaultMessage:"Drop files here to upload",dictFallbackMessage:"Your browser does not support drag'n'drop file uploads.",dictFallbackText:"Please use the fallback form below to upload your files like in the olden days.",dictFileTooBig:"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",dictInvalidFileType:"You can't upload files of this type.",dictResponseError:"Server responded with {{statusCode}} code.",dictCancelUpload:"Cancel upload",dictUploadCanceled:"Upload canceled.",dictCancelUploadConfirmation:"Are you sure you want to cancel this upload?",dictRemoveFile:"Remove file",dictRemoveFileConfirmation:null,dictMaxFilesExceeded:"You can not upload any more files.",dictFileSizeUnits:{tb:"TB",gb:"GB",mb:"MB",kb:"KB",b:"b"},init:function(){},params:function(e,t,i){if(i)return{dzuuid:i.file.upload.uuid,dzchunkindex:i.index,dztotalfilesize:i.file.size,dzchunksize:this.options.chunkSize,dztotalchunkcount:i.file.upload.totalChunkCount,dzchunkbyteoffset:i.index*this.options.chunkSize}},accept:function(e,t){return t()},chunksUploaded:function(e,t){t()},fallback:function(){var e=void 0;this.element.className=this.element.className+" dz-browser-not-supported";for(var i=0,n=n=this.element.getElementsByTagName("div");;){if(i>=n.length)break;var r=n[i++];if(/(^| )dz-message($| )/.test(r.className)){e=r,r.className="dz-message";break}}e||(e=t.createElement('<div class="dz-message"><span></span></div>'),this.element.appendChild(e));var o=e.getElementsByTagName("span")[0];return o&&(null!=o.textContent?o.textContent=this.options.dictFallbackMessage:null!=o.innerText&&(o.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,i,n){var r={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==i?(t=r.srcWidth,i=r.srcHeight):null==t?t=i*o:null==i&&(i=t/o);var a=(t=Math.min(t,r.srcWidth))/(i=Math.min(i,r.srcHeight));if(r.srcWidth>t||r.srcHeight>i)if("crop"===n)o>a?(r.srcHeight=e.height,r.srcWidth=r.srcHeight*a):(r.srcWidth=e.width,r.srcHeight=r.srcWidth/a);else{if("contain"!==n)throw new Error("Unknown resizeMethod '"+n+"'");o>a?i=t/o:t=i*o}return r.srcX=(e.width-r.srcWidth)/2,r.srcY=(e.height-r.srcHeight)/2,r.trgWidth=t,r.trgHeight=i,r},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'<div class="dz-preview dz-file-preview">\n  <div class="dz-image"><img data-dz-thumbnail /></div>\n  <div class="dz-details">\n    <div class="dz-size"><span data-dz-size></span></div>\n    <div class="dz-filename"><span data-dz-name></span></div>\n  </div>\n  <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n  <div class="dz-error-message"><span data-dz-errormessage></span></div>\n  <div class="dz-success-mark">\n    <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n      <title>Check</title>\n      <defs></defs>\n      <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n        <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>\n      </g>\n    </svg>\n  </div>\n  <div class="dz-error-mark">\n    <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n      <title>Error</title>\n      <defs></defs>\n      <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n        <g id="Check-+-Oval-2" sketch:type="MSLayerGroup" stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n          <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" sketch:type="MSShapeGroup"></path>\n        </g>\n      </g>\n    </svg>\n  </div>\n</div>',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var i=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer){e.previewElement=t.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);for(var n=0,r=r=e.previewElement.querySelectorAll("[data-dz-name]");;){if(n>=r.length)break;var o=r[n++];o.textContent=e.name}for(var a=0,s=s=e.previewElement.querySelectorAll("[data-dz-size]");!(a>=s.length);)(o=s[a++]).innerHTML=this.filesize(e.size);this.options.addRemoveLinks&&(e._removeLink=t.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'+this.options.dictRemoveFile+"</a>"),e.previewElement.appendChild(e._removeLink));for(var l=function(n){return n.preventDefault(),n.stopPropagation(),e.status===t.UPLOADING?t.confirm(i.options.dictCancelUploadConfirmation,function(){return i.removeFile(e)}):i.options.dictRemoveFileConfirmation?t.confirm(i.options.dictRemoveFileConfirmation,function(){return i.removeFile(e)}):i.removeFile(e)},u=0,d=d=e.previewElement.querySelectorAll("[data-dz-remove]");;){if(u>=d.length)break;d[u++].addEventListener("click",l)}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");for(var i=0,n=n=e.previewElement.querySelectorAll("[data-dz-thumbnail]");;){if(i>=n.length)break;var r=n[i++];r.alt=e.name,r.src=t}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"String"!=typeof t&&t.error&&(t=t.error);for(var i=0,n=n=e.previewElement.querySelectorAll("[data-dz-errormessage]");;){if(i>=n.length)break;n[i++].textContent=t}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,i){if(e.previewElement)for(var n=0,r=r=e.previewElement.querySelectorAll("[data-dz-uploadprogress]");;){if(n>=r.length)break;var o=r[n++];"PROGRESS"===o.nodeName?o.value=t:o.style.width=t+"%"}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}},this.prototype._thumbnailQueue=[],this.prototype._processingThumbnail=!1}},{key:"extend",value:function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];for(var r=0,o=o=i;;){if(r>=o.length)break;var a=o[r++];for(var s in a){var l=a[s];e[s]=l}}return e}}]),_createClass(t,[{key:"getAcceptedFiles",value:function(){return this.files.filter(function(e){return e.accepted}).map(function(e){return e})}},{key:"getRejectedFiles",value:function(){return this.files.filter(function(e){return!e.accepted}).map(function(e){return e})}},{key:"getFilesWithStatus",value:function(e){return this.files.filter(function(t){return t.status===e}).map(function(e){return e})}},{key:"getQueuedFiles",value:function(){return this.getFilesWithStatus(t.QUEUED)}},{key:"getUploadingFiles",value:function(){return this.getFilesWithStatus(t.UPLOADING)}},{key:"getAddedFiles",value:function(){return this.getFilesWithStatus(t.ADDED)}},{key:"getActiveFiles",value:function(){return this.files.filter(function(e){return e.status===t.UPLOADING||e.status===t.QUEUED}).map(function(e){return e})}},{key:"init",value:function(){var e=this;if("form"===this.element.tagName&&this.element.setAttribute("enctype","multipart/form-data"),this.element.classList.contains("dropzone")&&!this.element.querySelector(".dz-message")&&this.element.appendChild(t.createElement('<div class="dz-default dz-message"><span>'+this.options.dictDefaultMessage+"</span></div>")),this.clickableElements.length){!function i(){return e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",t.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var t=e.hiddenFileInput.files;if(t.length)for(var n=0,r=r=t;!(n>=r.length);){var o=r[n++];e.addFile(o)}return e.emit("addedfiles",t),i()})}()}this.URL=null!==window.URL?window.URL:window.webkitURL;for(var i=0,n=n=this.events;;){if(i>=n.length)break;var r=n[i++];this.on(r,this.options[r])}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var o=function(e){return e.stopPropagation(),e.preventDefault?e.preventDefault():e.returnValue=!1};return this.listeners=[{element:this.element,events:{dragstart:function(t){return e.emit("dragstart",t)},dragenter:function(t){return o(t),e.emit("dragenter",t)},dragover:function(t){var i=void 0;try{i=t.dataTransfer.effectAllowed}catch(e){}return t.dataTransfer.dropEffect="move"===i||"linkMove"===i?"move":"copy",o(t),e.emit("dragover",t)},dragleave:function(t){return e.emit("dragleave",t)},drop:function(t){return o(t),e.drop(t)},dragend:function(t){return e.emit("dragend",t)}}}],this.clickableElements.forEach(function(i){return e.listeners.push({element:i,events:{click:function(n){return(i!==e.element||n.target===e.element||t.elementInside(n.target,e.element.querySelector(".dz-message")))&&e.hiddenFileInput.click(),!0}}})}),this.enable(),this.options.init.call(this)}},{key:"destroy",value:function(){return this.disable(),this.removeAllFiles(!0),(null!=this.hiddenFileInput?this.hiddenFileInput.parentNode:void 0)&&(this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput),this.hiddenFileInput=null),delete this.element.dropzone,t.instances.splice(t.instances.indexOf(this),1)}},{key:"updateTotalUploadProgress",value:function(){var e=void 0,t=0,i=0;if(this.getActiveFiles().length){for(var n=0,r=r=this.getActiveFiles();;){if(n>=r.length)break;var o=r[n++];t+=o.upload.bytesSent,i+=o.upload.total}e=100*t/i}else e=100;return this.emit("totaluploadprogress",e,i,t)}},{key:"_getParamName",value:function(e){return"function"==typeof this.options.paramName?this.options.paramName(e):this.options.paramName+(this.options.uploadMultiple?"["+e+"]":"")}},{key:"_renameFile",value:function(e){return"function"!=typeof this.options.renameFile?e.name:this.options.renameFile(e)}},{key:"getFallbackForm",value:function(){var e,i=void 0;if(e=this.getExistingFallback())return e;var n='<div class="dz-fallback">';this.options.dictFallbackText&&(n+="<p>"+this.options.dictFallbackText+"</p>"),n+='<input type="file" name="'+this._getParamName(0)+'" '+(this.options.uploadMultiple?'multiple="multiple"':void 0)+' /><input type="submit" value="Upload!"></div>';var r=t.createElement(n);return"FORM"!==this.element.tagName?(i=t.createElement('<form action="'+this.options.url+'" enctype="multipart/form-data" method="'+this.options.method+'"></form>')).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=i?i:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){for(var t=0,i=i=e;;){if(t>=i.length)break;var n=i[t++];if(/(^| )fallback($| )/.test(n.className))return n}},t=["div","form"],i=0;i<t.length;i++){var n,r=t[i];if(n=e(this.element.getElementsByTagName(r)))return n}}},{key:"setupEventListeners",value:function(){return this.listeners.map(function(e){return function(){var t=[];for(var i in e.events){var n=e.events[i];t.push(e.element.addEventListener(i,n,!1))}return t}()})}},{key:"removeEventListeners",value:function(){return this.listeners.map(function(e){return function(){var t=[];for(var i in e.events){var n=e.events[i];t.push(e.element.removeEventListener(i,n,!1))}return t}()})}},{key:"disable",value:function(){var e=this;return this.clickableElements.forEach(function(e){return e.classList.remove("dz-clickable")}),this.removeEventListeners(),this.disabled=!0,this.files.map(function(t){return e.cancelUpload(t)})}},{key:"enable",value:function(){return delete this.disabled,this.clickableElements.forEach(function(e){return e.classList.add("dz-clickable")}),this.setupEventListeners()}},{key:"filesize",value:function(e){var t=0,i="b";if(e>0){for(var n=["tb","gb","mb","kb","b"],r=0;r<n.length;r++){var o=n[r];if(e>=Math.pow(this.options.filesizeBase,4-r)/10){t=e/Math.pow(this.options.filesizeBase,4-r),i=o;break}}t=Math.round(10*t)/10}return"<strong>"+t+"</strong> "+this.options.dictFileSizeUnits[i]}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],i=0;i<e.dataTransfer.files.length;i++)t[i]=e.dataTransfer.files[i];if(this.emit("addedfiles",t),t.length){var n=e.dataTransfer.items;n&&n.length&&null!=n[0].webkitGetAsEntry?this._addFilesFromItems(n):this.handleFiles(t)}}}},{key:"paste",value:function(e){if(null!=__guard__(null!=e?e.clipboardData:void 0,function(e){return e.items})){this.emit("paste",e);var t=e.clipboardData.items;return t.length?this._addFilesFromItems(t):void 0}}},{key:"handleFiles",value:function(e){for(var t=0,i=i=e;;){if(t>=i.length)break;var n=i[t++];this.addFile(n)}}},{key:"_addFilesFromItems",value:function(e){var t=this;return function(){for(var i=[],n=0,r=r=e;;){if(n>=r.length)break;var o,a=r[n++];null!=a.webkitGetAsEntry&&(o=a.webkitGetAsEntry())?o.isFile?i.push(t.addFile(a.getAsFile())):o.isDirectory?i.push(t._addFilesFromDirectory(o,o.name)):i.push(void 0):null!=a.getAsFile&&(null==a.kind||"file"===a.kind)?i.push(t.addFile(a.getAsFile())):i.push(void 0)}return i}()}},{key:"_addFilesFromDirectory",value:function(e,t){var i=this,n=e.createReader(),r=function(e){return __guardMethod__(console,"log",function(t){return t.log(e)})};return function e(){return n.readEntries(function(n){if(n.length>0){for(var r=0,o=o=n;!(r>=o.length);){var a=o[r++];a.isFile?a.file(function(e){if(!i.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath=t+"/"+e.name,i.addFile(e)}):a.isDirectory&&i._addFilesFromDirectory(a,t+"/"+a.name)}e()}return null},r)}()}},{key:"accept",value:function(e,i){return this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?i(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):t.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(i(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,i):i(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var i=this;return e.upload={uuid:t.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e),chunked:this.options.chunking&&(this.options.forceChunking||e.size>this.options.chunkSize),totalChunkCount:Math.ceil(e.size/this.options.chunkSize)},this.files.push(e),e.status=t.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(t){return t?(e.accepted=!1,i._errorProcessing([e],t)):(e.accepted=!0,i.options.autoQueue&&i.enqueueFile(e)),i._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){for(var t=0,i=i=e;;){if(t>=i.length)break;var n=i[t++];this.enqueueFile(n)}return null}},{key:"enqueueFile",value:function(e){var i=this;if(e.status!==t.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=t.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return i.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(i){return e.emit("thumbnail",t,i),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===t.UPLOADING&&this.cancelUpload(e),this.files=without(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);for(var i=0,n=n=this.files.slice();;){if(i>=n.length)break;var r=n[i++];(r.status!==t.UPLOADING||e)&&this.removeFile(r)}return null}},{key:"resizeImage",value:function(e,i,n,r,o){var a=this;return this.createThumbnail(e,i,n,r,!0,function(i,n){if(null==n)return o(e);var r=a.options.resizeMimeType;null==r&&(r=e.type);var s=n.toDataURL(r,a.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(s=ExifRestore.restore(e.dataURL,s)),o(t.dataURItoBlob(s))})}},{key:"createThumbnail",value:function(e,t,i,n,r,o){var a=this,s=new FileReader;return s.onload=function(){if(e.dataURL=s.result,"image/svg+xml"!==e.type)return a.createThumbnailFromUrl(e,t,i,n,r,o);null!=o&&o(s.result)},s.readAsDataURL(e)}},{key:"createThumbnailFromUrl",value:function(e,t,i,n,r,o,a){var s=this,l=document.createElement("img");return a&&(l.crossOrigin=a),l.onload=function(){var a=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&r&&(a=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),a(function(r){e.width=l.width,e.height=l.height;var a=s.options.resize.call(s,e,t,i,n),u=document.createElement("canvas"),d=u.getContext("2d");switch(u.width=a.trgWidth,u.height=a.trgHeight,r>4&&(u.width=a.trgHeight,u.height=a.trgWidth),r){case 2:d.translate(u.width,0),d.scale(-1,1);break;case 3:d.translate(u.width,u.height),d.rotate(Math.PI);break;case 4:d.translate(0,u.height),d.scale(1,-1);break;case 5:d.rotate(.5*Math.PI),d.scale(1,-1);break;case 6:d.rotate(.5*Math.PI),d.translate(0,-u.width);break;case 7:d.rotate(.5*Math.PI),d.translate(u.height,-u.width),d.scale(-1,1);break;case 8:d.rotate(-.5*Math.PI),d.translate(-u.height,0)}drawImageIOSFix(d,l,null!=a.srcX?a.srcX:0,null!=a.srcY?a.srcY:0,a.srcWidth,a.srcHeight,null!=a.trgX?a.trgX:0,null!=a.trgY?a.trgY:0,a.trgWidth,a.trgHeight);var c=u.toDataURL("image/png");if(null!=o)return o(c,u)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,i=t;if(!(t>=e)){var n=this.getQueuedFiles();if(n.length>0){if(this.options.uploadMultiple)return this.processFiles(n.slice(0,e-t));for(;i<e;){if(!n.length)return;this.processFile(n.shift()),i++}}}}},{key:"processFile",value:function(e){return this.processFiles([e])}},{key:"processFiles",value:function(e){for(var i=0,n=n=e;;){if(i>=n.length)break;var r=n[i++];r.processing=!0,r.status=t.UPLOADING,this.emit("processing",r)}return this.options.uploadMultiple&&this.emit("processingmultiple",e),this.uploadFiles(e)}},{key:"_getFilesWithXhr",value:function(e){return this.files.filter(function(t){return t.xhr===e}).map(function(e){return e})}},{key:"cancelUpload",value:function(e){if(e.status===t.UPLOADING){for(var i=this._getFilesWithXhr(e.xhr),n=0,r=r=i;;){if(n>=r.length)break;r[n++].status=t.CANCELED}void 0!==e.xhr&&e.xhr.abort();for(var o=0,a=a=i;;){if(o>=a.length)break;var s=a[o++];this.emit("canceled",s)}this.options.uploadMultiple&&this.emit("canceledmultiple",i)}else e.status!==t.ADDED&&e.status!==t.QUEUED||(e.status=t.CANCELED,this.emit("canceled",e),this.options.uploadMultiple&&this.emit("canceledmultiple",[e]));if(this.options.autoProcessQueue)return this.processQueue()}},{key:"resolveOption",value:function(e){if("function"==typeof e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return e.apply(this,i)}return e}},{key:"uploadFile",value:function(e){return this.uploadFiles([e])}},{key:"uploadFiles",value:function(e){var i=this;this._transformFiles(e,function(n){if(e[0].upload.chunked){var r=e[0],o=n[0];r.upload.chunks=[];var a=function(){for(var n=0;void 0!==r.upload.chunks[n];)n++;if(!(n>=r.upload.totalChunkCount)){0;var a=n*i.options.chunkSize,s=Math.min(a+i.options.chunkSize,r.size),l={name:i._getParamName(0),data:o.webkitSlice?o.webkitSlice(a,s):o.slice(a,s),filename:r.upload.filename,chunkIndex:n};r.upload.chunks[n]={file:r,index:n,dataBlock:l,status:t.UPLOADING,progress:0,retries:0},i._uploadData(e,[l])}};if(r.upload.finishedChunkUpload=function(n){var o=!0;n.status=t.SUCCESS,n.dataBlock=null,n.xhr=null;for(var s=0;s<r.upload.totalChunkCount;s++){if(void 0===r.upload.chunks[s])return a();r.upload.chunks[s].status!==t.SUCCESS&&(o=!1)}o&&i.options.chunksUploaded(r,function(){i._finished(e,"",null)})},i.options.parallelChunkUploads)for(var s=0;s<r.upload.totalChunkCount;s++)a();else a()}else{for(var l=[],u=0;u<e.length;u++)l[u]={name:i._getParamName(u),data:n[u],filename:e[u].upload.filename};i._uploadData(e,l)}})}},{key:"_getChunk",value:function(e,t){for(var i=0;i<e.upload.totalChunkCount;i++)if(void 0!==e.upload.chunks[i]&&e.upload.chunks[i].xhr===t)return e.upload.chunks[i]}},{key:"_uploadData",value:function(e,i){for(var n=this,r=new XMLHttpRequest,o=0,a=a=e;;){if(o>=a.length)break;a[o++].xhr=r}e[0].upload.chunked&&(e[0].upload.chunks[i[0].chunkIndex].xhr=r);var s=this.resolveOption(this.options.method,e),l=this.resolveOption(this.options.url,e);r.open(s,l,!0),r.timeout=this.resolveOption(this.options.timeout,e),r.withCredentials=!!this.options.withCredentials,r.onload=function(t){n._finishedUploading(e,r,t)},r.onerror=function(){n._handleUploadError(e,r)},(null!=r.upload?r.upload:r).onprogress=function(t){return n._updateFilesUploadProgress(e,r,t)};var u={Accept:"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};this.options.headers&&t.extend(u,this.options.headers);for(var d in u){var c=u[d];c&&r.setRequestHeader(d,c)}var p=new FormData;if(this.options.params){var h=this.options.params;"function"==typeof h&&(h=h.call(this,e,r,e[0].upload.chunked?this._getChunk(e[0],r):null));for(var f in h){var m=h[f];p.append(f,m)}}for(var v=0,g=g=e;;){if(v>=g.length)break;var k=g[v++];this.emit("sending",k,r,p)}this.options.uploadMultiple&&this.emit("sendingmultiple",e,r,p),this._addFormElementData(p);for(var y=0;y<i.length;y++){var b=i[y];p.append(b.name,b.data,b.filename)}this.submitRequest(r,p,e)}},{key:"_transformFiles",value:function(e,t){for(var i=this,n=[],r=0,o=function(o){i.options.transformFile.call(i,e[o],function(i){n[o]=i,++r===e.length&&t(n)})},a=0;a<e.length;a++)o(a)}},{key:"_addFormElementData",value:function(e){if("FORM"===this.element.tagName)for(var t=0,i=i=this.element.querySelectorAll("input, textarea, select, button");;){if(t>=i.length)break;var n=i[t++],r=n.getAttribute("name"),o=n.getAttribute("type");if(o&&(o=o.toLowerCase()),void 0!==r&&null!==r)if("SELECT"===n.tagName&&n.hasAttribute("multiple"))for(var a=0,s=s=n.options;;){if(a>=s.length)break;var l=s[a++];l.selected&&e.append(r,l.value)}else(!o||"checkbox"!==o&&"radio"!==o||n.checked)&&e.append(r,n.value)}}},{key:"_updateFilesUploadProgress",value:function(e,t,i){var n=void 0;if(void 0!==i){if(n=100*i.loaded/i.total,e[0].upload.chunked){var r=e[0],o=this._getChunk(r,t);o.progress=n,o.total=i.total,o.bytesSent=i.loaded;r.upload.progress=0,r.upload.total=0,r.upload.bytesSent=0;for(var a=0;a<r.upload.totalChunkCount;a++)void 0!==r.upload.chunks[a]&&void 0!==r.upload.chunks[a].progress&&(r.upload.progress+=r.upload.chunks[a].progress,r.upload.total+=r.upload.chunks[a].total,r.upload.bytesSent+=r.upload.chunks[a].bytesSent);r.upload.progress=r.upload.progress/r.upload.totalChunkCount}else for(var s=0,l=l=e;;){if(s>=l.length)break;var u=l[s++];u.upload.progress=n,u.upload.total=i.total,u.upload.bytesSent=i.loaded}for(var d=0,c=c=e;;){if(d>=c.length)break;var p=c[d++];this.emit("uploadprogress",p,p.upload.progress,p.upload.bytesSent)}}else{var h=!0;n=100;for(var f=0,m=m=e;;){if(f>=m.length)break;var v=m[f++];100===v.upload.progress&&v.upload.bytesSent===v.upload.total||(h=!1),v.upload.progress=n,v.upload.bytesSent=v.upload.total}if(h)return;for(var g=0,k=k=e;;){if(g>=k.length)break;var y=k[g++];this.emit("uploadprogress",y,n,y.upload.bytesSent)}}}},{key:"_finishedUploading",value:function(e,i,n){var r=void 0;if(e[0].status!==t.CANCELED&&4===i.readyState){if("arraybuffer"!==i.responseType&&"blob"!==i.responseType&&(r=i.responseText,i.getResponseHeader("content-type")&&~i.getResponseHeader("content-type").indexOf("application/json")))try{r=JSON.parse(r)}catch(e){n=e,r="Invalid JSON response from server."}this._updateFilesUploadProgress(e),200<=i.status&&i.status<300?e[0].upload.chunked?e[0].upload.finishedChunkUpload(this._getChunk(e[0],i)):this._finished(e,r,n):this._handleUploadError(e,i,r)}}},{key:"_handleUploadError",value:function(e,i,n){if(e[0].status!==t.CANCELED){if(e[0].upload.chunked&&this.options.retryChunks){var r=this._getChunk(e[0],i);if(r.retries++<this.options.retryChunksLimit)return void this._uploadData(e,[r.dataBlock]);console.warn("Retried this chunk too often. Giving up.")}for(var o=0,a=a=e;;){if(o>=a.length)break;a[o++];this._errorProcessing(e,n||this.options.dictResponseError.replace("{{statusCode}}",i.status),i)}}}},{key:"submitRequest",value:function(e,t,i){e.send(t)}},{key:"_finished",value:function(e,i,n){for(var r=0,o=o=e;;){if(r>=o.length)break;var a=o[r++];a.status=t.SUCCESS,this.emit("success",a,i,n),this.emit("complete",a)}if(this.options.uploadMultiple&&(this.emit("successmultiple",e,i,n),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}},{key:"_errorProcessing",value:function(e,i,n){for(var r=0,o=o=e;;){if(r>=o.length)break;var a=o[r++];a.status=t.ERROR,this.emit("error",a,i,n),this.emit("complete",a)}if(this.options.uploadMultiple&&(this.emit("errormultiple",e,i,n),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}}],[{key:"uuidv4",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}}]),t}();Dropzone.initClass(),Dropzone.version="5.5.0",Dropzone.options={},Dropzone.optionsForElement=function(e){return e.getAttribute("id")?Dropzone.options[camelize(e.getAttribute("id"))]:void 0},Dropzone.instances=[],Dropzone.forElement=function(e){if("string"==typeof e&&(e=document.querySelector(e)),null==(null!=e?e.dropzone:void 0))throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");return e.dropzone},Dropzone.autoDiscover=!0,Dropzone.discover=function(){var e=void 0;if(document.querySelectorAll)e=document.querySelectorAll(".dropzone");else{e=[];var t=function(t){return function(){for(var i=[],n=0,r=r=t;;){if(n>=r.length)break;var o=r[n++];/(^| )dropzone($| )/.test(o.className)?i.push(e.push(o)):i.push(void 0)}return i}()};t(document.getElementsByTagName("div")),t(document.getElementsByTagName("form"))}return function(){for(var t=[],i=0,n=n=e;;){if(i>=n.length)break;var r=n[i++];!1!==Dropzone.optionsForElement(r)?t.push(new Dropzone(r)):t.push(void 0)}return t}()},Dropzone.blacklistedBrowsers=[/opera.*(Macintosh|Windows Phone).*version\/12/i],Dropzone.isBrowserSupported=function(){var e=!0;if(window.File&&window.FileReader&&window.FileList&&window.Blob&&window.FormData&&document.querySelector)if("classList"in document.createElement("a"))for(var t=0,i=i=Dropzone.blacklistedBrowsers;;){if(t>=i.length)break;i[t++].test(navigator.userAgent)&&(e=!1)}else e=!1;else e=!1;return e},Dropzone.dataURItoBlob=function(e){for(var t=atob(e.split(",")[1]),i=e.split(",")[0].split(":")[1].split(";")[0],n=new ArrayBuffer(t.length),r=new Uint8Array(n),o=0,a=t.length,s=0<=a;s?o<=a:o>=a;s?o++:o--)r[o]=t.charCodeAt(o);return new Blob([n],{type:i})};var without=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},camelize=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};Dropzone.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},Dropzone.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},Dropzone.getElement=function(e,t){var i=void 0;if("string"==typeof e?i=document.querySelector(e):null!=e.nodeType&&(i=e),null==i)throw new Error("Invalid `"+t+"` option provided. Please provide a CSS selector or a plain HTML element.");return i},Dropzone.getElements=function(e,t){var i=void 0,n=void 0;if(e instanceof Array){n=[];try{for(var r=0,o=o=e;!(r>=o.length);)i=o[r++],n.push(this.getElement(i,t))}catch(e){n=null}}else if("string"==typeof e){n=[];for(var a=0,s=s=document.querySelectorAll(e);!(a>=s.length);)i=s[a++],n.push(i)}else null!=e.nodeType&&(n=[e]);if(null==n||!n.length)throw new Error("Invalid `"+t+"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.");return n},Dropzone.confirm=function(e,t,i){return window.confirm(e)?t():null!=i?i():void 0},Dropzone.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");for(var i=e.type,n=i.replace(/\/.*$/,""),r=0,o=o=t;;){if(r>=o.length)break;var a=o[r++];if("."===(a=a.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(a.toLowerCase(),e.name.length-a.length))return!0}else if(/\/\*$/.test(a)){if(n===a.replace(/\/.*$/,""))return!0}else if(i===a)return!0}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new Dropzone(this,e)})}),"undefined"!=typeof module&&null!==module?module.exports=Dropzone:window.Dropzone=Dropzone,Dropzone.ADDED="added",Dropzone.QUEUED="queued",Dropzone.ACCEPTED=Dropzone.QUEUED,Dropzone.UPLOADING="uploading",Dropzone.PROCESSING=Dropzone.UPLOADING,Dropzone.CANCELED="canceled",Dropzone.ERROR="error",Dropzone.SUCCESS="success";var detectVerticalSquash=function(e){e.naturalWidth;var t=e.naturalHeight,i=document.createElement("canvas");i.width=1,i.height=t;var n=i.getContext("2d");n.drawImage(e,0,0);for(var r=n.getImageData(1,0,1,t).data,o=0,a=t,s=t;s>o;){0===r[4*(s-1)+3]?a=s:o=s,s=a+o>>1}var l=s/t;return 0===l?1:l},drawImageIOSFix=function(e,t,i,n,r,o,a,s,l,u){var d=detectVerticalSquash(t);return e.drawImage(t,i,n,r,o,a,s,l,u/d)},ExifRestore=function(){function e(){_classCallCheck(this,e)}return _createClass(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",i=void 0,n=void 0,r="",o=void 0,a=void 0,s=void 0,l="",u=0;o=(i=e[u++])>>2,a=(3&i)<<4|(n=e[u++])>>4,s=(15&n)<<2|(r=e[u++])>>6,l=63&r,isNaN(n)?s=l=64:isNaN(r)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(l),i=n=r="",o=a=s=l="",u<e.length;);return t}},{key:"restore",value:function(e,t){if(!e.match("data:image/jpeg;base64,"))return t;var i=this.decode64(e.replace("data:image/jpeg;base64,","")),n=this.slice2Segments(i),r=this.exifManipulation(t,n);return"data:image/jpeg;base64,"+this.encode64(r)}},{key:"exifManipulation",value:function(e,t){var i=this.getExifArray(t),n=this.insertExif(e,i);return new Uint8Array(n)}},{key:"getExifArray",value:function(e){for(var t=void 0,i=0;i<e.length;){if(255===(t=e[i])[0]&225===t[1])return t;i++}return[]}},{key:"insertExif",value:function(e,t){var i=e.replace("data:image/jpeg;base64,",""),n=this.decode64(i),r=n.indexOf(255,3),o=n.slice(0,r),a=n.slice(r),s=o;return s=(s=s.concat(t)).concat(a)}},{key:"slice2Segments",value:function(e){for(var t=0,i=[];;){if(255===e[t]&218===e[t+1])break;if(255===e[t]&216===e[t+1])t+=2;else{var n=t+(256*e[t+2]+e[t+3])+2,r=e.slice(t,n);i.push(r),t=n}if(t>e.length)break}return i}},{key:"decode64",value:function(e){var t=void 0,i=void 0,n="",r=void 0,o=void 0,a="",s=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(s++))<<2|(r=this.KEY_STR.indexOf(e.charAt(s++)))>>4,i=(15&r)<<4|(o=this.KEY_STR.indexOf(e.charAt(s++)))>>2,n=(3&o)<<6|(a=this.KEY_STR.indexOf(e.charAt(s++))),l.push(t),64!==o&&l.push(i),64!==a&&l.push(n),t=i=n="",r=o=a="",s<e.length;);return l}}]),e}();ExifRestore.initClass();var contentLoaded=function(e,t){var i=!1,n=!0,r=e.document,o=r.documentElement,a=r.addEventListener?"addEventListener":"attachEvent",s=r.addEventListener?"removeEventListener":"detachEvent",l=r.addEventListener?"":"on",u=function n(o){if("readystatechange"!==o.type||"complete"===r.readyState)return("load"===o.type?e:r)[s](l+o.type,n,!1),!i&&(i=!0)?t.call(e,o.type||o):void 0};if("complete"!==r.readyState){if(r.createEventObject&&o.doScroll){try{n=!e.frameElement}catch(e){}n&&function e(){try{o.doScroll("left")}catch(t){return void setTimeout(e,50)}return u("poll")}()}return r[a](l+"DOMContentLoaded",u,!1),r[a](l+"readystatechange",u,!1),e[a](l+"load",u,!1)}};function __guard__(e,t){return void 0!==e&&null!==e?t(e):void 0}function __guardMethod__(e,t,i){return void 0!==e&&null!==e&&"function"==typeof e[t]?i(e,t):void 0}Dropzone._autoDiscoverFunction=function(){if(Dropzone.autoDiscover)return Dropzone.discover()},contentLoaded(window,Dropzone._autoDiscoverFunction);
Index: public/vendors/enjoyhint/enjoyhint.css
===================================================================
--- public/vendors/enjoyhint/enjoyhint.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/enjoyhint/enjoyhint.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+@font-face{font-family:casino_handregular;src:url(Casino_Hand/casino_hand-webfont.eot);src:url(Casino_Hand/casino_hand-webfont.eot?#iefix) format('embedded-opentype'),url(Casino_Hand/casino_hand-webfont.woff) format('woff'),url(Casino_Hand/casino_hand-webfont.ttf) format('truetype'),url(Casino_Hand/casino_hand-webfont.svg#casino_handregular) format('svg');font-weight:400;font-style:normal}.enjoyhint{position:fixed;width:100%;height:100%;top:0;left:0;z-index:1010;pointer-events:none;overflow:hidden}.enjoyhint_hide{display:none}.enjoyhint_disable_events{position:absolute;width:2000px;height:1500px;z-index:1011;pointer-events:all}.enjoyhint_next_btn,.enjoyhint_skip_btn{-webkit-box-sizing:content-box;width:100px;height:40px;font:normal normal normal 17px/40px "Advent Pro",Helvetica,sans-serif;cursor:pointer;margin:0 auto;letter-spacing:1px;text-align:center}.enjoyhint_close_btn,.enjoyhint_next_btn,.enjoyhint_skip_btn{z-index:1012;pointer-events:all;-o-text-overflow:clip;text-overflow:clip;-moz-box-sizing:content-box}.enjoyhint_next_btn{position:absolute;box-sizing:content-box;border:2px solid #1ecd97;-webkit-border-radius:40px;border-radius:40px;color:#1ecd97;background:rgba(0,0,0,0);-webkit-transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0);-moz-transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0);-o-transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0);transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0)}.enjoyhint_next_btn:hover{color:rgba(255,255,255,1);background:#1ecd97}.enjoyhint_next_btn:active{border:2px solid rgba(33,224,163,1);background:rgba(33,224,163,1);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.enjoyhint_skip_btn{box-sizing:content-box;border:2px solid #1ecd97;-webkit-border-radius:40px;border-radius:40px;color:#1ecd97;background:rgba(0,0,0,0);-webkit-transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0);-moz-transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0);-o-transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0);transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0)}.enjoyhint_skip_btn:hover{color:rgba(255,255,255,1);background:#1ecd97}.enjoyhint_skip_btn:active{border:2px solid rgba(33,224,163,1);background:rgba(33,224,163,1);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.enjoyhint_close_btn{display:inline-block;position:absolute;-webkit-box-sizing:content-box;box-sizing:content-box;width:.3em;height:.3em;border:none;-webkit-border-radius:1em;border-radius:1em;font:400 8em/normal Arial,Helvetica,sans-serif;color:rgba(0,0,0,1);background:rgba(0,0,0,0);border:2px solid rgba(33,224,163,1)}.enjoyhint_close_btn::after,.enjoyhint_close_btn::before{-webkit-box-sizing:content-box;width:73%;height:2px;position:absolute;content:"";border:none;font:400 100%/normal Arial,Helvetica,sans-serif;color:rgba(0,0,0,1);background:#fff;text-shadow:none;-o-text-overflow:clip;text-overflow:clip;display:inline-block}.enjoyhint_close_btn::before{-moz-box-sizing:content-box;box-sizing:content-box;top:48%;left:14%;-webkit-transform:rotateZ(45deg);transform:rotateZ(45deg)}.enjoyhint_close_btn::after{-moz-box-sizing:content-box;box-sizing:content-box;top:46%;left:15%;-webkit-transform:rotateZ(-45deg);transform:rotateZ(-45deg)}.enjoyhint_close_btn:hover{color:rgba(255,255,255,1);background:#1ecd97;cursor:pointer}.enjoyhint_close_btn:active{border:2px solid rgba(33,224,163,1);background:rgba(33,224,163,1);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.enjoyhint_btn{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;width:150px;height:40px;cursor:pointer;margin:0 auto;border:2px solid #1ecd97;-webkit-border-radius:40px;border-radius:40px;font:normal normal normal 17px/40px "Advent Pro",Helvetica,sans-serif;color:#1ecd97;text-align:center;-o-text-overflow:clip;text-overflow:clip;letter-spacing:1px;background:rgba(0,0,0,0);-webkit-transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0);-moz-transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0);-o-transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0);transition:background-color .3s cubic-bezier(0,0,0,0),color .3s cubic-bezier(0,0,0,0),width .3s cubic-bezier(0,0,0,0),border-width .3s cubic-bezier(0,0,0,0),border-color .3s cubic-bezier(0,0,0,0)}#kinetic_container,.enjoyhint_canvas,.enjoyhint_svg_wrapper,.enjoyhint_svg_wrapper svg{width:100%;height:100%;position:absolute}.enjoyhint_btn:hover{color:rgba(255,255,255,1);background:#1ecd97}.enjoyhint_btn:active{border:2px solid rgba(33,224,163,1);background:rgba(33,224,163,1);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.enjoyhint div.canvas-container{position:absolute}.enjoyhint_canvas{z-index:100;pointer-events:none}#kinetic_container{pointer-events:none;top:0;left:0}.enjoyhint_svg_wrapper{top:0;left:0;z-index:100;-webkit-transition:opacity .4s cubic-bezier(.42,0,.58,1);-moz-transition:opacity .4s cubic-bezier(.42,0,.58,1);transition:opacity .4s cubic-bezier(.42,0,.58,1)}.enjoyhint_svg_wrapper svg{top:0;left:0}.enjoyhint_svg_transparent .enjoy_hint_label,.enjoyhint_svg_transparent .enjoyhint_svg_wrapper{opacity:0}.enjoy_hint_label{position:absolute;color:#fff;z-index:107;font-size:22px;font-family:casino_handregular,Arial;-webkit-transition:opacity .4s cubic-bezier(.42,0,.58,1);-moz-transition:opacity .4s cubic-bezier(.42,0,.58,1);transition:opacity .4s cubic-bezier(.42,0,.58,1);display:inline-block;min-width:200px;text-align:center;max-width:80%}div.kineticjs-content{position:absolute!important}.enjoyhint_skip_btn{position:fixed}
Index: public/vendors/enjoyhint/enjoyhint.min.js
===================================================================
--- public/vendors/enjoyhint/enjoyhint.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/enjoyhint/enjoyhint.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+var EnjoyHint=function(a){var b,c=this,d={onStart:function(){},onEnd:function(){},onSkip:function(){},onNext:function(){}},e=$.extend(d,a),f=[],g=0;$body=$("body");var h=function(){$(".enjoyhint")&&$(".enjoyhint").remove(),$body.css({overflow:"hidden"}),$(document).on("touchmove",i),$body.enjoyhint({onNextClick:function(){l()},onSkipClick:function(){e.onSkip(),m()}})},i=function(a){a.preventDefault()},j=function(){$(".enjoyhint").remove(),$body.css({overflow:"auto"}),$(document).off("touchmove",i)};c.clear=function(){var a=$(".enjoyhint_next_btn"),b=$(".enjoyhint_skip_btn");a.removeClass(c.nextUserClass),a.text("Next"),b.removeClass(c.skipUserClass),b.text("Skip")};var k=function(){if(!f||!f[g])return $body.enjoyhint("hide"),e.onEnd(),void j();e.onNext();var a=$(".enjoyhint");a.removeClass("enjoyhint-step-"+g),a.removeClass("enjoyhint-step-"+(g+1)),a.addClass("enjoyhint-step-"+(g+1));var d=f[g];d.onBeforeStart&&"function"==typeof d.onBeforeStart&&d.onBeforeStart();var h=d.timeout||0;setTimeout(function(){if(!d.selector)for(var a in d)d.hasOwnProperty(a)&&a.split(" ")[1]&&(d.selector=a.split(" ")[1],d.event=a.split(" ")[0],"next"!=a.split(" ")[0]&&"auto"!=a.split(" ")[0]&&"custom"!=a.split(" ")[0]||(d.event_type=a.split(" ")[0]),d.description=d[a]);setTimeout(function(){c.clear()},250),$(document.body).scrollTo(d.selector,d.scrollAnimationSpeed||250,{offset:-100}),setTimeout(function(){var a=$(d.selector),e=n(d.event);if($body.enjoyhint("show"),$body.enjoyhint("hide_next"),b=a,d.event_selector&&(b=$(d.event_selector)),d.event_type||"key"!=d.event||a.keydown(function(a){a.which==d.keyCode&&(g++,k())}),1==d.showNext&&$body.enjoyhint("show_next"),0==d.showSkip?$body.enjoyhint("hide_skip"):$body.enjoyhint("show_skip"),1==d.showSkip,d.nextButton){var f=$(".enjoyhint_next_btn");f.addClass(d.nextButton.className||""),f.text(d.nextButton.text||"Next"),c.nextUserClass=d.nextButton.className}if(d.skipButton){var h=$(".enjoyhint_skip_btn");h.addClass(d.skipButton.className||""),h.text(d.skipButton.text||"Skip"),c.skipUserClass=d.skipButton.className}if(d.event_type)switch(d.event_type){case"auto":switch(a[d.event](),d.event){case"click":}return g++,void k();case"custom":o(d.event,function(){g++,p(d.event),k()});break;case"next":$body.enjoyhint("show_next")}else b.on(e,function(a){d.keyCode&&a.keyCode!=d.keyCode||(g++,$(this).off(e),k())});var i=Math.max(a.outerWidth(),a.outerHeight()),j=d.radius||Math.round(i/2)+5,l=a.offset(),m=a.outerWidth(),q=a.outerHeight(),r=void 0!==d.margin?d.margin:10,s={x:l.left+Math.round(m/2),y:l.top+Math.round(q/2)-$(document).scrollTop()},t={enjoyHintElementSelector:d.selector,center_x:s.x,center_y:s.y,text:d.description,top:d.top,bottom:d.bottom,left:d.left,right:d.right,margin:d.margin,scroll:d.scroll};d.shape&&"circle"==d.shape?(t.shape="circle",t.radius=j):(t.radius=0,t.width=m+r,t.height=q+r),$body.enjoyhint("render_label_with_shape",t,c.stop)},d.scrollAnimationSpeed+20||270)},h)},l=function(){g++,k()},m=function(){var a=f[g],b=$(a.selector);p(a.event),b.off(n(a.event)),j()},n=function(a,b){return a+(b?"custom":"")+".enjoy_hint"},o=function(a,b){$body.on(n(a,!0),b)},p=function(a){$body.off(n(a,!0))};window.addEventListener("resize",function(){null!=b&&$body.enjoyhint("redo_events_near_rect",b[0].getBoundingClientRect())}),c.stop=function(){m()},c.reRunScript=function(a){g=a,k()},c.runScript=function(){g=0,e.onStart(),k()},c.resumeScript=function(){k()},c.setCurrentStep=function(a){g=a},c.getCurrentStep=function(){return g},c.trigger=function(a){switch(a){case"next":l();break;case"skip":m()}},c.setScript=function(a){a&&(f=a)},c.set=function(a){c.setScript(a)},c.setSteps=function(a){c.setScript(a)},c.run=function(){c.runScript()},c.resume=function(){c.resumeScript()},h()};CanvasRenderingContext2D.prototype.roundRect=function(a,b,c,d,e){return c<2*e&&(e=c/2),d<2*e&&(e=d/2),this.beginPath(),this.moveTo(a+e,b),this.arcTo(a+c,b,a+c,b+d,e),this.arcTo(a+c,b+d,a,b+d,e),this.arcTo(a,b+d,a,b,e),this.arcTo(a,b,a+c,b,e),this.closePath(),this},function(a){var b,c,d,e,f,g,h,i,j,k,l,m=window.innerWidth,n=window.innerHeight,o={init:function(o){return this.each(function(){function p(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)c.setAttribute(d,b[d]);return c}var q={onNextClick:function(){},onSkipClick:function(){},animation_time:800};this.enjoyhint_obj={},b=this.enjoyhint_obj,b.resetComponentStuff=function(){c=null,d=null,e=null,f=null,g=null,h=null,i=null,j=null,k=null,l=null,m=window.innerWidth,n=window.innerHeight};var r=a(this);b.options=jQuery.extend(q,o),b.gcl={chooser:"enjoyhint"},b.cl={enjoy_hint:"enjoyhint",hide:"enjoyhint_hide",disable_events_element:"enjoyhint_disable_events",btn:"enjoyhint_btn",skip_btn:"enjoyhint_skip_btn",close_btn:"enjoyhint_close_btn",next_btn:"enjoyhint_next_btn",main_canvas:"enjoyhint_canvas",main_svg:"enjoyhint_svg",svg_wrapper:"enjoyhint_svg_wrapper",svg_transparent:"enjoyhint_svg_transparent",kinetic_container:"kinetic_container"},b.canvas_size={w:1.4*a(window).width(),h:1.4*a(window).height()};var s="enj_canvas";b.enjoyhint=a("<div>",{class:b.cl.enjoy_hint+" "+b.cl.svg_transparent}).appendTo(r),b.enjoyhint_svg_wrapper=a("<div>",{class:b.cl.svg_wrapper+" "+b.cl.svg_transparent}).appendTo(b.enjoyhint),b.$stage_container=a('<div id="'+b.cl.kinetic_container+'">').appendTo(b.enjoyhint),b.$canvas=a('<canvas id="'+s+'" width="'+b.canvas_size.w+'" height="'+b.canvas_size.h+'" class="'+b.cl.main_canvas+'">').appendTo(b.enjoyhint),b.$svg=a('<svg width="'+b.canvas_size.w+'" height="'+b.canvas_size.h+'" class="'+b.cl.main_canvas+" "+b.cl.main_svg+'">').appendTo(b.enjoyhint_svg_wrapper);var t=a(p("defs")),u=a(p("marker",{id:"arrowMarker",viewBox:"0 0 36 21",refX:"21",refY:"10",markerUnits:"strokeWidth",orient:"auto",markerWidth:"16",markerHeight:"12"})),v=a(p("path",{style:"fill:none; stroke:rgb(255,255,255); stroke-width:2",d:"M0,0 c30,11 30,9 0,20"}));t.append(u.append(v)).appendTo(b.$svg),b.kinetic_stage=new Kinetic.Stage({container:b.cl.kinetic_container,width:b.canvas_size.w,height:b.canvas_size.h,scaleX:1}),b.layer=new Kinetic.Layer,b.rect=new Kinetic.Rect({fill:"rgba(0,0,0,0.6)",width:b.canvas_size.w,height:b.canvas_size.h});var w=a("<div>",{class:b.cl.disable_events_element}).appendTo(b.enjoyhint),x=w.clone().appendTo(b.enjoyhint),y=w.clone().appendTo(b.enjoyhint),z=w.clone().appendTo(b.enjoyhint),A=function(a){a.stopImmediatePropagation()};a("button").focusout(A),w.click(A),x.click(A),y.click(A),z.click(A),b.$skip_btn=a("<div>",{class:b.cl.skip_btn}).appendTo(b.enjoyhint).html("Skip").click(function(a){b.hide(),b.options.onSkipClick()}),b.$next_btn=a("<div>",{class:b.cl.next_btn}).appendTo(b.enjoyhint).html("Next").click(function(a){b.options.onNextClick()}),b.$close_btn=a("<div>",{class:b.cl.close_btn}).appendTo(b.enjoyhint).html("").click(function(a){b.hide(),b.options.onSkipClick()}),b.$canvas.mousedown(function(b){a("canvas").css({left:"4000px"});var c=document.elementFromPoint(b.clientX,b.clientY);return a("canvas").css({left:"0px"}),a(c).click(),!1});var B=0,C=130;b.shape=new Kinetic.Shape({radius:B,center_x:-C,center_y:-C,width:0,height:0,sceneFunc:function(a){var b=this.getContext("2d")._context,c=(this.pos,b.globalCompositeOperation);b.globalCompositeOperation="destination-out",b.beginPath();var d=this.attrs.center_x-Math.round(this.attrs.width/2),e=this.attrs.center_y-Math.round(this.attrs.height/2);b.roundRect(d,e,this.attrs.width,this.attrs.height,this.attrs.radius),b.fillStyle="red",b.fill(),b.globalCompositeOperation=c}}),b.shape.radius=B,b.layer.add(b.rect),b.layer.add(b.shape),b.kinetic_stage.add(b.layer),a(window).on("resize",function(){if(!a(b.stepData.enjoyHintElementSelector).is(":visible"))return b.stopFunction(),void a(window).off("resize");k=window.innerWidth,l=window.innerHeight;var o=a(b.stepData.enjoyHintElementSelector)[0].getBoundingClientRect();b.shape.attrs.center_x=Math.round(o.left+o.width/2),b.shape.attrs.center_y=Math.round(o.top+o.height/2),b.shape.attrs.width=o.width+11,b.shape.attrs.height=o.height+11;var p=window.innerWidth,q=window.innerHeight,r=p/m,s=q/n;if(b.kinetic_stage.setAttr("width",m*r),b.kinetic_stage.setAttr("height",n*s),null!=b.stepData){if(k=window.innerWidth,l=window.innerHeight,g||(g=b.shape.attrs.center_x,h=b.shape.attrs.center_y),!e){e=[];var t=a("#enjoyhint_arrpw_line").attr("d");e.push(t.substr(1).split(",")[0]),e.push(t.substr(t.indexOf("Q")+1).split(",")[0]),e.push(t.split(" ")[2].split(",")[0]),f=[],f.push(t.split(",")[1].split(" ")[0]),f.push(t.split(",")[2].split(" ")[0]),f.push(t.split(",")[3])}var u=a(".enjoy_hint_label");c||(c=u[0].getBoundingClientRect().left,d=u[0].getBoundingClientRect().top);var v=a(".enjoyhint_skip_btn");i||(i=v[0].getBoundingClientRect().left,j=v[0].getBoundingClientRect().top),u.css("left",window.innerWidth/2-u.outerWidth()/2);var w=u[0].getBoundingClientRect();if(window.innerWidth<640)a("#enjoyhint_arrpw_line").hide(),u.css("top",window.innerHeight/2-u.outerHeight()/2);else{a("#enjoyhint_arrpw_line").show(),u.css("top",d);var x,y,z,A,B=w.left+w.width/2<b.shape.attrs.center_x,C=w.top+w.height/2<b.shape.attrs.center_y;window.innerWidth<900?(x=Math.round(w.left+(w.width/2+15)*(w.left+w.width/2<b.shape.attrs.center_x?1:-1)),z=Math.round(w.top+w.height*(w.top+w.height/2<b.shape.attrs.center_y?1:-1)),y=Math.round(b.shape.attrs.center_x+(b.shape.attrs.radius+15)*(B?-1:1)),A=Math.round(b.shape.attrs.center_y)):(x=Math.round(w.left+w.width/2+(w.width/2+15)*(B?1:-1)),z=Math.round(w.top+w.height/2),y=Math.round(b.shape.attrs.center_x),A=Math.round(b.shape.attrs.center_y+(b.shape.attrs.height/2+15)*(C?-1:1)));var D=x<y?y:x,E=z<A?z:A;Math.abs(w.left+w.width/2-b.shape.attrs.center_x)<200&&(x=y=w.left+w.width/2,z=w.top,D=x,E=z,console.log("ok")),window.innerWidth<900&&(D=x<y?x:y,E=z<A?A:z);var F="M%d1,%d2 Q%d3,%d4 %d5,%d6".replace("%d1",x).replace("%d2",z).replace("%d3",D).replace("%d4",E).replace("%d5",y).replace("%d6",A);a("#enjoyhint_arrpw_line")[0].setAttribute("d",F)}var G=+i+(b.shape.attrs.center_x-g)/2;v.css("left",G<15?15:G),v.css("top",w.top+w.height+20)}b.rect=new Kinetic.Rect({fill:"rgba(0,0,0,0.6)",width:window.innerWidth,height:window.innerHeight}),b.layer.removeChildren(),b.layer.add(b.rect),b.layer.add(b.shape),b.layer.draw(),b.kinetic_stage.draw()});[b.enjoyhint,w,x,y,z];return b.show=function(){b.enjoyhint.removeClass(b.cl.hide)},b.hide=function(){b.enjoyhint.addClass(b.cl.hide);var a=new Kinetic.Tween({node:b.shape,duration:.002,center_x:-C,center_y:-C});a.play()},b.hide(),b.hideNextBtn=function(){b.$next_btn.addClass(b.cl.hide),b.nextBtn="hide"},b.showNextBtn=function(){b.$next_btn.removeClass(b.cl.hide),b.nextBtn="show"},b.hideSkipBtn=function(){b.$skip_btn.addClass(b.cl.hide)},b.showSkipBtn=function(){b.$skip_btn.removeClass(b.cl.hide)},b.renderCircle=function(a){var c=a.r||0,d=a.x||0,e=a.y||0,f=new Kinetic.Tween({node:b.shape,duration:.2,center_x:d,center_y:e,width:2*c,height:2*c,radius:c});f.play();var g=d-c,h=d+c,i=e-c,j=e+c,k=20;return{x:d,y:e,left:g,right:h,top:i,bottom:j,conn:{left:{x:g-k,y:e},right:{x:h+k,y:e},top:{x:d,y:i-k},bottom:{x:d,y:j+k}}}},b.renderRect=function(a,c){var d=a.r||0,e=a.x||0,f=a.y||0,g=a.w||0,h=a.h||0,i=20,j=new Kinetic.Tween({node:b.shape,duration:c,center_x:e,center_y:f,width:g,height:h,radius:d});j.play();var k=Math.round(g/2),l=Math.round(h/2),m=e-k,n=e+k,o=f-l,p=f+l;return{x:e,y:f,left:m,right:n,top:o,bottom:p,conn:{left:{x:m-i,y:f},right:{x:n+i,y:f},top:{x:e,y:o-i},bottom:{x:e,y:p+i}}}},b.renderLabel=function(c){var d=c.x||0;b.originalElementX=d;var e=c.y||0,f=(c.text||0,b.getLabelElement({x:d,y:e,text:c.text})),g=f.width(),h=f.height(),i=f.offset().left,j=f.offset().left+g,k=f.offset().top-a(document).scrollTop(),l=f.offset().top+h,m=10,n={x:i-m,y:k+Math.round(h/2)},o={x:j+m,y:k+Math.round(h/2)},p={x:i+Math.round(g/2),y:k-m},q={x:i+Math.round(g/2),y:l+m};return f.detach(),setTimeout(function(){a("#enjoyhint_label").remove(),f.appendTo(b.enjoyhint)},b.options.animation_time/2),{label:f,left:i,right:j,top:k,bottom:l,conn:{left:n,right:o,top:p,bottom:q}}},b.renderArrow=function(c){if(window.innerWidth>=640){var d=c.x_from||0,e=c.y_from||0,f=c.x_to||0,g=c.y_to||0,h=c.by_top_side,i=0,j=0;h?e>=g?(j=g,i=d):(j=e,i=f):e>=g?(j=e,i=f):(j=g,i=d)}c.text||"";b.enjoyhint.addClass(b.cl.svg_transparent),setTimeout(function(){a("#enjoyhint_arrpw_line").remove();var c="M"+d+","+e+" Q"+i+","+j+" "+f+","+g;b.$svg.append(p("path",{style:"fill:none; stroke:rgb(255,255,255); stroke-width:3","marker-end":"url(#arrowMarker)",d:c,id:"enjoyhint_arrpw_line"})),b.enjoyhint.removeClass(b.cl.svg_transparent)},b.options.animation_time/2)},b.getLabelElement=function(c){return a("<div>",{class:"enjoy_hint_label",id:"enjoyhint_label"}).css({top:c.y+"px",left:c.x+"px"}).html(c.text).appendTo(b.enjoyhint)},b.disableEventsNearRect=function(a){w.css({top:"0",left:"0"}).height(a.top),x.css({top:a.bottom+"px",left:"0"}),y.css({top:"0",left:"0px"}).width(a.left),z.css({top:"0",left:a.right+"px"})},function(a){a.event.special.destroyed={remove:function(a){a.handler&&a.handler()}}}(jQuery),b.renderLabelWithShape=function(c){function d(b){return"MD-DIALOG"===b.tagName?b:"undefined"==typeof b.tagName?null:d(a(b).parent()[0])}function e(a,b,c){H=a,I=b,G=c}function f(a,b,c,d,f){var g=[];g=L?a:O?b:N?c:P?d:f,g&&e(g[0],g[1],g[2])}b.stepData=c;var g=d(a(b.stepData.enjoyHintElementSelector)[0]);null!=g&&a(g).on("dialogClosing",function(){b.stopFunction()}),b.resetComponentStuff();var h=c.shape||"rect",i={},j=0,k=0,l={top:c.top||0,bottom:c.bottom||0,left:c.left||0,right:c.right||0};switch(h){case"circle":j=k=c.radius;var m={top:c.center_y-k+l.top,bottom:c.center_y+k-l.bottom,left:c.center_x-j+l.left,right:c.center_x+j-l.right},n=m.right-m.left,o=m.bottom-m.top;c.radius=Math.round(Math.min(n,o)/2),j=k=Math.round(c.radius/2);var p=Math.round(n/2),q=Math.round(o/2);c.center_x=m.left+p,c.center_y=m.top+q,i=b.renderCircle({x:c.center_x,y:c.center_y,r:c.radius});break;case"rect":j=Math.round(c.width/2),k=Math.round(c.height/2);var m={top:c.center_y-k+l.top,bottom:c.center_y+k-l.bottom,left:c.center_x-j+l.left,right:c.center_x+j-l.right};c.width=m.right-m.left,c.height=m.bottom-m.top,j=Math.round(c.width/2),k=Math.round(c.height/2),c.center_x=m.left+j,c.center_y=m.top+k,i=b.renderRect({x:c.center_x,y:c.center_y,w:c.width,h:c.height,r:c.radius},.2)}var r={w:b.enjoyhint.width(),h:b.enjoyhint.height()},s=b.getLabelElement({x:0,y:0,text:c.text}),t=s.outerWidth(),u=s.outerHeight();s.remove();var v=c.center_y-k,w=r.h-(c.center_y+k),x=(c.center_x-j,r.w-(c.center_x+j),r.w-c.center_x<c.center_x?"left":"right",r.h-c.center_y<c.center_y?"top":"bottom"),y=150,z=40,A=y+u+z,B=k+y,C="top"==x?c.center_y-B-u:c.center_y+B,D=window.innerWidth/2-t/2;v<A&&w<A&&(C=c.center_y+z),window.innerWidth<=640;var E=b.renderLabel({x:D,y:C,text:c.text});b.$next_btn.css({left:D,top:C+u+20});var F=D+b.$next_btn.width()+10;"hide"==b.nextBtn&&(F=D),b.$skip_btn.css({left:F,top:C+u+20}),b.$close_btn.css({right:10,top:10}),b.disableEventsNearRect({top:i.top,bottom:i.bottom,left:i.left,right:i.right});var G=!1,H="left",I="left",J=E.left<=i.x&&E.right>=i.x,K=E.right<i.x,L=(E.left>i.x,E.right<i.left,E.left>i.right,E.bottom<i.top),M=E.top>i.bottom,N=E.bottom>=i.y&&E.top<=i.y,O=E.bottom<=i.y&&!L,P=E.top>=i.y&&!M;if(J)if(L)e("bottom","top","top");else{if(!M)return;e("top","bottom","bottom")}else K?f(["right","top","top"],["bottom","left","bottom"],["right","left","top"],["top","left","top"],["right","bottom","bottom"]):f(["left","top","top"],["bottom","right","bottom"],["left","right","top"],["top","right","top"],["left","bottom","bottom"]);var Q=E.conn[H],R=i.conn[I],S="top"==G;b.renderArrow({x_from:Q.x,y_from:Q.y,x_to:window.innerWidth<640?i.left+(i.left>0):R.x,y_to:window.innerWidth<640?i.conn.left.y:R.y,by_top_side:S})},b.clear=function(){b.ctx.clearRect(0,0,3e3,2e3)},this})},set:function(a){return this.each(function(){this.enjoyhint_obj.setValue(a)}),this},show:function(){return this.each(function(){this.enjoyhint_obj.show()}),this},hide:function(){return this.each(function(){this.enjoyhint_obj.hide()}),this},hide_next:function(){return this.each(function(){this.enjoyhint_obj.hideNextBtn()}),this},show_next:function(){return this.each(function(){this.enjoyhint_obj.showNextBtn()}),this},hide_skip:function(){return this.each(function(){this.enjoyhint_obj.hideSkipBtn()}),this},show_skip:function(){return this.each(function(){this.enjoyhint_obj.showSkipBtn()}),this},render_circle:function(a,b,c){return this.each(function(){this.enjoyhint_obj.renderCircle(a,b,c)}),this},render_label:function(a,b,c){return this.each(function(){this.enjoyhint_obj.renderLabel(a,b,c)}),this},render_label_with_shape:function(a,c){return this.each(function(){b.stopFunction=c,this.enjoyhint_obj.renderLabelWithShape(a)}),this},redo_events_near_rect:function(a){b.disableEventsNearRect({top:a.top,bottom:a.bottom,left:a.left,right:a.right})},clear:function(){return this.each(function(){this.enjoyhint_obj.clear()}),this},close:function(a){return this.each(function(){this.enjoyhint_obj.closePopdown()}),this}};a.fn.enjoyhint=function(b){return o[b]?o[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?(a.error("Method "+b+" does not exist on $.numinput"),this):o.init.apply(this,arguments)}}(window.jQuery);var Kinetic={};!function(a){var b=Math.PI/180;Kinetic={version:"5.2.0",stages:[],idCounter:0,ids:{},names:{},shapes:{},listenClickTap:!1,inDblClickWindow:!1,enableTrace:!1,traceArrMax:100,dblClickWindow:400,pixelRatio:void 0,dragDistance:0,angleDeg:!0,showWarnings:!0,Filters:{},Node:function(a){this._init(a)},Shape:function(a){this.__init(a)},Container:function(a){this.__init(a)},Stage:function(a){this.___init(a)},BaseLayer:function(a){this.___init(a)},Layer:function(a){this.____init(a)},FastLayer:function(a){this.____init(a)},Group:function(a){this.___init(a)},isDragging:function(){var a=Kinetic.DD;return!!a&&a.isDragging},isDragReady:function(){var a=Kinetic.DD;return!!a&&!!a.node},_addId:function(a,b){void 0!==b&&(this.ids[b]=a)},_removeId:function(a){void 0!==a&&delete this.ids[a]},_addName:function(a,b){if(void 0!==b)for(var c=b.split(/\s/g),d=0;d<c.length;d++){var e=c[d];e&&(void 0===this.names[e]&&(this.names[e]=[]),this.names[e].push(a))}},_removeName:function(a,b){if(void 0!==a){var c=this.names[a];if(void 0!==c){for(var d=0;d<c.length;d++){var e=c[d];e._id===b&&c.splice(d,1)}0===c.length&&delete this.names[a]}}},getAngle:function(a){return this.angleDeg?a*b:a},_parseUA:function(a){var b=a.toLowerCase(),c=/(chrome)[ \/]([\w.]+)/.exec(b)||/(webkit)[ \/]([\w.]+)/.exec(b)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(b)||/(msie) ([\w.]+)/.exec(b)||b.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(b)||[],d=!!a.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i),e=!!a.match(/IEMobile/i);return{browser:c[1]||"",version:c[2]||"0",mobile:d,ieMobile:e}},UA:void 0},Kinetic.UA=Kinetic._parseUA(a.navigator&&a.navigator.userAgent||"")}(this),function(a,b){if("object"==typeof exports){var c=b();if(global.window===global)Kinetic.document=global.document,Kinetic.window=global;else{var d=require("canvas"),e=require("jsdom").jsdom;Kinetic.document=e("<!DOCTYPE html><html><head></head><body></body></html>"),Kinetic.window=Kinetic.document.createWindow(),Kinetic.window.Image=d.Image,Kinetic._nodeCanvas=d}return Kinetic.root=a,void(module.exports=c)}"function"==typeof define&&define.amd&&define(b),Kinetic.document=document,Kinetic.window=window,Kinetic.root=a}(this,function(){return Kinetic}),function(){Kinetic.Collection=function(){var a=[].slice.call(arguments),b=a.length,c=0;for(this.length=b;b>c;c++)this[c]=a[c];return this},Kinetic.Collection.prototype=[],Kinetic.Collection.prototype.each=function(a){for(var b=0;b<this.length;b++)a(this[b],b)},Kinetic.Collection.prototype.toArray=function(){var a,b=[],c=this.length;for(a=0;c>a;a++)b.push(this[a]);return b},Kinetic.Collection.toCollection=function(a){var b,c=new Kinetic.Collection,d=a.length;for(b=0;d>b;b++)c.push(a[b]);return c},Kinetic.Collection._mapMethod=function(a){Kinetic.Collection.prototype[a]=function(){var b,c=this.length,d=[].slice.call(arguments);for(b=0;c>b;b++)this[b][a].apply(this[b],d);return this}},Kinetic.Collection.mapMethods=function(a){var b=a.prototype;for(var c in b)Kinetic.Collection._mapMethod(c)},Kinetic.Transform=function(a){this.m=a&&a.slice()||[1,0,0,1,0,0]},Kinetic.Transform.prototype={copy:function(){return new Kinetic.Transform(this.m)},point:function(a){var b=this.m;return{x:b[0]*a.x+b[2]*a.y+b[4],y:b[1]*a.x+b[3]*a.y+b[5]}},translate:function(a,b){return this.m[4]+=this.m[0]*a+this.m[2]*b,this.m[5]+=this.m[1]*a+this.m[3]*b,this},scale:function(a,b){return this.m[0]*=a,this.m[1]*=a,this.m[2]*=b,this.m[3]*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.m[0]*b+this.m[2]*c,e=this.m[1]*b+this.m[3]*c,f=this.m[0]*-c+this.m[2]*b,g=this.m[1]*-c+this.m[3]*b;return this.m[0]=d,this.m[1]=e,this.m[2]=f,this.m[3]=g,this},getTranslation:function(){return{x:this.m[4],y:this.m[5]}},skew:function(a,b){var c=this.m[0]+this.m[2]*b,d=this.m[1]+this.m[3]*b,e=this.m[2]+this.m[0]*a,f=this.m[3]+this.m[1]*a;return this.m[0]=c,this.m[1]=d,this.m[2]=e,this.m[3]=f,this},multiply:function(a){var b=this.m[0]*a.m[0]+this.m[2]*a.m[1],c=this.m[1]*a.m[0]+this.m[3]*a.m[1],d=this.m[0]*a.m[2]+this.m[2]*a.m[3],e=this.m[1]*a.m[2]+this.m[3]*a.m[3],f=this.m[0]*a.m[4]+this.m[2]*a.m[5]+this.m[4],g=this.m[1]*a.m[4]+this.m[3]*a.m[5]+this.m[5];return this.m[0]=b,this.m[1]=c,this.m[2]=d,this.m[3]=e,this.m[4]=f,this.m[5]=g,this},invert:function(){var a=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),b=this.m[3]*a,c=-this.m[1]*a,d=-this.m[2]*a,e=this.m[0]*a,f=a*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),g=a*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=b,this.m[1]=c,this.m[2]=d,this.m[3]=e,this.m[4]=f,this.m[5]=g,this},getMatrix:function(){return this.m},setAbsolutePosition:function(a,b){var c=this.m[0],d=this.m[1],e=this.m[2],f=this.m[3],g=this.m[4],h=this.m[5],i=(c*(b-h)-d*(a-g))/(c*f-d*e),j=(a-g-e*i)/c;return this.translate(j,i)}};var a="2d",b="[object Array]",c="[object Number]",d="[object String]",e=Math.PI/180,f=180/Math.PI,g="#",h="",i="0",j="Kinetic warning: ",k="Kinetic error: ",l="rgb(",m={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},n=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/;Kinetic.Util={_isElement:function(a){return!(!a||1!=a.nodeType)},_isFunction:function(a){return!!(a&&a.constructor&&a.call&&a.apply)},_isObject:function(a){return!!a&&a.constructor==Object},_isArray:function(a){return Object.prototype.toString.call(a)==b},_isNumber:function(a){return Object.prototype.toString.call(a)==c},_isString:function(a){return Object.prototype.toString.call(a)==d},_throttle:function(a,b,c){var d,e,f,g=null,h=0,i=c||{},j=function(){h=i.leading===!1?0:(new Date).getTime(),g=null,f=a.apply(d,e),d=e=null};return function(){var c=(new Date).getTime();h||i.leading!==!1||(h=c);var k=b-(c-h);return d=this,e=arguments,0>=k?(clearTimeout(g),g=null,h=c,f=a.apply(d,e),d=e=null):g||i.trailing===!1||(g=setTimeout(j,k)),f}},_hasMethods:function(a){var b,c=[];for(b in a)this._isFunction(a[b])&&c.push(b);return c.length>0},createCanvasElement:function(){var a=Kinetic.document.createElement("canvas");try{a.style=a.style||{}}catch(b){}return a},isBrowser:function(){return"object"!=typeof exports},_isInDocument:function(a){for(;a=a.parentNode;)if(a==Kinetic.document)return!0;return!1},_simplifyArray:function(a){var b,c,d=[],e=a.length,f=Kinetic.Util;for(b=0;e>b;b++)c=a[b],f._isNumber(c)?c=Math.round(1e3*c)/1e3:f._isString(c)||(c=c.toString()),d.push(c);return d},_getImage:function(b,c){var d,e;if(b)if(this._isElement(b))c(b);else if(this._isString(b))d=new Kinetic.window.Image,d.onload=function(){c(d)},d.src=b;else if(b.data){e=Kinetic.Util.createCanvasElement(),e.width=b.width,e.height=b.height;var f=e.getContext(a);f.putImageData(b,0,0),this._getImage(e.toDataURL(),c)}else c(null);else c(null)},_getRGBAString:function(a){var b=a.red||0,c=a.green||0,d=a.blue||0,e=a.alpha||1;return["rgba(",b,",",c,",",d,",",e,")"].join(h)},_rgbToHex:function(a,b,c){return((1<<24)+(a<<16)+(b<<8)+c).toString(16).slice(1)},_hexToRgb:function(a){a=a.replace(g,h);var b=parseInt(a,16);return{r:b>>16&255,g:b>>8&255,b:255&b}},getRandomColor:function(){for(var a=(16777215*Math.random()<<0).toString(16);a.length<6;)a=i+a;return g+a},get:function(a,b){return void 0===a?b:a},getRGB:function(a){var b;return a in m?(b=m[a],{r:b[0],g:b[1],b:b[2]}):a[0]===g?this._hexToRgb(a.substring(1)):a.substr(0,4)===l?(b=n.exec(a.replace(/ /g,"")),{r:parseInt(b[1],10),g:parseInt(b[2],10),b:parseInt(b[3],10)}):{r:0,g:0,b:0}},_merge:function(a,b){var c=this._clone(b);for(var d in a)c[d]=this._isObject(a[d])?this._merge(a[d],c[d]):a[d];return c},cloneObject:function(a){var b={};for(var c in a)b[c]=this._isObject(a[c])?this.cloneObject(a[c]):this._isArray(a[c])?this.cloneArray(a[c]):a[c];return b},cloneArray:function(a){return a.slice(0)},_degToRad:function(a){return a*e},_radToDeg:function(a){return a*f},_capitalize:function(a){return a.charAt(0).toUpperCase()+a.slice(1)},error:function(a){throw new Error(k+a)},warn:function(a){Kinetic.root.console&&console.warn&&Kinetic.showWarnings&&console.warn(j+a)},extend:function(a,b){function c(){this.constructor=a}c.prototype=b.prototype;var d=a.prototype;a.prototype=new c;for(var e in d)d.hasOwnProperty(e)&&(a.prototype[e]=d[e]);a.__super__=b.prototype},addMethods:function(a,b){var c;for(c in b)a.prototype[c]=b[c]},_getControlPoints:function(a,b,c,d,e,f,g){var h=Math.sqrt(Math.pow(c-a,2)+Math.pow(d-b,2)),i=Math.sqrt(Math.pow(e-c,2)+Math.pow(f-d,2)),j=g*h/(h+i),k=g*i/(h+i),l=c-j*(e-a),m=d-j*(f-b),n=c+k*(e-a),o=d+k*(f-b);return[l,m,n,o]},_expandPoints:function(a,b){var c,d,e=a.length,f=[];for(c=2;e-2>c;c+=2)d=Kinetic.Util._getControlPoints(a[c-2],a[c-1],a[c],a[c+1],a[c+2],a[c+3],b),f.push(d[0]),f.push(d[1]),f.push(a[c]),f.push(a[c+1]),f.push(d[2]),f.push(d[3]);return f},_removeLastLetter:function(a){return a.substring(0,a.length-1)}}}(),function(){var a=Kinetic.Util.createCanvasElement(),b=a.getContext("2d"),c=Kinetic.UA.mobile?function(){var a=window.devicePixelRatio||1,c=b.webkitBackingStorePixelRatio||b.mozBackingStorePixelRatio||b.msBackingStorePixelRatio||b.oBackingStorePixelRatio||b.backingStorePixelRatio||1;return a/c}():1;Kinetic.Canvas=function(a){this.init(a)},Kinetic.Canvas.prototype={init:function(a){var b=a||{},d=b.pixelRatio||Kinetic.pixelRatio||c;this.pixelRatio=d,this._canvas=Kinetic.Util.createCanvasElement(),this._canvas.style.padding=0,this._canvas.style.margin=0,this._canvas.style.border=0,this._canvas.style.background="transparent",this._canvas.style.position="absolute",this._canvas.style.top=0,this._canvas.style.left=0},getContext:function(){return this.context},getPixelRatio:function(){return this.pixelRatio},setPixelRatio:function(a){this.pixelRatio=a,this.setSize(this.getWidth(),this.getHeight())},setWidth:function(a){this.width=this._canvas.width=a*this.pixelRatio,this._canvas.style.width=a+"px"},setHeight:function(a){this.height=this._canvas.height=a*this.pixelRatio,this._canvas.style.height=a+"px"},getWidth:function(){return this.width},getHeight:function(){return this.height},setSize:function(a,b){this.setWidth(a),this.setHeight(b)},toDataURL:function(a,b){try{return this._canvas.toDataURL(a,b)}catch(c){try{return this._canvas.toDataURL()}catch(d){return Kinetic.Util.warn("Unable to get data URL. "+d.message),""}}}},Kinetic.SceneCanvas=function(a){var b=a||{},c=b.width||0,d=b.height||0;Kinetic.Canvas.call(this,b),this.context=new Kinetic.SceneContext(this),this.setSize(c,d)},Kinetic.SceneCanvas.prototype={setWidth:function(a){var b=this.pixelRatio,c=this.getContext()._context;Kinetic.Canvas.prototype.setWidth.call(this,a),c.scale(b,b)},setHeight:function(a){var b=this.pixelRatio,c=this.getContext()._context;Kinetic.Canvas.prototype.setHeight.call(this,a),c.scale(b,b)}},Kinetic.Util.extend(Kinetic.SceneCanvas,Kinetic.Canvas),Kinetic.HitCanvas=function(a){var b=a||{},c=b.width||0,d=b.height||0;Kinetic.Canvas.call(this,b),this.context=new Kinetic.HitContext(this),this.setSize(c,d),this.hitCanvas=!0},Kinetic.Util.extend(Kinetic.HitCanvas,Kinetic.Canvas)}(),function(){var a=",",b="(",c=")",d="([",e="])",f=";",g="()",h="=",i=["arc","arcTo","beginPath","bezierCurveTo","clearRect","clip","closePath","createLinearGradient","createPattern","createRadialGradient","drawImage","fill","fillText","getImageData","createImageData","lineTo","moveTo","putImageData","quadraticCurveTo","rect","restore","rotate","save","scale","setLineDash","setTransform","stroke","strokeText","transform","translate"];Kinetic.Context=function(a){this.init(a)},Kinetic.Context.prototype={init:function(a){this.canvas=a,this._context=a._canvas.getContext("2d"),Kinetic.enableTrace&&(this.traceArr=[],this._enableTrace())},fillShape:function(a){a.getFillEnabled()&&this._fill(a)},strokeShape:function(a){a.getStrokeEnabled()&&this._stroke(a)},fillStrokeShape:function(a){var b=a.getFillEnabled();b&&this._fill(a),a.getStrokeEnabled()&&this._stroke(a)},getTrace:function(i){var j,k,l,m,n=this.traceArr,o=n.length,p="";for(j=0;o>j;j++)k=n[j],l=k.method,l?(m=k.args,p+=l,p+=i?g:Kinetic.Util._isArray(m[0])?d+m.join(a)+e:b+m.join(a)+c):(p+=k.property,i||(p+=h+k.val)),p+=f;return p},clearTrace:function(){this.traceArr=[]},_trace:function(a){var b,c=this.traceArr;c.push(a),b=c.length,b>=Kinetic.traceArrMax&&c.shift()},reset:function(){var a=this.getCanvas().getPixelRatio();this.setTransform(1*a,0,0,1*a,0,0)},getCanvas:function(){return this.canvas},clear:function(a){var b=this.getCanvas();a?this.clearRect(a.x||0,a.y||0,a.width||0,a.height||0):this.clearRect(0,0,b.getWidth(),b.getHeight())},_applyLineCap:function(a){var b=a.getLineCap();b&&this.setAttr("lineCap",b)},_applyOpacity:function(a){var b=a.getAbsoluteOpacity();1!==b&&this.setAttr("globalAlpha",b)},_applyLineJoin:function(a){var b=a.getLineJoin();b&&this.setAttr("lineJoin",b)},setAttr:function(a,b){this._context[a]=b},arc:function(){var a=arguments;this._context.arc(a[0],a[1],a[2],a[3],a[4],a[5])},beginPath:function(){this._context.beginPath()},bezierCurveTo:function(){var a=arguments;this._context.bezierCurveTo(a[0],a[1],a[2],a[3],a[4],a[5])},clearRect:function(){var a=arguments;this._context.clearRect(a[0],a[1],a[2],a[3])},clip:function(){this._context.clip()},closePath:function(){this._context.closePath()},createImageData:function(){var a=arguments;return 2===a.length?this._context.createImageData(a[0],a[1]):1===a.length?this._context.createImageData(a[0]):void 0},createLinearGradient:function(){var a=arguments;return this._context.createLinearGradient(a[0],a[1],a[2],a[3])},createPattern:function(){var a=arguments;return this._context.createPattern(a[0],a[1])},createRadialGradient:function(){var a=arguments;return this._context.createRadialGradient(a[0],a[1],a[2],a[3],a[4],a[5])},drawImage:function(){var a=arguments,b=this._context;3===a.length?b.drawImage(a[0],a[1],a[2]):5===a.length?b.drawImage(a[0],a[1],a[2],a[3],a[4]):9===a.length&&b.drawImage(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8])},fill:function(){this._context.fill()},fillText:function(){var a=arguments;this._context.fillText(a[0],a[1],a[2])},getImageData:function(){var a=arguments;return this._context.getImageData(a[0],a[1],a[2],a[3])},lineTo:function(){var a=arguments;this._context.lineTo(a[0],a[1])},moveTo:function(){var a=arguments;this._context.moveTo(a[0],a[1])},rect:function(){var a=arguments;this._context.rect(a[0],a[1],a[2],a[3])},putImageData:function(){var a=arguments;this._context.putImageData(a[0],a[1],a[2])},quadraticCurveTo:function(){
+var a=arguments;this._context.quadraticCurveTo(a[0],a[1],a[2],a[3])},restore:function(){this._context.restore()},rotate:function(){var a=arguments;this._context.rotate(a[0])},save:function(){this._context.save()},scale:function(){var a=arguments;this._context.scale(a[0],a[1])},setLineDash:function(){var a=arguments,b=this._context;this._context.setLineDash?b.setLineDash(a[0]):"mozDash"in b?b.mozDash=a[0]:"webkitLineDash"in b&&(b.webkitLineDash=a[0])},setTransform:function(){var a=arguments;this._context.setTransform(a[0],a[1],a[2],a[3],a[4],a[5])},stroke:function(){this._context.stroke()},strokeText:function(){var a=arguments;this._context.strokeText(a[0],a[1],a[2])},transform:function(){var a=arguments;this._context.transform(a[0],a[1],a[2],a[3],a[4],a[5])},translate:function(){var a=arguments;this._context.translate(a[0],a[1])},_enableTrace:function(){var a,b,c=this,d=i.length,e=Kinetic.Util._simplifyArray,f=this.setAttr,g=function(a){var d,f=c[a];c[a]=function(){return b=e(Array.prototype.slice.call(arguments,0)),d=f.apply(c,arguments),c._trace({method:a,args:b}),d}};for(a=0;d>a;a++)g(i[a]);c.setAttr=function(){f.apply(c,arguments),c._trace({property:arguments[0],val:arguments[1]})}}},Kinetic.SceneContext=function(a){Kinetic.Context.call(this,a)},Kinetic.SceneContext.prototype={_fillColor:function(a){var b=a.fill()||Kinetic.Util._getRGBAString({red:a.fillRed(),green:a.fillGreen(),blue:a.fillBlue(),alpha:a.fillAlpha()});this.setAttr("fillStyle",b),a._fillFunc(this)},_fillPattern:function(a){var b=a.getFillPatternImage(),c=a.getFillPatternX(),d=a.getFillPatternY(),e=a.getFillPatternScale(),f=Kinetic.getAngle(a.getFillPatternRotation()),g=a.getFillPatternOffset(),h=a.getFillPatternRepeat();(c||d)&&this.translate(c||0,d||0),f&&this.rotate(f),e&&this.scale(e.x,e.y),g&&this.translate(-1*g.x,-1*g.y),this.setAttr("fillStyle",this.createPattern(b,h||"repeat")),this.fill()},_fillLinearGradient:function(a){var b=a.getFillLinearGradientStartPoint(),c=a.getFillLinearGradientEndPoint(),d=a.getFillLinearGradientColorStops(),e=this.createLinearGradient(b.x,b.y,c.x,c.y);if(d){for(var f=0;f<d.length;f+=2)e.addColorStop(d[f],d[f+1]);this.setAttr("fillStyle",e),this.fill()}},_fillRadialGradient:function(a){for(var b=a.getFillRadialGradientStartPoint(),c=a.getFillRadialGradientEndPoint(),d=a.getFillRadialGradientStartRadius(),e=a.getFillRadialGradientEndRadius(),f=a.getFillRadialGradientColorStops(),g=this.createRadialGradient(b.x,b.y,d,c.x,c.y,e),h=0;h<f.length;h+=2)g.addColorStop(f[h],f[h+1]);this.setAttr("fillStyle",g),this.fill()},_fill:function(a){var b=a.fill()||a.fillRed()||a.fillGreen()||a.fillBlue(),c=a.getFillPatternImage(),d=a.getFillLinearGradientColorStops(),e=a.getFillRadialGradientColorStops(),f=a.getFillPriority();b&&"color"===f?this._fillColor(a):c&&"pattern"===f?this._fillPattern(a):d&&"linear-gradient"===f?this._fillLinearGradient(a):e&&"radial-gradient"===f?this._fillRadialGradient(a):b?this._fillColor(a):c?this._fillPattern(a):d?this._fillLinearGradient(a):e&&this._fillRadialGradient(a)},_stroke:function(a){var b=a.dash(),c=a.getStrokeScaleEnabled();a.hasStroke()&&(c||(this.save(),this.setTransform(1,0,0,1,0,0)),this._applyLineCap(a),b&&a.dashEnabled()&&this.setLineDash(b),this.setAttr("lineWidth",a.strokeWidth()),this.setAttr("strokeStyle",a.stroke()||Kinetic.Util._getRGBAString({red:a.strokeRed(),green:a.strokeGreen(),blue:a.strokeBlue(),alpha:a.strokeAlpha()})),a._strokeFunc(this),c||this.restore())},_applyShadow:function(a){var b=Kinetic.Util,c=a.getAbsoluteOpacity(),d=b.get(a.getShadowColor(),"black"),e=b.get(a.getShadowBlur(),5),f=b.get(a.getShadowOpacity(),1),g=b.get(a.getShadowOffset(),{x:0,y:0});f&&this.setAttr("globalAlpha",f*c),this.setAttr("shadowColor",d),this.setAttr("shadowBlur",e),this.setAttr("shadowOffsetX",g.x),this.setAttr("shadowOffsetY",g.y)}},Kinetic.Util.extend(Kinetic.SceneContext,Kinetic.Context),Kinetic.HitContext=function(a){Kinetic.Context.call(this,a)},Kinetic.HitContext.prototype={_fill:function(a){this.save(),this.setAttr("fillStyle",a.colorKey),a._fillFuncHit(this),this.restore()},_stroke:function(a){a.hasStroke()&&(this._applyLineCap(a),this.setAttr("lineWidth",a.strokeWidth()),this.setAttr("strokeStyle",a.colorKey),a._strokeFuncHit(this))}},Kinetic.Util.extend(Kinetic.HitContext,Kinetic.Context)}(),function(){var a="get",b="set";Kinetic.Factory={addGetterSetter:function(a,b,c,d,e){this.addGetter(a,b,c),this.addSetter(a,b,d,e),this.addOverloadedGetterSetter(a,b)},addGetter:function(b,c,d){var e=a+Kinetic.Util._capitalize(c);b.prototype[e]=function(){var a=this.attrs[c];return void 0===a?d:a}},addSetter:function(a,c,d,e){var f=b+Kinetic.Util._capitalize(c);a.prototype[f]=function(a){return d&&(a=d.call(this,a)),this._setAttr(c,a),e&&e.call(this),this}},addComponentsGetterSetter:function(c,d,e,f,g){var h,i,j=e.length,k=Kinetic.Util._capitalize,l=a+k(d),m=b+k(d);c.prototype[l]=function(){var a={};for(h=0;j>h;h++)i=e[h],a[i]=this.getAttr(d+k(i));return a},c.prototype[m]=function(a){var b,c=this.attrs[d];f&&(a=f.call(this,a));for(b in a)this._setAttr(d+k(b),a[b]);return this._fireChangeEvent(d,c,a),g&&g.call(this),this},this.addOverloadedGetterSetter(c,d)},addOverloadedGetterSetter:function(c,d){var e=Kinetic.Util._capitalize(d),f=b+e,g=a+e;c.prototype[d]=function(){return arguments.length?(this[f](arguments[0]),this):this[g]()}},backCompat:function(a,b){var c;for(c in b)a.prototype[c]=a.prototype[b[c]]},afterSetFilter:function(){this._filterUpToDate=!1}},Kinetic.Validators={RGBComponent:function(a){return a>255?255:0>a?0:Math.round(a)},alphaComponent:function(a){return a>1?1:1e-4>a?1e-4:a}}}(),function(){var a="absoluteOpacity",b="absoluteTransform",c="Change",d="children",e=".",f="",g="get",h="id",i="kinetic",j="listening",k="mouseenter",l="mouseleave",m="name",n="set",o="Shape",p=" ",q="stage",r="transform",s="Stage",t="visible",u=["id"],v=["xChange.kinetic","yChange.kinetic","scaleXChange.kinetic","scaleYChange.kinetic","skewXChange.kinetic","skewYChange.kinetic","rotationChange.kinetic","offsetXChange.kinetic","offsetYChange.kinetic","transformsEnabledChange.kinetic"].join(p);Kinetic.Util.addMethods(Kinetic.Node,{_init:function(c){var d=this;this._id=Kinetic.idCounter++,this.eventListeners={},this.attrs={},this._cache={},this._filterUpToDate=!1,this.setAttrs(c),this.on(v,function(){this._clearCache(r),d._clearSelfAndDescendantCache(b)}),this.on("visibleChange.kinetic",function(){d._clearSelfAndDescendantCache(t)}),this.on("listeningChange.kinetic",function(){d._clearSelfAndDescendantCache(j)}),this.on("opacityChange.kinetic",function(){d._clearSelfAndDescendantCache(a)})},_clearCache:function(a){a?delete this._cache[a]:this._cache={}},_getCache:function(a,b){var c=this._cache[a];return void 0===c&&(this._cache[a]=b.call(this)),this._cache[a]},_clearSelfAndDescendantCache:function(a){this._clearCache(a),this.children&&this.getChildren().each(function(b){b._clearSelfAndDescendantCache(a)})},clearCache:function(){return delete this._cache.canvas,this._filterUpToDate=!1,this},cache:function(a){var b=a||{},c=b.x||0,d=b.y||0,e=b.width||this.width(),f=b.height||this.height(),g=b.drawBorder||!1;if(0===e||0===f)return void Kinetic.Util.warn("Width or height of caching configuration equals 0. Cache is ignored.");var h=new Kinetic.SceneCanvas({pixelRatio:1,width:e,height:f}),i=new Kinetic.SceneCanvas({pixelRatio:1,width:e,height:f}),j=new Kinetic.HitCanvas({width:e,height:f}),k=h.getContext(),l=j.getContext();return j.isCache=!0,this.clearCache(),k.save(),l.save(),g&&(k.save(),k.beginPath(),k.rect(0,0,e,f),k.closePath(),k.setAttr("strokeStyle","red"),k.setAttr("lineWidth",5),k.stroke(),k.restore()),k.translate(-1*c,-1*d),l.translate(-1*c,-1*d),"Shape"===this.nodeType&&(k.translate(-1*this.x(),-1*this.y()),l.translate(-1*this.x(),-1*this.y())),this.drawScene(h,this),this.drawHit(j,this),k.restore(),l.restore(),this._cache.canvas={scene:h,filter:i,hit:j},this},_drawCachedSceneCanvas:function(a){a.save(),this.getLayer()._applyTransform(this,a),a._applyOpacity(this),a.drawImage(this._getCachedSceneCanvas()._canvas,0,0),a.restore()},_getCachedSceneCanvas:function(){var a,b,c,d,e=this.filters(),f=this._cache.canvas,g=f.scene,h=f.filter,i=h.getContext();if(e){if(!this._filterUpToDate){try{for(a=e.length,i.clear(),i.drawImage(g._canvas,0,0),b=i.getImageData(0,0,h.getWidth(),h.getHeight()),c=0;a>c;c++)d=e[c],d.call(this,b),i.putImageData(b,0,0)}catch(j){Kinetic.Util.warn("Unable to apply filter. "+j.message)}this._filterUpToDate=!0}return h}return g},_drawCachedHitCanvas:function(a){var b=this._cache.canvas,c=b.hit;a.save(),this.getLayer()._applyTransform(this,a),a.drawImage(c._canvas,0,0),a.restore()},on:function(a,b){var c,d,g,h,i,j=a.split(p),k=j.length;for(c=0;k>c;c++)d=j[c],g=d.split(e),h=g[0],i=g[1]||f,this.eventListeners[h]||(this.eventListeners[h]=[]),this.eventListeners[h].push({name:i,handler:b});return this},off:function(a){var b,c,d,f,g,h,i=(a||"").split(p),j=i.length;if(!a)for(c in this.eventListeners)this._off(c);for(b=0;j>b;b++)if(d=i[b],f=d.split(e),g=f[0],h=f[1],g)this.eventListeners[g]&&this._off(g,h);else for(c in this.eventListeners)this._off(c,h);return this},dispatchEvent:function(a){var b={target:this,type:a.type,evt:a};this.fire(a.type,b)},addEventListener:function(a,b){this.on(a,function(a){b.call(this,a.evt)})},removeEventListener:function(a){this.off(a)},remove:function(){var c=this.getParent();return c&&c.children&&(c.children.splice(this.index,1),c._setChildrenIndices(),delete this.parent),this._clearSelfAndDescendantCache(q),this._clearSelfAndDescendantCache(b),this._clearSelfAndDescendantCache(t),this._clearSelfAndDescendantCache(j),this._clearSelfAndDescendantCache(a),this},destroy:function(){Kinetic._removeId(this.getId()),Kinetic._removeName(this.getName(),this._id),this.remove()},getAttr:function(a){var b=g+Kinetic.Util._capitalize(a);return Kinetic.Util._isFunction(this[b])?this[b]():this.attrs[a]},getAncestors:function(){for(var a=this.getParent(),b=new Kinetic.Collection;a;)b.push(a),a=a.getParent();return b},getAttrs:function(){return this.attrs||{}},setAttrs:function(a){var b,c;if(a)for(b in a)b===d||a[b]instanceof Kinetic.Node||(c=n+Kinetic.Util._capitalize(b),Kinetic.Util._isFunction(this[c])?this[c](a[b]):this._setAttr(b,a[b]));return this},isListening:function(){return this._getCache(j,this._isListening)},_isListening:function(){var a=this.getListening(),b=this.getParent();return"inherit"===a?!b||b.isListening():a},isVisible:function(){return this._getCache(t,this._isVisible)},_isVisible:function(){var a=this.getVisible(),b=this.getParent();return"inherit"===a?!b||b.isVisible():a},shouldDrawHit:function(a){var b=this.getLayer();return a&&a.isCache||b&&b.hitGraphEnabled()&&this.isListening()&&this.isVisible()},show:function(){return this.setVisible(!0),this},hide:function(){return this.setVisible(!1),this},getZIndex:function(){return this.index||0},getAbsoluteZIndex:function(){function a(i){for(b=[],c=i.length,d=0;c>d;d++)e=i[d],h++,e.nodeType!==o&&(b=b.concat(e.getChildren().toArray())),e._id===g._id&&(d=c);b.length>0&&b[0].getDepth()<=f&&a(b)}var b,c,d,e,f=this.getDepth(),g=this,h=0;return g.nodeType!==s&&a(g.getStage().getChildren()),h},getDepth:function(){for(var a=0,b=this.parent;b;)a++,b=b.parent;return a},setPosition:function(a){return this.setX(a.x),this.setY(a.y),this},getPosition:function(){return{x:this.getX(),y:this.getY()}},getAbsolutePosition:function(){var a=this.getAbsoluteTransform().getMatrix(),b=new Kinetic.Transform,c=this.offset();return b.m=a.slice(),b.translate(c.x,c.y),b.getTranslation()},setAbsolutePosition:function(a){var b,c=this._clearTransform();return this.attrs.x=c.x,this.attrs.y=c.y,delete c.x,delete c.y,b=this.getAbsoluteTransform(),b.invert(),b.translate(a.x,a.y),a={x:this.attrs.x+b.getTranslation().x,y:this.attrs.y+b.getTranslation().y},this.setPosition({x:a.x,y:a.y}),this._setTransform(c),this},_setTransform:function(a){var c;for(c in a)this.attrs[c]=a[c];this._clearCache(r),this._clearSelfAndDescendantCache(b)},_clearTransform:function(){var a={x:this.getX(),y:this.getY(),rotation:this.getRotation(),scaleX:this.getScaleX(),scaleY:this.getScaleY(),offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),skewX:this.getSkewX(),skewY:this.getSkewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,this._clearCache(r),this._clearSelfAndDescendantCache(b),a},move:function(a){var b=a.x,c=a.y,d=this.getX(),e=this.getY();return void 0!==b&&(d+=b),void 0!==c&&(e+=c),this.setPosition({x:d,y:e}),this},_eachAncestorReverse:function(a,b){var c,d,e=[],f=this.getParent();if(b&&b._id===this._id)return a(this),!0;for(e.unshift(this);f&&(!b||f._id!==b._id);)e.unshift(f),f=f.parent;for(c=e.length,d=0;c>d;d++)a(e[d])},rotate:function(a){return this.setRotation(this.getRotation()+a),this},moveToTop:function(){if(!this.parent)return void Kinetic.Util.warn("Node has no parent. moveToTop function is ignored.");var a=this.index;return this.parent.children.splice(a,1),this.parent.children.push(this),this.parent._setChildrenIndices(),!0},moveUp:function(){if(!this.parent)return void Kinetic.Util.warn("Node has no parent. moveUp function is ignored.");var a=this.index,b=this.parent.getChildren().length;return b-1>a&&(this.parent.children.splice(a,1),this.parent.children.splice(a+1,0,this),this.parent._setChildrenIndices(),!0)},moveDown:function(){if(!this.parent)return void Kinetic.Util.warn("Node has no parent. moveDown function is ignored.");var a=this.index;return a>0&&(this.parent.children.splice(a,1),this.parent.children.splice(a-1,0,this),this.parent._setChildrenIndices(),!0)},moveToBottom:function(){if(!this.parent)return void Kinetic.Util.warn("Node has no parent. moveToBottom function is ignored.");var a=this.index;return a>0&&(this.parent.children.splice(a,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0)},setZIndex:function(a){if(!this.parent)return void Kinetic.Util.warn("Node has no parent. zIndex parameter is ignored.");var b=this.index;return this.parent.children.splice(b,1),this.parent.children.splice(a,0,this),this.parent._setChildrenIndices(),this},getAbsoluteOpacity:function(){return this._getCache(a,this._getAbsoluteOpacity)},_getAbsoluteOpacity:function(){var a=this.getOpacity();return this.getParent()&&(a*=this.getParent().getAbsoluteOpacity()),a},moveTo:function(a){return this.getParent()!==a&&(this.remove(),a.add(this)),this},toObject:function(){var a,b,c,d,e=Kinetic.Util,f={},g=this.getAttrs();f.attrs={};for(a in g)b=g[a],e._isFunction(b)||e._isElement(b)||e._isObject(b)&&e._hasMethods(b)||(c=this[a],delete g[a],d=c?c.call(this):null,g[a]=b,d!==b&&(f.attrs[a]=b));return f.className=this.getClassName(),f},toJSON:function(){return JSON.stringify(this.toObject())},getParent:function(){return this.parent},getLayer:function(){var a=this.getParent();return a?a.getLayer():null},getStage:function(){return this._getCache(q,this._getStage)},_getStage:function(){var a=this.getParent();return a?a.getStage():void 0},fire:function(a,b,c){return c?this._fireAndBubble(a,b||{}):this._fire(a,b||{}),this},getAbsoluteTransform:function(a){return a?this._getAbsoluteTransform(a):this._getCache(b,this._getAbsoluteTransform)},_getAbsoluteTransform:function(a){var b,c,d=new Kinetic.Transform;return this._eachAncestorReverse(function(a){b=a.transformsEnabled(),c=a.getTransform(),"all"===b?d.multiply(c):"position"===b&&d.translate(a.x(),a.y())},a),d},getTransform:function(){return this._getCache(r,this._getTransform)},_getTransform:function(){var a=new Kinetic.Transform,b=this.getX(),c=this.getY(),d=Kinetic.getAngle(this.getRotation()),e=this.getScaleX(),f=this.getScaleY(),g=this.getSkewX(),h=this.getSkewY(),i=this.getOffsetX(),j=this.getOffsetY();return(0!==b||0!==c)&&a.translate(b,c),0!==d&&a.rotate(d),(0!==g||0!==h)&&a.skew(g,h),(1!==e||1!==f)&&a.scale(e,f),(0!==i||0!==j)&&a.translate(-1*i,-1*j),a},clone:function(a){var b,c,d,e,f,g=this.getClassName(),h=Kinetic.Util.cloneObject(this.attrs);for(var j in u){var k=u[j];delete h[k]}for(b in a)h[b]=a[b];var l=new Kinetic[g](h);for(b in this.eventListeners)for(c=this.eventListeners[b],d=c.length,e=0;d>e;e++)f=c[e],f.name.indexOf(i)<0&&(l.eventListeners[b]||(l.eventListeners[b]=[]),l.eventListeners[b].push(f));return l},toDataURL:function(a){a=a||{};var b=a.mimeType||null,c=a.quality||null,d=this.getStage(),e=a.x||0,f=a.y||0,g=new Kinetic.SceneCanvas({width:a.width||this.getWidth()||(d?d.getWidth():0),height:a.height||this.getHeight()||(d?d.getHeight():0),pixelRatio:1}),h=g.getContext();return h.save(),(e||f)&&h.translate(-1*e,-1*f),this.drawScene(g),h.restore(),g.toDataURL(b,c)},toImage:function(a){Kinetic.Util._getImage(this.toDataURL(a),function(b){a.callback(b)})},setSize:function(a){return this.setWidth(a.width),this.setHeight(a.height),this},getSize:function(){return{width:this.getWidth(),height:this.getHeight()}},getWidth:function(){return this.attrs.width||0},getHeight:function(){return this.attrs.height||0},getClassName:function(){return this.className||this.nodeType},getType:function(){return this.nodeType},getDragDistance:function(){return void 0!==this.attrs.dragDistance?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():Kinetic.dragDistance},_get:function(a){return this.className===a||this.nodeType===a?[this]:[]},_off:function(a,b){var c,d,e=this.eventListeners[a];for(c=0;c<e.length;c++)if(d=e[c].name,!("kinetic"===d&&"kinetic"!==b||b&&d!==b)){if(e.splice(c,1),0===e.length){delete this.eventListeners[a];break}c--}},_fireChangeEvent:function(a,b,d){this._fire(a+c,{oldVal:b,newVal:d})},setId:function(a){var b=this.getId();return Kinetic._removeId(b),Kinetic._addId(this,a),this._setAttr(h,a),this},setName:function(a){var b=this.getName();return Kinetic._removeName(b,this._id),Kinetic._addName(this,a),this._setAttr(m,a),this},setAttr:function(a,b){var c=n+Kinetic.Util._capitalize(a),d=this[c];return Kinetic.Util._isFunction(d)?d.call(this,b):this._setAttr(a,b),this},_setAttr:function(a,b){var c;void 0!==b&&(c=this.attrs[a],this.attrs[a]=b,this._fireChangeEvent(a,c,b))},_setComponentAttr:function(a,b,c){var d;void 0!==c&&(d=this.attrs[a],d||(this.attrs[a]=this.getAttr(a)),this.attrs[a][b]=c,this._fireChangeEvent(a,d,c))},_fireAndBubble:function(a,b,c){var d=!0;if(b&&this.nodeType===o&&(b.target=this),a===k&&c&&(this._id===c._id||this.isAncestorOf&&this.isAncestorOf(c))?d=!1:a===l&&c&&(this._id===c._id||this.isAncestorOf&&this.isAncestorOf(c))&&(d=!1),d){this._fire(a,b);var e=(a===k||a===l)&&(c&&c.isAncestorOf&&c.isAncestorOf(this)||!(!c||!c.isAncestorOf));b&&!b.cancelBubble&&this.parent&&this.parent.isListening()&&!e&&(c&&c.parent?this._fireAndBubble.call(this.parent,a,b,c.parent):this._fireAndBubble.call(this.parent,a,b))}},_fire:function(a,b){var c,d=this.eventListeners[a];if(b.type=a,d)for(c=0;c<d.length;c++)d[c].handler.call(this,b)},draw:function(){return this.drawScene(),this.drawHit(),this}}),Kinetic.Node.create=function(a,b){return this._createNode(JSON.parse(a),b)},Kinetic.Node._createNode=function(a,b){var c,d,e,f=Kinetic.Node.prototype.getClassName.call(a),g=a.children;if(b&&(a.attrs.container=b),c=new Kinetic[f](a.attrs),g)for(d=g.length,e=0;d>e;e++)c.add(this._createNode(g[e]));return c},Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"position"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"x",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"y",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"opacity",1),Kinetic.Factory.addGetter(Kinetic.Node,"name"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"name"),Kinetic.Factory.addGetter(Kinetic.Node,"id"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"id"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"rotation",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"scale",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Node,"scaleX",1),Kinetic.Factory.addGetterSetter(Kinetic.Node,"scaleY",1),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"skew",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Node,"skewX",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"skewY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"offset",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Node,"offsetX",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"offsetY",0),Kinetic.Factory.addSetter(Kinetic.Node,"dragDistance"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"dragDistance"),Kinetic.Factory.addSetter(Kinetic.Node,"width",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"width"),Kinetic.Factory.addSetter(Kinetic.Node,"height",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"height"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"listening","inherit"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"filters",void 0,function(a){return this._filterUpToDate=!1,a}),Kinetic.Factory.addGetterSetter(Kinetic.Node,"visible","inherit"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"transformsEnabled","all"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"size"),Kinetic.Factory.backCompat(Kinetic.Node,{rotateDeg:"rotate",setRotationDeg:"setRotation",getRotationDeg:"getRotation"}),Kinetic.Collection.mapMethods(Kinetic.Node)}(),function(){Kinetic.Filters.Grayscale=function(a){var b,c,d=a.data,e=d.length;for(b=0;e>b;b+=4)c=.34*d[b]+.5*d[b+1]+.16*d[b+2],d[b]=c,d[b+1]=c,d[b+2]=c}}(),function(){Kinetic.Filters.Brighten=function(a){var b,c=255*this.brightness(),d=a.data,e=d.length;for(b=0;e>b;b+=4)d[b]+=c,d[b+1]+=c,d[b+2]+=c},Kinetic.Factory.addGetterSetter(Kinetic.Node,"brightness",0,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.Invert=function(a){var b,c=a.data,d=c.length;for(b=0;d>b;b+=4)c[b]=255-c[b],c[b+1]=255-c[b+1],c[b+2]=255-c[b+2]}}(),function(){function a(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}function b(b,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D=b.data,E=b.width,F=b.height,G=e+e+1,H=E-1,I=F-1,J=e+1,K=J*(J+1)/2,L=new a,M=null,N=L,O=null,P=null,Q=c[e],R=d[e];for(h=1;G>h;h++)N=N.next=new a,h==J&&(M=N);for(N.next=L,l=k=0,g=0;F>g;g++){for(u=v=w=x=m=n=o=p=0,q=J*(y=D[k]),r=J*(z=D[k+1]),s=J*(A=D[k+2]),t=J*(B=D[k+3]),m+=K*y,n+=K*z,o+=K*A,p+=K*B,N=L,h=0;J>h;h++)N.r=y,N.g=z,N.b=A,N.a=B,N=N.next;for(h=1;J>h;h++)i=k+((h>H?H:h)<<2),m+=(N.r=y=D[i])*(C=J-h),n+=(N.g=z=D[i+1])*C,o+=(N.b=A=D[i+2])*C,p+=(N.a=B=D[i+3])*C,u+=y,v+=z,w+=A,x+=B,N=N.next;for(O=L,P=M,f=0;E>f;f++)D[k+3]=B=p*Q>>R,0!==B?(B=255/B,D[k]=(m*Q>>R)*B,D[k+1]=(n*Q>>R)*B,D[k+2]=(o*Q>>R)*B):D[k]=D[k+1]=D[k+2]=0,m-=q,n-=r,o-=s,p-=t,q-=O.r,r-=O.g,s-=O.b,t-=O.a,i=l+((i=f+e+1)<H?i:H)<<2,u+=O.r=D[i],v+=O.g=D[i+1],w+=O.b=D[i+2],x+=O.a=D[i+3],m+=u,n+=v,o+=w,p+=x,O=O.next,q+=y=P.r,r+=z=P.g,s+=A=P.b,t+=B=P.a,u-=y,v-=z,w-=A,x-=B,P=P.next,k+=4;l+=E}for(f=0;E>f;f++){for(v=w=x=u=n=o=p=m=0,k=f<<2,q=J*(y=D[k]),r=J*(z=D[k+1]),s=J*(A=D[k+2]),t=J*(B=D[k+3]),m+=K*y,n+=K*z,o+=K*A,p+=K*B,N=L,h=0;J>h;h++)N.r=y,N.g=z,N.b=A,N.a=B,N=N.next;for(j=E,h=1;e>=h;h++)k=j+f<<2,m+=(N.r=y=D[k])*(C=J-h),n+=(N.g=z=D[k+1])*C,o+=(N.b=A=D[k+2])*C,p+=(N.a=B=D[k+3])*C,u+=y,v+=z,w+=A,x+=B,N=N.next,I>h&&(j+=E);for(k=f,O=L,P=M,g=0;F>g;g++)i=k<<2,D[i+3]=B=p*Q>>R,B>0?(B=255/B,D[i]=(m*Q>>R)*B,D[i+1]=(n*Q>>R)*B,D[i+2]=(o*Q>>R)*B):D[i]=D[i+1]=D[i+2]=0,m-=q,n-=r,o-=s,p-=t,q-=O.r,r-=O.g,s-=O.b,t-=O.a,i=f+((i=g+J)<I?i:I)*E<<2,m+=u+=O.r=D[i],n+=v+=O.g=D[i+1],o+=w+=O.b=D[i+2],p+=x+=O.a=D[i+3],O=O.next,q+=y=P.r,r+=z=P.g,s+=A=P.b,t+=B=P.a,u-=y,v-=z,w-=A,x-=B,P=P.next,k+=E}}var c=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],d=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];Kinetic.Filters.Blur=function(a){var c=Math.round(this.blurRadius());c>0&&b(a,c)},Kinetic.Factory.addGetterSetter(Kinetic.Node,"blurRadius",0,null,Kinetic.Factory.afterSetFilter)}(),function(){function a(a,b,c){var d=4*(c*a.width+b),e=[];return e.push(a.data[d++],a.data[d++],a.data[d++],a.data[d++]),e}function b(a,b){return Math.sqrt(Math.pow(a[0]-b[0],2)+Math.pow(a[1]-b[1],2)+Math.pow(a[2]-b[2],2))}function c(a){for(var b=[0,0,0],c=0;c<a.length;c++)b[0]+=a[c][0],b[1]+=a[c][1],b[2]+=a[c][2];return b[0]/=a.length,b[1]/=a.length,b[2]/=a.length,b}function d(d,e){var f=a(d,0,0),g=a(d,d.width-1,0),h=a(d,0,d.height-1),i=a(d,d.width-1,d.height-1),j=e||10;if(b(f,g)<j&&b(g,i)<j&&b(i,h)<j&&b(h,f)<j){for(var k=c([g,f,i,h]),l=[],m=0;m<d.width*d.height;m++){var n=b(k,[d.data[4*m],d.data[4*m+1],d.data[4*m+2]]);l[m]=j>n?0:255}return l}}function e(a,b){for(var c=0;c<a.width*a.height;c++)a.data[4*c+3]=b[c]}function f(a,b,c){for(var d=[1,1,1,1,0,1,1,1,1],e=Math.round(Math.sqrt(d.length)),f=Math.floor(e/2),g=[],h=0;c>h;h++)for(var i=0;b>i;i++){for(var j=h*b+i,k=0,l=0;e>l;l++)for(var m=0;e>m;m++){var n=h+l-f,o=i+m-f;if(n>=0&&c>n&&o>=0&&b>o){var p=n*b+o,q=d[l*e+m];k+=a[p]*q}}g[j]=2040===k?255:0}return g}function g(a,b,c){for(var d=[1,1,1,1,1,1,1,1,1],e=Math.round(Math.sqrt(d.length)),f=Math.floor(e/2),g=[],h=0;c>h;h++)for(var i=0;b>i;i++){for(var j=h*b+i,k=0,l=0;e>l;l++)for(var m=0;e>m;m++){var n=h+l-f,o=i+m-f;if(n>=0&&c>n&&o>=0&&b>o){var p=n*b+o,q=d[l*e+m];k+=a[p]*q}}g[j]=k>=1020?255:0}return g}function h(a,b,c){for(var d=[1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9],e=Math.round(Math.sqrt(d.length)),f=Math.floor(e/2),g=[],h=0;c>h;h++)for(var i=0;b>i;i++){for(var j=h*b+i,k=0,l=0;e>l;l++)for(var m=0;e>m;m++){var n=h+l-f,o=i+m-f;if(n>=0&&c>n&&o>=0&&b>o){var p=n*b+o,q=d[l*e+m];k+=a[p]*q}}g[j]=k}return g}Kinetic.Filters.Mask=function(a){var b=this.threshold(),c=d(a,b);return c&&(c=f(c,a.width,a.height),c=g(c,a.width,a.height),c=h(c,a.width,a.height),e(a,c)),a},Kinetic.Factory.addGetterSetter(Kinetic.Node,"threshold",0,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.RGB=function(a){var b,c,d=a.data,e=d.length,f=this.red(),g=this.green(),h=this.blue();for(b=0;e>b;b+=4)c=(.34*d[b]+.5*d[b+1]+.16*d[b+2])/255,d[b]=c*f,d[b+1]=c*g,d[b+2]=c*h,d[b+3]=d[b+3]},Kinetic.Factory.addGetterSetter(Kinetic.Node,"red",0,function(a){return this._filterUpToDate=!1,a>255?255:0>a?0:Math.round(a)}),Kinetic.Factory.addGetterSetter(Kinetic.Node,"green",0,function(a){return this._filterUpToDate=!1,a>255?255:0>a?0:Math.round(a)}),Kinetic.Factory.addGetterSetter(Kinetic.Node,"blue",0,Kinetic.Validators.RGBComponent,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.HSV=function(a){var b,c,d,e,f,g=a.data,h=g.length,i=Math.pow(2,this.value()),j=Math.pow(2,this.saturation()),k=Math.abs(this.hue()+360)%360,l=i*j*Math.cos(k*Math.PI/180),m=i*j*Math.sin(k*Math.PI/180),n=.299*i+.701*l+.167*m,o=.587*i-.587*l+.33*m,p=.114*i-.114*l-.497*m,q=.299*i-.299*l-.328*m,r=.587*i+.413*l+.035*m,s=.114*i-.114*l+.293*m,t=.299*i-.3*l+1.25*m,u=.587*i-.586*l-1.05*m,v=.114*i+.886*l-.2*m;for(b=0;h>b;b+=4)c=g[b+0],d=g[b+1],e=g[b+2],f=g[b+3],g[b+0]=n*c+o*d+p*e,g[b+1]=q*c+r*d+s*e,g[b+2]=t*c+u*d+v*e,g[b+3]=f},Kinetic.Factory.addGetterSetter(Kinetic.Node,"hue",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"saturation",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"value",0,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Factory.addGetterSetter(Kinetic.Node,"hue",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"saturation",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"luminance",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.HSL=function(a){var b,c,d,e,f,g=a.data,h=g.length,i=1,j=Math.pow(2,this.saturation()),k=Math.abs(this.hue()+360)%360,l=127*this.luminance(),m=i*j*Math.cos(k*Math.PI/180),n=i*j*Math.sin(k*Math.PI/180),o=.299*i+.701*m+.167*n,p=.587*i-.587*m+.33*n,q=.114*i-.114*m-.497*n,r=.299*i-.299*m-.328*n,s=.587*i+.413*m+.035*n,t=.114*i-.114*m+.293*n,u=.299*i-.3*m+1.25*n,v=.587*i-.586*m-1.05*n,w=.114*i+.886*m-.2*n;for(b=0;h>b;b+=4)c=g[b+0],d=g[b+1],e=g[b+2],f=g[b+3],g[b+0]=o*c+p*d+q*e+l,g[b+1]=r*c+s*d+t*e+l,g[b+2]=u*c+v*d+w*e+l,g[b+3]=f}}(),function(){Kinetic.Filters.Emboss=function(a){var b=10*this.embossStrength(),c=255*this.embossWhiteLevel(),d=this.embossDirection(),e=this.embossBlend(),f=0,g=0,h=a.data,i=a.width,j=a.height,k=4*i,l=j;switch(d){case"top-left":f=-1,g=-1;break;case"top":f=-1,g=0;break;case"top-right":f=-1,g=1;break;case"right":f=0,g=1;break;case"bottom-right":f=1,g=1;break;case"bottom":f=1,g=0;break;case"bottom-left":f=1,g=-1;break;case"left":f=0,g=-1}do{var m=(l-1)*k,n=f;1>l+n&&(n=0),l+n>j&&(n=0);var o=(l-1+n)*i*4,p=i;do{var q=m+4*(p-1),r=g;1>p+r&&(r=0),p+r>i&&(r=0);var s=o+4*(p-1+r),t=h[q]-h[s],u=h[q+1]-h[s+1],v=h[q+2]-h[s+2],w=t,x=w>0?w:-w,y=u>0?u:-u,z=v>0?v:-v;if(y>x&&(w=u),z>x&&(w=v),w*=b,e){var A=h[q]+w,B=h[q+1]+w,C=h[q+2]+w;h[q]=A>255?255:0>A?0:A,h[q+1]=B>255?255:0>B?0:B,h[q+2]=C>255?255:0>C?0:C}else{var D=c-w;0>D?D=0:D>255&&(D=255),h[q]=h[q+1]=h[q+2]=D}}while(--p)}while(--l)},Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossStrength",.5,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossWhiteLevel",.5,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossDirection","top-left",null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossBlend",!1,null,Kinetic.Factory.afterSetFilter)}(),function(){function a(a,b,c,d,e){var f,g=c-b,h=e-d;return 0===g?d+h/2:0===h?d:(f=(a-b)/g,f=h*f+d)}Kinetic.Filters.Enhance=function(b){var c,d,e,f,g=b.data,h=g.length,i=g[0],j=i,k=g[1],l=k,m=g[2],n=m,o=this.enhance();if(0!==o){for(f=0;h>f;f+=4)c=g[f+0],i>c?i=c:c>j&&(j=c),d=g[f+1],k>d?k=d:d>l&&(l=d),e=g[f+2],m>e?m=e:e>n&&(n=e);j===i&&(j=255,i=0),l===k&&(l=255,k=0),n===m&&(n=255,m=0);var p,q,r,s,t,u,v,w,x;for(o>0?(q=j+o*(255-j),r=i-o*(i-0),t=l+o*(255-l),u=k-o*(k-0),w=n+o*(255-n),x=m-o*(m-0)):(p=.5*(j+i),q=j+o*(j-p),r=i+o*(i-p),s=.5*(l+k),t=l+o*(l-s),u=k+o*(k-s),v=.5*(n+m),w=n+o*(n-v),x=m+o*(m-v)),f=0;h>f;f+=4)g[f+0]=a(g[f+0],i,j,r,q),g[f+1]=a(g[f+1],k,l,u,t),g[f+2]=a(g[f+2],m,n,x,w)}},Kinetic.Factory.addGetterSetter(Kinetic.Node,"enhance",0,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.Posterize=function(a){var b,c=Math.round(254*this.levels())+1,d=a.data,e=d.length,f=255/c;for(b=0;e>b;b+=1)d[b]=Math.floor(d[b]/f)*f},Kinetic.Factory.addGetterSetter(Kinetic.Node,"levels",.5,null,Kinetic.Factory.afterSetFilter);
+}(),function(){Kinetic.Filters.Noise=function(a){var b,c=255*this.noise(),d=a.data,e=d.length,f=c/2;for(b=0;e>b;b+=4)d[b+0]+=f-2*f*Math.random(),d[b+1]+=f-2*f*Math.random(),d[b+2]+=f-2*f*Math.random()},Kinetic.Factory.addGetterSetter(Kinetic.Node,"noise",.2,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.Pixelate=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p=Math.ceil(this.pixelSize()),q=a.width,r=a.height,s=Math.ceil(q/p),t=Math.ceil(r/p);for(a=a.data,m=0;s>m;m+=1)for(n=0;t>n;n+=1){for(e=0,f=0,g=0,h=0,i=m*p,j=i+p,k=n*p,l=k+p,o=0,b=i;j>b;b+=1)if(!(b>=q))for(c=k;l>c;c+=1)c>=r||(d=4*(q*c+b),e+=a[d+0],f+=a[d+1],g+=a[d+2],h+=a[d+3],o+=1);for(e/=o,f/=o,g/=o,b=i;j>b;b+=1)if(!(b>=q))for(c=k;l>c;c+=1)c>=r||(d=4*(q*c+b),a[d+0]=e,a[d+1]=f,a[d+2]=g,a[d+3]=h)}},Kinetic.Factory.addGetterSetter(Kinetic.Node,"pixelSize",8,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.Threshold=function(a){var b,c=255*this.threshold(),d=a.data,e=d.length;for(b=0;e>b;b+=1)d[b]=d[b]<c?0:255},Kinetic.Factory.addGetterSetter(Kinetic.Node,"threshold",.5,null,Kinetic.Factory.afterSetFilter)}(),function(){Kinetic.Filters.Sepia=function(a){var b,c,d,e,f,g,h,i,j,k=a.data,l=a.width,m=a.height,n=4*l;do{b=(m-1)*n,c=l;do d=b+4*(c-1),e=k[d],f=k[d+1],g=k[d+2],h=.393*e+.769*f+.189*g,i=.349*e+.686*f+.168*g,j=.272*e+.534*f+.131*g,k[d]=h>255?255:h,k[d+1]=i>255?255:i,k[d+2]=j>255?255:j,k[d+3]=k[d+3];while(--c)}while(--m)}}(),function(){Kinetic.Filters.Solarize=function(a){var b=a.data,c=a.width,d=a.height,e=4*c,f=d;do{var g=(f-1)*e,h=c;do{var i=g+4*(h-1),j=b[i],k=b[i+1],l=b[i+2];j>127&&(j=255-j),k>127&&(k=255-k),l>127&&(l=255-l),b[i]=j,b[i+1]=k,b[i+2]=l}while(--h)}while(--f)}}(),function(){var a=function(a,b,c){var d,e,f,g,h=a.data,i=b.data,j=a.width,k=a.height,l=c.polarCenterX||j/2,m=c.polarCenterY||k/2,n=0,o=0,p=0,q=0,r=Math.sqrt(l*l+m*m);e=j-l,f=k-m,g=Math.sqrt(e*e+f*f),r=g>r?g:r;var s,t,u,v,w=k,x=j,y=360/x*Math.PI/180;for(t=0;x>t;t+=1)for(u=Math.sin(t*y),v=Math.cos(t*y),s=0;w>s;s+=1)e=Math.floor(l+r*s/w*v),f=Math.floor(m+r*s/w*u),d=4*(f*j+e),n=h[d+0],o=h[d+1],p=h[d+2],q=h[d+3],d=4*(t+s*j),i[d+0]=n,i[d+1]=o,i[d+2]=p,i[d+3]=q},b=function(a,b,c){var d,e,f,g,h,i,j=a.data,k=b.data,l=a.width,m=a.height,n=c.polarCenterX||l/2,o=c.polarCenterY||m/2,p=0,q=0,r=0,s=0,t=Math.sqrt(n*n+o*o);e=l-n,f=m-o,i=Math.sqrt(e*e+f*f),t=i>t?i:t;var u,v,w,x,y=m,z=l,A=c.polarRotation||0;for(e=0;l>e;e+=1)for(f=0;m>f;f+=1)g=e-n,h=f-o,u=Math.sqrt(g*g+h*h)*y/t,v=(180*Math.atan2(h,g)/Math.PI+360+A)%360,v=v*z/360,w=Math.floor(v),x=Math.floor(u),d=4*(x*l+w),p=j[d+0],q=j[d+1],r=j[d+2],s=j[d+3],d=4*(f*l+e),k[d+0]=p,k[d+1]=q,k[d+2]=r,k[d+3]=s},c=Kinetic.Util.createCanvasElement();Kinetic.Filters.Kaleidoscope=function(d){var e,f,g,h,i,j,k,l,m,n,o=d.width,p=d.height,q=Math.round(this.kaleidoscopePower()),r=Math.round(this.kaleidoscopeAngle()),s=Math.floor(o*(r%360)/360);if(!(1>q)){c.width=o,c.height=p;var t=c.getContext("2d").getImageData(0,0,o,p);a(d,t,{polarCenterX:o/2,polarCenterY:p/2});for(var u=o/Math.pow(2,q);8>=u;)u=2*u,q-=1;u=Math.ceil(u);var v=u,w=0,x=v,y=1;for(s+u>o&&(w=v,x=0,y=-1),f=0;p>f;f+=1)for(e=w;e!==x;e+=y)g=Math.round(e+s)%o,m=4*(o*f+g),i=t.data[m+0],j=t.data[m+1],k=t.data[m+2],l=t.data[m+3],n=4*(o*f+e),t.data[n+0]=i,t.data[n+1]=j,t.data[n+2]=k,t.data[n+3]=l;for(f=0;p>f;f+=1)for(v=Math.floor(u),h=0;q>h;h+=1){for(e=0;v+1>e;e+=1)m=4*(o*f+e),i=t.data[m+0],j=t.data[m+1],k=t.data[m+2],l=t.data[m+3],n=4*(o*f+2*v-e-1),t.data[n+0]=i,t.data[n+1]=j,t.data[n+2]=k,t.data[n+3]=l;v*=2}b(t,d,{polarRotation:0})}},Kinetic.Factory.addGetterSetter(Kinetic.Node,"kaleidoscopePower",2,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"kaleidoscopeAngle",0,null,Kinetic.Factory.afterSetFilter)}(),function(){function a(a){setTimeout(a,1e3/60)}function b(){return e.apply(Kinetic.root,arguments)}var c=500,d=function(){return Kinetic.root.performance&&Kinetic.root.performance.now?function(){return Kinetic.root.performance.now()}:function(){return(new Date).getTime()}}(),e=function(){return Kinetic.root.requestAnimationFrame||Kinetic.root.webkitRequestAnimationFrame||Kinetic.root.mozRequestAnimationFrame||Kinetic.root.oRequestAnimationFrame||Kinetic.root.msRequestAnimationFrame||a}();Kinetic.Animation=function(a,b){var c=Kinetic.Animation;this.func=a,this.setLayers(b),this.id=c.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:d()}},Kinetic.Animation.prototype={setLayers:function(a){var b=[];b=a?a.length>0?a:[a]:[],this.layers=b},getLayers:function(){return this.layers},addLayer:function(a){var b,c,d=this.layers;if(d){for(b=d.length,c=0;b>c;c++)if(d[c]._id===a._id)return!1}else this.layers=[];return this.layers.push(a),!0},isRunning:function(){var a,b=Kinetic.Animation,c=b.animations,d=c.length;for(a=0;d>a;a++)if(c[a].id===this.id)return!0;return!1},start:function(){var a=Kinetic.Animation;this.stop(),this.frame.timeDiff=0,this.frame.lastTime=d(),a._addAnimation(this)},stop:function(){Kinetic.Animation._removeAnimation(this)},_updateFrameObject:function(a){this.frame.timeDiff=a-this.frame.lastTime,this.frame.lastTime=a,this.frame.time+=this.frame.timeDiff,this.frame.frameRate=1e3/this.frame.timeDiff}},Kinetic.Animation.animations=[],Kinetic.Animation.animIdCounter=0,Kinetic.Animation.animRunning=!1,Kinetic.Animation._addAnimation=function(a){this.animations.push(a),this._handleAnimation()},Kinetic.Animation._removeAnimation=function(a){var b,c=a.id,d=this.animations,e=d.length;for(b=0;e>b;b++)if(d[b].id===c){this.animations.splice(b,1);break}},Kinetic.Animation._runFrames=function(){var a,b,c,e,f,g,h,i,j,k={},l=this.animations;for(e=0;e<l.length;e++)if(a=l[e],b=a.layers,c=a.func,a._updateFrameObject(d()),g=b.length,j=!c||c.call(a,a.frame)!==!1)for(f=0;g>f;f++)h=b[f],void 0!==h._id&&(k[h._id]=h);for(i in k)k[i].draw()},Kinetic.Animation._animationLoop=function(){var a=Kinetic.Animation;a.animations.length?(b(a._animationLoop),a._runFrames()):a.animRunning=!1},Kinetic.Animation._handleAnimation=function(){var a=this;this.animRunning||(this.animRunning=!0,a._animationLoop())};var f=Kinetic.Node.prototype.moveTo;Kinetic.Node.prototype.moveTo=function(a){f.call(this,a)},Kinetic.BaseLayer.prototype.batchDraw=function(){var a=this,b=Kinetic.Animation;this.batchAnim||(this.batchAnim=new b(function(){a.lastBatchDrawTime&&d()-a.lastBatchDrawTime>c&&a.batchAnim.stop()},this)),this.lastBatchDrawTime=d(),this.batchAnim.isRunning()||(this.draw(),this.batchAnim.start())},Kinetic.Stage.prototype.batchDraw=function(){this.getChildren().each(function(a){a.batchDraw()})}}(this),function(){var a={node:1,duration:1,easing:1,onFinish:1,yoyo:1},b=1,c=2,d=3,e=0;Kinetic.Tween=function(b){var c,d,g=this,h=b.node,i=h._id,j=b.easing||Kinetic.Easings.Linear,k=!!b.yoyo;c="undefined"==typeof b.duration?1:0===b.duration?.001:b.duration,this.node=h,this._id=e++,this.anim=new Kinetic.Animation(function(){g.tween.onEnterFrame()},h.getLayer()||(h instanceof Kinetic.Stage?h.getLayers():null)),this.tween=new f(d,function(a){g._tweenFunc(a)},j,0,1,1e3*c,k),this._addListeners(),Kinetic.Tween.attrs[i]||(Kinetic.Tween.attrs[i]={}),Kinetic.Tween.attrs[i][this._id]||(Kinetic.Tween.attrs[i][this._id]={}),Kinetic.Tween.tweens[i]||(Kinetic.Tween.tweens[i]={});for(d in b)void 0===a[d]&&this._addAttr(d,b[d]);this.reset(),this.onFinish=b.onFinish,this.onReset=b.onReset},Kinetic.Tween.attrs={},Kinetic.Tween.tweens={},Kinetic.Tween.prototype={_addAttr:function(a,b){var c,d,e,f,g,h=this.node,i=h._id;if(e=Kinetic.Tween.tweens[i][a],e&&delete Kinetic.Tween.attrs[i][e][a],c=h.getAttr(a),Kinetic.Util._isArray(b))for(d=[],g=b.length,f=0;g>f;f++)d.push(b[f]-c[f]);else d=b-c;Kinetic.Tween.attrs[i][this._id][a]={start:c,diff:d},Kinetic.Tween.tweens[i][a]=this._id},_tweenFunc:function(a){var b,c,d,e,f,g,h,i=this.node,j=Kinetic.Tween.attrs[i._id][this._id];for(b in j){if(c=j[b],d=c.start,e=c.diff,Kinetic.Util._isArray(d))for(f=[],h=d.length,g=0;h>g;g++)f.push(d[g]+e[g]*a);else f=d+e*a;i.setAttr(b,f)}},_addListeners:function(){var a=this;this.tween.onPlay=function(){a.anim.start()},this.tween.onReverse=function(){a.anim.start()},this.tween.onPause=function(){a.anim.stop()},this.tween.onFinish=function(){a.onFinish&&a.onFinish()},this.tween.onReset=function(){a.onReset&&a.onReset()}},play:function(){return this.tween.play(),this},reverse:function(){return this.tween.reverse(),this},reset:function(){return this.tween.reset(),this},seek:function(a){return this.tween.seek(1e3*a),this},pause:function(){return this.tween.pause(),this},finish:function(){return this.tween.finish(),this},destroy:function(){var a,b=this.node._id,c=this._id,d=Kinetic.Tween.tweens[b];this.pause();for(a in d)delete Kinetic.Tween.tweens[b][a];delete Kinetic.Tween.attrs[b][c]}};var f=function(a,b,c,d,e,f,g){this.prop=a,this.propFunc=b,this.begin=d,this._pos=d,this.duration=f,this._change=0,this.prevPos=0,this.yoyo=g,this._time=0,this._position=0,this._startTime=0,this._finish=0,this.func=c,this._change=e-this.begin,this.pause()};f.prototype={fire:function(a){var b=this[a];b&&b()},setTime:function(a){a>this.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():0>a?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=a,this.update())},getTime:function(){return this._time},setPosition:function(a){this.prevPos=this._pos,this.propFunc(a),this._pos=a},getPosition:function(a){return void 0===a&&(a=this._time),this.func(a,this.begin,this._change,this.duration)},play:function(){this.state=c,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")},reverse:function(){this.state=d,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")},seek:function(a){this.pause(),this._time=a,this.update(),this.fire("onSeek")},reset:function(){this.pause(),this._time=0,this.update(),this.fire("onReset")},finish:function(){this.pause(),this._time=this.duration,this.update(),this.fire("onFinish")},update:function(){this.setPosition(this.getPosition(this._time))},onEnterFrame:function(){var a=this.getTimer()-this._startTime;this.state===c?this.setTime(a):this.state===d&&this.setTime(this.duration-a)},pause:function(){this.state=b,this.fire("onPause")},getTimer:function(){return(new Date).getTime()}},Kinetic.Easings={BackEaseIn:function(a,b,c,d){var e=1.70158;return c*(a/=d)*a*((e+1)*a-e)+b},BackEaseOut:function(a,b,c,d){var e=1.70158;return c*((a=a/d-1)*a*((e+1)*a+e)+1)+b},BackEaseInOut:function(a,b,c,d){var e=1.70158;return(a/=d/2)<1?c/2*a*a*(((e*=1.525)+1)*a-e)+b:c/2*((a-=2)*a*(((e*=1.525)+1)*a+e)+2)+b},ElasticEaseIn:function(a,b,c,d,e,f){var g=0;return 0===a?b:1==(a/=d)?b+c:(f||(f=.3*d),!e||e<Math.abs(c)?(e=c,g=f/4):g=f/(2*Math.PI)*Math.asin(c/e),-(e*Math.pow(2,10*(a-=1))*Math.sin(2*(a*d-g)*Math.PI/f))+b)},ElasticEaseOut:function(a,b,c,d,e,f){var g=0;return 0===a?b:1==(a/=d)?b+c:(f||(f=.3*d),!e||e<Math.abs(c)?(e=c,g=f/4):g=f/(2*Math.PI)*Math.asin(c/e),e*Math.pow(2,-10*a)*Math.sin(2*(a*d-g)*Math.PI/f)+c+b)},ElasticEaseInOut:function(a,b,c,d,e,f){var g=0;return 0===a?b:2==(a/=d/2)?b+c:(f||(f=.3*d*1.5),!e||e<Math.abs(c)?(e=c,g=f/4):g=f/(2*Math.PI)*Math.asin(c/e),1>a?-.5*e*Math.pow(2,10*(a-=1))*Math.sin(2*(a*d-g)*Math.PI/f)+b:e*Math.pow(2,-10*(a-=1))*Math.sin(2*(a*d-g)*Math.PI/f)*.5+c+b)},BounceEaseOut:function(a,b,c,d){return(a/=d)<1/2.75?7.5625*c*a*a+b:2/2.75>a?c*(7.5625*(a-=1.5/2.75)*a+.75)+b:2.5/2.75>a?c*(7.5625*(a-=2.25/2.75)*a+.9375)+b:c*(7.5625*(a-=2.625/2.75)*a+.984375)+b},BounceEaseIn:function(a,b,c,d){return c-Kinetic.Easings.BounceEaseOut(d-a,0,c,d)+b},BounceEaseInOut:function(a,b,c,d){return d/2>a?.5*Kinetic.Easings.BounceEaseIn(2*a,0,c,d)+b:.5*Kinetic.Easings.BounceEaseOut(2*a-d,0,c,d)+.5*c+b},EaseIn:function(a,b,c,d){return c*(a/=d)*a+b},EaseOut:function(a,b,c,d){return-c*(a/=d)*(a-2)+b},EaseInOut:function(a,b,c,d){return(a/=d/2)<1?c/2*a*a+b:-c/2*(--a*(a-2)-1)+b},StrongEaseIn:function(a,b,c,d){return c*(a/=d)*a*a*a*a+b},StrongEaseOut:function(a,b,c,d){return c*((a=a/d-1)*a*a*a*a+1)+b},StrongEaseInOut:function(a,b,c,d){return(a/=d/2)<1?c/2*a*a*a*a*a+b:c/2*((a-=2)*a*a*a*a+2)+b},Linear:function(a,b,c,d){return c*a/d+b}}}(),function(){Kinetic.DD={anim:new Kinetic.Animation(function(){var a=this.dirty;return this.dirty=!1,a}),isDragging:!1,justDragged:!1,offset:{x:0,y:0},node:null,_drag:function(a){var b=Kinetic.DD,c=b.node;if(c){if(!b.isDragging){var d=c.getStage().getPointerPosition(),e=c.dragDistance(),f=Math.max(Math.abs(d.x-b.startPointerPos.x),Math.abs(d.y-b.startPointerPos.y));if(e>f)return}c._setDragPosition(a),b.isDragging||(b.isDragging=!0,c.fire("dragstart",{type:"dragstart",target:c,evt:a},!0)),c.fire("dragmove",{type:"dragmove",target:c,evt:a},!0)}},_endDragBefore:function(a){var b,c,d=Kinetic.DD,e=d.node;e&&(b=e.nodeType,c=e.getLayer(),d.anim.stop(),d.isDragging&&(d.isDragging=!1,d.justDragged=!0,Kinetic.listenClickTap=!1,a&&(a.dragEndNode=e)),delete d.node,(c||e).draw())},_endDragAfter:function(a){a=a||{};var b=a.dragEndNode;a&&b&&b.fire("dragend",{type:"dragend",target:b,evt:a},!0)}},Kinetic.Node.prototype.startDrag=function(){var a=Kinetic.DD,b=this.getStage(),c=this.getLayer(),d=b.getPointerPosition(),e=this.getAbsolutePosition();d&&(a.node&&a.node.stopDrag(),a.node=this,a.startPointerPos=d,a.offset.x=d.x-e.x,a.offset.y=d.y-e.y,a.anim.setLayers(c||this.getLayers()),a.anim.start(),this._setDragPosition())},Kinetic.Node.prototype._setDragPosition=function(a){var b=Kinetic.DD,c=this.getStage().getPointerPosition(),d=this.getDragBoundFunc();if(c){var e={x:c.x-b.offset.x,y:c.y-b.offset.y};void 0!==d&&(e=d.call(this,e,a)),this.setAbsolutePosition(e),this._lastPos&&this._lastPos.x===e.x&&this._lastPos.y===e.y||(b.anim.dirty=!0),this._lastPos=e}},Kinetic.Node.prototype.stopDrag=function(){var a=Kinetic.DD,b={};a._endDragBefore(b),a._endDragAfter(b)},Kinetic.Node.prototype.setDraggable=function(a){this._setAttr("draggable",a),this._dragChange()};var a=Kinetic.Node.prototype.destroy;Kinetic.Node.prototype.destroy=function(){var b=Kinetic.DD;b.node&&b.node._id===this._id&&this.stopDrag(),a.call(this)},Kinetic.Node.prototype.isDragging=function(){var a=Kinetic.DD;return!(!a.node||a.node._id!==this._id||!a.isDragging)},Kinetic.Node.prototype._listenDrag=function(){var a=this;this._dragCleanup(),"Stage"===this.getClassName()?this.on("contentMousedown.kinetic contentTouchstart.kinetic",function(b){Kinetic.DD.node||a.startDrag(b)}):this.on("mousedown.kinetic touchstart.kinetic",function(b){1!==b.evt.button&&2!==b.evt.button&&(Kinetic.DD.node||a.startDrag(b))})},Kinetic.Node.prototype._dragChange=function(){if(this.attrs.draggable)this._listenDrag();else{this._dragCleanup();var a=this.getStage(),b=Kinetic.DD;a&&b.node&&b.node._id===this._id&&b.node.stopDrag()}},Kinetic.Node.prototype._dragCleanup=function(){"Stage"===this.getClassName()?(this.off("contentMousedown.kinetic"),this.off("contentTouchstart.kinetic")):(this.off("mousedown.kinetic"),this.off("touchstart.kinetic"))},Kinetic.Factory.addGetterSetter(Kinetic.Node,"dragBoundFunc"),Kinetic.Factory.addGetter(Kinetic.Node,"draggable",!1),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"draggable");var b=Kinetic.document.documentElement;b.addEventListener("mouseup",Kinetic.DD._endDragBefore,!0),b.addEventListener("touchend",Kinetic.DD._endDragBefore,!0),b.addEventListener("mouseup",Kinetic.DD._endDragAfter,!1),b.addEventListener("touchend",Kinetic.DD._endDragAfter,!1)}(),function(){Kinetic.Util.addMethods(Kinetic.Container,{__init:function(a){this.children=new Kinetic.Collection,Kinetic.Node.call(this,a)},getChildren:function(a){if(a){var b=new Kinetic.Collection;return this.children.each(function(c){a(c)&&b.push(c)}),b}return this.children},hasChildren:function(){return this.getChildren().length>0},removeChildren:function(){for(var a,b=Kinetic.Collection.toCollection(this.children),c=0;c<b.length;c++)a=b[c],delete a.parent,a.index=0,a.hasChildren()&&a.removeChildren(),a.remove();return b=null,this.children=new Kinetic.Collection,this},destroyChildren:function(){for(var a,b=Kinetic.Collection.toCollection(this.children),c=0;c<b.length;c++)a=b[c],delete a.parent,a.index=0,a.destroy();return b=null,this.children=new Kinetic.Collection,this},add:function(a){if(arguments.length>1){for(var b=0;b<arguments.length;b++)this.add(arguments[b]);return this}if(a.getParent())return a.moveTo(this),this;var c=this.children;return this._validateAdd(a),a.index=c.length,a.parent=this,c.push(a),this._fire("add",{child:a}),a.isDragging()&&Kinetic.DD.anim.setLayers(a.getLayer()),this},destroy:function(){this.hasChildren()&&this.destroyChildren(),Kinetic.Node.prototype.destroy.call(this)},find:function(a){var b,c,d,e,f,g,h,i=[],j=a.replace(/ /g,"").split(","),k=j.length;for(b=0;k>b;b++)if(d=j[b],"#"===d.charAt(0))f=this._getNodeById(d.slice(1)),f&&i.push(f);else if("."===d.charAt(0))e=this._getNodesByName(d.slice(1)),i=i.concat(e);else for(g=this.getChildren(),h=g.length,c=0;h>c;c++)i=i.concat(g[c]._get(d));return Kinetic.Collection.toCollection(i)},_getNodeById:function(a){var b=Kinetic.ids[a];return void 0!==b&&this.isAncestorOf(b)?b:null},_getNodesByName:function(a){var b=Kinetic.names[a]||[];return this._getDescendants(b)},_get:function(a){for(var b=Kinetic.Node.prototype._get.call(this,a),c=this.getChildren(),d=c.length,e=0;d>e;e++)b=b.concat(c[e]._get(a));return b},toObject:function(){var a=Kinetic.Node.prototype.toObject.call(this);a.children=[];for(var b=this.getChildren(),c=b.length,d=0;c>d;d++){var e=b[d];a.children.push(e.toObject())}return a},_getDescendants:function(a){for(var b=[],c=a.length,d=0;c>d;d++){var e=a[d];this.isAncestorOf(e)&&b.push(e)}return b},isAncestorOf:function(a){for(var b=a.getParent();b;){if(b._id===this._id)return!0;b=b.getParent()}return!1},clone:function(a){var b=Kinetic.Node.prototype.clone.call(this,a);return this.getChildren().each(function(a){b.add(a.clone())}),b},getAllIntersections:function(a){var b=[];return this.find("Shape").each(function(c){c.isVisible()&&c.intersects(a)&&b.push(c)}),b},_setChildrenIndices:function(){this.children.each(function(a,b){a.index=b})},drawScene:function(a,b){var c=this.getLayer(),d=a||c&&c.getCanvas(),e=d&&d.getContext(),f=this._cache.canvas,g=f&&f.scene;return this.isVisible()&&(g?this._drawCachedSceneCanvas(e):this._drawChildren(d,"drawScene",b)),this},drawHit:function(a,b){var c=this.getLayer(),d=a||c&&c.hitCanvas,e=d&&d.getContext(),f=this._cache.canvas,g=f&&f.hit;return this.shouldDrawHit(d)&&(c&&c.clearHitCache(),g?this._drawCachedHitCanvas(e):this._drawChildren(d,"drawHit",b)),this},_drawChildren:function(a,b,c){var d,e,f=this.getLayer(),g=a&&a.getContext(),h=this.getClipWidth(),i=this.getClipHeight(),j=h&&i;j&&f&&(d=this.getClipX(),e=this.getClipY(),g.save(),f._applyTransform(this,g),g.beginPath(),g.rect(d,e,h,i),g.clip(),g.reset()),this.children.each(function(d){d[b](a,c)}),j&&g.restore()},shouldDrawHit:function(a){var b=this.getLayer(),c=Kinetic.DD,d=c&&Kinetic.isDragging()&&-1!==Kinetic.DD.anim.getLayers().indexOf(b);return a&&a.isCache||b&&b.hitGraphEnabled()&&this.isVisible()&&!d}}),Kinetic.Util.extend(Kinetic.Container,Kinetic.Node),Kinetic.Container.prototype.get=Kinetic.Container.prototype.find,Kinetic.Factory.addComponentsGetterSetter(Kinetic.Container,"clip",["x","y","width","height"]),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipX"),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipY"),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipWidth"),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipHeight"),Kinetic.Collection.mapMethods(Kinetic.Container)}(),function(){function a(a){a.fill()}function b(a){a.stroke()}function c(a){a.fill()}function d(a){a.stroke()}function e(){this._clearCache(f)}var f="hasShadow";Kinetic.Util.addMethods(Kinetic.Shape,{__init:function(f){this.nodeType="Shape",this._fillFunc=a,this._strokeFunc=b,this._fillFuncHit=c,this._strokeFuncHit=d;for(var g,h=Kinetic.shapes;g=Kinetic.Util.getRandomColor(),!g||g in h;);this.colorKey=g,h[g]=this,Kinetic.Node.call(this,f),this.on("shadowColorChange.kinetic shadowBlurChange.kinetic shadowOffsetChange.kinetic shadowOpacityChange.kinetic shadowEnabledChange.kinetic",e)},hasChildren:function(){return!1},getChildren:function(){return[]},getContext:function(){return this.getLayer().getContext()},getCanvas:function(){return this.getLayer().getCanvas()},hasShadow:function(){return this._getCache(f,this._hasShadow)},_hasShadow:function(){return this.getShadowEnabled()&&0!==this.getShadowOpacity()&&!!(this.getShadowColor()||this.getShadowBlur()||this.getShadowOffsetX()||this.getShadowOffsetY())},hasFill:function(){return!!(this.getFill()||this.getFillPatternImage()||this.getFillLinearGradientColorStops()||this.getFillRadialGradientColorStops())},hasStroke:function(){return!!(this.stroke()||this.strokeRed()||this.strokeGreen()||this.strokeBlue())},intersects:function(a){var b,c=this.getStage(),d=c.bufferHitCanvas;return d.getContext().clear(),this.drawScene(d),b=d.context.getImageData(Math.round(a.x),Math.round(a.y),1,1).data,b[3]>0},destroy:function(){Kinetic.Node.prototype.destroy.call(this),delete Kinetic.shapes[this.colorKey]},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasFill()&&this.hasStroke()&&this.getStage()},drawScene:function(a,b){var c,d,e,f=this.getLayer(),g=a||f.getCanvas(),h=g.getContext(),i=this._cache.canvas,j=this.sceneFunc(),k=this.hasShadow();if(this.isVisible())if(i)this._drawCachedSceneCanvas(h);else if(j){if(h.save(),this._useBufferCanvas()){if(c=this.getStage(),d=c.bufferCanvas,e=d.getContext(),e.clear(),e.save(),e._applyLineJoin(this),f)f._applyTransform(this,e,b);else{var l=this.getAbsoluteTransform(b).getMatrix();h.transform(l[0],l[1],l[2],l[3],l[4],l[5])}j.call(this,e),e.restore(),k&&!g.hitCanvas&&(h.save(),h._applyShadow(this),h.drawImage(d._canvas,0,0),h.restore()),h._applyOpacity(this),h.drawImage(d._canvas,0,0)}else{if(h._applyLineJoin(this),f)f._applyTransform(this,h,b);else{var m=this.getAbsoluteTransform(b).getMatrix();h.transform(m[0],m[1],m[2],m[3],m[4],m[5])}k&&!g.hitCanvas&&(h.save(),h._applyShadow(this),j.call(this,h),h.restore()),h._applyOpacity(this),j.call(this,h)}h.restore()}return this},drawHit:function(a,b){var c=this.getLayer(),d=a||c.hitCanvas,e=d.getContext(),f=this.hitFunc()||this.sceneFunc(),g=this._cache.canvas,h=g&&g.hit;if(this.shouldDrawHit(d))if(c&&c.clearHitCache(),h)this._drawCachedHitCanvas(e);else if(f){if(e.save(),e._applyLineJoin(this),c)c._applyTransform(this,e,b);else{var i=this.getAbsoluteTransform(b).getMatrix();e.transform(i[0],i[1],i[2],i[3],i[4],i[5])}f.call(this,e),e.restore()}return this},drawHitFromCache:function(a){var b,c,d,e,f,g,h,i,j=a||0,k=this._cache.canvas,l=this._getCachedSceneCanvas(),m=l.getContext(),n=k.hit,o=n.getContext(),p=l.getWidth(),q=l.getHeight();o.clear();try{for(b=m.getImageData(0,0,p,q),c=b.data,d=o.getImageData(0,0,p,q),e=d.data,f=c.length,g=Kinetic.Util._hexToRgb(this.colorKey),h=0;f>h;h+=4)i=c[h+3],i>j&&(e[h]=g.r,e[h+1]=g.g,e[h+2]=g.b,e[h+3]=255);o.putImageData(d,0,0)}catch(r){Kinetic.Util.warn("Unable to draw hit graph from cached scene canvas. "+r.message)}return this}}),Kinetic.Util.extend(Kinetic.Shape,Kinetic.Node),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"stroke"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeRed",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeGreen",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeBlue",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeAlpha",1,Kinetic.Validators.alphaComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeWidth",2),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"lineJoin"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"lineCap"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"sceneFunc"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"hitFunc"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"dash"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowColor"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowRed",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowGreen",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowBlue",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowAlpha",1,Kinetic.Validators.alphaComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowBlur"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOpacity"),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"shadowOffset",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOffsetX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOffsetY",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternImage"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fill"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRed",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillGreen",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillBlue",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillAlpha",1,Kinetic.Validators.alphaComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternY",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientColorStops"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientColorStops"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternRepeat","repeat"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"dashEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeScaleEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPriority","color"),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillPatternOffset",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternOffsetX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternOffsetY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillPatternScale",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternScaleX",1),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternScaleY",1),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillLinearGradientStartPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientStartPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientStartPointY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillLinearGradientEndPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientEndPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientEndPointY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillRadialGradientStartPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartPointY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillRadialGradientEndPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndPointY",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternRotation",0),Kinetic.Factory.backCompat(Kinetic.Shape,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"}),Kinetic.Collection.mapMethods(Kinetic.Shape)}(),function(){function a(a,b){a.content.addEventListener(b,function(c){a[L+b](c)},!1)}var b="Stage",c="string",d="px",e="mouseout",f="mouseleave",g="mouseover",h="mouseenter",i="mousemove",j="mousedown",k="mouseup",l="click",m="dblclick",n="touchstart",o="touchend",p="tap",q="dbltap",r="touchmove",s="DOMMouseScroll",t="mousewheel",u="wheel",v="contentMouseout",w="contentMouseover",x="contentMousemove",y="contentMousedown",z="contentMouseup",A="contentClick",B="contentDblclick",C="contentTouchstart",D="contentTouchend",E="contentDbltap",F="contentTouchmove",G="div",H="relative",I="inline-block",J="kineticjs-content",K=" ",L="_",M="container",N="",O=[j,i,k,e,n,r,o,g,s,t,u],P=O.length;Kinetic.Util.addMethods(Kinetic.Stage,{___init:function(a){this.nodeType=b,Kinetic.Container.call(this,a),this._id=Kinetic.idCounter++,this._buildDOM(),this._bindContentEvents(),this._enableNestedTransforms=!1,Kinetic.stages.push(this)},_validateAdd:function(a){"Layer"!==a.getType()&&Kinetic.Util.error("You may only add layers to the stage.")},setContainer:function(a){if(typeof a===c){var b=a;if(a=Kinetic.document.getElementById(a),!a)throw"Can not find container in document with id "+b}return this._setAttr(M,a),this},shouldDrawHit:function(){return!0},draw:function(){return Kinetic.Node.prototype.draw.call(this),this},setHeight:function(a){return Kinetic.Node.prototype.setHeight.call(this,a),this._resizeDOM(),this},setWidth:function(a){return Kinetic.Node.prototype.setWidth.call(this,a),this._resizeDOM(),this},clear:function(){var a,b=this.children,c=b.length;for(a=0;c>a;a++)b[a].clear();return this},clone:function(a){return a||(a={}),a.container=Kinetic.document.createElement(G),Kinetic.Container.prototype.clone.call(this,a)},destroy:function(){var a=this.content;Kinetic.Container.prototype.destroy.call(this),a&&Kinetic.Util._isInDocument(a)&&this.getContainer().removeChild(a);var b=Kinetic.stages.indexOf(this);b>-1&&Kinetic.stages.splice(b,1)},getPointerPosition:function(){return this.pointerPos},getStage:function(){return this},getContent:function(){return this.content},toDataURL:function(a){function b(e){var f=i[e],j=f.toDataURL(),k=new Kinetic.window.Image;k.onload=function(){h.drawImage(k,0,0),e<i.length-1?b(e+1):a.callback(g.toDataURL(c,d))},k.src=j}a=a||{};var c=a.mimeType||null,d=a.quality||null,e=a.x||0,f=a.y||0,g=new Kinetic.SceneCanvas({width:a.width||this.getWidth(),height:a.height||this.getHeight(),pixelRatio:1}),h=g.getContext()._context,i=this.children;(e||f)&&h.translate(-1*e,-1*f),b(0)},toImage:function(a){var b=a.callback;a.callback=function(a){Kinetic.Util._getImage(a,function(a){b(a)})},this.toDataURL(a)},getIntersection:function(a){var b,c,d=this.getChildren(),e=d.length,f=e-1;for(b=f;b>=0;b--)if(c=d[b].getIntersection(a))return c;return null},_resizeDOM:function(){if(this.content){var a,b,c=this.getWidth(),e=this.getHeight(),f=this.getChildren(),g=f.length;for(this.content.style.width=c+d,this.content.style.height=e+d,this.bufferCanvas.setSize(c,e),this.bufferHitCanvas.setSize(c,e),a=0;g>a;a++)b=f[a],b.setSize(c,e),b.draw()}},add:function(a){if(!(arguments.length>1))return Kinetic.Container.prototype.add.call(this,a),a._setCanvasSize(this.width(),this.height()),a.draw(),this.content.appendChild(a.canvas._canvas),this;for(var b=0;b<arguments.length;b++)this.add(arguments[b])},getParent:function(){return null},getLayer:function(){return null},getLayers:function(){return this.getChildren()},_bindContentEvents:function(){for(var b=0;P>b;b++)a(this,O[b])},_mouseover:function(a){Kinetic.UA.mobile||(this._setPointerPosition(a),this._fire(w,{evt:a}))},_mouseout:function(a){if(!Kinetic.UA.mobile){this._setPointerPosition(a);var b=this.targetShape;b&&!Kinetic.isDragging()&&(b._fireAndBubble(e,{evt:a}),b._fireAndBubble(f,{evt:a}),this.targetShape=null),this.pointerPos=void 0,this._fire(v,{evt:a})}},_mousemove:function(a){if(Kinetic.UA.ieMobile)return this._touchmove(a);if(("undefined"==typeof a.webkitMovementX&&"undefined"==typeof a.webkitMovementY||0!==a.webkitMovementY||0!==a.webkitMovementX)&&!Kinetic.UA.mobile){
+this._setPointerPosition(a);var b,c=Kinetic.DD;Kinetic.isDragging()||(b=this.getIntersection(this.getPointerPosition()),b&&b.isListening()?Kinetic.isDragging()||this.targetShape&&this.targetShape._id===b._id?b._fireAndBubble(i,{evt:a}):(this.targetShape&&(this.targetShape._fireAndBubble(e,{evt:a},b),this.targetShape._fireAndBubble(f,{evt:a},b)),b._fireAndBubble(g,{evt:a},this.targetShape),b._fireAndBubble(h,{evt:a},this.targetShape),this.targetShape=b):this.targetShape&&!Kinetic.isDragging()&&(this.targetShape._fireAndBubble(e,{evt:a}),this.targetShape._fireAndBubble(f,{evt:a}),this.targetShape=null),this._fire(x,{evt:a})),c&&c._drag(a),a.preventDefault&&a.preventDefault()}},_mousedown:function(a){if(Kinetic.UA.ieMobile)return this._touchstart(a);if(!Kinetic.UA.mobile){this._setPointerPosition(a);var b=this.getIntersection(this.getPointerPosition());Kinetic.listenClickTap=!0,b&&b.isListening()&&(this.clickStartShape=b,b._fireAndBubble(j,{evt:a})),this._fire(y,{evt:a})}a.preventDefault&&a.preventDefault()},_mouseup:function(a){if(Kinetic.UA.ieMobile)return this._touchend(a);if(!Kinetic.UA.mobile){this._setPointerPosition(a);var b=this.getIntersection(this.getPointerPosition()),c=this.clickStartShape,d=!1,e=Kinetic.DD;Kinetic.inDblClickWindow?(d=!0,Kinetic.inDblClickWindow=!1):e&&e.justDragged?e&&(e.justDragged=!1):Kinetic.inDblClickWindow=!0,setTimeout(function(){Kinetic.inDblClickWindow=!1},Kinetic.dblClickWindow),b&&b.isListening()&&(b._fireAndBubble(k,{evt:a}),Kinetic.listenClickTap&&c&&c._id===b._id&&(b._fireAndBubble(l,{evt:a}),d&&b._fireAndBubble(m,{evt:a}))),this._fire(z,{evt:a}),Kinetic.listenClickTap&&(this._fire(A,{evt:a}),d&&this._fire(B,{evt:a})),Kinetic.listenClickTap=!1}a.preventDefault&&a.preventDefault()},_touchstart:function(a){this._setPointerPosition(a);var b=this.getIntersection(this.getPointerPosition());Kinetic.listenClickTap=!0,b&&b.isListening()&&(this.tapStartShape=b,b._fireAndBubble(n,{evt:a}),b.isListening()&&a.preventDefault&&a.preventDefault()),this._fire(C,{evt:a})},_touchend:function(a){this._setPointerPosition(a);var b=this.getIntersection(this.getPointerPosition()),c=!1;Kinetic.inDblClickWindow?(c=!0,Kinetic.inDblClickWindow=!1):Kinetic.inDblClickWindow=!0,setTimeout(function(){Kinetic.inDblClickWindow=!1},Kinetic.dblClickWindow),b&&b.isListening()&&(b._fireAndBubble(o,{evt:a}),Kinetic.listenClickTap&&b._id===this.tapStartShape._id&&(b._fireAndBubble(p,{evt:a}),c&&b._fireAndBubble(q,{evt:a})),b.isListening()&&a.preventDefault&&a.preventDefault()),Kinetic.listenClickTap&&(this._fire(D,{evt:a}),c&&this._fire(E,{evt:a})),Kinetic.listenClickTap=!1},_touchmove:function(a){this._setPointerPosition(a);var b,c=Kinetic.DD;Kinetic.isDragging()||(b=this.getIntersection(this.getPointerPosition()),b&&b.isListening()&&(b._fireAndBubble(r,{evt:a}),b.isListening()&&a.preventDefault&&a.preventDefault()),this._fire(F,{evt:a})),c&&(c._drag(a),Kinetic.isDragging()&&a.preventDefault())},_DOMMouseScroll:function(a){this._mousewheel(a)},_mousewheel:function(a){this._setPointerPosition(a);var b=this.getIntersection(this.getPointerPosition());b&&b.isListening()&&b._fireAndBubble(t,{evt:a})},_wheel:function(a){this._mousewheel(a)},_setPointerPosition:function(a){var b,c=this._getContentPosition(),d=a.offsetX,e=a.clientX,f=null,g=null;a=a?a:window.event,void 0!==a.touches?a.touches.length>0&&(b=a.touches[0],f=b.clientX-c.left,g=b.clientY-c.top):void 0!==d?(f=d,g=a.offsetY):"mozilla"===Kinetic.UA.browser?(f=a.layerX,g=a.layerY):void 0!==e&&c&&(f=e-c.left,g=a.clientY-c.top),null!==f&&null!==g&&(this.pointerPos={x:f,y:g})},_getContentPosition:function(){var a=this.content.getBoundingClientRect?this.content.getBoundingClientRect():{top:0,left:0};return{top:a.top,left:a.left}},_buildDOM:function(){var a=this.getContainer();if(!a){if(Kinetic.Util.isBrowser())throw"Stage has no container. A container is required.";a=Kinetic.document.createElement(G)}a.innerHTML=N,this.content=Kinetic.document.createElement(G),this.content.style.position=H,this.content.style.display=I,this.content.className=J,this.content.setAttribute("role","presentation"),a.appendChild(this.content),this.bufferCanvas=new Kinetic.SceneCanvas({pixelRatio:1}),this.bufferHitCanvas=new Kinetic.HitCanvas,this._resizeDOM()},_onContent:function(a,b){var c,d,e=a.split(K),f=e.length;for(c=0;f>c;c++)d=e[c],this.content.addEventListener(d,b,!1)},cache:function(){Kinetic.Util.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.")},clearCache:function(){}}),Kinetic.Util.extend(Kinetic.Stage,Kinetic.Container),Kinetic.Factory.addGetter(Kinetic.Stage,"container"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Stage,"container")}(),function(){Kinetic.Util.addMethods(Kinetic.BaseLayer,{___init:function(a){this.nodeType="Layer",Kinetic.Container.call(this,a)},createPNGStream:function(){return this.canvas._canvas.createPNGStream()},getCanvas:function(){return this.canvas},getHitCanvas:function(){return this.hitCanvas},getContext:function(){return this.getCanvas().getContext()},clear:function(a){return this.getContext().clear(a),this.getHitCanvas().getContext().clear(a),this},clearHitCache:function(){this._hitImageData=void 0},setZIndex:function(a){Kinetic.Node.prototype.setZIndex.call(this,a);var b=this.getStage();return b&&(b.content.removeChild(this.getCanvas()._canvas),a<b.getChildren().length-1?b.content.insertBefore(this.getCanvas()._canvas,b.getChildren()[a+1].getCanvas()._canvas):b.content.appendChild(this.getCanvas()._canvas)),this},moveToTop:function(){Kinetic.Node.prototype.moveToTop.call(this);var a=this.getStage();a&&(a.content.removeChild(this.getCanvas()._canvas),a.content.appendChild(this.getCanvas()._canvas))},moveUp:function(){if(Kinetic.Node.prototype.moveUp.call(this)){var a=this.getStage();a&&(a.content.removeChild(this.getCanvas()._canvas),this.index<a.getChildren().length-1?a.content.insertBefore(this.getCanvas()._canvas,a.getChildren()[this.index+1].getCanvas()._canvas):a.content.appendChild(this.getCanvas()._canvas))}},moveDown:function(){if(Kinetic.Node.prototype.moveDown.call(this)){var a=this.getStage();if(a){var b=a.getChildren();a.content.removeChild(this.getCanvas()._canvas),a.content.insertBefore(this.getCanvas()._canvas,b[this.index+1].getCanvas()._canvas)}}},moveToBottom:function(){if(Kinetic.Node.prototype.moveToBottom.call(this)){var a=this.getStage();if(a){var b=a.getChildren();a.content.removeChild(this.getCanvas()._canvas),a.content.insertBefore(this.getCanvas()._canvas,b[1].getCanvas()._canvas)}}},getLayer:function(){return this},remove:function(){var a=this.getCanvas()._canvas;return Kinetic.Node.prototype.remove.call(this),a&&a.parentNode&&Kinetic.Util._isInDocument(a)&&a.parentNode.removeChild(a),this},getStage:function(){return this.parent},setSize:function(a,b){this.canvas.setSize(a,b)},getWidth:function(){return this.parent?this.parent.getWidth():void 0},setWidth:function(){Kinetic.Util.warn('Can not change width of layer. Use "stage.width(value)" function instead.')},getHeight:function(){return this.parent?this.parent.getHeight():void 0},setHeight:function(){Kinetic.Util.warn('Can not change height of layer. Use "stage.height(value)" function instead.')}}),Kinetic.Util.extend(Kinetic.BaseLayer,Kinetic.Container),Kinetic.Factory.addGetterSetter(Kinetic.BaseLayer,"clearBeforeDraw",!0),Kinetic.Collection.mapMethods(Kinetic.BaseLayer)}(),function(){var a="#",b="beforeDraw",c="draw",d=[{x:0,y:0},{x:-1,y:0},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:1,y:0},{x:1,y:1},{x:0,y:1},{x:-1,y:1}],e=d.length;Kinetic.Util.addMethods(Kinetic.Layer,{____init:function(a){this.nodeType="Layer",this.canvas=new Kinetic.SceneCanvas,this.hitCanvas=new Kinetic.HitCanvas,Kinetic.BaseLayer.call(this,a)},_setCanvasSize:function(a,b){this.canvas.setSize(a,b),this.hitCanvas.setSize(a,b)},_validateAdd:function(a){var b=a.getType();"Group"!==b&&"Shape"!==b&&Kinetic.Util.error("You may only add groups and shapes to a layer.")},getIntersection:function(a){var b,c,f,g;if(!this.hitGraphEnabled()||!this.isVisible())return null;for(var h=1,i=!1;;){for(c=0;e>c;c++){if(f=d[c],b=this._getIntersection({x:a.x+f.x*h,y:a.y+f.y*h}),g=b.shape)return g;b.antialiased&&(i=!0)}if(!i)return;h+=1}},_getImageData:function(a,b){var c=this.hitCanvas.width||1,d=this.hitCanvas.height||1,e=Math.round(b)*c+Math.round(a);return this._hitImageData||(this._hitImageData=this.hitCanvas.context.getImageData(0,0,c,d)),[this._hitImageData.data[4*e+0],this._hitImageData.data[4*e+1],this._hitImageData.data[4*e+2],this._hitImageData.data[4*e+3]]},_getIntersection:function(b){var c,d,e=this.hitCanvas.context.getImageData(b.x,b.y,1,1).data,f=e[3];return 255===f?(c=Kinetic.Util._rgbToHex(e[0],e[1],e[2]),d=Kinetic.shapes[a+c],{shape:d}):f>0?{antialiased:!0}:{}},drawScene:function(a,d){var e=this.getLayer(),f=a||e&&e.getCanvas();return this._fire(b,{node:this}),this.getClearBeforeDraw()&&f.getContext().clear(),Kinetic.Container.prototype.drawScene.call(this,f,d),this._fire(c,{node:this}),this},_applyTransform:function(a,b,c){var d=a.getAbsoluteTransform(c).getMatrix();b.transform(d[0],d[1],d[2],d[3],d[4],d[5])},drawHit:function(a,b){var c=this.getLayer(),d=a||c&&c.hitCanvas;return c&&c.getClearBeforeDraw()&&c.getHitCanvas().getContext().clear(),Kinetic.Container.prototype.drawHit.call(this,d,b),this.imageData=null,this},clear:function(a){return this.getContext().clear(a),this.getHitCanvas().getContext().clear(a),this.imageData=null,this},setVisible:function(a){return Kinetic.Node.prototype.setVisible.call(this,a),a?(this.getCanvas()._canvas.style.display="block",this.hitCanvas._canvas.style.display="block"):(this.getCanvas()._canvas.style.display="none",this.hitCanvas._canvas.style.display="none"),this},enableHitGraph:function(){return this.setHitGraphEnabled(!0),this},disableHitGraph:function(){return this.setHitGraphEnabled(!1),this},setSize:function(a,b){Kinetic.BaseLayer.prototype.setSize.call(this,a,b),this.hitCanvas.setSize(a,b)}}),Kinetic.Util.extend(Kinetic.Layer,Kinetic.BaseLayer),Kinetic.Factory.addGetterSetter(Kinetic.Layer,"hitGraphEnabled",!0),Kinetic.Collection.mapMethods(Kinetic.Layer)}(),function(){Kinetic.Util.addMethods(Kinetic.FastLayer,{____init:function(a){this.nodeType="Layer",this.canvas=new Kinetic.SceneCanvas,Kinetic.BaseLayer.call(this,a)},_validateAdd:function(a){var b=a.getType();"Shape"!==b&&Kinetic.Util.error("You may only add shapes to a fast layer.")},_setCanvasSize:function(a,b){this.canvas.setSize(a,b)},hitGraphEnabled:function(){return!1},getIntersection:function(){return null},drawScene:function(a){var b=this.getLayer(),c=a||b&&b.getCanvas();return this.getClearBeforeDraw()&&c.getContext().clear(),Kinetic.Container.prototype.drawScene.call(this,c),this},_applyTransform:function(a,b,c){if(!c||c._id!==this._id){var d=a.getTransform().getMatrix();b.transform(d[0],d[1],d[2],d[3],d[4],d[5])}},draw:function(){return this.drawScene(),this},clear:function(a){return this.getContext().clear(a),this},setVisible:function(a){return Kinetic.Node.prototype.setVisible.call(this,a),this.getCanvas()._canvas.style.display=a?"block":"none",this}}),Kinetic.Util.extend(Kinetic.FastLayer,Kinetic.BaseLayer),Kinetic.Collection.mapMethods(Kinetic.FastLayer)}(),function(){Kinetic.Util.addMethods(Kinetic.Group,{___init:function(a){this.nodeType="Group",Kinetic.Container.call(this,a)},_validateAdd:function(a){var b=a.getType();"Group"!==b&&"Shape"!==b&&Kinetic.Util.error("You may only add groups and shapes to groups.")}}),Kinetic.Util.extend(Kinetic.Group,Kinetic.Container),Kinetic.Collection.mapMethods(Kinetic.Group)}(),function(){Kinetic.Rect=function(a){this.___init(a)},Kinetic.Rect.prototype={___init:function(a){Kinetic.Shape.call(this,a),this.className="Rect",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(a){var b=this.getCornerRadius(),c=this.getWidth(),d=this.getHeight();a.beginPath(),b?(a.moveTo(b,0),a.lineTo(c-b,0),a.arc(c-b,b,b,3*Math.PI/2,0,!1),a.lineTo(c,d-b),a.arc(c-b,d-b,b,0,Math.PI/2,!1),a.lineTo(b,d),a.arc(b,d-b,b,Math.PI/2,Math.PI,!1),a.lineTo(0,b),a.arc(b,b,b,Math.PI,3*Math.PI/2,!1)):a.rect(0,0,c,d),a.closePath(),a.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Rect,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Rect,"cornerRadius",0),Kinetic.Collection.mapMethods(Kinetic.Rect)}(),function(){var a=2*Math.PI-1e-4,b="Circle";Kinetic.Circle=function(a){this.___init(a)},Kinetic.Circle.prototype={___init:function(a){Kinetic.Shape.call(this,a),this.className=b,this.sceneFunc(this._sceneFunc)},_sceneFunc:function(b){b.beginPath(),b.arc(0,0,this.getRadius(),0,a,!1),b.closePath(),b.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadius()},getHeight:function(){return 2*this.getRadius()},setWidth:function(a){Kinetic.Node.prototype.setWidth.call(this,a),this.radius()!==a/2&&this.setRadius(a/2)},setHeight:function(a){Kinetic.Node.prototype.setHeight.call(this,a),this.radius()!==a/2&&this.setRadius(a/2)},setRadius:function(a){this._setAttr("radius",a),this.setWidth(2*a),this.setHeight(2*a)}},Kinetic.Util.extend(Kinetic.Circle,Kinetic.Shape),Kinetic.Factory.addGetter(Kinetic.Circle,"radius",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Circle,"radius"),Kinetic.Collection.mapMethods(Kinetic.Circle)}(),function(){var a=2*Math.PI-1e-4,b="Ellipse";Kinetic.Ellipse=function(a){this.___init(a)},Kinetic.Ellipse.prototype={___init:function(a){Kinetic.Shape.call(this,a),this.className=b,this.sceneFunc(this._sceneFunc)},_sceneFunc:function(b){var c=this.getRadiusX(),d=this.getRadiusY();b.beginPath(),b.save(),c!==d&&b.scale(1,d/c),b.arc(0,0,c,0,a,!1),b.restore(),b.closePath(),b.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadiusX()},getHeight:function(){return 2*this.getRadiusY()},setWidth:function(a){Kinetic.Node.prototype.setWidth.call(this,a),this.setRadius({x:a/2})},setHeight:function(a){Kinetic.Node.prototype.setHeight.call(this,a),this.setRadius({y:a/2})}},Kinetic.Util.extend(Kinetic.Ellipse,Kinetic.Shape),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Ellipse,"radius",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Ellipse,"radiusX",0),Kinetic.Factory.addGetterSetter(Kinetic.Ellipse,"radiusY",0),Kinetic.Collection.mapMethods(Kinetic.Ellipse)}(),function(){var a=2*Math.PI-1e-4;Kinetic.Ring=function(a){this.___init(a)},Kinetic.Ring.prototype={___init:function(a){Kinetic.Shape.call(this,a),this.className="Ring",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(b){b.beginPath(),b.arc(0,0,this.getInnerRadius(),0,a,!1),b.moveTo(this.getOuterRadius(),0),b.arc(0,0,this.getOuterRadius(),a,0,!0),b.closePath(),b.fillStrokeShape(this)},getWidth:function(){return 2*this.getOuterRadius()},getHeight:function(){return 2*this.getOuterRadius()},setWidth:function(a){Kinetic.Node.prototype.setWidth.call(this,a),this.outerRadius()!==a/2&&this.setOuterRadius(a/2)},setHeight:function(a){Kinetic.Node.prototype.setHeight.call(this,a),this.outerRadius()!==a/2&&this.setOuterRadius(a/2)},setOuterRadius:function(a){this._setAttr("outerRadius",a),this.setWidth(2*a),this.setHeight(2*a)}},Kinetic.Util.extend(Kinetic.Ring,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Ring,"innerRadius",0),Kinetic.Factory.addGetter(Kinetic.Ring,"outerRadius",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Ring,"outerRadius"),Kinetic.Collection.mapMethods(Kinetic.Ring)}(),function(){Kinetic.Wedge=function(a){this.___init(a)},Kinetic.Wedge.prototype={___init:function(a){Kinetic.Shape.call(this,a),this.className="Wedge",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(a){a.beginPath(),a.arc(0,0,this.getRadius(),0,Kinetic.getAngle(this.getAngle()),this.getClockwise()),a.lineTo(0,0),a.closePath(),a.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Wedge,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"radius",0),Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"angle",0),Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"clockwise",!1),Kinetic.Factory.backCompat(Kinetic.Wedge,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"}),Kinetic.Collection.mapMethods(Kinetic.Wedge)}(),function(){Kinetic.Arc=function(a){this.___init(a)},Kinetic.Arc.prototype={___init:function(a){Kinetic.Shape.call(this,a),this.className="Arc",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(a){var b=Kinetic.getAngle(this.angle()),c=this.clockwise();a.beginPath(),a.arc(0,0,this.getOuterRadius(),0,b,c),a.arc(0,0,this.getInnerRadius(),b,0,!c),a.closePath(),a.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Arc,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"innerRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"outerRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"angle",0),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"clockwise",!1),Kinetic.Collection.mapMethods(Kinetic.Arc)}(),function(){var a="Image";Kinetic.Image=function(a){this.___init(a)},Kinetic.Image.prototype={___init:function(b){Kinetic.Shape.call(this,b),this.className=a,this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasStroke()&&this.getStage()},_sceneFunc:function(a){var b,c,d,e=this.getWidth(),f=this.getHeight(),g=this.getImage();g&&(b=this.getCropWidth(),c=this.getCropHeight(),d=b&&c?[g,this.getCropX(),this.getCropY(),b,c,0,0,e,f]:[g,0,0,e,f]),(this.hasFill()||this.hasStroke()||this.hasShadow())&&(a.beginPath(),a.rect(0,0,e,f),a.closePath(),a.fillStrokeShape(this)),g&&a.drawImage.apply(a,d)},_hitFunc:function(a){var b=this.getWidth(),c=this.getHeight();a.beginPath(),a.rect(0,0,b,c),a.closePath(),a.fillStrokeShape(this)},getWidth:function(){var a=this.getImage();return this.attrs.width||(a?a.width:0)},getHeight:function(){var a=this.getImage();return this.attrs.height||(a?a.height:0)}},Kinetic.Util.extend(Kinetic.Image,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Image,"image"),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Image,"crop",["x","y","width","height"]),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropX",0),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropY",0),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropWidth",0),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropHeight",0),Kinetic.Collection.mapMethods(Kinetic.Image)}(),function(){function a(a){a.fillText(this.partialText,0,0)}function b(a){a.strokeText(this.partialText,0,0)}var c="auto",d="center",e="Change.kinetic",f="2d",g="-",h="",i="left",j="text",k="Text",l="middle",m="normal",n="px ",o=" ",p="right",q="word",r="char",s="none",t=["fontFamily","fontSize","fontStyle","fontVariant","padding","align","lineHeight","text","width","height","wrap"],u=t.length,v=Kinetic.Util.createCanvasElement().getContext(f);Kinetic.Text=function(a){this.___init(a)},Kinetic.Text.prototype={___init:function(d){d=d||{},d.fill=d.fill||"black",void 0===d.width&&(d.width=c),void 0===d.height&&(d.height=c),Kinetic.Shape.call(this,d),this._fillFunc=a,this._strokeFunc=b,this.className=k;for(var f=0;u>f;f++)this.on(t[f]+e,this._setTextData);this._setTextData(),this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_sceneFunc:function(a){var b,c=this.getPadding(),e=this.getTextHeight(),f=this.getLineHeight()*e,g=this.textArr,h=g.length,j=this.getWidth();for(a.setAttr("font",this._getContextFont()),a.setAttr("textBaseline",l),a.setAttr("textAlign",i),a.save(),a.translate(c,0),a.translate(0,c+e/2),b=0;h>b;b++){var k=g[b],m=k.text,n=k.width;a.save(),this.getAlign()===p?a.translate(j-n-2*c,0):this.getAlign()===d&&a.translate((j-n-2*c)/2,0),this.partialText=m,a.fillStrokeShape(this),a.restore(),a.translate(0,f)}a.restore()},_hitFunc:function(a){var b=this.getWidth(),c=this.getHeight();a.beginPath(),a.rect(0,0,b,c),a.closePath(),a.fillStrokeShape(this)},setText:function(a){var b=Kinetic.Util._isString(a)?a:a.toString();return this._setAttr(j,b),this},getWidth:function(){return this.attrs.width===c?this.getTextWidth()+2*this.getPadding():this.attrs.width},getHeight:function(){return this.attrs.height===c?this.getTextHeight()*this.textArr.length*this.getLineHeight()+2*this.getPadding():this.attrs.height},getTextWidth:function(){return this.textWidth},getTextHeight:function(){return this.textHeight},_getTextSize:function(a){var b,c=v,d=this.getFontSize();return c.save(),c.font=this._getContextFont(),b=c.measureText(a),c.restore(),{width:b.width,height:parseInt(d,10)}},_getContextFont:function(){return this.getFontStyle()+o+this.getFontVariant()+o+this.getFontSize()+n+this.getFontFamily()},_addTextLine:function(a,b){return this.textArr.push({text:a,width:b})},_getTextWidth:function(a){return v.measureText(a).width},_setTextData:function(){var a=this.getText().split("\n"),b=+this.getFontSize(),d=0,e=this.getLineHeight()*b,f=this.attrs.width,h=this.attrs.height,i=f!==c,j=h!==c,k=this.getPadding(),l=f-2*k,m=h-2*k,n=0,p=this.getWrap(),q=p!==s,t=p!==r&&q;this.textArr=[],v.save(),v.font=this._getContextFont();for(var u=0,w=a.length;w>u;++u){var x=a[u],y=this._getTextWidth(x);if(i&&y>l)for(;x.length>0;){for(var z=0,A=x.length,B="",C=0;A>z;){var D=z+A>>>1,E=x.slice(0,D+1),F=this._getTextWidth(E);l>=F?(z=D+1,B=E,C=F):A=D}if(!B)break;if(t){var G=Math.max(B.lastIndexOf(o),B.lastIndexOf(g))+1;G>0&&(z=G,B=B.slice(0,z),C=this._getTextWidth(B))}if(this._addTextLine(B,C),d=Math.max(d,C),n+=e,!q||j&&n+e>m)break;if(x=x.slice(z),x.length>0&&(y=this._getTextWidth(x),l>=y)){this._addTextLine(x,y),n+=e,d=Math.max(d,y);break}}else this._addTextLine(x,y),n+=e,d=Math.max(d,y);if(j&&n+e>m)break}v.restore(),this.textHeight=b,this.textWidth=d}},Kinetic.Util.extend(Kinetic.Text,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontFamily","Arial"),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontSize",12),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontStyle",m),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontVariant",m),Kinetic.Factory.addGetterSetter(Kinetic.Text,"padding",0),Kinetic.Factory.addGetterSetter(Kinetic.Text,"align",i),Kinetic.Factory.addGetterSetter(Kinetic.Text,"lineHeight",1),Kinetic.Factory.addGetterSetter(Kinetic.Text,"wrap",q),Kinetic.Factory.addGetter(Kinetic.Text,"text",h),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Text,"text"),Kinetic.Collection.mapMethods(Kinetic.Text)}(),function(){Kinetic.Line=function(a){this.___init(a)},Kinetic.Line.prototype={___init:function(a){Kinetic.Shape.call(this,a),this.className="Line",this.on("pointsChange.kinetic tensionChange.kinetic closedChange.kinetic",function(){this._clearCache("tensionPoints")}),this.sceneFunc(this._sceneFunc)},_sceneFunc:function(a){var b,c,d,e=this.getPoints(),f=e.length,g=this.getTension(),h=this.getClosed();if(f){if(a.beginPath(),a.moveTo(e[0],e[1]),0!==g&&f>4){for(b=this.getTensionPoints(),c=b.length,d=h?0:4,h||a.quadraticCurveTo(b[0],b[1],b[2],b[3]);c-2>d;)a.bezierCurveTo(b[d++],b[d++],b[d++],b[d++],b[d++],b[d++]);h||a.quadraticCurveTo(b[c-2],b[c-1],e[f-2],e[f-1])}else for(d=2;f>d;d+=2)a.lineTo(e[d],e[d+1]);h?(a.closePath(),a.fillStrokeShape(this)):a.strokeShape(this)}},getTensionPoints:function(){return this._getCache("tensionPoints",this._getTensionPoints)},_getTensionPoints:function(){return this.getClosed()?this._getTensionPointsClosed():Kinetic.Util._expandPoints(this.getPoints(),this.getTension())},_getTensionPointsClosed:function(){var a=this.getPoints(),b=a.length,c=this.getTension(),d=Kinetic.Util,e=d._getControlPoints(a[b-2],a[b-1],a[0],a[1],a[2],a[3],c),f=d._getControlPoints(a[b-4],a[b-3],a[b-2],a[b-1],a[0],a[1],c),g=Kinetic.Util._expandPoints(a,c),h=[e[2],e[3]].concat(g).concat([f[0],f[1],a[b-2],a[b-1],f[2],f[3],e[0],e[1],a[0],a[1]]);return h}},Kinetic.Util.extend(Kinetic.Line,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Line,"closed",!1),Kinetic.Factory.addGetterSetter(Kinetic.Line,"tension",0),Kinetic.Factory.addGetterSetter(Kinetic.Line,"points",[]),Kinetic.Collection.mapMethods(Kinetic.Line)}(),function(){Kinetic.Sprite=function(a){this.___init(a)},Kinetic.Sprite.prototype={___init:function(a){Kinetic.Shape.call(this,a),this.className="Sprite",this._updated=!0;var b=this;this.anim=new Kinetic.Animation(function(){var a=b._updated;return b._updated=!1,a}),this.on("animationChange.kinetic",function(){this.frameIndex(0)}),this.on("frameIndexChange.kinetic",function(){this._updated=!0}),this.on("frameRateChange.kinetic",function(){this.anim.isRunning()&&(clearInterval(this.interval),this._setInterval())}),this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_sceneFunc:function(a){var b=this.getAnimation(),c=this.frameIndex(),d=4*c,e=this.getAnimations()[b],f=this.frameOffsets(),g=e[d+0],h=e[d+1],i=e[d+2],j=e[d+3],k=this.getImage();if(k)if(f){var l=f[b],m=2*c;a.drawImage(k,g,h,i,j,l[m+0],l[m+1],i,j)}else a.drawImage(k,g,h,i,j,0,0,i,j)},_hitFunc:function(a){var b=this.getAnimation(),c=this.frameIndex(),d=4*c,e=this.getAnimations()[b],f=this.frameOffsets(),g=e[d+2],h=e[d+3];if(a.beginPath(),f){var i=f[b],j=2*c;a.rect(i[j+0],i[j+1],g,h)}else a.rect(0,0,g,h);a.closePath(),a.fillShape(this)},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasStroke()},_setInterval:function(){var a=this;this.interval=setInterval(function(){a._updateIndex()},1e3/this.getFrameRate())},start:function(){var a=this.getLayer();this.anim.setLayers(a),this._setInterval(),this.anim.start()},stop:function(){this.anim.stop(),clearInterval(this.interval)},isRunning:function(){return this.anim.isRunning()},_updateIndex:function(){var a=this.frameIndex(),b=this.getAnimation(),c=this.getAnimations(),d=c[b],e=d.length/4;this.frameIndex(e-1>a?a+1:0)}},Kinetic.Util.extend(Kinetic.Sprite,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"animation"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"animations"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"frameOffsets"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"image"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"frameIndex",0),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"frameRate",17),Kinetic.Factory.backCompat(Kinetic.Sprite,{index:"frameIndex",getIndex:"getFrameIndex",setIndex:"setFrameIndex"}),Kinetic.Collection.mapMethods(Kinetic.Sprite)}(),function(){Kinetic.Path=function(a){this.___init(a)},Kinetic.Path.prototype={___init:function(a){this.dataArray=[];var b=this;Kinetic.Shape.call(this,a),this.className="Path",this.dataArray=Kinetic.Path.parsePathData(this.getData()),this.on("dataChange.kinetic",function(){b.dataArray=Kinetic.Path.parsePathData(this.getData())}),this.sceneFunc(this._sceneFunc)},_sceneFunc:function(a){var b=this.dataArray,c=!1;a.beginPath();for(var d=0;d<b.length;d++){var e=b[d].command,f=b[d].points;switch(e){case"L":a.lineTo(f[0],f[1]);break;case"M":a.moveTo(f[0],f[1]);break;case"C":a.bezierCurveTo(f[0],f[1],f[2],f[3],f[4],f[5]);break;case"Q":a.quadraticCurveTo(f[0],f[1],f[2],f[3]);break;case"A":var g=f[0],h=f[1],i=f[2],j=f[3],k=f[4],l=f[5],m=f[6],n=f[7],o=i>j?i:j,p=i>j?1:i/j,q=i>j?j/i:1;a.translate(g,h),a.rotate(m),a.scale(p,q),a.arc(0,0,o,k,k+l,1-n),a.scale(1/p,1/q),a.rotate(-m),a.translate(-g,-h);break;case"z":a.closePath(),c=!0}}c?a.fillStrokeShape(this):a.strokeShape(this)}},Kinetic.Util.extend(Kinetic.Path,Kinetic.Shape),Kinetic.Path.getLineLength=function(a,b,c,d){return Math.sqrt((c-a)*(c-a)+(d-b)*(d-b))},Kinetic.Path.getPointOnLine=function(a,b,c,d,e,f,g){void 0===f&&(f=b),void 0===g&&(g=c);var h=(e-c)/(d-b+1e-8),i=Math.sqrt(a*a/(1+h*h));b>d&&(i*=-1);var j,k=h*i;if(d===b)j={x:f,y:g+k};else if((g-c)/(f-b+1e-8)===h)j={x:f+i,y:g+k};else{var l,m,n=this.getLineLength(b,c,d,e);if(1e-8>n)return;var o=(f-b)*(d-b)+(g-c)*(e-c);o/=n*n,l=b+o*(d-b),m=c+o*(e-c);var p=this.getLineLength(f,g,l,m),q=Math.sqrt(a*a-p*p);i=Math.sqrt(q*q/(1+h*h)),b>d&&(i*=-1),k=h*i,j={x:l+i,y:m+k}}return j},Kinetic.Path.getPointOnCubicBezier=function(a,b,c,d,e,f,g,h,i){function j(a){return a*a*a}function k(a){return 3*a*a*(1-a)}function l(a){return 3*a*(1-a)*(1-a)}function m(a){return(1-a)*(1-a)*(1-a)}var n=h*j(a)+f*k(a)+d*l(a)+b*m(a),o=i*j(a)+g*k(a)+e*l(a)+c*m(a);return{x:n,y:o}},Kinetic.Path.getPointOnQuadraticBezier=function(a,b,c,d,e,f,g){function h(a){return a*a}function i(a){return 2*a*(1-a)}function j(a){return(1-a)*(1-a)}var k=f*h(a)+d*i(a)+b*j(a),l=g*h(a)+e*i(a)+c*j(a);return{x:k,y:l}},Kinetic.Path.getPointOnEllipticalArc=function(a,b,c,d,e,f){var g=Math.cos(f),h=Math.sin(f),i={x:c*Math.cos(e),y:d*Math.sin(e)};return{x:a+(i.x*g-i.y*h),y:b+(i.x*h+i.y*g)}},Kinetic.Path.parsePathData=function(a){if(!a)return[];var b=a,c=["m","M","l","L","v","V","h","H","z","Z","c","C","q","Q","t","T","s","S","a","A"];b=b.replace(new RegExp(" ","g"),",");for(var d=0;d<c.length;d++)b=b.replace(new RegExp(c[d],"g"),"|"+c[d]);var e=b.split("|"),f=[],g=0,h=0;for(d=1;d<e.length;d++){var i=e[d],j=i.charAt(0);i=i.slice(1),i=i.replace(new RegExp(",-","g"),"-"),i=i.replace(new RegExp("-","g"),",-"),i=i.replace(new RegExp("e,-","g"),"e-");var k=i.split(",");k.length>0&&""===k[0]&&k.shift();for(var l=0;l<k.length;l++)k[l]=parseFloat(k[l]);for(;k.length>0&&!isNaN(k[0]);){var m,n,o,p,q,r,s,t,u,v,w=null,x=[],y=g,z=h;switch(j){case"l":g+=k.shift(),h+=k.shift(),w="L",x.push(g,h);break;case"L":g=k.shift(),h=k.shift(),x.push(g,h);break;case"m":var A=k.shift(),B=k.shift();if(g+=A,h+=B,w="M",f.length>2&&"z"===f[f.length-1].command)for(var C=f.length-2;C>=0;C--)if("M"===f[C].command){g=f[C].points[0]+A,h=f[C].points[1]+B;break}x.push(g,h),j="l";break;case"M":g=k.shift(),h=k.shift(),w="M",x.push(g,h),j="L";break;case"h":g+=k.shift(),w="L",x.push(g,h);break;case"H":g=k.shift(),w="L",x.push(g,h);break;case"v":h+=k.shift(),w="L",x.push(g,h);break;case"V":h=k.shift(),w="L",x.push(g,h);break;case"C":x.push(k.shift(),k.shift(),k.shift(),k.shift()),g=k.shift(),h=k.shift(),x.push(g,h);break;case"c":x.push(g+k.shift(),h+k.shift(),g+k.shift(),h+k.shift()),g+=k.shift(),h+=k.shift(),w="C",x.push(g,h);break;case"S":n=g,o=h,m=f[f.length-1],"C"===m.command&&(n=g+(g-m.points[2]),o=h+(h-m.points[3])),x.push(n,o,k.shift(),k.shift()),g=k.shift(),h=k.shift(),w="C",x.push(g,h);break;case"s":n=g,o=h,m=f[f.length-1],"C"===m.command&&(n=g+(g-m.points[2]),o=h+(h-m.points[3])),x.push(n,o,g+k.shift(),h+k.shift()),g+=k.shift(),h+=k.shift(),w="C",x.push(g,h);break;case"Q":x.push(k.shift(),k.shift()),g=k.shift(),h=k.shift(),x.push(g,h);break;case"q":x.push(g+k.shift(),h+k.shift()),g+=k.shift(),h+=k.shift(),w="Q",x.push(g,h);break;case"T":n=g,o=h,m=f[f.length-1],"Q"===m.command&&(n=g+(g-m.points[0]),o=h+(h-m.points[1])),g=k.shift(),h=k.shift(),w="Q",x.push(n,o,g,h);break;case"t":n=g,o=h,m=f[f.length-1],"Q"===m.command&&(n=g+(g-m.points[0]),o=h+(h-m.points[1])),g+=k.shift(),h+=k.shift(),w="Q",x.push(n,o,g,h);break;case"A":p=k.shift(),q=k.shift(),r=k.shift(),s=k.shift(),t=k.shift(),u=g,v=h,g=k.shift(),h=k.shift(),w="A",x=this.convertEndpointToCenterParameterization(u,v,g,h,s,t,p,q,r);break;case"a":p=k.shift(),q=k.shift(),r=k.shift(),s=k.shift(),t=k.shift(),u=g,v=h,g+=k.shift(),h+=k.shift(),w="A",x=this.convertEndpointToCenterParameterization(u,v,g,h,s,t,p,q,r)}f.push({command:w||j,points:x,start:{x:y,y:z},pathLength:this.calcLength(y,z,w||j,x)})}("z"===j||"Z"===j)&&f.push({command:"z",points:[],start:void 0,pathLength:0})}return f},Kinetic.Path.calcLength=function(a,b,c,d){var e,f,g,h,i=Kinetic.Path;switch(c){case"L":return i.getLineLength(a,b,d[0],d[1]);case"C":for(e=0,f=i.getPointOnCubicBezier(0,a,b,d[0],d[1],d[2],d[3],d[4],d[5]),h=.01;1>=h;h+=.01)g=i.getPointOnCubicBezier(h,a,b,d[0],d[1],d[2],d[3],d[4],d[5]),e+=i.getLineLength(f.x,f.y,g.x,g.y),f=g;return e;case"Q":for(e=0,f=i.getPointOnQuadraticBezier(0,a,b,d[0],d[1],d[2],d[3]),h=.01;1>=h;h+=.01)g=i.getPointOnQuadraticBezier(h,a,b,d[0],d[1],d[2],d[3]),e+=i.getLineLength(f.x,f.y,g.x,g.y),f=g;return e;case"A":e=0;var j=d[4],k=d[5],l=d[4]+k,m=Math.PI/180;if(Math.abs(j-l)<m&&(m=Math.abs(j-l)),f=i.getPointOnEllipticalArc(d[0],d[1],d[2],d[3],j,0),0>k)for(h=j-m;h>l;h-=m)g=i.getPointOnEllipticalArc(d[0],d[1],d[2],d[3],h,0),e+=i.getLineLength(f.x,f.y,g.x,g.y),f=g;else for(h=j+m;l>h;h+=m)g=i.getPointOnEllipticalArc(d[0],d[1],d[2],d[3],h,0),
+e+=i.getLineLength(f.x,f.y,g.x,g.y),f=g;return g=i.getPointOnEllipticalArc(d[0],d[1],d[2],d[3],l,0),e+=i.getLineLength(f.x,f.y,g.x,g.y)}return 0},Kinetic.Path.convertEndpointToCenterParameterization=function(a,b,c,d,e,f,g,h,i){var j=i*(Math.PI/180),k=Math.cos(j)*(a-c)/2+Math.sin(j)*(b-d)/2,l=-1*Math.sin(j)*(a-c)/2+Math.cos(j)*(b-d)/2,m=k*k/(g*g)+l*l/(h*h);m>1&&(g*=Math.sqrt(m),h*=Math.sqrt(m));var n=Math.sqrt((g*g*h*h-g*g*l*l-h*h*k*k)/(g*g*l*l+h*h*k*k));e===f&&(n*=-1),isNaN(n)&&(n=0);var o=n*g*l/h,p=n*-h*k/g,q=(a+c)/2+Math.cos(j)*o-Math.sin(j)*p,r=(b+d)/2+Math.sin(j)*o+Math.cos(j)*p,s=function(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1])},t=function(a,b){return(a[0]*b[0]+a[1]*b[1])/(s(a)*s(b))},u=function(a,b){return(a[0]*b[1]<a[1]*b[0]?-1:1)*Math.acos(t(a,b))},v=u([1,0],[(k-o)/g,(l-p)/h]),w=[(k-o)/g,(l-p)/h],x=[(-1*k-o)/g,(-1*l-p)/h],y=u(w,x);return t(w,x)<=-1&&(y=Math.PI),t(w,x)>=1&&(y=0),0===f&&y>0&&(y-=2*Math.PI),1===f&&0>y&&(y+=2*Math.PI),[q,r,g,h,v,y,j,f]},Kinetic.Factory.addGetterSetter(Kinetic.Path,"data"),Kinetic.Collection.mapMethods(Kinetic.Path)}(),function(){function a(a){a.fillText(this.partialText,0,0)}function b(a){a.strokeText(this.partialText,0,0)}var c="",d="normal";Kinetic.TextPath=function(a){this.___init(a)},Kinetic.TextPath.prototype={___init:function(c){var d=this;this.dummyCanvas=Kinetic.Util.createCanvasElement(),this.dataArray=[],Kinetic.Shape.call(this,c),this._fillFunc=a,this._strokeFunc=b,this._fillFuncHit=a,this._strokeFuncHit=b,this.className="TextPath",this.dataArray=Kinetic.Path.parsePathData(this.attrs.data),this.on("dataChange.kinetic",function(){d.dataArray=Kinetic.Path.parsePathData(this.attrs.data)}),this.on("textChange.kinetic textStroke.kinetic textStrokeWidth.kinetic",d._setTextData),d._setTextData(),this.sceneFunc(this._sceneFunc)},_sceneFunc:function(a){a.setAttr("font",this._getContextFont()),a.setAttr("textBaseline","middle"),a.setAttr("textAlign","left"),a.save();for(var b=this.glyphInfo,c=0;c<b.length;c++){a.save();var d=b[c].p0;a.translate(d.x,d.y),a.rotate(b[c].rotation),this.partialText=b[c].text,a.fillStrokeShape(this),a.restore()}a.restore()},getTextWidth:function(){return this.textWidth},getTextHeight:function(){return this.textHeight},setText:function(a){Kinetic.Text.prototype.setText.call(this,a)},_getTextSize:function(a){var b=this.dummyCanvas,c=b.getContext("2d");c.save(),c.font=this._getContextFont();var d=c.measureText(a);return c.restore(),{width:d.width,height:parseInt(this.attrs.fontSize,10)}},_setTextData:function(){var a=this,b=this._getTextSize(this.attrs.text);this.textWidth=b.width,this.textHeight=b.height,this.glyphInfo=[];for(var c,d,e,f=this.attrs.text.split(""),g=-1,h=0,i=function(){h=0;for(var b=a.dataArray,d=g+1;d<b.length;d++){if(b[d].pathLength>0)return g=d,b[d];"M"==b[d].command&&(c={x:b[d].points[0],y:b[d].points[1]})}return{}},j=function(b){var f=a._getTextSize(b).width,g=0,j=0;for(d=void 0;Math.abs(f-g)/f>.01&&25>j;){j++;for(var k=g;void 0===e;)e=i(),e&&k+e.pathLength<f&&(k+=e.pathLength,e=void 0);if(e==={}||void 0===c)return;var l=!1;switch(e.command){case"L":Kinetic.Path.getLineLength(c.x,c.y,e.points[0],e.points[1])>f?d=Kinetic.Path.getPointOnLine(f,c.x,c.y,e.points[0],e.points[1],c.x,c.y):e=void 0;break;case"A":var m=e.points[4],n=e.points[5],o=e.points[4]+n;0===h?h=m+1e-8:f>g?h+=Math.PI/180*n/Math.abs(n):h-=Math.PI/360*n/Math.abs(n),(0>n&&o>h||n>=0&&h>o)&&(h=o,l=!0),d=Kinetic.Path.getPointOnEllipticalArc(e.points[0],e.points[1],e.points[2],e.points[3],h,e.points[6]);break;case"C":0===h?h=f>e.pathLength?1e-8:f/e.pathLength:f>g?h+=(f-g)/e.pathLength:h-=(g-f)/e.pathLength,h>1&&(h=1,l=!0),d=Kinetic.Path.getPointOnCubicBezier(h,e.start.x,e.start.y,e.points[0],e.points[1],e.points[2],e.points[3],e.points[4],e.points[5]);break;case"Q":0===h?h=f/e.pathLength:f>g?h+=(f-g)/e.pathLength:h-=(g-f)/e.pathLength,h>1&&(h=1,l=!0),d=Kinetic.Path.getPointOnQuadraticBezier(h,e.start.x,e.start.y,e.points[0],e.points[1],e.points[2],e.points[3])}void 0!==d&&(g=Kinetic.Path.getLineLength(c.x,c.y,d.x,d.y)),l&&(l=!1,e=void 0)}},k=0;k<f.length&&(j(f[k]),void 0!==c&&void 0!==d);k++){var l=Kinetic.Path.getLineLength(c.x,c.y,d.x,d.y),m=0,n=Kinetic.Path.getPointOnLine(m+l/2,c.x,c.y,d.x,d.y),o=Math.atan2(d.y-c.y,d.x-c.x);this.glyphInfo.push({transposeX:n.x,transposeY:n.y,text:f[k],rotation:o,p0:c,p1:d}),c=d}}},Kinetic.TextPath.prototype._getContextFont=Kinetic.Text.prototype._getContextFont,Kinetic.Util.extend(Kinetic.TextPath,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontFamily","Arial"),Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontSize",12),Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontStyle",d),Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontVariant",d),Kinetic.Factory.addGetter(Kinetic.TextPath,"text",c),Kinetic.Collection.mapMethods(Kinetic.TextPath)}(),function(){Kinetic.RegularPolygon=function(a){this.___init(a)},Kinetic.RegularPolygon.prototype={___init:function(a){Kinetic.Shape.call(this,a),this.className="RegularPolygon",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(a){var b,c,d,e=this.attrs.sides,f=this.attrs.radius;for(a.beginPath(),a.moveTo(0,0-f),b=1;e>b;b++)c=f*Math.sin(2*b*Math.PI/e),d=-1*f*Math.cos(2*b*Math.PI/e),a.lineTo(c,d);a.closePath(),a.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.RegularPolygon,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.RegularPolygon,"radius",0),Kinetic.Factory.addGetterSetter(Kinetic.RegularPolygon,"sides",0),Kinetic.Collection.mapMethods(Kinetic.RegularPolygon)}(),function(){Kinetic.Star=function(a){this.___init(a)},Kinetic.Star.prototype={___init:function(a){Kinetic.Shape.call(this,a),this.className="Star",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(a){var b=this.innerRadius(),c=this.outerRadius(),d=this.numPoints();a.beginPath(),a.moveTo(0,0-c);for(var e=1;2*d>e;e++){var f=e%2===0?c:b,g=f*Math.sin(e*Math.PI/d),h=-1*f*Math.cos(e*Math.PI/d);a.lineTo(g,h)}a.closePath(),a.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Star,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Star,"numPoints",5),Kinetic.Factory.addGetterSetter(Kinetic.Star,"innerRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Star,"outerRadius",0),Kinetic.Collection.mapMethods(Kinetic.Star)}(),function(){var a=["fontFamily","fontSize","fontStyle","padding","lineHeight","text"],b="Change.kinetic",c="none",d="up",e="right",f="down",g="left",h="Label",i=a.length;Kinetic.Label=function(a){this.____init(a)},Kinetic.Label.prototype={____init:function(a){var b=this;Kinetic.Group.call(this,a),this.className=h,this.on("add.kinetic",function(a){b._addListeners(a.child),b._sync()})},getText:function(){return this.find("Text")[0]},getTag:function(){return this.find("Tag")[0]},_addListeners:function(c){var d,e=this,f=function(){e._sync()};for(d=0;i>d;d++)c.on(a[d]+b,f)},getWidth:function(){return this.getText().getWidth()},getHeight:function(){return this.getText().getHeight()},_sync:function(){var a,b,c,h,i,j,k,l=this.getText(),m=this.getTag();if(l&&m){switch(a=l.getWidth(),b=l.getHeight(),c=m.getPointerDirection(),h=m.getPointerWidth(),k=m.getPointerHeight(),i=0,j=0,c){case d:i=a/2,j=-1*k;break;case e:i=a+h,j=b/2;break;case f:i=a/2,j=b+k;break;case g:i=-1*h,j=b/2}m.setAttrs({x:-1*i,y:-1*j,width:a,height:b}),l.setAttrs({x:-1*i,y:-1*j})}}},Kinetic.Util.extend(Kinetic.Label,Kinetic.Group),Kinetic.Collection.mapMethods(Kinetic.Label),Kinetic.Tag=function(a){this.___init(a)},Kinetic.Tag.prototype={___init:function(a){Kinetic.Shape.call(this,a),this.className="Tag",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(a){var b=this.getWidth(),c=this.getHeight(),h=this.getPointerDirection(),i=this.getPointerWidth(),j=this.getPointerHeight(),k=this.getCornerRadius();a.beginPath(),a.moveTo(0,0),h===d&&(a.lineTo((b-i)/2,0),a.lineTo(b/2,-1*j),a.lineTo((b+i)/2,0)),k?(a.lineTo(b-k,0),a.arc(b-k,k,k,3*Math.PI/2,0,!1)):a.lineTo(b,0),h===e&&(a.lineTo(b,(c-j)/2),a.lineTo(b+i,c/2),a.lineTo(b,(c+j)/2)),k?(a.lineTo(b,c-k),a.arc(b-k,c-k,k,0,Math.PI/2,!1)):a.lineTo(b,c),h===f&&(a.lineTo((b+i)/2,c),a.lineTo(b/2,c+j),a.lineTo((b-i)/2,c)),k?(a.lineTo(k,c),a.arc(k,c-k,k,Math.PI/2,Math.PI,!1)):a.lineTo(0,c),h===g&&(a.lineTo(0,(c+j)/2),a.lineTo(-1*i,c/2),a.lineTo(0,(c-j)/2)),k&&(a.lineTo(0,k),a.arc(k,k,k,Math.PI,3*Math.PI/2,!1)),a.closePath(),a.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Tag,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerDirection",c),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerWidth",0),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerHeight",0),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"cornerRadius",0),Kinetic.Collection.mapMethods(Kinetic.Tag)}(),function(){Kinetic.Arrow=function(a){this.____init(a)},Kinetic.Arrow.prototype={____init:function(a){Kinetic.Line.call(this,a),this.className="Arrow"},_sceneFunc:function(a){var b=2*Math.PI,c=this.points(),d=c.length,e=c[d-2]-c[d-4],f=c[d-1]-c[d-3],g=(Math.atan2(f,e)+b)%b,h=this.pointerLength(),i=this.pointerWidth();a.save(),a.beginPath(),a.translate(c[d-2],c[d-1]),a.rotate(g),a.moveTo(0,0),a.lineTo(-h,i/2),a.lineTo(-h,-i/2),a.closePath(),a.restore(),this.pointerAtBeginning()&&(a.save(),a.translate(c[0],c[1]),e=c[2]-c[0],f=c[3]-c[1],a.rotate((Math.atan2(-f,-e)+b)%b),a.moveTo(0,0),a.lineTo(-10,6),a.lineTo(-10,-6),a.closePath(),a.restore()),a.fillStrokeShape(this),Kinetic.Line.prototype._sceneFunc.apply(this,arguments)}},Kinetic.Util.extend(Kinetic.Arrow,Kinetic.Line),Kinetic.Factory.addGetterSetter(Kinetic.Arrow,"pointerLength",10),Kinetic.Factory.addGetterSetter(Kinetic.Arrow,"pointerWidth",10),Kinetic.Factory.addGetterSetter(Kinetic.Arrow,"pointerAtBeginning",!1),Kinetic.Collection.mapMethods(Kinetic.Arrow)}(),function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";function b(b){return!b.nodeName||-1!==a.inArray(b.nodeName.toLowerCase(),["iframe","#document","html","body"])}function c(b){return a.isFunction(b)||a.isPlainObject(b)?b:{top:b,left:b}}var d=a.scrollTo=function(b,c,d){return a(window).scrollTo(b,c,d)};return d.defaults={axis:"xy",duration:0,limit:!0},a.fn.scrollTo=function(e,f,g){"object"==typeof f&&(g=f,f=0),"function"==typeof g&&(g={onAfter:g}),"max"===e&&(e=9e9),g=a.extend({},d.defaults,g),f=f||g.duration;var h=g.queue&&1<g.axis.length;return h&&(f/=2),g.offset=c(g.offset),g.over=c(g.over),this.each(function(){function i(b){var c=a.extend({},g,{queue:!0,duration:f,complete:b&&function(){b.call(l,n,g)}});m.animate(o,c)}if(null!==e){var j,k=b(this),l=k?this.contentWindow||window:this,m=a(l),n=e,o={};switch(typeof n){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(n)){n=c(n);break}n=k?a(n):a(n,l);case"object":if(0===n.length)return;(n.is||n.style)&&(j=(n=a(n)).offset())}var p=a.isFunction(g.offset)&&g.offset(l,n)||g.offset;a.each(g.axis.split(""),function(a,b){var c="x"===b?"Left":"Top",e=c.toLowerCase(),f="scroll"+c,q=m[f](),r=d.max(l,b);j?(o[f]=j[e]+(k?0:q-m.offset()[e]),g.margin&&(o[f]-=parseInt(n.css("margin"+c),10)||0,o[f]-=parseInt(n.css("border"+c+"Width"),10)||0),o[f]+=p[e]||0,g.over[e]&&(o[f]+=n["x"===b?"width":"height"]()*g.over[e])):(c=n[e],o[f]=c.slice&&"%"===c.slice(-1)?parseFloat(c)/100*r:c),g.limit&&/^\d+$/.test(o[f])&&(o[f]=0>=o[f]?0:Math.min(o[f],r)),!a&&1<g.axis.length&&(q===o[f]?o={}:h&&(i(g.onAfterFirst),o={}))}),i(g.onAfter)}})},d.max=function(c,d){var e="x"===d?"Width":"Height",f="scroll"+e;if(!b(c))return c[f]-a(c)[e.toLowerCase()]();var e="client"+e,g=c.ownerDocument||c.document,h=g.documentElement,g=g.body;return Math.max(h[f],g[f])-Math.min(h[e],g[e])},a.Tween.propHooks.scrollLeft=a.Tween.propHooks.scrollTop={get:function(b){return a(b.elem)[b.prop]()},set:function(b){var c=this.get(b);if(b.options.interrupt&&b._last&&b._last!==c)return a(b.elem).stop();var d=Math.round(b.now);c!==d&&(a(b.elem)[b.prop](d),b._last=this.get(b))}},d});
Index: public/vendors/form-wizard/jquery.steps.css
===================================================================
--- public/vendors/form-wizard/jquery.steps.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/form-wizard/jquery.steps.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,378 @@
+﻿/*
+    Common
+*/
+
+.wizard,
+.tabcontrol
+{
+    display: block;
+    width: 100%;
+    overflow: hidden;
+}
+
+.wizard a,
+.tabcontrol a
+{
+    outline: 0;
+}
+
+.wizard ul,
+.tabcontrol ul
+{
+    list-style: none !important;
+    padding: 0;
+    margin: 0;
+}
+
+.wizard ul > li,
+.tabcontrol ul > li
+{
+    display: block;
+    padding: 0;
+}
+
+/* Accessibility */
+.wizard > .steps .current-info,
+.tabcontrol > .steps .current-info
+{
+    position: absolute;
+    left: -999em;
+}
+
+.wizard > .content > .title,
+.tabcontrol > .content > .title
+{
+    position: absolute;
+    left: -999em;
+}
+
+
+
+/*
+    Wizard
+*/
+
+.wizard > .steps
+{
+    position: relative;
+    display: block;
+    width: 100%;
+}
+
+.wizard.vertical > .steps
+{
+    display: inline;
+    float: left;
+    width: 30%;
+}
+
+.wizard > .steps .number
+{
+    font-size: 1.429em;
+}
+
+.wizard > .steps > ul > li
+{
+    width: 25%;
+}
+
+.wizard > .steps > ul > li,
+.wizard > .actions > ul > li
+{
+    float: left;
+}
+
+.wizard.vertical > .steps > ul > li
+{
+    float: none;
+    width: 100%;
+}
+
+.wizard > .steps a,
+.wizard > .steps a:hover,
+.wizard > .steps a:active
+{
+    display: block;
+    width: auto;
+    margin: 0 0.5em 0.5em;
+    padding: 1em 1em;
+    text-decoration: none;
+
+    -webkit-border-radius: 5px;
+    -moz-border-radius: 5px;
+    border-radius: 5px;
+}
+
+.wizard > .steps .disabled a,
+.wizard > .steps .disabled a:hover,
+.wizard > .steps .disabled a:active
+{
+    background: #eee;
+    color: #aaa;
+    cursor: default;
+}
+
+.wizard > .steps .current a,
+.wizard > .steps .current a:hover,
+.wizard > .steps .current a:active
+{
+    background: #2184be;
+    color: #fff;
+    cursor: default;
+    text-decoration: none;
+}
+
+.wizard > .steps .done a,
+.wizard > .steps .done a:hover,
+.wizard > .steps .done a:active
+{
+    background: #9dc8e2;
+    color: #fff;
+}
+
+.wizard > .steps .error a,
+.wizard > .steps .error a:hover,
+.wizard > .steps .error a:active
+{
+    background: #ff3111;
+    color: #fff;
+}
+
+.wizard > .content
+{
+    background: #eee;
+    display: block;
+    margin: 0.5em;
+    min-height: 35em;
+    overflow: hidden;
+    position: relative;
+    width: auto;
+
+    -webkit-border-radius: 5px;
+    -moz-border-radius: 5px;
+    border-radius: 5px;
+}
+
+.wizard.vertical > .content
+{
+    display: inline;
+    float: left;
+    margin: 0 2.5% 0.5em 2.5%;
+    width: 65%;
+}
+
+.wizard > .content > .body
+{
+    float: left;
+    position: absolute;
+    width: 95%;
+    height: 95%;
+    padding: 2.5%;
+}
+
+.wizard > .content > .body ul
+{
+    list-style: disc !important;
+}
+
+.wizard > .content > .body ul > li
+{
+    display: list-item;
+}
+
+.wizard > .content > .body > iframe
+{
+    border: 0 none;
+    width: 100%;
+    height: 100%;
+}
+
+.wizard > .content > .body input[type="checkbox"]
+{
+    display: inline-block;
+}
+
+.wizard > .content > .body input.error
+{
+    background: rgb(251, 227, 228);
+    border: 1px solid #fbc2c4;
+    color: #8a1f11;
+}
+
+.wizard > .content > .body label
+{
+    display: inline-block;
+    margin-bottom: 0.5em;
+}
+
+.wizard > .content > .body label.error
+{
+    color: #8a1f11;
+    display: inline-block;
+    margin-left: 1.5em;
+}
+
+.wizard > .actions
+{
+    position: relative;
+    display: block;
+    text-align: right;
+    width: 100%;
+}
+
+.wizard.vertical > .actions
+{
+    display: inline;
+    float: right;
+    margin: 0 2.5%;
+    width: 95%;
+}
+
+.wizard > .actions > ul
+{
+    display: inline-block;
+    text-align: right;
+}
+
+.wizard > .actions > ul > li
+{
+    margin: 0 0.5em;
+}
+
+.wizard.vertical > .actions > ul > li
+{
+    margin: 0 0 0 1em;
+}
+
+.wizard > .actions a,
+.wizard > .actions a:hover,
+.wizard > .actions a:active
+{
+    background: #2184be;
+    color: #fff;
+    display: block;
+    padding: 0.5em 1em;
+    text-decoration: none;
+
+    -webkit-border-radius: 5px;
+    -moz-border-radius: 5px;
+    border-radius: 5px;
+}
+
+.wizard > .actions .disabled a,
+.wizard > .actions .disabled a:hover,
+.wizard > .actions .disabled a:active
+{
+    border-color: transparent !important;
+    background: #eee !important;
+    color: #aaa;
+}
+
+.wizard > .loading
+{
+}
+
+.wizard > .loading .spinner
+{
+}
+
+
+
+/*
+    Tabcontrol
+*/
+
+.tabcontrol > .steps
+{
+    position: relative;
+    display: block;
+    width: 100%;
+}
+
+.tabcontrol > .steps > ul
+{
+    position: relative;
+    margin: 6px 0 0 0;
+    top: 1px;
+    z-index: 1;
+}
+
+.tabcontrol > .steps > ul > li
+{
+    float: left;
+    margin: 5px 2px 0 0;
+    padding: 1px;
+
+    -webkit-border-top-left-radius: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -moz-border-radius-topleft: 5px;
+    -moz-border-radius-topright: 5px;
+    border-top-left-radius: 5px;
+    border-top-right-radius: 5px;
+}
+
+.tabcontrol > .steps > ul > li:hover
+{
+    background: #edecec;
+    border: 1px solid #bbb;
+    padding: 0;
+}
+
+.tabcontrol > .steps > ul > li.current
+{
+    background: #fff;
+    border: 1px solid #bbb;
+    border-bottom: 0 none;
+    padding: 0 0 1px 0;
+    margin-top: 0;
+}
+
+.tabcontrol > .steps > ul > li > a
+{
+    color: #5f5f5f;
+    display: inline-block;
+    border: 0 none;
+    margin: 0;
+    padding: 10px 30px;
+    text-decoration: none;
+}
+
+.tabcontrol > .steps > ul > li > a:hover
+{
+    text-decoration: none;
+}
+
+.tabcontrol > .steps > ul > li.current > a
+{
+    padding: 15px 30px 10px 30px;
+}
+
+.tabcontrol > .content
+{
+    position: relative;
+    display: inline-block;
+    width: 100%;
+    height: 35em;
+    overflow: hidden;
+    border-top: 1px solid #bbb;
+    padding-top: 20px;
+}
+
+.tabcontrol > .content > .body
+{
+    float: left;
+    position: absolute;
+    width: 95%;
+    height: 95%;
+    padding: 2.5%;
+}
+
+.tabcontrol > .content > .body ul
+{
+    list-style: disc !important;
+}
+
+.tabcontrol > .content > .body ul > li
+{
+    display: list-item;
+}
Index: public/vendors/form-wizard/jquery.steps.min.js
===================================================================
--- public/vendors/form-wizard/jquery.steps.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/form-wizard/jquery.steps.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*! 
+ * jQuery Steps v1.1.0 - 09/04/2014
+ * Copyright (c) 2014 Rafael Staib (http://www.jquery-steps.com)
+ * Licensed under MIT http://www.opensource.org/licenses/MIT
+ */
+!function(a,b){function c(a,b){o(a).push(b)}function d(d,e,f){var g=d.children(e.headerTag),h=d.children(e.bodyTag);g.length>h.length?R(Z,"contents"):g.length<h.length&&R(Z,"titles");var i=e.startIndex;if(f.stepCount=g.length,e.saveState&&a.cookie){var j=a.cookie(U+q(d)),k=parseInt(j,0);!isNaN(k)&&k<f.stepCount&&(i=k)}f.currentIndex=i,g.each(function(e){var f=a(this),g=h.eq(e),i=g.data("mode"),j=null==i?$.html:r($,/^\s*$/.test(i)||isNaN(i)?i:parseInt(i,0)),k=j===$.html||g.data("url")===b?"":g.data("url"),l=j!==$.html&&"1"===g.data("loaded"),m=a.extend({},bb,{title:f.html(),content:j===$.html?g.html():"",contentUrl:k,contentMode:j,contentLoaded:l});c(d,m)})}function e(a){a.triggerHandler("canceled")}function f(a,b){return a.currentIndex-b}function g(b,c){var d=i(b);b.unbind(d).removeData("uid").removeData("options").removeData("state").removeData("steps").removeData("eventNamespace").find(".actions a").unbind(d),b.removeClass(c.clearFixCssClass+" vertical");var e=b.find(".content > *");e.removeData("loaded").removeData("mode").removeData("url"),e.removeAttr("id").removeAttr("role").removeAttr("tabindex").removeAttr("class").removeAttr("style")._removeAria("labelledby")._removeAria("hidden"),b.find(".content > [data-mode='async'],.content > [data-mode='iframe']").empty();var f=a('<{0} class="{1}"></{0}>'.format(b.get(0).tagName,b.attr("class"))),g=b._id();return null!=g&&""!==g&&f._id(g),f.html(b.find(".content").html()),b.after(f),b.remove(),f}function h(a,b){var c=a.find(".steps li").eq(b.currentIndex);a.triggerHandler("finishing",[b.currentIndex])?(c.addClass("done").removeClass("error"),a.triggerHandler("finished",[b.currentIndex])):c.addClass("error")}function i(a){var b=a.data("eventNamespace");return null==b&&(b="."+q(a),a.data("eventNamespace",b)),b}function j(a,b){var c=q(a);return a.find("#"+c+V+b)}function k(a,b){var c=q(a);return a.find("#"+c+W+b)}function l(a,b){var c=q(a);return a.find("#"+c+X+b)}function m(a){return a.data("options")}function n(a){return a.data("state")}function o(a){return a.data("steps")}function p(a,b){var c=o(a);return(0>b||b>=c.length)&&R(Y),c[b]}function q(a){var b=a.data("uid");return null==b&&(b=a._id(),null==b&&(b="steps-uid-".concat(T),a._id(b)),T++,a.data("uid",b)),b}function r(a,c){if(S("enumType",a),S("keyOrValue",c),"string"==typeof c){var d=a[c];return d===b&&R("The enum key '{0}' does not exist.",c),d}if("number"==typeof c){for(var e in a)if(a[e]===c)return c;R("Invalid enum value '{0}'.",c)}else R("Invalid key or value type.")}function s(a,b,c){return B(a,b,c,v(c,1))}function t(a,b,c){return B(a,b,c,f(c,1))}function u(a,b,c,d){if((0>d||d>=c.stepCount)&&R(Y),!(b.forceMoveForward&&d<c.currentIndex)){var e=c.currentIndex;return a.triggerHandler("stepChanging",[c.currentIndex,d])?(c.currentIndex=d,O(a,b,c),E(a,b,c,e),D(a,b,c),A(a,b,c),P(a,b,c,d,e,function(){a.triggerHandler("stepChanged",[d,e])})):a.find(".steps li").eq(e).addClass("error"),!0}}function v(a,b){return a.currentIndex+b}function w(b){var c=a.extend(!0,{},cb,b);return this.each(function(){var b=a(this),e={currentIndex:c.startIndex,currentStep:null,stepCount:0,transitionElement:null};b.data("options",c),b.data("state",e),b.data("steps",[]),d(b,c,e),J(b,c,e),G(b,c),c.autoFocus&&0===T&&j(b,c.startIndex).focus(),b.triggerHandler("init",[c.startIndex])})}function x(b,c,d,e,f){(0>e||e>d.stepCount)&&R(Y),f=a.extend({},bb,f),y(b,e,f),d.currentIndex!==d.stepCount&&d.currentIndex>=e&&(d.currentIndex++,O(b,c,d)),d.stepCount++;var g=b.find(".content"),h=a("<{0}>{1}</{0}>".format(c.headerTag,f.title)),i=a("<{0}></{0}>".format(c.bodyTag));return(null==f.contentMode||f.contentMode===$.html)&&i.html(f.content),0===e?g.prepend(i).prepend(h):k(b,e-1).after(i).after(h),K(b,d,i,e),N(b,c,d,h,e),F(b,c,d,e),e===d.currentIndex&&E(b,c,d),D(b,c,d),b}function y(a,b,c){o(a).splice(b,0,c)}function z(b){var c=a(this),d=m(c),e=n(c);if(d.suppressPaginationOnFocus&&c.find(":focus").is(":input"))return b.preventDefault(),!1;var f={left:37,right:39};b.keyCode===f.left?(b.preventDefault(),t(c,d,e)):b.keyCode===f.right&&(b.preventDefault(),s(c,d,e))}function A(b,c,d){if(d.stepCount>0){var e=d.currentIndex,f=p(b,e);if(!c.enableContentCache||!f.contentLoaded)switch(r($,f.contentMode)){case $.iframe:b.find(".content > .body").eq(d.currentIndex).empty().html('<iframe src="'+f.contentUrl+'" frameborder="0" scrolling="no" />').data("loaded","1");break;case $.async:var g=k(b,e)._aria("busy","true").empty().append(M(c.loadingTemplate,{text:c.labels.loading}));a.ajax({url:f.contentUrl,cache:!1}).done(function(a){g.empty().html(a)._aria("busy","false").data("loaded","1"),b.triggerHandler("contentLoaded",[e])})}}}function B(a,b,c,d){var e=c.currentIndex;if(d>=0&&d<c.stepCount&&!(b.forceMoveForward&&d<c.currentIndex)){var f=j(a,d),g=f.parent(),h=g.hasClass("disabled");return g._enableAria(),f.click(),e===c.currentIndex&&h?(g._enableAria(!1),!1):!0}return!1}function C(b){b.preventDefault();var c=a(this),d=c.parent().parent().parent().parent(),f=m(d),g=n(d),i=c.attr("href");switch(i.substring(i.lastIndexOf("#")+1)){case"cancel":e(d);break;case"finish":h(d,g);break;case"next":s(d,f,g);break;case"previous":t(d,f,g)}}function D(a,b,c){if(b.enablePagination){var d=a.find(".actions a[href$='#finish']").parent(),e=a.find(".actions a[href$='#next']").parent();if(!b.forceMoveForward){var f=a.find(".actions a[href$='#previous']").parent();f._enableAria(c.currentIndex>0)}b.enableFinishButton&&b.showFinishButtonAlways?(d._enableAria(c.stepCount>0),e._enableAria(c.stepCount>1&&c.stepCount>c.currentIndex+1)):(d._showAria(b.enableFinishButton&&c.stepCount===c.currentIndex+1),e._showAria(0===c.stepCount||c.stepCount>c.currentIndex+1)._enableAria(c.stepCount>c.currentIndex+1||!b.enableFinishButton))}}function E(b,c,d,e){var f=j(b,d.currentIndex),g=a('<span class="current-info audible">'+c.labels.current+" </span>"),h=b.find(".content > .title");if(null!=e){var i=j(b,e);i.parent().addClass("done").removeClass("error")._selectAria(!1),h.eq(e).removeClass("current").next(".body").removeClass("current"),g=i.find(".current-info"),f.focus()}f.prepend(g).parent()._selectAria().removeClass("done")._enableAria(),h.eq(d.currentIndex).addClass("current").next(".body").addClass("current")}function F(a,b,c,d){for(var e=q(a),f=d;f<c.stepCount;f++){var g=e+V+f,h=e+W+f,i=e+X+f,j=a.find(".title").eq(f)._id(i);a.find(".steps a").eq(f)._id(g)._aria("controls",h).attr("href","#"+i).html(M(b.titleTemplate,{index:f+1,title:j.html()})),a.find(".body").eq(f)._id(h)._aria("labelledby",i)}}function G(a,b){var c=i(a);a.bind("canceled"+c,b.onCanceled),a.bind("contentLoaded"+c,b.onContentLoaded),a.bind("finishing"+c,b.onFinishing),a.bind("finished"+c,b.onFinished),a.bind("init"+c,b.onInit),a.bind("stepChanging"+c,b.onStepChanging),a.bind("stepChanged"+c,b.onStepChanged),b.enableKeyNavigation&&a.bind("keyup"+c,z),a.find(".actions a").bind("click"+c,C)}function H(a,b,c,d){return 0>d||d>=c.stepCount||c.currentIndex===d?!1:(I(a,d),c.currentIndex>d&&(c.currentIndex--,O(a,b,c)),c.stepCount--,l(a,d).remove(),k(a,d).remove(),j(a,d).parent().remove(),0===d&&a.find(".steps li").first().addClass("first"),d===c.stepCount&&a.find(".steps li").eq(d).addClass("last"),F(a,b,c,d),D(a,b,c),!0)}function I(a,b){o(a).splice(b,1)}function J(b,c,d){var e='<{0} class="{1}">{2}</{0}>',f=r(_,c.stepsOrientation),g=f===_.vertical?" vertical":"",h=a(e.format(c.contentContainerTag,"content "+c.clearFixCssClass,b.html())),i=a(e.format(c.stepsContainerTag,"steps "+c.clearFixCssClass,'<ul role="tablist"></ul>')),j=h.children(c.headerTag),k=h.children(c.bodyTag);b.attr("role","application").empty().append(i).append(h).addClass(c.cssClass+" "+c.clearFixCssClass+g),k.each(function(c){K(b,d,a(this),c)}),j.each(function(e){N(b,c,d,a(this),e)}),E(b,c,d),L(b,c,d)}function K(a,b,c,d){var e=q(a),f=e+W+d,g=e+X+d;c._id(f).attr("role","tabpanel")._aria("labelledby",g).addClass("body")._showAria(b.currentIndex===d)}function L(a,b,c){if(b.enablePagination){var d='<{0} class="actions {1}"><ul role="menu" aria-label="{2}">{3}</ul></{0}>',e='<li><a class="btn" href="#{0}" role="menuitem">{1}</a></li>',f="";b.forceMoveForward||(f+=e.format("previous",b.labels.previous)),f+=e.format("next",b.labels.next),b.enableFinishButton&&(f+=e.format("finish",b.labels.finish)),b.enableCancelButton&&(f+=e.format("cancel",b.labels.cancel)),a.append(d.format(b.actionContainerTag,b.clearFixCssClass,b.labels.pagination,f)),D(a,b,c),A(a,b,c)}}function M(a,c){for(var d=a.match(/#([a-z]*)#/gi),e=0;e<d.length;e++){var f=d[e],g=f.substring(1,f.length-1);c[g]===b&&R("The key '{0}' does not exist in the substitute collection!",g),a=a.replace(f,c[g])}return a}function N(b,c,d,e,f){var g=q(b),h=g+V+f,j=g+W+f,k=g+X+f,l=b.find(".steps > ul"),m=M(c.titleTemplate,{index:f+1,title:e.html()}),n=a('<li role="tab"><a id="'+h+'" href="#'+k+'" aria-controls="'+j+'">'+m+"</a></li>");n._enableAria(c.enableAllSteps||d.currentIndex>f),d.currentIndex>f&&n.addClass("done"),e._id(k).attr("tabindex","-1").addClass("title"),0===f?l.prepend(n):l.find("li").eq(f-1).after(n),0===f&&l.find("li").removeClass("first").eq(f).addClass("first"),f===d.stepCount-1&&l.find("li").removeClass("last").eq(f).addClass("last"),n.children("a").bind("click"+i(b),Q)}function O(b,c,d){c.saveState&&a.cookie&&a.cookie(U+q(b),d.currentIndex)}function P(b,c,d,e,f,g){var h=b.find(".content > .body"),i=r(ab,c.transitionEffect),j=c.transitionEffectSpeed,k=h.eq(e),l=h.eq(f);switch(i){case ab.fade:case ab.slide:var m=i===ab.fade?"fadeOut":"slideUp",o=i===ab.fade?"fadeIn":"slideDown";d.transitionElement=k,l[m](j,function(){var b=a(this)._showAria(!1).parent().parent(),c=n(b);c.transitionElement&&(c.transitionElement[o](j,function(){a(this)._showAria()}).promise().done(g),c.transitionElement=null)});break;case ab.slideLeft:var p=l.outerWidth(!0),q=e>f?-p:p,s=e>f?p:-p;a.when(l.animate({left:q},j,function(){a(this)._showAria(!1)}),k.css("left",s+"px")._showAria().animate({left:0},j)).done(g);break;default:a.when(l._showAria(!1),k._showAria()).done(g)}}function Q(b){b.preventDefault();var c=a(this),d=c.parent().parent().parent().parent(),e=m(d),f=n(d),g=f.currentIndex;if(c.parent().is(":not(.disabled):not(.current)")){var h=c.attr("href"),i=parseInt(h.substring(h.lastIndexOf("-")+1),0);u(d,e,f,i)}return g===f.currentIndex?(j(d,g).focus(),!1):void 0}function R(a){throw arguments.length>1&&(a=a.format(Array.prototype.slice.call(arguments,1))),new Error(a)}function S(a,b){null==b&&R("The argument '{0}' is null or undefined.",a)}a.fn.extend({_aria:function(a,b){return this.attr("aria-"+a,b)},_removeAria:function(a){return this.removeAttr("aria-"+a)},_enableAria:function(a){return null==a||a?this.removeClass("disabled")._aria("disabled","false"):this.addClass("disabled")._aria("disabled","true")},_showAria:function(a){return null==a||a?this.show()._aria("hidden","false"):this.hide()._aria("hidden","true")},_selectAria:function(a){return null==a||a?this.addClass("current")._aria("selected","true"):this.removeClass("current")._aria("selected","false")},_id:function(a){return a?this.attr("id",a):this.attr("id")}}),String.prototype.format||(String.prototype.format=function(){for(var b=1===arguments.length&&a.isArray(arguments[0])?arguments[0]:arguments,c=this,d=0;d<b.length;d++){var e=new RegExp("\\{"+d+"\\}","gm");c=c.replace(e,b[d])}return c});var T=0,U="jQu3ry_5teps_St@te_",V="-t-",W="-p-",X="-h-",Y="Index out of range.",Z="One or more corresponding step {0} are missing.";a.fn.steps=function(b){return a.fn.steps[b]?a.fn.steps[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?void a.error("Method "+b+" does not exist on jQuery.steps"):w.apply(this,arguments)},a.fn.steps.add=function(a){var b=n(this);return x(this,m(this),b,b.stepCount,a)},a.fn.steps.destroy=function(){return g(this,m(this))},a.fn.steps.finish=function(){h(this,n(this))},a.fn.steps.getCurrentIndex=function(){return n(this).currentIndex},a.fn.steps.getCurrentStep=function(){return p(this,n(this).currentIndex)},a.fn.steps.getStep=function(a){return p(this,a)},a.fn.steps.insert=function(a,b){return x(this,m(this),n(this),a,b)},a.fn.steps.next=function(){return s(this,m(this),n(this))},a.fn.steps.previous=function(){return t(this,m(this),n(this))},a.fn.steps.remove=function(a){return H(this,m(this),n(this),a)},a.fn.steps.setStep=function(){throw new Error("Not yet implemented!")},a.fn.steps.skip=function(){throw new Error("Not yet implemented!")};var $=a.fn.steps.contentMode={html:0,iframe:1,async:2},_=a.fn.steps.stepsOrientation={horizontal:0,vertical:1},ab=a.fn.steps.transitionEffect={none:0,fade:1,slide:2,slideLeft:3},bb=a.fn.steps.stepModel={title:"",content:"",contentUrl:"",contentMode:$.html,contentLoaded:!1},cb=a.fn.steps.defaults={headerTag:"h1",bodyTag:"div",contentContainerTag:"div",actionContainerTag:"div",stepsContainerTag:"div",cssClass:"wizard",clearFixCssClass:"clearfix",stepsOrientation:_.horizontal,titleTemplate:'<span class="number">#index#.</span> #title#',loadingTemplate:'<span class="spinner"></span> #text#',autoFocus:!1,enableAllSteps:!1,enableKeyNavigation:!0,enablePagination:!0,suppressPaginationOnFocus:!0,enableContentCache:!0,enableCancelButton:!1,enableFinishButton:!0,preloadContent:!1,showFinishButtonAlways:!1,forceMoveForward:!1,saveState:!1,startIndex:0,transitionEffect:ab.none,transitionEffectSpeed:200,onStepChanging:function(){return!0},onStepChanged:function(){},onCanceled:function(){},onFinishing:function(){return!0},onFinished:function(){},onContentLoaded:function(){},onInit:function(){},labels:{cancel:"Cancel",current:"current step:",pagination:"Pagination",finish:"Finish",next:"Next",previous:"Previous",loading:"Loading ..."}}}(jQuery);
Index: public/vendors/fullcalendar/fullcalendar.min.css
===================================================================
--- public/vendors/fullcalendar/fullcalendar.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/fullcalendar.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*!
+ * FullCalendar v3.10.0
+ * Docs & License: https://fullcalendar.io/
+ * (c) 2018 Adam Shaw
+ */.fc button,.fc table,body .fc{font-size:1em}.fc .fc-axis,.fc button,.fc-day-grid-event .fc-content,.fc-list-item-marker,.fc-list-item-time,.fc-time-grid-event .fc-time,.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-event,.fc-event:hover,.fc-state-hover,.fc.fc-bootstrap3 a,.ui-widget .fc-event,a.fc-more{text-decoration:none}.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}.fc th,.fc-basic-view .fc-day-top .fc-week-number,.fc-basic-view td.fc-week-number,.fc-icon,.fc-toolbar{text-align:center}.fc-highlight{background:#bce8f1;opacity:.3}.fc-bgevent{background:#8fdf82;opacity:.3}.fc-nonbusiness{background:#d7d7d7}.fc button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:-.05em;margin:0 .2em;vertical-align:middle}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;box-shadow:none}.fc-event.fc-draggable,.fc-event[href],.fc-popover .fc-header .fc-close,a[data-goto]{cursor:pointer}.fc-button-group{display:inline-block}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-bg table,.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc-bg{bottom:0}.fc table{width:100%;box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border-spacing:0}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}a[data-goto]:hover{text-decoration:underline}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc .fc-row .fc-content-skeleton table,.fc .fc-row .fc-content-skeleton td,.fc .fc-row .fc-helper-skeleton td{background:0 0;border-color:transparent}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-day-grid-event .fc-content,.fc-icon,.fc-row.fc-rigid,.fc-time-grid-event{overflow:hidden}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad}.fc-event,.fc-event-dot{background-color:#3a87ad}.fc-event,.fc-event:hover{color:#fff}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-bg{z-index:1;background:#fff;opacity:.25}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4;display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected.fc-dragging{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;border-width:1px;width:6px;height:6px;border-style:solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}tr:first-child>td>.fc-day-grid-event{margin-top:2px}.fc-day-grid-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-bootstrap3 .fc-popover .panel-body,.fc-bootstrap4 .fc-popover .card-body{padding:0}.fc-now-indicator{position:absolute;border:0 solid red}.fc-bootstrap3 .fc-today.alert,.fc-bootstrap4 .fc-today.alert{border-radius:0}.fc-unselectable{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-list-view,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff;border-width:1px;border-style:solid}.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed td.fc-today{background:#fcf8e3}.fc-unthemed .fc-disabled-day{background:#d7d7d7;opacity:.3}.fc-icon{display:inline-block;height:1em;line-height:1em;font-size:1em;font-family:"Courier New",Courier,monospace;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fc-icon:after{position:relative}.fc-icon-left-single-arrow:after{content:"\2039";font-weight:700;font-size:200%;top:-7%}.fc-icon-right-single-arrow:after{content:"\203A";font-weight:700;font-size:200%;top:-7%}.fc-icon-left-double-arrow:after{content:"\AB";font-size:160%;top:-7%}.fc-icon-right-double-arrow:after{content:"\BB";font-size:160%;top:-7%}.fc-icon-left-triangle:after{content:"\25C4";font-size:125%;top:3%}.fc-icon-right-triangle:after{content:"\25BA";font-size:125%;top:3%}.fc-icon-down-triangle:after{content:"\25BC";font-size:125%;top:2%}.fc-icon-x:after{content:"\D7";font-size:200%;top:6%}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666;font-size:.9em;margin-top:2px}.fc-unthemed .fc-list-item:hover td{background-color:#f5f5f5}.ui-widget .fc-disabled-day{background-image:none}.fc-bootstrap3 .fc-time-grid .fc-slats table,.fc-bootstrap4 .fc-time-grid .fc-slats table,.fc-time-grid .fc-slats .ui-widget-content{background:0 0}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.fc-bootstrap3 hr.fc-divider,.fc-bootstrap4 hr.fc-divider{border-color:inherit}.ui-widget .fc-event{color:#fff;font-weight:400}.ui-widget td.fc-axis{font-weight:400}.fc.fc-bootstrap3 a[data-goto]:hover{text-decoration:underline}.fc.fc-bootstrap4 a{text-decoration:none}.fc.fc-bootstrap4 a[data-goto]:hover{text-decoration:underline}.fc-bootstrap4 a.fc-event:not([href]):not([tabindex]){color:#fff}.fc-bootstrap4 .fc-popover.card{position:absolute}.fc-toolbar.fc-header-toolbar{margin-bottom:1em}.fc-toolbar.fc-footer-toolbar{margin-top:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-bottom:1em}.fc-basic-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-day-top.fc-other-month{opacity:.3}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:2px}.fc-basic-view th.fc-day-number,.fc-basic-view th.fc-week-number{padding:0 2px}.fc-ltr .fc-basic-view .fc-day-top .fc-day-number{float:right}.fc-rtl .fc-basic-view .fc-day-top .fc-day-number{float:left}.fc-ltr .fc-basic-view .fc-day-top .fc-week-number{float:left;border-radius:0 0 3px}.fc-rtl .fc-basic-view .fc-day-top .fc-week-number{float:right;border-radius:0 0 0 3px}.fc-basic-view .fc-day-top .fc-week-number{min-width:1.5em;background-color:#f2f2f2;color:grey}.fc-basic-view td.fc-week-number>*{display:inline-block;min-width:1.25em}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{z-index:3;position:relative}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-helper-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-v-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event.fc-selected{overflow:visible}.fc-time-grid-event.fc-selected .fc-bg{display:none}.fc-time-grid-event .fc-content{overflow:hidden}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\A0-\A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after{content:"="}.fc-time-grid-event.fc-selected .fc-resizer{border-radius:5px;border-width:1px;width:8px;height:8px;border-style:solid;border-color:inherit;background:#fff;left:50%;margin-left:-5px;bottom:-5px}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}.fc-event-dot{display:inline-block;width:10px;height:10px;border-radius:5px}.fc-rtl .fc-list-view{direction:rtl}.fc-list-view{border-width:1px;border-style:solid}.fc .fc-list-table{table-layout:auto}.fc-list-table td{border-width:1px 0 0;padding:8px 14px}.fc-list-table tr:first-child td{border-top-width:0}.fc-list-heading{border-bottom-width:1px}.fc-list-heading td{font-weight:700}.fc-ltr .fc-list-heading-main{float:left}.fc-ltr .fc-list-heading-alt,.fc-rtl .fc-list-heading-main{float:right}.fc-rtl .fc-list-heading-alt{float:left}.fc-list-item.fc-has-url{cursor:pointer}.fc-list-item-marker,.fc-list-item-time{width:1px}.fc-ltr .fc-list-item-marker{padding-right:0}.fc-rtl .fc-list-item-marker{padding-left:0}.fc-list-item-title a{text-decoration:none;color:inherit}.fc-list-item-title a[href]:hover{text-decoration:underline}.fc-list-empty-wrap2{position:absolute;top:0;left:0;right:0;bottom:0}.fc-list-empty-wrap1{width:100%;height:100%;display:table}.fc-list-empty{display:table-cell;vertical-align:middle;text-align:center}.fc-unthemed .fc-list-empty{background-color:#eee}
Index: public/vendors/fullcalendar/fullcalendar.min.js
===================================================================
--- public/vendors/fullcalendar/fullcalendar.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/fullcalendar.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,13 @@
+/*!
+ * FullCalendar v3.10.0
+ * Docs & License: https://fullcalendar.io/
+ * (c) 2018 Adam Shaw
+ */
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("moment"),require("jquery")):"function"==typeof define&&define.amd?define(["moment","jquery"],e):"object"==typeof exports?exports.FullCalendar=e(require("moment"),require("jquery")):t.FullCalendar=e(t.moment,t.jQuery)}("undefined"!=typeof self?self:this,function(t,e){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=256)}([function(e,n){e.exports=t},,function(t,e){var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};e.__extends=function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}},function(t,n){t.exports=e},function(t,e,n){function r(t,e){e.left&&t.css({"border-left-width":1,"margin-left":e.left-1}),e.right&&t.css({"border-right-width":1,"margin-right":e.right-1})}function i(t){t.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function o(){ht("body").addClass("fc-not-allowed")}function s(){ht("body").removeClass("fc-not-allowed")}function a(t,e,n){var r=Math.floor(e/t.length),i=Math.floor(e-r*(t.length-1)),o=[],s=[],a=[],u=0;l(t),t.each(function(e,n){var l=e===t.length-1?i:r,d=ht(n).outerHeight(!0);d<l?(o.push(n),s.push(d),a.push(ht(n).height())):u+=d}),n&&(e-=u,r=Math.floor(e/o.length),i=Math.floor(e-r*(o.length-1))),ht(o).each(function(t,e){var n=t===o.length-1?i:r,l=s[t],u=a[t],d=n-(l-u);l<n&&ht(e).height(d)})}function l(t){t.height("")}function u(t){var e=0;return t.find("> *").each(function(t,n){var r=ht(n).outerWidth();r>e&&(e=r)}),e++,t.width(e),e}function d(t,e){var n,r=t.add(e);return r.css({position:"relative",left:-1}),n=t.outerHeight()-e.outerHeight(),r.css({position:"",left:""}),n}function c(t){var e=t.css("position"),n=t.parents().filter(function(){var t=ht(this);return/(auto|scroll)/.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&n.length?n:ht(t[0].ownerDocument||document)}function p(t,e){var n=t.offset(),r=n.left-(e?e.left:0),i=n.top-(e?e.top:0);return{left:r,right:r+t.outerWidth(),top:i,bottom:i+t.outerHeight()}}function h(t,e){var n=t.offset(),r=g(t),i=n.left+b(t,"border-left-width")+r.left-(e?e.left:0),o=n.top+b(t,"border-top-width")+r.top-(e?e.top:0);return{left:i,right:i+t[0].clientWidth,top:o,bottom:o+t[0].clientHeight}}function f(t,e){var n=t.offset(),r=n.left+b(t,"border-left-width")+b(t,"padding-left")-(e?e.left:0),i=n.top+b(t,"border-top-width")+b(t,"padding-top")-(e?e.top:0);return{left:r,right:r+t.width(),top:i,bottom:i+t.height()}}function g(t){var e,n=t[0].offsetWidth-t[0].clientWidth,r=t[0].offsetHeight-t[0].clientHeight;return n=v(n),r=v(r),e={left:0,right:0,top:0,bottom:r},y()&&"rtl"===t.css("direction")?e.left=n:e.right=n,e}function v(t){return t=Math.max(0,t),t=Math.round(t)}function y(){return null===ft&&(ft=m()),ft}function m(){var t=ht("<div><div/></div>").css({position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}).appendTo("body"),e=t.children(),n=e.offset().left>t.offset().left;return t.remove(),n}function b(t,e){return parseFloat(t.css(e))||0}function w(t){return 1===t.which&&!t.ctrlKey}function D(t){var e=t.originalEvent.touches;return e&&e.length?e[0].pageX:t.pageX}function E(t){var e=t.originalEvent.touches;return e&&e.length?e[0].pageY:t.pageY}function S(t){return/^touch/.test(t.type)}function C(t){t.addClass("fc-unselectable").on("selectstart",T)}function R(t){t.removeClass("fc-unselectable").off("selectstart",T)}function T(t){t.preventDefault()}function M(t,e){var n={left:Math.max(t.left,e.left),right:Math.min(t.right,e.right),top:Math.max(t.top,e.top),bottom:Math.min(t.bottom,e.bottom)};return n.left<n.right&&n.top<n.bottom&&n}function I(t,e){return{left:Math.min(Math.max(t.left,e.left),e.right),top:Math.min(Math.max(t.top,e.top),e.bottom)}}function H(t){return{left:(t.left+t.right)/2,top:(t.top+t.bottom)/2}}function P(t,e){return{left:t.left-e.left,top:t.top-e.top}}function _(t){var e,n,r=[],i=[];for("string"==typeof t?i=t.split(/\s*,\s*/):"function"==typeof t?i=[t]:ht.isArray(t)&&(i=t),e=0;e<i.length;e++)n=i[e],"string"==typeof n?r.push("-"===n.charAt(0)?{field:n.substring(1),order:-1}:{field:n,order:1}):"function"==typeof n&&r.push({func:n});return r}function x(t,e,n,r,i){var o,s;for(o=0;o<n.length;o++)if(s=O(t,e,n[o],r,i))return s;return 0}function O(t,e,n,r,i){if(n.func)return n.func(t,e);var o=t[n.field],s=e[n.field];return null==o&&r&&(o=r[n.field]),null==s&&i&&(s=i[n.field]),F(o,s)*(n.order||1)}function F(t,e){return t||e?null==e?-1:null==t?1:"string"===ht.type(t)||"string"===ht.type(e)?String(t).localeCompare(String(e)):t-e:0}function z(t,e){return pt.duration({days:t.clone().stripTime().diff(e.clone().stripTime(),"days"),ms:t.time()-e.time()})}function B(t,e){return pt.duration({days:t.clone().stripTime().diff(e.clone().stripTime(),"days")})}function A(t,e,n){return pt.duration(Math.round(t.diff(e,n,!0)),n)}function k(t,n){var r,i,o;for(r=0;r<e.unitsDesc.length&&(i=e.unitsDesc[r],!((o=V(i,t,n))>=1&&ut(o)));r++);return i}function L(t,e){var n=k(t);return"week"===n&&"object"==typeof e&&e.days&&(n="day"),n}function V(t,e,n){return null!=n?n.diff(e,t,!0):pt.isDuration(e)?e.as(t):e.end.diff(e.start,t,!0)}function G(t,e,n){var r;return U(n)?(e-t)/n:(r=n.asMonths(),Math.abs(r)>=1&&ut(r)?e.diff(t,"months",!0)/r:e.diff(t,"days",!0)/n.asDays())}function N(t,e){var n,r;return U(t)||U(e)?t/e:(n=t.asMonths(),r=e.asMonths(),Math.abs(n)>=1&&ut(n)&&Math.abs(r)>=1&&ut(r)?n/r:t.asDays()/e.asDays())}function j(t,e){var n;return U(t)?pt.duration(t*e):(n=t.asMonths(),Math.abs(n)>=1&&ut(n)?pt.duration({months:n*e}):pt.duration({days:t.asDays()*e}))}function U(t){return Boolean(t.hours()||t.minutes()||t.seconds()||t.milliseconds())}function W(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function q(t){return"string"==typeof t&&/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(t)}function Y(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=window.console;if(n&&n.log)return n.log.apply(n,t)}function Z(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=window.console;return n&&n.warn?n.warn.apply(n,t):Y.apply(null,t)}function X(t,e){var n,r,i,o,s,a,l={};if(e)for(n=0;n<e.length;n++){for(r=e[n],i=[],o=t.length-1;o>=0;o--)if("object"==typeof(s=t[o][r]))i.unshift(s);else if(void 0!==s){l[r]=s;break}i.length&&(l[r]=X(i))}for(n=t.length-1;n>=0;n--){a=t[n];for(r in a)r in l||(l[r]=a[r])}return l}function Q(t,e){for(var n in t)$(t,n)&&(e[n]=t[n])}function $(t,e){return gt.call(t,e)}function K(t,e,n){if(ht.isFunction(t)&&(t=[t]),t){var r=void 0,i=void 0;for(r=0;r<t.length;r++)i=t[r].apply(e,n)||i;return i}}function J(t,e){for(var n=0,r=0;r<t.length;)e(t[r])?(t.splice(r,1),n++):r++;return n}function tt(t,e){for(var n=0,r=0;r<t.length;)t[r]===e?(t.splice(r,1),n++):r++;return n}function et(t,e){var n,r=t.length;if(null==r||r!==e.length)return!1;for(n=0;n<r;n++)if(t[n]!==e[n])return!1;return!0}function nt(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var n=0;n<t.length;n++)if(void 0!==t[n])return t[n]}function rt(t){return(t+"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#039;").replace(/"/g,"&quot;").replace(/\n/g,"<br />")}function it(t){return t.replace(/&.*?;/g,"")}function ot(t){var e=[];return ht.each(t,function(t,n){null!=n&&e.push(t+":"+n)}),e.join(";")}function st(t){var e=[];return ht.each(t,function(t,n){null!=n&&e.push(t+'="'+rt(n)+'"')}),e.join(" ")}function at(t){return t.charAt(0).toUpperCase()+t.slice(1)}function lt(t,e){return t-e}function ut(t){return t%1==0}function dt(t,e){var n=t[e];return function(){return n.apply(t,arguments)}}function ct(t,e,n){void 0===n&&(n=!1);var r,i,o,s,a,l=function(){var u=+new Date-s;u<e?r=setTimeout(l,e-u):(r=null,n||(a=t.apply(o,i),o=i=null))};return function(){o=this,i=arguments,s=+new Date;var u=n&&!r;return r||(r=setTimeout(l,e)),u&&(a=t.apply(o,i),o=i=null),a}}Object.defineProperty(e,"__esModule",{value:!0});var pt=n(0),ht=n(3);e.compensateScroll=r,e.uncompensateScroll=i,e.disableCursor=o,e.enableCursor=s,e.distributeHeight=a,e.undistributeHeight=l,e.matchCellWidths=u,e.subtractInnerElHeight=d,e.getScrollParent=c,e.getOuterRect=p,e.getClientRect=h,e.getContentRect=f,e.getScrollbarWidths=g;var ft=null;e.isPrimaryMouseButton=w,e.getEvX=D,e.getEvY=E,e.getEvIsTouch=S,e.preventSelection=C,e.allowSelection=R,e.preventDefault=T,e.intersectRects=M,e.constrainPoint=I,e.getRectCenter=H,e.diffPoints=P,e.parseFieldSpecs=_,e.compareByFieldSpecs=x,e.compareByFieldSpec=O,e.flexibleCompare=F,e.dayIDs=["sun","mon","tue","wed","thu","fri","sat"],e.unitsDesc=["year","month","week","day","hour","minute","second","millisecond"],e.diffDayTime=z,e.diffDay=B,e.diffByUnit=A,e.computeGreatestUnit=k,e.computeDurationGreatestUnit=L,e.divideRangeByDuration=G,e.divideDurationByDuration=N,e.multiplyDuration=j,e.durationHasTime=U,e.isNativeDate=W,e.isTimeString=q,e.log=Y,e.warn=Z;var gt={}.hasOwnProperty;e.mergeProps=X,e.copyOwnProps=Q,e.hasOwnProp=$,e.applyAll=K,e.removeMatching=J,e.removeExact=tt,e.isArraysEqual=et,e.firstDefined=nt,e.htmlEscape=rt,e.stripHtmlEntities=it,e.cssToStr=ot,e.attrsToStr=st,e.capitaliseFirstLetter=at,e.compareNumbers=lt,e.isInt=ut,e.proxy=dt,e.debounce=ct},function(t,e,n){function r(t,e){return t.startMs-e.startMs}Object.defineProperty(e,"__esModule",{value:!0});var i=n(0),o=n(11),s=function(){function t(t,e){this.isStart=!0,this.isEnd=!0,i.isMoment(t)&&(t=t.clone().stripZone()),i.isMoment(e)&&(e=e.clone().stripZone()),t&&(this.startMs=t.valueOf()),e&&(this.endMs=e.valueOf())}return t.invertRanges=function(e,n){var i,o,s=[],a=n.startMs;for(e.sort(r),i=0;i<e.length;i++)o=e[i],o.startMs>a&&s.push(new t(a,o.startMs)),o.endMs>a&&(a=o.endMs);return a<n.endMs&&s.push(new t(a,n.endMs)),s},t.prototype.intersect=function(e){var n=this.startMs,r=this.endMs,i=null;return null!=e.startMs&&(n=null==n?e.startMs:Math.max(n,e.startMs)),null!=e.endMs&&(r=null==r?e.endMs:Math.min(r,e.endMs)),(null==n||null==r||n<r)&&(i=new t(n,r),i.isStart=this.isStart&&n===this.startMs,i.isEnd=this.isEnd&&r===this.endMs),i},t.prototype.intersectsWith=function(t){return(null==this.endMs||null==t.startMs||this.endMs>t.startMs)&&(null==this.startMs||null==t.endMs||this.startMs<t.endMs)},t.prototype.containsRange=function(t){return(null==this.startMs||null!=t.startMs&&t.startMs>=this.startMs)&&(null==this.endMs||null!=t.endMs&&t.endMs<=this.endMs)},t.prototype.containsDate=function(t){var e=t.valueOf();return(null==this.startMs||e>=this.startMs)&&(null==this.endMs||e<this.endMs)},t.prototype.constrainDate=function(t){var e=t.valueOf();return null!=this.startMs&&e<this.startMs&&(e=this.startMs),null!=this.endMs&&e>=this.endMs&&(e=this.endMs-1),e},t.prototype.equals=function(t){return this.startMs===t.startMs&&this.endMs===t.endMs},t.prototype.clone=function(){var e=new t(this.startMs,this.endMs);return e.isStart=this.isStart,e.isEnd=this.isEnd,e},t.prototype.getStart=function(){return null!=this.startMs?o.default.utc(this.startMs).stripZone():null},t.prototype.getEnd=function(){return null!=this.endMs?o.default.utc(this.endMs).stripZone():null},t.prototype.as=function(t){return i.utc(this.endMs).diff(i.utc(this.startMs),t,!0)},t}();e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(52),s=n(35),a=n(36),l=function(t){function e(n){var r=t.call(this)||this;return r.calendar=n,r.className=[],r.uid=String(e.uuid++),r}return r.__extends(e,t),e.parse=function(t,e){var n=new this(e);return!("object"!=typeof t||!n.applyProps(t))&&n},e.normalizeId=function(t){return t?String(t):null},e.prototype.fetch=function(t,e,n){},e.prototype.removeEventDefsById=function(t){},e.prototype.removeAllEventDefs=function(){},e.prototype.getPrimitive=function(t){},e.prototype.parseEventDefs=function(t){var e,n,r=[];for(e=0;e<t.length;e++)(n=this.parseEventDef(t[e]))&&r.push(n);return r},e.prototype.parseEventDef=function(t){var e=this.calendar.opt("eventDataTransform"),n=this.eventDataTransform;return e&&(t=e(t,this.calendar)),n&&(t=n(t,this.calendar)),a.default.parse(t,this)},e.prototype.applyManualStandardProps=function(t){return null!=t.id&&(this.id=e.normalizeId(t.id)),i.isArray(t.className)?this.className=t.className:"string"==typeof t.className&&(this.className=t.className.split(/\s+/)),!0},e.uuid=0,e.defineStandardProps=o.default.defineStandardProps,e.copyVerbatimStandardProps=o.default.copyVerbatimStandardProps,e}(s.default);e.default=l,o.default.mixInto(l),l.defineStandardProps({id:!1,className:!1,color:!0,backgroundColor:!0,borderColor:!0,textColor:!0,editable:!0,startEditable:!0,durationEditable:!0,rendering:!0,overlap:!0,constraint:!0,allDayDefault:!0,eventDataTransform:!0})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(15),s=0,a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.listenTo=function(t,e,n){if("object"==typeof e)for(var r in e)e.hasOwnProperty(r)&&this.listenTo(t,r,e[r]);else"string"==typeof e&&t.on(e+"."+this.getListenerNamespace(),i.proxy(n,this))},e.prototype.stopListeningTo=function(t,e){t.off((e||"")+"."+this.getListenerNamespace())},e.prototype.getListenerNamespace=function(){return null==this.listenerId&&(this.listenerId=s++),"_listener"+this.listenerId},e}(o.default);e.default=a},,function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(37),o=n(53),s=n(16),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.buildInstances=function(){return[this.buildInstance()]},e.prototype.buildInstance=function(){return new o.default(this,this.dateProfile)},e.prototype.isAllDay=function(){return this.dateProfile.isAllDay()},e.prototype.clone=function(){var e=t.prototype.clone.call(this);return e.dateProfile=this.dateProfile,e},e.prototype.rezone=function(){var t=this.source.calendar,e=this.dateProfile;this.dateProfile=new s.default(t.moment(e.start),e.end?t.moment(e.end):null,t)},e.prototype.applyManualStandardProps=function(e){var n=t.prototype.applyManualStandardProps.call(this,e),r=s.default.parse(e,this.source);return!!r&&(this.dateProfile=r,null!=e.date&&(this.miscProps.date=e.date),n)},e}(i.default);e.default=a,a.defineStandardProps({start:!1,date:!1,end:!1,allDay:!1})},,function(t,e,n){function r(t,e){return c.format.call(t,e)}function i(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var r,i,d,c,p=t[0],h=1===t.length&&"string"==typeof p;return o.isMoment(p)||a.isNativeDate(p)||void 0===p?c=o.apply(null,t):(r=!1,i=!1,h?l.test(p)?(p+="-01",t=[p],r=!0,i=!0):(d=u.exec(p))&&(r=!d[5],i=!0):s.isArray(p)&&(i=!0),c=e||r?o.utc.apply(o,t):o.apply(null,t),r?(c._ambigTime=!0,c._ambigZone=!0):n&&(i?c._ambigZone=!0:h&&c.utcOffset(p))),c._fullCalendar=!0,c}Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),s=n(3),a=n(4),l=/^\s*\d{4}-\d\d$/,u=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,d=o.fn;e.newMomentProto=d;var c=s.extend({},d);e.oldMomentProto=c;var p=o.momentProperties;p.push("_fullCalendar"),p.push("_ambigTime"),p.push("_ambigZone"),e.oldMomentFormat=r;var h=function(){return i(arguments)};e.default=h,h.utc=function(){var t=i(arguments,!0);return t.hasTime()&&t.utc(),t},h.parseZone=function(){return i(arguments,!0,!0)},d.week=d.weeks=function(t){var e=this._locale._fullCalendar_weekCalc;return null==t&&"function"==typeof e?e(this):"ISO"===e?c.isoWeek.apply(this,arguments):c.week.apply(this,arguments)},d.time=function(t){if(!this._fullCalendar)return c.time.apply(this,arguments);if(null==t)return o.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,o.isDuration(t)||o.isMoment(t)||(t=o.duration(t));var e=0;return o.isDuration(t)&&(e=24*Math.floor(t.asDays())),this.hours(e+t.hours()).minutes(t.minutes()).seconds(t.seconds()).milliseconds(t.milliseconds())},d.stripTime=function(){return this._ambigTime||(this.utc(!0),this.set({hours:0,minutes:0,seconds:0,ms:0}),this._ambigTime=!0,this._ambigZone=!0),this},d.hasTime=function(){return!this._ambigTime},d.stripZone=function(){var t;return this._ambigZone||(t=this._ambigTime,this.utc(!0),this._ambigTime=t||!1,this._ambigZone=!0),this},d.hasZone=function(){return!this._ambigZone},d.local=function(t){return c.local.call(this,this._ambigZone||t),this._ambigTime=!1,this._ambigZone=!1,this},d.utc=function(t){return c.utc.call(this,t),this._ambigTime=!1,this._ambigZone=!1,this},d.utcOffset=function(t){return null!=t&&(this._ambigTime=!1,this._ambigZone=!1),c.utcOffset.apply(this,arguments)}},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){this.isAllDay=!1,this.unzonedRange=t,this.isAllDay=e}return t.prototype.toLegacy=function(t){return{start:t.msToMoment(this.unzonedRange.startMs,this.isAllDay),end:t.msToMoment(this.unzonedRange.endMs,this.isAllDay)}},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.on=function(t,e){return i(this).on(t,this._prepareIntercept(e)),this},e.prototype.one=function(t,e){return i(this).one(t,this._prepareIntercept(e)),this},e.prototype._prepareIntercept=function(t){var e=function(e,n){return t.apply(n.context||this,n.args||[])};return t.guid||(t.guid=i.guid++),e.guid=t.guid,e},e.prototype.off=function(t,e){return i(this).off(t,e),this},e.prototype.trigger=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return i(this).triggerHandler(t,{args:e}),this},e.prototype.triggerWith=function(t,e,n){return i(this).triggerHandler(t,{context:e,args:n}),this},e.prototype.hasHandlers=function(t){var e=i._data(this,"events");return e&&e[t]&&e[t].length>0},e}(o.default);e.default=s},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t){this.view=t._getView(),this.component=t}return t.prototype.opt=function(t){return this.view.opt(t)},t.prototype.end=function(){},t}();e.default=n},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(){}return t.mixInto=function(t){var e=this;Object.getOwnPropertyNames(this.prototype).forEach(function(n){t.prototype[n]||(t.prototype[n]=e.prototype[n])})},t.mixOver=function(t){var e=this;Object.getOwnPropertyNames(this.prototype).forEach(function(n){t.prototype[n]=e.prototype[n]})},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(5),i=function(){function t(t,e,n){this.start=t,this.end=e||null,this.unzonedRange=this.buildUnzonedRange(n)}return t.parse=function(e,n){var r=e.start||e.date,i=e.end;if(!r)return!1;var o=n.calendar,s=o.moment(r),a=i?o.moment(i):null,l=e.allDay,u=o.opt("forceEventDuration");return!!s.isValid()&&(null==l&&null==(l=n.allDayDefault)&&(l=o.opt("allDayDefault")),!0===l?(s.stripTime(),a&&a.stripTime()):!1===l&&(s.hasTime()||s.time(0),a&&!a.hasTime()&&a.time(0)),!a||a.isValid()&&a.isAfter(s)||(a=null),!a&&u&&(a=o.getDefaultEventEnd(!s.hasTime(),s)),new t(s,a,o))},t.isStandardProp=function(t){return"start"===t||"date"===t||"end"===t||"allDay"===t},t.prototype.isAllDay=function(){return!(this.start.hasTime()||this.end&&this.end.hasTime())},t.prototype.buildUnzonedRange=function(t){var e=this.start.clone().stripZone().valueOf(),n=this.getEnd(t).stripZone().valueOf();return new r.default(e,n)},t.prototype.getEnd=function(t){return this.end?this.end.clone():t.getDefaultEventEnd(this.isAllDay(),this.start)},t}();e.default=i},function(t,e,n){function r(t,e){return!t&&!e||!(!t||!e)&&(t.component===e.component&&i(t,e)&&i(e,t))}function i(t,e){for(var n in t)if(!/^(component|left|right|top|bottom)$/.test(n)&&t[n]!==e[n])return!1;return!0}Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),s=n(4),a=n(59),l=function(t){function e(e,n){var r=t.call(this,n)||this;return r.component=e,r}return o.__extends(e,t),e.prototype.handleInteractionStart=function(e){var n,r,i,o=this.subjectEl;this.component.hitsNeeded(),this.computeScrollBounds(),e?(r={left:s.getEvX(e),top:s.getEvY(e)},i=r,o&&(n=s.getOuterRect(o),i=s.constrainPoint(i,n)),this.origHit=this.queryHit(i.left,i.top),o&&this.options.subjectCenter&&(this.origHit&&(n=s.intersectRects(this.origHit,n)||n),i=s.getRectCenter(n)),this.coordAdjust=s.diffPoints(i,r)):(this.origHit=null,this.coordAdjust=null),t.prototype.handleInteractionStart.call(this,e)},e.prototype.handleDragStart=function(e){var n;t.prototype.handleDragStart.call(this,e),(n=this.queryHit(s.getEvX(e),s.getEvY(e)))&&this.handleHitOver(n)},e.prototype.handleDrag=function(e,n,i){var o;t.prototype.handleDrag.call(this,e,n,i),o=this.queryHit(s.getEvX(i),s.getEvY(i)),r(o,this.hit)||(this.hit&&this.handleHitOut(),o&&this.handleHitOver(o))},e.prototype.handleDragEnd=function(e){this.handleHitDone(),t.prototype.handleDragEnd.call(this,e)},e.prototype.handleHitOver=function(t){var e=r(t,this.origHit);this.hit=t,this.trigger("hitOver",this.hit,e,this.origHit)},e.prototype.handleHitOut=function(){this.hit&&(this.trigger("hitOut",this.hit),this.handleHitDone(),this.hit=null)},e.prototype.handleHitDone=function(){this.hit&&this.trigger("hitDone",this.hit)},e.prototype.handleInteractionEnd=function(e,n){t.prototype.handleInteractionEnd.call(this,e,n),this.origHit=null,this.hit=null,this.component.hitsNotNeeded()},e.prototype.handleScrollEnd=function(){t.prototype.handleScrollEnd.call(this),this.isDragging&&(this.component.releaseHits(),this.component.prepareHits())},e.prototype.queryHit=function(t,e){return this.coordAdjust&&(t+=this.coordAdjust.left,e+=this.coordAdjust.top),this.component.queryHit(t,e)},e}(a.default);e.default=l},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.version="3.10.0",e.internalApiVersion=12;var r=n(4);e.applyAll=r.applyAll,e.debounce=r.debounce,e.isInt=r.isInt,e.htmlEscape=r.htmlEscape,e.cssToStr=r.cssToStr,e.proxy=r.proxy,e.capitaliseFirstLetter=r.capitaliseFirstLetter,e.getOuterRect=r.getOuterRect,e.getClientRect=r.getClientRect,e.getContentRect=r.getContentRect,e.getScrollbarWidths=r.getScrollbarWidths,e.preventDefault=r.preventDefault,e.parseFieldSpecs=r.parseFieldSpecs,e.compareByFieldSpecs=r.compareByFieldSpecs,e.compareByFieldSpec=r.compareByFieldSpec,e.flexibleCompare=r.flexibleCompare,e.computeGreatestUnit=r.computeGreatestUnit,e.divideRangeByDuration=r.divideRangeByDuration,e.divideDurationByDuration=r.divideDurationByDuration,e.multiplyDuration=r.multiplyDuration,e.durationHasTime=r.durationHasTime,e.log=r.log,e.warn=r.warn,e.removeExact=r.removeExact,e.intersectRects=r.intersectRects,e.allowSelection=r.allowSelection,e.attrsToStr=r.attrsToStr,e.compareNumbers=r.compareNumbers,e.compensateScroll=r.compensateScroll,e.computeDurationGreatestUnit=r.computeDurationGreatestUnit,e.constrainPoint=r.constrainPoint,e.copyOwnProps=r.copyOwnProps,e.diffByUnit=r.diffByUnit,e.diffDay=r.diffDay,e.diffDayTime=r.diffDayTime,e.diffPoints=r.diffPoints,e.disableCursor=r.disableCursor,e.distributeHeight=r.distributeHeight,e.enableCursor=r.enableCursor,e.firstDefined=r.firstDefined,e.getEvIsTouch=r.getEvIsTouch,e.getEvX=r.getEvX,e.getEvY=r.getEvY,e.getRectCenter=r.getRectCenter,e.getScrollParent=r.getScrollParent,e.hasOwnProp=r.hasOwnProp,e.isArraysEqual=r.isArraysEqual,e.isNativeDate=r.isNativeDate,e.isPrimaryMouseButton=r.isPrimaryMouseButton,e.isTimeString=r.isTimeString,e.matchCellWidths=r.matchCellWidths,e.mergeProps=r.mergeProps,e.preventSelection=r.preventSelection,e.removeMatching=r.removeMatching,e.stripHtmlEntities=r.stripHtmlEntities,e.subtractInnerElHeight=r.subtractInnerElHeight,e.uncompensateScroll=r.uncompensateScroll,e.undistributeHeight=r.undistributeHeight,e.dayIDs=r.dayIDs,e.unitsDesc=r.unitsDesc;var i=n(49);e.formatDate=i.formatDate,e.formatRange=i.formatRange,e.queryMostGranularFormatUnit=i.queryMostGranularFormatUnit;var o=n(32);e.datepickerLocale=o.datepickerLocale,e.locale=o.locale,e.getMomentLocaleData=o.getMomentLocaleData,e.populateInstanceComputableOptions=o.populateInstanceComputableOptions;var s=n(19);e.eventDefsToEventInstances=s.eventDefsToEventInstances,e.eventFootprintToComponentFootprint=s.eventFootprintToComponentFootprint,e.eventInstanceToEventRange=s.eventInstanceToEventRange,e.eventInstanceToUnzonedRange=s.eventInstanceToUnzonedRange,e.eventRangeToEventFootprint=s.eventRangeToEventFootprint;var a=n(11);e.moment=a.default;var l=n(13);e.EmitterMixin=l.default;var u=n(7);e.ListenerMixin=u.default;var d=n(51);e.Model=d.default;var c=n(217);e.Constraints=c.default;var p=n(55);e.DateProfileGenerator=p.default;var h=n(5);e.UnzonedRange=h.default;var f=n(12);e.ComponentFootprint=f.default;var g=n(218);e.BusinessHourGenerator=g.default;var v=n(219);e.EventPeriod=v.default;var y=n(220);e.EventManager=y.default;var m=n(37);e.EventDef=m.default;var b=n(39);e.EventDefMutation=b.default;var w=n(36);e.EventDefParser=w.default;var D=n(53);e.EventInstance=D.default;var E=n(50);e.EventRange=E.default;var S=n(54);e.RecurringEventDef=S.default;var C=n(9);e.SingleEventDef=C.default;var R=n(40);e.EventDefDateMutation=R.default;var T=n(16);e.EventDateProfile=T.default;var M=n(38);e.EventSourceParser=M.default;var I=n(6);e.EventSource=I.default;var H=n(57);e.defineThemeSystem=H.defineThemeSystem,e.getThemeSystemClass=H.getThemeSystemClass;var P=n(20);e.EventInstanceGroup=P.default;var _=n(56);e.ArrayEventSource=_.default;var x=n(223);e.FuncEventSource=x.default;var O=n(224);e.JsonFeedEventSource=O.default;var F=n(34);e.EventFootprint=F.default;var z=n(35);e.Class=z.default;var B=n(15);e.Mixin=B.default;var A=n(58);e.CoordCache=A.default;var k=n(225);e.Iterator=k.default;var L=n(59);e.DragListener=L.default;var V=n(17);e.HitDragListener=V.default;var G=n(226);e.MouseFollower=G.default;var N=n(52);e.ParsableModelMixin=N.default;var j=n(227);e.Popover=j.default;var U=n(21);e.Promise=U.default;var W=n(228);e.TaskQueue=W.default;var q=n(229);e.RenderQueue=q.default;var Y=n(41);e.Scroller=Y.default;var Z=n(22);e.Theme=Z.default;var X=n(230);e.Component=X.default;var Q=n(231);e.DateComponent=Q.default;var $=n(42);e.InteractiveDateComponent=$.default;var K=n(232);e.Calendar=K.default;var J=n(43);e.View=J.default;var tt=n(24);e.defineView=tt.defineView,e.getViewConfig=tt.getViewConfig;var et=n(60);e.DayTableMixin=et.default;var nt=n(61);e.BusinessHourRenderer=nt.default;var rt=n(44);e.EventRenderer=rt.default;var it=n(62);e.FillRenderer=it.default;var ot=n(63);e.HelperRenderer=ot.default;var st=n(233);e.ExternalDropping=st.default;var at=n(234);e.EventResizing=at.default;var lt=n(64);e.EventPointing=lt.default;var ut=n(235);e.EventDragging=ut.default;var dt=n(236);e.DateSelecting=dt.default;var ct=n(237);e.DateClicking=ct.default;var pt=n(14);e.Interaction=pt.default;var ht=n(65);e.StandardInteractionsMixin=ht.default;var ft=n(238);e.AgendaView=ft.default;var gt=n(239);e.TimeGrid=gt.default;var vt=n(240);e.TimeGridEventRenderer=vt.default;var yt=n(242);e.TimeGridFillRenderer=yt.default;var mt=n(241);e.TimeGridHelperRenderer=mt.default;var bt=n(66);e.DayGrid=bt.default;var wt=n(243);e.DayGridEventRenderer=wt.default;var Dt=n(245);e.DayGridFillRenderer=Dt.default;var Et=n(244);e.DayGridHelperRenderer=Et.default;var St=n(67);e.BasicView=St.default;var Ct=n(68);e.BasicViewDateProfileGenerator=Ct.default;var Rt=n(246);e.MonthView=Rt.default;var Tt=n(247);e.MonthViewDateProfileGenerator=Tt.default;var Mt=n(248);e.ListView=Mt.default;var It=n(250);e.ListEventPointing=It.default;var Ht=n(249);e.ListEventRenderer=Ht.default},function(t,e,n){function r(t,e){var n,r=[];for(n=0;n<t.length;n++)r.push.apply(r,t[n].buildInstances(e));return r}function i(t){return new l.default(t.dateProfile.unzonedRange,t.def,t)}function o(t){return new u.default(new d.default(t.unzonedRange,t.eventDef.isAllDay()),t.eventDef,t.eventInstance)}function s(t){return t.dateProfile.unzonedRange}function a(t){return t.componentFootprint}Object.defineProperty(e,"__esModule",{value:!0});var l=n(50),u=n(34),d=n(12);e.eventDefsToEventInstances=r,e.eventInstanceToEventRange=i,e.eventRangeToEventFootprint=o,e.eventInstanceToUnzonedRange=s,e.eventFootprintToComponentFootprint=a},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(5),i=n(19),o=n(50),s=function(){function t(t){this.eventInstances=t||[]}return t.prototype.getAllEventRanges=function(t){return t?this.sliceNormalRenderRanges(t):this.eventInstances.map(i.eventInstanceToEventRange)},t.prototype.sliceRenderRanges=function(t){return this.isInverse()?this.sliceInverseRenderRanges(t):this.sliceNormalRenderRanges(t)},t.prototype.sliceNormalRenderRanges=function(t){var e,n,r,i=this.eventInstances,s=[];for(e=0;e<i.length;e++)n=i[e],(r=n.dateProfile.unzonedRange.intersect(t))&&s.push(new o.default(r,n.def,n));return s},t.prototype.sliceInverseRenderRanges=function(t){var e=this.eventInstances.map(i.eventInstanceToUnzonedRange),n=this.getEventDef();return e=r.default.invertRanges(e,t),e.map(function(t){return new o.default(t,n)})},t.prototype.isInverse=function(){return this.getEventDef().hasInverseRendering()},t.prototype.getEventDef=function(){return this.explicitEventDef||this.eventInstances[0].def},t}();e.default=s},function(t,e,n){function r(t,e){t.then=function(n){return"function"==typeof n?s.resolve(n(e)):t}}function i(t){t.then=function(e,n){return"function"==typeof n&&n(),t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),s={construct:function(t){var e=o.Deferred(),n=e.promise();return"function"==typeof t&&t(function(t){e.resolve(t),r(n,t)},function(){e.reject(),i(n)}),n},resolve:function(t){var e=o.Deferred().resolve(t),n=e.promise();return r(n,t),n},reject:function(){var t=o.Deferred().reject(),e=t.promise();return i(e),e}};e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=function(){function t(t){this.optionsManager=t,this.processIconOverride()}return t.prototype.processIconOverride=function(){this.iconOverrideOption&&this.setIconOverride(this.optionsManager.get(this.iconOverrideOption))},t.prototype.setIconOverride=function(t){var e,n;if(r.isPlainObject(t)){e=r.extend({},this.iconClasses);for(n in t)e[n]=this.applyIconOverridePrefix(t[n]);this.iconClasses=e}else!1===t&&(this.iconClasses={})},t.prototype.applyIconOverridePrefix=function(t){var e=this.iconOverridePrefix;return e&&0!==t.indexOf(e)&&(t=e+t),t},t.prototype.getClass=function(t){return this.classes[t]||""},t.prototype.getIconClass=function(t){var e=this.iconClasses[t];return e?this.baseIconClass+" "+e:""},t.prototype.getCustomButtonIconClass=function(t){var e;return this.iconOverrideCustomButtonOption&&(e=t[this.iconOverrideCustomButtonOption])?this.baseIconClass+" "+this.applyIconOverridePrefix(e):""},t}();e.default=i,i.prototype.classes={},i.prototype.iconClasses={},i.prototype.baseIconClass="",i.prototype.iconOverridePrefix=""},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(18),o=n(13),s=n(7);i.touchMouseIgnoreWait=500;var a=null,l=0,u=function(){function t(){this.isTouching=!1,this.mouseIgnoreDepth=0}return t.get=function(){return a||(a=new t,a.bind()),a},t.needed=function(){t.get(),l++},t.unneeded=function(){--l||(a.unbind(),a=null)},t.prototype.bind=function(){var t=this;this.listenTo(r(document),{touchstart:this.handleTouchStart,
+touchcancel:this.handleTouchCancel,touchend:this.handleTouchEnd,mousedown:this.handleMouseDown,mousemove:this.handleMouseMove,mouseup:this.handleMouseUp,click:this.handleClick,selectstart:this.handleSelectStart,contextmenu:this.handleContextMenu}),window.addEventListener("touchmove",this.handleTouchMoveProxy=function(e){t.handleTouchMove(r.Event(e))},{passive:!1}),window.addEventListener("scroll",this.handleScrollProxy=function(e){t.handleScroll(r.Event(e))},!0)},t.prototype.unbind=function(){this.stopListeningTo(r(document)),window.removeEventListener("touchmove",this.handleTouchMoveProxy,{passive:!1}),window.removeEventListener("scroll",this.handleScrollProxy,!0)},t.prototype.handleTouchStart=function(t){this.stopTouch(t,!0),this.isTouching=!0,this.trigger("touchstart",t)},t.prototype.handleTouchMove=function(t){this.isTouching&&this.trigger("touchmove",t)},t.prototype.handleTouchCancel=function(t){this.isTouching&&(this.trigger("touchcancel",t),this.stopTouch(t))},t.prototype.handleTouchEnd=function(t){this.stopTouch(t)},t.prototype.handleMouseDown=function(t){this.shouldIgnoreMouse()||this.trigger("mousedown",t)},t.prototype.handleMouseMove=function(t){this.shouldIgnoreMouse()||this.trigger("mousemove",t)},t.prototype.handleMouseUp=function(t){this.shouldIgnoreMouse()||this.trigger("mouseup",t)},t.prototype.handleClick=function(t){this.shouldIgnoreMouse()||this.trigger("click",t)},t.prototype.handleSelectStart=function(t){this.trigger("selectstart",t)},t.prototype.handleContextMenu=function(t){this.trigger("contextmenu",t)},t.prototype.handleScroll=function(t){this.trigger("scroll",t)},t.prototype.stopTouch=function(t,e){void 0===e&&(e=!1),this.isTouching&&(this.isTouching=!1,this.trigger("touchend",t),e||this.startTouchMouseIgnore())},t.prototype.startTouchMouseIgnore=function(){var t=this,e=i.touchMouseIgnoreWait;e&&(this.mouseIgnoreDepth++,setTimeout(function(){t.mouseIgnoreDepth--},e))},t.prototype.shouldIgnoreMouse=function(){return this.isTouching||Boolean(this.mouseIgnoreDepth)},t}();e.default=u,s.default.mixInto(u),o.default.mixInto(u)},function(t,e,n){function r(t,n){e.viewHash[t]=n}function i(t){return e.viewHash[t]}Object.defineProperty(e,"__esModule",{value:!0});var o=n(18);e.viewHash={},o.views=e.viewHash,e.defineView=r,e.getViewConfig=i},,,,,,,,function(t,e,n){function r(t){a.each(f,function(e,n){null==t[e]&&(t[e]=n(t))})}function i(t,n,r){var i=e.localeOptionHash[t]||(e.localeOptionHash[t]={});i.isRTL=r.isRTL,i.weekNumberTitle=r.weekHeader,a.each(p,function(t,e){i[t]=e(r)});var o=a.datepicker;o&&(o.regional[n]=o.regional[t]=r,o.regional.en=o.regional[""],o.setDefaults(r))}function o(t,n){var r,i;r=e.localeOptionHash[t]||(e.localeOptionHash[t]={}),n&&(r=e.localeOptionHash[t]=d.mergeOptions([r,n])),i=s(t),a.each(h,function(t,e){null==r[t]&&(r[t]=e(i,r))}),d.globalDefaults.locale=t}function s(t){return l.localeData(t)||l.localeData("en")}Object.defineProperty(e,"__esModule",{value:!0});var a=n(3),l=n(0),u=n(18),d=n(33),c=n(4);e.localeOptionHash={},u.locales=e.localeOptionHash;var p={buttonText:function(t){return{prev:c.stripHtmlEntities(t.prevText),next:c.stripHtmlEntities(t.nextText),today:c.stripHtmlEntities(t.currentText)}},monthYearFormat:function(t){return t.showMonthAfterYear?"YYYY["+t.yearSuffix+"] MMMM":"MMMM YYYY["+t.yearSuffix+"]"}},h={dayOfMonthFormat:function(t,e){var n=t.longDateFormat("l");return n=n.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),e.isRTL?n+=" ddd":n="ddd "+n,n},mediumTimeFormat:function(t){return t.longDateFormat("LT").replace(/\s*a$/i,"a")},smallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a")},extraSmallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")},hourFormat:function(t){return t.longDateFormat("LT").replace(":mm","").replace(/(\Wmm)$/,"").replace(/\s*a$/i,"a")},noMeridiemTimeFormat:function(t){return t.longDateFormat("LT").replace(/\s*a$/i,"")}},f={smallDayDateFormat:function(t){return t.isRTL?"D dd":"dd D"},weekFormat:function(t){return t.isRTL?"w[ "+t.weekNumberTitle+"]":"["+t.weekNumberTitle+" ]w"},smallWeekFormat:function(t){return t.isRTL?"w["+t.weekNumberTitle+"]":"["+t.weekNumberTitle+"]w"}};e.populateInstanceComputableOptions=r,e.datepickerLocale=i,e.locale=o,e.getMomentLocaleData=s,o("en",d.englishDefaults)},function(t,e,n){function r(t){return i.mergeProps(t,o)}Object.defineProperty(e,"__esModule",{value:!0});var i=n(4);e.globalDefaults={titleRangeSeparator:" – ",monthYearFormat:"MMMM YYYY",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",columnHeader:!0,defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",scrollTime:"06:00:00",minTime:"00:00:00",maxTime:"24:00:00",showNonCurrentDates:!0,lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,locale:null,isRTL:!1,buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day"},allDayText:"all-day",agendaEventMinHeight:0,theme:!1,dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventOrder:"title",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:100,longPressDelay:1e3},e.englishDefaults={dayPopoverFormat:"dddd, MMMM D"},e.rtlDefaults={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}};var o=["header","footer","buttonText","buttonIcons","themeButtonIcons"];e.mergeOptions=r},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e,n){this.componentFootprint=t,this.eventDef=e,n&&(this.eventInstance=n)}return t.prototype.getEventLegacy=function(){return(this.eventInstance||this.eventDef).toLegacy()},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=function(){function t(){}return t.extend=function(t){var e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(this);return i.copyOwnProps(t,e.prototype),e},t.mixin=function(t){i.copyOwnProps(t,this.prototype)},t}();e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(0),i=n(4),o=n(9),s=n(54);e.default={parse:function(t,e){return i.isTimeString(t.start)||r.isDuration(t.start)||i.isTimeString(t.end)||r.isDuration(t.end)?s.default.parse(t,e):o.default.parse(t,e)}}},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(52),o=function(){function t(t){this.source=t,this.className=[],this.miscProps={}}return t.parse=function(t,e){var n=new this(e);return!!n.applyProps(t)&&n},t.normalizeId=function(t){return String(t)},t.generateId=function(){return"_fc"+t.uuid++},t.prototype.clone=function(){var e=new this.constructor(this.source);return e.id=this.id,e.rawId=this.rawId,e.uid=this.uid,t.copyVerbatimStandardProps(this,e),e.className=this.className.slice(),e.miscProps=r.extend({},this.miscProps),e},t.prototype.hasInverseRendering=function(){return"inverse-background"===this.getRendering()},t.prototype.hasBgRendering=function(){var t=this.getRendering();return"inverse-background"===t||"background"===t},t.prototype.getRendering=function(){return null!=this.rendering?this.rendering:this.source.rendering},t.prototype.getConstraint=function(){return null!=this.constraint?this.constraint:null!=this.source.constraint?this.source.constraint:this.source.calendar.opt("eventConstraint")},t.prototype.getOverlap=function(){return null!=this.overlap?this.overlap:null!=this.source.overlap?this.source.overlap:this.source.calendar.opt("eventOverlap")},t.prototype.isStartExplicitlyEditable=function(){return null!=this.startEditable?this.startEditable:this.source.startEditable},t.prototype.isDurationExplicitlyEditable=function(){return null!=this.durationEditable?this.durationEditable:this.source.durationEditable},t.prototype.isExplicitlyEditable=function(){return null!=this.editable?this.editable:this.source.editable},t.prototype.toLegacy=function(){var e=r.extend({},this.miscProps);return e._id=this.uid,e.source=this.source,e.className=this.className.slice(),e.allDay=this.isAllDay(),null!=this.rawId&&(e.id=this.rawId),t.copyVerbatimStandardProps(this,e),e},t.prototype.applyManualStandardProps=function(e){return null!=e.id?this.id=t.normalizeId(this.rawId=e.id):this.id=t.generateId(),null!=e._id?this.uid=String(e._id):this.uid=t.generateId(),r.isArray(e.className)&&(this.className=e.className),"string"==typeof e.className&&(this.className=e.className.split(/\s+/)),!0},t.prototype.applyMiscProps=function(t){r.extend(this.miscProps,t)},t.uuid=0,t.defineStandardProps=i.default.defineStandardProps,t.copyVerbatimStandardProps=i.default.copyVerbatimStandardProps,t}();e.default=o,i.default.mixInto(o),o.defineStandardProps({_id:!1,id:!1,className:!1,source:!1,title:!0,url:!0,rendering:!0,constraint:!0,overlap:!0,editable:!0,startEditable:!0,durationEditable:!0,color:!0,backgroundColor:!0,borderColor:!0,textColor:!0})},function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default={sourceClasses:[],registerClass:function(t){this.sourceClasses.unshift(t)},parse:function(t,e){var n,r,i=this.sourceClasses;for(n=0;n<i.length;n++)if(r=i[n].parse(t,e))return r}}},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(4),i=n(16),o=n(37),s=n(40),a=n(9),l=function(){function t(){}return t.createFromRawProps=function(e,n,a){var l,u,d,c,p=e.def,h={},f={},g={},v={},y=null,m=null;for(l in n)i.default.isStandardProp(l)?h[l]=n[l]:p.isStandardProp(l)?f[l]=n[l]:p.miscProps[l]!==n[l]&&(g[l]=n[l]);return u=i.default.parse(h,p.source),u&&(d=s.default.createFromDiff(e.dateProfile,u,a)),f.id!==p.id&&(y=f.id),r.isArraysEqual(f.className,p.className)||(m=f.className),o.default.copyVerbatimStandardProps(f,v),c=new t,c.eventDefId=y,c.className=m,c.verbatimStandardProps=v,c.miscProps=g,d&&(c.dateMutation=d),c},t.prototype.mutateSingle=function(t){var e;return this.dateMutation&&(e=t.dateProfile,t.dateProfile=this.dateMutation.buildNewDateProfile(e,t.source.calendar)),null!=this.eventDefId&&(t.id=o.default.normalizeId(t.rawId=this.eventDefId)),this.className&&(t.className=this.className),this.verbatimStandardProps&&a.default.copyVerbatimStandardProps(this.verbatimStandardProps,t),this.miscProps&&t.applyMiscProps(this.miscProps),e?function(){t.dateProfile=e}:function(){}},t.prototype.setDateMutation=function(t){t&&!t.isEmpty()?this.dateMutation=t:this.dateMutation=null},t.prototype.isEmpty=function(){return!this.dateMutation},t}();e.default=l},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(4),i=n(16),o=function(){function t(){this.clearEnd=!1,this.forceTimed=!1,this.forceAllDay=!1}return t.createFromDiff=function(e,n,i){function o(t,e){return i?r.diffByUnit(t,e,i):n.isAllDay()?r.diffDay(t,e):r.diffDayTime(t,e)}var s,a,l,u,d=e.end&&!n.end,c=e.isAllDay()&&!n.isAllDay(),p=!e.isAllDay()&&n.isAllDay();return s=o(n.start,e.start),n.end&&(a=o(n.unzonedRange.getEnd(),e.unzonedRange.getEnd()),l=a.subtract(s)),u=new t,u.clearEnd=d,u.forceTimed=c,u.forceAllDay=p,u.setDateDelta(s),u.setEndDelta(l),u},t.prototype.buildNewDateProfile=function(t,e){var n=t.start.clone(),r=null,o=!1;return t.end&&!this.clearEnd?r=t.end.clone():this.endDelta&&!r&&(r=e.getDefaultEventEnd(t.isAllDay(),n)),this.forceTimed?(o=!0,n.hasTime()||n.time(0),r&&!r.hasTime()&&r.time(0)):this.forceAllDay&&(n.hasTime()&&n.stripTime(),r&&r.hasTime()&&r.stripTime()),this.dateDelta&&(o=!0,n.add(this.dateDelta),r&&r.add(this.dateDelta)),this.endDelta&&(o=!0,r.add(this.endDelta)),this.startDelta&&(o=!0,n.add(this.startDelta)),o&&(n=e.applyTimezone(n),r&&(r=e.applyTimezone(r))),!r&&e.opt("forceEventDuration")&&(r=e.getDefaultEventEnd(t.isAllDay(),n)),new i.default(n,r,e)},t.prototype.setDateDelta=function(t){t&&t.valueOf()?this.dateDelta=t:this.dateDelta=null},t.prototype.setStartDelta=function(t){t&&t.valueOf()?this.startDelta=t:this.startDelta=null},t.prototype.setEndDelta=function(t){t&&t.valueOf()?this.endDelta=t:this.endDelta=null},t.prototype.isEmpty=function(){return!(this.clearEnd||this.forceTimed||this.forceAllDay||this.dateDelta||this.startDelta||this.endDelta)},t}();e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(35),a=function(t){function e(e){var n=t.call(this)||this;return e=e||{},n.overflowX=e.overflowX||e.overflow||"auto",n.overflowY=e.overflowY||e.overflow||"auto",n}return r.__extends(e,t),e.prototype.render=function(){this.el=this.renderEl(),this.applyOverflow()},e.prototype.renderEl=function(){return this.scrollEl=i('<div class="fc-scroller"></div>')},e.prototype.clear=function(){this.setHeight("auto"),this.applyOverflow()},e.prototype.destroy=function(){this.el.remove()},e.prototype.applyOverflow=function(){this.scrollEl.css({"overflow-x":this.overflowX,"overflow-y":this.overflowY})},e.prototype.lockOverflow=function(t){var e=this.overflowX,n=this.overflowY;t=t||this.getScrollbarWidths(),"auto"===e&&(e=t.top||t.bottom||this.scrollEl[0].scrollWidth-1>this.scrollEl[0].clientWidth?"scroll":"hidden"),"auto"===n&&(n=t.left||t.right||this.scrollEl[0].scrollHeight-1>this.scrollEl[0].clientHeight?"scroll":"hidden"),this.scrollEl.css({"overflow-x":e,"overflow-y":n})},e.prototype.setHeight=function(t){this.scrollEl.height(t)},e.prototype.getScrollTop=function(){return this.scrollEl.scrollTop()},e.prototype.setScrollTop=function(t){this.scrollEl.scrollTop(t)},e.prototype.getClientWidth=function(){return this.scrollEl[0].clientWidth},e.prototype.getClientHeight=function(){return this.scrollEl[0].clientHeight},e.prototype.getScrollbarWidths=function(){return o.getScrollbarWidths(this.scrollEl)},e}(s.default);e.default=a},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(231),a=n(23),l=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.segSelector=".fc-event-container > *",r.dateSelectingClass&&(r.dateClicking=new r.dateClickingClass(r)),r.dateSelectingClass&&(r.dateSelecting=new r.dateSelectingClass(r)),r.eventPointingClass&&(r.eventPointing=new r.eventPointingClass(r)),r.eventDraggingClass&&r.eventPointing&&(r.eventDragging=new r.eventDraggingClass(r,r.eventPointing)),r.eventResizingClass&&r.eventPointing&&(r.eventResizing=new r.eventResizingClass(r,r.eventPointing)),r.externalDroppingClass&&(r.externalDropping=new r.externalDroppingClass(r)),r}return r.__extends(e,t),e.prototype.setElement=function(e){t.prototype.setElement.call(this,e),this.dateClicking&&this.dateClicking.bindToEl(e),this.dateSelecting&&this.dateSelecting.bindToEl(e),this.bindAllSegHandlersToEl(e)},e.prototype.removeElement=function(){this.endInteractions(),t.prototype.removeElement.call(this)},e.prototype.executeEventUnrender=function(){this.endInteractions(),t.prototype.executeEventUnrender.call(this)},e.prototype.bindGlobalHandlers=function(){t.prototype.bindGlobalHandlers.call(this),this.externalDropping&&this.externalDropping.bindToDocument()},e.prototype.unbindGlobalHandlers=function(){t.prototype.unbindGlobalHandlers.call(this),this.externalDropping&&this.externalDropping.unbindFromDocument()},e.prototype.bindDateHandlerToEl=function(t,e,n){var r=this;this.el.on(e,function(t){if(!i(t.target).is(r.segSelector+":not(.fc-helper),"+r.segSelector+":not(.fc-helper) *,.fc-more,a[data-goto]"))return n.call(r,t)})},e.prototype.bindAllSegHandlersToEl=function(t){[this.eventPointing,this.eventDragging,this.eventResizing].forEach(function(e){e&&e.bindToEl(t)})},e.prototype.bindSegHandlerToEl=function(t,e,n){var r=this;t.on(e,this.segSelector,function(t){var e=i(t.currentTarget);if(!e.is(".fc-helper")){var o=e.data("fc-seg");if(o&&!r.shouldIgnoreEventPointing())return n.call(r,o,t)}})},e.prototype.shouldIgnoreMouse=function(){return a.default.get().shouldIgnoreMouse()},e.prototype.shouldIgnoreTouch=function(){var t=this._getView();return t.isSelected||t.selectedEvent},e.prototype.shouldIgnoreEventPointing=function(){return this.eventDragging&&this.eventDragging.isDragging||this.eventResizing&&this.eventResizing.isResizing},e.prototype.canStartSelection=function(t,e){return o.getEvIsTouch(e)&&!this.canStartResize(t,e)&&(this.isEventDefDraggable(t.footprint.eventDef)||this.isEventDefResizable(t.footprint.eventDef))},e.prototype.canStartDrag=function(t,e){return!this.canStartResize(t,e)&&this.isEventDefDraggable(t.footprint.eventDef)},e.prototype.canStartResize=function(t,e){var n=this._getView(),r=t.footprint.eventDef;return(!o.getEvIsTouch(e)||n.isEventDefSelected(r))&&this.isEventDefResizable(r)&&i(e.target).is(".fc-resizer")},e.prototype.endInteractions=function(){[this.dateClicking,this.dateSelecting,this.eventPointing,this.eventDragging,this.eventResizing].forEach(function(t){t&&t.end()})},e.prototype.isEventDefDraggable=function(t){return this.isEventDefStartEditable(t)},e.prototype.isEventDefStartEditable=function(t){var e=t.isStartExplicitlyEditable();return null==e&&null==(e=this.opt("eventStartEditable"))&&(e=this.isEventDefGenerallyEditable(t)),e},e.prototype.isEventDefGenerallyEditable=function(t){var e=t.isExplicitlyEditable();return null==e&&(e=this.opt("editable")),e},e.prototype.isEventDefResizableFromStart=function(t){return this.opt("eventResizableFromStart")&&this.isEventDefResizable(t)},e.prototype.isEventDefResizableFromEnd=function(t){return this.isEventDefResizable(t)},e.prototype.isEventDefResizable=function(t){var e=t.isDurationExplicitlyEditable();return null==e&&null==(e=this.opt("eventDurationEditable"))&&(e=this.isEventDefGenerallyEditable(t)),e},e.prototype.diffDates=function(t,e){return this.largeUnit?o.diffByUnit(t,e,this.largeUnit):o.diffDayTime(t,e)},e.prototype.isEventInstanceGroupAllowed=function(t){var e,n=this._getView(),r=this.dateProfile,i=this.eventRangesToEventFootprints(t.getAllEventRanges());for(e=0;e<i.length;e++)if(!r.validUnzonedRange.containsRange(i[e].componentFootprint.unzonedRange))return!1;return n.calendar.constraints.isEventInstanceGroupAllowed(t)},e.prototype.isExternalInstanceGroupAllowed=function(t){var e,n=this._getView(),r=this.dateProfile,i=this.eventRangesToEventFootprints(t.getAllEventRanges());for(e=0;e<i.length;e++)if(!r.validUnzonedRange.containsRange(i[e].componentFootprint.unzonedRange))return!1;for(e=0;e<i.length;e++)if(!n.calendar.constraints.isSelectionFootprintAllowed(i[e].componentFootprint))return!1;return!0},e}(s.default);e.default=l},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(0),s=n(4),a=n(229),l=n(55),u=n(42),d=n(23),c=n(5),p=function(t){function e(e,n){var r=t.call(this,null,n.options)||this;return r.batchRenderDepth=0,r.isSelected=!1,r.calendar=e,r.viewSpec=n,r.type=n.type,r.name=r.type,r.initRenderQueue(),r.initHiddenDays(),r.dateProfileGenerator=new r.dateProfileGeneratorClass(r),r.bindBaseRenderHandlers(),r.eventOrderSpecs=s.parseFieldSpecs(r.opt("eventOrder")),r.initialize&&r.initialize(),r}return r.__extends(e,t),e.prototype._getView=function(){return this},e.prototype.opt=function(t){return this.options[t]},e.prototype.initRenderQueue=function(){this.renderQueue=new a.default({event:this.opt("eventRenderWait")}),this.renderQueue.on("start",this.onRenderQueueStart.bind(this)),this.renderQueue.on("stop",this.onRenderQueueStop.bind(this)),this.on("before:change",this.startBatchRender),this.on("change",this.stopBatchRender)},e.prototype.onRenderQueueStart=function(){this.calendar.freezeContentHeight(),this.addScroll(this.queryScroll())},e.prototype.onRenderQueueStop=function(){this.calendar.updateViewSize()&&this.popScroll(),this.calendar.thawContentHeight()},e.prototype.startBatchRender=function(){this.batchRenderDepth++||this.renderQueue.pause()},e.prototype.stopBatchRender=function(){--this.batchRenderDepth||this.renderQueue.resume()},e.prototype.requestRender=function(t,e,n){this.renderQueue.queue(t,e,n)},e.prototype.whenSizeUpdated=function(t){this.renderQueue.isRunning?this.renderQueue.one("stop",t.bind(this)):t.call(this)},e.prototype.computeTitle=function(t){var e;return e=/^(year|month)$/.test(t.currentRangeUnit)?t.currentUnzonedRange:t.activeUnzonedRange,this.formatRange({start:this.calendar.msToMoment(e.startMs,t.isRangeAllDay),end:this.calendar.msToMoment(e.endMs,t.isRangeAllDay)},t.isRangeAllDay,this.opt("titleFormat")||this.computeTitleFormat(t),this.opt("titleRangeSeparator"))},e.prototype.computeTitleFormat=function(t){var e=t.currentRangeUnit;return"year"===e?"YYYY":"month"===e?this.opt("monthYearFormat"):t.currentUnzonedRange.as("days")>1?"ll":"LL"},e.prototype.setDate=function(t){var e=this.get("dateProfile"),n=this.dateProfileGenerator.build(t,void 0,!0);e&&e.activeUnzonedRange.equals(n.activeUnzonedRange)||this.set("dateProfile",n)},e.prototype.unsetDate=function(){this.unset("dateProfile")},e.prototype.fetchInitialEvents=function(t){var e=this.calendar,n=t.isRangeAllDay&&!this.usesMinMaxTime;return e.requestEvents(e.msToMoment(t.activeUnzonedRange.startMs,n),e.msToMoment(t.activeUnzonedRange.endMs,n))},e.prototype.bindEventChanges=function(){this.listenTo(this.calendar,"eventsReset",this.resetEvents)},e.prototype.unbindEventChanges=function(){this.stopListeningTo(this.calendar,"eventsReset")},e.prototype.setEvents=function(t){this.set("currentEvents",t),this.set("hasEvents",!0)},e.prototype.unsetEvents=function(){this.unset("currentEvents"),this.unset("hasEvents")},e.prototype.resetEvents=function(t){this.startBatchRender(),this.unsetEvents(),this.setEvents(t),this.stopBatchRender()},e.prototype.requestDateRender=function(t){var e=this;this.requestRender(function(){e.executeDateRender(t)},"date","init")},e.prototype.requestDateUnrender=function(){var t=this;this.requestRender(function(){t.executeDateUnrender()},"date","destroy")},e.prototype.executeDateRender=function(e){t.prototype.executeDateRender.call(this,e),this.render&&this.render(),this.trigger("datesRendered"),this.addScroll({isDateInit:!0}),this.startNowIndicator()},e.prototype.executeDateUnrender=function(){this.unselect(),this.stopNowIndicator(),this.trigger("before:datesUnrendered"),this.destroy&&this.destroy(),t.prototype.executeDateUnrender.call(this)},e.prototype.bindBaseRenderHandlers=function(){var t=this;this.on("datesRendered",function(){t.whenSizeUpdated(t.triggerViewRender)}),this.on("before:datesUnrendered",function(){t.triggerViewDestroy()})},e.prototype.triggerViewRender=function(){this.publiclyTrigger("viewRender",{context:this,args:[this,this.el]})},e.prototype.triggerViewDestroy=function(){this.publiclyTrigger("viewDestroy",{context:this,args:[this,this.el]})},e.prototype.requestEventsRender=function(t){var e=this;this.requestRender(function(){e.executeEventRender(t),e.whenSizeUpdated(e.triggerAfterEventsRendered)},"event","init")},e.prototype.requestEventsUnrender=function(){var t=this;this.requestRender(function(){t.triggerBeforeEventsDestroyed(),t.executeEventUnrender()},"event","destroy")},e.prototype.requestBusinessHoursRender=function(t){var e=this;this.requestRender(function(){e.renderBusinessHours(t)},"businessHours","init")},e.prototype.requestBusinessHoursUnrender=function(){var t=this;this.requestRender(function(){t.unrenderBusinessHours()},"businessHours","destroy")},e.prototype.bindGlobalHandlers=function(){t.prototype.bindGlobalHandlers.call(this),this.listenTo(d.default.get(),{touchstart:this.processUnselect,mousedown:this.handleDocumentMousedown})},e.prototype.unbindGlobalHandlers=function(){t.prototype.unbindGlobalHandlers.call(this),this.stopListeningTo(d.default.get())},e.prototype.startNowIndicator=function(){var t,e,n,r=this;this.opt("nowIndicator")&&(t=this.getNowIndicatorUnit())&&(e=s.proxy(this,"updateNowIndicator"),this.initialNowDate=this.calendar.getNow(),this.initialNowQueriedMs=(new Date).valueOf(),n=this.initialNowDate.clone().startOf(t).add(1,t).valueOf()-this.initialNowDate.valueOf(),this.nowIndicatorTimeoutID=setTimeout(function(){r.nowIndicatorTimeoutID=null,e(),n=+o.duration(1,t),n=Math.max(100,n),r.nowIndicatorIntervalID=setInterval(e,n)},n))},e.prototype.updateNowIndicator=function(){this.isDatesRendered&&this.initialNowDate&&(this.unrenderNowIndicator(),this.renderNowIndicator(this.initialNowDate.clone().add((new Date).valueOf()-this.initialNowQueriedMs)),this.isNowIndicatorRendered=!0)},e.prototype.stopNowIndicator=function(){this.isNowIndicatorRendered&&(this.nowIndicatorTimeoutID&&(clearTimeout(this.nowIndicatorTimeoutID),this.nowIndicatorTimeoutID=null),this.nowIndicatorIntervalID&&(clearInterval(this.nowIndicatorIntervalID),this.nowIndicatorIntervalID=null),this.unrenderNowIndicator(),this.isNowIndicatorRendered=!1)},e.prototype.updateSize=function(e,n,r){this.setHeight?this.setHeight(e,n):t.prototype.updateSize.call(this,e,n,r),this.updateNowIndicator()},e.prototype.addScroll=function(t){var e=this.queuedScroll||(this.queuedScroll={});i.extend(e,t)},e.prototype.popScroll=function(){this.applyQueuedScroll(),this.queuedScroll=null},e.prototype.applyQueuedScroll=function(){this.queuedScroll&&this.applyScroll(this.queuedScroll)},e.prototype.queryScroll=function(){var t={};return this.isDatesRendered&&i.extend(t,this.queryDateScroll()),t},e.prototype.applyScroll=function(t){t.isDateInit&&this.isDatesRendered&&i.extend(t,this.computeInitialDateScroll()),this.isDatesRendered&&this.applyDateScroll(t)},e.prototype.computeInitialDateScroll=function(){return{}},e.prototype.queryDateScroll=function(){return{}},e.prototype.applyDateScroll=function(t){},e.prototype.reportEventDrop=function(t,e,n,r){var i=this.calendar.eventManager,s=i.mutateEventsWithId(t.def.id,e),a=e.dateMutation;a&&(t.dateProfile=a.buildNewDateProfile(t.dateProfile,this.calendar)),this.triggerEventDrop(t,a&&a.dateDelta||o.duration(),s,n,r)},e.prototype.triggerEventDrop=function(t,e,n,r,i){this.publiclyTrigger("eventDrop",{context:r[0],args:[t.toLegacy(),e,n,i,{},this]})},e.prototype.reportExternalDrop=function(t,e,n,r,i,o){e&&this.calendar.eventManager.addEventDef(t,n),this.triggerExternalDrop(t,e,r,i,o)},e.prototype.triggerExternalDrop=function(t,e,n,r,i){this.publiclyTrigger("drop",{context:n[0],args:[t.dateProfile.start.clone(),r,i,this]}),e&&this.publiclyTrigger("eventReceive",{context:this,args:[t.buildInstance().toLegacy(),this]})},e.prototype.reportEventResize=function(t,e,n,r){var i=this.calendar.eventManager,o=i.mutateEventsWithId(t.def.id,e);t.dateProfile=e.dateMutation.buildNewDateProfile(t.dateProfile,this.calendar);var s=e.dateMutation.endDelta||e.dateMutation.startDelta;this.triggerEventResize(t,s,o,n,r)},e.prototype.triggerEventResize=function(t,e,n,r,i){this.publiclyTrigger("eventResize",{context:r[0],args:[t.toLegacy(),e,n,i,{},this]})},e.prototype.select=function(t,e){this.unselect(e),this.renderSelectionFootprint(t),this.reportSelection(t,e)},e.prototype.renderSelectionFootprint=function(e){this.renderSelection?this.renderSelection(e.toLegacy(this.calendar)):t.prototype.renderSelectionFootprint.call(this,e)},e.prototype.reportSelection=function(t,e){this.isSelected=!0,this.triggerSelect(t,e)},e.prototype.triggerSelect=function(t,e){var n=this.calendar.footprintToDateProfile(t);this.publiclyTrigger("select",{context:this,args:[n.start,n.end,e,this]})},e.prototype.unselect=function(t){this.isSelected&&(this.isSelected=!1,this.destroySelection&&this.destroySelection(),this.unrenderSelection(),this.publiclyTrigger("unselect",{context:this,args:[t,this]}))},e.prototype.selectEventInstance=function(t){this.selectedEventInstance&&this.selectedEventInstance===t||(this.unselectEventInstance(),this.getEventSegs().forEach(function(e){e.footprint.eventInstance===t&&e.el&&e.el.addClass("fc-selected")}),this.selectedEventInstance=t)},e.prototype.unselectEventInstance=function(){this.selectedEventInstance&&(this.getEventSegs().forEach(function(t){t.el&&t.el.removeClass("fc-selected")}),this.selectedEventInstance=null)},e.prototype.isEventDefSelected=function(t){return this.selectedEventInstance&&this.selectedEventInstance.def.id===t.id},e.prototype.handleDocumentMousedown=function(t){s.isPrimaryMouseButton(t)&&this.processUnselect(t)},e.prototype.processUnselect=function(t){this.processRangeUnselect(t),this.processEventUnselect(t)},e.prototype.processRangeUnselect=function(t){var e;this.isSelected&&this.opt("unselectAuto")&&((e=this.opt("unselectCancel"))&&i(t.target).closest(e).length||this.unselect(t))},e.prototype.processEventUnselect=function(t){this.selectedEventInstance&&(i(t.target).closest(".fc-selected").length||this.unselectEventInstance())},e.prototype.triggerBaseRendered=function(){this.publiclyTrigger("viewRender",{context:this,args:[this,this.el]})},e.prototype.triggerBaseUnrendered=function(){this.publiclyTrigger("viewDestroy",{context:this,args:[this,this.el]})},e.prototype.triggerDayClick=function(t,e,n){var r=this.calendar.footprintToDateProfile(t);this.publiclyTrigger("dayClick",{context:e,args:[r.start,n,this]})},e.prototype.isDateInOtherMonth=function(t,e){return!1},e.prototype.getUnzonedRangeOption=function(t){var e=this.opt(t);if("function"==typeof e&&(e=e.apply(null,Array.prototype.slice.call(arguments,1))),e)return this.calendar.parseUnzonedRange(e)},e.prototype.initHiddenDays=function(){var t,e=this.opt("hiddenDays")||[],n=[],r=0;for(!1===this.opt("weekends")&&e.push(0,6),t=0;t<7;t++)(n[t]=-1!==i.inArray(t,e))||r++;if(!r)throw new Error("invalid hiddenDays");this.isHiddenDayHash=n},e.prototype.trimHiddenDays=function(t){var e=t.getStart(),n=t.getEnd();return e&&(e=this.skipHiddenDays(e)),n&&(n=this.skipHiddenDays(n,-1,!0)),null===e||null===n||e<n?new c.default(e,n):null},e.prototype.isHiddenDay=function(t){return o.isMoment(t)&&(t=t.day()),this.isHiddenDayHash[t]},e.prototype.skipHiddenDays=function(t,e,n){void 0===e&&(e=1),void 0===n&&(n=!1);for(var r=t.clone();this.isHiddenDayHash[(r.day()+(n?e:0)+7)%7];)r.add(e,"days");return r},e}(u.default);e.default=p,p.prototype.usesMinMaxTime=!1,p.prototype.dateProfileGeneratorClass=l.default,p.watch("displayingDates",["isInDom","dateProfile"],function(t){this.requestDateRender(t.dateProfile)},function(){this.requestDateUnrender()}),p.watch("displayingBusinessHours",["displayingDates","businessHourGenerator"],function(t){this.requestBusinessHoursRender(t.businessHourGenerator)},function(){this.requestBusinessHoursUnrender()}),p.watch("initialEvents",["dateProfile"],function(t){return this.fetchInitialEvents(t.dateProfile)}),p.watch("bindingEvents",["initialEvents"],function(t){this.setEvents(t.initialEvents),this.bindEventChanges()},function(){this.unbindEventChanges(),this.unsetEvents()}),p.watch("displayingEvents",["displayingDates","hasEvents"],function(){this.requestEventsRender(this.get("currentEvents"))},function(){this.requestEventsUnrender()}),p.watch("title",["dateProfile"],function(t){return this.title=this.computeTitle(t.dateProfile)}),p.watch("legacyDateProps",["dateProfile"],function(t){var e=this.calendar,n=t.dateProfile;this.start=e.msToMoment(n.activeUnzonedRange.startMs,n.isRangeAllDay),this.end=e.msToMoment(n.activeUnzonedRange.endMs,n.isRangeAllDay),this.intervalStart=e.msToMoment(n.currentUnzonedRange.startMs,n.isRangeAllDay),this.intervalEnd=e.msToMoment(n.currentUnzonedRange.endMs,n.isRangeAllDay)})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=function(){function t(t,e){this.view=t._getView(),this.component=t,this.fillRenderer=e}return t.prototype.opt=function(t){return this.view.opt(t)},t.prototype.rangeUpdated=function(){var t,e
+;this.eventTimeFormat=this.opt("eventTimeFormat")||this.opt("timeFormat")||this.computeEventTimeFormat(),t=this.opt("displayEventTime"),null==t&&(t=this.computeDisplayEventTime()),e=this.opt("displayEventEnd"),null==e&&(e=this.computeDisplayEventEnd()),this.displayEventTime=t,this.displayEventEnd=e},t.prototype.render=function(t){var e,n,r,i=this.component._getDateProfile(),o=[],s=[];for(e in t)n=t[e],r=n.sliceRenderRanges(i.activeUnzonedRange),n.getEventDef().hasBgRendering()?o.push.apply(o,r):s.push.apply(s,r);this.renderBgRanges(o),this.renderFgRanges(s)},t.prototype.unrender=function(){this.unrenderBgRanges(),this.unrenderFgRanges()},t.prototype.renderFgRanges=function(t){var e=this.component.eventRangesToEventFootprints(t),n=this.component.eventFootprintsToSegs(e);n=this.renderFgSegEls(n),!1!==this.renderFgSegs(n)&&(this.fgSegs=n)},t.prototype.unrenderFgRanges=function(){this.unrenderFgSegs(this.fgSegs||[]),this.fgSegs=null},t.prototype.renderBgRanges=function(t){var e=this.component.eventRangesToEventFootprints(t),n=this.component.eventFootprintsToSegs(e);!1!==this.renderBgSegs(n)&&(this.bgSegs=n)},t.prototype.unrenderBgRanges=function(){this.unrenderBgSegs(),this.bgSegs=null},t.prototype.getSegs=function(){return(this.bgSegs||[]).concat(this.fgSegs||[])},t.prototype.renderFgSegs=function(t){return!1},t.prototype.unrenderFgSegs=function(t){},t.prototype.renderBgSegs=function(t){var e=this;if(!this.fillRenderer)return!1;this.fillRenderer.renderSegs("bgEvent",t,{getClasses:function(t){return e.getBgClasses(t.footprint.eventDef)},getCss:function(t){return{"background-color":e.getBgColor(t.footprint.eventDef)}},filterEl:function(t,n){return e.filterEventRenderEl(t.footprint,n)}})},t.prototype.unrenderBgSegs=function(){this.fillRenderer&&this.fillRenderer.unrender("bgEvent")},t.prototype.renderFgSegEls=function(t,e){var n=this;void 0===e&&(e=!1);var i,o=this.view.hasPublicHandlers("eventRender"),s="",a=[];if(t.length){for(i=0;i<t.length;i++)this.beforeFgSegHtml(t[i]),s+=this.fgSegHtml(t[i],e);r(s).each(function(e,i){var s=t[e],l=r(i);o&&(l=n.filterEventRenderEl(s.footprint,l)),l&&(l.data("fc-seg",s),s.el=l,a.push(s))})}return a},t.prototype.beforeFgSegHtml=function(t){},t.prototype.fgSegHtml=function(t,e){},t.prototype.getSegClasses=function(t,e,n){var r=["fc-event",t.isStart?"fc-start":"fc-not-start",t.isEnd?"fc-end":"fc-not-end"].concat(this.getClasses(t.footprint.eventDef));return e&&r.push("fc-draggable"),n&&r.push("fc-resizable"),this.view.isEventDefSelected(t.footprint.eventDef)&&r.push("fc-selected"),r},t.prototype.filterEventRenderEl=function(t,e){var n=t.getEventLegacy(),i=this.view.publiclyTrigger("eventRender",{context:n,args:[n,e,this.view]});return!1===i?e=null:i&&!0!==i&&(e=r(i)),e},t.prototype.getTimeText=function(t,e,n){return this._getTimeText(t.eventInstance.dateProfile.start,t.eventInstance.dateProfile.end,t.componentFootprint.isAllDay,e,n)},t.prototype._getTimeText=function(t,e,n,r,i){return null==r&&(r=this.eventTimeFormat),null==i&&(i=this.displayEventEnd),this.displayEventTime&&!n?i&&e?this.view.formatRange({start:t,end:e},!1,r):t.format(r):""},t.prototype.computeEventTimeFormat=function(){return this.opt("smallTimeFormat")},t.prototype.computeDisplayEventTime=function(){return!0},t.prototype.computeDisplayEventEnd=function(){return!0},t.prototype.getBgClasses=function(t){var e=this.getClasses(t);return e.push("fc-bgevent"),e},t.prototype.getClasses=function(t){var e,n=this.getStylingObjs(t),r=[];for(e=0;e<n.length;e++)r.push.apply(r,n[e].eventClassName||n[e].className||[]);return r},t.prototype.getSkinCss=function(t){return{"background-color":this.getBgColor(t),"border-color":this.getBorderColor(t),color:this.getTextColor(t)}},t.prototype.getBgColor=function(t){var e,n,r=this.getStylingObjs(t);for(e=0;e<r.length&&!n;e++)n=r[e].eventBackgroundColor||r[e].eventColor||r[e].backgroundColor||r[e].color;return n||(n=this.opt("eventBackgroundColor")||this.opt("eventColor")),n},t.prototype.getBorderColor=function(t){var e,n,r=this.getStylingObjs(t);for(e=0;e<r.length&&!n;e++)n=r[e].eventBorderColor||r[e].eventColor||r[e].borderColor||r[e].color;return n||(n=this.opt("eventBorderColor")||this.opt("eventColor")),n},t.prototype.getTextColor=function(t){var e,n,r=this.getStylingObjs(t);for(e=0;e<r.length&&!n;e++)n=r[e].eventTextColor||r[e].textColor;return n||(n=this.opt("eventTextColor")),n},t.prototype.getStylingObjs=function(t){var e=this.getFallbackStylingObjs(t);return e.unshift(t),e},t.prototype.getFallbackStylingObjs=function(t){return[t.source]},t.prototype.sortEventSegs=function(t){t.sort(i.proxy(this,"compareEventSegs"))},t.prototype.compareEventSegs=function(t,e){var n=t.footprint,r=e.footprint,o=n.componentFootprint,s=r.componentFootprint,a=o.unzonedRange,l=s.unzonedRange;return a.startMs-l.startMs||l.endMs-l.startMs-(a.endMs-a.startMs)||s.isAllDay-o.isAllDay||i.compareByFieldSpecs(n.eventDef,r.eventDef,this.view.eventOrderSpecs,n.eventDef.miscProps,r.eventDef.miscProps)},t}();e.default=o},,,,,function(t,e,n){function r(t){return"en"!==t.locale()?t.clone().locale("en"):t}function i(t,e){return h(a(e).fakeFormatString,t)}function o(t,e,n,r,i){var o;return t=y.default.parseZone(t),e=y.default.parseZone(e),o=t.localeData(),n=o.longDateFormat(n)||n,s(a(n),t,e,r||" - ",i)}function s(t,e,n,r,i){var o,s,a,l=t.sameUnits,u=e.clone().stripZone(),d=n.clone().stripZone(),c=f(t.fakeFormatString,e),p=f(t.fakeFormatString,n),h="",v="",y="",m="",b="";for(o=0;o<l.length&&(!l[o]||u.isSame(d,l[o]));o++)h+=c[o];for(s=l.length-1;s>o&&(!l[s]||u.isSame(d,l[s]))&&(s-1!==o||"."!==c[s]);s--)v=c[s]+v;for(a=o;a<=s;a++)y+=c[a],m+=p[a];return(y||m)&&(b=i?m+r+y:y+r+m),g(h+b+v)}function a(t){return C[t]||(C[t]=l(t))}function l(t){var e=u(t);return{fakeFormatString:c(e),sameUnits:p(e)}}function u(t){for(var e,n=[],r=/\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;e=r.exec(t);)e[1]?n.push.apply(n,d(e[1])):e[2]?n.push({maybe:u(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push.apply(n,d(e[5]));return n}function d(t){return". "===t?["."," "]:[t]}function c(t){var e,n,r=[];for(e=0;e<t.length;e++)n=t[e],"string"==typeof n?r.push("["+n+"]"):n.token?n.token in E?r.push(b+"["+n.token+"]"):r.push(n.token):n.maybe&&r.push(w+c(n.maybe)+w);return r.join(m)}function p(t){var e,n,r,i=[];for(e=0;e<t.length;e++)n=t[e],n.token?(r=S[n.token.charAt(0)],i.push(r?r.unit:"second")):n.maybe?i.push.apply(i,p(n.maybe)):i.push(null);return i}function h(t,e){return g(f(t,e).join(""))}function f(t,e){var n,r,i=[],o=y.oldMomentFormat(e,t),s=o.split(m);for(n=0;n<s.length;n++)r=s[n],r.charAt(0)===b?i.push(E[r.substring(1)](e)):i.push(r);return i}function g(t){return t.replace(D,function(t,e){return e.match(/[1-9]/)?e:""})}function v(t){var e,n,r,i,o=u(t);for(e=0;e<o.length;e++)n=o[e],n.token&&(r=S[n.token.charAt(0)])&&(!i||r.value>i.value)&&(i=r);return i?i.unit:null}Object.defineProperty(e,"__esModule",{value:!0});var y=n(11);y.newMomentProto.format=function(){return this._fullCalendar&&arguments[0]?i(this,arguments[0]):this._ambigTime?y.oldMomentFormat(r(this),"YYYY-MM-DD"):this._ambigZone?y.oldMomentFormat(r(this),"YYYY-MM-DD[T]HH:mm:ss"):this._fullCalendar?y.oldMomentFormat(r(this)):y.oldMomentProto.format.apply(this,arguments)},y.newMomentProto.toISOString=function(){return this._ambigTime?y.oldMomentFormat(r(this),"YYYY-MM-DD"):this._ambigZone?y.oldMomentFormat(r(this),"YYYY-MM-DD[T]HH:mm:ss"):this._fullCalendar?y.oldMomentProto.toISOString.apply(r(this),arguments):y.oldMomentProto.toISOString.apply(this,arguments)};var m="\v",b="",w="
+",D=new RegExp(w+"([^"+w+"]*)"+w,"g"),E={t:function(t){return y.oldMomentFormat(t,"a").charAt(0)},T:function(t){return y.oldMomentFormat(t,"A").charAt(0)}},S={Y:{value:1,unit:"year"},M:{value:2,unit:"month"},W:{value:3,unit:"week"},w:{value:3,unit:"week"},D:{value:4,unit:"day"},d:{value:4,unit:"day"}};e.formatDate=i,e.formatRange=o;var C={};e.queryMostGranularFormatUnit=v},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e,n){this.unzonedRange=t,this.eventDef=e,n&&(this.eventInstance=n)}return t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(35),o=n(13),s=n(7),a=function(t){function e(){var e=t.call(this)||this;return e._watchers={},e._props={},e.applyGlobalWatchers(),e.constructed(),e}return r.__extends(e,t),e.watch=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];this.prototype.hasOwnProperty("_globalWatchArgs")||(this.prototype._globalWatchArgs=Object.create(this.prototype._globalWatchArgs)),this.prototype._globalWatchArgs[t]=e},e.prototype.constructed=function(){},e.prototype.applyGlobalWatchers=function(){var t,e=this._globalWatchArgs;for(t in e)this.watch.apply(this,[t].concat(e[t]))},e.prototype.has=function(t){return t in this._props},e.prototype.get=function(t){return void 0===t?this._props:this._props[t]},e.prototype.set=function(t,e){var n;"string"==typeof t?(n={},n[t]=void 0===e?null:e):n=t,this.setProps(n)},e.prototype.reset=function(t){var e,n=this._props,r={};for(e in n)r[e]=void 0;for(e in t)r[e]=t[e];this.setProps(r)},e.prototype.unset=function(t){var e,n,r={};for(e="string"==typeof t?[t]:t,n=0;n<e.length;n++)r[e[n]]=void 0;this.setProps(r)},e.prototype.setProps=function(t){var e,n,r={},i=0;for(e in t)"object"!=typeof(n=t[e])&&n===this._props[e]||(r[e]=n,i++);if(i){this.trigger("before:batchChange",r);for(e in r)n=r[e],this.trigger("before:change",e,n),this.trigger("before:change:"+e,n);for(e in r)n=r[e],void 0===n?delete this._props[e]:this._props[e]=n,this.trigger("change:"+e,n),this.trigger("change",e,n);this.trigger("batchChange",r)}},e.prototype.watch=function(t,e,n,r){var i=this;this.unwatch(t),this._watchers[t]=this._watchDeps(e,function(e){var r=n.call(i,e);r&&r.then?(i.unset(t),r.then(function(e){i.set(t,e)})):i.set(t,r)},function(e){i.unset(t),r&&r.call(i,e)})},e.prototype.unwatch=function(t){var e=this._watchers[t];e&&(delete this._watchers[t],e.teardown())},e.prototype._watchDeps=function(t,e,n){var r=this,i=0,o=t.length,s=0,a={},l=[],u=!1,d=function(t,e,r){1===++i&&s===o&&(u=!0,n(a),u=!1)},c=function(t,n,r){void 0===n?(r||void 0===a[t]||s--,delete a[t]):(r||void 0!==a[t]||s++,a[t]=n),--i||s===o&&(u||e(a))},p=function(t,e){r.on(t,e),l.push([t,e])};return t.forEach(function(t){var e=!1;"?"===t.charAt(0)&&(t=t.substring(1),e=!0),p("before:change:"+t,function(t){d()}),p("change:"+t,function(n){c(t,n,e)})}),t.forEach(function(t){var e=!1;"?"===t.charAt(0)&&(t=t.substring(1),e=!0),r.has(t)?(a[t]=r.get(t),s++):e&&s++}),s===o&&e(a),{teardown:function(){for(var t=0;t<l.length;t++)r.off(l[t][0],l[t][1]);l=null,s===o&&n()},flash:function(){s===o&&(n(),e(a))}}},e.prototype.flash=function(t){var e=this._watchers[t];e&&e.flash()},e}(i.default);e.default=a,a.prototype._globalWatchArgs={},o.default.mixInto(a),s.default.mixInto(a)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=n(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.defineStandardProps=function(t){var e=this.prototype;e.hasOwnProperty("standardPropMap")||(e.standardPropMap=Object.create(e.standardPropMap)),i.copyOwnProps(t,e.standardPropMap)},e.copyVerbatimStandardProps=function(t,e){var n,r=this.prototype.standardPropMap;for(n in r)null!=t[n]&&!0===r[n]&&(e[n]=t[n])},e.prototype.applyProps=function(t){var e,n=this.standardPropMap,r={},i={};for(e in t)!0===n[e]?this[e]=t[e]:!1===n[e]?r[e]=t[e]:i[e]=t[e];return this.applyMiscProps(i),this.applyManualStandardProps(r)},e.prototype.applyManualStandardProps=function(t){return!0},e.prototype.applyMiscProps=function(t){},e.prototype.isStandardProp=function(t){return t in this.standardPropMap},e}(o.default);e.default=s,s.prototype.standardPropMap={}},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){this.def=t,this.dateProfile=e}return t.prototype.toLegacy=function(){var t=this.dateProfile,e=this.def.toLegacy();return e.start=t.start.clone(),e.end=t.end?t.end.clone():null,e},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(0),s=n(37),a=n(53),l=n(16),u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.isAllDay=function(){return!this.startTime&&!this.endTime},e.prototype.buildInstances=function(t){for(var e,n,r,i=this.source.calendar,o=t.getStart(),s=t.getEnd(),u=[];o.isBefore(s);)this.dowHash&&!this.dowHash[o.day()]||(e=i.applyTimezone(o),n=e.clone(),r=null,this.startTime?n.time(this.startTime):n.stripTime(),this.endTime&&(r=e.clone().time(this.endTime)),u.push(new a.default(this,new l.default(n,r,i)))),o.add(1,"days");return u},e.prototype.setDow=function(t){this.dowHash||(this.dowHash={});for(var e=0;e<t.length;e++)this.dowHash[t[e]]=!0},e.prototype.clone=function(){var e=t.prototype.clone.call(this);return e.startTime&&(e.startTime=o.duration(this.startTime)),e.endTime&&(e.endTime=o.duration(this.endTime)),this.dowHash&&(e.dowHash=i.extend({},this.dowHash)),e},e}(s.default);e.default=u,u.prototype.applyProps=function(t){var e=s.default.prototype.applyProps.call(this,t);return t.start&&(this.startTime=o.duration(t.start)),t.end&&(this.endTime=o.duration(t.end)),t.dow&&this.setDow(t.dow),e},u.defineStandardProps({start:!1,end:!1,dow:!1})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(0),i=n(4),o=n(5),s=function(){function t(t){this._view=t}return t.prototype.opt=function(t){return this._view.opt(t)},t.prototype.trimHiddenDays=function(t){return this._view.trimHiddenDays(t)},t.prototype.msToUtcMoment=function(t,e){return this._view.calendar.msToUtcMoment(t,e)},t.prototype.buildPrev=function(t){var e=t.date.clone().startOf(t.currentRangeUnit).subtract(t.dateIncrement);return this.build(e,-1)},t.prototype.buildNext=function(t){var e=t.date.clone().startOf(t.currentRangeUnit).add(t.dateIncrement);return this.build(e,1)},t.prototype.build=function(t,e,n){void 0===n&&(n=!1);var i,o,s,a,l,u,d=!t.hasTime(),c=null,p=null;return i=this.buildValidRange(),i=this.trimHiddenDays(i),n&&(t=this.msToUtcMoment(i.constrainDate(t),d)),o=this.buildCurrentRangeInfo(t,e),s=/^(year|month|week|day)$/.test(o.unit),a=this.buildRenderRange(this.trimHiddenDays(o.unzonedRange),o.unit,s),a=this.trimHiddenDays(a),l=a.clone(),this.opt("showNonCurrentDates")||(l=l.intersect(o.unzonedRange)),c=r.duration(this.opt("minTime")),p=r.duration(this.opt("maxTime")),l=this.adjustActiveRange(l,c,p),l=l.intersect(i),l&&(t=this.msToUtcMoment(l.constrainDate(t),d)),u=o.unzonedRange.intersectsWith(i),{validUnzonedRange:i,currentUnzonedRange:o.unzonedRange,currentRangeUnit:o.unit,isRangeAllDay:s,activeUnzonedRange:l,renderUnzonedRange:a,minTime:c,maxTime:p,isValid:u,date:t,dateIncrement:this.buildDateIncrement(o.duration)}},t.prototype.buildValidRange=function(){return this._view.getUnzonedRangeOption("validRange",this._view.calendar.getNow())||new o.default},t.prototype.buildCurrentRangeInfo=function(t,e){var n,r=this._view.viewSpec,o=null,s=null,a=null;return r.duration?(o=r.duration,s=r.durationUnit,a=this.buildRangeFromDuration(t,e,o,s)):(n=this.opt("dayCount"))?(s="day",a=this.buildRangeFromDayCount(t,e,n)):(a=this.buildCustomVisibleRange(t))?s=i.computeGreatestUnit(a.getStart(),a.getEnd()):(o=this.getFallbackDuration(),s=i.computeGreatestUnit(o),a=this.buildRangeFromDuration(t,e,o,s)),{duration:o,unit:s,unzonedRange:a}},t.prototype.getFallbackDuration=function(){return r.duration({days:1})},t.prototype.adjustActiveRange=function(t,e,n){var r=t.getStart(),i=t.getEnd();return this._view.usesMinMaxTime&&(e<0&&r.time(0).add(e),n>864e5&&i.time(n-864e5)),new o.default(r,i)},t.prototype.buildRangeFromDuration=function(t,e,n,s){function a(){d=t.clone().startOf(h),c=d.clone().add(n),p=new o.default(d,c)}var l,u,d,c,p,h=this.opt("dateAlignment");return h||(l=this.opt("dateIncrement"),l?(u=r.duration(l),h=u<n?i.computeDurationGreatestUnit(u,l):s):h=s),n.as("days")<=1&&this._view.isHiddenDay(d)&&(d=this._view.skipHiddenDays(d,e),d.startOf("day")),a(),this.trimHiddenDays(p)||(t=this._view.skipHiddenDays(t,e),a()),p},t.prototype.buildRangeFromDayCount=function(t,e,n){var r,i,s=this.opt("dateAlignment"),a=0;if(s||-1!==e){r=t.clone(),s&&r.startOf(s),r.startOf("day"),r=this._view.skipHiddenDays(r),i=r.clone();do{i.add(1,"day"),this._view.isHiddenDay(i)||a++}while(a<n)}else{i=t.clone().startOf("day").add(1,"day"),i=this._view.skipHiddenDays(i,-1,!0),r=i.clone();do{r.add(-1,"day"),this._view.isHiddenDay(r)||a++}while(a<n)}return new o.default(r,i)},t.prototype.buildCustomVisibleRange=function(t){var e=this._view.getUnzonedRangeOption("visibleRange",this._view.calendar.applyTimezone(t));return!e||null!=e.startMs&&null!=e.endMs?e:null},t.prototype.buildRenderRange=function(t,e,n){return t.clone()},t.prototype.buildDateIncrement=function(t){var e,n=this.opt("dateIncrement");return n?r.duration(n):(e=this.opt("dateAlignment"))?r.duration(1,e):t||r.duration({days:1})},t}();e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(21),a=n(6),l=n(9),u=function(t){function e(e){var n=t.call(this,e)||this;return n.eventDefs=[],n}return r.__extends(e,t),e.parse=function(t,e){var n;return i.isArray(t.events)?n=t:i.isArray(t)&&(n={events:t}),!!n&&a.default.parse.call(this,n,e)},e.prototype.setRawEventDefs=function(t){this.rawEventDefs=t,this.eventDefs=this.parseEventDefs(t)},e.prototype.fetch=function(t,e,n){var r,i=this.eventDefs;if(null!=this.currentTimezone&&this.currentTimezone!==n)for(r=0;r<i.length;r++)i[r]instanceof l.default&&i[r].rezone();return this.currentTimezone=n,s.default.resolve(i)},e.prototype.addEventDef=function(t){this.eventDefs.push(t)},e.prototype.removeEventDefsById=function(t){return o.removeMatching(this.eventDefs,function(e){return e.id===t})},e.prototype.removeAllEventDefs=function(){this.eventDefs=[]},e.prototype.getPrimitive=function(){return this.rawEventDefs},e.prototype.applyManualStandardProps=function(e){var n=t.prototype.applyManualStandardProps.call(this,e);return this.setRawEventDefs(e.events),n},e}(a.default);e.default=u,u.defineStandardProps({events:!1})},function(t,e,n){function r(t,e){a[t]=e}function i(t){return t?!0===t?s.default:a[t]:o.default}Object.defineProperty(e,"__esModule",{value:!0});var o=n(221),s=n(222),a={};e.defineThemeSystem=r,e.getThemeSystemClass=i},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=function(){function t(t){this.isHorizontal=!1,this.isVertical=!1,this.els=r(t.els),this.isHorizontal=t.isHorizontal,this.isVertical=t.isVertical,this.forcedOffsetParentEl=t.offsetParent?r(t.offsetParent):null}return t.prototype.build=function(){var t=this.forcedOffsetParentEl;!t&&this.els.length>0&&(t=this.els.eq(0).offsetParent()),this.origin=t?t.offset():null,this.boundingRect=this.queryBoundingRect(),this.isHorizontal&&this.buildElHorizontals(),this.isVertical&&this.buildElVerticals()},t.prototype.clear=function(){this.origin=null,this.boundingRect=null,this.lefts=null,this.rights=null,this.tops=null,this.bottoms=null},t.prototype.ensureBuilt=function(){this.origin||this.build()},t.prototype.buildElHorizontals=function(){var t=[],e=[];this.els.each(function(n,i){var o=r(i),s=o.offset().left,a=o.outerWidth();t.push(s),e.push(s+a)}),this.lefts=t,this.rights=e},t.prototype.buildElVerticals=function(){var t=[],e=[];this.els.each(function(n,i){var o=r(i),s=o.offset().top,a=o.outerHeight();t.push(s),e.push(s+a)}),this.tops=t,this.bottoms=e},t.prototype.getHorizontalIndex=function(t){this.ensureBuilt();var e,n=this.lefts,r=this.rights,i=n.length;for(e=0;e<i;e++)if(t>=n[e]&&t<r[e])return e},t.prototype.getVerticalIndex=function(t){this.ensureBuilt();var e,n=this.tops,r=this.bottoms,i=n.length;for(e=0;e<i;e++)if(t>=n[e]&&t<r[e])return e},t.prototype.getLeftOffset=function(t){return this.ensureBuilt(),this.lefts[t]},t.prototype.getLeftPosition=function(t){return this.ensureBuilt(),this.lefts[t]-this.origin.left},t.prototype.getRightOffset=function(t){return this.ensureBuilt(),this.rights[t]},t.prototype.getRightPosition=function(t){return this.ensureBuilt(),this.rights[t]-this.origin.left},t.prototype.getWidth=function(t){return this.ensureBuilt(),this.rights[t]-this.lefts[t]},t.prototype.getTopOffset=function(t){return this.ensureBuilt(),this.tops[t]},t.prototype.getTopPosition=function(t){return this.ensureBuilt(),this.tops[t]-this.origin.top},t.prototype.getBottomOffset=function(t){return this.ensureBuilt(),this.bottoms[t]},t.prototype.getBottomPosition=function(t){return this.ensureBuilt(),this.bottoms[t]-this.origin.top},t.prototype.getHeight=function(t){return this.ensureBuilt(),this.bottoms[t]-this.tops[t]},t.prototype.queryBoundingRect=function(){var t;return this.els.length>0&&(t=i.getScrollParent(this.els.eq(0)),!t.is(document)&&!t.is("html,body"))?i.getClientRect(t):null},t.prototype.isPointInBounds=function(t,e){return this.isLeftInBounds(t)&&this.isTopInBounds(e)},t.prototype.isLeftInBounds=function(t){return!this.boundingRect||t>=this.boundingRect.left&&t<this.boundingRect.right},t.prototype.isTopInBounds=function(t){return!this.boundingRect||t>=this.boundingRect.top&&t<this.boundingRect.bottom},t}();e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=n(7),s=n(23),a=function(){function t(t){this.isInteracting=!1,this.isDistanceSurpassed=!1,this.isDelayEnded=!1,this.isDragging=!1,this.isTouch=!1,this.isGeneric=!1,this.shouldCancelTouchScroll=!0,this.scrollAlwaysKills=!1,this.isAutoScroll=!1,this.scrollSensitivity=30,this.scrollSpeed=200,this.scrollIntervalMs=50,this.options=t||{}}return t.prototype.startInteraction=function(t,e){if(void 0===e&&(e={}),"mousedown"===t.type){if(s.default.get().shouldIgnoreMouse())return;if(!i.isPrimaryMouseButton(t))return;t.preventDefault()}this.isInteracting||(this.delay=i.firstDefined(e.delay,this.options.delay,0),this.minDistance=i.firstDefined(e.distance,this.options.distance,0),this.subjectEl=this.options.subjectEl,i.preventSelection(r("body")),this.isInteracting=!0,this.isTouch=i.getEvIsTouch(t),this.isGeneric="dragstart"===t.type,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.originX=i.getEvX(t),this.originY=i.getEvY(t),this.scrollEl=i.getScrollParent(r(t.target)),this.bindHandlers(),this.initAutoScroll(),this.handleInteractionStart(t),this.startDelay(t),this.minDistance||this.handleDistanceSurpassed(t))},t.prototype.handleInteractionStart=function(t){this.trigger("interactionStart",t)},t.prototype.endInteraction=function(t,e){this.isInteracting&&(this.endDrag(t),this.delayTimeoutId&&(clearTimeout(this.delayTimeoutId),this.delayTimeoutId=null),this.destroyAutoScroll(),this.unbindHandlers(),this.isInteracting=!1,this.handleInteractionEnd(t,e),i.allowSelection(r("body")))},t.prototype.handleInteractionEnd=function(t,e){this.trigger("interactionEnd",t,e||!1)},t.prototype.bindHandlers=function(){var t=s.default.get();this.isGeneric?this.listenTo(r(document),{drag:this.handleMove,dragstop:this.endInteraction}):this.isTouch?this.listenTo(t,{touchmove:this.handleTouchMove,touchend:this.endInteraction,scroll:this.handleTouchScroll}):this.listenTo(t,{mousemove:this.handleMouseMove,mouseup:this.endInteraction}),this.listenTo(t,{selectstart:i.preventDefault,contextmenu:i.preventDefault})},t.prototype.unbindHandlers=function(){this.stopListeningTo(s.default.get()),this.stopListeningTo(r(document))},t.prototype.startDrag=function(t,e){this.startInteraction(t,e),this.isDragging||(this.isDragging=!0,this.handleDragStart(t))},t.prototype.handleDragStart=function(t){this.trigger("dragStart",t)},t.prototype.handleMove=function(t){var e=i.getEvX(t)-this.originX,n=i.getEvY(t)-this.originY,r=this.minDistance;this.isDistanceSurpassed||e*e+n*n>=r*r&&this.handleDistanceSurpassed(t),this.isDragging&&this.handleDrag(e,n,t)},t.prototype.handleDrag=function(t,e,n){this.trigger("drag",t,e,n),this.updateAutoScroll(n)},t.prototype.endDrag=function(t){this.isDragging&&(this.isDragging=!1,this.handleDragEnd(t))},t.prototype.handleDragEnd=function(t){this.trigger("dragEnd",t)},t.prototype.startDelay=function(t){var e=this;this.delay?this.delayTimeoutId=setTimeout(function(){e.handleDelayEnd(t)},this.delay):this.handleDelayEnd(t)},t.prototype.handleDelayEnd=function(t){this.isDelayEnded=!0,this.isDistanceSurpassed&&this.startDrag(t)},t.prototype.handleDistanceSurpassed=function(t){this.isDistanceSurpassed=!0,this.isDelayEnded&&this.startDrag(t)},t.prototype.handleTouchMove=function(t){this.isDragging&&this.shouldCancelTouchScroll&&t.preventDefault(),this.handleMove(t)},t.prototype.handleMouseMove=function(t){this.handleMove(t)},t.prototype.handleTouchScroll=function(t){this.isDragging&&!this.scrollAlwaysKills||this.endInteraction(t,!0)},t.prototype.trigger=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];this.options[t]&&this.options[t].apply(this,e),this["_"+t]&&this["_"+t].apply(this,e)},t.prototype.initAutoScroll=function(){var t=this.scrollEl;this.isAutoScroll=this.options.scroll&&t&&!t.is(window)&&!t.is(document),this.isAutoScroll&&this.listenTo(t,"scroll",i.debounce(this.handleDebouncedScroll,100))},t.prototype.destroyAutoScroll=function(){this.endAutoScroll(),this.isAutoScroll&&this.stopListeningTo(this.scrollEl,"scroll")},t.prototype.computeScrollBounds=function(){this.isAutoScroll&&(this.scrollBounds=i.getOuterRect(this.scrollEl))},t.prototype.updateAutoScroll=function(t){var e,n,r,o,s=this.scrollSensitivity,a=this.scrollBounds,l=0,u=0;a&&(e=(s-(i.getEvY(t)-a.top))/s,n=(s-(a.bottom-i.getEvY(t)))/s,r=(s-(i.getEvX(t)-a.left))/s,o=(s-(a.right-i.getEvX(t)))/s,e>=0&&e<=1?l=e*this.scrollSpeed*-1:n>=0&&n<=1&&(l=n*this.scrollSpeed),r>=0&&r<=1?u=r*this.scrollSpeed*-1:o>=0&&o<=1&&(u=o*this.scrollSpeed)),this.setScrollVel(l,u)},t.prototype.setScrollVel=function(t,e){this.scrollTopVel=t,this.scrollLeftVel=e,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(i.proxy(this,"scrollIntervalFunc"),this.scrollIntervalMs))},t.prototype.constrainScrollVel=function(){var t=this.scrollEl;this.scrollTopVel<0?t.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?t.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},t.prototype.scrollIntervalFunc=function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.endAutoScroll()},t.prototype.endAutoScroll=function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.handleScrollEnd())},t.prototype.handleDebouncedScroll=function(){this.scrollIntervalId||this.handleScrollEnd()},t.prototype.handleScrollEnd=function(){},t}();e.default=a,o.default.mixInto(a)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=n(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.updateDayTable=function(){for(var t,e,n,r=this,i=r.view,o=i.calendar,s=o.msToUtcMoment(r.dateProfile.renderUnzonedRange.startMs,!0),a=o.msToUtcMoment(r.dateProfile.renderUnzonedRange.endMs,!0),l=-1,u=[],d=[];s.isBefore(a);)i.isHiddenDay(s)?u.push(l+.5):(l++,u.push(l),d.push(s.clone())),s.add(1,"days");if(this.breakOnWeeks){for(e=d[0].day(),t=1;t<d.length&&d[t].day()!==e;t++);n=Math.ceil(d.length/t)}else n=1,t=d.length;this.dayDates=d,this.dayIndices=u,this.daysPerRow=t,this.rowCnt=n,this.updateDayTableCols()},e.prototype.updateDayTableCols=function(){this.colCnt=this.computeColCnt(),this.colHeadFormat=this.opt("columnHeaderFormat")||this.opt("columnFormat")||this.computeColHeadFormat()},e.prototype.computeColCnt=function(){return this.daysPerRow},e.prototype.getCellDate=function(t,e){return this.dayDates[this.getCellDayIndex(t,e)].clone()},e.prototype.getCellRange=function(t,e){var n=this.getCellDate(t,e);return{start:n,end:n.clone().add(1,"days")}},e.prototype.getCellDayIndex=function(t,e){return t*this.daysPerRow+this.getColDayIndex(e)},e.prototype.getColDayIndex=function(t){return this.isRTL?this.colCnt-1-t:t},e.prototype.getDateDayIndex=function(t){var e=this.dayIndices,n=t.diff(this.dayDates[0],"days");return n<0?e[0]-1:n>=e.length?e[e.length-1]+1:e[n]},e.prototype.computeColHeadFormat=function(){return this.rowCnt>1||this.colCnt>10?"ddd":this.colCnt>1?this.opt("dayOfMonthFormat"):"dddd"},e.prototype.sliceRangeByRow=function(t){var e,n,r,i,o,s=this.daysPerRow,a=this.view.computeDayRange(t),l=this.getDateDayIndex(a.start),u=this.getDateDayIndex(a.end.clone().subtract(1,"days")),d=[];for(e=0;e<this.rowCnt;e++)n=e*s,r=n+s-1,i=Math.max(l,n),o=Math.min(u,r),i=Math.ceil(i),o=Math.floor(o),i<=o&&d.push({row:e,firstRowDayIndex:i-n,lastRowDayIndex:o-n,isStart:i===l,isEnd:o===u});return d},e.prototype.sliceRangeByDay=function(t){var e,n,r,i,o,s,a=this.daysPerRow,l=this.view.computeDayRange(t),u=this.getDateDayIndex(l.start),d=this.getDateDayIndex(l.end.clone().subtract(1,"days")),c=[];for(e=0;e<this.rowCnt;e++)for(n=e*a,r=n+a-1,i=n;i<=r;i++)o=Math.max(u,i),s=Math.min(d,i),o=Math.ceil(o),s=Math.floor(s),o<=s&&c.push({row:e,firstRowDayIndex:o-n,lastRowDayIndex:s-n,isStart:o===u,isEnd:s===d});return c},e.prototype.renderHeadHtml=function(){var t=this.view.calendar.theme;return'<div class="fc-row '+t.getClass("headerRow")+'"><table class="'+t.getClass("tableGrid")+'"><thead>'+this.renderHeadTrHtml()+"</thead></table></div>"},e.prototype.renderHeadIntroHtml=function(){return this.renderIntroHtml()},e.prototype.renderHeadTrHtml=function(){return"<tr>"+(this.isRTL?"":this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():"")+"</tr>"},e.prototype.renderHeadDateCellsHtml=function(){var t,e,n=[];for(t=0;t<this.colCnt;t++)e=this.getCellDate(0,t),n.push(this.renderHeadDateCellHtml(e));return n.join("")},e.prototype.renderHeadDateCellHtml=function(t,e,n){var r,o=this,s=o.view,a=o.dateProfile.activeUnzonedRange.containsDate(t),l=["fc-day-header",s.calendar.theme.getClass("widgetHeader")];return r="function"==typeof o.opt("columnHeaderHtml")?o.opt("columnHeaderHtml")(t):"function"==typeof o.opt("columnHeaderText")?i.htmlEscape(o.opt("columnHeaderText")(t)):i.htmlEscape(t.format(o.colHeadFormat)),1===o.rowCnt?l=l.concat(o.getDayClasses(t,!0)):l.push("fc-"+i.dayIDs[t.day()]),'<th class="'+l.join(" ")+'"'+(1===(a&&o.rowCnt)?' data-date="'+t.format("YYYY-MM-DD")+'"':"")+(e>1?' colspan="'+e+'"':"")+(n?" "+n:"")+">"+(a?s.buildGotoAnchorHtml({date:t,forceOff:o.rowCnt>1||1===o.colCnt},r):r)+"</th>"},e.prototype.renderBgTrHtml=function(t){return"<tr>"+(this.isRTL?"":this.renderBgIntroHtml(t))+this.renderBgCellsHtml(t)+(this.isRTL?this.renderBgIntroHtml(t):"")+"</tr>"},e.prototype.renderBgIntroHtml=function(t){return this.renderIntroHtml()},e.prototype.renderBgCellsHtml=function(t){var e,n,r=[];for(e=0;e<this.colCnt;e++)n=this.getCellDate(t,e),r.push(this.renderBgCellHtml(n));return r.join("")},e.prototype.renderBgCellHtml=function(t,e){var n=this,r=n.view,i=n.dateProfile.activeUnzonedRange.containsDate(t),o=n.getDayClasses(t);return o.unshift("fc-day",r.calendar.theme.getClass("widgetContent")),'<td class="'+o.join(" ")+'"'+(i?' data-date="'+t.format("YYYY-MM-DD")+'"':"")+(e?" "+e:"")+"></td>"},e.prototype.renderIntroHtml=function(){},e.prototype.bookendCells=function(t){var e=this.renderIntroHtml();e&&(this.isRTL?t.append(e):t.prepend(e))},e}(o.default);e.default=s},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){this.component=t,this.fillRenderer=e}
+return t.prototype.render=function(t){var e=this.component,n=e._getDateProfile().activeUnzonedRange,r=t.buildEventInstanceGroup(e.hasAllDayBusinessHours,n),i=r?e.eventRangesToEventFootprints(r.sliceRenderRanges(n)):[];this.renderEventFootprints(i)},t.prototype.renderEventFootprints=function(t){var e=this.component.eventFootprintsToSegs(t);this.renderSegs(e),this.segs=e},t.prototype.renderSegs=function(t){this.fillRenderer&&this.fillRenderer.renderSegs("businessHours",t,{getClasses:function(t){return["fc-nonbusiness","fc-bgevent"]}})},t.prototype.unrender=function(){this.fillRenderer&&this.fillRenderer.unrender("businessHours"),this.segs=null},t.prototype.getSegs=function(){return this.segs||[]},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=function(){function t(t){this.fillSegTag="div",this.component=t,this.elsByFill={}}return t.prototype.renderFootprint=function(t,e,n){this.renderSegs(t,this.component.componentFootprintToSegs(e),n)},t.prototype.renderSegs=function(t,e,n){var r;return e=this.buildSegEls(t,e,n),r=this.attachSegEls(t,e),r&&this.reportEls(t,r),e},t.prototype.unrender=function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},t.prototype.buildSegEls=function(t,e,n){var i,o=this,s="",a=[];if(e.length){for(i=0;i<e.length;i++)s+=this.buildSegHtml(t,e[i],n);r(s).each(function(t,i){var s=e[t],l=r(i);n.filterEl&&(l=n.filterEl(s,l)),l&&(l=r(l),l.is(o.fillSegTag)&&(s.el=l,a.push(s)))})}return a},t.prototype.buildSegHtml=function(t,e,n){var r=n.getClasses?n.getClasses(e):[],o=i.cssToStr(n.getCss?n.getCss(e):{});return"<"+this.fillSegTag+(r.length?' class="'+r.join(" ")+'"':"")+(o?' style="'+o+'"':"")+" />"},t.prototype.attachSegEls=function(t,e){},t.prototype.reportEls=function(t,e){this.elsByFill[t]?this.elsByFill[t]=this.elsByFill[t].add(e):this.elsByFill[t]=r(e)},t}();e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(34),o=n(6),s=function(){function t(t,e){this.view=t._getView(),this.component=t,this.eventRenderer=e}return t.prototype.renderComponentFootprint=function(t){this.renderEventFootprints([this.fabricateEventFootprint(t)])},t.prototype.renderEventDraggingFootprints=function(t,e,n){this.renderEventFootprints(t,e,"fc-dragging",n?null:this.view.opt("dragOpacity"))},t.prototype.renderEventResizingFootprints=function(t,e,n){this.renderEventFootprints(t,e,"fc-resizing")},t.prototype.renderEventFootprints=function(t,e,n,r){var i,o=this.component.eventFootprintsToSegs(t),s="fc-helper "+(n||"");for(o=this.eventRenderer.renderFgSegEls(o),i=0;i<o.length;i++)o[i].el.addClass(s);if(null!=r)for(i=0;i<o.length;i++)o[i].el.css("opacity",r);this.helperEls=this.renderSegs(o,e)},t.prototype.renderSegs=function(t,e){},t.prototype.unrender=function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},t.prototype.fabricateEventFootprint=function(t){var e,n=this.view.calendar,s=n.footprintToDateProfile(t),a=new r.default(new o.default(n));return a.dateProfile=s,e=a.buildInstance(),new i.default(t,a,e)},t}();e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(23),o=n(14),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.bindToEl=function(t){var e=this.component;e.bindSegHandlerToEl(t,"click",this.handleClick.bind(this)),e.bindSegHandlerToEl(t,"mouseenter",this.handleMouseover.bind(this)),e.bindSegHandlerToEl(t,"mouseleave",this.handleMouseout.bind(this))},e.prototype.handleClick=function(t,e){!1===this.component.publiclyTrigger("eventClick",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,this.view]})&&e.preventDefault()},e.prototype.handleMouseover=function(t,e){i.default.get().shouldIgnoreMouse()||this.mousedOverSeg||(this.mousedOverSeg=t,this.view.isEventDefResizable(t.footprint.eventDef)&&t.el.addClass("fc-allow-mouse-resize"),this.component.publiclyTrigger("eventMouseover",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,this.view]}))},e.prototype.handleMouseout=function(t,e){this.mousedOverSeg&&(this.mousedOverSeg=null,this.view.isEventDefResizable(t.footprint.eventDef)&&t.el.removeClass("fc-allow-mouse-resize"),this.component.publiclyTrigger("eventMouseout",{context:t.el[0],args:[t.footprint.getEventLegacy(),e||{},this.view]}))},e.prototype.end=function(){this.mousedOverSeg&&this.handleMouseout(this.mousedOverSeg)},e}(o.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(15),o=n(237),s=n(236),a=n(64),l=n(235),u=n(234),d=n(233),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(i.default);e.default=c,c.prototype.dateClickingClass=o.default,c.prototype.dateSelectingClass=s.default,c.prototype.eventPointingClass=a.default,c.prototype.eventDraggingClass=l.default,c.prototype.eventResizingClass=u.default,c.prototype.externalDroppingClass=d.default},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(58),a=n(227),l=n(5),u=n(12),d=n(34),c=n(61),p=n(65),h=n(42),f=n(60),g=n(243),v=n(244),y=n(245),m=function(t){function e(e){var n=t.call(this,e)||this;return n.cellWeekNumbersVisible=!1,n.bottomCoordPadding=0,n.isRigid=!1,n.hasAllDayBusinessHours=!0,n}return r.__extends(e,t),e.prototype.componentFootprintToSegs=function(t){var e,n,r=this.sliceRangeByRow(t.unzonedRange);for(e=0;e<r.length;e++)n=r[e],this.isRTL?(n.leftCol=this.daysPerRow-1-n.lastRowDayIndex,n.rightCol=this.daysPerRow-1-n.firstRowDayIndex):(n.leftCol=n.firstRowDayIndex,n.rightCol=n.lastRowDayIndex);return r},e.prototype.renderDates=function(t){this.dateProfile=t,this.updateDayTable(),this.renderGrid()},e.prototype.unrenderDates=function(){this.removeSegPopover()},e.prototype.renderGrid=function(){var t,e,n=this.view,r=this.rowCnt,i=this.colCnt,o="";for(this.headContainerEl&&this.headContainerEl.html(this.renderHeadHtml()),t=0;t<r;t++)o+=this.renderDayRowHtml(t,this.isRigid);for(this.el.html(o),this.rowEls=this.el.find(".fc-row"),this.cellEls=this.el.find(".fc-day, .fc-disabled-day"),this.rowCoordCache=new s.default({els:this.rowEls,isVertical:!0}),this.colCoordCache=new s.default({els:this.cellEls.slice(0,this.colCnt),isHorizontal:!0}),t=0;t<r;t++)for(e=0;e<i;e++)this.publiclyTrigger("dayRender",{context:n,args:[this.getCellDate(t,e),this.getCellEl(t,e),n]})},e.prototype.renderDayRowHtml=function(t,e){var n=this.view.calendar.theme,r=["fc-row","fc-week",n.getClass("dayRow")];return e&&r.push("fc-rigid"),'<div class="'+r.join(" ")+'"><div class="fc-bg"><table class="'+n.getClass("tableGrid")+'">'+this.renderBgTrHtml(t)+'</table></div><div class="fc-content-skeleton"><table>'+(this.getIsNumbersVisible()?"<thead>"+this.renderNumberTrHtml(t)+"</thead>":"")+"</table></div></div>"},e.prototype.getIsNumbersVisible=function(){return this.getIsDayNumbersVisible()||this.cellWeekNumbersVisible},e.prototype.getIsDayNumbersVisible=function(){return this.rowCnt>1},e.prototype.renderNumberTrHtml=function(t){return"<tr>"+(this.isRTL?"":this.renderNumberIntroHtml(t))+this.renderNumberCellsHtml(t)+(this.isRTL?this.renderNumberIntroHtml(t):"")+"</tr>"},e.prototype.renderNumberIntroHtml=function(t){return this.renderIntroHtml()},e.prototype.renderNumberCellsHtml=function(t){var e,n,r=[];for(e=0;e<this.colCnt;e++)n=this.getCellDate(t,e),r.push(this.renderNumberCellHtml(n));return r.join("")},e.prototype.renderNumberCellHtml=function(t){var e,n,r=this.view,i="",o=this.dateProfile.activeUnzonedRange.containsDate(t),s=this.getIsDayNumbersVisible()&&o;return s||this.cellWeekNumbersVisible?(e=this.getDayClasses(t),e.unshift("fc-day-top"),this.cellWeekNumbersVisible&&(n="ISO"===t._locale._fullCalendar_weekCalc?1:t._locale.firstDayOfWeek()),i+='<td class="'+e.join(" ")+'"'+(o?' data-date="'+t.format()+'"':"")+">",this.cellWeekNumbersVisible&&t.day()===n&&(i+=r.buildGotoAnchorHtml({date:t,type:"week"},{class:"fc-week-number"},t.format("w"))),s&&(i+=r.buildGotoAnchorHtml(t,{class:"fc-day-number"},t.format("D"))),i+="</td>"):"<td/>"},e.prototype.prepareHits=function(){this.colCoordCache.build(),this.rowCoordCache.build(),this.rowCoordCache.bottoms[this.rowCnt-1]+=this.bottomCoordPadding},e.prototype.releaseHits=function(){this.colCoordCache.clear(),this.rowCoordCache.clear()},e.prototype.queryHit=function(t,e){if(this.colCoordCache.isLeftInBounds(t)&&this.rowCoordCache.isTopInBounds(e)){var n=this.colCoordCache.getHorizontalIndex(t),r=this.rowCoordCache.getVerticalIndex(e);if(null!=r&&null!=n)return this.getCellHit(r,n)}},e.prototype.getHitFootprint=function(t){var e=this.getCellRange(t.row,t.col);return new u.default(new l.default(e.start,e.end),!0)},e.prototype.getHitEl=function(t){return this.getCellEl(t.row,t.col)},e.prototype.getCellHit=function(t,e){return{row:t,col:e,component:this,left:this.colCoordCache.getLeftOffset(e),right:this.colCoordCache.getRightOffset(e),top:this.rowCoordCache.getTopOffset(t),bottom:this.rowCoordCache.getBottomOffset(t)}},e.prototype.getCellEl=function(t,e){return this.cellEls.eq(t*this.colCnt+e)},e.prototype.executeEventUnrender=function(){this.removeSegPopover(),t.prototype.executeEventUnrender.call(this)},e.prototype.getOwnEventSegs=function(){return t.prototype.getOwnEventSegs.call(this).concat(this.popoverSegs||[])},e.prototype.renderDrag=function(t,e,n){var r;for(r=0;r<t.length;r++)this.renderHighlight(t[r].componentFootprint);if(t.length&&e&&e.component!==this)return this.helperRenderer.renderEventDraggingFootprints(t,e,n),!0},e.prototype.unrenderDrag=function(){this.unrenderHighlight(),this.helperRenderer.unrender()},e.prototype.renderEventResize=function(t,e,n){var r;for(r=0;r<t.length;r++)this.renderHighlight(t[r].componentFootprint);this.helperRenderer.renderEventResizingFootprints(t,e,n)},e.prototype.unrenderEventResize=function(){this.unrenderHighlight(),this.helperRenderer.unrender()},e.prototype.removeSegPopover=function(){this.segPopover&&this.segPopover.hide()},e.prototype.limitRows=function(t){var e,n,r=this.eventRenderer.rowStructs||[];for(e=0;e<r.length;e++)this.unlimitRow(e),!1!==(n=!!t&&("number"==typeof t?t:this.computeRowLevelLimit(e)))&&this.limitRow(e,n)},e.prototype.computeRowLevelLimit=function(t){function e(t,e){o=Math.max(o,i(e).outerHeight())}var n,r,o,s=this.rowEls.eq(t),a=s.height(),l=this.eventRenderer.rowStructs[t].tbodyEl.children();for(n=0;n<l.length;n++)if(r=l.eq(n).removeClass("fc-limited"),o=0,r.find("> td > :first-child").each(e),r.position().top+o>a)return n;return!1},e.prototype.limitRow=function(t,e){var n,r,o,s,a,l,u,d,c,p,h,f,g,v,y,m=this,b=this.eventRenderer.rowStructs[t],w=[],D=0,E=function(n){for(;D<n;)l=m.getCellSegs(t,D,e),l.length&&(c=r[e-1][D],y=m.renderMoreLink(t,D,l),v=i("<div/>").append(y),c.append(v),w.push(v[0])),D++};if(e&&e<b.segLevels.length){for(n=b.segLevels[e-1],r=b.cellMatrix,o=b.tbodyEl.children().slice(e).addClass("fc-limited").get(),s=0;s<n.length;s++){for(a=n[s],E(a.leftCol),d=[],u=0;D<=a.rightCol;)l=this.getCellSegs(t,D,e),d.push(l),u+=l.length,D++;if(u){for(c=r[e-1][a.leftCol],p=c.attr("rowspan")||1,h=[],f=0;f<d.length;f++)g=i('<td class="fc-more-cell"/>').attr("rowspan",p),l=d[f],y=this.renderMoreLink(t,a.leftCol+f,[a].concat(l)),v=i("<div/>").append(y),g.append(v),h.push(g[0]),w.push(g[0]);c.addClass("fc-limited").after(i(h)),o.push(c[0])}}E(this.colCnt),b.moreEls=i(w),b.limitedEls=i(o)}},e.prototype.unlimitRow=function(t){var e=this.eventRenderer.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass("fc-limited"),e.limitedEls=null)},e.prototype.renderMoreLink=function(t,e,n){var r=this,o=this.view;return i('<a class="fc-more"/>').text(this.getMoreLinkText(n.length)).on("click",function(s){var a=r.opt("eventLimitClick"),l=r.getCellDate(t,e),u=i(s.currentTarget),d=r.getCellEl(t,e),c=r.getCellSegs(t,e),p=r.resliceDaySegs(c,l),h=r.resliceDaySegs(n,l);"function"==typeof a&&(a=r.publiclyTrigger("eventLimitClick",{context:o,args:[{date:l.clone(),dayEl:d,moreEl:u,segs:p,hiddenSegs:h},s,o]})),"popover"===a?r.showSegPopover(t,e,u,p):"string"==typeof a&&o.calendar.zoomTo(l,a)})},e.prototype.showSegPopover=function(t,e,n,r){var i,o,s=this,l=this.view,u=n.parent();i=1===this.rowCnt?l.el:this.rowEls.eq(t),o={className:"fc-more-popover "+l.calendar.theme.getClass("popover"),content:this.renderSegPopoverContent(t,e,r),parentEl:l.el,top:i.offset().top,autoHide:!0,viewportConstrain:this.opt("popoverViewportConstrain"),hide:function(){s.popoverSegs&&s.triggerBeforeEventSegsDestroyed(s.popoverSegs),s.segPopover.removeElement(),s.segPopover=null,s.popoverSegs=null}},this.isRTL?o.right=u.offset().left+u.outerWidth()+1:o.left=u.offset().left-1,this.segPopover=new a.default(o),this.segPopover.show(),this.bindAllSegHandlersToEl(this.segPopover.el),this.triggerAfterEventSegsRendered(r)},e.prototype.renderSegPopoverContent=function(t,e,n){var r,s=this.view,a=s.calendar.theme,l=this.getCellDate(t,e).format(this.opt("dayPopoverFormat")),u=i('<div class="fc-header '+a.getClass("popoverHeader")+'"><span class="fc-close '+a.getIconClass("close")+'"></span><span class="fc-title">'+o.htmlEscape(l)+'</span><div class="fc-clear"/></div><div class="fc-body '+a.getClass("popoverContent")+'"><div class="fc-event-container"></div></div>'),d=u.find(".fc-event-container");for(n=this.eventRenderer.renderFgSegEls(n,!0),this.popoverSegs=n,r=0;r<n.length;r++)this.hitsNeeded(),n[r].hit=this.getCellHit(t,e),this.hitsNotNeeded(),d.append(n[r].el);return u},e.prototype.resliceDaySegs=function(t,e){var n,r,o,s=e.clone(),a=s.clone().add(1,"days"),c=new l.default(s,a),p=[];for(n=0;n<t.length;n++)r=t[n],(o=r.footprint.componentFootprint.unzonedRange.intersect(c))&&p.push(i.extend({},r,{footprint:new d.default(new u.default(o,r.footprint.componentFootprint.isAllDay),r.footprint.eventDef,r.footprint.eventInstance),isStart:r.isStart&&o.isStart,isEnd:r.isEnd&&o.isEnd}));return this.eventRenderer.sortEventSegs(p),p},e.prototype.getMoreLinkText=function(t){var e=this.opt("eventLimitText");return"function"==typeof e?e(t):"+"+t+" "+e},e.prototype.getCellSegs=function(t,e,n){for(var r,i=this.eventRenderer.rowStructs[t].segMatrix,o=n||0,s=[];o<i.length;)r=i[o][e],r&&s.push(r),o++;return s},e}(h.default);e.default=m,m.prototype.eventRendererClass=g.default,m.prototype.businessHourRendererClass=c.default,m.prototype.helperRendererClass=v.default,m.prototype.fillRendererClass=y.default,p.default.mixInto(m),f.default.mixInto(m)},function(t,e,n){function r(t){return function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.colWeekNumbersVisible=!1,e}return i.__extends(e,t),e.prototype.renderHeadIntroHtml=function(){var t=this.view;return this.colWeekNumbersVisible?'<th class="fc-week-number '+t.calendar.theme.getClass("widgetHeader")+'" '+t.weekNumberStyleAttr()+"><span>"+s.htmlEscape(this.opt("weekNumberTitle"))+"</span></th>":""},e.prototype.renderNumberIntroHtml=function(t){var e=this.view,n=this.getCellDate(t,0);return this.colWeekNumbersVisible?'<td class="fc-week-number" '+e.weekNumberStyleAttr()+">"+e.buildGotoAnchorHtml({date:n,type:"week",forceOff:1===this.colCnt},n.format("w"))+"</td>":""},e.prototype.renderBgIntroHtml=function(){var t=this.view;return this.colWeekNumbersVisible?'<td class="fc-week-number '+t.calendar.theme.getClass("widgetContent")+'" '+t.weekNumberStyleAttr()+"></td>":""},e.prototype.renderIntroHtml=function(){var t=this.view;return this.colWeekNumbersVisible?'<td class="fc-week-number" '+t.weekNumberStyleAttr()+"></td>":""},e.prototype.getIsNumbersVisible=function(){return d.default.prototype.getIsNumbersVisible.apply(this,arguments)||this.colWeekNumbersVisible},e}(t)}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(3),s=n(4),a=n(41),l=n(43),u=n(68),d=n(66),c=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.dayGrid=r.instantiateDayGrid(),r.dayGrid.isRigid=r.hasRigidRows(),r.opt("weekNumbers")&&(r.opt("weekNumbersWithinDays")?(r.dayGrid.cellWeekNumbersVisible=!0,r.dayGrid.colWeekNumbersVisible=!1):(r.dayGrid.cellWeekNumbersVisible=!1,r.dayGrid.colWeekNumbersVisible=!0)),r.addChild(r.dayGrid),r.scroller=new a.default({overflowX:"hidden",overflowY:"auto"}),r}return i.__extends(e,t),e.prototype.instantiateDayGrid=function(){return new(r(this.dayGridClass))(this)},e.prototype.executeDateRender=function(e){this.dayGrid.breakOnWeeks=/year|month|week/.test(e.currentRangeUnit),t.prototype.executeDateRender.call(this,e)},e.prototype.renderSkeleton=function(){var t,e;this.el.addClass("fc-basic-view").html(this.renderSkeletonHtml()),this.scroller.render(),t=this.scroller.el.addClass("fc-day-grid-container"),e=o('<div class="fc-day-grid" />').appendTo(t),this.el.find(".fc-body > tr > td").append(t),this.dayGrid.headContainerEl=this.el.find(".fc-head-container"),this.dayGrid.setElement(e)},e.prototype.unrenderSkeleton=function(){this.dayGrid.removeElement(),this.scroller.destroy()},e.prototype.renderSkeletonHtml=function(){var t=this.calendar.theme;return'<table class="'+t.getClass("tableGrid")+'">'+(this.opt("columnHeader")?'<thead class="fc-head"><tr><td class="fc-head-container '+t.getClass("widgetHeader")+'">&nbsp;</td></tr></thead>':"")+'<tbody class="fc-body"><tr><td class="'+t.getClass("widgetContent")+'"></td></tr></tbody></table>'},e.prototype.weekNumberStyleAttr=function(){return null!=this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},e.prototype.hasRigidRows=function(){var t=this.opt("eventLimit");return t&&"number"!=typeof t},e.prototype.updateSize=function(e,n,r){var i,o,a=this.opt("eventLimit"),l=this.dayGrid.headContainerEl.find(".fc-row");if(!this.dayGrid.rowEls)return void(n||(i=this.computeScrollerHeight(e),this.scroller.setHeight(i)));t.prototype.updateSize.call(this,e,n,r),this.dayGrid.colWeekNumbersVisible&&(this.weekNumberWidth=s.matchCellWidths(this.el.find(".fc-week-number"))),this.scroller.clear(),s.uncompensateScroll(l),this.dayGrid.removeSegPopover(),a&&"number"==typeof a&&this.dayGrid.limitRows(a),i=this.computeScrollerHeight(e),this.setGridHeight(i,n),a&&"number"!=typeof a&&this.dayGrid.limitRows(a),n||(this.scroller.setHeight(i),o=this.scroller.getScrollbarWidths(),(o.left||o.right)&&(s.compensateScroll(l,o),i=this.computeScrollerHeight(e),this.scroller.setHeight(i)),this.scroller.lockOverflow(o))},e.prototype.computeScrollerHeight=function(t){return t-s.subtractInnerElHeight(this.el,this.scroller.el)},e.prototype.setGridHeight=function(t,e){e?s.undistributeHeight(this.dayGrid.rowEls):s.distributeHeight(this.dayGrid.rowEls,t,!0)},e.prototype.computeInitialDateScroll=function(){return{top:0}},e.prototype.queryDateScroll=function(){return{top:this.scroller.getScrollTop()}},e.prototype.applyDateScroll=function(t){void 0!==t.top&&this.scroller.setScrollTop(t.top)},e}(l.default);e.default=c,c.prototype.dateProfileGeneratorClass=u.default,c.prototype.dayGridClass=d.default},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(5),o=n(55),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.buildRenderRange=function(e,n,r){var o=t.prototype.buildRenderRange.call(this,e,n,r),s=this.msToUtcMoment(o.startMs,r),a=this.msToUtcMoment(o.endMs,r);return/^(year|month)$/.test(n)&&(s.startOf("week"),a.weekday()&&a.add(1,"week").startOf("week")),new i.default(s,a)},e}(o.default);e.default=s},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,n){function r(t,e,n){var r;for(r=0;r<t.length;r++)if(!e(t[r].eventInstance.toLegacy(),n?n.toLegacy():null))return!1;return!0}function i(t,e){var n,r,i,o,s=e.toLegacy();for(n=0;n<t.length;n++){if(r=t[n].eventInstance,i=r.def,!1===(o=i.getOverlap()))return!1;if("function"==typeof o&&!o(r.toLegacy(),s))return!1}return!0}Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),s=n(12),a=n(36),l=n(6),u=n(19),d=function(){function t(t,e){this.eventManager=t,this._calendar=e}return t.prototype.opt=function(t){return this._calendar.opt(t)},t.prototype.isEventInstanceGroupAllowed=function(t){var e,n=t.getEventDef(),r=this.eventRangesToEventFootprints(t.getAllEventRanges()),i=this.getPeerEventInstances(n),o=i.map(u.eventInstanceToEventRange),s=this.eventRangesToEventFootprints(o),a=n.getConstraint(),l=n.getOverlap(),d=this.opt("eventAllow");for(e=0;e<r.length;e++)if(!this.isFootprintAllowed(r[e].componentFootprint,s,a,l,r[e].eventInstance))return!1;if(d)for(e=0;e<r.length;e++)if(!1===d(r[e].componentFootprint.toLegacy(this._calendar),r[e].getEventLegacy()))return!1;return!0},t.prototype.getPeerEventInstances=function(t){return this.eventManager.getEventInstancesWithoutId(t.id)},t.prototype.isSelectionFootprintAllowed=function(t){var e,n=this.eventManager.getEventInstances(),r=n.map(u.eventInstanceToEventRange),i=this.eventRangesToEventFootprints(r);return!!this.isFootprintAllowed(t,i,this.opt("selectConstraint"),this.opt("selectOverlap"))&&(!(e=this.opt("selectAllow"))||!1!==e(t.toLegacy(this._calendar)))},t.prototype.isFootprintAllowed=function(t,e,n,o,s){var a,l;if(null!=n&&(a=this.constraintValToFootprints(n,t.isAllDay),!this.isFootprintWithinConstraints(t,a)))return!1;if(l=this.collectOverlapEventFootprints(e,t),!1===o){if(l.length)return!1}else if("function"==typeof o&&!r(l,o,s))return!1;return!(s&&!i(l,s))},t.prototype.isFootprintWithinConstraints=function(t,e){var n;for(n=0;n<e.length;n++)if(this.footprintContainsFootprint(e[n],t))return!0;return!1},t.prototype.constraintValToFootprints=function(t,e){var n;return"businessHours"===t?this.buildCurrentBusinessFootprints(e):"object"==typeof t?(n=this.parseEventDefToInstances(t),n?this.eventInstancesToFootprints(n):this.parseFootprints(t)):null!=t?(n=this.eventManager.getEventInstancesWithId(t),this.eventInstancesToFootprints(n)):void 0},t.prototype.buildCurrentBusinessFootprints=function(t){var e=this._calendar.view,n=e.get("businessHourGenerator"),r=e.dateProfile.activeUnzonedRange,i=n.buildEventInstanceGroup(t,r);return i?this.eventInstancesToFootprints(i.eventInstances):[]},t.prototype.eventInstancesToFootprints=function(t){var e=t.map(u.eventInstanceToEventRange);return this.eventRangesToEventFootprints(e).map(u.eventFootprintToComponentFootprint)},t.prototype.collectOverlapEventFootprints=function(t,e){var n,r=[];for(n=0;n<t.length;n++)this.footprintsIntersect(e,t[n].componentFootprint)&&r.push(t[n]);return r},t.prototype.parseEventDefToInstances=function(t){var e=this.eventManager,n=a.default.parse(t,new l.default(this._calendar));return!!n&&n.buildInstances(e.currentPeriod.unzonedRange)},t.prototype.eventRangesToEventFootprints=function(t){var e,n=[];for(e=0;e<t.length;e++)n.push.apply(n,this.eventRangeToEventFootprints(t[e]));return n},t.prototype.eventRangeToEventFootprints=function(t){return[u.eventRangeToEventFootprint(t)]},t.prototype.parseFootprints=function(t){var e,n;return t.start&&(e=this._calendar.moment(t.start),e.isValid()||(e=null)),t.end&&(n=this._calendar.moment(t.end),n.isValid()||(n=null)),[new s.default(new o.default(e,n),e&&!e.hasTime()||n&&!n.hasTime())]},t.prototype.footprintContainsFootprint=function(t,e){return t.unzonedRange.containsRange(e.unzonedRange)},t.prototype.footprintsIntersect=function(t,e){return t.unzonedRange.intersectsWith(e.unzonedRange)},t}();e.default=d},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(19),o=n(20),s=n(54),a=n(6),l={start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"},u=function(){function t(t,e){this.rawComplexDef=t,this.calendar=e}return t.prototype.buildEventInstanceGroup=function(t,e){var n,r=this.buildEventDefs(t);if(r.length)return n=new o.default(i.eventDefsToEventInstances(r,e)),n.explicitEventDef=r[0],n},t.prototype.buildEventDefs=function(t){var e,n=this.rawComplexDef,i=[],o=!1,s=[];for(!0===n?i=[{}]:r.isPlainObject(n)?i=[n]:r.isArray(n)&&(i=n,o=!0),e=0;e<i.length;e++)o&&!i[e].dow||s.push(this.buildEventDef(t,i[e]));return s},t.prototype.buildEventDef=function(t,e){var n=r.extend({},l,e);return t&&(n.start=null,n.end=null),s.default.parse(n,new a.default(this.calendar))},t}();e.default=u},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=n(21),s=n(13),a=n(5),l=n(20),u=function(){function t(t,e,n){this.pendingCnt=0,this.freezeDepth=0,this.stuntedReleaseCnt=0,this.releaseCnt=0,this.start=t,this.end=e,this.timezone=n,this.unzonedRange=new a.default(t.clone().stripZone(),e.clone().stripZone()),this.requestsByUid={},this.eventDefsByUid={},this.eventDefsById={},this.eventInstanceGroupsById={}}return t.prototype.isWithinRange=function(t,e){return!t.isBefore(this.start)&&!e.isAfter(this.end)},t.prototype.requestSources=function(t){this.freeze();for(var e=0;e<t.length;e++)this.requestSource(t[e]);this.thaw()},t.prototype.requestSource=function(t){var e=this,n={source:t,status:"pending",eventDefs:null};this.requestsByUid[t.uid]=n,this.pendingCnt+=1,t.fetch(this.start,this.end,this.timezone).then(function(t){"cancelled"!==n.status&&(n.status="completed",n.eventDefs=t,e.addEventDefs(t),e.pendingCnt--,e.tryRelease())},function(){"cancelled"!==n.status&&(n.status="failed",e.pendingCnt--,e.tryRelease())})},t.prototype.purgeSource=function(t){var e=this.requestsByUid[t.uid];e&&(delete this.requestsByUid[t.uid],"pending"===e.status?(e.status="cancelled",this.pendingCnt--,this.tryRelease()):"completed"===e.status&&e.eventDefs.forEach(this.removeEventDef.bind(this)))},t.prototype.purgeAllSources=function(){var t,e,n=this.requestsByUid,r=0;for(t in n)e=n[t],"pending"===e.status?e.status="cancelled":"completed"===e.status&&r++;this.requestsByUid={},this.pendingCnt=0,r&&this.removeAllEventDefs()},t.prototype.getEventDefByUid=function(t){return this.eventDefsByUid[t]},t.prototype.getEventDefsById=function(t){var e=this.eventDefsById[t];return e?e.slice():[]},t.prototype.addEventDefs=function(t){for(var e=0;e<t.length;e++)this.addEventDef(t[e])},t.prototype.addEventDef=function(t){var e,n=this.eventDefsById,r=t.id,i=n[r]||(n[r]=[]),o=t.buildInstances(this.unzonedRange);for(i.push(t),this.eventDefsByUid[t.uid]=t,e=0;e<o.length;e++)this.addEventInstance(o[e],r)},t.prototype.removeEventDefsById=function(t){var e=this;this.getEventDefsById(t).forEach(function(t){e.removeEventDef(t)})},t.prototype.removeAllEventDefs=function(){var t=r.isEmptyObject(this.eventDefsByUid);this.eventDefsByUid={},this.eventDefsById={},this.eventInstanceGroupsById={},t||this.tryRelease()},t.prototype.removeEventDef=function(t){var e=this.eventDefsById,n=e[t.id];delete this.eventDefsByUid[t.uid],n&&(i.removeExact(n,t),n.length||delete e[t.id],this.removeEventInstancesForDef(t))},t.prototype.getEventInstances=function(){var t,e=this.eventInstanceGroupsById,n=[];for(t in e)n.push.apply(n,e[t].eventInstances);return n},t.prototype.getEventInstancesWithId=function(t){var e=this.eventInstanceGroupsById[t];return e?e.eventInstances.slice():[]},t.prototype.getEventInstancesWithoutId=function(t){var e,n=this.eventInstanceGroupsById,r=[];for(e in n)e!==t&&r.push.apply(r,n[e].eventInstances);return r},t.prototype.addEventInstance=function(t,e){var n=this.eventInstanceGroupsById;(n[e]||(n[e]=new l.default)).eventInstances.push(t),this.tryRelease()},t.prototype.removeEventInstancesForDef=function(t){var e,n=this.eventInstanceGroupsById,r=n[t.id];r&&(e=i.removeMatching(r.eventInstances,function(e){return e.def===t}),r.eventInstances.length||delete n[t.id],e&&this.tryRelease())},t.prototype.tryRelease=function(){this.pendingCnt||(this.freezeDepth?this.stuntedReleaseCnt++:this.release())},t.prototype.release=function(){this.releaseCnt++,this.trigger("release",this.eventInstanceGroupsById)},t.prototype.whenReleased=function(){var t=this;return this.releaseCnt?o.default.resolve(this.eventInstanceGroupsById):o.default.construct(function(e){t.one("release",e)})},t.prototype.freeze=function(){this.freezeDepth++||(this.stuntedReleaseCnt=0)},t.prototype.thaw=function(){--this.freezeDepth||!this.stuntedReleaseCnt||this.pendingCnt||this.release()},t}();e.default=u,s.default.mixInto(u)},function(t,e,n){function r(t,e){return t.getPrimitive()===e.getPrimitive()}Object.defineProperty(e,"__esModule",{value:!0});var i=n(3),o=n(4),s=n(219),a=n(56),l=n(6),u=n(38),d=n(9),c=n(20),p=n(13),h=n(7),f=function(){function t(t){this.calendar=t,this.stickySource=new a.default(t),this.otherSources=[]}return t.prototype.requestEvents=function(t,e,n,r){return!r&&this.currentPeriod&&this.currentPeriod.isWithinRange(t,e)&&n===this.currentPeriod.timezone||this.setPeriod(new s.default(t,e,n)),this.currentPeriod.whenReleased()},t.prototype.addSource=function(t){this.otherSources.push(t),this.currentPeriod&&this.currentPeriod.requestSource(t)},t.prototype.removeSource=function(t){o.removeExact(this.otherSources,t),this.currentPeriod&&this.currentPeriod.purgeSource(t)},t.prototype.removeAllSources=function(){this.otherSources=[],this.currentPeriod&&this.currentPeriod.purgeAllSources()},t.prototype.refetchSource=function(t){var e=this.currentPeriod;e&&(e.freeze(),e.purgeSource(t),e.requestSource(t),e.thaw())},t.prototype.refetchAllSources=function(){var t=this.currentPeriod;t&&(t.freeze(),t.purgeAllSources(),t.requestSources(this.getSources()),t.thaw())},t.prototype.getSources=function(){return[this.stickySource].concat(this.otherSources)},t.prototype.multiQuerySources=function(t){t?i.isArray(t)||(t=[t]):t=[];var e,n=[];for(e=0;e<t.length;e++)n.push.apply(n,this.querySources(t[e]));return n},t.prototype.querySources=function(t){var e,n,o=this.otherSources;for(e=0;e<o.length;e++)if((n=o[e])===t)return[n];return(n=this.getSourceById(l.default.normalizeId(t)))?[n]:(t=u.default.parse(t,this.calendar),t?i.grep(o,function(e){return r(t,e)}):void 0)},t.prototype.getSourceById=function(t){return i.grep(this.otherSources,function(e){return e.id&&e.id===t})[0]},t.prototype.setPeriod=function(t){this.currentPeriod&&(this.unbindPeriod(this.currentPeriod),this.currentPeriod=null),this.currentPeriod=t,this.bindPeriod(t),t.requestSources(this.getSources())},t.prototype.bindPeriod=function(t){this.listenTo(t,"release",function(t){this.trigger("release",t)})},t.prototype.unbindPeriod=function(t){this.stopListeningTo(t)},t.prototype.getEventDefByUid=function(t){if(this.currentPeriod)return this.currentPeriod.getEventDefByUid(t)},t.prototype.addEventDef=function(t,e){e&&this.stickySource.addEventDef(t),this.currentPeriod&&this.currentPeriod.addEventDef(t)},t.prototype.removeEventDefsById=function(t){this.getSources().forEach(function(e){e.removeEventDefsById(t)}),this.currentPeriod&&this.currentPeriod.removeEventDefsById(t)},t.prototype.removeAllEventDefs=function(){this.getSources().forEach(function(t){t.removeAllEventDefs()}),this.currentPeriod&&this.currentPeriod.removeAllEventDefs()},t.prototype.mutateEventsWithId=function(t,e){var n,r=this.currentPeriod,i=[];return r?(r.freeze(),n=r.getEventDefsById(t),n.forEach(function(t){r.removeEventDef(t),i.push(e.mutateSingle(t)),r.addEventDef(t)}),r.thaw(),function(){r.freeze();for(var t=0;t<n.length;t++)r.removeEventDef(n[t]),i[t](),r.addEventDef(n[t]);r.thaw()}):function(){}},t.prototype.buildMutatedEventInstanceGroup=function(t,e){var n,r,i=this.getEventDefsById(t),o=[];for(n=0;n<i.length;n++)(r=i[n].clone())instanceof d.default&&(e.mutateSingle(r),o.push.apply(o,r.buildInstances()));return new c.default(o)},t.prototype.freeze=function(){this.currentPeriod&&this.currentPeriod.freeze()},t.prototype.thaw=function(){this.currentPeriod&&this.currentPeriod.thaw()},t.prototype.getEventDefsById=function(t){return this.currentPeriod.getEventDefsById(t)},t.prototype.getEventInstances=function(){return this.currentPeriod.getEventInstances()},t.prototype.getEventInstancesWithId=function(t){return this.currentPeriod.getEventInstancesWithId(t)},t.prototype.getEventInstancesWithoutId=function(t){return this.currentPeriod.getEventInstancesWithoutId(t)},t
+}();e.default=f,p.default.mixInto(f),h.default.mixInto(f)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(22),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(i.default);e.default=o,o.prototype.classes={widget:"fc-unthemed",widgetHeader:"fc-widget-header",widgetContent:"fc-widget-content",buttonGroup:"fc-button-group",button:"fc-button",cornerLeft:"fc-corner-left",cornerRight:"fc-corner-right",stateDefault:"fc-state-default",stateActive:"fc-state-active",stateDisabled:"fc-state-disabled",stateHover:"fc-state-hover",stateDown:"fc-state-down",popoverHeader:"fc-widget-header",popoverContent:"fc-widget-content",headerRow:"fc-widget-header",dayRow:"fc-widget-content",listView:"fc-widget-content"},o.prototype.baseIconClass="fc-icon",o.prototype.iconClasses={close:"fc-icon-x",prev:"fc-icon-left-single-arrow",next:"fc-icon-right-single-arrow",prevYear:"fc-icon-left-double-arrow",nextYear:"fc-icon-right-double-arrow"},o.prototype.iconOverrideOption="buttonIcons",o.prototype.iconOverrideCustomButtonOption="icon",o.prototype.iconOverridePrefix="fc-icon-"},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(22),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(i.default);e.default=o,o.prototype.classes={widget:"ui-widget",widgetHeader:"ui-widget-header",widgetContent:"ui-widget-content",buttonGroup:"fc-button-group",button:"ui-button",cornerLeft:"ui-corner-left",cornerRight:"ui-corner-right",stateDefault:"ui-state-default",stateActive:"ui-state-active",stateDisabled:"ui-state-disabled",stateHover:"ui-state-hover",stateDown:"ui-state-down",today:"ui-state-highlight",popoverHeader:"ui-widget-header",popoverContent:"ui-widget-content",headerRow:"ui-widget-header",dayRow:"ui-widget-content",listView:"ui-widget-content"},o.prototype.baseIconClass="ui-icon",o.prototype.iconClasses={close:"ui-icon-closethick",prev:"ui-icon-circle-triangle-w",next:"ui-icon-circle-triangle-e",prevYear:"ui-icon-seek-prev",nextYear:"ui-icon-seek-next"},o.prototype.iconOverrideOption="themeButtonIcons",o.prototype.iconOverrideCustomButtonOption="themeIcon",o.prototype.iconOverridePrefix="ui-icon-"},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(21),s=n(6),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.parse=function(t,e){var n;return i.isFunction(t.events)?n=t:i.isFunction(t)&&(n={events:t}),!!n&&s.default.parse.call(this,n,e)},e.prototype.fetch=function(t,e,n){var r=this;return this.calendar.pushLoading(),o.default.construct(function(i){r.func.call(r.calendar,t.clone(),e.clone(),n,function(t){r.calendar.popLoading(),i(r.parseEventDefs(t))})})},e.prototype.getPrimitive=function(){return this.func},e.prototype.applyManualStandardProps=function(e){var n=t.prototype.applyManualStandardProps.call(this,e);return this.func=e.events,n},e}(s.default);e.default=a,a.defineStandardProps({events:!1})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(21),a=n(6),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.parse=function(t,e){var n;return"string"==typeof t.url?n=t:"string"==typeof t&&(n={url:t}),!!n&&a.default.parse.call(this,n,e)},e.prototype.fetch=function(t,n,r){var a=this,l=this.ajaxSettings,u=l.success,d=l.error,c=this.buildRequestParams(t,n,r);return this.calendar.pushLoading(),s.default.construct(function(t,n){i.ajax(i.extend({},e.AJAX_DEFAULTS,l,{url:a.url,data:c,success:function(e,r,s){var l;a.calendar.popLoading(),e?(l=o.applyAll(u,a,[e,r,s]),i.isArray(l)&&(e=l),t(a.parseEventDefs(e))):n()},error:function(t,e,r){a.calendar.popLoading(),o.applyAll(d,a,[t,e,r]),n()}}))})},e.prototype.buildRequestParams=function(t,e,n){var r,o,s,a,l=this.calendar,u=this.ajaxSettings,d={};return r=this.startParam,null==r&&(r=l.opt("startParam")),o=this.endParam,null==o&&(o=l.opt("endParam")),s=this.timezoneParam,null==s&&(s=l.opt("timezoneParam")),a=i.isFunction(u.data)?u.data():u.data||{},i.extend(d,a),d[r]=t.format(),d[o]=e.format(),n&&"local"!==n&&(d[s]=n),d},e.prototype.getPrimitive=function(){return this.url},e.prototype.applyMiscProps=function(t){this.ajaxSettings=t},e.AJAX_DEFAULTS={dataType:"json",cache:!1},e}(a.default);e.default=l,l.defineStandardProps({url:!0,startParam:!0,endParam:!0,timezoneParam:!0})},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t){this.items=t||[]}return t.prototype.proxyCall=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];var r=[];return this.items.forEach(function(n){r.push(n[t].apply(n,e))}),r},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=n(7),s=function(){function t(t,e){this.isFollowing=!1,this.isHidden=!1,this.isAnimating=!1,this.options=e=e||{},this.sourceEl=t,this.parentEl=e.parentEl?r(e.parentEl):t.parent()}return t.prototype.start=function(t){this.isFollowing||(this.isFollowing=!0,this.y0=i.getEvY(t),this.x0=i.getEvX(t),this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),i.getEvIsTouch(t)?this.listenTo(r(document),"touchmove",this.handleMove):this.listenTo(r(document),"mousemove",this.handleMove))},t.prototype.stop=function(t,e){var n=this,i=this.options.revertDuration,o=function(){n.isAnimating=!1,n.removeElement(),n.top0=n.left0=null,e&&e()};this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,this.stopListeningTo(r(document)),t&&i&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:i,complete:o})):o())},t.prototype.getEl=function(){var t=this.el;return t||(t=this.el=this.sourceEl.clone().addClass(this.options.additionalClass||"").css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}),t.addClass("fc-unselectable"),t.appendTo(this.parentEl)),t},t.prototype.removeElement=function(){this.el&&(this.el.remove(),this.el=null)},t.prototype.updatePosition=function(){var t,e;this.getEl(),null==this.top0&&(t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},t.prototype.handleMove=function(t){this.topDelta=i.getEvY(t)-this.y0,this.leftDelta=i.getEvX(t)-this.x0,this.isHidden||this.updatePosition()},t.prototype.hide=function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},t.prototype.show=function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())},t}();e.default=s,o.default.mixInto(s)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=n(7),s=function(){function t(t){this.isHidden=!0,this.margin=10,this.options=t||{}}return t.prototype.show=function(){this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger("show"))},t.prototype.hide=function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger("hide"))},t.prototype.render=function(){var t=this,e=this.options;this.el=r('<div class="fc-popover"/>').addClass(e.className||"").css({top:0,left:0}).append(e.content).appendTo(e.parentEl),this.el.on("click",".fc-close",function(){t.hide()}),e.autoHide&&this.listenTo(r(document),"mousedown",this.documentMousedown)},t.prototype.documentMousedown=function(t){this.el&&!r(t.target).closest(this.el).length&&this.hide()},t.prototype.removeElement=function(){this.hide(),this.el&&(this.el.remove(),this.el=null),this.stopListeningTo(r(document),"mousedown")},t.prototype.position=function(){var t,e,n,o,s,a=this.options,l=this.el.offsetParent().offset(),u=this.el.outerWidth(),d=this.el.outerHeight(),c=r(window),p=i.getScrollParent(this.el);o=a.top||0,s=void 0!==a.left?a.left:void 0!==a.right?a.right-u:0,p.is(window)||p.is(document)?(p=c,t=0,e=0):(n=p.offset(),t=n.top,e=n.left),t+=c.scrollTop(),e+=c.scrollLeft(),!1!==a.viewportConstrain&&(o=Math.min(o,t+p.outerHeight()-d-this.margin),o=Math.max(o,t+this.margin),s=Math.min(s,e+p.outerWidth()-u-this.margin),s=Math.max(s,e+this.margin)),this.el.css({top:o-l.top,left:s-l.left})},t.prototype.trigger=function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))},t}();e.default=s,o.default.mixInto(s)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(13),i=function(){function t(){this.q=[],this.isPaused=!1,this.isRunning=!1}return t.prototype.queue=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this.q.push.apply(this.q,t),this.tryStart()},t.prototype.pause=function(){this.isPaused=!0},t.prototype.resume=function(){this.isPaused=!1,this.tryStart()},t.prototype.getIsIdle=function(){return!this.isRunning&&!this.isPaused},t.prototype.tryStart=function(){!this.isRunning&&this.canRunNext()&&(this.isRunning=!0,this.trigger("start"),this.runRemaining())},t.prototype.canRunNext=function(){return!this.isPaused&&this.q.length},t.prototype.runRemaining=function(){var t,e,n=this;do{if(t=this.q.shift(),(e=this.runTask(t))&&e.then)return void e.then(function(){n.canRunNext()&&n.runRemaining()})}while(this.canRunNext());this.trigger("stop"),this.isRunning=!1,this.tryStart()},t.prototype.runTask=function(t){return t()},t}();e.default=i,r.default.mixInto(i)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(228),o=function(t){function e(e){var n=t.call(this)||this;return n.waitsByNamespace=e||{},n}return r.__extends(e,t),e.prototype.queue=function(t,e,n){var r,i={func:t,namespace:e,type:n};e&&(r=this.waitsByNamespace[e]),this.waitNamespace&&(e===this.waitNamespace&&null!=r?this.delayWait(r):(this.clearWait(),this.tryStart())),this.compoundTask(i)&&(this.waitNamespace||null==r?this.tryStart():this.startWait(e,r))},e.prototype.startWait=function(t,e){this.waitNamespace=t,this.spawnWait(e)},e.prototype.delayWait=function(t){clearTimeout(this.waitId),this.spawnWait(t)},e.prototype.spawnWait=function(t){var e=this;this.waitId=setTimeout(function(){e.waitNamespace=null,e.tryStart()},t)},e.prototype.clearWait=function(){this.waitNamespace&&(clearTimeout(this.waitId),this.waitId=null,this.waitNamespace=null)},e.prototype.canRunNext=function(){if(!t.prototype.canRunNext.call(this))return!1;if(this.waitNamespace){for(var e=this.q,n=0;n<e.length;n++)if(e[n].namespace!==this.waitNamespace)return!0;return!1}return!0},e.prototype.runTask=function(t){t.func()},e.prototype.compoundTask=function(t){var e,n,r=this.q,i=!0;if(t.namespace&&"destroy"===t.type)for(e=r.length-1;e>=0;e--)if(n=r[e],n.namespace===t.namespace)switch(n.type){case"init":i=!1;case"add":case"remove":r.splice(e,1)}return i&&r.push(t),i},e}(i.default);e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(51),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.setElement=function(t){this.el=t,this.bindGlobalHandlers(),this.renderSkeleton(),this.set("isInDom",!0)},e.prototype.removeElement=function(){this.unset("isInDom"),this.unrenderSkeleton(),this.unbindGlobalHandlers(),this.el.remove()},e.prototype.bindGlobalHandlers=function(){},e.prototype.unbindGlobalHandlers=function(){},e.prototype.renderSkeleton=function(){},e.prototype.unrenderSkeleton=function(){},e}(i.default);e.default=o},function(t,e,n){function r(t){var e,n,r,i=[];for(e in t)for(n=t[e].eventInstances,r=0;r<n.length;r++)i.push(n[r].toLegacy());return i}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(3),s=n(0),a=n(4),l=n(11),u=n(49),d=n(230),c=n(19),p=function(t){function e(n,r){var i=t.call(this)||this;return i.isRTL=!1,i.hitsNeededDepth=0,i.hasAllDayBusinessHours=!1,i.isDatesRendered=!1,n&&(i.view=n),r&&(i.options=r),i.uid=String(e.guid++),i.childrenByUid={},i.nextDayThreshold=s.duration(i.opt("nextDayThreshold")),i.isRTL=i.opt("isRTL"),i.fillRendererClass&&(i.fillRenderer=new i.fillRendererClass(i)),i.eventRendererClass&&(i.eventRenderer=new i.eventRendererClass(i,i.fillRenderer)),i.helperRendererClass&&i.eventRenderer&&(i.helperRenderer=new i.helperRendererClass(i,i.eventRenderer)),i.businessHourRendererClass&&i.fillRenderer&&(i.businessHourRenderer=new i.businessHourRendererClass(i,i.fillRenderer)),i}return i.__extends(e,t),e.prototype.addChild=function(t){return!this.childrenByUid[t.uid]&&(this.childrenByUid[t.uid]=t,!0)},e.prototype.removeChild=function(t){return!!this.childrenByUid[t.uid]&&(delete this.childrenByUid[t.uid],!0)},e.prototype.updateSize=function(t,e,n){this.callChildren("updateSize",arguments)},e.prototype.opt=function(t){return this._getView().opt(t)},e.prototype.publiclyTrigger=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this._getCalendar();return n.publiclyTrigger.apply(n,t)},e.prototype.hasPublicHandlers=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this._getCalendar();return n.hasPublicHandlers.apply(n,t)},e.prototype.executeDateRender=function(t){this.dateProfile=t,this.renderDates(t),this.isDatesRendered=!0,this.callChildren("executeDateRender",arguments)},e.prototype.executeDateUnrender=function(){this.callChildren("executeDateUnrender",arguments),this.dateProfile=null,this.unrenderDates(),this.isDatesRendered=!1},e.prototype.renderDates=function(t){},e.prototype.unrenderDates=function(){},e.prototype.getNowIndicatorUnit=function(){},e.prototype.renderNowIndicator=function(t){this.callChildren("renderNowIndicator",arguments)},e.prototype.unrenderNowIndicator=function(){this.callChildren("unrenderNowIndicator",arguments)},e.prototype.renderBusinessHours=function(t){this.businessHourRenderer&&this.businessHourRenderer.render(t),this.callChildren("renderBusinessHours",arguments)},e.prototype.unrenderBusinessHours=function(){this.callChildren("unrenderBusinessHours",arguments),this.businessHourRenderer&&this.businessHourRenderer.unrender()},e.prototype.executeEventRender=function(t){this.eventRenderer?(this.eventRenderer.rangeUpdated(),this.eventRenderer.render(t)):this.renderEvents&&this.renderEvents(r(t)),this.callChildren("executeEventRender",arguments)},e.prototype.executeEventUnrender=function(){this.callChildren("executeEventUnrender",arguments),this.eventRenderer?this.eventRenderer.unrender():this.destroyEvents&&this.destroyEvents()},e.prototype.getBusinessHourSegs=function(){var t=this.getOwnBusinessHourSegs();return this.iterChildren(function(e){t.push.apply(t,e.getBusinessHourSegs())}),t},e.prototype.getOwnBusinessHourSegs=function(){return this.businessHourRenderer?this.businessHourRenderer.getSegs():[]},e.prototype.getEventSegs=function(){var t=this.getOwnEventSegs();return this.iterChildren(function(e){t.push.apply(t,e.getEventSegs())}),t},e.prototype.getOwnEventSegs=function(){return this.eventRenderer?this.eventRenderer.getSegs():[]},e.prototype.triggerAfterEventsRendered=function(){this.triggerAfterEventSegsRendered(this.getEventSegs()),this.publiclyTrigger("eventAfterAllRender",{context:this,args:[this]})},e.prototype.triggerAfterEventSegsRendered=function(t){var e=this;this.hasPublicHandlers("eventAfterRender")&&t.forEach(function(t){var n;t.el&&(n=t.footprint.getEventLegacy(),e.publiclyTrigger("eventAfterRender",{context:n,args:[n,t.el,e]}))})},e.prototype.triggerBeforeEventsDestroyed=function(){this.triggerBeforeEventSegsDestroyed(this.getEventSegs())},e.prototype.triggerBeforeEventSegsDestroyed=function(t){var e=this;this.hasPublicHandlers("eventDestroy")&&t.forEach(function(t){var n;t.el&&(n=t.footprint.getEventLegacy(),e.publiclyTrigger("eventDestroy",{context:n,args:[n,t.el,e]}))})},e.prototype.showEventsWithId=function(t){this.getEventSegs().forEach(function(e){e.footprint.eventDef.id===t&&e.el&&e.el.css("visibility","")}),this.callChildren("showEventsWithId",arguments)},e.prototype.hideEventsWithId=function(t){this.getEventSegs().forEach(function(e){e.footprint.eventDef.id===t&&e.el&&e.el.css("visibility","hidden")}),this.callChildren("hideEventsWithId",arguments)},e.prototype.renderDrag=function(t,e,n){var r=!1;return this.iterChildren(function(i){i.renderDrag(t,e,n)&&(r=!0)}),r},e.prototype.unrenderDrag=function(){this.callChildren("unrenderDrag",arguments)},e.prototype.renderEventResize=function(t,e,n){this.callChildren("renderEventResize",arguments)},e.prototype.unrenderEventResize=function(){this.callChildren("unrenderEventResize",arguments)},e.prototype.renderSelectionFootprint=function(t){this.renderHighlight(t),this.callChildren("renderSelectionFootprint",arguments)},e.prototype.unrenderSelection=function(){this.unrenderHighlight(),this.callChildren("unrenderSelection",arguments)},e.prototype.renderHighlight=function(t){this.fillRenderer&&this.fillRenderer.renderFootprint("highlight",t,{getClasses:function(){return["fc-highlight"]}}),this.callChildren("renderHighlight",arguments)},e.prototype.unrenderHighlight=function(){this.fillRenderer&&this.fillRenderer.unrender("highlight"),this.callChildren("unrenderHighlight",arguments)},e.prototype.hitsNeeded=function(){this.hitsNeededDepth++||this.prepareHits(),this.callChildren("hitsNeeded",arguments)},e.prototype.hitsNotNeeded=function(){this.hitsNeededDepth&&!--this.hitsNeededDepth&&this.releaseHits(),this.callChildren("hitsNotNeeded",arguments)},e.prototype.prepareHits=function(){},e.prototype.releaseHits=function(){},e.prototype.queryHit=function(t,e){var n,r,i=this.childrenByUid;for(n in i)if(r=i[n].queryHit(t,e))break;return r},e.prototype.getSafeHitFootprint=function(t){var e=this.getHitFootprint(t);return this.dateProfile.activeUnzonedRange.containsRange(e.unzonedRange)?e:null},e.prototype.getHitFootprint=function(t){},e.prototype.getHitEl=function(t){},e.prototype.eventRangesToEventFootprints=function(t){var e,n=[];for(e=0;e<t.length;e++)n.push.apply(n,this.eventRangeToEventFootprints(t[e]));return n},e.prototype.eventRangeToEventFootprints=function(t){return[c.eventRangeToEventFootprint(t)]},e.prototype.eventFootprintsToSegs=function(t){var e,n=[];for(e=0;e<t.length;e++)n.push.apply(n,this.eventFootprintToSegs(t[e]));return n},e.prototype.eventFootprintToSegs=function(t){var e,n,r,i=t.componentFootprint.unzonedRange;for(e=this.componentFootprintToSegs(t.componentFootprint),n=0;n<e.length;n++)r=e[n],i.isStart||(r.isStart=!1),i.isEnd||(r.isEnd=!1),r.footprint=t;return e},e.prototype.componentFootprintToSegs=function(t){return[]},e.prototype.callChildren=function(t,e){this.iterChildren(function(n){n[t].apply(n,e)})},e.prototype.iterChildren=function(t){var e,n=this.childrenByUid;for(e in n)t(n[e])},e.prototype._getCalendar=function(){var t=this;return t.calendar||t.view.calendar},e.prototype._getView=function(){return this.view},e.prototype._getDateProfile=function(){return this._getView().get("dateProfile")},e.prototype.buildGotoAnchorHtml=function(t,e,n){var r,i,s,u;return o.isPlainObject(t)?(r=t.date,i=t.type,s=t.forceOff):r=t,r=l.default(r),u={date:r.format("YYYY-MM-DD"),type:i||"day"},"string"==typeof e&&(n=e,e=null),e=e?" "+a.attrsToStr(e):"",n=n||"",!s&&this.opt("navLinks")?"<a"+e+' data-goto="'+a.htmlEscape(JSON.stringify(u))+'">'+n+"</a>":"<span"+e+">"+n+"</span>"},e.prototype.getAllDayHtml=function(){return this.opt("allDayHtml")||a.htmlEscape(this.opt("allDayText"))},e.prototype.getDayClasses=function(t,e){var n,r=this._getView(),i=[];return this.dateProfile.activeUnzonedRange.containsDate(t)?(i.push("fc-"+a.dayIDs[t.day()]),r.isDateInOtherMonth(t,this.dateProfile)&&i.push("fc-other-month"),n=r.calendar.getNow(),t.isSame(n,"day")?(i.push("fc-today"),!0!==e&&i.push(r.calendar.theme.getClass("today"))):t<n?i.push("fc-past"):i.push("fc-future")):i.push("fc-disabled-day"),i},e.prototype.formatRange=function(t,e,n,r){var i=t.end;return e&&(i=i.clone().subtract(1)),u.formatRange(t.start,i,n,r,this.isRTL)},e.prototype.currentRangeAs=function(t){return this._getDateProfile().currentUnzonedRange.as(t)},e.prototype.computeDayRange=function(t){var e=this._getCalendar(),n=e.msToUtcMoment(t.startMs,!0),r=e.msToUtcMoment(t.endMs),i=+r.time(),o=r.clone().stripTime();return i&&i>=this.nextDayThreshold&&o.add(1,"days"),o<=n&&(o=n.clone().add(1,"days")),{start:n,end:o}},e.prototype.isMultiDayRange=function(t){var e=this.computeDayRange(t);return e.end.diff(e.start,"days")>1},e.guid=0,e}(d.default);e.default=p},function(t,e,n){function r(t,e){return null==e?t:i.isFunction(e)?t.filter(e):(e+="",t.filter(function(t){return t.id==e||t._id===e}))}Object.defineProperty(e,"__esModule",{value:!0});var i=n(3),o=n(0),s=n(4),a=n(33),l=n(225),u=n(23),d=n(13),c=n(7),p=n(257),h=n(258),f=n(259),g=n(217),v=n(32),y=n(11),m=n(5),b=n(12),w=n(16),D=n(220),E=n(218),S=n(38),C=n(36),R=n(9),T=n(39),M=n(6),I=n(57),H=function(){function t(t,e){this.loadingLevel=0,this.ignoreUpdateViewSize=0,this.freezeContentHeightDepth=0,u.default.needed(),this.el=t,this.viewsByType={},this.optionsManager=new h.default(this,e),this.viewSpecManager=new f.default(this.optionsManager,this),this.initMomentInternals(),this.initCurrentDate(),this.initEventManager(),this.constraints=new g.default(this.eventManager,this),this.constructed()}return t.prototype.constructed=function(){},t.prototype.getView=function(){return this.view},t.prototype.publiclyTrigger=function(t,e){var n,r,o=this.opt(t);if(i.isPlainObject(e)?(n=e.context,r=e.args):i.isArray(e)&&(r=e),null==n&&(n=this.el[0]),r||(r=[]),this.triggerWith(t,n,r),o)return o.apply(n,r)},t.prototype.hasPublicHandlers=function(t){return this.hasHandlers(t)||this.opt(t)},t.prototype.option=function(t,e){var n;if("string"==typeof t){if(void 0===e)return this.optionsManager.get(t);n={},n[t]=e,this.optionsManager.add(n)}else"object"==typeof t&&this.optionsManager.add(t)},t.prototype.opt=function(t){return this.optionsManager.get(t)},t.prototype.instantiateView=function(t){var e=this.viewSpecManager.getViewSpec(t);if(!e)throw new Error('View type "'+t+'" is not valid');return new e.class(this,e)},t.prototype.isValidViewType=function(t){return Boolean(this.viewSpecManager.getViewSpec(t))},t.prototype.changeView=function(t,e){e&&(e.start&&e.end?this.optionsManager.recordOverrides({visibleRange:e}):this.currentDate=this.moment(e).stripZone()),this.renderView(t)},t.prototype.zoomTo=function(t,e){var n;e=e||"day",n=this.viewSpecManager.getViewSpec(e)||this.viewSpecManager.getUnitViewSpec(e),this.currentDate=t.clone(),this.renderView(n?n.type:null)},t.prototype.initCurrentDate=function(){var t=this.opt("defaultDate");this.currentDate=null!=t?this.moment(t).stripZone():this.getNow()},t.prototype.prev=function(){var t=this.view,e=t.dateProfileGenerator.buildPrev(t.get("dateProfile"));e.isValid&&(this.currentDate=e.date,this.renderView())},t.prototype.next=function(){var t=this.view,e=t.dateProfileGenerator.buildNext(t.get("dateProfile"));e.isValid&&(this.currentDate=e.date,this.renderView())},t.prototype.prevYear=function(){this.currentDate.add(-1,"years"),this.renderView()},t.prototype.nextYear=function(){this.currentDate.add(1,"years"),this.renderView()},t.prototype.today=function(){this.currentDate=this.getNow(),this.renderView()},t.prototype.gotoDate=function(t){this.currentDate=this.moment(t).stripZone(),this.renderView()},t.prototype.incrementDate=function(t){this.currentDate.add(o.duration(t)),this.renderView()},t.prototype.getDate=function(){return this.applyTimezone(this.currentDate)},t.prototype.pushLoading=function(){this.loadingLevel++||this.publiclyTrigger("loading",[!0,this.view])},t.prototype.popLoading=function(){--this.loadingLevel||this.publiclyTrigger("loading",[!1,this.view])},t.prototype.render=function(){this.contentEl?this.elementVisible()&&(this.calcSize(),this.updateViewSize()):this.initialRender()},t.prototype.initialRender=function(){var t=this,e=this.el;e.addClass("fc"),e.on("click.fc","a[data-goto]",function(e){var n=i(e.currentTarget),r=n.data("goto"),o=t.moment(r.date),a=r.type,l=t.view.opt("navLink"+s.capitaliseFirstLetter(a)+"Click");"function"==typeof l?l(o,e):("string"==typeof l&&(a=l),t.zoomTo(o,a))}),this.optionsManager.watch("settingTheme",["?theme","?themeSystem"],function(n){var r=I.getThemeSystemClass(n.themeSystem||n.theme),i=new r(t.optionsManager),o=i.getClass("widget");t.theme=i,o&&e.addClass(o)},function(){var n=t.theme.getClass("widget");t.theme=null,n&&e.removeClass(n)}),this.optionsManager.watch("settingBusinessHourGenerator",["?businessHours"],function(e){t.businessHourGenerator=new E.default(e.businessHours,t),t.view&&t.view.set("businessHourGenerator",t.businessHourGenerator)},function(){t.businessHourGenerator=null}),this.optionsManager.watch("applyingDirClasses",["?isRTL","?locale"],function(t){e.toggleClass("fc-ltr",!t.isRTL),e.toggleClass("fc-rtl",t.isRTL)}),this.contentEl=i("<div class='fc-view-container'/>").prependTo(e),this.initToolbars(),this.renderHeader(),this.renderFooter(),this.renderView(this.opt("defaultView")),this.opt("handleWindowResize")&&i(window).resize(this.windowResizeProxy=s.debounce(this.windowResize.bind(this),this.opt("windowResizeDelay")))},t.prototype.destroy=function(){this.view&&this.clearView(),this.toolbarsManager.proxyCall("removeElement"),this.contentEl.remove(),this.el.removeClass("fc fc-ltr fc-rtl"),this.optionsManager.unwatch("settingTheme"),this.optionsManager.unwatch("settingBusinessHourGenerator"),this.el.off(".fc"),this.windowResizeProxy&&(i(window).unbind("resize",this.windowResizeProxy),this.windowResizeProxy=null),u.default.unneeded()},t.prototype.elementVisible=function(){return this.el.is(":visible")},t.prototype.bindViewHandlers=function(t){var e=this;t.watch("titleForCalendar",["title"],function(n){t===e.view&&e.setToolbarsTitle(n.title)}),t.watch("dateProfileForCalendar",["dateProfile"],function(n){t===e.view&&(e.currentDate=n.dateProfile.date,e.updateToolbarButtons(n.dateProfile))})},t.prototype.unbindViewHandlers=function(t){t.unwatch("titleForCalendar"),t.unwatch("dateProfileForCalendar")},t.prototype.renderView=function(t){var e,n=this.view;this.freezeContentHeight(),n&&t&&n.type!==t&&this.clearView(),!this.view&&t&&(e=this.view=this.viewsByType[t]||(this.viewsByType[t]=this.instantiateView(t)),this.bindViewHandlers(e),e.startBatchRender(),e.setElement(i("<div class='fc-view fc-"+t+"-view' />").appendTo(this.contentEl)),this.toolbarsManager.proxyCall("activateButton",t)),this.view&&(this.view.get("businessHourGenerator")!==this.businessHourGenerator&&this.view.set("businessHourGenerator",this.businessHourGenerator),this.view.setDate(this.currentDate),e&&e.stopBatchRender()),this.thawContentHeight()},t.prototype.clearView=function(){var t=this.view;this.toolbarsManager.proxyCall("deactivateButton",t.type),this.unbindViewHandlers(t),t.removeElement(),t.unsetDate(),this.view=null},t.prototype.reinitView=function(){var t=this.view,e=t.queryScroll();this.freezeContentHeight(),this.clearView(),this.calcSize(),this.renderView(t.type),this.view.applyScroll(e),this.thawContentHeight()},t.prototype.getSuggestedViewHeight=function(){return null==this.suggestedViewHeight&&this.calcSize(),this.suggestedViewHeight},t.prototype.isHeightAuto=function(){return"auto"===this.opt("contentHeight")||"auto"===this.opt("height")},t.prototype.updateViewSize=function(t){void 0===t&&(t=!1);var e,n=this.view;if(!this.ignoreUpdateViewSize&&n)return t&&(this.calcSize(),e=n.queryScroll()),this.ignoreUpdateViewSize++,n.updateSize(this.getSuggestedViewHeight(),this.isHeightAuto(),t),this.ignoreUpdateViewSize--,t&&n.applyScroll(e),!0},t.prototype.calcSize=function(){this.elementVisible()&&this._calcSize()},t.prototype._calcSize=function(){var t=this.opt("contentHeight"),e=this.opt("height");this.suggestedViewHeight="number"==typeof t?t:"function"==typeof t?t():"number"==typeof e?e-this.queryToolbarsHeight():"function"==typeof e?e()-this.queryToolbarsHeight():"parent"===e?this.el.parent().height()-this.queryToolbarsHeight():Math.round(this.contentEl.width()/Math.max(this.opt("aspectRatio"),.5))},t.prototype.windowResize=function(t){t.target===window&&this.view&&this.view.isDatesRendered&&this.updateViewSize(!0)&&this.publiclyTrigger("windowResize",[this.view])},t.prototype.freezeContentHeight=function(){this.freezeContentHeightDepth++||this.forceFreezeContentHeight()},t.prototype.forceFreezeContentHeight=function(){this.contentEl.css({width:"100%",height:this.contentEl.height(),overflow:"hidden"})},t.prototype.thawContentHeight=function(){this.freezeContentHeightDepth--,this.contentEl.css({width:"",height:"",overflow:""}),this.freezeContentHeightDepth&&this.forceFreezeContentHeight()},t.prototype.initToolbars=function(){this.header=new p.default(this,this.computeHeaderOptions()),this.footer=new p.default(this,this.computeFooterOptions()),this.toolbarsManager=new l.default([this.header,this.footer])},t.prototype.computeHeaderOptions=function(){return{extraClasses:"fc-header-toolbar",layout:this.opt("header")}},t.prototype.computeFooterOptions=function(){return{extraClasses:"fc-footer-toolbar",layout:this.opt("footer")}},t.prototype.renderHeader=function(){var t=this.header;t.setToolbarOptions(this.computeHeaderOptions()),t.render(),t.el&&this.el.prepend(t.el)},t.prototype.renderFooter=function(){var t=this.footer;t.setToolbarOptions(this.computeFooterOptions()),t.render(),t.el&&this.el.append(t.el)},t.prototype.setToolbarsTitle=function(t){this.toolbarsManager.proxyCall("updateTitle",t)},t.prototype.updateToolbarButtons=function(t){var e=this.getNow(),n=this.view,r=n.dateProfileGenerator.build(e),i=n.dateProfileGenerator.buildPrev(n.get("dateProfile")),o=n.dateProfileGenerator.buildNext(n.get("dateProfile"));this.toolbarsManager.proxyCall(r.isValid&&!t.currentUnzonedRange.containsDate(e)?"enableButton":"disableButton","today"),this.toolbarsManager.proxyCall(i.isValid?"enableButton":"disableButton","prev"),this.toolbarsManager.proxyCall(o.isValid?"enableButton":"disableButton","next")},t.prototype.queryToolbarsHeight=function(){return this.toolbarsManager.items.reduce(function(t,e){return t+(e.el?e.el.outerHeight(!0):0)},0)},t.prototype.select=function(t,e){this.view.select(this.buildSelectFootprint.apply(this,arguments))},t.prototype.unselect=function(){this.view&&this.view.unselect()},t.prototype.buildSelectFootprint=function(t,e){var n,r=this.moment(t).stripZone();return n=e?this.moment(e).stripZone():r.hasTime()?r.clone().add(this.defaultTimedEventDuration):r.clone().add(this.defaultAllDayEventDuration),new b.default(new m.default(r,n),!r.hasTime())},t.prototype.initMomentInternals=function(){var t=this;this.defaultAllDayEventDuration=o.duration(this.opt("defaultAllDayEventDuration")),this.defaultTimedEventDuration=o.duration(this.opt("defaultTimedEventDuration")),this.optionsManager.watch("buildingMomentLocale",["?locale","?monthNames","?monthNamesShort","?dayNames","?dayNamesShort","?firstDay","?weekNumberCalculation"],function(e){var n,r=e.weekNumberCalculation,i=e.firstDay;"iso"===r&&(r="ISO");var o=Object.create(v.getMomentLocaleData(e.locale));e.monthNames&&(o._months=e.monthNames),e.monthNamesShort&&(o._monthsShort=e.monthNamesShort),e.dayNames&&(o._weekdays=e.dayNames),e.dayNamesShort&&(o._weekdaysShort=e.dayNamesShort),null==i&&"ISO"===r&&(i=1),null!=i&&(n=Object.create(o._week),n.dow=i,o._week=n),"ISO"!==r&&"local"!==r&&"function"!=typeof r||(o._fullCalendar_weekCalc=r),t.localeData=o,t.currentDate&&t.localizeMoment(t.currentDate)})},t.prototype.moment=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n;return"local"===this.opt("timezone")?(n=y.default.apply(null,t),n.hasTime()&&n.local()):n="UTC"===this.opt("timezone")?y.default.utc.apply(null,t):y.default.parseZone.apply(null,t),this.localizeMoment(n),n},t.prototype.msToMoment=function(t,e){var n=y.default.utc(t);return e?n.stripTime():n=this.applyTimezone(n),this.localizeMoment(n),n},
+t.prototype.msToUtcMoment=function(t,e){var n=y.default.utc(t);return e&&n.stripTime(),this.localizeMoment(n),n},t.prototype.localizeMoment=function(t){t._locale=this.localeData},t.prototype.getIsAmbigTimezone=function(){return"local"!==this.opt("timezone")&&"UTC"!==this.opt("timezone")},t.prototype.applyTimezone=function(t){if(!t.hasTime())return t.clone();var e,n=this.moment(t.toArray()),r=t.time().asMilliseconds()-n.time().asMilliseconds();return r&&(e=n.clone().add(r),t.time().asMilliseconds()-e.time().asMilliseconds()==0&&(n=e)),n},t.prototype.footprintToDateProfile=function(t,e){void 0===e&&(e=!1);var n,r=y.default.utc(t.unzonedRange.startMs);return e||(n=y.default.utc(t.unzonedRange.endMs)),t.isAllDay?(r.stripTime(),n&&n.stripTime()):(r=this.applyTimezone(r),n&&(n=this.applyTimezone(n))),this.localizeMoment(r),n&&this.localizeMoment(n),new w.default(r,n,this)},t.prototype.getNow=function(){var t=this.opt("now");return"function"==typeof t&&(t=t()),this.moment(t).stripZone()},t.prototype.humanizeDuration=function(t){return t.locale(this.opt("locale")).humanize()},t.prototype.parseUnzonedRange=function(t){var e=null,n=null;return t.start&&(e=this.moment(t.start).stripZone()),t.end&&(n=this.moment(t.end).stripZone()),e||n?e&&n&&n.isBefore(e)?null:new m.default(e,n):null},t.prototype.initEventManager=function(){var t=this,e=new D.default(this),n=this.opt("eventSources")||[],r=this.opt("events");this.eventManager=e,r&&n.unshift(r),e.on("release",function(e){t.trigger("eventsReset",e)}),e.freeze(),n.forEach(function(n){var r=S.default.parse(n,t);r&&e.addSource(r)}),e.thaw()},t.prototype.requestEvents=function(t,e){return this.eventManager.requestEvents(t,e,this.opt("timezone"),!this.opt("lazyFetching"))},t.prototype.getEventEnd=function(t){return t.end?t.end.clone():this.getDefaultEventEnd(t.allDay,t.start)},t.prototype.getDefaultEventEnd=function(t,e){var n=e.clone();return t?n.stripTime().add(this.defaultAllDayEventDuration):n.add(this.defaultTimedEventDuration),this.getIsAmbigTimezone()&&n.stripZone(),n},t.prototype.rerenderEvents=function(){this.view.flash("displayingEvents")},t.prototype.refetchEvents=function(){this.eventManager.refetchAllSources()},t.prototype.renderEvents=function(t,e){this.eventManager.freeze();for(var n=0;n<t.length;n++)this.renderEvent(t[n],e);this.eventManager.thaw()},t.prototype.renderEvent=function(t,e){void 0===e&&(e=!1);var n=this.eventManager,r=C.default.parse(t,t.source||n.stickySource);r&&n.addEventDef(r,e)},t.prototype.removeEvents=function(t){var e,n,i=this.eventManager,o=[],s={};if(null==t)i.removeAllEventDefs();else{for(i.getEventInstances().forEach(function(t){o.push(t.toLegacy())}),o=r(o,t),n=0;n<o.length;n++)e=this.eventManager.getEventDefByUid(o[n]._id),s[e.id]=!0;i.freeze();for(n in s)i.removeEventDefsById(n);i.thaw()}},t.prototype.clientEvents=function(t){var e=[];return this.eventManager.getEventInstances().forEach(function(t){e.push(t.toLegacy())}),r(e,t)},t.prototype.updateEvents=function(t){this.eventManager.freeze();for(var e=0;e<t.length;e++)this.updateEvent(t[e]);this.eventManager.thaw()},t.prototype.updateEvent=function(t){var e,n,r=this.eventManager.getEventDefByUid(t._id);r instanceof R.default&&(e=r.buildInstance(),n=T.default.createFromRawProps(e,t,null),this.eventManager.mutateEventsWithId(r.id,n))},t.prototype.getEventSources=function(){return this.eventManager.otherSources.slice()},t.prototype.getEventSourceById=function(t){return this.eventManager.getSourceById(M.default.normalizeId(t))},t.prototype.addEventSource=function(t){var e=S.default.parse(t,this);e&&this.eventManager.addSource(e)},t.prototype.removeEventSources=function(t){var e,n,r=this.eventManager;if(null==t)this.eventManager.removeAllSources();else{for(e=r.multiQuerySources(t),r.freeze(),n=0;n<e.length;n++)r.removeSource(e[n]);r.thaw()}},t.prototype.removeEventSource=function(t){var e,n=this.eventManager,r=n.querySources(t);for(n.freeze(),e=0;e<r.length;e++)n.removeSource(r[e]);n.thaw()},t.prototype.refetchEventSources=function(t){var e,n=this.eventManager,r=n.multiQuerySources(t);for(n.freeze(),e=0;e<r.length;e++)n.refetchSource(r[e]);n.thaw()},t.defaults=a.globalDefaults,t.englishDefaults=a.englishDefaults,t.rtlDefaults=a.rtlDefaults,t}();e.default=H,d.default.mixInto(H),c.default.mixInto(H)},function(t,e,n){function r(t){var e,n,r,i,l=a.dataAttrPrefix;return l&&(l+="-"),e=t.data(l+"event")||null,e&&(e="object"==typeof e?o.extend({},e):{},n=e.start,null==n&&(n=e.time),r=e.duration,i=e.stick,delete e.start,delete e.time,delete e.duration,delete e.stick),null==n&&(n=t.data(l+"start")),null==n&&(n=t.data(l+"time")),null==r&&(r=t.data(l+"duration")),null==i&&(i=t.data(l+"stick")),n=null!=n?s.duration(n):null,r=null!=r?s.duration(r):null,i=Boolean(i),{eventProps:e,startTime:n,duration:r,stick:i}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(3),s=n(0),a=n(18),l=n(4),u=n(11),d=n(7),c=n(17),p=n(9),h=n(20),f=n(6),g=n(14),v=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.isDragging=!1,e}return i.__extends(e,t),e.prototype.end=function(){this.dragListener&&this.dragListener.endInteraction()},e.prototype.bindToDocument=function(){this.listenTo(o(document),{dragstart:this.handleDragStart,sortstart:this.handleDragStart})},e.prototype.unbindFromDocument=function(){this.stopListeningTo(o(document))},e.prototype.handleDragStart=function(t,e){var n,r;this.opt("droppable")&&(n=o((e?e.item:null)||t.target),r=this.opt("dropAccept"),(o.isFunction(r)?r.call(n[0],n):n.is(r))&&(this.isDragging||this.listenToExternalDrag(n,t,e)))},e.prototype.listenToExternalDrag=function(t,e,n){var i,o=this,s=this.component,a=this.view,u=r(t);(this.dragListener=new c.default(s,{interactionStart:function(){o.isDragging=!0},hitOver:function(t){var e,n=!0,r=t.component.getSafeHitFootprint(t);r?(i=o.computeExternalDrop(r,u),i?(e=new h.default(i.buildInstances()),n=u.eventProps?s.isEventInstanceGroupAllowed(e):s.isExternalInstanceGroupAllowed(e)):n=!1):n=!1,n||(i=null,l.disableCursor()),i&&s.renderDrag(s.eventRangesToEventFootprints(e.sliceRenderRanges(s.dateProfile.renderUnzonedRange,a.calendar)))},hitOut:function(){i=null},hitDone:function(){l.enableCursor(),s.unrenderDrag()},interactionEnd:function(e){i&&a.reportExternalDrop(i,Boolean(u.eventProps),Boolean(u.stick),t,e,n),o.isDragging=!1,o.dragListener=null}})).startDrag(e)},e.prototype.computeExternalDrop=function(t,e){var n,r=this.view.calendar,i=u.default.utc(t.unzonedRange.startMs).stripZone();return t.isAllDay&&(e.startTime?i.time(e.startTime):i.stripTime()),e.duration&&(n=i.clone().add(e.duration)),i=r.applyTimezone(i),n&&(n=r.applyTimezone(n)),p.default.parse(o.extend({},e.eventProps,{start:i,end:n}),new f.default(r))},e}(g.default);e.default=v,d.default.mixInto(v),a.dataAttrPrefix=""},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(39),a=n(40),l=n(17),u=n(14),d=function(t){function e(e,n){var r=t.call(this,e)||this;return r.isResizing=!1,r.eventPointing=n,r}return r.__extends(e,t),e.prototype.end=function(){this.dragListener&&this.dragListener.endInteraction()},e.prototype.bindToEl=function(t){var e=this.component;e.bindSegHandlerToEl(t,"mousedown",this.handleMouseDown.bind(this)),e.bindSegHandlerToEl(t,"touchstart",this.handleTouchStart.bind(this))},e.prototype.handleMouseDown=function(t,e){this.component.canStartResize(t,e)&&this.buildDragListener(t,i(e.target).is(".fc-start-resizer")).startInteraction(e,{distance:5})},e.prototype.handleTouchStart=function(t,e){this.component.canStartResize(t,e)&&this.buildDragListener(t,i(e.target).is(".fc-start-resizer")).startInteraction(e)},e.prototype.buildDragListener=function(t,e){var n,r,i=this,s=this.component,a=this.view,u=a.calendar,d=u.eventManager,c=t.el,p=t.footprint.eventDef,h=t.footprint.eventInstance;return this.dragListener=new l.default(s,{scroll:this.opt("dragScroll"),subjectEl:c,interactionStart:function(){n=!1},dragStart:function(e){n=!0,i.eventPointing.handleMouseout(t,e),i.segResizeStart(t,e)},hitOver:function(n,l,c){var h,f=!0,g=s.getSafeHitFootprint(c),v=s.getSafeHitFootprint(n);g&&v?(r=e?i.computeEventStartResizeMutation(g,v,t.footprint):i.computeEventEndResizeMutation(g,v,t.footprint),r?(h=d.buildMutatedEventInstanceGroup(p.id,r),f=s.isEventInstanceGroupAllowed(h)):f=!1):f=!1,f?r.isEmpty()&&(r=null):(r=null,o.disableCursor()),r&&(a.hideEventsWithId(t.footprint.eventDef.id),a.renderEventResize(s.eventRangesToEventFootprints(h.sliceRenderRanges(s.dateProfile.renderUnzonedRange,u)),t))},hitOut:function(){r=null},hitDone:function(){a.unrenderEventResize(t),a.showEventsWithId(t.footprint.eventDef.id),o.enableCursor()},interactionEnd:function(e){n&&i.segResizeStop(t,e),r&&a.reportEventResize(h,r,c,e),i.dragListener=null}})},e.prototype.segResizeStart=function(t,e){this.isResizing=!0,this.component.publiclyTrigger("eventResizeStart",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,{},this.view]})},e.prototype.segResizeStop=function(t,e){this.isResizing=!1,this.component.publiclyTrigger("eventResizeStop",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,{},this.view]})},e.prototype.computeEventStartResizeMutation=function(t,e,n){var r,i,o=n.componentFootprint.unzonedRange,l=this.component.diffDates(e.unzonedRange.getStart(),t.unzonedRange.getStart());return o.getStart().add(l)<o.getEnd()&&(r=new a.default,r.setStartDelta(l),i=new s.default,i.setDateMutation(r),i)},e.prototype.computeEventEndResizeMutation=function(t,e,n){var r,i,o=n.componentFootprint.unzonedRange,l=this.component.diffDates(e.unzonedRange.getEnd(),t.unzonedRange.getEnd());return o.getEnd().add(l)>o.getStart()&&(r=new a.default,r.setEndDelta(l),i=new s.default,i.setDateMutation(r),i)},e}(u.default);e.default=d},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=n(39),s=n(40),a=n(59),l=n(17),u=n(226),d=n(14),c=function(t){function e(e,n){var r=t.call(this,e)||this;return r.isDragging=!1,r.eventPointing=n,r}return r.__extends(e,t),e.prototype.end=function(){this.dragListener&&this.dragListener.endInteraction()},e.prototype.getSelectionDelay=function(){var t=this.opt("eventLongPressDelay");return null==t&&(t=this.opt("longPressDelay")),t},e.prototype.bindToEl=function(t){var e=this.component;e.bindSegHandlerToEl(t,"mousedown",this.handleMousedown.bind(this)),e.bindSegHandlerToEl(t,"touchstart",this.handleTouchStart.bind(this))},e.prototype.handleMousedown=function(t,e){!this.component.shouldIgnoreMouse()&&this.component.canStartDrag(t,e)&&this.buildDragListener(t).startInteraction(e,{distance:5})},e.prototype.handleTouchStart=function(t,e){var n=this.component,r={delay:this.view.isEventDefSelected(t.footprint.eventDef)?0:this.getSelectionDelay()};n.canStartDrag(t,e)?this.buildDragListener(t).startInteraction(e,r):n.canStartSelection(t,e)&&this.buildSelectListener(t).startInteraction(e,r)},e.prototype.buildSelectListener=function(t){var e=this,n=this.view,r=t.footprint.eventDef,i=t.footprint.eventInstance;if(this.dragListener)return this.dragListener;var o=this.dragListener=new a.default({dragStart:function(t){o.isTouch&&!n.isEventDefSelected(r)&&i&&n.selectEventInstance(i)},interactionEnd:function(t){e.dragListener=null}});return o},e.prototype.buildDragListener=function(t){var e,n,r,o=this,s=this.component,a=this.view,d=a.calendar,c=d.eventManager,p=t.el,h=t.footprint.eventDef,f=t.footprint.eventInstance;if(this.dragListener)return this.dragListener;var g=this.dragListener=new l.default(a,{scroll:this.opt("dragScroll"),subjectEl:p,subjectCenter:!0,interactionStart:function(r){t.component=s,e=!1,n=new u.default(t.el,{additionalClass:"fc-dragging",parentEl:a.el,opacity:g.isTouch?null:o.opt("dragOpacity"),revertDuration:o.opt("dragRevertDuration"),zIndex:2}),n.hide(),n.start(r)},dragStart:function(n){g.isTouch&&!a.isEventDefSelected(h)&&f&&a.selectEventInstance(f),e=!0,o.eventPointing.handleMouseout(t,n),o.segDragStart(t,n),a.hideEventsWithId(t.footprint.eventDef.id)},hitOver:function(e,l,u){var p,f,v,y=!0;t.hit&&(u=t.hit),p=u.component.getSafeHitFootprint(u),f=e.component.getSafeHitFootprint(e),p&&f?(r=o.computeEventDropMutation(p,f,h),r?(v=c.buildMutatedEventInstanceGroup(h.id,r),y=s.isEventInstanceGroupAllowed(v)):y=!1):y=!1,y||(r=null,i.disableCursor()),r&&a.renderDrag(s.eventRangesToEventFootprints(v.sliceRenderRanges(s.dateProfile.renderUnzonedRange,d)),t,g.isTouch)?n.hide():n.show(),l&&(r=null)},hitOut:function(){a.unrenderDrag(t),n.show(),r=null},hitDone:function(){i.enableCursor()},interactionEnd:function(i){delete t.component,n.stop(!r,function(){e&&(a.unrenderDrag(t),o.segDragStop(t,i)),a.showEventsWithId(t.footprint.eventDef.id),r&&a.reportEventDrop(f,r,p,i)}),o.dragListener=null}});return g},e.prototype.segDragStart=function(t,e){this.isDragging=!0,this.component.publiclyTrigger("eventDragStart",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,{},this.view]})},e.prototype.segDragStop=function(t,e){this.isDragging=!1,this.component.publiclyTrigger("eventDragStop",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,{},this.view]})},e.prototype.computeEventDropMutation=function(t,e,n){var r=new o.default;return r.setDateMutation(this.computeEventDateMutation(t,e)),r},e.prototype.computeEventDateMutation=function(t,e){var n,r,i=t.unzonedRange.getStart(),o=e.unzonedRange.getStart(),a=!1,l=!1,u=!1;return t.isAllDay!==e.isAllDay&&(a=!0,e.isAllDay?(u=!0,i.stripTime()):l=!0),n=this.component.diffDates(o,i),r=new s.default,r.clearEnd=a,r.forceTimed=l,r.forceAllDay=u,r.setDateDelta(n),r},e}(d.default);e.default=c},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=n(17),s=n(12),a=n(5),l=n(14),u=function(t){function e(e){var n=t.call(this,e)||this;return n.dragListener=n.buildDragListener(),n}return r.__extends(e,t),e.prototype.end=function(){this.dragListener.endInteraction()},e.prototype.getDelay=function(){var t=this.opt("selectLongPressDelay");return null==t&&(t=this.opt("longPressDelay")),t},e.prototype.bindToEl=function(t){var e=this,n=this.component,r=this.dragListener;n.bindDateHandlerToEl(t,"mousedown",function(t){e.opt("selectable")&&!n.shouldIgnoreMouse()&&r.startInteraction(t,{distance:e.opt("selectMinDistance")})}),n.bindDateHandlerToEl(t,"touchstart",function(t){e.opt("selectable")&&!n.shouldIgnoreTouch()&&r.startInteraction(t,{delay:e.getDelay()})}),i.preventSelection(t)},e.prototype.buildDragListener=function(){var t,e=this,n=this.component;return new o.default(n,{scroll:this.opt("dragScroll"),interactionStart:function(){t=null},dragStart:function(t){e.view.unselect(t)},hitOver:function(r,o,s){var a,l;s&&(a=n.getSafeHitFootprint(s),l=n.getSafeHitFootprint(r),t=a&&l?e.computeSelection(a,l):null,t?n.renderSelectionFootprint(t):!1===t&&i.disableCursor())},hitOut:function(){t=null,n.unrenderSelection()},hitDone:function(){i.enableCursor()},interactionEnd:function(n,r){!r&&t&&e.view.reportSelection(t,n)}})},e.prototype.computeSelection=function(t,e){var n=this.computeSelectionFootprint(t,e);return!(n&&!this.isSelectionFootprintAllowed(n))&&n},e.prototype.computeSelectionFootprint=function(t,e){var n=[t.unzonedRange.startMs,t.unzonedRange.endMs,e.unzonedRange.startMs,e.unzonedRange.endMs];return n.sort(i.compareNumbers),new s.default(new a.default(n[0],n[3]),t.isAllDay)},e.prototype.isSelectionFootprintAllowed=function(t){return this.component.dateProfile.validUnzonedRange.containsRange(t.unzonedRange)&&this.view.calendar.constraints.isSelectionFootprintAllowed(t)},e}(l.default);e.default=u},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(17),o=n(14),s=function(t){function e(e){var n=t.call(this,e)||this;return n.dragListener=n.buildDragListener(),n}return r.__extends(e,t),e.prototype.end=function(){this.dragListener.endInteraction()},e.prototype.bindToEl=function(t){var e=this.component,n=this.dragListener;e.bindDateHandlerToEl(t,"mousedown",function(t){e.shouldIgnoreMouse()||n.startInteraction(t)}),e.bindDateHandlerToEl(t,"touchstart",function(t){e.shouldIgnoreTouch()||n.startInteraction(t)})},e.prototype.buildDragListener=function(){var t,e=this,n=this.component,r=new i.default(n,{scroll:this.opt("dragScroll"),interactionStart:function(){t=r.origHit},hitOver:function(e,n,r){n||(t=null)},hitOut:function(){t=null},interactionEnd:function(r,i){var o;!i&&t&&(o=n.getSafeHitFootprint(t))&&e.view.triggerDayClick(o,n.getHitEl(t),r)}});return r.shouldCancelTouchScroll=!1,r.scrollAlwaysKills=!0,r},e}(o.default);e.default=s},function(t,e,n){function r(t){var e,n=[],r=[];for(e=0;e<t.length;e++)t[e].componentFootprint.isAllDay?n.push(t[e]):r.push(t[e]);return{allDay:n,timed:r}}Object.defineProperty(e,"__esModule",{value:!0});var i,o,s=n(2),a=n(0),l=n(3),u=n(4),d=n(41),c=n(43),p=n(239),h=n(66),f=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.usesMinMaxTime=!0,r.timeGrid=r.instantiateTimeGrid(),r.addChild(r.timeGrid),r.opt("allDaySlot")&&(r.dayGrid=r.instantiateDayGrid(),r.addChild(r.dayGrid)),r.scroller=new d.default({overflowX:"hidden",overflowY:"auto"}),r}return s.__extends(e,t),e.prototype.instantiateTimeGrid=function(){var t=new this.timeGridClass(this);return u.copyOwnProps(i,t),t},e.prototype.instantiateDayGrid=function(){var t=new this.dayGridClass(this);return u.copyOwnProps(o,t),t},e.prototype.renderSkeleton=function(){var t,e;this.el.addClass("fc-agenda-view").html(this.renderSkeletonHtml()),this.scroller.render(),t=this.scroller.el.addClass("fc-time-grid-container"),e=l('<div class="fc-time-grid" />').appendTo(t),this.el.find(".fc-body > tr > td").append(t),this.timeGrid.headContainerEl=this.el.find(".fc-head-container"),this.timeGrid.setElement(e),this.dayGrid&&(this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight())},e.prototype.unrenderSkeleton=function(){this.timeGrid.removeElement(),this.dayGrid&&this.dayGrid.removeElement(),this.scroller.destroy()},e.prototype.renderSkeletonHtml=function(){var t=this.calendar.theme;return'<table class="'+t.getClass("tableGrid")+'">'+(this.opt("columnHeader")?'<thead class="fc-head"><tr><td class="fc-head-container '+t.getClass("widgetHeader")+'">&nbsp;</td></tr></thead>':"")+'<tbody class="fc-body"><tr><td class="'+t.getClass("widgetContent")+'">'+(this.dayGrid?'<div class="fc-day-grid"/><hr class="fc-divider '+t.getClass("widgetHeader")+'"/>':"")+"</td></tr></tbody></table>"},e.prototype.axisStyleAttr=function(){return null!=this.axisWidth?'style="width:'+this.axisWidth+'px"':""},e.prototype.getNowIndicatorUnit=function(){return this.timeGrid.getNowIndicatorUnit()},e.prototype.updateSize=function(e,n,r){var i,o,s;if(t.prototype.updateSize.call(this,e,n,r),this.axisWidth=u.matchCellWidths(this.el.find(".fc-axis")),!this.timeGrid.colEls)return void(n||(o=this.computeScrollerHeight(e),this.scroller.setHeight(o)));var a=this.el.find(".fc-row:not(.fc-scroller *)");this.timeGrid.bottomRuleEl.hide(),this.scroller.clear(),u.uncompensateScroll(a),this.dayGrid&&(this.dayGrid.removeSegPopover(),i=this.opt("eventLimit"),i&&"number"!=typeof i&&(i=5),i&&this.dayGrid.limitRows(i)),n||(o=this.computeScrollerHeight(e),this.scroller.setHeight(o),s=this.scroller.getScrollbarWidths(),(s.left||s.right)&&(u.compensateScroll(a,s),o=this.computeScrollerHeight(e),this.scroller.setHeight(o)),this.scroller.lockOverflow(s),this.timeGrid.getTotalSlatHeight()<o&&this.timeGrid.bottomRuleEl.show())},e.prototype.computeScrollerHeight=function(t){return t-u.subtractInnerElHeight(this.el,this.scroller.el)},e.prototype.computeInitialDateScroll=function(){var t=a.duration(this.opt("scrollTime")),e=this.timeGrid.computeTimeTop(t);return e=Math.ceil(e),e&&e++,{top:e}},e.prototype.queryDateScroll=function(){return{top:this.scroller.getScrollTop()}},e.prototype.applyDateScroll=function(t){void 0!==t.top&&this.scroller.setScrollTop(t.top)},e.prototype.getHitFootprint=function(t){return t.component.getHitFootprint(t)},e.prototype.getHitEl=function(t){return t.component.getHitEl(t)},e.prototype.executeEventRender=function(t){var e,n,r={},i={};for(e in t)n=t[e],n.getEventDef().isAllDay()?r[e]=n:i[e]=n;this.timeGrid.executeEventRender(i),this.dayGrid&&this.dayGrid.executeEventRender(r)},e.prototype.renderDrag=function(t,e,n){var i=r(t),o=!1;return o=this.timeGrid.renderDrag(i.timed,e,n),this.dayGrid&&(o=this.dayGrid.renderDrag(i.allDay,e,n)||o),o},e.prototype.renderEventResize=function(t,e,n){var i=r(t);this.timeGrid.renderEventResize(i.timed,e,n),this.dayGrid&&this.dayGrid.renderEventResize(i.allDay,e,n)},e.prototype.renderSelectionFootprint=function(t){t.isAllDay?this.dayGrid&&this.dayGrid.renderSelectionFootprint(t):this.timeGrid.renderSelectionFootprint(t)},e}(c.default);e.default=f,f.prototype.timeGridClass=p.default,f.prototype.dayGridClass=h.default,i={renderHeadIntroHtml:function(){var t,e=this.view,n=e.calendar,r=n.msToUtcMoment(this.dateProfile.renderUnzonedRange.startMs,!0);return this.opt("weekNumbers")?(t=r.format(this.opt("smallWeekFormat")),'<th class="fc-axis fc-week-number '+n.theme.getClass("widgetHeader")+'" '+e.axisStyleAttr()+">"+e.buildGotoAnchorHtml({date:r,type:"week",forceOff:this.colCnt>1},u.htmlEscape(t))+"</th>"):'<th class="fc-axis '+n.theme.getClass("widgetHeader")+'" '+e.axisStyleAttr()+"></th>"},renderBgIntroHtml:function(){var t=this.view;return'<td class="fc-axis '+t.calendar.theme.getClass("widgetContent")+'" '+t.axisStyleAttr()+"></td>"},renderIntroHtml:function(){return'<td class="fc-axis" '+this.view.axisStyleAttr()+"></td>"}},o={renderBgIntroHtml:function(){var t=this.view;return'<td class="fc-axis '+t.calendar.theme.getClass("widgetContent")+'" '+t.axisStyleAttr()+"><span>"+t.getAllDayHtml()+"</span></td>"},renderIntroHtml:function(){return'<td class="fc-axis" '+this.view.axisStyleAttr()+"></td>"}}},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(0),s=n(4),a=n(42),l=n(61),u=n(65),d=n(60),c=n(58),p=n(5),h=n(12),f=n(240),g=n(241),v=n(242),y=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}],m=function(t){function e(e){var n=t.call(this,e)||this;return n.processOptions(),n}return r.__extends(e,t),e.prototype.componentFootprintToSegs=function(t){var e,n=this.sliceRangeByTimes(t.unzonedRange);for(e=0;e<n.length;e++)this.isRTL?n[e].col=this.daysPerRow-1-n[e].dayIndex:n[e].col=n[e].dayIndex;return n},e.prototype.sliceRangeByTimes=function(t){var e,n,r=[];for(n=0;n<this.daysPerRow;n++)(e=t.intersect(this.dayRanges[n]))&&r.push({startMs:e.startMs,endMs:e.endMs,isStart:e.isStart,isEnd:e.isEnd,dayIndex:n});return r},e.prototype.processOptions=function(){var t,e=this.opt("slotDuration"),n=this.opt("snapDuration");e=o.duration(e),n=n?o.duration(n):e,this.slotDuration=e,this.snapDuration=n,this.snapsPerSlot=e/n,t=this.opt("slotLabelFormat"),i.isArray(t)&&(t=t[t.length-1]),this.labelFormat=t||this.opt("smallTimeFormat"),t=this.opt("slotLabelInterval"),this.labelInterval=t?o.duration(t):this.computeLabelInterval(e)},e.prototype.computeLabelInterval=function(t){var e,n,r;for(e=y.length-1;e>=0;e--)if(n=o.duration(y[e]),r=s.divideDurationByDuration(n,t),s.isInt(r)&&r>1)return n;return o.duration(t)},e.prototype.renderDates=function(t){this.dateProfile=t,this.updateDayTable(),this.renderSlats(),this.renderColumns()},e.prototype.unrenderDates=function(){this.unrenderColumns()},e.prototype.renderSkeleton=function(){var t=this.view.calendar.theme;this.el.html('<div class="fc-bg"></div><div class="fc-slats"></div><hr class="fc-divider '+t.getClass("widgetHeader")+'" style="display:none" />'),this.bottomRuleEl=this.el.find("hr")},e.prototype.renderSlats=function(){var t=this.view.calendar.theme;this.slatContainerEl=this.el.find("> .fc-slats").html('<table class="'+t.getClass("tableGrid")+'">'+this.renderSlatRowHtml()+"</table>"),this.slatEls=this.slatContainerEl.find("tr"),this.slatCoordCache=new c.default({els:this.slatEls,isVertical:!0})},e.prototype.renderSlatRowHtml=function(){for(var t,e,n,r=this.view,i=r.calendar,a=i.theme,l=this.isRTL,u=this.dateProfile,d="",c=o.duration(+u.minTime),p=o.duration(0);c<u.maxTime;)t=i.msToUtcMoment(u.renderUnzonedRange.startMs).time(c),e=s.isInt(s.divideDurationByDuration(p,this.labelInterval)),n='<td class="fc-axis fc-time '+a.getClass("widgetContent")+'" '+r.axisStyleAttr()+">"+(e?"<span>"+s.htmlEscape(t.format(this.labelFormat))+"</span>":"")+"</td>",d+='<tr data-time="'+t.format("HH:mm:ss")+'"'+(e?"":' class="fc-minor"')+">"+(l?"":n)+'<td class="'+a.getClass("widgetContent")+'"/>'+(l?n:"")+"</tr>",c.add(this.slotDuration),p.add(this.slotDuration);return d},e.prototype.renderColumns=function(){var t=this.dateProfile,e=this.view.calendar.theme;this.dayRanges=this.dayDates.map(function(e){return new p.default(e.clone().add(t.minTime),e.clone().add(t.maxTime))}),this.headContainerEl&&this.headContainerEl.html(this.renderHeadHtml()),this.el.find("> .fc-bg").html('<table class="'+e.getClass("tableGrid")+'">'+this.renderBgTrHtml(0)+"</table>"),this.colEls=this.el.find(".fc-day, .fc-disabled-day"),this.colCoordCache=new c.default({els:this.colEls,isHorizontal:!0}),this.renderContentSkeleton()},e.prototype.unrenderColumns=function(){this.unrenderContentSkeleton()},e.prototype.renderContentSkeleton=function(){var t,e,n="";for(t=0;t<this.colCnt;t++)n+='<td><div class="fc-content-col"><div class="fc-event-container fc-helper-container"></div><div class="fc-event-container"></div><div class="fc-highlight-container"></div><div class="fc-bgevent-container"></div><div class="fc-business-container"></div></div></td>';e=this.contentSkeletonEl=i('<div class="fc-content-skeleton"><table><tr>'+n+"</tr></table></div>"),this.colContainerEls=e.find(".fc-content-col"),this.helperContainerEls=e.find(".fc-helper-container"),this.fgContainerEls=e.find(".fc-event-container:not(.fc-helper-container)"),this.bgContainerEls=e.find(".fc-bgevent-container"),this.highlightContainerEls=e.find(".fc-highlight-container"),this.businessContainerEls=e.find(".fc-business-container"),this.bookendCells(e.find("tr")),this.el.append(e)},e.prototype.unrenderContentSkeleton=function(){this.contentSkeletonEl&&(this.contentSkeletonEl.remove(),this.contentSkeletonEl=null,this.colContainerEls=null,this.helperContainerEls=null,this.fgContainerEls=null,this.bgContainerEls=null,this.highlightContainerEls=null,this.businessContainerEls=null)},e.prototype.groupSegsByCol=function(t){var e,n=[];for(e=0;e<this.colCnt;e++)n.push([]);for(e=0;e<t.length;e++)n[t[e].col].push(t[e]);return n},e.prototype.attachSegsByCol=function(t,e){var n,r,i;for(n=0;n<this.colCnt;n++)for(r=t[n],i=0;i<r.length;i++)e.eq(n).append(r[i].el)},e.prototype.getNowIndicatorUnit=function(){return"minute"},e.prototype.renderNowIndicator=function(t){if(this.colContainerEls){var e,n=this.componentFootprintToSegs(new h.default(new p.default(t,t.valueOf()+1),!1)),r=this.computeDateTop(t,t),o=[];for(e=0;e<n.length;e++)o.push(i('<div class="fc-now-indicator fc-now-indicator-line"></div>').css("top",r).appendTo(this.colContainerEls.eq(n[e].col))[0]);n.length>0&&o.push(i('<div class="fc-now-indicator fc-now-indicator-arrow"></div>').css("top",r).appendTo(this.el.find(".fc-content-skeleton"))[0]),this.nowIndicatorEls=i(o)}},e.prototype.unrenderNowIndicator=function(){this.nowIndicatorEls&&(this.nowIndicatorEls.remove(),this.nowIndicatorEls=null)},e.prototype.updateSize=function(e,n,r){t.prototype.updateSize.call(this,e,n,r),this.slatCoordCache.build(),r&&this.updateSegVerticals([].concat(this.eventRenderer.getSegs(),this.businessSegs||[]))},e.prototype.getTotalSlatHeight=function(){return this.slatContainerEl.outerHeight()},e.prototype.computeDateTop=function(t,e){return this.computeTimeTop(o.duration(t-e.clone().stripTime()))},e.prototype.computeTimeTop=function(t){var e,n,r=this.slatEls.length,i=this.dateProfile,o=(t-i.minTime)/this.slotDuration;return o=Math.max(0,o),o=Math.min(r,o),e=Math.floor(o),e=Math.min(e,r-1),n=o-e,this.slatCoordCache.getTopPosition(e)+this.slatCoordCache.getHeight(e)*n},e.prototype.updateSegVerticals=function(t){this.computeSegVerticals(t),this.assignSegVerticals(t)},e.prototype.computeSegVerticals=function(t){var e,n,r,i=this.opt("agendaEventMinHeight");for(e=0;e<t.length;e++)n=t[e],r=this.dayDates[n.dayIndex],n.top=this.computeDateTop(n.startMs,r),n.bottom=Math.max(n.top+i,this.computeDateTop(n.endMs,r))},e.prototype.assignSegVerticals=function(t){var e,n;for(e=0;e<t.length;e++)n=t[e],n.el.css(this.generateSegVerticalCss(n))},e.prototype.generateSegVerticalCss=function(t){return{top:t.top,bottom:-t.bottom}},e.prototype.prepareHits=function(){this.colCoordCache.build(),this.slatCoordCache.build()},e.prototype.releaseHits=function(){this.colCoordCache.clear()},e.prototype.queryHit=function(t,e){var n=this.snapsPerSlot,r=this.colCoordCache,i=this.slatCoordCache;if(r.isLeftInBounds(t)&&i.isTopInBounds(e)){var o=r.getHorizontalIndex(t),s=i.getVerticalIndex(e);if(null!=o&&null!=s){var a=i.getTopOffset(s),l=i.getHeight(s),u=(e-a)/l,d=Math.floor(u*n),c=s*n+d,p=a+d/n*l,h=a+(d+1)/n*l;return{col:o,snap:c,component:this,left:r.getLeftOffset(o),right:r.getRightOffset(o),top:p,bottom:h}}}},e.prototype.getHitFootprint=function(t){var e,n=this.getCellDate(0,t.col),r=this.computeSnapTime(t.snap);return n.time(r),e=n.clone().add(this.snapDuration),new h.default(new p.default(n,e),!1)},e.prototype.computeSnapTime=function(t){return o.duration(this.dateProfile.minTime+this.snapDuration*t)},e.prototype.getHitEl=function(t){return this.colEls.eq(t.col)},e.prototype.renderDrag=function(t,e,n){var r;if(e){if(t.length)return this.helperRenderer.renderEventDraggingFootprints(t,e,n),!0}else for(r=0;r<t.length;r++)this.renderHighlight(t[r].componentFootprint)},e.prototype.unrenderDrag=function(){this.unrenderHighlight(),this.helperRenderer.unrender()},e.prototype.renderEventResize=function(t,e,n){this.helperRenderer.renderEventResizingFootprints(t,e,n)},e.prototype.unrenderEventResize=function(){this.helperRenderer.unrender()},e.prototype.renderSelectionFootprint=function(t){this.opt("selectHelper")?this.helperRenderer.renderComponentFootprint(t):this.renderHighlight(t)},e.prototype.unrenderSelection=function(){this.helperRenderer.unrender(),this.unrenderHighlight()},e}(a.default);e.default=m,m.prototype.eventRendererClass=f.default,m.prototype.businessHourRendererClass=l.default,m.prototype.helperRendererClass=g.default,m.prototype.fillRendererClass=v.default,u.default.mixInto(m),d.default.mixInto(m)},function(t,e,n){function r(t){var e,n,r,i=[];for(e=0;e<t.length;e++){for(n=t[e],r=0;r<i.length&&s(n,i[r]).length;r++);n.level=r,(i[r]||(i[r]=[])).push(n)}return i}function i(t){var e,n,r,i,o;for(e=0;e<t.length;e++)for(n=t[e],r=0;r<n.length;r++)for(i=n[r],i.forwardSegs=[],o=e+1;o<t.length;o++)s(i,t[o],i.forwardSegs)}function o(t){var e,n,r=t.forwardSegs,i=0;if(void 0===t.forwardPressure){for(e=0;e<r.length;e++)n=r[e],o(n),i=Math.max(i,1+n.forwardPressure);t.forwardPressure=i}}function s(t,e,n){void 0===n&&(n=[]);for(var r=0;r<e.length;r++)a(t,e[r])&&n.push(e[r]);return n}function a(t,e){return t.bottom>e.top&&t.top<e.bottom}Object.defineProperty(e,"__esModule",{value:!0});var l=n(2),u=n(4),d=n(44),c=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.timeGrid=e,r}return l.__extends(e,t),e.prototype.renderFgSegs=function(t){this.renderFgSegsIntoContainers(t,this.timeGrid.fgContainerEls)},e.prototype.renderFgSegsIntoContainers=function(t,e){var n,r;for(n=this.timeGrid.groupSegsByCol(t),r=0;r<this.timeGrid.colCnt;r++)this.updateFgSegCoords(n[r]);this.timeGrid.attachSegsByCol(n,e)},e.prototype.unrenderFgSegs=function(){this.fgSegs&&this.fgSegs.forEach(function(t){t.el.remove()})},e.prototype.computeEventTimeFormat=function(){return this.opt("noMeridiemTimeFormat")},e.prototype.computeDisplayEventEnd=function(){return!0},e.prototype.fgSegHtml=function(t,e){
+var n,r,i,o=this.view,s=o.calendar,a=t.footprint.componentFootprint,l=a.isAllDay,d=t.footprint.eventDef,c=o.isEventDefDraggable(d),p=!e&&t.isStart&&o.isEventDefResizableFromStart(d),h=!e&&t.isEnd&&o.isEventDefResizableFromEnd(d),f=this.getSegClasses(t,c,p||h),g=u.cssToStr(this.getSkinCss(d));if(f.unshift("fc-time-grid-event","fc-v-event"),o.isMultiDayRange(a.unzonedRange)){if(t.isStart||t.isEnd){var v=s.msToMoment(t.startMs),y=s.msToMoment(t.endMs);n=this._getTimeText(v,y,l),r=this._getTimeText(v,y,l,"LT"),i=this._getTimeText(v,y,l,null,!1)}}else n=this.getTimeText(t.footprint),r=this.getTimeText(t.footprint,"LT"),i=this.getTimeText(t.footprint,null,!1);return'<a class="'+f.join(" ")+'"'+(d.url?' href="'+u.htmlEscape(d.url)+'"':"")+(g?' style="'+g+'"':"")+'><div class="fc-content">'+(n?'<div class="fc-time" data-start="'+u.htmlEscape(i)+'" data-full="'+u.htmlEscape(r)+'"><span>'+u.htmlEscape(n)+"</span></div>":"")+(d.title?'<div class="fc-title">'+u.htmlEscape(d.title)+"</div>":"")+'</div><div class="fc-bg"/>'+(h?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},e.prototype.updateFgSegCoords=function(t){this.timeGrid.computeSegVerticals(t),this.computeFgSegHorizontals(t),this.timeGrid.assignSegVerticals(t),this.assignFgSegHorizontals(t)},e.prototype.computeFgSegHorizontals=function(t){var e,n,s;if(this.sortEventSegs(t),e=r(t),i(e),n=e[0]){for(s=0;s<n.length;s++)o(n[s]);for(s=0;s<n.length;s++)this.computeFgSegForwardBack(n[s],0,0)}},e.prototype.computeFgSegForwardBack=function(t,e,n){var r,i=t.forwardSegs;if(void 0===t.forwardCoord)for(i.length?(this.sortForwardSegs(i),this.computeFgSegForwardBack(i[0],e+1,n),t.forwardCoord=i[0].backwardCoord):t.forwardCoord=1,t.backwardCoord=t.forwardCoord-(t.forwardCoord-n)/(e+1),r=0;r<i.length;r++)this.computeFgSegForwardBack(i[r],0,t.forwardCoord)},e.prototype.sortForwardSegs=function(t){t.sort(u.proxy(this,"compareForwardSegs"))},e.prototype.compareForwardSegs=function(t,e){return e.forwardPressure-t.forwardPressure||(t.backwardCoord||0)-(e.backwardCoord||0)||this.compareEventSegs(t,e)},e.prototype.assignFgSegHorizontals=function(t){var e,n;for(e=0;e<t.length;e++)n=t[e],n.el.css(this.generateFgSegHorizontalCss(n)),n.footprint.eventDef.title&&n.bottom-n.top<30&&n.el.addClass("fc-short")},e.prototype.generateFgSegHorizontalCss=function(t){var e,n,r=this.opt("slotEventOverlap"),i=t.backwardCoord,o=t.forwardCoord,s=this.timeGrid.generateSegVerticalCss(t),a=this.timeGrid.isRTL;return r&&(o=Math.min(1,i+2*(o-i))),a?(e=1-o,n=i):(e=i,n=1-o),s.zIndex=t.level+1,s.left=100*e+"%",s.right=100*n+"%",r&&t.forwardPressure&&(s[a?"marginLeft":"marginRight"]=20),s},e}(d.default);e.default=c},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(63),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.renderSegs=function(t,e){var n,r,o,s=[];for(this.eventRenderer.renderFgSegsIntoContainers(t,this.component.helperContainerEls),n=0;n<t.length;n++)r=t[n],e&&e.col===r.col&&(o=e.el,r.el.css({left:o.css("left"),right:o.css("right"),"margin-left":o.css("margin-left"),"margin-right":o.css("margin-right")})),s.push(r.el[0]);return i(s)},e}(o.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(62),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.attachSegEls=function(t,e){var n,r=this.component;return"bgEvent"===t?n=r.bgContainerEls:"businessHours"===t?n=r.businessContainerEls:"highlight"===t&&(n=r.highlightContainerEls),r.updateSegVerticals(e),r.attachSegsByCol(r.groupSegsByCol(e),n),e.map(function(t){return t.el[0]})},e}(i.default);e.default=o},function(t,e,n){function r(t,e){var n,r;for(n=0;n<e.length;n++)if(r=e[n],r.leftCol<=t.rightCol&&r.rightCol>=t.leftCol)return!0;return!1}function i(t,e){return t.leftCol-e.leftCol}Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),s=n(3),a=n(4),l=n(44),u=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.dayGrid=e,r}return o.__extends(e,t),e.prototype.renderBgRanges=function(e){e=s.grep(e,function(t){return t.eventDef.isAllDay()}),t.prototype.renderBgRanges.call(this,e)},e.prototype.renderFgSegs=function(t){var e=this.rowStructs=this.renderSegRows(t);this.dayGrid.rowEls.each(function(t,n){s(n).find(".fc-content-skeleton > table").append(e[t].tbodyEl)})},e.prototype.unrenderFgSegs=function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},e.prototype.renderSegRows=function(t){var e,n,r=[];for(e=this.groupSegRows(t),n=0;n<e.length;n++)r.push(this.renderSegRow(n,e[n]));return r},e.prototype.renderSegRow=function(t,e){function n(t){for(;o<t;)d=(y[r-1]||[])[o],d?d.attr("rowspan",parseInt(d.attr("rowspan")||1,10)+1):(d=s("<td/>"),a.append(d)),v[r][o]=d,y[r][o]=d,o++}var r,i,o,a,l,u,d,c=this.dayGrid.colCnt,p=this.buildSegLevels(e),h=Math.max(1,p.length),f=s("<tbody/>"),g=[],v=[],y=[];for(r=0;r<h;r++){if(i=p[r],o=0,a=s("<tr/>"),g.push([]),v.push([]),y.push([]),i)for(l=0;l<i.length;l++){for(u=i[l],n(u.leftCol),d=s('<td class="fc-event-container"/>').append(u.el),u.leftCol!==u.rightCol?d.attr("colspan",u.rightCol-u.leftCol+1):y[r][o]=d;o<=u.rightCol;)v[r][o]=d,g[r][o]=u,o++;a.append(d)}n(c),this.dayGrid.bookendCells(a),f.append(a)}return{row:t,tbodyEl:f,cellMatrix:v,segMatrix:g,segLevels:p,segs:e}},e.prototype.buildSegLevels=function(t){var e,n,o,s=[];for(this.sortEventSegs(t),e=0;e<t.length;e++){for(n=t[e],o=0;o<s.length&&r(n,s[o]);o++);n.level=o,(s[o]||(s[o]=[])).push(n)}for(o=0;o<s.length;o++)s[o].sort(i);return s},e.prototype.groupSegRows=function(t){var e,n=[];for(e=0;e<this.dayGrid.rowCnt;e++)n.push([]);for(e=0;e<t.length;e++)n[t[e].row].push(t[e]);return n},e.prototype.computeEventTimeFormat=function(){return this.opt("extraSmallTimeFormat")},e.prototype.computeDisplayEventEnd=function(){return 1===this.dayGrid.colCnt},e.prototype.fgSegHtml=function(t,e){var n,r,i=this.view,o=t.footprint.eventDef,s=t.footprint.componentFootprint.isAllDay,l=i.isEventDefDraggable(o),u=!e&&s&&t.isStart&&i.isEventDefResizableFromStart(o),d=!e&&s&&t.isEnd&&i.isEventDefResizableFromEnd(o),c=this.getSegClasses(t,l,u||d),p=a.cssToStr(this.getSkinCss(o)),h="";return c.unshift("fc-day-grid-event","fc-h-event"),t.isStart&&(n=this.getTimeText(t.footprint))&&(h='<span class="fc-time">'+a.htmlEscape(n)+"</span>"),r='<span class="fc-title">'+(a.htmlEscape(o.title||"")||"&nbsp;")+"</span>",'<a class="'+c.join(" ")+'"'+(o.url?' href="'+a.htmlEscape(o.url)+'"':"")+(p?' style="'+p+'"':"")+'><div class="fc-content">'+(this.dayGrid.isRTL?r+" "+h:h+" "+r)+"</div>"+(u?'<div class="fc-resizer fc-start-resizer" />':"")+(d?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},e}(l.default);e.default=u},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(63),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.renderSegs=function(t,e){var n,r=[];return n=this.eventRenderer.renderSegRows(t),this.component.rowEls.each(function(t,o){var s,a,l=i(o),u=i('<div class="fc-helper-skeleton"><table/></div>');e&&e.row===t?a=e.el.position().top:(s=l.find(".fc-content-skeleton tbody"),s.length||(s=l.find(".fc-content-skeleton table")),a=s.position().top),u.css("top",a).find("table").append(n[t].tbodyEl),l.append(u),r.push(u[0])}),i(r)},e}(o.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(62),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.fillSegTag="td",e}return r.__extends(e,t),e.prototype.attachSegEls=function(t,e){var n,r,i,o=[];for(n=0;n<e.length;n++)r=e[n],i=this.renderFillRow(t,r),this.component.rowEls.eq(r.row).append(i),o.push(i[0]);return o},e.prototype.renderFillRow=function(t,e){var n,r,o,s=this.component.colCnt,a=e.leftCol,l=e.rightCol+1;return n="businessHours"===t?"bgevent":t.toLowerCase(),r=i('<div class="fc-'+n+'-skeleton"><table><tr/></table></div>'),o=r.find("tr"),a>0&&o.append(new Array(a+1).join("<td/>")),o.append(e.el.attr("colspan",l-a)),l<s&&o.append(new Array(s-l+1).join("<td/>")),this.component.bookendCells(o),r},e}(o.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(0),o=n(4),s=n(67),a=n(247),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.setGridHeight=function(t,e){e&&(t*=this.dayGrid.rowCnt/6),o.distributeHeight(this.dayGrid.rowEls,t,!e)},e.prototype.isDateInOtherMonth=function(t,e){return t.month()!==i.utc(e.currentUnzonedRange.startMs).month()},e}(s.default);e.default=l,l.prototype.dateProfileGeneratorClass=a.default},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(68),o=n(5),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.buildRenderRange=function(e,n,r){var i,s=t.prototype.buildRenderRange.call(this,e,n,r),a=this.msToUtcMoment(s.startMs,r),l=this.msToUtcMoment(s.endMs,r);return this.opt("fixedWeekCount")&&(i=Math.ceil(l.diff(a,"weeks",!0)),l.add(6-i,"weeks")),new o.default(a,l)},e}(i.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(5),a=n(43),l=n(41),u=n(249),d=n(250),c=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.segSelector=".fc-list-item",r.scroller=new l.default({overflowX:"hidden",overflowY:"auto"}),r}return r.__extends(e,t),e.prototype.renderSkeleton=function(){this.el.addClass("fc-list-view "+this.calendar.theme.getClass("listView")),this.scroller.render(),this.scroller.el.appendTo(this.el),this.contentEl=this.scroller.scrollEl},e.prototype.unrenderSkeleton=function(){this.scroller.destroy()},e.prototype.updateSize=function(e,n,r){t.prototype.updateSize.call(this,e,n,r),this.scroller.clear(),n||this.scroller.setHeight(this.computeScrollerHeight(e))},e.prototype.computeScrollerHeight=function(t){return t-o.subtractInnerElHeight(this.el,this.scroller.el)},e.prototype.renderDates=function(t){for(var e=this.calendar,n=e.msToUtcMoment(t.renderUnzonedRange.startMs,!0),r=e.msToUtcMoment(t.renderUnzonedRange.endMs,!0),i=[],o=[];n<r;)i.push(n.clone()),o.push(new s.default(n,n.clone().add(1,"day"))),n.add(1,"day");this.dayDates=i,this.dayRanges=o},e.prototype.componentFootprintToSegs=function(t){var e,n,r,i=this.dayRanges,o=[];for(e=0;e<i.length;e++)if((n=t.unzonedRange.intersect(i[e]))&&(r={startMs:n.startMs,endMs:n.endMs,isStart:n.isStart,isEnd:n.isEnd,dayIndex:e},o.push(r),!r.isEnd&&!t.isAllDay&&e+1<i.length&&t.unzonedRange.endMs<i[e+1].startMs+this.nextDayThreshold)){r.endMs=t.unzonedRange.endMs,r.isEnd=!0;break}return o},e.prototype.renderEmptyMessage=function(){this.contentEl.html('<div class="fc-list-empty-wrap2"><div class="fc-list-empty-wrap1"><div class="fc-list-empty">'+o.htmlEscape(this.opt("noEventsMessage"))+"</div></div></div>")},e.prototype.renderSegList=function(t){var e,n,r,o=this.groupSegsByDay(t),s=i('<table class="fc-list-table '+this.calendar.theme.getClass("tableList")+'"><tbody/></table>'),a=s.find("tbody");for(e=0;e<o.length;e++)if(n=o[e])for(a.append(this.dayHeaderHtml(this.dayDates[e])),this.eventRenderer.sortEventSegs(n),r=0;r<n.length;r++)a.append(n[r].el);this.contentEl.empty().append(s)},e.prototype.groupSegsByDay=function(t){var e,n,r=[];for(e=0;e<t.length;e++)n=t[e],(r[n.dayIndex]||(r[n.dayIndex]=[])).push(n);return r},e.prototype.dayHeaderHtml=function(t){var e=this.opt("listDayFormat"),n=this.opt("listDayAltFormat");return'<tr class="fc-list-heading" data-date="'+t.format("YYYY-MM-DD")+'"><td class="'+(this.calendar.theme.getClass("tableListHeading")||this.calendar.theme.getClass("widgetHeader"))+'" colspan="3">'+(e?this.buildGotoAnchorHtml(t,{class:"fc-list-heading-main"},o.htmlEscape(t.format(e))):"")+(n?this.buildGotoAnchorHtml(t,{class:"fc-list-heading-alt"},o.htmlEscape(t.format(n))):"")+"</td></tr>"},e}(a.default);e.default=c,c.prototype.eventRendererClass=u.default,c.prototype.eventPointingClass=d.default},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=n(44),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.renderFgSegs=function(t){t.length?this.component.renderSegList(t):this.component.renderEmptyMessage()},e.prototype.fgSegHtml=function(t){var e,n=this.view,r=n.calendar,o=r.theme,s=t.footprint,a=s.eventDef,l=s.componentFootprint,u=a.url,d=["fc-list-item"].concat(this.getClasses(a)),c=this.getBgColor(a);return e=l.isAllDay?n.getAllDayHtml():n.isMultiDayRange(l.unzonedRange)?t.isStart||t.isEnd?i.htmlEscape(this._getTimeText(r.msToMoment(t.startMs),r.msToMoment(t.endMs),l.isAllDay)):n.getAllDayHtml():i.htmlEscape(this.getTimeText(s)),u&&d.push("fc-has-url"),'<tr class="'+d.join(" ")+'">'+(this.displayEventTime?'<td class="fc-list-item-time '+o.getClass("widgetContent")+'">'+(e||"")+"</td>":"")+'<td class="fc-list-item-marker '+o.getClass("widgetContent")+'"><span class="fc-event-dot"'+(c?' style="background-color:'+c+'"':"")+'></span></td><td class="fc-list-item-title '+o.getClass("widgetContent")+'"><a'+(u?' href="'+i.htmlEscape(u)+'"':"")+">"+i.htmlEscape(a.title||"")+"</a></td></tr>"},e.prototype.computeEventTimeFormat=function(){return this.opt("mediumTimeFormat")},e}(o.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(64),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.handleClick=function(e,n){var r;t.prototype.handleClick.call(this,e,n),i(n.target).closest("a[href]").length||(r=e.footprint.eventDef.url)&&!n.isDefaultPrevented()&&(window.location.href=r)},e}(o.default);e.default=s},,,,,,function(t,e,n){var r=n(3),i=n(18),o=n(4),s=n(232);n(11),n(49),n(260),n(261),n(264),n(265),n(266),n(267),r.fullCalendar=i,r.fn.fullCalendar=function(t){var e=Array.prototype.slice.call(arguments,1),n=this;return this.each(function(i,a){var l,u=r(a),d=u.data("fullCalendar");"string"==typeof t?"getCalendar"===t?i||(n=d):"destroy"===t?d&&(d.destroy(),u.removeData("fullCalendar")):d?r.isFunction(d[t])?(l=d[t].apply(d,e),i||(n=l),"destroy"===t&&u.removeData("fullCalendar")):o.warn("'"+t+"' is an unknown FullCalendar method."):o.warn("Attempting to call a FullCalendar method on an element with no calendar."):d||(d=new s.default(u,t),u.data("fullCalendar",d),d.render())}),n},t.exports=i},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=function(){function t(t,e){this.el=null,this.viewsWithButtons=[],this.calendar=t,this.toolbarOptions=e}return t.prototype.setToolbarOptions=function(t){this.toolbarOptions=t},t.prototype.render=function(){var t=this.toolbarOptions.layout,e=this.el;t?(e?e.empty():e=this.el=r("<div class='fc-toolbar "+this.toolbarOptions.extraClasses+"'/>"),e.append(this.renderSection("left")).append(this.renderSection("right")).append(this.renderSection("center")).append('<div class="fc-clear"/>')):this.removeElement()},t.prototype.removeElement=function(){this.el&&(this.el.remove(),this.el=null)},t.prototype.renderSection=function(t){var e=this,n=this.calendar,o=n.theme,s=n.optionsManager,a=n.viewSpecManager,l=r('<div class="fc-'+t+'"/>'),u=this.toolbarOptions.layout[t],d=s.get("customButtons")||{},c=s.overrides.buttonText||{},p=s.get("buttonText")||{};return u&&r.each(u.split(" "),function(t,s){var u,h=r(),f=!0;r.each(s.split(","),function(t,s){var l,u,g,v,y,m,b,w,D;"title"===s?(h=h.add(r("<h2>&nbsp;</h2>")),f=!1):((l=d[s])?(g=function(t){l.click&&l.click.call(w[0],t)},(v=o.getCustomButtonIconClass(l))||(v=o.getIconClass(s))||(y=l.text)):(u=a.getViewSpec(s))?(e.viewsWithButtons.push(s),g=function(){n.changeView(s)},(y=u.buttonTextOverride)||(v=o.getIconClass(s))||(y=u.buttonTextDefault)):n[s]&&(g=function(){n[s]()},(y=c[s])||(v=o.getIconClass(s))||(y=p[s])),g&&(b=["fc-"+s+"-button",o.getClass("button"),o.getClass("stateDefault")],y?(m=i.htmlEscape(y),D=""):v&&(m="<span class='"+v+"'></span>",D=' aria-label="'+s+'"'),w=r('<button type="button" class="'+b.join(" ")+'"'+D+">"+m+"</button>").click(function(t){w.hasClass(o.getClass("stateDisabled"))||(g(t),(w.hasClass(o.getClass("stateActive"))||w.hasClass(o.getClass("stateDisabled")))&&w.removeClass(o.getClass("stateHover")))}).mousedown(function(){w.not("."+o.getClass("stateActive")).not("."+o.getClass("stateDisabled")).addClass(o.getClass("stateDown"))}).mouseup(function(){w.removeClass(o.getClass("stateDown"))}).hover(function(){w.not("."+o.getClass("stateActive")).not("."+o.getClass("stateDisabled")).addClass(o.getClass("stateHover"))},function(){w.removeClass(o.getClass("stateHover")).removeClass(o.getClass("stateDown"))}),h=h.add(w)))}),f&&h.first().addClass(o.getClass("cornerLeft")).end().last().addClass(o.getClass("cornerRight")).end(),h.length>1?(u=r("<div/>"),f&&u.addClass(o.getClass("buttonGroup")),u.append(h),l.append(u)):l.append(h)}),l},t.prototype.updateTitle=function(t){this.el&&this.el.find("h2").text(t)},t.prototype.activateButton=function(t){this.el&&this.el.find(".fc-"+t+"-button").addClass(this.calendar.theme.getClass("stateActive"))},t.prototype.deactivateButton=function(t){this.el&&this.el.find(".fc-"+t+"-button").removeClass(this.calendar.theme.getClass("stateActive"))},t.prototype.disableButton=function(t){this.el&&this.el.find(".fc-"+t+"-button").prop("disabled",!0).addClass(this.calendar.theme.getClass("stateDisabled"))},t.prototype.enableButton=function(t){this.el&&this.el.find(".fc-"+t+"-button").prop("disabled",!1).removeClass(this.calendar.theme.getClass("stateDisabled"))},t.prototype.getViewsWithButtons=function(){return this.viewsWithButtons},t}();e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(33),a=n(32),l=n(51),u=function(t){function e(e,n){var r=t.call(this)||this;return r._calendar=e,r.overrides=i.extend({},n),r.dynamicOverrides={},r.compute(),r}return r.__extends(e,t),e.prototype.add=function(t){var e,n=0;this.recordOverrides(t);for(e in t)n++;if(1===n){if("height"===e||"contentHeight"===e||"aspectRatio"===e)return void this._calendar.updateViewSize(!0);if("defaultDate"===e)return;if("businessHours"===e)return;if(/^(event|select)(Overlap|Constraint|Allow)$/.test(e))return;if("timezone"===e)return void this._calendar.view.flash("initialEvents")}this._calendar.renderHeader(),this._calendar.renderFooter(),this._calendar.viewsByType={},this._calendar.reinitView()},e.prototype.compute=function(){var t,e,n,r,i;t=o.firstDefined(this.dynamicOverrides.locale,this.overrides.locale),e=a.localeOptionHash[t],e||(t=s.globalDefaults.locale,e=a.localeOptionHash[t]||{}),n=o.firstDefined(this.dynamicOverrides.isRTL,this.overrides.isRTL,e.isRTL,s.globalDefaults.isRTL),r=n?s.rtlDefaults:{},this.dirDefaults=r,this.localeDefaults=e,i=s.mergeOptions([s.globalDefaults,r,e,this.overrides,this.dynamicOverrides]),a.populateInstanceComputableOptions(i),this.reset(i)},e.prototype.recordOverrides=function(t){var e;for(e in t)this.dynamicOverrides[e]=t[e];this._calendar.viewSpecManager.clearCache(),this.compute()},e}(l.default);e.default=u},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(0),i=n(3),o=n(24),s=n(4),a=n(33),l=n(32),u=function(){function t(t,e){this.optionsManager=t,this._calendar=e,this.clearCache()}return t.prototype.clearCache=function(){this.viewSpecCache={}},t.prototype.getViewSpec=function(t){var e=this.viewSpecCache;return e[t]||(e[t]=this.buildViewSpec(t))},t.prototype.getUnitViewSpec=function(t){var e,n,r;if(-1!==i.inArray(t,s.unitsDesc))for(e=this._calendar.header.getViewsWithButtons(),i.each(o.viewHash,function(t){e.push(t)}),n=0;n<e.length;n++)if((r=this.getViewSpec(e[n]))&&r.singleUnit===t)return r},t.prototype.buildViewSpec=function(t){for(var e,n,i,l,u,d=this.optionsManager.overrides.views||{},c=[],p=[],h=[],f=t;f;)e=o.viewHash[f],n=d[f],f=null,"function"==typeof e&&(e={class:e}),e&&(c.unshift(e),p.unshift(e.defaults||{}),i=i||e.duration,f=f||e.type),n&&(h.unshift(n),i=i||n.duration,f=f||n.type);return e=s.mergeProps(c),e.type=t,!!e.class&&(i=i||this.optionsManager.dynamicOverrides.duration||this.optionsManager.overrides.duration,i&&(l=r.duration(i),l.valueOf()&&(u=s.computeDurationGreatestUnit(l,i),e.duration=l,e.durationUnit=u,1===l.as(u)&&(e.singleUnit=u,h.unshift(d[u]||{})))),e.defaults=a.mergeOptions(p),e.overrides=a.mergeOptions(h),this.buildViewSpecOptions(e),this.buildViewSpecButtonText(e,t),e)},t.prototype.buildViewSpecOptions=function(t){var e=this.optionsManager;t.options=a.mergeOptions([a.globalDefaults,t.defaults,e.dirDefaults,e.localeDefaults,e.overrides,t.overrides,e.dynamicOverrides]),l.populateInstanceComputableOptions(t.options)},t.prototype.buildViewSpecButtonText=function(t,e){function n(n){var r=n.buttonText||{};return r[e]||(t.buttonTextKey?r[t.buttonTextKey]:null)||(t.singleUnit?r[t.singleUnit]:null)}var r=this.optionsManager;t.buttonTextOverride=n(r.dynamicOverrides)||n(r.overrides)||t.overrides.buttonText,t.buttonTextDefault=n(r.localeDefaults)||n(r.dirDefaults)||t.defaults.buttonText||n(a.globalDefaults)||(t.duration?this._calendar.humanizeDuration(t.duration):null)||e},t}();e.default=u},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(38),i=n(56),o=n(223),s=n(224);r.default.registerClass(i.default),r.default.registerClass(o.default),r.default.registerClass(s.default)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(57),i=n(221),o=n(222),s=n(262),a=n(263);r.defineThemeSystem("standard",i.default),r.defineThemeSystem("jquery-ui",o.default),r.defineThemeSystem("bootstrap3",s.default),r.defineThemeSystem("bootstrap4",a.default)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(22),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(i.default);e.default=o,o.prototype.classes={widget:"fc-bootstrap3",tableGrid:"table-bordered",tableList:"table",tableListHeading:"active",buttonGroup:"btn-group",button:"btn btn-default",stateActive:"active",stateDisabled:"disabled",today:"alert alert-info",popover:"panel panel-default",popoverHeader:"panel-heading",popoverContent:"panel-body",headerRow:"panel-default",dayRow:"panel-default",listView:"panel panel-default"},o.prototype.baseIconClass="glyphicon",o.prototype.iconClasses={close:"glyphicon-remove",prev:"glyphicon-chevron-left",next:"glyphicon-chevron-right",prevYear:"glyphicon-backward",nextYear:"glyphicon-forward"},o.prototype.iconOverrideOption="bootstrapGlyphicons",o.prototype.iconOverrideCustomButtonOption="bootstrapGlyphicon",o.prototype.iconOverridePrefix="glyphicon-"},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(22),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(i.default);e.default=o,o.prototype.classes={widget:"fc-bootstrap4",tableGrid:"table-bordered",tableList:"table",tableListHeading:"table-active",buttonGroup:"btn-group",button:"btn btn-primary",stateActive:"active",stateDisabled:"disabled",today:"alert alert-info",popover:"card card-primary",popoverHeader:"card-header",popoverContent:"card-body",headerRow:"table-bordered",dayRow:"table-bordered",listView:"card card-primary"},o.prototype.baseIconClass="fa",o.prototype.iconClasses={close:"fa-times",prev:"fa-chevron-left",next:"fa-chevron-right",prevYear:"fa-angle-double-left",nextYear:"fa-angle-double-right"},o.prototype.iconOverrideOption="bootstrapFontAwesome",o.prototype.iconOverrideCustomButtonOption="bootstrapFontAwesome",o.prototype.iconOverridePrefix="fa-"},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(24),i=n(67),o=n(246);r.defineView("basic",{class:i.default}),r.defineView("basicDay",{type:"basic",duration:{days:1}}),r.defineView("basicWeek",{type:"basic",duration:{weeks:1}}),r.defineView("month",{class:o.default,duration:{months:1},defaults:{fixedWeekCount:!0}})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(24),i=n(238);r.defineView("agenda",{class:i.default,defaults:{allDaySlot:!0,slotDuration:"00:30:00",slotEventOverlap:!0}}),r.defineView("agendaDay",{type:"agenda",duration:{days:1}}),r.defineView("agendaWeek",{type:"agenda",duration:{weeks:1}})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(24),i=n(248);r.defineView("list",{class:i.default,buttonTextKey:"list",defaults:{buttonText:"list",listDayFormat:"LL",noEventsMessage:"No events to display"}}),r.defineView("listDay",{type:"list",duration:{days:1},defaults:{listDayFormat:"dddd"}}),r.defineView("listWeek",{type:"list",duration:{weeks:1},defaults:{listDayFormat:"dddd",listDayAltFormat:"LL"}}),r.defineView("listMonth",{type:"list",duration:{month:1},defaults:{listDayAltFormat:"dddd"}}),r.defineView("listYear",{type:"list",duration:{year:1},defaults:{listDayAltFormat:"dddd"}})},function(t,e){Object.defineProperty(e,"__esModule",{value:!0})}])});
Index: public/vendors/fullcalendar/fullcalendar.print.min.css
===================================================================
--- public/vendors/fullcalendar/fullcalendar.print.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/fullcalendar.print.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9 @@
+/*!
+ * FullCalendar v3.10.0
+ * Docs & License: https://fullcalendar.io/
+ * (c) 2018 Adam Shaw
+ *//*!
+ * FullCalendar v3.10.0 Print Stylesheet
+ * Docs & License: https://fullcalendar.io/
+ * (c) 2018 Adam Shaw
+ */.fc-bg,.fc-bgevent-container,.fc-bgevent-skeleton,.fc-business-container,.fc-event .fc-resizer,.fc-helper-container,.fc-helper-skeleton,.fc-highlight-container,.fc-highlight-skeleton{display:none}.fc tbody .fc-row,.fc-time-grid{min-height:0!important}.fc-time-grid .fc-event.fc-not-end:after,.fc-time-grid .fc-event.fc-not-start:before{content:"..."}.fc{max-width:100%!important}.fc-event{background:#fff!important;color:#000!important;page-break-inside:avoid}.fc hr,.fc tbody,.fc td,.fc th,.fc thead,.fc-row{border-color:#ccc!important;background:#fff!important}.fc tbody .fc-row{height:auto!important}.fc tbody .fc-row .fc-content-skeleton{position:static;padding-bottom:0!important}.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td{padding-bottom:1em}.fc tbody .fc-row .fc-content-skeleton table{height:1em}.fc-more,.fc-more-cell{display:none!important}.fc tr.fc-limited{display:table-row!important}.fc td.fc-limited{display:table-cell!important}.fc-agenda-view .fc-axis,.fc-popover{display:none}.fc-slats,.fc-time-grid hr{display:none!important}.fc button,.fc-button-group,.fc-time-grid .fc-event .fc-time span{display:none}.fc-time-grid .fc-content-skeleton{position:static}.fc-time-grid .fc-content-skeleton table{height:4em}.fc-time-grid .fc-event-container{margin:0!important}.fc-time-grid .fc-event{position:static!important;margin:3px 2px!important}.fc-time-grid .fc-event.fc-not-end{border-bottom-width:1px!important}.fc-time-grid .fc-event.fc-not-start{border-top-width:1px!important}.fc-time-grid .fc-event .fc-time{white-space:normal!important}.fc-time-grid .fc-event .fc-time:after{content:attr(data-full)}.fc-day-grid-container,.fc-scroller,.fc-time-grid-container{overflow:visible!important;height:auto!important}.fc-row{border:0!important;margin:0!important}
Index: public/vendors/fullcalendar/gcal.min.js
===================================================================
--- public/vendors/fullcalendar/gcal.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/gcal.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*!
+ * FullCalendar v3.10.0
+ * Docs & License: https://fullcalendar.io/
+ * (c) 2018 Adam Shaw
+ */
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("fullcalendar"),require("jquery")):"function"==typeof define&&define.amd?define(["fullcalendar","jquery"],t):"object"==typeof exports?t(require("fullcalendar"),require("jquery")):t(e.FullCalendar,e.jQuery)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(o){if(r[o])return r[o].exports;var n=r[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,o){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=270)}({1:function(t,r){t.exports=e},2:function(e,t){var r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};t.__extends=function(e,t){function o(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}},270:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0});var o=r(1),n=r(271);o.EventSourceParser.registerClass(n.default),o.GcalEventSource=n.default},271:function(e,t,r){function o(e){var t;return/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(e)?e:(t=/^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(e))||(t=/^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(e))?decodeURIComponent(t[1]):void 0}function n(e,t){return e.replace(/(\?.*?)?(#|$)/,function(e,r,o){return(r?r+"&":"?")+t+o})}Object.defineProperty(t,"__esModule",{value:!0});var a=r(2),l=r(3),i=r(1),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a.__extends(t,e),t.parse=function(e,t){var r;return"object"==typeof e?r=e:"string"==typeof e&&(r={url:e}),!!r&&i.EventSource.parse.call(this,r,t)},t.prototype.fetch=function(e,t,r){var o=this,n=this.buildUrl(),a=this.buildRequestParams(e,t,r),u=this.ajaxSettings||{},s=u.success;return a?(this.calendar.pushLoading(),i.Promise.construct(function(e,t){l.ajax(l.extend({},i.JsonFeedEventSource.AJAX_DEFAULTS,u,{url:n,data:a,success:function(r,n,u){var c,p;o.calendar.popLoading(),r.error?(o.reportError("Google Calendar API: "+r.error.message,r.error.errors),t()):r.items&&(c=o.gcalItemsToRawEventDefs(r.items,a.timeZone),p=i.applyAll(s,o,[r,n,u]),l.isArray(p)&&(c=p),e(o.parseEventDefs(c)))},error:function(e,r,n){o.reportError("Google Calendar network failure: "+r,[e,n]),o.calendar.popLoading(),t()}}))})):i.Promise.reject()},t.prototype.gcalItemsToRawEventDefs=function(e,t){var r=this;return e.map(function(e){return r.gcalItemToRawEventDef(e,t)})},t.prototype.gcalItemToRawEventDef=function(e,t){var r=e.htmlLink||null;r&&t&&(r=n(r,"ctz="+t));var o={};return"object"==typeof e.extendedProperties&&"object"==typeof e.extendedProperties.shared&&(o=e.extendedProperties.shared),{id:e.id,title:e.summary,start:e.start.dateTime||e.start.date,end:e.end.dateTime||e.end.date,url:r,location:e.location,description:e.description,extendedProperties:o}},t.prototype.buildUrl=function(){return t.API_BASE+"/"+encodeURIComponent(this.googleCalendarId)+"/events?callback=?"},t.prototype.buildRequestParams=function(e,t,r){var o,n=this.googleCalendarApiKey||this.calendar.opt("googleCalendarApiKey");return n?(e.hasZone()||(e=e.clone().utc().add(-1,"day")),t.hasZone()||(t=t.clone().utc().add(1,"day")),o=l.extend(this.ajaxSettings.data||{},{key:n,timeMin:e.format(),timeMax:t.format(),singleEvents:!0,maxResults:9999}),r&&"local"!==r&&(o.timeZone=r.replace(" ","_")),o):(this.reportError("Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"),null)},t.prototype.reportError=function(e,t){var r=this.calendar,o=r.opt("googleCalendarError"),n=t||[{message:e}];this.googleCalendarError&&this.googleCalendarError.apply(r,n),o&&o.apply(r,n),i.warn.apply(null,[e].concat(t||[]))},t.prototype.getPrimitive=function(){return this.googleCalendarId},t.prototype.applyManualStandardProps=function(e){var t=i.EventSource.prototype.applyManualStandardProps.apply(this,arguments),r=e.googleCalendarId;return null==r&&e.url&&(r=o(e.url)),null!=r&&(this.googleCalendarId=r,t)},t.prototype.applyMiscProps=function(e){this.ajaxSettings||(this.ajaxSettings={}),l.extend(this.ajaxSettings,e)},t.API_BASE="https://www.googleapis.com/calendar/v3/calendars",t}(i.EventSource);t.default=u,u.defineStandardProps({url:!1,googleCalendarId:!1,googleCalendarApiKey:!0,googleCalendarError:!0})},3:function(e,r){e.exports=t}})});
Index: public/vendors/fullcalendar/locale-all.js
===================================================================
--- public/vendors/fullcalendar/locale-all.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale-all.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=438)}([function(a,t){a.exports=e},function(e,t){e.exports=a},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(72);var n=t(1);n.datepickerLocale("af","af",{closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("af",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayHtml:"Heeldag",eventLimitText:"Addisionele",noEventsMessage:"Daar is geen gebeurtenisse nie"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(74);var n=t(1);n.datepickerLocale("ar-dz","ar-DZ",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-dz",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(76);var n=t(1);n.datepickerLocale("ar-kw","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-kw",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(78);var n=t(1);n.datepickerLocale("ar-ly","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-ly",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(a,r,s,d){var i=t(a),o=n[e][t(a)];return 2===i&&(o=o[r?0:1]),o.replace(/%d/i,a)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return e.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(80);var n=t(1);n.datepickerLocale("ar-ma","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-ma",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(82);var n=t(1);n.datepickerLocale("ar-sa","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-sa",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(84);var n=t(1);n.datepickerLocale("ar-tn","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-tn",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(86);var n=t(1);n.datepickerLocale("ar","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(a,t,s,d){var i=n(a),o=r[e][n(a)];return 2===i&&(o=o[t?0:1]),o.replace(/%d/i,a)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(88);var n=t(1);n.datepickerLocale("be","be",{closeText:"Зачыніць",prevText:"&#x3C;Папярэд",nextText:"След&#x3E;",currentText:"Сёння",monthNames:["Студзень","Люты","Сакавік","Красавік","Трав","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Снежань"],monthNamesShort:["Студ","Лют","Сак","Крас","Трав","Чэрв","Ліп","Жнів","Вер","Каст","Ліст","Снеж"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Ат","Ср","Чц","Пт","Сб"],weekHeader:"Ндз",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("be",{buttonText:{month:"Месяц",week:"Тыдзень",day:"Дзень",list:"Парадак дня"},allDayHtml:"Увесь<br />дзень",eventLimitText:function(e){return"+ яшчэ "+e},noEventsMessage:"Няма падзей для адлюстравання"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+a(r[n],+e)}return e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(90);var n=t(1);n.datepickerLocale("bg","bg",{closeText:"затвори",prevText:"&#x3C;назад",nextText:"напред&#x3E;",nextBigText:"&#x3E;&#x3E;",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("bg",{buttonText:{month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",eventLimitText:function(e){return"+още "+e},noEventsMessage:"Няма събития за показване"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(92);var n=t(1);n.datepickerLocale("bs","bs",{closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novmbar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("bs",{buttonText:{prev:"Prošli",next:"Sljedeći",month:"Mjesec",week:"Sedmica",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikazivanje"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(94);var n=t(1);n.datepickerLocale("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més",noEventsMessage:"No hi ha esdeveniments per mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,a){var t=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==a&&"W"!==a||(t="a"),e+t},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(96);var n=t(1);n.datepickerLocale("cs","cs",{closeText:"Zavřít",prevText:"&#x3C;Dříve",nextText:"Později&#x3E;",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("cs",{buttonText:{month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(e){return"+další: "+e},noEventsMessage:"Žádné akce k zobrazení"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekund":"pár sekundami";case"ss":return t||r?s+(a(e)?"sekundy":"sekund"):s+"sekundami";case"m":return t?"minuta":r?"minutu":"minutou";case"mm":return t||r?s+(a(e)?"minuty":"minut"):s+"minutami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(a(e)?"hodiny":"hodin"):s+"hodinami";case"d":return t||r?"den":"dnem";case"dd":return t||r?s+(a(e)?"dny":"dní"):s+"dny";case"M":return t||r?"měsíc":"měsícem";case"MM":return t||r?s+(a(e)?"měsíce":"měsíců"):s+"měsíci";case"y":return t||r?"rok":"rokem";case"yy":return t||r?s+(a(e)?"roky":"let"):s+"lety"}}var n="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),r="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");return e.defineLocale("cs",{months:n,monthsShort:r,monthsParse:function(e,a){var t,n=[];for(t=0;t<12;t++)n[t]=new RegExp("^"+e[t]+"$|^"+a[t]+"$","i");return n}(n,r),shortMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(r),longMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(n),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(98);var n=t(1);n.datepickerLocale("da","da",{closeText:"Luk",
+prevText:"&#x3C;Forrige",nextText:"Næste&#x3E;",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("da",{buttonText:{month:"Måned",week:"Uge",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"flere",noEventsMessage:"Ingen arrangementer at vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(100);var n=t(1);n.datepickerLocale("de-at","de",{closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de-at",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(102);var n=t(1);n.datepickerLocale("de-ch","de",{closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de-ch",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(104);var n=t(1);n.datepickerLocale("de","de",{closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen",dayOfMonthFormat:"ddd DD.MM."})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(106);var n=t(1);n.datepickerLocale("el","el",{closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("el",{buttonText:{month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},allDayText:"Ολοήμερο",eventLimitText:"περισσότερα",noEventsMessage:"Δεν υπάρχουν γεγονότα για να εμφανιστεί"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}return e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,a){return e?"string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,a,t){return e>11?t?"μμ":"ΜΜ":t?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n=this._calendarEl[e],r=t&&t.hours();return a(n)&&(n=n.apply(t)),n.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(108);var n=t(1);n.datepickerLocale("en-au","en-AU",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-au")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(110),t(1).locale("en-ca")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(112);var n=t(1);n.datepickerLocale("en-gb","en-GB",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-gb")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(114),t(1).locale("en-ie")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(116);var n=t(1);n.datepickerLocale("en-nz","en-NZ",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-nz")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(118);var n=t(1);n.datepickerLocale("es-do","es",{closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es-do",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(120);var n=t(1);n.datepickerLocale("es-us","es",{closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es-us",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");return e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"MMMM [de] D [de] YYYY",LLL:"MMMM [de] D [de] YYYY h:mm A",LLLL:"dddd, MMMM [de] D [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(122);var n=t(1);n.datepickerLocale("es","es",{closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(124);var n=t(1);n.datepickerLocale("et","et",{closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("et",{buttonText:{month:"Kuu",week:"Nädal",day:"Päev",list:"Päevakord"},allDayText:"Kogu päev",eventLimitText:function(e){return"+ veel "+e},noEventsMessage:"Kuvamiseks puuduvad sündmused"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return a?r[t][2]?r[t][2]:r[t][1]:n?r[t][0]:r[t][1]}return e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:"%d päeva",M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(126);var n=t(1);n.datepickerLocale("eu","eu",{closeText:"Egina",prevText:"&#x3C;Aur",nextText:"Hur&#x3E;",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("eu",{buttonText:{month:"Hilabetea",week:"Astea",day:"Eguna",list:"Agenda"},allDayHtml:"Egun<br/>osoa",eventLimitText:"gehiago",noEventsMessage:"Ez dago ekitaldirik erakusteko"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(128);var n=t(1);n.datepickerLocale("fa","fa",{closeText:"بستن",prevText:"&#x3C;قبلی",nextText:"بعدی&#x3E;",currentText:"امروز",
+monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fa",{buttonText:{month:"ماه",week:"هفته",day:"روز",list:"برنامه"},allDayText:"تمام روز",eventLimitText:function(e){return"بیش از "+e},noEventsMessage:"هیچ رویدادی به نمایش"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},t={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,a,t){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(130);var n=t(1);n.datepickerLocale("fi","fi",{closeText:"Sulje",prevText:"&#xAB;Edellinen",nextText:"Seuraava&#xBB;",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää",noEventsMessage:"Ei näytettäviä tapahtumia"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,n,r){var s="";switch(n){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"ss":return r?"sekunnin":"sekuntia";case"m":return r?"minuutin":"minuutti";case"mm":s=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":s=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":s=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":s=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":s=r?"vuoden":"vuotta"}return s=t(e,r)+" "+s}function t(e,a){return e<10?a?r[e]:n[e]:e}var n="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),r=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",n[7],n[8],n[9]];return e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(132);var n=t(1);n.datepickerLocale("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr-ca",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(134);var n=t(1);n.datepickerLocale("fr-ch","fr-CH",{closeText:"Fermer",prevText:"&#x3C;Préc",nextText:"Suiv&#x3E;",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr-ch",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(136);var n=t(1);n.datepickerLocale("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(138);var n=t(1);n.datepickerLocale("gl","gl",{closeText:"Pechar",prevText:"&#x3C;Ant",nextText:"Seg&#x3E;",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("gl",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Axenda"},allDayHtml:"Todo<br/>o día",eventLimitText:"máis",noEventsMessage:"Non hai eventos para amosar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(140);var n=t(1);n.datepickerLocale("he","he",{closeText:"סגור",prevText:"&#x3C;הקודם",nextText:"הבא&#x3E;",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("he",{buttonText:{month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},allDayText:"כל היום",eventLimitText:"אחר",noEventsMessage:"אין אירועים להצגה",weekNumberTitle:"שבוע"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,a,t){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?t?'לפנה"צ':"לפני הצהריים":e<18?t?'אחה"צ':"אחרי הצהריים":"בערב"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(142);var n=t(1);n.datepickerLocale("hi","hi",{closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("hi",{buttonText:{month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},allDayText:"सभी दिन",eventLimitText:function(e){return"+अधिक "+e},noEventsMessage:"कोई घटनाओं को प्रदर्शित करने के लिए"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},t={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,a){return 12===e&&(e=0),"रात"===a?e<4?e:e+12:"सुबह"===a?e:"दोपहर"===a?e>=10?e:e+12:"शाम"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(144);var n=t(1);n.datepickerLocale("hr","hr",{closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("hr",{buttonText:{prev:"Prijašnji",next:"Sljedeći",month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(146);var n=t(1);n.datepickerLocale("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),n.locale("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további",noEventsMessage:"Nincs megjeleníthető esemény"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r=e;switch(t){case"s":return n||a?"néhány másodperc":"néhány másodperce";case"ss":return r+(n||a)?" másodperc":" másodperce";case"m":return"egy"+(n||a?" perc":" perce");case"mm":return r+(n||a?" perc":" perce");case"h":return"egy"+(n||a?" óra":" órája");case"hh":return r+(n||a?" óra":" órája");case"d":return"egy"+(n||a?" nap":" napja");case"dd":return r+(n||a?" nap":" napja");case"M":return"egy"+(n||a?" hónap":" hónapja");case"MM":return r+(n||a?" hónap":" hónapja");case"y":return"egy"+(n||a?" év":" éve");case"yy":return r+(n||a?" év":" éve")}return""}function t(e){return(e?"":"[múlt] ")+"["+n[this.day()]+"] LT[-kor]"}var n="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return t.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return t.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(148);var n=t(1);n.datepickerLocale("id","id",{closeText:"Tutup",prevText:"&#x3C;mundur",nextText:"maju&#x3E;",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari<br/>penuh",eventLimitText:"lebih",noEventsMessage:"Tidak ada acara untuk ditampilkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?e>=11?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(150);var n=t(1);n.datepickerLocale("is","is",{closeText:"Loka",prevText:"&#x3C; Fyrri",nextText:"Næsti &#x3E;",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan<br/>daginn",eventLimitText:"meira",noEventsMessage:"Engir viðburðir til að sýna"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e%100==11||e%10!=1}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return a(e)?s+(t||r?"sekúndur":"sekúndum"):s+"sekúnda";case"m":return t?"mínúta":"mínútu";case"mm":return a(e)?s+(t||r?"mínútur":"mínútum"):t?s+"mínúta":s+"mínútu";case"hh":return a(e)?s+(t||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return t?"dagur":r?"dag":"degi";case"dd":return a(e)?t?s+"dagar":s+(r?"daga":"dögum"):t?s+"dagur":s+(r?"dag":"degi");case"M":return t?"mánuður":r?"mánuð":"mánuði";case"MM":return a(e)?t?s+"mánuðir":s+(r?"mánuði":"mánuðum"):t?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return t||r?"ár":"ári";case"yy":return a(e)?s+(t||r?"ár":"árum"):s+(t||r?"ár":"ári")}}return e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:t,ss:t,m:t,mm:t,h:"klukkustund",hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(152);var n=t(1);n.datepickerLocale("it","it",{closeText:"Chiudi",prevText:"&#x3C;Prec",nextText:"Succ&#x3E;",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il<br/>giorno",eventLimitText:function(e){return"+altri "+e},noEventsMessage:"Non ci sono eventi da visualizzare"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(154);var n=t(1);n.datepickerLocale("ja","ja",{closeText:"閉じる",prevText:"&#x3C;前",nextText:"次&#x3E;",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("ja",{buttonText:{month:"月",week:"週",day:"日",list:"予定リスト"},allDayText:"終日",eventLimitText:function(e){return"他 "+e+" 件"},noEventsMessage:"表示する予定はありません"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,a,t){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",
+nextWeek:function(e){return e.week()<this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()<e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(156);var n=t(1);n.datepickerLocale("ka","ka",{closeText:"დახურვა",prevText:"წინა",nextText:"შემდეგი",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],weekHeader:"კვ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ka",{buttonText:{month:"თვე",week:"კვირა",day:"დღე",list:"დღის წესრიგი"},allDayText:"მთელი დღე",eventLimitText:function(e){return"+ კიდევ "+e},noEventsMessage:"ღონისძიებები არ არის"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,"ში"):e+"ში"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(158);var n=t(1);n.datepickerLocale("kk","kk",{closeText:"Жабу",prevText:"&#x3C;Алдыңғы",nextText:"Келесі&#x3E;",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("kk",{buttonText:{month:"Ай",week:"Апта",day:"Күн",list:"Күн тәртібі"},allDayText:"Күні бойы",eventLimitText:function(e){return"+ тағы "+e},noEventsMessage:"Көрсету үшін оқиғалар жоқ"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};return e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var t=e%10,n=e>=100?100:null;return e+(a[e]||a[t]||a[n])},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(160);var n=t(1);n.datepickerLocale("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"주",dateFormat:"yy. m. d.",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),n.locale("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개",noEventsMessage:"일정이 없습니다"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,a,t){return e<12?"오전":"오후"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(162);var n=t(1);n.datepickerLocale("lb","lb",{closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("lb",{buttonText:{month:"Mount",week:"Woch",day:"Dag",list:"Terminiwwersiicht"},allDayText:"Ganzen Dag",eventLimitText:"méi",noEventsMessage:"Nee Evenementer ze affichéieren"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?r[t][0]:r[t][1]}function t(e){return r(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e}function n(e){return r(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e}function r(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10,t=e/10;return r(0===a?t:a)}if(e<1e4){for(;e>=10;)e/=10;return r(e)}return e/=1e3,r(e)}return e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:t,past:n,s:"e puer Sekonnen",ss:"%d Sekonnen",m:a,mm:"%d Minutten",h:a,hh:"%d Stonnen",d:a,dd:"%d Deeg",M:a,MM:"%d Méint",y:a,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(164);var n=t(1);n.datepickerLocale("lt","lt",{closeText:"Uždaryti",prevText:"&#x3C;Atgal",nextText:"Pirmyn&#x3E;",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),n.locale("lt",{buttonText:{month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},allDayText:"Visą dieną",eventLimitText:"daugiau",noEventsMessage:"Nėra įvykių rodyti"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){return a?"kelios sekundės":n?"kelių sekundžių":"kelias sekundes"}function t(e,a,t,n){return a?r(t)[0]:n?r(t)[1]:r(t)[2]}function n(e){return e%10==0||e>10&&e<20}function r(e){return d[e].split("_")}function s(e,a,s,d){var i=e+" ";return 1===e?i+t(e,a,s[0],d):a?i+(n(e)?r(s)[1]:r(s)[0]):d?i+r(s)[1]:i+(n(e)?r(s)[1]:r(s)[2])}var d={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:a,ss:s,m:t,mm:s,h:t,hh:s,d:t,dd:s,M:t,MM:s,y:t,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(166);var n=t(1);n.datepickerLocale("lv","lv",{closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("lv",{buttonText:{month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},allDayText:"Visu dienu",eventLimitText:function(e){return"+vēl "+e},noEventsMessage:"Nav notikumu"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function t(e,t,n){return e+" "+a(s[n],e,t)}function n(e,t,n){return a(s[n],e,t)}function r(e,a){return a?"dažas sekundes":"dažām sekundēm"}var s={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};return e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:r,ss:t,m:n,mm:t,h:n,hh:t,d:n,dd:t,M:n,MM:t,y:n,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(168);var n=t(1);n.datepickerLocale("mk","mk",{closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("mk",{buttonText:{month:"Месец",week:"Недела",day:"Ден",list:"График"},allDayText:"Цел ден",eventLimitText:function(e){return"+повеќе "+e},noEventsMessage:"Нема настани за прикажување"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(170);var n=t(1);n.datepickerLocale("ms-my","ms",{closeText:"Tutup",prevText:"&#x3C;Sebelum",nextText:"Selepas&#x3E;",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms-my",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(172);var n=t(1);n.datepickerLocale("ms","ms",{closeText:"Tutup",prevText:"&#x3C;Sebelum",nextText:"Selepas&#x3E;",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(174);var n=t(1);n.datepickerLocale("nb","nb",{closeText:"Lukk",prevText:"&#xAB;Forrige",nextText:"Neste&#xBB;",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nb",{buttonText:{month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(176);var n=t(1);n.datepickerLocale("nl-be","nl-BE",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nl-be",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(178);var n=t(1);n.datepickerLocale("nl","nl",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nl",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(180);var n=t(1);n.datepickerLocale("nn","nn",{closeText:"Lukk",prevText:"&#xAB;Førre",nextText:"Neste&#xBB;",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nn",{buttonText:{month:"Månad",week:"Veke",day:"Dag",list:"Agenda"},allDayText:"Heile dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(182);var n=t(1);n.datepickerLocale("pl","pl",{closeText:"Zamknij",prevText:"&#x3C;Poprzedni",nextText:"Następny&#x3E;",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pl",{buttonText:{month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},allDayText:"Cały dzień",eventLimitText:"więcej",noEventsMessage:"Brak wydarzeń do wyświetlenia"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+(a(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return r+(a(e)?"minuty":"minut")
+;case"h":return t?"godzina":"godzinę";case"hh":return r+(a(e)?"godziny":"godzin");case"MM":return r+(a(e)?"miesiące":"miesięcy");case"yy":return r+(a(e)?"lata":"lat")}}var n="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),r="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return e.defineLocale("pl",{months:function(e,a){return e?""===a?"("+r[e.month()]+"|"+n[e.month()]+")":/D MMMM/.test(a)?r[e.month()]:n[e.month()]:n},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:t,m:t,mm:t,h:t,hh:t,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:t,y:"rok",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(184);var n=t(1);n.datepickerLocale("pt-br","pt-BR",{closeText:"Fechar",prevText:"&#x3C;Anterior",nextText:"Próximo&#x3E;",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(e){return"mais +"+e},noEventsMessage:"Não há eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(186);var n=t(1);n.datepickerLocale("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais",noEventsMessage:"Não há eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(188);var n=t(1);n.datepickerLocale("ro","ro",{closeText:"Închide",prevText:"&#xAB; Luna precedentă",nextText:"Luna următoare &#xBB;",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ro",{buttonText:{prev:"precedentă",next:"următoare",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},allDayText:"Toată ziua",eventLimitText:function(e){return"+alte "+e},noEventsMessage:"Nu există evenimente de afișat"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n={ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},r=" ";return(e%100>=20||e>=100&&e%100==0)&&(r=" de "),e+r+n[t]}return e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:a,m:"un minut",mm:a,h:"o oră",hh:a,d:"o zi",dd:a,M:"o lună",MM:a,y:"un an",yy:a},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(190);var n=t(1);n.datepickerLocale("ru","ru",{closeText:"Закрыть",prevText:"&#x3C;Пред",nextText:"След&#x3E;",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ru",{buttonText:{month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},allDayText:"Весь день",eventLimitText:function(e){return"+ ещё "+e},noEventsMessage:"Нет событий для отображения"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===n?t?"минута":"минуту":e+" "+a(r[n],+e)}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];return e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(192);var n=t(1);n.datepickerLocale("sk","sk",{closeText:"Zavrieť",prevText:"&#x3C;Predchádzajúci",nextText:"Nasledujúci&#x3E;",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sk",{buttonText:{month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},allDayText:"Celý deň",eventLimitText:function(e){return"+ďalšie: "+e},noEventsMessage:"Žiadne akcie na zobrazenie"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e>1&&e<5}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?s+(a(e)?"sekundy":"sekúnd"):s+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(a(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(a(e)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(a(e)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(a(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(a(e)?"roky":"rokov"):s+"rokmi"}}var n="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),r="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return e.defineLocale("sk",{months:n,monthsShort:r,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(194);var n=t(1);n.datepickerLocale("sl","sl",{closeText:"Zapri",prevText:"&#x3C;Prejšnji",nextText:"Naslednji&#x3E;",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"več",noEventsMessage:"Ni dogodkov za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r=e+" ";switch(t){case"s":return a||n?"nekaj sekund":"nekaj sekundami";case"ss":return r+=1===e?a?"sekundo":"sekundi":2===e?a||n?"sekundi":"sekundah":e<5?a||n?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return r+=1===e?a?"minuta":"minuto":2===e?a||n?"minuti":"minutama":e<5?a||n?"minute":"minutami":a||n?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return r+=1===e?a?"ura":"uro":2===e?a||n?"uri":"urama":e<5?a||n?"ure":"urami":a||n?"ur":"urami";case"d":return a||n?"en dan":"enim dnem";case"dd":return r+=1===e?a||n?"dan":"dnem":2===e?a||n?"dni":"dnevoma":a||n?"dni":"dnevi";case"M":return a||n?"en mesec":"enim mesecem";case"MM":return r+=1===e?a||n?"mesec":"mesecem":2===e?a||n?"meseca":"mesecema":e<5?a||n?"mesece":"meseci":a||n?"mesecev":"meseci";case"y":return a||n?"eno leto":"enim letom";case"yy":return r+=1===e?a||n?"leto":"letom":2===e?a||n?"leti":"letoma":e<5?a||n?"leta":"leti":a||n?"let":"leti"}}return e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(196);var n=t(1);n.datepickerLocale("sq","sq",{closeText:"mbylle",prevText:"&#x3C;mbrapa",nextText:"Përpara&#x3E;",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sq",{buttonText:{month:"Muaj",week:"Javë",day:"Ditë",list:"Listë"},allDayHtml:"Gjithë<br/>ditën",eventLimitText:function(e){return"+më tepër "+e},noEventsMessage:"Nuk ka evente për të shfaqur"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(198);var n=t(1);n.datepickerLocale("sr-cyrl","sr",{closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sr-cyrl",{buttonText:{prev:"Претходна",next:"следећи",month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var r=a.words[n];return 1===n.length?t?r[0]:r[1]:e+" "+a.correctGrammaticalCase(e,r)}};return e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"дан",dd:a.translate,M:"месец",MM:a.translate,y:"годину",yy:a.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(200);var n=t(1);n.datepickerLocale("sr","sr-SR",{closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sr",{buttonText:{prev:"Prethodna",next:"Sledeći",month:"Mеsеc",week:"Nеdеlja",day:"Dan",list:"Planеr"},allDayText:"Cеo dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nеma događaja za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var r=a.words[n];return 1===n.length?t?r[0]:r[1]:e+" "+a.correctGrammaticalCase(e,r)}};return e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"dan",dd:a.translate,M:"mesec",MM:a.translate,y:"godinu",yy:a.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(202);var n=t(1);n.datepickerLocale("sv","sv",{closeText:"Stäng",prevText:"&#xAB;Förra",nextText:"Nästa&#xBB;",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"v. ",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sv",{buttonText:{month:"Månad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till",noEventsMessage:"Inga händelser att visa"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"e":1===a?"a":2===a?"a":"e")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(204);var n=t(1);n.datepickerLocale("th","th",{closeText:"ปิด",prevText:"&#xAB;&#xA0;ย้อน",nextText:"ถัดไป&#xA0;&#xBB;",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("th",{buttonText:{month:"เดือน",week:"สัปดาห์",day:"วัน",list:"แผนงาน"},allDayText:"ตลอดวัน",eventLimitText:"เพิ่มเติม",noEventsMessage:"ไม่มีกิจกรรมที่จะแสดง"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,a,t){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(206);var n=t(1);n.datepickerLocale("tr","tr",{closeText:"kapat",prevText:"&#x3C;geri",nextText:"ileri&#x3e",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla",noEventsMessage:"Gösterilecek etkinlik yok"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,t){switch(t){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var n=e%10,r=e%100-n,s=e>=100?100:null;return e+(a[n]||a[r]||a[s])}},week:{dow:1,doy:7}})})},function(e,a,t){
+Object.defineProperty(a,"__esModule",{value:!0}),t(208);var n=t(1);n.datepickerLocale("uk","uk",{closeText:"Закрити",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("uk",{buttonText:{month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},allDayText:"Увесь день",eventLimitText:function(e){return"+ще "+e+"..."},noEventsMessage:"Немає подій для відображення"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+a(r[n],+e)}function n(e,a){var t={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return e?t[/(\[[ВвУу]\]) ?dddd/.test(a)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(a)?"genitive":"nominative"][e.day()]:t.nominative}function r(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}return e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:n,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:r("[Сьогодні "),nextDay:r("[Завтра "),lastDay:r("[Вчора "),nextWeek:r("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return r("[Минулої] dddd [").call(this);case 1:case 2:case 4:return r("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(210);var n=t(1);n.datepickerLocale("vi","vi",{closeText:"Đóng",prevText:"&#x3C;Trước",nextText:"Tiếp&#x3E;",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("vi",{buttonText:{month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},allDayText:"Cả ngày",eventLimitText:function(e){return"+ thêm "+e},noEventsMessage:"Không có sự kiện để hiển thị"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(212);var n=t(1);n.datepickerLocale("zh-cn","zh-CN",{closeText:"关闭",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("zh-cn",{buttonText:{month:"月",week:"周",day:"日",list:"日程"},allDayText:"全天",eventLimitText:function(e){return"另外 "+e+" 个"},noEventsMessage:"没有事件显示"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"下午"===a||"晚上"===a?e+12:e>=11?e:e+12},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(214);var n=t(1);n.datepickerLocale("zh-hk","zh-HK",{closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("zh-hk",{buttonText:{month:"月",week:"週",day:"天",list:"活動列表"},allDayText:"整天",eventLimitText:"顯示更多",noEventsMessage:"没有任何活動"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"中午"===a?e>=11?e:e+12:"下午"===a||"晚上"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(216);var n=t(1);n.datepickerLocale("zh-tw","zh-TW",{closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("zh-tw",{buttonText:{month:"月",week:"週",day:"天",list:"活動列表"},allDayText:"整天",eventLimitText:"顯示更多",noEventsMessage:"没有任何活動"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"中午"===a?e>=11?e:e+12:"下午"===a||"晚上"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a,t){t(71),t(73),t(75),t(77),t(79),t(81),t(83),t(85),t(87),t(89),t(91),t(93),t(95),t(97),t(99),t(101),t(103),t(105),t(107),t(109),t(111),t(113),t(115),t(117),t(119),t(121),t(123),t(125),t(127),t(129),t(131),t(133),t(135),t(137),t(139),t(141),t(143),t(145),t(147),t(149),t(151),t(153),t(155),t(157),t(159),t(161),t(163),t(165),t(167),t(169),t(171),t(173),t(175),t(177),t(179),t(181),t(183),t(185),t(187),t(189),t(191),t(193),t(195),t(197),t(199),t(201),t(203),t(205),t(207),t(209),t(211),t(213),t(215),e.exports=t(439)},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0});var n=t(0),r=t(1);n.locale("en"),r.locale("en"),window.jQuery.datepicker&&window.jQuery.datepicker.setDefaults(window.jQuery.datepicker.regional[""])}])});
Index: public/vendors/fullcalendar/locale/af.js
===================================================================
--- public/vendors/fullcalendar/locale/af.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/af.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(t){if(a[t])return a[t].exports;var r=a[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var a={};return n.m=e,n.c=a,n.d=function(e,a,t){n.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(a,"a",a),a},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=71)}({0:function(n,a){n.exports=e},1:function(e,a){e.exports=n},71:function(e,n,a){Object.defineProperty(n,"__esModule",{value:!0}),a(72);var t=a(1);t.datepickerLocale("af","af",{closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("af",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayHtml:"Heeldag",eventLimitText:"Addisionele",noEventsMessage:"Daar is geen gebeurtenisse nie"})},72:function(e,n,a){!function(e,n){n(a(0))}(0,function(e){return e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,n,a){return e<12?a?"vm":"VM":a?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/ar-dz.js
===================================================================
--- public/vendors/fullcalendar/locale/ar-dz.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ar-dz.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=73)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},73:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(74);var r=n(1);r.datepickerLocale("ar-dz","ar-DZ",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ar-dz",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},74:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/ar-kw.js
===================================================================
--- public/vendors/fullcalendar/locale/ar-kw.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ar-kw.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=75)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},75:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(76);var r=n(1);r.datepickerLocale("ar-kw","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ar-kw",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},76:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})})}})});
Index: public/vendors/fullcalendar/locale/ar-ly.js
===================================================================
--- public/vendors/fullcalendar/locale/ar-ly.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ar-ly.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=77)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},77:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(78);var n=r(1);n.datepickerLocale("ar-ly","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-ly",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},78:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},r=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},o=function(e){return function(t,o,d,a){var u=r(t),s=n[e][r(t)];return 2===u&&(s=s[o?0:1]),s.replace(/%d/i,t)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return e.defineLocale("ar-ly",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,r){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:o("s"),ss:o("s"),m:o("m"),mm:o("m"),h:o("h"),hh:o("h"),d:o("d"),dd:o("d"),M:o("M"),MM:o("M"),y:o("y"),yy:o("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})}})});
Index: public/vendors/fullcalendar/locale/ar-ma.js
===================================================================
--- public/vendors/fullcalendar/locale/ar-ma.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ar-ma.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=79)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},79:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(80);var r=n(1);r.datepickerLocale("ar-ma","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ar-ma",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},80:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})})}})});
Index: public/vendors/fullcalendar/locale/ar-sa.js
===================================================================
--- public/vendors/fullcalendar/locale/ar-sa.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ar-sa.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=81)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},81:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(82);var n=r(1);n.datepickerLocale("ar-sa","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-sa",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},82:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},r={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,r){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return r[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:0,doy:6}})})}})});
Index: public/vendors/fullcalendar/locale/ar-tn.js
===================================================================
--- public/vendors/fullcalendar/locale/ar-tn.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ar-tn.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=83)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},83:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(84);var r=n(1);r.datepickerLocale("ar-tn","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ar-tn",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},84:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/ar.js
===================================================================
--- public/vendors/fullcalendar/locale/ar.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ar.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=85)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},85:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(86);var n=r(1);n.datepickerLocale("ar","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},86:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},r={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},o={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},a=function(e){return function(t,r,a,d){var u=n(t),i=o[e][n(t)];return 2===u&&(i=i[r?0:1]),i.replace(/%d/i,t)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,r){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:a("s"),ss:a("s"),m:a("m"),mm:a("m"),h:a("h"),hh:a("h"),d:a("d"),dd:a("d"),M:a("M"),MM:a("M"),y:a("y"),yy:a("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return r[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})}})});
Index: public/vendors/fullcalendar/locale/be.js
===================================================================
--- public/vendors/fullcalendar/locale/be.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/be.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=87)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},87:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(88);var r=n(1);r.datepickerLocale("be","be",{closeText:"Зачыніць",prevText:"&#x3C;Папярэд",nextText:"След&#x3E;",currentText:"Сёння",monthNames:["Студзень","Люты","Сакавік","Красавік","Трав","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Снежань"],monthNamesShort:["Студ","Лют","Сак","Крас","Трав","Чэрв","Ліп","Жнів","Вер","Каст","Ліст","Снеж"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Ат","Ср","Чц","Пт","Сб"],weekHeader:"Ндз",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("be",{buttonText:{month:"Месяц",week:"Тыдзень",day:"Дзень",list:"Парадак дня"},allDayHtml:"Увесь<br />дзень",eventLimitText:function(e){return"+ яшчэ "+e},noEventsMessage:"Няма падзей для адлюстравання"})},88:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t){var n=e.split("_");return t%10==1&&t%100!=11?n[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?n[1]:n[2]}function n(e,n,r){var a={ss:n?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:n?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:n?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===r?n?"хвіліна":"хвіліну":"h"===r?n?"гадзіна":"гадзіну":e+" "+t(a[r],+e)}return e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:n,mm:n,h:n,hh:n,d:"дзень",dd:n,M:"месяц",MM:n,y:"год",yy:n},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/bg.js
===================================================================
--- public/vendors/fullcalendar/locale/bg.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/bg.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=89)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},89:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(90);var r=n(1);r.datepickerLocale("bg","bg",{closeText:"затвори",prevText:"&#x3C;назад",nextText:"напред&#x3E;",nextBigText:"&#x3E;&#x3E;",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("bg",{buttonText:{month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",eventLimitText:function(e){return"+още "+e},noEventsMessage:"Няма събития за показване"})},90:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/bs.js
===================================================================
--- public/vendors/fullcalendar/locale/bs.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/bs.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=91)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},91:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(92);var r=t(1);r.datepickerLocale("bs","bs",{closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novmbar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("bs",{buttonText:{prev:"Prošli",next:"Sljedeći",month:"Mjesec",week:"Sedmica",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikazivanje"})},92:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var r=e+" ";switch(t){case"ss":return r+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return r+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return r+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return r+=1===e?"dan":"dana";case"MM":return r+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return r+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/ca.js
===================================================================
--- public/vendors/fullcalendar/locale/ca.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ca.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var d=n[r]={i:r,l:!1,exports:{}};return e[r].call(d.exports,d,d.exports,t),d.l=!0,d.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=93)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},93:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(94);var r=n(1);r.datepickerLocale("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més",noEventsMessage:"No hi ha esdeveniments per mostrar"})},94:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/cs.js
===================================================================
--- public/vendors/fullcalendar/locale/cs.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/cs.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(r){if(t[r])return t[r].exports;var s=t[r]={i:r,l:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=95)}({0:function(n,t){n.exports=e},1:function(e,t){e.exports=n},95:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),t(96);var r=t(1);r.datepickerLocale("cs","cs",{closeText:"Zavřít",prevText:"&#x3C;Dříve",nextText:"Později&#x3E;",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("cs",{buttonText:{month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(e){return"+další: "+e},noEventsMessage:"Žádné akce k zobrazení"})},96:function(e,n,t){!function(e,n){n(t(0))}(0,function(e){function n(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,r,s){var o=e+" ";switch(r){case"s":return t||s?"pár sekund":"pár sekundami";case"ss":return t||s?o+(n(e)?"sekundy":"sekund"):o+"sekundami";case"m":return t?"minuta":s?"minutu":"minutou";case"mm":return t||s?o+(n(e)?"minuty":"minut"):o+"minutami";case"h":return t?"hodina":s?"hodinu":"hodinou";case"hh":return t||s?o+(n(e)?"hodiny":"hodin"):o+"hodinami";case"d":return t||s?"den":"dnem";case"dd":return t||s?o+(n(e)?"dny":"dní"):o+"dny";case"M":return t||s?"měsíc":"měsícem";case"MM":return t||s?o+(n(e)?"měsíce":"měsíců"):o+"měsíci";case"y":return t||s?"rok":"rokem";case"yy":return t||s?o+(n(e)?"roky":"let"):o+"lety"}}var r="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),s="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");return e.defineLocale("cs",{months:r,monthsShort:s,monthsParse:function(e,n){var t,r=[];for(t=0;t<12;t++)r[t]=new RegExp("^"+e[t]+"$|^"+n[t]+"$","i");return r}(r,s),shortMonthsParse:function(e){var n,t=[];for(n=0;n<12;n++)t[n]=new RegExp("^"+e[n]+"$","i");return t}(s),longMonthsParse:function(e){var n,t=[];for(n=0;n<12;n++)t[n]=new RegExp("^"+e[n]+"$","i");return t}(r),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/da.js
===================================================================
--- public/vendors/fullcalendar/locale/da.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/da.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var t={};return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=97)}({0:function(r,t){r.exports=e},1:function(e,t){e.exports=r},97:function(e,r,t){Object.defineProperty(r,"__esModule",{value:!0}),t(98);var n=t(1);n.datepickerLocale("da","da",{closeText:"Luk",prevText:"&#x3C;Forrige",nextText:"Næste&#x3E;",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("da",{buttonText:{month:"Måned",week:"Uge",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"flere",noEventsMessage:"Ingen arrangementer at vise"})},98:function(e,r,t){!function(e,r){r(t(0))}(0,function(e){return e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/de-at.js
===================================================================
--- public/vendors/fullcalendar/locale/de-at.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/de-at.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=99)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},100:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n,r){var a={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?a[n][0]:a[n][1]}return e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},99:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(100);var r=n(1);r.datepickerLocale("de-at","de",{closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("de-at",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})}})});
Index: public/vendors/fullcalendar/locale/de-ch.js
===================================================================
--- public/vendors/fullcalendar/locale/de-ch.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/de-ch.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=101)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},101:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(102);var r=n(1);r.datepickerLocale("de-ch","de",{closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("de-ch",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})},102:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n,r){var a={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?a[n][0]:a[n][1]}return e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/de.js
===================================================================
--- public/vendors/fullcalendar/locale/de.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/de.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=103)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},103:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(104);var r=n(1);r.datepickerLocale("de","de",{closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("de",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen",dayOfMonthFormat:"ddd DD.MM."})},104:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n,r){var a={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?a[n][0]:a[n][1]}return e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/el.js
===================================================================
--- public/vendors/fullcalendar/locale/el.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/el.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=105)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},105:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(106);var o=n(1);o.datepickerLocale("el","el",{closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),o.locale("el",{buttonText:{month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},allDayText:"Ολοήμερο",eventLimitText:"περισσότερα",noEventsMessage:"Δεν υπάρχουν γεγονότα για να εμφανιστεί"})},106:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}return e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,n){var o=this._calendarEl[e],r=n&&n.hours();return t(o)&&(o=o.apply(n)),o.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/en-au.js
===================================================================
--- public/vendors/fullcalendar/locale/en-au.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/en-au.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(a[r])return a[r].exports;var n=a[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,r){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,"a",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=107)}({0:function(t,a){t.exports=e},1:function(e,a){e.exports=t},107:function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0}),a(108);var r=a(1);r.datepickerLocale("en-au","en-AU",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("en-au")},108:function(e,t,a){!function(e,t){t(a(0))}(0,function(e){return e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/en-ca.js
===================================================================
--- public/vendors/fullcalendar/locale/en-ca.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/en-ca.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=109)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},109:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(110),n(1).locale("en-ca")},110:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})})}})});
Index: public/vendors/fullcalendar/locale/en-gb.js
===================================================================
--- public/vendors/fullcalendar/locale/en-gb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/en-gb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(a){if(r[a])return r[a].exports;var n=r[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,a){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=111)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},111:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(112);var a=r(1);a.datepickerLocale("en-gb","en-GB",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.locale("en-gb")},112:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){return e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/en-ie.js
===================================================================
--- public/vendors/fullcalendar/locale/en-ie.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/en-ie.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=113)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},113:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(114),n(1).locale("en-ie")},114:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/en-nz.js
===================================================================
--- public/vendors/fullcalendar/locale/en-nz.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/en-nz.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(a){if(r[a])return r[a].exports;var n=r[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,a){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=115)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},115:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(116);var a=r(1);a.datepickerLocale("en-nz","en-NZ",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.locale("en-nz")},116:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){return e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/es-do.js
===================================================================
--- public/vendors/fullcalendar/locale/es-do.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/es-do.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],o):"object"==typeof exports?o(require("moment"),require("fullcalendar")):o(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,o){return function(e){function o(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,o),n.l=!0,n.exports}var r={};return o.m=e,o.c=r,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p="",o(o.s=117)}({0:function(o,r){o.exports=e},1:function(e,r){e.exports=o},117:function(e,o,r){Object.defineProperty(o,"__esModule",{value:!0}),r(118);var t=r(1);t.datepickerLocale("es-do","es",{closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("es-do",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},118:function(e,o,r){!function(e,o){o(r(0))}(0,function(e){var o="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),r="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),t=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?r[e.month()]:o[e.month()]:o},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/es-us.js
===================================================================
--- public/vendors/fullcalendar/locale/es-us.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/es-us.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],o):"object"==typeof exports?o(require("moment"),require("fullcalendar")):o(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,o){return function(e){function o(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}var t={};return o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p="",o(o.s=119)}({0:function(o,t){o.exports=e},1:function(e,t){e.exports=o},119:function(e,o,t){Object.defineProperty(o,"__esModule",{value:!0}),t(120);var n=t(1);n.datepickerLocale("es-us","es",{closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es-us",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},120:function(e,o,t){!function(e,o){o(t(0))}(0,function(e){var o="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");return e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:o[e.month()]:o},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"MMMM [de] D [de] YYYY",LLL:"MMMM [de] D [de] YYYY h:mm A",LLLL:"dddd, MMMM [de] D [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})})}})});
Index: public/vendors/fullcalendar/locale/es.js
===================================================================
--- public/vendors/fullcalendar/locale/es.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/es.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],o):"object"==typeof exports?o(require("moment"),require("fullcalendar")):o(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,o){return function(e){function o(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,o),n.l=!0,n.exports}var r={};return o.m=e,o.c=r,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p="",o(o.s=121)}({0:function(o,r){o.exports=e},1:function(e,r){e.exports=o},121:function(e,o,r){Object.defineProperty(o,"__esModule",{value:!0}),r(122);var t=r(1);t.datepickerLocale("es","es",{closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("es",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},122:function(e,o,r){!function(e,o){o(r(0))}(0,function(e){var o="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),r="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),t=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?r[e.month()]:o[e.month()]:o},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/et.js
===================================================================
--- public/vendors/fullcalendar/locale/et.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/et.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(a[n])return a[n].exports;var u=a[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,t),u.l=!0,u.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,n){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,"a",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=123)}({0:function(t,a){t.exports=e},1:function(e,a){e.exports=t},123:function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0}),a(124);var n=a(1);n.datepickerLocale("et","et",{closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("et",{buttonText:{month:"Kuu",week:"Nädal",day:"Päev",list:"Päevakord"},allDayText:"Kogu päev",eventLimitText:function(e){return"+ veel "+e},noEventsMessage:"Kuvamiseks puuduvad sündmused"})},124:function(e,t,a){!function(e,t){t(a(0))}(0,function(e){function t(e,t,a,n){var u={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?u[a][2]?u[a][2]:u[a][1]:n?u[a][0]:u[a][1]}return e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/eu.js
===================================================================
--- public/vendors/fullcalendar/locale/eu.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/eu.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(a,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],e):"object"==typeof exports?e(require("moment"),require("fullcalendar")):e(a.moment,a.FullCalendar)}("undefined"!=typeof self?self:this,function(a,e){return function(a){function e(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return a[r].call(n.exports,n,n.exports,e),n.l=!0,n.exports}var t={};return e.m=a,e.c=t,e.d=function(a,t,r){e.o(a,t)||Object.defineProperty(a,t,{configurable:!1,enumerable:!0,get:r})},e.n=function(a){var t=a&&a.__esModule?function(){return a.default}:function(){return a};return e.d(t,"a",t),t},e.o=function(a,e){return Object.prototype.hasOwnProperty.call(a,e)},e.p="",e(e.s=125)}({0:function(e,t){e.exports=a},1:function(a,t){a.exports=e},125:function(a,e,t){Object.defineProperty(e,"__esModule",{value:!0}),t(126);var r=t(1);r.datepickerLocale("eu","eu",{closeText:"Egina",prevText:"&#x3C;Aur",nextText:"Hur&#x3E;",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("eu",{buttonText:{month:"Hilabetea",week:"Astea",day:"Eguna",list:"Agenda"},allDayHtml:"Egun<br/>osoa",eventLimitText:"gehiago",noEventsMessage:"Ez dago ekitaldirik erakusteko"})},126:function(a,e,t){!function(a,e){e(t(0))}(0,function(a){return a.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/fa.js
===================================================================
--- public/vendors/fullcalendar/locale/fa.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/fa.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=127)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},127:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(128);var r=n(1);r.datepickerLocale("fa","fa",{closeText:"بستن",prevText:"&#x3C;قبلی",nextText:"بعدی&#x3E;",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("fa",{buttonText:{month:"ماه",week:"هفته",day:"روز",list:"برنامه"},allDayText:"تمام روز",eventLimitText:function(e){return"بیش از "+e},noEventsMessage:"هیچ رویدادی به نمایش"})},128:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return n[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})})}})});
Index: public/vendors/fullcalendar/locale/fi.js
===================================================================
--- public/vendors/fullcalendar/locale/fi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/fi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,u){"object"==typeof exports&&"object"==typeof module?module.exports=u(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],u):"object"==typeof exports?u(require("moment"),require("fullcalendar")):u(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,u){return function(e){function u(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,u),n.l=!0,n.exports}var t={};return u.m=e,u.c=t,u.d=function(e,t,a){u.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,"a",t),t},u.o=function(e,u){return Object.prototype.hasOwnProperty.call(e,u)},u.p="",u(u.s=129)}({0:function(u,t){u.exports=e},1:function(e,t){e.exports=u},129:function(e,u,t){Object.defineProperty(u,"__esModule",{value:!0}),t(130);var a=t(1);a.datepickerLocale("fi","fi",{closeText:"Sulje",prevText:"&#xAB;Edellinen",nextText:"Seuraava&#xBB;",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.locale("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää",noEventsMessage:"Ei näytettäviä tapahtumia"})},130:function(e,u,t){!function(e,u){u(t(0))}(0,function(e){function u(e,u,a,n){var i="";switch(a){case"s":return n?"muutaman sekunnin":"muutama sekunti";case"ss":return n?"sekunnin":"sekuntia";case"m":return n?"minuutin":"minuutti";case"mm":i=n?"minuutin":"minuuttia";break;case"h":return n?"tunnin":"tunti";case"hh":i=n?"tunnin":"tuntia";break;case"d":return n?"päivän":"päivä";case"dd":i=n?"päivän":"päivää";break;case"M":return n?"kuukauden":"kuukausi";case"MM":i=n?"kuukauden":"kuukautta";break;case"y":return n?"vuoden":"vuosi";case"yy":i=n?"vuoden":"vuotta"}return i=t(e,n)+" "+i}function t(e,u){return e<10?u?n[e]:a[e]:e}var a="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",a[7],a[8],a[9]];return e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:u,ss:u,m:u,mm:u,h:u,hh:u,d:u,dd:u,M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/fr-ca.js
===================================================================
--- public/vendors/fullcalendar/locale/fr-ca.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/fr-ca.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=131)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},131:function(e,r,n){Object.defineProperty(r,"__esModule",{value:!0}),n(132);var t=n(1);t.datepickerLocale("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("fr-ca",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},132:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,r){switch(r){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})})}})});
Index: public/vendors/fullcalendar/locale/fr-ch.js
===================================================================
--- public/vendors/fullcalendar/locale/fr-ch.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/fr-ch.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=133)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},133:function(e,r,n){Object.defineProperty(r,"__esModule",{value:!0}),n(134);var t=n(1);t.datepickerLocale("fr-ch","fr-CH",{closeText:"Fermer",prevText:"&#x3C;Préc",nextText:"Suiv&#x3E;",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("fr-ch",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},134:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,r){switch(r){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/fr.js
===================================================================
--- public/vendors/fullcalendar/locale/fr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/fr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=135)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},135:function(e,r,n){Object.defineProperty(r,"__esModule",{value:!0}),n(136);var t=n(1);t.datepickerLocale("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("fr",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},136:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,r){switch(r){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/gl.js
===================================================================
--- public/vendors/fullcalendar/locale/gl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/gl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],o):"object"==typeof exports?o(require("moment"),require("fullcalendar")):o(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,o){return function(e){function o(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}var t={};return o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p="",o(o.s=137)}({0:function(o,t){o.exports=e},1:function(e,t){e.exports=o},137:function(e,o,t){Object.defineProperty(o,"__esModule",{value:!0}),t(138);var n=t(1);n.datepickerLocale("gl","gl",{closeText:"Pechar",prevText:"&#x3C;Ant",nextText:"Seg&#x3E;",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("gl",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Axenda"},allDayHtml:"Todo<br/>o día",eventLimitText:"máis",noEventsMessage:"Non hai eventos para amosar"})},138:function(e,o,t){!function(e,o){o(t(0))}(0,function(e){return e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/he.js
===================================================================
--- public/vendors/fullcalendar/locale/he.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/he.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=139)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},139:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(140);var r=n(1);r.datepickerLocale("he","he",{closeText:"סגור",prevText:"&#x3C;הקודם",nextText:"הבא&#x3E;",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("he",{buttonText:{month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},allDayText:"כל היום",eventLimitText:"אחר",noEventsMessage:"אין אירועים להצגה",weekNumberTitle:"שבוע"})},140:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})})}})});
Index: public/vendors/fullcalendar/locale/hi.js
===================================================================
--- public/vendors/fullcalendar/locale/hi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/hi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=141)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},141:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(142);var r=n(1);r.datepickerLocale("hi","hi",{closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("hi",{buttonText:{month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},allDayText:"सभी दिन",eventLimitText:function(e){return"+अधिक "+e},noEventsMessage:"कोई घटनाओं को प्रदर्शित करने के लिए"})},142:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})})}})});
Index: public/vendors/fullcalendar/locale/hr.js
===================================================================
--- public/vendors/fullcalendar/locale/hr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/hr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=143)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},143:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(144);var n=t(1);n.datepickerLocale("hr","hr",{closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("hr",{buttonText:{prev:"Prijašnji",next:"Sljedeći",month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikaz"})},144:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/hu.js
===================================================================
--- public/vendors/fullcalendar/locale/hu.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/hu.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=145)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},145:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(146);var n=r(1);n.datepickerLocale("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),n.locale("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további",noEventsMessage:"Nincs megjeleníthető esemény"})},146:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e,t,r,n){var a=e;switch(r){case"s":return n||t?"néhány másodperc":"néhány másodperce";case"ss":return a+(n||t)?" másodperc":" másodperce";case"m":return"egy"+(n||t?" perc":" perce");case"mm":return a+(n||t?" perc":" perce");case"h":return"egy"+(n||t?" óra":" órája");case"hh":return a+(n||t?" óra":" órája");case"d":return"egy"+(n||t?" nap":" napja");case"dd":return a+(n||t?" nap":" napja");case"M":return"egy"+(n||t?" hónap":" hónapja");case"MM":return a+(n||t?" hónap":" hónapja");case"y":return"egy"+(n||t?" év":" éve");case"yy":return a+(n||t?" év":" éve")}return""}function r(e){return(e?"":"[múlt] ")+"["+n[this.day()]+"] LT[-kor]"}var n="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,r){return e<12?!0===r?"de":"DE":!0===r?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return r.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return r.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/id.js
===================================================================
--- public/vendors/fullcalendar/locale/id.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/id.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=147)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},147:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(148);var n=t(1);n.datepickerLocale("id","id",{closeText:"Tutup",prevText:"&#x3C;mundur",nextText:"maju&#x3E;",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari<br/>penuh",eventLimitText:"lebih",noEventsMessage:"Tidak ada acara untuk ditampilkan"})},148:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?e>=11?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/is.js
===================================================================
--- public/vendors/fullcalendar/locale/is.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/is.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=149)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},149:function(e,r,n){Object.defineProperty(r,"__esModule",{value:!0}),n(150);var t=n(1);t.datepickerLocale("is","is",{closeText:"Loka",prevText:"&#x3C; Fyrri",nextText:"Næsti &#x3E;",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan<br/>daginn",eventLimitText:"meira",noEventsMessage:"Engir viðburðir til að sýna"})},150:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){function r(e){return e%100==11||e%10!=1}function n(e,n,t,a){var u=e+" ";switch(t){case"s":return n||a?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return r(e)?u+(n||a?"sekúndur":"sekúndum"):u+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return r(e)?u+(n||a?"mínútur":"mínútum"):n?u+"mínúta":u+"mínútu";case"hh":return r(e)?u+(n||a?"klukkustundir":"klukkustundum"):u+"klukkustund";case"d":return n?"dagur":a?"dag":"degi";case"dd":return r(e)?n?u+"dagar":u+(a?"daga":"dögum"):n?u+"dagur":u+(a?"dag":"degi");case"M":return n?"mánuður":a?"mánuð":"mánuði";case"MM":return r(e)?n?u+"mánuðir":u+(a?"mánuði":"mánuðum"):n?u+"mánuður":u+(a?"mánuð":"mánuði");case"y":return n||a?"ár":"ári";case"yy":return r(e)?u+(n||a?"ár":"árum"):u+(n||a?"ár":"ári")}}return e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/it.js
===================================================================
--- public/vendors/fullcalendar/locale/it.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/it.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,n){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,"a",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=151)}({0:function(t,o){t.exports=e},1:function(e,o){e.exports=t},151:function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),o(152);var n=o(1);n.datepickerLocale("it","it",{closeText:"Chiudi",prevText:"&#x3C;Prec",nextText:"Succ&#x3E;",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il<br/>giorno",eventLimitText:function(e){return"+altri "+e},noEventsMessage:"Non ci sono eventi da visualizzare"})},152:function(e,t,o){!function(e,t){t(o(0))}(0,function(e){return e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/ja.js
===================================================================
--- public/vendors/fullcalendar/locale/ja.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ja.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=153)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},153:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(154);var r=n(1);r.datepickerLocale("ja","ja",{closeText:"閉じる",prevText:"&#x3C;前",nextText:"次&#x3E;",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),r.locale("ja",{buttonText:{month:"月",week:"週",day:"日",list:"予定リスト"},allDayText:"終日",eventLimitText:function(e){return"他 "+e+" 件"},noEventsMessage:"表示する予定はありません"})},154:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()<this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()<e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})})}})});
Index: public/vendors/fullcalendar/locale/ka.js
===================================================================
--- public/vendors/fullcalendar/locale/ka.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ka.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=155)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},155:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(156);var r=n(1);r.datepickerLocale("ka","ka",{closeText:"დახურვა",prevText:"წინა",nextText:"შემდეგი",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],weekHeader:"კვ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ka",{buttonText:{month:"თვე",week:"კვირა",day:"დღე",list:"დღის წესრიგი"},allDayText:"მთელი დღე",eventLimitText:function(e){return"+ კიდევ "+e},noEventsMessage:"ღონისძიებები არ არის"})},156:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,"ში"):e+"ში"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/kk.js
===================================================================
--- public/vendors/fullcalendar/locale/kk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/kk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=157)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},157:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(158);var r=n(1);r.datepickerLocale("kk","kk",{closeText:"Жабу",prevText:"&#x3C;Алдыңғы",nextText:"Келесі&#x3E;",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("kk",{buttonText:{month:"Ай",week:"Апта",day:"Күн",list:"Күн тәртібі"},allDayText:"Күні бойы",eventLimitText:function(e){return"+ тағы "+e},noEventsMessage:"Көрсету үшін оқиғалар жоқ"})},158:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};return e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var n=e%10,r=e>=100?100:null;return e+(t[e]||t[n]||t[r])},week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/ko.js
===================================================================
--- public/vendors/fullcalendar/locale/ko.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ko.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=159)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},159:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(160);var r=n(1);r.datepickerLocale("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"주",dateFormat:"yy. m. d.",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),r.locale("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개",noEventsMessage:"일정이 없습니다"})},160:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})})}})});
Index: public/vendors/fullcalendar/locale/lb.js
===================================================================
--- public/vendors/fullcalendar/locale/lb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/lb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=161)}({0:function(n,t){n.exports=e},1:function(e,t){e.exports=n},161:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),t(162);var r=t(1);r.datepickerLocale("lb","lb",{closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("lb",{buttonText:{month:"Mount",week:"Woch",day:"Dag",list:"Terminiwwersiicht"},allDayText:"Ganzen Dag",eventLimitText:"méi",noEventsMessage:"Nee Evenementer ze affichéieren"})},162:function(e,n,t){!function(e,n){n(t(0))}(0,function(e){function n(e,n,t,r){var o={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return n?o[t][0]:o[t][1]}function t(e){return o(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e}function r(e){return o(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e}function o(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var n=e%10,t=e/10;return o(0===n?t:n)}if(e<1e4){for(;e>=10;)e/=10;return o(e)}return e/=1e3,o(e)}return e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:t,past:r,s:"e puer Sekonnen",ss:"%d Sekonnen",m:n,mm:"%d Minutten",h:n,hh:"%d Stonnen",d:n,dd:"%d Deeg",M:n,MM:"%d Méint",y:n,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/lt.js
===================================================================
--- public/vendors/fullcalendar/locale/lt.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/lt.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,i){"object"==typeof exports&&"object"==typeof module?module.exports=i(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],i):"object"==typeof exports?i(require("moment"),require("fullcalendar")):i(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,i){return function(e){function i(a){if(n[a])return n[a].exports;var t=n[a]={i:a,l:!1,exports:{}};return e[a].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var n={};return i.m=e,i.c=n,i.d=function(e,n,a){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,i){return Object.prototype.hasOwnProperty.call(e,i)},i.p="",i(i.s=163)}({0:function(i,n){i.exports=e},1:function(e,n){e.exports=i},163:function(e,i,n){Object.defineProperty(i,"__esModule",{value:!0}),n(164);var a=n(1);a.datepickerLocale("lt","lt",{closeText:"Uždaryti",prevText:"&#x3C;Atgal",nextText:"Pirmyn&#x3E;",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),a.locale("lt",{buttonText:{month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},allDayText:"Visą dieną",eventLimitText:"daugiau",noEventsMessage:"Nėra įvykių rodyti"})},164:function(e,i,n){!function(e,i){i(n(0))}(0,function(e){function i(e,i,n,a){return i?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"}function n(e,i,n,a){return i?t(n)[0]:a?t(n)[1]:t(n)[2]}function a(e){return e%10==0||e>10&&e<20}function t(e){return r[e].split("_")}function s(e,i,s,r){var d=e+" ";return 1===e?d+n(e,i,s[0],r):i?d+(a(e)?t(s)[1]:t(s)[0]):r?d+t(s)[1]:d+(a(e)?t(s)[1]:t(s)[2])}var r={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:i,ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/lv.js
===================================================================
--- public/vendors/fullcalendar/locale/lv.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/lv.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(s){if(n[s])return n[s].exports;var i=n[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,s){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=165)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},165:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(166);var s=n(1);s.datepickerLocale("lv","lv",{closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),s.locale("lv",{buttonText:{month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},allDayText:"Visu dienu",eventLimitText:function(e){return"+vēl "+e},noEventsMessage:"Nav notikumu"})},166:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function n(e,n,s){return e+" "+t(a[s],e,n)}function s(e,n,s){return t(a[s],e,n)}function i(e,t){return t?"dažas sekundes":"dažām sekundēm"}var a={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};return e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:i,ss:n,m:s,mm:n,h:s,hh:n,d:s,dd:n,M:s,MM:n,y:s,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/mk.js
===================================================================
--- public/vendors/fullcalendar/locale/mk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/mk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=167)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},167:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(168);var r=n(1);r.datepickerLocale("mk","mk",{closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("mk",{buttonText:{month:"Месец",week:"Недела",day:"Ден",list:"График"},allDayText:"Цел ден",eventLimitText:function(e){return"+повеќе "+e},noEventsMessage:"Нема настани за прикажување"})},168:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/ms-my.js
===================================================================
--- public/vendors/fullcalendar/locale/ms-my.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ms-my.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=169)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},169:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(170);var n=t(1);n.datepickerLocale("ms-my","ms",{closeText:"Tutup",prevText:"&#x3C;Sebelum",nextText:"Selepas&#x3E;",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms-my",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},170:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/ms.js
===================================================================
--- public/vendors/fullcalendar/locale/ms.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ms.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=171)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},171:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(172);var n=t(1);n.datepickerLocale("ms","ms",{closeText:"Tutup",prevText:"&#x3C;Sebelum",nextText:"Selepas&#x3E;",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},172:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/nb.js
===================================================================
--- public/vendors/fullcalendar/locale/nb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/nb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=173)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},173:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(174);var r=n(1);r.datepickerLocale("nb","nb",{closeText:"Lukk",prevText:"&#xAB;Forrige",nextText:"Neste&#xBB;",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("nb",{buttonText:{month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})},174:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/nl-be.js
===================================================================
--- public/vendors/fullcalendar/locale/nl-be.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/nl-be.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(t){if(a[t])return a[t].exports;var r=a[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var a={};return n.m=e,n.c=a,n.d=function(e,a,t){n.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(a,"a",a),a},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=175)}({0:function(n,a){n.exports=e},1:function(e,a){e.exports=n},175:function(e,n,a){Object.defineProperty(n,"__esModule",{value:!0}),a(176);var t=a(1);t.datepickerLocale("nl-be","nl-BE",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("nl-be",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},176:function(e,n,a){!function(e,n){n(a(0))}(0,function(e){var n="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),t=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?a[e.month()]:n[e.month()]:n},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/nl.js
===================================================================
--- public/vendors/fullcalendar/locale/nl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/nl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(t){if(a[t])return a[t].exports;var r=a[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var a={};return n.m=e,n.c=a,n.d=function(e,a,t){n.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(a,"a",a),a},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=177)}({0:function(n,a){n.exports=e},1:function(e,a){e.exports=n},177:function(e,n,a){Object.defineProperty(n,"__esModule",{value:!0}),a(178);var t=a(1);t.datepickerLocale("nl","nl",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("nl",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},178:function(e,n,a){!function(e,n){n(a(0))}(0,function(e){var n="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),t=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?a[e.month()]:n[e.month()]:n},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/nn.js
===================================================================
--- public/vendors/fullcalendar/locale/nn.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/nn.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=179)}({0:function(n,t){n.exports=e},1:function(e,t){e.exports=n},179:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),t(180);var a=t(1);a.datepickerLocale("nn","nn",{closeText:"Lukk",prevText:"&#xAB;Førre",nextText:"Neste&#xBB;",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.locale("nn",{buttonText:{month:"Månad",week:"Veke",day:"Dag",list:"Agenda"},allDayText:"Heile dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})},180:function(e,n,t){!function(e,n){n(t(0))}(0,function(e){return e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/pl.js
===================================================================
--- public/vendors/fullcalendar/locale/pl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/pl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=181)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},181:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(182);var n=r(1);n.datepickerLocale("pl","pl",{closeText:"Zamknij",prevText:"&#x3C;Poprzedni",nextText:"Następny&#x3E;",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pl",{buttonText:{month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},allDayText:"Cały dzień",eventLimitText:"więcej",noEventsMessage:"Brak wydarzeń do wyświetlenia"})},182:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function r(e,r,n){var i=e+" ";switch(n){case"ss":return i+(t(e)?"sekundy":"sekund");case"m":return r?"minuta":"minutę";case"mm":return i+(t(e)?"minuty":"minut");case"h":return r?"godzina":"godzinę";case"hh":return i+(t(e)?"godziny":"godzin");case"MM":return i+(t(e)?"miesiące":"miesięcy");case"yy":return i+(t(e)?"lata":"lat")}}var n="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),i="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return e.defineLocale("pl",{months:function(e,t){return e?""===t?"("+i[e.month()]+"|"+n[e.month()]+")":/D MMMM/.test(t)?i[e.month()]:n[e.month()]:n},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:r,m:r,mm:r,h:r,hh:r,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:r,y:"rok",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/pt-br.js
===================================================================
--- public/vendors/fullcalendar/locale/pt-br.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/pt-br.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(o[r])return o[r].exports;var a=o[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,r){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,"a",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=183)}({0:function(t,o){t.exports=e},1:function(e,o){e.exports=t},183:function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),o(184);var r=o(1);r.datepickerLocale("pt-br","pt-BR",{closeText:"Fechar",prevText:"&#x3C;Anterior",nextText:"Próximo&#x3E;",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(e){return"mais +"+e},noEventsMessage:"Não há eventos para mostrar"})},184:function(e,t,o){!function(e,t){t(o(0))}(0,function(e){return e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})})}})});
Index: public/vendors/fullcalendar/locale/pt.js
===================================================================
--- public/vendors/fullcalendar/locale/pt.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/pt.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(a){if(o[a])return o[a].exports;var r=o[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,a){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,"a",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=185)}({0:function(t,o){t.exports=e},1:function(e,o){e.exports=t},185:function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),o(186);var a=o(1);a.datepickerLocale("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.locale("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais",noEventsMessage:"Não há eventos para mostrar"})},186:function(e,t,o){!function(e,t){t(o(0))}(0,function(e){return e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/ro.js
===================================================================
--- public/vendors/fullcalendar/locale/ro.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ro.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=187)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},187:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(188);var i=n(1);i.datepickerLocale("ro","ro",{closeText:"Închide",prevText:"&#xAB; Luna precedentă",nextText:"Luna următoare &#xBB;",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),i.locale("ro",{buttonText:{prev:"precedentă",next:"următoare",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},allDayText:"Toată ziua",eventLimitText:function(e){return"+alte "+e},noEventsMessage:"Nu există evenimente de afișat"})},188:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n){var i={ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},r=" ";return(e%100>=20||e>=100&&e%100==0)&&(r=" de "),e+r+i[n]}return e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/ru.js
===================================================================
--- public/vendors/fullcalendar/locale/ru.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/ru.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var s=r[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,t),s.l=!0,s.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=189)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},189:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(190);var n=r(1);n.datepickerLocale("ru","ru",{closeText:"Закрыть",prevText:"&#x3C;Пред",nextText:"След&#x3E;",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ru",{buttonText:{month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},allDayText:"Весь день",eventLimitText:function(e){return"+ ещё "+e},noEventsMessage:"Нет событий для отображения"})},190:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e,t){var r=e.split("_");return t%10==1&&t%100!=11?r[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?r[1]:r[2]}function r(e,r,n){var s={ss:r?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:r?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===n?r?"минута":"минуту":e+" "+t(s[n],+e)}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];return e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:r,m:r,mm:r,h:"час",hh:r,d:"день",dd:r,M:"месяц",MM:r,y:"год",yy:r},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,r){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/sk.js
===================================================================
--- public/vendors/fullcalendar/locale/sk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/sk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=191)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},191:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(192);var n=r(1);n.datepickerLocale("sk","sk",{closeText:"Zavrieť",prevText:"&#x3C;Predchádzajúci",nextText:"Nasledujúci&#x3E;",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sk",{buttonText:{month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},allDayText:"Celý deň",eventLimitText:function(e){return"+ďalšie: "+e},noEventsMessage:"Žiadne akcie na zobrazenie"})},192:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e){return e>1&&e<5}function r(e,r,n,o){var a=e+" ";switch(n){case"s":return r||o?"pár sekúnd":"pár sekundami";case"ss":return r||o?a+(t(e)?"sekundy":"sekúnd"):a+"sekundami";case"m":return r?"minúta":o?"minútu":"minútou";case"mm":return r||o?a+(t(e)?"minúty":"minút"):a+"minútami";case"h":return r?"hodina":o?"hodinu":"hodinou";case"hh":return r||o?a+(t(e)?"hodiny":"hodín"):a+"hodinami";case"d":return r||o?"deň":"dňom";case"dd":return r||o?a+(t(e)?"dni":"dní"):a+"dňami";case"M":return r||o?"mesiac":"mesiacom";case"MM":return r||o?a+(t(e)?"mesiace":"mesiacov"):a+"mesiacmi";case"y":return r||o?"rok":"rokom";case"yy":return r||o?a+(t(e)?"roky":"rokov"):a+"rokmi"}}var n="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),o="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return e.defineLocale("sk",{months:n,monthsShort:o,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/sl.js
===================================================================
--- public/vendors/fullcalendar/locale/sl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/sl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=193)}({0:function(n,t){n.exports=e},1:function(e,t){e.exports=n},193:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),t(194);var r=t(1);r.datepickerLocale("sl","sl",{closeText:"Zapri",prevText:"&#x3C;Prejšnji",nextText:"Naslednji&#x3E;",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"več",noEventsMessage:"Ni dogodkov za prikaz"})},194:function(e,n,t){!function(e,n){n(t(0))}(0,function(e){function n(e,n,t,r){var a=e+" ";switch(t){case"s":return n||r?"nekaj sekund":"nekaj sekundami";case"ss":return a+=1===e?n?"sekundo":"sekundi":2===e?n||r?"sekundi":"sekundah":e<5?n||r?"sekunde":"sekundah":"sekund";case"m":return n?"ena minuta":"eno minuto";case"mm":return a+=1===e?n?"minuta":"minuto":2===e?n||r?"minuti":"minutama":e<5?n||r?"minute":"minutami":n||r?"minut":"minutami";case"h":return n?"ena ura":"eno uro";case"hh":return a+=1===e?n?"ura":"uro":2===e?n||r?"uri":"urama":e<5?n||r?"ure":"urami":n||r?"ur":"urami";case"d":return n||r?"en dan":"enim dnem";case"dd":return a+=1===e?n||r?"dan":"dnem":2===e?n||r?"dni":"dnevoma":n||r?"dni":"dnevi";case"M":return n||r?"en mesec":"enim mesecem";case"MM":return a+=1===e?n||r?"mesec":"mesecem":2===e?n||r?"meseca":"mesecema":e<5?n||r?"mesece":"meseci":n||r?"mesecev":"meseci";case"y":return n||r?"eno leto":"enim letom";case"yy":return a+=1===e?n||r?"leto":"letom":2===e?n||r?"leti":"letoma":e<5?n||r?"leta":"leti":n||r?"let":"leti"}}return e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/sq.js
===================================================================
--- public/vendors/fullcalendar/locale/sq.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/sq.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=195)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},195:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(196);var n=r(1);n.datepickerLocale("sq","sq",{closeText:"mbylle",prevText:"&#x3C;mbrapa",nextText:"Përpara&#x3E;",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sq",{buttonText:{month:"Muaj",week:"Javë",day:"Ditë",list:"Listë"},allDayHtml:"Gjithë<br/>ditën",eventLimitText:function(e){return"+më tepër "+e},noEventsMessage:"Nuk ka evente për të shfaqur"})},196:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){return e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,r){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/sr-cyrl.js
===================================================================
--- public/vendors/fullcalendar/locale/sr-cyrl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/sr-cyrl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=197)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},197:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(198);var n=r(1);n.datepickerLocale("sr-cyrl","sr",{closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sr-cyrl",{buttonText:{prev:"Претходна",next:"следећи",month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})},198:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,r,n){var a=t.words[n];return 1===n.length?r?a[0]:a[1]:e+" "+t.correctGrammaticalCase(e,a)}};return e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/sr.js
===================================================================
--- public/vendors/fullcalendar/locale/sr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/sr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(a[r])return a[r].exports;var n=a[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,r){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,"a",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=199)}({0:function(t,a){t.exports=e},1:function(e,a){e.exports=t},199:function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0}),a(200);var r=a(1);r.datepickerLocale("sr","sr-SR",{closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("sr",{buttonText:{prev:"Prethodna",next:"Sledeći",month:"Mеsеc",week:"Nеdеlja",day:"Dan",list:"Planеr"},allDayText:"Cеo dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nеma događaja za prikaz"})},200:function(e,t,a){!function(e,t){t(a(0))}(0,function(e){var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,r){var n=t.words[r];return 1===r.length?a?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};return e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/sv.js
===================================================================
--- public/vendors/fullcalendar/locale/sv.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/sv.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var t={};return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=201)}({0:function(r,t){r.exports=e},1:function(e,t){e.exports=r},201:function(e,r,t){Object.defineProperty(r,"__esModule",{value:!0}),t(202);var n=t(1);n.datepickerLocale("sv","sv",{closeText:"Stäng",prevText:"&#xAB;Förra",nextText:"Nästa&#xBB;",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"v. ",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sv",{buttonText:{month:"Månad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till",noEventsMessage:"Inga händelser att visa"})},202:function(e,r,t){!function(e,r){r(t(0))}(0,function(e){return e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var r=e%10;return e+(1==~~(e%100/10)?"e":1===r?"a":2===r?"a":"e")},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/th.js
===================================================================
--- public/vendors/fullcalendar/locale/th.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/th.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=203)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},203:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(204);var r=n(1);r.datepickerLocale("th","th",{closeText:"ปิด",prevText:"&#xAB;&#xA0;ย้อน",nextText:"ถัดไป&#xA0;&#xBB;",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("th",{buttonText:{month:"เดือน",week:"สัปดาห์",day:"วัน",list:"แผนงาน"},allDayText:"ตลอดวัน",eventLimitText:"เพิ่มเติม",noEventsMessage:"ไม่มีกิจกรรมที่จะแสดง"})},204:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})})}})});
Index: public/vendors/fullcalendar/locale/tr.js
===================================================================
--- public/vendors/fullcalendar/locale/tr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/tr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=205)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},205:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(206);var n=t(1);n.datepickerLocale("tr","tr",{closeText:"kapat",prevText:"&#x3C;geri",nextText:"ileri&#x3e",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla",noEventsMessage:"Gösterilecek etkinlik yok"})},206:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,t){switch(t){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var n=e%10,r=e%100-n,i=e>=100?100:null;return e+(a[n]||a[r]||a[i])}},week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/uk.js
===================================================================
--- public/vendors/fullcalendar/locale/uk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/uk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=207)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},207:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(208);var r=n(1);r.datepickerLocale("uk","uk",{closeText:"Закрити",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("uk",{buttonText:{month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},allDayText:"Увесь день",eventLimitText:function(e){return"+ще "+e+"..."},noEventsMessage:"Немає подій для відображення"})},208:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t){var n=e.split("_");return t%10==1&&t%100!=11?n[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?n[1]:n[2]}function n(e,n,r){var a={ss:n?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:n?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:n?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===r?n?"хвилина":"хвилину":"h"===r?n?"година":"годину":e+" "+t(a[r],+e)}function r(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative}function a(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}return e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:r,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:a("[Сьогодні "),nextDay:a("[Завтра "),lastDay:a("[Вчора "),nextWeek:a("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return a("[Минулої] dddd [").call(this);case 1:case 2:case 4:return a("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:n,m:n,mm:n,h:"годину",hh:n,d:"день",dd:n,M:"місяць",MM:n,y:"рік",yy:n},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})})}})});
Index: public/vendors/fullcalendar/locale/vi.js
===================================================================
--- public/vendors/fullcalendar/locale/vi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/vi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(t.moment,t.FullCalendar)}("undefined"!=typeof self?self:this,function(t,n){return function(t){function n(h){if(e[h])return e[h].exports;var r=e[h]={i:h,l:!1,exports:{}};return t[h].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var e={};return n.m=t,n.c=e,n.d=function(t,e,h){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:h})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=209)}({0:function(n,e){n.exports=t},1:function(t,e){t.exports=n},209:function(t,n,e){Object.defineProperty(n,"__esModule",{value:!0}),e(210);var h=e(1);h.datepickerLocale("vi","vi",{closeText:"Đóng",prevText:"&#x3C;Trước",nextText:"Tiếp&#x3E;",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),h.locale("vi",{buttonText:{month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},allDayText:"Cả ngày",eventLimitText:function(t){return"+ thêm "+t},noEventsMessage:"Không có sự kiện để hiển thị"})},210:function(t,n,e){!function(t,n){n(e(0))}(0,function(t){return t.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(t){return/^ch$/i.test(t)},meridiem:function(t,n,e){return t<12?e?"sa":"SA":e?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/zh-cn.js
===================================================================
--- public/vendors/fullcalendar/locale/zh-cn.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/zh-cn.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=211)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},211:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(212);var r=n(1);r.datepickerLocale("zh-cn","zh-CN",{closeText:"关闭",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),r.locale("zh-cn",{buttonText:{month:"月",week:"周",day:"日",list:"日程"},allDayText:"全天",eventLimitText:function(e){return"另外 "+e+" 个"},noEventsMessage:"没有事件显示"})},212:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})})}})});
Index: public/vendors/fullcalendar/locale/zh-hk.js
===================================================================
--- public/vendors/fullcalendar/locale/zh-hk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/zh-hk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=213)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},213:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(214);var r=n(1);r.datepickerLocale("zh-hk","zh-HK",{closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),r.locale("zh-hk",{buttonText:{month:"月",week:"週",day:"天",list:"活動列表"},allDayText:"整天",eventLimitText:"顯示更多",noEventsMessage:"没有任何活動"})},214:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})}})});
Index: public/vendors/fullcalendar/locale/zh-tw.js
===================================================================
--- public/vendors/fullcalendar/locale/zh-tw.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/locale/zh-tw.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=215)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},215:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(216);var r=n(1);r.datepickerLocale("zh-tw","zh-TW",{closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),r.locale("zh-tw",{buttonText:{month:"月",week:"週",day:"天",list:"活動列表"},allDayText:"整天",eventLimitText:"顯示更多",noEventsMessage:"没有任何活動"})},216:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})}})});
Index: public/vendors/fullcalendar/moment.min.js
===================================================================
--- public/vendors/fullcalendar/moment.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/fullcalendar/moment.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function d(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function h(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,"toString")&&(e.toString=t.toString),m(t,"valueOf")&&(e.valueOf=t.valueOf),e}function y(e,t,n,s){return Ot(e,t,n,s,!0).utc()}function g(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function p(e){if(null==e._isValid){var t=g(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function v(e){var t=y(NaN);return null!=e?_(g(t),e):g(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var r=c.momentProperties=[];function w(e,t){var n,s,i;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=g(t)),l(t._locale)||(e._locale=t._locale),0<r.length)for(n=0;n<r.length;n++)l(i=t[s=r[n]])||(e[s]=i);return e}var t=!1;function M(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,c.updateOffset(this),t=!1)}function S(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function D(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function k(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=D(t)),n}function a(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&k(e[s])!==k(t[s]))&&a++;return a+r}function Y(e){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function n(i,r){var a=!0;return _(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,i),a){for(var e,t=[],n=0;n<arguments.length;n++){if(e="","object"==typeof arguments[n]){for(var s in e+="\n["+n+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[n];t.push(e)}Y(i+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,O={};function T(e,t){null!=c.deprecationHandler&&c.deprecationHandler(e,t),O[e]||(Y(t),O[e]=!0)}function x(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,t){var n,s=_({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},_(s[n],e[n]),_(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=_({},s[n]));return s}function P(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};var W={};function H(e,t){var n=e.toLowerCase();W[n]=W[n+"s"]=W[t]=e}function R(e){return"string"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function C(e){var t,n,s={};for(n in e)m(e,n)&&(t=R(n))&&(s[t]=e[n]);return s}var F={};function L(e,t){F[e]=t}function U(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},E={};function I(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(E[e]=i),t&&(E[t[0]]=function(){return U(i.apply(this,arguments),t[1],t[2])}),n&&(E[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function A(e,t){return e.isValid()?(t=j(t,e.localeData()),V[t]=V[t]||function(s){var e,i,t,r=s.match(N);for(e=0,i=r.length;e<i;e++)E[r[e]]?r[e]=E[r[e]]:r[e]=(t=r[e]).match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"");return function(e){var t,n="";for(t=0;t<i;t++)n+=x(r[t])?r[t].call(e,s):r[t];return n}}(t),V[t](e)):e.localeData().invalidDate()}function j(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(G.lastIndex=0;0<=n&&G.test(e);)e=e.replace(G,s),G.lastIndex=0,n-=1;return e}var Z=/\d/,z=/\d\d/,$=/\d{3}/,q=/\d{4}/,J=/[+-]?\d{6}/,B=/\d\d?/,Q=/\d\d\d\d?/,X=/\d\d\d\d\d\d?/,K=/\d{1,3}/,ee=/\d{1,4}/,te=/[+-]?\d{1,6}/,ne=/\d+/,se=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,re=/Z|[+-]\d\d(?::?\d\d)?/gi,ae=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,oe={};function ue(e,n,s){oe[e]=x(n)?n:function(e,t){return e&&s?s:n}}function le(e,t){return m(oe,e)?oe[e](t._strict,t._locale):new RegExp(de(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function de(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var he={};function ce(e,n){var t,s=n;for("string"==typeof e&&(e=[e]),d(n)&&(s=function(e,t){t[n]=k(e)}),t=0;t<e.length;t++)he[e[t]]=s}function fe(e,i){ce(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var me=0,_e=1,ye=2,ge=3,pe=4,ve=5,we=6,Me=7,Se=8;function De(e){return ke(e)?366:365}function ke(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),H("year","y"),L("year",1),ue("Y",se),ue("YY",B,z),ue("YYYY",ee,q),ue("YYYYY",te,J),ue("YYYYYY",te,J),ce(["YYYYY","YYYYYY"],me),ce("YYYY",function(e,t){t[me]=2===e.length?c.parseTwoDigitYear(e):k(e)}),ce("YY",function(e,t){t[me]=c.parseTwoDigitYear(e)}),ce("Y",function(e,t){t[me]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return k(e)+(68<k(e)?1900:2e3)};var Ye,Oe=Te("FullYear",!0);function Te(t,n){return function(e){return null!=e?(be(this,t,e),c.updateOffset(this,n),this):xe(this,t)}}function xe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function be(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ke(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Pe(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?ke(e)?29:28:31-s%7%2}Ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),H("month","M"),L("month",8),ue("M",B),ue("MM",B,z),ue("MMM",function(e,t){return t.monthsShortRegex(e)}),ue("MMMM",function(e,t){return t.monthsRegex(e)}),ce(["M","MM"],function(e,t){t[_e]=k(e)-1}),ce(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[_e]=i:g(n).invalidMonth=e});var We=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,He="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var Re="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ce(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=k(t);else if(!d(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Pe(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function Fe(e){return null!=e?(Ce(this,e),c.updateOffset(this,!0),this):xe(this,"Month")}var Le=ae;var Ue=ae;function Ne(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=y([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=de(s[t]),i[t]=de(i[t]);for(t=0;t<24;t++)r[t]=de(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ge(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&0<=e&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function Ve(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ee(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ve(e,s,i);return a=o<=0?De(r=e-1)+o:o>De(e)?(r=e+1,o-De(e)):(r=e,o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(De(e)-s+i)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),H("week","w"),H("isoWeek","W"),L("week",5),L("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=k(e)});I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),H("day","d"),H("weekday","e"),H("isoWeekday","E"),L("day",11),L("weekday",11),L("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=k(e)});var je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var ze="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var $e=ae;var qe=ae;var Je=ae;function Be(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=de(o[t]),u[t]=de(u[t]),l[t]=de(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Xe(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Ke(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Qe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+U(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),Xe("a",!0),Xe("A",!1),H("hour","h"),L("hour",13),ue("a",Ke),ue("A",Ke),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){var s=k(e);t[ge]=24===s?0:s}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=k(e),g(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s)),g(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i)),g(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i))});var et,tt=Te("Hours",!0),nt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:He,monthsShort:Re,week:{dow:0,doy:6},weekdays:je,weekdaysMin:ze,weekdaysShort:Ze,meridiemParse:/[ap]\.?m?\.?/i},st={},it={};function rt(e){return e?e.toLowerCase().replace("_","-"):e}function at(e){var t=null;if(!st[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=et._abbr,require("./locale/"+e),ot(t)}catch(e){}return st[e]}function ot(e,t){var n;return e&&((n=l(t)?lt(e):ut(e,t))?et=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),et._abbr}function ut(e,t){if(null===t)return delete st[e],null;var n,s=nt;if(t.abbr=e,null!=st[e])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=st[e]._config;else if(null!=t.parentLocale)if(null!=st[t.parentLocale])s=st[t.parentLocale]._config;else{if(null==(n=at(t.parentLocale)))return it[t.parentLocale]||(it[t.parentLocale]=[]),it[t.parentLocale].push({name:e,config:t}),null;s=n._config}return st[e]=new P(b(s,t)),it[e]&&it[e].forEach(function(e){ut(e.name,e.config)}),ot(e),st[e]}function lt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return et;if(!o(e)){if(t=at(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=rt(e[r]).split("-")).length,n=(n=rt(e[r+1]))?n.split("-"):null;0<t;){if(s=at(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&a(i,n,!0)>=t-1)break;t--}r++}return et}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11<n[_e]?_e:n[ye]<1||n[ye]>Pe(n[me],n[_e])?ye:n[ge]<0||24<n[ge]||24===n[ge]&&(0!==n[pe]||0!==n[ve]||0!==n[we])?ge:n[pe]<0||59<n[pe]?pe:n[ve]<0||59<n[ve]?ve:n[we]<0||999<n[we]?we:-1,g(e)._overflowDayOfYear&&(t<me||ye<t)&&(t=ye),g(e)._overflowWeeks&&-1===t&&(t=Me),g(e)._overflowWeekday&&-1===t&&(t=Se),g(e).overflow=t),e}function ht(e,t,n){return null!=e?e:null!=t?t:n}function ct(e){var t,n,s,i,r,a=[];if(!e._d){var o,u;for(o=e,u=new Date(c.now()),s=o._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],e._w&&null==e._a[ye]&&null==e._a[_e]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ht(t.GG,e._a[me],Ie(Tt(),1,4).year),s=ht(t.W,1),((i=ht(t.E,1))<1||7<i)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=Ie(Tt(),r,a);n=ht(t.gg,e._a[me],l.year),s=ht(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r}s<1||s>Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ht(e._a[me],s[me]),(e._dayOfYear>De(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[pe]&&0===e._a[ve]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o=new Date(e,t,n,s,i,r,a);return e<100&&0<=e&&isFinite(o.getFullYear())&&o.setFullYear(e),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var ft=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/Z|[+-]\d\d(?::?\d\d)?/,yt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],gt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function vt(e){var t,n,s,i,r,a,o=e._i,u=ft.exec(o)||mt.exec(o);if(u){for(g(e).iso=!0,t=0,n=yt.length;t<n;t++)if(yt[t][1].exec(u[1])){i=yt[t][0],s=!1!==yt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[3])){r=(u[2]||" ")+gt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!_t.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),kt(e)}else e._isValid=!1}var wt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function Mt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),Re.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}var St={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dt(e){var t,n,s,i=wt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(i){var r=Mt(i[4],i[3],i[2],i[5],i[6],i[7]);if(t=i[1],n=r,s=e,t&&Ze.indexOf(t)!==new Date(n[0],n[1],n[2]).getDay()&&(g(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=r,e._tzm=function(e,t,n){if(e)return St[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(i[8],i[9],i[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),g(e).rfc2822=!0}else e._isValid=!1}function kt(e){if(e._f!==c.ISO_8601)if(e._f!==c.RFC_2822){e._a=[],g(e).empty=!0;var t,n,s,i,r,a,o,u,l=""+e._i,d=l.length,h=0;for(s=j(e._f,e._locale).match(N)||[],t=0;t<s.length;t++)i=s[t],(n=(l.match(le(i,e))||[])[0])&&(0<(r=l.substr(0,l.indexOf(n))).length&&g(e).unusedInput.push(r),l=l.slice(l.indexOf(n)+n.length),h+=n.length),E[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),a=i,u=e,null!=(o=n)&&m(he,a)&&he[a](o,u._a,u,a)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=d-h,0<l.length&&g(e).unusedInput.push(l),e._a[ge]<=12&&!0===g(e).bigHour&&0<e._a[ge]&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[ge]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[ge],e._meridiem),ct(e),dt(e)}else Dt(e);else vt(e)}function Yt(e){var t,n,s,i,r=e._i,a=e._f;return e._locale=e._locale||lt(e._l),null===r||void 0===a&&""===r?v({nullInput:!0}):("string"==typeof r&&(e._i=r=e._locale.preparse(r)),S(r)?new M(dt(r)):(h(r)?e._d=r:o(a)?function(e){var t,n,s,i,r;if(0===e._f.length)return g(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],kt(t),p(t)&&(r+=g(t).charsLeftOver,r+=10*g(t).unusedTokens.length,g(t).score=r,(null==s||r<s)&&(s=r,n=t));_(e,n||t)}(e):a?kt(e):l(n=(t=e)._i)?t._d=new Date(c.now()):h(n)?t._d=new Date(n.valueOf()):"string"==typeof n?(s=t,null===(i=pt.exec(s._i))?(vt(s),!1===s._isValid&&(delete s._isValid,Dt(s),!1===s._isValid&&(delete s._isValid,c.createFromInputFallback(s)))):s._d=new Date(+i[1])):o(n)?(t._a=f(n.slice(0),function(e){return parseInt(e,10)}),ct(t)):u(n)?function(e){if(!e._d){var t=C(e._i);e._a=f([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),ct(e)}}(t):d(n)?t._d=new Date(n):c.createFromInputFallback(t),p(e)||(e._d=null),e))}function Ot(e,t,n,s,i){var r,a={};return!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new M(dt(Yt(a))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function Tt(e,t,n,s){return Ot(e,t,n,s,!1)}c.createFromInputFallback=n("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var xt=n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:v()}),bt=n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:v()});function Pt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Tt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Wt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ht(e){var t=C(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||t.isoWeek||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ye.call(Wt,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<Wt.length;++s)if(e[Wt[s]]){if(n)return!1;parseFloat(e[Wt[s]])!==k(e[Wt[s]])&&(n=!0)}return!0}(t),this._milliseconds=+d+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=lt(),this._bubble()}function Rt(e){return e instanceof Ht}function Ct(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){I(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+U(~~(e/60),2)+n+U(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),ue("Z",re),ue("ZZ",re),ce(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Ut(re,e)});var Lt=/([\+\-]|\d\d)/gi;function Ut(e,t){var n=(t||"").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+"").match(Lt)||["-",0,0],i=60*s[1]+k(s[2]);return 0===i?0:"+"===s[0]?i:-i}function Nt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(S(e)||h(e)?e.valueOf():Tt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),c.updateOffset(n,!1),n):Tt(e).local()}function Gt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Vt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var Et=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,It=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function At(e,t){var n,s,i,r=e,a=null;return Rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:d(e)?(r={},t?r[t]=e:r.milliseconds=e):(a=Et.exec(e))?(n="-"===a[1]?-1:1,r={y:0,d:k(a[ye])*n,h:k(a[ge])*n,m:k(a[pe])*n,s:k(a[ve])*n,ms:k(Ct(1e3*a[we]))*n}):(a=It.exec(e))?(n="-"===a[1]?-1:1,r={y:jt(a[2],n),M:jt(a[3],n),w:jt(a[4],n),d:jt(a[5],n),h:jt(a[6],n),m:jt(a[7],n),s:jt(a[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Nt(t,e),e.isBefore(t)?n=Zt(e,t):((n=Zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(Tt(r.from),Tt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ht(r),Rt(e)&&m(e,"_locale")&&(s._locale=e._locale),s}function jt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Zt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function zt(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(T(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),$t(this,At(e="string"==typeof e?+e:e,t),s),this}}function $t(e,t,n,s){var i=t._milliseconds,r=Ct(t._days),a=Ct(t._months);e.isValid()&&(s=null==s||s,a&&Ce(e,xe(e,"Month")+a*n),r&&be(e,"Date",xe(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&c.updateOffset(e,r||a))}At.fn=Ht.prototype,At.invalid=function(){return At(NaN)};var qt=zt(1,"add"),Jt=zt(-1,"subtract");function Bt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(n+1,"months")-s)))||0}function Qt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=lt(e))&&(this._locale=t),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Xt=n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Kt(){return this._locale}function en(e,t){I(0,[e,e.length],0,t)}function tn(e,t,n,s,i){var r;return null==e?Ie(this,s,i).year:((r=Ae(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),en("gggg","weekYear"),en("ggggg","weekYear"),en("GGGG","isoWeekYear"),en("GGGGG","isoWeekYear"),H("weekYear","gg"),H("isoWeekYear","GG"),L("weekYear",1),L("isoWeekYear",1),ue("G",se),ue("g",se),ue("GG",B,z),ue("gg",B,z),ue("GGGG",ee,q),ue("gggg",ee,q),ue("GGGGG",te,J),ue("ggggg",te,J),fe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=k(e)}),fe(["gg","GG"],function(e,t,n,s){t[s]=c.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),H("quarter","Q"),L("quarter",7),ue("Q",Z),ce("Q",function(e,t){t[_e]=3*(k(e)-1)}),I("D",["DD",2],"Do","date"),H("date","D"),L("date",9),ue("D",B),ue("DD",B,z),ue("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],ye),ce("Do",function(e,t){t[ye]=k(e.match(B)[0])});var nn=Te("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),H("dayOfYear","DDD"),L("dayOfYear",4),ue("DDD",K),ue("DDDD",$),ce(["DDD","DDDD"],function(e,t,n){n._dayOfYear=k(e)}),I("m",["mm",2],0,"minute"),H("minute","m"),L("minute",14),ue("m",B),ue("mm",B,z),ce(["m","mm"],pe);var sn=Te("Minutes",!1);I("s",["ss",2],0,"second"),H("second","s"),L("second",15),ue("s",B),ue("ss",B,z),ce(["s","ss"],ve);var rn,an=Te("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),H("millisecond","ms"),L("millisecond",16),ue("S",K,Z),ue("SS",K,z),ue("SSS",K,$),rn="SSSS";rn.length<=9;rn+="S")ue(rn,ne);function on(e,t){t[we]=k(1e3*("0."+e))}for(rn="S";rn.length<=9;rn+="S")ce(rn,on);var un=Te("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var ln=M.prototype;function dn(e){return e}ln.add=qt,ln.calendar=function(e,t){var n=e||Tt(),s=Nt(n,this).startOf("day"),i=c.calendarFormat(this,s)||"sameElse",r=t&&(x(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,Tt(n)))},ln.clone=function(){return new M(this)},ln.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Nt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=R(t)){case"year":r=Bt(this,s)/12;break;case"month":r=Bt(this,s);break;case"quarter":r=Bt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:D(r)},ln.endOf=function(e){return void 0===(e=R(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},ln.format=function(e){e||(e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var t=A(this,e);return this.localeData().postformat(t)},ln.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.fromNow=function(e){return this.from(Tt(),e)},ln.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.toNow=function(e){return this.to(Tt(),e)},ln.get=function(e){return x(this[e=R(e)])?this[e]():this},ln.invalidAt=function(){return g(this).overflow},ln.isAfter=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},ln.isBefore=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},ln.isBetween=function(e,t,n,s){var i=S(e)?e:Tt(e),r=S(t)?t:Tt(t);return!!(this.isValid()&&i.isValid()&&r.isValid())&&("("===(s=s||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===s[1]?this.isBefore(r,n):!this.isAfter(r,n))},ln.isSame=function(e,t){var n,s=S(e)?e:Tt(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},ln.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},ln.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},ln.isValid=function(){return p(this)},ln.lang=Xt,ln.locale=Qt,ln.localeData=Kt,ln.max=bt,ln.min=xt,ln.parsingFlags=function(){return _({},g(this))},ln.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:F[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=C(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(x(this[e=R(e)]))return this[e](t);return this},ln.startOf=function(e){switch(e=R(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},ln.subtract=Jt,ln.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},ln.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},ln.toDate=function(){return new Date(this.valueOf())},ln.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?A(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):x(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",A(n,"Z")):A(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},ln.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+s+"-MM-DD[T]HH:mm:ss.SSS"+i)},ln.toJSON=function(){return this.isValid()?this.toISOString():null},ln.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},ln.unix=function(){return Math.floor(this.valueOf()/1e3)},ln.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},ln.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},ln.year=Oe,ln.isLeapYear=function(){return ke(this.year())},ln.weekYear=function(e){return tn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},ln.isoWeekYear=function(e){return tn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},ln.quarter=ln.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},ln.month=Fe,ln.daysInMonth=function(){return Pe(this.year(),this.month())},ln.week=ln.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},ln.isoWeek=ln.isoWeeks=function(e){var t=Ie(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},ln.weeksInYear=function(){var e=this.localeData()._week;return Ae(this.year(),e.dow,e.doy)},ln.isoWeeksInYear=function(){return Ae(this.year(),1,4)},ln.date=nn,ln.day=ln.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},ln.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},ln.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var t,n,s=(t=e,n=this.localeData(),"string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t);return this.day(this.day()%7?s:s-7)},ln.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},ln.hour=ln.hours=tt,ln.minute=ln.minutes=sn,ln.second=ln.seconds=an,ln.millisecond=ln.milliseconds=un,ln.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Gt(this);if("string"==typeof e){if(null===(e=Ut(re,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Gt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?$t(this,At(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this},ln.utc=function(e){return this.utcOffset(0,e)},ln.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Gt(this),"m")),this},ln.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Ut(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},ln.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Tt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},ln.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},ln.isLocal=function(){return!!this.isValid()&&!this._isUTC},ln.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},ln.isUtc=Vt,ln.isUTC=Vt,ln.zoneAbbr=function(){return this._isUTC?"UTC":""},ln.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},ln.dates=n("dates accessor is deprecated. Use date instead.",nn),ln.months=n("months accessor is deprecated. Use month instead",Fe),ln.years=n("years accessor is deprecated. Use year instead",Oe),ln.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),ln.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Yt(e))._a){var t=e._isUTC?y(e._a):Tt(e._a);this._isDSTShifted=this.isValid()&&0<a(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var hn=P.prototype;function cn(e,t,n,s){var i=lt(),r=y().set(s,t);return i[n](r,e)}function fn(e,t,n){if(d(e)&&(t=e,e=void 0),e=e||"",null!=t)return cn(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=cn(e,s,n,"month");return i}function mn(e,t,n,s){t=("boolean"==typeof e?d(t)&&(n=t,t=void 0):(t=e,e=!1,d(n=t)&&(n=t,t=void 0)),t||"");var i,r=lt(),a=e?r._week.dow:0;if(null!=n)return cn(t,(n+a)%7,s,"day");var o=[];for(i=0;i<7;i++)o[i]=cn(t,(i+a)%7,s,"day");return o}hn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return x(s)?s.call(t,n):s},hn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},hn.invalidDate=function(){return this._invalidDate},hn.ordinal=function(e){return this._ordinal.replace("%d",e)},hn.preparse=dn,hn.postformat=dn,hn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return x(i)?i(e,t,n,s):i.replace(/%d/i,e)},hn.pastFuture=function(e,t){var n=this._relativeTime[0<e?"future":"past"];return x(n)?n(t):n.replace(/%s/i,t)},hn.set=function(e){var t,n;for(n in e)x(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},hn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||We).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},hn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[We.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},hn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=y([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=y([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},hn.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Ue),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},hn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Le),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},hn.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},hn.firstDayOfYear=function(){return this._week.doy},hn.firstDayOfWeek=function(){return this._week.dow},hn.weekdays=function(e,t){return e?o(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:o(this._weekdays)?this._weekdays:this._weekdays.standalone},hn.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},hn.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},hn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=y([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=y([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},hn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=$e),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},hn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=qe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},hn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Je),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},hn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},hn.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ot("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===k(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),c.lang=n("moment.lang is deprecated. Use moment.locale instead.",ot),c.langData=n("moment.langData is deprecated. Use moment.localeData instead.",lt);var _n=Math.abs;function yn(e,t,n,s){var i=At(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function gn(e){return e<0?Math.floor(e):Math.ceil(e)}function pn(e){return 4800*e/146097}function vn(e){return 146097*e/4800}function wn(e){return function(){return this.as(e)}}var Mn=wn("ms"),Sn=wn("s"),Dn=wn("m"),kn=wn("h"),Yn=wn("d"),On=wn("w"),Tn=wn("M"),xn=wn("y");function bn(e){return function(){return this.isValid()?this._data[e]:NaN}}var Pn=bn("milliseconds"),Wn=bn("seconds"),Hn=bn("minutes"),Rn=bn("hours"),Cn=bn("days"),Fn=bn("months"),Ln=bn("years");var Un=Math.round,Nn={ss:44,s:45,m:45,h:22,d:26,M:11};var Gn=Math.abs;function Vn(e){return(0<e)-(e<0)||+e}function En(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Gn(this._milliseconds)/1e3,s=Gn(this._days),i=Gn(this._months);t=D((e=D(n/60))/60),n%=60,e%=60;var r=D(i/12),a=i%=12,o=s,u=t,l=e,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=Vn(this._months)!==Vn(h)?"-":"",m=Vn(this._days)!==Vn(h)?"-":"",_=Vn(this._milliseconds)!==Vn(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(o?m+o+"D":"")+(u||l||d?"T":"")+(u?_+u+"H":"")+(l?_+l+"M":"")+(d?_+d+"S":"")}var In=Ht.prototype;return In.isValid=function(){return this._isValid},In.abs=function(){var e=this._data;return this._milliseconds=_n(this._milliseconds),this._days=_n(this._days),this._months=_n(this._months),e.milliseconds=_n(e.milliseconds),e.seconds=_n(e.seconds),e.minutes=_n(e.minutes),e.hours=_n(e.hours),e.months=_n(e.months),e.years=_n(e.years),this},In.add=function(e,t){return yn(this,e,t,1)},In.subtract=function(e,t){return yn(this,e,t,-1)},In.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=R(e))||"year"===e)return t=this._days+s/864e5,n=this._months+pn(t),"month"===e?n:n/12;switch(t=this._days+Math.round(vn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},In.asMilliseconds=Mn,In.asSeconds=Sn,In.asMinutes=Dn,In.asHours=kn,In.asDays=Yn,In.asWeeks=On,In.asMonths=Tn,In.asYears=xn,In.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},In._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*gn(vn(o)+a),o=a=0),u.milliseconds=r%1e3,e=D(r/1e3),u.seconds=e%60,t=D(e/60),u.minutes=t%60,n=D(t/60),u.hours=n%24,o+=i=D(pn(a+=D(n/24))),a-=gn(vn(i)),s=D(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},In.clone=function(){return At(this)},In.get=function(e){return e=R(e),this.isValid()?this[e+"s"]():NaN},In.milliseconds=Pn,In.seconds=Wn,In.minutes=Hn,In.hours=Rn,In.days=Cn,In.weeks=function(){return D(this.days()/7)},In.months=Fn,In.years=Ln,In.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,n,s,i,r,a,o,u,l,d,h,c=this.localeData(),f=(n=!e,s=c,i=At(t=this).abs(),r=Un(i.as("s")),a=Un(i.as("m")),o=Un(i.as("h")),u=Un(i.as("d")),l=Un(i.as("M")),d=Un(i.as("y")),(h=r<=Nn.ss&&["s",r]||r<Nn.s&&["ss",r]||a<=1&&["m"]||a<Nn.m&&["mm",a]||o<=1&&["h"]||o<Nn.h&&["hh",o]||u<=1&&["d"]||u<Nn.d&&["dd",u]||l<=1&&["M"]||l<Nn.M&&["MM",l]||d<=1&&["y"]||["yy",d])[2]=n,h[3]=0<+t,h[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,h));return e&&(f=c.pastFuture(+this,f)),c.postformat(f)},In.toISOString=En,In.toString=En,In.toJSON=En,In.locale=Qt,In.localeData=Kt,In.toIsoString=n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",En),In.lang=Xt,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ue("x",se),ue("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,n){n._d=new Date(k(e))}),c.version="2.23.0",e=Tt,c.fn=ln,c.min=function(){return Pt("isBefore",[].slice.call(arguments,0))},c.max=function(){return Pt("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=y,c.unix=function(e){return Tt(1e3*e)},c.months=function(e,t){return fn(e,t,"months")},c.isDate=h,c.locale=ot,c.invalid=v,c.duration=At,c.isMoment=S,c.weekdays=function(e,t,n){return mn(e,t,n,"weekdays")},c.parseZone=function(){return Tt.apply(null,arguments).parseZone()},c.localeData=lt,c.isDuration=Rt,c.monthsShort=function(e,t){return fn(e,t,"monthsShort")},c.weekdaysMin=function(e,t,n){return mn(e,t,n,"weekdaysMin")},c.defineLocale=ut,c.updateLocale=function(e,t){if(null!=t){var n,s,i=nt;null!=(s=at(e))&&(i=s._config),(n=new P(t=b(i,t))).parentLocale=st[e],st[e]=n,ot(e)}else null!=st[e]&&(null!=st[e].parentLocale?st[e]=st[e].parentLocale:null!=st[e]&&delete st[e]);return st[e]},c.locales=function(){return s(st)},c.weekdaysShort=function(e,t,n){return mn(e,t,n,"weekdaysShort")},c.normalizeUnits=R,c.relativeTimeRounding=function(e){return void 0===e?Un:"function"==typeof e&&(Un=e,!0)},c.relativeTimeThreshold=function(e,t){return void 0!==Nn[e]&&(void 0===t?Nn[e]:(Nn[e]=t,"s"===e&&(Nn.ss=t-1),!0))},c.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},c.prototype=ln,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},c});
Index: public/vendors/input-mask/jquery.mask.js
===================================================================
--- public/vendors/input-mask/jquery.mask.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/input-mask/jquery.mask.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,604 @@
+/**
+ * jquery.input-mask.js
+ * @version: v1.14.15
+ * @author: Igor Escobar
+ *
+ * Created by Igor Escobar on 2012-03-10. Please report any bug at github.com/igorescobar/jQuery-Mask-Plugin
+ *
+ * Copyright (c) 2012 Igor Escobar http://igorescobar.com
+ *
+ * The MIT License (http://www.opensource.org/licenses/mit-license.php)
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/* jshint laxbreak: true */
+/* jshint maxcomplexity:17 */
+/* global define */
+
+// UMD (Universal Module Definition) patterns for JavaScript modules that work everywhere.
+// https://github.com/umdjs/umd/blob/master/templates/jqueryPlugin.js
+(function (factory, jQuery, Zepto) {
+
+    if (typeof define === 'function' && define.amd) {
+        define(['jquery'], factory);
+    } else if (typeof exports === 'object') {
+        module.exports = factory(require('jquery'));
+    } else {
+        factory(jQuery || Zepto);
+    }
+
+}(function ($) {
+    'use strict';
+
+    var Mask = function (el, mask, options) {
+
+        var p = {
+            invalid: [],
+            getCaret: function () {
+                try {
+                    var sel,
+                        pos = 0,
+                        ctrl = el.get(0),
+                        dSel = document.selection,
+                        cSelStart = ctrl.selectionStart;
+
+                    // IE Support
+                    if (dSel && navigator.appVersion.indexOf('MSIE 10') === -1) {
+                        sel = dSel.createRange();
+                        sel.moveStart('character', -p.val().length);
+                        pos = sel.text.length;
+                    }
+                    // Firefox support
+                    else if (cSelStart || cSelStart === '0') {
+                        pos = cSelStart;
+                    }
+
+                    return pos;
+                } catch (e) {}
+            },
+            setCaret: function(pos) {
+                try {
+                    if (el.is(':focus')) {
+                        var range, ctrl = el.get(0);
+
+                        // Firefox, WebKit, etc..
+                        if (ctrl.setSelectionRange) {
+                            ctrl.setSelectionRange(pos, pos);
+                        } else { // IE
+                            range = ctrl.createTextRange();
+                            range.collapse(true);
+                            range.moveEnd('character', pos);
+                            range.moveStart('character', pos);
+                            range.select();
+                        }
+                    }
+                } catch (e) {}
+            },
+            events: function() {
+                el
+                .on('keydown.mask', function(e) {
+                    el.data('input-mask-keycode', e.keyCode || e.which);
+                    el.data('input-mask-previus-value', el.val());
+                    el.data('input-mask-previus-caret-pos', p.getCaret());
+                    p.maskDigitPosMapOld = p.maskDigitPosMap;
+                })
+                .on($.jMaskGlobals.useInput ? 'input.mask' : 'keyup.mask', p.behaviour)
+                .on('paste.input-mask drop.mask', function() {
+                    setTimeout(function() {
+                        el.keydown().keyup();
+                    }, 100);
+                })
+                .on('change.mask', function(){
+                    el.data('changed', true);
+                })
+                .on('blur.mask', function(){
+                    if (oldValue !== p.val() && !el.data('changed')) {
+                        el.trigger('change');
+                    }
+                    el.data('changed', false);
+                })
+                // it's very important that this callback remains in this position
+                // otherwhise oldValue it's going to work buggy
+                .on('blur.mask', function() {
+                    oldValue = p.val();
+                })
+                // select all text on focus
+                .on('focus.mask', function (e) {
+                    if (options.selectOnFocus === true) {
+                        $(e.target).select();
+                    }
+                })
+                // clear the value if it not complete the input-mask
+                .on('focusout.mask', function() {
+                    if (options.clearIfNotMatch && !regexMask.test(p.val())) {
+                       p.val('');
+                   }
+                });
+            },
+            getRegexMask: function() {
+                var maskChunks = [], translation, pattern, optional, recursive, oRecursive, r;
+
+                for (var i = 0; i < mask.length; i++) {
+                    translation = jMask.translation[mask.charAt(i)];
+
+                    if (translation) {
+
+                        pattern = translation.pattern.toString().replace(/.{1}$|^.{1}/g, '');
+                        optional = translation.optional;
+                        recursive = translation.recursive;
+
+                        if (recursive) {
+                            maskChunks.push(mask.charAt(i));
+                            oRecursive = {digit: mask.charAt(i), pattern: pattern};
+                        } else {
+                            maskChunks.push(!optional && !recursive ? pattern : (pattern + '?'));
+                        }
+
+                    } else {
+                        maskChunks.push(mask.charAt(i).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'));
+                    }
+                }
+
+                r = maskChunks.join('');
+
+                if (oRecursive) {
+                    r = r.replace(new RegExp('(' + oRecursive.digit + '(.*' + oRecursive.digit + ')?)'), '($1)?')
+                         .replace(new RegExp(oRecursive.digit, 'g'), oRecursive.pattern);
+                }
+
+                return new RegExp(r);
+            },
+            destroyEvents: function() {
+                el.off(['input', 'keydown', 'keyup', 'paste', 'drop', 'blur', 'focusout', ''].join('.mask '));
+            },
+            val: function(v) {
+                var isInput = el.is('input'),
+                    method = isInput ? 'val' : 'text',
+                    r;
+
+                if (arguments.length > 0) {
+                    if (el[method]() !== v) {
+                        el[method](v);
+                    }
+                    r = el;
+                } else {
+                    r = el[method]();
+                }
+
+                return r;
+            },
+            calculateCaretPosition: function() {
+                var oldVal = el.data('input-mask-previus-value') || '',
+                    newVal = p.getMasked(),
+                    caretPosNew = p.getCaret();
+                if (oldVal !== newVal) {
+                    var caretPosOld = el.data('input-mask-previus-caret-pos') || 0,
+                        newValL = newVal.length,
+                        oldValL = oldVal.length,
+                        maskDigitsBeforeCaret = 0,
+                        maskDigitsAfterCaret = 0,
+                        maskDigitsBeforeCaretAll = 0,
+                        maskDigitsBeforeCaretAllOld = 0,
+                        i = 0;
+
+                    for (i = caretPosNew; i < newValL; i++) {
+                        if (!p.maskDigitPosMap[i]) {
+                            break;
+                        }
+                        maskDigitsAfterCaret++;
+                    }
+
+                    for (i = caretPosNew - 1; i >= 0; i--) {
+                        if (!p.maskDigitPosMap[i]) {
+                            break;
+                        }
+                        maskDigitsBeforeCaret++;
+                    }
+
+                    for (i = caretPosNew - 1; i >= 0; i--) {
+                        if (p.maskDigitPosMap[i]) {
+                            maskDigitsBeforeCaretAll++;
+                        }
+                    }
+
+                    for (i = caretPosOld - 1; i >= 0; i--) {
+                        if (p.maskDigitPosMapOld[i]) {
+                            maskDigitsBeforeCaretAllOld++;
+                        }
+                    }
+
+                    // if the cursor is at the end keep it there
+                    if (caretPosNew > oldValL) {
+                      caretPosNew = newValL * 10;
+                    } else if (caretPosOld >= caretPosNew && caretPosOld !== oldValL) {
+                        if (!p.maskDigitPosMapOld[caretPosNew])  {
+                          var caretPos = caretPosNew;
+                          caretPosNew -= maskDigitsBeforeCaretAllOld - maskDigitsBeforeCaretAll;
+                          caretPosNew -= maskDigitsBeforeCaret;
+                          if (p.maskDigitPosMap[caretPosNew])  {
+                            caretPosNew = caretPos;
+                          }
+                        }
+                    }
+                    else if (caretPosNew > caretPosOld) {
+                        caretPosNew += maskDigitsBeforeCaretAll - maskDigitsBeforeCaretAllOld;
+                        caretPosNew += maskDigitsAfterCaret;
+                    }
+                }
+                return caretPosNew;
+            },
+            behaviour: function(e) {
+                e = e || window.event;
+                p.invalid = [];
+
+                var keyCode = el.data('input-mask-keycode');
+
+                if ($.inArray(keyCode, jMask.byPassKeys) === -1) {
+                    var newVal = p.getMasked(),
+                        caretPos = p.getCaret();
+
+                    // this is a compensation to devices/browsers that don't compensate
+                    // caret positioning the right way
+                    setTimeout(function() {
+                      p.setCaret(p.calculateCaretPosition());
+                    }, $.jMaskGlobals.keyStrokeCompensation);
+
+                    p.val(newVal);
+                    p.setCaret(caretPos);
+                    return p.callbacks(e);
+                }
+            },
+            getMasked: function(skipMaskChars, val) {
+                var buf = [],
+                    value = val === undefined ? p.val() : val + '',
+                    m = 0, maskLen = mask.length,
+                    v = 0, valLen = value.length,
+                    offset = 1, addMethod = 'push',
+                    resetPos = -1,
+                    maskDigitCount = 0,
+                    maskDigitPosArr = [],
+                    lastMaskChar,
+                    check;
+
+                if (options.reverse) {
+                    addMethod = 'unshift';
+                    offset = -1;
+                    lastMaskChar = 0;
+                    m = maskLen - 1;
+                    v = valLen - 1;
+                    check = function () {
+                        return m > -1 && v > -1;
+                    };
+                } else {
+                    lastMaskChar = maskLen - 1;
+                    check = function () {
+                        return m < maskLen && v < valLen;
+                    };
+                }
+
+                var lastUntranslatedMaskChar;
+                while (check()) {
+                    var maskDigit = mask.charAt(m),
+                        valDigit = value.charAt(v),
+                        translation = jMask.translation[maskDigit];
+
+                    if (translation) {
+                        if (valDigit.match(translation.pattern)) {
+                            buf[addMethod](valDigit);
+                             if (translation.recursive) {
+                                if (resetPos === -1) {
+                                    resetPos = m;
+                                } else if (m === lastMaskChar && m !== resetPos) {
+                                    m = resetPos - offset;
+                                }
+
+                                if (lastMaskChar === resetPos) {
+                                    m -= offset;
+                                }
+                            }
+                            m += offset;
+                        } else if (valDigit === lastUntranslatedMaskChar) {
+                            // matched the last untranslated (raw) input-mask character that we encountered
+                            // likely an insert offset the input-mask character from the last entry; fall
+                            // through and only increment v
+                            maskDigitCount--;
+                            lastUntranslatedMaskChar = undefined;
+                        } else if (translation.optional) {
+                            m += offset;
+                            v -= offset;
+                        } else if (translation.fallback) {
+                            buf[addMethod](translation.fallback);
+                            m += offset;
+                            v -= offset;
+                        } else {
+                          p.invalid.push({p: v, v: valDigit, e: translation.pattern});
+                        }
+                        v += offset;
+                    } else {
+                        if (!skipMaskChars) {
+                            buf[addMethod](maskDigit);
+                        }
+
+                        if (valDigit === maskDigit) {
+                            maskDigitPosArr.push(v);
+                            v += offset;
+                        } else {
+                            lastUntranslatedMaskChar = maskDigit;
+                            maskDigitPosArr.push(v + maskDigitCount);
+                            maskDigitCount++;
+                        }
+
+                        m += offset;
+                    }
+                }
+
+                var lastMaskCharDigit = mask.charAt(lastMaskChar);
+                if (maskLen === valLen + 1 && !jMask.translation[lastMaskCharDigit]) {
+                    buf.push(lastMaskCharDigit);
+                }
+
+                var newVal = buf.join('');
+                p.mapMaskdigitPositions(newVal, maskDigitPosArr, valLen);
+                return newVal;
+            },
+            mapMaskdigitPositions: function(newVal, maskDigitPosArr, valLen) {
+              var maskDiff = options.reverse ? newVal.length - valLen : 0;
+              p.maskDigitPosMap = {};
+              for (var i = 0; i < maskDigitPosArr.length; i++) {
+                p.maskDigitPosMap[maskDigitPosArr[i] + maskDiff] = 1;
+              }
+            },
+            callbacks: function (e) {
+                var val = p.val(),
+                    changed = val !== oldValue,
+                    defaultArgs = [val, e, el, options],
+                    callback = function(name, criteria, args) {
+                        if (typeof options[name] === 'function' && criteria) {
+                            options[name].apply(this, args);
+                        }
+                    };
+
+                callback('onChange', changed === true, defaultArgs);
+                callback('onKeyPress', changed === true, defaultArgs);
+                callback('onComplete', val.length === mask.length, defaultArgs);
+                callback('onInvalid', p.invalid.length > 0, [val, e, el, p.invalid, options]);
+            }
+        };
+
+        el = $(el);
+        var jMask = this, oldValue = p.val(), regexMask;
+
+        mask = typeof mask === 'function' ? mask(p.val(), undefined, el,  options) : mask;
+
+        // public methods
+        jMask.mask = mask;
+        jMask.options = options;
+        jMask.remove = function() {
+            var caret = p.getCaret();
+            if (jMask.options.placeholder) {
+                el.removeAttr('placeholder');
+            }
+            if (el.data('input-mask-maxlength')) {
+                el.removeAttr('maxlength');
+            }
+            p.destroyEvents();
+            p.val(jMask.getCleanVal());
+            p.setCaret(caret);
+            return el;
+        };
+
+        // get value without input-mask
+        jMask.getCleanVal = function() {
+           return p.getMasked(true);
+        };
+
+        // get masked value without the value being in the input or element
+        jMask.getMaskedVal = function(val) {
+           return p.getMasked(false, val);
+        };
+
+       jMask.init = function(onlyMask) {
+            onlyMask = onlyMask || false;
+            options = options || {};
+
+            jMask.clearIfNotMatch  = $.jMaskGlobals.clearIfNotMatch;
+            jMask.byPassKeys       = $.jMaskGlobals.byPassKeys;
+            jMask.translation      = $.extend({}, $.jMaskGlobals.translation, options.translation);
+
+            jMask = $.extend(true, {}, jMask, options);
+
+            regexMask = p.getRegexMask();
+
+            if (onlyMask) {
+                p.events();
+                p.val(p.getMasked());
+            } else {
+                if (options.placeholder) {
+                    el.attr('placeholder' , options.placeholder);
+                }
+
+                // this is necessary, otherwise if the user submit the form
+                // and then press the "back" button, the autocomplete will erase
+                // the data. Works fine on IE9+, FF, Opera, Safari.
+                if (el.data('mask')) {
+                  el.attr('autocomplete', 'off');
+                }
+
+                // detect if is necessary let the user type freely.
+                // for is a lot faster than forEach.
+                for (var i = 0, maxlength = true; i < mask.length; i++) {
+                    var translation = jMask.translation[mask.charAt(i)];
+                    if (translation && translation.recursive) {
+                        maxlength = false;
+                        break;
+                    }
+                }
+
+                if (maxlength) {
+                    el.attr('maxlength', mask.length).data('input-mask-maxlength', true);
+                }
+
+                p.destroyEvents();
+                p.events();
+
+                var caret = p.getCaret();
+                p.val(p.getMasked());
+                p.setCaret(caret);
+            }
+        };
+
+        jMask.init(!el.is('input'));
+    };
+
+    $.maskWatchers = {};
+    var HTMLAttributes = function () {
+        var input = $(this),
+            options = {},
+            prefix = 'data-input-mask-',
+            mask = input.attr('data-input-mask');
+
+        if (input.attr(prefix + 'reverse')) {
+            options.reverse = true;
+        }
+
+        if (input.attr(prefix + 'clearifnotmatch')) {
+            options.clearIfNotMatch = true;
+        }
+
+        if (input.attr(prefix + 'selectonfocus') === 'true') {
+           options.selectOnFocus = true;
+        }
+
+        if (notSameMaskObject(input, mask, options)) {
+            return input.data('mask', new Mask(this, mask, options));
+        }
+    },
+    notSameMaskObject = function(field, mask, options) {
+        options = options || {};
+        var maskObject = $(field).data('mask'),
+            stringify = JSON.stringify,
+            value = $(field).val() || $(field).text();
+        try {
+            if (typeof mask === 'function') {
+                mask = mask(value);
+            }
+            return typeof maskObject !== 'object' || stringify(maskObject.options) !== stringify(options) || maskObject.mask !== mask;
+        } catch (e) {}
+    },
+    eventSupported = function(eventName) {
+        var el = document.createElement('div'), isSupported;
+
+        eventName = 'on' + eventName;
+        isSupported = (eventName in el);
+
+        if ( !isSupported ) {
+            el.setAttribute(eventName, 'return;');
+            isSupported = typeof el[eventName] === 'function';
+        }
+        el = null;
+
+        return isSupported;
+    };
+
+    $.fn.mask = function(mask, options) {
+        options = options || {};
+        var selector = this.selector,
+            globals = $.jMaskGlobals,
+            interval = globals.watchInterval,
+            watchInputs = options.watchInputs || globals.watchInputs,
+            maskFunction = function() {
+                if (notSameMaskObject(this, mask, options)) {
+                    return $(this).data('mask', new Mask(this, mask, options));
+                }
+            };
+
+        $(this).each(maskFunction);
+
+        if (selector && selector !== '' && watchInputs) {
+            clearInterval($.maskWatchers[selector]);
+            $.maskWatchers[selector] = setInterval(function(){
+                $(document).find(selector).each(maskFunction);
+            }, interval);
+        }
+        return this;
+    };
+
+    $.fn.masked = function(val) {
+        return this.data('mask').getMaskedVal(val);
+    };
+
+    $.fn.unmask = function() {
+        clearInterval($.maskWatchers[this.selector]);
+        delete $.maskWatchers[this.selector];
+        return this.each(function() {
+            var dataMask = $(this).data('mask');
+            if (dataMask) {
+                dataMask.remove().removeData('mask');
+            }
+        });
+    };
+
+    $.fn.cleanVal = function() {
+        return this.data('mask').getCleanVal();
+    };
+
+    $.applyDataMask = function(selector) {
+        selector = selector || $.jMaskGlobals.maskElements;
+        var $selector = (selector instanceof $) ? selector : $(selector);
+        $selector.filter($.jMaskGlobals.dataMaskAttr).each(HTMLAttributes);
+    };
+
+    var globals = {
+        maskElements: 'input,td,span,div',
+        dataMaskAttr: '*[data-input-mask]',
+        dataMask: true,
+        watchInterval: 300,
+        watchInputs: true,
+        keyStrokeCompensation: 10,
+        // old versions of chrome dont work great with input event
+        useInput: !/Chrome\/[2-4][0-9]|SamsungBrowser/.test(window.navigator.userAgent) && eventSupported('input'),
+        watchDataMask: false,
+        byPassKeys: [9, 16, 17, 18, 36, 37, 38, 39, 40, 91],
+        translation: {
+            '0': {pattern: /\d/},
+            '9': {pattern: /\d/, optional: true},
+            '#': {pattern: /\d/, recursive: true},
+            'A': {pattern: /[a-zA-Z0-9]/},
+            'S': {pattern: /[a-zA-Z]/}
+        }
+    };
+
+    $.jMaskGlobals = $.jMaskGlobals || {};
+    globals = $.jMaskGlobals = $.extend(true, {}, globals, $.jMaskGlobals);
+
+    // looking for inputs with data-input-mask attribute
+    if (globals.dataMask) {
+        $.applyDataMask();
+    }
+
+    setInterval(function() {
+        if ($.jMaskGlobals.watchDataMask) {
+            $.applyDataMask();
+        }
+    }, globals.watchInterval);
+}, window.jQuery, window.Zepto));
Index: public/vendors/jquery.isotope.min.js
===================================================================
--- public/vendors/jquery.isotope.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/jquery.isotope.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,12 @@
+/*!
+ * Isotope PACKAGED v3.0.6
+ *
+ * Licensed GPLv3 for open source use
+ * or Isotope Commercial License for commercial use
+ *
+ * https://isotope.metafizzy.co
+ * Copyright 2010-2018 Metafizzy
+ */
+
+!function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,s,a){function u(t,e,o){var n,s="$()."+i+'("'+e+'")';return t.each(function(t,u){var h=a.data(u,i);if(!h)return void r(i+" not initialized. Cannot call methods, i.e. "+s);var d=h[e];if(!d||"_"==e.charAt(0))return void r(s+" is not a valid method");var l=d.apply(h,o);n=void 0===n?l:n}),void 0!==n?n:t}function h(t,e){t.each(function(t,o){var n=a.data(o,i);n?(n.option(e),n._init()):(n=new s(o,e),a.data(o,i,n))})}a=a||e||t.jQuery,a&&(s.prototype.option||(s.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=n.call(arguments,1);return u(this,t,e)}return h(this,t),this},o(a))}function o(t){!t||t&&t.bridget||(t.bridget=i)}var n=Array.prototype.slice,s=t.console,r="undefined"==typeof s?function(){}:function(t){s.error(t)};return o(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},o=i[t]=i[t]||[];return o.indexOf(e)==-1&&o.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},o=i[t]=i[t]||{};return o[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var o=i.indexOf(e);return o!=-1&&i.splice(o,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var o=this._onceEvents&&this._onceEvents[t],n=0;n<i.length;n++){var s=i[n],r=o&&o[s];r&&(this.off(t,s),delete o[s]),s.apply(this,e)}return this}},e.allOff=function(){delete this._events,delete this._onceEvents},t}),function(t,e){"function"==typeof define&&define.amd?define("get-size/get-size",e):"object"==typeof module&&module.exports?module.exports=e():t.getSize=e()}(window,function(){"use strict";function t(t){var e=parseFloat(t),i=t.indexOf("%")==-1&&!isNaN(e);return i&&e}function e(){}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;e<h;e++){var i=u[e];t[i]=0}return t}function o(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}function n(){if(!d){d=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var n=o(e);r=200==Math.round(t(n.width)),s.isBoxSizeOuter=r,i.removeChild(e)}}function s(e){if(n(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var s=o(e);if("none"==s.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var d=a.isBorderBox="border-box"==s.boxSizing,l=0;l<h;l++){var f=u[l],c=s[f],m=parseFloat(c);a[f]=isNaN(m)?0:m}var p=a.paddingLeft+a.paddingRight,y=a.paddingTop+a.paddingBottom,g=a.marginLeft+a.marginRight,v=a.marginTop+a.marginBottom,_=a.borderLeftWidth+a.borderRightWidth,z=a.borderTopWidth+a.borderBottomWidth,I=d&&r,x=t(s.width);x!==!1&&(a.width=x+(I?0:p+_));var S=t(s.height);return S!==!1&&(a.height=S+(I?0:y+z)),a.innerWidth=a.width-(p+_),a.innerHeight=a.height-(y+z),a.outerWidth=a.width+g,a.outerHeight=a.height+v,a}}var r,a="undefined"==typeof console?e:function(t){console.error(t)},u=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],h=u.length,d=!1;return s}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;i<e.length;i++){var o=e[i],n=o+"MatchesSelector";if(t[n])return n}}();return function(e,i){return e[t](i)}}),function(t,e){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["desandro-matches-selector/matches-selector"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("desandro-matches-selector")):t.fizzyUIUtils=e(t,t.matchesSelector)}(window,function(t,e){var i={};i.extend=function(t,e){for(var i in e)t[i]=e[i];return t},i.modulo=function(t,e){return(t%e+e)%e};var o=Array.prototype.slice;i.makeArray=function(t){if(Array.isArray(t))return t;if(null===t||void 0===t)return[];var e="object"==typeof t&&"number"==typeof t.length;return e?o.call(t):[t]},i.removeFrom=function(t,e){var i=t.indexOf(e);i!=-1&&t.splice(i,1)},i.getParent=function(t,i){for(;t.parentNode&&t!=document.body;)if(t=t.parentNode,e(t,i))return t},i.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.filterFindElements=function(t,o){t=i.makeArray(t);var n=[];return t.forEach(function(t){if(t instanceof HTMLElement){if(!o)return void n.push(t);e(t,o)&&n.push(t);for(var i=t.querySelectorAll(o),s=0;s<i.length;s++)n.push(i[s])}}),n},i.debounceMethod=function(t,e,i){i=i||100;var o=t.prototype[e],n=e+"Timeout";t.prototype[e]=function(){var t=this[n];clearTimeout(t);var e=arguments,s=this;this[n]=setTimeout(function(){o.apply(s,e),delete s[n]},i)}},i.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?setTimeout(t):document.addEventListener("DOMContentLoaded",t)},i.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var n=t.console;return i.htmlInit=function(e,o){i.docReady(function(){var s=i.toDashed(o),r="data-"+s,a=document.querySelectorAll("["+r+"]"),u=document.querySelectorAll(".js-"+s),h=i.makeArray(a).concat(i.makeArray(u)),d=r+"-options",l=t.jQuery;h.forEach(function(t){var i,s=t.getAttribute(r)||t.getAttribute(d);try{i=s&&JSON.parse(s)}catch(a){return void(n&&n.error("Error parsing "+r+" on "+t.className+": "+a))}var u=new e(t,i);l&&l.data(t,o,u)})})},i}),function(t,e){"function"==typeof define&&define.amd?define("outlayer/item",["ev-emitter/ev-emitter","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("ev-emitter"),require("get-size")):(t.Outlayer={},t.Outlayer.Item=e(t.EvEmitter,t.getSize))}(window,function(t,e){"use strict";function i(t){for(var e in t)return!1;return e=null,!0}function o(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}function n(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}var s=document.documentElement.style,r="string"==typeof s.transition?"transition":"WebkitTransition",a="string"==typeof s.transform?"transform":"WebkitTransform",u={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[r],h={transform:a,transition:r,transitionDuration:r+"Duration",transitionProperty:r+"Property",transitionDelay:r+"Delay"},d=o.prototype=Object.create(t.prototype);d.constructor=o,d._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},d.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},d.getSize=function(){this.size=e(this.element)},d.css=function(t){var e=this.element.style;for(var i in t){var o=h[i]||i;e[o]=t[i]}},d.getPosition=function(){var t=getComputedStyle(this.element),e=this.layout._getOption("originLeft"),i=this.layout._getOption("originTop"),o=t[e?"left":"right"],n=t[i?"top":"bottom"],s=parseFloat(o),r=parseFloat(n),a=this.layout.size;o.indexOf("%")!=-1&&(s=s/100*a.width),n.indexOf("%")!=-1&&(r=r/100*a.height),s=isNaN(s)?0:s,r=isNaN(r)?0:r,s-=e?a.paddingLeft:a.paddingRight,r-=i?a.paddingTop:a.paddingBottom,this.position.x=s,this.position.y=r},d.layoutPosition=function(){var t=this.layout.size,e={},i=this.layout._getOption("originLeft"),o=this.layout._getOption("originTop"),n=i?"paddingLeft":"paddingRight",s=i?"left":"right",r=i?"right":"left",a=this.position.x+t[n];e[s]=this.getXValue(a),e[r]="";var u=o?"paddingTop":"paddingBottom",h=o?"top":"bottom",d=o?"bottom":"top",l=this.position.y+t[u];e[h]=this.getYValue(l),e[d]="",this.css(e),this.emitEvent("layout",[this])},d.getXValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!e?t/this.layout.size.width*100+"%":t+"px"},d.getYValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&e?t/this.layout.size.height*100+"%":t+"px"},d._transitionTo=function(t,e){this.getPosition();var i=this.position.x,o=this.position.y,n=t==this.position.x&&e==this.position.y;if(this.setPosition(t,e),n&&!this.isTransitioning)return void this.layoutPosition();var s=t-i,r=e-o,a={};a.transform=this.getTranslate(s,r),this.transition({to:a,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},d.getTranslate=function(t,e){var i=this.layout._getOption("originLeft"),o=this.layout._getOption("originTop");return t=i?t:-t,e=o?e:-e,"translate3d("+t+"px, "+e+"px, 0)"},d.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},d.moveTo=d._transitionTo,d.setPosition=function(t,e){this.position.x=parseFloat(t),this.position.y=parseFloat(e)},d._nonTransition=function(t){this.css(t.to),t.isCleaning&&this._removeStyles(t.to);for(var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)},d.transition=function(t){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(t);var e=this._transn;for(var i in t.onTransitionEnd)e.onEnd[i]=t.onTransitionEnd[i];for(i in t.to)e.ingProperties[i]=!0,t.isCleaning&&(e.clean[i]=!0);if(t.from){this.css(t.from);var o=this.element.offsetHeight;o=null}this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0};var l="opacity,"+n(a);d.enableTransition=function(){if(!this.isTransitioning){var t=this.layout.options.transitionDuration;t="number"==typeof t?t+"ms":t,this.css({transitionProperty:l,transitionDuration:t,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(u,this,!1)}},d.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},d.onotransitionend=function(t){this.ontransitionend(t)};var f={"-webkit-transform":"transform"};d.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,o=f[t.propertyName]||t.propertyName;if(delete e.ingProperties[o],i(e.ingProperties)&&this.disableTransition(),o in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[o]),o in e.onEnd){var n=e.onEnd[o];n.call(this),delete e.onEnd[o]}this.emitEvent("transitionEnd",[this])}},d.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(u,this,!1),this.isTransitioning=!1},d._removeStyles=function(t){var e={};for(var i in t)e[i]="";this.css(e)};var c={transitionProperty:"",transitionDuration:"",transitionDelay:""};return d.removeTransitionStyles=function(){this.css(c)},d.stagger=function(t){t=isNaN(t)?0:t,this.staggerDelay=t+"ms"},d.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},d.remove=function(){return r&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",function(){this.removeElem()}),void this.hide()):void this.removeElem()},d.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("visibleStyle");e[i]=this.onRevealTransitionEnd,this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0,onTransitionEnd:e})},d.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},d.getHideRevealTransitionEndProperty=function(t){var e=this.layout.options[t];if(e.opacity)return"opacity";for(var i in e)return i},d.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("hiddenStyle");e[i]=this.onHideTransitionEnd,this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:e})},d.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},d.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},o}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("outlayer/outlayer",["ev-emitter/ev-emitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(i,o,n,s){return e(t,i,o,n,s)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):t.Outlayer=e(t,t.EvEmitter,t.getSize,t.fizzyUIUtils,t.Outlayer.Item)}(window,function(t,e,i,o,n){"use strict";function s(t,e){var i=o.getQueryElement(t);if(!i)return void(u&&u.error("Bad element for "+this.constructor.namespace+": "+(i||t)));this.element=i,h&&(this.$element=h(this.element)),this.options=o.extend({},this.constructor.defaults),this.option(e);var n=++l;this.element.outlayerGUID=n,f[n]=this,this._create();var s=this._getOption("initLayout");s&&this.layout()}function r(t){function e(){t.apply(this,arguments)}return e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e}function a(t){if("number"==typeof t)return t;var e=t.match(/(^\d*\.?\d*)(\w*)/),i=e&&e[1],o=e&&e[2];if(!i.length)return 0;i=parseFloat(i);var n=m[o]||1;return i*n}var u=t.console,h=t.jQuery,d=function(){},l=0,f={};s.namespace="outlayer",s.Item=n,s.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var c=s.prototype;o.extend(c,e.prototype),c.option=function(t){o.extend(this.options,t)},c._getOption=function(t){var e=this.constructor.compatOptions[t];return e&&void 0!==this.options[e]?this.options[e]:this.options[t]},s.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},c._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),o.extend(this.element.style,this.options.containerStyle);var t=this._getOption("resize");t&&this.bindResize()},c.reloadItems=function(){this.items=this._itemize(this.element.children)},c._itemize=function(t){for(var e=this._filterFindItemElements(t),i=this.constructor.Item,o=[],n=0;n<e.length;n++){var s=e[n],r=new i(s,this);o.push(r)}return o},c._filterFindItemElements=function(t){return o.filterFindElements(t,this.options.itemSelector)},c.getItemElements=function(){return this.items.map(function(t){return t.element})},c.layout=function(){this._resetLayout(),this._manageStamps();var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;this.layoutItems(this.items,e),this._isLayoutInited=!0},c._init=c.layout,c._resetLayout=function(){this.getSize()},c.getSize=function(){this.size=i(this.element)},c._getMeasurement=function(t,e){var o,n=this.options[t];n?("string"==typeof n?o=this.element.querySelector(n):n instanceof HTMLElement&&(o=n),this[t]=o?i(o)[e]:n):this[t]=0},c.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},c._getItemsForLayout=function(t){return t.filter(function(t){return!t.isIgnored})},c._layoutItems=function(t,e){if(this._emitCompleteOnItems("layout",t),t&&t.length){var i=[];t.forEach(function(t){var o=this._getItemLayoutPosition(t);o.item=t,o.isInstant=e||t.isLayoutInstant,i.push(o)},this),this._processLayoutQueue(i)}},c._getItemLayoutPosition=function(){return{x:0,y:0}},c._processLayoutQueue=function(t){this.updateStagger(),t.forEach(function(t,e){this._positionItem(t.item,t.x,t.y,t.isInstant,e)},this)},c.updateStagger=function(){var t=this.options.stagger;return null===t||void 0===t?void(this.stagger=0):(this.stagger=a(t),this.stagger)},c._positionItem=function(t,e,i,o,n){o?t.goTo(e,i):(t.stagger(n*this.stagger),t.moveTo(e,i))},c._postLayout=function(){this.resizeContainer()},c.resizeContainer=function(){var t=this._getOption("resizeContainer");if(t){var e=this._getContainerSize();e&&(this._setContainerMeasure(e.width,!0),this._setContainerMeasure(e.height,!1))}},c._getContainerSize=d,c._setContainerMeasure=function(t,e){if(void 0!==t){var i=this.size;i.isBorderBox&&(t+=e?i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth:i.paddingBottom+i.paddingTop+i.borderTopWidth+i.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},c._emitCompleteOnItems=function(t,e){function i(){n.dispatchEvent(t+"Complete",null,[e])}function o(){r++,r==s&&i()}var n=this,s=e.length;if(!e||!s)return void i();var r=0;e.forEach(function(e){e.once(t,o)})},c.dispatchEvent=function(t,e,i){var o=e?[e].concat(i):i;if(this.emitEvent(t,o),h)if(this.$element=this.$element||h(this.element),e){var n=h.Event(e);n.type=t,this.$element.trigger(n,i)}else this.$element.trigger(t,i)},c.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},c.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},c.stamp=function(t){t=this._find(t),t&&(this.stamps=this.stamps.concat(t),t.forEach(this.ignore,this))},c.unstamp=function(t){t=this._find(t),t&&t.forEach(function(t){o.removeFrom(this.stamps,t),this.unignore(t)},this)},c._find=function(t){if(t)return"string"==typeof t&&(t=this.element.querySelectorAll(t)),t=o.makeArray(t)},c._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},c._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},c._manageStamp=d,c._getElementOffset=function(t){var e=t.getBoundingClientRect(),o=this._boundingRect,n=i(t),s={left:e.left-o.left-n.marginLeft,top:e.top-o.top-n.marginTop,right:o.right-e.right-n.marginRight,bottom:o.bottom-e.bottom-n.marginBottom};return s},c.handleEvent=o.handleEvent,c.bindResize=function(){t.addEventListener("resize",this),this.isResizeBound=!0},c.unbindResize=function(){t.removeEventListener("resize",this),this.isResizeBound=!1},c.onresize=function(){this.resize()},o.debounceMethod(s,"onresize",100),c.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},c.needsResizeLayout=function(){var t=i(this.element),e=this.size&&t;return e&&t.innerWidth!==this.size.innerWidth},c.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},c.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},c.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(i)}},c.reveal=function(t){if(this._emitCompleteOnItems("reveal",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.reveal()})}},c.hide=function(t){if(this._emitCompleteOnItems("hide",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.hide()})}},c.revealItemElements=function(t){var e=this.getItems(t);this.reveal(e)},c.hideItemElements=function(t){var e=this.getItems(t);this.hide(e)},c.getItem=function(t){for(var e=0;e<this.items.length;e++){var i=this.items[e];if(i.element==t)return i}},c.getItems=function(t){t=o.makeArray(t);var e=[];return t.forEach(function(t){var i=this.getItem(t);i&&e.push(i)},this),e},c.remove=function(t){var e=this.getItems(t);this._emitCompleteOnItems("remove",e),e&&e.length&&e.forEach(function(t){t.remove(),o.removeFrom(this.items,t)},this)},c.destroy=function(){var t=this.element.style;t.height="",t.position="",t.width="",this.items.forEach(function(t){t.destroy()}),this.unbindResize();var e=this.element.outlayerGUID;delete f[e],delete this.element.outlayerGUID,h&&h.removeData(this.element,this.constructor.namespace)},s.data=function(t){t=o.getQueryElement(t);var e=t&&t.outlayerGUID;return e&&f[e]},s.create=function(t,e){var i=r(s);return i.defaults=o.extend({},s.defaults),o.extend(i.defaults,e),i.compatOptions=o.extend({},s.compatOptions),i.namespace=t,i.data=s.data,i.Item=r(n),o.htmlInit(i,t),h&&h.bridget&&h.bridget(t,i),i};var m={ms:1,s:1e3};return s.Item=n,s}),function(t,e){"function"==typeof define&&define.amd?define("isotope-layout/js/item",["outlayer/outlayer"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer")):(t.Isotope=t.Isotope||{},t.Isotope.Item=e(t.Outlayer))}(window,function(t){"use strict";function e(){t.Item.apply(this,arguments)}var i=e.prototype=Object.create(t.Item.prototype),o=i._create;i._create=function(){this.id=this.layout.itemGUID++,o.call(this),this.sortData={}},i.updateSortData=function(){if(!this.isIgnored){this.sortData.id=this.id,this.sortData["original-order"]=this.id,this.sortData.random=Math.random();var t=this.layout.options.getSortData,e=this.layout._sorters;for(var i in t){var o=e[i];this.sortData[i]=o(this.element,this)}}};var n=i.destroy;return i.destroy=function(){n.apply(this,arguments),this.css({display:""})},e}),function(t,e){"function"==typeof define&&define.amd?define("isotope-layout/js/layout-mode",["get-size/get-size","outlayer/outlayer"],e):"object"==typeof module&&module.exports?module.exports=e(require("get-size"),require("outlayer")):(t.Isotope=t.Isotope||{},t.Isotope.LayoutMode=e(t.getSize,t.Outlayer))}(window,function(t,e){"use strict";function i(t){this.isotope=t,t&&(this.options=t.options[this.namespace],this.element=t.element,this.items=t.filteredItems,this.size=t.size)}var o=i.prototype,n=["_resetLayout","_getItemLayoutPosition","_manageStamp","_getContainerSize","_getElementOffset","needsResizeLayout","_getOption"];return n.forEach(function(t){o[t]=function(){return e.prototype[t].apply(this.isotope,arguments)}}),o.needsVerticalResizeLayout=function(){var e=t(this.isotope.element),i=this.isotope.size&&e;return i&&e.innerHeight!=this.isotope.size.innerHeight},o._getMeasurement=function(){this.isotope._getMeasurement.apply(this,arguments)},o.getColumnWidth=function(){this.getSegmentSize("column","Width")},o.getRowHeight=function(){this.getSegmentSize("row","Height")},o.getSegmentSize=function(t,e){var i=t+e,o="outer"+e;if(this._getMeasurement(i,o),!this[i]){var n=this.getFirstItemSize();this[i]=n&&n[o]||this.isotope.size["inner"+e]}},o.getFirstItemSize=function(){var e=this.isotope.filteredItems[0];return e&&e.element&&t(e.element)},o.layout=function(){this.isotope.layout.apply(this.isotope,arguments)},o.getSize=function(){this.isotope.getSize(),this.size=this.isotope.size},i.modes={},i.create=function(t,e){function n(){i.apply(this,arguments)}return n.prototype=Object.create(o),n.prototype.constructor=n,e&&(n.options=e),n.prototype.namespace=t,i.modes[t]=n,n},i}),function(t,e){"function"==typeof define&&define.amd?define("masonry-layout/masonry",["outlayer/outlayer","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer"),require("get-size")):t.Masonry=e(t.Outlayer,t.getSize)}(window,function(t,e){var i=t.create("masonry");i.compatOptions.fitWidth="isFitWidth";var o=i.prototype;return o._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var t=0;t<this.cols;t++)this.colYs.push(0);this.maxY=0,this.horizontalColIndex=0},o.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],i=t&&t.element;this.columnWidth=i&&e(i).outerWidth||this.containerWidth}var o=this.columnWidth+=this.gutter,n=this.containerWidth+this.gutter,s=n/o,r=o-n%o,a=r&&r<1?"round":"floor";s=Math[a](s),this.cols=Math.max(s,1)},o.getContainerWidth=function(){var t=this._getOption("fitWidth"),i=t?this.element.parentNode:this.element,o=e(i);this.containerWidth=o&&o.innerWidth},o._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,i=e&&e<1?"round":"ceil",o=Math[i](t.size.outerWidth/this.columnWidth);o=Math.min(o,this.cols);for(var n=this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition",s=this[n](o,t),r={x:this.columnWidth*s.col,y:s.y},a=s.y+t.size.outerHeight,u=o+s.col,h=s.col;h<u;h++)this.colYs[h]=a;return r},o._getTopColPosition=function(t){var e=this._getTopColGroup(t),i=Math.min.apply(Math,e);return{col:e.indexOf(i),y:i}},o._getTopColGroup=function(t){if(t<2)return this.colYs;for(var e=[],i=this.cols+1-t,o=0;o<i;o++)e[o]=this._getColGroupY(o,t);return e},o._getColGroupY=function(t,e){if(e<2)return this.colYs[t];var i=this.colYs.slice(t,t+e);return Math.max.apply(Math,i)},o._getHorizontalColPosition=function(t,e){var i=this.horizontalColIndex%this.cols,o=t>1&&i+t>this.cols;i=o?0:i;var n=e.size.outerWidth&&e.size.outerHeight;return this.horizontalColIndex=n?i+t:this.horizontalColIndex,{col:i,y:this._getColGroupY(i,t)}},o._manageStamp=function(t){var i=e(t),o=this._getElementOffset(t),n=this._getOption("originLeft"),s=n?o.left:o.right,r=s+i.outerWidth,a=Math.floor(s/this.columnWidth);a=Math.max(0,a);var u=Math.floor(r/this.columnWidth);u-=r%this.columnWidth?0:1,u=Math.min(this.cols-1,u);for(var h=this._getOption("originTop"),d=(h?o.top:o.bottom)+i.outerHeight,l=a;l<=u;l++)this.colYs[l]=Math.max(d,this.colYs[l])},o._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},o._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},o.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},i}),function(t,e){"function"==typeof define&&define.amd?define("isotope-layout/js/layout-modes/masonry",["../layout-mode","masonry-layout/masonry"],e):"object"==typeof module&&module.exports?module.exports=e(require("../layout-mode"),require("masonry-layout")):e(t.Isotope.LayoutMode,t.Masonry)}(window,function(t,e){"use strict";var i=t.create("masonry"),o=i.prototype,n={_getElementOffset:!0,layout:!0,_getMeasurement:!0};for(var s in e.prototype)n[s]||(o[s]=e.prototype[s]);var r=o.measureColumns;o.measureColumns=function(){this.items=this.isotope.filteredItems,r.call(this)};var a=o._getOption;return o._getOption=function(t){return"fitWidth"==t?void 0!==this.options.isFitWidth?this.options.isFitWidth:this.options.fitWidth:a.apply(this.isotope,arguments)},i}),function(t,e){"function"==typeof define&&define.amd?define("isotope-layout/js/layout-modes/fit-rows",["../layout-mode"],e):"object"==typeof exports?module.exports=e(require("../layout-mode")):e(t.Isotope.LayoutMode)}(window,function(t){"use strict";var e=t.create("fitRows"),i=e.prototype;return i._resetLayout=function(){this.x=0,this.y=0,this.maxY=0,this._getMeasurement("gutter","outerWidth")},i._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth+this.gutter,i=this.isotope.size.innerWidth+this.gutter;0!==this.x&&e+this.x>i&&(this.x=0,this.y=this.maxY);var o={x:this.x,y:this.y};return this.maxY=Math.max(this.maxY,this.y+t.size.outerHeight),this.x+=e,o},i._getContainerSize=function(){return{height:this.maxY}},e}),function(t,e){"function"==typeof define&&define.amd?define("isotope-layout/js/layout-modes/vertical",["../layout-mode"],e):"object"==typeof module&&module.exports?module.exports=e(require("../layout-mode")):e(t.Isotope.LayoutMode)}(window,function(t){"use strict";var e=t.create("vertical",{horizontalAlignment:0}),i=e.prototype;return i._resetLayout=function(){this.y=0},i._getItemLayoutPosition=function(t){t.getSize();var e=(this.isotope.size.innerWidth-t.size.outerWidth)*this.options.horizontalAlignment,i=this.y;return this.y+=t.size.outerHeight,{x:e,y:i}},i._getContainerSize=function(){return{height:this.y}},e}),function(t,e){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size","desandro-matches-selector/matches-selector","fizzy-ui-utils/utils","isotope-layout/js/item","isotope-layout/js/layout-mode","isotope-layout/js/layout-modes/masonry","isotope-layout/js/layout-modes/fit-rows","isotope-layout/js/layout-modes/vertical"],function(i,o,n,s,r,a){return e(t,i,o,n,s,r,a)}):"object"==typeof module&&module.exports?module.exports=e(t,require("outlayer"),require("get-size"),require("desandro-matches-selector"),require("fizzy-ui-utils"),require("isotope-layout/js/item"),require("isotope-layout/js/layout-mode"),require("isotope-layout/js/layout-modes/masonry"),require("isotope-layout/js/layout-modes/fit-rows"),require("isotope-layout/js/layout-modes/vertical")):t.Isotope=e(t,t.Outlayer,t.getSize,t.matchesSelector,t.fizzyUIUtils,t.Isotope.Item,t.Isotope.LayoutMode)}(window,function(t,e,i,o,n,s,r){function a(t,e){return function(i,o){for(var n=0;n<t.length;n++){var s=t[n],r=i.sortData[s],a=o.sortData[s];if(r>a||r<a){var u=void 0!==e[s]?e[s]:e,h=u?1:-1;return(r>a?1:-1)*h}}return 0}}var u=t.jQuery,h=String.prototype.trim?function(t){return t.trim()}:function(t){return t.replace(/^\s+|\s+$/g,"")},d=e.create("isotope",{layoutMode:"masonry",isJQueryFiltering:!0,sortAscending:!0});d.Item=s,d.LayoutMode=r;var l=d.prototype;l._create=function(){this.itemGUID=0,this._sorters={},this._getSorters(),e.prototype._create.call(this),this.modes={},this.filteredItems=this.items,this.sortHistory=["original-order"];for(var t in r.modes)this._initLayoutMode(t)},l.reloadItems=function(){this.itemGUID=0,e.prototype.reloadItems.call(this)},l._itemize=function(){for(var t=e.prototype._itemize.apply(this,arguments),i=0;i<t.length;i++){var o=t[i];o.id=this.itemGUID++}return this._updateItemsSortData(t),t},l._initLayoutMode=function(t){var e=r.modes[t],i=this.options[t]||{};this.options[t]=e.options?n.extend(e.options,i):i,this.modes[t]=new e(this)},l.layout=function(){return!this._isLayoutInited&&this._getOption("initLayout")?void this.arrange():void this._layout()},l._layout=function(){var t=this._getIsInstant();this._resetLayout(),this._manageStamps(),this.layoutItems(this.filteredItems,t),this._isLayoutInited=!0},l.arrange=function(t){this.option(t),this._getIsInstant();var e=this._filter(this.items);this.filteredItems=e.matches,this._bindArrangeComplete(),this._isInstant?this._noTransition(this._hideReveal,[e]):this._hideReveal(e),this._sort(),this._layout()},l._init=l.arrange,l._hideReveal=function(t){this.reveal(t.needReveal),this.hide(t.needHide)},l._getIsInstant=function(){var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;return this._isInstant=e,e},l._bindArrangeComplete=function(){function t(){e&&i&&o&&n.dispatchEvent("arrangeComplete",null,[n.filteredItems])}var e,i,o,n=this;this.once("layoutComplete",function(){e=!0,t()}),this.once("hideComplete",function(){i=!0,t()}),this.once("revealComplete",function(){o=!0,t()})},l._filter=function(t){var e=this.options.filter;e=e||"*";for(var i=[],o=[],n=[],s=this._getFilterTest(e),r=0;r<t.length;r++){var a=t[r];if(!a.isIgnored){var u=s(a);u&&i.push(a),u&&a.isHidden?o.push(a):u||a.isHidden||n.push(a)}}return{matches:i,needReveal:o,needHide:n}},l._getFilterTest=function(t){return u&&this.options.isJQueryFiltering?function(e){return u(e.element).is(t);
+}:"function"==typeof t?function(e){return t(e.element)}:function(e){return o(e.element,t)}},l.updateSortData=function(t){var e;t?(t=n.makeArray(t),e=this.getItems(t)):e=this.items,this._getSorters(),this._updateItemsSortData(e)},l._getSorters=function(){var t=this.options.getSortData;for(var e in t){var i=t[e];this._sorters[e]=f(i)}},l._updateItemsSortData=function(t){for(var e=t&&t.length,i=0;e&&i<e;i++){var o=t[i];o.updateSortData()}};var f=function(){function t(t){if("string"!=typeof t)return t;var i=h(t).split(" "),o=i[0],n=o.match(/^\[(.+)\]$/),s=n&&n[1],r=e(s,o),a=d.sortDataParsers[i[1]];return t=a?function(t){return t&&a(r(t))}:function(t){return t&&r(t)}}function e(t,e){return t?function(e){return e.getAttribute(t)}:function(t){var i=t.querySelector(e);return i&&i.textContent}}return t}();d.sortDataParsers={parseInt:function(t){return parseInt(t,10)},parseFloat:function(t){return parseFloat(t)}},l._sort=function(){if(this.options.sortBy){var t=n.makeArray(this.options.sortBy);this._getIsSameSortBy(t)||(this.sortHistory=t.concat(this.sortHistory));var e=a(this.sortHistory,this.options.sortAscending);this.filteredItems.sort(e)}},l._getIsSameSortBy=function(t){for(var e=0;e<t.length;e++)if(t[e]!=this.sortHistory[e])return!1;return!0},l._mode=function(){var t=this.options.layoutMode,e=this.modes[t];if(!e)throw new Error("No layout mode: "+t);return e.options=this.options[t],e},l._resetLayout=function(){e.prototype._resetLayout.call(this),this._mode()._resetLayout()},l._getItemLayoutPosition=function(t){return this._mode()._getItemLayoutPosition(t)},l._manageStamp=function(t){this._mode()._manageStamp(t)},l._getContainerSize=function(){return this._mode()._getContainerSize()},l.needsResizeLayout=function(){return this._mode().needsResizeLayout()},l.appended=function(t){var e=this.addItems(t);if(e.length){var i=this._filterRevealAdded(e);this.filteredItems=this.filteredItems.concat(i)}},l.prepended=function(t){var e=this._itemize(t);if(e.length){this._resetLayout(),this._manageStamps();var i=this._filterRevealAdded(e);this.layoutItems(this.filteredItems),this.filteredItems=i.concat(this.filteredItems),this.items=e.concat(this.items)}},l._filterRevealAdded=function(t){var e=this._filter(t);return this.hide(e.needHide),this.reveal(e.matches),this.layoutItems(e.matches,!0),e.matches},l.insert=function(t){var e=this.addItems(t);if(e.length){var i,o,n=e.length;for(i=0;i<n;i++)o=e[i],this.element.appendChild(o.element);var s=this._filter(e).matches;for(i=0;i<n;i++)e[i].isLayoutInstant=!0;for(this.arrange(),i=0;i<n;i++)delete e[i].isLayoutInstant;this.reveal(s)}};var c=l.remove;return l.remove=function(t){t=n.makeArray(t);var e=this.getItems(t);c.call(this,t);for(var i=e&&e.length,o=0;i&&o<i;o++){var s=e[o];n.removeFrom(this.filteredItems,s)}},l.shuffle=function(){for(var t=0;t<this.items.length;t++){var e=this.items[t];e.sortData.random=Math.random()}this.options.sortBy="random",this._sort(),this._layout()},l._noTransition=function(t,e){var i=this.options.transitionDuration;this.options.transitionDuration=0;var o=t.apply(this,e);return this.options.transitionDuration=i,o},l.getFilteredItemElements=function(){return this.filteredItems.map(function(t){return t.element})},d});
Index: public/vendors/jquery/jquery-ui.min.js
===================================================================
--- public/vendors/jquery/jquery-ui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/jquery/jquery-ui.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,13 @@
+/*! jQuery UI - v1.12.1 - 2016-09-14
+* http://jqueryui.com
+* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?m.left+=p:"center"===n.at[0]&&(m.left+=p/2),"bottom"===n.at[1]?m.top+=f:"center"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),x=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},m),I=e(k.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=I[0],D.top+=I[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+I[0],u[1]+I[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-l,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)
+}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(i)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("<span>").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(t.trim(t(this).children(".ui-menu-item-wrapper").text()))})}}),t.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;
+this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<div>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("<div>").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!1&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){return"text"===t?(this._super("showLabel",e),void 0):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.12.1"}});var m;t.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.on("focus",this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))
+}},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="<div class='ui-datepicker-group",U[1]>1)switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",P=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,P+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!E[2]?"":" title='"+E[2].replace(/'/g,"&#39;")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+A.getMonth()+"' data-year='"+A.getFullYear()+"'")+">"+(F&&!_?"&#xa0;":L?"<span class='ui-state-default'>"+A.getDate()+"</span>":"<a class='ui-state-default"+(A.getTime()===B.getTime()?" ui-state-highlight":"")+(A.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),T+="</tbody></table>"+(X?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}
+},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,h,l,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog
+},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant",e.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("<li>",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var s=t("<li>"),n=t("<div>",{title:i.element.attr("title")});return i.disabled&&this._addClass(s,null,"ui-state-disabled"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;return t===!1?(this.button.css("width",""),void 0):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1
+},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td>&#160;</td>",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;
+this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("<div>").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip});
Index: public/vendors/lightbox/jquery.magnific-popup.min.js
===================================================================
--- public/vendors/lightbox/jquery.magnific-popup.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/lightbox/jquery.magnific-popup.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),!b.st.showCloseBtn||b.st.closeBtnInside&&b.currTemplate[b.currItem.type]!==!0||b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b.st.autoFocusLast&&b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||!(2===c.which||c.ctrlKey||c.metaKey||c.altKey||c.shiftKey)){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),d||"loading"!==a||(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("<img>").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('<img class="mfp-img" />').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()});
Index: public/vendors/lightbox/magnific-popup.css
===================================================================
--- public/vendors/lightbox/magnific-popup.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/lightbox/magnific-popup.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+.mfp-bg,.mfp-wrap{position:fixed;left:0;top:0}.mfp-bg,.mfp-container,.mfp-wrap{height:100%;width:100%}.mfp-arrow:after,.mfp-arrow:before,.mfp-container:before,.mfp-figure:after{content:''}.mfp-bg{z-index:1042;overflow:hidden;background:#0b0b0b;opacity:.8}.mfp-wrap{z-index:1043;outline:0!important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;left:0;top:0;padding:0 8px;box-sizing:border-box}.mfp-container:before{display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-ajax-holder .mfp-content,.mfp-inline-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-arrow,.mfp-close,.mfp-counter,.mfp-preloader{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.mfp-preloader{color:#CCC;position:absolute;top:50%;width:auto;text-align:center;margin-top:-.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#CCC}.mfp-close,.mfp-preloader a:hover{color:#FFF}.mfp-s-error .mfp-content,.mfp-s-ready .mfp-preloader{display:none}button.mfp-arrow,button.mfp-close{overflow:visible;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;display:block;outline:0;padding:0;z-index:1046;box-shadow:none;touch-action:manipulation}.mfp-figure:after,.mfp-iframe-scaler iframe{box-shadow:0 0 8px rgba(0,0,0,.6);position:absolute;left:0}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:.65;padding:0 0 18px 10px;font-style:normal;font-size:28px;font-family:Arial,Baskerville,monospace}.mfp-close:focus,.mfp-close:hover{opacity:1}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#333}.mfp-iframe-holder .mfp-close,.mfp-image-holder .mfp-close{color:#FFF;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#CCC;font-size:12px;line-height:18px;white-space:nowrap}.mfp-figure,img.mfp-img{line-height:0}.mfp-arrow{position:absolute;opacity:.65;margin:-55px 0 0;top:50%;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:focus,.mfp-arrow:hover{opacity:1}.mfp-arrow:after,.mfp-arrow:before{display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:inset transparent}.mfp-arrow:after{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before{border-top-width:21px;border-bottom-width:21px;opacity:.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after{border-right:17px solid #FFF;margin-left:31px}.mfp-arrow-left:before{margin-left:25px;border-right:27px solid #3F3F3F}.mfp-arrow-right{right:0}.mfp-arrow-right:after{border-left:17px solid #FFF;margin-left:39px}.mfp-arrow-right:before{border-left:27px solid #3F3F3F}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-image-holder .mfp-content,img.mfp-img{max-width:100%}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{display:block;top:0;width:100%;height:100%;background:#000}.mfp-figure:after,img.mfp-img{width:auto;height:auto;display:block}img.mfp-img{box-sizing:border-box;padding:40px 0;margin:0 auto}.mfp-figure:after{top:40px;bottom:40px;right:0;z-index:-1;background:#444}.mfp-figure small{color:#BDBDBD;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#F3F3F3;word-wrap:break-word;padding-right:36px}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,.6);position:fixed;text-align:center;padding:0}}@media all and (max-width:900px){.mfp-arrow{-webkit-transform:scale(.75);transform:scale(.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}
Index: public/vendors/nestable/jquery.nestable.js
===================================================================
--- public/vendors/nestable/jquery.nestable.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/nestable/jquery.nestable.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,484 @@
+/*!
+ * Nestable jQuery Plugin - Copyright (c) 2012 David Bushell - http://dbushell.com/
+ * Dual-licensed under the BSD or MIT licenses
+ */
+;(function($, window, document, undefined)
+{
+    var hasTouch = 'ontouchstart' in document;
+
+    /**
+     * Detect CSS pointer-events property
+     * events are normally disabled on the dragging element to avoid conflicts
+     * https://github.com/ausi/Feature-detection-technique-for-pointer-events/blob/master/modernizr-pointerevents.js
+     */
+    var hasPointerEvents = (function()
+    {
+        var el    = document.createElement('div'),
+            docEl = document.documentElement;
+        if (!('pointerEvents' in el.style)) {
+            return false;
+        }
+        el.style.pointerEvents = 'auto';
+        el.style.pointerEvents = 'x';
+        docEl.appendChild(el);
+        var supports = window.getComputedStyle && window.getComputedStyle(el, '').pointerEvents === 'auto';
+        docEl.removeChild(el);
+        return !!supports;
+    })();
+
+    var defaults = {
+            listNodeName    : 'ol',
+            itemNodeName    : 'li',
+            rootClass       : 'dd',
+            listClass       : 'dd-list',
+            itemClass       : 'dd-item',
+            dragClass       : 'dd-dragel',
+            handleClass     : 'dd-handle',
+            collapsedClass  : 'dd-collapsed',
+            placeClass      : 'dd-placeholder',
+            noDragClass     : 'dd-nodrag',
+            emptyClass      : 'dd-empty',
+            expandBtnHTML   : '<button data-action="expand" type="button">Expand</button>',
+            collapseBtnHTML : '<button data-action="collapse" type="button">Collapse</button>',
+            group           : 0,
+            maxDepth        : 5,
+            threshold       : 20
+        };
+
+    function Plugin(element, options)
+    {
+        this.w  = $(document);
+        this.el = $(element);
+        this.options = $.extend({}, defaults, options);
+        this.init();
+    }
+
+    Plugin.prototype = {
+
+        init: function()
+        {
+            var list = this;
+
+            list.reset();
+
+            list.el.data('nestable-group', this.options.group);
+
+            list.placeEl = $('<div class="' + list.options.placeClass + '"/>');
+
+            $.each(this.el.find(list.options.itemNodeName), function(k, el) {
+                list.setParent($(el));
+            });
+
+            list.el.on('click', 'button', function(e) {
+                if (list.dragEl) {
+                    return;
+                }
+                var target = $(e.currentTarget),
+                    action = target.data('action'),
+                    item   = target.parent(list.options.itemNodeName);
+                if (action === 'collapse') {
+                    list.collapseItem(item);
+                }
+                if (action === 'expand') {
+                    list.expandItem(item);
+                }
+            });
+
+            var onStartEvent = function(e)
+            {
+                var handle = $(e.target);
+                if (!handle.hasClass(list.options.handleClass)) {
+                    if (handle.closest('.' + list.options.noDragClass).length) {
+                        return;
+                    }
+                    handle = handle.closest('.' + list.options.handleClass);
+                }
+
+                if (!handle.length || list.dragEl) {
+                    return;
+                }
+
+                list.isTouch = /^touch/.test(e.type);
+                if (list.isTouch && e.touches.length !== 1) {
+                    return;
+                }
+
+                e.preventDefault();
+                list.dragStart(e.touches ? e.touches[0] : e);
+            };
+
+            var onMoveEvent = function(e)
+            {
+                if (list.dragEl) {
+                    e.preventDefault();
+                    list.dragMove(e.touches ? e.touches[0] : e);
+                }
+            };
+
+            var onEndEvent = function(e)
+            {
+                if (list.dragEl) {
+                    e.preventDefault();
+                    list.dragStop(e.touches ? e.touches[0] : e);
+                }
+            };
+
+            if (hasTouch) {
+                list.el[0].addEventListener('touchstart', onStartEvent, false);
+                window.addEventListener('touchmove', onMoveEvent, false);
+                window.addEventListener('touchend', onEndEvent, false);
+                window.addEventListener('touchcancel', onEndEvent, false);
+            }
+
+            list.el.on('mousedown', onStartEvent);
+            list.w.on('mousemove', onMoveEvent);
+            list.w.on('mouseup', onEndEvent);
+
+        },
+
+        serialize: function()
+        {
+            var data,
+                depth = 0,
+                list  = this;
+                step  = function(level, depth)
+                {
+                    var array = [ ],
+                        items = level.children(list.options.itemNodeName);
+                    items.each(function()
+                    {
+                        var li   = $(this),
+                            item = $.extend({}, li.data()),
+                            sub  = li.children(list.options.listNodeName);
+                        if (sub.length) {
+                            item.children = step(sub, depth + 1);
+                        }
+                        array.push(item);
+                    });
+                    return array;
+                };
+            data = step(list.el.find(list.options.listNodeName).first(), depth);
+            return data;
+        },
+
+        serialise: function()
+        {
+            return this.serialize();
+        },
+
+        reset: function()
+        {
+            this.mouse = {
+                offsetX   : 0,
+                offsetY   : 0,
+                startX    : 0,
+                startY    : 0,
+                lastX     : 0,
+                lastY     : 0,
+                nowX      : 0,
+                nowY      : 0,
+                distX     : 0,
+                distY     : 0,
+                dirAx     : 0,
+                dirX      : 0,
+                dirY      : 0,
+                lastDirX  : 0,
+                lastDirY  : 0,
+                distAxX   : 0,
+                distAxY   : 0
+            };
+            this.isTouch    = false;
+            this.moving     = false;
+            this.dragEl     = null;
+            this.dragRootEl = null;
+            this.dragDepth  = 0;
+            this.hasNewRoot = false;
+            this.pointEl    = null;
+        },
+
+        expandItem: function(li)
+        {
+            li.removeClass(this.options.collapsedClass);
+            li.children('[data-action="expand"]').hide();
+            li.children('[data-action="collapse"]').show();
+            li.children(this.options.listNodeName).show();
+        },
+
+        collapseItem: function(li)
+        {
+            var lists = li.children(this.options.listNodeName);
+            if (lists.length) {
+                li.addClass(this.options.collapsedClass);
+                li.children('[data-action="collapse"]').hide();
+                li.children('[data-action="expand"]').show();
+                li.children(this.options.listNodeName).hide();
+            }
+        },
+
+        expandAll: function()
+        {
+            var list = this;
+            list.el.find(list.options.itemNodeName).each(function() {
+                list.expandItem($(this));
+            });
+        },
+
+        collapseAll: function()
+        {
+            var list = this;
+            list.el.find(list.options.itemNodeName).each(function() {
+                list.collapseItem($(this));
+            });
+        },
+
+        setParent: function(li)
+        {
+            if (li.children(this.options.listNodeName).length) {
+                li.prepend($(this.options.expandBtnHTML));
+                li.prepend($(this.options.collapseBtnHTML));
+            }
+            li.children('[data-action="expand"]').hide();
+        },
+
+        unsetParent: function(li)
+        {
+            li.removeClass(this.options.collapsedClass);
+            li.children('[data-action]').remove();
+            li.children(this.options.listNodeName).remove();
+        },
+
+        dragStart: function(e)
+        {
+            var mouse    = this.mouse,
+                target   = $(e.target),
+                dragItem = target.closest(this.options.itemNodeName);
+
+            this.placeEl.css('height', dragItem.height());
+
+            mouse.offsetX = e.offsetX !== undefined ? e.offsetX : e.pageX - target.offset().left;
+            mouse.offsetY = e.offsetY !== undefined ? e.offsetY : e.pageY - target.offset().top;
+            mouse.startX = mouse.lastX = e.pageX;
+            mouse.startY = mouse.lastY = e.pageY;
+
+            this.dragRootEl = this.el;
+
+            this.dragEl = $(document.createElement(this.options.listNodeName)).addClass(this.options.listClass + ' ' + this.options.dragClass);
+            this.dragEl.css('width', dragItem.width());
+
+            dragItem.after(this.placeEl);
+            dragItem[0].parentNode.removeChild(dragItem[0]);
+            dragItem.appendTo(this.dragEl);
+
+            $(document.body).append(this.dragEl);
+            this.dragEl.css({
+                'left' : e.pageX - mouse.offsetX,
+                'top'  : e.pageY - mouse.offsetY
+            });
+            // total depth of dragging item
+            var i, depth,
+                items = this.dragEl.find(this.options.itemNodeName);
+            for (i = 0; i < items.length; i++) {
+                depth = $(items[i]).parents(this.options.listNodeName).length;
+                if (depth > this.dragDepth) {
+                    this.dragDepth = depth;
+                }
+            }
+        },
+
+        dragStop: function(e)
+        {
+            var el = this.dragEl.children(this.options.itemNodeName).first();
+            el[0].parentNode.removeChild(el[0]);
+            this.placeEl.replaceWith(el);
+
+            this.dragEl.remove();
+            this.el.trigger('change');
+            if (this.hasNewRoot) {
+                this.dragRootEl.trigger('change');
+            }
+            this.reset();
+        },
+
+        dragMove: function(e)
+        {
+            var list, parent, prev, next, depth,
+                opt   = this.options,
+                mouse = this.mouse;
+
+            this.dragEl.css({
+                'left' : e.pageX - mouse.offsetX,
+                'top'  : e.pageY - mouse.offsetY
+            });
+
+            // mouse position last events
+            mouse.lastX = mouse.nowX;
+            mouse.lastY = mouse.nowY;
+            // mouse position this events
+            mouse.nowX  = e.pageX;
+            mouse.nowY  = e.pageY;
+            // distance mouse moved between events
+            mouse.distX = mouse.nowX - mouse.lastX;
+            mouse.distY = mouse.nowY - mouse.lastY;
+            // direction mouse was moving
+            mouse.lastDirX = mouse.dirX;
+            mouse.lastDirY = mouse.dirY;
+            // direction mouse is now moving (on both axis)
+            mouse.dirX = mouse.distX === 0 ? 0 : mouse.distX > 0 ? 1 : -1;
+            mouse.dirY = mouse.distY === 0 ? 0 : mouse.distY > 0 ? 1 : -1;
+            // axis mouse is now moving on
+            var newAx   = Math.abs(mouse.distX) > Math.abs(mouse.distY) ? 1 : 0;
+
+            // do nothing on first move
+            if (!mouse.moving) {
+                mouse.dirAx  = newAx;
+                mouse.moving = true;
+                return;
+            }
+
+            // calc distance moved on this axis (and direction)
+            if (mouse.dirAx !== newAx) {
+                mouse.distAxX = 0;
+                mouse.distAxY = 0;
+            } else {
+                mouse.distAxX += Math.abs(mouse.distX);
+                if (mouse.dirX !== 0 && mouse.dirX !== mouse.lastDirX) {
+                    mouse.distAxX = 0;
+                }
+                mouse.distAxY += Math.abs(mouse.distY);
+                if (mouse.dirY !== 0 && mouse.dirY !== mouse.lastDirY) {
+                    mouse.distAxY = 0;
+                }
+            }
+            mouse.dirAx = newAx;
+
+            /**
+             * move horizontal
+             */
+            if (mouse.dirAx && mouse.distAxX >= opt.threshold) {
+                // reset move distance on x-axis for new phase
+                mouse.distAxX = 0;
+                prev = this.placeEl.prev(opt.itemNodeName);
+                // increase horizontal level if previous sibling exists and is not collapsed
+                if (mouse.distX > 0 && prev.length && !prev.hasClass(opt.collapsedClass)) {
+                    // cannot increase level when item above is collapsed
+                    list = prev.find(opt.listNodeName).last();
+                    // check if depth limit has reached
+                    depth = this.placeEl.parents(opt.listNodeName).length;
+                    if (depth + this.dragDepth <= opt.maxDepth) {
+                        // create new sub-level if one doesn't exist
+                        if (!list.length) {
+                            list = $('<' + opt.listNodeName + '/>').addClass(opt.listClass);
+                            list.append(this.placeEl);
+                            prev.append(list);
+                            this.setParent(prev);
+                        } else {
+                            // else append to next level up
+                            list = prev.children(opt.listNodeName).last();
+                            list.append(this.placeEl);
+                        }
+                    }
+                }
+                // decrease horizontal level
+                if (mouse.distX < 0) {
+                    // we can't decrease a level if an item preceeds the current one
+                    next = this.placeEl.next(opt.itemNodeName);
+                    if (!next.length) {
+                        parent = this.placeEl.parent();
+                        this.placeEl.closest(opt.itemNodeName).after(this.placeEl);
+                        if (!parent.children().length) {
+                            this.unsetParent(parent.parent());
+                        }
+                    }
+                }
+            }
+
+            var isEmpty = false;
+
+            // find list item under cursor
+            if (!hasPointerEvents) {
+                this.dragEl[0].style.visibility = 'hidden';
+            }
+            this.pointEl = $(document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - (window.pageYOffset || document.documentElement.scrollTop)));
+            if (!hasPointerEvents) {
+                this.dragEl[0].style.visibility = 'visible';
+            }
+            if (this.pointEl.hasClass(opt.handleClass)) {
+                this.pointEl = this.pointEl.parent(opt.itemNodeName);
+            }
+            if (this.pointEl.hasClass(opt.emptyClass)) {
+                isEmpty = true;
+            }
+            else if (!this.pointEl.length || !this.pointEl.hasClass(opt.itemClass)) {
+                return;
+            }
+
+            // find parent list of item under cursor
+            var pointElRoot = this.pointEl.closest('.' + opt.rootClass),
+                isNewRoot   = this.dragRootEl.data('nestable-id') !== pointElRoot.data('nestable-id');
+
+            /**
+             * move vertical
+             */
+            if (!mouse.dirAx || isNewRoot || isEmpty) {
+                // check if groups match if dragging over new root
+                if (isNewRoot && opt.group !== pointElRoot.data('nestable-group')) {
+                    return;
+                }
+                // check depth limit
+                depth = this.dragDepth - 1 + this.pointEl.parents(opt.listNodeName).length;
+                if (depth > opt.maxDepth) {
+                    return;
+                }
+                var before = e.pageY < (this.pointEl.offset().top + this.pointEl.height() / 2);
+                    parent = this.placeEl.parent();
+                // if empty create new list to replace empty placeholder
+                if (isEmpty) {
+                    list = $(document.createElement(opt.listNodeName)).addClass(opt.listClass);
+                    list.append(this.placeEl);
+                    this.pointEl.replaceWith(list);
+                }
+                else if (before) {
+                    this.pointEl.before(this.placeEl);
+                }
+                else {
+                    this.pointEl.after(this.placeEl);
+                }
+                if (!parent.children().length) {
+                    this.unsetParent(parent.parent());
+                }
+                if (!this.dragRootEl.find(opt.itemNodeName).length) {
+                    this.dragRootEl.append('<div class="' + opt.emptyClass + '"/>');
+                }
+                // parent root list has changed
+                if (isNewRoot) {
+                    this.dragRootEl = pointElRoot;
+                    this.hasNewRoot = this.el[0] !== this.dragRootEl[0];
+                }
+            }
+        }
+
+    };
+
+    $.fn.nestable = function(params)
+    {
+        var lists  = this,
+            retval = this;
+
+        lists.each(function()
+        {
+            var plugin = $(this).data("nestable");
+
+            if (!plugin) {
+                $(this).data("nestable", new Plugin(this, params));
+                $(this).data("nestable-id", new Date().getTime());
+            } else {
+                if (typeof params === 'string' && typeof plugin[params] === 'function') {
+                    retval = plugin[params]();
+                }
+            }
+        });
+
+        return retval || lists;
+    };
+
+})(window.jQuery || window.Zepto, window, document);
Index: public/vendors/nestable/nestable.css
===================================================================
--- public/vendors/nestable/nestable.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/nestable/nestable.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,66 @@
+.dd { position: relative; display: block; margin: 0; padding: 0; list-style: none; font-size: 13px; line-height: 20px; }
+
+.dd-list { display: block; position: relative; margin: 0; padding: 0; list-style: none; }
+.dd-list .dd-list { padding-left: 30px; }
+.dd-collapsed .dd-list { display: none; }
+
+.dd-item,
+.dd-empty,
+.dd-placeholder { display: block; position: relative; margin: 0; padding: 0; min-height: 20px; font-size: 13px; line-height: 20px; }
+
+.dd-handle { display: block; height: 30px; margin-bottom: 5px; padding: 5px 10px; color: #333; text-decoration: none; font-weight: bold; border: 1px solid #dddddd;
+    background: #fafafa;
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
+    box-sizing: border-box; -moz-box-sizing: border-box;
+}
+.dd-handle:hover { color: #2ea8e5; background: #fff; }
+
+.dd-item > button { display: block; position: relative; cursor: pointer; float: left; width: 25px; height: 20px; margin: 5px 0; padding: 0; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0; background: transparent; font-size: 12px; line-height: 1; text-align: center; font-weight: bold; }
+.dd-item > button:before { content: '+'; display: block; position: absolute; width: 100%; text-align: center; text-indent: 0; }
+.dd-item > button[data-action="collapse"]:before { content: '-'; }
+
+.dd-placeholder,
+.dd-empty { margin: 5px 0; padding: 0; min-height: 30px; background: #f2fbff; border: 1px dashed #b6bcbf; box-sizing: border-box; -moz-box-sizing: border-box; }
+.dd-empty { border: 1px dashed #bbb; min-height: 100px; background-color: #e5e5e5;
+    background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
+    -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
+    background-image:    -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
+    -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
+    background-image:         linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
+    linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
+    background-size: 60px 60px;
+    background-position: 0 0, 30px 30px;
+}
+
+.dd-dragel { position: absolute; pointer-events: none; z-index: 9999; }
+.dd-dragel > .dd-item .dd-handle { margin-top: 0; }
+.dd-dragel .dd-handle {
+    -webkit-box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
+    box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
+}
+
+/**
+ * Nestable Draggable Handles
+ */
+
+.dd3-content { display: block; height: 30px; margin: 5px 0; padding: 5px 10px 5px 40px; color: #333; text-decoration: none; font-weight: bold; border: 1px solid #dddddd;
+    background: #fafafa;
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
+    box-sizing: border-box; -moz-box-sizing: border-box;
+}
+.dd3-content:hover { color: #2ea8e5; background: #fff; }
+
+.dd-dragel > .dd3-item > .dd3-content { margin: 0; }
+
+.dd3-item > button { margin-left: 30px; }
+
+.dd3-handle { position: absolute; margin: 0; left: 0; top: 0; cursor: pointer; width: 30px; text-indent: 100%; white-space: nowrap; overflow: hidden;
+    border: 1px solid #aaa;
+    background: #ccc;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+}
+.dd3-handle:before { content: '≡'; display: block; position: absolute; left: 0; top: 3px; width: 100%; text-align: center; text-indent: 0; color: #fff; font-size: 20px; font-weight: normal; }
+.dd3-handle:hover { background: #ddd; }
Index: public/vendors/prism/prism.css
===================================================================
--- public/vendors/prism/prism.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/prism/prism.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,142 @@
+/* PrismJS 1.17.1
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+	color: black;
+	background: none;
+	text-shadow: 0 1px white;
+	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+	font-size: 1em;
+	text-align: left;
+	white-space: pre;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+	line-height: 1.5;
+
+	-moz-tab-size: 4;
+	-o-tab-size: 4;
+	tab-size: 4;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
+	text-shadow: none;
+	background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
+code[class*="language-"]::selection, code[class*="language-"] ::selection {
+	text-shadow: none;
+	background: #b3d4fc;
+}
+
+@media print {
+	code[class*="language-"],
+	pre[class*="language-"] {
+		text-shadow: none;
+	}
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	padding: 1em;
+	margin: .5em 0;
+	overflow: auto;
+}
+
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+	background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+	padding: .1em;
+	border-radius: .3em;
+	white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+	color: slategray;
+}
+
+.token.punctuation {
+	color: #999;
+}
+
+.namespace {
+	opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+	color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+	color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+	color: #9a6e3a;
+	background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+	color: #07a;
+}
+
+.token.function,
+.token.class-name {
+	color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+	color: #e90;
+}
+
+.token.important,
+.token.bold {
+	font-weight: bold;
+}
+.token.italic {
+	font-style: italic;
+}
+
+.token.entity {
+	cursor: help;
+}
+
Index: public/vendors/prism/prism.js
===================================================================
--- public/vendors/prism/prism.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/prism/prism.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,7 @@
+/* PrismJS 1.17.1
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,a=0;var _={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof L?new L(e.type,_.util.encode(e.content),e.alias):Array.isArray(e)?e.map(_.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++a}),e.__id},clone:function n(e,r){var t,a,i=_.util.type(e);switch(r=r||{},i){case"Object":if(a=_.util.objId(e),r[a])return r[a];for(var o in t={},r[a]=t,e)e.hasOwnProperty(o)&&(t[o]=n(e[o],r));return t;case"Array":return a=_.util.objId(e),r[a]?r[a]:(t=[],r[a]=t,e.forEach(function(e,a){t[a]=n(e,r)}),t);default:return e}}},languages:{extend:function(e,a){var n=_.util.clone(_.languages[e]);for(var r in a)n[r]=a[r];return n},insertBefore:function(n,e,a,r){var t=(r=r||_.languages)[n],i={};for(var o in t)if(t.hasOwnProperty(o)){if(o==e)for(var l in a)a.hasOwnProperty(l)&&(i[l]=a[l]);a.hasOwnProperty(o)||(i[o]=t[o])}var s=r[n];return r[n]=i,_.languages.DFS(_.languages,function(e,a){a===s&&e!=n&&(this[e]=i)}),i},DFS:function e(a,n,r,t){t=t||{};var i=_.util.objId;for(var o in a)if(a.hasOwnProperty(o)){n.call(a,o,a[o],r||o);var l=a[o],s=_.util.type(l);"Object"!==s||t[i(l)]?"Array"!==s||t[i(l)]||(t[i(l)]=!0,e(l,n,o,t)):(t[i(l)]=!0,e(l,n,null,t))}}},plugins:{},highlightAll:function(e,a){_.highlightAllUnder(document,e,a)},highlightAllUnder:function(e,a,n){var r={callback:n,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};_.hooks.run("before-highlightall",r);for(var t,i=e.querySelectorAll(r.selector),o=0;t=i[o++];)_.highlightElement(t,!0===a,r.callback)},highlightElement:function(e,a,n){var r=function(e){for(;e&&!c.test(e.className);)e=e.parentNode;return e?(e.className.match(c)||[,"none"])[1].toLowerCase():"none"}(e),t=_.languages[r];e.className=e.className.replace(c,"").replace(/\s+/g," ")+" language-"+r;var i=e.parentNode;i&&"pre"===i.nodeName.toLowerCase()&&(i.className=i.className.replace(c,"").replace(/\s+/g," ")+" language-"+r);var o={element:e,language:r,grammar:t,code:e.textContent};function l(e){o.highlightedCode=e,_.hooks.run("before-insert",o),o.element.innerHTML=o.highlightedCode,_.hooks.run("after-highlight",o),_.hooks.run("complete",o),n&&n.call(o.element)}if(_.hooks.run("before-sanity-check",o),!o.code)return _.hooks.run("complete",o),void(n&&n.call(o.element));if(_.hooks.run("before-highlight",o),o.grammar)if(a&&u.Worker){var s=new Worker(_.filename);s.onmessage=function(e){l(e.data)},s.postMessage(JSON.stringify({language:o.language,code:o.code,immediateClose:!0}))}else l(_.highlight(o.code,o.grammar,o.language));else l(_.util.encode(o.code))},highlight:function(e,a,n){var r={code:e,grammar:a,language:n};return _.hooks.run("before-tokenize",r),r.tokens=_.tokenize(r.code,r.grammar),_.hooks.run("after-tokenize",r),L.stringify(_.util.encode(r.tokens),r.language)},matchGrammar:function(e,a,n,r,t,i,o){for(var l in n)if(n.hasOwnProperty(l)&&n[l]){var s=n[l];s=Array.isArray(s)?s:[s];for(var u=0;u<s.length;++u){if(o&&o==l+","+u)return;var c=s[u],g=c.inside,f=!!c.lookbehind,h=!!c.greedy,d=0,m=c.alias;if(h&&!c.pattern.global){var p=c.pattern.toString().match(/[imsuy]*$/)[0];c.pattern=RegExp(c.pattern.source,p+"g")}c=c.pattern||c;for(var y=r,v=t;y<a.length;v+=a[y].length,++y){var k=a[y];if(a.length>e.length)return;if(!(k instanceof L)){if(h&&y!=a.length-1){if(c.lastIndex=v,!(x=c.exec(e)))break;for(var b=x.index+(f&&x[1]?x[1].length:0),w=x.index+x[0].length,A=y,P=v,O=a.length;A<O&&(P<w||!a[A].type&&!a[A-1].greedy);++A)(P+=a[A].length)<=b&&(++y,v=P);if(a[y]instanceof L)continue;j=A-y,k=e.slice(v,P),x.index-=v}else{c.lastIndex=0;var x=c.exec(k),j=1}if(x){f&&(d=x[1]?x[1].length:0);w=(b=x.index+d)+(x=x[0].slice(d)).length;var N=k.slice(0,b),S=k.slice(w),C=[y,j];N&&(++y,v+=N.length,C.push(N));var E=new L(l,g?_.tokenize(x,g):x,m,x,h);if(C.push(E),S&&C.push(S),Array.prototype.splice.apply(a,C),1!=j&&_.matchGrammar(e,a,n,y,v,!0,l+","+u),i)break}else if(i)break}}}}},tokenize:function(e,a){var n=[e],r=a.rest;if(r){for(var t in r)a[t]=r[t];delete a.rest}return _.matchGrammar(e,n,a,0,0,!1),n},hooks:{all:{},add:function(e,a){var n=_.hooks.all;n[e]=n[e]||[],n[e].push(a)},run:function(e,a){var n=_.hooks.all[e];if(n&&n.length)for(var r,t=0;r=n[t++];)r(a)}},Token:L};function L(e,a,n,r,t){this.type=e,this.content=a,this.alias=n,this.length=0|(r||"").length,this.greedy=!!t}if(u.Prism=_,L.stringify=function(e,a){if("string"==typeof e)return e;if(Array.isArray(e))return e.map(function(e){return L.stringify(e,a)}).join("");var n={type:e.type,content:L.stringify(e.content,a),tag:"span",classes:["token",e.type],attributes:{},language:a};if(e.alias){var r=Array.isArray(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(n.classes,r)}_.hooks.run("wrap",n);var t=Object.keys(n.attributes).map(function(e){return e+'="'+(n.attributes[e]||"").replace(/"/g,"&quot;")+'"'}).join(" ");return"<"+n.tag+' class="'+n.classes.join(" ")+'"'+(t?" "+t:"")+">"+n.content+"</"+n.tag+">"},!u.document)return u.addEventListener&&(_.disableWorkerMessageHandler||u.addEventListener("message",function(e){var a=JSON.parse(e.data),n=a.language,r=a.code,t=a.immediateClose;u.postMessage(_.highlight(r,_.languages[n],n)),t&&u.close()},!1)),_;var e=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();if(e&&(_.filename=e.src,e.hasAttribute("data-manual")&&(_.manual=!0)),!_.manual){function n(){_.manual||_.highlightAll()}"loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n):window.setTimeout(n,16):document.addEventListener("DOMContentLoaded",n)}return _}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);
+Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:/<!DOCTYPE[\s\S]+?>/i,cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&amp;/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^<!\[CDATA\[|\]\]>$/i;var n={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:s}};n["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var i={};i[a]={pattern:RegExp("(<__[\\s\\S]*?>)(?:<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\s*|[\\s\\S])*?(?=<\\/__>)".replace(/__/g,a),"i"),lookbehind:!0,greedy:!0,inside:n},Prism.languages.insertBefore("markup","cdata",i)}}),Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup;
+!function(s){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/@[\w-]+/}},url:{pattern:RegExp("url\\((?:"+t.source+"|[^\n\r()]*)\\)","i"),inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+t.source+")*?(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var e=s.languages.markup;e&&(e.tag.addInlined("style","css"),s.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:e.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:s.languages.css}},alias:"language-css"}},e.tag))}(Prism);
+Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/};
+Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.])\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/--|\+\+|\*\*=?|=>|&&|\|\||[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|[~?:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.js=Prism.languages.javascript;
Index: public/vendors/quill/quill.js
===================================================================
--- public/vendors/quill/quill.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/quill/quill.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11489 @@
+/*!
+ * Quill Editor v1.3.6
+ * https://quilljs.com/
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */
+(function webpackUniversalModuleDefinition(root, factory) {
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory();
+	else if(typeof define === 'function' && define.amd)
+		define([], factory);
+	else if(typeof exports === 'object')
+		exports["Quill"] = factory();
+	else
+		root["Quill"] = factory();
+})(typeof self !== 'undefined' ? self : this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, {
+/******/ 				configurable: false,
+/******/ 				enumerable: true,
+/******/ 				get: getter
+/******/ 			});
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 109);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+var container_1 = __webpack_require__(17);
+var format_1 = __webpack_require__(18);
+var leaf_1 = __webpack_require__(19);
+var scroll_1 = __webpack_require__(45);
+var inline_1 = __webpack_require__(46);
+var block_1 = __webpack_require__(47);
+var embed_1 = __webpack_require__(48);
+var text_1 = __webpack_require__(49);
+var attributor_1 = __webpack_require__(12);
+var class_1 = __webpack_require__(32);
+var style_1 = __webpack_require__(33);
+var store_1 = __webpack_require__(31);
+var Registry = __webpack_require__(1);
+var Parchment = {
+    Scope: Registry.Scope,
+    create: Registry.create,
+    find: Registry.find,
+    query: Registry.query,
+    register: Registry.register,
+    Container: container_1.default,
+    Format: format_1.default,
+    Leaf: leaf_1.default,
+    Embed: embed_1.default,
+    Scroll: scroll_1.default,
+    Block: block_1.default,
+    Inline: inline_1.default,
+    Text: text_1.default,
+    Attributor: {
+        Attribute: attributor_1.default,
+        Class: class_1.default,
+        Style: style_1.default,
+        Store: store_1.default,
+    },
+};
+exports.default = Parchment;
+
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __extends = (this && this.__extends) || (function () {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+    return function (d, b) {
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+var ParchmentError = /** @class */ (function (_super) {
+    __extends(ParchmentError, _super);
+    function ParchmentError(message) {
+        var _this = this;
+        message = '[Parchment] ' + message;
+        _this = _super.call(this, message) || this;
+        _this.message = message;
+        _this.name = _this.constructor.name;
+        return _this;
+    }
+    return ParchmentError;
+}(Error));
+exports.ParchmentError = ParchmentError;
+var attributes = {};
+var classes = {};
+var tags = {};
+var types = {};
+exports.DATA_KEY = '__blot';
+var Scope;
+(function (Scope) {
+    Scope[Scope["TYPE"] = 3] = "TYPE";
+    Scope[Scope["LEVEL"] = 12] = "LEVEL";
+    Scope[Scope["ATTRIBUTE"] = 13] = "ATTRIBUTE";
+    Scope[Scope["BLOT"] = 14] = "BLOT";
+    Scope[Scope["INLINE"] = 7] = "INLINE";
+    Scope[Scope["BLOCK"] = 11] = "BLOCK";
+    Scope[Scope["BLOCK_BLOT"] = 10] = "BLOCK_BLOT";
+    Scope[Scope["INLINE_BLOT"] = 6] = "INLINE_BLOT";
+    Scope[Scope["BLOCK_ATTRIBUTE"] = 9] = "BLOCK_ATTRIBUTE";
+    Scope[Scope["INLINE_ATTRIBUTE"] = 5] = "INLINE_ATTRIBUTE";
+    Scope[Scope["ANY"] = 15] = "ANY";
+})(Scope = exports.Scope || (exports.Scope = {}));
+function create(input, value) {
+    var match = query(input);
+    if (match == null) {
+        throw new ParchmentError("Unable to create " + input + " blot");
+    }
+    var BlotClass = match;
+    var node = 
+    // @ts-ignore
+    input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);
+    return new BlotClass(node, value);
+}
+exports.create = create;
+function find(node, bubble) {
+    if (bubble === void 0) { bubble = false; }
+    if (node == null)
+        return null;
+    // @ts-ignore
+    if (node[exports.DATA_KEY] != null)
+        return node[exports.DATA_KEY].blot;
+    if (bubble)
+        return find(node.parentNode, bubble);
+    return null;
+}
+exports.find = find;
+function query(query, scope) {
+    if (scope === void 0) { scope = Scope.ANY; }
+    var match;
+    if (typeof query === 'string') {
+        match = types[query] || attributes[query];
+        // @ts-ignore
+    }
+    else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {
+        match = types['text'];
+    }
+    else if (typeof query === 'number') {
+        if (query & Scope.LEVEL & Scope.BLOCK) {
+            match = types['block'];
+        }
+        else if (query & Scope.LEVEL & Scope.INLINE) {
+            match = types['inline'];
+        }
+    }
+    else if (query instanceof HTMLElement) {
+        var names = (query.getAttribute('class') || '').split(/\s+/);
+        for (var i in names) {
+            match = classes[names[i]];
+            if (match)
+                break;
+        }
+        match = match || tags[query.tagName];
+    }
+    if (match == null)
+        return null;
+    // @ts-ignore
+    if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)
+        return match;
+    return null;
+}
+exports.query = query;
+function register() {
+    var Definitions = [];
+    for (var _i = 0; _i < arguments.length; _i++) {
+        Definitions[_i] = arguments[_i];
+    }
+    if (Definitions.length > 1) {
+        return Definitions.map(function (d) {
+            return register(d);
+        });
+    }
+    var Definition = Definitions[0];
+    if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {
+        throw new ParchmentError('Invalid definition');
+    }
+    else if (Definition.blotName === 'abstract') {
+        throw new ParchmentError('Cannot register abstract class');
+    }
+    types[Definition.blotName || Definition.attrName] = Definition;
+    if (typeof Definition.keyName === 'string') {
+        attributes[Definition.keyName] = Definition;
+    }
+    else {
+        if (Definition.className != null) {
+            classes[Definition.className] = Definition;
+        }
+        if (Definition.tagName != null) {
+            if (Array.isArray(Definition.tagName)) {
+                Definition.tagName = Definition.tagName.map(function (tagName) {
+                    return tagName.toUpperCase();
+                });
+            }
+            else {
+                Definition.tagName = Definition.tagName.toUpperCase();
+            }
+            var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];
+            tagNames.forEach(function (tag) {
+                if (tags[tag] == null || Definition.className == null) {
+                    tags[tag] = Definition;
+                }
+            });
+        }
+    }
+    return Definition;
+}
+exports.register = register;
+
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var diff = __webpack_require__(51);
+var equal = __webpack_require__(11);
+var extend = __webpack_require__(3);
+var op = __webpack_require__(20);
+
+
+var NULL_CHARACTER = String.fromCharCode(0);  // Placeholder char for embed in diff()
+
+
+var Delta = function (ops) {
+  // Assume we are given a well formed ops
+  if (Array.isArray(ops)) {
+    this.ops = ops;
+  } else if (ops != null && Array.isArray(ops.ops)) {
+    this.ops = ops.ops;
+  } else {
+    this.ops = [];
+  }
+};
+
+
+Delta.prototype.insert = function (text, attributes) {
+  var newOp = {};
+  if (text.length === 0) return this;
+  newOp.insert = text;
+  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {
+    newOp.attributes = attributes;
+  }
+  return this.push(newOp);
+};
+
+Delta.prototype['delete'] = function (length) {
+  if (length <= 0) return this;
+  return this.push({ 'delete': length });
+};
+
+Delta.prototype.retain = function (length, attributes) {
+  if (length <= 0) return this;
+  var newOp = { retain: length };
+  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {
+    newOp.attributes = attributes;
+  }
+  return this.push(newOp);
+};
+
+Delta.prototype.push = function (newOp) {
+  var index = this.ops.length;
+  var lastOp = this.ops[index - 1];
+  newOp = extend(true, {}, newOp);
+  if (typeof lastOp === 'object') {
+    if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {
+      this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };
+      return this;
+    }
+    // Since it does not matter if we insert before or after deleting at the same index,
+    // always prefer to insert first
+    if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {
+      index -= 1;
+      lastOp = this.ops[index - 1];
+      if (typeof lastOp !== 'object') {
+        this.ops.unshift(newOp);
+        return this;
+      }
+    }
+    if (equal(newOp.attributes, lastOp.attributes)) {
+      if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {
+        this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };
+        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes
+        return this;
+      } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {
+        this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };
+        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes
+        return this;
+      }
+    }
+  }
+  if (index === this.ops.length) {
+    this.ops.push(newOp);
+  } else {
+    this.ops.splice(index, 0, newOp);
+  }
+  return this;
+};
+
+Delta.prototype.chop = function () {
+  var lastOp = this.ops[this.ops.length - 1];
+  if (lastOp && lastOp.retain && !lastOp.attributes) {
+    this.ops.pop();
+  }
+  return this;
+};
+
+Delta.prototype.filter = function (predicate) {
+  return this.ops.filter(predicate);
+};
+
+Delta.prototype.forEach = function (predicate) {
+  this.ops.forEach(predicate);
+};
+
+Delta.prototype.map = function (predicate) {
+  return this.ops.map(predicate);
+};
+
+Delta.prototype.partition = function (predicate) {
+  var passed = [], failed = [];
+  this.forEach(function(op) {
+    var target = predicate(op) ? passed : failed;
+    target.push(op);
+  });
+  return [passed, failed];
+};
+
+Delta.prototype.reduce = function (predicate, initial) {
+  return this.ops.reduce(predicate, initial);
+};
+
+Delta.prototype.changeLength = function () {
+  return this.reduce(function (length, elem) {
+    if (elem.insert) {
+      return length + op.length(elem);
+    } else if (elem.delete) {
+      return length - elem.delete;
+    }
+    return length;
+  }, 0);
+};
+
+Delta.prototype.length = function () {
+  return this.reduce(function (length, elem) {
+    return length + op.length(elem);
+  }, 0);
+};
+
+Delta.prototype.slice = function (start, end) {
+  start = start || 0;
+  if (typeof end !== 'number') end = Infinity;
+  var ops = [];
+  var iter = op.iterator(this.ops);
+  var index = 0;
+  while (index < end && iter.hasNext()) {
+    var nextOp;
+    if (index < start) {
+      nextOp = iter.next(start - index);
+    } else {
+      nextOp = iter.next(end - index);
+      ops.push(nextOp);
+    }
+    index += op.length(nextOp);
+  }
+  return new Delta(ops);
+};
+
+
+Delta.prototype.compose = function (other) {
+  var thisIter = op.iterator(this.ops);
+  var otherIter = op.iterator(other.ops);
+  var delta = new Delta();
+  while (thisIter.hasNext() || otherIter.hasNext()) {
+    if (otherIter.peekType() === 'insert') {
+      delta.push(otherIter.next());
+    } else if (thisIter.peekType() === 'delete') {
+      delta.push(thisIter.next());
+    } else {
+      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());
+      var thisOp = thisIter.next(length);
+      var otherOp = otherIter.next(length);
+      if (typeof otherOp.retain === 'number') {
+        var newOp = {};
+        if (typeof thisOp.retain === 'number') {
+          newOp.retain = length;
+        } else {
+          newOp.insert = thisOp.insert;
+        }
+        // Preserve null when composing with a retain, otherwise remove it for inserts
+        var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');
+        if (attributes) newOp.attributes = attributes;
+        delta.push(newOp);
+      // Other op should be delete, we could be an insert or retain
+      // Insert + delete cancels out
+      } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {
+        delta.push(otherOp);
+      }
+    }
+  }
+  return delta.chop();
+};
+
+Delta.prototype.concat = function (other) {
+  var delta = new Delta(this.ops.slice());
+  if (other.ops.length > 0) {
+    delta.push(other.ops[0]);
+    delta.ops = delta.ops.concat(other.ops.slice(1));
+  }
+  return delta;
+};
+
+Delta.prototype.diff = function (other, index) {
+  if (this.ops === other.ops) {
+    return new Delta();
+  }
+  var strings = [this, other].map(function (delta) {
+    return delta.map(function (op) {
+      if (op.insert != null) {
+        return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;
+      }
+      var prep = (delta === other) ? 'on' : 'with';
+      throw new Error('diff() called ' + prep + ' non-document');
+    }).join('');
+  });
+  var delta = new Delta();
+  var diffResult = diff(strings[0], strings[1], index);
+  var thisIter = op.iterator(this.ops);
+  var otherIter = op.iterator(other.ops);
+  diffResult.forEach(function (component) {
+    var length = component[1].length;
+    while (length > 0) {
+      var opLength = 0;
+      switch (component[0]) {
+        case diff.INSERT:
+          opLength = Math.min(otherIter.peekLength(), length);
+          delta.push(otherIter.next(opLength));
+          break;
+        case diff.DELETE:
+          opLength = Math.min(length, thisIter.peekLength());
+          thisIter.next(opLength);
+          delta['delete'](opLength);
+          break;
+        case diff.EQUAL:
+          opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);
+          var thisOp = thisIter.next(opLength);
+          var otherOp = otherIter.next(opLength);
+          if (equal(thisOp.insert, otherOp.insert)) {
+            delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));
+          } else {
+            delta.push(otherOp)['delete'](opLength);
+          }
+          break;
+      }
+      length -= opLength;
+    }
+  });
+  return delta.chop();
+};
+
+Delta.prototype.eachLine = function (predicate, newline) {
+  newline = newline || '\n';
+  var iter = op.iterator(this.ops);
+  var line = new Delta();
+  var i = 0;
+  while (iter.hasNext()) {
+    if (iter.peekType() !== 'insert') return;
+    var thisOp = iter.peek();
+    var start = op.length(thisOp) - iter.peekLength();
+    var index = typeof thisOp.insert === 'string' ?
+      thisOp.insert.indexOf(newline, start) - start : -1;
+    if (index < 0) {
+      line.push(iter.next());
+    } else if (index > 0) {
+      line.push(iter.next(index));
+    } else {
+      if (predicate(line, iter.next(1).attributes || {}, i) === false) {
+        return;
+      }
+      i += 1;
+      line = new Delta();
+    }
+  }
+  if (line.length() > 0) {
+    predicate(line, {}, i);
+  }
+};
+
+Delta.prototype.transform = function (other, priority) {
+  priority = !!priority;
+  if (typeof other === 'number') {
+    return this.transformPosition(other, priority);
+  }
+  var thisIter = op.iterator(this.ops);
+  var otherIter = op.iterator(other.ops);
+  var delta = new Delta();
+  while (thisIter.hasNext() || otherIter.hasNext()) {
+    if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {
+      delta.retain(op.length(thisIter.next()));
+    } else if (otherIter.peekType() === 'insert') {
+      delta.push(otherIter.next());
+    } else {
+      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());
+      var thisOp = thisIter.next(length);
+      var otherOp = otherIter.next(length);
+      if (thisOp['delete']) {
+        // Our delete either makes their delete redundant or removes their retain
+        continue;
+      } else if (otherOp['delete']) {
+        delta.push(otherOp);
+      } else {
+        // We retain either their retain or insert
+        delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));
+      }
+    }
+  }
+  return delta.chop();
+};
+
+Delta.prototype.transformPosition = function (index, priority) {
+  priority = !!priority;
+  var thisIter = op.iterator(this.ops);
+  var offset = 0;
+  while (thisIter.hasNext() && offset <= index) {
+    var length = thisIter.peekLength();
+    var nextType = thisIter.peekType();
+    thisIter.next();
+    if (nextType === 'delete') {
+      index -= Math.min(length, index - offset);
+      continue;
+    } else if (nextType === 'insert' && (offset < index || !priority)) {
+      index += length;
+    }
+    offset += length;
+  }
+  return index;
+};
+
+
+module.exports = Delta;
+
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports) {
+
+'use strict';
+
+var hasOwn = Object.prototype.hasOwnProperty;
+var toStr = Object.prototype.toString;
+
+var isArray = function isArray(arr) {
+	if (typeof Array.isArray === 'function') {
+		return Array.isArray(arr);
+	}
+
+	return toStr.call(arr) === '[object Array]';
+};
+
+var isPlainObject = function isPlainObject(obj) {
+	if (!obj || toStr.call(obj) !== '[object Object]') {
+		return false;
+	}
+
+	var hasOwnConstructor = hasOwn.call(obj, 'constructor');
+	var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');
+	// Not own constructor property must be Object
+	if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {
+		return false;
+	}
+
+	// Own properties are enumerated firstly, so to speed up,
+	// if last one is own, then all properties are own.
+	var key;
+	for (key in obj) { /**/ }
+
+	return typeof key === 'undefined' || hasOwn.call(obj, key);
+};
+
+module.exports = function extend() {
+	var options, name, src, copy, copyIsArray, clone;
+	var target = arguments[0];
+	var i = 1;
+	var length = arguments.length;
+	var deep = false;
+
+	// Handle a deep copy situation
+	if (typeof target === 'boolean') {
+		deep = target;
+		target = arguments[1] || {};
+		// skip the boolean and the target
+		i = 2;
+	}
+	if (target == null || (typeof target !== 'object' && typeof target !== 'function')) {
+		target = {};
+	}
+
+	for (; i < length; ++i) {
+		options = arguments[i];
+		// Only deal with non-null/undefined values
+		if (options != null) {
+			// Extend the base object
+			for (name in options) {
+				src = target[name];
+				copy = options[name];
+
+				// Prevent never-ending loop
+				if (target !== copy) {
+					// Recurse if we're merging plain objects or arrays
+					if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {
+						if (copyIsArray) {
+							copyIsArray = false;
+							clone = src && isArray(src) ? src : [];
+						} else {
+							clone = src && isPlainObject(src) ? src : {};
+						}
+
+						// Never move original objects, clone them
+						target[name] = extend(deep, clone, copy);
+
+					// Don't bring in undefined values
+					} else if (typeof copy !== 'undefined') {
+						target[name] = copy;
+					}
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _extend = __webpack_require__(3);
+
+var _extend2 = _interopRequireDefault(_extend);
+
+var _quillDelta = __webpack_require__(2);
+
+var _quillDelta2 = _interopRequireDefault(_quillDelta);
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _break = __webpack_require__(16);
+
+var _break2 = _interopRequireDefault(_break);
+
+var _inline = __webpack_require__(6);
+
+var _inline2 = _interopRequireDefault(_inline);
+
+var _text = __webpack_require__(7);
+
+var _text2 = _interopRequireDefault(_text);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var NEWLINE_LENGTH = 1;
+
+var BlockEmbed = function (_Parchment$Embed) {
+  _inherits(BlockEmbed, _Parchment$Embed);
+
+  function BlockEmbed() {
+    _classCallCheck(this, BlockEmbed);
+
+    return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));
+  }
+
+  _createClass(BlockEmbed, [{
+    key: 'attach',
+    value: function attach() {
+      _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);
+      this.attributes = new _parchment2.default.Attributor.Store(this.domNode);
+    }
+  }, {
+    key: 'delta',
+    value: function delta() {
+      return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));
+    }
+  }, {
+    key: 'format',
+    value: function format(name, value) {
+      var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);
+      if (attribute != null) {
+        this.attributes.attribute(attribute, value);
+      }
+    }
+  }, {
+    key: 'formatAt',
+    value: function formatAt(index, length, name, value) {
+      this.format(name, value);
+    }
+  }, {
+    key: 'insertAt',
+    value: function insertAt(index, value, def) {
+      if (typeof value === 'string' && value.endsWith('\n')) {
+        var block = _parchment2.default.create(Block.blotName);
+        this.parent.insertBefore(block, index === 0 ? this : this.next);
+        block.insertAt(0, value.slice(0, -1));
+      } else {
+        _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);
+      }
+    }
+  }]);
+
+  return BlockEmbed;
+}(_parchment2.default.Embed);
+
+BlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;
+// It is important for cursor behavior BlockEmbeds use tags that are block level elements
+
+
+var Block = function (_Parchment$Block) {
+  _inherits(Block, _Parchment$Block);
+
+  function Block(domNode) {
+    _classCallCheck(this, Block);
+
+    var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));
+
+    _this2.cache = {};
+    return _this2;
+  }
+
+  _createClass(Block, [{
+    key: 'delta',
+    value: function delta() {
+      if (this.cache.delta == null) {
+        this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {
+          if (leaf.length() === 0) {
+            return delta;
+          } else {
+            return delta.insert(leaf.value(), bubbleFormats(leaf));
+          }
+        }, new _quillDelta2.default()).insert('\n', bubbleFormats(this));
+      }
+      return this.cache.delta;
+    }
+  }, {
+    key: 'deleteAt',
+    value: function deleteAt(index, length) {
+      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);
+      this.cache = {};
+    }
+  }, {
+    key: 'formatAt',
+    value: function formatAt(index, length, name, value) {
+      if (length <= 0) return;
+      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {
+        if (index + length === this.length()) {
+          this.format(name, value);
+        }
+      } else {
+        _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);
+      }
+      this.cache = {};
+    }
+  }, {
+    key: 'insertAt',
+    value: function insertAt(index, value, def) {
+      if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);
+      if (value.length === 0) return;
+      var lines = value.split('\n');
+      var text = lines.shift();
+      if (text.length > 0) {
+        if (index < this.length() - 1 || this.children.tail == null) {
+          _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);
+        } else {
+          this.children.tail.insertAt(this.children.tail.length(), text);
+        }
+        this.cache = {};
+      }
+      var block = this;
+      lines.reduce(function (index, line) {
+        block = block.split(index, true);
+        block.insertAt(0, line);
+        return line.length;
+      }, index + text.length);
+    }
+  }, {
+    key: 'insertBefore',
+    value: function insertBefore(blot, ref) {
+      var head = this.children.head;
+      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);
+      if (head instanceof _break2.default) {
+        head.remove();
+      }
+      this.cache = {};
+    }
+  }, {
+    key: 'length',
+    value: function length() {
+      if (this.cache.length == null) {
+        this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;
+      }
+      return this.cache.length;
+    }
+  }, {
+    key: 'moveChildren',
+    value: function moveChildren(target, ref) {
+      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);
+      this.cache = {};
+    }
+  }, {
+    key: 'optimize',
+    value: function optimize(context) {
+      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);
+      this.cache = {};
+    }
+  }, {
+    key: 'path',
+    value: function path(index) {
+      return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);
+    }
+  }, {
+    key: 'removeChild',
+    value: function removeChild(child) {
+      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);
+      this.cache = {};
+    }
+  }, {
+    key: 'split',
+    value: function split(index) {
+      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {
+        var clone = this.clone();
+        if (index === 0) {
+          this.parent.insertBefore(clone, this);
+          return this;
+        } else {
+          this.parent.insertBefore(clone, this.next);
+          return clone;
+        }
+      } else {
+        var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);
+        this.cache = {};
+        return next;
+      }
+    }
+  }]);
+
+  return Block;
+}(_parchment2.default.Block);
+
+Block.blotName = 'block';
+Block.tagName = 'P';
+Block.defaultChild = 'break';
+Block.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];
+
+function bubbleFormats(blot) {
+  var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+  if (blot == null) return formats;
+  if (typeof blot.formats === 'function') {
+    formats = (0, _extend2.default)(formats, blot.formats());
+  }
+  if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {
+    return formats;
+  }
+  return bubbleFormats(blot.parent, formats);
+}
+
+exports.bubbleFormats = bubbleFormats;
+exports.BlockEmbed = BlockEmbed;
+exports.default = Block;
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.overload = exports.expandConfig = undefined;
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+__webpack_require__(50);
+
+var _quillDelta = __webpack_require__(2);
+
+var _quillDelta2 = _interopRequireDefault(_quillDelta);
+
+var _editor = __webpack_require__(14);
+
+var _editor2 = _interopRequireDefault(_editor);
+
+var _emitter3 = __webpack_require__(8);
+
+var _emitter4 = _interopRequireDefault(_emitter3);
+
+var _module = __webpack_require__(9);
+
+var _module2 = _interopRequireDefault(_module);
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _selection = __webpack_require__(15);
+
+var _selection2 = _interopRequireDefault(_selection);
+
+var _extend = __webpack_require__(3);
+
+var _extend2 = _interopRequireDefault(_extend);
+
+var _logger = __webpack_require__(10);
+
+var _logger2 = _interopRequireDefault(_logger);
+
+var _theme = __webpack_require__(34);
+
+var _theme2 = _interopRequireDefault(_theme);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var debug = (0, _logger2.default)('quill');
+
+var Quill = function () {
+  _createClass(Quill, null, [{
+    key: 'debug',
+    value: function debug(limit) {
+      if (limit === true) {
+        limit = 'log';
+      }
+      _logger2.default.level(limit);
+    }
+  }, {
+    key: 'find',
+    value: function find(node) {
+      return node.__quill || _parchment2.default.find(node);
+    }
+  }, {
+    key: 'import',
+    value: function _import(name) {
+      if (this.imports[name] == null) {
+        debug.error('Cannot import ' + name + '. Are you sure it was registered?');
+      }
+      return this.imports[name];
+    }
+  }, {
+    key: 'register',
+    value: function register(path, target) {
+      var _this = this;
+
+      var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+      if (typeof path !== 'string') {
+        var name = path.attrName || path.blotName;
+        if (typeof name === 'string') {
+          // register(Blot | Attributor, overwrite)
+          this.register('formats/' + name, path, target);
+        } else {
+          Object.keys(path).forEach(function (key) {
+            _this.register(key, path[key], target);
+          });
+        }
+      } else {
+        if (this.imports[path] != null && !overwrite) {
+          debug.warn('Overwriting ' + path + ' with', target);
+        }
+        this.imports[path] = target;
+        if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {
+          _parchment2.default.register(target);
+        } else if (path.startsWith('modules') && typeof target.register === 'function') {
+          target.register();
+        }
+      }
+    }
+  }]);
+
+  function Quill(container) {
+    var _this2 = this;
+
+    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+    _classCallCheck(this, Quill);
+
+    this.options = expandConfig(container, options);
+    this.container = this.options.container;
+    if (this.container == null) {
+      return debug.error('Invalid Quill container', container);
+    }
+    if (this.options.debug) {
+      Quill.debug(this.options.debug);
+    }
+    var html = this.container.innerHTML.trim();
+    this.container.classList.add('ql-container');
+    this.container.innerHTML = '';
+    this.container.__quill = this;
+    this.root = this.addContainer('ql-editor');
+    this.root.classList.add('ql-blank');
+    this.root.setAttribute('data-gramm', false);
+    this.scrollingContainer = this.options.scrollingContainer || this.root;
+    this.emitter = new _emitter4.default();
+    this.scroll = _parchment2.default.create(this.root, {
+      emitter: this.emitter,
+      whitelist: this.options.formats
+    });
+    this.editor = new _editor2.default(this.scroll);
+    this.selection = new _selection2.default(this.scroll, this.emitter);
+    this.theme = new this.options.theme(this, this.options);
+    this.keyboard = this.theme.addModule('keyboard');
+    this.clipboard = this.theme.addModule('clipboard');
+    this.history = this.theme.addModule('history');
+    this.theme.init();
+    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {
+      if (type === _emitter4.default.events.TEXT_CHANGE) {
+        _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());
+      }
+    });
+    this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {
+      var range = _this2.selection.lastRange;
+      var index = range && range.length === 0 ? range.index : undefined;
+      modify.call(_this2, function () {
+        return _this2.editor.update(null, mutations, index);
+      }, source);
+    });
+    var contents = this.clipboard.convert('<div class=\'ql-editor\' style="white-space: normal;">' + html + '<p><br></p></div>');
+    this.setContents(contents);
+    this.history.clear();
+    if (this.options.placeholder) {
+      this.root.setAttribute('data-placeholder', this.options.placeholder);
+    }
+    if (this.options.readOnly) {
+      this.disable();
+    }
+  }
+
+  _createClass(Quill, [{
+    key: 'addContainer',
+    value: function addContainer(container) {
+      var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+
+      if (typeof container === 'string') {
+        var className = container;
+        container = document.createElement('div');
+        container.classList.add(className);
+      }
+      this.container.insertBefore(container, refNode);
+      return container;
+    }
+  }, {
+    key: 'blur',
+    value: function blur() {
+      this.selection.setRange(null);
+    }
+  }, {
+    key: 'deleteText',
+    value: function deleteText(index, length, source) {
+      var _this3 = this;
+
+      var _overload = overload(index, length, source);
+
+      var _overload2 = _slicedToArray(_overload, 4);
+
+      index = _overload2[0];
+      length = _overload2[1];
+      source = _overload2[3];
+
+      return modify.call(this, function () {
+        return _this3.editor.deleteText(index, length);
+      }, source, index, -1 * length);
+    }
+  }, {
+    key: 'disable',
+    value: function disable() {
+      this.enable(false);
+    }
+  }, {
+    key: 'enable',
+    value: function enable() {
+      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
+
+      this.scroll.enable(enabled);
+      this.container.classList.toggle('ql-disabled', !enabled);
+    }
+  }, {
+    key: 'focus',
+    value: function focus() {
+      var scrollTop = this.scrollingContainer.scrollTop;
+      this.selection.focus();
+      this.scrollingContainer.scrollTop = scrollTop;
+      this.scrollIntoView();
+    }
+  }, {
+    key: 'format',
+    value: function format(name, value) {
+      var _this4 = this;
+
+      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;
+
+      return modify.call(this, function () {
+        var range = _this4.getSelection(true);
+        var change = new _quillDelta2.default();
+        if (range == null) {
+          return change;
+        } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {
+          change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));
+        } else if (range.length === 0) {
+          _this4.selection.format(name, value);
+          return change;
+        } else {
+          change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));
+        }
+        _this4.setSelection(range, _emitter4.default.sources.SILENT);
+        return change;
+      }, source);
+    }
+  }, {
+    key: 'formatLine',
+    value: function formatLine(index, length, name, value, source) {
+      var _this5 = this;
+
+      var formats = void 0;
+
+      var _overload3 = overload(index, length, name, value, source);
+
+      var _overload4 = _slicedToArray(_overload3, 4);
+
+      index = _overload4[0];
+      length = _overload4[1];
+      formats = _overload4[2];
+      source = _overload4[3];
+
+      return modify.call(this, function () {
+        return _this5.editor.formatLine(index, length, formats);
+      }, source, index, 0);
+    }
+  }, {
+    key: 'formatText',
+    value: function formatText(index, length, name, value, source) {
+      var _this6 = this;
+
+      var formats = void 0;
+
+      var _overload5 = overload(index, length, name, value, source);
+
+      var _overload6 = _slicedToArray(_overload5, 4);
+
+      index = _overload6[0];
+      length = _overload6[1];
+      formats = _overload6[2];
+      source = _overload6[3];
+
+      return modify.call(this, function () {
+        return _this6.editor.formatText(index, length, formats);
+      }, source, index, 0);
+    }
+  }, {
+    key: 'getBounds',
+    value: function getBounds(index) {
+      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+      var bounds = void 0;
+      if (typeof index === 'number') {
+        bounds = this.selection.getBounds(index, length);
+      } else {
+        bounds = this.selection.getBounds(index.index, index.length);
+      }
+      var containerBounds = this.container.getBoundingClientRect();
+      return {
+        bottom: bounds.bottom - containerBounds.top,
+        height: bounds.height,
+        left: bounds.left - containerBounds.left,
+        right: bounds.right - containerBounds.left,
+        top: bounds.top - containerBounds.top,
+        width: bounds.width
+      };
+    }
+  }, {
+    key: 'getContents',
+    value: function getContents() {
+      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;
+
+      var _overload7 = overload(index, length);
+
+      var _overload8 = _slicedToArray(_overload7, 2);
+
+      index = _overload8[0];
+      length = _overload8[1];
+
+      return this.editor.getContents(index, length);
+    }
+  }, {
+    key: 'getFormat',
+    value: function getFormat() {
+      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);
+      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+      if (typeof index === 'number') {
+        return this.editor.getFormat(index, length);
+      } else {
+        return this.editor.getFormat(index.index, index.length);
+      }
+    }
+  }, {
+    key: 'getIndex',
+    value: function getIndex(blot) {
+      return blot.offset(this.scroll);
+    }
+  }, {
+    key: 'getLength',
+    value: function getLength() {
+      return this.scroll.length();
+    }
+  }, {
+    key: 'getLeaf',
+    value: function getLeaf(index) {
+      return this.scroll.leaf(index);
+    }
+  }, {
+    key: 'getLine',
+    value: function getLine(index) {
+      return this.scroll.line(index);
+    }
+  }, {
+    key: 'getLines',
+    value: function getLines() {
+      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;
+
+      if (typeof index !== 'number') {
+        return this.scroll.lines(index.index, index.length);
+      } else {
+        return this.scroll.lines(index, length);
+      }
+    }
+  }, {
+    key: 'getModule',
+    value: function getModule(name) {
+      return this.theme.modules[name];
+    }
+  }, {
+    key: 'getSelection',
+    value: function getSelection() {
+      var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+
+      if (focus) this.focus();
+      this.update(); // Make sure we access getRange with editor in consistent state
+      return this.selection.getRange()[0];
+    }
+  }, {
+    key: 'getText',
+    value: function getText() {
+      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;
+
+      var _overload9 = overload(index, length);
+
+      var _overload10 = _slicedToArray(_overload9, 2);
+
+      index = _overload10[0];
+      length = _overload10[1];
+
+      return this.editor.getText(index, length);
+    }
+  }, {
+    key: 'hasFocus',
+    value: function hasFocus() {
+      return this.selection.hasFocus();
+    }
+  }, {
+    key: 'insertEmbed',
+    value: function insertEmbed(index, embed, value) {
+      var _this7 = this;
+
+      var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;
+
+      return modify.call(this, function () {
+        return _this7.editor.insertEmbed(index, embed, value);
+      }, source, index);
+    }
+  }, {
+    key: 'insertText',
+    value: function insertText(index, text, name, value, source) {
+      var _this8 = this;
+
+      var formats = void 0;
+
+      var _overload11 = overload(index, 0, name, value, source);
+
+      var _overload12 = _slicedToArray(_overload11, 4);
+
+      index = _overload12[0];
+      formats = _overload12[2];
+      source = _overload12[3];
+
+      return modify.call(this, function () {
+        return _this8.editor.insertText(index, text, formats);
+      }, source, index, text.length);
+    }
+  }, {
+    key: 'isEnabled',
+    value: function isEnabled() {
+      return !this.container.classList.contains('ql-disabled');
+    }
+  }, {
+    key: 'off',
+    value: function off() {
+      return this.emitter.off.apply(this.emitter, arguments);
+    }
+  }, {
+    key: 'on',
+    value: function on() {
+      return this.emitter.on.apply(this.emitter, arguments);
+    }
+  }, {
+    key: 'once',
+    value: function once() {
+      return this.emitter.once.apply(this.emitter, arguments);
+    }
+  }, {
+    key: 'pasteHTML',
+    value: function pasteHTML(index, html, source) {
+      this.clipboard.dangerouslyPasteHTML(index, html, source);
+    }
+  }, {
+    key: 'removeFormat',
+    value: function removeFormat(index, length, source) {
+      var _this9 = this;
+
+      var _overload13 = overload(index, length, source);
+
+      var _overload14 = _slicedToArray(_overload13, 4);
+
+      index = _overload14[0];
+      length = _overload14[1];
+      source = _overload14[3];
+
+      return modify.call(this, function () {
+        return _this9.editor.removeFormat(index, length);
+      }, source, index);
+    }
+  }, {
+    key: 'scrollIntoView',
+    value: function scrollIntoView() {
+      this.selection.scrollIntoView(this.scrollingContainer);
+    }
+  }, {
+    key: 'setContents',
+    value: function setContents(delta) {
+      var _this10 = this;
+
+      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;
+
+      return modify.call(this, function () {
+        delta = new _quillDelta2.default(delta);
+        var length = _this10.getLength();
+        var deleted = _this10.editor.deleteText(0, length);
+        var applied = _this10.editor.applyDelta(delta);
+        var lastOp = applied.ops[applied.ops.length - 1];
+        if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\n') {
+          _this10.editor.deleteText(_this10.getLength() - 1, 1);
+          applied.delete(1);
+        }
+        var ret = deleted.compose(applied);
+        return ret;
+      }, source);
+    }
+  }, {
+    key: 'setSelection',
+    value: function setSelection(index, length, source) {
+      if (index == null) {
+        this.selection.setRange(null, length || Quill.sources.API);
+      } else {
+        var _overload15 = overload(index, length, source);
+
+        var _overload16 = _slicedToArray(_overload15, 4);
+
+        index = _overload16[0];
+        length = _overload16[1];
+        source = _overload16[3];
+
+        this.selection.setRange(new _selection.Range(index, length), source);
+        if (source !== _emitter4.default.sources.SILENT) {
+          this.selection.scrollIntoView(this.scrollingContainer);
+        }
+      }
+    }
+  }, {
+    key: 'setText',
+    value: function setText(text) {
+      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;
+
+      var delta = new _quillDelta2.default().insert(text);
+      return this.setContents(delta, source);
+    }
+  }, {
+    key: 'update',
+    value: function update() {
+      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;
+
+      var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes
+      this.selection.update(source);
+      return change;
+    }
+  }, {
+    key: 'updateContents',
+    value: function updateContents(delta) {
+      var _this11 = this;
+
+      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;
+
+      return modify.call(this, function () {
+        delta = new _quillDelta2.default(delta);
+        return _this11.editor.applyDelta(delta, source);
+      }, source, true);
+    }
+  }]);
+
+  return Quill;
+}();
+
+Quill.DEFAULTS = {
+  bounds: null,
+  formats: null,
+  modules: {},
+  placeholder: '',
+  readOnly: false,
+  scrollingContainer: null,
+  strict: true,
+  theme: 'default'
+};
+Quill.events = _emitter4.default.events;
+Quill.sources = _emitter4.default.sources;
+// eslint-disable-next-line no-undef
+Quill.version =  false ? 'dev' : "1.3.6";
+
+Quill.imports = {
+  'delta': _quillDelta2.default,
+  'parchment': _parchment2.default,
+  'core/module': _module2.default,
+  'core/theme': _theme2.default
+};
+
+function expandConfig(container, userConfig) {
+  userConfig = (0, _extend2.default)(true, {
+    container: container,
+    modules: {
+      clipboard: true,
+      keyboard: true,
+      history: true
+    }
+  }, userConfig);
+  if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {
+    userConfig.theme = _theme2.default;
+  } else {
+    userConfig.theme = Quill.import('themes/' + userConfig.theme);
+    if (userConfig.theme == null) {
+      throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');
+    }
+  }
+  var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);
+  [themeConfig, userConfig].forEach(function (config) {
+    config.modules = config.modules || {};
+    Object.keys(config.modules).forEach(function (module) {
+      if (config.modules[module] === true) {
+        config.modules[module] = {};
+      }
+    });
+  });
+  var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));
+  var moduleConfig = moduleNames.reduce(function (config, name) {
+    var moduleClass = Quill.import('modules/' + name);
+    if (moduleClass == null) {
+      debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');
+    } else {
+      config[name] = moduleClass.DEFAULTS || {};
+    }
+    return config;
+  }, {});
+  // Special case toolbar shorthand
+  if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {
+    userConfig.modules.toolbar = {
+      container: userConfig.modules.toolbar
+    };
+  }
+  userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);
+  ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {
+    if (typeof userConfig[key] === 'string') {
+      userConfig[key] = document.querySelector(userConfig[key]);
+    }
+  });
+  userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {
+    if (userConfig.modules[name]) {
+      config[name] = userConfig.modules[name];
+    }
+    return config;
+  }, {});
+  return userConfig;
+}
+
+// Handle selection preservation and TEXT_CHANGE emission
+// common to modification APIs
+function modify(modifier, source, index, shift) {
+  if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {
+    return new _quillDelta2.default();
+  }
+  var range = index == null ? null : this.getSelection();
+  var oldDelta = this.editor.delta;
+  var change = modifier();
+  if (range != null) {
+    if (index === true) index = range.index;
+    if (shift == null) {
+      range = shiftRange(range, change, source);
+    } else if (shift !== 0) {
+      range = shiftRange(range, index, shift, source);
+    }
+    this.setSelection(range, _emitter4.default.sources.SILENT);
+  }
+  if (change.length() > 0) {
+    var _emitter;
+
+    var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];
+    (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));
+    if (source !== _emitter4.default.sources.SILENT) {
+      var _emitter2;
+
+      (_emitter2 = this.emitter).emit.apply(_emitter2, args);
+    }
+  }
+  return change;
+}
+
+function overload(index, length, name, value, source) {
+  var formats = {};
+  if (typeof index.index === 'number' && typeof index.length === 'number') {
+    // Allow for throwaway end (used by insertText/insertEmbed)
+    if (typeof length !== 'number') {
+      source = value, value = name, name = length, length = index.length, index = index.index;
+    } else {
+      length = index.length, index = index.index;
+    }
+  } else if (typeof length !== 'number') {
+    source = value, value = name, name = length, length = 0;
+  }
+  // Handle format being object, two format name/value strings or excluded
+  if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {
+    formats = name;
+    source = value;
+  } else if (typeof name === 'string') {
+    if (value != null) {
+      formats[name] = value;
+    } else {
+      source = name;
+    }
+  }
+  // Handle optional source
+  source = source || _emitter4.default.sources.API;
+  return [index, length, formats, source];
+}
+
+function shiftRange(range, index, length, source) {
+  if (range == null) return null;
+  var start = void 0,
+      end = void 0;
+  if (index instanceof _quillDelta2.default) {
+    var _map = [range.index, range.index + range.length].map(function (pos) {
+      return index.transformPosition(pos, source !== _emitter4.default.sources.USER);
+    });
+
+    var _map2 = _slicedToArray(_map, 2);
+
+    start = _map2[0];
+    end = _map2[1];
+  } else {
+    var _map3 = [range.index, range.index + range.length].map(function (pos) {
+      if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;
+      if (length >= 0) {
+        return pos + length;
+      } else {
+        return Math.max(index, pos + length);
+      }
+    });
+
+    var _map4 = _slicedToArray(_map3, 2);
+
+    start = _map4[0];
+    end = _map4[1];
+  }
+  return new _selection.Range(start, end - start);
+}
+
+exports.expandConfig = expandConfig;
+exports.overload = overload;
+exports.default = Quill;
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _text = __webpack_require__(7);
+
+var _text2 = _interopRequireDefault(_text);
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Inline = function (_Parchment$Inline) {
+  _inherits(Inline, _Parchment$Inline);
+
+  function Inline() {
+    _classCallCheck(this, Inline);
+
+    return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));
+  }
+
+  _createClass(Inline, [{
+    key: 'formatAt',
+    value: function formatAt(index, length, name, value) {
+      if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {
+        var blot = this.isolate(index, length);
+        if (value) {
+          blot.wrap(name, value);
+        }
+      } else {
+        _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);
+      }
+    }
+  }, {
+    key: 'optimize',
+    value: function optimize(context) {
+      _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);
+      if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {
+        var parent = this.parent.isolate(this.offset(), this.length());
+        this.moveChildren(parent);
+        parent.wrap(this);
+      }
+    }
+  }], [{
+    key: 'compare',
+    value: function compare(self, other) {
+      var selfIndex = Inline.order.indexOf(self);
+      var otherIndex = Inline.order.indexOf(other);
+      if (selfIndex >= 0 || otherIndex >= 0) {
+        return selfIndex - otherIndex;
+      } else if (self === other) {
+        return 0;
+      } else if (self < other) {
+        return -1;
+      } else {
+        return 1;
+      }
+    }
+  }]);
+
+  return Inline;
+}(_parchment2.default.Inline);
+
+Inline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];
+// Lower index means deeper in the DOM tree, since not found (-1) is for embeds
+Inline.order = ['cursor', 'inline', // Must be lower
+'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher
+];
+
+exports.default = Inline;
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var TextBlot = function (_Parchment$Text) {
+  _inherits(TextBlot, _Parchment$Text);
+
+  function TextBlot() {
+    _classCallCheck(this, TextBlot);
+
+    return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));
+  }
+
+  return TextBlot;
+}(_parchment2.default.Text);
+
+exports.default = TextBlot;
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _eventemitter = __webpack_require__(54);
+
+var _eventemitter2 = _interopRequireDefault(_eventemitter);
+
+var _logger = __webpack_require__(10);
+
+var _logger2 = _interopRequireDefault(_logger);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var debug = (0, _logger2.default)('quill:events');
+
+var EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];
+
+EVENTS.forEach(function (eventName) {
+  document.addEventListener(eventName, function () {
+    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+      args[_key] = arguments[_key];
+    }
+
+    [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {
+      // TODO use WeakMap
+      if (node.__quill && node.__quill.emitter) {
+        var _node$__quill$emitter;
+
+        (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);
+      }
+    });
+  });
+});
+
+var Emitter = function (_EventEmitter) {
+  _inherits(Emitter, _EventEmitter);
+
+  function Emitter() {
+    _classCallCheck(this, Emitter);
+
+    var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));
+
+    _this.listeners = {};
+    _this.on('error', debug.error);
+    return _this;
+  }
+
+  _createClass(Emitter, [{
+    key: 'emit',
+    value: function emit() {
+      debug.log.apply(debug, arguments);
+      _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);
+    }
+  }, {
+    key: 'handleDOM',
+    value: function handleDOM(event) {
+      for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
+        args[_key2 - 1] = arguments[_key2];
+      }
+
+      (this.listeners[event.type] || []).forEach(function (_ref) {
+        var node = _ref.node,
+            handler = _ref.handler;
+
+        if (event.target === node || node.contains(event.target)) {
+          handler.apply(undefined, [event].concat(args));
+        }
+      });
+    }
+  }, {
+    key: 'listenDOM',
+    value: function listenDOM(eventName, node, handler) {
+      if (!this.listeners[eventName]) {
+        this.listeners[eventName] = [];
+      }
+      this.listeners[eventName].push({ node: node, handler: handler });
+    }
+  }]);
+
+  return Emitter;
+}(_eventemitter2.default);
+
+Emitter.events = {
+  EDITOR_CHANGE: 'editor-change',
+  SCROLL_BEFORE_UPDATE: 'scroll-before-update',
+  SCROLL_OPTIMIZE: 'scroll-optimize',
+  SCROLL_UPDATE: 'scroll-update',
+  SELECTION_CHANGE: 'selection-change',
+  TEXT_CHANGE: 'text-change'
+};
+Emitter.sources = {
+  API: 'api',
+  SILENT: 'silent',
+  USER: 'user'
+};
+
+exports.default = Emitter;
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var Module = function Module(quill) {
+  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+  _classCallCheck(this, Module);
+
+  this.quill = quill;
+  this.options = options;
+};
+
+Module.DEFAULTS = {};
+
+exports.default = Module;
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+var levels = ['error', 'warn', 'log', 'info'];
+var level = 'warn';
+
+function debug(method) {
+  if (levels.indexOf(method) <= levels.indexOf(level)) {
+    var _console;
+
+    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+      args[_key - 1] = arguments[_key];
+    }
+
+    (_console = console)[method].apply(_console, args); // eslint-disable-line no-console
+  }
+}
+
+function namespace(ns) {
+  return levels.reduce(function (logger, method) {
+    logger[method] = debug.bind(console, method, ns);
+    return logger;
+  }, {});
+}
+
+debug.level = namespace.level = function (newLevel) {
+  level = newLevel;
+};
+
+exports.default = namespace;
+
+/***/ }),
+/* 11 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var pSlice = Array.prototype.slice;
+var objectKeys = __webpack_require__(52);
+var isArguments = __webpack_require__(53);
+
+var deepEqual = module.exports = function (actual, expected, opts) {
+  if (!opts) opts = {};
+  // 7.1. All identical values are equivalent, as determined by ===.
+  if (actual === expected) {
+    return true;
+
+  } else if (actual instanceof Date && expected instanceof Date) {
+    return actual.getTime() === expected.getTime();
+
+  // 7.3. Other pairs that do not both pass typeof value == 'object',
+  // equivalence is determined by ==.
+  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {
+    return opts.strict ? actual === expected : actual == expected;
+
+  // 7.4. For all other Object pairs, including Array objects, equivalence is
+  // determined by having the same number of owned properties (as verified
+  // with Object.prototype.hasOwnProperty.call), the same set of keys
+  // (although not necessarily the same order), equivalent values for every
+  // corresponding key, and an identical 'prototype' property. Note: this
+  // accounts for both named and indexed properties on Arrays.
+  } else {
+    return objEquiv(actual, expected, opts);
+  }
+}
+
+function isUndefinedOrNull(value) {
+  return value === null || value === undefined;
+}
+
+function isBuffer (x) {
+  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;
+  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
+    return false;
+  }
+  if (x.length > 0 && typeof x[0] !== 'number') return false;
+  return true;
+}
+
+function objEquiv(a, b, opts) {
+  var i, key;
+  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
+    return false;
+  // an identical 'prototype' property.
+  if (a.prototype !== b.prototype) return false;
+  //~~~I've managed to break Object.keys through screwy arguments passing.
+  //   Converting to array solves the problem.
+  if (isArguments(a)) {
+    if (!isArguments(b)) {
+      return false;
+    }
+    a = pSlice.call(a);
+    b = pSlice.call(b);
+    return deepEqual(a, b, opts);
+  }
+  if (isBuffer(a)) {
+    if (!isBuffer(b)) {
+      return false;
+    }
+    if (a.length !== b.length) return false;
+    for (i = 0; i < a.length; i++) {
+      if (a[i] !== b[i]) return false;
+    }
+    return true;
+  }
+  try {
+    var ka = objectKeys(a),
+        kb = objectKeys(b);
+  } catch (e) {//happens when one is a string literal and the other isn't
+    return false;
+  }
+  // having the same number of owned properties (keys incorporates
+  // hasOwnProperty)
+  if (ka.length != kb.length)
+    return false;
+  //the same set of keys (although not necessarily the same order),
+  ka.sort();
+  kb.sort();
+  //~~~cheap key test
+  for (i = ka.length - 1; i >= 0; i--) {
+    if (ka[i] != kb[i])
+      return false;
+  }
+  //equivalent values for every corresponding key, and
+  //~~~possibly expensive deep test
+  for (i = ka.length - 1; i >= 0; i--) {
+    key = ka[i];
+    if (!deepEqual(a[key], b[key], opts)) return false;
+  }
+  return typeof a === typeof b;
+}
+
+
+/***/ }),
+/* 12 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+var Registry = __webpack_require__(1);
+var Attributor = /** @class */ (function () {
+    function Attributor(attrName, keyName, options) {
+        if (options === void 0) { options = {}; }
+        this.attrName = attrName;
+        this.keyName = keyName;
+        var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;
+        if (options.scope != null) {
+            // Ignore type bits, force attribute bit
+            this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;
+        }
+        else {
+            this.scope = Registry.Scope.ATTRIBUTE;
+        }
+        if (options.whitelist != null)
+            this.whitelist = options.whitelist;
+    }
+    Attributor.keys = function (node) {
+        return [].map.call(node.attributes, function (item) {
+            return item.name;
+        });
+    };
+    Attributor.prototype.add = function (node, value) {
+        if (!this.canAdd(node, value))
+            return false;
+        node.setAttribute(this.keyName, value);
+        return true;
+    };
+    Attributor.prototype.canAdd = function (node, value) {
+        var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));
+        if (match == null)
+            return false;
+        if (this.whitelist == null)
+            return true;
+        if (typeof value === 'string') {
+            return this.whitelist.indexOf(value.replace(/["']/g, '')) > -1;
+        }
+        else {
+            return this.whitelist.indexOf(value) > -1;
+        }
+    };
+    Attributor.prototype.remove = function (node) {
+        node.removeAttribute(this.keyName);
+    };
+    Attributor.prototype.value = function (node) {
+        var value = node.getAttribute(this.keyName);
+        if (this.canAdd(node, value) && value) {
+            return value;
+        }
+        return '';
+    };
+    return Attributor;
+}());
+exports.default = Attributor;
+
+
+/***/ }),
+/* 13 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.Code = undefined;
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _quillDelta = __webpack_require__(2);
+
+var _quillDelta2 = _interopRequireDefault(_quillDelta);
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _block = __webpack_require__(4);
+
+var _block2 = _interopRequireDefault(_block);
+
+var _inline = __webpack_require__(6);
+
+var _inline2 = _interopRequireDefault(_inline);
+
+var _text = __webpack_require__(7);
+
+var _text2 = _interopRequireDefault(_text);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Code = function (_Inline) {
+  _inherits(Code, _Inline);
+
+  function Code() {
+    _classCallCheck(this, Code);
+
+    return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));
+  }
+
+  return Code;
+}(_inline2.default);
+
+Code.blotName = 'code';
+Code.tagName = 'CODE';
+
+var CodeBlock = function (_Block) {
+  _inherits(CodeBlock, _Block);
+
+  function CodeBlock() {
+    _classCallCheck(this, CodeBlock);
+
+    return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));
+  }
+
+  _createClass(CodeBlock, [{
+    key: 'delta',
+    value: function delta() {
+      var _this3 = this;
+
+      var text = this.domNode.textContent;
+      if (text.endsWith('\n')) {
+        // Should always be true
+        text = text.slice(0, -1);
+      }
+      return text.split('\n').reduce(function (delta, frag) {
+        return delta.insert(frag).insert('\n', _this3.formats());
+      }, new _quillDelta2.default());
+    }
+  }, {
+    key: 'format',
+    value: function format(name, value) {
+      if (name === this.statics.blotName && value) return;
+
+      var _descendant = this.descendant(_text2.default, this.length() - 1),
+          _descendant2 = _slicedToArray(_descendant, 1),
+          text = _descendant2[0];
+
+      if (text != null) {
+        text.deleteAt(text.length() - 1, 1);
+      }
+      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);
+    }
+  }, {
+    key: 'formatAt',
+    value: function formatAt(index, length, name, value) {
+      if (length === 0) return;
+      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {
+        return;
+      }
+      var nextNewline = this.newlineIndex(index);
+      if (nextNewline < 0 || nextNewline >= index + length) return;
+      var prevNewline = this.newlineIndex(index, true) + 1;
+      var isolateLength = nextNewline - prevNewline + 1;
+      var blot = this.isolate(prevNewline, isolateLength);
+      var next = blot.next;
+      blot.format(name, value);
+      if (next instanceof CodeBlock) {
+        next.formatAt(0, index - prevNewline + length - isolateLength, name, value);
+      }
+    }
+  }, {
+    key: 'insertAt',
+    value: function insertAt(index, value, def) {
+      if (def != null) return;
+
+      var _descendant3 = this.descendant(_text2.default, index),
+          _descendant4 = _slicedToArray(_descendant3, 2),
+          text = _descendant4[0],
+          offset = _descendant4[1];
+
+      text.insertAt(offset, value);
+    }
+  }, {
+    key: 'length',
+    value: function length() {
+      var length = this.domNode.textContent.length;
+      if (!this.domNode.textContent.endsWith('\n')) {
+        return length + 1;
+      }
+      return length;
+    }
+  }, {
+    key: 'newlineIndex',
+    value: function newlineIndex(searchIndex) {
+      var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      if (!reverse) {
+        var offset = this.domNode.textContent.slice(searchIndex).indexOf('\n');
+        return offset > -1 ? searchIndex + offset : -1;
+      } else {
+        return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\n');
+      }
+    }
+  }, {
+    key: 'optimize',
+    value: function optimize(context) {
+      if (!this.domNode.textContent.endsWith('\n')) {
+        this.appendChild(_parchment2.default.create('text', '\n'));
+      }
+      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);
+      var next = this.next;
+      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {
+        next.optimize(context);
+        next.moveChildren(this);
+        next.remove();
+      }
+    }
+  }, {
+    key: 'replace',
+    value: function replace(target) {
+      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);
+      [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {
+        var blot = _parchment2.default.find(node);
+        if (blot == null) {
+          node.parentNode.removeChild(node);
+        } else if (blot instanceof _parchment2.default.Embed) {
+          blot.remove();
+        } else {
+          blot.unwrap();
+        }
+      });
+    }
+  }], [{
+    key: 'create',
+    value: function create(value) {
+      var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);
+      domNode.setAttribute('spellcheck', false);
+      return domNode;
+    }
+  }, {
+    key: 'formats',
+    value: function formats() {
+      return true;
+    }
+  }]);
+
+  return CodeBlock;
+}(_block2.default);
+
+CodeBlock.blotName = 'code-block';
+CodeBlock.tagName = 'PRE';
+CodeBlock.TAB = '  ';
+
+exports.Code = Code;
+exports.default = CodeBlock;
+
+/***/ }),
+/* 14 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _quillDelta = __webpack_require__(2);
+
+var _quillDelta2 = _interopRequireDefault(_quillDelta);
+
+var _op = __webpack_require__(20);
+
+var _op2 = _interopRequireDefault(_op);
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _code = __webpack_require__(13);
+
+var _code2 = _interopRequireDefault(_code);
+
+var _cursor = __webpack_require__(24);
+
+var _cursor2 = _interopRequireDefault(_cursor);
+
+var _block = __webpack_require__(4);
+
+var _block2 = _interopRequireDefault(_block);
+
+var _break = __webpack_require__(16);
+
+var _break2 = _interopRequireDefault(_break);
+
+var _clone = __webpack_require__(21);
+
+var _clone2 = _interopRequireDefault(_clone);
+
+var _deepEqual = __webpack_require__(11);
+
+var _deepEqual2 = _interopRequireDefault(_deepEqual);
+
+var _extend = __webpack_require__(3);
+
+var _extend2 = _interopRequireDefault(_extend);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var ASCII = /^[ -~]*$/;
+
+var Editor = function () {
+  function Editor(scroll) {
+    _classCallCheck(this, Editor);
+
+    this.scroll = scroll;
+    this.delta = this.getDelta();
+  }
+
+  _createClass(Editor, [{
+    key: 'applyDelta',
+    value: function applyDelta(delta) {
+      var _this = this;
+
+      var consumeNextNewline = false;
+      this.scroll.update();
+      var scrollLength = this.scroll.length();
+      this.scroll.batchStart();
+      delta = normalizeDelta(delta);
+      delta.reduce(function (index, op) {
+        var length = op.retain || op.delete || op.insert.length || 1;
+        var attributes = op.attributes || {};
+        if (op.insert != null) {
+          if (typeof op.insert === 'string') {
+            var text = op.insert;
+            if (text.endsWith('\n') && consumeNextNewline) {
+              consumeNextNewline = false;
+              text = text.slice(0, -1);
+            }
+            if (index >= scrollLength && !text.endsWith('\n')) {
+              consumeNextNewline = true;
+            }
+            _this.scroll.insertAt(index, text);
+
+            var _scroll$line = _this.scroll.line(index),
+                _scroll$line2 = _slicedToArray(_scroll$line, 2),
+                line = _scroll$line2[0],
+                offset = _scroll$line2[1];
+
+            var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));
+            if (line instanceof _block2.default) {
+              var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),
+                  _line$descendant2 = _slicedToArray(_line$descendant, 1),
+                  leaf = _line$descendant2[0];
+
+              formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));
+            }
+            attributes = _op2.default.attributes.diff(formats, attributes) || {};
+          } else if (_typeof(op.insert) === 'object') {
+            var key = Object.keys(op.insert)[0]; // There should only be one key
+            if (key == null) return index;
+            _this.scroll.insertAt(index, key, op.insert[key]);
+          }
+          scrollLength += length;
+        }
+        Object.keys(attributes).forEach(function (name) {
+          _this.scroll.formatAt(index, length, name, attributes[name]);
+        });
+        return index + length;
+      }, 0);
+      delta.reduce(function (index, op) {
+        if (typeof op.delete === 'number') {
+          _this.scroll.deleteAt(index, op.delete);
+          return index;
+        }
+        return index + (op.retain || op.insert.length || 1);
+      }, 0);
+      this.scroll.batchEnd();
+      return this.update(delta);
+    }
+  }, {
+    key: 'deleteText',
+    value: function deleteText(index, length) {
+      this.scroll.deleteAt(index, length);
+      return this.update(new _quillDelta2.default().retain(index).delete(length));
+    }
+  }, {
+    key: 'formatLine',
+    value: function formatLine(index, length) {
+      var _this2 = this;
+
+      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+      this.scroll.update();
+      Object.keys(formats).forEach(function (format) {
+        if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;
+        var lines = _this2.scroll.lines(index, Math.max(length, 1));
+        var lengthRemaining = length;
+        lines.forEach(function (line) {
+          var lineLength = line.length();
+          if (!(line instanceof _code2.default)) {
+            line.format(format, formats[format]);
+          } else {
+            var codeIndex = index - line.offset(_this2.scroll);
+            var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;
+            line.formatAt(codeIndex, codeLength, format, formats[format]);
+          }
+          lengthRemaining -= lineLength;
+        });
+      });
+      this.scroll.optimize();
+      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));
+    }
+  }, {
+    key: 'formatText',
+    value: function formatText(index, length) {
+      var _this3 = this;
+
+      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+      Object.keys(formats).forEach(function (format) {
+        _this3.scroll.formatAt(index, length, format, formats[format]);
+      });
+      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));
+    }
+  }, {
+    key: 'getContents',
+    value: function getContents(index, length) {
+      return this.delta.slice(index, index + length);
+    }
+  }, {
+    key: 'getDelta',
+    value: function getDelta() {
+      return this.scroll.lines().reduce(function (delta, line) {
+        return delta.concat(line.delta());
+      }, new _quillDelta2.default());
+    }
+  }, {
+    key: 'getFormat',
+    value: function getFormat(index) {
+      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+      var lines = [],
+          leaves = [];
+      if (length === 0) {
+        this.scroll.path(index).forEach(function (path) {
+          var _path = _slicedToArray(path, 1),
+              blot = _path[0];
+
+          if (blot instanceof _block2.default) {
+            lines.push(blot);
+          } else if (blot instanceof _parchment2.default.Leaf) {
+            leaves.push(blot);
+          }
+        });
+      } else {
+        lines = this.scroll.lines(index, length);
+        leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);
+      }
+      var formatsArr = [lines, leaves].map(function (blots) {
+        if (blots.length === 0) return {};
+        var formats = (0, _block.bubbleFormats)(blots.shift());
+        while (Object.keys(formats).length > 0) {
+          var blot = blots.shift();
+          if (blot == null) return formats;
+          formats = combineFormats((0, _block.bubbleFormats)(blot), formats);
+        }
+        return formats;
+      });
+      return _extend2.default.apply(_extend2.default, formatsArr);
+    }
+  }, {
+    key: 'getText',
+    value: function getText(index, length) {
+      return this.getContents(index, length).filter(function (op) {
+        return typeof op.insert === 'string';
+      }).map(function (op) {
+        return op.insert;
+      }).join('');
+    }
+  }, {
+    key: 'insertEmbed',
+    value: function insertEmbed(index, embed, value) {
+      this.scroll.insertAt(index, embed, value);
+      return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));
+    }
+  }, {
+    key: 'insertText',
+    value: function insertText(index, text) {
+      var _this4 = this;
+
+      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+      text = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
+      this.scroll.insertAt(index, text);
+      Object.keys(formats).forEach(function (format) {
+        _this4.scroll.formatAt(index, text.length, format, formats[format]);
+      });
+      return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));
+    }
+  }, {
+    key: 'isBlank',
+    value: function isBlank() {
+      if (this.scroll.children.length == 0) return true;
+      if (this.scroll.children.length > 1) return false;
+      var block = this.scroll.children.head;
+      if (block.statics.blotName !== _block2.default.blotName) return false;
+      if (block.children.length > 1) return false;
+      return block.children.head instanceof _break2.default;
+    }
+  }, {
+    key: 'removeFormat',
+    value: function removeFormat(index, length) {
+      var text = this.getText(index, length);
+
+      var _scroll$line3 = this.scroll.line(index + length),
+          _scroll$line4 = _slicedToArray(_scroll$line3, 2),
+          line = _scroll$line4[0],
+          offset = _scroll$line4[1];
+
+      var suffixLength = 0,
+          suffix = new _quillDelta2.default();
+      if (line != null) {
+        if (!(line instanceof _code2.default)) {
+          suffixLength = line.length() - offset;
+        } else {
+          suffixLength = line.newlineIndex(offset) - offset + 1;
+        }
+        suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\n');
+      }
+      var contents = this.getContents(index, length + suffixLength);
+      var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));
+      var delta = new _quillDelta2.default().retain(index).concat(diff);
+      return this.applyDelta(delta);
+    }
+  }, {
+    key: 'update',
+    value: function update(change) {
+      var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+      var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
+
+      var oldDelta = this.delta;
+      if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {
+        // Optimization for character changes
+        var textBlot = _parchment2.default.find(mutations[0].target);
+        var formats = (0, _block.bubbleFormats)(textBlot);
+        var index = textBlot.offset(this.scroll);
+        var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');
+        var oldText = new _quillDelta2.default().insert(oldValue);
+        var newText = new _quillDelta2.default().insert(textBlot.value());
+        var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));
+        change = diffDelta.reduce(function (delta, op) {
+          if (op.insert) {
+            return delta.insert(op.insert, formats);
+          } else {
+            return delta.push(op);
+          }
+        }, new _quillDelta2.default());
+        this.delta = oldDelta.compose(change);
+      } else {
+        this.delta = this.getDelta();
+        if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {
+          change = oldDelta.diff(this.delta, cursorIndex);
+        }
+      }
+      return change;
+    }
+  }]);
+
+  return Editor;
+}();
+
+function combineFormats(formats, combined) {
+  return Object.keys(combined).reduce(function (merged, name) {
+    if (formats[name] == null) return merged;
+    if (combined[name] === formats[name]) {
+      merged[name] = combined[name];
+    } else if (Array.isArray(combined[name])) {
+      if (combined[name].indexOf(formats[name]) < 0) {
+        merged[name] = combined[name].concat([formats[name]]);
+      }
+    } else {
+      merged[name] = [combined[name], formats[name]];
+    }
+    return merged;
+  }, {});
+}
+
+function normalizeDelta(delta) {
+  return delta.reduce(function (delta, op) {
+    if (op.insert === 1) {
+      var attributes = (0, _clone2.default)(op.attributes);
+      delete attributes['image'];
+      return delta.insert({ image: op.attributes.image }, attributes);
+    }
+    if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {
+      op = (0, _clone2.default)(op);
+      if (op.attributes.list) {
+        op.attributes.list = 'ordered';
+      } else {
+        op.attributes.list = 'bullet';
+        delete op.attributes.bullet;
+      }
+    }
+    if (typeof op.insert === 'string') {
+      var text = op.insert.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
+      return delta.insert(text, op.attributes);
+    }
+    return delta.push(op);
+  }, new _quillDelta2.default());
+}
+
+exports.default = Editor;
+
+/***/ }),
+/* 15 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.Range = undefined;
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _clone = __webpack_require__(21);
+
+var _clone2 = _interopRequireDefault(_clone);
+
+var _deepEqual = __webpack_require__(11);
+
+var _deepEqual2 = _interopRequireDefault(_deepEqual);
+
+var _emitter3 = __webpack_require__(8);
+
+var _emitter4 = _interopRequireDefault(_emitter3);
+
+var _logger = __webpack_require__(10);
+
+var _logger2 = _interopRequireDefault(_logger);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var debug = (0, _logger2.default)('quill:selection');
+
+var Range = function Range(index) {
+  var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+  _classCallCheck(this, Range);
+
+  this.index = index;
+  this.length = length;
+};
+
+var Selection = function () {
+  function Selection(scroll, emitter) {
+    var _this = this;
+
+    _classCallCheck(this, Selection);
+
+    this.emitter = emitter;
+    this.scroll = scroll;
+    this.composing = false;
+    this.mouseDown = false;
+    this.root = this.scroll.domNode;
+    this.cursor = _parchment2.default.create('cursor', this);
+    // savedRange is last non-null range
+    this.lastRange = this.savedRange = new Range(0, 0);
+    this.handleComposition();
+    this.handleDragging();
+    this.emitter.listenDOM('selectionchange', document, function () {
+      if (!_this.mouseDown) {
+        setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);
+      }
+    });
+    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {
+      if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {
+        _this.update(_emitter4.default.sources.SILENT);
+      }
+    });
+    this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {
+      if (!_this.hasFocus()) return;
+      var native = _this.getNativeRange();
+      if (native == null) return;
+      if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle
+      // TODO unclear if this has negative side effects
+      _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {
+        try {
+          _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);
+        } catch (ignored) {}
+      });
+    });
+    this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {
+      if (context.range) {
+        var _context$range = context.range,
+            startNode = _context$range.startNode,
+            startOffset = _context$range.startOffset,
+            endNode = _context$range.endNode,
+            endOffset = _context$range.endOffset;
+
+        _this.setNativeRange(startNode, startOffset, endNode, endOffset);
+      }
+    });
+    this.update(_emitter4.default.sources.SILENT);
+  }
+
+  _createClass(Selection, [{
+    key: 'handleComposition',
+    value: function handleComposition() {
+      var _this2 = this;
+
+      this.root.addEventListener('compositionstart', function () {
+        _this2.composing = true;
+      });
+      this.root.addEventListener('compositionend', function () {
+        _this2.composing = false;
+        if (_this2.cursor.parent) {
+          var range = _this2.cursor.restore();
+          if (!range) return;
+          setTimeout(function () {
+            _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);
+          }, 1);
+        }
+      });
+    }
+  }, {
+    key: 'handleDragging',
+    value: function handleDragging() {
+      var _this3 = this;
+
+      this.emitter.listenDOM('mousedown', document.body, function () {
+        _this3.mouseDown = true;
+      });
+      this.emitter.listenDOM('mouseup', document.body, function () {
+        _this3.mouseDown = false;
+        _this3.update(_emitter4.default.sources.USER);
+      });
+    }
+  }, {
+    key: 'focus',
+    value: function focus() {
+      if (this.hasFocus()) return;
+      this.root.focus();
+      this.setRange(this.savedRange);
+    }
+  }, {
+    key: 'format',
+    value: function format(_format, value) {
+      if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;
+      this.scroll.update();
+      var nativeRange = this.getNativeRange();
+      if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;
+      if (nativeRange.start.node !== this.cursor.textNode) {
+        var blot = _parchment2.default.find(nativeRange.start.node, false);
+        if (blot == null) return;
+        // TODO Give blot ability to not split
+        if (blot instanceof _parchment2.default.Leaf) {
+          var after = blot.split(nativeRange.start.offset);
+          blot.parent.insertBefore(this.cursor, after);
+        } else {
+          blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen
+        }
+        this.cursor.attach();
+      }
+      this.cursor.format(_format, value);
+      this.scroll.optimize();
+      this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);
+      this.update();
+    }
+  }, {
+    key: 'getBounds',
+    value: function getBounds(index) {
+      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+      var scrollLength = this.scroll.length();
+      index = Math.min(index, scrollLength - 1);
+      length = Math.min(index + length, scrollLength - 1) - index;
+      var node = void 0,
+          _scroll$leaf = this.scroll.leaf(index),
+          _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),
+          leaf = _scroll$leaf2[0],
+          offset = _scroll$leaf2[1];
+      if (leaf == null) return null;
+
+      var _leaf$position = leaf.position(offset, true);
+
+      var _leaf$position2 = _slicedToArray(_leaf$position, 2);
+
+      node = _leaf$position2[0];
+      offset = _leaf$position2[1];
+
+      var range = document.createRange();
+      if (length > 0) {
+        range.setStart(node, offset);
+
+        var _scroll$leaf3 = this.scroll.leaf(index + length);
+
+        var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);
+
+        leaf = _scroll$leaf4[0];
+        offset = _scroll$leaf4[1];
+
+        if (leaf == null) return null;
+
+        var _leaf$position3 = leaf.position(offset, true);
+
+        var _leaf$position4 = _slicedToArray(_leaf$position3, 2);
+
+        node = _leaf$position4[0];
+        offset = _leaf$position4[1];
+
+        range.setEnd(node, offset);
+        return range.getBoundingClientRect();
+      } else {
+        var side = 'left';
+        var rect = void 0;
+        if (node instanceof Text) {
+          if (offset < node.data.length) {
+            range.setStart(node, offset);
+            range.setEnd(node, offset + 1);
+          } else {
+            range.setStart(node, offset - 1);
+            range.setEnd(node, offset);
+            side = 'right';
+          }
+          rect = range.getBoundingClientRect();
+        } else {
+          rect = leaf.domNode.getBoundingClientRect();
+          if (offset > 0) side = 'right';
+        }
+        return {
+          bottom: rect.top + rect.height,
+          height: rect.height,
+          left: rect[side],
+          right: rect[side],
+          top: rect.top,
+          width: 0
+        };
+      }
+    }
+  }, {
+    key: 'getNativeRange',
+    value: function getNativeRange() {
+      var selection = document.getSelection();
+      if (selection == null || selection.rangeCount <= 0) return null;
+      var nativeRange = selection.getRangeAt(0);
+      if (nativeRange == null) return null;
+      var range = this.normalizeNative(nativeRange);
+      debug.info('getNativeRange', range);
+      return range;
+    }
+  }, {
+    key: 'getRange',
+    value: function getRange() {
+      var normalized = this.getNativeRange();
+      if (normalized == null) return [null, null];
+      var range = this.normalizedToRange(normalized);
+      return [range, normalized];
+    }
+  }, {
+    key: 'hasFocus',
+    value: function hasFocus() {
+      return document.activeElement === this.root;
+    }
+  }, {
+    key: 'normalizedToRange',
+    value: function normalizedToRange(range) {
+      var _this4 = this;
+
+      var positions = [[range.start.node, range.start.offset]];
+      if (!range.native.collapsed) {
+        positions.push([range.end.node, range.end.offset]);
+      }
+      var indexes = positions.map(function (position) {
+        var _position = _slicedToArray(position, 2),
+            node = _position[0],
+            offset = _position[1];
+
+        var blot = _parchment2.default.find(node, true);
+        var index = blot.offset(_this4.scroll);
+        if (offset === 0) {
+          return index;
+        } else if (blot instanceof _parchment2.default.Container) {
+          return index + blot.length();
+        } else {
+          return index + blot.index(node, offset);
+        }
+      });
+      var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);
+      var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));
+      return new Range(start, end - start);
+    }
+  }, {
+    key: 'normalizeNative',
+    value: function normalizeNative(nativeRange) {
+      if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {
+        return null;
+      }
+      var range = {
+        start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },
+        end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },
+        native: nativeRange
+      };
+      [range.start, range.end].forEach(function (position) {
+        var node = position.node,
+            offset = position.offset;
+        while (!(node instanceof Text) && node.childNodes.length > 0) {
+          if (node.childNodes.length > offset) {
+            node = node.childNodes[offset];
+            offset = 0;
+          } else if (node.childNodes.length === offset) {
+            node = node.lastChild;
+            offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;
+          } else {
+            break;
+          }
+        }
+        position.node = node, position.offset = offset;
+      });
+      return range;
+    }
+  }, {
+    key: 'rangeToNative',
+    value: function rangeToNative(range) {
+      var _this5 = this;
+
+      var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];
+      var args = [];
+      var scrollLength = this.scroll.length();
+      indexes.forEach(function (index, i) {
+        index = Math.min(scrollLength - 1, index);
+        var node = void 0,
+            _scroll$leaf5 = _this5.scroll.leaf(index),
+            _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),
+            leaf = _scroll$leaf6[0],
+            offset = _scroll$leaf6[1];
+        var _leaf$position5 = leaf.position(offset, i !== 0);
+
+        var _leaf$position6 = _slicedToArray(_leaf$position5, 2);
+
+        node = _leaf$position6[0];
+        offset = _leaf$position6[1];
+
+        args.push(node, offset);
+      });
+      if (args.length < 2) {
+        args = args.concat(args);
+      }
+      return args;
+    }
+  }, {
+    key: 'scrollIntoView',
+    value: function scrollIntoView(scrollingContainer) {
+      var range = this.lastRange;
+      if (range == null) return;
+      var bounds = this.getBounds(range.index, range.length);
+      if (bounds == null) return;
+      var limit = this.scroll.length() - 1;
+
+      var _scroll$line = this.scroll.line(Math.min(range.index, limit)),
+          _scroll$line2 = _slicedToArray(_scroll$line, 1),
+          first = _scroll$line2[0];
+
+      var last = first;
+      if (range.length > 0) {
+        var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));
+
+        var _scroll$line4 = _slicedToArray(_scroll$line3, 1);
+
+        last = _scroll$line4[0];
+      }
+      if (first == null || last == null) return;
+      var scrollBounds = scrollingContainer.getBoundingClientRect();
+      if (bounds.top < scrollBounds.top) {
+        scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;
+      } else if (bounds.bottom > scrollBounds.bottom) {
+        scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;
+      }
+    }
+  }, {
+    key: 'setNativeRange',
+    value: function setNativeRange(startNode, startOffset) {
+      var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;
+      var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;
+      var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
+
+      debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);
+      if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {
+        return;
+      }
+      var selection = document.getSelection();
+      if (selection == null) return;
+      if (startNode != null) {
+        if (!this.hasFocus()) this.root.focus();
+        var native = (this.getNativeRange() || {}).native;
+        if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {
+
+          if (startNode.tagName == "BR") {
+            startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);
+            startNode = startNode.parentNode;
+          }
+          if (endNode.tagName == "BR") {
+            endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);
+            endNode = endNode.parentNode;
+          }
+          var range = document.createRange();
+          range.setStart(startNode, startOffset);
+          range.setEnd(endNode, endOffset);
+          selection.removeAllRanges();
+          selection.addRange(range);
+        }
+      } else {
+        selection.removeAllRanges();
+        this.root.blur();
+        document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)
+      }
+    }
+  }, {
+    key: 'setRange',
+    value: function setRange(range) {
+      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;
+
+      if (typeof force === 'string') {
+        source = force;
+        force = false;
+      }
+      debug.info('setRange', range);
+      if (range != null) {
+        var args = this.rangeToNative(range);
+        this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));
+      } else {
+        this.setNativeRange(null);
+      }
+      this.update(source);
+    }
+  }, {
+    key: 'update',
+    value: function update() {
+      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;
+
+      var oldRange = this.lastRange;
+
+      var _getRange = this.getRange(),
+          _getRange2 = _slicedToArray(_getRange, 2),
+          lastRange = _getRange2[0],
+          nativeRange = _getRange2[1];
+
+      this.lastRange = lastRange;
+      if (this.lastRange != null) {
+        this.savedRange = this.lastRange;
+      }
+      if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {
+        var _emitter;
+
+        if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {
+          this.cursor.restore();
+        }
+        var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];
+        (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));
+        if (source !== _emitter4.default.sources.SILENT) {
+          var _emitter2;
+
+          (_emitter2 = this.emitter).emit.apply(_emitter2, args);
+        }
+      }
+    }
+  }]);
+
+  return Selection;
+}();
+
+function contains(parent, descendant) {
+  try {
+    // Firefox inserts inaccessible nodes around video elements
+    descendant.parentNode;
+  } catch (e) {
+    return false;
+  }
+  // IE11 has bug with Text nodes
+  // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect
+  if (descendant instanceof Text) {
+    descendant = descendant.parentNode;
+  }
+  return parent.contains(descendant);
+}
+
+exports.Range = Range;
+exports.default = Selection;
+
+/***/ }),
+/* 16 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Break = function (_Parchment$Embed) {
+  _inherits(Break, _Parchment$Embed);
+
+  function Break() {
+    _classCallCheck(this, Break);
+
+    return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));
+  }
+
+  _createClass(Break, [{
+    key: 'insertInto',
+    value: function insertInto(parent, ref) {
+      if (parent.children.length === 0) {
+        _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);
+      } else {
+        this.remove();
+      }
+    }
+  }, {
+    key: 'length',
+    value: function length() {
+      return 0;
+    }
+  }, {
+    key: 'value',
+    value: function value() {
+      return '';
+    }
+  }], [{
+    key: 'value',
+    value: function value() {
+      return undefined;
+    }
+  }]);
+
+  return Break;
+}(_parchment2.default.Embed);
+
+Break.blotName = 'break';
+Break.tagName = 'BR';
+
+exports.default = Break;
+
+/***/ }),
+/* 17 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __extends = (this && this.__extends) || (function () {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+    return function (d, b) {
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+var linked_list_1 = __webpack_require__(44);
+var shadow_1 = __webpack_require__(30);
+var Registry = __webpack_require__(1);
+var ContainerBlot = /** @class */ (function (_super) {
+    __extends(ContainerBlot, _super);
+    function ContainerBlot(domNode) {
+        var _this = _super.call(this, domNode) || this;
+        _this.build();
+        return _this;
+    }
+    ContainerBlot.prototype.appendChild = function (other) {
+        this.insertBefore(other);
+    };
+    ContainerBlot.prototype.attach = function () {
+        _super.prototype.attach.call(this);
+        this.children.forEach(function (child) {
+            child.attach();
+        });
+    };
+    ContainerBlot.prototype.build = function () {
+        var _this = this;
+        this.children = new linked_list_1.default();
+        // Need to be reversed for if DOM nodes already in order
+        [].slice
+            .call(this.domNode.childNodes)
+            .reverse()
+            .forEach(function (node) {
+            try {
+                var child = makeBlot(node);
+                _this.insertBefore(child, _this.children.head || undefined);
+            }
+            catch (err) {
+                if (err instanceof Registry.ParchmentError)
+                    return;
+                else
+                    throw err;
+            }
+        });
+    };
+    ContainerBlot.prototype.deleteAt = function (index, length) {
+        if (index === 0 && length === this.length()) {
+            return this.remove();
+        }
+        this.children.forEachAt(index, length, function (child, offset, length) {
+            child.deleteAt(offset, length);
+        });
+    };
+    ContainerBlot.prototype.descendant = function (criteria, index) {
+        var _a = this.children.find(index), child = _a[0], offset = _a[1];
+        if ((criteria.blotName == null && criteria(child)) ||
+            (criteria.blotName != null && child instanceof criteria)) {
+            return [child, offset];
+        }
+        else if (child instanceof ContainerBlot) {
+            return child.descendant(criteria, offset);
+        }
+        else {
+            return [null, -1];
+        }
+    };
+    ContainerBlot.prototype.descendants = function (criteria, index, length) {
+        if (index === void 0) { index = 0; }
+        if (length === void 0) { length = Number.MAX_VALUE; }
+        var descendants = [];
+        var lengthLeft = length;
+        this.children.forEachAt(index, length, function (child, index, length) {
+            if ((criteria.blotName == null && criteria(child)) ||
+                (criteria.blotName != null && child instanceof criteria)) {
+                descendants.push(child);
+            }
+            if (child instanceof ContainerBlot) {
+                descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));
+            }
+            lengthLeft -= length;
+        });
+        return descendants;
+    };
+    ContainerBlot.prototype.detach = function () {
+        this.children.forEach(function (child) {
+            child.detach();
+        });
+        _super.prototype.detach.call(this);
+    };
+    ContainerBlot.prototype.formatAt = function (index, length, name, value) {
+        this.children.forEachAt(index, length, function (child, offset, length) {
+            child.formatAt(offset, length, name, value);
+        });
+    };
+    ContainerBlot.prototype.insertAt = function (index, value, def) {
+        var _a = this.children.find(index), child = _a[0], offset = _a[1];
+        if (child) {
+            child.insertAt(offset, value, def);
+        }
+        else {
+            var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);
+            this.appendChild(blot);
+        }
+    };
+    ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {
+        if (this.statics.allowedChildren != null &&
+            !this.statics.allowedChildren.some(function (child) {
+                return childBlot instanceof child;
+            })) {
+            throw new Registry.ParchmentError("Cannot insert " + childBlot.statics.blotName + " into " + this.statics.blotName);
+        }
+        childBlot.insertInto(this, refBlot);
+    };
+    ContainerBlot.prototype.length = function () {
+        return this.children.reduce(function (memo, child) {
+            return memo + child.length();
+        }, 0);
+    };
+    ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {
+        this.children.forEach(function (child) {
+            targetParent.insertBefore(child, refNode);
+        });
+    };
+    ContainerBlot.prototype.optimize = function (context) {
+        _super.prototype.optimize.call(this, context);
+        if (this.children.length === 0) {
+            if (this.statics.defaultChild != null) {
+                var child = Registry.create(this.statics.defaultChild);
+                this.appendChild(child);
+                child.optimize(context);
+            }
+            else {
+                this.remove();
+            }
+        }
+    };
+    ContainerBlot.prototype.path = function (index, inclusive) {
+        if (inclusive === void 0) { inclusive = false; }
+        var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];
+        var position = [[this, index]];
+        if (child instanceof ContainerBlot) {
+            return position.concat(child.path(offset, inclusive));
+        }
+        else if (child != null) {
+            position.push([child, offset]);
+        }
+        return position;
+    };
+    ContainerBlot.prototype.removeChild = function (child) {
+        this.children.remove(child);
+    };
+    ContainerBlot.prototype.replace = function (target) {
+        if (target instanceof ContainerBlot) {
+            target.moveChildren(this);
+        }
+        _super.prototype.replace.call(this, target);
+    };
+    ContainerBlot.prototype.split = function (index, force) {
+        if (force === void 0) { force = false; }
+        if (!force) {
+            if (index === 0)
+                return this;
+            if (index === this.length())
+                return this.next;
+        }
+        var after = this.clone();
+        this.parent.insertBefore(after, this.next);
+        this.children.forEachAt(index, this.length(), function (child, offset, length) {
+            child = child.split(offset, force);
+            after.appendChild(child);
+        });
+        return after;
+    };
+    ContainerBlot.prototype.unwrap = function () {
+        this.moveChildren(this.parent, this.next);
+        this.remove();
+    };
+    ContainerBlot.prototype.update = function (mutations, context) {
+        var _this = this;
+        var addedNodes = [];
+        var removedNodes = [];
+        mutations.forEach(function (mutation) {
+            if (mutation.target === _this.domNode && mutation.type === 'childList') {
+                addedNodes.push.apply(addedNodes, mutation.addedNodes);
+                removedNodes.push.apply(removedNodes, mutation.removedNodes);
+            }
+        });
+        removedNodes.forEach(function (node) {
+            // Check node has actually been removed
+            // One exception is Chrome does not immediately remove IFRAMEs
+            // from DOM but MutationRecord is correct in its reported removal
+            if (node.parentNode != null &&
+                // @ts-ignore
+                node.tagName !== 'IFRAME' &&
+                document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {
+                return;
+            }
+            var blot = Registry.find(node);
+            if (blot == null)
+                return;
+            if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {
+                blot.detach();
+            }
+        });
+        addedNodes
+            .filter(function (node) {
+            return node.parentNode == _this.domNode;
+        })
+            .sort(function (a, b) {
+            if (a === b)
+                return 0;
+            if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {
+                return 1;
+            }
+            return -1;
+        })
+            .forEach(function (node) {
+            var refBlot = null;
+            if (node.nextSibling != null) {
+                refBlot = Registry.find(node.nextSibling);
+            }
+            var blot = makeBlot(node);
+            if (blot.next != refBlot || blot.next == null) {
+                if (blot.parent != null) {
+                    blot.parent.removeChild(_this);
+                }
+                _this.insertBefore(blot, refBlot || undefined);
+            }
+        });
+    };
+    return ContainerBlot;
+}(shadow_1.default));
+function makeBlot(node) {
+    var blot = Registry.find(node);
+    if (blot == null) {
+        try {
+            blot = Registry.create(node);
+        }
+        catch (e) {
+            blot = Registry.create(Registry.Scope.INLINE);
+            [].slice.call(node.childNodes).forEach(function (child) {
+                // @ts-ignore
+                blot.domNode.appendChild(child);
+            });
+            if (node.parentNode) {
+                node.parentNode.replaceChild(blot.domNode, node);
+            }
+            blot.attach();
+        }
+    }
+    return blot;
+}
+exports.default = ContainerBlot;
+
+
+/***/ }),
+/* 18 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __extends = (this && this.__extends) || (function () {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+    return function (d, b) {
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+var attributor_1 = __webpack_require__(12);
+var store_1 = __webpack_require__(31);
+var container_1 = __webpack_require__(17);
+var Registry = __webpack_require__(1);
+var FormatBlot = /** @class */ (function (_super) {
+    __extends(FormatBlot, _super);
+    function FormatBlot(domNode) {
+        var _this = _super.call(this, domNode) || this;
+        _this.attributes = new store_1.default(_this.domNode);
+        return _this;
+    }
+    FormatBlot.formats = function (domNode) {
+        if (typeof this.tagName === 'string') {
+            return true;
+        }
+        else if (Array.isArray(this.tagName)) {
+            return domNode.tagName.toLowerCase();
+        }
+        return undefined;
+    };
+    FormatBlot.prototype.format = function (name, value) {
+        var format = Registry.query(name);
+        if (format instanceof attributor_1.default) {
+            this.attributes.attribute(format, value);
+        }
+        else if (value) {
+            if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {
+                this.replaceWith(name, value);
+            }
+        }
+    };
+    FormatBlot.prototype.formats = function () {
+        var formats = this.attributes.values();
+        var format = this.statics.formats(this.domNode);
+        if (format != null) {
+            formats[this.statics.blotName] = format;
+        }
+        return formats;
+    };
+    FormatBlot.prototype.replaceWith = function (name, value) {
+        var replacement = _super.prototype.replaceWith.call(this, name, value);
+        this.attributes.copy(replacement);
+        return replacement;
+    };
+    FormatBlot.prototype.update = function (mutations, context) {
+        var _this = this;
+        _super.prototype.update.call(this, mutations, context);
+        if (mutations.some(function (mutation) {
+            return mutation.target === _this.domNode && mutation.type === 'attributes';
+        })) {
+            this.attributes.build();
+        }
+    };
+    FormatBlot.prototype.wrap = function (name, value) {
+        var wrapper = _super.prototype.wrap.call(this, name, value);
+        if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {
+            this.attributes.move(wrapper);
+        }
+        return wrapper;
+    };
+    return FormatBlot;
+}(container_1.default));
+exports.default = FormatBlot;
+
+
+/***/ }),
+/* 19 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __extends = (this && this.__extends) || (function () {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+    return function (d, b) {
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+var shadow_1 = __webpack_require__(30);
+var Registry = __webpack_require__(1);
+var LeafBlot = /** @class */ (function (_super) {
+    __extends(LeafBlot, _super);
+    function LeafBlot() {
+        return _super !== null && _super.apply(this, arguments) || this;
+    }
+    LeafBlot.value = function (domNode) {
+        return true;
+    };
+    LeafBlot.prototype.index = function (node, offset) {
+        if (this.domNode === node ||
+            this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {
+            return Math.min(offset, 1);
+        }
+        return -1;
+    };
+    LeafBlot.prototype.position = function (index, inclusive) {
+        var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);
+        if (index > 0)
+            offset += 1;
+        return [this.parent.domNode, offset];
+    };
+    LeafBlot.prototype.value = function () {
+        return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;
+        var _a;
+    };
+    LeafBlot.scope = Registry.Scope.INLINE_BLOT;
+    return LeafBlot;
+}(shadow_1.default));
+exports.default = LeafBlot;
+
+
+/***/ }),
+/* 20 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var equal = __webpack_require__(11);
+var extend = __webpack_require__(3);
+
+
+var lib = {
+  attributes: {
+    compose: function (a, b, keepNull) {
+      if (typeof a !== 'object') a = {};
+      if (typeof b !== 'object') b = {};
+      var attributes = extend(true, {}, b);
+      if (!keepNull) {
+        attributes = Object.keys(attributes).reduce(function (copy, key) {
+          if (attributes[key] != null) {
+            copy[key] = attributes[key];
+          }
+          return copy;
+        }, {});
+      }
+      for (var key in a) {
+        if (a[key] !== undefined && b[key] === undefined) {
+          attributes[key] = a[key];
+        }
+      }
+      return Object.keys(attributes).length > 0 ? attributes : undefined;
+    },
+
+    diff: function(a, b) {
+      if (typeof a !== 'object') a = {};
+      if (typeof b !== 'object') b = {};
+      var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {
+        if (!equal(a[key], b[key])) {
+          attributes[key] = b[key] === undefined ? null : b[key];
+        }
+        return attributes;
+      }, {});
+      return Object.keys(attributes).length > 0 ? attributes : undefined;
+    },
+
+    transform: function (a, b, priority) {
+      if (typeof a !== 'object') return b;
+      if (typeof b !== 'object') return undefined;
+      if (!priority) return b;  // b simply overwrites us without priority
+      var attributes = Object.keys(b).reduce(function (attributes, key) {
+        if (a[key] === undefined) attributes[key] = b[key];  // null is a valid value
+        return attributes;
+      }, {});
+      return Object.keys(attributes).length > 0 ? attributes : undefined;
+    }
+  },
+
+  iterator: function (ops) {
+    return new Iterator(ops);
+  },
+
+  length: function (op) {
+    if (typeof op['delete'] === 'number') {
+      return op['delete'];
+    } else if (typeof op.retain === 'number') {
+      return op.retain;
+    } else {
+      return typeof op.insert === 'string' ? op.insert.length : 1;
+    }
+  }
+};
+
+
+function Iterator(ops) {
+  this.ops = ops;
+  this.index = 0;
+  this.offset = 0;
+};
+
+Iterator.prototype.hasNext = function () {
+  return this.peekLength() < Infinity;
+};
+
+Iterator.prototype.next = function (length) {
+  if (!length) length = Infinity;
+  var nextOp = this.ops[this.index];
+  if (nextOp) {
+    var offset = this.offset;
+    var opLength = lib.length(nextOp)
+    if (length >= opLength - offset) {
+      length = opLength - offset;
+      this.index += 1;
+      this.offset = 0;
+    } else {
+      this.offset += length;
+    }
+    if (typeof nextOp['delete'] === 'number') {
+      return { 'delete': length };
+    } else {
+      var retOp = {};
+      if (nextOp.attributes) {
+        retOp.attributes = nextOp.attributes;
+      }
+      if (typeof nextOp.retain === 'number') {
+        retOp.retain = length;
+      } else if (typeof nextOp.insert === 'string') {
+        retOp.insert = nextOp.insert.substr(offset, length);
+      } else {
+        // offset should === 0, length should === 1
+        retOp.insert = nextOp.insert;
+      }
+      return retOp;
+    }
+  } else {
+    return { retain: Infinity };
+  }
+};
+
+Iterator.prototype.peek = function () {
+  return this.ops[this.index];
+};
+
+Iterator.prototype.peekLength = function () {
+  if (this.ops[this.index]) {
+    // Should never return 0 if our index is being managed correctly
+    return lib.length(this.ops[this.index]) - this.offset;
+  } else {
+    return Infinity;
+  }
+};
+
+Iterator.prototype.peekType = function () {
+  if (this.ops[this.index]) {
+    if (typeof this.ops[this.index]['delete'] === 'number') {
+      return 'delete';
+    } else if (typeof this.ops[this.index].retain === 'number') {
+      return 'retain';
+    } else {
+      return 'insert';
+    }
+  }
+  return 'retain';
+};
+
+
+module.exports = lib;
+
+
+/***/ }),
+/* 21 */
+/***/ (function(module, exports) {
+
+var clone = (function() {
+'use strict';
+
+function _instanceof(obj, type) {
+  return type != null && obj instanceof type;
+}
+
+var nativeMap;
+try {
+  nativeMap = Map;
+} catch(_) {
+  // maybe a reference error because no `Map`. Give it a dummy value that no
+  // value will ever be an instanceof.
+  nativeMap = function() {};
+}
+
+var nativeSet;
+try {
+  nativeSet = Set;
+} catch(_) {
+  nativeSet = function() {};
+}
+
+var nativePromise;
+try {
+  nativePromise = Promise;
+} catch(_) {
+  nativePromise = function() {};
+}
+
+/**
+ * Clones (copies) an Object using deep copying.
+ *
+ * This function supports circular references by default, but if you are certain
+ * there are no circular references in your object, you can save some CPU time
+ * by calling clone(obj, false).
+ *
+ * Caution: if `circular` is false and `parent` contains circular references,
+ * your program may enter an infinite loop and crash.
+ *
+ * @param `parent` - the object to be cloned
+ * @param `circular` - set to true if the object to be cloned may contain
+ *    circular references. (optional - true by default)
+ * @param `depth` - set to a number if the object is only to be cloned to
+ *    a particular depth. (optional - defaults to Infinity)
+ * @param `prototype` - sets the prototype to be used when cloning an object.
+ *    (optional - defaults to parent prototype).
+ * @param `includeNonEnumerable` - set to true if the non-enumerable properties
+ *    should be cloned as well. Non-enumerable properties on the prototype
+ *    chain will be ignored. (optional - false by default)
+*/
+function clone(parent, circular, depth, prototype, includeNonEnumerable) {
+  if (typeof circular === 'object') {
+    depth = circular.depth;
+    prototype = circular.prototype;
+    includeNonEnumerable = circular.includeNonEnumerable;
+    circular = circular.circular;
+  }
+  // maintain two arrays for circular references, where corresponding parents
+  // and children have the same index
+  var allParents = [];
+  var allChildren = [];
+
+  var useBuffer = typeof Buffer != 'undefined';
+
+  if (typeof circular == 'undefined')
+    circular = true;
+
+  if (typeof depth == 'undefined')
+    depth = Infinity;
+
+  // recurse this function so we don't reset allParents and allChildren
+  function _clone(parent, depth) {
+    // cloning null always returns null
+    if (parent === null)
+      return null;
+
+    if (depth === 0)
+      return parent;
+
+    var child;
+    var proto;
+    if (typeof parent != 'object') {
+      return parent;
+    }
+
+    if (_instanceof(parent, nativeMap)) {
+      child = new nativeMap();
+    } else if (_instanceof(parent, nativeSet)) {
+      child = new nativeSet();
+    } else if (_instanceof(parent, nativePromise)) {
+      child = new nativePromise(function (resolve, reject) {
+        parent.then(function(value) {
+          resolve(_clone(value, depth - 1));
+        }, function(err) {
+          reject(_clone(err, depth - 1));
+        });
+      });
+    } else if (clone.__isArray(parent)) {
+      child = [];
+    } else if (clone.__isRegExp(parent)) {
+      child = new RegExp(parent.source, __getRegExpFlags(parent));
+      if (parent.lastIndex) child.lastIndex = parent.lastIndex;
+    } else if (clone.__isDate(parent)) {
+      child = new Date(parent.getTime());
+    } else if (useBuffer && Buffer.isBuffer(parent)) {
+      child = new Buffer(parent.length);
+      parent.copy(child);
+      return child;
+    } else if (_instanceof(parent, Error)) {
+      child = Object.create(parent);
+    } else {
+      if (typeof prototype == 'undefined') {
+        proto = Object.getPrototypeOf(parent);
+        child = Object.create(proto);
+      }
+      else {
+        child = Object.create(prototype);
+        proto = prototype;
+      }
+    }
+
+    if (circular) {
+      var index = allParents.indexOf(parent);
+
+      if (index != -1) {
+        return allChildren[index];
+      }
+      allParents.push(parent);
+      allChildren.push(child);
+    }
+
+    if (_instanceof(parent, nativeMap)) {
+      parent.forEach(function(value, key) {
+        var keyChild = _clone(key, depth - 1);
+        var valueChild = _clone(value, depth - 1);
+        child.set(keyChild, valueChild);
+      });
+    }
+    if (_instanceof(parent, nativeSet)) {
+      parent.forEach(function(value) {
+        var entryChild = _clone(value, depth - 1);
+        child.add(entryChild);
+      });
+    }
+
+    for (var i in parent) {
+      var attrs;
+      if (proto) {
+        attrs = Object.getOwnPropertyDescriptor(proto, i);
+      }
+
+      if (attrs && attrs.set == null) {
+        continue;
+      }
+      child[i] = _clone(parent[i], depth - 1);
+    }
+
+    if (Object.getOwnPropertySymbols) {
+      var symbols = Object.getOwnPropertySymbols(parent);
+      for (var i = 0; i < symbols.length; i++) {
+        // Don't need to worry about cloning a symbol because it is a primitive,
+        // like a number or string.
+        var symbol = symbols[i];
+        var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);
+        if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {
+          continue;
+        }
+        child[symbol] = _clone(parent[symbol], depth - 1);
+        if (!descriptor.enumerable) {
+          Object.defineProperty(child, symbol, {
+            enumerable: false
+          });
+        }
+      }
+    }
+
+    if (includeNonEnumerable) {
+      var allPropertyNames = Object.getOwnPropertyNames(parent);
+      for (var i = 0; i < allPropertyNames.length; i++) {
+        var propertyName = allPropertyNames[i];
+        var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);
+        if (descriptor && descriptor.enumerable) {
+          continue;
+        }
+        child[propertyName] = _clone(parent[propertyName], depth - 1);
+        Object.defineProperty(child, propertyName, {
+          enumerable: false
+        });
+      }
+    }
+
+    return child;
+  }
+
+  return _clone(parent, depth);
+}
+
+/**
+ * Simple flat clone using prototype, accepts only objects, usefull for property
+ * override on FLAT configuration object (no nested props).
+ *
+ * USE WITH CAUTION! This may not behave as you wish if you do not know how this
+ * works.
+ */
+clone.clonePrototype = function clonePrototype(parent) {
+  if (parent === null)
+    return null;
+
+  var c = function () {};
+  c.prototype = parent;
+  return new c();
+};
+
+// private utility functions
+
+function __objToStr(o) {
+  return Object.prototype.toString.call(o);
+}
+clone.__objToStr = __objToStr;
+
+function __isDate(o) {
+  return typeof o === 'object' && __objToStr(o) === '[object Date]';
+}
+clone.__isDate = __isDate;
+
+function __isArray(o) {
+  return typeof o === 'object' && __objToStr(o) === '[object Array]';
+}
+clone.__isArray = __isArray;
+
+function __isRegExp(o) {
+  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';
+}
+clone.__isRegExp = __isRegExp;
+
+function __getRegExpFlags(re) {
+  var flags = '';
+  if (re.global) flags += 'g';
+  if (re.ignoreCase) flags += 'i';
+  if (re.multiline) flags += 'm';
+  return flags;
+}
+clone.__getRegExpFlags = __getRegExpFlags;
+
+return clone;
+})();
+
+if (typeof module === 'object' && module.exports) {
+  module.exports = clone;
+}
+
+
+/***/ }),
+/* 22 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _emitter = __webpack_require__(8);
+
+var _emitter2 = _interopRequireDefault(_emitter);
+
+var _block = __webpack_require__(4);
+
+var _block2 = _interopRequireDefault(_block);
+
+var _break = __webpack_require__(16);
+
+var _break2 = _interopRequireDefault(_break);
+
+var _code = __webpack_require__(13);
+
+var _code2 = _interopRequireDefault(_code);
+
+var _container = __webpack_require__(25);
+
+var _container2 = _interopRequireDefault(_container);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+function isLine(blot) {
+  return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;
+}
+
+var Scroll = function (_Parchment$Scroll) {
+  _inherits(Scroll, _Parchment$Scroll);
+
+  function Scroll(domNode, config) {
+    _classCallCheck(this, Scroll);
+
+    var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));
+
+    _this.emitter = config.emitter;
+    if (Array.isArray(config.whitelist)) {
+      _this.whitelist = config.whitelist.reduce(function (whitelist, format) {
+        whitelist[format] = true;
+        return whitelist;
+      }, {});
+    }
+    // Some reason fixes composition issues with character languages in Windows/Chrome, Safari
+    _this.domNode.addEventListener('DOMNodeInserted', function () {});
+    _this.optimize();
+    _this.enable();
+    return _this;
+  }
+
+  _createClass(Scroll, [{
+    key: 'batchStart',
+    value: function batchStart() {
+      this.batch = true;
+    }
+  }, {
+    key: 'batchEnd',
+    value: function batchEnd() {
+      this.batch = false;
+      this.optimize();
+    }
+  }, {
+    key: 'deleteAt',
+    value: function deleteAt(index, length) {
+      var _line = this.line(index),
+          _line2 = _slicedToArray(_line, 2),
+          first = _line2[0],
+          offset = _line2[1];
+
+      var _line3 = this.line(index + length),
+          _line4 = _slicedToArray(_line3, 1),
+          last = _line4[0];
+
+      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);
+      if (last != null && first !== last && offset > 0) {
+        if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {
+          this.optimize();
+          return;
+        }
+        if (first instanceof _code2.default) {
+          var newlineIndex = first.newlineIndex(first.length(), true);
+          if (newlineIndex > -1) {
+            first = first.split(newlineIndex + 1);
+            if (first === last) {
+              this.optimize();
+              return;
+            }
+          }
+        } else if (last instanceof _code2.default) {
+          var _newlineIndex = last.newlineIndex(0);
+          if (_newlineIndex > -1) {
+            last.split(_newlineIndex + 1);
+          }
+        }
+        var ref = last.children.head instanceof _break2.default ? null : last.children.head;
+        first.moveChildren(last, ref);
+        first.remove();
+      }
+      this.optimize();
+    }
+  }, {
+    key: 'enable',
+    value: function enable() {
+      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
+
+      this.domNode.setAttribute('contenteditable', enabled);
+    }
+  }, {
+    key: 'formatAt',
+    value: function formatAt(index, length, format, value) {
+      if (this.whitelist != null && !this.whitelist[format]) return;
+      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);
+      this.optimize();
+    }
+  }, {
+    key: 'insertAt',
+    value: function insertAt(index, value, def) {
+      if (def != null && this.whitelist != null && !this.whitelist[value]) return;
+      if (index >= this.length()) {
+        if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {
+          var blot = _parchment2.default.create(this.statics.defaultChild);
+          this.appendChild(blot);
+          if (def == null && value.endsWith('\n')) {
+            value = value.slice(0, -1);
+          }
+          blot.insertAt(0, value, def);
+        } else {
+          var embed = _parchment2.default.create(value, def);
+          this.appendChild(embed);
+        }
+      } else {
+        _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);
+      }
+      this.optimize();
+    }
+  }, {
+    key: 'insertBefore',
+    value: function insertBefore(blot, ref) {
+      if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {
+        var wrapper = _parchment2.default.create(this.statics.defaultChild);
+        wrapper.appendChild(blot);
+        blot = wrapper;
+      }
+      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);
+    }
+  }, {
+    key: 'leaf',
+    value: function leaf(index) {
+      return this.path(index).pop() || [null, -1];
+    }
+  }, {
+    key: 'line',
+    value: function line(index) {
+      if (index === this.length()) {
+        return this.line(index - 1);
+      }
+      return this.descendant(isLine, index);
+    }
+  }, {
+    key: 'lines',
+    value: function lines() {
+      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;
+
+      var getLines = function getLines(blot, index, length) {
+        var lines = [],
+            lengthLeft = length;
+        blot.children.forEachAt(index, length, function (child, index, length) {
+          if (isLine(child)) {
+            lines.push(child);
+          } else if (child instanceof _parchment2.default.Container) {
+            lines = lines.concat(getLines(child, index, lengthLeft));
+          }
+          lengthLeft -= length;
+        });
+        return lines;
+      };
+      return getLines(this, index, length);
+    }
+  }, {
+    key: 'optimize',
+    value: function optimize() {
+      var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+      if (this.batch === true) return;
+      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);
+      if (mutations.length > 0) {
+        this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);
+      }
+    }
+  }, {
+    key: 'path',
+    value: function path(index) {
+      return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self
+    }
+  }, {
+    key: 'update',
+    value: function update(mutations) {
+      if (this.batch === true) return;
+      var source = _emitter2.default.sources.USER;
+      if (typeof mutations === 'string') {
+        source = mutations;
+      }
+      if (!Array.isArray(mutations)) {
+        mutations = this.observer.takeRecords();
+      }
+      if (mutations.length > 0) {
+        this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);
+      }
+      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy
+      if (mutations.length > 0) {
+        this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);
+      }
+    }
+  }]);
+
+  return Scroll;
+}(_parchment2.default.Scroll);
+
+Scroll.blotName = 'scroll';
+Scroll.className = 'ql-editor';
+Scroll.tagName = 'DIV';
+Scroll.defaultChild = 'block';
+Scroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];
+
+exports.default = Scroll;
+
+/***/ }),
+/* 23 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.SHORTKEY = exports.default = undefined;
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _clone = __webpack_require__(21);
+
+var _clone2 = _interopRequireDefault(_clone);
+
+var _deepEqual = __webpack_require__(11);
+
+var _deepEqual2 = _interopRequireDefault(_deepEqual);
+
+var _extend = __webpack_require__(3);
+
+var _extend2 = _interopRequireDefault(_extend);
+
+var _quillDelta = __webpack_require__(2);
+
+var _quillDelta2 = _interopRequireDefault(_quillDelta);
+
+var _op = __webpack_require__(20);
+
+var _op2 = _interopRequireDefault(_op);
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _quill = __webpack_require__(5);
+
+var _quill2 = _interopRequireDefault(_quill);
+
+var _logger = __webpack_require__(10);
+
+var _logger2 = _interopRequireDefault(_logger);
+
+var _module = __webpack_require__(9);
+
+var _module2 = _interopRequireDefault(_module);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var debug = (0, _logger2.default)('quill:keyboard');
+
+var SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';
+
+var Keyboard = function (_Module) {
+  _inherits(Keyboard, _Module);
+
+  _createClass(Keyboard, null, [{
+    key: 'match',
+    value: function match(evt, binding) {
+      binding = normalize(binding);
+      if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {
+        return !!binding[key] !== evt[key] && binding[key] !== null;
+      })) {
+        return false;
+      }
+      return binding.key === (evt.which || evt.keyCode);
+    }
+  }]);
+
+  function Keyboard(quill, options) {
+    _classCallCheck(this, Keyboard);
+
+    var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));
+
+    _this.bindings = {};
+    Object.keys(_this.options.bindings).forEach(function (name) {
+      if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {
+        return;
+      }
+      if (_this.options.bindings[name]) {
+        _this.addBinding(_this.options.bindings[name]);
+      }
+    });
+    _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);
+    _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});
+    if (/Firefox/i.test(navigator.userAgent)) {
+      // Need to handle delete and backspace for Firefox in the general case #1171
+      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);
+      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);
+    } else {
+      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);
+      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);
+    }
+    _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);
+    _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);
+    _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);
+    _this.listen();
+    return _this;
+  }
+
+  _createClass(Keyboard, [{
+    key: 'addBinding',
+    value: function addBinding(key) {
+      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+      var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+      var binding = normalize(key);
+      if (binding == null || binding.key == null) {
+        return debug.warn('Attempted to add invalid keyboard binding', binding);
+      }
+      if (typeof context === 'function') {
+        context = { handler: context };
+      }
+      if (typeof handler === 'function') {
+        handler = { handler: handler };
+      }
+      binding = (0, _extend2.default)(binding, context, handler);
+      this.bindings[binding.key] = this.bindings[binding.key] || [];
+      this.bindings[binding.key].push(binding);
+    }
+  }, {
+    key: 'listen',
+    value: function listen() {
+      var _this2 = this;
+
+      this.quill.root.addEventListener('keydown', function (evt) {
+        if (evt.defaultPrevented) return;
+        var which = evt.which || evt.keyCode;
+        var bindings = (_this2.bindings[which] || []).filter(function (binding) {
+          return Keyboard.match(evt, binding);
+        });
+        if (bindings.length === 0) return;
+        var range = _this2.quill.getSelection();
+        if (range == null || !_this2.quill.hasFocus()) return;
+
+        var _quill$getLine = _this2.quill.getLine(range.index),
+            _quill$getLine2 = _slicedToArray(_quill$getLine, 2),
+            line = _quill$getLine2[0],
+            offset = _quill$getLine2[1];
+
+        var _quill$getLeaf = _this2.quill.getLeaf(range.index),
+            _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),
+            leafStart = _quill$getLeaf2[0],
+            offsetStart = _quill$getLeaf2[1];
+
+        var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),
+            _ref2 = _slicedToArray(_ref, 2),
+            leafEnd = _ref2[0],
+            offsetEnd = _ref2[1];
+
+        var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';
+        var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';
+        var curContext = {
+          collapsed: range.length === 0,
+          empty: range.length === 0 && line.length() <= 1,
+          format: _this2.quill.getFormat(range),
+          offset: offset,
+          prefix: prefixText,
+          suffix: suffixText
+        };
+        var prevented = bindings.some(function (binding) {
+          if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;
+          if (binding.empty != null && binding.empty !== curContext.empty) return false;
+          if (binding.offset != null && binding.offset !== curContext.offset) return false;
+          if (Array.isArray(binding.format)) {
+            // any format is present
+            if (binding.format.every(function (name) {
+              return curContext.format[name] == null;
+            })) {
+              return false;
+            }
+          } else if (_typeof(binding.format) === 'object') {
+            // all formats must match
+            if (!Object.keys(binding.format).every(function (name) {
+              if (binding.format[name] === true) return curContext.format[name] != null;
+              if (binding.format[name] === false) return curContext.format[name] == null;
+              return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);
+            })) {
+              return false;
+            }
+          }
+          if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;
+          if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;
+          return binding.handler.call(_this2, range, curContext) !== true;
+        });
+        if (prevented) {
+          evt.preventDefault();
+        }
+      });
+    }
+  }]);
+
+  return Keyboard;
+}(_module2.default);
+
+Keyboard.keys = {
+  BACKSPACE: 8,
+  TAB: 9,
+  ENTER: 13,
+  ESCAPE: 27,
+  LEFT: 37,
+  UP: 38,
+  RIGHT: 39,
+  DOWN: 40,
+  DELETE: 46
+};
+
+Keyboard.DEFAULTS = {
+  bindings: {
+    'bold': makeFormatHandler('bold'),
+    'italic': makeFormatHandler('italic'),
+    'underline': makeFormatHandler('underline'),
+    'indent': {
+      // highlight tab or tab at beginning of list, indent or blockquote
+      key: Keyboard.keys.TAB,
+      format: ['blockquote', 'indent', 'list'],
+      handler: function handler(range, context) {
+        if (context.collapsed && context.offset !== 0) return true;
+        this.quill.format('indent', '+1', _quill2.default.sources.USER);
+      }
+    },
+    'outdent': {
+      key: Keyboard.keys.TAB,
+      shiftKey: true,
+      format: ['blockquote', 'indent', 'list'],
+      // highlight tab or tab at beginning of list, indent or blockquote
+      handler: function handler(range, context) {
+        if (context.collapsed && context.offset !== 0) return true;
+        this.quill.format('indent', '-1', _quill2.default.sources.USER);
+      }
+    },
+    'outdent backspace': {
+      key: Keyboard.keys.BACKSPACE,
+      collapsed: true,
+      shiftKey: null,
+      metaKey: null,
+      ctrlKey: null,
+      altKey: null,
+      format: ['indent', 'list'],
+      offset: 0,
+      handler: function handler(range, context) {
+        if (context.format.indent != null) {
+          this.quill.format('indent', '-1', _quill2.default.sources.USER);
+        } else if (context.format.list != null) {
+          this.quill.format('list', false, _quill2.default.sources.USER);
+        }
+      }
+    },
+    'indent code-block': makeCodeBlockHandler(true),
+    'outdent code-block': makeCodeBlockHandler(false),
+    'remove tab': {
+      key: Keyboard.keys.TAB,
+      shiftKey: true,
+      collapsed: true,
+      prefix: /\t$/,
+      handler: function handler(range) {
+        this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);
+      }
+    },
+    'tab': {
+      key: Keyboard.keys.TAB,
+      handler: function handler(range) {
+        this.quill.history.cutoff();
+        var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\t');
+        this.quill.updateContents(delta, _quill2.default.sources.USER);
+        this.quill.history.cutoff();
+        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);
+      }
+    },
+    'list empty enter': {
+      key: Keyboard.keys.ENTER,
+      collapsed: true,
+      format: ['list'],
+      empty: true,
+      handler: function handler(range, context) {
+        this.quill.format('list', false, _quill2.default.sources.USER);
+        if (context.format.indent) {
+          this.quill.format('indent', false, _quill2.default.sources.USER);
+        }
+      }
+    },
+    'checklist enter': {
+      key: Keyboard.keys.ENTER,
+      collapsed: true,
+      format: { list: 'checked' },
+      handler: function handler(range) {
+        var _quill$getLine3 = this.quill.getLine(range.index),
+            _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),
+            line = _quill$getLine4[0],
+            offset = _quill$getLine4[1];
+
+        var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });
+        var delta = new _quillDelta2.default().retain(range.index).insert('\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });
+        this.quill.updateContents(delta, _quill2.default.sources.USER);
+        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);
+        this.quill.scrollIntoView();
+      }
+    },
+    'header enter': {
+      key: Keyboard.keys.ENTER,
+      collapsed: true,
+      format: ['header'],
+      suffix: /^$/,
+      handler: function handler(range, context) {
+        var _quill$getLine5 = this.quill.getLine(range.index),
+            _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),
+            line = _quill$getLine6[0],
+            offset = _quill$getLine6[1];
+
+        var delta = new _quillDelta2.default().retain(range.index).insert('\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });
+        this.quill.updateContents(delta, _quill2.default.sources.USER);
+        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);
+        this.quill.scrollIntoView();
+      }
+    },
+    'list autofill': {
+      key: ' ',
+      collapsed: true,
+      format: { list: false },
+      prefix: /^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/,
+      handler: function handler(range, context) {
+        var length = context.prefix.length;
+
+        var _quill$getLine7 = this.quill.getLine(range.index),
+            _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),
+            line = _quill$getLine8[0],
+            offset = _quill$getLine8[1];
+
+        if (offset > length) return true;
+        var value = void 0;
+        switch (context.prefix.trim()) {
+          case '[]':case '[ ]':
+            value = 'unchecked';
+            break;
+          case '[x]':
+            value = 'checked';
+            break;
+          case '-':case '*':
+            value = 'bullet';
+            break;
+          default:
+            value = 'ordered';
+        }
+        this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);
+        this.quill.history.cutoff();
+        var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });
+        this.quill.updateContents(delta, _quill2.default.sources.USER);
+        this.quill.history.cutoff();
+        this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);
+      }
+    },
+    'code exit': {
+      key: Keyboard.keys.ENTER,
+      collapsed: true,
+      format: ['code-block'],
+      prefix: /\n\n$/,
+      suffix: /^\s+$/,
+      handler: function handler(range) {
+        var _quill$getLine9 = this.quill.getLine(range.index),
+            _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),
+            line = _quill$getLine10[0],
+            offset = _quill$getLine10[1];
+
+        var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);
+        this.quill.updateContents(delta, _quill2.default.sources.USER);
+      }
+    },
+    'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),
+    'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),
+    'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),
+    'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)
+  }
+};
+
+function makeEmbedArrowHandler(key, shiftKey) {
+  var _ref3;
+
+  var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';
+  return _ref3 = {
+    key: key,
+    shiftKey: shiftKey,
+    altKey: null
+  }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {
+    var index = range.index;
+    if (key === Keyboard.keys.RIGHT) {
+      index += range.length + 1;
+    }
+
+    var _quill$getLeaf3 = this.quill.getLeaf(index),
+        _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),
+        leaf = _quill$getLeaf4[0];
+
+    if (!(leaf instanceof _parchment2.default.Embed)) return true;
+    if (key === Keyboard.keys.LEFT) {
+      if (shiftKey) {
+        this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);
+      } else {
+        this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);
+      }
+    } else {
+      if (shiftKey) {
+        this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);
+      } else {
+        this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);
+      }
+    }
+    return false;
+  }), _ref3;
+}
+
+function handleBackspace(range, context) {
+  if (range.index === 0 || this.quill.getLength() <= 1) return;
+
+  var _quill$getLine11 = this.quill.getLine(range.index),
+      _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),
+      line = _quill$getLine12[0];
+
+  var formats = {};
+  if (context.offset === 0) {
+    var _quill$getLine13 = this.quill.getLine(range.index - 1),
+        _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),
+        prev = _quill$getLine14[0];
+
+    if (prev != null && prev.length() > 1) {
+      var curFormats = line.formats();
+      var prevFormats = this.quill.getFormat(range.index - 1, 1);
+      formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};
+    }
+  }
+  // Check for astral symbols
+  var length = /[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(context.prefix) ? 2 : 1;
+  this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);
+  if (Object.keys(formats).length > 0) {
+    this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);
+  }
+  this.quill.focus();
+}
+
+function handleDelete(range, context) {
+  // Check for astral symbols
+  var length = /^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(context.suffix) ? 2 : 1;
+  if (range.index >= this.quill.getLength() - length) return;
+  var formats = {},
+      nextLength = 0;
+
+  var _quill$getLine15 = this.quill.getLine(range.index),
+      _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),
+      line = _quill$getLine16[0];
+
+  if (context.offset >= line.length() - 1) {
+    var _quill$getLine17 = this.quill.getLine(range.index + 1),
+        _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),
+        next = _quill$getLine18[0];
+
+    if (next) {
+      var curFormats = line.formats();
+      var nextFormats = this.quill.getFormat(range.index, 1);
+      formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};
+      nextLength = next.length();
+    }
+  }
+  this.quill.deleteText(range.index, length, _quill2.default.sources.USER);
+  if (Object.keys(formats).length > 0) {
+    this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);
+  }
+}
+
+function handleDeleteRange(range) {
+  var lines = this.quill.getLines(range);
+  var formats = {};
+  if (lines.length > 1) {
+    var firstFormats = lines[0].formats();
+    var lastFormats = lines[lines.length - 1].formats();
+    formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};
+  }
+  this.quill.deleteText(range, _quill2.default.sources.USER);
+  if (Object.keys(formats).length > 0) {
+    this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);
+  }
+  this.quill.setSelection(range.index, _quill2.default.sources.SILENT);
+  this.quill.focus();
+}
+
+function handleEnter(range, context) {
+  var _this3 = this;
+
+  if (range.length > 0) {
+    this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change
+  }
+  var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {
+    if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {
+      lineFormats[format] = context.format[format];
+    }
+    return lineFormats;
+  }, {});
+  this.quill.insertText(range.index, '\n', lineFormats, _quill2.default.sources.USER);
+  // Earlier scroll.deleteAt might have messed up our selection,
+  // so insertText's built in selection preservation is not reliable
+  this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);
+  this.quill.focus();
+  Object.keys(context.format).forEach(function (name) {
+    if (lineFormats[name] != null) return;
+    if (Array.isArray(context.format[name])) return;
+    if (name === 'link') return;
+    _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);
+  });
+}
+
+function makeCodeBlockHandler(indent) {
+  return {
+    key: Keyboard.keys.TAB,
+    shiftKey: !indent,
+    format: { 'code-block': true },
+    handler: function handler(range) {
+      var CodeBlock = _parchment2.default.query('code-block');
+      var index = range.index,
+          length = range.length;
+
+      var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),
+          _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),
+          block = _quill$scroll$descend2[0],
+          offset = _quill$scroll$descend2[1];
+
+      if (block == null) return;
+      var scrollIndex = this.quill.getIndex(block);
+      var start = block.newlineIndex(offset, true) + 1;
+      var end = block.newlineIndex(scrollIndex + offset + length);
+      var lines = block.domNode.textContent.slice(start, end).split('\n');
+      offset = 0;
+      lines.forEach(function (line, i) {
+        if (indent) {
+          block.insertAt(start + offset, CodeBlock.TAB);
+          offset += CodeBlock.TAB.length;
+          if (i === 0) {
+            index += CodeBlock.TAB.length;
+          } else {
+            length += CodeBlock.TAB.length;
+          }
+        } else if (line.startsWith(CodeBlock.TAB)) {
+          block.deleteAt(start + offset, CodeBlock.TAB.length);
+          offset -= CodeBlock.TAB.length;
+          if (i === 0) {
+            index -= CodeBlock.TAB.length;
+          } else {
+            length -= CodeBlock.TAB.length;
+          }
+        }
+        offset += line.length + 1;
+      });
+      this.quill.update(_quill2.default.sources.USER);
+      this.quill.setSelection(index, length, _quill2.default.sources.SILENT);
+    }
+  };
+}
+
+function makeFormatHandler(format) {
+  return {
+    key: format[0].toUpperCase(),
+    shortKey: true,
+    handler: function handler(range, context) {
+      this.quill.format(format, !context.format[format], _quill2.default.sources.USER);
+    }
+  };
+}
+
+function normalize(binding) {
+  if (typeof binding === 'string' || typeof binding === 'number') {
+    return normalize({ key: binding });
+  }
+  if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {
+    binding = (0, _clone2.default)(binding, false);
+  }
+  if (typeof binding.key === 'string') {
+    if (Keyboard.keys[binding.key.toUpperCase()] != null) {
+      binding.key = Keyboard.keys[binding.key.toUpperCase()];
+    } else if (binding.key.length === 1) {
+      binding.key = binding.key.toUpperCase().charCodeAt(0);
+    } else {
+      return null;
+    }
+  }
+  if (binding.shortKey) {
+    binding[SHORTKEY] = binding.shortKey;
+    delete binding.shortKey;
+  }
+  return binding;
+}
+
+exports.default = Keyboard;
+exports.SHORTKEY = SHORTKEY;
+
+/***/ }),
+/* 24 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _text = __webpack_require__(7);
+
+var _text2 = _interopRequireDefault(_text);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Cursor = function (_Parchment$Embed) {
+  _inherits(Cursor, _Parchment$Embed);
+
+  _createClass(Cursor, null, [{
+    key: 'value',
+    value: function value() {
+      return undefined;
+    }
+  }]);
+
+  function Cursor(domNode, selection) {
+    _classCallCheck(this, Cursor);
+
+    var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));
+
+    _this.selection = selection;
+    _this.textNode = document.createTextNode(Cursor.CONTENTS);
+    _this.domNode.appendChild(_this.textNode);
+    _this._length = 0;
+    return _this;
+  }
+
+  _createClass(Cursor, [{
+    key: 'detach',
+    value: function detach() {
+      // super.detach() will also clear domNode.__blot
+      if (this.parent != null) this.parent.removeChild(this);
+    }
+  }, {
+    key: 'format',
+    value: function format(name, value) {
+      if (this._length !== 0) {
+        return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);
+      }
+      var target = this,
+          index = 0;
+      while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {
+        index += target.offset(target.parent);
+        target = target.parent;
+      }
+      if (target != null) {
+        this._length = Cursor.CONTENTS.length;
+        target.optimize();
+        target.formatAt(index, Cursor.CONTENTS.length, name, value);
+        this._length = 0;
+      }
+    }
+  }, {
+    key: 'index',
+    value: function index(node, offset) {
+      if (node === this.textNode) return 0;
+      return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);
+    }
+  }, {
+    key: 'length',
+    value: function length() {
+      return this._length;
+    }
+  }, {
+    key: 'position',
+    value: function position() {
+      return [this.textNode, this.textNode.data.length];
+    }
+  }, {
+    key: 'remove',
+    value: function remove() {
+      _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);
+      this.parent = null;
+    }
+  }, {
+    key: 'restore',
+    value: function restore() {
+      if (this.selection.composing || this.parent == null) return;
+      var textNode = this.textNode;
+      var range = this.selection.getNativeRange();
+      var restoreText = void 0,
+          start = void 0,
+          end = void 0;
+      if (range != null && range.start.node === textNode && range.end.node === textNode) {
+        var _ref = [textNode, range.start.offset, range.end.offset];
+        restoreText = _ref[0];
+        start = _ref[1];
+        end = _ref[2];
+      }
+      // Link format will insert text outside of anchor tag
+      while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {
+        this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);
+      }
+      if (this.textNode.data !== Cursor.CONTENTS) {
+        var text = this.textNode.data.split(Cursor.CONTENTS).join('');
+        if (this.next instanceof _text2.default) {
+          restoreText = this.next.domNode;
+          this.next.insertAt(0, text);
+          this.textNode.data = Cursor.CONTENTS;
+        } else {
+          this.textNode.data = text;
+          this.parent.insertBefore(_parchment2.default.create(this.textNode), this);
+          this.textNode = document.createTextNode(Cursor.CONTENTS);
+          this.domNode.appendChild(this.textNode);
+        }
+      }
+      this.remove();
+      if (start != null) {
+        var _map = [start, end].map(function (offset) {
+          return Math.max(0, Math.min(restoreText.data.length, offset - 1));
+        });
+
+        var _map2 = _slicedToArray(_map, 2);
+
+        start = _map2[0];
+        end = _map2[1];
+
+        return {
+          startNode: restoreText,
+          startOffset: start,
+          endNode: restoreText,
+          endOffset: end
+        };
+      }
+    }
+  }, {
+    key: 'update',
+    value: function update(mutations, context) {
+      var _this2 = this;
+
+      if (mutations.some(function (mutation) {
+        return mutation.type === 'characterData' && mutation.target === _this2.textNode;
+      })) {
+        var range = this.restore();
+        if (range) context.range = range;
+      }
+    }
+  }, {
+    key: 'value',
+    value: function value() {
+      return '';
+    }
+  }]);
+
+  return Cursor;
+}(_parchment2.default.Embed);
+
+Cursor.blotName = 'cursor';
+Cursor.className = 'ql-cursor';
+Cursor.tagName = 'span';
+Cursor.CONTENTS = '\uFEFF'; // Zero width no break space
+
+
+exports.default = Cursor;
+
+/***/ }),
+/* 25 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _block = __webpack_require__(4);
+
+var _block2 = _interopRequireDefault(_block);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Container = function (_Parchment$Container) {
+  _inherits(Container, _Parchment$Container);
+
+  function Container() {
+    _classCallCheck(this, Container);
+
+    return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));
+  }
+
+  return Container;
+}(_parchment2.default.Container);
+
+Container.allowedChildren = [_block2.default, _block.BlockEmbed, Container];
+
+exports.default = Container;
+
+/***/ }),
+/* 26 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var ColorAttributor = function (_Parchment$Attributor) {
+  _inherits(ColorAttributor, _Parchment$Attributor);
+
+  function ColorAttributor() {
+    _classCallCheck(this, ColorAttributor);
+
+    return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));
+  }
+
+  _createClass(ColorAttributor, [{
+    key: 'value',
+    value: function value(domNode) {
+      var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);
+      if (!value.startsWith('rgb(')) return value;
+      value = value.replace(/^[^\d]+/, '').replace(/[^\d]+$/, '');
+      return '#' + value.split(',').map(function (component) {
+        return ('00' + parseInt(component).toString(16)).slice(-2);
+      }).join('');
+    }
+  }]);
+
+  return ColorAttributor;
+}(_parchment2.default.Attributor.Style);
+
+var ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {
+  scope: _parchment2.default.Scope.INLINE
+});
+var ColorStyle = new ColorAttributor('color', 'color', {
+  scope: _parchment2.default.Scope.INLINE
+});
+
+exports.ColorAttributor = ColorAttributor;
+exports.ColorClass = ColorClass;
+exports.ColorStyle = ColorStyle;
+
+/***/ }),
+/* 27 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.sanitize = exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _inline = __webpack_require__(6);
+
+var _inline2 = _interopRequireDefault(_inline);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Link = function (_Inline) {
+  _inherits(Link, _Inline);
+
+  function Link() {
+    _classCallCheck(this, Link);
+
+    return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));
+  }
+
+  _createClass(Link, [{
+    key: 'format',
+    value: function format(name, value) {
+      if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);
+      value = this.constructor.sanitize(value);
+      this.domNode.setAttribute('href', value);
+    }
+  }], [{
+    key: 'create',
+    value: function create(value) {
+      var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);
+      value = this.sanitize(value);
+      node.setAttribute('href', value);
+      node.setAttribute('target', '_blank');
+      return node;
+    }
+  }, {
+    key: 'formats',
+    value: function formats(domNode) {
+      return domNode.getAttribute('href');
+    }
+  }, {
+    key: 'sanitize',
+    value: function sanitize(url) {
+      return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;
+    }
+  }]);
+
+  return Link;
+}(_inline2.default);
+
+Link.blotName = 'link';
+Link.tagName = 'A';
+Link.SANITIZED_URL = 'about:blank';
+Link.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];
+
+function _sanitize(url, protocols) {
+  var anchor = document.createElement('a');
+  anchor.href = url;
+  var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));
+  return protocols.indexOf(protocol) > -1;
+}
+
+exports.default = Link;
+exports.sanitize = _sanitize;
+
+/***/ }),
+/* 28 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _keyboard = __webpack_require__(23);
+
+var _keyboard2 = _interopRequireDefault(_keyboard);
+
+var _dropdown = __webpack_require__(107);
+
+var _dropdown2 = _interopRequireDefault(_dropdown);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var optionsCounter = 0;
+
+function toggleAriaAttribute(element, attribute) {
+  element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));
+}
+
+var Picker = function () {
+  function Picker(select) {
+    var _this = this;
+
+    _classCallCheck(this, Picker);
+
+    this.select = select;
+    this.container = document.createElement('span');
+    this.buildPicker();
+    this.select.style.display = 'none';
+    this.select.parentNode.insertBefore(this.container, this.select);
+
+    this.label.addEventListener('mousedown', function () {
+      _this.togglePicker();
+    });
+    this.label.addEventListener('keydown', function (event) {
+      switch (event.keyCode) {
+        // Allows the "Enter" key to open the picker
+        case _keyboard2.default.keys.ENTER:
+          _this.togglePicker();
+          break;
+
+        // Allows the "Escape" key to close the picker
+        case _keyboard2.default.keys.ESCAPE:
+          _this.escape();
+          event.preventDefault();
+          break;
+        default:
+      }
+    });
+    this.select.addEventListener('change', this.update.bind(this));
+  }
+
+  _createClass(Picker, [{
+    key: 'togglePicker',
+    value: function togglePicker() {
+      this.container.classList.toggle('ql-expanded');
+      // Toggle aria-expanded and aria-hidden to make the picker accessible
+      toggleAriaAttribute(this.label, 'aria-expanded');
+      toggleAriaAttribute(this.options, 'aria-hidden');
+    }
+  }, {
+    key: 'buildItem',
+    value: function buildItem(option) {
+      var _this2 = this;
+
+      var item = document.createElement('span');
+      item.tabIndex = '0';
+      item.setAttribute('role', 'button');
+
+      item.classList.add('ql-picker-item');
+      if (option.hasAttribute('value')) {
+        item.setAttribute('data-value', option.getAttribute('value'));
+      }
+      if (option.textContent) {
+        item.setAttribute('data-label', option.textContent);
+      }
+      item.addEventListener('click', function () {
+        _this2.selectItem(item, true);
+      });
+      item.addEventListener('keydown', function (event) {
+        switch (event.keyCode) {
+          // Allows the "Enter" key to select an item
+          case _keyboard2.default.keys.ENTER:
+            _this2.selectItem(item, true);
+            event.preventDefault();
+            break;
+
+          // Allows the "Escape" key to close the picker
+          case _keyboard2.default.keys.ESCAPE:
+            _this2.escape();
+            event.preventDefault();
+            break;
+          default:
+        }
+      });
+
+      return item;
+    }
+  }, {
+    key: 'buildLabel',
+    value: function buildLabel() {
+      var label = document.createElement('span');
+      label.classList.add('ql-picker-label');
+      label.innerHTML = _dropdown2.default;
+      label.tabIndex = '0';
+      label.setAttribute('role', 'button');
+      label.setAttribute('aria-expanded', 'false');
+      this.container.appendChild(label);
+      return label;
+    }
+  }, {
+    key: 'buildOptions',
+    value: function buildOptions() {
+      var _this3 = this;
+
+      var options = document.createElement('span');
+      options.classList.add('ql-picker-options');
+
+      // Don't want screen readers to read this until options are visible
+      options.setAttribute('aria-hidden', 'true');
+      options.tabIndex = '-1';
+
+      // Need a unique id for aria-controls
+      options.id = 'ql-picker-options-' + optionsCounter;
+      optionsCounter += 1;
+      this.label.setAttribute('aria-controls', options.id);
+
+      this.options = options;
+
+      [].slice.call(this.select.options).forEach(function (option) {
+        var item = _this3.buildItem(option);
+        options.appendChild(item);
+        if (option.selected === true) {
+          _this3.selectItem(item);
+        }
+      });
+      this.container.appendChild(options);
+    }
+  }, {
+    key: 'buildPicker',
+    value: function buildPicker() {
+      var _this4 = this;
+
+      [].slice.call(this.select.attributes).forEach(function (item) {
+        _this4.container.setAttribute(item.name, item.value);
+      });
+      this.container.classList.add('ql-picker');
+      this.label = this.buildLabel();
+      this.buildOptions();
+    }
+  }, {
+    key: 'escape',
+    value: function escape() {
+      var _this5 = this;
+
+      // Close menu and return focus to trigger label
+      this.close();
+      // Need setTimeout for accessibility to ensure that the browser executes
+      // focus on the next process thread and after any DOM content changes
+      setTimeout(function () {
+        return _this5.label.focus();
+      }, 1);
+    }
+  }, {
+    key: 'close',
+    value: function close() {
+      this.container.classList.remove('ql-expanded');
+      this.label.setAttribute('aria-expanded', 'false');
+      this.options.setAttribute('aria-hidden', 'true');
+    }
+  }, {
+    key: 'selectItem',
+    value: function selectItem(item) {
+      var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      var selected = this.container.querySelector('.ql-selected');
+      if (item === selected) return;
+      if (selected != null) {
+        selected.classList.remove('ql-selected');
+      }
+      if (item == null) return;
+      item.classList.add('ql-selected');
+      this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);
+      if (item.hasAttribute('data-value')) {
+        this.label.setAttribute('data-value', item.getAttribute('data-value'));
+      } else {
+        this.label.removeAttribute('data-value');
+      }
+      if (item.hasAttribute('data-label')) {
+        this.label.setAttribute('data-label', item.getAttribute('data-label'));
+      } else {
+        this.label.removeAttribute('data-label');
+      }
+      if (trigger) {
+        if (typeof Event === 'function') {
+          this.select.dispatchEvent(new Event('change'));
+        } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {
+          // IE11
+          var event = document.createEvent('Event');
+          event.initEvent('change', true, true);
+          this.select.dispatchEvent(event);
+        }
+        this.close();
+      }
+    }
+  }, {
+    key: 'update',
+    value: function update() {
+      var option = void 0;
+      if (this.select.selectedIndex > -1) {
+        var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];
+        option = this.select.options[this.select.selectedIndex];
+        this.selectItem(item);
+      } else {
+        this.selectItem(null);
+      }
+      var isActive = option != null && option !== this.select.querySelector('option[selected]');
+      this.label.classList.toggle('ql-active', isActive);
+    }
+  }]);
+
+  return Picker;
+}();
+
+exports.default = Picker;
+
+/***/ }),
+/* 29 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _quill = __webpack_require__(5);
+
+var _quill2 = _interopRequireDefault(_quill);
+
+var _block = __webpack_require__(4);
+
+var _block2 = _interopRequireDefault(_block);
+
+var _break = __webpack_require__(16);
+
+var _break2 = _interopRequireDefault(_break);
+
+var _container = __webpack_require__(25);
+
+var _container2 = _interopRequireDefault(_container);
+
+var _cursor = __webpack_require__(24);
+
+var _cursor2 = _interopRequireDefault(_cursor);
+
+var _embed = __webpack_require__(35);
+
+var _embed2 = _interopRequireDefault(_embed);
+
+var _inline = __webpack_require__(6);
+
+var _inline2 = _interopRequireDefault(_inline);
+
+var _scroll = __webpack_require__(22);
+
+var _scroll2 = _interopRequireDefault(_scroll);
+
+var _text = __webpack_require__(7);
+
+var _text2 = _interopRequireDefault(_text);
+
+var _clipboard = __webpack_require__(55);
+
+var _clipboard2 = _interopRequireDefault(_clipboard);
+
+var _history = __webpack_require__(42);
+
+var _history2 = _interopRequireDefault(_history);
+
+var _keyboard = __webpack_require__(23);
+
+var _keyboard2 = _interopRequireDefault(_keyboard);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+_quill2.default.register({
+  'blots/block': _block2.default,
+  'blots/block/embed': _block.BlockEmbed,
+  'blots/break': _break2.default,
+  'blots/container': _container2.default,
+  'blots/cursor': _cursor2.default,
+  'blots/embed': _embed2.default,
+  'blots/inline': _inline2.default,
+  'blots/scroll': _scroll2.default,
+  'blots/text': _text2.default,
+
+  'modules/clipboard': _clipboard2.default,
+  'modules/history': _history2.default,
+  'modules/keyboard': _keyboard2.default
+});
+
+_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);
+
+exports.default = _quill2.default;
+
+/***/ }),
+/* 30 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+var Registry = __webpack_require__(1);
+var ShadowBlot = /** @class */ (function () {
+    function ShadowBlot(domNode) {
+        this.domNode = domNode;
+        // @ts-ignore
+        this.domNode[Registry.DATA_KEY] = { blot: this };
+    }
+    Object.defineProperty(ShadowBlot.prototype, "statics", {
+        // Hack for accessing inherited static methods
+        get: function () {
+            return this.constructor;
+        },
+        enumerable: true,
+        configurable: true
+    });
+    ShadowBlot.create = function (value) {
+        if (this.tagName == null) {
+            throw new Registry.ParchmentError('Blot definition missing tagName');
+        }
+        var node;
+        if (Array.isArray(this.tagName)) {
+            if (typeof value === 'string') {
+                value = value.toUpperCase();
+                if (parseInt(value).toString() === value) {
+                    value = parseInt(value);
+                }
+            }
+            if (typeof value === 'number') {
+                node = document.createElement(this.tagName[value - 1]);
+            }
+            else if (this.tagName.indexOf(value) > -1) {
+                node = document.createElement(value);
+            }
+            else {
+                node = document.createElement(this.tagName[0]);
+            }
+        }
+        else {
+            node = document.createElement(this.tagName);
+        }
+        if (this.className) {
+            node.classList.add(this.className);
+        }
+        return node;
+    };
+    ShadowBlot.prototype.attach = function () {
+        if (this.parent != null) {
+            this.scroll = this.parent.scroll;
+        }
+    };
+    ShadowBlot.prototype.clone = function () {
+        var domNode = this.domNode.cloneNode(false);
+        return Registry.create(domNode);
+    };
+    ShadowBlot.prototype.detach = function () {
+        if (this.parent != null)
+            this.parent.removeChild(this);
+        // @ts-ignore
+        delete this.domNode[Registry.DATA_KEY];
+    };
+    ShadowBlot.prototype.deleteAt = function (index, length) {
+        var blot = this.isolate(index, length);
+        blot.remove();
+    };
+    ShadowBlot.prototype.formatAt = function (index, length, name, value) {
+        var blot = this.isolate(index, length);
+        if (Registry.query(name, Registry.Scope.BLOT) != null && value) {
+            blot.wrap(name, value);
+        }
+        else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {
+            var parent = Registry.create(this.statics.scope);
+            blot.wrap(parent);
+            parent.format(name, value);
+        }
+    };
+    ShadowBlot.prototype.insertAt = function (index, value, def) {
+        var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);
+        var ref = this.split(index);
+        this.parent.insertBefore(blot, ref);
+    };
+    ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {
+        if (refBlot === void 0) { refBlot = null; }
+        if (this.parent != null) {
+            this.parent.children.remove(this);
+        }
+        var refDomNode = null;
+        parentBlot.children.insertBefore(this, refBlot);
+        if (refBlot != null) {
+            refDomNode = refBlot.domNode;
+        }
+        if (this.domNode.parentNode != parentBlot.domNode ||
+            this.domNode.nextSibling != refDomNode) {
+            parentBlot.domNode.insertBefore(this.domNode, refDomNode);
+        }
+        this.parent = parentBlot;
+        this.attach();
+    };
+    ShadowBlot.prototype.isolate = function (index, length) {
+        var target = this.split(index);
+        target.split(length);
+        return target;
+    };
+    ShadowBlot.prototype.length = function () {
+        return 1;
+    };
+    ShadowBlot.prototype.offset = function (root) {
+        if (root === void 0) { root = this.parent; }
+        if (this.parent == null || this == root)
+            return 0;
+        return this.parent.children.offset(this) + this.parent.offset(root);
+    };
+    ShadowBlot.prototype.optimize = function (context) {
+        // TODO clean up once we use WeakMap
+        // @ts-ignore
+        if (this.domNode[Registry.DATA_KEY] != null) {
+            // @ts-ignore
+            delete this.domNode[Registry.DATA_KEY].mutations;
+        }
+    };
+    ShadowBlot.prototype.remove = function () {
+        if (this.domNode.parentNode != null) {
+            this.domNode.parentNode.removeChild(this.domNode);
+        }
+        this.detach();
+    };
+    ShadowBlot.prototype.replace = function (target) {
+        if (target.parent == null)
+            return;
+        target.parent.insertBefore(this, target.next);
+        target.remove();
+    };
+    ShadowBlot.prototype.replaceWith = function (name, value) {
+        var replacement = typeof name === 'string' ? Registry.create(name, value) : name;
+        replacement.replace(this);
+        return replacement;
+    };
+    ShadowBlot.prototype.split = function (index, force) {
+        return index === 0 ? this : this.next;
+    };
+    ShadowBlot.prototype.update = function (mutations, context) {
+        // Nothing to do by default
+    };
+    ShadowBlot.prototype.wrap = function (name, value) {
+        var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;
+        if (this.parent != null) {
+            this.parent.insertBefore(wrapper, this.next);
+        }
+        wrapper.appendChild(this);
+        return wrapper;
+    };
+    ShadowBlot.blotName = 'abstract';
+    return ShadowBlot;
+}());
+exports.default = ShadowBlot;
+
+
+/***/ }),
+/* 31 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+var attributor_1 = __webpack_require__(12);
+var class_1 = __webpack_require__(32);
+var style_1 = __webpack_require__(33);
+var Registry = __webpack_require__(1);
+var AttributorStore = /** @class */ (function () {
+    function AttributorStore(domNode) {
+        this.attributes = {};
+        this.domNode = domNode;
+        this.build();
+    }
+    AttributorStore.prototype.attribute = function (attribute, value) {
+        // verb
+        if (value) {
+            if (attribute.add(this.domNode, value)) {
+                if (attribute.value(this.domNode) != null) {
+                    this.attributes[attribute.attrName] = attribute;
+                }
+                else {
+                    delete this.attributes[attribute.attrName];
+                }
+            }
+        }
+        else {
+            attribute.remove(this.domNode);
+            delete this.attributes[attribute.attrName];
+        }
+    };
+    AttributorStore.prototype.build = function () {
+        var _this = this;
+        this.attributes = {};
+        var attributes = attributor_1.default.keys(this.domNode);
+        var classes = class_1.default.keys(this.domNode);
+        var styles = style_1.default.keys(this.domNode);
+        attributes
+            .concat(classes)
+            .concat(styles)
+            .forEach(function (name) {
+            var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);
+            if (attr instanceof attributor_1.default) {
+                _this.attributes[attr.attrName] = attr;
+            }
+        });
+    };
+    AttributorStore.prototype.copy = function (target) {
+        var _this = this;
+        Object.keys(this.attributes).forEach(function (key) {
+            var value = _this.attributes[key].value(_this.domNode);
+            target.format(key, value);
+        });
+    };
+    AttributorStore.prototype.move = function (target) {
+        var _this = this;
+        this.copy(target);
+        Object.keys(this.attributes).forEach(function (key) {
+            _this.attributes[key].remove(_this.domNode);
+        });
+        this.attributes = {};
+    };
+    AttributorStore.prototype.values = function () {
+        var _this = this;
+        return Object.keys(this.attributes).reduce(function (attributes, name) {
+            attributes[name] = _this.attributes[name].value(_this.domNode);
+            return attributes;
+        }, {});
+    };
+    return AttributorStore;
+}());
+exports.default = AttributorStore;
+
+
+/***/ }),
+/* 32 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __extends = (this && this.__extends) || (function () {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+    return function (d, b) {
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+var attributor_1 = __webpack_require__(12);
+function match(node, prefix) {
+    var className = node.getAttribute('class') || '';
+    return className.split(/\s+/).filter(function (name) {
+        return name.indexOf(prefix + "-") === 0;
+    });
+}
+var ClassAttributor = /** @class */ (function (_super) {
+    __extends(ClassAttributor, _super);
+    function ClassAttributor() {
+        return _super !== null && _super.apply(this, arguments) || this;
+    }
+    ClassAttributor.keys = function (node) {
+        return (node.getAttribute('class') || '').split(/\s+/).map(function (name) {
+            return name
+                .split('-')
+                .slice(0, -1)
+                .join('-');
+        });
+    };
+    ClassAttributor.prototype.add = function (node, value) {
+        if (!this.canAdd(node, value))
+            return false;
+        this.remove(node);
+        node.classList.add(this.keyName + "-" + value);
+        return true;
+    };
+    ClassAttributor.prototype.remove = function (node) {
+        var matches = match(node, this.keyName);
+        matches.forEach(function (name) {
+            node.classList.remove(name);
+        });
+        if (node.classList.length === 0) {
+            node.removeAttribute('class');
+        }
+    };
+    ClassAttributor.prototype.value = function (node) {
+        var result = match(node, this.keyName)[0] || '';
+        var value = result.slice(this.keyName.length + 1); // +1 for hyphen
+        return this.canAdd(node, value) ? value : '';
+    };
+    return ClassAttributor;
+}(attributor_1.default));
+exports.default = ClassAttributor;
+
+
+/***/ }),
+/* 33 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __extends = (this && this.__extends) || (function () {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+    return function (d, b) {
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+var attributor_1 = __webpack_require__(12);
+function camelize(name) {
+    var parts = name.split('-');
+    var rest = parts
+        .slice(1)
+        .map(function (part) {
+        return part[0].toUpperCase() + part.slice(1);
+    })
+        .join('');
+    return parts[0] + rest;
+}
+var StyleAttributor = /** @class */ (function (_super) {
+    __extends(StyleAttributor, _super);
+    function StyleAttributor() {
+        return _super !== null && _super.apply(this, arguments) || this;
+    }
+    StyleAttributor.keys = function (node) {
+        return (node.getAttribute('style') || '').split(';').map(function (value) {
+            var arr = value.split(':');
+            return arr[0].trim();
+        });
+    };
+    StyleAttributor.prototype.add = function (node, value) {
+        if (!this.canAdd(node, value))
+            return false;
+        // @ts-ignore
+        node.style[camelize(this.keyName)] = value;
+        return true;
+    };
+    StyleAttributor.prototype.remove = function (node) {
+        // @ts-ignore
+        node.style[camelize(this.keyName)] = '';
+        if (!node.getAttribute('style')) {
+            node.removeAttribute('style');
+        }
+    };
+    StyleAttributor.prototype.value = function (node) {
+        // @ts-ignore
+        var value = node.style[camelize(this.keyName)];
+        return this.canAdd(node, value) ? value : '';
+    };
+    return StyleAttributor;
+}(attributor_1.default));
+exports.default = StyleAttributor;
+
+
+/***/ }),
+/* 34 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var Theme = function () {
+  function Theme(quill, options) {
+    _classCallCheck(this, Theme);
+
+    this.quill = quill;
+    this.options = options;
+    this.modules = {};
+  }
+
+  _createClass(Theme, [{
+    key: 'init',
+    value: function init() {
+      var _this = this;
+
+      Object.keys(this.options.modules).forEach(function (name) {
+        if (_this.modules[name] == null) {
+          _this.addModule(name);
+        }
+      });
+    }
+  }, {
+    key: 'addModule',
+    value: function addModule(name) {
+      var moduleClass = this.quill.constructor.import('modules/' + name);
+      this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});
+      return this.modules[name];
+    }
+  }]);
+
+  return Theme;
+}();
+
+Theme.DEFAULTS = {
+  modules: {}
+};
+Theme.themes = {
+  'default': Theme
+};
+
+exports.default = Theme;
+
+/***/ }),
+/* 35 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _text = __webpack_require__(7);
+
+var _text2 = _interopRequireDefault(_text);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var GUARD_TEXT = '\uFEFF';
+
+var Embed = function (_Parchment$Embed) {
+  _inherits(Embed, _Parchment$Embed);
+
+  function Embed(node) {
+    _classCallCheck(this, Embed);
+
+    var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));
+
+    _this.contentNode = document.createElement('span');
+    _this.contentNode.setAttribute('contenteditable', false);
+    [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {
+      _this.contentNode.appendChild(childNode);
+    });
+    _this.leftGuard = document.createTextNode(GUARD_TEXT);
+    _this.rightGuard = document.createTextNode(GUARD_TEXT);
+    _this.domNode.appendChild(_this.leftGuard);
+    _this.domNode.appendChild(_this.contentNode);
+    _this.domNode.appendChild(_this.rightGuard);
+    return _this;
+  }
+
+  _createClass(Embed, [{
+    key: 'index',
+    value: function index(node, offset) {
+      if (node === this.leftGuard) return 0;
+      if (node === this.rightGuard) return 1;
+      return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);
+    }
+  }, {
+    key: 'restore',
+    value: function restore(node) {
+      var range = void 0,
+          textNode = void 0;
+      var text = node.data.split(GUARD_TEXT).join('');
+      if (node === this.leftGuard) {
+        if (this.prev instanceof _text2.default) {
+          var prevLength = this.prev.length();
+          this.prev.insertAt(prevLength, text);
+          range = {
+            startNode: this.prev.domNode,
+            startOffset: prevLength + text.length
+          };
+        } else {
+          textNode = document.createTextNode(text);
+          this.parent.insertBefore(_parchment2.default.create(textNode), this);
+          range = {
+            startNode: textNode,
+            startOffset: text.length
+          };
+        }
+      } else if (node === this.rightGuard) {
+        if (this.next instanceof _text2.default) {
+          this.next.insertAt(0, text);
+          range = {
+            startNode: this.next.domNode,
+            startOffset: text.length
+          };
+        } else {
+          textNode = document.createTextNode(text);
+          this.parent.insertBefore(_parchment2.default.create(textNode), this.next);
+          range = {
+            startNode: textNode,
+            startOffset: text.length
+          };
+        }
+      }
+      node.data = GUARD_TEXT;
+      return range;
+    }
+  }, {
+    key: 'update',
+    value: function update(mutations, context) {
+      var _this2 = this;
+
+      mutations.forEach(function (mutation) {
+        if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {
+          var range = _this2.restore(mutation.target);
+          if (range) context.range = range;
+        }
+      });
+    }
+  }]);
+
+  return Embed;
+}(_parchment2.default.Embed);
+
+exports.default = Embed;
+
+/***/ }),
+/* 36 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var config = {
+  scope: _parchment2.default.Scope.BLOCK,
+  whitelist: ['right', 'center', 'justify']
+};
+
+var AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);
+var AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);
+var AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);
+
+exports.AlignAttribute = AlignAttribute;
+exports.AlignClass = AlignClass;
+exports.AlignStyle = AlignStyle;
+
+/***/ }),
+/* 37 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.BackgroundStyle = exports.BackgroundClass = undefined;
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _color = __webpack_require__(26);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {
+  scope: _parchment2.default.Scope.INLINE
+});
+var BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {
+  scope: _parchment2.default.Scope.INLINE
+});
+
+exports.BackgroundClass = BackgroundClass;
+exports.BackgroundStyle = BackgroundStyle;
+
+/***/ }),
+/* 38 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var config = {
+  scope: _parchment2.default.Scope.BLOCK,
+  whitelist: ['rtl']
+};
+
+var DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);
+var DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);
+var DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);
+
+exports.DirectionAttribute = DirectionAttribute;
+exports.DirectionClass = DirectionClass;
+exports.DirectionStyle = DirectionStyle;
+
+/***/ }),
+/* 39 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.FontClass = exports.FontStyle = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var config = {
+  scope: _parchment2.default.Scope.INLINE,
+  whitelist: ['serif', 'monospace']
+};
+
+var FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);
+
+var FontStyleAttributor = function (_Parchment$Attributor) {
+  _inherits(FontStyleAttributor, _Parchment$Attributor);
+
+  function FontStyleAttributor() {
+    _classCallCheck(this, FontStyleAttributor);
+
+    return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));
+  }
+
+  _createClass(FontStyleAttributor, [{
+    key: 'value',
+    value: function value(node) {
+      return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/["']/g, '');
+    }
+  }]);
+
+  return FontStyleAttributor;
+}(_parchment2.default.Attributor.Style);
+
+var FontStyle = new FontStyleAttributor('font', 'font-family', config);
+
+exports.FontStyle = FontStyle;
+exports.FontClass = FontClass;
+
+/***/ }),
+/* 40 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.SizeStyle = exports.SizeClass = undefined;
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {
+  scope: _parchment2.default.Scope.INLINE,
+  whitelist: ['small', 'large', 'huge']
+});
+var SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {
+  scope: _parchment2.default.Scope.INLINE,
+  whitelist: ['10px', '18px', '32px']
+});
+
+exports.SizeClass = SizeClass;
+exports.SizeStyle = SizeStyle;
+
+/***/ }),
+/* 41 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+module.exports = {
+  'align': {
+    '': __webpack_require__(76),
+    'center': __webpack_require__(77),
+    'right': __webpack_require__(78),
+    'justify': __webpack_require__(79)
+  },
+  'background': __webpack_require__(80),
+  'blockquote': __webpack_require__(81),
+  'bold': __webpack_require__(82),
+  'clean': __webpack_require__(83),
+  'code': __webpack_require__(58),
+  'code-block': __webpack_require__(58),
+  'color': __webpack_require__(84),
+  'direction': {
+    '': __webpack_require__(85),
+    'rtl': __webpack_require__(86)
+  },
+  'float': {
+    'center': __webpack_require__(87),
+    'full': __webpack_require__(88),
+    'left': __webpack_require__(89),
+    'right': __webpack_require__(90)
+  },
+  'formula': __webpack_require__(91),
+  'header': {
+    '1': __webpack_require__(92),
+    '2': __webpack_require__(93)
+  },
+  'italic': __webpack_require__(94),
+  'image': __webpack_require__(95),
+  'indent': {
+    '+1': __webpack_require__(96),
+    '-1': __webpack_require__(97)
+  },
+  'link': __webpack_require__(98),
+  'list': {
+    'ordered': __webpack_require__(99),
+    'bullet': __webpack_require__(100),
+    'check': __webpack_require__(101)
+  },
+  'script': {
+    'sub': __webpack_require__(102),
+    'super': __webpack_require__(103)
+  },
+  'strike': __webpack_require__(104),
+  'underline': __webpack_require__(105),
+  'video': __webpack_require__(106)
+};
+
+/***/ }),
+/* 42 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.getLastChangeIndex = exports.default = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _quill = __webpack_require__(5);
+
+var _quill2 = _interopRequireDefault(_quill);
+
+var _module = __webpack_require__(9);
+
+var _module2 = _interopRequireDefault(_module);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var History = function (_Module) {
+  _inherits(History, _Module);
+
+  function History(quill, options) {
+    _classCallCheck(this, History);
+
+    var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));
+
+    _this.lastRecorded = 0;
+    _this.ignoreChange = false;
+    _this.clear();
+    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {
+      if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;
+      if (!_this.options.userOnly || source === _quill2.default.sources.USER) {
+        _this.record(delta, oldDelta);
+      } else {
+        _this.transform(delta);
+      }
+    });
+    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));
+    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));
+    if (/Win/i.test(navigator.platform)) {
+      _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));
+    }
+    return _this;
+  }
+
+  _createClass(History, [{
+    key: 'change',
+    value: function change(source, dest) {
+      if (this.stack[source].length === 0) return;
+      var delta = this.stack[source].pop();
+      this.stack[dest].push(delta);
+      this.lastRecorded = 0;
+      this.ignoreChange = true;
+      this.quill.updateContents(delta[source], _quill2.default.sources.USER);
+      this.ignoreChange = false;
+      var index = getLastChangeIndex(delta[source]);
+      this.quill.setSelection(index);
+    }
+  }, {
+    key: 'clear',
+    value: function clear() {
+      this.stack = { undo: [], redo: [] };
+    }
+  }, {
+    key: 'cutoff',
+    value: function cutoff() {
+      this.lastRecorded = 0;
+    }
+  }, {
+    key: 'record',
+    value: function record(changeDelta, oldDelta) {
+      if (changeDelta.ops.length === 0) return;
+      this.stack.redo = [];
+      var undoDelta = this.quill.getContents().diff(oldDelta);
+      var timestamp = Date.now();
+      if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {
+        var delta = this.stack.undo.pop();
+        undoDelta = undoDelta.compose(delta.undo);
+        changeDelta = delta.redo.compose(changeDelta);
+      } else {
+        this.lastRecorded = timestamp;
+      }
+      this.stack.undo.push({
+        redo: changeDelta,
+        undo: undoDelta
+      });
+      if (this.stack.undo.length > this.options.maxStack) {
+        this.stack.undo.shift();
+      }
+    }
+  }, {
+    key: 'redo',
+    value: function redo() {
+      this.change('redo', 'undo');
+    }
+  }, {
+    key: 'transform',
+    value: function transform(delta) {
+      this.stack.undo.forEach(function (change) {
+        change.undo = delta.transform(change.undo, true);
+        change.redo = delta.transform(change.redo, true);
+      });
+      this.stack.redo.forEach(function (change) {
+        change.undo = delta.transform(change.undo, true);
+        change.redo = delta.transform(change.redo, true);
+      });
+    }
+  }, {
+    key: 'undo',
+    value: function undo() {
+      this.change('undo', 'redo');
+    }
+  }]);
+
+  return History;
+}(_module2.default);
+
+History.DEFAULTS = {
+  delay: 1000,
+  maxStack: 100,
+  userOnly: false
+};
+
+function endsWithNewlineChange(delta) {
+  var lastOp = delta.ops[delta.ops.length - 1];
+  if (lastOp == null) return false;
+  if (lastOp.insert != null) {
+    return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\n');
+  }
+  if (lastOp.attributes != null) {
+    return Object.keys(lastOp.attributes).some(function (attr) {
+      return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;
+    });
+  }
+  return false;
+}
+
+function getLastChangeIndex(delta) {
+  var deleteLength = delta.reduce(function (length, op) {
+    length += op.delete || 0;
+    return length;
+  }, 0);
+  var changeIndex = delta.length() - deleteLength;
+  if (endsWithNewlineChange(delta)) {
+    changeIndex -= 1;
+  }
+  return changeIndex;
+}
+
+exports.default = History;
+exports.getLastChangeIndex = getLastChangeIndex;
+
+/***/ }),
+/* 43 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.BaseTooltip = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _extend = __webpack_require__(3);
+
+var _extend2 = _interopRequireDefault(_extend);
+
+var _quillDelta = __webpack_require__(2);
+
+var _quillDelta2 = _interopRequireDefault(_quillDelta);
+
+var _emitter = __webpack_require__(8);
+
+var _emitter2 = _interopRequireDefault(_emitter);
+
+var _keyboard = __webpack_require__(23);
+
+var _keyboard2 = _interopRequireDefault(_keyboard);
+
+var _theme = __webpack_require__(34);
+
+var _theme2 = _interopRequireDefault(_theme);
+
+var _colorPicker = __webpack_require__(59);
+
+var _colorPicker2 = _interopRequireDefault(_colorPicker);
+
+var _iconPicker = __webpack_require__(60);
+
+var _iconPicker2 = _interopRequireDefault(_iconPicker);
+
+var _picker = __webpack_require__(28);
+
+var _picker2 = _interopRequireDefault(_picker);
+
+var _tooltip = __webpack_require__(61);
+
+var _tooltip2 = _interopRequireDefault(_tooltip);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var ALIGNS = [false, 'center', 'right', 'justify'];
+
+var COLORS = ["#000000", "#e60000", "#ff9900", "#ffff00", "#008a00", "#0066cc", "#9933ff", "#ffffff", "#facccc", "#ffebcc", "#ffffcc", "#cce8cc", "#cce0f5", "#ebd6ff", "#bbbbbb", "#f06666", "#ffc266", "#ffff66", "#66b966", "#66a3e0", "#c285ff", "#888888", "#a10000", "#b26b00", "#b2b200", "#006100", "#0047b2", "#6b24b2", "#444444", "#5c0000", "#663d00", "#666600", "#003700", "#002966", "#3d1466"];
+
+var FONTS = [false, 'serif', 'monospace'];
+
+var HEADERS = ['1', '2', '3', false];
+
+var SIZES = ['small', false, 'large', 'huge'];
+
+var BaseTheme = function (_Theme) {
+  _inherits(BaseTheme, _Theme);
+
+  function BaseTheme(quill, options) {
+    _classCallCheck(this, BaseTheme);
+
+    var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));
+
+    var listener = function listener(e) {
+      if (!document.body.contains(quill.root)) {
+        return document.body.removeEventListener('click', listener);
+      }
+      if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {
+        _this.tooltip.hide();
+      }
+      if (_this.pickers != null) {
+        _this.pickers.forEach(function (picker) {
+          if (!picker.container.contains(e.target)) {
+            picker.close();
+          }
+        });
+      }
+    };
+    quill.emitter.listenDOM('click', document.body, listener);
+    return _this;
+  }
+
+  _createClass(BaseTheme, [{
+    key: 'addModule',
+    value: function addModule(name) {
+      var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);
+      if (name === 'toolbar') {
+        this.extendToolbar(module);
+      }
+      return module;
+    }
+  }, {
+    key: 'buildButtons',
+    value: function buildButtons(buttons, icons) {
+      buttons.forEach(function (button) {
+        var className = button.getAttribute('class') || '';
+        className.split(/\s+/).forEach(function (name) {
+          if (!name.startsWith('ql-')) return;
+          name = name.slice('ql-'.length);
+          if (icons[name] == null) return;
+          if (name === 'direction') {
+            button.innerHTML = icons[name][''] + icons[name]['rtl'];
+          } else if (typeof icons[name] === 'string') {
+            button.innerHTML = icons[name];
+          } else {
+            var value = button.value || '';
+            if (value != null && icons[name][value]) {
+              button.innerHTML = icons[name][value];
+            }
+          }
+        });
+      });
+    }
+  }, {
+    key: 'buildPickers',
+    value: function buildPickers(selects, icons) {
+      var _this2 = this;
+
+      this.pickers = selects.map(function (select) {
+        if (select.classList.contains('ql-align')) {
+          if (select.querySelector('option') == null) {
+            fillSelect(select, ALIGNS);
+          }
+          return new _iconPicker2.default(select, icons.align);
+        } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {
+          var format = select.classList.contains('ql-background') ? 'background' : 'color';
+          if (select.querySelector('option') == null) {
+            fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');
+          }
+          return new _colorPicker2.default(select, icons[format]);
+        } else {
+          if (select.querySelector('option') == null) {
+            if (select.classList.contains('ql-font')) {
+              fillSelect(select, FONTS);
+            } else if (select.classList.contains('ql-header')) {
+              fillSelect(select, HEADERS);
+            } else if (select.classList.contains('ql-size')) {
+              fillSelect(select, SIZES);
+            }
+          }
+          return new _picker2.default(select);
+        }
+      });
+      var update = function update() {
+        _this2.pickers.forEach(function (picker) {
+          picker.update();
+        });
+      };
+      this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);
+    }
+  }]);
+
+  return BaseTheme;
+}(_theme2.default);
+
+BaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {
+  modules: {
+    toolbar: {
+      handlers: {
+        formula: function formula() {
+          this.quill.theme.tooltip.edit('formula');
+        },
+        image: function image() {
+          var _this3 = this;
+
+          var fileInput = this.container.querySelector('input.ql-image[type=file]');
+          if (fileInput == null) {
+            fileInput = document.createElement('input');
+            fileInput.setAttribute('type', 'file');
+            fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');
+            fileInput.classList.add('ql-image');
+            fileInput.addEventListener('change', function () {
+              if (fileInput.files != null && fileInput.files[0] != null) {
+                var reader = new FileReader();
+                reader.onload = function (e) {
+                  var range = _this3.quill.getSelection(true);
+                  _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);
+                  _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);
+                  fileInput.value = "";
+                };
+                reader.readAsDataURL(fileInput.files[0]);
+              }
+            });
+            this.container.appendChild(fileInput);
+          }
+          fileInput.click();
+        },
+        video: function video() {
+          this.quill.theme.tooltip.edit('video');
+        }
+      }
+    }
+  }
+});
+
+var BaseTooltip = function (_Tooltip) {
+  _inherits(BaseTooltip, _Tooltip);
+
+  function BaseTooltip(quill, boundsContainer) {
+    _classCallCheck(this, BaseTooltip);
+
+    var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));
+
+    _this4.textbox = _this4.root.querySelector('input[type="text"]');
+    _this4.listen();
+    return _this4;
+  }
+
+  _createClass(BaseTooltip, [{
+    key: 'listen',
+    value: function listen() {
+      var _this5 = this;
+
+      this.textbox.addEventListener('keydown', function (event) {
+        if (_keyboard2.default.match(event, 'enter')) {
+          _this5.save();
+          event.preventDefault();
+        } else if (_keyboard2.default.match(event, 'escape')) {
+          _this5.cancel();
+          event.preventDefault();
+        }
+      });
+    }
+  }, {
+    key: 'cancel',
+    value: function cancel() {
+      this.hide();
+    }
+  }, {
+    key: 'edit',
+    value: function edit() {
+      var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';
+      var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+
+      this.root.classList.remove('ql-hidden');
+      this.root.classList.add('ql-editing');
+      if (preview != null) {
+        this.textbox.value = preview;
+      } else if (mode !== this.root.getAttribute('data-mode')) {
+        this.textbox.value = '';
+      }
+      this.position(this.quill.getBounds(this.quill.selection.savedRange));
+      this.textbox.select();
+      this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');
+      this.root.setAttribute('data-mode', mode);
+    }
+  }, {
+    key: 'restoreFocus',
+    value: function restoreFocus() {
+      var scrollTop = this.quill.scrollingContainer.scrollTop;
+      this.quill.focus();
+      this.quill.scrollingContainer.scrollTop = scrollTop;
+    }
+  }, {
+    key: 'save',
+    value: function save() {
+      var value = this.textbox.value;
+      switch (this.root.getAttribute('data-mode')) {
+        case 'link':
+          {
+            var scrollTop = this.quill.root.scrollTop;
+            if (this.linkRange) {
+              this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);
+              delete this.linkRange;
+            } else {
+              this.restoreFocus();
+              this.quill.format('link', value, _emitter2.default.sources.USER);
+            }
+            this.quill.root.scrollTop = scrollTop;
+            break;
+          }
+        case 'video':
+          {
+            value = extractVideoUrl(value);
+          } // eslint-disable-next-line no-fallthrough
+        case 'formula':
+          {
+            if (!value) break;
+            var range = this.quill.getSelection(true);
+            if (range != null) {
+              var index = range.index + range.length;
+              this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);
+              if (this.root.getAttribute('data-mode') === 'formula') {
+                this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);
+              }
+              this.quill.setSelection(index + 2, _emitter2.default.sources.USER);
+            }
+            break;
+          }
+        default:
+      }
+      this.textbox.value = '';
+      this.hide();
+    }
+  }]);
+
+  return BaseTooltip;
+}(_tooltip2.default);
+
+function extractVideoUrl(url) {
+  var match = url.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtu\.be\/([a-zA-Z0-9_-]+)/);
+  if (match) {
+    return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';
+  }
+  if (match = url.match(/^(?:(https?):\/\/)?(?:www\.)?vimeo\.com\/(\d+)/)) {
+    // eslint-disable-line no-cond-assign
+    return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';
+  }
+  return url;
+}
+
+function fillSelect(select, values) {
+  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+  values.forEach(function (value) {
+    var option = document.createElement('option');
+    if (value === defaultValue) {
+      option.setAttribute('selected', 'selected');
+    } else {
+      option.setAttribute('value', value);
+    }
+    select.appendChild(option);
+  });
+}
+
+exports.BaseTooltip = BaseTooltip;
+exports.default = BaseTheme;
+
+/***/ }),
+/* 44 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+var LinkedList = /** @class */ (function () {
+    function LinkedList() {
+        this.head = this.tail = null;
+        this.length = 0;
+    }
+    LinkedList.prototype.append = function () {
+        var nodes = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            nodes[_i] = arguments[_i];
+        }
+        this.insertBefore(nodes[0], null);
+        if (nodes.length > 1) {
+            this.append.apply(this, nodes.slice(1));
+        }
+    };
+    LinkedList.prototype.contains = function (node) {
+        var cur, next = this.iterator();
+        while ((cur = next())) {
+            if (cur === node)
+                return true;
+        }
+        return false;
+    };
+    LinkedList.prototype.insertBefore = function (node, refNode) {
+        if (!node)
+            return;
+        node.next = refNode;
+        if (refNode != null) {
+            node.prev = refNode.prev;
+            if (refNode.prev != null) {
+                refNode.prev.next = node;
+            }
+            refNode.prev = node;
+            if (refNode === this.head) {
+                this.head = node;
+            }
+        }
+        else if (this.tail != null) {
+            this.tail.next = node;
+            node.prev = this.tail;
+            this.tail = node;
+        }
+        else {
+            node.prev = null;
+            this.head = this.tail = node;
+        }
+        this.length += 1;
+    };
+    LinkedList.prototype.offset = function (target) {
+        var index = 0, cur = this.head;
+        while (cur != null) {
+            if (cur === target)
+                return index;
+            index += cur.length();
+            cur = cur.next;
+        }
+        return -1;
+    };
+    LinkedList.prototype.remove = function (node) {
+        if (!this.contains(node))
+            return;
+        if (node.prev != null)
+            node.prev.next = node.next;
+        if (node.next != null)
+            node.next.prev = node.prev;
+        if (node === this.head)
+            this.head = node.next;
+        if (node === this.tail)
+            this.tail = node.prev;
+        this.length -= 1;
+    };
+    LinkedList.prototype.iterator = function (curNode) {
+        if (curNode === void 0) { curNode = this.head; }
+        // TODO use yield when we can
+        return function () {
+            var ret = curNode;
+            if (curNode != null)
+                curNode = curNode.next;
+            return ret;
+        };
+    };
+    LinkedList.prototype.find = function (index, inclusive) {
+        if (inclusive === void 0) { inclusive = false; }
+        var cur, next = this.iterator();
+        while ((cur = next())) {
+            var length = cur.length();
+            if (index < length ||
+                (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {
+                return [cur, index];
+            }
+            index -= length;
+        }
+        return [null, 0];
+    };
+    LinkedList.prototype.forEach = function (callback) {
+        var cur, next = this.iterator();
+        while ((cur = next())) {
+            callback(cur);
+        }
+    };
+    LinkedList.prototype.forEachAt = function (index, length, callback) {
+        if (length <= 0)
+            return;
+        var _a = this.find(index), startNode = _a[0], offset = _a[1];
+        var cur, curIndex = index - offset, next = this.iterator(startNode);
+        while ((cur = next()) && curIndex < index + length) {
+            var curLength = cur.length();
+            if (index > curIndex) {
+                callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));
+            }
+            else {
+                callback(cur, 0, Math.min(curLength, index + length - curIndex));
+            }
+            curIndex += curLength;
+        }
+    };
+    LinkedList.prototype.map = function (callback) {
+        return this.reduce(function (memo, cur) {
+            memo.push(callback(cur));
+            return memo;
+        }, []);
+    };
+    LinkedList.prototype.reduce = function (callback, memo) {
+        var cur, next = this.iterator();
+        while ((cur = next())) {
+            memo = callback(memo, cur);
+        }
+        return memo;
+    };
+    return LinkedList;
+}());
+exports.default = LinkedList;
+
+
+/***/ }),
+/* 45 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __extends = (this && this.__extends) || (function () {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+    return function (d, b) {
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+var container_1 = __webpack_require__(17);
+var Registry = __webpack_require__(1);
+var OBSERVER_CONFIG = {
+    attributes: true,
+    characterData: true,
+    characterDataOldValue: true,
+    childList: true,
+    subtree: true,
+};
+var MAX_OPTIMIZE_ITERATIONS = 100;
+var ScrollBlot = /** @class */ (function (_super) {
+    __extends(ScrollBlot, _super);
+    function ScrollBlot(node) {
+        var _this = _super.call(this, node) || this;
+        _this.scroll = _this;
+        _this.observer = new MutationObserver(function (mutations) {
+            _this.update(mutations);
+        });
+        _this.observer.observe(_this.domNode, OBSERVER_CONFIG);
+        _this.attach();
+        return _this;
+    }
+    ScrollBlot.prototype.detach = function () {
+        _super.prototype.detach.call(this);
+        this.observer.disconnect();
+    };
+    ScrollBlot.prototype.deleteAt = function (index, length) {
+        this.update();
+        if (index === 0 && length === this.length()) {
+            this.children.forEach(function (child) {
+                child.remove();
+            });
+        }
+        else {
+            _super.prototype.deleteAt.call(this, index, length);
+        }
+    };
+    ScrollBlot.prototype.formatAt = function (index, length, name, value) {
+        this.update();
+        _super.prototype.formatAt.call(this, index, length, name, value);
+    };
+    ScrollBlot.prototype.insertAt = function (index, value, def) {
+        this.update();
+        _super.prototype.insertAt.call(this, index, value, def);
+    };
+    ScrollBlot.prototype.optimize = function (mutations, context) {
+        var _this = this;
+        if (mutations === void 0) { mutations = []; }
+        if (context === void 0) { context = {}; }
+        _super.prototype.optimize.call(this, context);
+        // We must modify mutations directly, cannot make copy and then modify
+        var records = [].slice.call(this.observer.takeRecords());
+        // Array.push currently seems to be implemented by a non-tail recursive function
+        // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());
+        while (records.length > 0)
+            mutations.push(records.pop());
+        // TODO use WeakMap
+        var mark = function (blot, markParent) {
+            if (markParent === void 0) { markParent = true; }
+            if (blot == null || blot === _this)
+                return;
+            if (blot.domNode.parentNode == null)
+                return;
+            // @ts-ignore
+            if (blot.domNode[Registry.DATA_KEY].mutations == null) {
+                // @ts-ignore
+                blot.domNode[Registry.DATA_KEY].mutations = [];
+            }
+            if (markParent)
+                mark(blot.parent);
+        };
+        var optimize = function (blot) {
+            // Post-order traversal
+            if (
+            // @ts-ignore
+            blot.domNode[Registry.DATA_KEY] == null ||
+                // @ts-ignore
+                blot.domNode[Registry.DATA_KEY].mutations == null) {
+                return;
+            }
+            if (blot instanceof container_1.default) {
+                blot.children.forEach(optimize);
+            }
+            blot.optimize(context);
+        };
+        var remaining = mutations;
+        for (var i = 0; remaining.length > 0; i += 1) {
+            if (i >= MAX_OPTIMIZE_ITERATIONS) {
+                throw new Error('[Parchment] Maximum optimize iterations reached');
+            }
+            remaining.forEach(function (mutation) {
+                var blot = Registry.find(mutation.target, true);
+                if (blot == null)
+                    return;
+                if (blot.domNode === mutation.target) {
+                    if (mutation.type === 'childList') {
+                        mark(Registry.find(mutation.previousSibling, false));
+                        [].forEach.call(mutation.addedNodes, function (node) {
+                            var child = Registry.find(node, false);
+                            mark(child, false);
+                            if (child instanceof container_1.default) {
+                                child.children.forEach(function (grandChild) {
+                                    mark(grandChild, false);
+                                });
+                            }
+                        });
+                    }
+                    else if (mutation.type === 'attributes') {
+                        mark(blot.prev);
+                    }
+                }
+                mark(blot);
+            });
+            this.children.forEach(optimize);
+            remaining = [].slice.call(this.observer.takeRecords());
+            records = remaining.slice();
+            while (records.length > 0)
+                mutations.push(records.pop());
+        }
+    };
+    ScrollBlot.prototype.update = function (mutations, context) {
+        var _this = this;
+        if (context === void 0) { context = {}; }
+        mutations = mutations || this.observer.takeRecords();
+        // TODO use WeakMap
+        mutations
+            .map(function (mutation) {
+            var blot = Registry.find(mutation.target, true);
+            if (blot == null)
+                return null;
+            // @ts-ignore
+            if (blot.domNode[Registry.DATA_KEY].mutations == null) {
+                // @ts-ignore
+                blot.domNode[Registry.DATA_KEY].mutations = [mutation];
+                return blot;
+            }
+            else {
+                // @ts-ignore
+                blot.domNode[Registry.DATA_KEY].mutations.push(mutation);
+                return null;
+            }
+        })
+            .forEach(function (blot) {
+            if (blot == null ||
+                blot === _this ||
+                //@ts-ignore
+                blot.domNode[Registry.DATA_KEY] == null)
+                return;
+            // @ts-ignore
+            blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);
+        });
+        // @ts-ignore
+        if (this.domNode[Registry.DATA_KEY].mutations != null) {
+            // @ts-ignore
+            _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);
+        }
+        this.optimize(mutations, context);
+    };
+    ScrollBlot.blotName = 'scroll';
+    ScrollBlot.defaultChild = 'block';
+    ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;
+    ScrollBlot.tagName = 'DIV';
+    return ScrollBlot;
+}(container_1.default));
+exports.default = ScrollBlot;
+
+
+/***/ }),
+/* 46 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __extends = (this && this.__extends) || (function () {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+    return function (d, b) {
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+var format_1 = __webpack_require__(18);
+var Registry = __webpack_require__(1);
+// Shallow object comparison
+function isEqual(obj1, obj2) {
+    if (Object.keys(obj1).length !== Object.keys(obj2).length)
+        return false;
+    // @ts-ignore
+    for (var prop in obj1) {
+        // @ts-ignore
+        if (obj1[prop] !== obj2[prop])
+            return false;
+    }
+    return true;
+}
+var InlineBlot = /** @class */ (function (_super) {
+    __extends(InlineBlot, _super);
+    function InlineBlot() {
+        return _super !== null && _super.apply(this, arguments) || this;
+    }
+    InlineBlot.formats = function (domNode) {
+        if (domNode.tagName === InlineBlot.tagName)
+            return undefined;
+        return _super.formats.call(this, domNode);
+    };
+    InlineBlot.prototype.format = function (name, value) {
+        var _this = this;
+        if (name === this.statics.blotName && !value) {
+            this.children.forEach(function (child) {
+                if (!(child instanceof format_1.default)) {
+                    child = child.wrap(InlineBlot.blotName, true);
+                }
+                _this.attributes.copy(child);
+            });
+            this.unwrap();
+        }
+        else {
+            _super.prototype.format.call(this, name, value);
+        }
+    };
+    InlineBlot.prototype.formatAt = function (index, length, name, value) {
+        if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {
+            var blot = this.isolate(index, length);
+            blot.format(name, value);
+        }
+        else {
+            _super.prototype.formatAt.call(this, index, length, name, value);
+        }
+    };
+    InlineBlot.prototype.optimize = function (context) {
+        _super.prototype.optimize.call(this, context);
+        var formats = this.formats();
+        if (Object.keys(formats).length === 0) {
+            return this.unwrap(); // unformatted span
+        }
+        var next = this.next;
+        if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {
+            next.moveChildren(this);
+            next.remove();
+        }
+    };
+    InlineBlot.blotName = 'inline';
+    InlineBlot.scope = Registry.Scope.INLINE_BLOT;
+    InlineBlot.tagName = 'SPAN';
+    return InlineBlot;
+}(format_1.default));
+exports.default = InlineBlot;
+
+
+/***/ }),
+/* 47 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __extends = (this && this.__extends) || (function () {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+    return function (d, b) {
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+var format_1 = __webpack_require__(18);
+var Registry = __webpack_require__(1);
+var BlockBlot = /** @class */ (function (_super) {
+    __extends(BlockBlot, _super);
+    function BlockBlot() {
+        return _super !== null && _super.apply(this, arguments) || this;
+    }
+    BlockBlot.formats = function (domNode) {
+        var tagName = Registry.query(BlockBlot.blotName).tagName;
+        if (domNode.tagName === tagName)
+            return undefined;
+        return _super.formats.call(this, domNode);
+    };
+    BlockBlot.prototype.format = function (name, value) {
+        if (Registry.query(name, Registry.Scope.BLOCK) == null) {
+            return;
+        }
+        else if (name === this.statics.blotName && !value) {
+            this.replaceWith(BlockBlot.blotName);
+        }
+        else {
+            _super.prototype.format.call(this, name, value);
+        }
+    };
+    BlockBlot.prototype.formatAt = function (index, length, name, value) {
+        if (Registry.query(name, Registry.Scope.BLOCK) != null) {
+            this.format(name, value);
+        }
+        else {
+            _super.prototype.formatAt.call(this, index, length, name, value);
+        }
+    };
+    BlockBlot.prototype.insertAt = function (index, value, def) {
+        if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {
+            // Insert text or inline
+            _super.prototype.insertAt.call(this, index, value, def);
+        }
+        else {
+            var after = this.split(index);
+            var blot = Registry.create(value, def);
+            after.parent.insertBefore(blot, after);
+        }
+    };
+    BlockBlot.prototype.update = function (mutations, context) {
+        if (navigator.userAgent.match(/Trident/)) {
+            this.build();
+        }
+        else {
+            _super.prototype.update.call(this, mutations, context);
+        }
+    };
+    BlockBlot.blotName = 'block';
+    BlockBlot.scope = Registry.Scope.BLOCK_BLOT;
+    BlockBlot.tagName = 'P';
+    return BlockBlot;
+}(format_1.default));
+exports.default = BlockBlot;
+
+
+/***/ }),
+/* 48 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __extends = (this && this.__extends) || (function () {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+    return function (d, b) {
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+var leaf_1 = __webpack_require__(19);
+var EmbedBlot = /** @class */ (function (_super) {
+    __extends(EmbedBlot, _super);
+    function EmbedBlot() {
+        return _super !== null && _super.apply(this, arguments) || this;
+    }
+    EmbedBlot.formats = function (domNode) {
+        return undefined;
+    };
+    EmbedBlot.prototype.format = function (name, value) {
+        // super.formatAt wraps, which is what we want in general,
+        // but this allows subclasses to overwrite for formats
+        // that just apply to particular embeds
+        _super.prototype.formatAt.call(this, 0, this.length(), name, value);
+    };
+    EmbedBlot.prototype.formatAt = function (index, length, name, value) {
+        if (index === 0 && length === this.length()) {
+            this.format(name, value);
+        }
+        else {
+            _super.prototype.formatAt.call(this, index, length, name, value);
+        }
+    };
+    EmbedBlot.prototype.formats = function () {
+        return this.statics.formats(this.domNode);
+    };
+    return EmbedBlot;
+}(leaf_1.default));
+exports.default = EmbedBlot;
+
+
+/***/ }),
+/* 49 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var __extends = (this && this.__extends) || (function () {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+    return function (d, b) {
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+var leaf_1 = __webpack_require__(19);
+var Registry = __webpack_require__(1);
+var TextBlot = /** @class */ (function (_super) {
+    __extends(TextBlot, _super);
+    function TextBlot(node) {
+        var _this = _super.call(this, node) || this;
+        _this.text = _this.statics.value(_this.domNode);
+        return _this;
+    }
+    TextBlot.create = function (value) {
+        return document.createTextNode(value);
+    };
+    TextBlot.value = function (domNode) {
+        var text = domNode.data;
+        // @ts-ignore
+        if (text['normalize'])
+            text = text['normalize']();
+        return text;
+    };
+    TextBlot.prototype.deleteAt = function (index, length) {
+        this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);
+    };
+    TextBlot.prototype.index = function (node, offset) {
+        if (this.domNode === node) {
+            return offset;
+        }
+        return -1;
+    };
+    TextBlot.prototype.insertAt = function (index, value, def) {
+        if (def == null) {
+            this.text = this.text.slice(0, index) + value + this.text.slice(index);
+            this.domNode.data = this.text;
+        }
+        else {
+            _super.prototype.insertAt.call(this, index, value, def);
+        }
+    };
+    TextBlot.prototype.length = function () {
+        return this.text.length;
+    };
+    TextBlot.prototype.optimize = function (context) {
+        _super.prototype.optimize.call(this, context);
+        this.text = this.statics.value(this.domNode);
+        if (this.text.length === 0) {
+            this.remove();
+        }
+        else if (this.next instanceof TextBlot && this.next.prev === this) {
+            this.insertAt(this.length(), this.next.value());
+            this.next.remove();
+        }
+    };
+    TextBlot.prototype.position = function (index, inclusive) {
+        if (inclusive === void 0) { inclusive = false; }
+        return [this.domNode, index];
+    };
+    TextBlot.prototype.split = function (index, force) {
+        if (force === void 0) { force = false; }
+        if (!force) {
+            if (index === 0)
+                return this;
+            if (index === this.length())
+                return this.next;
+        }
+        var after = Registry.create(this.domNode.splitText(index));
+        this.parent.insertBefore(after, this.next);
+        this.text = this.statics.value(this.domNode);
+        return after;
+    };
+    TextBlot.prototype.update = function (mutations, context) {
+        var _this = this;
+        if (mutations.some(function (mutation) {
+            return mutation.type === 'characterData' && mutation.target === _this.domNode;
+        })) {
+            this.text = this.statics.value(this.domNode);
+        }
+    };
+    TextBlot.prototype.value = function () {
+        return this.text;
+    };
+    TextBlot.blotName = 'text';
+    TextBlot.scope = Registry.Scope.INLINE_BLOT;
+    return TextBlot;
+}(leaf_1.default));
+exports.default = TextBlot;
+
+
+/***/ }),
+/* 50 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var elem = document.createElement('div');
+elem.classList.toggle('test-class', false);
+if (elem.classList.contains('test-class')) {
+  var _toggle = DOMTokenList.prototype.toggle;
+  DOMTokenList.prototype.toggle = function (token, force) {
+    if (arguments.length > 1 && !this.contains(token) === !force) {
+      return force;
+    } else {
+      return _toggle.call(this, token);
+    }
+  };
+}
+
+if (!String.prototype.startsWith) {
+  String.prototype.startsWith = function (searchString, position) {
+    position = position || 0;
+    return this.substr(position, searchString.length) === searchString;
+  };
+}
+
+if (!String.prototype.endsWith) {
+  String.prototype.endsWith = function (searchString, position) {
+    var subjectString = this.toString();
+    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {
+      position = subjectString.length;
+    }
+    position -= searchString.length;
+    var lastIndex = subjectString.indexOf(searchString, position);
+    return lastIndex !== -1 && lastIndex === position;
+  };
+}
+
+if (!Array.prototype.find) {
+  Object.defineProperty(Array.prototype, "find", {
+    value: function value(predicate) {
+      if (this === null) {
+        throw new TypeError('Array.prototype.find called on null or undefined');
+      }
+      if (typeof predicate !== 'function') {
+        throw new TypeError('predicate must be a function');
+      }
+      var list = Object(this);
+      var length = list.length >>> 0;
+      var thisArg = arguments[1];
+      var value;
+
+      for (var i = 0; i < length; i++) {
+        value = list[i];
+        if (predicate.call(thisArg, value, i, list)) {
+          return value;
+        }
+      }
+      return undefined;
+    }
+  });
+}
+
+document.addEventListener("DOMContentLoaded", function () {
+  // Disable resizing in Firefox
+  document.execCommand("enableObjectResizing", false, false);
+  // Disable automatic linkifying in IE11
+  document.execCommand("autoUrlDetect", false, false);
+});
+
+/***/ }),
+/* 51 */
+/***/ (function(module, exports) {
+
+/**
+ * This library modifies the diff-patch-match library by Neil Fraser
+ * by removing the patch and match functionality and certain advanced
+ * options in the diff function. The original license is as follows:
+ *
+ * ===
+ *
+ * Diff Match and Patch
+ *
+ * Copyright 2006 Google Inc.
+ * http://code.google.com/p/google-diff-match-patch/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/**
+ * The data structure representing a diff is an array of tuples:
+ * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]
+ * which means: delete 'Hello', add 'Goodbye' and keep ' world.'
+ */
+var DIFF_DELETE = -1;
+var DIFF_INSERT = 1;
+var DIFF_EQUAL = 0;
+
+
+/**
+ * Find the differences between two texts.  Simplifies the problem by stripping
+ * any common prefix or suffix off the texts before diffing.
+ * @param {string} text1 Old string to be diffed.
+ * @param {string} text2 New string to be diffed.
+ * @param {Int} cursor_pos Expected edit position in text1 (optional)
+ * @return {Array} Array of diff tuples.
+ */
+function diff_main(text1, text2, cursor_pos) {
+  // Check for equality (speedup).
+  if (text1 == text2) {
+    if (text1) {
+      return [[DIFF_EQUAL, text1]];
+    }
+    return [];
+  }
+
+  // Check cursor_pos within bounds
+  if (cursor_pos < 0 || text1.length < cursor_pos) {
+    cursor_pos = null;
+  }
+
+  // Trim off common prefix (speedup).
+  var commonlength = diff_commonPrefix(text1, text2);
+  var commonprefix = text1.substring(0, commonlength);
+  text1 = text1.substring(commonlength);
+  text2 = text2.substring(commonlength);
+
+  // Trim off common suffix (speedup).
+  commonlength = diff_commonSuffix(text1, text2);
+  var commonsuffix = text1.substring(text1.length - commonlength);
+  text1 = text1.substring(0, text1.length - commonlength);
+  text2 = text2.substring(0, text2.length - commonlength);
+
+  // Compute the diff on the middle block.
+  var diffs = diff_compute_(text1, text2);
+
+  // Restore the prefix and suffix.
+  if (commonprefix) {
+    diffs.unshift([DIFF_EQUAL, commonprefix]);
+  }
+  if (commonsuffix) {
+    diffs.push([DIFF_EQUAL, commonsuffix]);
+  }
+  diff_cleanupMerge(diffs);
+  if (cursor_pos != null) {
+    diffs = fix_cursor(diffs, cursor_pos);
+  }
+  diffs = fix_emoji(diffs);
+  return diffs;
+};
+
+
+/**
+ * Find the differences between two texts.  Assumes that the texts do not
+ * have any common prefix or suffix.
+ * @param {string} text1 Old string to be diffed.
+ * @param {string} text2 New string to be diffed.
+ * @return {Array} Array of diff tuples.
+ */
+function diff_compute_(text1, text2) {
+  var diffs;
+
+  if (!text1) {
+    // Just add some text (speedup).
+    return [[DIFF_INSERT, text2]];
+  }
+
+  if (!text2) {
+    // Just delete some text (speedup).
+    return [[DIFF_DELETE, text1]];
+  }
+
+  var longtext = text1.length > text2.length ? text1 : text2;
+  var shorttext = text1.length > text2.length ? text2 : text1;
+  var i = longtext.indexOf(shorttext);
+  if (i != -1) {
+    // Shorter text is inside the longer text (speedup).
+    diffs = [[DIFF_INSERT, longtext.substring(0, i)],
+             [DIFF_EQUAL, shorttext],
+             [DIFF_INSERT, longtext.substring(i + shorttext.length)]];
+    // Swap insertions for deletions if diff is reversed.
+    if (text1.length > text2.length) {
+      diffs[0][0] = diffs[2][0] = DIFF_DELETE;
+    }
+    return diffs;
+  }
+
+  if (shorttext.length == 1) {
+    // Single character string.
+    // After the previous speedup, the character can't be an equality.
+    return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];
+  }
+
+  // Check to see if the problem can be split in two.
+  var hm = diff_halfMatch_(text1, text2);
+  if (hm) {
+    // A half-match was found, sort out the return data.
+    var text1_a = hm[0];
+    var text1_b = hm[1];
+    var text2_a = hm[2];
+    var text2_b = hm[3];
+    var mid_common = hm[4];
+    // Send both pairs off for separate processing.
+    var diffs_a = diff_main(text1_a, text2_a);
+    var diffs_b = diff_main(text1_b, text2_b);
+    // Merge the results.
+    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);
+  }
+
+  return diff_bisect_(text1, text2);
+};
+
+
+/**
+ * Find the 'middle snake' of a diff, split the problem in two
+ * and return the recursively constructed diff.
+ * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.
+ * @param {string} text1 Old string to be diffed.
+ * @param {string} text2 New string to be diffed.
+ * @return {Array} Array of diff tuples.
+ * @private
+ */
+function diff_bisect_(text1, text2) {
+  // Cache the text lengths to prevent multiple calls.
+  var text1_length = text1.length;
+  var text2_length = text2.length;
+  var max_d = Math.ceil((text1_length + text2_length) / 2);
+  var v_offset = max_d;
+  var v_length = 2 * max_d;
+  var v1 = new Array(v_length);
+  var v2 = new Array(v_length);
+  // Setting all elements to -1 is faster in Chrome & Firefox than mixing
+  // integers and undefined.
+  for (var x = 0; x < v_length; x++) {
+    v1[x] = -1;
+    v2[x] = -1;
+  }
+  v1[v_offset + 1] = 0;
+  v2[v_offset + 1] = 0;
+  var delta = text1_length - text2_length;
+  // If the total number of characters is odd, then the front path will collide
+  // with the reverse path.
+  var front = (delta % 2 != 0);
+  // Offsets for start and end of k loop.
+  // Prevents mapping of space beyond the grid.
+  var k1start = 0;
+  var k1end = 0;
+  var k2start = 0;
+  var k2end = 0;
+  for (var d = 0; d < max_d; d++) {
+    // Walk the front path one step.
+    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {
+      var k1_offset = v_offset + k1;
+      var x1;
+      if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {
+        x1 = v1[k1_offset + 1];
+      } else {
+        x1 = v1[k1_offset - 1] + 1;
+      }
+      var y1 = x1 - k1;
+      while (x1 < text1_length && y1 < text2_length &&
+             text1.charAt(x1) == text2.charAt(y1)) {
+        x1++;
+        y1++;
+      }
+      v1[k1_offset] = x1;
+      if (x1 > text1_length) {
+        // Ran off the right of the graph.
+        k1end += 2;
+      } else if (y1 > text2_length) {
+        // Ran off the bottom of the graph.
+        k1start += 2;
+      } else if (front) {
+        var k2_offset = v_offset + delta - k1;
+        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {
+          // Mirror x2 onto top-left coordinate system.
+          var x2 = text1_length - v2[k2_offset];
+          if (x1 >= x2) {
+            // Overlap detected.
+            return diff_bisectSplit_(text1, text2, x1, y1);
+          }
+        }
+      }
+    }
+
+    // Walk the reverse path one step.
+    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {
+      var k2_offset = v_offset + k2;
+      var x2;
+      if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {
+        x2 = v2[k2_offset + 1];
+      } else {
+        x2 = v2[k2_offset - 1] + 1;
+      }
+      var y2 = x2 - k2;
+      while (x2 < text1_length && y2 < text2_length &&
+             text1.charAt(text1_length - x2 - 1) ==
+             text2.charAt(text2_length - y2 - 1)) {
+        x2++;
+        y2++;
+      }
+      v2[k2_offset] = x2;
+      if (x2 > text1_length) {
+        // Ran off the left of the graph.
+        k2end += 2;
+      } else if (y2 > text2_length) {
+        // Ran off the top of the graph.
+        k2start += 2;
+      } else if (!front) {
+        var k1_offset = v_offset + delta - k2;
+        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {
+          var x1 = v1[k1_offset];
+          var y1 = v_offset + x1 - k1_offset;
+          // Mirror x2 onto top-left coordinate system.
+          x2 = text1_length - x2;
+          if (x1 >= x2) {
+            // Overlap detected.
+            return diff_bisectSplit_(text1, text2, x1, y1);
+          }
+        }
+      }
+    }
+  }
+  // Diff took too long and hit the deadline or
+  // number of diffs equals number of characters, no commonality at all.
+  return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];
+};
+
+
+/**
+ * Given the location of the 'middle snake', split the diff in two parts
+ * and recurse.
+ * @param {string} text1 Old string to be diffed.
+ * @param {string} text2 New string to be diffed.
+ * @param {number} x Index of split point in text1.
+ * @param {number} y Index of split point in text2.
+ * @return {Array} Array of diff tuples.
+ */
+function diff_bisectSplit_(text1, text2, x, y) {
+  var text1a = text1.substring(0, x);
+  var text2a = text2.substring(0, y);
+  var text1b = text1.substring(x);
+  var text2b = text2.substring(y);
+
+  // Compute both diffs serially.
+  var diffs = diff_main(text1a, text2a);
+  var diffsb = diff_main(text1b, text2b);
+
+  return diffs.concat(diffsb);
+};
+
+
+/**
+ * Determine the common prefix of two strings.
+ * @param {string} text1 First string.
+ * @param {string} text2 Second string.
+ * @return {number} The number of characters common to the start of each
+ *     string.
+ */
+function diff_commonPrefix(text1, text2) {
+  // Quick check for common null cases.
+  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {
+    return 0;
+  }
+  // Binary search.
+  // Performance analysis: http://neil.fraser.name/news/2007/10/09/
+  var pointermin = 0;
+  var pointermax = Math.min(text1.length, text2.length);
+  var pointermid = pointermax;
+  var pointerstart = 0;
+  while (pointermin < pointermid) {
+    if (text1.substring(pointerstart, pointermid) ==
+        text2.substring(pointerstart, pointermid)) {
+      pointermin = pointermid;
+      pointerstart = pointermin;
+    } else {
+      pointermax = pointermid;
+    }
+    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
+  }
+  return pointermid;
+};
+
+
+/**
+ * Determine the common suffix of two strings.
+ * @param {string} text1 First string.
+ * @param {string} text2 Second string.
+ * @return {number} The number of characters common to the end of each string.
+ */
+function diff_commonSuffix(text1, text2) {
+  // Quick check for common null cases.
+  if (!text1 || !text2 ||
+      text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {
+    return 0;
+  }
+  // Binary search.
+  // Performance analysis: http://neil.fraser.name/news/2007/10/09/
+  var pointermin = 0;
+  var pointermax = Math.min(text1.length, text2.length);
+  var pointermid = pointermax;
+  var pointerend = 0;
+  while (pointermin < pointermid) {
+    if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==
+        text2.substring(text2.length - pointermid, text2.length - pointerend)) {
+      pointermin = pointermid;
+      pointerend = pointermin;
+    } else {
+      pointermax = pointermid;
+    }
+    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
+  }
+  return pointermid;
+};
+
+
+/**
+ * Do the two texts share a substring which is at least half the length of the
+ * longer text?
+ * This speedup can produce non-minimal diffs.
+ * @param {string} text1 First string.
+ * @param {string} text2 Second string.
+ * @return {Array.<string>} Five element Array, containing the prefix of
+ *     text1, the suffix of text1, the prefix of text2, the suffix of
+ *     text2 and the common middle.  Or null if there was no match.
+ */
+function diff_halfMatch_(text1, text2) {
+  var longtext = text1.length > text2.length ? text1 : text2;
+  var shorttext = text1.length > text2.length ? text2 : text1;
+  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {
+    return null;  // Pointless.
+  }
+
+  /**
+   * Does a substring of shorttext exist within longtext such that the substring
+   * is at least half the length of longtext?
+   * Closure, but does not reference any external variables.
+   * @param {string} longtext Longer string.
+   * @param {string} shorttext Shorter string.
+   * @param {number} i Start index of quarter length substring within longtext.
+   * @return {Array.<string>} Five element Array, containing the prefix of
+   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix
+   *     of shorttext and the common middle.  Or null if there was no match.
+   * @private
+   */
+  function diff_halfMatchI_(longtext, shorttext, i) {
+    // Start with a 1/4 length substring at position i as a seed.
+    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));
+    var j = -1;
+    var best_common = '';
+    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;
+    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {
+      var prefixLength = diff_commonPrefix(longtext.substring(i),
+                                           shorttext.substring(j));
+      var suffixLength = diff_commonSuffix(longtext.substring(0, i),
+                                           shorttext.substring(0, j));
+      if (best_common.length < suffixLength + prefixLength) {
+        best_common = shorttext.substring(j - suffixLength, j) +
+            shorttext.substring(j, j + prefixLength);
+        best_longtext_a = longtext.substring(0, i - suffixLength);
+        best_longtext_b = longtext.substring(i + prefixLength);
+        best_shorttext_a = shorttext.substring(0, j - suffixLength);
+        best_shorttext_b = shorttext.substring(j + prefixLength);
+      }
+    }
+    if (best_common.length * 2 >= longtext.length) {
+      return [best_longtext_a, best_longtext_b,
+              best_shorttext_a, best_shorttext_b, best_common];
+    } else {
+      return null;
+    }
+  }
+
+  // First check if the second quarter is the seed for a half-match.
+  var hm1 = diff_halfMatchI_(longtext, shorttext,
+                             Math.ceil(longtext.length / 4));
+  // Check again based on the third quarter.
+  var hm2 = diff_halfMatchI_(longtext, shorttext,
+                             Math.ceil(longtext.length / 2));
+  var hm;
+  if (!hm1 && !hm2) {
+    return null;
+  } else if (!hm2) {
+    hm = hm1;
+  } else if (!hm1) {
+    hm = hm2;
+  } else {
+    // Both matched.  Select the longest.
+    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;
+  }
+
+  // A half-match was found, sort out the return data.
+  var text1_a, text1_b, text2_a, text2_b;
+  if (text1.length > text2.length) {
+    text1_a = hm[0];
+    text1_b = hm[1];
+    text2_a = hm[2];
+    text2_b = hm[3];
+  } else {
+    text2_a = hm[0];
+    text2_b = hm[1];
+    text1_a = hm[2];
+    text1_b = hm[3];
+  }
+  var mid_common = hm[4];
+  return [text1_a, text1_b, text2_a, text2_b, mid_common];
+};
+
+
+/**
+ * Reorder and merge like edit sections.  Merge equalities.
+ * Any edit section can move as long as it doesn't cross an equality.
+ * @param {Array} diffs Array of diff tuples.
+ */
+function diff_cleanupMerge(diffs) {
+  diffs.push([DIFF_EQUAL, '']);  // Add a dummy entry at the end.
+  var pointer = 0;
+  var count_delete = 0;
+  var count_insert = 0;
+  var text_delete = '';
+  var text_insert = '';
+  var commonlength;
+  while (pointer < diffs.length) {
+    switch (diffs[pointer][0]) {
+      case DIFF_INSERT:
+        count_insert++;
+        text_insert += diffs[pointer][1];
+        pointer++;
+        break;
+      case DIFF_DELETE:
+        count_delete++;
+        text_delete += diffs[pointer][1];
+        pointer++;
+        break;
+      case DIFF_EQUAL:
+        // Upon reaching an equality, check for prior redundancies.
+        if (count_delete + count_insert > 1) {
+          if (count_delete !== 0 && count_insert !== 0) {
+            // Factor out any common prefixies.
+            commonlength = diff_commonPrefix(text_insert, text_delete);
+            if (commonlength !== 0) {
+              if ((pointer - count_delete - count_insert) > 0 &&
+                  diffs[pointer - count_delete - count_insert - 1][0] ==
+                  DIFF_EQUAL) {
+                diffs[pointer - count_delete - count_insert - 1][1] +=
+                    text_insert.substring(0, commonlength);
+              } else {
+                diffs.splice(0, 0, [DIFF_EQUAL,
+                                    text_insert.substring(0, commonlength)]);
+                pointer++;
+              }
+              text_insert = text_insert.substring(commonlength);
+              text_delete = text_delete.substring(commonlength);
+            }
+            // Factor out any common suffixies.
+            commonlength = diff_commonSuffix(text_insert, text_delete);
+            if (commonlength !== 0) {
+              diffs[pointer][1] = text_insert.substring(text_insert.length -
+                  commonlength) + diffs[pointer][1];
+              text_insert = text_insert.substring(0, text_insert.length -
+                  commonlength);
+              text_delete = text_delete.substring(0, text_delete.length -
+                  commonlength);
+            }
+          }
+          // Delete the offending records and add the merged ones.
+          if (count_delete === 0) {
+            diffs.splice(pointer - count_insert,
+                count_delete + count_insert, [DIFF_INSERT, text_insert]);
+          } else if (count_insert === 0) {
+            diffs.splice(pointer - count_delete,
+                count_delete + count_insert, [DIFF_DELETE, text_delete]);
+          } else {
+            diffs.splice(pointer - count_delete - count_insert,
+                count_delete + count_insert, [DIFF_DELETE, text_delete],
+                [DIFF_INSERT, text_insert]);
+          }
+          pointer = pointer - count_delete - count_insert +
+                    (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;
+        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {
+          // Merge this equality with the previous one.
+          diffs[pointer - 1][1] += diffs[pointer][1];
+          diffs.splice(pointer, 1);
+        } else {
+          pointer++;
+        }
+        count_insert = 0;
+        count_delete = 0;
+        text_delete = '';
+        text_insert = '';
+        break;
+    }
+  }
+  if (diffs[diffs.length - 1][1] === '') {
+    diffs.pop();  // Remove the dummy entry at the end.
+  }
+
+  // Second pass: look for single edits surrounded on both sides by equalities
+  // which can be shifted sideways to eliminate an equality.
+  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC
+  var changes = false;
+  pointer = 1;
+  // Intentionally ignore the first and last element (don't need checking).
+  while (pointer < diffs.length - 1) {
+    if (diffs[pointer - 1][0] == DIFF_EQUAL &&
+        diffs[pointer + 1][0] == DIFF_EQUAL) {
+      // This is a single edit surrounded by equalities.
+      if (diffs[pointer][1].substring(diffs[pointer][1].length -
+          diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {
+        // Shift the edit over the previous equality.
+        diffs[pointer][1] = diffs[pointer - 1][1] +
+            diffs[pointer][1].substring(0, diffs[pointer][1].length -
+                                        diffs[pointer - 1][1].length);
+        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];
+        diffs.splice(pointer - 1, 1);
+        changes = true;
+      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==
+          diffs[pointer + 1][1]) {
+        // Shift the edit over the next equality.
+        diffs[pointer - 1][1] += diffs[pointer + 1][1];
+        diffs[pointer][1] =
+            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +
+            diffs[pointer + 1][1];
+        diffs.splice(pointer + 1, 1);
+        changes = true;
+      }
+    }
+    pointer++;
+  }
+  // If shifts were made, the diff needs reordering and another shift sweep.
+  if (changes) {
+    diff_cleanupMerge(diffs);
+  }
+};
+
+
+var diff = diff_main;
+diff.INSERT = DIFF_INSERT;
+diff.DELETE = DIFF_DELETE;
+diff.EQUAL = DIFF_EQUAL;
+
+module.exports = diff;
+
+/*
+ * Modify a diff such that the cursor position points to the start of a change:
+ * E.g.
+ *   cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)
+ *     => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]
+ *   cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)
+ *     => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]
+ *
+ * @param {Array} diffs Array of diff tuples
+ * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!
+ * @return {Array} A tuple [cursor location in the modified diff, modified diff]
+ */
+function cursor_normalize_diff (diffs, cursor_pos) {
+  if (cursor_pos === 0) {
+    return [DIFF_EQUAL, diffs];
+  }
+  for (var current_pos = 0, i = 0; i < diffs.length; i++) {
+    var d = diffs[i];
+    if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {
+      var next_pos = current_pos + d[1].length;
+      if (cursor_pos === next_pos) {
+        return [i + 1, diffs];
+      } else if (cursor_pos < next_pos) {
+        // copy to prevent side effects
+        diffs = diffs.slice();
+        // split d into two diff changes
+        var split_pos = cursor_pos - current_pos;
+        var d_left = [d[0], d[1].slice(0, split_pos)];
+        var d_right = [d[0], d[1].slice(split_pos)];
+        diffs.splice(i, 1, d_left, d_right);
+        return [i + 1, diffs];
+      } else {
+        current_pos = next_pos;
+      }
+    }
+  }
+  throw new Error('cursor_pos is out of bounds!')
+}
+
+/*
+ * Modify a diff such that the edit position is "shifted" to the proposed edit location (cursor_position).
+ *
+ * Case 1)
+ *   Check if a naive shift is possible:
+ *     [0, X], [ 1, Y] -> [ 1, Y], [0, X]    (if X + Y === Y + X)
+ *     [0, X], [-1, Y] -> [-1, Y], [0, X]    (if X + Y === Y + X) - holds same result
+ * Case 2)
+ *   Check if the following shifts are possible:
+ *     [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']
+ *     [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']
+ *         ^            ^
+ *         d          d_next
+ *
+ * @param {Array} diffs Array of diff tuples
+ * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!
+ * @return {Array} Array of diff tuples
+ */
+function fix_cursor (diffs, cursor_pos) {
+  var norm = cursor_normalize_diff(diffs, cursor_pos);
+  var ndiffs = norm[1];
+  var cursor_pointer = norm[0];
+  var d = ndiffs[cursor_pointer];
+  var d_next = ndiffs[cursor_pointer + 1];
+
+  if (d == null) {
+    // Text was deleted from end of original string,
+    // cursor is now out of bounds in new string
+    return diffs;
+  } else if (d[0] !== DIFF_EQUAL) {
+    // A modification happened at the cursor location.
+    // This is the expected outcome, so we can return the original diff.
+    return diffs;
+  } else {
+    if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {
+      // Case 1)
+      // It is possible to perform a naive shift
+      ndiffs.splice(cursor_pointer, 2, d_next, d)
+      return merge_tuples(ndiffs, cursor_pointer, 2)
+    } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {
+      // Case 2)
+      // d[1] is a prefix of d_next[1]
+      // We can assume that d_next[0] !== 0, since d[0] === 0
+      // Shift edit locations..
+      ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);
+      var suffix = d_next[1].slice(d[1].length);
+      if (suffix.length > 0) {
+        ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);
+      }
+      return merge_tuples(ndiffs, cursor_pointer, 3)
+    } else {
+      // Not possible to perform any modification
+      return diffs;
+    }
+  }
+}
+
+/*
+ * Check diff did not split surrogate pairs.
+ * Ex. [0, '\uD83D'], [-1, '\uDC36'], [1, '\uDC2F'] -> [-1, '\uD83D\uDC36'], [1, '\uD83D\uDC2F']
+ *     '\uD83D\uDC36' === '🐶', '\uD83D\uDC2F' === '🐯'
+ *
+ * @param {Array} diffs Array of diff tuples
+ * @return {Array} Array of diff tuples
+ */
+function fix_emoji (diffs) {
+  var compact = false;
+  var starts_with_pair_end = function(str) {
+    return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;
+  }
+  var ends_with_pair_start = function(str) {
+    return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;
+  }
+  for (var i = 2; i < diffs.length; i += 1) {
+    if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&
+        diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&
+        diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {
+      compact = true;
+
+      diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];
+      diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];
+
+      diffs[i-2][1] = diffs[i-2][1].slice(0, -1);
+    }
+  }
+  if (!compact) {
+    return diffs;
+  }
+  var fixed_diffs = [];
+  for (var i = 0; i < diffs.length; i += 1) {
+    if (diffs[i][1].length > 0) {
+      fixed_diffs.push(diffs[i]);
+    }
+  }
+  return fixed_diffs;
+}
+
+/*
+ * Try to merge tuples with their neigbors in a given range.
+ * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']
+ *
+ * @param {Array} diffs Array of diff tuples.
+ * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).
+ * @param {Int} length Number of consecutive elements to check.
+ * @return {Array} Array of merged diff tuples.
+ */
+function merge_tuples (diffs, start, length) {
+  // Check from (start-1) to (start+length).
+  for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {
+    if (i + 1 < diffs.length) {
+      var left_d = diffs[i];
+      var right_d = diffs[i+1];
+      if (left_d[0] === right_d[1]) {
+        diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);
+      }
+    }
+  }
+  return diffs;
+}
+
+
+/***/ }),
+/* 52 */
+/***/ (function(module, exports) {
+
+exports = module.exports = typeof Object.keys === 'function'
+  ? Object.keys : shim;
+
+exports.shim = shim;
+function shim (obj) {
+  var keys = [];
+  for (var key in obj) keys.push(key);
+  return keys;
+}
+
+
+/***/ }),
+/* 53 */
+/***/ (function(module, exports) {
+
+var supportsArgumentsClass = (function(){
+  return Object.prototype.toString.call(arguments)
+})() == '[object Arguments]';
+
+exports = module.exports = supportsArgumentsClass ? supported : unsupported;
+
+exports.supported = supported;
+function supported(object) {
+  return Object.prototype.toString.call(object) == '[object Arguments]';
+};
+
+exports.unsupported = unsupported;
+function unsupported(object){
+  return object &&
+    typeof object == 'object' &&
+    typeof object.length == 'number' &&
+    Object.prototype.hasOwnProperty.call(object, 'callee') &&
+    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||
+    false;
+};
+
+
+/***/ }),
+/* 54 */
+/***/ (function(module, exports) {
+
+'use strict';
+
+var has = Object.prototype.hasOwnProperty
+  , prefix = '~';
+
+/**
+ * Constructor to create a storage for our `EE` objects.
+ * An `Events` instance is a plain object whose properties are event names.
+ *
+ * @constructor
+ * @api private
+ */
+function Events() {}
+
+//
+// We try to not inherit from `Object.prototype`. In some engines creating an
+// instance in this way is faster than calling `Object.create(null)` directly.
+// If `Object.create(null)` is not supported we prefix the event names with a
+// character to make sure that the built-in object properties are not
+// overridden or used as an attack vector.
+//
+if (Object.create) {
+  Events.prototype = Object.create(null);
+
+  //
+  // This hack is needed because the `__proto__` property is still inherited in
+  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.
+  //
+  if (!new Events().__proto__) prefix = false;
+}
+
+/**
+ * Representation of a single event listener.
+ *
+ * @param {Function} fn The listener function.
+ * @param {Mixed} context The context to invoke the listener with.
+ * @param {Boolean} [once=false] Specify if the listener is a one-time listener.
+ * @constructor
+ * @api private
+ */
+function EE(fn, context, once) {
+  this.fn = fn;
+  this.context = context;
+  this.once = once || false;
+}
+
+/**
+ * Minimal `EventEmitter` interface that is molded against the Node.js
+ * `EventEmitter` interface.
+ *
+ * @constructor
+ * @api public
+ */
+function EventEmitter() {
+  this._events = new Events();
+  this._eventsCount = 0;
+}
+
+/**
+ * Return an array listing the events for which the emitter has registered
+ * listeners.
+ *
+ * @returns {Array}
+ * @api public
+ */
+EventEmitter.prototype.eventNames = function eventNames() {
+  var names = []
+    , events
+    , name;
+
+  if (this._eventsCount === 0) return names;
+
+  for (name in (events = this._events)) {
+    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
+  }
+
+  if (Object.getOwnPropertySymbols) {
+    return names.concat(Object.getOwnPropertySymbols(events));
+  }
+
+  return names;
+};
+
+/**
+ * Return the listeners registered for a given event.
+ *
+ * @param {String|Symbol} event The event name.
+ * @param {Boolean} exists Only check if there are listeners.
+ * @returns {Array|Boolean}
+ * @api public
+ */
+EventEmitter.prototype.listeners = function listeners(event, exists) {
+  var evt = prefix ? prefix + event : event
+    , available = this._events[evt];
+
+  if (exists) return !!available;
+  if (!available) return [];
+  if (available.fn) return [available.fn];
+
+  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {
+    ee[i] = available[i].fn;
+  }
+
+  return ee;
+};
+
+/**
+ * Calls each of the listeners registered for a given event.
+ *
+ * @param {String|Symbol} event The event name.
+ * @returns {Boolean} `true` if the event had listeners, else `false`.
+ * @api public
+ */
+EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
+  var evt = prefix ? prefix + event : event;
+
+  if (!this._events[evt]) return false;
+
+  var listeners = this._events[evt]
+    , len = arguments.length
+    , args
+    , i;
+
+  if (listeners.fn) {
+    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);
+
+    switch (len) {
+      case 1: return listeners.fn.call(listeners.context), true;
+      case 2: return listeners.fn.call(listeners.context, a1), true;
+      case 3: return listeners.fn.call(listeners.context, a1, a2), true;
+      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;
+      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
+      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
+    }
+
+    for (i = 1, args = new Array(len -1); i < len; i++) {
+      args[i - 1] = arguments[i];
+    }
+
+    listeners.fn.apply(listeners.context, args);
+  } else {
+    var length = listeners.length
+      , j;
+
+    for (i = 0; i < length; i++) {
+      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);
+
+      switch (len) {
+        case 1: listeners[i].fn.call(listeners[i].context); break;
+        case 2: listeners[i].fn.call(listeners[i].context, a1); break;
+        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;
+        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;
+        default:
+          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {
+            args[j - 1] = arguments[j];
+          }
+
+          listeners[i].fn.apply(listeners[i].context, args);
+      }
+    }
+  }
+
+  return true;
+};
+
+/**
+ * Add a listener for a given event.
+ *
+ * @param {String|Symbol} event The event name.
+ * @param {Function} fn The listener function.
+ * @param {Mixed} [context=this] The context to invoke the listener with.
+ * @returns {EventEmitter} `this`.
+ * @api public
+ */
+EventEmitter.prototype.on = function on(event, fn, context) {
+  var listener = new EE(fn, context || this)
+    , evt = prefix ? prefix + event : event;
+
+  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;
+  else if (!this._events[evt].fn) this._events[evt].push(listener);
+  else this._events[evt] = [this._events[evt], listener];
+
+  return this;
+};
+
+/**
+ * Add a one-time listener for a given event.
+ *
+ * @param {String|Symbol} event The event name.
+ * @param {Function} fn The listener function.
+ * @param {Mixed} [context=this] The context to invoke the listener with.
+ * @returns {EventEmitter} `this`.
+ * @api public
+ */
+EventEmitter.prototype.once = function once(event, fn, context) {
+  var listener = new EE(fn, context || this, true)
+    , evt = prefix ? prefix + event : event;
+
+  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;
+  else if (!this._events[evt].fn) this._events[evt].push(listener);
+  else this._events[evt] = [this._events[evt], listener];
+
+  return this;
+};
+
+/**
+ * Remove the listeners of a given event.
+ *
+ * @param {String|Symbol} event The event name.
+ * @param {Function} fn Only remove the listeners that match this function.
+ * @param {Mixed} context Only remove the listeners that have this context.
+ * @param {Boolean} once Only remove one-time listeners.
+ * @returns {EventEmitter} `this`.
+ * @api public
+ */
+EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
+  var evt = prefix ? prefix + event : event;
+
+  if (!this._events[evt]) return this;
+  if (!fn) {
+    if (--this._eventsCount === 0) this._events = new Events();
+    else delete this._events[evt];
+    return this;
+  }
+
+  var listeners = this._events[evt];
+
+  if (listeners.fn) {
+    if (
+         listeners.fn === fn
+      && (!once || listeners.once)
+      && (!context || listeners.context === context)
+    ) {
+      if (--this._eventsCount === 0) this._events = new Events();
+      else delete this._events[evt];
+    }
+  } else {
+    for (var i = 0, events = [], length = listeners.length; i < length; i++) {
+      if (
+           listeners[i].fn !== fn
+        || (once && !listeners[i].once)
+        || (context && listeners[i].context !== context)
+      ) {
+        events.push(listeners[i]);
+      }
+    }
+
+    //
+    // Reset the array, or remove it completely if we have no more listeners.
+    //
+    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
+    else if (--this._eventsCount === 0) this._events = new Events();
+    else delete this._events[evt];
+  }
+
+  return this;
+};
+
+/**
+ * Remove all listeners, or those of the specified event.
+ *
+ * @param {String|Symbol} [event] The event name.
+ * @returns {EventEmitter} `this`.
+ * @api public
+ */
+EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
+  var evt;
+
+  if (event) {
+    evt = prefix ? prefix + event : event;
+    if (this._events[evt]) {
+      if (--this._eventsCount === 0) this._events = new Events();
+      else delete this._events[evt];
+    }
+  } else {
+    this._events = new Events();
+    this._eventsCount = 0;
+  }
+
+  return this;
+};
+
+//
+// Alias methods names because people roll like that.
+//
+EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
+EventEmitter.prototype.addListener = EventEmitter.prototype.on;
+
+//
+// This function doesn't apply anymore.
+//
+EventEmitter.prototype.setMaxListeners = function setMaxListeners() {
+  return this;
+};
+
+//
+// Expose the prefix.
+//
+EventEmitter.prefixed = prefix;
+
+//
+// Allow `EventEmitter` to be imported as module namespace.
+//
+EventEmitter.EventEmitter = EventEmitter;
+
+//
+// Expose the module.
+//
+if ('undefined' !== typeof module) {
+  module.exports = EventEmitter;
+}
+
+
+/***/ }),
+/* 55 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _extend2 = __webpack_require__(3);
+
+var _extend3 = _interopRequireDefault(_extend2);
+
+var _quillDelta = __webpack_require__(2);
+
+var _quillDelta2 = _interopRequireDefault(_quillDelta);
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _quill = __webpack_require__(5);
+
+var _quill2 = _interopRequireDefault(_quill);
+
+var _logger = __webpack_require__(10);
+
+var _logger2 = _interopRequireDefault(_logger);
+
+var _module = __webpack_require__(9);
+
+var _module2 = _interopRequireDefault(_module);
+
+var _align = __webpack_require__(36);
+
+var _background = __webpack_require__(37);
+
+var _code = __webpack_require__(13);
+
+var _code2 = _interopRequireDefault(_code);
+
+var _color = __webpack_require__(26);
+
+var _direction = __webpack_require__(38);
+
+var _font = __webpack_require__(39);
+
+var _size = __webpack_require__(40);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var debug = (0, _logger2.default)('quill:clipboard');
+
+var DOM_KEY = '__ql-matcher';
+
+var CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];
+
+var ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {
+  memo[attr.keyName] = attr;
+  return memo;
+}, {});
+
+var STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {
+  memo[attr.keyName] = attr;
+  return memo;
+}, {});
+
+var Clipboard = function (_Module) {
+  _inherits(Clipboard, _Module);
+
+  function Clipboard(quill, options) {
+    _classCallCheck(this, Clipboard);
+
+    var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));
+
+    _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));
+    _this.container = _this.quill.addContainer('ql-clipboard');
+    _this.container.setAttribute('contenteditable', true);
+    _this.container.setAttribute('tabindex', -1);
+    _this.matchers = [];
+    CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {
+      var _ref2 = _slicedToArray(_ref, 2),
+          selector = _ref2[0],
+          matcher = _ref2[1];
+
+      if (!options.matchVisual && matcher === matchSpacing) return;
+      _this.addMatcher(selector, matcher);
+    });
+    return _this;
+  }
+
+  _createClass(Clipboard, [{
+    key: 'addMatcher',
+    value: function addMatcher(selector, matcher) {
+      this.matchers.push([selector, matcher]);
+    }
+  }, {
+    key: 'convert',
+    value: function convert(html) {
+      if (typeof html === 'string') {
+        this.container.innerHTML = html.replace(/\>\r?\n +\</g, '><'); // Remove spaces between tags
+        return this.convert();
+      }
+      var formats = this.quill.getFormat(this.quill.selection.savedRange.index);
+      if (formats[_code2.default.blotName]) {
+        var text = this.container.innerText;
+        this.container.innerHTML = '';
+        return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));
+      }
+
+      var _prepareMatching = this.prepareMatching(),
+          _prepareMatching2 = _slicedToArray(_prepareMatching, 2),
+          elementMatchers = _prepareMatching2[0],
+          textMatchers = _prepareMatching2[1];
+
+      var delta = traverse(this.container, elementMatchers, textMatchers);
+      // Remove trailing newline
+      if (deltaEndsWith(delta, '\n') && delta.ops[delta.ops.length - 1].attributes == null) {
+        delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));
+      }
+      debug.log('convert', this.container.innerHTML, delta);
+      this.container.innerHTML = '';
+      return delta;
+    }
+  }, {
+    key: 'dangerouslyPasteHTML',
+    value: function dangerouslyPasteHTML(index, html) {
+      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;
+
+      if (typeof index === 'string') {
+        this.quill.setContents(this.convert(index), html);
+        this.quill.setSelection(0, _quill2.default.sources.SILENT);
+      } else {
+        var paste = this.convert(html);
+        this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);
+        this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);
+      }
+    }
+  }, {
+    key: 'onPaste',
+    value: function onPaste(e) {
+      var _this2 = this;
+
+      if (e.defaultPrevented || !this.quill.isEnabled()) return;
+      var range = this.quill.getSelection();
+      var delta = new _quillDelta2.default().retain(range.index);
+      var scrollTop = this.quill.scrollingContainer.scrollTop;
+      this.container.focus();
+      this.quill.selection.update(_quill2.default.sources.SILENT);
+      setTimeout(function () {
+        delta = delta.concat(_this2.convert()).delete(range.length);
+        _this2.quill.updateContents(delta, _quill2.default.sources.USER);
+        // range.length contributes to delta.length()
+        _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);
+        _this2.quill.scrollingContainer.scrollTop = scrollTop;
+        _this2.quill.focus();
+      }, 1);
+    }
+  }, {
+    key: 'prepareMatching',
+    value: function prepareMatching() {
+      var _this3 = this;
+
+      var elementMatchers = [],
+          textMatchers = [];
+      this.matchers.forEach(function (pair) {
+        var _pair = _slicedToArray(pair, 2),
+            selector = _pair[0],
+            matcher = _pair[1];
+
+        switch (selector) {
+          case Node.TEXT_NODE:
+            textMatchers.push(matcher);
+            break;
+          case Node.ELEMENT_NODE:
+            elementMatchers.push(matcher);
+            break;
+          default:
+            [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {
+              // TODO use weakmap
+              node[DOM_KEY] = node[DOM_KEY] || [];
+              node[DOM_KEY].push(matcher);
+            });
+            break;
+        }
+      });
+      return [elementMatchers, textMatchers];
+    }
+  }]);
+
+  return Clipboard;
+}(_module2.default);
+
+Clipboard.DEFAULTS = {
+  matchers: [],
+  matchVisual: true
+};
+
+function applyFormat(delta, format, value) {
+  if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {
+    return Object.keys(format).reduce(function (delta, key) {
+      return applyFormat(delta, key, format[key]);
+    }, delta);
+  } else {
+    return delta.reduce(function (delta, op) {
+      if (op.attributes && op.attributes[format]) {
+        return delta.push(op);
+      } else {
+        return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));
+      }
+    }, new _quillDelta2.default());
+  }
+}
+
+function computeStyle(node) {
+  if (node.nodeType !== Node.ELEMENT_NODE) return {};
+  var DOM_KEY = '__ql-computed-style';
+  return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));
+}
+
+function deltaEndsWith(delta, text) {
+  var endText = "";
+  for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {
+    var op = delta.ops[i];
+    if (typeof op.insert !== 'string') break;
+    endText = op.insert + endText;
+  }
+  return endText.slice(-1 * text.length) === text;
+}
+
+function isLine(node) {
+  if (node.childNodes.length === 0) return false; // Exclude embed blocks
+  var style = computeStyle(node);
+  return ['block', 'list-item'].indexOf(style.display) > -1;
+}
+
+function traverse(node, elementMatchers, textMatchers) {
+  // Post-order
+  if (node.nodeType === node.TEXT_NODE) {
+    return textMatchers.reduce(function (delta, matcher) {
+      return matcher(node, delta);
+    }, new _quillDelta2.default());
+  } else if (node.nodeType === node.ELEMENT_NODE) {
+    return [].reduce.call(node.childNodes || [], function (delta, childNode) {
+      var childrenDelta = traverse(childNode, elementMatchers, textMatchers);
+      if (childNode.nodeType === node.ELEMENT_NODE) {
+        childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {
+          return matcher(childNode, childrenDelta);
+        }, childrenDelta);
+        childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {
+          return matcher(childNode, childrenDelta);
+        }, childrenDelta);
+      }
+      return delta.concat(childrenDelta);
+    }, new _quillDelta2.default());
+  } else {
+    return new _quillDelta2.default();
+  }
+}
+
+function matchAlias(format, node, delta) {
+  return applyFormat(delta, format, true);
+}
+
+function matchAttributor(node, delta) {
+  var attributes = _parchment2.default.Attributor.Attribute.keys(node);
+  var classes = _parchment2.default.Attributor.Class.keys(node);
+  var styles = _parchment2.default.Attributor.Style.keys(node);
+  var formats = {};
+  attributes.concat(classes).concat(styles).forEach(function (name) {
+    var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);
+    if (attr != null) {
+      formats[attr.attrName] = attr.value(node);
+      if (formats[attr.attrName]) return;
+    }
+    attr = ATTRIBUTE_ATTRIBUTORS[name];
+    if (attr != null && (attr.attrName === name || attr.keyName === name)) {
+      formats[attr.attrName] = attr.value(node) || undefined;
+    }
+    attr = STYLE_ATTRIBUTORS[name];
+    if (attr != null && (attr.attrName === name || attr.keyName === name)) {
+      attr = STYLE_ATTRIBUTORS[name];
+      formats[attr.attrName] = attr.value(node) || undefined;
+    }
+  });
+  if (Object.keys(formats).length > 0) {
+    delta = applyFormat(delta, formats);
+  }
+  return delta;
+}
+
+function matchBlot(node, delta) {
+  var match = _parchment2.default.query(node);
+  if (match == null) return delta;
+  if (match.prototype instanceof _parchment2.default.Embed) {
+    var embed = {};
+    var value = match.value(node);
+    if (value != null) {
+      embed[match.blotName] = value;
+      delta = new _quillDelta2.default().insert(embed, match.formats(node));
+    }
+  } else if (typeof match.formats === 'function') {
+    delta = applyFormat(delta, match.blotName, match.formats(node));
+  }
+  return delta;
+}
+
+function matchBreak(node, delta) {
+  if (!deltaEndsWith(delta, '\n')) {
+    delta.insert('\n');
+  }
+  return delta;
+}
+
+function matchIgnore() {
+  return new _quillDelta2.default();
+}
+
+function matchIndent(node, delta) {
+  var match = _parchment2.default.query(node);
+  if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\n')) {
+    return delta;
+  }
+  var indent = -1,
+      parent = node.parentNode;
+  while (!parent.classList.contains('ql-clipboard')) {
+    if ((_parchment2.default.query(parent) || {}).blotName === 'list') {
+      indent += 1;
+    }
+    parent = parent.parentNode;
+  }
+  if (indent <= 0) return delta;
+  return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));
+}
+
+function matchNewline(node, delta) {
+  if (!deltaEndsWith(delta, '\n')) {
+    if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {
+      delta.insert('\n');
+    }
+  }
+  return delta;
+}
+
+function matchSpacing(node, delta) {
+  if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\n\n')) {
+    var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);
+    if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {
+      delta.insert('\n');
+    }
+  }
+  return delta;
+}
+
+function matchStyles(node, delta) {
+  var formats = {};
+  var style = node.style || {};
+  if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {
+    formats.italic = true;
+  }
+  if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {
+    formats.bold = true;
+  }
+  if (Object.keys(formats).length > 0) {
+    delta = applyFormat(delta, formats);
+  }
+  if (parseFloat(style.textIndent || 0) > 0) {
+    // Could be 0.5in
+    delta = new _quillDelta2.default().insert('\t').concat(delta);
+  }
+  return delta;
+}
+
+function matchText(node, delta) {
+  var text = node.data;
+  // Word represents empty line with <o:p>&nbsp;</o:p>
+  if (node.parentNode.tagName === 'O:P') {
+    return delta.insert(text.trim());
+  }
+  if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {
+    return delta;
+  }
+  if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {
+    // eslint-disable-next-line func-style
+    var replacer = function replacer(collapse, match) {
+      match = match.replace(/[^\u00a0]/g, ''); // \u00a0 is nbsp;
+      return match.length < 1 && collapse ? ' ' : match;
+    };
+    text = text.replace(/\r\n/g, ' ').replace(/\n/g, ' ');
+    text = text.replace(/\s\s+/g, replacer.bind(replacer, true)); // collapse whitespace
+    if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {
+      text = text.replace(/^\s+/, replacer.bind(replacer, false));
+    }
+    if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {
+      text = text.replace(/\s+$/, replacer.bind(replacer, false));
+    }
+  }
+  return delta.insert(text);
+}
+
+exports.default = Clipboard;
+exports.matchAttributor = matchAttributor;
+exports.matchBlot = matchBlot;
+exports.matchNewline = matchNewline;
+exports.matchSpacing = matchSpacing;
+exports.matchText = matchText;
+
+/***/ }),
+/* 56 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _inline = __webpack_require__(6);
+
+var _inline2 = _interopRequireDefault(_inline);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Bold = function (_Inline) {
+  _inherits(Bold, _Inline);
+
+  function Bold() {
+    _classCallCheck(this, Bold);
+
+    return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));
+  }
+
+  _createClass(Bold, [{
+    key: 'optimize',
+    value: function optimize(context) {
+      _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);
+      if (this.domNode.tagName !== this.statics.tagName[0]) {
+        this.replaceWith(this.statics.blotName);
+      }
+    }
+  }], [{
+    key: 'create',
+    value: function create() {
+      return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);
+    }
+  }, {
+    key: 'formats',
+    value: function formats() {
+      return true;
+    }
+  }]);
+
+  return Bold;
+}(_inline2.default);
+
+Bold.blotName = 'bold';
+Bold.tagName = ['STRONG', 'B'];
+
+exports.default = Bold;
+
+/***/ }),
+/* 57 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.addControls = exports.default = undefined;
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _quillDelta = __webpack_require__(2);
+
+var _quillDelta2 = _interopRequireDefault(_quillDelta);
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _quill = __webpack_require__(5);
+
+var _quill2 = _interopRequireDefault(_quill);
+
+var _logger = __webpack_require__(10);
+
+var _logger2 = _interopRequireDefault(_logger);
+
+var _module = __webpack_require__(9);
+
+var _module2 = _interopRequireDefault(_module);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var debug = (0, _logger2.default)('quill:toolbar');
+
+var Toolbar = function (_Module) {
+  _inherits(Toolbar, _Module);
+
+  function Toolbar(quill, options) {
+    _classCallCheck(this, Toolbar);
+
+    var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));
+
+    if (Array.isArray(_this.options.container)) {
+      var container = document.createElement('div');
+      addControls(container, _this.options.container);
+      quill.container.parentNode.insertBefore(container, quill.container);
+      _this.container = container;
+    } else if (typeof _this.options.container === 'string') {
+      _this.container = document.querySelector(_this.options.container);
+    } else {
+      _this.container = _this.options.container;
+    }
+    if (!(_this.container instanceof HTMLElement)) {
+      var _ret;
+
+      return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);
+    }
+    _this.container.classList.add('ql-toolbar');
+    _this.controls = [];
+    _this.handlers = {};
+    Object.keys(_this.options.handlers).forEach(function (format) {
+      _this.addHandler(format, _this.options.handlers[format]);
+    });
+    [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {
+      _this.attach(input);
+    });
+    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {
+      if (type === _quill2.default.events.SELECTION_CHANGE) {
+        _this.update(range);
+      }
+    });
+    _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {
+      var _this$quill$selection = _this.quill.selection.getRange(),
+          _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),
+          range = _this$quill$selection2[0]; // quill.getSelection triggers update
+
+
+      _this.update(range);
+    });
+    return _this;
+  }
+
+  _createClass(Toolbar, [{
+    key: 'addHandler',
+    value: function addHandler(format, handler) {
+      this.handlers[format] = handler;
+    }
+  }, {
+    key: 'attach',
+    value: function attach(input) {
+      var _this2 = this;
+
+      var format = [].find.call(input.classList, function (className) {
+        return className.indexOf('ql-') === 0;
+      });
+      if (!format) return;
+      format = format.slice('ql-'.length);
+      if (input.tagName === 'BUTTON') {
+        input.setAttribute('type', 'button');
+      }
+      if (this.handlers[format] == null) {
+        if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {
+          debug.warn('ignoring attaching to disabled format', format, input);
+          return;
+        }
+        if (_parchment2.default.query(format) == null) {
+          debug.warn('ignoring attaching to nonexistent format', format, input);
+          return;
+        }
+      }
+      var eventName = input.tagName === 'SELECT' ? 'change' : 'click';
+      input.addEventListener(eventName, function (e) {
+        var value = void 0;
+        if (input.tagName === 'SELECT') {
+          if (input.selectedIndex < 0) return;
+          var selected = input.options[input.selectedIndex];
+          if (selected.hasAttribute('selected')) {
+            value = false;
+          } else {
+            value = selected.value || false;
+          }
+        } else {
+          if (input.classList.contains('ql-active')) {
+            value = false;
+          } else {
+            value = input.value || !input.hasAttribute('value');
+          }
+          e.preventDefault();
+        }
+        _this2.quill.focus();
+
+        var _quill$selection$getR = _this2.quill.selection.getRange(),
+            _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),
+            range = _quill$selection$getR2[0];
+
+        if (_this2.handlers[format] != null) {
+          _this2.handlers[format].call(_this2, value);
+        } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {
+          value = prompt('Enter ' + format);
+          if (!value) return;
+          _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);
+        } else {
+          _this2.quill.format(format, value, _quill2.default.sources.USER);
+        }
+        _this2.update(range);
+      });
+      // TODO use weakmap
+      this.controls.push([format, input]);
+    }
+  }, {
+    key: 'update',
+    value: function update(range) {
+      var formats = range == null ? {} : this.quill.getFormat(range);
+      this.controls.forEach(function (pair) {
+        var _pair = _slicedToArray(pair, 2),
+            format = _pair[0],
+            input = _pair[1];
+
+        if (input.tagName === 'SELECT') {
+          var option = void 0;
+          if (range == null) {
+            option = null;
+          } else if (formats[format] == null) {
+            option = input.querySelector('option[selected]');
+          } else if (!Array.isArray(formats[format])) {
+            var value = formats[format];
+            if (typeof value === 'string') {
+              value = value.replace(/\"/g, '\\"');
+            }
+            option = input.querySelector('option[value="' + value + '"]');
+          }
+          if (option == null) {
+            input.value = ''; // TODO make configurable?
+            input.selectedIndex = -1;
+          } else {
+            option.selected = true;
+          }
+        } else {
+          if (range == null) {
+            input.classList.remove('ql-active');
+          } else if (input.hasAttribute('value')) {
+            // both being null should match (default values)
+            // '1' should match with 1 (headers)
+            var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');
+            input.classList.toggle('ql-active', isActive);
+          } else {
+            input.classList.toggle('ql-active', formats[format] != null);
+          }
+        }
+      });
+    }
+  }]);
+
+  return Toolbar;
+}(_module2.default);
+
+Toolbar.DEFAULTS = {};
+
+function addButton(container, format, value) {
+  var input = document.createElement('button');
+  input.setAttribute('type', 'button');
+  input.classList.add('ql-' + format);
+  if (value != null) {
+    input.value = value;
+  }
+  container.appendChild(input);
+}
+
+function addControls(container, groups) {
+  if (!Array.isArray(groups[0])) {
+    groups = [groups];
+  }
+  groups.forEach(function (controls) {
+    var group = document.createElement('span');
+    group.classList.add('ql-formats');
+    controls.forEach(function (control) {
+      if (typeof control === 'string') {
+        addButton(group, control);
+      } else {
+        var format = Object.keys(control)[0];
+        var value = control[format];
+        if (Array.isArray(value)) {
+          addSelect(group, format, value);
+        } else {
+          addButton(group, format, value);
+        }
+      }
+    });
+    container.appendChild(group);
+  });
+}
+
+function addSelect(container, format, values) {
+  var input = document.createElement('select');
+  input.classList.add('ql-' + format);
+  values.forEach(function (value) {
+    var option = document.createElement('option');
+    if (value !== false) {
+      option.setAttribute('value', value);
+    } else {
+      option.setAttribute('selected', 'selected');
+    }
+    input.appendChild(option);
+  });
+  container.appendChild(input);
+}
+
+Toolbar.DEFAULTS = {
+  container: null,
+  handlers: {
+    clean: function clean() {
+      var _this3 = this;
+
+      var range = this.quill.getSelection();
+      if (range == null) return;
+      if (range.length == 0) {
+        var formats = this.quill.getFormat();
+        Object.keys(formats).forEach(function (name) {
+          // Clean functionality in existing apps only clean inline formats
+          if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {
+            _this3.quill.format(name, false);
+          }
+        });
+      } else {
+        this.quill.removeFormat(range, _quill2.default.sources.USER);
+      }
+    },
+    direction: function direction(value) {
+      var align = this.quill.getFormat()['align'];
+      if (value === 'rtl' && align == null) {
+        this.quill.format('align', 'right', _quill2.default.sources.USER);
+      } else if (!value && align === 'right') {
+        this.quill.format('align', false, _quill2.default.sources.USER);
+      }
+      this.quill.format('direction', value, _quill2.default.sources.USER);
+    },
+    indent: function indent(value) {
+      var range = this.quill.getSelection();
+      var formats = this.quill.getFormat(range);
+      var indent = parseInt(formats.indent || 0);
+      if (value === '+1' || value === '-1') {
+        var modifier = value === '+1' ? 1 : -1;
+        if (formats.direction === 'rtl') modifier *= -1;
+        this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);
+      }
+    },
+    link: function link(value) {
+      if (value === true) {
+        value = prompt('Enter link URL:');
+      }
+      this.quill.format('link', value, _quill2.default.sources.USER);
+    },
+    list: function list(value) {
+      var range = this.quill.getSelection();
+      var formats = this.quill.getFormat(range);
+      if (value === 'check') {
+        if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {
+          this.quill.format('list', false, _quill2.default.sources.USER);
+        } else {
+          this.quill.format('list', 'unchecked', _quill2.default.sources.USER);
+        }
+      } else {
+        this.quill.format('list', value, _quill2.default.sources.USER);
+      }
+    }
+  }
+};
+
+exports.default = Toolbar;
+exports.addControls = addControls;
+
+/***/ }),
+/* 58 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <polyline class=\"ql-even ql-stroke\" points=\"5 7 3 9 5 11\"></polyline> <polyline class=\"ql-even ql-stroke\" points=\"13 7 15 9 13 11\"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>";
+
+/***/ }),
+/* 59 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _picker = __webpack_require__(28);
+
+var _picker2 = _interopRequireDefault(_picker);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var ColorPicker = function (_Picker) {
+  _inherits(ColorPicker, _Picker);
+
+  function ColorPicker(select, label) {
+    _classCallCheck(this, ColorPicker);
+
+    var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));
+
+    _this.label.innerHTML = label;
+    _this.container.classList.add('ql-color-picker');
+    [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {
+      item.classList.add('ql-primary');
+    });
+    return _this;
+  }
+
+  _createClass(ColorPicker, [{
+    key: 'buildItem',
+    value: function buildItem(option) {
+      var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);
+      item.style.backgroundColor = option.getAttribute('value') || '';
+      return item;
+    }
+  }, {
+    key: 'selectItem',
+    value: function selectItem(item, trigger) {
+      _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);
+      var colorLabel = this.label.querySelector('.ql-color-label');
+      var value = item ? item.getAttribute('data-value') || '' : '';
+      if (colorLabel) {
+        if (colorLabel.tagName === 'line') {
+          colorLabel.style.stroke = value;
+        } else {
+          colorLabel.style.fill = value;
+        }
+      }
+    }
+  }]);
+
+  return ColorPicker;
+}(_picker2.default);
+
+exports.default = ColorPicker;
+
+/***/ }),
+/* 60 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _picker = __webpack_require__(28);
+
+var _picker2 = _interopRequireDefault(_picker);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var IconPicker = function (_Picker) {
+  _inherits(IconPicker, _Picker);
+
+  function IconPicker(select, icons) {
+    _classCallCheck(this, IconPicker);
+
+    var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));
+
+    _this.container.classList.add('ql-icon-picker');
+    [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {
+      item.innerHTML = icons[item.getAttribute('data-value') || ''];
+    });
+    _this.defaultItem = _this.container.querySelector('.ql-selected');
+    _this.selectItem(_this.defaultItem);
+    return _this;
+  }
+
+  _createClass(IconPicker, [{
+    key: 'selectItem',
+    value: function selectItem(item, trigger) {
+      _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);
+      item = item || this.defaultItem;
+      this.label.innerHTML = item.innerHTML;
+    }
+  }]);
+
+  return IconPicker;
+}(_picker2.default);
+
+exports.default = IconPicker;
+
+/***/ }),
+/* 61 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var Tooltip = function () {
+  function Tooltip(quill, boundsContainer) {
+    var _this = this;
+
+    _classCallCheck(this, Tooltip);
+
+    this.quill = quill;
+    this.boundsContainer = boundsContainer || document.body;
+    this.root = quill.addContainer('ql-tooltip');
+    this.root.innerHTML = this.constructor.TEMPLATE;
+    if (this.quill.root === this.quill.scrollingContainer) {
+      this.quill.root.addEventListener('scroll', function () {
+        _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';
+      });
+    }
+    this.hide();
+  }
+
+  _createClass(Tooltip, [{
+    key: 'hide',
+    value: function hide() {
+      this.root.classList.add('ql-hidden');
+    }
+  }, {
+    key: 'position',
+    value: function position(reference) {
+      var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;
+      // root.scrollTop should be 0 if scrollContainer !== root
+      var top = reference.bottom + this.quill.root.scrollTop;
+      this.root.style.left = left + 'px';
+      this.root.style.top = top + 'px';
+      this.root.classList.remove('ql-flip');
+      var containerBounds = this.boundsContainer.getBoundingClientRect();
+      var rootBounds = this.root.getBoundingClientRect();
+      var shift = 0;
+      if (rootBounds.right > containerBounds.right) {
+        shift = containerBounds.right - rootBounds.right;
+        this.root.style.left = left + shift + 'px';
+      }
+      if (rootBounds.left < containerBounds.left) {
+        shift = containerBounds.left - rootBounds.left;
+        this.root.style.left = left + shift + 'px';
+      }
+      if (rootBounds.bottom > containerBounds.bottom) {
+        var height = rootBounds.bottom - rootBounds.top;
+        var verticalShift = reference.bottom - reference.top + height;
+        this.root.style.top = top - verticalShift + 'px';
+        this.root.classList.add('ql-flip');
+      }
+      return shift;
+    }
+  }, {
+    key: 'show',
+    value: function show() {
+      this.root.classList.remove('ql-editing');
+      this.root.classList.remove('ql-hidden');
+    }
+  }]);
+
+  return Tooltip;
+}();
+
+exports.default = Tooltip;
+
+/***/ }),
+/* 62 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _extend = __webpack_require__(3);
+
+var _extend2 = _interopRequireDefault(_extend);
+
+var _emitter = __webpack_require__(8);
+
+var _emitter2 = _interopRequireDefault(_emitter);
+
+var _base = __webpack_require__(43);
+
+var _base2 = _interopRequireDefault(_base);
+
+var _link = __webpack_require__(27);
+
+var _link2 = _interopRequireDefault(_link);
+
+var _selection = __webpack_require__(15);
+
+var _icons = __webpack_require__(41);
+
+var _icons2 = _interopRequireDefault(_icons);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];
+
+var SnowTheme = function (_BaseTheme) {
+  _inherits(SnowTheme, _BaseTheme);
+
+  function SnowTheme(quill, options) {
+    _classCallCheck(this, SnowTheme);
+
+    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {
+      options.modules.toolbar.container = TOOLBAR_CONFIG;
+    }
+
+    var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));
+
+    _this.quill.container.classList.add('ql-snow');
+    return _this;
+  }
+
+  _createClass(SnowTheme, [{
+    key: 'extendToolbar',
+    value: function extendToolbar(toolbar) {
+      toolbar.container.classList.add('ql-snow');
+      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);
+      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);
+      this.tooltip = new SnowTooltip(this.quill, this.options.bounds);
+      if (toolbar.container.querySelector('.ql-link')) {
+        this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {
+          toolbar.handlers['link'].call(toolbar, !context.format.link);
+        });
+      }
+    }
+  }]);
+
+  return SnowTheme;
+}(_base2.default);
+
+SnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {
+  modules: {
+    toolbar: {
+      handlers: {
+        link: function link(value) {
+          if (value) {
+            var range = this.quill.getSelection();
+            if (range == null || range.length == 0) return;
+            var preview = this.quill.getText(range);
+            if (/^\S+@\S+\.\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {
+              preview = 'mailto:' + preview;
+            }
+            var tooltip = this.quill.theme.tooltip;
+            tooltip.edit('link', preview);
+          } else {
+            this.quill.format('link', false);
+          }
+        }
+      }
+    }
+  }
+});
+
+var SnowTooltip = function (_BaseTooltip) {
+  _inherits(SnowTooltip, _BaseTooltip);
+
+  function SnowTooltip(quill, bounds) {
+    _classCallCheck(this, SnowTooltip);
+
+    var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));
+
+    _this2.preview = _this2.root.querySelector('a.ql-preview');
+    return _this2;
+  }
+
+  _createClass(SnowTooltip, [{
+    key: 'listen',
+    value: function listen() {
+      var _this3 = this;
+
+      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);
+      this.root.querySelector('a.ql-action').addEventListener('click', function (event) {
+        if (_this3.root.classList.contains('ql-editing')) {
+          _this3.save();
+        } else {
+          _this3.edit('link', _this3.preview.textContent);
+        }
+        event.preventDefault();
+      });
+      this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {
+        if (_this3.linkRange != null) {
+          var range = _this3.linkRange;
+          _this3.restoreFocus();
+          _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);
+          delete _this3.linkRange;
+        }
+        event.preventDefault();
+        _this3.hide();
+      });
+      this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {
+        if (range == null) return;
+        if (range.length === 0 && source === _emitter2.default.sources.USER) {
+          var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),
+              _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),
+              link = _quill$scroll$descend2[0],
+              offset = _quill$scroll$descend2[1];
+
+          if (link != null) {
+            _this3.linkRange = new _selection.Range(range.index - offset, link.length());
+            var preview = _link2.default.formats(link.domNode);
+            _this3.preview.textContent = preview;
+            _this3.preview.setAttribute('href', preview);
+            _this3.show();
+            _this3.position(_this3.quill.getBounds(_this3.linkRange));
+            return;
+          }
+        } else {
+          delete _this3.linkRange;
+        }
+        _this3.hide();
+      });
+    }
+  }, {
+    key: 'show',
+    value: function show() {
+      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);
+      this.root.removeAttribute('data-mode');
+    }
+  }]);
+
+  return SnowTooltip;
+}(_base.BaseTooltip);
+
+SnowTooltip.TEMPLATE = ['<a class="ql-preview" target="_blank" href="about:blank"></a>', '<input type="text" data-formula="e=mc^2" data-link="https://quilljs.com" data-video="Embed URL">', '<a class="ql-action"></a>', '<a class="ql-remove"></a>'].join('');
+
+exports.default = SnowTheme;
+
+/***/ }),
+/* 63 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _core = __webpack_require__(29);
+
+var _core2 = _interopRequireDefault(_core);
+
+var _align = __webpack_require__(36);
+
+var _direction = __webpack_require__(38);
+
+var _indent = __webpack_require__(64);
+
+var _blockquote = __webpack_require__(65);
+
+var _blockquote2 = _interopRequireDefault(_blockquote);
+
+var _header = __webpack_require__(66);
+
+var _header2 = _interopRequireDefault(_header);
+
+var _list = __webpack_require__(67);
+
+var _list2 = _interopRequireDefault(_list);
+
+var _background = __webpack_require__(37);
+
+var _color = __webpack_require__(26);
+
+var _font = __webpack_require__(39);
+
+var _size = __webpack_require__(40);
+
+var _bold = __webpack_require__(56);
+
+var _bold2 = _interopRequireDefault(_bold);
+
+var _italic = __webpack_require__(68);
+
+var _italic2 = _interopRequireDefault(_italic);
+
+var _link = __webpack_require__(27);
+
+var _link2 = _interopRequireDefault(_link);
+
+var _script = __webpack_require__(69);
+
+var _script2 = _interopRequireDefault(_script);
+
+var _strike = __webpack_require__(70);
+
+var _strike2 = _interopRequireDefault(_strike);
+
+var _underline = __webpack_require__(71);
+
+var _underline2 = _interopRequireDefault(_underline);
+
+var _image = __webpack_require__(72);
+
+var _image2 = _interopRequireDefault(_image);
+
+var _video = __webpack_require__(73);
+
+var _video2 = _interopRequireDefault(_video);
+
+var _code = __webpack_require__(13);
+
+var _code2 = _interopRequireDefault(_code);
+
+var _formula = __webpack_require__(74);
+
+var _formula2 = _interopRequireDefault(_formula);
+
+var _syntax = __webpack_require__(75);
+
+var _syntax2 = _interopRequireDefault(_syntax);
+
+var _toolbar = __webpack_require__(57);
+
+var _toolbar2 = _interopRequireDefault(_toolbar);
+
+var _icons = __webpack_require__(41);
+
+var _icons2 = _interopRequireDefault(_icons);
+
+var _picker = __webpack_require__(28);
+
+var _picker2 = _interopRequireDefault(_picker);
+
+var _colorPicker = __webpack_require__(59);
+
+var _colorPicker2 = _interopRequireDefault(_colorPicker);
+
+var _iconPicker = __webpack_require__(60);
+
+var _iconPicker2 = _interopRequireDefault(_iconPicker);
+
+var _tooltip = __webpack_require__(61);
+
+var _tooltip2 = _interopRequireDefault(_tooltip);
+
+var _bubble = __webpack_require__(108);
+
+var _bubble2 = _interopRequireDefault(_bubble);
+
+var _snow = __webpack_require__(62);
+
+var _snow2 = _interopRequireDefault(_snow);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+_core2.default.register({
+  'attributors/attribute/direction': _direction.DirectionAttribute,
+
+  'attributors/class/align': _align.AlignClass,
+  'attributors/class/background': _background.BackgroundClass,
+  'attributors/class/color': _color.ColorClass,
+  'attributors/class/direction': _direction.DirectionClass,
+  'attributors/class/font': _font.FontClass,
+  'attributors/class/size': _size.SizeClass,
+
+  'attributors/style/align': _align.AlignStyle,
+  'attributors/style/background': _background.BackgroundStyle,
+  'attributors/style/color': _color.ColorStyle,
+  'attributors/style/direction': _direction.DirectionStyle,
+  'attributors/style/font': _font.FontStyle,
+  'attributors/style/size': _size.SizeStyle
+}, true);
+
+_core2.default.register({
+  'formats/align': _align.AlignClass,
+  'formats/direction': _direction.DirectionClass,
+  'formats/indent': _indent.IndentClass,
+
+  'formats/background': _background.BackgroundStyle,
+  'formats/color': _color.ColorStyle,
+  'formats/font': _font.FontClass,
+  'formats/size': _size.SizeClass,
+
+  'formats/blockquote': _blockquote2.default,
+  'formats/code-block': _code2.default,
+  'formats/header': _header2.default,
+  'formats/list': _list2.default,
+
+  'formats/bold': _bold2.default,
+  'formats/code': _code.Code,
+  'formats/italic': _italic2.default,
+  'formats/link': _link2.default,
+  'formats/script': _script2.default,
+  'formats/strike': _strike2.default,
+  'formats/underline': _underline2.default,
+
+  'formats/image': _image2.default,
+  'formats/video': _video2.default,
+
+  'formats/list/item': _list.ListItem,
+
+  'modules/formula': _formula2.default,
+  'modules/syntax': _syntax2.default,
+  'modules/toolbar': _toolbar2.default,
+
+  'themes/bubble': _bubble2.default,
+  'themes/snow': _snow2.default,
+
+  'ui/icons': _icons2.default,
+  'ui/picker': _picker2.default,
+  'ui/icon-picker': _iconPicker2.default,
+  'ui/color-picker': _colorPicker2.default,
+  'ui/tooltip': _tooltip2.default
+}, true);
+
+exports.default = _core2.default;
+
+/***/ }),
+/* 64 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.IndentClass = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var IdentAttributor = function (_Parchment$Attributor) {
+  _inherits(IdentAttributor, _Parchment$Attributor);
+
+  function IdentAttributor() {
+    _classCallCheck(this, IdentAttributor);
+
+    return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));
+  }
+
+  _createClass(IdentAttributor, [{
+    key: 'add',
+    value: function add(node, value) {
+      if (value === '+1' || value === '-1') {
+        var indent = this.value(node) || 0;
+        value = value === '+1' ? indent + 1 : indent - 1;
+      }
+      if (value === 0) {
+        this.remove(node);
+        return true;
+      } else {
+        return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);
+      }
+    }
+  }, {
+    key: 'canAdd',
+    value: function canAdd(node, value) {
+      return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));
+    }
+  }, {
+    key: 'value',
+    value: function value(node) {
+      return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN
+    }
+  }]);
+
+  return IdentAttributor;
+}(_parchment2.default.Attributor.Class);
+
+var IndentClass = new IdentAttributor('indent', 'ql-indent', {
+  scope: _parchment2.default.Scope.BLOCK,
+  whitelist: [1, 2, 3, 4, 5, 6, 7, 8]
+});
+
+exports.IndentClass = IndentClass;
+
+/***/ }),
+/* 65 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _block = __webpack_require__(4);
+
+var _block2 = _interopRequireDefault(_block);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Blockquote = function (_Block) {
+  _inherits(Blockquote, _Block);
+
+  function Blockquote() {
+    _classCallCheck(this, Blockquote);
+
+    return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));
+  }
+
+  return Blockquote;
+}(_block2.default);
+
+Blockquote.blotName = 'blockquote';
+Blockquote.tagName = 'blockquote';
+
+exports.default = Blockquote;
+
+/***/ }),
+/* 66 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _block = __webpack_require__(4);
+
+var _block2 = _interopRequireDefault(_block);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Header = function (_Block) {
+  _inherits(Header, _Block);
+
+  function Header() {
+    _classCallCheck(this, Header);
+
+    return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));
+  }
+
+  _createClass(Header, null, [{
+    key: 'formats',
+    value: function formats(domNode) {
+      return this.tagName.indexOf(domNode.tagName) + 1;
+    }
+  }]);
+
+  return Header;
+}(_block2.default);
+
+Header.blotName = 'header';
+Header.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];
+
+exports.default = Header;
+
+/***/ }),
+/* 67 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.ListItem = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _block = __webpack_require__(4);
+
+var _block2 = _interopRequireDefault(_block);
+
+var _container = __webpack_require__(25);
+
+var _container2 = _interopRequireDefault(_container);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var ListItem = function (_Block) {
+  _inherits(ListItem, _Block);
+
+  function ListItem() {
+    _classCallCheck(this, ListItem);
+
+    return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));
+  }
+
+  _createClass(ListItem, [{
+    key: 'format',
+    value: function format(name, value) {
+      if (name === List.blotName && !value) {
+        this.replaceWith(_parchment2.default.create(this.statics.scope));
+      } else {
+        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);
+      }
+    }
+  }, {
+    key: 'remove',
+    value: function remove() {
+      if (this.prev == null && this.next == null) {
+        this.parent.remove();
+      } else {
+        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);
+      }
+    }
+  }, {
+    key: 'replaceWith',
+    value: function replaceWith(name, value) {
+      this.parent.isolate(this.offset(this.parent), this.length());
+      if (name === this.parent.statics.blotName) {
+        this.parent.replaceWith(name, value);
+        return this;
+      } else {
+        this.parent.unwrap();
+        return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);
+      }
+    }
+  }], [{
+    key: 'formats',
+    value: function formats(domNode) {
+      return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);
+    }
+  }]);
+
+  return ListItem;
+}(_block2.default);
+
+ListItem.blotName = 'list-item';
+ListItem.tagName = 'LI';
+
+var List = function (_Container) {
+  _inherits(List, _Container);
+
+  _createClass(List, null, [{
+    key: 'create',
+    value: function create(value) {
+      var tagName = value === 'ordered' ? 'OL' : 'UL';
+      var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);
+      if (value === 'checked' || value === 'unchecked') {
+        node.setAttribute('data-checked', value === 'checked');
+      }
+      return node;
+    }
+  }, {
+    key: 'formats',
+    value: function formats(domNode) {
+      if (domNode.tagName === 'OL') return 'ordered';
+      if (domNode.tagName === 'UL') {
+        if (domNode.hasAttribute('data-checked')) {
+          return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';
+        } else {
+          return 'bullet';
+        }
+      }
+      return undefined;
+    }
+  }]);
+
+  function List(domNode) {
+    _classCallCheck(this, List);
+
+    var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));
+
+    var listEventHandler = function listEventHandler(e) {
+      if (e.target.parentNode !== domNode) return;
+      var format = _this2.statics.formats(domNode);
+      var blot = _parchment2.default.find(e.target);
+      if (format === 'checked') {
+        blot.format('list', 'unchecked');
+      } else if (format === 'unchecked') {
+        blot.format('list', 'checked');
+      }
+    };
+
+    domNode.addEventListener('touchstart', listEventHandler);
+    domNode.addEventListener('mousedown', listEventHandler);
+    return _this2;
+  }
+
+  _createClass(List, [{
+    key: 'format',
+    value: function format(name, value) {
+      if (this.children.length > 0) {
+        this.children.tail.format(name, value);
+      }
+    }
+  }, {
+    key: 'formats',
+    value: function formats() {
+      // We don't inherit from FormatBlot
+      return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));
+    }
+  }, {
+    key: 'insertBefore',
+    value: function insertBefore(blot, ref) {
+      if (blot instanceof ListItem) {
+        _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);
+      } else {
+        var index = ref == null ? this.length() : ref.offset(this);
+        var after = this.split(index);
+        after.parent.insertBefore(blot, after);
+      }
+    }
+  }, {
+    key: 'optimize',
+    value: function optimize(context) {
+      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);
+      var next = this.next;
+      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {
+        next.moveChildren(this);
+        next.remove();
+      }
+    }
+  }, {
+    key: 'replace',
+    value: function replace(target) {
+      if (target.statics.blotName !== this.statics.blotName) {
+        var item = _parchment2.default.create(this.statics.defaultChild);
+        target.moveChildren(item);
+        this.appendChild(item);
+      }
+      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);
+    }
+  }]);
+
+  return List;
+}(_container2.default);
+
+List.blotName = 'list';
+List.scope = _parchment2.default.Scope.BLOCK_BLOT;
+List.tagName = ['OL', 'UL'];
+List.defaultChild = 'list-item';
+List.allowedChildren = [ListItem];
+
+exports.ListItem = ListItem;
+exports.default = List;
+
+/***/ }),
+/* 68 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _bold = __webpack_require__(56);
+
+var _bold2 = _interopRequireDefault(_bold);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Italic = function (_Bold) {
+  _inherits(Italic, _Bold);
+
+  function Italic() {
+    _classCallCheck(this, Italic);
+
+    return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));
+  }
+
+  return Italic;
+}(_bold2.default);
+
+Italic.blotName = 'italic';
+Italic.tagName = ['EM', 'I'];
+
+exports.default = Italic;
+
+/***/ }),
+/* 69 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _inline = __webpack_require__(6);
+
+var _inline2 = _interopRequireDefault(_inline);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Script = function (_Inline) {
+  _inherits(Script, _Inline);
+
+  function Script() {
+    _classCallCheck(this, Script);
+
+    return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));
+  }
+
+  _createClass(Script, null, [{
+    key: 'create',
+    value: function create(value) {
+      if (value === 'super') {
+        return document.createElement('sup');
+      } else if (value === 'sub') {
+        return document.createElement('sub');
+      } else {
+        return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);
+      }
+    }
+  }, {
+    key: 'formats',
+    value: function formats(domNode) {
+      if (domNode.tagName === 'SUB') return 'sub';
+      if (domNode.tagName === 'SUP') return 'super';
+      return undefined;
+    }
+  }]);
+
+  return Script;
+}(_inline2.default);
+
+Script.blotName = 'script';
+Script.tagName = ['SUB', 'SUP'];
+
+exports.default = Script;
+
+/***/ }),
+/* 70 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _inline = __webpack_require__(6);
+
+var _inline2 = _interopRequireDefault(_inline);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Strike = function (_Inline) {
+  _inherits(Strike, _Inline);
+
+  function Strike() {
+    _classCallCheck(this, Strike);
+
+    return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));
+  }
+
+  return Strike;
+}(_inline2.default);
+
+Strike.blotName = 'strike';
+Strike.tagName = 'S';
+
+exports.default = Strike;
+
+/***/ }),
+/* 71 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _inline = __webpack_require__(6);
+
+var _inline2 = _interopRequireDefault(_inline);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Underline = function (_Inline) {
+  _inherits(Underline, _Inline);
+
+  function Underline() {
+    _classCallCheck(this, Underline);
+
+    return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));
+  }
+
+  return Underline;
+}(_inline2.default);
+
+Underline.blotName = 'underline';
+Underline.tagName = 'U';
+
+exports.default = Underline;
+
+/***/ }),
+/* 72 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _link = __webpack_require__(27);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var ATTRIBUTES = ['alt', 'height', 'width'];
+
+var Image = function (_Parchment$Embed) {
+  _inherits(Image, _Parchment$Embed);
+
+  function Image() {
+    _classCallCheck(this, Image);
+
+    return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));
+  }
+
+  _createClass(Image, [{
+    key: 'format',
+    value: function format(name, value) {
+      if (ATTRIBUTES.indexOf(name) > -1) {
+        if (value) {
+          this.domNode.setAttribute(name, value);
+        } else {
+          this.domNode.removeAttribute(name);
+        }
+      } else {
+        _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);
+      }
+    }
+  }], [{
+    key: 'create',
+    value: function create(value) {
+      var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);
+      if (typeof value === 'string') {
+        node.setAttribute('src', this.sanitize(value));
+      }
+      return node;
+    }
+  }, {
+    key: 'formats',
+    value: function formats(domNode) {
+      return ATTRIBUTES.reduce(function (formats, attribute) {
+        if (domNode.hasAttribute(attribute)) {
+          formats[attribute] = domNode.getAttribute(attribute);
+        }
+        return formats;
+      }, {});
+    }
+  }, {
+    key: 'match',
+    value: function match(url) {
+      return (/\.(jpe?g|gif|png)$/.test(url) || /^data:image\/.+;base64/.test(url)
+      );
+    }
+  }, {
+    key: 'sanitize',
+    value: function sanitize(url) {
+      return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';
+    }
+  }, {
+    key: 'value',
+    value: function value(domNode) {
+      return domNode.getAttribute('src');
+    }
+  }]);
+
+  return Image;
+}(_parchment2.default.Embed);
+
+Image.blotName = 'image';
+Image.tagName = 'IMG';
+
+exports.default = Image;
+
+/***/ }),
+/* 73 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _block = __webpack_require__(4);
+
+var _link = __webpack_require__(27);
+
+var _link2 = _interopRequireDefault(_link);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var ATTRIBUTES = ['height', 'width'];
+
+var Video = function (_BlockEmbed) {
+  _inherits(Video, _BlockEmbed);
+
+  function Video() {
+    _classCallCheck(this, Video);
+
+    return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));
+  }
+
+  _createClass(Video, [{
+    key: 'format',
+    value: function format(name, value) {
+      if (ATTRIBUTES.indexOf(name) > -1) {
+        if (value) {
+          this.domNode.setAttribute(name, value);
+        } else {
+          this.domNode.removeAttribute(name);
+        }
+      } else {
+        _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);
+      }
+    }
+  }], [{
+    key: 'create',
+    value: function create(value) {
+      var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);
+      node.setAttribute('frameborder', '0');
+      node.setAttribute('allowfullscreen', true);
+      node.setAttribute('src', this.sanitize(value));
+      return node;
+    }
+  }, {
+    key: 'formats',
+    value: function formats(domNode) {
+      return ATTRIBUTES.reduce(function (formats, attribute) {
+        if (domNode.hasAttribute(attribute)) {
+          formats[attribute] = domNode.getAttribute(attribute);
+        }
+        return formats;
+      }, {});
+    }
+  }, {
+    key: 'sanitize',
+    value: function sanitize(url) {
+      return _link2.default.sanitize(url);
+    }
+  }, {
+    key: 'value',
+    value: function value(domNode) {
+      return domNode.getAttribute('src');
+    }
+  }]);
+
+  return Video;
+}(_block.BlockEmbed);
+
+Video.blotName = 'video';
+Video.className = 'ql-video';
+Video.tagName = 'IFRAME';
+
+exports.default = Video;
+
+/***/ }),
+/* 74 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.FormulaBlot = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _embed = __webpack_require__(35);
+
+var _embed2 = _interopRequireDefault(_embed);
+
+var _quill = __webpack_require__(5);
+
+var _quill2 = _interopRequireDefault(_quill);
+
+var _module = __webpack_require__(9);
+
+var _module2 = _interopRequireDefault(_module);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var FormulaBlot = function (_Embed) {
+  _inherits(FormulaBlot, _Embed);
+
+  function FormulaBlot() {
+    _classCallCheck(this, FormulaBlot);
+
+    return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));
+  }
+
+  _createClass(FormulaBlot, null, [{
+    key: 'create',
+    value: function create(value) {
+      var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);
+      if (typeof value === 'string') {
+        window.katex.render(value, node, {
+          throwOnError: false,
+          errorColor: '#f00'
+        });
+        node.setAttribute('data-value', value);
+      }
+      return node;
+    }
+  }, {
+    key: 'value',
+    value: function value(domNode) {
+      return domNode.getAttribute('data-value');
+    }
+  }]);
+
+  return FormulaBlot;
+}(_embed2.default);
+
+FormulaBlot.blotName = 'formula';
+FormulaBlot.className = 'ql-formula';
+FormulaBlot.tagName = 'SPAN';
+
+var Formula = function (_Module) {
+  _inherits(Formula, _Module);
+
+  _createClass(Formula, null, [{
+    key: 'register',
+    value: function register() {
+      _quill2.default.register(FormulaBlot, true);
+    }
+  }]);
+
+  function Formula() {
+    _classCallCheck(this, Formula);
+
+    var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));
+
+    if (window.katex == null) {
+      throw new Error('Formula module requires KaTeX.');
+    }
+    return _this2;
+  }
+
+  return Formula;
+}(_module2.default);
+
+exports.FormulaBlot = FormulaBlot;
+exports.default = Formula;
+
+/***/ }),
+/* 75 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.CodeToken = exports.CodeBlock = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _parchment = __webpack_require__(0);
+
+var _parchment2 = _interopRequireDefault(_parchment);
+
+var _quill = __webpack_require__(5);
+
+var _quill2 = _interopRequireDefault(_quill);
+
+var _module = __webpack_require__(9);
+
+var _module2 = _interopRequireDefault(_module);
+
+var _code = __webpack_require__(13);
+
+var _code2 = _interopRequireDefault(_code);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var SyntaxCodeBlock = function (_CodeBlock) {
+  _inherits(SyntaxCodeBlock, _CodeBlock);
+
+  function SyntaxCodeBlock() {
+    _classCallCheck(this, SyntaxCodeBlock);
+
+    return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));
+  }
+
+  _createClass(SyntaxCodeBlock, [{
+    key: 'replaceWith',
+    value: function replaceWith(block) {
+      this.domNode.textContent = this.domNode.textContent;
+      this.attach();
+      _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);
+    }
+  }, {
+    key: 'highlight',
+    value: function highlight(_highlight) {
+      var text = this.domNode.textContent;
+      if (this.cachedText !== text) {
+        if (text.trim().length > 0 || this.cachedText == null) {
+          this.domNode.innerHTML = _highlight(text);
+          this.domNode.normalize();
+          this.attach();
+        }
+        this.cachedText = text;
+      }
+    }
+  }]);
+
+  return SyntaxCodeBlock;
+}(_code2.default);
+
+SyntaxCodeBlock.className = 'ql-syntax';
+
+var CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {
+  scope: _parchment2.default.Scope.INLINE
+});
+
+var Syntax = function (_Module) {
+  _inherits(Syntax, _Module);
+
+  _createClass(Syntax, null, [{
+    key: 'register',
+    value: function register() {
+      _quill2.default.register(CodeToken, true);
+      _quill2.default.register(SyntaxCodeBlock, true);
+    }
+  }]);
+
+  function Syntax(quill, options) {
+    _classCallCheck(this, Syntax);
+
+    var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));
+
+    if (typeof _this2.options.highlight !== 'function') {
+      throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');
+    }
+    var timer = null;
+    _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {
+      clearTimeout(timer);
+      timer = setTimeout(function () {
+        _this2.highlight();
+        timer = null;
+      }, _this2.options.interval);
+    });
+    _this2.highlight();
+    return _this2;
+  }
+
+  _createClass(Syntax, [{
+    key: 'highlight',
+    value: function highlight() {
+      var _this3 = this;
+
+      if (this.quill.selection.composing) return;
+      this.quill.update(_quill2.default.sources.USER);
+      var range = this.quill.getSelection();
+      this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {
+        code.highlight(_this3.options.highlight);
+      });
+      this.quill.update(_quill2.default.sources.SILENT);
+      if (range != null) {
+        this.quill.setSelection(range, _quill2.default.sources.SILENT);
+      }
+    }
+  }]);
+
+  return Syntax;
+}(_module2.default);
+
+Syntax.DEFAULTS = {
+  highlight: function () {
+    if (window.hljs == null) return null;
+    return function (text) {
+      var result = window.hljs.highlightAuto(text);
+      return result.value;
+    };
+  }(),
+  interval: 1000
+};
+
+exports.CodeBlock = SyntaxCodeBlock;
+exports.CodeToken = CodeToken;
+exports.default = Syntax;
+
+/***/ }),
+/* 76 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>";
+
+/***/ }),
+/* 77 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>";
+
+/***/ }),
+/* 78 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>";
+
+/***/ }),
+/* 79 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>";
+
+/***/ }),
+/* 80 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <g class=\"ql-fill ql-color-label\"> <polygon points=\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points=\"6.817 5 6 5 6 6 6.38 6 6.817 5\"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points=\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points=\"4.63 10 4 10 4 11 4.192 11 4.63 10\"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points=\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points=\"12 6.868 12 6 11.62 6 12 6.868\"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points=\"12.933 9 13 9 13 8 12.495 8 12.933 9\"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points=\"5.5 13 9 5 12.5 13\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>";
+
+/***/ }),
+/* 81 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <rect class=\"ql-fill ql-stroke\" height=3 width=3 x=4 y=5></rect> <rect class=\"ql-fill ql-stroke\" height=3 width=3 x=11 y=5></rect> <path class=\"ql-even ql-fill ql-stroke\" d=M7,8c0,4.031-3,5-3,5></path> <path class=\"ql-even ql-fill ql-stroke\" d=M14,8c0,4.031-3,5-3,5></path> </svg>";
+
+/***/ }),
+/* 82 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>";
+
+/***/ }),
+/* 83 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg class=\"\" viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>";
+
+/***/ }),
+/* 84 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=\"ql-color-label ql-stroke ql-transparent\" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points=\"5.5 11 9 3 12.5 11\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>";
+
+/***/ }),
+/* 85 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <polygon class=\"ql-stroke ql-fill\" points=\"3 11 5 9 3 7 3 11\"></polygon> <line class=\"ql-stroke ql-fill\" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>";
+
+/***/ }),
+/* 86 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <polygon class=\"ql-stroke ql-fill\" points=\"15 12 13 10 15 8 15 12\"></polygon> <line class=\"ql-stroke ql-fill\" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>";
+
+/***/ }),
+/* 87 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>";
+
+/***/ }),
+/* 88 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>";
+
+/***/ }),
+/* 89 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>";
+
+/***/ }),
+/* 90 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform=\"translate(24 18) rotate(-180)\"/> </svg>";
+
+/***/ }),
+/* 91 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>";
+
+/***/ }),
+/* 92 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewBox=\"0 0 18 18\"> <path class=ql-fill d=M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z /> </svg>";
+
+/***/ }),
+/* 93 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewBox=\"0 0 18 18\"> <path class=ql-fill d=M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z /> </svg>";
+
+/***/ }),
+/* 94 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>";
+
+/***/ }),
+/* 95 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class=\"ql-even ql-fill\" points=\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\"></polyline> </svg>";
+
+/***/ }),
+/* 96 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=\"ql-fill ql-stroke\" points=\"3 7 3 11 5 9 3 7\"></polyline> </svg>";
+
+/***/ }),
+/* 97 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\"5 7 5 11 3 9 5 7\"></polyline> </svg>";
+
+/***/ }),
+/* 98 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class=\"ql-even ql-stroke\" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class=\"ql-even ql-stroke\" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>";
+
+/***/ }),
+/* 99 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class=\"ql-stroke ql-thin\" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class=\"ql-stroke ql-thin\" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class=\"ql-stroke ql-thin\" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>";
+
+/***/ }),
+/* 100 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>";
+
+/***/ }),
+/* 101 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg class=\"\" viewbox=\"0 0 18 18\"> <line class=ql-stroke x1=9 x2=15 y1=4 y2=4></line> <polyline class=ql-stroke points=\"3 4 4 5 6 3\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=14 y2=14></line> <polyline class=ql-stroke points=\"3 14 4 15 6 13\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\"3 9 4 10 6 8\"></polyline> </svg>";
+
+/***/ }),
+/* 102 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>";
+
+/***/ }),
+/* 103 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>";
+
+/***/ }),
+/* 104 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <line class=\"ql-stroke ql-thin\" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>";
+
+/***/ }),
+/* 105 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>";
+
+/***/ }),
+/* 106 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>";
+
+/***/ }),
+/* 107 */
+/***/ (function(module, exports) {
+
+module.exports = "<svg viewbox=\"0 0 18 18\"> <polygon class=ql-stroke points=\"7 11 9 13 11 11 7 11\"></polygon> <polygon class=ql-stroke points=\"7 7 9 5 11 7 7 7\"></polygon> </svg>";
+
+/***/ }),
+/* 108 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.BubbleTooltip = undefined;
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _extend = __webpack_require__(3);
+
+var _extend2 = _interopRequireDefault(_extend);
+
+var _emitter = __webpack_require__(8);
+
+var _emitter2 = _interopRequireDefault(_emitter);
+
+var _base = __webpack_require__(43);
+
+var _base2 = _interopRequireDefault(_base);
+
+var _selection = __webpack_require__(15);
+
+var _icons = __webpack_require__(41);
+
+var _icons2 = _interopRequireDefault(_icons);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];
+
+var BubbleTheme = function (_BaseTheme) {
+  _inherits(BubbleTheme, _BaseTheme);
+
+  function BubbleTheme(quill, options) {
+    _classCallCheck(this, BubbleTheme);
+
+    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {
+      options.modules.toolbar.container = TOOLBAR_CONFIG;
+    }
+
+    var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));
+
+    _this.quill.container.classList.add('ql-bubble');
+    return _this;
+  }
+
+  _createClass(BubbleTheme, [{
+    key: 'extendToolbar',
+    value: function extendToolbar(toolbar) {
+      this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);
+      this.tooltip.root.appendChild(toolbar.container);
+      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);
+      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);
+    }
+  }]);
+
+  return BubbleTheme;
+}(_base2.default);
+
+BubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {
+  modules: {
+    toolbar: {
+      handlers: {
+        link: function link(value) {
+          if (!value) {
+            this.quill.format('link', false);
+          } else {
+            this.quill.theme.tooltip.edit();
+          }
+        }
+      }
+    }
+  }
+});
+
+var BubbleTooltip = function (_BaseTooltip) {
+  _inherits(BubbleTooltip, _BaseTooltip);
+
+  function BubbleTooltip(quill, bounds) {
+    _classCallCheck(this, BubbleTooltip);
+
+    var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));
+
+    _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {
+      if (type !== _emitter2.default.events.SELECTION_CHANGE) return;
+      if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {
+        _this2.show();
+        // Lock our width so we will expand beyond our offsetParent boundaries
+        _this2.root.style.left = '0px';
+        _this2.root.style.width = '';
+        _this2.root.style.width = _this2.root.offsetWidth + 'px';
+        var lines = _this2.quill.getLines(range.index, range.length);
+        if (lines.length === 1) {
+          _this2.position(_this2.quill.getBounds(range));
+        } else {
+          var lastLine = lines[lines.length - 1];
+          var index = _this2.quill.getIndex(lastLine);
+          var length = Math.min(lastLine.length() - 1, range.index + range.length - index);
+          var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));
+          _this2.position(_bounds);
+        }
+      } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {
+        _this2.hide();
+      }
+    });
+    return _this2;
+  }
+
+  _createClass(BubbleTooltip, [{
+    key: 'listen',
+    value: function listen() {
+      var _this3 = this;
+
+      _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);
+      this.root.querySelector('.ql-close').addEventListener('click', function () {
+        _this3.root.classList.remove('ql-editing');
+      });
+      this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {
+        // Let selection be restored by toolbar handlers before repositioning
+        setTimeout(function () {
+          if (_this3.root.classList.contains('ql-hidden')) return;
+          var range = _this3.quill.getSelection();
+          if (range != null) {
+            _this3.position(_this3.quill.getBounds(range));
+          }
+        }, 1);
+      });
+    }
+  }, {
+    key: 'cancel',
+    value: function cancel() {
+      this.show();
+    }
+  }, {
+    key: 'position',
+    value: function position(reference) {
+      var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);
+      var arrow = this.root.querySelector('.ql-tooltip-arrow');
+      arrow.style.marginLeft = '';
+      if (shift === 0) return shift;
+      arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';
+    }
+  }]);
+
+  return BubbleTooltip;
+}(_base.BaseTooltip);
+
+BubbleTooltip.TEMPLATE = ['<span class="ql-tooltip-arrow"></span>', '<div class="ql-tooltip-editor">', '<input type="text" data-formula="e=mc^2" data-link="https://quilljs.com" data-video="Embed URL">', '<a class="ql-close"></a>', '</div>'].join('');
+
+exports.BubbleTooltip = BubbleTooltip;
+exports.default = BubbleTheme;
+
+/***/ }),
+/* 109 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(63);
+
+
+/***/ })
+/******/ ])["default"];
+});
Index: public/vendors/quill/quill.snow.css
===================================================================
--- public/vendors/quill/quill.snow.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/quill/quill.snow.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,945 @@
+/*!
+ * Quill Editor v1.3.6
+ * https://quilljs.com/
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */
+.ql-container {
+  box-sizing: border-box;
+  font-family: Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  height: 100%;
+  margin: 0px;
+  position: relative;
+}
+.ql-container.ql-disabled .ql-tooltip {
+  visibility: hidden;
+}
+.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before {
+  pointer-events: none;
+}
+.ql-clipboard {
+  left: -100000px;
+  height: 1px;
+  overflow-y: hidden;
+  position: absolute;
+  top: 50%;
+}
+.ql-clipboard p {
+  margin: 0;
+  padding: 0;
+}
+.ql-editor {
+  box-sizing: border-box;
+  line-height: 1.42;
+  height: 100%;
+  outline: none;
+  overflow-y: auto;
+  padding: 12px 15px;
+  tab-size: 4;
+  -moz-tab-size: 4;
+  text-align: left;
+  white-space: pre-wrap;
+  word-wrap: break-word;
+}
+.ql-editor > * {
+  cursor: text;
+}
+.ql-editor p,
+.ql-editor ol,
+.ql-editor ul,
+.ql-editor pre,
+.ql-editor blockquote,
+.ql-editor h1,
+.ql-editor h2,
+.ql-editor h3,
+.ql-editor h4,
+.ql-editor h5,
+.ql-editor h6 {
+  margin: 0;
+  padding: 0;
+  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+}
+.ql-editor ol,
+.ql-editor ul {
+  padding-left: 1.5em;
+}
+.ql-editor ol > li,
+.ql-editor ul > li {
+  list-style-type: none;
+}
+.ql-editor ul > li::before {
+  content: '\2022';
+}
+.ql-editor ul[data-checked=true],
+.ql-editor ul[data-checked=false] {
+  pointer-events: none;
+}
+.ql-editor ul[data-checked=true] > li *,
+.ql-editor ul[data-checked=false] > li * {
+  pointer-events: all;
+}
+.ql-editor ul[data-checked=true] > li::before,
+.ql-editor ul[data-checked=false] > li::before {
+  color: #777;
+  cursor: pointer;
+  pointer-events: all;
+}
+.ql-editor ul[data-checked=true] > li::before {
+  content: '\2611';
+}
+.ql-editor ul[data-checked=false] > li::before {
+  content: '\2610';
+}
+.ql-editor li::before {
+  display: inline-block;
+  white-space: nowrap;
+  width: 1.2em;
+}
+.ql-editor li:not(.ql-direction-rtl)::before {
+  margin-left: -1.5em;
+  margin-right: 0.3em;
+  text-align: right;
+}
+.ql-editor li.ql-direction-rtl::before {
+  margin-left: 0.3em;
+  margin-right: -1.5em;
+}
+.ql-editor ol li:not(.ql-direction-rtl),
+.ql-editor ul li:not(.ql-direction-rtl) {
+  padding-left: 1.5em;
+}
+.ql-editor ol li.ql-direction-rtl,
+.ql-editor ul li.ql-direction-rtl {
+  padding-right: 1.5em;
+}
+.ql-editor ol li {
+  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+  counter-increment: list-0;
+}
+.ql-editor ol li:before {
+  content: counter(list-0, decimal) '. ';
+}
+.ql-editor ol li.ql-indent-1 {
+  counter-increment: list-1;
+}
+.ql-editor ol li.ql-indent-1:before {
+  content: counter(list-1, lower-alpha) '. ';
+}
+.ql-editor ol li.ql-indent-1 {
+  counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-2 {
+  counter-increment: list-2;
+}
+.ql-editor ol li.ql-indent-2:before {
+  content: counter(list-2, lower-roman) '. ';
+}
+.ql-editor ol li.ql-indent-2 {
+  counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-3 {
+  counter-increment: list-3;
+}
+.ql-editor ol li.ql-indent-3:before {
+  content: counter(list-3, decimal) '. ';
+}
+.ql-editor ol li.ql-indent-3 {
+  counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-4 {
+  counter-increment: list-4;
+}
+.ql-editor ol li.ql-indent-4:before {
+  content: counter(list-4, lower-alpha) '. ';
+}
+.ql-editor ol li.ql-indent-4 {
+  counter-reset: list-5 list-6 list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-5 {
+  counter-increment: list-5;
+}
+.ql-editor ol li.ql-indent-5:before {
+  content: counter(list-5, lower-roman) '. ';
+}
+.ql-editor ol li.ql-indent-5 {
+  counter-reset: list-6 list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-6 {
+  counter-increment: list-6;
+}
+.ql-editor ol li.ql-indent-6:before {
+  content: counter(list-6, decimal) '. ';
+}
+.ql-editor ol li.ql-indent-6 {
+  counter-reset: list-7 list-8 list-9;
+}
+.ql-editor ol li.ql-indent-7 {
+  counter-increment: list-7;
+}
+.ql-editor ol li.ql-indent-7:before {
+  content: counter(list-7, lower-alpha) '. ';
+}
+.ql-editor ol li.ql-indent-7 {
+  counter-reset: list-8 list-9;
+}
+.ql-editor ol li.ql-indent-8 {
+  counter-increment: list-8;
+}
+.ql-editor ol li.ql-indent-8:before {
+  content: counter(list-8, lower-roman) '. ';
+}
+.ql-editor ol li.ql-indent-8 {
+  counter-reset: list-9;
+}
+.ql-editor ol li.ql-indent-9 {
+  counter-increment: list-9;
+}
+.ql-editor ol li.ql-indent-9:before {
+  content: counter(list-9, decimal) '. ';
+}
+.ql-editor .ql-indent-1:not(.ql-direction-rtl) {
+  padding-left: 3em;
+}
+.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
+  padding-left: 4.5em;
+}
+.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
+  padding-right: 3em;
+}
+.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
+  padding-right: 4.5em;
+}
+.ql-editor .ql-indent-2:not(.ql-direction-rtl) {
+  padding-left: 6em;
+}
+.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
+  padding-left: 7.5em;
+}
+.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
+  padding-right: 6em;
+}
+.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
+  padding-right: 7.5em;
+}
+.ql-editor .ql-indent-3:not(.ql-direction-rtl) {
+  padding-left: 9em;
+}
+.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
+  padding-left: 10.5em;
+}
+.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
+  padding-right: 9em;
+}
+.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
+  padding-right: 10.5em;
+}
+.ql-editor .ql-indent-4:not(.ql-direction-rtl) {
+  padding-left: 12em;
+}
+.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
+  padding-left: 13.5em;
+}
+.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
+  padding-right: 12em;
+}
+.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
+  padding-right: 13.5em;
+}
+.ql-editor .ql-indent-5:not(.ql-direction-rtl) {
+  padding-left: 15em;
+}
+.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
+  padding-left: 16.5em;
+}
+.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
+  padding-right: 15em;
+}
+.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
+  padding-right: 16.5em;
+}
+.ql-editor .ql-indent-6:not(.ql-direction-rtl) {
+  padding-left: 18em;
+}
+.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
+  padding-left: 19.5em;
+}
+.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
+  padding-right: 18em;
+}
+.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
+  padding-right: 19.5em;
+}
+.ql-editor .ql-indent-7:not(.ql-direction-rtl) {
+  padding-left: 21em;
+}
+.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
+  padding-left: 22.5em;
+}
+.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
+  padding-right: 21em;
+}
+.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
+  padding-right: 22.5em;
+}
+.ql-editor .ql-indent-8:not(.ql-direction-rtl) {
+  padding-left: 24em;
+}
+.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
+  padding-left: 25.5em;
+}
+.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
+  padding-right: 24em;
+}
+.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
+  padding-right: 25.5em;
+}
+.ql-editor .ql-indent-9:not(.ql-direction-rtl) {
+  padding-left: 27em;
+}
+.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
+  padding-left: 28.5em;
+}
+.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
+  padding-right: 27em;
+}
+.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
+  padding-right: 28.5em;
+}
+.ql-editor .ql-video {
+  display: block;
+  max-width: 100%;
+}
+.ql-editor .ql-video.ql-align-center {
+  margin: 0 auto;
+}
+.ql-editor .ql-video.ql-align-right {
+  margin: 0 0 0 auto;
+}
+.ql-editor .ql-bg-black {
+  background-color: #000;
+}
+.ql-editor .ql-bg-red {
+  background-color: #e60000;
+}
+.ql-editor .ql-bg-orange {
+  background-color: #f90;
+}
+.ql-editor .ql-bg-yellow {
+  background-color: #ff0;
+}
+.ql-editor .ql-bg-green {
+  background-color: #008a00;
+}
+.ql-editor .ql-bg-blue {
+  background-color: #06c;
+}
+.ql-editor .ql-bg-purple {
+  background-color: #93f;
+}
+.ql-editor .ql-color-white {
+  color: #fff;
+}
+.ql-editor .ql-color-red {
+  color: #e60000;
+}
+.ql-editor .ql-color-orange {
+  color: #f90;
+}
+.ql-editor .ql-color-yellow {
+  color: #ff0;
+}
+.ql-editor .ql-color-green {
+  color: #008a00;
+}
+.ql-editor .ql-color-blue {
+  color: #06c;
+}
+.ql-editor .ql-color-purple {
+  color: #93f;
+}
+.ql-editor .ql-font-serif {
+  font-family: Georgia, Times New Roman, serif;
+}
+.ql-editor .ql-font-monospace {
+  font-family: Monaco, Courier New, monospace;
+}
+.ql-editor .ql-size-small {
+  font-size: 0.75em;
+}
+.ql-editor .ql-size-large {
+  font-size: 1.5em;
+}
+.ql-editor .ql-size-huge {
+  font-size: 2.5em;
+}
+.ql-editor .ql-direction-rtl {
+  direction: rtl;
+  text-align: inherit;
+}
+.ql-editor .ql-align-center {
+  text-align: center;
+}
+.ql-editor .ql-align-justify {
+  text-align: justify;
+}
+.ql-editor .ql-align-right {
+  text-align: right;
+}
+.ql-editor.ql-blank::before {
+  color: rgba(0,0,0,0.6);
+  content: attr(data-placeholder);
+  font-style: italic;
+  left: 15px;
+  pointer-events: none;
+  position: absolute;
+  right: 15px;
+}
+.ql-snow.ql-toolbar:after,
+.ql-snow .ql-toolbar:after {
+  clear: both;
+  content: '';
+  display: table;
+}
+.ql-snow.ql-toolbar button,
+.ql-snow .ql-toolbar button {
+  background: none;
+  border: none;
+  cursor: pointer;
+  display: inline-block;
+  float: left;
+  height: 24px;
+  padding: 3px 5px;
+  width: 28px;
+}
+.ql-snow.ql-toolbar button svg,
+.ql-snow .ql-toolbar button svg {
+  float: left;
+  height: 100%;
+}
+.ql-snow.ql-toolbar button:active:hover,
+.ql-snow .ql-toolbar button:active:hover {
+  outline: none;
+}
+.ql-snow.ql-toolbar input.ql-image[type=file],
+.ql-snow .ql-toolbar input.ql-image[type=file] {
+  display: none;
+}
+.ql-snow.ql-toolbar button:hover,
+.ql-snow .ql-toolbar button:hover,
+.ql-snow.ql-toolbar button:focus,
+.ql-snow .ql-toolbar button:focus,
+.ql-snow.ql-toolbar button.ql-active,
+.ql-snow .ql-toolbar button.ql-active,
+.ql-snow.ql-toolbar .ql-picker-label:hover,
+.ql-snow .ql-toolbar .ql-picker-label:hover,
+.ql-snow.ql-toolbar .ql-picker-label.ql-active,
+.ql-snow .ql-toolbar .ql-picker-label.ql-active,
+.ql-snow.ql-toolbar .ql-picker-item:hover,
+.ql-snow .ql-toolbar .ql-picker-item:hover,
+.ql-snow.ql-toolbar .ql-picker-item.ql-selected,
+.ql-snow .ql-toolbar .ql-picker-item.ql-selected {
+  color: #06c;
+}
+.ql-snow.ql-toolbar button:hover .ql-fill,
+.ql-snow .ql-toolbar button:hover .ql-fill,
+.ql-snow.ql-toolbar button:focus .ql-fill,
+.ql-snow .ql-toolbar button:focus .ql-fill,
+.ql-snow.ql-toolbar button.ql-active .ql-fill,
+.ql-snow .ql-toolbar button.ql-active .ql-fill,
+.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,
+.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,
+.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
+.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,
+.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,
+.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,
+.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,
+.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,
+.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,
+.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,
+.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,
+.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,
+.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,
+.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,
+.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
+.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
+.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
+.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
+.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
+.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
+.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,
+.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {
+  fill: #06c;
+}
+.ql-snow.ql-toolbar button:hover .ql-stroke,
+.ql-snow .ql-toolbar button:hover .ql-stroke,
+.ql-snow.ql-toolbar button:focus .ql-stroke,
+.ql-snow .ql-toolbar button:focus .ql-stroke,
+.ql-snow.ql-toolbar button.ql-active .ql-stroke,
+.ql-snow .ql-toolbar button.ql-active .ql-stroke,
+.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,
+.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,
+.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,
+.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,
+.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
+.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
+.ql-snow.ql-toolbar button:hover .ql-stroke-miter,
+.ql-snow .ql-toolbar button:hover .ql-stroke-miter,
+.ql-snow.ql-toolbar button:focus .ql-stroke-miter,
+.ql-snow .ql-toolbar button:focus .ql-stroke-miter,
+.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,
+.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,
+.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
+.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
+.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
+.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
+.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
+.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
+.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,
+.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {
+  stroke: #06c;
+}
+@media (pointer: coarse) {
+  .ql-snow.ql-toolbar button:hover:not(.ql-active),
+  .ql-snow .ql-toolbar button:hover:not(.ql-active) {
+    color: #444;
+  }
+  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,
+  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,
+  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,
+  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {
+    fill: #444;
+  }
+  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,
+  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,
+  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,
+  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {
+    stroke: #444;
+  }
+}
+.ql-snow {
+  box-sizing: border-box;
+}
+.ql-snow * {
+  box-sizing: border-box;
+}
+.ql-snow .ql-hidden {
+  display: none;
+}
+.ql-snow .ql-out-bottom,
+.ql-snow .ql-out-top {
+  visibility: hidden;
+}
+.ql-snow .ql-tooltip {
+  position: absolute;
+  transform: translateY(10px);
+}
+.ql-snow .ql-tooltip a {
+  cursor: pointer;
+  text-decoration: none;
+}
+.ql-snow .ql-tooltip.ql-flip {
+  transform: translateY(-10px);
+}
+.ql-snow .ql-formats {
+  display: inline-block;
+  vertical-align: middle;
+}
+.ql-snow .ql-formats:after {
+  clear: both;
+  content: '';
+  display: table;
+}
+.ql-snow .ql-stroke {
+  fill: none;
+  stroke: #444;
+  stroke-linecap: round;
+  stroke-linejoin: round;
+  stroke-width: 2;
+}
+.ql-snow .ql-stroke-miter {
+  fill: none;
+  stroke: #444;
+  stroke-miterlimit: 10;
+  stroke-width: 2;
+}
+.ql-snow .ql-fill,
+.ql-snow .ql-stroke.ql-fill {
+  fill: #444;
+}
+.ql-snow .ql-empty {
+  fill: none;
+}
+.ql-snow .ql-even {
+  fill-rule: evenodd;
+}
+.ql-snow .ql-thin,
+.ql-snow .ql-stroke.ql-thin {
+  stroke-width: 1;
+}
+.ql-snow .ql-transparent {
+  opacity: 0.4;
+}
+.ql-snow .ql-direction svg:last-child {
+  display: none;
+}
+.ql-snow .ql-direction.ql-active svg:last-child {
+  display: inline;
+}
+.ql-snow .ql-direction.ql-active svg:first-child {
+  display: none;
+}
+.ql-snow .ql-editor h1 {
+  font-size: 2em;
+}
+.ql-snow .ql-editor h2 {
+  font-size: 1.5em;
+}
+.ql-snow .ql-editor h3 {
+  font-size: 1.17em;
+}
+.ql-snow .ql-editor h4 {
+  font-size: 1em;
+}
+.ql-snow .ql-editor h5 {
+  font-size: 0.83em;
+}
+.ql-snow .ql-editor h6 {
+  font-size: 0.67em;
+}
+.ql-snow .ql-editor a {
+  text-decoration: underline;
+}
+.ql-snow .ql-editor blockquote {
+  border-left: 4px solid #ccc;
+  margin-bottom: 5px;
+  margin-top: 5px;
+  padding-left: 16px;
+}
+.ql-snow .ql-editor code,
+.ql-snow .ql-editor pre {
+  background-color: #f0f0f0;
+  border-radius: 3px;
+}
+.ql-snow .ql-editor pre {
+  white-space: pre-wrap;
+  margin-bottom: 5px;
+  margin-top: 5px;
+  padding: 5px 10px;
+}
+.ql-snow .ql-editor code {
+  font-size: 85%;
+  padding: 2px 4px;
+}
+.ql-snow .ql-editor pre.ql-syntax {
+  background-color: #23241f;
+  color: #f8f8f2;
+  overflow: visible;
+}
+.ql-snow .ql-editor img {
+  max-width: 100%;
+}
+.ql-snow .ql-picker {
+  color: #444;
+  display: inline-block;
+  float: left;
+  font-size: 14px;
+  font-weight: 500;
+  height: 24px;
+  position: relative;
+  vertical-align: middle;
+}
+.ql-snow .ql-picker-label {
+  cursor: pointer;
+  display: inline-block;
+  height: 100%;
+  padding-left: 8px;
+  padding-right: 2px;
+  position: relative;
+  width: 100%;
+}
+.ql-snow .ql-picker-label::before {
+  display: inline-block;
+  line-height: 22px;
+}
+.ql-snow .ql-picker-options {
+  background-color: #fff;
+  display: none;
+  min-width: 100%;
+  padding: 4px 8px;
+  position: absolute;
+  white-space: nowrap;
+}
+.ql-snow .ql-picker-options .ql-picker-item {
+  cursor: pointer;
+  display: block;
+  padding-bottom: 5px;
+  padding-top: 5px;
+}
+.ql-snow .ql-picker.ql-expanded .ql-picker-label {
+  color: #ccc;
+  z-index: 2;
+}
+.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+  fill: #ccc;
+}
+.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+  stroke: #ccc;
+}
+.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+  display: block;
+  margin-top: -1px;
+  top: 100%;
+  z-index: 1;
+}
+.ql-snow .ql-color-picker,
+.ql-snow .ql-icon-picker {
+  width: 28px;
+}
+.ql-snow .ql-color-picker .ql-picker-label,
+.ql-snow .ql-icon-picker .ql-picker-label {
+  padding: 2px 4px;
+}
+.ql-snow .ql-color-picker .ql-picker-label svg,
+.ql-snow .ql-icon-picker .ql-picker-label svg {
+  right: 4px;
+}
+.ql-snow .ql-icon-picker .ql-picker-options {
+  padding: 4px 0px;
+}
+.ql-snow .ql-icon-picker .ql-picker-item {
+  height: 24px;
+  width: 24px;
+  padding: 2px 4px;
+}
+.ql-snow .ql-color-picker .ql-picker-options {
+  padding: 3px 5px;
+  width: 152px;
+}
+.ql-snow .ql-color-picker .ql-picker-item {
+  border: 1px solid transparent;
+  float: left;
+  height: 16px;
+  margin: 2px;
+  padding: 0px;
+  width: 16px;
+}
+.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
+  position: absolute;
+  margin-top: -9px;
+  right: 0;
+  top: 50%;
+  width: 18px;
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,
+.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,
+.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,
+.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,
+.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before {
+  content: attr(data-label);
+}
+.ql-snow .ql-picker.ql-header {
+  width: 98px;
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item::before {
+  content: 'Normal';
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
+  content: 'Heading 1';
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
+  content: 'Heading 2';
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
+  content: 'Heading 3';
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
+  content: 'Heading 4';
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
+  content: 'Heading 5';
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
+  content: 'Heading 6';
+}
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
+  font-size: 2em;
+}
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
+  font-size: 1.5em;
+}
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
+  font-size: 1.17em;
+}
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
+  font-size: 1em;
+}
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
+  font-size: 0.83em;
+}
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
+  font-size: 0.67em;
+}
+.ql-snow .ql-picker.ql-font {
+  width: 108px;
+}
+.ql-snow .ql-picker.ql-font .ql-picker-label::before,
+.ql-snow .ql-picker.ql-font .ql-picker-item::before {
+  content: 'Sans Serif';
+}
+.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,
+.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
+  content: 'Serif';
+}
+.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,
+.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
+  content: 'Monospace';
+}
+.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
+  font-family: Georgia, Times New Roman, serif;
+}
+.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
+  font-family: Monaco, Courier New, monospace;
+}
+.ql-snow .ql-picker.ql-size {
+  width: 98px;
+}
+.ql-snow .ql-picker.ql-size .ql-picker-label::before,
+.ql-snow .ql-picker.ql-size .ql-picker-item::before {
+  content: 'Normal';
+}
+.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before,
+.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
+  content: 'Small';
+}
+.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before,
+.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
+  content: 'Large';
+}
+.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,
+.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
+  content: 'Huge';
+}
+.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
+  font-size: 10px;
+}
+.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
+  font-size: 18px;
+}
+.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
+  font-size: 32px;
+}
+.ql-snow .ql-color-picker.ql-background .ql-picker-item {
+  background-color: #fff;
+}
+.ql-snow .ql-color-picker.ql-color .ql-picker-item {
+  background-color: #000;
+}
+.ql-toolbar.ql-snow {
+  border: 1px solid #ccc;
+  box-sizing: border-box;
+  font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
+  padding: 8px;
+}
+.ql-toolbar.ql-snow .ql-formats {
+  margin-right: 15px;
+}
+.ql-toolbar.ql-snow .ql-picker-label {
+  border: 1px solid transparent;
+}
+.ql-toolbar.ql-snow .ql-picker-options {
+  border: 1px solid transparent;
+  box-shadow: rgba(0,0,0,0.2) 0 2px 8px;
+}
+.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
+  border-color: #ccc;
+}
+.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+  border-color: #ccc;
+}
+.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,
+.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {
+  border-color: #000;
+}
+.ql-toolbar.ql-snow + .ql-container.ql-snow {
+  border-top: 0px;
+}
+.ql-snow .ql-tooltip {
+  background-color: #fff;
+  border: 1px solid #ccc;
+  box-shadow: 0px 0px 5px #ddd;
+  color: #444;
+  padding: 5px 12px;
+  white-space: nowrap;
+}
+.ql-snow .ql-tooltip::before {
+  content: "Visit URL:";
+  line-height: 26px;
+  margin-right: 8px;
+}
+.ql-snow .ql-tooltip input[type=text] {
+  display: none;
+  border: 1px solid #ccc;
+  font-size: 13px;
+  height: 26px;
+  margin: 0px;
+  padding: 3px 5px;
+  width: 170px;
+}
+.ql-snow .ql-tooltip a.ql-preview {
+  display: inline-block;
+  max-width: 200px;
+  overflow-x: hidden;
+  text-overflow: ellipsis;
+  vertical-align: top;
+}
+.ql-snow .ql-tooltip a.ql-action::after {
+  border-right: 1px solid #ccc;
+  content: 'Edit';
+  margin-left: 16px;
+  padding-right: 8px;
+}
+.ql-snow .ql-tooltip a.ql-remove::before {
+  content: 'Remove';
+  margin-left: 8px;
+}
+.ql-snow .ql-tooltip a {
+  line-height: 26px;
+}
+.ql-snow .ql-tooltip.ql-editing a.ql-preview,
+.ql-snow .ql-tooltip.ql-editing a.ql-remove {
+  display: none;
+}
+.ql-snow .ql-tooltip.ql-editing input[type=text] {
+  display: inline-block;
+}
+.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
+  border-right: 0px;
+  content: 'Save';
+  padding-right: 0px;
+}
+.ql-snow .ql-tooltip[data-mode=link]::before {
+  content: "Enter link:";
+}
+.ql-snow .ql-tooltip[data-mode=formula]::before {
+  content: "Enter formula:";
+}
+.ql-snow .ql-tooltip[data-mode=video]::before {
+  content: "Enter video:";
+}
+.ql-snow a {
+  color: #06c;
+}
+.ql-container.ql-snow {
+  border: 1px solid #ccc;
+}
Index: public/vendors/range-slider/css/ion.rangeSlider.css
===================================================================
--- public/vendors/range-slider/css/ion.rangeSlider.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/range-slider/css/ion.rangeSlider.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,675 @@
+/**
+Ion.RangeSlider, 2.3.0
+© Denis Ineshin, 2010 - 2018, IonDen.com
+Build date: 2018-12-12 00:07:25
+*/
+.irs {
+  position: relative;
+  display: block;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  font-size: 12px;
+  font-family: Arial, sans-serif;
+}
+.irs-line {
+  position: relative;
+  display: block;
+  overflow: hidden;
+  outline: none !important;
+}
+.irs-bar {
+  position: absolute;
+  display: block;
+  left: 0;
+  width: 0;
+}
+.irs-shadow {
+  position: absolute;
+  display: none;
+  left: 0;
+  width: 0;
+}
+.irs-handle {
+  position: absolute;
+  display: block;
+  box-sizing: border-box;
+  cursor: default;
+  z-index: 1;
+}
+.irs-handle.type_last {
+  z-index: 2;
+}
+.irs-min,
+.irs-max {
+  position: absolute;
+  display: block;
+  cursor: default;
+}
+.irs-min {
+  left: 0;
+}
+.irs-max {
+  right: 0;
+}
+.irs-from,
+.irs-to,
+.irs-single {
+  position: absolute;
+  display: block;
+  top: 0;
+  left: 0;
+  cursor: default;
+  white-space: nowrap;
+}
+.irs-grid {
+  position: absolute;
+  display: none;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 20px;
+}
+.irs-with-grid .irs-grid {
+  display: block;
+}
+.irs-grid-pol {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 1px;
+  height: 8px;
+  background: #000;
+}
+.irs-grid-pol.small {
+  height: 4px;
+}
+.irs-grid-text {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  white-space: nowrap;
+  text-align: center;
+  font-size: 9px;
+  line-height: 9px;
+  padding: 0 3px;
+  color: #000;
+}
+.irs-disable-mask {
+  position: absolute;
+  display: block;
+  top: 0;
+  left: -1%;
+  width: 102%;
+  height: 100%;
+  cursor: default;
+  background: rgba(0, 0, 0, 0);
+  z-index: 2;
+}
+.lt-ie9 .irs-disable-mask {
+  background: #000;
+  filter: alpha(opacity=0);
+  cursor: not-allowed;
+}
+.irs-disabled {
+  opacity: 0.4;
+}
+.irs-hidden-input {
+  position: absolute !important;
+  display: block !important;
+  top: 0 !important;
+  left: 0 !important;
+  width: 0 !important;
+  height: 0 !important;
+  font-size: 0 !important;
+  line-height: 0 !important;
+  padding: 0 !important;
+  margin: 0 !important;
+  overflow: hidden;
+  outline: none !important;
+  z-index: -9999 !important;
+  background: none !important;
+  border-style: solid !important;
+  border-color: transparent !important;
+}
+.irs--flat {
+  height: 40px;
+}
+.irs--flat.irs-with-grid {
+  height: 60px;
+}
+.irs--flat .irs-line {
+  top: 25px;
+  height: 12px;
+  background-color: #e1e4e9;
+  border-radius: 4px;
+}
+.irs--flat .irs-bar {
+  top: 25px;
+  height: 12px;
+  background-color: #ed5565;
+}
+.irs--flat .irs-bar--single {
+  border-radius: 4px 0 0 4px;
+}
+.irs--flat .irs-shadow {
+  height: 1px;
+  bottom: 16px;
+  background-color: #e1e4e9;
+}
+.irs--flat .irs-handle {
+  top: 22px;
+  width: 16px;
+  height: 18px;
+  background-color: transparent;
+}
+.irs--flat .irs-handle > i:first-child {
+  position: absolute;
+  display: block;
+  top: 0;
+  left: 50%;
+  width: 2px;
+  height: 100%;
+  margin-left: -1px;
+  background-color: #da4453;
+}
+.irs--flat .irs-handle.state_hover > i:first-child,
+.irs--flat .irs-handle:hover > i:first-child {
+  background-color: #a43540;
+}
+.irs--flat .irs-min,
+.irs--flat .irs-max {
+  top: 0;
+  padding: 1px 3px;
+  color: #999;
+  font-size: 10px;
+  line-height: 1.333;
+  text-shadow: none;
+  background-color: #e1e4e9;
+  border-radius: 4px;
+}
+.irs--flat .irs-from,
+.irs--flat .irs-to,
+.irs--flat .irs-single {
+  color: white;
+  font-size: 10px;
+  line-height: 1.333;
+  text-shadow: none;
+  padding: 1px 5px;
+  background-color: #ed5565;
+  border-radius: 4px;
+}
+.irs--flat .irs-from:before,
+.irs--flat .irs-to:before,
+.irs--flat .irs-single:before {
+  position: absolute;
+  display: block;
+  content: "";
+  bottom: -6px;
+  left: 50%;
+  width: 0;
+  height: 0;
+  margin-left: -3px;
+  overflow: hidden;
+  border: 3px solid transparent;
+  border-top-color: #ed5565;
+}
+.irs--flat .irs-grid-pol {
+  background-color: #e1e4e9;
+}
+.irs--flat .irs-grid-text {
+  color: #999;
+}
+.irs--big {
+  height: 55px;
+}
+.irs--big.irs-with-grid {
+  height: 70px;
+}
+.irs--big .irs-line {
+  top: 33px;
+  height: 12px;
+  background-color: white;
+  background: linear-gradient(to bottom, #ddd -50%, white 150%);
+  border: 1px solid #ccc;
+  border-radius: 12px;
+}
+.irs--big .irs-bar {
+  top: 33px;
+  height: 12px;
+  background-color: #92bce0;
+  border: 1px solid #428bca;
+  background: linear-gradient(to bottom, #ffffff 0%, #428bca 30%, #b9d4ec 100%);
+  box-shadow: inset 0 0 1px 1px rgba(255, 255, 255, 0.5);
+}
+.irs--big .irs-bar--single {
+  border-radius: 12px 0 0 12px;
+}
+.irs--big .irs-shadow {
+  height: 1px;
+  bottom: 16px;
+  background-color: rgba(66, 139, 202, 0.5);
+}
+.irs--big .irs-handle {
+  top: 25px;
+  width: 30px;
+  height: 30px;
+  border: 1px solid rgba(0, 0, 0, 0.3);
+  background-color: #cbcfd5;
+  background: linear-gradient(to bottom, white 0%, #B4B9BE 30%, white 100%);
+  box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2), inset 0 0 3px 1px white;
+  border-radius: 30px;
+}
+.irs--big .irs-handle.state_hover,
+.irs--big .irs-handle:hover {
+  border-color: rgba(0, 0, 0, 0.45);
+  background-color: #939ba7;
+  background: linear-gradient(to bottom, white 0%, #919BA5 30%, white 100%);
+}
+.irs--big .irs-min,
+.irs--big .irs-max {
+  top: 0;
+  padding: 1px 5px;
+  color: white;
+  text-shadow: none;
+  background-color: #9f9f9f;
+  border-radius: 3px;
+}
+.irs--big .irs-from,
+.irs--big .irs-to,
+.irs--big .irs-single {
+  color: white;
+  text-shadow: none;
+  padding: 1px 5px;
+  background-color: #428bca;
+  background: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
+  border-radius: 3px;
+}
+.irs--big .irs-grid-pol {
+  background-color: #428bca;
+}
+.irs--big .irs-grid-text {
+  color: #428bca;
+}
+.irs--modern {
+  height: 55px;
+}
+.irs--modern.irs-with-grid {
+  height: 55px;
+}
+.irs--modern .irs-line {
+  top: 25px;
+  height: 5px;
+  background-color: #d1d6e0;
+  background: linear-gradient(to bottom, #e0e4ea 0%, #d1d6e0 100%);
+  border: 1px solid #a3adc1;
+  border-bottom-width: 0;
+  border-radius: 5px;
+}
+.irs--modern .irs-bar {
+  top: 25px;
+  height: 5px;
+  background: #20b426;
+  background: linear-gradient(to bottom, #20b426 0%, #18891d 100%);
+}
+.irs--modern .irs-bar--single {
+  border-radius: 5px 0 0 5px;
+}
+.irs--modern .irs-shadow {
+  height: 1px;
+  bottom: 21px;
+  background-color: rgba(209, 214, 224, 0.5);
+}
+.irs--modern .irs-handle {
+  top: 37px;
+  width: 12px;
+  height: 13px;
+  border: 1px solid #a3adc1;
+  border-top-width: 0;
+  box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
+  border-radius: 0 0 3px 3px;
+}
+.irs--modern .irs-handle > i:nth-child(1) {
+  position: absolute;
+  display: block;
+  top: -4px;
+  left: 1px;
+  width: 6px;
+  height: 6px;
+  border: 1px solid #a3adc1;
+  background: white;
+  transform: rotate(45deg);
+}
+.irs--modern .irs-handle > i:nth-child(2) {
+  position: absolute;
+  display: block;
+  box-sizing: border-box;
+  top: 0;
+  left: 0;
+  width: 10px;
+  height: 12px;
+  background: #e9e6e6;
+  background: linear-gradient(to bottom, white 0%, #e9e6e6 100%);
+  border-radius: 0 0 3px 3px;
+}
+.irs--modern .irs-handle > i:nth-child(3) {
+  position: absolute;
+  display: block;
+  box-sizing: border-box;
+  top: 3px;
+  left: 3px;
+  width: 4px;
+  height: 5px;
+  border-left: 1px solid #a3adc1;
+  border-right: 1px solid #a3adc1;
+}
+.irs--modern .irs-handle.state_hover,
+.irs--modern .irs-handle:hover {
+  border-color: #7685a2;
+  background: #c3c7cd;
+  background: linear-gradient(to bottom, #ffffff 0%, #919ba5 30%, #ffffff 100%);
+}
+.irs--modern .irs-handle.state_hover > i:nth-child(1),
+.irs--modern .irs-handle:hover > i:nth-child(1) {
+  border-color: #7685a2;
+}
+.irs--modern .irs-handle.state_hover > i:nth-child(3),
+.irs--modern .irs-handle:hover > i:nth-child(3) {
+  border-color: #48536a;
+}
+.irs--modern .irs-min,
+.irs--modern .irs-max {
+  top: 0;
+  font-size: 10px;
+  line-height: 1.333;
+  text-shadow: none;
+  padding: 1px 5px;
+  color: white;
+  background-color: #d1d6e0;
+  border-radius: 5px;
+}
+.irs--modern .irs-from,
+.irs--modern .irs-to,
+.irs--modern .irs-single {
+  font-size: 10px;
+  line-height: 1.333;
+  text-shadow: none;
+  padding: 1px 5px;
+  background-color: #20b426;
+  color: white;
+  border-radius: 5px;
+}
+.irs--modern .irs-from:before,
+.irs--modern .irs-to:before,
+.irs--modern .irs-single:before {
+  position: absolute;
+  display: block;
+  content: "";
+  bottom: -6px;
+  left: 50%;
+  width: 0;
+  height: 0;
+  margin-left: -3px;
+  overflow: hidden;
+  border: 3px solid transparent;
+  border-top-color: #20b426;
+}
+.irs--modern .irs-grid {
+  height: 25px;
+}
+.irs--modern .irs-grid-pol {
+  background-color: #dedede;
+}
+.irs--modern .irs-grid-text {
+  color: silver;
+  font-size: 13px;
+}
+.irs--sharp {
+  height: 50px;
+  font-size: 12px;
+  line-height: 1;
+}
+.irs--sharp.irs-with-grid {
+  height: 57px;
+}
+.irs--sharp .irs-line {
+  top: 30px;
+  height: 2px;
+  background-color: black;
+  border-radius: 2px;
+}
+.irs--sharp .irs-bar {
+  top: 30px;
+  height: 2px;
+  background-color: #ee22fa;
+}
+.irs--sharp .irs-bar--single {
+  border-radius: 2px 0 0 2px;
+}
+.irs--sharp .irs-shadow {
+  height: 1px;
+  bottom: 21px;
+  background-color: rgba(0, 0, 0, 0.5);
+}
+.irs--sharp .irs-handle {
+  top: 25px;
+  width: 10px;
+  height: 10px;
+  background-color: #a804b2;
+}
+.irs--sharp .irs-handle > i:first-child {
+  position: absolute;
+  display: block;
+  top: 100%;
+  left: 0;
+  width: 0;
+  height: 0;
+  border: 5px solid transparent;
+  border-top-color: #a804b2;
+}
+.irs--sharp .irs-handle.state_hover,
+.irs--sharp .irs-handle:hover {
+  background-color: black;
+}
+.irs--sharp .irs-handle.state_hover > i:first-child,
+.irs--sharp .irs-handle:hover > i:first-child {
+  border-top-color: black;
+}
+.irs--sharp .irs-min,
+.irs--sharp .irs-max {
+  color: white;
+  font-size: 14px;
+  line-height: 1;
+  top: 0;
+  padding: 3px 4px;
+  opacity: 0.4;
+  background-color: #a804b2;
+  border-radius: 2px;
+}
+.irs--sharp .irs-from,
+.irs--sharp .irs-to,
+.irs--sharp .irs-single {
+  font-size: 14px;
+  line-height: 1;
+  text-shadow: none;
+  padding: 3px 4px;
+  background-color: #a804b2;
+  color: white;
+  border-radius: 2px;
+}
+.irs--sharp .irs-from:before,
+.irs--sharp .irs-to:before,
+.irs--sharp .irs-single:before {
+  position: absolute;
+  display: block;
+  content: "";
+  bottom: -6px;
+  left: 50%;
+  width: 0;
+  height: 0;
+  margin-left: -3px;
+  overflow: hidden;
+  border: 3px solid transparent;
+  border-top-color: #a804b2;
+}
+.irs--sharp .irs-grid {
+  height: 25px;
+}
+.irs--sharp .irs-grid-pol {
+  background-color: #dedede;
+}
+.irs--sharp .irs-grid-text {
+  color: silver;
+  font-size: 13px;
+}
+.irs--round {
+  height: 50px;
+}
+.irs--round.irs-with-grid {
+  height: 65px;
+}
+.irs--round .irs-line {
+  top: 36px;
+  height: 4px;
+  background-color: #dee4ec;
+  border-radius: 4px;
+}
+.irs--round .irs-bar {
+  top: 36px;
+  height: 4px;
+  background-color: #006cfa;
+}
+.irs--round .irs-bar--single {
+  border-radius: 4px 0 0 4px;
+}
+.irs--round .irs-shadow {
+  height: 4px;
+  bottom: 21px;
+  background-color: rgba(222, 228, 236, 0.5);
+}
+.irs--round .irs-handle {
+  top: 26px;
+  width: 24px;
+  height: 24px;
+  border: 4px solid #006cfa;
+  background-color: white;
+  border-radius: 24px;
+  box-shadow: 0 1px 3px rgba(0, 0, 255, 0.3);
+}
+.irs--round .irs-handle.state_hover,
+.irs--round .irs-handle:hover {
+  background-color: #f0f6ff;
+}
+.irs--round .irs-min,
+.irs--round .irs-max {
+  color: #333;
+  font-size: 14px;
+  line-height: 1;
+  top: 0;
+  padding: 3px 5px;
+  background-color: rgba(0, 0, 0, 0.1);
+  border-radius: 4px;
+}
+.irs--round .irs-from,
+.irs--round .irs-to,
+.irs--round .irs-single {
+  font-size: 14px;
+  line-height: 1;
+  text-shadow: none;
+  padding: 3px 5px;
+  background-color: #006cfa;
+  color: white;
+  border-radius: 4px;
+}
+.irs--round .irs-from:before,
+.irs--round .irs-to:before,
+.irs--round .irs-single:before {
+  position: absolute;
+  display: block;
+  content: "";
+  bottom: -6px;
+  left: 50%;
+  width: 0;
+  height: 0;
+  margin-left: -3px;
+  overflow: hidden;
+  border: 3px solid transparent;
+  border-top-color: #006cfa;
+}
+.irs--round .irs-grid {
+  height: 25px;
+}
+.irs--round .irs-grid-pol {
+  background-color: #dedede;
+}
+.irs--round .irs-grid-text {
+  color: silver;
+  font-size: 13px;
+}
+.irs--square {
+  height: 50px;
+}
+.irs--square.irs-with-grid {
+  height: 60px;
+}
+.irs--square .irs-line {
+  top: 31px;
+  height: 4px;
+  background-color: #dedede;
+}
+.irs--square .irs-bar {
+  top: 31px;
+  height: 4px;
+  background-color: black;
+}
+.irs--square .irs-shadow {
+  height: 2px;
+  bottom: 21px;
+  background-color: #dedede;
+}
+.irs--square .irs-handle {
+  top: 25px;
+  width: 16px;
+  height: 16px;
+  border: 3px solid black;
+  background-color: white;
+  -webkit-transform: rotate(45deg);
+  -ms-transform: rotate(45deg);
+  transform: rotate(45deg);
+}
+.irs--square .irs-handle.state_hover,
+.irs--square .irs-handle:hover {
+  background-color: #f0f6ff;
+}
+.irs--square .irs-min,
+.irs--square .irs-max {
+  color: #333;
+  font-size: 14px;
+  line-height: 1;
+  top: 0;
+  padding: 3px 5px;
+  background-color: rgba(0, 0, 0, 0.1);
+}
+.irs--square .irs-from,
+.irs--square .irs-to,
+.irs--square .irs-single {
+  font-size: 14px;
+  line-height: 1;
+  text-shadow: none;
+  padding: 3px 5px;
+  background-color: black;
+  color: white;
+}
+.irs--square .irs-grid {
+  height: 25px;
+}
+.irs--square .irs-grid-pol {
+  background-color: #dedede;
+}
+.irs--square .irs-grid-text {
+  color: silver;
+  font-size: 11px;
+}
Index: public/vendors/range-slider/css/ion.rangeSlider.min.css
===================================================================
--- public/vendors/range-slider/css/ion.rangeSlider.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/range-slider/css/ion.rangeSlider.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+/*!Ion.RangeSlider, 2.3.0, © Denis Ineshin, 2010 - 2018, IonDen.com, Build date: 2018-12-12 00:07:25*/.irs{position:relative;display:block;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:12px;font-family:Arial,sans-serif}.irs-line{position:relative;display:block;overflow:hidden;outline:none !important}.irs-bar{position:absolute;display:block;left:0;width:0}.irs-shadow{position:absolute;display:none;left:0;width:0}.irs-handle{position:absolute;display:block;box-sizing:border-box;cursor:default;z-index:1}.irs-handle.type_last{z-index:2}.irs-min,.irs-max{position:absolute;display:block;cursor:default}.irs-min{left:0}.irs-max{right:0}.irs-from,.irs-to,.irs-single{position:absolute;display:block;top:0;left:0;cursor:default;white-space:nowrap}.irs-grid{position:absolute;display:none;bottom:0;left:0;width:100%;height:20px}.irs-with-grid .irs-grid{display:block}.irs-grid-pol{position:absolute;top:0;left:0;width:1px;height:8px;background:#000}.irs-grid-pol.small{height:4px}.irs-grid-text{position:absolute;bottom:0;left:0;white-space:nowrap;text-align:center;font-size:9px;line-height:9px;padding:0 3px;color:#000}.irs-disable-mask{position:absolute;display:block;top:0;left:-1%;width:102%;height:100%;cursor:default;background:rgba(0,0,0,0);z-index:2}.lt-ie9 .irs-disable-mask{background:#000;filter:alpha(opacity=0);cursor:not-allowed}.irs-disabled{opacity:.4}.irs-hidden-input{position:absolute !important;display:block !important;top:0 !important;left:0 !important;width:0 !important;height:0 !important;font-size:0 !important;line-height:0 !important;padding:0 !important;margin:0 !important;overflow:hidden;outline:none !important;z-index:-9999 !important;background:none !important;border-style:solid !important;border-color:transparent !important}.irs--flat{height:40px}.irs--flat.irs-with-grid{height:60px}.irs--flat .irs-line{top:25px;height:12px;background-color:#e1e4e9;border-radius:4px}.irs--flat .irs-bar{top:25px;height:12px;background-color:#ed5565}.irs--flat .irs-bar--single{border-radius:4px 0 0 4px}.irs--flat .irs-shadow{height:1px;bottom:16px;background-color:#e1e4e9}.irs--flat .irs-handle{top:22px;width:16px;height:18px;background-color:transparent}.irs--flat .irs-handle>i:first-child{position:absolute;display:block;top:0;left:50%;width:2px;height:100%;margin-left:-1px;background-color:#da4453}.irs--flat .irs-handle.state_hover>i:first-child,.irs--flat .irs-handle:hover>i:first-child{background-color:#a43540}.irs--flat .irs-min,.irs--flat .irs-max{top:0;padding:1px 3px;color:#999;font-size:10px;line-height:1.333;text-shadow:none;background-color:#e1e4e9;border-radius:4px}.irs--flat .irs-from,.irs--flat .irs-to,.irs--flat .irs-single{color:white;font-size:10px;line-height:1.333;text-shadow:none;padding:1px 5px;background-color:#ed5565;border-radius:4px}.irs--flat .irs-from:before,.irs--flat .irs-to:before,.irs--flat .irs-single:before{position:absolute;display:block;content:"";bottom:-6px;left:50%;width:0;height:0;margin-left:-3px;overflow:hidden;border:3px solid transparent;border-top-color:#ed5565}.irs--flat .irs-grid-pol{background-color:#e1e4e9}.irs--flat .irs-grid-text{color:#999}.irs--big{height:55px}.irs--big.irs-with-grid{height:70px}.irs--big .irs-line{top:33px;height:12px;background-color:white;background:linear-gradient(to bottom, #ddd -50%, white 150%);border:1px solid #ccc;border-radius:12px}.irs--big .irs-bar{top:33px;height:12px;background-color:#92bce0;border:1px solid #428bca;background:linear-gradient(to bottom, #ffffff 0%, #428bca 30%, #b9d4ec 100%);box-shadow:inset 0 0 1px 1px rgba(255,255,255,0.5)}.irs--big .irs-bar--single{border-radius:12px 0 0 12px}.irs--big .irs-shadow{height:1px;bottom:16px;background-color:rgba(66,139,202,0.5)}.irs--big .irs-handle{top:25px;width:30px;height:30px;border:1px solid rgba(0,0,0,0.3);background-color:#cbcfd5;background:linear-gradient(to bottom, white 0%, #B4B9BE 30%, white 100%);box-shadow:1px 1px 2px rgba(0,0,0,0.2),inset 0 0 3px 1px white;border-radius:30px}.irs--big .irs-handle.state_hover,.irs--big .irs-handle:hover{border-color:rgba(0,0,0,0.45);background-color:#939ba7;background:linear-gradient(to bottom, white 0%, #919BA5 30%, white 100%)}.irs--big .irs-min,.irs--big .irs-max{top:0;padding:1px 5px;color:white;text-shadow:none;background-color:#9f9f9f;border-radius:3px}.irs--big .irs-from,.irs--big .irs-to,.irs--big .irs-single{color:white;text-shadow:none;padding:1px 5px;background-color:#428bca;background:linear-gradient(to bottom, #428bca 0%, #3071a9 100%);border-radius:3px}.irs--big .irs-grid-pol{background-color:#428bca}.irs--big .irs-grid-text{color:#428bca}.irs--modern{height:55px}.irs--modern.irs-with-grid{height:55px}.irs--modern .irs-line{top:25px;height:5px;background-color:#d1d6e0;background:linear-gradient(to bottom, #e0e4ea 0%, #d1d6e0 100%);border:1px solid #a3adc1;border-bottom-width:0;border-radius:5px}.irs--modern .irs-bar{top:25px;height:5px;background:#20b426;background:linear-gradient(to bottom, #20b426 0%, #18891d 100%)}.irs--modern .irs-bar--single{border-radius:5px 0 0 5px}.irs--modern .irs-shadow{height:1px;bottom:21px;background-color:rgba(209,214,224,0.5)}.irs--modern .irs-handle{top:37px;width:12px;height:13px;border:1px solid #a3adc1;border-top-width:0;box-shadow:1px 1px 1px rgba(0,0,0,0.1);border-radius:0 0 3px 3px}.irs--modern .irs-handle>i:nth-child(1){position:absolute;display:block;top:-4px;left:1px;width:6px;height:6px;border:1px solid #a3adc1;background:white;transform:rotate(45deg)}.irs--modern .irs-handle>i:nth-child(2){position:absolute;display:block;box-sizing:border-box;top:0;left:0;width:10px;height:12px;background:#e9e6e6;background:linear-gradient(to bottom, white 0%, #e9e6e6 100%);border-radius:0 0 3px 3px}.irs--modern .irs-handle>i:nth-child(3){position:absolute;display:block;box-sizing:border-box;top:3px;left:3px;width:4px;height:5px;border-left:1px solid #a3adc1;border-right:1px solid #a3adc1}.irs--modern .irs-handle.state_hover,.irs--modern .irs-handle:hover{border-color:#7685a2;background:#c3c7cd;background:linear-gradient(to bottom, #ffffff 0%, #919ba5 30%, #ffffff 100%)}.irs--modern .irs-handle.state_hover>i:nth-child(1),.irs--modern .irs-handle:hover>i:nth-child(1){border-color:#7685a2}.irs--modern .irs-handle.state_hover>i:nth-child(3),.irs--modern .irs-handle:hover>i:nth-child(3){border-color:#48536a}.irs--modern .irs-min,.irs--modern .irs-max{top:0;font-size:10px;line-height:1.333;text-shadow:none;padding:1px 5px;color:white;background-color:#d1d6e0;border-radius:5px}.irs--modern .irs-from,.irs--modern .irs-to,.irs--modern .irs-single{font-size:10px;line-height:1.333;text-shadow:none;padding:1px 5px;background-color:#20b426;color:white;border-radius:5px}.irs--modern .irs-from:before,.irs--modern .irs-to:before,.irs--modern .irs-single:before{position:absolute;display:block;content:"";bottom:-6px;left:50%;width:0;height:0;margin-left:-3px;overflow:hidden;border:3px solid transparent;border-top-color:#20b426}.irs--modern .irs-grid{height:25px}.irs--modern .irs-grid-pol{background-color:#dedede}.irs--modern .irs-grid-text{color:silver;font-size:13px}.irs--sharp{height:50px;font-size:12px;line-height:1}.irs--sharp.irs-with-grid{height:57px}.irs--sharp .irs-line{top:30px;height:2px;background-color:black;border-radius:2px}.irs--sharp .irs-bar{top:30px;height:2px;background-color:#ee22fa}.irs--sharp .irs-bar--single{border-radius:2px 0 0 2px}.irs--sharp .irs-shadow{height:1px;bottom:21px;background-color:rgba(0,0,0,0.5)}.irs--sharp .irs-handle{top:25px;width:10px;height:10px;background-color:#a804b2}.irs--sharp .irs-handle>i:first-child{position:absolute;display:block;top:100%;left:0;width:0;height:0;border:5px solid transparent;border-top-color:#a804b2}.irs--sharp .irs-handle.state_hover,.irs--sharp .irs-handle:hover{background-color:black}.irs--sharp .irs-handle.state_hover>i:first-child,.irs--sharp .irs-handle:hover>i:first-child{border-top-color:black}.irs--sharp .irs-min,.irs--sharp .irs-max{color:white;font-size:14px;line-height:1;top:0;padding:3px 4px;opacity:.4;background-color:#a804b2;border-radius:2px}.irs--sharp .irs-from,.irs--sharp .irs-to,.irs--sharp .irs-single{font-size:14px;line-height:1;text-shadow:none;padding:3px 4px;background-color:#a804b2;color:white;border-radius:2px}.irs--sharp .irs-from:before,.irs--sharp .irs-to:before,.irs--sharp .irs-single:before{position:absolute;display:block;content:"";bottom:-6px;left:50%;width:0;height:0;margin-left:-3px;overflow:hidden;border:3px solid transparent;border-top-color:#a804b2}.irs--sharp .irs-grid{height:25px}.irs--sharp .irs-grid-pol{background-color:#dedede}.irs--sharp .irs-grid-text{color:silver;font-size:13px}.irs--round{height:50px}.irs--round.irs-with-grid{height:65px}.irs--round .irs-line{top:36px;height:4px;background-color:#dee4ec;border-radius:4px}.irs--round .irs-bar{top:36px;height:4px;background-color:#006cfa}.irs--round .irs-bar--single{border-radius:4px 0 0 4px}.irs--round .irs-shadow{height:4px;bottom:21px;background-color:rgba(222,228,236,0.5)}.irs--round .irs-handle{top:26px;width:24px;height:24px;border:4px solid #006cfa;background-color:white;border-radius:24px;box-shadow:0 1px 3px rgba(0,0,255,0.3)}.irs--round .irs-handle.state_hover,.irs--round .irs-handle:hover{background-color:#f0f6ff}.irs--round .irs-min,.irs--round .irs-max{color:#333;font-size:14px;line-height:1;top:0;padding:3px 5px;background-color:rgba(0,0,0,0.1);border-radius:4px}.irs--round .irs-from,.irs--round .irs-to,.irs--round .irs-single{font-size:14px;line-height:1;text-shadow:none;padding:3px 5px;background-color:#006cfa;color:white;border-radius:4px}.irs--round .irs-from:before,.irs--round .irs-to:before,.irs--round .irs-single:before{position:absolute;display:block;content:"";bottom:-6px;left:50%;width:0;height:0;margin-left:-3px;overflow:hidden;border:3px solid transparent;border-top-color:#006cfa}.irs--round .irs-grid{height:25px}.irs--round .irs-grid-pol{background-color:#dedede}.irs--round .irs-grid-text{color:silver;font-size:13px}.irs--square{height:50px}.irs--square.irs-with-grid{height:60px}.irs--square .irs-line{top:31px;height:4px;background-color:#dedede}.irs--square .irs-bar{top:31px;height:4px;background-color:black}.irs--square .irs-shadow{height:2px;bottom:21px;background-color:#dedede}.irs--square .irs-handle{top:25px;width:16px;height:16px;border:3px solid black;background-color:white;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.irs--square .irs-handle.state_hover,.irs--square .irs-handle:hover{background-color:#f0f6ff}.irs--square .irs-min,.irs--square .irs-max{color:#333;font-size:14px;line-height:1;top:0;padding:3px 5px;background-color:rgba(0,0,0,0.1)}.irs--square .irs-from,.irs--square .irs-to,.irs--square .irs-single{font-size:14px;line-height:1;text-shadow:none;padding:3px 5px;background-color:black;color:white}.irs--square .irs-grid{height:25px}.irs--square .irs-grid-pol{background-color:#dedede}.irs--square .irs-grid-text{color:silver;font-size:11px}
Index: public/vendors/range-slider/js/ion.rangeSlider.js
===================================================================
--- public/vendors/range-slider/js/ion.rangeSlider.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/range-slider/js/ion.rangeSlider.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2449 @@
+// Ion.RangeSlider
+// version 2.3.0 Build: 381
+// © Denis Ineshin, 2018
+// https://github.com/IonDen
+//
+// Project page:    http://ionden.com/a/plugins/ion.rangeSlider/en.html
+// GitHub page:     https://github.com/IonDen/ion.rangeSlider
+//
+// Released under MIT licence:
+// http://ionden.com/a/plugins/licence-en.html
+// =====================================================================================================================
+
+;(function(factory) {
+    if (!jQuery && typeof define === "function" && define.amd) {
+        define(["jquery"], function (jQuery) {
+            return factory(jQuery, document, window, navigator);
+        });
+    } else if (!jQuery && typeof exports === "object") {
+        factory(require("jquery"), document, window, navigator);
+    } else {
+        factory(jQuery, document, window, navigator);
+    }
+} (function ($, document, window, navigator, undefined) {
+    "use strict";
+
+    // =================================================================================================================
+    // Service
+
+    var plugin_count = 0;
+
+    // IE8 fix
+    var is_old_ie = (function () {
+        var n = navigator.userAgent,
+            r = /msie\s\d+/i,
+            v;
+        if (n.search(r) > 0) {
+            v = r.exec(n).toString();
+            v = v.split(" ")[1];
+            if (v < 9) {
+                $("html").addClass("lt-ie9");
+                return true;
+            }
+        }
+        return false;
+    } ());
+    if (!Function.prototype.bind) {
+        Function.prototype.bind = function bind(that) {
+
+            var target = this;
+            var slice = [].slice;
+
+            if (typeof target != "function") {
+                throw new TypeError();
+            }
+
+            var args = slice.call(arguments, 1),
+                bound = function () {
+
+                    if (this instanceof bound) {
+
+                        var F = function(){};
+                        F.prototype = target.prototype;
+                        var self = new F();
+
+                        var result = target.apply(
+                            self,
+                            args.concat(slice.call(arguments))
+                        );
+                        if (Object(result) === result) {
+                            return result;
+                        }
+                        return self;
+
+                    } else {
+
+                        return target.apply(
+                            that,
+                            args.concat(slice.call(arguments))
+                        );
+
+                    }
+
+                };
+
+            return bound;
+        };
+    }
+    if (!Array.prototype.indexOf) {
+        Array.prototype.indexOf = function(searchElement, fromIndex) {
+            var k;
+            if (this == null) {
+                throw new TypeError('"this" is null or not defined');
+            }
+            var O = Object(this);
+            var len = O.length >>> 0;
+            if (len === 0) {
+                return -1;
+            }
+            var n = +fromIndex || 0;
+            if (Math.abs(n) === Infinity) {
+                n = 0;
+            }
+            if (n >= len) {
+                return -1;
+            }
+            k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+            while (k < len) {
+                if (k in O && O[k] === searchElement) {
+                    return k;
+                }
+                k++;
+            }
+            return -1;
+        };
+    }
+
+
+
+    // =================================================================================================================
+    // Template
+
+    var base_html =
+        '<span class="irs">' +
+        '<span class="irs-line" tabindex="0"></span>' +
+        '<span class="irs-min">0</span><span class="irs-max">1</span>' +
+        '<span class="irs-from">0</span><span class="irs-to">0</span><span class="irs-single">0</span>' +
+        '</span>' +
+        '<span class="irs-grid"></span>';
+
+    var single_html =
+        '<span class="irs-bar irs-bar--single"></span>' +
+        '<span class="irs-shadow shadow-single"></span>' +
+        '<span class="irs-handle single"><i></i><i></i><i></i></span>';
+
+    var double_html =
+        '<span class="irs-bar"></span>' +
+        '<span class="irs-shadow shadow-from"></span>' +
+        '<span class="irs-shadow shadow-to"></span>' +
+        '<span class="irs-handle from"><i></i><i></i><i></i></span>' +
+        '<span class="irs-handle to"><i></i><i></i><i></i></span>';
+
+    var disable_html =
+        '<span class="irs-disable-input-mask"></span>';
+
+
+
+    // =================================================================================================================
+    // Core
+
+    /**
+     * Main plugin constructor
+     *
+     * @param input {Object} link to base input element
+     * @param options {Object} slider config
+     * @param plugin_count {Number}
+     * @constructor
+     */
+    var IonRangeSlider = function (input, options, plugin_count) {
+        this.VERSION = "2.3.0";
+        this.input = input;
+        this.plugin_count = plugin_count;
+        this.current_plugin = 0;
+        this.calc_count = 0;
+        this.update_tm = 0;
+        this.old_from = 0;
+        this.old_to = 0;
+        this.old_min_interval = null;
+        this.raf_id = null;
+        this.dragging = false;
+        this.force_redraw = false;
+        this.no_diapason = false;
+        this.has_tab_index = true;
+        this.is_key = false;
+        this.is_update = false;
+        this.is_start = true;
+        this.is_finish = false;
+        this.is_active = false;
+        this.is_resize = false;
+        this.is_click = false;
+
+        options = options || {};
+
+        // cache for links to all DOM elements
+        this.$cache = {
+            win: $(window),
+            body: $(document.body),
+            input: $(input),
+            cont: null,
+            rs: null,
+            min: null,
+            max: null,
+            from: null,
+            to: null,
+            single: null,
+            bar: null,
+            line: null,
+            s_single: null,
+            s_from: null,
+            s_to: null,
+            shad_single: null,
+            shad_from: null,
+            shad_to: null,
+            edge: null,
+            grid: null,
+            grid_labels: []
+        };
+
+        // storage for measure variables
+        this.coords = {
+            // left
+            x_gap: 0,
+            x_pointer: 0,
+
+            // width
+            w_rs: 0,
+            w_rs_old: 0,
+            w_handle: 0,
+
+            // percents
+            p_gap: 0,
+            p_gap_left: 0,
+            p_gap_right: 0,
+            p_step: 0,
+            p_pointer: 0,
+            p_handle: 0,
+            p_single_fake: 0,
+            p_single_real: 0,
+            p_from_fake: 0,
+            p_from_real: 0,
+            p_to_fake: 0,
+            p_to_real: 0,
+            p_bar_x: 0,
+            p_bar_w: 0,
+
+            // grid
+            grid_gap: 0,
+            big_num: 0,
+            big: [],
+            big_w: [],
+            big_p: [],
+            big_x: []
+        };
+
+        // storage for labels measure variables
+        this.labels = {
+            // width
+            w_min: 0,
+            w_max: 0,
+            w_from: 0,
+            w_to: 0,
+            w_single: 0,
+
+            // percents
+            p_min: 0,
+            p_max: 0,
+            p_from_fake: 0,
+            p_from_left: 0,
+            p_to_fake: 0,
+            p_to_left: 0,
+            p_single_fake: 0,
+            p_single_left: 0
+        };
+
+
+
+        /**
+         * get and validate config
+         */
+        var $inp = this.$cache.input,
+            val = $inp.prop("value"),
+            config, config_from_data, prop;
+
+        // default config
+        config = {
+            skin: "flat",
+            type: "single",
+
+            min: 10,
+            max: 100,
+            from: null,
+            to: null,
+            step: 1,
+
+            min_interval: 0,
+            max_interval: 0,
+            drag_interval: false,
+
+            values: [],
+            p_values: [],
+
+            from_fixed: false,
+            from_min: null,
+            from_max: null,
+            from_shadow: false,
+
+            to_fixed: false,
+            to_min: null,
+            to_max: null,
+            to_shadow: false,
+
+            prettify_enabled: true,
+            prettify_separator: " ",
+            prettify: null,
+
+            force_edges: false,
+
+            keyboard: true,
+
+            grid: false,
+            grid_margin: true,
+            grid_num: 4,
+            grid_snap: false,
+
+            hide_min_max: false,
+            hide_from_to: false,
+
+            prefix: "",
+            postfix: "",
+            max_postfix: "",
+            decorate_both: true,
+            values_separator: " — ",
+
+            input_values_separator: ";",
+
+            disable: false,
+            block: false,
+
+            extra_classes: "",
+
+            scope: null,
+            onStart: null,
+            onChange: null,
+            onFinish: null,
+            onUpdate: null
+        };
+
+
+        // check if base element is input
+        if ($inp[0].nodeName !== "INPUT") {
+            console && console.warn && console.warn("Base element should be <input>!", $inp[0]);
+        }
+
+
+        // config from data-attributes extends js config
+        config_from_data = {
+            skin: $inp.data("skin"),
+            type: $inp.data("type"),
+
+            min: $inp.data("min"),
+            max: $inp.data("max"),
+            from: $inp.data("from"),
+            to: $inp.data("to"),
+            step: $inp.data("step"),
+
+            min_interval: $inp.data("minInterval"),
+            max_interval: $inp.data("maxInterval"),
+            drag_interval: $inp.data("dragInterval"),
+
+            values: $inp.data("values"),
+
+            from_fixed: $inp.data("fromFixed"),
+            from_min: $inp.data("fromMin"),
+            from_max: $inp.data("fromMax"),
+            from_shadow: $inp.data("fromShadow"),
+
+            to_fixed: $inp.data("toFixed"),
+            to_min: $inp.data("toMin"),
+            to_max: $inp.data("toMax"),
+            to_shadow: $inp.data("toShadow"),
+
+            prettify_enabled: $inp.data("prettifyEnabled"),
+            prettify_separator: $inp.data("prettifySeparator"),
+
+            force_edges: $inp.data("forceEdges"),
+
+            keyboard: $inp.data("keyboard"),
+
+            grid: $inp.data("grid"),
+            grid_margin: $inp.data("gridMargin"),
+            grid_num: $inp.data("gridNum"),
+            grid_snap: $inp.data("gridSnap"),
+
+            hide_min_max: $inp.data("hideMinMax"),
+            hide_from_to: $inp.data("hideFromTo"),
+
+            prefix: $inp.data("prefix"),
+            postfix: $inp.data("postfix"),
+            max_postfix: $inp.data("maxPostfix"),
+            decorate_both: $inp.data("decorateBoth"),
+            values_separator: $inp.data("valuesSeparator"),
+
+            input_values_separator: $inp.data("inputValuesSeparator"),
+
+            disable: $inp.data("disable"),
+            block: $inp.data("block"),
+
+            extra_classes: $inp.data("extraClasses"),
+        };
+        config_from_data.values = config_from_data.values && config_from_data.values.split(",");
+
+        for (prop in config_from_data) {
+            if (config_from_data.hasOwnProperty(prop)) {
+                if (config_from_data[prop] === undefined || config_from_data[prop] === "") {
+                    delete config_from_data[prop];
+                }
+            }
+        }
+
+
+        // input value extends default config
+        if (val !== undefined && val !== "") {
+            val = val.split(config_from_data.input_values_separator || options.input_values_separator || ";");
+
+            if (val[0] && val[0] == +val[0]) {
+                val[0] = +val[0];
+            }
+            if (val[1] && val[1] == +val[1]) {
+                val[1] = +val[1];
+            }
+
+            if (options && options.values && options.values.length) {
+                config.from = val[0] && options.values.indexOf(val[0]);
+                config.to = val[1] && options.values.indexOf(val[1]);
+            } else {
+                config.from = val[0] && +val[0];
+                config.to = val[1] && +val[1];
+            }
+        }
+
+
+
+        // js config extends default config
+        $.extend(config, options);
+
+
+        // data config extends config
+        $.extend(config, config_from_data);
+        this.options = config;
+
+
+
+        // validate config, to be sure that all data types are correct
+        this.update_check = {};
+        this.validate();
+
+
+
+        // default result object, returned to callbacks
+        this.result = {
+            input: this.$cache.input,
+            slider: null,
+
+            min: this.options.min,
+            max: this.options.max,
+
+            from: this.options.from,
+            from_percent: 0,
+            from_value: null,
+
+            to: this.options.to,
+            to_percent: 0,
+            to_value: null
+        };
+
+
+
+        this.init();
+    };
+
+    IonRangeSlider.prototype = {
+
+        /**
+         * Starts or updates the plugin instance
+         *
+         * @param [is_update] {boolean}
+         */
+        init: function (is_update) {
+            this.no_diapason = false;
+            this.coords.p_step = this.convertToPercent(this.options.step, true);
+
+            this.target = "base";
+
+            this.toggleInput();
+            this.append();
+            this.setMinMax();
+
+            if (is_update) {
+                this.force_redraw = true;
+                this.calc(true);
+
+                // callbacks called
+                this.callOnUpdate();
+            } else {
+                this.force_redraw = true;
+                this.calc(true);
+
+                // callbacks called
+                this.callOnStart();
+            }
+
+            this.updateScene();
+        },
+
+        /**
+         * Appends slider template to a DOM
+         */
+        append: function () {
+            var container_html = '<span class="irs irs--' + this.options.skin + ' js-irs-' + this.plugin_count + ' ' + this.options.extra_classes + '"></span>';
+            this.$cache.input.before(container_html);
+            this.$cache.input.prop("readonly", true);
+            this.$cache.cont = this.$cache.input.prev();
+            this.result.slider = this.$cache.cont;
+
+            this.$cache.cont.html(base_html);
+            this.$cache.rs = this.$cache.cont.find(".irs");
+            this.$cache.min = this.$cache.cont.find(".irs-min");
+            this.$cache.max = this.$cache.cont.find(".irs-max");
+            this.$cache.from = this.$cache.cont.find(".irs-from");
+            this.$cache.to = this.$cache.cont.find(".irs-to");
+            this.$cache.single = this.$cache.cont.find(".irs-single");
+            this.$cache.line = this.$cache.cont.find(".irs-line");
+            this.$cache.grid = this.$cache.cont.find(".irs-grid");
+
+            if (this.options.type === "single") {
+                this.$cache.cont.append(single_html);
+                this.$cache.bar = this.$cache.cont.find(".irs-bar");
+                this.$cache.edge = this.$cache.cont.find(".irs-bar-edge");
+                this.$cache.s_single = this.$cache.cont.find(".single");
+                this.$cache.from[0].style.visibility = "hidden";
+                this.$cache.to[0].style.visibility = "hidden";
+                this.$cache.shad_single = this.$cache.cont.find(".shadow-single");
+            } else {
+                this.$cache.cont.append(double_html);
+                this.$cache.bar = this.$cache.cont.find(".irs-bar");
+                this.$cache.s_from = this.$cache.cont.find(".from");
+                this.$cache.s_to = this.$cache.cont.find(".to");
+                this.$cache.shad_from = this.$cache.cont.find(".shadow-from");
+                this.$cache.shad_to = this.$cache.cont.find(".shadow-to");
+
+                this.setTopHandler();
+            }
+
+            if (this.options.hide_from_to) {
+                this.$cache.from[0].style.display = "none";
+                this.$cache.to[0].style.display = "none";
+                this.$cache.single[0].style.display = "none";
+            }
+
+            this.appendGrid();
+
+            if (this.options.disable) {
+                this.appendDisableMask();
+                this.$cache.input[0].disabled = true;
+            } else {
+                this.$cache.input[0].disabled = false;
+                this.removeDisableMask();
+                this.bindEvents();
+            }
+
+            // block only if not disabled
+            if (!this.options.disable) {
+                if (this.options.block) {
+                    this.appendDisableMask();
+                } else {
+                    this.removeDisableMask();
+                }
+            }
+
+            if (this.options.drag_interval) {
+                this.$cache.bar[0].style.cursor = "ew-resize";
+            }
+        },
+
+        /**
+         * Determine which handler has a priority
+         * works only for double slider type
+         */
+        setTopHandler: function () {
+            var min = this.options.min,
+                max = this.options.max,
+                from = this.options.from,
+                to = this.options.to;
+
+            if (from > min && to === max) {
+                this.$cache.s_from.addClass("type_last");
+            } else if (to < max) {
+                this.$cache.s_to.addClass("type_last");
+            }
+        },
+
+        /**
+         * Determine which handles was clicked last
+         * and which handler should have hover effect
+         *
+         * @param target {String}
+         */
+        changeLevel: function (target) {
+            switch (target) {
+                case "single":
+                    this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_single_fake);
+                    this.$cache.s_single.addClass("state_hover");
+                    break;
+                case "from":
+                    this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_from_fake);
+                    this.$cache.s_from.addClass("state_hover");
+                    this.$cache.s_from.addClass("type_last");
+                    this.$cache.s_to.removeClass("type_last");
+                    break;
+                case "to":
+                    this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_to_fake);
+                    this.$cache.s_to.addClass("state_hover");
+                    this.$cache.s_to.addClass("type_last");
+                    this.$cache.s_from.removeClass("type_last");
+                    break;
+                case "both":
+                    this.coords.p_gap_left = this.toFixed(this.coords.p_pointer - this.coords.p_from_fake);
+                    this.coords.p_gap_right = this.toFixed(this.coords.p_to_fake - this.coords.p_pointer);
+                    this.$cache.s_to.removeClass("type_last");
+                    this.$cache.s_from.removeClass("type_last");
+                    break;
+            }
+        },
+
+        /**
+         * Then slider is disabled
+         * appends extra layer with opacity
+         */
+        appendDisableMask: function () {
+            this.$cache.cont.append(disable_html);
+            this.$cache.cont.addClass("irs-disabled");
+        },
+
+        /**
+         * Then slider is not disabled
+         * remove disable input-mask
+         */
+        removeDisableMask: function () {
+            this.$cache.cont.remove(".irs-disable-input-mask");
+            this.$cache.cont.removeClass("irs-disabled");
+        },
+
+        /**
+         * Remove slider instance
+         * and unbind all events
+         */
+        remove: function () {
+            this.$cache.cont.remove();
+            this.$cache.cont = null;
+
+            this.$cache.line.off("keydown.irs_" + this.plugin_count);
+
+            this.$cache.body.off("touchmove.irs_" + this.plugin_count);
+            this.$cache.body.off("mousemove.irs_" + this.plugin_count);
+
+            this.$cache.win.off("touchend.irs_" + this.plugin_count);
+            this.$cache.win.off("mouseup.irs_" + this.plugin_count);
+
+            if (is_old_ie) {
+                this.$cache.body.off("mouseup.irs_" + this.plugin_count);
+                this.$cache.body.off("mouseleave.irs_" + this.plugin_count);
+            }
+
+            this.$cache.grid_labels = [];
+            this.coords.big = [];
+            this.coords.big_w = [];
+            this.coords.big_p = [];
+            this.coords.big_x = [];
+
+            cancelAnimationFrame(this.raf_id);
+        },
+
+        /**
+         * bind all slider events
+         */
+        bindEvents: function () {
+            if (this.no_diapason) {
+                return;
+            }
+
+            this.$cache.body.on("touchmove.irs_" + this.plugin_count, this.pointerMove.bind(this));
+            this.$cache.body.on("mousemove.irs_" + this.plugin_count, this.pointerMove.bind(this));
+
+            this.$cache.win.on("touchend.irs_" + this.plugin_count, this.pointerUp.bind(this));
+            this.$cache.win.on("mouseup.irs_" + this.plugin_count, this.pointerUp.bind(this));
+
+            this.$cache.line.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
+            this.$cache.line.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
+
+            this.$cache.line.on("focus.irs_" + this.plugin_count, this.pointerFocus.bind(this));
+
+            if (this.options.drag_interval && this.options.type === "double") {
+                this.$cache.bar.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "both"));
+                this.$cache.bar.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "both"));
+            } else {
+                this.$cache.bar.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
+                this.$cache.bar.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
+            }
+
+            if (this.options.type === "single") {
+                this.$cache.single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "single"));
+                this.$cache.s_single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "single"));
+                this.$cache.shad_single.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
+
+                this.$cache.single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "single"));
+                this.$cache.s_single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "single"));
+                this.$cache.edge.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
+                this.$cache.shad_single.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
+            } else {
+                this.$cache.single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, null));
+                this.$cache.single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, null));
+
+                this.$cache.from.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "from"));
+                this.$cache.s_from.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "from"));
+                this.$cache.to.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "to"));
+                this.$cache.s_to.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "to"));
+                this.$cache.shad_from.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
+                this.$cache.shad_to.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
+
+                this.$cache.from.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "from"));
+                this.$cache.s_from.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "from"));
+                this.$cache.to.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "to"));
+                this.$cache.s_to.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "to"));
+                this.$cache.shad_from.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
+                this.$cache.shad_to.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
+            }
+
+            if (this.options.keyboard) {
+                this.$cache.line.on("keydown.irs_" + this.plugin_count, this.key.bind(this, "keyboard"));
+            }
+
+            if (is_old_ie) {
+                this.$cache.body.on("mouseup.irs_" + this.plugin_count, this.pointerUp.bind(this));
+                this.$cache.body.on("mouseleave.irs_" + this.plugin_count, this.pointerUp.bind(this));
+            }
+        },
+
+        /**
+         * Focus with tabIndex
+         *
+         * @param e {Object} event object
+         */
+        pointerFocus: function (e) {
+            if (!this.target) {
+                var x;
+                var $handle;
+
+                if (this.options.type === "single") {
+                    $handle = this.$cache.single;
+                } else {
+                    $handle = this.$cache.from;
+                }
+
+                x = $handle.offset().left;
+                x += ($handle.width() / 2) - 1;
+
+                this.pointerClick("single", {preventDefault: function () {}, pageX: x});
+            }
+        },
+
+        /**
+         * Mousemove or touchmove
+         * only for handlers
+         *
+         * @param e {Object} event object
+         */
+        pointerMove: function (e) {
+            if (!this.dragging) {
+                return;
+            }
+
+            var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;
+            this.coords.x_pointer = x - this.coords.x_gap;
+
+            this.calc();
+        },
+
+        /**
+         * Mouseup or touchend
+         * only for handlers
+         *
+         * @param e {Object} event object
+         */
+        pointerUp: function (e) {
+            if (this.current_plugin !== this.plugin_count) {
+                return;
+            }
+
+            if (this.is_active) {
+                this.is_active = false;
+            } else {
+                return;
+            }
+
+            this.$cache.cont.find(".state_hover").removeClass("state_hover");
+
+            this.force_redraw = true;
+
+            if (is_old_ie) {
+                $("*").prop("unselectable", false);
+            }
+
+            this.updateScene();
+            this.restoreOriginalMinInterval();
+
+            // callbacks call
+            if ($.contains(this.$cache.cont[0], e.target) || this.dragging) {
+                this.callOnFinish();
+            }
+            
+            this.dragging = false;
+        },
+
+        /**
+         * Mousedown or touchstart
+         * only for handlers
+         *
+         * @param target {String|null}
+         * @param e {Object} event object
+         */
+        pointerDown: function (target, e) {
+            e.preventDefault();
+            var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;
+            if (e.button === 2) {
+                return;
+            }
+
+            if (target === "both") {
+                this.setTempMinInterval();
+            }
+
+            if (!target) {
+                target = this.target || "from";
+            }
+
+            this.current_plugin = this.plugin_count;
+            this.target = target;
+
+            this.is_active = true;
+            this.dragging = true;
+
+            this.coords.x_gap = this.$cache.rs.offset().left;
+            this.coords.x_pointer = x - this.coords.x_gap;
+
+            this.calcPointerPercent();
+            this.changeLevel(target);
+
+            if (is_old_ie) {
+                $("*").prop("unselectable", true);
+            }
+
+            this.$cache.line.trigger("focus");
+
+            this.updateScene();
+        },
+
+        /**
+         * Mousedown or touchstart
+         * for other slider elements, like diapason line
+         *
+         * @param target {String}
+         * @param e {Object} event object
+         */
+        pointerClick: function (target, e) {
+            e.preventDefault();
+            var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;
+            if (e.button === 2) {
+                return;
+            }
+
+            this.current_plugin = this.plugin_count;
+            this.target = target;
+
+            this.is_click = true;
+            this.coords.x_gap = this.$cache.rs.offset().left;
+            this.coords.x_pointer = +(x - this.coords.x_gap).toFixed();
+
+            this.force_redraw = true;
+            this.calc();
+
+            this.$cache.line.trigger("focus");
+        },
+
+        /**
+         * Keyborard controls for focused slider
+         *
+         * @param target {String}
+         * @param e {Object} event object
+         * @returns {boolean|undefined}
+         */
+        key: function (target, e) {
+            if (this.current_plugin !== this.plugin_count || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {
+                return;
+            }
+
+            switch (e.which) {
+                case 83: // W
+                case 65: // A
+                case 40: // DOWN
+                case 37: // LEFT
+                    e.preventDefault();
+                    this.moveByKey(false);
+                    break;
+
+                case 87: // S
+                case 68: // D
+                case 38: // UP
+                case 39: // RIGHT
+                    e.preventDefault();
+                    this.moveByKey(true);
+                    break;
+            }
+
+            return true;
+        },
+
+        /**
+         * Move by key
+         *
+         * @param right {boolean} direction to move
+         */
+        moveByKey: function (right) {
+            var p = this.coords.p_pointer;
+            var p_step = (this.options.max - this.options.min) / 100;
+            p_step = this.options.step / p_step;
+
+            if (right) {
+                p += p_step;
+            } else {
+                p -= p_step;
+            }
+
+            this.coords.x_pointer = this.toFixed(this.coords.w_rs / 100 * p);
+            this.is_key = true;
+            this.calc();
+        },
+
+        /**
+         * Set visibility and content
+         * of Min and Max labels
+         */
+        setMinMax: function () {
+            if (!this.options) {
+                return;
+            }
+
+            if (this.options.hide_min_max) {
+                this.$cache.min[0].style.display = "none";
+                this.$cache.max[0].style.display = "none";
+                return;
+            }
+
+            if (this.options.values.length) {
+                this.$cache.min.html(this.decorate(this.options.p_values[this.options.min]));
+                this.$cache.max.html(this.decorate(this.options.p_values[this.options.max]));
+            } else {
+                var min_pretty = this._prettify(this.options.min);
+                var max_pretty = this._prettify(this.options.max);
+
+                this.result.min_pretty = min_pretty;
+                this.result.max_pretty = max_pretty;
+
+                this.$cache.min.html(this.decorate(min_pretty, this.options.min));
+                this.$cache.max.html(this.decorate(max_pretty, this.options.max));
+            }
+
+            this.labels.w_min = this.$cache.min.outerWidth(false);
+            this.labels.w_max = this.$cache.max.outerWidth(false);
+        },
+
+        /**
+         * Then dragging interval, prevent interval collapsing
+         * using min_interval option
+         */
+        setTempMinInterval: function () {
+            var interval = this.result.to - this.result.from;
+
+            if (this.old_min_interval === null) {
+                this.old_min_interval = this.options.min_interval;
+            }
+
+            this.options.min_interval = interval;
+        },
+
+        /**
+         * Restore min_interval option to original
+         */
+        restoreOriginalMinInterval: function () {
+            if (this.old_min_interval !== null) {
+                this.options.min_interval = this.old_min_interval;
+                this.old_min_interval = null;
+            }
+        },
+
+
+
+        // =============================================================================================================
+        // Calculations
+
+        /**
+         * All calculations and measures start here
+         *
+         * @param update {boolean=}
+         */
+        calc: function (update) {
+            if (!this.options) {
+                return;
+            }
+
+            this.calc_count++;
+
+            if (this.calc_count === 10 || update) {
+                this.calc_count = 0;
+                this.coords.w_rs = this.$cache.rs.outerWidth(false);
+
+                this.calcHandlePercent();
+            }
+
+            if (!this.coords.w_rs) {
+                return;
+            }
+
+            this.calcPointerPercent();
+            var handle_x = this.getHandleX();
+
+
+            if (this.target === "both") {
+                this.coords.p_gap = 0;
+                handle_x = this.getHandleX();
+            }
+
+            if (this.target === "click") {
+                this.coords.p_gap = this.coords.p_handle / 2;
+                handle_x = this.getHandleX();
+
+                if (this.options.drag_interval) {
+                    this.target = "both_one";
+                } else {
+                    this.target = this.chooseHandle(handle_x);
+                }
+            }
+
+            switch (this.target) {
+                case "base":
+                    var w = (this.options.max - this.options.min) / 100,
+                        f = (this.result.from - this.options.min) / w,
+                        t = (this.result.to - this.options.min) / w;
+
+                    this.coords.p_single_real = this.toFixed(f);
+                    this.coords.p_from_real = this.toFixed(f);
+                    this.coords.p_to_real = this.toFixed(t);
+
+                    this.coords.p_single_real = this.checkDiapason(this.coords.p_single_real, this.options.from_min, this.options.from_max);
+                    this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);
+                    this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);
+
+                    this.coords.p_single_fake = this.convertToFakePercent(this.coords.p_single_real);
+                    this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);
+                    this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);
+
+                    this.target = null;
+
+                    break;
+
+                case "single":
+                    if (this.options.from_fixed) {
+                        break;
+                    }
+
+                    this.coords.p_single_real = this.convertToRealPercent(handle_x);
+                    this.coords.p_single_real = this.calcWithStep(this.coords.p_single_real);
+                    this.coords.p_single_real = this.checkDiapason(this.coords.p_single_real, this.options.from_min, this.options.from_max);
+
+                    this.coords.p_single_fake = this.convertToFakePercent(this.coords.p_single_real);
+
+                    break;
+
+                case "from":
+                    if (this.options.from_fixed) {
+                        break;
+                    }
+
+                    this.coords.p_from_real = this.convertToRealPercent(handle_x);
+                    this.coords.p_from_real = this.calcWithStep(this.coords.p_from_real);
+                    if (this.coords.p_from_real > this.coords.p_to_real) {
+                        this.coords.p_from_real = this.coords.p_to_real;
+                    }
+                    this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);
+                    this.coords.p_from_real = this.checkMinInterval(this.coords.p_from_real, this.coords.p_to_real, "from");
+                    this.coords.p_from_real = this.checkMaxInterval(this.coords.p_from_real, this.coords.p_to_real, "from");
+
+                    this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);
+
+                    break;
+
+                case "to":
+                    if (this.options.to_fixed) {
+                        break;
+                    }
+
+                    this.coords.p_to_real = this.convertToRealPercent(handle_x);
+                    this.coords.p_to_real = this.calcWithStep(this.coords.p_to_real);
+                    if (this.coords.p_to_real < this.coords.p_from_real) {
+                        this.coords.p_to_real = this.coords.p_from_real;
+                    }
+                    this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);
+                    this.coords.p_to_real = this.checkMinInterval(this.coords.p_to_real, this.coords.p_from_real, "to");
+                    this.coords.p_to_real = this.checkMaxInterval(this.coords.p_to_real, this.coords.p_from_real, "to");
+
+                    this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);
+
+                    break;
+
+                case "both":
+                    if (this.options.from_fixed || this.options.to_fixed) {
+                        break;
+                    }
+
+                    handle_x = this.toFixed(handle_x + (this.coords.p_handle * 0.001));
+
+                    this.coords.p_from_real = this.convertToRealPercent(handle_x) - this.coords.p_gap_left;
+                    this.coords.p_from_real = this.calcWithStep(this.coords.p_from_real);
+                    this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);
+                    this.coords.p_from_real = this.checkMinInterval(this.coords.p_from_real, this.coords.p_to_real, "from");
+                    this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);
+
+                    this.coords.p_to_real = this.convertToRealPercent(handle_x) + this.coords.p_gap_right;
+                    this.coords.p_to_real = this.calcWithStep(this.coords.p_to_real);
+                    this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);
+                    this.coords.p_to_real = this.checkMinInterval(this.coords.p_to_real, this.coords.p_from_real, "to");
+                    this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);
+
+                    break;
+
+                case "both_one":
+                    if (this.options.from_fixed || this.options.to_fixed) {
+                        break;
+                    }
+
+                    var real_x = this.convertToRealPercent(handle_x),
+                        from = this.result.from_percent,
+                        to = this.result.to_percent,
+                        full = to - from,
+                        half = full / 2,
+                        new_from = real_x - half,
+                        new_to = real_x + half;
+
+                    if (new_from < 0) {
+                        new_from = 0;
+                        new_to = new_from + full;
+                    }
+
+                    if (new_to > 100) {
+                        new_to = 100;
+                        new_from = new_to - full;
+                    }
+
+                    this.coords.p_from_real = this.calcWithStep(new_from);
+                    this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);
+                    this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);
+
+                    this.coords.p_to_real = this.calcWithStep(new_to);
+                    this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);
+                    this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);
+
+                    break;
+            }
+
+            if (this.options.type === "single") {
+                this.coords.p_bar_x = (this.coords.p_handle / 2);
+                this.coords.p_bar_w = this.coords.p_single_fake;
+
+                this.result.from_percent = this.coords.p_single_real;
+                this.result.from = this.convertToValue(this.coords.p_single_real);
+                this.result.from_pretty = this._prettify(this.result.from);
+
+                if (this.options.values.length) {
+                    this.result.from_value = this.options.values[this.result.from];
+                }
+            } else {
+                this.coords.p_bar_x = this.toFixed(this.coords.p_from_fake + (this.coords.p_handle / 2));
+                this.coords.p_bar_w = this.toFixed(this.coords.p_to_fake - this.coords.p_from_fake);
+
+                this.result.from_percent = this.coords.p_from_real;
+                this.result.from = this.convertToValue(this.coords.p_from_real);
+                this.result.from_pretty = this._prettify(this.result.from);
+                this.result.to_percent = this.coords.p_to_real;
+                this.result.to = this.convertToValue(this.coords.p_to_real);
+                this.result.to_pretty = this._prettify(this.result.to);
+
+                if (this.options.values.length) {
+                    this.result.from_value = this.options.values[this.result.from];
+                    this.result.to_value = this.options.values[this.result.to];
+                }
+            }
+
+            this.calcMinMax();
+            this.calcLabels();
+        },
+
+
+        /**
+         * calculates pointer X in percent
+         */
+        calcPointerPercent: function () {
+            if (!this.coords.w_rs) {
+                this.coords.p_pointer = 0;
+                return;
+            }
+
+            if (this.coords.x_pointer < 0 || isNaN(this.coords.x_pointer)  ) {
+                this.coords.x_pointer = 0;
+            } else if (this.coords.x_pointer > this.coords.w_rs) {
+                this.coords.x_pointer = this.coords.w_rs;
+            }
+
+            this.coords.p_pointer = this.toFixed(this.coords.x_pointer / this.coords.w_rs * 100);
+        },
+
+        convertToRealPercent: function (fake) {
+            var full = 100 - this.coords.p_handle;
+            return fake / full * 100;
+        },
+
+        convertToFakePercent: function (real) {
+            var full = 100 - this.coords.p_handle;
+            return real / 100 * full;
+        },
+
+        getHandleX: function () {
+            var max = 100 - this.coords.p_handle,
+                x = this.toFixed(this.coords.p_pointer - this.coords.p_gap);
+
+            if (x < 0) {
+                x = 0;
+            } else if (x > max) {
+                x = max;
+            }
+
+            return x;
+        },
+
+        calcHandlePercent: function () {
+            if (this.options.type === "single") {
+                this.coords.w_handle = this.$cache.s_single.outerWidth(false);
+            } else {
+                this.coords.w_handle = this.$cache.s_from.outerWidth(false);
+            }
+
+            this.coords.p_handle = this.toFixed(this.coords.w_handle / this.coords.w_rs * 100);
+        },
+
+        /**
+         * Find closest handle to pointer click
+         *
+         * @param real_x {Number}
+         * @returns {String}
+         */
+        chooseHandle: function (real_x) {
+            if (this.options.type === "single") {
+                return "single";
+            } else {
+                var m_point = this.coords.p_from_real + ((this.coords.p_to_real - this.coords.p_from_real) / 2);
+                if (real_x >= m_point) {
+                    return this.options.to_fixed ? "from" : "to";
+                } else {
+                    return this.options.from_fixed ? "to" : "from";
+                }
+            }
+        },
+
+        /**
+         * Measure Min and Max labels width in percent
+         */
+        calcMinMax: function () {
+            if (!this.coords.w_rs) {
+                return;
+            }
+
+            this.labels.p_min = this.labels.w_min / this.coords.w_rs * 100;
+            this.labels.p_max = this.labels.w_max / this.coords.w_rs * 100;
+        },
+
+        /**
+         * Measure labels width and X in percent
+         */
+        calcLabels: function () {
+            if (!this.coords.w_rs || this.options.hide_from_to) {
+                return;
+            }
+
+            if (this.options.type === "single") {
+
+                this.labels.w_single = this.$cache.single.outerWidth(false);
+                this.labels.p_single_fake = this.labels.w_single / this.coords.w_rs * 100;
+                this.labels.p_single_left = this.coords.p_single_fake + (this.coords.p_handle / 2) - (this.labels.p_single_fake / 2);
+                this.labels.p_single_left = this.checkEdges(this.labels.p_single_left, this.labels.p_single_fake);
+
+            } else {
+
+                this.labels.w_from = this.$cache.from.outerWidth(false);
+                this.labels.p_from_fake = this.labels.w_from / this.coords.w_rs * 100;
+                this.labels.p_from_left = this.coords.p_from_fake + (this.coords.p_handle / 2) - (this.labels.p_from_fake / 2);
+                this.labels.p_from_left = this.toFixed(this.labels.p_from_left);
+                this.labels.p_from_left = this.checkEdges(this.labels.p_from_left, this.labels.p_from_fake);
+
+                this.labels.w_to = this.$cache.to.outerWidth(false);
+                this.labels.p_to_fake = this.labels.w_to / this.coords.w_rs * 100;
+                this.labels.p_to_left = this.coords.p_to_fake + (this.coords.p_handle / 2) - (this.labels.p_to_fake / 2);
+                this.labels.p_to_left = this.toFixed(this.labels.p_to_left);
+                this.labels.p_to_left = this.checkEdges(this.labels.p_to_left, this.labels.p_to_fake);
+
+                this.labels.w_single = this.$cache.single.outerWidth(false);
+                this.labels.p_single_fake = this.labels.w_single / this.coords.w_rs * 100;
+                this.labels.p_single_left = ((this.labels.p_from_left + this.labels.p_to_left + this.labels.p_to_fake) / 2) - (this.labels.p_single_fake / 2);
+                this.labels.p_single_left = this.toFixed(this.labels.p_single_left);
+                this.labels.p_single_left = this.checkEdges(this.labels.p_single_left, this.labels.p_single_fake);
+
+            }
+        },
+
+
+
+        // =============================================================================================================
+        // Drawings
+
+        /**
+         * Main function called in request animation frame
+         * to update everything
+         */
+        updateScene: function () {
+            if (this.raf_id) {
+                cancelAnimationFrame(this.raf_id);
+                this.raf_id = null;
+            }
+
+            clearTimeout(this.update_tm);
+            this.update_tm = null;
+
+            if (!this.options) {
+                return;
+            }
+
+            this.drawHandles();
+
+            if (this.is_active) {
+                this.raf_id = requestAnimationFrame(this.updateScene.bind(this));
+            } else {
+                this.update_tm = setTimeout(this.updateScene.bind(this), 300);
+            }
+        },
+
+        /**
+         * Draw handles
+         */
+        drawHandles: function () {
+            this.coords.w_rs = this.$cache.rs.outerWidth(false);
+
+            if (!this.coords.w_rs) {
+                return;
+            }
+
+            if (this.coords.w_rs !== this.coords.w_rs_old) {
+                this.target = "base";
+                this.is_resize = true;
+            }
+
+            if (this.coords.w_rs !== this.coords.w_rs_old || this.force_redraw) {
+                this.setMinMax();
+                this.calc(true);
+                this.drawLabels();
+                if (this.options.grid) {
+                    this.calcGridMargin();
+                    this.calcGridLabels();
+                }
+                this.force_redraw = true;
+                this.coords.w_rs_old = this.coords.w_rs;
+                this.drawShadow();
+            }
+
+            if (!this.coords.w_rs) {
+                return;
+            }
+
+            if (!this.dragging && !this.force_redraw && !this.is_key) {
+                return;
+            }
+
+            if (this.old_from !== this.result.from || this.old_to !== this.result.to || this.force_redraw || this.is_key) {
+
+                this.drawLabels();
+
+                this.$cache.bar[0].style.left = this.coords.p_bar_x + "%";
+                this.$cache.bar[0].style.width = this.coords.p_bar_w + "%";
+
+                if (this.options.type === "single") {
+                    this.$cache.bar[0].style.left = 0;
+                    this.$cache.bar[0].style.width = this.coords.p_bar_w + this.coords.p_bar_x + "%";
+
+                    this.$cache.s_single[0].style.left = this.coords.p_single_fake + "%";
+
+                    this.$cache.single[0].style.left = this.labels.p_single_left + "%";
+                } else {
+                    this.$cache.s_from[0].style.left = this.coords.p_from_fake + "%";
+                    this.$cache.s_to[0].style.left = this.coords.p_to_fake + "%";
+
+                    if (this.old_from !== this.result.from || this.force_redraw) {
+                        this.$cache.from[0].style.left = this.labels.p_from_left + "%";
+                    }
+                    if (this.old_to !== this.result.to || this.force_redraw) {
+                        this.$cache.to[0].style.left = this.labels.p_to_left + "%";
+                    }
+
+                    this.$cache.single[0].style.left = this.labels.p_single_left + "%";
+                }
+
+                this.writeToInput();
+
+                if ((this.old_from !== this.result.from || this.old_to !== this.result.to) && !this.is_start) {
+                    this.$cache.input.trigger("change");
+                    this.$cache.input.trigger("input");
+                }
+
+                this.old_from = this.result.from;
+                this.old_to = this.result.to;
+
+                // callbacks call
+                if (!this.is_resize && !this.is_update && !this.is_start && !this.is_finish) {
+                    this.callOnChange();
+                }
+                if (this.is_key || this.is_click) {
+                    this.is_key = false;
+                    this.is_click = false;
+                    this.callOnFinish();
+                }
+
+                this.is_update = false;
+                this.is_resize = false;
+                this.is_finish = false;
+            }
+
+            this.is_start = false;
+            this.is_key = false;
+            this.is_click = false;
+            this.force_redraw = false;
+        },
+
+        /**
+         * Draw labels
+         * measure labels collisions
+         * collapse close labels
+         */
+        drawLabels: function () {
+            if (!this.options) {
+                return;
+            }
+
+            var values_num = this.options.values.length;
+            var p_values = this.options.p_values;
+            var text_single;
+            var text_from;
+            var text_to;
+            var from_pretty;
+            var to_pretty;
+
+            if (this.options.hide_from_to) {
+                return;
+            }
+
+            if (this.options.type === "single") {
+
+                if (values_num) {
+                    text_single = this.decorate(p_values[this.result.from]);
+                    this.$cache.single.html(text_single);
+                } else {
+                    from_pretty = this._prettify(this.result.from);
+
+                    text_single = this.decorate(from_pretty, this.result.from);
+                    this.$cache.single.html(text_single);
+                }
+
+                this.calcLabels();
+
+                if (this.labels.p_single_left < this.labels.p_min + 1) {
+                    this.$cache.min[0].style.visibility = "hidden";
+                } else {
+                    this.$cache.min[0].style.visibility = "visible";
+                }
+
+                if (this.labels.p_single_left + this.labels.p_single_fake > 100 - this.labels.p_max - 1) {
+                    this.$cache.max[0].style.visibility = "hidden";
+                } else {
+                    this.$cache.max[0].style.visibility = "visible";
+                }
+
+            } else {
+
+                if (values_num) {
+
+                    if (this.options.decorate_both) {
+                        text_single = this.decorate(p_values[this.result.from]);
+                        text_single += this.options.values_separator;
+                        text_single += this.decorate(p_values[this.result.to]);
+                    } else {
+                        text_single = this.decorate(p_values[this.result.from] + this.options.values_separator + p_values[this.result.to]);
+                    }
+                    text_from = this.decorate(p_values[this.result.from]);
+                    text_to = this.decorate(p_values[this.result.to]);
+
+                    this.$cache.single.html(text_single);
+                    this.$cache.from.html(text_from);
+                    this.$cache.to.html(text_to);
+
+                } else {
+                    from_pretty = this._prettify(this.result.from);
+                    to_pretty = this._prettify(this.result.to);
+
+                    if (this.options.decorate_both) {
+                        text_single = this.decorate(from_pretty, this.result.from);
+                        text_single += this.options.values_separator;
+                        text_single += this.decorate(to_pretty, this.result.to);
+                    } else {
+                        text_single = this.decorate(from_pretty + this.options.values_separator + to_pretty, this.result.to);
+                    }
+                    text_from = this.decorate(from_pretty, this.result.from);
+                    text_to = this.decorate(to_pretty, this.result.to);
+
+                    this.$cache.single.html(text_single);
+                    this.$cache.from.html(text_from);
+                    this.$cache.to.html(text_to);
+
+                }
+
+                this.calcLabels();
+
+                var min = Math.min(this.labels.p_single_left, this.labels.p_from_left),
+                    single_left = this.labels.p_single_left + this.labels.p_single_fake,
+                    to_left = this.labels.p_to_left + this.labels.p_to_fake,
+                    max = Math.max(single_left, to_left);
+
+                if (this.labels.p_from_left + this.labels.p_from_fake >= this.labels.p_to_left) {
+                    this.$cache.from[0].style.visibility = "hidden";
+                    this.$cache.to[0].style.visibility = "hidden";
+                    this.$cache.single[0].style.visibility = "visible";
+
+                    if (this.result.from === this.result.to) {
+                        if (this.target === "from") {
+                            this.$cache.from[0].style.visibility = "visible";
+                        } else if (this.target === "to") {
+                            this.$cache.to[0].style.visibility = "visible";
+                        } else if (!this.target) {
+                            this.$cache.from[0].style.visibility = "visible";
+                        }
+                        this.$cache.single[0].style.visibility = "hidden";
+                        max = to_left;
+                    } else {
+                        this.$cache.from[0].style.visibility = "hidden";
+                        this.$cache.to[0].style.visibility = "hidden";
+                        this.$cache.single[0].style.visibility = "visible";
+                        max = Math.max(single_left, to_left);
+                    }
+                } else {
+                    this.$cache.from[0].style.visibility = "visible";
+                    this.$cache.to[0].style.visibility = "visible";
+                    this.$cache.single[0].style.visibility = "hidden";
+                }
+
+                if (min < this.labels.p_min + 1) {
+                    this.$cache.min[0].style.visibility = "hidden";
+                } else {
+                    this.$cache.min[0].style.visibility = "visible";
+                }
+
+                if (max > 100 - this.labels.p_max - 1) {
+                    this.$cache.max[0].style.visibility = "hidden";
+                } else {
+                    this.$cache.max[0].style.visibility = "visible";
+                }
+
+            }
+        },
+
+        /**
+         * Draw shadow intervals
+         */
+        drawShadow: function () {
+            var o = this.options,
+                c = this.$cache,
+
+                is_from_min = typeof o.from_min === "number" && !isNaN(o.from_min),
+                is_from_max = typeof o.from_max === "number" && !isNaN(o.from_max),
+                is_to_min = typeof o.to_min === "number" && !isNaN(o.to_min),
+                is_to_max = typeof o.to_max === "number" && !isNaN(o.to_max),
+
+                from_min,
+                from_max,
+                to_min,
+                to_max;
+
+            if (o.type === "single") {
+                if (o.from_shadow && (is_from_min || is_from_max)) {
+                    from_min = this.convertToPercent(is_from_min ? o.from_min : o.min);
+                    from_max = this.convertToPercent(is_from_max ? o.from_max : o.max) - from_min;
+                    from_min = this.toFixed(from_min - (this.coords.p_handle / 100 * from_min));
+                    from_max = this.toFixed(from_max - (this.coords.p_handle / 100 * from_max));
+                    from_min = from_min + (this.coords.p_handle / 2);
+
+                    c.shad_single[0].style.display = "block";
+                    c.shad_single[0].style.left = from_min + "%";
+                    c.shad_single[0].style.width = from_max + "%";
+                } else {
+                    c.shad_single[0].style.display = "none";
+                }
+            } else {
+                if (o.from_shadow && (is_from_min || is_from_max)) {
+                    from_min = this.convertToPercent(is_from_min ? o.from_min : o.min);
+                    from_max = this.convertToPercent(is_from_max ? o.from_max : o.max) - from_min;
+                    from_min = this.toFixed(from_min - (this.coords.p_handle / 100 * from_min));
+                    from_max = this.toFixed(from_max - (this.coords.p_handle / 100 * from_max));
+                    from_min = from_min + (this.coords.p_handle / 2);
+
+                    c.shad_from[0].style.display = "block";
+                    c.shad_from[0].style.left = from_min + "%";
+                    c.shad_from[0].style.width = from_max + "%";
+                } else {
+                    c.shad_from[0].style.display = "none";
+                }
+
+                if (o.to_shadow && (is_to_min || is_to_max)) {
+                    to_min = this.convertToPercent(is_to_min ? o.to_min : o.min);
+                    to_max = this.convertToPercent(is_to_max ? o.to_max : o.max) - to_min;
+                    to_min = this.toFixed(to_min - (this.coords.p_handle / 100 * to_min));
+                    to_max = this.toFixed(to_max - (this.coords.p_handle / 100 * to_max));
+                    to_min = to_min + (this.coords.p_handle / 2);
+
+                    c.shad_to[0].style.display = "block";
+                    c.shad_to[0].style.left = to_min + "%";
+                    c.shad_to[0].style.width = to_max + "%";
+                } else {
+                    c.shad_to[0].style.display = "none";
+                }
+            }
+        },
+
+
+
+        /**
+         * Write values to input element
+         */
+        writeToInput: function () {
+            if (this.options.type === "single") {
+                if (this.options.values.length) {
+                    this.$cache.input.prop("value", this.result.from_value);
+                } else {
+                    this.$cache.input.prop("value", this.result.from);
+                }
+                this.$cache.input.data("from", this.result.from);
+            } else {
+                if (this.options.values.length) {
+                    this.$cache.input.prop("value", this.result.from_value + this.options.input_values_separator + this.result.to_value);
+                } else {
+                    this.$cache.input.prop("value", this.result.from + this.options.input_values_separator + this.result.to);
+                }
+                this.$cache.input.data("from", this.result.from);
+                this.$cache.input.data("to", this.result.to);
+            }
+        },
+
+
+
+        // =============================================================================================================
+        // Callbacks
+
+        callOnStart: function () {
+            this.writeToInput();
+
+            if (this.options.onStart && typeof this.options.onStart === "function") {
+                if (this.options.scope) {
+                    this.options.onStart.call(this.options.scope, this.result);
+                } else {
+                    this.options.onStart(this.result);
+                }
+            }
+        },
+        callOnChange: function () {
+            this.writeToInput();
+
+            if (this.options.onChange && typeof this.options.onChange === "function") {
+                if (this.options.scope) {
+                    this.options.onChange.call(this.options.scope, this.result);
+                } else {
+                    this.options.onChange(this.result);
+                }
+            }
+        },
+        callOnFinish: function () {
+            this.writeToInput();
+
+            if (this.options.onFinish && typeof this.options.onFinish === "function") {
+                if (this.options.scope) {
+                    this.options.onFinish.call(this.options.scope, this.result);
+                } else {
+                    this.options.onFinish(this.result);
+                }
+            }
+        },
+        callOnUpdate: function () {
+            this.writeToInput();
+
+            if (this.options.onUpdate && typeof this.options.onUpdate === "function") {
+                if (this.options.scope) {
+                    this.options.onUpdate.call(this.options.scope, this.result);
+                } else {
+                    this.options.onUpdate(this.result);
+                }
+            }
+        },
+
+
+
+
+        // =============================================================================================================
+        // Service methods
+
+        toggleInput: function () {
+            this.$cache.input.toggleClass("irs-hidden-input");
+
+            if (this.has_tab_index) {
+                this.$cache.input.prop("tabindex", -1);
+            } else {
+                this.$cache.input.removeProp("tabindex");
+            }
+
+            this.has_tab_index = !this.has_tab_index;
+        },
+
+        /**
+         * Convert real value to percent
+         *
+         * @param value {Number} X in real
+         * @param no_min {boolean=} don't use min value
+         * @returns {Number} X in percent
+         */
+        convertToPercent: function (value, no_min) {
+            var diapason = this.options.max - this.options.min,
+                one_percent = diapason / 100,
+                val, percent;
+
+            if (!diapason) {
+                this.no_diapason = true;
+                return 0;
+            }
+
+            if (no_min) {
+                val = value;
+            } else {
+                val = value - this.options.min;
+            }
+
+            percent = val / one_percent;
+
+            return this.toFixed(percent);
+        },
+
+        /**
+         * Convert percent to real values
+         *
+         * @param percent {Number} X in percent
+         * @returns {Number} X in real
+         */
+        convertToValue: function (percent) {
+            var min = this.options.min,
+                max = this.options.max,
+                min_decimals = min.toString().split(".")[1],
+                max_decimals = max.toString().split(".")[1],
+                min_length, max_length,
+                avg_decimals = 0,
+                abs = 0;
+
+            if (percent === 0) {
+                return this.options.min;
+            }
+            if (percent === 100) {
+                return this.options.max;
+            }
+
+
+            if (min_decimals) {
+                min_length = min_decimals.length;
+                avg_decimals = min_length;
+            }
+            if (max_decimals) {
+                max_length = max_decimals.length;
+                avg_decimals = max_length;
+            }
+            if (min_length && max_length) {
+                avg_decimals = (min_length >= max_length) ? min_length : max_length;
+            }
+
+            if (min < 0) {
+                abs = Math.abs(min);
+                min = +(min + abs).toFixed(avg_decimals);
+                max = +(max + abs).toFixed(avg_decimals);
+            }
+
+            var number = ((max - min) / 100 * percent) + min,
+                string = this.options.step.toString().split(".")[1],
+                result;
+
+            if (string) {
+                number = +number.toFixed(string.length);
+            } else {
+                number = number / this.options.step;
+                number = number * this.options.step;
+
+                number = +number.toFixed(0);
+            }
+
+            if (abs) {
+                number -= abs;
+            }
+
+            if (string) {
+                result = +number.toFixed(string.length);
+            } else {
+                result = this.toFixed(number);
+            }
+
+            if (result < this.options.min) {
+                result = this.options.min;
+            } else if (result > this.options.max) {
+                result = this.options.max;
+            }
+
+            return result;
+        },
+
+        /**
+         * Round percent value with step
+         *
+         * @param percent {Number}
+         * @returns percent {Number} rounded
+         */
+        calcWithStep: function (percent) {
+            var rounded = Math.round(percent / this.coords.p_step) * this.coords.p_step;
+
+            if (rounded > 100) {
+                rounded = 100;
+            }
+            if (percent === 100) {
+                rounded = 100;
+            }
+
+            return this.toFixed(rounded);
+        },
+
+        checkMinInterval: function (p_current, p_next, type) {
+            var o = this.options,
+                current,
+                next;
+
+            if (!o.min_interval) {
+                return p_current;
+            }
+
+            current = this.convertToValue(p_current);
+            next = this.convertToValue(p_next);
+
+            if (type === "from") {
+
+                if (next - current < o.min_interval) {
+                    current = next - o.min_interval;
+                }
+
+            } else {
+
+                if (current - next < o.min_interval) {
+                    current = next + o.min_interval;
+                }
+
+            }
+
+            return this.convertToPercent(current);
+        },
+
+        checkMaxInterval: function (p_current, p_next, type) {
+            var o = this.options,
+                current,
+                next;
+
+            if (!o.max_interval) {
+                return p_current;
+            }
+
+            current = this.convertToValue(p_current);
+            next = this.convertToValue(p_next);
+
+            if (type === "from") {
+
+                if (next - current > o.max_interval) {
+                    current = next - o.max_interval;
+                }
+
+            } else {
+
+                if (current - next > o.max_interval) {
+                    current = next + o.max_interval;
+                }
+
+            }
+
+            return this.convertToPercent(current);
+        },
+
+        checkDiapason: function (p_num, min, max) {
+            var num = this.convertToValue(p_num),
+                o = this.options;
+
+            if (typeof min !== "number") {
+                min = o.min;
+            }
+
+            if (typeof max !== "number") {
+                max = o.max;
+            }
+
+            if (num < min) {
+                num = min;
+            }
+
+            if (num > max) {
+                num = max;
+            }
+
+            return this.convertToPercent(num);
+        },
+
+        toFixed: function (num) {
+            num = num.toFixed(20);
+            return +num;
+        },
+
+        _prettify: function (num) {
+            if (!this.options.prettify_enabled) {
+                return num;
+            }
+
+            if (this.options.prettify && typeof this.options.prettify === "function") {
+                return this.options.prettify(num);
+            } else {
+                return this.prettify(num);
+            }
+        },
+
+        prettify: function (num) {
+            var n = num.toString();
+            return n.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g, "$1" + this.options.prettify_separator);
+        },
+
+        checkEdges: function (left, width) {
+            if (!this.options.force_edges) {
+                return this.toFixed(left);
+            }
+
+            if (left < 0) {
+                left = 0;
+            } else if (left > 100 - width) {
+                left = 100 - width;
+            }
+
+            return this.toFixed(left);
+        },
+
+        validate: function () {
+            var o = this.options,
+                r = this.result,
+                v = o.values,
+                vl = v.length,
+                value,
+                i;
+
+            if (typeof o.min === "string") o.min = +o.min;
+            if (typeof o.max === "string") o.max = +o.max;
+            if (typeof o.from === "string") o.from = +o.from;
+            if (typeof o.to === "string") o.to = +o.to;
+            if (typeof o.step === "string") o.step = +o.step;
+
+            if (typeof o.from_min === "string") o.from_min = +o.from_min;
+            if (typeof o.from_max === "string") o.from_max = +o.from_max;
+            if (typeof o.to_min === "string") o.to_min = +o.to_min;
+            if (typeof o.to_max === "string") o.to_max = +o.to_max;
+
+            if (typeof o.grid_num === "string") o.grid_num = +o.grid_num;
+
+            if (o.max < o.min) {
+                o.max = o.min;
+            }
+
+            if (vl) {
+                o.p_values = [];
+                o.min = 0;
+                o.max = vl - 1;
+                o.step = 1;
+                o.grid_num = o.max;
+                o.grid_snap = true;
+
+                for (i = 0; i < vl; i++) {
+                    value = +v[i];
+
+                    if (!isNaN(value)) {
+                        v[i] = value;
+                        value = this._prettify(value);
+                    } else {
+                        value = v[i];
+                    }
+
+                    o.p_values.push(value);
+                }
+            }
+
+            if (typeof o.from !== "number" || isNaN(o.from)) {
+                o.from = o.min;
+            }
+
+            if (typeof o.to !== "number" || isNaN(o.to)) {
+                o.to = o.max;
+            }
+
+            if (o.type === "single") {
+
+                if (o.from < o.min) o.from = o.min;
+                if (o.from > o.max) o.from = o.max;
+
+            } else {
+
+                if (o.from < o.min) o.from = o.min;
+                if (o.from > o.max) o.from = o.max;
+
+                if (o.to < o.min) o.to = o.min;
+                if (o.to > o.max) o.to = o.max;
+
+                if (this.update_check.from) {
+
+                    if (this.update_check.from !== o.from) {
+                        if (o.from > o.to) o.from = o.to;
+                    }
+                    if (this.update_check.to !== o.to) {
+                        if (o.to < o.from) o.to = o.from;
+                    }
+
+                }
+
+                if (o.from > o.to) o.from = o.to;
+                if (o.to < o.from) o.to = o.from;
+
+            }
+
+            if (typeof o.step !== "number" || isNaN(o.step) || !o.step || o.step < 0) {
+                o.step = 1;
+            }
+
+            if (typeof o.from_min === "number" && o.from < o.from_min) {
+                o.from = o.from_min;
+            }
+
+            if (typeof o.from_max === "number" && o.from > o.from_max) {
+                o.from = o.from_max;
+            }
+
+            if (typeof o.to_min === "number" && o.to < o.to_min) {
+                o.to = o.to_min;
+            }
+
+            if (typeof o.to_max === "number" && o.from > o.to_max) {
+                o.to = o.to_max;
+            }
+
+            if (r) {
+                if (r.min !== o.min) {
+                    r.min = o.min;
+                }
+
+                if (r.max !== o.max) {
+                    r.max = o.max;
+                }
+
+                if (r.from < r.min || r.from > r.max) {
+                    r.from = o.from;
+                }
+
+                if (r.to < r.min || r.to > r.max) {
+                    r.to = o.to;
+                }
+            }
+
+            if (typeof o.min_interval !== "number" || isNaN(o.min_interval) || !o.min_interval || o.min_interval < 0) {
+                o.min_interval = 0;
+            }
+
+            if (typeof o.max_interval !== "number" || isNaN(o.max_interval) || !o.max_interval || o.max_interval < 0) {
+                o.max_interval = 0;
+            }
+
+            if (o.min_interval && o.min_interval > o.max - o.min) {
+                o.min_interval = o.max - o.min;
+            }
+
+            if (o.max_interval && o.max_interval > o.max - o.min) {
+                o.max_interval = o.max - o.min;
+            }
+        },
+
+        decorate: function (num, original) {
+            var decorated = "",
+                o = this.options;
+
+            if (o.prefix) {
+                decorated += o.prefix;
+            }
+
+            decorated += num;
+
+            if (o.max_postfix) {
+                if (o.values.length && num === o.p_values[o.max]) {
+                    decorated += o.max_postfix;
+                    if (o.postfix) {
+                        decorated += " ";
+                    }
+                } else if (original === o.max) {
+                    decorated += o.max_postfix;
+                    if (o.postfix) {
+                        decorated += " ";
+                    }
+                }
+            }
+
+            if (o.postfix) {
+                decorated += o.postfix;
+            }
+
+            return decorated;
+        },
+
+        updateFrom: function () {
+            this.result.from = this.options.from;
+            this.result.from_percent = this.convertToPercent(this.result.from);
+            this.result.from_pretty = this._prettify(this.result.from);
+            if (this.options.values) {
+                this.result.from_value = this.options.values[this.result.from];
+            }
+        },
+
+        updateTo: function () {
+            this.result.to = this.options.to;
+            this.result.to_percent = this.convertToPercent(this.result.to);
+            this.result.to_pretty = this._prettify(this.result.to);
+            if (this.options.values) {
+                this.result.to_value = this.options.values[this.result.to];
+            }
+        },
+
+        updateResult: function () {
+            this.result.min = this.options.min;
+            this.result.max = this.options.max;
+            this.updateFrom();
+            this.updateTo();
+        },
+
+
+        // =============================================================================================================
+        // Grid
+
+        appendGrid: function () {
+            if (!this.options.grid) {
+                return;
+            }
+
+            var o = this.options,
+                i, z,
+
+                total = o.max - o.min,
+                big_num = o.grid_num,
+                big_p = 0,
+                big_w = 0,
+
+                small_max = 4,
+                local_small_max,
+                small_p,
+                small_w = 0,
+
+                result,
+                html = '';
+
+
+
+            this.calcGridMargin();
+
+            if (o.grid_snap) {
+                big_num = total / o.step;
+            }
+
+            if (big_num > 50) big_num = 50;
+            big_p = this.toFixed(100 / big_num);
+
+            if (big_num > 4) {
+                small_max = 3;
+            }
+            if (big_num > 7) {
+                small_max = 2;
+            }
+            if (big_num > 14) {
+                small_max = 1;
+            }
+            if (big_num > 28) {
+                small_max = 0;
+            }
+
+            for (i = 0; i < big_num + 1; i++) {
+                local_small_max = small_max;
+
+                big_w = this.toFixed(big_p * i);
+
+                if (big_w > 100) {
+                    big_w = 100;
+                }
+                this.coords.big[i] = big_w;
+
+                small_p = (big_w - (big_p * (i - 1))) / (local_small_max + 1);
+
+                for (z = 1; z <= local_small_max; z++) {
+                    if (big_w === 0) {
+                        break;
+                    }
+
+                    small_w = this.toFixed(big_w - (small_p * z));
+
+                    html += '<span class="irs-grid-pol small" style="left: ' + small_w + '%"></span>';
+                }
+
+                html += '<span class="irs-grid-pol" style="left: ' + big_w + '%"></span>';
+
+                result = this.convertToValue(big_w);
+                if (o.values.length) {
+                    result = o.p_values[result];
+                } else {
+                    result = this._prettify(result);
+                }
+
+                html += '<span class="irs-grid-text js-grid-text-' + i + '" style="left: ' + big_w + '%">' + result + '</span>';
+            }
+            this.coords.big_num = Math.ceil(big_num + 1);
+
+
+
+            this.$cache.cont.addClass("irs-with-grid");
+            this.$cache.grid.html(html);
+            this.cacheGridLabels();
+        },
+
+        cacheGridLabels: function () {
+            var $label, i,
+                num = this.coords.big_num;
+
+            for (i = 0; i < num; i++) {
+                $label = this.$cache.grid.find(".js-grid-text-" + i);
+                this.$cache.grid_labels.push($label);
+            }
+
+            this.calcGridLabels();
+        },
+
+        calcGridLabels: function () {
+            var i, label, start = [], finish = [],
+                num = this.coords.big_num;
+
+            for (i = 0; i < num; i++) {
+                this.coords.big_w[i] = this.$cache.grid_labels[i].outerWidth(false);
+                this.coords.big_p[i] = this.toFixed(this.coords.big_w[i] / this.coords.w_rs * 100);
+                this.coords.big_x[i] = this.toFixed(this.coords.big_p[i] / 2);
+
+                start[i] = this.toFixed(this.coords.big[i] - this.coords.big_x[i]);
+                finish[i] = this.toFixed(start[i] + this.coords.big_p[i]);
+            }
+
+            if (this.options.force_edges) {
+                if (start[0] < -this.coords.grid_gap) {
+                    start[0] = -this.coords.grid_gap;
+                    finish[0] = this.toFixed(start[0] + this.coords.big_p[0]);
+
+                    this.coords.big_x[0] = this.coords.grid_gap;
+                }
+
+                if (finish[num - 1] > 100 + this.coords.grid_gap) {
+                    finish[num - 1] = 100 + this.coords.grid_gap;
+                    start[num - 1] = this.toFixed(finish[num - 1] - this.coords.big_p[num - 1]);
+
+                    this.coords.big_x[num - 1] = this.toFixed(this.coords.big_p[num - 1] - this.coords.grid_gap);
+                }
+            }
+
+            this.calcGridCollision(2, start, finish);
+            this.calcGridCollision(4, start, finish);
+
+            for (i = 0; i < num; i++) {
+                label = this.$cache.grid_labels[i][0];
+
+                if (this.coords.big_x[i] !== Number.POSITIVE_INFINITY) {
+                    label.style.marginLeft = -this.coords.big_x[i] + "%";
+                }
+            }
+        },
+
+        // Collisions Calc Beta
+        // TODO: Refactor then have plenty of time
+        calcGridCollision: function (step, start, finish) {
+            var i, next_i, label,
+                num = this.coords.big_num;
+
+            for (i = 0; i < num; i += step) {
+                next_i = i + (step / 2);
+                if (next_i >= num) {
+                    break;
+                }
+
+                label = this.$cache.grid_labels[next_i][0];
+
+                if (finish[i] <= start[next_i]) {
+                    label.style.visibility = "visible";
+                } else {
+                    label.style.visibility = "hidden";
+                }
+            }
+        },
+
+        calcGridMargin: function () {
+            if (!this.options.grid_margin) {
+                return;
+            }
+
+            this.coords.w_rs = this.$cache.rs.outerWidth(false);
+            if (!this.coords.w_rs) {
+                return;
+            }
+
+            if (this.options.type === "single") {
+                this.coords.w_handle = this.$cache.s_single.outerWidth(false);
+            } else {
+                this.coords.w_handle = this.$cache.s_from.outerWidth(false);
+            }
+            this.coords.p_handle = this.toFixed(this.coords.w_handle  / this.coords.w_rs * 100);
+            this.coords.grid_gap = this.toFixed((this.coords.p_handle / 2) - 0.1);
+
+            this.$cache.grid[0].style.width = this.toFixed(100 - this.coords.p_handle) + "%";
+            this.$cache.grid[0].style.left = this.coords.grid_gap + "%";
+        },
+
+
+
+        // =============================================================================================================
+        // Public methods
+
+        update: function (options) {
+            if (!this.input) {
+                return;
+            }
+
+            this.is_update = true;
+
+            this.options.from = this.result.from;
+            this.options.to = this.result.to;
+            this.update_check.from = this.result.from;
+            this.update_check.to = this.result.to;
+
+            this.options = $.extend(this.options, options);
+            this.validate();
+            this.updateResult(options);
+
+            this.toggleInput();
+            this.remove();
+            this.init(true);
+        },
+
+        reset: function () {
+            if (!this.input) {
+                return;
+            }
+
+            this.updateResult();
+            this.update();
+        },
+
+        destroy: function () {
+            if (!this.input) {
+                return;
+            }
+
+            this.toggleInput();
+            this.$cache.input.prop("readonly", false);
+            $.data(this.input, "ionRangeSlider", null);
+
+            this.remove();
+            this.input = null;
+            this.options = null;
+        }
+    };
+
+    $.fn.ionRangeSlider = function (options) {
+        return this.each(function() {
+            if (!$.data(this, "ionRangeSlider")) {
+                $.data(this, "ionRangeSlider", new IonRangeSlider(this, options, plugin_count++));
+            }
+        });
+    };
+
+
+
+    // =================================================================================================================
+    // http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+    // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
+
+    // requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
+
+    // MIT license
+
+    (function() {
+        var lastTime = 0;
+        var vendors = ['ms', 'moz', 'webkit', 'o'];
+        for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+            window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
+            window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
+                || window[vendors[x]+'CancelRequestAnimationFrame'];
+        }
+
+        if (!window.requestAnimationFrame)
+            window.requestAnimationFrame = function(callback, element) {
+                var currTime = new Date().getTime();
+                var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+                var id = window.setTimeout(function() { callback(currTime + timeToCall); },
+                    timeToCall);
+                lastTime = currTime + timeToCall;
+                return id;
+            };
+
+        if (!window.cancelAnimationFrame)
+            window.cancelAnimationFrame = function(id) {
+                clearTimeout(id);
+            };
+    }());
+
+}));
Index: public/vendors/range-slider/js/ion.rangeSlider.min.js
===================================================================
--- public/vendors/range-slider/js/ion.rangeSlider.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/range-slider/js/ion.rangeSlider.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+// Ion.RangeSlider, 2.3.0, © Denis Ineshin, 2010 - 2018, IonDen.com, Build date: 2018-12-12 00:00:37
+!function(i){!jQuery&&"function"==typeof define&&define.amd?define(["jquery"],function(t){return i(t,document,window,navigator)}):jQuery||"object"!=typeof exports?i(jQuery,document,window,navigator):i(require("jquery"),document,window,navigator)}(function(a,c,l,t,_){"use strict";var i,s,o=0,e=(i=t.userAgent,s=/msie\s\d+/i,0<i.search(s)&&s.exec(i).toString().split(" ")[1]<9&&(a("html").addClass("lt-ie9"),!0));Function.prototype.bind||(Function.prototype.bind=function(o){var e=this,h=[].slice;if("function"!=typeof e)throw new TypeError;var r=h.call(arguments,1),n=function(){if(this instanceof n){var t=function(){};t.prototype=e.prototype;var i=new t,s=e.apply(i,r.concat(h.call(arguments)));return Object(s)===s?s:i}return e.apply(o,r.concat(h.call(arguments)))};return n}),Array.prototype.indexOf||(Array.prototype.indexOf=function(t,i){var s;if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),e=o.length>>>0;if(0===e)return-1;var h=+i||0;if(Math.abs(h)===1/0&&(h=0),e<=h)return-1;for(s=Math.max(0<=h?h:e-Math.abs(h),0);s<e;){if(s in o&&o[s]===t)return s;s++}return-1});var h=function(t,i,s){this.VERSION="2.3.0",this.input=t,this.plugin_count=s,this.current_plugin=0,this.calc_count=0,this.update_tm=0,this.old_from=0,this.old_to=0,this.old_min_interval=null,this.raf_id=null,this.dragging=!1,this.force_redraw=!1,this.no_diapason=!1,this.has_tab_index=!0,this.is_key=!1,this.is_update=!1,this.is_start=!0,this.is_finish=!1,this.is_active=!1,this.is_resize=!1,this.is_click=!1,i=i||{},this.$cache={win:a(l),body:a(c.body),input:a(t),cont:null,rs:null,min:null,max:null,from:null,to:null,single:null,bar:null,line:null,s_single:null,s_from:null,s_to:null,shad_single:null,shad_from:null,shad_to:null,edge:null,grid:null,grid_labels:[]},this.coords={x_gap:0,x_pointer:0,w_rs:0,w_rs_old:0,w_handle:0,p_gap:0,p_gap_left:0,p_gap_right:0,p_step:0,p_pointer:0,p_handle:0,p_single_fake:0,p_single_real:0,p_from_fake:0,p_from_real:0,p_to_fake:0,p_to_real:0,p_bar_x:0,p_bar_w:0,grid_gap:0,big_num:0,big:[],big_w:[],big_p:[],big_x:[]},this.labels={w_min:0,w_max:0,w_from:0,w_to:0,w_single:0,p_min:0,p_max:0,p_from_fake:0,p_from_left:0,p_to_fake:0,p_to_left:0,p_single_fake:0,p_single_left:0};var o,e,h,r=this.$cache.input,n=r.prop("value");for(h in o={skin:"flat",type:"single",min:10,max:100,from:null,to:null,step:1,min_interval:0,max_interval:0,drag_interval:!1,values:[],p_values:[],from_fixed:!1,from_min:null,from_max:null,from_shadow:!1,to_fixed:!1,to_min:null,to_max:null,to_shadow:!1,prettify_enabled:!0,prettify_separator:" ",prettify:null,force_edges:!1,keyboard:!0,grid:!1,grid_margin:!0,grid_num:4,grid_snap:!1,hide_min_max:!1,hide_from_to:!1,prefix:"",postfix:"",max_postfix:"",decorate_both:!0,values_separator:" — ",input_values_separator:";",disable:!1,block:!1,extra_classes:"",scope:null,onStart:null,onChange:null,onFinish:null,onUpdate:null},"INPUT"!==r[0].nodeName&&console&&console.warn&&console.warn("Base element should be <input>!",r[0]),(e={skin:r.data("skin"),type:r.data("type"),min:r.data("min"),max:r.data("max"),from:r.data("from"),to:r.data("to"),step:r.data("step"),min_interval:r.data("minInterval"),max_interval:r.data("maxInterval"),drag_interval:r.data("dragInterval"),values:r.data("values"),from_fixed:r.data("fromFixed"),from_min:r.data("fromMin"),from_max:r.data("fromMax"),from_shadow:r.data("fromShadow"),to_fixed:r.data("toFixed"),to_min:r.data("toMin"),to_max:r.data("toMax"),to_shadow:r.data("toShadow"),prettify_enabled:r.data("prettifyEnabled"),prettify_separator:r.data("prettifySeparator"),force_edges:r.data("forceEdges"),keyboard:r.data("keyboard"),grid:r.data("grid"),grid_margin:r.data("gridMargin"),grid_num:r.data("gridNum"),grid_snap:r.data("gridSnap"),hide_min_max:r.data("hideMinMax"),hide_from_to:r.data("hideFromTo"),prefix:r.data("prefix"),postfix:r.data("postfix"),max_postfix:r.data("maxPostfix"),decorate_both:r.data("decorateBoth"),values_separator:r.data("valuesSeparator"),input_values_separator:r.data("inputValuesSeparator"),disable:r.data("disable"),block:r.data("block"),extra_classes:r.data("extraClasses")}).values=e.values&&e.values.split(","),e)e.hasOwnProperty(h)&&(e[h]!==_&&""!==e[h]||delete e[h]);n!==_&&""!==n&&((n=n.split(e.input_values_separator||i.input_values_separator||";"))[0]&&n[0]==+n[0]&&(n[0]=+n[0]),n[1]&&n[1]==+n[1]&&(n[1]=+n[1]),i&&i.values&&i.values.length?(o.from=n[0]&&i.values.indexOf(n[0]),o.to=n[1]&&i.values.indexOf(n[1])):(o.from=n[0]&&+n[0],o.to=n[1]&&+n[1])),a.extend(o,i),a.extend(o,e),this.options=o,this.update_check={},this.validate(),this.result={input:this.$cache.input,slider:null,min:this.options.min,max:this.options.max,from:this.options.from,from_percent:0,from_value:null,to:this.options.to,to_percent:0,to_value:null},this.init()};h.prototype={init:function(t){this.no_diapason=!1,this.coords.p_step=this.convertToPercent(this.options.step,!0),this.target="base",this.toggleInput(),this.append(),this.setMinMax(),t?(this.force_redraw=!0,this.calc(!0),this.callOnUpdate()):(this.force_redraw=!0,this.calc(!0),this.callOnStart()),this.updateScene()},append:function(){var t='<span class="irs irs--'+this.options.skin+" js-irs-"+this.plugin_count+" "+this.options.extra_classes+'"></span>';this.$cache.input.before(t),this.$cache.input.prop("readonly",!0),this.$cache.cont=this.$cache.input.prev(),this.result.slider=this.$cache.cont,this.$cache.cont.html('<span class="irs"><span class="irs-line" tabindex="0"></span><span class="irs-min">0</span><span class="irs-max">1</span><span class="irs-from">0</span><span class="irs-to">0</span><span class="irs-single">0</span></span><span class="irs-grid"></span>'),this.$cache.rs=this.$cache.cont.find(".irs"),this.$cache.min=this.$cache.cont.find(".irs-min"),this.$cache.max=this.$cache.cont.find(".irs-max"),this.$cache.from=this.$cache.cont.find(".irs-from"),this.$cache.to=this.$cache.cont.find(".irs-to"),this.$cache.single=this.$cache.cont.find(".irs-single"),this.$cache.line=this.$cache.cont.find(".irs-line"),this.$cache.grid=this.$cache.cont.find(".irs-grid"),"single"===this.options.type?(this.$cache.cont.append('<span class="irs-bar irs-bar--single"></span><span class="irs-shadow shadow-single"></span><span class="irs-handle single"><i></i><i></i><i></i></span>'),this.$cache.bar=this.$cache.cont.find(".irs-bar"),this.$cache.edge=this.$cache.cont.find(".irs-bar-edge"),this.$cache.s_single=this.$cache.cont.find(".single"),this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.shad_single=this.$cache.cont.find(".shadow-single")):(this.$cache.cont.append('<span class="irs-bar"></span><span class="irs-shadow shadow-from"></span><span class="irs-shadow shadow-to"></span><span class="irs-handle from"><i></i><i></i><i></i></span><span class="irs-handle to"><i></i><i></i><i></i></span>'),this.$cache.bar=this.$cache.cont.find(".irs-bar"),this.$cache.s_from=this.$cache.cont.find(".from"),this.$cache.s_to=this.$cache.cont.find(".to"),this.$cache.shad_from=this.$cache.cont.find(".shadow-from"),this.$cache.shad_to=this.$cache.cont.find(".shadow-to"),this.setTopHandler()),this.options.hide_from_to&&(this.$cache.from[0].style.display="none",this.$cache.to[0].style.display="none",this.$cache.single[0].style.display="none"),this.appendGrid(),this.options.disable?(this.appendDisableMask(),this.$cache.input[0].disabled=!0):(this.$cache.input[0].disabled=!1,this.removeDisableMask(),this.bindEvents()),this.options.disable||(this.options.block?this.appendDisableMask():this.removeDisableMask()),this.options.drag_interval&&(this.$cache.bar[0].style.cursor="ew-resize")},setTopHandler:function(){var t=this.options.min,i=this.options.max,s=this.options.from,o=this.options.to;t<s&&o===i?this.$cache.s_from.addClass("type_last"):o<i&&this.$cache.s_to.addClass("type_last")},changeLevel:function(t){switch(t){case"single":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_single_fake),this.$cache.s_single.addClass("state_hover");break;case"from":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake),this.$cache.s_from.addClass("state_hover"),this.$cache.s_from.addClass("type_last"),this.$cache.s_to.removeClass("type_last");break;case"to":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_to_fake),this.$cache.s_to.addClass("state_hover"),this.$cache.s_to.addClass("type_last"),this.$cache.s_from.removeClass("type_last");break;case"both":this.coords.p_gap_left=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake),this.coords.p_gap_right=this.toFixed(this.coords.p_to_fake-this.coords.p_pointer),this.$cache.s_to.removeClass("type_last"),this.$cache.s_from.removeClass("type_last")}},appendDisableMask:function(){this.$cache.cont.append('<span class="irs-disable-input-mask"></span>'),this.$cache.cont.addClass("irs-disabled")},removeDisableMask:function(){this.$cache.cont.remove(".irs-disable-input-mask"),this.$cache.cont.removeClass("irs-disabled")},remove:function(){this.$cache.cont.remove(),this.$cache.cont=null,this.$cache.line.off("keydown.irs_"+this.plugin_count),this.$cache.body.off("touchmove.irs_"+this.plugin_count),this.$cache.body.off("mousemove.irs_"+this.plugin_count),this.$cache.win.off("touchend.irs_"+this.plugin_count),this.$cache.win.off("mouseup.irs_"+this.plugin_count),e&&(this.$cache.body.off("mouseup.irs_"+this.plugin_count),this.$cache.body.off("mouseleave.irs_"+this.plugin_count)),this.$cache.grid_labels=[],this.coords.big=[],this.coords.big_w=[],this.coords.big_p=[],this.coords.big_x=[],cancelAnimationFrame(this.raf_id)},bindEvents:function(){this.no_diapason||(this.$cache.body.on("touchmove.irs_"+this.plugin_count,this.pointerMove.bind(this)),this.$cache.body.on("mousemove.irs_"+this.plugin_count,this.pointerMove.bind(this)),this.$cache.win.on("touchend.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.win.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.line.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.line.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.line.on("focus.irs_"+this.plugin_count,this.pointerFocus.bind(this)),this.options.drag_interval&&"double"===this.options.type?(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"both")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"both"))):(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))),"single"===this.options.type?(this.$cache.single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.shad_single.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.edge.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_single.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))):(this.$cache.single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.shad_from.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.shad_from.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))),this.options.keyboard&&this.$cache.line.on("keydown.irs_"+this.plugin_count,this.key.bind(this,"keyboard")),e&&(this.$cache.body.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.body.on("mouseleave.irs_"+this.plugin_count,this.pointerUp.bind(this))))},pointerFocus:function(t){var i,s;this.target||(i=(s="single"===this.options.type?this.$cache.single:this.$cache.from).offset().left,i+=s.width()/2-1,this.pointerClick("single",{preventDefault:function(){},pageX:i}))},pointerMove:function(t){if(this.dragging){var i=t.pageX||t.originalEvent.touches&&t.originalEvent.touches[0].pageX;this.coords.x_pointer=i-this.coords.x_gap,this.calc()}},pointerUp:function(t){this.current_plugin===this.plugin_count&&this.is_active&&(this.is_active=!1,this.$cache.cont.find(".state_hover").removeClass("state_hover"),this.force_redraw=!0,e&&a("*").prop("unselectable",!1),this.updateScene(),this.restoreOriginalMinInterval(),(a.contains(this.$cache.cont[0],t.target)||this.dragging)&&this.callOnFinish(),this.dragging=!1)},pointerDown:function(t,i){i.preventDefault();var s=i.pageX||i.originalEvent.touches&&i.originalEvent.touches[0].pageX;2!==i.button&&("both"===t&&this.setTempMinInterval(),t||(t=this.target||"from"),this.current_plugin=this.plugin_count,this.target=t,this.is_active=!0,this.dragging=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=s-this.coords.x_gap,this.calcPointerPercent(),this.changeLevel(t),e&&a("*").prop("unselectable",!0),this.$cache.line.trigger("focus"),this.updateScene())},pointerClick:function(t,i){i.preventDefault();var s=i.pageX||i.originalEvent.touches&&i.originalEvent.touches[0].pageX;2!==i.button&&(this.current_plugin=this.plugin_count,this.target=t,this.is_click=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=+(s-this.coords.x_gap).toFixed(),this.force_redraw=!0,this.calc(),this.$cache.line.trigger("focus"))},key:function(t,i){if(!(this.current_plugin!==this.plugin_count||i.altKey||i.ctrlKey||i.shiftKey||i.metaKey)){switch(i.which){case 83:case 65:case 40:case 37:i.preventDefault(),this.moveByKey(!1);break;case 87:case 68:case 38:case 39:i.preventDefault(),this.moveByKey(!0)}return!0}},moveByKey:function(t){var i=this.coords.p_pointer,s=(this.options.max-this.options.min)/100;s=this.options.step/s,t?i+=s:i-=s,this.coords.x_pointer=this.toFixed(this.coords.w_rs/100*i),this.is_key=!0,this.calc()},setMinMax:function(){if(this.options){if(this.options.hide_min_max)return this.$cache.min[0].style.display="none",void(this.$cache.max[0].style.display="none");if(this.options.values.length)this.$cache.min.html(this.decorate(this.options.p_values[this.options.min])),this.$cache.max.html(this.decorate(this.options.p_values[this.options.max]));else{var t=this._prettify(this.options.min),i=this._prettify(this.options.max);this.result.min_pretty=t,this.result.max_pretty=i,this.$cache.min.html(this.decorate(t,this.options.min)),this.$cache.max.html(this.decorate(i,this.options.max))}this.labels.w_min=this.$cache.min.outerWidth(!1),this.labels.w_max=this.$cache.max.outerWidth(!1)}},setTempMinInterval:function(){var t=this.result.to-this.result.from;null===this.old_min_interval&&(this.old_min_interval=this.options.min_interval),this.options.min_interval=t},restoreOriginalMinInterval:function(){null!==this.old_min_interval&&(this.options.min_interval=this.old_min_interval,this.old_min_interval=null)},calc:function(t){if(this.options&&(this.calc_count++,(10===this.calc_count||t)&&(this.calc_count=0,this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.calcHandlePercent()),this.coords.w_rs)){this.calcPointerPercent();var i=this.getHandleX();switch("both"===this.target&&(this.coords.p_gap=0,i=this.getHandleX()),"click"===this.target&&(this.coords.p_gap=this.coords.p_handle/2,i=this.getHandleX(),this.options.drag_interval?this.target="both_one":this.target=this.chooseHandle(i)),this.target){case"base":var s=(this.options.max-this.options.min)/100,o=(this.result.from-this.options.min)/s,e=(this.result.to-this.options.min)/s;this.coords.p_single_real=this.toFixed(o),this.coords.p_from_real=this.toFixed(o),this.coords.p_to_real=this.toFixed(e),this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max),this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max),this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max),this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real),this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real),this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real),this.target=null;break;case"single":if(this.options.from_fixed)break;this.coords.p_single_real=this.convertToRealPercent(i),this.coords.p_single_real=this.calcWithStep(this.coords.p_single_real),this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max),this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real);break;case"from":if(this.options.from_fixed)break;this.coords.p_from_real=this.convertToRealPercent(i),this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real),this.coords.p_from_real>this.coords.p_to_real&&(this.coords.p_from_real=this.coords.p_to_real),this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max),this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,this.coords.p_to_real,"from"),this.coords.p_from_real=this.checkMaxInterval(this.coords.p_from_real,this.coords.p_to_real,"from"),this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);break;case"to":if(this.options.to_fixed)break;this.coords.p_to_real=this.convertToRealPercent(i),this.coords.p_to_real=this.calcWithStep(this.coords.p_to_real),this.coords.p_to_real<this.coords.p_from_real&&(this.coords.p_to_real=this.coords.p_from_real),this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max),this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,"to"),this.coords.p_to_real=this.checkMaxInterval(this.coords.p_to_real,this.coords.p_from_real,"to"),this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);break;case"both":if(this.options.from_fixed||this.options.to_fixed)break;i=this.toFixed(i+.001*this.coords.p_handle),this.coords.p_from_real=this.convertToRealPercent(i)-this.coords.p_gap_left,this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real),this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max),this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,this.coords.p_to_real,"from"),this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real),this.coords.p_to_real=this.convertToRealPercent(i)+this.coords.p_gap_right,this.coords.p_to_real=this.calcWithStep(this.coords.p_to_real),this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max),this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,"to"),this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);break;case"both_one":if(this.options.from_fixed||this.options.to_fixed)break;var h=this.convertToRealPercent(i),r=this.result.from_percent,n=this.result.to_percent-r,a=n/2,c=h-a,l=h+a;c<0&&(l=(c=0)+n),100<l&&(c=(l=100)-n),this.coords.p_from_real=this.calcWithStep(c),this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max),this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real),this.coords.p_to_real=this.calcWithStep(l),this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max),this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real)}"single"===this.options.type?(this.coords.p_bar_x=this.coords.p_handle/2,this.coords.p_bar_w=this.coords.p_single_fake,this.result.from_percent=this.coords.p_single_real,this.result.from=this.convertToValue(this.coords.p_single_real),this.result.from_pretty=this._prettify(this.result.from),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from])):(this.coords.p_bar_x=this.toFixed(this.coords.p_from_fake+this.coords.p_handle/2),this.coords.p_bar_w=this.toFixed(this.coords.p_to_fake-this.coords.p_from_fake),this.result.from_percent=this.coords.p_from_real,this.result.from=this.convertToValue(this.coords.p_from_real),this.result.from_pretty=this._prettify(this.result.from),this.result.to_percent=this.coords.p_to_real,this.result.to=this.convertToValue(this.coords.p_to_real),this.result.to_pretty=this._prettify(this.result.to),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from],this.result.to_value=this.options.values[this.result.to])),this.calcMinMax(),this.calcLabels()}},calcPointerPercent:function(){this.coords.w_rs?(this.coords.x_pointer<0||isNaN(this.coords.x_pointer)?this.coords.x_pointer=0:this.coords.x_pointer>this.coords.w_rs&&(this.coords.x_pointer=this.coords.w_rs),this.coords.p_pointer=this.toFixed(this.coords.x_pointer/this.coords.w_rs*100)):this.coords.p_pointer=0},convertToRealPercent:function(t){return t/(100-this.coords.p_handle)*100},convertToFakePercent:function(t){return t/100*(100-this.coords.p_handle)},getHandleX:function(){var t=100-this.coords.p_handle,i=this.toFixed(this.coords.p_pointer-this.coords.p_gap);return i<0?i=0:t<i&&(i=t),i},calcHandlePercent:function(){"single"===this.options.type?this.coords.w_handle=this.$cache.s_single.outerWidth(!1):this.coords.w_handle=this.$cache.s_from.outerWidth(!1),this.coords.p_handle=this.toFixed(this.coords.w_handle/this.coords.w_rs*100)},chooseHandle:function(t){return"single"===this.options.type?"single":this.coords.p_from_real+(this.coords.p_to_real-this.coords.p_from_real)/2<=t?this.options.to_fixed?"from":"to":this.options.from_fixed?"to":"from"},calcMinMax:function(){this.coords.w_rs&&(this.labels.p_min=this.labels.w_min/this.coords.w_rs*100,this.labels.p_max=this.labels.w_max/this.coords.w_rs*100)},calcLabels:function(){this.coords.w_rs&&!this.options.hide_from_to&&("single"===this.options.type?(this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=this.coords.p_single_fake+this.coords.p_handle/2-this.labels.p_single_fake/2):(this.labels.w_from=this.$cache.from.outerWidth(!1),this.labels.p_from_fake=this.labels.w_from/this.coords.w_rs*100,this.labels.p_from_left=this.coords.p_from_fake+this.coords.p_handle/2-this.labels.p_from_fake/2,this.labels.p_from_left=this.toFixed(this.labels.p_from_left),this.labels.p_from_left=this.checkEdges(this.labels.p_from_left,this.labels.p_from_fake),this.labels.w_to=this.$cache.to.outerWidth(!1),this.labels.p_to_fake=this.labels.w_to/this.coords.w_rs*100,this.labels.p_to_left=this.coords.p_to_fake+this.coords.p_handle/2-this.labels.p_to_fake/2,this.labels.p_to_left=this.toFixed(this.labels.p_to_left),this.labels.p_to_left=this.checkEdges(this.labels.p_to_left,this.labels.p_to_fake),this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=(this.labels.p_from_left+this.labels.p_to_left+this.labels.p_to_fake)/2-this.labels.p_single_fake/2,this.labels.p_single_left=this.toFixed(this.labels.p_single_left)),this.labels.p_single_left=this.checkEdges(this.labels.p_single_left,this.labels.p_single_fake))},updateScene:function(){this.raf_id&&(cancelAnimationFrame(this.raf_id),this.raf_id=null),clearTimeout(this.update_tm),this.update_tm=null,this.options&&(this.drawHandles(),this.is_active?this.raf_id=requestAnimationFrame(this.updateScene.bind(this)):this.update_tm=setTimeout(this.updateScene.bind(this),300))},drawHandles:function(){this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.coords.w_rs&&(this.coords.w_rs!==this.coords.w_rs_old&&(this.target="base",this.is_resize=!0),(this.coords.w_rs!==this.coords.w_rs_old||this.force_redraw)&&(this.setMinMax(),this.calc(!0),this.drawLabels(),this.options.grid&&(this.calcGridMargin(),this.calcGridLabels()),this.force_redraw=!0,this.coords.w_rs_old=this.coords.w_rs,this.drawShadow()),this.coords.w_rs&&(this.dragging||this.force_redraw||this.is_key)&&((this.old_from!==this.result.from||this.old_to!==this.result.to||this.force_redraw||this.is_key)&&(this.drawLabels(),this.$cache.bar[0].style.left=this.coords.p_bar_x+"%",this.$cache.bar[0].style.width=this.coords.p_bar_w+"%","single"===this.options.type?(this.$cache.bar[0].style.left=0,this.$cache.bar[0].style.width=this.coords.p_bar_w+this.coords.p_bar_x+"%",this.$cache.s_single[0].style.left=this.coords.p_single_fake+"%"):(this.$cache.s_from[0].style.left=this.coords.p_from_fake+"%",this.$cache.s_to[0].style.left=this.coords.p_to_fake+"%",(this.old_from!==this.result.from||this.force_redraw)&&(this.$cache.from[0].style.left=this.labels.p_from_left+"%"),(this.old_to!==this.result.to||this.force_redraw)&&(this.$cache.to[0].style.left=this.labels.p_to_left+"%")),this.$cache.single[0].style.left=this.labels.p_single_left+"%",this.writeToInput(),this.old_from===this.result.from&&this.old_to===this.result.to||this.is_start||(this.$cache.input.trigger("change"),this.$cache.input.trigger("input")),this.old_from=this.result.from,this.old_to=this.result.to,this.is_resize||this.is_update||this.is_start||this.is_finish||this.callOnChange(),(this.is_key||this.is_click)&&(this.is_key=!1,this.is_click=!1,this.callOnFinish()),this.is_update=!1,this.is_resize=!1,this.is_finish=!1),this.is_start=!1,this.is_key=!1,this.is_click=!1,this.force_redraw=!1))},drawLabels:function(){if(this.options){var t,i,s,o,e,h=this.options.values.length,r=this.options.p_values;if(!this.options.hide_from_to)if("single"===this.options.type)t=h?this.decorate(r[this.result.from]):(o=this._prettify(this.result.from),this.decorate(o,this.result.from)),this.$cache.single.html(t),this.calcLabels(),this.labels.p_single_left<this.labels.p_min+1?this.$cache.min[0].style.visibility="hidden":this.$cache.min[0].style.visibility="visible",this.labels.p_single_left+this.labels.p_single_fake>100-this.labels.p_max-1?this.$cache.max[0].style.visibility="hidden":this.$cache.max[0].style.visibility="visible";else{s=h?(this.options.decorate_both?(t=this.decorate(r[this.result.from]),t+=this.options.values_separator,t+=this.decorate(r[this.result.to])):t=this.decorate(r[this.result.from]+this.options.values_separator+r[this.result.to]),i=this.decorate(r[this.result.from]),this.decorate(r[this.result.to])):(o=this._prettify(this.result.from),e=this._prettify(this.result.to),this.options.decorate_both?(t=this.decorate(o,this.result.from),t+=this.options.values_separator,t+=this.decorate(e,this.result.to)):t=this.decorate(o+this.options.values_separator+e,this.result.to),i=this.decorate(o,this.result.from),this.decorate(e,this.result.to)),this.$cache.single.html(t),this.$cache.from.html(i),this.$cache.to.html(s),this.calcLabels();var n=Math.min(this.labels.p_single_left,this.labels.p_from_left),a=this.labels.p_single_left+this.labels.p_single_fake,c=this.labels.p_to_left+this.labels.p_to_fake,l=Math.max(a,c);this.labels.p_from_left+this.labels.p_from_fake>=this.labels.p_to_left?(this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",l=this.result.from===this.result.to?("from"===this.target?this.$cache.from[0].style.visibility="visible":"to"===this.target?this.$cache.to[0].style.visibility="visible":this.target||(this.$cache.from[0].style.visibility="visible"),this.$cache.single[0].style.visibility="hidden",c):(this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",Math.max(a,c))):(this.$cache.from[0].style.visibility="visible",this.$cache.to[0].style.visibility="visible",this.$cache.single[0].style.visibility="hidden"),n<this.labels.p_min+1?this.$cache.min[0].style.visibility="hidden":this.$cache.min[0].style.visibility="visible",l>100-this.labels.p_max-1?this.$cache.max[0].style.visibility="hidden":this.$cache.max[0].style.visibility="visible"}}},drawShadow:function(){var t,i,s,o,e=this.options,h=this.$cache,r="number"==typeof e.from_min&&!isNaN(e.from_min),n="number"==typeof e.from_max&&!isNaN(e.from_max),a="number"==typeof e.to_min&&!isNaN(e.to_min),c="number"==typeof e.to_max&&!isNaN(e.to_max);"single"===e.type?e.from_shadow&&(r||n)?(t=this.convertToPercent(r?e.from_min:e.min),i=this.convertToPercent(n?e.from_max:e.max)-t,t=this.toFixed(t-this.coords.p_handle/100*t),i=this.toFixed(i-this.coords.p_handle/100*i),t+=this.coords.p_handle/2,h.shad_single[0].style.display="block",h.shad_single[0].style.left=t+"%",h.shad_single[0].style.width=i+"%"):h.shad_single[0].style.display="none":(e.from_shadow&&(r||n)?(t=this.convertToPercent(r?e.from_min:e.min),i=this.convertToPercent(n?e.from_max:e.max)-t,t=this.toFixed(t-this.coords.p_handle/100*t),i=this.toFixed(i-this.coords.p_handle/100*i),t+=this.coords.p_handle/2,h.shad_from[0].style.display="block",h.shad_from[0].style.left=t+"%",h.shad_from[0].style.width=i+"%"):h.shad_from[0].style.display="none",e.to_shadow&&(a||c)?(s=this.convertToPercent(a?e.to_min:e.min),o=this.convertToPercent(c?e.to_max:e.max)-s,s=this.toFixed(s-this.coords.p_handle/100*s),o=this.toFixed(o-this.coords.p_handle/100*o),s+=this.coords.p_handle/2,h.shad_to[0].style.display="block",h.shad_to[0].style.left=s+"%",h.shad_to[0].style.width=o+"%"):h.shad_to[0].style.display="none")},writeToInput:function(){"single"===this.options.type?(this.options.values.length?this.$cache.input.prop("value",this.result.from_value):this.$cache.input.prop("value",this.result.from),this.$cache.input.data("from",this.result.from)):(this.options.values.length?this.$cache.input.prop("value",this.result.from_value+this.options.input_values_separator+this.result.to_value):this.$cache.input.prop("value",this.result.from+this.options.input_values_separator+this.result.to),this.$cache.input.data("from",this.result.from),this.$cache.input.data("to",this.result.to))},callOnStart:function(){this.writeToInput(),this.options.onStart&&"function"==typeof this.options.onStart&&(this.options.scope?this.options.onStart.call(this.options.scope,this.result):this.options.onStart(this.result))},callOnChange:function(){this.writeToInput(),this.options.onChange&&"function"==typeof this.options.onChange&&(this.options.scope?this.options.onChange.call(this.options.scope,this.result):this.options.onChange(this.result))},callOnFinish:function(){this.writeToInput(),this.options.onFinish&&"function"==typeof this.options.onFinish&&(this.options.scope?this.options.onFinish.call(this.options.scope,this.result):this.options.onFinish(this.result))},callOnUpdate:function(){this.writeToInput(),this.options.onUpdate&&"function"==typeof this.options.onUpdate&&(this.options.scope?this.options.onUpdate.call(this.options.scope,this.result):this.options.onUpdate(this.result))},toggleInput:function(){this.$cache.input.toggleClass("irs-hidden-input"),this.has_tab_index?this.$cache.input.prop("tabindex",-1):this.$cache.input.removeProp("tabindex"),this.has_tab_index=!this.has_tab_index},convertToPercent:function(t,i){var s,o=this.options.max-this.options.min,e=o/100;return o?(s=(i?t:t-this.options.min)/e,this.toFixed(s)):(this.no_diapason=!0,0)},convertToValue:function(t){var i,s,o=this.options.min,e=this.options.max,h=o.toString().split(".")[1],r=e.toString().split(".")[1],n=0,a=0;if(0===t)return this.options.min;if(100===t)return this.options.max;h&&(n=i=h.length),r&&(n=s=r.length),i&&s&&(n=s<=i?i:s),o<0&&(o=+(o+(a=Math.abs(o))).toFixed(n),e=+(e+a).toFixed(n));var c,l=(e-o)/100*t+o,_=this.options.step.toString().split(".")[1];return l=_?+l.toFixed(_.length):(l/=this.options.step,+(l*=this.options.step).toFixed(0)),a&&(l-=a),(c=_?+l.toFixed(_.length):this.toFixed(l))<this.options.min?c=this.options.min:c>this.options.max&&(c=this.options.max),c},calcWithStep:function(t){var i=Math.round(t/this.coords.p_step)*this.coords.p_step;return 100<i&&(i=100),100===t&&(i=100),this.toFixed(i)},checkMinInterval:function(t,i,s){var o,e,h=this.options;return h.min_interval?(o=this.convertToValue(t),e=this.convertToValue(i),"from"===s?e-o<h.min_interval&&(o=e-h.min_interval):o-e<h.min_interval&&(o=e+h.min_interval),this.convertToPercent(o)):t},checkMaxInterval:function(t,i,s){var o,e,h=this.options;return h.max_interval?(o=this.convertToValue(t),e=this.convertToValue(i),"from"===s?e-o>h.max_interval&&(o=e-h.max_interval):o-e>h.max_interval&&(o=e+h.max_interval),this.convertToPercent(o)):t},checkDiapason:function(t,i,s){var o=this.convertToValue(t),e=this.options;return"number"!=typeof i&&(i=e.min),"number"!=typeof s&&(s=e.max),o<i&&(o=i),s<o&&(o=s),this.convertToPercent(o)},toFixed:function(t){return+(t=t.toFixed(20))},_prettify:function(t){return this.options.prettify_enabled?this.options.prettify&&"function"==typeof this.options.prettify?this.options.prettify(t):this.prettify(t):t},prettify:function(t){return t.toString().replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g,"$1"+this.options.prettify_separator)},checkEdges:function(t,i){return this.options.force_edges&&(t<0?t=0:100-i<t&&(t=100-i)),this.toFixed(t)},validate:function(){var t,i,s=this.options,o=this.result,e=s.values,h=e.length;if("string"==typeof s.min&&(s.min=+s.min),"string"==typeof s.max&&(s.max=+s.max),"string"==typeof s.from&&(s.from=+s.from),"string"==typeof s.to&&(s.to=+s.to),"string"==typeof s.step&&(s.step=+s.step),"string"==typeof s.from_min&&(s.from_min=+s.from_min),"string"==typeof s.from_max&&(s.from_max=+s.from_max),"string"==typeof s.to_min&&(s.to_min=+s.to_min),"string"==typeof s.to_max&&(s.to_max=+s.to_max),"string"==typeof s.grid_num&&(s.grid_num=+s.grid_num),s.max<s.min&&(s.max=s.min),h)for(s.p_values=[],s.min=0,s.max=h-1,s.step=1,s.grid_num=s.max,s.grid_snap=!0,i=0;i<h;i++)t=+e[i],t=isNaN(t)?e[i]:(e[i]=t,this._prettify(t)),s.p_values.push(t);("number"!=typeof s.from||isNaN(s.from))&&(s.from=s.min),("number"!=typeof s.to||isNaN(s.to))&&(s.to=s.max),"single"===s.type?(s.from<s.min&&(s.from=s.min),s.from>s.max&&(s.from=s.max)):(s.from<s.min&&(s.from=s.min),s.from>s.max&&(s.from=s.max),s.to<s.min&&(s.to=s.min),s.to>s.max&&(s.to=s.max),this.update_check.from&&(this.update_check.from!==s.from&&s.from>s.to&&(s.from=s.to),this.update_check.to!==s.to&&s.to<s.from&&(s.to=s.from)),s.from>s.to&&(s.from=s.to),s.to<s.from&&(s.to=s.from)),("number"!=typeof s.step||isNaN(s.step)||!s.step||s.step<0)&&(s.step=1),"number"==typeof s.from_min&&s.from<s.from_min&&(s.from=s.from_min),"number"==typeof s.from_max&&s.from>s.from_max&&(s.from=s.from_max),"number"==typeof s.to_min&&s.to<s.to_min&&(s.to=s.to_min),"number"==typeof s.to_max&&s.from>s.to_max&&(s.to=s.to_max),o&&(o.min!==s.min&&(o.min=s.min),o.max!==s.max&&(o.max=s.max),(o.from<o.min||o.from>o.max)&&(o.from=s.from),(o.to<o.min||o.to>o.max)&&(o.to=s.to)),("number"!=typeof s.min_interval||isNaN(s.min_interval)||!s.min_interval||s.min_interval<0)&&(s.min_interval=0),("number"!=typeof s.max_interval||isNaN(s.max_interval)||!s.max_interval||s.max_interval<0)&&(s.max_interval=0),s.min_interval&&s.min_interval>s.max-s.min&&(s.min_interval=s.max-s.min),s.max_interval&&s.max_interval>s.max-s.min&&(s.max_interval=s.max-s.min)},decorate:function(t,i){var s="",o=this.options;return o.prefix&&(s+=o.prefix),s+=t,o.max_postfix&&(o.values.length&&t===o.p_values[o.max]?(s+=o.max_postfix,o.postfix&&(s+=" ")):i===o.max&&(s+=o.max_postfix,o.postfix&&(s+=" "))),o.postfix&&(s+=o.postfix),s},updateFrom:function(){this.result.from=this.options.from,this.result.from_percent=this.convertToPercent(this.result.from),this.result.from_pretty=this._prettify(this.result.from),this.options.values&&(this.result.from_value=this.options.values[this.result.from])},updateTo:function(){this.result.to=this.options.to,this.result.to_percent=this.convertToPercent(this.result.to),this.result.to_pretty=this._prettify(this.result.to),this.options.values&&(this.result.to_value=this.options.values[this.result.to])},updateResult:function(){this.result.min=this.options.min,this.result.max=this.options.max,this.updateFrom(),this.updateTo()},appendGrid:function(){if(this.options.grid){var t,i,s,o,e,h,r=this.options,n=r.max-r.min,a=r.grid_num,c=0,l=4,_="";for(this.calcGridMargin(),r.grid_snap&&(a=n/r.step),50<a&&(a=50),s=this.toFixed(100/a),4<a&&(l=3),7<a&&(l=2),14<a&&(l=1),28<a&&(l=0),t=0;t<a+1;t++){for(o=l,100<(c=this.toFixed(s*t))&&(c=100),e=((this.coords.big[t]=c)-s*(t-1))/(o+1),i=1;i<=o&&0!==c;i++)_+='<span class="irs-grid-pol small" style="left: '+this.toFixed(c-e*i)+'%"></span>';_+='<span class="irs-grid-pol" style="left: '+c+'%"></span>',h=this.convertToValue(c),_+='<span class="irs-grid-text js-grid-text-'+t+'" style="left: '+c+'%">'+(h=r.values.length?r.p_values[h]:this._prettify(h))+"</span>"}this.coords.big_num=Math.ceil(a+1),this.$cache.cont.addClass("irs-with-grid"),this.$cache.grid.html(_),this.cacheGridLabels()}},cacheGridLabels:function(){var t,i,s=this.coords.big_num;for(i=0;i<s;i++)t=this.$cache.grid.find(".js-grid-text-"+i),this.$cache.grid_labels.push(t);this.calcGridLabels()},calcGridLabels:function(){var t,i,s=[],o=[],e=this.coords.big_num;for(t=0;t<e;t++)this.coords.big_w[t]=this.$cache.grid_labels[t].outerWidth(!1),this.coords.big_p[t]=this.toFixed(this.coords.big_w[t]/this.coords.w_rs*100),this.coords.big_x[t]=this.toFixed(this.coords.big_p[t]/2),s[t]=this.toFixed(this.coords.big[t]-this.coords.big_x[t]),o[t]=this.toFixed(s[t]+this.coords.big_p[t]);for(this.options.force_edges&&(s[0]<-this.coords.grid_gap&&(s[0]=-this.coords.grid_gap,o[0]=this.toFixed(s[0]+this.coords.big_p[0]),this.coords.big_x[0]=this.coords.grid_gap),o[e-1]>100+this.coords.grid_gap&&(o[e-1]=100+this.coords.grid_gap,s[e-1]=this.toFixed(o[e-1]-this.coords.big_p[e-1]),this.coords.big_x[e-1]=this.toFixed(this.coords.big_p[e-1]-this.coords.grid_gap))),this.calcGridCollision(2,s,o),this.calcGridCollision(4,s,o),t=0;t<e;t++)i=this.$cache.grid_labels[t][0],this.coords.big_x[t]!==Number.POSITIVE_INFINITY&&(i.style.marginLeft=-this.coords.big_x[t]+"%")},calcGridCollision:function(t,i,s){var o,e,h,r=this.coords.big_num;for(o=0;o<r&&!(r<=(e=o+t/2));o+=t)h=this.$cache.grid_labels[e][0],s[o]<=i[e]?h.style.visibility="visible":h.style.visibility="hidden"},calcGridMargin:function(){this.options.grid_margin&&(this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.coords.w_rs&&("single"===this.options.type?this.coords.w_handle=this.$cache.s_single.outerWidth(!1):this.coords.w_handle=this.$cache.s_from.outerWidth(!1),this.coords.p_handle=this.toFixed(this.coords.w_handle/this.coords.w_rs*100),this.coords.grid_gap=this.toFixed(this.coords.p_handle/2-.1),this.$cache.grid[0].style.width=this.toFixed(100-this.coords.p_handle)+"%",this.$cache.grid[0].style.left=this.coords.grid_gap+"%"))},update:function(t){this.input&&(this.is_update=!0,this.options.from=this.result.from,this.options.to=this.result.to,this.update_check.from=this.result.from,this.update_check.to=this.result.to,this.options=a.extend(this.options,t),this.validate(),this.updateResult(t),this.toggleInput(),this.remove(),this.init(!0))},reset:function(){this.input&&(this.updateResult(),this.update())},destroy:function(){this.input&&(this.toggleInput(),this.$cache.input.prop("readonly",!1),a.data(this.input,"ionRangeSlider",null),this.remove(),this.input=null,this.options=null)}},a.fn.ionRangeSlider=function(t){return this.each(function(){a.data(this,"ionRangeSlider")||a.data(this,"ionRangeSlider",new h(this,t,o++))})},function(){for(var h=0,t=["ms","moz","webkit","o"],i=0;i<t.length&&!l.requestAnimationFrame;++i)l.requestAnimationFrame=l[t[i]+"RequestAnimationFrame"],l.cancelAnimationFrame=l[t[i]+"CancelAnimationFrame"]||l[t[i]+"CancelRequestAnimationFrame"];l.requestAnimationFrame||(l.requestAnimationFrame=function(t,i){var s=(new Date).getTime(),o=Math.max(0,16-(s-h)),e=l.setTimeout(function(){t(s+o)},o);return h=s+o,e}),l.cancelAnimationFrame||(l.cancelAnimationFrame=function(t){clearTimeout(t)})}()});
Index: public/vendors/select2/css/select2.css
===================================================================
--- public/vendors/select2/css/select2.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/css/select2.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,484 @@
+.select2-container {
+  box-sizing: border-box;
+  display: inline-block;
+  margin: 0;
+  position: relative;
+  vertical-align: middle; }
+  .select2-container .select2-selection--single {
+    box-sizing: border-box;
+    cursor: pointer;
+    display: block;
+    height: 28px;
+    user-select: none;
+    -webkit-user-select: none; }
+    .select2-container .select2-selection--single .select2-selection__rendered {
+      display: block;
+      padding-left: 8px;
+      padding-right: 20px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap; }
+    .select2-container .select2-selection--single .select2-selection__clear {
+      position: relative; }
+  .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
+    padding-right: 8px;
+    padding-left: 20px; }
+  .select2-container .select2-selection--multiple {
+    box-sizing: border-box;
+    cursor: pointer;
+    display: block;
+    min-height: 32px;
+    user-select: none;
+    -webkit-user-select: none; }
+    .select2-container .select2-selection--multiple .select2-selection__rendered {
+      display: inline-block;
+      overflow: hidden;
+      padding-left: 8px;
+      text-overflow: ellipsis;
+      white-space: nowrap; }
+  .select2-container .select2-search--inline {
+    float: left; }
+    .select2-container .select2-search--inline .select2-search__field {
+      box-sizing: border-box;
+      border: none;
+      font-size: 100%;
+      margin-top: 5px;
+      padding: 0; }
+      .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
+        -webkit-appearance: none; }
+
+.select2-dropdown {
+  background-color: white;
+  border: 1px solid #aaa;
+  border-radius: 4px;
+  box-sizing: border-box;
+  display: block;
+  position: absolute;
+  left: -100000px;
+  width: 100%;
+  z-index: 1051; }
+
+.select2-results {
+  display: block; }
+
+.select2-results__options {
+  list-style: none;
+  margin: 0;
+  padding: 0; }
+
+.select2-results__option {
+  padding: 6px;
+  user-select: none;
+  -webkit-user-select: none; }
+  .select2-results__option[aria-selected] {
+    cursor: pointer; }
+
+.select2-container--open .select2-dropdown {
+  left: 0; }
+
+.select2-container--open .select2-dropdown--above {
+  border-bottom: none;
+  border-bottom-left-radius: 0;
+  border-bottom-right-radius: 0; }
+
+.select2-container--open .select2-dropdown--below {
+  border-top: none;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0; }
+
+.select2-search--dropdown {
+  display: block;
+  padding: 4px; }
+  .select2-search--dropdown .select2-search__field {
+    padding: 4px;
+    width: 100%;
+    box-sizing: border-box; }
+    .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
+      -webkit-appearance: none; }
+  .select2-search--dropdown.select2-search--hide {
+    display: none; }
+
+.select2-close-mask {
+  border: 0;
+  margin: 0;
+  padding: 0;
+  display: block;
+  position: fixed;
+  left: 0;
+  top: 0;
+  min-height: 100%;
+  min-width: 100%;
+  height: auto;
+  width: auto;
+  opacity: 0;
+  z-index: 99;
+  background-color: #fff;
+  filter: alpha(opacity=0); }
+
+.select2-hidden-accessible {
+  border: 0 !important;
+  clip: rect(0 0 0 0) !important;
+  -webkit-clip-path: inset(50%) !important;
+  clip-path: inset(50%) !important;
+  height: 1px !important;
+  overflow: hidden !important;
+  padding: 0 !important;
+  position: absolute !important;
+  width: 1px !important;
+  white-space: nowrap !important; }
+
+.select2-container--default .select2-selection--single {
+  background-color: #fff;
+  border: 1px solid #aaa;
+  border-radius: 4px; }
+  .select2-container--default .select2-selection--single .select2-selection__rendered {
+    color: #444;
+    line-height: 28px; }
+  .select2-container--default .select2-selection--single .select2-selection__clear {
+    cursor: pointer;
+    float: right;
+    font-weight: bold; }
+  .select2-container--default .select2-selection--single .select2-selection__placeholder {
+    color: #999; }
+  .select2-container--default .select2-selection--single .select2-selection__arrow {
+    height: 26px;
+    position: absolute;
+    top: 1px;
+    right: 1px;
+    width: 20px; }
+    .select2-container--default .select2-selection--single .select2-selection__arrow b {
+      border-color: #888 transparent transparent transparent;
+      border-style: solid;
+      border-width: 5px 4px 0 4px;
+      height: 0;
+      left: 50%;
+      margin-left: -4px;
+      margin-top: -2px;
+      position: absolute;
+      top: 50%;
+      width: 0; }
+
+.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
+  float: left; }
+
+.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
+  left: 1px;
+  right: auto; }
+
+.select2-container--default.select2-container--disabled .select2-selection--single {
+  background-color: #eee;
+  cursor: default; }
+  .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
+    display: none; }
+
+.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
+  border-color: transparent transparent #888 transparent;
+  border-width: 0 4px 5px 4px; }
+
+.select2-container--default .select2-selection--multiple {
+  background-color: white;
+  border: 1px solid #aaa;
+  border-radius: 4px;
+  cursor: text; }
+  .select2-container--default .select2-selection--multiple .select2-selection__rendered {
+    box-sizing: border-box;
+    list-style: none;
+    margin: 0;
+    padding: 0 5px;
+    width: 100%; }
+    .select2-container--default .select2-selection--multiple .select2-selection__rendered li {
+      list-style: none; }
+  .select2-container--default .select2-selection--multiple .select2-selection__placeholder {
+    color: #999;
+    margin-top: 5px;
+    float: left; }
+  .select2-container--default .select2-selection--multiple .select2-selection__clear {
+    cursor: pointer;
+    float: right;
+    font-weight: bold;
+    margin-top: 5px;
+    margin-right: 10px; }
+  .select2-container--default .select2-selection--multiple .select2-selection__choice {
+    background-color: #e4e4e4;
+    border: 1px solid #aaa;
+    border-radius: 4px;
+    cursor: default;
+    float: left;
+    margin-right: 5px;
+    margin-top: 5px;
+    padding: 0 5px; }
+  .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
+    color: #999;
+    cursor: pointer;
+    display: inline-block;
+    font-weight: bold;
+    margin-right: 2px; }
+    .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
+      color: #333; }
+
+.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
+  float: right; }
+
+.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
+  margin-left: 5px;
+  margin-right: auto; }
+
+.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
+  margin-left: 2px;
+  margin-right: auto; }
+
+.select2-container--default.select2-container--focus .select2-selection--multiple {
+  border: solid black 1px;
+  outline: 0; }
+
+.select2-container--default.select2-container--disabled .select2-selection--multiple {
+  background-color: #eee;
+  cursor: default; }
+
+.select2-container--default.select2-container--disabled .select2-selection__choice__remove {
+  display: none; }
+
+.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0; }
+
+.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
+  border-bottom-left-radius: 0;
+  border-bottom-right-radius: 0; }
+
+.select2-container--default .select2-search--dropdown .select2-search__field {
+  border: 1px solid #aaa; }
+
+.select2-container--default .select2-search--inline .select2-search__field {
+  background: transparent;
+  border: none;
+  outline: 0;
+  box-shadow: none;
+  -webkit-appearance: textfield; }
+
+.select2-container--default .select2-results > .select2-results__options {
+  max-height: 200px;
+  overflow-y: auto; }
+
+.select2-container--default .select2-results__option[role=group] {
+  padding: 0; }
+
+.select2-container--default .select2-results__option[aria-disabled=true] {
+  color: #999; }
+
+.select2-container--default .select2-results__option[aria-selected=true] {
+  background-color: #ddd; }
+
+.select2-container--default .select2-results__option .select2-results__option {
+  padding-left: 1em; }
+  .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
+    padding-left: 0; }
+  .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
+    margin-left: -1em;
+    padding-left: 2em; }
+    .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
+      margin-left: -2em;
+      padding-left: 3em; }
+      .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
+        margin-left: -3em;
+        padding-left: 4em; }
+        .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
+          margin-left: -4em;
+          padding-left: 5em; }
+          .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
+            margin-left: -5em;
+            padding-left: 6em; }
+
+.select2-container--default .select2-results__option--highlighted[aria-selected] {
+  background-color: #5897fb;
+  color: white; }
+
+.select2-container--default .select2-results__group {
+  cursor: default;
+  display: block;
+  padding: 6px; }
+
+.select2-container--classic .select2-selection--single {
+  background-color: #f7f7f7;
+  border: 1px solid #aaa;
+  border-radius: 4px;
+  outline: 0;
+  background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
+  background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
+  background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
+  .select2-container--classic .select2-selection--single:focus {
+    border: 1px solid #5897fb; }
+  .select2-container--classic .select2-selection--single .select2-selection__rendered {
+    color: #444;
+    line-height: 28px; }
+  .select2-container--classic .select2-selection--single .select2-selection__clear {
+    cursor: pointer;
+    float: right;
+    font-weight: bold;
+    margin-right: 10px; }
+  .select2-container--classic .select2-selection--single .select2-selection__placeholder {
+    color: #999; }
+  .select2-container--classic .select2-selection--single .select2-selection__arrow {
+    background-color: #ddd;
+    border: none;
+    border-left: 1px solid #aaa;
+    border-top-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    height: 26px;
+    position: absolute;
+    top: 1px;
+    right: 1px;
+    width: 20px;
+    background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
+    background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
+    background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
+    background-repeat: repeat-x;
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
+    .select2-container--classic .select2-selection--single .select2-selection__arrow b {
+      border-color: #888 transparent transparent transparent;
+      border-style: solid;
+      border-width: 5px 4px 0 4px;
+      height: 0;
+      left: 50%;
+      margin-left: -4px;
+      margin-top: -2px;
+      position: absolute;
+      top: 50%;
+      width: 0; }
+
+.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
+  float: left; }
+
+.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
+  border: none;
+  border-right: 1px solid #aaa;
+  border-radius: 0;
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  left: 1px;
+  right: auto; }
+
+.select2-container--classic.select2-container--open .select2-selection--single {
+  border: 1px solid #5897fb; }
+  .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
+    background: transparent;
+    border: none; }
+    .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
+      border-color: transparent transparent #888 transparent;
+      border-width: 0 4px 5px 4px; }
+
+.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
+  border-top: none;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+  background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
+  background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
+  background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
+
+.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
+  border-bottom: none;
+  border-bottom-left-radius: 0;
+  border-bottom-right-radius: 0;
+  background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
+  background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
+  background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
+
+.select2-container--classic .select2-selection--multiple {
+  background-color: white;
+  border: 1px solid #aaa;
+  border-radius: 4px;
+  cursor: text;
+  outline: 0; }
+  .select2-container--classic .select2-selection--multiple:focus {
+    border: 1px solid #5897fb; }
+  .select2-container--classic .select2-selection--multiple .select2-selection__rendered {
+    list-style: none;
+    margin: 0;
+    padding: 0 5px; }
+  .select2-container--classic .select2-selection--multiple .select2-selection__clear {
+    display: none; }
+  .select2-container--classic .select2-selection--multiple .select2-selection__choice {
+    background-color: #e4e4e4;
+    border: 1px solid #aaa;
+    border-radius: 4px;
+    cursor: default;
+    float: left;
+    margin-right: 5px;
+    margin-top: 5px;
+    padding: 0 5px; }
+  .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
+    color: #888;
+    cursor: pointer;
+    display: inline-block;
+    font-weight: bold;
+    margin-right: 2px; }
+    .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
+      color: #555; }
+
+.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
+  float: right;
+  margin-left: 5px;
+  margin-right: auto; }
+
+.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
+  margin-left: 2px;
+  margin-right: auto; }
+
+.select2-container--classic.select2-container--open .select2-selection--multiple {
+  border: 1px solid #5897fb; }
+
+.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
+  border-top: none;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0; }
+
+.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
+  border-bottom: none;
+  border-bottom-left-radius: 0;
+  border-bottom-right-radius: 0; }
+
+.select2-container--classic .select2-search--dropdown .select2-search__field {
+  border: 1px solid #aaa;
+  outline: 0; }
+
+.select2-container--classic .select2-search--inline .select2-search__field {
+  outline: 0;
+  box-shadow: none; }
+
+.select2-container--classic .select2-dropdown {
+  background-color: white;
+  border: 1px solid transparent; }
+
+.select2-container--classic .select2-dropdown--above {
+  border-bottom: none; }
+
+.select2-container--classic .select2-dropdown--below {
+  border-top: none; }
+
+.select2-container--classic .select2-results > .select2-results__options {
+  max-height: 200px;
+  overflow-y: auto; }
+
+.select2-container--classic .select2-results__option[role=group] {
+  padding: 0; }
+
+.select2-container--classic .select2-results__option[aria-disabled=true] {
+  color: grey; }
+
+.select2-container--classic .select2-results__option--highlighted[aria-selected] {
+  background-color: #3875d7;
+  color: white; }
+
+.select2-container--classic .select2-results__group {
+  cursor: default;
+  display: block;
+  padding: 6px; }
+
+.select2-container--classic.select2-container--open .select2-dropdown {
+  border-color: #5897fb; }
Index: public/vendors/select2/css/select2.min.css
===================================================================
--- public/vendors/select2/css/select2.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/css/select2.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
Index: public/vendors/select2/js/i18n/af.js
===================================================================
--- public/vendors/select2/js/i18n/af.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/af.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/af",[],function(){return{errorLoading:function(){return"Die resultate kon nie gelaai word nie."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Verwyders asseblief "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Voer asseblief "+t+" of meer karakters";return n},loadingMore:function(){return"Meer resultate word gelaai…"},maximumSelected:function(e){var t="Kies asseblief net "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"Geen resultate gevind"},searching:function(){return"Besig…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/ar.js
===================================================================
--- public/vendors/select2/js/i18n/ar.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/ar.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum;return"الرجاء حذف "+t+" عناصر"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"الرجاء إضافة "+t+" عناصر"},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){return"تستطيع إختيار "+e.maximum+" بنود فقط"},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/az.js
===================================================================
--- public/vendors/select2/js/i18n/az.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/az.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/bg.js
===================================================================
--- public/vendors/select2/js/i18n/bg.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/bg.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/bs.js
===================================================================
--- public/vendors/select2/js/i18n/bs.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/bs.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bs",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspijelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/ca.js
===================================================================
--- public/vendors/select2/js/i18n/ca.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/ca.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/cs.js
===================================================================
--- public/vendors/select2/js/i18n/cs.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/cs.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadejte o jeden znak méně.":n<=4?"Prosím, zadejte o "+e(n,!0)+" znaky méně.":"Prosím, zadejte o "+n+" znaků méně."},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadejte ještě jeden znak.":n<=4?"Prosím, zadejte ještě další "+e(n,!0)+" znaky.":"Prosím, zadejte ještě dalších "+n+" znaků."},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku.":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky.":"Můžete zvolit maximálně "+n+" položek."},noResults:function(){return"Nenalezeny žádné položky."},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/da.js
===================================================================
--- public/vendors/select2/js/i18n/da.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/da.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Angiv venligst "+t+" tegn mindre"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Angiv venligst "+t+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/de.js
===================================================================
--- public/vendors/select2/js/i18n/de.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/de.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/dsb.js
===================================================================
--- public/vendors/select2/js/i18n/dsb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/dsb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/dsb",[],function(){var e=["znamuško","znamušce","znamuška","znamuškow"],t=["zapisk","zapiska","zapiski","zapiskow"],n=function(t,n){if(t===1)return n[0];if(t===2)return n[1];if(t>2&&t<=4)return n[2];if(t>=5)return n[3]};return{errorLoading:function(){return"Wuslědki njejsu se dali zacytaś."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Pšosym lašuj "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Pšosym zapódaj nanejmjenjej "+r+" "+n(r,e)},loadingMore:function(){return"Dalšne wuslědki se zacytaju…"},maximumSelected:function(e){return"Móžoš jano "+e.maximum+" "+n(e.maximum,t)+"wubraś."},noResults:function(){return"Žedne wuslědki namakane"},searching:function(){return"Pyta se…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/el.js
===================================================================
--- public/vendors/select2/js/i18n/el.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/el.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/en.js
===================================================================
--- public/vendors/select2/js/i18n/en.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/en.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/es.js
===================================================================
--- public/vendors/select2/js/i18n/es.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/es.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"No se pudieron cargar los resultados"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/et.js
===================================================================
--- public/vendors/select2/js/i18n/et.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/et.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/eu.js
===================================================================
--- public/vendors/select2/js/i18n/eu.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/eu.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/fa.js
===================================================================
--- public/vendors/select2/js/i18n/fa.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/fa.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/fi.js
===================================================================
--- public/vendors/select2/js/i18n/fi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/fi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{errorLoading:function(){return"Tuloksia ei saatu ladattua."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){return"Haetaan…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/fr.js
===================================================================
--- public/vendors/select2/js/i18n/fr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/fr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Supprimez "+t+" caractère"+(t>1?"s":"")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Saisissez au moins "+t+" caractère"+(t>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/gl.js
===================================================================
--- public/vendors/select2/js/i18n/gl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/gl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{errorLoading:function(){return"Non foi posíbel cargar os resultados."},inputTooLong:function(e){var t=e.input.length-e.maximum;return t===1?"Elimine un carácter":"Elimine "+t+" caracteres"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t===1?"Engada un carácter":"Engada "+t+" caracteres"},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){return e.maximum===1?"Só pode seleccionar un elemento":"Só pode seleccionar "+e.maximum+" elementos"},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/he.js
===================================================================
--- public/vendors/select2/js/i18n/he.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/he.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/hi.js
===================================================================
--- public/vendors/select2/js/i18n/hi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/hi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/hr.js
===================================================================
--- public/vendors/select2/js/i18n/hr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/hr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/hsb.js
===================================================================
--- public/vendors/select2/js/i18n/hsb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/hsb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hsb",[],function(){var e=["znamješko","znamješce","znamješka","znamješkow"],t=["zapisk","zapiskaj","zapiski","zapiskow"],n=function(t,n){if(t===1)return n[0];if(t===2)return n[1];if(t>2&&t<=4)return n[2];if(t>=5)return n[3]};return{errorLoading:function(){return"Wuslědki njedachu so začitać."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Prošu zhašej "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Prošu zapodaj znajmjeńša "+r+" "+n(r,e)},loadingMore:function(){return"Dalše wuslědki so začitaja…"},maximumSelected:function(e){return"Móžeš jenož "+e.maximum+" "+n(e.maximum,t)+"wubrać"},noResults:function(){return"Žane wuslědki namakane"},searching:function(){return"Pyta so…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/hu.js
===================================================================
--- public/vendors/select2/js/i18n/hu.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/hu.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/hy.js
===================================================================
--- public/vendors/select2/js/i18n/hy.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/hy.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hy",[],function(){return{errorLoading:function(){return"Արդյունքները հնարավոր չէ բեռնել։"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Խնդրում ենք հեռացնել "+t+" նշան";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Խնդրում ենք մուտքագրել "+t+" կամ ավել նշաններ";return n},loadingMore:function(){return"Բեռնվում են նոր արդյունքներ․․․"},maximumSelected:function(e){var t="Դուք կարող եք ընտրել առավելագույնը "+e.maximum+" կետ";return t},noResults:function(){return"Արդյունքներ չեն գտնվել"},searching:function(){return"Որոնում․․․"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/id.js
===================================================================
--- public/vendors/select2/js/i18n/id.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/id.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/is.js
===================================================================
--- public/vendors/select2/js/i18n/is.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/is.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/it.js
===================================================================
--- public/vendors/select2/js/i18n/it.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/it.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/ja.js
===================================================================
--- public/vendors/select2/js/i18n/ja.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/ja.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/km.js
===================================================================
--- public/vendors/select2/js/i18n/km.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/km.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ  "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/ko.js
===================================================================
--- public/vendors/select2/js/i18n/ko.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/ko.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/lt.js
===================================================================
--- public/vendors/select2/js/i18n/lt.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/lt.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/lv.js
===================================================================
--- public/vendors/select2/js/i18n/lv.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/lv.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par  "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/mk.js
===================================================================
--- public/vendors/select2/js/i18n/mk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/mk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/ms.js
===================================================================
--- public/vendors/select2/js/i18n/ms.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/ms.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/nb.js
===================================================================
--- public/vendors/select2/js/i18n/nb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/nb.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Vennligst skriv inn "+t+" tegn til"},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/nl.js
===================================================================
--- public/vendors/select2/js/i18n/nl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/nl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/pl.js
===================================================================
--- public/vendors/select2/js/i18n/pl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/pl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/ps.js
===================================================================
--- public/vendors/select2/js/i18n/ps.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/ps.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ps",[],function(){return{errorLoading:function(){return"پايلي نه سي ترلاسه کېدای"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="د مهربانۍ لمخي "+t+" توری ړنګ کړئ";return t!=1&&(n=n.replace("توری","توري")),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لږ تر لږه "+t+" يا ډېر توري وليکئ";return n},loadingMore:function(){return"نوري پايلي ترلاسه کيږي..."},maximumSelected:function(e){var t="تاسو يوازي "+e.maximum+" قلم په نښه کولای سی";return e.maximum!=1&&(t=t.replace("قلم","قلمونه")),t},noResults:function(){return"پايلي و نه موندل سوې"},searching:function(){return"لټول کيږي..."}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/pt-BR.js
===================================================================
--- public/vendors/select2/js/i18n/pt-BR.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/pt-BR.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/pt.js
===================================================================
--- public/vendors/select2/js/i18n/pt.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/pt.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"caractere",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/ro.js
===================================================================
--- public/vendors/select2/js/i18n/ro.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/ro.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+" sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/ru.js
===================================================================
--- public/vendors/select2/js/i18n/ru.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/ru.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/sk.js
===================================================================
--- public/vendors/select2/js/i18n/sk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/sk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{errorLoading:function(){return"Výsledky sa nepodarilo načítať."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Načítanie ďalších výsledkov…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/sl.js
===================================================================
--- public/vendors/select2/js/i18n/sl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/sl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sl",[],function(){return{errorLoading:function(){return"Zadetkov iskanja ni bilo mogoče naložiti."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Prosim zbrišite "+t+" znak";return t==2?n+="a":t!=1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Prosim vpišite še "+t+" znak";return t==2?n+="a":t!=1&&(n+="e"),n},loadingMore:function(){return"Nalagam več zadetkov…"},maximumSelected:function(e){var t="Označite lahko največ "+e.maximum+" predmet";return e.maximum==2?t+="a":e.maximum!=1&&(t+="e"),t},noResults:function(){return"Ni zadetkov."},searching:function(){return"Iščem…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/sr-Cyrl.js
===================================================================
--- public/vendors/select2/js/i18n/sr-Cyrl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/sr-Cyrl.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/sr.js
===================================================================
--- public/vendors/select2/js/i18n/sr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/sr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/sv.js
===================================================================
--- public/vendors/select2/js/i18n/sv.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/sv.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/th.js
===================================================================
--- public/vendors/select2/js/i18n/th.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/th.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{errorLoading:function(){return"ไม่สามารถค้นข้อมูลได้"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/tk.js
===================================================================
--- public/vendors/select2/js/i18n/tk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/tk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tk",[],function(){return{errorLoading:function(){return"Netije ýüklenmedi."},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" harp bozuň.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ýene-de iň az "+t+" harp ýazyň.";return n},loadingMore:function(){return"Köpräk netije görkezilýär…"},maximumSelected:function(e){var t="Diňe "+e.maximum+" sanysyny saýlaň.";return t},noResults:function(){return"Netije tapylmady."},searching:function(){return"Gözlenýär…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/tr.js
===================================================================
--- public/vendors/select2/js/i18n/tr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/tr.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{errorLoading:function(){return"Sonuç yüklenemedi"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/uk.js
===================================================================
--- public/vendors/select2/js/i18n/uk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/uk.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/vi.js
===================================================================
--- public/vendors/select2/js/i18n/vi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/vi.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+" ký tự";return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/zh-CN.js
===================================================================
--- public/vendors/select2/js/i18n/zh-CN.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/zh-CN.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/i18n/zh-TW.js
===================================================================
--- public/vendors/select2/js/i18n/zh-TW.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/i18n/zh-TW.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
+
+(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})();
Index: public/vendors/select2/js/select2.full.js
===================================================================
--- public/vendors/select2/js/select2.full.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/select2.full.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6559 @@
+/*!
+ * Select2 4.0.6-rc.1
+ * https://select2.github.io
+ *
+ * Released under the MIT license
+ * https://github.com/select2/select2/blob/master/LICENSE.md
+ */
+;(function (factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD. Register as an anonymous module.
+    define(['jquery'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // Node/CommonJS
+    module.exports = function (root, jQuery) {
+      if (jQuery === undefined) {
+        // require('jQuery') returns a factory that requires window to
+        // build a jQuery instance, we normalize how we use modules
+        // that require this pattern but the window provided is a noop
+        // if it's defined (how jquery works)
+        if (typeof window !== 'undefined') {
+          jQuery = require('jquery');
+        }
+        else {
+          jQuery = require('jquery')(root);
+        }
+      }
+      factory(jQuery);
+      return jQuery;
+    };
+  } else {
+    // Browser globals
+    factory(jQuery);
+  }
+} (function (jQuery) {
+  // This is needed so we can catch the AMD loader configuration and use it
+  // The inner file should be wrapped (by `banner.start.js`) in a function that
+  // returns the AMD loader references.
+  var S2 =(function () {
+  // Restore the Select2 AMD loader so it can be used
+  // Needed mostly in the language files, where the loader is not inserted
+  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
+    var S2 = jQuery.fn.select2.amd;
+  }
+var S2;(function () { if (!S2 || !S2.requirejs) {
+if (!S2) { S2 = {}; } else { require = S2; }
+/**
+ * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.
+ * Released under MIT license, http://github.com/requirejs/almond/LICENSE
+ */
+//Going sloppy to avoid 'use strict' string cost, but strict practices should
+//be followed.
+/*global setTimeout: false */
+
+var requirejs, require, define;
+(function (undef) {
+    var main, req, makeMap, handlers,
+        defined = {},
+        waiting = {},
+        config = {},
+        defining = {},
+        hasOwn = Object.prototype.hasOwnProperty,
+        aps = [].slice,
+        jsSuffixRegExp = /\.js$/;
+
+    function hasProp(obj, prop) {
+        return hasOwn.call(obj, prop);
+    }
+
+    /**
+     * Given a relative module name, like ./something, normalize it to
+     * a real name that can be mapped to a path.
+     * @param {String} name the relative name
+     * @param {String} baseName a real name that the name arg is relative
+     * to.
+     * @returns {String} normalized name
+     */
+    function normalize(name, baseName) {
+        var nameParts, nameSegment, mapValue, foundMap, lastIndex,
+            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,
+            baseParts = baseName && baseName.split("/"),
+            map = config.map,
+            starMap = (map && map['*']) || {};
+
+        //Adjust any relative paths.
+        if (name) {
+            name = name.split('/');
+            lastIndex = name.length - 1;
+
+            // If wanting node ID compatibility, strip .js from end
+            // of IDs. Have to do this here, and not in nameToUrl
+            // because node allows either .js or non .js to map
+            // to same file.
+            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
+                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
+            }
+
+            // Starts with a '.' so need the baseName
+            if (name[0].charAt(0) === '.' && baseParts) {
+                //Convert baseName to array, and lop off the last part,
+                //so that . matches that 'directory' and not name of the baseName's
+                //module. For instance, baseName of 'one/two/three', maps to
+                //'one/two/three.js', but we want the directory, 'one/two' for
+                //this normalization.
+                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);
+                name = normalizedBaseParts.concat(name);
+            }
+
+            //start trimDots
+            for (i = 0; i < name.length; i++) {
+                part = name[i];
+                if (part === '.') {
+                    name.splice(i, 1);
+                    i -= 1;
+                } else if (part === '..') {
+                    // If at the start, or previous value is still ..,
+                    // keep them so that when converted to a path it may
+                    // still work when converted to a path, even though
+                    // as an ID it is less than ideal. In larger point
+                    // releases, may be better to just kick out an error.
+                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {
+                        continue;
+                    } else if (i > 0) {
+                        name.splice(i - 1, 2);
+                        i -= 2;
+                    }
+                }
+            }
+            //end trimDots
+
+            name = name.join('/');
+        }
+
+        //Apply map config if available.
+        if ((baseParts || starMap) && map) {
+            nameParts = name.split('/');
+
+            for (i = nameParts.length; i > 0; i -= 1) {
+                nameSegment = nameParts.slice(0, i).join("/");
+
+                if (baseParts) {
+                    //Find the longest baseName segment match in the config.
+                    //So, do joins on the biggest to smallest lengths of baseParts.
+                    for (j = baseParts.length; j > 0; j -= 1) {
+                        mapValue = map[baseParts.slice(0, j).join('/')];
+
+                        //baseName segment has  config, find if it has one for
+                        //this name.
+                        if (mapValue) {
+                            mapValue = mapValue[nameSegment];
+                            if (mapValue) {
+                                //Match, update name to the new value.
+                                foundMap = mapValue;
+                                foundI = i;
+                                break;
+                            }
+                        }
+                    }
+                }
+
+                if (foundMap) {
+                    break;
+                }
+
+                //Check for a star map match, but just hold on to it,
+                //if there is a shorter segment match later in a matching
+                //config, then favor over this star map.
+                if (!foundStarMap && starMap && starMap[nameSegment]) {
+                    foundStarMap = starMap[nameSegment];
+                    starI = i;
+                }
+            }
+
+            if (!foundMap && foundStarMap) {
+                foundMap = foundStarMap;
+                foundI = starI;
+            }
+
+            if (foundMap) {
+                nameParts.splice(0, foundI, foundMap);
+                name = nameParts.join('/');
+            }
+        }
+
+        return name;
+    }
+
+    function makeRequire(relName, forceSync) {
+        return function () {
+            //A version of a require function that passes a moduleName
+            //value for items that may need to
+            //look up paths relative to the moduleName
+            var args = aps.call(arguments, 0);
+
+            //If first arg is not require('string'), and there is only
+            //one arg, it is the array form without a callback. Insert
+            //a null so that the following concat is correct.
+            if (typeof args[0] !== 'string' && args.length === 1) {
+                args.push(null);
+            }
+            return req.apply(undef, args.concat([relName, forceSync]));
+        };
+    }
+
+    function makeNormalize(relName) {
+        return function (name) {
+            return normalize(name, relName);
+        };
+    }
+
+    function makeLoad(depName) {
+        return function (value) {
+            defined[depName] = value;
+        };
+    }
+
+    function callDep(name) {
+        if (hasProp(waiting, name)) {
+            var args = waiting[name];
+            delete waiting[name];
+            defining[name] = true;
+            main.apply(undef, args);
+        }
+
+        if (!hasProp(defined, name) && !hasProp(defining, name)) {
+            throw new Error('No ' + name);
+        }
+        return defined[name];
+    }
+
+    //Turns a plugin!resource to [plugin, resource]
+    //with the plugin being undefined if the name
+    //did not have a plugin prefix.
+    function splitPrefix(name) {
+        var prefix,
+            index = name ? name.indexOf('!') : -1;
+        if (index > -1) {
+            prefix = name.substring(0, index);
+            name = name.substring(index + 1, name.length);
+        }
+        return [prefix, name];
+    }
+
+    //Creates a parts array for a relName where first part is plugin ID,
+    //second part is resource ID. Assumes relName has already been normalized.
+    function makeRelParts(relName) {
+        return relName ? splitPrefix(relName) : [];
+    }
+
+    /**
+     * Makes a name map, normalizing the name, and using a plugin
+     * for normalization if necessary. Grabs a ref to plugin
+     * too, as an optimization.
+     */
+    makeMap = function (name, relParts) {
+        var plugin,
+            parts = splitPrefix(name),
+            prefix = parts[0],
+            relResourceName = relParts[1];
+
+        name = parts[1];
+
+        if (prefix) {
+            prefix = normalize(prefix, relResourceName);
+            plugin = callDep(prefix);
+        }
+
+        //Normalize according
+        if (prefix) {
+            if (plugin && plugin.normalize) {
+                name = plugin.normalize(name, makeNormalize(relResourceName));
+            } else {
+                name = normalize(name, relResourceName);
+            }
+        } else {
+            name = normalize(name, relResourceName);
+            parts = splitPrefix(name);
+            prefix = parts[0];
+            name = parts[1];
+            if (prefix) {
+                plugin = callDep(prefix);
+            }
+        }
+
+        //Using ridiculous property names for space reasons
+        return {
+            f: prefix ? prefix + '!' + name : name, //fullName
+            n: name,
+            pr: prefix,
+            p: plugin
+        };
+    };
+
+    function makeConfig(name) {
+        return function () {
+            return (config && config.config && config.config[name]) || {};
+        };
+    }
+
+    handlers = {
+        require: function (name) {
+            return makeRequire(name);
+        },
+        exports: function (name) {
+            var e = defined[name];
+            if (typeof e !== 'undefined') {
+                return e;
+            } else {
+                return (defined[name] = {});
+            }
+        },
+        module: function (name) {
+            return {
+                id: name,
+                uri: '',
+                exports: defined[name],
+                config: makeConfig(name)
+            };
+        }
+    };
+
+    main = function (name, deps, callback, relName) {
+        var cjsModule, depName, ret, map, i, relParts,
+            args = [],
+            callbackType = typeof callback,
+            usingExports;
+
+        //Use name if no relName
+        relName = relName || name;
+        relParts = makeRelParts(relName);
+
+        //Call the callback to define the module, if necessary.
+        if (callbackType === 'undefined' || callbackType === 'function') {
+            //Pull out the defined dependencies and pass the ordered
+            //values to the callback.
+            //Default to [require, exports, module] if no deps
+            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
+            for (i = 0; i < deps.length; i += 1) {
+                map = makeMap(deps[i], relParts);
+                depName = map.f;
+
+                //Fast path CommonJS standard dependencies.
+                if (depName === "require") {
+                    args[i] = handlers.require(name);
+                } else if (depName === "exports") {
+                    //CommonJS module spec 1.1
+                    args[i] = handlers.exports(name);
+                    usingExports = true;
+                } else if (depName === "module") {
+                    //CommonJS module spec 1.1
+                    cjsModule = args[i] = handlers.module(name);
+                } else if (hasProp(defined, depName) ||
+                           hasProp(waiting, depName) ||
+                           hasProp(defining, depName)) {
+                    args[i] = callDep(depName);
+                } else if (map.p) {
+                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
+                    args[i] = defined[depName];
+                } else {
+                    throw new Error(name + ' missing ' + depName);
+                }
+            }
+
+            ret = callback ? callback.apply(defined[name], args) : undefined;
+
+            if (name) {
+                //If setting exports via "module" is in play,
+                //favor that over return value and exports. After that,
+                //favor a non-undefined return value over exports use.
+                if (cjsModule && cjsModule.exports !== undef &&
+                        cjsModule.exports !== defined[name]) {
+                    defined[name] = cjsModule.exports;
+                } else if (ret !== undef || !usingExports) {
+                    //Use the return value from the function.
+                    defined[name] = ret;
+                }
+            }
+        } else if (name) {
+            //May just be an object definition for the module. Only
+            //worry about defining if have a module name.
+            defined[name] = callback;
+        }
+    };
+
+    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
+        if (typeof deps === "string") {
+            if (handlers[deps]) {
+                //callback in this case is really relName
+                return handlers[deps](callback);
+            }
+            //Just return the module wanted. In this scenario, the
+            //deps arg is the module name, and second arg (if passed)
+            //is just the relName.
+            //Normalize module name, if it contains . or ..
+            return callDep(makeMap(deps, makeRelParts(callback)).f);
+        } else if (!deps.splice) {
+            //deps is a config object, not an array.
+            config = deps;
+            if (config.deps) {
+                req(config.deps, config.callback);
+            }
+            if (!callback) {
+                return;
+            }
+
+            if (callback.splice) {
+                //callback is an array, which means it is a dependency list.
+                //Adjust args if there are dependencies
+                deps = callback;
+                callback = relName;
+                relName = null;
+            } else {
+                deps = undef;
+            }
+        }
+
+        //Support require(['a'])
+        callback = callback || function () {};
+
+        //If relName is a function, it is an errback handler,
+        //so remove it.
+        if (typeof relName === 'function') {
+            relName = forceSync;
+            forceSync = alt;
+        }
+
+        //Simulate async callback;
+        if (forceSync) {
+            main(undef, deps, callback, relName);
+        } else {
+            //Using a non-zero value because of concern for what old browsers
+            //do, and latest browsers "upgrade" to 4 if lower value is used:
+            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
+            //If want a value immediately, use require('id') instead -- something
+            //that works in almond on the global level, but not guaranteed and
+            //unlikely to work in other AMD implementations.
+            setTimeout(function () {
+                main(undef, deps, callback, relName);
+            }, 4);
+        }
+
+        return req;
+    };
+
+    /**
+     * Just drops the config on the floor, but returns req in case
+     * the config return value is used.
+     */
+    req.config = function (cfg) {
+        return req(cfg);
+    };
+
+    /**
+     * Expose module registry for debugging and tooling
+     */
+    requirejs._defined = defined;
+
+    define = function (name, deps, callback) {
+        if (typeof name !== 'string') {
+            throw new Error('See almond README: incorrect module build, no module name');
+        }
+
+        //This module may not have dependencies
+        if (!deps.splice) {
+            //deps is not an array, so probably means
+            //an object literal or factory function for
+            //the value. Adjust args.
+            callback = deps;
+            deps = [];
+        }
+
+        if (!hasProp(defined, name) && !hasProp(waiting, name)) {
+            waiting[name] = [name, deps, callback];
+        }
+    };
+
+    define.amd = {
+        jQuery: true
+    };
+}());
+
+S2.requirejs = requirejs;S2.require = require;S2.define = define;
+}
+}());
+S2.define("almond", function(){});
+
+/* global jQuery:false, $:false */
+S2.define('jquery',[],function () {
+  var _$ = jQuery || $;
+
+  if (_$ == null && console && console.error) {
+    console.error(
+      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +
+      'found. Make sure that you are including jQuery before Select2 on your ' +
+      'web page.'
+    );
+  }
+
+  return _$;
+});
+
+S2.define('select2/utils',[
+  'jquery'
+], function ($) {
+  var Utils = {};
+
+  Utils.Extend = function (ChildClass, SuperClass) {
+    var __hasProp = {}.hasOwnProperty;
+
+    function BaseConstructor () {
+      this.constructor = ChildClass;
+    }
+
+    for (var key in SuperClass) {
+      if (__hasProp.call(SuperClass, key)) {
+        ChildClass[key] = SuperClass[key];
+      }
+    }
+
+    BaseConstructor.prototype = SuperClass.prototype;
+    ChildClass.prototype = new BaseConstructor();
+    ChildClass.__super__ = SuperClass.prototype;
+
+    return ChildClass;
+  };
+
+  function getMethods (theClass) {
+    var proto = theClass.prototype;
+
+    var methods = [];
+
+    for (var methodName in proto) {
+      var m = proto[methodName];
+
+      if (typeof m !== 'function') {
+        continue;
+      }
+
+      if (methodName === 'constructor') {
+        continue;
+      }
+
+      methods.push(methodName);
+    }
+
+    return methods;
+  }
+
+  Utils.Decorate = function (SuperClass, DecoratorClass) {
+    var decoratedMethods = getMethods(DecoratorClass);
+    var superMethods = getMethods(SuperClass);
+
+    function DecoratedClass () {
+      var unshift = Array.prototype.unshift;
+
+      var argCount = DecoratorClass.prototype.constructor.length;
+
+      var calledConstructor = SuperClass.prototype.constructor;
+
+      if (argCount > 0) {
+        unshift.call(arguments, SuperClass.prototype.constructor);
+
+        calledConstructor = DecoratorClass.prototype.constructor;
+      }
+
+      calledConstructor.apply(this, arguments);
+    }
+
+    DecoratorClass.displayName = SuperClass.displayName;
+
+    function ctr () {
+      this.constructor = DecoratedClass;
+    }
+
+    DecoratedClass.prototype = new ctr();
+
+    for (var m = 0; m < superMethods.length; m++) {
+      var superMethod = superMethods[m];
+
+      DecoratedClass.prototype[superMethod] =
+        SuperClass.prototype[superMethod];
+    }
+
+    var calledMethod = function (methodName) {
+      // Stub out the original method if it's not decorating an actual method
+      var originalMethod = function () {};
+
+      if (methodName in DecoratedClass.prototype) {
+        originalMethod = DecoratedClass.prototype[methodName];
+      }
+
+      var decoratedMethod = DecoratorClass.prototype[methodName];
+
+      return function () {
+        var unshift = Array.prototype.unshift;
+
+        unshift.call(arguments, originalMethod);
+
+        return decoratedMethod.apply(this, arguments);
+      };
+    };
+
+    for (var d = 0; d < decoratedMethods.length; d++) {
+      var decoratedMethod = decoratedMethods[d];
+
+      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);
+    }
+
+    return DecoratedClass;
+  };
+
+  var Observable = function () {
+    this.listeners = {};
+  };
+
+  Observable.prototype.on = function (event, callback) {
+    this.listeners = this.listeners || {};
+
+    if (event in this.listeners) {
+      this.listeners[event].push(callback);
+    } else {
+      this.listeners[event] = [callback];
+    }
+  };
+
+  Observable.prototype.trigger = function (event) {
+    var slice = Array.prototype.slice;
+    var params = slice.call(arguments, 1);
+
+    this.listeners = this.listeners || {};
+
+    // Params should always come in as an array
+    if (params == null) {
+      params = [];
+    }
+
+    // If there are no arguments to the event, use a temporary object
+    if (params.length === 0) {
+      params.push({});
+    }
+
+    // Set the `_type` of the first object to the event
+    params[0]._type = event;
+
+    if (event in this.listeners) {
+      this.invoke(this.listeners[event], slice.call(arguments, 1));
+    }
+
+    if ('*' in this.listeners) {
+      this.invoke(this.listeners['*'], arguments);
+    }
+  };
+
+  Observable.prototype.invoke = function (listeners, params) {
+    for (var i = 0, len = listeners.length; i < len; i++) {
+      listeners[i].apply(this, params);
+    }
+  };
+
+  Utils.Observable = Observable;
+
+  Utils.generateChars = function (length) {
+    var chars = '';
+
+    for (var i = 0; i < length; i++) {
+      var randomChar = Math.floor(Math.random() * 36);
+      chars += randomChar.toString(36);
+    }
+
+    return chars;
+  };
+
+  Utils.bind = function (func, context) {
+    return function () {
+      func.apply(context, arguments);
+    };
+  };
+
+  Utils._convertData = function (data) {
+    for (var originalKey in data) {
+      var keys = originalKey.split('-');
+
+      var dataLevel = data;
+
+      if (keys.length === 1) {
+        continue;
+      }
+
+      for (var k = 0; k < keys.length; k++) {
+        var key = keys[k];
+
+        // Lowercase the first letter
+        // By default, dash-separated becomes camelCase
+        key = key.substring(0, 1).toLowerCase() + key.substring(1);
+
+        if (!(key in dataLevel)) {
+          dataLevel[key] = {};
+        }
+
+        if (k == keys.length - 1) {
+          dataLevel[key] = data[originalKey];
+        }
+
+        dataLevel = dataLevel[key];
+      }
+
+      delete data[originalKey];
+    }
+
+    return data;
+  };
+
+  Utils.hasScroll = function (index, el) {
+    // Adapted from the function created by @ShadowScripter
+    // and adapted by @BillBarry on the Stack Exchange Code Review website.
+    // The original code can be found at
+    // http://codereview.stackexchange.com/q/13338
+    // and was designed to be used with the Sizzle selector engine.
+
+    var $el = $(el);
+    var overflowX = el.style.overflowX;
+    var overflowY = el.style.overflowY;
+
+    //Check both x and y declarations
+    if (overflowX === overflowY &&
+        (overflowY === 'hidden' || overflowY === 'visible')) {
+      return false;
+    }
+
+    if (overflowX === 'scroll' || overflowY === 'scroll') {
+      return true;
+    }
+
+    return ($el.innerHeight() < el.scrollHeight ||
+      $el.innerWidth() < el.scrollWidth);
+  };
+
+  Utils.escapeMarkup = function (markup) {
+    var replaceMap = {
+      '\\': '&#92;',
+      '&': '&amp;',
+      '<': '&lt;',
+      '>': '&gt;',
+      '"': '&quot;',
+      '\'': '&#39;',
+      '/': '&#47;'
+    };
+
+    // Do not try to escape the markup if it's not a string
+    if (typeof markup !== 'string') {
+      return markup;
+    }
+
+    return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
+      return replaceMap[match];
+    });
+  };
+
+  // Append an array of jQuery nodes to a given element.
+  Utils.appendMany = function ($element, $nodes) {
+    // jQuery 1.7.x does not support $.fn.append() with an array
+    // Fall back to a jQuery object collection using $.fn.add()
+    if ($.fn.jquery.substr(0, 3) === '1.7') {
+      var $jqNodes = $();
+
+      $.map($nodes, function (node) {
+        $jqNodes = $jqNodes.add(node);
+      });
+
+      $nodes = $jqNodes;
+    }
+
+    $element.append($nodes);
+  };
+
+  // Cache objects in Utils.__cache instead of $.data (see #4346)
+  Utils.__cache = {};
+
+  var id = 0;
+  Utils.GetUniqueElementId = function (element) {
+    // Get a unique element Id. If element has no id, 
+    // creates a new unique number, stores it in the id 
+    // attribute and returns the new id. 
+    // If an id already exists, it simply returns it.
+
+    var select2Id = element.getAttribute('data-select2-id');
+    if (select2Id == null) {
+      // If element has id, use it.
+      if (element.id) {
+        select2Id = element.id;
+        element.setAttribute('data-select2-id', select2Id);
+      } else {
+        element.setAttribute('data-select2-id', ++id);
+        select2Id = id.toString();
+      }
+    }
+    return select2Id;
+  };
+
+  Utils.StoreData = function (element, name, value) {
+    // Stores an item in the cache for a specified element.
+    // name is the cache key.    
+    var id = Utils.GetUniqueElementId(element);
+    if (!Utils.__cache[id]) {
+      Utils.__cache[id] = {};
+    }
+
+    Utils.__cache[id][name] = value;
+  };
+
+  Utils.GetData = function (element, name) {
+    // Retrieves a value from the cache by its key (name)
+    // name is optional. If no name specified, return 
+    // all cache items for the specified element.
+    // and for a specified element.
+    var id = Utils.GetUniqueElementId(element);
+    if (name) {
+      if (Utils.__cache[id]) {
+        return Utils.__cache[id][name] != null ? 
+	      Utils.__cache[id][name]:
+	      $(element).data(name); // Fallback to HTML5 data attribs.
+      }
+      return $(element).data(name); // Fallback to HTML5 data attribs.
+    } else {
+      return Utils.__cache[id];			   
+    }
+  };
+
+  Utils.RemoveData = function (element) {
+    // Removes all cached items for a specified element.
+    var id = Utils.GetUniqueElementId(element);
+    if (Utils.__cache[id] != null) {
+      delete Utils.__cache[id];
+    }
+  };
+
+  return Utils;
+});
+
+S2.define('select2/results',[
+  'jquery',
+  './utils'
+], function ($, Utils) {
+  function Results ($element, options, dataAdapter) {
+    this.$element = $element;
+    this.data = dataAdapter;
+    this.options = options;
+
+    Results.__super__.constructor.call(this);
+  }
+
+  Utils.Extend(Results, Utils.Observable);
+
+  Results.prototype.render = function () {
+    var $results = $(
+      '<ul class="select2-results__options" role="tree"></ul>'
+    );
+
+    if (this.options.get('multiple')) {
+      $results.attr('aria-multiselectable', 'true');
+    }
+
+    this.$results = $results;
+
+    return $results;
+  };
+
+  Results.prototype.clear = function () {
+    this.$results.empty();
+  };
+
+  Results.prototype.displayMessage = function (params) {
+    var escapeMarkup = this.options.get('escapeMarkup');
+
+    this.clear();
+    this.hideLoading();
+
+    var $message = $(
+      '<li role="treeitem" aria-live="assertive"' +
+      ' class="select2-results__option"></li>'
+    );
+
+    var message = this.options.get('translations').get(params.message);
+
+    $message.append(
+      escapeMarkup(
+        message(params.args)
+      )
+    );
+
+    $message[0].className += ' select2-results__message';
+
+    this.$results.append($message);
+  };
+
+  Results.prototype.hideMessages = function () {
+    this.$results.find('.select2-results__message').remove();
+  };
+
+  Results.prototype.append = function (data) {
+    this.hideLoading();
+
+    var $options = [];
+
+    if (data.results == null || data.results.length === 0) {
+      if (this.$results.children().length === 0) {
+        this.trigger('results:message', {
+          message: 'noResults'
+        });
+      }
+
+      return;
+    }
+
+    data.results = this.sort(data.results);
+
+    for (var d = 0; d < data.results.length; d++) {
+      var item = data.results[d];
+
+      var $option = this.option(item);
+
+      $options.push($option);
+    }
+
+    this.$results.append($options);
+  };
+
+  Results.prototype.position = function ($results, $dropdown) {
+    var $resultsContainer = $dropdown.find('.select2-results');
+    $resultsContainer.append($results);
+  };
+
+  Results.prototype.sort = function (data) {
+    var sorter = this.options.get('sorter');
+
+    return sorter(data);
+  };
+
+  Results.prototype.highlightFirstItem = function () {
+    var $options = this.$results
+      .find('.select2-results__option[aria-selected]');
+
+    var $selected = $options.filter('[aria-selected=true]');
+
+    // Check if there are any selected options
+    if ($selected.length > 0) {
+      // If there are selected options, highlight the first
+      $selected.first().trigger('mouseenter');
+    } else {
+      // If there are no selected options, highlight the first option
+      // in the dropdown
+      $options.first().trigger('mouseenter');
+    }
+
+    this.ensureHighlightVisible();
+  };
+
+  Results.prototype.setClasses = function () {
+    var self = this;
+
+    this.data.current(function (selected) {
+      var selectedIds = $.map(selected, function (s) {
+        return s.id.toString();
+      });
+
+      var $options = self.$results
+        .find('.select2-results__option[aria-selected]');
+
+      $options.each(function () {
+        var $option = $(this);
+
+        var item = Utils.GetData(this, 'data');
+
+        // id needs to be converted to a string when comparing
+        var id = '' + item.id;
+
+        if ((item.element != null && item.element.selected) ||
+            (item.element == null && $.inArray(id, selectedIds) > -1)) {
+          $option.attr('aria-selected', 'true');
+        } else {
+          $option.attr('aria-selected', 'false');
+        }
+      });
+
+    });
+  };
+
+  Results.prototype.showLoading = function (params) {
+    this.hideLoading();
+
+    var loadingMore = this.options.get('translations').get('searching');
+
+    var loading = {
+      disabled: true,
+      loading: true,
+      text: loadingMore(params)
+    };
+    var $loading = this.option(loading);
+    $loading.className += ' loading-results';
+
+    this.$results.prepend($loading);
+  };
+
+  Results.prototype.hideLoading = function () {
+    this.$results.find('.loading-results').remove();
+  };
+
+  Results.prototype.option = function (data) {
+    var option = document.createElement('li');
+    option.className = 'select2-results__option';
+
+    var attrs = {
+      'role': 'treeitem',
+      'aria-selected': 'false'
+    };
+
+    if (data.disabled) {
+      delete attrs['aria-selected'];
+      attrs['aria-disabled'] = 'true';
+    }
+
+    if (data.id == null) {
+      delete attrs['aria-selected'];
+    }
+
+    if (data._resultId != null) {
+      option.id = data._resultId;
+    }
+
+    if (data.title) {
+      option.title = data.title;
+    }
+
+    if (data.children) {
+      attrs.role = 'group';
+      attrs['aria-label'] = data.text;
+      delete attrs['aria-selected'];
+    }
+
+    for (var attr in attrs) {
+      var val = attrs[attr];
+
+      option.setAttribute(attr, val);
+    }
+
+    if (data.children) {
+      var $option = $(option);
+
+      var label = document.createElement('strong');
+      label.className = 'select2-results__group';
+
+      var $label = $(label);
+      this.template(data, label);
+
+      var $children = [];
+
+      for (var c = 0; c < data.children.length; c++) {
+        var child = data.children[c];
+
+        var $child = this.option(child);
+
+        $children.push($child);
+      }
+
+      var $childrenContainer = $('<ul></ul>', {
+        'class': 'select2-results__options select2-results__options--nested'
+      });
+
+      $childrenContainer.append($children);
+
+      $option.append(label);
+      $option.append($childrenContainer);
+    } else {
+      this.template(data, option);
+    }
+
+    Utils.StoreData(option, 'data', data);
+
+    return option;
+  };
+
+  Results.prototype.bind = function (container, $container) {
+    var self = this;
+
+    var id = container.id + '-results';
+
+    this.$results.attr('id', id);
+
+    container.on('results:all', function (params) {
+      self.clear();
+      self.append(params.data);
+
+      if (container.isOpen()) {
+        self.setClasses();
+        self.highlightFirstItem();
+      }
+    });
+
+    container.on('results:append', function (params) {
+      self.append(params.data);
+
+      if (container.isOpen()) {
+        self.setClasses();
+      }
+    });
+
+    container.on('query', function (params) {
+      self.hideMessages();
+      self.showLoading(params);
+    });
+
+    container.on('select', function () {
+      if (!container.isOpen()) {
+        return;
+      }
+
+      self.setClasses();
+      self.highlightFirstItem();
+    });
+
+    container.on('unselect', function () {
+      if (!container.isOpen()) {
+        return;
+      }
+
+      self.setClasses();
+      self.highlightFirstItem();
+    });
+
+    container.on('open', function () {
+      // When the dropdown is open, aria-expended="true"
+      self.$results.attr('aria-expanded', 'true');
+      self.$results.attr('aria-hidden', 'false');
+
+      self.setClasses();
+      self.ensureHighlightVisible();
+    });
+
+    container.on('close', function () {
+      // When the dropdown is closed, aria-expended="false"
+      self.$results.attr('aria-expanded', 'false');
+      self.$results.attr('aria-hidden', 'true');
+      self.$results.removeAttr('aria-activedescendant');
+    });
+
+    container.on('results:toggle', function () {
+      var $highlighted = self.getHighlightedResults();
+
+      if ($highlighted.length === 0) {
+        return;
+      }
+
+      $highlighted.trigger('mouseup');
+    });
+
+    container.on('results:select', function () {
+      var $highlighted = self.getHighlightedResults();
+
+      if ($highlighted.length === 0) {
+        return;
+      }
+
+      var data = Utils.GetData($highlighted[0], 'data');
+
+      if ($highlighted.attr('aria-selected') == 'true') {
+        self.trigger('close', {});
+      } else {
+        self.trigger('select', {
+          data: data
+        });
+      }
+    });
+
+    container.on('results:previous', function () {
+      var $highlighted = self.getHighlightedResults();
+
+      var $options = self.$results.find('[aria-selected]');
+
+      var currentIndex = $options.index($highlighted);
+
+      // If we are already at te top, don't move further
+      // If no options, currentIndex will be -1
+      if (currentIndex <= 0) {
+        return;
+      }
+
+      var nextIndex = currentIndex - 1;
+
+      // If none are highlighted, highlight the first
+      if ($highlighted.length === 0) {
+        nextIndex = 0;
+      }
+
+      var $next = $options.eq(nextIndex);
+
+      $next.trigger('mouseenter');
+
+      var currentOffset = self.$results.offset().top;
+      var nextTop = $next.offset().top;
+      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
+
+      if (nextIndex === 0) {
+        self.$results.scrollTop(0);
+      } else if (nextTop - currentOffset < 0) {
+        self.$results.scrollTop(nextOffset);
+      }
+    });
+
+    container.on('results:next', function () {
+      var $highlighted = self.getHighlightedResults();
+
+      var $options = self.$results.find('[aria-selected]');
+
+      var currentIndex = $options.index($highlighted);
+
+      var nextIndex = currentIndex + 1;
+
+      // If we are at the last option, stay there
+      if (nextIndex >= $options.length) {
+        return;
+      }
+
+      var $next = $options.eq(nextIndex);
+
+      $next.trigger('mouseenter');
+
+      var currentOffset = self.$results.offset().top +
+        self.$results.outerHeight(false);
+      var nextBottom = $next.offset().top + $next.outerHeight(false);
+      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
+
+      if (nextIndex === 0) {
+        self.$results.scrollTop(0);
+      } else if (nextBottom > currentOffset) {
+        self.$results.scrollTop(nextOffset);
+      }
+    });
+
+    container.on('results:focus', function (params) {
+      params.element.addClass('select2-results__option--highlighted');
+    });
+
+    container.on('results:message', function (params) {
+      self.displayMessage(params);
+    });
+
+    if ($.fn.mousewheel) {
+      this.$results.on('mousewheel', function (e) {
+        var top = self.$results.scrollTop();
+
+        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;
+
+        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;
+        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();
+
+        if (isAtTop) {
+          self.$results.scrollTop(0);
+
+          e.preventDefault();
+          e.stopPropagation();
+        } else if (isAtBottom) {
+          self.$results.scrollTop(
+            self.$results.get(0).scrollHeight - self.$results.height()
+          );
+
+          e.preventDefault();
+          e.stopPropagation();
+        }
+      });
+    }
+
+    this.$results.on('mouseup', '.select2-results__option[aria-selected]',
+      function (evt) {
+      var $this = $(this);
+
+      var data = Utils.GetData(this, 'data');
+
+      if ($this.attr('aria-selected') === 'true') {
+        if (self.options.get('multiple')) {
+          self.trigger('unselect', {
+            originalEvent: evt,
+            data: data
+          });
+        } else {
+          self.trigger('close', {});
+        }
+
+        return;
+      }
+
+      self.trigger('select', {
+        originalEvent: evt,
+        data: data
+      });
+    });
+
+    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',
+      function (evt) {
+      var data = Utils.GetData(this, 'data');
+
+      self.getHighlightedResults()
+          .removeClass('select2-results__option--highlighted');
+
+      self.trigger('results:focus', {
+        data: data,
+        element: $(this)
+      });
+    });
+  };
+
+  Results.prototype.getHighlightedResults = function () {
+    var $highlighted = this.$results
+    .find('.select2-results__option--highlighted');
+
+    return $highlighted;
+  };
+
+  Results.prototype.destroy = function () {
+    this.$results.remove();
+  };
+
+  Results.prototype.ensureHighlightVisible = function () {
+    var $highlighted = this.getHighlightedResults();
+
+    if ($highlighted.length === 0) {
+      return;
+    }
+
+    var $options = this.$results.find('[aria-selected]');
+
+    var currentIndex = $options.index($highlighted);
+
+    var currentOffset = this.$results.offset().top;
+    var nextTop = $highlighted.offset().top;
+    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);
+
+    var offsetDelta = nextTop - currentOffset;
+    nextOffset -= $highlighted.outerHeight(false) * 2;
+
+    if (currentIndex <= 2) {
+      this.$results.scrollTop(0);
+    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {
+      this.$results.scrollTop(nextOffset);
+    }
+  };
+
+  Results.prototype.template = function (result, container) {
+    var template = this.options.get('templateResult');
+    var escapeMarkup = this.options.get('escapeMarkup');
+
+    var content = template(result, container);
+
+    if (content == null) {
+      container.style.display = 'none';
+    } else if (typeof content === 'string') {
+      container.innerHTML = escapeMarkup(content);
+    } else {
+      $(container).append(content);
+    }
+  };
+
+  return Results;
+});
+
+S2.define('select2/keys',[
+
+], function () {
+  var KEYS = {
+    BACKSPACE: 8,
+    TAB: 9,
+    ENTER: 13,
+    SHIFT: 16,
+    CTRL: 17,
+    ALT: 18,
+    ESC: 27,
+    SPACE: 32,
+    PAGE_UP: 33,
+    PAGE_DOWN: 34,
+    END: 35,
+    HOME: 36,
+    LEFT: 37,
+    UP: 38,
+    RIGHT: 39,
+    DOWN: 40,
+    DELETE: 46
+  };
+
+  return KEYS;
+});
+
+S2.define('select2/selection/base',[
+  'jquery',
+  '../utils',
+  '../keys'
+], function ($, Utils, KEYS) {
+  function BaseSelection ($element, options) {
+    this.$element = $element;
+    this.options = options;
+
+    BaseSelection.__super__.constructor.call(this);
+  }
+
+  Utils.Extend(BaseSelection, Utils.Observable);
+
+  BaseSelection.prototype.render = function () {
+    var $selection = $(
+      '<span class="select2-selection" role="combobox" ' +
+      ' aria-haspopup="true" aria-expanded="false">' +
+      '</span>'
+    );
+
+    this._tabindex = 0;
+
+    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {
+      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');
+    } else if (this.$element.attr('tabindex') != null) {
+      this._tabindex = this.$element.attr('tabindex');
+    }
+
+    $selection.attr('title', this.$element.attr('title'));
+    $selection.attr('tabindex', this._tabindex);
+
+    this.$selection = $selection;
+
+    return $selection;
+  };
+
+  BaseSelection.prototype.bind = function (container, $container) {
+    var self = this;
+
+    var id = container.id + '-container';
+    var resultsId = container.id + '-results';
+
+    this.container = container;
+
+    this.$selection.on('focus', function (evt) {
+      self.trigger('focus', evt);
+    });
+
+    this.$selection.on('blur', function (evt) {
+      self._handleBlur(evt);
+    });
+
+    this.$selection.on('keydown', function (evt) {
+      self.trigger('keypress', evt);
+
+      if (evt.which === KEYS.SPACE) {
+        evt.preventDefault();
+      }
+    });
+
+    container.on('results:focus', function (params) {
+      self.$selection.attr('aria-activedescendant', params.data._resultId);
+    });
+
+    container.on('selection:update', function (params) {
+      self.update(params.data);
+    });
+
+    container.on('open', function () {
+      // When the dropdown is open, aria-expanded="true"
+      self.$selection.attr('aria-expanded', 'true');
+      self.$selection.attr('aria-owns', resultsId);
+
+      self._attachCloseHandler(container);
+    });
+
+    container.on('close', function () {
+      // When the dropdown is closed, aria-expanded="false"
+      self.$selection.attr('aria-expanded', 'false');
+      self.$selection.removeAttr('aria-activedescendant');
+      self.$selection.removeAttr('aria-owns');
+
+      self.$selection.focus();
+      window.setTimeout(function () {
+        self.$selection.focus();
+      }, 0);
+
+      self._detachCloseHandler(container);
+    });
+
+    container.on('enable', function () {
+      self.$selection.attr('tabindex', self._tabindex);
+    });
+
+    container.on('disable', function () {
+      self.$selection.attr('tabindex', '-1');
+    });
+  };
+
+  BaseSelection.prototype._handleBlur = function (evt) {
+    var self = this;
+
+    // This needs to be delayed as the active element is the body when the tab
+    // key is pressed, possibly along with others.
+    window.setTimeout(function () {
+      // Don't trigger `blur` if the focus is still in the selection
+      if (
+        (document.activeElement == self.$selection[0]) ||
+        ($.contains(self.$selection[0], document.activeElement))
+      ) {
+        return;
+      }
+
+      self.trigger('blur', evt);
+    }, 1);
+  };
+
+  BaseSelection.prototype._attachCloseHandler = function (container) {
+    var self = this;
+
+    $(document.body).on('mousedown.select2.' + container.id, function (e) {
+      var $target = $(e.target);
+
+      var $select = $target.closest('.select2');
+
+      var $all = $('.select2.select2-container--open');
+
+      $all.each(function () {
+        var $this = $(this);
+
+        if (this == $select[0]) {
+          return;
+        }
+
+        var $element = Utils.GetData(this, 'element');
+
+        $element.select2('close');
+      });
+    });
+  };
+
+  BaseSelection.prototype._detachCloseHandler = function (container) {
+    $(document.body).off('mousedown.select2.' + container.id);
+  };
+
+  BaseSelection.prototype.position = function ($selection, $container) {
+    var $selectionContainer = $container.find('.selection');
+    $selectionContainer.append($selection);
+  };
+
+  BaseSelection.prototype.destroy = function () {
+    this._detachCloseHandler(this.container);
+  };
+
+  BaseSelection.prototype.update = function (data) {
+    throw new Error('The `update` method must be defined in child classes.');
+  };
+
+  return BaseSelection;
+});
+
+S2.define('select2/selection/single',[
+  'jquery',
+  './base',
+  '../utils',
+  '../keys'
+], function ($, BaseSelection, Utils, KEYS) {
+  function SingleSelection () {
+    SingleSelection.__super__.constructor.apply(this, arguments);
+  }
+
+  Utils.Extend(SingleSelection, BaseSelection);
+
+  SingleSelection.prototype.render = function () {
+    var $selection = SingleSelection.__super__.render.call(this);
+
+    $selection.addClass('select2-selection--single');
+
+    $selection.html(
+      '<span class="select2-selection__rendered"></span>' +
+      '<span class="select2-selection__arrow" role="presentation">' +
+        '<b role="presentation"></b>' +
+      '</span>'
+    );
+
+    return $selection;
+  };
+
+  SingleSelection.prototype.bind = function (container, $container) {
+    var self = this;
+
+    SingleSelection.__super__.bind.apply(this, arguments);
+
+    var id = container.id + '-container';
+
+    this.$selection.find('.select2-selection__rendered')
+      .attr('id', id)
+      .attr('role', 'textbox')
+      .attr('aria-readonly', 'true');
+    this.$selection.attr('aria-labelledby', id);
+
+    this.$selection.on('mousedown', function (evt) {
+      // Only respond to left clicks
+      if (evt.which !== 1) {
+        return;
+      }
+
+      self.trigger('toggle', {
+        originalEvent: evt
+      });
+    });
+
+    this.$selection.on('focus', function (evt) {
+      // User focuses on the container
+    });
+
+    this.$selection.on('blur', function (evt) {
+      // User exits the container
+    });
+
+    container.on('focus', function (evt) {
+      if (!container.isOpen()) {
+        self.$selection.focus();
+      }
+    });
+  };
+
+  SingleSelection.prototype.clear = function () {
+    var $rendered = this.$selection.find('.select2-selection__rendered');
+    $rendered.empty();
+    $rendered.removeAttr('title'); // clear tooltip on empty
+  };
+
+  SingleSelection.prototype.display = function (data, container) {
+    var template = this.options.get('templateSelection');
+    var escapeMarkup = this.options.get('escapeMarkup');
+
+    return escapeMarkup(template(data, container));
+  };
+
+  SingleSelection.prototype.selectionContainer = function () {
+    return $('<span></span>');
+  };
+
+  SingleSelection.prototype.update = function (data) {
+    if (data.length === 0) {
+      this.clear();
+      return;
+    }
+
+    var selection = data[0];
+
+    var $rendered = this.$selection.find('.select2-selection__rendered');
+    var formatted = this.display(selection, $rendered);
+
+    $rendered.empty().append(formatted);
+    $rendered.attr('title', selection.title || selection.text);
+  };
+
+  return SingleSelection;
+});
+
+S2.define('select2/selection/multiple',[
+  'jquery',
+  './base',
+  '../utils'
+], function ($, BaseSelection, Utils) {
+  function MultipleSelection ($element, options) {
+    MultipleSelection.__super__.constructor.apply(this, arguments);
+  }
+
+  Utils.Extend(MultipleSelection, BaseSelection);
+
+  MultipleSelection.prototype.render = function () {
+    var $selection = MultipleSelection.__super__.render.call(this);
+
+    $selection.addClass('select2-selection--multiple');
+
+    $selection.html(
+      '<ul class="select2-selection__rendered"></ul>'
+    );
+
+    return $selection;
+  };
+
+  MultipleSelection.prototype.bind = function (container, $container) {
+    var self = this;
+
+    MultipleSelection.__super__.bind.apply(this, arguments);
+
+    this.$selection.on('click', function (evt) {
+      self.trigger('toggle', {
+        originalEvent: evt
+      });
+    });
+
+    this.$selection.on(
+      'click',
+      '.select2-selection__choice__remove',
+      function (evt) {
+        // Ignore the event if it is disabled
+        if (self.options.get('disabled')) {
+          return;
+        }
+
+        var $remove = $(this);
+        var $selection = $remove.parent();
+
+        var data = Utils.GetData($selection[0], 'data');
+
+        self.trigger('unselect', {
+          originalEvent: evt,
+          data: data
+        });
+      }
+    );
+  };
+
+  MultipleSelection.prototype.clear = function () {
+    var $rendered = this.$selection.find('.select2-selection__rendered');
+    $rendered.empty();
+    $rendered.removeAttr('title');
+  };
+
+  MultipleSelection.prototype.display = function (data, container) {
+    var template = this.options.get('templateSelection');
+    var escapeMarkup = this.options.get('escapeMarkup');
+
+    return escapeMarkup(template(data, container));
+  };
+
+  MultipleSelection.prototype.selectionContainer = function () {
+    var $container = $(
+      '<li class="select2-selection__choice">' +
+        '<span class="select2-selection__choice__remove" role="presentation">' +
+          '&times;' +
+        '</span>' +
+      '</li>'
+    );
+
+    return $container;
+  };
+
+  MultipleSelection.prototype.update = function (data) {
+    this.clear();
+
+    if (data.length === 0) {
+      return;
+    }
+
+    var $selections = [];
+
+    for (var d = 0; d < data.length; d++) {
+      var selection = data[d];
+
+      var $selection = this.selectionContainer();
+      var formatted = this.display(selection, $selection);
+
+      $selection.append(formatted);
+      $selection.attr('title', selection.title || selection.text);
+
+      Utils.StoreData($selection[0], 'data', selection);
+
+      $selections.push($selection);
+    }
+
+    var $rendered = this.$selection.find('.select2-selection__rendered');
+
+    Utils.appendMany($rendered, $selections);
+  };
+
+  return MultipleSelection;
+});
+
+S2.define('select2/selection/placeholder',[
+  '../utils'
+], function (Utils) {
+  function Placeholder (decorated, $element, options) {
+    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
+
+    decorated.call(this, $element, options);
+  }
+
+  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {
+    if (typeof placeholder === 'string') {
+      placeholder = {
+        id: '',
+        text: placeholder
+      };
+    }
+
+    return placeholder;
+  };
+
+  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {
+    var $placeholder = this.selectionContainer();
+
+    $placeholder.html(this.display(placeholder));
+    $placeholder.addClass('select2-selection__placeholder')
+                .removeClass('select2-selection__choice');
+
+    return $placeholder;
+  };
+
+  Placeholder.prototype.update = function (decorated, data) {
+    var singlePlaceholder = (
+      data.length == 1 && data[0].id != this.placeholder.id
+    );
+    var multipleSelections = data.length > 1;
+
+    if (multipleSelections || singlePlaceholder) {
+      return decorated.call(this, data);
+    }
+
+    this.clear();
+
+    var $placeholder = this.createPlaceholder(this.placeholder);
+
+    this.$selection.find('.select2-selection__rendered').append($placeholder);
+  };
+
+  return Placeholder;
+});
+
+S2.define('select2/selection/allowClear',[
+  'jquery',
+  '../keys',
+  '../utils'
+], function ($, KEYS, Utils) {
+  function AllowClear () { }
+
+  AllowClear.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    if (this.placeholder == null) {
+      if (this.options.get('debug') && window.console && console.error) {
+        console.error(
+          'Select2: The `allowClear` option should be used in combination ' +
+          'with the `placeholder` option.'
+        );
+      }
+    }
+
+    this.$selection.on('mousedown', '.select2-selection__clear',
+      function (evt) {
+        self._handleClear(evt);
+    });
+
+    container.on('keypress', function (evt) {
+      self._handleKeyboardClear(evt, container);
+    });
+  };
+
+  AllowClear.prototype._handleClear = function (_, evt) {
+    // Ignore the event if it is disabled
+    if (this.options.get('disabled')) {
+      return;
+    }
+
+    var $clear = this.$selection.find('.select2-selection__clear');
+
+    // Ignore the event if nothing has been selected
+    if ($clear.length === 0) {
+      return;
+    }
+
+    evt.stopPropagation();
+
+    var data = Utils.GetData($clear[0], 'data');
+
+    var previousVal = this.$element.val();
+    this.$element.val(this.placeholder.id);
+
+    var unselectData = {
+      data: data
+    };
+    this.trigger('clear', unselectData);
+    if (unselectData.prevented) {
+      this.$element.val(previousVal);
+      return;
+    }
+
+    for (var d = 0; d < data.length; d++) {
+      unselectData = {
+        data: data[d]
+      };
+
+      // Trigger the `unselect` event, so people can prevent it from being
+      // cleared.
+      this.trigger('unselect', unselectData);
+
+      // If the event was prevented, don't clear it out.
+      if (unselectData.prevented) {
+        this.$element.val(previousVal);
+        return;
+      }
+    }
+
+    this.$element.trigger('change');
+
+    this.trigger('toggle', {});
+  };
+
+  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {
+    if (container.isOpen()) {
+      return;
+    }
+
+    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {
+      this._handleClear(evt);
+    }
+  };
+
+  AllowClear.prototype.update = function (decorated, data) {
+    decorated.call(this, data);
+
+    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
+        data.length === 0) {
+      return;
+    }
+
+    var $remove = $(
+      '<span class="select2-selection__clear">' +
+        '&times;' +
+      '</span>'
+    );
+    Utils.StoreData($remove[0], 'data', data);
+
+    this.$selection.find('.select2-selection__rendered').prepend($remove);
+  };
+
+  return AllowClear;
+});
+
+S2.define('select2/selection/search',[
+  'jquery',
+  '../utils',
+  '../keys'
+], function ($, Utils, KEYS) {
+  function Search (decorated, $element, options) {
+    decorated.call(this, $element, options);
+  }
+
+  Search.prototype.render = function (decorated) {
+    var $search = $(
+      '<li class="select2-search select2-search--inline">' +
+        '<input class="select2-search__field" type="search" tabindex="-1"' +
+        ' autocomplete="off" autocorrect="off" autocapitalize="none"' +
+        ' spellcheck="false" role="textbox" aria-autocomplete="list" />' +
+      '</li>'
+    );
+
+    this.$searchContainer = $search;
+    this.$search = $search.find('input');
+
+    var $rendered = decorated.call(this);
+
+    this._transferTabIndex();
+
+    return $rendered;
+  };
+
+  Search.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    container.on('open', function () {
+      self.$search.trigger('focus');
+    });
+
+    container.on('close', function () {
+      self.$search.val('');
+      self.$search.removeAttr('aria-activedescendant');
+      self.$search.trigger('focus');
+    });
+
+    container.on('enable', function () {
+      self.$search.prop('disabled', false);
+
+      self._transferTabIndex();
+    });
+
+    container.on('disable', function () {
+      self.$search.prop('disabled', true);
+    });
+
+    container.on('focus', function (evt) {
+      self.$search.trigger('focus');
+    });
+
+    container.on('results:focus', function (params) {
+      self.$search.attr('aria-activedescendant', params.id);
+    });
+
+    this.$selection.on('focusin', '.select2-search--inline', function (evt) {
+      self.trigger('focus', evt);
+    });
+
+    this.$selection.on('focusout', '.select2-search--inline', function (evt) {
+      self._handleBlur(evt);
+    });
+
+    this.$selection.on('keydown', '.select2-search--inline', function (evt) {
+      evt.stopPropagation();
+
+      self.trigger('keypress', evt);
+
+      self._keyUpPrevented = evt.isDefaultPrevented();
+
+      var key = evt.which;
+
+      if (key === KEYS.BACKSPACE && self.$search.val() === '') {
+        var $previousChoice = self.$searchContainer
+          .prev('.select2-selection__choice');
+
+        if ($previousChoice.length > 0) {
+          var item = Utils.GetData($previousChoice[0], 'data');
+
+          self.searchRemoveChoice(item);
+
+          evt.preventDefault();
+        }
+      }
+    });
+
+    // Try to detect the IE version should the `documentMode` property that
+    // is stored on the document. This is only implemented in IE and is
+    // slightly cleaner than doing a user agent check.
+    // This property is not available in Edge, but Edge also doesn't have
+    // this bug.
+    var msie = document.documentMode;
+    var disableInputEvents = msie && msie <= 11;
+
+    // Workaround for browsers which do not support the `input` event
+    // This will prevent double-triggering of events for browsers which support
+    // both the `keyup` and `input` events.
+    this.$selection.on(
+      'input.searchcheck',
+      '.select2-search--inline',
+      function (evt) {
+        // IE will trigger the `input` event when a placeholder is used on a
+        // search box. To get around this issue, we are forced to ignore all
+        // `input` events in IE and keep using `keyup`.
+        if (disableInputEvents) {
+          self.$selection.off('input.search input.searchcheck');
+          return;
+        }
+
+        // Unbind the duplicated `keyup` event
+        self.$selection.off('keyup.search');
+      }
+    );
+
+    this.$selection.on(
+      'keyup.search input.search',
+      '.select2-search--inline',
+      function (evt) {
+        // IE will trigger the `input` event when a placeholder is used on a
+        // search box. To get around this issue, we are forced to ignore all
+        // `input` events in IE and keep using `keyup`.
+        if (disableInputEvents && evt.type === 'input') {
+          self.$selection.off('input.search input.searchcheck');
+          return;
+        }
+
+        var key = evt.which;
+
+        // We can freely ignore events from modifier keys
+        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
+          return;
+        }
+
+        // Tabbing will be handled during the `keydown` phase
+        if (key == KEYS.TAB) {
+          return;
+        }
+
+        self.handleSearch(evt);
+      }
+    );
+  };
+
+  /**
+   * This method will transfer the tabindex attribute from the rendered
+   * selection to the search box. This allows for the search box to be used as
+   * the primary focus instead of the selection container.
+   *
+   * @private
+   */
+  Search.prototype._transferTabIndex = function (decorated) {
+    this.$search.attr('tabindex', this.$selection.attr('tabindex'));
+    this.$selection.attr('tabindex', '-1');
+  };
+
+  Search.prototype.createPlaceholder = function (decorated, placeholder) {
+    this.$search.attr('placeholder', placeholder.text);
+  };
+
+  Search.prototype.update = function (decorated, data) {
+    var searchHadFocus = this.$search[0] == document.activeElement;
+
+    this.$search.attr('placeholder', '');
+
+    decorated.call(this, data);
+
+    this.$selection.find('.select2-selection__rendered')
+                   .append(this.$searchContainer);
+
+    this.resizeSearch();
+    if (searchHadFocus) {
+      var isTagInput = this.$element.find('[data-select2-tag]').length;
+      if (isTagInput) {
+        // fix IE11 bug where tag input lost focus
+        this.$element.focus();
+      } else {
+        this.$search.focus();
+      }
+    }
+  };
+
+  Search.prototype.handleSearch = function () {
+    this.resizeSearch();
+
+    if (!this._keyUpPrevented) {
+      var input = this.$search.val();
+
+      this.trigger('query', {
+        term: input
+      });
+    }
+
+    this._keyUpPrevented = false;
+  };
+
+  Search.prototype.searchRemoveChoice = function (decorated, item) {
+    this.trigger('unselect', {
+      data: item
+    });
+
+    this.$search.val(item.text);
+    this.handleSearch();
+  };
+
+  Search.prototype.resizeSearch = function () {
+    this.$search.css('width', '25px');
+
+    var width = '';
+
+    if (this.$search.attr('placeholder') !== '') {
+      width = this.$selection.find('.select2-selection__rendered').innerWidth();
+    } else {
+      var minimumWidth = this.$search.val().length + 1;
+
+      width = (minimumWidth * 0.75) + 'em';
+    }
+
+    this.$search.css('width', width);
+  };
+
+  return Search;
+});
+
+S2.define('select2/selection/eventRelay',[
+  'jquery'
+], function ($) {
+  function EventRelay () { }
+
+  EventRelay.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+    var relayEvents = [
+      'open', 'opening',
+      'close', 'closing',
+      'select', 'selecting',
+      'unselect', 'unselecting',
+      'clear', 'clearing'
+    ];
+
+    var preventableEvents = [
+      'opening', 'closing', 'selecting', 'unselecting', 'clearing'
+    ];
+
+    decorated.call(this, container, $container);
+
+    container.on('*', function (name, params) {
+      // Ignore events that should not be relayed
+      if ($.inArray(name, relayEvents) === -1) {
+        return;
+      }
+
+      // The parameters should always be an object
+      params = params || {};
+
+      // Generate the jQuery event for the Select2 event
+      var evt = $.Event('select2:' + name, {
+        params: params
+      });
+
+      self.$element.trigger(evt);
+
+      // Only handle preventable events if it was one
+      if ($.inArray(name, preventableEvents) === -1) {
+        return;
+      }
+
+      params.prevented = evt.isDefaultPrevented();
+    });
+  };
+
+  return EventRelay;
+});
+
+S2.define('select2/translation',[
+  'jquery',
+  'require'
+], function ($, require) {
+  function Translation (dict) {
+    this.dict = dict || {};
+  }
+
+  Translation.prototype.all = function () {
+    return this.dict;
+  };
+
+  Translation.prototype.get = function (key) {
+    return this.dict[key];
+  };
+
+  Translation.prototype.extend = function (translation) {
+    this.dict = $.extend({}, translation.all(), this.dict);
+  };
+
+  // Static functions
+
+  Translation._cache = {};
+
+  Translation.loadPath = function (path) {
+    if (!(path in Translation._cache)) {
+      var translations = require(path);
+
+      Translation._cache[path] = translations;
+    }
+
+    return new Translation(Translation._cache[path]);
+  };
+
+  return Translation;
+});
+
+S2.define('select2/diacritics',[
+
+], function () {
+  var diacritics = {
+    '\u24B6': 'A',
+    '\uFF21': 'A',
+    '\u00C0': 'A',
+    '\u00C1': 'A',
+    '\u00C2': 'A',
+    '\u1EA6': 'A',
+    '\u1EA4': 'A',
+    '\u1EAA': 'A',
+    '\u1EA8': 'A',
+    '\u00C3': 'A',
+    '\u0100': 'A',
+    '\u0102': 'A',
+    '\u1EB0': 'A',
+    '\u1EAE': 'A',
+    '\u1EB4': 'A',
+    '\u1EB2': 'A',
+    '\u0226': 'A',
+    '\u01E0': 'A',
+    '\u00C4': 'A',
+    '\u01DE': 'A',
+    '\u1EA2': 'A',
+    '\u00C5': 'A',
+    '\u01FA': 'A',
+    '\u01CD': 'A',
+    '\u0200': 'A',
+    '\u0202': 'A',
+    '\u1EA0': 'A',
+    '\u1EAC': 'A',
+    '\u1EB6': 'A',
+    '\u1E00': 'A',
+    '\u0104': 'A',
+    '\u023A': 'A',
+    '\u2C6F': 'A',
+    '\uA732': 'AA',
+    '\u00C6': 'AE',
+    '\u01FC': 'AE',
+    '\u01E2': 'AE',
+    '\uA734': 'AO',
+    '\uA736': 'AU',
+    '\uA738': 'AV',
+    '\uA73A': 'AV',
+    '\uA73C': 'AY',
+    '\u24B7': 'B',
+    '\uFF22': 'B',
+    '\u1E02': 'B',
+    '\u1E04': 'B',
+    '\u1E06': 'B',
+    '\u0243': 'B',
+    '\u0182': 'B',
+    '\u0181': 'B',
+    '\u24B8': 'C',
+    '\uFF23': 'C',
+    '\u0106': 'C',
+    '\u0108': 'C',
+    '\u010A': 'C',
+    '\u010C': 'C',
+    '\u00C7': 'C',
+    '\u1E08': 'C',
+    '\u0187': 'C',
+    '\u023B': 'C',
+    '\uA73E': 'C',
+    '\u24B9': 'D',
+    '\uFF24': 'D',
+    '\u1E0A': 'D',
+    '\u010E': 'D',
+    '\u1E0C': 'D',
+    '\u1E10': 'D',
+    '\u1E12': 'D',
+    '\u1E0E': 'D',
+    '\u0110': 'D',
+    '\u018B': 'D',
+    '\u018A': 'D',
+    '\u0189': 'D',
+    '\uA779': 'D',
+    '\u01F1': 'DZ',
+    '\u01C4': 'DZ',
+    '\u01F2': 'Dz',
+    '\u01C5': 'Dz',
+    '\u24BA': 'E',
+    '\uFF25': 'E',
+    '\u00C8': 'E',
+    '\u00C9': 'E',
+    '\u00CA': 'E',
+    '\u1EC0': 'E',
+    '\u1EBE': 'E',
+    '\u1EC4': 'E',
+    '\u1EC2': 'E',
+    '\u1EBC': 'E',
+    '\u0112': 'E',
+    '\u1E14': 'E',
+    '\u1E16': 'E',
+    '\u0114': 'E',
+    '\u0116': 'E',
+    '\u00CB': 'E',
+    '\u1EBA': 'E',
+    '\u011A': 'E',
+    '\u0204': 'E',
+    '\u0206': 'E',
+    '\u1EB8': 'E',
+    '\u1EC6': 'E',
+    '\u0228': 'E',
+    '\u1E1C': 'E',
+    '\u0118': 'E',
+    '\u1E18': 'E',
+    '\u1E1A': 'E',
+    '\u0190': 'E',
+    '\u018E': 'E',
+    '\u24BB': 'F',
+    '\uFF26': 'F',
+    '\u1E1E': 'F',
+    '\u0191': 'F',
+    '\uA77B': 'F',
+    '\u24BC': 'G',
+    '\uFF27': 'G',
+    '\u01F4': 'G',
+    '\u011C': 'G',
+    '\u1E20': 'G',
+    '\u011E': 'G',
+    '\u0120': 'G',
+    '\u01E6': 'G',
+    '\u0122': 'G',
+    '\u01E4': 'G',
+    '\u0193': 'G',
+    '\uA7A0': 'G',
+    '\uA77D': 'G',
+    '\uA77E': 'G',
+    '\u24BD': 'H',
+    '\uFF28': 'H',
+    '\u0124': 'H',
+    '\u1E22': 'H',
+    '\u1E26': 'H',
+    '\u021E': 'H',
+    '\u1E24': 'H',
+    '\u1E28': 'H',
+    '\u1E2A': 'H',
+    '\u0126': 'H',
+    '\u2C67': 'H',
+    '\u2C75': 'H',
+    '\uA78D': 'H',
+    '\u24BE': 'I',
+    '\uFF29': 'I',
+    '\u00CC': 'I',
+    '\u00CD': 'I',
+    '\u00CE': 'I',
+    '\u0128': 'I',
+    '\u012A': 'I',
+    '\u012C': 'I',
+    '\u0130': 'I',
+    '\u00CF': 'I',
+    '\u1E2E': 'I',
+    '\u1EC8': 'I',
+    '\u01CF': 'I',
+    '\u0208': 'I',
+    '\u020A': 'I',
+    '\u1ECA': 'I',
+    '\u012E': 'I',
+    '\u1E2C': 'I',
+    '\u0197': 'I',
+    '\u24BF': 'J',
+    '\uFF2A': 'J',
+    '\u0134': 'J',
+    '\u0248': 'J',
+    '\u24C0': 'K',
+    '\uFF2B': 'K',
+    '\u1E30': 'K',
+    '\u01E8': 'K',
+    '\u1E32': 'K',
+    '\u0136': 'K',
+    '\u1E34': 'K',
+    '\u0198': 'K',
+    '\u2C69': 'K',
+    '\uA740': 'K',
+    '\uA742': 'K',
+    '\uA744': 'K',
+    '\uA7A2': 'K',
+    '\u24C1': 'L',
+    '\uFF2C': 'L',
+    '\u013F': 'L',
+    '\u0139': 'L',
+    '\u013D': 'L',
+    '\u1E36': 'L',
+    '\u1E38': 'L',
+    '\u013B': 'L',
+    '\u1E3C': 'L',
+    '\u1E3A': 'L',
+    '\u0141': 'L',
+    '\u023D': 'L',
+    '\u2C62': 'L',
+    '\u2C60': 'L',
+    '\uA748': 'L',
+    '\uA746': 'L',
+    '\uA780': 'L',
+    '\u01C7': 'LJ',
+    '\u01C8': 'Lj',
+    '\u24C2': 'M',
+    '\uFF2D': 'M',
+    '\u1E3E': 'M',
+    '\u1E40': 'M',
+    '\u1E42': 'M',
+    '\u2C6E': 'M',
+    '\u019C': 'M',
+    '\u24C3': 'N',
+    '\uFF2E': 'N',
+    '\u01F8': 'N',
+    '\u0143': 'N',
+    '\u00D1': 'N',
+    '\u1E44': 'N',
+    '\u0147': 'N',
+    '\u1E46': 'N',
+    '\u0145': 'N',
+    '\u1E4A': 'N',
+    '\u1E48': 'N',
+    '\u0220': 'N',
+    '\u019D': 'N',
+    '\uA790': 'N',
+    '\uA7A4': 'N',
+    '\u01CA': 'NJ',
+    '\u01CB': 'Nj',
+    '\u24C4': 'O',
+    '\uFF2F': 'O',
+    '\u00D2': 'O',
+    '\u00D3': 'O',
+    '\u00D4': 'O',
+    '\u1ED2': 'O',
+    '\u1ED0': 'O',
+    '\u1ED6': 'O',
+    '\u1ED4': 'O',
+    '\u00D5': 'O',
+    '\u1E4C': 'O',
+    '\u022C': 'O',
+    '\u1E4E': 'O',
+    '\u014C': 'O',
+    '\u1E50': 'O',
+    '\u1E52': 'O',
+    '\u014E': 'O',
+    '\u022E': 'O',
+    '\u0230': 'O',
+    '\u00D6': 'O',
+    '\u022A': 'O',
+    '\u1ECE': 'O',
+    '\u0150': 'O',
+    '\u01D1': 'O',
+    '\u020C': 'O',
+    '\u020E': 'O',
+    '\u01A0': 'O',
+    '\u1EDC': 'O',
+    '\u1EDA': 'O',
+    '\u1EE0': 'O',
+    '\u1EDE': 'O',
+    '\u1EE2': 'O',
+    '\u1ECC': 'O',
+    '\u1ED8': 'O',
+    '\u01EA': 'O',
+    '\u01EC': 'O',
+    '\u00D8': 'O',
+    '\u01FE': 'O',
+    '\u0186': 'O',
+    '\u019F': 'O',
+    '\uA74A': 'O',
+    '\uA74C': 'O',
+    '\u01A2': 'OI',
+    '\uA74E': 'OO',
+    '\u0222': 'OU',
+    '\u24C5': 'P',
+    '\uFF30': 'P',
+    '\u1E54': 'P',
+    '\u1E56': 'P',
+    '\u01A4': 'P',
+    '\u2C63': 'P',
+    '\uA750': 'P',
+    '\uA752': 'P',
+    '\uA754': 'P',
+    '\u24C6': 'Q',
+    '\uFF31': 'Q',
+    '\uA756': 'Q',
+    '\uA758': 'Q',
+    '\u024A': 'Q',
+    '\u24C7': 'R',
+    '\uFF32': 'R',
+    '\u0154': 'R',
+    '\u1E58': 'R',
+    '\u0158': 'R',
+    '\u0210': 'R',
+    '\u0212': 'R',
+    '\u1E5A': 'R',
+    '\u1E5C': 'R',
+    '\u0156': 'R',
+    '\u1E5E': 'R',
+    '\u024C': 'R',
+    '\u2C64': 'R',
+    '\uA75A': 'R',
+    '\uA7A6': 'R',
+    '\uA782': 'R',
+    '\u24C8': 'S',
+    '\uFF33': 'S',
+    '\u1E9E': 'S',
+    '\u015A': 'S',
+    '\u1E64': 'S',
+    '\u015C': 'S',
+    '\u1E60': 'S',
+    '\u0160': 'S',
+    '\u1E66': 'S',
+    '\u1E62': 'S',
+    '\u1E68': 'S',
+    '\u0218': 'S',
+    '\u015E': 'S',
+    '\u2C7E': 'S',
+    '\uA7A8': 'S',
+    '\uA784': 'S',
+    '\u24C9': 'T',
+    '\uFF34': 'T',
+    '\u1E6A': 'T',
+    '\u0164': 'T',
+    '\u1E6C': 'T',
+    '\u021A': 'T',
+    '\u0162': 'T',
+    '\u1E70': 'T',
+    '\u1E6E': 'T',
+    '\u0166': 'T',
+    '\u01AC': 'T',
+    '\u01AE': 'T',
+    '\u023E': 'T',
+    '\uA786': 'T',
+    '\uA728': 'TZ',
+    '\u24CA': 'U',
+    '\uFF35': 'U',
+    '\u00D9': 'U',
+    '\u00DA': 'U',
+    '\u00DB': 'U',
+    '\u0168': 'U',
+    '\u1E78': 'U',
+    '\u016A': 'U',
+    '\u1E7A': 'U',
+    '\u016C': 'U',
+    '\u00DC': 'U',
+    '\u01DB': 'U',
+    '\u01D7': 'U',
+    '\u01D5': 'U',
+    '\u01D9': 'U',
+    '\u1EE6': 'U',
+    '\u016E': 'U',
+    '\u0170': 'U',
+    '\u01D3': 'U',
+    '\u0214': 'U',
+    '\u0216': 'U',
+    '\u01AF': 'U',
+    '\u1EEA': 'U',
+    '\u1EE8': 'U',
+    '\u1EEE': 'U',
+    '\u1EEC': 'U',
+    '\u1EF0': 'U',
+    '\u1EE4': 'U',
+    '\u1E72': 'U',
+    '\u0172': 'U',
+    '\u1E76': 'U',
+    '\u1E74': 'U',
+    '\u0244': 'U',
+    '\u24CB': 'V',
+    '\uFF36': 'V',
+    '\u1E7C': 'V',
+    '\u1E7E': 'V',
+    '\u01B2': 'V',
+    '\uA75E': 'V',
+    '\u0245': 'V',
+    '\uA760': 'VY',
+    '\u24CC': 'W',
+    '\uFF37': 'W',
+    '\u1E80': 'W',
+    '\u1E82': 'W',
+    '\u0174': 'W',
+    '\u1E86': 'W',
+    '\u1E84': 'W',
+    '\u1E88': 'W',
+    '\u2C72': 'W',
+    '\u24CD': 'X',
+    '\uFF38': 'X',
+    '\u1E8A': 'X',
+    '\u1E8C': 'X',
+    '\u24CE': 'Y',
+    '\uFF39': 'Y',
+    '\u1EF2': 'Y',
+    '\u00DD': 'Y',
+    '\u0176': 'Y',
+    '\u1EF8': 'Y',
+    '\u0232': 'Y',
+    '\u1E8E': 'Y',
+    '\u0178': 'Y',
+    '\u1EF6': 'Y',
+    '\u1EF4': 'Y',
+    '\u01B3': 'Y',
+    '\u024E': 'Y',
+    '\u1EFE': 'Y',
+    '\u24CF': 'Z',
+    '\uFF3A': 'Z',
+    '\u0179': 'Z',
+    '\u1E90': 'Z',
+    '\u017B': 'Z',
+    '\u017D': 'Z',
+    '\u1E92': 'Z',
+    '\u1E94': 'Z',
+    '\u01B5': 'Z',
+    '\u0224': 'Z',
+    '\u2C7F': 'Z',
+    '\u2C6B': 'Z',
+    '\uA762': 'Z',
+    '\u24D0': 'a',
+    '\uFF41': 'a',
+    '\u1E9A': 'a',
+    '\u00E0': 'a',
+    '\u00E1': 'a',
+    '\u00E2': 'a',
+    '\u1EA7': 'a',
+    '\u1EA5': 'a',
+    '\u1EAB': 'a',
+    '\u1EA9': 'a',
+    '\u00E3': 'a',
+    '\u0101': 'a',
+    '\u0103': 'a',
+    '\u1EB1': 'a',
+    '\u1EAF': 'a',
+    '\u1EB5': 'a',
+    '\u1EB3': 'a',
+    '\u0227': 'a',
+    '\u01E1': 'a',
+    '\u00E4': 'a',
+    '\u01DF': 'a',
+    '\u1EA3': 'a',
+    '\u00E5': 'a',
+    '\u01FB': 'a',
+    '\u01CE': 'a',
+    '\u0201': 'a',
+    '\u0203': 'a',
+    '\u1EA1': 'a',
+    '\u1EAD': 'a',
+    '\u1EB7': 'a',
+    '\u1E01': 'a',
+    '\u0105': 'a',
+    '\u2C65': 'a',
+    '\u0250': 'a',
+    '\uA733': 'aa',
+    '\u00E6': 'ae',
+    '\u01FD': 'ae',
+    '\u01E3': 'ae',
+    '\uA735': 'ao',
+    '\uA737': 'au',
+    '\uA739': 'av',
+    '\uA73B': 'av',
+    '\uA73D': 'ay',
+    '\u24D1': 'b',
+    '\uFF42': 'b',
+    '\u1E03': 'b',
+    '\u1E05': 'b',
+    '\u1E07': 'b',
+    '\u0180': 'b',
+    '\u0183': 'b',
+    '\u0253': 'b',
+    '\u24D2': 'c',
+    '\uFF43': 'c',
+    '\u0107': 'c',
+    '\u0109': 'c',
+    '\u010B': 'c',
+    '\u010D': 'c',
+    '\u00E7': 'c',
+    '\u1E09': 'c',
+    '\u0188': 'c',
+    '\u023C': 'c',
+    '\uA73F': 'c',
+    '\u2184': 'c',
+    '\u24D3': 'd',
+    '\uFF44': 'd',
+    '\u1E0B': 'd',
+    '\u010F': 'd',
+    '\u1E0D': 'd',
+    '\u1E11': 'd',
+    '\u1E13': 'd',
+    '\u1E0F': 'd',
+    '\u0111': 'd',
+    '\u018C': 'd',
+    '\u0256': 'd',
+    '\u0257': 'd',
+    '\uA77A': 'd',
+    '\u01F3': 'dz',
+    '\u01C6': 'dz',
+    '\u24D4': 'e',
+    '\uFF45': 'e',
+    '\u00E8': 'e',
+    '\u00E9': 'e',
+    '\u00EA': 'e',
+    '\u1EC1': 'e',
+    '\u1EBF': 'e',
+    '\u1EC5': 'e',
+    '\u1EC3': 'e',
+    '\u1EBD': 'e',
+    '\u0113': 'e',
+    '\u1E15': 'e',
+    '\u1E17': 'e',
+    '\u0115': 'e',
+    '\u0117': 'e',
+    '\u00EB': 'e',
+    '\u1EBB': 'e',
+    '\u011B': 'e',
+    '\u0205': 'e',
+    '\u0207': 'e',
+    '\u1EB9': 'e',
+    '\u1EC7': 'e',
+    '\u0229': 'e',
+    '\u1E1D': 'e',
+    '\u0119': 'e',
+    '\u1E19': 'e',
+    '\u1E1B': 'e',
+    '\u0247': 'e',
+    '\u025B': 'e',
+    '\u01DD': 'e',
+    '\u24D5': 'f',
+    '\uFF46': 'f',
+    '\u1E1F': 'f',
+    '\u0192': 'f',
+    '\uA77C': 'f',
+    '\u24D6': 'g',
+    '\uFF47': 'g',
+    '\u01F5': 'g',
+    '\u011D': 'g',
+    '\u1E21': 'g',
+    '\u011F': 'g',
+    '\u0121': 'g',
+    '\u01E7': 'g',
+    '\u0123': 'g',
+    '\u01E5': 'g',
+    '\u0260': 'g',
+    '\uA7A1': 'g',
+    '\u1D79': 'g',
+    '\uA77F': 'g',
+    '\u24D7': 'h',
+    '\uFF48': 'h',
+    '\u0125': 'h',
+    '\u1E23': 'h',
+    '\u1E27': 'h',
+    '\u021F': 'h',
+    '\u1E25': 'h',
+    '\u1E29': 'h',
+    '\u1E2B': 'h',
+    '\u1E96': 'h',
+    '\u0127': 'h',
+    '\u2C68': 'h',
+    '\u2C76': 'h',
+    '\u0265': 'h',
+    '\u0195': 'hv',
+    '\u24D8': 'i',
+    '\uFF49': 'i',
+    '\u00EC': 'i',
+    '\u00ED': 'i',
+    '\u00EE': 'i',
+    '\u0129': 'i',
+    '\u012B': 'i',
+    '\u012D': 'i',
+    '\u00EF': 'i',
+    '\u1E2F': 'i',
+    '\u1EC9': 'i',
+    '\u01D0': 'i',
+    '\u0209': 'i',
+    '\u020B': 'i',
+    '\u1ECB': 'i',
+    '\u012F': 'i',
+    '\u1E2D': 'i',
+    '\u0268': 'i',
+    '\u0131': 'i',
+    '\u24D9': 'j',
+    '\uFF4A': 'j',
+    '\u0135': 'j',
+    '\u01F0': 'j',
+    '\u0249': 'j',
+    '\u24DA': 'k',
+    '\uFF4B': 'k',
+    '\u1E31': 'k',
+    '\u01E9': 'k',
+    '\u1E33': 'k',
+    '\u0137': 'k',
+    '\u1E35': 'k',
+    '\u0199': 'k',
+    '\u2C6A': 'k',
+    '\uA741': 'k',
+    '\uA743': 'k',
+    '\uA745': 'k',
+    '\uA7A3': 'k',
+    '\u24DB': 'l',
+    '\uFF4C': 'l',
+    '\u0140': 'l',
+    '\u013A': 'l',
+    '\u013E': 'l',
+    '\u1E37': 'l',
+    '\u1E39': 'l',
+    '\u013C': 'l',
+    '\u1E3D': 'l',
+    '\u1E3B': 'l',
+    '\u017F': 'l',
+    '\u0142': 'l',
+    '\u019A': 'l',
+    '\u026B': 'l',
+    '\u2C61': 'l',
+    '\uA749': 'l',
+    '\uA781': 'l',
+    '\uA747': 'l',
+    '\u01C9': 'lj',
+    '\u24DC': 'm',
+    '\uFF4D': 'm',
+    '\u1E3F': 'm',
+    '\u1E41': 'm',
+    '\u1E43': 'm',
+    '\u0271': 'm',
+    '\u026F': 'm',
+    '\u24DD': 'n',
+    '\uFF4E': 'n',
+    '\u01F9': 'n',
+    '\u0144': 'n',
+    '\u00F1': 'n',
+    '\u1E45': 'n',
+    '\u0148': 'n',
+    '\u1E47': 'n',
+    '\u0146': 'n',
+    '\u1E4B': 'n',
+    '\u1E49': 'n',
+    '\u019E': 'n',
+    '\u0272': 'n',
+    '\u0149': 'n',
+    '\uA791': 'n',
+    '\uA7A5': 'n',
+    '\u01CC': 'nj',
+    '\u24DE': 'o',
+    '\uFF4F': 'o',
+    '\u00F2': 'o',
+    '\u00F3': 'o',
+    '\u00F4': 'o',
+    '\u1ED3': 'o',
+    '\u1ED1': 'o',
+    '\u1ED7': 'o',
+    '\u1ED5': 'o',
+    '\u00F5': 'o',
+    '\u1E4D': 'o',
+    '\u022D': 'o',
+    '\u1E4F': 'o',
+    '\u014D': 'o',
+    '\u1E51': 'o',
+    '\u1E53': 'o',
+    '\u014F': 'o',
+    '\u022F': 'o',
+    '\u0231': 'o',
+    '\u00F6': 'o',
+    '\u022B': 'o',
+    '\u1ECF': 'o',
+    '\u0151': 'o',
+    '\u01D2': 'o',
+    '\u020D': 'o',
+    '\u020F': 'o',
+    '\u01A1': 'o',
+    '\u1EDD': 'o',
+    '\u1EDB': 'o',
+    '\u1EE1': 'o',
+    '\u1EDF': 'o',
+    '\u1EE3': 'o',
+    '\u1ECD': 'o',
+    '\u1ED9': 'o',
+    '\u01EB': 'o',
+    '\u01ED': 'o',
+    '\u00F8': 'o',
+    '\u01FF': 'o',
+    '\u0254': 'o',
+    '\uA74B': 'o',
+    '\uA74D': 'o',
+    '\u0275': 'o',
+    '\u01A3': 'oi',
+    '\u0223': 'ou',
+    '\uA74F': 'oo',
+    '\u24DF': 'p',
+    '\uFF50': 'p',
+    '\u1E55': 'p',
+    '\u1E57': 'p',
+    '\u01A5': 'p',
+    '\u1D7D': 'p',
+    '\uA751': 'p',
+    '\uA753': 'p',
+    '\uA755': 'p',
+    '\u24E0': 'q',
+    '\uFF51': 'q',
+    '\u024B': 'q',
+    '\uA757': 'q',
+    '\uA759': 'q',
+    '\u24E1': 'r',
+    '\uFF52': 'r',
+    '\u0155': 'r',
+    '\u1E59': 'r',
+    '\u0159': 'r',
+    '\u0211': 'r',
+    '\u0213': 'r',
+    '\u1E5B': 'r',
+    '\u1E5D': 'r',
+    '\u0157': 'r',
+    '\u1E5F': 'r',
+    '\u024D': 'r',
+    '\u027D': 'r',
+    '\uA75B': 'r',
+    '\uA7A7': 'r',
+    '\uA783': 'r',
+    '\u24E2': 's',
+    '\uFF53': 's',
+    '\u00DF': 's',
+    '\u015B': 's',
+    '\u1E65': 's',
+    '\u015D': 's',
+    '\u1E61': 's',
+    '\u0161': 's',
+    '\u1E67': 's',
+    '\u1E63': 's',
+    '\u1E69': 's',
+    '\u0219': 's',
+    '\u015F': 's',
+    '\u023F': 's',
+    '\uA7A9': 's',
+    '\uA785': 's',
+    '\u1E9B': 's',
+    '\u24E3': 't',
+    '\uFF54': 't',
+    '\u1E6B': 't',
+    '\u1E97': 't',
+    '\u0165': 't',
+    '\u1E6D': 't',
+    '\u021B': 't',
+    '\u0163': 't',
+    '\u1E71': 't',
+    '\u1E6F': 't',
+    '\u0167': 't',
+    '\u01AD': 't',
+    '\u0288': 't',
+    '\u2C66': 't',
+    '\uA787': 't',
+    '\uA729': 'tz',
+    '\u24E4': 'u',
+    '\uFF55': 'u',
+    '\u00F9': 'u',
+    '\u00FA': 'u',
+    '\u00FB': 'u',
+    '\u0169': 'u',
+    '\u1E79': 'u',
+    '\u016B': 'u',
+    '\u1E7B': 'u',
+    '\u016D': 'u',
+    '\u00FC': 'u',
+    '\u01DC': 'u',
+    '\u01D8': 'u',
+    '\u01D6': 'u',
+    '\u01DA': 'u',
+    '\u1EE7': 'u',
+    '\u016F': 'u',
+    '\u0171': 'u',
+    '\u01D4': 'u',
+    '\u0215': 'u',
+    '\u0217': 'u',
+    '\u01B0': 'u',
+    '\u1EEB': 'u',
+    '\u1EE9': 'u',
+    '\u1EEF': 'u',
+    '\u1EED': 'u',
+    '\u1EF1': 'u',
+    '\u1EE5': 'u',
+    '\u1E73': 'u',
+    '\u0173': 'u',
+    '\u1E77': 'u',
+    '\u1E75': 'u',
+    '\u0289': 'u',
+    '\u24E5': 'v',
+    '\uFF56': 'v',
+    '\u1E7D': 'v',
+    '\u1E7F': 'v',
+    '\u028B': 'v',
+    '\uA75F': 'v',
+    '\u028C': 'v',
+    '\uA761': 'vy',
+    '\u24E6': 'w',
+    '\uFF57': 'w',
+    '\u1E81': 'w',
+    '\u1E83': 'w',
+    '\u0175': 'w',
+    '\u1E87': 'w',
+    '\u1E85': 'w',
+    '\u1E98': 'w',
+    '\u1E89': 'w',
+    '\u2C73': 'w',
+    '\u24E7': 'x',
+    '\uFF58': 'x',
+    '\u1E8B': 'x',
+    '\u1E8D': 'x',
+    '\u24E8': 'y',
+    '\uFF59': 'y',
+    '\u1EF3': 'y',
+    '\u00FD': 'y',
+    '\u0177': 'y',
+    '\u1EF9': 'y',
+    '\u0233': 'y',
+    '\u1E8F': 'y',
+    '\u00FF': 'y',
+    '\u1EF7': 'y',
+    '\u1E99': 'y',
+    '\u1EF5': 'y',
+    '\u01B4': 'y',
+    '\u024F': 'y',
+    '\u1EFF': 'y',
+    '\u24E9': 'z',
+    '\uFF5A': 'z',
+    '\u017A': 'z',
+    '\u1E91': 'z',
+    '\u017C': 'z',
+    '\u017E': 'z',
+    '\u1E93': 'z',
+    '\u1E95': 'z',
+    '\u01B6': 'z',
+    '\u0225': 'z',
+    '\u0240': 'z',
+    '\u2C6C': 'z',
+    '\uA763': 'z',
+    '\u0386': '\u0391',
+    '\u0388': '\u0395',
+    '\u0389': '\u0397',
+    '\u038A': '\u0399',
+    '\u03AA': '\u0399',
+    '\u038C': '\u039F',
+    '\u038E': '\u03A5',
+    '\u03AB': '\u03A5',
+    '\u038F': '\u03A9',
+    '\u03AC': '\u03B1',
+    '\u03AD': '\u03B5',
+    '\u03AE': '\u03B7',
+    '\u03AF': '\u03B9',
+    '\u03CA': '\u03B9',
+    '\u0390': '\u03B9',
+    '\u03CC': '\u03BF',
+    '\u03CD': '\u03C5',
+    '\u03CB': '\u03C5',
+    '\u03B0': '\u03C5',
+    '\u03C9': '\u03C9',
+    '\u03C2': '\u03C3'
+  };
+
+  return diacritics;
+});
+
+S2.define('select2/data/base',[
+  '../utils'
+], function (Utils) {
+  function BaseAdapter ($element, options) {
+    BaseAdapter.__super__.constructor.call(this);
+  }
+
+  Utils.Extend(BaseAdapter, Utils.Observable);
+
+  BaseAdapter.prototype.current = function (callback) {
+    throw new Error('The `current` method must be defined in child classes.');
+  };
+
+  BaseAdapter.prototype.query = function (params, callback) {
+    throw new Error('The `query` method must be defined in child classes.');
+  };
+
+  BaseAdapter.prototype.bind = function (container, $container) {
+    // Can be implemented in subclasses
+  };
+
+  BaseAdapter.prototype.destroy = function () {
+    // Can be implemented in subclasses
+  };
+
+  BaseAdapter.prototype.generateResultId = function (container, data) {
+    var id = container.id + '-result-';
+
+    id += Utils.generateChars(4);
+
+    if (data.id != null) {
+      id += '-' + data.id.toString();
+    } else {
+      id += '-' + Utils.generateChars(4);
+    }
+    return id;
+  };
+
+  return BaseAdapter;
+});
+
+S2.define('select2/data/select',[
+  './base',
+  '../utils',
+  'jquery'
+], function (BaseAdapter, Utils, $) {
+  function SelectAdapter ($element, options) {
+    this.$element = $element;
+    this.options = options;
+
+    SelectAdapter.__super__.constructor.call(this);
+  }
+
+  Utils.Extend(SelectAdapter, BaseAdapter);
+
+  SelectAdapter.prototype.current = function (callback) {
+    var data = [];
+    var self = this;
+
+    this.$element.find(':selected').each(function () {
+      var $option = $(this);
+
+      var option = self.item($option);
+
+      data.push(option);
+    });
+
+    callback(data);
+  };
+
+  SelectAdapter.prototype.select = function (data) {
+    var self = this;
+
+    data.selected = true;
+
+    // If data.element is a DOM node, use it instead
+    if ($(data.element).is('option')) {
+      data.element.selected = true;
+
+      this.$element.trigger('change');
+
+      return;
+    }
+
+    if (this.$element.prop('multiple')) {
+      this.current(function (currentData) {
+        var val = [];
+
+        data = [data];
+        data.push.apply(data, currentData);
+
+        for (var d = 0; d < data.length; d++) {
+          var id = data[d].id;
+
+          if ($.inArray(id, val) === -1) {
+            val.push(id);
+          }
+        }
+
+        self.$element.val(val);
+        self.$element.trigger('change');
+      });
+    } else {
+      var val = data.id;
+
+      this.$element.val(val);
+      this.$element.trigger('change');
+    }
+  };
+
+  SelectAdapter.prototype.unselect = function (data) {
+    var self = this;
+
+    if (!this.$element.prop('multiple')) {
+      return;
+    }
+
+    data.selected = false;
+
+    if ($(data.element).is('option')) {
+      data.element.selected = false;
+
+      this.$element.trigger('change');
+
+      return;
+    }
+
+    this.current(function (currentData) {
+      var val = [];
+
+      for (var d = 0; d < currentData.length; d++) {
+        var id = currentData[d].id;
+
+        if (id !== data.id && $.inArray(id, val) === -1) {
+          val.push(id);
+        }
+      }
+
+      self.$element.val(val);
+
+      self.$element.trigger('change');
+    });
+  };
+
+  SelectAdapter.prototype.bind = function (container, $container) {
+    var self = this;
+
+    this.container = container;
+
+    container.on('select', function (params) {
+      self.select(params.data);
+    });
+
+    container.on('unselect', function (params) {
+      self.unselect(params.data);
+    });
+  };
+
+  SelectAdapter.prototype.destroy = function () {
+    // Remove anything added to child elements
+    this.$element.find('*').each(function () {
+      // Remove any custom data set by Select2
+      Utils.RemoveData(this);
+    });
+  };
+
+  SelectAdapter.prototype.query = function (params, callback) {
+    var data = [];
+    var self = this;
+
+    var $options = this.$element.children();
+
+    $options.each(function () {
+      var $option = $(this);
+
+      if (!$option.is('option') && !$option.is('optgroup')) {
+        return;
+      }
+
+      var option = self.item($option);
+
+      var matches = self.matches(params, option);
+
+      if (matches !== null) {
+        data.push(matches);
+      }
+    });
+
+    callback({
+      results: data
+    });
+  };
+
+  SelectAdapter.prototype.addOptions = function ($options) {
+    Utils.appendMany(this.$element, $options);
+  };
+
+  SelectAdapter.prototype.option = function (data) {
+    var option;
+
+    if (data.children) {
+      option = document.createElement('optgroup');
+      option.label = data.text;
+    } else {
+      option = document.createElement('option');
+
+      if (option.textContent !== undefined) {
+        option.textContent = data.text;
+      } else {
+        option.innerText = data.text;
+      }
+    }
+
+    if (data.id !== undefined) {
+      option.value = data.id;
+    }
+
+    if (data.disabled) {
+      option.disabled = true;
+    }
+
+    if (data.selected) {
+      option.selected = true;
+    }
+
+    if (data.title) {
+      option.title = data.title;
+    }
+
+    var $option = $(option);
+
+    var normalizedData = this._normalizeItem(data);
+    normalizedData.element = option;
+
+    // Override the option's data with the combined data
+    Utils.StoreData(option, 'data', normalizedData);
+
+    return $option;
+  };
+
+  SelectAdapter.prototype.item = function ($option) {
+    var data = {};
+
+    data = Utils.GetData($option[0], 'data');
+
+    if (data != null) {
+      return data;
+    }
+
+    if ($option.is('option')) {
+      data = {
+        id: $option.val(),
+        text: $option.text(),
+        disabled: $option.prop('disabled'),
+        selected: $option.prop('selected'),
+        title: $option.prop('title')
+      };
+    } else if ($option.is('optgroup')) {
+      data = {
+        text: $option.prop('label'),
+        children: [],
+        title: $option.prop('title')
+      };
+
+      var $children = $option.children('option');
+      var children = [];
+
+      for (var c = 0; c < $children.length; c++) {
+        var $child = $($children[c]);
+
+        var child = this.item($child);
+
+        children.push(child);
+      }
+
+      data.children = children;
+    }
+
+    data = this._normalizeItem(data);
+    data.element = $option[0];
+
+    Utils.StoreData($option[0], 'data', data);
+
+    return data;
+  };
+
+  SelectAdapter.prototype._normalizeItem = function (item) {
+    if (item !== Object(item)) {
+      item = {
+        id: item,
+        text: item
+      };
+    }
+
+    item = $.extend({}, {
+      text: ''
+    }, item);
+
+    var defaults = {
+      selected: false,
+      disabled: false
+    };
+
+    if (item.id != null) {
+      item.id = item.id.toString();
+    }
+
+    if (item.text != null) {
+      item.text = item.text.toString();
+    }
+
+    if (item._resultId == null && item.id && this.container != null) {
+      item._resultId = this.generateResultId(this.container, item);
+    }
+
+    return $.extend({}, defaults, item);
+  };
+
+  SelectAdapter.prototype.matches = function (params, data) {
+    var matcher = this.options.get('matcher');
+
+    return matcher(params, data);
+  };
+
+  return SelectAdapter;
+});
+
+S2.define('select2/data/array',[
+  './select',
+  '../utils',
+  'jquery'
+], function (SelectAdapter, Utils, $) {
+  function ArrayAdapter ($element, options) {
+    var data = options.get('data') || [];
+
+    ArrayAdapter.__super__.constructor.call(this, $element, options);
+
+    this.addOptions(this.convertToOptions(data));
+  }
+
+  Utils.Extend(ArrayAdapter, SelectAdapter);
+
+  ArrayAdapter.prototype.select = function (data) {
+    var $option = this.$element.find('option').filter(function (i, elm) {
+      return elm.value == data.id.toString();
+    });
+
+    if ($option.length === 0) {
+      $option = this.option(data);
+
+      this.addOptions($option);
+    }
+
+    ArrayAdapter.__super__.select.call(this, data);
+  };
+
+  ArrayAdapter.prototype.convertToOptions = function (data) {
+    var self = this;
+
+    var $existing = this.$element.find('option');
+    var existingIds = $existing.map(function () {
+      return self.item($(this)).id;
+    }).get();
+
+    var $options = [];
+
+    // Filter out all items except for the one passed in the argument
+    function onlyItem (item) {
+      return function () {
+        return $(this).val() == item.id;
+      };
+    }
+
+    for (var d = 0; d < data.length; d++) {
+      var item = this._normalizeItem(data[d]);
+
+      // Skip items which were pre-loaded, only merge the data
+      if ($.inArray(item.id, existingIds) >= 0) {
+        var $existingOption = $existing.filter(onlyItem(item));
+
+        var existingData = this.item($existingOption);
+        var newData = $.extend(true, {}, item, existingData);
+
+        var $newOption = this.option(newData);
+
+        $existingOption.replaceWith($newOption);
+
+        continue;
+      }
+
+      var $option = this.option(item);
+
+      if (item.children) {
+        var $children = this.convertToOptions(item.children);
+
+        Utils.appendMany($option, $children);
+      }
+
+      $options.push($option);
+    }
+
+    return $options;
+  };
+
+  return ArrayAdapter;
+});
+
+S2.define('select2/data/ajax',[
+  './array',
+  '../utils',
+  'jquery'
+], function (ArrayAdapter, Utils, $) {
+  function AjaxAdapter ($element, options) {
+    this.ajaxOptions = this._applyDefaults(options.get('ajax'));
+
+    if (this.ajaxOptions.processResults != null) {
+      this.processResults = this.ajaxOptions.processResults;
+    }
+
+    AjaxAdapter.__super__.constructor.call(this, $element, options);
+  }
+
+  Utils.Extend(AjaxAdapter, ArrayAdapter);
+
+  AjaxAdapter.prototype._applyDefaults = function (options) {
+    var defaults = {
+      data: function (params) {
+        return $.extend({}, params, {
+          q: params.term
+        });
+      },
+      transport: function (params, success, failure) {
+        var $request = $.ajax(params);
+
+        $request.then(success);
+        $request.fail(failure);
+
+        return $request;
+      }
+    };
+
+    return $.extend({}, defaults, options, true);
+  };
+
+  AjaxAdapter.prototype.processResults = function (results) {
+    return results;
+  };
+
+  AjaxAdapter.prototype.query = function (params, callback) {
+    var matches = [];
+    var self = this;
+
+    if (this._request != null) {
+      // JSONP requests cannot always be aborted
+      if ($.isFunction(this._request.abort)) {
+        this._request.abort();
+      }
+
+      this._request = null;
+    }
+
+    var options = $.extend({
+      type: 'GET'
+    }, this.ajaxOptions);
+
+    if (typeof options.url === 'function') {
+      options.url = options.url.call(this.$element, params);
+    }
+
+    if (typeof options.data === 'function') {
+      options.data = options.data.call(this.$element, params);
+    }
+
+    function request () {
+      var $request = options.transport(options, function (data) {
+        var results = self.processResults(data, params);
+
+        if (self.options.get('debug') && window.console && console.error) {
+          // Check to make sure that the response included a `results` key.
+          if (!results || !results.results || !$.isArray(results.results)) {
+            console.error(
+              'Select2: The AJAX results did not return an array in the ' +
+              '`results` key of the response.'
+            );
+          }
+        }
+
+        callback(results);
+      }, function () {
+        // Attempt to detect if a request was aborted
+        // Only works if the transport exposes a status property
+        if ('status' in $request &&
+            ($request.status === 0 || $request.status === '0')) {
+          return;
+        }
+
+        self.trigger('results:message', {
+          message: 'errorLoading'
+        });
+      });
+
+      self._request = $request;
+    }
+
+    if (this.ajaxOptions.delay && params.term != null) {
+      if (this._queryTimeout) {
+        window.clearTimeout(this._queryTimeout);
+      }
+
+      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);
+    } else {
+      request();
+    }
+  };
+
+  return AjaxAdapter;
+});
+
+S2.define('select2/data/tags',[
+  'jquery'
+], function ($) {
+  function Tags (decorated, $element, options) {
+    var tags = options.get('tags');
+
+    var createTag = options.get('createTag');
+
+    if (createTag !== undefined) {
+      this.createTag = createTag;
+    }
+
+    var insertTag = options.get('insertTag');
+
+    if (insertTag !== undefined) {
+        this.insertTag = insertTag;
+    }
+
+    decorated.call(this, $element, options);
+
+    if ($.isArray(tags)) {
+      for (var t = 0; t < tags.length; t++) {
+        var tag = tags[t];
+        var item = this._normalizeItem(tag);
+
+        var $option = this.option(item);
+
+        this.$element.append($option);
+      }
+    }
+  }
+
+  Tags.prototype.query = function (decorated, params, callback) {
+    var self = this;
+
+    this._removeOldTags();
+
+    if (params.term == null || params.page != null) {
+      decorated.call(this, params, callback);
+      return;
+    }
+
+    function wrapper (obj, child) {
+      var data = obj.results;
+
+      for (var i = 0; i < data.length; i++) {
+        var option = data[i];
+
+        var checkChildren = (
+          option.children != null &&
+          !wrapper({
+            results: option.children
+          }, true)
+        );
+
+        var optionText = (option.text || '').toUpperCase();
+        var paramsTerm = (params.term || '').toUpperCase();
+
+        var checkText = optionText === paramsTerm;
+
+        if (checkText || checkChildren) {
+          if (child) {
+            return false;
+          }
+
+          obj.data = data;
+          callback(obj);
+
+          return;
+        }
+      }
+
+      if (child) {
+        return true;
+      }
+
+      var tag = self.createTag(params);
+
+      if (tag != null) {
+        var $option = self.option(tag);
+        $option.attr('data-select2-tag', true);
+
+        self.addOptions([$option]);
+
+        self.insertTag(data, tag);
+      }
+
+      obj.results = data;
+
+      callback(obj);
+    }
+
+    decorated.call(this, params, wrapper);
+  };
+
+  Tags.prototype.createTag = function (decorated, params) {
+    var term = $.trim(params.term);
+
+    if (term === '') {
+      return null;
+    }
+
+    return {
+      id: term,
+      text: term
+    };
+  };
+
+  Tags.prototype.insertTag = function (_, data, tag) {
+    data.unshift(tag);
+  };
+
+  Tags.prototype._removeOldTags = function (_) {
+    var tag = this._lastTag;
+
+    var $options = this.$element.find('option[data-select2-tag]');
+
+    $options.each(function () {
+      if (this.selected) {
+        return;
+      }
+
+      $(this).remove();
+    });
+  };
+
+  return Tags;
+});
+
+S2.define('select2/data/tokenizer',[
+  'jquery'
+], function ($) {
+  function Tokenizer (decorated, $element, options) {
+    var tokenizer = options.get('tokenizer');
+
+    if (tokenizer !== undefined) {
+      this.tokenizer = tokenizer;
+    }
+
+    decorated.call(this, $element, options);
+  }
+
+  Tokenizer.prototype.bind = function (decorated, container, $container) {
+    decorated.call(this, container, $container);
+
+    this.$search =  container.dropdown.$search || container.selection.$search ||
+      $container.find('.select2-search__field');
+  };
+
+  Tokenizer.prototype.query = function (decorated, params, callback) {
+    var self = this;
+
+    function createAndSelect (data) {
+      // Normalize the data object so we can use it for checks
+      var item = self._normalizeItem(data);
+
+      // Check if the data object already exists as a tag
+      // Select it if it doesn't
+      var $existingOptions = self.$element.find('option').filter(function () {
+        return $(this).val() === item.id;
+      });
+
+      // If an existing option wasn't found for it, create the option
+      if (!$existingOptions.length) {
+        var $option = self.option(item);
+        $option.attr('data-select2-tag', true);
+
+        self._removeOldTags();
+        self.addOptions([$option]);
+      }
+
+      // Select the item, now that we know there is an option for it
+      select(item);
+    }
+
+    function select (data) {
+      self.trigger('select', {
+        data: data
+      });
+    }
+
+    params.term = params.term || '';
+
+    var tokenData = this.tokenizer(params, this.options, createAndSelect);
+
+    if (tokenData.term !== params.term) {
+      // Replace the search term if we have the search box
+      if (this.$search.length) {
+        this.$search.val(tokenData.term);
+        this.$search.focus();
+      }
+
+      params.term = tokenData.term;
+    }
+
+    decorated.call(this, params, callback);
+  };
+
+  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {
+    var separators = options.get('tokenSeparators') || [];
+    var term = params.term;
+    var i = 0;
+
+    var createTag = this.createTag || function (params) {
+      return {
+        id: params.term,
+        text: params.term
+      };
+    };
+
+    while (i < term.length) {
+      var termChar = term[i];
+
+      if ($.inArray(termChar, separators) === -1) {
+        i++;
+
+        continue;
+      }
+
+      var part = term.substr(0, i);
+      var partParams = $.extend({}, params, {
+        term: part
+      });
+
+      var data = createTag(partParams);
+
+      if (data == null) {
+        i++;
+        continue;
+      }
+
+      callback(data);
+
+      // Reset the term to not include the tokenized portion
+      term = term.substr(i + 1) || '';
+      i = 0;
+    }
+
+    return {
+      term: term
+    };
+  };
+
+  return Tokenizer;
+});
+
+S2.define('select2/data/minimumInputLength',[
+
+], function () {
+  function MinimumInputLength (decorated, $e, options) {
+    this.minimumInputLength = options.get('minimumInputLength');
+
+    decorated.call(this, $e, options);
+  }
+
+  MinimumInputLength.prototype.query = function (decorated, params, callback) {
+    params.term = params.term || '';
+
+    if (params.term.length < this.minimumInputLength) {
+      this.trigger('results:message', {
+        message: 'inputTooShort',
+        args: {
+          minimum: this.minimumInputLength,
+          input: params.term,
+          params: params
+        }
+      });
+
+      return;
+    }
+
+    decorated.call(this, params, callback);
+  };
+
+  return MinimumInputLength;
+});
+
+S2.define('select2/data/maximumInputLength',[
+
+], function () {
+  function MaximumInputLength (decorated, $e, options) {
+    this.maximumInputLength = options.get('maximumInputLength');
+
+    decorated.call(this, $e, options);
+  }
+
+  MaximumInputLength.prototype.query = function (decorated, params, callback) {
+    params.term = params.term || '';
+
+    if (this.maximumInputLength > 0 &&
+        params.term.length > this.maximumInputLength) {
+      this.trigger('results:message', {
+        message: 'inputTooLong',
+        args: {
+          maximum: this.maximumInputLength,
+          input: params.term,
+          params: params
+        }
+      });
+
+      return;
+    }
+
+    decorated.call(this, params, callback);
+  };
+
+  return MaximumInputLength;
+});
+
+S2.define('select2/data/maximumSelectionLength',[
+
+], function (){
+  function MaximumSelectionLength (decorated, $e, options) {
+    this.maximumSelectionLength = options.get('maximumSelectionLength');
+
+    decorated.call(this, $e, options);
+  }
+
+  MaximumSelectionLength.prototype.query =
+    function (decorated, params, callback) {
+      var self = this;
+
+      this.current(function (currentData) {
+        var count = currentData != null ? currentData.length : 0;
+        if (self.maximumSelectionLength > 0 &&
+          count >= self.maximumSelectionLength) {
+          self.trigger('results:message', {
+            message: 'maximumSelected',
+            args: {
+              maximum: self.maximumSelectionLength
+            }
+          });
+          return;
+        }
+        decorated.call(self, params, callback);
+      });
+  };
+
+  return MaximumSelectionLength;
+});
+
+S2.define('select2/dropdown',[
+  'jquery',
+  './utils'
+], function ($, Utils) {
+  function Dropdown ($element, options) {
+    this.$element = $element;
+    this.options = options;
+
+    Dropdown.__super__.constructor.call(this);
+  }
+
+  Utils.Extend(Dropdown, Utils.Observable);
+
+  Dropdown.prototype.render = function () {
+    var $dropdown = $(
+      '<span class="select2-dropdown">' +
+        '<span class="select2-results"></span>' +
+      '</span>'
+    );
+
+    $dropdown.attr('dir', this.options.get('dir'));
+
+    this.$dropdown = $dropdown;
+
+    return $dropdown;
+  };
+
+  Dropdown.prototype.bind = function () {
+    // Should be implemented in subclasses
+  };
+
+  Dropdown.prototype.position = function ($dropdown, $container) {
+    // Should be implmented in subclasses
+  };
+
+  Dropdown.prototype.destroy = function () {
+    // Remove the dropdown from the DOM
+    this.$dropdown.remove();
+  };
+
+  return Dropdown;
+});
+
+S2.define('select2/dropdown/search',[
+  'jquery',
+  '../utils'
+], function ($, Utils) {
+  function Search () { }
+
+  Search.prototype.render = function (decorated) {
+    var $rendered = decorated.call(this);
+
+    var $search = $(
+      '<span class="select2-search select2-search--dropdown">' +
+        '<input class="select2-search__field" type="search" tabindex="-1"' +
+        ' autocomplete="off" autocorrect="off" autocapitalize="none"' +
+        ' spellcheck="false" role="textbox" />' +
+      '</span>'
+    );
+
+    this.$searchContainer = $search;
+    this.$search = $search.find('input');
+
+    $rendered.prepend($search);
+
+    return $rendered;
+  };
+
+  Search.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    this.$search.on('keydown', function (evt) {
+      self.trigger('keypress', evt);
+
+      self._keyUpPrevented = evt.isDefaultPrevented();
+    });
+
+    // Workaround for browsers which do not support the `input` event
+    // This will prevent double-triggering of events for browsers which support
+    // both the `keyup` and `input` events.
+    this.$search.on('input', function (evt) {
+      // Unbind the duplicated `keyup` event
+      $(this).off('keyup');
+    });
+
+    this.$search.on('keyup input', function (evt) {
+      self.handleSearch(evt);
+    });
+
+    container.on('open', function () {
+      self.$search.attr('tabindex', 0);
+
+      self.$search.focus();
+
+      window.setTimeout(function () {
+        self.$search.focus();
+      }, 0);
+    });
+
+    container.on('close', function () {
+      self.$search.attr('tabindex', -1);
+
+      self.$search.val('');
+      self.$search.blur();
+    });
+
+    container.on('focus', function () {
+      if (!container.isOpen()) {
+        self.$search.focus();
+      }
+    });
+
+    container.on('results:all', function (params) {
+      if (params.query.term == null || params.query.term === '') {
+        var showSearch = self.showSearch(params);
+
+        if (showSearch) {
+          self.$searchContainer.removeClass('select2-search--hide');
+        } else {
+          self.$searchContainer.addClass('select2-search--hide');
+        }
+      }
+    });
+  };
+
+  Search.prototype.handleSearch = function (evt) {
+    if (!this._keyUpPrevented) {
+      var input = this.$search.val();
+
+      this.trigger('query', {
+        term: input
+      });
+    }
+
+    this._keyUpPrevented = false;
+  };
+
+  Search.prototype.showSearch = function (_, params) {
+    return true;
+  };
+
+  return Search;
+});
+
+S2.define('select2/dropdown/hidePlaceholder',[
+
+], function () {
+  function HidePlaceholder (decorated, $element, options, dataAdapter) {
+    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
+
+    decorated.call(this, $element, options, dataAdapter);
+  }
+
+  HidePlaceholder.prototype.append = function (decorated, data) {
+    data.results = this.removePlaceholder(data.results);
+
+    decorated.call(this, data);
+  };
+
+  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {
+    if (typeof placeholder === 'string') {
+      placeholder = {
+        id: '',
+        text: placeholder
+      };
+    }
+
+    return placeholder;
+  };
+
+  HidePlaceholder.prototype.removePlaceholder = function (_, data) {
+    var modifiedData = data.slice(0);
+
+    for (var d = data.length - 1; d >= 0; d--) {
+      var item = data[d];
+
+      if (this.placeholder.id === item.id) {
+        modifiedData.splice(d, 1);
+      }
+    }
+
+    return modifiedData;
+  };
+
+  return HidePlaceholder;
+});
+
+S2.define('select2/dropdown/infiniteScroll',[
+  'jquery'
+], function ($) {
+  function InfiniteScroll (decorated, $element, options, dataAdapter) {
+    this.lastParams = {};
+
+    decorated.call(this, $element, options, dataAdapter);
+
+    this.$loadingMore = this.createLoadingMore();
+    this.loading = false;
+  }
+
+  InfiniteScroll.prototype.append = function (decorated, data) {
+    this.$loadingMore.remove();
+    this.loading = false;
+
+    decorated.call(this, data);
+
+    if (this.showLoadingMore(data)) {
+      this.$results.append(this.$loadingMore);
+    }
+  };
+
+  InfiniteScroll.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    container.on('query', function (params) {
+      self.lastParams = params;
+      self.loading = true;
+    });
+
+    container.on('query:append', function (params) {
+      self.lastParams = params;
+      self.loading = true;
+    });
+
+    this.$results.on('scroll', function () {
+      var isLoadMoreVisible = $.contains(
+        document.documentElement,
+        self.$loadingMore[0]
+      );
+
+      if (self.loading || !isLoadMoreVisible) {
+        return;
+      }
+
+      var currentOffset = self.$results.offset().top +
+        self.$results.outerHeight(false);
+      var loadingMoreOffset = self.$loadingMore.offset().top +
+        self.$loadingMore.outerHeight(false);
+
+      if (currentOffset + 50 >= loadingMoreOffset) {
+        self.loadMore();
+      }
+    });
+  };
+
+  InfiniteScroll.prototype.loadMore = function () {
+    this.loading = true;
+
+    var params = $.extend({}, {page: 1}, this.lastParams);
+
+    params.page++;
+
+    this.trigger('query:append', params);
+  };
+
+  InfiniteScroll.prototype.showLoadingMore = function (_, data) {
+    return data.pagination && data.pagination.more;
+  };
+
+  InfiniteScroll.prototype.createLoadingMore = function () {
+    var $option = $(
+      '<li ' +
+      'class="select2-results__option select2-results__option--load-more"' +
+      'role="treeitem" aria-disabled="true"></li>'
+    );
+
+    var message = this.options.get('translations').get('loadingMore');
+
+    $option.html(message(this.lastParams));
+
+    return $option;
+  };
+
+  return InfiniteScroll;
+});
+
+S2.define('select2/dropdown/attachBody',[
+  'jquery',
+  '../utils'
+], function ($, Utils) {
+  function AttachBody (decorated, $element, options) {
+    this.$dropdownParent = options.get('dropdownParent') || $(document.body);
+
+    decorated.call(this, $element, options);
+  }
+
+  AttachBody.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    var setupResultsEvents = false;
+
+    decorated.call(this, container, $container);
+
+    container.on('open', function () {
+      self._showDropdown();
+      self._attachPositioningHandler(container);
+
+      if (!setupResultsEvents) {
+        setupResultsEvents = true;
+
+        container.on('results:all', function () {
+          self._positionDropdown();
+          self._resizeDropdown();
+        });
+
+        container.on('results:append', function () {
+          self._positionDropdown();
+          self._resizeDropdown();
+        });
+      }
+    });
+
+    container.on('close', function () {
+      self._hideDropdown();
+      self._detachPositioningHandler(container);
+    });
+
+    this.$dropdownContainer.on('mousedown', function (evt) {
+      evt.stopPropagation();
+    });
+  };
+
+  AttachBody.prototype.destroy = function (decorated) {
+    decorated.call(this);
+
+    this.$dropdownContainer.remove();
+  };
+
+  AttachBody.prototype.position = function (decorated, $dropdown, $container) {
+    // Clone all of the container classes
+    $dropdown.attr('class', $container.attr('class'));
+
+    $dropdown.removeClass('select2');
+    $dropdown.addClass('select2-container--open');
+
+    $dropdown.css({
+      position: 'absolute',
+      top: -999999
+    });
+
+    this.$container = $container;
+  };
+
+  AttachBody.prototype.render = function (decorated) {
+    var $container = $('<span></span>');
+
+    var $dropdown = decorated.call(this);
+    $container.append($dropdown);
+
+    this.$dropdownContainer = $container;
+
+    return $container;
+  };
+
+  AttachBody.prototype._hideDropdown = function (decorated) {
+    this.$dropdownContainer.detach();
+  };
+
+  AttachBody.prototype._attachPositioningHandler =
+      function (decorated, container) {
+    var self = this;
+
+    var scrollEvent = 'scroll.select2.' + container.id;
+    var resizeEvent = 'resize.select2.' + container.id;
+    var orientationEvent = 'orientationchange.select2.' + container.id;
+
+    var $watchers = this.$container.parents().filter(Utils.hasScroll);
+    $watchers.each(function () {
+      Utils.StoreData(this, 'select2-scroll-position', {
+        x: $(this).scrollLeft(),
+        y: $(this).scrollTop()
+      });
+    });
+
+    $watchers.on(scrollEvent, function (ev) {
+      var position = Utils.GetData(this, 'select2-scroll-position');
+      $(this).scrollTop(position.y);
+    });
+
+    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,
+      function (e) {
+      self._positionDropdown();
+      self._resizeDropdown();
+    });
+  };
+
+  AttachBody.prototype._detachPositioningHandler =
+      function (decorated, container) {
+    var scrollEvent = 'scroll.select2.' + container.id;
+    var resizeEvent = 'resize.select2.' + container.id;
+    var orientationEvent = 'orientationchange.select2.' + container.id;
+
+    var $watchers = this.$container.parents().filter(Utils.hasScroll);
+    $watchers.off(scrollEvent);
+
+    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);
+  };
+
+  AttachBody.prototype._positionDropdown = function () {
+    var $window = $(window);
+
+    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');
+    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');
+
+    var newDirection = null;
+
+    var offset = this.$container.offset();
+
+    offset.bottom = offset.top + this.$container.outerHeight(false);
+
+    var container = {
+      height: this.$container.outerHeight(false)
+    };
+
+    container.top = offset.top;
+    container.bottom = offset.top + container.height;
+
+    var dropdown = {
+      height: this.$dropdown.outerHeight(false)
+    };
+
+    var viewport = {
+      top: $window.scrollTop(),
+      bottom: $window.scrollTop() + $window.height()
+    };
+
+    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);
+    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);
+
+    var css = {
+      left: offset.left,
+      top: container.bottom
+    };
+
+    // Determine what the parent element is to use for calciulating the offset
+    var $offsetParent = this.$dropdownParent;
+
+    // For statically positoned elements, we need to get the element
+    // that is determining the offset
+    if ($offsetParent.css('position') === 'static') {
+      $offsetParent = $offsetParent.offsetParent();
+    }
+
+    var parentOffset = $offsetParent.offset();
+
+    css.top -= parentOffset.top;
+    css.left -= parentOffset.left;
+
+    if (!isCurrentlyAbove && !isCurrentlyBelow) {
+      newDirection = 'below';
+    }
+
+    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {
+      newDirection = 'above';
+    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {
+      newDirection = 'below';
+    }
+
+    if (newDirection == 'above' ||
+      (isCurrentlyAbove && newDirection !== 'below')) {
+      css.top = container.top - parentOffset.top - dropdown.height;
+    }
+
+    if (newDirection != null) {
+      this.$dropdown
+        .removeClass('select2-dropdown--below select2-dropdown--above')
+        .addClass('select2-dropdown--' + newDirection);
+      this.$container
+        .removeClass('select2-container--below select2-container--above')
+        .addClass('select2-container--' + newDirection);
+    }
+
+    this.$dropdownContainer.css(css);
+  };
+
+  AttachBody.prototype._resizeDropdown = function () {
+    var css = {
+      width: this.$container.outerWidth(false) + 'px'
+    };
+
+    if (this.options.get('dropdownAutoWidth')) {
+      css.minWidth = css.width;
+      css.position = 'relative';
+      css.width = 'auto';
+    }
+
+    this.$dropdown.css(css);
+  };
+
+  AttachBody.prototype._showDropdown = function (decorated) {
+    this.$dropdownContainer.appendTo(this.$dropdownParent);
+
+    this._positionDropdown();
+    this._resizeDropdown();
+  };
+
+  return AttachBody;
+});
+
+S2.define('select2/dropdown/minimumResultsForSearch',[
+
+], function () {
+  function countResults (data) {
+    var count = 0;
+
+    for (var d = 0; d < data.length; d++) {
+      var item = data[d];
+
+      if (item.children) {
+        count += countResults(item.children);
+      } else {
+        count++;
+      }
+    }
+
+    return count;
+  }
+
+  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {
+    this.minimumResultsForSearch = options.get('minimumResultsForSearch');
+
+    if (this.minimumResultsForSearch < 0) {
+      this.minimumResultsForSearch = Infinity;
+    }
+
+    decorated.call(this, $element, options, dataAdapter);
+  }
+
+  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {
+    if (countResults(params.data.results) < this.minimumResultsForSearch) {
+      return false;
+    }
+
+    return decorated.call(this, params);
+  };
+
+  return MinimumResultsForSearch;
+});
+
+S2.define('select2/dropdown/selectOnClose',[
+  '../utils'
+], function (Utils) {
+  function SelectOnClose () { }
+
+  SelectOnClose.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    container.on('close', function (params) {
+      self._handleSelectOnClose(params);
+    });
+  };
+
+  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
+    if (params && params.originalSelect2Event != null) {
+      var event = params.originalSelect2Event;
+
+      // Don't select an item if the close event was triggered from a select or
+      // unselect event
+      if (event._type === 'select' || event._type === 'unselect') {
+        return;
+      }
+    }
+
+    var $highlightedResults = this.getHighlightedResults();
+
+    // Only select highlighted results
+    if ($highlightedResults.length < 1) {
+      return;
+    }
+
+    var data = Utils.GetData($highlightedResults[0], 'data');
+
+    // Don't re-select already selected resulte
+    if (
+      (data.element != null && data.element.selected) ||
+      (data.element == null && data.selected)
+    ) {
+      return;
+    }
+
+    this.trigger('select', {
+        data: data
+    });
+  };
+
+  return SelectOnClose;
+});
+
+S2.define('select2/dropdown/closeOnSelect',[
+
+], function () {
+  function CloseOnSelect () { }
+
+  CloseOnSelect.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    container.on('select', function (evt) {
+      self._selectTriggered(evt);
+    });
+
+    container.on('unselect', function (evt) {
+      self._selectTriggered(evt);
+    });
+  };
+
+  CloseOnSelect.prototype._selectTriggered = function (_, evt) {
+    var originalEvent = evt.originalEvent;
+
+    // Don't close if the control key is being held
+    if (originalEvent && originalEvent.ctrlKey) {
+      return;
+    }
+
+    this.trigger('close', {
+      originalEvent: originalEvent,
+      originalSelect2Event: evt
+    });
+  };
+
+  return CloseOnSelect;
+});
+
+S2.define('select2/i18n/en',[],function () {
+  // English
+  return {
+    errorLoading: function () {
+      return 'The results could not be loaded.';
+    },
+    inputTooLong: function (args) {
+      var overChars = args.input.length - args.maximum;
+
+      var message = 'Please delete ' + overChars + ' character';
+
+      if (overChars != 1) {
+        message += 's';
+      }
+
+      return message;
+    },
+    inputTooShort: function (args) {
+      var remainingChars = args.minimum - args.input.length;
+
+      var message = 'Please enter ' + remainingChars + ' or more characters';
+
+      return message;
+    },
+    loadingMore: function () {
+      return 'Loading more results…';
+    },
+    maximumSelected: function (args) {
+      var message = 'You can only select ' + args.maximum + ' item';
+
+      if (args.maximum != 1) {
+        message += 's';
+      }
+
+      return message;
+    },
+    noResults: function () {
+      return 'No results found';
+    },
+    searching: function () {
+      return 'Searching…';
+    }
+  };
+});
+
+S2.define('select2/defaults',[
+  'jquery',
+  'require',
+
+  './results',
+
+  './selection/single',
+  './selection/multiple',
+  './selection/placeholder',
+  './selection/allowClear',
+  './selection/search',
+  './selection/eventRelay',
+
+  './utils',
+  './translation',
+  './diacritics',
+
+  './data/select',
+  './data/array',
+  './data/ajax',
+  './data/tags',
+  './data/tokenizer',
+  './data/minimumInputLength',
+  './data/maximumInputLength',
+  './data/maximumSelectionLength',
+
+  './dropdown',
+  './dropdown/search',
+  './dropdown/hidePlaceholder',
+  './dropdown/infiniteScroll',
+  './dropdown/attachBody',
+  './dropdown/minimumResultsForSearch',
+  './dropdown/selectOnClose',
+  './dropdown/closeOnSelect',
+
+  './i18n/en'
+], function ($, require,
+
+             ResultsList,
+
+             SingleSelection, MultipleSelection, Placeholder, AllowClear,
+             SelectionSearch, EventRelay,
+
+             Utils, Translation, DIACRITICS,
+
+             SelectData, ArrayData, AjaxData, Tags, Tokenizer,
+             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,
+
+             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
+             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
+
+             EnglishTranslation) {
+  function Defaults () {
+    this.reset();
+  }
+
+  Defaults.prototype.apply = function (options) {
+    options = $.extend(true, {}, this.defaults, options);
+
+    if (options.dataAdapter == null) {
+      if (options.ajax != null) {
+        options.dataAdapter = AjaxData;
+      } else if (options.data != null) {
+        options.dataAdapter = ArrayData;
+      } else {
+        options.dataAdapter = SelectData;
+      }
+
+      if (options.minimumInputLength > 0) {
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          MinimumInputLength
+        );
+      }
+
+      if (options.maximumInputLength > 0) {
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          MaximumInputLength
+        );
+      }
+
+      if (options.maximumSelectionLength > 0) {
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          MaximumSelectionLength
+        );
+      }
+
+      if (options.tags) {
+        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);
+      }
+
+      if (options.tokenSeparators != null || options.tokenizer != null) {
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          Tokenizer
+        );
+      }
+
+      if (options.query != null) {
+        var Query = require(options.amdBase + 'compat/query');
+
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          Query
+        );
+      }
+
+      if (options.initSelection != null) {
+        var InitSelection = require(options.amdBase + 'compat/initSelection');
+
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          InitSelection
+        );
+      }
+    }
+
+    if (options.resultsAdapter == null) {
+      options.resultsAdapter = ResultsList;
+
+      if (options.ajax != null) {
+        options.resultsAdapter = Utils.Decorate(
+          options.resultsAdapter,
+          InfiniteScroll
+        );
+      }
+
+      if (options.placeholder != null) {
+        options.resultsAdapter = Utils.Decorate(
+          options.resultsAdapter,
+          HidePlaceholder
+        );
+      }
+
+      if (options.selectOnClose) {
+        options.resultsAdapter = Utils.Decorate(
+          options.resultsAdapter,
+          SelectOnClose
+        );
+      }
+    }
+
+    if (options.dropdownAdapter == null) {
+      if (options.multiple) {
+        options.dropdownAdapter = Dropdown;
+      } else {
+        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);
+
+        options.dropdownAdapter = SearchableDropdown;
+      }
+
+      if (options.minimumResultsForSearch !== 0) {
+        options.dropdownAdapter = Utils.Decorate(
+          options.dropdownAdapter,
+          MinimumResultsForSearch
+        );
+      }
+
+      if (options.closeOnSelect) {
+        options.dropdownAdapter = Utils.Decorate(
+          options.dropdownAdapter,
+          CloseOnSelect
+        );
+      }
+
+      if (
+        options.dropdownCssClass != null ||
+        options.dropdownCss != null ||
+        options.adaptDropdownCssClass != null
+      ) {
+        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
+
+        options.dropdownAdapter = Utils.Decorate(
+          options.dropdownAdapter,
+          DropdownCSS
+        );
+      }
+
+      options.dropdownAdapter = Utils.Decorate(
+        options.dropdownAdapter,
+        AttachBody
+      );
+    }
+
+    if (options.selectionAdapter == null) {
+      if (options.multiple) {
+        options.selectionAdapter = MultipleSelection;
+      } else {
+        options.selectionAdapter = SingleSelection;
+      }
+
+      // Add the placeholder mixin if a placeholder was specified
+      if (options.placeholder != null) {
+        options.selectionAdapter = Utils.Decorate(
+          options.selectionAdapter,
+          Placeholder
+        );
+      }
+
+      if (options.allowClear) {
+        options.selectionAdapter = Utils.Decorate(
+          options.selectionAdapter,
+          AllowClear
+        );
+      }
+
+      if (options.multiple) {
+        options.selectionAdapter = Utils.Decorate(
+          options.selectionAdapter,
+          SelectionSearch
+        );
+      }
+
+      if (
+        options.containerCssClass != null ||
+        options.containerCss != null ||
+        options.adaptContainerCssClass != null
+      ) {
+        var ContainerCSS = require(options.amdBase + 'compat/containerCss');
+
+        options.selectionAdapter = Utils.Decorate(
+          options.selectionAdapter,
+          ContainerCSS
+        );
+      }
+
+      options.selectionAdapter = Utils.Decorate(
+        options.selectionAdapter,
+        EventRelay
+      );
+    }
+
+    if (typeof options.language === 'string') {
+      // Check if the language is specified with a region
+      if (options.language.indexOf('-') > 0) {
+        // Extract the region information if it is included
+        var languageParts = options.language.split('-');
+        var baseLanguage = languageParts[0];
+
+        options.language = [options.language, baseLanguage];
+      } else {
+        options.language = [options.language];
+      }
+    }
+
+    if ($.isArray(options.language)) {
+      var languages = new Translation();
+      options.language.push('en');
+
+      var languageNames = options.language;
+
+      for (var l = 0; l < languageNames.length; l++) {
+        var name = languageNames[l];
+        var language = {};
+
+        try {
+          // Try to load it with the original name
+          language = Translation.loadPath(name);
+        } catch (e) {
+          try {
+            // If we couldn't load it, check if it wasn't the full path
+            name = this.defaults.amdLanguageBase + name;
+            language = Translation.loadPath(name);
+          } catch (ex) {
+            // The translation could not be loaded at all. Sometimes this is
+            // because of a configuration problem, other times this can be
+            // because of how Select2 helps load all possible translation files.
+            if (options.debug && window.console && console.warn) {
+              console.warn(
+                'Select2: The language file for "' + name + '" could not be ' +
+                'automatically loaded. A fallback will be used instead.'
+              );
+            }
+
+            continue;
+          }
+        }
+
+        languages.extend(language);
+      }
+
+      options.translations = languages;
+    } else {
+      var baseTranslation = Translation.loadPath(
+        this.defaults.amdLanguageBase + 'en'
+      );
+      var customTranslation = new Translation(options.language);
+
+      customTranslation.extend(baseTranslation);
+
+      options.translations = customTranslation;
+    }
+
+    return options;
+  };
+
+  Defaults.prototype.reset = function () {
+    function stripDiacritics (text) {
+      // Used 'uni range + named function' from http://jsperf.com/diacritics/18
+      function match(a) {
+        return DIACRITICS[a] || a;
+      }
+
+      return text.replace(/[^\u0000-\u007E]/g, match);
+    }
+
+    function matcher (params, data) {
+      // Always return the object if there is nothing to compare
+      if ($.trim(params.term) === '') {
+        return data;
+      }
+
+      // Do a recursive check for options with children
+      if (data.children && data.children.length > 0) {
+        // Clone the data object if there are children
+        // This is required as we modify the object to remove any non-matches
+        var match = $.extend(true, {}, data);
+
+        // Check each child of the option
+        for (var c = data.children.length - 1; c >= 0; c--) {
+          var child = data.children[c];
+
+          var matches = matcher(params, child);
+
+          // If there wasn't a match, remove the object in the array
+          if (matches == null) {
+            match.children.splice(c, 1);
+          }
+        }
+
+        // If any children matched, return the new object
+        if (match.children.length > 0) {
+          return match;
+        }
+
+        // If there were no matching children, check just the plain object
+        return matcher(params, match);
+      }
+
+      var original = stripDiacritics(data.text).toUpperCase();
+      var term = stripDiacritics(params.term).toUpperCase();
+
+      // Check if the text contains the term
+      if (original.indexOf(term) > -1) {
+        return data;
+      }
+
+      // If it doesn't contain the term, don't return anything
+      return null;
+    }
+
+    this.defaults = {
+      amdBase: './',
+      amdLanguageBase: './i18n/',
+      closeOnSelect: true,
+      debug: false,
+      dropdownAutoWidth: false,
+      escapeMarkup: Utils.escapeMarkup,
+      language: EnglishTranslation,
+      matcher: matcher,
+      minimumInputLength: 0,
+      maximumInputLength: 0,
+      maximumSelectionLength: 0,
+      minimumResultsForSearch: 0,
+      selectOnClose: false,
+      sorter: function (data) {
+        return data;
+      },
+      templateResult: function (result) {
+        return result.text;
+      },
+      templateSelection: function (selection) {
+        return selection.text;
+      },
+      theme: 'default',
+      width: 'resolve'
+    };
+  };
+
+  Defaults.prototype.set = function (key, value) {
+    var camelKey = $.camelCase(key);
+
+    var data = {};
+    data[camelKey] = value;
+
+    var convertedData = Utils._convertData(data);
+
+    $.extend(true, this.defaults, convertedData);
+  };
+
+  var defaults = new Defaults();
+
+  return defaults;
+});
+
+S2.define('select2/options',[
+  'require',
+  'jquery',
+  './defaults',
+  './utils'
+], function (require, $, Defaults, Utils) {
+  function Options (options, $element) {
+    this.options = options;
+
+    if ($element != null) {
+      this.fromElement($element);
+    }
+
+    this.options = Defaults.apply(this.options);
+
+    if ($element && $element.is('input')) {
+      var InputCompat = require(this.get('amdBase') + 'compat/inputData');
+
+      this.options.dataAdapter = Utils.Decorate(
+        this.options.dataAdapter,
+        InputCompat
+      );
+    }
+  }
+
+  Options.prototype.fromElement = function ($e) {
+    var excludedData = ['select2'];
+
+    if (this.options.multiple == null) {
+      this.options.multiple = $e.prop('multiple');
+    }
+
+    if (this.options.disabled == null) {
+      this.options.disabled = $e.prop('disabled');
+    }
+
+    if (this.options.language == null) {
+      if ($e.prop('lang')) {
+        this.options.language = $e.prop('lang').toLowerCase();
+      } else if ($e.closest('[lang]').prop('lang')) {
+        this.options.language = $e.closest('[lang]').prop('lang');
+      }
+    }
+
+    if (this.options.dir == null) {
+      if ($e.prop('dir')) {
+        this.options.dir = $e.prop('dir');
+      } else if ($e.closest('[dir]').prop('dir')) {
+        this.options.dir = $e.closest('[dir]').prop('dir');
+      } else {
+        this.options.dir = 'ltr';
+      }
+    }
+
+    $e.prop('disabled', this.options.disabled);
+    $e.prop('multiple', this.options.multiple);
+
+    if (Utils.GetData($e[0], 'select2Tags')) {
+      if (this.options.debug && window.console && console.warn) {
+        console.warn(
+          'Select2: The `data-select2-tags` attribute has been changed to ' +
+          'use the `data-data` and `data-tags="true"` attributes and will be ' +
+          'removed in future versions of Select2.'
+        );
+      }
+
+      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));
+      Utils.StoreData($e[0], 'tags', true);
+    }
+
+    if (Utils.GetData($e[0], 'ajaxUrl')) {
+      if (this.options.debug && window.console && console.warn) {
+        console.warn(
+          'Select2: The `data-ajax-url` attribute has been changed to ' +
+          '`data-ajax--url` and support for the old attribute will be removed' +
+          ' in future versions of Select2.'
+        );
+      }
+
+      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));
+      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));
+	  
+    }
+
+    var dataset = {};
+
+    // Prefer the element's `dataset` attribute if it exists
+    // jQuery 1.x does not correctly handle data attributes with multiple dashes
+    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {
+      dataset = $.extend(true, {}, $e[0].dataset, Utils.GetData($e[0]));
+    } else {
+      dataset = Utils.GetData($e[0]);
+    }
+
+    var data = $.extend(true, {}, dataset);
+
+    data = Utils._convertData(data);
+
+    for (var key in data) {
+      if ($.inArray(key, excludedData) > -1) {
+        continue;
+      }
+
+      if ($.isPlainObject(this.options[key])) {
+        $.extend(this.options[key], data[key]);
+      } else {
+        this.options[key] = data[key];
+      }
+    }
+
+    return this;
+  };
+
+  Options.prototype.get = function (key) {
+    return this.options[key];
+  };
+
+  Options.prototype.set = function (key, val) {
+    this.options[key] = val;
+  };
+
+  return Options;
+});
+
+S2.define('select2/core',[
+  'jquery',
+  './options',
+  './utils',
+  './keys'
+], function ($, Options, Utils, KEYS) {
+  var Select2 = function ($element, options) {
+    if (Utils.GetData($element[0], 'select2') != null) {
+      Utils.GetData($element[0], 'select2').destroy();
+    }
+
+    this.$element = $element;
+
+    this.id = this._generateId($element);
+
+    options = options || {};
+
+    this.options = new Options(options, $element);
+
+    Select2.__super__.constructor.call(this);
+
+    // Set up the tabindex
+
+    var tabindex = $element.attr('tabindex') || 0;
+    Utils.StoreData($element[0], 'old-tabindex', tabindex);
+    $element.attr('tabindex', '-1');
+
+    // Set up containers and adapters
+
+    var DataAdapter = this.options.get('dataAdapter');
+    this.dataAdapter = new DataAdapter($element, this.options);
+
+    var $container = this.render();
+
+    this._placeContainer($container);
+
+    var SelectionAdapter = this.options.get('selectionAdapter');
+    this.selection = new SelectionAdapter($element, this.options);
+    this.$selection = this.selection.render();
+
+    this.selection.position(this.$selection, $container);
+
+    var DropdownAdapter = this.options.get('dropdownAdapter');
+    this.dropdown = new DropdownAdapter($element, this.options);
+    this.$dropdown = this.dropdown.render();
+
+    this.dropdown.position(this.$dropdown, $container);
+
+    var ResultsAdapter = this.options.get('resultsAdapter');
+    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);
+    this.$results = this.results.render();
+
+    this.results.position(this.$results, this.$dropdown);
+
+    // Bind events
+
+    var self = this;
+
+    // Bind the container to all of the adapters
+    this._bindAdapters();
+
+    // Register any DOM event handlers
+    this._registerDomEvents();
+
+    // Register any internal event handlers
+    this._registerDataEvents();
+    this._registerSelectionEvents();
+    this._registerDropdownEvents();
+    this._registerResultsEvents();
+    this._registerEvents();
+
+    // Set the initial state
+    this.dataAdapter.current(function (initialData) {
+      self.trigger('selection:update', {
+        data: initialData
+      });
+    });
+
+    // Hide the original select
+    $element.addClass('select2-hidden-accessible');
+    $element.attr('aria-hidden', 'true');
+
+    // Synchronize any monitored attributes
+    this._syncAttributes();
+
+    Utils.StoreData($element[0], 'select2', this);
+
+    // Ensure backwards compatibility with $element.data('select2').
+    $element.data('select2', this);
+  };
+
+  Utils.Extend(Select2, Utils.Observable);
+
+  Select2.prototype._generateId = function ($element) {
+    var id = '';
+
+    if ($element.attr('id') != null) {
+      id = $element.attr('id');
+    } else if ($element.attr('name') != null) {
+      id = $element.attr('name') + '-' + Utils.generateChars(2);
+    } else {
+      id = Utils.generateChars(4);
+    }
+
+    id = id.replace(/(:|\.|\[|\]|,)/g, '');
+    id = 'select2-' + id;
+
+    return id;
+  };
+
+  Select2.prototype._placeContainer = function ($container) {
+    $container.insertAfter(this.$element);
+
+    var width = this._resolveWidth(this.$element, this.options.get('width'));
+
+    if (width != null) {
+      $container.css('width', width);
+    }
+  };
+
+  Select2.prototype._resolveWidth = function ($element, method) {
+    var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
+
+    if (method == 'resolve') {
+      var styleWidth = this._resolveWidth($element, 'style');
+
+      if (styleWidth != null) {
+        return styleWidth;
+      }
+
+      return this._resolveWidth($element, 'element');
+    }
+
+    if (method == 'element') {
+      var elementWidth = $element.outerWidth(false);
+
+      if (elementWidth <= 0) {
+        return 'auto';
+      }
+
+      return elementWidth + 'px';
+    }
+
+    if (method == 'style') {
+      var style = $element.attr('style');
+
+      if (typeof(style) !== 'string') {
+        return null;
+      }
+
+      var attrs = style.split(';');
+
+      for (var i = 0, l = attrs.length; i < l; i = i + 1) {
+        var attr = attrs[i].replace(/\s/g, '');
+        var matches = attr.match(WIDTH);
+
+        if (matches !== null && matches.length >= 1) {
+          return matches[1];
+        }
+      }
+
+      return null;
+    }
+
+    return method;
+  };
+
+  Select2.prototype._bindAdapters = function () {
+    this.dataAdapter.bind(this, this.$container);
+    this.selection.bind(this, this.$container);
+
+    this.dropdown.bind(this, this.$container);
+    this.results.bind(this, this.$container);
+  };
+
+  Select2.prototype._registerDomEvents = function () {
+    var self = this;
+
+    this.$element.on('change.select2', function () {
+      self.dataAdapter.current(function (data) {
+        self.trigger('selection:update', {
+          data: data
+        });
+      });
+    });
+
+    this.$element.on('focus.select2', function (evt) {
+      self.trigger('focus', evt);
+    });
+
+    this._syncA = Utils.bind(this._syncAttributes, this);
+    this._syncS = Utils.bind(this._syncSubtree, this);
+
+    if (this.$element[0].attachEvent) {
+      this.$element[0].attachEvent('onpropertychange', this._syncA);
+    }
+
+    var observer = window.MutationObserver ||
+      window.WebKitMutationObserver ||
+      window.MozMutationObserver
+    ;
+
+    if (observer != null) {
+      this._observer = new observer(function (mutations) {
+        $.each(mutations, self._syncA);
+        $.each(mutations, self._syncS);
+      });
+      this._observer.observe(this.$element[0], {
+        attributes: true,
+        childList: true,
+        subtree: false
+      });
+    } else if (this.$element[0].addEventListener) {
+      this.$element[0].addEventListener(
+        'DOMAttrModified',
+        self._syncA,
+        false
+      );
+      this.$element[0].addEventListener(
+        'DOMNodeInserted',
+        self._syncS,
+        false
+      );
+      this.$element[0].addEventListener(
+        'DOMNodeRemoved',
+        self._syncS,
+        false
+      );
+    }
+  };
+
+  Select2.prototype._registerDataEvents = function () {
+    var self = this;
+
+    this.dataAdapter.on('*', function (name, params) {
+      self.trigger(name, params);
+    });
+  };
+
+  Select2.prototype._registerSelectionEvents = function () {
+    var self = this;
+    var nonRelayEvents = ['toggle', 'focus'];
+
+    this.selection.on('toggle', function () {
+      self.toggleDropdown();
+    });
+
+    this.selection.on('focus', function (params) {
+      self.focus(params);
+    });
+
+    this.selection.on('*', function (name, params) {
+      if ($.inArray(name, nonRelayEvents) !== -1) {
+        return;
+      }
+
+      self.trigger(name, params);
+    });
+  };
+
+  Select2.prototype._registerDropdownEvents = function () {
+    var self = this;
+
+    this.dropdown.on('*', function (name, params) {
+      self.trigger(name, params);
+    });
+  };
+
+  Select2.prototype._registerResultsEvents = function () {
+    var self = this;
+
+    this.results.on('*', function (name, params) {
+      self.trigger(name, params);
+    });
+  };
+
+  Select2.prototype._registerEvents = function () {
+    var self = this;
+
+    this.on('open', function () {
+      self.$container.addClass('select2-container--open');
+    });
+
+    this.on('close', function () {
+      self.$container.removeClass('select2-container--open');
+    });
+
+    this.on('enable', function () {
+      self.$container.removeClass('select2-container--disabled');
+    });
+
+    this.on('disable', function () {
+      self.$container.addClass('select2-container--disabled');
+    });
+
+    this.on('blur', function () {
+      self.$container.removeClass('select2-container--focus');
+    });
+
+    this.on('query', function (params) {
+      if (!self.isOpen()) {
+        self.trigger('open', {});
+      }
+
+      this.dataAdapter.query(params, function (data) {
+        self.trigger('results:all', {
+          data: data,
+          query: params
+        });
+      });
+    });
+
+    this.on('query:append', function (params) {
+      this.dataAdapter.query(params, function (data) {
+        self.trigger('results:append', {
+          data: data,
+          query: params
+        });
+      });
+    });
+
+    this.on('keypress', function (evt) {
+      var key = evt.which;
+
+      if (self.isOpen()) {
+        if (key === KEYS.ESC || key === KEYS.TAB ||
+            (key === KEYS.UP && evt.altKey)) {
+          self.close();
+
+          evt.preventDefault();
+        } else if (key === KEYS.ENTER) {
+          self.trigger('results:select', {});
+
+          evt.preventDefault();
+        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {
+          self.trigger('results:toggle', {});
+
+          evt.preventDefault();
+        } else if (key === KEYS.UP) {
+          self.trigger('results:previous', {});
+
+          evt.preventDefault();
+        } else if (key === KEYS.DOWN) {
+          self.trigger('results:next', {});
+
+          evt.preventDefault();
+        }
+      } else {
+        if (key === KEYS.ENTER || key === KEYS.SPACE ||
+            (key === KEYS.DOWN && evt.altKey)) {
+          self.open();
+
+          evt.preventDefault();
+        }
+      }
+    });
+  };
+
+  Select2.prototype._syncAttributes = function () {
+    this.options.set('disabled', this.$element.prop('disabled'));
+
+    if (this.options.get('disabled')) {
+      if (this.isOpen()) {
+        this.close();
+      }
+
+      this.trigger('disable', {});
+    } else {
+      this.trigger('enable', {});
+    }
+  };
+
+  Select2.prototype._syncSubtree = function (evt, mutations) {
+    var changed = false;
+    var self = this;
+
+    // Ignore any mutation events raised for elements that aren't options or
+    // optgroups. This handles the case when the select element is destroyed
+    if (
+      evt && evt.target && (
+        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
+      )
+    ) {
+      return;
+    }
+
+    if (!mutations) {
+      // If mutation events aren't supported, then we can only assume that the
+      // change affected the selections
+      changed = true;
+    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
+      for (var n = 0; n < mutations.addedNodes.length; n++) {
+        var node = mutations.addedNodes[n];
+
+        if (node.selected) {
+          changed = true;
+        }
+      }
+    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
+      changed = true;
+    }
+
+    // Only re-pull the data if we think there is a change
+    if (changed) {
+      this.dataAdapter.current(function (currentData) {
+        self.trigger('selection:update', {
+          data: currentData
+        });
+      });
+    }
+  };
+
+  /**
+   * Override the trigger method to automatically trigger pre-events when
+   * there are events that can be prevented.
+   */
+  Select2.prototype.trigger = function (name, args) {
+    var actualTrigger = Select2.__super__.trigger;
+    var preTriggerMap = {
+      'open': 'opening',
+      'close': 'closing',
+      'select': 'selecting',
+      'unselect': 'unselecting',
+      'clear': 'clearing'
+    };
+
+    if (args === undefined) {
+      args = {};
+    }
+
+    if (name in preTriggerMap) {
+      var preTriggerName = preTriggerMap[name];
+      var preTriggerArgs = {
+        prevented: false,
+        name: name,
+        args: args
+      };
+
+      actualTrigger.call(this, preTriggerName, preTriggerArgs);
+
+      if (preTriggerArgs.prevented) {
+        args.prevented = true;
+
+        return;
+      }
+    }
+
+    actualTrigger.call(this, name, args);
+  };
+
+  Select2.prototype.toggleDropdown = function () {
+    if (this.options.get('disabled')) {
+      return;
+    }
+
+    if (this.isOpen()) {
+      this.close();
+    } else {
+      this.open();
+    }
+  };
+
+  Select2.prototype.open = function () {
+    if (this.isOpen()) {
+      return;
+    }
+
+    this.trigger('query', {});
+  };
+
+  Select2.prototype.close = function () {
+    if (!this.isOpen()) {
+      return;
+    }
+
+    this.trigger('close', {});
+  };
+
+  Select2.prototype.isOpen = function () {
+    return this.$container.hasClass('select2-container--open');
+  };
+
+  Select2.prototype.hasFocus = function () {
+    return this.$container.hasClass('select2-container--focus');
+  };
+
+  Select2.prototype.focus = function (data) {
+    // No need to re-trigger focus events if we are already focused
+    if (this.hasFocus()) {
+      return;
+    }
+
+    this.$container.addClass('select2-container--focus');
+    this.trigger('focus', {});
+  };
+
+  Select2.prototype.enable = function (args) {
+    if (this.options.get('debug') && window.console && console.warn) {
+      console.warn(
+        'Select2: The `select2("enable")` method has been deprecated and will' +
+        ' be removed in later Select2 versions. Use $element.prop("disabled")' +
+        ' instead.'
+      );
+    }
+
+    if (args == null || args.length === 0) {
+      args = [true];
+    }
+
+    var disabled = !args[0];
+
+    this.$element.prop('disabled', disabled);
+  };
+
+  Select2.prototype.data = function () {
+    if (this.options.get('debug') &&
+        arguments.length > 0 && window.console && console.warn) {
+      console.warn(
+        'Select2: Data can no longer be set using `select2("data")`. You ' +
+        'should consider setting the value instead using `$element.val()`.'
+      );
+    }
+
+    var data = [];
+
+    this.dataAdapter.current(function (currentData) {
+      data = currentData;
+    });
+
+    return data;
+  };
+
+  Select2.prototype.val = function (args) {
+    if (this.options.get('debug') && window.console && console.warn) {
+      console.warn(
+        'Select2: The `select2("val")` method has been deprecated and will be' +
+        ' removed in later Select2 versions. Use $element.val() instead.'
+      );
+    }
+
+    if (args == null || args.length === 0) {
+      return this.$element.val();
+    }
+
+    var newVal = args[0];
+
+    if ($.isArray(newVal)) {
+      newVal = $.map(newVal, function (obj) {
+        return obj.toString();
+      });
+    }
+
+    this.$element.val(newVal).trigger('change');
+  };
+
+  Select2.prototype.destroy = function () {
+    this.$container.remove();
+
+    if (this.$element[0].detachEvent) {
+      this.$element[0].detachEvent('onpropertychange', this._syncA);
+    }
+
+    if (this._observer != null) {
+      this._observer.disconnect();
+      this._observer = null;
+    } else if (this.$element[0].removeEventListener) {
+      this.$element[0]
+        .removeEventListener('DOMAttrModified', this._syncA, false);
+      this.$element[0]
+        .removeEventListener('DOMNodeInserted', this._syncS, false);
+      this.$element[0]
+        .removeEventListener('DOMNodeRemoved', this._syncS, false);
+    }
+
+    this._syncA = null;
+    this._syncS = null;
+
+    this.$element.off('.select2');
+    this.$element.attr('tabindex',
+    Utils.GetData(this.$element[0], 'old-tabindex'));
+
+    this.$element.removeClass('select2-hidden-accessible');
+    this.$element.attr('aria-hidden', 'false');
+    Utils.RemoveData(this.$element[0]);
+    this.$element.removeData('select2');
+
+    this.dataAdapter.destroy();
+    this.selection.destroy();
+    this.dropdown.destroy();
+    this.results.destroy();
+
+    this.dataAdapter = null;
+    this.selection = null;
+    this.dropdown = null;
+    this.results = null;
+  };
+
+  Select2.prototype.render = function () {
+    var $container = $(
+      '<span class="select2 select2-container">' +
+        '<span class="selection"></span>' +
+        '<span class="dropdown-wrapper" aria-hidden="true"></span>' +
+      '</span>'
+    );
+
+    $container.attr('dir', this.options.get('dir'));
+
+    this.$container = $container;
+
+    this.$container.addClass('select2-container--' + this.options.get('theme'));
+
+    Utils.StoreData($container[0], 'element', this.$element);
+
+    return $container;
+  };
+
+  return Select2;
+});
+
+S2.define('select2/compat/utils',[
+  'jquery'
+], function ($) {
+  function syncCssClasses ($dest, $src, adapter) {
+    var classes, replacements = [], adapted;
+
+    classes = $.trim($dest.attr('class'));
+
+    if (classes) {
+      classes = '' + classes; // for IE which returns object
+
+      $(classes.split(/\s+/)).each(function () {
+        // Save all Select2 classes
+        if (this.indexOf('select2-') === 0) {
+          replacements.push(this);
+        }
+      });
+    }
+
+    classes = $.trim($src.attr('class'));
+
+    if (classes) {
+      classes = '' + classes; // for IE which returns object
+
+      $(classes.split(/\s+/)).each(function () {
+        // Only adapt non-Select2 classes
+        if (this.indexOf('select2-') !== 0) {
+          adapted = adapter(this);
+
+          if (adapted != null) {
+            replacements.push(adapted);
+          }
+        }
+      });
+    }
+
+    $dest.attr('class', replacements.join(' '));
+  }
+
+  return {
+    syncCssClasses: syncCssClasses
+  };
+});
+
+S2.define('select2/compat/containerCss',[
+  'jquery',
+  './utils'
+], function ($, CompatUtils) {
+  // No-op CSS adapter that discards all classes by default
+  function _containerAdapter (clazz) {
+    return null;
+  }
+
+  function ContainerCSS () { }
+
+  ContainerCSS.prototype.render = function (decorated) {
+    var $container = decorated.call(this);
+
+    var containerCssClass = this.options.get('containerCssClass') || '';
+
+    if ($.isFunction(containerCssClass)) {
+      containerCssClass = containerCssClass(this.$element);
+    }
+
+    var containerCssAdapter = this.options.get('adaptContainerCssClass');
+    containerCssAdapter = containerCssAdapter || _containerAdapter;
+
+    if (containerCssClass.indexOf(':all:') !== -1) {
+      containerCssClass = containerCssClass.replace(':all:', '');
+
+      var _cssAdapter = containerCssAdapter;
+
+      containerCssAdapter = function (clazz) {
+        var adapted = _cssAdapter(clazz);
+
+        if (adapted != null) {
+          // Append the old one along with the adapted one
+          return adapted + ' ' + clazz;
+        }
+
+        return clazz;
+      };
+    }
+
+    var containerCss = this.options.get('containerCss') || {};
+
+    if ($.isFunction(containerCss)) {
+      containerCss = containerCss(this.$element);
+    }
+
+    CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);
+
+    $container.css(containerCss);
+    $container.addClass(containerCssClass);
+
+    return $container;
+  };
+
+  return ContainerCSS;
+});
+
+S2.define('select2/compat/dropdownCss',[
+  'jquery',
+  './utils'
+], function ($, CompatUtils) {
+  // No-op CSS adapter that discards all classes by default
+  function _dropdownAdapter (clazz) {
+    return null;
+  }
+
+  function DropdownCSS () { }
+
+  DropdownCSS.prototype.render = function (decorated) {
+    var $dropdown = decorated.call(this);
+
+    var dropdownCssClass = this.options.get('dropdownCssClass') || '';
+
+    if ($.isFunction(dropdownCssClass)) {
+      dropdownCssClass = dropdownCssClass(this.$element);
+    }
+
+    var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');
+    dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;
+
+    if (dropdownCssClass.indexOf(':all:') !== -1) {
+      dropdownCssClass = dropdownCssClass.replace(':all:', '');
+
+      var _cssAdapter = dropdownCssAdapter;
+
+      dropdownCssAdapter = function (clazz) {
+        var adapted = _cssAdapter(clazz);
+
+        if (adapted != null) {
+          // Append the old one along with the adapted one
+          return adapted + ' ' + clazz;
+        }
+
+        return clazz;
+      };
+    }
+
+    var dropdownCss = this.options.get('dropdownCss') || {};
+
+    if ($.isFunction(dropdownCss)) {
+      dropdownCss = dropdownCss(this.$element);
+    }
+
+    CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);
+
+    $dropdown.css(dropdownCss);
+    $dropdown.addClass(dropdownCssClass);
+
+    return $dropdown;
+  };
+
+  return DropdownCSS;
+});
+
+S2.define('select2/compat/initSelection',[
+  'jquery'
+], function ($) {
+  function InitSelection (decorated, $element, options) {
+    if (options.get('debug') && window.console && console.warn) {
+      console.warn(
+        'Select2: The `initSelection` option has been deprecated in favor' +
+        ' of a custom data adapter that overrides the `current` method. ' +
+        'This method is now called multiple times instead of a single ' +
+        'time when the instance is initialized. Support will be removed ' +
+        'for the `initSelection` option in future versions of Select2'
+      );
+    }
+
+    this.initSelection = options.get('initSelection');
+    this._isInitialized = false;
+
+    decorated.call(this, $element, options);
+  }
+
+  InitSelection.prototype.current = function (decorated, callback) {
+    var self = this;
+
+    if (this._isInitialized) {
+      decorated.call(this, callback);
+
+      return;
+    }
+
+    this.initSelection.call(null, this.$element, function (data) {
+      self._isInitialized = true;
+
+      if (!$.isArray(data)) {
+        data = [data];
+      }
+
+      callback(data);
+    });
+  };
+
+  return InitSelection;
+});
+
+S2.define('select2/compat/inputData',[
+  'jquery',
+  '../utils'
+], function ($, Utils) {
+  function InputData (decorated, $element, options) {
+    this._currentData = [];
+    this._valueSeparator = options.get('valueSeparator') || ',';
+
+    if ($element.prop('type') === 'hidden') {
+      if (options.get('debug') && console && console.warn) {
+        console.warn(
+          'Select2: Using a hidden input with Select2 is no longer ' +
+          'supported and may stop working in the future. It is recommended ' +
+          'to use a `<select>` element instead.'
+        );
+      }
+    }
+
+    decorated.call(this, $element, options);
+  }
+
+  InputData.prototype.current = function (_, callback) {
+    function getSelected (data, selectedIds) {
+      var selected = [];
+
+      if (data.selected || $.inArray(data.id, selectedIds) !== -1) {
+        data.selected = true;
+        selected.push(data);
+      } else {
+        data.selected = false;
+      }
+
+      if (data.children) {
+        selected.push.apply(selected, getSelected(data.children, selectedIds));
+      }
+
+      return selected;
+    }
+
+    var selected = [];
+
+    for (var d = 0; d < this._currentData.length; d++) {
+      var data = this._currentData[d];
+
+      selected.push.apply(
+        selected,
+        getSelected(
+          data,
+          this.$element.val().split(
+            this._valueSeparator
+          )
+        )
+      );
+    }
+
+    callback(selected);
+  };
+
+  InputData.prototype.select = function (_, data) {
+    if (!this.options.get('multiple')) {
+      this.current(function (allData) {
+        $.map(allData, function (data) {
+          data.selected = false;
+        });
+      });
+
+      this.$element.val(data.id);
+      this.$element.trigger('change');
+    } else {
+      var value = this.$element.val();
+      value += this._valueSeparator + data.id;
+
+      this.$element.val(value);
+      this.$element.trigger('change');
+    }
+  };
+
+  InputData.prototype.unselect = function (_, data) {
+    var self = this;
+
+    data.selected = false;
+
+    this.current(function (allData) {
+      var values = [];
+
+      for (var d = 0; d < allData.length; d++) {
+        var item = allData[d];
+
+        if (data.id == item.id) {
+          continue;
+        }
+
+        values.push(item.id);
+      }
+
+      self.$element.val(values.join(self._valueSeparator));
+      self.$element.trigger('change');
+    });
+  };
+
+  InputData.prototype.query = function (_, params, callback) {
+    var results = [];
+
+    for (var d = 0; d < this._currentData.length; d++) {
+      var data = this._currentData[d];
+
+      var matches = this.matches(params, data);
+
+      if (matches !== null) {
+        results.push(matches);
+      }
+    }
+
+    callback({
+      results: results
+    });
+  };
+
+  InputData.prototype.addOptions = function (_, $options) {
+    var options = $.map($options, function ($option) {
+      return Utils.GetData($option[0], 'data');
+    });
+
+    this._currentData.push.apply(this._currentData, options);
+  };
+
+  return InputData;
+});
+
+S2.define('select2/compat/matcher',[
+  'jquery'
+], function ($) {
+  function oldMatcher (matcher) {
+    function wrappedMatcher (params, data) {
+      var match = $.extend(true, {}, data);
+
+      if (params.term == null || $.trim(params.term) === '') {
+        return match;
+      }
+
+      if (data.children) {
+        for (var c = data.children.length - 1; c >= 0; c--) {
+          var child = data.children[c];
+
+          // Check if the child object matches
+          // The old matcher returned a boolean true or false
+          var doesMatch = matcher(params.term, child.text, child);
+
+          // If the child didn't match, pop it off
+          if (!doesMatch) {
+            match.children.splice(c, 1);
+          }
+        }
+
+        if (match.children.length > 0) {
+          return match;
+        }
+      }
+
+      if (matcher(params.term, data.text, data)) {
+        return match;
+      }
+
+      return null;
+    }
+
+    return wrappedMatcher;
+  }
+
+  return oldMatcher;
+});
+
+S2.define('select2/compat/query',[
+
+], function () {
+  function Query (decorated, $element, options) {
+    if (options.get('debug') && window.console && console.warn) {
+      console.warn(
+        'Select2: The `query` option has been deprecated in favor of a ' +
+        'custom data adapter that overrides the `query` method. Support ' +
+        'will be removed for the `query` option in future versions of ' +
+        'Select2.'
+      );
+    }
+
+    decorated.call(this, $element, options);
+  }
+
+  Query.prototype.query = function (_, params, callback) {
+    params.callback = callback;
+
+    var query = this.options.get('query');
+
+    query.call(null, params);
+  };
+
+  return Query;
+});
+
+S2.define('select2/dropdown/attachContainer',[
+
+], function () {
+  function AttachContainer (decorated, $element, options) {
+    decorated.call(this, $element, options);
+  }
+
+  AttachContainer.prototype.position =
+    function (decorated, $dropdown, $container) {
+    var $dropdownContainer = $container.find('.dropdown-wrapper');
+    $dropdownContainer.append($dropdown);
+
+    $dropdown.addClass('select2-dropdown--below');
+    $container.addClass('select2-container--below');
+  };
+
+  return AttachContainer;
+});
+
+S2.define('select2/dropdown/stopPropagation',[
+
+], function () {
+  function StopPropagation () { }
+
+  StopPropagation.prototype.bind = function (decorated, container, $container) {
+    decorated.call(this, container, $container);
+
+    var stoppedEvents = [
+    'blur',
+    'change',
+    'click',
+    'dblclick',
+    'focus',
+    'focusin',
+    'focusout',
+    'input',
+    'keydown',
+    'keyup',
+    'keypress',
+    'mousedown',
+    'mouseenter',
+    'mouseleave',
+    'mousemove',
+    'mouseover',
+    'mouseup',
+    'search',
+    'touchend',
+    'touchstart'
+    ];
+
+    this.$dropdown.on(stoppedEvents.join(' '), function (evt) {
+      evt.stopPropagation();
+    });
+  };
+
+  return StopPropagation;
+});
+
+S2.define('select2/selection/stopPropagation',[
+
+], function () {
+  function StopPropagation () { }
+
+  StopPropagation.prototype.bind = function (decorated, container, $container) {
+    decorated.call(this, container, $container);
+
+    var stoppedEvents = [
+      'blur',
+      'change',
+      'click',
+      'dblclick',
+      'focus',
+      'focusin',
+      'focusout',
+      'input',
+      'keydown',
+      'keyup',
+      'keypress',
+      'mousedown',
+      'mouseenter',
+      'mouseleave',
+      'mousemove',
+      'mouseover',
+      'mouseup',
+      'search',
+      'touchend',
+      'touchstart'
+    ];
+
+    this.$selection.on(stoppedEvents.join(' '), function (evt) {
+      evt.stopPropagation();
+    });
+  };
+
+  return StopPropagation;
+});
+
+/*!
+ * jQuery Mousewheel 3.1.13
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ */
+
+(function (factory) {
+    if ( typeof S2.define === 'function' && S2.define.amd ) {
+        // AMD. Register as an anonymous module.
+        S2.define('jquery-mousewheel',['jquery'], factory);
+    } else if (typeof exports === 'object') {
+        // Node/CommonJS style for Browserify
+        module.exports = factory;
+    } else {
+        // Browser globals
+        factory(jQuery);
+    }
+}(function ($) {
+
+    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
+        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
+                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
+        slice  = Array.prototype.slice,
+        nullLowestDeltaTimeout, lowestDelta;
+
+    if ( $.event.fixHooks ) {
+        for ( var i = toFix.length; i; ) {
+            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
+        }
+    }
+
+    var special = $.event.special.mousewheel = {
+        version: '3.1.12',
+
+        setup: function() {
+            if ( this.addEventListener ) {
+                for ( var i = toBind.length; i; ) {
+                    this.addEventListener( toBind[--i], handler, false );
+                }
+            } else {
+                this.onmousewheel = handler;
+            }
+            // Store the line height and page height for this particular element
+            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
+            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
+        },
+
+        teardown: function() {
+            if ( this.removeEventListener ) {
+                for ( var i = toBind.length; i; ) {
+                    this.removeEventListener( toBind[--i], handler, false );
+                }
+            } else {
+                this.onmousewheel = null;
+            }
+            // Clean up the data we added to the element
+            $.removeData(this, 'mousewheel-line-height');
+            $.removeData(this, 'mousewheel-page-height');
+        },
+
+        getLineHeight: function(elem) {
+            var $elem = $(elem),
+                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
+            if (!$parent.length) {
+                $parent = $('body');
+            }
+            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
+        },
+
+        getPageHeight: function(elem) {
+            return $(elem).height();
+        },
+
+        settings: {
+            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
+            normalizeOffset: true  // calls getBoundingClientRect for each event
+        }
+    };
+
+    $.fn.extend({
+        mousewheel: function(fn) {
+            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
+        },
+
+        unmousewheel: function(fn) {
+            return this.unbind('mousewheel', fn);
+        }
+    });
+
+
+    function handler(event) {
+        var orgEvent   = event || window.event,
+            args       = slice.call(arguments, 1),
+            delta      = 0,
+            deltaX     = 0,
+            deltaY     = 0,
+            absDelta   = 0,
+            offsetX    = 0,
+            offsetY    = 0;
+        event = $.event.fix(orgEvent);
+        event.type = 'mousewheel';
+
+        // Old school scrollwheel delta
+        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }
+        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }
+        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }
+        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
+
+        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
+        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
+            deltaX = deltaY * -1;
+            deltaY = 0;
+        }
+
+        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
+        delta = deltaY === 0 ? deltaX : deltaY;
+
+        // New school wheel delta (wheel event)
+        if ( 'deltaY' in orgEvent ) {
+            deltaY = orgEvent.deltaY * -1;
+            delta  = deltaY;
+        }
+        if ( 'deltaX' in orgEvent ) {
+            deltaX = orgEvent.deltaX;
+            if ( deltaY === 0 ) { delta  = deltaX * -1; }
+        }
+
+        // No change actually happened, no reason to go any further
+        if ( deltaY === 0 && deltaX === 0 ) { return; }
+
+        // Need to convert lines and pages to pixels if we aren't already in pixels
+        // There are three delta modes:
+        //   * deltaMode 0 is by pixels, nothing to do
+        //   * deltaMode 1 is by lines
+        //   * deltaMode 2 is by pages
+        if ( orgEvent.deltaMode === 1 ) {
+            var lineHeight = $.data(this, 'mousewheel-line-height');
+            delta  *= lineHeight;
+            deltaY *= lineHeight;
+            deltaX *= lineHeight;
+        } else if ( orgEvent.deltaMode === 2 ) {
+            var pageHeight = $.data(this, 'mousewheel-page-height');
+            delta  *= pageHeight;
+            deltaY *= pageHeight;
+            deltaX *= pageHeight;
+        }
+
+        // Store lowest absolute delta to normalize the delta values
+        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
+
+        if ( !lowestDelta || absDelta < lowestDelta ) {
+            lowestDelta = absDelta;
+
+            // Adjust older deltas if necessary
+            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
+                lowestDelta /= 40;
+            }
+        }
+
+        // Adjust older deltas if necessary
+        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
+            // Divide all the things by 40!
+            delta  /= 40;
+            deltaX /= 40;
+            deltaY /= 40;
+        }
+
+        // Get a whole, normalized value for the deltas
+        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);
+        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
+        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
+
+        // Normalise offsetX and offsetY properties
+        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
+            var boundingRect = this.getBoundingClientRect();
+            offsetX = event.clientX - boundingRect.left;
+            offsetY = event.clientY - boundingRect.top;
+        }
+
+        // Add information to the event object
+        event.deltaX = deltaX;
+        event.deltaY = deltaY;
+        event.deltaFactor = lowestDelta;
+        event.offsetX = offsetX;
+        event.offsetY = offsetY;
+        // Go ahead and set deltaMode to 0 since we converted to pixels
+        // Although this is a little odd since we overwrite the deltaX/Y
+        // properties with normalized deltas.
+        event.deltaMode = 0;
+
+        // Add event and delta to the front of the arguments
+        args.unshift(event, delta, deltaX, deltaY);
+
+        // Clearout lowestDelta after sometime to better
+        // handle multiple device types that give different
+        // a different lowestDelta
+        // Ex: trackpad = 3 and mouse wheel = 120
+        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
+        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
+
+        return ($.event.dispatch || $.event.handle).apply(this, args);
+    }
+
+    function nullLowestDelta() {
+        lowestDelta = null;
+    }
+
+    function shouldAdjustOldDeltas(orgEvent, absDelta) {
+        // If this is an older event and the delta is divisable by 120,
+        // then we are assuming that the browser is treating this as an
+        // older mouse wheel event and that we should divide the deltas
+        // by 40 to try and get a more usable deltaFactor.
+        // Side note, this actually impacts the reported scroll distance
+        // in older browsers and can cause scrolling to be slower than native.
+        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
+        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
+    }
+
+}));
+
+S2.define('jquery.select2',[
+  'jquery',
+  'jquery-mousewheel',
+
+  './select2/core',
+  './select2/defaults',
+  './select2/utils'
+], function ($, _, Select2, Defaults, Utils) {
+  if ($.fn.select2 == null) {
+    // All methods that should return the element
+    var thisMethods = ['open', 'close', 'destroy'];
+
+    $.fn.select2 = function (options) {
+      options = options || {};
+
+      if (typeof options === 'object') {
+        this.each(function () {
+          var instanceOptions = $.extend(true, {}, options);
+
+          var instance = new Select2($(this), instanceOptions);
+        });
+
+        return this;
+      } else if (typeof options === 'string') {
+        var ret;
+        var args = Array.prototype.slice.call(arguments, 1);
+
+        this.each(function () {
+          var instance = Utils.GetData(this, 'select2');
+
+          if (instance == null && window.console && console.error) {
+            console.error(
+              'The select2(\'' + options + '\') method was called on an ' +
+              'element that is not using Select2.'
+            );
+          }
+
+          ret = instance[options].apply(instance, args);
+        });
+
+        // Check if we should be returning `this`
+        if ($.inArray(options, thisMethods) > -1) {
+          return this;
+        }
+
+        return ret;
+      } else {
+        throw new Error('Invalid arguments for Select2: ' + options);
+      }
+    };
+  }
+
+  if ($.fn.select2.defaults == null) {
+    $.fn.select2.defaults = Defaults;
+  }
+
+  return Select2;
+});
+
+  // Return the AMD loader configuration so it can be used outside of this file
+  return {
+    define: S2.define,
+    require: S2.require
+  };
+}());
+
+  // Autoload the jQuery bindings
+  // We know that all of the modules exist above this, so we're safe
+  var select2 = S2.require('jquery.select2');
+
+  // Hold the AMD module references on the jQuery function that was just loaded
+  // This allows Select2 to use the internal loader outside of this file, such
+  // as in the language files.
+  jQuery.fn.select2.amd = S2;
+
+  // Return the Select2 instance for anyone who is importing it.
+  return select2;
+}));
Index: public/vendors/select2/js/select2.full.min.js
===================================================================
--- public/vendors/select2/js/select2.full.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/select2.full.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k<a.length;k++)if("."===(m=a[k]))a.splice(k,1),k-=1;else if(".."===m){if(0===k||1===k&&".."===a[2]||".."===a[k-1])continue;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o<c.length;o+=1)if(n=p(c[o],t),"require"===(k=n.f))w[o]=q.require(a);else if("exports"===k)w[o]=q.exports(a),v=!0;else if("module"===k)h=w[o]=q.module(a);else if(e(r,k)||e(s,k)||e(u,k))w[o]=j(k);else{if(!n.p)throw new Error(a+" missing "+k);n.p.load(n.n,g(f,!0),i(k),{}),w[o]=r[k]}m=d?d.apply(r[a],w):void 0,a&&(h&&h.exports!==b&&h.exports!==r[a]?r[a]=h.exports:m===b&&v||(r[a]=m))}else a&&(r[a]=d)},a=c=o=function(a,c,d,e,f){if("string"==typeof a)return q[a]?q[a](c):j(p(a,l(c)).f);if(!a.splice){if(t=a,t.deps&&o(t.deps,t.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?n(b,a,c,d):setTimeout(function(){n(b,a,c,d)},4),o},o.config=function(a){return o(a)},a._defined=r,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(r,a)||e(s,a)||(s[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){"function"==typeof b[d]&&("constructor"!==d&&c.push(d))}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){return Array.prototype.unshift.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;c<d;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;c<a;c++){b+=Math.floor(36*Math.random()).toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return(e!==f||"hidden"!==f&&"visible"!==f)&&("scroll"===e||"scroll"===f||(d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth))},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c.__cache={};var e=0;return c.GetUniqueElementId=function(a){var b=a.getAttribute("data-select2-id");return null==b&&(a.id?(b=a.id,a.setAttribute("data-select2-id",b)):(a.setAttribute("data-select2-id",++e),b=e.toString())),b},c.StoreData=function(a,b,d){var e=c.GetUniqueElementId(a);c.__cache[e]||(c.__cache[e]={}),c.__cache[e][b]=d},c.GetData=function(b,d){var e=c.GetUniqueElementId(b);return d?c.__cache[e]&&null!=c.__cache[e][d]?c.__cache[e][d]:a(b).data(d):c.__cache[e]},c.RemoveData=function(a){var b=c.GetUniqueElementId(a);null!=c.__cache[b]&&delete c.__cache[b]},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){b.find(".select2-results").append(a)},c.prototype.sort=function(a){return this.options.get("sorter")(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var c=this;this.data.current(function(d){var e=a.map(d,function(a){return a.id.toString()});c.$results.find(".select2-results__option[aria-selected]").each(function(){var c=a(this),d=b.GetData(this,"data"),f=""+d.id;null!=d.element&&d.element.selected||null==d.element&&a.inArray(f,e)>-1?c.attr("aria-selected","true"):c.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(c){var d=document.createElement("li");d.className="select2-results__option";var e={role:"treeitem","aria-selected":"false"};c.disabled&&(delete e["aria-selected"],e["aria-disabled"]="true"),null==c.id&&delete e["aria-selected"],null!=c._resultId&&(d.id=c._resultId),c.title&&(d.title=c.title),c.children&&(e.role="group",e["aria-label"]=c.text,delete e["aria-selected"]);for(var f in e){var g=e[f];d.setAttribute(f,g)}if(c.children){var h=a(d),i=document.createElement("strong");i.className="select2-results__group";a(i);this.template(c,i);for(var j=[],k=0;k<c.children.length;k++){var l=c.children[k],m=this.option(l);j.push(m)}var n=a("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});n.append(j),h.append(i),h.append(n)}else this.template(c,d);return b.StoreData(d,"data",c),d},c.prototype.bind=function(c,d){var e=this,f=c.id+"-results";this.$results.attr("id",f),c.on("results:all",function(a){e.clear(),e.append(a.data),c.isOpen()&&(e.setClasses(),e.highlightFirstItem())}),c.on("results:append",function(a){e.append(a.data),c.isOpen()&&e.setClasses()}),c.on("query",function(a){e.hideMessages(),e.showLoading(a)}),c.on("select",function(){c.isOpen()&&(e.setClasses(),e.highlightFirstItem())}),c.on("unselect",function(){c.isOpen()&&(e.setClasses(),e.highlightFirstItem())}),c.on("open",function(){e.$results.attr("aria-expanded","true"),e.$results.attr("aria-hidden","false"),e.setClasses(),e.ensureHighlightVisible()}),c.on("close",function(){e.$results.attr("aria-expanded","false"),e.$results.attr("aria-hidden","true"),e.$results.removeAttr("aria-activedescendant")}),c.on("results:toggle",function(){var a=e.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),c.on("results:select",function(){var a=e.getHighlightedResults();if(0!==a.length){var c=b.GetData(a[0],"data");"true"==a.attr("aria-selected")?e.trigger("close",{}):e.trigger("select",{data:c})}}),c.on("results:previous",function(){var a=e.getHighlightedResults(),b=e.$results.find("[aria-selected]"),c=b.index(a);if(!(c<=0)){var d=c-1;0===a.length&&(d=0);var f=b.eq(d);f.trigger("mouseenter");var g=e.$results.offset().top,h=f.offset().top,i=e.$results.scrollTop()+(h-g);0===d?e.$results.scrollTop(0):h-g<0&&e.$results.scrollTop(i)}}),c.on("results:next",function(){var a=e.getHighlightedResults(),b=e.$results.find("[aria-selected]"),c=b.index(a),d=c+1;if(!(d>=b.length)){var f=b.eq(d);f.trigger("mouseenter");var g=e.$results.offset().top+e.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=e.$results.scrollTop()+h-g;0===d?e.$results.scrollTop(0):h>g&&e.$results.scrollTop(i)}}),c.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),c.on("results:message",function(a){e.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=e.$results.scrollTop(),c=e.$results.get(0).scrollHeight-b+a.deltaY,d=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=e.$results.height();d?(e.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(e.$results.scrollTop(e.$results.get(0).scrollHeight-e.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(c){var d=a(this),f=b.GetData(this,"data");if("true"===d.attr("aria-selected"))return void(e.options.get("multiple")?e.trigger("unselect",{originalEvent:c,data:f}):e.trigger("close",{}));e.trigger("select",{originalEvent:c,data:f})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(c){var d=b.GetData(this,"data");e.getHighlightedResults().removeClass("select2-results__option--highlighted"),e.trigger("results:focus",{data:d,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var c=a('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=b.GetData(this.$element[0],"old-tabindex")?this._tabindex=b.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),c.attr("title",this.$element.attr("title")),c.attr("tabindex",this._tabindex),this.$selection=c,c},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),window.setTimeout(function(){d.$selection.focus()},0),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(c){a(document.body).on("mousedown.select2."+c.id,function(c){var d=a(c.target),e=d.closest(".select2");a(".select2.select2-container--open").each(function(){a(this),this!=e[0]&&b.GetData(this,"element").select2("close")})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()})},e.prototype.clear=function(){var a=this.$selection.find(".select2-selection__rendered");a.empty(),a.removeAttr("title")},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.attr("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,e){var f=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){f.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!f.options.get("disabled")){var d=a(this),e=d.parent(),g=c.GetData(e[0],"data");f.trigger("unselect",{originalEvent:b,data:g})}})},d.prototype.clear=function(){var a=this.$selection.find(".select2-selection__rendered");a.empty(),a.removeAttr("title")},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>')},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.attr("title",e.title||e.text),c.StoreData(f[0],"data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id;if(b.length>1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}),b.define("select2/selection/allowClear",["jquery","../keys","../utils"],function(a,b,c){function d(){}return d.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},d.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var d=this.$selection.find(".select2-selection__clear");if(0!==d.length){b.stopPropagation();var e=c.GetData(d[0],"data"),f=this.$element.val();this.$element.val(this.placeholder.id);var g={data:e};if(this.trigger("clear",g),g.prevented)return void this.$element.val(f);for(var h=0;h<e.length;h++)if(g={data:e[h]},this.trigger("unselect",g),g.prevented)return void this.$element.val(f);this.$element.trigger("change"),this.trigger("toggle",{})}}},d.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||c.which!=b.DELETE&&c.which!=b.BACKSPACE||this._handleClear(c)},d.prototype.update=function(b,d){if(b.call(this,d),!(this.$selection.find(".select2-selection__placeholder").length>0||0===d.length)){var e=a('<span class="select2-selection__clear">&times;</span>');c.StoreData(e[0],"data",d),this.$selection.find(".select2-selection__rendered").prepend(e)}},d}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,d,e){var f=this;a.call(this,d,e),d.on("open",function(){f.$search.trigger("focus")}),d.on("close",function(){f.$search.val(""),f.$search.removeAttr("aria-activedescendant"),f.$search.trigger("focus")}),d.on("enable",function(){f.$search.prop("disabled",!1),f._transferTabIndex()}),d.on("disable",function(){f.$search.prop("disabled",!0)}),d.on("focus",function(a){f.$search.trigger("focus")}),d.on("results:focus",function(a){f.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){f.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){f._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),f.trigger("keypress",a),f._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===f.$search.val()){var d=f.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var e=b.GetData(d[0],"data");f.searchRemoveChoice(e),a.preventDefault()}}});var g=document.documentMode,h=g&&g<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(h)return void f.$selection.off("input.search input.searchcheck");f.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(h&&"input"===a.type)return void f.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&f.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;if(this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c){this.$element.find("[data-select2-tag]").length?this.$element.focus():this.$search.focus()}},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],g=["opening","closing","selecting","unselecting","clearing"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","Ａ":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","Ｂ":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","Ｃ":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","Ｄ":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","Ǳ":"DZ","Ǆ":"DZ","ǲ":"Dz","ǅ":"Dz","Ⓔ":"E","Ｅ":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","Ｆ":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","Ｇ":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","Ｈ":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","Ｉ":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","Ｊ":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","Ｋ":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","Ｌ":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","Ǉ":"LJ","ǈ":"Lj","Ⓜ":"M","Ｍ":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","Ｎ":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","Ǌ":"NJ","ǋ":"Nj","Ⓞ":"O","Ｏ":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","Ｐ":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Ｑ":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","Ｒ":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","Ｓ":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","Ｔ":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","Ｕ":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","Ｖ":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","Ｗ":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","Ｘ":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Ｙ":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Ｚ":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","ａ":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","ｂ":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","ｃ":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","ｄ":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","ǳ":"dz","ǆ":"dz","ⓔ":"e","ｅ":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","ｆ":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","ｇ":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","ｈ":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","ｉ":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","ｊ":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","ｋ":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","ｌ":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","ǉ":"lj","ⓜ":"m","ｍ":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","ｎ":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ŉ":"n","ꞑ":"n","ꞥ":"n","ǌ":"nj","ⓞ":"o","ｏ":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","ｐ":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","ｑ":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","ｒ":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","ｓ":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","ｔ":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","ｕ":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","ｖ":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","ｗ":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","ｘ":"x","ẋ":"x","ẍ":"x","ⓨ":"y","ｙ":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","ｚ":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple")){if(a.selected=!1,c(a.element).is("option"))return a.element.selected=!1,void this.$element.trigger("change");this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})}},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){b.RemoveData(this)})},d.prototype.query=function(a,b){var d=[],e=this;this.$element.children().each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var d;a.children?(d=document.createElement("optgroup"),d.label=a.text):(d=document.createElement("option"),void 0!==d.textContent?d.textContent=a.text:d.innerText=a.text),void 0!==a.id&&(d.value=a.id),a.disabled&&(d.disabled=!0),a.selected&&(d.selected=!0),a.title&&(d.title=a.title);var e=c(d),f=this._normalizeItem(a);return f.element=d,b.StoreData(d,"data",f),e},d.prototype.item=function(a){var d={};if(null!=(d=b.GetData(a[0],"data")))return d;if(a.is("option"))d={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){d={text:a.prop("label"),children:[],title:a.prop("title")};for(var e=a.children("option"),f=[],g=0;g<e.length;g++){var h=c(e[g]),i=this.item(h);f.push(i)}d.children=f}return d=this._normalizeItem(d),d.element=a[0],b.StoreData(a[0],"data",d),d},d.prototype._normalizeItem=function(a){a!==Object(a)&&(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){return this.options.get("matcher")(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){"status"in d&&(0===d.status||"0"===d.status)||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0);if((i.text||"").toUpperCase()===(b.term||"").toUpperCase()||j)return!f&&(a.data=g,void c(a))}if(f)return!0;var k=e.createTag(b);if(null!=k){var l=e.option(k);l.attr("data-select2-tag",!0),e.addOptions([l]),e.insertTag(g,k)}a.results=g,c(a)}var e=this;if(this._removeOldTags(),null==b.term||null!=b.page)return void a.call(this,b,c);a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){this._lastTag;this.$element.find("option[data-select2-tag]").each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b);if(!g.$element.find("option").filter(function(){return a(this).val()===c.id}).length){var d=g.option(c);d.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([d])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",b.term.length<this.minimumInputLength)return void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val(""),e.$search.blur()}),c.on("focus",function(){c.isOpen()||e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){b.StoreData(this,"select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(c){var d=b.GetData(this,"select2-scroll-position");a(this).scrollTop(d.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return!(a(c.data.results)<this.minimumResultsForSearch)&&b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",["../utils"],function(a){function b(){}return b.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},b.prototype._handleSelectOnClose=function(b,c){if(c&&null!=c.originalSelect2Event){var d=c.originalSelect2Event;if("select"===d._type||"unselect"===d._type)return}var e=this.getHighlightedResults();if(!(e.length<1)){var f=a.GetData(e[0],"data");null!=f.element&&f.element.selected||null==f.element&&f.selected||this.trigger("select",{data:f})}},b}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){return"Please enter "+(a.minimum-a.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}return D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(a){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(a){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var O=k.loadPath(this.defaults.amdLanguageBase+"en"),P=new k(l.language);P.extend(O),l.translations=P}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(!0,this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),d.GetData(a[0],"select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),d.StoreData(a[0],"data",d.GetData(a[0],"select2Tags")),d.StoreData(a[0],"tags",!0)),d.GetData(a[0],"ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",d.GetData(a[0],"ajaxUrl")),d.StoreData(a[0],"ajax-Url",d.GetData(a[0],"ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,d.GetData(a[0])):d.GetData(a[0]);var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,d){null!=c.GetData(a[0],"select2")&&c.GetData(a[0],"select2").destroy(),this.$element=a,this.id=this._generateId(a),d=d||{},this.options=new b(d,a),e.__super__.constructor.call(this);var f=a.attr("tabindex")||0;c.StoreData(a[0],"old-tabindex",f),a.attr("tabindex","-1");var g=this.options.get("dataAdapter");this.dataAdapter=new g(a,this.options);var h=this.render();this._placeContainer(h);var i=this.options.get("selectionAdapter");this.selection=new i(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,h);var j=this.options.get("dropdownAdapter");this.dropdown=new j(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,h);var k=this.options.get("resultsAdapter");this.results=new k(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var l=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){l.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),c.StoreData(a[0],"select2",this),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h<i;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",c.GetData(this.$element[0],"old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),c.RemoveData(this.$element[0]),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),c.StoreData(b[0],"element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(f=d(this))&&g.push(f)})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;if(this._isInitialized)return void b.call(this,c);this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery","../utils"],function(a,b){function c(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),a.call(this,b,c)}return c.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},c.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},c.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},c.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},c.prototype.addOptions=function(c,d){var e=a.map(d,function(a){return b.GetData(a[0],"data")});this._currentData.push.apply(this._currentData,e)},c}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f];b(c.term,g.text,g)||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c,this.options.get("query").call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){c.find(".dropdown-wrapper").append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||n<f)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120==0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(a,b,c,d,e){if(null==a.fn.select2){var f=["open","close","destroy"];a.fn.select2=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,g=Array.prototype.slice.call(arguments,1);return this.each(function(){var a=e.GetData(this,"select2");null==a&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=a[b].apply(a,g)}),a.inArray(b,f)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
Index: public/vendors/select2/js/select2.js
===================================================================
--- public/vendors/select2/js/select2.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/select2.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5847 @@
+/*!
+ * Select2 4.0.6-rc.1
+ * https://select2.github.io
+ *
+ * Released under the MIT license
+ * https://github.com/select2/select2/blob/master/LICENSE.md
+ */
+;(function (factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD. Register as an anonymous module.
+    define(['jquery'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // Node/CommonJS
+    module.exports = function (root, jQuery) {
+      if (jQuery === undefined) {
+        // require('jQuery') returns a factory that requires window to
+        // build a jQuery instance, we normalize how we use modules
+        // that require this pattern but the window provided is a noop
+        // if it's defined (how jquery works)
+        if (typeof window !== 'undefined') {
+          jQuery = require('jquery');
+        }
+        else {
+          jQuery = require('jquery')(root);
+        }
+      }
+      factory(jQuery);
+      return jQuery;
+    };
+  } else {
+    // Browser globals
+    factory(jQuery);
+  }
+} (function (jQuery) {
+  // This is needed so we can catch the AMD loader configuration and use it
+  // The inner file should be wrapped (by `banner.start.js`) in a function that
+  // returns the AMD loader references.
+  var S2 =(function () {
+  // Restore the Select2 AMD loader so it can be used
+  // Needed mostly in the language files, where the loader is not inserted
+  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
+    var S2 = jQuery.fn.select2.amd;
+  }
+var S2;(function () { if (!S2 || !S2.requirejs) {
+if (!S2) { S2 = {}; } else { require = S2; }
+/**
+ * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.
+ * Released under MIT license, http://github.com/requirejs/almond/LICENSE
+ */
+//Going sloppy to avoid 'use strict' string cost, but strict practices should
+//be followed.
+/*global setTimeout: false */
+
+var requirejs, require, define;
+(function (undef) {
+    var main, req, makeMap, handlers,
+        defined = {},
+        waiting = {},
+        config = {},
+        defining = {},
+        hasOwn = Object.prototype.hasOwnProperty,
+        aps = [].slice,
+        jsSuffixRegExp = /\.js$/;
+
+    function hasProp(obj, prop) {
+        return hasOwn.call(obj, prop);
+    }
+
+    /**
+     * Given a relative module name, like ./something, normalize it to
+     * a real name that can be mapped to a path.
+     * @param {String} name the relative name
+     * @param {String} baseName a real name that the name arg is relative
+     * to.
+     * @returns {String} normalized name
+     */
+    function normalize(name, baseName) {
+        var nameParts, nameSegment, mapValue, foundMap, lastIndex,
+            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,
+            baseParts = baseName && baseName.split("/"),
+            map = config.map,
+            starMap = (map && map['*']) || {};
+
+        //Adjust any relative paths.
+        if (name) {
+            name = name.split('/');
+            lastIndex = name.length - 1;
+
+            // If wanting node ID compatibility, strip .js from end
+            // of IDs. Have to do this here, and not in nameToUrl
+            // because node allows either .js or non .js to map
+            // to same file.
+            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
+                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
+            }
+
+            // Starts with a '.' so need the baseName
+            if (name[0].charAt(0) === '.' && baseParts) {
+                //Convert baseName to array, and lop off the last part,
+                //so that . matches that 'directory' and not name of the baseName's
+                //module. For instance, baseName of 'one/two/three', maps to
+                //'one/two/three.js', but we want the directory, 'one/two' for
+                //this normalization.
+                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);
+                name = normalizedBaseParts.concat(name);
+            }
+
+            //start trimDots
+            for (i = 0; i < name.length; i++) {
+                part = name[i];
+                if (part === '.') {
+                    name.splice(i, 1);
+                    i -= 1;
+                } else if (part === '..') {
+                    // If at the start, or previous value is still ..,
+                    // keep them so that when converted to a path it may
+                    // still work when converted to a path, even though
+                    // as an ID it is less than ideal. In larger point
+                    // releases, may be better to just kick out an error.
+                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {
+                        continue;
+                    } else if (i > 0) {
+                        name.splice(i - 1, 2);
+                        i -= 2;
+                    }
+                }
+            }
+            //end trimDots
+
+            name = name.join('/');
+        }
+
+        //Apply map config if available.
+        if ((baseParts || starMap) && map) {
+            nameParts = name.split('/');
+
+            for (i = nameParts.length; i > 0; i -= 1) {
+                nameSegment = nameParts.slice(0, i).join("/");
+
+                if (baseParts) {
+                    //Find the longest baseName segment match in the config.
+                    //So, do joins on the biggest to smallest lengths of baseParts.
+                    for (j = baseParts.length; j > 0; j -= 1) {
+                        mapValue = map[baseParts.slice(0, j).join('/')];
+
+                        //baseName segment has  config, find if it has one for
+                        //this name.
+                        if (mapValue) {
+                            mapValue = mapValue[nameSegment];
+                            if (mapValue) {
+                                //Match, update name to the new value.
+                                foundMap = mapValue;
+                                foundI = i;
+                                break;
+                            }
+                        }
+                    }
+                }
+
+                if (foundMap) {
+                    break;
+                }
+
+                //Check for a star map match, but just hold on to it,
+                //if there is a shorter segment match later in a matching
+                //config, then favor over this star map.
+                if (!foundStarMap && starMap && starMap[nameSegment]) {
+                    foundStarMap = starMap[nameSegment];
+                    starI = i;
+                }
+            }
+
+            if (!foundMap && foundStarMap) {
+                foundMap = foundStarMap;
+                foundI = starI;
+            }
+
+            if (foundMap) {
+                nameParts.splice(0, foundI, foundMap);
+                name = nameParts.join('/');
+            }
+        }
+
+        return name;
+    }
+
+    function makeRequire(relName, forceSync) {
+        return function () {
+            //A version of a require function that passes a moduleName
+            //value for items that may need to
+            //look up paths relative to the moduleName
+            var args = aps.call(arguments, 0);
+
+            //If first arg is not require('string'), and there is only
+            //one arg, it is the array form without a callback. Insert
+            //a null so that the following concat is correct.
+            if (typeof args[0] !== 'string' && args.length === 1) {
+                args.push(null);
+            }
+            return req.apply(undef, args.concat([relName, forceSync]));
+        };
+    }
+
+    function makeNormalize(relName) {
+        return function (name) {
+            return normalize(name, relName);
+        };
+    }
+
+    function makeLoad(depName) {
+        return function (value) {
+            defined[depName] = value;
+        };
+    }
+
+    function callDep(name) {
+        if (hasProp(waiting, name)) {
+            var args = waiting[name];
+            delete waiting[name];
+            defining[name] = true;
+            main.apply(undef, args);
+        }
+
+        if (!hasProp(defined, name) && !hasProp(defining, name)) {
+            throw new Error('No ' + name);
+        }
+        return defined[name];
+    }
+
+    //Turns a plugin!resource to [plugin, resource]
+    //with the plugin being undefined if the name
+    //did not have a plugin prefix.
+    function splitPrefix(name) {
+        var prefix,
+            index = name ? name.indexOf('!') : -1;
+        if (index > -1) {
+            prefix = name.substring(0, index);
+            name = name.substring(index + 1, name.length);
+        }
+        return [prefix, name];
+    }
+
+    //Creates a parts array for a relName where first part is plugin ID,
+    //second part is resource ID. Assumes relName has already been normalized.
+    function makeRelParts(relName) {
+        return relName ? splitPrefix(relName) : [];
+    }
+
+    /**
+     * Makes a name map, normalizing the name, and using a plugin
+     * for normalization if necessary. Grabs a ref to plugin
+     * too, as an optimization.
+     */
+    makeMap = function (name, relParts) {
+        var plugin,
+            parts = splitPrefix(name),
+            prefix = parts[0],
+            relResourceName = relParts[1];
+
+        name = parts[1];
+
+        if (prefix) {
+            prefix = normalize(prefix, relResourceName);
+            plugin = callDep(prefix);
+        }
+
+        //Normalize according
+        if (prefix) {
+            if (plugin && plugin.normalize) {
+                name = plugin.normalize(name, makeNormalize(relResourceName));
+            } else {
+                name = normalize(name, relResourceName);
+            }
+        } else {
+            name = normalize(name, relResourceName);
+            parts = splitPrefix(name);
+            prefix = parts[0];
+            name = parts[1];
+            if (prefix) {
+                plugin = callDep(prefix);
+            }
+        }
+
+        //Using ridiculous property names for space reasons
+        return {
+            f: prefix ? prefix + '!' + name : name, //fullName
+            n: name,
+            pr: prefix,
+            p: plugin
+        };
+    };
+
+    function makeConfig(name) {
+        return function () {
+            return (config && config.config && config.config[name]) || {};
+        };
+    }
+
+    handlers = {
+        require: function (name) {
+            return makeRequire(name);
+        },
+        exports: function (name) {
+            var e = defined[name];
+            if (typeof e !== 'undefined') {
+                return e;
+            } else {
+                return (defined[name] = {});
+            }
+        },
+        module: function (name) {
+            return {
+                id: name,
+                uri: '',
+                exports: defined[name],
+                config: makeConfig(name)
+            };
+        }
+    };
+
+    main = function (name, deps, callback, relName) {
+        var cjsModule, depName, ret, map, i, relParts,
+            args = [],
+            callbackType = typeof callback,
+            usingExports;
+
+        //Use name if no relName
+        relName = relName || name;
+        relParts = makeRelParts(relName);
+
+        //Call the callback to define the module, if necessary.
+        if (callbackType === 'undefined' || callbackType === 'function') {
+            //Pull out the defined dependencies and pass the ordered
+            //values to the callback.
+            //Default to [require, exports, module] if no deps
+            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
+            for (i = 0; i < deps.length; i += 1) {
+                map = makeMap(deps[i], relParts);
+                depName = map.f;
+
+                //Fast path CommonJS standard dependencies.
+                if (depName === "require") {
+                    args[i] = handlers.require(name);
+                } else if (depName === "exports") {
+                    //CommonJS module spec 1.1
+                    args[i] = handlers.exports(name);
+                    usingExports = true;
+                } else if (depName === "module") {
+                    //CommonJS module spec 1.1
+                    cjsModule = args[i] = handlers.module(name);
+                } else if (hasProp(defined, depName) ||
+                           hasProp(waiting, depName) ||
+                           hasProp(defining, depName)) {
+                    args[i] = callDep(depName);
+                } else if (map.p) {
+                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
+                    args[i] = defined[depName];
+                } else {
+                    throw new Error(name + ' missing ' + depName);
+                }
+            }
+
+            ret = callback ? callback.apply(defined[name], args) : undefined;
+
+            if (name) {
+                //If setting exports via "module" is in play,
+                //favor that over return value and exports. After that,
+                //favor a non-undefined return value over exports use.
+                if (cjsModule && cjsModule.exports !== undef &&
+                        cjsModule.exports !== defined[name]) {
+                    defined[name] = cjsModule.exports;
+                } else if (ret !== undef || !usingExports) {
+                    //Use the return value from the function.
+                    defined[name] = ret;
+                }
+            }
+        } else if (name) {
+            //May just be an object definition for the module. Only
+            //worry about defining if have a module name.
+            defined[name] = callback;
+        }
+    };
+
+    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
+        if (typeof deps === "string") {
+            if (handlers[deps]) {
+                //callback in this case is really relName
+                return handlers[deps](callback);
+            }
+            //Just return the module wanted. In this scenario, the
+            //deps arg is the module name, and second arg (if passed)
+            //is just the relName.
+            //Normalize module name, if it contains . or ..
+            return callDep(makeMap(deps, makeRelParts(callback)).f);
+        } else if (!deps.splice) {
+            //deps is a config object, not an array.
+            config = deps;
+            if (config.deps) {
+                req(config.deps, config.callback);
+            }
+            if (!callback) {
+                return;
+            }
+
+            if (callback.splice) {
+                //callback is an array, which means it is a dependency list.
+                //Adjust args if there are dependencies
+                deps = callback;
+                callback = relName;
+                relName = null;
+            } else {
+                deps = undef;
+            }
+        }
+
+        //Support require(['a'])
+        callback = callback || function () {};
+
+        //If relName is a function, it is an errback handler,
+        //so remove it.
+        if (typeof relName === 'function') {
+            relName = forceSync;
+            forceSync = alt;
+        }
+
+        //Simulate async callback;
+        if (forceSync) {
+            main(undef, deps, callback, relName);
+        } else {
+            //Using a non-zero value because of concern for what old browsers
+            //do, and latest browsers "upgrade" to 4 if lower value is used:
+            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
+            //If want a value immediately, use require('id') instead -- something
+            //that works in almond on the global level, but not guaranteed and
+            //unlikely to work in other AMD implementations.
+            setTimeout(function () {
+                main(undef, deps, callback, relName);
+            }, 4);
+        }
+
+        return req;
+    };
+
+    /**
+     * Just drops the config on the floor, but returns req in case
+     * the config return value is used.
+     */
+    req.config = function (cfg) {
+        return req(cfg);
+    };
+
+    /**
+     * Expose module registry for debugging and tooling
+     */
+    requirejs._defined = defined;
+
+    define = function (name, deps, callback) {
+        if (typeof name !== 'string') {
+            throw new Error('See almond README: incorrect module build, no module name');
+        }
+
+        //This module may not have dependencies
+        if (!deps.splice) {
+            //deps is not an array, so probably means
+            //an object literal or factory function for
+            //the value. Adjust args.
+            callback = deps;
+            deps = [];
+        }
+
+        if (!hasProp(defined, name) && !hasProp(waiting, name)) {
+            waiting[name] = [name, deps, callback];
+        }
+    };
+
+    define.amd = {
+        jQuery: true
+    };
+}());
+
+S2.requirejs = requirejs;S2.require = require;S2.define = define;
+}
+}());
+S2.define("almond", function(){});
+
+/* global jQuery:false, $:false */
+S2.define('jquery',[],function () {
+  var _$ = jQuery || $;
+
+  if (_$ == null && console && console.error) {
+    console.error(
+      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +
+      'found. Make sure that you are including jQuery before Select2 on your ' +
+      'web page.'
+    );
+  }
+
+  return _$;
+});
+
+S2.define('select2/utils',[
+  'jquery'
+], function ($) {
+  var Utils = {};
+
+  Utils.Extend = function (ChildClass, SuperClass) {
+    var __hasProp = {}.hasOwnProperty;
+
+    function BaseConstructor () {
+      this.constructor = ChildClass;
+    }
+
+    for (var key in SuperClass) {
+      if (__hasProp.call(SuperClass, key)) {
+        ChildClass[key] = SuperClass[key];
+      }
+    }
+
+    BaseConstructor.prototype = SuperClass.prototype;
+    ChildClass.prototype = new BaseConstructor();
+    ChildClass.__super__ = SuperClass.prototype;
+
+    return ChildClass;
+  };
+
+  function getMethods (theClass) {
+    var proto = theClass.prototype;
+
+    var methods = [];
+
+    for (var methodName in proto) {
+      var m = proto[methodName];
+
+      if (typeof m !== 'function') {
+        continue;
+      }
+
+      if (methodName === 'constructor') {
+        continue;
+      }
+
+      methods.push(methodName);
+    }
+
+    return methods;
+  }
+
+  Utils.Decorate = function (SuperClass, DecoratorClass) {
+    var decoratedMethods = getMethods(DecoratorClass);
+    var superMethods = getMethods(SuperClass);
+
+    function DecoratedClass () {
+      var unshift = Array.prototype.unshift;
+
+      var argCount = DecoratorClass.prototype.constructor.length;
+
+      var calledConstructor = SuperClass.prototype.constructor;
+
+      if (argCount > 0) {
+        unshift.call(arguments, SuperClass.prototype.constructor);
+
+        calledConstructor = DecoratorClass.prototype.constructor;
+      }
+
+      calledConstructor.apply(this, arguments);
+    }
+
+    DecoratorClass.displayName = SuperClass.displayName;
+
+    function ctr () {
+      this.constructor = DecoratedClass;
+    }
+
+    DecoratedClass.prototype = new ctr();
+
+    for (var m = 0; m < superMethods.length; m++) {
+      var superMethod = superMethods[m];
+
+      DecoratedClass.prototype[superMethod] =
+        SuperClass.prototype[superMethod];
+    }
+
+    var calledMethod = function (methodName) {
+      // Stub out the original method if it's not decorating an actual method
+      var originalMethod = function () {};
+
+      if (methodName in DecoratedClass.prototype) {
+        originalMethod = DecoratedClass.prototype[methodName];
+      }
+
+      var decoratedMethod = DecoratorClass.prototype[methodName];
+
+      return function () {
+        var unshift = Array.prototype.unshift;
+
+        unshift.call(arguments, originalMethod);
+
+        return decoratedMethod.apply(this, arguments);
+      };
+    };
+
+    for (var d = 0; d < decoratedMethods.length; d++) {
+      var decoratedMethod = decoratedMethods[d];
+
+      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);
+    }
+
+    return DecoratedClass;
+  };
+
+  var Observable = function () {
+    this.listeners = {};
+  };
+
+  Observable.prototype.on = function (event, callback) {
+    this.listeners = this.listeners || {};
+
+    if (event in this.listeners) {
+      this.listeners[event].push(callback);
+    } else {
+      this.listeners[event] = [callback];
+    }
+  };
+
+  Observable.prototype.trigger = function (event) {
+    var slice = Array.prototype.slice;
+    var params = slice.call(arguments, 1);
+
+    this.listeners = this.listeners || {};
+
+    // Params should always come in as an array
+    if (params == null) {
+      params = [];
+    }
+
+    // If there are no arguments to the event, use a temporary object
+    if (params.length === 0) {
+      params.push({});
+    }
+
+    // Set the `_type` of the first object to the event
+    params[0]._type = event;
+
+    if (event in this.listeners) {
+      this.invoke(this.listeners[event], slice.call(arguments, 1));
+    }
+
+    if ('*' in this.listeners) {
+      this.invoke(this.listeners['*'], arguments);
+    }
+  };
+
+  Observable.prototype.invoke = function (listeners, params) {
+    for (var i = 0, len = listeners.length; i < len; i++) {
+      listeners[i].apply(this, params);
+    }
+  };
+
+  Utils.Observable = Observable;
+
+  Utils.generateChars = function (length) {
+    var chars = '';
+
+    for (var i = 0; i < length; i++) {
+      var randomChar = Math.floor(Math.random() * 36);
+      chars += randomChar.toString(36);
+    }
+
+    return chars;
+  };
+
+  Utils.bind = function (func, context) {
+    return function () {
+      func.apply(context, arguments);
+    };
+  };
+
+  Utils._convertData = function (data) {
+    for (var originalKey in data) {
+      var keys = originalKey.split('-');
+
+      var dataLevel = data;
+
+      if (keys.length === 1) {
+        continue;
+      }
+
+      for (var k = 0; k < keys.length; k++) {
+        var key = keys[k];
+
+        // Lowercase the first letter
+        // By default, dash-separated becomes camelCase
+        key = key.substring(0, 1).toLowerCase() + key.substring(1);
+
+        if (!(key in dataLevel)) {
+          dataLevel[key] = {};
+        }
+
+        if (k == keys.length - 1) {
+          dataLevel[key] = data[originalKey];
+        }
+
+        dataLevel = dataLevel[key];
+      }
+
+      delete data[originalKey];
+    }
+
+    return data;
+  };
+
+  Utils.hasScroll = function (index, el) {
+    // Adapted from the function created by @ShadowScripter
+    // and adapted by @BillBarry on the Stack Exchange Code Review website.
+    // The original code can be found at
+    // http://codereview.stackexchange.com/q/13338
+    // and was designed to be used with the Sizzle selector engine.
+
+    var $el = $(el);
+    var overflowX = el.style.overflowX;
+    var overflowY = el.style.overflowY;
+
+    //Check both x and y declarations
+    if (overflowX === overflowY &&
+        (overflowY === 'hidden' || overflowY === 'visible')) {
+      return false;
+    }
+
+    if (overflowX === 'scroll' || overflowY === 'scroll') {
+      return true;
+    }
+
+    return ($el.innerHeight() < el.scrollHeight ||
+      $el.innerWidth() < el.scrollWidth);
+  };
+
+  Utils.escapeMarkup = function (markup) {
+    var replaceMap = {
+      '\\': '&#92;',
+      '&': '&amp;',
+      '<': '&lt;',
+      '>': '&gt;',
+      '"': '&quot;',
+      '\'': '&#39;',
+      '/': '&#47;'
+    };
+
+    // Do not try to escape the markup if it's not a string
+    if (typeof markup !== 'string') {
+      return markup;
+    }
+
+    return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
+      return replaceMap[match];
+    });
+  };
+
+  // Append an array of jQuery nodes to a given element.
+  Utils.appendMany = function ($element, $nodes) {
+    // jQuery 1.7.x does not support $.fn.append() with an array
+    // Fall back to a jQuery object collection using $.fn.add()
+    if ($.fn.jquery.substr(0, 3) === '1.7') {
+      var $jqNodes = $();
+
+      $.map($nodes, function (node) {
+        $jqNodes = $jqNodes.add(node);
+      });
+
+      $nodes = $jqNodes;
+    }
+
+    $element.append($nodes);
+  };
+
+  // Cache objects in Utils.__cache instead of $.data (see #4346)
+  Utils.__cache = {};
+
+  var id = 0;
+  Utils.GetUniqueElementId = function (element) {
+    // Get a unique element Id. If element has no id, 
+    // creates a new unique number, stores it in the id 
+    // attribute and returns the new id. 
+    // If an id already exists, it simply returns it.
+
+    var select2Id = element.getAttribute('data-select2-id');
+    if (select2Id == null) {
+      // If element has id, use it.
+      if (element.id) {
+        select2Id = element.id;
+        element.setAttribute('data-select2-id', select2Id);
+      } else {
+        element.setAttribute('data-select2-id', ++id);
+        select2Id = id.toString();
+      }
+    }
+    return select2Id;
+  };
+
+  Utils.StoreData = function (element, name, value) {
+    // Stores an item in the cache for a specified element.
+    // name is the cache key.    
+    var id = Utils.GetUniqueElementId(element);
+    if (!Utils.__cache[id]) {
+      Utils.__cache[id] = {};
+    }
+
+    Utils.__cache[id][name] = value;
+  };
+
+  Utils.GetData = function (element, name) {
+    // Retrieves a value from the cache by its key (name)
+    // name is optional. If no name specified, return 
+    // all cache items for the specified element.
+    // and for a specified element.
+    var id = Utils.GetUniqueElementId(element);
+    if (name) {
+      if (Utils.__cache[id]) {
+        return Utils.__cache[id][name] != null ? 
+	      Utils.__cache[id][name]:
+	      $(element).data(name); // Fallback to HTML5 data attribs.
+      }
+      return $(element).data(name); // Fallback to HTML5 data attribs.
+    } else {
+      return Utils.__cache[id];			   
+    }
+  };
+
+  Utils.RemoveData = function (element) {
+    // Removes all cached items for a specified element.
+    var id = Utils.GetUniqueElementId(element);
+    if (Utils.__cache[id] != null) {
+      delete Utils.__cache[id];
+    }
+  };
+
+  return Utils;
+});
+
+S2.define('select2/results',[
+  'jquery',
+  './utils'
+], function ($, Utils) {
+  function Results ($element, options, dataAdapter) {
+    this.$element = $element;
+    this.data = dataAdapter;
+    this.options = options;
+
+    Results.__super__.constructor.call(this);
+  }
+
+  Utils.Extend(Results, Utils.Observable);
+
+  Results.prototype.render = function () {
+    var $results = $(
+      '<ul class="select2-results__options" role="tree"></ul>'
+    );
+
+    if (this.options.get('multiple')) {
+      $results.attr('aria-multiselectable', 'true');
+    }
+
+    this.$results = $results;
+
+    return $results;
+  };
+
+  Results.prototype.clear = function () {
+    this.$results.empty();
+  };
+
+  Results.prototype.displayMessage = function (params) {
+    var escapeMarkup = this.options.get('escapeMarkup');
+
+    this.clear();
+    this.hideLoading();
+
+    var $message = $(
+      '<li role="treeitem" aria-live="assertive"' +
+      ' class="select2-results__option"></li>'
+    );
+
+    var message = this.options.get('translations').get(params.message);
+
+    $message.append(
+      escapeMarkup(
+        message(params.args)
+      )
+    );
+
+    $message[0].className += ' select2-results__message';
+
+    this.$results.append($message);
+  };
+
+  Results.prototype.hideMessages = function () {
+    this.$results.find('.select2-results__message').remove();
+  };
+
+  Results.prototype.append = function (data) {
+    this.hideLoading();
+
+    var $options = [];
+
+    if (data.results == null || data.results.length === 0) {
+      if (this.$results.children().length === 0) {
+        this.trigger('results:message', {
+          message: 'noResults'
+        });
+      }
+
+      return;
+    }
+
+    data.results = this.sort(data.results);
+
+    for (var d = 0; d < data.results.length; d++) {
+      var item = data.results[d];
+
+      var $option = this.option(item);
+
+      $options.push($option);
+    }
+
+    this.$results.append($options);
+  };
+
+  Results.prototype.position = function ($results, $dropdown) {
+    var $resultsContainer = $dropdown.find('.select2-results');
+    $resultsContainer.append($results);
+  };
+
+  Results.prototype.sort = function (data) {
+    var sorter = this.options.get('sorter');
+
+    return sorter(data);
+  };
+
+  Results.prototype.highlightFirstItem = function () {
+    var $options = this.$results
+      .find('.select2-results__option[aria-selected]');
+
+    var $selected = $options.filter('[aria-selected=true]');
+
+    // Check if there are any selected options
+    if ($selected.length > 0) {
+      // If there are selected options, highlight the first
+      $selected.first().trigger('mouseenter');
+    } else {
+      // If there are no selected options, highlight the first option
+      // in the dropdown
+      $options.first().trigger('mouseenter');
+    }
+
+    this.ensureHighlightVisible();
+  };
+
+  Results.prototype.setClasses = function () {
+    var self = this;
+
+    this.data.current(function (selected) {
+      var selectedIds = $.map(selected, function (s) {
+        return s.id.toString();
+      });
+
+      var $options = self.$results
+        .find('.select2-results__option[aria-selected]');
+
+      $options.each(function () {
+        var $option = $(this);
+
+        var item = Utils.GetData(this, 'data');
+
+        // id needs to be converted to a string when comparing
+        var id = '' + item.id;
+
+        if ((item.element != null && item.element.selected) ||
+            (item.element == null && $.inArray(id, selectedIds) > -1)) {
+          $option.attr('aria-selected', 'true');
+        } else {
+          $option.attr('aria-selected', 'false');
+        }
+      });
+
+    });
+  };
+
+  Results.prototype.showLoading = function (params) {
+    this.hideLoading();
+
+    var loadingMore = this.options.get('translations').get('searching');
+
+    var loading = {
+      disabled: true,
+      loading: true,
+      text: loadingMore(params)
+    };
+    var $loading = this.option(loading);
+    $loading.className += ' loading-results';
+
+    this.$results.prepend($loading);
+  };
+
+  Results.prototype.hideLoading = function () {
+    this.$results.find('.loading-results').remove();
+  };
+
+  Results.prototype.option = function (data) {
+    var option = document.createElement('li');
+    option.className = 'select2-results__option';
+
+    var attrs = {
+      'role': 'treeitem',
+      'aria-selected': 'false'
+    };
+
+    if (data.disabled) {
+      delete attrs['aria-selected'];
+      attrs['aria-disabled'] = 'true';
+    }
+
+    if (data.id == null) {
+      delete attrs['aria-selected'];
+    }
+
+    if (data._resultId != null) {
+      option.id = data._resultId;
+    }
+
+    if (data.title) {
+      option.title = data.title;
+    }
+
+    if (data.children) {
+      attrs.role = 'group';
+      attrs['aria-label'] = data.text;
+      delete attrs['aria-selected'];
+    }
+
+    for (var attr in attrs) {
+      var val = attrs[attr];
+
+      option.setAttribute(attr, val);
+    }
+
+    if (data.children) {
+      var $option = $(option);
+
+      var label = document.createElement('strong');
+      label.className = 'select2-results__group';
+
+      var $label = $(label);
+      this.template(data, label);
+
+      var $children = [];
+
+      for (var c = 0; c < data.children.length; c++) {
+        var child = data.children[c];
+
+        var $child = this.option(child);
+
+        $children.push($child);
+      }
+
+      var $childrenContainer = $('<ul></ul>', {
+        'class': 'select2-results__options select2-results__options--nested'
+      });
+
+      $childrenContainer.append($children);
+
+      $option.append(label);
+      $option.append($childrenContainer);
+    } else {
+      this.template(data, option);
+    }
+
+    Utils.StoreData(option, 'data', data);
+
+    return option;
+  };
+
+  Results.prototype.bind = function (container, $container) {
+    var self = this;
+
+    var id = container.id + '-results';
+
+    this.$results.attr('id', id);
+
+    container.on('results:all', function (params) {
+      self.clear();
+      self.append(params.data);
+
+      if (container.isOpen()) {
+        self.setClasses();
+        self.highlightFirstItem();
+      }
+    });
+
+    container.on('results:append', function (params) {
+      self.append(params.data);
+
+      if (container.isOpen()) {
+        self.setClasses();
+      }
+    });
+
+    container.on('query', function (params) {
+      self.hideMessages();
+      self.showLoading(params);
+    });
+
+    container.on('select', function () {
+      if (!container.isOpen()) {
+        return;
+      }
+
+      self.setClasses();
+      self.highlightFirstItem();
+    });
+
+    container.on('unselect', function () {
+      if (!container.isOpen()) {
+        return;
+      }
+
+      self.setClasses();
+      self.highlightFirstItem();
+    });
+
+    container.on('open', function () {
+      // When the dropdown is open, aria-expended="true"
+      self.$results.attr('aria-expanded', 'true');
+      self.$results.attr('aria-hidden', 'false');
+
+      self.setClasses();
+      self.ensureHighlightVisible();
+    });
+
+    container.on('close', function () {
+      // When the dropdown is closed, aria-expended="false"
+      self.$results.attr('aria-expanded', 'false');
+      self.$results.attr('aria-hidden', 'true');
+      self.$results.removeAttr('aria-activedescendant');
+    });
+
+    container.on('results:toggle', function () {
+      var $highlighted = self.getHighlightedResults();
+
+      if ($highlighted.length === 0) {
+        return;
+      }
+
+      $highlighted.trigger('mouseup');
+    });
+
+    container.on('results:select', function () {
+      var $highlighted = self.getHighlightedResults();
+
+      if ($highlighted.length === 0) {
+        return;
+      }
+
+      var data = Utils.GetData($highlighted[0], 'data');
+
+      if ($highlighted.attr('aria-selected') == 'true') {
+        self.trigger('close', {});
+      } else {
+        self.trigger('select', {
+          data: data
+        });
+      }
+    });
+
+    container.on('results:previous', function () {
+      var $highlighted = self.getHighlightedResults();
+
+      var $options = self.$results.find('[aria-selected]');
+
+      var currentIndex = $options.index($highlighted);
+
+      // If we are already at te top, don't move further
+      // If no options, currentIndex will be -1
+      if (currentIndex <= 0) {
+        return;
+      }
+
+      var nextIndex = currentIndex - 1;
+
+      // If none are highlighted, highlight the first
+      if ($highlighted.length === 0) {
+        nextIndex = 0;
+      }
+
+      var $next = $options.eq(nextIndex);
+
+      $next.trigger('mouseenter');
+
+      var currentOffset = self.$results.offset().top;
+      var nextTop = $next.offset().top;
+      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
+
+      if (nextIndex === 0) {
+        self.$results.scrollTop(0);
+      } else if (nextTop - currentOffset < 0) {
+        self.$results.scrollTop(nextOffset);
+      }
+    });
+
+    container.on('results:next', function () {
+      var $highlighted = self.getHighlightedResults();
+
+      var $options = self.$results.find('[aria-selected]');
+
+      var currentIndex = $options.index($highlighted);
+
+      var nextIndex = currentIndex + 1;
+
+      // If we are at the last option, stay there
+      if (nextIndex >= $options.length) {
+        return;
+      }
+
+      var $next = $options.eq(nextIndex);
+
+      $next.trigger('mouseenter');
+
+      var currentOffset = self.$results.offset().top +
+        self.$results.outerHeight(false);
+      var nextBottom = $next.offset().top + $next.outerHeight(false);
+      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
+
+      if (nextIndex === 0) {
+        self.$results.scrollTop(0);
+      } else if (nextBottom > currentOffset) {
+        self.$results.scrollTop(nextOffset);
+      }
+    });
+
+    container.on('results:focus', function (params) {
+      params.element.addClass('select2-results__option--highlighted');
+    });
+
+    container.on('results:message', function (params) {
+      self.displayMessage(params);
+    });
+
+    if ($.fn.mousewheel) {
+      this.$results.on('mousewheel', function (e) {
+        var top = self.$results.scrollTop();
+
+        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;
+
+        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;
+        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();
+
+        if (isAtTop) {
+          self.$results.scrollTop(0);
+
+          e.preventDefault();
+          e.stopPropagation();
+        } else if (isAtBottom) {
+          self.$results.scrollTop(
+            self.$results.get(0).scrollHeight - self.$results.height()
+          );
+
+          e.preventDefault();
+          e.stopPropagation();
+        }
+      });
+    }
+
+    this.$results.on('mouseup', '.select2-results__option[aria-selected]',
+      function (evt) {
+      var $this = $(this);
+
+      var data = Utils.GetData(this, 'data');
+
+      if ($this.attr('aria-selected') === 'true') {
+        if (self.options.get('multiple')) {
+          self.trigger('unselect', {
+            originalEvent: evt,
+            data: data
+          });
+        } else {
+          self.trigger('close', {});
+        }
+
+        return;
+      }
+
+      self.trigger('select', {
+        originalEvent: evt,
+        data: data
+      });
+    });
+
+    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',
+      function (evt) {
+      var data = Utils.GetData(this, 'data');
+
+      self.getHighlightedResults()
+          .removeClass('select2-results__option--highlighted');
+
+      self.trigger('results:focus', {
+        data: data,
+        element: $(this)
+      });
+    });
+  };
+
+  Results.prototype.getHighlightedResults = function () {
+    var $highlighted = this.$results
+    .find('.select2-results__option--highlighted');
+
+    return $highlighted;
+  };
+
+  Results.prototype.destroy = function () {
+    this.$results.remove();
+  };
+
+  Results.prototype.ensureHighlightVisible = function () {
+    var $highlighted = this.getHighlightedResults();
+
+    if ($highlighted.length === 0) {
+      return;
+    }
+
+    var $options = this.$results.find('[aria-selected]');
+
+    var currentIndex = $options.index($highlighted);
+
+    var currentOffset = this.$results.offset().top;
+    var nextTop = $highlighted.offset().top;
+    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);
+
+    var offsetDelta = nextTop - currentOffset;
+    nextOffset -= $highlighted.outerHeight(false) * 2;
+
+    if (currentIndex <= 2) {
+      this.$results.scrollTop(0);
+    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {
+      this.$results.scrollTop(nextOffset);
+    }
+  };
+
+  Results.prototype.template = function (result, container) {
+    var template = this.options.get('templateResult');
+    var escapeMarkup = this.options.get('escapeMarkup');
+
+    var content = template(result, container);
+
+    if (content == null) {
+      container.style.display = 'none';
+    } else if (typeof content === 'string') {
+      container.innerHTML = escapeMarkup(content);
+    } else {
+      $(container).append(content);
+    }
+  };
+
+  return Results;
+});
+
+S2.define('select2/keys',[
+
+], function () {
+  var KEYS = {
+    BACKSPACE: 8,
+    TAB: 9,
+    ENTER: 13,
+    SHIFT: 16,
+    CTRL: 17,
+    ALT: 18,
+    ESC: 27,
+    SPACE: 32,
+    PAGE_UP: 33,
+    PAGE_DOWN: 34,
+    END: 35,
+    HOME: 36,
+    LEFT: 37,
+    UP: 38,
+    RIGHT: 39,
+    DOWN: 40,
+    DELETE: 46
+  };
+
+  return KEYS;
+});
+
+S2.define('select2/selection/base',[
+  'jquery',
+  '../utils',
+  '../keys'
+], function ($, Utils, KEYS) {
+  function BaseSelection ($element, options) {
+    this.$element = $element;
+    this.options = options;
+
+    BaseSelection.__super__.constructor.call(this);
+  }
+
+  Utils.Extend(BaseSelection, Utils.Observable);
+
+  BaseSelection.prototype.render = function () {
+    var $selection = $(
+      '<span class="select2-selection" role="combobox" ' +
+      ' aria-haspopup="true" aria-expanded="false">' +
+      '</span>'
+    );
+
+    this._tabindex = 0;
+
+    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {
+      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');
+    } else if (this.$element.attr('tabindex') != null) {
+      this._tabindex = this.$element.attr('tabindex');
+    }
+
+    $selection.attr('title', this.$element.attr('title'));
+    $selection.attr('tabindex', this._tabindex);
+
+    this.$selection = $selection;
+
+    return $selection;
+  };
+
+  BaseSelection.prototype.bind = function (container, $container) {
+    var self = this;
+
+    var id = container.id + '-container';
+    var resultsId = container.id + '-results';
+
+    this.container = container;
+
+    this.$selection.on('focus', function (evt) {
+      self.trigger('focus', evt);
+    });
+
+    this.$selection.on('blur', function (evt) {
+      self._handleBlur(evt);
+    });
+
+    this.$selection.on('keydown', function (evt) {
+      self.trigger('keypress', evt);
+
+      if (evt.which === KEYS.SPACE) {
+        evt.preventDefault();
+      }
+    });
+
+    container.on('results:focus', function (params) {
+      self.$selection.attr('aria-activedescendant', params.data._resultId);
+    });
+
+    container.on('selection:update', function (params) {
+      self.update(params.data);
+    });
+
+    container.on('open', function () {
+      // When the dropdown is open, aria-expanded="true"
+      self.$selection.attr('aria-expanded', 'true');
+      self.$selection.attr('aria-owns', resultsId);
+
+      self._attachCloseHandler(container);
+    });
+
+    container.on('close', function () {
+      // When the dropdown is closed, aria-expanded="false"
+      self.$selection.attr('aria-expanded', 'false');
+      self.$selection.removeAttr('aria-activedescendant');
+      self.$selection.removeAttr('aria-owns');
+
+      self.$selection.focus();
+      window.setTimeout(function () {
+        self.$selection.focus();
+      }, 0);
+
+      self._detachCloseHandler(container);
+    });
+
+    container.on('enable', function () {
+      self.$selection.attr('tabindex', self._tabindex);
+    });
+
+    container.on('disable', function () {
+      self.$selection.attr('tabindex', '-1');
+    });
+  };
+
+  BaseSelection.prototype._handleBlur = function (evt) {
+    var self = this;
+
+    // This needs to be delayed as the active element is the body when the tab
+    // key is pressed, possibly along with others.
+    window.setTimeout(function () {
+      // Don't trigger `blur` if the focus is still in the selection
+      if (
+        (document.activeElement == self.$selection[0]) ||
+        ($.contains(self.$selection[0], document.activeElement))
+      ) {
+        return;
+      }
+
+      self.trigger('blur', evt);
+    }, 1);
+  };
+
+  BaseSelection.prototype._attachCloseHandler = function (container) {
+    var self = this;
+
+    $(document.body).on('mousedown.select2.' + container.id, function (e) {
+      var $target = $(e.target);
+
+      var $select = $target.closest('.select2');
+
+      var $all = $('.select2.select2-container--open');
+
+      $all.each(function () {
+        var $this = $(this);
+
+        if (this == $select[0]) {
+          return;
+        }
+
+        var $element = Utils.GetData(this, 'element');
+
+        $element.select2('close');
+      });
+    });
+  };
+
+  BaseSelection.prototype._detachCloseHandler = function (container) {
+    $(document.body).off('mousedown.select2.' + container.id);
+  };
+
+  BaseSelection.prototype.position = function ($selection, $container) {
+    var $selectionContainer = $container.find('.selection');
+    $selectionContainer.append($selection);
+  };
+
+  BaseSelection.prototype.destroy = function () {
+    this._detachCloseHandler(this.container);
+  };
+
+  BaseSelection.prototype.update = function (data) {
+    throw new Error('The `update` method must be defined in child classes.');
+  };
+
+  return BaseSelection;
+});
+
+S2.define('select2/selection/single',[
+  'jquery',
+  './base',
+  '../utils',
+  '../keys'
+], function ($, BaseSelection, Utils, KEYS) {
+  function SingleSelection () {
+    SingleSelection.__super__.constructor.apply(this, arguments);
+  }
+
+  Utils.Extend(SingleSelection, BaseSelection);
+
+  SingleSelection.prototype.render = function () {
+    var $selection = SingleSelection.__super__.render.call(this);
+
+    $selection.addClass('select2-selection--single');
+
+    $selection.html(
+      '<span class="select2-selection__rendered"></span>' +
+      '<span class="select2-selection__arrow" role="presentation">' +
+        '<b role="presentation"></b>' +
+      '</span>'
+    );
+
+    return $selection;
+  };
+
+  SingleSelection.prototype.bind = function (container, $container) {
+    var self = this;
+
+    SingleSelection.__super__.bind.apply(this, arguments);
+
+    var id = container.id + '-container';
+
+    this.$selection.find('.select2-selection__rendered')
+      .attr('id', id)
+      .attr('role', 'textbox')
+      .attr('aria-readonly', 'true');
+    this.$selection.attr('aria-labelledby', id);
+
+    this.$selection.on('mousedown', function (evt) {
+      // Only respond to left clicks
+      if (evt.which !== 1) {
+        return;
+      }
+
+      self.trigger('toggle', {
+        originalEvent: evt
+      });
+    });
+
+    this.$selection.on('focus', function (evt) {
+      // User focuses on the container
+    });
+
+    this.$selection.on('blur', function (evt) {
+      // User exits the container
+    });
+
+    container.on('focus', function (evt) {
+      if (!container.isOpen()) {
+        self.$selection.focus();
+      }
+    });
+  };
+
+  SingleSelection.prototype.clear = function () {
+    var $rendered = this.$selection.find('.select2-selection__rendered');
+    $rendered.empty();
+    $rendered.removeAttr('title'); // clear tooltip on empty
+  };
+
+  SingleSelection.prototype.display = function (data, container) {
+    var template = this.options.get('templateSelection');
+    var escapeMarkup = this.options.get('escapeMarkup');
+
+    return escapeMarkup(template(data, container));
+  };
+
+  SingleSelection.prototype.selectionContainer = function () {
+    return $('<span></span>');
+  };
+
+  SingleSelection.prototype.update = function (data) {
+    if (data.length === 0) {
+      this.clear();
+      return;
+    }
+
+    var selection = data[0];
+
+    var $rendered = this.$selection.find('.select2-selection__rendered');
+    var formatted = this.display(selection, $rendered);
+
+    $rendered.empty().append(formatted);
+    $rendered.attr('title', selection.title || selection.text);
+  };
+
+  return SingleSelection;
+});
+
+S2.define('select2/selection/multiple',[
+  'jquery',
+  './base',
+  '../utils'
+], function ($, BaseSelection, Utils) {
+  function MultipleSelection ($element, options) {
+    MultipleSelection.__super__.constructor.apply(this, arguments);
+  }
+
+  Utils.Extend(MultipleSelection, BaseSelection);
+
+  MultipleSelection.prototype.render = function () {
+    var $selection = MultipleSelection.__super__.render.call(this);
+
+    $selection.addClass('select2-selection--multiple');
+
+    $selection.html(
+      '<ul class="select2-selection__rendered"></ul>'
+    );
+
+    return $selection;
+  };
+
+  MultipleSelection.prototype.bind = function (container, $container) {
+    var self = this;
+
+    MultipleSelection.__super__.bind.apply(this, arguments);
+
+    this.$selection.on('click', function (evt) {
+      self.trigger('toggle', {
+        originalEvent: evt
+      });
+    });
+
+    this.$selection.on(
+      'click',
+      '.select2-selection__choice__remove',
+      function (evt) {
+        // Ignore the event if it is disabled
+        if (self.options.get('disabled')) {
+          return;
+        }
+
+        var $remove = $(this);
+        var $selection = $remove.parent();
+
+        var data = Utils.GetData($selection[0], 'data');
+
+        self.trigger('unselect', {
+          originalEvent: evt,
+          data: data
+        });
+      }
+    );
+  };
+
+  MultipleSelection.prototype.clear = function () {
+    var $rendered = this.$selection.find('.select2-selection__rendered');
+    $rendered.empty();
+    $rendered.removeAttr('title');
+  };
+
+  MultipleSelection.prototype.display = function (data, container) {
+    var template = this.options.get('templateSelection');
+    var escapeMarkup = this.options.get('escapeMarkup');
+
+    return escapeMarkup(template(data, container));
+  };
+
+  MultipleSelection.prototype.selectionContainer = function () {
+    var $container = $(
+      '<li class="select2-selection__choice">' +
+        '<span class="select2-selection__choice__remove" role="presentation">' +
+          '&times;' +
+        '</span>' +
+      '</li>'
+    );
+
+    return $container;
+  };
+
+  MultipleSelection.prototype.update = function (data) {
+    this.clear();
+
+    if (data.length === 0) {
+      return;
+    }
+
+    var $selections = [];
+
+    for (var d = 0; d < data.length; d++) {
+      var selection = data[d];
+
+      var $selection = this.selectionContainer();
+      var formatted = this.display(selection, $selection);
+
+      $selection.append(formatted);
+      $selection.attr('title', selection.title || selection.text);
+
+      Utils.StoreData($selection[0], 'data', selection);
+
+      $selections.push($selection);
+    }
+
+    var $rendered = this.$selection.find('.select2-selection__rendered');
+
+    Utils.appendMany($rendered, $selections);
+  };
+
+  return MultipleSelection;
+});
+
+S2.define('select2/selection/placeholder',[
+  '../utils'
+], function (Utils) {
+  function Placeholder (decorated, $element, options) {
+    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
+
+    decorated.call(this, $element, options);
+  }
+
+  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {
+    if (typeof placeholder === 'string') {
+      placeholder = {
+        id: '',
+        text: placeholder
+      };
+    }
+
+    return placeholder;
+  };
+
+  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {
+    var $placeholder = this.selectionContainer();
+
+    $placeholder.html(this.display(placeholder));
+    $placeholder.addClass('select2-selection__placeholder')
+                .removeClass('select2-selection__choice');
+
+    return $placeholder;
+  };
+
+  Placeholder.prototype.update = function (decorated, data) {
+    var singlePlaceholder = (
+      data.length == 1 && data[0].id != this.placeholder.id
+    );
+    var multipleSelections = data.length > 1;
+
+    if (multipleSelections || singlePlaceholder) {
+      return decorated.call(this, data);
+    }
+
+    this.clear();
+
+    var $placeholder = this.createPlaceholder(this.placeholder);
+
+    this.$selection.find('.select2-selection__rendered').append($placeholder);
+  };
+
+  return Placeholder;
+});
+
+S2.define('select2/selection/allowClear',[
+  'jquery',
+  '../keys',
+  '../utils'
+], function ($, KEYS, Utils) {
+  function AllowClear () { }
+
+  AllowClear.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    if (this.placeholder == null) {
+      if (this.options.get('debug') && window.console && console.error) {
+        console.error(
+          'Select2: The `allowClear` option should be used in combination ' +
+          'with the `placeholder` option.'
+        );
+      }
+    }
+
+    this.$selection.on('mousedown', '.select2-selection__clear',
+      function (evt) {
+        self._handleClear(evt);
+    });
+
+    container.on('keypress', function (evt) {
+      self._handleKeyboardClear(evt, container);
+    });
+  };
+
+  AllowClear.prototype._handleClear = function (_, evt) {
+    // Ignore the event if it is disabled
+    if (this.options.get('disabled')) {
+      return;
+    }
+
+    var $clear = this.$selection.find('.select2-selection__clear');
+
+    // Ignore the event if nothing has been selected
+    if ($clear.length === 0) {
+      return;
+    }
+
+    evt.stopPropagation();
+
+    var data = Utils.GetData($clear[0], 'data');
+
+    var previousVal = this.$element.val();
+    this.$element.val(this.placeholder.id);
+
+    var unselectData = {
+      data: data
+    };
+    this.trigger('clear', unselectData);
+    if (unselectData.prevented) {
+      this.$element.val(previousVal);
+      return;
+    }
+
+    for (var d = 0; d < data.length; d++) {
+      unselectData = {
+        data: data[d]
+      };
+
+      // Trigger the `unselect` event, so people can prevent it from being
+      // cleared.
+      this.trigger('unselect', unselectData);
+
+      // If the event was prevented, don't clear it out.
+      if (unselectData.prevented) {
+        this.$element.val(previousVal);
+        return;
+      }
+    }
+
+    this.$element.trigger('change');
+
+    this.trigger('toggle', {});
+  };
+
+  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {
+    if (container.isOpen()) {
+      return;
+    }
+
+    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {
+      this._handleClear(evt);
+    }
+  };
+
+  AllowClear.prototype.update = function (decorated, data) {
+    decorated.call(this, data);
+
+    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
+        data.length === 0) {
+      return;
+    }
+
+    var $remove = $(
+      '<span class="select2-selection__clear">' +
+        '&times;' +
+      '</span>'
+    );
+    Utils.StoreData($remove[0], 'data', data);
+
+    this.$selection.find('.select2-selection__rendered').prepend($remove);
+  };
+
+  return AllowClear;
+});
+
+S2.define('select2/selection/search',[
+  'jquery',
+  '../utils',
+  '../keys'
+], function ($, Utils, KEYS) {
+  function Search (decorated, $element, options) {
+    decorated.call(this, $element, options);
+  }
+
+  Search.prototype.render = function (decorated) {
+    var $search = $(
+      '<li class="select2-search select2-search--inline">' +
+        '<input class="select2-search__field" type="search" tabindex="-1"' +
+        ' autocomplete="off" autocorrect="off" autocapitalize="none"' +
+        ' spellcheck="false" role="textbox" aria-autocomplete="list" />' +
+      '</li>'
+    );
+
+    this.$searchContainer = $search;
+    this.$search = $search.find('input');
+
+    var $rendered = decorated.call(this);
+
+    this._transferTabIndex();
+
+    return $rendered;
+  };
+
+  Search.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    container.on('open', function () {
+      self.$search.trigger('focus');
+    });
+
+    container.on('close', function () {
+      self.$search.val('');
+      self.$search.removeAttr('aria-activedescendant');
+      self.$search.trigger('focus');
+    });
+
+    container.on('enable', function () {
+      self.$search.prop('disabled', false);
+
+      self._transferTabIndex();
+    });
+
+    container.on('disable', function () {
+      self.$search.prop('disabled', true);
+    });
+
+    container.on('focus', function (evt) {
+      self.$search.trigger('focus');
+    });
+
+    container.on('results:focus', function (params) {
+      self.$search.attr('aria-activedescendant', params.id);
+    });
+
+    this.$selection.on('focusin', '.select2-search--inline', function (evt) {
+      self.trigger('focus', evt);
+    });
+
+    this.$selection.on('focusout', '.select2-search--inline', function (evt) {
+      self._handleBlur(evt);
+    });
+
+    this.$selection.on('keydown', '.select2-search--inline', function (evt) {
+      evt.stopPropagation();
+
+      self.trigger('keypress', evt);
+
+      self._keyUpPrevented = evt.isDefaultPrevented();
+
+      var key = evt.which;
+
+      if (key === KEYS.BACKSPACE && self.$search.val() === '') {
+        var $previousChoice = self.$searchContainer
+          .prev('.select2-selection__choice');
+
+        if ($previousChoice.length > 0) {
+          var item = Utils.GetData($previousChoice[0], 'data');
+
+          self.searchRemoveChoice(item);
+
+          evt.preventDefault();
+        }
+      }
+    });
+
+    // Try to detect the IE version should the `documentMode` property that
+    // is stored on the document. This is only implemented in IE and is
+    // slightly cleaner than doing a user agent check.
+    // This property is not available in Edge, but Edge also doesn't have
+    // this bug.
+    var msie = document.documentMode;
+    var disableInputEvents = msie && msie <= 11;
+
+    // Workaround for browsers which do not support the `input` event
+    // This will prevent double-triggering of events for browsers which support
+    // both the `keyup` and `input` events.
+    this.$selection.on(
+      'input.searchcheck',
+      '.select2-search--inline',
+      function (evt) {
+        // IE will trigger the `input` event when a placeholder is used on a
+        // search box. To get around this issue, we are forced to ignore all
+        // `input` events in IE and keep using `keyup`.
+        if (disableInputEvents) {
+          self.$selection.off('input.search input.searchcheck');
+          return;
+        }
+
+        // Unbind the duplicated `keyup` event
+        self.$selection.off('keyup.search');
+      }
+    );
+
+    this.$selection.on(
+      'keyup.search input.search',
+      '.select2-search--inline',
+      function (evt) {
+        // IE will trigger the `input` event when a placeholder is used on a
+        // search box. To get around this issue, we are forced to ignore all
+        // `input` events in IE and keep using `keyup`.
+        if (disableInputEvents && evt.type === 'input') {
+          self.$selection.off('input.search input.searchcheck');
+          return;
+        }
+
+        var key = evt.which;
+
+        // We can freely ignore events from modifier keys
+        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
+          return;
+        }
+
+        // Tabbing will be handled during the `keydown` phase
+        if (key == KEYS.TAB) {
+          return;
+        }
+
+        self.handleSearch(evt);
+      }
+    );
+  };
+
+  /**
+   * This method will transfer the tabindex attribute from the rendered
+   * selection to the search box. This allows for the search box to be used as
+   * the primary focus instead of the selection container.
+   *
+   * @private
+   */
+  Search.prototype._transferTabIndex = function (decorated) {
+    this.$search.attr('tabindex', this.$selection.attr('tabindex'));
+    this.$selection.attr('tabindex', '-1');
+  };
+
+  Search.prototype.createPlaceholder = function (decorated, placeholder) {
+    this.$search.attr('placeholder', placeholder.text);
+  };
+
+  Search.prototype.update = function (decorated, data) {
+    var searchHadFocus = this.$search[0] == document.activeElement;
+
+    this.$search.attr('placeholder', '');
+
+    decorated.call(this, data);
+
+    this.$selection.find('.select2-selection__rendered')
+                   .append(this.$searchContainer);
+
+    this.resizeSearch();
+    if (searchHadFocus) {
+      var isTagInput = this.$element.find('[data-select2-tag]').length;
+      if (isTagInput) {
+        // fix IE11 bug where tag input lost focus
+        this.$element.focus();
+      } else {
+        this.$search.focus();
+      }
+    }
+  };
+
+  Search.prototype.handleSearch = function () {
+    this.resizeSearch();
+
+    if (!this._keyUpPrevented) {
+      var input = this.$search.val();
+
+      this.trigger('query', {
+        term: input
+      });
+    }
+
+    this._keyUpPrevented = false;
+  };
+
+  Search.prototype.searchRemoveChoice = function (decorated, item) {
+    this.trigger('unselect', {
+      data: item
+    });
+
+    this.$search.val(item.text);
+    this.handleSearch();
+  };
+
+  Search.prototype.resizeSearch = function () {
+    this.$search.css('width', '25px');
+
+    var width = '';
+
+    if (this.$search.attr('placeholder') !== '') {
+      width = this.$selection.find('.select2-selection__rendered').innerWidth();
+    } else {
+      var minimumWidth = this.$search.val().length + 1;
+
+      width = (minimumWidth * 0.75) + 'em';
+    }
+
+    this.$search.css('width', width);
+  };
+
+  return Search;
+});
+
+S2.define('select2/selection/eventRelay',[
+  'jquery'
+], function ($) {
+  function EventRelay () { }
+
+  EventRelay.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+    var relayEvents = [
+      'open', 'opening',
+      'close', 'closing',
+      'select', 'selecting',
+      'unselect', 'unselecting',
+      'clear', 'clearing'
+    ];
+
+    var preventableEvents = [
+      'opening', 'closing', 'selecting', 'unselecting', 'clearing'
+    ];
+
+    decorated.call(this, container, $container);
+
+    container.on('*', function (name, params) {
+      // Ignore events that should not be relayed
+      if ($.inArray(name, relayEvents) === -1) {
+        return;
+      }
+
+      // The parameters should always be an object
+      params = params || {};
+
+      // Generate the jQuery event for the Select2 event
+      var evt = $.Event('select2:' + name, {
+        params: params
+      });
+
+      self.$element.trigger(evt);
+
+      // Only handle preventable events if it was one
+      if ($.inArray(name, preventableEvents) === -1) {
+        return;
+      }
+
+      params.prevented = evt.isDefaultPrevented();
+    });
+  };
+
+  return EventRelay;
+});
+
+S2.define('select2/translation',[
+  'jquery',
+  'require'
+], function ($, require) {
+  function Translation (dict) {
+    this.dict = dict || {};
+  }
+
+  Translation.prototype.all = function () {
+    return this.dict;
+  };
+
+  Translation.prototype.get = function (key) {
+    return this.dict[key];
+  };
+
+  Translation.prototype.extend = function (translation) {
+    this.dict = $.extend({}, translation.all(), this.dict);
+  };
+
+  // Static functions
+
+  Translation._cache = {};
+
+  Translation.loadPath = function (path) {
+    if (!(path in Translation._cache)) {
+      var translations = require(path);
+
+      Translation._cache[path] = translations;
+    }
+
+    return new Translation(Translation._cache[path]);
+  };
+
+  return Translation;
+});
+
+S2.define('select2/diacritics',[
+
+], function () {
+  var diacritics = {
+    '\u24B6': 'A',
+    '\uFF21': 'A',
+    '\u00C0': 'A',
+    '\u00C1': 'A',
+    '\u00C2': 'A',
+    '\u1EA6': 'A',
+    '\u1EA4': 'A',
+    '\u1EAA': 'A',
+    '\u1EA8': 'A',
+    '\u00C3': 'A',
+    '\u0100': 'A',
+    '\u0102': 'A',
+    '\u1EB0': 'A',
+    '\u1EAE': 'A',
+    '\u1EB4': 'A',
+    '\u1EB2': 'A',
+    '\u0226': 'A',
+    '\u01E0': 'A',
+    '\u00C4': 'A',
+    '\u01DE': 'A',
+    '\u1EA2': 'A',
+    '\u00C5': 'A',
+    '\u01FA': 'A',
+    '\u01CD': 'A',
+    '\u0200': 'A',
+    '\u0202': 'A',
+    '\u1EA0': 'A',
+    '\u1EAC': 'A',
+    '\u1EB6': 'A',
+    '\u1E00': 'A',
+    '\u0104': 'A',
+    '\u023A': 'A',
+    '\u2C6F': 'A',
+    '\uA732': 'AA',
+    '\u00C6': 'AE',
+    '\u01FC': 'AE',
+    '\u01E2': 'AE',
+    '\uA734': 'AO',
+    '\uA736': 'AU',
+    '\uA738': 'AV',
+    '\uA73A': 'AV',
+    '\uA73C': 'AY',
+    '\u24B7': 'B',
+    '\uFF22': 'B',
+    '\u1E02': 'B',
+    '\u1E04': 'B',
+    '\u1E06': 'B',
+    '\u0243': 'B',
+    '\u0182': 'B',
+    '\u0181': 'B',
+    '\u24B8': 'C',
+    '\uFF23': 'C',
+    '\u0106': 'C',
+    '\u0108': 'C',
+    '\u010A': 'C',
+    '\u010C': 'C',
+    '\u00C7': 'C',
+    '\u1E08': 'C',
+    '\u0187': 'C',
+    '\u023B': 'C',
+    '\uA73E': 'C',
+    '\u24B9': 'D',
+    '\uFF24': 'D',
+    '\u1E0A': 'D',
+    '\u010E': 'D',
+    '\u1E0C': 'D',
+    '\u1E10': 'D',
+    '\u1E12': 'D',
+    '\u1E0E': 'D',
+    '\u0110': 'D',
+    '\u018B': 'D',
+    '\u018A': 'D',
+    '\u0189': 'D',
+    '\uA779': 'D',
+    '\u01F1': 'DZ',
+    '\u01C4': 'DZ',
+    '\u01F2': 'Dz',
+    '\u01C5': 'Dz',
+    '\u24BA': 'E',
+    '\uFF25': 'E',
+    '\u00C8': 'E',
+    '\u00C9': 'E',
+    '\u00CA': 'E',
+    '\u1EC0': 'E',
+    '\u1EBE': 'E',
+    '\u1EC4': 'E',
+    '\u1EC2': 'E',
+    '\u1EBC': 'E',
+    '\u0112': 'E',
+    '\u1E14': 'E',
+    '\u1E16': 'E',
+    '\u0114': 'E',
+    '\u0116': 'E',
+    '\u00CB': 'E',
+    '\u1EBA': 'E',
+    '\u011A': 'E',
+    '\u0204': 'E',
+    '\u0206': 'E',
+    '\u1EB8': 'E',
+    '\u1EC6': 'E',
+    '\u0228': 'E',
+    '\u1E1C': 'E',
+    '\u0118': 'E',
+    '\u1E18': 'E',
+    '\u1E1A': 'E',
+    '\u0190': 'E',
+    '\u018E': 'E',
+    '\u24BB': 'F',
+    '\uFF26': 'F',
+    '\u1E1E': 'F',
+    '\u0191': 'F',
+    '\uA77B': 'F',
+    '\u24BC': 'G',
+    '\uFF27': 'G',
+    '\u01F4': 'G',
+    '\u011C': 'G',
+    '\u1E20': 'G',
+    '\u011E': 'G',
+    '\u0120': 'G',
+    '\u01E6': 'G',
+    '\u0122': 'G',
+    '\u01E4': 'G',
+    '\u0193': 'G',
+    '\uA7A0': 'G',
+    '\uA77D': 'G',
+    '\uA77E': 'G',
+    '\u24BD': 'H',
+    '\uFF28': 'H',
+    '\u0124': 'H',
+    '\u1E22': 'H',
+    '\u1E26': 'H',
+    '\u021E': 'H',
+    '\u1E24': 'H',
+    '\u1E28': 'H',
+    '\u1E2A': 'H',
+    '\u0126': 'H',
+    '\u2C67': 'H',
+    '\u2C75': 'H',
+    '\uA78D': 'H',
+    '\u24BE': 'I',
+    '\uFF29': 'I',
+    '\u00CC': 'I',
+    '\u00CD': 'I',
+    '\u00CE': 'I',
+    '\u0128': 'I',
+    '\u012A': 'I',
+    '\u012C': 'I',
+    '\u0130': 'I',
+    '\u00CF': 'I',
+    '\u1E2E': 'I',
+    '\u1EC8': 'I',
+    '\u01CF': 'I',
+    '\u0208': 'I',
+    '\u020A': 'I',
+    '\u1ECA': 'I',
+    '\u012E': 'I',
+    '\u1E2C': 'I',
+    '\u0197': 'I',
+    '\u24BF': 'J',
+    '\uFF2A': 'J',
+    '\u0134': 'J',
+    '\u0248': 'J',
+    '\u24C0': 'K',
+    '\uFF2B': 'K',
+    '\u1E30': 'K',
+    '\u01E8': 'K',
+    '\u1E32': 'K',
+    '\u0136': 'K',
+    '\u1E34': 'K',
+    '\u0198': 'K',
+    '\u2C69': 'K',
+    '\uA740': 'K',
+    '\uA742': 'K',
+    '\uA744': 'K',
+    '\uA7A2': 'K',
+    '\u24C1': 'L',
+    '\uFF2C': 'L',
+    '\u013F': 'L',
+    '\u0139': 'L',
+    '\u013D': 'L',
+    '\u1E36': 'L',
+    '\u1E38': 'L',
+    '\u013B': 'L',
+    '\u1E3C': 'L',
+    '\u1E3A': 'L',
+    '\u0141': 'L',
+    '\u023D': 'L',
+    '\u2C62': 'L',
+    '\u2C60': 'L',
+    '\uA748': 'L',
+    '\uA746': 'L',
+    '\uA780': 'L',
+    '\u01C7': 'LJ',
+    '\u01C8': 'Lj',
+    '\u24C2': 'M',
+    '\uFF2D': 'M',
+    '\u1E3E': 'M',
+    '\u1E40': 'M',
+    '\u1E42': 'M',
+    '\u2C6E': 'M',
+    '\u019C': 'M',
+    '\u24C3': 'N',
+    '\uFF2E': 'N',
+    '\u01F8': 'N',
+    '\u0143': 'N',
+    '\u00D1': 'N',
+    '\u1E44': 'N',
+    '\u0147': 'N',
+    '\u1E46': 'N',
+    '\u0145': 'N',
+    '\u1E4A': 'N',
+    '\u1E48': 'N',
+    '\u0220': 'N',
+    '\u019D': 'N',
+    '\uA790': 'N',
+    '\uA7A4': 'N',
+    '\u01CA': 'NJ',
+    '\u01CB': 'Nj',
+    '\u24C4': 'O',
+    '\uFF2F': 'O',
+    '\u00D2': 'O',
+    '\u00D3': 'O',
+    '\u00D4': 'O',
+    '\u1ED2': 'O',
+    '\u1ED0': 'O',
+    '\u1ED6': 'O',
+    '\u1ED4': 'O',
+    '\u00D5': 'O',
+    '\u1E4C': 'O',
+    '\u022C': 'O',
+    '\u1E4E': 'O',
+    '\u014C': 'O',
+    '\u1E50': 'O',
+    '\u1E52': 'O',
+    '\u014E': 'O',
+    '\u022E': 'O',
+    '\u0230': 'O',
+    '\u00D6': 'O',
+    '\u022A': 'O',
+    '\u1ECE': 'O',
+    '\u0150': 'O',
+    '\u01D1': 'O',
+    '\u020C': 'O',
+    '\u020E': 'O',
+    '\u01A0': 'O',
+    '\u1EDC': 'O',
+    '\u1EDA': 'O',
+    '\u1EE0': 'O',
+    '\u1EDE': 'O',
+    '\u1EE2': 'O',
+    '\u1ECC': 'O',
+    '\u1ED8': 'O',
+    '\u01EA': 'O',
+    '\u01EC': 'O',
+    '\u00D8': 'O',
+    '\u01FE': 'O',
+    '\u0186': 'O',
+    '\u019F': 'O',
+    '\uA74A': 'O',
+    '\uA74C': 'O',
+    '\u01A2': 'OI',
+    '\uA74E': 'OO',
+    '\u0222': 'OU',
+    '\u24C5': 'P',
+    '\uFF30': 'P',
+    '\u1E54': 'P',
+    '\u1E56': 'P',
+    '\u01A4': 'P',
+    '\u2C63': 'P',
+    '\uA750': 'P',
+    '\uA752': 'P',
+    '\uA754': 'P',
+    '\u24C6': 'Q',
+    '\uFF31': 'Q',
+    '\uA756': 'Q',
+    '\uA758': 'Q',
+    '\u024A': 'Q',
+    '\u24C7': 'R',
+    '\uFF32': 'R',
+    '\u0154': 'R',
+    '\u1E58': 'R',
+    '\u0158': 'R',
+    '\u0210': 'R',
+    '\u0212': 'R',
+    '\u1E5A': 'R',
+    '\u1E5C': 'R',
+    '\u0156': 'R',
+    '\u1E5E': 'R',
+    '\u024C': 'R',
+    '\u2C64': 'R',
+    '\uA75A': 'R',
+    '\uA7A6': 'R',
+    '\uA782': 'R',
+    '\u24C8': 'S',
+    '\uFF33': 'S',
+    '\u1E9E': 'S',
+    '\u015A': 'S',
+    '\u1E64': 'S',
+    '\u015C': 'S',
+    '\u1E60': 'S',
+    '\u0160': 'S',
+    '\u1E66': 'S',
+    '\u1E62': 'S',
+    '\u1E68': 'S',
+    '\u0218': 'S',
+    '\u015E': 'S',
+    '\u2C7E': 'S',
+    '\uA7A8': 'S',
+    '\uA784': 'S',
+    '\u24C9': 'T',
+    '\uFF34': 'T',
+    '\u1E6A': 'T',
+    '\u0164': 'T',
+    '\u1E6C': 'T',
+    '\u021A': 'T',
+    '\u0162': 'T',
+    '\u1E70': 'T',
+    '\u1E6E': 'T',
+    '\u0166': 'T',
+    '\u01AC': 'T',
+    '\u01AE': 'T',
+    '\u023E': 'T',
+    '\uA786': 'T',
+    '\uA728': 'TZ',
+    '\u24CA': 'U',
+    '\uFF35': 'U',
+    '\u00D9': 'U',
+    '\u00DA': 'U',
+    '\u00DB': 'U',
+    '\u0168': 'U',
+    '\u1E78': 'U',
+    '\u016A': 'U',
+    '\u1E7A': 'U',
+    '\u016C': 'U',
+    '\u00DC': 'U',
+    '\u01DB': 'U',
+    '\u01D7': 'U',
+    '\u01D5': 'U',
+    '\u01D9': 'U',
+    '\u1EE6': 'U',
+    '\u016E': 'U',
+    '\u0170': 'U',
+    '\u01D3': 'U',
+    '\u0214': 'U',
+    '\u0216': 'U',
+    '\u01AF': 'U',
+    '\u1EEA': 'U',
+    '\u1EE8': 'U',
+    '\u1EEE': 'U',
+    '\u1EEC': 'U',
+    '\u1EF0': 'U',
+    '\u1EE4': 'U',
+    '\u1E72': 'U',
+    '\u0172': 'U',
+    '\u1E76': 'U',
+    '\u1E74': 'U',
+    '\u0244': 'U',
+    '\u24CB': 'V',
+    '\uFF36': 'V',
+    '\u1E7C': 'V',
+    '\u1E7E': 'V',
+    '\u01B2': 'V',
+    '\uA75E': 'V',
+    '\u0245': 'V',
+    '\uA760': 'VY',
+    '\u24CC': 'W',
+    '\uFF37': 'W',
+    '\u1E80': 'W',
+    '\u1E82': 'W',
+    '\u0174': 'W',
+    '\u1E86': 'W',
+    '\u1E84': 'W',
+    '\u1E88': 'W',
+    '\u2C72': 'W',
+    '\u24CD': 'X',
+    '\uFF38': 'X',
+    '\u1E8A': 'X',
+    '\u1E8C': 'X',
+    '\u24CE': 'Y',
+    '\uFF39': 'Y',
+    '\u1EF2': 'Y',
+    '\u00DD': 'Y',
+    '\u0176': 'Y',
+    '\u1EF8': 'Y',
+    '\u0232': 'Y',
+    '\u1E8E': 'Y',
+    '\u0178': 'Y',
+    '\u1EF6': 'Y',
+    '\u1EF4': 'Y',
+    '\u01B3': 'Y',
+    '\u024E': 'Y',
+    '\u1EFE': 'Y',
+    '\u24CF': 'Z',
+    '\uFF3A': 'Z',
+    '\u0179': 'Z',
+    '\u1E90': 'Z',
+    '\u017B': 'Z',
+    '\u017D': 'Z',
+    '\u1E92': 'Z',
+    '\u1E94': 'Z',
+    '\u01B5': 'Z',
+    '\u0224': 'Z',
+    '\u2C7F': 'Z',
+    '\u2C6B': 'Z',
+    '\uA762': 'Z',
+    '\u24D0': 'a',
+    '\uFF41': 'a',
+    '\u1E9A': 'a',
+    '\u00E0': 'a',
+    '\u00E1': 'a',
+    '\u00E2': 'a',
+    '\u1EA7': 'a',
+    '\u1EA5': 'a',
+    '\u1EAB': 'a',
+    '\u1EA9': 'a',
+    '\u00E3': 'a',
+    '\u0101': 'a',
+    '\u0103': 'a',
+    '\u1EB1': 'a',
+    '\u1EAF': 'a',
+    '\u1EB5': 'a',
+    '\u1EB3': 'a',
+    '\u0227': 'a',
+    '\u01E1': 'a',
+    '\u00E4': 'a',
+    '\u01DF': 'a',
+    '\u1EA3': 'a',
+    '\u00E5': 'a',
+    '\u01FB': 'a',
+    '\u01CE': 'a',
+    '\u0201': 'a',
+    '\u0203': 'a',
+    '\u1EA1': 'a',
+    '\u1EAD': 'a',
+    '\u1EB7': 'a',
+    '\u1E01': 'a',
+    '\u0105': 'a',
+    '\u2C65': 'a',
+    '\u0250': 'a',
+    '\uA733': 'aa',
+    '\u00E6': 'ae',
+    '\u01FD': 'ae',
+    '\u01E3': 'ae',
+    '\uA735': 'ao',
+    '\uA737': 'au',
+    '\uA739': 'av',
+    '\uA73B': 'av',
+    '\uA73D': 'ay',
+    '\u24D1': 'b',
+    '\uFF42': 'b',
+    '\u1E03': 'b',
+    '\u1E05': 'b',
+    '\u1E07': 'b',
+    '\u0180': 'b',
+    '\u0183': 'b',
+    '\u0253': 'b',
+    '\u24D2': 'c',
+    '\uFF43': 'c',
+    '\u0107': 'c',
+    '\u0109': 'c',
+    '\u010B': 'c',
+    '\u010D': 'c',
+    '\u00E7': 'c',
+    '\u1E09': 'c',
+    '\u0188': 'c',
+    '\u023C': 'c',
+    '\uA73F': 'c',
+    '\u2184': 'c',
+    '\u24D3': 'd',
+    '\uFF44': 'd',
+    '\u1E0B': 'd',
+    '\u010F': 'd',
+    '\u1E0D': 'd',
+    '\u1E11': 'd',
+    '\u1E13': 'd',
+    '\u1E0F': 'd',
+    '\u0111': 'd',
+    '\u018C': 'd',
+    '\u0256': 'd',
+    '\u0257': 'd',
+    '\uA77A': 'd',
+    '\u01F3': 'dz',
+    '\u01C6': 'dz',
+    '\u24D4': 'e',
+    '\uFF45': 'e',
+    '\u00E8': 'e',
+    '\u00E9': 'e',
+    '\u00EA': 'e',
+    '\u1EC1': 'e',
+    '\u1EBF': 'e',
+    '\u1EC5': 'e',
+    '\u1EC3': 'e',
+    '\u1EBD': 'e',
+    '\u0113': 'e',
+    '\u1E15': 'e',
+    '\u1E17': 'e',
+    '\u0115': 'e',
+    '\u0117': 'e',
+    '\u00EB': 'e',
+    '\u1EBB': 'e',
+    '\u011B': 'e',
+    '\u0205': 'e',
+    '\u0207': 'e',
+    '\u1EB9': 'e',
+    '\u1EC7': 'e',
+    '\u0229': 'e',
+    '\u1E1D': 'e',
+    '\u0119': 'e',
+    '\u1E19': 'e',
+    '\u1E1B': 'e',
+    '\u0247': 'e',
+    '\u025B': 'e',
+    '\u01DD': 'e',
+    '\u24D5': 'f',
+    '\uFF46': 'f',
+    '\u1E1F': 'f',
+    '\u0192': 'f',
+    '\uA77C': 'f',
+    '\u24D6': 'g',
+    '\uFF47': 'g',
+    '\u01F5': 'g',
+    '\u011D': 'g',
+    '\u1E21': 'g',
+    '\u011F': 'g',
+    '\u0121': 'g',
+    '\u01E7': 'g',
+    '\u0123': 'g',
+    '\u01E5': 'g',
+    '\u0260': 'g',
+    '\uA7A1': 'g',
+    '\u1D79': 'g',
+    '\uA77F': 'g',
+    '\u24D7': 'h',
+    '\uFF48': 'h',
+    '\u0125': 'h',
+    '\u1E23': 'h',
+    '\u1E27': 'h',
+    '\u021F': 'h',
+    '\u1E25': 'h',
+    '\u1E29': 'h',
+    '\u1E2B': 'h',
+    '\u1E96': 'h',
+    '\u0127': 'h',
+    '\u2C68': 'h',
+    '\u2C76': 'h',
+    '\u0265': 'h',
+    '\u0195': 'hv',
+    '\u24D8': 'i',
+    '\uFF49': 'i',
+    '\u00EC': 'i',
+    '\u00ED': 'i',
+    '\u00EE': 'i',
+    '\u0129': 'i',
+    '\u012B': 'i',
+    '\u012D': 'i',
+    '\u00EF': 'i',
+    '\u1E2F': 'i',
+    '\u1EC9': 'i',
+    '\u01D0': 'i',
+    '\u0209': 'i',
+    '\u020B': 'i',
+    '\u1ECB': 'i',
+    '\u012F': 'i',
+    '\u1E2D': 'i',
+    '\u0268': 'i',
+    '\u0131': 'i',
+    '\u24D9': 'j',
+    '\uFF4A': 'j',
+    '\u0135': 'j',
+    '\u01F0': 'j',
+    '\u0249': 'j',
+    '\u24DA': 'k',
+    '\uFF4B': 'k',
+    '\u1E31': 'k',
+    '\u01E9': 'k',
+    '\u1E33': 'k',
+    '\u0137': 'k',
+    '\u1E35': 'k',
+    '\u0199': 'k',
+    '\u2C6A': 'k',
+    '\uA741': 'k',
+    '\uA743': 'k',
+    '\uA745': 'k',
+    '\uA7A3': 'k',
+    '\u24DB': 'l',
+    '\uFF4C': 'l',
+    '\u0140': 'l',
+    '\u013A': 'l',
+    '\u013E': 'l',
+    '\u1E37': 'l',
+    '\u1E39': 'l',
+    '\u013C': 'l',
+    '\u1E3D': 'l',
+    '\u1E3B': 'l',
+    '\u017F': 'l',
+    '\u0142': 'l',
+    '\u019A': 'l',
+    '\u026B': 'l',
+    '\u2C61': 'l',
+    '\uA749': 'l',
+    '\uA781': 'l',
+    '\uA747': 'l',
+    '\u01C9': 'lj',
+    '\u24DC': 'm',
+    '\uFF4D': 'm',
+    '\u1E3F': 'm',
+    '\u1E41': 'm',
+    '\u1E43': 'm',
+    '\u0271': 'm',
+    '\u026F': 'm',
+    '\u24DD': 'n',
+    '\uFF4E': 'n',
+    '\u01F9': 'n',
+    '\u0144': 'n',
+    '\u00F1': 'n',
+    '\u1E45': 'n',
+    '\u0148': 'n',
+    '\u1E47': 'n',
+    '\u0146': 'n',
+    '\u1E4B': 'n',
+    '\u1E49': 'n',
+    '\u019E': 'n',
+    '\u0272': 'n',
+    '\u0149': 'n',
+    '\uA791': 'n',
+    '\uA7A5': 'n',
+    '\u01CC': 'nj',
+    '\u24DE': 'o',
+    '\uFF4F': 'o',
+    '\u00F2': 'o',
+    '\u00F3': 'o',
+    '\u00F4': 'o',
+    '\u1ED3': 'o',
+    '\u1ED1': 'o',
+    '\u1ED7': 'o',
+    '\u1ED5': 'o',
+    '\u00F5': 'o',
+    '\u1E4D': 'o',
+    '\u022D': 'o',
+    '\u1E4F': 'o',
+    '\u014D': 'o',
+    '\u1E51': 'o',
+    '\u1E53': 'o',
+    '\u014F': 'o',
+    '\u022F': 'o',
+    '\u0231': 'o',
+    '\u00F6': 'o',
+    '\u022B': 'o',
+    '\u1ECF': 'o',
+    '\u0151': 'o',
+    '\u01D2': 'o',
+    '\u020D': 'o',
+    '\u020F': 'o',
+    '\u01A1': 'o',
+    '\u1EDD': 'o',
+    '\u1EDB': 'o',
+    '\u1EE1': 'o',
+    '\u1EDF': 'o',
+    '\u1EE3': 'o',
+    '\u1ECD': 'o',
+    '\u1ED9': 'o',
+    '\u01EB': 'o',
+    '\u01ED': 'o',
+    '\u00F8': 'o',
+    '\u01FF': 'o',
+    '\u0254': 'o',
+    '\uA74B': 'o',
+    '\uA74D': 'o',
+    '\u0275': 'o',
+    '\u01A3': 'oi',
+    '\u0223': 'ou',
+    '\uA74F': 'oo',
+    '\u24DF': 'p',
+    '\uFF50': 'p',
+    '\u1E55': 'p',
+    '\u1E57': 'p',
+    '\u01A5': 'p',
+    '\u1D7D': 'p',
+    '\uA751': 'p',
+    '\uA753': 'p',
+    '\uA755': 'p',
+    '\u24E0': 'q',
+    '\uFF51': 'q',
+    '\u024B': 'q',
+    '\uA757': 'q',
+    '\uA759': 'q',
+    '\u24E1': 'r',
+    '\uFF52': 'r',
+    '\u0155': 'r',
+    '\u1E59': 'r',
+    '\u0159': 'r',
+    '\u0211': 'r',
+    '\u0213': 'r',
+    '\u1E5B': 'r',
+    '\u1E5D': 'r',
+    '\u0157': 'r',
+    '\u1E5F': 'r',
+    '\u024D': 'r',
+    '\u027D': 'r',
+    '\uA75B': 'r',
+    '\uA7A7': 'r',
+    '\uA783': 'r',
+    '\u24E2': 's',
+    '\uFF53': 's',
+    '\u00DF': 's',
+    '\u015B': 's',
+    '\u1E65': 's',
+    '\u015D': 's',
+    '\u1E61': 's',
+    '\u0161': 's',
+    '\u1E67': 's',
+    '\u1E63': 's',
+    '\u1E69': 's',
+    '\u0219': 's',
+    '\u015F': 's',
+    '\u023F': 's',
+    '\uA7A9': 's',
+    '\uA785': 's',
+    '\u1E9B': 's',
+    '\u24E3': 't',
+    '\uFF54': 't',
+    '\u1E6B': 't',
+    '\u1E97': 't',
+    '\u0165': 't',
+    '\u1E6D': 't',
+    '\u021B': 't',
+    '\u0163': 't',
+    '\u1E71': 't',
+    '\u1E6F': 't',
+    '\u0167': 't',
+    '\u01AD': 't',
+    '\u0288': 't',
+    '\u2C66': 't',
+    '\uA787': 't',
+    '\uA729': 'tz',
+    '\u24E4': 'u',
+    '\uFF55': 'u',
+    '\u00F9': 'u',
+    '\u00FA': 'u',
+    '\u00FB': 'u',
+    '\u0169': 'u',
+    '\u1E79': 'u',
+    '\u016B': 'u',
+    '\u1E7B': 'u',
+    '\u016D': 'u',
+    '\u00FC': 'u',
+    '\u01DC': 'u',
+    '\u01D8': 'u',
+    '\u01D6': 'u',
+    '\u01DA': 'u',
+    '\u1EE7': 'u',
+    '\u016F': 'u',
+    '\u0171': 'u',
+    '\u01D4': 'u',
+    '\u0215': 'u',
+    '\u0217': 'u',
+    '\u01B0': 'u',
+    '\u1EEB': 'u',
+    '\u1EE9': 'u',
+    '\u1EEF': 'u',
+    '\u1EED': 'u',
+    '\u1EF1': 'u',
+    '\u1EE5': 'u',
+    '\u1E73': 'u',
+    '\u0173': 'u',
+    '\u1E77': 'u',
+    '\u1E75': 'u',
+    '\u0289': 'u',
+    '\u24E5': 'v',
+    '\uFF56': 'v',
+    '\u1E7D': 'v',
+    '\u1E7F': 'v',
+    '\u028B': 'v',
+    '\uA75F': 'v',
+    '\u028C': 'v',
+    '\uA761': 'vy',
+    '\u24E6': 'w',
+    '\uFF57': 'w',
+    '\u1E81': 'w',
+    '\u1E83': 'w',
+    '\u0175': 'w',
+    '\u1E87': 'w',
+    '\u1E85': 'w',
+    '\u1E98': 'w',
+    '\u1E89': 'w',
+    '\u2C73': 'w',
+    '\u24E7': 'x',
+    '\uFF58': 'x',
+    '\u1E8B': 'x',
+    '\u1E8D': 'x',
+    '\u24E8': 'y',
+    '\uFF59': 'y',
+    '\u1EF3': 'y',
+    '\u00FD': 'y',
+    '\u0177': 'y',
+    '\u1EF9': 'y',
+    '\u0233': 'y',
+    '\u1E8F': 'y',
+    '\u00FF': 'y',
+    '\u1EF7': 'y',
+    '\u1E99': 'y',
+    '\u1EF5': 'y',
+    '\u01B4': 'y',
+    '\u024F': 'y',
+    '\u1EFF': 'y',
+    '\u24E9': 'z',
+    '\uFF5A': 'z',
+    '\u017A': 'z',
+    '\u1E91': 'z',
+    '\u017C': 'z',
+    '\u017E': 'z',
+    '\u1E93': 'z',
+    '\u1E95': 'z',
+    '\u01B6': 'z',
+    '\u0225': 'z',
+    '\u0240': 'z',
+    '\u2C6C': 'z',
+    '\uA763': 'z',
+    '\u0386': '\u0391',
+    '\u0388': '\u0395',
+    '\u0389': '\u0397',
+    '\u038A': '\u0399',
+    '\u03AA': '\u0399',
+    '\u038C': '\u039F',
+    '\u038E': '\u03A5',
+    '\u03AB': '\u03A5',
+    '\u038F': '\u03A9',
+    '\u03AC': '\u03B1',
+    '\u03AD': '\u03B5',
+    '\u03AE': '\u03B7',
+    '\u03AF': '\u03B9',
+    '\u03CA': '\u03B9',
+    '\u0390': '\u03B9',
+    '\u03CC': '\u03BF',
+    '\u03CD': '\u03C5',
+    '\u03CB': '\u03C5',
+    '\u03B0': '\u03C5',
+    '\u03C9': '\u03C9',
+    '\u03C2': '\u03C3'
+  };
+
+  return diacritics;
+});
+
+S2.define('select2/data/base',[
+  '../utils'
+], function (Utils) {
+  function BaseAdapter ($element, options) {
+    BaseAdapter.__super__.constructor.call(this);
+  }
+
+  Utils.Extend(BaseAdapter, Utils.Observable);
+
+  BaseAdapter.prototype.current = function (callback) {
+    throw new Error('The `current` method must be defined in child classes.');
+  };
+
+  BaseAdapter.prototype.query = function (params, callback) {
+    throw new Error('The `query` method must be defined in child classes.');
+  };
+
+  BaseAdapter.prototype.bind = function (container, $container) {
+    // Can be implemented in subclasses
+  };
+
+  BaseAdapter.prototype.destroy = function () {
+    // Can be implemented in subclasses
+  };
+
+  BaseAdapter.prototype.generateResultId = function (container, data) {
+    var id = container.id + '-result-';
+
+    id += Utils.generateChars(4);
+
+    if (data.id != null) {
+      id += '-' + data.id.toString();
+    } else {
+      id += '-' + Utils.generateChars(4);
+    }
+    return id;
+  };
+
+  return BaseAdapter;
+});
+
+S2.define('select2/data/select',[
+  './base',
+  '../utils',
+  'jquery'
+], function (BaseAdapter, Utils, $) {
+  function SelectAdapter ($element, options) {
+    this.$element = $element;
+    this.options = options;
+
+    SelectAdapter.__super__.constructor.call(this);
+  }
+
+  Utils.Extend(SelectAdapter, BaseAdapter);
+
+  SelectAdapter.prototype.current = function (callback) {
+    var data = [];
+    var self = this;
+
+    this.$element.find(':selected').each(function () {
+      var $option = $(this);
+
+      var option = self.item($option);
+
+      data.push(option);
+    });
+
+    callback(data);
+  };
+
+  SelectAdapter.prototype.select = function (data) {
+    var self = this;
+
+    data.selected = true;
+
+    // If data.element is a DOM node, use it instead
+    if ($(data.element).is('option')) {
+      data.element.selected = true;
+
+      this.$element.trigger('change');
+
+      return;
+    }
+
+    if (this.$element.prop('multiple')) {
+      this.current(function (currentData) {
+        var val = [];
+
+        data = [data];
+        data.push.apply(data, currentData);
+
+        for (var d = 0; d < data.length; d++) {
+          var id = data[d].id;
+
+          if ($.inArray(id, val) === -1) {
+            val.push(id);
+          }
+        }
+
+        self.$element.val(val);
+        self.$element.trigger('change');
+      });
+    } else {
+      var val = data.id;
+
+      this.$element.val(val);
+      this.$element.trigger('change');
+    }
+  };
+
+  SelectAdapter.prototype.unselect = function (data) {
+    var self = this;
+
+    if (!this.$element.prop('multiple')) {
+      return;
+    }
+
+    data.selected = false;
+
+    if ($(data.element).is('option')) {
+      data.element.selected = false;
+
+      this.$element.trigger('change');
+
+      return;
+    }
+
+    this.current(function (currentData) {
+      var val = [];
+
+      for (var d = 0; d < currentData.length; d++) {
+        var id = currentData[d].id;
+
+        if (id !== data.id && $.inArray(id, val) === -1) {
+          val.push(id);
+        }
+      }
+
+      self.$element.val(val);
+
+      self.$element.trigger('change');
+    });
+  };
+
+  SelectAdapter.prototype.bind = function (container, $container) {
+    var self = this;
+
+    this.container = container;
+
+    container.on('select', function (params) {
+      self.select(params.data);
+    });
+
+    container.on('unselect', function (params) {
+      self.unselect(params.data);
+    });
+  };
+
+  SelectAdapter.prototype.destroy = function () {
+    // Remove anything added to child elements
+    this.$element.find('*').each(function () {
+      // Remove any custom data set by Select2
+      Utils.RemoveData(this);
+    });
+  };
+
+  SelectAdapter.prototype.query = function (params, callback) {
+    var data = [];
+    var self = this;
+
+    var $options = this.$element.children();
+
+    $options.each(function () {
+      var $option = $(this);
+
+      if (!$option.is('option') && !$option.is('optgroup')) {
+        return;
+      }
+
+      var option = self.item($option);
+
+      var matches = self.matches(params, option);
+
+      if (matches !== null) {
+        data.push(matches);
+      }
+    });
+
+    callback({
+      results: data
+    });
+  };
+
+  SelectAdapter.prototype.addOptions = function ($options) {
+    Utils.appendMany(this.$element, $options);
+  };
+
+  SelectAdapter.prototype.option = function (data) {
+    var option;
+
+    if (data.children) {
+      option = document.createElement('optgroup');
+      option.label = data.text;
+    } else {
+      option = document.createElement('option');
+
+      if (option.textContent !== undefined) {
+        option.textContent = data.text;
+      } else {
+        option.innerText = data.text;
+      }
+    }
+
+    if (data.id !== undefined) {
+      option.value = data.id;
+    }
+
+    if (data.disabled) {
+      option.disabled = true;
+    }
+
+    if (data.selected) {
+      option.selected = true;
+    }
+
+    if (data.title) {
+      option.title = data.title;
+    }
+
+    var $option = $(option);
+
+    var normalizedData = this._normalizeItem(data);
+    normalizedData.element = option;
+
+    // Override the option's data with the combined data
+    Utils.StoreData(option, 'data', normalizedData);
+
+    return $option;
+  };
+
+  SelectAdapter.prototype.item = function ($option) {
+    var data = {};
+
+    data = Utils.GetData($option[0], 'data');
+
+    if (data != null) {
+      return data;
+    }
+
+    if ($option.is('option')) {
+      data = {
+        id: $option.val(),
+        text: $option.text(),
+        disabled: $option.prop('disabled'),
+        selected: $option.prop('selected'),
+        title: $option.prop('title')
+      };
+    } else if ($option.is('optgroup')) {
+      data = {
+        text: $option.prop('label'),
+        children: [],
+        title: $option.prop('title')
+      };
+
+      var $children = $option.children('option');
+      var children = [];
+
+      for (var c = 0; c < $children.length; c++) {
+        var $child = $($children[c]);
+
+        var child = this.item($child);
+
+        children.push(child);
+      }
+
+      data.children = children;
+    }
+
+    data = this._normalizeItem(data);
+    data.element = $option[0];
+
+    Utils.StoreData($option[0], 'data', data);
+
+    return data;
+  };
+
+  SelectAdapter.prototype._normalizeItem = function (item) {
+    if (item !== Object(item)) {
+      item = {
+        id: item,
+        text: item
+      };
+    }
+
+    item = $.extend({}, {
+      text: ''
+    }, item);
+
+    var defaults = {
+      selected: false,
+      disabled: false
+    };
+
+    if (item.id != null) {
+      item.id = item.id.toString();
+    }
+
+    if (item.text != null) {
+      item.text = item.text.toString();
+    }
+
+    if (item._resultId == null && item.id && this.container != null) {
+      item._resultId = this.generateResultId(this.container, item);
+    }
+
+    return $.extend({}, defaults, item);
+  };
+
+  SelectAdapter.prototype.matches = function (params, data) {
+    var matcher = this.options.get('matcher');
+
+    return matcher(params, data);
+  };
+
+  return SelectAdapter;
+});
+
+S2.define('select2/data/array',[
+  './select',
+  '../utils',
+  'jquery'
+], function (SelectAdapter, Utils, $) {
+  function ArrayAdapter ($element, options) {
+    var data = options.get('data') || [];
+
+    ArrayAdapter.__super__.constructor.call(this, $element, options);
+
+    this.addOptions(this.convertToOptions(data));
+  }
+
+  Utils.Extend(ArrayAdapter, SelectAdapter);
+
+  ArrayAdapter.prototype.select = function (data) {
+    var $option = this.$element.find('option').filter(function (i, elm) {
+      return elm.value == data.id.toString();
+    });
+
+    if ($option.length === 0) {
+      $option = this.option(data);
+
+      this.addOptions($option);
+    }
+
+    ArrayAdapter.__super__.select.call(this, data);
+  };
+
+  ArrayAdapter.prototype.convertToOptions = function (data) {
+    var self = this;
+
+    var $existing = this.$element.find('option');
+    var existingIds = $existing.map(function () {
+      return self.item($(this)).id;
+    }).get();
+
+    var $options = [];
+
+    // Filter out all items except for the one passed in the argument
+    function onlyItem (item) {
+      return function () {
+        return $(this).val() == item.id;
+      };
+    }
+
+    for (var d = 0; d < data.length; d++) {
+      var item = this._normalizeItem(data[d]);
+
+      // Skip items which were pre-loaded, only merge the data
+      if ($.inArray(item.id, existingIds) >= 0) {
+        var $existingOption = $existing.filter(onlyItem(item));
+
+        var existingData = this.item($existingOption);
+        var newData = $.extend(true, {}, item, existingData);
+
+        var $newOption = this.option(newData);
+
+        $existingOption.replaceWith($newOption);
+
+        continue;
+      }
+
+      var $option = this.option(item);
+
+      if (item.children) {
+        var $children = this.convertToOptions(item.children);
+
+        Utils.appendMany($option, $children);
+      }
+
+      $options.push($option);
+    }
+
+    return $options;
+  };
+
+  return ArrayAdapter;
+});
+
+S2.define('select2/data/ajax',[
+  './array',
+  '../utils',
+  'jquery'
+], function (ArrayAdapter, Utils, $) {
+  function AjaxAdapter ($element, options) {
+    this.ajaxOptions = this._applyDefaults(options.get('ajax'));
+
+    if (this.ajaxOptions.processResults != null) {
+      this.processResults = this.ajaxOptions.processResults;
+    }
+
+    AjaxAdapter.__super__.constructor.call(this, $element, options);
+  }
+
+  Utils.Extend(AjaxAdapter, ArrayAdapter);
+
+  AjaxAdapter.prototype._applyDefaults = function (options) {
+    var defaults = {
+      data: function (params) {
+        return $.extend({}, params, {
+          q: params.term
+        });
+      },
+      transport: function (params, success, failure) {
+        var $request = $.ajax(params);
+
+        $request.then(success);
+        $request.fail(failure);
+
+        return $request;
+      }
+    };
+
+    return $.extend({}, defaults, options, true);
+  };
+
+  AjaxAdapter.prototype.processResults = function (results) {
+    return results;
+  };
+
+  AjaxAdapter.prototype.query = function (params, callback) {
+    var matches = [];
+    var self = this;
+
+    if (this._request != null) {
+      // JSONP requests cannot always be aborted
+      if ($.isFunction(this._request.abort)) {
+        this._request.abort();
+      }
+
+      this._request = null;
+    }
+
+    var options = $.extend({
+      type: 'GET'
+    }, this.ajaxOptions);
+
+    if (typeof options.url === 'function') {
+      options.url = options.url.call(this.$element, params);
+    }
+
+    if (typeof options.data === 'function') {
+      options.data = options.data.call(this.$element, params);
+    }
+
+    function request () {
+      var $request = options.transport(options, function (data) {
+        var results = self.processResults(data, params);
+
+        if (self.options.get('debug') && window.console && console.error) {
+          // Check to make sure that the response included a `results` key.
+          if (!results || !results.results || !$.isArray(results.results)) {
+            console.error(
+              'Select2: The AJAX results did not return an array in the ' +
+              '`results` key of the response.'
+            );
+          }
+        }
+
+        callback(results);
+      }, function () {
+        // Attempt to detect if a request was aborted
+        // Only works if the transport exposes a status property
+        if ('status' in $request &&
+            ($request.status === 0 || $request.status === '0')) {
+          return;
+        }
+
+        self.trigger('results:message', {
+          message: 'errorLoading'
+        });
+      });
+
+      self._request = $request;
+    }
+
+    if (this.ajaxOptions.delay && params.term != null) {
+      if (this._queryTimeout) {
+        window.clearTimeout(this._queryTimeout);
+      }
+
+      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);
+    } else {
+      request();
+    }
+  };
+
+  return AjaxAdapter;
+});
+
+S2.define('select2/data/tags',[
+  'jquery'
+], function ($) {
+  function Tags (decorated, $element, options) {
+    var tags = options.get('tags');
+
+    var createTag = options.get('createTag');
+
+    if (createTag !== undefined) {
+      this.createTag = createTag;
+    }
+
+    var insertTag = options.get('insertTag');
+
+    if (insertTag !== undefined) {
+        this.insertTag = insertTag;
+    }
+
+    decorated.call(this, $element, options);
+
+    if ($.isArray(tags)) {
+      for (var t = 0; t < tags.length; t++) {
+        var tag = tags[t];
+        var item = this._normalizeItem(tag);
+
+        var $option = this.option(item);
+
+        this.$element.append($option);
+      }
+    }
+  }
+
+  Tags.prototype.query = function (decorated, params, callback) {
+    var self = this;
+
+    this._removeOldTags();
+
+    if (params.term == null || params.page != null) {
+      decorated.call(this, params, callback);
+      return;
+    }
+
+    function wrapper (obj, child) {
+      var data = obj.results;
+
+      for (var i = 0; i < data.length; i++) {
+        var option = data[i];
+
+        var checkChildren = (
+          option.children != null &&
+          !wrapper({
+            results: option.children
+          }, true)
+        );
+
+        var optionText = (option.text || '').toUpperCase();
+        var paramsTerm = (params.term || '').toUpperCase();
+
+        var checkText = optionText === paramsTerm;
+
+        if (checkText || checkChildren) {
+          if (child) {
+            return false;
+          }
+
+          obj.data = data;
+          callback(obj);
+
+          return;
+        }
+      }
+
+      if (child) {
+        return true;
+      }
+
+      var tag = self.createTag(params);
+
+      if (tag != null) {
+        var $option = self.option(tag);
+        $option.attr('data-select2-tag', true);
+
+        self.addOptions([$option]);
+
+        self.insertTag(data, tag);
+      }
+
+      obj.results = data;
+
+      callback(obj);
+    }
+
+    decorated.call(this, params, wrapper);
+  };
+
+  Tags.prototype.createTag = function (decorated, params) {
+    var term = $.trim(params.term);
+
+    if (term === '') {
+      return null;
+    }
+
+    return {
+      id: term,
+      text: term
+    };
+  };
+
+  Tags.prototype.insertTag = function (_, data, tag) {
+    data.unshift(tag);
+  };
+
+  Tags.prototype._removeOldTags = function (_) {
+    var tag = this._lastTag;
+
+    var $options = this.$element.find('option[data-select2-tag]');
+
+    $options.each(function () {
+      if (this.selected) {
+        return;
+      }
+
+      $(this).remove();
+    });
+  };
+
+  return Tags;
+});
+
+S2.define('select2/data/tokenizer',[
+  'jquery'
+], function ($) {
+  function Tokenizer (decorated, $element, options) {
+    var tokenizer = options.get('tokenizer');
+
+    if (tokenizer !== undefined) {
+      this.tokenizer = tokenizer;
+    }
+
+    decorated.call(this, $element, options);
+  }
+
+  Tokenizer.prototype.bind = function (decorated, container, $container) {
+    decorated.call(this, container, $container);
+
+    this.$search =  container.dropdown.$search || container.selection.$search ||
+      $container.find('.select2-search__field');
+  };
+
+  Tokenizer.prototype.query = function (decorated, params, callback) {
+    var self = this;
+
+    function createAndSelect (data) {
+      // Normalize the data object so we can use it for checks
+      var item = self._normalizeItem(data);
+
+      // Check if the data object already exists as a tag
+      // Select it if it doesn't
+      var $existingOptions = self.$element.find('option').filter(function () {
+        return $(this).val() === item.id;
+      });
+
+      // If an existing option wasn't found for it, create the option
+      if (!$existingOptions.length) {
+        var $option = self.option(item);
+        $option.attr('data-select2-tag', true);
+
+        self._removeOldTags();
+        self.addOptions([$option]);
+      }
+
+      // Select the item, now that we know there is an option for it
+      select(item);
+    }
+
+    function select (data) {
+      self.trigger('select', {
+        data: data
+      });
+    }
+
+    params.term = params.term || '';
+
+    var tokenData = this.tokenizer(params, this.options, createAndSelect);
+
+    if (tokenData.term !== params.term) {
+      // Replace the search term if we have the search box
+      if (this.$search.length) {
+        this.$search.val(tokenData.term);
+        this.$search.focus();
+      }
+
+      params.term = tokenData.term;
+    }
+
+    decorated.call(this, params, callback);
+  };
+
+  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {
+    var separators = options.get('tokenSeparators') || [];
+    var term = params.term;
+    var i = 0;
+
+    var createTag = this.createTag || function (params) {
+      return {
+        id: params.term,
+        text: params.term
+      };
+    };
+
+    while (i < term.length) {
+      var termChar = term[i];
+
+      if ($.inArray(termChar, separators) === -1) {
+        i++;
+
+        continue;
+      }
+
+      var part = term.substr(0, i);
+      var partParams = $.extend({}, params, {
+        term: part
+      });
+
+      var data = createTag(partParams);
+
+      if (data == null) {
+        i++;
+        continue;
+      }
+
+      callback(data);
+
+      // Reset the term to not include the tokenized portion
+      term = term.substr(i + 1) || '';
+      i = 0;
+    }
+
+    return {
+      term: term
+    };
+  };
+
+  return Tokenizer;
+});
+
+S2.define('select2/data/minimumInputLength',[
+
+], function () {
+  function MinimumInputLength (decorated, $e, options) {
+    this.minimumInputLength = options.get('minimumInputLength');
+
+    decorated.call(this, $e, options);
+  }
+
+  MinimumInputLength.prototype.query = function (decorated, params, callback) {
+    params.term = params.term || '';
+
+    if (params.term.length < this.minimumInputLength) {
+      this.trigger('results:message', {
+        message: 'inputTooShort',
+        args: {
+          minimum: this.minimumInputLength,
+          input: params.term,
+          params: params
+        }
+      });
+
+      return;
+    }
+
+    decorated.call(this, params, callback);
+  };
+
+  return MinimumInputLength;
+});
+
+S2.define('select2/data/maximumInputLength',[
+
+], function () {
+  function MaximumInputLength (decorated, $e, options) {
+    this.maximumInputLength = options.get('maximumInputLength');
+
+    decorated.call(this, $e, options);
+  }
+
+  MaximumInputLength.prototype.query = function (decorated, params, callback) {
+    params.term = params.term || '';
+
+    if (this.maximumInputLength > 0 &&
+        params.term.length > this.maximumInputLength) {
+      this.trigger('results:message', {
+        message: 'inputTooLong',
+        args: {
+          maximum: this.maximumInputLength,
+          input: params.term,
+          params: params
+        }
+      });
+
+      return;
+    }
+
+    decorated.call(this, params, callback);
+  };
+
+  return MaximumInputLength;
+});
+
+S2.define('select2/data/maximumSelectionLength',[
+
+], function (){
+  function MaximumSelectionLength (decorated, $e, options) {
+    this.maximumSelectionLength = options.get('maximumSelectionLength');
+
+    decorated.call(this, $e, options);
+  }
+
+  MaximumSelectionLength.prototype.query =
+    function (decorated, params, callback) {
+      var self = this;
+
+      this.current(function (currentData) {
+        var count = currentData != null ? currentData.length : 0;
+        if (self.maximumSelectionLength > 0 &&
+          count >= self.maximumSelectionLength) {
+          self.trigger('results:message', {
+            message: 'maximumSelected',
+            args: {
+              maximum: self.maximumSelectionLength
+            }
+          });
+          return;
+        }
+        decorated.call(self, params, callback);
+      });
+  };
+
+  return MaximumSelectionLength;
+});
+
+S2.define('select2/dropdown',[
+  'jquery',
+  './utils'
+], function ($, Utils) {
+  function Dropdown ($element, options) {
+    this.$element = $element;
+    this.options = options;
+
+    Dropdown.__super__.constructor.call(this);
+  }
+
+  Utils.Extend(Dropdown, Utils.Observable);
+
+  Dropdown.prototype.render = function () {
+    var $dropdown = $(
+      '<span class="select2-dropdown">' +
+        '<span class="select2-results"></span>' +
+      '</span>'
+    );
+
+    $dropdown.attr('dir', this.options.get('dir'));
+
+    this.$dropdown = $dropdown;
+
+    return $dropdown;
+  };
+
+  Dropdown.prototype.bind = function () {
+    // Should be implemented in subclasses
+  };
+
+  Dropdown.prototype.position = function ($dropdown, $container) {
+    // Should be implmented in subclasses
+  };
+
+  Dropdown.prototype.destroy = function () {
+    // Remove the dropdown from the DOM
+    this.$dropdown.remove();
+  };
+
+  return Dropdown;
+});
+
+S2.define('select2/dropdown/search',[
+  'jquery',
+  '../utils'
+], function ($, Utils) {
+  function Search () { }
+
+  Search.prototype.render = function (decorated) {
+    var $rendered = decorated.call(this);
+
+    var $search = $(
+      '<span class="select2-search select2-search--dropdown">' +
+        '<input class="select2-search__field" type="search" tabindex="-1"' +
+        ' autocomplete="off" autocorrect="off" autocapitalize="none"' +
+        ' spellcheck="false" role="textbox" />' +
+      '</span>'
+    );
+
+    this.$searchContainer = $search;
+    this.$search = $search.find('input');
+
+    $rendered.prepend($search);
+
+    return $rendered;
+  };
+
+  Search.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    this.$search.on('keydown', function (evt) {
+      self.trigger('keypress', evt);
+
+      self._keyUpPrevented = evt.isDefaultPrevented();
+    });
+
+    // Workaround for browsers which do not support the `input` event
+    // This will prevent double-triggering of events for browsers which support
+    // both the `keyup` and `input` events.
+    this.$search.on('input', function (evt) {
+      // Unbind the duplicated `keyup` event
+      $(this).off('keyup');
+    });
+
+    this.$search.on('keyup input', function (evt) {
+      self.handleSearch(evt);
+    });
+
+    container.on('open', function () {
+      self.$search.attr('tabindex', 0);
+
+      self.$search.focus();
+
+      window.setTimeout(function () {
+        self.$search.focus();
+      }, 0);
+    });
+
+    container.on('close', function () {
+      self.$search.attr('tabindex', -1);
+
+      self.$search.val('');
+      self.$search.blur();
+    });
+
+    container.on('focus', function () {
+      if (!container.isOpen()) {
+        self.$search.focus();
+      }
+    });
+
+    container.on('results:all', function (params) {
+      if (params.query.term == null || params.query.term === '') {
+        var showSearch = self.showSearch(params);
+
+        if (showSearch) {
+          self.$searchContainer.removeClass('select2-search--hide');
+        } else {
+          self.$searchContainer.addClass('select2-search--hide');
+        }
+      }
+    });
+  };
+
+  Search.prototype.handleSearch = function (evt) {
+    if (!this._keyUpPrevented) {
+      var input = this.$search.val();
+
+      this.trigger('query', {
+        term: input
+      });
+    }
+
+    this._keyUpPrevented = false;
+  };
+
+  Search.prototype.showSearch = function (_, params) {
+    return true;
+  };
+
+  return Search;
+});
+
+S2.define('select2/dropdown/hidePlaceholder',[
+
+], function () {
+  function HidePlaceholder (decorated, $element, options, dataAdapter) {
+    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
+
+    decorated.call(this, $element, options, dataAdapter);
+  }
+
+  HidePlaceholder.prototype.append = function (decorated, data) {
+    data.results = this.removePlaceholder(data.results);
+
+    decorated.call(this, data);
+  };
+
+  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {
+    if (typeof placeholder === 'string') {
+      placeholder = {
+        id: '',
+        text: placeholder
+      };
+    }
+
+    return placeholder;
+  };
+
+  HidePlaceholder.prototype.removePlaceholder = function (_, data) {
+    var modifiedData = data.slice(0);
+
+    for (var d = data.length - 1; d >= 0; d--) {
+      var item = data[d];
+
+      if (this.placeholder.id === item.id) {
+        modifiedData.splice(d, 1);
+      }
+    }
+
+    return modifiedData;
+  };
+
+  return HidePlaceholder;
+});
+
+S2.define('select2/dropdown/infiniteScroll',[
+  'jquery'
+], function ($) {
+  function InfiniteScroll (decorated, $element, options, dataAdapter) {
+    this.lastParams = {};
+
+    decorated.call(this, $element, options, dataAdapter);
+
+    this.$loadingMore = this.createLoadingMore();
+    this.loading = false;
+  }
+
+  InfiniteScroll.prototype.append = function (decorated, data) {
+    this.$loadingMore.remove();
+    this.loading = false;
+
+    decorated.call(this, data);
+
+    if (this.showLoadingMore(data)) {
+      this.$results.append(this.$loadingMore);
+    }
+  };
+
+  InfiniteScroll.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    container.on('query', function (params) {
+      self.lastParams = params;
+      self.loading = true;
+    });
+
+    container.on('query:append', function (params) {
+      self.lastParams = params;
+      self.loading = true;
+    });
+
+    this.$results.on('scroll', function () {
+      var isLoadMoreVisible = $.contains(
+        document.documentElement,
+        self.$loadingMore[0]
+      );
+
+      if (self.loading || !isLoadMoreVisible) {
+        return;
+      }
+
+      var currentOffset = self.$results.offset().top +
+        self.$results.outerHeight(false);
+      var loadingMoreOffset = self.$loadingMore.offset().top +
+        self.$loadingMore.outerHeight(false);
+
+      if (currentOffset + 50 >= loadingMoreOffset) {
+        self.loadMore();
+      }
+    });
+  };
+
+  InfiniteScroll.prototype.loadMore = function () {
+    this.loading = true;
+
+    var params = $.extend({}, {page: 1}, this.lastParams);
+
+    params.page++;
+
+    this.trigger('query:append', params);
+  };
+
+  InfiniteScroll.prototype.showLoadingMore = function (_, data) {
+    return data.pagination && data.pagination.more;
+  };
+
+  InfiniteScroll.prototype.createLoadingMore = function () {
+    var $option = $(
+      '<li ' +
+      'class="select2-results__option select2-results__option--load-more"' +
+      'role="treeitem" aria-disabled="true"></li>'
+    );
+
+    var message = this.options.get('translations').get('loadingMore');
+
+    $option.html(message(this.lastParams));
+
+    return $option;
+  };
+
+  return InfiniteScroll;
+});
+
+S2.define('select2/dropdown/attachBody',[
+  'jquery',
+  '../utils'
+], function ($, Utils) {
+  function AttachBody (decorated, $element, options) {
+    this.$dropdownParent = options.get('dropdownParent') || $(document.body);
+
+    decorated.call(this, $element, options);
+  }
+
+  AttachBody.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    var setupResultsEvents = false;
+
+    decorated.call(this, container, $container);
+
+    container.on('open', function () {
+      self._showDropdown();
+      self._attachPositioningHandler(container);
+
+      if (!setupResultsEvents) {
+        setupResultsEvents = true;
+
+        container.on('results:all', function () {
+          self._positionDropdown();
+          self._resizeDropdown();
+        });
+
+        container.on('results:append', function () {
+          self._positionDropdown();
+          self._resizeDropdown();
+        });
+      }
+    });
+
+    container.on('close', function () {
+      self._hideDropdown();
+      self._detachPositioningHandler(container);
+    });
+
+    this.$dropdownContainer.on('mousedown', function (evt) {
+      evt.stopPropagation();
+    });
+  };
+
+  AttachBody.prototype.destroy = function (decorated) {
+    decorated.call(this);
+
+    this.$dropdownContainer.remove();
+  };
+
+  AttachBody.prototype.position = function (decorated, $dropdown, $container) {
+    // Clone all of the container classes
+    $dropdown.attr('class', $container.attr('class'));
+
+    $dropdown.removeClass('select2');
+    $dropdown.addClass('select2-container--open');
+
+    $dropdown.css({
+      position: 'absolute',
+      top: -999999
+    });
+
+    this.$container = $container;
+  };
+
+  AttachBody.prototype.render = function (decorated) {
+    var $container = $('<span></span>');
+
+    var $dropdown = decorated.call(this);
+    $container.append($dropdown);
+
+    this.$dropdownContainer = $container;
+
+    return $container;
+  };
+
+  AttachBody.prototype._hideDropdown = function (decorated) {
+    this.$dropdownContainer.detach();
+  };
+
+  AttachBody.prototype._attachPositioningHandler =
+      function (decorated, container) {
+    var self = this;
+
+    var scrollEvent = 'scroll.select2.' + container.id;
+    var resizeEvent = 'resize.select2.' + container.id;
+    var orientationEvent = 'orientationchange.select2.' + container.id;
+
+    var $watchers = this.$container.parents().filter(Utils.hasScroll);
+    $watchers.each(function () {
+      Utils.StoreData(this, 'select2-scroll-position', {
+        x: $(this).scrollLeft(),
+        y: $(this).scrollTop()
+      });
+    });
+
+    $watchers.on(scrollEvent, function (ev) {
+      var position = Utils.GetData(this, 'select2-scroll-position');
+      $(this).scrollTop(position.y);
+    });
+
+    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,
+      function (e) {
+      self._positionDropdown();
+      self._resizeDropdown();
+    });
+  };
+
+  AttachBody.prototype._detachPositioningHandler =
+      function (decorated, container) {
+    var scrollEvent = 'scroll.select2.' + container.id;
+    var resizeEvent = 'resize.select2.' + container.id;
+    var orientationEvent = 'orientationchange.select2.' + container.id;
+
+    var $watchers = this.$container.parents().filter(Utils.hasScroll);
+    $watchers.off(scrollEvent);
+
+    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);
+  };
+
+  AttachBody.prototype._positionDropdown = function () {
+    var $window = $(window);
+
+    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');
+    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');
+
+    var newDirection = null;
+
+    var offset = this.$container.offset();
+
+    offset.bottom = offset.top + this.$container.outerHeight(false);
+
+    var container = {
+      height: this.$container.outerHeight(false)
+    };
+
+    container.top = offset.top;
+    container.bottom = offset.top + container.height;
+
+    var dropdown = {
+      height: this.$dropdown.outerHeight(false)
+    };
+
+    var viewport = {
+      top: $window.scrollTop(),
+      bottom: $window.scrollTop() + $window.height()
+    };
+
+    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);
+    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);
+
+    var css = {
+      left: offset.left,
+      top: container.bottom
+    };
+
+    // Determine what the parent element is to use for calciulating the offset
+    var $offsetParent = this.$dropdownParent;
+
+    // For statically positoned elements, we need to get the element
+    // that is determining the offset
+    if ($offsetParent.css('position') === 'static') {
+      $offsetParent = $offsetParent.offsetParent();
+    }
+
+    var parentOffset = $offsetParent.offset();
+
+    css.top -= parentOffset.top;
+    css.left -= parentOffset.left;
+
+    if (!isCurrentlyAbove && !isCurrentlyBelow) {
+      newDirection = 'below';
+    }
+
+    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {
+      newDirection = 'above';
+    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {
+      newDirection = 'below';
+    }
+
+    if (newDirection == 'above' ||
+      (isCurrentlyAbove && newDirection !== 'below')) {
+      css.top = container.top - parentOffset.top - dropdown.height;
+    }
+
+    if (newDirection != null) {
+      this.$dropdown
+        .removeClass('select2-dropdown--below select2-dropdown--above')
+        .addClass('select2-dropdown--' + newDirection);
+      this.$container
+        .removeClass('select2-container--below select2-container--above')
+        .addClass('select2-container--' + newDirection);
+    }
+
+    this.$dropdownContainer.css(css);
+  };
+
+  AttachBody.prototype._resizeDropdown = function () {
+    var css = {
+      width: this.$container.outerWidth(false) + 'px'
+    };
+
+    if (this.options.get('dropdownAutoWidth')) {
+      css.minWidth = css.width;
+      css.position = 'relative';
+      css.width = 'auto';
+    }
+
+    this.$dropdown.css(css);
+  };
+
+  AttachBody.prototype._showDropdown = function (decorated) {
+    this.$dropdownContainer.appendTo(this.$dropdownParent);
+
+    this._positionDropdown();
+    this._resizeDropdown();
+  };
+
+  return AttachBody;
+});
+
+S2.define('select2/dropdown/minimumResultsForSearch',[
+
+], function () {
+  function countResults (data) {
+    var count = 0;
+
+    for (var d = 0; d < data.length; d++) {
+      var item = data[d];
+
+      if (item.children) {
+        count += countResults(item.children);
+      } else {
+        count++;
+      }
+    }
+
+    return count;
+  }
+
+  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {
+    this.minimumResultsForSearch = options.get('minimumResultsForSearch');
+
+    if (this.minimumResultsForSearch < 0) {
+      this.minimumResultsForSearch = Infinity;
+    }
+
+    decorated.call(this, $element, options, dataAdapter);
+  }
+
+  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {
+    if (countResults(params.data.results) < this.minimumResultsForSearch) {
+      return false;
+    }
+
+    return decorated.call(this, params);
+  };
+
+  return MinimumResultsForSearch;
+});
+
+S2.define('select2/dropdown/selectOnClose',[
+  '../utils'
+], function (Utils) {
+  function SelectOnClose () { }
+
+  SelectOnClose.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    container.on('close', function (params) {
+      self._handleSelectOnClose(params);
+    });
+  };
+
+  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
+    if (params && params.originalSelect2Event != null) {
+      var event = params.originalSelect2Event;
+
+      // Don't select an item if the close event was triggered from a select or
+      // unselect event
+      if (event._type === 'select' || event._type === 'unselect') {
+        return;
+      }
+    }
+
+    var $highlightedResults = this.getHighlightedResults();
+
+    // Only select highlighted results
+    if ($highlightedResults.length < 1) {
+      return;
+    }
+
+    var data = Utils.GetData($highlightedResults[0], 'data');
+
+    // Don't re-select already selected resulte
+    if (
+      (data.element != null && data.element.selected) ||
+      (data.element == null && data.selected)
+    ) {
+      return;
+    }
+
+    this.trigger('select', {
+        data: data
+    });
+  };
+
+  return SelectOnClose;
+});
+
+S2.define('select2/dropdown/closeOnSelect',[
+
+], function () {
+  function CloseOnSelect () { }
+
+  CloseOnSelect.prototype.bind = function (decorated, container, $container) {
+    var self = this;
+
+    decorated.call(this, container, $container);
+
+    container.on('select', function (evt) {
+      self._selectTriggered(evt);
+    });
+
+    container.on('unselect', function (evt) {
+      self._selectTriggered(evt);
+    });
+  };
+
+  CloseOnSelect.prototype._selectTriggered = function (_, evt) {
+    var originalEvent = evt.originalEvent;
+
+    // Don't close if the control key is being held
+    if (originalEvent && originalEvent.ctrlKey) {
+      return;
+    }
+
+    this.trigger('close', {
+      originalEvent: originalEvent,
+      originalSelect2Event: evt
+    });
+  };
+
+  return CloseOnSelect;
+});
+
+S2.define('select2/i18n/en',[],function () {
+  // English
+  return {
+    errorLoading: function () {
+      return 'The results could not be loaded.';
+    },
+    inputTooLong: function (args) {
+      var overChars = args.input.length - args.maximum;
+
+      var message = 'Please delete ' + overChars + ' character';
+
+      if (overChars != 1) {
+        message += 's';
+      }
+
+      return message;
+    },
+    inputTooShort: function (args) {
+      var remainingChars = args.minimum - args.input.length;
+
+      var message = 'Please enter ' + remainingChars + ' or more characters';
+
+      return message;
+    },
+    loadingMore: function () {
+      return 'Loading more results…';
+    },
+    maximumSelected: function (args) {
+      var message = 'You can only select ' + args.maximum + ' item';
+
+      if (args.maximum != 1) {
+        message += 's';
+      }
+
+      return message;
+    },
+    noResults: function () {
+      return 'No results found';
+    },
+    searching: function () {
+      return 'Searching…';
+    }
+  };
+});
+
+S2.define('select2/defaults',[
+  'jquery',
+  'require',
+
+  './results',
+
+  './selection/single',
+  './selection/multiple',
+  './selection/placeholder',
+  './selection/allowClear',
+  './selection/search',
+  './selection/eventRelay',
+
+  './utils',
+  './translation',
+  './diacritics',
+
+  './data/select',
+  './data/array',
+  './data/ajax',
+  './data/tags',
+  './data/tokenizer',
+  './data/minimumInputLength',
+  './data/maximumInputLength',
+  './data/maximumSelectionLength',
+
+  './dropdown',
+  './dropdown/search',
+  './dropdown/hidePlaceholder',
+  './dropdown/infiniteScroll',
+  './dropdown/attachBody',
+  './dropdown/minimumResultsForSearch',
+  './dropdown/selectOnClose',
+  './dropdown/closeOnSelect',
+
+  './i18n/en'
+], function ($, require,
+
+             ResultsList,
+
+             SingleSelection, MultipleSelection, Placeholder, AllowClear,
+             SelectionSearch, EventRelay,
+
+             Utils, Translation, DIACRITICS,
+
+             SelectData, ArrayData, AjaxData, Tags, Tokenizer,
+             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,
+
+             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
+             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
+
+             EnglishTranslation) {
+  function Defaults () {
+    this.reset();
+  }
+
+  Defaults.prototype.apply = function (options) {
+    options = $.extend(true, {}, this.defaults, options);
+
+    if (options.dataAdapter == null) {
+      if (options.ajax != null) {
+        options.dataAdapter = AjaxData;
+      } else if (options.data != null) {
+        options.dataAdapter = ArrayData;
+      } else {
+        options.dataAdapter = SelectData;
+      }
+
+      if (options.minimumInputLength > 0) {
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          MinimumInputLength
+        );
+      }
+
+      if (options.maximumInputLength > 0) {
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          MaximumInputLength
+        );
+      }
+
+      if (options.maximumSelectionLength > 0) {
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          MaximumSelectionLength
+        );
+      }
+
+      if (options.tags) {
+        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);
+      }
+
+      if (options.tokenSeparators != null || options.tokenizer != null) {
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          Tokenizer
+        );
+      }
+
+      if (options.query != null) {
+        var Query = require(options.amdBase + 'compat/query');
+
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          Query
+        );
+      }
+
+      if (options.initSelection != null) {
+        var InitSelection = require(options.amdBase + 'compat/initSelection');
+
+        options.dataAdapter = Utils.Decorate(
+          options.dataAdapter,
+          InitSelection
+        );
+      }
+    }
+
+    if (options.resultsAdapter == null) {
+      options.resultsAdapter = ResultsList;
+
+      if (options.ajax != null) {
+        options.resultsAdapter = Utils.Decorate(
+          options.resultsAdapter,
+          InfiniteScroll
+        );
+      }
+
+      if (options.placeholder != null) {
+        options.resultsAdapter = Utils.Decorate(
+          options.resultsAdapter,
+          HidePlaceholder
+        );
+      }
+
+      if (options.selectOnClose) {
+        options.resultsAdapter = Utils.Decorate(
+          options.resultsAdapter,
+          SelectOnClose
+        );
+      }
+    }
+
+    if (options.dropdownAdapter == null) {
+      if (options.multiple) {
+        options.dropdownAdapter = Dropdown;
+      } else {
+        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);
+
+        options.dropdownAdapter = SearchableDropdown;
+      }
+
+      if (options.minimumResultsForSearch !== 0) {
+        options.dropdownAdapter = Utils.Decorate(
+          options.dropdownAdapter,
+          MinimumResultsForSearch
+        );
+      }
+
+      if (options.closeOnSelect) {
+        options.dropdownAdapter = Utils.Decorate(
+          options.dropdownAdapter,
+          CloseOnSelect
+        );
+      }
+
+      if (
+        options.dropdownCssClass != null ||
+        options.dropdownCss != null ||
+        options.adaptDropdownCssClass != null
+      ) {
+        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
+
+        options.dropdownAdapter = Utils.Decorate(
+          options.dropdownAdapter,
+          DropdownCSS
+        );
+      }
+
+      options.dropdownAdapter = Utils.Decorate(
+        options.dropdownAdapter,
+        AttachBody
+      );
+    }
+
+    if (options.selectionAdapter == null) {
+      if (options.multiple) {
+        options.selectionAdapter = MultipleSelection;
+      } else {
+        options.selectionAdapter = SingleSelection;
+      }
+
+      // Add the placeholder mixin if a placeholder was specified
+      if (options.placeholder != null) {
+        options.selectionAdapter = Utils.Decorate(
+          options.selectionAdapter,
+          Placeholder
+        );
+      }
+
+      if (options.allowClear) {
+        options.selectionAdapter = Utils.Decorate(
+          options.selectionAdapter,
+          AllowClear
+        );
+      }
+
+      if (options.multiple) {
+        options.selectionAdapter = Utils.Decorate(
+          options.selectionAdapter,
+          SelectionSearch
+        );
+      }
+
+      if (
+        options.containerCssClass != null ||
+        options.containerCss != null ||
+        options.adaptContainerCssClass != null
+      ) {
+        var ContainerCSS = require(options.amdBase + 'compat/containerCss');
+
+        options.selectionAdapter = Utils.Decorate(
+          options.selectionAdapter,
+          ContainerCSS
+        );
+      }
+
+      options.selectionAdapter = Utils.Decorate(
+        options.selectionAdapter,
+        EventRelay
+      );
+    }
+
+    if (typeof options.language === 'string') {
+      // Check if the language is specified with a region
+      if (options.language.indexOf('-') > 0) {
+        // Extract the region information if it is included
+        var languageParts = options.language.split('-');
+        var baseLanguage = languageParts[0];
+
+        options.language = [options.language, baseLanguage];
+      } else {
+        options.language = [options.language];
+      }
+    }
+
+    if ($.isArray(options.language)) {
+      var languages = new Translation();
+      options.language.push('en');
+
+      var languageNames = options.language;
+
+      for (var l = 0; l < languageNames.length; l++) {
+        var name = languageNames[l];
+        var language = {};
+
+        try {
+          // Try to load it with the original name
+          language = Translation.loadPath(name);
+        } catch (e) {
+          try {
+            // If we couldn't load it, check if it wasn't the full path
+            name = this.defaults.amdLanguageBase + name;
+            language = Translation.loadPath(name);
+          } catch (ex) {
+            // The translation could not be loaded at all. Sometimes this is
+            // because of a configuration problem, other times this can be
+            // because of how Select2 helps load all possible translation files.
+            if (options.debug && window.console && console.warn) {
+              console.warn(
+                'Select2: The language file for "' + name + '" could not be ' +
+                'automatically loaded. A fallback will be used instead.'
+              );
+            }
+
+            continue;
+          }
+        }
+
+        languages.extend(language);
+      }
+
+      options.translations = languages;
+    } else {
+      var baseTranslation = Translation.loadPath(
+        this.defaults.amdLanguageBase + 'en'
+      );
+      var customTranslation = new Translation(options.language);
+
+      customTranslation.extend(baseTranslation);
+
+      options.translations = customTranslation;
+    }
+
+    return options;
+  };
+
+  Defaults.prototype.reset = function () {
+    function stripDiacritics (text) {
+      // Used 'uni range + named function' from http://jsperf.com/diacritics/18
+      function match(a) {
+        return DIACRITICS[a] || a;
+      }
+
+      return text.replace(/[^\u0000-\u007E]/g, match);
+    }
+
+    function matcher (params, data) {
+      // Always return the object if there is nothing to compare
+      if ($.trim(params.term) === '') {
+        return data;
+      }
+
+      // Do a recursive check for options with children
+      if (data.children && data.children.length > 0) {
+        // Clone the data object if there are children
+        // This is required as we modify the object to remove any non-matches
+        var match = $.extend(true, {}, data);
+
+        // Check each child of the option
+        for (var c = data.children.length - 1; c >= 0; c--) {
+          var child = data.children[c];
+
+          var matches = matcher(params, child);
+
+          // If there wasn't a match, remove the object in the array
+          if (matches == null) {
+            match.children.splice(c, 1);
+          }
+        }
+
+        // If any children matched, return the new object
+        if (match.children.length > 0) {
+          return match;
+        }
+
+        // If there were no matching children, check just the plain object
+        return matcher(params, match);
+      }
+
+      var original = stripDiacritics(data.text).toUpperCase();
+      var term = stripDiacritics(params.term).toUpperCase();
+
+      // Check if the text contains the term
+      if (original.indexOf(term) > -1) {
+        return data;
+      }
+
+      // If it doesn't contain the term, don't return anything
+      return null;
+    }
+
+    this.defaults = {
+      amdBase: './',
+      amdLanguageBase: './i18n/',
+      closeOnSelect: true,
+      debug: false,
+      dropdownAutoWidth: false,
+      escapeMarkup: Utils.escapeMarkup,
+      language: EnglishTranslation,
+      matcher: matcher,
+      minimumInputLength: 0,
+      maximumInputLength: 0,
+      maximumSelectionLength: 0,
+      minimumResultsForSearch: 0,
+      selectOnClose: false,
+      sorter: function (data) {
+        return data;
+      },
+      templateResult: function (result) {
+        return result.text;
+      },
+      templateSelection: function (selection) {
+        return selection.text;
+      },
+      theme: 'default',
+      width: 'resolve'
+    };
+  };
+
+  Defaults.prototype.set = function (key, value) {
+    var camelKey = $.camelCase(key);
+
+    var data = {};
+    data[camelKey] = value;
+
+    var convertedData = Utils._convertData(data);
+
+    $.extend(true, this.defaults, convertedData);
+  };
+
+  var defaults = new Defaults();
+
+  return defaults;
+});
+
+S2.define('select2/options',[
+  'require',
+  'jquery',
+  './defaults',
+  './utils'
+], function (require, $, Defaults, Utils) {
+  function Options (options, $element) {
+    this.options = options;
+
+    if ($element != null) {
+      this.fromElement($element);
+    }
+
+    this.options = Defaults.apply(this.options);
+
+    if ($element && $element.is('input')) {
+      var InputCompat = require(this.get('amdBase') + 'compat/inputData');
+
+      this.options.dataAdapter = Utils.Decorate(
+        this.options.dataAdapter,
+        InputCompat
+      );
+    }
+  }
+
+  Options.prototype.fromElement = function ($e) {
+    var excludedData = ['select2'];
+
+    if (this.options.multiple == null) {
+      this.options.multiple = $e.prop('multiple');
+    }
+
+    if (this.options.disabled == null) {
+      this.options.disabled = $e.prop('disabled');
+    }
+
+    if (this.options.language == null) {
+      if ($e.prop('lang')) {
+        this.options.language = $e.prop('lang').toLowerCase();
+      } else if ($e.closest('[lang]').prop('lang')) {
+        this.options.language = $e.closest('[lang]').prop('lang');
+      }
+    }
+
+    if (this.options.dir == null) {
+      if ($e.prop('dir')) {
+        this.options.dir = $e.prop('dir');
+      } else if ($e.closest('[dir]').prop('dir')) {
+        this.options.dir = $e.closest('[dir]').prop('dir');
+      } else {
+        this.options.dir = 'ltr';
+      }
+    }
+
+    $e.prop('disabled', this.options.disabled);
+    $e.prop('multiple', this.options.multiple);
+
+    if (Utils.GetData($e[0], 'select2Tags')) {
+      if (this.options.debug && window.console && console.warn) {
+        console.warn(
+          'Select2: The `data-select2-tags` attribute has been changed to ' +
+          'use the `data-data` and `data-tags="true"` attributes and will be ' +
+          'removed in future versions of Select2.'
+        );
+      }
+
+      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));
+      Utils.StoreData($e[0], 'tags', true);
+    }
+
+    if (Utils.GetData($e[0], 'ajaxUrl')) {
+      if (this.options.debug && window.console && console.warn) {
+        console.warn(
+          'Select2: The `data-ajax-url` attribute has been changed to ' +
+          '`data-ajax--url` and support for the old attribute will be removed' +
+          ' in future versions of Select2.'
+        );
+      }
+
+      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));
+      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));
+	  
+    }
+
+    var dataset = {};
+
+    // Prefer the element's `dataset` attribute if it exists
+    // jQuery 1.x does not correctly handle data attributes with multiple dashes
+    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {
+      dataset = $.extend(true, {}, $e[0].dataset, Utils.GetData($e[0]));
+    } else {
+      dataset = Utils.GetData($e[0]);
+    }
+
+    var data = $.extend(true, {}, dataset);
+
+    data = Utils._convertData(data);
+
+    for (var key in data) {
+      if ($.inArray(key, excludedData) > -1) {
+        continue;
+      }
+
+      if ($.isPlainObject(this.options[key])) {
+        $.extend(this.options[key], data[key]);
+      } else {
+        this.options[key] = data[key];
+      }
+    }
+
+    return this;
+  };
+
+  Options.prototype.get = function (key) {
+    return this.options[key];
+  };
+
+  Options.prototype.set = function (key, val) {
+    this.options[key] = val;
+  };
+
+  return Options;
+});
+
+S2.define('select2/core',[
+  'jquery',
+  './options',
+  './utils',
+  './keys'
+], function ($, Options, Utils, KEYS) {
+  var Select2 = function ($element, options) {
+    if (Utils.GetData($element[0], 'select2') != null) {
+      Utils.GetData($element[0], 'select2').destroy();
+    }
+
+    this.$element = $element;
+
+    this.id = this._generateId($element);
+
+    options = options || {};
+
+    this.options = new Options(options, $element);
+
+    Select2.__super__.constructor.call(this);
+
+    // Set up the tabindex
+
+    var tabindex = $element.attr('tabindex') || 0;
+    Utils.StoreData($element[0], 'old-tabindex', tabindex);
+    $element.attr('tabindex', '-1');
+
+    // Set up containers and adapters
+
+    var DataAdapter = this.options.get('dataAdapter');
+    this.dataAdapter = new DataAdapter($element, this.options);
+
+    var $container = this.render();
+
+    this._placeContainer($container);
+
+    var SelectionAdapter = this.options.get('selectionAdapter');
+    this.selection = new SelectionAdapter($element, this.options);
+    this.$selection = this.selection.render();
+
+    this.selection.position(this.$selection, $container);
+
+    var DropdownAdapter = this.options.get('dropdownAdapter');
+    this.dropdown = new DropdownAdapter($element, this.options);
+    this.$dropdown = this.dropdown.render();
+
+    this.dropdown.position(this.$dropdown, $container);
+
+    var ResultsAdapter = this.options.get('resultsAdapter');
+    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);
+    this.$results = this.results.render();
+
+    this.results.position(this.$results, this.$dropdown);
+
+    // Bind events
+
+    var self = this;
+
+    // Bind the container to all of the adapters
+    this._bindAdapters();
+
+    // Register any DOM event handlers
+    this._registerDomEvents();
+
+    // Register any internal event handlers
+    this._registerDataEvents();
+    this._registerSelectionEvents();
+    this._registerDropdownEvents();
+    this._registerResultsEvents();
+    this._registerEvents();
+
+    // Set the initial state
+    this.dataAdapter.current(function (initialData) {
+      self.trigger('selection:update', {
+        data: initialData
+      });
+    });
+
+    // Hide the original select
+    $element.addClass('select2-hidden-accessible');
+    $element.attr('aria-hidden', 'true');
+
+    // Synchronize any monitored attributes
+    this._syncAttributes();
+
+    Utils.StoreData($element[0], 'select2', this);
+
+    // Ensure backwards compatibility with $element.data('select2').
+    $element.data('select2', this);
+  };
+
+  Utils.Extend(Select2, Utils.Observable);
+
+  Select2.prototype._generateId = function ($element) {
+    var id = '';
+
+    if ($element.attr('id') != null) {
+      id = $element.attr('id');
+    } else if ($element.attr('name') != null) {
+      id = $element.attr('name') + '-' + Utils.generateChars(2);
+    } else {
+      id = Utils.generateChars(4);
+    }
+
+    id = id.replace(/(:|\.|\[|\]|,)/g, '');
+    id = 'select2-' + id;
+
+    return id;
+  };
+
+  Select2.prototype._placeContainer = function ($container) {
+    $container.insertAfter(this.$element);
+
+    var width = this._resolveWidth(this.$element, this.options.get('width'));
+
+    if (width != null) {
+      $container.css('width', width);
+    }
+  };
+
+  Select2.prototype._resolveWidth = function ($element, method) {
+    var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
+
+    if (method == 'resolve') {
+      var styleWidth = this._resolveWidth($element, 'style');
+
+      if (styleWidth != null) {
+        return styleWidth;
+      }
+
+      return this._resolveWidth($element, 'element');
+    }
+
+    if (method == 'element') {
+      var elementWidth = $element.outerWidth(false);
+
+      if (elementWidth <= 0) {
+        return 'auto';
+      }
+
+      return elementWidth + 'px';
+    }
+
+    if (method == 'style') {
+      var style = $element.attr('style');
+
+      if (typeof(style) !== 'string') {
+        return null;
+      }
+
+      var attrs = style.split(';');
+
+      for (var i = 0, l = attrs.length; i < l; i = i + 1) {
+        var attr = attrs[i].replace(/\s/g, '');
+        var matches = attr.match(WIDTH);
+
+        if (matches !== null && matches.length >= 1) {
+          return matches[1];
+        }
+      }
+
+      return null;
+    }
+
+    return method;
+  };
+
+  Select2.prototype._bindAdapters = function () {
+    this.dataAdapter.bind(this, this.$container);
+    this.selection.bind(this, this.$container);
+
+    this.dropdown.bind(this, this.$container);
+    this.results.bind(this, this.$container);
+  };
+
+  Select2.prototype._registerDomEvents = function () {
+    var self = this;
+
+    this.$element.on('change.select2', function () {
+      self.dataAdapter.current(function (data) {
+        self.trigger('selection:update', {
+          data: data
+        });
+      });
+    });
+
+    this.$element.on('focus.select2', function (evt) {
+      self.trigger('focus', evt);
+    });
+
+    this._syncA = Utils.bind(this._syncAttributes, this);
+    this._syncS = Utils.bind(this._syncSubtree, this);
+
+    if (this.$element[0].attachEvent) {
+      this.$element[0].attachEvent('onpropertychange', this._syncA);
+    }
+
+    var observer = window.MutationObserver ||
+      window.WebKitMutationObserver ||
+      window.MozMutationObserver
+    ;
+
+    if (observer != null) {
+      this._observer = new observer(function (mutations) {
+        $.each(mutations, self._syncA);
+        $.each(mutations, self._syncS);
+      });
+      this._observer.observe(this.$element[0], {
+        attributes: true,
+        childList: true,
+        subtree: false
+      });
+    } else if (this.$element[0].addEventListener) {
+      this.$element[0].addEventListener(
+        'DOMAttrModified',
+        self._syncA,
+        false
+      );
+      this.$element[0].addEventListener(
+        'DOMNodeInserted',
+        self._syncS,
+        false
+      );
+      this.$element[0].addEventListener(
+        'DOMNodeRemoved',
+        self._syncS,
+        false
+      );
+    }
+  };
+
+  Select2.prototype._registerDataEvents = function () {
+    var self = this;
+
+    this.dataAdapter.on('*', function (name, params) {
+      self.trigger(name, params);
+    });
+  };
+
+  Select2.prototype._registerSelectionEvents = function () {
+    var self = this;
+    var nonRelayEvents = ['toggle', 'focus'];
+
+    this.selection.on('toggle', function () {
+      self.toggleDropdown();
+    });
+
+    this.selection.on('focus', function (params) {
+      self.focus(params);
+    });
+
+    this.selection.on('*', function (name, params) {
+      if ($.inArray(name, nonRelayEvents) !== -1) {
+        return;
+      }
+
+      self.trigger(name, params);
+    });
+  };
+
+  Select2.prototype._registerDropdownEvents = function () {
+    var self = this;
+
+    this.dropdown.on('*', function (name, params) {
+      self.trigger(name, params);
+    });
+  };
+
+  Select2.prototype._registerResultsEvents = function () {
+    var self = this;
+
+    this.results.on('*', function (name, params) {
+      self.trigger(name, params);
+    });
+  };
+
+  Select2.prototype._registerEvents = function () {
+    var self = this;
+
+    this.on('open', function () {
+      self.$container.addClass('select2-container--open');
+    });
+
+    this.on('close', function () {
+      self.$container.removeClass('select2-container--open');
+    });
+
+    this.on('enable', function () {
+      self.$container.removeClass('select2-container--disabled');
+    });
+
+    this.on('disable', function () {
+      self.$container.addClass('select2-container--disabled');
+    });
+
+    this.on('blur', function () {
+      self.$container.removeClass('select2-container--focus');
+    });
+
+    this.on('query', function (params) {
+      if (!self.isOpen()) {
+        self.trigger('open', {});
+      }
+
+      this.dataAdapter.query(params, function (data) {
+        self.trigger('results:all', {
+          data: data,
+          query: params
+        });
+      });
+    });
+
+    this.on('query:append', function (params) {
+      this.dataAdapter.query(params, function (data) {
+        self.trigger('results:append', {
+          data: data,
+          query: params
+        });
+      });
+    });
+
+    this.on('keypress', function (evt) {
+      var key = evt.which;
+
+      if (self.isOpen()) {
+        if (key === KEYS.ESC || key === KEYS.TAB ||
+            (key === KEYS.UP && evt.altKey)) {
+          self.close();
+
+          evt.preventDefault();
+        } else if (key === KEYS.ENTER) {
+          self.trigger('results:select', {});
+
+          evt.preventDefault();
+        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {
+          self.trigger('results:toggle', {});
+
+          evt.preventDefault();
+        } else if (key === KEYS.UP) {
+          self.trigger('results:previous', {});
+
+          evt.preventDefault();
+        } else if (key === KEYS.DOWN) {
+          self.trigger('results:next', {});
+
+          evt.preventDefault();
+        }
+      } else {
+        if (key === KEYS.ENTER || key === KEYS.SPACE ||
+            (key === KEYS.DOWN && evt.altKey)) {
+          self.open();
+
+          evt.preventDefault();
+        }
+      }
+    });
+  };
+
+  Select2.prototype._syncAttributes = function () {
+    this.options.set('disabled', this.$element.prop('disabled'));
+
+    if (this.options.get('disabled')) {
+      if (this.isOpen()) {
+        this.close();
+      }
+
+      this.trigger('disable', {});
+    } else {
+      this.trigger('enable', {});
+    }
+  };
+
+  Select2.prototype._syncSubtree = function (evt, mutations) {
+    var changed = false;
+    var self = this;
+
+    // Ignore any mutation events raised for elements that aren't options or
+    // optgroups. This handles the case when the select element is destroyed
+    if (
+      evt && evt.target && (
+        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
+      )
+    ) {
+      return;
+    }
+
+    if (!mutations) {
+      // If mutation events aren't supported, then we can only assume that the
+      // change affected the selections
+      changed = true;
+    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
+      for (var n = 0; n < mutations.addedNodes.length; n++) {
+        var node = mutations.addedNodes[n];
+
+        if (node.selected) {
+          changed = true;
+        }
+      }
+    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
+      changed = true;
+    }
+
+    // Only re-pull the data if we think there is a change
+    if (changed) {
+      this.dataAdapter.current(function (currentData) {
+        self.trigger('selection:update', {
+          data: currentData
+        });
+      });
+    }
+  };
+
+  /**
+   * Override the trigger method to automatically trigger pre-events when
+   * there are events that can be prevented.
+   */
+  Select2.prototype.trigger = function (name, args) {
+    var actualTrigger = Select2.__super__.trigger;
+    var preTriggerMap = {
+      'open': 'opening',
+      'close': 'closing',
+      'select': 'selecting',
+      'unselect': 'unselecting',
+      'clear': 'clearing'
+    };
+
+    if (args === undefined) {
+      args = {};
+    }
+
+    if (name in preTriggerMap) {
+      var preTriggerName = preTriggerMap[name];
+      var preTriggerArgs = {
+        prevented: false,
+        name: name,
+        args: args
+      };
+
+      actualTrigger.call(this, preTriggerName, preTriggerArgs);
+
+      if (preTriggerArgs.prevented) {
+        args.prevented = true;
+
+        return;
+      }
+    }
+
+    actualTrigger.call(this, name, args);
+  };
+
+  Select2.prototype.toggleDropdown = function () {
+    if (this.options.get('disabled')) {
+      return;
+    }
+
+    if (this.isOpen()) {
+      this.close();
+    } else {
+      this.open();
+    }
+  };
+
+  Select2.prototype.open = function () {
+    if (this.isOpen()) {
+      return;
+    }
+
+    this.trigger('query', {});
+  };
+
+  Select2.prototype.close = function () {
+    if (!this.isOpen()) {
+      return;
+    }
+
+    this.trigger('close', {});
+  };
+
+  Select2.prototype.isOpen = function () {
+    return this.$container.hasClass('select2-container--open');
+  };
+
+  Select2.prototype.hasFocus = function () {
+    return this.$container.hasClass('select2-container--focus');
+  };
+
+  Select2.prototype.focus = function (data) {
+    // No need to re-trigger focus events if we are already focused
+    if (this.hasFocus()) {
+      return;
+    }
+
+    this.$container.addClass('select2-container--focus');
+    this.trigger('focus', {});
+  };
+
+  Select2.prototype.enable = function (args) {
+    if (this.options.get('debug') && window.console && console.warn) {
+      console.warn(
+        'Select2: The `select2("enable")` method has been deprecated and will' +
+        ' be removed in later Select2 versions. Use $element.prop("disabled")' +
+        ' instead.'
+      );
+    }
+
+    if (args == null || args.length === 0) {
+      args = [true];
+    }
+
+    var disabled = !args[0];
+
+    this.$element.prop('disabled', disabled);
+  };
+
+  Select2.prototype.data = function () {
+    if (this.options.get('debug') &&
+        arguments.length > 0 && window.console && console.warn) {
+      console.warn(
+        'Select2: Data can no longer be set using `select2("data")`. You ' +
+        'should consider setting the value instead using `$element.val()`.'
+      );
+    }
+
+    var data = [];
+
+    this.dataAdapter.current(function (currentData) {
+      data = currentData;
+    });
+
+    return data;
+  };
+
+  Select2.prototype.val = function (args) {
+    if (this.options.get('debug') && window.console && console.warn) {
+      console.warn(
+        'Select2: The `select2("val")` method has been deprecated and will be' +
+        ' removed in later Select2 versions. Use $element.val() instead.'
+      );
+    }
+
+    if (args == null || args.length === 0) {
+      return this.$element.val();
+    }
+
+    var newVal = args[0];
+
+    if ($.isArray(newVal)) {
+      newVal = $.map(newVal, function (obj) {
+        return obj.toString();
+      });
+    }
+
+    this.$element.val(newVal).trigger('change');
+  };
+
+  Select2.prototype.destroy = function () {
+    this.$container.remove();
+
+    if (this.$element[0].detachEvent) {
+      this.$element[0].detachEvent('onpropertychange', this._syncA);
+    }
+
+    if (this._observer != null) {
+      this._observer.disconnect();
+      this._observer = null;
+    } else if (this.$element[0].removeEventListener) {
+      this.$element[0]
+        .removeEventListener('DOMAttrModified', this._syncA, false);
+      this.$element[0]
+        .removeEventListener('DOMNodeInserted', this._syncS, false);
+      this.$element[0]
+        .removeEventListener('DOMNodeRemoved', this._syncS, false);
+    }
+
+    this._syncA = null;
+    this._syncS = null;
+
+    this.$element.off('.select2');
+    this.$element.attr('tabindex',
+    Utils.GetData(this.$element[0], 'old-tabindex'));
+
+    this.$element.removeClass('select2-hidden-accessible');
+    this.$element.attr('aria-hidden', 'false');
+    Utils.RemoveData(this.$element[0]);
+    this.$element.removeData('select2');
+
+    this.dataAdapter.destroy();
+    this.selection.destroy();
+    this.dropdown.destroy();
+    this.results.destroy();
+
+    this.dataAdapter = null;
+    this.selection = null;
+    this.dropdown = null;
+    this.results = null;
+  };
+
+  Select2.prototype.render = function () {
+    var $container = $(
+      '<span class="select2 select2-container">' +
+        '<span class="selection"></span>' +
+        '<span class="dropdown-wrapper" aria-hidden="true"></span>' +
+      '</span>'
+    );
+
+    $container.attr('dir', this.options.get('dir'));
+
+    this.$container = $container;
+
+    this.$container.addClass('select2-container--' + this.options.get('theme'));
+
+    Utils.StoreData($container[0], 'element', this.$element);
+
+    return $container;
+  };
+
+  return Select2;
+});
+
+S2.define('jquery-mousewheel',[
+  'jquery'
+], function ($) {
+  // Used to shim jQuery.mousewheel for non-full builds.
+  return $;
+});
+
+S2.define('jquery.select2',[
+  'jquery',
+  'jquery-mousewheel',
+
+  './select2/core',
+  './select2/defaults',
+  './select2/utils'
+], function ($, _, Select2, Defaults, Utils) {
+  if ($.fn.select2 == null) {
+    // All methods that should return the element
+    var thisMethods = ['open', 'close', 'destroy'];
+
+    $.fn.select2 = function (options) {
+      options = options || {};
+
+      if (typeof options === 'object') {
+        this.each(function () {
+          var instanceOptions = $.extend(true, {}, options);
+
+          var instance = new Select2($(this), instanceOptions);
+        });
+
+        return this;
+      } else if (typeof options === 'string') {
+        var ret;
+        var args = Array.prototype.slice.call(arguments, 1);
+
+        this.each(function () {
+          var instance = Utils.GetData(this, 'select2');
+
+          if (instance == null && window.console && console.error) {
+            console.error(
+              'The select2(\'' + options + '\') method was called on an ' +
+              'element that is not using Select2.'
+            );
+          }
+
+          ret = instance[options].apply(instance, args);
+        });
+
+        // Check if we should be returning `this`
+        if ($.inArray(options, thisMethods) > -1) {
+          return this;
+        }
+
+        return ret;
+      } else {
+        throw new Error('Invalid arguments for Select2: ' + options);
+      }
+    };
+  }
+
+  if ($.fn.select2.defaults == null) {
+    $.fn.select2.defaults = Defaults;
+  }
+
+  return Select2;
+});
+
+  // Return the AMD loader configuration so it can be used outside of this file
+  return {
+    define: S2.define,
+    require: S2.require
+  };
+}());
+
+  // Autoload the jQuery bindings
+  // We know that all of the modules exist above this, so we're safe
+  var select2 = S2.require('jquery.select2');
+
+  // Hold the AMD module references on the jQuery function that was just loaded
+  // This allows Select2 to use the internal loader outside of this file, such
+  // as in the language files.
+  jQuery.fn.select2.amd = S2;
+
+  // Return the Select2 instance for anyone who is importing it.
+  return select2;
+}));
Index: public/vendors/select2/js/select2.min.js
===================================================================
--- public/vendors/select2/js/select2.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/select2/js/select2.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k<a.length;k++)if("."===(m=a[k]))a.splice(k,1),k-=1;else if(".."===m){if(0===k||1===k&&".."===a[2]||".."===a[k-1])continue;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o<c.length;o+=1)if(n=p(c[o],t),"require"===(k=n.f))w[o]=q.require(a);else if("exports"===k)w[o]=q.exports(a),v=!0;else if("module"===k)h=w[o]=q.module(a);else if(e(r,k)||e(s,k)||e(u,k))w[o]=j(k);else{if(!n.p)throw new Error(a+" missing "+k);n.p.load(n.n,g(f,!0),i(k),{}),w[o]=r[k]}m=d?d.apply(r[a],w):void 0,a&&(h&&h.exports!==b&&h.exports!==r[a]?r[a]=h.exports:m===b&&v||(r[a]=m))}else a&&(r[a]=d)},a=c=o=function(a,c,d,e,f){if("string"==typeof a)return q[a]?q[a](c):j(p(a,l(c)).f);if(!a.splice){if(t=a,t.deps&&o(t.deps,t.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?n(b,a,c,d):setTimeout(function(){n(b,a,c,d)},4),o},o.config=function(a){return o(a)},a._defined=r,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(r,a)||e(s,a)||(s[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){"function"==typeof b[d]&&("constructor"!==d&&c.push(d))}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){return Array.prototype.unshift.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;c<d;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;c<a;c++){b+=Math.floor(36*Math.random()).toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return(e!==f||"hidden"!==f&&"visible"!==f)&&("scroll"===e||"scroll"===f||(d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth))},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c.__cache={};var e=0;return c.GetUniqueElementId=function(a){var b=a.getAttribute("data-select2-id");return null==b&&(a.id?(b=a.id,a.setAttribute("data-select2-id",b)):(a.setAttribute("data-select2-id",++e),b=e.toString())),b},c.StoreData=function(a,b,d){var e=c.GetUniqueElementId(a);c.__cache[e]||(c.__cache[e]={}),c.__cache[e][b]=d},c.GetData=function(b,d){var e=c.GetUniqueElementId(b);return d?c.__cache[e]&&null!=c.__cache[e][d]?c.__cache[e][d]:a(b).data(d):c.__cache[e]},c.RemoveData=function(a){var b=c.GetUniqueElementId(a);null!=c.__cache[b]&&delete c.__cache[b]},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){b.find(".select2-results").append(a)},c.prototype.sort=function(a){return this.options.get("sorter")(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var c=this;this.data.current(function(d){var e=a.map(d,function(a){return a.id.toString()});c.$results.find(".select2-results__option[aria-selected]").each(function(){var c=a(this),d=b.GetData(this,"data"),f=""+d.id;null!=d.element&&d.element.selected||null==d.element&&a.inArray(f,e)>-1?c.attr("aria-selected","true"):c.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(c){var d=document.createElement("li");d.className="select2-results__option";var e={role:"treeitem","aria-selected":"false"};c.disabled&&(delete e["aria-selected"],e["aria-disabled"]="true"),null==c.id&&delete e["aria-selected"],null!=c._resultId&&(d.id=c._resultId),c.title&&(d.title=c.title),c.children&&(e.role="group",e["aria-label"]=c.text,delete e["aria-selected"]);for(var f in e){var g=e[f];d.setAttribute(f,g)}if(c.children){var h=a(d),i=document.createElement("strong");i.className="select2-results__group";a(i);this.template(c,i);for(var j=[],k=0;k<c.children.length;k++){var l=c.children[k],m=this.option(l);j.push(m)}var n=a("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});n.append(j),h.append(i),h.append(n)}else this.template(c,d);return b.StoreData(d,"data",c),d},c.prototype.bind=function(c,d){var e=this,f=c.id+"-results";this.$results.attr("id",f),c.on("results:all",function(a){e.clear(),e.append(a.data),c.isOpen()&&(e.setClasses(),e.highlightFirstItem())}),c.on("results:append",function(a){e.append(a.data),c.isOpen()&&e.setClasses()}),c.on("query",function(a){e.hideMessages(),e.showLoading(a)}),c.on("select",function(){c.isOpen()&&(e.setClasses(),e.highlightFirstItem())}),c.on("unselect",function(){c.isOpen()&&(e.setClasses(),e.highlightFirstItem())}),c.on("open",function(){e.$results.attr("aria-expanded","true"),e.$results.attr("aria-hidden","false"),e.setClasses(),e.ensureHighlightVisible()}),c.on("close",function(){e.$results.attr("aria-expanded","false"),e.$results.attr("aria-hidden","true"),e.$results.removeAttr("aria-activedescendant")}),c.on("results:toggle",function(){var a=e.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),c.on("results:select",function(){var a=e.getHighlightedResults();if(0!==a.length){var c=b.GetData(a[0],"data");"true"==a.attr("aria-selected")?e.trigger("close",{}):e.trigger("select",{data:c})}}),c.on("results:previous",function(){var a=e.getHighlightedResults(),b=e.$results.find("[aria-selected]"),c=b.index(a);if(!(c<=0)){var d=c-1;0===a.length&&(d=0);var f=b.eq(d);f.trigger("mouseenter");var g=e.$results.offset().top,h=f.offset().top,i=e.$results.scrollTop()+(h-g);0===d?e.$results.scrollTop(0):h-g<0&&e.$results.scrollTop(i)}}),c.on("results:next",function(){var a=e.getHighlightedResults(),b=e.$results.find("[aria-selected]"),c=b.index(a),d=c+1;if(!(d>=b.length)){var f=b.eq(d);f.trigger("mouseenter");var g=e.$results.offset().top+e.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=e.$results.scrollTop()+h-g;0===d?e.$results.scrollTop(0):h>g&&e.$results.scrollTop(i)}}),c.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),c.on("results:message",function(a){e.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=e.$results.scrollTop(),c=e.$results.get(0).scrollHeight-b+a.deltaY,d=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=e.$results.height();d?(e.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(e.$results.scrollTop(e.$results.get(0).scrollHeight-e.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(c){var d=a(this),f=b.GetData(this,"data");if("true"===d.attr("aria-selected"))return void(e.options.get("multiple")?e.trigger("unselect",{originalEvent:c,data:f}):e.trigger("close",{}));e.trigger("select",{originalEvent:c,data:f})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(c){var d=b.GetData(this,"data");e.getHighlightedResults().removeClass("select2-results__option--highlighted"),e.trigger("results:focus",{data:d,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var c=a('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=b.GetData(this.$element[0],"old-tabindex")?this._tabindex=b.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),c.attr("title",this.$element.attr("title")),c.attr("tabindex",this._tabindex),this.$selection=c,c},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),window.setTimeout(function(){d.$selection.focus()},0),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(c){a(document.body).on("mousedown.select2."+c.id,function(c){var d=a(c.target),e=d.closest(".select2");a(".select2.select2-container--open").each(function(){a(this),this!=e[0]&&b.GetData(this,"element").select2("close")})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()})},e.prototype.clear=function(){var a=this.$selection.find(".select2-selection__rendered");a.empty(),a.removeAttr("title")},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.attr("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,e){var f=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){f.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!f.options.get("disabled")){var d=a(this),e=d.parent(),g=c.GetData(e[0],"data");f.trigger("unselect",{originalEvent:b,data:g})}})},d.prototype.clear=function(){var a=this.$selection.find(".select2-selection__rendered");a.empty(),a.removeAttr("title")},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>')},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.attr("title",e.title||e.text),c.StoreData(f[0],"data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id;if(b.length>1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}),b.define("select2/selection/allowClear",["jquery","../keys","../utils"],function(a,b,c){function d(){}return d.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},d.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var d=this.$selection.find(".select2-selection__clear");if(0!==d.length){b.stopPropagation();var e=c.GetData(d[0],"data"),f=this.$element.val();this.$element.val(this.placeholder.id);var g={data:e};if(this.trigger("clear",g),g.prevented)return void this.$element.val(f);for(var h=0;h<e.length;h++)if(g={data:e[h]},this.trigger("unselect",g),g.prevented)return void this.$element.val(f);this.$element.trigger("change"),this.trigger("toggle",{})}}},d.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||c.which!=b.DELETE&&c.which!=b.BACKSPACE||this._handleClear(c)},d.prototype.update=function(b,d){if(b.call(this,d),!(this.$selection.find(".select2-selection__placeholder").length>0||0===d.length)){var e=a('<span class="select2-selection__clear">&times;</span>');c.StoreData(e[0],"data",d),this.$selection.find(".select2-selection__rendered").prepend(e)}},d}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,d,e){var f=this;a.call(this,d,e),d.on("open",function(){f.$search.trigger("focus")}),d.on("close",function(){f.$search.val(""),f.$search.removeAttr("aria-activedescendant"),f.$search.trigger("focus")}),d.on("enable",function(){f.$search.prop("disabled",!1),f._transferTabIndex()}),d.on("disable",function(){f.$search.prop("disabled",!0)}),d.on("focus",function(a){f.$search.trigger("focus")}),d.on("results:focus",function(a){f.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){f.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){f._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),f.trigger("keypress",a),f._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===f.$search.val()){var d=f.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var e=b.GetData(d[0],"data");f.searchRemoveChoice(e),a.preventDefault()}}});var g=document.documentMode,h=g&&g<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(h)return void f.$selection.off("input.search input.searchcheck");f.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(h&&"input"===a.type)return void f.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&f.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;if(this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c){this.$element.find("[data-select2-tag]").length?this.$element.focus():this.$search.focus()}},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],g=["opening","closing","selecting","unselecting","clearing"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","Ａ":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","Ｂ":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","Ｃ":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","Ｄ":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","Ǳ":"DZ","Ǆ":"DZ","ǲ":"Dz","ǅ":"Dz","Ⓔ":"E","Ｅ":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","Ｆ":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","Ｇ":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","Ｈ":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","Ｉ":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","Ｊ":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","Ｋ":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","Ｌ":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","Ǉ":"LJ","ǈ":"Lj","Ⓜ":"M","Ｍ":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","Ｎ":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","Ǌ":"NJ","ǋ":"Nj","Ⓞ":"O","Ｏ":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","Ｐ":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Ｑ":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","Ｒ":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","Ｓ":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","Ｔ":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","Ｕ":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","Ｖ":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","Ｗ":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","Ｘ":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Ｙ":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Ｚ":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","ａ":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","ｂ":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","ｃ":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","ｄ":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","ǳ":"dz","ǆ":"dz","ⓔ":"e","ｅ":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","ｆ":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","ｇ":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","ｈ":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","ｉ":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","ｊ":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","ｋ":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","ｌ":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","ǉ":"lj","ⓜ":"m","ｍ":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","ｎ":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ŉ":"n","ꞑ":"n","ꞥ":"n","ǌ":"nj","ⓞ":"o","ｏ":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","ｐ":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","ｑ":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","ｒ":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","ｓ":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","ｔ":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","ｕ":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","ｖ":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","ｗ":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","ｘ":"x","ẋ":"x","ẍ":"x","ⓨ":"y","ｙ":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","ｚ":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple")){if(a.selected=!1,c(a.element).is("option"))return a.element.selected=!1,void this.$element.trigger("change");this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})}},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){b.RemoveData(this)})},d.prototype.query=function(a,b){var d=[],e=this;this.$element.children().each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var d;a.children?(d=document.createElement("optgroup"),d.label=a.text):(d=document.createElement("option"),void 0!==d.textContent?d.textContent=a.text:d.innerText=a.text),void 0!==a.id&&(d.value=a.id),a.disabled&&(d.disabled=!0),a.selected&&(d.selected=!0),a.title&&(d.title=a.title);var e=c(d),f=this._normalizeItem(a);return f.element=d,b.StoreData(d,"data",f),e},d.prototype.item=function(a){var d={};if(null!=(d=b.GetData(a[0],"data")))return d;if(a.is("option"))d={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){d={text:a.prop("label"),children:[],title:a.prop("title")};for(var e=a.children("option"),f=[],g=0;g<e.length;g++){var h=c(e[g]),i=this.item(h);f.push(i)}d.children=f}return d=this._normalizeItem(d),d.element=a[0],b.StoreData(a[0],"data",d),d},d.prototype._normalizeItem=function(a){a!==Object(a)&&(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){return this.options.get("matcher")(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){"status"in d&&(0===d.status||"0"===d.status)||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0);if((i.text||"").toUpperCase()===(b.term||"").toUpperCase()||j)return!f&&(a.data=g,void c(a))}if(f)return!0;var k=e.createTag(b);if(null!=k){var l=e.option(k);l.attr("data-select2-tag",!0),e.addOptions([l]),e.insertTag(g,k)}a.results=g,c(a)}var e=this;if(this._removeOldTags(),null==b.term||null!=b.page)return void a.call(this,b,c);a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){this._lastTag;this.$element.find("option[data-select2-tag]").each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b);if(!g.$element.find("option").filter(function(){return a(this).val()===c.id}).length){var d=g.option(c);d.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([d])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",b.term.length<this.minimumInputLength)return void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val(""),e.$search.blur()}),c.on("focus",function(){c.isOpen()||e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){b.StoreData(this,"select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(c){var d=b.GetData(this,"select2-scroll-position");a(this).scrollTop(d.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return!(a(c.data.results)<this.minimumResultsForSearch)&&b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",["../utils"],function(a){function b(){}return b.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},b.prototype._handleSelectOnClose=function(b,c){if(c&&null!=c.originalSelect2Event){var d=c.originalSelect2Event;if("select"===d._type||"unselect"===d._type)return}var e=this.getHighlightedResults();if(!(e.length<1)){var f=a.GetData(e[0],"data");null!=f.element&&f.element.selected||null==f.element&&f.selected||this.trigger("select",{data:f})}},b}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){return"Please enter "+(a.minimum-a.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}return D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(a){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(a){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var O=k.loadPath(this.defaults.amdLanguageBase+"en"),P=new k(l.language);P.extend(O),l.translations=P}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(!0,this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),d.GetData(a[0],"select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),d.StoreData(a[0],"data",d.GetData(a[0],"select2Tags")),d.StoreData(a[0],"tags",!0)),d.GetData(a[0],"ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",d.GetData(a[0],"ajaxUrl")),d.StoreData(a[0],"ajax-Url",d.GetData(a[0],"ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,d.GetData(a[0])):d.GetData(a[0]);var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,d){null!=c.GetData(a[0],"select2")&&c.GetData(a[0],"select2").destroy(),this.$element=a,this.id=this._generateId(a),d=d||{},this.options=new b(d,a),e.__super__.constructor.call(this);var f=a.attr("tabindex")||0;c.StoreData(a[0],"old-tabindex",f),a.attr("tabindex","-1");var g=this.options.get("dataAdapter");this.dataAdapter=new g(a,this.options);var h=this.render();this._placeContainer(h);var i=this.options.get("selectionAdapter");this.selection=new i(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,h);var j=this.options.get("dropdownAdapter");this.dropdown=new j(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,h);var k=this.options.get("resultsAdapter");this.results=new k(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var l=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){l.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),c.StoreData(a[0],"select2",this),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h<i;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",c.GetData(this.$element[0],"old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),c.RemoveData(this.$element[0]),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),c.StoreData(b[0],"element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(a,b,c,d,e){if(null==a.fn.select2){var f=["open","close","destroy"];a.fn.select2=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,g=Array.prototype.slice.call(arguments,1);return this.each(function(){var a=e.GetData(this,"select2");null==a&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=a[b].apply(a,g)}),a.inArray(b,f)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
Index: public/vendors/slick/config.rb
===================================================================
--- public/vendors/slick/config.rb	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/slick/config.rb	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,10 @@
+css_dir = "."
+sass_dir = "."
+images_dir = "."
+fonts_dir = "fonts"
+relative_assets = true
+
+output_style = :compact
+line_comments = false
+
+preferred_syntax = :scss
Index: public/vendors/slick/fonts/slick.svg
===================================================================
--- public/vendors/slick/fonts/slick.svg	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/slick/fonts/slick.svg	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by Fontastic.me</metadata>
+<defs>
+<font id="slick" horiz-adv-x="512">
+<font-face font-family="slick" units-per-em="512" ascent="480" descent="-32"/>
+<missing-glyph horiz-adv-x="512" />
+
+<glyph unicode="&#8594;" d="M241 113l130 130c4 4 6 8 6 13 0 5-2 9-6 13l-130 130c-3 3-7 5-12 5-5 0-10-2-13-5l-29-30c-4-3-6-7-6-12 0-5 2-10 6-13l87-88-87-88c-4-3-6-8-6-13 0-5 2-9 6-12l29-30c3-3 8-5 13-5 5 0 9 2 12 5z m234 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
+<glyph unicode="&#8592;" d="M296 113l29 30c4 3 6 7 6 12 0 5-2 10-6 13l-87 88 87 88c4 3 6 8 6 13 0 5-2 9-6 12l-29 30c-3 3-8 5-13 5-5 0-9-2-12-5l-130-130c-4-4-6-8-6-13 0-5 2-9 6-13l130-130c3-3 7-5 12-5 5 0 10 2 13 5z m179 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
+<glyph unicode="&#8226;" d="M475 256c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
+<glyph unicode="&#97;" d="M475 439l0-128c0-5-1-9-5-13-4-4-8-5-13-5l-128 0c-8 0-13 3-17 11-3 7-2 14 4 20l40 39c-28 26-62 39-100 39-20 0-39-4-57-11-18-8-33-18-46-32-14-13-24-28-32-46-7-18-11-37-11-57 0-20 4-39 11-57 8-18 18-33 32-46 13-14 28-24 46-32 18-7 37-11 57-11 23 0 44 5 64 15 20 9 38 23 51 42 2 1 4 3 7 3 3 0 5-1 7-3l39-39c2-2 3-3 3-6 0-2-1-4-2-6-21-25-46-45-76-59-29-14-60-20-93-20-30 0-58 5-85 17-27 12-51 27-70 47-20 19-35 43-47 70-12 27-17 55-17 85 0 30 5 58 17 85 12 27 27 51 47 70 19 20 43 35 70 47 27 12 55 17 85 17 28 0 55-5 81-15 26-11 50-26 70-45l37 37c6 6 12 7 20 4 8-4 11-9 11-17z"/>
+</font></defs></svg>
Index: public/vendors/slick/slick-theme.css
===================================================================
--- public/vendors/slick/slick-theme.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/slick/slick-theme.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,204 @@
+@charset 'UTF-8';
+/* Slider */
+.slick-loading .slick-list
+{
+    background: #fff url('ajax-loader.gif') center center no-repeat;
+}
+
+/* Icons */
+@font-face
+{
+    font-family: 'slick';
+    font-weight: normal;
+    font-style: normal;
+
+    src: url('fonts/slick.eot');
+    src: url('fonts/slick.eot?#iefix') format('embedded-opentype'), url('fonts/slick.woff') format('woff'), url('fonts/slick.ttf') format('truetype'), url('fonts/slick.svg#slick') format('svg');
+}
+/* Arrows */
+.slick-prev,
+.slick-next
+{
+    font-size: 0;
+    line-height: 0;
+
+    position: absolute;
+    top: 50%;
+
+    display: block;
+
+    width: 20px;
+    height: 20px;
+    padding: 0;
+    -webkit-transform: translate(0, -50%);
+    -ms-transform: translate(0, -50%);
+    transform: translate(0, -50%);
+
+    cursor: pointer;
+
+    color: transparent;
+    border: none;
+    outline: none;
+    background: transparent;
+}
+.slick-prev:hover,
+.slick-prev:focus,
+.slick-next:hover,
+.slick-next:focus
+{
+    color: transparent;
+    outline: none;
+    background: transparent;
+}
+.slick-prev:hover:before,
+.slick-prev:focus:before,
+.slick-next:hover:before,
+.slick-next:focus:before
+{
+    opacity: 1;
+}
+.slick-prev.slick-disabled:before,
+.slick-next.slick-disabled:before
+{
+    opacity: .25;
+}
+
+.slick-prev:before,
+.slick-next:before
+{
+    font-family: 'slick';
+    font-size: 20px;
+    line-height: 1;
+
+    opacity: .75;
+    color: white;
+
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+}
+
+.slick-prev
+{
+    left: -25px;
+}
+[dir='rtl'] .slick-prev
+{
+    right: -25px;
+    left: auto;
+}
+.slick-prev:before
+{
+    content: '←';
+}
+[dir='rtl'] .slick-prev:before
+{
+    content: '→';
+}
+
+.slick-next
+{
+    right: -25px;
+}
+[dir='rtl'] .slick-next
+{
+    right: auto;
+    left: -25px;
+}
+.slick-next:before
+{
+    content: '→';
+}
+[dir='rtl'] .slick-next:before
+{
+    content: '←';
+}
+
+/* Dots */
+.slick-dotted.slick-slider
+{
+    margin-bottom: 30px;
+}
+
+.slick-dots
+{
+    position: absolute;
+    bottom: -25px;
+
+    display: block;
+
+    width: 100%;
+    padding: 0;
+    margin: 0;
+
+    list-style: none;
+
+    text-align: center;
+}
+.slick-dots li
+{
+    position: relative;
+
+    display: inline-block;
+
+    width: 20px;
+    height: 20px;
+    margin: 0 5px;
+    padding: 0;
+
+    cursor: pointer;
+}
+.slick-dots li button
+{
+    font-size: 0;
+    line-height: 0;
+
+    display: block;
+
+    width: 20px;
+    height: 20px;
+    padding: 5px;
+
+    cursor: pointer;
+
+    color: transparent;
+    border: 0;
+    outline: none;
+    background: transparent;
+}
+.slick-dots li button:hover,
+.slick-dots li button:focus
+{
+    outline: none;
+}
+.slick-dots li button:hover:before,
+.slick-dots li button:focus:before
+{
+    opacity: 1;
+}
+.slick-dots li button:before
+{
+    font-family: 'slick';
+    font-size: 6px;
+    line-height: 20px;
+
+    position: absolute;
+    top: 0;
+    left: 0;
+
+    width: 20px;
+    height: 20px;
+
+    content: '•';
+    text-align: center;
+
+    opacity: .25;
+    color: black;
+
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+}
+.slick-dots li.slick-active button:before
+{
+    opacity: .75;
+    color: black;
+}
Index: public/vendors/slick/slick-theme.less
===================================================================
--- public/vendors/slick/slick-theme.less	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/slick/slick-theme.less	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,168 @@
+@charset "UTF-8";
+
+// Default Variables
+
+@slick-font-path: "./fonts/";
+@slick-font-family: "slick";
+@slick-loader-path: "./";
+@slick-arrow-color: white;
+@slick-dot-color: black;
+@slick-dot-color-active: @slick-dot-color;
+@slick-prev-character: "←";
+@slick-next-character: "→";
+@slick-dot-character: "•";
+@slick-dot-size: 6px;
+@slick-opacity-default: 0.75;
+@slick-opacity-on-hover: 1;
+@slick-opacity-not-active: 0.25;
+
+/* Slider */
+.slick-loading .slick-list{
+    background: #fff url('@{slick-loader-path}ajax-loader.gif') center center no-repeat;
+}
+
+/* Arrows */
+.slick-prev,
+.slick-next {
+    position: absolute;
+    display: block;
+    height: 20px;
+    width: 20px;
+    line-height: 0px;
+    font-size: 0px;
+    cursor: pointer;
+    background: transparent;
+    color: transparent;
+    top: 50%;
+    -webkit-transform: translate(0, -50%);
+    -ms-transform: translate(0, -50%);
+    transform: translate(0, -50%);
+    padding: 0;
+    border: none;
+    outline: none;
+    &:hover, &:focus {
+        outline: none;
+        background: transparent;
+        color: transparent;
+        &:before {
+            opacity: @slick-opacity-on-hover;
+        }
+    }
+    &.slick-disabled:before {
+        opacity: @slick-opacity-not-active;
+    }
+}
+
+.slick-prev:before, .slick-next:before {
+    font-family: @slick-font-family;
+    font-size: 20px;
+    line-height: 1;
+    color: @slick-arrow-color;
+    opacity: @slick-opacity-default;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+    
+    & when ( @slick-font-family = 'slick' ) {
+        /* Icons */
+        @font-face {
+            font-family: 'slick';
+            font-weight: normal;
+            font-style: normal;
+            src: url('@{slick-font-path}slick.eot');
+            src: url('@{slick-font-path}slick.eot?#iefix') format('embedded-opentype'), url('@{slick-font-path}slick.woff') format('woff'), url('@{slick-font-path}slick.ttf') format('truetype'), url('@{slick-font-path}slick.svg#slick') format('svg');
+        }
+    }
+}
+
+.slick-prev {
+    left: -25px;
+    [dir="rtl"] & {
+        left: auto;
+        right: -25px;
+    }
+    &:before {
+        content: @slick-prev-character;
+        [dir="rtl"] & {
+            content: @slick-next-character;
+        }
+    }
+}
+
+.slick-next {
+    right: -25px;
+    [dir="rtl"] & {
+        left: -25px;
+        right: auto;
+    }
+    &:before {
+        content: @slick-next-character;
+        [dir="rtl"] & {
+            content: @slick-prev-character;
+        }
+    }
+}
+
+/* Dots */
+
+.slick-dotted .slick-slider {
+    margin-bottom: 30px;
+}
+
+.slick-dots {
+    position: absolute;
+    bottom: -25px;
+    list-style: none;
+    display: block;
+    text-align: center;
+    padding: 0;
+    margin: 0;
+    width: 100%;
+    li {
+        position: relative;
+        display: inline-block;
+        height: 20px;
+        width: 20px;
+        margin: 0 5px;
+        padding: 0;
+        cursor: pointer;
+        button {
+            border: 0;
+            background: transparent;
+            display: block;
+            height: 20px;
+            width: 20px;
+            outline: none;
+            line-height: 0px;
+            font-size: 0px;
+            color: transparent;
+            padding: 5px;
+            cursor: pointer;
+            &:hover, &:focus {
+                outline: none;
+                &:before {
+                    opacity: @slick-opacity-on-hover;
+                }
+            }
+            &:before {
+                position: absolute;
+                top: 0;
+                left: 0;
+                content: @slick-dot-character;
+                width: 20px;
+                height: 20px;
+                font-family: @slick-font-family;
+                font-size: @slick-dot-size;
+                line-height: 20px;
+                text-align: center;
+                color: @slick-dot-color;
+                opacity: @slick-opacity-not-active;
+                -webkit-font-smoothing: antialiased;
+                -moz-osx-font-smoothing: grayscale;
+            }
+        }
+        &.slick-active button:before {
+            color: @slick-dot-color-active;
+            opacity: @slick-opacity-default;
+        }
+    }
+}
Index: public/vendors/slick/slick-theme.scss
===================================================================
--- public/vendors/slick/slick-theme.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/slick/slick-theme.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,194 @@
+@charset "UTF-8";
+
+// Default Variables
+
+// Slick icon entity codes outputs the following
+// "\2190" outputs ascii character "←"
+// "\2192" outputs ascii character "→"
+// "\2022" outputs ascii character "•"
+
+$slick-font-path: "./fonts/" !default;
+$slick-font-family: "slick" !default;
+$slick-loader-path: "./" !default;
+$slick-arrow-color: white !default;
+$slick-dot-color: black !default;
+$slick-dot-color-active: $slick-dot-color !default;
+$slick-prev-character: "\2190" !default;
+$slick-next-character: "\2192" !default;
+$slick-dot-character: "\2022" !default;
+$slick-dot-size: 6px !default;
+$slick-opacity-default: 0.75 !default;
+$slick-opacity-on-hover: 1 !default;
+$slick-opacity-not-active: 0.25 !default;
+
+@function slick-image-url($url) {
+    @if function-exists(image-url) {
+        @return image-url($url);
+    }
+    @else {
+        @return url($slick-loader-path + $url);
+    }
+}
+
+@function slick-font-url($url) {
+    @if function-exists(font-url) {
+        @return font-url($url);
+    }
+    @else {
+        @return url($slick-font-path + $url);
+    }
+}
+
+/* Slider */
+
+.slick-list {
+    .slick-loading & {
+        background: #fff slick-image-url("ajax-loader.gif") center center no-repeat;
+    }
+}
+
+/* Icons */
+@if $slick-font-family == "slick" {
+    @font-face {
+        font-family: "slick";
+        src: slick-font-url("slick.eot");
+        src: slick-font-url("slick.eot?#iefix") format("embedded-opentype"), slick-font-url("slick.woff") format("woff"), slick-font-url("slick.ttf") format("truetype"), slick-font-url("slick.svg#slick") format("svg");
+        font-weight: normal;
+        font-style: normal;
+    }
+}
+
+/* Arrows */
+
+.slick-prev,
+.slick-next {
+    position: absolute;
+    display: block;
+    height: 20px;
+    width: 20px;
+    line-height: 0px;
+    font-size: 0px;
+    cursor: pointer;
+    background: transparent;
+    color: transparent;
+    top: 50%;
+    -webkit-transform: translate(0, -50%);
+    -ms-transform: translate(0, -50%);
+    transform: translate(0, -50%);
+    padding: 0;
+    border: none;
+    outline: none;
+    &:hover, &:focus {
+        outline: none;
+        background: transparent;
+        color: transparent;
+        &:before {
+            opacity: $slick-opacity-on-hover;
+        }
+    }
+    &.slick-disabled:before {
+        opacity: $slick-opacity-not-active;
+    }
+    &:before {
+        font-family: $slick-font-family;
+        font-size: 20px;
+        line-height: 1;
+        color: $slick-arrow-color;
+        opacity: $slick-opacity-default;
+        -webkit-font-smoothing: antialiased;
+        -moz-osx-font-smoothing: grayscale;
+    }
+}
+
+.slick-prev {
+    left: -25px;
+    [dir="rtl"] & {
+        left: auto;
+        right: -25px;
+    }
+    &:before {
+        content: $slick-prev-character;
+        [dir="rtl"] & {
+            content: $slick-next-character;
+        }
+    }
+}
+
+.slick-next {
+    right: -25px;
+    [dir="rtl"] & {
+        left: -25px;
+        right: auto;
+    }
+    &:before {
+        content: $slick-next-character;
+        [dir="rtl"] & {
+            content: $slick-prev-character;
+        }
+    }
+}
+
+/* Dots */
+
+.slick-dotted.slick-slider {
+    margin-bottom: 30px;
+}
+
+.slick-dots {
+    position: absolute;
+    bottom: -25px;
+    list-style: none;
+    display: block;
+    text-align: center;
+    padding: 0;
+    margin: 0;
+    width: 100%;
+    li {
+        position: relative;
+        display: inline-block;
+        height: 20px;
+        width: 20px;
+        margin: 0 5px;
+        padding: 0;
+        cursor: pointer;
+        button {
+            border: 0;
+            background: transparent;
+            display: block;
+            height: 20px;
+            width: 20px;
+            outline: none;
+            line-height: 0px;
+            font-size: 0px;
+            color: transparent;
+            padding: 5px;
+            cursor: pointer;
+            &:hover, &:focus {
+                outline: none;
+                &:before {
+                    opacity: $slick-opacity-on-hover;
+                }
+            }
+            &:before {
+                position: absolute;
+                top: 0;
+                left: 0;
+                content: $slick-dot-character;
+                width: 20px;
+                height: 20px;
+                font-family: $slick-font-family;
+                font-size: $slick-dot-size;
+                line-height: 20px;
+                text-align: center;
+                color: $slick-dot-color;
+                opacity: $slick-opacity-not-active;
+                -webkit-font-smoothing: antialiased;
+                -moz-osx-font-smoothing: grayscale;
+            }
+        }
+        &.slick-active button:before {
+            color: $slick-dot-color-active;
+            opacity: $slick-opacity-default;
+        }
+    }
+}
Index: public/vendors/slick/slick.css
===================================================================
--- public/vendors/slick/slick.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/slick/slick.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,119 @@
+/* Slider */
+.slick-slider
+{
+    position: relative;
+
+    display: block;
+    box-sizing: border-box;
+
+    -webkit-user-select: none;
+       -moz-user-select: none;
+        -ms-user-select: none;
+            user-select: none;
+
+    -webkit-touch-callout: none;
+    -khtml-user-select: none;
+    -ms-touch-action: pan-y;
+        touch-action: pan-y;
+    -webkit-tap-highlight-color: transparent;
+}
+
+.slick-list
+{
+    position: relative;
+
+    display: block;
+    overflow: hidden;
+
+    margin: 0;
+    padding: 0;
+}
+.slick-list:focus
+{
+    outline: none;
+}
+.slick-list.dragging
+{
+    cursor: pointer;
+    cursor: hand;
+}
+
+.slick-slider .slick-track,
+.slick-slider .slick-list
+{
+    -webkit-transform: translate3d(0, 0, 0);
+       -moz-transform: translate3d(0, 0, 0);
+        -ms-transform: translate3d(0, 0, 0);
+         -o-transform: translate3d(0, 0, 0);
+            transform: translate3d(0, 0, 0);
+}
+
+.slick-track
+{
+    position: relative;
+    top: 0;
+    left: 0;
+
+    display: block;
+    margin-left: auto;
+    margin-right: auto;
+}
+.slick-track:before,
+.slick-track:after
+{
+    display: table;
+
+    content: '';
+}
+.slick-track:after
+{
+    clear: both;
+}
+.slick-loading .slick-track
+{
+    visibility: hidden;
+}
+
+.slick-slide
+{
+    display: none;
+    float: left;
+
+    height: 100%;
+    min-height: 1px;
+}
+[dir='rtl'] .slick-slide
+{
+    float: right;
+}
+.slick-slide img
+{
+    display: block;
+}
+.slick-slide.slick-loading img
+{
+    display: none;
+}
+.slick-slide.dragging img
+{
+    pointer-events: none;
+}
+.slick-initialized .slick-slide
+{
+    display: block;
+}
+.slick-loading .slick-slide
+{
+    visibility: hidden;
+}
+.slick-vertical .slick-slide
+{
+    display: block;
+
+    height: auto;
+
+    border: 1px solid transparent;
+}
+.slick-arrow.slick-hidden {
+    display: none;
+}
Index: public/vendors/slick/slick.js
===================================================================
--- public/vendors/slick/slick.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/slick/slick.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3011 @@
+/*
+     _ _      _       _
+ ___| (_) ___| | __  (_)___
+/ __| | |/ __| |/ /  | / __|
+\__ \ | | (__|   < _ | \__ \
+|___/_|_|\___|_|\_(_)/ |___/
+                   |__/
+
+ Version: 1.8.0
+  Author: Ken Wheeler
+ Website: http://kenwheeler.github.io
+    Docs: http://kenwheeler.github.io/slick
+    Repo: http://github.com/kenwheeler/slick
+  Issues: http://github.com/kenwheeler/slick/issues
+
+ */
+/* global window, document, define, jQuery, setInterval, clearInterval */
+;(function(factory) {
+    'use strict';
+    if (typeof define === 'function' && define.amd) {
+        define(['jquery'], factory);
+    } else if (typeof exports !== 'undefined') {
+        module.exports = factory(require('jquery'));
+    } else {
+        factory(jQuery);
+    }
+
+}(function($) {
+    'use strict';
+    var Slick = window.Slick || {};
+
+    Slick = (function() {
+
+        var instanceUid = 0;
+
+        function Slick(element, settings) {
+
+            var _ = this, dataSettings;
+
+            _.defaults = {
+                accessibility: true,
+                adaptiveHeight: false,
+                appendArrows: $(element),
+                appendDots: $(element),
+                arrows: true,
+                asNavFor: null,
+                prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',
+                nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>',
+                autoplay: false,
+                autoplaySpeed: 3000,
+                centerMode: false,
+                centerPadding: '50px',
+                cssEase: 'ease',
+                customPaging: function(slider, i) {
+                    return $('<button type="button" />').text(i + 1);
+                },
+                dots: false,
+                dotsClass: 'slick-dots',
+                draggable: true,
+                easing: 'linear',
+                edgeFriction: 0.35,
+                fade: false,
+                focusOnSelect: false,
+                focusOnChange: false,
+                infinite: true,
+                initialSlide: 0,
+                lazyLoad: 'ondemand',
+                mobileFirst: false,
+                pauseOnHover: true,
+                pauseOnFocus: true,
+                pauseOnDotsHover: false,
+                respondTo: 'window',
+                responsive: null,
+                rows: 1,
+                rtl: false,
+                slide: '',
+                slidesPerRow: 1,
+                slidesToShow: 1,
+                slidesToScroll: 1,
+                speed: 500,
+                swipe: true,
+                swipeToSlide: false,
+                touchMove: true,
+                touchThreshold: 5,
+                useCSS: true,
+                useTransform: true,
+                variableWidth: false,
+                vertical: false,
+                verticalSwiping: false,
+                waitForAnimate: true,
+                zIndex: 1000
+            };
+
+            _.initials = {
+                animating: false,
+                dragging: false,
+                autoPlayTimer: null,
+                currentDirection: 0,
+                currentLeft: null,
+                currentSlide: 0,
+                direction: 1,
+                $dots: null,
+                listWidth: null,
+                listHeight: null,
+                loadIndex: 0,
+                $nextArrow: null,
+                $prevArrow: null,
+                scrolling: false,
+                slideCount: null,
+                slideWidth: null,
+                $slideTrack: null,
+                $slides: null,
+                sliding: false,
+                slideOffset: 0,
+                swipeLeft: null,
+                swiping: false,
+                $list: null,
+                touchObject: {},
+                transformsEnabled: false,
+                unslicked: false
+            };
+
+            $.extend(_, _.initials);
+
+            _.activeBreakpoint = null;
+            _.animType = null;
+            _.animProp = null;
+            _.breakpoints = [];
+            _.breakpointSettings = [];
+            _.cssTransitions = false;
+            _.focussed = false;
+            _.interrupted = false;
+            _.hidden = 'hidden';
+            _.paused = true;
+            _.positionProp = null;
+            _.respondTo = null;
+            _.rowCount = 1;
+            _.shouldClick = true;
+            _.$slider = $(element);
+            _.$slidesCache = null;
+            _.transformType = null;
+            _.transitionType = null;
+            _.visibilityChange = 'visibilitychange';
+            _.windowWidth = 0;
+            _.windowTimer = null;
+
+            dataSettings = $(element).data('slick') || {};
+
+            _.options = $.extend({}, _.defaults, settings, dataSettings);
+
+            _.currentSlide = _.options.initialSlide;
+
+            _.originalSettings = _.options;
+
+            if (typeof document.mozHidden !== 'undefined') {
+                _.hidden = 'mozHidden';
+                _.visibilityChange = 'mozvisibilitychange';
+            } else if (typeof document.webkitHidden !== 'undefined') {
+                _.hidden = 'webkitHidden';
+                _.visibilityChange = 'webkitvisibilitychange';
+            }
+
+            _.autoPlay = $.proxy(_.autoPlay, _);
+            _.autoPlayClear = $.proxy(_.autoPlayClear, _);
+            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
+            _.changeSlide = $.proxy(_.changeSlide, _);
+            _.clickHandler = $.proxy(_.clickHandler, _);
+            _.selectHandler = $.proxy(_.selectHandler, _);
+            _.setPosition = $.proxy(_.setPosition, _);
+            _.swipeHandler = $.proxy(_.swipeHandler, _);
+            _.dragHandler = $.proxy(_.dragHandler, _);
+            _.keyHandler = $.proxy(_.keyHandler, _);
+
+            _.instanceUid = instanceUid++;
+
+            // A simple way to check for HTML strings
+            // Strict HTML recognition (must start with <)
+            // Extracted from jQuery v1.11 source
+            _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;
+
+
+            _.registerBreakpoints();
+            _.init(true);
+
+        }
+
+        return Slick;
+
+    }());
+
+    Slick.prototype.activateADA = function() {
+        var _ = this;
+
+        _.$slideTrack.find('.slick-active').attr({
+            'aria-hidden': 'false'
+        }).find('a, input, button, select').attr({
+            'tabindex': '0'
+        });
+
+    };
+
+    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {
+
+        var _ = this;
+
+        if (typeof(index) === 'boolean') {
+            addBefore = index;
+            index = null;
+        } else if (index < 0 || (index >= _.slideCount)) {
+            return false;
+        }
+
+        _.unload();
+
+        if (typeof(index) === 'number') {
+            if (index === 0 && _.$slides.length === 0) {
+                $(markup).appendTo(_.$slideTrack);
+            } else if (addBefore) {
+                $(markup).insertBefore(_.$slides.eq(index));
+            } else {
+                $(markup).insertAfter(_.$slides.eq(index));
+            }
+        } else {
+            if (addBefore === true) {
+                $(markup).prependTo(_.$slideTrack);
+            } else {
+                $(markup).appendTo(_.$slideTrack);
+            }
+        }
+
+        _.$slides = _.$slideTrack.children(this.options.slide);
+
+        _.$slideTrack.children(this.options.slide).detach();
+
+        _.$slideTrack.append(_.$slides);
+
+        _.$slides.each(function(index, element) {
+            $(element).attr('data-slick-index', index);
+        });
+
+        _.$slidesCache = _.$slides;
+
+        _.reinit();
+
+    };
+
+    Slick.prototype.animateHeight = function() {
+        var _ = this;
+        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
+            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
+            _.$list.animate({
+                height: targetHeight
+            }, _.options.speed);
+        }
+    };
+
+    Slick.prototype.animateSlide = function(targetLeft, callback) {
+
+        var animProps = {},
+            _ = this;
+
+        _.animateHeight();
+
+        if (_.options.rtl === true && _.options.vertical === false) {
+            targetLeft = -targetLeft;
+        }
+        if (_.transformsEnabled === false) {
+            if (_.options.vertical === false) {
+                _.$slideTrack.animate({
+                    left: targetLeft
+                }, _.options.speed, _.options.easing, callback);
+            } else {
+                _.$slideTrack.animate({
+                    top: targetLeft
+                }, _.options.speed, _.options.easing, callback);
+            }
+
+        } else {
+
+            if (_.cssTransitions === false) {
+                if (_.options.rtl === true) {
+                    _.currentLeft = -(_.currentLeft);
+                }
+                $({
+                    animStart: _.currentLeft
+                }).animate({
+                    animStart: targetLeft
+                }, {
+                    duration: _.options.speed,
+                    easing: _.options.easing,
+                    step: function(now) {
+                        now = Math.ceil(now);
+                        if (_.options.vertical === false) {
+                            animProps[_.animType] = 'translate(' +
+                                now + 'px, 0px)';
+                            _.$slideTrack.css(animProps);
+                        } else {
+                            animProps[_.animType] = 'translate(0px,' +
+                                now + 'px)';
+                            _.$slideTrack.css(animProps);
+                        }
+                    },
+                    complete: function() {
+                        if (callback) {
+                            callback.call();
+                        }
+                    }
+                });
+
+            } else {
+
+                _.applyTransition();
+                targetLeft = Math.ceil(targetLeft);
+
+                if (_.options.vertical === false) {
+                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';
+                } else {
+                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';
+                }
+                _.$slideTrack.css(animProps);
+
+                if (callback) {
+                    setTimeout(function() {
+
+                        _.disableTransition();
+
+                        callback.call();
+                    }, _.options.speed);
+                }
+
+            }
+
+        }
+
+    };
+
+    Slick.prototype.getNavTarget = function() {
+
+        var _ = this,
+            asNavFor = _.options.asNavFor;
+
+        if ( asNavFor && asNavFor !== null ) {
+            asNavFor = $(asNavFor).not(_.$slider);
+        }
+
+        return asNavFor;
+
+    };
+
+    Slick.prototype.asNavFor = function(index) {
+
+        var _ = this,
+            asNavFor = _.getNavTarget();
+
+        if ( asNavFor !== null && typeof asNavFor === 'object' ) {
+            asNavFor.each(function() {
+                var target = $(this).slick('getSlick');
+                if(!target.unslicked) {
+                    target.slideHandler(index, true);
+                }
+            });
+        }
+
+    };
+
+    Slick.prototype.applyTransition = function(slide) {
+
+        var _ = this,
+            transition = {};
+
+        if (_.options.fade === false) {
+            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;
+        } else {
+            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;
+        }
+
+        if (_.options.fade === false) {
+            _.$slideTrack.css(transition);
+        } else {
+            _.$slides.eq(slide).css(transition);
+        }
+
+    };
+
+    Slick.prototype.autoPlay = function() {
+
+        var _ = this;
+
+        _.autoPlayClear();
+
+        if ( _.slideCount > _.options.slidesToShow ) {
+            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );
+        }
+
+    };
+
+    Slick.prototype.autoPlayClear = function() {
+
+        var _ = this;
+
+        if (_.autoPlayTimer) {
+            clearInterval(_.autoPlayTimer);
+        }
+
+    };
+
+    Slick.prototype.autoPlayIterator = function() {
+
+        var _ = this,
+            slideTo = _.currentSlide + _.options.slidesToScroll;
+
+        if ( !_.paused && !_.interrupted && !_.focussed ) {
+
+            if ( _.options.infinite === false ) {
+
+                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {
+                    _.direction = 0;
+                }
+
+                else if ( _.direction === 0 ) {
+
+                    slideTo = _.currentSlide - _.options.slidesToScroll;
+
+                    if ( _.currentSlide - 1 === 0 ) {
+                        _.direction = 1;
+                    }
+
+                }
+
+            }
+
+            _.slideHandler( slideTo );
+
+        }
+
+    };
+
+    Slick.prototype.buildArrows = function() {
+
+        var _ = this;
+
+        if (_.options.arrows === true ) {
+
+            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');
+            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');
+
+            if( _.slideCount > _.options.slidesToShow ) {
+
+                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
+                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
+
+                if (_.htmlExpr.test(_.options.prevArrow)) {
+                    _.$prevArrow.prependTo(_.options.appendArrows);
+                }
+
+                if (_.htmlExpr.test(_.options.nextArrow)) {
+                    _.$nextArrow.appendTo(_.options.appendArrows);
+                }
+
+                if (_.options.infinite !== true) {
+                    _.$prevArrow
+                        .addClass('slick-disabled')
+                        .attr('aria-disabled', 'true');
+                }
+
+            } else {
+
+                _.$prevArrow.add( _.$nextArrow )
+
+                    .addClass('slick-hidden')
+                    .attr({
+                        'aria-disabled': 'true',
+                        'tabindex': '-1'
+                    });
+
+            }
+
+        }
+
+    };
+
+    Slick.prototype.buildDots = function() {
+
+        var _ = this,
+            i, dot;
+
+        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
+
+            _.$slider.addClass('slick-dotted');
+
+            dot = $('<ul />').addClass(_.options.dotsClass);
+
+            for (i = 0; i <= _.getDotCount(); i += 1) {
+                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));
+            }
+
+            _.$dots = dot.appendTo(_.options.appendDots);
+
+            _.$dots.find('li').first().addClass('slick-active');
+
+        }
+
+    };
+
+    Slick.prototype.buildOut = function() {
+
+        var _ = this;
+
+        _.$slides =
+            _.$slider
+                .children( _.options.slide + ':not(.slick-cloned)')
+                .addClass('slick-slide');
+
+        _.slideCount = _.$slides.length;
+
+        _.$slides.each(function(index, element) {
+            $(element)
+                .attr('data-slick-index', index)
+                .data('originalStyling', $(element).attr('style') || '');
+        });
+
+        _.$slider.addClass('slick-slider');
+
+        _.$slideTrack = (_.slideCount === 0) ?
+            $('<div class="slick-track"/>').appendTo(_.$slider) :
+            _.$slides.wrapAll('<div class="slick-track"/>').parent();
+
+        _.$list = _.$slideTrack.wrap(
+            '<div class="slick-list"/>').parent();
+        _.$slideTrack.css('opacity', 0);
+
+        if (_.options.centerMode === true || _.options.swipeToSlide === true) {
+            _.options.slidesToScroll = 1;
+        }
+
+        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');
+
+        _.setupInfinite();
+
+        _.buildArrows();
+
+        _.buildDots();
+
+        _.updateDots();
+
+
+        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
+
+        if (_.options.draggable === true) {
+            _.$list.addClass('draggable');
+        }
+
+    };
+
+    Slick.prototype.buildRows = function() {
+
+        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;
+
+        newSlides = document.createDocumentFragment();
+        originalSlides = _.$slider.children();
+
+        if(_.options.rows > 0) {
+
+            slidesPerSection = _.options.slidesPerRow * _.options.rows;
+            numOfSlides = Math.ceil(
+                originalSlides.length / slidesPerSection
+            );
+
+            for(a = 0; a < numOfSlides; a++){
+                var slide = document.createElement('div');
+                for(b = 0; b < _.options.rows; b++) {
+                    var row = document.createElement('div');
+                    for(c = 0; c < _.options.slidesPerRow; c++) {
+                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));
+                        if (originalSlides.get(target)) {
+                            row.appendChild(originalSlides.get(target));
+                        }
+                    }
+                    slide.appendChild(row);
+                }
+                newSlides.appendChild(slide);
+            }
+
+            _.$slider.empty().append(newSlides);
+            _.$slider.children().children().children()
+                .css({
+                    'width':(100 / _.options.slidesPerRow) + '%',
+                    'display': 'inline-block'
+                });
+
+        }
+
+    };
+
+    Slick.prototype.checkResponsive = function(initial, forceUpdate) {
+
+        var _ = this,
+            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;
+        var sliderWidth = _.$slider.width();
+        var windowWidth = window.innerWidth || $(window).width();
+
+        if (_.respondTo === 'window') {
+            respondToWidth = windowWidth;
+        } else if (_.respondTo === 'slider') {
+            respondToWidth = sliderWidth;
+        } else if (_.respondTo === 'min') {
+            respondToWidth = Math.min(windowWidth, sliderWidth);
+        }
+
+        if ( _.options.responsive &&
+            _.options.responsive.length &&
+            _.options.responsive !== null) {
+
+            targetBreakpoint = null;
+
+            for (breakpoint in _.breakpoints) {
+                if (_.breakpoints.hasOwnProperty(breakpoint)) {
+                    if (_.originalSettings.mobileFirst === false) {
+                        if (respondToWidth < _.breakpoints[breakpoint]) {
+                            targetBreakpoint = _.breakpoints[breakpoint];
+                        }
+                    } else {
+                        if (respondToWidth > _.breakpoints[breakpoint]) {
+                            targetBreakpoint = _.breakpoints[breakpoint];
+                        }
+                    }
+                }
+            }
+
+            if (targetBreakpoint !== null) {
+                if (_.activeBreakpoint !== null) {
+                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {
+                        _.activeBreakpoint =
+                            targetBreakpoint;
+                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
+                            _.unslick(targetBreakpoint);
+                        } else {
+                            _.options = $.extend({}, _.originalSettings,
+                                _.breakpointSettings[
+                                    targetBreakpoint]);
+                            if (initial === true) {
+                                _.currentSlide = _.options.initialSlide;
+                            }
+                            _.refresh(initial);
+                        }
+                        triggerBreakpoint = targetBreakpoint;
+                    }
+                } else {
+                    _.activeBreakpoint = targetBreakpoint;
+                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
+                        _.unslick(targetBreakpoint);
+                    } else {
+                        _.options = $.extend({}, _.originalSettings,
+                            _.breakpointSettings[
+                                targetBreakpoint]);
+                        if (initial === true) {
+                            _.currentSlide = _.options.initialSlide;
+                        }
+                        _.refresh(initial);
+                    }
+                    triggerBreakpoint = targetBreakpoint;
+                }
+            } else {
+                if (_.activeBreakpoint !== null) {
+                    _.activeBreakpoint = null;
+                    _.options = _.originalSettings;
+                    if (initial === true) {
+                        _.currentSlide = _.options.initialSlide;
+                    }
+                    _.refresh(initial);
+                    triggerBreakpoint = targetBreakpoint;
+                }
+            }
+
+            // only trigger breakpoints during an actual break. not on initialize.
+            if( !initial && triggerBreakpoint !== false ) {
+                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);
+            }
+        }
+
+    };
+
+    Slick.prototype.changeSlide = function(event, dontAnimate) {
+
+        var _ = this,
+            $target = $(event.currentTarget),
+            indexOffset, slideOffset, unevenOffset;
+
+        // If target is a link, prevent default action.
+        if($target.is('a')) {
+            event.preventDefault();
+        }
+
+        // If target is not the <li> element (ie: a child), find the <li>.
+        if(!$target.is('li')) {
+            $target = $target.closest('li');
+        }
+
+        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);
+        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;
+
+        switch (event.data.message) {
+
+            case 'previous':
+                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
+                if (_.slideCount > _.options.slidesToShow) {
+                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);
+                }
+                break;
+
+            case 'next':
+                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
+                if (_.slideCount > _.options.slidesToShow) {
+                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
+                }
+                break;
+
+            case 'index':
+                var index = event.data.index === 0 ? 0 :
+                    event.data.index || $target.index() * _.options.slidesToScroll;
+
+                _.slideHandler(_.checkNavigable(index), false, dontAnimate);
+                $target.children().trigger('focus');
+                break;
+
+            default:
+                return;
+        }
+
+    };
+
+    Slick.prototype.checkNavigable = function(index) {
+
+        var _ = this,
+            navigables, prevNavigable;
+
+        navigables = _.getNavigableIndexes();
+        prevNavigable = 0;
+        if (index > navigables[navigables.length - 1]) {
+            index = navigables[navigables.length - 1];
+        } else {
+            for (var n in navigables) {
+                if (index < navigables[n]) {
+                    index = prevNavigable;
+                    break;
+                }
+                prevNavigable = navigables[n];
+            }
+        }
+
+        return index;
+    };
+
+    Slick.prototype.cleanUpEvents = function() {
+
+        var _ = this;
+
+        if (_.options.dots && _.$dots !== null) {
+
+            $('li', _.$dots)
+                .off('click.slick', _.changeSlide)
+                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))
+                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));
+
+            if (_.options.accessibility === true) {
+                _.$dots.off('keydown.slick', _.keyHandler);
+            }
+        }
+
+        _.$slider.off('focus.slick blur.slick');
+
+        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
+            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);
+            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);
+
+            if (_.options.accessibility === true) {
+                _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);
+                _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);
+            }
+        }
+
+        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);
+        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);
+        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);
+        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);
+
+        _.$list.off('click.slick', _.clickHandler);
+
+        $(document).off(_.visibilityChange, _.visibility);
+
+        _.cleanUpSlideEvents();
+
+        if (_.options.accessibility === true) {
+            _.$list.off('keydown.slick', _.keyHandler);
+        }
+
+        if (_.options.focusOnSelect === true) {
+            $(_.$slideTrack).children().off('click.slick', _.selectHandler);
+        }
+
+        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);
+
+        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);
+
+        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);
+
+        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);
+
+    };
+
+    Slick.prototype.cleanUpSlideEvents = function() {
+
+        var _ = this;
+
+        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));
+        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));
+
+    };
+
+    Slick.prototype.cleanUpRows = function() {
+
+        var _ = this, originalSlides;
+
+        if(_.options.rows > 0) {
+            originalSlides = _.$slides.children().children();
+            originalSlides.removeAttr('style');
+            _.$slider.empty().append(originalSlides);
+        }
+
+    };
+
+    Slick.prototype.clickHandler = function(event) {
+
+        var _ = this;
+
+        if (_.shouldClick === false) {
+            event.stopImmediatePropagation();
+            event.stopPropagation();
+            event.preventDefault();
+        }
+
+    };
+
+    Slick.prototype.destroy = function(refresh) {
+
+        var _ = this;
+
+        _.autoPlayClear();
+
+        _.touchObject = {};
+
+        _.cleanUpEvents();
+
+        $('.slick-cloned', _.$slider).detach();
+
+        if (_.$dots) {
+            _.$dots.remove();
+        }
+
+        if ( _.$prevArrow && _.$prevArrow.length ) {
+
+            _.$prevArrow
+                .removeClass('slick-disabled slick-arrow slick-hidden')
+                .removeAttr('aria-hidden aria-disabled tabindex')
+                .css('display','');
+
+            if ( _.htmlExpr.test( _.options.prevArrow )) {
+                _.$prevArrow.remove();
+            }
+        }
+
+        if ( _.$nextArrow && _.$nextArrow.length ) {
+
+            _.$nextArrow
+                .removeClass('slick-disabled slick-arrow slick-hidden')
+                .removeAttr('aria-hidden aria-disabled tabindex')
+                .css('display','');
+
+            if ( _.htmlExpr.test( _.options.nextArrow )) {
+                _.$nextArrow.remove();
+            }
+        }
+
+
+        if (_.$slides) {
+
+            _.$slides
+                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')
+                .removeAttr('aria-hidden')
+                .removeAttr('data-slick-index')
+                .each(function(){
+                    $(this).attr('style', $(this).data('originalStyling'));
+                });
+
+            _.$slideTrack.children(this.options.slide).detach();
+
+            _.$slideTrack.detach();
+
+            _.$list.detach();
+
+            _.$slider.append(_.$slides);
+        }
+
+        _.cleanUpRows();
+
+        _.$slider.removeClass('slick-slider');
+        _.$slider.removeClass('slick-initialized');
+        _.$slider.removeClass('slick-dotted');
+
+        _.unslicked = true;
+
+        if(!refresh) {
+            _.$slider.trigger('destroy', [_]);
+        }
+
+    };
+
+    Slick.prototype.disableTransition = function(slide) {
+
+        var _ = this,
+            transition = {};
+
+        transition[_.transitionType] = '';
+
+        if (_.options.fade === false) {
+            _.$slideTrack.css(transition);
+        } else {
+            _.$slides.eq(slide).css(transition);
+        }
+
+    };
+
+    Slick.prototype.fadeSlide = function(slideIndex, callback) {
+
+        var _ = this;
+
+        if (_.cssTransitions === false) {
+
+            _.$slides.eq(slideIndex).css({
+                zIndex: _.options.zIndex
+            });
+
+            _.$slides.eq(slideIndex).animate({
+                opacity: 1
+            }, _.options.speed, _.options.easing, callback);
+
+        } else {
+
+            _.applyTransition(slideIndex);
+
+            _.$slides.eq(slideIndex).css({
+                opacity: 1,
+                zIndex: _.options.zIndex
+            });
+
+            if (callback) {
+                setTimeout(function() {
+
+                    _.disableTransition(slideIndex);
+
+                    callback.call();
+                }, _.options.speed);
+            }
+
+        }
+
+    };
+
+    Slick.prototype.fadeSlideOut = function(slideIndex) {
+
+        var _ = this;
+
+        if (_.cssTransitions === false) {
+
+            _.$slides.eq(slideIndex).animate({
+                opacity: 0,
+                zIndex: _.options.zIndex - 2
+            }, _.options.speed, _.options.easing);
+
+        } else {
+
+            _.applyTransition(slideIndex);
+
+            _.$slides.eq(slideIndex).css({
+                opacity: 0,
+                zIndex: _.options.zIndex - 2
+            });
+
+        }
+
+    };
+
+    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {
+
+        var _ = this;
+
+        if (filter !== null) {
+
+            _.$slidesCache = _.$slides;
+
+            _.unload();
+
+            _.$slideTrack.children(this.options.slide).detach();
+
+            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);
+
+            _.reinit();
+
+        }
+
+    };
+
+    Slick.prototype.focusHandler = function() {
+
+        var _ = this;
+
+        _.$slider
+            .off('focus.slick blur.slick')
+            .on('focus.slick blur.slick', '*', function(event) {
+
+            event.stopImmediatePropagation();
+            var $sf = $(this);
+
+            setTimeout(function() {
+
+                if( _.options.pauseOnFocus ) {
+                    _.focussed = $sf.is(':focus');
+                    _.autoPlay();
+                }
+
+            }, 0);
+
+        });
+    };
+
+    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {
+
+        var _ = this;
+        return _.currentSlide;
+
+    };
+
+    Slick.prototype.getDotCount = function() {
+
+        var _ = this;
+
+        var breakPoint = 0;
+        var counter = 0;
+        var pagerQty = 0;
+
+        if (_.options.infinite === true) {
+            if (_.slideCount <= _.options.slidesToShow) {
+                 ++pagerQty;
+            } else {
+                while (breakPoint < _.slideCount) {
+                    ++pagerQty;
+                    breakPoint = counter + _.options.slidesToScroll;
+                    counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
+                }
+            }
+        } else if (_.options.centerMode === true) {
+            pagerQty = _.slideCount;
+        } else if(!_.options.asNavFor) {
+            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);
+        }else {
+            while (breakPoint < _.slideCount) {
+                ++pagerQty;
+                breakPoint = counter + _.options.slidesToScroll;
+                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
+            }
+        }
+
+        return pagerQty - 1;
+
+    };
+
+    Slick.prototype.getLeft = function(slideIndex) {
+
+        var _ = this,
+            targetLeft,
+            verticalHeight,
+            verticalOffset = 0,
+            targetSlide,
+            coef;
+
+        _.slideOffset = 0;
+        verticalHeight = _.$slides.first().outerHeight(true);
+
+        if (_.options.infinite === true) {
+            if (_.slideCount > _.options.slidesToShow) {
+                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
+                coef = -1
+
+                if (_.options.vertical === true && _.options.centerMode === true) {
+                    if (_.options.slidesToShow === 2) {
+                        coef = -1.5;
+                    } else if (_.options.slidesToShow === 1) {
+                        coef = -2
+                    }
+                }
+                verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;
+            }
+            if (_.slideCount % _.options.slidesToScroll !== 0) {
+                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
+                    if (slideIndex > _.slideCount) {
+                        _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;
+                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;
+                    } else {
+                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;
+                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;
+                    }
+                }
+            }
+        } else {
+            if (slideIndex + _.options.slidesToShow > _.slideCount) {
+                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;
+                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;
+            }
+        }
+
+        if (_.slideCount <= _.options.slidesToShow) {
+            _.slideOffset = 0;
+            verticalOffset = 0;
+        }
+
+        if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {
+            _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);
+        } else if (_.options.centerMode === true && _.options.infinite === true) {
+            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
+        } else if (_.options.centerMode === true) {
+            _.slideOffset = 0;
+            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
+        }
+
+        if (_.options.vertical === false) {
+            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;
+        } else {
+            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;
+        }
+
+        if (_.options.variableWidth === true) {
+
+            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
+                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
+            } else {
+                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);
+            }
+
+            if (_.options.rtl === true) {
+                if (targetSlide[0]) {
+                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
+                } else {
+                    targetLeft =  0;
+                }
+            } else {
+                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
+            }
+
+            if (_.options.centerMode === true) {
+                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
+                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
+                } else {
+                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);
+                }
+
+                if (_.options.rtl === true) {
+                    if (targetSlide[0]) {
+                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
+                    } else {
+                        targetLeft =  0;
+                    }
+                } else {
+                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
+                }
+
+                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
+            }
+        }
+
+        return targetLeft;
+
+    };
+
+    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {
+
+        var _ = this;
+
+        return _.options[option];
+
+    };
+
+    Slick.prototype.getNavigableIndexes = function() {
+
+        var _ = this,
+            breakPoint = 0,
+            counter = 0,
+            indexes = [],
+            max;
+
+        if (_.options.infinite === false) {
+            max = _.slideCount;
+        } else {
+            breakPoint = _.options.slidesToScroll * -1;
+            counter = _.options.slidesToScroll * -1;
+            max = _.slideCount * 2;
+        }
+
+        while (breakPoint < max) {
+            indexes.push(breakPoint);
+            breakPoint = counter + _.options.slidesToScroll;
+            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
+        }
+
+        return indexes;
+
+    };
+
+    Slick.prototype.getSlick = function() {
+
+        return this;
+
+    };
+
+    Slick.prototype.getSlideCount = function() {
+
+        var _ = this,
+            slidesTraversed, swipedSlide, centerOffset;
+
+        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;
+
+        if (_.options.swipeToSlide === true) {
+            _.$slideTrack.find('.slick-slide').each(function(index, slide) {
+                if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {
+                    swipedSlide = slide;
+                    return false;
+                }
+            });
+
+            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;
+
+            return slidesTraversed;
+
+        } else {
+            return _.options.slidesToScroll;
+        }
+
+    };
+
+    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {
+
+        var _ = this;
+
+        _.changeSlide({
+            data: {
+                message: 'index',
+                index: parseInt(slide)
+            }
+        }, dontAnimate);
+
+    };
+
+    Slick.prototype.init = function(creation) {
+
+        var _ = this;
+
+        if (!$(_.$slider).hasClass('slick-initialized')) {
+
+            $(_.$slider).addClass('slick-initialized');
+
+            _.buildRows();
+            _.buildOut();
+            _.setProps();
+            _.startLoad();
+            _.loadSlider();
+            _.initializeEvents();
+            _.updateArrows();
+            _.updateDots();
+            _.checkResponsive(true);
+            _.focusHandler();
+
+        }
+
+        if (creation) {
+            _.$slider.trigger('init', [_]);
+        }
+
+        if (_.options.accessibility === true) {
+            _.initADA();
+        }
+
+        if ( _.options.autoplay ) {
+
+            _.paused = false;
+            _.autoPlay();
+
+        }
+
+    };
+
+    Slick.prototype.initADA = function() {
+        var _ = this,
+                numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),
+                tabControlIndexes = _.getNavigableIndexes().filter(function(val) {
+                    return (val >= 0) && (val < _.slideCount);
+                });
+
+        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({
+            'aria-hidden': 'true',
+            'tabindex': '-1'
+        }).find('a, input, button, select').attr({
+            'tabindex': '-1'
+        });
+
+        if (_.$dots !== null) {
+            _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {
+                var slideControlIndex = tabControlIndexes.indexOf(i);
+
+                $(this).attr({
+                    'role': 'tabpanel',
+                    'id': 'slick-slide' + _.instanceUid + i,
+                    'tabindex': -1
+                });
+
+                if (slideControlIndex !== -1) {
+                   var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex
+                   if ($('#' + ariaButtonControl).length) {
+                     $(this).attr({
+                         'aria-describedby': ariaButtonControl
+                     });
+                   }
+                }
+            });
+
+            _.$dots.attr('role', 'tablist').find('li').each(function(i) {
+                var mappedSlideIndex = tabControlIndexes[i];
+
+                $(this).attr({
+                    'role': 'presentation'
+                });
+
+                $(this).find('button').first().attr({
+                    'role': 'tab',
+                    'id': 'slick-slide-control' + _.instanceUid + i,
+                    'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,
+                    'aria-label': (i + 1) + ' of ' + numDotGroups,
+                    'aria-selected': null,
+                    'tabindex': '-1'
+                });
+
+            }).eq(_.currentSlide).find('button').attr({
+                'aria-selected': 'true',
+                'tabindex': '0'
+            }).end();
+        }
+
+        for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {
+          if (_.options.focusOnChange) {
+            _.$slides.eq(i).attr({'tabindex': '0'});
+          } else {
+            _.$slides.eq(i).removeAttr('tabindex');
+          }
+        }
+
+        _.activateADA();
+
+    };
+
+    Slick.prototype.initArrowEvents = function() {
+
+        var _ = this;
+
+        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
+            _.$prevArrow
+               .off('click.slick')
+               .on('click.slick', {
+                    message: 'previous'
+               }, _.changeSlide);
+            _.$nextArrow
+               .off('click.slick')
+               .on('click.slick', {
+                    message: 'next'
+               }, _.changeSlide);
+
+            if (_.options.accessibility === true) {
+                _.$prevArrow.on('keydown.slick', _.keyHandler);
+                _.$nextArrow.on('keydown.slick', _.keyHandler);
+            }
+        }
+
+    };
+
+    Slick.prototype.initDotEvents = function() {
+
+        var _ = this;
+
+        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
+            $('li', _.$dots).on('click.slick', {
+                message: 'index'
+            }, _.changeSlide);
+
+            if (_.options.accessibility === true) {
+                _.$dots.on('keydown.slick', _.keyHandler);
+            }
+        }
+
+        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {
+
+            $('li', _.$dots)
+                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))
+                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));
+
+        }
+
+    };
+
+    Slick.prototype.initSlideEvents = function() {
+
+        var _ = this;
+
+        if ( _.options.pauseOnHover ) {
+
+            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
+            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));
+
+        }
+
+    };
+
+    Slick.prototype.initializeEvents = function() {
+
+        var _ = this;
+
+        _.initArrowEvents();
+
+        _.initDotEvents();
+        _.initSlideEvents();
+
+        _.$list.on('touchstart.slick mousedown.slick', {
+            action: 'start'
+        }, _.swipeHandler);
+        _.$list.on('touchmove.slick mousemove.slick', {
+            action: 'move'
+        }, _.swipeHandler);
+        _.$list.on('touchend.slick mouseup.slick', {
+            action: 'end'
+        }, _.swipeHandler);
+        _.$list.on('touchcancel.slick mouseleave.slick', {
+            action: 'end'
+        }, _.swipeHandler);
+
+        _.$list.on('click.slick', _.clickHandler);
+
+        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));
+
+        if (_.options.accessibility === true) {
+            _.$list.on('keydown.slick', _.keyHandler);
+        }
+
+        if (_.options.focusOnSelect === true) {
+            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
+        }
+
+        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));
+
+        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));
+
+        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);
+
+        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
+        $(_.setPosition);
+
+    };
+
+    Slick.prototype.initUI = function() {
+
+        var _ = this;
+
+        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
+
+            _.$prevArrow.show();
+            _.$nextArrow.show();
+
+        }
+
+        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
+
+            _.$dots.show();
+
+        }
+
+    };
+
+    Slick.prototype.keyHandler = function(event) {
+
+        var _ = this;
+         //Dont slide if the cursor is inside the form fields and arrow keys are pressed
+        if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {
+            if (event.keyCode === 37 && _.options.accessibility === true) {
+                _.changeSlide({
+                    data: {
+                        message: _.options.rtl === true ? 'next' :  'previous'
+                    }
+                });
+            } else if (event.keyCode === 39 && _.options.accessibility === true) {
+                _.changeSlide({
+                    data: {
+                        message: _.options.rtl === true ? 'previous' : 'next'
+                    }
+                });
+            }
+        }
+
+    };
+
+    Slick.prototype.lazyLoad = function() {
+
+        var _ = this,
+            loadRange, cloneRange, rangeStart, rangeEnd;
+
+        function loadImages(imagesScope) {
+
+            $('img[data-lazy]', imagesScope).each(function() {
+
+                var image = $(this),
+                    imageSource = $(this).attr('data-lazy'),
+                    imageSrcSet = $(this).attr('data-srcset'),
+                    imageSizes  = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),
+                    imageToLoad = document.createElement('img');
+
+                imageToLoad.onload = function() {
+
+                    image
+                        .animate({ opacity: 0 }, 100, function() {
+
+                            if (imageSrcSet) {
+                                image
+                                    .attr('srcset', imageSrcSet );
+
+                                if (imageSizes) {
+                                    image
+                                        .attr('sizes', imageSizes );
+                                }
+                            }
+
+                            image
+                                .attr('src', imageSource)
+                                .animate({ opacity: 1 }, 200, function() {
+                                    image
+                                        .removeAttr('data-lazy data-srcset data-sizes')
+                                        .removeClass('slick-loading');
+                                });
+                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);
+                        });
+
+                };
+
+                imageToLoad.onerror = function() {
+
+                    image
+                        .removeAttr( 'data-lazy' )
+                        .removeClass( 'slick-loading' )
+                        .addClass( 'slick-lazyload-error' );
+
+                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
+
+                };
+
+                imageToLoad.src = imageSource;
+
+            });
+
+        }
+
+        if (_.options.centerMode === true) {
+            if (_.options.infinite === true) {
+                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);
+                rangeEnd = rangeStart + _.options.slidesToShow + 2;
+            } else {
+                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));
+                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;
+            }
+        } else {
+            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
+            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);
+            if (_.options.fade === true) {
+                if (rangeStart > 0) rangeStart--;
+                if (rangeEnd <= _.slideCount) rangeEnd++;
+            }
+        }
+
+        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);
+
+        if (_.options.lazyLoad === 'anticipated') {
+            var prevSlide = rangeStart - 1,
+                nextSlide = rangeEnd,
+                $slides = _.$slider.find('.slick-slide');
+
+            for (var i = 0; i < _.options.slidesToScroll; i++) {
+                if (prevSlide < 0) prevSlide = _.slideCount - 1;
+                loadRange = loadRange.add($slides.eq(prevSlide));
+                loadRange = loadRange.add($slides.eq(nextSlide));
+                prevSlide--;
+                nextSlide++;
+            }
+        }
+
+        loadImages(loadRange);
+
+        if (_.slideCount <= _.options.slidesToShow) {
+            cloneRange = _.$slider.find('.slick-slide');
+            loadImages(cloneRange);
+        } else
+        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
+            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);
+            loadImages(cloneRange);
+        } else if (_.currentSlide === 0) {
+            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);
+            loadImages(cloneRange);
+        }
+
+    };
+
+    Slick.prototype.loadSlider = function() {
+
+        var _ = this;
+
+        _.setPosition();
+
+        _.$slideTrack.css({
+            opacity: 1
+        });
+
+        _.$slider.removeClass('slick-loading');
+
+        _.initUI();
+
+        if (_.options.lazyLoad === 'progressive') {
+            _.progressiveLazyLoad();
+        }
+
+    };
+
+    Slick.prototype.next = Slick.prototype.slickNext = function() {
+
+        var _ = this;
+
+        _.changeSlide({
+            data: {
+                message: 'next'
+            }
+        });
+
+    };
+
+    Slick.prototype.orientationChange = function() {
+
+        var _ = this;
+
+        _.checkResponsive();
+        _.setPosition();
+
+    };
+
+    Slick.prototype.pause = Slick.prototype.slickPause = function() {
+
+        var _ = this;
+
+        _.autoPlayClear();
+        _.paused = true;
+
+    };
+
+    Slick.prototype.play = Slick.prototype.slickPlay = function() {
+
+        var _ = this;
+
+        _.autoPlay();
+        _.options.autoplay = true;
+        _.paused = false;
+        _.focussed = false;
+        _.interrupted = false;
+
+    };
+
+    Slick.prototype.postSlide = function(index) {
+
+        var _ = this;
+
+        if( !_.unslicked ) {
+
+            _.$slider.trigger('afterChange', [_, index]);
+
+            _.animating = false;
+
+            if (_.slideCount > _.options.slidesToShow) {
+                _.setPosition();
+            }
+
+            _.swipeLeft = null;
+
+            if ( _.options.autoplay ) {
+                _.autoPlay();
+            }
+
+            if (_.options.accessibility === true) {
+                _.initADA();
+
+                if (_.options.focusOnChange) {
+                    var $currentSlide = $(_.$slides.get(_.currentSlide));
+                    $currentSlide.attr('tabindex', 0).focus();
+                }
+            }
+
+        }
+
+    };
+
+    Slick.prototype.prev = Slick.prototype.slickPrev = function() {
+
+        var _ = this;
+
+        _.changeSlide({
+            data: {
+                message: 'previous'
+            }
+        });
+
+    };
+
+    Slick.prototype.preventDefault = function(event) {
+
+        event.preventDefault();
+
+    };
+
+    Slick.prototype.progressiveLazyLoad = function( tryCount ) {
+
+        tryCount = tryCount || 1;
+
+        var _ = this,
+            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),
+            image,
+            imageSource,
+            imageSrcSet,
+            imageSizes,
+            imageToLoad;
+
+        if ( $imgsToLoad.length ) {
+
+            image = $imgsToLoad.first();
+            imageSource = image.attr('data-lazy');
+            imageSrcSet = image.attr('data-srcset');
+            imageSizes  = image.attr('data-sizes') || _.$slider.attr('data-sizes');
+            imageToLoad = document.createElement('img');
+
+            imageToLoad.onload = function() {
+
+                if (imageSrcSet) {
+                    image
+                        .attr('srcset', imageSrcSet );
+
+                    if (imageSizes) {
+                        image
+                            .attr('sizes', imageSizes );
+                    }
+                }
+
+                image
+                    .attr( 'src', imageSource )
+                    .removeAttr('data-lazy data-srcset data-sizes')
+                    .removeClass('slick-loading');
+
+                if ( _.options.adaptiveHeight === true ) {
+                    _.setPosition();
+                }
+
+                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);
+                _.progressiveLazyLoad();
+
+            };
+
+            imageToLoad.onerror = function() {
+
+                if ( tryCount < 3 ) {
+
+                    /**
+                     * try to load the image 3 times,
+                     * leave a slight delay so we don't get
+                     * servers blocking the request.
+                     */
+                    setTimeout( function() {
+                        _.progressiveLazyLoad( tryCount + 1 );
+                    }, 500 );
+
+                } else {
+
+                    image
+                        .removeAttr( 'data-lazy' )
+                        .removeClass( 'slick-loading' )
+                        .addClass( 'slick-lazyload-error' );
+
+                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
+
+                    _.progressiveLazyLoad();
+
+                }
+
+            };
+
+            imageToLoad.src = imageSource;
+
+        } else {
+
+            _.$slider.trigger('allImagesLoaded', [ _ ]);
+
+        }
+
+    };
+
+    Slick.prototype.refresh = function( initializing ) {
+
+        var _ = this, currentSlide, lastVisibleIndex;
+
+        lastVisibleIndex = _.slideCount - _.options.slidesToShow;
+
+        // in non-infinite sliders, we don't want to go past the
+        // last visible index.
+        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {
+            _.currentSlide = lastVisibleIndex;
+        }
+
+        // if less slides than to show, go to start.
+        if ( _.slideCount <= _.options.slidesToShow ) {
+            _.currentSlide = 0;
+
+        }
+
+        currentSlide = _.currentSlide;
+
+        _.destroy(true);
+
+        $.extend(_, _.initials, { currentSlide: currentSlide });
+
+        _.init();
+
+        if( !initializing ) {
+
+            _.changeSlide({
+                data: {
+                    message: 'index',
+                    index: currentSlide
+                }
+            }, false);
+
+        }
+
+    };
+
+    Slick.prototype.registerBreakpoints = function() {
+
+        var _ = this, breakpoint, currentBreakpoint, l,
+            responsiveSettings = _.options.responsive || null;
+
+        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {
+
+            _.respondTo = _.options.respondTo || 'window';
+
+            for ( breakpoint in responsiveSettings ) {
+
+                l = _.breakpoints.length-1;
+
+                if (responsiveSettings.hasOwnProperty(breakpoint)) {
+                    currentBreakpoint = responsiveSettings[breakpoint].breakpoint;
+
+                    // loop through the breakpoints and cut out any existing
+                    // ones with the same breakpoint number, we don't want dupes.
+                    while( l >= 0 ) {
+                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {
+                            _.breakpoints.splice(l,1);
+                        }
+                        l--;
+                    }
+
+                    _.breakpoints.push(currentBreakpoint);
+                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;
+
+                }
+
+            }
+
+            _.breakpoints.sort(function(a, b) {
+                return ( _.options.mobileFirst ) ? a-b : b-a;
+            });
+
+        }
+
+    };
+
+    Slick.prototype.reinit = function() {
+
+        var _ = this;
+
+        _.$slides =
+            _.$slideTrack
+                .children(_.options.slide)
+                .addClass('slick-slide');
+
+        _.slideCount = _.$slides.length;
+
+        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
+            _.currentSlide = _.currentSlide - _.options.slidesToScroll;
+        }
+
+        if (_.slideCount <= _.options.slidesToShow) {
+            _.currentSlide = 0;
+        }
+
+        _.registerBreakpoints();
+
+        _.setProps();
+        _.setupInfinite();
+        _.buildArrows();
+        _.updateArrows();
+        _.initArrowEvents();
+        _.buildDots();
+        _.updateDots();
+        _.initDotEvents();
+        _.cleanUpSlideEvents();
+        _.initSlideEvents();
+
+        _.checkResponsive(false, true);
+
+        if (_.options.focusOnSelect === true) {
+            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
+        }
+
+        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
+
+        _.setPosition();
+        _.focusHandler();
+
+        _.paused = !_.options.autoplay;
+        _.autoPlay();
+
+        _.$slider.trigger('reInit', [_]);
+
+    };
+
+    Slick.prototype.resize = function() {
+
+        var _ = this;
+
+        if ($(window).width() !== _.windowWidth) {
+            clearTimeout(_.windowDelay);
+            _.windowDelay = window.setTimeout(function() {
+                _.windowWidth = $(window).width();
+                _.checkResponsive();
+                if( !_.unslicked ) { _.setPosition(); }
+            }, 50);
+        }
+    };
+
+    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {
+
+        var _ = this;
+
+        if (typeof(index) === 'boolean') {
+            removeBefore = index;
+            index = removeBefore === true ? 0 : _.slideCount - 1;
+        } else {
+            index = removeBefore === true ? --index : index;
+        }
+
+        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
+            return false;
+        }
+
+        _.unload();
+
+        if (removeAll === true) {
+            _.$slideTrack.children().remove();
+        } else {
+            _.$slideTrack.children(this.options.slide).eq(index).remove();
+        }
+
+        _.$slides = _.$slideTrack.children(this.options.slide);
+
+        _.$slideTrack.children(this.options.slide).detach();
+
+        _.$slideTrack.append(_.$slides);
+
+        _.$slidesCache = _.$slides;
+
+        _.reinit();
+
+    };
+
+    Slick.prototype.setCSS = function(position) {
+
+        var _ = this,
+            positionProps = {},
+            x, y;
+
+        if (_.options.rtl === true) {
+            position = -position;
+        }
+        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';
+        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';
+
+        positionProps[_.positionProp] = position;
+
+        if (_.transformsEnabled === false) {
+            _.$slideTrack.css(positionProps);
+        } else {
+            positionProps = {};
+            if (_.cssTransitions === false) {
+                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';
+                _.$slideTrack.css(positionProps);
+            } else {
+                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';
+                _.$slideTrack.css(positionProps);
+            }
+        }
+
+    };
+
+    Slick.prototype.setDimensions = function() {
+
+        var _ = this;
+
+        if (_.options.vertical === false) {
+            if (_.options.centerMode === true) {
+                _.$list.css({
+                    padding: ('0px ' + _.options.centerPadding)
+                });
+            }
+        } else {
+            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
+            if (_.options.centerMode === true) {
+                _.$list.css({
+                    padding: (_.options.centerPadding + ' 0px')
+                });
+            }
+        }
+
+        _.listWidth = _.$list.width();
+        _.listHeight = _.$list.height();
+
+
+        if (_.options.vertical === false && _.options.variableWidth === false) {
+            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
+            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));
+
+        } else if (_.options.variableWidth === true) {
+            _.$slideTrack.width(5000 * _.slideCount);
+        } else {
+            _.slideWidth = Math.ceil(_.listWidth);
+            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));
+        }
+
+        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
+        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);
+
+    };
+
+    Slick.prototype.setFade = function() {
+
+        var _ = this,
+            targetLeft;
+
+        _.$slides.each(function(index, element) {
+            targetLeft = (_.slideWidth * index) * -1;
+            if (_.options.rtl === true) {
+                $(element).css({
+                    position: 'relative',
+                    right: targetLeft,
+                    top: 0,
+                    zIndex: _.options.zIndex - 2,
+                    opacity: 0
+                });
+            } else {
+                $(element).css({
+                    position: 'relative',
+                    left: targetLeft,
+                    top: 0,
+                    zIndex: _.options.zIndex - 2,
+                    opacity: 0
+                });
+            }
+        });
+
+        _.$slides.eq(_.currentSlide).css({
+            zIndex: _.options.zIndex - 1,
+            opacity: 1
+        });
+
+    };
+
+    Slick.prototype.setHeight = function() {
+
+        var _ = this;
+
+        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
+            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
+            _.$list.css('height', targetHeight);
+        }
+
+    };
+
+    Slick.prototype.setOption =
+    Slick.prototype.slickSetOption = function() {
+
+        /**
+         * accepts arguments in format of:
+         *
+         *  - for changing a single option's value:
+         *     .slick("setOption", option, value, refresh )
+         *
+         *  - for changing a set of responsive options:
+         *     .slick("setOption", 'responsive', [{}, ...], refresh )
+         *
+         *  - for updating multiple values at once (not responsive)
+         *     .slick("setOption", { 'option': value, ... }, refresh )
+         */
+
+        var _ = this, l, item, option, value, refresh = false, type;
+
+        if( $.type( arguments[0] ) === 'object' ) {
+
+            option =  arguments[0];
+            refresh = arguments[1];
+            type = 'multiple';
+
+        } else if ( $.type( arguments[0] ) === 'string' ) {
+
+            option =  arguments[0];
+            value = arguments[1];
+            refresh = arguments[2];
+
+            if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {
+
+                type = 'responsive';
+
+            } else if ( typeof arguments[1] !== 'undefined' ) {
+
+                type = 'single';
+
+            }
+
+        }
+
+        if ( type === 'single' ) {
+
+            _.options[option] = value;
+
+
+        } else if ( type === 'multiple' ) {
+
+            $.each( option , function( opt, val ) {
+
+                _.options[opt] = val;
+
+            });
+
+
+        } else if ( type === 'responsive' ) {
+
+            for ( item in value ) {
+
+                if( $.type( _.options.responsive ) !== 'array' ) {
+
+                    _.options.responsive = [ value[item] ];
+
+                } else {
+
+                    l = _.options.responsive.length-1;
+
+                    // loop through the responsive object and splice out duplicates.
+                    while( l >= 0 ) {
+
+                        if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {
+
+                            _.options.responsive.splice(l,1);
+
+                        }
+
+                        l--;
+
+                    }
+
+                    _.options.responsive.push( value[item] );
+
+                }
+
+            }
+
+        }
+
+        if ( refresh ) {
+
+            _.unload();
+            _.reinit();
+
+        }
+
+    };
+
+    Slick.prototype.setPosition = function() {
+
+        var _ = this;
+
+        _.setDimensions();
+
+        _.setHeight();
+
+        if (_.options.fade === false) {
+            _.setCSS(_.getLeft(_.currentSlide));
+        } else {
+            _.setFade();
+        }
+
+        _.$slider.trigger('setPosition', [_]);
+
+    };
+
+    Slick.prototype.setProps = function() {
+
+        var _ = this,
+            bodyStyle = document.body.style;
+
+        _.positionProp = _.options.vertical === true ? 'top' : 'left';
+
+        if (_.positionProp === 'top') {
+            _.$slider.addClass('slick-vertical');
+        } else {
+            _.$slider.removeClass('slick-vertical');
+        }
+
+        if (bodyStyle.WebkitTransition !== undefined ||
+            bodyStyle.MozTransition !== undefined ||
+            bodyStyle.msTransition !== undefined) {
+            if (_.options.useCSS === true) {
+                _.cssTransitions = true;
+            }
+        }
+
+        if ( _.options.fade ) {
+            if ( typeof _.options.zIndex === 'number' ) {
+                if( _.options.zIndex < 3 ) {
+                    _.options.zIndex = 3;
+                }
+            } else {
+                _.options.zIndex = _.defaults.zIndex;
+            }
+        }
+
+        if (bodyStyle.OTransform !== undefined) {
+            _.animType = 'OTransform';
+            _.transformType = '-o-transform';
+            _.transitionType = 'OTransition';
+            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
+        }
+        if (bodyStyle.MozTransform !== undefined) {
+            _.animType = 'MozTransform';
+            _.transformType = '-moz-transform';
+            _.transitionType = 'MozTransition';
+            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
+        }
+        if (bodyStyle.webkitTransform !== undefined) {
+            _.animType = 'webkitTransform';
+            _.transformType = '-webkit-transform';
+            _.transitionType = 'webkitTransition';
+            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
+        }
+        if (bodyStyle.msTransform !== undefined) {
+            _.animType = 'msTransform';
+            _.transformType = '-ms-transform';
+            _.transitionType = 'msTransition';
+            if (bodyStyle.msTransform === undefined) _.animType = false;
+        }
+        if (bodyStyle.transform !== undefined && _.animType !== false) {
+            _.animType = 'transform';
+            _.transformType = 'transform';
+            _.transitionType = 'transition';
+        }
+        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);
+    };
+
+
+    Slick.prototype.setSlideClasses = function(index) {
+
+        var _ = this,
+            centerOffset, allSlides, indexOffset, remainder;
+
+        allSlides = _.$slider
+            .find('.slick-slide')
+            .removeClass('slick-active slick-center slick-current')
+            .attr('aria-hidden', 'true');
+
+        _.$slides
+            .eq(index)
+            .addClass('slick-current');
+
+        if (_.options.centerMode === true) {
+
+            var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;
+
+            centerOffset = Math.floor(_.options.slidesToShow / 2);
+
+            if (_.options.infinite === true) {
+
+                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
+                    _.$slides
+                        .slice(index - centerOffset + evenCoef, index + centerOffset + 1)
+                        .addClass('slick-active')
+                        .attr('aria-hidden', 'false');
+
+                } else {
+
+                    indexOffset = _.options.slidesToShow + index;
+                    allSlides
+                        .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)
+                        .addClass('slick-active')
+                        .attr('aria-hidden', 'false');
+
+                }
+
+                if (index === 0) {
+
+                    allSlides
+                        .eq(allSlides.length - 1 - _.options.slidesToShow)
+                        .addClass('slick-center');
+
+                } else if (index === _.slideCount - 1) {
+
+                    allSlides
+                        .eq(_.options.slidesToShow)
+                        .addClass('slick-center');
+
+                }
+
+            }
+
+            _.$slides
+                .eq(index)
+                .addClass('slick-center');
+
+        } else {
+
+            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {
+
+                _.$slides
+                    .slice(index, index + _.options.slidesToShow)
+                    .addClass('slick-active')
+                    .attr('aria-hidden', 'false');
+
+            } else if (allSlides.length <= _.options.slidesToShow) {
+
+                allSlides
+                    .addClass('slick-active')
+                    .attr('aria-hidden', 'false');
+
+            } else {
+
+                remainder = _.slideCount % _.options.slidesToShow;
+                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;
+
+                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {
+
+                    allSlides
+                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)
+                        .addClass('slick-active')
+                        .attr('aria-hidden', 'false');
+
+                } else {
+
+                    allSlides
+                        .slice(indexOffset, indexOffset + _.options.slidesToShow)
+                        .addClass('slick-active')
+                        .attr('aria-hidden', 'false');
+
+                }
+
+            }
+
+        }
+
+        if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {
+            _.lazyLoad();
+        }
+    };
+
+    Slick.prototype.setupInfinite = function() {
+
+        var _ = this,
+            i, slideIndex, infiniteCount;
+
+        if (_.options.fade === true) {
+            _.options.centerMode = false;
+        }
+
+        if (_.options.infinite === true && _.options.fade === false) {
+
+            slideIndex = null;
+
+            if (_.slideCount > _.options.slidesToShow) {
+
+                if (_.options.centerMode === true) {
+                    infiniteCount = _.options.slidesToShow + 1;
+                } else {
+                    infiniteCount = _.options.slidesToShow;
+                }
+
+                for (i = _.slideCount; i > (_.slideCount -
+                        infiniteCount); i -= 1) {
+                    slideIndex = i - 1;
+                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
+                        .attr('data-slick-index', slideIndex - _.slideCount)
+                        .prependTo(_.$slideTrack).addClass('slick-cloned');
+                }
+                for (i = 0; i < infiniteCount  + _.slideCount; i += 1) {
+                    slideIndex = i;
+                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
+                        .attr('data-slick-index', slideIndex + _.slideCount)
+                        .appendTo(_.$slideTrack).addClass('slick-cloned');
+                }
+                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {
+                    $(this).attr('id', '');
+                });
+
+            }
+
+        }
+
+    };
+
+    Slick.prototype.interrupt = function( toggle ) {
+
+        var _ = this;
+
+        if( !toggle ) {
+            _.autoPlay();
+        }
+        _.interrupted = toggle;
+
+    };
+
+    Slick.prototype.selectHandler = function(event) {
+
+        var _ = this;
+
+        var targetElement =
+            $(event.target).is('.slick-slide') ?
+                $(event.target) :
+                $(event.target).parents('.slick-slide');
+
+        var index = parseInt(targetElement.attr('data-slick-index'));
+
+        if (!index) index = 0;
+
+        if (_.slideCount <= _.options.slidesToShow) {
+
+            _.slideHandler(index, false, true);
+            return;
+
+        }
+
+        _.slideHandler(index);
+
+    };
+
+    Slick.prototype.slideHandler = function(index, sync, dontAnimate) {
+
+        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,
+            _ = this, navTarget;
+
+        sync = sync || false;
+
+        if (_.animating === true && _.options.waitForAnimate === true) {
+            return;
+        }
+
+        if (_.options.fade === true && _.currentSlide === index) {
+            return;
+        }
+
+        if (sync === false) {
+            _.asNavFor(index);
+        }
+
+        targetSlide = index;
+        targetLeft = _.getLeft(targetSlide);
+        slideLeft = _.getLeft(_.currentSlide);
+
+        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;
+
+        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
+            if (_.options.fade === false) {
+                targetSlide = _.currentSlide;
+                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
+                    _.animateSlide(slideLeft, function() {
+                        _.postSlide(targetSlide);
+                    });
+                } else {
+                    _.postSlide(targetSlide);
+                }
+            }
+            return;
+        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {
+            if (_.options.fade === false) {
+                targetSlide = _.currentSlide;
+                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
+                    _.animateSlide(slideLeft, function() {
+                        _.postSlide(targetSlide);
+                    });
+                } else {
+                    _.postSlide(targetSlide);
+                }
+            }
+            return;
+        }
+
+        if ( _.options.autoplay ) {
+            clearInterval(_.autoPlayTimer);
+        }
+
+        if (targetSlide < 0) {
+            if (_.slideCount % _.options.slidesToScroll !== 0) {
+                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);
+            } else {
+                animSlide = _.slideCount + targetSlide;
+            }
+        } else if (targetSlide >= _.slideCount) {
+            if (_.slideCount % _.options.slidesToScroll !== 0) {
+                animSlide = 0;
+            } else {
+                animSlide = targetSlide - _.slideCount;
+            }
+        } else {
+            animSlide = targetSlide;
+        }
+
+        _.animating = true;
+
+        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);
+
+        oldSlide = _.currentSlide;
+        _.currentSlide = animSlide;
+
+        _.setSlideClasses(_.currentSlide);
+
+        if ( _.options.asNavFor ) {
+
+            navTarget = _.getNavTarget();
+            navTarget = navTarget.slick('getSlick');
+
+            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {
+                navTarget.setSlideClasses(_.currentSlide);
+            }
+
+        }
+
+        _.updateDots();
+        _.updateArrows();
+
+        if (_.options.fade === true) {
+            if (dontAnimate !== true) {
+
+                _.fadeSlideOut(oldSlide);
+
+                _.fadeSlide(animSlide, function() {
+                    _.postSlide(animSlide);
+                });
+
+            } else {
+                _.postSlide(animSlide);
+            }
+            _.animateHeight();
+            return;
+        }
+
+        if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
+            _.animateSlide(targetLeft, function() {
+                _.postSlide(animSlide);
+            });
+        } else {
+            _.postSlide(animSlide);
+        }
+
+    };
+
+    Slick.prototype.startLoad = function() {
+
+        var _ = this;
+
+        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
+
+            _.$prevArrow.hide();
+            _.$nextArrow.hide();
+
+        }
+
+        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
+
+            _.$dots.hide();
+
+        }
+
+        _.$slider.addClass('slick-loading');
+
+    };
+
+    Slick.prototype.swipeDirection = function() {
+
+        var xDist, yDist, r, swipeAngle, _ = this;
+
+        xDist = _.touchObject.startX - _.touchObject.curX;
+        yDist = _.touchObject.startY - _.touchObject.curY;
+        r = Math.atan2(yDist, xDist);
+
+        swipeAngle = Math.round(r * 180 / Math.PI);
+        if (swipeAngle < 0) {
+            swipeAngle = 360 - Math.abs(swipeAngle);
+        }
+
+        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
+            return (_.options.rtl === false ? 'left' : 'right');
+        }
+        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
+            return (_.options.rtl === false ? 'left' : 'right');
+        }
+        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
+            return (_.options.rtl === false ? 'right' : 'left');
+        }
+        if (_.options.verticalSwiping === true) {
+            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {
+                return 'down';
+            } else {
+                return 'up';
+            }
+        }
+
+        return 'vertical';
+
+    };
+
+    Slick.prototype.swipeEnd = function(event) {
+
+        var _ = this,
+            slideCount,
+            direction;
+
+        _.dragging = false;
+        _.swiping = false;
+
+        if (_.scrolling) {
+            _.scrolling = false;
+            return false;
+        }
+
+        _.interrupted = false;
+        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;
+
+        if ( _.touchObject.curX === undefined ) {
+            return false;
+        }
+
+        if ( _.touchObject.edgeHit === true ) {
+            _.$slider.trigger('edge', [_, _.swipeDirection() ]);
+        }
+
+        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {
+
+            direction = _.swipeDirection();
+
+            switch ( direction ) {
+
+                case 'left':
+                case 'down':
+
+                    slideCount =
+                        _.options.swipeToSlide ?
+                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :
+                            _.currentSlide + _.getSlideCount();
+
+                    _.currentDirection = 0;
+
+                    break;
+
+                case 'right':
+                case 'up':
+
+                    slideCount =
+                        _.options.swipeToSlide ?
+                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :
+                            _.currentSlide - _.getSlideCount();
+
+                    _.currentDirection = 1;
+
+                    break;
+
+                default:
+
+
+            }
+
+            if( direction != 'vertical' ) {
+
+                _.slideHandler( slideCount );
+                _.touchObject = {};
+                _.$slider.trigger('swipe', [_, direction ]);
+
+            }
+
+        } else {
+
+            if ( _.touchObject.startX !== _.touchObject.curX ) {
+
+                _.slideHandler( _.currentSlide );
+                _.touchObject = {};
+
+            }
+
+        }
+
+    };
+
+    Slick.prototype.swipeHandler = function(event) {
+
+        var _ = this;
+
+        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
+            return;
+        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {
+            return;
+        }
+
+        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?
+            event.originalEvent.touches.length : 1;
+
+        _.touchObject.minSwipe = _.listWidth / _.options
+            .touchThreshold;
+
+        if (_.options.verticalSwiping === true) {
+            _.touchObject.minSwipe = _.listHeight / _.options
+                .touchThreshold;
+        }
+
+        switch (event.data.action) {
+
+            case 'start':
+                _.swipeStart(event);
+                break;
+
+            case 'move':
+                _.swipeMove(event);
+                break;
+
+            case 'end':
+                _.swipeEnd(event);
+                break;
+
+        }
+
+    };
+
+    Slick.prototype.swipeMove = function(event) {
+
+        var _ = this,
+            edgeWasHit = false,
+            curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;
+
+        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
+
+        if (!_.dragging || _.scrolling || touches && touches.length !== 1) {
+            return false;
+        }
+
+        curLeft = _.getLeft(_.currentSlide);
+
+        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
+        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;
+
+        _.touchObject.swipeLength = Math.round(Math.sqrt(
+            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
+
+        verticalSwipeLength = Math.round(Math.sqrt(
+            Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));
+
+        if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {
+            _.scrolling = true;
+            return false;
+        }
+
+        if (_.options.verticalSwiping === true) {
+            _.touchObject.swipeLength = verticalSwipeLength;
+        }
+
+        swipeDirection = _.swipeDirection();
+
+        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
+            _.swiping = true;
+            event.preventDefault();
+        }
+
+        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
+        if (_.options.verticalSwiping === true) {
+            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;
+        }
+
+
+        swipeLength = _.touchObject.swipeLength;
+
+        _.touchObject.edgeHit = false;
+
+        if (_.options.infinite === false) {
+            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {
+                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;
+                _.touchObject.edgeHit = true;
+            }
+        }
+
+        if (_.options.vertical === false) {
+            _.swipeLeft = curLeft + swipeLength * positionOffset;
+        } else {
+            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;
+        }
+        if (_.options.verticalSwiping === true) {
+            _.swipeLeft = curLeft + swipeLength * positionOffset;
+        }
+
+        if (_.options.fade === true || _.options.touchMove === false) {
+            return false;
+        }
+
+        if (_.animating === true) {
+            _.swipeLeft = null;
+            return false;
+        }
+
+        _.setCSS(_.swipeLeft);
+
+    };
+
+    Slick.prototype.swipeStart = function(event) {
+
+        var _ = this,
+            touches;
+
+        _.interrupted = true;
+
+        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
+            _.touchObject = {};
+            return false;
+        }
+
+        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
+            touches = event.originalEvent.touches[0];
+        }
+
+        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
+        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;
+
+        _.dragging = true;
+
+    };
+
+    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {
+
+        var _ = this;
+
+        if (_.$slidesCache !== null) {
+
+            _.unload();
+
+            _.$slideTrack.children(this.options.slide).detach();
+
+            _.$slidesCache.appendTo(_.$slideTrack);
+
+            _.reinit();
+
+        }
+
+    };
+
+    Slick.prototype.unload = function() {
+
+        var _ = this;
+
+        $('.slick-cloned', _.$slider).remove();
+
+        if (_.$dots) {
+            _.$dots.remove();
+        }
+
+        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {
+            _.$prevArrow.remove();
+        }
+
+        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {
+            _.$nextArrow.remove();
+        }
+
+        _.$slides
+            .removeClass('slick-slide slick-active slick-visible slick-current')
+            .attr('aria-hidden', 'true')
+            .css('width', '');
+
+    };
+
+    Slick.prototype.unslick = function(fromBreakpoint) {
+
+        var _ = this;
+        _.$slider.trigger('unslick', [_, fromBreakpoint]);
+        _.destroy();
+
+    };
+
+    Slick.prototype.updateArrows = function() {
+
+        var _ = this,
+            centerOffset;
+
+        centerOffset = Math.floor(_.options.slidesToShow / 2);
+
+        if ( _.options.arrows === true &&
+            _.slideCount > _.options.slidesToShow &&
+            !_.options.infinite ) {
+
+            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
+            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
+
+            if (_.currentSlide === 0) {
+
+                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
+                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
+
+            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {
+
+                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
+                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
+
+            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {
+
+                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
+                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
+
+            }
+
+        }
+
+    };
+
+    Slick.prototype.updateDots = function() {
+
+        var _ = this;
+
+        if (_.$dots !== null) {
+
+            _.$dots
+                .find('li')
+                    .removeClass('slick-active')
+                    .end();
+
+            _.$dots
+                .find('li')
+                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
+                .addClass('slick-active');
+
+        }
+
+    };
+
+    Slick.prototype.visibility = function() {
+
+        var _ = this;
+
+        if ( _.options.autoplay ) {
+
+            if ( document[_.hidden] ) {
+
+                _.interrupted = true;
+
+            } else {
+
+                _.interrupted = false;
+
+            }
+
+        }
+
+    };
+
+    $.fn.slick = function() {
+        var _ = this,
+            opt = arguments[0],
+            args = Array.prototype.slice.call(arguments, 1),
+            l = _.length,
+            i,
+            ret;
+        for (i = 0; i < l; i++) {
+            if (typeof opt == 'object' || typeof opt == 'undefined')
+                _[i].slick = new Slick(_[i], opt);
+            else
+                ret = _[i].slick[opt].apply(_[i].slick, args);
+            if (typeof ret != 'undefined') return ret;
+        }
+        return _;
+    };
+
+}));
Index: public/vendors/slick/slick.less
===================================================================
--- public/vendors/slick/slick.less	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/slick/slick.less	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,100 @@
+/* Slider */
+
+.slick-slider {
+    position: relative;
+    display: block;
+    box-sizing: border-box;
+    -webkit-touch-callout: none;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    -ms-touch-action: pan-y;
+    touch-action: pan-y;
+    -webkit-tap-highlight-color: transparent;
+}
+.slick-list {
+    position: relative;
+    overflow: hidden;
+    display: block;
+    margin: 0;
+    padding: 0;
+
+    &:focus {
+        outline: none;
+    }
+
+    &.dragging {
+        cursor: pointer;
+        cursor: hand;
+    }
+}
+.slick-slider .slick-track,
+.slick-slider .slick-list {
+    -webkit-transform: translate3d(0, 0, 0);
+    -moz-transform: translate3d(0, 0, 0);
+    -ms-transform: translate3d(0, 0, 0);
+    -o-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+}
+
+.slick-track {
+    position: relative;
+    left: 0;
+    top: 0;
+    display: block;
+    margin-left: auto;
+    margin-right: auto;
+
+    &:before,
+    &:after {
+        content: "";
+        display: table;
+    }
+
+    &:after {
+        clear: both;
+    }
+
+    .slick-loading & {
+        visibility: hidden;
+    }
+}
+.slick-slide {
+    float: left;
+    height: 100%;
+    min-height: 1px;
+    [dir="rtl"] & {
+        float: right;
+    }
+    img {
+        display: block;
+    }
+    &.slick-loading img {
+        display: none;
+    }
+
+    display: none;
+
+    &.dragging img {
+        pointer-events: none;
+    }
+
+    .slick-initialized & {
+        display: block;
+    }
+
+    .slick-loading & {
+        visibility: hidden;
+    }
+
+    .slick-vertical & {
+        display: block;
+        height: auto;
+        border: 1px solid transparent;
+    }
+}
+.slick-arrow.slick-hidden {
+    display: none;
+}
Index: public/vendors/slick/slick.min.js
===================================================================
--- public/vendors/slick/slick.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/slick/slick.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+!function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',nextArrow:'<button class="slick-next" aria-label="Next" type="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('<button type="button" />').text(t+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},n.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},i.extend(n,n.initials),n.activeBreakpoint=null,n.animType=null,n.animProp=null,n.breakpoints=[],n.breakpointSettings=[],n.cssTransitions=!1,n.focussed=!1,n.interrupted=!1,n.hidden="hidden",n.paused=!0,n.positionProp=null,n.respondTo=null,n.rowCount=1,n.shouldClick=!0,n.$slider=i(t),n.$slidesCache=null,n.transformType=null,n.transitionType=null,n.visibilityChange="visibilitychange",n.windowWidth=0,n.windowTimer=null,s=i(t).data("slick")||{},n.options=i.extend({},n.defaults,o,s),n.currentSlide=n.options.initialSlide,n.originalSettings=n.options,void 0!==document.mozHidden?(n.hidden="mozHidden",n.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(n.hidden="webkitHidden",n.visibilityChange="webkitvisibilitychange"),n.autoPlay=i.proxy(n.autoPlay,n),n.autoPlayClear=i.proxy(n.autoPlayClear,n),n.autoPlayIterator=i.proxy(n.autoPlayIterator,n),n.changeSlide=i.proxy(n.changeSlide,n),n.clickHandler=i.proxy(n.clickHandler,n),n.selectHandler=i.proxy(n.selectHandler,n),n.setPosition=i.proxy(n.setPosition,n),n.swipeHandler=i.proxy(n.swipeHandler,n),n.dragHandler=i.proxy(n.dragHandler,n),n.keyHandler=i.proxy(n.keyHandler,n),n.instanceUid=e++,n.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,n.registerBreakpoints(),n.init(!0)}}()).prototype.activateADA=function(){this.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},e.prototype.addSlide=e.prototype.slickAdd=function(e,t,o){var s=this;if("boolean"==typeof t)o=t,t=null;else if(t<0||t>=s.slideCount)return!1;s.unload(),"number"==typeof t?0===t&&0===s.$slides.length?i(e).appendTo(s.$slideTrack):o?i(e).insertBefore(s.$slides.eq(t)):i(e).insertAfter(s.$slides.eq(t)):!0===o?i(e).prependTo(s.$slideTrack):i(e).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(e,t){i(t).attr("data-slick-index",e)}),s.$slidesCache=s.$slides,s.reinit()},e.prototype.animateHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.animate({height:e},i.options.speed)}},e.prototype.animateSlide=function(e,t){var o={},s=this;s.animateHeight(),!0===s.options.rtl&&!1===s.options.vertical&&(e=-e),!1===s.transformsEnabled?!1===s.options.vertical?s.$slideTrack.animate({left:e},s.options.speed,s.options.easing,t):s.$slideTrack.animate({top:e},s.options.speed,s.options.easing,t):!1===s.cssTransitions?(!0===s.options.rtl&&(s.currentLeft=-s.currentLeft),i({animStart:s.currentLeft}).animate({animStart:e},{duration:s.options.speed,easing:s.options.easing,step:function(i){i=Math.ceil(i),!1===s.options.vertical?(o[s.animType]="translate("+i+"px, 0px)",s.$slideTrack.css(o)):(o[s.animType]="translate(0px,"+i+"px)",s.$slideTrack.css(o))},complete:function(){t&&t.call()}})):(s.applyTransition(),e=Math.ceil(e),!1===s.options.vertical?o[s.animType]="translate3d("+e+"px, 0px, 0px)":o[s.animType]="translate3d(0px,"+e+"px, 0px)",s.$slideTrack.css(o),t&&setTimeout(function(){s.disableTransition(),t.call()},s.options.speed))},e.prototype.getNavTarget=function(){var e=this,t=e.options.asNavFor;return t&&null!==t&&(t=i(t).not(e.$slider)),t},e.prototype.asNavFor=function(e){var t=this.getNavTarget();null!==t&&"object"==typeof t&&t.each(function(){var t=i(this).slick("getSlick");t.unslicked||t.slideHandler(e,!0)})},e.prototype.applyTransition=function(i){var e=this,t={};!1===e.options.fade?t[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:t[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},e.prototype.autoPlayClear=function(){var i=this;i.autoPlayTimer&&clearInterval(i.autoPlayTimer)},e.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(!1===i.options.infinite&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1==0&&(i.direction=1))),i.slideHandler(e))},e.prototype.buildArrows=function(){var e=this;!0===e.options.arrows&&(e.$prevArrow=i(e.options.prevArrow).addClass("slick-arrow"),e.$nextArrow=i(e.options.nextArrow).addClass("slick-arrow"),e.slideCount>e.options.slidesToShow?(e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.prependTo(e.options.appendArrows),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.appendTo(e.options.appendArrows),!0!==e.options.infinite&&e.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},e.prototype.buildDots=function(){var e,t,o=this;if(!0===o.options.dots){for(o.$slider.addClass("slick-dotted"),t=i("<ul />").addClass(o.options.dotsClass),e=0;e<=o.getDotCount();e+=1)t.append(i("<li />").append(o.options.customPaging.call(this,o,e)));o.$dots=t.appendTo(o.options.appendDots),o.$dots.find("li").first().addClass("slick-active")}},e.prototype.buildOut=function(){var e=this;e.$slides=e.$slider.children(e.options.slide+":not(.slick-cloned)").addClass("slick-slide"),e.slideCount=e.$slides.length,e.$slides.each(function(e,t){i(t).attr("data-slick-index",e).data("originalStyling",i(t).attr("style")||"")}),e.$slider.addClass("slick-slider"),e.$slideTrack=0===e.slideCount?i('<div class="slick-track"/>').appendTo(e.$slider):e.$slides.wrapAll('<div class="slick-track"/>').parent(),e.$list=e.$slideTrack.wrap('<div class="slick-list"/>').parent(),e.$slideTrack.css("opacity",0),!0!==e.options.centerMode&&!0!==e.options.swipeToSlide||(e.options.slidesToScroll=1),i("img[data-lazy]",e.$slider).not("[src]").addClass("slick-loading"),e.setupInfinite(),e.buildArrows(),e.buildDots(),e.updateDots(),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),!0===e.options.draggable&&e.$list.addClass("draggable")},e.prototype.buildRows=function(){var i,e,t,o,s,n,r,l=this;if(o=document.createDocumentFragment(),n=l.$slider.children(),l.options.rows>1){for(r=l.options.slidesPerRow*l.options.rows,s=Math.ceil(n.length/r),i=0;i<s;i++){var d=document.createElement("div");for(e=0;e<l.options.rows;e++){var a=document.createElement("div");for(t=0;t<l.options.slidesPerRow;t++){var c=i*r+(e*l.options.slidesPerRow+t);n.get(c)&&a.appendChild(n.get(c))}d.appendChild(a)}o.appendChild(d)}l.$slider.empty().append(o),l.$slider.children().children().children().css({width:100/l.options.slidesPerRow+"%",display:"inline-block"})}},e.prototype.checkResponsive=function(e,t){var o,s,n,r=this,l=!1,d=r.$slider.width(),a=window.innerWidth||i(window).width();if("window"===r.respondTo?n=a:"slider"===r.respondTo?n=d:"min"===r.respondTo&&(n=Math.min(a,d)),r.options.responsive&&r.options.responsive.length&&null!==r.options.responsive){s=null;for(o in r.breakpoints)r.breakpoints.hasOwnProperty(o)&&(!1===r.originalSettings.mobileFirst?n<r.breakpoints[o]&&(s=r.breakpoints[o]):n>r.breakpoints[o]&&(s=r.breakpoints[o]));null!==s?null!==r.activeBreakpoint?(s!==r.activeBreakpoint||t)&&(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):null!==r.activeBreakpoint&&(r.activeBreakpoint=null,r.options=r.originalSettings,!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e),l=s),e||!1===l||r.$slider.trigger("breakpoint",[r,l])}},e.prototype.changeSlide=function(e,t){var o,s,n,r=this,l=i(e.currentTarget);switch(l.is("a")&&e.preventDefault(),l.is("li")||(l=l.closest("li")),n=r.slideCount%r.options.slidesToScroll!=0,o=n?0:(r.slideCount-r.currentSlide)%r.options.slidesToScroll,e.data.message){case"previous":s=0===o?r.options.slidesToScroll:r.options.slidesToShow-o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide-s,!1,t);break;case"next":s=0===o?r.options.slidesToScroll:o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide+s,!1,t);break;case"index":var d=0===e.data.index?0:e.data.index||l.index()*r.options.slidesToScroll;r.slideHandler(r.checkNavigable(d),!1,t),l.children().trigger("focus");break;default:return}},e.prototype.checkNavigable=function(i){var e,t;if(e=this.getNavigableIndexes(),t=0,i>e[e.length-1])i=e[e.length-1];else for(var o in e){if(i<e[o]){i=t;break}t=e[o]}return i},e.prototype.cleanUpEvents=function(){var e=this;e.options.dots&&null!==e.$dots&&(i("li",e.$dots).off("click.slick",e.changeSlide).off("mouseenter.slick",i.proxy(e.interrupt,e,!0)).off("mouseleave.slick",i.proxy(e.interrupt,e,!1)),!0===e.options.accessibility&&e.$dots.off("keydown.slick",e.keyHandler)),e.$slider.off("focus.slick blur.slick"),!0===e.options.arrows&&e.slideCount>e.options.slidesToShow&&(e.$prevArrow&&e.$prevArrow.off("click.slick",e.changeSlide),e.$nextArrow&&e.$nextArrow.off("click.slick",e.changeSlide),!0===e.options.accessibility&&(e.$prevArrow&&e.$prevArrow.off("keydown.slick",e.keyHandler),e.$nextArrow&&e.$nextArrow.off("keydown.slick",e.keyHandler))),e.$list.off("touchstart.slick mousedown.slick",e.swipeHandler),e.$list.off("touchmove.slick mousemove.slick",e.swipeHandler),e.$list.off("touchend.slick mouseup.slick",e.swipeHandler),e.$list.off("touchcancel.slick mouseleave.slick",e.swipeHandler),e.$list.off("click.slick",e.clickHandler),i(document).off(e.visibilityChange,e.visibility),e.cleanUpSlideEvents(),!0===e.options.accessibility&&e.$list.off("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().off("click.slick",e.selectHandler),i(window).off("orientationchange.slick.slick-"+e.instanceUid,e.orientationChange),i(window).off("resize.slick.slick-"+e.instanceUid,e.resize),i("[draggable!=true]",e.$slideTrack).off("dragstart",e.preventDefault),i(window).off("load.slick.slick-"+e.instanceUid,e.setPosition)},e.prototype.cleanUpSlideEvents=function(){var e=this;e.$list.off("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.off("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.cleanUpRows=function(){var i,e=this;e.options.rows>1&&((i=e.$slides.children().children()).removeAttr("style"),e.$slider.empty().append(i))},e.prototype.clickHandler=function(i){!1===this.shouldClick&&(i.stopImmediatePropagation(),i.stopPropagation(),i.preventDefault())},e.prototype.destroy=function(e){var t=this;t.autoPlayClear(),t.touchObject={},t.cleanUpEvents(),i(".slick-cloned",t.$slider).detach(),t.$dots&&t.$dots.remove(),t.$prevArrow&&t.$prevArrow.length&&(t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.remove()),t.$nextArrow&&t.$nextArrow.length&&(t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.remove()),t.$slides&&(t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){i(this).attr("style",i(this).data("originalStyling"))}),t.$slideTrack.children(this.options.slide).detach(),t.$slideTrack.detach(),t.$list.detach(),t.$slider.append(t.$slides)),t.cleanUpRows(),t.$slider.removeClass("slick-slider"),t.$slider.removeClass("slick-initialized"),t.$slider.removeClass("slick-dotted"),t.unslicked=!0,e||t.$slider.trigger("destroy",[t])},e.prototype.disableTransition=function(i){var e=this,t={};t[e.transitionType]="",!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.fadeSlide=function(i,e){var t=this;!1===t.cssTransitions?(t.$slides.eq(i).css({zIndex:t.options.zIndex}),t.$slides.eq(i).animate({opacity:1},t.options.speed,t.options.easing,e)):(t.applyTransition(i),t.$slides.eq(i).css({opacity:1,zIndex:t.options.zIndex}),e&&setTimeout(function(){t.disableTransition(i),e.call()},t.options.speed))},e.prototype.fadeSlideOut=function(i){var e=this;!1===e.cssTransitions?e.$slides.eq(i).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(i),e.$slides.eq(i).css({opacity:0,zIndex:e.options.zIndex-2}))},e.prototype.filterSlides=e.prototype.slickFilter=function(i){var e=this;null!==i&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(i).appendTo(e.$slideTrack),e.reinit())},e.prototype.focusHandler=function(){var e=this;e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*",function(t){t.stopImmediatePropagation();var o=i(this);setTimeout(function(){e.options.pauseOnFocus&&(e.focussed=o.is(":focus"),e.autoPlay())},0)})},e.prototype.getCurrent=e.prototype.slickCurrentSlide=function(){return this.currentSlide},e.prototype.getDotCount=function(){var i=this,e=0,t=0,o=0;if(!0===i.options.infinite)if(i.slideCount<=i.options.slidesToShow)++o;else for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else if(!0===i.options.centerMode)o=i.slideCount;else if(i.options.asNavFor)for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else o=1+Math.ceil((i.slideCount-i.options.slidesToShow)/i.options.slidesToScroll);return o-1},e.prototype.getLeft=function(i){var e,t,o,s,n=this,r=0;return n.slideOffset=0,t=n.$slides.first().outerHeight(!0),!0===n.options.infinite?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,s=-1,!0===n.options.vertical&&!0===n.options.centerMode&&(2===n.options.slidesToShow?s=-1.5:1===n.options.slidesToShow&&(s=-2)),r=t*n.options.slidesToShow*s),n.slideCount%n.options.slidesToScroll!=0&&i+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(i>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(i-n.slideCount))*n.slideWidth*-1,r=(n.options.slidesToShow-(i-n.slideCount))*t*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,r=n.slideCount%n.options.slidesToScroll*t*-1))):i+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(i+n.options.slidesToShow-n.slideCount)*n.slideWidth,r=(i+n.options.slidesToShow-n.slideCount)*t),n.slideCount<=n.options.slidesToShow&&(n.slideOffset=0,r=0),!0===n.options.centerMode&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:!0===n.options.centerMode&&!0===n.options.infinite?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:!0===n.options.centerMode&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=!1===n.options.vertical?i*n.slideWidth*-1+n.slideOffset:i*t*-1+r,!0===n.options.variableWidth&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,!0===n.options.centerMode&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow+1),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,e+=(n.$list.width()-o.outerWidth())/2)),e},e.prototype.getOption=e.prototype.slickGetOption=function(i){return this.options[i]},e.prototype.getNavigableIndexes=function(){var i,e=this,t=0,o=0,s=[];for(!1===e.options.infinite?i=e.slideCount:(t=-1*e.options.slidesToScroll,o=-1*e.options.slidesToScroll,i=2*e.slideCount);t<i;)s.push(t),t=o+e.options.slidesToScroll,o+=e.options.slidesToScroll<=e.options.slidesToShow?e.options.slidesToScroll:e.options.slidesToShow;return s},e.prototype.getSlick=function(){return this},e.prototype.getSlideCount=function(){var e,t,o=this;return t=!0===o.options.centerMode?o.slideWidth*Math.floor(o.options.slidesToShow/2):0,!0===o.options.swipeToSlide?(o.$slideTrack.find(".slick-slide").each(function(s,n){if(n.offsetLeft-t+i(n).outerWidth()/2>-1*o.swipeLeft)return e=n,!1}),Math.abs(i(e).attr("data-slick-index")-o.currentSlide)||1):o.options.slidesToScroll},e.prototype.goTo=e.prototype.slickGoTo=function(i,e){this.changeSlide({data:{message:"index",index:parseInt(i)}},e)},e.prototype.init=function(e){var t=this;i(t.$slider).hasClass("slick-initialized")||(i(t.$slider).addClass("slick-initialized"),t.buildRows(),t.buildOut(),t.setProps(),t.startLoad(),t.loadSlider(),t.initializeEvents(),t.updateArrows(),t.updateDots(),t.checkResponsive(!0),t.focusHandler()),e&&t.$slider.trigger("init",[t]),!0===t.options.accessibility&&t.initADA(),t.options.autoplay&&(t.paused=!1,t.autoPlay())},e.prototype.initADA=function(){var e=this,t=Math.ceil(e.slideCount/e.options.slidesToShow),o=e.getNavigableIndexes().filter(function(i){return i>=0&&i<e.slideCount});e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),null!==e.$dots&&(e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function(t){var s=o.indexOf(t);i(this).attr({role:"tabpanel",id:"slick-slide"+e.instanceUid+t,tabindex:-1}),-1!==s&&i(this).attr({"aria-describedby":"slick-slide-control"+e.instanceUid+s})}),e.$dots.attr("role","tablist").find("li").each(function(s){var n=o[s];i(this).attr({role:"presentation"}),i(this).find("button").first().attr({role:"tab",id:"slick-slide-control"+e.instanceUid+s,"aria-controls":"slick-slide"+e.instanceUid+n,"aria-label":s+1+" of "+t,"aria-selected":null,tabindex:"-1"})}).eq(e.currentSlide).find("button").attr({"aria-selected":"true",tabindex:"0"}).end());for(var s=e.currentSlide,n=s+e.options.slidesToShow;s<n;s++)e.$slides.eq(s).attr("tabindex",0);e.activateADA()},e.prototype.initArrowEvents=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},i.changeSlide),i.$nextArrow.off("click.slick").on("click.slick",{message:"next"},i.changeSlide),!0===i.options.accessibility&&(i.$prevArrow.on("keydown.slick",i.keyHandler),i.$nextArrow.on("keydown.slick",i.keyHandler)))},e.prototype.initDotEvents=function(){var e=this;!0===e.options.dots&&(i("li",e.$dots).on("click.slick",{message:"index"},e.changeSlide),!0===e.options.accessibility&&e.$dots.on("keydown.slick",e.keyHandler)),!0===e.options.dots&&!0===e.options.pauseOnDotsHover&&i("li",e.$dots).on("mouseenter.slick",i.proxy(e.interrupt,e,!0)).on("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.initSlideEvents=function(){var e=this;e.options.pauseOnHover&&(e.$list.on("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.on("mouseleave.slick",i.proxy(e.interrupt,e,!1)))},e.prototype.initializeEvents=function(){var e=this;e.initArrowEvents(),e.initDotEvents(),e.initSlideEvents(),e.$list.on("touchstart.slick mousedown.slick",{action:"start"},e.swipeHandler),e.$list.on("touchmove.slick mousemove.slick",{action:"move"},e.swipeHandler),e.$list.on("touchend.slick mouseup.slick",{action:"end"},e.swipeHandler),e.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},e.swipeHandler),e.$list.on("click.slick",e.clickHandler),i(document).on(e.visibilityChange,i.proxy(e.visibility,e)),!0===e.options.accessibility&&e.$list.on("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),i(window).on("orientationchange.slick.slick-"+e.instanceUid,i.proxy(e.orientationChange,e)),i(window).on("resize.slick.slick-"+e.instanceUid,i.proxy(e.resize,e)),i("[draggable!=true]",e.$slideTrack).on("dragstart",e.preventDefault),i(window).on("load.slick.slick-"+e.instanceUid,e.setPosition),i(e.setPosition)},e.prototype.initUI=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.show(),i.$nextArrow.show()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.show()},e.prototype.keyHandler=function(i){var e=this;i.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===i.keyCode&&!0===e.options.accessibility?e.changeSlide({data:{message:!0===e.options.rtl?"next":"previous"}}):39===i.keyCode&&!0===e.options.accessibility&&e.changeSlide({data:{message:!0===e.options.rtl?"previous":"next"}}))},e.prototype.lazyLoad=function(){function e(e){i("img[data-lazy]",e).each(function(){var e=i(this),t=i(this).attr("data-lazy"),o=i(this).attr("data-srcset"),s=i(this).attr("data-sizes")||n.$slider.attr("data-sizes"),r=document.createElement("img");r.onload=function(){e.animate({opacity:0},100,function(){o&&(e.attr("srcset",o),s&&e.attr("sizes",s)),e.attr("src",t).animate({opacity:1},200,function(){e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")}),n.$slider.trigger("lazyLoaded",[n,e,t])})},r.onerror=function(){e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),n.$slider.trigger("lazyLoadError",[n,e,t])},r.src=t})}var t,o,s,n=this;if(!0===n.options.centerMode?!0===n.options.infinite?s=(o=n.currentSlide+(n.options.slidesToShow/2+1))+n.options.slidesToShow+2:(o=Math.max(0,n.currentSlide-(n.options.slidesToShow/2+1)),s=n.options.slidesToShow/2+1+2+n.currentSlide):(o=n.options.infinite?n.options.slidesToShow+n.currentSlide:n.currentSlide,s=Math.ceil(o+n.options.slidesToShow),!0===n.options.fade&&(o>0&&o--,s<=n.slideCount&&s++)),t=n.$slider.find(".slick-slide").slice(o,s),"anticipated"===n.options.lazyLoad)for(var r=o-1,l=s,d=n.$slider.find(".slick-slide"),a=0;a<n.options.slidesToScroll;a++)r<0&&(r=n.slideCount-1),t=(t=t.add(d.eq(r))).add(d.eq(l)),r--,l++;e(t),n.slideCount<=n.options.slidesToShow?e(n.$slider.find(".slick-slide")):n.currentSlide>=n.slideCount-n.options.slidesToShow?e(n.$slider.find(".slick-cloned").slice(0,n.options.slidesToShow)):0===n.currentSlide&&e(n.$slider.find(".slick-cloned").slice(-1*n.options.slidesToShow))},e.prototype.loadSlider=function(){var i=this;i.setPosition(),i.$slideTrack.css({opacity:1}),i.$slider.removeClass("slick-loading"),i.initUI(),"progressive"===i.options.lazyLoad&&i.progressiveLazyLoad()},e.prototype.next=e.prototype.slickNext=function(){this.changeSlide({data:{message:"next"}})},e.prototype.orientationChange=function(){var i=this;i.checkResponsive(),i.setPosition()},e.prototype.pause=e.prototype.slickPause=function(){var i=this;i.autoPlayClear(),i.paused=!0},e.prototype.play=e.prototype.slickPlay=function(){var i=this;i.autoPlay(),i.options.autoplay=!0,i.paused=!1,i.focussed=!1,i.interrupted=!1},e.prototype.postSlide=function(e){var t=this;t.unslicked||(t.$slider.trigger("afterChange",[t,e]),t.animating=!1,t.slideCount>t.options.slidesToShow&&t.setPosition(),t.swipeLeft=null,t.options.autoplay&&t.autoPlay(),!0===t.options.accessibility&&(t.initADA(),t.options.focusOnChange&&i(t.$slides.get(t.currentSlide)).attr("tabindex",0).focus()))},e.prototype.prev=e.prototype.slickPrev=function(){this.changeSlide({data:{message:"previous"}})},e.prototype.preventDefault=function(i){i.preventDefault()},e.prototype.progressiveLazyLoad=function(e){e=e||1;var t,o,s,n,r,l=this,d=i("img[data-lazy]",l.$slider);d.length?(t=d.first(),o=t.attr("data-lazy"),s=t.attr("data-srcset"),n=t.attr("data-sizes")||l.$slider.attr("data-sizes"),(r=document.createElement("img")).onload=function(){s&&(t.attr("srcset",s),n&&t.attr("sizes",n)),t.attr("src",o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"),!0===l.options.adaptiveHeight&&l.setPosition(),l.$slider.trigger("lazyLoaded",[l,t,o]),l.progressiveLazyLoad()},r.onerror=function(){e<3?setTimeout(function(){l.progressiveLazyLoad(e+1)},500):(t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),l.$slider.trigger("lazyLoadError",[l,t,o]),l.progressiveLazyLoad())},r.src=o):l.$slider.trigger("allImagesLoaded",[l])},e.prototype.refresh=function(e){var t,o,s=this;o=s.slideCount-s.options.slidesToShow,!s.options.infinite&&s.currentSlide>o&&(s.currentSlide=o),s.slideCount<=s.options.slidesToShow&&(s.currentSlide=0),t=s.currentSlide,s.destroy(!0),i.extend(s,s.initials,{currentSlide:t}),s.init(),e||s.changeSlide({data:{message:"index",index:t}},!1)},e.prototype.registerBreakpoints=function(){var e,t,o,s=this,n=s.options.responsive||null;if("array"===i.type(n)&&n.length){s.respondTo=s.options.respondTo||"window";for(e in n)if(o=s.breakpoints.length-1,n.hasOwnProperty(e)){for(t=n[e].breakpoint;o>=0;)s.breakpoints[o]&&s.breakpoints[o]===t&&s.breakpoints.splice(o,1),o--;s.breakpoints.push(t),s.breakpointSettings[t]=n[e].settings}s.breakpoints.sort(function(i,e){return s.options.mobileFirst?i-e:e-i})}},e.prototype.reinit=function(){var e=this;e.$slides=e.$slideTrack.children(e.options.slide).addClass("slick-slide"),e.slideCount=e.$slides.length,e.currentSlide>=e.slideCount&&0!==e.currentSlide&&(e.currentSlide=e.currentSlide-e.options.slidesToScroll),e.slideCount<=e.options.slidesToShow&&(e.currentSlide=0),e.registerBreakpoints(),e.setProps(),e.setupInfinite(),e.buildArrows(),e.updateArrows(),e.initArrowEvents(),e.buildDots(),e.updateDots(),e.initDotEvents(),e.cleanUpSlideEvents(),e.initSlideEvents(),e.checkResponsive(!1,!0),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),e.setPosition(),e.focusHandler(),e.paused=!e.options.autoplay,e.autoPlay(),e.$slider.trigger("reInit",[e])},e.prototype.resize=function(){var e=this;i(window).width()!==e.windowWidth&&(clearTimeout(e.windowDelay),e.windowDelay=window.setTimeout(function(){e.windowWidth=i(window).width(),e.checkResponsive(),e.unslicked||e.setPosition()},50))},e.prototype.removeSlide=e.prototype.slickRemove=function(i,e,t){var o=this;if(i="boolean"==typeof i?!0===(e=i)?0:o.slideCount-1:!0===e?--i:i,o.slideCount<1||i<0||i>o.slideCount-1)return!1;o.unload(),!0===t?o.$slideTrack.children().remove():o.$slideTrack.children(this.options.slide).eq(i).remove(),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slidesCache=o.$slides,o.reinit()},e.prototype.setCSS=function(i){var e,t,o=this,s={};!0===o.options.rtl&&(i=-i),e="left"==o.positionProp?Math.ceil(i)+"px":"0px",t="top"==o.positionProp?Math.ceil(i)+"px":"0px",s[o.positionProp]=i,!1===o.transformsEnabled?o.$slideTrack.css(s):(s={},!1===o.cssTransitions?(s[o.animType]="translate("+e+", "+t+")",o.$slideTrack.css(s)):(s[o.animType]="translate3d("+e+", "+t+", 0px)",o.$slideTrack.css(s)))},e.prototype.setDimensions=function(){var i=this;!1===i.options.vertical?!0===i.options.centerMode&&i.$list.css({padding:"0px "+i.options.centerPadding}):(i.$list.height(i.$slides.first().outerHeight(!0)*i.options.slidesToShow),!0===i.options.centerMode&&i.$list.css({padding:i.options.centerPadding+" 0px"})),i.listWidth=i.$list.width(),i.listHeight=i.$list.height(),!1===i.options.vertical&&!1===i.options.variableWidth?(i.slideWidth=Math.ceil(i.listWidth/i.options.slidesToShow),i.$slideTrack.width(Math.ceil(i.slideWidth*i.$slideTrack.children(".slick-slide").length))):!0===i.options.variableWidth?i.$slideTrack.width(5e3*i.slideCount):(i.slideWidth=Math.ceil(i.listWidth),i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0)*i.$slideTrack.children(".slick-slide").length)));var e=i.$slides.first().outerWidth(!0)-i.$slides.first().width();!1===i.options.variableWidth&&i.$slideTrack.children(".slick-slide").width(i.slideWidth-e)},e.prototype.setFade=function(){var e,t=this;t.$slides.each(function(o,s){e=t.slideWidth*o*-1,!0===t.options.rtl?i(s).css({position:"relative",right:e,top:0,zIndex:t.options.zIndex-2,opacity:0}):i(s).css({position:"relative",left:e,top:0,zIndex:t.options.zIndex-2,opacity:0})}),t.$slides.eq(t.currentSlide).css({zIndex:t.options.zIndex-1,opacity:1})},e.prototype.setHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.css("height",e)}},e.prototype.setOption=e.prototype.slickSetOption=function(){var e,t,o,s,n,r=this,l=!1;if("object"===i.type(arguments[0])?(o=arguments[0],l=arguments[1],n="multiple"):"string"===i.type(arguments[0])&&(o=arguments[0],s=arguments[1],l=arguments[2],"responsive"===arguments[0]&&"array"===i.type(arguments[1])?n="responsive":void 0!==arguments[1]&&(n="single")),"single"===n)r.options[o]=s;else if("multiple"===n)i.each(o,function(i,e){r.options[i]=e});else if("responsive"===n)for(t in s)if("array"!==i.type(r.options.responsive))r.options.responsive=[s[t]];else{for(e=r.options.responsive.length-1;e>=0;)r.options.responsive[e].breakpoint===s[t].breakpoint&&r.options.responsive.splice(e,1),e--;r.options.responsive.push(s[t])}l&&(r.unload(),r.reinit())},e.prototype.setPosition=function(){var i=this;i.setDimensions(),i.setHeight(),!1===i.options.fade?i.setCSS(i.getLeft(i.currentSlide)):i.setFade(),i.$slider.trigger("setPosition",[i])},e.prototype.setProps=function(){var i=this,e=document.body.style;i.positionProp=!0===i.options.vertical?"top":"left","top"===i.positionProp?i.$slider.addClass("slick-vertical"):i.$slider.removeClass("slick-vertical"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||!0===i.options.useCSS&&(i.cssTransitions=!0),i.options.fade&&("number"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType="OTransform",i.transformType="-o-transform",i.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType="MozTransform",i.transformType="-moz-transform",i.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType="webkitTransform",i.transformType="-webkit-transform",i.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType="msTransform",i.transformType="-ms-transform",i.transitionType="msTransition",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&!1!==i.animType&&(i.animType="transform",i.transformType="transform",i.transitionType="transition"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&!1!==i.animType},e.prototype.setSlideClasses=function(i){var e,t,o,s,n=this;if(t=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),n.$slides.eq(i).addClass("slick-current"),!0===n.options.centerMode){var r=n.options.slidesToShow%2==0?1:0;e=Math.floor(n.options.slidesToShow/2),!0===n.options.infinite&&(i>=e&&i<=n.slideCount-1-e?n.$slides.slice(i-e+r,i+e+1).addClass("slick-active").attr("aria-hidden","false"):(o=n.options.slidesToShow+i,t.slice(o-e+1+r,o+e+2).addClass("slick-active").attr("aria-hidden","false")),0===i?t.eq(t.length-1-n.options.slidesToShow).addClass("slick-center"):i===n.slideCount-1&&t.eq(n.options.slidesToShow).addClass("slick-center")),n.$slides.eq(i).addClass("slick-center")}else i>=0&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):t.length<=n.options.slidesToShow?t.addClass("slick-active").attr("aria-hidden","false"):(s=n.slideCount%n.options.slidesToShow,o=!0===n.options.infinite?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-i<n.options.slidesToShow?t.slice(o-(n.options.slidesToShow-s),o+s).addClass("slick-active").attr("aria-hidden","false"):t.slice(o,o+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"));"ondemand"!==n.options.lazyLoad&&"anticipated"!==n.options.lazyLoad||n.lazyLoad()},e.prototype.setupInfinite=function(){var e,t,o,s=this;if(!0===s.options.fade&&(s.options.centerMode=!1),!0===s.options.infinite&&!1===s.options.fade&&(t=null,s.slideCount>s.options.slidesToShow)){for(o=!0===s.options.centerMode?s.options.slidesToShow+1:s.options.slidesToShow,e=s.slideCount;e>s.slideCount-o;e-=1)t=e-1,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t-s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");for(e=0;e<o+s.slideCount;e+=1)t=e,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t+s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned");s.$slideTrack.find(".slick-cloned").find("[id]").each(function(){i(this).attr("id","")})}},e.prototype.interrupt=function(i){var e=this;i||e.autoPlay(),e.interrupted=i},e.prototype.selectHandler=function(e){var t=this,o=i(e.target).is(".slick-slide")?i(e.target):i(e.target).parents(".slick-slide"),s=parseInt(o.attr("data-slick-index"));s||(s=0),t.slideCount<=t.options.slidesToShow?t.slideHandler(s,!1,!0):t.slideHandler(s)},e.prototype.slideHandler=function(i,e,t){var o,s,n,r,l,d=null,a=this;if(e=e||!1,!(!0===a.animating&&!0===a.options.waitForAnimate||!0===a.options.fade&&a.currentSlide===i))if(!1===e&&a.asNavFor(i),o=i,d=a.getLeft(o),r=a.getLeft(a.currentSlide),a.currentLeft=null===a.swipeLeft?r:a.swipeLeft,!1===a.options.infinite&&!1===a.options.centerMode&&(i<0||i>a.getDotCount()*a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else if(!1===a.options.infinite&&!0===a.options.centerMode&&(i<0||i>a.slideCount-a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else{if(a.options.autoplay&&clearInterval(a.autoPlayTimer),s=o<0?a.slideCount%a.options.slidesToScroll!=0?a.slideCount-a.slideCount%a.options.slidesToScroll:a.slideCount+o:o>=a.slideCount?a.slideCount%a.options.slidesToScroll!=0?0:o-a.slideCount:o,a.animating=!0,a.$slider.trigger("beforeChange",[a,a.currentSlide,s]),n=a.currentSlide,a.currentSlide=s,a.setSlideClasses(a.currentSlide),a.options.asNavFor&&(l=(l=a.getNavTarget()).slick("getSlick")).slideCount<=l.options.slidesToShow&&l.setSlideClasses(a.currentSlide),a.updateDots(),a.updateArrows(),!0===a.options.fade)return!0!==t?(a.fadeSlideOut(n),a.fadeSlide(s,function(){a.postSlide(s)})):a.postSlide(s),void a.animateHeight();!0!==t?a.animateSlide(d,function(){a.postSlide(s)}):a.postSlide(s)}},e.prototype.startLoad=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass("slick-loading")},e.prototype.swipeDirection=function(){var i,e,t,o,s=this;return i=s.touchObject.startX-s.touchObject.curX,e=s.touchObject.startY-s.touchObject.curY,t=Math.atan2(e,i),(o=Math.round(180*t/Math.PI))<0&&(o=360-Math.abs(o)),o<=45&&o>=0?!1===s.options.rtl?"left":"right":o<=360&&o>=315?!1===s.options.rtl?"left":"right":o>=135&&o<=225?!1===s.options.rtl?"right":"left":!0===s.options.verticalSwiping?o>=35&&o<=135?"down":"up":"vertical"},e.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1,!1;if(o.interrupted=!1,o.shouldClick=!(o.touchObject.swipeLength>10),void 0===o.touchObject.curX)return!1;if(!0===o.touchObject.edgeHit&&o.$slider.trigger("edge",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case"left":case"down":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case"right":case"up":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}"vertical"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger("swipe",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},e.prototype.swipeHandler=function(i){var e=this;if(!(!1===e.options.swipe||"ontouchend"in document&&!1===e.options.swipe||!1===e.options.draggable&&-1!==i.type.indexOf("mouse")))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,!0===e.options.verticalSwiping&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case"start":e.swipeStart(i);break;case"move":e.swipeMove(i);break;case"end":e.swipeEnd(i)}},e.prototype.swipeMove=function(i){var e,t,o,s,n,r,l=this;return n=void 0!==i.originalEvent?i.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:i.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&r>4?(l.scrolling=!0,!1):(!0===l.options.verticalSwiping&&(l.touchObject.swipeLength=r),t=l.swipeDirection(),void 0!==i.originalEvent&&l.touchObject.swipeLength>4&&(l.swiping=!0,i.preventDefault()),s=(!1===l.options.rtl?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),!0===l.options.verticalSwiping&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,l.touchObject.edgeHit=!1,!1===l.options.infinite&&(0===l.currentSlide&&"right"===t||l.currentSlide>=l.getDotCount()&&"left"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),!1===l.options.vertical?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,!0===l.options.verticalSwiping&&(l.swipeLeft=e+o*s),!0!==l.options.fade&&!1!==l.options.touchMove&&(!0===l.animating?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},e.prototype.swipeStart=function(i){var e,t=this;if(t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow)return t.touchObject={},!1;void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,t.dragging=!0},e.prototype.unfilterSlides=e.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},e.prototype.unload=function(){var e=this;i(".slick-cloned",e.$slider).remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove(),e.$nextArrow&&e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove(),e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},e.prototype.unslick=function(i){var e=this;e.$slider.trigger("unslick",[e,i]),e.destroy()},e.prototype.updateArrows=function(){var i=this;Math.floor(i.options.slidesToShow/2),!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&!i.options.infinite&&(i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===i.currentSlide?(i.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-i.options.slidesToShow&&!1===i.options.centerMode?(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-1&&!0===i.options.centerMode&&(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},e.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find("li").removeClass("slick-active").end(),i.$dots.find("li").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass("slick-active"))},e.prototype.visibility=function(){var i=this;i.options.autoplay&&(document[i.hidden]?i.interrupted=!0:i.interrupted=!1)},i.fn.slick=function(){var i,t,o=this,s=arguments[0],n=Array.prototype.slice.call(arguments,1),r=o.length;for(i=0;i<r;i++)if("object"==typeof s||void 0===s?o[i].slick=new e(o[i],s):t=o[i].slick[s].apply(o[i].slick,n),void 0!==t)return t;return o}});
Index: public/vendors/slick/slick.scss
===================================================================
--- public/vendors/slick/slick.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/slick/slick.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,100 @@
+/* Slider */
+
+.slick-slider {
+    position: relative;
+    display: block;
+    box-sizing: border-box;
+    -webkit-touch-callout: none;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    -ms-touch-action: pan-y;
+    touch-action: pan-y;
+    -webkit-tap-highlight-color: transparent;
+}
+.slick-list {
+    position: relative;
+    overflow: hidden;
+    display: block;
+    margin: 0;
+    padding: 0;
+
+    &:focus {
+        outline: none;
+    }
+
+    &.dragging {
+        cursor: pointer;
+        cursor: hand;
+    }
+}
+.slick-slider .slick-track,
+.slick-slider .slick-list {
+    -webkit-transform: translate3d(0, 0, 0);
+    -moz-transform: translate3d(0, 0, 0);
+    -ms-transform: translate3d(0, 0, 0);
+    -o-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+}
+
+.slick-track {
+    position: relative;
+    left: 0;
+    top: 0;
+    display: block;
+    margin-left: auto;
+    margin-right: auto;
+
+    &:before,
+    &:after {
+        content: "";
+        display: table;
+    }
+
+    &:after {
+        clear: both;
+    }
+
+    .slick-loading & {
+        visibility: hidden;
+    }
+}
+.slick-slide {
+    float: left;
+    height: 100%;
+    min-height: 1px;
+    [dir="rtl"] & {
+        float: right;
+    }
+    img {
+        display: block;
+    }
+    &.slick-loading img {
+        display: none;
+    }
+
+    display: none;
+
+    &.dragging img {
+        pointer-events: none;
+    }
+
+    .slick-initialized & {
+        display: block;
+    }
+
+    .slick-loading & {
+        visibility: hidden;
+    }
+
+    .slick-vertical & {
+        display: block;
+        height: auto;
+        border: 1px solid transparent;
+    }
+}
+.slick-arrow.slick-hidden {
+    display: none;
+}
Index: public/vendors/tagsinput/bootstrap-tagsinput.css
===================================================================
--- public/vendors/tagsinput/bootstrap-tagsinput.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/tagsinput/bootstrap-tagsinput.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,55 @@
+/*
+ * bootstrap-tagsinput v0.8.0
+ * 
+ */
+
+.bootstrap-tagsinput {
+  background-color: #fff;
+  border: 1px solid #ccc;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  display: inline-block;
+  padding: 4px 6px;
+  color: #555;
+  vertical-align: middle;
+  border-radius: 4px;
+  max-width: 100%;
+  line-height: 22px;
+  cursor: text;
+}
+.bootstrap-tagsinput input {
+  border: none;
+  box-shadow: none;
+  outline: none;
+  background-color: transparent;
+  padding: 0 6px;
+  margin: 0;
+  width: auto;
+  max-width: inherit;
+}
+.bootstrap-tagsinput.form-control input::-moz-placeholder {
+  color: #777;
+  opacity: 1;
+}
+.bootstrap-tagsinput.form-control input:-ms-input-placeholder {
+  color: #777;
+}
+.bootstrap-tagsinput.form-control input::-webkit-input-placeholder {
+  color: #777;
+}
+.bootstrap-tagsinput input:focus {
+  border: none;
+  box-shadow: none;
+}
+.bootstrap-tagsinput .tag {
+  margin-right: 2px;
+  color: white;
+}
+.bootstrap-tagsinput .tag [data-role="remove"] {
+  margin-left: 8px;
+  cursor: pointer;
+}
+.bootstrap-tagsinput .tag [data-role="remove"]:after {
+  content: "×";
+  padding: 0px 2px;
+  font-size: 17px;
+}
Index: public/vendors/tagsinput/bootstrap-tagsinput.js
===================================================================
--- public/vendors/tagsinput/bootstrap-tagsinput.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/tagsinput/bootstrap-tagsinput.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,677 @@
+/*
+ * bootstrap-tagsinput v0.8.0
+ * 
+ */
+
+(function ($) {
+  "use strict";
+
+  var defaultOptions = {
+    tagClass: function(item) {
+      return 'label label-info';
+    },
+    focusClass: 'focus',
+    itemValue: function(item) {
+      return item ? item.toString() : item;
+    },
+    itemText: function(item) {
+      return this.itemValue(item);
+    },
+    itemTitle: function(item) {
+      return null;
+    },
+    freeInput: true,
+    addOnBlur: true,
+    maxTags: undefined,
+    maxChars: undefined,
+    confirmKeys: [13, 44],
+    delimiter: ',',
+    delimiterRegex: null,
+    cancelConfirmKeysOnEmpty: false,
+    onTagExists: function(item, $tag) {
+      $tag.hide().fadeIn();
+    },
+    trimValue: false,
+    allowDuplicates: false,
+    triggerChange: true
+  };
+
+  /**
+   * Constructor function
+   */
+  function TagsInput(element, options) {
+    this.isInit = true;
+    this.itemsArray = [];
+
+    this.$element = $(element);
+    this.$element.hide();
+
+    this.isSelect = (element.tagName === 'SELECT');
+    this.multiple = (this.isSelect && element.hasAttribute('multiple'));
+    this.objectItems = options && options.itemValue;
+    this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';
+    this.inputSize = Math.max(1, this.placeholderText.length);
+
+    this.$container = $('<div class="bootstrap-tagsinput"></div>');
+    this.$input = $('<input type="text" placeholder="' + this.placeholderText + '"/>').appendTo(this.$container);
+
+    this.$element.before(this.$container);
+
+    this.build(options);
+    this.isInit = false;
+  }
+
+  TagsInput.prototype = {
+    constructor: TagsInput,
+
+    /**
+     * Adds the given item as a new tag. Pass true to dontPushVal to prevent
+     * updating the elements val()
+     */
+    add: function(item, dontPushVal, options) {
+      var self = this;
+
+      if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags)
+        return;
+
+      // Ignore falsey values, except false
+      if (item !== false && !item)
+        return;
+
+      // Trim value
+      if (typeof item === "string" && self.options.trimValue) {
+        item = $.trim(item);
+      }
+
+      // Throw an error when trying to add an object while the itemValue option was not set
+      if (typeof item === "object" && !self.objectItems)
+        throw("Can't add objects when itemValue option is not set");
+
+      // Ignore strings only containg whitespace
+      if (item.toString().match(/^\s*$/))
+        return;
+
+      // If SELECT but not multiple, remove current tag
+      if (self.isSelect && !self.multiple && self.itemsArray.length > 0)
+        self.remove(self.itemsArray[0]);
+
+      if (typeof item === "string" && this.$element[0].tagName === 'INPUT') {
+        var delimiter = (self.options.delimiterRegex) ? self.options.delimiterRegex : self.options.delimiter;
+        var items = item.split(delimiter);
+        if (items.length > 1) {
+          for (var i = 0; i < items.length; i++) {
+            this.add(items[i], true);
+          }
+
+          if (!dontPushVal)
+            self.pushVal(self.options.triggerChange);
+          return;
+        }
+      }
+
+      var itemValue = self.options.itemValue(item),
+          itemText = self.options.itemText(item),
+          tagClass = self.options.tagClass(item),
+          itemTitle = self.options.itemTitle(item);
+
+      // Ignore items allready added
+      var existing = $.grep(self.itemsArray, function(item) { return self.options.itemValue(item) === itemValue; } )[0];
+      if (existing && !self.options.allowDuplicates) {
+        // Invoke onTagExists
+        if (self.options.onTagExists) {
+          var $existingTag = $(".tag", self.$container).filter(function() { return $(this).data("item") === existing; });
+          self.options.onTagExists(item, $existingTag);
+        }
+        return;
+      }
+
+      // if length greater than limit
+      if (self.items().toString().length + item.length + 1 > self.options.maxInputLength)
+        return;
+
+      // raise beforeItemAdd arg
+      var beforeItemAddEvent = $.Event('beforeItemAdd', { item: item, cancel: false, options: options});
+      self.$element.trigger(beforeItemAddEvent);
+      if (beforeItemAddEvent.cancel)
+        return;
+
+      // register item in internal array and map
+      self.itemsArray.push(item);
+
+      // add a tag element
+
+      var $tag = $('<span class="tag ' + htmlEncode(tagClass) + (itemTitle !== null ? ('" title="' + itemTitle) : '') + '">' + htmlEncode(itemText) + '<span data-role="remove"></span></span>');
+      $tag.data('item', item);
+      self.findInputWrapper().before($tag);
+      $tag.after(' ');
+
+      // Check to see if the tag exists in its raw or uri-encoded form
+      var optionExists = (
+        $('option[value="' + encodeURIComponent(itemValue) + '"]', self.$element).length ||
+        $('option[value="' + htmlEncode(itemValue) + '"]', self.$element).length
+      );
+
+      // add <option /> if item represents a value not present in one of the <select />'s options
+      if (self.isSelect && !optionExists) {
+        var $option = $('<option selected>' + htmlEncode(itemText) + '</option>');
+        $option.data('item', item);
+        $option.attr('value', itemValue);
+        self.$element.append($option);
+      }
+
+      if (!dontPushVal)
+        self.pushVal(self.options.triggerChange);
+
+      // Add class when reached maxTags
+      if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength)
+        self.$container.addClass('bootstrap-tagsinput-max');
+
+      // If using typeahead, once the tag has been added, clear the typeahead value so it does not stick around in the input.
+      if ($('.typeahead, .twitter-typeahead', self.$container).length) {
+        self.$input.typeahead('val', '');
+      }
+
+      if (this.isInit) {
+        self.$element.trigger($.Event('itemAddedOnInit', { item: item, options: options }));
+      } else {
+        self.$element.trigger($.Event('itemAdded', { item: item, options: options }));
+      }
+    },
+
+    /**
+     * Removes the given item. Pass true to dontPushVal to prevent updating the
+     * elements val()
+     */
+    remove: function(item, dontPushVal, options) {
+      var self = this;
+
+      if (self.objectItems) {
+        if (typeof item === "object")
+          item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) ==  self.options.itemValue(item); } );
+        else
+          item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) ==  item; } );
+
+        item = item[item.length-1];
+      }
+
+      if (item) {
+        var beforeItemRemoveEvent = $.Event('beforeItemRemove', { item: item, cancel: false, options: options });
+        self.$element.trigger(beforeItemRemoveEvent);
+        if (beforeItemRemoveEvent.cancel)
+          return;
+
+        $('.tag', self.$container).filter(function() { return $(this).data('item') === item; }).remove();
+        $('option', self.$element).filter(function() { return $(this).data('item') === item; }).remove();
+        if($.inArray(item, self.itemsArray) !== -1)
+          self.itemsArray.splice($.inArray(item, self.itemsArray), 1);
+      }
+
+      if (!dontPushVal)
+        self.pushVal(self.options.triggerChange);
+
+      // Remove class when reached maxTags
+      if (self.options.maxTags > self.itemsArray.length)
+        self.$container.removeClass('bootstrap-tagsinput-max');
+
+      self.$element.trigger($.Event('itemRemoved',  { item: item, options: options }));
+    },
+
+    /**
+     * Removes all items
+     */
+    removeAll: function() {
+      var self = this;
+
+      $('.tag', self.$container).remove();
+      $('option', self.$element).remove();
+
+      while(self.itemsArray.length > 0)
+        self.itemsArray.pop();
+
+      self.pushVal(self.options.triggerChange);
+    },
+
+    /**
+     * Refreshes the tags so they match the text/value of their corresponding
+     * item.
+     */
+    refresh: function() {
+      var self = this;
+      $('.tag', self.$container).each(function() {
+        var $tag = $(this),
+            item = $tag.data('item'),
+            itemValue = self.options.itemValue(item),
+            itemText = self.options.itemText(item),
+            tagClass = self.options.tagClass(item);
+
+          // Update tag's class and inner text
+          $tag.attr('class', null);
+          $tag.addClass('tag ' + htmlEncode(tagClass));
+          $tag.contents().filter(function() {
+            return this.nodeType == 3;
+          })[0].nodeValue = htmlEncode(itemText);
+
+          if (self.isSelect) {
+            var option = $('option', self.$element).filter(function() { return $(this).data('item') === item; });
+            option.attr('value', itemValue);
+          }
+      });
+    },
+
+    /**
+     * Returns the items added as tags
+     */
+    items: function() {
+      return this.itemsArray;
+    },
+
+    /**
+     * Assembly value by retrieving the value of each item, and set it on the
+     * element.
+     */
+    pushVal: function() {
+      var self = this,
+          val = $.map(self.items(), function(item) {
+            return self.options.itemValue(item).toString();
+          });
+
+      self.$element.val(val, true);
+
+      if (self.options.triggerChange)
+        self.$element.trigger('change');
+    },
+
+    /**
+     * Initializes the tags input behaviour on the element
+     */
+    build: function(options) {
+      var self = this;
+
+      self.options = $.extend({}, defaultOptions, options);
+      // When itemValue is set, freeInput should always be false
+      if (self.objectItems)
+        self.options.freeInput = false;
+
+      makeOptionItemFunction(self.options, 'itemValue');
+      makeOptionItemFunction(self.options, 'itemText');
+      makeOptionFunction(self.options, 'tagClass');
+
+      // Typeahead Bootstrap version 2.3.2
+      if (self.options.typeahead) {
+        var typeahead = self.options.typeahead || {};
+
+        makeOptionFunction(typeahead, 'source');
+
+        self.$input.typeahead($.extend({}, typeahead, {
+          source: function (query, process) {
+            function processItems(items) {
+              var texts = [];
+
+              for (var i = 0; i < items.length; i++) {
+                var text = self.options.itemText(items[i]);
+                map[text] = items[i];
+                texts.push(text);
+              }
+              process(texts);
+            }
+
+            this.map = {};
+            var map = this.map,
+                data = typeahead.source(query);
+
+            if ($.isFunction(data.success)) {
+              // support for Angular callbacks
+              data.success(processItems);
+            } else if ($.isFunction(data.then)) {
+              // support for Angular promises
+              data.then(processItems);
+            } else {
+              // support for functions and jquery promises
+              $.when(data)
+               .then(processItems);
+            }
+          },
+          updater: function (text) {
+            self.add(this.map[text]);
+            return this.map[text];
+          },
+          matcher: function (text) {
+            return (text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1);
+          },
+          sorter: function (texts) {
+            return texts.sort();
+          },
+          highlighter: function (text) {
+            var regex = new RegExp( '(' + this.query + ')', 'gi' );
+            return text.replace( regex, "<strong>$1</strong>" );
+          }
+        }));
+      }
+
+      // typeahead.js
+      if (self.options.typeaheadjs) {
+
+          // Determine if main configurations were passed or simply a dataset
+          var typeaheadjs = self.options.typeaheadjs;
+          if (!$.isArray(typeaheadjs)) {
+              typeaheadjs = [null, typeaheadjs];
+          }
+          var valueKey = typeaheadjs[1].valueKey; // We should test typeaheadjs.size >= 1
+          var f_datum = valueKey ? function (datum) { return datum[valueKey];  }
+                                 : function (datum) {  return datum;  }
+          $.fn.typeahead.apply(self.$input,typeaheadjs).on('typeahead:selected', $.proxy(function (obj, datum) {
+              self.add( f_datum(datum) );
+              self.$input.typeahead('val', '');
+            }, self));
+
+      }
+
+      self.$container.on('click', $.proxy(function(event) {
+        if (! self.$element.attr('disabled')) {
+          self.$input.removeAttr('disabled');
+        }
+        self.$input.focus();
+      }, self));
+
+        if (self.options.addOnBlur && self.options.freeInput) {
+          self.$input.on('focusout', $.proxy(function(event) {
+              // HACK: only process on focusout when no typeahead opened, to
+              //       avoid adding the typeahead text as tag
+              if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) {
+                self.add(self.$input.val());
+                self.$input.val('');
+              }
+          }, self));
+        }
+
+      // Toggle the 'focus' css class on the container when it has focus
+      self.$container.on({
+        focusin: function() {
+          self.$container.addClass(self.options.focusClass);
+        },
+        focusout: function() {
+          self.$container.removeClass(self.options.focusClass);
+        },
+      });
+
+      self.$container.on('keydown', 'input', $.proxy(function(event) {
+        var $input = $(event.target),
+            $inputWrapper = self.findInputWrapper();
+
+        if (self.$element.attr('disabled')) {
+          self.$input.attr('disabled', 'disabled');
+          return;
+        }
+
+        switch (event.which) {
+          // BACKSPACE
+          case 8:
+            if (doGetCaretPosition($input[0]) === 0) {
+              var prev = $inputWrapper.prev();
+              if (prev.length) {
+                self.remove(prev.data('item'));
+              }
+            }
+            break;
+
+          // DELETE
+          case 46:
+            if (doGetCaretPosition($input[0]) === 0) {
+              var next = $inputWrapper.next();
+              if (next.length) {
+                self.remove(next.data('item'));
+              }
+            }
+            break;
+
+          // LEFT ARROW
+          case 37:
+            // Try to move the input before the previous tag
+            var $prevTag = $inputWrapper.prev();
+            if ($input.val().length === 0 && $prevTag[0]) {
+              $prevTag.before($inputWrapper);
+              $input.focus();
+            }
+            break;
+          // RIGHT ARROW
+          case 39:
+            // Try to move the input after the next tag
+            var $nextTag = $inputWrapper.next();
+            if ($input.val().length === 0 && $nextTag[0]) {
+              $nextTag.after($inputWrapper);
+              $input.focus();
+            }
+            break;
+         default:
+             // ignore
+         }
+
+        // Reset internal input's size
+        var textLength = $input.val().length,
+            wordSpace = Math.ceil(textLength / 5),
+            size = textLength + wordSpace + 1;
+        $input.attr('size', Math.max(this.inputSize, $input.val().length));
+      }, self));
+
+      self.$container.on('keypress', 'input', $.proxy(function(event) {
+         var $input = $(event.target);
+
+         if (self.$element.attr('disabled')) {
+            self.$input.attr('disabled', 'disabled');
+            return;
+         }
+
+         var text = $input.val(),
+         maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;
+         if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {
+            // Only attempt to add a tag if there is data in the field
+            if (text.length !== 0) {
+               self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);
+               $input.val('');
+            }
+
+            // If the field is empty, let the event triggered fire as usual
+            if (self.options.cancelConfirmKeysOnEmpty === false) {
+                event.preventDefault();
+            }
+         }
+
+         // Reset internal input's size
+         var textLength = $input.val().length,
+            wordSpace = Math.ceil(textLength / 5),
+            size = textLength + wordSpace + 1;
+         $input.attr('size', Math.max(this.inputSize, $input.val().length));
+      }, self));
+
+      // Remove icon clicked
+      self.$container.on('click', '[data-role=remove]', $.proxy(function(event) {
+        if (self.$element.attr('disabled')) {
+          return;
+        }
+        self.remove($(event.target).closest('.tag').data('item'));
+      }, self));
+
+      // Only add existing value as tags when using strings as tags
+      if (self.options.itemValue === defaultOptions.itemValue) {
+        if (self.$element[0].tagName === 'INPUT') {
+            self.add(self.$element.val());
+        } else {
+          $('option', self.$element).each(function() {
+            self.add($(this).attr('value'), true);
+          });
+        }
+      }
+    },
+
+    /**
+     * Removes all tagsinput behaviour and unregsiter all event handlers
+     */
+    destroy: function() {
+      var self = this;
+
+      // Unbind events
+      self.$container.off('keypress', 'input');
+      self.$container.off('click', '[role=remove]');
+
+      self.$container.remove();
+      self.$element.removeData('tagsinput');
+      self.$element.show();
+    },
+
+    /**
+     * Sets focus on the tagsinput
+     */
+    focus: function() {
+      this.$input.focus();
+    },
+
+    /**
+     * Returns the internal input element
+     */
+    input: function() {
+      return this.$input;
+    },
+
+    /**
+     * Returns the element which is wrapped around the internal input. This
+     * is normally the $container, but typeahead.js moves the $input element.
+     */
+    findInputWrapper: function() {
+      var elt = this.$input[0],
+          container = this.$container[0];
+      while(elt && elt.parentNode !== container)
+        elt = elt.parentNode;
+
+      return $(elt);
+    }
+  };
+
+  /**
+   * Register JQuery plugin
+   */
+  $.fn.tagsinput = function(arg1, arg2, arg3) {
+    var results = [];
+
+    this.each(function() {
+      var tagsinput = $(this).data('tagsinput');
+      // Initialize a new tags input
+      if (!tagsinput) {
+          tagsinput = new TagsInput(this, arg1);
+          $(this).data('tagsinput', tagsinput);
+          results.push(tagsinput);
+
+          if (this.tagName === 'SELECT') {
+              $('option', $(this)).attr('selected', 'selected');
+          }
+
+          // Init tags from $(this).val()
+          $(this).val($(this).val());
+      } else if (!arg1 && !arg2) {
+          // tagsinput already exists
+          // no function, trying to init
+          results.push(tagsinput);
+      } else if(tagsinput[arg1] !== undefined) {
+          // Invoke function on existing tags input
+            if(tagsinput[arg1].length === 3 && arg3 !== undefined){
+               var retVal = tagsinput[arg1](arg2, null, arg3);
+            }else{
+               var retVal = tagsinput[arg1](arg2);
+            }
+          if (retVal !== undefined)
+              results.push(retVal);
+      }
+    });
+
+    if ( typeof arg1 == 'string') {
+      // Return the results from the invoked function calls
+      return results.length > 1 ? results : results[0];
+    } else {
+      return results;
+    }
+  };
+
+  $.fn.tagsinput.Constructor = TagsInput;
+
+  /**
+   * Most options support both a string or number as well as a function as
+   * option value. This function makes sure that the option with the given
+   * key in the given options is wrapped in a function
+   */
+  function makeOptionItemFunction(options, key) {
+    if (typeof options[key] !== 'function') {
+      var propertyName = options[key];
+      options[key] = function(item) { return item[propertyName]; };
+    }
+  }
+  function makeOptionFunction(options, key) {
+    if (typeof options[key] !== 'function') {
+      var value = options[key];
+      options[key] = function() { return value; };
+    }
+  }
+  /**
+   * HtmlEncodes the given value
+   */
+  var htmlEncodeContainer = $('<div />');
+  function htmlEncode(value) {
+    if (value) {
+      return htmlEncodeContainer.text(value).html();
+    } else {
+      return '';
+    }
+  }
+
+  /**
+   * Returns the position of the caret in the given input field
+   * http://flightschool.acylt.com/devnotes/caret-position-woes/
+   */
+  function doGetCaretPosition(oField) {
+    var iCaretPos = 0;
+    if (document.selection) {
+      oField.focus ();
+      var oSel = document.selection.createRange();
+      oSel.moveStart ('character', -oField.value.length);
+      iCaretPos = oSel.text.length;
+    } else if (oField.selectionStart || oField.selectionStart == '0') {
+      iCaretPos = oField.selectionStart;
+    }
+    return (iCaretPos);
+  }
+
+  /**
+    * Returns boolean indicates whether user has pressed an expected key combination.
+    * @param object keyPressEvent: JavaScript event object, refer
+    *     http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+    * @param object lookupList: expected key combinations, as in:
+    *     [13, {which: 188, shiftKey: true}]
+    */
+  function keyCombinationInList(keyPressEvent, lookupList) {
+      var found = false;
+      $.each(lookupList, function (index, keyCombination) {
+          if (typeof (keyCombination) === 'number' && keyPressEvent.which === keyCombination) {
+              found = true;
+              return false;
+          }
+
+          if (keyPressEvent.which === keyCombination.which) {
+              var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey,
+                  shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey,
+                  ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey;
+              if (alt && shift && ctrl) {
+                  found = true;
+                  return false;
+              }
+          }
+      });
+
+      return found;
+  }
+
+  /**
+   * Initialize tagsinput behaviour on inputs and selects which have
+   * data-role=tagsinput
+   */
+  $(function() {
+    $("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput();
+  });
+})(window.jQuery);
Index: public/vendors/vmap/jquery.vmap.js
===================================================================
--- public/vendors/vmap/jquery.vmap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/jquery.vmap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1289 @@
+/*!
+ * JQVMap: jQuery Vector Map Library
+ * @author JQVMap <me@peterschmalfeldt.com>
+ * @version 1.5.1
+ * @link http://jqvmap.com
+ * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE
+ * @builddate 2016/06/02
+ */
+
+var VectorCanvas = function (width, height, params) {
+  this.mode = window.SVGAngle ? 'svg' : 'vml';
+  this.params = params;
+
+  if (this.mode === 'svg') {
+    this.createSvgNode = function (nodeName) {
+      return document.createElementNS(this.svgns, nodeName);
+    };
+  } else {
+    try {
+      if (!document.namespaces.rvml) {
+        document.namespaces.add('rvml', 'urn:schemas-microsoft-com:vml');
+      }
+      this.createVmlNode = function (tagName) {
+        return document.createElement('<rvml:' + tagName + ' class="rvml">');
+      };
+    } catch (e) {
+      this.createVmlNode = function (tagName) {
+        return document.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');
+      };
+    }
+
+    document.createStyleSheet().addRule('.rvml', 'behavior:url(#default#VML)');
+  }
+
+  if (this.mode === 'svg') {
+    this.canvas = this.createSvgNode('svg');
+  } else {
+    this.canvas = this.createVmlNode('group');
+    this.canvas.style.position = 'absolute';
+  }
+
+  this.setSize(width, height);
+};
+
+VectorCanvas.prototype = {
+  svgns: 'http://www.w3.org/2000/svg',
+  mode: 'svg',
+  width: 0,
+  height: 0,
+  canvas: null
+};
+
+var ColorScale = function (colors, normalizeFunction, minValue, maxValue) {
+  if (colors) {
+    this.setColors(colors);
+  }
+  if (normalizeFunction) {
+    this.setNormalizeFunction(normalizeFunction);
+  }
+  if (minValue) {
+    this.setMin(minValue);
+  }
+  if (minValue) {
+    this.setMax(maxValue);
+  }
+};
+
+ColorScale.prototype = {
+  colors: []
+};
+
+var JQVMap = function (params) {
+  params = params || {};
+  var map = this;
+  var mapData = JQVMap.maps[params.map];
+  var mapPins;
+
+  if( !mapData){
+    throw new Error('Invalid "' + params.map + '" map parameter. Please make sure you have loaded this map file in your HTML.');
+  }
+
+  this.selectedRegions = [];
+  this.multiSelectRegion = params.multiSelectRegion;
+
+  this.container = params.container;
+
+  this.defaultWidth = mapData.width;
+  this.defaultHeight = mapData.height;
+
+  this.color = params.color;
+  this.selectedColor = params.selectedColor;
+  this.hoverColor = params.hoverColor;
+  this.hoverColors = params.hoverColors;
+  this.hoverOpacity = params.hoverOpacity;
+  this.setBackgroundColor(params.backgroundColor);
+
+  this.width = params.container.width();
+  this.height = params.container.height();
+
+  this.resize();
+
+  jQuery(window).resize(function () {
+    var newWidth = params.container.width();
+    var newHeight = params.container.height();
+
+    if(newWidth && newHeight){
+      map.width = newWidth;
+      map.height = newHeight;
+      map.resize();
+      map.canvas.setSize(map.width, map.height);
+      map.applyTransform();
+
+      var resizeEvent = jQuery.Event('resize.jqvmap');
+      jQuery(params.container).trigger(resizeEvent, [newWidth, newHeight]);
+
+      if(mapPins){
+        jQuery('.jqvmap-pin').remove();
+        map.pinHandlers = false;
+        map.placePins(mapPins.pins, mapPins.mode);
+      }
+    }
+  });
+
+  this.canvas = new VectorCanvas(this.width, this.height, params);
+  params.container.append(this.canvas.canvas);
+
+  this.makeDraggable();
+
+  this.rootGroup = this.canvas.createGroup(true);
+
+  this.index = JQVMap.mapIndex;
+  this.label = jQuery('<div/>').addClass('jqvmap-label').appendTo(jQuery('body')).hide();
+
+  if (params.enableZoom) {
+    jQuery('<div/>').addClass('jqvmap-zoomin').text('+').appendTo(params.container);
+    jQuery('<div/>').addClass('jqvmap-zoomout').html('&#x2212;').appendTo(params.container);
+  }
+
+  map.countries = [];
+
+  for (var key in mapData.paths) {
+    var path = this.canvas.createPath({
+      path: mapData.paths[key].path
+    });
+
+    path.setFill(this.color);
+    path.id = map.getCountryId(key);
+    map.countries[key] = path;
+
+    if (this.canvas.mode === 'svg') {
+      path.setAttribute('class', 'jqvmap-region');
+    } else {
+      jQuery(path).addClass('jqvmap-region');
+    }
+
+    jQuery(this.rootGroup).append(path);
+  }
+
+  jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'mouseover mouseout', function (e) {
+    var containerPath = e.target,
+      code = e.target.id.split('_').pop(),
+      labelShowEvent = jQuery.Event('labelShow.jqvmap'),
+      regionMouseOverEvent = jQuery.Event('regionMouseOver.jqvmap');
+
+    code = code.toLowerCase();
+
+    if (e.type === 'mouseover') {
+      jQuery(params.container).trigger(regionMouseOverEvent, [code, mapData.paths[code].name]);
+      if (!regionMouseOverEvent.isDefaultPrevented()) {
+        map.highlight(code, containerPath);
+      }
+      if (params.showTooltip) {
+        map.label.text(mapData.paths[code].name);
+        jQuery(params.container).trigger(labelShowEvent, [map.label, code]);
+
+        if (!labelShowEvent.isDefaultPrevented()) {
+          map.label.show();
+          map.labelWidth = map.label.width();
+          map.labelHeight = map.label.height();
+        }
+      }
+    } else {
+      map.unhighlight(code, containerPath);
+
+      map.label.hide();
+      jQuery(params.container).trigger('regionMouseOut.jqvmap', [code, mapData.paths[code].name]);
+    }
+  });
+
+  jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'click', function (regionClickEvent) {
+
+    var targetPath = regionClickEvent.target;
+    var code = regionClickEvent.target.id.split('_').pop();
+    var mapClickEvent = jQuery.Event('regionClick.jqvmap');
+
+    code = code.toLowerCase();
+
+    jQuery(params.container).trigger(mapClickEvent, [code, mapData.paths[code].name]);
+
+    if ( !params.multiSelectRegion && !mapClickEvent.isDefaultPrevented()) {
+      for (var keyPath in mapData.paths) {
+        map.countries[keyPath].currentFillColor = map.countries[keyPath].getOriginalFill();
+        map.countries[keyPath].setFill(map.countries[keyPath].getOriginalFill());
+      }
+    }
+
+    if ( !mapClickEvent.isDefaultPrevented()) {
+      if (map.isSelected(code)) {
+        map.deselect(code, targetPath);
+      } else {
+        map.select(code, targetPath);
+      }
+    }
+  });
+
+  if (params.showTooltip) {
+    params.container.mousemove(function (e) {
+      if (map.label.is(':visible')) {
+        var left = e.pageX - 15 - map.labelWidth;
+        var top = e.pageY - 15 - map.labelHeight;
+
+        if(left < 0) {
+          left = e.pageX + 15;
+        }
+        if(top < 0) {
+          top = e.pageY + 15;
+        }
+
+        map.label.css({
+          left: left,
+          top: top
+        });
+      }
+    });
+  }
+
+  this.setColors(params.colors);
+
+  this.canvas.canvas.appendChild(this.rootGroup);
+
+  this.applyTransform();
+
+  this.colorScale = new ColorScale(params.scaleColors, params.normalizeFunction, params.valueMin, params.valueMax);
+
+  if (params.values) {
+    this.values = params.values;
+    this.setValues(params.values);
+  }
+
+  if (params.selectedRegions) {
+    if (params.selectedRegions instanceof Array) {
+      for(var k in params.selectedRegions) {
+        this.select(params.selectedRegions[k].toLowerCase());
+      }
+    } else {
+      this.select(params.selectedRegions.toLowerCase());
+    }
+  }
+
+  this.bindZoomButtons();
+
+  if(params.pins) {
+    mapPins = {
+      pins: params.pins,
+      mode: params.pinMode
+    };
+
+    this.pinHandlers = false;
+    this.placePins(params.pins, params.pinMode);
+  }
+
+  if(params.showLabels){
+    this.pinHandlers = false;
+
+    var pins = {};
+    for (key in map.countries){
+      if (typeof map.countries[key] !== 'function') {
+        if( !params.pins || !params.pins[key] ){
+          pins[key] = key.toUpperCase();
+        }
+      }
+    }
+
+    mapPins = {
+      pins: pins,
+      mode: 'content'
+    };
+
+    this.placePins(pins, 'content');
+  }
+
+  JQVMap.mapIndex++;
+};
+
+JQVMap.prototype = {
+  transX: 0,
+  transY: 0,
+  scale: 1,
+  baseTransX: 0,
+  baseTransY: 0,
+  baseScale: 1,
+  width: 0,
+  height: 0,
+  countries: {},
+  countriesColors: {},
+  countriesData: {},
+  zoomStep: 1.4,
+  zoomMaxStep: 4,
+  zoomCurStep: 1
+};
+
+JQVMap.xlink = 'http://www.w3.org/1999/xlink';
+JQVMap.mapIndex = 1;
+JQVMap.maps = {};
+
+(function(){
+
+  var apiParams = {
+    colors: 1,
+    values: 1,
+    backgroundColor: 1,
+    scaleColors: 1,
+    normalizeFunction: 1,
+    enableZoom: 1,
+    showTooltip: 1,
+    borderColor: 1,
+    borderWidth: 1,
+    borderOpacity: 1,
+    selectedRegions: 1,
+    multiSelectRegion: 1
+  };
+
+  var apiEvents = {
+    onLabelShow: 'labelShow',
+    onLoad: 'load',
+    onRegionOver: 'regionMouseOver',
+    onRegionOut: 'regionMouseOut',
+    onRegionClick: 'regionClick',
+    onRegionSelect: 'regionSelect',
+    onRegionDeselect: 'regionDeselect',
+    onResize: 'resize'
+  };
+
+  jQuery.fn.vectorMap = function (options) {
+
+    var defaultParams = {
+      map: 'world_en',
+      backgroundColor: '#a5bfdd',
+      color: '#f4f3f0',
+      hoverColor: '#c9dfaf',
+      hoverColors: {},
+      selectedColor: '#c9dfaf',
+      scaleColors: ['#b6d6ff', '#005ace'],
+      normalizeFunction: 'linear',
+      enableZoom: true,
+      showTooltip: true,
+      borderColor: '#818181',
+      borderWidth: 1,
+      borderOpacity: 0.25,
+      selectedRegions: null,
+      multiSelectRegion: false
+    }, map = this.data('mapObject');
+
+    if (options === 'addMap') {
+      JQVMap.maps[arguments[1]] = arguments[2];
+    } else if (options === 'set' && apiParams[arguments[1]]) {
+      map['set' + arguments[1].charAt(0).toUpperCase() + arguments[1].substr(1)].apply(map, Array.prototype.slice.call(arguments, 2));
+    } else if (typeof options === 'string' &&
+      typeof map[options] === 'function') {
+      return map[options].apply(map, Array.prototype.slice.call(arguments, 1));
+    } else {
+      jQuery.extend(defaultParams, options);
+      defaultParams.container = this;
+      this.css({ position: 'relative', overflow: 'hidden' });
+
+      map = new JQVMap(defaultParams);
+
+      this.data('mapObject', map);
+
+      this.unbind('.jqvmap');
+
+      for (var e in apiEvents) {
+        if (defaultParams[e]) {
+          this.bind(apiEvents[e] + '.jqvmap', defaultParams[e]);
+        }
+      }
+
+      var loadEvent = jQuery.Event('load.jqvmap');
+      jQuery(defaultParams.container).trigger(loadEvent, map);
+
+      return map;
+    }
+  };
+
+})(jQuery);
+
+ColorScale.arrayToRgb = function (ar) {
+  var rgb = '#';
+  var d;
+  for (var i = 0; i < ar.length; i++) {
+    d = ar[i].toString(16);
+    rgb += d.length === 1 ? '0' + d : d;
+  }
+  return rgb;
+};
+
+ColorScale.prototype.getColor = function (value) {
+  if (typeof this.normalize === 'function') {
+    value = this.normalize(value);
+  }
+
+  var lengthes = [];
+  var fullLength = 0;
+  var l;
+
+  for (var i = 0; i < this.colors.length - 1; i++) {
+    l = this.vectorLength(this.vectorSubtract(this.colors[i + 1], this.colors[i]));
+    lengthes.push(l);
+    fullLength += l;
+  }
+
+  var c = (this.maxValue - this.minValue) / fullLength;
+
+  for (i = 0; i < lengthes.length; i++) {
+    lengthes[i] *= c;
+  }
+
+  i = 0;
+  value -= this.minValue;
+
+  while (value - lengthes[i] >= 0) {
+    value -= lengthes[i];
+    i++;
+  }
+
+  var color;
+  if (i === this.colors.length - 1) {
+    color = this.vectorToNum(this.colors[i]).toString(16);
+  } else {
+    color = (this.vectorToNum(this.vectorAdd(this.colors[i], this.vectorMult(this.vectorSubtract(this.colors[i + 1], this.colors[i]), (value) / (lengthes[i]))))).toString(16);
+  }
+
+  while (color.length < 6) {
+    color = '0' + color;
+  }
+  return '#' + color;
+};
+
+ColorScale.rgbToArray = function (rgb) {
+  rgb = rgb.substr(1);
+  return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)];
+};
+
+ColorScale.prototype.setColors = function (colors) {
+  for (var i = 0; i < colors.length; i++) {
+    colors[i] = ColorScale.rgbToArray(colors[i]);
+  }
+  this.colors = colors;
+};
+
+ColorScale.prototype.setMax = function (max) {
+  this.clearMaxValue = max;
+  if (typeof this.normalize === 'function') {
+    this.maxValue = this.normalize(max);
+  } else {
+    this.maxValue = max;
+  }
+};
+
+ColorScale.prototype.setMin = function (min) {
+  this.clearMinValue = min;
+
+  if (typeof this.normalize === 'function') {
+    this.minValue = this.normalize(min);
+  } else {
+    this.minValue = min;
+  }
+};
+
+ColorScale.prototype.setNormalizeFunction = function (f) {
+  if (f === 'polynomial') {
+    this.normalize = function (value) {
+      return Math.pow(value, 0.2);
+    };
+  } else if (f === 'linear') {
+    delete this.normalize;
+  } else {
+    this.normalize = f;
+  }
+  this.setMin(this.clearMinValue);
+  this.setMax(this.clearMaxValue);
+};
+
+ColorScale.prototype.vectorAdd = function (vector1, vector2) {
+  var vector = [];
+  for (var i = 0; i < vector1.length; i++) {
+    vector[i] = vector1[i] + vector2[i];
+  }
+  return vector;
+};
+
+ColorScale.prototype.vectorLength = function (vector) {
+  var result = 0;
+  for (var i = 0; i < vector.length; i++) {
+    result += vector[i] * vector[i];
+  }
+  return Math.sqrt(result);
+};
+
+ColorScale.prototype.vectorMult = function (vector, num) {
+  var result = [];
+  for (var i = 0; i < vector.length; i++) {
+    result[i] = vector[i] * num;
+  }
+  return result;
+};
+
+ColorScale.prototype.vectorSubtract = function (vector1, vector2) {
+  var vector = [];
+  for (var i = 0; i < vector1.length; i++) {
+    vector[i] = vector1[i] - vector2[i];
+  }
+  return vector;
+};
+
+ColorScale.prototype.vectorToNum = function (vector) {
+  var num = 0;
+  for (var i = 0; i < vector.length; i++) {
+    num += Math.round(vector[i]) * Math.pow(256, vector.length - i - 1);
+  }
+  return num;
+};
+
+JQVMap.prototype.applyTransform = function () {
+  var maxTransX, maxTransY, minTransX, minTransY;
+  if (this.defaultWidth * this.scale <= this.width) {
+    maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);
+    minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);
+  } else {
+    maxTransX = 0;
+    minTransX = (this.width - this.defaultWidth * this.scale) / this.scale;
+  }
+
+  if (this.defaultHeight * this.scale <= this.height) {
+    maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);
+    minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);
+  } else {
+    maxTransY = 0;
+    minTransY = (this.height - this.defaultHeight * this.scale) / this.scale;
+  }
+
+  if (this.transY > maxTransY) {
+    this.transY = maxTransY;
+  } else if (this.transY < minTransY) {
+    this.transY = minTransY;
+  }
+  if (this.transX > maxTransX) {
+    this.transX = maxTransX;
+  } else if (this.transX < minTransX) {
+    this.transX = minTransX;
+  }
+
+  this.canvas.applyTransformParams(this.scale, this.transX, this.transY);
+};
+
+JQVMap.prototype.bindZoomButtons = function () {
+  var map = this;
+  this.container.find('.jqvmap-zoomin').click(function(){
+    map.zoomIn();
+  });
+  this.container.find('.jqvmap-zoomout').click(function(){
+    map.zoomOut();
+  });
+};
+
+JQVMap.prototype.deselect = function (cc, path) {
+  cc = cc.toLowerCase();
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+
+  if (this.isSelected(cc)) {
+    this.selectedRegions.splice(this.selectIndex(cc), 1);
+
+    jQuery(this.container).trigger('regionDeselect.jqvmap', [cc]);
+    path.currentFillColor = path.getOriginalFill();
+    path.setFill(path.getOriginalFill());
+  } else {
+    for (var key in this.countries) {
+      this.selectedRegions.splice(this.selectedRegions.indexOf(key), 1);
+      this.countries[key].currentFillColor = this.color;
+      this.countries[key].setFill(this.color);
+    }
+  }
+};
+
+JQVMap.prototype.getCountryId = function (cc) {
+  return 'jqvmap' + this.index + '_' + cc;
+};
+
+JQVMap.prototype.getPin = function(cc){
+  var pinObj = jQuery('#' + this.getPinId(cc));
+  return pinObj.html();
+};
+
+JQVMap.prototype.getPinId = function (cc) {
+  return this.getCountryId(cc) + '_pin';
+};
+
+JQVMap.prototype.getPins = function(){
+  var pins = this.container.find('.jqvmap-pin');
+  var ret = {};
+  jQuery.each(pins, function(index, pinObj){
+    pinObj = jQuery(pinObj);
+    var cc = pinObj.attr('for').toLowerCase();
+    var pinContent = pinObj.html();
+    ret[cc] = pinContent;
+  });
+  return JSON.stringify(ret);
+};
+
+JQVMap.prototype.highlight = function (cc, path) {
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+  if (this.hoverOpacity) {
+    path.setOpacity(this.hoverOpacity);
+  } else if (this.hoverColors && (cc in this.hoverColors)) {
+    path.currentFillColor = path.getFill() + '';
+    path.setFill(this.hoverColors[cc]);
+  } else if (this.hoverColor) {
+    path.currentFillColor = path.getFill() + '';
+    path.setFill(this.hoverColor);
+  }
+};
+
+JQVMap.prototype.isSelected = function(cc) {
+  return this.selectIndex(cc) >= 0;
+};
+
+JQVMap.prototype.makeDraggable = function () {
+  var mouseDown = false;
+  var oldPageX, oldPageY;
+  var self = this;
+
+  self.isMoving = false;
+  self.isMovingTimeout = false;
+
+  var lastTouchCount;
+  var touchCenterX;
+  var touchCenterY;
+  var touchStartDistance;
+  var touchStartScale;
+  var touchX;
+  var touchY;
+
+  this.container.mousemove(function (e) {
+
+    if (mouseDown) {
+      self.transX -= (oldPageX - e.pageX) / self.scale;
+      self.transY -= (oldPageY - e.pageY) / self.scale;
+
+      self.applyTransform();
+
+      oldPageX = e.pageX;
+      oldPageY = e.pageY;
+
+      self.isMoving = true;
+      if (self.isMovingTimeout) {
+        clearTimeout(self.isMovingTimeout);
+      }
+
+      self.container.trigger('drag');
+    }
+
+    return false;
+
+  }).mousedown(function (e) {
+
+    mouseDown = true;
+    oldPageX = e.pageX;
+    oldPageY = e.pageY;
+
+    return false;
+
+  }).mouseup(function () {
+
+    mouseDown = false;
+
+    clearTimeout(self.isMovingTimeout);
+    self.isMovingTimeout = setTimeout(function () {
+      self.isMoving = false;
+    }, 100);
+
+    return false;
+
+  }).mouseout(function () {
+
+    if(mouseDown && self.isMoving){
+
+      clearTimeout(self.isMovingTimeout);
+      self.isMovingTimeout = setTimeout(function () {
+        mouseDown = false;
+        self.isMoving = false;
+      }, 100);
+
+      return false;
+    }
+  });
+
+  jQuery(this.container).bind('touchmove', function (e) {
+
+    var offset;
+    var scale;
+    var touches = e.originalEvent.touches;
+    var transformXOld;
+    var transformYOld;
+
+    if (touches.length === 1) {
+      if (lastTouchCount === 1) {
+
+        if(touchX === touches[0].pageX && touchY === touches[0].pageY){
+          return;
+        }
+
+        transformXOld = self.transX;
+        transformYOld = self.transY;
+
+        self.transX -= (touchX - touches[0].pageX) / self.scale;
+        self.transY -= (touchY - touches[0].pageY) / self.scale;
+
+        self.applyTransform();
+
+        if (transformXOld !== self.transX || transformYOld !== self.transY) {
+          e.preventDefault();
+        }
+
+        self.isMoving = true;
+        if (self.isMovingTimeout) {
+          clearTimeout(self.isMovingTimeout);
+        }
+      }
+
+      touchX = touches[0].pageX;
+      touchY = touches[0].pageY;
+
+    } else if (touches.length === 2) {
+
+      if (lastTouchCount === 2) {
+        scale = Math.sqrt(
+            Math.pow(touches[0].pageX - touches[1].pageX, 2) +
+            Math.pow(touches[0].pageY - touches[1].pageY, 2)
+          ) / touchStartDistance;
+
+        self.setScale(
+          touchStartScale * scale,
+          touchCenterX,
+          touchCenterY
+        );
+
+        e.preventDefault();
+
+      } else {
+
+        offset = jQuery(self.container).offset();
+        if (touches[0].pageX > touches[1].pageX) {
+          touchCenterX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2;
+        } else {
+          touchCenterX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2;
+        }
+
+        if (touches[0].pageY > touches[1].pageY) {
+          touchCenterY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2;
+        } else {
+          touchCenterY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2;
+        }
+
+        touchCenterX -= offset.left;
+        touchCenterY -= offset.top;
+        touchStartScale = self.scale;
+
+        touchStartDistance = Math.sqrt(
+          Math.pow(touches[0].pageX - touches[1].pageX, 2) +
+          Math.pow(touches[0].pageY - touches[1].pageY, 2)
+        );
+      }
+    }
+
+    lastTouchCount = touches.length;
+  });
+
+  jQuery(this.container).bind('touchstart', function () {
+    lastTouchCount = 0;
+  });
+
+  jQuery(this.container).bind('touchend', function () {
+    lastTouchCount = 0;
+  });
+};
+
+JQVMap.prototype.placePins = function(pins, pinMode){
+  var map = this;
+
+  if(!pinMode || (pinMode !== 'content' && pinMode !== 'id')) {
+    pinMode = 'content';
+  }
+
+  if(pinMode === 'content') {//treat pin as content
+    jQuery.each(pins, function(index, pin){
+      if(jQuery('#' + map.getCountryId(index)).length === 0){
+        return;
+      }
+
+      var pinIndex = map.getPinId(index);
+      var $pin = jQuery('#' + pinIndex);
+      if($pin.length > 0){
+        $pin.remove();
+      }
+      map.container.append('<div id="' + pinIndex + '" for="' + index + '" class="jqvmap-pin" style="position:absolute">' + pin + '</div>');
+    });
+  } else { //treat pin as id of an html content
+    jQuery.each(pins, function(index, pin){
+      if(jQuery('#' + map.getCountryId(index)).length === 0){
+        return;
+      }
+      var pinIndex = map.getPinId(index);
+      var $pin = jQuery('#' + pinIndex);
+      if($pin.length > 0){
+        $pin.remove();
+      }
+      map.container.append('<div id="' + pinIndex + '" for="' + index + '" class="jqvmap-pin" style="position:absolute"></div>');
+      $pin.append(jQuery('#' + pin));
+    });
+  }
+
+  this.positionPins();
+  if(!this.pinHandlers){
+    this.pinHandlers = true;
+    var positionFix = function(){
+      map.positionPins();
+    };
+    this.container.bind('zoomIn', positionFix)
+      .bind('zoomOut', positionFix)
+      .bind('drag', positionFix);
+  }
+};
+
+JQVMap.prototype.positionPins = function(){
+  var map = this;
+  var pins = this.container.find('.jqvmap-pin');
+  jQuery.each(pins, function(index, pinObj){
+    pinObj = jQuery(pinObj);
+    var countryId = map.getCountryId(pinObj.attr('for').toLowerCase());
+    var countryObj = jQuery('#' + countryId);
+    var bbox = countryObj[0].getBBox();
+
+    var scale = map.scale;
+    var rootCoords = map.canvas.rootGroup.getBoundingClientRect();
+    var mapCoords = map.container[0].getBoundingClientRect();
+    var coords = {
+      left: rootCoords.left - mapCoords.left,
+      top: rootCoords.top - mapCoords.top
+    };
+
+    var middleX = (bbox.x * scale) + ((bbox.width * scale) / 2);
+    var middleY = (bbox.y * scale) + ((bbox.height * scale) / 2);
+
+    pinObj.css({
+      left: coords.left + middleX - (pinObj.width() / 2),
+      top: coords.top + middleY - (pinObj.height() / 2)
+    });
+  });
+};
+
+JQVMap.prototype.removePin = function(cc) {
+  cc = cc.toLowerCase();
+  jQuery('#' + this.getPinId(cc)).remove();
+};
+
+JQVMap.prototype.removePins = function(){
+  this.container.find('.jqvmap-pin').remove();
+};
+
+JQVMap.prototype.reset = function () {
+  for (var key in this.countries) {
+    this.countries[key].setFill(this.color);
+  }
+  this.scale = this.baseScale;
+  this.transX = this.baseTransX;
+  this.transY = this.baseTransY;
+  this.applyTransform();
+  this.zoomCurStep = 1;
+};
+
+JQVMap.prototype.resize = function () {
+  var curBaseScale = this.baseScale;
+  if (this.width / this.height > this.defaultWidth / this.defaultHeight) {
+    this.baseScale = this.height / this.defaultHeight;
+    this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale);
+  } else {
+    this.baseScale = this.width / this.defaultWidth;
+    this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale);
+  }
+  this.scale *= this.baseScale / curBaseScale;
+  this.transX *= this.baseScale / curBaseScale;
+  this.transY *= this.baseScale / curBaseScale;
+};
+
+JQVMap.prototype.select = function (cc, path) {
+  cc = cc.toLowerCase();
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+
+  if (!this.isSelected(cc)) {
+    if (this.multiSelectRegion) {
+      this.selectedRegions.push(cc);
+    } else {
+      this.selectedRegions = [cc];
+    }
+
+    jQuery(this.container).trigger('regionSelect.jqvmap', [cc]);
+    if (this.selectedColor && path) {
+      path.currentFillColor = this.selectedColor;
+      path.setFill(this.selectedColor);
+    }
+  }
+};
+
+JQVMap.prototype.selectIndex = function (cc) {
+  cc = cc.toLowerCase();
+  for (var i = 0; i < this.selectedRegions.length; i++) {
+    if (cc === this.selectedRegions[i]) {
+      return i;
+    }
+  }
+  return -1;
+};
+
+JQVMap.prototype.setBackgroundColor = function (backgroundColor) {
+  this.container.css('background-color', backgroundColor);
+};
+
+JQVMap.prototype.setColors = function (key, color) {
+  if (typeof key === 'string') {
+    this.countries[key].setFill(color);
+    this.countries[key].setAttribute('original', color);
+  } else {
+    var colors = key;
+
+    for (var code in colors) {
+      if (this.countries[code]) {
+        this.countries[code].setFill(colors[code]);
+        this.countries[code].setAttribute('original', colors[code]);
+      }
+    }
+  }
+};
+
+JQVMap.prototype.setNormalizeFunction = function (f) {
+  this.colorScale.setNormalizeFunction(f);
+
+  if (this.values) {
+    this.setValues(this.values);
+  }
+};
+
+JQVMap.prototype.setScale = function (scale) {
+  this.scale = scale;
+  this.applyTransform();
+};
+
+JQVMap.prototype.setScaleColors = function (colors) {
+  this.colorScale.setColors(colors);
+
+  if (this.values) {
+    this.setValues(this.values);
+  }
+};
+
+JQVMap.prototype.setValues = function (values) {
+  var max = 0,
+    min = Number.MAX_VALUE,
+    val;
+
+  for (var cc in values) {
+    cc = cc.toLowerCase();
+    val = parseFloat(values[cc]);
+
+    if (isNaN(val)) {
+      continue;
+    }
+    if (val > max) {
+      max = values[cc];
+    }
+    if (val < min) {
+      min = val;
+    }
+  }
+
+  if (min === max) {
+    max++;
+  }
+
+  this.colorScale.setMin(min);
+  this.colorScale.setMax(max);
+
+  var colors = {};
+  for (cc in values) {
+    cc = cc.toLowerCase();
+    val = parseFloat(values[cc]);
+    colors[cc] = isNaN(val) ? this.color : this.colorScale.getColor(val);
+  }
+  this.setColors(colors);
+  this.values = values;
+};
+
+JQVMap.prototype.unhighlight = function (cc, path) {
+  cc = cc.toLowerCase();
+  path = path || jQuery('#' + this.getCountryId(cc))[0];
+  path.setOpacity(1);
+  if (path.currentFillColor) {
+    path.setFill(path.currentFillColor);
+  }
+};
+
+JQVMap.prototype.zoomIn = function () {
+  var map = this;
+  var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep);
+
+  if (map.zoomCurStep < map.zoomMaxStep) {
+    map.transX -= (map.width / map.scale - map.width / (map.scale * map.zoomStep)) / 2;
+    map.transY -= (map.height / map.scale - map.height / (map.scale * map.zoomStep)) / 2;
+    map.setScale(map.scale * map.zoomStep);
+    map.zoomCurStep++;
+
+    var $slider = jQuery('#zoomSlider');
+
+    $slider.css('top', parseInt($slider.css('top'), 10) - sliderDelta);
+
+    map.container.trigger('zoomIn');
+  }
+};
+
+JQVMap.prototype.zoomOut = function () {
+  var map = this;
+  var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep);
+
+  if (map.zoomCurStep > 1) {
+    map.transX += (map.width / (map.scale / map.zoomStep) - map.width / map.scale) / 2;
+    map.transY += (map.height / (map.scale / map.zoomStep) - map.height / map.scale) / 2;
+    map.setScale(map.scale / map.zoomStep);
+    map.zoomCurStep--;
+
+    var $slider = jQuery('#zoomSlider');
+
+    $slider.css('top', parseInt($slider.css('top'), 10) + sliderDelta);
+
+    map.container.trigger('zoomOut');
+  }
+};
+
+VectorCanvas.prototype.applyTransformParams = function (scale, transX, transY) {
+  if (this.mode === 'svg') {
+    this.rootGroup.setAttribute('transform', 'scale(' + scale + ') translate(' + transX + ', ' + transY + ')');
+  } else {
+    this.rootGroup.coordorigin = (this.width - transX) + ',' + (this.height - transY);
+    this.rootGroup.coordsize = this.width / scale + ',' + this.height / scale;
+  }
+};
+
+VectorCanvas.prototype.createGroup = function (isRoot) {
+  var node;
+  if (this.mode === 'svg') {
+    node = this.createSvgNode('g');
+  } else {
+    node = this.createVmlNode('group');
+    node.style.width = this.width + 'px';
+    node.style.height = this.height + 'px';
+    node.style.left = '0px';
+    node.style.top = '0px';
+    node.coordorigin = '0 0';
+    node.coordsize = this.width + ' ' + this.height;
+  }
+
+  if (isRoot) {
+    this.rootGroup = node;
+  }
+  return node;
+};
+
+VectorCanvas.prototype.createPath = function (config) {
+  var node;
+  if (this.mode === 'svg') {
+    node = this.createSvgNode('path');
+    node.setAttribute('d', config.path);
+
+    if (this.params.borderColor !== null) {
+      node.setAttribute('stroke', this.params.borderColor);
+    }
+    if (this.params.borderWidth > 0) {
+      node.setAttribute('stroke-width', this.params.borderWidth);
+      node.setAttribute('stroke-linecap', 'round');
+      node.setAttribute('stroke-linejoin', 'round');
+    }
+    if (this.params.borderOpacity > 0) {
+      node.setAttribute('stroke-opacity', this.params.borderOpacity);
+    }
+
+    node.setFill = function (color) {
+      this.setAttribute('fill', color);
+      if (this.getAttribute('original') === null) {
+        this.setAttribute('original', color);
+      }
+    };
+
+    node.getFill = function () {
+      return this.getAttribute('fill');
+    };
+
+    node.getOriginalFill = function () {
+      return this.getAttribute('original');
+    };
+
+    node.setOpacity = function (opacity) {
+      this.setAttribute('fill-opacity', opacity);
+    };
+  } else {
+    node = this.createVmlNode('shape');
+    node.coordorigin = '0 0';
+    node.coordsize = this.width + ' ' + this.height;
+    node.style.width = this.width + 'px';
+    node.style.height = this.height + 'px';
+    node.fillcolor = JQVMap.defaultFillColor;
+    node.stroked = false;
+    node.path = VectorCanvas.pathSvgToVml(config.path);
+
+    var scale = this.createVmlNode('skew');
+    scale.on = true;
+    scale.matrix = '0.01,0,0,0.01,0,0';
+    scale.offset = '0,0';
+
+    node.appendChild(scale);
+
+    var fill = this.createVmlNode('fill');
+    node.appendChild(fill);
+
+    node.setFill = function (color) {
+      this.getElementsByTagName('fill')[0].color = color;
+      if (this.getAttribute('original') === null) {
+        this.setAttribute('original', color);
+      }
+    };
+
+    node.getFill = function () {
+      return this.getElementsByTagName('fill')[0].color;
+    };
+    node.getOriginalFill = function () {
+      return this.getAttribute('original');
+    };
+    node.setOpacity = function (opacity) {
+      this.getElementsByTagName('fill')[0].opacity = parseInt(opacity * 100, 10) + '%';
+    };
+  }
+  return node;
+};
+
+VectorCanvas.prototype.pathSvgToVml = function (path) {
+  var result = '';
+  var cx = 0, cy = 0, ctrlx, ctrly;
+
+  return path.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g, function (segment, letter, coords) {
+    coords = coords.replace(/(\d)-/g, '$1,-').replace(/\s+/g, ',').split(',');
+    if (!coords[0]) {
+      coords.shift();
+    }
+
+    for (var i = 0, l = coords.length; i < l; i++) {
+      coords[i] = Math.round(100 * coords[i]);
+    }
+
+    switch (letter) {
+      case 'm':
+        cx += coords[0];
+        cy += coords[1];
+        result = 't' + coords.join(',');
+        break;
+
+      case 'M':
+        cx = coords[0];
+        cy = coords[1];
+        result = 'm' + coords.join(',');
+        break;
+
+      case 'l':
+        cx += coords[0];
+        cy += coords[1];
+        result = 'r' + coords.join(',');
+        break;
+
+      case 'L':
+        cx = coords[0];
+        cy = coords[1];
+        result = 'l' + coords.join(',');
+        break;
+
+      case 'h':
+        cx += coords[0];
+        result = 'r' + coords[0] + ',0';
+        break;
+
+      case 'H':
+        cx = coords[0];
+        result = 'l' + cx + ',' + cy;
+        break;
+
+      case 'v':
+        cy += coords[0];
+        result = 'r0,' + coords[0];
+        break;
+
+      case 'V':
+        cy = coords[0];
+        result = 'l' + cx + ',' + cy;
+        break;
+
+      case 'c':
+        ctrlx = cx + coords[coords.length - 4];
+        ctrly = cy + coords[coords.length - 3];
+        cx += coords[coords.length - 2];
+        cy += coords[coords.length - 1];
+        result = 'v' + coords.join(',');
+        break;
+
+      case 'C':
+        ctrlx = coords[coords.length - 4];
+        ctrly = coords[coords.length - 3];
+        cx = coords[coords.length - 2];
+        cy = coords[coords.length - 1];
+        result = 'c' + coords.join(',');
+        break;
+
+      case 's':
+        coords.unshift(cy - ctrly);
+        coords.unshift(cx - ctrlx);
+        ctrlx = cx + coords[coords.length - 4];
+        ctrly = cy + coords[coords.length - 3];
+        cx += coords[coords.length - 2];
+        cy += coords[coords.length - 1];
+        result = 'v' + coords.join(',');
+        break;
+
+      case 'S':
+        coords.unshift(cy + cy - ctrly);
+        coords.unshift(cx + cx - ctrlx);
+        ctrlx = coords[coords.length - 4];
+        ctrly = coords[coords.length - 3];
+        cx = coords[coords.length - 2];
+        cy = coords[coords.length - 1];
+        result = 'c' + coords.join(',');
+        break;
+
+      default:
+        break;
+    }
+
+    return result;
+
+  }).replace(/z/g, '');
+};
+
+VectorCanvas.prototype.setSize = function (width, height) {
+  if (this.mode === 'svg') {
+    this.canvas.setAttribute('width', width);
+    this.canvas.setAttribute('height', height);
+  } else {
+    this.canvas.style.width = width + 'px';
+    this.canvas.style.height = height + 'px';
+    this.canvas.coordsize = width + ' ' + height;
+    this.canvas.coordorigin = '0 0';
+    if (this.rootGroup) {
+      var paths = this.rootGroup.getElementsByTagName('shape');
+      for (var i = 0, l = paths.length; i < l; i++) {
+        paths[i].coordsize = width + ' ' + height;
+        paths[i].style.width = width + 'px';
+        paths[i].style.height = height + 'px';
+      }
+      this.rootGroup.coordsize = width + ' ' + height;
+      this.rootGroup.style.width = width + 'px';
+      this.rootGroup.style.height = height + 'px';
+    }
+  }
+  this.width = width;
+  this.height = height;
+};
Index: public/vendors/vmap/jquery.vmap.min.js
===================================================================
--- public/vendors/vmap/jquery.vmap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/jquery.vmap.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,10 @@
+/*!
+ * JQVMap: jQuery Vector Map Library
+ * @author JQVMap <me@peterschmalfeldt.com>
+ * @version 1.5.1
+ * @link http://jqvmap.com
+ * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE
+ * @builddate 2016/06/02
+ */
+
+var VectorCanvas=function(a,b,c){if(this.mode=window.SVGAngle?"svg":"vml",this.params=c,"svg"===this.mode)this.createSvgNode=function(a){return document.createElementNS(this.svgns,a)};else{try{document.namespaces.rvml||document.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),this.createVmlNode=function(a){return document.createElement("<rvml:"+a+' class="rvml">')}}catch(d){this.createVmlNode=function(a){return document.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)")}"svg"===this.mode?this.canvas=this.createSvgNode("svg"):(this.canvas=this.createVmlNode("group"),this.canvas.style.position="absolute"),this.setSize(a,b)};VectorCanvas.prototype={svgns:"http://www.w3.org/2000/svg",mode:"svg",width:0,height:0,canvas:null};var ColorScale=function(a,b,c,d){a&&this.setColors(a),b&&this.setNormalizeFunction(b),c&&this.setMin(c),c&&this.setMax(d)};ColorScale.prototype={colors:[]};var JQVMap=function(a){a=a||{};var b,c=this,d=JQVMap.maps[a.map];if(!d)throw new Error('Invalid "'+a.map+'" map parameter. Please make sure you have loaded this map file in your HTML.');this.selectedRegions=[],this.multiSelectRegion=a.multiSelectRegion,this.container=a.container,this.defaultWidth=d.width,this.defaultHeight=d.height,this.color=a.color,this.selectedColor=a.selectedColor,this.hoverColor=a.hoverColor,this.hoverColors=a.hoverColors,this.hoverOpacity=a.hoverOpacity,this.setBackgroundColor(a.backgroundColor),this.width=a.container.width(),this.height=a.container.height(),this.resize(),jQuery(window).resize(function(){var d=a.container.width(),e=a.container.height();if(d&&e){c.width=d,c.height=e,c.resize(),c.canvas.setSize(c.width,c.height),c.applyTransform();var f=jQuery.Event("resize.jqvmap");jQuery(a.container).trigger(f,[d,e]),b&&(jQuery(".jqvmap-pin").remove(),c.pinHandlers=!1,c.placePins(b.pins,b.mode))}}),this.canvas=new VectorCanvas(this.width,this.height,a),a.container.append(this.canvas.canvas),this.makeDraggable(),this.rootGroup=this.canvas.createGroup(!0),this.index=JQVMap.mapIndex,this.label=jQuery("<div/>").addClass("jqvmap-label").appendTo(jQuery("body")).hide(),a.enableZoom&&(jQuery("<div/>").addClass("jqvmap-zoomin").text("+").appendTo(a.container),jQuery("<div/>").addClass("jqvmap-zoomout").html("&#x2212;").appendTo(a.container)),c.countries=[];for(var e in d.paths){var f=this.canvas.createPath({path:d.paths[e].path});f.setFill(this.color),f.id=c.getCountryId(e),c.countries[e]=f,"svg"===this.canvas.mode?f.setAttribute("class","jqvmap-region"):jQuery(f).addClass("jqvmap-region"),jQuery(this.rootGroup).append(f)}if(jQuery(a.container).delegate("svg"===this.canvas.mode?"path":"shape","mouseover mouseout",function(b){var e=b.target,f=b.target.id.split("_").pop(),g=jQuery.Event("labelShow.jqvmap"),h=jQuery.Event("regionMouseOver.jqvmap");f=f.toLowerCase(),"mouseover"===b.type?(jQuery(a.container).trigger(h,[f,d.paths[f].name]),h.isDefaultPrevented()||c.highlight(f,e),a.showTooltip&&(c.label.text(d.paths[f].name),jQuery(a.container).trigger(g,[c.label,f]),g.isDefaultPrevented()||(c.label.show(),c.labelWidth=c.label.width(),c.labelHeight=c.label.height()))):(c.unhighlight(f,e),c.label.hide(),jQuery(a.container).trigger("regionMouseOut.jqvmap",[f,d.paths[f].name]))}),jQuery(a.container).delegate("svg"===this.canvas.mode?"path":"shape","click",function(b){var e=b.target,f=b.target.id.split("_").pop(),g=jQuery.Event("regionClick.jqvmap");if(f=f.toLowerCase(),jQuery(a.container).trigger(g,[f,d.paths[f].name]),!a.multiSelectRegion&&!g.isDefaultPrevented())for(var h in d.paths)c.countries[h].currentFillColor=c.countries[h].getOriginalFill(),c.countries[h].setFill(c.countries[h].getOriginalFill());g.isDefaultPrevented()||(c.isSelected(f)?c.deselect(f,e):c.select(f,e))}),a.showTooltip&&a.container.mousemove(function(a){if(c.label.is(":visible")){var b=a.pageX-15-c.labelWidth,d=a.pageY-15-c.labelHeight;0>b&&(b=a.pageX+15),0>d&&(d=a.pageY+15),c.label.css({left:b,top:d})}}),this.setColors(a.colors),this.canvas.canvas.appendChild(this.rootGroup),this.applyTransform(),this.colorScale=new ColorScale(a.scaleColors,a.normalizeFunction,a.valueMin,a.valueMax),a.values&&(this.values=a.values,this.setValues(a.values)),a.selectedRegions)if(a.selectedRegions instanceof Array)for(var g in a.selectedRegions)this.select(a.selectedRegions[g].toLowerCase());else this.select(a.selectedRegions.toLowerCase());if(this.bindZoomButtons(),a.pins&&(b={pins:a.pins,mode:a.pinMode},this.pinHandlers=!1,this.placePins(a.pins,a.pinMode)),a.showLabels){this.pinHandlers=!1;var h={};for(e in c.countries)"function"!=typeof c.countries[e]&&(a.pins&&a.pins[e]||(h[e]=e.toUpperCase()));b={pins:h,mode:"content"},this.placePins(h,"content")}JQVMap.mapIndex++};JQVMap.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,countries:{},countriesColors:{},countriesData:{},zoomStep:1.4,zoomMaxStep:4,zoomCurStep:1},JQVMap.xlink="http://www.w3.org/1999/xlink",JQVMap.mapIndex=1,JQVMap.maps={},function(){var a={colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,enableZoom:1,showTooltip:1,borderColor:1,borderWidth:1,borderOpacity:1,selectedRegions:1,multiSelectRegion:1},b={onLabelShow:"labelShow",onLoad:"load",onRegionOver:"regionMouseOver",onRegionOut:"regionMouseOut",onRegionClick:"regionClick",onRegionSelect:"regionSelect",onRegionDeselect:"regionDeselect",onResize:"resize"};jQuery.fn.vectorMap=function(c){var d={map:"world_en",backgroundColor:"#a5bfdd",color:"#f4f3f0",hoverColor:"#c9dfaf",hoverColors:{},selectedColor:"#c9dfaf",scaleColors:["#b6d6ff","#005ace"],normalizeFunction:"linear",enableZoom:!0,showTooltip:!0,borderColor:"#818181",borderWidth:1,borderOpacity:.25,selectedRegions:null,multiSelectRegion:!1},e=this.data("mapObject");if("addMap"===c)JQVMap.maps[arguments[1]]=arguments[2];else{if("set"!==c||!a[arguments[1]]){if("string"==typeof c&&"function"==typeof e[c])return e[c].apply(e,Array.prototype.slice.call(arguments,1));jQuery.extend(d,c),d.container=this,this.css({position:"relative",overflow:"hidden"}),e=new JQVMap(d),this.data("mapObject",e),this.unbind(".jqvmap");for(var f in b)d[f]&&this.bind(b[f]+".jqvmap",d[f]);var g=jQuery.Event("load.jqvmap");return jQuery(d.container).trigger(g,e),e}e["set"+arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1)].apply(e,Array.prototype.slice.call(arguments,2))}}}(jQuery),ColorScale.arrayToRgb=function(a){for(var b,c="#",d=0;d<a.length;d++)b=a[d].toString(16),c+=1===b.length?"0"+b:b;return c},ColorScale.prototype.getColor=function(a){"function"==typeof this.normalize&&(a=this.normalize(a));for(var b,c=[],d=0,e=0;e<this.colors.length-1;e++)b=this.vectorLength(this.vectorSubtract(this.colors[e+1],this.colors[e])),c.push(b),d+=b;var f=(this.maxValue-this.minValue)/d;for(e=0;e<c.length;e++)c[e]*=f;for(e=0,a-=this.minValue;a-c[e]>=0;)a-=c[e],e++;var g;for(g=e===this.colors.length-1?this.vectorToNum(this.colors[e]).toString(16):this.vectorToNum(this.vectorAdd(this.colors[e],this.vectorMult(this.vectorSubtract(this.colors[e+1],this.colors[e]),a/c[e]))).toString(16);g.length<6;)g="0"+g;return"#"+g},ColorScale.rgbToArray=function(a){return a=a.substr(1),[parseInt(a.substr(0,2),16),parseInt(a.substr(2,2),16),parseInt(a.substr(4,2),16)]},ColorScale.prototype.setColors=function(a){for(var b=0;b<a.length;b++)a[b]=ColorScale.rgbToArray(a[b]);this.colors=a},ColorScale.prototype.setMax=function(a){this.clearMaxValue=a,"function"==typeof this.normalize?this.maxValue=this.normalize(a):this.maxValue=a},ColorScale.prototype.setMin=function(a){this.clearMinValue=a,"function"==typeof this.normalize?this.minValue=this.normalize(a):this.minValue=a},ColorScale.prototype.setNormalizeFunction=function(a){"polynomial"===a?this.normalize=function(a){return Math.pow(a,.2)}:"linear"===a?delete this.normalize:this.normalize=a,this.setMin(this.clearMinValue),this.setMax(this.clearMaxValue)},ColorScale.prototype.vectorAdd=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]+b[d];return c},ColorScale.prototype.vectorLength=function(a){for(var b=0,c=0;c<a.length;c++)b+=a[c]*a[c];return Math.sqrt(b)},ColorScale.prototype.vectorMult=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]*b;return c},ColorScale.prototype.vectorSubtract=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]-b[d];return c},ColorScale.prototype.vectorToNum=function(a){for(var b=0,c=0;c<a.length;c++)b+=Math.round(a[c])*Math.pow(256,a.length-c-1);return b},JQVMap.prototype.applyTransform=function(){var a,b,c,d;this.defaultWidth*this.scale<=this.width?(a=(this.width-this.defaultWidth*this.scale)/(2*this.scale),c=(this.width-this.defaultWidth*this.scale)/(2*this.scale)):(a=0,c=(this.width-this.defaultWidth*this.scale)/this.scale),this.defaultHeight*this.scale<=this.height?(b=(this.height-this.defaultHeight*this.scale)/(2*this.scale),d=(this.height-this.defaultHeight*this.scale)/(2*this.scale)):(b=0,d=(this.height-this.defaultHeight*this.scale)/this.scale),this.transY>b?this.transY=b:this.transY<d&&(this.transY=d),this.transX>a?this.transX=a:this.transX<c&&(this.transX=c),this.canvas.applyTransformParams(this.scale,this.transX,this.transY)},JQVMap.prototype.bindZoomButtons=function(){var a=this;this.container.find(".jqvmap-zoomin").click(function(){a.zoomIn()}),this.container.find(".jqvmap-zoomout").click(function(){a.zoomOut()})},JQVMap.prototype.deselect=function(a,b){if(a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],this.isSelected(a))this.selectedRegions.splice(this.selectIndex(a),1),jQuery(this.container).trigger("regionDeselect.jqvmap",[a]),b.currentFillColor=b.getOriginalFill(),b.setFill(b.getOriginalFill());else for(var c in this.countries)this.selectedRegions.splice(this.selectedRegions.indexOf(c),1),this.countries[c].currentFillColor=this.color,this.countries[c].setFill(this.color)},JQVMap.prototype.getCountryId=function(a){return"jqvmap"+this.index+"_"+a},JQVMap.prototype.getPin=function(a){var b=jQuery("#"+this.getPinId(a));return b.html()},JQVMap.prototype.getPinId=function(a){return this.getCountryId(a)+"_pin"},JQVMap.prototype.getPins=function(){var a=this.container.find(".jqvmap-pin"),b={};return jQuery.each(a,function(a,c){c=jQuery(c);var d=c.attr("for").toLowerCase(),e=c.html();b[d]=e}),JSON.stringify(b)},JQVMap.prototype.highlight=function(a,b){b=b||jQuery("#"+this.getCountryId(a))[0],this.hoverOpacity?b.setOpacity(this.hoverOpacity):this.hoverColors&&a in this.hoverColors?(b.currentFillColor=b.getFill()+"",b.setFill(this.hoverColors[a])):this.hoverColor&&(b.currentFillColor=b.getFill()+"",b.setFill(this.hoverColor))},JQVMap.prototype.isSelected=function(a){return this.selectIndex(a)>=0},JQVMap.prototype.makeDraggable=function(){var a,b,c=!1,d=this;d.isMoving=!1,d.isMovingTimeout=!1;var e,f,g,h,i,j,k;this.container.mousemove(function(e){return c&&(d.transX-=(a-e.pageX)/d.scale,d.transY-=(b-e.pageY)/d.scale,d.applyTransform(),a=e.pageX,b=e.pageY,d.isMoving=!0,d.isMovingTimeout&&clearTimeout(d.isMovingTimeout),d.container.trigger("drag")),!1}).mousedown(function(d){return c=!0,a=d.pageX,b=d.pageY,!1}).mouseup(function(){return c=!1,clearTimeout(d.isMovingTimeout),d.isMovingTimeout=setTimeout(function(){d.isMoving=!1},100),!1}).mouseout(function(){return c&&d.isMoving?(clearTimeout(d.isMovingTimeout),d.isMovingTimeout=setTimeout(function(){c=!1,d.isMoving=!1},100),!1):void 0}),jQuery(this.container).bind("touchmove",function(a){var b,c,l,m,n=a.originalEvent.touches;if(1===n.length){if(1===e){if(j===n[0].pageX&&k===n[0].pageY)return;l=d.transX,m=d.transY,d.transX-=(j-n[0].pageX)/d.scale,d.transY-=(k-n[0].pageY)/d.scale,d.applyTransform(),(l!==d.transX||m!==d.transY)&&a.preventDefault(),d.isMoving=!0,d.isMovingTimeout&&clearTimeout(d.isMovingTimeout)}j=n[0].pageX,k=n[0].pageY}else 2===n.length&&(2===e?(c=Math.sqrt(Math.pow(n[0].pageX-n[1].pageX,2)+Math.pow(n[0].pageY-n[1].pageY,2))/h,d.setScale(i*c,f,g),a.preventDefault()):(b=jQuery(d.container).offset(),f=n[0].pageX>n[1].pageX?n[1].pageX+(n[0].pageX-n[1].pageX)/2:n[0].pageX+(n[1].pageX-n[0].pageX)/2,g=n[0].pageY>n[1].pageY?n[1].pageY+(n[0].pageY-n[1].pageY)/2:n[0].pageY+(n[1].pageY-n[0].pageY)/2,f-=b.left,g-=b.top,i=d.scale,h=Math.sqrt(Math.pow(n[0].pageX-n[1].pageX,2)+Math.pow(n[0].pageY-n[1].pageY,2))));e=n.length}),jQuery(this.container).bind("touchstart",function(){e=0}),jQuery(this.container).bind("touchend",function(){e=0})},JQVMap.prototype.placePins=function(a,b){var c=this;if((!b||"content"!==b&&"id"!==b)&&(b="content"),"content"===b?jQuery.each(a,function(a,b){if(0!==jQuery("#"+c.getCountryId(a)).length){var d=c.getPinId(a),e=jQuery("#"+d);e.length>0&&e.remove(),c.container.append('<div id="'+d+'" for="'+a+'" class="jqvmap-pin" style="position:absolute">'+b+"</div>")}}):jQuery.each(a,function(a,b){if(0!==jQuery("#"+c.getCountryId(a)).length){var d=c.getPinId(a),e=jQuery("#"+d);e.length>0&&e.remove(),c.container.append('<div id="'+d+'" for="'+a+'" class="jqvmap-pin" style="position:absolute"></div>'),e.append(jQuery("#"+b))}}),this.positionPins(),!this.pinHandlers){this.pinHandlers=!0;var d=function(){c.positionPins()};this.container.bind("zoomIn",d).bind("zoomOut",d).bind("drag",d)}},JQVMap.prototype.positionPins=function(){var a=this,b=this.container.find(".jqvmap-pin");jQuery.each(b,function(b,c){c=jQuery(c);var d=a.getCountryId(c.attr("for").toLowerCase()),e=jQuery("#"+d),f=e[0].getBBox(),g=a.scale,h=a.canvas.rootGroup.getBoundingClientRect(),i=a.container[0].getBoundingClientRect(),j={left:h.left-i.left,top:h.top-i.top},k=f.x*g+f.width*g/2,l=f.y*g+f.height*g/2;c.css({left:j.left+k-c.width()/2,top:j.top+l-c.height()/2})})},JQVMap.prototype.removePin=function(a){a=a.toLowerCase(),jQuery("#"+this.getPinId(a)).remove()},JQVMap.prototype.removePins=function(){this.container.find(".jqvmap-pin").remove()},JQVMap.prototype.reset=function(){for(var a in this.countries)this.countries[a].setFill(this.color);this.scale=this.baseScale,this.transX=this.baseTransX,this.transY=this.baseTransY,this.applyTransform()},JQVMap.prototype.resize=function(){var a=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/a,this.transX*=this.baseScale/a,this.transY*=this.baseScale/a},JQVMap.prototype.select=function(a,b){a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],this.isSelected(a)||(this.multiSelectRegion?this.selectedRegions.push(a):this.selectedRegions=[a],jQuery(this.container).trigger("regionSelect.jqvmap",[a]),this.selectedColor&&b&&(b.currentFillColor=this.selectedColor,b.setFill(this.selectedColor)))},JQVMap.prototype.selectIndex=function(a){a=a.toLowerCase();for(var b=0;b<this.selectedRegions.length;b++)if(a===this.selectedRegions[b])return b;return-1},JQVMap.prototype.setBackgroundColor=function(a){this.container.css("background-color",a)},JQVMap.prototype.setColors=function(a,b){if("string"==typeof a)this.countries[a].setFill(b),this.countries[a].setAttribute("original",b);else{var c=a;for(var d in c)this.countries[d]&&(this.countries[d].setFill(c[d]),this.countries[d].setAttribute("original",c[d]))}},JQVMap.prototype.setNormalizeFunction=function(a){this.colorScale.setNormalizeFunction(a),this.values&&this.setValues(this.values)},JQVMap.prototype.setScale=function(a){this.scale=a,this.applyTransform()},JQVMap.prototype.setScaleColors=function(a){this.colorScale.setColors(a),this.values&&this.setValues(this.values)},JQVMap.prototype.setValues=function(a){var b,c=0,d=Number.MAX_VALUE;for(var e in a)e=e.toLowerCase(),b=parseFloat(a[e]),isNaN(b)||(b>c&&(c=a[e]),d>b&&(d=b));d===c&&c++,this.colorScale.setMin(d),this.colorScale.setMax(c);var f={};for(e in a)e=e.toLowerCase(),b=parseFloat(a[e]),f[e]=isNaN(b)?this.color:this.colorScale.getColor(b);this.setColors(f),this.values=a},JQVMap.prototype.unhighlight=function(a,b){a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],b.setOpacity(1),b.currentFillColor&&b.setFill(b.currentFillColor)},JQVMap.prototype.zoomIn=function(){var a=this,b=(jQuery("#zoom").innerHeight()-12-30-6-7-6)/(this.zoomMaxStep-this.zoomCurStep);if(a.zoomCurStep<a.zoomMaxStep){a.transX-=(a.width/a.scale-a.width/(a.scale*a.zoomStep))/2,a.transY-=(a.height/a.scale-a.height/(a.scale*a.zoomStep))/2,a.setScale(a.scale*a.zoomStep),a.zoomCurStep++;var c=jQuery("#zoomSlider");c.css("top",parseInt(c.css("top"),10)-b),a.container.trigger("zoomIn")}},JQVMap.prototype.zoomOut=function(){var a=this,b=(jQuery("#zoom").innerHeight()-12-30-6-7-6)/(this.zoomMaxStep-this.zoomCurStep);if(a.zoomCurStep>1){a.transX+=(a.width/(a.scale/a.zoomStep)-a.width/a.scale)/2,a.transY+=(a.height/(a.scale/a.zoomStep)-a.height/a.scale)/2,a.setScale(a.scale/a.zoomStep),a.zoomCurStep--;var c=jQuery("#zoomSlider");c.css("top",parseInt(c.css("top"),10)+b),a.container.trigger("zoomOut")}},VectorCanvas.prototype.applyTransformParams=function(a,b,c){"svg"===this.mode?this.rootGroup.setAttribute("transform","scale("+a+") translate("+b+", "+c+")"):(this.rootGroup.coordorigin=this.width-b+","+(this.height-c),this.rootGroup.coordsize=this.width/a+","+this.height/a)},VectorCanvas.prototype.createGroup=function(a){var b;return"svg"===this.mode?b=this.createSvgNode("g"):(b=this.createVmlNode("group"),b.style.width=this.width+"px",b.style.height=this.height+"px",b.style.left="0px",b.style.top="0px",b.coordorigin="0 0",b.coordsize=this.width+" "+this.height),a&&(this.rootGroup=b),b},VectorCanvas.prototype.createPath=function(a){var b;if("svg"===this.mode)b=this.createSvgNode("path"),b.setAttribute("d",a.path),null!==this.params.borderColor&&b.setAttribute("stroke",this.params.borderColor),this.params.borderWidth>0&&(b.setAttribute("stroke-width",this.params.borderWidth),b.setAttribute("stroke-linecap","round"),b.setAttribute("stroke-linejoin","round")),this.params.borderOpacity>0&&b.setAttribute("stroke-opacity",this.params.borderOpacity),b.setFill=function(a){this.setAttribute("fill",a),null===this.getAttribute("original")&&this.setAttribute("original",a)},b.getFill=function(){return this.getAttribute("fill")},b.getOriginalFill=function(){return this.getAttribute("original")},b.setOpacity=function(a){this.setAttribute("fill-opacity",a)};else{b=this.createVmlNode("shape"),b.coordorigin="0 0",b.coordsize=this.width+" "+this.height,b.style.width=this.width+"px",b.style.height=this.height+"px",b.fillcolor=JQVMap.defaultFillColor,b.stroked=!1,b.path=VectorCanvas.pathSvgToVml(a.path);var c=this.createVmlNode("skew");c.on=!0,c.matrix="0.01,0,0,0.01,0,0",c.offset="0,0",b.appendChild(c);var d=this.createVmlNode("fill");b.appendChild(d),b.setFill=function(a){this.getElementsByTagName("fill")[0].color=a,null===this.getAttribute("original")&&this.setAttribute("original",a)},b.getFill=function(){return this.getElementsByTagName("fill")[0].color},b.getOriginalFill=function(){return this.getAttribute("original")},b.setOpacity=function(a){this.getElementsByTagName("fill")[0].opacity=parseInt(100*a,10)+"%"}}return b},VectorCanvas.prototype.pathSvgToVml=function(a){var b,c,d="",e=0,f=0;return a.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g,function(a,g,h){h=h.replace(/(\d)-/g,"$1,-").replace(/\s+/g,",").split(","),h[0]||h.shift();for(var i=0,j=h.length;j>i;i++)h[i]=Math.round(100*h[i]);switch(g){case"m":e+=h[0],f+=h[1],d="t"+h.join(",");break;case"M":e=h[0],f=h[1],d="m"+h.join(",");break;case"l":e+=h[0],f+=h[1],d="r"+h.join(",");break;case"L":e=h[0],f=h[1],d="l"+h.join(",");break;case"h":e+=h[0],d="r"+h[0]+",0";break;case"H":e=h[0],d="l"+e+","+f;break;case"v":f+=h[0],d="r0,"+h[0];break;case"V":f=h[0],d="l"+e+","+f;break;case"c":b=e+h[h.length-4],c=f+h[h.length-3],e+=h[h.length-2],f+=h[h.length-1],d="v"+h.join(",");break;case"C":b=h[h.length-4],c=h[h.length-3],e=h[h.length-2],f=h[h.length-1],d="c"+h.join(",");break;case"s":h.unshift(f-c),h.unshift(e-b),b=e+h[h.length-4],c=f+h[h.length-3],e+=h[h.length-2],f+=h[h.length-1],d="v"+h.join(",");break;case"S":h.unshift(f+f-c),h.unshift(e+e-b),b=h[h.length-4],c=h[h.length-3],e=h[h.length-2],f=h[h.length-1],d="c"+h.join(",")}return d}).replace(/z/g,"")},VectorCanvas.prototype.setSize=function(a,b){if("svg"===this.mode)this.canvas.setAttribute("width",a),this.canvas.setAttribute("height",b);else if(this.canvas.style.width=a+"px",this.canvas.style.height=b+"px",this.canvas.coordsize=a+" "+b,this.canvas.coordorigin="0 0",this.rootGroup){for(var c=this.rootGroup.getElementsByTagName("shape"),d=0,e=c.length;e>d;d++)c[d].coordsize=a+" "+b,c[d].style.width=a+"px",c[d].style.height=b+"px";this.rootGroup.coordsize=a+" "+b,this.rootGroup.style.width=a+"px",this.rootGroup.style.height=b+"px"}this.width=a,this.height=b};
Index: public/vendors/vmap/jqvmap.css
===================================================================
--- public/vendors/vmap/jqvmap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/jqvmap.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,50 @@
+.jqvmap-label
+{
+	position: absolute;
+	display: none;
+	-webkit-border-radius: 3px;
+	-moz-border-radius: 3px;
+	border-radius: 3px;
+	background: #292929;
+	color: white;
+	font-family: sans-serif, Verdana;
+	font-size: smaller;
+	padding: 3px;
+  pointer-events:none;
+}
+.jqvmap-pin {
+  pointer-events:none;
+}
+.jqvmap-zoomin, .jqvmap-zoomout
+{
+	position: absolute;
+	left: 10px;
+	-webkit-border-radius: 3px;
+	-moz-border-radius: 3px;
+	border-radius: 3px;
+	background: #000000;
+	padding: 3px;
+	color: white;
+	width: 10px;
+	height: 10px;
+	cursor: pointer;
+	line-height: 10px;
+	text-align: center;
+}
+.jqvmap-zoomin
+{
+	top: 10px;
+}
+.jqvmap-zoomout
+{
+	top: 30px;
+}
+.jqvmap-region
+{
+  cursor: pointer;
+}
+.jqvmap-ajax_response
+{
+  width: 100%;
+  height: 500px;
+}
Index: public/vendors/vmap/jqvmap.min.css
===================================================================
--- public/vendors/vmap/jqvmap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/jqvmap.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+.jqvmap-label,.jqvmap-pin{pointer-events:none}.jqvmap-label{position:absolute;display:none;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#292929;color:#fff;font-family:sans-serif,Verdana;font-size:smaller;padding:3px}.jqvmap-zoomin,.jqvmap-zoomout{position:absolute;left:10px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#000;padding:3px;color:#fff;width:10px;height:10px;cursor:pointer;line-height:10px;text-align:center}.jqvmap-zoomin{top:10px}.jqvmap-zoomout{top:30px}.jqvmap-region{cursor:pointer}.jqvmap-ajax_response{width:100%;height:500px}
Index: public/vendors/vmap/maps/continents/jquery.vmap.africa.js
===================================================================
--- public/vendors/vmap/maps/continents/jquery.vmap.africa.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/continents/jquery.vmap.africa.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'africa_en', {"width":950,"height":550,"paths":{"dz":{"path":"m 419.83634,8.1546547 -9.8215,-3.2979062 -40.87478,7.6790665 -8.90675,6.764318 5.44034,28.092384 -16.24881,0.649952 -9.77336,15.719217 -23.27792,5.584776 0.0722,11.434346 76.6703,58.616072 13.07126,1.10732 43.59495,-34.06231 -4.35709,-5.48849 -8.18458,-1.107324 -4.91075,-8.232729 V 57.551031 l -3.27383,-3.297906 0.55366,-8.786393 -8.71418,-8.786392 -1.08325,-9.340056 3.80342,-2.744243 -1.63691,-9.893719 -2.14244,-6.5476673 0,0 z","name":"Algeria"},"ma":{"path":"m 358.23531,19.68529 h -27.80352 l -5.44034,12.084299 -12.54167,6.042149 -10.3511,28.020167 -20.17259,12.084298 -28.33311,46.676207 27.80352,-0.55366 1.08325,-13.72122 h 7.07726 V 91.637419 h 24.52968 l 0.55367,-24.168597 23.44642,-5.488487 9.82151,-15.935868 15.26184,-0.553663 -4.93482,-25.805514 0,0 z","name":"Morocco"},"mr":{"path":"m 253.78556,126.51819 5.24776,6.86061 -1.08325,29.65708 7.63092,-5.48848 5.44034,-1.10733 7.63093,2.74425 8.71417,12.08429 8.18459,-5.48848 39.79152,-0.55367 -9.8215,-66.463638 10.54367,-0.04815 -19.643,-15.045192 0.0241,9.773357 -24.8667,0.02407 -0.12036,18.656033 -7.14947,-0.0241 -0.91475,13.76936 -29.60894,0.64995 0,0 z","name":"Mauritania"},"sn":{"path":"m 270.94912,158.2455 -4.59781,1.13139 -9.48449,6.90876 -2.16651,3.85157 -0.67403,3.82749 3.44234,2.47945 11.67507,-0.14443 7.51056,-2.02208 0.84253,3.68307 -0.69809,4.88667 0.1685,0.0722 -18.65604,0.28887 3.00904,7.22169 1.63692,-4.4293 22.36317,1.87764 0.14444,0.14443 2.33501,0.0963 7.14948,0.28887 0.28887,-4.21266 -8.64196,-10.37516 -9.62893,-13.09534 -6.01807,-2.47944 z","name":"Senegal"},"gm":{"path":"m 258.57595,178.70696 -0.31294,2.67202 16.65804,-0.24072 0.84253,-2.47945 -0.36109,-2.50352 -4.79039,1.94986 -12.03615,0.60181 0,0 z","name":"Gambia"},"gw":{"path":"m 262.69231,193.60772 3.37013,6.66802 9.46042,-8.13644 0.0963,-2.50352 -11.14547,-1.61284 -1.78136,5.58478 0,0 z","name":"Guinea-Bissau"},"gn":{"path":"m 267.07347,201.81637 7.31799,11.26584 9.53263,-8.28087 9.77336,-0.4333 8.13644,10.80846 6.90875,4.54967 2.59981,-5.05518 2.31094,-1.29991 -0.16851,-11.12141 -4.59781,-13.19162 -14.10637,1.5647 -17.45242,-1.39619 -0.0963,4.47744 -10.15852,8.11237 0,0 z","name":"Guinea"},"sl":{"path":"m 275.52286,214.3099 13.60085,13.14348 9.70114,-11.77136 -6.06622,-9.50856 -8.35309,0.84253 -8.88268,7.29391 0,0 z","name":"Sierra Leone"},"lr":{"path":"m 290.54398,228.89772 26.43139,17.66907 -0.62588,-13.3842 -7.99201,-9.41227 -7.79942,-6.90875 -10.01408,12.03615 0,0 z","name":"Liberia"},"ci":{"path":"m 319.19002,247.09638 10.30295,-7.29391 12.80647,-2.23872 13.07126,2.81646 -6.66803,-10.0863 -1.94986,-6.16251 1.94986,-18.22274 -11.67507,0.55367 -5.29591,-5.05519 -11.1214,0.28887 -5.29591,0.84253 0.55366,12.32502 -2.79238,1.1314 -3.34606,6.16251 8.61789,10.0863 0.84253,14.85261 0,0 z","name":"Cote d'Ivoire"},"ml":{"path":"m 288.83484,172.68888 7.41427,-5.07926 41.21179,-0.24072 -9.53263,-66.29514 10.88068,-0.31294 52.64614,40.17669 7.07726,1.01103 -2.67203,22.3391 -33.09942,3.00904 -25.54072,19.06527 -4.64595,13.04719 -17.7413,0.74624 -4.52559,-13.02312 -13.60085,0.9629 0.52959,-4.2608 -8.40124,-11.14548 0,0 z","name":"Mali"},"bf":{"path":"m 363.77194,168.9336 8.76232,-0.6981 14.37116,20.31703 -13.33605,10.06223 -9.653,-2.47945 -12.97497,0.1685 -2.09429,7.60685 -10.88069,0.52959 -2.98496,-4.06822 3.85157,-12.37316 24.93891,-19.06527 0,0 z","name":"Burkina Faso"},"ne":{"path":"m 388.56641,187.51742 6.13844,-0.14443 5.53663,-8.30495 9.29191,-1.66099 9.89372,6.04215 21.11142,0.60181 16.32102,-6.64396 6.13844,-5.27183 0.45737,-6.93283 11.38621,-11.48249 3.00903,-25.34814 -7.48648,-15.69514 -19.16156,-4.67003 -44.34119,34.56783 -6.28287,-0.60181 -2.6961,24.0001 -22.62797,2.26279 13.31198,19.28192 0,0 z","name":"Niger"},"gh":{"path":"m 348.72674,223.74625 2.6961,6.33101 7.02912,11.02512 3.89971,-0.14443 10.63996,-6.04215 -0.74624,-34.39933 -8.23273,-2.40723 -11.53064,0.31294 -3.75528,25.32407 0,0 z","name":"Ghana"},"tg":{"path":"m 374.91741,233.85661 6.45138,-3.77935 -0.14443,-24.91484 -4.18858,-6.78839 -2.6961,2.2628 0.57773,33.21978 0,0 z","name":"Togo"},"bj":{"path":"m 383.31865,229.61989 h 5.10333 l 0.28887,-14.49153 6.45138,-9.36413 -0.28887,-16.29695 -5.84957,-0.14444 -10.03816,7.84758 4.18859,7.992 0.14443,24.45747 0,0 z","name":"Benin"},"ng":{"path":"m 390.20333,229.33102 9.43635,0.45737 11.3862,12.68611 5.53663,1.51656 4.33301,-2.11837 6.59582,-0.91474 2.23872,-9.19563 8.97897,-5.89771 9.72521,-0.45738 17.81351,-32.76241 -0.28887,-7.3902 -8.23273,-6.33101 -16.46545,7.24576 -22.02617,-0.31294 -10.49552,-6.64395 -7.48649,1.66098 -3.89971,6.7884 -0.28887,19.16155 -6.28287,8.90676 -0.57774,13.60085 0,0 z","name":"Nigeria"},"tn":{"path":"m 422.31579,7.7694978 13.31199,-5.3681247 4.38116,2.8405323 0.1685,3.4664124 -2.04614,2.6720262 0.31294,4.742245 2.04614,1.107326 v 8.521597 l -2.35908,3.947858 0.31294,2.527593 8.93082,3.153472 -7.19762,11.193623 -2.81646,-0.168506 -0.48144,9.003043 -3.1294,0.481446 -2.67203,-2.359086 0.62588,-9.147477 -8.76232,-8.521597 -1.10733,-7.414271 4.23673,-3.321978 -3.75528,-17.3561342 0,0 z","name":"Tunisia"},"ly":{"path":"m 434.68896,57.599175 3.75528,-0.62588 1.10732,-8.666031 h 1.87764 l 7.67907,-12.613889 18.9449,5.512559 5.17555,8.04015 18.63197,8.521597 9.70114,-4.092292 -0.93882,-4.092292 -4.23673,-4.092293 0.48145,-2.840532 6.88468,-5.825498 h 13.62492 l 5.17555,6.932824 10.9529,1.588773 1.42027,88.802739 -8.13644,-0.31294 -49.15566,-25.56479 -5.31998,3.00904 -20.19666,-5.05518 -5.48849,-7.245767 -7.99201,-1.107326 -4.06822,-7.245765 0.12037,-33.027207 0,0 z","name":"Libya"},"eg":{"path":"m 535.50378,45.635238 6.42731,0.168506 12.5176,3.466413 5.94586,0.168506 7.36612,-6.162511 h 3.44234 l 6.2588,3.466412 h 7.91979 l 1.42027,-0.09629 5.00704,14.39524 1.42027,4.645956 1.32397,6.956897 -2.35908,1.733206 -4.06822,-2.046146 -4.6941,-15.309988 -4.23673,-0.31294 -0.31294,5.199618 2.81646,9.003044 22.55575,27.923877 0.48145,11.988012 -6.57174,7.58278 -61.7214,-0.6981 -0.93882,-72.072493 0,0 z","name":"Egypt"},"td":{"path":"m 465.35708,173.07404 0.31294,-7.10133 11.41027,-11.09734 3.05718,-27.24985 -7.60685,-14.53967 5.31998,-2.72018 51.51474,26.84063 -0.31294,26.3351 -9.07526,7.72721 v 13.57679 l 5.94586,11.50656 h -10.49552 l -17.38021,17.18763 -0.45737,5.19962 -12.83054,-0.16851 -0.16851,2.35909 -7.31798,-0.9629 -5.00704,-9.46041 -3.75528,-1.85357 0.48144,-2.88868 4.71818,-3.61085 v -16.89876 l -6.5236,-1.01103 -7.87164,-5.84957 6.04215,-5.31998 0,0 0,0 z","name":"Chad"},"sd":{"path":"m 531.21891,164.48022 0.4333,-28.47754 5.92179,0.16851 -0.67402,-15.81551 62.10655,0.55367 8.88268,-8.9549 19.16156,30.64404 -10.49553,12.37317 v 18.89676 l -16.5136,35.50666 -5.68107,2.50352 1.80543,9.89372 h 7.07726 l 9.60485,13.93786 -7.70314,0.98697 -1.97393,3.58677 -0.19258,5.17555 -23.10941,-0.40923 -2.35909,-3.58678 -16.15252,-0.91474 -29.65708,-30.52369 2.96089,-1.78135 0.79439,-7.17355 -7.10133,-4.18858 -6.47545,-12.7824 0.36108,-11.89172 8.97897,-7.72721 0,0 z","name":"Sudan"},"cm":{"path":"m 429.32083,241.15052 7.75128,7.12541 -0.55366,11.02511 42.5117,-0.98696 3.46641,-3.89971 -12.18059,-13.11941 -1.80542,-4.74225 7.75128,-14.5156 -5.27183,-9.62892 -4.42931,-2.38316 v -4.88668 l 5.1274,-3.34605 0.28887,-15.2137 -4.06822,-0.45737 -0.0722,7.992 -17.86165,33.34015 -10.92883,0.55366 -7.48648,5.15148 -2.23873,7.992 0,0 z","name":"Cameroon"},"er":{"path":"m 619.22727,169.94464 -0.60181,-14.17859 9.53263,-11.12141 2.57574,1.97393 4.6941,15.69515 22.53168,16.77839 -4.09229,5.03112 -16.48953,-14.17859 h -18.15052 l 0,0 z","name":"Eritrea"},"dj":{"path":"m 654.78207,186.4101 -1.37212,8.08829 9.53263,-0.14443 0.14443,-11.89172 -3.49048,-2.14244 -4.81446,6.0903 0,0 z","name":"Djibouti"},"et":{"path":"m 601.84706,211.01199 17.52464,-38.99713 17.40428,0.0963 15.43035,13.40828 -1.08325,11.04919 h 11.96393 l 1.22769,6.64396 19.35414,11.57878 11.93986,0.6018 -22.70018,24.38525 -31.17364,9.60485 h -7.72721 l -13.76936,-11.74728 -5.44035,-2.28687 -10.54367,-15.52664 -6.95689,0.0963 -0.81846,-7.1254 5.36812,-1.78136 0,0 z","name":"Ethiopia"},"so":{"path":"m 665.03687,194.8354 9.8215,6.6921 2.91275,-0.14443 24.38525,-8.37716 2.76832,8.93082 -1.94986,7.53464 -5.27184,4.18858 -13.16755,-0.84253 -18.84862,-11.57878 -0.64995,-6.40324 0,0 m 39.06936,-2.38316 10.5196,-4.04414 3.7312,2.23872 -0.40923,9.34006 -9.70114,27.63501 -52.5017,56.23291 -6.09029,-4.18858 -0.40923,-23.7353 7.89571,-9.07526 16.75433,-5.17555 24.57783,-25.94994 6.4273,-5.72921 1.80543,-8.37717 -2.59981,-9.17155 0,0 z","name":"Somalia"},"cf":{"path":"m 472.26583,240.59686 11.21769,12.13244 4.42931,-5.72921 7.05318,0.28887 1.51656,-5.58477 6.93282,-4.33302 14.39525,9.91779 8.30494,-8.23273 32.23282,1.42027 -29.8978,-30.8607 4.02007,-2.50352 0.55366,-5.44034 -6.78839,-3.20162 h -9.96593 l -16.05623,15.9118 -0.55367,6.54767 -12.73425,-0.40923 -0.40923,2.79238 -8.30494,-0.84253 -7.48649,14.22674 1.54063,3.89971 0,0 z","name":"Central African Republic"},"gq":{"path":"m 426.96174,248.68516 -1.10732,4.74224 3.32198,1.80542 3.17754,-2.38315 -1.10732,-4.88668 -4.28488,0.72217 0,0 m 9.99001,12.71017 -0.14443,3.34606 10.92883,0.55366 -0.14444,-3.77935 -10.63996,-0.12037 0,0 z","name":"Equatorial Guinea"},"ga":{"path":"m 449.9508,261.2509 -0.28887,5.99401 -13.57678,-0.28887 -8.30495,16.05623 19.52264,21.35213 4.83854,-4.04414 -0.14444,-4.18858 -3.32197,-1.54063 v -2.93682 l 7.48648,-4.74225 6.64396,5.03111 7.34206,0.14444 -0.14444,-25.25185 -11.62692,-0.55367 -0.14444,-5.2959 -8.28087,0.26479 0,0 z","name":"Gabon"},"cg":{"path":"m 461.04813,260.98611 -0.14443,3.49048 11.50656,0.28887 0.40923,29.87373 -10.5196,-0.28887 -6.09029,-4.74224 -4.71817,2.64795 -0.21665,1.32398 2.4313,1.17954 0.6981,6.13844 -6.49953,5.58478 1.3962,2.93682 7.19762,-5.58478 h 3.46641 l 1.10733,3.34605 4.57373,1.94986 14.68411,-12.42131 -0.28887,-9.07526 3.05719,-7.3902 9.41227,-6.98097 2.52759,-23.61493 -6.6921,0.0241 -7.75128,10.61589 -19.54672,0.6981 0,0 z","name":"Congo"},"ao":{"path":"m 450.33596,310.83986 4.18858,5.44034 5.41627,-5.1274 -1.58878,-5.31998 -1.34804,-0.0963 -6.66803,5.10333 0,0 m 4.98296,8.37716 8.20866,30.64405 -0.19258,9.67706 -12.01208,12.90276 -1.80542,20.96698 46.21883,0.40923 15.02112,5.44034 12.39724,-1.61284 -7.22169,-9.05119 0.0241,-25.85366 14.20266,-0.60181 v -10.08629 l -11.53064,-0.48145 -2.31094,-23.87973 -4.8626,0.0722 -2.62389,-2.35909 -2.8646,0.14444 -3.80343,7.36612 H 487.5277 l -3.39419,-3.41827 1.01103,-4.83853 -3.996,-5.84957 -25.82959,0.40923 0,0 z","name":"Angola"},"cd":{"path":"m 457.14842,316.80979 24.81855,-0.4333 5.03111,7.14947 -0.19258,5.27184 1.85357,1.68506 h 12.32502 l 3.53863,-6.9569 h 5.03111 l 2.04615,2.07022 6.90875,-0.19258 2.04615,24.26489 11.93986,0.38516 v 1.87764 l 32.08839,14.46745 1.49248,2.81646 h 6.71618 l -0.74625,-10.15851 -12.13244,-5.8255 0.74624,-7.70314 5.22369,-12.22873 11.93987,-0.38516 -10.2548,-34.03824 0.19257,-14.46746 16.22474,-25.37221 0.19258,-3.5627 -2.4313,-1.32398 0.0963,-6.88468 -2.96089,-0.2648 -2.98497,-3.80342 -48.98714,-2.21465 -8.97897,8.73825 -14.70818,-9.67707 -5.17555,3.17754 -3.75528,31.60694 -9.29191,7.17355 -2.79239,6.35509 0.50552,9.41227 -16.75433,13.69715 -4.45337,-2.02208 0.6018,2.62388 -4.95889,4.74225 0,0 z","name":"Congo"},"rw":{"path":"m 573.75468,278.75147 6.76432,6.23473 -0.28887,6.66803 -10.49553,0.21665 v -7.36613 l 4.02008,-5.75328 0,0 z","name":"Rwanda"},"bi":{"path":"m 569.87904,293.9411 10.27887,-0.21666 -2.67202,9.00305 -2.59981,2.26279 h -3.17755 l -2.26279,-6.09029 0.4333,-4.95889 0,0 z","name":"Burundi"},"ug":{"path":"m 574.91015,276.80161 7.29391,6.83654 4.57374,-2.91275 12.37316,-2.02208 2.11837,0.21666 0.79438,-4.6941 6.98097,-14.68411 -5.87364,-12.22874 -19.0412,0.12037 -0.12036,5.03111 2.55167,2.45537 -0.38516,5.03112 -11.26584,16.85061 0,0 z","name":"Uganda"},"ke":{"path":"m 605.07275,246.54272 6.40324,12.49353 -7.67907,16.10437 -1.01104,4.88668 38.34719,23.71122 11.89172,-18.68011 -6.01808,-4.88667 -0.12036,-24.6019 7.53463,-8.23273 -12.01208,3.996 -9.07526,0.12036 -14.20266,-11.98801 -4.47745,-1.92578 -8.30495,0.77031 -1.46841,2.45538 0.19258,5.77735 0,0 z","name":"Kenya"},"tz":{"path":"m 604.44687,354.62738 42.05432,-5.15147 -9.46041,-18.29495 -0.50552,-17.52464 3.05718,-8.37717 -40.00817,-25.13149 -12.54168,2.07022 -4.35708,3.22569 -0.38516,7.34205 -2.81646,10.18259 -2.93682,3.49049 -4.21266,0.38515 8.06423,27.94795 13.16755,6.18659 9.07526,0.26479 1.80542,13.3842 0,0 z","name":"Tanzania"},"zm":{"path":"m 517.73842,386.59541 7.63092,10.59181 11.8195,0.72217 4.18858,2.31095 12.37317,0.14443 10.66403,-14.9489 29.80152,-13.33606 2.59981,-11.74729 -3.46641,-16.82654 -15.55071,-8.85861 -10.37517,0.72217 -5.17554,11.45842 0.14443,5.22369 12.22873,5.94586 0.72217,12.92683 -10.5196,0.57773 -2.59981,-4.35709 -29.22378,-12.46945 -0.8666,9.58078 -13.81751,0.4333 -0.57773,21.9058 0,0 z","name":"Zambia"},"mw":{"path":"m 596.23821,373.83709 7.48649,7.8235 -0.14443,10.01408 1.44434,4.21265 9.94186,-10.73625 -1.15547,-13.649 -5.31998,-4.06822 -4.74225,-23.95194 -8.20865,-0.28887 3.73121,17.25984 -3.03312,13.38421 0,0 z","name":"Malawi"},"mz":{"path":"m 581.8189,455.39407 6.47545,5.36812 15.26185,-9.29191 2.45537,-13.79343 v -22.77241 l 24.48154,-20.02816 4.18858,0.14444 14.82854,-14.22674 -2.31094,-29.32007 -39.31008,4.9589 1.15547,8.85861 6.76432,5.22369 1.58877,15.95994 -13.23977,12.92683 -3.17754,-7.24577 0.57773,-9.58078 -7.63092,-8.28087 -18.72825,8.71417 17.42835,8.85861 0.57773,25.82959 -11.53063,17.11541 0.14443,20.58183 0,0 z","name":"Mozambique"},"zw":{"path":"m 542.07552,404.89036 21.59286,24.38525 16.56175,4.21265 11.09733,-17.40427 -0.8666,-23.06128 -18.00609,-9.29191 -6.76431,3.05719 -10.0863,15.3822 -13.96194,-0.14443 0.4333,2.8646 0,0 z","name":"Zimbabwe"},"na":{"path":"m 474.40826,476.28883 8.06423,0.57773 4.74224,4.79039 11.24177,0.14444 2.74424,-31.91988 v -20.89477 l 7.19762,-1.44434 2.74425,-21.9058 18.29495,-0.57773 6.47545,-5.36813 -10.9529,-0.4333 -14.82854,2.02208 -15.98401,-5.80143 h -44.91893 l 1.15547,12.75832 14.97298,22.05024 -2.59981,11.31398 0.14443,5.94586 11.50656,28.74234 0,0 z","name":"Namibia"},"bw":{"path":"m 503.19874,450.45924 5.17555,1.58877 -0.72217,14.80447 5.31998,0.72217 12.22873,-11.02511 14.68411,1.58877 3.89972,-9.86965 18.58382,-16.97098 -22.31503,-25.68515 -0.28887,-4.21265 -2.45538,-0.72217 -6.76431,6.23473 -17.57279,0.4333 -2.45537,21.9058 -6.90876,1.58877 -0.40923,19.61893 0,0 z","name":"Botswana"},"sz":{"path":"m 581.09673,457.12727 -6.04215,1.01104 -2.59981,7.10133 4.62189,4.21265 h 5.60885 l 4.74224,-6.81246 -6.33102,-5.51256 0,0 z","name":"Swaziland"},"ls":{"path":"m 548.69541,484.54563 7.34205,-5.65699 3.46641,0.14443 4.18858,5.22369 -0.4333,5.22369 -7.05318,2.59981 v 2.02208 l -7.77536,-0.43331 -1.87764,-5.65699 2.14244,-3.46641 0,0 z","name":"Lesotho"},"za":{"path":"m 564.94421,432.16429 -19.01712,17.57278 -4.52559,10.85661 -15.06927,-1.87764 -12.54167,11.14548 -8.32902,-0.81846 0.67403,-15.40627 -2.9609,-1.03511 -2.07022,31.51065 -14.78039,-0.14444 -4.45338,-5.24776 -6.5236,-0.0722 5.94586,17.06727 10.61589,10.03815 -7.58278,8.83454 4.91076,11.07326 11.36212,4.33302 9.05119,-7.70314 25.92588,0.14443 1.85357,-2.31094 11.50656,-2.02207 38.92492,-38.75642 -0.14443,-12.20466 -4.16451,5.3922 h -6.23473 l -7.58278,-6.35509 3.85157,-9.58078 6.61989,-1.34805 -0.60181,-19.69115 -14.66004,-3.39419 0,0 z m -9.1234,44.53377 3.63492,-0.14444 5.89771,6.40324 -0.1685,7.41427 -6.90876,3.49048 -0.4333,2.45538 -10.54367,0.12036 -3.2979,-7.94386 3.00903,-5.8255 8.81047,-5.96993 0,0 z","name":"South Africa"},"mg":{"path":"m 704.90061,358.23823 -5.1274,12.18059 -8.78639,15.50256 -15.38221,1.10733 -6.59581,7.75128 1.10733,23.63901 -9.53264,11.07326 1.10733,18.82455 8.06422,9.21969 9.53264,-1.10733 9.53263,-7.02911 -2.19058,-11.07326 21.97802,-38.03425 -4.40523,-4.79039 4.40523,-9.21969 4.76632,1.46841 1.46841,-3.68306 -4.40524,-18.82455 -2.57573,-7.75128 -2.9609,0.74624 0,0 z","name":"Madagascar"}}});
Index: public/vendors/vmap/maps/continents/jquery.vmap.asia.js
===================================================================
--- public/vendors/vmap/maps/continents/jquery.vmap.asia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/continents/jquery.vmap.asia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'asia_en', {"width":950,"height":550,"paths":{"id":{"path":"m 615.27242,460.80117 -3.29462,12.37981 -17.87084,6.03301 -5.34842,-6.27548 -2.59577,0.71313 4.84924,18.71232 7.25958,0.81296 9.6842,3.66545 v 3.66545 l 4.43562,-0.81296 6.46089,-8.94255 v -7.31664 l 3.63692,-7.31663 4.03627,0.81296 -4.84923,-10.16912 -0.74165,-6.54647 -5.66219,0.58476 0,0 m -84.43367,-9.74124 -0.39934,3.25183 9.6842,16.27345 h 2.82396 l 20.18136,33.75921 8.07254,0.81296 4.03627,-11.79505 -6.46088,-4.06479 -1.21231,-6.50368 -36.7258,-31.73393 0,0 m 95.62969,44.98374 3.22331,3.9507 -2.09658,5.93318 v 1.12673 h 4.76366 l 1.68297,-14.83294 1.54034,0.42787 2.79544,13.54932 2.66708,0.71313 2.52445,-5.79056 -2.52445,-8.75714 -2.09658,-3.80807 6.58925,-4.80644 -1.54035,-2.12511 -6.304,4.09332 h -1.68296 l -3.08069,-4.52119 0.98411,-1.98248 5.19153,-2.53872 7.84434,2.3961 2.38183,-0.14263 5.89039,-5.5053 -2.38183,-2.39609 -5.46252,4.23594 h -3.50856 l -5.31989,-2.53871 -3.77955,0.14262 -4.20742,6.77466 -2.66707,11.72373 -1.42625,4.67808 0,0 m 35.17119,-26.5424 -2.66708,6.48941 4.20742,5.5053 h 1.39772 l 1.82559,-3.66545 0.98411,-1.26935 -1.82559,-1.98248 -2.66708,-0.98411 -1.25509,-4.09332 0,0 m 8.27222,21.32235 -5.74777,1.26936 -1.68297,1.83985 1.39772,2.39609 3.77955,-1.41198 2.38183,-1.41198 3.50856,2.82396 1.54034,-1.26935 -2.79544,-3.39447 -2.38182,-0.84148 0,0 m -95.30166,18.35576 -3.92217,2.68134 0.84149,2.25347 12.47964,2.82396 6.304,1.12674 2.66707,2.82396 7.14549,0.5705 3.36593,2.82396 3.08069,-0.71312 2.8097,-2.53871 -5.19153,-2.39609 -4.4784,-3.80808 -11.63816,-2.82396 -13.46375,-2.82397 0,0 m 40.79059,12.27997 -3.08068,1.69723 1.82559,1.98248 4.47841,-1.69723 -3.22332,-1.98248 0,0 m 5.3199,-1.26936 0.55623,2.68134 3.22331,0.84149 1.2551,-1.55461 -1.39772,-2.12511 -3.63692,0.15689 0,0 m 7.71598,7.05991 -3.92217,0.5705 3.50856,2.96659 h 2.79544 l -2.38183,-3.53709 0,0 m 1.11247,-4.66382 -0.84149,1.69723 6.30401,0.98411 4.90628,-2.82396 -2.79544,-0.84149 -4.47841,1.26936 -1.68297,-1.41198 -1.41198,1.12673 0,0 m 57.39207,-40.47681 -5.94744,0.67033 -3.82233,2.79544 1.58313,3.19479 6.47515,1.19804 v 1.19805 l -4.09332,3.32315 1.98248,6.91728 1.98248,0.12836 1.71149,-6.78892 h 3.16626 l 1.32641,6.6463 15.44623,12.77915 0.39935,9.98371 5.2771,5.71924 2.38183,-0.12836 0.52771,-35.25676 -8.97108,-6.24695 -8.45763,5.71924 -3.0379,1.86838 -5.02038,-3.19479 -0.12836,-10.11207 -2.78118,-0.41361 0,0 z","name":"Indonesia"},"ye":{"path":"m 355.61037,425.50163 3.0379,3.39446 4.10758,-2.48167 1.4833,-0.49918 -1.88265,-1.8256 -3.6084,1.06969 -3.13773,0.3423 0,0 m -39.40714,-14.86147 2.0538,6.10433 v 5.9617 l 4.9348,4.4784 34.77184,-14.1626 0.32804,-3.89365 -5.57662,-10.01224 -13.99146,4.46415 -8.02975,7.90139 -9.31338,-5.5053 -5.17727,4.66382 0,0 z","name":"Yemen"},"my":{"path":"m 590.2561,472.95278 4.30725,4.97759 16.51591,-5.71924 3.2661,-12.608 7.35942,-0.52771 6.73188,-4.87776 -8.72862,-6.36105 -1.99674,-3.4943 -4.30726,7.94419 1.58313,4.56398 -2.62429,3.80807 -4.94906,-1.26936 -11.99472,8.79993 0.31377,5.09169 -5.47677,-0.32803 0,0 m -44.82687,-24.91649 2.86676,6.43236 0.64181,8.35779 3.83659,5.94744 9.25633,5.6194 3.50856,0.32804 -0.64181,-5.79055 -3.0379,-7.38795 -4.44988,-9.456 -0.37083,1.65444 -5.36268,-0.24246 -3.85086,-5.53382 -2.39609,0.0713 0,0 z","name":"Malaysia"},"bn":{"path":"m 612.5483,453.45602 -4.10759,4.97759 3.36594,1.05542 1.8969,-2.65281 -1.15525,-3.3802 0,0 z","name":"Brunei Darussalam"},"tl":{"path":"m 650.15836,523.58445 -7.28811,6.0758 0.69886,1.55461 3.08069,-0.5705 3.63692,-3.39446 7.14549,-0.98411 -1.39772,-2.39609 -5.87613,-0.28525 0,0 z","name":"Timor-Leste"},"ph":{"path":"m 626.24024,422.47799 -1.22657,2.33904 -0.6846,2.88101 -6.81744,8.65731 0.41361,1.7828 2.86675,-0.41361 8.85698,-9.89814 -3.40873,-5.34841 0,0 m 11.03913,-3.29463 -0.14262,7.14549 2.59576,2.61002 0.95559,5.07743 2.59576,0.55624 1.22657,-3.16626 -2.03953,-1.51182 -0.54197,-8.92829 -4.64956,-1.78281 0,0 m 7.37369,2.75265 -0.14263,6.31827 1.49756,2.4674 2.59576,-3.02364 -0.68459,-5.49104 -3.2661,-0.27099 0,0 m 1.62592,-5.5053 2.59576,3.43725 1.22657,3.29463 h 2.32478 l -0.41361,-5.63367 -2.59577,-1.78281 -3.13773,0.6846 0,0 m 5.0489,12.92178 0.54197,4.12184 -4.77791,3.85086 -3.9507,0.41361 -4.22169,4.53546 0.14263,2.06805 3.9507,-1.24083 2.72412,-1.7828 2.32478,5.90465 4.09332,2.88101 1.64018,-0.55623 1.49756,-1.78281 -3.2661,-3.29462 1.91117,-1.51182 2.18215,1.7828 1.49756,-2.4674 -1.49756,-3.02364 -0.27098,-6.73187 -4.5212,-3.16626 0,0 m -22.22089,-41.90306 -3.67971,2.61002 -0.41361,8.2437 5.7335,11.1247 1.91117,1.51182 2.45314,-1.65444 4.22169,0.68459 0.81295,3.70824 3.13774,0.27099 1.49756,-2.0538 -1.91117,-2.61002 -2.32478,-2.19642 -4.90628,-0.54197 -2.59576,-4.26447 2.99511,-4.53546 0.27099,-3.97922 -2.03953,-5.07743 -5.16301,-1.24083 0,0 m 1.91117,24.58845 1.08395,3.85086 1.91116,1.24083 1.3692,-1.7828 -2.18216,-3.02364 -2.18215,-0.28525 0,0 z","name":"Philippines"},"cn":{"path":"m 584.10898,383.45594 -3.40872,0.95558 -2.45314,3.02364 2.03953,3.97922 2.99511,0.27099 3.40872,-3.02364 0.81296,-3.97922 -3.39446,-1.22657 0,0 m -127.54903,-142.76706 -4.93481,12.40832 -6.80319,-0.35656 -7.174,15.70295 6.09006,7.75877 -12.55095,17.32887 -6.44663,-1.08394 -4.30725,5.41972 1.06968,3.25184 5.02038,0.35656 2.51019,5.77629 5.02038,1.08395 15.4177,19.86758 v 10.11208 l 7.53057,4.69234 8.24369,-1.44051 10.39733,6.13285 12.55095,3.6084 6.09006,-0.72738 6.81745,-0.72739 14.33375,-9.38469 4.66382,0.72739 1.78281,4.23595 3.9507,1.18378 5.37694,7.94418 -3.57988,7.94418 2.15363,5.41973 6.09007,2.16789 1.06968,6.50368 7.17401,0.72738 1.06968,-3.25184 10.39732,-5.41973 6.44663,0.35657 7.53057,8.30074 5.02038,-2.16789 3.22331,0.35656 1.44051,3.97922 2.51019,0.35656 3.57987,-5.04891 14.33376,-5.41972 12.90751,-15.53181 4.30726,-14.80441 -0.35656,-9.75551 -5.37694,-1.08395 3.22331,-3.6084 -0.71312,-5.77629 -13.62064,-13.72047 v -6.86023 l 3.93644,-5.04891 3.93643,-1.81133 0.35656,-3.97922 H 598.2288 l -1.79707,5.41973 -4.66382,-1.08395 -5.7335,-6.13285 3.57988,-9.38469 5.02038,-5.41973 4.66382,0.35656 -0.71313,8.30075 2.51019,2.16789 6.09007,-6.13285 2.15363,-0.35656 -0.71313,-4.69235 5.73351,-6.86023 4.30725,0.35656 2.51019,-7.94418 2.93807,-1.55461 0.29951,-4.94907 -2.85249,-2.99511 -0.24246,-7.81582 5.49104,-0.35656 -0.35656,-20.15284 -3.85086,2.31052 -1.44051,5.16301 -6.43236,-0.0143 -18.64101,-10.48289 -13.46375,-16.23066 -13.66342,-0.14263 -3.48004,3.02364 4.42136,10.12633 -1.54035,9.49879 -5.5053,2.28199 -3.09495,-0.24246 -0.2282,9.39895 3.22331,0.72739 5.73351,-2.52446 7.53057,3.6084 v 3.6084 l -5.37694,0.35656 -4.30726,9.38469 -3.93644,0.35656 -13.97719,18.41282 -14.69032,6.50367 -10.04076,0.72739 -6.80319,-4.69235 -9.6842,5.06317 -10.39732,-3.25184 -2.51019,-6.86023 -17.55707,-1.08395 -9.31337,-15.16098 h -3.93644 l -3.16626,-7.03138 -3.76528,-0.29951 z","name":"China"},"tw":{"path":"m 623.51612,352.27824 -5.04891,3.85086 -0.27099,7.41647 4.36431,5.07743 1.08395,-0.95558 -0.12836,-15.38918 0,0 z","name":"Taiwan"},"jp":{"path":"m 646.00799,306.7953 -2.32478,2.33905 0.95558,3.29462 2.03953,0.14262 1.3692,7.14549 1.64018,1.7828 2.86675,-2.61002 1.22657,-4.67808 -3.55135,-5.07743 -4.22168,-2.33905 0,0 m 12.55095,-4.66381 -3.9507,3.70823 -0.14262,4.26447 0.95558,1.24083 5.31989,-4.53545 -0.41361,-4.53546 -1.76854,-0.14262 0,0 m -5.46252,-8.79993 -6.96007,7.9727 1.22657,1.92543 3.40873,0.41361 6.40383,-4.94906 4.50694,-0.82723 4.09332,4.80645 3.13773,-1.09821 1.22657,-4.67808 5.86187,-0.14263 5.7335,-6.87449 -2.99511,-11.40996 -1.3692,-6.04728 2.99512,-2.4674 -6.81745,-10.29748 -1.76854,0.14262 -3.67971,4.12185 v 3.43725 l 1.64018,1.92543 0.54197,9.07091 -4.22168,5.22006 -2.45314,-1.51182 -1.91117,4.26447 -0.41361,3.97922 1.49755,2.33904 -0.95558,1.78281 -3.13774,-2.61003 h -2.18215 l -1.91117,1.09821 -1.49756,0.41361 0,0 m 11.738,-62.09868 -2.18216,1.92543 1.09821,4.12184 1.91117,1.92543 -0.14263,6.31827 -2.45314,0.95558 -1.91117,4.26447 5.59088,7.68746 3.67971,-1.24084 0.6846,-1.92543 -3.9507,-3.56561 2.45314,-3.16626 2.59577,0.41361 2.03953,2.19642 0.14262,-4.53546 5.59088,-4.53546 3.13774,-0.82722 -2.59577,-4.39283 -1.22657,-1.92543 -2.03953,1.36919 -1.76854,2.19642 -3.82233,-0.82722 -3.9507,-2.61003 -2.88101,-3.82233 0,0 z","name":"Japan"},"ru":{"path":"m 222.95538,214.51729 -2.13937,-0.21393 -3.85086,4.60676 v 2.15363 l 1.28362,0.49919 2.49593,0.0713 4.13611,-3.3802 0.57049,-1.15526 -2.49592,-2.5815 0,0 m 462.45974,12.45112 -3.82233,5.36267 0.27098,2.61003 1.91117,-0.82722 4.49267,-5.63367 -2.85249,-1.51181 0,0 m 5.04891,-7.83009 -1.3692,3.70824 0.14263,2.4674 2.32478,-1.51182 2.18215,-4.39283 v -1.64018 l -3.28036,1.36919 0,0 m 8.04402,-32.70378 -1.76855,2.19642 0.14263,3.43724 1.64018,-0.14262 2.72413,-4.80644 -2.73839,-0.6846 0,0 m -3.2661,8.38632 v 6.04727 l 1.91116,0.6846 1.3692,-2.19642 v -4.66382 l -3.28036,0.12837 0,0 m -55.78042,-21.85007 -0.12836,8.79993 11.03913,17.04362 3.95069,14.83294 6.96008,13.19276 2.72412,0.95559 2.32478,-1.92543 1.08395,-3.16627 -9.95519,-10.85372 0.27099,-5.63366 2.18215,-0.95558 0.54198,-3.29463 -19.49677,-27.61209 -1.49755,-1.38346 0,0 m 76.91736,-27.3411 -2.72413,0.27098 1.64018,2.33904 3.40873,2.33905 0.95558,-1.09821 -3.28036,-3.85086 0,0 m 5.30563,1.65444 0.41361,2.33904 4.22168,1.24083 0.41361,-1.65444 -5.0489,-1.92543 0,0 m -439.95361,-93.832618 2.45314,0.984108 -1.72576,2.966589 v 4.207421 l -3.67971,2.224941 h -3.92217 l -2.21068,-2.724127 0.24246,-2.966588 1.72576,-2.224942 h 3.43725 l 3.67971,-2.467402 0,0 m 9.32764,-2.724127 v 2.966588 l 2.45314,1.98248 3.43724,-0.242462 2.95233,-2.724126 v -1.98248 h -2.6956 l -2.21068,0.741647 -1.72576,-1.98248 -2.21067,1.240833 0,0 m 14.00572,0.256724 1.72575,3.708235 3.43725,0.242462 2.45314,-0.984109 -1.22657,-3.465774 -3.19479,-0.741647 -3.19478,1.240833 0,0 m 13.99145,-4.949068 -2.6956,-0.499186 -2.45314,2.481666 1.22657,2.224941 0.74165,3.465774 3.19479,-2.467403 0.74164,-2.724127 -0.75591,-2.481665 0,0 m 14.97557,26.228634 -0.74165,3.465774 -5.64793,4.949068 -12.0375,2.724127 -9.82682,16.330498 -1.72576,4.706608 9.82683,2.48166 1.46903,-5.93317 2.95232,-9.156492 7.61615,-3.964959 6.38957,-4.949068 4.66382,-1.98248 h 2.45314 v -6.674824 l -5.3912,-1.996742 0,0 m -31.67689,36.126775 6.63204,0.74164 2.21068,7.6732 5.64792,5.93317 -1.96821,3.96496 h -3.43725 l -3.19479,-3.70823 -7.11696,-0.24246 -2.95232,-3.96496 v -2.72413 l 4.42135,-1.24083 -0.24246,-6.43236 0,0 m 103.64518,-84.376623 -3.19479,-1.982479 h -3.67971 l -0.74164,2.224941 -3.92218,2.224941 -2.95232,0.984109 -0.48492,2.966588 6.87449,0.499186 8.10107,-6.917286 0,0 m 7.60188,0.741647 -1.72575,3.708236 -3.43725,-0.242462 -5.40547,3.96496 -1.46903,4.949068 h 3.43725 l 1.96822,-3.223313 4.66382,3.465774 4.42135,-1.982479 3.19479,-2.724127 -1.22657,-4.207421 -1.72575,-2.966589 -2.69561,-0.741647 0,0 m 7.13123,2.724127 1.72575,6.931548 2.6956,6.432362 2.95233,-5.191529 5.64793,-1.240833 v -3.708236 l -3.67971,-2.724126 -9.3419,-0.499186 0,0 m 134.75157,-11.096181 3.83659,3.223312 2.72413,-1.126733 0.7987,-4.521195 -5.59088,-3.865122 -3.67971,2.424615 -8.95681,0.81296 v 4.036271 l -9.44174,0.156887 v 6.603512 l 11.03913,8.215168 2.88101,-2.09658 -0.64181,-5.804814 7.04565,-1.768543 -1.44051,-2.73839 -2.55297,-2.581502 3.97922,-0.969846 0,0 m 10.24043,-3.865123 2.55298,4.834969 9.92666,-1.126733 2.72413,-3.551349 -0.64181,-3.0664252 -2.72413,-1.1267331 -2.55298,1.9396923 -7.35942,1.611656 -1.92543,0.484923 0,0 m -0.64181,18.854951 -4.96333,-1.28362 -2.86675,3.066426 -1.28362,4.193158 6.71761,-0.64181 5.12022,-2.581502 -2.72413,-2.752652 0,0 m 128.63298,-27.8830777 -4.16463,-1.2836199 -4.79218,1.768543 -2.39609,3.5513486 3.0379,4.036272 8.00123,-3.5513489 1.59739,-1.7685431 -1.28362,-2.7526517 0,0 m -26.68503,98.6533297 2.51019,8.67156 5.02038,1.44051 5.02038,-7.94418 -2.86675,-5.419732 1.06968,-4.692344 h 7.53058 l -1.79707,3.608399 0.71312,13.007347 -10.75388,26.72782 1.06968,5.77629 -0.35656,9.75551 20.06726,29.25228 3.93643,1.08394 0.35656,-23.83254 3.93644,-3.6084 -4.30726,-9.38469 3.57987,-3.97922 -7.88713,-10.46863 -4.30726,0.35656 -1.42624,-17.32887 11.11044,-2.89528 0.71313,-5.06317 5.7335,-1.4405 3.22331,2.89527 3.93643,-15.88836 6.80319,-11.55258 5.37694,-2.895276 4.66382,0.356561 v -5.419729 l -7.53057,-1.440506 -10.39732,-8.671566 5.02038,-5.77629 -4.30726,-9.755512 3.57987,-3.608398 4.30726,5.77629 10.75389,3.979221 11.82356,1.083946 1.44051,-5.048905 -6.09007,-6.132851 6.80319,-9.384688 -15.4177,-5.419729 -3.93644,7.944182 -5.02038,-6.503675 -28.31095,-9.755512 -26.8847,4.692344 -3.93644,2.167892 v 2.167891 l 5.7335,2.895277 -0.71312,6.860235 -10.39732,-4.335783 -22.93401,9.028127 -3.93644,-8.300742 h -15.77426 l -7.17401,7.58762 -25.4442,-5.77629 -23.29057,4.692344 -2.86675,7.216797 3.57987,1.083946 -0.35656,5.419728 -22.57745,2.524453 1.44051,7.216797 -20.79464,-3.608399 5.02038,-9.384688 -21.15121,-1.083946 1.79707,9.755512 -6.80318,3.251837 -5.73351,-5.419728 -23.29057,3.979221 -8.95681,8.300743 -0.35656,5.048905 -5.73351,0.356561 -0.71312,-5.77629 18.28445,-15.888362 V 44.380597 l -11.82356,-3.251837 -15.4177,5.048905 -6.44663,-6.503674 h -2.86675 l -3.57987,7.216796 2.86675,3.251838 -20.43808,11.196018 -17.55707,13.36391 -10.75389,14.804417 v 6.132851 l 11.46701,4.692349 -5.7335,4.33578 -12.18013,-4.33578 -5.02038,4.33578 -7.53057,-8.671568 -1.44051,3.251837 8.24369,26.000431 2.15363,0.72739 5.73351,-2.89528 2.86675,2.16789 v 4.69235 l -5.37694,-2.16789 -3.22332,2.52445 2.15363,4.69234 -1.79707,12.27997 -11.11044,1.08394 -0.71312,-3.97922 6.44662,-3.97922 1.44051,-10.83946 -7.17401,-9.38469 -2.51019,-16.24492 -11.467,-1.81133 -1.06969,5.77629 2.15363,2.89528 -4.66382,3.97922 1.79707,10.83946 6.80319,2.89527 1.4405,7.94418 -6.81745,-4.33578 -17.55706,-3.25184 -2.15363,5.77629 -13.9772,5.04891 -2.15363,-3.6084 -18.28445,10.11207 -0.35656,6.86024 -7.17401,1.08394 2.15363,-5.0489 v -5.04891 l -7.17401,-2.52445 -4.66382,1.81133 3.93643,7.58762 2.86676,5.04891 v 3.97922 l -5.37695,-1.08395 -1.06968,-1.08394 -5.37694,5.77629 2.86675,5.0489 -12.18013,-0.35656 3.93644,5.06317 -1.06969,2.16789 h -6.44662 l -4.66382,-3.25184 -1.06968,-9.02812 -7.53057,-2.89528 v -3.6084 l 15.77426,3.25184 8.60025,0.72738 3.57988,-5.41973 -3.22331,-5.77629 -22.93401,-9.02812 -7.91566,1.96821 -2.70987,2.32478 0.84149,5.34842 3.36594,0.58476 -0.78444,8.41484 10.38306,24.38878 -7.50205,11.89488 -0.51344,2.68134 3.80807,2.68134 -3.43725,2.26773 -2.28199,0.0428 0.42787,10.4829 3.152,4.46415 0.0428,4.33578 4.03627,0.37082 6.17564,2.35331 6.5322,8.98534 0.0713,2.36756 -2.1251,3.63692 4.87775,-0.27098 4.7494,1.36919 6.4181,9.08518 15.80278,1.44051 -0.68459,10.81093 -5.44826,4.66382 1.12674,1.82559 -5.37694,5.77629 -1.42625,5.41973 3.22331,4.69234 10.39733,3.6084 4.30725,-2.52445 27.59783,10.46863 1.06969,-2.89527 -5.73351,-5.41973 v -6.86024 l -3.57987,-1.08394 0.71312,-5.77629 5.7335,-6.86024 -10.28322,-7.70172 0.71312,-10.71109 10.99635,-7.23106 12.90751,0.72738 2.15363,3.97922 13.26407,0.72739 9.6842,-5.41973 -5.02038,-5.41973 1.06969,-10.11207 25.08763,-12.27997 19.29709,8.70009 6.44663,-5.77629 18.99757,18.05626 14.33376,-1.44051 5.02038,5.04891 13.62063,1.4405 8.95682,-12.27996 11.467,5.06317 6.09006,1.08394 6.09007,-5.41973 -5.37694,-3.60839 4.66382,-7.2168 13.26407,4.33578 2.86675,5.77629 5.7335,0.35656 3.57988,-2.52445 9.6842,-0.35656 1.06968,2.52445 11.11044,0.72739 7.53057,-7.94418 15.41771,1.81133 4.66381,-1.81133 1.42625,-8.67157 -4.66382,-10.46863 4.66382,-3.97923 h 14.69032 l 13.97719,16.61575 17.91363,10.11207 h 5.37694 l 0.71312,-4.33578 6.44663,-3.97922 0.71312,23.47598 -5.7335,0.35656 v 5.77629 l 3.22331,3.97922 -0.59902,5.16301 2.38183,0.98411 1.4405,-3.6084 2.15363,0.72738 1.42625,1.44051 6.44662,-1.44051 6.44663,-18.78363 0.71312,-23.47599 -8.24369,-18.78364 -10.39733,-12.63652 -5.02038,0.72738 v 3.97922 l -12.18012,-4.69234 4.66382,-10.11207 3.93643,-26.72782 16.48739,-5.04891 7.88713,-5.0489 h 8.60025 l -2.15363,2.89527 2.15363,3.6084 7.53057,-7.94418 4.30726,0.35656 -0.71312,-4.69234 -6.81745,-1.44051 4.66382,-16.97231 6.14711,-5.81907 0,0 z","name":"Russian Federation"},"mv":{"path":"m 436.59252,455.60965 0.42788,3.72249 2.38183,0.87001 0.42787,-3.28036 -3.23758,-1.31214 0,0 m 3.0379,7.87286 -0.21393,4.59251 1.74002,0.87001 1.52608,-3.06643 -3.05217,-2.39609 0,0 m 0.44214,8.97108 -1.52608,1.52608 1.74002,1.52608 2.16789,-1.52608 -2.38183,-1.52608 0,0 z","name":"Maldives"},"lk":{"path":"m 471.02206,437.48208 0.35657,3.87938 0.35656,2.82397 -2.09658,0.35656 1.05542,6.34679 3.152,1.76854 4.89202,-2.82396 -1.39772,-6.68909 0.35656,-2.4674 -4.54972,-4.22169 -2.12511,1.0269 0,0 z","name":"Sri Lanka"},"mn":{"path":"m 461.40918,240.8315 8.30074,-11.01061 9.96945,4.60677 6.77466,1.81133 8.30074,-7.61614 -5.63366,-4.15037 3.70823,-5.23432 11.06766,3.90791 3.83659,6.28974 6.93155,0.18541 3.62266,-2.6956 7.45926,-0.29951 1.62592,2.76691 12.39406,0.62755 7.84435,-8.00123 10.85372,1.14099 -0.62755,10.89651 4.74939,1.08395 5.83334,-2.65282 6.17564,3.05216 -0.14262,1.54035 -4.47841,0.12836 -4.66382,9.78404 -3.62266,0.35656 -14.09129,18.41281 -14.39081,6.34679 -8.9996,0.69886 -7.47352,-4.82071 -9.55584,5.10596 -9.41321,-2.9238 -2.66708,-6.83171 -17.82806,-1.2551 -9.12796,-15.47475 -4.43562,-0.28525 -2.29625,-5.49104 0,0 z","name":"Mongolia"},"kp":{"path":"m 610.42319,275.20399 2.62429,1.09821 0.7987,9.18501 5.20579,0.29951 4.90628,-5.74776 -1.69723,-1.51182 0.19967,-6.16138 4.50694,-5.44825 -2.29626,-4.13611 1.49756,-1.71149 0.82722,-4.27873 -2.61003,-1.18379 -2.22494,1.12674 -2.75265,8.35779 -4.44988,-0.38509 -5.14874,6.0758 0.61328,4.42136 0,0 z","name":"North Korea"},"kr":{"path":"m 624.77121,280.80913 8.81419,7.18827 1.49756,6.96008 -0.29951,3.73676 -4.30726,4.84923 -3.70824,0.19967 -4.20742,-9.08518 -1.59739,-4.33578 1.69723,-1.31214 -0.39935,-1.81133 -2.09658,-0.94132 4.60677,-5.44826 0,0 z","name":"South Korea"},"kz":{"path":"m 322.90658,267.14571 5.84761,-2.49593 6.53219,-0.2282 0.4564,9.98371 h -3.82233 l -2.9238,4.76366 3.82233,6.34679 5.63367,3.18052 0.51344,3.63693 2.06806,-0.6846 1.91117,-2.26773 3.152,0.6846 1.58313,3.18052 h 4.05053 v -4.07906 l -2.48166,-7.25958 -1.12674,-5.89039 7.20254,-3.18052 9.6842,1.58313 6.0758,6.11859 13.73473,-1.35494 7.65893,10.88225 8.99961,0.4564 2.48166,-4.07906 3.152,-0.6846 0.4564,-4.53546 4.72087,-0.2282 2.48166,2.95233 2.48167,-5.89039 21.3794,2.95233 3.59414,-4.76366 -6.0758,-7.48778 8.10107,-17.68543 6.5322,0.45639 4.50693,-10.88224 -8.9996,-0.9128 -5.17727,-4.99185 -14.26245,1.65444 -18.37002,-17.75674 -6.47515,5.74776 -19.63939,-8.91402 -24.08927,11.79504 -0.67033,8.38631 5.63366,6.57499 -10.98208,6.20416 -14.24818,-0.31377 -2.98085,-4.37857 -11.16749,-0.61329 -10.58274,6.80319 -0.2282,9.29911 9.85535,7.91566 0,0 z","name":"Kazakhstan"},"tm":{"path":"m 347.38094,294.20157 -0.88427,3.75102 h -5.91892 v 5.07743 l 6.36105,4.19316 -1.96822,5.74776 v 2.65282 l 2.63856,0.44213 3.50856,-4.63529 7.90139,-1.76854 16.88673,6.40383 0.21394,4.6353 9.42748,0.88427 10.52568,-11.0534 -1.31214,-3.53708 -7.01713,-1.54035 -19.73922,-12.82193 -0.88427,-4.6353 h -7.45926 l -3.29462,6.1899 h -3.29463 l -5.69071,0.0143 0,0 z","name":"Turkmenistan"},"uz":{"path":"m 397.39933,310.56059 4.39283,0.2282 v -7.51631 l -4.16463,-2.42461 7.01712,-8.84272 h 2.85249 l 2.85249,3.32315 7.45926,-2.86675 -10.31175,-3.53709 -0.39935,-2.13936 -2.45314,0.59902 -2.41035,4.19316 -10.39733,-0.3423 -7.6304,-10.79667 -13.4067,1.32641 -6.38957,-6.33253 -8.84272,-1.49756 -6.4181,2.61003 3.7225,12.3798 0.0428,4.16464 2.70986,0.0571 3.32315,-6.33253 8.84271,0.1141 1.31215,4.86349 18.95479,12.57948 7.33089,1.68297 2.01101,4.50693 0,0 z","name":"Uzbekistan"},"tj":{"path":"m 399.21066,300.26311 5.86186,-7.27385 h 2.21068 l 0.77017,1.62592 -2.70986,1.96821 v 1.62592 l 1.7828,1.28362 8.57173,0.51345 2.79544,-1.19804 1.26936,0.25672 0.85575,2.73839 5.09169,0.51345 2.55298,5.3912 -0.77018,1.62592 -1.01263,0.0856 -1.01263,-2.05379 -2.21068,-0.17115 -3.82234,0.51345 -0.25672,3.59414 -3.82233,-0.25673 0.17114,-4.53545 -2.79543,-2.73839 -4.25021,3.50856 0.0856,2.31051 -3.73676,1.28362 h -2.21068 l 0.17115,-7.95844 -3.57987,-2.65281 0,0 z","name":"Tajikistan"},"kg":{"path":"m 408.6524,282.24964 -0.44214,3.6084 0.35656,2.22494 12.40833,4.16463 -10.89651,4.39283 -1.24083,-1.02689 -2.35331,1.51182 0.1141,0.82722 1.2551,0.5705 7.64467,0.19967 3.87938,-1.16952 4.9776,-6.27547 6.23269,1.08394 7.5163,-10.41158 -20.11004,-2.73839 -2.78118,6.74613 -3.50856,-3.76528 -3.05216,0.0571 0,0 z","name":"Kyrgyz Republic"},"af":{"path":"m 376.29091,321.95628 2.26773,17.77101 5.64793,1.24083 0.52771,3.19479 -4.05054,3.3802 7.54484,6.09006 14.66179,-5.2771 1.16952,-6.24695 9.2278,-5.76203 3.53709,-13.34965 2.63855,-2.83823 -2.73839,-4.76365 8.92829,-5.51957 -1.141,-1.59739 -4.12184,0.25672 -0.37083,3.79381 -5.53382,-0.0571 -0.0998,-5.06316 -1.78281,-2.12511 -2.99511,2.72413 0.0856,2.49593 -4.52119,1.71149 -8.34353,-0.52771 -10.83946,11.3529 -9.69846,-0.88427 0,0 z","name":"Afghanistan"},"pk":{"path":"m 389.14137,354.46039 3.70824,5.50531 -0.35656,2.83822 -4.93481,1.95396 -0.35656,4.62103 h 5.64793 l 1.93969,-1.5974 h 10.75388 l 9.69847,8.52895 1.24083,-4.09332 h 7.23106 l 0.17115,-5.14875 -7.40221,-7.10269 1.58313,-3.90791 7.58762,-0.52771 10.22617,-21.32236 -5.64793,-4.43562 -2.11084,-7.45926 13.749,-1.24083 -8.11533,-11.55258 -4.32152,-1.16952 -1.76855,2.13937 -1.3264,0.0998 -8.11533,5.14875 2.65281,4.44988 -2.99511,3.19479 -3.70824,13.67768 -9.17075,5.86187 -1.24083,6.40383 -14.61901,5.13448 0,0 z","name":"Pakistan"},"in":{"path":"m 457.38717,444.55625 6.5322,-3.19479 3.87938,-14.03424 -0.17115,-17.22903 22.22089,-23.98943 v -5.69072 l 4.57824,-1.78281 -0.17114,-6.57498 -4.93481,-9.59863 2.82396,-5.14874 6.17564,5.69072 7.92992,0.35656 v 3.19478 l -2.4674,2.66708 0.52771,1.42625 4.23594,0.17115 0.88428,4.79218 h 1.24083 l 3.18052,-5.69072 1.58313,-14.91851 5.29137,-3.73677 0.17115,-5.14874 -2.11084,-4.09332 -3.35168,-0.17115 -13.12144,8.67157 0.82722,5.57661 -9.21354,-0.0285 -3.25184,-3.97922 -1.76854,0.2282 0.59902,5.53382 -19.92463,-1.42624 -12.35128,-5.5053 -0.65607,-6.77466 -8.22943,-5.10596 -0.0998,-10.51142 -5.64793,-6.46089 -12.97882,1.24083 1.41198,5.64793 6.36105,5.14874 -10.99634,22.50614 -7.35942,0.55624 -1.21231,2.70986 7.24532,6.70335 -0.35656,6.77466 -7.40221,-0.1141 -0.7987,3.36594 6.14712,-0.27099 0.17115,2.66708 -4.4071,2.31051 2.82396,5.33416 5.46252,1.7828 3.35167,-2.48166 1.58314,-4.43562 1.93969,-0.88427 2.29625,2.31051 -0.69886,5.69072 -1.58313,2.66708 0.35656,4.62103 23.4332,48.63493 0,0 z","name":"India"},"np":{"path":"m 457.68668,344.07733 0.65607,6.09007 11.52406,5.22005 18.46986,1.3692 -0.69886,-4.46415 -12.33701,-3.39446 -10.46864,-6.23269 -7.14548,1.41198 0,0 z","name":"Nepal"},"bt":{"path":"m 492.21606,351.9502 2.21067,3.02364 7.47353,0.0571 -0.75591,-4.13611 -8.92829,1.05542 0,0 z","name":"Bhutan"},"bd":{"path":"m 492.45852,359.12421 -1.86838,3.3802 4.84923,9.21354 0.14262,7.18827 0.88427,1.92543 5.69072,0.0998 3.22331,-3.09495 2.33904,1.41198 0.47066,4.37857 1.86838,-1.16952 0.1141,-5.59088 -1.56887,-0.18541 -0.9841,-4.74939 -3.96496,-0.14263 -0.98411,-2.63855 2.42461,-3.23758 0.0428,-1.59739 h -7.04565 l -5.63366,-5.19153 0,0 z","name":"Bangladesh"},"mm":{"path":"m 540.76542,431.2066 -3.9507,-6.33252 2.86675,-4.02201 -2.70986,-4.97759 -2.55298,-0.48493 -0.48493,-8.35779 -3.82233,-7.40221 -1.11247,1.76855 -2.55298,4.33578 -3.19479,0.48492 -1.59739,-2.09658 -0.7987,-5.63366 -2.39609,-4.50694 -9.75551,-9.19927 2.39609,-1.58313 0.44214,-6.66056 3.56561,-5.99023 1.54034,-14.90425 5.16301,-3.52283 0.17115,-5.43399 3.09495,1.0269 4.87775,7.05991 -3.62266,7.75877 2.43888,6.09006 6.03301,2.36756 1.09821,6.63204 8.10107,1.2551 -2.2392,3.86512 -10.21191,4.02201 -1.11247,6.58925 7.50204,9.64141 0.31377,5.14874 -1.75428,1.76854 0.15689,1.61166 5.59088,8.20091 0.15689,8.51468 -1.64018,2.96658 0,0 z","name":"Myanmar"},"th":{"path":"m 541.6069,383.88381 4.62103,5.94744 v 7.23106 l 1.59739,0.7987 7.34516,-3.53709 1.44051,0.48493 8.7714,10.12633 -0.31377,6.91729 -2.86675,-0.48493 -2.55298,-1.61165 -1.91117,0.15688 -3.35167,5.61941 0.64181,3.05216 2.70986,1.44051 -0.15688,3.3802 -1.91117,0.96984 -6.54646,-4.50693 v -4.02201 l -2.70987,-0.15689 -1.11247,1.76855 -0.5705,17.9992 4.23595,7.73025 7.50205,7.23106 -0.31378,2.09657 -3.99348,-0.15688 -3.66545,-5.46252 h -3.8366 l -4.79218,-3.86512 -1.44051,-4.02201 2.06806,-3.3802 0.71312,-3.05216 2.25347,-3.99349 -0.0998,-9.18501 -5.5053,-7.95844 -0.2282,-0.96985 1.7828,-1.79707 -0.41361,-6.31826 -7.33089,-9.28485 0.85574,-5.34842 9.08518,-3.8366 0,0 z","name":"Thailand"},"kh":{"path":"m 556.51115,425.2449 5.83334,6.23269 10.85372,-8.04402 0.95559,-12.69357 -5.60514,3.86512 -2.90954,-1.62592 -3.9507,-0.52771 -2.21068,-1.55461 -1.06968,0.0571 -2.89528,4.7494 0.47066,2.19641 2.93807,1.64018 -0.35656,4.46415 -2.0538,1.24083 0,0 z","name":"Cambodia"},"la":{"path":"m 549.36567,373.12993 -3.45151,1.75428 -2.86675,8.35779 4.79218,6.10433 -0.7987,6.74614 0.7987,0.32803 7.9727,-3.86512 10.69684,11.95193 -0.25673,7.53057 2.32478,1.25509 5.74777,-4.66382 -0.47066,-3.69397 -16.58723,-15.76 0.15689,-2.41035 2.06805,-1.44051 -1.4405,-4.02201 -6.86024,-1.12673 -1.82559,-7.04565 0,0 z","name":"Lao People's Democratic Republic"},"vn":{"path":"m 563.04335,432.3476 1.69723,2.66708 0.31378,3.05216 4.46414,0.48492 5.41973,-7.23106 5.10596,-1.4405 2.70986,-7.38795 -1.26936,-11.89488 -5.26284,-7.23106 -5.54809,-4.43562 -7.05991,-12.12307 5.06317,-8.4719 -7.24532,-8.315 -5.80482,-0.25673 -5.22005,2.80971 1.5546,6.71761 6.96008,1.22657 1.86838,5.17726 -2.45314,1.5974 0.15688,1.28362 16.3305,15.97394 0.64181,4.69234 -0.98411,14.83294 -11.43848,8.27222 0,0 z","name":"Vietnam"},"ir":{"path":"m 312.86582,308.97746 -1.74002,1.81133 0.17115,2.86675 2.1679,3.0379 7.68745,8.41484 -1.16952,3.36594 h -1.34067 l -0.67033,3.36594 4.35004,5.56235 4.00775,0.3423 8.02976,11.11044 4.50693,0.3423 3.50856,2.52445 0.17115,5.04891 13.87736,8.0868 h 5.17726 l 3.18053,-2.6956 4.00775,-0.17115 2.33904,5.39121 14.98982,2.08231 0.44214,-5.5053 4.96333,-1.79707 0.2282,-1.96822 -3.9507,-5.3912 -8.79992,-7.07417 4.62103,-4.20742 -0.32804,-1.85412 -5.79055,-0.89853 -2.45314,-19.53955 -0.28525,-4.49267 -15.70295,-6.00449 -6.96007,1.56887 -3.89365,4.77792 -3.45151,-0.2282 -0.99837,0.84148 -7.68746,-0.49918 -9.69846,-7.07418 -3.6084,-3.95069 -1.65444,0.39935 -2.98086,3.40872 -5.26284,-0.99837 0,0 z","name":"Iran"},"tr":{"path":"m 297.24845,296.48356 -3.18053,3.36593 -11.6952,-0.34229 -7.01713,-4.20743 -6.84597,-0.17114 -7.85861,5.56235 -7.35942,0.3423 -0.67033,4.20742 h -8.35779 l -3.33742,3.0379 v 1.68297 l 2.01101,1.68297 v 1.85411 l -0.84148,2.19642 0.84148,1.85412 2.68134,-1.34067 2.68134,2.86675 -0.67034,2.02527 -0.99837,1.35493 1.49756,1.68297 7.35942,1.51182 5.17727,-2.19642 v -3.19479 l 2.51019,0.49919 6.01875,3.53708 6.51794,-1.01263 2.83822,-2.6956 1.83986,0.67033 v 3.0379 h 2.51019 l 2.16789,-4.20742 19.05462,-2.02526 8.31501,-1.01264 -2.19642,-2.88101 -0.0428,-3.89365 1.6687,-1.99674 -6.0758,-4.87776 0.32804,-4.20742 h -3.33742 l -5.53382,-2.70986 0,0 m -50.8884,0.72738 -0.2282,5.06317 4.42135,-1.35493 2.02527,-1.35493 -0.59902,-2.19642 -2.09658,-1.66871 -3.52282,1.51182 0,0 z","name":"Turkey"},"om":{"path":"m 353.84182,398.67397 10.53995,-6.0758 1.86838,-8.91403 -2.31052,-1.32641 0.95559,-9.55583 2.011,-1.16953 2.15363,3.3802 12.82194,6.70335 v 3.7225 l -15.5318,22.8627 -7.14549,0.24246 -5.36268,-9.86961 0,0 z","name":"Oman"},"ae":{"path":"m 347.60914,375.99668 1.24083,4.96333 14.06277,1.24084 0.98411,-10.18339 2.70986,-1.48329 0.74165,-3.7225 -4.43562,1.24083 -4.93481,7.45926 -10.36879,0.48492 0,0 z","name":"United Arab Emirates"},"qa":{"path":"m 345.64092,367.55332 -0.74165,5.71924 2.19642,1.6687 1.99674,-0.18541 0.74165,-7.20253 -1.72576,-1.24084 -2.4674,1.24084 0,0 z","name":"Qatar"},"kw":{"path":"m 332.3198,350.65232 -3.20905,-1.74002 -2.22495,2.23921 0.24247,4.4784 5.17726,1.98248 0.0143,-6.96007 0,0 z","name":"Kuwait"},"sa":{"path":"m 333.33243,359.30962 9.99797,13.93441 3.22332,2.56724 1.4405,6.24695 15.38918,1.21231 1.74002,0.9128 -1.72576,7.70172 -10.11207,5.9617 -14.79016,4.4784 -7.88713,7.70172 -9.37042,-5.46251 -5.67646,4.96333 -7.90139,-12.90751 -5.41973,-2.48167 -1.96822,-2.98085 v -6.46089 l -19.72496,-23.8468 -0.74164,-4.22169 h 5.67645 l 6.90302,-5.9617 0.24246,-2.98085 -1.96821,-1.98248 3.95069,-3.22331 8.38632,0.49918 14.30523,11.92341 8.44337,-0.38509 0.54197,2.08232 7.04565,2.70986 0,0 z","name":"Saudi Arabia"},"sy":{"path":"m 280.09073,324.92287 -0.49919,3.62266 4.02201,1.68297 -0.17115,10.04076 4.02201,-0.0856 4.02201,-3.0379 1.51182,-0.25673 9.12796,-7.25958 1.83986,-10.53995 -18.24167,1.85412 -1.92543,4.22168 -3.70823,-0.24246 0,0 z","name":"Syrian Arab Republic"},"iq":{"path":"m 305.24968,319.07527 -2.22494,10.99634 -9.21354,7.6732 0.58476,3.62266 8.9996,0.61328 14.33376,11.66668 8.01549,-0.2282 0.21394,-2.6956 2.93806,-3.152 4.10758,2.32478 0.54198,-0.51345 -7.94419,-10.56847 -3.76528,-0.2282 -5.00612,-6.43236 0.99837,-4.73513 1.52608,-0.19968 0.52771,-2.09658 -6.81744,-7.174 -7.81582,1.12673 0,0 z","name":"Iraq"},"jo":{"path":"m 283.27125,341.53862 -3.50856,12.23717 -0.15689,1.86839 h 5.51957 l 6.17564,-5.44826 0.15688,-2.06805 -2.52445,-2.58151 4.5212,-3.75102 -0.65608,-3.48003 -1.24083,0.28524 -3.76528,2.69561 -4.5212,0.24246 0,0 z","name":"Jordan"},"lb":{"path":"m 279.42039,329.64374 0.0856,2.78118 -1.16952,4.22168 4.022,0.3423 0.25673,-5.99023 -3.19479,-1.35493 0,0 z","name":"Lebanon"},"il":{"path":"m 278.1653,337.65923 -2.25347,7.17401 2.9238,8.60026 3.35168,-12.56522 v -2.6956 l -4.02201,-0.51345 0,0 z","name":"Israel"}}});
Index: public/vendors/vmap/maps/continents/jquery.vmap.australia.js
===================================================================
--- public/vendors/vmap/maps/continents/jquery.vmap.australia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/continents/jquery.vmap.australia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'australia_en', {"width":950,"height":550,"paths":{"pg":{"path":"m 484.34788,3.4935749 -1.05721,69.8328711 10.05776,-0.54289 13.22939,-15.458095 11.11497,0.542891 7.1433,6.400394 2.37157,19.715499 22.74426,12.000739 5.82893,-2.142989 v -7.200443 l -18.25827,-15.200936 -9.00055,-20.801281 7.1433,-3.457356 -5.28604,-11.457848 -10.57208,-0.257159 -2.65731,-12.257897 -28.0303,-18.9154509 -4.77172,-0.8000492 0,0 m 79.20488,2.0286963 -2.51444,3.5716485 13.7437,12.1721783 1.88583,7.143297 3.74309,-0.428598 0.4286,-7.343309 -4.17169,-3.771661 -13.11509,-11.3435558 0,0 m 6.88614,17.2296328 -2.71446,0.62861 -1.65724,7.343309 -5.20032,3.371636 -15.62954,2.743026 0.62861,5.886077 16.45816,-0.828622 10.42921,-6.514687 -0.62861,-11.343556 -1.68581,-1.285793 0,0 m 18.54399,12.800788 3.54308,9.85775 6.25753,6.086089 1.88583,-1.685818 -0.62861,-6.514687 -7.08615,-8.60053 -3.97168,0.857196 0,0 z","name":"Papua New Guinea"},"au":{"path":"m 222.64605,231.19331 -1.00006,72.51875 -11.14354,8.17193 -1.00007,7.1433 15.20094,10.20063 37.5166,-7.1433 h 19.25833 l 7.08615,-10.2292 42.57405,-8.17193 30.40187,9.20056 -2.0287,12.2579 4.05739,12.2579 23.31573,-4.08597 1.00006,6.11467 -15.20094,11.22926 5.05746,4.08596 11.14354,-4.08596 -3.02876,33.71636 21.28703,16.34386 12.17217,-4.08596 6.08609,6.11466 35.4879,-5.1146 33.45921,-54.14619 12.17217,-3.05733 24.31579,-44.94563 6.08609,-38.80239 -15.20094,-19.40119 6.08609,-4.08597 -12.17218,-37.80232 -13.17224,-9.20057 2.0287,-51.06029 -12.17218,-9.20056 -3.02876,-28.601766 h -6.08609 l -20.28696,67.404146 -11.14354,1.02864 -25.34442,-25.54443 14.20087,-37.80233 -26.34448,-5.114599 -29.40181,8.171929 -8.11478,23.48716 -13.17224,3.05733 -1.00006,-16.34386 -53.7176,32.68773 1.00006,12.2579 -8.11478,11.22926 h -20.28696 l -43.60269,18.37256 -15.22951,40.97395 0,0 m 184.49708,195.09773 -5.05746,20.42983 1.00006,14.28659 15.20094,-1.02863 17.22963,-26.5445 -28.37317,-7.14329 0,0 z","name":"Australia"},"nz":{"path":"m 656.52991,385.43138 3.02876,33.71636 -4.05739,15.31523 -15.20094,11.22926 1.00006,13.28653 v 14.2866 l 4.05739,5.1146 41.57399,-35.74506 v -8.17193 H 676.7883 l -14.20087,-48.00296 -6.05752,-1.02863 0,0 m -30.40187,73.54738 8.11478,15.31523 -22.31566,21.45847 -2.02869,11.22926 -15.20094,2.0287 -25.34442,23.48716 -23.31572,-11.22927 -2.02869,-8.17193 42.57405,-18.37256 39.54529,-35.74506 0,0 z","name":"New Zealand"},"nc":{"path":"m 638.30022,209.73485 -1.00006,5.1146 13.17223,18.37256 7.08616,3.05733 1.00006,-7.1433 -20.25839,-19.40119 0,0 z","name":"New Caledonia"},"sb":{"path":"m 606.26967,50.23931 0.4286,6.514687 3.97167,3.771661 3.74309,-2.314428 -3.34306,-6.943285 -4.8003,-1.028635 0,0 m 5.00031,16.172425 -3.34306,3.571648 3.54307,6.514687 4.17169,1.25722 -0.20001,-4.40027 -4.17169,-6.943285 0,0 m 8.14336,-3.771661 2.91446,7.143297 5.62892,6.714699 3.11448,-5.028881 -4.17169,-7.143297 -7.48617,-1.685818 0,0 m 14.6009,10.714946 1.65724,8.829115 3.97168,5.457479 3.34306,-6.914712 -8.97198,-7.371882 0,0 m 4.57171,19.744072 -1.45723,2.514441 4.80029,6.314677 3.34306,0.20001 -2.08584,-8.200505 -4.60028,-0.828623 0,0 m -10.62923,12.572208 -5.00031,2.31442 4.3717,6.08609 3.74309,-2.11441 -3.11448,-6.2861 0,0 z","name":"Solomon Islands"},"vu":{"path":"m 678.95986,143.30218 -3.54307,4.74315 1.4858,5.34319 1.77154,1.20007 3.22877,-4.17168 -2.94304,-7.11473 0,0 m 1.77154,14.54376 0.28573,3.85738 3.82881,1.20007 2.65731,-1.48581 -2.65731,-4.17168 -4.11454,0.60004 0,0 m 5.60035,34.45926 -1.77154,2.68588 2.6573,2.97161 4.42885,-1.4858 -5.31461,-4.17169 0,0 z","name":"Vanuatu"},"fj":{"path":"m 758.25046,186.36198 -3.54308,4.74315 -0.28573,5.34318 4.11454,4.17169 -0.28573,-14.25802 0,0 z","name":"Fiji"}}});
Index: public/vendors/vmap/maps/continents/jquery.vmap.europe.js
===================================================================
--- public/vendors/vmap/maps/continents/jquery.vmap.europe.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/continents/jquery.vmap.europe.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'europe_en', {"width":950,"height":550,"paths":{"ee":{"path":"m 579.52752,247.70418 -14.10713,-0.50382 -8.94292,5.46651 -0.12596,4.0558 5.79401,5.46652 18.01178,3.04815 -0.62978,-17.53316 0,0 m -27.73563,10.02615 -3.90466,-0.12596 -2.26721,2.29241 1.63743,2.41836 3.90465,0.25192 2.01531,-2.92219 -1.38552,-1.91454 0,0 z","name":"Estonia"},"pt":{"path":"m 213.92602,432.50764 -3.42602,3.45121 6.14668,3.45121 0.68017,-4.81154 -3.40083,-2.09088 0,0 m 18.46523,-2.06569 -4.10618,2.74586 3.42602,2.74585 5.46651,-1.38552 -4.78635,-4.10619 0,0 m 2.72067,9.64828 -2.0405,5.51689 2.72066,3.45121 3.42602,-2.74585 -4.10618,-6.22225 0,0 m 16.39954,11.0086 -1.36033,3.45121 2.04049,2.06569 5.46652,-3.45121 -6.14668,-2.06569 0,0 m 51.94448,30.27995 -2.72066,3.45121 2.72066,3.45121 4.10619,-2.06568 -4.10619,-4.83674 0,0 m 57.31023,-63.43172 -1.56186,21.79049 -4.45886,4.03061 0.45345,2.46875 3.12372,5.16421 -2.01531,6.29783 3.35045,1.13361 7.8093,-0.90689 -0.45344,-6.29782 5.11384,-29.19673 -1.10842,-4.03061 -10.25287,-0.45345 0,0 z","name":"Portugal"},"es":{"path":"m 322.19828,524.98494 -4.40848,2.54433 2.04049,2.06568 2.36799,-4.61001 0,0 m -15.31632,0.47864 -5.46651,1.38552 2.72066,4.13138 h 4.10618 l -1.36033,-5.5169 0,0 m -12.99872,-4.13138 -3.42601,3.45121 4.78635,4.13138 2.72066,-6.19706 -4.081,-1.38553 0,0 M 404.67463,402.22769 H 372.5809 l -6.47417,-2.9222 -3.12372,0.22673 -3.7787,7.85968 1.33514,8.08642 12.26817,1.1336 1.56186,5.16422 -5.34056,30.10362 0.22673,5.39094 8.691,4.71078 10.02614,0.68016 20.05228,-4.9375 9.79942,-12.34374 0.22673,-12.57046 17.382,-15.71938 0.8817,-6.9528 -15.82015,-0.22672 -15.82014,-7.68335 0,0 m 32.09373,30.75859 -4.00542,1.36033 0.8817,3.60235 h 5.794 l 2.44356,-2.69547 -5.11384,-2.26721 0,0 z","name":"Spain"},"is":{"path":"m 298.87112,181.32508 -4.93749,-2.79624 -6.65051,4.20695 -5.71843,5.29018 0.15115,2.94738 7.40625,0.93208 -0.45345,5.29018 -2.61989,2.64508 0.62978,1.71301 7.40624,0.47864 v 8.56504 l 10.65593,1.86416 6.32302,3.57717 7.10395,0.30229 12.19259,-6.0711 9.42155,-12.44451 0.15115,-8.4139 -5.71843,-4.83673 -4.78635,-4.0558 -2.16645,1.56186 -3.24968,4.20695 -3.70312,-0.47864 -3.70312,-4.0558 -4.78635,0.45345 -6.9528,5.76881 -4.18176,4.50924 -2.3176,-2.0153 -0.15115,-4.98788 2.3176,-1.56187 -1.66263,-2.5947 0,0 z","name":"Iceland"},"no":{"path":"m 505.18796,21.738124 -4.15657,-4.181757 -9.22002,4.484053 h -16.92856 l -2.67028,9.874994 9.49713,8.388706 4.15657,-0.604591 5.94514,-10.17729 5.03827,3.602358 -3.57717,7.179523 -1.78858,10.479586 4.15656,6.574932 8.91773,-14.963639 11.588,-14.081943 -4.45886,-3.879462 -6.49936,-2.69547 0,0 m 5.03826,-17.9614046 -7.43143,6.8772276 4.45886,6.877228 h 8.01084 l 3.27487,4.484054 9.79942,5.088644 11.2857,-6.574932 7.73374,-6.574932 -2.67028,-5.3909405 -7.73374,-4.4840534 -5.64285,5.0886449 -3.85427,-4.7863491 -2.97257,0.3022957 -3.85428,8.3887064 -5.64285,-5.6932361 -0.60459,-3.8794619 -4.15657,0.2771044 0,0 m 16.92856,30.8341646 -5.94515,5.390941 -5.03826,3.879462 2.36799,4.181757 4.76115,1.486288 7.73374,-3.602358 3.57716,-4.484053 -3.27487,-5.390941 -4.18176,-1.461096 0,0 m 46.55355,108.498976 5.08864,-3.72831 -0.45344,-4.18176 -3.22449,-1.86416 0.45344,-5.11383 h 2.77105 v -2.79624 l -12.01626,-3.24968 -18.01178,1.86416 -1.83897,7.91007 -4.15657,-1.38552 -2.77104,-4.66039 -8.79177,0.45344 -0.93208,8.84215 -4.15656,1.86416 -2.3176,-4.6604 -18.49043,14.88807 3.70313,4.18176 -6.92761,3.24967 -15.71938,31.18685 -5.54209,3.72831 0.45344,2.79624 5.54209,2.79623 -1.38552,6.04592 -9.24521,-0.47864 -2.77105,-3.24968 -5.99553,6.978 -3.70312,2.79623 -0.93208,6.52455 -3.22449,1.86416 -8.31313,1.86416 -4.15657,13.04909 2.77105,21.41262 3.22449,9.77423 3.70312,3.72831 8.31313,-0.45344 12.01626,-11.63839 4.61001,-7.91007 1.38552,11.63839 7.85969,-13.95599 0.45344,-39.12211 6.39859,-4.03061 1.91454,-21.58895 19.39731,-27.93716 9.24521,-3.24968 4.15657,-5.11384 13.85522,3.24968 6.92761,4.18176 2.3176,-11.63839 11.56281,-6.97799 6.95281,12.11702 0,0 z","name":"Norway"},"ge":{"path":"m 674.47357,400.11162 8.23756,10.75669 10.27805,4.73596 6.32302,-0.0252 10.85746,-2.94738 2.72066,-4.25733 -32.11892,-12.01626 -6.29783,3.75351 0,0 z","name":"Georgia"},"am":{"path":"m 710.39638,414.54624 12.09183,15.76976 -3.55198,4.15656 -8.56504,-1.48628 -10.63073,-9.52232 0.5794,-6.24744 10.07652,-2.67028 0,0 z","name":"Armenia"},"az":{"path":"m 714.65371,409.07972 -2.54432,4.33291 11.86511,15.56823 4.13137,-1.33514 6.80166,7.12914 2.94738,-12.49489 7.38105,1.18399 -0.30229,-3.57717 -12.14221,-10.63073 -2.3176,6.24745 -15.82015,-6.42379 0,0 z","name":"Azerbaijan"},"cy":{"path":"m 643.61421,464.8029 3.09854,2.24203 -9.59789,9.09406 -4.58482,-0.15115 -3.40083,-2.39317 0.45344,-4.45886 6.95281,-0.45345 7.07875,-3.87946 0,0 z","name":"Cyprus"},"gb":{"path":"m 399.03178,261.35787 -4.61001,6.978 1.83896,2.79623 h 10.63074 v 4.6604 l -2.77105,3.72831 1.83897,9.77423 5.99553,11.63838 4.61001,10.70631 7.38105,2.79624 3.22449,5.59247 -0.45344,5.11383 -4.61001,2.79624 -0.45345,2.3176 3.22449,1.86416 -2.77104,3.72831 -6.47417,2.79624 -12.4697,-1.38553 -19.4225,8.84215 -6.47417,-3.24967 18.49043,-10.70631 -2.3176,-1.38552 -9.69866,-0.93208 5.99553,-8.84215 0.93208,-7.45663 7.85969,-0.93208 -1.38552,-14.43462 -9.24521,-0.45344 -2.77105,-3.24968 0.45345,-10.70631 -5.54209,0.45344 5.54209,-18.61638 10.17729,-7.45662 3.27487,3.22448 0,0 m -19.39731,31.21204 -8.31314,0.93208 -0.45344,7.45663 5.54209,3.72831 5.99553,-1.38552 2.3176,-4.18176 -5.08864,-6.54974 0,0 z","name":"United Kingdom"},"ie":{"path":"m 382.38032,305.36709 -2.29241,15.11479 -20.32939,7.45663 h -6.47416 l -4.61001,-3.24968 v -2.79624 l 10.17729,-6.52454 -2.77105,-5.59248 0.45344,-7.91007 8.79177,0.45345 4.03061,-9.47194 -0.52902,8.4139 6.82685,5.41613 6.72608,-1.30995 0,0 z","name":"Ireland"},"se":{"path":"m 529.01894,149.25654 4.9375,4.55963 h 9.24521 l 5.08864,9.77423 1.38553,16.75222 -12.4697,8.84215 v 8.84215 l -8.79177,12.11702 -5.08865,0.45344 -6.92761,11.63839 0.45345,11.18494 12.01625,8.84215 -0.93208,5.11384 -4.61001,6.97799 -6.92761,6.04591 0.45345,20.0271 -10.63074,3.72831 -3.70312,7.91007 h -5.08864 l -2.77105,-13.95598 -11.56281,-17.73469 9.49713,-15.89571 0.65497,-39.27326 6.54974,-3.60236 1.58705,-22.47064 18.66676,-26.72799 8.96811,-3.14891 0,0 m 1.93973,114.84719 -5.31536,4.20695 2.67027,6.17187 4.71078,-4.58482 -2.06569,-5.794 0,0 z","name":"Sweden"},"fi":{"path":"m 551.86746,180.393 5.2146,2.29241 3.22449,6.04591 -3.22449,4.18176 -16.17282,17.6843 -2.77104,9.32079 3.70312,13.50254 12.4697,9.32079 16.62626,-7.91008 13.40178,-1.86415 12.4697,-20.0271 -9.24521,-21.89124 -8.79177,-20.95918 1.38552,-13.50254 -5.54209,-0.93208 -1.4359,-9.8498 -7.45663,-12.1674 -8.26275,5.71843 -3.24968,13.27582 -8.76657,-5.26499 -12.1926,-2.97257 -2.72066,3.1741 4.68558,4.23214 8.53986,-0.15115 6.87723,11.10937 1.23437,17.63392 0,0 z","name":"Finland"},"lv":{"path":"m 580.28326,267.12668 -17.25605,-2.79623 0.37787,9.64827 15.99648,9.77423 6.54974,-1.91454 -0.37787,-7.35586 -5.29017,-7.35587 0,0 z","name":"Latvia"},"lt":{"path":"m 561.99437,275.51539 -5.41613,-0.12596 -7.43144,7.10395 h -6.29783 l 0.37787,8.89254 -3.7787,6.97799 13.60331,0.12596 3.90465,-0.50383 3.90466,4.71078 8.94291,-0.37787 8.56505,-10.90784 -0.50383,-6.47417 -15.87052,-9.42155 0,0 z","name":"Lithuania"},"by":{"path":"m 561.6165,304.71212 3.77869,6.22225 -1.51147,4.96269 0.25191,3.92985 1.38552,4.71077 7.80931,-4.43367 9.69865,0.25191 6.80166,2.79624 h 17.25604 l 5.03827,-12.06664 3.02295,-4.55962 v -3.04815 l -10.83226,-15.24075 -9.5727,-3.80388 -7.8093,-0.8817 -6.80166,2.16645 0.25191,6.85204 -9.44674,11.94068 -9.32078,0.20153 0,0 z","name":"Belarus"},"pl":{"path":"m 563.6318,326.04916 2.14126,3.92985 0.50383,4.18175 -1.76339,4.0558 -4.03061,7.75893 -3.40083,1.53667 -4.40848,-1.91454 -2.64509,0.12595 -6.42378,2.41837 -7.30548,-2.16645 -11.83992,-8.38871 -11.588,-6.22225 -4.66039,-7.10395 -0.8817,-16.75222 9.06887,-7.88488 11.83992,-3.92985 4.40848,-0.50382 -1.76339,3.55197 1.13361,1.38552 19.92632,0.37787 4.28253,-0.12595 7.05356,10.80707 -1.76339,4.43367 0.75574,5.2146 1.36033,5.2146 0,0 z","name":"Poland"},"it":{"path":"m 478.23326,423.338 -6.6757,3.37564 0.8817,13.02391 5.34055,0.90688 4.00542,-3.82907 v -12.34375 l -3.55197,-1.13361 0,0 m -13.32621,-41.31375 -1.56186,3.95504 0.42826,4.30771 6.02072,7.02838 9.47193,-0.32749 20.90879,24.28443 13.0491,3.77869 7.70854,7.28029 1.83897,16.60108 4.13137,-2.41837 3.57717,-9.04368 -0.8817,-6.49936 6.12149,-0.55421 0.8817,-3.67793 -17.25605,-8.26275 -16.37435,-16.09725 -6.52455,-9.62308 -1.58706,-9.14444 8.33833,-1.99012 -2.14126,-6.02072 -5.11384,-4.30771 -4.40848,-0.20153 -6.14668,1.68781 -5.794,8.11161 -3.50159,2.3176 -5.41614,-3.32526 -5.76881,2.14126 0,0 m 50.81088,65.59818 -3.65274,-1.96492 -12.4697,1.96492 0.42825,3.37563 11.21014,5.64286 1.68781,1.83896 2.94739,0.42826 -0.15115,-11.28571 0,0 z","name":"Italy"},"fr":{"path":"m 478.91342,407.16518 -4.9123,4.9375 -0.45345,4.48405 4.00542,2.46875 1.56186,-0.22672 0.8817,-6.52455 -1.08323,-5.13903 0,0 m -43.90845,-71.19064 -5.56728,1.36033 -11.13456,12.11702 -3.35045,0.22672 -4.45886,-3.14891 -2.897,0.68016 -2.21683,6.9528 -16.27359,0.45345 0.45344,3.60236 11.13456,7.40624 12.92315,10.32844 -0.22673,12.34374 -6.90242,12.11702 14.93845,7.17952 15.16517,0.45345 4.68558,-5.39094 9.5727,0.22672 2.67028,2.46875 9.5727,-0.68017 4.91231,-6.29783 -6.24745,-7.40624 -0.45344,-4.71078 1.33514,-5.16421 -3.12373,-4.48406 -5.34055,1.56186 -0.68017,-4.03061 11.81473,-13.0239 v -7.85969 l -7.80931,-4.48406 -4.00542,-0.68016 -18.49042,-12.11702 0,0 z","name":"France"},"nl":{"path":"m 459.41535,309.7 -11.41167,5.61766 2.41837,2.19165 0.25191,5.61766 -2.41836,-0.47864 -2.67028,-4.15656 -6.3734,10.10171 9.79942,2.0405 3.65274,3.85427 1.93973,0.0504 1.28476,-8.71619 6.17187,-2.59471 -2.64509,-13.52773 0,0 z","name":"Netherlands"},"be":{"path":"m 438.05312,330.48283 -1.61225,4.03061 17.33163,11.43686 4.98787,1.18399 0.17634,-5.41613 -4.35809,-4.88712 h -2.67028 l -3.65274,-4.15656 -10.20248,-2.19165 0,0 z","name":"Belgium"},"de":{"path":"m 462.06044,308.71754 8.99329,-1.4611 v -6.34821 l 7.53221,-1.23437 4.13137,4.15656 4.3581,0.47864 6.80165,-2.94738 6.07111,1.71301 5.34056,4.6352 0.73054,17.35681 5.34056,7.10395 -7.02837,0.98246 -11.66358,7.33067 0.98246,2.44356 10.4292,9.77423 -0.73054,4.88711 -9.69866,4.88712 -8.9933,0.25191 -2.19164,4.6352 h -4.61001 l -2.19165,-4.88711 -8.01083,-1.96493 -0.25192,-8.06122 -6.80165,-4.6352 0.73055,-5.86957 -4.61001,-6.34821 1.20918,-8.31313 6.29783,-2.94739 -2.16645,-15.61861 0,0 z","name":"Germany"},"dk":{"path":"m 476.24314,267.45417 -10.45439,11.56281 -0.37787,7.53221 4.76116,12.41931 7.45663,-1.41071 -0.93208,-10.1521 5.13903,-5.74362 -0.10077,-4.50924 -3.62755,-9.39636 -1.86416,-0.3023 0,0 m 11.76435,20.50573 -2.3428,-0.10077 -3.07334,2.82143 0.37787,4.40848 7.28029,0.20153 0.37787,-4.98788 -2.61989,-2.34279 0,0 z","name":"Denmark"},"ch":{"path":"m 466.5193,362.87886 -10.98341,11.68877 0.22672,1.18399 4.50924,-1.41072 4.0558,5.64286 6.85204,-2.41837 4.73597,3.67793 1.93973,-1.10841 5.84438,-9.16964 -1.48628,-1.41071 -5.76881,-0.15115 -2.79624,-5.71843 -7.12914,-0.80612 0,0 z","name":"Switzerland"},"cz":{"path":"m 505.61621,351.51758 h 7.48182 3.67793 l 5.97034,4.25733 11.05899,-9.19483 -10.7315,-7.65816 -10.63073,-5.13903 -7.28029,1.30995 -9.87499,6.34821 10.32843,10.07653 0,0 z","name":"Czech Republic"},"sk":{"path":"m 524.28297,357.21081 1.73821,1.53667 0.22672,2.6199 19.22097,-0.42825 14.2079,-6.12149 -0.22673,-6.22226 -2.72066,1.20919 -3.90465,-2.09088 -2.39317,-0.10077 -6.29783,2.51913 -8.56505,-2.06568 -11.28571,9.14444 0,0 z","name":"Slovakia"},"at":{"path":"m 485.96699,364.74301 -1.63743,3.40083 1.41071,2.41837 5.86957,-1.20919 h 4.98788 l 5.41614,4.58482 11.51242,-2.09088 8.46429,-5.03826 2.16645,-3.40082 -0.32749,-4.38329 -7.60777,-5.69324 -10.20249,0.10077 -0.8565,5.794 -10.7315,5.23979 -8.46428,0.2771 0,0 z","name":"Austria"},"hu":{"path":"m 526.55019,363.43307 -2.92219,4.58482 0.22672,7.00318 4.66039,2.39317 14.33386,0.42826 19.97671,-16.8278 0.10077,-3.72831 -2.16646,-1.08323 -14.43462,6.54974 -19.77518,0.68017 0,0 z","name":"Hungary"},"si":{"path":"m 521.66308,369.45379 -6.39859,3.82908 -11.94069,2.6199 2.39318,6.90241 8.36351,0.10077 7.70854,-6.44898 -0.12595,-7.00318 0,0 z","name":"Slovenia"},"hr":{"path":"m 523.72877,377.43944 -8.89254,7.33067 h -9.01849 l -1.08322,6.34821 4.13137,1.08322 2.06569,-3.07334 3.24968,2.84662 2.5947,9.06887 17.81026,8.31314 1.76339,-2.01531 -18.06217,-18.64157 1.83897,-3.40083 17.15528,-0.65497 1.7382,-5.46651 -11.18494,0.32748 -4.10618,-2.06568 0,0 z","name":"Croatia"},"ba":{"path":"m 521.66308,386.96175 -0.93208,1.53667 16.90337,17.43239 6.19706,-9.11926 -0.22672,-3.60235 -5.41613,-6.57494 -16.5255,0.32749 0,0 z","name":"Bosnia and Herzegovina"},"mt":{"path":"m 516.14618,466.38995 -4.20695,0.85651 0.15115,4.66039 3.7787,1.25957 1.68781,-1.41072 -1.41071,-5.36575 0,0 z","name":"Malta"},"ua":{"path":"m 573.98543,321.99336 -7.30548,4.10618 1.81378,7.75893 -6.75128,14.23309 0.0504,6.27263 3.1741,2.01531 20.35458,1.00765 5.69324,-4.71077 6.09629,2.04049 8.74139,11.66358 -6.39859,11.48724 7.60777,2.21683 9.95057,-11.46204 5.69324,1.03284 5.29017,3.67793 -4.66039,6.14668 6.29783,9.82461 h 6.70089 l 3.45121,-6.54974 7.10395,-1.4359 0.20153,-5.31537 -13.20025,-2.0405 0.40306,-5.71842 h 12.79719 l 13.80483,-11.05899 6.0963,-5.31537 1.00765,-16.77741 -27.20661,-2.44356 -11.15975,-15.74456 -7.70854,-2.64509 -9.34598,0.40306 -4.20695,10.40401 -19.1454,0.25191 -6.22225,-2.87181 -9.01849,-0.45344 0,0 z","name":"Ukraine"},"md":{"path":"m 587.03453,358.67191 7.80931,12.01625 -0.65498,6.80166 2.79624,0.12595 6.62531,-11.21013 -7.96045,-9.87499 -4.50925,-1.86416 -4.10618,4.00542 0,0 z","name":"Moldova"},"ro":{"path":"m 565.44558,358.3948 -0.65498,3.72832 -14.58577,12.14221 12.1926,17.88583 7.8093,5.46652 h 14.05676 l 4.6352,-3.87947 6.22225,-0.80612 4.6352,2.79624 8.21237,-9.34598 -1.58705,-4.68558 -8.33833,-2.14126 -5.69323,-0.27711 0.2771,-8.01084 -7.55739,-11.89029 -19.62403,-0.98247 0,0 z","name":"Romania"},"rs":{"path":"m 548.74374,375.87757 -5.16422,3.87947 h -2.51913 l -1.71301,5.34055 6.0963,7.07876 0.40306,5.61766 -7.5574,10.68112 1.05804,3.1993 4.38329,0.80612 3.45121,-4.68558 1.86415,-0.12596 3.17411,3.07334 9.67346,-2.94738 -0.80612,-13.75446 -12.34374,-18.16294 0,0 z","name":"Serbia"},"bg":{"path":"m 563.58142,395.65275 0.40306,12.54528 4.23214,8.81696 15.89572,0.2771 7.15433,-5.06345 7.02838,-2.79624 -1.71301,-8.01084 1.58705,-4.28252 -3.57717,-1.86416 -4.9123,0.40306 -3.85427,3.87947 -16.17282,0.12595 -6.07111,-4.03061 0,0 z","name":"Bulgaria"},"al":{"path":"m 544.88947,414.21875 v 11.61319 l 3.32525,6.27264 2.39317,-0.2771 4.10619,-7.48182 -2.39318,-3.35045 -0.93207,-8.28794 -3.17411,-2.94738 -3.32525,4.45886 0,0 z","name":"Albania"},"mk":{"path":"m 562.27147,409.81027 -8.48947,2.79624 0.40306,7.20471 1.99011,2.54432 10.07653,-4.68558 -3.98023,-7.85969 0,0 z","name":"Macedonia"},"gr":{"path":"m 551.66593,433.96874 -0.2771,3.35044 11.66357,5.86958 5.56728,2.14126 -2.92219,3.07334 -6.49936,0.65497 -0.93208,2.94739 2.24203,5.06345 7.28029,3.87946 3.1741,0.27711 0.40306,-8.69101 4.76116,-5.74362 -12.99871,-15.3667 1.71301,-5.2146 3.04814,-0.12595 4.63521,3.72831 2.92219,-1.46109 0.93208,-5.21461 13.65369,0.12596 0.52901,-8.01084 -5.69323,4.00542 -16.70184,-0.40306 -10.85746,5.61766 -5.64285,9.49713 0,0 m 25.31727,32.72351 4.10618,0.12596 1.71301,2.54432 h 5.97034 l 3.98023,-1.4611 1.33514,1.61225 -2.64509,3.4764 -11.66358,0.40306 -2.11607,-2.79624 -2.24202,-1.33514 1.56186,-2.56951 0,0 z","name":"Greece"}}});
Index: public/vendors/vmap/maps/continents/jquery.vmap.north-america.js
===================================================================
--- public/vendors/vmap/maps/continents/jquery.vmap.north-america.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/continents/jquery.vmap.north-america.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'north-america_en', {"width":950,"height":550,"paths":{"mx":{"path":"m 330.70592,371.79351 8.52959,26.86025 -3.97341,2.22511 0.44149,5.3332 7.50533,5.77469 v 10.68406 l 9.27129,8.90044 -3.97341,-26.24217 -5.29788,-17.35939 1.32447,-12.00853 4.4149,0.44149 1.76596,4.00873 -1.76596,10.22491 22.95748,44.92603 v 16.01726 l 18.54259,21.79195 20.30854,9.34193 8.38831,-4.89171 11.92023,9.78342 7.06384,-7.11682 -3.09043,-8.01745 10.15428,-3.10809 3.09043,1.78361 3.09043,-3.10809 h 4.85639 l 8.8298,-15.57577 -4.4149,-4.00872 -17.21811,4.00872 -3.97342,11.56704 -10.15427,1.78362 -11.92023,-4.89171 -5.29788,-16.90024 4.00873,-21.31514 -8.19406,-5.10362 -3.90277,-20.46748 -3.26702,-1.39511 -5.96895,6.05724 -6.85193,-3.65553 -2.68426,-13.65088 -27.14281,-2.84319 -14.02172,-10.54279 -13.35066,0.68873 0,0 z","name":"Mexico"},"gl":{"path":"m 655.00687,62.11471 -2.40171,3.832134 4.32661,4.326603 -1.9249,4.326603 6.2515,8.158736 7.68193,-2.401706 10.08363,-0.953618 11.53172,12.485339 7.68193,20.644079 -6.23384,12.96215 8.63554,-1.44809 4.80342,2.87851 0.4768,6.2515 -10.56044,0.47681 5.75703,5.75703 7.20512,1.44809 -15.84066,21.12089 -1.9249,12.96214 3.35532,10.56045 -2.4017,6.2515 4.3266,13.43895 8.15874,9.13002 2.4017,-0.47681 5.28023,-1.44809 0.4768,7.68193 3.35533,4.80341 6.23384,-0.47681 4.80341,-17.76556 14.41024,-17.76556 21.61535,-8.63555 13.43896,-16.81194 6.23384,2.87852 h 12.96215 l 10.56044,-10.56044 12.96215,-5.28023 1.44809,-8.15873 -8.15874,-7.20512 -7.20512,-2.40171 -3.84979,-10.08363 9.13001,-5.28022 14.41024,7.68193 4.80341,-5.28023 -7.68193,-4.3266 16.33514,-22.092161 -2.87852,-9.606824 -7.68193,-0.47681 2.87852,-8.635545 9.60682,-4.326603 19.69046,-17.288752 -5.75703,-6.233839 -22.09216,1.924896 -11.53172,11.531721 6.7283,-14.887045 -7.68192,-1.924897 -4.32661,7.681927 -6.23384,-5.280221 -17.28875,1.924897 4.80342,-7.681928 28.326,-0.953618 -7.20512,-9.606824 -30.72771,-5.757031 -12.48534,1.924897 0.47681,6.251499 -12.96215,-4.326602 0.47681,-4.326603 -9.13001,1.924897 -1.9249,4.803412 9.60682,3.355324 -10.08363,7.205118 -7.20512,-8.158736 -10.08363,-2.878516 -1.44809,7.681928 h -10.08363 l -3.84979,-8.158737 -15.84067,-2.401706 -8.63554,4.326603 -0.47681,5.757031 -11.03726,-1.448088 -6.7283,2.878515 0.47681,6.728309 v 3.355325 l -12.48534,2.401706 -5.75703,-3.832134 -3.8498,6.23384 5.75703,6.251499 12.00853,-1.448087 0.95362,3.849793 -9.13001,4.326603 -8.14108,-3.885113 0,0 m 38.4273,74.91204 2.87851,4.3266 -1.44809,5.28022 h -2.87851 l -3.8498,-4.3266 0.95362,-3.35533 4.34427,-1.92489 0,0 m 120.04998,-12.00853 8.15873,2.4017 -0.47681,6.72831 -8.63554,-4.3266 -1.9249,-2.40171 2.87852,-2.4017 0,0 z","name":"Greenland"},"us":{"path":"m 210.05551,67.90706 6.11022,11.425763 3.92044,-0.88298 v -3.955751 l -10.03066,-6.587032 0,0 m -34.45388,100.5008 -0.30022,5.31554 3.81448,-0.88298 v -2.36639 l -3.51426,-2.06617 0,0 m -5.86299,2.36639 -7.62895,3.84979 1.18319,4.13235 2.9315,-2.36639 5.86299,-2.6666 -2.34873,-2.94915 0,0 m -31.69899,5.01532 -5.28022,-1.18319 -0.88298,2.36639 0.58277,4.43256 5.58043,-5.61576 0,0 m -11.16087,-0.28255 -4.99767,-2.06617 -1.76596,3.24936 3.23171,3.24937 3.53192,-4.43256 0,0 m -17.30641,-4.73277 -2.34873,-3.24937 -2.34872,0.88298 v 4.43256 l 2.64894,1.76596 2.04851,-3.83213 0,0 M 90.5,149.77698 l 2.931494,2.06617 -0.88298,2.36639 H 90.5 v -4.43256 l 0,0 m 15.06364,263.11042 -0.24723,4.11469 3.60256,2.41937 2.15447,-1.9249 -5.5098,-4.60916 0,0 m 9.34193,6.05725 -3.35532,2.41936 2.87851,3.62022 3.35533,-2.89617 -2.87852,-3.14341 0,0 m 6.72831,5.79235 -2.87852,3.86745 0.95362,2.41937 4.07937,-1.9249 -2.15447,-4.36192 0,0 m 4.78575,7.48767 -1.67766,9.6598 1.67766,3.62022 5.5098,-1.69532 2.87851,-4.83873 -6.00426,-5.56278 -2.38405,-1.18319 0,0 m 440.14795,37.80921 -4.66214,-1.5717 -3.74383,2.34872 1.87191,2.18979 6.37512,0.93596 0.15894,-3.90277 0,0 M 252.3326,52.967036 l -14.81641,3.514261 3.05512,16.688325 16.12321,4.397241 0.86532,3.514261 -23.96408,7.470012 -13.50959,22.392374 4.78575,23.71685 7.84086,5.26256 6.11023,-5.70405 1.7483,3.51426 -7.41704,8.77682 -28.76749,13.17407 -18.31301,4.39724 -0.44149,6.58703 42.27709,-12.29108 17.43003,-4.83874 16.12322,-19.76109 17.87151,-11.84959 -9.14767,15.36385 10.03065,1.32447 17.0062,-7.47001 3.05511,12.29108 11.7613,2.63128 12.20278,11.8496 0.86533,8.77682 -1.74831,2.18979 2.17214,8.33533 h 3.05511 l 0.44149,-14.05704 h 3.47894 l 0.86532,34.68346 8.72384,-7.47001 -6.11022,-36.00793 h -9.14767 L 316.80781,141.6359 366.06044,58.194278 317.2493,19.996557 262.76943,30.53934 l -2.17213,16.688325 11.76129,7.028522 -4.36192,11.425763 -15.66407,-12.714914 0,0 m 98.27569,200.348194 -1.76596,7.09916 -6.1632,-3.99107 h -3.07277 l -1.76596,7.54065 -21.56238,48.31668 5.72172,42.10049 7.04618,3.54958 1.32447,11.53172 h 14.51619 l 14.0747,10.63108 27.70792,2.6666 3.07277,14.18066 4.39724,3.10809 6.16321,-6.19852 4.83873,2.20745 4.39724,20.37918 7.47001,4.87406 6.1632,-11.53173 18.91344,-13.73917 12.30874,5.75703 10.56044,0.88298 0.44149,-6.64001 21.98621,0.44149 4.39724,4.87405 0.88298,11.07257 -2.63128,6.19853 3.07277,10.63108 h 6.60469 l 6.60469,-10.18959 -2.63128,-4.87405 -2.63128,-10.63109 3.95575,-11.97321 18.03046,-15.50513 13.63321,-3.99107 -1.76596,-12.85619 18.91343,-20.39684 18.91344,-3.10809 -3.07277,-10.61342 18.47194,-10.63108 v -14.18066 l -1.76596,-0.88298 -6.60469,2.20745 -0.88298,8.68852 -21.95089,0.26489 -17.20045,11.42577 -27.00153,8.8298 -4.30895,-5.28022 12.25577,-18.54259 -6.05724,-5.77469 -4.11469,-7.84086 -8.52959,-6.85193 -9.27129,-0.77702 -17.51833,-11.95555 -124.57084,-20.5028 0,0 z","name":"United States of America"},"bb":{"path":"m 586.02846,499.68435 -2.17213,1.57171 1.71298,3.14341 2.80788,-1.57171 -2.34873,-3.14341 0,0 z","name":"Barbados"},"tt":{"path":"m 586.32867,511.92246 -1.87191,1.73064 -2.03086,0.31787 v 2.50767 l 3.74384,3.44362 1.55404,-2.50767 0.93596,-2.82553 -0.31787,-2.34873 -2.0132,-0.31787 0,0 z","name":"Trinidad and Tobago"},"do":{"path":"m 552.54585,468.93898 -9.34193,-6.11022 -4.4149,-1.50106 -1.4834,10.59576 1.55404,2.98447 2.03085,-2.34873 5.91597,-1.5717 5.13895,1.09489 0.60042,-3.14341 0,0 z","name":"Dominican Republic"},"ht":{"path":"m 530.91284,460.00323 6.0749,0.63574 -0.72404,7.45235 -0.60043,3.92044 -7.0815,-0.38852 -1.25383,1.88958 -2.17213,-0.15893 -0.77702,-4.07937 7.47001,-0.61809 -0.45915,-4.2383 -3.42596,-1.41277 2.94915,-3.00213 0,0 z","name":"Haiti"},"cu":{"path":"m 477.91637,445.0632 v 2.24277 l 9.39491,0.1766 4.43256,-2.57831 0.68872,1.88958 9.21832,2.24277 8.19405,7.39938 -1.87192,2.5783 0.33554,2.93149 6.83426,1.71298 6.83427,-3.09043 3.07277,-3.09043 -4.43256,-2.24277 -22.86919,-13.4213 -8.01746,-0.86532 -11.81427,4.11469 0,0 z","name":"Cuba"},"bs":{"path":"m 511.04579,431.30637 -2.22511,-0.68872 -0.1766,4.29128 2.73724,2.7549 1.87192,-2.7549 -2.20745,-3.60256 0,0 m 4.43256,6.71065 -3.07278,1.71298 2.89618,4.13235 1.53639,-2.06618 -1.35979,-3.77915 0,0 m 9.90703,3.09043 -3.24936,-0.1766 0.33553,2.06618 2.38405,3.44362 2.04851,-2.24277 -1.51873,-3.09043 0,0 m -1.53638,-4.11469 -5.29788,-2.24277 -1.02426,-5.3332 2.04851,-0.86532 2.04852,4.13235 2.04851,1.55404 0.1766,2.7549 0,0 m -5.12129,-10.84299 -2.73724,-0.68873 -0.51212,-3.44362 -2.89618,-1.02426 1.87192,-1.88958 3.4083,1.20086 2.56064,1.55404 -1.69532,4.29129 0,0 z","name":"Bahamas"},"jm":{"path":"m 509.84493,467.43792 -6.14554,1.55404 v 1.71298 l 3.5849,2.06618 h 3.7615 l 2.38404,-2.7549 -3.5849,-2.5783 0,0 z","name":"Jamaica"},"ca":{"path":"m 447.68313,37.073393 0.38851,7.099161 -14.09236,14.604491 3.53192,11.831934 10.17193,-2.754898 5.88065,-8.688524 14.86938,-5.527456 12.13215,-0.794682 -9.39491,-10.26023 -4.69745,3.549581 -3.53192,-1.183194 -1.96022,-4.344262 -4.30894,-4.344263 -8.98874,0.812342 0,0 m 18.40131,-20.90897 -3.12575,5.527456 15.27555,5.527456 5.47448,-8.282354 2.34873,5.527456 h 3.92043 l 7.43469,-8.282354 -9.0064,-2.366387 -3.53192,-2.754898 -4.69745,4.732774 -14.09236,0.370851 0,0 m 26.63068,11.054912 -12.13215,5.121285 v 3.938091 l 15.66407,5.915967 -3.53192,3.938092 2.34872,5.121284 9.78342,-4.344262 h 8.22938 l 3.92043,6.304478 6.65767,-6.710649 -1.5717,-6.322138 -5.47448,1.977876 -0.77702,-7.893843 2.73724,-4.732773 h -2.73724 l -4.30895,2.754898 -1.96021,1.571704 1.18319,5.527456 -3.12575,2.366387 -4.69745,-0.388511 -1.1832,-7.099161 -9.02405,-7.046181 0,0 m 16.05258,-12.238105 -1.1832,3.938091 7.4347,3.54958 5.47447,-3.161068 -0.38851,-2.366387 -11.33746,-1.960216 0,0 m 5.86298,-6.7106493 -5.47447,1.9778753 0.38851,2.754898 12.13215,-0.794682 -0.38851,-2.7548979 -6.65768,-1.1831934 0,0 m 26.24217,6.7106493 -0.77702,2.754898 -1.96021,2.754898 v 3.938091 l 7.43469,-1.183193 7.8232,6.710649 h 2.73724 v -6.710649 l -7.8232,-8.688525 -7.4347,0.423831 0,0 m 19.97302,7.893842 3.12575,3.549581 -2.73724,4.732773 1.96021,5.121285 8.61789,-4.732774 v -3.54958 l -5.08597,-5.915967 -5.88064,0.794682 0,0 m 11.35512,-9.077036 0.38851,6.304479 h 10.5781 l 2.73724,2.366386 -0.38851,2.754899 -9.39491,1.183193 6.65767,9.077036 9.0064,1.571705 12.52066,-5.527456 -18.0128,-27.231108 -5.47447,3.5495802 0.38851,4.7327738 -6.26916,-2.366387 -2.73724,3.584899 0,0 m -91.22951,44.590498 -14.86938,3.938091 -8.61789,7.505332 0.77702,8.282354 15.66407,4.732773 -3.53192,7.893843 -11.35513,-7.099161 -3.12575,5.915967 7.4347,5.121285 -0.38851,8.282352 11.35512,3.16107 13.70385,-0.79468 2.34873,-4.34426 10.17193,11.44342 7.04618,-2.36639 1.1832,-7.89384 5.08596,3.54958 0.77702,-7.893843 -6.26915,-3.938091 0.38851,-24.847061 -5.47448,-4.344263 -5.86299,7.893843 -16.44109,-14.198321 0,0 m 47.76923,17.35939 -5.08597,-2.366387 -2.73724,3.54958 5.47448,8.688525 0.38851,8.282354 11.74364,-7.099161 V 76.542606 l 4.30894,-4.344262 -4.30894,-3.161069 h -7.04618 l -2.73724,6.710649 0,0 m 25.05897,-3.54958 -8.22937,6.710649 1.96022,8.282353 h 5.08596 l 2.34873,-4.344262 3.53192,3.54958 3.53192,-0.388511 9.39491,-7.893842 -17.62429,-5.915967 0,0 m -0.79468,-13.032787 -1.96021,3.938091 8.61788,3.161069 2.34873,-3.54958 -9.0064,-3.54958 0,0 m -5.08596,-14.993003 -8.61789,1.183193 -5.08597,4.732774 9.39491,0.388511 -2.73724,7.09916 1.96022,3.161069 2.73724,-0.388511 6.65767,-10.648741 -4.30894,-5.527455 0,0 m 14.88704,-2.754898 -4.69745,1.571704 0.77702,6.304478 7.8232,5.121285 0.38852,3.938092 -2.34873,2.366387 1.18319,7.893842 30.14494,9.854059 8.22938,2.754898 8.22937,-7.099161 -9.78342,-7.893842 -9.00639,2.366387 -12.52066,-1.183194 -4.69746,-4.732773 -1.18319,-13.015128 -7.8232,-3.938091 -4.71512,-4.308943 0,0 m 24.65281,41.040917 -8.61789,-0.794682 -10.17193,3.938091 -5.47448,7.487672 1.57171,20.520456 16.8296,0.79468 16.05258,7.89385 11.35512,13.01512 8.61789,-0.38851 -2.34873,12.22045 -7.8232,13.01513 -8.61789,3.93809 -6.26916,-1.1832 -3.12575,-2.75489 -4.69745,6.30447 1.96021,6.30448 6.65768,0.38851 8.22937,-3.93809 7.04618,18.15407 17.62429,11.44343 12.13214,-15.38152 -10.17193,-16.5647 5.88065,-6.71065 8.22937,13.80981 14.86939,-13.01513 -2.73724,-5.91597 -10.17193,3.16107 -7.04618,-19.33727 6.65767,-11.03725 -13.31534,-14.19832 -7.43469,5.12129 -7.04619,-15.38152 -14.86938,1.97788 -3.92043,-18.542585 -12.13215,8.282354 -1.18319,10.260231 h -6.65767 l 0.77702,-9.077038 9.34193,-13.809809 0,0 m 17.62428,7.09916 -3.12575,3.161069 2.73724,4.344263 12.92683,1.571704 -8.22938,-8.688524 -4.30894,-0.388512 0,0 M 592.56251,44.967236 v 3.54958 l -8.61788,1.977875 2.34872,3.938092 9.78342,3.938091 10.96662,1.183194 7.8232,5.527456 7.82321,-4.344263 -5.47448,-5.527456 h 7.04618 l 4.30894,-4.732773 10.57811,-1.571705 V 46.53894 l -5.88065,-3.938091 0.77702,-4.344262 16.44109,2.754898 24.28195,-9.465548 -9.00639,-2.754898 2.34872,-3.161069 h 18.78982 l 3.12575,-3.161069 -37.9858,-13.4212978 -9.0064,-3.1610689 -9.78342,7.0991607 -10.96662,-9.0770363 -5.88064,-0.3885112 -1.1832,7.5053315 -7.43469,-6.7106494 -8.61789,2.7548981 1.57171,4.3442623 12.92683,2.754898 -0.77702,6.304478 7.04618,4.344263 17.23577,-4.344263 0.38851,5.915967 -14.09236,6.710649 -8.61789,-6.710649 -7.8232,0.794682 7.8232,11.054912 -3.92043,1.977876 -5.88065,-5.121285 -4.30894,2.754898 3.92043,7.487671 h 6.65767 l -1.5717,7.099161 -5.47448,-0.794682 -7.04618,-7.505332 -4.66214,0.830002 0,0 m -34.89537,108.588894 -7.47001,9.39491 -0.45915,10.34853 6.53405,-3.76149 h 7.92916 l 5.59809,5.17426 5.13895,-4.23831 -17.27109,-16.9179 0,0 m 90.96461,122.20446 -18.6662,17.87152 1.87192,4.2383 22.85153,8.45895 3.26702,-5.63341 -1.87192,-9.39491 -7.47001,0.93596 -4.20298,-4.69746 6.9932,-7.04618 -2.77256,-4.73277 0,0 M 367.31428,59.624706 l 3.51426,5.315541 1.76596,7.09916 8.79448,2.20745 6.1632,-6.64001 5.28022,2.6666 14.95769,1.32447 10.56044,-4.43256 1.76596,14.622151 h 6.1632 v -6.198521 l 6.1632,0.44149 15.39918,18.171732 10.11895,6.198521 -5.28022,8.42363 2.20745,2.20745 19.76109,3.99107 0.44149,8.86512 5.28023,0.88298 1.32447,-13.29768 8.35299,-2.20745 6.1632,9.30661 13.19172,6.19852 6.60469,1.32447 4.39725,-5.31554 0.44149,-8.42363 7.9115,-4.87405 2.63128,7.09916 -7.04618,12.4147 0.88298,6.19852 3.95575,-6.19852 7.9115,-7.09916 0.44149,-9.30661 -4.39724,-7.09916 1.32447,-5.757031 10.56044,-5.31554 4.83873,3.54958 0.88298,31.027921 7.47002,-6.64001 4.39724,2.6666 -6.16321,10.63108 7.91151,1.76596 11.44342,-17.73024 9.67746,10.18959 -3.95575,18.17173 -9.67746,5.31554 -9.23597,-4.43256 -16.70599,3.54958 1.76596,5.75703 -4.39724,7.09916 -13.63321,3.10809 -15.39918,11.97322 -13.63321,18.17173 -1.76596,5.75703 9.23597,3.54958 3.51426,8.86512 12.75024,12.85619 20.2379,8.86512 -4.39724,20.37918 -0.44149,5.75703 5.28022,3.54958 7.04618,-9.30661 0.88298,-17.73024 11.00194,-0.44149 5.28022,-10.18959 0.88298,-15.50513 14.0747,-27.47834 17.58897,6.19852 9.23597,12.85619 -3.95575,12.85619 7.04618,3.99107 17.14747,-11.53172 4.83873,31.46941 15.84067,19.05471 0.44149,9.7481 -17.58897,4.43256 -8.35299,8.86512 -17.58896,-3.99107 -8.79449,-0.44149 -15.39917,11.97321 9.23597,-2.20745 11.44343,-2.20745 2.20745,2.6666 -3.07277,9.7481 0.44149,8.86513 5.28022,3.54958 5.28022,-1.32447 2.64894,-3.99107 h 3.51426 l -5.72171,10.63108 -11.00193,0.44149 -4.83874,7.09916 h -6.1632 l -1.76596,-5.31554 8.79448,-8.86512 -10.56044,3.54958 -0.47681,-15.06365 -3.03745,-1.76596 -9.23597,3.99107 -0.88298,7.54065 h -21.12089 l -18.03045,12.41471 -24.19366,7.98214 -2.63128,-3.54958 12.18513,-18.18939 -6.92257,-6.65768 -4.39724,-8.44129 -8.95342,-6.83426 -9.60682,-0.79468 -17.21811,-12.06151 -124.87106,-20.52046 -2.06617,-8.45895 -11.44342,-10.63108 v -8.86512 l 1.76596,-7.98214 -0.88298,-4.43256 -4.39724,-4.43256 -0.88298,-7.09916 11.44342,-7.98215 -7.04618,-38.10942 -9.67746,-0.44149 -8.79449,-11.53172 48.31668,-82.099494 0,0 m -43.07178,140.835334 -3.00213,5.75703 1.04192,4.07937 1.96021,1.21851 -0.45914,1.66 -2.1015,0.60043 0.60043,6.05724 2.26043,2.27809 1.80128,-1.96021 -2.26043,-5.89831 1.34213,-4.69745 3.30234,-4.39725 -2.4017,-4.07936 -2.08384,-0.61809 0,0 m 9.9247,34.50686 -2.70192,1.05958 4.96235,5.75703 1.20085,6.81661 4.96235,5.29788 4.20299,-0.75936 v -6.95789 l -5.10363,-3.17873 -7.52299,-8.03512 0,0 z","name":"Canada"},"gt":{"path":"m 432.05438,488.50582 10.47215,7.66427 10.56044,-13.12108 -1.80128,-2.71958 -3.60256,-0.12362 v -7.68193 l -2.70192,-1.64234 -8.1764,2.43703 3.12575,7.20511 -7.87618,7.98214 0,0 z","name":"Guatemala"},"hn":{"path":"m 454.4291,483.66709 16.31747,-0.61808 4.83873,5.75703 -3.01979,-0.68873 -5.81001,0.24724 -7.59363,7.13448 -3.24937,7.22278 -2.13681,-1.13022 -0.0177,-7.9115 -4.69745,-3.14341 5.36852,-6.86959 0,0 z","name":"Honduras"},"sv":{"path":"m 444.00993,496.89414 8.30002,4.13234 -0.12362,-6.55171 -4.25597,-2.59596 -3.92043,5.01533 0,0 z","name":"El Salvador"},"ni":{"path":"m 472.42423,489.54774 3.86746,0.77702 0.12361,7.92917 -4.50319,12.85619 -12.13215,-1.20086 -2.70192,-6.19852 3.60256,-7.52299 6.83426,-6.35746 4.90937,-0.28255 0,0 z","name":"Nicaragua"},"cr":{"path":"m 471.78849,512.27565 2.45468,4.80341 1.99554,2.64894 -2.68426,7.96448 -5.12129,-3.60256 -8.37065,-7.66426 v -5.06831 l 11.72598,0.9183 0,0 z","name":"Costa Rica"},"pa":{"path":"m 477.45722,520.45205 -2.5783,8.05278 8.51193,2.20745 5.28022,1.04191 0.90064,-6.23384 5.66873,-2.86085 5.03299,2.59596 1.97787,3.16107 2.40171,-0.28256 1.88958,-5.73937 -6.28682,-2.59596 -4.76809,-2.59596 -4.7681,3.24937 -5.66873,2.86085 -5.79235,-2.33107 -1.80128,-0.52978 0,0 z","name":"Panama"},"bz":{"path":"m 449.14888,472.40027 -0.0883,6.44575 h 1.48341 l 5.05064,-9.43023 h -3.42596 l -3.01979,2.98448 0,0 z","name":"Belize"}}});
Index: public/vendors/vmap/maps/continents/jquery.vmap.south-america.js
===================================================================
--- public/vendors/vmap/maps/continents/jquery.vmap.south-america.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/continents/jquery.vmap.south-america.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'south-america_en', {"width":950,"height":550,"paths":{"fk":{"path":"m 534.552,493.51923 -6.16906,-0.68024 -6.14561,4.12835 4.45674,4.83204 7.85793,-8.28015 0,0 m 6.14561,-3.09626 -2.04072,6.54437 -5.81721,5.16043 0.35184,1.71233 9.92211,-3.79996 4.10489,-5.16043 -6.52091,-4.45674 0,0 z","name":"Falkland Islands"},"ec":{"path":"m 352.17758,89.293073 -11.09493,6.896216 -0.79752,10.227041 -2.22837,3.35428 6.99004,6.70857 -3.02589,3.30737 0.70369,8.44434 12.50233,2.97898 18.92941,-22.40097 -0.0469,-7.81102 -9.07767,-0.58642 -12.85417,-11.118387 0,0 z","name":"Ecuador"},"co":{"path":"m 407.37077,4.6854166 -4.83205,-0.4925868 -31.94777,26.3416682 -3.37774,9.265325 -4.36291,0.492586 1.94689,20.47754 -11.14185,27.326842 12.10356,10.250498 15.50476,0.985174 10.64926,15.622037 15.4813,0.49259 -0.49258,11.7048 h 5.79376 l 6.28634,-21.46271 -5.81721,-7.318434 1.4543,-13.651693 12.10356,-0.985174 -1.4543,-31.713211 -27.11574,-8.772737 -6.28634,-17.076345 15.50476,-21.4861694 0,0 z","name":"Colombia"},"ve":{"path":"m 399.70048,19.087718 1.03209,6.075238 7.62337,2.416021 1.73578,-11.188758 8.04559,-8.3270639 8.04558,9.4295199 18.50719,5.043151 15.66896,-3.283912 10.67271,13.159106 8.04559,5.043151 -8.81965,13.440584 2.95552,10.180128 -5.04315,6.239434 -5.23081,4.386369 -11.32949,-5.699934 -2.60368,2.62713 v 8.115955 l 8.28015,3.940695 -6.09869,6.591281 -6.09869,6.591281 -8.04559,-0.656782 -8.0925,-8.89002 -1.71232,-33.448993 -27.63178,-9.42952 -5.0197,-14.707236 5.11352,-7.646825 0,0 z","name":"Venezuela"},"gy":{"path":"m 480.83658,38.345519 16.9356,15.340562 -6.73202,7.787563 -0.5395,4.620934 8.84311,9.124585 -0.21111,8.772738 -15.38747,5.864129 -9.21842,-12.455411 1.97035,-14.965258 -3.94069,-11.141845 8.28015,-12.947997 0,0 z","name":"Guyana"},"sr":{"path":"m 499.78944,54.788537 4.78513,4.386369 7.41226,-4.597478 6.75548,0.211109 -0.86789,2.62713 -2.83824,5.911042 -0.44567,14.707236 -13.4875,5.488825 0.65678,-9.42952 -8.70237,-8.115954 0.44568,-4.17526 6.28634,-7.013499 0,0 z","name":"Suriname"},"gf":{"path":"m 520.90031,56.336667 13.72206,8.561629 -7.17769,14.261562 -2.60368,3.283912 -7.62337,-4.386368 0.21111,-15.364019 3.47157,-6.356716 0,0 z","name":"French Guiana"},"pe":{"path":"m 340.05056,121.35813 -4.55056,4.59748 0.30493,7.34189 39.73534,72.43372 41.26002,26.59969 6.38017,-10.69617 1.52467,-23.52688 -3.33082,-14.66033 -11.23568,-18.95286 -6.6851,2.13454 -3.02589,3.35428 -13.34676,-15.29365 3.33082,-18.03806 15.48131,-10.0863 -1.21974,-9.47643 -15.76278,-0.60987 -8.18633,-13.74552 -4.55056,-1.52468 0.30493,8.2567 -20.31334,24.13675 -15.17637,-3.65921 -0.93826,-8.58509 0,0 z","name":"Peru"},"bo":{"path":"m 419.05211,175.94145 19.30471,-8.42089 6.38018,0.60987 4.24563,17.73312 29.41447,9.78137 4.8555,14.98872 12.12702,1.52467 5.16043,12.83071 -3.63576,11.61098 -19.72693,1.52467 -7.27152,18.64793 -15.4813,-0.30493 -4.8555,-0.9148 -8.93693,8.67891 -4.40983,-0.42222 -15.17636,-35.16132 4.19871,-6.28635 1.47776,-24.8639 -3.75304,-14.80107 -3.91724,-6.75547 0,0 z","name":"Bolivia"},"py":{"path":"m 496.5759,238.61726 5.16043,5.62956 -0.60987,11.91592 14.87144,-0.91481 11.23567,14.37885 -0.91481,12.83071 -7.27152,11.00111 -14.87143,0.60987 -0.60987,-6.12215 4.24563,-10.08631 -14.5665,-9.17149 h -12.12701 l -9.10113,-9.78137 6.61473,-18.90595 17.94424,-1.38394 0,0 z","name":"Paraguay"},"uy":{"path":"m 516.7485,314.66329 -4.80858,5.13698 1.9938,27.63177 15.106,4.38637 19.21089,-19.2578 -31.50211,-17.89732 0,0 z","name":"Uruguay"},"ar":{"path":"m 528.73478,282.45749 4.55057,4.26909 -17.28745,25.68488 -6.07524,6.73202 2.11108,29.34411 13.34676,16.20845 -11.21221,19.56273 -8.49126,3.65922 h -9.711 l 2.72096,15.27019 -15.17637,5.20735 3.63576,12.83072 -9.10113,29.03916 11.23567,9.1715 -6.07523,14.96526 -10.32087,16.20845 5.46537,11.30604 -13.34676,2.13455 -10.93074,-13.44059 -1.82961,-41.86988 -16.98252,-71.12016 5.13698,-24.86391 -10.93074,-31.78358 7.27153,-41.26001 6.6851,-7.95176 -1.64195,-6.02833 8.58508,-7.83447 19.14052,1.31356 10.69617,11.42333 12.36159,0.21111 12.66651,7.74065 -3.72958,8.72582 0.89135,8.81965 17.94423,-0.84443 8.39743,-12.83072 0,0 m -38.82053,235.94911 0.60987,13.44058 10.32087,-0.9148 8.79619,-5.81722 -14.87143,-3.04935 -4.8555,-3.65921 0,0 z","name":"Argentina"},"cl":{"path":"m 480.81312,507.40549 -10.01593,22.00221 17.28745,1.82961 0.30494,-14.66032 -7.57646,-9.1715 0,0 m -3.40119,-3.44811 -7.52955,8.32706 -0.9148,9.78137 -14.5665,-8.25669 -15.4813,-22.30715 -4.55056,-7.95176 6.38017,-8.25669 -0.60987,-10.39124 -7.27152,-3.04935 -5.7703,-4.26908 1.21974,-5.81722 7.57645,-2.13454 1.52467,-33.61319 -11.82208,-6.73202 -7.71719,-174.96216 1.9938,-3.47157 15.106,34.83293 4.83204,0.0938 1.57159,5.55919 -6.42709,7.78757 -7.3888,41.91679 10.50852,32.27617 -4.8555,24.44169 17.12325,71.87077 1.80616,42.03408 12.26776,14.19119 12.99491,-1.89998 0,0 m -49.98584,-87.93848 -3.02589,4.57402 1.52467,7.95176 3.02589,0.30493 1.52468,-10.0863 -3.04935,-2.74441 0,0 z","name":"Chile"},"br":{"path":"m 549.30615,330.8952 14.66032,-28.19473 0.5395,-23.69109 27.3503,-17.6393 h 15.31711 l 12.03319,-20.38371 2.18146,-39.12547 -4.92587,-10.46161 28.99225,-26.45895 1.10246,-29.20336 -39.38349,-19.28126 -47.56982,-14.87143 -22.42443,-2.204914 6.02833,-12.666519 -1.64196,-19.281257 -4.90241,-1.6185 -7.24807,14.402301 -3.79995,4.761673 -9.75791,-4.315999 -32.81567,11.564063 -10.93074,-13.768975 1.75924,-14.378845 -10.32087,10.508519 -11.39986,-6.145607 -1.14937,1.6185 0.0235,4.996238 9.82828,5.277716 -14.75414,15.551671 -9.31224,-0.09383 -9.42952,-9.593716 -10.67272,0.328391 -1.31356,11.399868 6.12215,7.435722 -7.22461,23.15158 -8.44434,0.65678 -13.44059,8.49126 -3.28391,16.67759 11.65789,12.47886 2.13454,-2.41602 8.18633,-2.20491 6.99004,11.77517 20.00841,-8.58509 7.7641,0.44568 5.34809,18.92941 28.54658,9.05421 4.92587,15.106 12.15048,1.4543 5.79375,14.42576 -3.91723,12.83072 5.11352,6.70856 -0.75061,9.99248 13.6986,-1.29011 12.54924,15.8566 -0.98517,11.14185 7.43571,6.28635 -17.82695,26.99845 31.38482,17.56893 0,0 z","name":"Brazil"}}});
Index: public/vendors/vmap/maps/jquery.vmap.algeria.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.algeria.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.algeria.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add Algeria Map Data Points */
+jQuery.fn.vectorMap('addMap', 'dz_fr', {"width": 600, "height": 400, "paths": {"1": {"path":"M 268.306 457.87 c 0 0 2.249 -0.725 2.249 -0.725 c 0 0 -0.496 -2.893 -0.496 -2.893 c 0 0 -3.133 -7.454 -3.133 -7.454 c 0 0 -2.249 -3.262 -2.249 -3.262 c 0 0 0.031 -6.131 0.031 -6.131 c 0 0 -1.682 -5.848 -1.682 -5.848 c 0 0 -2.49 -5.061 -2.49 -5.061 c 0 0 -6.095 -6.187 -6.095 -6.187 c 0 0 -1.521 -7.254 -1.521 -7.254 c 0 0 -4.417 -0.47 -4.417 -0.47 c 0 0 -4.163 0.675 -4.163 0.675 c 0 0 0.63 -56.826 0.63 -56.826 c 0 0 -0.259 -38.388 -0.259 -38.388 c 0 0 -8.571 -12.135 -8.571 -12.135 c 0 0 -2.714 -6.038 -2.714 -6.038 c 0 0 7.482 -7.683 7.482 -7.683 c 0 0 1.19 -2.448 1.19 -2.448 c 0 0 2.635 -0.807 2.635 -0.807 c 0 0 0.883 0.813 0.883 0.813 c 0 0 1.749 -0.209 1.749 -0.209 c 0 0 0.138 0.823 0.138 0.823 c 0 0 2.35 -1.681 2.35 -1.681 c 0 0 0.465 -8.884 0.465 -8.884 c 0 0 2.565 -6.436 2.565 -6.436 c 0 0 -1.848 -2.78 -1.848 -2.78 c 0 0 -0.051 -6.214 -0.051 -6.214 c 0 0 1.856 -3.176 1.856 -3.176 c 0 0 0.81 -10.075 0.81 -10.075 c 0 0 3.164 -5.032 3.164 -5.032 c 0 0 1.104 -3.51 1.104 -3.51 c 0 0 0.784 -10.595 0.784 -10.595 c 0 0 1.118 -4.885 1.118 -4.885 c 0 0 -4.273 -23.743 -4.273 -23.743 c 0 0 2.643 -13.284 2.643 -13.284 c 0 0 0.684 -28.618 0.684 -28.618 c 0 0 -21.085 13.188 -21.085 13.188 c 0 0 -15.816 11.178 -15.816 11.178 c 0 0 -8.624 9.693 -8.624 9.693 c 0 0 -3.966 6.909 -3.966 6.909 c 0 0 -10.189 7.171 -10.189 7.171 c 0 0 -1.53 5.245 -1.53 5.245 c 0 0 1.021 6.805 1.021 6.805 c 0 0 -0.608 2.721 -0.608 2.721 c 0 0 -5.818 4.933 -5.818 4.933 c 0 0 -11.195 0.456 -11.195 0.456 c 0 0 -13.243 3.621 -13.243 3.621 c 0 0 -6.827 9.299 -6.827 9.299 c 0 0 -6.535 4.925 -6.535 4.925 c 0 0 -1.732 3.77 -1.732 3.77 c 0 0 -6.146 7.528 -6.146 7.528 c 0 0 -3.367 10.625 -3.367 10.625 c 0 0 1.165 1.254 1.165 1.254 c 0 0 -3.322 10.957 -3.322 10.957 c 0 0 -1.78 1.059 -1.78 1.059 c 0 0 -7.687 -0.561 -7.687 -0.561 c 0 0 -3.857 1.585 -3.857 1.585 c 0 0 -2.317 1.98 -2.317 1.98 c 0 0 -7.18 9.722 -7.18 9.722 c 0 0 -3.038 6.72 -3.038 6.72 c 0 0 -14.179 -0.237 -14.179 -0.237 c 0 0 -7.204 6.951 -7.204 6.951 c -0.001 0 -12.962 4.238 -12.962 4.238 c 0 0 37.868 29.441 37.868 29.441 c 0 0 91.412 67.584 91.412 67.584 c 0 0 0.398 1.977 0.398 1.977 c 0 0 27.738 18.602 27.738 18.602 c 0 0 0.568 2.959 0.568 2.959 c 0 0 -0.822 5.766 -0.822 5.766 c 0 0 0.463 1.174 0.463 1.174 c 0 0 3.119 -0.263 3.119 -0.263 c 0 0 1.575 2.019 1.575 2.019 c 0 0 6.354 2.238 6.354 2.238 c 0 0 0.896 4.331 0.896 4.331 c 0 0 3.206 2.918 3.206 2.918 c 0 0 1.768 -0.039 1.768 -0.039 c 0 0 0.994 1.532 0.994 1.532 c 0 0 1.018 -0.565 1.018 -0.565 c 0 0 1.242 0.478 1.242 0.478 c 0 0 0.795 -0.395 0.795 -0.395 c 0 0 1.279 1.151 1.279 1.151 c 0 0 1.88 -1.958 1.88 -1.958 c 0 0 1.563 0.354 1.563 0.354 c 0 0 2.465 2.305 2.465 2.305 c 0 0 1.674 3.077 1.674 3.077 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Adrar"},"2":{"path":"M 251.147 52.1578 c 0 0 0.255 -1.759 0.255 -1.759 c 0 0 -1.269 -0.908 -1.269 -0.908 c 0 0 -0.683 -1.607 -0.683 -1.607 c 0 0 0.258 -1.099 0.258 -1.099 c 0 0 -0.801 0.179 -0.801 0.179 c 0 0 -0.68 -0.703 -0.68 -0.703 c 0 0 -0.004 -1.019 -0.004 -1.019 c 0 0 1.33 -0.886 1.33 -0.886 c 0 0 -1.829 -0.536 -1.829 -0.536 c 0 0 1.196 -1.169 1.196 -1.169 c 0 0 -1.496 -1.623 -1.496 -1.623 c 0 0 0.13 -1.172 0.13 -1.172 c 0 0 2.229 -1.641 2.229 -1.641 c 0 0 1.099 -2.467 1.099 -2.467 c 0 0 -4.333 0.653 -4.333 0.653 c 0 0 -2.668 -0.688 -2.668 -0.688 c 0 0 -1.591 1.201 -1.591 1.201 c 0 0 -4.207 0.314 -4.207 0.314 c 0 0 -3.056 1.182 -3.056 1.182 c 0 0 -0.989 1.688 -0.989 1.688 c 0 0 -3.115 1.248 -3.115 1.248 c 0 0 -1 3.282 -1 3.282 c 0 0 2.055 0.32 2.055 0.32 c 0 0 2.173 -0.8 2.173 -0.8 c 0 0 0.468 1.895 0.468 1.895 c 0 0 0.537 0.021 0.537 0.021 c 0 0 -0.826 1.687 -0.826 1.687 c 0 0 0.509 -0.155 0.509 -0.155 c 0 0 0.519 1.997 0.519 1.997 c 0 0 1.774 -0.663 1.774 -0.663 c 0 0 -0.347 0.243 -0.347 0.243 c 0 0 0.593 0.041 0.593 0.041 c 0 0 0.541 1.18 0.541 1.18 c 0 0 1.563 0.984 1.563 0.984 c 0 0 2.838 -0.813 2.838 -0.813 c 0 0 2.173 3.286 2.173 3.286 c 0 0 0.06 -1.414 0.06 -1.414 c 0 0 0.518 -0.333 0.518 -0.333 c 0 0 -0.384 -0.349 -0.384 -0.349 c 0 0 2.264 -0.619 2.264 -0.619 c 0 0 0.035 -0.865 0.035 -0.865 c 0 0 1.22 -1.163 1.22 -1.163 c 0 0 1.035 1.876 1.035 1.876 c 0 0 1.906 1.174 1.906 1.174 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Chlef"},"3":{"path":"M 311.039 126.689 c 0 0 -3.193 -5.374 -3.193 -5.374 c 0 0 -4.008 -3.915 -4.008 -3.915 c 0 0 -1.49 -1.064 -1.49 -1.064 c 0 0 -8.125 -3.061 -8.125 -3.061 c 0 0 -1.408 -2.328 -1.408 -2.328 c 0 0 -3.983 -3.588 -3.983 -3.588 c 0 0 -5.242 -1.505 -5.242 -1.505 c 0 0 -1.604 -3.201 -1.604 -3.201 c 0 0 0.146 -1.212 0.146 -1.212 c 0 0 -2.38 -6.709 -2.38 -6.709 c 0 0 -1.252 0.433 -1.252 0.433 c 0 0 0.124 -0.432 0.124 -0.432 c 0 0 -1.456 -0.758 -1.456 -0.758 c 0 0 -2.267 2.288 -2.267 2.288 c 0 0 0.026 1.448 0.026 1.448 c 0 0 -0.695 -0.262 -0.695 -0.262 c 0 0 -2.258 1.064 -2.258 1.064 c 0 0 -1.209 -0.324 -1.209 -0.324 c 0 0 -3.377 -4.766 -3.377 -4.766 c 0 0 -0.441 0.087 -0.441 0.087 c 0 0 -1.244 -3.591 -1.244 -3.591 c 0 0 -0.566 -6.331 -0.566 -6.331 c 0 0 -3.015 0.373 -3.015 0.373 c 0 0 -0.437 1.043 -0.437 1.043 c 0 0 -1.978 0.888 -1.978 0.888 c 0 0 -2.349 2.563 -2.349 2.563 c 0 0 -4.876 1.753 -4.876 1.753 c 0 0 -1.839 2.088 -1.839 2.088 c 0 0 -0.366 2.438 -0.366 2.438 c 0 0 -1.644 0.977 -1.644 0.977 c 0 0 -0.273 -1.14 -0.273 -1.14 c 0 0 -3.773 2.229 -3.773 2.229 c 0 0 0.808 1.346 0.808 1.346 c 0 0 -2.194 1.46 -2.194 1.46 c 0 0 0.863 1.461 0.863 1.461 c 0 0 -0.165 0.989 -0.165 0.989 c 0 0 2.206 0.969 2.206 0.969 c 0 0 1.613 1.795 1.613 1.795 c 0 0 3.495 -0.817 3.495 -0.817 c 0 0 1.828 1.584 1.828 1.584 c 0 0 0.565 1.551 0.565 1.551 c 0 0 -0.247 2.655 -0.247 2.655 c 0 0 1.457 0.411 1.457 0.411 c 0 0 0.124 0.991 0.124 0.991 c 0 0 1.142 1.009 1.142 1.009 c 0 0 -0.82 1.435 -0.82 1.435 c 0 0 -0.285 2.856 -0.285 2.856 c 0 0 3.122 0.287 3.122 0.287 c 0 0 -0.206 1.673 -0.206 1.673 c 0 0 3.521 1.138 3.521 1.138 c 0 0 2.073 -0.452 2.073 -0.452 c 0 0 -0.203 3.901 -0.203 3.901 c 0 0 -3.998 0.134 -3.998 0.134 c 0 0 0.641 0.886 0.641 0.886 c 0 0 -0.146 1.528 -0.146 1.528 c 0 0 3.112 6.564 3.112 6.564 c 0 0 10.825 -0.946 10.825 -0.946 c 0 0 5.37 -1.604 5.37 -1.604 c 0 0 8.55 2.039 8.55 2.039 c 0 0 -0.331 -2.903 -0.331 -2.903 c 0 0 -3.66 -2.23 -3.66 -2.23 c 0 0 7.853 -0.362 7.853 -0.362 c 0 0 0.945 -0.734 0.945 -0.734 c 0 0 0.439 0.318 0.439 0.318 c 0 0 0.417 -0.754 0.417 -0.754 c 0 0 0.305 0.512 0.305 0.512 c 0 0 0.903 -0.387 0.903 -0.387 c 0 0 2.684 1.107 2.684 1.107 c 0 0 0.77 -0.422 0.77 -0.422 c 0 0 13.076 0.901 13.076 0.901 c 0 0 0 0 0 0","name":"Laghouat"},"4":{"path":"M 377.235 49.5529 c 0 0 0.701 0.387 0.701 0.387 c 0 0 0.531 2.116 0.531 2.116 c 0 0 1.615 0.739 1.615 0.739 c 0 0 -0.772 0.688 -0.772 0.688 c 0 0 0.142 1.093 0.142 1.093 c 0 0 1.311 2.659 1.311 2.659 c 0 0 -4.046 1.621 -4.046 1.621 c 0 0 -1.879 2.798 -1.879 2.798 c 0 0 -0.624 0.112 -0.624 0.112 c 0 0 -0.659 -1.052 -0.659 -1.052 c 0 0 -0.692 -0.06 -0.692 -0.06 c 0 0 -0.333 -1.191 -0.333 -1.191 c 0 0 -0.393 -0.313 -0.393 -0.313 c 0 0 -0.6 0.601 -0.6 0.601 c 0 0 0.179 -0.579 0.179 -0.579 c 0 0 -1.313 -0.926 -1.313 -0.926 c 0 0 -0.409 1.399 -0.409 1.399 c 0 0 -1.049 0.308 -1.049 0.308 c 0 0 0.063 -2.163 0.063 -2.163 c 0 0 -1.771 -0.877 -1.771 -0.877 c 0 0 -0.118 0.548 -0.118 0.548 c 0 0 -1.816 -0.27 -1.816 -0.27 c 0 0 -0.957 2.009 -0.957 2.009 c 0 0 -1.647 -0.482 -1.647 -0.482 c 0 0 0.408 -1.016 0.408 -1.016 c 0 0 -0.614 -0.53 -0.614 -0.53 c 0 0 -4.031 0.608 -4.031 0.608 c 0 0 -0.774 -1.596 -0.774 -1.596 c 0 0 -2.106 -2.413 -2.106 -2.413 c 0 0 -1.569 -0.717 -1.569 -0.717 c 0 0 -2.67 1.215 -2.67 1.215 c 0 0 -0.353 -0.517 -0.353 -0.517 c 0 0 0.464 -0.385 0.464 -0.385 c 0 0 -0.535 -0.365 -0.535 -0.365 c 0 0 0.359 -0.917 0.359 -0.917 c 0 0 -2.605 -0.267 -2.605 -0.267 c 0 0 -0.109 -0.587 -0.109 -0.587 c 0 0 -1.551 1.313 -1.551 1.313 c 0 0 -2.433 -1.298 -2.433 -1.298 c 0 0 0.803 -2.113 0.803 -2.113 c 0 0 1.65 -0.227 1.65 -0.227 c 0 0 0.715 0.51 0.715 0.51 c 0 0 -0.213 -0.771 -0.213 -0.771 c 0 0 0.78 0.116 0.78 0.116 c 0 0 1.221 -1.532 1.221 -1.532 c 0 0 0.161 -2.791 0.161 -2.791 c 0 0 2.365 -0.863 2.365 -0.863 c 0 0 -0.381 0.438 -0.381 0.438 c 0 0 0.595 1.16 0.595 1.16 c 0 0 1.011 0.369 1.011 0.369 c 0 0 -0.465 -0.805 -0.465 -0.805 c 0 0 1.122 0.603 1.122 0.603 c 0 0 0.375 -1.067 0.375 -1.067 c 0 0 2.243 -0.16 2.243 -0.16 c 0 0 0.264 -1.443 0.264 -1.443 c 0 0 1.445 1.166 1.445 1.166 c 0 0 3.62 0.066 3.62 0.066 c 0 0 -0.201 1.256 -0.201 1.256 c 0 0 1.267 0.551 1.267 0.551 c 0 0 -0.196 0.957 -0.196 0.957 c 0 0 0.998 0.166 0.998 0.166 c 0 0 2.784 -1.372 2.784 -1.372 c 0 0 0.683 -1.773 0.683 -1.773 c 0 0 1.257 -0.076 1.257 -0.076 c 0 0 0.424 2.263 0.424 2.263 c 0 0 0.736 0.045 0.736 0.045 c 0 0 0.649 2.12 0.649 2.12 c 0 0 1.024 1.332 1.024 1.332 c 0 0 2.675 0.939 2.675 0.939 c 0 0 -0.031 1.478 -0.031 1.478 c 0 0 2.814 -0.213 2.814 -0.213 c 0 0 -0.354 -1.537 -0.354 -1.537 c 0 0 0.815 -0.485 0.815 -0.485 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Oum El-Bouaghi"},"5":{"path":"M 354.598 79.5648 c 0 0 -0.634 -2.146 -0.634 -2.146 c 0 0 0.812 -0.795 0.812 -0.795 c 0 0 -0.611 -0.482 -0.611 -0.482 c 0 0 0.499 -0.58 0.499 -0.58 c 0 0 -1.347 -2.257 -1.347 -2.257 c 0 0 -0.802 -0.146 -0.802 -0.146 c 0 0 0.401 -0.844 0.401 -0.844 c 0 0 -0.438 -1.353 -0.438 -1.353 c 0 0 1.308 -1.429 1.308 -1.429 c 0 0 -0.23 -2.636 -0.23 -2.636 c 0 0 1.644 -1.396 1.644 -1.396 c 0 0 -1.052 -0.219 -1.052 -0.219 c 0 0 0.178 -1.438 0.178 -1.438 c 0 0 -0.634 -1.333 -0.634 -1.333 c 0 0 1.491 -1.386 1.491 -1.386 c 0 0 2.418 -0.599 2.418 -0.599 c 0 0 0.612 -1.514 0.612 -1.514 c 0 0 -0.74 -1.491 -0.74 -1.491 c 0 0 0.214 -1.337 0.214 -1.337 c 0 0 -2.106 -2.414 -2.106 -2.414 c 0 0 -1.569 -0.716 -1.569 -0.716 c 0 0 -2.67 1.214 -2.67 1.214 c 0 0 -0.353 -0.518 -0.353 -0.518 c 0 0 0.464 -0.385 0.464 -0.385 c 0 0 -0.535 -0.365 -0.535 -0.365 c 0 0 0.36 -0.917 0.36 -0.917 c 0 0 -2.606 -0.267 -2.606 -0.267 c 0 0 -0.11 -0.587 -0.11 -0.587 c 0 0 -1.55 1.313 -1.55 1.313 c 0 0 -2.433 -1.298 -2.433 -1.298 c 0 0 -3.583 -0.418 -3.583 -0.418 c 0 0 -0.49 0.384 -0.49 0.384 c 0 0 -0.965 0.569 -0.965 0.569 c 0 0 0.445 1.163 0.445 1.163 c 0 0 -2.807 -2.418 -2.807 -2.418 c 0 0 -1.214 0.316 -1.214 0.316 c 0 0 -1.424 1.56 -1.424 1.56 c 0 0 0.121 0.773 0.121 0.773 c 0 0 1.212 0.402 1.212 0.402 c 0 0 -0.792 1.303 -0.792 1.303 c 0 0 -0.682 -0.238 -0.682 -0.238 c 0 0 -0.502 0.541 -0.502 0.541 c 0 0 -2.294 -0.948 -2.294 -0.948 c 0 0 -0.241 0.685 -0.241 0.685 c 0 0 -0.797 -0.078 -0.797 -0.078 c 0 0 -1.382 1.093 -1.382 1.093 c 0 0 0.234 1.001 0.234 1.001 c 0 0 -0.78 1.759 -0.78 1.759 c 0 0 -1.127 -0.332 -1.127 -0.332 c 0 0 -2.661 2.963 -2.661 2.963 c 0 0 -1.817 0.906 -1.817 0.906 c 0 0 -0.723 -1.068 -0.723 -1.068 c 0 0 -1.061 -0.012 -1.061 -0.012 c 0 0 -0.828 0.921 -0.828 0.921 c 0 0 -0.075 -0.786 -0.075 -0.786 c 0 0 -0.958 1.506 -0.958 1.506 c 0 0 -1.945 -1.698 -1.945 -1.698 c 0 0 0.822 4.4 0.822 4.4 c 0 0 -0.38 2.546 -0.38 2.546 c 0 0 -0.915 1.547 -0.915 1.547 c 0 0 -0.525 -0.186 -0.525 -0.186 c 0 0 -1.186 1.173 -1.186 1.173 c 0 0 0.194 0.605 0.194 0.605 c 0 0 2.929 0.061 2.929 0.061 c 0 0 2.126 1.396 2.126 1.396 c 0 0 0.583 -0.342 0.583 -0.342 c 0 0 2.02 0.968 2.02 0.968 c 0 0 0.73 1.103 0.73 1.103 c 0 0 1.017 -0.474 1.017 -0.474 c 0 0 1.503 0.709 1.503 0.709 c 0 0 0.559 -0.079 0.559 -0.079 c 0 0 0.341 -1.11 0.341 -1.11 c 0 0 3.911 -0.103 3.911 -0.103 c 0 0 1.787 -0.953 1.787 -0.953 c 0 0 0.162 -0.935 0.162 -0.935 c 0 0 -0.656 -0.975 -0.656 -0.975 c 0 0 -1.454 -0.28 -1.454 -0.28 c 0 0 -0.321 -0.952 -0.321 -0.952 c 0 0 2.216 0.152 2.216 0.152 c 0 0 3.561 -2.397 3.561 -2.397 c 0 0 2.817 1.882 2.817 1.882 c 0 0 1.857 -0.219 1.857 -0.219 c 0 0 -2.247 2.121 -2.247 2.121 c 0 0 0.993 1.373 0.993 1.373 c 0 0 -0.826 1.425 -0.826 1.425 c 0 0 0.764 -0.211 0.764 -0.211 c 0 0 0.976 1.769 0.976 1.769 c 0 0 2.263 -2.836 2.263 -2.836 c 0 0 1.025 0.388 1.025 0.388 c 0 0 -0.085 1.186 -0.085 1.186 c 0 0 2.13 0.699 2.13 0.699 c 0 0 0.685 -1.448 0.685 -1.448 c 0 0 2.061 -0.262 2.061 -0.262 c 0 0 1.65 -1.111 1.65 -1.111 c 0 0 1.29 1.626 1.29 1.626 c 0 0 -0.779 1.125 -0.779 1.125 c 0 0 0.506 0.944 0.506 0.944 c 0 0 -0.438 2.539 -0.438 2.539 c 0 0 2.456 1.971 2.456 1.971 c 0 0 1.033 -0.363 1.033 -0.363 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Batna"},"6":{"path":"M 314.203 38.1218 c 0 0 -0.336 1.124 -0.336 1.124 c 0 0 -2.016 0.919 -2.016 0.919 c 0 0 -0.034 2.49 -0.034 2.49 c 0 0 -4.18 1.099 -4.18 1.099 c 0 0 -0.776 -1.701 -0.776 -1.701 c 0 0 0.222 -0.601 0.222 -0.601 c 0 0 -0.75 -0.99 -0.75 -0.99 c 0 0 0.743 -0.487 0.743 -0.487 c 0 0 0.148 -1.306 0.148 -1.306 c 0 0 -0.678 -1.324 -0.678 -1.324 c 0 0 1.795 -0.83 1.795 -0.83 c 0 0 2.18 -2.443 2.18 -2.443 c 0 0 -0.406 -0.66 -0.406 -0.66 c 0 0 1.259 -1.582 1.259 -1.582 c 0 0 -1.778 -0.942 -1.778 -0.942 c 0 0 0.148 -0.646 0.148 -0.646 c 0 0 1.229 -0.36 1.229 -0.36 c 0 0 0.704 0.539 0.704 0.539 c 0 0 0.672 -0.653 0.672 -0.653 c 0 0 -0.069 -1.338 -0.069 -1.338 c 0 0 -1.397 -1.952 -1.397 -1.952 c 0 0 3.611 -0.405 3.611 -0.405 c 0 0 3.398 1.061 3.398 1.061 c 0 0 2.038 1.439 2.038 1.439 c 0 0 1.871 0.364 1.871 0.364 c 0 0 -0.442 1.715 -0.442 1.715 c 0 0 2.887 1.563 2.887 1.563 c 0 0 4.324 -0.311 4.324 -0.311 c 0 0 0.029 1.315 0.029 1.315 c 0 0 0.916 0.194 0.916 0.194 c 0 0 -0.184 1.479 -0.184 1.479 c 0 0 -2.389 1.071 -2.389 1.071 c 0 0 0.252 0.685 0.252 0.685 c 0 0 -1.314 1.474 -1.314 1.474 c 0 0 0.471 0.919 0.471 0.919 c 0 0 -0.748 0.375 -0.748 0.375 c 0 0 -1.656 0.241 -1.656 0.241 c 0 0 0.025 -0.935 0.025 -0.935 c 0 0 -0.569 0.197 -0.569 0.197 c 0 0 0.023 -2.689 0.023 -2.689 c 0 0 0.535 -0.694 0.535 -0.694 c 0 0 -2.159 -1.465 -2.159 -1.465 c 0 0 -0.039 0.448 -0.039 0.448 c 0 0 -0.928 -0.088 -0.928 -0.088 c 0 0 -0.447 1.378 -0.447 1.378 c 0 0 -3.62 -0.479 -3.62 -0.479 c 0 0 -0.048 1.35 -0.048 1.35 c 0 0 -2.517 1.442 -2.517 1.442 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Béjaïa"},"7":{"path":"M 354.598 79.5648 c 0 0 -1.037 0.363 -1.037 0.363 c 0 0 -2.456 -1.971 -2.456 -1.971 c 0 0 0.438 -2.539 0.438 -2.539 c 0 0 -0.506 -0.943 -0.506 -0.943 c 0 0 0.779 -1.125 0.779 -1.125 c 0 0 -1.289 -1.626 -1.289 -1.626 c 0 0 -1.651 1.111 -1.651 1.111 c 0 0 -2.061 0.261 -2.061 0.261 c 0 0 -0.685 1.448 -0.685 1.448 c 0 0 -2.13 -0.699 -2.13 -0.699 c 0 0 0.085 -1.186 0.085 -1.186 c 0 0 -1.025 -0.387 -1.025 -0.387 c 0 0 -2.263 2.835 -2.263 2.835 c 0 0 -0.975 -1.768 -0.975 -1.768 c 0 0 -0.765 0.21 -0.765 0.21 c 0 0 0.826 -1.425 0.826 -1.425 c 0 0 -0.993 -1.373 -0.993 -1.373 c 0 0 2.247 -2.121 2.247 -2.121 c 0 0 -1.857 0.22 -1.857 0.22 c 0 0 -2.817 -1.883 -2.817 -1.883 c 0 0 -3.56 2.397 -3.56 2.397 c 0 0 -2.217 -0.152 -2.217 -0.152 c 0 0 0.321 0.952 0.321 0.952 c 0 0 1.454 0.28 1.454 0.28 c 0 0 0.656 0.975 0.656 0.975 c 0 0 -0.162 0.935 -0.162 0.935 c 0 0 -1.787 0.954 -1.787 0.954 c 0 0 -3.911 0.102 -3.911 0.102 c 0 0 -0.341 1.11 -0.341 1.11 c 0 0 -0.558 0.08 -0.558 0.08 c 0 0 -1.503 -0.709 -1.503 -0.709 c 0 0 -1.018 0.473 -1.018 0.473 c 0 0 -0.729 -1.102 -0.729 -1.102 c 0 0 -2.02 -0.969 -2.02 -0.969 c 0 0 -0.584 0.343 -0.584 0.343 c 0 0 0.446 3.492 0.446 3.492 c 0 0 0.547 0.305 0.547 0.305 c 0 0 -0.537 0.065 -0.537 0.065 c 0 0 -0.684 1.586 -0.684 1.586 c 0 0 -5.437 1.63 -5.437 1.63 c 0 0 -0.941 1.502 -0.941 1.502 c 0 0 -1.002 0.173 -1.002 0.173 c 0 0 1.299 1.086 1.299 1.086 c 0 0 -1.021 0.547 -1.021 0.547 c 0 0 -0.658 -0.445 -0.658 -0.445 c 0 0 -1.831 1.14 -1.831 1.14 c 0 0 -4.807 0.046 -4.807 0.046 c 0 0 -0.876 1.823 -0.876 1.823 c 0 0 -2.192 1.835 -2.192 1.835 c 0 0 0.522 0.302 0.522 0.302 c 0 0 0.418 3.083 0.418 3.083 c 0 0 1.216 1.271 1.216 1.271 c 0 0 -0.307 0.725 -0.307 0.725 c 0 0 1.814 0.933 1.814 0.933 c 0 0 -0.773 1.006 -0.773 1.006 c 0 0 -1.99 0.525 -1.99 0.525 c 0 0 -0.442 0.687 -0.442 0.687 c 0 0 0.935 1.143 0.935 1.143 c 0 0 1.888 0.264 1.888 0.264 c 0 0 0.385 1.491 0.385 1.491 c 0 0 2.354 0.396 2.354 0.396 c 0 0 0.57 0.73 0.57 0.73 c 0 0 -1.197 -0.003 -1.197 -0.003 c 0 0 -1.375 1.475 -1.375 1.475 c 0 0 -1.342 0.124 -1.342 0.124 c 0 0 -0.397 0.525 -0.397 0.525 c 0 0 0.45 0.688 0.45 0.688 c 0 0 6.57 2.831 6.57 2.831 c 0 0 1.081 1.471 1.081 1.471 c 0 0 3.26 0.627 3.26 0.627 c 0 0 0.39 0.95 0.39 0.95 c 0 0 1.965 -0.327 1.965 -0.327 c 0 0 0.724 1.225 0.724 1.225 c 0 0 4.001 0.998 4.001 0.998 c 0 0 -0.522 0.879 -0.522 0.879 c 0 0 0.117 1.904 0.117 1.904 c 0 0 3.919 3.499 3.919 3.499 c 0 0 0.91 -1.858 0.91 -1.858 c 0 0 0.663 -1.724 0.663 -1.724 c 0 0 -0.688 -1.585 -0.688 -1.585 c 0 0 -0.35 -4.63 -0.35 -4.63 c 0 0 -1.083 -2.091 -1.083 -2.091 c 0 0 0.858 -4.001 0.858 -4.001 c 0 0 1.969 -4.693 1.969 -4.693 c 0 0 -3.667 -3.257 -3.667 -3.257 c 0 0 0.702 -1.852 0.702 -1.852 c 0 0 -1.199 -1.354 -1.199 -1.354 c 0 0 1.889 -1.327 1.889 -1.327 c 0 0 -0.72 -0.627 -0.72 -0.627 c 0 0 1.104 -0.631 1.104 -0.631 c 0 0 2.287 1.521 2.287 1.521 c 0 0 11.929 1.271 11.929 1.271 c 0 0 5.31 -1.304 5.31 -1.304 c 0 0 5.733 2.047 5.733 2.047 c 0 0 1.45 1.393 1.45 1.393 c 0 0 1.654 -0.581 1.654 -0.581 c 0 0 1.726 -2.196 1.726 -2.196 c 0 0 -0.517 -1.926 -0.517 -1.926 c 0 0 1.047 -2.039 1.047 -2.039 c 0 0 -0.163 -3.493 -0.163 -3.493 c 0 0 0.727 -2.389 0.727 -2.389 c 0 0 -0.822 0.197 -0.822 0.197 c 0 0 0.415 -0.997 0.415 -0.997 c 0 0 -1.047 -1.056 -1.047 -1.056 c 0 0 0.4 -0.473 0.4 -0.473 c 0 0 -1.139 0.062 -1.139 0.062 c 0 0 -0.737 1.719 -0.737 1.719 c 0 0 -1.087 0.596 -1.087 0.596 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Biskra"},"8":{"path":"M 189.561 141.431 c 0 0 0.163 2.393 0.163 2.393 c 0 0 1.428 0.123 1.428 0.123 c 0 0 -0.542 2.863 -0.542 2.863 c 0 0 1.384 0.042 1.384 0.042 c 0 0 0.298 1.563 0.298 1.563 c 0 0 5.834 -3.103 5.834 -3.103 c 0 0 6.79 1.902 6.79 1.902 c 0 0 1.803 -1.33 1.803 -1.33 c 0 0 2.417 0.518 2.417 0.518 c 0 0 1.629 -2.4 1.629 -2.4 c 0 0 -0.953 4.385 -0.953 4.385 c 0 0 -2.081 -0.471 -2.081 -0.471 c 0 0 -1.103 0.817 -1.103 0.817 c 0 0 -1.05 2.219 -1.05 2.219 c 0 0 -0.139 4.177 -0.139 4.177 c 0 0 0.68 2.281 0.68 2.281 c 0 0 -0.686 0.065 -0.686 0.065 c 0 0 0.179 0.967 0.179 0.967 c 0 0 -0.602 0.846 -0.602 0.846 c 0 0 0.955 1.182 0.955 1.182 c 0 0 -1.242 1.209 -1.242 1.209 c 0 0 1.247 2.015 1.247 2.015 c 0 0 -1.014 1.204 -1.014 1.204 c 0 0 0.036 1.863 0.036 1.863 c 0 0 0.853 1.823 0.853 1.823 c 0 0 2.917 2.352 2.917 2.352 c 0 0 -0.818 2.98 -0.818 2.98 c 0 0 14.029 11.903 14.029 11.903 c 0 0 -8.624 9.693 -8.624 9.693 c 0 0 -3.966 6.909 -3.966 6.909 c 0 0 -10.189 7.171 -10.189 7.171 c 0 0 -1.53 5.245 -1.53 5.245 c 0 0 1.021 6.804 1.021 6.804 c 0 0 -0.608 2.722 -0.608 2.722 c 0 0 -5.818 4.933 -5.818 4.933 c 0 0 -11.195 0.456 -11.195 0.456 c 0 0 -13.243 3.621 -13.243 3.621 c 0 0 -6.827 9.299 -6.827 9.299 c 0 0 -6.535 4.925 -6.535 4.925 c 0 0 -1.732 3.771 -1.732 3.771 c 0 0 -6.146 7.526 -6.146 7.526 c 0 0 -3.367 10.625 -3.367 10.625 c 0 0 1.165 1.256 1.165 1.256 c 0 0 -13.244 -1.684 -13.244 -1.684 c 0 0 -3.001 -2.418 -3.001 -2.418 c 0 0 -5.835 -7.1 -5.835 -7.1 c 0 0 -0.084 -7.644 -0.084 -7.644 c 0 0 -6.775 -12.676 -6.775 -12.676 c 0 0 -5.777 -21.184 -5.777 -21.184 c 0 0 -5.817 -3.173 -5.817 -3.173 c 0 0 -8.409 -0.352 -8.409 -0.352 c 0 0 -4.977 -4.181 -4.977 -4.181 c 0 0 4.214 -5.384 4.214 -5.384 c 0 0 0.024 -1.372 0.024 -1.372 c 0 0 1.014 -1.498 1.014 -1.498 c 0 0 8.097 -5.763 8.097 -5.763 c 0 0 7.482 -3.241 7.482 -3.241 c 0 0 6.645 -5.965 6.645 -5.965 c 0 0 3.927 -1.254 3.927 -1.254 c 0 0 6.729 -0.776 6.729 -0.776 c 0 0 4.574 -1.715 4.574 -1.715 c 0 0 0.583 -0.765 0.583 -0.765 c 0 0 -1.006 -1.718 -1.006 -1.718 c 0 0 0.712 -1.927 0.712 -1.927 c 0 0 0.439 0.271 0.439 0.271 c 0 0 1.753 -2.209 1.753 -2.209 c 0 0 0.06 -2.135 0.06 -2.135 c 0 0 -0.201 -0.656 -0.201 -0.656 c 0 0 -0.495 0.514 -0.495 0.514 c 0 0 -0.386 -0.407 -0.386 -0.407 c 0 0 -0.456 -1.584 -0.456 -1.584 c 0 0 -0.47 0.188 -0.47 0.188 c 0 0 0.021 -1.495 0.021 -1.495 c 0 0 -0.024 1.793 -0.024 1.793 c 0 0 -0.667 0.211 -0.667 0.211 c 0 0 0.487 0.234 0.487 0.234 c 0 0 -0.779 -0.15 -0.779 -0.15 c 0 0 0.248 -1.646 0.248 -1.646 c 0 0 -0.643 -0.663 -0.643 -0.663 c 0 0 -0.118 0.998 -0.118 0.998 c 0 0 -0.614 -0.265 -0.614 -0.265 c 0 0 0.041 0.743 0.041 0.743 c 0 0 -0.644 -0.249 -0.644 -0.249 c 0 0 -0.354 0.62 -0.354 0.62 c 0 0 0.437 -2.005 0.437 -2.005 c 0 0 -0.625 -1.467 -0.625 -1.467 c 0 0 0.73 -0.664 0.73 -0.664 c 0 0 -0.554 -0.775 -0.554 -0.775 c 0 0 0.872 -1.707 0.872 -1.707 c 0 0 0.565 0.509 0.565 0.509 c 0 0 1.714 -1.251 1.714 -1.251 c 0 0 -0.12 -6.14 -0.12 -6.14 c 0 0 18.347 -3.483 18.347 -3.483 c 0 0 -2.126 -6.029 -2.126 -6.029 c 0 0 0.609 -2.241 0.609 -2.241 c 0 0 6.877 0.41 6.877 0.41 c 0 0 3.008 -1.097 3.008 -1.097 c 0 0 4.058 -0.094 4.058 -0.094 c 0 0 2.286 0.737 2.286 0.737 c 0 0 3.44 -0.906 3.44 -0.906 c 0 0 9.396 2.568 9.396 2.568 c 0 0 7.359 0.568 7.359 0.568 c 0 0 1.897 -1.269 1.897 -1.269 c 0 0 -1.222 -1.218 -1.222 -1.218 c 0 0 -1.895 0.225 -1.895 0.225 c 0 0 1.267 -1.027 1.267 -1.027 c 0 0 -0.083 -3.115 -0.083 -3.115 c 0 0 1.147 -1.937 1.147 -1.937 c 0 0 1.524 -0.259 1.524 -0.259 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Béchar"},"9":{"path":"M 284.26 36.7689 c 0 0 0.247 -1.279 0.247 -1.279 c 0 0 -0.585 -0.271 -0.585 -0.271 c 0 0 0.385 -0.414 0.385 -0.414 c 0 0 -0.471 -0.855 -0.471 -0.855 c 0 0 0.536 -0.479 0.536 -0.479 c 0 0 -0.888 0.351 -0.888 0.351 c 0 0 -0.756 -1.312 -0.756 -1.312 c 0 0 -1.009 0.771 -1.009 0.771 c 0 0 -0.61 -0.303 -0.61 -0.303 c 0 0 -0.7 1.808 -0.7 1.808 c 0 0 -1.118 0.075 -1.118 0.075 c 0 0 0.107 -1.082 0.107 -1.082 c 0 0 -1.49 1.068 -1.49 1.068 c 0 0 -3.771 -1.583 -3.771 -1.583 c 0 0 0.339 1.023 0.339 1.023 c 0 0 -2.109 0.599 -2.109 0.599 c 0 0 -1.479 1.646 -1.479 1.646 c 0 0 -1.06 0.141 -1.06 0.141 c 0 0 0.442 0.803 0.442 0.803 c 0 0 -0.447 0.64 -0.447 0.64 c 0 0 -1.568 -0.302 -1.568 -0.302 c 0 0 -1.037 1.464 -1.037 1.464 c 0 0 2.993 2.104 2.993 2.104 c 0 0 1.509 -1.087 1.509 -1.087 c 0 0 2.894 0.205 2.894 0.205 c 0 0 1.567 -1.178 1.567 -1.178 c 0 0 0.671 1.507 0.671 1.507 c 0 0 1.48 0.008 1.48 0.008 c 0 0 0.866 -0.967 0.866 -0.967 c 0 0 -0.188 -1.356 -0.188 -1.356 c 0 0 0.474 0.955 0.474 0.955 c 0 0 0.732 -0.597 0.732 -0.597 c 0 0 0.693 0.698 0.693 0.698 c 0 0 1.156 -1.154 1.156 -1.154 c 0 0 0.085 -1.381 0.085 -1.381 c 0 0 1.631 0.27 1.631 0.27 c 0 0 0.479 -0.536 0.479 -0.536 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Blida"},"10":{"path":"M 300.562 48.4998 c 0 0 1.468 -1.134 1.468 -1.134 c 0 0 0.186 -2.385 0.186 -2.385 c 0 0 1.708 -0.861 1.708 -0.861 c 0 0 0.796 -1.241 0.796 -1.241 c 0 0 1.361 0.091 1.361 0.091 c 0 0 0.781 -0.917 0.781 -0.917 c 0 0 0.224 -0.601 0.224 -0.601 c 0 0 -0.75 -0.99 -0.75 -0.99 c 0 0 0.742 -0.488 0.742 -0.488 c 0 0 0.148 -1.305 0.148 -1.305 c 0 0 -0.679 -1.324 -0.679 -1.324 c 0 0 -2.513 0.268 -2.513 0.268 c 0 0 -0.274 -0.535 -0.274 -0.535 c 0 0 -1.008 0.543 -1.008 0.543 c 0 0 -5.654 0.163 -5.654 0.163 c 0 0 -1.333 -0.33 -1.333 -0.33 c 0 0 -0.937 -1.637 -0.937 -1.637 c 0 0 -0.781 0.04 -0.781 0.04 c 0 0 -0.892 -1.236 -0.892 -1.236 c 0 0 -4.715 -0.709 -4.715 -0.709 c 0 0 -0.479 0.983 -0.479 0.983 c 0 0 -1.366 0.715 -1.366 0.715 c 0 0 -2.088 -0.118 -2.088 -0.118 c 0 0 -0.247 1.278 -0.247 1.278 c 0 0 2.723 2.63 2.723 2.63 c 0 0 1.561 -1.479 1.561 -1.479 c 0 0 1.357 0.704 1.357 0.704 c 0 0 -0.438 0.687 -0.438 0.687 c 0 0 0.997 1.391 0.997 1.391 c 0 0 -1.07 0.599 -1.07 0.599 c 0 0 -0.442 1.267 -0.442 1.267 c 0 0 1.07 0.978 1.07 0.978 c 0 0 -0.182 0.811 -0.182 0.811 c 0 0 -1.427 0.413 -1.427 0.413 c 0 0 -0.228 0.854 -0.228 0.854 c 0 0 0.655 1.041 0.655 1.041 c 0 0 -0.407 0.485 -0.407 0.485 c 0 0 -0.899 0.935 -0.899 0.935 c 0 0 -1.014 -0.015 -1.014 -0.015 c 0 0 0.479 0.781 0.479 0.781 c 0 0 2.788 0.435 2.788 0.435 c 0 0 1.405 2.648 1.405 2.648 c 0 0 0.532 -0.81 0.532 -0.81 c 0 0 1.537 0.153 1.537 0.153 c 0 0 0.654 0.925 0.654 0.925 c 0 0 1.071 0.222 1.071 0.222 c 0 0 0.351 1.005 0.351 1.005 c 0 0 0.802 0.049 0.802 0.049 c 0 0 1.27 -1.216 1.27 -1.216 c 0 0 2.542 0.892 2.542 0.892 c 0 0 -0.443 -1.387 -0.443 -1.387 c 0 0 1.058 -3.268 1.058 -3.268 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Bouira"},"11":{"path":"M 340.615 208.544 c 0 0 -43.124 33.261 -43.124 33.261 c 0 0 0.146 -0.413 0.146 -0.413 c 0 0 -17.526 -14.179 -17.526 -14.179 c 0 0 -11.145 0.971 -11.145 0.971 c 0 0 -10.264 3.806 -10.264 3.806 c 0 0 -0.784 10.595 -0.784 10.595 c 0 0 -1.104 3.51 -1.104 3.51 c 0 0 -3.164 5.032 -3.164 5.032 c 0 0 -0.81 10.075 -0.81 10.075 c 0 0 -1.856 3.177 -1.856 3.177 c 0 0 0.051 6.213 0.051 6.213 c 0 0 1.848 2.781 1.848 2.781 c 0 0 -2.565 6.435 -2.565 6.435 c 0 0 -0.465 8.885 -0.465 8.885 c 0 0 -2.35 1.68 -2.35 1.68 c 0 0 -0.139 -0.823 -0.139 -0.823 c 0 0 -1.748 0.209 -1.748 0.209 c 0 0 -0.883 -0.813 -0.883 -0.813 c 0 0 -2.635 0.807 -2.635 0.807 c 0 0 -1.19 2.448 -1.19 2.448 c 0 0 -7.482 7.684 -7.482 7.684 c 0 0 2.714 6.037 2.714 6.037 c 0 0 8.571 12.137 8.571 12.137 c 0 0 0.259 38.387 0.259 38.387 c 0 0 -0.63 56.825 -0.63 56.825 c 0 0 4.163 -0.675 4.163 -0.675 c 0 0 4.417 0.47 4.417 0.47 c 0 0 1.521 7.254 1.521 7.254 c 0 0 6.095 6.187 6.095 6.187 c 0 0 2.49 5.061 2.49 5.061 c 0 0 1.682 5.848 1.682 5.848 c 0 0 -0.031 6.131 -0.031 6.131 c 0 0 2.249 3.263 2.249 3.263 c 0 0 3.133 7.454 3.133 7.454 c 0 0 0.496 2.892 0.496 2.892 c 0 0 -2.249 0.725 -2.249 0.725 c 0 0 1.485 0.058 1.485 0.058 c 0 0 2.693 1.431 2.693 1.431 c 0 0 3.086 -0.021 3.086 -0.021 c 0 0 6.312 1.33 6.312 1.33 c 0 0 6.54 3.166 6.54 3.166 c 0 0 -0.412 3.706 -0.412 3.706 c 0 0 0.537 0.907 0.537 0.907 c 0 0 -0.542 1.742 -0.542 1.742 c 0 0 0.979 1.557 0.979 1.557 c 0 0 -0.357 0.987 -0.357 0.987 c 0 0 0.917 2.147 0.917 2.147 c 0 0 -1.474 1.56 -1.474 1.56 c 0 0 -0.373 1.711 -0.373 1.711 c 0 0 -2.086 2.864 -2.086 2.864 c 0 0 0.506 1.159 0.506 1.159 c 0 0 5.114 3.9 5.114 3.9 c 0 0 60.512 -13.771 60.512 -13.771 c 0 0 38.057 -37.723 38.057 -37.723 c 0 0 64.331 -46.843 64.331 -46.843 c 0 0 -0.719 -20.563 -0.719 -20.563 c 0 0 -7.48 -4.23 -7.48 -4.23 c 0 0 -2.209 0.049 -2.209 0.049 c 0 0 -1.657 -1.011 -1.657 -1.011 c 0 0 -13.903 0.818 -13.903 0.818 c 0 0 -12.891 9.613 -12.891 9.613 c 0 0 -17.177 4.161 -17.177 4.161 c 0 0 -6.243 -4.392 -6.243 -4.392 c 0 0 1.974 -2.233 1.974 -2.233 c 0 0 -5.578 -12.361 -5.578 -12.361 c 0 0 -1.04 -10.938 -1.04 -10.938 c 0 0 0.237 -3.784 0.237 -3.784 c 0 0 -5.594 -8.032 -5.594 -8.032 c 0 0 -4.477 -0.141 -4.477 -0.141 c 0 0 -2.836 -2.179 -2.836 -2.179 c 0 0 -3.687 -6.237 -3.687 -6.237 c 0 0 -1.628 -4.169 -1.628 -4.169 c 0 0 -5.061 -6.142 -5.061 -6.142 c 0 0 -5.932 -16.141 -5.932 -16.141 c 0 0 -1.532 -1.132 -1.532 -1.132 c 0 0 -0.138 -1.005 -0.138 -1.005 c 0 0 -2.248 -0.6 -2.248 -0.6 c 0 0 -1.181 -1.556 -1.181 -1.556 c 0 0 1.06 -3.062 1.06 -3.062 c 0 0 2.819 -2.351 2.819 -2.351 c 0 0 -0.418 -1.914 -0.418 -1.914 c 0 0 -12.688 -11.21 -12.688 -11.21 c 0 0 -0.039 -8.717 -0.039 -8.717 c 0 0 -3.73 -17.581 -3.73 -17.581 c 0 0 1.772 -8.354 1.772 -8.354 c 0 0 -1.292 -33.81 -1.292 -33.81 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tamanrasset"},"12":{"path":"M 377.235 49.5529 c 0 0 0.397 -1.363 0.397 -1.363 c 0 0 1.877 1.4 1.877 1.4 c 0 0 1.622 -0.03 1.622 -0.03 c 0 0 2.103 -2.353 2.103 -2.353 c 0 0 1.256 0.156 1.256 0.156 c 0 0 2.499 -1.112 2.499 -1.112 c 0 0 2.176 1.081 2.176 1.081 c 0 0 -0.663 1.284 -0.663 1.284 c 0 0 0.469 0.414 0.469 0.414 c 0 0 -0.029 4.161 -0.029 4.161 c 0 0 1.961 1.389 1.961 1.389 c 0 0 0.321 3.785 0.321 3.785 c 0 0 0.61 0.972 0.61 0.972 c 0 0 -1.389 1.917 -1.389 1.917 c 0 0 0.063 2.599 0.063 2.599 c 0 0 2.079 1.616 2.079 1.616 c 0 0 1.524 0.072 1.524 0.072 c 0 0 -2.348 3.782 -2.348 3.782 c 0 0 -0.661 3.932 -0.661 3.932 c 0 0 -1.401 0.803 -1.401 0.803 c 0 0 0.931 3.721 0.931 3.721 c 0 0 0.876 0.981 0.876 0.981 c 0 0 -1.63 1.313 -1.63 1.313 c 0 0 0.909 0.787 0.909 0.787 c 0 0 -1.388 1.372 -1.388 1.372 c 0 0 0.229 0.686 0.229 0.686 c 0 0 -1.096 0.116 -1.096 0.116 c 0 0 -1.104 1.673 -1.104 1.673 c 0 0 -5.352 2.981 -5.352 2.981 c 0 0 -0.735 4.246 -0.735 4.246 c 0 0 -8.26 -0.416 -8.26 -0.416 c 0 0 -4.263 -1.484 -4.263 -1.484 c 0 0 0.773 -5.083 0.773 -5.083 c 0 0 2.108 -3.938 2.108 -3.938 c 0 0 0.024 -1.697 0.024 -1.697 c 0 0 -0.637 -0.956 -0.637 -0.956 c 0 0 0.749 -2.004 0.749 -2.004 c 0 0 -0.869 -2.387 -0.869 -2.387 c 0 0 -1.271 -0.098 -1.271 -0.098 c 0 0 -0.661 0.97 -0.661 0.97 c 0 0 -0.441 1.352 -0.441 1.352 c 0 0 0.5 -0.146 0.5 -0.146 c 0 0 -0.088 1.582 -0.088 1.582 c 0 0 -0.908 -2.111 -0.908 -2.111 c 0 0 1.39 -3.602 1.39 -3.602 c 0 0 1.306 -0.817 1.306 -0.817 c 0 0 1.429 -2.436 1.429 -2.436 c 0 0 -1.051 -1.558 -1.051 -1.558 c 0 0 0.787 -1.188 0.787 -1.188 c 0 0 -0.763 -0.573 -0.763 -0.573 c 0 0 -0.117 -2.443 -0.117 -2.443 c 0 0 3.133 -1.132 3.133 -1.132 c 0 0 0.624 -0.112 0.624 -0.112 c 0 0 1.879 -2.798 1.879 -2.798 c 0 0 4.046 -1.621 4.046 -1.621 c 0 0 -1.311 -2.658 -1.311 -2.658 c 0 0 -0.142 -1.094 -0.142 -1.094 c 0 0 0.772 -0.688 0.772 -0.688 c 0 0 -1.615 -0.739 -1.615 -0.739 c 0 0 -0.531 -2.116 -0.531 -2.116 c 0 0 -0.698 -0.39 -0.698 -0.39 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tébessa"},"13":{"path":"M 193.764 72.7758 c 0 0 -0.686 0.069 -0.686 0.069 c 0 0 -0.264 -0.909 -0.264 -0.909 c 0 0 -3.488 -1.748 -3.488 -1.748 c 0 0 -0.331 0.33 -0.331 0.33 c 0 0 -0.372 -0.771 -0.372 -0.771 c 0 0 -1.081 0.455 -1.081 0.455 c 0 0 -2.338 -0.793 -2.338 -0.793 c 0 0 -0.918 1.336 -0.918 1.336 c 0 0 -1.082 0.265 -1.082 0.265 c 0 0 -1.053 -0.668 -1.053 -0.668 c 0 0 0.202 -0.954 0.202 -0.954 c 0 0 -0.848 -0.622 -0.848 -0.622 c 0 0 -3.998 2.927 -3.998 2.927 c 0 0 -0.671 -0.354 -0.671 -0.354 c 0 0 -2.174 1.167 -2.174 1.167 c 0 0 -3.447 0.248 -3.447 0.248 c 0 0 -1.838 -0.844 -1.838 -0.844 c 0 0 -1.167 0.414 -1.167 0.414 c 0 0 -0.104 0.95 -0.104 0.95 c 0 0 2.603 2.448 2.603 2.448 c 0 0 1.057 0.802 1.057 0.802 c 0 0 1.388 -0.219 1.388 -0.219 c 0 0 0.027 1.49 0.027 1.49 c 0 0 1.617 0.96 1.617 0.96 c 0 0 0.088 0.883 0.088 0.883 c 0 0 3.129 1.718 3.129 1.718 c 0 0 -2.502 3.209 -2.502 3.209 c 0 0 0.771 0.313 0.771 0.313 c 0 0 1.368 2.382 1.368 2.382 c 0 0 1.285 0.582 1.285 0.582 c 0 0 -2.119 2.566 -2.119 2.566 c 0 0 1.582 2.156 1.582 2.156 c 0 0 -0.213 1.807 -0.213 1.807 c 0 0 1.198 3.756 1.198 3.756 c 0 0 3.61 -2.621 3.61 -2.621 c 0 0 4.992 0.022 4.992 0.022 c 0 0 1.227 -1.408 1.227 -1.408 c 0 0 1.529 -0.482 1.529 -0.482 c 0 0 6.093 -5.633 6.093 -5.633 c 0 0 -0.362 -0.793 -0.362 -0.793 c 0 0 -0.956 -0.198 -0.956 -0.198 c 0 0 1.609 -0.95 1.609 -0.95 c 0 0 1.285 -2.754 1.285 -2.754 c 0 0 -0.23 -0.686 -0.23 -0.686 c 0 0 0.496 0.037 0.496 0.037 c 0 0 -0.273 -1.005 -0.273 -1.005 c 0 0 -2.376 0.271 -2.376 0.271 c 0 0 0.434 -3.193 0.434 -3.193 c 0 0 -1.177 0.239 -1.177 0.239 c 0 0 0.804 -1.134 0.804 -1.134 c 0 0 -1.191 -0.046 -1.191 -0.046 c 0 0 -0.506 -1.828 -0.506 -1.828 c 0 0 1.313 -2.126 1.313 -2.126 c 0 0 -1.942 -1.063 -1.942 -1.063 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tlemcen"},"14":{"path":"M 258.955 61.8178 c 0 0 -1.327 0.262 -1.327 0.262 c 0 0 0.221 1.396 0.221 1.396 c 0 0 6.776 4.105 6.776 4.105 c 0 0 1.052 1.839 1.052 1.839 c 0 0 2.688 -2.3 2.688 -2.3 c 0 0 1.052 0.797 1.052 0.797 c 0 0 0.327 1.125 0.327 1.125 c 0 0 1.748 0.418 1.748 0.418 c 0 0 -0.01 1.521 -0.01 1.521 c 0 0 -0.677 0.26 -0.677 0.26 c 0 0 -1.121 2.251 -1.121 2.251 c 0 0 1.432 1.277 1.432 1.277 c 0 0 -3.229 1.273 -3.229 1.273 c 0 0 -1.447 4.661 -1.447 4.661 c 0 0 -1.47 0.458 -1.47 0.458 c 0 0 0.167 2.428 0.167 2.428 c 0 0 -3.015 0.372 -3.015 0.372 c 0 0 -0.437 1.044 -0.437 1.044 c 0 0 -1.978 0.888 -1.978 0.888 c 0 0 -2.348 2.563 -2.348 2.563 c 0 0 -4.877 1.753 -4.877 1.753 c 0 0 -1.839 2.088 -1.839 2.088 c 0 0 -0.365 2.438 -0.365 2.438 c 0 0 -1.645 0.978 -1.645 0.978 c 0 0 -0.272 -1.14 -0.272 -1.14 c 0 0 -3.774 2.229 -3.774 2.229 c 0 0 0.808 1.346 0.808 1.346 c 0 0 -2.194 1.46 -2.194 1.46 c 0 0 -1.118 -1.577 -1.118 -1.577 c 0 0 -0.216 -1.843 -0.216 -1.843 c 0 0 -5.541 0.295 -5.541 0.295 c 0 0 0.672 -4.883 0.672 -4.883 c 0 0 -3.973 -0.827 -3.973 -0.827 c 0 0 1.657 -2.906 1.657 -2.906 c 0 0 -2.975 -1.225 -2.975 -1.225 c 0 0 -0.316 -0.531 -0.316 -0.531 c 0 0 0.755 -0.53 0.755 -0.53 c 0 0 -0.449 -1.181 -0.449 -1.181 c 0 0 -1.062 0.458 -1.062 0.458 c 0 0 -1.729 -3.065 -1.729 -3.065 c 0 0 0.385 -1.708 0.385 -1.708 c 0 0 -0.557 -0.922 -0.557 -0.922 c 0 0 3.161 -2.329 3.161 -2.329 c 0 0 -1.595 -2.433 -1.595 -2.433 c 0 0 -1.402 -0.632 -1.402 -0.632 c 0 0 -0.281 -0.991 -0.281 -0.991 c 0 0 -3.297 0.388 -3.297 0.388 c 0 0 1.071 -1.77 1.071 -1.77 c 0 0 1.552 -1.101 1.552 -1.101 c 0 0 -0.245 -0.949 -0.245 -0.949 c 0 0 1.176 -1.409 1.176 -1.409 c 0 0 1.083 -0.161 1.083 -0.161 c 0 0 1.521 0.789 1.521 0.789 c 0 0 1.112 -0.354 1.112 -0.354 c 0 0 0.873 -2.104 0.873 -2.104 c 0 0 0.688 -0.28 0.688 -0.28 c 0 0 -1.49 -1.555 -1.49 -1.555 c 0 0 0.9 -0.182 0.9 -0.182 c 0 0 1.728 -2.878 1.728 -2.878 c 0 0 1.215 -0.098 1.215 -0.098 c 0 0 0.112 -0.867 0.112 -0.867 c 0 0 0.812 0.11 0.812 0.11 c 0 0 0.164 -0.913 0.164 -0.913 c 0 0 2.058 0.206 2.058 0.206 c 0 0 0.567 -0.985 0.567 -0.985 c 0 0 1.449 -0.572 1.449 -0.572 c 0 0 1.345 1.67 1.345 1.67 c 0 0 0.589 -2.298 0.589 -2.298 c 0 0 1.271 0.93 1.271 0.93 c 0 0 0.538 -0.303 0.538 -0.303 c 0 0 1.353 0.765 1.353 0.765 c 0 0 0.063 1.414 0.063 1.414 c 0 0 1.952 -0.174 1.952 -0.174 c 0 0 1.046 1.72 1.046 1.72 c 0 0 0.813 0.153 0.813 0.153 c 0 0 0.172 -1.047 0.172 -1.047 c 0 0 0.958 0.973 0.958 0.973 c 0 0 3.798 -0.432 3.798 -0.432 c 0 0 2.435 -1.337 2.435 -1.337 c 0 0 -0.56 0.67 -0.56 0.67 c 0 0 1.55 0.067 1.55 0.067 c 0 0 -0.034 0.954 -0.034 0.954 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tiaret"},"15":{"path":"M 310.88 26.4728 c 0 0 1.398 1.952 1.398 1.952 c 0 0 0.068 1.338 0.068 1.338 c 0 0 -0.67 0.654 -0.67 0.654 c 0 0 -0.705 -0.539 -0.705 -0.539 c 0 0 -1.229 0.36 -1.229 0.36 c 0 0 -0.147 0.646 -0.147 0.646 c 0 0 1.777 0.943 1.777 0.943 c 0 0 -1.26 1.581 -1.26 1.581 c 0 0 0.406 0.661 0.406 0.661 c 0 0 -2.179 2.442 -2.179 2.442 c 0 0 -1.795 0.831 -1.795 0.831 c 0 0 -2.514 0.268 -2.514 0.268 c 0 0 -0.273 -0.535 -0.273 -0.535 c 0 0 -1.01 0.543 -1.01 0.543 c 0 0 -5.653 0.163 -5.653 0.163 c 0 0 -1.334 -0.33 -1.334 -0.33 c 0 0 -0.935 -1.637 -0.935 -1.637 c 0 0 -0.782 0.04 -0.782 0.04 c 0 0 -0.892 -1.236 -0.892 -1.236 c 0 0 -0.219 -1.694 -0.219 -1.694 c 0 0 1.417 -0.319 1.417 -0.319 c 0 0 0.845 0.592 0.845 0.592 c 0 0 -0.163 -1.288 -0.163 -1.288 c 0 0 1.354 0.313 1.354 0.313 c 0 0 -0.771 -0.862 -0.771 -0.862 c 0 0 0.386 -1.441 0.386 -1.441 c 0 0 1.042 0.231 1.042 0.231 c 0 0 0.179 -0.604 0.179 -0.604 c 0 0 0.945 -0.077 0.945 -0.077 c 0 0 0.045 -0.779 0.045 -0.779 c 0 0 1.354 -1.163 1.354 -1.163 c 0 0 -0.135 -1.239 -0.135 -1.239 c 0 0 5.439 -0.32 5.439 -0.32 c 0 0 1.851 0.426 1.851 0.426 c 0 0 0.986 -0.547 0.986 -0.547 c 0 0 3.174 0.626 3.174 0.626 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tizi-Ouzou"},"16":{"path":"M 285.549 29.5858 c 0 0 -0.27 0.609 -0.27 0.609 c 0 0 0.656 -0.216 0.656 -0.216 c 0 0 0.031 1.021 0.031 1.021 c 0 0 -2.278 0.745 -2.278 0.745 c 0 0 -0.66 -0.482 -0.66 -0.482 c 0 0 0.391 0.701 0.391 0.701 c 0 0 -0.688 0.546 -0.688 0.546 c 0 0 -1.01 0.771 -1.01 0.771 c 0 0 -0.609 -0.302 -0.609 -0.302 c 0 0 -0.701 1.807 -0.701 1.807 c 0 0 -1.117 0.075 -1.117 0.075 c 0 0 0.107 -1.082 0.107 -1.082 c 0 0 -1.49 1.068 -1.49 1.068 c 0 0 -3.771 -1.583 -3.771 -1.583 c 0 0 -0.135 -1.446 -0.135 -1.446 c 0 0 0.607 -1.614 0.607 -1.614 c 0 0 0.9 -0.174 0.9 -0.174 c 0 0 0.272 -0.944 0.272 -0.944 c 0 0 1.205 -0.234 1.205 -0.234 c 0 0 1.831 0.088 1.831 0.088 c 0 0 0.494 1.2 0.494 1.2 c 0 0 1.162 0.524 1.162 0.524 c 0 0 2.119 -0.622 2.119 -0.622 c 0 0 0.155 -1.295 0.155 -1.295 c 0 0 2.799 0.839 2.799 0.839 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Alger"},"17":{"path":"M 303.711 95.2648 c 0 0 -4.303 -3.584 -4.303 -3.584 c 0 0 0.313 -2.084 0.313 -2.084 c 0 0 -1.836 -1.982 -1.836 -1.982 c 0 0 0.299 -2.041 0.299 -2.041 c 0 0 -0.719 -4.249 -0.719 -4.249 c 0 0 -3.906 -0.974 -3.906 -0.974 c 0 0 -1.411 0.479 -1.411 0.479 c 0 0 -0.14 -1.652 -0.14 -1.652 c 0 0 -1.402 -0.321 -1.402 -0.321 c 0 0 0.209 -2.972 0.209 -2.972 c 0 0 -0.698 -0.953 -0.698 -0.953 c 0 0 0.551 -0.067 0.551 -0.067 c 0 0 0.504 -1.54 0.504 -1.54 c 0 0 -1.839 0.736 -1.839 0.736 c 0 0 -1.138 -3.13 -1.138 -3.13 c 0 0 4.281 -3.605 4.281 -3.605 c 0 0 -0.424 -1.941 -0.424 -1.941 c 0 0 0.865 -0.632 0.865 -0.632 c 0 0 0.075 -1.772 0.075 -1.772 c 0 0 -4.719 -3.806 -4.719 -3.806 c 0 0 -1.903 -1.954 -1.903 -1.954 c 0 0 -0.313 -1.257 -0.313 -1.257 c 0 0 -1.091 0.049 -1.091 0.049 c 0 0 -0.854 -1.716 -0.854 -1.716 c 0 0 -1.031 1.021 -1.031 1.021 c 0 0 0.104 1.206 0.104 1.206 c 0 0 -0.753 1.37 -0.753 1.37 c 0 0 -2.786 0.7 -2.786 0.7 c 0 0 -0.185 -2.199 -0.185 -2.199 c 0 0 -0.699 0.144 -0.699 0.144 c 0 0 -0.693 -2.337 -0.693 -2.337 c 0 0 -2.585 0.707 -2.585 0.707 c 0 0 0.677 5.005 0.677 5.005 c 0 0 -0.578 -0.259 -0.578 -0.259 c 0 0 -1.83 1.359 -1.83 1.359 c 0 0 -1.605 2.564 -1.605 2.564 c 0 0 -1.292 0.661 -1.292 0.661 c 0 0 -2.698 -1.908 -2.698 -1.908 c 0 0 -0.229 0.56 -0.229 0.56 c 0 0 -2.476 0.813 -2.476 0.813 c 0 0 -2.139 0.167 -2.139 0.167 c 0 0 -0.658 -2.362 -0.658 -2.362 c 0 0 -3.699 0.315 -3.699 0.315 c 0 0 -1.327 0.263 -1.327 0.263 c 0 0 0.221 1.396 0.221 1.396 c 0 0 6.777 4.106 6.777 4.106 c 0 0 1.051 1.838 1.051 1.838 c 0 0 2.688 -2.299 2.688 -2.299 c 0 0 1.052 0.796 1.052 0.796 c 0 0 0.327 1.125 0.327 1.125 c 0 0 1.748 0.418 1.748 0.418 c 0 0 -0.01 1.521 -0.01 1.521 c 0 0 -0.677 0.259 -0.677 0.259 c 0 0 -1.122 2.251 -1.122 2.251 c 0 0 1.432 1.277 1.432 1.277 c 0 0 -3.229 1.273 -3.229 1.273 c 0 0 -1.446 4.661 -1.446 4.661 c 0 0 -1.471 0.458 -1.471 0.458 c 0 0 0.169 2.428 0.169 2.428 c 0 0 0.566 6.331 0.566 6.331 c 0 0 1.244 3.59 1.244 3.59 c 0 0 0.441 -0.086 0.441 -0.086 c 0 0 3.376 4.766 3.376 4.766 c 0 0 1.209 0.325 1.209 0.325 c 0 0 2.258 -1.065 2.258 -1.065 c 0 0 0.695 0.262 0.695 0.262 c 0 0 -0.026 -1.447 -0.026 -1.447 c 0 0 2.266 -2.289 2.266 -2.289 c 0 0 1.456 0.758 1.456 0.758 c 0 0 -0.123 0.432 -0.123 0.432 c 0 0 1.253 -0.433 1.253 -0.433 c 0 0 2.38 6.709 2.38 6.709 c 0 0 -0.146 1.212 -0.146 1.212 c 0 0 1.604 3.201 1.604 3.201 c 0 0 5.243 1.505 5.243 1.505 c 0 0 3.983 3.588 3.983 3.588 c 0 0 1.407 2.328 1.407 2.328 c 0 0 8.125 3.061 8.125 3.061 c 0 0 1.49 1.064 1.49 1.064 c 0 0 4.01 3.915 4.01 3.915 c 0 0 3.191 5.374 3.191 5.374 c 0 0 11.872 3.224 11.872 3.224 c 0 0 -2.209 -11.442 -2.209 -11.442 c 0 0 2.42 -5.131 2.42 -5.131 c 0 0 -0.116 -1.902 -0.116 -1.902 c 0 0 0.521 -0.88 0.521 -0.88 c 0 0 -4 -0.997 -4 -0.997 c 0 0 -0.725 -1.226 -0.725 -1.226 c 0 0 -1.964 0.328 -1.964 0.328 c 0 0 -0.39 -0.95 -0.39 -0.95 c 0 0 -3.261 -0.627 -3.261 -0.627 c 0 0 -1.081 -1.472 -1.081 -1.472 c 0 0 -6.57 -2.83 -6.57 -2.83 c 0 0 -0.45 -0.689 -0.45 -0.689 c 0 0 0.395 -0.524 0.395 -0.524 c 0 0 1.344 -0.124 1.344 -0.124 c 0 0 1.375 -1.476 1.375 -1.476 c 0 0 1.195 0.003 1.195 0.003 c 0 0 -0.568 -0.73 -0.568 -0.73 c 0 0 -2.354 -0.395 -2.354 -0.395 c 0 0 -0.386 -1.492 -0.386 -1.492 c 0 0 -1.887 -0.264 -1.887 -0.264 c 0 0 -0.935 -1.142 -0.935 -1.142 c 0 0 0.443 -0.693 0.443 -0.693 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Djelfa"},"18":{"path":"M 335.112 34.2048 c 0 0 1.112 -0.339 1.112 -0.339 c 0 0 1.367 0.723 1.367 0.723 c 0 0 1.504 -0.446 1.504 -0.446 c 0 0 1.242 -1.671 1.242 -1.671 c 0 0 4.855 0.813 4.855 0.813 c 0 0 1.86 -1.232 1.86 -1.232 c 0 0 0.435 0.64 0.435 0.64 c 0 0 2.741 0.479 2.741 0.479 c 0 0 -0.254 -1.387 -0.254 -1.387 c 0 0 0.828 -0.194 0.828 -0.194 c 0 0 0.3 -0.784 0.3 -0.784 c 0 0 -2.966 -1.426 -2.966 -1.426 c 0 0 -0.699 -3.309 -0.699 -3.309 c 0 0 -1.636 -0.354 -1.636 -0.354 c 0 0 0.278 -1.183 0.278 -1.183 c 0 0 -0.458 -0.661 -0.458 -0.661 c 0 0 -5.771 2.994 -5.771 2.994 c 0 0 -3.482 0.854 -3.482 0.854 c 0 0 -0.857 -0.566 -0.857 -0.566 c 0 0 -1.676 0.329 -1.676 0.329 c 0 0 -2.381 1.442 -2.381 1.442 c 0 0 -1.033 2.037 -1.033 2.037 c 0 0 -1.852 0.936 -1.852 0.936 c 0 0 0.027 1.315 0.027 1.315 c 0 0 0.917 0.194 0.917 0.194 c 0 0 0.751 -0.023 0.751 -0.023 c 0 0 0.402 1.854 0.402 1.854 c 0 0 0.979 0.076 0.979 0.076 c 0 0 0.992 -0.957 0.992 -0.957 c 0 0 1.248 0.676 1.248 0.676 c 0 0 1.227 -0.83 1.227 -0.83 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Jijel"},"19":{"path":"M 335.112 34.2048 c 0 0 0.558 0.717 0.558 0.717 c 0 0 -0.125 2.048 -0.125 2.048 c 0 0 1.244 0.953 1.244 0.953 c 0 0 -0.114 1.348 -0.114 1.348 c 0 0 1.395 0.426 1.395 0.426 c 0 0 -0.097 1.172 -0.097 1.172 c 0 0 2.188 2.367 2.188 2.367 c 0 0 -0.978 0.521 -0.978 0.521 c 0 0 0.049 1.868 0.049 1.868 c 0 0 1.715 0.399 1.715 0.399 c 0 0 0.284 2.085 0.284 2.085 c 0 0 -0.688 0.604 -0.688 0.604 c 0 0 1.162 1.212 1.162 1.212 c 0 0 -1.2 1.294 -1.2 1.294 c 0 0 -0.965 0.569 -0.965 0.569 c 0 0 0.444 1.163 0.444 1.163 c 0 0 -2.806 -2.418 -2.806 -2.418 c 0 0 -1.214 0.316 -1.214 0.316 c 0 0 -1.424 1.56 -1.424 1.56 c 0 0 0.121 0.773 0.121 0.773 c 0 0 1.212 0.402 1.212 0.402 c 0 0 -0.792 1.303 -0.792 1.303 c 0 0 -0.682 -0.238 -0.682 -0.238 c 0 0 -0.502 0.541 -0.502 0.541 c 0 0 -2.294 -0.948 -2.294 -0.948 c 0 0 -0.241 0.685 -0.241 0.685 c 0 0 -0.797 -0.078 -0.797 -0.078 c 0 0 -1.382 1.093 -1.382 1.093 c 0 0 0.234 1.001 0.234 1.001 c 0 0 -0.78 1.759 -0.78 1.759 c 0 0 -1.127 -0.334 -1.127 -0.334 c 0 0 -3.493 -0.469 -3.493 -0.469 c 0 0 -0.547 -0.806 -0.547 -0.806 c 0 0 0.417 -0.537 0.417 -0.537 c 0 0 -0.486 -0.518 -0.486 -0.518 c 0 0 -1.107 0.239 -1.107 0.239 c 0 0 -1.474 -1.041 -1.474 -1.041 c 0 0 0.169 -0.628 0.169 -0.628 c 0 0 -0.018 -1.602 -0.018 -1.602 c 0 0 2.088 -0.288 2.088 -0.288 c 0 0 -0.484 -2.927 -0.484 -2.927 c 0 0 1.669 -2.858 1.669 -2.858 c 0 0 -0.97 -0.972 -0.97 -0.972 c 0 0 0.127 -2.078 0.127 -2.078 c 0 0 -0.963 -0.273 -0.963 -0.273 c 0 0 -1.48 -2.546 -1.48 -2.546 c 0 0 -1.203 -0.362 -1.203 -0.362 c 0 0 -0.961 0.653 -0.961 0.653 c 0 0 -2.854 0.298 -2.854 0.298 c 0 0 -0.779 -0.983 -0.779 -0.983 c 0 0 0.302 -1.874 0.302 -1.874 c 0 0 -1.26 -0.672 -1.26 -0.672 c 0 0 2.517 -1.449 2.517 -1.449 c 0 0 0.048 -1.349 0.048 -1.349 c 0 0 3.62 0.479 3.62 0.479 c 0 0 0.447 -1.378 0.447 -1.378 c 0 0 0.928 0.088 0.928 0.088 c 0 0 0.039 -0.447 0.039 -0.447 c 0 0 2.159 1.465 2.159 1.465 c 0 0 -0.535 0.692 -0.535 0.692 c 0 0 -0.024 2.691 -0.024 2.691 c 0 0 0.57 -0.199 0.57 -0.199 c 0 0 -0.025 0.937 -0.025 0.937 c 0 0 1.656 -0.241 1.656 -0.241 c 0 0 0.748 -0.375 0.748 -0.375 c 0 0 -0.471 -0.92 -0.471 -0.92 c 0 0 1.314 -1.474 1.314 -1.474 c 0 0 -0.252 -0.684 -0.252 -0.684 c 0 0 2.389 -1.072 2.389 -1.072 c 0 0 0.184 -1.478 0.184 -1.478 c 0 0 0.751 -0.023 0.751 -0.023 c 0 0 0.403 1.854 0.403 1.854 c 0 0 0.979 0.077 0.979 0.077 c 0 0 0.992 -0.958 0.992 -0.958 c 0 0 1.248 0.676 1.248 0.676 c 0 0 1.224 -0.831 1.224 -0.831 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Sétif"},"20":{"path":"M 233.026 90.7739 c 0 0 -2.853 -0.734 -2.853 -0.734 c 0 0 -4.583 3.134 -4.583 3.134 c 0 0 -1.732 -2.296 -1.732 -2.296 c 0 0 -2.898 2.009 -2.898 2.009 c 0 0 -2.172 -0.253 -2.172 -0.253 c 0 0 -2.096 -2.128 -2.096 -2.128 c 0 0 -2.331 -0.763 -2.331 -0.763 c 0 0 -1.5 -1.498 -1.5 -1.498 c 0 0 -2.199 1.248 -2.199 1.248 c 0 0 -0.138 -2.153 -0.138 -2.153 c 0 0 -0.979 -1.096 -0.979 -1.096 c 0 0 0.256 -1.511 0.256 -1.511 c 0 0 2.491 1.248 2.491 1.248 c 0 0 0.646 1.884 0.646 1.884 c 0 0 1.12 -1.667 1.12 -1.667 c 0 0 -1.379 -2.84 -1.379 -2.84 c 0 0 -2.113 -1.373 -2.113 -1.373 c 0 0 -0.294 -1.104 -0.294 -1.104 c 0 0 -1.77 -0.163 -1.77 -0.163 c 0 0 0.403 -1.189 0.403 -1.189 c 0 0 -1.328 -0.901 -1.328 -0.901 c 0 0 1.163 -0.801 1.163 -0.801 c 0 0 -0.396 -2.087 -0.396 -2.087 c 0 0 1.813 -0.197 1.813 -0.197 c 0 0 -0.485 -1.763 -0.485 -1.763 c 0 0 0.353 -0.945 0.353 -0.945 c 0 0 1.317 -0.403 1.317 -0.403 c 0 0 0.982 0.007 0.982 0.007 c 0 0 0.665 -1.239 0.665 -1.239 c 0 0 0.345 1.976 0.345 1.976 c 0 0 2.583 -0.188 2.583 -0.188 c 0 0 1.301 0.867 1.301 0.867 c 0 0 1.081 -0.098 1.081 -0.098 c 0 0 0.205 0.906 0.205 0.906 c 0 0 1.011 0.663 1.011 0.663 c 0 0 2.493 -1.648 2.493 -1.648 c 0 0 0.773 0.891 0.773 0.891 c 0 0 0.999 0.119 0.999 0.119 c 0 0 1.539 -1.518 1.539 -1.518 c 0 0 3.298 -0.388 3.298 -0.388 c 0 0 0.28 0.989 0.28 0.989 c 0 0 1.403 0.633 1.403 0.633 c 0 0 1.595 2.433 1.595 2.433 c 0 0 -3.162 2.329 -3.162 2.329 c 0 0 0.558 0.923 0.558 0.923 c 0 0 -0.385 1.708 -0.385 1.708 c 0 0 1.729 3.064 1.729 3.064 c 0 0 1.062 -0.458 1.062 -0.458 c 0 0 0.449 1.181 0.449 1.181 c 0 0 -0.755 0.531 -0.755 0.531 c 0 0 0.315 0.529 0.315 0.529 c 0 0 2.975 1.226 2.975 1.226 c 0 0 -1.655 2.904 -1.655 2.904 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Saida"},"21":{"path":"M 368.508 30.2198 c 0 0 -0.538 0.351 -0.538 0.351 c 0 0 -0.418 -0.446 -0.418 -0.446 c 0 0 -0.55 1.052 -0.55 1.052 c 0 0 -3.584 1.265 -3.584 1.265 c 0 0 -0.653 0.873 -0.653 0.873 c 0 0 0.42 1.242 0.42 1.242 c 0 0 -2.629 0.698 -2.629 0.698 c 0 0 -0.062 1.543 -0.062 1.543 c 0 0 -1.254 -0.13 -1.254 -0.13 c 0 0 -0.397 -0.7 -0.397 -0.7 c 0 0 -1.124 0.208 -1.124 0.208 c 0 0 0.207 -2.014 0.207 -2.014 c 0 0 0.97 -1.018 0.97 -1.018 c 0 0 -1.8 0.36 -1.8 0.36 c 0 0 -2.274 -0.424 -2.274 -0.424 c 0 0 -0.369 -1.324 -0.369 -1.324 c 0 0 -1.066 1.389 -1.066 1.389 c 0 0 -2.188 -0.147 -2.188 -0.147 c 0 0 -0.967 0.174 -0.967 0.174 c 0 0 -0.254 -1.387 -0.254 -1.387 c 0 0 0.828 -0.194 0.828 -0.194 c 0 0 0.3 -0.783 0.3 -0.783 c 0 0 -2.966 -1.427 -2.966 -1.427 c 0 0 -0.699 -3.309 -0.699 -3.309 c 0 0 -1.635 -0.354 -1.635 -0.354 c 0 0 0.277 -1.183 0.277 -1.183 c 0 0 -0.458 -0.661 -0.458 -0.661 c 0 0 -0.486 -1.046 -0.486 -1.046 c 0 0 0.477 -1.133 0.477 -1.133 c 0 0 1.46 -1.163 1.46 -1.163 c 0 0 2.801 -0.643 2.801 -0.643 c 0 0 1.617 0.827 1.617 0.827 c 0 0 0.77 2.041 0.77 2.041 c 0 0 2.885 0.665 2.885 0.665 c 0 0 0.642 -0.521 0.642 -0.521 c 0 0 0.391 0.479 0.391 0.479 c 0 0 1.646 -0.394 1.646 -0.394 c 0 0 0.779 1.6 0.779 1.6 c 0 0 1.483 0.237 1.483 0.237 c 0 0 2.637 -1.094 2.637 -1.094 c 0 0 1.659 0.04 1.659 0.04 c 0 0 2.043 -1.929 2.043 -1.929 c 0 0 -0.279 -1.044 -0.279 -1.044 c 0 0 -1.836 -1.298 -1.836 -1.298 c 0 0 2.469 0.061 2.469 0.061 c 0 0 0.865 0.703 0.865 0.703 c 0 0 -0.27 0.649 -0.27 0.649 c 0 0 0.934 1.558 0.934 1.558 c 0 0 -0.102 0.528 -0.102 0.528 c 0 0 -0.618 -0.109 -0.618 -0.109 c 0 0 1.345 1.255 1.345 1.255 c 0 0 0.646 3.424 0.646 3.424 c 0 0 -0.074 0.896 -0.074 0.896 c 0 0 -1.197 0.49 -1.197 0.49 c 0 0 0.196 1.267 0.196 1.267 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Skikda"},"22":{"path":"M 204.15 64.0609 c 0 0 -0.642 0.992 -0.642 0.992 c 0 0 0.241 0.965 0.241 0.965 c 0 0 -1.503 0.747 -1.503 0.747 c 0 0 -0.184 -0.672 -0.184 -0.672 c 0 0 -2.838 0.497 -2.838 0.497 c 0 0 -0.066 0.729 -0.066 0.729 c 0 0 -0.969 0.457 -0.969 0.457 c 0 0 -0.813 -0.548 -0.813 -0.548 c 0 0 -0.78 1.395 -0.78 1.395 c 0 0 -0.673 -0.18 -0.673 -0.18 c 0 0 0.286 1.945 0.286 1.945 c 0 0 -1.38 0.462 -1.38 0.462 c 0 0 -0.248 1.449 -0.248 1.449 c 0 0 -0.818 0.477 -0.818 0.477 c 0 0 1.942 1.063 1.942 1.063 c 0 0 -1.313 2.126 -1.313 2.126 c 0 0 0.506 1.828 0.506 1.828 c 0 0 1.191 0.045 1.191 0.045 c 0 0 -0.804 1.135 -0.804 1.135 c 0 0 1.177 -0.239 1.177 -0.239 c 0 0 -0.433 3.193 -0.433 3.193 c 0 0 2.376 -0.271 2.376 -0.271 c 0 0 0.272 1.004 0.272 1.004 c 0 0 -0.496 -0.036 -0.496 -0.036 c 0 0 0.23 0.687 0.23 0.687 c 0 0 -1.285 2.753 -1.285 2.753 c 0 0 -1.609 0.95 -1.609 0.95 c 0 0 0.956 0.198 0.956 0.198 c 0 0 0.362 0.793 0.362 0.793 c 0 0 -6.093 5.633 -6.093 5.633 c 0 0 1.08 1.632 1.08 1.632 c 0 0 2.133 -1.567 2.133 -1.567 c 0 0 0.589 1.018 0.589 1.018 c 0 0 0.342 -0.416 0.342 -0.416 c 0 0 2.966 0.896 2.966 0.896 c 0 0 4.055 -2.511 4.055 -2.511 c 0 0 1.843 1.041 1.843 1.041 c 0 0 3.133 9.769 3.133 9.769 c 0 0 0.314 -1.128 0.314 -1.128 c 0 0 0.854 0.04 0.854 0.04 c 0 0 2.091 -2.885 2.091 -2.885 c 0 0 1.632 -0.712 1.632 -0.712 c 0 0 1.374 0.198 1.374 0.198 c 0 0 1.501 -3.065 1.501 -3.065 c 0 0 0.941 -0.691 0.941 -0.691 c 0 0 -1.231 -5.509 -1.231 -5.509 c 0 0 -1.5 -1.498 -1.5 -1.498 c 0 0 -2.199 1.248 -2.199 1.248 c 0 0 -0.138 -2.153 -0.138 -2.153 c 0 0 -0.979 -1.096 -0.979 -1.096 c 0 0 0.256 -1.511 0.256 -1.511 c 0 0 2.491 1.248 2.491 1.248 c 0 0 0.646 1.884 0.646 1.884 c 0 0 1.12 -1.667 1.12 -1.667 c 0 0 -1.379 -2.84 -1.379 -2.84 c 0 0 -2.113 -1.373 -2.113 -1.373 c 0 0 -0.294 -1.104 -0.294 -1.104 c 0 0 -1.77 -0.163 -1.77 -0.163 c 0 0 0.403 -1.189 0.403 -1.189 c 0 0 -1.328 -0.901 -1.328 -0.901 c 0 0 1.163 -0.801 1.163 -0.801 c 0 0 -0.396 -2.087 -0.396 -2.087 c 0 0 1.813 -0.197 1.813 -0.197 c 0 0 -0.485 -1.763 -0.485 -1.763 c 0 0 0.353 -0.945 0.353 -0.945 c 0 0 1.317 -0.403 1.317 -0.403 c 0 0 -0.804 -2.202 -0.804 -2.202 c 0 0 0.376 -0.966 0.376 -0.966 c 0 0 1.477 -0.712 1.477 -0.712 c 0 0 -0.955 -0.354 -0.955 -0.354 c 0 0 -1.221 1.019 -1.221 1.019 c 0 0 -0.218 -0.549 -0.218 -0.549 c 0 0 1.312 -0.857 1.312 -0.857 c 0 0 0.38 -0.986 0.38 -0.986 c 0 0 -2.728 -0.854 -2.728 -0.854 c 0 0 -0.353 -0.632 -0.353 -0.632 c 0 0 -0.752 0.882 -0.752 0.882 c 0 0 -1.563 -0.12 -1.563 -0.12 c 0 0 0.231 -2.255 0.231 -2.255 c 0 0 -1.589 0.603 -1.589 0.603 c 0 0 -0.783 -0.393 -0.783 -0.393 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Sidi Bel Abbes"},"23":{"path":"M 375.158 30.0759 c 0 0 0.57 -1.447 0.57 -1.447 c 0 0 -0.427 -0.747 -0.427 -0.747 c 0 0 0.969 -1.14 0.969 -1.14 c 0 0 0.939 0.143 0.939 0.143 c 0 0 0.031 -1.328 0.031 -1.328 c 0 0 1.139 -0.009 1.139 -0.009 c 0 0 -0.366 -0.685 -0.366 -0.685 c 0 0 -1.192 -0.868 -1.192 -0.868 c 0 0 0.534 -2.257 0.534 -2.257 c 0 0 -1.771 0.605 -1.771 0.605 c 0 0 -1.04 -0.711 -1.04 -0.711 c 0 0 -0.714 0.503 -0.714 0.503 c 0 0 -2.358 -1.985 -2.358 -1.985 c 0 0 -2.144 0.188 -2.144 0.188 c 0 0 -0.479 -1.129 -0.479 -1.129 c 0 0 -2.073 0.349 -2.073 0.349 c 0 0 0.865 0.705 0.865 0.705 c 0 0 -0.27 0.648 -0.27 0.648 c 0 0 0.934 1.558 0.934 1.558 c 0 0 -0.102 0.529 -0.102 0.529 c 0 0 -0.618 -0.109 -0.618 -0.109 c 0 0 1.345 1.253 1.345 1.253 c 0 0 0.647 3.425 0.647 3.425 c 0 0 -0.075 0.896 -0.075 0.896 c 0 0 -1.196 0.49 -1.196 0.49 c 0 0 0.201 1.266 0.201 1.266 c 0 0 1.15 -0.122 1.15 -0.122 c 0 0 0.438 0.876 0.438 0.876 c 0 0 0.199 -0.74 0.199 -0.74 c 0 0 1.104 -0.509 1.104 -0.509 c 0 0 0.176 1.188 0.176 1.188 c 0 0 2.713 0.503 2.713 0.503 c 0 0 0.871 -1.339 0.871 -1.339 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Annaba"},"24":{"path":"M 375.158 30.0759 c 0 0 0.936 -0.309 0.936 -0.309 c 0 0 0.688 0.501 0.688 0.501 c 0 0 1.188 2.609 1.188 2.609 c 0 0 1.169 -0.383 1.169 -0.383 c 0 0 0.201 0.543 0.201 0.543 c 0 0 -0.047 -0.771 -0.047 -0.771 c 0 0 1.299 0.584 1.299 0.584 c 0 0 0.92 1.851 0.92 1.851 c 0 0 -1.832 1.544 -1.832 1.544 c 0 0 -1.021 -0.411 -1.021 -0.411 c 0 0 -0.195 1.316 -0.195 1.316 c 0 0 1.08 1.383 1.08 1.383 c 0 0 -0.374 0.437 -0.374 0.437 c 0 0 -2.218 0.173 -2.218 0.173 c 0 0 -2.16 2.08 -2.16 2.08 c 0 0 -1.194 -0.271 -1.194 -0.271 c 0 0 -2.52 0.934 -2.52 0.934 c 0 0 -2.854 -0.539 -2.854 -0.539 c 0 0 -0.494 1.348 -0.494 1.348 c 0 0 0.75 0.918 0.75 0.918 c 0 0 -1.257 0.076 -1.257 0.076 c 0 0 -0.683 1.774 -0.683 1.774 c 0 0 -2.784 1.371 -2.784 1.371 c 0 0 -0.998 -0.165 -0.998 -0.165 c 0 0 0.196 -0.958 0.196 -0.958 c 0 0 -1.267 -0.551 -1.267 -0.551 c 0 0 0.201 -1.256 0.201 -1.256 c 0 0 -0.077 -0.57 -0.077 -0.57 c 0 0 0.855 -0.474 0.855 -0.474 c 0 0 0.104 -1.688 0.104 -1.688 c 0 0 -0.561 -1.442 -0.561 -1.442 c 0 0 -1.225 -0.221 -1.225 -0.221 c 0 0 0.6 -0.717 0.6 -0.717 c 0 0 -1.052 -0.557 -1.052 -0.557 c 0 0 0.532 -0.551 0.532 -0.551 c 0 0 -0.572 -0.892 -0.572 -0.892 c 0 0 0.062 -1.543 0.062 -1.543 c 0 0 2.629 -0.698 2.629 -0.698 c 0 0 -0.42 -1.242 -0.42 -1.242 c 0 0 0.653 -0.873 0.653 -0.873 c 0 0 3.583 -1.265 3.583 -1.265 c 0 0 0.55 -1.052 0.55 -1.052 c 0 0 0.419 0.446 0.419 0.446 c 0 0 0.538 -0.351 0.538 -0.351 c 0 0 1.15 -0.122 1.15 -0.122 c 0 0 0.438 0.876 0.438 0.876 c 0 0 0.199 -0.741 0.199 -0.741 c 0 0 1.104 -0.509 1.104 -0.509 c 0 0 0.176 1.188 0.176 1.188 c 0 0 2.713 0.503 2.713 0.503 c 0 0 0.872 -1.333 0.872 -1.333 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Guelma"},"25":{"path":"M 361.888 43.9039 c 0 0 -0.077 -0.57 -0.077 -0.57 c 0 0 0.855 -0.474 0.855 -0.474 c 0 0 0.104 -1.688 0.104 -1.688 c 0 0 -0.561 -1.442 -0.561 -1.442 c 0 0 -1.224 -0.221 -1.224 -0.221 c 0 0 0.599 -0.717 0.599 -0.717 c 0 0 -1.052 -0.557 -1.052 -0.557 c 0 0 0.532 -0.551 0.532 -0.551 c 0 0 -0.572 -0.892 -0.572 -0.892 c 0 0 -1.253 -0.13 -1.253 -0.13 c 0 0 -0.398 -0.7 -0.398 -0.7 c 0 0 -1.124 0.208 -1.124 0.208 c 0 0 0.207 -2.014 0.207 -2.014 c 0 0 0.969 -1.018 0.969 -1.018 c 0 0 -1.799 0.36 -1.799 0.36 c 0 0 -2.274 -0.424 -2.274 -0.424 c 0 0 -0.368 -1.324 -0.368 -1.324 c 0 0 -1.067 1.389 -1.067 1.389 c 0 0 -2.188 -0.147 -2.188 -0.147 c 0 0 -0.02 1.6 -0.02 1.6 c 0 0 -3.298 0.766 -3.298 0.766 c 0 0 0.284 2.021 0.284 2.021 c 0 0 -0.922 1.877 -0.922 1.877 c 0 0 1.319 -0.403 1.319 -0.403 c 0 0 1.126 0.879 1.126 0.879 c 0 0 -0.265 1.487 -0.265 1.487 c 0 0 0.788 0.495 0.788 0.495 c 0 0 1.019 -0.295 1.019 -0.295 c 0 0 0.938 0.805 0.938 0.805 c 0 0 -0.108 1.354 -0.108 1.354 c 0 0 -0.381 0.438 -0.381 0.438 c 0 0 0.595 1.159 0.595 1.159 c 0 0 1.01 0.369 1.01 0.369 c 0 0 -0.464 -0.804 -0.464 -0.804 c 0 0 1.122 0.604 1.122 0.604 c 0 0 0.375 -1.069 0.375 -1.069 c 0 0 2.243 -0.159 2.243 -0.159 c 0 0 0.263 -1.444 0.263 -1.444 c 0 0 1.446 1.166 1.446 1.166 c 0 0 3.621 0.066 3.621 0.066 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Constantine"},"26":{"path":"M 291.189 51.9288 c 0 0 0.272 0.795 0.272 0.795 c 0 0 -1.143 0.688 -1.143 0.688 c 0 0 0.551 0.367 0.551 0.367 c 0 0 -2.021 0.685 -2.021 0.685 c 0 0 0.86 1.28 0.86 1.28 c 0 0 0.034 2.966 0.034 2.966 c 0 0 -2.708 -4.154 -2.708 -4.154 c 0 0 -0.896 0.141 -0.896 0.141 c 0 0 0.406 0.771 0.406 0.771 c 0 0 -0.488 0.495 -0.488 0.495 c 0 0 -1.09 0.049 -1.09 0.049 c 0 0 -0.854 -1.716 -0.854 -1.716 c 0 0 -1.031 1.021 -1.031 1.021 c 0 0 0.104 1.206 0.104 1.206 c 0 0 -0.753 1.37 -0.753 1.37 c 0 0 -2.786 0.7 -2.786 0.7 c 0 0 -0.185 -2.199 -0.185 -2.199 c 0 0 -0.699 0.144 -0.699 0.144 c 0 0 -0.693 -2.337 -0.693 -2.337 c 0 0 -2.585 0.707 -2.585 0.707 c 0 0 0.677 5.005 0.677 5.005 c 0 0 -0.578 -0.259 -0.578 -0.259 c 0 0 -1.83 1.359 -1.83 1.359 c 0 0 -1.605 2.564 -1.605 2.564 c 0 0 -1.292 0.661 -1.292 0.661 c 0 0 -2.698 -1.908 -2.698 -1.908 c 0 0 -0.229 0.56 -0.229 0.56 c 0 0 -2.476 0.813 -2.476 0.813 c 0 0 -2.139 0.167 -2.139 0.167 c 0 0 -0.658 -2.362 -0.658 -2.362 c 0 0 0.71 -1.968 0.71 -1.968 c 0 0 -2.811 -0.738 -2.811 -0.738 c 0 0 -0.347 -1.359 -0.347 -1.359 c 0 0 0.503 -0.62 0.503 -0.62 c 0 0 2.227 0.229 2.227 0.229 c 0 0 0.902 -3.906 0.902 -3.906 c 0 0 1.051 -1.104 1.051 -1.104 c 0 0 -0.339 -0.876 -0.339 -0.876 c 0 0 1.986 0.073 1.986 0.073 c 0 0 0.315 -2.775 0.315 -2.775 c 0 0 0.86 0.234 0.86 0.234 c 0 0 1.842 -1.11 1.842 -1.11 c 0 0 0.062 -1.843 0.062 -1.843 c 0 0 -1.344 -0.306 -1.344 -0.306 c 0 0 -0.085 -1.369 -0.085 -1.369 c 0 0 -0.709 -0.199 -0.709 -0.199 c 0 0 0.625 -1.909 0.625 -1.909 c 0 0 1.348 0.043 1.348 0.043 c 0 0 0.756 -0.614 0.756 -0.614 c 0 0 1.51 -1.087 1.51 -1.087 c 0 0 2.893 0.205 2.893 0.205 c 0 0 1.568 -1.178 1.568 -1.178 c 0 0 0.67 1.507 0.67 1.507 c 0 0 1.481 0.008 1.481 0.008 c 0 0 0.867 -0.967 0.867 -0.967 c 0 0 -0.189 -1.356 -0.189 -1.356 c 0 0 0.474 0.956 0.474 0.956 c 0 0 0.732 -0.598 0.732 -0.598 c 0 0 0.692 0.698 0.692 0.698 c 0 0 1.158 -1.154 1.158 -1.154 c 0 0 0.084 -1.381 0.084 -1.381 c 0 0 1.63 0.271 1.63 0.271 c 0 0 0.479 -0.537 0.479 -0.537 c 0 0 2.722 2.629 2.722 2.629 c 0 0 1.562 -1.479 1.562 -1.479 c 0 0 1.356 0.703 1.356 0.703 c 0 0 -0.439 0.687 -0.439 0.687 c 0 0 0.998 1.392 0.998 1.392 c 0 0 -1.071 0.599 -1.071 0.599 c 0 0 -0.441 1.267 -0.441 1.267 c 0 0 1.069 0.979 1.069 0.979 c 0 0 -0.181 0.809 -0.181 0.809 c 0 0 -1.426 0.414 -1.426 0.414 c 0 0 -0.229 0.854 -0.229 0.854 c 0 0 0.656 1.042 0.656 1.042 c 0 0 -0.409 0.485 -0.409 0.485 c 0 0 -0.898 0.936 -0.898 0.936 c 0 0 -1.014 -0.016 -1.014 -0.016 c 0 0 0.479 0.781 0.479 0.781 c 0 0 2.788 0.434 2.788 0.434 c 0 0 1.41 2.635 1.41 2.635 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Médéa"},"27":{"path":"M 212.85 55.2648 c 0 0 2.964 -1.85 2.964 -1.85 c 0 0 2.338 -4.67 2.338 -4.67 c 0 0 1.846 -1.942 1.846 -1.942 c 0 0 9.188 -5.395 9.188 -5.395 c 0 0 1.74 -0.06 1.74 -0.06 c 0 0 -1.001 3.283 -1.001 3.283 c 0 0 -1.979 2.472 -1.979 2.472 c 0 0 1.289 1.351 1.289 1.351 c 0 0 -0.634 0.698 -0.634 0.698 c 0 0 0.359 0.87 0.359 0.87 c 0 0 -2.126 0.093 -2.126 0.093 c 0 0 -0.555 0.604 -0.555 0.604 c 0 0 -1.226 -0.57 -1.226 -0.57 c 0 0 -0.846 1.017 -0.846 1.017 c 0 0 0.313 0.769 0.313 0.769 c 0 0 0.674 -0.036 0.674 -0.036 c 0 0 -0.59 0.992 -0.59 0.992 c 0 0 0.229 0.908 0.229 0.908 c 0 0 -1.332 1.438 -1.332 1.438 c 0 0 -0.877 -0.373 -0.877 -0.373 c 0 0 -0.867 0.539 -0.867 0.539 c 0 0 -1.744 2.073 -1.744 2.073 c 0 0 -0.903 -0.138 -0.903 -0.138 c 0 0 -0.604 0.964 -0.604 0.964 c 0 0 -0.03 -0.763 -0.03 -0.763 c 0 0 -1.07 0.18 -1.07 0.18 c 0 0 -1.028 -1.427 -1.028 -1.427 c 0 0 -2.252 0.6 -2.252 0.6 c 0 0 -1.276 -1.627 -1.276 -1.627 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Mostaganem"},"28":{"path":"M 320.989 54.6068 c 0 0 -0.17 0.627 -0.17 0.627 c 0 0 1.475 1.042 1.475 1.042 c 0 0 1.106 -0.24 1.106 -0.24 c 0 0 0.486 0.518 0.486 0.518 c 0 0 -0.417 0.537 -0.417 0.537 c 0 0 0.547 0.807 0.547 0.807 c 0 0 3.493 0.469 3.493 0.469 c 0 0 -2.661 2.962 -2.661 2.962 c 0 0 -1.817 0.906 -1.817 0.906 c 0 0 -0.722 -1.068 -0.722 -1.068 c 0 0 -1.062 -0.011 -1.062 -0.011 c 0 0 -0.828 0.921 -0.828 0.921 c 0 0 -0.074 -0.787 -0.074 -0.787 c 0 0 -0.96 1.506 -0.96 1.506 c 0 0 -1.945 -1.698 -1.945 -1.698 c 0 0 0.823 4.4 0.823 4.4 c 0 0 -0.379 2.546 -0.379 2.546 c 0 0 -0.916 1.548 -0.916 1.548 c 0 0 -0.524 -0.186 -0.524 -0.186 c 0 0 -1.187 1.172 -1.187 1.172 c 0 0 0.194 0.606 0.194 0.606 c 0 0 2.929 0.06 2.929 0.06 c 0 0 2.125 1.396 2.125 1.396 c 0 0 0.447 3.492 0.447 3.492 c 0 0 0.547 0.305 0.547 0.305 c 0 0 -0.538 0.065 -0.538 0.065 c 0 0 -0.683 1.586 -0.683 1.586 c 0 0 -5.438 1.63 -5.438 1.63 c 0 0 -0.942 1.502 -0.942 1.502 c 0 0 -1.001 0.173 -1.001 0.173 c 0 0 1.298 1.086 1.298 1.086 c 0 0 -1.021 0.547 -1.021 0.547 c 0 0 -0.657 -0.445 -0.657 -0.445 c 0 0 -1.832 1.14 -1.832 1.14 c 0 0 -4.806 0.046 -4.806 0.046 c 0 0 -0.876 1.823 -0.876 1.823 c 0 0 -2.191 1.835 -2.191 1.835 c 0 0 0.521 0.302 0.521 0.302 c 0 0 0.417 3.083 0.417 3.083 c 0 0 1.218 1.271 1.218 1.271 c 0 0 -0.307 0.725 -0.307 0.725 c 0 0 1.813 0.933 1.813 0.933 c 0 0 -0.773 1.007 -0.773 1.007 c 0 0 -1.99 0.525 -1.99 0.525 c 0 0 -4.303 -3.585 -4.303 -3.585 c 0 0 0.313 -2.084 0.313 -2.084 c 0 0 -1.836 -1.982 -1.836 -1.982 c 0 0 0.299 -2.042 0.299 -2.042 c 0 0 -0.719 -4.248 -0.719 -4.248 c 0 0 -3.906 -0.975 -3.906 -0.975 c 0 0 -1.411 0.479 -1.411 0.479 c 0 0 -0.14 -1.65 -0.14 -1.65 c 0 0 -1.402 -0.322 -1.402 -0.322 c 0 0 0.209 -2.972 0.209 -2.972 c 0 0 -0.698 -0.953 -0.698 -0.953 c 0 0 0.551 -0.068 0.551 -0.068 c 0 0 0.504 -1.539 0.504 -1.539 c 0 0 -1.839 0.736 -1.839 0.736 c 0 0 -1.138 -3.13 -1.138 -3.13 c 0 0 4.282 -3.606 4.282 -3.606 c 0 0 -0.425 -1.94 -0.425 -1.94 c 0 0 0.865 -0.633 0.865 -0.633 c 0 0 0.075 -1.772 0.075 -1.772 c 0 0 -4.719 -3.806 -4.719 -3.806 c 0 0 -1.903 -1.953 -1.903 -1.953 c 0 0 -0.313 -1.258 -0.313 -1.258 c 0 0 0.489 -0.494 0.489 -0.494 c 0 0 -0.405 -0.771 -0.405 -0.771 c 0 0 0.895 -0.14 0.895 -0.14 c 0 0 2.709 4.154 2.709 4.154 c 0 0 -0.037 -2.966 -0.037 -2.966 c 0 0 -0.859 -1.281 -0.859 -1.281 c 0 0 2.022 -0.685 2.022 -0.685 c 0 0 -0.551 -0.367 -0.551 -0.367 c 0 0 1.144 -0.686 1.144 -0.686 c 0 0 -0.274 -0.796 -0.274 -0.796 c 0 0 0.533 -0.809 0.533 -0.809 c 0 0 1.537 0.153 1.537 0.153 c 0 0 0.654 0.924 0.654 0.924 c 0 0 1.07 0.224 1.07 0.224 c 0 0 0.352 1.004 0.352 1.004 c 0 0 0.802 0.048 0.802 0.048 c 0 0 1.271 -1.214 1.271 -1.214 c 0 0 2.542 0.89 2.542 0.89 c 0 0 -0.444 -1.385 -0.444 -1.385 c 0 0 1.058 -3.265 1.058 -3.265 c 0 0 0.57 1.104 0.57 1.104 c 0 0 2.211 -0.769 2.211 -0.769 c 0 0 2.755 0.986 2.755 0.986 c 0 0 3.391 -1.461 3.391 -1.461 c 0 0 0.865 2.774 0.865 2.774 c 0 0 -1.615 0.625 -1.615 0.625 c 0 0 -0.69 2.095 -0.69 2.095 c 0 0 2.823 0.292 2.823 0.292 c 0 0 -0.36 -0.99 -0.36 -0.99 c 0 0 1.328 -0.64 1.328 -0.64 c 0 0 -0.386 1.092 -0.386 1.092 c 0 0 0.663 0.766 0.663 0.766 c 0 0 2.07 -1.562 2.07 -1.562 c 0 0 2.721 -0.533 2.721 -0.533 c 0 0 1.33 1.67 1.33 1.67 c 0 0 1.165 -0.05 1.165 -0.05 c 0 0 0.184 1.218 0.184 1.218 c 0 0 1.399 -0.516 1.399 -0.516 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"M'Sila"},"29":{"path":"M 220.012 57.4758 c 0 0 0.578 0.193 0.578 0.193 c 0 0 1.217 3.61 1.217 3.61 c 0 0 1.717 -0.492 1.717 -0.492 c 0 0 0.125 0.523 0.125 0.523 c 0 0 0.858 -0.611 0.858 -0.611 c 0 0 1.282 1.803 1.282 1.803 c 0 0 1.891 -0.041 1.891 -0.041 c 0 0 0.918 0.917 0.918 0.917 c 0 0 1.721 -0.085 1.721 -0.085 c 0 0 0.296 0.662 0.296 0.662 c 0 0 2.047 0.317 2.047 0.317 c 0 0 1.49 1.555 1.49 1.555 c 0 0 -0.688 0.28 -0.688 0.28 c 0 0 -0.874 2.105 -0.874 2.105 c 0 0 -1.111 0.353 -1.111 0.353 c 0 0 -1.521 -0.788 -1.521 -0.788 c 0 0 -1.084 0.159 -1.084 0.159 c 0 0 -1.175 1.41 -1.175 1.41 c 0 0 0.246 0.949 0.246 0.949 c 0 0 -1.553 1.1 -1.553 1.1 c 0 0 -1.071 1.771 -1.071 1.771 c 0 0 -1.54 1.518 -1.54 1.518 c 0 0 -0.999 -0.12 -0.999 -0.12 c 0 0 -0.773 -0.89 -0.773 -0.89 c 0 0 -2.493 1.648 -2.493 1.648 c 0 0 -1.011 -0.662 -1.011 -0.662 c 0 0 -0.205 -0.907 -0.205 -0.907 c 0 0 -1.081 0.098 -1.081 0.098 c 0 0 -1.301 -0.867 -1.301 -0.867 c 0 0 -2.583 0.188 -2.583 0.188 c 0 0 -0.345 -1.976 -0.345 -1.976 c 0 0 -0.665 1.238 -0.665 1.238 c 0 0 -0.982 -0.007 -0.982 -0.007 c 0 0 -0.804 -2.203 -0.804 -2.203 c 0 0 0.376 -0.965 0.376 -0.965 c 0 0 1.477 -0.712 1.477 -0.712 c 0 0 -0.955 -0.354 -0.955 -0.354 c 0 0 -1.222 1.019 -1.222 1.019 c 0 0 -0.217 -0.549 -0.217 -0.549 c 0 0 1.312 -0.856 1.312 -0.856 c 0 0 0.38 -0.987 0.38 -0.987 c 0 0 -2.728 -0.854 -2.728 -0.854 c 0 0 -0.352 -0.632 -0.352 -0.632 c 0 0 -0.753 0.882 -0.753 0.882 c 0 0 -1.563 -0.12 -1.563 -0.12 c 0 0 0.231 -2.254 0.231 -2.254 c 0 0 -1.59 0.602 -1.59 0.602 c 0 0 -0.786 -0.382 -0.786 -0.382 c 0 0 0.318 -0.749 0.318 -0.749 c 0 0 1.029 -0.085 1.029 -0.085 c 0 0 -0.37 -0.949 -0.37 -0.949 c 0 0 1.582 -0.382 1.582 -0.382 c 0 0 0.264 -1.739 0.264 -1.739 c 0 0 2.625 -2.104 2.625 -2.104 c 0 0 -0.667 -0.006 -0.667 -0.006 c 0 0 0.89 -1.532 0.89 -1.532 c 0 0 1.433 1.089 1.433 1.089 c 0 0 1.581 -2.289 1.581 -2.289 c 0 0 1.287 1.577 1.287 1.577 c 0 0 2.252 -0.6 2.252 -0.6 c 0 0 1.029 1.428 1.029 1.428 c 0 0 1.069 -0.181 1.069 -0.181 c 0 0 0.03 0.763 0.03 0.763 c 0 0 0.605 -0.963 0.605 -0.963 c 0 0 0.906 0.136 0.906 0.136 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Mascara"},"30":{"path":"M 327.951 114.981 c 0 0 -0.91 1.857 -0.91 1.857 c 0 0 -3.919 -3.5 -3.919 -3.5 c 0 0 -2.42 5.13 -2.42 5.13 c 0 0 2.209 11.443 2.209 11.443 c 0 0 -5.039 9.304 -5.039 9.304 c 0 0 -6.763 7.312 -6.763 7.312 c 0 0 -0.766 17.01 -0.766 17.01 c 0 0 -3.171 8.157 -3.171 8.157 c 0 0 -10.495 36.704 -10.495 36.704 c 0 0 -1.579 1.093 -1.579 1.093 c 0 0 -6.763 14.091 -6.763 14.091 c 0 0 -8.226 3.631 -8.226 3.631 c 0 0 17.526 14.179 17.526 14.179 c 0 0 -0.146 0.413 -0.146 0.413 c 0 0 43.124 -33.261 43.124 -33.261 c 0 0 15.876 -8.912 15.876 -8.912 c 0 0 2.795 0.889 2.795 0.889 c 0 0 63.493 -16.461 63.493 -16.461 c 0 0 -11.392 -38.443 -11.392 -38.443 c 0 0 -39.729 4.259 -39.729 4.259 c 0 0 -5.501 -6.366 -5.501 -6.366 c 0 0 -7.777 -11.58 -7.777 -11.58 c 0 0 -8.097 -22.969 -8.097 -22.969 c 0 0 -1.219 -7.663 -1.219 -7.663 c 0 0 -0.319 0.807 -0.319 0.807 c 0 0 -0.521 -1.04 -0.521 -1.04 c 0 0 -0.762 0.111 -0.762 0.111 c 0 0 -2.721 2.136 -2.721 2.136 c 0 0 -0.552 -1.05 -0.552 -1.05 c 0 0 -0.665 0.606 -0.665 0.606 c 0 0 -0.047 1.4 -0.047 1.4 c 0 0 1.138 2.602 1.138 2.602 c 0 0 0.039 2.557 0.039 2.557 c 0 0 -0.953 1.07 -0.953 1.07 c 0 0 1.171 1.467 1.171 1.467 c 0 0 0.374 2.7 0.374 2.7 c 0 0 -17.293 0.317 -17.293 0.317 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Ouargla"},"31":{"path":"M 204.15 64.0609 c 0 0 0.319 -0.749 0.319 -0.749 c 0 0 1.029 -0.085 1.029 -0.085 c 0 0 -0.37 -0.95 -0.37 -0.95 c 0 0 1.582 -0.381 1.582 -0.381 c 0 0 0.264 -1.74 0.264 -1.74 c 0 0 2.625 -2.104 2.625 -2.104 c 0 0 -0.667 -0.006 -0.667 -0.006 c 0 0 0.89 -1.532 0.89 -1.532 c 0 0 1.433 1.09 1.433 1.09 c 0 0 1.597 -2.34 1.597 -2.34 c 0 0 -3.432 -0.925 -3.432 -0.925 c 0 0 -0.636 -0.732 -0.636 -0.732 c 0 0 0.279 -0.764 0.279 -0.764 c 0 0 -0.896 -0.845 -0.896 -0.845 c 0 0 -0.981 0.025 -0.981 0.025 c 0 0 -0.675 0.67 -0.675 0.67 c 0 0 -1.5 0.109 -1.5 0.109 c 0 0 -0.331 2.201 -0.331 2.201 c 0 0 -2.492 1.917 -2.492 1.917 c 0 0 -1.325 0.012 -1.325 0.012 c 0 0 -0.406 -0.761 -0.406 -0.761 c 0 0 -2.549 -0.737 -2.549 -0.737 c 0 0 -0.751 1.339 -0.751 1.339 c 0 0 -0.854 0.255 -0.854 0.255 c 0 0 -0.794 -0.59 -0.794 -0.59 c 0 0 -2.608 2.264 -2.608 2.264 c 0 0 1.342 1.429 1.342 1.429 c 0 0 -0.223 0.719 -0.223 0.719 c 0 0 1.009 0.007 1.009 0.007 c 0 0 -0.384 1.019 -0.384 1.019 c 0 0 -0.893 0.252 -0.893 0.252 c 0 0 0.174 1.591 0.174 1.591 c 0 0 0.012 -0.62 0.012 -0.62 c 0 0 0.895 -0.047 0.895 -0.047 c 0 0 -0.201 -0.596 -0.201 -0.596 c 0 0 0.82 0.656 0.82 0.656 c 0 0 1.569 0.021 1.569 0.021 c 0 0 5.066 -1.624 5.066 -1.624 c 0 0 0.775 2.922 0.775 2.922 c 0 0 -0.772 0.564 -0.772 0.564 c 0 0 -0.026 1.101 -0.026 1.101 c 0 0 0.184 0.673 0.184 0.673 c 0 0 1.502 -0.747 1.502 -0.747 c 0 0 -0.24 -0.964 -0.24 -0.964 c 0 0 0.64 -0.997 0.64 -0.997 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Oran"},"32":{"path":"M 233.026 90.7739 c 0 0 -2.853 -0.734 -2.853 -0.734 c 0 0 -4.583 3.134 -4.583 3.134 c 0 0 -1.732 -2.296 -1.732 -2.296 c 0 0 -2.898 2.009 -2.898 2.009 c 0 0 -2.172 -0.253 -2.172 -0.253 c 0 0 -2.096 -2.128 -2.096 -2.128 c 0 0 -2.331 -0.763 -2.331 -0.763 c 0 0 1.232 5.509 1.232 5.509 c 0 0 -0.942 0.691 -0.942 0.691 c 0 0 -1.501 3.065 -1.501 3.065 c 0 0 0.176 2.472 0.176 2.472 c 0 0 1.795 -0.807 1.795 -0.807 c 0 0 1.055 0.748 1.055 0.748 c 0 0 -0.204 2.644 -0.204 2.644 c 0 0 0.751 0.279 0.751 0.279 c 0 0 0.729 1.792 0.729 1.792 c 0 0 0.76 0.113 0.76 0.113 c 0 0 -2.122 1.127 -2.122 1.127 c 0 0 0.828 2.979 0.828 2.979 c 0 0 -2.93 13.106 -2.93 13.106 c 0 0 0.842 2.448 0.842 2.448 c 0 0 -0.887 0.991 -0.887 0.991 c 0 0 0.673 0.434 0.673 0.434 c 0 0 -0.593 1.588 -0.593 1.588 c 0 0 -1.563 0.854 -1.563 0.854 c 0 0 -0.278 1.842 -0.278 1.842 c 0 0 0.827 0.472 0.827 0.472 c 0 0 -0.269 1.131 -0.269 1.131 c 0 0 0.979 1.097 0.979 1.097 c 0 0 -0.397 1.534 -0.397 1.534 c 0 0 0.431 2.391 0.431 2.391 c 0 0 -2.988 5.758 -2.988 5.758 c 0 0 -0.953 4.385 -0.953 4.385 c 0 0 -2.081 -0.471 -2.081 -0.471 c 0 0 -1.103 0.817 -1.103 0.817 c 0 0 -1.05 2.219 -1.05 2.219 c 0 0 -0.139 4.177 -0.139 4.177 c 0 0 0.68 2.281 0.68 2.281 c 0 0 -0.686 0.065 -0.686 0.065 c 0 0 0.179 0.967 0.179 0.967 c 0 0 -0.602 0.846 -0.602 0.846 c 0 0 0.955 1.181 0.955 1.181 c 0 0 -1.242 1.21 -1.242 1.21 c 0 0 1.247 2.015 1.247 2.015 c 0 0 -1.014 1.203 -1.014 1.203 c 0 0 0.036 1.864 0.036 1.864 c 0 0 0.852 1.823 0.852 1.823 c 0 0 2.918 2.352 2.918 2.352 c 0 0 -0.818 2.98 -0.818 2.98 c 0 0 14.029 11.903 14.029 11.903 c 0 0 15.816 -11.179 15.816 -11.179 c 0 0 21.085 -13.183 21.085 -13.183 c 0 0 4.648 -5.149 4.648 -5.149 c 0 0 -0.721 -8.611 -0.721 -8.611 c 0 0 2.573 -1.672 2.573 -1.672 c 0 0 -1.918 -7.688 -1.918 -7.688 c 0 0 -0.564 -6.182 -0.564 -6.182 c 0 0 -3.111 -6.564 -3.111 -6.564 c 0 0 0.146 -1.528 0.146 -1.528 c 0 0 -0.641 -0.886 -0.641 -0.886 c 0 0 3.997 -0.134 3.997 -0.134 c 0 0 0.203 -3.901 0.203 -3.901 c 0 0 -2.073 0.452 -2.073 0.452 c 0 0 -3.52 -1.138 -3.52 -1.138 c 0 0 0.205 -1.673 0.205 -1.673 c 0 0 -3.122 -0.287 -3.122 -0.287 c 0 0 0.285 -2.856 0.285 -2.856 c 0 0 0.82 -1.435 0.82 -1.435 c 0 0 -1.142 -1.009 -1.142 -1.009 c 0 0 -0.124 -0.991 -0.124 -0.991 c 0 0 -1.457 -0.411 -1.457 -0.411 c 0 0 0.247 -2.655 0.247 -2.655 c 0 0 -0.565 -1.551 -0.565 -1.551 c 0 0 -1.828 -1.584 -1.828 -1.584 c 0 0 -3.495 0.817 -3.495 0.817 c 0 0 -1.613 -1.795 -1.613 -1.795 c 0 0 -2.206 -0.969 -2.206 -0.969 c 0 0 0.165 -0.989 0.165 -0.989 c 0 0 -0.863 -1.461 -0.863 -1.461 c 0 0 -1.119 -1.576 -1.119 -1.576 c 0 0 -0.215 -1.844 -0.215 -1.844 c 0 0 -5.541 0.295 -5.541 0.295 c 0 0 0.672 -4.884 0.672 -4.884 c 0 0 -3.971 -0.823 -3.971 -0.823 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"El-Bayadh"},"33":{"path":"M 454.129 387.74 c 0 0 -0.719 -20.563 -0.719 -20.563 c 0 0 -7.48 -4.23 -7.48 -4.23 c 0 0 -2.209 0.049 -2.209 0.049 c 0 0 -1.657 -1.011 -1.657 -1.011 c 0 0 -13.903 0.818 -13.903 0.818 c 0 0 -12.891 9.613 -12.891 9.613 c 0 0 -17.177 4.161 -17.177 4.161 c 0 0 -6.243 -4.393 -6.243 -4.393 c 0 0 1.974 -2.232 1.974 -2.232 c 0 0 -5.578 -12.361 -5.578 -12.361 c 0 0 -1.04 -10.938 -1.04 -10.938 c 0 0 0.237 -3.784 0.237 -3.784 c 0 0 -5.594 -8.033 -5.594 -8.033 c 0 0 -4.477 -0.14 -4.477 -0.14 c 0 0 -2.836 -2.179 -2.836 -2.179 c 0 0 -3.687 -6.237 -3.687 -6.237 c 0 0 -1.628 -4.169 -1.628 -4.169 c 0 0 -5.061 -6.142 -5.061 -6.142 c 0 0 -5.932 -16.141 -5.932 -16.141 c 0 0 -1.532 -1.133 -1.532 -1.133 c 0 0 -0.138 -1.004 -0.138 -1.004 c 0 0 -2.248 -0.6 -2.248 -0.6 c 0 0 -1.181 -1.556 -1.181 -1.556 c 0 0 1.06 -3.063 1.06 -3.063 c 0 0 2.819 -2.35 2.819 -2.35 c 0 0 -0.418 -1.914 -0.418 -1.914 c 0 0 -12.688 -11.211 -12.688 -11.211 c 0 0 -0.038 -8.717 -0.038 -8.717 c 0 0 -3.731 -17.58 -3.731 -17.58 c 0 0 1.773 -8.354 1.773 -8.354 c 0 0 -1.295 -33.809 -1.295 -33.809 c 0 0 15.876 -8.912 15.876 -8.912 c 0 0 2.796 0.888 2.796 0.888 c 0 0 63.493 -16.461 63.493 -16.461 c 0 0 2.411 8.262 2.411 8.262 c 0 0 -3.099 1.292 -3.099 1.292 c 0 0 -0.465 1.084 -0.465 1.084 c 0 0 0.689 2.608 0.689 2.608 c 0 0 2.979 3.429 2.979 3.429 c 0 0 6.166 11.784 6.166 11.784 c 0 0 2.729 9.976 2.729 9.976 c 0 0 1.149 6.791 1.149 6.791 c 0 0 -0.747 12.151 -0.747 12.151 c 0 0 3.65 10.479 3.65 10.479 c 0 0 -0.548 4.821 -0.548 4.821 c 0 0 -1.157 2.46 -1.157 2.46 c 0 0 -1.083 0.37 -1.083 0.37 c 0 0 1.397 0.222 1.397 0.222 c 0 0 -0.245 1.499 -0.245 1.499 c 0 0 -1.049 1.133 -1.049 1.133 c 0 0 -0.483 2.826 -0.483 2.826 c 0 0 0.133 2.473 0.133 2.473 c 0 0 2.239 7.597 2.239 7.597 c 0 0 1.692 2.23 1.692 2.23 c 0 0 0.099 5.493 0.099 5.493 c 0 0 -0.928 3.311 -0.928 3.311 c 0 0 -7.815 3.964 -7.815 3.964 c 0 0 -1.079 3.438 -1.079 3.438 c 0 0 -1.214 1.554 -1.214 1.554 c 0 0 16.01 20.327 16.01 20.327 c 0 0 0.78 10.061 0.78 10.061 c 0 0 4.756 7.704 4.756 7.704 c 0 0 3.475 2.664 3.475 2.664 c 0 0 4.406 -0.238 4.406 -0.238 c 0 0 1.539 -1.13 1.539 -1.13 c 0 0 2.129 -0.146 2.129 -0.146 c 0 0 1.531 1.491 1.531 1.491 c 0 0 1.29 -1.619 1.29 -1.619 c 0 0 1.709 0.246 1.709 0.246 c 0 0 1.289 0.52 1.289 0.52 c 0 0 2.539 2.53 2.539 2.53 c 0 0 2.012 0.66 2.012 0.66 c 0 0 7.08 4.37 7.08 4.37 c 0 0 4.112 -1.98 4.112 -1.98 c 0 0 10.551 17.862 10.551 17.862 c 0 0 -39.276 29.119 -39.276 29.119 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Illizi"},"34":{"path":"M 320.989 54.6068 c 0 0 -0.019 -1.603 -0.019 -1.603 c 0 0 2.087 -0.288 2.087 -0.288 c 0 0 -0.482 -2.927 -0.482 -2.927 c 0 0 1.669 -2.858 1.669 -2.858 c 0 0 -0.971 -0.972 -0.971 -0.972 c 0 0 0.127 -2.078 0.127 -2.078 c 0 0 -0.963 -0.272 -0.963 -0.272 c 0 0 -1.479 -2.545 -1.479 -2.545 c 0 0 -1.203 -0.363 -1.203 -0.363 c 0 0 -0.962 0.653 -0.962 0.653 c 0 0 -2.853 0.298 -2.853 0.298 c 0 0 -0.779 -0.983 -0.779 -0.983 c 0 0 0.3 -1.875 0.3 -1.875 c 0 0 -1.258 -0.672 -1.258 -0.672 c 0 0 -0.336 1.124 -0.336 1.124 c 0 0 -2.018 0.919 -2.018 0.919 c 0 0 -0.034 2.49 -0.034 2.49 c 0 0 -4.18 1.099 -4.18 1.099 c 0 0 -0.774 -1.701 -0.774 -1.701 c 0 0 -0.783 0.919 -0.783 0.919 c 0 0 -1.362 -0.093 -1.362 -0.093 c 0 0 -0.794 1.241 -0.794 1.241 c 0 0 -1.708 0.861 -1.708 0.861 c 0 0 -0.186 2.385 -0.186 2.385 c 0 0 -1.469 1.134 -1.469 1.134 c 0 0 0.569 1.104 0.569 1.104 c 0 0 2.211 -0.77 2.211 -0.77 c 0 0 2.755 0.987 2.755 0.987 c 0 0 3.392 -1.461 3.392 -1.461 c 0 0 0.863 2.774 0.863 2.774 c 0 0 -1.616 0.625 -1.616 0.625 c 0 0 -0.689 2.095 -0.689 2.095 c 0 0 2.823 0.292 2.823 0.292 c 0 0 -0.36 -0.99 -0.36 -0.99 c 0 0 1.328 -0.64 1.328 -0.64 c 0 0 -0.387 1.092 -0.387 1.092 c 0 0 0.664 0.766 0.664 0.766 c 0 0 2.07 -1.562 2.07 -1.562 c 0 0 2.722 -0.532 2.722 -0.532 c 0 0 1.327 1.669 1.327 1.669 c 0 0 1.167 -0.05 1.167 -0.05 c 0 0 0.184 1.218 0.184 1.218 c 0 0 1.407 -0.51 1.407 -0.51 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Bord-Bou-Arréridj"},"35":{"path":"M 284.507 35.4899 c 0 0 2.089 0.118 2.089 0.118 c 0 0 1.365 -0.714 1.365 -0.714 c 0 0 0.479 -0.984 0.479 -0.984 c 0 0 4.716 0.709 4.716 0.709 c 0 0 -0.218 -1.694 -0.218 -1.694 c 0 0 1.416 -0.319 1.416 -0.319 c 0 0 0.847 0.593 0.847 0.593 c 0 0 -0.165 -1.289 -0.165 -1.289 c 0 0 1.354 0.313 1.354 0.313 c 0 0 -0.771 -0.862 -0.771 -0.862 c 0 0 0.386 -1.441 0.386 -1.441 c 0 0 1.042 0.231 1.042 0.231 c 0 0 0.18 -0.604 0.18 -0.604 c 0 0 0.944 -0.077 0.944 -0.077 c 0 0 0.045 -0.779 0.045 -0.779 c 0 0 1.354 -1.163 1.354 -1.163 c 0 0 -0.135 -1.239 -0.135 -1.239 c 0 0 -3.063 -0.523 -3.063 -0.523 c 0 0 -3.242 1.034 -3.242 1.034 c 0 0 -0.906 1.079 -0.906 1.079 c 0 0 -3.85 1.986 -3.85 1.986 c 0 0 -2.822 -0.274 -2.822 -0.274 c 0 0 -0.271 0.609 -0.271 0.609 c 0 0 0.658 -0.216 0.658 -0.216 c 0 0 0.03 1.021 0.03 1.021 c 0 0 -2.279 0.745 -2.279 0.745 c 0 0 -0.66 -0.482 -0.66 -0.482 c 0 0 0.392 0.701 0.392 0.701 c 0 0 -0.689 0.547 -0.689 0.547 c 0 0 0.756 1.311 0.756 1.311 c 0 0 0.888 -0.351 0.888 -0.351 c 0 0 -0.536 0.479 -0.536 0.479 c 0 0 0.471 0.856 0.471 0.856 c 0 0 -0.385 0.413 -0.385 0.413 c 0 0 0.58 0.266 0.58 0.266 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Boumerdès"},"36":{"path":"M 378.015 24.8629 c 0 0 0.366 0.686 0.366 0.686 c 0 0 -1.139 0.009 -1.139 0.009 c 0 0 -0.031 1.328 -0.031 1.328 c 0 0 -0.939 -0.144 -0.939 -0.144 c 0 0 -0.969 1.141 -0.969 1.141 c 0 0 0.427 0.747 0.427 0.747 c 0 0 -0.57 1.447 -0.57 1.447 c 0 0 0.937 -0.31 0.937 -0.31 c 0 0 0.687 0.501 0.687 0.501 c 0 0 1.188 2.609 1.188 2.609 c 0 0 1.168 -0.382 1.168 -0.382 c 0 0 0.201 0.542 0.201 0.542 c 0 0 -0.047 -0.771 -0.047 -0.771 c 0 0 1.299 0.586 1.299 0.586 c 0 0 0.92 1.85 0.92 1.85 c 0 0 1.383 -0.02 1.383 -0.02 c 0 0 0.272 1.761 0.272 1.761 c 0 0 0.823 -1.258 0.823 -1.258 c 0 0 1.821 -0.823 1.821 -0.823 c 0 0 -0.327 -0.753 -0.327 -0.753 c 0 0 0.471 -0.48 0.471 -0.48 c 0 0 2.326 -0.796 2.326 -0.796 c 0 0 2.308 -2.13 2.308 -2.13 c 0 0 0.916 -0.119 0.916 -0.119 c 0 0 0.696 -2.05 0.696 -2.05 c 0 0 -0.425 -1.147 -0.425 -1.147 c 0 0 -0.861 -0.401 -0.861 -0.401 c 0 0 2.97 -0.532 2.97 -0.532 c 0 0 1.982 -1.323 1.982 -1.323 c 0 0 0.178 -0.521 0.178 -0.521 c 0 0 -1.188 -0.337 -1.188 -0.337 c 0 0 0.199 -2.228 0.199 -2.228 c 0 0 -4.452 1.441 -4.452 1.441 c 0 0 -1.429 -0.654 -1.429 -0.654 c 0 0 -1.822 0.272 -1.822 0.272 c 0 0 -0.981 -0.861 -0.981 -0.861 c 0 0 -4.735 2.676 -4.735 2.676 c 0 0 -3.623 0.444 -3.623 0.444 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"El-Taref"},"37":{"path":"M 144.372 270.771 c 0 0 -13.244 -1.683 -13.244 -1.683 c 0 0 -3.001 -2.419 -3.001 -2.419 c 0 0 -5.835 -7.099 -5.835 -7.099 c 0 0 -0.084 -7.644 -0.084 -7.644 c 0 0 -6.775 -12.676 -6.775 -12.676 c 0 0 -5.777 -21.184 -5.777 -21.184 c 0 0 -5.817 -3.172 -5.817 -3.172 c 0 0 -8.409 -0.353 -8.409 -0.353 c 0 0 -4.977 -4.181 -4.977 -4.181 c 0 0 -1.59 2.116 -1.59 2.116 c 0 0 -2.652 -1.77 -2.652 -1.77 c 0 0 -1.38 0.46 -1.38 0.46 c 0 0 0.685 -1.695 0.685 -1.695 c 0 0 -1.662 -0.829 -1.662 -0.829 c 0 0 -5.937 0.964 -5.937 0.964 c 0 0 -2.253 -0.648 -2.253 -0.648 c 0 0 -5.062 0.498 -5.062 0.498 c 0 0 -1.257 -0.472 -1.257 -0.472 c 0 0 -1.854 1.008 -1.854 1.008 c 0 0 -3.731 -0.108 -3.731 -0.108 c 0 0 -1.934 1.228 -1.934 1.228 c 0 0 -8.19 -2.131 -8.19 -2.131 c 0 0 -5.64 3.248 -5.64 3.248 c 0 0 -4.957 -0.147 -4.957 -0.147 c 0 0 -1.001 1.766 -1.001 1.766 c 0 0 -3.104 0.861 -3.104 0.861 c 0 0 -4.236 3.001 -4.236 3.001 c 0 0 -5.013 2.403 -5.013 2.403 c 0 0 -6.767 5.049 -6.767 5.049 c 0 0 -4.839 1.729 -4.839 1.729 c 0 0 -3.193 35.971 -3.193 35.971 c 0 0 65.958 50.321 65.958 50.321 c 0 0 12.962 -4.238 12.962 -4.238 c -0.001 0 7.204 -6.951 7.204 -6.951 c 0 0 14.179 0.237 14.179 0.237 c 0 0 3.038 -6.721 3.038 -6.721 c 0 0 7.18 -9.721 7.18 -9.721 c 0 0 2.317 -1.98 2.317 -1.98 c 0 0 3.858 -1.585 3.858 -1.585 c 0 0 7.686 0.562 7.686 0.562 c 0 0 1.78 -1.06 1.78 -1.06 c 0 0 3.324 -10.955 3.324 -10.955 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tindouf"},"38":{"path":"M 244.49 53.8549 c 0 0 0.771 0.672 0.771 0.672 c 0 0 -1.122 1.335 -1.122 1.335 c 0 0 -0.706 -0.143 -0.706 -0.143 c 0 0 -0.332 -0.894 -0.332 -0.894 c 0 0 -0.993 0.542 -0.993 0.542 c 0 0 0.206 1.651 0.206 1.651 c 0 0 -0.649 1.073 -0.649 1.073 c 0 0 1.344 1.67 1.344 1.67 c 0 0 0.59 -2.298 0.59 -2.298 c 0 0 1.271 0.932 1.271 0.932 c 0 0 0.538 -0.305 0.538 -0.305 c 0 0 1.353 0.765 1.353 0.765 c 0 0 0.062 1.415 0.062 1.415 c 0 0 1.953 -0.175 1.953 -0.175 c 0 0 1.045 1.72 1.045 1.72 c 0 0 0.813 0.154 0.813 0.154 c 0 0 0.172 -1.047 0.172 -1.047 c 0 0 0.958 0.974 0.958 0.974 c 0 0 3.797 -0.434 3.797 -0.434 c 0 0 2.436 -1.337 2.436 -1.337 c 0 0 -0.56 0.671 -0.56 0.671 c 0 0 1.55 0.067 1.55 0.067 c 0 0 -0.029 0.951 -0.029 0.951 c 0 0 3.701 -0.316 3.701 -0.316 c 0 0 0.708 -1.967 0.708 -1.967 c 0 0 -2.81 -0.739 -2.81 -0.739 c 0 0 -0.347 -1.359 -0.347 -1.359 c 0 0 0.504 -0.619 0.504 -0.619 c 0 0 2.226 0.229 2.226 0.229 c 0 0 0.901 -3.905 0.901 -3.905 c 0 0 -1.561 -0.133 -1.561 -0.133 c 0 0 -0.842 -1.107 -0.842 -1.107 c 0 0 -1.228 -0.057 -1.228 -0.057 c 0 0 -0.44 -0.937 -0.44 -0.937 c 0 0 -2.687 0.709 -2.687 0.709 c 0 0 0.006 -1.004 0.006 -1.004 c 0 0 -2.634 2.928 -2.634 2.928 c 0 0 -0.774 0.021 -0.774 0.021 c 0 0 -0.399 -1.149 -0.399 -1.149 c 0 0 -2.134 -0.251 -2.134 -0.251 c 0 0 -1.909 -1.17 -1.909 -1.17 c 0 0 -1.035 -1.876 -1.035 -1.876 c 0 0 -1.22 1.163 -1.22 1.163 c 0 0 -0.035 0.865 -0.035 0.865 c 0 0 -2.264 0.618 -2.264 0.618 c 0 0 0.384 0.35 0.384 0.35 c 0 0 -0.518 0.333 -0.518 0.333 c 0 0 -0.061 1.414 -0.061 1.414 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tissemsilt"},"39":{"path":"M 381.341 91.9338 c 0 0 -8.26 -0.416 -8.26 -0.416 c 0 0 -4.264 -1.485 -4.264 -1.485 c 0 0 -4.422 0.397 -4.422 0.397 c 0 0 -0.09 4.578 -0.09 4.578 c 0 0 -1.543 -0.353 -1.543 -0.353 c 0 0 -5.193 -3.142 -5.193 -3.142 c 0 0 -0.05 -2.156 -0.05 -2.156 c 0 0 -1.726 2.196 -1.726 2.196 c 0 0 -1.654 0.581 -1.654 0.581 c 0 0 -1.451 -1.393 -1.451 -1.393 c 0 0 -5.732 -2.047 -5.732 -2.047 c 0 0 -5.311 1.305 -5.311 1.305 c 0 0 -11.927 -1.27 -11.927 -1.27 c 0 0 -2.287 -1.521 -2.287 -1.521 c 0 0 -1.104 0.629 -1.104 0.629 c 0 0 0.72 0.627 0.72 0.627 c 0 0 -1.889 1.328 -1.889 1.328 c 0 0 1.198 1.354 1.198 1.354 c 0 0 -0.702 1.853 -0.702 1.853 c 0 0 3.667 3.255 3.667 3.255 c 0 0 -1.968 4.695 -1.968 4.695 c 0 0 -0.858 4.001 -0.858 4.001 c 0 0 1.083 2.091 1.083 2.091 c 0 0 0.35 4.628 0.35 4.628 c 0 0 0.688 1.585 0.688 1.585 c 0 0 -0.662 1.726 -0.662 1.726 c 0 0 17.299 -0.319 17.299 -0.319 c 0 0 -0.374 -2.7 -0.374 -2.7 c 0 0 -1.172 -1.467 -1.172 -1.467 c 0 0 0.955 -1.07 0.955 -1.07 c 0 0 -0.04 -2.557 -0.04 -2.557 c 0 0 -1.138 -2.602 -1.138 -2.602 c 0 0 0.047 -1.4 0.047 -1.4 c 0 0 0.665 -0.606 0.665 -0.606 c 0 0 0.552 1.049 0.552 1.049 c 0 0 2.721 -2.135 2.721 -2.135 c 0 0 0.762 -0.112 0.762 -0.112 c 0 0 0.521 1.041 0.521 1.041 c 0 0 0.319 -0.807 0.319 -0.807 c 0 0 1.219 7.663 1.219 7.663 c 0 0 8.097 22.969 8.097 22.969 c 0 0 7.777 11.58 7.777 11.58 c 0 0 5.501 6.366 5.501 6.366 c 0 0 39.729 -4.259 39.729 -4.259 c 0 0 -15.994 -9.721 -15.994 -9.721 c 0 0 -1.19 -8.167 -1.19 -8.167 c 0 0 -4.769 -5.554 -4.769 -5.554 c 0 0 -0.044 -1.279 -0.044 -1.279 c 0 0 -4.671 -1.931 -4.671 -1.931 c 0 0 -1.588 -0.012 -1.588 -0.012 c 0 0 -1.992 -6.096 -1.992 -6.096 c 0 0 -3.565 -5.578 -3.565 -5.578 c 0 0 -0.276 -2.739 -0.276 -2.739 c 0 0 -1.411 -1.059 -1.411 -1.059 c 0 0 0.465 -1.005 0.465 -1.005 c 0 0 -0.633 -1.784 -0.633 -1.784 c 0 0 0.574 -2.841 0.574 -2.841 c 0 0 -0.731 -1.183 -0.731 -1.183 c 0 0 1.695 -1.198 1.695 -1.198 c 0 0 0.905 -2.192 0.905 -2.192 c 0 0 1.676 0.677 1.676 0.677 c 0 0 1.6 -1.261 1.6 -1.261 c 0 0 -0.104 -0.757 -0.104 -0.757 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"El Oued"},"40":{"path":"M 368.82 90.0319 c 0 0 0.773 -5.083 0.773 -5.083 c 0 0 2.108 -3.938 2.108 -3.938 c 0 0 0.024 -1.697 0.024 -1.697 c 0 0 -0.637 -0.956 -0.637 -0.956 c 0 0 0.749 -2.004 0.749 -2.004 c 0 0 -0.868 -2.387 -0.868 -2.387 c 0 0 -1.271 -0.098 -1.271 -0.098 c 0 0 -0.661 0.97 -0.661 0.97 c 0 0 -0.441 1.352 -0.441 1.352 c 0 0 0.5 -0.146 0.5 -0.146 c 0 0 -0.088 1.582 -0.088 1.582 c 0 0 -0.908 -2.111 -0.908 -2.111 c 0 0 1.39 -3.602 1.39 -3.602 c 0 0 1.306 -0.817 1.306 -0.817 c 0 0 1.429 -2.436 1.429 -2.436 c 0 0 -1.051 -1.557 -1.051 -1.557 c 0 0 0.787 -1.188 0.787 -1.188 c 0 0 -0.763 -0.573 -0.763 -0.573 c 0 0 -0.117 -2.443 -0.117 -2.443 c 0 0 3.133 -1.131 3.133 -1.131 c 0 0 -0.659 -1.052 -0.659 -1.052 c 0 0 -0.692 -0.061 -0.692 -0.061 c 0 0 -0.333 -1.191 -0.333 -1.191 c 0 0 -0.393 -0.313 -0.393 -0.313 c 0 0 -0.6 0.601 -0.6 0.601 c 0 0 0.179 -0.579 0.179 -0.579 c 0 0 -1.313 -0.926 -1.313 -0.926 c 0 0 -0.409 1.4 -0.409 1.4 c 0 0 -1.048 0.308 -1.048 0.308 c 0 0 0.063 -2.164 0.063 -2.164 c 0 0 -1.77 -0.877 -1.77 -0.877 c 0 0 -0.119 0.549 -0.119 0.549 c 0 0 -1.815 -0.27 -1.815 -0.27 c 0 0 -0.957 2.009 -0.957 2.009 c 0 0 -1.648 -0.483 -1.648 -0.483 c 0 0 0.408 -1.016 0.408 -1.016 c 0 0 -0.614 -0.53 -0.614 -0.53 c 0 0 -4.031 0.609 -4.031 0.609 c 0 0 -0.774 -1.595 -0.774 -1.595 c 0 0 -0.214 1.337 -0.214 1.337 c 0 0 0.74 1.491 0.74 1.491 c 0 0 -0.612 1.515 -0.612 1.515 c 0 0 -2.418 0.598 -2.418 0.598 c 0 0 -1.491 1.387 -1.491 1.387 c 0 0 0.634 1.334 0.634 1.334 c 0 0 -0.178 1.438 -0.178 1.438 c 0 0 1.052 0.219 1.052 0.219 c 0 0 -1.644 1.396 -1.644 1.396 c 0 0 0.23 2.636 0.23 2.636 c 0 0 -1.308 1.429 -1.308 1.429 c 0 0 0.438 1.353 0.438 1.353 c 0 0 -0.401 0.844 -0.401 0.844 c 0 0 0.802 0.146 0.802 0.146 c 0 0 1.347 2.256 1.347 2.256 c 0 0 -0.499 0.58 -0.499 0.58 c 0 0 0.611 0.482 0.611 0.482 c 0 0 -0.812 0.796 -0.812 0.796 c 0 0 0.634 2.146 0.634 2.146 c 0 0 1.087 -0.603 1.087 -0.603 c 0 0 0.737 -1.717 0.737 -1.717 c 0 0 1.138 -0.063 1.138 -0.063 c 0 0 -0.399 0.473 -0.399 0.473 c 0 0 1.047 1.056 1.047 1.056 c 0 0 -0.415 0.997 -0.415 0.997 c 0 0 0.821 -0.196 0.821 -0.196 c 0 0 -0.726 2.389 -0.726 2.389 c 0 0 0.163 3.493 0.163 3.493 c 0 0 -1.047 2.038 -1.047 2.038 c 0 0 0.517 1.927 0.517 1.927 c 0 0 0.05 2.157 0.05 2.157 c 0 0 5.193 3.14 5.193 3.14 c 0 0 1.543 0.354 1.543 0.354 c 0 0 0.09 -4.578 0.09 -4.578 c 0 0 4.421 -0.406 4.421 -0.406 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Khenchela"},"41":{"path":"M 389.163 47.3318 c 0 0 -2.177 -1.081 -2.177 -1.081 c 0 0 -2.499 1.112 -2.499 1.112 c 0 0 -1.255 -0.156 -1.255 -0.156 c 0 0 -2.103 2.353 -2.103 2.353 c 0 0 -1.622 0.03 -1.622 0.03 c 0 0 -1.877 -1.4 -1.877 -1.4 c 0 0 -0.397 1.363 -0.397 1.363 c 0 0 -0.817 0.485 -0.817 0.485 c 0 0 0.354 1.537 0.354 1.537 c 0 0 -2.814 0.214 -2.814 0.214 c 0 0 0.03 -1.478 0.03 -1.478 c 0 0 -2.674 -0.94 -2.674 -0.94 c 0 0 -1.024 -1.331 -1.024 -1.331 c 0 0 -0.649 -2.12 -0.649 -2.12 c 0 0 -0.736 -0.046 -0.736 -0.046 c 0 0 -0.424 -2.263 -0.424 -2.263 c 0 0 -0.75 -0.918 -0.75 -0.918 c 0 0 0.494 -1.348 0.494 -1.348 c 0 0 2.854 0.539 2.854 0.539 c 0 0 2.52 -0.934 2.52 -0.934 c 0 0 1.194 0.271 1.194 0.271 c 0 0 2.159 -2.081 2.159 -2.081 c 0 0 2.218 -0.172 2.218 -0.172 c 0 0 0.375 -0.438 0.375 -0.438 c 0 0 -1.08 -1.382 -1.08 -1.382 c 0 0 0.194 -1.316 0.194 -1.316 c 0 0 1.022 0.411 1.022 0.411 c 0 0 1.832 -1.544 1.832 -1.544 c 0 0 1.383 -0.021 1.383 -0.021 c 0 0 0.272 1.761 0.272 1.761 c 0 0 0.821 -1.258 0.821 -1.258 c 0 0 1.822 -0.823 1.822 -0.823 c 0 0 3.195 0.846 3.195 0.846 c 0 0 0.745 -0.53 0.745 -0.53 c 0 0 1.177 0.636 1.177 0.636 c 0 0 -0.594 1.719 -0.594 1.719 c 0 0 0.381 1.252 0.381 1.252 c 0 0 -1.052 1.066 -1.052 1.066 c 0 0 0.396 0.812 0.396 0.812 c 0 0 -0.868 1.572 -0.868 1.572 c 0 0 0.833 1.825 0.833 1.825 c 0 0 -0.868 1.552 -0.868 1.552 c 0 0 0.009 2.224 0.009 2.224 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Souk Ahras"},"42":{"path":"M 250.882 35.7498 c 0 0 -1.098 2.467 -1.098 2.467 c 0 0 1.42 2.608 1.42 2.608 c 0 0 1.47 -1.099 1.47 -1.099 c 0 0 0.288 -1.11 0.288 -1.11 c 0 0 3.892 0.806 3.892 0.806 c 0 0 2.96 -0.969 2.96 -0.969 c 0 0 2.729 0.814 2.729 0.814 c 0 0 4.677 0.011 4.677 0.011 c 0 0 1.037 -1.463 1.037 -1.463 c 0 0 1.568 0.302 1.568 0.302 c 0 0 0.447 -0.642 0.447 -0.642 c 0 0 -0.442 -0.802 -0.442 -0.802 c 0 0 1.06 -0.14 1.06 -0.14 c 0 0 1.479 -1.647 1.479 -1.647 c 0 0 2.109 -0.599 2.109 -0.599 c 0 0 -0.34 -1.022 -0.34 -1.022 c 0 0 -0.134 -1.446 -0.134 -1.446 c 0 0 -5.189 2.836 -5.189 2.836 c 0 0 -2.726 -0.038 -2.726 -0.038 c 0 0 -0.48 -1.023 -0.48 -1.023 c 0 0 -1.177 -0.279 -1.177 -0.279 c 0 0 -6.739 2.031 -6.739 2.031 c 0 0 -2.311 -0.272 -2.311 -0.272 c 0 0 -4.5 0.676 -4.5 0.676 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Tipaza"},"43":{"path":"M 344.575 51.2509 c 0 0 -3.583 -0.418 -3.583 -0.418 c 0 0 -0.49 0.384 -0.49 0.384 c 0 0 1.2 -1.293 1.2 -1.293 c 0 0 -1.162 -1.213 -1.162 -1.213 c 0 0 0.688 -0.604 0.688 -0.604 c 0 0 -0.284 -2.085 -0.284 -2.085 c 0 0 -1.715 -0.398 -1.715 -0.398 c 0 0 -0.049 -1.869 -0.049 -1.869 c 0 0 0.978 -0.521 0.978 -0.521 c 0 0 -2.188 -2.367 -2.188 -2.367 c 0 0 0.097 -1.172 0.097 -1.172 c 0 0 -1.395 -0.427 -1.395 -0.427 c 0 0 0.114 -1.347 0.114 -1.347 c 0 0 -1.244 -0.953 -1.244 -0.953 c 0 0 0.125 -2.048 0.125 -2.048 c 0 0 -0.558 -0.717 -0.558 -0.717 c 0 0 1.112 -0.339 1.112 -0.339 c 0 0 1.367 0.723 1.367 0.723 c 0 0 1.504 -0.447 1.504 -0.447 c 0 0 1.242 -1.67 1.242 -1.67 c 0 0 4.855 0.813 4.855 0.813 c 0 0 1.86 -1.232 1.86 -1.232 c 0 0 0.435 0.64 0.435 0.64 c 0 0 2.741 0.48 2.741 0.48 c 0 0 0.968 -0.175 0.968 -0.175 c 0 0 -0.021 1.6 -0.021 1.6 c 0 0 -3.296 0.765 -3.296 0.765 c 0 0 0.284 2.021 0.284 2.021 c 0 0 -0.921 1.877 -0.921 1.877 c 0 0 1.318 -0.403 1.318 -0.403 c 0 0 1.126 0.879 1.126 0.879 c 0 0 -0.265 1.486 -0.265 1.486 c 0 0 0.788 0.496 0.788 0.496 c 0 0 1.019 -0.295 1.019 -0.295 c 0 0 0.938 0.805 0.938 0.805 c 0 0 -0.108 1.354 -0.108 1.354 c 0 0 -2.365 0.863 -2.365 0.863 c 0 0 -0.161 2.791 -0.161 2.791 c 0 0 -1.221 1.531 -1.221 1.531 c 0 0 -0.78 -0.115 -0.78 -0.115 c 0 0 0.213 0.771 0.213 0.771 c 0 0 -0.716 -0.51 -0.716 -0.51 c 0 0 -1.649 0.227 -1.649 0.227 c 0 0 -0.801 2.112 -0.801 2.112 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Mila"},"44":{"path":"M 270.211 41.3839 c 0 0 -2.993 -2.104 -2.993 -2.104 c 0 0 -4.677 -0.01 -4.677 -0.01 c 0 0 -2.729 -0.815 -2.729 -0.815 c 0 0 -2.959 0.969 -2.959 0.969 c 0 0 -3.893 -0.807 -3.893 -0.807 c 0 0 -0.288 1.111 -0.288 1.111 c 0 0 -1.47 1.098 -1.47 1.098 c 0 0 -1.42 -2.607 -1.42 -2.607 c 0 0 -2.229 1.641 -2.229 1.641 c 0 0 -0.129 1.172 -0.129 1.172 c 0 0 1.495 1.622 1.495 1.622 c 0 0 -1.196 1.17 -1.196 1.17 c 0 0 1.829 0.536 1.829 0.536 c 0 0 -1.33 0.886 -1.33 0.886 c 0 0 0.004 1.019 0.004 1.019 c 0 0 0.681 0.703 0.681 0.703 c 0 0 0.8 -0.179 0.8 -0.179 c 0 0 -0.257 1.099 -0.257 1.099 c 0 0 0.683 1.606 0.683 1.606 c 0 0 1.268 0.909 1.268 0.909 c 0 0 -0.254 1.759 -0.254 1.759 c 0 0 2.133 0.25 2.133 0.25 c 0 0 0.4 1.149 0.4 1.149 c 0 0 0.774 -0.02 0.774 -0.02 c 0 0 2.635 -2.928 2.635 -2.928 c 0 0 -0.007 1.003 -0.007 1.003 c 0 0 2.686 -0.708 2.686 -0.708 c 0 0 0.44 0.937 0.44 0.937 c 0 0 1.229 0.056 1.229 0.056 c 0 0 0.841 1.108 0.841 1.108 c 0 0 1.563 0.131 1.563 0.131 c 0 0 1.051 -1.104 1.051 -1.104 c 0 0 -0.338 -0.876 -0.338 -0.876 c 0 0 1.985 0.074 1.985 0.074 c 0 0 0.315 -2.776 0.315 -2.776 c 0 0 0.861 0.234 0.861 0.234 c 0 0 1.841 -1.11 1.841 -1.11 c 0 0 0.063 -1.843 0.063 -1.843 c 0 0 -1.346 -0.305 -1.346 -0.305 c 0 0 -0.084 -1.369 -0.084 -1.369 c 0 0 -0.708 -0.199 -0.708 -0.199 c 0 0 0.625 -1.91 0.625 -1.91 c 0 0 1.347 0.043 1.347 0.043 c 0 0 0.758 -0.615 0.758 -0.615 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Aïn Defla"},"45":{"path":"M 190.745 93.6368 c 0 0 1.08 1.632 1.08 1.632 c 0 0 2.133 -1.567 2.133 -1.567 c 0 0 0.589 1.018 0.589 1.018 c 0 0 0.342 -0.416 0.342 -0.416 c 0 0 2.966 0.896 2.966 0.896 c 0 0 4.055 -2.511 4.055 -2.511 c 0 0 1.843 1.041 1.843 1.041 c 0 0 3.133 9.769 3.133 9.769 c 0 0 0.314 -1.128 0.314 -1.128 c 0 0 0.854 0.04 0.854 0.04 c 0 0 2.091 -2.885 2.091 -2.885 c 0 0 1.632 -0.712 1.632 -0.712 c 0 0 1.374 0.198 1.374 0.198 c 0 0 0.176 2.472 0.176 2.472 c 0 0 1.795 -0.807 1.795 -0.807 c 0 0 1.055 0.748 1.055 0.748 c 0 0 -0.204 2.644 -0.204 2.644 c 0 0 0.751 0.279 0.751 0.279 c 0 0 0.729 1.792 0.729 1.792 c 0 0 0.76 0.113 0.76 0.113 c 0 0 -2.123 1.127 -2.123 1.127 c 0 0 0.829 2.979 0.829 2.979 c 0 0 -2.931 13.106 -2.931 13.106 c 0 0 0.843 2.448 0.843 2.448 c 0 0 -0.887 0.991 -0.887 0.991 c 0 0 0.673 0.434 0.673 0.434 c 0 0 -0.593 1.588 -0.593 1.588 c 0 0 -1.563 0.854 -1.563 0.854 c 0 0 -0.278 1.842 -0.278 1.842 c 0 0 0.827 0.472 0.827 0.472 c 0 0 -0.27 1.131 -0.27 1.131 c 0 0 0.979 1.097 0.979 1.097 c 0 0 -0.398 1.535 -0.398 1.535 c 0 0 0.432 2.39 0.432 2.39 c 0 0 -2.988 5.758 -2.988 5.758 c 0 0 -1.629 2.4 -1.629 2.4 c 0 0 -2.417 -0.518 -2.417 -0.518 c 0 0 -1.803 1.33 -1.803 1.33 c 0 0 -6.79 -1.902 -6.79 -1.902 c 0 0 -5.834 3.103 -5.834 3.103 c 0 0 -0.298 -1.563 -0.298 -1.563 c 0 0 -1.384 -0.042 -1.384 -0.042 c 0 0 0.542 -2.863 0.542 -2.863 c 0 0 -1.428 -0.123 -1.428 -0.123 c 0 0 -0.163 -2.392 -0.163 -2.392 c 0 0 2.868 -2.595 2.868 -2.595 c 0 0 -5.768 -4.648 -5.768 -4.648 c 0 0 -2.38 -1.182 -2.38 -1.182 c 0 0 -3.35 -5.675 -3.35 -5.675 c 0 0 1.262 -0.418 1.262 -0.418 c 0 0 0.377 -2.404 0.377 -2.404 c 0 0 -2.205 -2.094 -2.205 -2.094 c 0 0 -1.938 -3.413 -1.938 -3.413 c 0 0 0.196 -2.568 0.196 -2.568 c 0 0 1.717 -3.813 1.717 -3.813 c 0 0 -0.095 -1.926 -0.095 -1.926 c 0 0 -1.187 -2.013 -1.187 -2.013 c 0 0 -1.795 -0.51 -1.795 -0.51 c 0 0 0.209 -0.893 0.209 -0.893 c 0 0 1.274 -0.928 1.274 -0.928 c 0 0 -0.546 -2.521 -0.546 -2.521 c 0 0 1.185 -5.71 1.185 -5.71 c 0 0 3.61 -2.62 3.61 -2.62 c 0 0 4.992 0.022 4.992 0.022 c 0 0 1.227 -1.408 1.227 -1.408 c 0 0 1.531 -0.481 1.531 -0.481 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Naâma"},"46":{"path":"M 193.764 72.7758 c 0 0 -0.686 0.069 -0.686 0.069 c 0 0 -0.264 -0.909 -0.264 -0.909 c 0 0 -3.488 -1.748 -3.488 -1.748 c 0 0 -0.331 0.33 -0.331 0.33 c 0 0 -0.372 -0.771 -0.372 -0.771 c 0 0 -1.081 0.455 -1.081 0.455 c 0 0 -2.338 -0.793 -2.338 -0.793 c 0 0 -0.918 1.336 -0.918 1.336 c 0 0 -1.082 0.265 -1.082 0.265 c 0 0 -1.053 -0.668 -1.053 -0.668 c 0 0 0.202 -0.954 0.202 -0.954 c 0 0 -0.848 -0.622 -0.848 -0.622 c 0 0 2.669 -1.768 2.669 -1.768 c 0 0 1.627 0.143 1.627 0.143 c 0 0 2.119 -1.243 2.119 -1.243 c 0 0 2.023 -5.607 2.023 -5.607 c 0 0 0.896 0.035 0.896 0.035 c 0 0 2.06 -1.622 2.06 -1.622 c 0 0 1.342 1.43 1.342 1.43 c 0 0 -0.223 0.718 -0.223 0.718 c 0 0 1.008 0.007 1.008 0.007 c 0 0 -0.383 1.02 -0.383 1.02 c 0 0 -0.893 0.251 -0.893 0.251 c 0 0 0.174 1.591 0.174 1.591 c 0 0 0.012 -0.62 0.012 -0.62 c 0 0 0.895 -0.046 0.895 -0.046 c 0 0 -0.201 -0.597 -0.201 -0.597 c 0 0 0.82 0.657 0.82 0.657 c 0 0 1.569 0.021 1.569 0.021 c 0 0 5.065 -1.624 5.065 -1.624 c 0 0 0.775 2.923 0.775 2.923 c 0 0 -0.771 0.563 -0.771 0.563 c 0 0 -0.027 1.102 -0.027 1.102 c 0 0 -2.838 0.497 -2.838 0.497 c 0 0 -0.066 0.729 -0.066 0.729 c 0 0 -0.97 0.456 -0.97 0.456 c 0 0 -0.813 -0.548 -0.813 -0.548 c 0 0 -0.781 1.395 -0.781 1.395 c 0 0 -0.672 -0.18 -0.672 -0.18 c 0 0 0.286 1.946 0.286 1.946 c 0 0 -1.38 0.461 -1.38 0.461 c 0 0 -0.248 1.451 -0.248 1.451 c 0 0 -0.815 0.469 -0.815 0.469 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Aïn Témouchent"},"47":{"path":"M 280.112 227.213 c 0 0 8.227 -3.631 8.227 -3.631 c 0 0 6.762 -14.091 6.762 -14.091 c 0 0 1.58 -1.093 1.58 -1.093 c 0 0 10.495 -36.704 10.495 -36.704 c 0 0 3.17 -8.157 3.17 -8.157 c 0 0 0.768 -17.01 0.768 -17.01 c 0 0 6.761 -7.312 6.761 -7.312 c 0 0 5.039 -9.304 5.039 -9.304 c 0 0 -11.871 -3.224 -11.871 -3.224 c 0 0 -13.08 -0.901 -13.08 -0.901 c 0 0 -0.77 0.422 -0.77 0.422 c 0 0 -2.684 -1.107 -2.684 -1.107 c 0 0 -0.903 0.387 -0.903 0.387 c 0 0 -0.305 -0.512 -0.305 -0.512 c 0 0 -0.417 0.754 -0.417 0.754 c 0 0 -0.439 -0.318 -0.439 -0.318 c 0 0 -0.945 0.734 -0.945 0.734 c 0 0 -7.853 0.362 -7.853 0.362 c 0 0 3.66 2.229 3.66 2.229 c 0 0 0.331 2.904 0.331 2.904 c 0 0 -8.55 -2.039 -8.55 -2.039 c 0 0 -5.37 1.604 -5.37 1.604 c 0 0 -10.825 0.946 -10.825 0.946 c 0 0 0.565 6.182 0.565 6.182 c 0 0 1.917 7.688 1.917 7.688 c 0 0 -2.573 1.672 -2.573 1.672 c 0 0 0.721 8.612 0.721 8.612 c 0 0 -4.648 5.148 -4.648 5.148 c 0 0 -0.682 28.618 -0.682 28.618 c 0 0 -2.644 13.284 -2.644 13.284 c 0 0 4.271 23.744 4.271 23.744 c 0 0 -1.117 4.883 -1.117 4.883 c 0 0 10.266 -3.805 10.266 -3.805 c 0 0 11.143 -0.965 11.143 -0.965 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Ghardaïa"},"48":{"path":"M 232.66 64.2719 c 0 0 -2.048 -0.317 -2.048 -0.317 c 0 0 -0.295 -0.662 -0.295 -0.662 c 0 0 -1.721 0.085 -1.721 0.085 c 0 0 -0.918 -0.917 -0.918 -0.917 c 0 0 -1.891 0.041 -1.891 0.041 c 0 0 -1.282 -1.803 -1.282 -1.803 c 0 0 -0.858 0.611 -0.858 0.611 c 0 0 -0.125 -0.523 -0.125 -0.523 c 0 0 -1.717 0.492 -1.717 0.492 c 0 0 -1.217 -3.61 -1.217 -3.61 c 0 0 -0.578 -0.193 -0.578 -0.193 c 0 0 1.744 -2.074 1.744 -2.074 c 0 0 0.867 -0.538 0.867 -0.538 c 0 0 0.877 0.373 0.877 0.373 c 0 0 1.332 -1.438 1.332 -1.438 c 0 0 -0.229 -0.909 -0.229 -0.909 c 0 0 0.59 -0.991 0.59 -0.991 c 0 0 -0.674 0.036 -0.674 0.036 c 0 0 -0.313 -0.769 -0.313 -0.769 c 0 0 0.846 -1.018 0.846 -1.018 c 0 0 1.226 0.572 1.226 0.572 c 0 0 0.555 -0.605 0.555 -0.605 c 0 0 2.126 -0.093 2.126 -0.093 c 0 0 -0.359 -0.87 -0.359 -0.87 c 0 0 0.634 -0.699 0.634 -0.699 c 0 0 -1.289 -1.35 -1.289 -1.35 c 0 0 1.979 -2.472 1.979 -2.472 c 0 0 2.056 0.32 2.056 0.32 c 0 0 2.173 -0.8 2.173 -0.8 c 0 0 0.468 1.894 0.468 1.894 c 0 0 0.536 0.021 0.536 0.021 c 0 0 -0.826 1.687 -0.826 1.687 c 0 0 0.509 -0.155 0.509 -0.155 c 0 0 0.519 1.997 0.519 1.997 c 0 0 1.775 -0.663 1.775 -0.663 c 0 0 -0.347 0.244 -0.347 0.244 c 0 0 0.593 0.041 0.593 0.041 c 0 0 0.541 1.179 0.541 1.179 c 0 0 1.563 0.984 1.563 0.984 c 0 0 2.838 -0.813 2.838 -0.813 c 0 0 2.173 3.286 2.173 3.286 c 0 0 0.771 0.672 0.771 0.672 c 0 0 -1.122 1.335 -1.122 1.335 c 0 0 -0.706 -0.142 -0.706 -0.142 c 0 0 -0.332 -0.895 -0.332 -0.895 c 0 0 -0.993 0.542 -0.993 0.542 c 0 0 0.206 1.651 0.206 1.651 c 0 0 -0.649 1.074 -0.649 1.074 c 0 0 -1.449 0.571 -1.449 0.571 c 0 0 -0.567 0.986 -0.567 0.986 c 0 0 -2.058 -0.207 -2.058 -0.207 c 0 0 -0.165 0.913 -0.165 0.913 c 0 0 -0.811 -0.11 -0.811 -0.11 c 0 0 -0.112 0.868 -0.112 0.868 c 0 0 -1.215 0.097 -1.215 0.097 c 0 0 -1.728 2.879 -1.728 2.879 c 0 0 -0.903 0.185 -0.903 0.185 c 0 0 0 0 0 0 c 0 0 0 0 0 0","name":"Relizane"}}, "height": 500, "width": 508});
Index: public/vendors/vmap/maps/jquery.vmap.argentina.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.argentina.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.argentina.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+jQuery.fn.vectorMap('addMap', 'argentina_en', {"width": 900.0, "height": 1770.5044059903964, "paths":{"sc":{"path": "M26.21,1405.14l2.02,-1.84l8.5,-1.79l7.49,-6.75l1.82,-3.81l-0.1,-8.52l-1.36,-5.95l1.56,-3.04l6.37,-2.92l2.75,-3.07l2.97,0.11l0.73,-1.18l-1.33,-3.1l0.72,-4.2l-1.58,-8.36l-2.19,-0.94l-1.42,-2.77l-4.01,-2.05l-1.36,-2.85l1.89,-3.41l1.92,-5.9l5.13,-8.5l1.1,-6.19l-2.15,-1.51l0.27,-0.87l2.87,-1.74l3.48,0.31l2.11,-0.88l6.11,-7.06l0.46,-1.26l-0.47,-3.5l5.17,2.1l1.83,-0.89l0.94,-1.7l0.03,-1.96l-1.48,-2.86l-4.88,-3.2l4.02,-3.32l-2.49,-3.12l1.53,-5.15l-0.64,-2.1l4.94,-1.15l2.68,-2.89l4.13,-2.84l0.46,-2.12l-0.69,-4.13l0.67,-2.8l-3.25,-8.35l-0.56,-8.49l-6.72,-5.18l6.21,-1.47l5.36,-6.27l182.64,0.03l-1.52,4.87l-0.07,3.84l2.19,9.04l2.61,6.69l7.49,9.84l3.15,1.59l4.03,3.51l3.12,1.31l3.28,4.82l2.42,1.02l9.68,10.33l4.59,2.35l2.58,0.47l2.17,-0.69l3.69,-0.04l2.86,1.15l3.13,-0.03l1.63,1.08l11.47,0.18l4.48,-0.96l4.54,2.73l3.53,3.26l0.88,1.73l0.57,4.16l1.36,2.72l-1.31,11.34l-5.43,12.45l-6.15,0.11l-4.53,3.52l-3.79,0.4l-3.78,2.01l-3.49,-0.14l-1.24,0.7l2.68,1.3l2.01,-0.15l3.58,-1.73l3.51,-0.22l6.69,-2.85l3.05,0.54l1.11,1.8l1.0,3.86l3.27,1.54l-0.5,1.42l-3.77,-1.36l-3.81,0.92l-0.08,1.11l1.6,2.6l-0.31,2.19l2.02,1.99l-2.39,-0.53l-5.91,1.19l-2.42,4.07l-7.9,5.01l-1.26,2.52l0.35,1.72l-2.99,-0.32l-1.35,0.48l-1.54,3.01l-9.03,2.6l-3.82,4.23l-4.19,3.43l-1.8,0.12l-8.8,3.98l-1.72,1.37l-4.74,6.65l-0.83,2.25l-6.68,3.63l-9.85,10.46l-1.64,3.53l0.97,3.43l-5.16,5.78l1.09,2.04l-1.92,-0.39l-1.14,0.46l-2.57,4.42l0.36,0.69l2.0,0.42l3.87,-1.13l3.27,-7.22l0.64,0.53l-4.83,18.44l-2.16,15.41l-1.44,3.3l-8.65,7.34l-9.07,4.38l-6.09,0.41l-1.5,-1.94l-2.57,-1.44l-0.76,-2.18l-2.7,-2.72l-1.29,-3.39l-3.35,-4.58l-1.76,-4.74l-2.12,-1.5l-2.3,-0.51l-0.38,1.02l3.32,2.21l0.63,2.9l2.41,4.81l0.09,1.66l-4.19,1.9l-2.22,-0.61l-6.11,0.47l-4.32,1.21l-2.08,1.26l0.17,1.14l1.36,0.14l6.82,-2.0l11.1,-0.13l1.98,1.82l1.09,3.19l6.44,4.1l-2.65,2.8l-8.91,2.37l-10.15,4.63l-4.72,4.87l-1.39,3.13l-3.27,3.78l-1.11,2.41l-2.97,11.33l0.58,6.16l-0.56,2.29l-4.82,5.0l-5.85,4.45l-1.09,2.37l0.87,0.72l5.26,-4.93l4.09,-1.96l0.3,0.33l1.43,4.52l1.04,7.37l1.61,3.34l1.12,5.23l4.46,10.7l0.11,2.99l-0.52,0.41l-2.99,-0.44l-3.16,2.46l-2.07,-0.29l-5.12,-2.39l-4.46,-0.18l-5.69,1.45l-5.61,3.36l0.66,0.5l9.64,-1.89l3.2,0.21l6.51,2.35l-2.03,1.93l0.26,1.0l1.24,0.1l6.04,-3.58l2.72,-0.72l5.4,8.29l4.29,9.36l5.33,8.15l6.35,7.04l5.93,8.36l0.01,1.68l-1.59,1.82l0.03,-3.39l-0.68,-1.16l-7.63,-2.22l-8.97,-1.23l-8.38,-3.86l-9.3,-2.5l-12.38,-0.35l-21.15,-7.55l-88.67,-1.05l-1.66,-0.91l0.72,-4.25l-1.66,-3.41l-7.39,-6.46l-6.99,-2.77l-1.36,-5.5l-1.17,-1.13l-3.39,-0.44l-0.57,-0.84l4.27,-4.33l0.05,-2.34l1.27,-2.96l0.13,-4.62l2.79,-4.06l-0.09,-1.38l-4.24,-2.88l-2.19,-3.11l0.22,-1.56l2.02,-2.65l2.61,-1.07l1.34,-4.32l0.11,-7.66l-3.78,-5.52l1.89,-4.34l0.01,-1.48l-3.95,-1.93l-5.79,-1.15l-2.28,0.96l-2.99,2.94l-1.6,0.05l-4.47,-3.04l-6.84,3.05l-6.69,5.4l-3.48,0.67l-1.38,-0.98l-0.64,-6.28l-2.94,-4.05l-0.73,-12.23l-1.29,-4.03l-2.15,-3.46l-8.22,-5.99l-0.39,-1.26l2.81,-6.23l-1.13,-2.13l-3.04,-2.48l1.29,-1.85l0.31,-2.63l2.29,-2.06l1.0,-1.85l-0.16,-1.84l-3.58,-4.63l1.22,-2.65l-0.14,-1.5l-2.97,-3.93l2.01,-2.62l-0.36,-2.77l3.74,-3.15l0.1,-4.35l13.96,-0.24l0.86,-1.5l1.63,-0.5l-0.0,-1.22l-3.03,-0.61l-0.69,-1.9l3.4,-4.43l1.29,-4.42l2.68,-3.42Z", "name": "Santa Cruz"}, "co": {"path": "M384.61,644.72l-0.01,-52.16l-2.02,-38.11l1.69,-3.13l1.96,-0.55l0.78,-0.9l-0.45,-2.66l1.6,-3.27l-0.31,-2.34l1.84,-3.39l1.32,-6.75l1.28,-1.56l1.51,-4.8l0.41,-3.69l-2.18,-6.04l0.13,-6.06l-0.38,-0.83l-1.42,-0.56l-5.69,1.46l-5.09,0.42l-0.15,-2.92l-1.41,-2.71l-0.61,-4.15l-3.1,-3.39l-15.06,-8.47l-5.04,-0.44l-0.34,-38.56l10.84,-33.5l1.88,-3.36l3.63,-9.94l9.35,-2.54l2.43,-1.25l8.96,-9.24l0.66,-2.15l-1.36,-11.32l0.35,-1.13l29.26,-7.42l10.6,2.24l-0.19,2.23l1.16,1.29l3.35,1.74l1.04,1.33l3.61,0.86l2.12,1.31l3.78,0.21l5.31,-0.8l3.84,1.05l2.43,-0.28l0.11,2.75l2.77,0.74l0.13,1.58l0.82,0.73l49.42,0.27l1.76,1.21l6.89,16.95l-2.09,12.66l0.43,2.33l12.05,13.48l-11.88,43.13l-0.69,1.48l-4.5,4.13l0.83,2.73l0.09,6.9l1.41,2.61l-1.26,3.44l-0.29,5.44l3.79,4.01l2.65,1.53l2.85,7.07l4.5,3.76l0.84,4.61l1.28,1.4l-1.24,3.78l2.91,1.11l2.29,4.29l1.97,2.25l-1.07,3.93l-0.28,5.36l-2.74,3.05l-2.66,0.53l-1.5,1.76l-42.0,63.76l-21.67,-0.08l-1.97,1.92l-0.59,29.68l-75.68,-0.02Z", "name": "C\u00f3rdoba"}, "ju": {"path": "M286.9,91.86l10.63,-34.51l-7.97,-8.57l3.3,-4.78l4.02,-3.49l-0.15,-5.14l2.04,-0.12l2.07,-2.05l6.89,-2.62l-0.1,-2.21l2.31,-7.33l1.28,-0.93l2.9,0.47l0.65,-0.94l11.11,-3.05l2.08,-2.21l1.3,-0.31l1.06,-5.96l2.34,-7.48l5.41,2.03l1.21,1.26l1.01,2.76l5.07,1.21l5.75,6.61l1.56,1.05l1.63,0.45l7.36,-1.29l5.56,0.7l11.42,-0.13l-1.97,5.13l-0.19,4.55l-4.26,8.57l-0.54,4.23l0.46,0.92l1.56,0.08l1.55,1.36l-0.86,2.03l0.01,2.5l0.79,5.35l1.73,4.93l2.52,2.19l5.71,0.36l1.45,1.39l0.36,1.91l-1.52,8.82l0.94,1.27l3.18,1.41l2.78,5.62l0.94,3.34l3.97,0.46l2.28,-1.72l3.45,-0.57l1.18,1.08l3.45,1.27l4.06,4.54l1.59,0.98l1.51,-1.03l0.86,-2.77l1.22,-1.51l7.22,0.15l1.2,31.33l-2.3,5.2l-3.79,4.78l-0.98,0.64l-4.2,0.56l-1.51,1.82l-2.51,0.7l-3.25,3.05l-1.56,3.14l-9.52,-7.51l-1.81,2.14l-2.02,4.64l-0.89,0.02l-5.6,-2.35l-3.75,-2.97l-0.93,-1.49l-5.26,2.21l-6.53,-1.88l-2.39,-1.92l-2.39,0.56l-2.24,-1.27l-7.34,-10.7l-0.44,-4.82l-6.64,-4.73l-2.54,0.63l-1.58,-2.18l0.34,-1.76l-1.47,-2.47l0.21,-3.56l1.56,-2.49l-0.55,-1.57l0.52,-7.01l-2.09,-2.37l-6.56,-3.84l-1.95,-0.1l-1.97,-1.29l-4.0,-1.11l-1.19,0.17l-1.04,1.28l-1.35,6.31l3.11,9.81l-0.63,14.89l-1.52,4.49l-1.27,0.55l-2.38,3.13l-1.27,0.65l-4.15,-0.2l-3.05,-1.51l-4.17,-4.76l-4.73,-2.3l-3.28,-4.52l-1.81,-0.54l-0.54,-1.41l-3.68,-3.82l-3.06,-0.93l-4.43,-3.59Z", "name": "Jujuy"}, "tf": {"path": "M408.94,1757.54l-2.09,0.84l-1.51,2.07l-2.71,0.1l0.73,-2.08l-3.85,-2.08l2.91,-2.85l3.2,1.62l1.24,-0.1l3.03,-1.04l0.99,-0.97l-0.48,-0.88l1.85,0.46l2.22,-0.85l0.49,2.21l1.55,0.19l0.43,-4.59l1.42,0.85l4.37,0.04l1.91,1.52l1.02,-0.29l0.22,-1.64l1.44,0.86l1.27,-0.83l1.53,2.12l6.83,-2.17l2.03,1.08l1.51,-0.83l-1.89,2.73l-4.22,2.03l1.0,-2.01l-0.34,-1.26l-0.95,-0.36l-2.25,1.59l-2.7,-0.04l-1.31,1.53l-5.06,0.99l-0.81,0.9l-0.45,-0.71l0.74,-2.76l-2.73,-0.28l-6.68,4.19l-1.03,0.12l-0.4,-1.28l-1.46,0.2l-1.08,0.92l0.09,0.76ZM409.66,1751.56l-1.38,-1.15l-0.1,-0.22l0.33,-0.05l1.14,1.42ZM224.01,1753.21l0.63,-130.78l7.96,11.21l5.25,4.7l2.33,5.44l-1.67,-1.61l-3.03,0.66l-1.16,0.72l-2.14,3.24l-4.29,3.39l-1.56,2.53l0.03,2.58l1.02,2.45l1.53,1.82l4.69,2.33l2.69,0.36l8.41,-0.6l2.91,5.31l2.09,8.72l2.95,4.91l11.08,8.93l1.27,2.74l2.35,-0.03l2.49,1.8l1.57,5.66l12.37,9.02l12.25,6.68l2.96,2.62l9.83,3.96l1.83,1.26l6.67,7.51l5.42,3.25l2.77,0.72l4.04,3.03l15.5,6.27l2.46,0.42l2.19,1.32l6.71,0.95l10.87,-1.36l3.57,0.26l3.17,-1.13l6.73,0.88l-2.14,2.24l-1.41,3.46l0.46,1.26l-1.67,1.6l0.29,1.72l-2.66,1.96l-1.23,3.89l-0.87,0.57l-0.87,-0.03l-0.54,-1.97l-3.2,-0.66l-1.43,0.93l0.21,1.39l-0.59,0.69l-5.16,0.13l-1.16,1.91l-1.07,0.4l-1.26,-1.04l-0.47,-2.58l-1.64,-1.14l-10.03,-0.11l-0.5,0.58l0.38,1.12l-2.01,1.91l-5.63,1.97l-9.38,-0.28l-2.42,1.33l-1.55,3.01l-0.82,0.26l-8.04,-1.39l-7.58,-5.41l-6.56,-0.92l-3.9,-1.47l-40.71,-2.68l-6.43,-1.0l-2.14,-1.39l-4.31,-0.35l-3.91,-1.67l-1.17,0.95l-0.29,2.21l-8.37,0.6l-1.62,-0.67l-3.33,-3.47Z", "name": "Tierra del Fuego"}, "cr": {"path": "M650.75,342.39l1.84,-3.72l0.47,-5.16l2.52,-5.8l-0.16,-4.73l1.11,-6.37l-1.11,-3.87l0.38,-7.76l1.38,-1.37l4.24,-0.52l2.68,-2.14l0.94,-1.55l1.63,-6.3l-0.09,-3.63l1.16,-3.35l0.1,-2.89l-0.87,-3.68l-2.26,-4.45l-0.08,-2.9l10.16,-7.06l6.35,-2.48l12.15,-1.03l4.93,0.61l4.78,-0.47l14.03,3.37l8.89,4.09l7.92,-0.25l1.42,1.23l5.77,2.58l4.94,-0.19l4.54,-2.39l2.96,-0.74l6.02,4.25l1.96,-0.34l2.37,-1.74l2.93,-0.82l2.64,0.37l3.75,4.67l3.21,1.76l1.87,-0.48l3.29,-4.98l0.77,-4.3l3.13,-1.21l3.49,-2.97l1.99,0.26l3.43,1.21l-1.16,2.38l-0.12,3.09l6.53,12.9l1.84,9.86l2.33,2.68l2.08,4.63l4.71,3.48l-2.19,1.92l-2.82,0.93l-1.45,1.18l0.41,1.84l3.65,1.66l0.8,1.34l-1.16,3.07l-1.14,-1.78l-5.04,-1.0l-3.38,1.72l0.19,4.21l-4.93,1.52l-0.65,1.03l-0.02,3.57l-0.68,0.9l-2.82,1.93l-3.66,4.66l-4.68,1.88l-0.76,5.1l-0.84,1.45l-3.18,1.89l-1.55,5.6l-5.27,1.88l-3.26,2.59l-1.66,2.59l-0.09,2.27l-1.52,3.44l-3.66,2.42l-2.26,4.73l-6.59,6.15l-2.51,4.08l-3.97,3.9l-4.67,0.56l-3.49,1.93l-0.97,2.0l-0.66,6.24l-3.81,2.83l-4.27,5.14l-1.78,1.18l-3.77,0.64l-0.67,0.66l0.69,3.63l-1.15,3.06l-8.86,7.68l-1.96,3.48l0.2,2.35l3.1,6.2l-6.62,-6.14l-2.15,-3.88l-1.44,-5.06l-4.79,-4.06l-2.67,-4.39l-1.63,-1.21l-8.83,-2.31l-2.99,-0.04l-2.93,-1.47l-2.22,-0.04l-6.64,2.68l-4.41,0.98l-5.96,-1.09l-10.52,6.78l-6.56,-1.79l-3.11,0.68l-1.97,-0.52l-3.21,1.17l-3.55,0.18l-0.15,-2.23l1.27,-6.18l1.96,-5.14l-1.61,-6.06l-1.87,-3.87l2.01,-4.54l1.64,-6.73l0.11,-10.09l1.83,-7.27l2.59,-3.14l5.67,-2.23l6.68,-4.73l0.91,-1.66l0.15,-4.62Z", "name": "Corrientes"}, "tu": {"path": "M334.62,263.93l1.96,-3.49l3.32,-3.23l1.62,-3.24l5.73,-5.92l2.05,-4.19l0.79,-7.2l-0.44,-2.25l-7.98,-6.03l-4.12,-1.2l-1.28,-1.65l2.25,-6.73l0.29,-2.78l1.9,-2.74l15.0,2.04l1.26,-1.73l1.11,-8.99l3.62,1.27l6.24,0.92l5.54,-2.12l1.46,3.34l1.26,1.23l8.73,3.4l1.93,-0.07l3.4,1.63l2.29,-0.3l2.4,-1.76l3.44,-0.94l3.15,0.63l8.99,-0.21l0.04,4.05l-1.77,6.18l1.09,10.8l-3.46,-0.14l-1.96,5.69l-2.36,0.64l-2.5,8.96l-2.14,2.82l-1.35,5.25l-3.34,7.44l-2.59,1.58l-5.74,6.41l1.14,1.34l3.07,1.16l-1.38,1.66l-2.42,0.45l-0.68,1.64l0.06,1.46l2.97,6.69l-1.26,0.93l-1.72,4.64l-6.5,1.52l-4.6,-2.85l-1.2,-0.05l-6.91,4.9l-2.56,4.22l-4.04,-4.86l-1.83,-6.31l-2.78,-1.61l-2.91,0.77l-0.88,-0.84l-1.25,-4.07l-2.3,-2.03l-2.53,-10.59l0.05,-2.19l-9.41,-3.34Z", "name": "Tucum\u00e1n"}, "ch": {"path": "M74.56,1091.13l0.62,-0.9l-0.18,-1.84l1.24,-1.23l0.32,-2.23l3.98,-1.11l2.1,0.36l0.84,-0.87l-0.19,-4.14l0.65,-2.07l-1.49,-1.99l-4.27,-1.61l-6.75,-0.73l-1.85,-0.75l-3.15,-3.21l-0.78,-2.14l1.6,-7.27l-1.4,-16.53l2.01,-2.21l2.39,-1.14l0.32,-0.96l-1.65,-2.82l0.63,-3.54l-3.22,-4.21l3.27,-4.57l0.83,-2.78l1.05,-0.83l0.93,0.02l1.21,2.08l1.58,0.72l2.1,-1.87l3.59,-0.68l2.52,-1.51l0.83,-1.56l-0.15,-2.93l-0.63,-1.04l298.66,0.03l2.94,0.52l3.67,6.14l5.37,3.75l2.17,0.14l3.4,1.69l4.05,0.4l2.04,1.32l3.37,-0.75l1.82,0.41l0.31,0.36l-1.69,1.16l-3.85,5.17l-0.44,2.0l0.79,1.01l4.97,0.05l1.96,0.83l5.91,-1.28l9.81,0.17l2.64,-3.41l-0.25,-1.86l0.53,-1.06l-1.18,-3.19l-3.36,-0.81l-4.96,0.2l-3.07,-0.7l6.84,-0.97l7.8,-2.61l6.45,-3.68l3.54,-0.11l1.08,0.62l2.8,6.54l2.2,1.99l0.91,1.75l0.81,15.67l-2.42,6.55l0.5,1.99l-2.01,2.41l-2.75,1.15l-9.16,1.88l-3.8,0.14l-2.25,1.37l-1.16,-0.18l-4.62,-4.87l-1.47,-0.78l1.4,-5.82l1.08,-0.81l-0.41,-1.04l-4.27,-2.82l-1.33,-2.38l-5.44,-2.02l-4.84,-0.03l-4.54,0.87l-4.45,2.05l-3.1,3.43l-5.19,1.03l-1.38,0.9l-3.41,5.28l1.26,2.75l11.74,4.72l4.14,2.94l2.63,0.89l3.96,-0.17l3.25,2.15l4.92,-1.34l0.42,1.02l-6.19,4.21l-14.3,4.29l-8.23,5.13l-4.16,3.47l-0.57,1.49l0.28,3.72l-5.18,4.47l-2.44,3.71l-2.98,2.27l-2.6,4.32l-0.13,4.06l1.12,2.62l-0.47,3.04l1.07,1.1l0.87,2.58l0.18,3.66l2.12,0.32l-0.41,2.14l0.89,0.69l-0.95,2.1l0.22,2.12l-3.22,1.49l-0.78,3.81l2.43,2.56l-0.33,2.26l1.82,2.74l-0.73,1.39l-3.45,2.12l-0.58,1.53l0.45,1.71l1.6,1.14l-2.89,-0.29l-1.45,2.81l0.23,0.69l-2.67,-0.52l-1.14,1.96l-6.36,2.94l-3.32,4.2l-1.76,5.69l0.35,2.44l7.95,3.41l-1.81,1.03l-1.08,1.65l0.33,1.26l-1.01,0.91l0.52,1.21l-3.46,0.82l-2.67,-1.45l-2.72,0.17l-0.73,-1.03l-1.31,-0.29l-0.99,0.4l-0.59,1.46l-2.05,0.12l-3.63,-2.74l-4.59,-0.78l-4.03,0.35l-3.18,3.55l-1.34,0.36l-1.39,-0.53l-8.96,3.54l-0.66,1.56l0.67,1.17l-1.61,-0.09l-1.22,0.83l3.02,2.57l-0.31,0.49l-5.58,-0.39l-8.22,0.56l-4.08,2.19l-3.75,3.42l-8.77,13.44l-1.79,0.72l-2.95,2.53l-1.46,3.3l0.13,3.5l-0.9,2.03l0.54,1.16l-2.0,1.2l-5.44,5.45l-1.33,1.94l0.14,1.49l-1.96,2.04l-181.83,-0.03l0.78,-1.13l-1.39,-3.86l-1.33,-1.44l-3.95,-1.85l0.49,-3.24l-2.25,-2.71l0.84,-2.5l-0.12,-2.54l1.82,-2.77l-0.87,-1.42l1.82,-1.55l8.36,-0.77l1.94,-1.28l0.71,-1.46l-1.42,-3.6l5.93,-2.76l2.96,-3.51l-0.22,-2.27l-2.22,-3.49l-5.56,-4.72l-3.02,-6.48l-1.66,-1.72l-5.29,-0.35l-2.48,-2.25l-1.23,-0.35l-4.89,1.08l-5.33,-2.33l-2.61,-0.06l-0.51,-6.06l1.19,-0.99l8.78,1.98l4.11,-2.02l5.99,1.41l5.99,-2.04l5.2,2.68l2.05,0.56l1.95,-0.35l1.84,-1.18l1.27,-1.86l0.14,-6.03l1.47,-2.41l3.08,-1.19l0.55,-2.7l-1.54,-1.99l-0.76,-2.63l-2.06,-1.6l-10.42,-1.47l-13.6,-0.45l-3.59,0.54l-1.39,-1.15l2.19,-1.71l0.42,-1.42l-1.24,-2.52l1.17,-3.68l-2.3,-4.99l4.1,-2.26l4.25,-5.85l0.52,-2.17l-2.67,-4.09l-1.97,-1.54l0.21,-3.25l-0.83,-0.37l-1.51,0.62l-0.41,-0.58l0.54,-1.35l4.33,-2.43l-0.2,-5.07l-4.21,-3.49l-3.12,-0.27l0.87,-1.66l-0.69,-2.47l-1.99,-0.86l-1.48,0.36Z", "name": "Chubut"}, "rn": {"path": "M78.41,959.83l13.36,1.08l8.71,3.07l2.94,0.32l3.94,-0.78l3.16,-1.65l4.95,-5.79l0.87,-2.43l-1.06,-2.56l-3.26,-2.38l-0.4,-1.73l2.13,-2.59l2.91,-1.34l1.85,-3.17l4.59,-1.37l2.39,-1.51l4.18,0.66l1.87,-0.41l6.26,-4.11l4.07,2.89l5.58,-1.0l4.01,0.08l1.45,-0.87l1.37,-3.65l2.14,-0.21l1.8,-1.25l0.64,-1.45l0.33,-5.19l2.98,-6.56l0.89,-7.73l1.93,-5.29l11.75,-6.47l6.17,0.18l2.54,-1.0l5.8,-4.95l5.28,-6.87l5.45,-2.91l3.12,-0.27l4.26,-2.0l2.9,-4.32l2.94,-1.84l1.63,-4.18l2.24,-2.27l3.47,-1.96l3.01,-4.41l2.6,-1.79l3.07,-1.11l2.99,-3.33l3.91,-2.4l2.64,1.79l1.97,-0.7l4.47,0.74l5.2,-1.33l0.05,-0.77l-1.07,-0.61l-0.69,-3.17l-9.05,-12.55l0.12,-56.85l17.24,2.15l1.78,0.85l2.49,2.5l1.55,3.17l-0.48,3.89l-5.57,4.66l-1.09,2.01l-0.08,3.65l1.47,2.99l1.81,0.81l1.67,-0.38l2.65,1.71l2.44,4.71l2.84,3.08l2.04,0.88l4.74,-0.75l3.36,0.43l3.38,-1.54l3.63,-0.67l1.55,0.37l1.7,5.82l3.1,3.88l19.15,7.86l2.24,2.38l0.87,4.0l0.88,1.23l7.83,1.75l8.07,-0.91l11.4,1.33l6.51,1.76l1.76,1.09l2.5,0.14l1.52,0.99l5.72,-2.21l6.06,1.81l2.78,1.47l11.52,-1.83l6.27,-0.0l1.29,0.78l5.71,-0.4l15.59,2.25l14.54,4.98l4.08,2.35l2.08,0.33l4.49,4.78l5.72,1.92l3.15,3.74l8.86,5.63l5.49,1.08l0.08,73.1l9.72,1.49l3.35,1.23l10.81,9.78l2.43,4.72l-2.39,2.18l-10.38,3.68l-9.75,-0.36l-3.07,0.7l-17.77,-0.11l-3.68,-1.25l-4.57,-3.97l-4.09,-0.88l0.55,-1.5l-0.83,-0.91l-3.47,0.89l-1.61,-0.38l-10.97,-5.26l-6.1,-1.5l-4.2,-1.95l-5.73,-0.99l1.62,-1.15l-0.58,-1.47l-1.52,-0.59l0.89,-1.24l-1.47,-1.12l-4.49,-0.97l-4.41,0.99l-0.63,1.26l2.47,0.07l0.11,1.05l-4.02,0.3l-4.41,3.35l-2.6,7.64l1.31,11.46l1.9,8.08l2.01,6.47l2.52,2.53l0.57,1.41l-2.06,7.46l1.76,5.13l-0.07,1.71l-3.35,8.46l0.41,2.61l-301.92,-0.42l-0.86,-6.74l-2.81,-4.36l-0.6,-3.91l-2.51,-3.31l-0.0,-1.18l2.66,-1.89l0.62,-1.31l-1.58,-3.09l0.38,-4.01l-1.08,-3.74l1.38,-6.26l-0.72,-3.54l0.79,-0.76l0.8,-4.81l-0.51,-3.06ZM397.03,948.81l-1.68,0.15l0.35,-0.17l1.33,0.02ZM394.11,949.01l-0.9,-0.06l-0.69,-0.27l1.45,-0.57l0.14,0.9Z", "name": "R\u00edo Negro"}, "sf": {"path": "M528.89,526.62l1.18,-3.38l-1.37,-1.72l-0.89,-4.7l-4.61,-3.94l-2.85,-7.07l-2.8,-1.69l-3.39,-3.44l0.27,-4.89l1.28,-3.69l-1.43,-2.8l-0.07,-6.82l-0.9,-1.89l4.31,-4.03l0.88,-1.84l11.98,-43.63l-2.27,-3.41l-9.92,-10.53l-0.31,-1.66l19.06,-117.78l127.2,-0.05l-2.11,3.56l-2.47,1.1l-3.75,0.53l-1.52,2.57l-0.18,7.37l1.11,3.81l-1.1,6.32l0.18,4.62l-2.5,5.7l-0.46,5.09l-1.88,3.51l-0.14,4.89l-0.6,1.08l-6.39,4.51l-4.37,1.56l-2.64,1.68l-1.8,2.78l-1.61,5.85l-0.39,11.72l-1.6,6.56l-2.09,4.89l1.98,4.38l1.52,5.6l-1.92,4.82l-1.41,7.15l0.75,4.69l1.7,3.77l-0.45,6.21l-1.58,7.01l-15.3,23.47l-2.84,2.86l-1.36,4.04l-3.16,4.51l-4.03,3.06l-7.14,8.31l-2.48,1.09l-5.91,0.11l-2.23,0.97l-1.35,7.05l-2.08,3.49l0.12,2.86l2.47,4.64l-2.01,4.21l0.22,5.01l-1.32,4.95l0.09,5.02l-1.63,4.23l-0.06,2.21l2.75,5.01l0.33,4.53l1.07,3.93l2.47,4.86l1.6,1.83l1.57,4.21l2.69,3.2l4.7,2.68l5.01,4.89l-0.33,1.42l-2.55,1.53l-0.5,3.45l-2.66,2.26l-0.76,3.99l-1.76,3.63l-1.19,0.86l-2.66,0.3l-4.74,-3.2l-4.69,-0.19l-3.04,-1.16l-3.56,0.79l-1.43,2.31l0.34,1.58l-1.39,1.93l-33.55,35.18l-50.24,0.26l41.54,-63.06l1.04,-1.26l1.75,-0.14l1.77,-1.12l2.44,-2.96l1.43,-10.23l-4.54,-7.0l-2.52,-0.83Z", "name": "Santa Fe"}, "fo": {"path": "M509.95,33.31l0.23,1.24l0.98,0.31l1.04,1.46l-0.77,2.5l2.82,1.42l0.1,3.53l6.89,8.35l2.06,5.47l1.69,1.79l5.02,2.97l3.36,3.18l1.69,3.73l2.54,1.79l3.26,0.41l2.25,2.29l1.19,0.42l-0.08,1.09l1.33,1.81l9.16,3.49l1.19,2.03l2.71,1.64l1.54,0.02l2.87,2.12l-0.39,2.76l3.15,3.31l2.16,3.54l1.66,0.97l1.75,-0.44l4.4,2.7l4.93,0.03l1.73,1.0l3.0,0.07l1.96,2.29l1.98,0.21l2.35,1.41l4.72,0.52l1.96,1.35l8.89,0.42l4.69,-0.9l16.12,10.31l2.92,3.1l3.25,0.97l3.27,2.08l0.59,1.28l3.21,2.36l1.84,2.74l15.42,7.52l8.61,6.29l3.91,0.5l1.48,1.25l9.89,1.87l6.24,6.72l1.52,0.04l3.53,-2.44l4.44,3.37l3.79,1.53l1.69,-0.04l0.86,1.44l5.03,0.51l5.06,4.37l1.49,3.15l2.26,2.15l1.39,3.91l3.63,3.21l-0.72,5.31l-1.58,0.97l-0.29,1.19l-2.16,-0.02l-0.73,1.82l-2.56,0.55l-1.63,2.05l1.01,1.63l-3.11,2.08l0.68,2.77l-3.11,1.87l-0.06,1.31l0.99,0.54l-2.41,2.81l0.26,0.66l1.79,0.53l-0.39,0.51l-5.11,3.69l-4.51,1.91l-1.33,2.97l-1.75,-0.16l0.16,1.49l1.81,1.28l-2.79,1.48l0.04,3.27l-2.06,4.05l1.12,1.88l-1.32,3.56l0.29,1.11l1.84,1.89l-1.0,0.94l0.46,1.65l-2.35,-0.05l-0.62,5.21l-1.79,0.64l0.46,1.47l-2.76,0.35l-0.6,1.52l1.52,1.73l-1.43,-0.15l-0.62,-1.59l-2.04,0.12l-1.23,-0.61l-0.71,-1.63l-3.1,-2.67l-1.2,-2.38l-3.76,-2.29l-1.77,-2.18l-2.31,-0.49l-2.23,-2.62l-3.19,-1.64l-4.17,-4.8l-6.44,-2.72l-2.75,-2.62l-1.44,0.18l-1.45,1.32l-2.44,0.93l-3.35,-0.32l-1.27,-1.5l-1.85,-5.89l-2.31,-1.05l-8.59,-1.4l-0.47,-5.69l-1.35,-0.28l-3.05,-4.2l-3.79,-2.66l-0.63,-2.31l-3.37,-1.85l-1.26,-1.62l-2.17,-0.58l-0.98,-1.78l-4.94,-1.88l-1.26,0.4l-2.53,-5.42l0.52,-1.08l-0.65,-1.52l-2.46,-0.78l-0.57,-1.75l-1.71,-0.9l0.28,-0.89l-1.04,-2.02l-3.0,-2.19l-3.35,-5.25l-6.69,-2.26l-7.02,-4.29l-10.54,-8.45l-1.86,-0.1l-1.03,-1.22l0.39,-1.74l-2.24,-3.51l-0.08,-1.46l-1.29,-0.72l-1.75,-2.34l-2.59,-0.99l-8.15,-1.08l-4.65,-4.3l-1.08,-2.18l-3.77,-0.28l-2.1,-3.97l-3.36,-2.69l-5.66,-1.14l-3.64,-2.51l-2.1,-2.37l-4.42,-0.85l-9.3,-3.54l-0.1,-77.05l1.35,0.29Z", "name": "Formosa"}, "ne": {"path": "M78.32,958.6l0.7,-3.48l-2.72,-4.86l-1.92,-6.59l4.54,-5.37l0.29,-2.25l-0.63,-1.47l2.75,-6.78l3.04,0.3l2.68,-5.61l-0.78,-2.37l-1.35,-0.49l-1.32,0.81l-3.04,-3.43l0.67,-5.62l-0.49,-1.0l1.42,-0.44l1.99,0.87l2.3,0.1l0.74,-2.39l-0.48,-2.47l2.94,-5.52l-0.33,-1.24l-2.74,-3.01l-1.32,-5.53l0.91,-2.81l-1.01,-1.76l0.08,-1.91l0.82,-1.31l2.59,2.43l1.14,0.27l3.79,-0.26l1.15,-1.06l0.36,-2.38l-1.83,-1.63l3.37,-4.89l-0.64,-2.66l2.43,-2.02l0.49,-1.58l0.46,-4.43l-1.31,-11.08l1.28,-5.64l5.26,-3.04l2.07,-2.06l3.55,-0.59l4.63,-2.7l4.9,-0.07l1.63,-2.14l1.77,-0.99l-0.39,-2.61l2.25,-4.26l-0.8,-2.42l-4.58,-3.57l-0.95,-1.64l-2.04,-9.75l0.5,-3.47l-0.67,-3.11l0.71,-2.07l-3.63,-6.92l-0.34,-2.22l-1.75,-3.13l-2.3,-6.79l-0.02,-3.71l2.59,-2.33l-0.59,-2.24l1.07,-4.1l-3.52,-6.56l-0.45,-2.31l2.63,-3.94l0.29,-4.11l2.34,-1.87l-2.31,-2.39l-0.42,-2.47l-1.09,-1.16l1.21,-0.72l0.49,-1.23l-1.44,-1.72l0.33,-2.01l-1.6,-1.75l1.97,-4.11l0.25,-3.58l0.83,-0.24l1.89,0.96l1.25,-0.84l-0.47,-6.45l0.98,-3.76l2.88,0.14l1.9,-0.75l1.72,-3.61l3.7,1.68l4.33,-1.05l0.73,-1.04l-1.03,-3.61l0.87,-3.18l2.08,-0.98l2.64,-2.63l0.95,-2.54l3.39,1.14l1.49,-0.11l1.66,-1.31l2.1,1.65l0.48,1.14l-0.03,2.49l-1.06,2.05l1.29,4.22l1.41,0.96l1.97,-1.02l1.03,0.52l2.72,8.06l1.65,2.66l4.42,1.67l2.37,2.97l2.58,1.8l2.21,4.64l5.14,3.32l0.11,4.58l-1.26,2.29l5.32,6.28l3.7,2.15l4.32,1.14l2.58,0.15l7.89,-1.37l6.48,1.68l2.76,1.16l1.07,1.3l1.86,5.62l1.85,1.28l4.82,0.97l5.67,-0.48l3.47,2.8l7.57,1.03l1.89,3.2l1.78,1.53l7.69,0.99l-0.12,57.11l0.32,1.46l3.11,3.24l5.79,8.38l0.7,3.23l-3.31,0.78l-4.37,-0.75l-1.87,0.67l-2.05,-1.62l-1.12,-0.08l-4.19,2.61l-2.94,3.29l-2.86,1.0l-2.98,2.05l-3.04,4.44l-3.35,1.82l-2.37,2.42l-1.64,4.19l-2.89,1.8l-2.81,4.22l-3.79,1.77l-3.26,0.31l-5.68,3.03l-1.83,1.68l-3.66,5.36l-5.65,4.81l-1.89,0.76l-6.52,-0.1l-12.07,6.66l-1.2,1.66l-1.15,4.31l-0.89,7.71l-2.96,6.51l-0.77,6.23l-1.72,1.04l-2.01,0.17l-1.57,3.87l-0.81,0.45l-3.81,-0.1l-5.16,1.01l-3.01,-2.49l-1.41,-0.42l-2.01,0.68l-4.6,3.5l-1.52,0.34l-4.34,-0.64l-7.44,3.07l-1.42,1.38l-0.72,2.04l-2.74,1.16l-2.5,3.12l0.58,2.91l2.63,1.66l1.42,2.49l-0.63,1.76l-4.57,5.44l-2.95,1.55l-3.46,0.71l-2.67,-0.28l-8.78,-3.09l-13.72,-1.11Z", "name": "Neuqu\u00e9n"}, "mi": {"path": "M796.21,265.24l2.63,0.06l1.78,3.21l5.16,2.07l3.39,-3.18l4.16,-2.56l1.14,-4.34l-1.36,-3.32l1.82,-0.75l0.85,-2.45l3.35,-0.22l0.99,-4.17l1.12,-1.49l5.78,-2.06l3.34,1.01l3.27,-0.17l1.0,-1.0l-0.24,-3.53l2.74,-2.63l3.97,-0.93l1.21,-1.62l1.36,-3.92l1.41,-0.72l2.87,0.53l1.45,-1.25l0.63,-2.57l-0.37,-3.26l4.09,-4.7l1.58,-5.91l-0.05,-3.38l1.2,-1.99l-1.12,-2.41l0.94,-4.16l-0.88,-3.87l1.8,-0.48l0.66,-1.01l-0.33,-3.27l1.22,-3.51l-1.39,-2.08l-1.1,-4.83l1.55,-0.02l1.08,-0.76l-0.76,-3.06l1.46,-0.06l0.71,1.74l2.58,0.66l0.77,2.58l0.94,0.62l0.89,-0.54l0.04,-1.98l1.37,-1.07l0.32,-1.7l1.85,0.16l2.05,-1.39l1.84,2.17l1.16,-1.03l2.14,0.17l0.45,-0.61l-0.62,-1.69l1.41,0.04l1.53,-1.39l-0.48,2.77l1.38,1.61l1.2,-0.13l0.21,-1.65l0.8,0.59l1.25,-0.38l1.45,0.97l0.99,3.28l2.97,-0.81l0.85,2.46l-0.26,1.99l1.93,2.66l0.34,8.26l3.12,3.26l1.41,4.66l2.97,4.39l0.2,1.7l-2.81,5.5l0.5,5.86l-1.11,1.44l0.42,1.51l-0.64,2.11l0.13,3.57l-1.58,1.97l1.21,1.57l-0.18,1.58l0.9,0.42l0.86,5.52l-2.45,5.58l-1.51,0.82l-0.2,2.68l-1.08,1.05l0.11,1.71l-1.9,-1.91l-0.94,0.64l-0.54,1.66l-1.52,-0.94l-1.0,0.36l-0.22,1.86l-1.76,-0.12l-3.8,4.57l-2.05,-0.12l-0.12,-1.05l-1.73,-0.77l-2.69,5.5l0.04,1.22l-1.22,0.37l-0.99,1.77l-2.65,-1.64l-0.55,2.58l-0.89,-1.71l-2.92,-0.15l-0.99,0.3l-0.37,0.87l0.73,1.49l-3.56,1.11l-1.02,-1.42l-1.43,-0.21l-2.11,3.41l-0.69,-1.0l-1.22,0.53l-0.53,1.84l-3.51,0.53l-0.47,-1.77l-1.31,0.09l-1.24,1.16l-0.74,3.06l-2.46,0.76l-0.53,5.25l-3.1,2.27l-3.29,-0.72l-1.3,0.64l0.47,1.47l1.73,1.73l-1.01,-0.51l-1.73,0.25l-1.1,1.66l-2.35,-1.2l-3.87,3.23l-2.46,-0.18l-0.94,0.89l-0.32,1.5l-1.95,0.87l-0.16,1.83l-2.42,2.88l-2.89,0.01l-2.3,3.23l-0.41,-1.15l-1.3,-0.32l-1.2,0.95l-4.42,-3.25l-1.96,-4.48l-2.47,-3.01l-0.57,-5.83l-1.02,-3.48l-6.49,-12.8l0.72,-3.95l1.28,-1.07Z", "name": "Misiones"}, "lp": {"path": "M460.29,645.96l-0.2,222.92l-4.84,-0.9l-8.75,-5.56l-3.24,-3.79l-5.66,-1.9l-4.71,-4.91l-2.21,-0.37l-4.0,-2.32l-14.75,-5.05l-15.88,-2.29l-5.44,0.4l-1.35,-0.76l-6.56,0.0l-11.32,1.81l-6.36,-2.81l-2.53,-0.45l-1.45,0.13l-4.11,2.07l-1.3,-0.92l-2.66,-0.18l-1.57,-1.04l-6.79,-1.83l-11.58,-1.34l-7.92,0.92l-7.36,-1.62l-1.3,-4.74l-2.64,-2.81l-18.96,-7.7l-2.88,-3.59l-2.09,-6.27l-2.4,-0.56l-3.87,0.71l-3.07,1.48l-3.43,-0.44l-4.47,0.76l-1.49,-0.67l-2.49,-2.71l-2.47,-4.76l-1.38,-1.39l-2.08,-0.84l-2.05,0.31l-1.19,-0.8l-0.71,-1.96l0.07,-3.09l0.87,-1.57l4.5,-3.24l1.82,-3.62l-0.04,-2.68l-1.79,-3.68l-2.72,-2.73l-2.19,-1.05l-17.55,-2.19l-0.33,-65.71l-1.64,-7.65l0.96,-5.72l143.0,-0.19l0.81,-0.72l0.05,-50.4l75.68,0.02Z", "name": "La Pampa"}, "me": {"path": "M143.35,702.96l2.14,-4.18l-1.46,-4.09l1.3,-2.85l-0.64,-0.81l-1.02,0.02l0.02,-1.14l2.84,-2.99l-0.22,-1.83l-2.68,-6.27l0.59,-7.88l-1.72,-2.44l-1.08,-3.64l1.91,-1.5l-0.76,-1.66l-1.77,-1.01l-3.58,-0.72l-0.6,-1.43l1.34,-2.12l7.22,-2.44l1.51,-10.93l3.5,-8.02l-1.63,-2.52l1.6,-0.73l1.08,-1.77l1.07,-5.54l2.64,-2.31l2.43,-4.63l2.17,-1.78l0.46,-6.22l2.58,-0.84l3.62,0.76l3.98,-2.48l-0.19,-2.1l-1.59,-3.38l0.77,-7.94l-0.66,-1.71l-1.73,-0.17l0.53,-3.73l-0.77,-4.84l2.42,-2.29l-0.02,-1.21l-1.54,-2.33l1.0,-3.66l-0.25,-1.45l1.61,-1.05l0.51,-3.8l2.02,-3.15l-1.26,-5.76l-1.23,-1.47l-3.33,-1.51l-1.83,0.23l-2.7,2.74l-1.74,-3.37l-2.5,-2.59l0.79,-3.8l-0.83,-2.64l0.63,-0.97l2.35,-1.03l1.99,-6.2l-4.1,-3.04l-2.95,-4.03l-1.12,-6.33l0.21,-1.17l1.4,-0.24l0.33,-0.68l-0.91,-1.41l-0.71,-3.94l-2.57,-1.68l-0.65,-1.23l-0.08,-4.02l6.51,-0.97l4.98,0.82l8.83,-2.02l5.68,-0.37l1.77,-1.6l0.12,-4.18l0.71,-1.17l4.36,-1.55l2.68,-1.72l7.15,0.01l1.92,-2.81l3.11,-2.03l1.93,0.93l3.94,4.74l2.44,0.54l2.53,-0.46l0.89,12.22l1.2,1.04l9.23,-0.1l10.38,-6.36l2.94,-2.85l6.38,-0.53l3.92,-2.35l4.84,-1.19l2.73,0.87l1.47,1.63l0.53,1.8l2.98,1.83l2.13,2.36l4.47,0.72l11.21,-1.92l3.76,2.12l1.43,6.61l1.84,1.72l0.85,2.69l1.98,8.45l1.98,2.59l0.91,2.55l-1.12,3.33l0.55,3.03l-0.94,1.5l1.31,3.59l0.34,12.15l1.84,6.86l-0.09,3.29l6.01,9.55l4.09,11.21l3.92,3.03l0.96,3.13l1.97,1.77l1.34,3.41l-0.52,5.63l-1.68,0.19l-1.16,2.24l0.87,6.91l-0.48,1.2l1.52,2.22l0.29,4.34l1.6,5.28l2.2,2.3l5.29,9.79l1.13,3.55l-0.33,3.69l2.17,6.41l-0.92,3.78l0.92,1.49l-0.61,1.8l0.61,3.99l-0.72,7.71l-1.55,3.86l-2.37,13.27l-0.78,8.25l-72.61,-0.03l-2.06,1.3l-0.67,5.91l1.65,7.73l0.33,65.48l-7.23,-0.9l-3.47,-4.63l-7.84,-1.16l-3.57,-2.83l-5.94,0.46l-4.31,-0.85l-1.37,-0.88l-0.74,-1.45l-1.1,-4.14l-1.37,-1.61l-3.12,-1.34l-6.89,-1.75l-7.99,1.38l-2.25,-0.14l-4.0,-1.04l-3.51,-2.04l-4.79,-5.47l1.19,-1.7l0.33,-2.22l-0.54,-3.39l-5.34,-3.56l-2.15,-4.58l-2.7,-1.92l-2.42,-3.02l-4.25,-1.51l-1.44,-2.34l-2.95,-8.42l-1.66,-0.92l-1.94,1.06l-0.68,-0.42l-1.1,-3.52l1.03,-1.8l0.03,-3.07l-0.71,-1.61l-2.41,-1.92Z", "name": "Mendoza"}, "sj": {"path": "M163.26,356.46l2.73,-1.94l0.52,-1.18l3.83,-1.07l1.15,-1.38l0.07,-7.82l3.18,-7.18l-0.93,-5.88l1.32,-2.85l2.05,-1.96l0.93,-7.87l4.51,1.65l3.13,-0.53l2.26,2.42l3.73,0.32l6.52,5.27l2.4,4.0l1.43,4.83l3.77,3.43l2.06,4.78l2.86,3.15l-0.36,1.18l-2.01,1.03l-1.7,2.66l-0.05,5.88l2.61,3.67l-1.14,0.78l-0.51,1.29l-0.05,4.83l-1.8,3.39l-0.0,4.82l2.48,1.46l3.74,-0.84l3.75,0.64l5.02,-1.46l4.18,2.09l4.94,-0.02l7.09,2.02l2.03,2.49l4.91,3.24l1.07,2.16l3.59,1.65l2.03,2.02l0.88,2.01l2.27,1.5l2.14,2.71l4.17,2.23l2.17,2.81l6.27,4.68l2.23,3.49l0.8,2.95l3.65,2.47l1.91,3.07l4.53,3.72l3.95,5.75l2.88,1.54l4.8,8.64l-1.62,5.56l0.26,1.78l2.33,2.06l-1.94,13.31l2.38,5.28l0.14,3.28l4.94,4.9l3.85,0.77l0.83,5.57l2.53,1.45l1.94,4.13l-10.59,0.55l-5.49,-1.82l-5.82,0.74l-4.96,-0.99l-1.35,0.66l-1.24,2.16l0.63,4.77l-0.97,3.77l0.16,8.86l-3.96,-1.93l-11.13,1.95l-3.93,-0.64l-1.8,-2.16l-2.74,-1.61l-0.43,-1.62l-1.81,-2.03l-1.77,-1.06l-1.83,-0.06l-5.17,1.26l-3.83,2.32l-6.48,0.55l-3.19,3.0l-10.07,6.19l-8.6,0.07l-1.26,-12.75l-0.81,-0.52l-4.62,0.09l-3.74,-4.59l-2.78,-1.26l-3.92,2.36l-1.57,2.59l-6.93,-0.08l-2.94,1.81l-4.49,1.62l-1.2,1.73l-0.11,4.21l-1.31,0.98l-5.18,0.23l-8.75,2.0l-4.96,-0.81l-7.28,1.14l-2.64,-1.34l-0.98,-4.91l0.43,-1.89l-2.37,-4.44l4.47,0.4l2.12,-4.54l-0.12,-1.27l-2.63,-2.94l-5.96,-1.07l-1.87,-2.19l-0.51,-4.43l-1.9,-2.44l-2.73,-5.57l0.5,-6.57l1.1,-3.44l-0.63,-2.83l0.97,-1.97l0.45,-4.42l2.42,-3.59l1.7,2.84l1.29,-0.06l1.57,-1.68l1.74,-3.78l3.47,-0.55l-0.12,-1.16l-2.61,-2.61l-0.51,-1.32l0.87,-6.63l1.94,-3.67l0.02,-2.64l1.82,-4.0l0.81,-3.72l2.86,-2.57l0.47,-1.27l-1.32,-3.43l0.59,-0.26l5.25,2.07l3.31,-1.2l2.59,-2.47l0.98,-4.99l1.83,-1.37l0.69,-2.04l-0.7,-2.18l-1.55,-1.5l-4.22,-0.88l2.31,-4.55l0.57,-8.59l-0.64,-4.46l-1.96,-2.49l0.2,-4.07l-3.35,-10.83l0.4,-3.62l2.65,-2.02l-0.52,-1.36Z", "name": "San Juan"}, "ca": {"path": "M201.92,285.51l0.45,-1.52l2.01,-1.49l-0.73,-2.72l2.86,-4.3l0.5,-4.37l3.83,-3.08l2.24,-4.98l0.53,-4.59l2.4,-3.57l3.74,-0.53l3.08,2.12l3.24,0.58l1.65,-2.92l1.55,-1.28l8.36,-1.51l0.52,-0.8l-0.03,-1.83l1.22,-3.57l-0.18,-1.71l-11.98,-16.82l-1.08,-4.27l0.85,-7.08l6.88,-5.83l0.68,-2.09l-4.07,-18.94l-2.73,-4.43l-0.32,-3.29l0.5,-1.01l-2.39,-3.76l0.1,-2.44l4.59,-12.71l30.88,5.83l56.1,-0.57l1.51,6.03l2.25,3.4l-1.13,5.92l-3.06,2.43l-7.33,0.31l-3.16,2.24l-1.02,3.01l0.69,4.49l8.3,11.47l3.95,7.93l5.75,6.08l1.55,0.29l1.37,-0.94l2.78,-6.13l1.71,-1.08l1.55,-2.34l2.52,-0.04l2.59,2.94l1.58,0.82l-1.93,2.8l-0.28,2.77l-2.23,5.73l0.19,2.34l1.68,1.74l4.65,1.52l4.47,3.82l2.18,1.07l0.52,0.98l-1.37,9.76l-6.91,7.81l-1.63,3.24l-3.35,3.25l-2.16,4.6l0.88,0.83l8.84,2.98l-0.39,1.39l2.61,10.92l2.41,2.27l1.2,3.99l1.71,1.51l2.84,-0.82l2.16,1.21l1.69,6.1l4.45,5.32l1.26,0.16l2.79,-4.55l6.49,-4.64l4.42,2.73l3.06,-0.2l3.89,16.98l0.31,7.18l-0.75,3.71l-4.04,4.86l-0.08,2.3l0.4,0.87l3.41,2.22l0.74,14.27l1.99,14.38l6.5,12.53l-2.5,0.91l-0.68,1.96l1.3,12.21l-9.03,9.6l-11.23,3.58l-7.3,-14.17l-7.24,-16.69l-1.03,-4.71l-0.12,-4.39l-1.75,-3.37l-15.02,-13.84l-10.78,-5.6l-0.62,-1.02l1.85,-2.93l-0.04,-1.73l-2.83,-1.78l-2.94,-3.38l-1.39,-6.39l-4.25,-4.89l-17.99,-6.73l-3.34,0.92l-2.45,2.74l-3.78,0.67l-23.33,-0.83l-3.05,0.74l-2.04,1.31l-0.68,-1.93l-3.12,-4.13l-1.04,-6.38l-1.82,-0.35l-5.58,1.75l-2.59,-2.34l-5.69,-0.95l-3.16,-3.22l-4.01,-0.79l0.65,-4.35l-0.84,-2.53l0.93,-4.12l-0.97,-1.64l-3.44,-0.31l-2.93,1.68l-3.69,-1.0l-8.67,2.0l-12.07,-0.93Z", "name": "Catamarca"}, "cc": {"path": "M530.99,121.33l2.23,0.21l2.82,2.17l2.65,4.58l3.61,0.08l0.95,2.06l5.0,4.57l10.55,1.96l2.62,2.71l0.29,1.73l1.89,2.79l-0.15,2.27l1.28,1.44l1.03,0.51l0.91,-0.35l10.59,8.49l7.04,4.29l4.08,1.79l2.38,0.3l3.3,5.17l2.89,2.06l0.81,1.48l-0.05,1.46l1.87,1.08l0.74,1.91l2.09,0.46l0.49,0.87l-0.52,1.32l2.87,5.97l1.04,0.43l0.84,-0.48l4.56,1.72l0.96,1.76l2.24,0.63l1.1,1.5l3.31,1.8l0.59,2.27l2.05,1.03l4.76,5.81l1.24,0.47l0.66,5.58l10.98,2.5l1.51,5.48l1.91,2.09l4.08,0.35l4.75,-2.42l2.47,2.51l5.15,1.94l5.25,5.43l3.21,1.66l2.31,2.68l2.25,0.44l1.76,2.18l3.69,2.23l1.01,2.17l3.12,2.7l0.95,1.87l1.68,0.82l1.8,-0.19l0.1,1.14l-0.73,0.9l-3.77,1.5l-0.5,1.01l0.62,1.34l-1.61,2.64l-0.88,-0.47l-1.08,0.83l-0.55,3.08l-2.16,0.4l-1.92,1.81l0.02,2.55l2.26,2.25l-0.09,2.65l-2.07,0.79l-10.66,7.46l0.06,3.85l2.31,4.59l0.79,3.37l-2.08,13.06l-127.42,0.05l-0.03,-89.06l-0.54,-19.42l-1.51,-4.21l-73.53,-0.39l47.3,-59.16l-0.11,-12.89l8.98,3.41l4.25,0.79l1.82,2.2l3.75,2.59l3.48,0.97Z", "name": "Chaco"}, "lr": {"path": "M178.8,316.25l5.86,-5.77l0.96,-3.41l3.1,0.73l4.95,-8.64l0.33,-1.71l5.12,-2.38l2.51,-8.37l12.43,0.96l8.75,-2.01l4.01,0.96l3.07,-1.75l2.55,0.67l-0.91,4.22l0.84,2.67l-0.78,3.63l0.4,1.43l1.33,0.78l3.06,0.31l3.27,3.27l5.64,0.92l2.78,2.41l6.92,-1.64l0.71,5.88l4.43,6.85l5.69,-2.06l23.39,0.82l4.14,-0.76l2.39,-2.68l2.8,-0.87l17.42,6.56l3.8,4.34l1.49,6.58l3.15,3.62l2.59,1.53l-1.98,3.81l0.91,2.0l10.94,5.75l14.78,13.59l1.56,2.94l0.1,4.3l1.1,4.98l7.27,16.77l7.42,14.4l-3.64,9.96l-1.9,3.43l-10.89,33.7l0.33,38.84l-6.01,0.66l-2.7,-1.09l-4.07,-0.37l-7.41,2.7l-6.9,0.41l-2.63,-0.94l-2.91,0.28l-1.94,-0.89l-2.43,0.62l-5.79,-1.84l-2.29,-4.91l-2.4,-1.24l-0.9,-5.71l-4.24,-1.13l-4.41,-4.26l-0.11,-3.17l-2.33,-5.1l1.97,-13.42l-2.5,-2.48l-0.12,-1.08l1.63,-5.73l-5.1,-9.32l-2.95,-1.61l-3.88,-5.68l-4.56,-3.75l-2.02,-3.18l-3.3,-2.06l-0.83,-2.92l-2.51,-3.9l-6.28,-4.68l-2.31,-2.92l-4.04,-2.13l-2.13,-2.7l-2.2,-1.43l-0.73,-1.84l-2.26,-2.26l-3.55,-1.62l-1.04,-2.13l-5.05,-3.36l-2.16,-2.58l-7.5,-2.17l-4.88,0.03l-4.39,-2.13l-5.63,1.52l-2.92,-0.68l-3.93,0.83l-1.32,-0.57l-0.07,-4.28l1.81,-3.41l0.03,-4.75l1.68,-2.33l-1.24,-2.66l-1.42,-1.4l0.07,-5.18l1.36,-2.08l2.14,-1.16l0.61,-1.59l-0.29,-1.32l-2.79,-2.86l-2.11,-4.85l-3.68,-3.35l-2.63,-7.54l-1.45,-1.55l-7.1,-5.6l-3.44,-0.17l-2.45,-2.51l-3.21,0.52l-4.05,-1.53Z", "name": "La Rioja"}, "se": {"path": "M380.4,328.49l-0.01,-1.74l1.14,-0.73l3.4,-5.24l0.33,-3.08l-0.32,-7.34l-3.98,-17.39l4.05,-0.78l2.03,-5.0l1.46,-0.62l-3.11,-8.78l0.39,-1.03l2.81,-0.75l1.33,-2.19l-1.3,-1.51l-2.7,-0.92l5.12,-5.65l2.84,-1.9l3.39,-7.56l1.33,-5.19l2.16,-2.86l2.33,-8.6l2.4,-0.75l1.71,-5.35l3.06,0.4l0.76,-0.66l-1.01,-11.39l1.75,-5.97l0.26,-6.38l2.04,-4.22l0.38,-3.36l10.23,-21.07l11.8,3.44l97.61,0.44l1.25,3.48l0.53,19.24l0.03,89.6l-16.68,103.35l-6.23,-15.33l-2.46,-1.73l-49.39,-0.26l-0.4,-1.99l-2.73,-0.72l0.17,-2.04l-0.6,-0.93l-2.9,0.13l-4.0,-1.07l-5.39,0.8l-3.4,-0.18l-1.93,-1.25l-3.46,-0.78l-0.97,-1.29l-3.36,-1.73l-0.63,-0.57l0.14,-2.31l-0.51,-0.68l-9.51,-2.47l-28.2,6.44l-6.56,-12.45l-1.96,-14.18l0.19,-4.05l-0.98,-10.46l-1.43,-1.67l-2.32,-1.15Z", "name": "Santiago del Estero"}, "sl": {"path": "M280.93,492.01l-0.24,-3.55l1.44,-1.44l4.82,0.96l6.25,-0.69l5.01,1.77l11.5,-0.59l6.1,1.9l2.54,-0.6l1.7,0.87l3.1,-0.26l2.66,0.94l7.25,-0.43l7.29,-2.68l3.62,0.34l2.95,1.12l10.57,-0.75l3.49,1.4l12.5,7.22l2.43,2.46l0.93,4.57l1.36,2.51l0.08,3.07l0.73,0.74l5.81,-0.32l6.04,-1.26l-0.08,6.16l2.15,5.87l-0.35,3.43l-1.44,4.61l-1.32,1.68l-1.3,6.7l-1.88,3.5l0.31,2.36l-1.63,3.37l0.52,2.42l-2.51,1.09l-2.0,3.84l2.02,38.23l-0.04,103.28l-68.2,-0.07l-0.18,-1.92l3.29,-19.31l1.57,-4.01l0.73,-7.79l-0.6,-3.98l0.6,-1.96l-0.86,-1.56l0.85,-3.8l-2.05,-5.83l0.21,-4.28l-1.2,-3.79l-5.44,-10.07l-2.12,-2.17l-1.48,-4.96l-0.3,-4.38l-1.41,-2.07l0.47,-1.12l-0.98,-6.52l0.72,-1.34l1.11,0.15l0.95,-1.05l0.55,-6.54l-1.48,-3.68l-1.9,-1.66l-1.09,-3.3l-3.87,-2.98l-4.01,-11.06l-5.91,-9.3l0.11,-3.14l-1.84,-6.87l-0.35,-12.19l-1.28,-3.45l0.89,-1.03l-0.5,-3.37l1.15,-3.46l-1.08,-3.07l-1.93,-2.44l-2.83,-11.18l-1.89,-1.87l-1.2,-4.35l-0.27,-11.91l0.94,-3.47l-0.33,-1.72Z", "name": "San Luis"}, "er": {"path": "M584.87,481.91l0.53,-1.96l7.05,-0.42l2.98,-1.31l2.88,-2.69l4.37,-5.72l4.12,-3.15l3.23,-4.51l1.41,-4.21l2.77,-2.75l7.23,-11.66l5.47,-7.25l2.75,-4.86l1.75,-8.07l0.34,-5.74l-1.99,-5.51l3.6,-0.2l3.09,-1.15l1.9,0.52l3.05,-0.67l6.76,1.83l10.61,-6.85l5.81,1.11l12.3,-3.72l3.48,1.54l3.11,0.07l8.56,2.25l1.56,1.36l2.27,3.91l4.69,3.96l1.3,4.81l2.3,4.14l8.03,7.21l0.48,5.46l-0.39,1.56l-3.19,0.44l-1.26,0.9l-0.37,1.27l2.19,3.29l0.31,1.98l-2.51,5.47l0.28,3.44l-2.7,3.58l-1.03,4.1l-3.19,2.18l-0.74,1.82l4.01,4.34l0.29,1.95l-3.07,9.61l-5.21,2.21l-1.79,2.74l2.03,2.95l0.54,3.39l-0.56,3.93l-1.28,2.96l4.03,6.3l-0.18,1.23l-2.8,3.83l-2.54,5.29l0.38,8.48l1.47,8.66l1.85,3.53l-0.97,3.93l0.56,3.37l-1.76,1.56l-1.36,0.28l-7.03,-0.98l-1.85,0.73l-0.76,1.06l-0.03,0.91l0.76,0.46l-0.89,5.34l0.9,3.11l-1.99,1.67l-2.19,3.75l-1.17,4.58l0.13,4.32l-0.92,5.27l0.45,3.38l3.58,5.72l0.66,6.76l-6.07,2.03l-1.9,-0.02l-6.31,-4.79l-3.13,-0.81l-8.18,-5.41l-6.08,-0.11l-1.58,-1.67l-1.36,0.18l-1.76,-3.9l-2.16,0.87l-3.51,0.0l-5.75,-4.22l-3.91,1.09l-1.48,-0.3l-5.8,-2.98l-3.97,-4.36l-4.04,-1.51l-7.57,-5.03l-5.79,-5.8l-3.58,-1.89l-3.05,-3.36l-4.6,-2.61l-2.46,-2.94l-1.54,-4.17l-1.62,-1.85l-2.36,-4.65l-1.35,-8.32l-2.83,-5.76l1.79,-5.22l-0.08,-5.03l1.33,-5.05l-0.24,-4.81l2.05,-4.4l-2.54,-5.11l-0.09,-2.13l2.05,-3.4l0.99,-4.98Z", "name": "Entre R\u00edos"}, "ba": {"path": "M507.92,939.49l-0.39,0.81l1.34,1.39l4.21,-2.12l-0.94,1.26l-0.77,3.95l-3.59,6.5l-18.35,9.08l-1.72,-0.07l-2.74,-5.4l-11.04,-9.98l-3.78,-1.41l-8.78,-1.01l-0.06,-246.87l0.68,-79.95l1.2,-1.32l73.55,-0.24l33.96,-35.54l1.69,-2.36l-0.33,-1.78l0.93,-1.51l2.73,-0.55l2.97,1.15l4.38,0.12l4.88,3.23l3.51,-0.36l1.68,-1.27l1.7,-3.33l0.91,-4.42l2.82,-2.51l0.33,-3.19l2.38,-1.29l0.66,-2.1l6.14,5.97l7.74,5.14l3.94,1.45l3.89,4.32l6.1,3.14l1.99,0.38l3.55,-1.07l3.29,2.95l2.48,1.22l4.07,0.01l1.5,-0.83l0.49,2.9l1.0,0.8l1.52,-0.06l1.8,1.7l5.84,0.03l8.12,5.38l3.03,0.76l4.57,3.95l2.02,0.96l2.46,0.05l6.06,-2.03l2.17,0.91l0.03,5.86l0.57,1.51l-3.29,3.93l-3.64,-0.29l-1.69,1.55l3.9,2.97l-0.47,2.3l-1.24,1.65l0.34,1.93l1.78,1.51l0.07,1.76l1.1,1.81l1.72,1.32l2.23,0.37l0.96,2.67l4.75,3.87l19.89,8.24l6.79,4.28l1.18,1.44l5.64,2.92l8.27,6.54l6.94,9.54l1.25,3.27l-0.27,1.55l-8.43,11.57l-2.5,4.51l-0.75,4.4l0.4,4.41l3.47,8.01l1.82,1.44l1.02,2.33l6.4,5.84l4.76,2.72l2.88,0.79l-0.56,0.96l0.6,0.84l4.21,-2.04l4.1,-0.04l-0.08,-1.96l0.57,0.39l1.82,3.94l-0.08,6.27l1.23,4.08l0.16,14.97l-9.85,13.71l-7.56,13.0l-4.9,6.31l-6.45,5.69l-8.12,9.81l-1.97,4.47l-0.6,4.52l0.58,1.4l-0.18,2.45l-1.04,2.2l-1.48,1.55l-12.05,7.35l-6.97,3.8l-2.26,0.6l-3.97,2.68l-7.83,3.24l-4.02,0.61l-6.69,2.88l-7.3,1.54l-9.53,3.02l-5.54,2.5l-25.65,4.72l-7.47,2.87l-4.13,-0.0l-44.04,7.2l-6.82,-0.39l-5.7,1.72l-12.83,-0.97l-4.15,1.52l-6.76,-0.89l-2.36,-1.38l-5.2,0.68l-9.93,-2.97l-4.32,-5.96l-7.34,-0.55l-1.95,-0.72l-1.35,0.71l-0.71,1.33l0.78,4.72l1.74,-0.03l0.22,3.02l2.2,0.46l-0.21,1.36l-1.42,1.08l-1.85,4.45l0.83,1.48l0.04,3.65l1.79,1.7l-1.15,1.54l1.79,1.28l5.69,0.56l5.24,2.78l0.87,1.51l-0.97,1.24l-3.98,-2.92l-2.1,-2.52l-4.7,0.58l0.63,2.04l2.06,0.58l1.41,2.49l1.94,1.69l4.31,1.18l0.15,0.78l-0.96,1.5l-2.0,17.22l-1.82,1.03l-2.93,-0.46l-2.89,-1.96l-0.77,0.22l-0.25,1.04l0.71,1.26l-0.96,0.94l-0.05,2.95l-2.32,6.99l1.22,3.27l-0.9,3.93l-0.31,0.79l-3.72,2.06l-1.86,3.36l3.5,8.73l3.93,1.96l0.3,1.73l1.85,1.9l0.86,-0.14l0.06,2.68l-1.72,-0.29l-1.47,-1.46l-0.69,0.2l0.62,2.71ZM526.47,860.53l0.79,0.52l0.69,-0.49l1.04,3.85l-6.42,-2.9l-2.93,-3.99l6.05,1.6l0.79,1.41ZM519.12,853.16l-0.45,0.42l-0.44,-0.18l0.15,-0.28l0.74,0.04ZM520.02,853.2l3.01,0.5l1.2,1.06l-1.16,0.39l-3.05,-1.95Z", "name": "Buenos Aires"}, "sa": {"path": "M231.8,149.19l-0.64,-2.0l-3.17,-1.41l-1.12,-3.23l3.33,-8.36l1.55,1.09l0.7,-0.15l2.44,-6.11l3.1,-0.06l3.64,-5.33l39.89,-16.94l1.27,-1.75l3.69,-11.75l4.27,3.32l2.85,0.79l3.5,3.64l0.6,1.47l1.85,0.6l3.33,4.56l4.77,2.33l4.31,4.86l5.08,2.01l3.1,-0.14l1.73,-0.88l2.42,-3.16l1.47,-0.79l1.72,-5.01l0.64,-15.2l-3.1,-9.67l1.28,-5.89l0.63,-0.67l4.02,1.11l2.11,1.31l1.75,0.03l7.8,5.16l0.06,5.7l-0.49,1.17l0.56,1.48l-1.51,2.33l-0.25,3.86l1.47,2.69l-0.25,2.05l2.1,2.74l1.16,0.2l1.55,-0.75l2.91,2.61l3.13,1.71l0.4,4.67l7.47,10.91l2.4,1.5l2.8,-0.42l2.23,1.86l7.02,2.01l4.81,-2.23l0.56,1.15l3.96,3.13l6.7,2.62l1.46,-0.6l3.03,-6.17l9.28,7.46l1.13,-0.67l1.44,-3.01l2.92,-2.72l2.56,-0.74l1.34,-1.73l3.99,-0.48l1.46,-0.9l4.03,-5.07l2.48,-5.74l-1.16,-31.55l-0.52,-0.91l-1.68,-0.39l-6.85,0.16l-1.57,1.76l-1.47,3.29l-4.91,-5.14l-3.59,-1.35l-1.34,-1.18l-4.33,0.6l-2.1,1.66l-3.06,-0.32l-0.46,-2.75l-2.92,-5.89l-3.96,-2.4l1.6,-8.23l-0.31,-2.26l-2.29,-2.3l-5.71,-0.36l-1.75,-1.42l-1.75,-4.83l-0.77,-5.24l-0.01,-2.11l0.92,-2.38l-1.99,-2.18l-1.58,-0.15l0.42,-3.66l4.3,-8.68l0.21,-4.65l1.99,-5.39l7.02,-0.08l8.33,1.9l3.25,1.76l4.62,0.18l3.03,1.49l1.8,2.64l-1.27,3.31l2.12,2.05l-0.32,1.76l1.6,2.43l3.01,3.16l-0.91,1.75l-0.17,2.98l4.41,5.14l-0.21,2.28l0.74,2.97l1.34,0.83l0.66,-0.39l1.41,-5.25l0.04,-3.45l1.91,-6.94l4.05,-4.78l3.34,-8.47l1.61,-1.41l2.14,-6.19l1.57,-1.42l1.25,-2.8l5.1,0.07l3.4,2.25l3.05,-2.24l1.58,-0.27l37.19,0.22l0.88,5.74l4.85,3.2l0.87,1.69l1.32,0.53l-0.3,2.14l0.5,0.8l2.9,0.94l1.8,1.96l2.44,0.85l1.38,1.71l4.17,2.53l0.31,90.89l-47.74,59.69l-23.37,-0.33l-10.3,-3.23l-2.27,-0.1l-10.69,21.7l-0.43,3.49l-2.29,5.44l-8.99,0.21l-3.3,-0.64l-7.86,3.01l-3.12,-1.56l-2.16,-0.0l-8.4,-3.27l-2.89,-4.67l-5.88,2.09l-10.22,-2.17l-1.18,1.06l-0.78,8.66l-0.65,1.12l-14.67,-2.22l-1.74,-0.88l-2.83,-3.09l-2.7,-0.26l-1.52,0.74l-1.28,2.12l-1.8,1.23l-2.62,5.89l-1.13,0.71l-5.69,-5.86l-3.88,-7.83l-7.35,-9.74l-1.45,-3.72l0.21,-3.6l2.64,-2.26l7.78,-0.46l3.8,-3.13l1.21,-6.56l-2.32,-3.65l-0.64,-4.27l-1.15,-2.23l-2.45,-0.43l-54.4,0.67l-27.73,-5.23l2.22,-0.73l0.72,-2.13l-3.42,-4.03l0.25,-2.22l-1.43,-1.87Z", "name": "Salta"}}});
Index: public/vendors/vmap/maps/jquery.vmap.brazil.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.brazil.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.brazil.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add Brazil Map Data Points */
+jQuery.fn.vectorMap('addMap', 'brazil_br', {"width":600,"height":550,"paths":{"ro": {"name": "Rondônia","path": "M 179,197 L 182,197 L 186,197 L 186,198 L 187,198 L 188,198 L 188,199 L 188,200 L 189,200 L 189,201 L 189,202 L 190,201 L 190,202 L 190,203 L 191,203 L 191,202 L 191,203 L 192,203 L 193,203 L 193,204 L 193,205 L 193,206 L 194,207 L 194,206 L 195,206 L 195,207 L 195,208 L 196,208 L 196,209 L 197,209 L 198,209 L 198,210 L 199,210 L 200,210 L 200,209 L 200,208 L 201,208 L 201,207 L 202,207 L 202,208 L 203,208 L 203,209 L 204,209 L 204,210 L 205,210 L 205,211 L 204,211 L 204,212 L 204,213 L 204,214 L 204,215 L 203,215 L 203,216 L 203,215 L 203,216 L 203,217 L 204,217 L 204,218 L 204,219 L 205,219 L 205,220 L 205,221 L 204,221 L 204,222 L 204,221 L 204,222 L 204,223 L 205,223 L 205,224 L 204,224 L 204,225 L 204,226 L 204,227 L 203,227 L 203,228 L 204,228 L 204,229 L 204,230 L 205,230 L 205,231 L 205,232 L 205,233 L 205,234 L 205,235 L 205,236 L 205,237 L 205,236 L 205,237 L 204,237 L 204,238 L 204,239 L 205,239 L 206,239 L 212,239 L 213,239 L 214,239 L 219,239 L 219,240 L 220,240 L 220,241 L 221,241 L 221,240 L 221,241 L 221,240 L 222,240 L 222,241 L 223,241 L 224,241 L 225,241 L 226,241 L 226,242 L 226,243 L 226,244 L 227,244 L 227,245 L 226,245 L 226,246 L 225,246 L 225,247 L 224,247 L 224,248 L 224,249 L 224,250 L 224,251 L 224,252 L 225,252 L 224,252 L 225,252 L 226,252 L 226,253 L 226,254 L 227,254 L 227,255 L 227,256 L 227,257 L 229,258 L 228,258 L 228,259 L 228,260 L 227,260 L 226,260 L 226,261 L 225,261 L 225,262 L 224,262 L 224,263 L 224,264 L 225,264 L 224,264 L 224,265 L 224,266 L 224,267 L 223,267 L 223,268 L 222,268 L 222,269 L 222,270 L 221,270 L 221,271 L 220,271 L 221,271 L 220,271 L 221,272 L 220,272 L 220,273 L 220,274 L 219,274 L 218,274 L 218,275 L 217,275 L 217,276 L 217,275 L 216,276 L 216,277 L 215,277 L 215,276 L 214,276 L 213,276 L 213,275 L 212,275 L 211,275 L 212,275 L 212,274 L 211,274 L 210,274 L 210,275 L 210,274 L 210,275 L 210,274 L 210,275 L 209,274 L 209,275 L 208,275 L 208,274 L 207,274 L 207,275 L 207,274 L 206,274 L 206,275 L 205,275 L 204,275 L 204,274 L 204,275 L 204,274 L 203,274 L 204,274 L 203,274 L 202,274 L 202,275 L 201,274 L 201,275 L 201,274 L 201,275 L 201,274 L 201,275 L 200,275 L 200,274 L 199,274 L 199,273 L 198,273 L 198,272 L 197,272 L 197,271 L 196,271 L 196,270 L 196,269 L 196,270 L 196,269 L 195,269 L 194,269 L 193,269 L 192,269 L 192,268 L 191,268 L 190,268 L 189,268 L 189,267 L 188,267 L 188,268 L 187,268 L 187,267 L 187,268 L 187,267 L 186,267 L 187,267 L 187,266 L 186,266 L 186,267 L 186,266 L 185,266 L 185,265 L 184,265 L 184,264 L 183,264 L 183,263 L 183,264 L 183,263 L 182,263 L 183,263 L 183,262 L 182,262 L 182,263 L 182,262 L 181,262 L 182,262 L 181,262 L 181,263 L 180,263 L 181,263 L 180,263 L 179,263 L 179,262 L 179,263 L 179,262 L 178,262 L 178,261 L 177,261 L 176,261 L 176,260 L 175,260 L 174,260 L 174,259 L 173,259 L 173,260 L 172,260 L 171,260 L 171,261 L 170,261 L 170,260 L 170,261 L 170,260 L 169,260 L 169,261 L 169,260 L 168,260 L 167,260 L 168,260 L 167,260 L 166,260 L 165,260 L 164,260 L 164,259 L 163,259 L 163,258 L 163,257 L 163,256 L 163,257 L 162,257 L 162,256 L 161,256 L 160,256 L 160,255 L 160,256 L 159,256 L 159,255 L 158,255 L 158,254 L 159,254 L 158,254 L 158,253 L 158,254 L 157,254 L 157,253 L 156,253 L 156,254 L 156,253 L 155,253 L 156,253 L 156,252 L 155,252 L 155,251 L 155,250 L 155,249 L 154,249 L 153,249 L 153,250 L 154,250 L 153,250 L 153,249 L 152,249 L 153,249 L 153,248 L 153,247 L 152,247 L 152,246 L 152,245 L 151,245 L 151,244 L 152,244 L 151,244 L 151,243 L 151,242 L 152,242 L 151,242 L 151,241 L 152,241 L 152,240 L 152,239 L 153,239 L 152,239 L 152,238 L 152,237 L 151,237 L 151,236 L 151,235 L 151,234 L 150,234 L 150,233 L 150,232 L 151,232 L 151,231 L 151,230 L 152,230 L 152,229 L 152,228 L 152,227 L 151,227 L 151,226 L 152,226 L 152,225 L 151,225 L 151,224 L 152,224 L 152,223 L 151,223 L 151,222 L 151,221 L 150,221 L 149,222 L 149,221 L 149,222 L 149,223 L 149,222 L 149,223 L 148,223 L 147,223 L 147,222 L 147,223 L 146,223 L 146,222 L 147,222 L 146,222 L 145,222 L 145,223 L 145,222 L 144,222 L 144,223 L 144,222 L 143,222 L 142,222 L 142,223 L 143,223 L 142,223 L 141,223 L 141,222 L 141,223 L 140,223 L 139,223 L 140,223 L 139,223 L 138,223 L 137,223 L 137,224 L 136,224 L 135,224 L 134,224 L 133,224 L 131,223 L 131,222 L 132,222 L 133,222 L 133,221 L 134,221 L 135,221 L 135,220 L 136,220 L 136,219 L 137,219 L 137,218 L 136,218 L 136,217 L 137,217 L 137,218 L 137,217 L 137,218 L 138,217 L 138,218 L 138,217 L 139,218 L 140,218 L 140,217 L 141,217 L 142,217 L 143,217 L 143,218 L 144,218 L 144,219 L 145,219 L 145,220 L 145,219 L 145,220 L 145,219 L 146,219 L 147,219 L 147,218 L 147,217 L 148,217 L 148,218 L 149,218 L 150,218 L 150,217 L 150,216 L 151,216 L 152,216 L 152,215 L 153,215 L 153,216 L 153,217 L 154,217 L 153,217 L 153,218 L 154,218 L 155,218 L 155,217 L 156,217 L 156,216 L 157,216 L 157,215 L 157,214 L 157,213 L 157,212 L 158,212 L 158,211 L 159,211 L 159,212 L 160,212 L 160,211 L 160,212 L 161,212 L 162,212 L 162,211 L 163,211 L 164,211 L 165,211 L 166,211 L 165,211 L 165,212 L 166,212 L 166,211 L 167,211 L 168,211 L 168,210 L 168,209 L 168,208 L 169,208 L 170,208 L 169,207 L 170,207 L 170,206 L 171,206 L 171,205 L 170,205 L 170,204 L 171,204 L 170,204 L 170,203 L 171,203 L 171,202 L 172,202 L 173,202 L 173,201 L 174,201 L 173,201 L 173,200 L 174,200 L 174,199 L 175,199 L 175,198 L 175,197 L 176,197 L 177,197 L 178,197 L 179,197 "},"ac": {"name": "Acre","path": "M 42,188 L 43,189 L 44,189 L 46,190 L 49,191 L 50,191 L 51,191 L 52,192 L 53,192 L 54,192 L 55,192 L 56,192 L 58,192 L 59,192 L 59,193 L 60,193 L 62,193 L 64,193 L 67,193 L 71,194 L 74,194 L 75,194 L 76,194 L 77,194 L 77,195 L 79,195 L 82,195 L 83,195 L 84,195 L 86,196 L 87,196 L 87,197 L 92,201 L 93,202 L 94,202 L 94,203 L 95,203 L 95,204 L 96,204 L 96,205 L 97,205 L 97,206 L 98,206 L 99,207 L 100,208 L 101,208 L 101,209 L 105,212 L 109,214 L 111,215 L 114,216 L 115,217 L 116,217 L 117,217 L 119,219 L 121,219 L 124,220 L 125,220 L 126,221 L 127,221 L 130,223 L 131,223 L 133,224 L 133,225 L 133,224 L 133,225 L 132,225 L 132,226 L 132,225 L 131,225 L 131,226 L 130,226 L 130,227 L 129,227 L 129,228 L 129,227 L 129,228 L 128,228 L 129,228 L 128,228 L 128,229 L 127,229 L 128,229 L 127,229 L 127,230 L 127,229 L 127,230 L 127,229 L 127,230 L 126,230 L 125,230 L 124,230 L 124,231 L 123,231 L 122,231 L 122,232 L 121,232 L 120,232 L 120,233 L 120,232 L 120,233 L 119,233 L 119,234 L 118,235 L 117,235 L 116,235 L 116,234 L 116,235 L 116,234 L 116,235 L 116,234 L 115,234 L 115,235 L 114,235 L 113,235 L 113,236 L 113,237 L 112,237 L 112,238 L 111,238 L 111,239 L 110,239 L 110,240 L 110,239 L 110,240 L 109,240 L 109,239 L 109,240 L 108,240 L 107,240 L 107,241 L 106,241 L 104,241 L 104,240 L 104,239 L 104,240 L 104,239 L 103,239 L 103,240 L 103,239 L 103,240 L 103,239 L 102,239 L 102,240 L 102,239 L 102,240 L 101,240 L 101,239 L 101,240 L 101,239 L 101,240 L 100,240 L 100,239 L 100,240 L 100,239 L 99,239 L 98,239 L 97,239 L 96,239 L 95,239 L 95,238 L 95,239 L 95,238 L 95,239 L 95,238 L 94,238 L 94,239 L 94,238 L 94,239 L 93,239 L 92,239 L 91,239 L 90,239 L 90,238 L 90,239 L 89,239 L 89,238 L 88,238 L 87,238 L 87,239 L 87,238 L 87,239 L 86,239 L 85,239 L 85,240 L 85,239 L 85,240 L 84,240 L 83,240 L 82,240 L 81,240 L 80,240 L 80,239 L 79,239 L 79,238 L 79,239 L 78,239 L 78,238 L 78,237 L 78,235 L 78,233 L 78,232 L 78,231 L 78,229 L 78,227 L 78,223 L 78,222 L 79,222 L 79,223 L 79,222 L 79,221 L 78,221 L 78,220 L 78,219 L 79,220 L 79,219 L 79,218 L 79,219 L 79,218 L 80,218 L 80,217 L 80,218 L 79,218 L 79,217 L 79,218 L 78,218 L 78,219 L 78,218 L 77,218 L 77,219 L 78,219 L 77,219 L 76,219 L 76,220 L 76,219 L 76,220 L 76,219 L 76,220 L 75,220 L 76,220 L 75,220 L 76,220 L 75,220 L 75,221 L 75,220 L 75,221 L 74,221 L 74,222 L 73,222 L 73,223 L 72,223 L 71,223 L 70,224 L 70,225 L 69,225 L 68,225 L 67,225 L 67,226 L 64,226 L 63,226 L 62,226 L 61,226 L 59,226 L 58,226 L 56,226 L 56,225 L 56,224 L 57,224 L 56,224 L 56,223 L 57,223 L 56,223 L 56,222 L 55,222 L 55,221 L 55,220 L 55,219 L 54,219 L 54,218 L 54,219 L 54,218 L 53,218 L 52,218 L 53,218 L 52,218 L 51,218 L 50,218 L 49,218 L 49,217 L 48,217 L 47,217 L 45,217 L 42,217 L 43,216 L 43,215 L 44,215 L 45,214 L 44,214 L 45,214 L 45,213 L 46,213 L 46,212 L 45,212 L 46,212 L 46,211 L 45,211 L 45,210 L 44,210 L 44,209 L 43,209 L 43,208 L 42,207 L 41,207 L 41,206 L 40,207 L 40,206 L 40,205 L 40,204 L 39,204 L 39,203 L 38,203 L 37,203 L 37,202 L 37,201 L 36,201 L 36,200 L 37,200 L 36,200 L 37,200 L 37,199 L 36,199 L 36,198 L 35,198 L 35,197 L 34,197 L 34,196 L 35,196 L 35,195 L 35,194 L 34,194 L 33,194 L 33,193 L 32,193 L 32,192 L 31,192 L 31,191 L 32,191 L 32,190 L 32,189 L 31,189 L 32,189 L 33,189 L 33,188 L 34,189 L 34,188 L 34,189 L 35,188 L 35,187 L 34,187 L 34,186 L 34,185 L 34,186 L 35,186 L 38,187 L 39,187 L 42,188 "},"am": {"name": "Amazonas","path": "M 124,58 L 124,59 L 124,60 L 125,60 L 125,61 L 126,61 L 127,62 L 127,63 L 127,64 L 127,65 L 127,66 L 127,67 L 127,68 L 127,69 L 127,70 L 128,70 L 130,69 L 134,73 L 138,76 L 139,76 L 140,76 L 141,76 L 141,75 L 142,75 L 143,75 L 143,74 L 144,74 L 144,73 L 145,73 L 146,73 L 146,72 L 146,73 L 146,72 L 146,73 L 147,73 L 147,72 L 147,73 L 147,72 L 148,72 L 148,73 L 149,73 L 149,74 L 149,75 L 148,75 L 148,76 L 148,77 L 149,77 L 150,77 L 150,76 L 151,76 L 150,76 L 150,75 L 151,75 L 151,74 L 151,73 L 152,73 L 152,74 L 153,74 L 153,73 L 153,74 L 154,73 L 154,72 L 154,71 L 154,70 L 155,70 L 155,71 L 156,71 L 156,70 L 157,70 L 156,70 L 156,69 L 157,69 L 157,70 L 157,69 L 158,69 L 158,68 L 159,68 L 159,69 L 160,69 L 160,68 L 160,69 L 161,68 L 162,68 L 162,67 L 163,67 L 163,66 L 164,66 L 164,65 L 165,65 L 165,66 L 164,67 L 165,67 L 165,66 L 166,66 L 166,65 L 167,65 L 168,64 L 168,65 L 168,64 L 169,64 L 169,63 L 169,62 L 169,61 L 169,60 L 169,59 L 170,59 L 171,59 L 172,59 L 173,59 L 174,59 L 173,58 L 174,58 L 175,58 L 175,57 L 176,57 L 177,57 L 178,57 L 178,56 L 179,56 L 180,56 L 181,56 L 182,56 L 182,57 L 183,58 L 184,58 L 185,58 L 186,58 L 186,59 L 187,59 L 188,59 L 188,60 L 188,61 L 188,62 L 188,63 L 187,63 L 187,64 L 187,65 L 188,65 L 188,66 L 189,66 L 189,67 L 189,68 L 190,69 L 190,70 L 190,71 L 191,71 L 191,72 L 191,73 L 192,73 L 191,73 L 191,74 L 191,75 L 191,76 L 190,76 L 190,77 L 190,78 L 191,78 L 190,78 L 190,79 L 190,80 L 191,80 L 191,81 L 192,81 L 191,81 L 191,82 L 191,83 L 191,84 L 192,84 L 192,85 L 192,86 L 193,86 L 193,87 L 193,88 L 194,88 L 194,89 L 194,90 L 194,91 L 195,91 L 195,92 L 194,92 L 194,93 L 193,94 L 194,94 L 193,94 L 193,95 L 194,95 L 193,96 L 192,96 L 192,97 L 192,96 L 191,96 L 191,97 L 191,98 L 192,98 L 193,98 L 192,98 L 193,98 L 193,99 L 194,99 L 194,100 L 195,100 L 195,101 L 196,101 L 196,102 L 197,102 L 198,102 L 198,103 L 198,104 L 198,105 L 199,105 L 199,106 L 200,106 L 201,106 L 202,106 L 203,106 L 203,107 L 204,107 L 204,108 L 205,108 L 205,107 L 204,107 L 204,106 L 203,106 L 203,105 L 204,105 L 203,105 L 203,104 L 203,103 L 204,103 L 204,102 L 204,101 L 204,100 L 203,99 L 204,99 L 204,98 L 204,97 L 205,97 L 205,96 L 206,96 L 206,95 L 207,95 L 207,94 L 208,94 L 209,94 L 209,93 L 209,94 L 209,93 L 210,93 L 211,93 L 211,94 L 212,94 L 213,94 L 213,95 L 214,95 L 214,96 L 215,96 L 215,97 L 214,97 L 215,97 L 215,98 L 216,99 L 216,98 L 216,99 L 217,99 L 217,98 L 217,99 L 217,98 L 217,99 L 217,98 L 218,98 L 218,99 L 218,98 L 218,99 L 218,98 L 219,98 L 218,98 L 219,98 L 219,97 L 220,97 L 221,97 L 221,96 L 221,95 L 220,95 L 220,94 L 220,93 L 221,93 L 221,92 L 221,91 L 222,90 L 221,90 L 221,89 L 222,89 L 222,88 L 223,87 L 223,86 L 224,86 L 224,85 L 224,84 L 225,84 L 225,83 L 226,83 L 228,83 L 236,83 L 237,83 L 241,83 L 241,86 L 241,87 L 241,88 L 241,89 L 241,90 L 241,91 L 242,91 L 242,92 L 243,92 L 243,93 L 243,94 L 243,95 L 244,95 L 243,96 L 244,96 L 245,96 L 245,97 L 246,97 L 246,98 L 247,98 L 247,99 L 247,98 L 247,99 L 247,100 L 248,100 L 247,100 L 248,100 L 247,101 L 248,101 L 248,102 L 249,102 L 250,102 L 250,103 L 251,103 L 251,104 L 251,103 L 252,103 L 252,102 L 253,102 L 254,102 L 254,103 L 254,104 L 254,105 L 253,105 L 254,105 L 254,106 L 255,106 L 256,106 L 256,107 L 257,107 L 257,108 L 258,108 L 257,108 L 258,108 L 258,109 L 258,108 L 258,109 L 258,108 L 259,108 L 259,109 L 260,109 L 261,109 L 261,110 L 262,110 L 262,111 L 262,110 L 263,110 L 264,110 L 265,110 L 265,111 L 266,111 L 266,112 L 267,112 L 267,113 L 268,113 L 268,114 L 269,114 L 269,115 L 270,115 L 270,114 L 271,114 L 271,115 L 271,116 L 270,116 L 271,117 L 272,117 L 273,117 L 273,116 L 274,116 L 274,117 L 275,117 L 275,116 L 275,117 L 276,117 L 276,116 L 277,116 L 278,115 L 279,115 L 280,115 L 279,115 L 279,116 L 279,117 L 278,117 L 277,118 L 276,118 L 275,119 L 275,120 L 276,120 L 276,121 L 275,121 L 275,122 L 275,123 L 274,123 L 274,125 L 273,125 L 273,126 L 273,127 L 272,128 L 271,130 L 271,131 L 270,132 L 270,133 L 269,135 L 268,136 L 268,137 L 267,139 L 266,141 L 266,142 L 265,143 L 264,145 L 264,146 L 262,149 L 261,153 L 260,154 L 259,156 L 258,158 L 258,159 L 255,164 L 255,165 L 253,170 L 250,176 L 250,177 L 249,177 L 249,178 L 248,178 L 247,178 L 247,179 L 247,180 L 247,181 L 247,182 L 247,183 L 248,183 L 249,183 L 249,184 L 249,185 L 250,185 L 250,186 L 251,186 L 251,187 L 251,188 L 251,189 L 251,190 L 250,190 L 250,191 L 250,192 L 251,192 L 250,193 L 250,194 L 249,194 L 249,195 L 248,195 L 248,196 L 248,197 L 249,197 L 249,198 L 249,199 L 249,200 L 249,201 L 249,202 L 249,203 L 248,203 L 249,203 L 248,203 L 248,204 L 248,205 L 248,206 L 248,207 L 247,207 L 247,208 L 248,208 L 248,207 L 249,208 L 248,208 L 248,209 L 247,209 L 246,209 L 239,209 L 238,209 L 233,209 L 226,209 L 225,209 L 220,209 L 218,209 L 214,209 L 206,209 L 204,209 L 203,209 L 203,208 L 202,208 L 202,207 L 201,207 L 201,208 L 200,208 L 200,209 L 200,210 L 199,210 L 198,210 L 198,209 L 197,209 L 196,209 L 196,208 L 195,208 L 195,207 L 195,206 L 194,206 L 194,207 L 193,206 L 193,205 L 193,204 L 193,203 L 192,203 L 191,203 L 191,202 L 191,203 L 190,203 L 190,202 L 190,201 L 189,202 L 189,201 L 189,200 L 188,200 L 188,199 L 188,198 L 187,198 L 186,198 L 186,197 L 182,197 L 178,197 L 177,197 L 175,197 L 175,198 L 175,199 L 174,199 L 174,200 L 173,200 L 173,201 L 174,201 L 173,201 L 173,202 L 172,202 L 171,202 L 171,203 L 170,203 L 170,204 L 171,204 L 170,204 L 170,205 L 171,205 L 171,206 L 170,206 L 170,207 L 169,207 L 170,208 L 169,208 L 168,208 L 168,209 L 168,210 L 168,211 L 167,211 L 166,211 L 166,212 L 165,212 L 165,211 L 166,211 L 165,211 L 164,211 L 163,211 L 162,211 L 162,212 L 161,212 L 160,212 L 160,211 L 160,212 L 159,212 L 159,211 L 158,211 L 158,212 L 157,212 L 157,213 L 157,214 L 157,215 L 157,216 L 156,216 L 156,217 L 155,217 L 155,218 L 154,218 L 153,218 L 153,217 L 154,217 L 153,217 L 153,216 L 153,215 L 152,215 L 152,216 L 151,216 L 150,216 L 150,217 L 150,218 L 149,218 L 148,218 L 148,217 L 147,217 L 147,218 L 147,219 L 146,219 L 145,219 L 145,220 L 145,219 L 145,220 L 145,219 L 144,219 L 144,218 L 143,218 L 143,217 L 142,217 L 141,217 L 140,217 L 140,218 L 139,218 L 138,217 L 138,218 L 138,217 L 137,218 L 137,217 L 137,218 L 137,217 L 136,217 L 136,218 L 137,218 L 137,219 L 136,219 L 136,220 L 135,220 L 135,221 L 134,221 L 133,221 L 133,222 L 132,222 L 131,222 L 131,223 L 130,223 L 127,221 L 126,221 L 125,220 L 124,220 L 121,219 L 119,219 L 117,217 L 116,217 L 115,217 L 114,216 L 111,215 L 105,212 L 104,212 L 101,209 L 101,208 L 100,208 L 99,207 L 98,206 L 97,206 L 97,205 L 96,205 L 96,204 L 95,204 L 95,203 L 94,203 L 94,202 L 93,202 L 92,201 L 89,199 L 86,196 L 84,195 L 83,195 L 82,195 L 79,195 L 77,195 L 77,194 L 76,194 L 75,194 L 74,194 L 71,194 L 67,193 L 64,193 L 62,193 L 60,193 L 59,193 L 59,192 L 58,192 L 56,192 L 55,192 L 54,192 L 53,192 L 52,192 L 51,191 L 50,191 L 49,191 L 46,190 L 44,189 L 43,189 L 42,188 L 35,186 L 34,186 L 34,185 L 34,184 L 35,184 L 34,184 L 34,183 L 34,182 L 35,182 L 35,181 L 36,181 L 36,180 L 37,180 L 37,179 L 38,179 L 39,179 L 39,178 L 40,178 L 41,178 L 42,178 L 42,177 L 43,177 L 43,176 L 43,175 L 43,174 L 42,174 L 42,173 L 42,172 L 41,172 L 41,171 L 41,170 L 42,170 L 42,169 L 42,168 L 43,168 L 42,168 L 43,168 L 43,167 L 44,167 L 44,166 L 45,166 L 45,165 L 45,164 L 45,163 L 45,162 L 46,162 L 46,161 L 46,160 L 47,160 L 46,160 L 47,160 L 46,159 L 47,159 L 46,159 L 47,159 L 46,159 L 46,158 L 47,158 L 47,157 L 48,158 L 48,157 L 49,157 L 50,157 L 50,156 L 51,156 L 51,155 L 52,155 L 53,155 L 53,154 L 53,153 L 54,153 L 55,153 L 56,153 L 56,152 L 57,152 L 58,152 L 57,151 L 58,151 L 59,151 L 59,150 L 59,151 L 59,150 L 60,150 L 60,149 L 60,150 L 60,149 L 61,149 L 62,149 L 63,149 L 64,149 L 65,149 L 66,149 L 65,149 L 65,148 L 66,148 L 67,149 L 67,148 L 68,148 L 69,148 L 69,147 L 69,148 L 69,147 L 70,147 L 70,148 L 70,147 L 70,148 L 70,147 L 71,147 L 71,148 L 71,147 L 71,148 L 72,147 L 72,148 L 72,147 L 73,147 L 74,147 L 74,146 L 75,146 L 74,146 L 75,145 L 75,146 L 75,145 L 76,144 L 76,145 L 77,145 L 77,144 L 78,144 L 78,145 L 78,144 L 79,144 L 79,145 L 80,144 L 80,145 L 80,144 L 81,144 L 82,145 L 82,144 L 82,145 L 82,146 L 83,146 L 83,147 L 83,146 L 83,147 L 84,147 L 84,146 L 85,146 L 85,147 L 86,147 L 87,147 L 87,146 L 87,145 L 88,144 L 88,143 L 88,142 L 88,141 L 88,139 L 89,138 L 89,137 L 89,135 L 90,130 L 90,128 L 91,127 L 91,126 L 92,121 L 92,120 L 93,114 L 93,113 L 94,110 L 94,108 L 94,107 L 94,106 L 95,106 L 95,105 L 95,104 L 94,104 L 94,103 L 95,103 L 95,102 L 94,101 L 94,100 L 93,100 L 93,99 L 93,98 L 92,98 L 93,98 L 92,98 L 92,97 L 92,96 L 92,95 L 93,95 L 92,95 L 92,94 L 92,93 L 91,93 L 90,93 L 90,92 L 89,92 L 89,91 L 88,91 L 87,91 L 87,90 L 86,90 L 86,89 L 86,88 L 86,87 L 86,86 L 86,85 L 86,83 L 86,80 L 86,79 L 87,79 L 86,78 L 87,78 L 87,79 L 88,78 L 89,78 L 90,78 L 90,77 L 91,77 L 92,78 L 92,77 L 93,77 L 93,76 L 94,76 L 94,77 L 95,77 L 95,78 L 96,78 L 96,77 L 96,78 L 97,78 L 98,78 L 98,77 L 99,78 L 99,77 L 98,77 L 98,76 L 98,75 L 98,74 L 98,73 L 97,73 L 98,73 L 97,72 L 96,72 L 96,71 L 95,71 L 95,72 L 94,72 L 94,71 L 93,71 L 92,71 L 91,71 L 90,71 L 91,71 L 90,71 L 89,71 L 89,72 L 89,71 L 89,68 L 89,66 L 89,64 L 89,62 L 89,63 L 90,62 L 91,62 L 92,62 L 93,62 L 93,61 L 93,62 L 94,62 L 95,62 L 98,62 L 100,62 L 105,62 L 112,62 L 111,62 L 111,61 L 111,60 L 111,59 L 112,59 L 113,59 L 113,60 L 114,60 L 114,61 L 115,61 L 116,60 L 115,60 L 116,60 L 117,59 L 117,58 L 118,58 L 119,58 L 120,58 L 120,57 L 121,57 L 121,56 L 122,56 L 122,55 L 123,55 L 123,56 L 123,57 L 124,57 L 124,58 "},"rr": {"name": "Roraima","path": "M 223,13 L 223,14 L 224,13 L 224,14 L 224,15 L 225,15 L 225,16 L 226,16 L 225,16 L 226,16 L 225,16 L 225,17 L 226,17 L 226,18 L 225,18 L 225,19 L 225,20 L 225,21 L 225,22 L 224,22 L 225,22 L 224,22 L 225,22 L 224,22 L 224,23 L 223,23 L 223,24 L 224,24 L 224,23 L 224,24 L 225,24 L 226,24 L 227,24 L 227,25 L 228,25 L 228,24 L 228,25 L 228,24 L 228,25 L 228,24 L 228,25 L 229,25 L 230,25 L 230,26 L 230,25 L 230,26 L 230,27 L 229,27 L 230,27 L 229,27 L 229,28 L 230,28 L 230,29 L 231,29 L 231,30 L 230,30 L 231,30 L 231,31 L 231,30 L 231,31 L 231,30 L 231,31 L 232,31 L 232,32 L 231,32 L 231,33 L 231,34 L 231,33 L 231,34 L 230,34 L 230,35 L 229,35 L 229,36 L 228,36 L 228,37 L 227,37 L 228,37 L 227,37 L 228,37 L 228,38 L 228,39 L 228,40 L 228,41 L 227,41 L 227,42 L 227,43 L 226,43 L 226,44 L 226,45 L 226,46 L 226,47 L 226,48 L 226,49 L 226,50 L 226,51 L 227,51 L 226,51 L 227,51 L 226,51 L 227,51 L 227,52 L 227,53 L 227,54 L 228,54 L 228,55 L 229,55 L 229,54 L 229,55 L 229,56 L 229,57 L 229,58 L 229,59 L 229,60 L 229,61 L 230,61 L 230,60 L 230,61 L 230,62 L 230,61 L 230,62 L 231,62 L 231,63 L 231,62 L 232,62 L 232,63 L 233,63 L 233,64 L 234,64 L 233,64 L 233,65 L 234,65 L 235,65 L 235,66 L 236,66 L 235,66 L 236,66 L 236,67 L 237,67 L 237,68 L 238,68 L 239,68 L 240,68 L 241,68 L 241,69 L 241,74 L 241,78 L 241,83 L 237,83 L 236,83 L 233,83 L 228,83 L 226,83 L 225,83 L 225,84 L 224,84 L 224,85 L 224,86 L 223,86 L 223,87 L 222,88 L 222,89 L 221,89 L 221,90 L 222,90 L 221,91 L 221,92 L 221,93 L 220,93 L 220,94 L 220,95 L 221,95 L 221,96 L 221,97 L 220,97 L 219,97 L 219,98 L 218,98 L 219,98 L 218,98 L 218,99 L 218,98 L 218,99 L 218,98 L 217,98 L 217,99 L 217,98 L 217,99 L 217,98 L 217,99 L 216,99 L 216,98 L 216,99 L 215,98 L 215,97 L 214,97 L 215,97 L 215,96 L 214,96 L 214,95 L 213,95 L 213,94 L 212,94 L 211,94 L 211,93 L 210,93 L 209,93 L 209,94 L 209,93 L 209,94 L 208,94 L 207,94 L 207,95 L 206,95 L 206,96 L 205,96 L 205,97 L 204,97 L 204,98 L 204,99 L 203,99 L 204,100 L 204,101 L 204,102 L 204,103 L 203,103 L 203,104 L 203,105 L 204,105 L 203,105 L 203,106 L 204,106 L 204,107 L 205,107 L 205,108 L 204,108 L 204,107 L 203,107 L 203,106 L 202,106 L 201,106 L 200,106 L 199,106 L 199,105 L 198,105 L 198,104 L 198,103 L 198,102 L 197,102 L 196,102 L 196,101 L 195,101 L 195,100 L 194,100 L 194,99 L 193,99 L 193,98 L 192,98 L 193,98 L 192,98 L 191,98 L 191,97 L 191,96 L 192,96 L 192,97 L 192,96 L 193,96 L 194,95 L 193,95 L 193,94 L 194,94 L 193,94 L 194,93 L 194,92 L 195,92 L 195,91 L 194,91 L 194,90 L 194,89 L 194,88 L 193,88 L 193,87 L 193,86 L 192,86 L 192,85 L 192,84 L 191,84 L 191,83 L 191,82 L 191,81 L 192,81 L 191,81 L 191,80 L 190,80 L 190,79 L 190,78 L 191,78 L 190,78 L 190,77 L 190,76 L 191,76 L 191,75 L 191,74 L 191,73 L 192,73 L 191,73 L 191,72 L 191,71 L 190,71 L 190,70 L 190,69 L 189,68 L 189,67 L 189,66 L 188,66 L 188,65 L 187,65 L 187,64 L 187,63 L 188,63 L 188,62 L 188,61 L 188,60 L 188,59 L 187,59 L 186,59 L 186,58 L 185,58 L 184,58 L 183,58 L 182,57 L 182,56 L 181,56 L 180,56 L 179,56 L 178,55 L 178,54 L 178,53 L 178,52 L 177,52 L 177,53 L 176,53 L 175,53 L 174,53 L 173,53 L 172,53 L 171,53 L 171,52 L 170,52 L 169,52 L 169,51 L 170,51 L 170,50 L 170,49 L 170,48 L 170,47 L 169,47 L 169,46 L 169,45 L 168,45 L 168,44 L 167,44 L 167,43 L 167,42 L 167,41 L 167,40 L 167,39 L 166,39 L 167,39 L 167,38 L 167,37 L 167,36 L 166,36 L 166,35 L 165,35 L 165,34 L 164,34 L 163,34 L 163,33 L 162,33 L 162,32 L 161,32 L 161,31 L 160,31 L 160,30 L 160,29 L 159,29 L 159,28 L 158,28 L 158,27 L 159,27 L 160,27 L 161,28 L 161,29 L 162,29 L 163,29 L 164,29 L 165,29 L 166,29 L 167,29 L 168,29 L 168,30 L 169,30 L 169,31 L 169,32 L 170,32 L 170,33 L 170,32 L 171,32 L 172,32 L 172,31 L 172,32 L 172,31 L 172,32 L 173,32 L 174,32 L 173,32 L 174,32 L 175,32 L 174,32 L 174,31 L 174,30 L 174,31 L 175,31 L 175,32 L 176,32 L 176,33 L 177,33 L 178,33 L 178,32 L 178,31 L 179,31 L 180,31 L 181,31 L 181,32 L 181,33 L 182,33 L 182,34 L 182,33 L 182,34 L 183,34 L 183,35 L 183,36 L 184,36 L 185,36 L 185,35 L 186,35 L 186,34 L 186,35 L 186,34 L 187,35 L 188,35 L 188,34 L 187,34 L 188,34 L 188,33 L 187,33 L 187,32 L 187,31 L 187,30 L 188,30 L 189,30 L 190,30 L 190,31 L 190,30 L 190,29 L 191,29 L 191,28 L 191,29 L 191,28 L 192,28 L 193,28 L 193,29 L 193,28 L 193,29 L 194,29 L 195,29 L 195,30 L 195,29 L 195,30 L 196,30 L 196,29 L 197,29 L 198,29 L 198,28 L 198,29 L 199,29 L 200,29 L 199,29 L 199,28 L 200,28 L 200,29 L 200,28 L 201,28 L 201,27 L 202,27 L 201,27 L 202,27 L 203,27 L 204,27 L 204,26 L 205,26 L 204,26 L 204,25 L 205,25 L 206,25 L 205,25 L 206,25 L 207,25 L 207,24 L 208,24 L 207,24 L 207,23 L 208,23 L 209,23 L 209,24 L 210,24 L 210,23 L 210,24 L 211,24 L 211,23 L 211,24 L 212,24 L 212,23 L 213,23 L 213,22 L 212,22 L 213,22 L 212,22 L 213,22 L 213,21 L 214,21 L 214,20 L 215,20 L 216,20 L 215,20 L 216,20 L 216,19 L 217,19 L 216,19 L 216,18 L 217,18 L 217,17 L 217,16 L 217,15 L 216,15 L 216,14 L 215,14 L 216,14 L 217,14 L 218,14 L 219,14 L 220,14 L 221,14 L 222,14 L 222,13 L 223,13 "},"pa": {"name": "Pará","path": "M 296,50 L 296,51 L 296,52 L 297,53 L 297,54 L 298,54 L 298,55 L 298,56 L 298,57 L 298,58 L 298,59 L 299,59 L 298,59 L 299,59 L 298,59 L 298,60 L 299,60 L 299,61 L 299,62 L 300,62 L 301,62 L 302,62 L 303,62 L 304,62 L 305,62 L 305,63 L 306,63 L 306,64 L 306,63 L 307,63 L 307,64 L 308,64 L 307,64 L 307,65 L 308,65 L 308,66 L 308,65 L 309,66 L 309,65 L 309,66 L 310,66 L 311,66 L 311,67 L 312,67 L 311,67 L 312,67 L 313,67 L 313,66 L 313,67 L 314,67 L 314,68 L 315,68 L 316,68 L 315,68 L 315,69 L 316,69 L 315,69 L 315,70 L 316,70 L 316,69 L 317,69 L 317,70 L 317,71 L 317,72 L 317,73 L 317,74 L 318,74 L 319,74 L 319,75 L 320,75 L 320,76 L 321,76 L 321,77 L 321,78 L 321,79 L 321,80 L 321,81 L 320,81 L 321,81 L 321,82 L 321,83 L 322,83 L 321,83 L 322,83 L 322,84 L 322,85 L 323,85 L 323,86 L 323,87 L 324,87 L 324,88 L 324,89 L 324,88 L 325,88 L 325,89 L 326,89 L 326,90 L 327,90 L 327,91 L 327,92 L 327,93 L 327,94 L 328,94 L 328,95 L 329,95 L 329,94 L 330,95 L 330,96 L 330,97 L 330,98 L 329,98 L 330,98 L 331,98 L 331,99 L 331,100 L 331,101 L 332,101 L 332,102 L 333,102 L 334,102 L 335,102 L 335,103 L 336,104 L 336,103 L 337,103 L 337,102 L 337,103 L 338,103 L 338,102 L 338,103 L 339,103 L 340,102 L 341,102 L 341,101 L 341,100 L 341,99 L 341,98 L 341,97 L 342,97 L 342,96 L 342,95 L 343,95 L 343,94 L 344,94 L 344,93 L 345,93 L 345,92 L 346,92 L 346,91 L 346,90 L 347,90 L 347,89 L 347,88 L 348,88 L 349,88 L 350,88 L 350,87 L 351,87 L 351,86 L 352,85 L 353,85 L 354,85 L 354,84 L 355,84 L 356,84 L 356,83 L 357,83 L 357,82 L 357,81 L 358,81 L 358,80 L 358,79 L 358,78 L 359,78 L 359,77 L 360,77 L 361,77 L 362,77 L 363,77 L 363,78 L 364,78 L 364,79 L 364,80 L 364,81 L 364,82 L 365,82 L 366,82 L 367,82 L 368,82 L 368,81 L 369,81 L 369,82 L 370,82 L 370,83 L 371,83 L 371,84 L 371,85 L 372,85 L 372,86 L 372,85 L 373,85 L 373,86 L 375,87 L 376,88 L 377,88 L 378,89 L 379,89 L 380,90 L 380,89 L 381,89 L 381,90 L 381,89 L 382,89 L 382,90 L 383,90 L 384,90 L 385,90 L 386,90 L 387,90 L 387,91 L 387,92 L 386,92 L 386,93 L 389,94 L 390,95 L 392,96 L 393,96 L 392,96 L 393,96 L 393,95 L 394,95 L 394,94 L 395,94 L 394,94 L 394,95 L 395,95 L 394,96 L 395,96 L 395,95 L 395,94 L 395,95 L 396,95 L 396,94 L 396,95 L 396,94 L 397,94 L 397,95 L 397,94 L 397,95 L 398,95 L 398,96 L 397,96 L 398,96 L 397,96 L 398,96 L 398,95 L 398,94 L 398,95 L 399,95 L 400,95 L 401,95 L 400,95 L 400,96 L 400,95 L 401,95 L 401,96 L 401,95 L 402,95 L 403,95 L 402,95 L 403,95 L 404,95 L 404,96 L 403,96 L 404,96 L 404,97 L 404,96 L 404,97 L 404,96 L 405,96 L 404,96 L 405,96 L 405,97 L 405,96 L 405,97 L 406,97 L 405,97 L 406,97 L 406,96 L 406,97 L 406,98 L 406,97 L 406,98 L 406,97 L 406,96 L 407,96 L 407,97 L 407,98 L 408,98 L 408,97 L 408,96 L 409,96 L 409,97 L 409,98 L 409,99 L 409,98 L 410,98 L 410,99 L 410,98 L 411,98 L 411,97 L 411,98 L 411,97 L 411,98 L 412,98 L 412,99 L 411,99 L 411,98 L 411,99 L 412,99 L 411,99 L 412,99 L 411,99 L 411,100 L 411,99 L 411,100 L 412,100 L 412,99 L 413,99 L 412,99 L 413,99 L 412,99 L 413,99 L 413,100 L 413,99 L 414,99 L 414,98 L 414,99 L 414,100 L 413,100 L 414,100 L 414,101 L 415,101 L 414,101 L 415,101 L 415,100 L 414,100 L 415,100 L 415,101 L 415,100 L 416,100 L 415,100 L 416,100 L 416,101 L 415,101 L 416,101 L 416,100 L 417,100 L 416,100 L 417,100 L 416,100 L 417,100 L 417,99 L 417,100 L 417,99 L 418,99 L 417,99 L 417,100 L 417,101 L 417,102 L 416,103 L 417,103 L 417,102 L 417,101 L 418,101 L 418,100 L 418,101 L 418,102 L 417,102 L 418,102 L 418,101 L 418,102 L 418,101 L 419,101 L 419,102 L 419,103 L 418,103 L 418,104 L 419,104 L 419,105 L 419,106 L 418,106 L 418,107 L 418,108 L 418,109 L 418,110 L 417,110 L 416,110 L 416,111 L 416,112 L 416,111 L 417,111 L 417,112 L 417,113 L 417,114 L 417,115 L 417,116 L 416,116 L 416,117 L 415,117 L 415,118 L 415,117 L 414,118 L 415,118 L 414,118 L 414,119 L 414,120 L 414,119 L 415,119 L 415,120 L 414,120 L 414,121 L 414,122 L 413,122 L 414,122 L 413,122 L 413,123 L 412,123 L 412,124 L 411,124 L 412,124 L 411,124 L 411,125 L 412,125 L 411,125 L 412,125 L 412,126 L 411,126 L 412,126 L 411,126 L 411,127 L 411,126 L 411,127 L 411,128 L 411,127 L 411,128 L 411,129 L 411,130 L 410,130 L 411,130 L 410,130 L 410,131 L 409,131 L 409,132 L 409,131 L 409,132 L 409,133 L 408,133 L 407,133 L 407,134 L 407,135 L 407,134 L 407,135 L 407,136 L 406,136 L 406,137 L 406,138 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 405,140 L 404,140 L 405,140 L 405,141 L 404,141 L 404,142 L 403,142 L 403,143 L 403,142 L 403,143 L 402,143 L 402,144 L 402,145 L 401,145 L 401,146 L 400,146 L 400,147 L 399,147 L 399,148 L 399,149 L 398,149 L 398,150 L 397,150 L 397,151 L 397,150 L 396,150 L 395,150 L 395,151 L 392,153 L 391,154 L 390,155 L 388,156 L 387,157 L 386,157 L 386,158 L 385,159 L 384,159 L 382,161 L 383,161 L 384,161 L 384,162 L 385,162 L 386,162 L 387,162 L 387,161 L 387,162 L 388,162 L 388,163 L 389,163 L 389,164 L 390,164 L 391,164 L 391,165 L 390,165 L 390,166 L 389,166 L 388,166 L 388,167 L 388,168 L 389,168 L 389,169 L 388,169 L 388,170 L 388,171 L 389,171 L 388,171 L 388,172 L 387,172 L 386,172 L 386,173 L 387,173 L 387,174 L 387,175 L 386,175 L 385,175 L 385,176 L 384,176 L 384,177 L 383,177 L 384,177 L 383,177 L 383,178 L 383,179 L 382,179 L 382,180 L 381,180 L 380,180 L 380,181 L 379,181 L 378,181 L 377,182 L 376,182 L 376,183 L 376,184 L 376,185 L 376,186 L 376,187 L 376,188 L 375,188 L 375,189 L 374,189 L 374,190 L 373,191 L 373,192 L 374,192 L 374,193 L 375,194 L 376,195 L 377,195 L 376,195 L 376,196 L 376,197 L 376,198 L 376,199 L 376,200 L 376,201 L 375,201 L 375,202 L 375,203 L 374,203 L 374,204 L 373,204 L 373,205 L 373,206 L 372,206 L 372,207 L 372,208 L 371,208 L 371,209 L 370,209 L 369,210 L 368,210 L 368,211 L 367,211 L 367,212 L 367,213 L 366,213 L 366,214 L 365,214 L 365,215 L 364,215 L 364,216 L 364,217 L 363,218 L 363,219 L 363,220 L 363,221 L 362,221 L 362,222 L 362,223 L 360,223 L 358,223 L 355,223 L 353,223 L 350,223 L 347,222 L 337,222 L 332,221 L 328,221 L 323,221 L 321,221 L 315,220 L 314,220 L 310,220 L 309,220 L 308,220 L 305,219 L 300,219 L 289,218 L 288,218 L 287,218 L 284,218 L 279,217 L 272,217 L 271,217 L 270,217 L 270,216 L 270,215 L 269,215 L 268,215 L 267,215 L 267,214 L 266,214 L 267,214 L 266,214 L 266,213 L 267,213 L 266,213 L 266,212 L 265,212 L 265,211 L 264,211 L 264,210 L 263,210 L 262,210 L 261,210 L 261,209 L 262,209 L 261,209 L 261,208 L 260,208 L 259,208 L 259,207 L 259,206 L 258,206 L 258,205 L 258,204 L 258,203 L 258,202 L 258,201 L 258,200 L 257,200 L 257,199 L 256,198 L 256,197 L 256,196 L 255,195 L 255,194 L 255,193 L 254,193 L 254,192 L 254,191 L 253,191 L 253,190 L 253,189 L 252,189 L 251,189 L 251,188 L 251,187 L 251,186 L 250,186 L 250,185 L 249,185 L 249,184 L 249,183 L 248,183 L 247,183 L 247,182 L 247,181 L 247,180 L 247,179 L 247,178 L 248,178 L 249,178 L 249,177 L 250,177 L 250,176 L 253,170 L 255,165 L 255,164 L 257,160 L 258,159 L 259,156 L 260,154 L 261,153 L 264,146 L 264,145 L 266,142 L 266,141 L 267,139 L 268,137 L 268,136 L 269,135 L 270,133 L 270,132 L 271,132 L 271,131 L 271,130 L 272,128 L 273,127 L 273,126 L 273,125 L 274,123 L 275,121 L 276,121 L 276,120 L 275,120 L 275,119 L 276,118 L 277,118 L 278,117 L 279,117 L 279,116 L 279,115 L 280,115 L 279,115 L 278,115 L 277,116 L 276,116 L 276,117 L 275,117 L 275,116 L 275,117 L 274,117 L 274,116 L 273,116 L 273,117 L 272,117 L 271,117 L 270,116 L 271,116 L 271,115 L 271,114 L 270,114 L 270,115 L 269,115 L 269,114 L 268,114 L 268,113 L 267,113 L 267,112 L 266,112 L 266,111 L 265,111 L 265,110 L 264,110 L 263,110 L 262,110 L 262,111 L 262,110 L 261,110 L 261,109 L 260,109 L 259,109 L 259,108 L 258,108 L 258,109 L 258,108 L 258,109 L 258,108 L 257,108 L 258,108 L 257,108 L 257,107 L 256,107 L 256,106 L 255,106 L 254,106 L 254,105 L 253,105 L 254,105 L 254,104 L 254,103 L 254,102 L 253,102 L 252,102 L 252,103 L 251,103 L 251,104 L 251,103 L 250,103 L 250,102 L 249,102 L 248,102 L 248,101 L 247,101 L 248,100 L 247,100 L 248,100 L 247,100 L 247,99 L 247,98 L 247,99 L 247,98 L 246,98 L 246,97 L 245,97 L 245,96 L 244,96 L 243,96 L 244,95 L 243,95 L 243,94 L 243,93 L 243,92 L 242,92 L 242,91 L 241,91 L 241,90 L 241,89 L 241,88 L 241,87 L 241,86 L 241,83 L 241,78 L 241,76 L 241,74 L 241,69 L 241,70 L 242,70 L 243,70 L 243,69 L 243,68 L 244,68 L 244,69 L 244,68 L 244,69 L 245,68 L 245,69 L 245,68 L 246,68 L 246,69 L 247,68 L 246,68 L 247,68 L 247,67 L 246,67 L 246,66 L 247,66 L 248,66 L 248,65 L 249,65 L 249,64 L 249,65 L 250,65 L 251,65 L 252,66 L 252,65 L 253,65 L 254,65 L 253,65 L 254,65 L 254,64 L 253,64 L 253,63 L 254,63 L 254,64 L 255,63 L 256,63 L 256,62 L 257,62 L 257,63 L 257,62 L 258,62 L 258,63 L 259,63 L 260,63 L 260,62 L 260,61 L 261,61 L 261,60 L 262,60 L 262,59 L 263,59 L 264,59 L 263,59 L 264,59 L 265,59 L 265,58 L 266,58 L 266,59 L 267,59 L 267,60 L 268,60 L 269,60 L 270,60 L 270,61 L 270,60 L 271,60 L 272,60 L 272,59 L 273,59 L 273,60 L 274,60 L 274,59 L 275,59 L 275,60 L 276,60 L 276,59 L 277,59 L 277,60 L 278,60 L 279,60 L 279,61 L 280,61 L 281,61 L 282,61 L 282,60 L 283,60 L 282,60 L 282,59 L 282,58 L 283,58 L 282,58 L 283,58 L 282,58 L 282,57 L 282,58 L 282,57 L 281,57 L 282,57 L 281,57 L 281,56 L 280,56 L 281,56 L 281,55 L 280,55 L 279,55 L 280,54 L 280,53 L 280,54 L 281,54 L 281,53 L 281,52 L 281,53 L 281,52 L 282,52 L 281,52 L 281,51 L 282,51 L 283,51 L 283,52 L 284,52 L 285,52 L 284,52 L 284,53 L 285,53 L 286,53 L 287,53 L 287,52 L 287,53 L 288,53 L 288,52 L 289,52 L 290,53 L 290,52 L 291,51 L 292,52 L 292,51 L 293,51 L 294,51 L 295,50 L 296,50 "},"ap": {"name": "Amapá","path": "M 348,31 L 348,32 L 349,32 L 350,32 L 350,33 L 350,34 L 350,35 L 349,35 L 350,35 L 349,35 L 350,35 L 350,36 L 350,37 L 350,38 L 349,38 L 350,39 L 350,40 L 350,41 L 350,42 L 350,43 L 351,43 L 351,44 L 351,45 L 351,46 L 352,46 L 352,47 L 351,47 L 352,47 L 352,48 L 352,49 L 353,49 L 353,50 L 353,51 L 353,52 L 353,51 L 353,52 L 354,52 L 354,53 L 354,54 L 355,54 L 355,55 L 355,56 L 355,57 L 355,56 L 356,56 L 357,56 L 358,56 L 359,56 L 359,57 L 360,57 L 360,58 L 360,59 L 361,59 L 361,60 L 361,61 L 362,61 L 363,61 L 363,62 L 364,62 L 365,62 L 365,63 L 366,63 L 366,64 L 366,65 L 366,66 L 366,67 L 366,68 L 366,69 L 366,70 L 366,71 L 365,71 L 365,72 L 365,73 L 365,74 L 364,74 L 364,75 L 363,75 L 363,76 L 363,77 L 362,77 L 361,77 L 360,77 L 359,77 L 359,78 L 358,78 L 358,79 L 358,80 L 358,81 L 357,81 L 357,82 L 357,83 L 356,83 L 356,84 L 355,84 L 354,84 L 354,85 L 353,85 L 352,85 L 351,86 L 351,87 L 350,87 L 350,88 L 349,88 L 348,88 L 347,88 L 347,89 L 347,90 L 346,90 L 346,91 L 346,92 L 345,92 L 345,93 L 344,93 L 344,94 L 343,94 L 343,95 L 342,95 L 342,96 L 342,97 L 341,97 L 341,98 L 341,99 L 341,100 L 341,101 L 341,102 L 340,102 L 339,103 L 338,103 L 338,102 L 338,103 L 337,103 L 337,102 L 337,103 L 336,103 L 336,104 L 335,103 L 335,102 L 334,102 L 333,102 L 332,102 L 332,101 L 331,101 L 331,100 L 331,99 L 331,98 L 330,98 L 329,98 L 330,98 L 330,97 L 330,96 L 330,95 L 329,94 L 329,95 L 328,95 L 328,94 L 327,94 L 327,93 L 327,92 L 327,91 L 327,90 L 326,90 L 326,89 L 325,89 L 325,88 L 324,88 L 324,89 L 324,88 L 324,87 L 323,87 L 323,86 L 323,85 L 322,85 L 322,84 L 322,83 L 321,83 L 322,83 L 321,83 L 321,82 L 321,81 L 320,81 L 321,81 L 321,80 L 321,79 L 321,78 L 321,77 L 321,76 L 320,76 L 320,75 L 319,75 L 319,74 L 318,74 L 317,74 L 317,73 L 317,72 L 317,71 L 317,70 L 317,69 L 316,69 L 316,70 L 315,70 L 315,69 L 316,69 L 315,69 L 315,68 L 316,68 L 315,68 L 314,68 L 314,67 L 313,67 L 313,66 L 313,67 L 312,67 L 311,67 L 312,67 L 311,67 L 311,66 L 310,66 L 309,66 L 309,65 L 309,66 L 308,65 L 308,66 L 308,65 L 307,65 L 307,64 L 308,64 L 307,64 L 307,63 L 306,63 L 306,64 L 306,63 L 305,63 L 305,62 L 304,62 L 303,62 L 302,62 L 301,62 L 300,62 L 299,62 L 299,61 L 299,60 L 298,60 L 298,59 L 299,59 L 298,59 L 299,59 L 298,59 L 298,58 L 298,57 L 298,56 L 298,55 L 298,54 L 297,54 L 297,53 L 298,52 L 299,52 L 299,53 L 299,54 L 300,54 L 301,54 L 303,56 L 306,56 L 309,55 L 310,55 L 310,54 L 310,55 L 311,55 L 311,54 L 312,54 L 311,54 L 312,54 L 312,53 L 313,53 L 312,54 L 313,54 L 312,54 L 313,54 L 314,54 L 314,55 L 315,55 L 316,55 L 317,55 L 316,55 L 317,55 L 317,54 L 318,54 L 319,54 L 319,55 L 320,55 L 319,55 L 319,56 L 320,56 L 321,56 L 322,56 L 323,56 L 324,56 L 325,56 L 324,55 L 325,55 L 324,55 L 325,55 L 326,54 L 327,54 L 327,53 L 328,53 L 328,52 L 329,52 L 329,51 L 329,50 L 329,49 L 330,49 L 330,48 L 330,47 L 331,47 L 331,46 L 332,46 L 331,46 L 331,45 L 332,45 L 332,44 L 332,43 L 332,42 L 333,42 L 333,41 L 334,41 L 334,40 L 335,40 L 335,39 L 335,38 L 336,38 L 335,38 L 336,38 L 335,38 L 336,38 L 336,37 L 336,36 L 337,36 L 337,35 L 337,34 L 337,35 L 338,35 L 338,34 L 338,33 L 339,33 L 339,32 L 340,32 L 340,31 L 341,31 L 341,30 L 342,30 L 342,29 L 342,28 L 343,27 L 343,26 L 343,25 L 344,25 L 345,25 L 345,26 L 346,26 L 346,27 L 347,27 L 347,28 L 348,29 L 348,30 L 348,31 "},"to": {"name": "Tocantins","path": "M 387,158 L 388,158 L 388,159 L 389,159 L 390,159 L 390,160 L 391,160 L 392,160 L 392,159 L 393,159 L 394,159 L 394,160 L 394,161 L 395,161 L 396,161 L 396,162 L 397,162 L 398,162 L 398,163 L 398,162 L 399,162 L 399,163 L 400,163 L 400,164 L 400,165 L 400,166 L 400,167 L 400,168 L 400,169 L 400,170 L 400,171 L 400,172 L 401,172 L 401,173 L 401,174 L 401,175 L 400,176 L 401,176 L 401,177 L 400,177 L 400,178 L 400,179 L 399,179 L 400,179 L 399,180 L 400,180 L 399,181 L 399,182 L 399,183 L 399,184 L 398,184 L 398,185 L 398,186 L 397,186 L 396,186 L 396,187 L 397,187 L 397,188 L 398,188 L 398,187 L 399,187 L 399,188 L 400,188 L 400,189 L 399,189 L 398,190 L 399,190 L 400,191 L 400,192 L 401,192 L 401,193 L 402,193 L 401,193 L 401,192 L 402,192 L 402,193 L 402,194 L 402,193 L 402,194 L 403,194 L 403,195 L 404,195 L 403,195 L 404,195 L 404,196 L 404,197 L 405,197 L 405,198 L 406,198 L 406,199 L 406,198 L 406,199 L 406,198 L 406,199 L 406,198 L 407,198 L 407,197 L 408,197 L 408,198 L 408,197 L 409,197 L 410,197 L 410,196 L 410,197 L 410,196 L 411,196 L 411,197 L 411,196 L 411,197 L 411,196 L 412,196 L 412,197 L 413,197 L 414,198 L 414,199 L 413,199 L 414,199 L 413,199 L 413,200 L 414,200 L 414,201 L 413,201 L 413,202 L 412,202 L 411,202 L 411,203 L 410,203 L 409,203 L 409,204 L 408,204 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 408,206 L 408,207 L 408,208 L 407,208 L 408,208 L 408,209 L 408,210 L 407,210 L 406,210 L 407,210 L 407,211 L 406,211 L 406,212 L 405,212 L 406,212 L 405,212 L 406,213 L 407,213 L 407,212 L 407,213 L 408,213 L 407,213 L 408,213 L 408,214 L 409,214 L 408,214 L 409,214 L 409,215 L 409,216 L 409,217 L 410,217 L 411,217 L 411,218 L 412,218 L 413,218 L 412,219 L 413,219 L 413,220 L 412,220 L 412,221 L 411,221 L 411,222 L 412,222 L 412,223 L 413,223 L 414,223 L 414,224 L 413,224 L 414,224 L 414,225 L 414,226 L 414,227 L 415,227 L 415,228 L 416,228 L 417,228 L 418,228 L 419,228 L 420,228 L 420,229 L 421,229 L 422,229 L 423,229 L 424,229 L 424,228 L 424,229 L 425,229 L 424,229 L 424,230 L 423,230 L 423,231 L 423,232 L 422,232 L 422,233 L 421,233 L 420,233 L 420,234 L 419,234 L 418,234 L 418,235 L 417,235 L 418,235 L 418,236 L 417,236 L 417,237 L 416,237 L 416,238 L 416,239 L 415,239 L 415,240 L 414,240 L 414,241 L 414,242 L 413,242 L 413,243 L 412,243 L 412,244 L 412,245 L 413,245 L 413,246 L 414,246 L 414,247 L 415,247 L 416,247 L 417,247 L 417,248 L 418,248 L 419,248 L 418,248 L 418,249 L 418,248 L 418,249 L 418,248 L 418,249 L 417,248 L 416,248 L 416,249 L 416,250 L 415,250 L 416,250 L 416,251 L 415,251 L 415,252 L 416,252 L 417,252 L 418,252 L 417,252 L 417,253 L 416,253 L 415,253 L 415,254 L 415,255 L 415,256 L 415,257 L 416,257 L 416,258 L 415,258 L 416,258 L 416,259 L 417,259 L 417,260 L 418,260 L 418,261 L 417,261 L 416,261 L 416,262 L 417,262 L 416,262 L 417,262 L 417,263 L 416,263 L 417,263 L 417,264 L 416,264 L 416,265 L 417,265 L 416,265 L 416,266 L 416,267 L 416,266 L 417,266 L 418,266 L 419,266 L 418,266 L 418,267 L 417,267 L 416,267 L 415,267 L 415,266 L 415,265 L 414,265 L 414,266 L 414,267 L 411,267 L 410,267 L 409,267 L 409,268 L 408,268 L 407,268 L 407,269 L 406,269 L 405,269 L 405,270 L 404,270 L 405,270 L 404,270 L 403,270 L 403,271 L 402,271 L 401,271 L 401,270 L 401,271 L 400,271 L 400,270 L 399,270 L 399,269 L 398,269 L 399,269 L 398,269 L 397,269 L 397,270 L 397,271 L 397,272 L 398,272 L 398,273 L 397,273 L 397,274 L 395,272 L 394,272 L 394,271 L 393,271 L 393,272 L 393,271 L 393,272 L 393,271 L 392,271 L 391,271 L 390,271 L 390,272 L 390,271 L 390,272 L 390,271 L 390,272 L 390,271 L 390,270 L 390,269 L 390,270 L 389,270 L 388,270 L 388,271 L 388,270 L 388,271 L 387,271 L 386,271 L 386,270 L 386,269 L 385,269 L 385,270 L 385,271 L 385,272 L 384,272 L 384,271 L 384,270 L 384,269 L 384,268 L 384,269 L 384,268 L 384,267 L 383,267 L 382,267 L 382,266 L 381,266 L 381,265 L 380,265 L 379,267 L 379,266 L 378,266 L 377,266 L 377,265 L 378,265 L 377,265 L 377,264 L 377,265 L 376,265 L 376,266 L 375,266 L 375,267 L 374,267 L 374,268 L 374,269 L 374,270 L 374,271 L 373,271 L 372,270 L 371,270 L 367,268 L 367,267 L 366,267 L 365,267 L 365,266 L 364,266 L 363,266 L 362,266 L 362,265 L 362,266 L 362,265 L 361,265 L 360,265 L 360,264 L 361,264 L 360,264 L 361,264 L 361,263 L 360,263 L 361,263 L 360,263 L 361,263 L 361,262 L 361,261 L 362,261 L 361,261 L 362,261 L 362,260 L 362,259 L 363,259 L 362,259 L 362,260 L 361,260 L 360,260 L 360,261 L 360,260 L 360,261 L 359,261 L 359,262 L 359,263 L 358,263 L 358,264 L 358,265 L 357,265 L 356,265 L 357,265 L 357,264 L 356,264 L 356,265 L 356,264 L 356,263 L 356,262 L 355,262 L 355,261 L 355,260 L 356,260 L 356,259 L 356,258 L 356,257 L 356,256 L 355,256 L 355,255 L 355,254 L 355,253 L 356,253 L 355,252 L 356,252 L 355,251 L 355,250 L 355,249 L 355,248 L 356,248 L 355,248 L 355,247 L 354,247 L 354,246 L 354,245 L 355,245 L 355,244 L 355,243 L 356,243 L 356,242 L 355,242 L 355,241 L 356,241 L 356,240 L 356,239 L 356,238 L 356,237 L 356,236 L 357,236 L 357,235 L 356,235 L 357,235 L 356,235 L 357,234 L 357,233 L 358,232 L 358,231 L 359,231 L 359,230 L 359,229 L 359,228 L 359,227 L 360,227 L 360,226 L 361,226 L 361,225 L 361,224 L 362,223 L 361,223 L 362,223 L 362,222 L 362,221 L 363,221 L 363,220 L 363,219 L 363,218 L 364,217 L 364,216 L 364,215 L 365,215 L 365,214 L 366,214 L 366,213 L 367,213 L 367,212 L 367,211 L 368,211 L 368,210 L 369,210 L 370,209 L 371,209 L 371,208 L 372,208 L 372,207 L 372,206 L 373,206 L 373,205 L 373,204 L 374,204 L 374,203 L 375,203 L 375,202 L 375,201 L 376,201 L 376,200 L 376,199 L 376,198 L 376,197 L 376,196 L 376,195 L 377,195 L 376,195 L 375,194 L 374,193 L 374,192 L 373,192 L 373,191 L 374,190 L 374,189 L 375,189 L 375,188 L 376,188 L 376,187 L 376,186 L 376,185 L 376,184 L 376,183 L 376,182 L 377,182 L 378,181 L 379,181 L 380,181 L 380,180 L 381,180 L 382,180 L 382,179 L 383,179 L 383,178 L 383,177 L 384,177 L 383,177 L 384,177 L 384,176 L 385,176 L 385,175 L 386,175 L 387,175 L 387,174 L 387,173 L 386,173 L 386,172 L 387,172 L 388,172 L 388,171 L 389,171 L 388,171 L 388,170 L 388,169 L 389,169 L 389,168 L 388,168 L 388,167 L 388,166 L 389,166 L 390,166 L 390,165 L 391,165 L 391,164 L 390,164 L 389,164 L 389,163 L 388,163 L 388,162 L 387,162 L 387,161 L 387,162 L 386,162 L 385,162 L 384,162 L 384,161 L 383,161 L 382,161 L 383,161 L 383,160 L 384,160 L 384,161 L 384,160 L 385,160 L 385,159 L 386,159 L 386,158 L 387,158 "},"ma": {"name": "Maranhão","path": "M 423,101 L 422,101 L 423,101 L 423,102 L 422,102 L 422,103 L 421,103 L 422,103 L 421,103 L 422,103 L 422,102 L 422,103 L 422,104 L 422,103 L 422,104 L 422,103 L 422,104 L 423,104 L 423,103 L 423,104 L 423,103 L 423,104 L 423,105 L 423,104 L 423,103 L 424,103 L 424,102 L 425,102 L 425,103 L 425,102 L 425,103 L 424,103 L 424,104 L 425,104 L 424,104 L 424,105 L 425,105 L 424,105 L 424,106 L 424,105 L 424,106 L 424,105 L 424,106 L 425,106 L 424,106 L 425,106 L 425,105 L 425,106 L 425,105 L 426,105 L 426,104 L 426,105 L 426,104 L 426,105 L 426,104 L 427,104 L 426,104 L 427,105 L 426,105 L 427,105 L 426,105 L 427,105 L 426,105 L 426,106 L 426,105 L 427,105 L 426,105 L 427,105 L 427,104 L 427,105 L 427,106 L 427,105 L 427,106 L 428,106 L 428,105 L 428,104 L 429,104 L 429,105 L 428,105 L 428,106 L 427,106 L 428,106 L 428,107 L 427,107 L 428,107 L 428,108 L 427,108 L 428,108 L 428,107 L 428,106 L 428,107 L 429,107 L 428,107 L 428,106 L 429,106 L 429,107 L 429,106 L 429,105 L 430,105 L 429,105 L 430,105 L 430,106 L 430,105 L 430,106 L 430,107 L 429,107 L 429,108 L 429,107 L 429,108 L 429,107 L 430,107 L 430,108 L 430,107 L 430,108 L 429,108 L 430,109 L 429,109 L 430,109 L 429,109 L 429,110 L 429,111 L 429,110 L 430,110 L 430,109 L 431,109 L 431,108 L 431,107 L 432,107 L 432,108 L 432,107 L 432,108 L 432,107 L 432,108 L 433,108 L 432,108 L 433,107 L 432,107 L 433,107 L 433,106 L 433,107 L 433,106 L 433,107 L 433,108 L 433,107 L 434,107 L 435,107 L 435,108 L 435,107 L 436,107 L 435,107 L 436,107 L 436,106 L 436,107 L 436,106 L 436,107 L 436,106 L 437,106 L 437,107 L 436,107 L 435,107 L 436,107 L 436,108 L 435,108 L 436,108 L 436,109 L 437,109 L 437,108 L 437,109 L 437,108 L 438,108 L 438,109 L 437,109 L 438,109 L 437,109 L 438,109 L 438,108 L 438,109 L 439,109 L 439,108 L 439,109 L 439,110 L 439,109 L 438,109 L 438,110 L 437,110 L 438,110 L 438,111 L 437,111 L 438,111 L 438,110 L 437,110 L 438,110 L 438,111 L 437,111 L 437,112 L 437,111 L 437,112 L 437,111 L 437,112 L 436,112 L 437,112 L 437,111 L 438,111 L 438,112 L 438,111 L 439,111 L 438,111 L 438,112 L 439,112 L 439,111 L 439,112 L 439,111 L 439,110 L 440,111 L 439,111 L 439,112 L 440,112 L 439,112 L 440,112 L 441,112 L 440,112 L 440,113 L 441,113 L 441,114 L 441,113 L 441,114 L 441,115 L 442,115 L 442,114 L 442,115 L 441,115 L 441,116 L 442,116 L 442,117 L 443,117 L 442,117 L 443,117 L 443,118 L 443,119 L 443,120 L 442,120 L 443,121 L 444,121 L 445,121 L 446,121 L 446,120 L 447,120 L 448,120 L 448,121 L 448,120 L 447,120 L 447,121 L 447,120 L 447,121 L 446,121 L 447,121 L 448,121 L 449,121 L 448,122 L 449,122 L 449,121 L 450,121 L 450,120 L 450,119 L 451,119 L 452,119 L 451,119 L 452,119 L 452,118 L 453,118 L 453,117 L 454,117 L 454,118 L 455,119 L 456,119 L 457,119 L 458,119 L 459,119 L 460,120 L 461,120 L 462,120 L 462,121 L 463,121 L 464,121 L 464,122 L 465,122 L 466,122 L 465,122 L 466,122 L 466,123 L 466,122 L 467,122 L 467,123 L 468,123 L 468,124 L 469,124 L 470,124 L 471,124 L 472,124 L 473,124 L 474,124 L 475,124 L 475,125 L 476,125 L 476,124 L 477,124 L 478,124 L 479,125 L 478,125 L 478,126 L 478,127 L 479,127 L 479,128 L 478,128 L 478,129 L 477,129 L 477,130 L 477,131 L 476,131 L 476,132 L 475,132 L 474,132 L 475,132 L 474,132 L 474,133 L 474,134 L 473,134 L 472,134 L 471,134 L 470,134 L 470,135 L 470,134 L 470,135 L 469,135 L 469,134 L 469,135 L 468,135 L 468,136 L 467,136 L 467,137 L 467,138 L 466,138 L 467,138 L 467,139 L 466,139 L 467,139 L 466,139 L 466,140 L 466,141 L 465,141 L 465,142 L 464,142 L 464,143 L 464,144 L 463,144 L 464,144 L 463,144 L 463,145 L 462,145 L 462,146 L 462,147 L 463,147 L 463,148 L 464,148 L 464,149 L 464,150 L 464,151 L 463,151 L 463,152 L 463,153 L 463,154 L 464,154 L 463,154 L 464,154 L 464,155 L 464,156 L 464,157 L 465,157 L 465,158 L 465,159 L 464,159 L 465,160 L 465,161 L 464,161 L 463,161 L 463,162 L 462,162 L 462,163 L 462,164 L 461,164 L 461,165 L 461,166 L 461,167 L 461,168 L 461,169 L 461,170 L 461,171 L 462,171 L 462,172 L 463,172 L 463,173 L 464,173 L 464,174 L 464,175 L 464,174 L 464,175 L 464,176 L 464,177 L 464,178 L 463,178 L 463,179 L 463,180 L 462,180 L 461,180 L 461,181 L 460,181 L 459,181 L 459,180 L 459,181 L 458,181 L 457,181 L 456,181 L 456,182 L 455,182 L 455,181 L 454,181 L 454,180 L 453,180 L 452,180 L 451,180 L 450,180 L 449,180 L 449,181 L 449,180 L 448,180 L 448,181 L 447,181 L 447,182 L 446,181 L 446,182 L 446,183 L 445,183 L 445,184 L 444,184 L 444,185 L 443,185 L 443,186 L 442,186 L 441,186 L 441,187 L 440,187 L 440,188 L 439,188 L 439,189 L 438,189 L 437,189 L 436,189 L 436,190 L 435,190 L 435,191 L 435,190 L 434,190 L 434,191 L 433,191 L 432,191 L 431,191 L 431,192 L 431,191 L 431,192 L 430,192 L 429,192 L 429,193 L 428,193 L 428,194 L 427,194 L 428,194 L 427,194 L 427,195 L 427,196 L 427,197 L 426,197 L 427,197 L 426,197 L 426,198 L 427,198 L 426,198 L 426,199 L 426,200 L 426,201 L 425,201 L 425,202 L 425,203 L 424,203 L 424,204 L 424,205 L 424,206 L 423,206 L 424,206 L 423,206 L 423,207 L 423,208 L 422,208 L 421,208 L 421,209 L 421,210 L 420,210 L 421,210 L 420,210 L 420,211 L 421,211 L 421,212 L 421,213 L 421,214 L 422,214 L 422,215 L 422,216 L 422,217 L 423,217 L 423,218 L 423,219 L 422,220 L 423,220 L 423,221 L 423,222 L 423,223 L 422,223 L 422,224 L 422,225 L 422,226 L 422,227 L 422,228 L 421,228 L 421,229 L 420,229 L 420,228 L 419,228 L 418,228 L 417,228 L 416,228 L 415,228 L 415,227 L 414,227 L 414,226 L 414,225 L 414,224 L 413,224 L 414,224 L 414,223 L 413,223 L 412,223 L 412,222 L 411,222 L 411,221 L 412,221 L 412,220 L 413,220 L 413,219 L 412,219 L 413,218 L 412,218 L 411,218 L 411,217 L 410,217 L 409,217 L 409,216 L 409,215 L 409,214 L 408,214 L 409,214 L 408,214 L 408,213 L 407,213 L 408,213 L 407,213 L 407,212 L 407,213 L 406,213 L 405,212 L 406,212 L 405,212 L 406,212 L 406,211 L 407,211 L 407,210 L 406,210 L 407,210 L 408,210 L 408,209 L 408,208 L 407,208 L 408,208 L 408,207 L 408,206 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 409,205 L 408,205 L 408,204 L 409,204 L 409,203 L 410,203 L 411,203 L 411,202 L 412,202 L 413,202 L 413,201 L 414,201 L 414,200 L 413,200 L 413,199 L 414,199 L 413,199 L 414,199 L 414,198 L 413,197 L 412,197 L 412,196 L 411,196 L 411,197 L 411,196 L 411,197 L 411,196 L 410,196 L 410,197 L 410,196 L 410,197 L 409,197 L 408,197 L 408,198 L 408,197 L 407,197 L 407,198 L 406,198 L 406,199 L 406,198 L 406,199 L 406,198 L 406,199 L 406,198 L 405,198 L 405,197 L 404,197 L 404,196 L 404,195 L 403,195 L 404,195 L 403,195 L 403,194 L 402,194 L 402,193 L 402,194 L 402,193 L 402,192 L 401,192 L 401,193 L 402,193 L 401,193 L 401,192 L 400,192 L 400,191 L 399,190 L 398,190 L 399,189 L 400,189 L 400,188 L 399,188 L 399,187 L 398,187 L 398,188 L 397,188 L 397,187 L 396,187 L 396,186 L 397,186 L 398,186 L 398,185 L 398,184 L 399,184 L 399,183 L 399,182 L 399,181 L 400,180 L 399,180 L 400,179 L 399,179 L 400,179 L 400,178 L 400,177 L 401,177 L 401,176 L 400,176 L 401,175 L 401,174 L 401,173 L 401,172 L 400,172 L 400,171 L 400,170 L 400,169 L 400,168 L 400,167 L 400,166 L 400,165 L 400,164 L 400,163 L 399,163 L 399,162 L 398,162 L 398,163 L 398,162 L 397,162 L 396,162 L 396,161 L 395,161 L 394,161 L 394,160 L 394,159 L 393,159 L 392,159 L 392,160 L 391,160 L 390,160 L 390,159 L 389,159 L 388,159 L 388,158 L 387,158 L 386,158 L 386,159 L 385,159 L 385,160 L 384,160 L 384,161 L 384,160 L 383,160 L 383,161 L 382,161 L 384,159 L 385,159 L 386,158 L 386,157 L 387,157 L 388,156 L 390,155 L 391,154 L 392,153 L 394,152 L 395,151 L 395,150 L 396,150 L 397,150 L 397,151 L 397,150 L 398,150 L 398,149 L 399,149 L 399,148 L 399,147 L 400,147 L 400,146 L 401,146 L 401,145 L 402,145 L 402,144 L 402,143 L 403,143 L 403,142 L 403,143 L 403,142 L 404,142 L 404,141 L 405,141 L 405,140 L 404,140 L 405,140 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 405,139 L 406,139 L 406,138 L 406,137 L 406,136 L 407,136 L 407,135 L 407,134 L 407,135 L 407,134 L 407,133 L 408,133 L 409,133 L 409,132 L 409,131 L 409,132 L 409,131 L 410,131 L 410,130 L 411,130 L 410,130 L 411,130 L 411,129 L 411,128 L 411,127 L 411,128 L 411,127 L 411,126 L 411,127 L 411,126 L 412,126 L 411,126 L 412,126 L 412,125 L 411,125 L 412,125 L 411,125 L 411,124 L 412,124 L 411,124 L 412,124 L 412,123 L 413,123 L 413,122 L 414,122 L 413,122 L 414,122 L 414,121 L 414,120 L 415,120 L 415,119 L 414,119 L 414,120 L 414,119 L 414,118 L 415,118 L 414,118 L 415,117 L 415,118 L 415,117 L 416,117 L 416,116 L 417,116 L 417,115 L 417,114 L 417,113 L 417,112 L 417,111 L 416,111 L 416,112 L 416,111 L 416,110 L 417,110 L 418,110 L 418,109 L 418,108 L 418,107 L 418,106 L 419,106 L 419,105 L 419,104 L 418,104 L 418,103 L 419,103 L 419,102 L 419,103 L 419,102 L 420,102 L 420,103 L 420,102 L 420,101 L 420,102 L 420,101 L 420,102 L 420,101 L 421,101 L 421,102 L 421,101 L 421,102 L 420,102 L 421,102 L 420,102 L 421,102 L 420,102 L 420,103 L 420,102 L 421,103 L 421,102 L 421,103 L 421,104 L 421,103 L 421,102 L 422,102 L 422,101 L 423,101 "},"pi": {"name": "Piauí","path": "M 479,125 L 480,125 L 480,126 L 481,126 L 481,127 L 482,127 L 483,127 L 484,127 L 485,127 L 485,128 L 486,128 L 486,129 L 486,130 L 485,130 L 485,131 L 485,132 L 484,132 L 484,133 L 484,134 L 485,134 L 485,135 L 486,135 L 485,135 L 485,136 L 485,137 L 485,138 L 486,138 L 487,138 L 486,138 L 486,139 L 486,140 L 486,141 L 487,141 L 487,142 L 486,142 L 487,142 L 486,142 L 486,143 L 487,142 L 487,143 L 488,143 L 488,142 L 488,143 L 488,144 L 489,144 L 488,145 L 488,146 L 488,147 L 488,148 L 487,148 L 487,149 L 487,150 L 486,150 L 487,150 L 487,151 L 487,152 L 486,152 L 486,153 L 487,153 L 486,153 L 486,154 L 487,154 L 486,154 L 487,154 L 487,155 L 488,155 L 488,156 L 488,157 L 489,157 L 490,157 L 490,158 L 491,158 L 491,159 L 491,160 L 491,161 L 491,162 L 491,163 L 491,164 L 491,165 L 491,166 L 491,167 L 491,168 L 491,169 L 492,169 L 492,170 L 491,170 L 491,171 L 492,171 L 492,172 L 492,173 L 492,174 L 493,174 L 493,175 L 493,176 L 493,177 L 493,178 L 494,178 L 494,179 L 495,179 L 495,180 L 496,180 L 497,180 L 497,181 L 498,181 L 499,181 L 498,181 L 498,182 L 498,183 L 498,184 L 498,185 L 497,185 L 497,186 L 497,187 L 497,188 L 496,188 L 496,189 L 495,190 L 494,190 L 494,191 L 494,192 L 495,192 L 495,193 L 495,194 L 494,194 L 495,195 L 496,195 L 496,196 L 496,197 L 496,198 L 495,199 L 496,199 L 496,200 L 495,200 L 494,200 L 494,201 L 493,201 L 493,202 L 492,202 L 492,203 L 491,203 L 491,204 L 490,204 L 490,203 L 490,204 L 489,204 L 489,205 L 488,205 L 488,206 L 487,206 L 487,207 L 486,207 L 485,207 L 485,208 L 484,208 L 484,209 L 483,209 L 483,210 L 482,211 L 481,211 L 481,212 L 480,212 L 480,213 L 479,213 L 479,214 L 478,214 L 478,215 L 477,215 L 476,215 L 475,215 L 475,216 L 474,216 L 473,216 L 472,216 L 471,216 L 471,217 L 470,217 L 470,218 L 469,218 L 469,219 L 468,219 L 467,219 L 466,219 L 466,220 L 465,220 L 464,220 L 464,219 L 463,219 L 463,218 L 463,217 L 462,217 L 461,217 L 460,217 L 459,217 L 458,217 L 458,218 L 458,217 L 457,217 L 457,216 L 456,216 L 456,215 L 455,215 L 455,216 L 454,216 L 453,217 L 452,217 L 452,218 L 451,218 L 451,219 L 450,219 L 450,220 L 450,221 L 451,221 L 451,222 L 452,223 L 453,223 L 453,224 L 452,224 L 452,225 L 453,225 L 453,226 L 452,226 L 452,227 L 451,227 L 451,228 L 451,229 L 450,229 L 450,230 L 450,231 L 449,231 L 449,232 L 448,232 L 448,231 L 448,232 L 447,233 L 447,234 L 446,234 L 445,234 L 444,234 L 444,233 L 443,233 L 443,234 L 442,234 L 441,234 L 441,235 L 441,234 L 440,234 L 440,235 L 439,235 L 439,236 L 438,236 L 438,237 L 437,237 L 437,238 L 436,238 L 435,238 L 434,238 L 434,237 L 433,237 L 432,237 L 431,237 L 431,236 L 430,236 L 429,236 L 429,235 L 428,235 L 428,234 L 428,233 L 428,232 L 429,232 L 428,232 L 428,231 L 428,230 L 427,230 L 427,229 L 426,229 L 426,228 L 426,227 L 425,227 L 425,228 L 424,228 L 424,229 L 423,229 L 422,229 L 421,229 L 421,228 L 422,228 L 422,227 L 422,226 L 422,225 L 422,224 L 422,223 L 423,223 L 423,222 L 423,221 L 423,220 L 422,220 L 423,219 L 423,218 L 423,217 L 422,217 L 422,216 L 422,215 L 422,214 L 421,214 L 421,213 L 421,212 L 421,211 L 420,211 L 420,210 L 421,210 L 420,210 L 421,210 L 421,209 L 421,208 L 422,208 L 423,208 L 423,207 L 423,206 L 424,206 L 423,206 L 424,206 L 424,205 L 424,204 L 424,203 L 425,203 L 425,202 L 425,201 L 426,201 L 426,200 L 426,199 L 426,198 L 427,198 L 426,198 L 426,197 L 427,197 L 426,197 L 427,197 L 427,196 L 427,195 L 427,194 L 428,194 L 427,194 L 428,194 L 428,193 L 429,193 L 429,192 L 430,192 L 431,192 L 431,191 L 431,192 L 431,191 L 432,191 L 433,191 L 434,191 L 434,190 L 435,190 L 435,191 L 435,190 L 436,190 L 436,189 L 437,189 L 438,189 L 439,189 L 439,188 L 440,188 L 440,187 L 441,187 L 441,186 L 442,186 L 443,186 L 443,185 L 444,185 L 444,184 L 445,184 L 445,183 L 446,183 L 446,182 L 446,181 L 447,182 L 447,181 L 448,181 L 448,180 L 449,180 L 449,181 L 449,180 L 450,180 L 451,180 L 452,180 L 453,180 L 454,180 L 454,181 L 455,181 L 455,182 L 456,182 L 456,181 L 457,181 L 458,181 L 459,181 L 459,180 L 459,181 L 460,181 L 461,181 L 461,180 L 462,180 L 463,180 L 463,179 L 463,178 L 464,178 L 464,177 L 464,176 L 464,175 L 464,174 L 464,175 L 464,174 L 464,173 L 463,173 L 463,172 L 462,172 L 462,171 L 461,171 L 461,170 L 461,169 L 461,168 L 461,167 L 461,166 L 461,165 L 461,164 L 462,164 L 462,163 L 462,162 L 463,162 L 463,161 L 464,161 L 465,161 L 465,160 L 464,159 L 465,159 L 465,158 L 465,157 L 464,157 L 464,156 L 464,155 L 464,154 L 463,154 L 464,154 L 463,154 L 463,153 L 463,152 L 463,151 L 464,151 L 464,150 L 464,149 L 464,148 L 463,148 L 463,147 L 462,147 L 462,146 L 462,145 L 463,145 L 463,144 L 464,144 L 463,144 L 464,144 L 464,143 L 464,142 L 465,142 L 465,141 L 466,141 L 466,140 L 466,139 L 467,139 L 466,139 L 467,139 L 467,138 L 466,138 L 467,138 L 467,137 L 467,136 L 468,136 L 468,135 L 469,135 L 469,134 L 469,135 L 470,135 L 470,134 L 470,135 L 470,134 L 471,134 L 472,134 L 473,134 L 474,134 L 474,133 L 474,132 L 475,132 L 474,132 L 475,132 L 476,132 L 476,131 L 477,131 L 477,130 L 477,129 L 478,129 L 478,128 L 479,128 L 479,127 L 478,127 L 478,126 L 478,125 L 479,125 "},"ce": {"name": "Ceará","path": "M 488,149 L 487,149 L 487,148 L 488,148 L 488,147 L 488,146 L 488,145 L 489,144 L 488,144 L 488,143 L 488,142 L 488,143 L 487,143 L 487,142 L 486,143 L 486,142 L 487,142 L 486,142 L 487,142 L 487,141 L 486,141 L 486,140 L 486,139 L 486,138 L 487,138 L 486,138 L 485,138 L 485,137 L 485,136 L 485,135 L 486,135 L 485,135 L 485,134 L 484,134 L 484,133 L 484,132 L 485,132 L 485,131 L 485,130 L 486,130 L 486,129 L 486,128 L 485,128 L 485,127 L 486,127 L 487,127 L 488,127 L 489,127 L 490,127 L 490,126 L 491,126 L 492,126 L 492,127 L 492,126 L 493,126 L 494,126 L 495,126 L 496,126 L 496,125 L 497,125 L 498,125 L 498,126 L 499,126 L 499,125 L 500,125 L 500,126 L 500,125 L 500,126 L 501,126 L 502,126 L 503,126 L 504,126 L 503,126 L 504,126 L 505,126 L 505,127 L 506,127 L 507,127 L 507,128 L 508,128 L 509,128 L 509,129 L 510,129 L 510,130 L 511,130 L 512,130 L 512,131 L 513,131 L 514,131 L 514,132 L 515,132 L 515,133 L 516,133 L 517,134 L 518,134 L 519,134 L 519,135 L 520,135 L 520,136 L 521,136 L 521,137 L 522,137 L 522,138 L 523,138 L 524,138 L 525,138 L 525,139 L 526,139 L 526,140 L 527,140 L 527,141 L 528,141 L 528,142 L 529,142 L 529,143 L 530,143 L 530,144 L 530,145 L 531,145 L 531,146 L 532,146 L 533,146 L 533,147 L 534,147 L 534,148 L 535,148 L 535,149 L 536,149 L 536,150 L 537,150 L 537,151 L 538,151 L 539,151 L 540,151 L 540,152 L 541,152 L 542,153 L 542,154 L 541,154 L 539,154 L 538,155 L 537,155 L 536,155 L 536,156 L 536,157 L 535,157 L 535,158 L 535,159 L 535,160 L 534,160 L 535,160 L 534,160 L 534,161 L 533,161 L 534,161 L 534,162 L 533,162 L 533,163 L 532,163 L 532,164 L 531,164 L 531,165 L 530,165 L 530,166 L 531,166 L 531,167 L 530,167 L 530,168 L 530,169 L 529,169 L 529,170 L 528,170 L 528,171 L 527,171 L 526,171 L 525,171 L 525,172 L 525,173 L 524,173 L 524,174 L 523,174 L 524,174 L 523,174 L 524,175 L 523,175 L 524,175 L 523,175 L 524,175 L 524,176 L 524,177 L 523,177 L 523,178 L 523,179 L 522,179 L 523,179 L 522,179 L 522,180 L 523,180 L 523,181 L 522,181 L 522,182 L 521,182 L 521,183 L 521,184 L 522,184 L 522,185 L 522,186 L 523,186 L 523,187 L 524,187 L 524,188 L 524,189 L 523,189 L 523,190 L 523,191 L 522,191 L 523,191 L 522,191 L 523,191 L 522,191 L 522,192 L 522,193 L 522,192 L 522,193 L 521,193 L 520,193 L 520,194 L 519,194 L 518,194 L 518,195 L 519,195 L 518,195 L 518,196 L 518,195 L 517,195 L 517,196 L 516,196 L 516,195 L 516,194 L 515,194 L 515,193 L 514,193 L 514,194 L 514,193 L 513,193 L 513,192 L 512,192 L 511,192 L 511,191 L 511,190 L 510,190 L 510,191 L 510,190 L 509,190 L 509,189 L 508,189 L 508,188 L 507,188 L 506,188 L 505,188 L 505,189 L 505,188 L 505,189 L 504,189 L 503,189 L 502,189 L 501,189 L 501,188 L 500,188 L 499,188 L 499,189 L 498,189 L 497,189 L 497,188 L 496,188 L 497,188 L 497,187 L 497,186 L 497,185 L 498,185 L 498,184 L 498,183 L 498,182 L 498,181 L 499,181 L 498,181 L 497,181 L 497,180 L 496,180 L 495,180 L 495,179 L 494,179 L 494,178 L 493,178 L 493,177 L 493,176 L 493,175 L 493,174 L 492,174 L 492,173 L 492,172 L 492,171 L 491,171 L 491,170 L 492,170 L 492,169 L 491,169 L 491,168 L 491,167 L 491,166 L 491,165 L 491,164 L 491,163 L 491,162 L 491,161 L 491,160 L 491,159 L 491,158 L 490,158 L 490,157 L 489,157 L 488,157 L 488,156 L 488,155 L 487,155 L 487,154 L 486,154 L 487,154 L 486,154 L 486,153 L 487,153 L 486,153 L 486,152 L 487,152 L 487,151 L 487,150 L 486,150 L 487,150 L 487,149 L 488,149 "},"rn": {"name": "Rio Grande do Norte","path": "M 542,154 L 543,154 L 543,155 L 544,155 L 545,155 L 546,155 L 547,155 L 547,156 L 548,156 L 548,157 L 549,157 L 550,157 L 551,157 L 552,157 L 553,157 L 554,157 L 555,157 L 556,157 L 557,157 L 558,157 L 559,157 L 560,157 L 561,157 L 562,157 L 563,157 L 564,157 L 564,158 L 565,158 L 566,158 L 567,158 L 567,159 L 568,159 L 568,160 L 568,161 L 569,161 L 569,162 L 569,163 L 570,163 L 570,164 L 570,165 L 570,166 L 571,166 L 570,166 L 571,166 L 571,167 L 571,168 L 571,169 L 572,169 L 572,170 L 572,171 L 572,172 L 572,173 L 573,173 L 573,174 L 573,175 L 574,175 L 574,176 L 574,177 L 573,177 L 572,177 L 571,177 L 571,178 L 570,177 L 569,177 L 568,177 L 567,177 L 566,177 L 566,176 L 566,177 L 565,177 L 565,176 L 564,176 L 563,176 L 563,177 L 562,177 L 561,177 L 560,177 L 559,177 L 559,176 L 558,176 L 557,176 L 556,176 L 556,175 L 556,176 L 556,175 L 555,175 L 556,175 L 556,174 L 555,174 L 554,174 L 554,175 L 553,175 L 552,175 L 552,176 L 552,177 L 553,177 L 553,178 L 553,179 L 553,178 L 552,178 L 552,179 L 552,180 L 552,181 L 552,182 L 551,182 L 552,182 L 551,182 L 552,182 L 551,182 L 551,183 L 550,183 L 550,184 L 549,184 L 549,183 L 549,182 L 549,181 L 549,182 L 549,181 L 548,180 L 547,180 L 546,181 L 546,180 L 545,180 L 544,180 L 544,181 L 543,181 L 542,181 L 542,180 L 541,180 L 542,180 L 541,179 L 541,180 L 540,180 L 539,180 L 539,179 L 539,178 L 539,177 L 540,177 L 540,176 L 540,175 L 540,174 L 541,174 L 542,174 L 542,173 L 543,173 L 543,172 L 543,171 L 543,170 L 542,170 L 542,171 L 541,171 L 540,171 L 539,171 L 539,172 L 538,172 L 539,172 L 538,172 L 537,172 L 537,173 L 536,173 L 536,172 L 535,172 L 535,173 L 535,174 L 534,174 L 534,175 L 533,175 L 533,176 L 532,176 L 532,175 L 532,176 L 531,176 L 530,176 L 530,177 L 529,177 L 528,177 L 527,177 L 527,176 L 526,176 L 525,176 L 525,175 L 525,174 L 525,175 L 524,175 L 523,174 L 524,174 L 523,174 L 524,174 L 524,173 L 525,173 L 525,172 L 525,171 L 526,171 L 527,171 L 528,171 L 528,170 L 529,170 L 529,169 L 530,169 L 530,168 L 530,167 L 531,167 L 531,166 L 530,166 L 530,165 L 531,165 L 531,164 L 532,164 L 532,163 L 533,163 L 533,162 L 534,162 L 534,161 L 533,161 L 534,161 L 534,160 L 535,160 L 534,160 L 535,160 L 535,159 L 535,158 L 535,157 L 536,157 L 536,156 L 536,155 L 537,155 L 538,155 L 539,154 L 541,154 L 542,154 "},"pb": {"name": "Paraíba","path": "M 542,170 L 543,170 L 543,171 L 543,172 L 543,173 L 542,173 L 542,174 L 541,174 L 540,174 L 540,175 L 540,176 L 540,177 L 539,177 L 539,178 L 539,179 L 539,180 L 540,180 L 541,180 L 541,179 L 542,180 L 541,180 L 542,180 L 542,181 L 543,181 L 544,181 L 544,180 L 545,180 L 546,180 L 546,181 L 547,180 L 548,180 L 548,181 L 549,181 L 549,182 L 549,181 L 549,182 L 549,183 L 549,184 L 550,184 L 550,183 L 551,183 L 551,182 L 552,182 L 551,182 L 552,182 L 551,182 L 552,182 L 552,181 L 552,180 L 552,179 L 552,178 L 553,178 L 553,179 L 553,178 L 553,177 L 552,177 L 552,176 L 552,175 L 553,175 L 554,175 L 554,174 L 555,174 L 556,174 L 556,175 L 555,175 L 556,175 L 556,176 L 556,175 L 556,176 L 557,176 L 558,176 L 559,176 L 559,177 L 560,177 L 561,177 L 562,177 L 563,177 L 563,176 L 564,176 L 565,176 L 565,177 L 566,177 L 566,176 L 566,177 L 567,177 L 568,177 L 569,177 L 570,177 L 571,178 L 571,177 L 572,177 L 573,177 L 574,177 L 574,178 L 574,179 L 574,180 L 574,181 L 575,181 L 575,182 L 575,183 L 575,184 L 576,184 L 576,183 L 576,184 L 576,185 L 576,186 L 576,187 L 576,188 L 576,189 L 576,190 L 576,191 L 575,191 L 574,191 L 573,191 L 573,190 L 574,190 L 573,190 L 572,189 L 571,189 L 570,189 L 569,189 L 569,190 L 569,189 L 569,190 L 568,190 L 567,190 L 566,190 L 566,191 L 566,192 L 566,193 L 565,193 L 564,193 L 564,194 L 564,193 L 563,193 L 563,194 L 562,194 L 561,194 L 561,195 L 560,195 L 559,195 L 558,195 L 557,195 L 556,194 L 556,195 L 555,195 L 554,195 L 553,195 L 553,196 L 553,197 L 552,197 L 552,196 L 551,196 L 551,197 L 551,198 L 551,199 L 550,199 L 551,199 L 550,199 L 550,200 L 549,200 L 548,200 L 548,201 L 547,201 L 546,201 L 546,202 L 545,202 L 545,201 L 544,201 L 545,201 L 544,201 L 544,200 L 543,200 L 543,199 L 544,199 L 543,199 L 544,199 L 543,199 L 543,198 L 543,197 L 542,197 L 541,197 L 541,196 L 542,196 L 542,195 L 543,195 L 543,194 L 544,194 L 543,194 L 543,193 L 543,192 L 544,192 L 544,191 L 545,191 L 546,191 L 546,190 L 545,190 L 545,189 L 544,189 L 543,188 L 542,188 L 541,188 L 541,189 L 540,189 L 539,189 L 539,190 L 538,190 L 538,191 L 537,191 L 536,191 L 536,192 L 535,192 L 535,193 L 535,192 L 534,192 L 534,193 L 534,192 L 534,193 L 533,193 L 533,194 L 532,194 L 532,195 L 531,195 L 531,194 L 531,195 L 530,195 L 529,195 L 528,195 L 527,195 L 527,194 L 527,193 L 526,193 L 526,194 L 525,194 L 524,194 L 523,194 L 523,193 L 522,193 L 522,192 L 522,191 L 523,191 L 522,191 L 523,191 L 522,191 L 523,191 L 523,190 L 523,189 L 524,189 L 524,188 L 524,187 L 523,187 L 523,186 L 522,186 L 522,185 L 522,184 L 521,184 L 521,183 L 521,182 L 522,182 L 522,181 L 523,181 L 523,180 L 522,180 L 522,179 L 523,179 L 522,179 L 523,179 L 523,178 L 523,177 L 524,177 L 524,176 L 524,175 L 523,175 L 524,175 L 523,175 L 524,175 L 525,175 L 525,174 L 525,175 L 525,176 L 526,176 L 527,176 L 527,177 L 528,177 L 529,177 L 530,177 L 530,176 L 531,176 L 532,176 L 532,175 L 532,176 L 533,176 L 533,175 L 534,175 L 534,174 L 535,174 L 535,173 L 535,172 L 536,172 L 536,173 L 537,173 L 537,172 L 538,172 L 539,172 L 538,172 L 539,172 L 539,171 L 540,171 L 541,171 L 542,171 L 542,170 "},"pe": {"name": "Pernambuco","path": "M 542,188 L 543,188 L 544,189 L 545,189 L 545,190 L 546,190 L 546,191 L 545,191 L 544,191 L 544,192 L 543,192 L 543,193 L 543,194 L 544,194 L 543,194 L 543,195 L 542,195 L 542,196 L 541,196 L 541,197 L 542,197 L 543,197 L 543,198 L 543,199 L 544,199 L 543,199 L 544,199 L 543,199 L 543,200 L 544,200 L 544,201 L 545,201 L 544,201 L 545,201 L 545,202 L 546,202 L 546,201 L 547,201 L 548,201 L 548,200 L 549,200 L 550,200 L 550,199 L 551,199 L 550,199 L 551,199 L 551,198 L 551,197 L 551,196 L 552,196 L 552,197 L 553,197 L 553,196 L 553,195 L 554,195 L 555,195 L 556,195 L 556,194 L 557,195 L 558,195 L 559,195 L 560,195 L 561,195 L 561,194 L 562,194 L 563,194 L 563,193 L 564,193 L 564,194 L 564,193 L 565,193 L 566,193 L 566,192 L 566,191 L 566,190 L 567,190 L 568,190 L 569,190 L 569,189 L 569,190 L 569,189 L 570,189 L 571,189 L 572,189 L 573,190 L 574,190 L 573,190 L 573,191 L 574,191 L 575,191 L 576,191 L 576,192 L 576,193 L 575,193 L 576,193 L 576,194 L 576,195 L 575,195 L 576,195 L 575,195 L 576,195 L 576,196 L 576,197 L 576,198 L 575,198 L 575,199 L 575,200 L 574,200 L 574,201 L 574,202 L 574,203 L 574,204 L 573,204 L 573,205 L 573,206 L 573,205 L 573,206 L 572,206 L 572,207 L 572,208 L 572,209 L 571,209 L 571,210 L 572,210 L 571,210 L 570,210 L 569,210 L 568,210 L 568,209 L 567,209 L 566,209 L 565,209 L 565,210 L 564,210 L 563,210 L 562,210 L 563,210 L 562,210 L 562,209 L 562,210 L 561,210 L 560,210 L 559,210 L 558,210 L 558,211 L 558,212 L 557,212 L 557,213 L 556,213 L 556,214 L 555,214 L 554,214 L 555,215 L 554,215 L 553,215 L 554,215 L 553,215 L 552,215 L 552,216 L 551,216 L 552,216 L 551,216 L 550,216 L 549,215 L 548,216 L 548,215 L 547,215 L 547,216 L 546,216 L 546,217 L 545,217 L 545,216 L 545,215 L 544,215 L 543,215 L 542,215 L 542,214 L 541,214 L 541,213 L 540,213 L 540,212 L 539,212 L 539,211 L 538,211 L 537,211 L 537,212 L 536,212 L 536,211 L 536,212 L 536,211 L 536,212 L 536,211 L 536,210 L 535,210 L 534,210 L 534,211 L 534,212 L 533,212 L 533,213 L 532,213 L 532,214 L 531,214 L 530,214 L 530,215 L 529,215 L 529,216 L 528,216 L 528,215 L 528,214 L 527,214 L 527,213 L 527,212 L 528,212 L 527,212 L 527,211 L 527,212 L 526,212 L 525,212 L 525,211 L 524,211 L 525,210 L 525,209 L 524,209 L 523,210 L 523,211 L 522,211 L 522,210 L 521,209 L 520,209 L 519,209 L 518,209 L 518,208 L 517,208 L 516,208 L 515,208 L 515,207 L 515,208 L 514,208 L 514,207 L 514,206 L 514,205 L 513,205 L 512,205 L 512,206 L 511,206 L 510,206 L 510,207 L 509,207 L 508,207 L 508,208 L 508,209 L 507,209 L 506,209 L 505,209 L 505,210 L 505,211 L 506,211 L 505,211 L 505,212 L 504,212 L 503,212 L 503,213 L 502,213 L 501,213 L 501,212 L 500,212 L 500,213 L 500,214 L 500,215 L 499,215 L 499,216 L 499,217 L 498,217 L 497,217 L 496,217 L 496,218 L 495,218 L 494,218 L 493,218 L 493,217 L 493,216 L 494,216 L 493,216 L 494,216 L 494,215 L 494,214 L 494,213 L 493,213 L 492,213 L 492,212 L 492,211 L 492,210 L 491,210 L 491,209 L 490,209 L 489,209 L 490,209 L 489,209 L 488,209 L 488,208 L 488,207 L 488,208 L 488,207 L 488,208 L 487,208 L 487,207 L 487,208 L 486,208 L 485,208 L 485,207 L 486,207 L 487,207 L 487,206 L 488,206 L 488,205 L 489,205 L 489,204 L 490,204 L 490,203 L 490,204 L 491,204 L 491,203 L 492,203 L 492,202 L 493,202 L 493,201 L 494,201 L 494,200 L 495,200 L 496,200 L 496,199 L 495,199 L 496,198 L 496,197 L 496,196 L 496,195 L 495,195 L 494,194 L 495,194 L 495,193 L 495,192 L 494,192 L 494,191 L 494,190 L 495,190 L 496,189 L 496,188 L 497,188 L 497,189 L 498,189 L 499,189 L 499,188 L 500,188 L 501,188 L 501,189 L 502,189 L 503,189 L 504,189 L 505,189 L 505,188 L 505,189 L 505,188 L 506,188 L 507,188 L 508,188 L 508,189 L 509,189 L 509,190 L 510,190 L 510,191 L 510,190 L 511,190 L 511,191 L 511,192 L 512,192 L 513,192 L 513,193 L 514,193 L 514,194 L 514,193 L 515,193 L 515,194 L 516,194 L 516,195 L 516,196 L 517,196 L 517,195 L 518,195 L 518,196 L 518,195 L 519,195 L 518,195 L 518,194 L 519,194 L 520,194 L 520,193 L 521,193 L 522,193 L 522,192 L 522,193 L 522,192 L 522,193 L 523,193 L 523,194 L 524,194 L 525,194 L 526,194 L 526,193 L 527,193 L 527,194 L 527,195 L 528,195 L 529,195 L 530,195 L 531,195 L 531,194 L 531,195 L 532,195 L 532,194 L 533,194 L 533,193 L 534,193 L 534,192 L 534,193 L 534,192 L 535,192 L 535,193 L 535,192 L 536,192 L 536,191 L 537,191 L 538,191 L 538,190 L 539,190 L 539,189 L 540,189 L 541,189 L 541,188 L 542,188 "},"al": {"name": "Alagoas","path": "M 567,209 L 568,209 L 568,210 L 569,210 L 570,210 L 571,210 L 571,211 L 571,212 L 570,212 L 570,213 L 569,213 L 569,214 L 569,215 L 568,215 L 568,216 L 567,216 L 568,216 L 567,216 L 567,217 L 566,217 L 566,218 L 565,218 L 565,219 L 564,219 L 564,220 L 564,221 L 563,221 L 562,221 L 562,222 L 562,221 L 562,222 L 561,222 L 561,223 L 561,224 L 560,224 L 560,225 L 559,225 L 559,226 L 559,227 L 558,227 L 558,228 L 557,228 L 556,229 L 555,229 L 555,230 L 555,231 L 555,232 L 554,232 L 553,232 L 553,231 L 552,231 L 552,232 L 552,231 L 552,230 L 551,230 L 551,229 L 550,229 L 549,229 L 548,229 L 548,228 L 547,228 L 547,227 L 546,227 L 546,226 L 546,225 L 545,225 L 544,225 L 544,224 L 543,224 L 542,224 L 542,223 L 541,223 L 540,223 L 540,222 L 539,222 L 538,222 L 537,222 L 537,221 L 536,221 L 536,220 L 535,220 L 535,221 L 535,220 L 534,220 L 533,219 L 532,219 L 532,218 L 531,218 L 530,218 L 529,218 L 529,217 L 528,216 L 529,216 L 529,215 L 530,215 L 530,214 L 531,214 L 532,214 L 532,213 L 533,213 L 533,212 L 534,212 L 534,211 L 534,210 L 535,210 L 536,210 L 536,211 L 536,212 L 536,211 L 536,212 L 536,211 L 536,212 L 537,212 L 537,211 L 538,211 L 539,211 L 539,212 L 540,212 L 540,213 L 541,213 L 541,214 L 542,214 L 542,215 L 543,215 L 544,215 L 545,215 L 545,216 L 545,217 L 546,217 L 546,216 L 547,216 L 547,215 L 548,215 L 548,216 L 549,215 L 549,216 L 550,216 L 551,216 L 552,216 L 551,216 L 552,216 L 552,215 L 553,215 L 554,215 L 553,215 L 554,215 L 555,215 L 554,214 L 555,214 L 556,214 L 556,213 L 557,213 L 557,212 L 558,212 L 558,211 L 558,210 L 559,210 L 560,210 L 561,210 L 562,210 L 562,209 L 562,210 L 563,210 L 562,210 L 563,210 L 564,210 L 565,210 L 565,209 L 566,209 L 567,209 "},"se": {"name": "Sergipe","path": "M 532,219 L 533,219 L 534,220 L 535,220 L 535,221 L 535,220 L 536,220 L 536,221 L 537,221 L 537,222 L 538,222 L 539,222 L 540,222 L 540,223 L 541,223 L 542,223 L 542,224 L 543,224 L 544,224 L 544,225 L 545,225 L 546,225 L 546,226 L 546,227 L 547,227 L 547,228 L 548,228 L 548,229 L 549,229 L 550,229 L 551,229 L 551,230 L 552,230 L 552,231 L 552,232 L 552,231 L 553,231 L 553,232 L 554,232 L 554,233 L 553,233 L 552,233 L 551,233 L 551,234 L 550,234 L 549,235 L 548,235 L 548,236 L 547,236 L 547,237 L 546,237 L 546,238 L 545,238 L 545,239 L 545,240 L 544,240 L 544,241 L 543,241 L 543,242 L 543,243 L 542,243 L 542,244 L 541,244 L 541,245 L 541,246 L 540,246 L 539,247 L 538,247 L 537,247 L 536,247 L 535,247 L 534,247 L 534,246 L 533,246 L 534,246 L 533,246 L 533,245 L 533,246 L 533,245 L 532,245 L 532,244 L 532,243 L 532,244 L 531,244 L 531,243 L 532,243 L 532,242 L 531,242 L 531,241 L 530,241 L 531,241 L 531,240 L 530,240 L 530,239 L 529,239 L 529,238 L 528,238 L 528,237 L 528,236 L 529,236 L 529,235 L 530,235 L 530,236 L 530,235 L 530,236 L 530,235 L 530,236 L 530,235 L 531,235 L 531,236 L 532,236 L 533,236 L 533,235 L 534,235 L 534,234 L 534,233 L 534,232 L 534,231 L 534,230 L 535,230 L 535,228 L 535,227 L 534,227 L 534,226 L 534,225 L 533,225 L 532,225 L 532,224 L 532,223 L 531,223 L 531,222 L 531,221 L 532,221 L 532,220 L 531,220 L 531,219 L 532,219 "},"ba": {"name": "Bahia","path": "M 513,205 L 514,205 L 514,206 L 514,207 L 514,208 L 515,208 L 515,207 L 515,208 L 516,208 L 517,208 L 518,208 L 518,209 L 519,209 L 520,209 L 521,209 L 522,210 L 522,211 L 523,211 L 523,210 L 524,209 L 525,209 L 525,210 L 524,211 L 525,211 L 525,212 L 526,212 L 527,212 L 527,211 L 527,212 L 528,212 L 527,212 L 527,213 L 527,214 L 528,214 L 528,215 L 528,216 L 529,217 L 529,218 L 530,218 L 531,218 L 532,218 L 532,219 L 531,219 L 531,220 L 532,220 L 532,221 L 531,221 L 531,222 L 531,223 L 532,223 L 532,224 L 532,225 L 533,225 L 534,225 L 534,226 L 534,227 L 535,227 L 535,228 L 535,230 L 534,230 L 534,231 L 534,232 L 534,233 L 534,234 L 534,235 L 533,235 L 533,236 L 532,236 L 531,236 L 531,235 L 530,235 L 530,236 L 530,235 L 530,236 L 530,235 L 530,236 L 530,235 L 529,235 L 529,236 L 528,236 L 528,237 L 528,238 L 529,238 L 529,239 L 530,239 L 530,240 L 531,240 L 531,241 L 530,241 L 531,241 L 531,242 L 532,242 L 532,243 L 531,243 L 531,244 L 532,244 L 532,243 L 532,244 L 532,245 L 533,245 L 533,246 L 533,245 L 533,246 L 534,246 L 533,246 L 534,246 L 534,247 L 535,247 L 536,247 L 537,247 L 538,247 L 539,247 L 540,246 L 541,246 L 540,246 L 540,247 L 540,248 L 539,248 L 539,249 L 538,250 L 538,251 L 538,252 L 537,252 L 537,253 L 537,254 L 536,254 L 536,255 L 535,255 L 535,256 L 535,257 L 534,257 L 534,258 L 533,258 L 533,259 L 533,260 L 532,260 L 532,261 L 531,261 L 531,262 L 531,263 L 530,263 L 530,264 L 529,264 L 529,265 L 528,265 L 528,266 L 527,266 L 527,267 L 526,267 L 525,267 L 524,267 L 523,267 L 523,268 L 522,268 L 523,268 L 522,268 L 521,268 L 521,269 L 521,268 L 521,269 L 521,268 L 521,269 L 520,269 L 520,270 L 519,270 L 518,271 L 518,272 L 518,273 L 519,273 L 519,272 L 519,273 L 519,274 L 519,275 L 519,276 L 519,275 L 519,276 L 519,275 L 519,276 L 519,277 L 519,276 L 518,276 L 518,277 L 518,278 L 518,279 L 518,280 L 519,280 L 519,281 L 518,281 L 518,282 L 518,283 L 518,284 L 518,285 L 518,286 L 518,287 L 517,287 L 517,288 L 517,289 L 517,290 L 517,291 L 517,292 L 517,293 L 517,294 L 518,294 L 518,295 L 518,296 L 518,297 L 518,298 L 518,299 L 518,300 L 518,301 L 518,302 L 518,303 L 519,303 L 519,304 L 519,305 L 519,306 L 519,307 L 520,307 L 519,307 L 519,308 L 519,309 L 519,310 L 518,310 L 518,311 L 518,312 L 517,312 L 517,313 L 517,314 L 518,314 L 517,314 L 517,315 L 517,316 L 517,317 L 516,317 L 516,318 L 516,319 L 516,320 L 516,321 L 516,322 L 516,323 L 515,323 L 515,324 L 515,325 L 515,326 L 515,327 L 515,328 L 515,329 L 515,330 L 515,331 L 515,332 L 516,332 L 516,333 L 515,333 L 515,334 L 514,334 L 514,335 L 513,335 L 513,336 L 512,336 L 511,336 L 511,337 L 510,337 L 510,338 L 510,339 L 509,339 L 509,340 L 509,341 L 508,341 L 508,342 L 508,341 L 507,341 L 506,340 L 505,339 L 504,339 L 503,338 L 502,338 L 502,337 L 501,337 L 501,336 L 500,336 L 501,335 L 501,334 L 501,333 L 500,333 L 500,332 L 499,332 L 499,331 L 499,332 L 499,331 L 498,331 L 498,332 L 498,331 L 497,331 L 497,330 L 497,329 L 496,329 L 495,329 L 495,328 L 496,328 L 495,328 L 495,327 L 496,327 L 496,326 L 496,325 L 496,324 L 496,323 L 496,322 L 497,322 L 497,321 L 498,321 L 499,321 L 499,322 L 499,321 L 500,321 L 500,322 L 500,321 L 500,320 L 499,320 L 499,319 L 500,319 L 499,319 L 499,318 L 500,318 L 500,317 L 501,317 L 502,317 L 501,317 L 501,316 L 502,316 L 502,315 L 503,315 L 503,314 L 504,314 L 504,313 L 504,314 L 504,313 L 505,313 L 505,312 L 505,311 L 506,311 L 506,310 L 505,310 L 505,309 L 504,309 L 503,309 L 503,308 L 502,308 L 501,308 L 501,307 L 501,306 L 500,306 L 499,306 L 499,307 L 499,306 L 499,307 L 499,306 L 498,306 L 497,306 L 496,306 L 495,306 L 495,305 L 494,305 L 494,304 L 494,305 L 493,305 L 494,305 L 493,305 L 493,304 L 492,304 L 492,305 L 491,305 L 491,304 L 490,304 L 490,305 L 489,305 L 488,305 L 488,306 L 487,306 L 487,305 L 486,305 L 485,305 L 485,303 L 485,302 L 484,302 L 484,301 L 483,301 L 483,300 L 479,297 L 479,296 L 479,297 L 478,297 L 477,297 L 477,298 L 477,297 L 476,297 L 475,297 L 475,298 L 475,297 L 474,297 L 474,296 L 473,296 L 473,297 L 473,296 L 473,297 L 473,296 L 473,297 L 472,297 L 472,296 L 471,296 L 470,296 L 470,295 L 469,295 L 468,295 L 468,294 L 467,294 L 466,294 L 466,293 L 465,293 L 464,292 L 463,292 L 463,291 L 462,291 L 461,291 L 460,291 L 460,290 L 459,290 L 458,290 L 458,291 L 458,290 L 458,291 L 457,291 L 456,291 L 456,292 L 455,292 L 456,292 L 455,292 L 455,293 L 455,292 L 454,292 L 453,292 L 453,291 L 452,291 L 451,291 L 450,291 L 450,290 L 450,289 L 450,288 L 450,287 L 451,287 L 451,286 L 451,285 L 451,286 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 449,285 L 448,285 L 447,285 L 446,285 L 445,285 L 445,284 L 445,285 L 444,285 L 443,285 L 442,285 L 442,286 L 442,285 L 442,286 L 441,286 L 440,286 L 439,286 L 439,287 L 438,287 L 438,288 L 437,288 L 436,288 L 437,288 L 437,289 L 436,289 L 436,290 L 436,289 L 436,290 L 435,290 L 436,290 L 435,290 L 434,290 L 435,290 L 434,290 L 434,291 L 433,291 L 433,292 L 432,292 L 432,291 L 432,292 L 432,291 L 432,292 L 432,291 L 432,292 L 431,292 L 430,292 L 430,293 L 429,293 L 429,294 L 428,294 L 427,294 L 427,295 L 427,294 L 426,294 L 426,295 L 425,295 L 425,296 L 425,295 L 425,296 L 424,296 L 424,297 L 423,297 L 422,297 L 421,297 L 421,298 L 420,298 L 420,299 L 419,299 L 419,298 L 419,299 L 419,298 L 420,297 L 420,296 L 421,296 L 421,295 L 421,294 L 420,294 L 420,293 L 420,292 L 420,291 L 420,290 L 421,290 L 420,290 L 420,289 L 421,289 L 420,289 L 421,289 L 420,288 L 420,287 L 421,287 L 421,286 L 422,286 L 421,286 L 421,285 L 420,285 L 420,284 L 419,284 L 420,284 L 419,284 L 419,283 L 418,283 L 417,283 L 417,282 L 417,281 L 417,280 L 417,279 L 417,278 L 416,278 L 417,278 L 417,277 L 417,276 L 418,276 L 418,275 L 417,275 L 417,274 L 417,273 L 418,273 L 418,272 L 419,272 L 420,272 L 420,271 L 419,271 L 418,271 L 418,272 L 417,272 L 416,272 L 416,271 L 416,270 L 416,269 L 416,268 L 416,267 L 417,267 L 418,267 L 419,267 L 419,266 L 418,266 L 417,266 L 416,266 L 416,267 L 416,266 L 416,265 L 417,265 L 416,265 L 416,264 L 417,264 L 417,263 L 416,263 L 417,263 L 417,262 L 416,262 L 417,262 L 416,262 L 416,261 L 417,261 L 418,261 L 418,260 L 417,260 L 417,259 L 416,259 L 416,258 L 415,258 L 416,258 L 416,257 L 415,257 L 415,256 L 415,255 L 415,254 L 415,253 L 416,253 L 417,253 L 417,252 L 418,252 L 417,252 L 416,252 L 415,252 L 415,251 L 416,251 L 416,250 L 415,250 L 416,250 L 416,249 L 416,248 L 417,248 L 418,249 L 418,248 L 418,249 L 418,248 L 418,249 L 418,248 L 419,248 L 418,248 L 417,248 L 417,247 L 416,247 L 415,247 L 414,247 L 414,246 L 413,246 L 413,245 L 412,245 L 412,244 L 412,243 L 413,243 L 413,242 L 414,242 L 414,241 L 414,240 L 415,240 L 415,239 L 416,239 L 416,238 L 416,237 L 417,237 L 417,236 L 418,236 L 418,235 L 417,235 L 418,235 L 418,234 L 419,234 L 420,234 L 420,233 L 421,233 L 422,233 L 422,232 L 423,232 L 423,231 L 423,230 L 424,230 L 424,229 L 425,229 L 424,229 L 424,228 L 425,228 L 425,227 L 426,227 L 426,228 L 426,229 L 427,229 L 427,230 L 428,230 L 428,231 L 428,232 L 429,232 L 428,232 L 428,233 L 428,234 L 428,235 L 429,235 L 429,236 L 430,236 L 431,236 L 431,237 L 432,237 L 433,237 L 434,237 L 434,238 L 435,238 L 436,238 L 437,238 L 437,237 L 438,237 L 438,236 L 439,236 L 439,235 L 440,235 L 440,234 L 441,234 L 441,235 L 441,234 L 442,234 L 443,234 L 443,233 L 444,233 L 444,234 L 445,234 L 446,234 L 447,234 L 447,233 L 448,232 L 448,231 L 448,232 L 449,232 L 449,231 L 450,231 L 450,230 L 450,229 L 451,229 L 451,228 L 451,227 L 452,227 L 452,226 L 453,226 L 453,225 L 452,225 L 452,224 L 453,224 L 453,223 L 452,223 L 451,222 L 451,221 L 450,221 L 450,220 L 450,219 L 451,219 L 451,218 L 452,218 L 452,217 L 453,217 L 454,216 L 455,216 L 455,215 L 456,215 L 456,216 L 457,216 L 457,217 L 458,217 L 458,218 L 458,217 L 459,217 L 460,217 L 461,217 L 462,217 L 463,217 L 463,218 L 463,219 L 464,219 L 464,220 L 465,220 L 466,220 L 466,219 L 467,219 L 468,219 L 469,219 L 469,218 L 470,218 L 470,217 L 471,217 L 471,216 L 472,216 L 473,216 L 474,216 L 475,216 L 475,215 L 476,215 L 477,215 L 478,215 L 478,214 L 479,214 L 479,213 L 480,213 L 480,212 L 481,212 L 481,211 L 482,211 L 483,210 L 483,209 L 484,209 L 484,208 L 485,208 L 486,208 L 487,208 L 487,207 L 487,208 L 488,208 L 488,207 L 488,208 L 488,207 L 488,208 L 488,209 L 489,209 L 490,209 L 489,209 L 490,209 L 491,209 L 491,210 L 492,210 L 492,211 L 492,212 L 492,213 L 493,213 L 494,213 L 494,214 L 494,215 L 494,216 L 493,216 L 494,216 L 493,216 L 493,217 L 493,218 L 494,218 L 495,218 L 496,218 L 496,217 L 497,217 L 498,217 L 499,217 L 499,216 L 499,215 L 500,215 L 500,214 L 500,213 L 500,212 L 501,212 L 501,213 L 502,213 L 503,213 L 503,212 L 504,212 L 505,212 L 505,211 L 506,211 L 505,211 L 505,210 L 505,209 L 506,209 L 507,209 L 508,209 L 508,208 L 508,207 L 509,207 L 510,207 L 510,206 L 511,206 L 512,206 L 512,205 L 513,205 "},"mg": {"name": "Minas Gerais","path": "M 478,375 L 478,376 L 477,376 L 477,377 L 476,377 L 477,377 L 476,377 L 476,378 L 476,377 L 476,378 L 475,378 L 474,378 L 474,379 L 475,379 L 474,379 L 474,380 L 473,380 L 473,381 L 473,382 L 473,383 L 473,384 L 472,384 L 473,384 L 472,384 L 472,385 L 472,386 L 471,386 L 471,387 L 471,388 L 471,387 L 471,388 L 472,388 L 472,389 L 471,389 L 470,389 L 469,389 L 469,390 L 468,390 L 467,390 L 467,391 L 466,391 L 465,391 L 465,392 L 464,392 L 463,392 L 463,393 L 462,393 L 461,393 L 462,393 L 461,393 L 461,394 L 460,394 L 460,393 L 459,393 L 458,393 L 457,393 L 457,392 L 457,393 L 457,392 L 457,393 L 456,393 L 455,393 L 455,394 L 454,394 L 454,393 L 454,394 L 453,394 L 453,393 L 453,394 L 453,393 L 453,394 L 453,393 L 452,393 L 452,394 L 452,393 L 452,394 L 452,393 L 452,394 L 451,394 L 452,394 L 451,394 L 451,393 L 451,394 L 450,394 L 449,394 L 448,394 L 448,395 L 447,395 L 446,395 L 446,396 L 446,395 L 446,396 L 445,396 L 444,396 L 445,396 L 444,396 L 443,396 L 442,396 L 441,396 L 442,396 L 441,396 L 441,397 L 440,397 L 439,397 L 439,398 L 438,398 L 438,397 L 438,398 L 437,398 L 436,398 L 436,399 L 435,399 L 434,399 L 433,399 L 432,399 L 432,400 L 431,400 L 431,401 L 430,401 L 429,401 L 429,402 L 428,401 L 429,401 L 428,401 L 429,401 L 428,401 L 427,401 L 427,402 L 426,402 L 426,401 L 425,401 L 425,402 L 425,401 L 425,400 L 425,401 L 424,401 L 424,400 L 424,401 L 425,401 L 425,402 L 424,402 L 423,402 L 423,403 L 424,403 L 424,402 L 424,403 L 424,402 L 424,403 L 424,402 L 424,403 L 424,404 L 424,403 L 424,404 L 423,404 L 424,404 L 423,404 L 422,404 L 422,405 L 422,404 L 421,404 L 421,405 L 420,405 L 419,405 L 418,405 L 418,404 L 418,405 L 418,404 L 418,405 L 417,405 L 416,405 L 415,405 L 415,404 L 415,403 L 416,403 L 415,403 L 414,403 L 414,402 L 415,402 L 415,401 L 414,401 L 415,401 L 414,401 L 415,401 L 414,401 L 414,400 L 415,400 L 414,400 L 413,400 L 413,399 L 412,399 L 411,398 L 411,397 L 410,397 L 410,396 L 411,396 L 410,396 L 411,396 L 411,395 L 412,395 L 412,394 L 411,394 L 410,394 L 410,393 L 410,394 L 411,393 L 412,393 L 412,392 L 411,392 L 411,391 L 411,390 L 411,389 L 412,389 L 412,388 L 413,388 L 413,387 L 413,386 L 413,385 L 412,385 L 412,384 L 412,385 L 412,384 L 411,384 L 410,384 L 409,384 L 408,384 L 407,384 L 406,384 L 406,383 L 406,382 L 405,382 L 405,381 L 406,381 L 405,381 L 405,382 L 405,381 L 405,380 L 404,380 L 404,379 L 404,378 L 403,377 L 403,376 L 403,375 L 404,375 L 404,374 L 405,374 L 405,373 L 404,373 L 404,372 L 403,372 L 403,371 L 402,371 L 402,370 L 402,369 L 403,369 L 403,368 L 403,367 L 402,367 L 402,366 L 401,366 L 400,365 L 400,364 L 399,364 L 399,365 L 398,365 L 397,365 L 397,364 L 396,364 L 395,364 L 395,365 L 395,364 L 394,364 L 394,365 L 394,366 L 393,366 L 393,365 L 393,366 L 392,366 L 392,367 L 391,367 L 391,366 L 390,366 L 390,365 L 389,365 L 389,366 L 389,367 L 388,367 L 388,366 L 387,366 L 386,366 L 386,367 L 385,367 L 385,366 L 384,366 L 384,367 L 383,367 L 382,367 L 381,367 L 381,368 L 380,368 L 380,369 L 380,370 L 380,371 L 380,370 L 379,370 L 379,369 L 379,368 L 379,367 L 378,367 L 377,367 L 377,368 L 377,369 L 376,369 L 375,369 L 375,368 L 375,367 L 374,367 L 374,366 L 374,365 L 375,365 L 375,364 L 374,364 L 373,364 L 372,364 L 372,363 L 371,363 L 370,363 L 370,364 L 369,364 L 368,364 L 367,364 L 366,364 L 365,364 L 364,364 L 364,363 L 363,363 L 362,363 L 361,363 L 360,363 L 360,362 L 359,362 L 358,362 L 357,362 L 356,362 L 356,363 L 355,363 L 355,364 L 354,364 L 353,364 L 352,364 L 352,365 L 351,365 L 351,366 L 351,365 L 350,365 L 351,365 L 351,364 L 350,364 L 351,364 L 351,363 L 350,363 L 350,362 L 350,361 L 350,360 L 351,360 L 351,359 L 352,359 L 352,358 L 351,358 L 351,357 L 352,357 L 353,358 L 353,357 L 352,357 L 352,356 L 353,356 L 353,355 L 354,355 L 354,354 L 354,353 L 355,353 L 356,353 L 357,353 L 357,352 L 358,352 L 358,351 L 358,350 L 358,349 L 359,349 L 359,348 L 360,348 L 360,347 L 360,346 L 361,346 L 362,346 L 363,346 L 364,346 L 364,345 L 365,345 L 366,345 L 367,345 L 367,346 L 368,346 L 368,345 L 369,345 L 370,345 L 369,345 L 370,345 L 370,344 L 371,344 L 372,344 L 372,345 L 373,345 L 373,346 L 373,345 L 374,345 L 375,345 L 375,344 L 375,343 L 376,343 L 376,342 L 377,342 L 377,343 L 378,343 L 378,342 L 379,342 L 379,341 L 380,341 L 381,341 L 381,342 L 382,342 L 383,342 L 384,342 L 384,341 L 385,341 L 385,342 L 386,342 L 387,342 L 388,342 L 389,342 L 389,341 L 389,342 L 390,342 L 390,343 L 391,343 L 392,343 L 393,343 L 393,344 L 394,343 L 395,343 L 395,342 L 395,343 L 396,343 L 396,342 L 397,342 L 397,341 L 397,342 L 397,341 L 398,341 L 398,340 L 399,340 L 399,339 L 399,340 L 399,339 L 399,340 L 400,340 L 400,339 L 401,339 L 401,338 L 402,338 L 402,337 L 402,336 L 402,335 L 401,335 L 401,334 L 402,334 L 401,334 L 402,334 L 401,334 L 402,334 L 402,333 L 402,332 L 403,332 L 402,332 L 403,332 L 402,332 L 403,332 L 403,331 L 402,331 L 402,330 L 401,330 L 400,330 L 399,330 L 399,329 L 399,328 L 399,327 L 399,328 L 400,328 L 400,327 L 401,327 L 400,327 L 401,327 L 400,327 L 401,327 L 401,326 L 402,326 L 401,326 L 401,325 L 401,326 L 401,325 L 402,325 L 402,326 L 402,325 L 401,325 L 402,325 L 401,325 L 402,325 L 403,325 L 402,325 L 403,325 L 402,325 L 402,324 L 403,324 L 404,324 L 403,324 L 404,324 L 404,323 L 404,324 L 404,323 L 405,323 L 404,323 L 405,323 L 404,323 L 404,322 L 404,321 L 403,321 L 404,321 L 404,320 L 403,321 L 403,320 L 404,320 L 403,320 L 403,319 L 403,318 L 403,319 L 403,318 L 402,318 L 402,317 L 402,318 L 402,317 L 401,317 L 400,317 L 400,316 L 400,315 L 400,314 L 401,314 L 401,313 L 402,313 L 402,312 L 402,311 L 401,311 L 402,311 L 402,310 L 402,309 L 403,309 L 404,309 L 403,309 L 404,309 L 403,309 L 404,309 L 404,308 L 405,308 L 406,308 L 407,308 L 408,307 L 409,307 L 409,306 L 409,305 L 408,305 L 408,304 L 408,303 L 407,303 L 407,302 L 407,301 L 408,301 L 408,300 L 409,300 L 409,299 L 408,299 L 408,298 L 408,299 L 407,299 L 407,298 L 408,297 L 408,296 L 407,296 L 408,296 L 408,295 L 409,295 L 410,295 L 410,296 L 411,296 L 412,296 L 413,296 L 413,295 L 413,294 L 413,293 L 413,292 L 412,292 L 413,292 L 413,291 L 414,291 L 414,292 L 415,292 L 416,292 L 416,293 L 416,294 L 417,294 L 418,294 L 419,294 L 420,294 L 420,293 L 420,294 L 421,294 L 421,295 L 421,296 L 420,296 L 420,297 L 419,298 L 419,299 L 419,298 L 419,299 L 420,299 L 420,298 L 421,298 L 421,297 L 422,297 L 423,297 L 424,297 L 424,296 L 425,296 L 425,295 L 425,296 L 425,295 L 426,295 L 426,294 L 427,294 L 427,295 L 427,294 L 428,294 L 429,294 L 429,293 L 430,293 L 430,292 L 431,292 L 432,292 L 432,291 L 432,292 L 432,291 L 432,292 L 432,291 L 432,292 L 433,292 L 433,291 L 434,291 L 434,290 L 435,290 L 434,290 L 435,290 L 436,290 L 435,290 L 436,290 L 436,289 L 436,290 L 436,289 L 437,289 L 437,288 L 436,288 L 437,288 L 438,288 L 438,287 L 439,287 L 439,286 L 440,286 L 441,286 L 442,286 L 442,285 L 442,286 L 442,285 L 443,285 L 444,285 L 445,285 L 445,284 L 445,285 L 446,285 L 447,285 L 448,285 L 449,285 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 450,285 L 450,286 L 451,286 L 451,285 L 451,286 L 451,287 L 450,287 L 450,288 L 450,289 L 450,290 L 450,291 L 451,291 L 452,291 L 453,291 L 453,292 L 454,292 L 455,292 L 455,293 L 455,292 L 456,292 L 455,292 L 456,292 L 456,291 L 457,291 L 458,291 L 458,290 L 458,291 L 458,290 L 459,290 L 460,290 L 460,291 L 461,291 L 462,291 L 463,291 L 463,292 L 464,292 L 465,293 L 466,293 L 466,294 L 467,294 L 468,294 L 468,295 L 469,295 L 470,295 L 470,296 L 471,296 L 472,296 L 472,297 L 473,297 L 473,296 L 473,297 L 473,296 L 473,297 L 473,296 L 474,296 L 474,297 L 475,297 L 475,298 L 475,297 L 476,297 L 477,297 L 477,298 L 477,297 L 478,297 L 479,297 L 479,296 L 479,297 L 480,298 L 481,298 L 483,300 L 483,301 L 484,301 L 484,302 L 485,302 L 485,303 L 485,304 L 485,305 L 486,305 L 487,305 L 487,306 L 488,306 L 488,305 L 489,305 L 490,305 L 490,304 L 491,304 L 491,305 L 492,305 L 492,304 L 493,304 L 493,305 L 494,305 L 493,305 L 494,305 L 494,304 L 494,305 L 495,305 L 495,306 L 496,306 L 497,306 L 498,306 L 499,306 L 499,307 L 499,306 L 499,307 L 499,306 L 500,306 L 501,306 L 501,307 L 501,308 L 502,308 L 503,308 L 503,309 L 504,309 L 505,309 L 505,310 L 506,310 L 506,311 L 505,311 L 505,312 L 505,313 L 504,313 L 504,314 L 504,313 L 504,314 L 503,314 L 503,315 L 502,315 L 502,316 L 501,316 L 501,317 L 502,317 L 501,317 L 500,317 L 500,318 L 499,318 L 499,319 L 500,319 L 499,319 L 499,320 L 500,320 L 500,321 L 500,322 L 500,321 L 499,321 L 499,322 L 499,321 L 498,321 L 497,321 L 497,322 L 496,322 L 496,323 L 496,324 L 496,325 L 496,326 L 496,327 L 495,327 L 495,328 L 496,328 L 495,328 L 495,329 L 496,329 L 497,329 L 497,330 L 497,331 L 498,331 L 498,332 L 498,331 L 499,331 L 499,332 L 499,331 L 499,332 L 500,332 L 500,333 L 501,333 L 501,334 L 501,335 L 500,336 L 501,336 L 501,337 L 501,336 L 500,336 L 499,336 L 498,336 L 497,336 L 497,335 L 496,335 L 496,336 L 495,336 L 495,337 L 494,337 L 493,337 L 493,336 L 493,337 L 493,336 L 492,336 L 492,337 L 492,336 L 491,336 L 491,337 L 493,338 L 493,339 L 492,339 L 492,338 L 492,339 L 491,339 L 491,338 L 491,339 L 490,339 L 489,339 L 489,340 L 488,340 L 489,340 L 488,340 L 489,340 L 488,340 L 488,341 L 488,342 L 488,343 L 487,343 L 489,343 L 490,343 L 490,344 L 489,344 L 489,345 L 489,346 L 490,346 L 491,346 L 491,347 L 491,348 L 490,348 L 490,349 L 490,348 L 489,348 L 489,349 L 488,349 L 488,348 L 487,348 L 486,348 L 487,348 L 486,348 L 486,349 L 487,349 L 486,349 L 487,349 L 488,349 L 488,350 L 489,350 L 490,350 L 489,351 L 489,352 L 490,352 L 490,353 L 491,353 L 491,354 L 491,355 L 491,356 L 490,356 L 490,357 L 491,357 L 490,357 L 490,358 L 489,358 L 489,357 L 489,358 L 489,359 L 488,359 L 488,360 L 487,360 L 487,361 L 487,362 L 488,362 L 487,362 L 487,363 L 487,364 L 486,364 L 485,364 L 486,365 L 485,365 L 486,365 L 485,365 L 485,366 L 485,367 L 484,367 L 484,368 L 483,368 L 482,368 L 481,368 L 480,368 L 479,368 L 479,369 L 478,369 L 478,370 L 479,370 L 479,371 L 478,371 L 478,372 L 479,372 L 478,372 L 478,373 L 479,374 L 479,373 L 479,374 L 478,374 L 479,374 L 478,374 L 478,375 "},"es": {"name": "Espírito Santo","path": "M 478,375 L 478,374 L 479,374 L 478,374 L 479,374 L 479,373 L 479,374 L 478,373 L 478,372 L 479,372 L 478,372 L 478,371 L 479,371 L 479,370 L 478,370 L 478,369 L 479,369 L 479,368 L 480,368 L 481,368 L 482,368 L 483,368 L 484,368 L 484,367 L 485,367 L 485,366 L 485,365 L 486,365 L 485,365 L 486,365 L 485,364 L 486,364 L 487,364 L 487,363 L 487,362 L 488,362 L 487,362 L 487,361 L 487,360 L 488,360 L 488,359 L 489,359 L 489,358 L 489,357 L 489,358 L 490,358 L 490,357 L 491,357 L 490,357 L 490,356 L 491,356 L 491,355 L 491,354 L 491,353 L 490,353 L 490,352 L 489,352 L 489,351 L 490,350 L 489,350 L 488,350 L 488,349 L 487,349 L 486,349 L 487,349 L 486,349 L 486,348 L 487,348 L 486,348 L 487,348 L 488,348 L 488,349 L 489,349 L 489,348 L 490,348 L 490,349 L 490,348 L 491,348 L 491,347 L 491,346 L 490,346 L 489,346 L 489,345 L 489,344 L 490,344 L 490,343 L 489,343 L 487,343 L 488,343 L 488,342 L 488,341 L 488,340 L 489,340 L 488,340 L 489,340 L 488,340 L 489,340 L 489,339 L 490,339 L 491,339 L 491,338 L 491,339 L 492,339 L 492,338 L 492,339 L 493,339 L 493,338 L 491,337 L 491,336 L 492,336 L 492,337 L 492,336 L 493,336 L 493,337 L 493,336 L 493,337 L 494,337 L 495,337 L 495,336 L 496,336 L 496,335 L 497,335 L 497,336 L 498,336 L 499,336 L 500,336 L 501,336 L 501,337 L 502,337 L 502,338 L 503,338 L 505,339 L 506,340 L 507,340 L 508,341 L 508,342 L 508,343 L 508,344 L 507,345 L 508,345 L 507,346 L 507,347 L 507,348 L 507,349 L 507,350 L 507,351 L 508,351 L 508,352 L 508,353 L 508,354 L 508,355 L 508,356 L 508,357 L 507,357 L 507,358 L 507,359 L 506,359 L 506,360 L 505,360 L 505,361 L 504,361 L 503,362 L 503,363 L 502,363 L 503,363 L 502,363 L 502,364 L 502,365 L 501,365 L 501,366 L 501,367 L 501,368 L 501,369 L 500,369 L 500,368 L 500,369 L 500,370 L 499,370 L 499,371 L 499,372 L 498,372 L 498,373 L 498,374 L 498,373 L 498,374 L 498,373 L 498,374 L 497,373 L 498,373 L 497,373 L 497,374 L 497,373 L 497,374 L 497,375 L 496,375 L 497,375 L 496,375 L 496,376 L 495,376 L 494,376 L 494,377 L 494,376 L 493,376 L 493,377 L 493,378 L 492,378 L 493,378 L 493,379 L 492,379 L 492,380 L 492,381 L 491,381 L 491,382 L 490,382 L 490,383 L 490,382 L 490,383 L 490,382 L 489,382 L 488,382 L 487,382 L 486,382 L 485,382 L 485,381 L 485,382 L 485,381 L 484,381 L 484,382 L 484,381 L 483,381 L 482,381 L 481,381 L 481,380 L 480,380 L 480,379 L 480,378 L 480,377 L 479,377 L 479,376 L 480,376 L 479,376 L 478,376 L 478,375 L 478,376 L 478,375 L 478,376 L 478,375 "},"rj": {"name": "Rio de Janeiro","path": "M 478,375 L 478,376 L 478,375 L 478,376 L 478,375 L 478,376 L 479,376 L 480,376 L 479,376 L 479,377 L 480,377 L 480,378 L 480,379 L 480,380 L 481,380 L 481,381 L 482,381 L 483,381 L 484,381 L 484,382 L 484,381 L 485,381 L 485,382 L 485,381 L 485,382 L 486,382 L 487,382 L 488,382 L 489,382 L 490,382 L 490,383 L 490,382 L 490,383 L 490,384 L 490,385 L 489,385 L 489,386 L 489,387 L 490,387 L 490,388 L 490,389 L 490,390 L 490,391 L 490,392 L 490,393 L 489,393 L 488,394 L 487,394 L 486,395 L 485,395 L 484,395 L 483,395 L 483,396 L 482,396 L 481,396 L 480,396 L 480,397 L 479,397 L 479,398 L 478,398 L 478,399 L 477,399 L 477,400 L 476,400 L 476,401 L 476,402 L 476,403 L 477,403 L 478,403 L 477,403 L 478,403 L 477,403 L 477,404 L 476,404 L 476,405 L 476,404 L 476,405 L 476,404 L 476,405 L 475,405 L 475,406 L 476,406 L 475,406 L 474,406 L 473,406 L 472,406 L 472,405 L 471,405 L 470,405 L 469,405 L 469,406 L 469,405 L 468,405 L 467,405 L 467,406 L 466,406 L 465,406 L 464,406 L 463,406 L 462,406 L 461,406 L 460,406 L 460,405 L 460,406 L 460,405 L 461,405 L 460,405 L 461,405 L 460,405 L 461,405 L 460,405 L 460,404 L 460,405 L 460,404 L 461,404 L 460,404 L 461,404 L 461,403 L 462,403 L 462,402 L 461,402 L 460,402 L 460,403 L 459,403 L 458,403 L 458,404 L 459,404 L 459,405 L 460,405 L 460,406 L 459,406 L 458,406 L 458,407 L 457,407 L 456,407 L 455,407 L 456,407 L 455,407 L 454,407 L 453,407 L 452,407 L 451,407 L 450,407 L 449,407 L 449,408 L 448,408 L 448,407 L 449,407 L 450,407 L 449,407 L 450,407 L 451,407 L 452,407 L 453,407 L 454,407 L 453,407 L 453,406 L 452,406 L 451,405 L 450,405 L 449,405 L 448,405 L 448,406 L 447,406 L 448,406 L 447,406 L 448,406 L 447,406 L 447,407 L 446,407 L 445,407 L 445,406 L 444,406 L 444,407 L 444,406 L 444,407 L 443,407 L 443,406 L 444,406 L 443,406 L 444,406 L 443,406 L 444,406 L 444,405 L 443,405 L 443,406 L 442,406 L 442,407 L 442,406 L 441,406 L 441,407 L 440,407 L 439,407 L 439,408 L 438,408 L 439,408 L 438,408 L 438,409 L 438,410 L 439,409 L 440,409 L 439,409 L 439,410 L 439,409 L 439,410 L 438,410 L 439,410 L 440,410 L 439,410 L 439,411 L 439,410 L 439,411 L 439,410 L 440,410 L 441,410 L 441,411 L 441,410 L 441,411 L 440,411 L 439,411 L 438,411 L 437,411 L 437,410 L 436,410 L 436,409 L 437,409 L 437,408 L 437,407 L 437,406 L 438,406 L 438,405 L 439,405 L 440,405 L 441,405 L 441,404 L 442,404 L 441,404 L 441,405 L 442,405 L 441,405 L 442,405 L 442,404 L 443,404 L 444,404 L 445,404 L 445,403 L 445,402 L 446,402 L 445,401 L 446,401 L 445,401 L 444,401 L 443,401 L 443,400 L 443,401 L 443,400 L 443,401 L 442,401 L 443,401 L 442,401 L 441,401 L 440,401 L 439,401 L 439,400 L 438,400 L 438,399 L 438,398 L 437,398 L 438,398 L 438,397 L 438,398 L 439,398 L 439,397 L 440,397 L 441,397 L 441,396 L 442,396 L 441,396 L 442,396 L 443,396 L 444,396 L 445,396 L 444,396 L 445,396 L 446,396 L 446,395 L 446,396 L 446,395 L 447,395 L 448,395 L 448,394 L 449,394 L 450,394 L 451,394 L 451,393 L 451,394 L 452,394 L 451,394 L 452,394 L 452,393 L 452,394 L 452,393 L 452,394 L 452,393 L 453,393 L 453,394 L 453,393 L 453,394 L 453,393 L 453,394 L 454,394 L 454,393 L 454,394 L 455,394 L 455,393 L 456,393 L 457,393 L 457,392 L 457,393 L 457,392 L 457,393 L 458,393 L 459,393 L 460,393 L 460,394 L 461,394 L 461,393 L 462,393 L 461,393 L 462,393 L 463,393 L 463,392 L 464,392 L 465,392 L 465,391 L 466,391 L 467,391 L 467,390 L 468,390 L 469,390 L 469,389 L 470,389 L 471,389 L 472,389 L 472,388 L 471,388 L 471,387 L 471,388 L 471,387 L 471,386 L 472,386 L 472,385 L 472,384 L 473,384 L 472,384 L 473,384 L 473,383 L 473,382 L 473,381 L 473,380 L 474,380 L 474,379 L 475,379 L 474,379 L 474,378 L 475,378 L 476,378 L 476,377 L 476,378 L 476,377 L 477,377 L 476,377 L 477,377 L 477,376 L 478,376 L 478,375 "},"sp": {"name": "São Paulo","path": "M 416,420 L 416,421 L 416,420 L 416,421 L 416,420 L 415,420 L 415,421 L 415,420 L 415,421 L 415,420 L 414,420 L 414,421 L 413,421 L 412,421 L 412,422 L 411,422 L 410,422 L 410,423 L 409,423 L 408,423 L 408,424 L 407,424 L 407,425 L 406,425 L 406,426 L 405,426 L 405,427 L 404,427 L 404,428 L 403,428 L 403,429 L 402,429 L 401,429 L 401,430 L 400,430 L 399,430 L 399,431 L 398,431 L 398,432 L 397,432 L 396,432 L 396,433 L 395,433 L 395,434 L 394,434 L 394,435 L 394,436 L 394,437 L 394,436 L 393,436 L 393,437 L 392,437 L 392,438 L 391,438 L 391,439 L 391,438 L 392,438 L 392,437 L 392,438 L 391,438 L 390,437 L 390,436 L 390,435 L 389,435 L 390,435 L 389,435 L 390,435 L 389,435 L 390,435 L 389,435 L 389,434 L 389,435 L 388,435 L 388,434 L 387,434 L 386,434 L 386,435 L 385,435 L 385,436 L 385,435 L 384,435 L 384,434 L 385,434 L 385,433 L 385,432 L 385,433 L 385,432 L 385,431 L 386,431 L 385,431 L 385,430 L 385,431 L 385,430 L 384,430 L 383,430 L 382,430 L 381,430 L 381,429 L 381,430 L 381,429 L 381,430 L 380,430 L 379,430 L 379,429 L 378,429 L 379,429 L 378,429 L 378,430 L 377,430 L 376,430 L 375,430 L 374,430 L 374,429 L 374,428 L 375,428 L 374,428 L 375,428 L 375,427 L 374,427 L 375,427 L 375,426 L 375,425 L 376,425 L 375,425 L 375,424 L 374,424 L 374,423 L 374,422 L 373,422 L 374,422 L 373,422 L 373,421 L 373,422 L 373,421 L 372,421 L 372,420 L 371,420 L 372,420 L 371,420 L 371,419 L 371,420 L 371,419 L 372,419 L 371,419 L 370,419 L 370,418 L 371,418 L 371,417 L 371,416 L 370,416 L 370,415 L 370,414 L 370,413 L 370,412 L 371,412 L 371,413 L 371,412 L 370,412 L 371,412 L 370,412 L 370,411 L 370,410 L 369,410 L 369,409 L 369,408 L 369,409 L 369,408 L 368,408 L 367,408 L 367,407 L 366,407 L 366,406 L 365,406 L 365,405 L 364,405 L 363,405 L 363,406 L 363,405 L 362,406 L 361,406 L 361,405 L 360,405 L 360,406 L 360,405 L 359,405 L 359,406 L 358,406 L 358,405 L 358,406 L 357,406 L 357,405 L 356,405 L 355,405 L 355,406 L 354,406 L 353,406 L 353,405 L 354,405 L 353,405 L 353,404 L 352,404 L 352,403 L 352,404 L 351,404 L 351,403 L 350,403 L 349,403 L 348,403 L 348,402 L 347,402 L 346,402 L 345,402 L 344,402 L 343,402 L 342,402 L 341,402 L 341,401 L 340,401 L 339,401 L 338,401 L 338,400 L 337,400 L 336,400 L 335,400 L 335,401 L 334,402 L 334,401 L 333,401 L 332,401 L 331,401 L 330,401 L 329,401 L 329,400 L 328,400 L 328,401 L 327,401 L 326,401 L 325,401 L 324,400 L 323,400 L 323,401 L 322,401 L 322,402 L 322,401 L 321,401 L 322,401 L 322,400 L 323,400 L 323,399 L 324,399 L 325,399 L 325,398 L 326,398 L 326,397 L 327,397 L 328,397 L 328,396 L 329,396 L 330,396 L 330,395 L 331,395 L 331,394 L 332,394 L 332,393 L 332,392 L 333,392 L 333,391 L 334,391 L 334,390 L 334,389 L 335,389 L 336,389 L 336,388 L 336,387 L 335,387 L 335,386 L 336,386 L 337,386 L 337,385 L 338,385 L 338,384 L 339,384 L 339,383 L 339,382 L 339,381 L 339,380 L 340,380 L 340,379 L 340,378 L 341,378 L 342,378 L 342,377 L 342,376 L 342,375 L 342,374 L 343,373 L 344,373 L 344,372 L 344,371 L 345,371 L 345,370 L 346,370 L 346,369 L 347,369 L 348,369 L 349,369 L 349,368 L 350,368 L 350,367 L 350,366 L 351,366 L 351,365 L 352,365 L 352,364 L 353,364 L 354,364 L 355,364 L 355,363 L 356,363 L 356,362 L 357,362 L 358,362 L 359,362 L 360,362 L 360,363 L 361,363 L 362,363 L 363,363 L 364,363 L 364,364 L 365,364 L 366,364 L 367,364 L 368,364 L 369,364 L 370,364 L 370,363 L 371,363 L 372,363 L 372,364 L 373,364 L 374,364 L 375,364 L 375,365 L 374,365 L 374,366 L 374,367 L 375,367 L 375,368 L 375,369 L 376,369 L 377,369 L 377,368 L 377,367 L 378,367 L 379,367 L 379,368 L 379,369 L 379,370 L 380,370 L 380,371 L 380,370 L 380,369 L 380,368 L 381,368 L 381,367 L 382,367 L 383,367 L 384,367 L 384,366 L 385,366 L 385,367 L 386,367 L 386,366 L 387,366 L 388,366 L 388,367 L 389,367 L 389,366 L 389,365 L 390,365 L 390,366 L 391,366 L 391,367 L 392,367 L 392,366 L 393,366 L 393,365 L 393,366 L 394,366 L 394,365 L 394,364 L 395,364 L 395,365 L 395,364 L 396,364 L 397,364 L 397,365 L 398,365 L 399,365 L 399,364 L 400,364 L 400,365 L 401,366 L 402,366 L 402,367 L 403,367 L 403,368 L 403,369 L 402,369 L 402,370 L 402,371 L 403,371 L 403,372 L 404,372 L 404,373 L 405,373 L 405,374 L 404,374 L 404,375 L 403,375 L 403,376 L 403,377 L 404,378 L 404,379 L 404,380 L 405,380 L 405,381 L 405,382 L 405,381 L 406,381 L 405,381 L 405,382 L 406,382 L 406,383 L 406,384 L 407,384 L 408,384 L 409,384 L 410,384 L 411,384 L 412,384 L 412,385 L 412,384 L 412,385 L 413,385 L 413,386 L 413,387 L 413,388 L 412,388 L 412,389 L 411,389 L 411,390 L 411,391 L 411,392 L 412,392 L 412,393 L 411,393 L 410,394 L 410,393 L 410,394 L 411,394 L 412,394 L 412,395 L 411,395 L 411,396 L 410,396 L 411,396 L 410,396 L 410,397 L 411,397 L 411,398 L 412,399 L 413,399 L 413,400 L 414,400 L 415,400 L 414,400 L 414,401 L 415,401 L 414,401 L 415,401 L 414,401 L 415,401 L 415,402 L 414,402 L 414,403 L 415,403 L 416,403 L 415,403 L 415,404 L 415,405 L 416,405 L 417,405 L 418,405 L 418,404 L 418,405 L 418,404 L 418,405 L 419,405 L 420,405 L 421,405 L 421,404 L 422,404 L 422,405 L 422,404 L 423,404 L 424,404 L 423,404 L 424,404 L 424,403 L 424,404 L 424,403 L 424,402 L 424,403 L 424,402 L 424,403 L 424,402 L 424,403 L 423,403 L 423,402 L 424,402 L 425,402 L 425,401 L 424,401 L 424,400 L 424,401 L 425,401 L 425,400 L 425,401 L 425,402 L 425,401 L 426,401 L 426,402 L 427,402 L 427,401 L 428,401 L 429,401 L 428,401 L 429,401 L 428,401 L 429,402 L 429,401 L 430,401 L 431,401 L 431,400 L 432,400 L 432,399 L 433,399 L 434,399 L 435,399 L 436,399 L 436,398 L 437,398 L 438,398 L 438,399 L 438,400 L 439,400 L 439,401 L 440,401 L 441,401 L 442,401 L 443,401 L 442,401 L 443,401 L 443,400 L 443,401 L 443,400 L 443,401 L 444,401 L 445,401 L 446,401 L 445,401 L 446,402 L 445,402 L 445,403 L 445,404 L 444,404 L 443,404 L 442,404 L 442,405 L 441,405 L 442,405 L 441,405 L 441,404 L 442,404 L 441,404 L 441,405 L 440,405 L 439,405 L 438,405 L 438,406 L 437,406 L 437,407 L 437,408 L 437,409 L 436,409 L 436,410 L 437,410 L 437,411 L 438,411 L 438,412 L 438,411 L 438,412 L 437,412 L 436,412 L 436,411 L 436,412 L 436,411 L 435,411 L 435,412 L 434,412 L 435,412 L 434,412 L 433,412 L 433,413 L 434,413 L 433,413 L 434,413 L 433,413 L 433,414 L 433,413 L 433,414 L 432,414 L 432,413 L 432,414 L 432,413 L 432,414 L 432,413 L 432,414 L 431,414 L 431,415 L 430,415 L 430,414 L 430,415 L 429,415 L 428,415 L 428,416 L 429,416 L 429,417 L 428,417 L 429,417 L 429,418 L 428,418 L 427,418 L 428,418 L 427,418 L 426,418 L 427,418 L 427,417 L 426,417 L 426,418 L 426,417 L 427,417 L 426,417 L 426,418 L 426,417 L 425,417 L 426,417 L 425,417 L 426,417 L 425,417 L 424,417 L 423,417 L 422,417 L 421,417 L 420,417 L 420,418 L 420,417 L 420,418 L 419,418 L 418,418 L 419,418 L 418,418 L 418,419 L 418,420 L 417,420 L 416,420 "},"pr": {"name": "Paraná","path": "M 336,400 L 337,400 L 338,400 L 338,401 L 339,401 L 340,401 L 341,401 L 341,402 L 342,402 L 343,402 L 344,402 L 345,402 L 346,402 L 347,402 L 348,402 L 348,403 L 349,403 L 350,403 L 351,403 L 351,404 L 352,404 L 352,403 L 352,404 L 353,404 L 353,405 L 354,405 L 353,405 L 353,406 L 354,406 L 355,406 L 355,405 L 356,405 L 357,405 L 357,406 L 358,406 L 358,405 L 358,406 L 359,406 L 359,405 L 360,405 L 360,406 L 360,405 L 361,405 L 361,406 L 362,406 L 363,405 L 363,406 L 363,405 L 364,405 L 365,405 L 365,406 L 366,406 L 366,407 L 367,407 L 367,408 L 368,408 L 369,408 L 369,409 L 369,408 L 369,409 L 369,410 L 370,410 L 370,411 L 370,412 L 371,412 L 370,412 L 371,412 L 371,413 L 371,412 L 370,412 L 370,413 L 370,414 L 370,415 L 370,416 L 371,416 L 371,417 L 371,418 L 370,418 L 370,419 L 371,419 L 372,419 L 371,419 L 371,420 L 371,419 L 371,420 L 372,420 L 371,420 L 372,420 L 372,421 L 373,421 L 373,422 L 373,421 L 373,422 L 374,422 L 373,422 L 374,422 L 374,423 L 374,424 L 375,424 L 375,425 L 376,425 L 375,425 L 375,426 L 375,427 L 374,427 L 375,427 L 375,428 L 374,428 L 375,428 L 374,428 L 374,429 L 374,430 L 375,430 L 376,430 L 377,430 L 378,430 L 378,429 L 379,429 L 378,429 L 379,429 L 379,430 L 380,430 L 381,430 L 381,429 L 381,430 L 381,429 L 381,430 L 382,430 L 383,430 L 384,430 L 385,430 L 385,431 L 385,430 L 385,431 L 386,431 L 385,431 L 385,432 L 385,433 L 385,432 L 385,433 L 385,434 L 384,434 L 384,435 L 385,435 L 385,436 L 385,435 L 386,435 L 386,434 L 387,434 L 388,434 L 388,435 L 389,435 L 389,434 L 389,435 L 390,435 L 389,435 L 390,435 L 389,435 L 390,435 L 389,435 L 390,435 L 390,436 L 390,437 L 391,438 L 392,438 L 392,437 L 392,438 L 391,438 L 391,439 L 391,438 L 391,439 L 390,439 L 390,440 L 390,441 L 389,441 L 388,441 L 389,441 L 388,442 L 387,442 L 387,443 L 386,443 L 386,444 L 386,445 L 385,445 L 385,446 L 385,447 L 384,447 L 384,448 L 384,447 L 383,447 L 383,448 L 381,448 L 380,448 L 379,448 L 378,448 L 379,448 L 378,448 L 377,448 L 378,448 L 377,448 L 376,448 L 375,448 L 375,449 L 375,448 L 375,449 L 374,449 L 375,449 L 374,449 L 375,449 L 374,449 L 375,449 L 375,450 L 374,450 L 373,450 L 372,450 L 372,451 L 372,450 L 372,451 L 371,451 L 370,451 L 371,451 L 370,451 L 369,451 L 369,450 L 368,450 L 368,449 L 368,450 L 368,449 L 368,450 L 367,450 L 367,449 L 366,449 L 367,449 L 366,449 L 366,448 L 366,449 L 366,448 L 366,449 L 366,448 L 365,448 L 366,448 L 365,448 L 365,449 L 365,448 L 364,448 L 365,448 L 365,449 L 364,449 L 364,448 L 364,449 L 364,448 L 363,448 L 363,449 L 363,448 L 362,448 L 362,449 L 363,449 L 362,449 L 361,449 L 360,449 L 360,450 L 360,449 L 359,449 L 358,449 L 359,449 L 358,449 L 358,448 L 358,449 L 358,448 L 358,449 L 358,448 L 357,448 L 357,449 L 357,448 L 356,448 L 356,449 L 357,449 L 356,449 L 356,450 L 355,450 L 355,451 L 354,451 L 355,451 L 355,452 L 354,452 L 354,451 L 353,451 L 353,452 L 353,451 L 353,452 L 352,452 L 352,451 L 352,452 L 351,452 L 351,451 L 350,451 L 350,452 L 349,452 L 348,452 L 348,453 L 347,453 L 347,454 L 347,455 L 347,454 L 347,455 L 347,456 L 348,456 L 347,456 L 347,457 L 348,457 L 347,457 L 348,457 L 347,457 L 346,457 L 345,457 L 345,458 L 345,457 L 344,457 L 344,456 L 343,456 L 342,456 L 341,456 L 340,456 L 339,456 L 338,456 L 337,456 L 336,456 L 336,455 L 335,455 L 336,455 L 335,455 L 334,455 L 334,454 L 334,455 L 333,455 L 333,454 L 333,455 L 333,454 L 332,454 L 331,454 L 330,454 L 329,454 L 328,454 L 328,453 L 327,453 L 326,453 L 325,453 L 324,453 L 323,453 L 322,453 L 322,454 L 322,453 L 322,454 L 322,453 L 321,453 L 320,453 L 320,452 L 319,452 L 318,452 L 318,451 L 318,452 L 317,452 L 316,452 L 315,452 L 314,452 L 314,451 L 314,450 L 313,450 L 313,449 L 312,449 L 312,448 L 311,448 L 311,447 L 312,447 L 311,447 L 312,447 L 311,447 L 312,447 L 311,447 L 311,446 L 311,445 L 311,446 L 312,446 L 312,445 L 311,445 L 311,444 L 311,445 L 311,444 L 311,443 L 310,443 L 311,443 L 310,443 L 309,443 L 309,442 L 308,442 L 308,443 L 307,443 L 307,442 L 308,442 L 308,441 L 307,441 L 307,442 L 306,442 L 307,442 L 306,442 L 306,443 L 306,442 L 305,442 L 304,442 L 304,443 L 304,442 L 304,443 L 303,443 L 303,444 L 303,443 L 302,443 L 302,442 L 301,442 L 301,441 L 300,441 L 300,440 L 301,440 L 301,439 L 302,439 L 302,438 L 302,437 L 303,437 L 303,436 L 303,435 L 303,434 L 303,433 L 303,432 L 304,431 L 304,430 L 304,429 L 305,429 L 305,428 L 304,428 L 304,427 L 305,427 L 305,426 L 305,425 L 305,424 L 304,423 L 305,423 L 304,423 L 304,422 L 305,422 L 305,421 L 306,421 L 306,420 L 307,420 L 308,420 L 308,419 L 308,418 L 308,417 L 308,416 L 309,415 L 309,414 L 309,413 L 310,413 L 310,412 L 311,412 L 312,412 L 312,411 L 313,411 L 313,410 L 313,409 L 314,409 L 314,408 L 314,407 L 314,406 L 315,406 L 315,405 L 316,405 L 316,404 L 317,404 L 318,404 L 318,403 L 319,403 L 320,403 L 320,402 L 321,402 L 321,401 L 322,401 L 322,402 L 322,401 L 323,401 L 323,400 L 324,400 L 325,401 L 326,401 L 327,401 L 328,401 L 328,400 L 329,400 L 329,401 L 330,401 L 331,401 L 332,401 L 333,401 L 334,401 L 334,402 L 335,401 L 335,400 L 336,400 "},"sc": {"name": "Santa Catarina","path": "M 384,448 L 384,449 L 384,450 L 385,450 L 385,451 L 386,451 L 385,451 L 386,451 L 385,451 L 385,452 L 385,453 L 384,453 L 384,454 L 384,455 L 383,456 L 383,457 L 383,458 L 383,459 L 384,459 L 384,460 L 384,461 L 384,462 L 385,462 L 384,462 L 385,462 L 384,462 L 384,463 L 384,464 L 385,464 L 386,464 L 386,465 L 385,465 L 386,465 L 385,465 L 384,465 L 384,466 L 385,466 L 385,467 L 385,468 L 384,468 L 385,468 L 385,467 L 386,467 L 387,467 L 387,468 L 387,469 L 387,470 L 386,470 L 386,471 L 386,472 L 385,472 L 386,472 L 386,473 L 385,473 L 385,474 L 384,474 L 385,474 L 384,474 L 384,475 L 384,476 L 384,477 L 384,478 L 383,478 L 383,479 L 384,479 L 383,479 L 383,480 L 383,481 L 382,481 L 382,482 L 382,483 L 382,484 L 381,484 L 380,485 L 379,485 L 378,486 L 377,486 L 377,487 L 376,487 L 375,487 L 375,488 L 374,488 L 374,489 L 373,489 L 373,490 L 372,490 L 372,491 L 371,491 L 371,492 L 370,492 L 370,493 L 369,493 L 369,494 L 368,494 L 367,494 L 367,493 L 366,493 L 365,493 L 364,493 L 363,493 L 363,494 L 364,494 L 364,495 L 364,494 L 363,494 L 363,493 L 362,493 L 363,493 L 362,493 L 363,493 L 362,493 L 363,493 L 363,492 L 363,493 L 364,493 L 363,493 L 363,492 L 363,493 L 363,492 L 364,492 L 363,492 L 364,492 L 363,492 L 364,492 L 364,493 L 364,492 L 365,492 L 364,492 L 365,492 L 365,491 L 365,492 L 365,491 L 365,492 L 365,491 L 365,490 L 366,490 L 366,489 L 365,489 L 365,488 L 366,488 L 365,488 L 365,487 L 365,486 L 366,486 L 367,486 L 367,485 L 367,486 L 367,485 L 367,484 L 368,484 L 368,485 L 368,484 L 368,485 L 369,485 L 369,484 L 368,484 L 368,483 L 368,482 L 368,483 L 367,483 L 367,482 L 367,483 L 366,483 L 367,483 L 367,482 L 366,482 L 367,482 L 366,482 L 366,483 L 365,483 L 365,482 L 364,482 L 364,483 L 364,482 L 363,482 L 363,483 L 363,482 L 363,483 L 363,482 L 362,482 L 363,482 L 363,483 L 362,483 L 362,482 L 361,482 L 360,482 L 359,482 L 358,482 L 357,482 L 357,481 L 356,481 L 355,481 L 355,480 L 355,479 L 354,479 L 354,478 L 353,478 L 352,478 L 353,478 L 353,477 L 352,477 L 352,476 L 352,475 L 351,475 L 350,475 L 351,475 L 350,475 L 350,474 L 349,474 L 349,473 L 348,473 L 347,473 L 347,472 L 346,472 L 347,472 L 346,472 L 346,471 L 345,471 L 346,471 L 345,471 L 344,471 L 344,470 L 343,470 L 343,469 L 342,469 L 342,470 L 342,469 L 341,469 L 340,469 L 339,469 L 338,469 L 339,469 L 338,469 L 338,468 L 338,469 L 337,469 L 337,468 L 338,468 L 337,468 L 337,467 L 337,468 L 338,467 L 337,467 L 336,467 L 335,467 L 335,466 L 334,466 L 335,466 L 334,466 L 334,467 L 334,466 L 333,466 L 334,466 L 333,466 L 332,466 L 331,466 L 331,465 L 331,466 L 331,465 L 330,465 L 330,466 L 329,466 L 329,465 L 329,466 L 328,466 L 328,465 L 327,465 L 327,466 L 327,465 L 327,466 L 326,466 L 326,465 L 325,465 L 325,464 L 325,465 L 324,465 L 324,464 L 323,464 L 323,465 L 323,464 L 322,464 L 323,464 L 323,463 L 322,463 L 322,464 L 321,464 L 321,465 L 321,464 L 320,464 L 320,465 L 320,464 L 319,464 L 319,465 L 318,465 L 319,465 L 319,464 L 318,464 L 318,463 L 317,463 L 317,464 L 316,464 L 316,465 L 315,465 L 315,464 L 315,465 L 314,465 L 314,464 L 313,464 L 313,465 L 312,465 L 312,464 L 311,464 L 312,464 L 311,464 L 312,464 L 312,463 L 312,464 L 312,463 L 312,462 L 312,463 L 312,462 L 313,462 L 312,462 L 313,462 L 313,461 L 313,462 L 313,461 L 314,461 L 313,461 L 314,461 L 313,461 L 314,461 L 313,460 L 314,460 L 313,460 L 313,459 L 313,458 L 312,458 L 313,458 L 312,458 L 313,458 L 313,457 L 312,457 L 313,457 L 313,456 L 313,455 L 313,454 L 313,453 L 313,454 L 313,453 L 314,453 L 313,453 L 314,453 L 314,452 L 315,452 L 316,452 L 317,452 L 318,452 L 318,451 L 318,452 L 319,452 L 320,452 L 320,453 L 321,453 L 322,453 L 322,454 L 322,453 L 322,454 L 322,453 L 323,453 L 324,453 L 325,453 L 326,453 L 327,453 L 328,453 L 328,454 L 329,454 L 330,454 L 331,454 L 332,454 L 333,454 L 333,455 L 333,454 L 333,455 L 334,455 L 334,454 L 334,455 L 335,455 L 336,455 L 335,455 L 336,455 L 336,456 L 337,456 L 338,456 L 339,456 L 340,456 L 341,456 L 342,456 L 343,456 L 344,456 L 344,457 L 345,457 L 345,458 L 345,457 L 346,457 L 347,457 L 348,457 L 347,457 L 348,457 L 347,457 L 347,456 L 348,456 L 347,456 L 347,455 L 347,454 L 347,455 L 347,454 L 347,453 L 348,453 L 348,452 L 349,452 L 350,452 L 350,451 L 351,451 L 351,452 L 352,452 L 352,451 L 352,452 L 353,452 L 353,451 L 353,452 L 353,451 L 354,451 L 354,452 L 355,452 L 355,451 L 354,451 L 355,451 L 355,450 L 356,450 L 356,449 L 357,449 L 356,449 L 356,448 L 357,448 L 357,449 L 357,448 L 358,448 L 358,449 L 358,448 L 358,449 L 358,448 L 358,449 L 359,449 L 358,449 L 359,449 L 360,449 L 360,450 L 360,449 L 361,449 L 362,449 L 363,449 L 362,449 L 362,448 L 363,448 L 363,449 L 363,448 L 364,448 L 364,449 L 364,448 L 364,449 L 365,449 L 365,448 L 364,448 L 365,448 L 365,449 L 365,448 L 366,448 L 365,448 L 366,448 L 366,449 L 366,448 L 366,449 L 366,448 L 366,449 L 367,449 L 366,449 L 367,449 L 367,450 L 368,450 L 368,449 L 368,450 L 368,449 L 368,450 L 369,450 L 369,451 L 370,451 L 371,451 L 370,451 L 371,451 L 372,451 L 372,450 L 372,451 L 372,450 L 373,450 L 374,450 L 375,450 L 375,449 L 374,449 L 375,449 L 374,449 L 375,449 L 374,449 L 375,449 L 375,448 L 375,449 L 375,448 L 376,448 L 377,448 L 378,448 L 377,448 L 378,448 L 379,448 L 378,448 L 379,448 L 380,448 L 381,448 L 383,448 L 383,447 L 384,447 L 384,448 "},"rs": {"name": "Rio Grande do Sul","path": "M 338,468 L 338,469 L 339,469 L 338,469 L 339,469 L 340,469 L 341,469 L 342,469 L 342,470 L 342,469 L 343,469 L 343,470 L 344,470 L 344,471 L 345,471 L 346,471 L 345,471 L 346,471 L 346,472 L 347,472 L 346,472 L 347,472 L 347,473 L 348,473 L 349,473 L 349,474 L 350,474 L 350,475 L 351,475 L 350,475 L 351,475 L 352,475 L 352,476 L 352,477 L 353,477 L 353,478 L 352,478 L 353,478 L 354,478 L 354,479 L 355,479 L 355,480 L 355,481 L 356,481 L 357,481 L 357,482 L 358,482 L 359,482 L 360,482 L 361,482 L 362,482 L 362,483 L 363,483 L 363,482 L 362,482 L 363,482 L 363,483 L 363,482 L 363,483 L 363,482 L 364,482 L 364,483 L 364,482 L 365,482 L 365,483 L 366,483 L 366,482 L 367,482 L 366,482 L 367,482 L 367,483 L 366,483 L 367,483 L 367,482 L 367,483 L 368,483 L 368,482 L 368,483 L 368,484 L 369,484 L 369,485 L 368,485 L 368,484 L 368,485 L 368,484 L 367,484 L 367,485 L 367,486 L 367,485 L 367,486 L 366,486 L 365,486 L 365,487 L 365,488 L 366,488 L 365,488 L 365,489 L 366,489 L 366,490 L 365,490 L 365,491 L 365,492 L 365,491 L 365,492 L 365,491 L 365,492 L 364,492 L 365,492 L 364,492 L 364,493 L 364,492 L 363,492 L 364,492 L 363,492 L 364,492 L 363,492 L 363,493 L 363,492 L 363,493 L 364,493 L 363,493 L 363,492 L 363,493 L 362,493 L 363,493 L 362,493 L 363,493 L 362,493 L 363,493 L 363,494 L 364,494 L 364,495 L 364,494 L 363,494 L 363,493 L 364,493 L 365,493 L 366,493 L 367,493 L 367,494 L 368,494 L 369,494 L 369,495 L 368,495 L 368,496 L 367,496 L 367,497 L 366,497 L 366,498 L 366,499 L 365,499 L 365,500 L 364,500 L 364,501 L 364,502 L 363,502 L 363,503 L 363,504 L 363,505 L 362,505 L 362,506 L 362,507 L 361,507 L 361,508 L 361,509 L 361,510 L 360,510 L 360,511 L 359,512 L 358,513 L 358,514 L 357,514 L 357,515 L 356,516 L 356,517 L 355,517 L 355,518 L 354,519 L 354,520 L 353,520 L 352,521 L 352,522 L 351,522 L 350,523 L 349,523 L 349,524 L 348,524 L 348,525 L 347,525 L 347,526 L 346,526 L 346,527 L 345,527 L 344,528 L 343,528 L 342,529 L 341,529 L 341,530 L 340,530 L 339,530 L 339,531 L 338,531 L 338,532 L 337,532 L 337,533 L 336,533 L 336,534 L 336,533 L 336,532 L 336,531 L 337,531 L 336,530 L 336,529 L 335,529 L 336,529 L 335,529 L 336,529 L 335,529 L 336,529 L 337,529 L 338,529 L 338,530 L 339,530 L 339,529 L 340,529 L 339,529 L 340,529 L 339,529 L 340,529 L 341,529 L 341,528 L 342,528 L 342,527 L 343,527 L 343,526 L 344,526 L 344,525 L 344,526 L 345,526 L 344,526 L 344,525 L 345,525 L 344,525 L 345,525 L 345,524 L 345,525 L 346,525 L 347,525 L 347,524 L 348,524 L 348,523 L 348,522 L 349,522 L 349,521 L 348,521 L 348,520 L 348,519 L 349,519 L 350,519 L 350,518 L 351,518 L 351,517 L 351,516 L 352,516 L 353,516 L 353,515 L 354,515 L 355,515 L 355,514 L 355,513 L 355,512 L 355,511 L 355,510 L 355,509 L 356,509 L 356,508 L 356,509 L 356,510 L 356,511 L 357,511 L 357,510 L 357,509 L 357,508 L 357,507 L 356,507 L 356,506 L 356,507 L 356,506 L 356,507 L 356,506 L 355,507 L 356,508 L 355,508 L 354,508 L 353,508 L 352,508 L 352,509 L 352,510 L 351,510 L 351,509 L 350,509 L 350,508 L 350,509 L 350,508 L 350,507 L 350,508 L 350,507 L 349,507 L 348,507 L 349,507 L 348,507 L 348,506 L 347,506 L 348,506 L 347,506 L 347,505 L 348,505 L 348,504 L 347,504 L 347,505 L 347,504 L 347,505 L 347,504 L 346,505 L 346,506 L 346,507 L 347,507 L 347,508 L 348,508 L 348,509 L 349,509 L 349,510 L 349,511 L 349,510 L 349,509 L 348,509 L 348,510 L 347,510 L 347,511 L 347,512 L 347,513 L 347,514 L 347,515 L 346,515 L 347,515 L 347,514 L 346,514 L 346,513 L 345,513 L 345,514 L 345,515 L 345,516 L 346,516 L 345,516 L 344,516 L 344,517 L 344,518 L 344,519 L 345,519 L 344,519 L 343,519 L 342,519 L 342,520 L 342,521 L 341,521 L 341,522 L 340,522 L 340,521 L 340,522 L 339,522 L 338,522 L 339,522 L 338,522 L 337,522 L 337,523 L 338,523 L 337,523 L 337,524 L 337,525 L 337,526 L 337,527 L 336,527 L 335,527 L 335,528 L 334,528 L 334,529 L 333,529 L 333,530 L 334,530 L 335,530 L 335,531 L 334,531 L 334,532 L 333,532 L 334,532 L 334,531 L 335,531 L 335,532 L 336,532 L 335,532 L 334,532 L 334,533 L 333,533 L 334,533 L 334,532 L 335,532 L 336,532 L 335,532 L 335,533 L 335,532 L 336,532 L 336,533 L 335,533 L 335,534 L 334,534 L 334,535 L 333,535 L 333,536 L 333,537 L 332,537 L 332,538 L 331,539 L 331,540 L 331,541 L 331,542 L 330,542 L 330,543 L 330,544 L 329,545 L 329,546 L 328,546 L 328,547 L 328,548 L 327,548 L 327,549 L 326,549 L 326,550 L 325,550 L 324,551 L 323,552 L 322,552 L 322,553 L 321,553 L 321,554 L 320,554 L 320,555 L 319,555 L 318,555 L 318,556 L 317,556 L 317,555 L 316,555 L 315,555 L 316,555 L 315,555 L 315,554 L 316,554 L 315,554 L 316,554 L 316,553 L 317,553 L 316,553 L 317,553 L 317,552 L 317,553 L 317,552 L 317,551 L 317,550 L 316,549 L 317,549 L 317,548 L 317,547 L 317,548 L 318,547 L 318,546 L 319,546 L 318,546 L 318,547 L 319,547 L 320,546 L 320,545 L 321,545 L 321,544 L 321,543 L 322,543 L 323,543 L 323,542 L 323,543 L 324,544 L 325,544 L 326,544 L 327,543 L 327,542 L 328,542 L 328,541 L 328,540 L 329,539 L 329,538 L 328,538 L 328,537 L 327,536 L 327,535 L 328,535 L 328,534 L 327,534 L 326,534 L 327,534 L 326,534 L 326,535 L 326,534 L 326,535 L 326,534 L 327,534 L 326,534 L 327,534 L 327,535 L 326,535 L 326,536 L 325,536 L 326,536 L 326,537 L 326,536 L 326,537 L 327,537 L 326,537 L 326,538 L 325,538 L 324,538 L 323,538 L 323,539 L 323,540 L 322,540 L 322,541 L 321,541 L 321,540 L 321,541 L 320,541 L 320,540 L 319,540 L 318,540 L 318,539 L 318,540 L 317,540 L 317,539 L 316,539 L 316,538 L 315,538 L 315,537 L 314,537 L 314,536 L 314,535 L 313,535 L 314,535 L 313,535 L 313,534 L 313,533 L 312,533 L 312,532 L 311,532 L 311,531 L 311,532 L 311,531 L 310,531 L 309,531 L 310,531 L 310,530 L 309,530 L 308,530 L 308,531 L 308,530 L 307,530 L 306,529 L 303,527 L 303,526 L 302,526 L 302,525 L 301,525 L 301,524 L 300,524 L 299,524 L 298,524 L 297,524 L 297,523 L 296,523 L 297,523 L 296,523 L 296,522 L 295,522 L 295,521 L 295,522 L 294,522 L 293,522 L 293,521 L 292,521 L 292,520 L 291,520 L 290,519 L 290,520 L 290,519 L 291,519 L 290,519 L 291,519 L 290,519 L 291,519 L 290,519 L 290,518 L 289,518 L 289,517 L 288,517 L 288,516 L 287,516 L 287,515 L 287,516 L 287,515 L 286,515 L 286,516 L 286,517 L 285,517 L 285,518 L 284,518 L 283,518 L 283,519 L 282,519 L 281,519 L 281,518 L 281,517 L 281,516 L 281,515 L 280,515 L 280,514 L 279,514 L 279,513 L 279,512 L 278,512 L 278,511 L 277,511 L 277,512 L 277,511 L 276,511 L 276,510 L 275,510 L 275,509 L 274,509 L 274,508 L 273,508 L 273,507 L 272,507 L 273,507 L 272,507 L 272,506 L 272,507 L 272,506 L 272,507 L 271,507 L 271,506 L 270,506 L 270,505 L 269,505 L 268,505 L 269,505 L 268,505 L 267,505 L 266,505 L 266,506 L 266,505 L 266,506 L 265,506 L 265,507 L 265,508 L 264,508 L 264,507 L 264,508 L 263,508 L 263,507 L 263,508 L 262,508 L 261,508 L 262,508 L 261,508 L 261,507 L 260,507 L 260,508 L 260,507 L 259,507 L 260,507 L 259,507 L 259,506 L 258,506 L 259,506 L 260,506 L 261,505 L 261,504 L 262,504 L 263,504 L 263,503 L 263,502 L 263,501 L 264,501 L 265,501 L 266,500 L 267,500 L 267,499 L 268,498 L 269,497 L 270,497 L 270,496 L 270,495 L 271,495 L 272,495 L 272,494 L 272,493 L 272,492 L 273,492 L 273,491 L 274,491 L 275,491 L 276,490 L 275,490 L 275,489 L 276,489 L 277,489 L 277,488 L 277,487 L 278,487 L 279,487 L 279,486 L 279,485 L 280,485 L 281,485 L 281,484 L 281,483 L 282,483 L 283,483 L 283,482 L 283,481 L 284,481 L 285,481 L 285,482 L 286,482 L 285,481 L 286,481 L 286,480 L 285,480 L 284,480 L 284,479 L 285,479 L 286,479 L 286,478 L 287,478 L 288,478 L 288,477 L 289,477 L 290,477 L 290,476 L 290,475 L 291,475 L 292,475 L 292,474 L 293,474 L 294,474 L 295,474 L 295,473 L 294,473 L 295,473 L 296,473 L 296,472 L 296,471 L 297,471 L 297,470 L 298,470 L 298,469 L 298,470 L 299,470 L 300,470 L 300,469 L 300,470 L 300,469 L 301,469 L 301,468 L 301,469 L 302,469 L 303,469 L 303,468 L 302,468 L 303,468 L 304,468 L 304,469 L 304,468 L 305,468 L 306,467 L 306,466 L 307,466 L 308,466 L 309,466 L 309,465 L 310,465 L 310,464 L 311,464 L 312,464 L 312,465 L 313,465 L 313,464 L 314,464 L 314,465 L 315,465 L 315,464 L 315,465 L 316,465 L 316,464 L 317,464 L 317,463 L 318,463 L 318,464 L 319,464 L 319,465 L 318,465 L 319,465 L 319,464 L 320,464 L 320,465 L 320,464 L 321,464 L 321,465 L 321,464 L 322,464 L 322,463 L 323,463 L 323,464 L 322,464 L 323,464 L 323,465 L 323,464 L 324,464 L 324,465 L 325,465 L 325,464 L 325,465 L 326,465 L 326,466 L 327,466 L 327,465 L 327,466 L 327,465 L 328,465 L 328,466 L 329,466 L 329,465 L 329,466 L 330,466 L 330,465 L 331,465 L 331,466 L 331,465 L 331,466 L 332,466 L 333,466 L 334,466 L 333,466 L 334,466 L 334,467 L 334,466 L 335,466 L 334,466 L 335,466 L 335,467 L 336,467 L 337,467 L 338,467 L 337,468 L 337,467 L 337,468 L 338,468 L 337,468 L 337,469 L 338,469 L 338,468 "},"ms": {"name": "Mato Grosso do Sul","path": "M 280,325 L 281,325 L 281,326 L 282,326 L 282,327 L 282,326 L 282,327 L 283,327 L 284,327 L 284,328 L 284,327 L 285,327 L 285,328 L 286,328 L 287,328 L 287,329 L 288,329 L 288,330 L 289,330 L 290,330 L 290,331 L 290,330 L 290,331 L 290,330 L 290,331 L 291,331 L 291,330 L 291,331 L 292,331 L 292,332 L 293,332 L 294,332 L 295,332 L 295,331 L 295,332 L 296,332 L 296,331 L 297,332 L 297,331 L 297,332 L 297,331 L 298,331 L 298,330 L 299,330 L 300,330 L 301,330 L 301,329 L 301,330 L 301,329 L 301,330 L 302,330 L 303,330 L 303,331 L 304,331 L 304,332 L 305,332 L 306,332 L 306,331 L 307,331 L 307,332 L 307,331 L 307,332 L 307,331 L 308,331 L 308,332 L 308,331 L 308,330 L 309,330 L 309,329 L 310,329 L 310,328 L 311,328 L 311,327 L 312,327 L 312,326 L 313,326 L 313,330 L 313,332 L 312,332 L 311,332 L 311,333 L 310,333 L 310,334 L 310,335 L 310,336 L 311,336 L 312,336 L 312,337 L 312,336 L 312,337 L 313,337 L 314,337 L 313,337 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 315,337 L 316,337 L 317,337 L 318,337 L 319,337 L 320,337 L 321,337 L 322,337 L 322,338 L 321,338 L 321,339 L 321,340 L 321,341 L 322,341 L 321,341 L 322,341 L 322,342 L 323,342 L 323,341 L 324,341 L 325,341 L 326,341 L 326,342 L 326,343 L 325,343 L 324,343 L 324,344 L 323,344 L 323,345 L 324,345 L 324,346 L 325,346 L 326,346 L 327,346 L 328,346 L 329,346 L 330,346 L 331,346 L 331,347 L 331,348 L 332,348 L 333,348 L 334,349 L 335,349 L 334,349 L 335,349 L 335,350 L 336,350 L 337,350 L 338,350 L 337,350 L 338,350 L 338,351 L 339,351 L 339,352 L 339,351 L 339,352 L 340,352 L 341,352 L 341,353 L 342,353 L 342,352 L 342,353 L 343,352 L 343,353 L 343,352 L 343,353 L 344,353 L 345,353 L 346,353 L 346,354 L 347,354 L 346,354 L 347,354 L 347,355 L 347,354 L 348,354 L 348,355 L 349,355 L 350,355 L 350,356 L 351,356 L 351,357 L 352,357 L 351,357 L 351,358 L 352,358 L 352,359 L 351,359 L 351,360 L 350,360 L 350,361 L 350,362 L 350,363 L 351,363 L 351,364 L 350,364 L 351,364 L 351,365 L 350,365 L 351,365 L 351,366 L 350,366 L 350,367 L 350,368 L 349,368 L 349,369 L 348,369 L 347,369 L 346,369 L 346,370 L 345,370 L 345,371 L 344,371 L 344,372 L 344,373 L 343,373 L 342,374 L 342,375 L 342,376 L 342,377 L 342,378 L 341,378 L 340,378 L 340,379 L 340,380 L 339,380 L 339,381 L 339,382 L 339,383 L 339,384 L 338,384 L 338,385 L 337,385 L 337,386 L 336,386 L 335,386 L 335,387 L 336,387 L 336,388 L 336,389 L 335,389 L 334,389 L 334,390 L 334,391 L 333,391 L 333,392 L 332,392 L 332,393 L 332,394 L 331,394 L 331,395 L 330,395 L 330,396 L 329,396 L 328,396 L 328,397 L 327,397 L 326,397 L 326,398 L 325,398 L 325,399 L 324,399 L 323,399 L 323,400 L 322,400 L 322,401 L 321,401 L 321,402 L 320,402 L 320,403 L 319,403 L 318,403 L 318,404 L 317,404 L 316,404 L 316,405 L 315,405 L 315,406 L 314,406 L 314,407 L 314,408 L 314,409 L 313,409 L 313,410 L 313,411 L 312,411 L 312,412 L 311,412 L 310,412 L 310,413 L 309,413 L 309,414 L 309,415 L 308,416 L 308,417 L 308,418 L 308,419 L 308,420 L 307,420 L 306,420 L 306,421 L 305,421 L 305,420 L 304,420 L 303,420 L 303,419 L 302,419 L 302,418 L 302,419 L 302,418 L 301,418 L 301,419 L 301,418 L 300,418 L 299,418 L 298,418 L 298,419 L 297,419 L 296,419 L 296,420 L 295,420 L 294,420 L 293,420 L 292,420 L 291,420 L 290,420 L 289,420 L 290,420 L 289,420 L 289,419 L 289,418 L 289,417 L 289,416 L 288,416 L 289,416 L 289,415 L 288,415 L 288,414 L 287,414 L 287,413 L 288,413 L 288,412 L 288,411 L 287,411 L 287,410 L 288,410 L 288,409 L 287,409 L 287,408 L 287,407 L 286,407 L 286,406 L 286,405 L 286,404 L 286,403 L 287,403 L 286,403 L 287,403 L 287,402 L 286,402 L 286,401 L 285,400 L 285,399 L 285,398 L 284,398 L 284,397 L 283,397 L 283,396 L 282,396 L 282,397 L 282,396 L 282,397 L 282,396 L 282,397 L 282,396 L 281,396 L 282,396 L 281,396 L 282,396 L 281,396 L 281,397 L 281,396 L 280,396 L 279,396 L 278,396 L 277,396 L 277,395 L 276,395 L 277,395 L 276,395 L 276,394 L 276,393 L 276,394 L 275,394 L 274,394 L 274,395 L 274,394 L 274,395 L 273,395 L 274,395 L 273,395 L 273,396 L 272,396 L 272,395 L 272,396 L 272,395 L 271,395 L 271,396 L 271,395 L 271,396 L 272,396 L 271,396 L 270,396 L 270,397 L 269,397 L 269,396 L 269,397 L 269,396 L 268,396 L 267,396 L 266,396 L 265,396 L 265,395 L 264,395 L 264,396 L 264,395 L 264,396 L 263,396 L 263,395 L 263,396 L 262,396 L 262,395 L 261,395 L 260,395 L 259,395 L 259,394 L 258,394 L 257,394 L 256,394 L 256,395 L 256,394 L 255,394 L 254,394 L 253,394 L 254,394 L 254,393 L 253,393 L 254,393 L 254,392 L 254,391 L 255,391 L 254,391 L 254,390 L 255,390 L 255,389 L 254,389 L 255,388 L 254,388 L 254,387 L 255,387 L 254,387 L 254,386 L 254,385 L 255,385 L 255,384 L 255,383 L 254,382 L 255,382 L 255,381 L 255,380 L 256,380 L 255,380 L 255,379 L 256,379 L 256,378 L 255,378 L 255,377 L 254,377 L 255,377 L 255,376 L 255,377 L 255,376 L 254,376 L 254,375 L 255,375 L 255,374 L 254,374 L 254,373 L 253,373 L 253,372 L 253,371 L 253,370 L 252,370 L 252,369 L 252,368 L 251,368 L 252,368 L 252,367 L 251,367 L 252,367 L 252,366 L 253,366 L 253,365 L 254,365 L 255,365 L 255,364 L 252,361 L 253,358 L 253,357 L 254,356 L 255,354 L 255,353 L 256,351 L 257,351 L 258,351 L 257,351 L 257,350 L 257,349 L 260,340 L 261,340 L 260,340 L 259,339 L 259,338 L 259,337 L 258,337 L 258,336 L 257,335 L 257,334 L 258,334 L 257,334 L 257,333 L 257,332 L 256,332 L 257,332 L 257,331 L 256,331 L 257,331 L 256,331 L 257,331 L 257,330 L 257,331 L 258,331 L 257,331 L 258,331 L 258,332 L 258,333 L 259,333 L 259,334 L 260,334 L 260,335 L 261,335 L 262,335 L 262,334 L 262,335 L 262,334 L 262,335 L 263,335 L 263,334 L 264,334 L 265,334 L 266,334 L 266,333 L 267,333 L 267,332 L 268,332 L 268,331 L 268,330 L 269,330 L 269,329 L 270,329 L 269,329 L 270,329 L 269,329 L 270,329 L 270,328 L 271,328 L 270,328 L 271,328 L 271,327 L 272,327 L 272,328 L 272,327 L 272,328 L 272,327 L 272,328 L 272,327 L 273,327 L 273,328 L 273,327 L 273,328 L 273,327 L 274,327 L 275,327 L 275,328 L 275,327 L 276,327 L 277,327 L 277,326 L 278,326 L 279,326 L 279,325 L 279,326 L 279,325 L 280,325 "},"mt": {"name": "Mato Grosso","path": "M 297,332 L 297,331 L 297,332 L 296,331 L 296,332 L 295,332 L 295,331 L 295,332 L 294,332 L 293,332 L 292,332 L 292,331 L 291,331 L 291,330 L 291,331 L 290,331 L 290,330 L 290,331 L 290,330 L 290,331 L 290,330 L 289,330 L 288,330 L 288,329 L 287,329 L 287,328 L 286,328 L 285,328 L 285,327 L 284,327 L 284,328 L 284,327 L 283,327 L 282,327 L 282,326 L 282,327 L 282,326 L 281,326 L 281,325 L 280,325 L 279,325 L 279,326 L 279,325 L 279,326 L 278,326 L 277,326 L 277,327 L 276,327 L 275,327 L 275,328 L 275,327 L 274,327 L 273,327 L 273,328 L 273,327 L 273,328 L 273,327 L 272,327 L 272,328 L 272,327 L 272,328 L 272,327 L 272,328 L 272,327 L 271,327 L 271,328 L 270,328 L 271,328 L 270,328 L 270,329 L 269,329 L 270,329 L 269,329 L 270,329 L 269,329 L 269,330 L 268,330 L 268,331 L 268,332 L 267,332 L 267,333 L 266,333 L 266,334 L 265,334 L 264,334 L 263,334 L 263,335 L 262,335 L 262,334 L 262,335 L 262,334 L 262,335 L 261,335 L 260,335 L 260,334 L 259,334 L 259,333 L 258,333 L 258,332 L 258,331 L 257,331 L 258,331 L 257,331 L 257,330 L 257,331 L 255,329 L 254,330 L 253,330 L 253,329 L 252,329 L 251,329 L 251,328 L 250,328 L 250,327 L 249,327 L 250,327 L 249,327 L 249,326 L 248,326 L 248,325 L 248,324 L 247,324 L 248,324 L 247,324 L 247,323 L 248,323 L 247,323 L 247,322 L 247,321 L 247,320 L 247,319 L 247,318 L 247,317 L 248,317 L 248,316 L 249,316 L 249,315 L 248,315 L 249,315 L 249,314 L 249,313 L 248,313 L 247,313 L 245,313 L 243,313 L 242,313 L 241,313 L 240,313 L 239,313 L 238,313 L 237,313 L 233,313 L 232,313 L 230,313 L 229,313 L 228,313 L 227,313 L 226,313 L 225,313 L 224,313 L 223,313 L 223,312 L 223,311 L 223,309 L 223,308 L 223,307 L 223,306 L 222,304 L 222,303 L 222,302 L 219,298 L 218,297 L 219,296 L 222,296 L 222,293 L 222,292 L 222,290 L 221,290 L 221,289 L 221,288 L 220,288 L 221,288 L 220,288 L 221,288 L 220,288 L 220,287 L 220,286 L 220,287 L 220,286 L 219,286 L 219,285 L 219,284 L 219,283 L 219,282 L 220,282 L 220,281 L 220,280 L 219,280 L 219,279 L 219,278 L 218,278 L 217,278 L 218,278 L 217,278 L 217,277 L 217,278 L 217,277 L 217,278 L 216,277 L 216,278 L 216,277 L 216,276 L 217,275 L 217,276 L 217,275 L 218,275 L 218,274 L 219,274 L 220,274 L 220,273 L 220,272 L 221,272 L 220,271 L 221,271 L 220,271 L 221,271 L 221,270 L 222,270 L 222,269 L 222,270 L 222,269 L 222,268 L 223,268 L 223,267 L 224,267 L 224,266 L 224,265 L 224,264 L 225,264 L 224,264 L 224,263 L 224,262 L 225,262 L 225,261 L 226,261 L 226,260 L 227,260 L 228,260 L 228,259 L 228,258 L 229,258 L 227,257 L 227,256 L 227,255 L 227,254 L 226,254 L 226,253 L 226,252 L 225,252 L 224,252 L 225,252 L 224,252 L 224,251 L 224,250 L 224,249 L 224,248 L 224,247 L 225,247 L 225,246 L 226,246 L 226,245 L 227,245 L 227,244 L 226,244 L 226,243 L 226,242 L 226,241 L 225,241 L 224,241 L 223,241 L 222,241 L 222,240 L 221,240 L 221,241 L 221,240 L 221,241 L 220,241 L 220,240 L 219,240 L 219,239 L 214,239 L 212,239 L 210,239 L 206,239 L 205,239 L 204,239 L 204,238 L 204,237 L 205,237 L 205,236 L 205,237 L 205,236 L 205,235 L 205,234 L 205,233 L 205,232 L 205,231 L 205,230 L 204,230 L 204,229 L 204,228 L 203,228 L 203,227 L 204,227 L 204,226 L 204,225 L 204,224 L 205,224 L 205,223 L 204,223 L 204,222 L 204,221 L 204,222 L 204,221 L 205,221 L 205,220 L 205,219 L 204,219 L 204,218 L 204,217 L 203,217 L 203,216 L 203,215 L 203,216 L 203,215 L 204,215 L 204,214 L 204,213 L 204,212 L 204,211 L 205,211 L 205,210 L 204,210 L 204,209 L 205,209 L 208,209 L 209,209 L 211,209 L 214,209 L 220,209 L 226,209 L 233,209 L 234,209 L 235,209 L 238,209 L 239,209 L 246,209 L 247,209 L 248,209 L 248,208 L 249,208 L 248,207 L 248,208 L 247,208 L 247,207 L 248,207 L 248,206 L 248,205 L 248,204 L 248,203 L 249,203 L 248,203 L 249,203 L 249,202 L 249,201 L 249,200 L 249,199 L 249,198 L 249,197 L 248,197 L 248,196 L 248,195 L 249,195 L 249,194 L 250,194 L 250,193 L 251,192 L 250,192 L 250,191 L 250,190 L 251,190 L 251,189 L 252,189 L 253,189 L 253,190 L 253,191 L 254,191 L 254,192 L 254,193 L 255,193 L 255,194 L 255,195 L 256,196 L 256,197 L 256,198 L 257,199 L 257,200 L 258,200 L 258,201 L 258,202 L 258,203 L 258,204 L 258,205 L 258,206 L 259,206 L 259,207 L 259,208 L 260,208 L 261,208 L 261,209 L 262,209 L 261,209 L 261,210 L 262,210 L 263,210 L 264,210 L 264,211 L 265,211 L 265,212 L 266,212 L 266,213 L 267,213 L 266,213 L 266,214 L 267,214 L 266,214 L 267,214 L 267,215 L 268,215 L 269,215 L 270,215 L 270,216 L 270,217 L 271,217 L 272,217 L 277,217 L 283,218 L 284,218 L 287,218 L 288,218 L 293,218 L 295,219 L 297,219 L 299,219 L 300,219 L 305,219 L 308,220 L 309,220 L 310,220 L 311,220 L 314,220 L 315,220 L 317,220 L 320,221 L 321,221 L 323,221 L 324,221 L 325,221 L 328,221 L 332,221 L 333,221 L 337,222 L 344,222 L 347,222 L 350,223 L 353,223 L 355,223 L 358,223 L 360,223 L 362,223 L 361,223 L 362,223 L 361,224 L 361,225 L 361,226 L 360,226 L 360,227 L 359,227 L 359,228 L 359,229 L 359,230 L 359,231 L 358,231 L 358,232 L 357,233 L 357,234 L 356,235 L 357,235 L 356,235 L 357,235 L 357,236 L 356,236 L 356,237 L 356,238 L 356,239 L 356,240 L 356,241 L 355,241 L 355,242 L 356,242 L 356,243 L 355,243 L 355,244 L 355,245 L 354,245 L 354,246 L 354,247 L 355,247 L 355,248 L 356,248 L 355,248 L 355,249 L 355,250 L 355,251 L 356,252 L 355,252 L 356,253 L 355,253 L 355,254 L 355,255 L 355,256 L 356,256 L 356,257 L 356,258 L 356,259 L 356,260 L 355,260 L 355,261 L 355,262 L 356,262 L 356,263 L 356,264 L 356,265 L 356,264 L 357,264 L 357,265 L 356,265 L 357,265 L 358,265 L 358,266 L 357,266 L 357,267 L 356,267 L 356,268 L 357,268 L 356,268 L 356,269 L 356,270 L 357,270 L 356,270 L 356,271 L 356,272 L 355,272 L 355,273 L 355,274 L 354,274 L 354,275 L 354,276 L 354,277 L 353,277 L 353,278 L 353,279 L 353,280 L 353,281 L 353,282 L 353,283 L 352,283 L 352,284 L 351,284 L 351,285 L 351,286 L 351,287 L 351,288 L 351,289 L 351,290 L 350,290 L 350,291 L 350,292 L 350,293 L 349,293 L 350,293 L 349,293 L 349,294 L 350,294 L 349,294 L 349,295 L 348,295 L 347,295 L 347,296 L 347,295 L 346,295 L 345,295 L 344,296 L 343,296 L 343,297 L 342,297 L 342,298 L 341,298 L 341,299 L 342,299 L 341,299 L 341,300 L 341,301 L 341,302 L 340,302 L 341,302 L 341,303 L 340,303 L 340,302 L 340,303 L 340,304 L 340,305 L 339,305 L 339,306 L 339,307 L 338,307 L 338,306 L 337,306 L 337,307 L 336,307 L 335,307 L 335,308 L 335,307 L 334,307 L 333,307 L 333,308 L 333,309 L 332,309 L 332,310 L 331,310 L 331,311 L 330,311 L 329,311 L 329,312 L 329,313 L 329,312 L 329,313 L 328,313 L 327,313 L 327,314 L 327,315 L 328,315 L 328,316 L 328,317 L 327,317 L 328,317 L 327,317 L 327,318 L 326,318 L 327,318 L 326,318 L 326,319 L 325,319 L 325,320 L 324,320 L 324,321 L 323,321 L 323,322 L 322,322 L 323,322 L 322,322 L 322,323 L 322,324 L 321,324 L 322,324 L 321,324 L 321,325 L 321,326 L 320,326 L 320,327 L 320,328 L 320,329 L 320,330 L 319,330 L 320,330 L 319,330 L 320,330 L 319,330 L 320,330 L 320,331 L 319,331 L 320,331 L 319,331 L 319,332 L 320,332 L 319,332 L 320,332 L 319,332 L 319,333 L 320,333 L 320,334 L 321,334 L 321,335 L 321,336 L 322,336 L 322,337 L 321,337 L 320,337 L 319,337 L 318,337 L 317,337 L 316,337 L 315,337 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 314,336 L 314,337 L 313,337 L 314,337 L 313,337 L 312,337 L 312,336 L 312,337 L 312,336 L 311,336 L 310,336 L 310,335 L 310,334 L 310,333 L 311,333 L 311,332 L 312,332 L 313,332 L 313,330 L 313,327 L 313,326 L 312,326 L 312,327 L 311,327 L 311,328 L 310,328 L 310,329 L 309,329 L 309,330 L 308,330 L 308,331 L 308,332 L 308,331 L 307,331 L 307,332 L 307,331 L 307,332 L 307,331 L 306,331 L 306,332 L 305,332 L 304,332 L 304,331 L 303,331 L 303,330 L 302,330 L 301,330 L 301,329 L 301,330 L 301,329 L 301,330 L 300,330 L 299,330 L 298,330 L 298,331 L 297,331 L 297,332 L 297,331 L 297,332 "},"go": {"name": "Goiás","path": "M 362,259 L 362,260 L 362,261 L 361,261 L 362,261 L 361,261 L 361,262 L 361,263 L 360,263 L 361,263 L 360,263 L 361,263 L 361,264 L 360,264 L 361,264 L 360,264 L 360,265 L 361,265 L 362,265 L 362,266 L 362,265 L 362,266 L 363,266 L 364,266 L 365,266 L 365,267 L 366,267 L 367,267 L 368,268 L 369,268 L 372,270 L 373,271 L 374,271 L 374,270 L 374,269 L 374,268 L 374,267 L 375,267 L 375,266 L 376,266 L 376,265 L 377,265 L 377,264 L 377,265 L 378,265 L 377,265 L 377,266 L 378,266 L 379,266 L 379,267 L 380,265 L 381,265 L 381,266 L 382,266 L 382,267 L 383,267 L 384,267 L 384,268 L 384,269 L 384,268 L 384,269 L 384,270 L 384,271 L 384,272 L 385,272 L 385,271 L 385,270 L 385,269 L 386,269 L 386,270 L 386,271 L 387,271 L 388,271 L 388,270 L 388,271 L 388,270 L 389,270 L 390,270 L 390,269 L 390,270 L 390,271 L 390,272 L 390,271 L 390,272 L 390,271 L 390,272 L 390,271 L 391,271 L 392,271 L 393,271 L 393,272 L 393,271 L 393,272 L 393,271 L 394,271 L 394,272 L 395,272 L 396,272 L 397,274 L 397,273 L 398,273 L 398,272 L 397,272 L 397,271 L 397,270 L 397,269 L 398,269 L 399,269 L 398,269 L 399,269 L 399,270 L 400,270 L 400,271 L 401,271 L 401,270 L 401,271 L 402,271 L 403,271 L 403,270 L 404,270 L 405,270 L 404,270 L 405,270 L 405,269 L 406,269 L 407,269 L 407,268 L 408,268 L 409,268 L 409,267 L 410,267 L 411,267 L 413,267 L 414,267 L 414,266 L 414,265 L 415,265 L 415,266 L 415,267 L 416,267 L 417,267 L 418,267 L 418,266 L 419,266 L 419,267 L 418,267 L 417,267 L 416,267 L 416,268 L 416,269 L 416,270 L 416,271 L 416,272 L 417,272 L 418,272 L 418,271 L 419,271 L 420,271 L 420,272 L 419,272 L 418,272 L 418,273 L 417,273 L 417,274 L 417,275 L 418,275 L 418,276 L 417,276 L 417,277 L 417,278 L 416,278 L 417,278 L 417,279 L 417,280 L 417,281 L 417,282 L 417,283 L 418,283 L 419,283 L 419,284 L 420,284 L 419,284 L 420,284 L 420,285 L 421,285 L 421,286 L 422,286 L 421,286 L 421,287 L 420,287 L 420,288 L 421,289 L 420,289 L 421,289 L 420,289 L 420,290 L 421,290 L 420,290 L 420,291 L 420,292 L 420,293 L 420,294 L 419,294 L 418,294 L 417,294 L 416,294 L 416,293 L 416,292 L 415,292 L 414,292 L 414,291 L 413,291 L 413,292 L 412,292 L 413,292 L 413,293 L 413,294 L 413,295 L 413,296 L 412,296 L 411,296 L 410,296 L 410,295 L 409,295 L 408,295 L 408,296 L 407,296 L 408,296 L 408,297 L 407,298 L 407,299 L 408,299 L 408,298 L 408,299 L 409,299 L 409,300 L 408,300 L 408,301 L 407,301 L 407,302 L 407,303 L 408,303 L 408,304 L 408,305 L 409,305 L 409,306 L 409,307 L 408,307 L 407,308 L 406,308 L 405,308 L 404,308 L 404,309 L 403,309 L 404,309 L 403,309 L 404,309 L 403,309 L 402,309 L 402,310 L 402,309 L 401,309 L 401,308 L 401,307 L 401,306 L 401,307 L 401,306 L 402,306 L 402,305 L 402,304 L 402,303 L 401,303 L 401,302 L 399,302 L 398,302 L 397,302 L 392,302 L 391,302 L 390,302 L 390,303 L 390,304 L 389,304 L 389,305 L 390,305 L 389,305 L 390,305 L 389,305 L 390,305 L 390,306 L 389,306 L 389,307 L 389,308 L 389,309 L 389,310 L 391,310 L 392,310 L 393,310 L 395,310 L 397,310 L 398,310 L 399,310 L 401,310 L 402,310 L 402,311 L 401,311 L 402,311 L 402,312 L 402,313 L 401,313 L 401,314 L 400,314 L 400,315 L 400,316 L 400,317 L 401,317 L 402,317 L 402,318 L 402,317 L 402,318 L 403,318 L 403,319 L 403,318 L 403,319 L 403,320 L 404,320 L 403,320 L 403,321 L 404,320 L 404,321 L 403,321 L 404,321 L 404,322 L 404,323 L 405,323 L 404,323 L 405,323 L 404,323 L 404,324 L 404,323 L 404,324 L 403,324 L 404,324 L 403,324 L 402,324 L 402,325 L 403,325 L 402,325 L 403,325 L 402,325 L 401,325 L 402,325 L 401,325 L 402,325 L 402,326 L 402,325 L 401,325 L 401,326 L 401,325 L 401,326 L 402,326 L 401,326 L 401,327 L 400,327 L 401,327 L 400,327 L 401,327 L 400,327 L 400,328 L 399,328 L 399,327 L 399,328 L 399,329 L 399,330 L 400,330 L 401,330 L 402,330 L 402,331 L 403,331 L 403,332 L 402,332 L 403,332 L 402,332 L 403,332 L 402,332 L 402,333 L 402,334 L 401,334 L 402,334 L 401,334 L 402,334 L 401,334 L 401,335 L 402,335 L 402,336 L 402,337 L 402,338 L 401,338 L 401,339 L 400,339 L 400,340 L 399,340 L 399,339 L 399,340 L 399,339 L 399,340 L 398,340 L 398,341 L 397,341 L 397,342 L 397,341 L 397,342 L 396,342 L 396,343 L 395,343 L 395,342 L 395,343 L 394,343 L 393,344 L 393,343 L 392,343 L 391,343 L 390,343 L 390,342 L 389,342 L 389,341 L 389,342 L 388,342 L 387,342 L 386,342 L 385,342 L 385,341 L 384,341 L 384,342 L 383,342 L 382,342 L 381,342 L 381,341 L 380,341 L 379,341 L 379,342 L 378,342 L 378,343 L 377,343 L 377,342 L 376,342 L 376,343 L 375,343 L 375,344 L 375,345 L 374,345 L 373,345 L 373,346 L 373,345 L 372,345 L 372,344 L 371,344 L 370,344 L 370,345 L 369,345 L 370,345 L 369,345 L 368,345 L 368,346 L 367,346 L 367,345 L 366,345 L 365,345 L 364,345 L 364,346 L 363,346 L 362,346 L 361,346 L 360,346 L 360,347 L 360,348 L 359,348 L 359,349 L 358,349 L 358,350 L 358,351 L 358,352 L 357,352 L 357,353 L 356,353 L 355,353 L 354,353 L 354,354 L 354,355 L 353,355 L 353,356 L 352,356 L 352,357 L 353,357 L 353,358 L 352,357 L 351,357 L 351,356 L 350,356 L 350,355 L 349,355 L 348,355 L 348,354 L 347,354 L 347,355 L 347,354 L 346,354 L 347,354 L 346,354 L 346,353 L 345,353 L 344,353 L 343,353 L 343,352 L 343,353 L 343,352 L 342,353 L 342,352 L 342,353 L 341,353 L 341,352 L 340,352 L 339,352 L 339,351 L 339,352 L 339,351 L 338,351 L 338,350 L 337,350 L 338,350 L 337,350 L 336,350 L 335,350 L 335,349 L 334,349 L 335,349 L 334,349 L 333,348 L 332,348 L 331,348 L 331,347 L 331,346 L 330,346 L 329,346 L 328,346 L 327,346 L 326,346 L 325,346 L 324,346 L 324,345 L 323,345 L 323,344 L 324,344 L 324,343 L 325,343 L 326,343 L 326,342 L 326,341 L 325,341 L 324,341 L 323,341 L 323,342 L 322,342 L 322,341 L 321,341 L 322,341 L 321,341 L 321,340 L 321,339 L 321,338 L 322,338 L 322,337 L 322,336 L 321,336 L 321,335 L 321,334 L 320,334 L 320,333 L 319,333 L 319,332 L 320,332 L 319,332 L 320,332 L 319,332 L 319,331 L 320,331 L 319,331 L 320,331 L 320,330 L 319,330 L 320,330 L 319,330 L 320,330 L 319,330 L 320,330 L 320,329 L 320,328 L 320,327 L 320,326 L 321,326 L 321,325 L 321,324 L 322,324 L 321,324 L 322,324 L 322,323 L 322,322 L 323,322 L 322,322 L 323,322 L 323,321 L 324,321 L 324,320 L 325,320 L 325,319 L 326,319 L 326,318 L 327,318 L 326,318 L 327,318 L 327,317 L 328,317 L 327,317 L 328,317 L 328,316 L 328,315 L 327,315 L 327,314 L 327,313 L 328,313 L 329,313 L 329,312 L 329,313 L 329,312 L 329,311 L 330,311 L 331,311 L 331,310 L 332,310 L 332,309 L 333,309 L 333,308 L 333,307 L 334,307 L 335,307 L 335,308 L 335,307 L 336,307 L 337,307 L 337,306 L 338,306 L 338,307 L 339,307 L 339,306 L 339,305 L 340,305 L 340,304 L 340,303 L 340,302 L 340,303 L 341,303 L 341,302 L 340,302 L 341,302 L 341,301 L 341,300 L 341,299 L 342,299 L 341,299 L 341,298 L 342,298 L 342,297 L 343,297 L 343,296 L 344,296 L 345,295 L 346,295 L 347,295 L 347,296 L 347,295 L 348,295 L 349,295 L 349,294 L 350,294 L 349,294 L 349,293 L 350,293 L 349,293 L 350,293 L 350,292 L 350,291 L 350,290 L 351,290 L 351,289 L 351,288 L 351,287 L 351,286 L 351,285 L 351,284 L 352,284 L 352,283 L 353,283 L 353,282 L 353,281 L 353,280 L 353,279 L 353,278 L 353,277 L 354,277 L 354,276 L 354,275 L 354,274 L 355,274 L 355,273 L 355,272 L 356,272 L 356,271 L 356,270 L 357,270 L 356,270 L 356,269 L 356,268 L 357,268 L 356,268 L 356,267 L 357,267 L 357,266 L 358,266 L 358,265 L 358,264 L 358,263 L 359,263 L 359,262 L 359,261 L 360,261 L 360,260 L 360,261 L 360,260 L 361,260 L 362,260 L 362,259 L 363,259 L 362,259 "},"df": {"name": "Distrito Federal","path": "M 398,302 L 399,302 L 400,302 L 401,302 L 401,303 L 402,303 L 402,304 L 402,305 L 402,306 L 401,306 L 401,307 L 401,306 L 401,307 L 401,308 L 401,309 L 402,309 L 402,310 L 402,309 L 402,310 L 401,310 L 400,310 L 399,310 L 398,310 L 397,310 L 396,310 L 395,310 L 394,310 L 393,310 L 392,310 L 391,310 L 390,310 L 389,310 L 389,309 L 389,308 L 389,307 L 389,306 L 390,306 L 390,305 L 389,305 L 390,305 L 389,305 L 390,305 L 389,305 L 389,304 L 390,304 L 390,303 L 390,302 L 391,302 L 392,302 L 393,302 L 395,302 L 396,302 L 397,302 L 398,302 "}} });
Index: public/vendors/vmap/maps/jquery.vmap.canada.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.canada.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.canada.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add Canada Map Data Points */
+jQuery.fn.vectorMap('addMap', 'canada_en', {"width": 900, "height": 867, "paths":{"nt": {"path": "M340.29,126.02l5.05,-2.26l2.76,0.43l6.5,-3.85l1.23,0.01l1.54,2.19l-1.93,8.62l-1.55,0.59l-2.09,-1.15l-1.22,-2.29l-1.32,0.13l-1.22,2.29l-1.34,-0.24l-0.23,-1.68l-1.46,-1.53l-5.45,1.33l0.72,-2.6ZM104.26,307.63l1.14,-2.98l2.22,-1.67l0.46,-2.51l1.2,-1.51l0.23,-5.06l11.84,-21.11l2.68,2.63l1.46,3.15l0.02,1.76l1.66,1.45l0.66,-0.55l-0.71,-3.84l1.06,0.36l0.07,-0.5l-1.28,-1.24l0.06,-1.25l-1.9,-1.48l0.63,-1.34l1.23,1.78l2.06,-0.46l-1.27,-0.67l-0.73,-2.09l0.91,-2.19l0.82,3.04l1.3,1.4l0.43,-0.74l-0.92,-1.52l0.01,-3.23l0.65,0.02l-0.28,2.19l0.82,0.07l0.59,-1.89l1.87,2.93l1.38,-3.7l2.79,0.44l2.46,2.3l2.79,-4.02l0.7,0.3l-1.1,1.42l0.39,1.34l1.9,1.72l-5.05,2.62l-1.93,2.48l0.9,0.19l1.58,-1.41l2.1,0.22l0.77,-0.72l1.24,0.52l0.71,-0.84l2.64,1.36l1.41,-0.07l3.43,-3.67l2.02,1.7l1.31,0.19l0.94,-0.92l0.78,0.94l6.93,-1.77l0.6,-0.85l0.51,0.79l-0.7,1.79l0.73,0.45l3.57,-3.06l0.03,-0.74l1.1,-0.2l0.29,0.66l1.32,-0.75l0.33,0.91l1.18,-0.31l-0.37,1.09l0.63,0.83l2.24,0.79l2.99,-2.39l-0.43,1.39l0.64,0.69l-0.11,1.21l-1.7,1.0l-6.12,0.53l-2.08,0.64l-1.02,1.21l-1.62,-0.04l-1.6,1.4l-0.25,-1.61l-7.41,-1.01l-2.29,1.84l-0.29,1.06l-5.21,-0.23l-2.66,2.77l-2.4,-0.18l-1.66,2.32l-1.61,-0.49l-0.96,1.13l0.3,2.7l2.2,2.47l0.77,-0.45l-1.27,-1.27l0.38,-0.94l1.27,0.68l0.62,-0.79l0.4,1.43l1.02,-0.16l0.99,1.02l1.61,-0.85l-0.45,-2.08l-1.52,0.19l-0.35,-0.72l1.13,0.16l-0.6,-1.73l0.72,-1.38l2.28,-0.02l0.45,0.71l1.46,-0.81l0.65,0.9l1.17,-1.23l3.27,-0.61l2.33,-2.31l0.67,0.77l-1.51,2.02l0.81,0.22l-0.39,0.95l2.46,-0.58l-0.25,0.99l0.88,0.61l-1.83,2.69l0.65,1.0l1.64,-2.72l7.95,-6.03l5.85,-0.13l2.58,0.65l-1.07,2.79l1.9,1.33l0.27,-1.09l1.24,0.05l5.15,-2.51l1.22,-3.31l1.85,-0.43l4.45,1.02l0.03,-1.32l-2.64,-2.29l1.71,-1.52l-1.85,-0.45l2.47,-2.88l2.54,8.59l-0.04,6.34l-1.07,5.48l2.25,8.32l2.66,3.34l0.85,0.12l0.65,-1.18l1.59,0.69l1.22,-1.47l-0.6,-2.09l0.72,-1.04l-0.89,-1.36l0.56,-0.7l2.36,-0.05l-0.33,1.7l0.79,0.38l1.3,-1.37l-1.55,-1.87l2.51,-2.33l2.01,0.05l0.56,-0.74l0.16,1.45l-2.13,4.05l1.06,1.48l1.87,0.23l-5.37,4.32l0.04,1.48l0.86,0.84l2.07,1.0l0.85,-0.51l1.93,1.27l2.46,-0.33l0.26,-1.48l2.2,0.12l2.25,-5.23l1.23,-0.68l0.86,1.2l5.42,1.52l3.72,2.51l3.56,5.74l-10.78,31.17l22.92,34.62l25.67,33.56l14.94,3.76l6.82,13.72l4.14,3.52l30.8,11.84l26.18,8.96l-10.81,81.09l-51.46,-8.44l-52.41,-11.91l-51.58,-15.14l-28.53,-9.89l-18.38,-7.37l0.81,-1.02l-0.28,-4.88l0.73,-2.33l-1.59,-1.36l-0.37,-3.96l1.97,-1.43l0.22,-3.73l-2.24,-1.11l-1.52,1.67l-2.45,-0.87l-2.02,0.56l-3.8,-3.91l-1.79,1.13l-0.57,-1.54l-1.06,-0.17l-0.9,1.18l-1.62,-1.42l-1.87,0.55l-1.28,-0.91l1.63,-5.05l-1.3,-0.87l1.67,-1.65l0.93,-5.74l-1.07,-1.73l-2.01,-0.66l-1.39,-2.65l-0.78,-2.0l0.37,-3.13l-1.1,-0.69l0.04,-3.67l-0.79,-2.47l-1.51,-0.56l-1.12,0.7l-0.11,-1.18l-2.66,-2.01l0.84,-0.58l0.0,-2.28l1.23,-0.98l-0.39,-0.69l1.61,-0.78l-1.63,-3.36l-0.09,-5.67l3.01,-3.13l-1.57,-1.35l0.26,-2.13l-1.16,-2.28l2.31,-0.46l1.88,-1.83l-0.37,-5.19l-1.66,-0.64l1.9,-0.06l0.56,-1.03l-3.49,-5.55l0.5,-1.17l-0.74,-2.15l0.94,-0.65l0.04,-5.58l-1.89,-2.03l-1.63,0.89l-1.84,-0.85l2.06,-1.84l-1.29,-2.3l-0.01,-2.24l-3.17,-4.16l1.39,-0.32l0.62,-1.63l2.04,-0.76l0.1,-1.36l-1.06,-0.79l0.64,-1.59l-1.0,-0.97l4.88,-2.33l2.73,-2.47l0.15,-4.09l-0.81,-1.96l2.85,-1.34l-1.48,-2.56l-3.29,1.1l0.87,-1.33l-0.22,-1.05l-1.96,-0.69l-2.27,0.42l-1.07,-0.82l0.77,-1.25l-0.44,-0.84l1.7,-0.85l1.09,-2.06l-0.16,-1.35l-1.16,-0.51l1.43,-1.81l0.91,0.37l0.45,-1.72l1.25,-0.83l-0.23,-3.6l1.22,-1.26l-0.87,-3.87l1.56,0.55l0.52,-0.89l-16.25,-8.78ZM207.0,476.23l1.61,4.53l5.87,2.48l0.59,1.9l3.69,3.15l6.27,1.74l4.69,-0.33l1.76,0.73l3.76,-0.8l1.5,1.2l2.72,0.02l2.0,-1.62l0.22,-3.53l2.03,-1.3l2.31,-0.97l1.96,0.23l0.3,1.85l3.53,-0.52l4.71,-1.97l4.89,-4.5l1.91,-0.5l1.98,-1.93l0.04,-1.86l5.21,-3.43l2.82,0.57l0.14,1.03l3.68,0.38l0.65,-0.92l-0.61,-0.65l4.19,-1.04l2.39,-2.13l-0.22,-0.59l-6.06,-1.61l0.35,-0.51l4.93,1.66l0.78,-0.54l-0.9,-0.6l0.42,-0.41l3.57,2.25l-0.52,2.9l3.49,-1.45l1.55,-2.02l-1.55,-1.61l-3.5,-1.36l-3.53,-2.56l-7.39,-0.99l-4.47,1.2l-2.92,1.65l-3.83,5.35l-7.36,4.08l-3.92,-0.15l-0.72,-0.81l-3.17,0.75l-0.99,-1.17l-1.12,0.24l0.13,-0.86l-1.31,-0.93l0.09,-1.38l-3.31,-4.19l0.1,-1.79l-3.43,0.11l-1.7,-2.68l-1.93,-1.37l-0.76,-2.21l-3.15,-2.05l0.15,-0.71l-2.21,-2.46l-1.51,1.96l1.37,2.32l0.46,2.86l3.58,0.85l-1.8,4.28l2.21,1.78l-0.28,1.92l2.36,3.96l-1.1,1.6l-3.31,0.37l-0.87,-1.09l-3.3,-0.31l-3.32,3.82l-0.15,1.58l-1.73,-0.41l-1.46,0.69l1.28,2.16l-1.78,0.66l-0.95,-1.34l-4.58,-2.58l-0.94,0.43l0.03,1.56l-2.72,0.61l-3.89,-4.33l-1.36,-0.2l1.36,1.82ZM179.03,366.19l1.23,1.14l1.05,-2.95l3.02,0.66l0.35,1.43l1.65,0.94l4.89,0.48l0.48,2.95l2.68,-2.11l-0.16,-1.49l8.12,3.1l1.31,1.76l0.26,2.1l2.26,0.8l-1.7,1.71l-3.35,-0.74l-1.03,-1.5l-2.81,-1.71l-3.62,-0.27l-0.01,0.86l1.5,0.47l-0.05,1.18l2.05,1.97l-0.17,1.13l-2.37,1.85l-3.7,0.25l-0.91,1.12l-1.2,-0.13l0.87,2.2l-1.5,2.06l-1.16,0.39l-3.85,-0.85l-1.02,0.69l0.95,1.99l7.94,5.44l1.13,1.57l5.15,-1.44l-0.18,-1.05l2.6,-4.41l6.83,-2.0l2.81,1.33l-1.07,3.16l-3.75,2.86l-2.71,0.66l-0.53,1.61l-1.03,0.5l-2.31,-0.97l-1.56,0.81l-0.48,1.52l0.83,1.79l1.17,0.66l2.7,-1.8l3.15,-0.01l4.39,-2.13l2.0,-0.14l2.25,-2.17l3.37,0.94l-0.18,-3.3l-1.53,-1.0l-0.85,-2.14l3.94,-0.96l-0.42,-1.74l5.94,2.03l-0.23,1.08l2.52,3.2l0.26,-1.1l1.12,0.85l4.77,-0.1l0.43,-1.45l-1.1,-0.13l2.04,-1.38l-3.01,0.14l-0.54,-1.23l2.01,-2.42l2.7,0.59l0.02,-1.17l-1.34,-0.99l2.79,-0.42l1.32,-1.83l-0.37,-1.16l2.69,-2.18l-1.0,-1.29l-1.77,0.84l-0.45,-0.57l2.9,-2.14l0.15,-1.92l-4.08,0.56l-3.44,3.36l-4.18,0.24l-5.52,-2.26l-0.45,-0.98l-2.09,0.14l-1.46,-2.17l-2.34,-0.36l0.32,-0.78l1.63,0.33l-0.01,-1.57l1.13,0.06l1.62,-1.32l4.32,-0.21l2.51,-1.37l3.18,-0.19l-1.55,-2.45l-2.07,-0.71l0.86,-0.58l-2.34,-0.98l-0.08,-1.09l-1.01,-0.39l-9.34,0.7l-1.73,-0.78l-3.27,1.23l-0.23,0.77l-4.53,0.49l-3.99,-1.18l-0.98,1.01l-2.43,-1.06l-1.9,1.06l-0.03,-1.43l-1.47,0.89l-4.68,-0.02l-2.12,0.74l-1.61,-1.82l-2.33,1.46l-3.5,-2.31l-1.4,0.61l-1.36,2.74l0.84,5.19l0.77,-0.04l0.72,-1.84ZM212.83,287.18l-0.0,-0.02l-0.45,-0.39l0.6,0.28l-0.15,0.13ZM211.88,286.62l-0.11,0.01l-0.06,-0.14l0.17,0.13ZM179.99,279.15l0.22,-0.13l-0.03,0.22l-0.19,-0.09ZM142.22,285.94l-0.69,-0.85l0.05,-0.26l0.51,-0.01l0.13,1.12ZM142.77,264.94l0.0,-0.21l0.23,0.0l-0.16,0.1l-0.07,0.11ZM156.42,271.63l-0.26,-0.16l-0.02,-0.28l0.34,0.17l-0.07,0.26ZM155.56,270.82l-0.15,0.03l0.11,-0.14l0.03,0.11ZM159.83,281.2l0.4,-0.64l0.34,-0.13l0.07,0.65l-0.81,0.12ZM202.31,297.59l-0.11,-0.08l0.06,-0.02l0.05,0.1ZM201.72,297.39l-0.66,-0.04l0.07,-0.32l0.01,-0.01l0.59,0.37ZM211.0,288.37l-0.89,0.21l-0.21,-0.52l1.07,-0.1l0.02,0.4ZM207.97,287.77l-0.36,0.28l-0.26,0.01l0.62,-0.56l-0.0,0.27ZM335.03,145.95l1.0,-0.91l-0.03,-4.67l1.26,-2.2l0.69,0.77l4.27,-1.92l3.09,0.31l2.51,-0.9l1.93,0.93l1.22,-0.62l3.04,0.79l-0.79,3.54l-4.36,0.48l-0.82,0.7l0.81,2.8l2.92,0.26l-0.46,3.19l-1.57,2.84l-3.77,1.35l-1.94,-0.92l-4.87,1.52l-1.46,-1.4l-0.3,-2.44l-1.06,-0.05l-1.46,-2.11l0.16,-1.34ZM343.05,180.4l0.53,-2.45l1.48,-0.35l-0.86,3.83l-1.15,-1.03ZM297.62,196.66l-2.81,-3.08l3.43,-3.66l7.2,1.64l3.36,-1.6l1.84,0.21l0.67,-1.17l1.68,-0.67l-0.5,-1.1l-6.96,1.23l-5.82,-1.7l3.14,-3.59l12.45,1.14l-0.22,-1.42l-7.93,-1.17l-2.24,-1.68l1.93,-0.92l0.07,-1.43l-0.97,-0.43l0.79,-1.37l2.92,-1.11l7.07,3.4l1.21,-0.14l0.02,-0.84l-1.49,-0.63l-1.37,-1.85l-2.82,-0.86l-0.3,-0.94l0.54,-1.4l2.58,-1.59l2.72,0.22l1.32,-0.67l0.16,0.75l1.65,0.26l1.13,1.18l-0.79,2.25l0.19,4.4l6.19,-0.25l2.12,2.71l-0.7,1.1l0.22,1.97l3.12,3.75l-2.83,0.82l-0.56,1.29l3.73,0.5l0.64,2.56l-0.82,2.31l0.43,2.83l4.71,-0.03l0.43,0.9l2.08,0.36l-3.46,15.46l-1.6,-0.54l-0.96,1.16l-1.49,-0.26l-0.29,2.07l-7.3,3.12l-5.1,0.78l-4.59,-0.96l-2.46,-1.54l-2.22,-3.46l-0.83,-2.34l0.38,-0.84l4.45,-1.61l3.46,0.41l1.07,-1.88l1.85,-0.47l7.54,1.25l4.33,-3.19l1.09,-1.4l-0.22,-0.82l-1.89,-0.86l-2.08,1.97l-1.45,-0.93l-1.17,0.94l-2.49,-0.21l0.89,-2.14l-0.81,-0.78l-1.01,1.19l0.41,-1.64l-0.83,-0.71l-1.06,3.09l-0.92,0.5l-0.8,0.07l-0.46,-1.42l-0.9,1.31l-3.84,-0.33l0.32,-1.39l1.77,-0.52l-0.23,-1.02l-1.17,0.31l1.46,-2.76l3.52,-1.68l-0.97,-0.99l-2.7,0.74l-0.38,-2.37l-0.91,0.33l-1.8,4.91l-1.27,-2.51l-1.05,0.74l1.08,3.03l-1.36,2.08l-3.46,1.29l-0.74,-0.72l0.75,-4.37l-1.76,1.25l-1.37,-1.35l-0.18,2.89l-0.93,1.06l-2.19,-2.46l1.46,-1.09l-0.26,-0.63l-1.29,0.17l0.9,-2.21l-2.29,-0.11l-1.24,1.13l-1.56,-1.19ZM327.94,134.68l3.9,-1.93l-0.25,1.87l0.84,0.29l1.5,4.62l-3.72,1.43l-2.27,-6.26ZM321.01,163.06l1.64,-1.4l4.15,0.26l1.23,1.73l-0.05,1.17l-1.23,1.11l-5.74,-2.86ZM326.03,261.21l-0.4,-1.5l-1.62,-0.83l-0.63,-3.15l3.92,1.28l-1.26,4.19ZM325.43,263.42l0.07,-0.72l0.09,0.01l0.24,0.88l-0.39,-0.16ZM260.9,269.58l0.42,-3.04l1.57,-3.05l4.59,-3.99l3.77,-0.66l0.24,-2.37l-1.72,-0.97l-0.37,-1.62l3.89,-3.4l2.37,-0.69l4.6,-3.62l3.27,-0.17l2.61,-1.39l7.37,-1.23l6.65,-2.24l1.96,1.51l0.76,4.13l-2.16,5.66l0.16,1.56l-2.64,0.65l-0.45,1.8l-2.29,1.2l0.2,1.21l1.63,0.68l3.03,-1.33l1.9,1.35l2.3,-2.14l0.07,-0.89l-0.92,-0.59l2.08,-2.48l2.58,-1.51l5.25,4.03l4.41,4.94l-0.93,2.75l-1.69,1.01l0.02,0.76l-3.52,1.88l0.79,1.66l-0.7,2.49l4.24,-2.64l0.94,2.06l0.72,-0.16l0.21,-2.62l0.92,-1.22l1.44,-0.1l0.63,-1.52l0.55,0.59l-0.5,1.33l1.36,1.71l0.83,-0.66l-1.02,-1.51l0.87,-0.51l1.37,2.93l-11.48,51.42l-17.46,-4.16l-0.83,1.68l-1.14,0.12l0.0,0.67l1.45,0.6l-2.71,-0.2l0.39,-3.59l-29.83,-8.45l-1.36,2.79l1.84,5.58l-0.46,-0.2l-2.15,-3.26l0.13,-4.89l3.8,-1.52l18.25,1.15l5.68,2.72l1.35,-0.09l6.08,3.41l0.65,-0.81l0.71,0.47l2.24,-0.65l4.22,1.29l0.77,-0.31l0.09,-1.36l-0.57,-0.96l-2.71,-0.99l-0.85,-3.09l-4.83,-2.52l-1.74,-2.41l-1.7,-1.21l-0.85,0.44l-2.39,-2.06l-1.72,0.58l-1.18,-0.69l-1.38,0.56l-7.58,-0.75l-1.02,-0.84l-2.18,-0.06l-1.02,-1.65l-9.36,-2.1l-0.35,-2.73l-2.44,-4.16l0.06,-2.79l4.75,-1.74l6.54,0.4l1.06,-0.88l3.98,-0.43l3.24,0.9l0.7,-1.05l-1.86,-1.16l1.71,-0.55l2.51,1.65l2.88,-0.86l0.17,-0.64l-2.9,-0.09l0.25,-1.03l-2.57,-0.99l-11.15,0.14l0.4,-1.13l-1.05,-1.55l-1.28,0.93l0.71,1.01l-0.39,0.69l-0.78,-0.88l-0.84,0.41l-2.22,-0.81l-0.42,-1.04l0.66,-1.04l4.31,-0.03l0.25,-0.72l-1.15,-1.3l1.24,-0.2l0.19,-0.81l-2.72,-0.71l-1.94,1.08l-1.2,-2.15l-1.98,-0.51l-1.25,0.56ZM315.33,268.23l-0.79,0.05l-0.04,-0.21l1.17,-0.5l-0.34,0.67ZM272.66,162.85l4.64,-4.16l5.15,0.75l3.53,-4.51l5.56,-1.78l0.35,-1.57l1.23,-0.32l3.69,-3.82l3.01,-1.44l2.09,-2.67l6.23,0.54l3.18,3.53l1.58,0.17l0.36,-0.74l1.02,0.52l1.46,-1.56l-0.22,-0.81l-1.45,-0.48l-0.12,-0.94l2.0,-0.8l0.09,-0.67l1.38,0.07l3.52,6.32l-0.71,1.29l-4.29,0.72l-1.27,1.18l0.12,2.98l1.96,2.78l-0.93,0.62l-1.65,-1.71l-0.93,0.51l1.02,3.24l-0.08,2.78l-2.83,1.97l-4.16,-0.31l-0.74,0.87l-0.38,3.99l-1.34,0.94l-2.07,-0.19l-1.48,-3.82l2.69,-6.09l1.64,-1.76l-0.38,-1.79l-1.62,1.02l-1.49,-0.63l-0.68,1.29l-1.12,0.01l-0.08,3.74l-1.39,0.75l-1.27,-1.71l-1.12,0.81l-0.39,1.07l1.24,1.48l-0.17,2.29l-0.71,0.92l-1.58,0.04l-0.8,2.2l-1.34,1.07l0.23,-6.34l-2.15,0.29l-0.4,3.84l-1.82,1.22l0.98,2.96l-0.86,-0.21l-2.15,2.57l-0.71,0.02l-0.37,-1.45l-2.02,1.61l1.52,-3.13l0.0,-1.45l-1.3,-0.19l1.22,-3.06l-0.72,-1.92l-1.64,0.63l-1.1,3.43l-2.24,1.0l-1.95,-3.6l-1.81,-0.41l-0.67,1.27l-1.44,0.51l-0.88,-0.46l2.44,-4.16l-0.84,-1.36l-1.28,0.23ZM299.5,310.16l0.53,0.27l0.45,0.46l-0.39,-0.06l-0.6,-0.66ZM287.58,182.41l6.55,-5.43l2.92,-0.38l3.03,-2.49l0.92,0.33l-1.17,2.49l-6.46,7.49l-2.56,1.32l-1.02,-1.78l-2.21,-1.55ZM219.8,246.37l1.52,-3.11l1.68,-0.43l-0.15,-1.48l1.45,-0.33l2.92,-3.8l3.01,-1.09l-0.3,-1.38l1.39,-1.18l0.37,-3.63l0.67,0.55l3.73,-0.49l0.42,-1.4l-1.4,-2.89l1.96,-1.12l3.44,-4.93l3.16,-1.5l0.96,-2.46l1.55,-0.35l1.1,-1.28l0.25,-1.97l-1.74,-1.84l1.12,-10.83l12.68,2.22l6.68,0.2l2.16,1.86l0.24,2.19l3.74,4.86l2.46,1.93l-1.97,2.47l0.11,1.84l0.74,-0.05l0.38,-1.36l2.29,-2.06l1.47,0.76l-0.4,2.36l-1.46,1.97l0.34,0.56l1.8,-0.08l1.7,-1.79l0.09,-1.82l0.98,-0.4l4.16,-0.06l3.39,2.19l2.27,4.11l3.45,9.67l1.44,1.82l0.81,3.18l-0.08,1.01l-3.31,1.88l-4.92,0.78l-21.54,8.24l-3.03,5.52l-0.93,0.52l-2.88,1.16l-2.62,-1.86l-0.7,3.3l-3.38,3.51l-1.26,5.18l-2.89,3.36l-5.75,0.43l-0.32,-1.92l-1.09,-0.53l-4.35,3.08l-3.99,0.69l-1.69,1.33l-1.8,-0.62l-0.51,-1.09l-0.33,-12.47l-5.62,-8.84l1.12,0.8l0.5,-1.07l-5.29,-2.0ZM279.35,469.63l-0.81,0.33l-0.13,-0.34l0.26,0.05l0.67,-0.04ZM278.07,469.33l-0.38,-0.18l-0.06,-0.16l0.41,0.07l0.03,0.27ZM275.16,468.95l-0.59,0.05l-0.03,-0.13l0.49,0.0l0.13,0.08ZM281.78,464.95l-4.05,-0.88l-0.14,-0.35l4.03,1.11l0.15,0.12ZM276.6,463.76l-0.13,0.17l-0.35,-0.58l0.41,0.41l0.07,0.01ZM276.39,464.3l0.36,0.54l-0.9,1.06l-6.11,-0.67l6.65,-0.93ZM269.08,465.37l-0.54,0.79l-1.14,0.56l0.84,-1.17l0.84,-0.18ZM278.74,175.78l-0.49,-0.42l1.55,-0.55l-0.56,0.63l-0.51,0.34ZM280.74,173.18l-0.05,-0.53l0.37,-0.4l-0.17,0.44l-0.15,0.48ZM265.82,295.59l0.41,0.33l-0.56,-0.18l0.16,-0.15ZM262.97,472.57l0.3,-0.5l1.01,-0.75l0.1,0.75l-1.41,0.49ZM264.57,470.49l-0.08,-0.04l0.12,0.01l-0.04,0.03ZM261.08,475.09l1.41,-0.74l0.34,0.01l-1.59,0.92l-0.17,-0.19ZM260.71,477.06l0.01,-0.01l0.26,-0.29l-0.23,0.28l-0.05,0.03ZM252.27,478.12l1.89,-0.13l2.85,-0.98l-2.56,1.2l-2.18,-0.09ZM253.39,475.23l0.88,-0.91l2.58,0.13l-1.27,0.75l-2.19,0.02ZM253.56,482.0l0.82,-1.36l0.08,0.05l0.52,0.89l-1.41,0.42ZM255.87,479.98l0.06,-0.04l-0.0,0.02l-0.05,0.02ZM252.51,480.41l0.2,-0.7l0.82,-0.39l-0.5,1.23l-0.52,-0.13ZM248.01,474.32l0.05,0.02l-0.05,-0.01l-0.0,-0.0ZM248.08,474.34l0.75,0.13l-0.24,0.0l-0.51,-0.13ZM221.25,374.75l-0.01,0.26l-0.25,-0.1l0.2,-0.1l0.06,-0.06ZM220.4,374.64l-0.4,-0.18l0.34,0.07l0.06,0.11ZM225.82,389.55l2.08,-1.35l0.69,0.67l-1.45,0.55l-1.32,0.13ZM226.56,364.82l0.55,-0.0l0.3,0.2l-0.94,0.2l0.1,-0.39ZM212.26,480.34l1.69,-0.47l1.05,1.42l-1.79,-0.03l-0.96,-0.92ZM198.62,367.19l0.57,-0.1l0.15,0.16l-0.12,0.1l-0.6,-0.17ZM192.01,266.81l0.3,-0.37l0.16,0.54l-0.24,0.16l-0.23,-0.33ZM134.31,262.76l0.12,-0.19l0.63,-0.37l-0.53,0.46l-0.22,0.1ZM132.82,267.14l0.27,0.07l0.02,0.08l-0.15,0.11l-0.14,-0.25Z", "name": "Northwest Territories"}, "nu": {"path": "M694.52,496.9l1.45,-0.41l1.5,1.75l-1.78,-0.16l-1.18,-1.18ZM682.85,477.29l0.06,-0.73l3.09,-1.55l2.28,-0.08l0.16,0.84l0.97,-0.11l0.46,2.5l-0.68,2.21l-0.48,-0.03l-0.07,-0.92l-1.47,0.05l-4.32,-2.18ZM458.76,294.96l0.81,-2.89l2.15,-0.98l0.63,-1.06l-0.43,-1.03l-1.73,-0.01l-0.34,-2.89l1.13,-2.2l0.18,-3.94l1.05,-0.04l0.7,-1.09l-0.42,-2.4l1.76,0.32l0.23,-0.85l-1.04,-1.03l1.57,-7.74l1.62,-0.71l-0.82,-1.1l0.61,-0.81l1.96,0.32l-0.1,-0.83l-1.25,-0.66l0.98,-1.74l5.77,-6.74l3.91,-2.04l3.49,-1.3l9.14,0.53l1.4,1.76l-4.2,4.64l-2.77,4.99l-3.85,10.54l-0.33,3.11l0.51,1.79l2.87,3.81l-0.94,7.56l0.38,2.71l2.15,4.67l4.81,6.14l3.81,1.67l0.83,2.53l-2.26,-0.26l-0.55,1.17l-1.27,0.17l-0.32,1.27l-1.2,-0.52l-1.85,0.77l-2.42,2.82l-3.81,1.88l1.46,0.7l2.86,-0.76l3.54,-3.28l1.99,-0.62l2.28,0.52l1.59,-0.81l-0.01,0.92l-1.91,0.79l1.09,0.43l0.39,3.17l1.59,0.09l0.64,-1.5l-0.58,-4.42l0.82,-0.76l-0.95,-1.67l0.13,-2.55l1.52,-1.47l-0.77,-4.04l-1.08,-0.95l-1.26,0.21l-0.19,0.88l-2.62,-0.82l-1.39,-1.8l0.57,-0.85l-1.02,-2.06l-2.93,-2.0l1.72,0.19l-0.23,-0.81l1.6,-0.72l0.77,-1.71l-0.74,-1.32l0.95,-0.96l2.07,0.23l3.15,2.51l2.6,3.96l0.62,-1.59l-2.0,-3.48l-1.33,-0.47l-0.71,-1.71l-1.53,-0.76l0.54,-1.17l1.87,-0.1l0.6,-1.22l-2.53,0.16l-0.02,-1.86l-2.05,1.96l-2.72,-1.64l-0.66,-1.5l0.9,-0.86l-1.62,-1.3l-0.08,-5.91l0.49,-1.27l2.32,0.46l8.46,3.95l0.2,-0.85l-7.54,-4.52l-1.19,-2.97l4.62,1.57l3.94,0.35l1.4,0.94l0.52,0.05l-0.06,-0.89l-1.15,-1.13l-5.25,-1.25l-3.8,-1.83l0.2,-2.03l1.57,-1.49l2.59,3.45l0.84,-0.07l-1.98,-3.94l2.49,-1.67l2.45,0.71l0.73,2.42l1.01,0.58l-0.44,-4.04l-2.15,-1.01l1.91,-1.63l2.87,-1.84l0.95,0.17l1.13,-1.93l8.12,-0.24l2.03,3.56l0.89,6.26l3.98,2.05l0.4,5.23l2.94,3.88l-6.36,11.46l0.38,0.63l1.13,-0.55l2.05,-4.19l1.74,-1.68l0.11,2.17l-1.34,1.85l-0.46,2.25l-0.79,0.26l2.08,1.84l-1.87,0.37l-0.52,1.02l0.41,0.94l1.41,-0.3l-0.92,3.15l0.58,0.45l1.15,-0.69l0.41,-1.77l2.28,-1.73l0.09,-1.6l-0.82,-1.04l1.41,-0.97l-0.47,-1.72l2.0,2.6l2.0,0.71l0.49,-0.54l-3.79,-3.93l1.65,-2.2l1.33,1.64l-0.92,2.03l0.5,1.05l1.2,-1.41l0.58,1.55l0.67,0.07l-0.54,-2.39l0.82,-2.03l2.22,2.2l-0.01,4.19l-0.91,2.69l3.67,0.78l1.42,1.23l0.72,-0.44l-0.94,-1.98l-2.18,-1.13l-0.11,-2.89l2.0,1.09l2.74,5.74l2.56,1.06l0.37,-0.6l-0.59,-0.47l0.48,0.2l0.58,1.0l0.46,0.13l0.31,-2.04l-1.44,-0.54l-1.99,-2.7l-1.25,0.05l-1.18,-2.89l-3.1,-1.8l0.23,-2.0l0.81,-0.64l1.53,3.78l0.7,-0.56l-0.84,-2.73l4.17,1.24l1.67,3.05l0.31,-1.89l1.65,-0.35l2.58,0.69l-1.25,-1.26l-2.89,-0.23l-4.95,-2.4l-2.16,-1.59l-0.28,-1.48l1.88,-3.33l3.54,-2.72l4.48,-0.37l1.9,2.09l3.11,0.45l1.17,2.53l0.66,-0.47l0.09,-2.19l4.86,1.25l2.44,4.69l-1.4,2.86l-2.51,-0.03l-2.91,2.14l-1.64,4.99l0.34,0.81l0.78,-0.31l1.65,-4.7l1.99,-1.69l2.53,0.44l-2.18,1.63l-0.21,3.99l-0.7,2.19l-1.44,0.77l0.37,0.84l2.18,-1.16l0.87,-5.95l2.2,-1.18l0.54,-2.42l4.77,0.15l0.92,0.9l0.31,4.15l-1.97,0.09l-0.85,2.3l-4.48,1.99l0.51,0.8l2.58,-0.61l-2.65,3.27l0.23,0.7l4.5,-4.29l-0.72,2.3l-1.41,0.53l-0.65,1.37l0.51,0.92l1.59,-1.43l-0.53,1.24l1.75,1.04l-1.73,5.16l0.85,-0.17l2.17,-4.96l-1.21,-2.74l0.93,-3.23l1.84,-1.94l-0.53,2.66l1.29,1.72l0.43,-0.58l-0.72,-1.5l0.93,-2.99l1.3,-0.61l0.43,0.98l-1.55,5.36l-1.77,1.59l0.33,0.71l1.37,-0.82l-0.44,2.48l0.69,0.43l-0.72,1.87l0.74,0.32l1.26,-3.14l0.14,-4.67l0.6,-1.12l0.55,0.31l0.3,4.12l0.97,0.29l-1.3,7.07l1.74,-1.05l-0.01,-3.42l1.24,-2.36l1.43,0.77l-1.0,1.14l0.37,2.74l-0.87,1.71l0.76,1.2l0.75,-0.22l-0.38,-1.22l0.66,-0.72l0.18,-3.34l1.11,-0.99l-0.55,-3.23l1.39,-0.8l-0.7,-1.6l1.11,-1.15l-0.11,-2.23l7.09,1.89l3.84,4.21l-1.34,4.44l-2.64,-0.48l-1.5,1.0l-1.3,4.83l-2.72,1.93l0.49,0.59l3.05,-1.76l0.6,0.28l-0.76,3.18l-1.54,1.42l0.84,1.0l1.6,-1.56l0.59,-2.29l3.77,-3.12l3.02,-0.31l-0.93,-1.5l0.25,-2.25l1.71,-2.07l1.16,0.31l1.43,3.02l-0.98,1.81l-0.07,2.43l-1.64,1.47l-0.41,2.01l-2.89,0.05l-0.55,3.73l-1.4,0.93l0.45,0.64l1.24,-0.56l-0.27,2.28l0.79,0.6l1.26,-6.02l1.72,-0.08l0.36,5.62l-0.83,5.48l0.79,0.18l0.98,-2.69l0.71,-8.86l-0.45,-2.09l6.26,-6.82l-0.21,2.66l-3.02,2.97l0.77,3.83l1.58,-1.31l-1.02,-1.74l2.5,-0.4l0.18,-1.3l1.9,-1.09l0.75,-2.36l1.58,-0.17l1.09,1.02l6.27,2.05l-0.34,3.45l-0.45,-1.6l-0.83,0.0l-0.14,3.21l-4.87,2.77l-2.19,2.43l-0.3,1.67l-1.71,2.25l0.92,0.23l0.52,-1.07l1.16,0.6l-2.02,0.92l-1.88,3.28l1.42,0.23l1.66,-2.94l2.17,-0.77l-0.68,-2.21l0.4,-1.35l6.26,-2.93l-0.07,3.04l-1.99,1.87l-1.36,3.53l-2.35,0.15l-0.71,1.11l-0.46,3.71l0.27,0.82l0.83,-0.16l0.69,-3.99l2.71,-0.23l1.41,-3.32l0.91,-0.9l2.28,-0.43l0.37,-2.31l1.97,-2.33l-1.27,-1.13l0.67,-2.95l2.01,0.73l3.74,3.23l1.93,2.18l1.76,3.93l-6.27,0.46l-1.77,3.58l-2.6,0.34l-3.44,3.23l-4.02,0.25l-1.72,0.89l0.07,0.9l1.28,0.36l1.62,-1.27l2.97,0.23l4.53,-2.87l4.88,1.63l5.57,-1.45l3.67,1.66l1.55,2.31l-0.24,1.15l-3.01,-0.29l-2.5,1.13l-5.72,-1.84l-6.46,0.58l-1.45,2.21l0.35,0.67l2.06,-1.92l4.11,0.37l1.46,-0.52l0.8,0.68l-6.03,1.08l-0.3,0.6l0.9,0.46l2.07,-0.62l-3.26,2.35l0.4,0.95l0.8,-0.48l0.07,2.84l1.08,-0.89l0.01,-2.02l2.87,-2.49l5.01,1.6l-1.57,1.24l-1.72,-0.31l-2.31,1.01l-0.02,0.97l1.91,-0.56l1.88,0.31l0.15,0.86l-2.9,0.05l-0.19,0.73l0.95,0.26l-1.58,0.41l0.24,1.08l-5.42,-0.71l-0.86,0.94l0.74,1.32l2.91,-0.38l0.31,1.19l0.89,-0.69l5.36,0.01l-1.22,1.14l-3.09,0.27l-0.95,1.34l0.31,0.64l3.61,0.04l0.45,-0.89l3.35,0.67l0.56,2.64l0.79,-0.88l-0.22,-2.22l1.72,-0.57l-0.53,0.96l0.8,2.28l-1.6,1.41l0.31,1.5l1.79,-1.47l-0.6,1.28l0.8,0.33l0.96,-0.69l0.55,-2.01l0.58,0.43l0.56,-0.92l0.88,0.18l-1.47,1.59l0.12,1.99l-1.73,0.21l0.58,0.87l1.94,-0.08l0.15,-2.53l1.34,-1.3l1.77,0.49l-0.39,4.49l0.95,0.37l0.82,-2.33l0.77,2.57l0.61,-0.83l-0.18,-2.76l1.41,-0.1l-0.96,1.14l1.84,-0.34l0.55,0.95l-0.76,3.14l-1.92,-0.02l-0.47,1.06l2.77,0.36l0.79,0.91l0.09,-3.94l1.35,-1.57l1.03,5.61l1.15,2.05l-0.29,-4.16l0.97,-2.03l-0.49,-1.05l1.69,-1.02l-0.18,4.17l3.55,3.47l0.41,-0.64l-0.92,-2.03l-1.79,-1.22l0.3,-2.6l1.38,-1.36l0.53,-2.01l2.04,0.51l-2.13,1.4l0.88,0.7l-0.9,1.04l0.09,1.47l0.94,-0.04l-0.8,1.83l0.42,1.53l0.85,0.05l0.02,-1.75l1.06,-1.77l0.29,1.67l1.08,0.0l0.39,-3.01l1.86,0.94l-1.5,1.87l0.5,0.54l2.2,-1.87l0.45,1.91l1.53,-0.23l0.25,1.77l-2.01,0.91l-0.13,0.76l1.32,0.31l1.95,-0.85l1.02,1.54l-0.3,0.73l-6.13,1.04l0.32,0.64l3.99,-0.1l-3.41,1.94l0.02,1.07l4.64,-2.24l-3.23,3.11l0.68,2.8l0.78,-0.41l0.29,-2.67l3.86,-2.21l0.36,-1.11l2.54,-0.87l0.14,2.09l-1.33,3.04l1.01,0.96l0.04,-1.63l1.77,-2.6l-0.25,-2.7l1.02,-0.27l0.09,-1.48l1.27,1.36l-1.64,2.84l1.15,2.57l-1.97,1.92l0.05,1.54l-1.63,0.7l0.46,0.73l2.68,-1.15l0.3,2.12l0.91,0.15l-0.3,-3.92l2.69,-2.39l1.91,6.56l0.57,-3.76l-0.93,-2.78l0.9,-0.23l2.94,3.38l0.85,-0.11l-2.02,-3.16l0.89,-1.25l-0.59,-1.65l0.99,-0.64l0.59,2.76l1.4,0.67l2.48,-1.02l-0.42,1.17l1.9,-0.0l2.62,2.39l-1.44,1.9l-1.63,-1.41l-2.47,-0.4l-1.53,2.28l1.11,0.54l0.85,-1.1l1.16,-0.0l2.51,1.93l-2.0,1.12l-0.45,1.57l3.33,-1.15l0.33,0.62l-1.74,0.77l-0.68,1.22l-2.06,0.07l-0.94,-1.55l-3.33,0.22l-0.67,1.52l1.19,0.3l0.67,-0.67l1.35,1.66l-1.47,1.5l-1.69,-1.64l-1.16,0.52l2.54,2.46l1.37,-0.8l3.11,0.43l1.48,1.82l-1.48,1.02l-1.88,-0.46l-2.09,0.56l-1.9,-1.83l-1.15,1.0l2.69,2.02l3.48,-0.01l-0.09,0.93l1.44,1.25l-1.99,0.71l-2.48,-1.31l0.46,1.66l2.55,1.16l-1.81,-0.21l-1.18,0.67l1.03,2.77l-1.94,-0.19l-3.62,-4.71l-1.02,0.17l2.44,4.42l-2.56,1.36l0.87,0.62l2.74,-0.07l-0.47,1.12l-1.48,-0.95l-0.06,1.62l0.97,0.67l-0.85,0.57l3.04,2.42l-0.33,2.51l0.71,1.05l0.88,-0.01l-0.39,3.16l-0.71,-0.48l-0.98,0.83l0.81,-0.75l-0.37,-0.81l-1.27,0.7l-0.49,-2.99l-0.88,0.34l-0.38,1.72l-0.85,-0.15l-0.05,1.31l-0.79,-0.78l0.87,-1.93l-0.86,-0.2l-1.53,1.14l-0.15,-4.85l-0.54,-0.34l-1.28,2.78l0.46,3.9l-1.3,-1.32l0.32,-0.69l-1.2,-0.53l-0.74,0.72l1.15,-1.55l-1.02,-0.51l2.37,-1.47l0.14,-1.53l-0.66,-0.44l-1.92,1.03l-2.38,2.45l-0.68,-0.57l-0.39,-0.92l1.43,-0.95l1.17,-3.45l-1.8,0.09l-0.53,2.51l-1.2,0.35l-0.18,-0.92l1.2,-1.96l1.26,-0.6l-0.05,-0.89l-2.03,0.6l-1.02,1.66l-1.71,0.12l0.07,-1.83l-0.9,-0.19l0.37,-2.25l2.59,-2.46l1.89,0.05l-1.12,-1.26l-0.07,-3.39l2.02,-3.11l-0.26,-1.14l-2.75,2.4l-0.76,4.42l-2.19,1.34l-0.68,1.46l-3.64,1.6l-0.61,-1.34l1.9,-3.13l0.51,-3.0l-0.49,-1.87l-0.82,0.26l-0.42,4.19l-1.85,1.91l-1.96,-1.27l0.08,-1.8l-0.91,1.0l-1.47,-0.11l-0.22,-1.13l-0.8,-0.16l0.48,-1.42l-1.86,1.32l-0.01,-1.41l-1.07,0.18l-0.29,-3.03l-3.02,-0.41l-0.33,0.65l1.3,1.39l-1.32,0.44l-3.38,-1.1l-1.64,1.75l0.65,0.65l3.31,-0.23l1.45,1.71l-1.41,-0.44l-0.63,0.73l2.54,1.48l-0.75,0.54l-3.37,-2.45l-1.21,0.06l-0.62,-1.05l-1.59,0.71l2.58,2.79l0.71,2.23l4.32,1.87l1.25,2.89l-1.14,-0.1l-0.36,0.99l-0.95,0.19l-1.16,-0.82l-0.63,0.35l0.43,1.06l-0.9,0.16l-1.24,-1.61l-0.02,-1.8l-2.32,-0.81l-0.78,-1.44l-1.08,0.43l-1.36,-1.55l-0.54,0.71l0.68,1.2l-2.73,1.06l1.68,0.75l1.7,-0.77l1.93,1.66l0.98,-0.34l-0.28,-0.56l0.87,0.64l-0.92,0.94l-1.22,-0.38l0.54,2.52l1.65,0.43l0.57,2.33l2.14,-0.51l-0.31,1.6l0.98,0.82l-0.66,0.16l-0.36,1.53l1.06,2.13l1.86,-3.65l2.1,-1.36l1.0,0.28l-0.84,3.01l1.43,0.98l1.74,-0.66l0.42,0.5l-2.45,2.15l1.09,0.59l0.61,-0.73l0.74,0.38l0.35,1.81l1.87,0.07l-0.75,2.75l2.93,0.13l0.51,0.75l-0.6,0.81l1.04,0.41l1.04,2.94l1.07,-0.96l-1.47,-4.21l3.15,2.35l1.08,-0.49l0.21,1.48l-1.08,0.93l1.08,0.23l0.57,1.18l0.9,-0.33l-0.13,-1.23l0.04,-0.29l0.53,1.04l0.72,-0.24l1.33,1.16l0.75,-0.38l-1.77,-2.91l0.08,-1.17l0.38,1.13l0.64,-0.23l0.45,2.13l0.78,-0.34l-0.19,-1.13l0.42,0.49l0.19,1.22l-1.03,1.45l0.96,2.23l1.61,-0.41l1.21,0.68l2.52,-1.24l-1.19,1.69l0.86,1.29l-2.62,0.09l-1.03,1.31l1.69,-0.21l-0.52,1.12l2.32,0.04l-0.54,1.3l1.7,-0.32l0.74,2.53l2.23,-0.34l0.5,0.75l0.9,-1.34l1.08,0.09l-1.53,1.95l-0.46,2.02l0.95,0.96l2.14,-0.06l1.74,1.04l-0.27,1.18l1.64,3.22l-0.97,0.64l1.28,0.68l-0.55,1.25l0.9,0.27l-0.51,0.23l-1.11,-0.91l-3.12,-5.31l-2.87,-2.59l-1.87,0.31l3.78,3.29l-0.64,0.99l0.77,1.77l-0.59,0.67l2.56,1.98l-1.19,-0.05l-0.53,1.14l1.27,1.72l2.63,0.42l-0.39,0.88l0.97,1.02l-0.06,1.3l1.26,0.59l-0.85,0.68l-2.59,-1.8l-0.65,0.89l-1.24,-0.34l4.6,6.01l-1.04,1.6l-1.8,-2.14l0.42,-1.04l-1.58,-2.97l-2.0,2.36l-1.49,-1.33l-0.57,-2.67l-2.36,1.98l-0.47,-1.12l-2.59,-1.17l-0.36,0.86l2.3,2.5l-2.22,-0.51l-3.65,-4.53l-0.14,-1.92l-0.72,0.04l-0.26,2.36l-0.83,0.26l0.7,1.87l-1.38,-1.03l0.36,-0.84l-0.93,-2.4l-0.93,0.26l0.37,2.04l-1.2,-0.16l-8.11,-7.18l-0.4,0.91l3.71,6.15l-4.19,-3.47l-0.79,0.11l-1.1,-1.62l-0.72,0.95l-1.29,-1.34l-2.46,-0.28l-0.19,0.97l-2.23,0.29l2.05,2.1l-0.06,0.88l6.19,4.57l1.06,1.94l2.68,0.57l0.26,1.45l0.99,-1.03l1.0,0.23l-0.45,0.99l0.92,1.52l1.18,0.53l1.56,-1.7l1.35,1.12l-0.52,0.84l1.63,-0.42l-0.25,1.11l1.32,-0.23l1.91,2.8l1.63,-0.84l2.41,1.54l0.95,2.34l1.55,0.16l-0.92,0.86l0.36,0.76l1.38,0.89l3.39,-0.2l-0.06,2.36l-0.75,-0.65l-0.63,1.02l1.25,1.91l1.95,1.23l-3.51,1.15l-3.64,-1.76l-3.28,0.37l-1.57,-0.92l-0.43,0.51l-0.56,-1.0l-11.24,0.57l-3.15,-1.87l-1.57,0.4l-1.67,-0.82l-0.9,-0.67l-0.77,-2.65l-0.67,1.08l-0.84,-0.79l-0.49,0.44l-0.5,-0.52l1.1,-0.91l-0.18,-1.79l-4.59,-0.09l0.32,1.1l-1.13,-0.32l-0.75,1.07l-1.42,0.12l-2.52,-1.63l-2.55,0.01l-0.22,-0.74l-1.26,-0.11l-0.63,-1.48l1.01,-1.89l-1.32,-0.83l-0.81,0.48l-0.15,1.58l-1.2,-0.09l-0.26,1.25l-1.15,-0.06l-0.18,-1.19l-2.62,-0.45l-0.01,-1.66l-1.15,-0.38l-0.4,-2.19l2.64,-1.94l1.06,-3.03l-2.33,0.05l-0.77,-0.38l0.15,-1.01l-2.36,-0.48l-1.64,-1.22l-1.53,2.05l-1.14,-0.8l1.0,-2.68l-1.09,0.32l-0.3,-0.9l-0.73,0.09l-0.88,2.78l-1.46,-0.6l-0.12,-2.77l-0.89,-1.25l-0.61,-0.22l-0.24,1.63l-0.64,-0.07l-1.06,-2.78l-1.29,-0.25l-0.78,-1.57l-2.81,-2.03l1.32,-3.66l-1.91,-1.59l-0.6,0.96l0.68,1.51l-0.77,-1.17l-0.98,0.41l-1.26,-1.16l-0.16,2.19l-1.68,-0.74l-0.59,0.55l-1.43,-3.04l-0.89,1.86l-1.92,0.44l-0.32,0.92l-1.6,-1.78l1.46,-2.42l-1.95,-1.23l-0.97,1.2l0.21,1.06l-2.14,0.85l5.01,3.85l-1.25,0.58l1.23,1.55l-1.02,1.15l-4.16,-1.4l-0.56,0.74l-5.24,-2.36l-0.66,0.66l0.31,1.11l1.25,1.18l-1.44,-0.25l-0.25,0.79l1.33,1.25l-1.42,-0.29l-3.18,1.42l-0.16,0.85l-2.85,0.86l0.25,1.83l-3.37,-1.4l-1.67,1.18l-1.64,-1.8l-1.4,-0.53l-0.65,1.01l-1.01,-0.4l0.18,-0.96l-1.38,0.16l0.23,-0.61l-1.94,-1.93l-0.47,-1.74l0.58,-3.71l-0.93,-2.07l3.67,-4.09l2.52,-1.32l-1.88,-2.8l1.66,-1.13l-1.25,-1.47l2.48,0.81l3.41,-0.38l7.68,2.38l0.82,1.41l2.51,1.24l0.41,1.5l-1.87,1.27l1.01,1.62l0.99,0.07l-0.18,1.52l1.75,0.96l0.9,-1.11l-1.68,-3.68l1.26,-0.56l0.06,-3.01l-0.99,-0.23l-0.4,1.88l-1.94,-2.57l-3.27,-1.88l1.79,-0.4l0.8,0.76l3.16,0.01l1.08,-0.93l-0.22,-2.0l2.56,-0.54l1.92,0.93l2.85,-4.62l1.06,0.43l1.52,-0.66l0.97,1.1l2.11,-0.37l-3.09,-6.4l-2.77,-1.27l-4.63,-4.88l6.7,-9.38l0.47,-2.31l2.72,-1.98l-0.57,-1.95l0.71,-4.69l2.8,-1.64l0.84,-1.87l0.01,-2.66l-1.36,-0.67l-2.24,-5.92l-1.49,-0.85l0.01,-2.17l-1.63,-1.76l-1.09,-0.18l-2.05,-6.75l-1.27,0.29l-1.56,-1.11l0.71,-1.45l-0.85,-0.81l-1.85,2.62l-2.05,-0.67l-0.84,-1.08l1.1,-2.31l-1.12,-3.85l-3.03,-0.48l-0.77,0.78l2.8,3.56l-3.02,-0.07l-1.14,-0.93l-1.95,-2.33l0.9,-2.17l-1.15,-0.58l-0.42,-1.6l-1.96,-0.45l2.21,-1.04l-1.72,-1.53l-2.01,1.99l-0.14,2.43l-3.08,-2.24l-0.47,3.0l-4.76,4.7l-1.75,0.63l-0.45,-1.23l0.68,-2.68l-0.97,-0.74l-0.22,-1.81l1.19,-0.86l3.37,0.52l1.44,-1.92l1.11,-0.14l-0.14,-3.68l-3.42,-2.68l-1.7,-0.62l-1.39,0.45l-2.08,-2.49l0.71,-1.96l1.85,0.5l-0.06,-1.84l-1.74,-0.47l-1.73,0.58l-0.26,0.56l0.86,0.42l-0.81,1.64l-0.82,-0.16l0.17,-1.07l-1.38,0.87l-1.26,-0.62l2.11,-0.67l0.62,-1.2l-0.94,-1.07l0.67,-1.5l-1.74,0.37l-0.4,-0.83l-1.71,0.78l1.88,-1.51l-0.3,-1.04l-4.26,3.03l-1.32,-7.62l-1.7,-1.3l-1.24,0.89l-1.16,-0.49l-0.97,1.04l-1.01,-1.45l0.52,-1.14l-1.65,-0.04l-1.43,-2.16l-1.85,0.18l0.94,-1.83l1.32,0.06l-2.58,-2.93l-1.55,1.42l0.97,0.71l-0.47,1.38l-0.86,-0.66l-1.19,1.92l-1.26,-1.9l-2.0,-0.79l-0.61,-1.5l-1.55,-0.0l-0.56,0.88l-1.0,-2.07l-1.84,0.25l-1.42,1.35l-2.01,-0.26l0.06,1.38l1.15,1.12l2.88,-0.22l0.96,1.23l1.36,-0.58l0.19,-0.9l1.32,0.13l3.63,2.75l-0.22,1.38l1.06,0.86l1.03,-0.19l1.43,1.13l1.2,-0.57l1.8,2.7l1.09,3.44l-0.59,2.38l-5.95,1.45l-1.74,-2.45l-0.89,0.39l-0.46,-0.81l-2.2,0.42l-1.6,-1.01l-9.18,-0.84l0.53,1.75l2.11,1.44l0.97,-0.67l0.69,0.48l3.45,4.13l-0.58,0.97l-4.99,-3.98l-0.07,-0.83l-1.35,0.04l-2.89,-2.78l-7.03,-3.72l-0.63,0.65l2.03,2.2l4.22,1.67l3.95,3.07l-0.83,1.43l-0.97,-0.26l-0.93,1.2l-2.06,-0.44l-5.56,-3.13l-3.56,1.76l-7.45,-0.82l-0.91,-0.57l0.02,-1.7l-1.29,1.08l-2.79,-0.72l-3.39,0.36l-0.71,1.52l-4.48,-4.09l-0.29,-2.53l1.96,-2.46l-0.76,-1.4l-2.55,3.48l-1.81,-2.18l-1.59,0.75l-0.84,1.74l1.76,0.28l0.14,1.23l-3.28,-0.82l-2.57,0.39l-3.84,-2.75l-2.22,-0.36l-1.4,-1.55l-3.86,-7.62l1.3,-0.38l0.48,-1.01l-2.06,-2.13l2.05,1.18l3.47,-0.53l1.43,0.48l0.66,1.5l3.26,0.51l3.83,-0.4l0.7,-1.35l1.65,0.38l0.42,-0.86l-5.34,-2.96l-0.88,-2.9l-1.91,1.23l-12.1,-2.48l-1.13,-5.32l1.61,-3.77l-2.16,-3.72ZM488.81,323.97l3.2,-1.19l3.79,-4.52l-1.07,0.06l-3.54,3.78l-2.78,0.91l0.39,0.97ZM474.79,330.37l0.28,0.24l0.75,0.17l-1.05,0.62l-0.53,-0.59l0.54,-0.44ZM473.0,330.18l-0.24,-0.03l-0.02,-0.02l0.21,-0.03l0.05,0.07ZM482.88,328.8l0.11,0.5l-0.87,0.03l-0.03,-0.17l0.79,-0.36ZM489.66,335.76l1.57,-0.65l1.38,0.68l-2.41,0.32l-0.54,-0.35ZM516.8,338.32l0.08,0.2l-0.05,0.1l-0.02,-0.01l0.0,-0.29ZM535.08,322.46l0.0,-0.02l0.01,0.02l-0.01,-0.0ZM550.44,335.16l0.41,-0.09l-0.17,0.82l-0.12,-0.36l-0.11,-0.37ZM574.5,352.3l0.32,0.6l-0.22,0.09l-0.34,-0.24l0.25,-0.45ZM587.32,361.34l-0.15,0.27l-0.05,0.15l0.03,-0.41l0.16,-0.01ZM582.58,432.13l-0.03,0.04l0.02,-0.03l0.02,-0.01ZM595.87,437.1l0.4,0.28l0.14,0.44l-0.7,-0.43l0.16,-0.3ZM596.59,438.06l0.17,0.24l-0.2,0.4l-0.6,0.52l-0.32,-0.49l0.95,-0.67ZM596.09,440.16l0.05,1.42l-0.31,0.11l-0.08,-0.87l0.34,-0.66ZM595.73,441.72l-0.02,-0.02l0.04,-0.0l-0.01,0.02ZM601.21,436.6l-0.0,0.19l-0.07,0.04l0.01,-0.01l0.06,-0.21ZM601.53,439.34l-0.21,0.44l-0.21,-0.16l0.05,-0.3l0.37,0.02ZM602.53,440.7l-0.02,0.19l-0.36,0.35l-0.06,-0.15l0.44,-0.39ZM602.26,441.69l0.22,0.2l0.05,0.16l-0.23,-0.16l-0.03,-0.2ZM611.9,449.73l0.04,0.02l-0.05,0.01l0.01,-0.03ZM613.57,450.64l0.12,0.99l-0.1,0.01l-0.22,-0.97l0.21,-0.02ZM615.69,450.49l0.09,-0.01l-0.03,0.11l-0.01,-0.03l-0.04,-0.08ZM616.43,450.22l0.17,-0.03l-0.0,0.12l-0.01,0.01l-0.15,-0.11ZM620.64,452.03l0.0,0.12l-0.28,0.07l-0.0,-0.12l0.28,-0.07ZM662.89,449.16l1.85,2.25l-0.68,0.81l-0.41,-1.74l-0.76,-1.33ZM672.43,451.68l0.27,0.56l-0.74,0.85l0.19,-0.89l0.28,-0.52ZM677.9,454.39l-0.21,0.16l-0.02,-0.11l0.23,-0.04ZM649.96,390.46l0.52,0.44l0.09,0.2l-0.45,-0.05l-0.16,-0.58ZM680.53,409.14l0.0,0.01l-0.0,0.01l-0.0,-0.01ZM680.49,409.43l0.0,0.21l0.09,0.26l-0.18,-0.29l0.09,-0.18ZM678.41,399.12l0.0,-0.0l0.02,0.01l-0.02,-0.01ZM682.12,392.93l1.68,0.43l-0.8,1.15l-0.46,-0.47l-0.42,-1.1ZM630.78,350.05l-0.21,-1.8l1.24,-0.25l0.07,1.13l-1.1,0.92ZM633.93,349.02l0.23,-1.09l0.75,0.21l-0.06,0.86l-0.92,0.02ZM635.3,347.75l0.31,-0.27l0.31,-0.07l-0.19,0.29l-0.43,0.04ZM624.0,340.87l0.04,0.01l-0.01,-0.0l-0.03,-0.01ZM522.82,287.99l0.09,0.04l0.16,0.16l-0.08,-0.03l-0.17,-0.18ZM490.73,269.27l-1.65,0.1l0.29,-1.42l0.24,0.46l1.12,0.86ZM527.85,279.51l-0.04,-0.23l0.12,0.06l-0.09,0.17ZM541.86,292.0l-1.03,-0.78l-1.11,-1.72l0.33,-0.2l1.8,2.7ZM574.47,296.36l-0.01,-0.14l0.08,0.1l-0.07,0.04ZM622.2,341.87l0.57,-0.05l0.37,0.23l-0.06,0.02l-0.88,-0.2ZM621.18,347.72l0.29,-0.42l0.66,0.04l-0.11,0.11l-0.85,0.26ZM652.5,357.13l0.08,-0.22l0.02,0.06l-0.1,0.16ZM662.71,366.06l0.84,-0.66l-0.06,0.71l-0.78,-0.04ZM681.52,367.13l0.1,-0.69l1.1,0.24l-0.11,0.28l-1.08,0.17ZM663.42,400.33l-0.06,0.03l-0.14,0.26l-0.05,-0.25l0.25,-0.03ZM653.13,413.38l0.02,-0.07l0.01,0.04l-0.03,0.03ZM663.69,417.31l0.03,-0.16l0.0,-0.05l0.04,0.06l-0.07,0.15ZM655.95,454.61l0.2,-0.08l0.01,0.01l-0.0,0.01l-0.21,0.05ZM656.38,456.41l0.17,-0.67l0.69,-0.27l0.05,0.1l-0.91,0.84ZM672.06,466.54l-0.48,-0.52l-0.04,-0.19l0.99,0.26l-0.47,0.44ZM626.86,462.8l-0.05,0.04l-0.35,0.13l0.03,-0.16l0.37,-0.02ZM618.54,456.26l-0.06,0.22l-0.83,-0.15l0.45,-0.09l0.44,0.02ZM539.2,319.9l-0.1,-0.03l0.05,-0.09l0.05,0.11l0.0,0.0ZM536.94,321.66l0.12,0.79l-0.07,0.39l-0.29,-0.51l0.24,-0.67ZM685.1,391.66l0.88,-0.12l1.42,0.57l-1.42,0.29l-0.89,-0.74ZM683.01,459.85l0.95,-0.38l-0.34,-1.43l3.06,-0.11l-0.67,2.54l-3.01,-0.62ZM683.38,471.15l0.86,-0.49l2.63,2.61l-2.13,-0.41l-1.36,-1.71ZM680.79,436.67l0.47,-0.31l1.46,3.68l-1.98,-3.03l0.04,-0.33ZM682.98,440.44l1.1,0.65l0.41,0.67l-0.53,-0.25l-0.98,-1.07ZM681.47,458.53l0.32,-0.72l0.69,-0.02l-0.6,0.62l-0.41,0.12ZM677.24,433.12l0.03,-0.86l1.16,1.1l0.02,1.05l-2.14,-0.09l-0.04,-0.8l0.98,0.49l-0.01,-0.9ZM678.58,434.5l0.26,0.02l0.12,0.08l-0.11,-0.06l-0.27,-0.04ZM679.77,434.88l0.31,-0.35l0.23,0.91l-0.36,-0.42l-0.19,-0.15ZM677.9,474.82l0.38,-0.71l0.86,0.37l-0.56,0.47l-0.68,-0.12ZM674.31,366.81l0.01,-0.0l0.0,0.01l-0.01,-0.0ZM674.45,366.24l0.79,-2.28l0.92,-0.55l-1.2,2.63l-0.51,0.19ZM665.85,422.28l0.83,-2.73l0.99,-0.49l0.41,0.37l-1.19,1.04l0.24,0.64l-1.29,1.17ZM665.47,364.06l0.62,-1.05l0.64,0.74l-1.26,0.31ZM666.81,363.73l0.66,-0.69l0.48,0.21l-0.28,0.27l-0.87,0.22ZM664.13,502.89l2.55,1.52l0.12,0.98l-0.75,1.66l-2.74,2.42l-0.16,-2.82l0.98,-3.76ZM662.22,358.47l1.11,0.82l0.23,0.27l-1.19,0.41l-0.15,-1.5ZM639.41,351.83l1.43,-0.74l0.22,0.76l-1.65,-0.02ZM626.82,465.8l0.25,0.01l-0.2,0.0l-0.05,-0.01ZM627.85,465.83l1.97,0.06l3.4,1.22l0.33,1.3l2.02,0.82l-1.39,1.1l-2.46,0.16l-1.59,-2.69l0.48,-1.3l-2.74,-0.68ZM625.81,343.56l0.73,0.13l-0.17,0.02l-0.56,-0.16ZM624.08,326.81l0.98,-1.23l0.85,0.24l-1.04,0.31l-0.8,0.68ZM619.86,326.49l0.75,-1.58l1.91,-0.31l-0.76,2.34l-1.9,-0.46ZM610.7,452.69l0.01,-0.01l0.0,0.02l-0.02,-0.01ZM597.03,474.35l0.51,-0.32l0.93,0.8l-0.8,-0.03l-0.64,-0.45ZM598.82,475.02l2.06,-0.45l1.34,0.64l-0.8,0.22l-2.61,-0.41ZM598.97,437.76l0.38,-0.55l0.19,-0.09l-0.03,0.69l-0.54,-0.05ZM599.8,438.49l0.12,0.08l0.02,0.12l-0.07,-0.1l-0.06,-0.1ZM599.75,439.54l0.16,1.13l-0.14,0.22l-0.37,-1.33l0.36,-0.02ZM585.53,305.08l0.88,-0.56l0.39,-2.98l3.58,0.52l-0.02,1.53l-3.57,2.95l-1.26,-1.45ZM580.11,367.21l0.33,-1.37l0.5,1.93l4.05,0.91l2.48,-0.49l1.1,3.69l-7.41,1.27l-1.1,-0.39l-2.06,-2.68l-0.25,-1.55l2.03,-0.52l0.32,-0.79ZM579.24,359.67l1.96,2.08l-0.27,1.41l0.09,-1.13l-1.78,-2.35ZM575.22,680.92l0.71,-0.09l2.49,-1.73l-0.66,2.13l-2.24,0.45l-0.3,-0.76ZM578.3,290.03l0.13,2.03l-1.22,-0.22l0.14,-1.53l0.96,-0.29ZM574.93,293.48l1.17,-0.64l-0.34,1.92l-0.69,-0.8l-0.14,-0.48ZM575.81,294.96l0.04,0.13l-0.04,-0.01l-0.01,-0.11ZM576.17,295.58l0.78,-0.24l0.48,-1.68l0.6,0.68l-1.02,0.89l0.3,1.54l-1.02,-0.28l-0.11,-0.92ZM577.62,297.27l0.03,0.05l-0.01,0.06l-0.02,-0.0l0.0,-0.11ZM570.07,460.89l0.38,-0.61l-1.05,-0.3l0.31,-0.59l5.52,1.64l0.68,1.7l0.75,0.13l-0.55,1.35l-2.27,-0.41l-3.77,-2.91ZM576.74,357.28l-1.38,0.21l-0.19,-1.49l0.51,0.07l1.05,1.21ZM560.18,382.36l-1.12,-3.84l0.23,-2.62l2.93,-9.21l2.5,-1.76l1.8,0.45l1.21,-1.15l5.94,1.24l1.19,1.62l-0.56,4.02l2.13,6.58l-0.39,2.68l-1.49,2.72l-3.6,2.73l-8.12,1.49l-2.64,-4.94ZM571.22,358.9l0.19,-3.03l1.7,0.28l2.32,3.53l-0.81,0.96l0.75,1.57l-4.15,-3.31ZM573.96,604.3l0.57,-3.93l0.69,-1.52l0.38,4.28l-1.64,1.18ZM570.68,628.55l0.13,-0.06l0.12,-0.02l-0.25,0.08ZM564.16,610.52l-0.85,-0.98l3.48,-5.9l-0.32,2.08l-2.31,4.8ZM567.38,604.86l1.4,-1.14l0.56,-6.2l0.95,0.09l0.62,1.43l1.16,0.56l-4.02,10.22l-1.02,-0.49l1.41,-3.88l-1.05,-0.59ZM572.63,599.58l-0.23,-0.07l0.17,-0.06l0.06,0.13ZM451.63,52.33l1.56,-3.16l1.89,0.11l-0.13,-1.92l1.49,-0.25l1.71,-1.54l1.13,0.37l0.59,-0.57l2.17,2.8l0.84,-3.22l0.82,-0.72l-0.15,-2.05l3.63,-2.72l2.38,0.61l0.73,1.43l-0.38,1.72l2.5,2.18l0.47,-1.14l-1.45,-1.29l1.06,-0.68l-0.66,-1.47l1.06,-0.2l2.4,0.99l2.7,4.64l0.71,-0.68l-1.58,-3.63l1.35,0.05l1.51,3.07l1.7,-0.06l-0.86,-3.52l-8.11,-3.87l-0.59,-1.76l4.47,-0.92l1.33,-1.24l-0.58,-3.99l-1.58,-0.96l4.05,-1.1l-0.83,1.66l1.63,0.69l0.67,1.21l2.81,0.12l0.96,1.15l2.25,4.98l-0.2,2.0l4.05,0.0l1.0,0.66l0.49,-0.55l-1.19,-1.97l-2.04,0.12l-1.94,-4.74l9.99,7.64l2.31,0.6l2.48,3.92l1.54,0.16l0.34,-0.63l-3.32,-4.51l0.05,-1.23l-4.63,-1.93l-0.24,-1.77l-1.54,0.07l-6.04,-5.8l0.48,-3.29l4.06,-0.38l-3.44,-2.58l-0.39,-1.53l0.72,-0.58l2.38,0.96l2.28,2.63l1.59,-0.26l0.08,-1.06l-4.38,-7.22l4.14,0.81l0.95,3.03l1.43,1.1l0.74,-0.57l-0.81,-1.5l2.82,1.01l2.43,-0.47l0.15,-1.16l-5.43,-1.65l-0.3,-1.04l1.01,-0.78l-3.03,-1.61l3.22,-2.36l1.36,2.63l0.78,-0.04l0.59,-2.17l0.65,2.75l2.04,0.49l0.61,-2.92l2.57,1.25l2.99,5.34l2.82,2.06l-0.8,3.78l0.92,0.76l2.45,-6.0l-3.57,-2.25l-0.47,-1.1l1.07,-1.12l-1.73,-0.32l-1.4,-2.41l-3.04,-2.84l4.22,-2.08l6.94,0.36l2.12,3.85l6.09,4.05l0.1,-1.56l-2.6,-1.39l-2.64,-3.56l2.43,-5.33l0.9,0.3l0.55,-0.94l1.89,-0.25l-0.21,2.37l1.45,2.23l3.16,1.29l0.2,-1.2l-2.9,-2.53l1.81,-3.13l3.37,-0.89l0.09,1.56l1.08,0.42l-0.26,1.14l0.82,0.44l1.53,-1.47l0.8,1.19l2.44,-1.16l0.54,1.8l2.03,-1.43l3.02,0.63l1.4,-0.92l-0.86,3.66l-5.49,6.35l0.73,1.25l4.23,-1.92l1.09,-2.02l1.64,-0.62l-0.23,-1.32l2.08,-3.05l0.9,-0.26l0.4,1.56l1.64,0.18l0.28,-0.66l-0.86,-0.58l0.4,-1.87l-0.54,-0.45l0.07,-0.42l0.32,-0.16l-0.04,0.76l2.83,2.83l0.62,-0.25l0.42,-2.32l2.18,-0.33l0.41,1.66l-1.26,1.57l2.95,1.54l0.15,1.36l1.46,0.06l0.29,3.25l-0.65,1.25l1.78,-0.54l0.71,-2.33l0.83,-0.34l0.87,1.08l0.38,-0.7l2.02,-0.25l2.75,2.8l0.71,4.57l-2.15,2.43l0.74,0.97l-0.64,2.61l-0.85,0.33l0.11,1.15l-3.8,6.69l-1.76,-0.44l1.06,2.04l-0.55,1.01l-4.04,0.04l-0.13,0.98l-2.31,1.76l0.2,0.86l1.88,-0.26l-0.64,0.83l-0.79,-0.44l-0.64,1.0l-7.69,3.8l-5.83,-3.2l0.44,1.16l4.34,2.87l-1.89,0.74l1.62,0.97l5.23,-2.85l2.62,0.55l-6.68,7.85l-1.32,1.21l-1.66,-0.02l-0.48,1.99l-2.52,1.31l0.8,1.26l1.09,-0.38l-0.52,1.89l15.77,-15.26l4.02,-2.71l0.76,1.57l-2.32,6.44l-2.19,1.91l-1.5,5.88l-1.61,3.14l-1.56,0.46l0.34,2.06l-4.21,8.21l-0.47,6.44l-0.92,1.26l-2.31,0.45l-0.87,-2.93l-2.64,-2.17l-0.76,0.28l2.83,3.95l0.14,2.03l2.67,1.65l-0.45,1.72l-2.6,0.08l-3.72,3.24l-1.47,-1.63l-2.54,-0.39l0.07,0.86l2.62,1.91l-2.03,1.1l0.77,1.03l4.03,-1.03l3.21,-2.6l0.66,0.72l-0.33,2.62l-2.68,1.86l-0.36,1.03l0.33,1.05l2.27,-0.58l-0.4,2.42l-4.23,4.11l-1.84,0.03l-1.35,-0.56l-0.5,-2.83l-4.08,0.49l-0.28,-0.99l-2.72,-0.24l-2.5,1.54l0.32,1.26l0.77,0.8l1.63,-0.58l4.43,0.49l2.07,4.38l-0.5,1.48l-1.61,0.49l-0.93,-1.22l-0.93,0.11l0.45,2.43l-1.01,0.71l-1.9,0.07l-2.03,-1.35l-0.44,1.08l0.94,2.58l-2.15,-0.19l-1.87,-1.27l-0.64,0.63l-1.33,-1.41l-5.02,-0.68l-0.29,1.22l0.64,0.86l-1.39,1.07l1.3,2.66l-3.18,-0.69l-0.99,0.91l3.65,1.7l-0.49,0.59l0.52,0.53l3.25,-1.28l2.94,-0.36l1.32,0.83l6.71,-0.97l-1.36,1.41l2.36,2.8l-2.7,0.6l-3.21,-0.78l-0.96,-1.92l-1.52,-0.97l-10.24,1.71l-0.61,0.97l0.81,0.74l0.7,-0.57l6.41,-0.12l2.91,0.69l-2.7,0.07l-3.72,2.2l-2.89,-1.13l-4.07,0.92l0.31,0.97l4.62,-0.44l0.75,0.49l-2.04,5.75l0.52,1.3l0.79,-0.47l1.62,-5.07l4.43,-2.33l4.73,0.72l-3.04,2.71l0.21,1.2l3.65,-1.75l3.91,0.39l1.2,3.12l-0.16,2.11l1.14,0.67l-3.09,2.42l-5.59,0.06l-1.11,0.86l0.08,0.94l2.77,-0.28l0.49,0.95l5.32,1.54l0.39,0.76l-1.37,0.5l-0.8,2.86l-5.32,-0.57l-1.6,1.33l0.25,1.1l1.78,0.65l5.04,-0.02l-0.83,3.39l-1.94,-0.74l-2.9,3.31l-1.48,-0.86l-3.65,0.65l-2.4,-1.05l-0.83,2.83l2.74,2.17l0.02,3.58l1.96,1.17l-1.13,1.17l0.25,1.4l-1.46,2.03l0.24,1.16l-2.0,1.75l0.12,-1.32l-0.64,-0.26l-1.79,2.52l-2.82,-0.37l-1.66,1.19l-2.98,-0.37l-4.19,-2.62l-3.75,-5.91l-0.93,0.02l0.24,2.06l1.48,2.19l-0.06,2.42l3.22,1.92l-3.2,1.07l-2.05,-0.28l-0.12,0.9l1.53,0.95l0.7,2.19l1.08,-0.09l3.07,-3.13l5.01,1.29l-1.18,2.84l0.85,0.62l1.7,-3.13l1.38,-1.38l1.27,-0.05l2.13,1.41l0.32,1.24l-1.49,3.21l0.08,1.68l2.71,-0.42l-0.27,1.92l1.75,0.6l1.69,-4.7l1.05,-0.55l2.45,4.33l0.24,3.88l-1.27,0.71l-0.37,2.68l-1.13,1.56l-0.61,-0.43l0.05,-1.71l-1.96,-0.2l-2.11,6.92l-1.45,-0.21l-2.66,2.31l-0.96,-0.18l-2.11,1.39l-0.3,0.82l-1.76,-0.81l1.08,-5.22l-2.54,-1.91l-0.2,-1.2l-0.72,-0.08l-1.38,2.18l-2.71,-0.68l0.08,-2.08l1.15,-2.18l-2.86,1.39l-2.8,-4.26l-0.73,0.8l1.63,3.45l2.4,1.97l-0.52,1.16l0.56,2.12l-3.0,0.93l-1.64,-1.42l-0.33,-2.96l-1.7,-2.06l-0.03,-2.0l-0.6,-0.34l-0.99,1.82l1.81,3.15l0.53,3.63l-2.22,-0.37l-3.6,-5.43l-0.91,0.48l0.76,1.13l0.21,3.65l-1.88,0.31l-1.58,-2.85l-1.33,-0.41l0.58,4.26l3.36,2.1l-4.06,0.78l-0.6,-0.7l-6.11,-1.47l-0.25,-1.66l1.11,-1.5l-2.76,-2.97l-0.46,0.74l1.83,2.29l-1.82,1.26l-0.29,2.61l-1.72,-0.52l-0.45,-1.58l-1.19,-0.11l-1.11,-3.97l-0.72,0.62l0.31,3.91l0.65,0.8l-0.75,1.5l-1.01,-1.89l-0.79,1.24l-2.32,-0.55l0.37,-2.67l-0.99,-2.63l-0.07,-5.11l-0.8,0.13l-0.92,2.26l0.57,2.6l-0.79,0.78l-0.85,4.21l-2.3,-1.8l-0.27,-2.03l-0.94,0.26l1.39,-4.03l-0.8,-2.86l5.95,-5.28l0.12,-1.01l3.66,-0.38l0.48,0.85l1.2,-0.21l0.63,-0.4l-0.3,-1.35l1.25,-0.33l1.53,1.4l1.48,-1.96l-2.98,-0.83l1.23,-1.3l-1.69,-0.5l1.99,-1.15l0.01,-0.73l-4.62,0.26l-0.15,-4.55l-2.79,-2.63l0.44,-3.88l4.54,-2.14l3.75,1.53l2.52,2.87l1.71,7.39l1.03,-0.76l0.8,1.14l2.38,0.43l1.45,1.48l1.65,0.4l0.48,-0.5l-0.84,-2.1l2.49,-0.07l3.23,1.12l0.52,-0.45l-0.4,-1.35l-1.77,-1.17l2.25,-1.39l1.88,-4.33l1.83,-6.33l-0.38,-2.63l1.24,-1.34l-0.41,-0.77l-0.98,0.14l-1.53,1.65l0.25,2.82l-0.9,1.02l-2.07,7.08l-1.97,2.55l-4.9,-0.47l1.84,-3.58l-0.42,-1.99l-2.31,3.72l-1.72,-1.12l0.44,-2.92l2.4,-2.71l1.84,0.19l0.09,-0.86l-1.56,-0.74l-3.62,0.67l-0.97,0.87l-0.93,-1.03l2.79,-2.91l1.78,0.54l2.49,-1.51l-0.36,-0.64l-2.77,0.8l-1.0,-0.8l0.37,-1.3l1.6,-0.84l2.34,0.89l1.11,-0.92l-2.53,-1.11l-2.44,0.46l0.57,-2.56l1.25,-0.99l-0.23,-0.79l-1.27,0.23l0.69,-6.07l-0.66,0.0l-0.89,2.18l-0.75,6.02l-1.81,4.32l-3.64,1.46l0.11,-1.87l1.51,-2.15l0.0,-4.26l-2.21,4.77l-1.49,-0.07l-1.1,2.26l-3.45,-0.05l2.24,-1.71l-1.13,-0.98l-1.15,0.28l-0.09,-5.02l1.57,-2.69l1.71,-0.45l-0.33,-1.08l-1.04,0.08l2.22,-5.38l4.35,-0.89l3.22,-2.37l1.72,1.18l4.75,0.51l3.08,2.66l1.99,0.73l2.71,3.07l0.94,-1.28l-1.92,-2.43l1.56,-0.41l-0.12,-1.19l-0.92,-0.38l-1.93,0.76l-2.3,-2.0l3.89,0.23l1.97,-1.17l1.55,0.41l0.13,-4.04l0.84,-1.58l-0.78,-1.1l-1.85,1.67l-0.92,2.69l-1.67,0.83l-2.17,-1.17l-6.62,0.01l-2.36,-1.93l0.97,-2.21l1.34,0.33l1.16,2.03l2.71,0.4l0.81,-1.0l-3.25,-2.16l-0.3,-2.48l-1.44,0.92l-1.21,-5.65l-2.04,-1.92l-0.94,-3.5l-1.66,-1.68l-5.45,-1.76l0.13,-5.04l3.58,0.7l1.1,0.9l0.84,-1.01l-1.65,-1.5l-4.58,-1.39l-0.61,-2.66l0.47,-4.47l2.35,-0.75l2.91,1.75l6.82,0.0l8.29,9.68l1.21,3.72l1.52,0.99l-0.35,1.77l0.89,0.78l1.35,-1.36l3.9,1.55l0.25,-1.04l3.1,-1.46l0.78,-1.84l-0.48,-0.53l-5.1,1.93l-2.93,-1.38l-1.1,-4.55l1.05,-1.31l-3.86,-1.89l-5.31,-7.57l12.41,-4.94l1.19,-1.65l9.01,-2.3l-0.18,-1.51l-8.12,0.6l6.89,-5.55l7.25,-2.54l-0.0,-1.15l-0.9,-0.71l-6.21,0.77l-3.59,1.59l-0.31,-3.3l1.55,-3.08l-0.13,-1.8l1.14,-0.81l1.79,-3.84l2.17,-1.99l1.05,-2.43l-1.11,-0.39l-5.09,5.04l-1.84,3.71l0.04,2.02l-3.46,-2.08l0.19,1.27l1.88,2.04l-0.89,2.04l0.81,1.51l-1.36,3.73l-5.1,5.15l-6.47,3.44l-2.88,0.56l0.06,-2.18l4.03,-2.58l1.53,-3.04l-1.59,-0.63l-2.52,2.89l-3.57,1.37l-0.11,-0.89l1.71,-2.36l-1.42,-0.71l-1.54,2.61l-0.89,-0.11l0.78,3.85l-0.34,2.24l-2.15,0.9l-2.45,-0.37l-0.92,0.72l-2.85,-0.66l1.04,-2.46l-1.46,0.68l-1.13,1.77l-2.57,-1.54l3.77,-9.32l2.48,-2.15l10.36,-3.87l1.42,-0.97l0.25,-1.18l-15.16,5.18l-2.55,3.23l-3.68,8.19l-1.52,-0.28l-5.52,-4.12l-2.24,-3.03l4.25,-1.92l3.52,0.41l4.2,-0.87l1.82,-1.89l1.94,-0.42l-0.13,-1.51l4.29,-3.96l0.25,-1.51l-2.63,0.01l-2.72,1.88l-2.58,3.29l-3.64,1.65l-2.07,-0.21l-8.46,1.96l-1.28,-1.35l-0.52,-3.13l1.09,-1.27l1.94,1.0l2.9,-1.73l-0.72,-0.69l-1.46,0.36l-2.15,-1.84l3.74,-3.35l0.85,0.04l-0.24,-1.23l3.26,-0.87l3.07,1.13l0.75,-0.39l-0.28,-0.99l-4.96,-2.2l-8.72,6.37l-1.32,-2.12l5.1,-4.06l0.23,-0.89l-1.89,-0.43l-1.67,-2.12l-0.45,1.26l-1.34,-0.39l-1.34,1.78l0.02,1.51l-1.09,0.35l-0.29,-1.24l-1.85,-0.94l0.27,-0.49ZM467.22,187.34l-0.02,0.7l0.08,0.54l-0.23,-0.5l0.17,-0.74ZM511.4,194.3l-0.08,0.24l-0.06,0.04l0.07,-0.21l0.07,-0.07ZM521.76,108.32l4.22,-0.05l0.38,1.75l1.07,0.74l-3.95,0.26l-1.72,-2.7ZM462.41,44.68l-0.48,-0.1l0.11,-0.41l0.37,0.52ZM479.98,42.56l-0.16,-0.42l0.09,0.02l0.07,0.4ZM553.75,2.1l0.09,-0.05l0.0,0.03l-0.09,0.01ZM485.99,154.18l-1.65,1.09l-0.22,-0.13l0.52,-1.19l1.35,0.23ZM569.79,661.05l-0.05,-0.21l0.07,-0.55l0.68,0.7l-0.69,0.06ZM569.0,481.37l0.25,0.11l-0.12,0.21l-0.05,-0.02l-0.08,-0.31ZM566.07,517.84l0.13,-0.53l1.96,-0.83l-0.06,0.3l-2.04,1.05ZM560.16,465.59l2.1,-1.05l3.51,-0.14l0.32,0.76l1.55,0.15l1.51,2.38l-0.35,1.42l-2.69,1.96l-5.95,-5.48ZM567.74,657.21l0.59,-0.24l0.46,0.97l-0.38,0.0l-0.67,-0.73ZM567.08,481.73l0.79,-0.2l0.12,0.15l-0.37,0.09l-0.54,-0.03ZM563.91,454.17l0.28,-0.52l2.0,-0.55l-0.62,1.38l-1.66,-0.3ZM561.74,604.49l0.36,-1.75l3.07,-1.32l-2.77,2.79l-0.66,0.28ZM562.62,591.14l0.29,-0.1l0.15,0.19l-0.33,-0.12l-0.11,0.03ZM561.9,579.26l0.03,-0.21l0.16,-0.38l0.23,0.82l-0.42,-0.23ZM562.22,593.87l-0.14,-1.09l0.27,-0.29l0.22,0.48l-0.34,0.9ZM546.79,664.8l1.55,-2.51l4.66,-1.23l3.06,0.13l4.08,4.11l1.48,3.29l-3.39,-0.09l-11.44,-3.71ZM555.47,342.98l2.64,-0.2l0.34,1.06l-1.68,2.76l0.27,1.38l-1.29,0.66l-1.48,-1.7l-0.39,-3.32l1.12,-1.0l0.47,0.38ZM548.37,497.83l-0.35,-4.63l1.73,-5.02l1.16,-0.82l1.47,0.44l0.98,-0.93l2.54,2.46l0.32,2.13l-3.07,11.1l-4.6,-3.84l-0.17,-0.89ZM554.12,536.8l0.54,-0.67l0.8,0.1l-0.82,1.01l-0.52,-0.44ZM553.2,539.49l0.02,-0.17l0.05,0.01l0.01,0.12l-0.07,0.05ZM518.38,254.51l0.02,-3.28l1.94,-0.65l2.28,1.5l0.72,-0.61l3.81,1.55l8.24,-1.79l4.72,1.82l1.83,1.34l1.29,2.82l2.0,0.59l1.36,3.33l2.32,1.15l0.14,2.91l1.58,0.57l0.16,1.42l-1.02,0.76l-12.46,-0.08l-6.24,4.05l-2.27,0.18l-2.95,-1.96l-1.55,-3.7l-0.47,-4.43l-4.24,-0.78l-0.48,-0.67l-0.23,-3.23l0.9,-0.63l-1.39,-2.18ZM542.4,343.23l1.71,-3.49l2.32,-0.76l0.1,-1.74l0.81,0.38l0.67,1.17l-0.8,1.23l-4.81,3.21ZM539.83,355.35l1.02,-3.29l1.77,-0.72l1.11,-3.34l0.91,-0.14l-0.76,-1.61l2.39,-1.22l0.67,1.28l-0.6,1.55l-0.94,0.07l-2.03,7.01l-2.55,1.82l-0.98,-1.41ZM544.39,363.79l1.03,-0.85l0.6,0.66l-0.77,0.79l-0.86,-0.6ZM546.23,361.86l-0.26,-0.62l-1.1,-0.62l2.08,0.52l-0.0,0.9l-0.72,-0.19ZM543.01,367.74l1.19,-0.44l0.95,0.97l-1.19,2.11l-0.95,-2.63ZM491.5,444.21l0.6,-0.54l-0.58,-3.61l1.19,-14.31l3.45,-4.37l0.11,2.65l0.82,0.13l0.58,-0.88l1.19,0.7l1.14,3.24l-1.81,0.99l-0.23,0.9l2.67,2.32l0.99,4.1l1.57,-0.26l1.49,-5.17l3.04,2.44l-0.42,1.38l1.36,1.37l5.93,1.02l2.1,3.77l2.76,1.13l1.6,1.85l1.51,0.59l1.71,-0.47l5.13,4.44l0.28,3.89l1.81,2.28l-0.08,0.86l-2.81,1.51l-0.02,1.94l4.49,-1.05l1.44,-1.05l3.48,1.36l0.51,-0.57l-0.38,-1.92l2.94,2.24l0.11,1.01l-1.42,-0.11l0.39,1.02l4.41,1.63l-2.32,0.89l-3.6,4.37l-0.37,1.42l-0.79,-0.13l-8.74,-3.71l-3.42,0.48l-0.61,-1.02l1.33,-1.33l-0.06,-2.1l-1.9,-1.28l-4.59,0.66l1.0,-3.43l-0.5,-0.96l-1.15,-0.14l-0.97,1.27l-3.03,0.75l-1.17,2.31l0.84,4.2l-1.24,0.31l-2.38,3.21l-1.83,-0.12l-2.37,6.34l-4.18,3.28l-3.23,0.73l-1.16,-2.5l0.12,-6.95l-1.51,-3.22l-1.1,1.42l-3.38,1.23l-3.76,-0.09l-1.91,2.06l-1.94,0.07l-0.65,-0.91l0.24,-1.85l2.24,-3.9l6.11,-3.91l-1.64,-4.15l-0.66,-5.63l1.24,-4.08ZM537.03,125.67l0.14,-0.6l1.77,1.03l-0.27,0.43l-1.64,-0.86ZM528.04,339.31l1.24,0.37l0.11,0.47l-1.79,0.18l0.44,-1.02ZM530.38,340.78l0.27,-1.09l-0.83,-1.63l1.44,-0.15l0.93,1.53l2.86,-1.09l0.44,-1.19l1.15,0.08l0.99,1.53l-1.6,1.72l-1.98,0.49l-1.54,-0.55l1.0,2.87l-1.35,-0.46l-0.17,-1.79l-1.59,-0.26ZM532.71,453.04l0.06,-0.06l0.37,-0.01l-0.25,0.1l-0.18,-0.03ZM516.53,485.9l0.87,-1.45l0.09,-2.41l1.48,-1.87l2.19,1.47l3.25,-2.28l2.59,0.08l1.19,-1.35l3.08,0.71l-0.28,4.19l-3.25,2.92l-0.63,1.91l-5.19,5.86l-1.93,-1.17l-3.35,2.23l-0.27,-2.41l-2.11,-2.98l2.26,-3.44ZM224.48,339.27l10.41,-29.68l3.07,4.97l8.62,5.59l0.69,2.27l2.5,3.21l4.41,3.07l1.14,1.6l2.02,0.19l2.98,2.06l0.89,-0.13l2.4,2.31l0.78,-0.7l-1.76,-3.42l2.36,1.93l2.42,-0.32l2.76,3.37l0.88,-0.03l1.2,2.81l1.35,1.18l0.3,2.22l1.65,2.99l-0.64,1.68l0.97,0.74l-1.14,2.31l-6.49,-2.8l-0.42,0.7l0.81,1.53l-0.59,0.64l-2.27,-1.38l-0.61,0.37l-0.84,2.67l0.38,0.97l-2.87,0.38l-0.51,0.95l1.74,1.32l1.04,1.98l3.02,0.67l2.45,2.45l1.4,0.13l2.17,1.57l10.93,3.14l1.2,-0.96l2.0,0.4l0.07,1.09l0.81,0.42l0.63,-1.44l3.09,1.24l1.94,-1.54l-0.11,1.43l1.58,0.24l5.48,-2.57l0.88,-0.15l1.11,1.15l0.63,-1.72l-0.24,3.09l0.7,0.76l0.69,-0.72l0.19,3.26l1.6,1.08l0.96,-1.0l2.37,0.99l0.28,3.64l-0.97,1.47l1.05,2.55l1.18,-0.34l1.72,-4.6l-0.29,5.31l0.94,0.54l0.67,-1.63l1.95,3.58l0.33,2.6l-0.29,1.31l-1.69,-0.59l-0.91,0.77l-2.38,-3.14l-0.55,0.44l0.28,2.54l2.58,2.29l-0.03,1.5l-0.9,0.74l1.74,0.69l0.16,3.36l0.73,0.24l0.29,-0.67l0.93,3.59l2.54,4.51l0.56,-1.13l-2.78,-7.77l0.7,-2.8l0.59,1.56l1.23,0.59l0.8,-2.68l1.13,2.62l1.02,0.02l-1.47,-5.0l0.9,-0.19l0.74,-1.4l-2.13,-2.14l-0.43,-3.54l1.13,-2.31l-2.38,-4.66l0.26,-1.42l0.68,-1.28l2.24,-0.89l0.39,-1.05l-0.68,-0.64l0.69,-0.93l2.24,0.49l1.65,-1.04l3.04,0.68l0.83,-1.69l0.83,0.37l0.32,-0.89l0.43,1.39l1.37,-0.19l-0.61,-1.7l0.59,-1.86l5.7,-0.59l0.67,-1.61l-0.38,-1.27l1.23,-1.54l-0.22,-0.61l-1.26,0.27l-1.13,-0.69l-4.95,1.61l-1.26,1.37l0.86,1.59l-0.65,0.65l-1.29,-1.72l-1.95,0.63l-1.81,1.67l-2.11,-2.13l-2.12,-0.27l-1.21,1.95l0.93,1.49l-4.02,0.08l-0.35,-3.71l-2.76,0.75l5.19,-6.15l7.85,-0.24l8.82,-3.41l2.59,1.66l1.74,3.52l-0.75,1.35l0.7,3.02l-1.58,1.89l1.51,0.48l0.03,1.25l2.72,3.18l2.26,0.0l-0.79,1.66l1.16,2.86l5.67,1.14l0.86,-0.74l1.24,0.18l1.04,-1.88l-0.19,3.16l2.89,2.32l1.11,2.33l2.43,1.12l1.52,2.07l1.06,-1.23l1.39,0.04l0.82,1.22l2.25,0.99l2.9,-1.25l2.29,0.29l1.89,-1.43l0.83,0.87l1.38,-0.92l6.44,1.64l2.19,2.05l2.76,0.65l0.45,-1.05l1.12,0.08l0.53,-0.78l2.72,-0.03l-0.65,-2.06l-1.84,-1.78l0.07,-1.92l0.73,-0.05l4.38,8.36l2.67,2.31l2.38,-1.08l0.96,0.6l1.32,-1.43l-0.93,-1.05l0.67,-1.15l-0.81,-2.97l-0.65,-0.18l-0.52,0.86l-2.33,-3.23l-2.98,1.2l-0.74,1.82l-1.81,-4.08l1.15,-2.2l-1.3,-1.23l-0.95,-2.33l0.41,0.49l1.06,-0.68l1.61,1.55l3.97,-1.42l-1.75,-3.21l1.71,0.28l1.22,2.35l0.82,-0.62l-0.63,-1.05l0.79,0.01l2.78,3.39l-0.51,1.81l1.23,0.6l1.74,-0.66l0.39,1.96l-1.87,2.21l0.45,1.19l1.07,0.06l0.37,-0.73l1.35,0.34l0.05,-2.01l3.31,-1.93l-2.26,10.07l-1.15,0.65l-1.37,4.54l2.71,1.5l-1.35,3.33l1.16,0.91l0.87,0.02l2.55,-2.56l1.14,0.23l-2.48,3.23l0.46,0.54l2.29,-0.85l1.07,3.83l-0.69,0.79l-0.87,0.03l-0.32,-0.82l-2.25,0.7l-0.22,-2.61l-1.42,1.67l-0.98,-0.04l0.01,-1.45l-0.95,-0.71l-1.25,0.87l2.59,5.12l1.83,1.52l0.07,3.2l0.62,0.46l1.74,-1.81l-0.09,-1.39l-0.49,-0.51l-0.53,0.64l-2.24,-4.1l5.81,1.19l1.21,-1.66l-0.77,-3.86l1.55,-2.61l-1.19,-1.53l-0.44,-2.43l0.64,-1.82l-2.68,-3.83l1.36,-1.41l-0.06,-2.11l1.27,-3.03l0.98,0.79l1.08,-0.91l2.7,1.03l4.92,-4.77l0.76,-3.04l5.89,-4.28l0.06,-0.55l-2.54,0.03l1.29,-4.2l-0.48,-2.74l-1.56,-0.33l0.09,-2.09l-1.38,0.93l-1.22,3.1l-0.02,1.06l0.75,0.43l-0.87,0.88l-2.12,0.51l-1.23,-0.72l0.37,-3.7l1.04,0.58l3.51,-4.41l-0.31,-0.69l-1.96,0.28l0.4,-3.15l3.29,-0.43l-1.04,1.69l0.19,2.02l0.66,0.2l3.72,-4.16l-0.12,-0.8l-1.22,0.19l0.95,-2.36l-1.2,-1.18l-2.52,0.89l-0.3,1.01l-2.63,-0.42l-2.48,-5.15l-1.12,0.57l-0.51,1.8l-3.7,-2.56l-1.82,-2.33l-2.36,-0.27l-0.5,-3.29l-1.16,-0.62l-1.65,-3.41l0.19,-4.23l1.56,-1.49l0.59,-2.41l0.75,0.08l0.47,-1.03l1.74,1.31l0.65,-0.46l-1.77,-1.69l1.82,-2.37l-1.22,-0.06l-2.0,1.53l-2.27,-3.41l2.08,-6.34l-1.21,-0.92l1.28,-0.4l-0.57,-2.81l1.13,-0.1l1.07,-2.14l0.99,-0.1l1.95,2.72l1.27,0.08l1.09,-2.03l-0.68,-1.12l1.26,-2.02l-3.16,-0.42l-0.45,-1.61l2.8,-2.14l1.55,0.02l0.61,-2.28l2.29,-0.15l1.05,0.27l0.34,1.88l1.37,-1.05l0.01,2.96l1.67,-2.31l1.75,0.58l1.19,-0.48l-0.76,2.42l5.56,6.86l0.65,6.62l-0.38,3.5l-0.67,-0.38l-0.34,0.96l2.43,2.04l0.21,2.15l2.47,0.98l0.33,3.3l1.82,2.28l-0.77,1.36l1.62,1.29l0.64,-1.77l0.6,0.07l-0.06,2.68l1.31,0.89l-3.08,0.37l-1.91,-2.81l-1.17,0.57l0.43,0.71l-1.34,0.59l0.57,0.61l-1.22,1.91l1.31,0.68l1.02,-0.88l1.26,0.14l0.86,0.98l-2.28,2.89l-2.9,1.73l-1.98,3.08l2.03,0.54l1.89,-0.62l2.12,2.78l2.21,1.48l3.01,-3.73l1.29,0.51l-2.65,1.88l0.02,0.7l2.97,-0.72l0.63,0.96l1.39,-0.16l0.36,0.69l1.02,0.01l0.53,-1.03l1.52,0.89l-0.6,0.64l-0.48,-0.53l-1.01,0.39l0.45,0.62l-1.08,0.99l-0.25,1.61l-0.66,-1.61l-1.72,1.43l-1.69,-1.37l-0.67,0.29l5.9,6.11l-0.39,1.34l0.76,0.7l-0.12,1.27l1.3,0.85l-1.1,1.36l0.62,0.65l0.15,5.16l-0.94,1.83l1.82,1.52l-0.76,1.04l1.18,-0.07l0.75,2.4l1.47,-0.7l-0.22,-1.21l2.53,-4.71l-0.88,-1.61l0.66,-1.17l0.25,1.24l0.85,-0.82l0.03,-7.76l3.52,-5.21l1.47,0.7l1.7,3.2l5.43,5.67l1.93,9.81l-0.74,1.96l-1.47,-0.53l-0.28,-2.77l-1.98,1.93l0.78,3.99l-0.65,2.99l1.99,6.42l5.48,6.44l0.69,2.03l-0.88,0.97l-0.09,1.63l0.8,0.3l0.68,-1.15l0.35,1.43l0.78,-0.01l0.44,-2.43l0.83,0.85l1.19,-1.63l-0.28,-1.39l0.74,-1.69l2.29,1.14l0.87,-0.85l0.25,-4.84l-0.63,-1.66l1.23,-3.16l3.31,-4.63l-0.01,-2.78l0.72,-0.74l-0.38,-2.13l1.03,-2.63l-0.67,-3.78l0.49,-2.13l1.4,-0.43l1.49,0.7l0.49,-0.72l3.33,-0.12l-0.45,-2.01l-1.59,0.03l-1.06,-0.4l1.21,-0.49l-0.1,-1.13l1.6,-0.05l-0.18,-1.05l-0.94,-0.34l2.55,0.15l0.54,-0.81l-1.73,-0.8l-0.34,-0.92l-1.18,0.19l-0.77,-2.04l-2.66,-0.4l-0.82,-1.5l0.81,-0.1l0.0,-0.83l-0.96,-1.22l0.99,-1.18l-0.72,-0.74l-0.71,0.27l0.02,-1.04l0.96,-0.72l-1.19,-2.09l1.29,-3.37l1.71,0.98l1.8,-1.51l3.23,-0.54l4.79,2.88l2.79,0.38l5.52,-0.71l-0.24,1.63l-0.91,0.6l1.79,1.11l-5.0,-0.84l-0.47,1.18l6.95,1.74l1.5,2.03l-0.72,1.48l0.5,0.56l3.8,-0.97l2.98,1.18l0.36,1.29l-1.6,2.39l-3.57,3.4l2.94,-0.68l1.34,1.48l0.97,-0.97l1.12,1.62l0.07,2.62l-2.43,2.77l-1.12,-0.34l-1.18,2.16l-0.64,-1.43l-1.23,-0.48l-0.93,0.34l0.73,1.2l-2.85,-1.27l-0.61,0.89l0.8,0.9l-0.78,0.72l2.38,1.64l-0.88,0.27l0.47,1.3l1.32,0.08l-0.48,2.02l1.95,1.1l-0.36,2.19l0.93,2.29l7.22,7.8l-0.46,8.01l-0.47,1.76l-3.69,1.09l-1.27,5.13l-1.52,0.1l-1.53,3.31l-3.21,0.57l-0.36,1.57l-2.63,2.63l-1.82,-3.11l-1.56,-0.52l-1.22,-1.47l0.84,-0.02l0.3,-0.94l-0.88,-1.37l0.07,-2.94l-0.75,0.13l-1.27,3.29l-0.76,-0.18l0.3,-1.92l-1.46,-1.06l-0.06,-2.04l-4.96,-1.37l0.52,1.66l-2.58,1.27l-0.05,1.65l0.92,0.71l1.52,-0.57l1.28,-1.95l0.9,2.46l2.33,0.87l-0.56,1.2l1.17,0.78l1.2,-0.25l-0.39,1.76l2.5,2.69l0.7,2.76l1.26,1.62l-1.31,0.22l-2.21,-2.28l-1.33,0.72l-1.52,-2.2l-1.24,1.82l2.26,2.97l-3.5,-1.81l-1.0,0.26l-1.06,-1.4l-0.94,1.28l-1.01,-4.35l-1.69,-2.05l-2.87,1.73l-2.16,0.21l-1.61,-1.0l-0.78,0.7l-1.44,-0.65l-0.35,0.93l-1.35,-0.12l0.47,1.42l-0.78,0.64l1.71,2.75l2.48,0.54l3.42,1.99l-0.82,1.21l0.29,1.35l-3.46,2.77l-0.86,4.49l-3.52,2.99l-1.11,1.7l0.29,1.02l-2.17,1.42l-5.44,-0.4l-3.38,-3.83l-1.96,-1.11l1.98,0.38l0.35,-0.84l-5.88,-1.93l-4.76,-4.34l-3.09,-0.04l2.03,2.44l-2.02,-1.36l-1.25,0.27l-0.41,-1.0l-1.47,0.42l-7.61,-1.47l-1.67,0.63l3.86,3.52l0.78,-0.69l-0.83,-1.67l8.95,2.69l3.98,3.69l0.64,2.11l1.78,1.27l1.28,2.27l8.42,1.2l2.68,-0.06l0.73,-0.68l4.93,1.04l0.9,1.55l-0.24,1.63l-1.03,1.03l-1.57,4.77l-1.71,0.78l-0.47,3.24l-1.97,1.14l-2.32,7.37l-0.94,-0.04l-4.12,3.41l-3.38,-1.51l-1.02,-2.09l-0.87,0.6l1.13,2.59l-2.84,-1.61l-0.7,0.6l-1.08,-0.5l-0.16,-3.36l-3.42,2.27l-0.05,0.72l1.38,0.47l0.48,1.07l-1.34,0.94l-0.86,-0.9l-1.17,0.51l2.71,3.88l-0.95,0.21l-0.8,2.81l-1.89,0.39l-0.23,-0.94l-1.65,-0.78l-0.8,1.51l1.26,0.44l-2.79,0.72l-5.08,-3.21l-1.21,0.14l-0.42,-1.14l-2.12,0.46l0.4,-1.11l-1.23,-0.2l-0.68,1.26l-2.38,-0.59l-9.09,-5.07l-1.31,-1.52l-0.1,-1.25l-1.79,-0.68l1.46,3.62l-1.67,0.73l1.11,2.5l2.55,1.43l1.53,-0.47l0.27,-0.5l-1.81,-2.08l6.31,3.9l1.37,-0.58l0.64,1.4l1.83,0.49l-0.34,1.0l-0.74,-0.38l-2.27,2.01l0.88,1.18l2.55,-0.4l0.29,-1.38l3.25,-1.78l3.36,4.54l3.46,0.45l0.25,1.24l2.0,0.84l0.42,5.65l-1.07,1.87l-2.1,-0.17l-3.58,3.08l-6.01,-1.84l-0.37,1.26l-2.6,-0.41l-0.4,1.17l1.52,2.4l3.47,0.94l-0.59,1.4l-1.08,-0.3l-0.33,-1.22l-2.38,1.27l-0.26,-1.03l-1.49,-0.62l-0.48,0.6l0.5,2.44l-1.28,0.07l-0.91,2.87l-4.1,-1.05l4.19,3.17l-2.98,0.84l-0.3,0.85l0.81,0.74l-1.17,1.03l-1.17,-0.68l-1.18,0.74l1.06,1.19l-0.7,0.63l-1.72,-0.71l-0.48,0.61l0.55,0.71l-0.52,1.16l1.48,0.65l0.23,1.97l-4.07,2.49l-1.42,2.04l0.19,1.66l0.98,1.0l-2.1,-0.35l-0.42,0.57l0.86,1.7l-0.83,1.09l0.32,1.46l-2.99,4.42l-1.82,5.77l-1.44,-0.29l-1.34,1.34l1.64,2.12l-2.04,7.01l-34.0,-2.48l-33.8,-3.8l10.71,-81.63l-31.59,-11.1l-25.71,-9.97l-3.84,-3.25l-7.01,-13.94l-14.83,-3.67l-25.6,-33.48l-22.77,-34.44ZM431.43,497.66l0.31,-0.12l0.17,0.01l-0.2,0.26l-0.28,-0.15ZM433.43,493.16l1.61,0.52l0.09,0.54l-0.15,0.11l-1.55,-1.16ZM459.86,461.22l0.41,0.12l0.06,0.53l-0.42,-0.04l-0.04,-0.61ZM466.21,460.65l0.17,0.26l-0.02,0.0l-0.16,-0.26ZM457.33,422.91l-0.21,0.13l-0.28,-0.01l0.5,-0.12ZM510.45,414.38l0.09,0.15l-0.04,0.09l-0.06,-0.23ZM452.6,352.21l0.03,0.15l-0.01,0.1l-0.08,-0.08l0.07,-0.17ZM409.93,384.6l0.12,0.01l-0.05,0.33l-0.07,-0.28l-0.01,-0.06ZM408.2,373.33l-0.03,-0.49l0.36,-0.47l-0.09,0.56l-0.23,0.39ZM318.49,387.42l0.17,-0.15l0.1,-0.19l-0.02,0.65l-0.25,-0.3ZM318.8,386.55l-0.03,-0.21l0.0,-0.15l0.04,0.09l-0.01,0.27ZM320.92,364.54l0.05,-0.18l0.03,-0.08l0.11,0.08l-0.19,0.18ZM329.82,363.21l-0.02,-0.07l0.05,-0.02l-0.02,0.09ZM343.75,364.08l-0.01,-0.29l0.6,-0.07l-0.05,0.14l-0.54,0.22ZM393.17,373.66l-0.08,-0.14l0.13,-0.03l-0.03,0.08l-0.02,0.08ZM393.23,373.44l0.07,-0.35l0.01,-0.02l-0.02,0.16l-0.07,0.21ZM431.06,350.19l0.25,-0.55l0.38,-0.32l-0.44,0.76l-0.19,0.11ZM427.63,295.62l-0.28,-0.5l-3.9,0.29l-0.05,-0.78l0.27,-0.75l4.16,-0.81l0.66,1.13l-0.85,1.43ZM524.08,151.98l-0.31,-0.7l1.09,-0.68l0.05,0.73l-0.83,0.65ZM520.21,200.3l0.21,-1.47l2.86,-4.4l0.44,0.9l-1.75,2.84l0.99,1.66l-1.45,0.22l-0.61,1.26l-0.7,-1.01ZM420.31,181.66l0.5,-1.13l0.61,1.02l2.18,0.2l0.2,-2.11l-2.58,-1.69l-0.08,-0.91l1.13,-0.95l0.69,0.51l1.21,-0.61l0.2,-1.3l2.62,-0.71l1.81,0.46l2.56,2.13l2.24,0.35l0.31,1.19l1.42,0.92l1.0,0.0l0.77,-1.08l1.13,0.45l2.52,4.68l-0.84,3.95l-2.07,2.49l0.7,1.81l1.09,-0.5l-0.59,-0.64l1.22,-0.89l1.6,-3.53l3.93,0.81l2.28,-1.58l2.88,-0.6l2.67,1.15l2.12,2.19l0.21,1.53l-1.81,-0.45l-0.43,-0.79l-0.97,0.82l-1.37,-0.9l-1.56,0.62l1.0,1.43l5.16,1.83l0.58,-0.43l6.3,2.56l0.54,1.01l-0.8,1.12l-6.37,0.59l-6.69,-2.54l1.9,1.9l-0.65,1.59l3.73,0.57l-0.82,0.92l0.39,0.6l-2.01,0.42l1.12,1.93l-1.13,0.97l0.03,1.86l0.86,0.06l1.6,-2.88l1.55,-0.39l-0.48,1.34l0.76,0.64l1.1,-1.51l0.94,0.71l0.6,-1.22l0.75,0.45l0.75,1.32l-0.37,2.78l0.86,0.09l1.07,-1.42l1.61,1.73l-0.48,2.76l-1.94,0.28l-0.93,1.73l0.79,0.81l2.49,-0.89l0.58,2.19l1.33,1.51l1.42,-0.6l-0.79,-3.93l0.76,-1.35l2.52,2.98l-0.56,0.98l0.98,0.87l2.69,-2.59l1.11,1.8l-0.58,0.81l1.4,0.22l0.46,-1.42l-0.54,-1.26l0.93,-1.27l2.81,3.26l2.28,0.92l-1.19,1.0l0.32,0.71l3.62,-1.4l2.85,0.31l0.14,-0.97l-3.53,-1.62l2.66,-1.59l2.21,0.32l1.6,-2.35l2.51,0.56l0.44,-0.95l-0.77,-0.68l1.79,-0.55l2.24,-2.61l4.55,1.5l4.51,-2.83l6.91,0.84l-0.53,2.99l5.66,-0.04l1.75,1.99l-1.7,1.15l0.27,0.97l3.83,-0.52l1.21,1.6l-0.53,1.79l0.92,0.75l-0.62,1.94l-1.14,0.29l-0.73,1.93l-2.6,2.21l1.13,1.01l-0.52,2.49l1.8,1.16l-0.62,1.36l0.74,1.02l-0.26,2.91l-5.19,0.58l-3.82,3.12l-3.42,-0.96l-0.78,-1.29l-0.97,1.46l-0.82,-0.18l-2.21,-2.91l-0.2,-3.81l-3.13,-1.87l-0.24,1.98l1.36,1.75l-0.71,4.18l-4.35,1.76l-3.71,0.19l-0.9,-4.45l-0.95,1.65l0.34,2.55l-0.53,0.71l-0.65,-0.02l-1.6,-4.47l-0.45,4.52l-2.58,0.37l0.09,-1.23l-1.15,-1.89l-1.13,3.17l-2.73,-3.02l-0.24,2.09l0.93,1.46l-1.06,0.13l-1.09,-0.96l-0.22,0.83l-0.85,0.11l-0.44,-1.8l-2.14,2.11l-0.75,-1.4l-0.82,0.91l-3.57,-0.34l-0.03,-2.5l1.42,-3.71l-1.17,-0.53l-0.8,-2.75l-1.07,1.47l-0.69,3.45l-0.18,-1.92l-1.67,-1.41l0.22,2.6l-1.36,-0.56l0.99,1.98l-0.25,1.63l-1.66,1.1l-2.62,0.5l-0.42,-1.29l-0.95,0.62l-1.0,-0.68l0.06,-0.86l-1.62,0.41l-1.17,-3.02l-1.41,0.98l1.62,-2.83l-0.59,-1.76l-4.4,5.7l-0.72,-1.79l-2.33,-1.7l0.36,-2.51l-1.15,-3.73l1.17,-0.44l-0.22,-1.71l-1.56,0.09l-0.97,-1.66l1.02,-3.31l-0.61,-0.69l0.38,-1.33l2.31,-3.37l-0.88,-3.82l0.34,-2.99l-2.37,-2.58l-0.62,-3.84l-2.17,-5.39l-1.27,-0.83l-1.98,1.44l-0.9,-0.3l-0.65,1.31l-4.34,-0.35l-1.27,-1.64l-3.24,-1.66l-2.26,-0.08l-0.71,-0.86l-0.49,-1.5l1.84,-0.12l1.17,-2.1l-0.46,-0.51l-1.97,1.2l-2.68,-3.53l-2.35,-0.75ZM451.53,232.53l0.2,0.49l-0.18,-0.03l-0.02,-0.47ZM519.43,222.72l2.08,-1.78l0.93,0.21l1.51,2.32l-2.89,1.86l-1.28,-0.76l-0.35,-1.86ZM455.33,199.74l0.6,-0.68l1.56,0.5l-0.2,0.22l-1.97,-0.04ZM431.08,193.14l-1.37,1.01l-1.29,-0.29l1.88,-1.41l0.78,0.69ZM519.33,369.36l0.08,-0.17l0.17,0.21l-0.24,-0.04ZM514.4,412.13l0.0,-0.0l0.0,0.01l-0.0,-0.0ZM514.58,412.33l1.89,1.01l-0.22,0.67l-1.74,-1.07l0.07,-0.61ZM505.06,417.57l-0.03,-0.82l3.18,1.26l2.57,2.18l0.11,1.35l-1.66,2.13l-1.01,-0.16l-0.76,-4.02l-2.41,-1.91ZM511.99,423.88l0.53,0.2l-0.02,0.3l-1.34,0.67l0.82,-1.17ZM512.86,424.78l0.64,-0.22l1.49,-0.08l-0.52,1.37l-1.6,-1.06ZM512.76,421.7l0.73,-0.05l-0.36,0.47l-0.37,-0.42ZM509.13,194.54l0.2,-0.25l0.21,-0.1l-0.34,0.37l-0.08,-0.02ZM505.31,340.84l-0.75,-0.58l0.04,-0.62l1.46,0.3l-0.75,0.9ZM499.75,419.3l1.02,0.26l1.78,3.19l1.39,3.85l-0.75,1.32l-1.05,-2.07l-2.03,-1.69l-0.36,-4.86ZM493.21,188.12l0.28,0.32l-0.08,0.36l-0.23,-0.13l0.04,-0.54ZM483.42,380.75l0.8,-1.64l-1.23,-1.79l1.89,-4.42l1.7,1.75l0.49,5.12l-1.32,4.42l-1.73,-1.43l-0.61,-2.01ZM484.15,162.05l1.7,-0.5l1.0,1.62l-1.04,0.74l-0.12,-1.25l-1.54,-0.62ZM479.08,334.77l1.48,-0.55l1.82,0.89l1.27,-0.58l0.97,2.02l-1.78,0.37l-1.64,-0.88l-0.74,0.52l-1.39,-1.79ZM427.65,95.01l0.27,-1.04l1.22,0.23l1.58,2.01l3.93,1.28l1.49,-0.22l1.8,1.72l0.72,-0.12l-1.6,-3.36l1.04,-1.26l2.04,-0.47l-0.04,-0.97l-2.53,-1.14l-1.83,2.17l-1.74,0.26l-0.95,-1.25l1.76,-0.53l0.22,-1.33l-2.25,-0.14l-1.26,1.09l-2.31,-2.07l0.39,-1.21l0.99,0.11l0.63,-1.26l2.63,1.42l0.57,-0.4l-0.16,-1.39l-2.47,-2.77l0.74,-1.3l-0.35,-0.92l4.17,-0.23l1.75,1.38l2.55,0.29l0.43,0.81l1.17,-0.55l-0.98,-1.99l-2.46,-0.81l-0.37,-0.98l0.08,-0.6l2.29,-0.25l0.11,-1.13l-3.86,-1.4l0.69,-0.71l-0.44,-0.87l-2.49,0.14l1.73,-1.45l-1.35,-0.79l1.22,-2.91l1.29,-1.01l1.81,2.76l2.64,-1.83l-0.15,-1.22l-1.04,-0.57l1.28,-0.11l1.29,0.95l1.89,-0.69l0.52,-2.62l-0.74,-1.47l-3.04,0.03l-1.69,-1.25l0.7,-2.47l1.83,0.73l0.57,1.15l0.83,-0.76l-0.19,-1.48l0.65,0.25l4.27,3.47l1.67,2.64l-0.43,2.4l1.58,2.67l1.88,6.54l2.15,2.67l-0.55,2.47l3.34,0.83l1.0,2.0l0.82,-0.11l-0.26,-1.63l1.61,-0.09l1.03,1.58l-0.85,1.74l0.69,0.56l-0.7,2.2l1.17,3.27l2.62,2.67l0.96,-0.69l1.24,0.34l0.84,1.37l2.79,-0.41l1.09,2.79l-2.16,3.13l1.2,0.27l1.22,-1.54l-0.58,6.24l-1.43,2.18l0.31,1.7l1.29,0.08l1.04,-2.22l1.07,1.33l0.72,-0.98l-0.31,-1.59l1.53,-0.13l1.13,1.76l-0.42,3.04l1.26,0.71l1.02,-4.81l1.45,4.01l2.55,4.05l-2.54,3.13l-4.99,2.97l-0.71,2.6l-0.81,-2.36l-0.82,-0.01l0.24,3.95l-2.97,6.75l-1.5,-4.29l-0.01,-3.36l0.86,-1.09l0.2,-2.51l-0.74,-0.07l-0.73,1.99l-1.25,0.49l0.24,8.2l-1.07,0.74l0.43,0.7l1.35,-0.23l0.55,2.31l-1.07,1.91l-1.67,-3.62l-1.84,0.17l1.38,5.18l-1.23,6.18l-5.86,-11.61l-0.9,0.8l0.12,2.33l2.56,7.01l-1.18,-0.05l-1.29,-2.64l-2.92,-0.26l-0.73,0.89l2.06,1.11l0.3,2.6l-2.68,0.25l-3.61,-1.19l-1.24,-1.3l-1.27,0.5l-0.49,-2.72l-1.98,-0.11l-1.78,-3.64l1.74,0.12l3.69,-1.35l0.86,0.49l0.59,-1.32l-6.11,-2.35l-2.41,1.06l-0.67,-1.1l0.4,-1.19l-0.98,-0.04l-1.04,-1.94l2.81,1.25l0.87,-0.29l0.08,-1.05l-2.64,-2.05l-1.57,0.04l-1.79,-3.63l3.32,-1.49l1.33,-2.87l2.16,0.72l5.01,-0.32l6.71,-1.41l1.09,-1.33l-0.62,-0.54l-3.02,0.21l-5.19,1.09l-2.43,-1.02l0.26,-0.96l3.07,0.28l3.79,-1.34l0.34,-1.72l-3.82,1.13l-3.09,-0.65l1.69,-1.39l-0.35,-0.85l-1.91,-0.0l-1.26,0.94l-1.09,-1.98l-1.44,1.08l-0.89,2.25l-0.85,0.01l0.02,1.27l-1.24,1.28l-0.58,-1.3l1.68,-1.96l-3.3,-1.25l-0.65,0.26l-0.15,2.01l-2.82,1.37l0.35,-1.57l-0.79,-1.75l-0.99,0.48l-1.03,-0.62l0.36,-2.95l4.91,-1.61l2.03,-2.07l0.3,-2.61l-0.88,-0.51l-2.15,2.69l-1.95,0.74l-2.78,-0.29l-2.35,-4.95l1.56,-1.92l-2.06,-1.42l-0.23,-1.34l1.39,-0.91l-1.55,-0.36l-0.27,-0.93ZM443.68,113.89l0.28,0.85l-0.7,0.52l0.38,-0.96l0.04,-0.42ZM461.38,146.39l0.13,0.3l0.04,0.32l-0.12,-0.23l-0.04,-0.39ZM467.83,95.12l-0.47,-2.39l-1.08,-0.44l-0.75,-1.59l0.77,-3.65l3.21,0.98l0.55,5.35l-2.23,1.74ZM428.54,100.87l-0.38,0.08l-0.0,-0.39l0.24,-0.06l0.14,0.37ZM467.85,144.53l0.1,-1.31l0.38,-0.61l-0.14,0.96l-0.34,0.97ZM468.67,140.92l0.03,-0.58l0.13,-0.04l0.0,0.05l-0.16,0.58ZM453.12,161.32l1.28,-0.9l2.87,0.68l2.74,3.46l0.67,3.57l-2.13,2.79l-1.23,0.17l-3.87,-3.88l-0.32,-5.87ZM459.03,188.82l-2.86,-6.15l1.29,-1.47l1.58,-0.38l1.49,2.86l-1.01,2.28l0.86,2.56l-1.13,-0.33l-0.23,0.65ZM457.48,356.25l0.14,0.07l-0.06,0.19l-0.08,-0.25l-0.0,-0.01ZM455.72,351.19l1.01,-1.44l0.89,0.73l-1.07,2.13l-0.83,-1.42ZM421.71,269.81l0.55,-2.41l0.89,-0.23l-0.57,-7.78l0.24,-2.03l0.85,-0.72l-0.96,-1.53l0.29,-1.54l2.13,-0.53l1.47,2.21l2.74,0.5l-0.05,-1.28l-1.14,-0.38l-1.36,-2.16l0.81,-1.29l-1.45,-0.16l-0.66,-1.39l0.47,-1.74l3.32,-1.81l4.85,-0.73l1.1,1.49l0.62,-2.05l2.47,-0.16l5.15,2.79l0.8,2.82l1.3,-0.14l1.9,-1.66l1.64,-0.14l3.56,0.65l4.75,2.14l-1.09,0.72l0.0,1.59l-2.62,5.22l-1.34,0.04l0.33,1.6l-2.19,4.92l-2.41,0.8l1.51,1.0l-4.78,9.89l-1.63,0.64l-6.15,-2.6l-7.1,1.07l-0.05,1.51l3.42,0.4l-0.14,1.38l1.23,1.05l0.93,2.98l-2.44,2.95l-2.07,5.39l-1.09,1.0l-5.9,0.08l0.81,-2.2l2.19,-0.87l-0.84,-0.59l-1.68,0.45l-0.24,-0.64l0.1,-5.21l0.64,-1.13l-1.31,-4.06l-1.38,-1.4l0.48,-0.89l-0.88,-1.38l-0.04,-4.42ZM430.89,292.66l0.04,-0.02l0.01,0.07l-0.05,-0.05ZM454.65,352.83l-0.33,-0.41l0.26,-1.19l0.58,2.35l-0.51,-0.75ZM453.0,471.13l0.19,0.06l0.17,0.16l-0.28,-0.02l-0.08,-0.2ZM446.91,341.46l0.79,-0.49l-0.07,1.35l-0.35,-0.26l-0.37,-0.61ZM446.55,468.94l0.04,0.02l-0.03,0.04l-0.0,-0.0l-0.01,-0.06ZM445.93,340.08l0.11,-0.11l0.26,-0.0l-0.36,0.11ZM425.38,160.25l0.48,-2.25l3.84,-2.17l0.53,1.65l2.42,-1.14l5.97,1.59l1.12,-0.98l1.66,1.12l0.51,1.38l-1.4,0.71l-0.94,4.39l-12.85,-1.49l-1.35,-2.81ZM419.31,222.88l1.54,-4.3l2.31,-0.56l0.69,-1.51l-0.75,-0.37l0.27,-0.52l2.01,-1.42l-0.54,-2.11l5.25,-2.91l2.61,0.99l3.95,5.88l-0.84,1.01l1.78,1.21l-0.53,1.41l0.6,1.82l-1.11,1.77l1.18,1.96l-0.24,4.58l-0.78,0.52l0.47,1.21l-0.56,0.6l-6.55,0.22l-0.53,-1.16l-1.47,-0.02l0.15,-1.12l-1.59,-1.93l-2.87,-1.1l-0.38,0.45l-1.38,-2.06l0.6,-0.63l-0.39,-2.11l-1.01,0.49l-0.55,2.09l0.12,-2.13l-1.46,-0.23ZM423.56,213.87l-0.12,-0.05l0.05,-0.1l0.03,0.01l0.04,0.13ZM433.47,79.05l2.22,0.14l0.49,1.15l-0.62,0.41l-3.69,-1.53l1.6,-0.17ZM416.22,136.4l2.05,-0.98l-1.3,-2.9l0.11,-2.87l0.9,-0.83l3.13,0.78l2.68,2.67l1.63,0.48l1.66,1.84l-0.48,2.22l1.8,1.36l1.39,-0.82l0.94,0.36l2.76,3.08l-0.08,1.03l-2.91,2.52l2.41,3.58l-0.97,3.13l-1.57,-0.19l-5.02,2.32l-0.97,-1.04l-1.33,0.69l-0.83,1.91l-0.66,-0.34l0.57,-2.92l-3.36,-2.86l0.27,-0.99l3.77,0.54l0.54,-1.86l-2.74,-2.31l-1.83,-0.37l-1.24,-2.23l0.23,-2.37l-1.49,-1.43l-0.07,-1.19ZM432.55,201.06l0.82,4.6l-1.67,0.27l-0.94,-4.09l1.79,-0.78ZM430.01,501.43l0.97,-0.01l0.44,0.57l-0.36,0.42l-1.04,-0.98ZM423.28,233.75l1.26,-1.17l1.43,2.47l-2.18,-0.68l-0.52,-0.62ZM417.48,212.26l-0.01,-0.76l2.38,-1.13l-0.06,1.93l-1.18,0.75l0.15,0.81l-0.97,-0.05l-0.31,-1.56ZM421.34,209.39l0.11,-1.06l1.96,1.73l-1.35,1.95l-0.81,-1.09l0.09,-1.54ZM421.62,297.89l0.27,-0.12l-0.0,0.05l-0.27,0.08ZM422.23,296.62l-0.31,-0.28l0.46,-0.16l-0.15,0.44ZM389.19,351.96l1.95,0.55l2.03,-0.68l1.12,-2.28l0.58,0.4l1.52,-0.72l0.14,-1.27l-1.28,-2.05l1.34,-0.17l-0.91,-2.29l0.88,0.34l1.71,3.05l1.24,-0.02l0.18,-0.77l-2.25,-3.41l0.79,-2.88l2.42,-2.54l3.0,2.8l0.46,1.11l-0.92,0.82l0.66,1.72l0.83,-0.03l0.58,-1.54l2.19,4.14l4.67,4.17l-0.47,5.36l0.77,0.85l0.76,-0.35l0.21,-3.25l1.03,6.77l1.07,0.08l0.67,1.22l2.22,-1.37l0.64,0.63l-1.91,2.36l-0.86,-0.78l-1.61,0.33l-0.77,2.34l-1.05,-0.01l-2.45,2.86l-1.47,0.43l-4.18,-3.29l-0.78,0.45l0.0,1.03l-2.13,-0.68l-2.02,-2.6l-3.15,-1.4l0.02,-2.1l-1.03,-1.12l-0.95,0.29l-0.32,1.89l-2.35,-1.9l0.57,-1.76l-1.34,-1.01l-1.67,0.69l0.3,1.29l-0.62,0.2l-1.39,-1.1l-0.88,-2.86l1.01,-1.65l1.16,-0.28ZM414.67,346.77l0.79,-2.2l1.01,-0.52l2.17,2.28l-0.36,2.41l-1.64,1.11l0.59,-3.49l-0.78,-1.58l-1.18,0.46l-0.29,3.04l-0.32,-1.5ZM414.95,348.36l-0.2,0.62l0.01,0.28l-0.08,-0.53l0.28,-0.37ZM411.32,98.34l1.01,-4.59l1.24,-1.13l1.28,1.16l1.53,-0.38l1.16,4.2l-0.81,6.55l-1.8,-1.46l0.27,-2.18l-1.22,-1.67l-2.43,0.15l-0.23,-0.65ZM374.65,271.26l1.97,-5.77l2.84,-1.37l1.55,1.82l0.05,1.86l1.25,1.11l0.57,3.29l2.19,1.66l1.59,0.06l0.69,-1.11l2.35,0.48l1.05,-1.22l0.12,-1.68l1.82,-0.35l0.42,-1.35l-0.92,-4.78l-0.97,-0.3l-0.87,0.71l-0.41,-0.77l1.36,-2.26l2.16,2.2l1.64,-0.07l0.25,-0.94l-1.66,-0.9l-2.81,-5.73l0.58,-2.35l-2.08,-1.04l0.29,-0.74l-1.18,-0.76l0.61,-2.28l3.23,-0.36l2.81,2.56l1.41,-2.63l1.47,0.9l1.99,3.57l0.77,-1.37l1.88,0.54l0.9,-0.84l3.78,-0.59l1.4,-1.38l0.62,0.59l1.21,-0.69l1.97,0.93l1.5,2.73l-0.26,1.98l-1.56,1.52l-1.16,-0.78l-0.5,1.25l-0.96,-0.32l-0.62,1.65l0.6,1.01l1.16,-0.71l1.4,0.5l-0.15,1.78l-3.64,1.11l-5.82,6.46l0.48,3.84l1.76,-2.63l1.76,-1.18l1.87,0.33l2.34,1.76l-0.22,1.33l-1.09,0.6l1.34,0.81l1.01,2.19l-1.14,1.5l0.2,1.66l1.04,-0.04l2.47,-2.03l1.12,1.43l0.68,4.68l-2.3,1.94l-1.3,-0.26l-0.36,0.62l1.76,1.4l0.5,2.45l-0.19,1.19l-2.27,0.61l-0.18,0.67l2.39,0.53l-0.21,0.9l-1.8,1.03l0.88,0.81l0.98,-0.56l-0.72,1.86l-0.73,-0.91l-1.9,1.1l-1.79,2.78l-3.0,0.77l-3.68,-1.31l-0.54,-1.24l1.3,-3.44l-1.08,-0.61l-2.02,4.09l2.62,4.72l-1.02,1.91l-2.48,2.43l-1.29,0.19l-1.19,-2.37l-1.76,0.57l-0.52,-5.08l-1.18,-0.97l-1.5,-5.44l-1.64,-0.98l-2.95,-7.01l-1.04,-0.68l-1.38,0.27l0.07,-1.82l-1.28,-1.58l-1.8,1.15l-1.95,-1.02l-0.38,-0.95l0.82,-0.69l-0.81,-0.81l-0.0,-1.42l-2.82,-2.69l-1.76,-3.24ZM390.43,268.86l-0.03,-0.05l0.05,-0.05l0.03,0.02l-0.05,0.08ZM391.13,258.22l-0.13,1.15l-2.76,1.04l-3.72,-4.97l2.35,-2.21l1.66,0.33l1.12,3.12l1.48,1.54ZM395.74,247.0l-1.15,1.05l-0.77,-0.64l1.11,-1.09l1.19,0.17l-0.38,0.51ZM383.64,205.28l0.98,-0.35l-0.1,-1.22l0.92,-0.88l2.25,1.05l0.89,-0.46l-1.01,-1.33l0.64,-1.21l-1.4,-0.09l0.59,-1.18l2.2,-0.44l1.73,3.41l1.11,0.73l2.79,-1.46l-0.32,-0.68l-2.14,0.59l-0.0,-1.51l-0.95,-0.56l-0.09,-1.13l1.71,-1.64l-0.08,-0.96l-2.37,0.42l-0.43,-0.71l0.15,-2.2l3.16,-2.97l-4.23,0.03l1.31,-2.84l-0.4,-0.94l1.17,-0.93l2.36,1.3l1.07,1.88l-0.53,2.31l2.46,2.81l-0.67,1.03l2.18,1.08l1.1,2.81l-0.34,0.81l1.3,1.29l3.61,-2.66l-2.55,0.12l-1.15,-3.95l2.31,0.7l2.05,-1.41l-1.88,0.14l-1.45,-1.62l-1.17,0.14l-1.42,-1.07l0.11,-0.5l3.22,0.42l0.05,-1.7l-1.42,-1.76l-2.77,-0.3l-1.23,-2.57l3.98,-2.87l2.12,1.16l0.39,0.02l0.59,-0.55l0.17,0.01l-0.21,0.83l0.76,0.32l2.26,4.87l0.32,-1.26l1.55,0.24l-0.83,-2.83l0.59,-1.37l1.04,0.97l1.35,-0.91l0.26,1.46l3.57,2.17l-0.94,3.69l1.31,3.45l-1.27,4.95l0.26,2.81l-2.32,2.5l3.09,2.5l-0.58,3.27l-1.38,-1.71l-2.28,2.1l-0.15,1.15l1.02,0.42l-1.01,0.13l-0.97,2.26l0.38,1.15l1.83,1.31l-0.22,1.08l0.95,1.02l-0.73,0.28l-1.64,-2.81l-0.86,1.75l0.95,3.04l-4.23,0.37l-0.99,-1.88l-0.85,1.34l-1.93,0.15l0.71,-3.06l-0.84,0.16l-1.41,3.01l-4.51,-1.58l0.29,-2.82l-0.76,-1.01l2.77,0.07l0.63,-0.78l-1.72,-0.92l-0.09,-1.25l-1.4,0.3l-0.46,-0.63l1.35,-0.75l-0.55,-1.38l3.07,-0.16l0.54,-0.85l-0.65,-0.91l1.3,-0.09l1.47,-1.72l-0.75,-0.88l4.91,-0.17l0.33,-1.35l-10.06,0.4l-4.14,0.95l-1.31,-0.58l-6.97,1.45l-0.47,-1.89ZM414.24,266.9l0.91,0.17l0.16,1.43l-0.9,1.89l-1.18,0.2l-0.74,-3.42l1.63,-1.82l0.11,1.55ZM413.9,275.02l-1.05,-0.59l1.41,-2.15l0.13,1.99l-0.49,0.75ZM411.31,235.08l-0.17,-0.77l2.09,-2.24l-0.31,1.96l-1.61,1.05ZM409.94,345.15l2.12,0.76l0.95,-0.39l-0.28,3.31l-2.79,-3.68ZM382.84,135.77l-0.59,-2.3l0.4,-2.05l1.47,-0.73l2.71,2.01l2.88,0.94l1.3,-3.47l-3.0,-0.68l2.42,-0.16l1.53,-2.23l-0.42,-1.23l-1.34,-0.04l-0.51,-0.94l-1.08,0.01l-0.37,0.97l-0.54,-0.55l2.34,-2.62l-0.92,-2.5l-0.98,-0.62l-1.67,0.95l-1.02,2.32l-1.68,1.23l2.44,-5.44l-1.31,-1.09l-2.99,0.31l0.45,-3.63l1.34,-3.45l1.11,0.94l6.93,-0.53l2.58,2.17l0.69,1.58l0.97,4.08l-1.29,3.2l0.94,0.56l0.02,1.87l1.57,-1.52l0.25,-1.95l2.39,-1.59l0.93,0.3l1.44,2.91l1.25,0.73l-1.25,3.71l1.42,1.16l2.81,-1.08l1.86,3.24l-0.91,1.75l2.41,1.23l-2.04,3.56l-0.03,3.7l1.35,0.72l2.39,5.97l-1.01,2.34l0.25,1.78l-0.75,0.82l-3.19,0.26l-0.72,0.75l-3.03,-2.19l-0.72,-3.75l0.56,-1.61l-1.23,-3.56l-1.38,0.11l-0.96,-1.37l-3.26,-1.74l-2.35,0.82l-0.76,-0.98l0.85,-1.48l-0.29,-1.0l-5.42,0.69l-1.75,1.62l-2.15,-1.03l-1.32,-2.23ZM402.18,245.84l5.3,-1.86l2.75,-0.09l-1.09,2.38l-2.21,2.01l-2.94,0.62l-4.58,-1.3l2.65,-0.81l0.12,-0.96ZM404.52,336.05l0.28,0.24l-0.19,0.5l-0.18,-0.17l0.08,-0.57ZM400.0,384.31l0.18,-0.59l0.82,-0.41l-0.03,0.27l-0.98,0.73ZM393.68,182.33l2.34,-0.92l1.47,-1.77l3.14,0.18l-5.02,2.71l-1.93,-0.2ZM392.97,153.4l0.22,-3.26l3.57,0.04l2.26,1.79l1.09,2.26l-2.85,-0.38l-1.53,1.08l-2.76,-1.53ZM390.42,142.83l-0.37,-1.01l1.77,-1.87l0.13,1.23l-1.53,1.65ZM380.94,200.83l0.6,-1.1l1.3,-0.07l0.14,-1.57l4.85,-1.31l0.73,0.88l-2.31,0.72l-1.53,2.53l-3.78,-0.08ZM378.12,196.44l4.81,-1.79l4.15,-0.08l-0.14,0.79l-7.87,1.78l-0.95,-0.71ZM375.95,190.46l3.49,-1.4l6.37,-0.48l0.58,1.84l-1.06,2.26l-3.24,1.1l-3.2,-0.16l-2.89,-1.45l-0.05,-1.71ZM382.95,318.72l1.44,0.77l0.22,2.48l-1.82,-1.42l0.16,-1.82ZM376.35,180.68l1.85,-1.9l1.59,0.1l-0.7,2.34l1.86,-0.68l0.7,2.11l2.71,2.61l-1.9,1.61l-5.37,-0.68l0.39,-3.22l-1.13,-2.29ZM382.75,351.96l0.5,1.7l-0.24,1.27l-0.95,-1.38l0.69,-1.6ZM378.63,357.96l0.57,-3.98l0.44,-0.58l2.04,2.62l-0.39,1.86l-1.43,1.5l-0.05,-1.51l-1.16,0.08ZM380.72,368.46l0.1,-0.05l-0.02,0.19l-0.08,-0.15ZM374.01,155.31l0.21,-2.42l-0.8,-2.01l0.8,-0.65l1.57,1.3l1.89,4.93l-0.54,3.16l1.37,0.18l1.17,2.66l0.14,1.85l-0.85,1.86l-1.4,0.46l-0.78,-1.62l-1.22,-0.12l-1.48,-7.58l0.58,-1.2l-0.67,-0.8ZM262.31,316.35l2.08,-0.14l-1.96,-6.32l0.67,-1.78l29.25,8.27l-0.45,3.6l3.86,0.06l0.08,-2.77l17.96,3.86l11.64,-52.14l1.02,0.72l0.45,-0.54l-0.33,-5.28l0.81,0.53l0.91,-1.42l-1.26,-1.18l0.84,-3.76l1.32,0.77l-0.68,0.91l1.98,3.52l1.31,0.03l0.66,1.95l-0.78,2.32l2.6,0.61l-1.19,4.72l-0.04,4.61l0.7,0.67l-0.61,2.61l0.7,0.59l-0.15,1.23l0.53,-0.06l-0.76,0.93l0.26,2.94l-0.58,0.75l1.35,0.47l0.24,1.97l1.62,0.74l0.65,-0.57l-0.39,-1.82l1.03,0.39l0.95,-1.25l2.37,-0.74l-0.93,-1.08l1.3,-1.05l-1.93,-2.91l0.34,-1.81l-0.81,-1.19l0.22,-2.55l0.8,-0.71l-0.48,-2.76l0.67,-0.65l-0.92,-1.26l0.86,-1.52l-0.24,-12.82l0.88,-1.09l1.54,0.68l0.58,-0.44l-1.25,-2.02l0.83,-1.15l1.76,0.8l3.3,4.11l0.86,-0.52l-0.07,-2.01l1.15,-0.22l2.82,5.57l2.41,1.22l1.77,5.26l-0.7,1.14l0.97,2.93l-0.1,2.98l-0.73,1.46l1.27,6.09l-0.78,2.36l0.62,5.17l0.86,1.04l1.18,5.51l-0.26,4.34l-1.28,0.3l-0.33,3.04l-1.64,2.12l2.84,4.68l0.53,3.8l1.04,0.58l1.58,3.35l1.99,0.55l0.87,1.98l3.24,1.02l4.5,5.28l1.19,0.26l0.88,-0.76l0.39,4.13l1.88,-0.71l0.81,0.64l1.28,-0.97l0.03,7.9l-0.86,2.57l-1.99,-0.34l-0.66,-3.2l0.48,-1.61l-0.57,-0.42l-2.18,4.42l-1.52,-1.35l-0.31,-2.12l-1.01,-0.13l-0.04,-1.44l-0.73,-0.32l-1.28,2.17l-1.57,1.08l-1.03,-0.29l1.04,2.25l-0.26,1.54l-0.39,0.73l-1.54,-0.01l-2.17,-1.88l-0.77,-1.75l-1.95,-0.38l-0.57,1.77l1.97,2.07l0.29,2.37l0.94,0.37l-0.8,3.26l-1.54,1.25l-0.03,1.94l0.83,0.08l3.22,-5.13l2.26,-0.4l0.69,-1.2l1.16,-0.27l1.41,0.47l0.57,1.19l-1.81,0.93l-0.19,0.91l0.88,0.86l-1.2,-0.23l-0.23,1.51l1.39,1.22l1.0,-1.4l0.8,1.26l-0.83,3.7l-1.57,-0.48l-0.9,0.9l-1.83,-0.25l-1.1,1.72l-1.84,-0.82l-0.04,1.26l-1.58,0.48l-1.41,-1.13l-1.54,0.16l-0.46,0.75l-0.83,-1.04l-3.94,-1.21l-1.27,-2.09l-1.5,-0.03l-1.12,1.34l-3.67,-1.26l-0.43,-0.87l2.54,-1.36l0.07,-1.33l-3.85,-1.12l-0.64,-1.26l-2.42,-0.91l-2.45,0.1l-1.13,-0.9l1.31,-1.45l0.18,-2.67l-1.8,-2.85l-1.81,1.09l-0.36,1.29l-1.64,0.17l-0.41,3.13l-3.6,3.28l-4.69,0.8l-4.32,-1.01l-0.77,1.48l-3.95,2.3l-4.82,0.78l-4.52,-0.72l-1.13,0.66l-1.45,-1.06l-1.8,0.4l-0.65,-0.82l-4.19,-0.24l0.07,1.07l-6.6,-1.54l-2.6,-0.28l-1.27,0.6l-1.79,-0.57l-0.18,-1.43l-1.54,-1.61l-1.07,-4.66l2.09,-4.8l-0.39,-2.55l1.28,0.35l-0.11,-0.95l-4.84,-3.41l-4.48,-0.59l-1.12,-0.97l-1.41,0.5l-5.16,-2.72l-3.26,-3.47l0.33,-3.36l-1.77,-0.93ZM296.42,348.86l0.63,0.22l-0.44,-0.1l-0.19,-0.12ZM366.3,318.81l-1.06,-1.02l0.04,-1.63l1.15,1.7l-0.13,0.94ZM282.72,346.82l-0.62,-0.06l-0.07,-0.11l0.28,-0.07l0.41,0.24ZM374.96,341.65l1.94,1.67l-1.05,1.12l0.26,-1.62l-1.15,-1.16ZM370.45,212.46l1.02,-2.68l1.74,-1.62l1.28,0.15l1.48,1.77l0.65,4.47l-1.81,1.97l-2.25,0.64l-3.24,-2.83l1.13,-1.86ZM372.18,349.51l-0.69,-0.62l0.14,-0.26l0.41,-0.04l0.14,0.92ZM365.6,358.91l2.37,-2.4l1.72,1.02l-0.26,2.28l-0.9,-0.23l-0.19,1.25l-2.74,-1.91ZM369.05,337.93l-0.03,-0.16l0.09,-0.51l-0.05,0.67ZM337.68,214.24l3.33,-14.87l5.76,2.77l1.51,-3.5l0.25,-2.2l-3.92,-3.56l-0.1,-1.81l-1.63,-0.12l5.0,-2.96l-0.8,-3.92l-1.48,-1.73l-0.79,0.02l1.18,-5.29l1.87,-0.82l0.02,-1.38l3.47,-4.44l2.99,-0.51l-0.22,1.64l1.01,0.5l-0.04,1.06l-1.91,1.27l0.66,2.21l-1.1,3.26l1.56,1.07l0.7,2.61l-0.87,0.53l0.36,1.05l-1.58,0.69l-1.35,3.04l0.43,0.57l3.42,0.05l0.8,1.47l-2.71,3.12l-0.33,1.81l1.16,0.02l1.48,-1.92l2.67,-0.13l0.44,6.08l0.92,0.31l0.57,-2.72l1.6,-0.89l-1.34,-0.99l0.58,-2.79l1.65,-1.78l1.33,0.24l2.88,2.18l0.61,1.29l0.03,6.89l-2.61,3.05l0.61,0.99l-0.66,2.23l-1.87,2.23l-0.39,2.47l-1.33,1.0l0.24,0.93l-4.44,0.4l-1.89,1.54l-1.09,-0.14l-2.22,-1.7l0.37,-2.12l-0.6,-1.0l-0.76,1.63l-1.43,0.28l-0.39,1.54l-2.11,0.01l-0.34,-2.82l-1.7,-1.22l-5.3,3.83l-2.16,-0.53ZM352.93,252.59l-2.03,-2.5l-1.37,-0.46l3.4,-4.11l8.91,0.49l3.37,4.72l-1.3,5.04l-1.65,3.11l-2.3,3.37l-1.39,1.24l-1.07,-0.21l-0.06,1.2l-2.02,-6.47l-0.9,-0.66l-0.05,-2.54l-1.54,-2.22ZM356.24,131.28l0.61,-2.73l1.07,-4.77l1.78,2.73l0.28,1.9l-1.49,3.66l-1.82,0.06l-0.43,-0.84ZM354.64,140.84l-0.56,0.09l0.72,-3.2l1.23,1.04l-1.38,2.06ZM344.37,358.41l2.93,0.73l0.43,2.38l-1.76,-0.48l-1.6,-2.64ZM343.31,246.11l1.2,-0.38l1.16,0.72l-2.22,0.24l-0.15,-0.58ZM319.51,383.52l0.58,1.05l0.1,0.1l-0.52,-0.1l-0.16,-1.05ZM317.62,367.22l0.19,-0.56l0.63,-0.35l-0.4,1.1l-0.43,-0.19ZM317.34,374.35l-0.13,-0.78l0.25,-1.06l0.35,1.97l-0.46,-0.13ZM316.98,377.97l0.04,-0.85l0.65,-0.18l-0.58,1.35l-0.12,-0.32ZM314.27,374.28l0.57,0.24l-0.52,0.82l-0.22,-0.84l0.16,-0.22ZM310.96,365.11l0.9,-0.17l0.05,1.27l-0.95,-1.11ZM308.75,362.36l0.31,0.23l0.02,0.64l-0.44,-0.71l0.11,-0.16ZM304.92,360.33l0.09,-0.06l-0.03,0.05l-0.06,0.01ZM298.85,350.54l1.55,-0.48l0.33,0.64l-1.15,0.07l-0.73,-0.23ZM292.43,354.37l-0.15,-0.28l0.45,-0.29l-0.16,0.44l-0.15,0.13Z", "name": "Nunavut"}, "ns": {"path": "M806.11,740.27l1.94,-4.77l1.53,-10.21l1.51,-3.01l0.15,-1.97l1.87,-0.41l-0.36,1.59l1.07,0.72l1.38,-0.48l0.25,0.69l-0.15,2.84l0.78,0.69l-0.72,7.59l0.66,0.58l-1.72,2.11l-1.3,0.41l-2.17,3.71l0.96,0.16l0.28,1.37l0.95,-0.71l0.24,0.04l-1.43,1.75l0.15,1.53l1.35,0.03l1.9,-1.77l0.72,0.25l-0.26,0.87l-2.52,2.28l-1.15,-0.45l-1.0,1.26l-1.85,-1.48l-3.05,-5.19ZM816.59,744.31l1.05,-1.42l-0.51,-1.54l2.65,-4.97l-0.63,-0.39l-2.83,2.93l-0.6,-0.45l3.92,-6.11l-0.72,-0.78l-1.52,1.81l1.07,-2.31l1.42,0.6l-0.36,1.85l1.71,-0.36l-0.0,-1.84l2.48,0.8l0.8,-0.47l-0.4,2.67l1.97,0.46l-3.13,2.47l-0.17,0.84l0.9,0.39l-1.01,1.83l-4.32,3.9l-1.76,0.09ZM816.44,732.88l0.05,-0.34l0.15,-0.22l-0.19,0.56ZM816.77,732.01l0.24,-0.64l0.0,-0.0l-0.04,0.32l-0.2,0.32ZM812.97,739.62l0.88,-1.79l0.6,-0.25l0.0,1.23l-1.48,0.81ZM759.62,789.53l0.16,-4.68l2.2,-4.08l-1.01,-0.82l0.79,-1.21l0.55,1.16l1.15,-0.48l2.56,-4.02l-0.92,-0.09l-2.38,2.22l8.34,-9.82l4.16,-3.04l0.82,-1.68l0.15,2.95l0.79,0.75l0.65,-0.85l0.83,0.28l1.64,1.93l0.85,-0.63l-0.2,-1.37l-1.52,-0.96l0.48,-1.27l4.28,-3.21l3.19,-0.71l0.95,-1.59l-3.38,-0.07l-3.46,1.51l-2.84,-0.03l-3.3,1.74l-2.47,-0.07l-1.2,0.97l-0.22,1.24l-2.04,0.04l4.14,-6.74l0.02,-1.13l1.63,-0.72l0.41,-3.75l1.44,-1.22l1.43,0.16l2.21,1.66l1.47,-0.03l1.43,-1.45l-0.11,1.13l1.96,-0.28l0.15,0.77l1.33,0.29l2.45,-1.4l0.23,-0.87l4.41,-0.24l-1.15,1.72l1.38,0.56l1.1,-0.77l-0.0,-0.87l2.14,0.66l4.61,-6.3l1.62,2.8l3.57,0.38l1.19,-1.77l3.74,2.14l-2.2,2.48l0.51,0.93l5.15,-1.32l0.05,1.13l-0.76,-0.45l-1.84,0.96l-0.78,1.92l-3.7,1.02l0.54,1.19l-1.67,0.55l-2.19,3.02l-2.05,0.97l-1.89,2.18l-0.47,-0.39l-3.51,3.25l-0.15,1.04l-1.47,0.57l-0.41,-0.68l-1.66,0.09l-0.12,1.24l-1.32,0.34l-0.06,1.77l-1.34,-0.47l-0.81,0.54l0.56,0.97l-3.16,-1.14l-0.2,0.6l1.63,1.08l1.01,2.07l-1.9,0.73l-0.83,-0.89l-1.51,0.95l-0.65,-3.4l-2.22,1.84l0.95,1.84l-0.28,0.68l-1.28,-1.4l-2.02,0.98l-0.06,2.33l0.87,0.89l-0.1,1.05l-1.02,0.47l1.06,0.58l-1.02,2.27l-1.52,1.0l1.05,0.57l-1.54,0.73l0.61,1.07l-1.6,1.43l0.4,1.43l-0.91,-0.21l-0.93,0.87l0.68,1.29l-1.25,-0.81l0.52,1.66l-3.0,-0.19l0.49,2.0l-0.73,-1.36l-1.0,0.63l0.82,2.23l-1.31,0.88l0.18,1.22l-1.36,-0.74l-1.19,1.4l-1.25,-2.57l-2.08,-1.97l-2.19,-0.02l0.72,1.81l-1.29,-0.35l-2.43,-5.2ZM815.32,751.9l-0.03,0.02l0.03,-0.1l0.01,0.08ZM814.11,746.7l0.43,-0.47l0.76,-0.29l-0.16,0.85l-1.03,-0.09Z", "name": "Nova Scotia"}, "mb": {"path": "M325.81,733.16l8.91,-123.96l2.81,-21.17l0.68,-1.04l-0.07,-3.63l1.91,-0.88l-1.53,-1.99l0.27,-2.01l2.58,-1.88l2.72,-3.66l0.59,-2.49l-1.67,0.2l-0.75,-0.71l0.21,-4.29l-1.41,0.85l-1.0,2.53l0.82,-2.47l-0.4,-0.68l4.56,-34.38l33.83,3.81l33.9,2.47l-0.48,6.3l0.68,6.11l-0.92,4.18l-1.34,-0.06l-0.7,0.81l1.81,0.42l1.05,1.4l-0.48,3.02l1.42,-0.82l1.5,3.03l1.8,-0.28l0.27,0.59l-1.11,2.12l-0.82,6.88l0.75,-0.03l1.44,-3.28l0.06,-3.8l1.1,-2.83l4.0,-0.25l1.82,0.42l0.99,1.31l1.01,-1.02l1.12,0.23l0.16,4.19l2.86,8.44l0.25,4.64l3.21,8.93l-1.85,5.4l-2.86,2.98l1.99,-0.17l2.43,-1.98l1.58,-0.33l-1.98,1.88l1.85,-0.02l1.33,-1.17l12.03,-4.28l4.28,0.66l6.26,4.2l9.56,3.02l-49.26,55.91l-17.57,16.11l-3.92,65.83l-1.43,0.88l0.3,2.14l-32.47,-2.21l-38.67,-4.14ZM358.05,659.25l-0.57,1.38l2.52,3.34l1.2,-0.32l1.1,0.68l0.62,-0.83l2.78,0.77l-4.58,1.29l-0.34,1.82l0.94,2.85l3.13,3.99l0.22,2.26l2.43,1.74l0.42,2.75l0.85,0.78l0.19,3.11l3.02,1.79l1.2,-4.49l1.9,-0.21l-1.49,1.95l0.62,1.94l2.46,-2.21l0.95,4.17l-1.21,3.82l0.46,3.17l2.17,-1.39l0.62,-2.57l2.26,-0.95l0.51,1.06l0.38,1.6l-2.51,3.7l-0.84,3.0l1.26,0.25l2.08,-2.67l0.81,0.32l-3.9,4.57l-0.97,8.83l0.63,2.85l3.31,0.71l1.33,-1.44l-0.09,-3.28l0.45,-0.38l1.4,1.29l1.52,-0.53l-0.8,-1.43l0.01,-6.93l0.84,0.05l-0.0,-1.41l1.12,-0.85l-2.33,-3.53l-0.47,-2.7l-2.13,-3.63l0.91,-0.39l-0.33,-1.21l-1.6,-1.06l0.58,-1.53l-2.3,-4.74l0.77,-0.8l-0.17,-2.6l-1.45,-5.26l-1.96,-3.44l-0.13,-1.34l1.12,-1.31l-0.84,-0.77l0.04,-2.34l-1.58,-2.21l-0.66,-3.65l-1.5,-2.46l0.32,-1.95l-1.36,-4.38l2.17,-0.28l0.64,-1.93l-2.8,0.55l-1.48,1.77l-1.1,-1.27l0.86,-0.78l0.17,-2.08l2.78,-0.81l1.18,-1.18l-1.97,-2.6l-1.06,0.24l-3.76,7.32l0.66,2.32l1.82,1.62l-2.82,-1.76l-3.25,-0.16l-1.68,-1.09l-1.33,0.35l-4.39,11.12ZM338.24,663.05l-0.65,0.97l0.87,0.92l-0.25,1.12l1.03,-0.05l0.55,1.29l2.0,-0.24l0.99,-1.7l0.09,-1.38l-1.05,-1.03l2.46,0.66l-0.57,3.78l1.64,2.97l1.19,-0.99l-0.32,-3.9l0.85,1.53l0.88,-0.01l-0.54,2.9l0.85,1.25l-0.42,1.66l-1.48,1.16l-0.83,1.91l-0.36,6.88l0.69,3.55l1.1,0.47l1.8,2.85l2.36,-0.58l0.56,2.28l1.19,-2.43l1.22,0.34l0.19,1.6l1.37,0.02l0.09,3.43l1.45,3.0l-0.79,0.41l-0.11,1.58l2.87,6.16l1.6,6.25l-0.78,1.22l0.13,1.98l1.68,1.36l3.19,-0.36l2.9,-1.85l0.24,-2.18l-4.5,-7.89l-3.89,-1.78l-0.07,-1.57l1.52,-1.23l1.34,-3.48l-2.0,-0.95l-0.47,-1.63l1.15,-2.77l-0.96,-2.78l-0.73,-0.49l-1.66,0.65l-1.94,-2.22l0.01,2.67l-0.52,0.11l-0.48,-2.45l-1.72,-0.95l-1.95,2.31l0.29,-2.62l-0.56,-1.05l-0.64,0.0l-0.97,2.03l1.25,-3.44l0.01,-1.74l-0.87,-0.31l0.05,-3.27l1.27,-1.06l1.73,-3.79l-0.43,-5.26l0.7,-1.86l-4.25,-3.36l-3.17,-1.0l-0.49,-1.05l-1.59,-0.72l-1.62,1.53l-2.05,-0.16l-0.63,-1.36l-1.79,0.41l-0.53,1.06l1.35,1.66l-0.08,1.04ZM343.01,656.44l1.13,1.51l0.98,-0.26l0.96,2.44l3.89,2.01l3.85,-0.8l0.49,1.98l2.25,-0.5l-0.1,-1.24l0.87,-0.61l-0.66,-1.0l0.38,-2.94l-2.0,0.71l-2.48,-0.31l-0.99,1.43l-0.7,-1.78l0.88,-1.47l-1.1,-2.72l-1.76,-1.5l3.0,-1.3l0.35,-1.72l0.74,1.18l0.79,-0.05l1.06,-2.81l1.32,-0.99l-0.07,-1.43l-0.89,-0.39l-2.15,2.28l-3.16,1.45l-0.24,-0.54l1.53,-1.35l-1.92,-1.62l4.72,-1.87l-0.02,-1.11l-1.87,-0.0l-1.52,-1.59l-1.47,0.99l-0.63,-0.73l-0.85,0.38l0.24,5.25l-1.56,-0.75l-1.07,0.89l0.89,1.62l-0.57,0.99l1.53,3.23l-1.1,-0.29l-0.96,0.88l-1.74,-0.65l-0.54,0.69l0.88,1.1l-2.03,-0.96l-1.8,1.37l3.2,2.86ZM341.7,570.74l0.11,0.46l-0.33,0.4l-0.3,-0.25l0.52,-0.61ZM372.43,651.83l0.78,0.33l0.07,0.14l-0.68,0.12l-0.17,-0.58ZM373.09,681.95l-0.22,-0.07l-0.17,-0.02l0.34,-0.17l0.05,0.27ZM385.47,699.16l0.7,-0.42l0.64,-0.04l-0.44,0.34l-0.9,0.12ZM383.3,699.6l-0.34,1.82l-1.34,0.72l0.88,-0.74l0.79,-1.81ZM377.76,678.72l0.37,-0.5l0.24,-0.1l-0.05,0.16l-0.56,0.45ZM370.13,675.8l0.54,-1.53l0.13,3.36l-0.46,-0.78l-0.22,-1.05ZM357.53,697.63l0.49,0.05l0.11,1.04l-0.27,-0.23l-0.34,-0.86ZM358.33,696.85l-0.03,-0.15l0.14,-0.13l-0.11,0.27ZM357.84,689.63l0.46,0.59l-0.04,2.55l-0.44,-2.49l0.02,-0.65ZM347.78,684.17l-0.0,-0.02l-0.02,-0.1l0.05,0.08l-0.04,0.04ZM347.6,681.67l-0.12,-0.23l0.03,-0.26l0.07,0.22l0.02,0.27ZM349.11,674.67l-0.15,-1.21l0.81,-1.07l-0.36,1.68l-0.3,0.6ZM348.35,656.43l0.0,0.0l-0.0,0.0l-0.0,-0.0Z", "name": "Manitoba"}, "sk": {"path": "M225.52,715.72l39.97,-178.67l7.25,-1.44l1.31,1.41l12.87,0.18l1.43,-2.31l0.88,1.22l4.11,0.42l3.46,1.73l7.89,0.67l-0.84,-0.96l-5.15,-0.85l-2.45,-1.6l-3.4,-0.16l-2.27,-2.18l-3.22,-0.71l-2.58,-1.68l-4.02,-0.32l-2.77,0.98l1.34,-2.29l-0.87,-0.76l-1.81,0.51l-0.58,-2.19l-0.93,-0.65l-2.97,-0.33l-5.02,3.79l2.54,-11.36l37.12,7.44l37.41,5.82l-4.58,34.49l-1.83,1.67l-0.01,1.71l-2.81,1.32l-1.71,2.49l-1.74,0.06l-0.19,2.8l-2.61,1.35l-1.09,3.92l1.79,-0.4l1.19,1.26l-1.32,2.68l1.76,0.57l-0.31,4.59l-2.32,0.06l-3.29,4.78l1.51,-6.72l-0.95,-0.48l-1.63,5.24l-1.25,0.01l-0.61,0.92l-0.03,1.77l0.55,0.19l-0.9,2.9l0.77,0.84l1.75,-2.64l0.13,1.02l1.37,0.4l1.78,-2.5l4.61,-1.44l0.17,-1.79l1.5,-0.27l0.7,-0.98l-1.43,-0.62l0.7,-0.7l1.47,0.09l1.37,-2.0l-2.8,21.13l-8.91,123.93l-50.48,-7.59l-49.01,-9.75ZM321.15,570.65l0.95,0.2l1.78,-1.81l1.8,0.51l0.38,1.25l-1.49,2.36l1.92,-0.81l1.84,-2.74l-1.39,-0.73l1.05,-3.5l3.03,-0.66l0.82,-1.15l-0.99,-1.18l0.63,-0.7l0.9,0.38l1.19,-1.81l-0.29,-1.14l-1.17,-0.59l-0.12,-1.79l-1.98,0.19l-0.69,-0.9l-0.89,1.02l0.19,0.93l-1.46,0.5l-1.33,-0.79l-1.32,0.9l-1.19,2.67l0.36,1.78l-1.9,1.78l0.32,0.65l2.03,-0.32l-2.97,1.62l0.31,1.04l1.31,-0.05l-2.31,2.02l-0.17,1.08l0.83,-0.21ZM329.12,591.75l0.01,0.02l-0.02,0.0l0.01,-0.03ZM337.04,580.48l0.76,-1.11l0.21,-1.05l-0.31,2.31l-0.66,-0.14ZM334.83,587.78l-0.06,-0.5l0.75,-1.28l-0.11,1.5l-0.59,0.28ZM332.55,578.38l0.2,-0.02l0.16,0.03l-0.1,0.23l-0.25,-0.24ZM324.49,566.41l0.75,-0.68l0.15,-0.05l0.08,0.36l-0.98,0.37Z", "name": "Saskatchewan"}, "qc": {"path": "M567.54,485.56l2.68,-1.98l1.59,-2.47l6.39,0.69l6.3,2.28l4.25,0.42l-2.04,2.18l0.37,0.65l4.59,-3.75l1.34,0.24l0.63,1.1l0.93,-0.89l2.52,1.84l2.15,0.56l0.33,-0.61l-1.98,-1.25l0.01,-0.69l2.64,-0.51l1.11,-1.65l2.27,-1.23l0.87,-2.05l1.31,-0.53l1.15,1.47l3.31,0.92l3.37,3.27l1.41,-0.03l0.32,-0.84l0.81,0.4l0.61,2.24l-1.14,2.9l0.44,0.56l2.15,-0.39l-0.63,-1.88l3.32,0.52l0.29,2.27l1.48,-0.07l0.73,0.84l-0.4,1.12l-1.78,0.48l0.08,1.33l3.16,-1.31l0.24,-1.94l2.68,0.89l-0.2,0.92l-1.78,0.57l0.84,1.44l-0.94,1.0l1.77,0.4l-0.94,0.39l0.28,0.79l1.22,0.1l-0.28,0.74l1.22,0.54l0.82,1.88l1.12,-0.73l1.12,0.98l0.99,-0.79l0.6,0.52l1.4,-0.43l1.24,0.89l1.95,-0.4l0.47,0.74l1.44,0.04l1.87,-2.0l1.12,-0.12l0.88,1.88l-0.23,1.61l2.73,1.17l0.99,-2.2l0.66,0.54l0.86,-0.68l-0.68,-2.21l0.39,-1.34l2.03,2.74l0.4,1.74l-2.54,2.76l0.92,2.18l-1.2,1.53l1.51,2.42l-0.12,1.26l1.77,1.39l0.42,2.48l-1.52,0.27l-0.12,1.39l-4.28,0.38l-2.16,1.18l-4.19,-0.67l-0.74,0.79l5.04,1.01l7.7,-1.58l-0.08,1.01l1.78,0.38l0.15,3.34l1.33,0.37l-1.61,2.91l1.54,2.47l-0.64,1.56l1.63,0.02l1.62,-1.44l0.55,0.66l0.9,-0.37l0.42,1.2l-1.79,0.29l-0.81,1.56l1.94,4.81l-0.53,1.75l-0.49,0.33l-0.49,-0.84l-0.43,-2.08l-2.54,-1.36l0.07,2.24l1.07,1.13l-0.9,1.22l-2.52,1.17l-0.21,0.87l3.16,-0.09l2.25,2.48l1.48,-3.64l2.54,-3.15l3.47,-0.41l0.89,-0.97l4.23,1.35l0.88,3.2l2.07,2.53l0.03,5.92l-1.06,1.95l-5.56,3.96l-1.58,3.45l3.83,-4.1l4.86,-3.19l0.7,-1.85l-0.2,-7.51l1.76,-0.2l1.11,3.2l-1.48,4.96l0.81,0.14l0.86,-1.54l1.17,-3.78l1.04,1.05l0.48,5.63l1.0,0.4l-0.27,-3.89l0.92,-3.12l3.42,-2.57l0.63,-2.68l1.04,1.17l0.55,-1.56l1.61,-0.49l-0.5,-3.33l0.91,-1.35l-0.08,-2.13l4.9,2.94l0.38,3.6l-0.65,1.08l1.18,0.8l0.82,-5.76l-2.39,-1.59l-0.76,-2.0l2.26,-0.94l-0.23,-0.75l-1.62,-0.02l0.76,-1.47l1.91,0.43l-0.97,-1.83l2.13,0.56l0.2,-0.65l-1.0,-0.55l1.84,-0.07l0.57,-0.69l-2.51,-0.75l-0.86,0.79l-0.95,-1.14l1.63,-2.34l-1.22,-1.3l1.63,1.03l0.65,-0.66l-1.2,-1.2l0.27,-1.02l-0.91,-0.42l1.58,-0.5l2.03,1.08l1.18,-0.2l-2.5,-1.88l-2.27,-0.15l-2.07,-3.34l1.18,-2.17l2.75,0.78l1.03,-0.65l-2.55,-0.99l0.83,-1.94l-0.92,-1.51l0.72,-3.18l2.37,-0.35l0.39,0.53l-1.02,0.44l0.27,0.84l-1.61,0.8l1.18,1.74l1.8,0.19l-0.93,1.95l1.24,5.32l2.0,1.75l2.73,-2.15l-1.08,1.6l0.96,4.42l1.29,1.97l1.91,0.72l-4.47,-0.11l-0.76,1.69l0.28,1.7l5.87,-0.6l0.77,1.65l1.34,0.35l3.31,-3.48l2.62,1.19l-4.93,3.05l0.59,2.54l0.98,0.39l1.01,-0.96l0.71,0.98l-2.51,3.1l0.08,2.13l-1.41,1.31l0.05,2.0l0.64,0.85l1.8,-0.09l3.0,4.39l1.14,-0.81l1.6,1.6l1.76,0.07l-0.75,1.73l1.5,3.17l-0.87,1.11l0.05,1.7l1.5,1.96l-0.57,1.26l0.73,3.23l-0.83,0.91l0.33,1.16l-0.83,1.87l3.76,4.08l-2.68,0.86l1.07,2.62l1.03,0.74l1.87,-0.08l-0.99,1.19l0.5,1.88l1.22,-0.66l1.2,0.69l2.14,-0.12l-0.88,1.63l0.62,1.68l2.96,2.0l1.05,1.64l2.06,0.9l1.25,-0.5l0.24,1.93l1.03,0.77l-3.29,3.75l0.16,2.77l1.69,1.08l-0.72,7.12l-7.14,-0.89l-2.03,1.25l-2.45,0.1l-3.14,1.95l-3.52,0.02l-2.1,1.19l-2.7,-2.92l-2.07,0.38l-2.35,-0.87l-4.27,-3.5l-2.9,-1.23l-0.87,1.07l1.96,1.57l-0.17,2.11l1.48,1.67l-0.4,1.11l1.8,2.02l-0.87,1.11l-6.47,-3.28l-0.16,-1.16l-1.37,-0.14l-0.77,0.94l0.2,1.29l2.53,2.68l-0.03,1.02l1.44,0.79l-0.02,0.93l1.91,0.16l-1.55,0.44l-0.36,1.99l-2.07,-0.88l-1.48,0.78l0.14,2.15l2.19,2.6l-1.79,5.54l2.42,1.66l0.46,1.12l1.76,0.66l0.23,3.29l0.89,0.64l3.05,-0.25l1.66,2.57l1.09,-0.28l0.81,0.77l-0.36,2.35l0.9,2.89l-0.65,2.01l1.25,4.36l3.53,0.01l1.16,-1.3l-0.51,-4.02l1.22,-0.52l0.08,-1.42l2.1,1.75l-0.84,0.91l0.94,1.83l-0.9,0.76l1.11,2.51l-0.4,0.73l1.33,1.83l-0.78,2.0l1.83,2.63l1.35,0.07l-0.43,-2.68l1.31,0.96l0.94,-0.23l0.96,2.03l3.17,0.35l0.08,-1.35l2.55,0.46l0.37,-3.06l3.66,-0.38l3.28,1.73l0.71,1.7l3.05,0.82l-0.99,1.63l2.72,3.16l2.93,-4.57l-1.46,-1.65l-0.38,-4.86l1.35,-1.05l-1.32,-4.92l1.22,-0.11l-0.3,1.18l2.44,0.0l2.61,3.99l-1.28,-0.17l-0.48,0.73l1.68,1.11l35.01,-11.1l35.07,-12.54l3.42,9.02l-1.77,-0.95l-2.75,2.28l-1.08,0.49l-0.72,-0.49l-2.68,4.19l-1.64,1.25l-1.0,-0.75l-0.11,1.13l-1.43,-0.17l-1.72,1.36l-0.6,1.16l1.14,1.19l-3.26,3.83l1.5,3.76l-0.63,-1.43l-0.81,-0.1l-0.43,2.86l-0.77,0.21l-1.21,2.32l-0.67,3.58l-2.17,1.52l-0.5,1.77l0.65,0.77l-1.2,1.54l-2.9,0.03l-0.31,0.93l-2.71,1.52l-0.41,-0.49l-0.86,0.79l-1.54,-0.22l-0.9,1.3l-6.38,3.28l-0.63,-0.58l-1.77,1.59l-1.49,-1.29l-3.94,1.02l-2.28,-0.28l-3.14,1.2l-0.63,-0.4l-2.2,1.18l-1.14,-0.17l-3.8,2.96l-4.91,-0.34l-3.53,1.93l-3.54,-0.01l-4.49,2.21l-4.62,0.41l-4.94,2.55l-2.65,0.05l-1.66,2.26l-2.24,0.48l-0.93,-0.98l-0.82,0.24l-2.35,4.9l-1.87,1.56l-0.22,2.67l-1.15,0.65l0.37,6.89l-0.9,2.3l-7.12,2.55l-2.85,2.86l1.47,0.84l-1.15,0.54l-0.93,-1.34l-1.01,0.1l0.64,1.28l-1.75,1.62l-0.67,2.63l-3.49,3.63l-0.27,3.11l-1.0,0.53l-1.29,5.65l-2.01,3.09l-1.29,0.07l-2.38,-1.59l-1.96,0.46l-3.06,-1.17l-3.75,0.48l-3.78,-0.53l-1.08,0.61l0.34,0.72l2.87,-0.0l-0.93,0.89l0.77,0.75l4.35,-1.54l4.13,1.14l2.46,-0.31l2.54,1.29l-0.84,6.13l-2.02,2.56l-0.47,3.04l-2.8,1.66l-1.43,6.21l-2.49,2.27l-2.57,4.76l-5.07,3.11l-2.2,0.19l-3.66,3.19l-0.16,1.61l-3.51,3.69l-4.41,2.47l-0.11,1.93l-1.55,0.98l-2.15,5.95l-3.75,2.23l-2.78,3.92l-3.31,-0.18l-4.81,-1.52l-7.53,2.73l-6.18,4.37l-2.82,-1.86l-2.34,0.27l-0.91,1.01l-3.85,-1.06l-3.2,-5.29l-1.74,0.28l-0.33,1.68l-2.91,-1.28l-1.98,-2.69l-4.14,-1.81l-13.22,-1.13l-3.35,-2.85l-6.82,-9.11l-0.54,-3.26l-1.96,-2.87l0.5,-2.68l-6.88,-58.58l1.67,2.7l0.76,-0.3l-2.63,-4.13l-1.45,-10.21l1.8,-2.07l0.51,0.3l-0.05,1.75l1.97,-0.07l1.17,0.94l1.17,4.32l2.02,0.89l-0.92,-1.44l0.7,-2.4l-0.66,-0.48l1.87,-2.2l-1.42,-0.35l-0.2,-1.85l-2.72,-2.34l1.92,-1.2l-0.7,-1.8l1.4,-0.7l1.48,-2.63l0.22,-2.55l1.53,-0.35l-1.62,-0.87l0.35,-0.97l-1.08,-3.34l-1.97,-0.38l0.3,-0.73l-1.54,-2.57l0.77,-0.58l-0.19,-2.18l-1.55,0.32l0.7,-1.5l-0.99,-0.9l-0.91,0.22l0.22,-3.89l-2.13,-4.19l0.97,-1.93l-1.87,-3.11l0.14,-1.17l1.02,0.29l0.34,-0.65l-1.75,-0.7l0.54,-0.95l-0.65,-1.0l0.79,-0.61l-1.92,-1.3l0.47,-1.99l-2.94,0.06l0.37,-1.03l-1.53,-0.25l-1.71,-5.56l-1.6,-1.27l12.54,-7.64l5.83,-5.38l5.76,-8.04l0.03,-1.54l3.67,-6.25l0.7,-7.28l-2.09,-12.99l-4.38,-10.16l-4.3,-5.9l-3.31,-2.21l-0.4,-0.99l-5.76,-2.52l-4.54,-4.12l-1.36,0.49l0.77,-1.64l-1.24,-3.71l2.05,-0.16l1.57,-5.91l2.29,-1.62l0.35,-1.83l0.75,-0.42l-0.01,-0.71l-1.88,-0.96l1.18,-1.28l-0.12,-1.72l-0.72,-0.58l1.56,-0.14l1.48,1.82l1.76,-0.42l-1.31,-0.66l-1.04,-2.07l1.87,-1.5l-1.03,-2.89l1.33,-2.14l-0.47,-0.56l-3.35,0.5l1.59,-1.31l-1.31,-0.85l0.39,-0.86l-0.77,-1.16l-2.18,-1.91l2.59,-3.27l-1.49,-0.49l-1.22,0.52l-1.2,-1.06l2.38,-4.21l-0.95,-0.23l-2.27,1.59l-0.86,-1.07l-2.14,0.94l2.89,-4.95l0.63,-2.61l-1.13,-4.32l1.75,-1.37l-1.13,-1.19l1.27,0.24l0.34,-0.62l-1.23,-1.21l-1.15,-0.05l-0.92,-1.42l-1.99,-0.29l-2.53,-8.09l-0.22,-2.36l0.82,-1.84ZM689.57,666.14l2.97,2.78l0.4,4.81l3.85,2.18l2.91,3.03l-0.08,2.64l1.13,1.65l0.1,-6.44l1.08,-1.92l1.66,-0.63l-0.19,-1.37l1.35,-2.13l-1.37,-1.44l-0.69,-3.39l-0.83,-0.4l0.98,-1.49l-0.24,-1.9l-1.02,-0.45l-0.51,3.11l-1.74,-0.59l0.3,-3.81l-2.42,-1.16l0.9,3.16l-0.05,1.06l-0.54,-0.56l-0.61,0.45l0.5,1.31l-1.72,0.69l-0.92,-1.3l-0.87,2.84l-2.4,-5.39l-0.46,1.1l1.2,4.24l-2.2,-2.96l-0.38,1.02l-0.98,0.1l0.87,1.15ZM641.29,697.73l-1.32,5.35l0.92,-0.27l1.5,-3.61l1.02,0.96l0.17,1.97l1.01,0.68l-1.41,0.75l-2.37,3.12l0.88,0.82l1.32,-0.43l0.12,-1.1l2.26,-2.64l-0.25,-2.25l0.82,-0.6l-1.24,-1.43l-0.37,-2.37l4.08,-9.43l0.55,-0.8l0.05,1.71l-1.74,2.01l-0.84,3.7l4.78,-6.08l0.82,-2.37l3.4,-2.58l-0.15,-0.73l-1.75,-0.25l-0.62,0.53l-0.45,0.12l0.95,-2.03l-4.09,0.13l-2.49,2.35l-3.6,5.35l-2.17,1.13l0.23,2.25l0.66,0.46l-0.68,5.6ZM578.58,653.33l-0.12,0.05l-0.03,-0.04l0.15,-0.0ZM653.17,787.27l4.41,1.1l0.65,0.96l-1.84,0.63l-1.91,2.07l-1.51,-1.14l0.21,-3.62ZM655.64,541.71l0.05,-0.09l0.04,0.01l-0.05,0.06l-0.03,0.02ZM627.38,494.93l0.16,-0.06l-0.08,0.05l-0.09,0.01ZM639.8,499.28l-0.07,-0.03l0.04,-0.08l0.03,0.12ZM657.49,533.45l0.42,-0.03l0.38,-0.21l-0.29,0.53l-0.52,-0.29ZM677.32,543.83l-0.22,-0.37l-0.25,-1.11l0.12,-0.83l0.35,2.31ZM692.9,522.01l-0.29,-0.07l-0.05,-0.23l0.17,0.12l0.17,0.19ZM695.33,499.9l-0.07,-0.73l1.02,0.21l-0.34,0.12l-0.61,0.4ZM696.44,499.35l0.14,-0.3l0.34,0.14l-0.21,0.11l-0.26,0.05ZM721.21,553.5l-0.0,-0.22l-0.06,-0.42l0.12,0.17l-0.05,0.47ZM742.68,638.01l-0.94,-0.91l-1.23,-4.78l2.19,-1.57l-0.57,-3.86l2.03,-0.83l1.87,2.26l0.26,3.08l2.85,1.31l-4.71,1.98l-1.74,3.3ZM572.29,551.83l-0.04,-0.14l0.05,-0.08l-0.01,0.22ZM809.54,639.84l0.11,-0.18l0.38,-0.14l-0.2,0.29l-0.28,0.03ZM794.07,718.76l-0.04,-0.31l0.4,-0.4l-0.02,0.55l-0.34,0.16ZM794.08,721.05l0.12,0.06l0.22,0.03l-0.4,0.14l0.05,-0.23ZM752.05,684.58l3.35,-1.98l12.06,-0.48l7.47,1.06l4.76,2.11l3.86,-0.07l3.15,2.43l-0.94,1.38l-4.79,1.57l-10.21,0.1l-5.99,-1.0l-1.45,-1.91l-4.1,-1.89l-7.17,-1.32ZM652.71,796.39l2.37,-2.89l3.83,-1.92l2.72,-3.56l2.68,-0.68l0.07,-5.26l2.17,-3.82l0.22,-2.72l4.72,-3.18l2.23,-3.77l2.48,-1.6l0.65,-2.03l1.89,-1.12l1.43,-2.03l1.92,0.23l4.53,-3.0l1.48,-2.1l4.17,-2.21l2.66,-2.41l8.34,-16.91l0.68,-3.09l5.71,-8.22l7.34,-7.76l14.54,-11.65l4.17,-2.69l7.07,-3.0l8.62,-0.99l3.41,0.69l4.64,2.34l0.25,0.85l-3.4,-0.34l-0.76,0.51l0.9,1.37l1.21,-0.43l0.13,0.76l3.16,1.24l-0.69,1.61l1.11,0.79l-0.89,1.66l-3.97,2.67l-0.08,2.5l-1.99,0.9l-0.01,1.14l-2.76,2.81l-1.46,0.58l-4.54,-0.82l-1.94,-1.54l-1.61,2.77l-4.74,0.93l-0.62,1.24l-3.97,2.56l-0.15,1.39l-1.26,-0.06l-3.13,2.04l-2.65,-0.67l-0.75,-1.02l-5.83,1.45l-0.09,1.3l-2.99,1.14l1.44,6.32l-1.36,2.4l-4.88,3.54l-0.62,-2.08l-2.76,0.16l-6.09,15.23l0.29,5.14l-1.15,1.5l-0.55,2.85l0.72,1.19l-0.26,2.96l0.87,0.77l-1.38,2.38l0.31,1.47l-2.74,3.32l-0.21,1.82l1.32,1.03l-1.96,-0.13l-0.29,2.78l-1.38,-1.09l-1.81,2.22l-2.46,-0.16l-1.2,1.39l0.52,0.71l-0.6,3.08l-37.0,7.26ZM695.11,673.17l-1.2,-1.89l1.28,-3.57l2.36,-1.72l2.65,0.97l1.12,3.06l-1.49,-2.14l-0.88,0.09l-0.35,1.07l1.59,2.2l1.6,0.33l-0.48,1.45l-1.08,-0.11l-0.18,0.98l-1.7,0.54l-1.79,-1.34l-1.43,0.06ZM699.83,676.44l0.05,-0.39l0.27,-0.52l-0.05,0.36l-0.26,0.55ZM688.63,755.76l1.98,-2.71l0.28,-0.13l-0.38,1.07l-1.88,1.77ZM659.46,787.18l2.28,-1.7l1.54,-2.74l-0.52,3.86l-3.3,0.58ZM659.81,785.25l1.03,-1.6l0.72,-0.51l-0.63,1.6l-1.12,0.51ZM659.11,532.42l0.63,-0.24l0.62,1.37l-0.55,1.27l-0.69,-2.4ZM656.94,791.1l0.16,-0.25l0.89,-0.1l-0.46,0.23l-0.58,0.13ZM652.03,682.85l-1.22,1.65l-0.39,-0.18l0.87,-0.97l0.73,-0.5ZM649.56,685.96l-0.16,0.02l-0.35,0.32l0.38,-0.81l0.12,0.47Z", "name": "Qu\u00e9bec"}, "pe": {"path": "M769.24,739.85l-0.18,-1.73l2.38,-5.55l0.78,1.7l-0.66,2.7l1.46,0.36l2.27,2.05l-0.46,2.1l1.16,-0.5l0.61,0.64l1.57,-0.17l0.11,-2.32l2.73,1.04l1.06,-0.97l1.95,1.15l7.37,-2.66l0.67,-1.07l5.69,-1.66l-1.8,2.01l-1.67,0.27l-0.29,1.75l-1.05,0.36l0.88,0.75l-1.76,0.32l0.28,1.54l1.91,0.57l-1.06,1.49l1.06,0.39l-2.59,1.13l-1.77,-0.58l-0.25,-2.19l-1.63,-0.62l-1.22,0.39l1.06,-1.86l-0.51,-0.53l-1.64,1.82l-1.07,0.01l0.29,0.75l-0.86,1.0l0.82,0.47l-3.05,-0.53l-1.4,0.5l-2.44,-1.08l0.82,-0.41l-0.92,-1.1l-4.45,1.08l0.16,-2.7l-0.78,-1.42l-0.79,0.92l-2.8,0.36Z", "name": "Prince Edward Island"}, "bc": {"path": "M13.68,416.26l38.29,21.56l40.78,20.26l41.78,18.1l42.4,15.79l-37.34,108.94l0.23,2.34l1.36,1.97l-2.01,-0.53l-0.39,1.88l1.81,4.12l2.62,0.69l0.45,3.38l2.09,1.93l1.26,-1.4l0.77,1.04l0.58,1.33l-0.59,0.93l0.97,0.98l-0.26,2.71l1.46,0.32l0.34,1.0l-0.42,9.09l2.27,0.12l0.91,-1.11l1.91,1.91l-1.43,1.59l0.3,1.88l1.42,1.86l3.03,0.67l-0.09,1.84l1.68,3.03l0.35,4.0l1.36,0.39l1.81,-1.22l0.08,2.89l2.0,4.22l-0.25,2.61l1.91,2.06l0.16,2.41l1.93,1.34l1.19,2.3l-0.77,2.06l2.77,3.21l0.39,3.35l2.44,0.37l1.38,4.09l-0.14,5.53l-0.98,2.53l0.11,2.26l-2.3,3.28l1.69,1.46l-0.74,2.47l1.46,4.06l2.11,1.46l0.58,2.44l-54.57,-16.38l-42.44,-14.97l-1.34,-2.34l-2.28,0.42l1.41,-1.4l-1.8,-0.63l1.1,-0.76l-0.62,-1.25l3.35,0.77l1.94,-2.65l-0.87,-0.46l-1.34,1.81l-0.73,-0.02l-2.26,-1.5l3.4,-5.58l-1.54,0.14l-0.64,1.13l-3.29,0.49l-0.74,1.8l-2.22,-2.35l1.18,-1.54l3.24,-0.79l-0.37,-0.66l-2.84,-0.01l-0.59,-2.27l1.35,-1.97l-0.25,-1.64l2.91,-1.08l-0.39,-1.65l-1.48,-1.88l-0.67,0.31l1.11,2.67l-2.3,0.5l-2.93,3.08l-2.88,-0.88l-1.94,-4.22l3.27,-3.87l-0.4,-1.99l0.66,-0.64l2.68,0.23l1.56,-1.1l-0.53,-0.58l-1.92,0.55l-2.02,-0.55l-2.16,1.19l-0.86,-0.52l0.19,-1.72l-0.86,-0.14l3.08,-1.59l1.61,-2.59l-0.54,-1.17l1.94,-1.18l-0.12,-1.14l-0.81,-0.31l-2.3,1.51l0.22,1.81l-0.79,1.69l-3.79,2.15l0.16,-1.29l-1.14,-0.17l-0.23,-1.39l-1.19,0.93l-1.01,-0.17l1.36,-2.4l1.52,-0.77l-0.21,-0.88l-2.03,0.51l-2.34,3.14l-0.55,-2.01l-2.3,0.15l-1.87,-1.12l0.32,-0.73l5.59,0.31l1.71,-1.03l0.34,-1.63l0.94,0.18l1.32,-1.41l-0.32,-3.45l-0.89,0.49l-0.07,2.73l-1.67,0.34l-0.41,1.52l-1.26,0.7l-1.91,-0.24l-0.41,-0.77l-2.03,-0.08l2.36,-1.07l-1.65,-0.62l0.58,-1.2l-0.82,-0.57l1.48,-0.85l-3.03,-1.52l0.13,-2.45l-1.55,2.18l-1.62,0.38l-1.26,-1.83l-1.03,0.28l-2.78,-1.56l-0.03,1.06l-1.91,-2.09l0.18,-0.81l-0.87,-0.64l1.2,-1.71l-2.02,-0.72l-0.34,-2.17l2.39,-0.07l3.73,1.75l1.27,-0.28l0.88,-1.35l-0.59,-0.45l-2.09,0.8l-1.52,-0.85l-0.02,-0.89l-3.06,-0.81l3.0,-0.69l1.92,-2.23l4.52,1.2l3.66,2.02l1.79,-1.19l-0.38,-2.15l-1.39,2.05l-6.12,-3.54l-0.79,0.4l2.07,-2.17l-0.61,-0.83l-2.47,2.04l-1.94,-0.38l0.85,1.33l-1.62,1.97l-1.06,-1.22l0.06,-2.5l1.21,-2.96l1.4,-0.83l1.32,0.33l1.96,-1.48l1.81,0.23l0.25,-1.47l3.62,-0.97l1.19,0.83l1.4,6.84l0.91,-1.43l-1.14,-3.48l0.26,-1.89l2.56,-0.31l-0.5,-0.96l-2.81,-0.06l-1.19,-1.21l0.44,-2.15l3.22,-0.88l1.43,-1.41l0.28,-2.14l-0.81,-1.58l-0.65,0.29l-0.22,3.03l-3.76,1.37l-0.84,1.41l-3.04,0.79l-2.28,0.14l0.03,-1.16l-1.92,1.47l-0.07,-1.06l1.33,-0.79l0.83,-4.09l-2.89,0.28l-1.92,1.56l4.7,-7.11l1.47,-0.62l-1.26,-0.96l-2.19,1.52l-1.33,-1.02l0.85,-4.21l1.01,-1.4l-0.84,-0.43l-0.19,-1.93l-0.88,0.13l-0.66,-1.45l0.74,-2.41l0.91,-0.63l-0.91,-1.26l1.28,0.17l-0.12,1.24l1.75,3.88l0.96,-1.37l3.2,1.11l-0.64,1.96l0.94,-0.15l0.03,2.25l1.24,0.61l0.19,-2.33l-1.0,-3.59l-2.27,-1.32l-1.99,0.31l-1.33,-3.84l1.65,-2.6l1.19,-0.39l1.97,1.07l0.05,-1.0l-1.41,-1.23l1.57,-2.17l-0.99,-0.09l-3.25,1.95l-0.57,-1.39l-0.8,0.06l-0.29,1.7l-0.47,-0.69l-0.66,1.18l-2.69,1.13l-2.16,3.62l-2.66,-9.4l0.18,-1.8l-0.78,-0.55l1.81,-3.54l1.68,4.79l-0.08,-4.94l2.67,1.58l2.23,-0.66l-0.37,-0.7l-1.5,0.3l-1.83,-1.67l-3.38,-0.01l-0.89,-1.25l1.17,-0.49l0.43,-2.86l-1.71,0.68l-0.64,-0.71l0.52,-0.88l0.82,0.14l0.4,-1.89l0.58,-0.0l0.81,5.21l1.31,0.88l-0.43,-2.01l1.95,-1.82l-1.29,-0.41l-0.83,0.73l-0.5,-4.19l1.16,-0.05l1.29,2.42l1.75,0.73l-1.81,-3.81l2.23,-1.4l0.1,-0.88l0.54,-0.4l0.09,1.05l2.0,-0.48l2.14,0.76l0.42,-0.72l-3.37,-1.69l6.34,-5.04l1.97,0.13l-0.21,-0.94l-2.03,-0.26l0.42,-3.12l-0.63,-0.43l-2.89,5.71l-4.38,3.54l0.19,-1.23l3.65,-2.47l1.85,-8.34l3.08,-2.48l0.24,-3.33l-2.86,-2.26l0.24,-1.84l-1.34,-1.53l-0.43,-1.97l-2.66,-2.59l-2.71,-5.17l-2.36,-1.11l1.2,-3.41l-1.5,-2.18l1.9,-2.25l-2.06,-2.5l1.76,-1.48l-0.9,-23.72l0.09,-1.46l0.99,-0.7l-1.5,-7.31l-2.39,-3.93l0.48,-5.51l-0.8,-0.66l-0.18,-2.6l-1.73,-1.64l0.25,-2.83l1.73,-2.27l-1.63,-6.02l-5.6,-0.15l-2.2,-0.69l-1.03,-0.17l-0.14,0.0l-0.63,0.11l0.16,1.76l-1.03,0.68l-1.72,-0.48l-1.53,2.9l-1.84,1.18l-2.14,-0.96l-7.6,0.93l2.24,-5.74l-3.41,-13.53l0.63,-3.0l-1.2,-1.82ZM73.27,652.68l0.29,0.56l-0.5,0.41l0.15,-0.35l0.07,-0.62ZM65.49,639.77l-0.05,0.24l-0.09,0.16l-0.03,0.01l0.17,-0.41ZM46.9,622.45l0.58,0.56l0.35,0.23l-0.42,0.17l-0.51,-0.97ZM45.51,609.91l-0.17,0.0l-0.36,-0.19l0.3,0.13l0.23,0.05ZM49.86,591.97l-0.53,1.61l-0.68,0.46l0.16,-1.83l1.05,-0.24ZM46.31,592.25l-0.74,0.75l-0.66,0.39l0.64,-1.17l0.75,0.02ZM51.41,599.9l0.12,-0.02l0.32,0.0l-0.13,0.19l-0.3,-0.17ZM55.89,626.23l-2.74,-0.27l-0.32,-0.43l0.61,-0.51l2.44,1.22ZM55.17,631.07l-0.22,-0.02l-0.62,-0.24l0.11,0.01l0.74,0.26ZM72.62,660.16l-1.15,-1.36l-0.28,-2.05l0.99,-1.2l0.44,4.6ZM76.93,661.93l0.48,-0.35l0.04,0.63l-0.15,-0.16l-0.38,-0.13ZM76.29,664.18l0.11,-0.16l0.39,-0.19l-0.22,0.27l-0.28,0.08ZM71.32,674.26l-0.21,-0.6l0.34,-1.42l0.54,1.27l-0.67,0.75ZM70.18,655.53l-0.06,-0.38l0.7,-0.3l-0.51,0.61l-0.13,0.07ZM32.64,621.08l0.68,-0.17l-0.74,-1.07l0.22,-1.3l5.36,0.74l3.39,3.27l-0.02,1.6l0.6,-0.15l4.55,5.7l6.73,4.07l1.93,2.25l4.68,3.02l0.26,7.98l1.84,4.7l-1.4,0.36l0.69,4.35l2.14,2.76l3.72,2.75l-0.42,0.9l2.04,1.19l-0.26,1.6l1.09,0.84l0.1,1.41l-1.08,0.55l1.57,3.71l-1.15,0.93l0.85,1.83l-0.98,2.32l0.85,0.38l1.35,-1.36l-0.07,3.71l-1.43,-1.03l-2.12,1.49l-0.76,-0.26l-6.76,-6.52l0.14,-0.88l-2.79,-1.25l-3.6,-4.45l-0.31,-1.19l5.54,-2.62l1.13,-1.58l-0.22,-2.1l-2.58,3.54l-2.64,-0.93l-1.1,0.36l-0.45,-0.34l0.86,-0.46l-0.95,-1.1l-2.44,1.38l-0.89,-1.16l-1.27,-2.46l2.18,-0.5l0.91,-0.99l-0.46,-0.57l-1.28,0.35l0.96,-2.94l-0.65,-0.54l-1.11,1.17l-1.57,-0.16l1.04,-0.37l1.32,-2.07l-0.7,-0.23l-1.4,1.27l0.29,-2.16l-1.77,0.02l-0.5,-1.02l-0.8,1.05l-0.81,-2.22l-1.16,0.39l-0.16,0.81l-0.28,-0.45l1.23,-2.55l5.26,1.02l0.36,-1.01l-3.85,-1.53l1.24,-1.08l-0.63,-1.0l-1.68,0.97l0.63,-3.12l-0.98,-0.43l-0.6,-2.02l-1.45,-0.4l-0.81,1.52l-1.65,-0.66l-0.32,-1.71l2.46,-1.59l0.4,-1.05l-1.6,0.13l-1.02,-1.33l-1.3,1.56l-0.46,-0.99l0.8,-0.46l-0.19,-1.5l-2.04,0.4l0.25,-1.15l-2.51,0.74l-0.68,-0.62l2.5,-1.18l-0.61,-0.93l0.54,-0.89l-1.5,-1.03l1.07,-1.19l3.27,0.93l0.71,2.43l0.68,-0.27l-0.22,-2.73l2.1,-0.71l-5.12,-3.14l0.17,1.47l1.91,1.19l-5.13,-1.05l-1.14,-3.24ZM42.73,638.87l0.18,0.66l-0.39,0.25l0.21,-0.91ZM48.16,658.18l-0.19,-0.14l-0.04,-0.06l0.11,0.01l0.12,0.19ZM65.5,652.35l2.27,2.11l0.58,2.49l-1.49,-2.95l-1.36,-1.66ZM68.05,643.88l-0.05,0.24l-0.39,0.41l0.11,-0.31l0.33,-0.33ZM67.01,658.01l0.26,0.09l0.46,0.37l-0.41,-0.15l-0.3,-0.32ZM65.56,642.66l0.9,0.14l-0.27,0.67l-0.55,-0.11l-0.08,-0.69ZM66.41,644.41l0.09,0.18l-0.5,0.24l-0.01,-0.2l0.41,-0.22ZM63.88,645.46l-0.21,-0.95l0.93,-0.53l-0.29,1.49l-0.43,-0.01ZM63.51,655.92l-0.0,-0.0l0.0,0.0l-0.0,0.0ZM61.36,639.62l0.04,-0.17l0.14,0.12l-0.07,0.05l-0.11,0.0ZM62.49,639.49l0.42,-0.95l0.59,0.96l0.17,3.08l-0.26,-2.27l-0.92,-0.82ZM61.23,643.16l0.03,-1.75l0.74,-0.6l0.33,1.46l-1.11,0.89ZM60.56,638.05l0.47,-0.38l1.13,-0.03l-0.83,0.65l-0.77,-0.24ZM59.53,637.03l0.18,-0.02l0.48,0.11l-0.61,-0.06l-0.05,-0.04ZM56.7,635.33l0.86,0.09l0.09,0.38l-0.33,-0.07l-0.61,-0.41ZM47.05,600.72l2.52,-3.17l6.61,-1.18l-0.51,1.31l-4.2,0.56l-2.9,2.62l-1.53,-0.13ZM51.25,628.36l2.59,-1.08l1.31,0.42l0.04,0.85l-1.28,0.95l-2.66,-1.14ZM51.19,630.96l1.85,0.01l0.22,0.32l-0.39,0.14l-1.68,-0.47ZM49.16,624.77l0.02,0.01l0.0,0.06l-0.02,-0.07ZM50.08,625.28l0.07,-0.07l0.64,0.3l-0.56,-0.01l-0.15,-0.22ZM48.4,587.0l0.14,-1.17l0.6,0.19l-0.53,0.82l-0.2,0.17ZM45.28,570.42l0.29,-0.57l0.16,-0.22l-0.2,0.65l-0.25,0.13ZM45.8,569.53l1.13,-1.95l2.4,0.2l-0.72,1.13l-2.81,0.62ZM45.97,597.4l0.63,-0.09l0.89,0.46l-0.56,0.43l-0.96,-0.8ZM46.73,596.18l1.01,-0.33l-0.49,-0.88l0.72,0.24l-0.14,1.53l-1.1,-0.57ZM44.4,591.29l1.02,-0.72l1.98,-5.16l-1.2,4.81l-1.8,1.07ZM41.13,582.84l0.04,-2.1l0.67,0.54l0.37,-0.87l3.25,-1.66l-0.98,-2.79l-0.6,0.02l1.1,-2.33l2.74,4.19l-0.64,3.91l-2.91,4.7l-0.83,-0.37l0.76,-1.87l2.26,-2.34l0.28,-1.43l-1.65,0.38l-2.15,3.48l-0.91,0.15l-0.83,-1.63ZM44.49,586.33l0.0,0.03l-0.02,-0.02l0.02,-0.0ZM43.58,576.61l0.66,1.48l-2.46,1.26l-0.04,-1.71l1.83,-1.04ZM42.97,587.05l1.52,0.5l-0.57,2.32l-0.91,-1.61l-0.04,-1.22ZM43.46,542.33l-0.02,-0.54l3.49,-1.73l-2.18,1.92l-1.29,0.35ZM46.87,655.68l-0.0,-0.0l0.0,0.0l-0.0,0.0ZM44.85,572.36l0.01,-0.26l1.86,-1.75l-0.47,2.63l-1.39,-0.62ZM45.33,652.85l0.48,-1.03l0.67,0.05l-0.21,1.74l-0.94,-0.76ZM42.7,600.88l1.89,-2.0l1.62,0.26l-2.46,4.01l0.03,-1.71l-1.08,-0.57ZM43.96,597.71l0.09,-1.03l1.12,-0.67l-0.62,1.32l-0.6,0.37ZM43.69,595.14l0.27,-0.49l0.51,0.28l-0.61,0.53l-0.16,-0.32ZM40.64,642.42l1.43,-0.61l-0.76,-0.86l1.66,-0.07l0.6,0.8l-1.0,3.81l-1.93,-3.08ZM41.58,608.24l0.22,-2.76l1.49,-0.67l-0.54,4.43l-1.17,-0.99ZM41.45,575.4l0.26,-1.41l1.63,-1.34l-0.96,3.17l-0.92,-0.42ZM41.25,591.58l0.36,-2.24l0.32,-0.39l0.56,0.41l-1.24,2.22ZM41.52,542.29l0.92,-0.2l0.04,0.0l-0.38,0.77l-0.57,-0.58ZM37.32,560.75l0.55,-1.25l-0.44,-0.75l0.81,-0.37l1.97,4.36l0.94,4.51l-0.92,0.17l0.21,0.68l1.4,1.38l-1.79,1.53l-0.23,1.15l-1.37,-5.61l1.36,-2.66l-2.01,-1.21l0.25,-1.11l-0.75,-0.82ZM38.12,563.82l-0.21,0.15l-0.18,-0.06l0.16,-0.11l0.23,0.02ZM40.09,551.37l0.12,-0.25l0.34,-0.21l-0.2,0.34l-0.26,0.12ZM38.87,583.4l0.33,-2.35l1.34,4.3l-0.73,1.53l-0.95,-3.48ZM39.97,554.02l0.01,-0.26l0.12,-0.15l0.17,0.38l-0.3,0.03ZM39.41,574.37l0.05,-0.86l0.56,2.86l-0.15,0.8l-0.46,-2.8ZM38.81,636.1l0.02,-0.04l0.01,0.01l0.01,0.02l-0.04,0.02ZM36.0,544.84l1.15,-1.7l0.93,0.78l-0.43,0.41l-1.65,0.51ZM33.38,556.4l0.03,-0.04l0.04,0.11l-0.07,-0.07ZM34.97,554.87l2.69,-0.5l0.49,1.68l-0.08,0.84l-1.9,1.13l-0.24,-0.64l1.94,-0.78l0.12,-0.89l-1.57,-0.45l-0.97,1.11l-0.49,-1.49ZM37.19,573.52l0.12,0.1l0.17,0.59l-0.22,-0.31l-0.08,-0.39ZM32.8,562.24l0.45,-0.7l0.45,0.35l2.97,4.84l0.26,5.13l-1.43,-0.5l-0.37,-3.33l-1.63,-2.24l-0.14,-1.69l0.87,-0.41l-1.44,-1.43ZM35.07,560.95l1.21,-0.39l0.7,1.39l-0.5,1.33l-1.42,-2.32ZM34.98,550.97l0.11,-0.11l0.25,0.66l0.06,0.42l-0.02,0.03l-0.41,-0.99ZM9.63,550.74l0.94,-3.63l-1.0,-0.91l0.61,-0.4l-0.14,-1.49l2.18,-1.79l0.84,-1.77l3.53,2.7l-2.1,1.55l-0.15,0.93l4.15,-1.1l0.82,0.23l0.38,2.12l-0.58,2.09l-1.81,0.84l-4.92,-0.51l-0.08,1.66l1.42,0.52l-0.46,1.19l4.46,-0.42l0.44,-1.5l2.06,-1.36l0.52,-2.22l1.91,0.69l2.51,-0.26l-6.35,6.43l-1.95,4.43l-1.3,1.07l-2.45,-0.68l-2.47,0.46l-1.08,-2.8l1.55,-0.1l0.49,1.19l0.99,-0.9l-0.51,-2.05l-1.03,-0.96l0.24,-0.95l-0.65,-1.04l-0.81,0.17l-0.18,-1.41ZM9.63,555.39l-0.19,-0.06l0.1,-0.07l0.09,0.13ZM9.22,560.26l4.7,1.56l3.09,-0.19l-0.5,0.93l0.84,2.28l-1.54,-1.24l-1.76,-0.62l-0.57,0.44l0.18,1.57l1.54,-0.22l1.49,1.66l-0.45,0.79l-1.67,-0.13l-0.97,-1.76l-1.41,0.96l1.13,0.77l-0.98,2.53l0.88,1.12l-0.53,3.05l1.34,1.42l0.26,0.91l-0.47,0.44l-2.35,-4.76l-0.66,-3.28l1.18,1.12l0.51,-1.36l-0.8,-2.18l-1.38,1.18l-0.48,-3.08l1.59,1.01l1.16,-1.6l-3.41,-2.39l0.01,-0.97ZM13.68,576.98l0.77,3.02l-0.35,0.26l-0.72,-0.39l-0.43,-2.31l0.73,-0.59ZM15.02,580.68l0.03,0.01l-0.01,0.03l-0.01,-0.04ZM15.12,581.11l0.09,0.21l-0.08,0.07l0.01,-0.07l-0.02,-0.2ZM16.04,581.92l0.28,0.15l0.16,-0.01l-0.23,0.19l-0.21,-0.33ZM15.54,580.45l0.02,-0.36l0.45,-0.11l0.17,0.59l-0.65,-0.13ZM13.0,576.92l-0.13,-0.08l0.01,-0.05l0.07,0.08l0.04,0.06ZM14.54,571.61l0.03,0.04l0.11,0.01l-0.16,0.04l0.02,-0.08ZM15.25,571.87l0.28,0.01l0.58,-0.26l-0.53,0.92l-0.33,-0.67ZM15.16,583.7l0.03,-0.12l0.17,-0.25l0.1,0.28l-0.3,0.09Z", "name": "British Columbia"}, "yt": {"path": "M99.9,241.74l2.97,2.91l3.27,1.52l3.63,4.87l0.6,7.06l1.7,0.59l0.4,3.07l3.81,6.94l1.36,0.8l1.09,2.36l1.9,0.57l-11.85,21.13l-0.58,1.5l0.84,1.37l-0.55,2.17l-1.23,1.62l-0.36,2.35l-2.22,1.68l-1.26,3.47l14.63,8.28l-0.45,0.78l0.89,3.72l-1.18,1.06l0.09,3.77l-3.88,3.76l1.31,1.97l-0.91,1.75l-1.85,1.06l0.32,1.03l-0.74,1.47l1.78,1.57l2.31,-0.42l1.52,0.54l-1.27,1.1l0.35,1.2l1.31,0.21l2.22,-1.21l0.27,1.26l1.01,0.21l-2.9,1.53l0.78,2.27l-0.08,3.66l-5.53,3.93l-2.43,0.63l-0.27,1.37l1.59,0.51l-0.7,1.31l1.05,1.7l-1.75,0.48l-0.7,1.7l-1.68,0.84l0.08,1.28l1.82,1.02l1.34,2.27l-0.01,2.15l1.22,2.06l-1.67,1.12l-0.4,1.41l1.66,1.01l2.55,-0.73l1.23,1.28l-0.11,4.86l-0.84,0.83l-0.15,1.89l2.25,5.83l1.55,1.63l-1.75,0.01l-0.68,0.79l2.13,2.94l-0.05,2.63l-1.48,1.48l-2.07,0.18l-0.81,0.97l1.31,2.45l-0.28,2.33l1.55,1.11l-2.93,2.76l0.39,4.52l-1.1,1.81l1.21,0.35l1.19,2.39l-1.55,0.62l-0.97,4.11l-1.11,0.79l1.1,1.56l1.98,0.93l0.51,1.51l2.31,-0.36l0.59,5.79l1.09,0.63l-0.38,3.07l0.84,2.24l1.52,2.86l2.17,0.81l0.74,1.3l-0.91,5.2l-1.71,1.78l0.21,1.0l1.02,0.01l-1.32,3.55l0.04,2.37l0.9,-0.15l0.76,1.06l1.68,-0.65l1.88,1.47l1.27,-1.19l1.39,1.75l1.48,-1.19l3.85,3.92l2.18,-0.54l2.61,0.9l1.33,-1.65l1.56,0.69l-0.24,3.02l-2.02,1.63l0.34,4.36l1.61,0.99l-0.73,2.35l0.28,4.82l-0.91,1.18l-52.11,-22.5l-28.56,-14.1l-24.05,-12.91l-23.42,-13.53l-0.11,-1.79l3.21,-3.12l0.08,-1.24l-5.14,-2.7l-3.89,0.93l-2.41,-4.18l-1.66,0.64l-2.54,-3.47l99.42,-158.23ZM110.53,248.98l1.12,-0.26l0.66,1.18l-1.67,0.15l-0.12,-1.07Z", "name": "Yukon"}, "nb": {"path": "M711.42,743.4l4.88,-3.44l1.67,-2.57l-1.15,-6.84l2.7,-0.66l0.09,-1.3l5.1,-1.27l0.53,0.94l3.2,0.99l0.62,-1.14l2.68,-1.28l1.53,0.15l0.32,-1.87l1.78,-0.33l3.5,-2.52l0.93,0.83l6.82,0.46l2.82,4.06l4.5,-4.8l1.26,-0.71l0.41,1.01l2.56,-1.38l-0.51,0.9l1.22,0.58l-0.67,2.74l0.48,4.67l-3.72,5.12l2.64,0.43l3.85,-1.89l0.54,1.22l-0.64,2.18l1.73,2.28l-0.1,1.13l1.88,-0.05l0.76,2.83l1.48,0.9l-0.59,1.93l1.96,-0.46l0.23,1.66l4.02,-0.96l1.4,0.81l2.16,-0.91l2.12,0.21l-2.95,1.52l0.3,1.48l-0.94,0.55l-0.72,2.11l-1.22,-0.13l-0.53,2.15l-1.32,-1.94l-3.9,-2.32l3.2,3.71l-1.03,4.22l-1.71,0.5l-8.21,9.21l-1.85,1.2l-2.25,-0.95l0.9,-1.59l-0.53,-1.41l-2.29,3.0l1.52,1.27l-0.32,0.86l-1.78,0.25l-0.87,2.28l-1.24,-0.74l-1.86,1.85l-1.9,0.31l0.01,-0.72l-1.71,-0.72l-1.2,1.53l-1.8,-1.85l-1.44,2.06l-1.91,-1.39l-1.05,-5.84l-4.88,-0.68l-0.29,-3.7l-5.75,-20.08l-6.62,-3.72l-7.05,4.81l-1.78,-0.76ZM746.71,774.61l-0.04,0.04l-0.08,0.14l-0.05,-0.07l0.17,-0.11ZM759.72,722.42l-0.02,-0.05l-0.0,-0.01l0.06,0.02l-0.04,0.04ZM768.58,746.15l0.01,-0.09l0.03,0.05l-0.05,0.04ZM759.92,720.39l0.52,-0.56l0.81,0.01l-0.55,1.43l-0.78,-0.88ZM760.91,718.13l0.09,-0.3l0.01,-0.4l0.08,0.22l-0.18,0.48ZM748.69,781.87l0.11,-1.21l0.29,-0.8l0.38,1.59l-0.77,0.42Z", "name": "New Brunswick"}, "nl": {"path": "M818.49,689.15l0.02,-0.65l1.55,-2.42l1.38,1.36l-2.94,1.71ZM822.12,687.09l0.09,-0.28l0.2,0.08l-0.18,0.14l-0.11,0.06ZM824.04,685.87l-0.05,-9.48l0.64,0.38l1.82,-0.8l1.87,1.03l2.29,-0.74l-0.5,-0.76l-2.26,0.05l-0.8,-1.03l2.21,-0.76l0.36,-1.83l-1.2,0.28l-0.06,-1.05l-3.24,1.03l-0.72,-2.28l1.19,-3.08l1.98,1.73l-0.15,-1.35l2.27,-0.23l-3.27,-1.53l-0.87,-1.68l0.65,-17.4l2.04,-1.08l-2.31,-0.88l1.93,-2.2l0.89,-2.81l-0.87,-1.18l0.9,-3.28l-0.48,-3.01l6.52,-8.45l0.7,1.99l2.84,-0.55l0.35,-1.06l-1.21,-0.63l1.45,-1.04l0.84,0.68l-0.78,0.93l0.95,0.36l0.12,1.05l-0.92,1.43l-4.26,0.62l-0.95,0.99l0.23,0.79l1.02,0.19l0.13,1.52l1.83,0.78l1.53,-1.81l0.9,1.86l-0.65,0.47l0.31,2.92l-0.78,3.08l-0.82,-2.1l-0.61,-0.28l-0.62,0.97l1.97,3.56l-1.37,3.22l0.66,0.38l-0.55,1.91l-0.98,0.27l0.99,1.57l-0.14,2.05l-1.11,1.58l-0.03,3.77l0.85,1.9l-0.97,1.75l1.61,0.47l0.47,3.3l0.68,-0.49l1.16,-6.05l0.4,-0.71l1.07,0.13l-0.16,-3.28l0.95,-2.77l0.79,0.59l-0.18,3.42l0.93,-0.5l0.35,-1.41l1.06,0.05l-0.0,-1.09l2.77,0.99l2.22,-2.07l-1.66,3.19l-2.66,2.53l-0.74,3.71l0.9,0.17l0.71,-2.13l1.15,-0.64l-0.26,1.38l0.59,0.25l-1.6,3.0l0.53,0.67l2.71,-2.86l2.45,1.63l0.59,-1.21l0.32,0.99l0.71,-0.1l0.19,-1.95l0.79,0.49l-0.13,1.27l2.17,0.02l0.11,-0.88l0.52,1.06l-0.93,2.32l1.03,0.85l-0.22,1.48l2.24,-2.29l-0.65,-0.61l-0.51,0.55l-0.18,-1.15l1.53,-2.5l0.41,1.47l0.7,-1.52l1.67,-0.42l1.17,-5.2l2.42,3.97l0.26,-3.2l1.64,0.58l1.0,-2.39l1.68,-0.45l5.77,0.89l-0.64,2.87l0.81,0.8l-2.57,1.5l-0.11,1.54l0.91,0.29l-1.15,0.8l0.16,1.13l-1.86,1.47l0.58,1.24l1.42,-1.37l0.14,0.84l1.0,0.06l1.38,1.5l-0.02,1.59l1.84,-0.67l-2.93,2.73l-0.16,1.46l0.67,0.47l2.12,-2.82l0.83,1.31l0.65,-1.99l2.06,-0.03l0.87,-2.6l-0.28,-1.66l2.47,0.79l0.94,-3.37l0.86,0.76l0.31,2.82l-0.8,1.71l-2.03,0.34l0.22,1.79l-1.79,3.06l-3.22,0.02l-0.41,1.32l1.35,1.88l2.18,-0.61l-1.93,0.8l0.21,0.92l1.9,-0.22l1.18,-1.04l-0.06,1.61l-1.04,0.83l0.85,0.23l0.02,1.22l-1.26,-0.75l-0.84,0.55l2.04,2.42l3.09,1.38l0.28,0.85l1.71,-1.1l-0.83,-3.75l0.52,-5.24l1.91,-1.36l0.72,-2.61l0.43,0.3l-1.04,7.55l0.77,1.14l-0.42,1.63l0.51,0.96l0.88,-0.04l0.66,1.71l1.03,0.06l1.96,-4.0l-0.45,-3.72l1.84,1.57l0.18,1.36l1.14,0.61l-0.5,3.74l0.6,3.82l-0.59,0.45l1.18,0.95l0.77,4.09l-0.98,3.43l-1.51,-1.06l-1.64,0.27l-1.5,2.87l-1.09,-2.43l0.65,-2.17l-1.23,-1.29l-1.09,-0.0l0.54,-2.43l-1.62,-1.32l-2.29,7.81l-0.69,1.14l-1.16,0.24l-0.62,-6.94l0.67,-0.26l-0.92,-0.96l1.1,-3.35l-1.4,0.01l-0.71,-2.4l-3.07,-3.37l-1.38,-0.56l-0.33,0.87l-1.83,-0.48l-0.28,0.71l0.99,0.27l0.23,1.41l-0.7,1.6l0.37,1.7l-0.69,0.17l-0.99,4.53l-0.72,0.7l-0.95,-0.72l-0.75,0.59l-1.68,5.5l1.08,1.66l-1.06,0.18l0.45,2.57l-1.17,0.7l-0.02,0.81l-1.87,-0.71l-1.27,2.06l-1.9,0.6l-1.62,-0.42l0.46,-2.28l3.89,-2.8l1.31,-3.14l-0.02,-3.56l2.27,-1.82l1.78,-4.22l-1.59,0.08l-2.16,2.36l-0.07,-3.54l-0.96,3.25l-2.76,0.48l-0.96,-0.77l-0.73,0.71l0.13,1.83l1.21,0.81l0.24,1.37l-1.1,0.92l-0.26,-0.99l-1.08,-0.43l-0.8,1.48l-0.85,-1.66l1.28,-1.85l-0.83,-0.14l-1.53,1.71l-0.77,-0.1l0.26,-4.71l-1.06,-0.99l-0.16,3.43l-1.49,2.1l-0.11,-1.33l-0.54,0.35l-1.26,-0.92l0.77,2.76l-0.54,1.27l-1.32,-1.89l0.31,2.6l-4.86,1.56l0.52,1.58l-2.48,-0.05l-1.5,0.92l-0.74,-0.93l-1.47,1.43l-0.63,-0.85l-2.38,0.77l-0.77,1.11l-1.38,-0.43l-0.81,0.72l-1.26,-0.76l-3.66,2.09l-0.87,0.03l0.41,-1.32l-0.5,-0.16l-1.15,0.85l-0.09,1.71l-1.35,0.05l-1.6,1.8l-5.51,2.43l-3.59,-4.46l3.45,-5.51l1.99,-5.3l3.51,-4.35l-0.91,-0.21l-2.2,1.3l-1.98,-0.14ZM875.12,662.32l0.01,-0.05l0.03,0.05l-0.04,0.0ZM877.63,662.89l0.01,0.0l-0.0,0.01l-0.0,-0.01ZM877.65,663.11l0.18,0.25l-0.68,1.05l-0.32,0.16l0.81,-1.47ZM877.92,687.63l0.03,0.05l-0.01,0.02l-0.03,0.0l0.01,-0.07ZM861.05,691.78l-0.07,0.12l-0.12,0.06l0.18,-0.19ZM860.08,692.69l-0.48,0.59l-0.29,-0.1l0.05,-0.05l0.72,-0.44ZM879.4,666.53l0.09,-0.58l0.24,-0.6l0.19,0.13l-0.51,1.05ZM875.09,662.18l-0.1,-0.13l0.04,0.02l0.06,0.11ZM856.71,657.24l-0.75,-1.19l0.65,-0.66l0.34,0.61l-0.23,1.24ZM855.59,655.75l-0.04,-0.03l0.02,-0.02l0.02,0.05ZM854.12,657.33l0.0,-0.25l0.09,-0.07l-0.09,0.32ZM880.23,672.13l2.14,-0.42l1.19,-1.04l0.07,0.96l-3.4,0.5ZM880.31,686.28l0.4,-1.02l-0.02,0.87l-0.39,0.14ZM880.62,683.42l-0.08,-0.03l0.05,-0.13l0.03,0.16ZM865.38,648.2l1.06,0.13l0.06,-1.23l0.98,0.8l-1.68,2.0l-0.43,-1.69ZM859.69,653.01l0.19,-0.17l0.32,0.44l-0.25,-0.18l-0.25,-0.09ZM860.58,653.35l0.24,-0.05l0.02,0.23l-0.08,0.03l-0.18,-0.21ZM861.92,651.98l-0.05,-0.37l0.49,-0.4l0.03,0.24l-0.48,0.53ZM862.01,654.58l0.02,0.04l-0.01,0.11l-0.04,-0.08l0.03,-0.06ZM859.27,690.37l0.8,-0.58l0.4,0.51l-0.91,0.12l-0.29,-0.05ZM850.53,655.89l0.16,0.11l-0.16,0.24l-0.04,-0.3l0.04,-0.05ZM850.64,657.23l0.03,-0.01l-0.01,0.06l-0.01,-0.05ZM843.72,636.73l0.01,-0.34l0.77,-0.76l-0.18,0.87l-0.6,0.23ZM838.14,616.17l0.06,-0.8l0.21,-0.21l-0.04,0.83l-0.22,0.19ZM695.98,500.41l0.18,0.94l1.28,-1.03l0.89,0.17l-0.49,0.97l0.49,0.51l1.04,-0.8l-0.45,1.69l-1.25,-1.45l-1.19,0.27l-0.74,-0.45l0.23,-0.83ZM697.79,503.53l-0.02,0.02l-0.01,-0.01l0.03,-0.01ZM697.64,505.65l1.21,-1.47l1.28,-0.58l-1.17,1.01l1.54,0.5l-0.46,1.78l1.72,-1.6l0.96,0.23l-0.44,0.91l0.94,0.13l0.19,0.94l-0.54,1.1l1.68,1.31l1.18,-0.26l0.02,3.21l0.84,-2.29l0.23,1.88l0.69,0.1l0.53,-1.32l1.06,0.32l-0.12,1.5l-2.03,0.86l-0.08,1.13l3.15,-0.37l-0.39,1.97l0.59,0.39l1.72,-2.67l-0.32,2.47l1.1,0.04l0.63,-0.88l0.72,0.85l-2.24,2.64l-2.49,0.28l-0.46,1.71l1.19,-0.29l1.34,1.07l-0.23,-1.4l2.96,-0.87l1.44,-1.67l0.57,0.35l-0.78,0.64l1.02,0.38l0.03,1.4l1.0,-0.21l-0.78,1.74l2.04,0.19l0.51,-1.11l1.44,0.52l-0.71,1.87l2.06,0.47l-2.1,3.43l-2.7,0.75l-0.46,1.24l1.75,-0.45l-1.47,3.18l0.46,0.75l2.4,-3.97l1.0,-0.4l-0.29,1.33l0.62,0.69l0.61,-1.65l3.89,-2.46l-0.44,1.25l0.84,1.88l-2.01,1.41l0.22,1.67l-1.45,0.73l0.32,0.82l-1.25,1.46l0.46,0.55l-1.25,1.18l0.44,0.58l2.18,-1.12l1.11,-2.84l3.0,-1.1l1.22,1.28l0.4,-0.76l0.95,0.44l-1.65,0.65l-0.96,2.27l1.99,-1.2l1.31,1.64l1.0,-1.67l0.97,-0.03l0.02,-0.85l0.69,2.75l1.36,0.21l1.74,1.86l-1.38,1.23l-0.03,0.93l-1.56,0.45l-0.27,1.54l-2.01,-0.32l-0.06,0.88l2.15,0.88l2.0,-1.35l2.59,0.11l0.7,1.91l-0.99,0.53l0.14,0.95l2.83,0.91l3.06,-0.99l1.01,0.4l0.47,1.67l-1.35,0.99l-0.33,2.98l-2.27,1.06l0.26,2.44l-4.73,-0.44l3.45,-1.47l-0.57,-0.9l-4.31,1.04l-0.71,1.4l0.36,0.64l5.06,0.99l-0.89,0.22l0.17,0.9l5.89,-0.44l-3.97,1.63l0.0,1.56l3.06,-0.22l0.93,0.79l-2.47,0.9l-0.17,1.07l2.07,0.91l5.38,-1.88l0.35,1.69l-0.68,2.36l1.47,0.69l2.6,-1.03l0.58,0.38l-0.91,1.14l1.33,0.47l3.43,-1.17l-0.22,1.19l-1.47,0.65l0.77,0.93l1.92,-0.77l0.6,-1.24l0.98,4.06l0.76,-1.77l-0.15,-3.1l1.12,0.13l-0.84,3.45l1.26,-0.6l0.01,1.78l0.89,0.11l-0.27,2.61l1.02,-0.07l-1.18,3.59l0.63,0.48l0.6,-0.86l-1.21,2.98l0.49,1.28l3.47,-6.14l0.23,0.96l0.8,-0.89l-1.12,3.19l0.8,0.87l2.91,-6.78l0.73,1.37l-1.85,1.52l0.31,1.13l2.05,-0.32l2.32,-1.98l0.58,0.28l-2.41,5.52l0.29,3.02l1.46,-1.28l-0.4,-1.77l2.11,-3.94l1.35,0.79l2.26,-3.74l0.21,2.07l1.58,0.35l-0.61,1.5l1.66,0.68l5.65,0.03l0.38,-1.14l1.25,-0.48l0.78,0.67l1.95,-0.14l1.19,-0.94l2.32,1.16l2.02,-1.08l0.99,0.79l0.48,1.14l-2.84,1.38l0.43,0.75l1.46,-0.47l-0.65,1.12l-5.22,2.32l-0.63,1.34l0.44,0.77l-3.95,3.54l-8.17,4.8l0.02,0.77l1.19,0.5l4.37,-2.64l1.08,0.42l-4.24,4.4l-3.76,0.96l-0.33,1.08l-1.99,0.98l-0.44,0.59l1.0,0.76l0.75,2.72l-9.59,-2.25l0.24,2.79l3.26,-0.69l6.62,1.59l-2.62,2.85l0.38,0.99l1.55,-0.45l-1.56,1.55l3.83,-1.13l-0.17,-1.13l2.33,-3.51l-0.19,-0.73l2.55,-1.52l1.37,-2.76l2.28,-1.08l0.45,-1.73l-0.83,-0.68l1.23,-2.95l6.14,-5.14l3.25,-0.59l0.5,-0.7l-0.75,-0.57l-2.52,0.21l-1.58,0.38l-0.93,1.24l-0.95,-0.28l1.37,-1.89l8.21,-1.63l3.58,4.01l1.26,0.49l0.19,1.3l-3.07,4.15l2.41,-0.36l0.55,2.8l1.35,-0.49l1.29,-6.18l2.41,-1.22l0.54,0.16l-0.83,0.48l0.48,0.53l4.11,-0.47l3.9,1.29l0.98,1.79l1.33,-0.9l0.39,1.44l0.81,-0.21l0.24,1.44l1.23,0.68l-1.72,1.23l0.93,0.4l-0.08,0.69l-2.54,1.2l1.26,1.15l1.97,-1.07l1.65,1.48l-3.37,2.2l3.17,1.61l-1.49,0.4l-0.08,0.83l1.44,-0.22l-1.61,1.71l-3.51,0.6l1.1,0.54l6.54,-1.37l2.3,0.38l0.34,0.7l-1.48,0.14l-0.04,0.72l-3.99,-0.27l-0.53,0.74l5.51,1.03l1.88,2.39l-0.87,0.56l0.29,1.1l-1.42,0.52l0.83,1.52l-2.14,3.49l-3.89,4.33l-0.58,3.39l-1.14,0.3l0.15,1.24l-0.9,0.28l-4.06,-9.59l-35.42,12.67l-33.81,10.74l-2.68,-5.23l-2.2,0.09l-0.59,-1.58l-1.29,0.17l1.45,-2.72l4.48,-1.81l0.57,-0.88l-2.9,-1.63l-0.29,-2.93l-1.86,-2.41l-1.73,-0.29l-1.8,1.2l0.41,3.96l-1.42,0.33l-0.67,1.47l1.29,5.09l2.22,2.68l0.71,3.75l-1.29,0.7l0.01,3.15l0.4,2.47l1.35,1.35l-2.11,3.15l-1.95,-2.06l1.05,-1.0l-0.33,-1.03l-3.13,-0.86l-0.59,-1.61l-3.59,-1.9l-4.28,0.45l-0.57,3.04l-2.11,-0.54l-0.52,1.3l-0.89,0.16l-1.53,-0.59l-0.78,-1.85l-1.06,0.18l-1.91,-1.18l-0.45,2.74l-1.16,-2.28l0.83,-1.83l-2.01,-4.67l0.87,-0.55l-0.93,-1.92l0.88,-1.26l-2.81,-2.38l-0.91,0.2l-0.09,1.73l-1.26,0.55l0.76,3.73l-0.98,0.86l-1.09,-0.9l-0.21,1.03l-1.4,0.2l-0.91,-4.06l0.68,-1.6l-0.9,-2.96l0.26,-2.71l-1.26,-1.15l-0.86,0.17l-1.81,-2.41l-3.62,-0.16l-0.29,-3.34l-1.83,-0.72l-2.75,-2.7l2.24,-3.96l-2.6,-4.05l-0.09,-1.49l3.25,0.49l0.49,-2.11l1.82,-0.97l-3.52,-2.36l0.1,-1.01l-1.14,-0.61l-1.56,-2.75l0.86,-0.27l0.18,1.13l3.3,1.27l1.43,1.53l3.08,0.4l0.79,-1.96l-1.85,-2.05l0.48,-0.97l-1.58,-1.83l-0.08,-2.45l0.69,-0.18l4.58,3.66l2.6,0.96l1.8,-0.47l0.76,1.43l2.31,1.56l2.28,-1.23l3.59,-0.04l3.18,-1.96l2.33,-0.06l1.95,-1.24l4.14,1.0l3.13,-0.13l0.99,-1.46l0.28,-6.6l-1.76,-1.27l-0.09,-2.24l2.63,-2.42l0.69,-1.59l-1.15,-1.09l-0.49,-2.23l-1.64,0.4l-1.75,-0.81l-0.86,-1.5l-2.93,-1.97l-0.34,-1.36l1.88,-1.76l-0.06,-0.97l-3.85,0.65l-0.96,-1.24l-1.12,1.1l0.72,-2.63l-2.83,-0.66l-0.52,-1.79l2.29,-1.28l-3.87,-4.11l0.81,-1.49l-0.33,-1.27l1.11,-1.04l-0.99,-3.15l0.35,-3.55l-1.39,-1.2l0.94,-1.54l-1.51,-3.16l0.92,-1.94l-0.25,-1.73l-0.87,-0.13l-0.39,1.06l-1.7,-0.19l-0.95,-1.15l-1.25,0.53l-2.5,-3.96l-2.15,-0.07l-0.15,-1.73l1.45,-1.45l-0.1,-2.05l2.55,-3.36l-1.33,-1.84l-1.65,0.83l-0.35,-1.74l4.52,-2.28l0.35,-1.35l-1.4,-1.26l-1.94,-0.37l-3.33,3.5l-2.0,-2.0l-2.56,0.63l-1.66,-0.61l-0.97,0.85l0.19,-2.23l3.27,0.69l1.51,-1.43l-1.03,-1.09l-1.22,-0.08l-0.99,-1.57l-0.88,-4.18l1.03,-1.31l-0.19,-0.83l-1.49,-0.14l-1.77,2.04l-1.26,-1.1l-1.18,-5.04l0.86,-2.18l-1.56,-0.93ZM749.39,644.84l-0.21,0.06l-0.38,-0.16l0.32,0.07l0.27,0.03ZM827.51,605.61l1.17,-0.58l0.2,0.18l-0.76,0.65l-0.62,-0.26ZM813.84,589.92l0.16,-0.56l0.67,-0.26l0.12,0.19l-0.94,0.63ZM742.74,556.87l0.27,-0.15l1.16,0.42l-1.11,0.28l-0.32,-0.55ZM743.03,556.07l0.11,-0.16l0.77,-0.05l-0.64,0.05l-0.24,0.16ZM724.98,532.85l0.14,-0.75l1.74,-0.61l-0.23,0.87l-1.66,0.49ZM716.17,518.63l0.26,-0.13l0.06,0.04l-0.32,0.09ZM701.93,503.54l-0.06,0.03l-0.14,-0.01l0.19,-0.05l0.02,0.03ZM746.29,561.73l1.29,-0.12l1.03,-0.44l-0.04,0.65l-2.29,-0.08ZM765.01,574.66l-0.09,-0.09l0.07,-0.12l0.12,0.1l-0.09,0.11ZM766.08,573.43l-0.2,-0.4l-0.0,-0.06l0.04,0.0l0.17,0.46ZM777.41,577.24l0.21,-2.19l0.71,0.01l-0.44,0.65l-0.49,1.53ZM787.98,592.89l2.02,-1.46l1.55,-1.88l-1.08,2.63l-2.49,0.7ZM779.43,607.25l0.03,-0.02l0.01,0.02l-0.04,0.0ZM820.59,590.96l0.0,0.0l-0.0,0.0l-0.0,-0.01ZM701.83,596.32l-0.57,-0.35l-0.42,-0.33l0.73,0.21l0.27,0.47ZM790.47,576.88l1.36,-1.34l0.67,1.44l-1.32,0.73l-0.72,-0.82ZM757.36,567.04l0.54,-0.08l0.35,0.26l-0.22,0.16l-0.67,-0.34ZM753.28,565.8l0.47,-1.29l1.15,0.24l-0.22,1.07l-1.41,-0.01ZM748.69,558.87l-0.2,-0.17l0.27,-0.02l-0.08,0.19ZM747.92,558.58l-0.96,0.19l-0.02,-0.12l0.73,-0.16l0.26,0.09ZM750.02,555.78l0.08,-0.3l0.2,-0.06l0.02,0.17l-0.3,0.18ZM744.65,553.12l0.64,-1.81l0.75,0.24l0.31,1.02l-0.83,0.06l-0.53,1.29l-0.35,-0.8ZM745.49,555.18l1.39,-0.96l0.4,1.98l-1.15,-0.57l-0.64,-0.45ZM739.53,542.37l0.1,-0.7l0.05,-0.02l0.14,0.64l-0.29,0.08ZM737.08,536.88l0.54,-0.31l0.66,1.05l-0.18,0.15l-1.02,-0.9ZM736.98,542.04l0.94,-0.75l0.6,0.38l-0.67,1.26l-0.88,-0.88ZM734.56,536.7l0.49,-1.0l0.84,0.73l-0.23,0.65l-1.11,-0.37ZM704.5,508.32l0.25,-0.58l0.82,0.14l-0.81,0.77l-0.26,-0.33ZM704.47,507.42l-0.04,-0.66l0.08,0.11l-0.04,0.55Z", "name": "Newfoundland and Labrador"}, "on": {"path": "M399.41,727.97l3.25,-56.87l17.49,-16.02l50.18,-56.7l5.89,5.74l3.34,1.59l4.16,6.66l0.07,1.64l0.93,-0.9l1.53,0.7l0.47,1.09l3.72,0.22l7.51,3.34l3.52,0.63l3.74,2.18l0.82,1.61l2.04,1.5l1.96,0.55l-2.57,4.18l-0.2,2.26l0.59,0.29l3.0,-5.44l5.1,0.47l3.97,-1.2l1.6,0.26l1.47,-0.99l2.08,1.72l1.21,-0.17l0.56,1.64l0.68,-0.28l-0.38,-1.87l3.93,0.68l1.97,-0.84l0.22,2.18l3.44,-1.25l3.66,1.53l1.13,3.89l-1.85,8.94l0.54,3.1l0.67,1.51l1.45,0.82l1.61,4.42l-0.68,3.75l1.63,5.71l-1.29,1.28l-0.03,5.11l2.94,1.95l1.54,2.72l4.34,3.83l0.32,1.88l-2.77,1.36l-0.69,1.37l0.67,0.57l1.21,-0.98l2.42,-0.18l1.79,2.17l4.34,1.42l0.88,1.66l3.87,3.05l2.5,5.84l-2.02,1.29l-3.65,4.63l-0.29,0.63l0.81,0.81l6.1,-6.51l4.45,1.01l5.72,4.84l7.01,59.69l-0.5,2.75l2.01,3.02l0.61,3.39l7.32,9.7l3.52,2.67l9.71,0.57l5.65,1.33l2.13,1.35l1.34,2.16l2.97,1.37l1.25,-0.14l0.13,-1.76l0.79,-0.05l2.75,4.99l4.05,1.38l2.76,-1.35l3.47,1.9l1.37,-0.21l1.06,-1.56l4.54,-2.65l7.43,-2.67l2.95,0.8l-0.25,4.37l1.74,1.53l-3.52,4.2l-2.35,0.3l-4.22,3.29l-7.43,9.8l-10.39,5.66l-1.99,-0.83l-2.14,1.15l-0.78,-0.34l-4.0,1.92l0.07,1.37l-17.36,5.52l-4.64,4.39l-1.39,0.28l-1.48,1.77l-1.77,4.33l0.19,1.1l2.64,1.18l3.48,0.07l3.08,-1.79l0.22,3.11l1.89,2.65l-1.64,0.78l-7.98,0.75l-5.89,1.98l-2.79,2.58l-0.45,1.65l-6.1,-1.03l-5.59,0.87l-2.51,1.82l-4.56,5.7l-1.8,0.33l-3.67,2.49l-1.52,2.88l-1.92,-1.04l-3.18,1.24l-2.5,-1.04l0.23,-3.72l1.37,-0.67l4.23,0.23l2.75,-0.95l0.02,-3.2l-2.7,-0.36l1.3,-1.87l0.73,-6.43l3.62,-1.93l4.0,-4.29l0.8,-2.06l-1.43,-11.81l1.34,-2.3l0.15,-2.05l2.09,-2.07l1.49,-3.89l-1.97,-6.43l-0.93,-0.06l-1.89,-2.92l-1.62,-0.74l4.39,-0.17l-0.43,1.17l1.19,2.97l1.72,0.67l0.31,0.93l1.26,-0.3l-1.24,2.92l2.85,-0.84l-0.2,3.37l0.73,0.14l2.66,-2.55l1.29,1.87l6.61,1.78l1.27,-1.38l-0.05,-2.95l-1.76,-1.81l1.5,-0.96l1.11,1.62l2.82,-0.09l0.25,-0.64l-0.74,-0.46l0.13,-1.8l-1.13,0.57l-3.99,-3.64l0.8,-1.08l-1.71,-1.33l0.92,-1.39l-0.63,-1.56l-1.34,-0.3l-1.54,0.95l-0.23,-1.09l-0.96,-0.31l-0.56,-2.76l-0.71,-0.28l-0.59,0.8l-3.52,-5.53l-1.01,-0.63l-4.1,0.66l-0.5,-1.26l-1.21,0.97l-2.42,-0.2l-1.04,-1.77l-1.21,-0.45l-0.72,0.76l-5.92,-0.16l-2.09,-1.06l-3.46,0.67l-0.44,-0.8l-4.14,1.13l-13.09,-1.81l-0.69,-0.77l0.39,-1.86l-1.1,-1.15l-4.5,1.29l-0.77,-0.76l1.82,-2.92l-0.71,-1.01l-0.82,0.15l-0.03,-0.85l1.61,-0.14l0.62,-1.12l-1.42,-1.43l-2.26,0.46l-1.63,-0.89l2.09,-5.6l-1.97,-2.61l-3.59,-2.57l1.63,-6.41l-1.36,-0.45l-7.14,1.19l-3.76,-0.81l-2.62,-2.95l-2.62,-7.54l-2.35,-3.41l-1.68,0.65l-1.66,-1.25l-1.76,1.04l-1.54,-0.93l-3.38,0.86l-3.47,-1.85l-4.37,-1.08l-1.54,-1.38l-2.91,1.14l0.18,1.94l1.8,1.59l-0.71,2.41l-1.35,-0.31l0.4,-1.68l-0.64,-1.58l-2.01,-0.19l-2.9,8.53l-1.08,0.6l1.44,-3.51l-0.47,-0.9l-5.21,2.26l-1.88,6.26l-2.82,2.11l-3.67,0.23l-2.51,-2.31l-7.44,0.52l-1.66,-2.7l-6.62,3.42l-2.89,-1.08l-0.63,-1.46l-2.68,-1.03l-1.32,-2.1l-2.73,0.25l-0.76,1.87l-1.31,-3.75l-2.46,-0.29l1.07,-0.69l-0.3,-0.8l-4.08,-1.73l-5.02,-0.14l-1.38,1.25l-3.01,0.33l-1.09,-2.11l-4.32,-0.55l-0.74,-1.12l-3.39,-0.37l-1.14,-1.77l1.38,-1.44l1.69,-0.49l1.73,-2.47l1.71,0.52l1.37,-1.02l0.67,-0.78l-0.75,-0.53l0.85,-2.93l-1.34,-1.05l0.67,-0.77l-3.37,-2.07l0.99,0.2l0.42,-0.61l-0.89,-0.66l0.73,-0.77l-0.67,-1.05l-1.42,-0.26l-0.97,-2.13l0.36,-1.57l-1.02,-1.13l-1.24,0.08l-0.58,0.92l1.46,2.37l0.06,1.75l-2.78,0.05l-1.13,1.44l-2.32,-0.86ZM469.67,728.45l1.67,1.42l0.23,1.55l-0.99,-0.96l-0.76,0.55l1.51,2.45l1.84,-1.22l-0.46,0.66l0.7,1.13l1.89,0.59l0.94,-0.84l1.18,1.62l1.63,-1.99l2.16,0.98l-0.37,-3.25l0.77,-1.47l-0.58,-2.28l0.44,-2.16l1.11,-0.99l-2.32,-1.72l0.65,-1.03l-0.82,-2.07l-2.54,-1.64l-1.61,1.18l-1.01,-0.84l-0.98,0.31l-1.54,1.57l-0.43,2.25l-1.04,0.41l0.93,2.15l-1.34,0.8l0.2,1.59l-0.37,-1.2l-0.84,-0.03l-0.43,1.8l0.54,0.71ZM540.56,627.39l-0.07,-0.12l0.08,-0.1l0.01,0.04l-0.02,0.17ZM625.48,816.5l-0.88,0.97l-0.47,0.08l0.55,-0.74l0.8,-0.31ZM617.32,819.18l1.96,-1.47l1.51,0.73l0.49,-0.98l1.66,-0.66l-0.41,1.69l0.39,0.57l1.51,-0.3l-0.58,1.21l0.49,0.7l-1.15,0.87l-0.53,-0.19l0.23,-1.4l-4.11,0.62l-1.47,-1.38ZM624.91,820.35l0.01,-0.01l0.01,0.0l-0.02,0.01ZM478.49,748.07l0.15,0.64l-0.97,0.3l0.81,-0.95ZM477.13,749.61l-0.41,0.47l-0.16,0.72l0.06,-0.73l0.51,-0.46ZM472.6,753.18l-0.12,0.04l-0.06,0.0l0.02,-0.03l0.16,-0.01ZM409.98,736.99l-1.24,-1.83l-2.23,0.71l-0.95,-1.1l0.31,-0.87l-2.37,-0.23l0.19,-0.55l5.22,-0.85l-0.85,1.31l0.47,0.65l0.86,-0.42l-0.01,1.28l1.48,0.84l-0.87,1.06ZM401.76,728.88l0.69,0.17l-0.45,0.55l-0.32,-0.09l0.08,-0.64ZM631.42,815.59l-0.13,-0.74l0.55,-0.02l-0.02,0.39l-0.4,0.37ZM627.23,816.23l0.77,-0.4l0.07,-0.04l-0.2,0.32l-0.64,0.12ZM581.85,801.71l0.01,-0.5l0.57,0.08l-0.37,0.17l-0.21,0.24ZM582.47,809.41l0.08,-0.02l-0.03,0.08l-0.05,-0.05ZM575.9,692.07l1.12,-1.08l0.85,7.34l-1.99,-2.2l0.02,-4.05ZM543.99,793.29l0.64,0.68l2.98,-1.21l0.99,2.07l2.33,0.02l0.5,0.81l-7.92,-1.58l0.49,-0.78ZM551.7,795.68l0.77,-1.33l-0.92,-0.74l1.53,-1.12l1.04,-0.37l2.14,2.32l2.38,-2.74l0.44,1.27l1.05,0.28l-0.19,1.49l1.03,1.14l-2.87,2.6l-6.4,-2.79ZM561.3,795.7l0.14,-1.12l0.31,-0.89l0.37,-0.6l-0.5,1.08l1.39,0.74l-2.12,3.83l-0.59,0.22l1.7,-2.36l-0.71,-0.91ZM561.37,800.05l0.39,-0.41l0.14,-0.07l-0.3,0.46l-0.22,0.02ZM559.04,790.43l0.46,-0.13l0.58,0.12l-0.77,0.13l-0.27,-0.12ZM549.74,793.07l0.11,-0.31l0.76,-0.12l-0.14,0.32l-0.72,0.11ZM540.29,794.07l1.01,-1.22l0.82,0.55l-0.61,1.12l-1.21,-0.46ZM532.17,788.03l1.6,-0.01l1.59,1.01l-1.21,2.0l-1.98,-3.01ZM508.33,763.17l0.76,-0.68l2.4,0.26l-0.97,0.41l-2.18,0.01ZM486.08,744.61l0.14,-0.01l0.53,0.92l-0.33,0.04l-0.33,-0.95ZM482.03,744.94l1.2,-0.66l1.87,0.08l-0.46,1.02l-2.38,0.75l-0.23,-1.19ZM477.93,719.83l0.17,-0.01l0.17,0.44l-0.2,-0.06l-0.14,-0.37ZM478.55,720.5l0.14,0.03l0.06,0.19l-0.05,-0.01l-0.14,-0.21ZM475.07,730.34l0.17,-0.01l0.06,0.15l-0.14,-0.1l-0.09,-0.04ZM475.4,723.45l-0.02,-0.28l0.1,0.01l-0.07,0.24l-0.01,0.03ZM474.42,725.62l0.1,0.02l0.16,0.3l-0.46,-0.02l0.2,-0.3ZM469.69,755.38l0.19,-0.22l0.17,-0.01l-0.36,0.22ZM403.6,737.46l0.64,-0.37l0.83,0.44l-1.23,0.69l-0.24,-0.77ZM406.38,737.1l0.0,-0.01l0.02,-0.07l0.01,0.08l-0.04,-0.0ZM405.0,739.21l0.5,-0.36l0.12,0.28l-0.18,0.39l-0.43,-0.3ZM399.11,732.44l1.97,-0.65l0.88,-0.67l-0.87,1.65l-1.81,0.48l-0.16,-0.81ZM402.77,730.48l1.11,-1.11l0.95,-0.18l-0.74,1.0l-1.33,0.3Z", "name": "Ontario"}, "ab": {"path": "M139.57,606.56l0.37,-1.05l1.18,0.57l0.81,-0.56l-1.58,-4.38l37.33,-108.91l45.27,14.12l45.98,11.63l-2.72,12.15l-4.26,2.55l-1.83,0.1l-4.59,4.95l-1.83,0.73l-0.86,-1.64l-1.67,0.79l1.38,3.5l-0.16,1.93l0.92,0.24l1.46,-1.94l-0.31,2.62l0.56,0.52l1.32,-1.15l0.14,-1.43l3.55,0.95l0.97,-1.38l-0.73,-1.28l4.31,-2.81l-39.85,178.15l-45.48,-11.24l-0.72,-2.98l-2.23,-1.66l0.23,-0.86l-1.58,-2.96l0.8,-2.77l-1.71,-1.0l2.24,-2.87l-0.07,-2.44l1.05,-2.7l0.11,-5.55l-1.47,-4.33l-1.24,-1.02l-1.26,0.24l-0.4,-3.13l-2.69,-3.15l0.84,-0.16l-0.02,-1.71l-1.31,-2.54l-1.92,-1.32l-0.11,-2.34l-1.88,-1.98l0.3,-2.47l-2.03,-4.3l-0.2,-3.14l-1.26,-0.33l-1.4,1.25l-0.62,-0.25l-0.14,-3.71l-1.62,-3.01l0.14,-2.56l-3.37,-0.27l-1.21,-1.61l-0.28,-1.09l1.58,-1.91l-2.46,-2.86l-1.36,1.2l-1.4,-0.1l0.7,-1.26l-0.7,-2.97l0.77,-0.81l-0.3,-3.43l-0.53,-1.4l-1.3,-0.18l0.31,-2.51l-1.07,-3.42l-1.29,-1.58l-1.31,1.23l-1.63,-1.38l-0.34,-3.23l-2.89,-1.04l-1.44,-3.37Z", "name": "Alberta"} }});
Index: public/vendors/vmap/maps/jquery.vmap.croatia.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.croatia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.croatia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+﻿$.fn.vectorMap("addMap","croatia",{insets:[{width:900,top:0,height:804.9967209703165,bbox:[{y:-5593673.991091945,x:1502415.0468362367},{y:-5001378.619193797,x:2164611.327668031}],left:0}],paths:{"hr-ob":{path:"M665.24,144.46l1.59,-0.94l9.9,-0.11l4.17,-1.18l2.45,3.31l4.5,1.63l5.28,0.68l2.05,-0.08l8.22,-4.46l3.56,1.7l7.19,-0.66l3.88,4.82l14.9,2.06l4.41,-2.98l3.07,0.35l3.21,3.52l3.05,0.25l6.3,-2.13l3.56,-6.02l1.31,-0.69l4.07,2.25l5.28,-3.3l2.6,-0.37l0.07,-0.78l-1.91,-0.62l5.14,-3.06l4.17,-9.6l2.05,0.46l3.36,-5.15l6.7,-1.69l2.83,0.36l3.69,1.24l6.55,3.97l2.17,-1.19l0.2,-1.15l1.02,2.03l4.29,3.32l-1.44,7.82l6.42,9.14l2.07,10.68l8.1,5.08l0.43,1.76l-1.4,2.97l-3.53,4.1l-4.05,2.42l1.16,3.66l-1.95,3.54l0.52,2.49l5.27,5.76l2.52,0.67l4.79,-0.69l2.95,-4.06l2.76,-0.23l0.95,3.78l10.56,3.57l0.1,3.63l-2.44,2.54l-2.48,0.48l-2.6,0.11l-5.47,-1.87l-1.45,2.16l-0.97,6.49l2.11,3.04l-4.28,-0.53l-2.98,1.18l-0.29,-2.05l-3.14,-2.63l-1.65,-3.16l-3.98,-2.23l-2.58,-0.12l-2.91,0.61l-1.39,2.48l-3.21,1.47l-4.27,0.42l1.05,1.89l-2.37,3.1l1.84,2.43l-0.3,1.9l-3.53,1.04l-0.88,-1.67l-3.18,-0.59l-5.2,1.02l-5.11,2.96l-5.25,0.27l-0.54,1.21l0.76,5.76l-4.63,1.48l2.78,5.74l-6.67,-0.46l-3.18,3.89l-4.71,-0.94l-4.61,2.58l0.51,6.61l-1.07,2.23l1.96,2.07l2.49,0.09l-1.06,3.05l-1.92,0.96l-2.36,-0.86l-3.03,0.92l-2.01,-1.7l-3.15,0.53l-3.09,-2.29l-4.34,-0.82l-1.46,-2.09l-4.5,-1.41l-8.18,0.27l-5.38,3.32l-4.45,0.74l-1.83,1.36l-4.67,-2.07l-2.23,-3.03l-5.39,-0.71l-1.07,-1.54l-5.28,-0.28l-4.5,-1.91l6.29,-6.74l-3.47,-5.97l-2.87,-1.35l1.18,-1.55l3.95,-1.51l1.22,-1.41l0.04,-2.16l-2.99,-3.67l-10.16,0.18l-1.99,-3.57l-4.33,0.4l-7.63,-6.32l-5.25,-0.22l-2.66,-1.7l1.45,-3.34l7.38,-3.63l2.24,-5.84l3.48,-4.38l1.38,-0.47l2.57,-5.09l2.29,-1.88l4.33,-7.23l2.57,0.8l0.77,-2.06l-0.97,-1.42l-4.27,0.18l-2.29,-2.98l-1.7,-3.31l-1.59,-7.41l-4.93,-0.24l-0.5,-1.87l-4.22,-0.34l-0.26,-3.65l-3.5,-4.5l-2.92,-1.08Z",name:"Osječko-Baranjska"},"hr-zg":{path:"M397.4,143.34l-0.14,-1.67l1.63,0.06l8.51,3.43l0.96,-2.25l0.42,-6.53l3.93,-2.65l-1.13,-1.81l0.05,-2.77l-3.81,-5.16l-2.53,-0.65l-1.61,-8.78l-2.83,-5.15l1.35,-4.58l1.81,-0.9l3.27,0.2l-2.92,-3.86l6.29,-0.97l-1.36,-3.65l2.14,-2.44l2.78,-1.05l0.95,-1.21l1.45,3.96l2.0,0.71l0.09,3.99l2.79,1.98l1.67,0.08l2.82,-2.26l2.03,-0.22l2.18,1.01l3.07,-0.19l4.56,3.32l3.24,-0.28l1.82,1.61l0.24,3.05l3.33,0.33l1.05,1.32l-0.21,5.25l6.87,-4.21l1.91,1.35l3.31,-0.31l1.63,2.48l4.21,2.15l0.8,1.91l1.76,1.18l2.63,-0.8l1.32,1.12l3.0,0.08l5.63,-1.56l2.68,1.75l-0.37,6.82l2.56,4.85l-1.3,2.23l-3.17,0.71l-1.43,1.74l-1.59,-0.63l-1.87,0.88l-0.67,-2.59l-1.73,-0.3l-2.81,3.68l-1.92,0.73l0.18,5.55l-2.21,0.27l-5.34,-3.23l-4.12,2.04l-2.29,-0.29l-0.53,3.32l-2.06,0.54l-0.17,0.7l3.93,2.83l-2.39,1.56l-0.05,4.72l3.19,0.77l1.67,3.22l5.31,-0.96l2.27,2.51l0.59,2.6l2.3,0.69l0.94,2.83l-0.52,2.05l-2.13,1.43l0.07,2.64l-2.4,1.16l-4.01,-0.13l-2.31,2.77l-4.77,1.51l-3.73,5.28l-0.8,0.0l-4.19,-4.89l-4.82,-1.03l-0.91,-2.14l-2.81,-2.3l-3.65,-0.49l-3.95,1.13l1.26,-3.01l-0.75,-1.33l-2.96,0.45l-3.52,1.87l-1.77,-6.79l-5.73,0.23l-0.4,-3.66l-2.82,-1.4l-0.06,-2.09l-2.46,-2.96l2.16,-1.9l-0.03,-2.48l-3.81,-1.42l-3.0,0.73l-3.96,-3.0l-3.78,-4.43ZM279.45,148.69l5.43,-2.43l7.18,-1.86l3.71,0.88l1.85,-1.99l0.09,-5.23l2.18,-3.01l1.32,1.35l4.75,-0.33l2.1,-1.03l3.71,-3.93l8.12,2.09l5.78,3.68l3.53,-2.03l5.59,-4.29l-2.96,-1.79l-2.15,-7.18l4.33,-6.91l-0.35,-2.21l1.42,-3.13l6.2,-0.92l1.88,2.61l2.5,-0.24l2.29,1.43l0.79,1.84l1.37,0.27l1.36,-2.89l3.12,-3.17l1.46,0.17l8.77,3.46l3.47,3.7l-1.71,0.84l-6.06,-0.76l-6.58,1.49l-2.82,-0.66l-1.95,2.32l-0.85,2.05l1.25,2.15l0.22,2.5l6.39,-0.18l2.67,3.42l-1.1,1.13l-2.66,0.43l-1.19,2.18l-3.17,0.54l-0.5,2.26l2.3,7.32l-3.65,4.86l-1.34,4.56l-2.73,1.85l-1.35,4.01l0.81,3.81l6.0,3.49l8.06,3.1l4.5,4.18l-0.17,2.38l4.9,2.78l-0.1,4.51l-4.89,9.03l-3.83,0.59l-0.62,-3.16l-3.3,-0.66l-3.57,1.55l-1.47,2.77l-3.74,0.98l-0.23,-2.77l-1.88,-0.61l-2.32,-2.69l-3.68,-2.42l-0.75,-3.86l-4.26,-2.81l-5.64,0.13l-2.98,-2.47l-3.85,-1.38l-4.55,3.03l-1.84,2.63l-1.58,-1.91l-3.55,-1.56l-1.93,0.03l-0.36,-5.77l-5.38,-2.55l-3.77,-5.66l-3.17,-0.99l-2.21,0.9l-1.41,-2.45l-5.08,-1.94l-7.5,-4.83l1.32,-4.63Z",name:"Zagrebačka"},"hr-gz":{path:"M350.4,124.97l-0.02,-2.15l-1.21,-2.18l2.02,-3.27l2.89,0.6l7.46,-1.55l5.11,0.83l2.42,-1.12l1.03,1.26l-0.24,4.52l0.59,0.43l13.62,-7.82l6.3,-2.53l3.32,0.09l1.6,-2.07l4.87,-0.15l2.76,4.99l1.63,8.84l2.75,0.93l3.69,5.04l-0.2,2.43l0.93,1.54l-3.66,2.41l-1.13,8.49l-8.6,-3.68l-1.83,0.52l0.14,2.37l3.98,4.64l4.15,3.13l3.26,-0.66l3.35,1.19l-0.15,1.6l-1.93,1.47l-0.19,1.35l2.46,2.74l0.18,2.26l2.7,1.22l0.63,3.92l5.44,-0.31l2.2,7.29l-0.75,1.6l-3.27,0.46l-0.47,1.88l-3.48,1.94l-1.98,-2.09l-5.13,-0.23l-2.17,-5.31l-2.26,-0.59l-2.37,0.54l-3.13,3.58l-3.5,0.15l-3.13,3.64l0.15,3.19l-3.99,2.37l0.91,2.98l4.29,3.48l-0.45,4.15l-3.07,-0.06l-1.8,1.91l0.51,2.79l-2.15,1.76l-2.12,-1.45l-3.68,-0.8l-2.98,2.57l-2.29,0.82l-7.73,-0.51l-1.04,-1.8l0.73,-2.69l-0.66,-3.19l-2.39,-3.11l5.08,-9.54l-0.11,-4.74l-5.02,-2.94l0.21,-2.34l-4.69,-4.35l-8.16,-3.16l-5.96,-4.1l-0.39,-2.43l1.23,-3.62l2.65,-1.71l1.41,-4.68l3.75,-5.09l-2.29,-7.74l0.42,-1.66l2.88,-0.24l1.25,-2.21l2.57,-0.37l1.59,-1.94l-3.22,-4.05l-6.13,0.35Z",name:"Grad Zagreb"},"hr-is":{path:"M1.14,201.86l-0.66,-1.24l0.86,-0.03l0.15,-1.37l1.7,-1.23l6.98,2.86l5.56,5.03l3.44,0.54l5.59,2.55l12.48,-5.86l3.38,1.57l7.44,-0.38l8.36,4.37l2.52,3.79l8.67,-6.64l6.12,0.01l3.66,-1.52l2.22,-5.06l2.78,-0.51l7.01,3.21l8.87,0.83l-0.29,4.09l3.11,5.13l9.22,4.85l-2.81,2.36l-0.42,1.35l0.58,1.58l2.06,1.32l0.07,3.88l1.06,2.72l-2.49,1.1l-1.83,4.18l1.16,5.28l-0.78,3.47l2.23,6.31l-1.38,9.96l3.85,2.78l-0.73,3.35l-1.03,0.52l-1.27,3.31l-3.73,-3.14l-0.99,0.4l2.78,3.22l0.25,1.68l-3.49,5.06l-1.22,0.91l-1.37,-1.11l-0.86,0.35l-0.46,2.24l1.51,1.88l-0.61,0.99l-1.18,-0.83l-0.73,0.5l1.71,2.21l0.22,2.58l1.89,3.23l0.34,5.62l-2.99,4.06l-1.65,-1.78l-2.11,0.95l-0.99,-1.71l-1.32,-0.1l-3.48,2.15l-1.59,2.47l-0.57,0.16l0.71,-3.88l3.55,-0.15l0.39,-0.67l-1.72,-1.01l-0.44,-1.68l-0.63,0.18l-0.78,-3.91l-1.52,0.99l-1.67,-0.48l0.79,-2.55l-1.76,-2.97l-0.53,-0.44l-1.54,1.02l1.09,3.11l-1.35,2.6l5.07,1.65l0.78,2.44l-1.82,0.12l0.06,1.78l-2.03,2.48l0.5,1.03l-3.2,-0.9l2.56,3.03l-1.01,0.69l-0.71,2.81l-1.2,-1.5l-0.69,0.36l0.3,0.71l-1.26,1.0l1.34,0.79l-0.69,1.56l-3.75,1.79l-2.06,-1.95l-0.75,0.46l0.04,1.71l3.36,1.88l-1.6,0.87l0.94,2.61l-2.54,2.32l-0.46,2.13l1.51,2.05l-1.93,1.89l0.82,0.71l1.5,-0.67l1.67,2.83l-7.74,-0.21l-2.5,-3.01l-3.36,-2.08l-0.35,1.52l-1.65,-0.03l0.5,0.81l-1.62,-1.21l-1.45,0.76l1.2,1.44l4.12,0.76l0.82,1.39l-1.34,2.06l0.85,2.16l-1.06,1.06l1.07,1.02l0.42,-0.09l0.26,0.09l0.21,0.24l-2.31,-0.47l0.18,-2.89l-0.98,-0.99l0.47,-2.61l-0.78,-0.92l-5.17,-0.05l-0.33,-0.54l1.82,-1.32l-1.43,-0.68l-1.01,1.3l-0.61,-0.05l0.38,-0.61l-1.63,-1.03l2.0,0.06l0.28,-1.28l-2.61,0.01l0.5,-0.84l-1.2,-1.55l-0.61,1.67l-1.22,0.0l1.09,-1.05l-0.14,-1.39l-2.52,-2.33l3.01,-0.35l1.83,-1.85l-0.08,-1.77l-1.83,-0.76l-1.22,1.45l-1.72,0.22l-1.87,-1.11l0.25,-1.41l-0.73,-0.45l1.86,-2.56l-1.39,-1.24l-0.33,-3.06l-1.82,-1.75l-1.18,-2.07l0.34,-0.92l-2.15,-2.06l-1.35,-3.5l-4.0,-0.35l0.23,-0.69l-1.93,-1.32l-0.55,-1.7l-1.12,-0.31l0.24,-2.29l-3.71,-0.56l0.18,-2.67l-1.39,-1.11l1.1,-0.89l-0.44,-0.59l-4.75,-2.67l-3.8,0.34l1.06,-0.9l-0.46,-0.94l0.79,-0.79l-0.96,-0.64l1.25,-0.74l0.0,-1.77l-2.9,-1.08l-2.14,-2.44l2.12,0.12l0.82,-1.46l-1.77,-2.41l-1.92,0.23l-0.71,-2.29l1.72,-2.49l-1.8,-1.66l0.21,-0.74l-1.4,-0.58l2.21,-0.87l-3.36,-3.24l2.55,-1.29l-1.33,-1.47l1.58,-5.97l-1.4,-0.96l0.72,-0.79l-0.56,-0.68l-2.17,-0.1l0.63,-1.02l-0.59,-0.84l0.72,-1.34l2.5,-0.06l0.27,-1.91l-2.39,-0.19l-2.21,-2.12l2.56,0.27l0.36,-1.57l3.74,-1.75l-2.8,-2.02l-1.57,0.57l0.04,0.84l-4.09,0.1l0.8,-0.8l-0.53,-0.71l-3.22,-1.03l0.76,-2.12l-0.85,-1.79l2.48,-1.5l-2.09,-0.76l0.5,-1.89l-0.8,-0.5l0.81,-0.54l-1.9,-1.49l1.09,-0.87l-1.11,-1.11l0.65,-0.91l-3.15,-2.58l1.3,-1.77l-0.84,-0.88l0.84,-1.61l-2.23,-0.85l1.13,-2.03l-0.88,-1.15l-0.08,-2.61l-2.41,-1.83ZM21.74,277.06l0.0,0.0l0.0,0.0l0.0,0.0ZM47.5,312.19l-0.11,0.11l-0.04,0.01l0.12,-0.13l0.03,0.01ZM48.96,319.16l0.06,0.05l-0.01,0.06l-0.08,-0.07l0.04,-0.04ZM49.17,319.42l-0.04,-0.04l0.0,-0.02l0.07,0.06l-0.03,-0.01ZM49.01,318.11l-2.06,0.03l-0.68,-2.16l0.96,0.11l1.78,2.03ZM56.36,326.21l0.01,0.0l0.0,0.0l-0.01,0.0ZM100.81,283.17l0.13,-0.03l0.0,0.17l-0.08,-0.08l-0.05,-0.06ZM101.48,283.92l0.0,0.07l0.04,0.05l-0.08,-0.08l0.04,-0.04ZM101.27,283.78l0.07,0.08l-0.07,-0.07l0.0,-0.01ZM66.5,328.37l0.0,-0.16l0.09,-0.09l0.0,0.07l-0.09,0.18ZM65.84,326.31l0.17,0.1l0.08,0.0l-0.3,0.04l0.05,-0.15ZM50.88,318.86l0.0,-0.02l0.01,0.02l-0.01,0.0ZM46.63,312.57l0.01,0.02l-0.03,0.0l0.0,0.0l0.02,-0.02ZM46.72,312.59l0.05,-0.08l0.25,-0.05l-0.18,0.13l-0.12,0.0ZM14.99,254.27l-0.01,-0.01l0.01,0.0l0.0,0.01ZM6.8,218.09l0.0,0.0l0.0,0.0l0.0,0.01ZM78.04,321.27l0.53,-0.39l0.01,0.8l-0.53,-0.01l-0.01,-0.4ZM77.64,324.42l0.53,0.04l0.01,1.23l-0.53,-0.44l-0.01,-0.83ZM69.23,335.15l-0.04,-0.05l0.0,-0.04l0.08,0.09l-0.03,0.0ZM58.09,337.9l0.18,-0.23l0.05,0.0l-0.23,0.23ZM53.25,324.41l0.0,-0.01l0.16,0.14l-0.12,0.04l-0.04,-0.16ZM52.53,316.17l-0.08,0.01l0.03,-0.05l0.04,0.03ZM37.76,306.77l-0.06,-0.13l-0.11,-0.11l0.37,0.1l-0.19,0.14ZM38.22,306.59l0.77,-0.26l1.3,1.3l1.4,-0.26l0.53,1.09l1.12,-0.29l0.28,0.27l-1.46,1.62l-0.82,-0.73l-0.99,0.76l0.0,1.56l-1.08,-1.41l1.2,-0.6l0.09,-1.68l-2.34,-1.36ZM40.34,312.07l0.05,-0.17l0.13,0.29l-0.11,-0.11l-0.06,-0.01ZM39.55,312.4l-0.21,0.08l-0.06,0.0l0.02,-0.08l0.25,0.0ZM43.2,309.63l0.16,-0.1l0.63,0.15l-0.27,0.46l-0.52,-0.52ZM41.94,310.51l0.05,0.05l-0.05,0.0l0.0,-0.05ZM37.23,304.43l-0.02,-0.02l0.19,-0.2l0.0,-0.14l0.08,0.08l-0.25,0.28ZM38.61,304.8l0.25,0.51l-0.13,0.11l-0.43,-0.11l0.3,-0.51ZM38.54,304.24l-0.05,-0.05l0.01,0.0l0.04,0.05Z",name:"Istarska"},"hr-zd":{path:"M246.27,430.42l1.92,-2.62l1.84,-0.75l5.54,6.91l3.78,-0.77l2.0,-2.31l-3.41,-4.63l0.97,-0.39l1.96,1.29l0.56,-1.77l6.93,5.85l3.26,2.01l2.11,-0.03l0.84,-2.18l-1.9,-1.74l-1.01,-2.5l2.74,0.56l1.12,-1.9l-6.94,-6.19l0.5,-1.5l1.0,-0.13l0.34,1.02l8.15,4.38l-0.16,1.8l10.89,6.25l2.59,0.72l3.82,-1.6l11.48,3.2l0.11,2.06l1.4,2.04l-8.58,1.8l-0.48,1.64l8.3,5.4l2.62,-1.96l0.84,1.03l0.8,-2.05l2.33,0.35l3.52,2.11l1.85,2.17l-0.72,3.91l2.92,3.03l2.12,-1.21l0.25,-2.13l-3.86,-4.55l-0.88,-0.06l-0.47,-1.65l1.34,-1.32l-2.22,-2.36l-0.12,-1.5l-0.53,-0.4l-0.53,0.93l-6.6,-3.14l-2.28,-2.55l-0.03,-2.07l2.02,-0.19l0.0,-2.52l-2.05,-1.9l-2.69,-0.83l-4.3,0.93l-1.75,-2.58l-2.03,0.52l-7.16,-6.97l-10.1,-3.71l-5.23,-3.56l-4.11,-1.6l3.22,-7.97l1.23,-0.49l3.52,1.13l7.01,4.89l20.43,5.79l5.87,10.76l2.22,-0.61l6.48,2.07l4.04,-0.29l4.41,2.94l14.33,0.22l4.4,-2.24l4.24,-5.5l-1.59,-8.82l-1.31,-0.41l-3.15,0.88l-2.54,-1.38l3.45,-4.88l-2.23,-3.19l0.64,-4.25l2.0,-1.48l7.89,-2.72l3.8,-5.01l4.45,-0.92l5.07,-5.01l5.83,-0.2l3.34,1.39l3.33,3.09l1.94,2.28l0.91,4.04l2.96,3.09l1.5,-1.26l-1.08,-6.04l3.84,3.42l3.85,-0.33l4.95,-2.31l-0.09,4.04l-1.53,3.12l5.36,3.03l-0.62,1.63l-2.35,0.89l-0.96,1.52l1.49,1.95l3.97,0.23l6.57,4.55l-2.25,8.0l0.03,4.99l0.91,2.43l4.62,4.45l0.93,6.75l-8.69,1.33l-5.46,-0.47l-2.19,4.39l0.1,3.77l-1.43,4.34l-5.85,2.83l-1.49,1.78l-5.13,-3.2l-8.94,-3.12l-1.54,-4.86l-2.3,-1.83l-1.12,0.29l-5.37,5.52l-1.5,3.11l-3.5,1.92l-4.6,5.3l-2.26,-0.16l-2.55,4.06l-5.76,-0.54l-0.99,0.61l0.54,1.68l7.05,2.59l2.38,2.48l-4.16,5.79l1.76,2.61l-6.99,3.61l1.28,3.26l3.68,2.78l-0.87,1.71l-1.58,0.93l-2.13,-2.05l-3.61,-0.25l-0.98,2.04l2.16,1.96l-2.21,4.24l-3.35,0.23l0.13,1.06l1.97,1.06l-2.13,5.1l-7.91,-5.1l-3.87,3.97l-4.13,1.87l-2.31,-1.13l-4.41,-4.26l-1.31,-0.01l-2.2,1.85l-2.61,-1.44l-0.62,-0.72l0.51,-1.06l-3.03,-2.64l-2.76,-0.6l-2.86,-1.92l-1.44,0.59l-4.09,-3.97l0.78,-1.31l-1.07,-1.53l-5.0,-2.85l-9.8,-11.97l-4.8,-1.03l0.37,-2.33l-2.67,-0.56l-1.62,-1.43l-0.93,-4.14l-3.09,-2.77l-1.54,0.3l-2.09,-1.67l-1.58,-1.79l1.58,0.77l-1.23,-2.35l-2.6,-1.28l1.04,-1.15l-0.42,-1.39l-5.2,-5.13l-2.43,-1.1l-0.13,-1.53l-2.42,-1.31l2.24,-1.02l0.09,-2.82l1.17,-0.34l0.0,-1.86l-3.31,-2.83l-1.91,0.1l0.26,-1.13l-1.31,-0.52l0.5,-0.79l-2.17,-0.92ZM259.33,424.23l-0.63,-0.05l-0.42,-0.44l0.47,0.15l0.58,0.34ZM260.91,425.03l0.31,0.05l0.04,0.12l-0.04,-0.05l-0.32,-0.12ZM306.34,509.7l-0.12,-0.22l1.33,0.71l-0.53,-0.02l-0.68,-0.47ZM300.45,532.7l0.12,0.13l0.05,0.38l-0.12,-0.15l-0.04,-0.36ZM303.22,534.57l-0.08,-0.09l0.7,0.35l-0.29,0.09l-0.34,-0.35ZM305.1,535.61l0.64,-0.05l1.15,0.53l-0.62,-0.05l-1.18,-0.43ZM302.77,505.01l1.72,0.14l1.99,1.22l-2.2,0.36l-1.51,-1.71ZM304.07,504.59l0.28,0.11l0.01,0.14l-0.29,-0.24ZM299.95,528.79l0.89,-0.52l0.37,0.93l-0.76,0.36l-0.5,-0.77ZM300.41,529.66l0.0,-0.01l0.04,-0.04l-0.04,0.05ZM296.92,529.68l1.13,0.49l0.21,0.76l-1.24,-0.95l-0.1,-0.31ZM201.81,450.12l1.39,0.67l0.48,1.27l2.46,0.46l0.49,1.1l-3.76,-1.69l-1.05,-1.81ZM209.08,455.12l-1.91,-1.31l1.03,-0.99l2.2,0.42l0.48,-0.71l-1.96,-2.29l-1.78,-3.48l7.57,5.6l0.0,1.56l2.12,2.41l3.3,0.56l-0.84,1.2l1.41,1.99l7.61,4.33l0.57,-0.5l-0.54,-1.21l1.29,0.68l0.04,1.03l-1.13,0.58l0.85,1.18l1.67,0.02l1.64,5.76l3.2,5.15l2.04,1.89l1.14,-0.06l4.11,4.02l0.57,-1.7l2.58,1.29l-0.57,1.5l2.5,2.56l2.71,0.89l1.79,2.66l1.01,-0.1l1.55,2.83l6.75,3.41l0.33,1.07l-1.55,0.11l0.53,1.19l-2.06,-0.02l-3.78,-2.48l-2.68,0.13l0.72,-1.2l-3.86,-3.16l-1.77,1.53l2.44,1.17l0.99,2.35l-0.47,0.44l-2.65,-1.94l-8.8,-9.62l-11.76,-17.51l-8.17,-5.65l-3.02,-4.17l-4.38,-3.68l-2.78,-1.42l-0.27,1.7ZM262.72,502.13l1.56,-0.46l0.79,1.18l3.47,0.36l-1.98,1.19l11.66,8.41l4.76,5.14l5.52,3.72l-8.63,-4.37l-1.08,0.46l-2.74,-2.57l-1.22,-0.12l-0.58,-0.63l0.71,-0.7l-1.77,-0.55l-0.26,-1.18l-1.0,0.4l-0.2,-1.19l-1.27,-0.69l-1.18,0.35l-3.75,-3.95l0.64,-0.69l-0.64,-0.91l-3.1,-2.49l0.28,-0.73ZM291.92,523.85l0.01,0.0l0.03,0.03l-0.02,0.0l-0.02,-0.03ZM292.37,524.08l-0.34,-0.18l0.15,0.0l1.25,0.65l-1.06,-0.47ZM275.68,511.05l0.01,-0.03l0.0,0.0l0.0,0.0l-0.02,0.03ZM270.6,504.63l0.02,0.02l0.05,0.02l-0.07,0.0l0.0,-0.04ZM295.48,525.86l0.97,0.15l0.46,0.47l-0.42,0.32l-1.01,-0.95ZM297.58,526.94l0.61,0.2l-0.09,0.33l-0.18,-0.05l-0.34,-0.48ZM262.53,501.04l-1.09,-0.37l0.26,-1.34l1.0,0.68l-0.17,1.04ZM261.47,498.72l-0.03,-0.03l0.03,0.02l0.0,0.01ZM252.98,499.16l1.13,-1.14l0.88,1.9l3.26,1.14l0.41,0.9l-0.96,0.72l-4.71,-3.51ZM207.15,446.7l0.0,0.06l-0.13,-0.24l0.11,-0.17l0.02,0.35ZM206.97,451.87l-0.61,-0.15l-0.77,-0.8l2.62,0.95l-1.24,0.0ZM238.84,451.02l-0.39,-1.44l5.84,4.12l0.64,1.34l1.89,1.13l0.83,-0.62l3.88,4.17l0.83,-0.46l1.53,1.96l0.8,0.21l0.36,-0.84l1.34,0.93l-0.42,1.52l2.92,3.39l6.37,3.92l0.38,1.96l1.86,2.12l-1.26,0.45l0.03,1.02l-0.96,0.2l0.59,-2.1l-2.04,-0.6l-0.19,-1.92l-2.66,-2.3l-0.37,1.86l-1.32,-0.68l-0.48,1.66l-1.52,-0.94l-8.99,-9.06l-2.25,-3.61l-2.38,-0.4l-3.78,-3.62l-1.07,-3.37ZM267.19,476.38l1.64,-0.68l3.09,1.02l1.55,2.01l4.14,1.23l3.49,2.81l1.75,2.59l2.22,-0.72l1.04,2.16l1.09,0.01l-0.46,1.24l1.17,2.77l4.92,3.04l4.46,4.03l-0.15,1.02l-1.55,-1.14l-1.31,1.03l-1.39,-0.31l-5.87,-4.42l-2.1,0.1l-0.02,1.34l-1.18,-0.57l-0.88,-1.18l1.22,-1.09l-0.61,-0.92l-2.31,-1.64l-1.27,0.26l0.07,-1.46l-4.45,-2.03l-1.11,-2.84l-4.76,-4.53l-0.24,-1.9l-2.19,-1.23ZM286.48,495.52l-0.28,-0.05l0.0,-0.07l0.15,-0.11l0.13,0.23ZM268.83,475.7l-0.21,-0.5l0.06,-0.07l0.41,0.25l-0.26,0.32ZM238.76,454.02l-0.04,-0.07l-0.05,-0.05l0.2,0.05l-0.12,0.06ZM293.89,502.99l1.05,0.21l0.75,0.7l-0.21,0.15l-1.59,-1.06ZM294.99,530.71l0.0,-0.12l-0.16,-0.22l0.5,0.39l-0.35,-0.05ZM293.77,507.84l-0.45,-0.77l1.48,0.37l0.0,0.39l-1.03,0.01ZM294.42,529.09l0.16,0.0l0.2,0.08l-0.09,0.09l-0.26,-0.17ZM292.17,500.12l1.02,-0.35l0.63,0.51l-0.87,0.86l-0.77,-1.02ZM293.82,500.3l0.01,-0.01l0.01,0.01l-0.02,0.0ZM291.28,528.85l0.65,-0.35l0.6,0.3l-0.25,0.2l-1.0,-0.15ZM289.0,486.14l0.81,0.39l0.41,0.76l-0.75,-0.21l-0.48,-0.94ZM289.61,499.71l0.47,0.15l0.18,0.15l-0.66,-0.08l-0.53,-0.44l-0.04,-0.15l0.59,0.37ZM288.77,498.83l-0.01,0.07l-0.13,-0.17l0.0,-0.05l0.14,0.15ZM287.9,526.17l-0.02,0.02l0.0,-0.04l0.02,0.02ZM286.56,525.7l-0.07,-0.09l0.16,-0.3l0.17,-0.2l-0.27,0.58ZM277.8,520.85l-0.66,-0.15l-0.44,-0.58l1.43,0.36l-0.33,0.37ZM278.82,521.03l1.85,0.92l2.59,0.54l-1.48,0.45l-2.95,-1.92ZM283.97,523.24l0.57,0.92l1.45,-0.41l-1.06,1.78l-1.51,-0.8l0.55,-1.49ZM268.04,500.76l1.04,-2.11l1.0,0.91l2.35,0.05l-0.94,1.04l1.81,1.48l0.98,-0.62l2.24,1.13l0.87,-1.14l-0.01,1.42l4.04,4.22l0.17,1.62l1.05,0.82l-4.56,-3.38l-2.02,-0.34l-4.85,-4.56l-3.17,-0.56ZM278.97,502.59l0.02,0.0l0.14,-0.11l-0.08,0.19l-0.08,-0.07ZM276.49,500.4l0.09,-0.32l0.08,-0.06l0.08,0.22l-0.24,0.16ZM284.37,510.42l0.1,0.04l0.19,0.23l-0.22,-0.02l-0.07,-0.24ZM281.45,520.0l0.21,0.04l0.04,0.06l-0.02,0.19l-0.23,-0.29ZM278.15,495.34l0.31,0.0l-0.1,0.23l-0.09,-0.01l-0.12,-0.23ZM272.2,491.2l-0.17,-0.91l3.44,2.1l0.88,1.59l-4.15,-2.77ZM276.56,494.19l0.18,0.18l-0.02,0.0l-0.17,-0.18ZM276.78,494.36l0.04,-0.04l0.0,0.04l-0.04,0.0ZM272.65,517.69l0.03,0.01l-0.02,0.02l0.0,-0.02l-0.01,-0.01ZM271.37,492.69l-0.06,0.0l0.0,-0.02l0.07,0.0l-0.02,0.02ZM268.89,515.02l0.01,0.02l-0.05,0.0l0.02,-0.02l0.01,0.0ZM268.93,515.04l-0.02,-0.03l0.05,-0.05l0.04,0.08l-0.07,0.0ZM268.29,492.69l-0.15,-0.23l0.46,0.43l-0.27,0.0l-0.04,-0.2ZM264.67,510.52l1.55,0.44l0.13,0.48l-0.81,0.36l-0.87,-1.29ZM266.92,512.04l-0.06,0.39l-0.13,0.05l-0.08,-0.22l0.27,-0.22ZM267.73,511.76l0.0,-0.38l0.61,0.21l-0.05,0.33l-0.56,-0.16ZM267.13,513.66l-0.1,0.0l0.0,-0.07l0.13,0.05l-0.02,0.02ZM267.5,513.71l-0.02,-0.02l0.1,0.0l0.0,0.04l-0.08,-0.02ZM214.0,381.14l-0.62,-0.65l2.42,-1.46l2.45,0.37l17.35,17.64l1.36,-0.91l-1.33,-6.02l0.9,0.26l6.86,5.84l2.6,0.68l3.83,5.73l5.0,2.53l2.07,3.93l2.2,-0.21l6.73,5.17l1.56,3.82l-11.12,-6.22l-0.35,1.03l7.96,6.76l-3.02,-0.77l-0.62,0.97l0.7,1.1l-3.58,-1.6l-1.21,0.36l-5.48,-2.68l-2.12,0.31l0.13,1.75l6.97,5.56l-0.26,0.13l-2.73,-0.83l-6.84,-4.44l-2.57,-3.26l1.51,0.1l0.42,-1.96l-2.73,-2.53l0.79,-1.41l3.1,-0.17l-0.09,-2.16l-5.05,-3.47l-2.52,-0.21l-0.16,2.01l-3.99,-0.93l0.26,-2.44l-2.41,-3.49l-6.02,-5.33l-4.04,-2.75l-1.07,0.73l-2.49,-0.32l-3.87,-3.08l-1.09,-2.01l2.4,0.0l0.8,-0.94l-0.9,-2.72l-2.09,-1.79ZM261.85,421.74l-0.24,-0.52l0.83,0.55l-0.43,0.15l-0.16,-0.17ZM266.74,497.58l-0.38,-0.43l0.07,-0.11l0.63,0.31l-0.31,0.23ZM263.62,499.01l0.34,-0.02l0.18,0.17l-0.25,0.01l-0.27,-0.15ZM262.7,505.44l0.38,-0.43l0.72,0.75l-0.17,0.41l-0.92,-0.73ZM258.36,488.9l1.55,0.79l1.92,2.59l-2.08,-1.07l-1.4,-2.31ZM260.5,503.05l-0.08,-0.1l-0.01,-0.04l0.22,0.22l-0.13,-0.07ZM260.33,464.49l0.13,-0.07l0.13,0.38l-0.19,-0.26l-0.07,-0.05ZM259.98,464.39l-0.01,0.01l-0.01,0.0l0.02,-0.01l0.0,0.0ZM239.94,463.76l4.46,3.03l0.42,2.33l3.02,2.41l0.53,1.42l2.17,0.95l0.27,1.03l0.99,-0.26l-0.8,0.99l0.74,1.78l-0.15,0.15l-4.7,-3.4l-2.97,-3.86l-3.3,-1.75l-0.68,-4.8ZM239.82,463.6l-0.11,-0.11l0.08,0.0l0.03,0.11ZM249.73,484.98l-0.36,-0.21l0.22,-0.22l0.15,0.15l-0.01,0.28ZM248.9,471.31l0.12,-0.3l0.23,0.56l-0.28,-0.17l-0.07,-0.09ZM231.71,419.38l0.13,-0.95l3.81,0.04l1.46,1.76l1.46,-0.67l2.49,1.91l2.53,-0.17l3.91,3.52l1.28,0.03l-1.86,1.38l-0.31,-2.06l-5.51,-1.14l-1.4,2.17l-3.42,0.26l-3.4,-3.24l-1.18,-2.85ZM238.86,473.95l1.5,0.93l1.01,2.03l-3.07,-1.85l-0.52,-1.11l1.07,0.01ZM237.27,473.97l-0.01,0.0l-0.09,0.02l0.12,-0.04l-0.02,0.02ZM237.79,472.78l0.01,-0.01l0.01,0.0l0.0,0.01l-0.01,0.0ZM237.54,471.86l0.16,-0.41l0.41,-0.02l-0.39,0.57l-0.18,-0.13ZM232.0,448.06l0.34,-0.46l3.05,2.76l1.19,0.05l0.33,1.73l-2.66,-1.29l-2.25,-2.79ZM220.59,441.9l6.88,7.19l1.88,-0.03l1.63,2.27l1.39,0.41l1.18,1.38l-0.42,1.84l-2.3,-2.1l-2.88,-0.63l-2.49,-3.25l-0.82,0.07l-0.46,-1.68l-3.49,-3.5l-0.1,-1.98ZM229.57,453.27l0.0,-0.03l0.01,0.01l-0.01,0.02ZM230.57,450.7l0.0,0.0l0.0,-0.01l0.0,0.0ZM223.35,444.35l-0.01,0.0l0.0,-0.01l0.01,0.01ZM227.86,404.9l0.14,0.05l0.04,0.08l-0.14,-0.05l-0.05,-0.08ZM226.96,461.97l0.16,-0.16l-0.04,0.16l-0.12,0.0ZM211.65,394.49l2.04,0.27l2.47,3.67l4.6,2.69l2.82,2.6l-7.38,-3.61l0.19,-0.86l-3.45,-2.49l-1.3,-2.27ZM215.04,448.42l-2.8,-1.98l2.97,0.97l3.42,2.33l1.7,1.78l-5.29,-3.09ZM214.63,443.5l1.79,0.52l1.91,1.59l0.88,1.32l-4.59,-3.43ZM189.24,427.31l0.78,-0.57l2.36,0.82l0.33,-0.73l-1.47,-2.14l0.63,-0.33l4.43,3.82l1.05,0.11l0.37,0.09l0.2,0.18l-1.84,0.98l-3.14,-1.75l0.41,2.99l-0.83,-0.05l-2.53,-1.65l-0.76,-1.77ZM197.24,430.5l0.99,0.3l0.57,-1.16l5.09,5.04l2.42,0.31l4.06,3.46l0.94,-1.63l1.45,0.19l1.62,2.32l-2.02,2.29l-1.95,-1.44l-1.31,0.05l0.49,-0.8l-1.66,-1.31l-2.43,0.0l-1.39,-1.86l-3.41,-1.55l0.11,2.32l-3.56,-6.52ZM203.82,441.37l-0.96,-0.29l-1.83,-3.68l3.32,4.01l-0.52,-0.05ZM205.93,388.74l1.33,0.13l1.65,2.66l-2.61,-2.03l-0.37,-0.77ZM207.84,409.16l-1.23,-1.05l-0.08,-0.63l1.81,2.05l-0.49,-0.37ZM206.64,445.11l0.0,0.0l0.0,0.01l0.0,0.0ZM190.82,410.49l-0.64,-0.39l3.08,-0.46l1.91,-1.33l-1.55,-2.77l0.5,-1.48l-0.65,-1.86l2.28,-1.55l1.29,0.31l2.68,3.49l-1.56,0.66l0.67,1.23l-1.72,1.04l4.24,5.61l-0.56,1.95l-2.37,-0.53l-0.58,0.62l-4.81,-3.92l-2.21,-0.63ZM197.71,437.79l0.01,-0.01l0.05,0.0l0.0,0.03l-0.06,-0.01ZM194.44,437.59l-0.35,-0.33l0.65,-0.57l0.5,0.74l-0.81,0.16ZM188.61,398.54l0.0,0.02l-0.02,-0.02l0.02,0.0ZM177.63,404.67l0.38,-1.54l1.42,-0.87l3.0,0.74l1.37,1.63l-0.92,1.88l0.42,3.0l2.86,1.49l1.14,2.65l-1.0,0.26l-2.22,-1.97l-1.26,-0.06l-1.87,-5.63l-3.01,-0.61l-0.32,-0.98ZM181.92,425.61l-0.53,-0.61l0.86,-0.33l0.91,0.67l1.51,-0.4l2.08,2.02l-1.49,-0.45l0.01,1.45l-3.36,-2.34ZM165.97,413.68l1.42,-0.57l1.9,2.74l4.31,1.65l3.53,3.86l-2.51,-0.37l-3.4,-2.46l0.49,-0.43l-0.7,-0.85l-3.65,-1.4l-1.39,-2.17ZM164.26,411.04l0.05,0.04l-0.06,0.04l-0.03,-0.03l0.05,-0.04Z",name:"Zadarska"},"hr-kz":{path:"M358.03,52.3l0.16,7.73l7.06,1.81l2.25,1.76l0.87,2.49l6.08,0.27l1.57,2.42l6.0,0.01l8.21,-1.89l2.08,0.68l0.83,2.61l5.8,-0.28l3.54,-3.83l3.86,-1.84l1.11,0.53l-1.11,1.88l0.53,1.09l6.27,0.59l-0.96,2.54l2.41,3.67l-0.54,1.42l0.71,0.78l-1.77,3.43l1.3,2.89l-1.36,2.32l0.68,1.85l1.42,0.57l-0.25,2.26l-6.2,5.23l-0.09,1.44l1.29,2.03l-6.09,0.77l0.33,1.83l2.5,2.38l-2.62,-0.61l-2.23,1.09l-1.54,4.82l-5.03,0.17l-1.73,2.12l-3.21,-0.12l-6.46,2.58l-12.88,7.39l-0.44,-4.99l-4.82,-4.75l-4.75,-2.43l-6.37,-1.56l-3.61,3.53l-0.9,2.56l-3.9,-3.45l-2.34,0.28l-0.22,-1.21l-1.93,-1.49l-6.34,0.89l-1.39,-5.42l2.62,-7.92l-4.29,-4.1l-10.44,-4.86l-2.55,-4.09l-0.33,-7.15l1.57,-2.68l4.44,-4.33l0.85,-2.34l-0.35,-1.71l7.44,-0.13l3.39,2.04l5.37,-0.11l4.24,-2.34l1.4,-2.09l0.45,-6.34l6.34,-0.25l4.06,-2.45Z",name:"Krapinsko-Zagorska"},"hr-sp":{path:"M577.88,224.57l3.48,-0.48l0.11,-2.81l3.61,0.3l4.65,-1.57l3.74,2.19l4.81,4.98l3.82,1.22l0.41,2.75l2.5,3.87l6.39,1.88l2.49,2.63l4.64,2.3l15.02,-0.21l1.92,3.12l0.0,4.27l1.28,2.09l-1.86,2.91l3.39,2.49l5.14,0.76l2.0,-0.6l0.66,-2.47l1.77,-1.05l0.79,-1.73l3.33,0.63l3.87,-1.64l1.12,-2.52l6.26,-4.88l1.52,-5.17l3.71,-0.96l15.59,1.1l12.8,4.51l5.21,0.3l1.15,1.53l5.27,0.66l2.12,2.97l5.02,2.24l2.18,-1.44l4.54,-0.78l5.44,-3.29l8.01,-0.18l3.91,1.31l1.46,2.06l4.46,0.87l1.58,1.76l3.18,0.83l1.83,-0.78l2.06,1.76l1.62,-0.92l3.44,0.83l2.4,-1.02l1.56,-3.81l2.94,1.27l1.49,-0.31l-0.36,5.39l-3.32,1.1l-1.78,1.74l-6.27,10.47l2.0,4.36l3.4,2.12l2.72,3.04l-2.41,4.48l-2.02,-2.51l-5.98,-0.45l-5.86,-5.17l-0.75,-2.12l-2.84,-1.82l-14.52,0.97l-1.06,-1.69l-4.6,-0.38l-2.78,-4.38l-4.98,0.46l-2.4,2.03l0.68,5.32l-1.11,2.04l-2.29,1.56l-2.84,0.61l-3.77,-1.65l-6.93,-0.08l-2.57,-3.33l-2.23,-1.11l0.48,-2.44l-2.18,-3.38l-2.16,-0.11l-2.19,2.32l-3.26,-3.53l-2.28,-0.75l-3.26,1.8l-3.63,5.32l-2.86,1.06l-1.62,6.19l-9.12,5.89l-2.52,0.19l-2.87,-0.77l-8.06,-5.8l-3.11,0.07l-11.7,-8.53l-4.06,0.49l-4.91,3.8l-3.97,-0.64l-3.36,0.66l-1.14,-0.65l-0.28,-2.22l-0.67,-0.21l-3.1,3.54l-1.68,0.61l-6.12,-1.65l1.22,-3.68l-3.01,1.29l-2.78,-0.54l-1.14,-4.92l-3.16,3.82l-7.65,-0.41l-4.44,-1.61l-1.35,-1.83l-3.25,-1.71l-0.63,-2.01l-2.34,-0.19l-2.16,-1.39l-3.91,6.86l-13.32,-1.52l-5.18,-5.55l-0.04,-1.42l-4.69,-3.36l-1.93,-0.45l2.15,-4.79l6.37,-3.39l3.7,-5.45l3.47,-1.06l0.0,-1.34l-1.63,-2.05l0.74,-1.6l1.85,-0.39l0.5,-1.06l-2.69,-3.2l7.26,-6.95l4.34,-0.46l3.37,2.65l4.98,1.7Z",name:"Brodsko-Posavska"},"hr-pg":{path:"M99.09,202.76l11.96,-0.25l35.81,-8.86l4.13,-3.72l1.22,-11.57l5.83,-2.48l1.43,-1.66l2.15,-7.4l3.0,0.96l2.0,-0.49l4.02,1.75l-2.47,3.81l-0.81,2.94l4.87,2.6l0.17,2.51l5.17,1.82l1.24,1.54l1.39,3.3l-1.16,4.53l2.35,1.78l3.49,-0.64l3.03,2.46l9.46,0.66l1.43,2.59l0.03,3.54l1.67,1.39l7.02,-0.94l4.42,-1.7l1.86,-3.85l-0.13,-4.85l1.94,-0.94l2.47,0.47l7.46,5.72l2.51,-0.04l3.82,1.51l2.71,-1.05l2.35,0.43l3.07,1.87l1.41,3.5l6.31,3.1l2.54,3.21l2.24,1.38l8.37,-1.21l0.85,-2.29l1.75,-1.21l0.54,2.81l-0.55,3.96l-2.39,6.11l-5.12,6.06l-0.39,6.0l-2.29,1.21l-5.98,0.8l-1.93,3.05l-1.88,1.1l-1.22,-0.56l-1.03,-2.35l-5.79,0.05l-2.01,-0.72l-2.34,-3.64l-4.66,1.34l-1.79,3.86l0.79,2.19l-3.36,2.37l3.66,4.72l-0.06,2.63l-1.3,1.35l1.98,5.27l-1.58,6.18l0.09,3.47l5.06,5.93l1.54,6.43l-3.18,3.15l-5.0,-0.92l-3.18,1.16l-1.73,-2.32l-2.04,0.08l-5.87,3.14l-0.89,2.12l-4.35,-8.37l0.32,-3.86l-2.0,1.05l-0.06,-1.56l-2.78,0.27l-4.18,-2.35l-6.95,-1.87l-3.32,-2.8l-0.03,-1.01l-4.61,-2.86l-4.75,-4.91l-6.82,-3.46l0.74,-1.01l-0.61,-1.48l-4.67,-3.24l-1.04,0.14l0.21,-1.42l-1.8,-1.54l0.2,-2.77l1.88,0.55l0.74,-0.58l-2.22,-2.63l-4.99,-2.81l0.01,1.56l3.19,3.15l-2.41,0.86l-6.42,-3.07l-1.53,-2.5l-4.4,-2.51l-15.27,-4.12l-3.78,-1.62l-0.49,-0.99l-7.89,10.0l-2.52,10.0l-2.98,7.72l0.13,3.76l-1.65,3.11l0.33,1.06l-0.86,1.5l-3.32,-2.13l1.34,-9.92l-2.23,-6.38l0.8,-3.51l-1.16,-5.51l1.65,-3.28l2.68,-1.68l-1.08,-2.83l-0.12,-4.03l-2.29,-1.64l-0.29,-1.32l3.25,-3.36l-9.45,-5.35l-2.94,-4.84l0.34,-3.84ZM177.68,332.67l-0.93,-1.29l1.17,-1.34l2.66,0.53l3.68,2.37l0.53,-0.97l-1.43,-3.44l3.43,1.92l0.98,-0.7l-2.68,-3.85l-2.44,-1.04l-2.35,-3.15l3.46,0.49l3.0,1.87l0.61,-0.76l-0.8,-0.87l0.09,-1.84l1.74,1.14l1.53,-0.69l1.07,1.68l0.79,-0.16l-0.31,2.05l-2.21,0.58l-0.57,1.15l13.58,11.67l5.8,7.33l0.24,1.79l-2.14,1.08l-1.88,-0.27l-7.92,-8.55l-3.72,-1.4l-3.85,-2.85l-0.74,0.87l1.19,1.22l-1.84,-0.27l-0.66,0.73l-1.98,-1.35l-1.3,1.91l0.01,0.99l0.39,0.39l-0.03,0.0l-1.28,-1.21l0.97,-1.05l-3.01,-1.44l-0.59,-1.35l-0.65,0.42l-1.6,-2.33ZM183.88,339.64l0.03,0.0l0.0,0.03l-0.03,-0.03ZM189.48,337.38l-0.08,0.0l-0.13,-0.13l0.03,-0.04l0.19,0.16ZM192.02,322.33l0.04,0.04l-0.1,0.03l0.06,-0.07ZM200.03,345.49l1.88,1.66l2.65,3.69l-1.85,-0.88l-3.73,-5.3l1.05,0.83ZM199.01,320.95l4.49,0.23l0.45,1.52l-1.23,-0.36l-0.95,1.8l-0.46,-1.41l-1.35,-0.09l-0.94,-1.7ZM193.99,307.89l-0.21,-2.86l6.2,2.77l2.54,2.42l0.93,3.15l-7.54,-3.38l-1.93,-2.1ZM203.45,313.38l0.03,0.04l-0.01,0.0l-0.03,-0.04ZM142.89,277.87l0.39,-2.47l5.34,-1.4l-0.67,-3.65l1.56,-1.63l4.22,2.35l3.06,-1.14l0.57,-5.26l2.91,-3.73l-1.64,-2.56l-0.2,-3.2l1.67,-0.66l-2.73,-4.16l3.18,3.79l0.57,-3.73l-1.77,-1.94l1.2,0.26l0.9,-1.67l0.86,0.03l2.44,2.16l0.27,-1.68l2.75,2.15l-1.62,-0.8l-1.13,0.39l7.14,11.13l-2.87,-0.39l-2.04,4.02l2.08,0.69l4.39,-2.13l4.61,2.81l0.65,-0.79l-0.47,1.28l1.02,1.27l-1.65,2.23l-1.27,0.14l1.09,2.1l-0.34,3.73l1.39,2.34l4.65,2.84l1.26,0.05l0.95,-1.32l1.87,1.69l0.78,-1.22l-0.21,1.81l1.56,0.98l-0.72,2.24l0.55,1.29l4.41,4.62l3.87,1.82l-0.46,0.9l0.9,1.13l0.56,-1.03l0.97,0.82l1.3,2.93l-2.54,-2.33l-0.53,0.71l1.82,2.23l-0.39,1.07l-8.18,-1.09l-1.24,2.21l2.44,3.23l-3.98,0.94l-6.74,-2.6l0.17,-1.04l-2.04,-2.02l-3.7,0.26l-3.49,-2.14l-2.42,-0.32l-0.4,-1.25l2.81,-0.73l-0.76,-3.65l1.01,-5.03l-0.85,-1.18l-1.26,0.32l-1.88,2.31l2.2,2.25l-6.22,-2.44l-2.52,2.65l-5.61,-0.67l-2.28,-1.46l-1.46,0.52l-0.5,-1.19l-0.68,0.6l-2.24,-2.86l-2.1,-0.85l-3.64,-3.7l-0.89,-2.18ZM178.86,277.12l-0.01,0.0l0.0,0.0l0.0,0.0ZM172.52,261.41l-0.01,0.0l0.0,0.0l0.01,0.01ZM189.24,316.49l1.51,-0.7l-0.21,-1.35l4.83,4.42l-4.72,-0.35l-1.41,-2.01ZM181.28,350.29l-0.28,-0.26l0.04,-0.23l0.38,0.44l-0.13,0.06ZM177.66,304.34l1.02,0.45l0.0,0.4l-0.57,0.01l-0.45,-0.85ZM168.52,394.8l0.01,1.19l-0.08,0.0l-0.45,-1.19l0.53,0.01ZM165.59,376.88l-0.28,-0.39l-0.13,-0.52l0.48,0.83l-0.07,0.07ZM164.87,354.46l-0.23,-0.29l0.0,-0.05l0.29,0.27l-0.07,0.08ZM158.08,394.28l1.24,-1.62l3.98,1.8l0.71,1.22l-2.25,-0.51l-1.41,1.19l-1.53,-0.57l-0.73,-1.49ZM161.75,303.04l0.52,-0.01l1.31,1.18l-1.43,0.07l-0.41,-1.24ZM160.94,385.25l1.09,0.23l-0.05,1.14l-0.54,0.0l-0.51,-1.37ZM162.79,387.4l0.0,-0.14l0.04,0.1l-0.04,0.03ZM161.78,245.21l0.49,-0.48l0.54,0.26l-0.28,0.74l-0.75,-0.52ZM159.9,391.59l0.24,-0.23l0.29,0.5l-0.22,0.0l-0.31,-0.26ZM161.45,392.76l0.42,-0.45l0.62,0.73l-0.86,-0.15l-0.18,-0.12ZM153.18,297.32l-1.87,-1.28l2.34,0.62l2.6,-1.47l4.59,5.15l-2.26,0.36l-5.4,-3.38ZM159.55,390.07l0.0,0.07l-0.03,-0.11l0.03,0.03ZM119.94,271.21l-1.05,-1.35l3.62,-4.08l0.52,-3.46l1.46,-1.61l1.98,-0.78l0.27,1.46l2.77,-0.36l2.3,1.11l1.3,3.09l-2.27,2.84l0.5,7.81l1.43,1.84l4.16,11.68l4.64,6.48l1.69,1.15l4.56,-1.11l2.27,3.71l0.08,0.73l-1.09,-0.1l-0.88,1.4l-1.39,0.01l0.5,1.81l-1.39,3.65l0.78,2.1l-2.34,6.67l3.57,12.57l-0.04,2.75l-2.33,-0.73l-0.78,1.85l4.32,6.08l0.44,2.69l-1.4,0.35l-0.92,2.69l2.06,5.45l5.33,6.05l-1.5,4.05l1.43,-0.48l1.45,2.27l0.97,-0.91l2.45,0.7l-2.08,0.19l-0.19,1.8l-1.5,-0.92l-0.24,2.69l-3.11,-2.49l-0.44,0.61l1.81,2.08l-1.22,0.98l-2.64,-1.7l-2.1,-3.02l-1.14,0.54l0.26,-1.38l-1.91,-0.98l-2.74,-4.85l-1.52,-1.31l-0.99,0.49l0.63,-1.12l-1.18,-0.35l-0.3,-1.62l-1.81,-1.42l1.01,-3.19l-1.35,-2.66l1.09,-3.35l-2.17,-1.59l-0.58,1.05l-1.21,-1.62l0.0,-4.21l-1.09,-1.77l0.68,-2.94l-2.12,-3.0l-1.12,-0.26l-0.67,1.45l-0.65,-0.21l0.05,-1.82l-1.27,-0.62l0.41,-4.98l-2.14,-3.83l0.38,-2.04l-1.76,-4.27l-1.52,-0.11l0.63,-0.75l-0.34,-3.96l0.0,-0.19l0.1,-0.11l0.16,-0.5l-0.03,-0.03l1.77,-1.8l4.28,6.65l1.12,0.0l1.5,1.92l1.08,-0.86l3.17,1.12l1.37,-0.88l0.59,-2.32l-1.4,-3.95l-1.14,-0.99l1.09,-1.73l2.88,1.97l0.69,-0.76l-1.32,-2.53l-2.31,-0.16l0.26,-1.14l-1.75,-2.18l-0.31,-2.02l-2.64,-0.95l-1.68,-1.66l0.09,-1.92l1.35,-1.64l-1.17,-4.98l-2.25,-2.27l-4.82,-1.56l-1.58,-4.8l-2.88,-1.9l0.43,-1.47ZM136.21,350.19l1.21,1.63l-0.54,1.73l0.75,3.38l-0.62,1.54l0.5,1.6l-1.18,1.5l0.42,1.92l1.3,0.71l1.91,5.39l2.59,2.8l-1.48,0.68l0.49,0.99l-1.95,-2.38l-0.96,-0.1l0.02,2.85l-1.45,-0.26l-0.43,1.19l-3.46,-1.59l1.26,-2.12l-0.54,-2.38l0.66,-0.58l0.74,0.69l1.58,-2.78l-1.44,-1.81l-0.29,-2.54l-3.24,-2.59l-2.44,-4.54l-0.81,-8.5l1.11,0.11l1.4,2.15l1.85,0.83l1.41,-1.04l1.6,1.53ZM143.19,373.74l1.22,0.7l0.12,1.01l-0.17,0.0l-1.17,-1.71ZM144.94,375.56l-0.04,-0.04l0.08,0.04l-0.04,0.0ZM145.68,376.16l-0.2,-0.19l-0.34,-0.34l0.74,0.52l0.0,0.1l-0.2,-0.09ZM145.9,376.28l0.03,0.03l0.0,0.02l-0.03,-0.05ZM147.92,378.32l1.52,1.66l0.91,-0.06l-0.13,1.31l4.38,0.77l1.67,1.71l-0.17,1.31l2.86,2.72l-0.76,1.63l-2.26,0.88l-1.79,-2.69l-0.61,0.4l-0.05,-0.96l-1.25,-0.22l0.4,-1.2l-1.1,0.26l0.02,-1.48l-6.0,-3.32l1.21,-0.8l-0.98,-0.9l-0.86,0.64l-0.19,-2.22l3.23,2.28l-0.05,-1.71ZM146.18,376.79l0.0,0.0l0.01,0.01l-0.01,0.0ZM146.18,376.77l0.0,0.01l-0.04,-0.05l0.04,0.04ZM146.01,376.51l0.0,0.0l0.0,0.0l0.0,0.0ZM146.14,376.72l0.0,0.01l-0.03,-0.03l0.0,0.0l0.03,0.03ZM146.1,376.68l0.0,0.0l0.0,0.0l0.0,0.0ZM145.97,376.41l-0.01,-0.02l0.01,0.01l0.0,0.01ZM142.76,377.06l-0.26,-0.26l-0.11,-1.38l0.96,1.07l-0.6,0.57ZM142.19,376.97l0.0,-0.04l0.04,-0.07l0.04,0.04l-0.08,0.06ZM143.08,373.46l0.0,0.0l0.0,0.0l0.0,0.0ZM123.51,304.04l0.02,-0.02l0.03,0.03l-0.04,-0.01ZM159.57,403.91l-0.45,-0.39l0.0,-0.79l0.57,-0.01l-0.12,1.19ZM157.54,337.13l0.2,-0.2l0.08,-0.44l0.01,0.84l-0.28,-0.21ZM122.44,369.11l0.84,0.78l1.41,0.97l-1.55,-0.89l-0.71,-0.86ZM125.25,371.34l0.03,0.26l-0.56,-0.7l0.37,0.34l0.16,0.1ZM126.8,373.51l0.21,-0.2l1.09,0.8l-0.37,0.16l-0.94,-0.76ZM126.03,372.41l-0.04,-0.09l-0.04,-0.05l0.04,0.0l0.03,0.14ZM120.74,382.27l0.07,-0.07l0.32,-0.06l2.05,0.67l0.9,1.71l0.78,-0.12l-1.18,1.49l-1.98,-1.55l-0.97,-2.08ZM126.0,384.24l0.01,-0.01l0.0,0.01l-0.01,0.0ZM123.3,336.9l1.05,-2.54l-0.4,-0.83l1.5,-1.8l-1.1,4.79l-0.6,0.86l-0.45,-0.48ZM125.45,331.72l-0.01,0.02l0.0,-0.03l0.01,0.01ZM112.95,362.45l-0.24,-0.79l2.35,-0.92l-1.18,-1.8l-0.21,-2.56l1.81,-1.26l1.88,-3.14l2.11,-1.14l-0.63,1.25l1.18,0.4l-0.38,1.63l0.93,0.57l-1.73,1.62l-1.95,-1.76l0.22,2.02l-0.94,-0.78l-0.69,0.5l1.78,3.04l-1.76,-1.52l-0.44,0.71l4.67,7.47l-4.02,-2.74l-2.49,0.09l-0.26,-0.88Z",name:"Primorsko-Goranska"},"hr-ps":{path:"M613.39,188.81l4.87,1.88l2.01,1.9l0.65,2.1l2.99,1.21l6.05,1.02l2.78,-0.51l5.45,2.98l2.6,-1.42l6.58,1.09l5.03,3.78l2.77,-0.04l2.77,-2.28l2.37,-0.07l3.09,2.13l-0.23,1.96l2.06,1.51l6.17,0.76l7.75,6.37l4.21,-0.46l2.11,3.63l3.33,0.49l2.78,-1.03l3.66,0.12l2.95,3.56l-0.08,1.54l-5.26,2.79l-1.11,1.99l3.1,1.85l3.1,5.85l-6.12,5.92l-13.19,-3.09l-9.67,-0.32l-4.01,0.64l-2.37,3.93l-0.01,1.93l-6.18,4.78l-1.02,2.42l-3.48,1.51l-3.65,-0.53l-4.18,5.68l-5.27,-0.57l-3.03,-2.09l1.77,-2.76l-1.28,-2.12l-0.04,-4.39l-2.32,-3.58l-5.22,-0.47l-9.69,0.76l-4.65,-2.3l-2.57,-2.68l-6.21,-1.75l-2.33,-3.61l-0.56,-2.99l-3.99,-1.35l-4.72,-4.92l-3.99,-2.33l-5.01,1.55l-3.77,-0.26l-0.73,1.06l0.34,1.78l-2.53,0.43l-5.0,-1.64l-3.1,-2.57l-4.22,-0.15l-3.53,2.24l-4.5,5.05l-2.48,-0.32l-3.92,1.42l-1.58,-4.47l-11.3,-4.93l0.89,-3.86l1.53,-1.47l-0.21,-2.49l-2.65,-0.31l-0.98,1.07l0.26,1.77l-2.45,0.08l-2.08,-1.54l0.22,-2.49l-2.14,-2.36l-7.13,-0.13l-2.71,-4.04l-1.45,-5.7l3.13,-5.86l2.88,3.78l6.59,3.12l6.04,-2.68l4.67,3.64l3.33,-3.21l2.99,-0.41l4.62,1.41l1.58,-1.7l0.87,-3.23l3.05,1.1l0.83,1.45l4.45,3.1l17.13,-2.36l6.1,2.88l3.8,-0.05l3.77,-4.22l0.03,-2.13l1.85,-3.75l-1.07,-2.5l1.47,-0.04l0.98,1.26l2.26,0.44l0.94,1.4l1.97,0.78l1.16,-0.75l0.84,-3.2l1.92,-0.31l5.49,3.91Z",name:"Požesko-Slavonska"},"hr-bb":{path:"M513.43,95.48l3.12,1.36l-1.04,2.5l0.23,3.55l-2.16,2.75l0.28,0.65l5.5,0.26l3.67,-0.9l5.76,3.75l0.4,1.14l-1.54,6.42l0.53,0.45l2.89,-0.99l3.36,0.95l3.28,-1.87l1.39,1.67l-0.15,2.26l0.9,1.86l4.3,1.55l1.83,3.45l8.61,2.29l1.1,1.69l2.14,0.78l1.82,3.83l4.25,1.86l2.16,2.37l4.94,1.08l0.17,4.6l2.26,2.94l4.46,0.77l-0.83,2.18l0.54,1.16l2.41,0.23l1.78,-2.72l1.58,1.15l0.34,2.83l-1.84,3.61l1.65,1.17l2.4,-0.62l0.95,3.84l2.51,-0.6l1.15,-2.16l4.38,-2.34l2.07,1.71l-0.73,2.1l4.17,1.17l1.65,1.45l-0.03,2.94l-2.04,1.41l-0.28,3.79l-3.34,4.11l0.6,4.17l-3.69,0.71l-0.81,1.25l-0.4,1.93l0.87,1.97l2.52,0.82l1.16,2.01l-1.81,3.56l-0.01,2.05l-2.5,3.48l-4.13,0.31l-3.55,-1.28l-1.0,-1.45l-3.7,-0.21l-9.55,2.13l-5.49,0.28l-4.99,-4.44l-3.75,-1.39l-2.37,5.13l-4.29,-1.42l-3.24,0.42l-1.99,1.02l-1.14,2.05l-4.87,-3.53l-5.82,2.71l-6.19,-2.97l-3.4,-3.96l-1.42,1.0l-2.43,4.92l1.38,6.54l-2.89,1.8l-3.25,-6.09l-2.59,-1.83l-2.29,-0.44l1.47,-2.19l-1.93,-2.26l-0.32,-2.28l-3.37,-1.15l-0.74,-2.3l-2.39,-0.38l-1.11,-1.37l-1.95,-9.56l-5.98,1.54l-3.52,-1.16l-2.15,-3.82l-2.72,-2.45l-3.24,0.95l-1.59,-0.4l-1.44,-2.77l-5.83,0.56l-1.83,-0.95l-1.36,-2.28l-2.04,-0.44l-0.44,-2.39l-2.53,-2.8l-5.54,0.79l-1.4,-3.01l-3.08,-0.67l0.19,-3.88l2.43,-1.65l-3.56,-3.12l1.79,-0.8l0.2,-2.97l2.1,0.36l4.35,-2.01l4.67,3.18l2.78,-0.29l0.74,-0.95l-0.76,-1.34l0.21,-3.51l1.81,-0.67l2.45,-3.45l0.92,0.07l0.81,2.75l2.34,-0.8l1.79,0.68l1.59,-1.9l3.35,-0.81l1.34,-2.09l-0.01,-1.46l-2.39,-4.28l1.04,-13.26l-0.54,-2.62l2.13,-6.63l1.83,-2.06l-0.57,-4.57l9.17,-3.93l1.52,0.48l0.02,1.91l2.29,-0.31l4.97,-3.15l-0.2,-4.6l0.83,-0.08l5.1,1.47l-0.24,2.63l1.65,1.09l0.97,2.68Z",name:"Bjelovarska-Bilogorska"},"hr-ka":{path:"M222.87,240.55l3.3,-2.02l-0.73,-2.38l1.56,-3.39l3.17,-1.19l1.25,0.49l1.65,3.11l2.32,0.81l5.64,-0.08l0.59,2.04l1.85,0.9l1.97,-0.81l2.28,-3.45l5.76,-0.72l2.56,-1.32l0.83,-1.38l-0.14,-4.99l4.58,-5.04l2.84,-6.88l0.68,-4.48l-0.58,-3.08l4.18,-0.94l7.53,0.89l6.86,-2.82l3.33,-3.42l-0.11,-2.23l-5.94,-2.08l-5.9,-6.76l-0.72,-3.65l0.62,-2.63l-2.75,-4.23l0.36,-1.24l2.07,-0.83l0.87,-3.14l4.53,-2.2l-0.3,-1.19l0.98,-0.63l6.63,0.61l1.62,-3.09l-2.55,-3.09l-2.14,-0.97l-3.38,-5.88l-2.29,0.14l-5.25,5.35l-2.23,-3.39l-3.64,-0.26l-1.31,-0.92l-0.41,-1.57l0.75,-2.24l12.72,-5.15l-1.28,3.06l0.46,1.67l7.67,4.96l5.08,1.94l1.44,2.47l1.4,0.14l1.2,-0.95l2.59,0.92l3.77,5.52l5.25,2.38l-0.23,4.77l0.92,1.31l2.07,0.02l3.44,1.54l1.83,2.0l2.48,-2.88l4.36,-2.78l3.09,1.23l3.06,2.51l5.25,-0.29l4.38,2.87l0.75,3.77l3.74,2.48l2.35,2.72l1.79,0.54l0.44,3.04l4.51,-1.1l1.58,-2.84l4.0,-1.43l1.83,0.52l-0.25,2.16l0.69,0.95l4.62,-0.34l2.28,2.89l0.62,2.94l-0.64,3.45l-2.31,-2.75l-3.91,-2.29l-6.77,3.15l-0.05,5.22l2.69,0.99l-1.53,6.05l-2.52,3.41l0.37,2.53l-3.09,2.09l-3.55,-0.28l-2.22,2.91l0.42,2.15l2.79,2.91l0.88,4.26l1.54,1.04l-1.84,2.7l0.16,2.43l-1.54,2.25l-0.06,1.77l1.92,4.12l3.61,1.36l2.74,4.7l-3.12,1.32l-4.76,4.65l-1.77,2.99l1.31,8.88l-0.82,3.31l-4.06,5.74l1.75,1.93l1.95,7.07l2.23,3.09l-1.92,4.47l-3.68,1.43l-1.32,2.19l-0.07,2.83l-3.71,3.15l-2.18,-0.74l-5.26,-4.15l-2.91,0.89l-3.05,3.17l-2.57,-1.65l-2.25,1.97l-2.73,0.69l-1.78,-0.28l-2.03,-1.82l-1.59,0.89l-1.43,2.93l-1.51,-1.16l-6.43,0.51l-4.94,-2.19l-3.15,-6.59l-6.2,-7.57l-0.38,-2.01l-3.59,0.16l-0.91,0.74l-1.67,-0.99l-4.76,-5.24l-4.09,-3.08l-3.86,-1.66l-2.82,-3.09l-4.79,-3.2l-4.86,1.29l-2.98,2.73l-4.4,-0.16l-9.62,-4.61l-4.82,0.55l-0.68,-1.96l-4.8,-5.44l-0.07,-3.14l1.59,-6.32l-1.97,-5.22l1.25,-1.09l0.1,-3.0l-3.66,-4.65ZM307.37,308.02l3.65,1.46l2.87,3.62l-2.24,-0.16l-4.28,-4.92Z",name:"Karlovačka"},"hr-dn":{path:"M532.26,654.53l0.22,-0.02l0.27,0.26l2.17,0.05l0.8,0.29l0.95,1.34l6.24,3.21l14.12,-0.91l14.07,2.95l1.79,-0.31l1.7,1.38l2.56,0.1l13.33,6.42l7.51,2.55l1.3,2.0l-0.17,2.41l3.15,1.6l0.15,1.07l1.39,0.25l0.0,-1.23l1.72,1.89l3.45,-0.26l2.89,1.44l0.53,-0.72l-1.45,-3.1l2.94,2.08l8.12,3.36l1.5,-0.19l6.19,4.57l2.61,0.61l0.15,-1.07l1.38,0.46l0.71,1.73l8.15,5.14l1.74,-0.71l-6.12,-3.95l-0.16,-2.07l2.16,-1.52l-1.66,-1.67l-1.58,1.06l-0.61,1.84l-6.2,-3.4l0.34,-0.68l6.47,-4.74l9.22,0.9l6.76,3.92l4.09,-4.81l5.24,4.56l-0.01,6.35l5.35,3.33l1.26,3.1l8.0,2.85l8.47,5.75l0.71,2.25l5.82,1.32l2.3,3.46l6.01,2.98l-0.26,2.82l7.73,3.35l0.67,2.29l12.34,8.12l2.52,2.06l1.02,2.12l8.18,-2.58l9.68,1.3l2.49,3.41l7.14,5.84l0.16,5.02l3.18,12.14l3.87,3.14l0.21,1.95l3.35,3.18l-1.97,0.4l-1.27,2.19l-6.33,-6.52l-2.01,-1.13l-1.53,0.81l-0.86,-1.27l-1.64,0.76l-1.54,-1.07l2.11,0.26l-1.2,-2.02l-13.78,-8.35l-7.43,-3.31l-1.24,-1.75l-5.63,-3.78l-1.09,-2.42l-1.47,-0.88l1.45,-1.1l-0.27,-2.3l0.97,-0.39l-1.33,-2.6l-3.12,-2.04l-3.43,1.42l-4.68,-2.73l-2.42,-0.41l-1.26,-1.36l-2.38,0.18l-2.24,-1.36l-2.49,0.3l-1.36,-0.91l0.54,-0.85l-1.89,-0.97l2.47,-0.03l1.7,1.68l0.43,-0.59l-1.24,-1.85l4.1,-0.87l1.92,0.47l0.53,-0.64l-3.73,-0.88l-4.36,0.87l-2.8,-2.36l-1.27,-3.49l-1.08,1.22l0.53,1.78l-10.96,-4.98l-2.27,-2.95l-7.14,-3.05l-4.17,-3.04l-0.41,-1.6l1.17,0.05l1.15,-1.87l-0.62,-1.26l-3.44,1.98l-0.64,-1.32l-1.87,-0.7l0.71,-1.09l-1.05,-0.44l-0.4,-1.54l-3.7,0.86l-3.4,-1.43l-2.21,3.67l-4.47,-4.22l-6.07,-2.65l-2.68,-2.08l-0.82,0.85l0.29,1.31l3.71,1.13l4.67,3.41l0.54,1.42l-1.11,-0.9l-2.36,0.86l-1.58,-1.5l-1.13,0.68l-0.59,-1.07l-3.05,-0.46l-1.29,-2.14l-1.27,0.87l-3.65,-0.67l-7.94,-3.28l-12.28,-2.87l-10.39,-3.84l-0.16,-1.87l1.41,-0.05l0.9,-1.88l-4.55,-2.36l-0.94,-1.3l-2.78,-1.17l-0.69,0.78l-5.1,-0.07l-4.18,-3.36l-12.51,-4.79l-5.26,-4.32l-2.73,-0.05l-3.67,1.56l-10.66,-1.11l-1.44,-1.07l-4.15,0.15l-4.55,-3.36l-2.76,-0.31l0.97,-2.77l1.6,-0.75l-1.18,-1.4l-1.8,0.64l0.0,-2.3l-0.4,-0.4l-0.65,0.0l-0.72,-0.36ZM646.2,705.41l0.27,0.91l-1.6,-1.58l1.18,-0.82l-0.72,-2.46l2.33,2.57l-1.46,1.38ZM760.45,772.47l-0.42,-0.51l0.89,0.63l0.2,0.2l0.16,0.1l0.3,0.26l-1.14,-0.69ZM748.01,764.77l0.02,0.01l-0.02,0.02l0.0,-0.03ZM693.0,726.82l-0.09,0.06l-0.63,-0.05l0.38,-0.16l0.34,0.15ZM701.26,732.07l-0.11,-0.11l0.05,-0.14l0.2,0.2l-0.14,0.06ZM701.01,731.14l0.05,0.0l0.14,0.13l-0.03,0.03l-0.16,-0.16ZM700.65,730.85l-0.32,-0.11l0.05,-0.42l0.12,0.04l0.16,0.49ZM681.34,722.42l3.26,-0.57l1.39,2.06l-0.38,0.45l-0.85,-1.23l-3.41,-0.71ZM685.44,724.6l0.0,-0.01l0.15,-0.17l0.01,0.0l-0.15,0.18ZM673.08,720.95l1.74,-2.26l3.19,2.75l-2.4,-0.45l-0.94,1.27l-1.59,-1.31ZM671.79,716.64l0.14,-0.25l0.26,0.04l-0.24,0.24l-0.16,-0.03ZM651.74,708.65l-0.26,-0.26l-0.03,0.0l-0.01,-0.02l0.32,0.11l1.33,0.97l1.37,0.26l0.41,0.63l-1.47,-0.16l-1.65,-1.52ZM657.2,712.0l-1.0,-0.88l1.96,-0.05l-0.64,0.57l0.46,0.73l-0.78,-0.36ZM655.0,710.41l0.49,-0.15l0.6,0.84l-0.52,-0.41l-0.57,-0.27ZM662.56,713.93l-1.02,-0.72l0.78,-0.45l-4.65,-4.74l3.42,0.51l1.48,1.62l4.49,1.99l3.17,3.05l-0.92,0.26l0.2,1.2l-1.05,0.81l-5.9,-3.54ZM657.96,712.44l0.09,0.07l-0.02,0.0l-0.07,-0.07ZM647.64,706.32l1.0,-0.24l0.59,0.79l-0.41,0.04l-1.18,-0.59ZM582.09,703.29l0.08,-0.76l4.33,-2.54l1.58,0.46l1.77,-1.02l0.5,0.41l-0.89,1.18l-1.98,0.2l1.03,1.26l9.21,0.05l1.39,1.32l1.08,-0.33l20.64,5.32l1.12,2.54l6.88,0.04l0.65,1.38l2.93,-1.17l0.39,2.03l2.01,-0.86l8.95,3.95l-1.82,1.81l-2.84,-0.88l-0.44,0.91l-2.46,-1.81l-8.11,-2.59l-11.47,-0.81l-4.86,-2.14l-3.1,0.29l-1.85,-1.51l-5.89,-1.89l-2.48,0.99l-1.06,-1.5l-3.32,-0.05l-2.4,-2.08l-1.6,-0.25l-0.99,1.83l-7.6,-3.05l0.63,-0.73ZM644.21,718.8l0.87,0.21l-0.31,0.8l-1.51,-0.06l0.95,-0.96ZM585.53,647.07l8.2,-4.85l-3.04,-3.68l-1.53,-3.55l-1.24,-0.56l-3.69,0.54l0.28,-0.99l3.72,-0.37l6.29,1.28l4.18,-1.48l2.27,-4.81l2.95,0.82l7.8,6.6l4.16,1.26l9.66,5.89l6.39,5.87l3.72,8.56l4.93,7.37l0.92,3.31l-2.33,1.08l-21.12,4.01l-4.37,-0.69l-0.99,0.72l-3.49,-2.33l-1.0,-2.4l-2.18,-0.56l0.18,-1.33l-2.87,-1.72l0.96,-2.39l-1.2,-0.87l-0.9,0.62l0.46,-1.96l-2.15,-2.23l0.84,-1.9l-2.21,-0.2l-0.66,1.43l-1.13,-0.61l4.16,-2.41l1.62,0.51l-0.21,-1.46l-1.56,-0.25l-5.48,3.47l0.96,-3.64l-1.28,-2.08l-1.12,1.72l-0.09,2.45l-1.07,0.07l-1.38,-2.35l-6.38,-5.88ZM600.49,658.22l-0.32,0.34l-0.07,0.0l0.39,-0.34ZM599.96,658.57l-0.03,0.03l-0.01,0.0l0.04,-0.05l0.01,0.01ZM607.61,677.32l-0.14,-0.16l0.07,-0.07l0.14,0.27l-0.08,-0.03ZM592.18,700.25l0.0,0.0l0.0,0.0l0.0,0.0ZM583.18,700.84l0.05,-0.12l0.2,0.19l-0.25,0.0l0.01,-0.08ZM476.03,666.05l-0.61,-0.07l1.65,-0.92l1.6,0.75l-0.83,1.15l-0.96,-1.22l-0.85,0.3ZM479.73,665.86l-0.11,-0.72l1.58,0.43l1.99,-1.07l0.5,0.56l1.32,-0.54l2.0,1.36l2.66,-0.67l1.5,1.68l6.88,1.38l0.65,1.12l3.39,-0.15l6.96,1.89l7.32,-1.12l2.29,-1.48l1.83,0.61l2.57,-1.11l9.85,-0.67l1.63,0.87l0.47,-0.87l2.64,-0.36l0.85,1.38l8.16,1.89l0.75,-0.46l0.77,1.12l3.01,-0.76l1.49,2.19l0.81,-1.0l0.35,0.32l2.11,3.38l-0.27,1.53l0.91,-0.46l0.39,1.12l2.62,0.42l-1.4,1.07l-6.64,0.81l-0.96,-0.61l-0.99,0.74l-10.78,-2.26l-0.5,-0.76l-10.77,-0.66l-10.42,4.89l-6.02,1.27l-1.81,-0.47l1.5,-1.47l-1.66,-0.71l-2.43,1.05l-8.62,-0.38l-17.33,-4.53l-0.19,2.47l-3.33,-1.55l0.93,-2.16l3.62,-1.07l-1.39,-1.53l5.71,-1.17l1.42,0.46l1.49,-1.28l-0.77,-1.3l-1.02,1.11l-0.8,-1.27l-3.4,0.16l-1.64,-2.14l-1.6,-0.49ZM522.09,679.14l0.0,-0.03l0.03,0.03l-0.03,0.0ZM558.39,678.61l0.0,0.0l0.0,0.0l0.0,0.0ZM559.68,677.68l1.4,-0.08l0.28,0.32l-1.22,0.87l-0.46,-1.11ZM561.36,677.88l0.0,0.0l-0.01,0.0l0.0,0.0ZM480.46,664.82l0.0,-0.01l0.0,0.0l0.0,0.01ZM555.15,671.55l-0.39,-0.63l2.02,0.42l-0.17,0.41l-1.45,-0.2ZM560.44,670.47l0.06,0.04l-0.02,0.02l0.0,-0.01l-0.03,-0.04ZM557.12,674.86l-0.15,-0.15l-0.19,-0.11l0.29,0.1l0.05,0.17ZM556.87,673.13l-0.3,-0.21l0.0,-0.06l0.19,0.04l0.12,0.22ZM528.44,705.21l0.46,-0.18l0.08,0.45l-0.27,0.11l-0.27,-0.38ZM525.96,706.95l0.41,-0.25l0.69,0.15l-0.83,0.27l-0.26,-0.17ZM526.04,704.77l0.09,0.0l-0.1,0.1l-0.01,-0.02l0.02,-0.08ZM501.28,706.36l0.74,-1.39l1.4,-0.41l0.95,0.73l-1.72,0.35l-0.22,1.57l-1.14,-0.85ZM502.52,707.68l-0.02,0.01l0.0,-0.03l0.02,0.03ZM504.95,706.01l1.24,-0.08l1.55,-1.51l0.58,1.17l1.28,-1.55l1.83,1.24l7.44,0.25l0.97,-0.65l2.35,1.06l-2.54,5.0l-5.35,2.44l1.05,-1.24l-0.96,-1.4l-0.68,1.01l-2.42,-0.96l-3.41,1.02l-0.15,1.38l-1.28,-1.59l-1.24,0.1l-1.19,-1.95l1.49,-0.86l-0.58,-2.89ZM503.34,709.58l0.0,-0.03l0.06,0.06l-0.03,0.0l-0.03,-0.03ZM498.99,704.41l0.94,-0.1l0.17,2.06l-1.14,0.06l0.03,-2.02ZM489.38,708.25l0.0,-0.05l0.22,-0.25l0.03,0.04l-0.26,0.26ZM482.02,678.58l0.08,-0.07l0.11,0.16l-0.22,0.0l0.04,-0.1ZM472.71,665.88l0.27,-0.2l0.19,0.13l-0.29,0.25l-0.17,-0.18ZM454.97,707.63l2.09,-2.81l2.75,0.51l0.84,0.97l-1.49,0.47l-2.14,-0.76l-2.05,1.63ZM420.73,773.12l-1.33,-0.77l4.01,0.82l-0.91,0.36l-1.77,-0.41ZM416.82,774.61l-1.35,-0.74l4.38,0.49l-0.62,0.61l-2.41,-0.36Z",name:"Dubrovačko-Neretvanska"},"hr-kk":{path:"M498.62,94.93l-0.15,-1.8l-2.09,-0.56l-9.73,4.1l0.49,4.99l-1.85,2.04l-2.1,6.35l0.05,8.94l-2.84,-1.77l-5.77,1.56l-2.7,-0.06l-1.49,-1.15l-2.45,0.81l-2.28,-2.93l-4.21,-2.15l-1.68,-2.59l-3.58,0.27l-1.96,-1.36l-6.5,4.02l0.41,-4.69l-1.41,-1.64l-3.12,-0.42l-0.05,-2.57l-2.02,-1.86l-1.02,-0.65l-2.53,0.77l-4.49,-3.31l-3.85,-0.29l1.44,-3.36l-0.99,-1.96l0.04,-5.03l1.97,-1.08l0.34,-1.7l2.59,-2.62l0.0,-3.61l6.37,-3.13l3.02,2.67l3.91,-0.45l3.5,-1.93l0.41,-3.64l8.61,-0.82l0.56,-2.41l3.81,-3.3l2.61,-1.09l6.31,1.42l8.01,-1.05l2.79,-2.03l1.14,-2.26l2.31,-0.48l2.58,-3.32l2.34,-0.82l1.79,-1.94l-0.52,-2.27l1.66,-1.49l-0.74,-2.57l0.64,-2.48l4.82,0.49l1.11,2.93l2.29,0.24l5.52,-7.95l-1.04,-1.82l1.32,-1.77l2.67,2.69l-0.76,1.24l0.2,3.07l1.81,5.82l9.25,7.43l3.44,0.41l0.43,3.25l4.46,0.18l12.02,6.45l5.98,1.72l0.93,1.22l4.48,0.26l-0.05,1.68l2.97,1.61l-0.35,0.88l1.17,2.11l-1.31,1.37l0.69,1.12l-0.64,2.21l1.81,1.05l4.03,-1.04l-0.2,2.29l2.07,0.35l-3.76,2.44l-0.27,1.0l5.02,0.25l0.93,2.24l-1.47,-0.54l-0.21,1.46l5.71,1.12l-1.51,1.6l0.2,3.32l5.49,-0.23l-0.73,1.18l-4.15,1.52l0.05,1.21l2.84,1.89l3.89,-0.2l-3.64,2.04l-11.63,-0.28l-3.05,1.73l-0.83,1.9l-4.98,4.53l-1.41,2.68l-3.82,3.03l-0.06,1.21l1.09,0.89l-0.94,4.29l-0.59,-0.01l-1.16,-0.58l-1.71,-3.27l-4.12,-1.39l-0.61,-3.86l-1.81,-2.14l-3.75,1.8l-3.2,-0.96l-2.52,0.8l1.28,-6.89l-6.37,-4.57l-8.79,0.58l1.81,-2.43l-0.2,-3.7l1.15,-2.63l-3.65,-2.06l-0.7,-2.41l-1.56,-0.94l0.38,-2.36l-1.14,-1.18l-6.2,-0.89l0.11,4.85l-6.06,3.14Z",name:"Koprivničko-Križevačka"},"hr-sm":{path:"M352.05,249.18l-2.35,-3.08l-2.79,-0.68l-1.76,-3.84l1.61,-3.55l-0.16,-2.43l1.91,-3.05l-1.69,-1.32l-0.84,-4.18l-2.84,-3.01l-0.33,-1.4l1.86,-2.52l3.35,0.34l3.61,-2.52l-0.32,-2.67l2.49,-3.33l1.59,-6.28l-0.7,-1.2l-1.98,-0.05l-0.39,-4.17l6.32,-3.21l7.95,6.11l8.02,0.47l2.57,-0.95l2.56,-2.42l6.01,2.28l2.72,-2.4l-0.45,-2.85l1.34,-1.33l2.89,0.17l0.66,-1.13l0.12,-4.74l-4.23,-3.09l-0.79,-2.15l3.91,-2.22l-0.09,-3.3l2.94,-3.36l3.3,-0.07l2.94,-3.44l1.76,-0.61l2.56,0.69l1.85,5.05l5.39,0.36l2.2,2.13l4.19,-2.21l0.18,-1.73l3.16,-0.33l2.15,-3.48l4.8,-1.59l-1.11,3.21l0.42,1.03l4.5,-0.98l3.21,0.41l2.56,2.09l1.04,2.27l4.9,1.08l3.96,4.72l1.31,0.34l3.38,-3.17l0.91,-2.28l4.76,-1.5l2.2,-2.72l3.84,0.18l2.78,-1.33l0.2,-3.01l2.07,-1.3l0.61,-2.89l2.73,1.04l4.63,-0.8l1.06,2.54l2.09,0.67l2.94,-1.02l2.5,2.23l2.45,4.05l3.83,1.22l5.63,-1.53l1.61,9.14l1.4,1.67l2.2,0.23l0.88,2.42l3.23,1.02l0.21,2.13l1.83,1.98l-1.45,1.15l0.07,1.31l5.03,2.46l2.81,5.88l1.88,0.42l2.4,-1.84l3.13,4.12l6.8,-0.04l1.78,1.96l-0.16,2.61l2.55,1.9l3.25,-0.21l0.1,-2.48l1.95,-0.28l0.17,1.89l-1.45,1.21l-0.81,4.84l11.44,5.06l0.96,1.59l-0.21,2.02l0.94,0.92l4.95,-1.34l3.71,3.71l-2.06,0.77l-0.99,1.99l1.78,3.1l-3.32,0.93l-3.74,5.48l-6.04,3.01l-2.77,5.41l0.46,1.17l1.88,0.36l4.34,3.12l0.08,1.37l2.76,3.22l-11.24,-5.41l-5.24,-5.14l-3.33,0.77l0.28,-3.28l-2.18,2.04l-0.84,-0.27l-1.29,-3.65l-1.34,-0.89l-0.59,0.44l0.55,4.04l-6.16,-0.74l-0.06,-2.62l1.77,-3.45l-2.05,-2.03l-5.45,6.06l-4.79,2.74l-2.52,0.38l-1.26,5.25l-3.1,1.62l-4.51,-0.67l-9.01,-3.04l-4.17,0.93l-6.67,-0.63l-8.98,-4.25l-12.43,1.22l-3.28,2.5l-3.37,9.48l-9.02,6.04l-2.46,2.75l-1.59,8.46l-1.64,1.8l-2.45,-0.14l-2.12,1.38l-1.05,1.59l0.46,3.53l-1.6,1.93l-11.55,-0.57l-2.11,-0.86l-1.09,-2.19l-3.67,-1.71l-0.83,-2.5l-4.18,-2.49l-0.92,-1.47l-9.85,-3.46l-2.01,-2.16l-2.31,-9.03l-4.05,-3.36l-0.48,-1.64l-1.97,-0.51l-0.55,-2.7l1.3,-2.57l-1.16,-1.36l-6.31,-0.32l-3.78,-3.51l-4.38,2.59l-8.87,0.34l-4.27,1.27l-2.22,-1.08l-1.01,1.03l-1.14,-2.11Z",name:"Sisačko-Moslavačka"},"hr-ls":{path:"M210.98,285.67l-0.74,-0.82l0.49,-3.12l5.84,-3.26l1.75,0.07l1.72,2.21l3.22,-1.16l2.61,0.93l3.48,-0.22l2.9,-3.6l-1.23,-4.51l4.72,-0.57l9.57,4.59l4.64,0.2l3.07,-2.68l2.92,-0.46l1.17,-1.13l4.94,3.25l2.87,3.13l7.92,4.72l4.82,5.28l2.03,1.2l4.06,-1.17l0.2,1.79l6.23,7.61l3.66,7.2l5.12,1.97l6.72,-0.46l3.78,5.32l2.74,2.11l2.01,-0.22l0.52,-1.44l-3.49,-3.79l-3.57,-1.42l1.79,-3.11l4.21,1.92l3.17,-0.78l1.98,-1.88l2.58,1.65l3.39,-3.3l2.69,-0.74l2.66,2.75l4.46,2.19l4.51,-3.65l1.68,2.06l-0.42,2.84l1.39,4.6l5.73,7.1l0.29,1.63l-2.71,2.84l-4.2,2.11l-1.02,2.12l3.49,9.04l4.9,2.53l2.6,2.46l2.03,0.04l3.14,-2.23l4.02,-0.84l1.96,-2.21l2.22,2.82l4.97,-0.49l1.9,6.03l3.31,0.65l1.77,4.53l11.0,7.82l1.81,2.51l-0.63,4.57l-3.29,3.47l-3.26,0.86l-0.78,1.46l0.1,3.2l1.96,1.37l11.34,3.5l5.38,7.29l-0.36,4.82l-4.45,1.92l-3.59,0.3l-2.53,-2.98l-1.72,-0.35l-0.61,1.09l1.24,5.19l-0.52,0.96l-2.46,-2.73l-1.17,-4.45l-5.15,-5.14l-3.75,-1.58l-4.35,-0.06l-2.1,0.4l-5.54,5.28l-3.95,0.65l-3.74,4.98l-9.23,3.51l-1.15,1.53l-0.54,4.17l2.24,3.02l-3.16,3.73l-0.27,1.46l3.23,1.97l3.94,-0.74l1.4,8.24l-3.98,4.96l-3.99,2.04l-14.07,-0.22l-4.35,-2.93l-4.12,0.28l-6.49,-2.07l-1.79,0.68l-5.91,-10.69l-20.66,-5.9l-9.19,-5.68l-2.22,-0.36l-1.2,0.75l-3.38,7.5l-9.23,-10.57l-3.13,-1.49l-1.0,-0.91l0.3,-0.76l-3.68,-2.21l-0.32,-0.97l-1.56,-0.12l-2.21,-1.83l0.45,-0.58l-1.93,-1.18l-4.01,-5.65l-4.02,-2.34l-3.83,-4.26l-4.07,-2.99l-0.81,0.71l-1.64,-1.93l-2.21,-0.63l-3.42,-5.48l-1.06,-4.79l-4.15,-3.8l-0.89,-1.53l0.67,-0.91l-0.42,-1.07l-4.71,-5.09l-1.02,-3.8l1.19,-0.64l-0.8,-1.73l1.01,-1.8l-1.35,-2.36l-0.63,-5.84l-0.97,-1.52l0.36,-9.05l0.44,-2.58l1.01,-0.29l0.59,-1.87l-0.42,-2.56l1.89,-4.58l1.22,-0.66l0.29,-3.42l1.9,-5.09l-1.65,-4.29l-2.75,-2.41l0.19,-1.93l-2.81,-7.05ZM212.39,342.72l-0.03,-0.01l0.05,-0.02l-0.02,0.03ZM231.34,374.14l0.0,-0.02l0.02,0.0l-0.01,0.01ZM190.31,350.0l20.18,22.25l1.31,0.64l0.48,-1.18l-2.9,-5.76l5.37,-0.77l0.04,1.86l1.57,-0.1l3.92,4.24l1.79,0.44l1.13,3.68l3.21,4.1l2.47,1.51l5.4,1.24l2.15,1.86l0.0,1.36l3.08,3.96l-2.04,-1.1l-1.15,-2.18l-1.14,0.37l-3.03,-1.24l-1.42,0.82l-0.95,-0.95l0.8,-0.85l-2.32,-2.02l-4.58,-1.14l-1.78,-2.34l-5.12,-2.53l-1.03,0.1l-0.53,2.21l-2.32,1.37l-1.85,-0.68l-0.06,-1.12l-1.62,-1.49l1.71,-0.12l0.44,-0.84l-3.15,-2.07l-0.66,-2.01l-3.81,-2.23l-0.26,-1.62l-6.81,-6.3l-8.17,-11.18l0.0,-1.75l1.66,1.56ZM239.6,389.43l-0.14,-0.04l0.05,-0.05l0.1,0.09Z",name:"Ličko-Senjska"},"hr-vp":{path:"M574.69,106.4l1.24,1.81l5.32,-1.83l1.91,1.05l0.27,1.67l-1.81,4.7l2.63,1.2l4.0,-1.09l3.66,2.93l2.75,-0.24l1.91,-1.86l2.69,-0.58l16.8,2.31l7.86,6.49l5.42,9.47l2.7,2.03l9.5,1.19l3.6,2.65l9.78,1.99l6.52,7.16l2.02,-0.39l0.88,-1.78l2.78,0.48l3.93,4.79l0.34,3.8l4.41,0.43l0.68,1.93l4.54,0.01l1.4,7.09l1.82,3.55l2.66,3.27l4.54,-0.09l0.05,1.7l-1.83,-0.84l-1.22,0.49l-4.33,7.22l-2.36,1.97l-2.46,4.91l-1.34,0.47l-3.61,4.54l-2.19,5.78l-6.67,3.07l-1.74,2.02l-2.34,-1.8l-2.49,-0.51l-1.94,0.61l-1.54,1.74l-2.87,0.17l-4.96,-3.76l-6.85,-1.13l-2.29,1.4l-5.49,-2.92l-2.95,0.49l-7.2,-1.35l-4.07,-4.73l-3.57,-0.96l-7.05,-4.95l-2.72,0.54l-1.43,3.69l-5.84,-3.84l-4.11,0.38l-1.12,-2.03l0.37,-1.58l4.46,-1.87l-0.55,-4.3l3.3,-4.0l0.34,-3.93l2.01,-1.26l-0.1,-3.74l-1.98,-1.71l-3.89,-0.98l0.98,-1.78l-2.59,-2.25l-5.2,2.47l-0.85,1.93l-1.58,0.83l-1.15,-3.8l-3.81,-0.15l1.95,-4.16l-1.22,-3.27l-2.17,-0.63l-1.56,2.65l-1.53,-0.12l0.36,-3.28l-1.51,-0.95l-3.16,0.02l-1.96,-2.64l-0.4,-4.96l-4.9,-0.99l-2.23,-2.37l-4.23,-1.85l-1.64,-3.66l-2.26,-0.91l-0.96,-1.62l-6.41,-1.99l0.94,-4.35l-1.14,-1.64l3.71,-2.88l1.44,-2.71l4.97,-4.51l0.74,-1.81l2.62,-1.55l12.58,-0.17Z",name:"Virovitičko-Podravska"},"hr-sb":{path:"M313.57,503.12l-0.15,-0.83l2.03,-1.62l4.43,4.24l3.02,1.26l4.35,-1.99l3.44,-3.82l2.07,2.0l6.19,3.13l2.56,-5.93l-0.56,-1.26l-1.64,-0.47l3.11,0.03l2.52,-4.68l-2.12,-2.36l0.77,-1.33l2.67,0.45l2.62,2.15l2.34,-1.72l0.69,-2.21l-3.5,-2.48l-1.44,-2.85l3.21,-0.88l3.64,-2.47l0.13,-1.17l-1.64,-1.82l4.08,-5.58l-2.69,-3.46l-6.57,-2.28l-0.7,-1.07l4.77,0.89l1.64,-0.57l2.59,-4.05l2.13,0.22l4.79,-5.45l3.51,-1.93l1.58,-3.21l5.54,-5.51l2.29,1.99l1.46,4.6l9.01,3.16l4.71,3.17l1.52,-0.06l1.17,-1.75l6.15,-3.06l1.49,-4.7l-0.13,-3.65l2.29,-4.14l4.64,0.81l8.75,-1.3l0.5,2.66l9.51,6.83l1.68,6.33l3.3,1.0l1.17,4.76l4.02,2.11l13.54,11.37l9.24,2.48l1.85,1.57l1.87,4.19l-10.22,-0.1l-4.5,2.1l-2.72,2.58l-4.62,0.77l-1.9,2.19l0.99,1.74l-0.65,0.57l-3.25,0.82l-4.28,-1.32l-2.5,5.76l0.85,2.59l8.71,5.52l5.93,6.69l-2.7,0.78l-4.65,3.91l-6.7,3.71l0.0,1.56l1.65,1.74l-3.61,3.47l2.74,3.39l-1.46,3.23l-1.9,1.04l-5.86,-0.73l-2.12,0.93l-4.13,-1.43l-2.78,4.68l-6.49,-2.1l-1.68,-1.34l-4.12,-0.52l-4.64,10.66l-2.39,1.7l-0.54,3.08l-4.03,-0.93l-3.45,1.94l-0.9,1.77l1.04,4.14l2.42,2.76l0.45,2.17l2.9,1.18l-1.46,1.12l-2.79,-0.87l-3.56,1.0l0.35,1.7l3.86,1.83l-0.63,0.8l-5.9,0.21l-1.61,1.5l-1.86,-0.08l-0.56,-1.07l-1.32,1.85l-0.43,-1.79l-1.33,0.76l-1.09,-0.65l1.16,-0.53l-0.35,-0.68l2.35,0.46l1.77,-1.32l-0.99,-3.24l1.3,-0.6l-2.38,-0.91l-1.07,0.71l0.52,0.88l-1.55,-0.2l-0.4,0.66l-0.02,-1.68l-3.74,-1.02l-1.2,-1.44l2.61,-1.09l0.13,-1.79l-1.16,-0.25l-0.58,1.02l-2.13,-1.28l2.32,-1.38l-0.45,-1.33l-1.08,-0.19l0.59,-1.46l-1.09,-1.62l1.18,-1.2l-1.3,-1.12l-0.15,-2.43l8.51,0.16l-4.74,-1.53l-1.06,-1.23l-4.32,0.1l3.42,-0.92l2.81,2.13l0.44,-2.71l-1.85,-2.51l-2.44,-1.37l-4.35,-4.92l-2.09,0.77l-4.31,-4.88l-8.29,-4.36l-2.6,-2.41l-5.01,1.23l-1.71,-1.59l-5.88,-1.64l-5.93,-5.77l-2.55,0.31l-3.6,-2.87l0.11,-0.56l1.61,1.82l1.2,-1.27l1.95,0.2l3.49,1.64l0.94,1.8l0.71,-1.43l-1.16,-2.45l-1.88,-0.29l-6.08,-4.95l-5.23,-0.92l-1.87,-1.79l-0.4,-1.71l-0.77,0.9l-1.34,-0.63ZM313.57,504.3l0.14,-0.06l0.15,-0.13l-0.16,0.21l-0.14,-0.01ZM325.64,515.96l1.27,2.08l-0.47,0.74l2.9,2.92l-1.57,0.17l-4.07,-1.69l-2.05,-3.66l-2.82,-0.91l-4.35,-5.81l0.91,-0.22l2.37,2.31l1.13,-2.16l0.27,1.39l1.01,-0.23l-0.12,2.34l1.41,1.74l1.27,0.15l0.79,1.8l2.13,-0.96ZM373.91,565.14l0.29,0.6l-0.88,0.13l0.0,-0.12l0.59,-0.61ZM379.97,571.91l0.57,0.72l-0.7,0.41l-0.4,-0.46l0.53,-0.66ZM375.5,567.0l0.09,-0.27l0.08,-0.1l0.0,0.37l-0.18,0.0ZM375.68,566.57l0.04,-0.04l-0.04,0.05l0.0,-0.01ZM375.79,566.45l-0.07,0.07l0.0,-0.15l0.07,0.07ZM366.55,539.22l0.04,-0.34l0.29,-0.05l0.05,0.07l-0.39,0.31ZM364.55,557.93l-0.25,-0.05l-0.15,-0.12l0.21,-0.05l0.18,0.23ZM364.11,542.76l0.0,-0.04l0.26,0.02l-0.18,0.2l-0.08,-0.18ZM354.04,535.31l-1.02,-1.2l1.86,0.77l0.5,-2.14l0.97,0.54l3.08,3.75l-0.25,2.48l0.75,1.27l-0.59,-0.55l-0.39,-1.15l-4.89,-3.78ZM359.91,540.8l0.04,0.04l0.0,0.11l-0.04,-0.09l0.0,-0.06ZM351.46,531.01l-0.17,-0.26l0.0,-0.04l0.37,0.4l-0.2,-0.1ZM351.42,540.5l-0.04,-0.1l0.0,-0.08l0.09,0.06l-0.05,0.12ZM348.13,528.17l-0.99,-1.15l0.19,-0.56l3.07,3.21l-1.89,-0.16l-0.38,-1.34ZM348.51,529.56l0.63,0.65l0.07,0.12l-0.5,-0.47l-0.21,-0.3ZM349.04,538.57l0.03,-0.03l0.0,-0.19l0.05,0.31l-0.07,-0.09ZM347.64,537.25l0.0,0.68l-0.07,0.07l-0.15,-0.86l0.22,0.11ZM343.11,529.78l-0.57,-0.84l0.59,-0.67l2.9,2.18l0.19,0.66l-1.53,-0.16l0.0,0.31l0.8,0.96l0.0,0.17l0.09,0.11l0.0,0.05l-2.46,-2.78ZM340.9,534.44l0.22,-0.99l4.79,3.29l-0.36,0.61l-1.26,-1.26l-1.26,0.56l-2.13,-2.21ZM343.85,539.95l-0.19,-0.19l0.14,0.1l0.05,0.09ZM340.44,539.3l0.14,0.0l0.08,0.06l-0.2,-0.04l-0.02,-0.02ZM341.06,547.73l-0.45,-0.1l-0.1,-0.18l0.19,0.0l0.37,0.28ZM320.75,538.89l1.76,1.18l2.39,-0.45l2.93,1.63l0.89,-0.61l3.85,4.1l2.21,0.15l0.49,0.53l-0.74,0.98l-2.15,-0.96l-0.45,1.03l-3.58,-1.51l-5.41,-4.82l-0.36,0.82l-1.88,-0.72l0.06,-1.35ZM335.32,545.47l-0.02,-0.02l0.99,0.05l1.62,1.05l-2.59,-1.08ZM336.1,546.81l-0.03,-0.08l0.02,-0.02l0.01,0.01l0.0,0.08ZM337.97,546.58l0.67,0.1l0.25,0.33l-0.59,-0.2l-0.33,-0.23ZM331.09,531.15l-0.23,-0.22l0.02,-0.03l0.46,0.2l-0.25,0.05ZM331.9,531.19l3.66,2.73l1.31,2.3l1.74,-0.37l-0.95,0.74l0.21,0.88l-1.09,0.3l0.38,0.7l-2.78,-1.17l-0.12,-0.72l1.87,0.77l0.57,-0.55l-4.62,-3.24l0.83,-0.48l-1.01,-1.89ZM325.68,532.75l0.72,0.34l0.25,0.89l-0.8,-0.8l-0.16,-0.43ZM327.62,534.76l0.47,-0.18l1.12,1.12l-0.11,0.09l-1.48,-1.03ZM329.71,535.99l1.12,-0.47l0.42,0.97l1.62,0.56l0.38,0.73l-1.89,-0.04l-1.65,-1.74ZM328.93,533.95l-0.05,-0.11l0.0,-0.23l0.12,0.1l-0.08,0.24ZM318.38,529.7l0.38,0.0l0.19,0.23l-0.42,0.05l-0.15,-0.28ZM316.36,508.09l0.07,0.0l0.04,0.12l-0.11,-0.12ZM316.66,509.36l-0.16,-0.02l0.07,-0.12l0.17,0.0l-0.08,0.14ZM314.05,507.64l0.22,-0.48l0.71,0.33l-0.58,0.44l-0.36,-0.29ZM310.71,505.33l-1.1,-1.12l0.06,-0.29l2.06,0.93l0.08,1.0l-1.1,-0.52ZM313.7,505.95l-0.05,0.03l-0.25,-0.26l0.42,-0.06l-0.11,0.29Z",name:"Šibensko-Kninska"},"hr-va":{path:"M356.44,52.92l0.39,-0.46l0.11,-0.09l-0.31,0.41l-0.19,0.14ZM358.04,51.5l21.64,-7.09l3.03,-3.93l4.18,-1.13l1.25,-1.12l-1.15,-6.89l1.04,-1.32l11.56,-3.2l2.63,0.24l6.49,2.63l5.41,0.71l3.76,-0.44l3.58,2.09l1.32,-0.26l6.99,7.36l1.2,3.31l3.97,2.47l4.13,-1.57l6.93,1.24l1.96,-2.02l1.11,1.05l7.13,2.15l4.57,-0.85l1.7,-2.35l1.66,-0.69l7.32,4.03l4.32,0.01l1.45,-1.41l1.92,0.66l2.23,-1.04l7.42,-0.18l1.11,1.11l2.01,-1.48l-0.83,1.73l3.86,1.92l0.55,3.89l-1.59,1.22l0.48,2.36l-1.13,1.34l-2.78,1.19l-2.53,3.28l-2.42,0.54l-1.15,2.32l-2.55,1.84l-7.62,0.96l-6.58,-1.39l-4.82,2.73l-2.05,2.02l-0.24,2.1l-6.31,0.04l-2.37,0.82l-0.72,0.91l0.04,3.01l-3.09,1.58l-3.35,0.43l-3.36,-2.71l-6.76,3.26l-0.86,1.29l0.6,2.65l-2.57,2.56l-0.26,1.6l-2.12,1.41l-0.05,5.31l0.95,1.69l-1.32,3.16l-3.03,-0.07l-3.49,2.47l-2.94,-1.67l-0.15,-4.02l-2.12,-0.91l-1.66,-4.35l0.28,-2.55l-2.09,-1.76l1.31,-2.71l-1.31,-2.76l1.9,-3.52l-0.73,-0.81l0.37,-1.71l-2.36,-3.51l0.81,-3.24l-6.47,-0.43l0.92,-2.5l-1.93,-1.14l-4.3,2.0l-3.21,3.67l-5.33,0.24l-0.55,-2.3l-2.65,-0.95l-8.38,1.91l-5.6,0.02l-1.39,-2.39l-6.06,-0.21l-0.66,-2.28l-2.5,-1.99l-6.78,-1.79l0.47,-4.24l-0.42,-3.14l-0.89,-0.48Z",name:"Varaždinska"},"hr-vs":{path:"M768.47,277.13l-3.6,-4.49l-3.56,0.06l-2.08,-1.16l-2.38,-3.61l1.95,-4.82l4.09,-6.05l1.53,-1.53l3.57,-1.16l0.79,-5.39l-0.6,-1.37l-7.89,-1.12l-1.28,-1.18l0.9,-2.36l-0.6,-6.25l4.05,-2.15l4.86,0.89l1.64,-1.07l1.47,-2.79l7.14,0.51l-2.31,-6.37l4.21,-1.36l-0.52,-6.61l5.03,-0.17l5.07,-2.93l5.15,-1.04l2.64,0.48l1.19,1.78l3.97,-1.09l0.77,-2.8l-1.83,-2.33l2.34,-2.78l-0.91,-1.8l2.8,0.28l3.78,-1.57l2.16,-2.86l4.03,-0.43l4.11,2.17l1.55,3.03l3.15,2.63l0.79,2.64l3.24,-1.42l5.23,0.23l1.39,3.76l-4.78,1.51l-1.83,1.96l-0.1,2.46l2.3,2.63l5.35,3.65l9.0,1.88l2.36,7.21l10.59,5.5l16.74,6.21l19.72,1.36l1.8,1.58l0.32,2.37l2.42,1.79l-1.88,1.75l-0.29,2.05l-2.16,0.95l-6.04,-0.8l-2.93,2.2l-0.93,-0.2l-2.87,-5.49l-6.9,-2.4l-0.52,0.46l0.92,4.67l-8.04,-0.75l-5.51,-5.05l-4.42,-0.59l-0.54,2.98l3.31,1.02l-1.4,4.22l-4.64,5.32l-9.33,-0.94l-0.86,3.49l0.4,2.71l1.34,4.79l1.6,1.05l-1.43,3.03l0.71,3.38l2.04,2.73l-0.47,2.72l0.91,1.89l-2.91,3.04l-4.99,3.29l1.13,1.62l4.72,-0.33l2.41,0.76l4.58,-1.64l1.11,3.61l2.18,0.87l-9.8,6.47l-2.55,-0.07l-2.3,2.83l-5.2,-2.81l-5.36,3.13l5.95,6.95l-5.88,1.41l-19.19,-0.73l-2.63,-0.93l-12.35,-8.51l-0.78,-1.54l0.52,-1.85l-2.02,-2.1l0.41,-0.85l5.35,1.38l1.6,-0.84l-2.99,-6.57l2.44,-3.75l-7.6,-1.48l-2.9,0.55l0.66,-4.46l-3.96,-3.56l-2.98,-0.88l-3.08,-3.71l2.44,-2.86l-0.95,-2.91l-2.27,-0.13l-2.34,1.34l-0.53,1.76l1.21,2.96l-0.95,0.55l-6.02,-0.81l3.78,-3.87l-0.45,-1.71l-1.83,0.21l-2.43,1.93l-1.61,-0.6l-1.46,-1.88l-1.91,-0.07l-0.99,1.38l2.0,1.96l-0.24,1.76Z",name:"Vukovarsko-Srijemska"},"hr-me":{path:"M423.72,31.52l1.41,-0.59l0.27,-1.4l-0.57,-2.02l-3.95,-5.07l-1.71,-4.79l-0.26,-10.78l1.37,-2.18l2.21,-1.41l2.71,-0.24l6.69,-2.63l4.14,2.0l3.32,-1.52l4.36,2.91l4.37,0.36l5.36,2.26l2.45,1.51l2.59,3.96l4.16,0.59l2.35,1.36l6.21,0.28l1.28,1.6l7.6,1.81l-0.51,2.52l1.12,0.49l1.01,-0.6l1.11,1.19l6.0,9.36l1.01,0.05l1.28,-1.85l0.68,2.12l1.22,0.84l1.27,-0.57l0.89,1.48l1.72,-0.9l1.24,0.97l1.43,-1.29l1.61,0.07l2.43,2.78l1.11,-0.31l1.33,0.89l0.55,-1.09l-0.19,1.72l1.95,0.53l1.4,1.69l-1.64,2.2l1.08,1.8l-5.71,7.73l-1.07,-0.52l-1.17,-2.88l-3.53,0.15l-1.55,-0.78l-0.94,1.11l-2.24,-0.54l-1.02,-0.73l0.89,-1.52l-0.88,-0.89l-1.94,1.36l-1.23,-1.0l-7.5,0.18l-2.26,1.04l-2.12,-0.62l-1.32,1.38l-4.11,-0.03l-7.41,-4.05l-2.12,0.9l-1.47,2.19l-4.34,0.82l-6.87,-2.12l-1.26,-1.1l-2.17,2.05l-6.83,-1.26l-3.95,1.57l-3.55,-2.23l-1.15,-3.25l-6.66,-7.1ZM510.14,37.53l0.34,-0.1l0.33,0.01l-0.12,0.3l-0.55,-0.21Z",name:"Međimurska"},"hr-sd":{path:"M380.8,571.81l0.95,-1.66l4.49,0.13l2.73,-1.24l-0.1,-1.28l-3.7,-1.7l-0.38,-0.89l2.88,-0.58l2.85,0.86l2.03,-1.48l-0.21,-1.18l-2.69,-0.87l-0.39,-2.08l-2.41,-2.72l-1.01,-3.62l0.77,-1.47l3.04,-1.68l4.59,0.79l0.46,-3.35l2.3,-1.52l4.6,-10.6l11.67,4.23l3.12,-4.81l3.77,1.48l2.19,-0.92l6.93,0.43l1.42,-0.98l1.68,-3.25l-0.77,-2.2l-1.87,-1.58l3.48,-3.44l-1.79,-3.01l6.5,-3.52l4.63,-3.89l3.1,-0.8l0.23,-0.65l-6.45,-7.29l-8.59,-5.37l-0.74,-1.92l2.28,-5.23l2.89,1.31l2.92,-0.23l2.49,-1.39l-0.95,-1.85l1.94,-2.11l4.22,-0.54l2.8,-2.62l4.33,-2.01l8.78,-0.4l3.19,2.74l4.37,1.16l2.91,4.65l7.98,6.59l7.56,3.95l1.97,3.68l0.22,6.98l1.61,1.72l2.33,0.77l1.11,3.73l8.86,2.63l4.09,3.59l1.95,2.31l1.65,4.43l4.24,1.91l5.98,8.53l14.92,15.71l9.29,3.95l3.07,3.84l2.0,1.07l7.52,2.1l5.78,0.48l12.57,6.56l-2.98,2.53l-1.7,4.04l-0.3,7.1l11.49,24.18l13.08,7.23l1.58,1.66l-0.82,3.94l2.84,1.59l-2.07,4.37l-3.78,1.25l-6.02,-1.31l-4.28,0.5l-0.46,2.17l4.88,-0.05l1.56,3.52l2.93,3.31l-7.75,4.09l-2.45,-3.97l-7.43,-3.15l-0.98,-2.04l-3.47,-2.35l-2.82,-0.41l-5.54,-2.91l-2.85,0.05l-2.81,-1.43l-2.33,-3.01l-2.1,-0.12l-3.81,-2.43l-0.63,-3.28l-4.46,-1.48l-0.35,-1.51l-1.84,-1.17l-1.43,-3.77l-5.26,-3.24l0.06,-1.24l-9.38,-9.19l-1.47,-2.58l-7.9,-5.75l-1.5,-2.35l-8.68,0.0l-15.86,-2.35l-2.06,-1.22l-2.75,-4.16l-7.89,0.81l-2.64,-2.72l-6.58,-2.24l-6.34,-4.86l-1.2,-2.41l-1.55,0.91l-3.75,-0.55l-5.78,0.61l-2.2,-0.26l-1.02,-1.43l-1.56,1.33l-4.95,-1.23l4.66,-0.89l0.57,-0.86l-0.58,-0.67l2.17,-0.98l0.33,0.77l0.95,-0.82l3.43,0.51l1.39,-1.22l-0.97,-1.11l-4.78,-0.36l-1.45,-1.3l-12.82,-1.06l-5.3,2.05l-1.94,2.31l-3.1,0.2l-4.31,1.99l0.52,0.76l7.41,0.32l10.97,4.77l-9.16,0.25l-6.08,-1.89l-0.75,1.4l-3.79,0.8l-4.34,-1.07l-1.4,-1.4l2.84,-0.16l1.83,1.33l0.68,-0.61l2.18,0.36l0.99,-0.96l-0.59,-2.52l-1.75,-0.17l-0.13,-1.13l-3.19,-0.53l-6.02,1.89l-1.02,-0.98l-2.62,0.11l-4.38,-1.38l-0.95,0.72l-1.18,-0.36l-0.73,1.85l8.73,2.07l0.56,1.16l-0.57,0.86l-4.98,0.77l-4.08,-1.28l0.0,1.31l2.02,1.02l-1.6,0.89l-3.07,-0.31l-3.94,-2.25l-1.37,1.79l-1.58,-1.02l-1.04,0.31l0.68,-1.6l-3.77,-0.6l-0.65,-1.8l-1.73,1.27ZM437.37,573.6l0.37,-0.23l0.96,-0.2l0.25,0.02l-1.58,0.41ZM436.82,627.34l2.53,-0.28l0.73,1.23l0.65,-0.58l2.5,0.99l1.07,-1.52l0.44,1.11l0.97,-0.15l1.04,-1.82l2.36,-0.07l0.24,-0.97l1.57,0.61l1.04,-1.02l3.27,0.36l0.44,0.71l0.96,-0.66l2.84,0.71l2.35,2.61l3.86,1.94l2.23,-0.36l2.08,-1.21l-2.57,-1.17l-0.48,-2.3l-1.03,0.37l-0.8,-0.71l-0.86,-2.78l-2.86,1.08l-2.11,-1.57l0.62,-0.74l0.99,1.16l0.41,-0.76l1.9,0.61l-0.07,-1.67l2.67,0.65l0.45,-0.67l-0.47,3.39l1.98,0.14l0.19,1.58l3.89,-2.41l1.54,1.34l4.2,-0.2l0.86,-0.93l2.44,0.96l-0.79,2.24l4.08,3.16l-2.02,0.39l2.78,1.83l0.26,1.63l2.12,-0.11l2.25,1.14l3.3,-1.13l4.77,0.88l5.42,0.0l1.55,-0.71l2.02,0.26l0.56,0.92l3.66,-0.15l0.2,-0.92l1.18,-0.05l1.74,2.45l1.31,-1.28l0.58,0.82l9.36,-0.26l8.28,1.98l1.52,-0.5l1.44,0.92l11.06,0.82l5.76,-0.92l4.87,1.02l0.88,0.25l0.88,0.36l0.21,0.18l-11.36,2.23l-2.11,-0.87l-6.53,0.87l-1.46,-0.77l-6.25,0.77l-3.93,-0.77l-1.73,0.86l-5.22,0.1l-23.16,-2.75l-17.92,1.12l-11.49,-2.35l-3.21,-1.39l-3.36,0.47l-8.71,-4.24l-2.8,0.9l-2.87,-0.8l-1.31,-1.79l-9.85,-3.82ZM560.13,639.59l-0.01,-0.01l0.0,-0.01l0.01,0.01l-0.01,0.0ZM446.74,626.3l0.01,0.0l0.0,0.01l0.0,-0.01l0.0,0.0ZM446.66,626.18l0.0,0.0l0.0,0.0l0.0,0.0ZM477.1,623.7l-0.16,-0.23l-0.04,-0.24l0.29,0.1l-0.08,0.37ZM484.86,629.58l0.0,0.0l0.0,0.0l0.0,0.0ZM442.31,602.13l2.13,1.94l2.31,-0.87l-0.78,-3.58l4.08,-1.3l-2.33,-1.34l0.81,-1.67l-1.57,-1.76l-0.99,0.02l-0.69,-1.76l1.38,-0.67l10.82,1.74l5.2,-0.87l5.02,1.43l2.5,-0.26l0.19,0.92l1.7,-0.8l5.3,0.85l1.07,0.87l0.56,-0.65l1.8,0.96l1.97,-0.31l8.31,1.74l-0.19,2.71l1.96,-0.4l-0.33,-2.27l5.33,0.77l0.61,1.53l0.61,-0.98l1.84,0.06l2.62,1.24l-2.76,0.31l-0.61,0.71l0.57,0.71l2.17,-0.36l0.65,0.77l0.72,-0.63l1.86,0.99l1.21,-1.43l3.3,1.9l0.44,1.17l4.69,1.81l-1.8,1.38l0.34,0.86l-1.78,2.6l0.43,0.61l-2.31,-0.78l0.08,1.09l-2.21,1.9l-1.13,-0.66l-0.89,1.02l-3.34,-0.1l-4.69,1.22l-4.57,-0.51l-17.82,1.31l-18.4,-3.17l-2.77,-3.0l-0.72,0.7l-1.06,-1.26l-1.15,0.05l-1.43,-2.4l-1.53,1.47l0.55,-1.07l-0.57,-0.71l-1.74,-0.46l-0.01,1.14l-1.01,-0.07l-0.27,-1.48l-1.29,0.64l-2.37,-1.08l0.01,-2.49ZM456.08,611.11l-0.11,0.14l-0.07,0.07l-0.03,-0.05l0.21,-0.16ZM512.17,603.46l0.0,0.0l0.0,0.0l0.0,0.0ZM470.31,593.15l-0.01,0.0l0.01,-0.01l0.0,0.0ZM480.77,646.81l3.38,-1.68l1.75,1.48l1.83,-1.07l2.89,0.38l1.11,0.95l-4.68,1.04l-6.27,-1.1ZM443.08,634.75l-0.26,-0.2l0.6,-0.29l-0.13,0.27l-0.21,0.22ZM443.46,634.22l-0.02,0.02l0.02,-0.02l0.0,0.0ZM430.97,631.71l0.04,0.0l-0.04,0.04l0.0,-0.04ZM431.64,631.31l1.36,-0.28l2.57,2.05l1.07,-0.67l1.11,1.13l0.77,-0.77l1.38,0.82l-1.55,0.54l-1.63,-1.29l-0.63,0.81l-2.05,-1.27l-1.05,0.6l0.02,-1.01l-1.38,-0.67ZM433.06,630.98l-0.03,0.02l0.03,-0.03l0.0,0.0ZM436.13,633.68l-0.01,-0.01l0.02,-0.01l0.0,0.01l-0.01,0.01ZM440.4,633.39l0.1,0.06l0.1,0.2l-0.24,-0.23l0.04,-0.02ZM440.35,633.43l0.0,0.0l0.01,-0.01l0.0,0.01ZM430.54,632.24l-0.01,0.0l0.01,-0.01l0.0,0.01ZM411.73,588.4l-1.04,-0.88l11.13,0.3l2.75,1.27l1.04,1.84l0.93,-1.06l1.23,0.6l-0.42,2.51l2.04,-0.49l0.48,-1.49l3.13,3.87l1.36,-0.05l0.6,2.46l3.22,3.26l1.03,-0.05l0.8,1.91l-0.99,-1.43l-1.31,1.79l-0.57,-1.45l-1.37,0.53l-0.35,-1.63l-1.23,0.97l-6.23,-2.56l-1.07,-2.02l-3.0,-0.96l-0.84,-1.33l-0.96,0.77l-2.45,-1.69l-4.1,-0.71l-0.38,-0.91l-2.91,0.45l-0.47,-0.61l0.69,-1.03l-1.39,-0.32l0.65,-1.86ZM429.67,590.63l0.0,0.15l0.08,0.08l-0.12,-0.12l0.04,-0.11ZM427.69,631.32l-0.04,-0.04l0.0,-0.08l0.13,0.14l-0.09,-0.02ZM389.26,654.07l-1.26,-1.05l4.27,-2.69l5.45,-1.08l2.23,0.52l2.93,-1.12l3.87,-0.15l0.94,1.12l1.3,0.01l-1.28,2.14l1.44,1.0l2.62,-2.54l2.37,-0.61l0.57,0.56l1.19,-0.77l0.62,2.13l0.93,-1.27l0.93,0.89l-0.45,2.44l-3.01,1.53l-0.63,2.14l-0.99,1.22l-1.28,-0.22l-0.45,1.19l-1.86,-1.22l-0.26,1.07l-3.48,-0.46l-0.31,0.82l-1.02,-0.37l-7.61,2.04l-6.19,0.27l0.15,-0.88l3.36,-2.16l0.17,-2.21l-1.66,-2.54l-3.2,1.38l-0.39,-1.12ZM410.49,658.8l0.01,0.01l-0.01,0.01l-0.01,-0.01ZM414.17,659.76l0.07,0.0l0.03,0.04l-0.08,-0.02l-0.02,-0.02ZM409.4,590.91l0.0,-0.13l0.29,-0.05l-0.11,0.23l-0.17,-0.05ZM406.08,588.65l0.43,-0.22l0.66,0.71l-0.92,0.07l-0.17,-0.56ZM397.05,583.58l1.17,-1.56l1.3,-0.29l-0.43,-1.44l1.99,0.57l1.17,-0.56l-1.61,-1.39l3.65,0.15l1.86,1.72l-0.81,2.42l-2.06,-1.21l-1.57,0.81l0.05,0.83l-4.7,-0.05ZM398.52,586.1l-0.13,-0.28l0.84,0.45l-0.09,0.08l-0.62,-0.25ZM388.5,580.55l0.0,-0.26l0.42,0.12l-0.22,0.16l-0.2,-0.01ZM389.97,580.74l-0.45,-0.5l1.78,-0.67l1.99,0.05l0.31,2.43l-0.95,0.35l-0.4,-1.69l-2.29,0.03ZM384.16,576.11l0.01,-0.12l0.72,-0.2l0.0,0.12l-0.73,0.2ZM379.84,670.78l0.05,-0.18l0.34,-0.13l-0.17,0.37l-0.21,-0.06ZM380.51,670.03l-0.24,-4.83l0.49,-0.87l1.93,1.55l0.54,1.64l-0.53,2.6l-2.19,-0.1ZM339.01,659.08l3.26,-2.07l2.39,0.3l-2.61,1.96l-3.04,-0.19Z",name:"Splitsko-Dalmatinska"}},height:804.9967209703165,projection:{type:"mill",centralMeridian:0},width:900});
Index: public/vendors/vmap/maps/jquery.vmap.europe.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.europe.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.europe.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add Europe Map Data Points */
+jQuery.fn.vectorMap('addMap', 'europe_en', {"width":680,"height":520,"paths":{"gl":{"path":"M13.47,93.57C12.35,92.52 12.34,90 10.44,89.14 10.62,88.14 13.84,87.66 11.35,86.39 10.05,87.17 9.25,86.92 8.71,87.58 6.27,88.12 8.6,85.09 6.17,85.17 5.23,84.47 10.33,84.75 9.98,83.14 11.32,83.4 14.67,82.04 12.37,81.03 11.23,81.19 6.54,82.06 10.06,81.32 13.04,80.64 9.92,76.6 8.71,79.05 9.24,77.06 11.03,78.05 12.88,77.78 14.68,74.59 9.38,77.17 8.23,75.54 7.26,73.61 12.43,77.09 11.48,74.6c2.44,-0.76 -0.97,1.23 1.21,1.43 1,0.07 3.06,0.24 1.26,-0.8C15.39,74.51 14.27,73.05 14.04,72.76 16.26,70.08 9.73,69.39 11.65,72.54 9.43,70.77 7.4,69.72 5.62,68.37 4.84,67.27 3.62,65.14 5.75,64.54 6.27,63.17 3.83,63.23 6.08,62.64 8.52,60.62 3.8,58.38 3.79,56.87 4.78,56.07 3.39,53.57 4.92,55.82c2,1.48 -1.5,0.05 -0.41,1.67 0.7,1.18 4.94,4.58 4.09,1.22C7.96,57.37 6.11,57.21 8.09,56.47 5.75,56.14 4.83,52.58 8.11,53.61c1.58,0.65 2.17,-1 2.13,-1.24 1.86,-0.56 0.99,-3.89 0.14,-5.02 -2.29,-0.92 1.59,-2.34 -1.23,-2.91 0.6,-3.73 4.98,-2.29 7.51,-3.37 2.78,-1.33 -1.33,-1.73 -1.69,-3.06 -3.07,-1.99 2.8,-0.5 3.28,-2.76 2.87,0.22 -2.67,-2.82 -1.49,-3.84 1.34,0.59 4.57,3.1 4.27,-0.2C20.58,29.48 17.09,31.14 17.33,29.6c1.78,1.02 0.79,-3.69 2.33,-1.12 1.76,1.21 4.05,-0.81 1.11,-1.21 -0.72,-0.16 1.96,-1.91 2.18,-0.31 2.04,0.89 2.39,3.26 4.86,3.29 1.12,-1.58 -2.89,-2.38 -0.16,-2.31 1.35,-1.83 -5.03,-0.94 -1.14,-2.29 1.39,-1.55 1.81,4.29 2.64,1.36 -0.57,-1.39 -0.41,-4.67 1.53,-2.59 0.16,2.02 -2.74,3.73 -1.03,6.23 2.7,1.13 0.11,-4.85 3.69,-4.25 2.74,-0.7 0.37,-3.01 -1.39,-3.16 0.93,-1.59 -0.48,-0.52 -0.91,-1.1 -1.26,0.42 -2.63,-0.27 -1.15,-1.19 -0.81,-1.9 -3.85,0.74 -5.54,0.53 -3.44,0.64 1.14,-2.76 2.36,-3.3 2.28,-0.77 4.66,2.97 6.55,0.04C34.81,17.14 33.04,17.79 32.17,17.97 30.61,18.81 30.38,17.32 30.54,16.77 29.14,17.79 26.4,16.27 29.42,16.34 29.89,14.12 31.85,14.39 33.58,13.44c0.27,-2.21 -3.96,0.03 -1.92,-1.94 2.34,1.37 5.29,0.49 7.37,1.6 0.49,1.25 2.93,3.07 2.07,0.58C40.16,10.86 37.07,10.79 34.89,10.94 32.01,10.71 38.39,8.92 36.45,6.69 35.49,6.8 33.31,6.65 34.75,5.53c1.74,0.57 3.45,1.31 2.13,3.63 0.97,-0.77 3.6,0.14 4.92,-0.01C42.62,6.51 37.36,8.29 39.31,5.97 39.94,4.69 35.39,5.71 36.07,3.41c2.18,-0.52 6.21,0.1 8.48,1.64 1.78,-0.72 2.84,-0.23 4.07,0.55 1.73,-0.23 3.46,0.06 2.78,2.25C52.75,9.86 54.51,8.35 52.72,6.73 52.71,4.07 54.56,10.07 55.78,8.98 56.01,5.87 52.57,4.02 49.87,3.57 48.45,2.66 43.96,4.29 45.02,2.48 44.96,1.07 43.75,0.16 45.71,1.28 47.56,3.52 50.55,-0.47 53.01,0.78 55.13,-0.05 52.02,4.62 54.57,4.07 55.09,3.62 56.43,7.62 57.26,5.53 57.36,3.28 54.5,4.61 54.71,2.93 54.66,0.68 56.28,0.89 57.93,0.78 59.1,1.36 57.92,5.72 60.98,5.64 61.74,4.33 57.63,0.17 61.09,2.11 61.53,3.09 65.18,3.43 63.42,2.17 61.88,1.53 60.02,-0.12 62.69,1.24c1.18,0.74 1.27,-0.27 2.37,-0.09 0.49,-0.8 2.06,-0.17 3.01,-0.37 45.89,0 91.78,0 137.67,0 0.61,1.21 1.15,3.04 -0.24,1.09 -2.48,-0.7 1.23,2.94 1.58,3.94 1.63,2.86 -1.86,0.67 -3.36,1.88 1.28,-1.72 -2.26,-4.24 -1.57,-1.36 0.03,2.25 1.64,3.73 3.68,2.39 1.03,0.77 -1.42,2.8 -1.62,3.53 -3.09,0.12 0.02,1.62 1.04,2.22 0.66,2.09 4.04,0.64 2.3,3.22 -1.05,1.95 -3.92,1.82 -3.21,-0.86 0.14,-3.28 -4.67,-1.36 -4.04,-5.02 -2.02,-0.71 -0.18,3.84 -2.96,2.48 -0.73,0.74 0.41,1.75 -1.42,1.32 -2.61,0.54 1.71,4.84 -0.38,4.25 -1.39,0.66 -1.21,4.72 0.33,2.08 -0.04,-1.13 1.18,-4.09 2.39,-2.05 0.43,1.69 3.14,3.16 0.34,3.59 0.86,3.33 -3.29,2.48 -4.22,0.42 -0.56,1.42 -4.92,2.25 -4.96,-1.01 -1.09,-1.09 -0.61,-6.28 0.38,-2.79 -0.38,2.15 4.88,3.94 3.74,1.34 -3.75,0.99 -2.13,-7.24 -6.06,-4.79 -0.93,1.3 -1.66,1.94 -1.57,-0.09 0.87,-1.48 -0.65,-6.36 -1.62,-2.76 -0.29,1.71 1.87,5.7 -1.38,4.23 -1.61,0.79 -3.43,1.95 -3.68,-0.56 -1.68,-1 0.16,-4.48 -2.68,-3.04 -0.67,1.11 2.68,6.25 0.02,3.71 -0.94,-1.89 -3.02,-1.6 -4.56,-0.77 1.83,0.09 2.37,0.85 0.57,2.18 0.59,2.05 2.81,-2.2 3.66,0.12 1.38,0.4 3.13,-0.11 3.81,2.17 2.43,3.24 -2.95,0.83 -4.01,1.04 -0.05,-1.82 -4.79,-3.3 -3.23,-1.13 1.49,0.95 1.71,0.82 0.15,1.51 -1.1,2.37 1.53,3.48 2.9,1.87 3.12,-1.53 5.02,4.79 1.15,3.53 -2.62,-0.97 -1.48,2.05 -3.89,2.7 -0.43,2.18 2.56,-0.04 2.88,-0.79 2.47,-0.74 2.4,2.46 3.26,3.28 -2.41,2.08 2.06,1.61 0.72,3.86 0.87,0.94 2.37,2.01 0.05,2.28 -2.05,0.35 -0.86,2.02 0.59,1.45 -1.67,-0.11 -1.69,1.85 -1.36,2.27 -1.73,0.52 -2.08,4.37 -0.55,3.78 -0.25,-2.23 4.33,-2.23 2.08,-0.24 -2.82,-0.46 -0.7,2.99 -3.43,2.2 2.08,0.81 0.22,1 -1.03,1.19 -1.32,0.16 3.49,1.1 1.39,1.26 -1.9,0.07 -0.29,1.99 -2.31,1.42 1.18,0.54 1.34,1.84 1.35,2.8 -2.18,2.04 -4.44,-0.74 -2.18,-2.64 1.63,-0.69 0.76,-4.19 -0.17,-2.1 -0.64,2.71 -4.66,4.66 -4.98,0.68 -0.13,-3.43 1.98,-6.57 2.12,-10.01 -0.26,-1.47 -2.38,-1.12 -1.92,-3.26 0.2,-2.67 -2.43,-4.09 -3.97,-4.66 0.54,-2.82 0.04,-5.39 -1.15,-7.72 0.49,-2.96 -3.2,-2.36 -2.3,0.29 0.39,1.99 2.16,3.98 1.82,5.79 -0.98,-1.18 -4.72,-2.37 -4.53,0.09 1.53,0.74 4.96,0.32 3.23,3.09 -0.36,0.92 2.65,-0.97 2.92,1.14 1.39,1.16 4.2,3.13 1.09,4.33 -2.3,0.81 -7.78,0.76 -7.23,-2.79 1.56,-1.72 -2.19,-2.27 -1.32,0.16 -1.72,-2.55 -3.53,-0.09 -1.9,1.66 -2.13,2.01 -4.41,0.62 -6.81,0.57 -2.19,2.71 4.76,1.16 2.08,3.05 0.58,1.9 4.08,1.91 5.81,2.83 1.96,1.43 -0.47,2.15 -1.35,0.46 -1.82,-1.08 -3.45,2.21 -4.74,-0.62 -0.64,-2.28 -4.68,1.1 -2.47,0.81 1.98,0.42 2.27,5.38 5.07,2.98 1.84,-3.35 3.57,2.14 6.26,0.44 1.29,-0.17 2.13,-0.02 0.67,0.65 1.09,1.24 2.33,0.17 2.6,1.96 1.19,2.8 4.25,5.41 6.32,6.4 -0.65,1.36 -3.26,-1.74 -3.14,1.07 -0.24,-1.71 -1.8,-0.78 -1.41,0.45 -1.2,-0.78 -1.84,-2.07 -1.82,0.08 -0.39,2.77 -2.92,-1.74 -2.76,-0.46 0.55,1.51 -0.55,2.28 -0.85,0.45 -2.38,-1.66 -2.14,3.66 -3.7,0.79 -1.88,-0.98 -0.85,3.28 -2.38,0.99 -2,-0.69 -1.48,2.95 -3.73,1.98 -1.43,0.57 -1.73,-1.87 -2.48,0.33 -1.28,0.15 -2.02,-1.77 -3.67,-0.49 -1.51,-0.59 -3.89,-0.69 -5.18,-1.79 -1.83,0.4 -3.94,-2.71 -4.99,0.05 -1.52,0.2 0.6,-5.44 -2.51,-2.84 -0.5,1.46 -2.44,2.79 -1.46,0.41 -0.04,-2.08 -3.47,-2.35 -1.81,-0.01 -0.33,2.95 -2.47,-1.46 -3.31,-2.22 2.66,-0.66 -1.9,-3.4 0.58,-4.85 0.98,-1.25 -0.43,-3.9 -1.29,-1.57 -2.2,1.2 0.59,4.8 -2.3,3.1 0.07,1.58 0.73,2.33 -0.49,2.37 -0.31,3.19 -2.4,-0.77 -3.7,1.08 -1.26,-0.57 -3.86,-0.58 -3.24,0.73 -1.86,1.54 -5.17,-0.4 -5.06,3.18 -2.02,-0.95 -3.43,1.13 -4.24,1.49 -0.67,-0.74 -1.24,2.48 -2,1.23 2.12,-2.45 -2.15,-1.8 -1.8,0.58 -2.16,1.39 -3.92,0.18 -2.08,-1.7 -1.67,0.05 -3.09,2.47 -2.5,-0.4 -0.88,-2.96 -1.92,-0.22 -2,1.13 -1.96,-0.26 -4.27,2.16 -3.76,-0.97 -0.78,-1.12 -2.93,1.49 -3.4,-0.02 1.83,-0.91 0.7,-3.4 -0.63,-1.07 -0.78,1.04 -1.78,1.59 -1.04,-0.05 -2.35,-3.54 3.85,-1.66 4.59,-3.73 -0.17,-1.96 -2.75,-5.32 -4.26,-2.64 1.79,0.66 -1.44,2.8 -2.07,2.43 -1.51,-3.02 -4.63,-0.57 -2.13,1.56 0.17,1.83 -2.38,1.81 -1.85,-0.14 -1.36,-2.38 -2.64,3.42 -2.69,-0.09 0.92,-1.47 0.05,-4.47 -1.39,-1.81 0.69,-2.4 -1.59,-1.67 -2.42,-0.69 -1.63,-2.6 -2.81,-0.08 -1.32,1.39 -0.12,2.09 -5.82,3.27 -3.43,0.33 -0.7,-1.39 -2.14,-1.09 -2.9,-2.54 -1.31,0.12 -1.87,1.12 -2.63,1.96 -0.18,2.43 -0.75,4.74 -2.05,6.98 -0.56,-1.99 -3.06,-1.81 -4.45,-3.2 -2.37,1.32 0.55,4.85 0.85,5.51 -2.93,-1.09 -0.49,5.23 -3.18,2.66C53.03,69.44 53.8,64.37 51.35,66.72c-0.01,1.25 1.67,5.14 1.03,4.67 -0.53,-2.51 -2.88,0.37 -2.61,-2.21 -1.56,-2.63 -4.32,1.46 -2.75,2.77 0.01,1.17 -1.56,2.39 -0.5,0.42 0.86,-3.51 -4.59,-2.97 -3.27,0.28 1.49,1.65 -0.07,2.95 -1.09,0.84 -1.55,-1.63 -4.28,0.31 -4.69,-2.84 -1.38,-1.87 -1.94,1.56 -0.77,2.26 -0.06,1.31 -0.47,2.49 -0.74,0.56 -1.54,-2.22 -1.58,2.78 -0.86,3.53 1.64,2.36 -5.86,1.67 -2.64,3.82 2.3,1.03 -2.22,1.12 -2.82,0.61 -1.74,0.43 1.87,2.58 -0.75,1.83C27.52,82.87 27.84,78.97 25.72,81.05c-0.33,1.79 3.97,2.08 0.81,3.67C24.18,85.6 27.77,81.48 24.7,81.96c-1.65,-0.58 -3.25,0.94 -2.07,2.52 -0.13,-1.56 -3.34,-2.97 -2.3,-0.65 0.92,1 3.65,4.19 0.68,3.11 -0.39,-1.36 -2.18,-3.54 -2.55,-1.53 -2.1,0.36 1.98,3.44 0.79,3.95 -0.52,-1.87 -2.86,-1.68 -1.64,0.35 -0.16,0.51 -2.67,-2.78 -2.9,-4.29 -1.64,-2.64 -1.84,0.81 -1.4,1.86 -0.78,1.52 2.24,0.79 1.57,2.42 -1.75,-0.73 -3.2,1.28 -0.75,1.28 -0.16,0.78 0.34,2.28 -0.65,2.59z M34.12,18.3c-1.05,0.6 -2.47,3.81 -0.57,3.47 1.95,-0.22 4.06,-4.82 0.57,-3.47z m-22.97,56.17c-2.31,-0.35 -0.79,-1.58 0,0z M2.14,66.59c-1.38,-1.11 -0.95,-1.35 0.46,-0.36 -0.18,-0.08 -0.27,0.6 -0.46,0.36z m168.23,-6.32c-0.28,-1.85 2.85,0.02 0.03,0l-0.03,0z M7.85,51.96c-0.57,-0.92 1.55,0.27 0,0z m1.18,-1.63C7.41,50.26 7.17,48.77 8.95,49.87 10,50.07 10.77,49.96 9.03,50.33z M184.09,37.53c-0.77,-1.48 -1.43,-4.23 -2.73,-6.24 -2.01,-2.67 1.21,-6.02 3.05,-2.64 0.95,1.04 0.93,3.38 1.44,4.42 -4.98,-0.16 0.39,3.51 -1.76,4.46z M23.01,25.35c-1.12,-0.81 -0.79,-3.25 0.17,-0.92 0.17,0.37 -0.49,0.58 -0.17,0.92z M209.99,8.88c0.65,-1.41 0.2,-3.29 -1.61,-3.21 -0.07,-1.5 -1.95,-5.46 0.62,-4.89 1.44,0 2.88,0 4.31,0 1.06,2.38 -1.6,4.58 -1.58,7.24 -0.32,0.7 -1.06,0.8 -1.74,0.86z M44.32,3.05c-1.74,-0.98 -6.31,0.12 -6.14,-2.09 1.47,1.81 3.05,0.95 2.25,-0.17 2.2,-0.52 2.82,0.46 3.89,2.27z","name":"Greenland"},"is":{"path":"m151.61,141.44c-2.42,-0.05 -4.73,-1.12 -5.95,-3.36 -0.71,-2.06 -4.34,-1.68 -3.81,-4.38 0.8,-0.95 3.4,-0.95 1.03,-1.6 -1.69,0.92 -0.37,-1.61 -2.18,-0.86 -0.88,-0.03 -1.32,-2.12 -2.96,-2.05 -1.43,-1.13 -6,-1.27 -4.53,-3.48 1.4,1.45 5.16,1.15 5.29,-1.63 0.95,-0.08 4.39,1.14 2.46,-0.91 -1.28,-0.31 -3.16,-1.27 -0.58,-1.35 2.41,0.51 2.39,-2.69 -0.02,-1.57 -1.25,0.39 -2.36,1.06 -1.66,-0.43 -0.34,-1.62 1.57,-4.11 -1.54,-3.94 -1.49,-1.7 -3.83,-2.36 -5.98,-2.91 1.9,-1.43 2.13,2 4.45,0.36 0.58,-0.11 0.84,1.82 1.93,0.36 1.45,0.02 2.12,1.75 4.12,1.85 1.57,1.88 4.72,-0.08 2.56,-1.73 -1.13,0.23 -4.71,-0.08 -2.41,-1.51 1.13,0.1 5.66,-0.35 3.94,-1.58 -2.53,-0.05 -1.4,-0.83 -0.29,-1.63 0.84,-2.83 -2.64,-1.96 -3.34,-1.81 -1.47,-0.72 -2,-0.85 -1.64,-2.44 2.52,0.42 0.64,-2.75 -0.27,-3.56 -0.04,-0.34 1.76,2 1.91,-0.11 -0.65,-3.43 1.88,0.34 1.11,2 -0.95,4.21 5.86,2.44 3.19,-0.73 -1.94,-1.31 0.11,-2.67 -1.13,-4.2 1.13,0.42 1.67,1.6 2.04,1.18 1.98,0.31 -0.01,2.5 1.33,3.37 0.86,1.89 -0.77,4.19 1.64,5.57 -1.28,0.64 -3.87,-0.52 -2.63,1.99 -0.4,1.18 -1.92,2.25 -0.42,2.93 -1.31,1.46 -1.09,4.59 1.22,2.7 0.49,-1.4 2.89,-6.12 2.22,-2.37 2.69,2.22 4.53,-3.04 4.48,-5.25 2.58,0.03 -0.68,6.63 3.51,5.53 -0.01,-0.74 0.05,-5.1 1.81,-2.72 1.08,-2.01 3.5,-0.36 1.83,1.62 2.1,1.36 -0.53,3.45 0.95,5.46 2.69,-0.06 0.02,-7.39 2.92,-6.07 -0.32,2.52 1.49,4.92 3.27,1.85 1.68,-2.37 1.62,3.33 3.69,1.28 1.71,-0.8 1.1,-6.38 3.47,-3.02 -0.81,1.5 1.32,1.54 -0.24,3.29 -0.5,2.17 2.82,1.16 2.36,3.29 2.02,0.52 2.1,1.62 0.19,2.57 -2.6,1.53 3.45,1.86 0.49,3.25 -0.74,0.55 -3.68,1.15 -1.27,1.34 1.72,-0.23 4.34,-1.28 4.35,1.54 -0.04,2.17 -4.93,1.21 -2.47,3.09 1.83,0.33 2.75,2.38 0.41,2.2 -1.18,-0.56 -1.74,-0.63 -0.71,0.56 -0.6,-0.3 -3.92,0.12 -2.06,0.55 2.71,0.87 -0.55,1.36 -1.7,1.52 -1.06,0.04 -2.49,1.02 -2.87,2.69 -1.35,-0.83 -1.72,1.98 -2.29,-0.35 -0.72,-2.57 -2.1,-0.68 -2.71,0.31 -2.09,-0.1 -4.17,0.18 -5.78,1.63 -1.89,0.57 -3.52,-3.04 -3.52,0.21 -2.4,-1.75 -5.62,-1.53 -6.88,1.4l-0.35,0.08 0,0z m24.31,-7.94c-1.58,1.64 1.17,1.65 0.84,-0.23 -0.28,0.08 -0.56,0.15 -0.84,0.23z M147.49,99.76c-2.33,0.02 -1.42,1.38 0.2,1.79 0.14,-0.38 0.69,-1.97 -0.2,-1.79z m33.62,15.99c1.19,-0.59 1.6,-0.17 0,0z m-44.05,-9.09c-1.62,-0.01 -0.68,-1.6 0.37,-0.74 1.34,-0.47 -0.84,-4.6 0.49,-2.48 -0.6,1.82 2.54,3.42 -0.86,3.22z m-1.42,-1.5c-1.66,0.2 -1.5,-3.06 -0.29,-0.86 -0.05,0.3 1.22,0.95 0.29,0.86z m4.48,-1.49c-0.86,-0.96 -0.83,-1.57 0,0z","name":"Iceland"},"pt":{"path":"m126.31,476.79c-3.11,-0.89 -5.74,-4.21 -9.28,-3.12 -1.78,0.38 1.76,-2.58 1.47,-3.95 0.39,-1.92 1.56,-3.11 1.18,-4.56 -0.46,-1.65 0.47,-3.6 1.4,-5.27 -0.61,-1.65 3.07,-0.14 2.33,-1.74 -1.59,-1.17 -2.48,-2.71 -4.71,-1.61 -1.89,-0.04 -2.12,-3.1 -2.67,-4.46 0.27,-2.21 3.57,-4.27 2.21,-6.5 2.42,0.37 3.47,-2.17 4.77,-3.81 0.98,-1.71 1.87,-3.43 3.16,-4.47 -0.79,-1.76 1.02,-5.31 3.28,-5.87 1.59,-1.26 -0.95,-2.63 0.8,-4.09 0.23,-2.53 -1.05,-5.19 -0.11,-7.75 2.54,0.06 0.15,-1.87 0.17,-2.24 1.59,-1.44 4.74,-3.3 6.49,-1.31 -3.35,1.53 -0.16,3.98 2.09,3.19 1.85,-0.17 3.87,2.53 6.45,0.97 1.56,-0.13 6.26,-0.07 4.22,3.05 0.22,1.77 4.81,2.08 1.88,3.98 -2.66,0.33 -4.02,2.88 -6.33,3.35 -0.97,1.66 1.09,4.53 -0.81,6.49 -1.07,1.01 0.55,2.39 -1.62,2.77 -2.6,1.54 1.62,6.06 -2.82,6.49 -1.74,-0.37 -5.6,-2.08 -3.57,1.31 1.07,1.89 -0.41,4.57 2.03,6.2 1.92,2.91 -3.81,2.81 -3.68,5.95 -1.09,1.6 0.5,5.45 2.67,5.41 -1.19,1.2 -4.31,1 -5,3.34 -3.07,2.07 -0.28,7.22 -4.25,7.62 -0.55,0.29 -1.11,0.63 -1.75,0.65z","name":"Portugal"},"ma":{"path":"m114.26,519.26c5.38,-1.06 11.75,-0.39 15.9,-4.63 5.26,-4.88 8.22,-11.54 11.83,-17.6 2.3,-1.64 3.11,0.89 3.7,2.43 3.25,0.06 3.27,5.03 6.51,6.18 2.01,2.4 5.02,1.6 7.69,1.35 1.26,1.84 3.78,-0.68 5.41,1.5 1.48,1.09 4.97,-1.46 5.09,1.72 1.76,1.07 3.75,0.97 5.94,1.12 1.21,2.49 5.27,4 3.5,6.77 1.55,1.82 -0.97,1 -2.11,1.18 -21.15,0 -42.31,0 -63.46,0z","name":"Morocco"},"es":{"path":"m170.08,507.95c-0.69,-0.45 0.64,-1.19 0,0z m-23.1,-9.15c-1.89,-0.27 -1.23,-3.36 0.81,-2.76 -1.01,0.61 -0.28,2.16 -0.81,2.76z m-1.53,-5.41c-1.92,-1.84 -4.81,-3.55 -4.78,-6.5 1.74,-1.65 -3.05,-2.72 0.06,-3.62 1.8,0.08 1.95,-2.62 0.29,-1.71 -1.68,1.92 -1.49,-3.2 -3.57,-3.37 -1.21,-2.54 -5.06,-1.7 -6.26,-3.7 0.08,-2.72 1.22,-5.37 3.58,-6.95 1.91,0.46 5.66,-3.3 1.98,-3.27 -1.9,-2.17 -1.67,-5.74 1.14,-6.99 3.7,-0.95 1.1,-4.57 -0.28,-6.35 0.58,-1.68 0.45,-3.01 -0.84,-4.53 2.46,2.34 7.45,0.07 6.4,-3.43 -2.26,-2.56 3.15,-2.71 1.97,-5.34 1.81,-1.67 0.28,-5.41 1.17,-6.21 1.77,-2.14 4.99,-2.46 6.88,-4.55 1.92,-2.79 -4.07,-2.45 -2.2,-4.91 0.43,-3.16 -4.07,-2.3 -5.69,-3.2 -1.8,2.37 -3.89,-1.02 -6.23,-0.51 -0.28,-1.34 -3.49,1.05 -2.42,-0.88 2.82,-1.19 -0.75,-4.5 -2.73,-2.96 -2.11,1.45 -3.86,-0.78 -1.34,-1.64 0.94,0.28 2.32,-1.98 0.72,-1.58 2.23,-1.63 -2.16,-0.92 -0.24,-2.66 2.41,-1.99 0.28,-4.66 -2.06,-3.75 -2.26,-1.66 -0.12,-3.23 1.07,-4.13 3.66,0.29 6.76,-2.08 9.92,-3.51 1.78,-2.19 1.34,2.22 3.29,-0.21 3.33,-0.27 2.62,6.64 6.6,4.09 2.47,1.16 5.51,0.94 8.02,1.44 1.9,-1.24 3.14,2.45 5.32,2.3 2.35,0.57 4.3,2.34 6.75,2.93 2.65,1.41 5.29,-0 7.84,-0 2.13,0.65 4.69,5.39 6.5,1.98 2.5,1.32 5.04,3.91 8.46,3.08 1.39,-0.01 3.8,0.79 4.14,1.8 -1.87,1.22 0.06,2.67 1.22,2.4 1.66,1.57 5.29,1.19 5.34,4 1.46,0.54 4.43,-0.57 4.33,1.92 1.41,-0.29 3.73,0.98 4.54,0.5 1.54,0.01 3.53,0.67 3.72,-1.35 1.63,1.02 3.94,2.12 5.05,3.3 -0.62,2.48 1.62,2.94 3.4,2.37 1.23,1.43 2.74,2.23 4.47,1.42 1.62,0.92 3.85,2.1 4.94,-0.04 1.38,-0.43 5.47,1.31 2.5,2.25 -0.52,2.49 0.35,5.62 -3.02,6.24 -3.95,0.65 -6.55,3.99 -10.24,4.85 -4,0.26 -8.86,0.24 -11.41,3.91 0.64,1.13 2.06,1.75 -0.08,1.82 -2.98,1.35 -3.8,5 -6.55,6.72 -2.04,2.09 -4.6,4.27 -5.09,7.29 -0.14,3.13 0.72,6.8 3.86,8.19 -0.28,2.13 -4.94,1.61 -6.14,3.93 -1.51,0.81 -1.84,2.35 -3.08,3.65 0.22,1.68 -4.27,3.01 -1.46,5.03 -0.94,1.1 -4.96,-1.49 -6.88,0.41 -2.79,1.13 -4.55,3.71 -5.69,6.37 -2.11,3.74 -4.63,-2.34 -7.31,0.69 -2.28,0.2 -4.7,-1.72 -7.4,-1.1 -2.51,-0.92 -5.12,-1.75 -7.89,-1.82 -2.99,0.03 -4.54,3.25 -7.74,1.83 -3.45,-0.48 -3.73,3.46 -6.83,4.06z M229.67,469.73c-3.03,-0.94 2.34,-1.17 0,0z m-3.28,-1.86c-1.31,-1.98 3.63,-2.8 0.96,-0.55 -0.28,0.23 -0.58,0.51 -0.96,0.55z m8.15,-0.95c-0.99,-1.19 -3.24,-1.21 -2.69,-3.07 -1.57,-0.61 -4.43,-0.57 -1.44,-1.83 1.82,-0.69 5.61,-3.6 5.15,-0.13 1.01,1.13 4.03,0.64 1.76,2.77 -0.83,0.87 -1.8,1.58 -2.78,2.26z m11.67,-5.53c-0.43,-1.32 -5.6,-1.9 -2.47,-2.15 1.42,0.04 2.4,0.66 2.47,2.15z","name":"Spain"},"tn":{"path":"m284.9,519.26c-2.21,-1.12 0.73,-3.64 -0.95,-5.51 -1.46,-3.16 2.15,-6.93 -0.12,-9.45 -0.67,-0.73 2.93,-1.29 1.98,-2.95 2.23,-0.03 1.46,-2.58 3.74,-2.85 2.52,-1.83 5.41,-3.02 8.35,-3.78 1.3,0.18 -1.34,3.29 1.51,2.64 0.71,-1.15 1.1,-2.15 2.08,-1.26 -0.76,0.27 1.03,1.6 0.03,2.09 1.72,0.55 2.13,5.46 4.03,3.7 1.46,-0.73 4.4,-5.15 5.37,-2.71 -0.9,2.37 -2.28,5.07 -4.51,6.35 -3.22,1.82 -2.27,6.37 0.87,7.67 1.26,0.82 1.66,2.08 3.04,2.36 -0.15,1.99 1.01,4.41 -1.79,3.68 -7.88,0 -15.77,-0.01 -23.63,0.01z","name":"Tunisia"},"dz":{"path":"m181.84,519.26c-2.16,-1 0.09,-2.29 0.05,-3.03 -0.8,-1.48 -5.28,-4.37 -1.47,-3.7 2.83,-0.51 5.98,-1.33 7.84,-3.67 1.17,-2.46 3.66,-2.95 5.89,-2.07 1.44,-0.79 2.77,-2.77 3.38,-0.29 3.67,1.9 4.38,-3.05 7.15,-3.91 3.27,-1.17 6.41,-3.1 10.01,-2.8 3.04,0.05 6.13,0.57 9.13,-0.19 2.74,1.56 5.53,-0.24 7.63,-1.26 2.46,0.75 5.2,0.79 7.75,-0.34 2.83,-0.67 5.62,0.67 8.61,0.23 3.35,0.17 5.17,6.05 8.94,3.1 1.43,-2.77 7.09,0.3 7.33,-3.88 2.03,-1.62 1.87,1.59 2.96,1.23 1.79,0.05 6.14,2.99 6.01,-0.61 2.5,-2 5.17,3.33 8.12,2.16 1.57,-1.13 4.46,-0.6 5.35,-0.15 -1.62,-0.02 -2.54,1.2 -1.93,2.18 -1.87,0.63 -3.58,2.5 -1.04,3.3 0.38,2.87 -2.09,5.94 -0.27,8.63 -0.06,1.4 0.31,4.98 -0.86,5.05 -33.52,0 -67.05,0 -100.57,0z","name":"Algeria"},"be":{"path":"m265.32,343.64c-0.99,-1.16 -1.81,-2.49 -3.73,-3.37 -2.08,-0.35 -0.28,-1.85 -1.25,-2.79 1.47,-1.88 -0.53,-2.73 -1.47,-0.87 -1.28,2.32 -4.46,0.99 -3.2,-0.74 -0.78,-0.74 1.11,-3.63 -1.62,-3.19 -2.17,0.83 -2.23,-1.41 -2.67,-2.1 -3.94,1.05 -1.51,-5.53 -5.39,-3.71 -2.36,1.07 -3.02,-4.27 -0.45,-4.53 1.73,-0.62 4.14,-3.17 4.52,-0.63 2.42,-0.22 3.66,2.56 5.83,0.13 1.3,-0.02 1.88,1.91 1.96,-0.36 0.89,-2.95 2.67,0.31 4.45,-0.43 0.58,-0.7 1.45,3.34 3.54,2.07 2.55,0.01 1.99,1.94 1.4,3.06 -1.22,1.97 -0.15,4.06 2.13,3.5 1.5,1.19 1.36,3.16 2.63,4.39 -1.48,2.22 -4.2,1.28 -5.1,4.2 -1.39,2.28 2.74,5.98 -1.59,5.37z","name":"Belgium"},"it":{"path":"m350.4,500.36c-1.75,-1.38 -4.77,0.56 -6.21,-2.11 -0.98,-3.12 -4.25,-2.35 -6.74,-3.12 -2.11,-1.47 -4.61,-1.93 -6.58,-3.76 -2.2,-1.23 -6.25,0.31 -6.1,-3.66 0.15,-1.98 2.31,-4.17 3.5,-1.8 2.52,0.49 3.53,-4.85 5.24,-0.9 2.01,0.26 4.02,2.27 5.97,0.45 2.63,-0.1 5.81,0.01 7.46,-2.47 1.45,0.01 4.12,1.89 4.36,-0.76 1.1,1.6 3.69,-2.6 2.02,0.26 -1.4,3.25 -4.08,7.31 -3.12,10.66 1.21,0.69 0.93,2.35 2.17,3.37 -1.93,0.14 -1.88,2.41 -1.97,3.84z m7.22,-15.37c-2.78,-0.14 -2.87,-3.99 -0.28,-4.55 1.37,-2.08 -1.36,-4.79 2.17,-5.13 3.25,-2.22 -1.35,-4.63 -1.21,-7.46 -1.16,-2.63 -2.56,-4.66 -3.09,-7.45 -1.59,-2.98 -4.91,-0.29 -6.78,-2.73 -1.65,-0.84 -0.12,-5.17 -3.33,-5.63 -1.56,-0.37 -4.03,2.8 -2.57,0.22 0.06,-2.91 -3.33,-1.3 -4.25,-2.37 -0.69,-2.23 -3.26,-6.17 -5.36,-4.2 -1.73,-2.18 -4.5,1.85 -5.25,-1.44 -2.69,-0.65 -4.1,-2.62 -6.18,-4.28 -0.73,-3.32 -5.19,-3.11 -5.74,-6.57 -1.05,-1.9 -5.27,-0.02 -4.05,-2.26 -1.1,-2.38 -3.86,-3.39 -4.73,-5.46 -3.13,0.51 0.07,-2.73 -1.71,-4.47 -2.14,-2.56 -1.2,-6.42 -3.6,-8.63 -2.19,-1.12 -4.5,-0.88 -6.03,-3.28 -2.22,-0.9 -4.82,-2.51 -7.33,-1.86 -1.74,1.89 -3.46,3.3 -4.61,5.48 -1.55,2.14 -5.91,2.59 -3.27,-0.76 1.07,-4.25 -4.16,-0.46 -5.52,-3.08 -2.08,-1.9 -1.08,-4.02 0.62,-5.53 0.76,-2.12 -4.77,-3.84 -2.88,-4.68 2.55,0.23 5.53,-3.6 2.83,-5.28 -0.93,-1.94 -2.92,-4.5 0.7,-3.9 2.4,0.04 4.29,-1.2 6.65,-0.24 1.85,-1.05 2.45,-2.98 2.51,-4.87 1.03,-0.35 2.29,-2.18 1.57,0.13 -0.67,2.56 4.99,2.17 2.47,4.45 0.19,0.08 2.08,0.32 2.23,1.7 1.41,1.01 2.54,-1.65 0.98,-2.25 0.53,-2.02 3.41,-3.57 2.37,-5.9 0.68,2.09 2.82,3.69 4.41,1.42 0.81,0.91 2.52,3.75 3.07,0.97 -0.97,-1.55 1.29,-1.81 -0.84,-2.7 -0.29,-2.99 3.05,2.3 3.43,-1.02 -1.77,-2.29 0.88,-4.07 2.84,-1.92 2.41,1.34 1.9,-4.15 4.64,-2.65 2.33,0.51 5.21,-2.28 6.13,0.74 1.38,2.34 4.22,3.29 6.93,3.47 1.41,0.44 5.26,-0.07 4.99,0.93 -2.13,0.92 -2.35,3.92 0.43,3.72 -1.26,1.22 -1.47,2.53 -0.57,3.56 0.79,3.16 -4.05,-1.16 -3.93,2.42 -2.22,1.73 -5.54,2.13 -7.33,4.03 -0.52,1.97 1.06,2.99 1.39,4.46 3.61,0.71 -1.06,2.87 -0.87,4.28 0.35,2.85 0.62,6.32 3.48,7.85 2.75,2.1 5.47,4.43 8.75,5.58 2.03,1.86 2.11,4.88 3.12,7.29 0.93,3.7 3.47,6.75 6.72,8.67 2.2,2.52 5.18,4.19 8.71,3.54 1.79,0.5 5.88,-2.59 5.92,0.29 -0.8,1.53 -3.65,2.89 -1.29,4.86 4.13,2.94 10.13,1.81 13.75,5.65 1.89,1.55 5.85,0.5 6.34,3.52 1.71,1.18 6.04,2.73 4.13,5.37 0.4,1.63 -0.95,3.55 -2.34,1.36 -0.96,-2.97 -3.23,-5.68 -6.54,-4.48 -2.32,-1.32 -6.05,-2.69 -6.78,1.09 -1.28,2.2 -1.32,4.97 -2.42,7.17 0.64,2.84 4.59,1.65 5.83,3.73 1.59,0.26 0.35,2.98 1.81,3.8 -0.21,3.1 -5.83,1.6 -5.88,5 0.28,1.92 0.81,4.68 -1.72,5.06 -1.23,1.65 -1.39,4.64 -3.63,5.25z m-35.56,-71.98c1.98,1.43 0.5,-2.39 0,0z m-33.54,62.41c-0.72,-1.6 -3.1,-3.35 -3.37,-5.68 1.54,-2 1.07,-4.81 2.16,-7.03 -3.26,0.28 0.82,-2.8 -0.89,-4.55 -0.02,-1.96 -1.35,-4.24 -2.94,-4.22 0.19,-1.55 0.4,-3.39 2.06,-1.78 3.1,0.15 5.25,-2.55 7.52,-4.29 0.91,-0.84 5.63,1.48 2.53,2.55 -0.36,1.47 2.3,1.33 1.41,2.66 3.07,1.36 0.3,4.08 -0.53,6.16 1.23,2.67 0.22,5.65 0.3,8.76 -0.33,1.29 -0.37,5.73 -2.35,3.37 -1.49,-1.18 -4.61,-1.6 -3.46,1.11 -0.38,1.17 -0.94,2.88 -2.43,2.94z","name":"Italy"},"by":{"path":"m402.72,308.87c0.99,-3.18 0.27,-7 -3.79,-7.04 -0.71,-2.3 3.14,-4.07 4.34,-6.18 -0.26,-5.15 -3.83,-9.19 -5.74,-13.77 2.18,-0.83 4.01,-0.87 5.95,-0.9 0.86,-1.84 2.51,-1.83 3.98,-0.84 -1.05,-1.12 -2.37,-3.07 0.28,-3.17 1.9,0.02 -0.71,-2.58 2.17,-2.24 -1.28,2.76 4.76,1.14 2.24,-1.38 -2.85,-0.47 0.33,-3.89 -1.4,-5.76 0.96,-1.56 2.7,-3.08 2.72,-4.65 2.53,0.76 4.43,-4.49 0.94,-3.47 -1.1,-1.17 0.25,-4.78 1.91,-6.11 2.45,0.48 4.37,-0.43 4.51,-3.22 0.17,-2.25 2.08,-1.78 3.18,-1.85 2.02,-2.32 2.15,2.85 3.69,0.14 1.75,-1.51 3.73,-0.83 3.53,1.45 2.17,2.99 3.24,-2.73 5.87,-2.54 1.93,0.2 3.24,2.17 5.04,1.95 0.25,2.02 -0.47,3.85 1.8,5.15 0.82,1.65 -1.87,4.51 1.47,4.95 2.1,-0.08 0.99,1.32 1.56,1.96 1.72,2.18 3.98,3.94 6.71,3.73 0,1.84 0.71,4.69 2.92,2.85 2.09,-1.22 3.09,0.78 3.28,1.76 2.02,-0.38 3.13,1.46 1.26,2.31 -0.06,3.07 -3.04,4.09 -5.35,2.65 -3.54,0.27 -2.85,5.57 0.51,5.52 0.97,2.55 1.33,5.72 3.91,7.42 -2.66,1.35 -6.88,2 -6.85,5.76 -1.23,2.53 1.43,5.57 1.33,7.2 -1.16,-1.33 -5.51,-3.73 -5.13,-0.77 -2.24,-2.52 -3.75,4.16 -4.59,0.03 -1.77,-2.65 -4.04,1.4 -4.28,1.56 -1.22,-2.58 -2.82,1.6 -3.58,-0.67 -1.01,0.66 -2.93,1.68 -4.34,1.01 -1.39,0.16 -1.96,2.41 -2.67,0.56 -2.3,-2.34 -5.69,0.72 -8.43,-0.73 -2.87,-0.21 -5.7,0.69 -8.51,0.87 -1.69,1.51 -4.3,1.17 -5.72,2.79 -0.82,1.63 -1.2,4.18 -3.37,2.88 -0.54,-0.03 -1.11,0.27 -1.34,0.78z","name":"Belarus"},"pl":{"path":"m378.8,342.69c0.85,-2.71 -2.77,-1.44 -3.2,-3.81 -2.16,-0.74 -2.68,4.74 -4.1,1.6 -1.34,-0.42 -0.38,-2.05 -2.3,-2.3 -1.38,-1.23 -0.72,-3.2 -2.99,-2.63 -1.39,-1.14 -3.17,-0.83 -4.08,-0.27 -2.65,-1 1.12,-2.8 -1.66,-3.95 -1.04,2.08 -3.71,0.51 -5.13,-0.34 -2.56,-1.21 -1.29,2 -1.13,2.64 -1.27,1.67 -2.44,1.3 -2.92,-0.65 -1.25,-0.75 -2.67,-1.29 -0.72,-2.16 1.16,-2.1 -2.17,-2.93 -3.11,-1.63 -1.5,-2.25 -5.49,-1.16 -6.45,-4 -1.21,-1.39 -2.59,1.06 -1.9,-1.41 0.23,-2.18 -0.48,-4.58 -2.34,-5.49 -1.37,-2.65 0.61,-5.37 -0.78,-8.1 -2.17,-1.37 0.53,-5.96 -3.41,-5.97 -3.09,-2.11 2.9,-5.25 0.3,-8.13 -0.64,-1.64 -2.11,-4.93 -1.01,-5.69 2.39,-0.86 4.49,-2.6 7.02,-3.34 1.88,-0.91 4.34,-1.13 5.97,-2.18 0.73,-2.97 3.72,-4.13 6.19,-5.25 2.44,-1.51 5.22,-3.64 8.26,-2.74 0.34,2.92 2.37,6.29 5.83,5.11 2.32,-0.46 3.66,-2.87 6.19,-1.88 5.94,0.22 12.06,0.04 17.77,-1.75 2.19,-1.89 4.37,-0.56 6.59,0.69 0.91,5.68 5.67,10 6.52,15.73 -0.74,2.77 -4.55,3.76 -4.71,6.89 0.95,2.08 5.51,0.97 4.43,4.48 -0.75,3.1 1.11,5.48 1.99,8.14 0.77,2 4.89,2.48 3.07,4.57 1.18,1.35 3.03,3.77 0.15,4.64 -2.63,0.49 -3.02,4.28 -4.54,6.17 -0.82,2.29 -3.04,4.17 -2.56,6.78 1.11,1.72 -0.12,4.53 2.39,4.91 -2.96,0.2 -5.66,-0.81 -7.88,-2.64 -2.12,-1.23 -4.34,-0.31 -6.37,0.12 -1.06,0.6 -0.02,2.66 -2.03,1.15 -2.7,-1.27 -4.67,0.77 -6.02,2.87 -0.44,-0.92 -1.49,0.48 -1.34,-0.18z","name":"Poland"},"jo":{"path":"m566.3,519.26c-0.01,-4.69 -2.26,-8.97 -3.12,-13.51 1.51,-3.32 4.45,-0.15 6.76,0.1 3.02,0.33 6.94,0.22 8.51,-2.87 4.44,-5.57 8.37,-11.53 12.83,-17.08 1.86,2.51 3.76,5 5.38,7.68 -2.06,2.03 2.19,4.71 3.12,1.72 0.91,2.72 -2.48,4.53 -4.03,6.38 -4,3.47 -8.47,6.39 -12.72,9.51 -2.44,0.61 -3.15,3.3 -0.46,3.9 2.58,1.36 5.17,2.72 7.71,4.17 -7.99,0 -15.99,-0 -23.98,0z","name":"Jordan"},"gr":{"path":"m449.88,508.26c-1.41,-0.44 -0.91,-2.43 -2.98,-2.05 -2.92,-1.02 -4.66,0.87 -7.49,-0.12 -2.89,2.86 -3.34,-3.03 -1.84,-3.28 2.13,1.48 4.85,0.78 6.99,2.27 2.66,-1.89 5.67,-2.41 8.68,-1.61 1.64,-0.07 3.7,-0.37 4.57,-0.83 -1.03,2.5 2.95,2.63 3.64,0.39 1.59,-1.01 2.86,-0.15 1.23,1.36 -4.14,0.67 -8.27,1.86 -12.04,3.72l-0.39,0.1 -0.37,0.03 0,0z m-26.29,-13.55c-0.61,-2.64 -1.46,-5.84 -4.37,-6.76 -3.02,-0.62 -1.68,2.8 -1.92,4.11 -2.48,0.25 -0.03,-2.58 -2.33,-3.13 -1.56,-1.69 2.11,-3.33 -0.42,-5.29 -1.75,-1.46 -3.48,-2.23 -4.88,-3.8 -1.71,-0.32 1.67,-2.18 0.95,-3.89 1.31,0.41 3.43,-0.58 4.2,-2.4 2.31,-0.03 5.27,1.8 8.03,2.01 1.1,0.72 3.08,0.98 3.24,1.46 1.77,0.36 1.5,3.47 4.29,3.78 1.97,0.86 -3.33,1.22 -3.75,-0.39 -3.29,-1.87 -3.6,3.04 -0.88,3.97 1.42,2.4 3.54,4.49 2.98,7.25 0.93,1.21 1.93,2.16 0.11,0.68 -1.13,-1.37 -3.59,-4.36 -5,-1.33 -0.38,1.2 -0.28,2.48 -0.25,3.72z m12.62,-17.67c-0.61,-1.76 -3.37,-2.18 -4.61,-3.83 -1.54,-1.35 -1.12,2.07 -3.22,1.63 -1.32,1.11 -3.33,0.37 -1.06,-0.31 2.53,-1.38 -0.23,-3.22 -1.98,-2.17 -2.19,0.64 -2.76,-3.59 -4.29,-0.5 0.28,-1.81 -1.78,-2.98 -1.95,-0.63 -1.85,0.67 -5.66,-0.17 -7.42,2.31 -1.43,-1.51 -2.69,-1.73 -3.58,0.32 -0.06,-3.13 -3.02,-4.71 -4.64,-5.97 -0.05,-3.03 -3.45,-4.15 -5.3,-5.69 0.58,-2.13 -4.66,-2.22 -1.22,-2.7 1.45,0.13 1.31,-1.81 1.97,-2.79 -2.74,-2.59 4.57,-2.51 2.29,-5.81 0.57,-2.27 3.93,-4.04 1.77,-6.57 2.29,-1.19 5.68,-0.59 7.21,-3.12 0.92,-4.2 5.51,-0.91 7.7,-3.66 0.88,-0.81 0.03,-3.12 2.26,-2.13 2.68,-1.49 5.94,-1.98 8.75,-3.4 1.35,-1.69 4.25,-2.43 5.72,-0.71 1.88,0.93 3.48,-0.95 5.39,0.66 2.83,0.48 5.06,-1.99 7.75,-2.56 2.63,-1.48 -0.92,-3.81 -0.19,-4.93 2.53,-0.82 6.54,2.78 3.07,4.45 -2.66,1.03 1.16,6.08 -1.92,6.2 -2.59,-1.16 -5.58,1.42 -8.08,-0.62 -2.31,-0.06 -3.98,4.61 -5.94,1.87 -2.75,-0.21 -2.93,5.39 -5.82,3.29 -2.56,0.13 -2.19,2.87 -0.61,3.88 1.51,1.31 -0.02,1.67 -0.46,3.12 -2.01,-0.91 -2.94,1.12 -4.72,-0.3 -3.05,1.25 -3.01,-2.2 -1.76,-3.97 -0.09,-0.54 -2.81,1.81 -3.44,2.49 -1.02,1.92 0.18,3.87 -0.21,6.03 1.55,1.98 3.8,3.4 4.84,5.84 0.92,0.8 4.25,2.4 3.42,2.64 -2.14,-2.19 -4.85,-0.02 -3.78,2.46 1.31,0.13 3.2,1.7 0.6,2.21 -1.13,0.04 -4.23,2.36 -2.68,2.49 2.62,-1.25 4.96,1.17 7.41,0.98 0.52,2.36 2.91,0.77 3.98,2.53 2.06,0.36 4.93,0.25 3.64,2.95 0.1,1.33 1.96,3.02 1.13,4.05z m-32.41,-12.35c-2.66,1.97 2.35,4.76 3.65,1.72 0.88,-3.08 -2.48,0.37 -3.25,-1.63l-0.4,-0.09 0,0z m1.2,12.17c-2.12,0.67 -3.94,-2.49 -2.24,-3.05 -0.52,2.11 1.79,2.11 2.24,3.05z m35.21,-4.75c-1.33,-0.45 -3.15,-2.25 -0.48,-1.45 1.91,-0.84 2.27,1.01 0.48,1.45z m-3.1,-3.76c-1.98,-1.68 -5.22,0.85 -5.86,-2.11 -1.43,-1.48 -5.05,-2.2 -5.77,-2.78 2.78,-2.67 4.14,2.1 7.15,1.68 1.66,0.78 3.06,-0.62 3.9,1.22 0.4,0.59 0.43,1.32 0.58,1.99z m-10.1,-17.81c-3.53,-1.73 2.32,0.07 0,0z m3.59,-1.57c-2.32,-1.62 -0.44,-1.62 0.45,0.12l-0.11,0.22 -0.34,-0.34z","name":"Greece"},"tm":{"path":"m679.06,344.59c-1.21,-0.72 -0.78,-2.05 -2.51,-2.48 -0.91,-2.53 -0.44,-5.74 -2.11,-7.9 1.43,2.3 3.65,0.44 4.81,-0.09 -0.04,3.47 0.02,6.95 -0.03,10.42l-0.16,0.04z m-9.11,-14.43c-1.83,0.29 -2,-1.85 -2.97,-2.07 -2.67,-0.77 0.57,-4.63 0.48,-6.52 1.65,-3.13 3.89,-6.16 6.88,-8.09 1.36,-0.18 5.09,-1.73 4.9,0.43 0,2.65 0,5.3 0,7.95 -2.35,-1.52 -3.83,-5.43 -6.79,-5.11 -2.41,2.22 -6.24,4.38 -5.17,8.26 -0.05,1.27 0.71,3.09 1.95,2.4 0.34,0.89 0.41,1.85 0.72,2.75z m9.29,-40.46c-2.98,-4.77 -6.29,-9.32 -9.41,-14 0.44,-3.11 3.69,-4.89 4.74,-7.82 1.56,-2.45 3.21,-4.85 4.68,-7.37 0,9.73 0,19.46 0,29.19z","name":"Turkmenistan"},"kz":{"path":"m665.18,326.25c-2.97,-1.86 -1.2,-5.67 -2.65,-8.21 0.53,-3.17 -3.51,-2.8 -4.88,-0.83 -1.79,-1.67 -2.48,2.95 -4.91,0.84 -1.43,-2.21 -3.22,-0.68 -4.76,0.52 -0.4,-3.09 -3.28,-5.18 -6.16,-5.75 -2.02,-1.36 -4.24,-5.19 -6.86,-2.37 -2.9,1.87 -4.15,-4.1 -0.51,-3.35 1.06,-1.32 1.8,-1.79 3.42,-0.84 1.53,-0.78 2.76,-2.24 4.06,-3.11 -1.44,-2.18 -5.78,0.43 -7.07,-2.22 0.12,-1.34 3.47,-2.2 0.83,-3.45 -1.26,-2.14 2.16,-2.43 1.45,-4.52 2.51,-0.62 4.01,-2.7 6.42,-3.67 1.55,-0.68 5.82,-1.56 4.27,-3.73 -2.44,0.42 -5.53,1.2 -4.64,-2.51 0.27,-3.12 -0.67,-6.7 -3.34,-8.56 -1.46,-0.11 0.78,-3.59 -1.86,-3.15 -1.5,-2.77 -4.84,0.02 -6.51,0.7 0.1,2.2 -0.93,4.69 -3.45,3.61 -2.4,0.56 -6.57,-0.38 -7.49,3.29 -0,2.58 -2.65,3.31 -2.68,6 -1.27,1.57 -1.07,5.37 -3.43,5.36 -2.12,-0.08 -2.2,2.62 -2.46,3.63 -1.26,0.74 -5.86,0.39 -4.64,-0.82 3.5,0.56 3.47,-4.4 0.06,-4.32 -3.14,-1.51 -5.73,-4.02 -8.93,-5.36 -2.47,-0.32 -4.25,2.11 -6.54,2.07 -0.12,1.28 0.37,2.59 -1.35,1.17 -1.8,-0.93 0.01,-2.79 -2.21,-3.3 0,-2.52 -4.2,-0.23 -5.74,-0.66 -0.96,-2.72 -0.8,-5.85 -0.41,-8.82 0.73,-3.23 -4.34,-1.07 -3.74,-4.61 -1.48,-2.21 -1.17,-5.16 0.32,-7.28 -2.58,-1.5 -1.53,-6.73 1.82,-4.04 2.29,0.54 4.78,3.98 7.13,1.98 1.97,-1.65 2.09,-5.06 -0.41,-5.79 -0.5,-2.08 -4.31,-2.93 -1.9,-4.7 0.1,-1.7 1.79,-4.1 2.05,-4.93 -2.7,-0.86 -1.25,-3.39 0.39,-3.59 0.3,-2.73 3.83,-4.97 2.24,-7.88 -1.16,-1.26 2.12,-0.49 0.87,-2.37 -0.73,-0.82 1.71,-0.82 1.99,-1.86 2.14,-0.45 -1.05,2.08 1.69,2.02 1.48,-0.55 1.41,-1.96 2.93,-1.7 0.29,-1.63 -1.06,-3.26 1.01,-4 0.5,-1.63 0.88,-2.2 1.87,-0.46 3.2,2.4 4.8,-3.1 7.46,-3.43 1.62,1.55 3.73,2.04 5.43,0.37 1.27,1.42 3.01,1.43 4.62,1.61 -0.26,2.56 4.05,4.44 3.68,0.87 -0.11,-2.04 -2.23,-3.06 -3.52,-3.49 2.49,-1.89 5.28,1.44 8.06,-0.13 2.65,1.71 2.89,-3.09 2.88,-4.82 -0.94,-1.46 1.32,-2.87 0.36,-4.29 1.64,0.4 1.75,-1.1 1.34,-1.85 1.08,-2.25 2.79,-1.39 4.44,-0.52 1,-0.8 1.78,-2.46 2.98,-2.01 -1.89,-1.21 -2.16,-3.64 0.61,-3.9 -0.26,-1.23 0.14,-1.29 1.28,-1.45 1.06,-0.94 2.07,2.58 4.01,1.26 1.98,1.74 4.96,-3.12 5.37,-1.36 0.29,1.89 3.37,-0.99 2.39,-2.55 -0.11,-1.94 -1.41,-4.21 1.46,-3.17 2.91,-0.36 4.26,-3.79 5.34,-6.17 1.47,-2.93 -2.47,-4.1 -2.09,-6.64 -1.36,-2.25 -4.48,-0.11 -5.91,0.2 -2.22,-2.09 -4.58,3.81 -4.91,0.16 -1.29,-0.68 -2.71,2.23 -3.65,0.73 1.29,-1.47 1.19,-4.25 2.39,-6.18 1.51,-3.13 -2.02,-3.28 -3.58,-4.22 -3.1,0.97 0.81,-3.99 -1.61,-4.03 1.01,-2.42 4.84,-2.6 5.47,-5.2 -0.01,-2.9 -4.66,-1.68 -5.74,0.02 -1.13,1.71 -4.5,-0.24 -1.75,-0.92 2.16,-2.49 -2.77,-3.66 -2.05,-1.2 -2.33,3.55 -0.85,-4.14 -3.83,-1.64 1.26,-0.48 -0.31,-3.76 1.92,-2.68 1.3,1.04 0.21,-2.26 2.14,-1.3 2.74,-0.21 -1.15,-2.68 1.49,-3.26 1.26,2.1 3.9,-0.29 1.53,-1.19 0.54,-2.35 2.7,-4.74 3.28,-7.51 1.48,-0.31 3.12,-1.58 1.37,-2.69 1.12,-2.77 3.18,-4.87 5.44,-6.15 -0.1,-1.8 -3.04,-1.6 -1.06,-3.51 0.73,-2.38 2.55,-3.81 3.48,-6.49 2.08,-2.53 2.36,-5.49 3.47,-8.34 0.29,-1.69 3.72,-3.96 0.35,-4.97 -1.01,-0.43 2.31,-2.04 0.29,-3.41 -1.75,-1.68 3.22,-0.78 0.65,-2.37 -1.73,-0.49 3.06,-0.82 1.8,-2.5 2.25,-1.54 6.79,-0.26 5.35,-4.64 -0.2,-2.91 3.08,-0.72 4.32,0.28 1.69,1.75 4.12,-0.2 4.78,2.52 1.5,0.9 1.01,3.62 3.74,3.35 2.67,0.01 -0.81,-3.38 2.11,-2.14 1.93,-0.51 -0.97,-4.41 1.41,-3.27 0,52.65 0,105.3 0,157.95 -2.28,4.16 -5.07,8.03 -7.49,12.09 -2.11,1.94 -4.29,5.26 -1.49,7.58 3.01,4.53 6.37,8.91 8.98,13.65 0.02,6.62 -0.04,13.29 0.04,19.87 -3.05,0.34 -6.58,0.54 -8.5,3.49 -2.48,2.8 -4.81,5.91 -5.35,9.73 -0.09,0.46 -0.18,0.92 -0.25,1.38z","name":"Kazakhstan"},"fi":{"path":"m382.62,208.07c0.7,-3.07 -2.78,1.32 -3.86,-1.32 0.05,-0.96 1.56,-3.75 -0.71,-2.21 -1.13,1.69 -1.33,-1.45 -2.92,-0.68 -0.94,0.89 -2.97,-0.9 -3.55,-0.42 -0.14,-2.36 -1.97,-0.15 -2.25,-0.03 -0.63,-1.67 -0.91,-3.6 -2.08,-5.17 1.86,-0.74 1.72,-4.06 0.26,-5.25 -0.34,-1.47 3.17,-0.38 1.07,-2.02 -1.2,-2.15 -2.78,-4.06 -3.52,-6.25 0.62,-2.08 -0.63,-3.97 -1.49,-4.42 0.49,-1.2 -0.5,-2.29 -0.95,-2.29 0.13,-1.71 3.82,-4.59 2.52,-5.52 -3.07,-0.18 0.32,-3.17 1.17,-0.45 1.02,-1.23 3.05,-2.66 2.12,-4.84 0.01,-1.7 0.15,-2.94 1.36,-1.21 0.12,-2.42 1.26,-4.91 3.64,-5.85 -0.72,-2.45 1.54,-4.8 2.24,-7.01 -0.27,-2.84 0.9,-5.24 3.71,-6.24 1.6,-1.13 1.77,-3.36 -0.51,-2.84 -0.44,-2.27 -0.12,-5.32 -2.74,-6.02 -2.3,1.99 -2.43,-3.68 -4.97,-1.88 -1.75,-2.03 -4.37,-4.52 -3.48,-7.48 1.52,-3.03 -0.83,-5.16 -2.34,-7.18 -0.2,-1.46 0.87,-4.46 -1.6,-3.74 -0.01,-2.39 -0.15,-4.83 -1.27,-7.01 -2.48,-1.84 -4.57,-4.14 -8.05,-4.18 -1.93,-1.7 -6.43,-2.88 -5.46,-6.12 -0.41,-2.16 1.14,-3.53 2.73,-1.48 2.59,1.31 1.85,6.17 5.39,5.44 2.27,0.35 4.34,-0.45 4.98,-2.51 2.4,-0.26 6.27,3.96 5.78,-0.87 -0.39,-2.02 3.32,-1.43 1.97,-3.98 -1.32,-3.02 -2.11,-7.03 -0.35,-9.99 -0.31,-2.74 4.21,-0.11 4.22,-3.35 1.47,-1.91 3.36,2.08 5.49,1.78 2.95,0.9 3.14,3.84 1.7,6.03 1.41,1.64 0.21,2.38 -0.46,3.84 1.14,0.8 2.75,1.02 1.72,2.87 -0.47,3.13 2.02,6.77 5.45,6.28 1.67,2.35 6.13,3.59 3.92,7.14 -0.75,2.27 -1.97,4.85 -0.96,7.21 3.59,3.29 6.5,7.25 9.05,11.36 0.06,1.49 -2.83,0.38 -0.84,2.06 -0.22,2.17 0.21,4.77 1.29,6.07 -1.26,3.74 5.08,3.34 3.58,6.82 0.48,3.1 6.13,1.5 4.41,5.52 -0.25,1.99 -2.95,4.48 0.53,5.03 2.93,1.69 6.43,2.67 8.87,5.07 1.06,2.48 -0.3,5.24 -0.57,7.75 -2.26,6.49 -4.21,13.14 -7.27,19.3 -1.55,2.69 -3.59,5.26 -4.3,8.32 -1.76,0.21 -3.5,-1.24 -4.38,1.19 1.52,0.77 -3.01,1.75 -1.49,-0.16 -0.76,-2.31 -1.99,0.16 -1.56,1.47 -1.82,-2.09 -4.5,1.44 -1.45,2.01 0.62,2.53 -3.67,-2.15 -3.14,-0.28 0.89,2.06 -2.52,3.25 -2.85,3.52 -2.72,0.33 -4.14,2.39 -6.64,3.79l-0.57,0.27 -0.58,0.1 0,0z","name":"Finland"},"de":{"path":"m302.45,372.15c0.39,-0.91 1.99,-2.77 0.16,-1.49 -1.57,0.93 -2.11,-2.91 -4.19,-2.08 -2.04,1.85 -3.44,-2.27 -6.01,-1.15 -2.15,0.46 -2.02,-2.87 -4.5,-1.23 -1.72,0.52 0.38,3.76 -1.44,1.73 -1.84,0.2 -4.84,0.84 -5.69,-0.07 -0.64,-1 1.16,-4.13 0.65,-5.99 1.9,-2.36 0.91,-6.25 3.86,-7.87 2.56,-1.63 0.59,-4.12 -1.86,-3.67 -2.56,0.2 -2.84,-3.15 -5.48,-1.32 -1.23,0.08 -2.11,-2.54 -3.28,-1.12 -0.17,-2.33 -4.09,-3.23 -1.38,-5.35 1.81,-3.01 -5.32,-3.18 -1.88,-6.63 1.67,-1.33 2.21,-2.89 0.22,-4.22 1.95,-2 -1.2,-0.75 -1.34,-2.77 1.01,-1.22 0.18,-2.51 -0.16,-3.21 1.78,-1.86 2.88,-5.05 1.22,-7.64 -2.19,-2.06 0.71,-2.52 2.29,-1.67 2.39,0.34 3.33,-2.08 3.64,-3.33 2.38,-1.19 2.15,-5.11 -0.59,-5.64 -0.03,-1.55 3.42,0.08 2.83,-2.66 0.31,-2.54 1.52,-4.9 2.38,-7.37 -0.34,-0.18 -3.53,0.96 -2.22,-1.41 0.9,-2.9 4.25,-1.28 6.2,-2.15 0.16,2.03 2.57,6.54 4.4,3.34 0.14,-1.85 -1,-6.59 2.18,-4.76 1.27,0.28 4.88,-0.75 2.09,-1.66 -3.15,0.44 1.18,-4.81 -1.98,-5.31 4.2,-1.72 -2.92,-4.5 -0.43,-6.3 2.37,1.37 6.56,0.38 7.64,2.55 -0.45,0.53 1.55,0.68 -0.04,1.71 -1.46,1.22 0.47,2.21 1.51,1.23 -1.09,2.31 1.04,2.07 1.81,0.68 1.67,1.18 3.81,1.56 5.14,0.49 0.21,1.77 -4.56,3.93 -2.04,5 1.38,0.2 3.65,-1.17 3.27,1.31 2.66,-0.01 2.46,-4.21 4.91,-4.12 1.43,1.57 3,-1.39 3.56,-2.49 0.61,-2.1 3.54,-0.7 4.16,-0.17 0.88,1.8 2.57,3.83 4.93,3.32 -0.95,4 4.51,3.57 4.6,6.93 3.14,3.28 -3.49,6.24 0.16,9.19 2.04,0.76 2.91,2.01 2.23,4.17 0.93,1.99 2.9,4.81 0.48,6.79 1.68,1.23 1.03,4.11 3.18,4.83 0.68,1.92 0.82,5.65 -0.66,6.5 -0.87,-1.78 -4.46,-3.53 -3.95,-0.41 1.16,0.88 -2.8,1.08 -3.3,2.22 -2.5,0.18 -3.71,2.69 -5.8,3.41 -0.73,-0.12 -0.57,1.65 -2.06,0.72 -2.78,-0.99 -2.28,4.11 -4.17,1.96 -3.51,0.44 1.56,4.5 2.19,5.46 -2.26,2.79 1.42,6 3.88,7.15 1.53,1.88 3.04,3.44 5.43,4.44 2.44,1.22 2.24,4.86 -1.02,3.8 -0.57,1.52 -0.37,3.53 -2.79,3.73 -3.29,0.46 -2.9,3.65 -1.01,5.5 0.76,1.93 -3,3.3 -3.36,1.75 -0.45,-0 -3.6,-1.29 -2.93,0.98 -3.48,-0.65 -5.56,1.87 -8.47,2.95 -1.59,-0.45 -2.06,-3.03 -4.27,-1.95 -2.85,-1.05 -0.37,3.13 -2.89,3.37z m-6.7,-79.27c-0.21,2.06 4.44,6.44 3.78,2.2 -1.59,0.14 -2.26,-2.95 -3.66,-2.25L295.75,292.88z m29,76.43c-1.59,-1.17 -0.3,-3.24 0.69,-1.13 -0.04,0.43 -0.23,0.99 -0.69,1.13z m-0.01,-83.07c-2.42,-0.16 -2.07,-4.22 0.32,-2.83 -1.17,-1.29 -0.5,-0.74 0.89,-0.58 -1.82,1.06 2.32,2.92 -0.86,3.34l-0.35,0.07 0,0z","name":"Germany"},"se":{"path":"m323.06,272.38c-2.85,0.68 -1.5,-2.92 -0.88,-3.47 -1.34,-1.73 -2.37,-3.77 -4.04,-5.01 0.79,-1.22 -1.53,-2.8 1.01,-1.48 2.77,0.18 -2.19,-2.84 0.98,-2.65 2.38,-2.15 -2.21,-3.59 -2.38,-5.5 -2.18,-0.93 -1.38,-4.24 -3.57,-5.03 -0.5,-2.35 -1.05,-4.69 -2.37,-6.57 0.36,-2.06 3.34,-6.36 -0.08,-6.96 -1.38,2.23 -3.39,1.39 -2.89,-1.18 0.66,-1.66 -0.9,-5.32 -0.3,-5.55 1.22,1.95 2.5,1.63 3.29,-0.5 0.91,-2.52 -0.9,-5.03 -0.38,-7.57 2.08,-1.14 -0.02,-3.96 3.05,-4 2.39,-1.51 1.37,-4.54 1.71,-6.85 0.8,-2.58 -4.53,-6.31 0,-6.91 1.04,-0.81 1.22,-3.31 1.37,-4.79 -1.12,-2.38 -6.01,-2.81 -4.1,-6.25 1.84,-3.74 -1.45,-6.92 -1.02,-10.47 0.52,-2.44 0.53,-5.73 -0.14,-7.32 0.64,-2.96 1.19,-6.43 4.34,-7.91 2.35,-0.49 6.23,1.31 6.51,-2.71 0.96,-3.43 -4.73,-4.28 -1.85,-7.71 0.9,-2.93 3.32,-5.66 2.42,-8.87 0.15,-1.92 0.67,-3.87 -0.11,-5.73 -1.01,-2.32 3.73,-0.74 3.99,-3.33 -0.13,-2.25 -0.54,-4.21 1.52,-5.81 2.69,-2.56 2.7,-6.48 0.46,-8.94 2.93,-1.39 1.66,-4.89 3.52,-7.09 1.35,-0.88 5.1,1.96 4.84,-1.65 -0.51,-1.95 -1.78,-6.23 1.75,-4.92 2.24,0.45 5.5,2.66 7.12,-0.07 1.29,-1.53 -2.75,-1.44 -0.66,-3.53 0.95,-1.42 0.76,-3.57 -0.83,-4.28 3.02,-0.52 2.64,2.5 5.35,3.5 2.17,2.8 6.24,2.01 8.45,4.17 1.81,1.26 3.78,2.76 3.22,5.22 1.03,1.27 -0.68,4.42 1.98,4.24 -0.85,2.83 1.11,4.63 2.62,6.51 0.04,2.86 -1.49,6.25 1.05,8.57 1.6,1.29 3.31,4.27 -0.1,3.45 -1.76,0.14 -2.91,-0.92 -2.17,1.42 -0.95,1.6 -5.22,-2.83 -4.14,0.58 0.84,1.65 -2.05,2.45 -1.57,1.13 -2.06,-0.65 -0.53,1.54 0.66,1.49 -0.6,0.2 -1.52,0.57 -0.3,1.82 -1.49,0.26 -4.7,1.58 -1.68,2.64 2.32,2.25 -3.2,4.64 -1.02,7.19 1.54,0.9 4.4,2.82 1.64,4.33 -1.68,2.21 -0.66,5.89 -3.12,7.17 -0.94,1.59 -3.16,2.96 -4.81,3.45 -0.21,1.34 -1.22,2.8 -1.35,4.54 -1.77,-1.72 -2.61,0.56 -2.76,1.85 -1.12,0.81 -2.56,2.13 0.01,2.01 -0.44,1.31 -4.33,0.73 -2.47,3.43 -0.06,0.73 -0.49,2.94 -1.88,1.95 -2.76,-0.24 -2.07,3.37 0.06,3.69 -0.77,1.95 -1.46,4.89 0.24,6.81 -3.74,-1.85 -2.36,2.41 -0.94,3.91 0.18,1.27 -3.07,0.5 -0.73,1.44 0.84,1.85 1.12,4.66 1.43,6.67 -0.32,2.79 5.02,-0.22 4.86,2.53 0.7,1.96 4.04,1.71 4.48,1.82 -3.19,-0.43 -0.28,3.53 1.17,3.32 1.13,1.08 3.55,2.93 0.69,3.17 -0.96,1.32 -2.08,3.54 -3.42,3.71 1.54,1.27 -2.79,1.25 -1.63,-0.68 0.49,-2.21 -4.13,-4.8 -3.64,-1.69 1.43,0.51 0.2,2.21 2.13,2.69 -1.79,0.21 -3.94,-2.79 -5.52,-0.41 -0.59,-1.15 -2.36,-1.3 -1.99,0.35 -2.53,-0.76 -3.68,2.49 -1.03,1.96 1.95,-0.49 4.14,0.17 6.05,0.67 -0.71,2.97 4.28,-1.28 2.88,1.93 -0.14,2.13 -0.95,4.88 -3.12,4.77 0.18,1.44 -0.14,1.56 -2.15,1.24 -1.48,-0.93 -5.69,1.16 -2.24,1.59 0.93,-0.93 4.88,0.08 2.51,0.95 -1.3,-0.74 -2.65,-1.15 -1.6,0.7 1.1,0.49 3.58,1.85 1.37,2.42 -0.48,1.93 2.49,4.34 -0.83,3.78 -1.22,1.55 3.46,2.55 0.79,3.59 -0.59,1.57 1.8,1.83 -0.1,3.07 -0.36,1.71 1.22,3.68 -0.24,4.3 0.8,1.29 0.72,4.62 -0.49,4.51 -0.92,1.99 -0.01,8.09 -3.9,5.74 -0.75,-0.04 -1.2,1.04 -1.28,-0.03 -1.81,1.13 -4.91,0.3 -5.24,2.54 -3.47,0.86 -2.77,5.15 -1.48,7.22 -1.25,2.12 -3.78,-0.71 -5.21,1.44 -0.58,0.2 -1.19,0.28 -1.8,0.28z m21.76,-13.69c-0.6,-1.64 -0.03,-5.51 0.58,-5.62 -0.47,1.84 -0.07,3.79 -0.58,5.62z m11.16,-10.28c-1.47,-2.04 -0.57,-3.97 -1.15,-6.17 0.13,-1.54 3.5,-5.82 3.93,-3.32 -1.59,1.67 -1.23,4.3 -0.42,5.29 -0.56,1.58 -2.33,2.58 -2.36,4.21z m-6.04,-22.62c-0.58,-0.9 -1.01,-2.64 0.37,-3.19 0.51,-2.57 3.62,1.5 0.73,1.06 -0.71,0.44 -0.93,1.57 -1.1,2.14z m3.41,-4.74c-1.71,-0.56 1.15,-0.98 0,0z","name":"Sweden"},"no":{"path":"m283.92,239.69c-2.05,0.82 -1.04,-2.38 -3.04,-0.45 -2.25,0.63 -2.45,-1.19 -0.48,-1.71 1.16,-1.98 -1.94,-1.69 -2.54,-0.89 -1.88,-1.69 -4.73,-3.13 -5.46,-5.54 0.16,-1.17 0.04,-2.84 1.26,-1.53 2.45,-0.31 0.5,-3.28 2.63,-3.15 -0.92,-1.74 3.6,-1.24 2.16,-3.19 -1.49,-0.01 -3.77,0.75 -1.5,-1.08 1.07,-1.87 -4.03,-2.48 -3.95,0.31 -0.43,1.99 -1.31,-1.27 0.03,-1.59 -0.59,-1.71 3.37,0.46 2.3,-1.73 2.11,-0.09 3.7,-3.31 0.62,-1.92 -2.12,1.06 -0.9,-1.62 0.69,-0.69 -1.77,-1.8 3.78,-2.21 0.57,-3.6 -0.56,-4.05 -3.61,3.53 -2.9,-0.4 -0.09,-1.07 2.45,-2.14 0.56,-2.38 1.23,-1.75 0.14,-1.45 -1.12,-1.67 -0.48,-2.03 3.39,-0.54 1.29,-2.62 -1.57,-0.11 -2.3,1.01 -2.92,1.83 0.23,-1.47 -0.96,-1.1 0.71,-1.97 1.17,-0.81 3,-0.92 0.68,-1.9 -1.68,1.41 -3.48,-0.55 -1.63,-1.27 2.35,2.15 4.25,-2.5 6.35,0.43 1.83,1.86 1.2,0.18 2.05,-1.15 2.54,-0.3 -0.18,4.44 3.17,3.6 2.08,-1.21 -0.36,-4.05 -1.72,-4.82 -1.87,-1.19 -2.86,1.17 -4.77,-0.24 -1.71,-0.32 -5.74,2.24 -5.21,-1.12 1.24,-0.84 -1.48,-1.91 1.02,-1.63 0.93,-0.21 -1.41,2 0.86,1.55 1.15,0.42 4.11,-2.74 2.32,-2.56 -1.17,0.24 -3.58,0.07 -2.04,-0.78 0.01,-1.15 -2.86,-0.72 -1.37,-2.6 1.92,-1.21 1.67,-2.06 2.44,-3.76 1.13,0.7 1.55,1.95 2.59,0.89 1.71,1.83 3.67,-1.21 0.78,-1.26 -1.72,-1.7 2.02,-2.98 1.47,-0.81 -0.08,1.94 2.1,2.28 1.49,0.15 -1.54,-0.73 -0.39,-3.26 1.26,-2.04 -0.9,2.54 1.99,2.46 3.2,1.29 -0.57,-1.07 -3.07,-0.84 -2.76,-2.61 -1.93,-0.78 -0.88,-1.18 0.63,-1.75 -0.31,2.53 1.54,0.84 1.46,0.89 0.76,2.66 4.97,0.16 2.35,-0.64 -1.68,1.13 0.97,-2.47 -1.62,-1.35 -1.33,0.1 -1.92,0.19 -0.62,-0.55 0.77,-1.45 -3.3,-3.11 -0.25,-2.56 1.36,2.34 4.5,0.23 4.77,-0.42 0.76,1.21 1.99,4.78 3.9,2.5 -0.19,-1.38 -1.61,-1.13 -0.15,-1.91 -0.52,-0.88 -3.96,-0.82 -1.31,-0.98 2.56,1.07 3.94,-2.68 1.6,-3.22 -2.38,3 -0.29,-2.57 1.23,-0.79 -1.13,2.54 3.47,1.05 2.52,-0.37 0.79,-1.1 1.41,-2.4 1.63,-0.68 1.42,0.16 -1.15,3.34 1.22,2.27 1.23,1.9 3.05,-0.32 1.25,-1.45 2.02,0.81 5.84,0.23 4.08,-2.68 2.55,-0.11 3.44,-2.71 1.89,-3.48 2.7,-0.44 1.04,-4.25 -0.61,-2.47 -0.94,0.99 -4.98,3.53 -3.32,4.59 1.36,-0.14 -3.55,4.36 -3.84,1.11 1.8,-0.4 1.59,-2.97 -0.14,-1.47 -1.54,1.59 -1.58,-0.15 0.05,-0.55 1.29,-0.12 3.11,-2.23 0.74,-1.96 0.49,-1.84 0.69,-1.57 2.55,-2.66 -0.01,-1.8 3.87,-1.75 1.44,-3.46 1.6,-3.11 2.62,3.25 4.94,0.36 -0.07,-0.91 1.83,-2.92 -0.44,-2.32 -1.97,0.37 0.51,-3.35 0.91,-3.77 2.46,-0.4 5.23,-2.14 6.04,-4.52 -0.69,-1.41 -1.97,0.46 -0.84,-1.25 0.83,-2.9 -4.58,-0.06 -1.84,-2.23 2.88,-0.42 -1.2,-4.08 2.2,-4.17 1.93,2.26 1.6,-1.88 -0.02,-2.41 1.79,-0.55 2.5,-1.55 4.25,-0.42 0.51,-2.76 -3.45,-2.33 -4.43,-3.58 -0.26,-3.01 2.59,-3.12 4.58,-3.67 0.29,-0.78 -0.81,-3.13 0.47,-2.48 2.46,0.65 2.45,-2.36 2.11,-3.23 1.27,-0.62 3.06,1.08 2.81,-1.49 0.06,-2.75 -4.88,2.23 -2.7,-0.53 -0.33,-1.84 3.17,-2.65 3.79,-1 0.44,2.38 2.69,0.96 0.74,-0.53 -0.37,-0.19 2.89,-3.12 0.16,-2.12 -1.52,1.62 -2.69,-1.67 -0.67,-0.49 2.18,0.6 1.78,-2.26 0.1,-2.63 1.64,-0.99 1.76,-1.25 3.09,0.31 2.65,0.05 -0.04,3.53 -1.13,3.83 -0.13,2.43 3.49,4.78 1.03,6.94 -1.52,2.38 -4.26,5.02 -2.96,8.1 -1.03,2.23 -5.62,0.34 -3.97,3.87 1.08,2.24 -0.41,4.62 0.29,6.91 -0.21,2.4 -1.5,4.65 -2.48,6.84 -1.89,2.33 -0.64,4.78 1.42,6.24 1.36,2.71 -1.06,4.75 -3.56,3.4 -3.47,0.13 -6.05,3.54 -6.55,6.75 -0.09,2.61 -2.39,4.76 -0.87,7.58 1.7,0.33 -0.26,3.51 0.65,5.09 0.93,2.11 2.11,4.27 1.04,6.66 -1.85,3.6 1.33,5.61 3.87,7.28 0.34,1.26 -0.49,2.52 -0.69,3.78 -4.37,0.5 -1.64,4.45 -0.68,6.73 -0.19,2.39 0.87,5.69 -1.37,7.29 -2.33,-0.08 -2.37,2.05 -2.44,3.42 -2.81,2.64 1.45,6.5 -0.89,9.33 -0.63,-0.51 -0.86,-4.28 -3.41,-3.07 -1.98,0.66 -1.1,-2.02 -2.18,-2.85 0.06,-1.66 0.25,-4.8 -1.34,-6.05 -1.51,0.96 0.6,3.37 -1.47,1.82 -1.6,1.08 1.29,3.05 0.43,4.75 1.82,1.57 -1.36,1.57 -0.61,3.28 -0.57,0.33 -1.78,3.28 -2.33,0.68 -1.69,-2.25 -3.03,0.06 -1.93,1.1 -2.37,0.2 -1.22,2.58 -3.27,2.72 0.26,1.74 0.63,2.15 -0.66,0.4 -0.55,-0.29 -0.31,3.24 -1.72,3.89 -1.13,1.13 -2.53,1.14 -2.96,2.81 -1.25,-1.4 -1.53,-2.14 -2.1,0.08 -0.58,1.07 -1.97,0.9 -2.97,1.19z m1.79,-42.62c-2.02,0.59 -1.81,3.69 -1.92,5.35 2.29,1.58 5.16,-1.56 2.82,-2.47 -2.51,1.62 -0.41,-2.26 1.2,-2.22 -0.69,-0.24 -1.35,-0.63 -2.1,-0.66z m-8.26,-3.48c1.26,1.05 1.96,-0.59 3.75,0.18 2.86,-0.7 0.32,-3.31 -1.23,-1.63 -0.54,1.11 -4.66,-2.16 -3.53,0.83 -0.64,0.74 0.98,1.54 1.01,0.63z m-1.56,-1.31c1.64,-1.54 -2.29,-0.9 0,0l0,0z m-3.39,20.54c-1.15,-1.48 -0.79,-2.31 1.27,-2.09 -0.5,0.65 -0.76,1.45 -1.27,2.09z m20.58,-43.12c1.89,-0.99 1.05,0.09 0,0z m18.74,-19.12c-0.11,-1.35 1.21,-2.72 0.71,-0.65l-0.24,0.29 -0.47,0.36 0,0z m7.46,-19.18c-1.61,-0.55 0.1,-1.14 0,0l0,0z m3.95,-10.61c-1.42,-0.85 2.16,-3.22 0.98,-0.56 -0.23,0.31 -0.59,0.56 -0.98,0.56z m8.03,-3.21c-0.35,-1.4 -4.22,-5.53 -0.69,-3.55 1.98,-0.66 -2.87,-2.41 0.24,-2.21 2.34,-1.07 1.29,3.96 3.81,2.24 0.12,-1.58 -1.95,-2.83 0.76,-2.09 1.98,-2.01 2.51,5.82 -0.36,3.01 -2.2,-1.1 -3.01,1.06 -3.76,2.6z m-5.57,-1.57c-2.14,-0.36 2.05,-0.11 0,0z m-7.93,-1.09c-0.6,-2.04 2.47,-0.64 0,0z m7.12,-4.13c0.59,-2.37 4.58,-1.01 4.01,-4.46 0.66,-1.69 0.95,3.05 2.77,1.99 1.53,1.25 -2.5,3.06 -1.7,0.6 -1.05,-1.01 -2.27,1.66 -3.77,0.7 -0.56,0.22 -0.96,0.7 -1.3,1.17z m7.58,-0.78c-1.19,-2.28 3.86,-0.43 2.34,-2.88 -3.7,-0.04 1.43,-1.56 0.6,-2.56 -2.52,-1.2 0.41,-2.37 1.15,-2.81 0.41,-3.22 -2.85,-1.84 -4.06,-0.47 -1.59,-2.04 2.26,-2.36 2.32,-4.57 0.14,1.33 0.46,2.85 1.65,2.42 0.8,1.52 3.32,1.84 3.24,-0.37 1.68,1.68 2.77,1.67 2.31,-0.48 0.79,-1.17 0.35,-2.79 1.61,-3.02 -0.4,-0.66 -1.42,-3.92 0.2,-3.31 0.95,2.39 -0.14,5.28 -0.89,7.26 2.94,1.88 1.55,-3.57 4.12,-3.05 0.22,-1.76 -3.3,-2.79 -1.17,-4.59 1.11,2.64 2.9,-1.39 2.9,-1.08 0.95,0.44 4.33,3.19 2.86,0.58 0.52,-1.54 -0.4,-5.86 -2.92,-3.36 -3.05,-0.22 1.04,-4.05 2.23,-1.43 1.8,-0.47 3.36,-0.55 3.65,1.78 1.6,2.82 3.68,-1.17 2.1,-1.52 0.07,-0.51 -0.69,-2.47 -0.41,-3.71 -0.86,-0.45 -2.21,1.67 -1.86,-0.59 0.28,-1.23 2.77,-3.11 1.94,-0.75 0.94,1.47 4.41,-0.15 2,-1.03 0.6,-1.49 3.48,0.04 1.97,-2.16 -0.79,-0.71 -2.04,-3.95 0.25,-3.13 1.93,-0.42 3.84,0.45 2.02,2.21 -1.75,1.98 -0.56,3.61 -0.42,5.65 -2.28,2.68 3.1,3.87 2.24,0.45 -0.18,-2.74 0.93,-5.32 1.76,-8.05 1.89,-3.05 -1.06,3.6 0.33,2.81 1.3,-1.62 0.64,3.35 2.9,1.4 2.12,-1.22 -1.68,-4.46 1.77,-4.91 0.72,-1.47 -2.34,-1.18 -0.57,-2.18 -0.51,-2.17 4.79,-1.62 2.39,1.11 -1.65,1.09 -1.95,4.14 -0.56,3.08 -0.4,2.24 2.84,0.85 3.62,0.4 -0.89,-1.13 -1.79,-4.79 0.32,-4.87 0.09,2.52 4.6,3.29 3.84,0.25 1.3,0.25 1.81,0.78 0.68,1.44 0.12,2.4 2.78,-0.68 3.9,1.46 2.08,1.26 -1.72,0.74 -1.03,2.68 -0.51,3.31 -7.08,0.08 -6.25,3.51 1.53,-0.19 4.57,0.06 4.67,1.27 -0.73,2.54 2.28,1.63 2.62,2.01 1.41,2.24 -3.5,3.67 -1.9,6.17 0.12,3.04 -1.51,0.49 -0.35,-1.03 0.73,-2.35 -0.61,-5.22 -3.22,-5.51 -2.52,-0.23 -4.95,-4.8 -6.83,-0.86 -0.98,2.59 -3.07,-0.98 -3.73,2.03 -1.82,2.85 -1.43,6.39 -0.81,9.47 1.12,1.85 1.17,3.38 -0.82,4.1 -0.7,1.31 0.29,4.41 -1.67,2.5 -2.14,-1.69 -5.02,-0.86 -5.85,1.4 -2.54,0.85 -4.72,0.04 -5.34,-2.66 -0.99,-2.14 -5.91,-6.2 -6.14,-1.61 0.57,2.13 -0.39,0.96 -1.13,1.23 -0.7,0.99 -4.96,0.92 -2.14,2.3 2.85,1.94 -1.88,4.5 0.34,5.92 1.59,3.24 -4.12,0.39 -5.68,0.21 -2.06,-1.04 -3.15,2.55 -4.42,0.38 -1.01,-0.36 -2.16,1.19 -2.67,1.07z m-9.01,-1c0.11,-2.56 2.91,0.13 0,0z m-1.13,-1.28c-0.8,-1.29 3.49,-1.49 0.69,-0.52l-0.34,0.34 -0.36,0.18 0,0z m4.3,-0.48c-1.71,-0.47 -0.9,-2.93 0.17,-2.2 -0,0.74 -0.11,1.47 -0.17,2.2z m4.79,-4.64c0.18,-0.78 1.29,-1.07 0,0z m7.64,-3.83c-2.24,0.29 -1.11,-3.47 -0.22,-0.75 0.06,0.35 1.74,0.98 0.22,0.75z m2.2,-0.62c-2.38,-0.91 -2.84,-5.4 0.1,-4.68 0.37,1.54 -0.1,3.12 -0.1,4.68z m-1.72,-6.1c-4,-0.97 3.45,-2.52 1.03,-0.52 -0.42,0.05 -0.59,0.56 -1.03,0.52z m5.27,-4.48c-0.27,-0.28 0.7,-0.67 0,0z m42.25,-2.91c-1.73,0.39 -2.88,-3.16 -0.45,-1.74 1.34,-0.78 2.3,1.96 0.45,1.74z m-35.9,-2.93c0.17,-2 2.33,-0.17 0,0z m1.12,-1.12c1.6,0.69 0.37,-2.16 2.16,-2.14 -0.43,0.5 -1.9,3.93 -2.16,2.14z m20.87,-4.79c0.68,-1.68 0.54,-0.43 0,0z m-9.67,-2.21c-2.58,-0.52 -0.4,-3.09 0.65,-0.8 -0.07,0.3 -0.24,0.8 -0.65,0.8z M319.32,12.08c-0.3,-1.14 -1.45,-2.77 -2.39,-2.03 -1.57,-1.66 3.97,-2.79 -0.11,-4.02 -1.19,0.78 -1.7,1.41 -2.54,-0.32 -1.8,0.29 -3.52,-4 -2,-4.15 0.28,2.4 2.41,-1.85 3.57,0.39 1.62,1.46 1.99,-0.61 1.81,-1.03 1.1,0 2.2,0 3.3,0 -1.65,1.5 0.79,4.98 -1.45,5.97 1.81,0.96 -0.87,3.73 0.84,4.72 -0.27,0.27 -0.64,0.46 -1.03,0.47z M334.56,1.41c-0.71,-0.78 1.26,-0.59 0,0z","name":"Norway"},"ua":{"path":"m458.88,376.43c-1.65,0.13 -4.78,-1.76 -1.5,-2.12 1.11,-0.94 -0.88,-2.9 1.02,-4.06 0.62,-1.77 2.75,-4.95 1.17,-6.55 -2.35,-0.6 0.77,-4.92 0.58,-1.37 1.22,0.09 1.33,-0.46 2.29,-1.4 1.42,1.03 2.11,1.68 2.01,-0.49 0.8,-0.31 0.98,2.31 1.91,0.48 2.09,-0.77 2.07,-2.38 0.02,-2.62 0.48,-3.05 -2.01,-4.08 -4.34,-4.76 -1.03,-1.35 0.14,-4.1 -2.32,-4.58 -0.19,2.48 -3.85,-0.68 -2.94,-2.62 0.58,-1.57 -1.58,-5.77 -2.62,-3.02 -1.32,-0.9 -3.45,-3.78 -4.76,-1.05 -0.61,-1.26 -0.31,-1.31 -2.39,-0.85 -1.59,-0.19 -3.7,-2.91 -5.96,-1.05 -1.9,1.41 -4.52,1.99 -6.34,2.49 -0.3,1.21 -2.98,2.87 -3.26,4.06 0.69,2.88 -3.92,2.94 -5.88,3.36 -1.91,1.06 -2.85,5.5 -5.12,2.22 -2.55,-1.4 -4.85,1.16 -7.45,0.17 -2.78,0.68 -6.22,-1.81 -7.42,1.27 -1.7,-1.79 -4.36,-1.99 -6.08,-3.8 -1.69,-1.99 1.67,-4.76 1.1,-7.32 0.71,-2.08 3.89,1.72 3.03,-0.71 -0.43,-1.86 -2.14,-2.21 -2.09,-4.41 -1.6,-2.52 1.02,-5.01 1.85,-7.4 1.48,-2.09 2.06,-5.46 4.76,-6.09 3,-1.14 0.85,-4.79 0.14,-5.51 2.5,-2.1 -3.76,-3.23 -3.93,-5.84 -0.3,-1.41 -1.88,-4.75 0.96,-3.25 2.78,-0.65 2.08,-4.77 5.31,-4.83 2.44,-2.13 5.65,-1.09 8.41,-2.29 2.86,0.12 5.82,0.8 8.71,-0.13 1.44,0.02 2.96,3.43 4.46,0.67 0.48,-0.61 1.02,3.11 2.27,0.92 -0.68,-2.01 1.68,-0.28 2.33,-1.83 1.72,1.64 3.14,-2.06 4.36,1.19 0.98,-0.83 1.53,-5.36 3.12,-2.13 0.91,1.83 2.9,1.59 3.18,-0.37 1.11,-0.89 4.84,0.77 2.92,-1.35 2.22,-0.55 3.94,4.29 5.74,0.82 -0.53,-2.27 -3.24,-4.21 -1.65,-7.03 0.3,-2.91 3.55,-3.36 5.73,-4.62 2.8,0.98 5.55,-1.1 4.6,-3.99 2.15,-0.59 4.74,-0.01 5.62,-2.79 1.28,-1.72 2.08,2.03 2.83,-0.54 3.15,-1.7 3.09,3.74 6.17,3.78 2.69,0.81 -2.77,1.83 -0.06,3.34 0.97,1.1 0.27,1.92 1.66,2.64 0.13,1.93 0.76,2.76 1.8,0.93 1.75,0.21 3.63,-0.42 4.86,-1.04 1.22,1.6 2.86,1.33 3.58,3.44 0.66,2.12 2.97,6.38 5.86,3.86 0.95,-2.66 2.98,0.62 4.61,-0.26 2.96,0.38 3.76,-3.58 5.99,-4.66 2.15,1.36 3.87,3.07 6.32,3.78 2.39,1.73 1.46,-2.06 1.83,-2.22 2.04,0.83 3.63,-0.35 5.65,0.78 1.64,-1.06 3.29,-0.67 5.4,-0.98 -0.34,2.96 3.78,0.35 3.93,-0.21 -1.54,1.79 2.89,1.91 1.36,4.34 -0.91,1.71 -3.3,4.32 0.42,4.36 1.34,-0.17 -2.51,1.76 -0.87,3.22 0.73,1.16 4.31,0.82 2.94,3.4 -1.12,2.14 2.56,-1.79 1.05,1.32 0.04,1.92 1.74,4.67 -1.56,4.6 -2.59,0.04 -5.57,1.58 -4.88,4.34 -1.93,1.59 -3.46,4.3 -2.04,6.74 1.21,-0.9 1.4,3.27 -0.48,2.33 -2.61,-0.17 -4.34,2.86 -4.47,4.25 -3.32,-0.37 -1.93,5.58 -4.94,3.83 -1.97,0.68 -1.55,3.31 -3.9,2.83 -2.31,2.16 -4.28,4.87 -4.46,8.16 0.05,2.37 -1.89,1.63 -2.69,0.94 -1.43,2.66 1.92,4.83 3.49,6.52 1.72,1.52 4.3,4.21 6.67,2.42 1.12,-1.05 0.41,-2.57 2.09,-1.56 1.41,-0.15 1,-2.82 3.17,-2.37 1.15,-0 0.13,2.98 0.5,4.21 -1.72,0.79 -3.13,2.24 -5.41,1.17 -2.72,0.19 -1.51,3.05 -3.33,4.45 -1.46,1.36 -5.27,2.16 -5.39,5.34 -0.65,2.52 -2.91,5.33 -5.63,3.62 -2.92,-0.52 2.13,-0.53 -0.45,-1.77 -0.6,-1.76 -0.24,-6.9 -3.31,-5.63 -2.51,0.74 -5.09,-2.4 -7.49,-0.19 -0.84,-1.11 2.17,-2.44 2.5,-3.9 1.15,-2.11 4.76,-3.17 5,-5.4 -1.21,-0.47 -1.1,-4.45 -2.98,-2.14 -0.01,2.53 -3.55,-2.55 -3,-0.06 -1.18,1.35 -4.02,3.26 -6.29,3.26 -0.55,-2.41 -5.82,0.8 -2.84,-2.01 -2.07,-2.11 3.13,-0.37 2.51,-2.12 0.43,-0.87 2.54,-3.83 0.04,-2.33 -1.67,2.49 -5.64,0.74 -4.34,-2.2 -3.44,-0.71 0.17,4.67 -3.05,4.35 -0.95,0.4 -1.24,-2.89 -2.18,-0.81 1.19,3.1 -5.65,1.69 -4.31,5.43 -0.19,2.64 -0.71,6.16 -2.65,8.5 -1.92,0.15 -2.28,-0.37 -1.97,1.56 1.06,2.6 -1.47,1.65 -1.44,-0.04 -3.03,0.54 1.86,5.97 -1.63,4.84 -1.69,1.04 -2.76,2.58 -4.85,3.23 -0.33,0.68 0.22,1.06 -0.9,0.94z m8.84,-3.13c-1.24,-0.5 0.31,-1.59 0,0z M480,354.71c-2.02,-0.24 1.4,-0.94 0,0z","name":"Ukraine"},"il":{"path":"m564.91,519.32c-2.79,-0.13 -5.59,-0.02 -8.39,-0.06 1.03,-3 0.55,-6.35 0.36,-9.47 -0.77,-1.89 -0.08,-3.97 0.69,-5.38 -2.21,-3.68 3.62,-1.36 3.34,-4.63 0.16,-2.5 0.5,0.45 0.78,1.3 0.41,1.74 0.97,3.45 0.64,5.26 0.64,4.15 2.85,8.05 2.93,12.32 -0.33,0.17 0.28,0.88 -0.36,0.66z","name":"Israel"},"sa":{"path":"m593.15,519.31c-2.83,-0.62 -5.1,-2.77 -7.77,-3.86 -1.58,-0.98 -5.22,-1.86 -2.02,-3.26 5.2,-3.81 10.77,-7.23 15.26,-11.9 1.43,-2.99 4.63,-3.12 7.49,-3.98 3.73,-1.26 7.76,-1.54 11.57,-0.41 3.34,1.04 6.79,1.79 10.32,1.49 3.1,-0.23 6.16,0.27 9.07,1.36 7.05,2.14 14.23,3.86 21.25,6.06 3.22,1.22 7.13,2.8 10.33,0.7 3.47,-1.54 7.12,-2.66 10.59,-4.19 0,5.98 0,11.96 0,17.94 -28.52,0 -57.04,0 -85.55,0l-0.54,0.05z","name":"Saudi Arabia"},"iq":{"path":"m665.09,505.54c-3.93,-0.14 -7.37,-2.41 -11.2,-3.08 -6.98,-1.9 -13.93,-3.92 -20.88,-5.88 -4.51,-0.55 -9.21,0.46 -13.56,-1.25 -4.06,-1.23 -8.45,-1.67 -12.53,-0.27 -2.28,0.01 -6.14,3.28 -6.23,-0.28 -1.25,-1.52 -3.9,2.58 -3.26,-0.38 2.09,0.09 -1.51,-3.02 -1.67,-4.04 -1.32,-2.57 -5.49,-5.02 -2.13,-7.49 4.5,-5.84 9.16,-11.56 13.6,-17.45 2.04,-3.07 2.39,-7.4 0.02,-10.4 -1.41,-3.28 0.38,-7.66 -2.62,-10.31 -3.09,-2.29 -2.71,-6.73 0.85,-8.16 2.5,-2.92 2.33,-7.04 4.39,-10.19 0.66,-2.04 0.93,-3.47 3.19,-3.89 2.1,-2.75 5.72,-0.13 8.03,-2.44 0.9,-1.04 2.2,-3.85 2.95,-0.99 0.24,2.01 2.47,2.98 2.75,0.39 0.38,-1.99 1.84,-3.41 3.5,-1.73 2.25,0.16 -1.13,2.67 1.73,2.71 2.42,-0.18 1.65,4.3 5.21,2.73 1.14,1.18 1.93,5.76 4.16,3.01 2.6,0.76 5.25,0.47 7.14,-1.59 0.61,0.22 -3.19,2.13 -1.4,3.83 1.09,1.94 5.9,4.19 1.79,5.59 0.41,2.25 -2.38,5.11 0.78,6.65 -2.86,-0.58 -2.74,5.86 0.16,4.24 -0.52,2.48 -0.45,5.39 2.6,5.52 0.99,0.71 1.98,1.43 2.96,2.14 0.34,-1.31 1.06,-1.78 0.88,-0.17 1.65,-0.62 3.99,0.32 4.03,2.59 0.12,1.35 0.91,3.75 2.75,1.76 3.33,-1.46 6.61,1.38 9.97,1.03 2.56,-1.77 4.83,0.86 6.18,2.91 0,13.19 0,26.38 0,39.57 -4.3,1.87 -8.8,3.32 -13.06,5.23 -0.36,0.05 -0.72,0.08 -1.09,0.08z","name":"Iraq"},"az":{"path":"m625.84,392.01c-2.29,-1.74 -6.12,-1.39 -7.67,-4.17 -2.87,-0.9 2.82,-3.1 1.5,0.21 -0.29,2.16 0.66,-0.38 1.38,-0.86 1.98,0.67 2.99,-0.38 4.14,-1.97 0.78,0.36 1.17,3.12 3.09,2.25 0.41,1.86 5.4,3.6 1.25,3.88 -1.24,0.15 -2.44,0.52 -3.69,0.66z m9.25,-4.53c-1.22,-1.31 -1.37,-1.74 -0.58,-3.22 -0.7,-1.79 -4.05,0.28 -2.18,-2.45 -0.71,-3.07 -3.86,1.6 -5.74,-0.73 -1.12,-1.04 -4.8,-0.64 -2.24,-1.72 1.66,-3.91 -3.46,-4.05 -5.96,-4.45 -3.06,-0.54 1.31,-0.13 -0.04,-1.79 -1.74,-0.11 0.76,-3.32 -2.15,-2.78 -1.13,-2.07 -3.77,1.24 -3.43,-1.3 -3.83,0.78 -1.14,-4.07 1.25,-3.79 1.55,-0.11 2.45,2.19 4.64,1.11 1.17,-0.47 1.66,-2.32 3.53,-1.24 4.04,0.44 2.81,-5.63 -0.82,-5.09 -1.19,-0.23 -4.57,-0.92 -2.6,-1.97 -1.03,-3.22 2.59,-2.79 4.29,-1.55 1.8,0.76 4.71,-0.66 4.29,1.94 2.3,1.27 5.96,-0.02 6.83,-2.57 -0.51,-2.81 0.78,-5.44 1.5,-8.17 0.77,-1.87 3.93,1.21 5.57,1.75 2.04,2.28 4.63,3.86 7.4,4.84 2.72,2.9 5,-2.29 8.05,-0.66 2.42,0.7 -1.69,0.86 -2.16,1.8 -1.58,1 -0.94,2.98 -2.64,4.05 -0.87,2.65 2.35,4.7 1.48,7.28 0.01,2.24 2,3.06 1.53,5.18 2.05,2.31 -2.94,0.21 -1.67,3.07 0.41,2.71 2.06,5.63 2.66,7.96 -1.4,1.58 -3.89,-2.8 -4.72,-0.12 -0.51,-2.33 -5.01,-0.05 -2.24,-2.75 1.89,-2.25 -0.89,-2.79 -2.14,-3.4 -0.39,-1.7 3.13,-2.19 0.43,-2.98 -2.55,-2.17 -6.8,-1.82 -7.18,2.01 -1.56,2.2 -2.45,4.87 -3.2,7.25 -1.02,1.28 -1.42,2.9 -1.76,4.47z","name":"Azerbaijan"},"ir":{"path":"m679.21,458.81c-1.85,-0.64 -2.96,-4.67 -5.07,-2.4 -2.51,1.13 -4.99,-0.69 -7.5,-0.94 -1.54,-1.25 -4.65,1.4 -4.88,0.3 -0.35,-2 -1.76,-5.08 -4.31,-4.59 -0.55,-2.48 -2.8,0.93 -4,-1.28 -1.15,-1.36 -3.82,-0.5 -2.7,-3.18 1.2,-2.24 -1.18,-2.93 -1.92,-2.92 -0.76,-2.14 0.85,-1.8 1.93,-2.95 -0.87,-1.54 -2.25,-2.23 -1.18,-3.98 1.41,-1.22 -0.93,-2.74 1.62,-3.12 2.22,-2.84 -3.32,-4.02 -3.44,-6.68 1.23,-0.62 3.69,-3.96 0.62,-3.5 -2.16,1.88 -4.6,2.34 -7.4,1.61 -2.13,2.68 -1.52,-4.01 -4.35,-3.02 -2.59,1.12 -1.74,-3.71 -4.6,-2.9 0.47,-2.81 -2.6,-2.62 -3.34,-4.74 -3.51,-0.37 -2.73,-5.88 -6.79,-4.9 -2.43,-0.23 0.88,-4.74 -1.15,-6.42 -2.63,1.81 -2.65,-3.09 -4,-4.32 -2.26,0.51 -1.17,-4.01 -3.82,-4.01 -1.08,-1.34 3.43,-0.98 2.24,-3.41 -0.62,-1.73 -1.46,-4.27 1.42,-2.93 2.06,1.49 5.14,2.91 7.63,3.88 2.25,1.24 5.18,-0.04 7.5,-0.74 2.07,-1.71 5.07,-2.61 4.75,-5.97 2.3,-2.33 1.71,-5.53 3.7,-8.09 0.98,-2.61 2.58,-5.68 5.71,-3.44 1.82,0.32 -1.95,3.66 1.08,3.95 4.06,-0.35 -2.73,4.32 1.52,4.83 1.27,-1.49 2.59,2.44 3.8,0.15 1.45,1.58 3.99,1.1 4.87,0.71 1.82,2.85 3.68,6.92 7.62,6.9 3.17,0.36 5.34,-2.56 8.13,-3.02 2.01,0.9 4.99,2.01 6.34,2.88 -0.02,22.74 0.03,45.49 -0.03,68.23z","name":"Iran"},"ge":{"path":"m581.92,380.27c-2.26,-0.5 1.41,-3.83 -0.72,-5.4 -1.82,-2.3 -4.05,-4.17 -5.45,-6.77 -1.72,-2.18 -4.46,-0.36 -5.95,-2.58 -2.48,-1.15 -5.99,1.77 -7.69,-0.38 -1.24,-0.61 -3.4,-1.34 -1.11,-2.52 2.92,-1.18 5.31,-0.74 8.31,-1.17 2.62,-0.64 4.81,0.81 7.27,-1.05 1.64,-1.03 2.03,-2.53 4.37,-2.32 3.09,-1.55 5.23,0.93 8.34,0.23 1.97,-0.34 3.8,-1.06 3.76,1.37 3.33,1.16 4.09,-3.43 6.09,-4.97 1.82,1.19 3.56,0.44 3.29,-1.84 2.38,1.1 4.89,0.94 6.98,-0.29 0.1,2.19 0.6,4.52 3.44,3.9 1.82,0.87 6.7,-2.08 4.44,1.62 -1.04,4.09 6.18,1.33 6.51,4.88 -0.55,2.71 -3.63,-0.63 -4.78,1.93 -2.42,2.07 -3.95,-2.25 -6.59,-0.28 -2.88,0.84 -1.75,4.15 -4.11,5.26 -2.15,1.64 -6.02,2.97 -7.99,5.72 -1.4,1.55 -3.24,0.61 -4.57,1.11 -0.32,-2.7 -4.41,-0.39 -5.08,-2.59 -2.74,0.39 -1.4,4.41 -4.46,3.55 -2.08,-0.04 -2.63,2.5 -4.3,2.58z","name":"Georgia"},"sy":{"path":"m570.98,505.1c-2.37,-0.06 -4.22,-2.23 -6.66,-1.9 -1.76,1.54 -0.95,-3.61 -2.17,-4.66 0.26,-2.1 3.06,-4.25 2.48,-6.23 -2.86,0.37 -0.12,-3.18 1.61,-2.81 1.41,-1.1 -2.08,-2 0.23,-3.24 2.46,-1.85 0.82,-6.41 -2.32,-5.73 1.74,-2.54 -3.41,-1.48 -4.52,-0.5 -2.16,-1.45 -1.71,-4.59 -2.2,-6.89 -0.72,-2.13 -3.63,-2.2 -2.69,-4.95 -1.91,-3.07 4.61,0.44 2.96,-3.37 1.96,-1.34 -0.54,-4.12 2.56,-4.37 1.92,-1.95 -2.9,-3.08 -1.96,-5.67 -0.17,-2.68 3.53,-1.88 4.07,-0.24 2.8,-1.4 6.26,-2.87 7.96,-6.08 1.77,-3.87 6.01,-0.57 8.96,-1.32 4.89,-1.98 9.3,-5.28 12.15,-9.78 2.06,-3.09 5.52,-4.42 8.88,-5.51 3.15,-0.62 4.71,-4.01 6.68,-5.54 2.16,2.06 -0.35,4.49 -0.71,6.75 -0.34,2.94 -3.64,3.54 -4.67,5.93 -0.77,2.72 0.96,5.34 2.92,7.06 1.91,2.86 0.25,6.61 2.05,9.52 1.43,2.7 2.07,6.08 0.11,8.71 -2.41,4.04 -5.84,7.35 -8.54,11.19 -6.92,8.84 -13.8,17.72 -20.31,26.87 -1.64,2.62 -4.19,2.66 -6.86,2.76z","name":"Syrian Arab Republic"},"tr":{"path":"m494.91,482.2c-2.64,-0.83 -6.61,0.7 -6.69,-3.38 -0.28,-2.26 -4.06,-2.7 -3.32,0.14 -2.13,0.72 -2.01,-4.36 -4.24,-2.06 -1.1,1.64 -1.71,4.09 -2.75,1.3 -0.06,-0.7 3.87,-0.84 1.58,-2.85 -2.66,-0.75 -4.9,2.05 -7.56,2.3 -3.22,0.12 2.63,-2.09 -0.16,-3.58 -1.02,-1.26 -2.59,-1.78 -3.85,-0.25 0.8,-2.14 -2.11,-2.59 -0.3,-4.42 0.7,-2.91 -3.46,-4.14 -4.72,-3.08 -0.35,-2.13 -2.41,-1.66 -2.94,-0.12 -0.96,-0.52 -4.49,-1.13 -1.65,-1.67 1.95,-1.12 -0.35,-1.93 -0.64,-2.3 -0.1,-2.91 1.76,1.21 2.44,2.3 1.21,0.53 0.61,-1.54 2.32,-0.91 2.14,0.31 3.08,-4.19 0.9,-2.3 -2.98,0.71 -3.35,-2.88 -0.63,-3.63 1.42,-2.31 -2.41,-1.49 -2.02,-3.47 -1.48,-1.26 -3.08,-1.7 -1.12,-3.61 1.88,-4.06 -3.41,-1.44 -4.89,-0.21 -3.22,2.13 -1.41,-2.71 -2.53,-4.43 0.27,-1.5 2.4,-1.02 1.65,-3 1.08,-2.79 3.49,-3.54 5.85,-4.95 1.33,-0.2 3.18,2.13 5.06,0.5 2.19,-0.32 0.53,-4.12 2.21,-2.66 -1.01,2.78 3.65,-0.5 5.07,-0.34 1.73,-0.22 7.01,-0.13 5.15,-2.97 -1.48,-0.21 -3.18,0.39 -0.99,-0.95 1.96,-1.62 4.19,-2.4 6.66,-2.8 2.77,-0.54 1.2,-2.91 -0.89,-1.86 -1.93,1.45 -3.4,0.81 -4.38,0.32 -3.58,0.35 -2.31,-4.79 0.81,-3.52 2.71,0.01 5.57,-0.39 7.64,-2.28 2.46,-0.32 5.31,1.16 7.39,-0.69 2.9,-0.41 1.41,-4.52 4.23,-5.54 2.71,-2.98 4.61,-6.84 8.39,-8.68 2.29,-1.78 4.29,-3.83 7.39,-4.02 3.16,-0.7 6.47,-1.22 9.26,-2.97 -0.18,-2.01 2.92,-3.03 2.12,-0.46 1.09,2.77 5.37,3.22 7.04,0.72 1.14,-1.37 -0.27,2.45 1.16,0.14 2.04,-1.94 2.88,3.79 5.57,2.83 1.27,-1.86 4.62,-3.78 5.67,-1.09 1.67,-0.99 4.1,0.27 5.52,-0.17 -0.07,-1.45 1.44,-1.93 0.76,-0.72 3.48,0.31 7.66,-0.08 9.71,-3.32 2.34,-1.18 4.33,-4.18 7.15,-3.36 2.71,-0.07 6.67,-0.67 7.5,-3.83 1.38,-2.88 4.81,-4.34 5.49,-7.63 0.34,-3.02 3.69,-0.01 3.89,-2.79 0.79,-1.71 6.06,-0.8 5.2,-2.54 -0.27,-1.98 1.64,-2.11 0.91,-0.61 1.97,-1.13 4.24,-0.33 5.11,0.95 0.95,1.76 2.34,-1.7 3.43,0.93 2.07,0.94 4.5,1.8 3.64,4.81 0.12,2.83 2.56,6.38 5.64,4.35 1.45,-1.61 6.05,-1.12 6.12,-0.28 -2.87,1.25 2.28,4.65 -1.45,5.76 -2.31,0.86 -1.86,1.74 0.02,2.55 2.07,1.41 1.16,4.02 3.6,4.69 1.23,1.57 1.59,5.71 3.8,4.2 0.43,2.37 -1.79,7.52 2.74,6.05 2.64,-0.44 0.94,3.97 3.94,4.02 3.58,1.02 -1.74,2.3 -1.12,4.76 -1.2,0.98 -0.5,-3.85 -3.12,-2.67 -1.98,1.2 -2.57,4.14 -5.61,3.29 -2.88,-0.31 -4.84,1.72 -7.02,2.7 -0.69,1.88 -0.86,5.21 -2.91,2.44 -2.75,-0.22 -2.61,4.46 -5.58,4.92 -2.98,1.72 -6.75,1.93 -9.15,4.66 -2.61,2.66 -4.36,6.14 -7.61,8.16 -2.25,1.32 -4.52,3.36 -7.26,3.28 -3.54,-1.52 -7.49,-0.78 -9.08,3.03 -1.68,2.28 -5.43,4.75 -7.39,2.82 -3.82,-1.14 -4.64,3.62 -2.75,6 0.73,1.14 2.5,1.57 0.17,2.12 -3,0.1 0.83,3.76 -2.09,4.07 1.59,1.89 -1.39,2.48 -1.35,0.31 -1.32,-1.73 -3.85,-3.07 -1.43,-5.18 3.46,-2.09 -0.87,-8.48 -3.12,-4.45 -0.21,1.09 -4.52,4.06 -1.07,3.29 -0.14,0.32 -3.7,3.62 -5.39,1.57 -3.14,-1.5 -6.7,0.91 -7.75,3.93 -2.31,1.12 0.64,5.77 -2.52,4.44 -0.89,2.68 -3.25,3.27 -5.84,4.06 -1.96,1.06 -3.83,3.65 -6.37,2.47 -2.84,-1.55 -5.07,-4.65 -8.7,-4.14 -2.94,-0.38 -6,-0.94 -8.9,-0.06 -3.48,-0.29 -3.26,3.57 -2.85,5.62 -0.19,1.75 1.15,3.5 -1.34,2.67 -2.13,0.36 -2.94,2.88 -4.85,3.38z m-22.48,-0.92c1.54,-1.56 1.67,0.46 0,0z m4.91,-2.51c-0.79,-0.93 0.97,-1.15 0,0z m-7.81,-0.87c-2.21,-0.79 -0.04,-1.14 0.54,-0.39 -0.12,0.2 -0.29,0.4 -0.54,0.39z m-17.07,-35.78c-2.05,-1.66 3.84,-4.8 1.02,-1.64 -0.17,0.27 -1.7,3.54 -1.02,1.64z m-2.5,-4.63c-2.27,-0.95 2.99,-3.59 0.8,-5.77 -1.18,-2.59 4.67,-3.55 1.64,-6.24 -1.25,-1.27 -3.7,-1.75 -1.56,-3.41 0.31,-2.43 2.93,-0.92 3.7,-3.21 1.99,-1.8 4.08,2.49 6.12,-0.22 3,-2.82 1.8,3.03 4.59,3.75 2.54,1.72 5.71,1.31 8.59,1.46 1.59,1.71 -1.83,5.17 -3.31,2.87 -1.59,0.83 -4.21,-0.49 -5.46,2.07 -2.23,0.06 -4.36,0.17 -4.68,3.06 -0.43,2.55 -2.87,5.66 -5.23,3.75 -1.9,0.1 -3.3,1.78 -5.2,1.9z","name":"Turkey"},"am":{"path":"m631.96,389.85c-1.96,-0.78 -2.5,-4.05 -4.9,-3.4 0,-2.98 -2.99,-2.85 -3.89,-0.42 -0.72,0.59 -2.05,-1 -2.73,0.47 -1.44,-4.24 -3.82,2.15 -6.08,-0.34 -2.43,-1.36 -5.05,-0.13 -7.33,0.88 -1.6,1.02 -2.24,-1.35 -3.25,-2.19 -0.22,-2.63 -0.35,-6.8 -3.95,-6.8 -1.56,-1.33 3.34,-2.22 3.67,-4.1 2.01,-1.81 4.84,-2.17 7,-3.75 -1.93,-0.72 2.92,-0.35 0.29,0.72 0.12,2.73 3.55,-1.6 5.25,0.33 2.07,0.17 -1.51,3.12 1.09,4.06 1.57,1.97 7.78,-0.09 6.04,3.56 -1.81,0.88 -2.21,2.81 0.36,2.27 2.62,0.26 4.73,3.06 7.3,0.67 1.25,-0.38 -1.56,2.52 0.95,2.4 1.37,0.14 2.22,0.32 0.58,1.07 -0.16,1.55 3.78,3 0.58,4.04l-0.53,0.37 -0.44,0.16 0,0z","name":"Armenia"},"cy":{"path":"m527.35,491.44c-2,0.03 -5.42,-2.87 -2.34,-3.85 0.27,-2.84 4.77,-0.45 3.78,-3.88 -1.1,-2.02 2.82,-0.4 4.03,-1.67 3.21,-1.08 5.34,-3.84 7.9,-5.9 -1.85,1.69 -5.66,5.67 -1.55,7.09 -1.16,0.96 -4.02,1.69 -3.88,3.92 -1.79,0.94 -4.14,2.55 -4.75,3.95 -1.18,-1.33 -2.1,0.23 -3.19,0.34z","name":"Cyprus"},"ie":{"path":"m160.13,300.45c-1.94,-0.73 -5.41,-0.29 -5.93,-1.1 2.68,-0.96 1.02,-3.47 -1.27,-2.29 -2.17,-0.03 4.61,-0.27 1.86,-1.87 -1.29,0.35 -5.82,0.84 -4.6,-0.88 0.33,-2.41 5.15,0.07 4.57,-2.91 -1.5,-0.99 -3.62,0.6 -3.81,-1.26 1.2,-0.91 6.26,2.54 3.91,-0.67 0.38,-1.38 3.44,-1.82 5,-1.34 1.1,0.96 5.65,0.21 3.16,-0.84 -0.11,-2.83 -2.54,-0.03 -3.01,-0.47 -0.23,-0.23 -3.43,-0.5 -1.1,-1.34 2.22,-1.01 0.54,-4 2.82,-3.42 2.56,1.02 3.91,-3.17 0.52,-2.46 -1.68,0.14 -2.56,-0.23 -2,-1.83 -0.18,-2.01 -5.12,-1.21 -3.94,-2.82 2.15,0.5 2.19,-2.65 4.57,-1.69 2.67,-0.16 1.13,-2.7 -0.21,-3.26 0.29,-1.31 0.02,-3.18 -0.75,-3.28 2.65,-0.82 4.91,0.87 5.93,2.56 1.46,-1.86 3.2,1.45 5.23,1.05 -1.45,-1.4 -1.04,-3.03 1.32,-2.78 1.21,-0.78 -0.05,1.72 1.32,2.45 1.11,1.84 4.55,5.05 6.16,2.17 -0.49,-1.92 2.26,-1.77 1.43,0.13 0.94,1.15 1.06,2.27 0.8,3.26 0.63,1.48 4.47,-0.64 2.75,0.86 -2.34,0.42 -0.05,3.2 -0.77,4.83 0.46,1.62 -0.08,2.98 -1.28,2.32 1.02,2.41 1.46,5.54 -0.48,7.61 -1.25,2.01 -3.34,4.38 -4.14,6.02 -2.56,-0.85 -5.09,-0.34 -7.67,-1.06 -1.16,0.41 -0.62,2.52 -2.3,1.42 -1.5,0.14 -2.91,2.49 -3.4,0.19 -2.29,-1.05 -1.04,2.27 -2.69,2.29 -0.11,0.95 -1.6,-1.12 -2.01,0.4z m13.73,-33.46c2.33,-2.06 -0.9,-1.95 -2,-2.14 -1.29,-0.53 -2.55,-1.96 -0.25,-1.08 1.89,0.69 2.47,-1.66 2.15,-3.1 -1.16,-1.71 7.03,-1.16 4.23,1.31 -0.31,1.85 2.66,-0.08 1.09,1.63 -0.53,1.73 -5.09,0.69 -2.83,2.72 -0.77,0.31 -1.61,0.36 -2.38,0.64z m6.45,-5.05c0.02,-0.88 0.61,0.23 0,0z","name":"Ireland"},"gb":{"path":"m182.64,325.46c0.06,-1.95 -4.47,-2.09 -0.74,-2.3 2.67,-0.61 3.94,-3.31 6.49,-4.14 2.12,-0.77 1.4,-4.5 3.94,-3.31 1.45,-3.67 5.43,-1.45 8.06,-0.26 2.91,0.6 2.6,-3.72 5.07,-4.06 1.35,-0.1 4.35,-3.93 1.42,-2.57 -1.86,1.99 -5.05,0.84 -6.82,2.84 -2.27,-0.51 -2.72,-5.62 -5.77,-3.31 0.24,-2.37 -1.53,-4.27 -3.69,-2.44 -0.87,0.75 -2.94,0.79 -1.58,-0.17 0.16,-1.27 -3.6,-0.88 -1.52,-2.98 1.52,-0.74 3.44,0.29 4.82,-1.36 2.13,0.95 4.49,-1.92 5.83,-3.38 1.68,-2.26 0.05,-8.36 -3.37,-5.58 -1.46,1.33 -0.19,-1.41 0.97,-0.91 1.28,-1.84 2.91,-2.79 5,-2.8 1.2,0.32 4.62,-0.54 5.23,2.01 0.71,1.84 0.61,0.28 0.62,-0.81 -0.49,-1.45 0.01,-1.88 0.83,-1.63 -1.44,-2.21 1.58,-2.99 1.67,-4.6 -1.45,-0.49 -1.63,-2.14 0.09,-1.51 0.69,-1.16 0.79,-2.38 1.37,-3.56 -0.63,-2.27 -3.62,2.01 -2.38,-1.12 -0.36,-1.35 -2.39,0.41 -1.46,-1.51 -2.08,-2.31 0.12,-6.19 3.07,-5.98 2.74,-1.73 -0.83,-1.86 -2.08,-2.37 -0.92,0.48 -3.28,2.29 -4.42,1.19 -1.32,1.2 -1.79,-3.4 -3.43,-0.83 0.32,2.13 0.14,1.46 -0.76,0.01 -1.33,-0.68 -2.66,-1.39 -1.32,-3.18 1.13,-2.26 5.13,-4.6 2.33,-7.17 0.52,-2.42 1.47,-4.31 0.99,-6.83 -1.19,-2.25 -5.91,3.7 -3.96,0.19 -1.17,-1.95 1,-2.29 1.54,-3.39 -1.93,-1.31 3.92,-1.92 1.97,-3.06 1.93,-2.14 -1.4,-1.12 -1.91,0.17 -2.64,0.37 -2.78,2.95 -5.17,3.25 1.64,-1.88 1.56,-3.32 4.36,-3.1 0.45,-1.67 -5.98,-1.25 -1.81,-1.19 1.82,-0.7 -1.08,-3.69 1.83,-2.58 2.2,1.18 2.55,-1.86 1.62,-2.28 3.21,-0.32 0.94,-5 -0.12,-6.67 -1.49,-3.19 1.62,1.59 1.66,-1.31 -0.16,-0.99 3.11,1.17 2.06,-1.21 -1.02,-1.19 -0.29,-1.17 0.73,-0.82 0.07,-1.49 0.01,-1.71 1.64,-1.31 1.56,-1.15 -0.74,-2.21 0.86,-3.26 -0.88,-3.08 1.49,-0.59 1.87,-0.27 0.74,0.04 0.92,2.92 2,0.79 2.21,-0.9 6.43,0.18 7.86,0.3 -1.51,1.12 -1.16,3.83 -3.76,4.28 -1.25,1.24 -5.25,2.21 -4.45,4.19 2.02,-0.77 1.46,0.73 0.51,0.2 -2.65,-1.31 -3.91,3.83 -0.65,3.27 1.6,-1 4.76,-1.27 6.96,-0.43 2.15,0.77 9,0.4 6.36,4.13 -2.17,1.32 -1.95,4.3 -3.79,5.88 -1.36,2.24 -3.73,4.99 -6.67,3.85 -2.54,0.88 -0.66,2.52 1.1,1.38 0.78,-0.5 3.15,3.35 0.84,1.99 -2.07,-0.28 -3.16,1.31 -5.18,1.63 -0.02,2.53 4.56,1.95 5.82,1.47 2.3,1.2 3.8,3.55 4.55,5.85 2,2.23 0.13,5.79 1.35,8.49 -0.45,3.02 1.26,4.86 3.81,6.01 1.66,1.49 2.34,4.19 3.57,5.37 -2.57,1.95 1.1,5.12 0.44,6.31 -2.04,-0.08 1.34,3.78 1.3,5.11 0.78,2.24 -5.08,2.32 -2.09,4.71 1.56,2.69 3.3,0.05 4.83,-1 2.51,1.1 6.37,1.79 6.61,5.25 -0.28,2.6 -1.71,7.67 -4.87,6.84 -2.14,0.29 1.39,3.23 -1.35,2.01 -1.64,-1.62 -4.38,2.64 -1.7,1.39 1.98,0.5 -1.21,2.23 -2.35,1.41 -3.04,0.03 -0.52,3.18 1.11,2.57 2.13,-1.55 -0.82,1.67 1.85,1 1.37,0.01 4.16,-1.13 2.4,1.04 0.18,1.94 -3.04,1.77 -3.79,3.01 -3.03,-0.26 -5.14,2.46 -7.81,0.22 -2.14,-0.87 -5.12,1.06 -5.71,-1.04 -0.97,0.35 -1.61,-1.39 -2.37,0.11 -0.34,-1.96 -3.3,-2.15 -1.9,0.13 -1.76,0.29 -4.97,-1.2 -5.38,0.98 -2.03,-0.7 -3.26,-0.69 -4.99,-2.14 -2.67,-1.4 -6.68,-1.13 -6.68,2.71 -0.68,3.61 -3.23,0.34 -4.72,-0.57 -1.81,-0.09 -4.28,-1.13 -5.91,0.19 -1.52,-0.34 -2.18,1.47 -2.78,2.5z m18.76,-70.13c1.65,1.54 3.03,-0.19 0.57,-0.92 -0.47,-0.23 -0.39,0.68 -0.57,0.92z m-3.12,31.93c0.55,0.53 0.27,0.88 0,0z m-1.17,-10.07c0.02,-1.53 3.39,-4.02 1.66,-1.22 -0.39,0.58 -0.96,1.08 -1.66,1.22z m-10.63,-1.73c-1.59,-0.31 -2.08,-2.29 -3.03,-0.36 -1.91,-0.73 1.49,-2.2 -1,-2.29 0.13,-2.31 -2.8,-4.88 -3.79,-2.04 0.08,3.32 -3.97,-0.09 -4.6,-1.78 -1.85,-2.46 4.1,-0.54 2.7,-3.31 3.07,0.55 2.59,-4.32 5.36,-2.92 1.06,-1.19 2,-1.61 3.15,-1.03 2.23,-0.98 4.88,1.21 3.52,3.35 -0.19,2.26 3.15,1.24 0.87,3.27 -2.06,1.44 -0.04,2.03 1.25,1.47 1.84,1.95 -0.91,4.87 -2.77,3.75 -0.28,0.8 -0.67,1.84 -1.67,1.88z m10.61,-7.92c-1.67,-0.09 0.88,-0.41 0,0z m-4.29,-6.97c1.08,-0.83 2.3,-4.85 2.33,-3.8 -0.86,1.14 -0.52,3.62 -2.33,3.8z m2.73,-6.13c0.35,-1.24 0.97,-0.17 0,0l0,0z m-3.97,-25.03c-1.05,-1.04 1.79,-1.33 0,0z m1.85,-1.48c-0.51,-1.01 -1.32,-1.32 -0.4,-1.6 -1.54,-1.3 0.12,-2.32 1.22,-0.9 1.22,-0.53 0.35,-2.59 1.9,-1.78 0.84,-0.86 3.02,-1.98 1.27,-0.28 -1.41,1.61 -1.17,5.41 -3.42,2.95 -0.74,0.32 -0.1,1.35 -0.58,1.61z m38.33,-20.76c-1.93,-1.65 4.17,-0.89 0.99,-0.51l-0.47,0.12 -0.53,0.39 0,0z","name":"United Kingdom"},"ch":{"path":"m292.05,389.98c-1.12,-2.03 -1.49,-3.96 -4.14,-4.68 0.24,-1.27 0.28,-4.19 -2.02,-2.48 -2.76,1.07 -0.98,6.19 -4.8,5.6 -1.34,-2.05 -4.35,2.18 -5.85,-0.49 -0.66,-1.9 -1.54,-2.82 -1.22,-5.23 -0.26,-1.58 -4.49,-1.34 -5.35,0.35 0,0.96 -0.92,3.04 -1.36,2.14 2.08,-0.65 -0.4,-3.99 1.78,-5.21 1.94,-0.57 2.18,-1.6 2.3,-3.5 2.42,-0.82 3.23,-3.53 5.4,-5.02 0.92,-1.36 3.51,-0.53 3.7,-1.93 2.51,-0.36 5.31,-0.33 7.48,-0.01 1.57,-0.63 0.5,-2.03 0.36,-2.23 1.31,-1.57 1.36,1.33 2.5,0.98 1.1,0.96 4.91,-0.68 5.97,2.04 0.36,1.7 -2.95,6.33 1.28,6.08 1.9,0.87 4.09,3.47 5.78,0.3 -0.28,1.18 -0.17,4.33 -0.42,4.42 -1.87,-2.39 -4.17,0.79 -2.27,2.33 0.4,3.64 -0.7,-1.85 -2.69,-0.06 -1.62,2.46 -2.25,-1.46 -3.43,-1.76 -2.43,0.76 -0.07,4.33 -2.78,4.97 -1.02,0.89 -0.72,2.33 -0.22,3.4z M275.63,370.8c0.49,-1.83 2.92,0.14 0.45,0.04l-0.53,0.11 0.08,-0.14 0,0z","name":"Switzerland"},"at":{"path":"m338.89,381.72c-2.92,-0.37 -5.68,-0.8 -8.68,-1.29 -3.41,-0.44 -7.47,0 -10.13,-2.59 -0.49,-1.79 -2.01,-0.99 -0.74,-2.9 -1.54,-1.34 -4.15,1.63 -6.36,0.74 -2.58,-0.56 -3.71,1.14 -4.67,3.02 -0.77,-1.61 -4.07,-0.58 -3.15,-2.45 -2.02,-1.72 -4.43,3.34 -5.34,-0.45 -2.71,0.05 -3.32,-2.5 -1.76,-4.48 -0.11,-1.92 0.65,-1.26 2.03,-1.24 0.77,2.34 2.91,4.54 4.57,1.3 -0.46,-2.13 1.09,-1.56 2.51,-1.62 1.01,3.44 4.52,1.32 6.34,0.3 1.07,-2.1 5.55,-0.39 5.96,-2.32 1.02,0.88 3.01,0.37 3.69,0.59 0.18,3.89 5.07,0.73 2.69,-1.53 -0.2,-1.43 -1.39,-3.39 -2.11,-5.03 1.93,-1.47 5.36,-2.58 5.54,-5.05 1.88,0.9 2.55,-1.98 3.13,-1.73 2,1.9 4.33,0.91 6.33,0.45 0.7,-1.97 2.92,-2.39 2.31,-5.03 1.96,0.92 4.91,0.17 6.97,1.75 1.9,2.39 4.37,-0.77 6.11,0.38 1.43,-0.03 2.77,1.31 1.21,2.94 -0.45,2.79 3.86,4.35 2.35,7.1 1.97,3.48 -4.51,0.08 -4.56,2.79 1.63,1.11 3.27,1.96 0.42,2.95 -0.98,1.81 1.97,4.01 -0.88,5.49 -1.01,1.14 -3.1,1.64 -2.24,3.63 -2.75,-0.79 -4.87,2.27 -7.7,0.89 -1.89,0.31 -2.39,2.61 -3.87,3.38z","name":"Austria"},"cz":{"path":"m335.18,355.05c-3.65,-0.41 -4.96,-4.57 -8.41,-5.66 -1.31,-1.75 -2.19,-2.91 -4.32,-3.66 -1.8,-1.56 -2.64,-3.53 -1.6,-5.57 -0.16,-1.57 -4.02,-3.53 -3.2,-4.17 1.42,3.2 2.44,-2.24 4.26,-2.25 1.35,1.3 3.09,-0.63 3.77,-1.12 1.58,-1.86 4.18,-2.74 6.59,-3.91 1.63,-0.69 3.11,-2.35 4.59,-0.56 2.65,1.13 2.61,-4.69 4.17,-1.06 1.38,1.66 3.64,0.69 5.11,2.36 0.67,1.75 5.33,-1.17 2.84,1.24 -1.67,2.06 2.09,2.81 2.61,4.74 2.09,1.86 2.12,-0.93 3.96,-1.42 0.43,-1.39 -1.9,-2.7 0.65,-1.55 1.23,1.3 3.29,0.96 4.4,0.53 -3.27,0.95 2.17,5.16 3.09,2.65 2.93,0.44 4.53,2.63 6.07,4.63 -2.15,1.71 -4.92,3.04 -5,6.15 -1.22,2.56 -3.35,3.75 -6.24,3.67 -1.85,1 -3.16,2.67 -5.05,0.79 -2.11,1.83 -4.69,0.96 -6.9,-0.42 -1.92,-1.1 -4.07,-0.45 -5.85,-0.93 -0.34,2.31 -2.03,3.48 -2.87,5.34 -1.07,-1.47 -1.28,0.34 -2.66,0.17z m-0.68,-28.45c-2.43,-2.03 2.32,0.24 0,0z","name":"Czech Republic"},"sk":{"path":"m364.44,362.94c-2.39,-2.37 -6.56,-2.63 -7.73,-6.02 -0.46,-2.43 0.4,-6.56 3.64,-6.16 3.23,0.29 4.91,-3 5.9,-5.48 0.17,-1.96 3.95,-5.08 5.19,-3.02 2.43,1.82 3.49,-4.97 4.66,-0.89 1.56,0.35 1.91,0.85 1.91,2.52 2.64,1.02 3.89,-1.84 5.57,-3.22 1.58,-0.07 4.26,1.88 5.1,-0.34 0.99,-1.59 4.74,-1.57 6.47,-0.13 1.28,2.35 6.24,0.73 4.22,4.32 -1.5,2.17 -0.53,7.67 -4.43,6.22 -0.53,-3.18 -3.88,-1.31 -5.83,-0.46 -2.77,-2.02 -4.98,0.68 -5.07,3.51 -1.08,0.67 -2.09,-0.14 -2.29,1.79 -1.29,1.17 -3.96,-2.16 -4.46,1.1 -0.72,2.43 -5.78,-0.07 -5.66,3.66 1.11,2.54 -4.04,1.94 -5.84,2.51 -0.44,0.04 -0.88,0.07 -1.32,0.1z","name":"Slovakia"},"hu":{"path":"m369.77,387.01c-2.75,-0.58 -5.39,-1.37 -7.78,-2.73 -2.27,-2.63 -5.77,-3.91 -7.5,-7.04 -1.21,-1.85 -2.06,-2.65 0.1,-3.74 1.43,-1.97 -1.64,-4.55 1.32,-5.48 2.04,-1.7 -3.3,-3.48 -0.09,-2.71 2.81,1.04 3.86,-1.91 3.11,-3.93 1.93,-1.05 3.43,2.43 5.44,2.58 3.24,-0.18 6.53,-0.68 9.48,-2.09 -2.94,-1.84 0.68,-3.88 2.85,-2.99 1.75,-0.27 1.26,-4.31 3.33,-2 2.26,0.8 3.01,-1.99 4.8,-2.5 0.41,-2.48 1.52,-4.92 4.25,-3.08 1.93,-0.18 4.28,-2.95 5.05,0.14 2.1,1.7 4.8,-1.81 6.38,0.84 2.12,-0.07 1.45,3.23 3.34,1.35 3.46,3.21 -4.18,3.49 -4.55,6.38 0.35,2.87 -2.65,4.72 -2.5,7.52 0.37,3.17 -2.46,5.43 -2.51,8.54 0.01,3.02 -4.16,0.17 -4.1,3.12 -3.14,1.57 -7.09,0.21 -9.73,1.82 -1.24,2.36 -3.12,1.16 -4.53,3 -2.57,0.36 -3.31,3.42 -6.16,3.01z","name":"Hungary"},"lt":{"path":"m397.76,280.99c-1.28,-1.32 -1.63,-4.58 -4.11,-3.7 -1.13,-2.07 -4.01,-0.28 -3.26,-3.14 1.62,-3.48 -2.4,-7.19 -5.64,-5.13 -2.28,0.26 -5.13,-1.48 -6.05,-2.17 -0.51,-2.23 -1.53,-3.51 -2.2,-5.4 -1.37,-2.68 1.24,-5.63 3.5,-7 1.88,-1.44 4.85,-0.65 6.6,-1.37 0.56,-1.26 2.33,2.09 2.82,-0.31 2.06,-0.86 4.97,0.1 6.62,-0.3 1.76,-0.28 3.35,-0.61 3.78,-2.83 1.19,2.4 3.3,3.12 5.7,2.26 2.79,0.52 4.16,3.86 7.04,4.08 1.64,1.42 -0.82,5.15 2.39,4.69 0.41,1.84 -3.75,0.79 -2.82,3.52 -2.05,1.6 -2.93,3.79 -1.88,6.23 -0.12,2.13 -0.68,3.69 -2.75,4.26 -0.43,1.13 -0.04,1.82 -1.97,2.11 -0.51,1.51 -1.38,2.09 -2.67,3.35 -1.72,-1.32 -3.41,0.53 -5.09,0.87z m13.27,-5.67c-0.11,-1.17 -1.77,-2.09 0.31,-1.22 0.43,0.34 0.36,1.19 -0.31,1.22z","name":"Lithuania"},"lv":{"path":"m375.49,257.31c-1.25,-2.79 -1.57,-6.54 -0.19,-9.24 2.63,-2.07 -0.8,-6.67 2.34,-8.6 1.69,0.07 4.11,-4.27 4.4,-1.32 2.44,1.48 4.79,3.19 5.76,5.78 2.55,1.96 6.17,0.07 7.13,-2.71 1.39,-2.75 -1.14,-5.3 -1.86,-7.82 1.34,-1.86 3.66,-3.57 5.64,-3.47 0.08,-0.9 1.63,1.08 2.69,0.67 1.72,0.06 3.13,2.25 4.97,3.22 2.21,0.36 3.53,-2.11 5.72,-1.12 1.76,-0.72 2.78,1.38 4.4,2.33 -0.55,1.5 -1.61,1.77 0.06,2.4 -0.17,1.1 -0.46,3.72 1.44,2.57 1.53,2.66 6.04,5.32 2.65,8.5 -1.42,1.56 -0.49,4.51 -3.48,3.69 -2.28,0.64 -3.94,4.9 -6.51,1.93 -2.03,-2.26 -5.06,-3.95 -7.91,-2.78 -1.1,-1.49 -3.6,-4.26 -4.46,-0.94 -1.47,1.77 -5.35,0.57 -7.87,1.17 -1.87,0.26 -2.16,0.89 -3.44,-0.06 -2.37,1.98 -6.1,0.17 -8.37,2.54 -1.6,0.14 -2,4.17 -3.11,3.25z","name":"Latvia"},"md":{"path":"m454.92,374.42c-0.33,-2.09 -1.86,-4.78 -2.23,-7.4 0.38,-3.56 0.07,-7.47 -2.96,-9.91 -3.2,-3.43 -7.96,-5.44 -9.93,-9.93 -0.24,-2.34 -6.31,-3.34 -2.39,-4.03 2.67,0.33 3.73,-3.48 6.57,-2.14 1.32,0.97 1.83,2.54 3.78,1.18 -0.02,0.82 2.42,2.73 2.56,0.37 1.33,-1.44 3.96,3.6 4.43,1.55 1.2,-1.55 0.65,3.03 1.22,3.93 0.07,2.32 4.57,4.13 4.42,2.59 -0.43,1.81 0.64,4.31 3.01,4.64 2.61,-0.41 1.35,4.32 2.84,4.34 -0.24,1.12 -3.35,-2.1 -2.5,0.78 -1.04,0.18 -2.3,-2.64 -2.02,-0.03 -1.22,0.21 -2.31,-1.71 -3.62,0.36 -1.34,1.85 1.39,3.73 0.77,5.48 -0.5,2.25 -2.95,4.34 -2.23,7.32 -0.82,-0.46 -1.48,0.35 -1.72,0.91z","name":"Moldova"},"ro":{"path":"m414.71,404.53c-2.94,-0.37 2.3,-2.82 -0.89,-3.86 -1.36,-0.38 -6.12,-1.72 -3.63,-3.39 3.62,-1.4 -2.29,-3.42 -3.82,-3.63 -1.25,0.73 1.78,4.33 -1.06,3.46 -0.47,-2.42 -4.24,0.23 -4.49,-2.27 -1.54,0.07 -1.87,0.1 -0.31,-0.74 0.46,-1.41 -2.15,-1.17 -0.71,-2.27 0.07,-4.02 -6.25,-1.24 -6.86,-4.86 0.56,-2.93 -2.25,-4.23 -4.45,-5.46 -1.23,-1.35 3.36,-1.23 3.59,-2.71 4.37,0.45 2.54,-4.6 4.68,-6.55 1.28,-2.95 0.7,-6.3 2.76,-8.97 0.62,-2.75 1.58,-5.21 4.69,-5.79 2.24,-1.25 2.4,-5.8 5.34,-3.67 2.44,-0.6 4.8,0.38 7.17,-0.21 2.51,-1.94 3.7,1.15 5.91,1.18 2.03,-1.31 2.68,-4.39 5.67,-3.96 2.31,-0.28 4.86,-1.95 4.49,-4.32 1.75,-2.97 4.98,-1.01 6.29,1.29 1.93,4.74 7.06,6.72 10.28,10.39 2.93,2.37 2.34,6.09 2.36,9.35 0.53,2.52 1.69,4.86 1.92,7.13 1.82,1.67 4.12,3.74 6.83,2.36 1.37,-1.24 4.51,-5.35 6.51,-2.84 1.18,1.97 2.1,5.63 -1.2,6.33 -1.85,1.04 -1.42,-3.67 -3.88,-1.61 -1.51,1.92 1.84,2.51 -0.11,4.51 -0.61,2.57 2.04,-0.86 0.82,1.98 -2.28,2.63 -0.38,5.59 -0.04,8.5 -1.15,2.51 -5.2,-0 -6.02,-1.11 -1.09,1.46 -1.67,-0.92 -3.54,0.54 -1.82,0.49 -3.31,-1.46 -5.44,0.01 -3.08,1.35 -6.52,2.81 -8.17,5.95 -1.31,3.55 -4.97,3.29 -8.01,2.77 -2.75,-0.48 -4.92,1.71 -7.44,1.75 -2.74,-0.25 -5.83,-1.37 -8.31,0.42l-0.52,0.24 -0.43,0.06 0,0z","name":"Romania"},"bg":{"path":"m419.98,434.43c-0.77,-1.6 0.33,-5.03 -1.67,-6.74 -1.14,-2.34 -7.05,-2.04 -4.41,-5.19 -0.49,-1.45 -2.46,-4.37 -1,-5.23 2.16,0.54 4.75,-3.78 2.92,-5.59 -2.57,-1.55 -5.66,-2.78 -5.98,-6.24 -0.97,-2.47 2.74,-1.99 1.69,-4.32 2.08,-0.06 3.2,1.11 1.22,2.59 -0.15,3.28 3.83,0.6 5.65,0.71 2.58,-0.64 5.13,0.94 7.65,0.08 2.61,-1.18 5.46,-2.28 8.27,-1.01 3.32,0.37 5.6,-2.51 6.93,-5.13 2.16,-2.35 5.29,-3.61 8.27,-4.56 1.69,0.75 3.92,0.92 5.2,0.32 0.77,1.61 2.46,-1.39 3.17,1.07 1.58,2.18 6.09,-1.71 5.26,2.45 0.21,2.63 -4.48,0.38 -4.02,3.94 -1.88,1.85 1.39,5.32 -0.17,7.14 -1.24,1.25 -1.7,3.03 -2.93,4.26 0.82,1.66 4.27,-0.37 3.64,2.02 1.44,0.86 3.71,1.89 1.23,2.18 -1.9,3.08 -4.18,-1.08 -6.49,0.5 -1.52,1.95 -4.37,1.58 -4.82,4.55 -1.37,1.04 -4.43,1.49 -2.91,4.13 3.08,3.26 -3.78,2.7 -5.13,4.68 -1.95,0.62 -4.22,-2.41 -5.93,-0.29 -2.04,-2.63 -5.18,-1.43 -7.46,0.15 -2.06,2.52 -5.54,1.17 -7.76,3.47l-0.43,0.06 0,0z","name":"Bulgaria"},"al":{"path":"m396.5,458.88c-2.16,0.08 -0.81,-2.55 -2.74,-3.41 -0.91,-2.13 -5.81,-2.06 -5.48,-3.81 2.36,-1.04 -1.62,-3.19 -0.48,-4.99 0.36,-1.26 2.66,-2.2 0.57,-3.3 1.39,-2.49 -3.57,-5.96 0.77,-6.52 2.37,-0.03 -1.92,-0.89 -0.55,-2.51 -0.14,-2.15 -3.24,-0.23 -2.21,-2.9 -1.48,-2.28 0.07,-4.41 1.36,-6.71 1.01,3.42 4.23,-2.13 4.66,1.78 1.21,1.69 4.6,1.07 3.88,4.25 -0.33,2.87 -0.02,5.6 0.51,8.19 0.21,1.77 2.38,5.51 4.15,4.74 1.69,-0.32 2.5,4.45 0.05,5.02 -0.86,1.75 -0.27,5.37 -3.24,5.56 -2.01,1.26 1.3,2.75 -0.81,3.98l-0.23,0.5 -0.19,0.12 0,0z","name":"Albania"},"ee":{"path":"m378.18,234.33c-0.29,-1.42 0.77,-0.85 0,0z m29.34,-1.46c-2.55,-0.18 -3.15,-3.15 -5.39,-3.23 -0.21,-1.76 -1.21,1.44 -2.27,-0.65 -2.12,-1.63 -4.52,1.21 -6.27,2.48 -1.26,-0.67 1.67,-5.98 -1.81,-5.74 -1.1,1.92 -1.82,2.36 -3.83,1.3 -0.08,-2.54 -3.43,-2.95 -2.01,-5.67 0.96,-2.03 -3.8,-2.6 -0.62,-3.95 1.35,-0.61 4.23,-0.97 2.3,-2.67 2.82,-0.9 4.5,-2.4 7.47,-2.41 1.66,-0.56 1.5,-2.75 3.42,-1.67 0.91,-1.72 4.64,0.07 6.63,-0.66 2.13,-0.1 4.26,0.22 6.03,-1.29 -1.43,2.67 -1.02,5.84 -2.24,8.62 2.11,2.2 1.2,5.64 3.15,7.83 0.24,0.52 1.89,2.24 1.35,2.38 -0.73,0.83 -0.81,2.27 -1.35,2.68 1.66,2.85 -2.28,0.25 -2.89,1.26 -0.29,0.68 -0.83,1.4 -1.65,1.38z m-28.89,-1.28c-1.29,-0.43 -2.59,-1.4 -0.92,-2.29 -0.22,-0.67 0.59,-1.5 0.99,-0.78 -0.53,-2.4 4.69,-3.37 4.19,-1.27 0.07,2.48 -3,2.5 -4.26,4.33z m1.02,-7.14c-0.54,-0.34 -0.96,-2.14 -1.01,-2.27 0.8,-1.29 0.79,-1.32 2,-0.55 1.89,-0.4 1.35,1.06 -0.17,0.69 0.83,0.84 0.55,2.1 -0.81,2.14z","name":"Estonia"},"lb":{"path":"m557.2,501.39c0.58,-2.8 0.32,-5.88 1.17,-8.53 -0.92,-2.02 1.77,-3.87 0.09,-5.88 -0.28,-2.6 2.65,-3.83 2.23,-6.01 1.03,-0.93 3.35,-2.1 2.42,0.09 1.64,0.57 3.96,0.89 3.49,3.25 -1.11,1.34 -2.61,3.51 -1.84,4.51 -2.48,0.69 -2.89,3.8 -1.53,5.08 -0.04,2.15 -2.43,3.34 -3.12,4.26 0.57,1.87 -1.28,3.1 -2.91,3.25z","name":"Lebanon"},"ad":{"path":"m225.99,427.08c-4.4,2.06 -0.81,-5.33 0.49,-0.98l-0.2,0.53 -0.29,0.45z","name":"Andorra"},"sm":{"path":"m321.66,413.68c0.71,-2.83 1.59,1.21 0,0z","name":"San Marino"},"mc":{"path":"m273.92,416.64c-2.8,-1.65 2.23,-1.64 0.39,-0.13l-0.39,0.13 0,0z","name":"Monaco"},"lu":{"path":"m268.7,344.38c-1.34,-0.37 0.48,-2.79 -0.9,-3.99 -1.47,-1.94 2.76,-5.38 1.98,-1.49 0.37,1.78 4.79,2.33 1.84,4.09 -0.47,1.66 -1.49,1.22 -2.93,1.39z","name":"Luxembourg"},"fr":{"path":"m292.72,444.55c-0.12,-2 -3.86,-0.94 -2.75,-2.99 -2.34,-0.62 -0.11,-2.51 0.75,-3.57 0.35,-0.55 -3.76,1.07 -1.24,-0.63 0.32,-1.34 -2.6,-2.05 -0.51,-3.01 -0.25,-1.14 -1.13,-1.51 -0.02,-1.71 -0.89,-2.66 3.14,-1.71 3.48,-3.51 1.94,0.96 2.98,-0.2 2.33,-2.11 1.79,-2.18 -0.99,3.51 1.02,4.43 1.2,3.29 -2.09,6.35 -1.33,9.73 -0.95,0.89 -1.15,2.64 -1.75,3.36z m-58.87,-15.16c-2.27,-2.01 -5.59,-0.28 -7.2,-2.87 1.48,-2.11 -2.14,-2.13 -2.92,-2.19 -1.78,-1.34 -3.82,-2.36 -5.67,-3.53 -1.54,0.58 -1.53,2.27 -3.51,1.46 -1.54,0.07 -2.66,-0.59 -3.93,-0.35 -0.8,-2.33 -2.93,-1.69 -4.53,-2.09 -1.06,-2 -2.81,-3.32 -5.06,-3.18 -1.57,-1.15 -1.33,-1.7 -1.45,-3.5 -1.23,-0.24 -3.44,-0.96 -1.02,-1.55 3.04,-3.75 2.96,-8.84 4.5,-13.21 0.85,-1.4 2.99,0.68 2.08,-1.85 -1.2,-1.06 -2.14,-0.84 -1.15,-2.81 1.1,-1.59 0.63,-5.99 2.35,-6.1 1.89,1.55 0.82,3.87 1.88,5.79 -0.05,2.01 2.7,3.12 1.93,0.38 -2.25,-2.11 -0.08,-5.11 -2.23,-7.23 -1.52,-1.07 -0.74,-1.21 -0.52,-2.39 -2.12,-1.87 0.87,-2.79 -0.3,-5.08 -0.91,-0.78 2.06,-4.15 0.31,-2.92 -1.7,1.58 -2.8,-0.99 -4.34,-1.54 -1.66,-0.48 -1.34,-4.04 -3.07,-5.27 1.45,-1.37 2.03,-3.5 -0.17,-4.21 -1.28,-1.38 -1.85,-1.7 -0.64,-3.42 1.28,-3.05 -5.85,-0.88 -2.14,-2.3 -0.4,-2.26 -4.49,0.28 -3.4,-2.31 -0.36,-2.67 -3.56,0.62 -4,-1.74 -2.28,-0.09 -2.42,-4.2 -4.81,-1.84 -1.78,1.57 -0.33,-2.39 -2.37,-2.56 1.59,0.62 3.87,-0.51 1.92,-2.13 1.84,1.1 2.88,-0.7 0.65,-1.01 0.13,0.05 1.59,-2.28 -0.46,-1.5 -1.34,1.45 -4.19,-0.07 -1.73,-1.25 1.3,-0.76 2.79,-0.81 2.95,-0 1.4,-0.85 2.87,-0.97 3.66,0.09 0.65,-1.02 3.21,1.35 3.19,-1.26 2.43,-1.62 2.22,2.03 2.47,2.06 1.69,-2.75 1.86,2.19 3.17,3.11 1.26,-0.74 3.83,-3.16 3.73,-0.14 1.62,2.63 2.82,-1.65 4.78,0.11 0.83,-0.47 4.32,1.06 3.36,-0.07 -1.65,-1.65 -2.42,-4.02 -1.35,-6.19 0.76,-2.4 -2.42,-4.6 -1.19,-7.04 1.21,1.81 5.2,-0.98 3.31,2.03 -0.19,2.43 1.93,3.76 3.68,2.84 2.59,0.56 5.12,3.56 7.68,1.11 2.16,-0.17 1.32,-1.39 0.53,-2.64 1.54,-3 5.41,-2.03 8.05,-3.16 1.81,-0.67 4.58,-1.88 5.31,-3.4 -1.75,-1.03 0.04,-4.18 -0.3,-6.15 0.44,-3.1 4.2,-2.36 6.44,-2.8 0.98,0.77 1.49,6.24 4.58,4.17 1.46,-0.35 0.7,4.82 3.67,3.62 -0.14,3.07 3.12,1.53 4.18,2.82 -0.64,1.44 -0.56,1.83 -0.25,2.78 -0.88,2.67 3.93,2.4 4.83,0.49 0.88,1.69 -1.1,3.55 1.66,3.61 2.55,0.29 2.49,4.49 5.21,3.37 2.65,1.52 6.43,-0.33 7.5,3.53 0.45,0.9 2.96,3.41 2.01,0.96 0.54,-1.16 0.79,1.42 0.5,1.49 1.47,-0.3 3.92,-1.81 4.53,0.32 1.92,0.28 7.08,0.84 3.22,2.94 -2.39,2.02 -1.66,5.55 -3.51,7.88 -0.4,2.45 -0.29,5.21 -1.25,7.67 -1.85,0.33 -4.65,-1.22 -4.94,2.33 0.2,1.24 -1.59,3.49 -3.64,4.12 -0.97,0.48 0.4,3.01 -1.75,3.44 -3.21,1.4 -0.53,4.69 -2.87,6.5 1.14,2.08 4.46,-0.29 3.63,-2.44 2.64,-1.79 4.27,0.65 3.32,3.02 0.97,1.33 2.7,2.42 0.16,3.24 -1.7,2.56 4.01,4.8 1.9,7.11 -0.78,1.84 -6.17,0.54 -3.47,3.57 1.68,1.38 4.39,3.16 1.43,4.85 -1.24,3.13 2.12,7 5.6,6.15 2.64,-0.69 -0.62,4.28 -2,4.64 -1.17,-0.72 -4.03,-3.03 -4.38,0.05 0.55,1.28 1.71,2.84 -0.72,3.26 -2.25,0.54 -0.87,3.61 -3.15,2.9 -1.62,1.27 -2.66,0.82 -4.12,0.04 -1.35,1.82 -1.33,-1.1 -3.38,-0.87 -2.84,0.75 -0.64,-3.44 -1.53,-2.84 -0.63,0.89 -3.09,1.3 -1.09,0.56 1.49,-2.74 -3.49,-2.8 -2.54,-0.31 -2.24,0.5 -1.46,-2.79 -1.57,-3.36 -1.08,1.05 -1.96,2.65 -0.52,3.91 -1.04,-0.28 -1.31,-2.83 -3.36,-2.08 -2.5,-1.7 -5.52,-1.71 -6.96,1.2 -2.68,0.79 -5.03,2.02 -5.69,4.77 0.13,1.89 -0.47,3.75 0.65,5.49 -1.42,-0.84 -3.32,-0.38 -4.33,0.88z","name":"France"},"li":{"path":"m296.51,373.48c1.45,1.4 -0.83,3.11 -0.11,0.58 0.04,-0.19 0.08,-0.38 0.11,-0.58z","name":"Liechtenstein"},"nl":{"path":"m269.04,328.72c-2.4,0.87 -0.84,-4.47 0.3,-2.01 0.8,0.23 0,1.75 -0.3,2.01z m-0.07,-3.78c0.6,-3.32 -5.02,-1.6 -5.27,-4.51 -0.12,-2.74 -3.14,1.24 -2.06,-1.29 -0.99,-0.79 -2.22,1.2 -3.22,-0.45 -0.9,0.27 -1.14,2.68 -1.08,0.81 0.68,-2.17 -1.32,-2.87 -3.53,-3.17 2.34,0.11 2.58,-2.07 3,-3.35 2.89,-2.17 4.59,-5.57 4.61,-9.18 -0.19,-3.29 4.06,-0.89 5.3,-3.43 1.14,-2.76 4.56,-2.87 7.04,-3.65 2.21,-0.91 4.28,0.51 5.07,2.25 2.56,1.19 -1.21,4.26 -0.45,6.54 -1.09,0.31 -2.87,-0.17 -2.83,1.81 -1.46,0.58 -1.58,0.91 0.09,0.93 3.35,-0.05 2.57,4.59 -0.38,4.58 -2.35,0.19 2.62,1.25 -0.12,2.19 -2.05,1.07 -3.43,-1.35 -5.33,0.59 -1.38,2.19 2.97,4.39 0.94,6.8 -0.8,0.77 -1.72,1.2 -0.27,1.66 -0.44,0.36 -0.82,1.02 -1.51,0.87z m-14.99,-3c-0.33,-1.2 -5.07,-0.99 -2.8,-1.87 1.14,1.13 2.85,1.22 3.93,0.81 -0.06,0.56 -0.57,1.04 -1.13,1.06z m0.03,-2.7c-1.37,-0.05 -4.02,-1.94 -1,-1.43 0.49,-0.33 2.23,1.73 1,1.43z","name":"Netherlands"},"ba":{"path":"m376.75,425.9c-1.98,-1.6 -4.83,-1.93 -6.41,-4.05 -1.67,0.65 -0.52,0.38 -0.54,-0.48 -1.09,-2.31 -4.84,-2.74 -4.68,-5.7 -3.06,-0.33 -4.09,-3.71 -6.36,-5.29 -1.63,-1.9 -4.06,-2.19 -3.82,-4.87 -1.04,-2.44 -3.06,-3.46 -4.21,-5.63 -0.7,-2.04 0.84,-4.87 2.73,-2.36 1.15,1.84 2.68,1.49 3.04,-0.59 0.75,-2.51 2.6,0.54 3.87,-1.57 1.61,1.11 3.76,0.32 5.58,0.98 1.67,0.69 2.8,0.63 3.98,-0.64 1.28,0.32 2.43,1.79 1.94,-0.33 2.34,0.41 3.8,0.76 5.26,2.77 1.51,0.59 4.58,-2.46 3.33,0.9 -1.48,2.62 -1.55,6.27 2.2,6.4 -0.16,1.48 3,1.5 0.7,2.04 -2.41,-1.63 -1.77,2 -0.04,2.77 1.22,1.2 1.32,2.1 -0.54,1.97 -0.8,1.43 -2.82,1.15 -3.55,0.9 0.15,1.26 1.77,2.85 -0.32,2.67 -1.22,1.98 -1.74,4.24 -3.03,5.92 0.2,1.48 1.25,2.79 0.88,4.2z","name":"Bosnia and Herzegovina"},"si":{"path":"m332.96,393.93c-2.25,0.07 3.69,-1.78 0.33,-3.25 -2.05,-0.05 -1.39,-3.19 -2.18,-3.5 2.21,-1.77 -0.2,-2.6 -1.36,-3.11 1.58,-3.35 4.85,-1.64 7.7,-1.58 3.3,1.9 3.73,-4.65 7.02,-2.86 2.43,0.1 4.45,-1.78 6.8,-1.33 -0.07,-1.25 0.26,-3.28 1.79,-1.82 0.58,1.34 2.29,2.96 -0.11,2.97 0.07,3.17 -6.44,2.43 -4.97,6.04 0.89,1.87 0.62,3.86 -1.85,3.13 -2.37,0.85 1.33,6.35 -2.15,4.17 -1.76,0.02 -2.78,0.57 -3.81,-1.48 -1.83,-1 -1.59,2.92 -3.88,1.76 -1.41,-0.46 -2.2,0.65 -3.34,0.85z","name":"Slovenia"},"mk":{"path":"m403.18,443.19c-1.28,-0.84 -1.77,-0.72 -3.14,-0.4 -2.27,-2.33 -2.73,-5.58 -2.85,-8.64 -1.26,-2.44 2.39,-0.6 1.33,-3.13 0.23,-2.42 3.43,-3.85 5.06,-1.8 1.38,1.18 -1.35,-3.28 1.33,-2.73 2.83,0.6 4.67,-2.89 7.49,-1.79 1.51,2.18 4.77,1.95 5.79,4.72 1.29,2.63 0.37,4.95 -1.12,7.01 -1.05,2.69 -5.33,0.11 -7.05,2.7 -0.97,2.88 -4.09,3.39 -6.84,4.04z","name":"Macedonia"},"hr":{"path":"m375.93,426.49c-1.17,-0.64 -1.03,-0.77 0,0z m-5.08,-2.9c-0.73,0.27 -1.25,-2.08 0,0z m-2.28,-1.81c-3.23,-1.04 -5.06,-4.7 -8.53,-5.08 -1.74,-1.23 -4.13,-1.36 -6.19,-0.38 -0.54,-3.7 -5.51,-3.9 -7.37,-6.92 -1.68,-2.86 2.16,-0.38 2.91,-1.43 -1.18,-2.05 -5.06,-2.05 -5.62,-5.05 0.07,-2.45 -0.12,-5.23 -2.77,-6.41 -1.46,-3.02 -5.35,-1.33 -4.75,1.8 -0.1,1.22 -1.81,1.15 -1.78,3.18 -0.42,-0.02 -2.43,-3.25 -2.8,-4.77 0.5,-1.41 -1.33,-2.59 0.97,-1.85 1.93,-0.05 3.32,-1.26 5.49,-0.87 1.75,-0.28 1.19,-2.99 2.55,-0.54 1.83,1.65 2.98,0.1 5.14,0.7 1.63,-0.59 0.6,-2.35 1.05,-3.41 -2.13,-1.84 3.84,-0.57 2.93,-3.42 -1.1,-1.62 -1.88,-3.53 0.82,-4.04 1.16,-1.26 3.54,-0.9 3.14,-3.3 3.59,0.79 6.21,3.61 8.62,6.19 2.91,-0.18 5.33,2.55 8.31,1.69 2.32,0.95 5.06,-5.2 5.33,-0.4 0.15,1.9 1.2,2.64 1.4,4.46 1.55,0.76 2.24,0.37 1.04,2.01 -0.17,1.69 1.08,1.86 -0.44,2.99 -1.42,0.96 -2.53,-3.66 -4.34,-2.06 -2.98,-1.4 -5.14,1.63 -8.13,0.38 -2.22,0.17 -4.52,-1.28 -6.44,-0.34 -1.8,-0.84 -3.54,0.72 -3.99,2.64 -1.51,-1.59 -4.97,-3.78 -5.35,0.02 -1.16,3.92 2.99,5.58 4.38,8.58 -0.13,1.41 -1.05,2.05 0.83,2.59 2.9,1.5 4.8,4.21 6.98,6.53 2.65,1.59 3.98,4.49 6.78,6.28l-0.16,0.23 0,0z","name":"Croatia"},"dk":{"path":"m311.37,281.37c-1.81,-0.13 -3.63,-2.95 -0.99,-2.75 0.71,0.89 2.21,0.72 1.2,1.27 0.93,0.68 0.95,1.07 -0.21,1.48z m2.12,-1.04c1.35,-0.18 -0.34,1.13 0,0z m0.84,-0.24c-0.07,-1 -2.35,-2.59 0.16,-1.62 2.08,0.28 -0.51,1.71 -0.16,1.62z m-17.99,-0.84c-2.31,-0.88 -6.15,-0.22 -4.5,-3.71 0.81,-2.84 -1.69,-4.3 -3.84,-4.7 -1.19,-2.12 0.77,-2.92 1.79,-2.7 1.1,-1.9 -0.71,-4.04 -1.69,-4.68 0.35,-1.37 0.2,-5.41 0.68,-4.97 1.59,3.78 6.34,-5.25 4.96,-0.56 0.24,2.86 4.45,-0.07 2.01,-1.61 0.04,-2.03 -0.06,-3.57 2.27,-2.05 0.18,-1.79 3.93,-0.45 2.6,-2.4 -2.36,-1.07 -4.97,1.4 -7.44,0.51 -0.9,0.41 -2.06,0.6 -1.03,-0.46 2.89,0.74 6.43,-0.56 7.07,-3.76 0.42,-1.7 4.2,-3.59 3.75,-0.9 2.01,1.66 -0.21,4.73 -1.55,6.01 0.4,0.87 0.32,2.52 0.39,3.1 -1.16,1.34 2.36,4.31 4.12,3.09 1.32,1.67 -1.85,5.56 -2.69,2.65 -3.21,0.21 -0.77,4.74 -2.69,6.35 -0.74,1.02 -5.24,-0.82 -2.77,1.37 1.61,1.85 3.89,1.32 5.37,0.39 1.04,1.32 2.66,0.54 1.88,1.61 2.2,1.44 0.71,6.32 -1.89,3.8 -0.99,-0.9 -2.97,-2.42 -3.55,-4.38 -0.8,-2.14 -4.39,1.02 -3.28,1.06 2.19,-0.86 -0.04,1.87 1.38,2.68 -1.87,1.01 -1.25,3.06 -0.58,3.35 -0.3,0.27 -0.55,0.59 -0.78,0.92z m18.96,-2.29c-1.92,-0.02 -1.04,-3.7 -3.92,-2.81 -3.51,-0.09 0.22,-3.64 -2.76,-5.02 -1.79,-1.21 3.2,0.15 3.13,-2.28 0.04,-2.46 4.91,0.23 1.92,1.9 1.06,2.45 3.33,-0.76 2,-2.36 -0.51,-1.34 -2.25,-2.02 0.21,-1.96 2.33,-0.37 1.21,1.23 1.29,2.13 2.22,2.03 -1.98,3.78 -1.88,4.86 2.05,0.87 2.04,2.76 -0.28,2.66 -0.97,0.83 0.11,2.08 0.29,2.88z m-25.23,-19.54c-1.89,-1.51 1.09,-5.6 1.21,-4.99 -1.52,1.21 -1.11,3.3 -1.21,4.99z","name":"Denmark"},"ru":{"path":"m558.98,364.3c-2.56,-0.91 -4.97,-2.14 -7.36,-3.43 -2.39,-1.15 -4.94,-2.06 -7.59,-2.35 -2.81,2.28 -5.5,-0.94 -8.06,-1.85 -1.23,0.3 0.78,2.15 -1.52,1.8 -2.42,-0.25 -3.69,-3.69 -6.4,-2.82 -1.31,0.16 -4.41,0.18 -1.55,-0.66 1.64,-0.7 0.81,-3.34 -0.75,-1.74 0.37,-1.63 2.93,0.94 3.87,-1 1.25,-0.31 2.74,-1.24 3.63,-1.06 1.16,-2.32 -3.44,-3.39 -1.08,-5.92 0.57,-0.81 -0.94,-4.08 0.12,-2.72 0.39,2.37 2.24,1.11 1.25,-0.78 -1.26,-3.41 3.86,0.53 3.04,-2.81 -1.97,-1.81 -4.99,-1.7 -7.55,-2.54 -2.06,-0.94 2.06,-1.24 1.86,-3.16 2.06,1.7 4.87,-1.76 1.32,-1.4 -0.21,-1.02 3.11,-2.69 3.56,-4.64 3.16,0.27 3.03,-5.1 -0.28,-4.48 -2.62,0.21 -2.08,3.91 -4.95,4.14 -2.31,1.85 -0.59,-0.97 -1.26,-1.15 -2.27,0.02 -1.28,-3.82 0.48,-4.34 1.4,-2.13 0.73,-5.08 4.3,-4.68 2.91,0.1 4.24,-2.66 2.99,-5.05 -0.44,-0.81 1.31,-4.54 -0.5,-3.12 -0.89,0.38 -1.08,-3.79 -3.06,-2.28 -2.61,-1.85 3.34,-2.5 1.03,-4.59 -1.03,0.14 -4.3,0.91 -2.02,-0.74 1.96,-2.14 1.02,-4.53 -0.68,-6.4 1.16,-2.59 -2.93,-0.35 -3.64,0.61 0.41,-2.95 -3.61,-0.32 -4.74,-2.01 -1.3,0.69 -2.17,2.73 -3.44,0.57 -1.62,0.46 -2.9,0.42 -4.52,-0.03 -1.18,0.97 0.35,3.57 -1.91,1.94 -2.66,-0.03 -3.84,-4.48 -6.19,-3.24 -2.12,0.99 -3.16,6.03 -6.01,3.79 -0.55,1.88 -3.23,-1.75 -4.12,0.93 -2.26,2.15 -4.17,-0.6 -4.14,-2.64 -1.31,-0.74 -1.67,-2.47 -1.76,-3.17 -1.84,0.68 -2.55,-1.54 -3.04,-1.81 -1.53,1.29 -5.9,2.64 -6.27,0.53 -0.46,-1.43 -3.35,-2.71 -0.58,-3.43 0.87,-2.91 -3.85,-2.55 -4.29,-5.27 -1.34,-1.28 -2.82,-2.7 -4.07,-0.62 -2.6,-1.29 -3.34,1.16 -4.86,2.57 -2.29,-0.64 -4.88,0.47 -3.99,3.28 -1.64,3.09 -5.33,-1.16 -5.28,-3.38 0.29,-1.54 -1.99,-0.85 -0.93,-2.73 -1.04,-1.23 -5.06,-2.53 -2.44,-4.58 2.85,1.31 6.86,-0.11 6.98,-3.34 2.36,-1.51 -0.16,-3.89 -1.6,-4.2 -0.58,-2.91 -4.71,-0.88 -5.61,-1.07 0.65,-2.69 -1.62,-3.41 -3.71,-3.4 -2.11,-1.16 -3.32,-2.8 -3.81,-4.83 -2.42,0.17 -3.41,-1.67 -2.18,-3.83 -0.02,-1.71 -2.9,-2.44 -1.99,-4.84 -0.01,-1.79 -0.45,-2.87 -2.15,-2.08 -2.12,-2.07 -5.85,-2.66 -7.51,0.31 -0.95,2.92 -2.17,-0.33 -1.92,-1.55 -1.94,-2.34 -4.43,2.65 -5.64,-0.22 -1.71,0.04 -3.09,1.26 -3.28,-1.31 -0.9,-2.65 -2.85,-5.01 -4.71,-6.53 -1.83,-1.02 1.04,-5.27 -2.45,-5.76 -1.67,-0.51 -0.04,-2.71 -2.19,-1.57 0.05,-1.42 0.26,-2.99 1.68,-3.72 -0.54,-0.99 -1.34,-2.16 -1.45,-2.96 -2.84,-0.69 -1.01,-4.26 -2.77,-5.86 -2.08,-2.24 0.85,-4.53 0.39,-6.92 -1.01,-2.41 3.22,-2.6 0.55,-4.16 -0.83,-1.3 -2.35,-4.31 0.18,-2.28 1.51,-0.56 0.02,-3.79 2.55,-2.16 2.03,-0.4 0.55,-4.34 3.6,-3.39 1.61,0.41 6.06,0.64 4.72,-1.87 -2.47,0.38 -3.46,-3.31 -5.66,-1.7 -1.73,1.59 -3.35,0.22 -4.28,-0.75 -2.83,1.04 -0.5,-5.97 -3.43,-3.33 -0.79,1.95 -3.72,3.09 -1.67,0.48 4.94,-7.07 7.08,-15.55 9.98,-23.55 0.44,-3.03 2.51,-7.51 -0.31,-9.8 -2.38,-1.89 -5.29,-2.93 -7.96,-4.32 -3.88,-1.06 2.38,-6.07 -1.12,-8.02 -2.45,-0.36 -4.96,-1.94 -3.33,-4.47 -1.48,-1.21 -6.02,-2.28 -3.05,-4.86 0.42,-0.7 -3.23,-0.64 -2.08,-2.79 0.39,-2.06 -0.85,-2.94 1.09,-3.89 -0.82,-2.4 -2.73,-4.51 -4.14,-6.68 -1.51,-2.32 -3.78,-4.06 -5.41,-6.21 -0.98,-3.34 2.21,-6.3 1.62,-9.59 -0.91,-2.31 -3.95,-2.73 -4.86,-5.04 -3.1,0.98 -6.11,-2.82 -4.58,-5.63 1.26,-2.13 -3.52,-2.39 -0.66,-3.49 1.51,-2.49 0.64,-5.59 3.12,-7.72 -0.6,-2.56 3.46,0.62 3.16,-2.41 -2.11,-2.17 1.85,-1.54 2.99,-1.35 2.03,1.63 4.11,1.29 6.52,0.08 0.37,0.23 -0.76,2.57 1.13,2.81 -1.22,0.77 -1.32,4.65 0.4,2.88 0.2,-1.73 1.36,-3.42 1.9,-5.04 3.21,0.08 6.07,-1.95 9.29,-1.34 2.75,0.76 5.58,1.26 8.28,2.2 2.14,0.82 4.03,2.32 6.18,3.01 2,-1.35 5.54,1.61 7.21,-0.07 2.23,0.7 3.31,3.46 5.54,1.69 1.16,1.01 0.65,2.43 2.18,2.82 1.01,2.1 3.8,2.21 3.29,5.21 -0.09,3.44 0.15,7.2 -2.11,10.07 -2.26,3.09 -6,5.79 -10.02,4.97 -2.84,-0.74 -5.34,0.99 -8.08,1.16 -2.01,0.97 -5.49,-2.15 -6.54,-0.13 -1.33,0.97 -2.24,-0.89 -2.89,-1.46 -1,2.57 -7.21,1.52 -6.06,-1.62 -0.53,-0.64 -4.07,0.19 -5.44,0.48 -1.33,1.22 -0,2.41 1.25,1.32 2.16,-0.38 0.62,2.19 3.06,2.74 1.23,1.53 6.57,0.25 5.42,2.51 -1.91,3.1 2.22,0.91 3.81,1.72 2.09,0.58 5.78,2.19 4.56,4.13 2.75,1.59 0.23,3.96 -0.48,5.25 2.3,-0.18 4.43,1.99 4.35,4.27 2,-0.84 0.78,1.8 1.68,2.47 0.1,3.23 4.49,3.53 6.69,2.22 2.28,0.22 3.06,3.83 6.02,2.68 3.14,0.7 6.51,-0.4 7.17,-3.81 0.24,-2.71 -4.02,-6.69 -5.49,-3.3 -2.65,0.34 -5.44,-2.93 -6.7,-4.13 2.45,-0.62 0.68,-2.65 0.87,-3.74 2.98,-0.53 5.18,2.7 8.25,1.24 2.42,-0.59 5.57,1.81 7.6,-0.26 0.47,-1.42 5.9,0.3 3.69,-2.76 -1.12,-2.61 -3.65,-4.39 -6.37,-5.3 -3.26,-1.55 -1.48,-4.68 -0.67,-7 0.13,-2.98 3,-4.72 3.48,-7.44 -0.29,-1.95 -0.01,-6.22 2.42,-3.58 1.94,-2.25 5.82,-1.29 7.83,0.68 1.2,2.1 3.32,0.53 1.22,-1.06 -2.48,-1.87 -1.81,-4.87 -2.24,-7.47 -1.88,-1.57 -2.53,-5.38 -5.87,-5.07 -3.66,0.72 -1.05,-5.18 -3.4,-6.67 -1.19,-0.92 0.46,-3.75 -1.48,-3.55 -1.01,-2.39 -5.64,-2.94 -6.17,-3.55 2.64,0.97 4.98,-0.76 6.95,-2.52 2.55,-2.21 4.69,1.32 7.17,1.82 2.66,0.14 2.98,2.58 0.58,3.55 -1.44,1.01 -3.37,2.5 -1.86,4.15 -2.05,2.82 1.45,5.04 4.18,4.46 2.24,0.66 3.9,4.74 5.89,0.83 -0.45,2.74 1.7,0.82 1.6,-0.76 0.67,-1.92 4.97,-2.44 2.12,-4.7 -0.88,-2.08 -0.93,-5.08 -2.83,-6.29 1.51,-0.41 1.74,-3.36 4.33,-3.14 0.74,-1.52 -4.26,-0.47 -1.65,-2.01 1.38,-2.03 1.95,-4.13 2.25,-6.48 -0.71,-3 2.32,-4.04 2.61,-6.78 0.79,-1.07 0.87,-3.3 2.02,-0.85 0.37,3.39 3.79,-1.54 1.28,-2.71 -2.87,-0.55 -1.44,-3.38 -0.47,-5.41 0.59,0.58 1.75,-1.54 1.49,0.66 0.07,2.26 4.9,2.03 2.07,4.51 -3.06,1.89 2.52,2.73 3.16,0.29 0.8,-0.58 2.28,-0.85 1.45,-2.12 2.18,1.11 3.08,-1.11 1.14,-2.24 -0.63,-3.15 1.27,-6.2 4.04,-7.12 3.15,-0.33 1.76,-4.5 2.46,-6.7 2.68,1.91 1.44,-1.23 0.17,-1.57 -0.24,-1.73 3.07,-1.64 3.49,-0.99 -0.52,3.68 4.93,5.45 5.98,1.6 -0.74,-2.19 -4.02,-2.52 -1.51,-4.94 1.37,-2.71 -0.97,-5.14 -3.64,-5.47 -2.06,-0.69 -6.98,-0.83 -4,-3.86 -2.84,-2.24 1.77,-2.66 3.14,-4.1 2.67,-3.27 6.84,-5.01 10.97,-5.41 2.08,0.66 3.04,-0.42 5.04,-0.78 3.26,-0.69 5.53,-2.7 8.88,-1.89 1.83,0.09 3.72,-0.92 5.18,-0.23 3.3,-0.51 -0.59,-3.78 0.31,-4.05 7.13,0.01 14.26,-0.01 21.38,0.01 2.09,0.14 -2,3.01 0.93,2.93 1.33,0.5 2.97,0.39 1.78,1.28 0.04,1.2 -0.09,5.95 -1.36,3.75 0.88,-1.97 -1.47,-3.03 -1.4,-0.65 -0.13,1.49 -3.77,0.21 -3.69,2.55 -3.37,1.5 0.23,4.73 2.72,4.05 3.82,-0.71 6.21,-3.84 8.09,-6.94 1.84,-0.32 4.98,-2.24 2.66,-4.31C557.34,3.94 555.66,1.55 558.62,2.18c40.17,0 80.35,0 120.52,0 0,32.42 0,64.83 0,97.25 -2.09,0.36 -2.95,2.3 -1.54,3.74 -2.44,-1.53 -2.16,1.82 -2.17,2.03 -1.83,-0.06 -0.41,-2.79 -2.86,-3.06 -0.55,-1.54 -1.56,-2.65 -3.54,-1.77 -1.52,-1.23 -4.42,-2.86 -6,-3.08 -2.3,1.54 0.4,6.71 -3.71,5.55 -1.63,0.21 -3.74,1.9 -3.4,2.86 -1.22,-0.25 -2.92,1.14 -1.43,2.07 -2.82,1.19 1.7,2.9 -0.94,4.55 -2.72,2.09 2.48,0.44 1.29,3.06 -2.53,0.4 -0.3,2.61 -2.09,4 -0.4,3.26 -2.41,5.93 -3.86,8.82 0.28,0.79 -3.1,0.12 -1.27,1.6 -1.02,2.01 -3.11,4.53 -0.2,6.39 -2.52,0.22 -3.43,3.38 -5,5.17 -0.91,1.5 1.12,2.54 -1.32,2.93 -1.23,2.37 -2.15,5.27 -3.97,7.32 1.46,1.7 -3.54,1.33 -2.2,4 0.89,0.84 -2.06,0.35 -2,1.51 -2.16,-0.19 -3.58,4.12 -1.57,4.8 2.75,-1.67 -0.46,5.07 2.92,2.57 1.47,-1.64 1.11,3.68 3.89,2.06 1.15,-1.3 4.64,-3.43 5.55,-1.97 -0.97,2.34 -5.83,2.91 -5.32,5.59 1.65,1.51 -1.67,5.32 2.05,4.87 0.58,1.25 3.67,-0.2 3.17,2.56 -0.46,2.07 -2.09,3.57 -1.96,5.92 -2.28,1.79 1.99,3.07 3.27,1.27 1.22,3.88 3.54,-2.53 5.73,-0.07 1.71,0.15 3.48,-3.04 4.82,-0.75 0.7,2.54 3.93,4.85 1.33,7.39 -0.96,2.05 -3.49,5.21 -5.83,2.98 -2.18,1.39 0.8,4.71 -0.35,6.74 -1.64,-3.35 -4.19,2.67 -7,1.13 -1.58,0.37 -1.77,-1.65 -2.62,-1.81 -0.7,0.72 -4.76,0.36 -3.34,1.66 -0.36,0.87 -3.77,2.22 -1.73,4.23 -0.31,2.89 -2.88,-1.51 -4.31,1.09 -1.46,1.61 -3.55,2.49 -3.46,4.75 -0.41,1.43 -0.54,3.48 -0.05,5.34 -0.27,1.74 -0.64,1.81 -2.46,1.7 -2.35,1.24 -5.67,-2 -7.94,0.36 -1.02,1.19 0.11,2.72 -2.11,2.54 -1.91,-2.74 -5.13,1.42 -6.94,-1.53 -3.68,-1.24 -4.83,6.16 -8.08,2.91 -0.68,-0.31 -3.05,-3.22 -2.23,-1.07 0.44,2 -3.21,4.32 -1.91,5.59 -1.58,-0.54 -1.24,3.52 -1.64,0.7 -1.39,-2.07 -3.9,0.94 -5.63,0.87 0.37,1.37 0.82,0.9 -0.34,1.77 -0.21,2.03 1.56,4.11 -0.43,6.09 -0.26,2.82 -3.85,3.15 -3.39,6.04 1.82,1.79 -0.1,4.43 -1.07,6.43 -3.76,0.87 1.99,2.12 2.03,4.1 0.89,1.78 3.76,2.19 1.71,4.57 -2.3,2.9 -5.15,-1.81 -7.83,-2.01 -3.78,-1.12 -4.32,3.77 -2.19,5.82 -2.31,2.78 -0.33,6.19 0.38,9.1 0.77,1.86 4.43,0.77 3.16,3.54 -0.62,2.49 -0.11,4.99 0.21,7.43 1.17,3.44 5.88,-1.22 6.9,2.2 0.63,0.39 -1.33,1.3 0.64,1.71 0.61,2 4.71,2.89 4.1,0.07 2.42,-0.19 4.16,-3.38 6.65,-1.26 2.61,1.3 4.67,3.68 7.51,4.49 2.44,-0.41 2.29,3.63 -0.15,2.17 -3.16,1.33 0.69,4.72 2.95,3.33 2.69,-1.74 4.67,2.16 2.98,3.28 -1.53,-1.48 -3.23,1.37 -1.51,2.46 -1.66,0.09 -1.17,4.59 -3.15,5.57 -2.16,-0.57 -0.01,3.21 -2.03,1.18 -1.51,-0.51 -1.63,0.74 -2.82,1.17 0.46,1.78 3.76,-0.82 2.44,1.78 0.45,1.46 -0.73,2.48 0.5,3.94 -0.91,1.42 1.06,4.29 -0.87,5.01 0.89,2.05 -1.39,4.46 -0.11,6.57 1.6,2.36 2.84,-1.08 4.63,0.84 2.19,0.61 6.36,2.5 5.42,5.48 1.51,1.9 3.6,2.8 3.89,5.79 1.08,1.98 3.28,1.24 4.3,3.24 2.25,0.68 4.45,1.39 6.37,2.79 1.16,1.48 3.78,2.23 4.69,2.86 -0.38,2.65 -2.37,5.25 -1.49,7.93 0.05,2.46 -6.1,4.34 -5.15,1.14 -2.52,-0.74 -5.24,-0.5 -7.55,-1.88 -1.49,0.54 -3.24,0.69 -4.5,0.55 -1.71,1.13 -6.19,1.11 -5.4,-1.84 -0.88,-3.94 -4.63,1.38 -6.95,-0.97 -1.81,-1.22 -2.73,1 -2.64,2.13 -3.4,-2.47 -4.1,3.12 -6.37,4.33 -1.56,1.14 -0.42,-3.07 -2.75,-1.69 -2.4,0.37 -5.28,1.01 -7,-0.66 -2.78,0.67 -5.63,0.98 -8.42,1.61 1.94,1.66 -2.76,2.56 -3.79,2.43 -2.67,-0.72 -5.06,0.99 -7.69,0.02 -2.34,1.37 -6.27,0.31 -6.05,4.11l-0.04,0.01 0,0z m57.81,-33.85c-0.89,-1.57 0.49,-2.17 0,0z m-241.23,-51.26c-1.5,-0.26 -4.88,0.4 -5.3,-0.46 2.59,-1.58 -0.9,-5.56 2.71,-5.44 2.09,-0.97 5.31,1.36 6.88,-1.15 -0.17,-1.75 -1.39,-4.59 1.04,-3 2.58,1.66 5.83,-0.05 8.09,1.03 2.4,1.17 -0.19,4.14 1.51,6.12 -0.91,2.05 -4.72,1.7 -6.85,2.38 -2.67,0.39 -5.38,0.53 -8.08,0.53z m245.17,-54.27c-0.96,-0.5 -1.79,-4.14 -0.7,-1.7 0.41,0.34 1.1,1.13 0.7,1.7z m15.47,-62.08c-0.5,-1.68 1.86,0.26 0,0z M392.43,81.96c-1.18,-1.24 -0.52,-3.74 1,-1.58 0.97,0.64 4.51,-0.85 3.11,1.22 -1.28,-0.1 -4.06,-2.2 -4.11,0.36z m69.72,-22.48c-3.13,-0.37 -5.18,-4.96 -3.51,-7.6 1.49,-0.95 5.9,-1.19 6.08,0.31 -0.75,2.23 0.93,5.01 -1.2,6.83 -0.37,0.32 -0.88,0.46 -1.36,0.46z m1.2,-32.66c0.64,-1.98 -0.94,-1.7 -1.81,-2.37 0.83,-0.97 3.57,-1.76 1.01,-2.23 -1.29,0.52 -2.78,0.7 -3.28,0.14 -1.2,0.89 -3.04,-4.18 -2.96,-0.9 1.94,3.97 -3.66,-2.01 -2.98,1.25 2.3,2.87 -2.86,2.37 -3.53,0.29 -1.84,-1.41 -2.9,-5.04 0.07,-4.98 -0.36,-1.21 -1.52,-2.86 -0.18,-4.45 -3.01,0.94 -0.61,-2.79 -2.49,-3.65 -1.26,2.21 -4.03,0.25 -1.58,-1.13 2.3,-1.91 -4.09,-1.91 -1.43,-4.6 0.66,-1.81 2.03,-2.29 3.79,-2.01 1.73,-0.33 3.25,0.66 4.85,0.17 2.53,-1.3 -3.03,3.08 0.48,2.2 3.11,-1.44 -1.22,5.41 2.65,3.83 2.34,0.52 1.33,4.72 3.21,4.64 2.81,0.65 4.59,3.49 7.55,3.98 2.95,1.5 6.52,1.02 9.42,1.43 -0.95,0.85 -5.31,2.46 -4.34,3.45 -1.86,0.24 -4.2,1.89 -2.01,3.36 -1.56,0.82 -3.63,-0.42 -4.9,1.06 -0.87,-0.61 -1.05,-0.3 -1.52,0.53z m23.35,-5.93c-1.68,-0.42 -4.33,-0.5 -2.76,-2.36 -1.89,0.07 -1.65,-3.14 0.36,-1.62 2.48,0.8 5.12,0.27 7.63,0.6 2.21,1.62 -2.46,4.83 -3.16,1.83 -0.45,0.12 -0.96,1.84 -2.07,1.55z","name":"Russian Federation"},"mt":{"path":"m343.65,509.08c-1.52,-0.23 -1.75,-0.24 0,0z m1.95,2.72c-1.32,-0.63 -1.5,-0.7 0,0z","name":"Malta"},"me":{"path":"m385.29,433.13c-1.98,-1.45 -3.12,-5.3 -6.16,-4.27 -0.68,-0.6 -0.46,-1.87 -1.44,-2.17 0.16,-1.66 0.06,-3.3 -0.89,-4.86 1.96,-1.05 1.28,-4.74 3.12,-5.09 1.81,3.01 2.14,-1.15 0.71,-2.43 2.24,-0.2 3.4,-2.11 5.57,-0.36 3.49,0.56 2.95,4.72 6.22,5.9 -2.5,0.45 -0.84,6.17 -3.72,4.67 0.19,-3.37 -2.81,0.5 -2.99,1.87 -0.8,1.83 -2.3,3.26 -0.46,4.87 0.08,0.47 0.4,1.59 0.03,1.87z","name":"Montenegro"},"rs":{"path":"m397.48,431.57c-0.16,-2.49 -1.05,-5.46 -3.99,-5.18 -0.83,-1.86 -3.16,-3.89 -0.74,-5.1 2.42,-2.35 -3,-3.15 -2.73,-5.8 -1.28,-2.34 -5.16,-1.7 -5.47,-5.07 -0.61,-1.48 -2.43,-2.36 0.08,-2.14 2.37,-1.69 -1.79,-3.25 -2.79,-4.49 -3.49,-0.35 0.76,-4.99 -0.07,-7.08 -1.54,-0.41 -2.38,-0.6 -2.22,-2.53 -0.29,-0.9 3.52,-0.03 1.84,-1.89 -1.99,-0.46 -4.18,-1.03 -2.61,-2.61 0.5,-1.92 -2.64,0.29 -1.69,-2.2 -0.12,-1.58 -1.93,-2.81 0.65,-3.27 2.64,-1.35 4.3,-3.64 7.52,-3.04 2.34,-0.11 4.56,2.67 6.11,3.82 1,0.92 0.22,4.94 3.24,4.94 1.65,0.3 5.5,0.5 3.47,2.78 1.27,1.27 0.97,1.07 -0.4,2.22 0.32,1.47 3.21,0.4 3.09,2.01 1.78,0.14 4.21,-0.13 4.93,1.74 2.85,0.45 1.17,-3.79 1.99,-3.56 1.66,0.7 3.37,1 1.04,1.99 -1.64,2.21 4.19,3.86 0.86,5.71 -2.2,2.75 0.34,6.72 2.98,8.19 2.92,0.51 3.82,2.98 1.52,5.06 -0.82,0.05 -2.7,-0.25 -2.65,1.85 -1.23,2.37 3.66,5.04 -0.48,5.54 -2.42,1.11 -4.61,2.18 -7.35,2.39 -1.32,2.74 -6.31,0.55 -6.16,5.74z","name":"Serbia"}}});
Index: public/vendors/vmap/maps/jquery.vmap.france.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.france.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.france.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+jQuery.fn.vectorMap('addMap', 'france_fr', {"width": 520, "height": 550, "paths":{"fr-01" : {"path": "M 383.28125,262.59375 L 381.125,262.8125 L 379.75,265.34375 L 376.0625,279.78125 L 375.53125,280.96875 L 375.15625,285.53125 L 374.09375,287 L 374.09375,293.59375 L 373.46875,295.09375 L 377.28125,297.40625 L 378.78125,297.625 L 381.125,299.75 L 381.53125,303.15625 L 384.09375,302.3125 L 388.0625,303.46875 L 388.125,302.71875 L 390.03125,302.71875 L 392.78125,305.28125 L 395.34375,304 L 396.625,300.1875 L 397.90625,298.6875 L 399.59375,298.90625 L 401.28125,300.40625 L 402.15625,303.15625 L 410,312.71875 L 412.34375,311.03125 L 412.75,307.40625 L 415.3125,306.96875 L 415.3125,300.59375 L 416.59375,299.53125 L 417,293.8125 L 417.5,294.21875 L 417.4375,292.125 L 416.375,290.1875 L 416.8125,284.6875 L 418.71875,285.75 L 419.78125,283.8125 L 421.6875,283.1875 L 423.65625,281.625 L 421.53125,281.625 L 421.53125,277.90625 L 423.875,276.53125 L 427.375,276.15625 L 427.59375,274.1875 L 426.40625,273.40625 L 429.34375,269.6875 L 428.9375,268.53125 L 425.59375,266.75 L 417.46875,275.6875 L 411.8125,275.6875 L 411.8125,273.34375 L 408.6875,271.78125 L 404.96875,275.875 L 402.03125,276.28125 L 402.03125,273.53125 L 399.5,272.375 L 395.59375,266.90625 L 392.0625,265.53125 L 390.90625,263 L 388.9375,262.59375 L 387,263.96875 L 385.4375,264.375 L 383.28125,262.59375 z ", "name" : "Ain"}, "fr-02" : {"path": "M 328.40625,62.21875 L 325.28125,64.375 L 323.71875,63 L 322.34375,63 L 319.21875,65.15625 L 316.875,63.78125 L 314.53125,65.15625 L 313.75,65.34375 L 313.15625,64.15625 L 311,64.15625 L 309.4375,65.15625 L 309.375,65.15625 L 309.84375,67.90625 L 307.28125,70.6875 L 307.28125,73.25 L 305.5,75.25 L 305.90625,77.625 L 306.875,81.59375 L 308.0625,88.34375 L 307.6875,94.28125 L 306.875,96.0625 L 309.25,97.84375 L 307.46875,98.65625 L 306.28125,103.40625 L 302.90625,104.1875 L 301.71875,106.1875 L 304.09375,106.59375 L 304.5,109.34375 L 302.71875,109.75 L 302.90625,112.71875 L 303.5,112.53125 L 304.5,110.9375 L 306.875,112.53125 L 308.28125,114.125 L 307.875,116.78125 L 309.65625,118.0625 L 310.25,122.375 L 315.5,127.4375 L 317.25,128.03125 L 318.25,130.375 L 321.53125,131.0625 L 321.9375,130.5625 L 322.9375,128.4375 L 325.875,127.0625 L 327.4375,122.96875 L 329.1875,121.78125 L 328.1875,120.40625 L 325.65625,120.40625 L 325.28125,119.0625 L 327.03125,118.28125 L 327.8125,117.09375 L 326.0625,115.9375 L 326.625,114.15625 L 331.125,113.78125 L 330.34375,112.03125 L 327.625,110.25 L 327.625,105 L 331.3125,102.25 L 335.4375,102.25 L 335.03125,100.3125 L 337.375,99.3125 L 340.6875,101.46875 L 342.0625,101.09375 L 341.875,94.4375 L 342.46875,92.09375 L 343.25,89.375 L 340.6875,88 L 341.28125,86.4375 L 345,85.65625 L 345,83.125 L 347.9375,81.5625 L 348.71875,79.21875 L 347.75,77.65625 L 347.9375,74.71875 L 349.6875,73.15625 L 347.9375,69.84375 L 348.46875,66.375 L 344.5,66.375 L 343.4375,67.09375 L 339.71875,66.125 L 338.9375,63.59375 L 337.78125,63.59375 L 335.625,65.53125 L 335.25,63.78125 L 330.9375,63.375 L 329.75,62.40625 L 328.40625,62.21875 z ", "name" : "Aisne"}, "fr-03" : {"path": "M 301.625,247.96875 L 298.90625,251.46875 L 297.34375,251.65625 L 295.59375,253.4375 L 293.625,251.28125 L 288.375,256.5625 L 288.375,259.6875 L 289.34375,260.46875 L 289.53125,262.03125 L 286.8125,264.15625 L 284.25,263.375 L 279.375,264.375 L 276.84375,267.28125 L 275.90625,269.28125 L 276.0625,269.25 L 278.40625,272.5625 L 278.40625,274.90625 L 279.75,276.65625 L 281.125,274.90625 L 282.6875,277.65625 L 284.84375,278.4375 L 287,283.5 L 287.09375,284.96875 L 290.0625,287.28125 L 291.65625,286.5625 L 292.90625,283.5625 L 294.125,283.21875 L 294.125,281.625 L 296.25,281.4375 L 296.4375,282.5 L 299.09375,279.5 L 302.09375,279.5 L 302.625,280.5625 L 301.21875,282.5 L 303.3125,284.8125 L 303.6875,286.21875 L 308.625,289.0625 L 314.625,289.9375 L 316.40625,289.75 L 319.0625,290.28125 L 321.34375,288.875 L 323.125,289.75 L 323.46875,292.21875 L 325.78125,292.75 L 328.78125,292.59375 L 329.65625,294.71875 L 332.40625,295.8125 L 332.5,294.84375 L 337.1875,294.625 L 336.8125,283.5 L 335.4375,280.78125 L 336,278.625 L 339.25,278.0625 L 339.34375,277.84375 L 343.4375,274.71875 L 343.625,267.09375 L 342.25,265.15625 L 339.125,265.15625 L 337.96875,263.59375 L 334.65625,263.59375 L 333.6875,262.40625 L 333.6875,259.46875 L 329.75,252.0625 L 327.8125,250.6875 L 324.09375,255.78125 L 322.53125,256.15625 L 321.9375,253.625 L 320.1875,252.84375 L 319.40625,254.40625 L 316.5,254.40625 L 316.09375,252.65625 L 314.125,253.8125 L 312,255 L 309.65625,252.4375 L 306.3125,250.875 L 306.125,248.34375 L 301.625,247.96875 z ", "name" : "Allier"}, "fr-04" : {"path": "M 463.84375,364.34375 L 461.71875,367.53125 L 458.71875,369.3125 L 457.65625,371.4375 L 455,371.59375 L 455,373.53125 L 454.28125,374.59375 L 453.21875,377.25 L 446.875,377.09375 L 443.875,375.5 L 441.90625,376.90625 L 438.21875,376.71875 L 437.3125,377.96875 L 438.21875,377.96875 L 438.75,381.3125 L 437.84375,381.6875 L 434.5,379.5625 L 434.5,378.3125 L 432.5625,376.71875 L 431.5,376.71875 L 431.5,378.5 L 429.90625,378.84375 L 426.53125,380.78125 L 424.40625,384.34375 L 423.875,386.09375 L 425.125,386.4375 L 425.3125,389.28125 L 424.0625,389.28125 L 422.125,387.5 L 421.0625,387.6875 L 421.59375,389.28125 L 424.59375,392.625 L 422.65625,393.34375 L 421.25,392.46875 L 417.6875,392.46875 L 414.6875,395.28125 L 414.65625,395.25 L 414.53125,396.40625 L 413.375,395.03125 L 411.8125,393.65625 L 410.8125,396.59375 L 409.0625,398.15625 L 408.3125,398.09375 L 408.34375,398.28125 L 408.5,400.9375 L 410.625,401.3125 L 410.625,403.78125 L 408.6875,404.65625 L 409.03125,407.5 L 412.5625,409.25 L 412.5625,411.1875 L 410.96875,412.96875 L 410.96875,414.5625 L 415.40625,414.5625 L 419.46875,419.15625 L 419.4375,419.25 L 424.59375,417.5625 L 430.96875,421.8125 L 434.5,419.15625 L 435.375,417.375 L 440.34375,415.78125 L 443.5,417.90625 L 448.09375,414.5625 L 453.40625,414.75 L 454.8125,413.3125 L 457.78125,413.1875 L 457.84375,413.15625 L 457.125,411.375 L 458,410.3125 L 457.65625,408.90625 L 460.46875,408.90625 L 461.1875,408.03125 L 463.84375,406.59375 L 465.96875,408.03125 L 467.375,407.125 L 464.03125,404.125 L 460.46875,400.78125 L 459.25,400.40625 L 459.0625,397.75 L 456.9375,394.59375 L 457.65625,390 L 458.71875,387.5 L 460.65625,385.90625 L 460.84375,383.4375 L 463.5,382.03125 L 463.90625,381.875 L 463.90625,378.09375 L 466.65625,377.71875 L 465.09375,376.34375 L 463.125,375.75 L 462.15625,373.21875 L 462.9375,371.46875 L 466.4375,367.75 L 465.875,365 L 466.375,364.46875 L 463.84375,364.34375 z ", "name" : "Alpes de Haute Provence"}, "fr-05" : {"path": "M 447.34375,339.15625 L 445.59375,339.9375 L 445.1875,342.875 L 441.6875,343.28125 L 441.09375,340.53125 L 439.9375,339.375 L 436.40625,339.75 L 435.03125,340.9375 L 434.25,345.03125 L 434.84375,346 L 438.9375,346.40625 L 439.71875,348.9375 L 441.28125,349.71875 L 441.28125,354 L 437.5625,353.8125 L 436,355.5625 L 431.53125,354.78125 L 429,356.9375 L 427.21875,356.15625 L 424.6875,358.125 L 425.65625,359.875 L 424.09375,361.4375 L 419.21875,361.4375 L 419.21875,363.78125 L 420.78125,364.5625 L 420.1875,365.9375 L 416.875,367.28125 L 412.78125,367.6875 L 411.59375,371.40625 L 411.40625,373.75 L 413.5625,375.5 L 411.40625,378.03125 L 408.6875,376.65625 L 405.5625,376.46875 L 405.15625,378.21875 L 407.125,379.59375 L 404.75,381.15625 L 405.5625,384.46875 L 412.1875,386.25 L 413.375,388.78125 L 415.3125,389.15625 L 414.65625,395.25 L 414.6875,395.28125 L 417.6875,392.46875 L 421.25,392.46875 L 422.65625,393.34375 L 424.59375,392.625 L 421.59375,389.28125 L 421.0625,387.6875 L 422.125,387.5 L 424.0625,389.28125 L 425.3125,389.28125 L 425.125,386.4375 L 423.875,386.09375 L 424.40625,384.34375 L 426.53125,380.78125 L 429.90625,378.84375 L 431.5,378.5 L 431.5,376.71875 L 432.5625,376.71875 L 434.5,378.3125 L 434.5,379.5625 L 437.84375,381.6875 L 438.75,381.3125 L 438.21875,377.96875 L 437.3125,377.96875 L 438.21875,376.71875 L 441.90625,376.90625 L 443.875,375.5 L 446.875,377.09375 L 453.21875,377.25 L 454.28125,374.59375 L 455,373.53125 L 455,371.59375 L 457.65625,371.4375 L 458.71875,369.3125 L 461.71875,367.53125 L 463.84375,364.34375 L 466.375,364.46875 L 468.21875,362.46875 L 470.34375,362.65625 L 470.34375,360.90625 L 467.625,359.53125 L 467.03125,353.875 L 464.875,353.09375 L 462.15625,353.5 L 457.0625,350.9375 L 456.28125,345.09375 L 453.375,344.125 L 452.375,342.15625 L 451.09375,339.34375 L 447.34375,339.15625 z ", "name" : "Hautes Alpes"}, "fr-06" : {"path": "M 463.90625,381.875 L 463.5,382.03125 L 460.84375,383.4375 L 460.65625,385.90625 L 458.71875,387.5 L 457.65625,390 L 456.9375,394.59375 L 459.0625,397.75 L 459.25,400.40625 L 460.46875,400.78125 L 464.03125,404.125 L 467.375,407.125 L 465.96875,408.03125 L 463.84375,406.59375 L 461.1875,408.03125 L 460.46875,408.90625 L 457.65625,408.90625 L 458,410.3125 L 457.125,411.375 L 457.84375,413.15625 L 455.53125,414.5625 L 456.40625,416.6875 L 458.71875,416.84375 L 461,417.90625 L 461.375,421.625 L 463.5,423.75 L 464.71875,423.75 L 467.03125,424.625 L 467.375,426.59375 L 465.96875,427.8125 L 467.03125,428.875 L 467.03125,430.125 L 469.21875,432.375 L 469.375,432.1875 L 469.5625,427.71875 L 473.46875,428.5 L 474.84375,426.71875 L 476.8125,427.125 L 477,421.0625 L 481.5,420.6875 L 485.40625,417.15625 L 488.90625,417.15625 L 489.09375,415 L 492.625,412.875 L 490.65625,408.375 L 493.59375,405.84375 L 493,402.90625 L 497.3125,401.53125 L 498.46875,397.25 L 497.90625,394.3125 L 496.90625,392.5625 L 496.125,390 L 493.21875,390.21875 L 484.03125,393.53125 L 481.09375,393.53125 L 476.03125,389.4375 L 470.9375,388.0625 L 468,388.0625 L 468,384.53125 L 463.90625,382 L 463.90625,381.875 z ", "name" : "Alpes Maritimes"}, "fr-07" : {"path": "M 375.25,328.5 L 370.71875,331.1875 L 369.84375,335.03125 L 366.46875,335.65625 L 364.65625,336.15625 L 364.71875,336.25 L 363.5625,340.9375 L 360.8125,342.09375 L 359.65625,344.0625 L 360.4375,346.59375 L 361,347.96875 L 358.09375,347.96875 L 357.875,351.65625 L 354.75,351.875 L 353.1875,356.75 L 348.5,356.75 L 343.4375,360.46875 L 340.625,364.9375 L 341.09375,365.53125 L 342.46875,372.71875 L 345.78125,376.3125 L 345.21875,380.4375 L 349.375,382.9375 L 349.375,388.46875 L 351.59375,387.34375 L 356.28125,390.40625 L 358.5,391.21875 L 359.03125,387.34375 L 361.8125,386.8125 L 362.625,389.84375 L 365.40625,389.5625 L 365.9375,386.53125 L 372.28125,390.09375 L 373.3125,388 L 376,387.59375 L 376.21875,383.46875 L 375.59375,382.59375 L 374.75,382.40625 L 374.75,380.90625 L 375.375,379.40625 L 374.3125,377.71875 L 374.9375,373.90625 L 377.5,370.90625 L 377.5,366.6875 L 376.4375,361.78125 L 378.34375,361.375 L 378.78125,359.25 L 380.6875,355.625 L 381.75,352.875 L 380.0625,348.625 L 379,345.21875 L 377.5,339.28125 L 377.5,331.3125 L 376.4375,330.96875 L 375.25,328.5 z ", "name" : "Ardèche"}, "fr-08" : {"path": "M 367.625,55.84375 L 365.65625,58.75 L 363.90625,60.53125 L 363.90625,62.28125 L 363.90625,64.625 L 361.5625,66.1875 L 357.28125,67.5625 L 354.9375,68.53125 L 352.1875,66.375 L 348.46875,66.375 L 347.9375,69.84375 L 349.6875,73.15625 L 347.9375,74.71875 L 347.75,77.65625 L 348.71875,79.21875 L 347.9375,81.5625 L 345,83.125 L 345,85.65625 L 341.28125,86.4375 L 340.6875,88 L 343.25,89.375 L 342.46875,92.09375 L 341.875,94.4375 L 342,99.3125 L 346.75,99.4375 L 350.90625,102.03125 L 351.6875,103.21875 L 353.875,103.8125 L 357.0625,106.1875 L 359.625,106.375 L 360.21875,105.78125 L 362.8125,105.78125 L 364,108.375 L 365.375,108.375 L 366.1875,107.1875 L 370.9375,107.375 L 371.71875,108.375 L 372.3125,108.375 L 374.3125,106.375 L 376.09375,107.96875 C 376.09375,107.96875 376.33461,107.94351 376.375,107.9375 L 376.25,107.125 L 378.59375,105.96875 L 379.75,104.78125 L 379,102.84375 L 378.78125,101.46875 L 380.9375,99.71875 L 381.71875,95.8125 L 379.375,92.875 L 380.15625,91.5 L 382.125,87.8125 L 382.6875,88.59375 L 385.625,88.59375 L 387,89.9375 L 388.75,88.78125 L 390.125,86.53125 L 388.71875,86.3125 L 387.9375,82.40625 L 386.375,81.21875 L 380.90625,80.625 L 379.9375,78.09375 L 378.15625,76.9375 L 371.90625,76.15625 L 371.53125,71.65625 L 372.3125,70.875 L 372.3125,69.125 L 369.1875,67.15625 L 369.78125,65 L 370.5625,63.0625 L 369.1875,61.875 L 371.34375,59.9375 L 371.34375,56.40625 L 370.5625,55.84375 L 367.625,55.84375 z ", "name" : "Ardennes"}, "fr-09" : {"path": "M 237.21875,446.375 L 235.96875,447.25 L 235.4375,448.3125 L 237.90625,450.09375 L 238.625,451.34375 L 238.09375,452.375 L 233.84375,452.75 L 232.625,454.5 L 232.78125,455.03125 L 234.375,455.5625 L 235.28125,456.8125 L 234.21875,458.5625 L 232.96875,458.40625 L 231.03125,456.625 L 228.71875,455.9375 L 226.4375,456.09375 L 222.375,458.5625 L 222.53125,461.9375 L 223.59375,462.65625 L 222.90625,465.28125 L 218.28125,466.53125 L 216.53125,468.65625 L 216.53125,472.1875 L 217.25,473.25 L 215.59375,474.78125 L 216.65625,475.375 L 222.6875,476.53125 L 225.25,476.53125 L 228.5625,480.84375 L 236.96875,480.4375 L 240.28125,485.71875 L 243.21875,484.53125 L 251.8125,485.71875 L 252.4375,489.3125 L 258.5,487.90625 L 260.71875,485.96875 L 264.03125,485.125 L 264.84375,483.46875 L 272.03125,482.9375 L 267.625,477.6875 L 264.03125,479.625 L 257.6875,474.375 L 259.0625,472.4375 L 264.03125,472.4375 L 263.46875,467.75 L 263.46875,464.15625 L 262.65625,457.5 L 252.96875,452.8125 L 253.53125,451.15625 L 251.6875,449.09375 L 250.125,449.75 L 248,450.09375 L 244.09375,448.3125 L 243.03125,447.96875 L 244.625,449.90625 L 243.9375,451.5 L 240.5625,451.15625 L 240.40625,449.375 L 238.4375,446.71875 L 237.21875,446.375 z ", "name" : "Ariège"}, "fr-10" : {"path": "M 349.3125,138.6875 L 345.34375,140.875 L 341.96875,143.25 L 338.625,143.25 L 333.0625,147.03125 L 328.3125,147.8125 L 324.9375,144.25 L 324.09375,144.4375 L 324.09375,145.03125 L 321.375,146.1875 L 321.1875,148.53125 L 319.8125,150.3125 L 319.03125,154.21875 L 318.59375,157.5 L 319.8125,158.5 L 322.15625,158.5 L 327.21875,163.78125 L 326.625,169.0625 L 330.15625,171.78125 L 332.125,170.40625 L 335.25,174.125 L 335.625,177.65625 L 337.78125,180.5625 L 338.75,182.71875 L 346.5625,183.125 L 350.46875,181.15625 L 351.625,183.3125 L 353,183.5 L 354,181.34375 L 360.4375,181.15625 L 362.96875,179.78125 L 363.375,177.25 L 369.03125,177.25 L 369.8125,177.6875 L 369.15625,175.1875 L 367.5625,174.1875 L 369.75,172.21875 L 373.125,172 L 374.3125,170.21875 L 374.09375,163.09375 L 373.3125,158.9375 L 369.9375,157.75 L 366.375,152.78125 L 366.5625,149.8125 L 367.59375,147.65625 L 365.78125,147.03125 L 360.21875,148.21875 L 356.25,148.21875 L 352.6875,142.875 L 352.28125,138.90625 L 349.3125,138.6875 z ", "name" : "Aube"}, "fr-11" : {"path": "M 274.25,438.46875 L 273.96875,442.0625 L 270.375,440.9375 L 266.5,440.9375 L 266.78125,439.5625 L 264.84375,439.84375 L 260.71875,441.21875 L 259.34375,438.71875 L 256.5625,441.21875 L 257.40625,443.15625 L 254.34375,444.53125 L 253.8125,447.5625 L 251.3125,448.6875 L 253.53125,451.15625 L 252.96875,452.8125 L 262.65625,457.5 L 263.46875,464.15625 L 263.46875,467.75 L 264.03125,472.4375 L 259.0625,472.4375 L 257.6875,474.375 L 264.03125,479.625 L 267.625,477.6875 L 272.03125,482.9375 L 271.375,483 L 272.21875,483.5 L 280.15625,479.625 L 278.21875,476.78125 L 278.0625,473.4375 L 296.59375,473.4375 L 296.25,470.9375 L 300.5,468.65625 L 305.4375,472.53125 L 308,473.71875 L 307.84375,468.125 L 308.0625,461.6875 L 305.71875,461.875 L 303.75,458.96875 L 305.3125,456.40625 L 308.625,459.53125 L 311.5625,457.1875 L 313.53125,455.25 L 313.78125,453.1875 L 311.28125,453.09375 L 310.40625,450.28125 L 307.9375,450.09375 L 305.625,446.71875 L 303.84375,446.90625 L 301.75,445.65625 L 301.375,442.65625 L 300.3125,443.1875 L 300.84375,445.3125 L 298.375,445.3125 L 298.1875,448.84375 L 294.5,450.09375 L 292.71875,446.375 L 290.25,447.96875 L 288.125,446.375 L 287.0625,443.90625 L 288.84375,441.78125 L 288,439.5 L 287.78125,439.5625 L 281.96875,439.5625 L 275.90625,438.46875 L 274.25,438.46875 z ", "name" : "Aude"}, "fr-12" : {"path": "M 294.6875,353.375 L 289.15625,358.09375 L 289.15625,362.78125 L 287.78125,362.78125 L 287.21875,367.1875 L 285.84375,367.75 L 284.75,370.21875 L 278.65625,370.21875 L 278.125,369.40625 L 275.34375,369.40625 L 273.6875,372.15625 L 273.09375,372.09375 L 272.75,373.1875 L 271.5,374.59375 L 267.96875,374.59375 L 267.25,375.5 L 265.5,375.3125 L 262.3125,378.84375 L 261.25,378.5 L 258.96875,380.4375 L 259.65625,383.96875 L 261.4375,386.625 L 260.0625,388.0625 L 260.375,392.09375 L 263.1875,392.28125 L 261.59375,395.46875 L 262.84375,398.65625 L 264.4375,397.75 L 265.15625,399.34375 L 267.4375,397.0625 L 270.8125,396.875 L 274.15625,399.34375 L 280,400.40625 L 282.125,404.125 L 285.125,405.53125 L 286.71875,409.59375 L 286.53125,411.1875 L 288.46875,414.75 L 288.46875,416.6875 L 292,421.28125 L 295.375,423.03125 L 297.5,422.5 L 298.5625,421.09375 L 300.15625,421.46875 L 303.8125,423.8125 L 303.84375,423.8125 L 305.46875,423.8125 L 308.78125,423.8125 L 308.5,418.03125 L 308.5,416.09375 L 310.15625,416.09375 L 313.1875,417.75 L 316.21875,417.75 L 315.6875,414.4375 L 317.34375,413.03125 L 320.65625,412.5 L 320.65625,409.71875 L 324.25,408.0625 L 323.40625,404.21875 L 320.375,404.21875 L 317.625,403.65625 L 317.0625,401.4375 L 319.28125,400.90625 L 319.28125,398.125 L 321.46875,396.1875 L 319.8125,395.375 L 315.125,396.1875 L 315.40625,394 L 312.09375,392.59375 L 311.25,385.96875 L 311.25,381.28125 L 308.5,379.34375 L 308.78125,375.46875 L 302.96875,368.3125 L 302.40625,362.78125 L 300.5,362.78125 L 299.65625,357.25 L 295.78125,357.8125 L 295.25,354.21875 L 294.6875,353.375 z ", "name" : "Aveyron"}, "fr-13" : {"path": "M 379.71875,409.90625 L 374.25,413.03125 L 372.84375,423.53125 L 367.0625,422.71875 L 365.40625,427.125 L 366.78125,429.0625 L 360.4375,432.9375 L 358.6875,437 L 364.875,437.28125 L 373.09375,437.875 L 374.65625,439.4375 L 371.71875,439.4375 L 369.78125,442.75 L 378.15625,444.5 L 384.8125,443.34375 L 381.28125,440 L 383.625,438.0625 L 387.34375,439.625 L 389.09375,443.34375 L 400.25,443.53125 L 403.15625,442.34375 L 403.75,444.125 L 400.625,446.84375 L 404.9375,447.03125 L 404.15625,449 L 402.96875,450.375 L 412.53125,450.375 L 417.21875,451.9375 L 417.6875,452.5625 L 417.875,448.6875 L 419.28125,447.09375 L 421.0625,446.03125 L 420.875,444.96875 L 419.46875,443.5625 L 418.0625,443.5625 L 417.15625,442.5 L 418.75,441.0625 L 418.75,440.53125 L 417,439.65625 L 417,438.25 L 420.875,438.4375 L 421.78125,437.71875 L 418.40625,434.53125 L 418.59375,430.8125 L 416.46875,429.0625 L 418.21875,425.53125 L 422.46875,422.6875 L 419.28125,420.5625 L 417,422.34375 L 411.6875,423.5625 L 407.4375,423.03125 L 399.84375,419.875 L 395.25,420.03125 L 391.375,418.28125 L 389.9375,416.3125 L 386.9375,412.96875 L 379.875,409.96875 L 379.71875,409.90625 z ", "name" : "Bouches du Rhône"}, "fr-14" : {"path": "M 202.65625,97.78125 L 198.09375,98.59375 L 190.65625,102.90625 L 182.28125,106.21875 L 175.625,102.5 L 159.625,100.15625 L 155.90625,98.21875 L 150.125,99.6875 L 150.46875,101.84375 L 149.34375,102.96875 L 149.5,104.5625 L 153.21875,108.28125 L 155.46875,109.5625 L 157.09375,107.46875 L 158.375,109.09375 L 156.75,111.1875 L 158.21875,113.59375 L 157.5625,114.40625 L 158.6875,116.6875 L 158.0625,119.25 L 156.4375,121.84375 L 153.84375,123.4375 L 152.40625,122.3125 L 150.96875,123.59375 L 152.5625,125.0625 L 151.28125,127.46875 L 148.21875,128.59375 L 151.9375,133.28125 L 155.625,133.59375 L 158.46875,135.4375 L 162.40625,134.25 L 165.3125,130.875 L 169.34375,132 L 172.875,129.5625 L 175,128.78125 L 177.25,131.03125 L 180.96875,130.375 L 184.1875,132.15625 L 188.21875,130.875 L 191.90625,128.125 L 194.34375,125.375 L 195.96875,125.0625 L 196.4375,127.15625 L 197.71875,126.84375 L 197.875,125.375 L 201.59375,124.75 L 202.875,125.53125 L 206.84375,124.65625 L 207.5,122.75 L 207.3125,121 L 205.34375,120.21875 L 205.15625,118.84375 L 206.90625,117.6875 L 207.125,115.71875 L 205.9375,111.03125 L 203.59375,107.71875 L 205.5625,106.5625 L 205.5625,105.78125 L 203.59375,105.1875 L 202.65625,97.78125 z ", "name" : "Calvados"}, "fr-15" : {"path": "M 285.84375,323.71875 L 285.25,325.875 L 286.21875,328.21875 L 285.03125,329.59375 L 283.09375,329.59375 L 281.125,327.4375 L 279.375,326.46875 L 279.1875,331.9375 L 275.65625,334.09375 L 273.125,337.59375 L 273.71875,341.125 L 272.9375,342.6875 L 271.9375,345.8125 L 270.375,345.8125 L 268.8125,347.75 L 270,348.9375 L 270.78125,350.875 L 268.25,352.65625 L 269.28125,359.1875 L 272.59375,361.65625 L 270.09375,367.46875 L 272.59375,368.5625 L 271.5,371.875 L 273.6875,372.15625 L 275.34375,369.40625 L 278.125,369.40625 L 278.65625,370.21875 L 284.75,370.21875 L 285.84375,367.75 L 287.21875,367.1875 L 287.78125,362.78125 L 289.15625,362.78125 L 289.15625,358.09375 L 294.6875,353.375 L 295.25,354.21875 L 295.78125,357.8125 L 299.65625,357.25 L 300.5,362.78125 L 302.40625,362.78125 L 302.96875,368.3125 L 304.6875,370.4375 L 307.5,363.96875 L 310.25,355.375 L 313.75,357.71875 L 315.3125,354.21875 L 320.3125,352.40625 L 320.3125,350.75 L 319.25,349.15625 L 317.125,347.90625 L 318.1875,346.3125 L 317.28125,345.4375 L 318.34375,345.09375 L 319.59375,344.03125 L 317.46875,343.84375 L 316.40625,342.4375 L 316.0625,338.71875 L 314.8125,337.46875 L 313.9375,334.3125 L 309.5,334.3125 L 308.625,331.8125 L 307.21875,331.65625 L 306.5,333.0625 L 303.6875,332.875 L 301.03125,328.8125 L 299.96875,328.65625 L 297.84375,327.59375 L 296.59375,328.8125 L 293.4375,328.8125 L 291.84375,325.46875 L 285.84375,323.71875 z ", "name" : "Cantal"}, "fr-16" : {"path": "M 206.28125,284.875 L 204.59375,286.15625 L 204.8125,288.9375 L 203.75,289.78125 L 200.75,288.0625 L 197.78125,289.125 L 194.375,289.34375 L 191.8125,286.21875 L 191,286.375 L 187.59375,288.0625 L 185.03125,288.71875 L 185.03125,290.1875 L 183.5625,291.90625 L 183.96875,292.96875 L 182.0625,294.03125 L 180.375,300.1875 L 179.9375,304.21875 L 178.46875,304.84375 L 176.34375,304.65625 L 175.90625,303.59375 L 173.5625,303.59375 L 172.3125,304.65625 L 169.53125,304.65625 L 167.1875,305.90625 L 168.90625,306.5625 L 169.125,311.03125 L 169.96875,311.21875 L 168.46875,312.9375 L 170.1875,314 L 172.5,316.125 L 173.78125,318.25 L 175.28125,319.71875 L 174.84375,321.84375 L 174,322.6875 L 175.28125,323.96875 L 175.28125,325.46875 L 172.71875,327.59375 L 173.78125,328.4375 L 175.28125,328.875 L 175.28125,329.28125 L 173.15625,330.125 L 173.34375,331.1875 L 174.625,331.84375 L 178.65625,331.1875 L 180.375,333.09375 L 181.65625,334.8125 L 185.8125,337.625 L 186.40625,336.625 L 190.3125,337.03125 L 192.25,335.25 L 195.78125,331.75 L 195.96875,324.90625 L 205.15625,318.65625 L 205.34375,313.96875 L 208.09375,313.59375 L 209.84375,310.46875 L 210.9375,310.5 L 211.59375,307.53125 L 213.15625,307.34375 L 214.125,304.59375 L 216.09375,304 L 218.4375,302.4375 L 218.0625,297.5625 L 219.8125,296.96875 L 223.3125,296.1875 L 223.125,294.4375 L 222.53125,291.71875 L 219.8125,291.5 L 218.25,289.75 L 219.21875,288 L 219.28125,286.40625 L 217.53125,285.53125 L 214.15625,285.53125 L 212.65625,287.21875 L 209.03125,288.71875 L 207.78125,287.4375 L 206.28125,284.875 z ", "name" : "Charente"}, "fr-17" : {"path": "M 149.3125,270.625 L 146.5625,270.8125 L 140.59375,274.4375 L 142.03125,275.75 L 138.90625,278.28125 L 138.53125,280.25 L 135.59375,280.625 L 134.03125,278.875 L 130.125,278.5 L 129.71875,276.53125 L 127.375,274.96875 L 124.0625,276.15625 L 126.21875,279.28125 L 128.9375,279.28125 L 131.6875,281.03125 L 133.84375,282.78125 L 137.9375,282.59375 L 138.71875,284.34375 L 141.4375,284.9375 L 142.4375,287.65625 L 144.1875,288.4375 L 144,290.59375 L 141.65625,290.21875 L 140.875,291.375 L 142.625,293.90625 L 141.65625,298.21875 L 139.3125,298.03125 L 139.5,300.75 L 140.09375,301.71875 L 137.34375,301.71875 L 136.96875,300.15625 L 138.71875,297.8125 L 138.125,296.46875 L 137.15625,295.6875 L 136.75,291 L 133.4375,290.59375 L 130.71875,287.28125 L 130.3125,294.125 L 134.8125,297.4375 L 135.1875,301.15625 L 135.96875,305.4375 L 136.375,309.75 L 138.71875,309.53125 L 142.8125,312.875 L 145.5625,314.4375 L 145.75,316.375 L 147.90625,316.78125 L 154.15625,323.03125 L 155.625,329.78125 L 161.40625,329.78125 L 162.375,328.8125 L 162.5625,331.75 L 167.65625,332.34375 L 168.4375,338.59375 L 171.1875,338.78125 L 175.65625,343.28125 L 178,343.65625 L 180.75,342.28125 L 182.6875,343.65625 L 184.25,340.34375 L 185.8125,337.625 L 181.65625,334.8125 L 180.375,333.09375 L 178.65625,331.1875 L 174.625,331.84375 L 173.34375,331.1875 L 173.15625,330.125 L 175.28125,329.28125 L 175.28125,328.875 L 173.78125,328.4375 L 172.71875,327.59375 L 175.28125,325.46875 L 175.28125,323.96875 L 174,322.6875 L 174.84375,321.84375 L 175.28125,319.71875 L 173.78125,318.25 L 172.5,316.125 L 170.1875,314 L 168.46875,312.9375 L 169.96875,311.21875 L 169.125,311.03125 L 168.90625,306.5625 L 167.1875,305.90625 L 169.53125,304.65625 L 172.3125,304.65625 L 173.5625,303.59375 L 175.90625,303.59375 L 176.34375,304.65625 L 178.46875,304.84375 L 179.9375,304.21875 L 180.375,300.1875 L 182.0625,294.03125 L 182.125,294 L 180.59375,292.53125 L 180.15625,290.40625 L 177.40625,289.125 L 173.78125,286.59375 L 169.3125,287 L 166.5625,283.40625 L 162.53125,283.1875 L 159.34375,280.84375 L 159.34375,279.5625 L 157.21875,277.25 L 157.125,274.375 L 154.1875,272.1875 L 150.46875,273.75 L 149.3125,270.625 z ", "name" : "Charente Maritime"}, "fr-18" : {"path": "M 275.53125,200.84375 L 272.6875,202.25 L 270.15625,204.34375 L 270.28125,205.1875 L 272.8125,205.875 L 273.8125,208 L 275.34375,208.5625 L 274.78125,209.8125 L 274.78125,211.90625 L 272.40625,212.90625 L 270.5625,216.25 L 270.4375,218.09375 L 271.125,218.9375 L 271.40625,219.90625 L 268.90625,221.3125 L 264.96875,221.71875 L 264,220.625 L 262.875,220.75 L 261.75,222 L 261.875,224.53125 L 259.375,224.6875 L 259.21875,226.90625 L 256.96875,228.75 L 257.25,229.59375 L 258.65625,230.71875 L 261.46875,231.125 L 263.5625,230.28125 L 266.21875,230.15625 L 267.5,231.125 L 267.0625,233.78125 L 269.3125,236.75 L 269.3125,238 L 268.34375,239.6875 L 268.34375,240.375 L 269.46875,241.65625 L 271.28125,241.65625 L 271.40625,242.46875 L 269.1875,244.3125 L 269.3125,245.5625 L 267.90625,246.28125 L 268.46875,247.25 L 270.28125,248.78125 L 270.28125,249.90625 L 268.34375,251.03125 L 268.34375,252.71875 L 271,254.125 L 271.5625,256.09375 L 273.25,257.625 L 273.09375,258.1875 L 272.40625,259.03125 L 272.25,261.5625 L 271.84375,262.40625 L 272.96875,264.625 L 273.375,266.3125 L 271.40625,268.28125 L 271.3125,269.84375 L 275.90625,269.28125 L 276.84375,267.28125 L 279.375,264.375 L 284.25,263.375 L 286.8125,264.15625 L 289.53125,262.03125 L 289.34375,260.46875 L 288.375,259.6875 L 288.375,256.5625 L 293.625,251.28125 L 295.59375,253.4375 L 297.34375,251.65625 L 298.90625,251.46875 L 301.625,247.96875 L 306.125,248.34375 L 306.1875,249.40625 L 307.6875,244.625 L 306.71875,242.875 L 306.90625,240.34375 L 307.5,235.25 L 305.34375,233.125 L 305.75,228.4375 L 303.78125,224.3125 L 303.59375,221.59375 L 300.0625,218.84375 L 299.5,216.5 L 301.25,213.96875 L 301.25,210.25 L 299.21875,207.875 L 297.21875,208.6875 L 296.25,208.28125 L 294.84375,206.4375 L 294,206.3125 L 293.4375,206.59375 L 293.28125,209.40625 L 292.03125,209.53125 L 291.0625,208.6875 L 288.8125,205.59375 L 287.96875,204.5 L 284.75,204.34375 L 283.1875,202.375 L 281.9375,202.375 L 281.375,203.09375 L 279.28125,203.375 L 277.59375,201.8125 L 275.625,200.96875 L 275.53125,200.84375 z ", "name" : "Cher"}, "fr-19" : {"path": "M 265.75,307.625 L 264.90625,309.75 L 261.71875,310.375 L 260.46875,312.5 L 258.96875,312.5 L 256.84375,311.875 L 255.34375,314.40625 L 253.03125,314.625 L 251.53125,317.375 L 249.625,317.375 L 248.125,318.875 L 244.3125,318.4375 L 243.03125,320.5625 L 241.5625,320.375 L 239,323.5625 L 236.65625,322.6875 L 235.5625,324.90625 L 236.40625,327.0625 L 238.5625,328.8125 L 234.65625,332.34375 L 234.65625,335.0625 L 236.21875,335.84375 L 234.65625,337.8125 L 236.8125,339.5625 L 235.25,341.5 L 237,342.6875 L 241.28125,342.5 L 241.09375,346.78125 L 242.71875,349.34375 L 243.3125,349.25 L 247.46875,347.3125 L 252.4375,349.53125 L 256.28125,355.03125 L 258.5,354.75 L 261.8125,351.4375 L 262.90625,353.375 L 265.125,351.1875 L 268.15625,352 L 268.25,352.65625 L 270.78125,350.875 L 270,348.9375 L 268.8125,347.75 L 270.375,345.8125 L 271.9375,345.8125 L 272.9375,342.6875 L 273.71875,341.125 L 273.125,337.59375 L 275.65625,334.09375 L 279.1875,331.9375 L 279.375,326.46875 L 281.125,327.4375 L 283.09375,329.59375 L 285.03125,329.59375 L 286.21875,328.21875 L 285.25,325.875 L 286.21875,322.375 L 285.625,319.0625 L 284.4375,317.6875 L 284.4375,314.9375 L 286.21875,312.03125 L 285.8125,309.28125 L 285.375,308.84375 L 283.40625,310.375 L 279.5625,310.375 L 278.3125,312.28125 L 275.96875,312.28125 L 274.0625,310.375 L 273.1875,309.09375 L 268.3125,309.09375 L 267.25,307.625 L 265.75,307.625 z ", "name" : "Corrèze"}, "fr-2a" : {"path": "M 445.33847,488.9562 L 445.33847,491.11245 L 447.30722,492.48745 L 450.61972,494.42495 L 450.83847,495.98745 L 448.86972,496.5812 L 445.74472,497.17495 L 445.74472,498.5187 L 446.90097,499.7062 L 447.11972,503.61245 L 451.40097,504.98745 L 452.96347,505.36245 L 454.33847,507.5187 L 453.36972,508.8937 L 451.80722,509.4562 L 450.61972,511.61245 L 449.46347,512.98745 L 450.02597,516.48745 L 452.96347,516.29995 L 453.74472,516.8937 L 456.49472,515.5187 L 457.27597,516.29995 L 455.90097,519.23745 L 457.27597,520.61245 L 454.93222,522.36245 L 453.36972,525.86245 L 457.65097,526.86245 L 463.71347,527.42495 L 461.18222,530.36245 C 461.18222,530.36245 459.99289,529.90364 459.46347,530.1437 C 459.44782,530.15141 459.41536,530.16589 459.40097,530.17495 C 459.39647,530.17828 459.37406,530.20271 459.36972,530.2062 C 459.36553,530.20986 459.34249,530.23363 459.33847,530.23745 C 459.33478,530.24161 459.31073,530.26437 459.30722,530.2687 C 459.30054,530.27771 459.28192,530.29022 459.27597,530.29995 C 459.27319,530.30499 459.27856,530.32597 459.27597,530.3312 C 459.27118,530.34203 459.24871,530.38211 459.24472,530.3937 C 459.24293,530.39969 459.2463,530.41876 459.24472,530.42495 C 459.24199,530.43772 459.21532,530.47387 459.21347,530.48745 C 459.21207,530.50144 459.21394,530.53512 459.21347,530.54995 C 459.21348,531.52651 457.86972,533.8937 457.86972,533.8937 L 459.80722,536.0187 L 463.33847,538.17495 L 469.96347,539.92495 L 471.90097,540.7062 L 473.68222,541.48745 L 472.49472,543.6437 L 475.61972,543.4562 L 476.21347,544.8312 L 479.33847,544.8312 L 480.11972,541.11245 L 478.15097,540.7062 L 480.90097,537.79995 L 479.93222,536.79995 L 480.11972,535.04995 L 483.65097,533.11245 L 483.83847,530.9562 L 481.49472,530.7687 L 479.93222,532.11245 L 479.93222,530.17495 L 483.05722,529.98745 L 484.02597,527.6437 L 484.80722,520.79995 L 484.21347,517.86245 L 484.15097,515.04995 L 480.74472,517.29995 L 476.68222,517.4562 L 476.33847,514.6437 L 476.86972,513.92495 L 475.61972,513.04995 L 475.27597,508.2687 L 474.74472,507.3937 L 472.61972,507.3937 L 471.55722,506.5187 L 471.55722,503.1437 L 470.15097,502.2687 L 469.08847,501.73745 L 466.96347,499.0812 L 467.11972,497.48745 L 464.49472,497.48745 L 463.58847,494.8312 L 459.86972,494.8312 L 457.93222,492.17495 L 458.46347,491.29995 L 457.24472,490.5812 L 454.40097,491.11245 L 453.33847,490.42495 L 449.46347,490.42495 L 449.08847,489.36245 L 446.90097,488.9562 L 445.33847,488.9562 z ", "name" : "Corse du Sud"}, "fr-2b" : {"path": "M 477.96347,449.8937 L 475.02597,451.86245 L 475.43222,453.79995 L 476.99472,455.7687 L 475.24472,457.11245 L 476.02597,458.67495 L 474.83847,460.04995 L 474.83847,461.79995 L 476.80722,463.5812 L 476.80722,466.29995 L 475.61972,468.8312 L 474.27597,469.42495 L 472.71347,467.2687 L 469.96347,467.48745 L 469.36972,467.0812 L 467.02597,467.0812 L 464.90097,469.04995 L 464.08847,472.36245 L 459.02597,473.3312 L 455.11972,476.6437 L 454.33847,478.79995 L 452.40097,478.61245 L 451.40097,477.42495 L 450.83847,480.7687 L 449.46347,481.3312 L 449.05722,484.4562 L 449.65097,485.8312 L 447.49472,487.3937 L 446.90097,488.9562 L 449.08847,489.36245 L 449.46347,490.42495 L 453.33847,490.42495 L 454.40097,491.11245 L 457.24472,490.5812 L 458.46347,491.29995 L 457.93222,492.17495 L 459.86972,494.8312 L 463.58847,494.8312 L 464.49472,497.48745 L 467.11972,497.48745 L 466.96347,499.0812 L 469.08847,501.73745 L 470.15097,502.2687 L 471.55722,503.1437 L 471.55722,506.5187 L 472.61972,507.3937 L 474.74472,507.3937 L 475.27597,508.2687 L 475.61972,513.04995 L 476.86972,513.92495 L 476.33847,514.6437 L 476.68222,517.4562 L 480.74472,517.29995 L 484.15097,515.04995 L 484.02597,509.2687 L 488.71347,502.6437 L 488.71347,491.7062 L 486.77597,487.98745 L 486.18222,476.2687 L 484.80722,474.11245 L 482.27597,472.17495 L 481.86972,464.92495 L 483.05722,461.61245 L 481.49472,456.3312 L 480.52597,452.04995 L 479.71347,450.86245 L 477.96347,449.8937 z ", "name" : "Haute-Corse"}, "fr-21" : {"path": "M 363.375,177.25 L 362.96875,179.78125 L 360.4375,181.15625 L 354,181.34375 L 354.28125,182.75 L 354.4375,184.15625 L 352.46875,185.5625 L 352.46875,187.9375 L 352.875,188.375 L 354.4375,188.375 L 355.40625,190.03125 L 354.84375,192.84375 L 352.59375,194.53125 L 352.59375,196.21875 L 353.3125,196.78125 L 353.15625,197.1875 L 351.75,197.75 L 351.34375,199.84375 L 349.09375,204.625 L 347.5625,206.875 L 347.5625,209.125 L 348.125,210.09375 L 347.28125,211.21875 L 345.3125,212.1875 L 345.4375,214.15625 L 347.28125,215.28125 L 347.96875,216.8125 L 347.6875,218.9375 L 347.28125,220.46875 L 348.25,222.15625 L 351.0625,222.71875 L 352.3125,224.6875 L 352.3125,225.53125 L 351.46875,225.8125 L 351.46875,227.84375 L 351.625,227.90625 L 355.40625,231.8125 L 359.34375,231.6875 L 362.84375,234.34375 L 365.375,236.1875 L 365.5,238.5625 L 368.15625,239.125 L 370.40625,240.9375 L 376.3125,238.84375 L 380.375,237.5625 L 382.1875,237.28125 L 382.75,236.46875 L 384.71875,236.59375 L 386.25,237.5625 L 388.5,237 L 390.75,235.46875 L 392.4375,235.65625 L 392.46875,235.46875 L 393.8125,234.6875 L 393.625,233.6875 L 393.25,232.53125 L 394.21875,230.96875 L 397.53125,229.40625 L 397.53125,227.84375 L 398.71875,226.28125 L 399.875,224.71875 L 399.5,223.34375 L 400.0625,221.1875 L 400.46875,218.0625 L 401.25,218.0625 L 401.0625,216.90625 L 400.28125,216.125 L 400.0625,212.21875 L 398.3125,212.03125 L 397.9375,208.90625 L 395.78125,207.90625 L 396.5625,206.9375 L 397.75,206.5625 L 400.28125,203.625 L 400.0625,202.0625 L 398.5,198.9375 L 396.1875,198.53125 L 395.375,200.5 L 391.09375,201.46875 L 390.6875,200.5 L 387.5625,196.59375 L 385.8125,197.5625 L 383.46875,197.375 L 382.6875,195.8125 L 379.5625,196 L 379.375,192.6875 L 377.625,191.5 L 380.15625,188.78125 L 375.65625,182.71875 L 372.15625,179 L 369.03125,177.25 L 363.375,177.25 z ", "name" : "Côte d'Or"}, "fr-22" : {"path": "M 69.78125,123.21875 L 68,124.59375 L 63.53125,125.15625 L 62.53125,126.53125 L 59.40625,124.1875 L 55.3125,126.9375 L 56.875,129.0625 L 54.15625,132.78125 L 54.03125,132.71875 L 52.90625,137.96875 L 55.3125,138.125 L 55.15625,140.21875 L 56.9375,141.34375 L 55.3125,142.96875 L 54.1875,143.78125 L 54.34375,145.6875 L 56.78125,146.5 L 54.5,147.15625 L 54.5,149.5625 L 55.96875,151.5 L 56.28125,157.15625 L 55.3125,158.125 L 56.125,161.03125 L 59.1875,161.84375 L 59.5,163.4375 L 61.4375,163.59375 L 63.0625,162.46875 L 64.03125,163.4375 L 67.75,165.0625 L 70.8125,163.4375 L 71.59375,161.84375 L 74.1875,161.65625 L 77.09375,164.25 L 79.84375,163.59375 L 82.25,166.03125 L 83.375,166.03125 L 84.5,167.46875 L 86.78125,167.46875 L 87.5625,166.34375 L 88.53125,168.4375 L 90.96875,169.40625 L 94.03125,167.46875 L 94.03125,165.375 L 96.28125,164.5625 L 97.71875,164.5625 L 99.5,167.8125 L 103.375,168.125 L 105.3125,165.6875 L 107.40625,161.1875 L 110.15625,160.21875 L 111.59375,158.125 L 113.0625,159.5625 L 116.125,158.9375 L 117.09375,150.0625 L 118.0625,146.5 L 117.09375,144.5625 L 115.46875,143.9375 L 114.375,138.03125 L 113.125,139.4375 L 109.40625,139.03125 L 109.03125,141.1875 L 106.6875,141.375 L 106.5,138.65625 L 104.53125,138.0625 L 103.15625,139.625 L 103.15625,135.71875 L 100.8125,137.46875 L 97.3125,136.875 L 96.125,139.21875 L 88.90625,143.125 L 88.90625,145.09375 L 87.34375,145.09375 L 87.34375,141.5625 L 83.25,139.625 L 83.625,136.09375 L 79.9375,133.375 L 79.9375,130.0625 L 77.1875,129.46875 L 77.375,126.34375 L 75.25,126.15625 L 75.4375,124 L 71.53125,124 L 70.9375,125.9375 L 69.78125,123.21875 z ", "name" : "Côtes d'Armor"}, "fr-23" : {"path": "M 256.125,267.875 L 254.96875,271 L 251.4375,270.8125 L 250.65625,270.40625 L 248.3125,270.625 L 246.5625,269.4375 L 243.1875,273.3125 L 243.25,276.1875 L 240.90625,280.84375 L 241.34375,283.1875 L 243.875,283.8125 L 245.59375,288.0625 L 247.28125,289.78125 L 246.65625,297.84375 L 250.25,296.78125 L 251.75,298.6875 L 249.40625,300.59375 L 249.40625,302.53125 L 251.3125,302.71875 L 254.71875,302.53125 L 255.78125,301.03125 L 256.625,301.03125 L 256.21875,303.59375 L 258.96875,304.84375 L 261.53125,306.5625 L 261.53125,307.625 L 260.03125,307.625 L 260.46875,310.15625 L 261.46875,310.78125 L 261.71875,310.375 L 264.90625,309.75 L 265.75,307.625 L 267.25,307.625 L 268.3125,309.09375 L 273.1875,309.09375 L 274.0625,310.375 L 275.96875,312.28125 L 278.3125,312.28125 L 279.5625,310.375 L 283.40625,310.375 L 285.375,308.84375 L 281.3125,304.78125 L 280.9375,303.03125 L 284.65625,300.875 L 286.8125,299.71875 L 287.375,296.96875 L 289.71875,295.21875 L 288.9375,291.5 L 287.375,289.5625 L 287,283.5 L 284.84375,278.4375 L 282.6875,277.65625 L 281.125,274.90625 L 279.75,276.65625 L 278.40625,274.90625 L 278.40625,272.5625 L 276.0625,269.25 L 269.625,270.03125 L 265.90625,269.0625 L 256.125,267.875 z ", "name" : "Creuse"}, "fr-24" : {"path": "M 209.84375,310.46875 L 208.09375,313.59375 L 205.34375,313.96875 L 205.15625,318.65625 L 195.96875,324.90625 L 195.78125,331.75 L 192.25,335.25 L 190.3125,337.03125 L 186.40625,336.625 L 184.25,340.34375 L 183.6875,341.5625 L 184.71875,342.78125 L 186.65625,342.78125 L 187.71875,344.375 L 186.65625,347.21875 L 186.125,350.375 L 184.34375,351.4375 L 184.34375,352.5 L 185.0625,353.5625 L 185.0625,355.5 L 183.65625,357.28125 L 185.40625,358.15625 L 185.9375,359.59375 L 191.96875,359.40625 L 194.4375,356.40625 L 196.90625,358 L 194.96875,359.40625 L 195.125,363.28125 L 197.96875,365.25 L 198.3125,368.9375 L 201.3125,370 L 203.09375,368.40625 L 206.96875,368.40625 L 209.09375,366.65625 L 210.34375,366.84375 L 210.6875,368.25 L 214.59375,368.25 L 215.46875,367.1875 L 216.875,367.375 L 218.46875,369.125 L 218.46875,370.375 L 217.0625,371.25 L 217.59375,372.5 L 219.53125,372.65625 L 222,370.375 L 224.125,370.375 L 225.53125,371.96875 L 228.59375,373.25 L 228.78125,372.75 L 230.5625,371 L 230.75,368.0625 L 235.03125,367.6875 L 237.78125,363.78125 L 236.59375,363.375 L 236.40625,361.25 L 239.71875,360.84375 L 239.9375,358.90625 L 241.5,357.90625 L 243.25,354.78125 L 241.5,352.84375 L 241.5,350.6875 L 242.84375,349.53125 L 241.09375,346.78125 L 241.28125,342.5 L 237,342.6875 L 235.25,341.5 L 236.8125,339.5625 L 234.65625,337.8125 L 236.21875,335.84375 L 234.65625,335.0625 L 234.65625,332.34375 L 238.5625,328.8125 L 236.40625,327.0625 L 235.25,324.125 L 231.125,323.53125 L 229.75,322.5625 L 232.6875,321.1875 L 231.71875,319.84375 L 227.4375,319.25 L 226.4375,315.34375 L 220.1875,314.75 L 218.8125,316.71875 L 217.46875,317.09375 L 215.6875,314.75 L 216.5,312.59375 L 215.5,310.65625 L 209.84375,310.46875 z ", "name" : "Dordogne"}, "fr-25" : {"path": "M 447.40625,199.71875 L 447.21875,199.9375 L 444.96875,199.9375 L 443.8125,201.53125 L 442.34375,202.375 L 442.34375,204.34375 L 438.6875,204.78125 L 436.71875,203.375 L 434.0625,203.78125 L 431.53125,205.75 L 429.71875,208.84375 L 427.90625,209.40625 L 427.0625,211.5 L 424.8125,211.90625 L 421.71875,214.4375 L 417.65625,214.3125 L 416.40625,215.28125 L 415.28125,215.28125 L 411.34375,218.5 L 409.5625,218.4375 L 409.53125,219.625 L 409.8125,221.71875 L 412.34375,223.40625 L 413.75,225.25 L 413.3125,227.1875 L 412.0625,230.15625 L 411.21875,232.09375 L 416.6875,233.9375 L 420.1875,233.65625 L 420.46875,236.59375 L 420.46875,240.53125 L 424.8125,241.9375 L 426.78125,242.46875 L 429.59375,245.15625 L 429.3125,247.40625 L 428.03125,249.21875 L 424.53125,250.34375 L 425.375,252.3125 L 425.78125,253.84375 L 424.25,255.375 L 424.40625,256.78125 L 426.78125,257 L 426.8125,256.8125 L 438.90625,245.46875 L 438.53125,236.09375 L 442.8125,233.96875 L 445.75,232.59375 L 448.46875,230.0625 L 448.6875,226.34375 L 451.40625,224.96875 L 457.65625,217.75 L 456.6875,215.40625 L 458.84375,214.4375 L 461.375,211.3125 L 460,209.9375 L 455.3125,210.90625 L 455.125,210.125 L 459.4375,205.15625 L 447.40625,199.71875 z ", "name" : "Doubs"}, "fr-26" : {"path": "M 384.9375,329.28125 L 382.1875,331.1875 L 379.84375,332.03125 L 377.5,331.3125 L 377.5,339.28125 L 379,345.21875 L 380.0625,348.625 L 381.75,352.875 L 380.6875,355.625 L 378.78125,359.25 L 378.34375,361.375 L 376.4375,361.78125 L 377.5,366.6875 L 377.5,370.90625 L 374.9375,373.90625 L 374.3125,377.71875 L 375.375,379.40625 L 374.75,380.90625 L 374.75,382.40625 L 375.59375,382.59375 L 376.21875,383.46875 L 376,387.59375 L 378.59375,387.21875 L 379.75,388.59375 L 379.1875,392.5 L 379.96875,393.46875 L 382.875,390.53125 L 385.4375,390.34375 L 386,388.78125 L 382.6875,388.375 L 382.125,384.875 L 384.25,381.5625 L 387,381.34375 L 389.71875,383.90625 L 387,387.59375 L 387.78125,388.96875 L 391.6875,389.375 L 394.21875,387.21875 L 392.84375,390.15625 L 393.25,392.5 L 397.34375,392.875 L 402.8125,393.28125 L 403.59375,395.8125 L 406.53125,397.96875 L 409.0625,398.15625 L 410.8125,396.59375 L 411.8125,393.65625 L 413.375,395.03125 L 414.53125,396.40625 L 415.3125,389.15625 L 413.375,388.78125 L 412.1875,386.25 L 405.5625,384.46875 L 404.75,381.15625 L 407.125,379.59375 L 405.15625,378.21875 L 405.5625,376.46875 L 408.6875,376.65625 L 411.40625,378.03125 L 413.5625,375.5 L 411.40625,373.75 L 411.59375,371.40625 L 412.78125,367.6875 L 416.875,367.28125 L 420.1875,365.9375 L 420.53125,365.15625 L 417,364.75 L 415.75,363.6875 L 413.8125,363.5 L 411.90625,362 L 409.375,360.5 L 406.59375,360.5 L 405.53125,359.4375 L 405.34375,343.53125 L 404.6875,343.53125 L 403.84375,345 L 401.9375,346.28125 L 397.46875,345 L 394.0625,343.9375 L 392.59375,344.375 L 392.15625,343.3125 L 393.21875,340.34375 L 392.78125,337.34375 L 393.65625,335.21875 L 391.53125,332.25 L 388.5625,332.25 L 384.9375,329.28125 z ", "name" : "Drôme"}, "fr-27" : {"path": "M 211,94.5625 L 209.3125,94.96875 L 207.0625,97.375 L 202.6875,97.9375 L 203.59375,105.1875 L 205.5625,105.78125 L 205.5625,106.5625 L 203.59375,107.71875 L 205.9375,111.03125 L 207.125,115.71875 L 206.90625,117.6875 L 205.15625,118.84375 L 205.34375,120.21875 L 207.3125,121 L 207.5,122.75 L 205.9375,127.25 L 207.5,129.21875 L 212.96875,129.40625 L 214.125,132.125 L 216.09375,134.09375 L 218.8125,135.0625 L 219.625,138 L 218.25,139.9375 L 221.09375,141.84375 L 223.90625,139.15625 L 226.625,139.15625 L 233.6875,135.46875 L 236,136.4375 L 240.90625,136.4375 L 242.0625,135.0625 L 242.0625,132.125 L 245.96875,130.1875 L 245.96875,127.0625 L 247.03125,126.1875 L 246.9375,125.3125 L 247.9375,124.3125 L 246.1875,123.9375 L 246.1875,122.375 L 245.1875,120.8125 L 245.96875,119.84375 L 251.4375,118.28125 L 252.8125,115.9375 L 254,111.625 L 255.4375,109.84375 L 255.75,107.53125 L 257.5,108.5 L 258.875,108.125 L 257.875,106.5625 L 257.3125,102.0625 L 255.5625,100.5 L 255.59375,100.375 L 252.5,100.03125 L 247.3125,97.375 L 242.8125,97.5 L 240.4375,99.59375 L 239.15625,103.25 L 234.125,103.8125 L 229.34375,105.21875 L 231.03125,106.34375 L 230.34375,108.03125 L 228.09375,108.03125 L 226.84375,105.34375 L 225.4375,105.34375 L 223.1875,103.65625 L 226.28125,102.6875 L 221.5,99.3125 L 216.75,99.59375 L 215.625,97.65625 L 212.9375,97.9375 L 211,94.5625 z ", "name" : "Eure"}, "fr-28" : {"path": "M 247.15625,126.09375 L 245.96875,127.0625 L 245.96875,130.1875 L 242.0625,132.125 L 242.0625,135.0625 L 240.90625,136.4375 L 236,136.4375 L 233.6875,135.46875 L 226.625,139.15625 L 223.90625,139.15625 L 221.09375,141.84375 L 221.75,142.28125 L 221.9375,145.625 L 226.0625,149.125 L 226.4375,156.34375 L 224.5,158.6875 L 221.5625,159.28125 L 218.625,161.03125 L 219.03125,162.59375 L 220.375,164.375 L 220.375,169 L 220.78125,169.0625 L 223.5,171 L 222.5,172.25 L 224.4375,173.21875 L 227.53125,172.65625 L 229.34375,172.65625 L 229.21875,173.5 L 227.53125,174.46875 L 228.65625,175.3125 L 231.46875,175.3125 L 232.4375,177.5625 L 234.125,178.53125 L 235.375,181.34375 L 239.71875,182.46875 L 242.40625,182.1875 L 244.78125,179.9375 L 246.90625,180.53125 L 247.4375,179.375 L 247.3125,178.125 L 248.4375,177.28125 L 250.25,178.40625 L 251.375,177.5625 L 251.375,176.03125 L 252.90625,175.03125 L 254.3125,175.59375 L 255.5625,177 L 257.8125,175.75 L 260.1875,175.75 L 261.875,173.90625 L 262.875,170.28125 L 264.40625,170 L 264,166.34375 L 265.8125,164.8125 L 265.25,163.6875 L 265.46875,163.3125 L 264.9375,163.375 L 264.53125,158.125 L 264.125,157.53125 L 263.75,155 L 259.65625,154.21875 L 257.875,152.0625 L 257.3125,147.75 L 254.96875,147.375 L 254.5625,145.21875 L 251.84375,143.28125 L 250.46875,139.9375 L 251.84375,137.59375 L 250.46875,136.03125 L 250.46875,134.09375 L 251.25,131.9375 L 249.6875,130.375 L 249.09375,128.03125 L 247.15625,126.09375 z ", "name" : "Eure et Loir"}, "fr-29" : {"path": "M 40.65625,129.0625 L 38.53125,131.40625 L 36.1875,130.4375 L 31.875,130.84375 L 31.09375,132.78125 L 28.5625,133.375 L 28.15625,131.21875 L 23.6875,131.8125 L 23.6875,133.1875 L 20.5625,133.375 L 19.1875,132.40625 L 17.625,133.1875 L 17.21875,135.53125 L 11.96875,135.71875 L 9.21875,139.03125 L 11.5625,140.78125 L 8.4375,143.34375 L 9.40625,145.09375 L 8.625,149.375 L 11.75,149.78125 L 12.9375,148.59375 L 13.53125,149.375 L 20.9375,148.40625 L 25.8125,144.90625 L 21.53125,149 L 21.90625,150.9375 L 25.8125,149.1875 L 25.03125,151.9375 L 29.34375,152.125 L 29.15625,153.28125 L 24.46875,153.09375 L 20.75,152.125 L 16.25,149.96875 L 13.53125,153.09375 L 17.03125,154.28125 L 16.84375,159.53125 L 17.8125,158.75 L 19.96875,155.4375 L 24.0625,157.78125 L 26.03125,158.1875 L 26.8125,161.3125 L 25.625,163.4375 L 23.09375,163.25 L 20.75,163.25 L 16.84375,163.84375 L 10.1875,164.21875 L 8.84375,166 L 10.78125,167.15625 L 12.9375,166.96875 L 14.6875,168.53125 L 17.21875,168.34375 L 21.34375,173.03125 L 22.3125,178.09375 L 20.9375,180.84375 L 25.03125,181.625 L 29.53125,181.40625 L 30.5,179.65625 L 28.75,177.3125 L 30.5,178.09375 L 32.28125,177.90625 L 35.40625,179.65625 L 37.34375,179.28125 L 37.34375,175.9375 L 38.125,179.28125 L 40.65625,183.375 L 46.125,183.75 L 46.34375,182.59375 L 47.6875,184.53125 L 51.03125,185.125 L 53.5625,185.125 L 53.71875,185.34375 L 54.65625,181.5 L 56.9375,181.5 L 58.0625,179.71875 L 59.5,179.71875 L 59.65625,176.84375 L 60.46875,175.875 L 58.875,173.75 L 57.90625,174.90625 L 55.46875,172.96875 L 50.46875,172.15625 L 49.65625,169.25 L 48.21875,165.53125 L 48.0625,164.09375 L 50.46875,162.15625 L 52.75,162.15625 L 56,160.59375 L 55.3125,158.125 L 56.28125,157.15625 L 55.96875,151.5 L 54.5,149.5625 L 54.5,147.15625 L 56.78125,146.5 L 54.34375,145.6875 L 54.1875,143.78125 L 55.3125,142.96875 L 56.9375,141.34375 L 55.15625,140.21875 L 55.3125,138.125 L 52.90625,137.96875 L 54.03125,132.71875 L 50.8125,130.84375 L 45.34375,131.03125 L 45.34375,134.9375 L 43.78125,134.9375 L 43.40625,133.1875 L 41.0625,133.5625 L 40.65625,129.0625 z ", "name" : "Finistère"}, "fr-30" : {"path": "M 346.1875,381.03125 L 345.21875,382.90625 L 344,383.96875 L 341.6875,384.34375 L 344.5,387.34375 L 344.5,391.40625 L 345.75,391.75 L 344.34375,393.34375 L 344.34375,396.34375 L 342.03125,399.875 L 336.90625,399.34375 L 333.90625,396.53125 L 331.78125,397.0625 L 332.5,398.8125 L 331.625,400.0625 L 326.46875,401.125 L 320.4375,397.09375 L 319.28125,398.125 L 319.28125,400.90625 L 317.0625,401.4375 L 317.625,403.65625 L 320.375,404.21875 L 323.40625,404.21875 L 324.25,408.0625 L 320.65625,409.71875 L 320.65625,411.46875 L 323.46875,412.4375 L 323.46875,414.03125 L 324.71875,414.75 L 325.78125,413.84375 L 327.1875,413.84375 L 327.90625,415.4375 L 330.03125,415.4375 L 331.09375,411.71875 L 332.84375,411.71875 L 335.5,408.375 L 338.6875,408.71875 L 339.21875,413.3125 L 340.4375,414.75 L 342.40625,413.6875 L 345.75,415.4375 L 347,417.5625 L 352.8125,421.09375 L 354.9375,426.0625 L 354.9375,428.6875 L 351.21875,430.8125 L 348.8125,432.96875 L 351.8125,433.1875 L 351.8125,437.09375 L 356.28125,436.875 L 358.6875,437 L 360.4375,432.9375 L 366.78125,429.0625 L 365.40625,427.125 L 367.0625,422.71875 L 372.84375,423.53125 L 374.25,413.03125 L 381.96875,408.625 L 381.96875,406.125 L 376.15625,400.34375 L 376.15625,395.90625 L 372.84375,390.40625 L 365.9375,386.53125 L 365.40625,389.5625 L 362.625,389.84375 L 361.8125,386.8125 L 359.03125,387.34375 L 358.5,391.21875 L 356.28125,390.40625 L 351.59375,387.34375 L 349.375,388.46875 L 349.375,382.9375 L 346.1875,381.03125 z ", "name" : "Gard"}, "fr-31" : {"path": "M 245,412.4375 L 242.15625,413.5 L 241.28125,414.90625 L 240.21875,413.6875 L 238.28125,413.5 L 237.90625,415.28125 L 236.6875,415.78125 L 238.4375,416.6875 L 237.21875,418.625 L 232.78125,419.875 L 230.84375,417.5625 L 229.09375,417.5625 L 227.65625,418.4375 L 222.53125,418.4375 L 222,418.65625 L 222.53125,420.5625 L 225.53125,423.5625 L 225.375,425.15625 L 227.65625,427.46875 L 229.09375,427.46875 L 229.78125,429.21875 L 231.5625,429.40625 L 232.09375,431 L 230.3125,431.71875 L 226.59375,433.3125 L 224.84375,437.375 L 223.4375,441.59375 L 222.53125,442.84375 L 219.71875,440.90625 L 213.15625,440.375 L 209.625,444.96875 L 207.6875,446.03125 L 206.4375,447.78125 L 205.03125,449.90625 L 205.03125,451.15625 L 202.75,452.03125 L 200.96875,455.03125 L 200.78125,456.625 L 203.96875,458.9375 L 204.5,461.21875 L 203.4375,463 L 205.5625,462.28125 L 206.625,463.1875 L 207.5,466.875 L 205.03125,468.3125 L 205.21875,470.25 L 203.96875,471.46875 L 202.21875,470.59375 L 200.25,470.59375 L 200.5,481.09375 L 208.4375,481.625 L 208.84375,472.03125 L 211.5625,472.4375 L 215.59375,474.78125 L 217.25,473.25 L 216.53125,472.1875 L 216.53125,468.65625 L 218.28125,466.53125 L 222.90625,465.28125 L 223.59375,462.65625 L 222.53125,461.9375 L 222.375,458.5625 L 226.4375,456.09375 L 228.71875,455.9375 L 231.03125,456.625 L 232.96875,458.40625 L 234.21875,458.5625 L 235.28125,456.8125 L 234.375,455.5625 L 232.78125,455.03125 L 232.625,454.5 L 233.84375,452.75 L 238.09375,452.375 L 238.625,451.34375 L 237.90625,450.09375 L 235.4375,448.3125 L 235.96875,447.25 L 237.21875,446.375 L 238.4375,446.71875 L 240.40625,449.375 L 240.5625,451.15625 L 243.9375,451.5 L 244.625,449.90625 L 243.03125,447.96875 L 244.09375,448.3125 L 248,450.09375 L 250.125,449.75 L 251.6875,449.09375 L 251.3125,448.6875 L 253.8125,447.5625 L 254.34375,444.53125 L 257.40625,443.15625 L 256.5625,441.21875 L 259.34375,438.71875 L 260.71875,441.21875 L 264.84375,439.84375 L 265.625,439.71875 L 265.6875,438.4375 L 265.6875,435.9375 L 263.5625,436.3125 L 260.90625,435.59375 L 258.59375,432.78125 L 257.71875,431.53125 L 253.125,429.59375 L 252.0625,428 L 253.46875,427.46875 L 253.46875,425.53125 L 252.0625,423.9375 L 250.28125,421.09375 L 250.125,418.625 L 249.59375,418.28125 L 247.46875,415.78125 L 246.59375,413.15625 L 245,412.4375 z ", "name" : "Haute Garonne"}, "fr-32" : {"path": "M 207.875,401.875 L 202.03125,402.4375 L 200.46875,405.1875 L 196.9375,405.5625 L 193.625,406.15625 L 192.25,404.21875 L 189.125,407.34375 L 186.8125,405.375 L 185.4375,408.3125 L 185.625,410.84375 L 183.46875,411.4375 L 182.5,410.0625 L 181.53125,407.125 L 178.78125,409.46875 L 176.84375,408.6875 L 174.6875,409.09375 L 172.75,411.4375 L 175.0625,415.34375 L 173.5,416.90625 L 174.09375,420.21875 L 172.15625,422.75 L 170.78125,426.46875 L 172.34375,429.21875 L 177.28125,429.5625 L 179.21875,428.53125 L 182.21875,428.53125 L 182.0625,431.875 L 184.34375,433.125 L 186.65625,433.46875 L 187.71875,436.3125 L 188.25,436.84375 L 187.90625,438.59375 L 187.1875,439.3125 L 189.3125,440.71875 L 189.46875,442.3125 L 192.125,442.3125 L 192.84375,441.59375 L 195.125,441.59375 L 195.84375,443.1875 L 198.3125,443.1875 L 199.03125,444.625 L 203.8125,444.625 L 207.375,446.46875 L 207.6875,446.03125 L 209.625,444.96875 L 213.15625,440.375 L 219.71875,440.90625 L 222.53125,442.84375 L 223.4375,441.59375 L 224.84375,437.375 L 226.59375,433.3125 L 230.3125,431.71875 L 232.09375,431 L 231.5625,429.40625 L 229.78125,429.21875 L 229.09375,427.46875 L 227.65625,427.46875 L 225.375,425.15625 L 225.53125,423.5625 L 222.53125,420.5625 L 222,418.65625 L 220.0625,419.5 L 219.53125,418.4375 L 220.78125,416.5 L 219.34375,415.09375 L 219.34375,412.625 L 218.125,411.375 L 214.21875,411.1875 L 214.21875,408.90625 L 216.34375,407.3125 L 216.34375,405.53125 L 218.65625,404.46875 L 217.40625,403.78125 L 216,404.46875 L 213.15625,404.46875 L 212.28125,403.65625 L 211.8125,403.8125 L 210.8125,404.78125 L 207.875,401.875 z ", "name" : "Gers"}, "fr-33" : {"path": "M 141.25,315.21875 L 138.125,319.90625 L 137.15625,336.3125 L 134.625,352.90625 L 132.84375,365.78125 L 132.65625,369.125 L 134.03125,364.625 L 136.75,361.09375 L 140.65625,364.625 L 141.0625,365.78125 L 142.21875,367.34375 L 137.34375,367.5625 L 136.5625,366.375 L 134.625,367.15625 L 134.21875,370.09375 L 132.0625,373.03125 L 132.0625,377.5 L 132.03125,377.6875 L 133.625,377.625 L 139.8125,374.4375 L 143.15625,375.65625 L 143,377.96875 L 141.5625,379.71875 L 143.15625,380.78125 L 146.53125,379.375 L 148.8125,380.96875 L 150.25,380.78125 L 152.34375,379.03125 L 155.90625,378.5 L 157.125,379.5625 L 158.1875,380.4375 L 158.1875,381.5 L 157.3125,382.5625 L 160.5,383.4375 L 162.4375,384.6875 L 162.625,386.28125 L 164.375,386.4375 L 166.84375,389.09375 L 167.5625,393.53125 L 171.09375,394.75 L 174.46875,394.59375 L 174.46875,393.53125 L 174.09375,390 L 175.15625,390.34375 L 177.15625,392.78125 L 180.28125,392.28125 L 181.71875,390.875 L 181.53125,388.9375 L 180.28125,387.875 L 180.65625,385.90625 L 182.59375,385.90625 L 184.53125,384.6875 L 183.65625,382.90625 L 183.125,380.25 L 184.53125,377.78125 L 187.53125,373.1875 L 189.3125,371.0625 L 190.90625,370.53125 L 191.25,368.78125 L 189.125,368.59375 L 188.25,366.65625 L 188.9375,364.71875 L 191.4375,364.1875 L 193.1875,363.65625 L 195.25,363.375 L 195.125,363.28125 L 194.96875,359.40625 L 196.90625,358 L 194.4375,356.40625 L 191.96875,359.40625 L 185.9375,359.59375 L 185.40625,358.15625 L 183.65625,357.28125 L 185.0625,355.5 L 185.0625,353.5625 L 184.34375,352.5 L 184.34375,351.4375 L 186.125,350.375 L 186.65625,347.21875 L 187.71875,344.375 L 186.65625,342.78125 L 184.71875,342.78125 L 183.6875,341.5625 L 182.6875,343.65625 L 180.75,342.28125 L 178,343.65625 L 175.65625,343.28125 L 171.1875,338.78125 L 168.4375,338.59375 L 167.65625,332.34375 L 162.5625,331.75 L 162.375,328.8125 L 161.40625,329.78125 L 155.625,329.78125 L 155.90625,331.03125 L 157.28125,336.6875 L 157.65625,342.34375 L 156.6875,343.90625 L 155.71875,339.21875 L 152.96875,328.5 L 143,319.5 L 143.21875,315.40625 L 141.25,315.21875 z ", "name" : "Gironde"}, "fr-34" : {"path": "M 335.5,408.375 L 332.84375,411.71875 L 331.09375,411.71875 L 330.03125,415.4375 L 327.90625,415.4375 L 327.1875,413.84375 L 325.78125,413.84375 L 324.71875,414.75 L 323.46875,414.03125 L 323.46875,412.4375 L 320.65625,411.46875 L 320.65625,412.5 L 317.34375,413.03125 L 315.6875,414.4375 L 316.21875,417.75 L 313.1875,417.75 L 310.15625,416.09375 L 308.5,416.09375 L 308.5,418.03125 L 308.78125,423.8125 L 305.46875,423.8125 L 303.8125,423.8125 L 302.6875,426.03125 L 295.5,428.5 L 292.75,426.59375 L 291.09375,429.0625 L 290.28125,431.8125 L 293.3125,434.59375 L 292.1875,438.1875 L 288,439.5 L 288.84375,441.78125 L 287.0625,443.90625 L 288.125,446.375 L 290.25,447.96875 L 292.71875,446.375 L 294.5,450.09375 L 298.1875,448.84375 L 298.375,445.3125 L 300.84375,445.3125 L 300.3125,443.1875 L 301.375,442.65625 L 301.75,445.65625 L 303.84375,446.90625 L 305.625,446.71875 L 307.9375,450.09375 L 310.40625,450.28125 L 311.28125,453.09375 L 313.78125,453.1875 L 313.90625,452.125 L 320.9375,449.96875 L 321.71875,448.21875 L 327.1875,448.03125 L 328.9375,445.875 L 339.5,437.46875 L 346.125,432.78125 L 348.8125,432.96875 L 351.21875,430.8125 L 354.9375,428.6875 L 354.9375,426.0625 L 352.8125,421.09375 L 347,417.5625 L 345.75,415.4375 L 342.40625,413.6875 L 340.4375,414.75 L 339.21875,413.3125 L 338.6875,408.71875 L 335.5,408.375 z ", "name" : "Hérault"}, "fr-35" : {"path": "M 116.25,135.90625 L 114.375,138.03125 L 115.46875,143.9375 L 117.09375,144.5625 L 118.0625,146.5 L 117.09375,150.0625 L 116.125,158.9375 L 113.0625,159.5625 L 111.59375,158.125 L 110.15625,160.21875 L 107.40625,161.1875 L 105.3125,165.6875 L 104.03125,167.3125 L 104.5,169.40625 L 103.6875,172.625 L 102.25,173.9375 L 102.25,175.21875 L 103.21875,175.53125 L 105.96875,175.53125 L 108.375,177 L 110,179.90625 L 108.53125,181.84375 L 109.03125,183.75 L 111.125,183.75 L 111.28125,185.6875 L 109.65625,187.625 L 107.90625,188.4375 L 109.03125,189.09375 L 109.34375,190.0625 L 107.5625,191.5 L 109.625,195.375 L 113.5625,193.28125 L 125.65625,192.6875 L 126.4375,190.53125 L 128.40625,188.59375 L 132.6875,188 L 132.875,185.84375 L 135.8125,186.25 L 137.5625,188.59375 L 141.5,189.5625 L 142.25,188 L 143.25,184.46875 L 145.78125,178.21875 L 147.15625,177.4375 L 150.46875,177.84375 L 150.46875,172.5625 L 149.09375,171.1875 L 149.09375,165.53125 L 148.5,163.59375 L 148.5,160.46875 L 150.46875,158.5 L 150.46875,154.59375 L 149.5,153.8125 L 149.6875,148.34375 L 148.125,147.5625 L 145.78125,147.5625 L 143.8125,146 L 141.6875,148.53125 L 139.9375,148.75 L 138.375,150.875 L 136.8125,150.5 L 133.46875,147.5625 L 132.3125,143.84375 L 131.71875,141.375 L 122.125,141.375 L 118.59375,139.21875 L 120.9375,136.09375 L 116.25,135.90625 z ", "name" : "Ille et Vilaine"}, "fr-36" : {"path": "M 254.71875,221.4375 L 253.46875,221.875 L 250.9375,221.71875 L 248,222.71875 L 247.3125,224.25 L 247.03125,223.6875 L 243.65625,223.84375 L 241.96875,225.25 L 240,225.53125 L 239.71875,226.5 L 241.28125,228.59375 L 240.84375,230.4375 L 239.03125,230.5625 L 239.03125,232.09375 L 237.625,233.375 L 236.09375,235.90625 L 234.6875,234.625 L 232.59375,234.21875 L 229.5,235.34375 L 228.78125,238.84375 L 227.8125,241.65625 L 226.28125,249.625 L 224.15625,251.59375 L 222.4375,251.75 L 222.9375,252.25 L 222.9375,255.96875 L 222.15625,258.3125 L 225.875,261.25 L 227.8125,263.1875 L 230.9375,263.59375 L 232.125,267.6875 L 234.25,268.84375 L 233.875,271.78125 L 232.3125,272.0625 L 232.875,272.1875 L 237.78125,272.5625 L 239.53125,270.8125 L 242.65625,273.9375 L 246.5625,269.4375 L 248.3125,270.625 L 250.65625,270.40625 L 251.4375,270.8125 L 254.96875,271 L 256.125,267.875 L 265.90625,269.0625 L 269.625,270.03125 L 271.3125,269.84375 L 271.40625,268.28125 L 273.375,266.3125 L 272.96875,264.625 L 271.84375,262.40625 L 272.25,261.5625 L 272.40625,259.03125 L 273.09375,258.1875 L 273.25,257.625 L 271.5625,256.09375 L 271,254.125 L 268.34375,252.71875 L 268.34375,251.03125 L 270.28125,249.90625 L 270.28125,248.78125 L 268.46875,247.25 L 267.90625,246.28125 L 269.3125,245.5625 L 269.1875,244.3125 L 271.40625,242.46875 L 271.28125,241.65625 L 269.46875,241.65625 L 268.34375,240.375 L 268.34375,239.6875 L 269.3125,238 L 269.3125,236.75 L 267.0625,233.78125 L 267.5,231.125 L 266.21875,230.15625 L 263.5625,230.28125 L 261.46875,231.125 L 258.65625,230.71875 L 257.25,229.59375 L 256.96875,228.75 L 259.21875,226.90625 L 259.375,224.6875 L 256.40625,223 L 254.71875,221.4375 z ", "name" : "Indre"}, "fr-37" : {"path": "M 212.1875,196.875 L 212.5625,197.75 L 206.90625,199.3125 L 205.5625,201.28125 L 203.1875,199.71875 L 204.375,203.625 L 202.21875,203.625 L 198.3125,200.875 L 196.375,204.78125 L 197.34375,205.96875 L 197.34375,207.125 L 195.375,209.6875 L 195.59375,213.96875 L 192.46875,217.6875 L 190.25,225.6875 L 190.5,225.6875 L 191.28125,228.8125 L 195,229.59375 L 195,231.9375 L 199.6875,233.3125 L 199.6875,237.03125 L 199.5,239.375 L 205.34375,239.375 L 210.4375,238.1875 L 210.03125,236.03125 L 211.59375,235.0625 L 213.15625,237.21875 L 214.53125,237.8125 L 215.6875,242.5 L 219.03125,246 L 219.40625,248.75 L 222.4375,251.75 L 224.15625,251.59375 L 226.28125,249.625 L 227.8125,241.65625 L 228.78125,238.84375 L 229.5,235.34375 L 232.59375,234.21875 L 234.6875,234.625 L 236.09375,235.90625 L 237.625,233.375 L 239.03125,232.09375 L 239.03125,230.5625 L 240.84375,230.4375 L 241.28125,228.59375 L 239.71875,226.5 L 239.96875,225.625 L 238.875,224.6875 L 235.9375,220.34375 L 232.15625,220.34375 L 231.03125,218.65625 L 231.03125,211.625 L 229.5,207.5625 L 229.21875,202.53125 L 227.25,202.375 L 225,200.6875 L 224.4375,200.6875 L 222.46875,202.09375 L 221.21875,201.25 L 220.9375,199.3125 L 222.34375,198.59375 L 222.46875,197.90625 L 221.65625,197.1875 L 212.1875,196.875 z ", "name" : "Indre et Loire"}, "fr-38" : {"path": "M 397.90625,298.6875 L 396.625,300.1875 L 395.34375,304 L 392.78125,305.28125 L 390.03125,302.71875 L 388.125,302.71875 L 387.90625,305.5 L 390.6875,307.84375 L 386.4375,313.34375 L 380.90625,314.625 L 376.65625,316.125 L 379.40625,318.875 L 380.0625,320.15625 L 375.8125,322.28125 L 375.375,328.4375 L 375.25,328.5 L 376.4375,330.96875 L 379.84375,332.03125 L 382.1875,331.1875 L 384.9375,329.28125 L 388.5625,332.25 L 391.53125,332.25 L 393.65625,335.21875 L 392.78125,337.34375 L 393.21875,340.34375 L 392.15625,343.3125 L 392.59375,344.375 L 394.0625,343.9375 L 397.46875,345 L 401.9375,346.28125 L 403.84375,345 L 404.6875,343.53125 L 405.34375,343.53125 L 405.53125,359.4375 L 406.59375,360.5 L 409.375,360.5 L 411.90625,362 L 413.8125,363.5 L 415.75,363.6875 L 417,364.75 L 420.53125,365.15625 L 420.78125,364.5625 L 419.21875,363.78125 L 419.21875,361.4375 L 424.09375,361.4375 L 425.65625,359.875 L 424.6875,358.125 L 427.21875,356.15625 L 429,356.9375 L 431.53125,354.78125 L 436,355.5625 L 437.5625,353.8125 L 441.28125,354 L 441.28125,349.71875 L 439.71875,348.9375 L 438.9375,346.40625 L 434.84375,346 L 434.25,345.03125 L 435.03125,340.9375 L 436.40625,339.75 L 435.28125,338.21875 L 433.15625,336.9375 L 431.875,338.21875 L 432.3125,336.5 L 432.3125,334.8125 L 430.59375,333.09375 L 431.46875,329.0625 L 433.375,328 L 433.15625,325.25 L 429.125,321.21875 L 427.625,321.21875 L 426.5625,322.6875 L 424.03125,319.3125 L 422.53125,319.5 L 421.25,322.28125 L 422.125,323.96875 L 421.46875,324.625 L 419.78125,323.34375 L 414.875,322.28125 L 412.5625,318.03125 L 412.5625,316.3125 L 410.21875,313.78125 L 409.96875,312.6875 L 402.15625,303.15625 L 401.28125,300.40625 L 399.59375,298.90625 L 397.90625,298.6875 z ", "name" : "Isère"}, "fr-39" : {"path": "M 401.15625,217.53125 L 401.25,218.0625 L 400.46875,218.0625 L 400.0625,221.1875 L 399.5,223.34375 L 399.875,224.71875 L 398.71875,226.28125 L 397.53125,227.84375 L 397.53125,229.40625 L 394.21875,230.96875 L 393.25,232.53125 L 393.625,233.6875 L 393.8125,234.6875 L 392.46875,235.46875 L 392.25,238 L 393.8125,238.1875 L 395.59375,241.125 L 397.75,241.125 L 398.90625,242.5 L 400.28125,242.5 L 399.875,244.0625 L 395.375,244.625 L 395.78125,246.1875 L 397.34375,247.1875 L 397.34375,249.125 L 396.75,249.71875 L 397.9375,251.28125 L 399.6875,254.40625 L 398.90625,257.71875 L 396.9375,259.09375 L 397.15625,261.8125 L 399.5,262.59375 L 400.28125,263.78125 L 398.3125,265.34375 L 393.1875,265.96875 L 395.59375,266.90625 L 399.5,272.375 L 402.03125,273.53125 L 402.03125,276.28125 L 404.96875,275.875 L 408.6875,271.78125 L 411.8125,273.34375 L 411.8125,275.6875 L 417.46875,275.6875 L 425.59375,266.75 L 425.25,266.5625 L 425.625,262.46875 L 428.5625,258.96875 L 426.59375,258.1875 L 426.78125,257 L 424.40625,256.78125 L 424.25,255.375 L 425.78125,253.84375 L 425.375,252.3125 L 424.53125,250.34375 L 428.03125,249.21875 L 429.3125,247.40625 L 429.59375,245.15625 L 426.78125,242.46875 L 424.8125,241.9375 L 420.46875,240.53125 L 420.46875,236.59375 L 420.1875,233.65625 L 416.6875,233.9375 L 411.21875,232.09375 L 412.0625,230.15625 L 413.3125,227.1875 L 413.75,225.25 L 412.34375,223.40625 L 409.8125,221.71875 L 409.53125,219.625 L 409.5625,218.4375 L 407.84375,218.375 L 406.875,219.34375 L 404.34375,219.34375 L 402.65625,217.9375 L 401.15625,217.53125 z ", "name" : "Jura"}, "fr-40" : {"path": "M 139.8125,374.4375 L 133.625,377.625 L 132.03125,377.6875 L 128.5625,396.25 L 124.0625,413.4375 L 122.6875,420.09375 L 121.53125,424.78125 L 118.625,429.78125 L 124.25,432.59375 L 129.375,432.25 L 132.375,429.59375 L 134.84375,431.53125 L 133.4375,432.9375 L 134.5,433.3125 L 135.375,432.0625 L 139.8125,432.40625 L 142.28125,430.46875 L 146.875,430.65625 L 148.65625,429.75 L 151.46875,429.75 L 152.1875,430.65625 L 154.46875,429.9375 L 156.59375,431.53125 L 159.4375,430.65625 L 163.15625,429.40625 L 163.6875,430.28125 L 169.34375,430.46875 L 172.15625,428.875 L 170.78125,426.46875 L 172.15625,422.75 L 174.09375,420.21875 L 173.5,416.90625 L 175.0625,415.34375 L 172.75,411.4375 L 174.6875,409.09375 L 176.84375,408.6875 L 178.78125,409.46875 L 181.53125,407.125 L 182.5,410.0625 L 183.46875,411.4375 L 185.625,410.84375 L 185.4375,408.3125 L 186.0625,406.9375 L 185.59375,405.71875 L 186.125,401.84375 L 188.25,399.71875 L 187.1875,398.46875 L 184.875,398.28125 L 182.21875,397.25 L 178.34375,397.59375 L 177.625,393.34375 L 175.15625,390.34375 L 174.09375,390 L 174.46875,393.53125 L 174.46875,394.59375 L 171.09375,394.75 L 167.5625,393.53125 L 166.84375,389.09375 L 164.375,386.4375 L 162.625,386.28125 L 162.4375,384.6875 L 160.5,383.4375 L 157.3125,382.5625 L 158.1875,381.5 L 158.1875,380.4375 L 157.125,379.5625 L 155.90625,378.5 L 152.34375,379.03125 L 150.25,380.78125 L 148.8125,380.96875 L 146.53125,379.375 L 143.15625,380.78125 L 141.5625,379.71875 L 143,377.96875 L 143.15625,375.65625 L 139.8125,374.4375 z ", "name" : "Landes"}, "fr-41" : {"path": "M 222.5,172.25 L 221.1875,173.9375 L 219.625,176.65625 L 221.5625,178.4375 L 221.375,182.53125 L 220.59375,185.25 L 218.625,185.25 L 218.625,188.96875 L 215.90625,192.5 L 212.96875,193.65625 L 211.59375,195.40625 L 212.1875,196.875 L 221.65625,197.1875 L 222.46875,197.90625 L 222.34375,198.59375 L 220.9375,199.3125 L 221.21875,201.25 L 222.46875,202.09375 L 224.4375,200.6875 L 225,200.6875 L 227.25,202.375 L 229.21875,202.53125 L 229.5,207.5625 L 231.03125,211.625 L 231.03125,218.65625 L 232.15625,220.34375 L 235.9375,220.34375 L 238.875,224.6875 L 239.96875,225.625 L 240,225.53125 L 241.96875,225.25 L 243.65625,223.84375 L 247.03125,223.6875 L 247.3125,224.25 L 248,222.71875 L 250.9375,221.71875 L 253.46875,221.875 L 254.71875,221.4375 L 256.40625,223 L 259.375,224.6875 L 261.875,224.53125 L 261.75,222 L 262.875,220.75 L 264,220.625 L 264.96875,221.71875 L 268.90625,221.3125 L 271.40625,219.90625 L 271.125,218.9375 L 270.4375,218.09375 L 270.5625,216.25 L 272.40625,212.90625 L 274.78125,211.90625 L 274.78125,209.8125 L 275.34375,208.5625 L 273.8125,208 L 272.8125,205.875 L 270.28125,205.1875 L 270.15625,204.34375 L 272.6875,202.25 L 275.53125,200.84375 L 273.9375,198.46875 L 266.78125,198.1875 L 265.8125,199.3125 L 263.84375,199.3125 L 263.15625,198.59375 L 260.0625,198.1875 L 259.21875,200 L 257.25,200.5625 L 255.4375,198.46875 L 255,196.0625 L 253.34375,194.65625 L 250.8125,194.375 L 248.96875,193.125 L 248.96875,191.875 L 247.875,189.1875 L 250.09375,186.96875 L 249.8125,185.84375 L 248.84375,184.71875 L 247.71875,184.71875 L 247.71875,183.71875 L 248.84375,181.78125 L 248.96875,180.65625 L 247.3125,180.65625 L 244.78125,179.9375 L 242.40625,182.1875 L 239.71875,182.46875 L 235.375,181.34375 L 234.125,178.53125 L 232.4375,177.5625 L 231.46875,175.3125 L 228.65625,175.3125 L 227.53125,174.46875 L 229.21875,173.5 L 229.34375,172.65625 L 227.53125,172.65625 L 224.4375,173.21875 L 222.5,172.25 z ", "name" : "Loir et Cher"}, "fr-42" : {"path": "M 339.53125,278.03125 L 336,278.625 L 335.4375,280.78125 L 336.8125,283.5 L 337.1875,294.625 L 332.5,294.84375 L 332.3125,296.59375 L 335.4375,299.125 L 333.6875,300.875 L 333.09375,305.1875 L 335.4375,308.3125 L 337.5625,313.375 L 342.65625,316.71875 L 344.40625,323.15625 L 340.6875,326.65625 L 341.28125,329 L 346.75,330.78125 L 351.0625,327.25 L 353.1875,327.0625 L 359.4375,329.78125 L 359.0625,333.5 L 362.1875,333.3125 L 364.65625,336.15625 L 366.46875,335.65625 L 369.84375,335.03125 L 370.71875,331.1875 L 375.375,328.4375 L 375.8125,322.28125 L 375.96875,322.1875 L 373.6875,321.84375 L 371.5625,322.6875 L 369.84375,321.625 L 371.96875,319.09375 L 371.34375,317.1875 L 364.75,316.125 L 359.21875,311.03125 L 359.21875,309.3125 L 360.5,308.25 L 360.5,306.78125 L 359.03125,305.90625 L 360.28125,304 L 360.28125,301.25 L 357.75,298.90625 L 357.75,296.5625 L 356.03125,294.875 L 356.03125,292.96875 L 355.1875,289.78125 L 356.46875,288.5 L 356.6875,284.6875 L 360.71875,284.6875 L 361.78125,283.40625 L 360.5,281.28125 L 360.5,279.375 L 359.4375,278.53125 L 358.6875,282.53125 L 356.53125,282.53125 L 354.96875,284.09375 L 353.78125,282.90625 L 347.53125,281.9375 L 345.1875,283.3125 L 343.625,283.3125 L 343.25,281.9375 L 340.3125,281.34375 L 340.125,278.21875 L 339.53125,278.03125 z ", "name" : "Loire"}, "fr-43" : {"path": "M 317.8125,326.34375 L 316.40625,327.0625 L 316.40625,328.28125 L 314.28125,328.46875 L 312.34375,330.0625 L 308.8125,330.59375 L 308,331.75 L 308.625,331.8125 L 309.5,334.3125 L 313.9375,334.3125 L 314.8125,337.46875 L 316.0625,338.71875 L 316.40625,342.4375 L 317.46875,343.84375 L 319.59375,344.03125 L 318.34375,345.09375 L 317.28125,345.4375 L 318.1875,346.3125 L 317.125,347.90625 L 319.25,349.15625 L 320.3125,350.75 L 320.3125,352.40625 L 320.78125,352.25 L 324.3125,361.25 L 329.375,359.6875 L 329.75,357.34375 L 331.71875,357.34375 L 332.5,360.0625 L 336.125,359.1875 L 340.625,364.9375 L 343.4375,360.46875 L 348.5,356.75 L 353.1875,356.75 L 354.75,351.875 L 357.875,351.65625 L 358.09375,347.96875 L 361,347.96875 L 360.4375,346.59375 L 359.65625,344.0625 L 360.8125,342.09375 L 363.5625,340.9375 L 364.71875,336.25 L 362.1875,333.3125 L 359.0625,333.5 L 359.4375,329.78125 L 353.1875,327.0625 L 351.0625,327.25 L 346.75,330.78125 L 342.8125,329.5 L 342.03125,330.25 L 339.5625,329.53125 L 337.8125,327.75 L 336.75,329.875 L 333.71875,329.71875 L 332.3125,328.46875 L 331.25,330.9375 L 329.3125,330.0625 L 328.0625,327.75 L 326.46875,327.75 L 325.0625,326.53125 L 322.9375,327.40625 L 320.46875,327.59375 L 319.0625,326.6875 L 318.1875,327.21875 L 317.8125,326.34375 z ", "name" : "Haute Loire"}, "fr-44" : {"path": "M 132.875,185.84375 L 132.6875,188 L 128.40625,188.59375 L 126.4375,190.53125 L 125.65625,192.6875 L 113.5625,193.28125 L 108.46875,196 L 108.28125,201.46875 L 102.8125,203.625 L 99.09375,205.5625 L 95.96875,205.5625 L 94.8125,204.21875 L 93.0625,205.96875 L 92.21875,206.125 L 93.21875,206.8125 L 89.5,210.125 L 90.28125,210.90625 L 91.0625,212.46875 L 89.09375,215.21875 L 91.25,216.375 L 94.96875,217.15625 L 95.34375,215.59375 L 97.5,218.34375 L 101.03125,218.34375 L 103.5625,215.59375 L 106.875,215.59375 L 103.375,217.34375 L 103.5625,219.3125 L 104.34375,221.0625 L 102.1875,223.21875 L 99.84375,223.21875 L 100.25,226.15625 L 104.53125,225.375 L 109.625,230.0625 L 109.375,230.375 L 113.0625,232.78125 L 113.875,234.71875 L 117.25,236.1875 L 119.84375,236.5 L 120.96875,239.5625 L 125,240.53125 L 127.71875,241.03125 L 129.1875,239.40625 L 127.71875,237.3125 L 127.09375,232.78125 L 128.375,231.34375 L 130.15625,231.34375 L 130.96875,233.125 L 130.46875,236.34375 L 131.59375,237.15625 L 134.5,236.1875 L 135.46875,232.96875 L 134.1875,231.65625 L 137.40625,231.65625 L 138.53125,229.5625 L 139.65625,229.71875 L 142.25,232.15625 L 144.125,232.40625 L 144.1875,230.375 L 142.5625,228.28125 L 141.125,228.28125 L 140.625,228.4375 L 139.65625,227.96875 L 140.46875,227.15625 L 140.46875,225.6875 L 142.09375,225.21875 L 143.0625,222.96875 L 142.25,222.15625 L 142.09375,219.40625 L 140,219.40625 L 137.90625,216.8125 L 137.90625,214.90625 L 140.15625,213.75 L 144.1875,212.96875 L 150.46875,213.125 L 152.40625,211.8125 L 151.75,207.78125 L 148.84375,205.0625 L 145.3125,205.53125 L 144.34375,204.71875 L 144.1875,201.84375 L 146.75,199.5625 L 144.8125,197.15625 L 143.53125,193.75 L 141.4375,192.46875 L 141.4375,190.21875 L 141.21875,189.5 L 137.5625,188.59375 L 135.8125,186.25 L 132.875,185.84375 z ", "name" : "Loire Atlantique"}, "fr-45" : {"path": "M 273.71875,160.46875 L 271.1875,162.8125 L 265.46875,163.3125 L 265.25,163.6875 L 265.8125,164.8125 L 264,166.34375 L 264.40625,170 L 262.875,170.28125 L 261.875,173.90625 L 260.1875,175.75 L 257.8125,175.75 L 255.5625,177 L 254.3125,175.59375 L 252.90625,175.03125 L 251.375,176.03125 L 251.375,177.5625 L 250.25,178.40625 L 248.4375,177.28125 L 247.3125,178.125 L 247.4375,179.375 L 246.90625,180.53125 L 247.3125,180.65625 L 248.96875,180.65625 L 248.84375,181.78125 L 247.71875,183.71875 L 247.71875,184.71875 L 248.84375,184.71875 L 249.8125,185.84375 L 250.09375,186.96875 L 247.875,189.1875 L 248.96875,191.875 L 248.96875,193.125 L 250.8125,194.375 L 253.34375,194.65625 L 255,196.0625 L 255.4375,198.46875 L 257.25,200.5625 L 259.21875,200 L 260.0625,198.1875 L 263.15625,198.59375 L 263.84375,199.3125 L 265.8125,199.3125 L 266.78125,198.1875 L 273.9375,198.46875 L 275.625,200.96875 L 277.59375,201.8125 L 279.28125,203.375 L 281.375,203.09375 L 281.9375,202.375 L 283.1875,202.375 L 284.75,204.34375 L 287.96875,204.5 L 288.8125,205.59375 L 291.0625,208.6875 L 292.03125,209.53125 L 293.28125,209.40625 L 293.4375,206.59375 L 294,206.3125 L 294.84375,206.4375 L 296.25,208.28125 L 297.21875,208.6875 L 299.21875,207.875 L 298.90625,207.53125 L 298.71875,205.5625 L 302.625,204.40625 L 302.03125,202.25 L 301.4375,199.125 L 298.90625,195.625 L 298.3125,193.46875 L 302.21875,193.46875 L 304.96875,191.5 L 305.34375,188.59375 L 303.59375,186.625 L 308.6875,182.34375 L 308.6875,178.8125 L 306.125,176.09375 L 305.15625,172.96875 L 301.625,169.625 L 296.75,172.375 L 296.375,170.8125 L 294.21875,170.625 L 293.625,172.1875 L 291.6875,172.5625 L 286.40625,172.375 L 284.25,173.75 L 282.5,172.1875 L 285.625,170.03125 L 285.4375,166.71875 L 283.09375,165.53125 L 281.125,162.59375 L 275.875,162.21875 L 273.71875,160.46875 z ", "name" : "Loiret"}, "fr-46" : {"path": "M 247.46875,347.3125 L 243.3125,349.25 L 242.71875,349.34375 L 242.84375,349.53125 L 241.5,350.6875 L 241.5,352.84375 L 243.25,354.78125 L 241.5,357.90625 L 239.9375,358.90625 L 239.71875,360.84375 L 236.40625,361.25 L 236.59375,363.375 L 237.78125,363.78125 L 235.03125,367.6875 L 230.75,368.0625 L 230.5625,371 L 228.78125,372.75 L 227.8125,375.3125 L 223.90625,375.5 L 225.46875,381.34375 L 227.125,384.96875 L 229.625,384.875 L 229.78125,385.90625 L 228.375,387.5 L 229.4375,389.625 L 231.03125,389.625 L 232.78125,391.5625 L 234.375,391.5625 L 235.625,390.15625 L 235.96875,390.53125 L 235.96875,392.28125 L 236.5,394.59375 L 240.21875,394.75 L 243.21875,391.5625 L 244.8125,391.40625 L 245.34375,392.28125 L 246.21875,394.21875 L 247.65625,394.21875 L 248.1875,390.6875 L 251.1875,391.0625 L 252.9375,388.9375 L 255.78125,389.625 L 260.03125,387.6875 L 260.0625,388.0625 L 261.4375,386.625 L 259.65625,383.96875 L 258.96875,380.4375 L 261.25,378.5 L 262.3125,378.84375 L 265.5,375.3125 L 267.25,375.5 L 267.96875,374.59375 L 271.5,374.59375 L 272.75,373.1875 L 273.09375,372.09375 L 271.5,371.875 L 272.59375,368.5625 L 270.09375,367.46875 L 272.59375,361.65625 L 269.28125,359.1875 L 268.15625,352 L 265.125,351.1875 L 262.90625,353.375 L 261.8125,351.4375 L 258.5,354.75 L 256.28125,355.03125 L 252.4375,349.53125 L 247.46875,347.3125 z ", "name" : "Lot"}, "fr-47" : {"path": "M 195.25,363.375 L 193.1875,363.65625 L 191.4375,364.1875 L 188.9375,364.71875 L 188.25,366.65625 L 189.125,368.59375 L 191.25,368.78125 L 190.90625,370.53125 L 189.3125,371.0625 L 187.53125,373.1875 L 184.53125,377.78125 L 183.125,380.25 L 183.65625,382.90625 L 184.53125,384.6875 L 182.59375,385.90625 L 180.65625,385.90625 L 180.28125,387.875 L 181.53125,388.9375 L 181.71875,390.875 L 180.28125,392.28125 L 177.15625,392.78125 L 177.625,393.34375 L 178.34375,397.59375 L 182.21875,397.25 L 184.875,398.28125 L 187.1875,398.46875 L 188.25,399.71875 L 186.125,401.84375 L 185.59375,405.71875 L 186.0625,406.9375 L 186.8125,405.375 L 189.125,407.34375 L 192.25,404.21875 L 193.625,406.15625 L 196.9375,405.5625 L 200.46875,405.1875 L 202.03125,402.4375 L 207.875,401.875 L 210.8125,404.78125 L 211.8125,403.8125 L 213.75,403.21875 L 212.96875,400.5 L 215.90625,399.71875 L 219.625,398.9375 L 218.8125,396.59375 L 220,395.21875 L 220.96875,391.5 L 218.8125,389.15625 L 220.1875,384.6875 L 223.125,386.4375 L 227.4375,385.65625 L 225.46875,381.34375 L 223.90625,375.5 L 227.8125,375.3125 L 228.59375,373.25 L 225.53125,371.96875 L 224.125,370.375 L 222,370.375 L 219.53125,372.65625 L 217.59375,372.5 L 217.0625,371.25 L 218.46875,370.375 L 218.46875,369.125 L 216.875,367.375 L 215.46875,367.1875 L 214.59375,368.25 L 210.6875,368.25 L 210.34375,366.84375 L 209.09375,366.65625 L 206.96875,368.40625 L 203.09375,368.40625 L 201.3125,370 L 198.3125,368.9375 L 197.96875,365.25 L 195.25,363.375 z ", "name" : "Lot et Garonne"}, "fr-48" : {"path": "M 320.78125,352.25 L 315.3125,354.21875 L 313.75,357.71875 L 310.25,355.375 L 307.5,363.96875 L 304.6875,370.4375 L 308.78125,375.46875 L 308.5,379.34375 L 311.25,381.28125 L 311.25,385.96875 L 312.09375,392.59375 L 315.40625,394 L 315.125,396.1875 L 319.8125,395.375 L 321.46875,396.1875 L 320.4375,397.09375 L 326.46875,401.125 L 331.625,400.0625 L 332.5,398.8125 L 331.78125,397.0625 L 333.90625,396.53125 L 336.90625,399.34375 L 342.03125,399.875 L 344.34375,396.34375 L 344.34375,393.34375 L 345.75,391.75 L 344.5,391.40625 L 344.5,387.34375 L 341.6875,384.34375 L 344,383.96875 L 345.21875,382.90625 L 346.1875,381.03125 L 345.21875,380.4375 L 345.78125,376.3125 L 342.46875,372.71875 L 341.09375,365.53125 L 336.125,359.1875 L 332.5,360.0625 L 331.71875,357.34375 L 329.75,357.34375 L 329.375,359.6875 L 324.3125,361.25 L 320.78125,352.25 z ", "name" : "Lozère"}, "fr-49" : {"path": "M 141.9375,188.6875 L 141.5,189.5625 L 141.21875,189.5 L 141.4375,190.21875 L 141.4375,192.46875 L 143.53125,193.75 L 144.8125,197.15625 L 146.75,199.5625 L 144.1875,201.84375 L 144.34375,204.71875 L 145.3125,205.53125 L 148.84375,205.0625 L 151.75,207.78125 L 152.40625,211.8125 L 150.46875,213.125 L 144.1875,212.96875 L 140.15625,213.75 L 137.90625,214.90625 L 137.90625,216.8125 L 140,219.40625 L 142.09375,219.40625 L 142.25,222.15625 L 143.0625,222.96875 L 142.09375,225.21875 L 140.46875,225.6875 L 140.46875,227.15625 L 139.65625,227.96875 L 140.625,228.4375 L 141.125,228.28125 L 142.5625,228.28125 L 144.1875,230.375 L 144.125,232.40625 L 144.5,232.46875 L 146.125,233.4375 L 151.125,233.4375 L 153.78125,235.6875 L 157.5,234.09375 L 163.5625,235.46875 L 166.28125,233.6875 L 166.28125,230.96875 L 171.5625,230.5625 L 176.4375,229.59375 L 181.71875,229.40625 L 182.3125,230.78125 L 183.6875,231.9375 L 185.03125,229.59375 L 188.75,225.6875 L 190.25,225.6875 L 192.46875,217.6875 L 195.59375,213.96875 L 195.375,209.6875 L 197.34375,207.125 L 197.34375,205.96875 L 196.375,204.78125 L 197,203.5 L 194.34375,202.46875 L 186.125,197.46875 L 178.53125,195.21875 L 175.625,195.0625 L 175.625,193.125 L 173.84375,191.65625 L 171.9375,191.65625 L 168.375,190.53125 L 166.125,192.78125 L 160.96875,192.96875 L 158.6875,191.65625 L 152.90625,189.90625 L 151.59375,191.5 L 148.375,189.40625 L 145.46875,189.40625 L 141.9375,188.6875 z ", "name" : "Maine et Loire"}, "fr-50" : {"path": "M 119.5625,77.5 L 118.78125,79.46875 L 122.90625,82.78125 L 122.90625,87.09375 L 121.34375,89.03125 L 122.3125,90 L 122.90625,90.40625 L 122.5,94.125 L 123.875,97.25 L 128.375,102.3125 L 129.34375,106.8125 L 130.3125,108.1875 L 130.3125,115.21875 L 132.65625,119.90625 L 132.65625,125.375 L 130.125,130.4375 L 132.84375,137.46875 L 137.15625,138.4375 L 137.53125,140.40625 L 135.40625,141.375 L 131.71875,141.375 L 132.3125,143.84375 L 133.46875,147.5625 L 136.8125,150.5 L 138.375,150.875 L 139.9375,148.75 L 141.6875,148.53125 L 143.8125,146 L 145.78125,147.5625 L 148.125,147.5625 L 149.6875,148.34375 L 149.6875,148.71875 L 153,149.125 L 154.96875,147.5625 L 157.875,148.75 L 157.9375,148.875 L 161.28125,146.03125 L 162.40625,142.3125 L 162.09375,140.6875 L 162.5625,138.78125 L 160.625,136.84375 L 155.625,133.59375 L 151.9375,133.28125 L 148.21875,128.59375 L 151.28125,127.46875 L 152.5625,125.0625 L 150.96875,123.59375 L 152.40625,122.3125 L 153.84375,123.4375 L 156.4375,121.84375 L 158.0625,119.25 L 158.6875,116.6875 L 157.5625,114.40625 L 158.21875,113.59375 L 156.75,111.1875 L 158.375,109.09375 L 157.09375,107.46875 L 155.46875,109.5625 L 153.21875,108.28125 L 149.5,104.5625 L 149.34375,102.96875 L 150.46875,101.84375 L 150.125,99.6875 L 148.28125,100.15625 L 148.09375,95.46875 L 143,89.4375 L 144.5625,85.53125 L 146.71875,85.53125 L 144.78125,80.25 L 136.375,79.84375 L 131.875,82.96875 L 126.8125,79.65625 L 119.5625,77.5 z ", "name" : "Manche"}, "fr-51" : {"path": "M 337.375,99.3125 L 335.03125,100.3125 L 335.4375,102.25 L 331.3125,102.25 L 327.625,105 L 327.625,110.25 L 330.34375,112.03125 L 331.125,113.78125 L 326.625,114.15625 L 326.0625,115.9375 L 327.8125,117.09375 L 327.03125,118.28125 L 325.28125,119.0625 L 325.65625,120.40625 L 328.1875,120.40625 L 329.1875,121.78125 L 327.4375,122.96875 L 325.875,127.0625 L 322.9375,128.4375 L 321.9375,130.5625 L 320.96875,131.75 L 321.1875,132.90625 L 319.625,133.90625 L 319.21875,136.625 L 320.78125,137.59375 L 321.5625,140.53125 L 320.59375,142.28125 L 321.1875,143.65625 L 324.09375,143.46875 L 324.09375,144.4375 L 324.9375,144.25 L 328.3125,147.8125 L 333.0625,147.03125 L 338.625,143.25 L 341.96875,143.25 L 345.34375,140.875 L 349.3125,138.6875 L 352.28125,138.90625 L 352.6875,142.875 L 356.25,148.21875 L 360.21875,148.21875 L 365.78125,147.03125 L 369.75,148.40625 L 373.90625,145.4375 L 374.5,140.5 L 379.09375,139.71875 L 379,136.625 L 375.28125,133.6875 L 374.875,132.125 L 376.25,129.78125 L 375.0625,128.8125 L 376.25,125.875 L 378.40625,124.90625 L 379.96875,120.03125 L 376.84375,120.21875 L 378.59375,118.28125 L 377.21875,113.96875 L 375.875,111.03125 L 377.625,109.46875 L 376.625,109.28125 L 376.375,107.9375 C 376.33461,107.94351 376.09375,107.96875 376.09375,107.96875 L 374.3125,106.375 L 372.3125,108.375 L 371.71875,108.375 L 370.9375,107.375 L 366.1875,107.1875 L 365.375,108.375 L 364,108.375 L 362.8125,105.78125 L 360.21875,105.78125 L 359.625,106.375 L 357.0625,106.1875 L 353.875,103.8125 L 351.6875,103.21875 L 350.90625,102.03125 L 346.75,99.4375 L 342,99.3125 L 342.0625,101.09375 L 340.6875,101.46875 L 337.375,99.3125 z ", "name" : "Marne"}, "fr-52" : {"path": "M 379.09375,139.71875 L 374.5,140.5 L 373.90625,145.4375 L 369.75,148.40625 L 367.59375,147.65625 L 366.5625,149.8125 L 366.375,152.78125 L 369.9375,157.75 L 373.3125,158.9375 L 374.09375,163.09375 L 374.3125,170.21875 L 373.125,172 L 369.75,172.21875 L 367.5625,174.1875 L 369.15625,175.1875 L 369.8125,177.6875 L 372.15625,179 L 375.65625,182.71875 L 380.15625,188.78125 L 377.625,191.5 L 379.375,192.6875 L 379.5625,196 L 382.6875,195.8125 L 383.46875,197.375 L 385.8125,197.5625 L 387.5625,196.59375 L 390.6875,200.5 L 391.09375,201.46875 L 395.375,200.5 L 396.1875,198.53125 L 396.375,198.5625 L 396.375,196.59375 L 399.09375,195.40625 L 402.21875,196.59375 L 405.15625,195.40625 L 406.90625,195.40625 L 407.5,191.5 L 408.46875,190.34375 L 406.71875,190.15625 L 406.53125,187.8125 L 409.25,187.21875 L 409.4375,185.65625 L 412.1875,185.65625 L 412.1875,183.125 L 414.34375,182.34375 L 413.75,180.78125 L 414.34375,180.40625 L 412.5625,179 L 410.4375,179.78125 L 410.4375,175.6875 L 404.96875,172.96875 L 406.125,167.6875 L 407.875,166.5 L 407.3125,164.75 L 404.75,164.375 L 404.1875,161.8125 L 401.84375,161.8125 L 399.09375,158.125 L 395.96875,157.90625 L 394.625,155.96875 L 396.375,154.21875 L 392.25,149.71875 L 390.5,149.125 L 385.8125,146.78125 L 383.28125,144.0625 L 379.1875,143.46875 L 379.09375,139.71875 z ", "name" : "Haute Marne"}, "fr-53" : {"path": "M 182.5,146.40625 L 180.5625,146.59375 L 179.75,148.53125 L 176.84375,149.71875 L 171.5625,148.9375 L 166.28125,152.0625 L 164.34375,150.6875 L 161.40625,152.65625 L 159.25,151.09375 L 157.875,148.75 L 154.96875,147.5625 L 153,149.125 L 149.6875,148.71875 L 149.5,153.8125 L 150.46875,154.59375 L 150.46875,158.5 L 148.5,160.46875 L 148.5,163.59375 L 149.09375,165.53125 L 149.09375,171.1875 L 150.46875,172.5625 L 150.46875,177.84375 L 147.15625,177.4375 L 145.78125,178.21875 L 143.25,184.46875 L 142.25,188 L 141.9375,188.6875 L 145.46875,189.40625 L 148.375,189.40625 L 151.59375,191.5 L 152.90625,189.90625 L 158.6875,191.65625 L 160.96875,192.96875 L 166.125,192.78125 L 168.375,190.53125 L 171.9375,191.65625 L 173.84375,191.65625 L 173.875,191.6875 L 174.5,190.21875 L 174.5,184.40625 L 173.84375,183.4375 L 174.1875,182.46875 L 176.9375,182.3125 L 178.21875,181.1875 L 178.375,180.21875 L 176.9375,176.65625 L 177.40625,175.21875 L 180.625,174.90625 L 180.3125,174.09375 L 181.125,172.15625 L 180.46875,170.6875 L 181.28125,169.09375 L 184.1875,166.65625 L 183.84375,164.09375 L 184.34375,159.90625 L 185.46875,157.96875 L 189.125,156.78125 L 188.5625,156.75 L 187.5625,153.21875 L 185.03125,152.25 L 184.25,147.96875 L 182.5,146.40625 z ", "name" : "Mayenne"}, "fr-54" : {"path": "M 401.59375,88.4375 L 399.25,90.59375 L 395.9375,90.78125 L 394.78125,91.96875 L 394.53125,91.96875 L 394.40625,94.3125 L 395.5625,96.21875 L 395.15625,97.375 L 394.78125,98.71875 L 394.96875,99.46875 L 395.9375,98.71875 L 396.875,97 L 398.8125,96.8125 L 402.0625,95.84375 L 403.78125,97.1875 L 404.53125,98.71875 L 405.125,100.4375 L 405.125,102.15625 L 406.0625,102.9375 L 406.0625,104.25 L 405.125,105.40625 L 404.9375,107.90625 L 405.6875,109.0625 L 405.875,110.59375 L 406.0625,113.0625 L 407.21875,114.03125 L 408.9375,114.78125 L 408.1875,116.3125 L 410.28125,118.25 L 408.375,120.34375 L 408.75,121.6875 L 410.65625,122.625 L 410.65625,123.59375 L 408.375,123.59375 L 407.40625,124.9375 L 407.59375,125.90625 L 409.125,127.4375 L 407.8125,131.0625 L 406.28125,134.5 L 407.03125,136.625 L 407.03125,140.0625 L 407.8125,141.78125 L 408.9375,141.78125 L 409.53125,142.75 L 407.8125,142.75 L 406.28125,143.5 L 406.28125,144.65625 L 408.1875,146.375 L 408.1875,149.0625 L 410.09375,148.46875 L 412.96875,148.65625 L 413.15625,151.71875 L 414.3125,152.125 L 412.96875,153.0625 L 412.78125,154.03125 L 414.875,154.40625 L 416.21875,156.125 L 422.53125,155.75 L 423.875,153.25 L 426.75,153.25 L 427.90625,152.3125 L 429.8125,153.46875 L 431.53125,152.875 L 434.03125,153.0625 L 436.125,152.3125 L 438.21875,150.78125 L 439.375,151.9375 L 439.5625,149.25 L 441.09375,148.65625 L 441.875,151.15625 L 444.15625,151.34375 L 446.46875,151.9375 L 447.40625,152.125 L 450.6875,150.59375 L 452.40625,149.4375 L 453.9375,147.53125 L 457,146.375 L 459,145.9375 L 457.875,144.84375 L 460.03125,145.03125 L 460.4375,144.625 L 458.125,143.875 L 454.875,141.59375 L 452,139.46875 L 448.5625,139.46875 L 444.9375,137.375 L 442.0625,137.1875 L 442.0625,136.40625 L 437.65625,133.75 L 432.6875,131.625 L 430.1875,131.625 L 429.25,128.96875 L 425.40625,124.15625 L 421.59375,124.15625 L 420.0625,122.0625 L 417,122.0625 L 417.1875,119 L 413.15625,116.5 L 413.34375,114.03125 L 415.46875,114.03125 L 415.46875,111.90625 L 416.21875,110.375 L 414.5,108.65625 L 416.03125,106 L 414.875,102.9375 L 413.9375,102.15625 L 411.4375,96.8125 L 412.40625,95.28125 C 412.40625,95.28125 412.32712,94.02401 412.25,92.34375 L 409.625,92.34375 L 406.09375,88.4375 L 401.59375,88.4375 z ", "name" : "Meurthe et Moselle"}, "fr-55" : {"path": "M 390.125,86.53125 L 388.75,88.78125 L 387,89.9375 L 385.625,88.59375 L 382.6875,88.59375 L 382.125,87.8125 L 380.15625,91.5 L 379.375,92.875 L 381.71875,95.8125 L 380.9375,99.71875 L 378.78125,101.46875 L 379,102.84375 L 379.75,104.78125 L 378.59375,105.96875 L 376.25,107.125 L 376.625,109.28125 L 377.625,109.46875 L 375.875,111.03125 L 377.21875,113.96875 L 378.59375,118.28125 L 376.84375,120.21875 L 379.96875,120.03125 L 378.40625,124.90625 L 376.25,125.875 L 375.0625,128.8125 L 376.25,129.78125 L 374.875,132.125 L 375.28125,133.6875 L 379,136.625 L 379.1875,143.46875 L 383.28125,144.0625 L 385.8125,146.78125 L 390.5,149.125 L 392.25,149.71875 L 396.375,154.21875 L 395.9375,154.65625 L 399.375,154.21875 L 399.375,152.5 L 403.21875,151.71875 L 403.21875,150.40625 L 404.15625,150.40625 L 404.15625,151.53125 L 407.21875,150.59375 L 408.40625,149 L 408.1875,149.0625 L 408.1875,146.375 L 406.28125,144.65625 L 406.28125,143.5 L 407.8125,142.75 L 409.53125,142.75 L 408.9375,141.78125 L 407.8125,141.78125 L 407.03125,140.0625 L 407.03125,136.625 L 406.28125,134.5 L 407.8125,131.0625 L 409.125,127.4375 L 407.59375,125.90625 L 407.40625,124.9375 L 408.375,123.59375 L 410.65625,123.59375 L 410.65625,122.625 L 408.75,121.6875 L 408.375,120.34375 L 410.28125,118.25 L 408.1875,116.3125 L 408.9375,114.78125 L 407.21875,114.03125 L 406.0625,113.0625 L 405.875,110.59375 L 405.6875,109.0625 L 404.9375,107.90625 L 405.125,105.40625 L 406.0625,104.25 L 406.0625,102.9375 L 405.125,102.15625 L 405.125,100.4375 L 404.53125,98.71875 L 403.78125,97.1875 L 402.0625,95.84375 L 398.8125,96.8125 L 396.875,97 L 395.9375,98.71875 L 394.96875,99.46875 L 394.78125,98.71875 L 395.15625,97.375 L 395.5625,96.21875 L 394.40625,94.3125 L 394.53125,91.96875 L 393.59375,91.96875 L 392.8125,88.25 L 391.25,86.6875 L 390.125,86.53125 z ", "name" : "Meuse"}, "fr-56" : {"path": "M 56,160.59375 L 52.75,162.15625 L 50.46875,162.15625 L 48.0625,164.09375 L 48.21875,165.53125 L 49.65625,169.25 L 50.46875,172.15625 L 55.46875,172.96875 L 57.90625,174.90625 L 58.875,173.75 L 60.46875,175.875 L 59.65625,176.84375 L 59.5,179.71875 L 58.0625,179.71875 L 56.9375,181.5 L 54.65625,181.5 L 53.71875,185.34375 L 55.90625,188.84375 L 59.03125,189.625 L 60.1875,187.875 L 59.625,190 L 62.34375,191.1875 L 65.875,194.6875 L 67.03125,196.84375 L 66.65625,199.375 L 66.25,201.9375 L 68.59375,203.6875 L 69.78125,202.3125 L 68.59375,200.75 L 68.59375,197.25 L 70.9375,197.8125 L 71.71875,195.46875 L 72.3125,196.84375 L 74.84375,199 L 76.03125,197.03125 L 74.84375,194.3125 L 77,197.25 L 79.71875,196.84375 L 79.15625,195.46875 L 81.6875,196.0625 L 83.625,198.40625 L 82.65625,199.96875 L 80.125,199.1875 L 77.1875,197.8125 L 75.625,199.78125 L 77.96875,200.5625 L 79.71875,203.28125 L 90.28125,202.3125 L 93,202.90625 L 91.65625,204.0625 L 91.84375,205.84375 L 92.21875,206.125 L 93.0625,205.96875 L 94.8125,204.21875 L 95.96875,205.5625 L 99.09375,205.5625 L 102.8125,203.625 L 108.28125,201.46875 L 108.46875,196 L 109.625,195.375 L 107.5625,191.5 L 109.34375,190.0625 L 109.03125,189.09375 L 107.90625,188.4375 L 109.65625,187.625 L 111.28125,185.6875 L 111.125,183.75 L 109.03125,183.75 L 108.53125,181.84375 L 110,179.90625 L 108.375,177 L 105.96875,175.53125 L 103.21875,175.53125 L 102.25,175.21875 L 102.25,173.9375 L 103.6875,172.625 L 104.5,169.40625 L 104.03125,167.3125 L 103.375,168.125 L 99.5,167.8125 L 97.71875,164.5625 L 96.28125,164.5625 L 94.03125,165.375 L 94.03125,167.46875 L 90.96875,169.40625 L 88.53125,168.4375 L 87.5625,166.34375 L 86.78125,167.46875 L 84.5,167.46875 L 83.375,166.03125 L 82.25,166.03125 L 79.84375,163.59375 L 77.09375,164.25 L 74.1875,161.65625 L 71.59375,161.84375 L 70.8125,163.4375 L 67.75,165.0625 L 64.03125,163.4375 L 63.0625,162.46875 L 61.4375,163.59375 L 59.5,163.4375 L 59.1875,161.84375 L 56.125,161.03125 L 56,160.59375 z ", "name" : "Morbihan"}, "fr-57" : {"path": "M 423.09375,90.40625 L 420.15625,90.59375 L 417.8125,92.5625 L 417.21875,93.53125 L 413.90625,93.53125 L 412.75,92.34375 L 412.25,92.34375 C 412.32712,94.02401 412.40625,95.28125 412.40625,95.28125 L 411.4375,96.8125 L 413.9375,102.15625 L 414.875,102.9375 L 416.03125,106 L 414.5,108.65625 L 416.21875,110.375 L 415.46875,111.90625 L 415.46875,114.03125 L 413.34375,114.03125 L 413.15625,116.5 L 417.1875,119 L 417,122.0625 L 420.0625,122.0625 L 421.59375,124.15625 L 425.40625,124.15625 L 429.25,128.96875 L 430.1875,131.625 L 432.6875,131.625 L 437.65625,133.75 L 442.0625,136.40625 L 442.0625,137.1875 L 444.9375,137.375 L 448.5625,139.46875 L 452,139.46875 L 454.875,141.59375 L 458.125,143.875 L 460.4375,144.625 L 463.9375,141.125 L 465.125,137.03125 L 463.5625,135.46875 L 463.375,134.09375 L 465.6875,129.78125 L 460.25,126.65625 L 457.125,129 L 455.34375,127.84375 L 456.125,126.09375 L 454.1875,124.71875 L 451.625,123.53125 L 451.625,121 L 454.1875,120.21875 L 455.15625,115.71875 L 456.90625,113.78125 L 457.6875,116.71875 L 459.84375,117.6875 L 463.5625,118.28125 L 465.5,120.21875 L 467.84375,120.21875 L 469.8125,118.84375 L 472.34375,120.625 L 473.71875,120.625 L 475.28125,119.25 L 475.28125,116.3125 L 477,113.3125 L 476.59375,113.4375 L 475.25,111.5 L 471.34375,109.15625 L 469.96875,107 L 465.28125,107.40625 L 462.53125,109.9375 L 455.90625,110.125 L 453.9375,108.75 C 453.80551,108.51057 452.84437,106.81438 452,106.34375 C 451.96729,106.32639 451.91355,106.29802 451.875,106.28125 C 451.84646,106.26959 451.80512,106.25698 451.78125,106.25 C 451.77058,106.24458 451.73002,106.22452 451.71875,106.21875 C 451.71591,106.21876 451.69093,106.21861 451.6875,106.21875 C 451.66248,106.21745 451.61378,106.21875 451.59375,106.21875 C 450.67823,106.21876 448.90565,105.19125 448.6875,105.0625 L 445.9375,106.21875 L 445.75,108.5625 L 442.4375,108.96875 L 440.46875,105.25 L 439.3125,104.84375 L 439.3125,102.125 L 436.5625,100.9375 L 436.375,96.25 L 434.40625,94.3125 L 430.3125,92.34375 L 428.375,92.34375 L 427.78125,92.75 L 425.8125,92.75 L 423.09375,90.40625 z ", "name" : "Moselle"}, "fr-58" : {"path": "M 306.75,203.78125 L 305.78125,205.3125 L 303.9375,205.3125 L 301.46875,204.75 L 298.71875,205.5625 L 298.90625,207.53125 L 301.25,210.25 L 301.25,213.96875 L 299.5,216.5 L 300.0625,218.84375 L 303.59375,221.59375 L 303.78125,224.3125 L 305.75,228.4375 L 305.34375,233.125 L 307.5,235.25 L 306.90625,240.34375 L 306.71875,242.875 L 307.6875,244.625 L 306.1875,249.40625 L 306.3125,250.875 L 309.65625,252.4375 L 312,255 L 314.125,253.8125 L 316.09375,252.65625 L 316.5,254.40625 L 319.40625,254.40625 L 320.1875,252.84375 L 321.9375,253.625 L 322.53125,256.15625 L 324.09375,255.78125 L 327.8125,250.6875 L 329.75,252.0625 L 330.0625,252.65625 L 333.125,250.75 L 334.375,250.90625 L 335.34375,253.28125 L 337.1875,253 L 338.59375,251.59375 L 340.40625,251.59375 L 341.8125,249.78125 L 343.21875,249.5 L 343.5,248.5 L 346.5625,248.65625 L 346.71875,247.9375 L 345.3125,246.6875 L 345.3125,245.4375 L 347.28125,244.3125 L 347.28125,243.46875 L 345.4375,242.34375 L 345.15625,240.25 L 345.3125,238.28125 L 344.0625,237.4375 L 345.15625,235.90625 L 346.15625,235.34375 L 346.84375,233.65625 L 345.875,233.09375 L 344.75,231.40625 L 346.15625,229.4375 L 348.53125,228.03125 L 351.46875,228.03125 L 351.46875,225.8125 L 352.3125,225.53125 L 352.3125,224.6875 L 351.0625,222.71875 L 348.25,222.15625 L 347.28125,220.46875 L 347.6875,218.9375 L 347.96875,216.8125 L 347.46875,215.6875 L 344.34375,217.8125 L 343.0625,218.375 L 341.375,217.25 L 341.53125,214.4375 L 339.6875,214.4375 L 338.15625,215.4375 L 337.75,214.15625 L 338.59375,212.75 L 337.59375,211.5 L 336.46875,213.1875 L 336.625,214.4375 L 333.96875,214.3125 L 329.75,210.375 L 326.53125,210.25 L 326.53125,208.125 L 324.28125,206.71875 L 323.84375,204.90625 L 323.15625,204.78125 L 323.15625,208.28125 L 321.90625,208.5625 L 320.0625,208 L 318.125,209.25 L 317,209.53125 L 315.875,208.5625 L 314.75,209.125 L 312.21875,207.4375 L 310.40625,207.4375 L 309.125,206.59375 L 309.40625,205.03125 L 308,203.78125 L 306.75,203.78125 z ", "name" : "Nièvre"}, "fr-59" : {"path": "M 285.78125,4.0625 L 279.53125,7 L 269.78125,8.5625 L 269.25,8.65625 L 272.96875,14.5625 L 275.5625,21.125 L 279.90625,21.3125 L 281.6875,22.6875 L 279.53125,23.6875 L 279.53125,26.0625 L 282.28125,29.03125 L 287.25,30.25 L 293.40625,30.625 L 294.78125,28.4375 L 296.78125,28.4375 L 297.75,30.4375 L 295.1875,32.03125 L 295.59375,36 L 299.15625,36.96875 L 302.71875,37.375 L 303.71875,39.9375 L 305.5,40.75 L 305.09375,42.125 L 302.53125,43.3125 L 302.3125,44.5 L 304.3125,46.90625 L 305.6875,47.875 L 305.3125,49.0625 L 303.71875,50.25 L 304.3125,50.65625 L 306.875,50.84375 L 309.0625,52.25 L 308.875,54.03125 L 307.6875,54.8125 L 307.46875,58 L 305.6875,58.1875 L 303.90625,58 L 301.9375,59.1875 L 303.125,59.59375 L 305.09375,59.59375 L 306.875,59.96875 L 307.46875,60.96875 L 306.3125,63.1875 L 307.875,64.75 L 309.4375,65.15625 L 311,64.15625 L 313.15625,64.15625 L 313.75,65.34375 L 314.53125,65.15625 L 316.875,63.78125 L 319.21875,65.15625 L 322.34375,63 L 323.71875,63 L 325.28125,64.375 L 328.40625,62.21875 L 329.75,62.40625 L 330.9375,63.375 L 335.25,63.78125 L 335.625,65.53125 L 337.78125,63.59375 L 338.9375,63.59375 L 339.71875,66.125 L 343.4375,67.09375 L 344.5,66.375 L 344.1875,66.375 L 344,64.4375 L 347.90625,62.09375 L 347.3125,58.375 L 343.59375,57.40625 L 344.5625,56.40625 L 344.5625,53.6875 L 347.5,51.53125 L 346.71875,49.96875 L 340.46875,45.09375 L 329.53125,45.6875 L 328.375,47.625 L 327,47.625 L 327.1875,40.78125 L 324.0625,37.09375 L 321.71875,37.46875 L 320.34375,35.90625 L 316.4375,37.65625 L 315.09375,36.3125 L 312.34375,35.90625 L 311.5625,33.375 L 311.375,25.5625 L 309.625,24.78125 L 309.40625,23.59375 L 308.25,23.59375 L 307.84375,21.25 L 305.3125,21.46875 L 300.4375,23.03125 L 298.09375,25.9375 L 295.75,25.9375 L 294.1875,24 L 293.59375,21.84375 L 291.65625,19.6875 L 288.90625,19.6875 L 287.75,17.5625 L 287.75,14.21875 L 289.09375,12.09375 L 288.3125,9.15625 L 285.78125,4.0625 z ", "name" : "Nord"}, "fr-60" : {"path": "M 257.21875,80.21875 L 255.9375,81.75 L 255.15625,83.6875 L 256.71875,83.6875 L 255.9375,85.65625 L 255.15625,89.5625 L 256.3125,91.5 L 256.3125,94.84375 L 258.28125,94.84375 L 257.5,96.1875 L 256.125,98.75 L 255.5625,100.5 L 257.3125,102.0625 L 257.875,106.5625 L 258.875,108.125 L 257.5,108.5 L 255.75,107.53125 L 255.4375,109.84375 L 255.5625,109.6875 L 256.3125,111.4375 L 257.5,113.375 L 262.78125,113.78125 L 266.5,113.375 L 269.03125,111.4375 L 272.15625,113.375 L 273.71875,114.5625 L 276.0625,113.96875 L 278.1875,113 L 282.3125,115.15625 L 286.59375,117.6875 L 287.96875,119.0625 L 290.3125,117.5 L 292.25,118.65625 L 293.4375,119.625 L 295.1875,119.4375 L 296.375,117.875 L 299.09375,119.4375 L 302.4375,118.0625 L 304.375,118.65625 L 306.3125,117.09375 L 307.5,116.5 L 307.875,116.78125 L 308.28125,114.125 L 306.875,112.53125 L 304.5,110.9375 L 303.5,112.53125 L 302.90625,112.71875 L 302.71875,109.75 L 304.5,109.34375 L 304.09375,106.59375 L 301.71875,106.1875 L 302.90625,104.1875 L 306.28125,103.40625 L 307.46875,98.65625 L 309.25,97.84375 L 306.875,96.0625 L 307.6875,94.28125 L 308.0625,88.34375 L 307.25,83.75 L 303.125,84.15625 L 300.34375,83.78125 L 295.1875,85.15625 L 290.8125,89.3125 L 287.25,88.125 L 283.6875,87.75 L 280.90625,84.96875 L 275.9375,83.5625 L 269.21875,84.15625 L 267.4375,82.78125 L 263.84375,82.78125 L 261.28125,83.78125 L 260.09375,82.96875 L 260.09375,80.8125 L 259.6875,80.21875 L 257.21875,80.21875 z ", "name" : "Oise"}, "fr-61" : {"path": "M 206.84375,124.65625 L 202.875,125.53125 L 201.59375,124.75 L 197.875,125.375 L 197.71875,126.84375 L 196.4375,127.15625 L 195.96875,125.0625 L 194.34375,125.375 L 191.90625,128.125 L 188.21875,130.875 L 184.1875,132.15625 L 180.96875,130.375 L 177.25,131.03125 L 175,128.78125 L 172.875,129.5625 L 169.34375,132 L 165.3125,130.875 L 162.40625,134.25 L 158.46875,135.4375 L 160.625,136.84375 L 162.5625,138.78125 L 162.09375,140.6875 L 162.40625,142.3125 L 161.28125,146.03125 L 157.9375,148.875 L 159.25,151.09375 L 161.40625,152.65625 L 164.34375,150.6875 L 166.28125,152.0625 L 171.5625,148.9375 L 176.84375,149.71875 L 179.75,148.53125 L 180.5625,146.59375 L 182.5,146.40625 L 184.25,147.96875 L 185.03125,152.25 L 187.5625,153.21875 L 188.5625,156.75 L 191.875,156.9375 L 197.15625,152.0625 L 202.4375,151.875 L 204,154 L 204.96875,161.03125 L 208.28125,162.21875 L 210.25,165.15625 L 214.34375,165.15625 L 214.53125,166.5 L 214.71875,164.5625 L 215.5,164.5625 L 218.25,168.65625 L 220.375,169 L 220.375,164.375 L 219.03125,162.59375 L 218.625,161.03125 L 221.5625,159.28125 L 224.5,158.6875 L 226.4375,156.34375 L 226.0625,149.125 L 221.9375,145.625 L 221.75,142.28125 L 218.25,139.9375 L 219.625,138 L 218.8125,135.0625 L 216.09375,134.09375 L 214.125,132.125 L 212.96875,129.40625 L 207.5,129.21875 L 205.9375,127.25 L 206.84375,124.65625 z ", "name" : "Orne"}, "fr-62" : {"path": "M 269.25,8.65625 L 258.4375,10.71875 L 249.84375,17.34375 L 249.84375,43.71875 L 249.78125,44.5 L 252.8125,45.21875 L 253.78125,47.375 L 256.125,46.78125 L 257.5,45.03125 L 259.25,45.625 L 262.96875,48.53125 L 264.34375,47.96875 L 265.3125,50.3125 L 268.8125,51.875 L 268.8125,53.8125 L 271.375,54.78125 L 273.90625,53.8125 L 278.78125,53.21875 L 279.96875,54.21875 L 282.3125,53.21875 L 283.46875,55.1875 L 280.5625,57.125 L 280.5625,59.875 L 281.53125,60.84375 L 282.3125,60.65625 L 282.875,59.09375 L 284.65625,57.90625 L 286.40625,59.28125 L 290.5,60.65625 L 292.25,60.65625 L 292.25,58.6875 L 294.8125,60.46875 L 295,62.03125 L 293.8125,63.78125 L 295.96875,62.59375 L 297.75,61.8125 L 298.5,63.1875 L 298.5,64.5625 L 301.4375,63 L 306.125,63 L 306.3125,63.1875 L 307.46875,60.96875 L 306.875,59.96875 L 305.09375,59.59375 L 303.125,59.59375 L 301.9375,59.1875 L 303.90625,58 L 305.6875,58.1875 L 307.46875,58 L 307.6875,54.8125 L 308.875,54.03125 L 309.0625,52.25 L 306.875,50.84375 L 304.3125,50.65625 L 303.71875,50.25 L 305.3125,49.0625 L 305.6875,47.875 L 304.3125,46.90625 L 302.3125,44.5 L 302.53125,43.3125 L 305.09375,42.125 L 305.5,40.75 L 303.71875,39.9375 L 302.71875,37.375 L 299.15625,36.96875 L 295.59375,36 L 295.1875,32.03125 L 297.75,30.4375 L 296.78125,28.4375 L 294.78125,28.4375 L 293.40625,30.625 L 287.25,30.25 L 282.28125,29.03125 L 279.53125,26.0625 L 279.53125,23.6875 L 281.6875,22.6875 L 279.90625,21.3125 L 275.5625,21.125 L 272.96875,14.5625 L 269.25,8.65625 z ", "name" : "Pas de Calais"}, "fr-63" : {"path": "M 299.09375,279.5 L 296.4375,282.5 L 296.25,281.4375 L 294.125,281.625 L 294.125,283.21875 L 292.90625,283.5625 L 291.65625,286.5625 L 290.0625,287.28125 L 287.09375,284.96875 L 287.375,289.5625 L 288.9375,291.5 L 289.71875,295.21875 L 287.375,296.96875 L 286.8125,299.71875 L 284.65625,300.875 L 280.9375,303.03125 L 281.3125,304.78125 L 285.8125,309.28125 L 286.21875,312.03125 L 284.4375,314.9375 L 284.4375,317.6875 L 285.625,319.0625 L 286.21875,322.375 L 285.84375,323.71875 L 291.84375,325.46875 L 293.4375,328.8125 L 296.59375,328.8125 L 297.84375,327.59375 L 299.96875,328.65625 L 301.03125,328.8125 L 303.6875,332.875 L 306.5,333.0625 L 307.21875,331.65625 L 308,331.75 L 308.8125,330.59375 L 312.34375,330.0625 L 314.28125,328.46875 L 316.40625,328.28125 L 316.40625,327.0625 L 317.8125,326.34375 L 318.1875,327.21875 L 319.0625,326.6875 L 320.46875,327.59375 L 322.9375,327.40625 L 325.0625,326.53125 L 326.46875,327.75 L 328.0625,327.75 L 329.3125,330.0625 L 331.25,330.9375 L 332.3125,328.46875 L 333.71875,329.71875 L 336.75,329.875 L 337.8125,327.75 L 339.5625,329.53125 L 342.03125,330.25 L 342.8125,329.5 L 341.28125,329 L 340.6875,326.65625 L 344.40625,323.15625 L 342.65625,316.71875 L 337.5625,313.375 L 335.4375,308.3125 L 333.09375,305.1875 L 333.6875,300.875 L 335.4375,299.125 L 332.3125,296.59375 L 332.40625,295.8125 L 329.65625,294.71875 L 328.78125,292.59375 L 325.78125,292.75 L 323.46875,292.21875 L 323.125,289.75 L 321.34375,288.875 L 319.0625,290.28125 L 316.40625,289.75 L 314.625,289.9375 L 308.625,289.0625 L 303.6875,286.21875 L 303.3125,284.8125 L 301.21875,282.5 L 302.625,280.5625 L 302.09375,279.5 L 299.09375,279.5 z ", "name" : "Puy de Dôme"}, "fr-64" : {"path": "M 172.15625,428.875 L 169.34375,430.46875 L 163.6875,430.28125 L 163.15625,429.40625 L 159.4375,430.65625 L 156.59375,431.53125 L 154.46875,429.9375 L 152.1875,430.65625 L 151.46875,429.75 L 148.65625,429.75 L 146.875,430.65625 L 142.28125,430.46875 L 139.8125,432.40625 L 135.375,432.0625 L 134.5,433.3125 L 133.4375,432.9375 L 134.84375,431.53125 L 132.375,429.59375 L 129.375,432.25 L 124.25,432.59375 L 118.625,429.78125 L 117.8125,431.21875 L 113.3125,436.6875 L 109.8125,438.0625 L 107.28125,438.4375 L 107.28125,440.59375 L 109.625,442.75 L 113.125,442.9375 L 113.3125,445.46875 L 116.0625,445.6875 L 116.84375,443.90625 L 120.5625,445.46875 L 122.90625,446.0625 L 123.46875,448.40625 L 122.125,449.59375 L 122.125,453.28125 L 119.375,454.65625 L 119.1875,456.40625 L 120.9375,458.375 L 124.0625,459.34375 L 124.65625,456.40625 L 126.40625,454.46875 L 126.21875,457 L 127.59375,458.96875 L 131.09375,458.96875 L 132.65625,461.09375 L 137.34375,461.875 L 141.84375,464.625 L 149.25,464.625 L 149.65625,468.71875 L 154.71875,472.625 L 156.6875,474.96875 L 158.84375,473.8125 L 160.78125,473.40625 L 161.75,474.375 L 163.53125,473.40625 L 166.9375,471.53125 L 167.25,467.5 L 168.8125,466.3125 L 169.625,459.875 L 172.53125,460.46875 L 173.71875,459.6875 L 172.34375,456.9375 L 177.625,452.4375 L 180.75,445.40625 L 182.6875,442.875 L 180.34375,439.375 L 178.78125,437.03125 L 180.9375,435.0625 L 177.625,429.59375 L 172.34375,429.21875 L 172.15625,428.875 z ", "name" : "Pyrénées Atlantiques"}, "fr-65" : {"path": "M 179.21875,428.53125 L 177.28125,429.5625 L 177.625,429.59375 L 180.9375,435.0625 L 178.78125,437.03125 L 180.34375,439.375 L 182.6875,442.875 L 180.75,445.40625 L 177.625,452.4375 L 172.34375,456.9375 L 173.71875,459.6875 L 172.53125,460.46875 L 169.625,459.875 L 168.8125,466.3125 L 167.25,467.5 L 166.9375,471.53125 L 167.4375,471.25 L 170.75,473.21875 L 174.65625,476.15625 L 175.03125,478.5 L 178.15625,481.03125 L 180.71875,481.03125 L 187.15625,478.28125 L 189.875,481.40625 L 193.59375,482.40625 L 194.96875,480.0625 L 196.71875,480.84375 L 200.5,481.09375 L 200.25,470.59375 L 202.21875,470.59375 L 203.96875,471.46875 L 205.21875,470.25 L 205.03125,468.3125 L 207.5,466.875 L 206.625,463.1875 L 205.5625,462.28125 L 203.4375,463 L 204.5,461.21875 L 203.96875,458.9375 L 200.78125,456.625 L 200.96875,455.03125 L 202.75,452.03125 L 205.03125,451.15625 L 205.03125,449.90625 L 206.4375,447.78125 L 207.375,446.46875 L 203.8125,444.625 L 199.03125,444.625 L 198.3125,443.1875 L 195.84375,443.1875 L 195.125,441.59375 L 192.84375,441.59375 L 192.125,442.3125 L 189.46875,442.3125 L 189.3125,440.71875 L 187.1875,439.3125 L 187.90625,438.59375 L 188.25,436.84375 L 187.71875,436.3125 L 186.65625,433.46875 L 184.34375,433.125 L 182.0625,431.875 L 182.21875,428.53125 L 179.21875,428.53125 z ", "name" : "Hautes Pyrénées"}, "fr-66" : {"path": "M 300.5,468.65625 L 296.25,470.9375 L 296.59375,473.4375 L 278.0625,473.4375 L 278.21875,476.78125 L 280.15625,479.625 L 272.21875,483.5 L 271.375,483 L 264.84375,483.46875 L 264.03125,485.125 L 260.71875,485.96875 L 258.5,487.90625 L 252.4375,489.3125 L 252.78125,491.375 L 255.71875,494.125 L 261.5625,495.6875 L 261.75,499.1875 L 264.875,501.9375 L 267.21875,501.53125 L 270.5625,497.4375 L 274.65625,496.65625 L 281.09375,498.8125 L 286.5625,503.5 L 288.125,501.53125 L 289.5,501.53125 L 290.875,502.5 L 292.03125,501.9375 L 292.21875,499.1875 L 298.09375,497.8125 L 300.03125,495.28125 L 302.96875,494.3125 L 307.0625,494.3125 L 309.625,497.03125 L 312.75,497.25 L 312.75,494.125 L 311.1875,491.96875 L 308.4375,490.78125 L 308,473.71875 L 305.4375,472.53125 L 300.5,468.65625 z ", "name" : "Pyrénées Orientales"}, "fr-67" : {"path": "M 480.71875,112.28125 L 477,113.3125 L 475.28125,116.3125 L 475.28125,119.25 L 473.71875,120.625 L 472.34375,120.625 L 469.8125,118.84375 L 467.84375,120.21875 L 465.5,120.21875 L 463.5625,118.28125 L 459.84375,117.6875 L 457.6875,116.71875 L 456.90625,113.78125 L 455.15625,115.71875 L 454.1875,120.21875 L 451.625,121 L 451.625,123.53125 L 454.1875,124.71875 L 456.125,126.09375 L 455.34375,127.84375 L 457.125,129 L 460.25,126.65625 L 465.6875,129.78125 L 463.375,134.09375 L 463.5625,135.46875 L 465.125,137.03125 L 463.9375,141.125 L 460.03125,145.03125 L 457.875,144.84375 L 459.25,146.1875 L 458.46875,149.71875 L 459.25,155 L 462.96875,155.96875 L 462.65625,156.6875 L 465.59375,156.53125 L 467.3125,158.625 L 468.84375,160.53125 L 472.6875,160.34375 L 474.40625,165.3125 L 477.40625,166.625 L 477.375,166 L 482.46875,156.03125 L 481.875,150.375 L 484.21875,142.75 L 484.8125,136.09375 L 489.875,132.40625 L 489.875,130.0625 L 491.84375,127.5 L 493.40625,127.5 L 495.15625,125.75 L 494.78125,122.4375 L 496.53125,117.75 L 499.25,117.15625 L 496.53125,115 L 491.65625,114.4375 L 487.34375,112.28125 L 484.40625,114.03125 L 482.84375,112.28125 L 480.71875,112.28125 z ", "name" : "Bas-Rhin"}, "fr-68" : {"path": "M 465.59375,156.53125 L 462.65625,156.6875 L 460.8125,160.84375 L 458.46875,165.53125 L 459.0625,168.46875 L 457.125,172.96875 L 453.78125,175.875 L 453.59375,183.5 L 451.15625,185.59375 L 451.25,185.65625 L 452.03125,187.21875 L 455.15625,187.40625 L 458.6875,190.15625 L 459.25,191.5 L 459.0625,193.84375 L 458.09375,195.625 L 458.46875,197.96875 L 461.21875,197.5625 L 461.8125,199.71875 L 462.78125,203.875 L 465.09375,203.5 L 464.6875,205.625 L 466.0625,206.8125 L 473.28125,206.625 L 477,203.6875 L 477.1875,199.375 L 479.15625,196.84375 L 476.59375,193.90625 L 475.25,190.78125 L 476.8125,188.65625 L 476.8125,183.75 L 477.78125,181.40625 L 477.78125,177.5 L 479.53125,174.96875 L 477.59375,172.25 L 477.40625,166.625 L 474.40625,165.3125 L 472.6875,160.34375 L 468.84375,160.53125 L 467.3125,158.625 L 465.59375,156.53125 z ", "name" : "Haut Rhin"}, "fr-69" : {"path": "M 371.75,275.3125 L 369.625,275.5 L 367.84375,277.25 L 366.6875,275.6875 L 364.9375,277.25 L 362.5625,275.6875 L 360.625,275.6875 L 359.84375,276.28125 L 359.4375,278.53125 L 360.5,279.375 L 360.5,281.28125 L 361.78125,283.40625 L 360.71875,284.6875 L 356.6875,284.6875 L 356.46875,288.5 L 355.1875,289.78125 L 356.03125,292.96875 L 356.03125,294.875 L 357.75,296.5625 L 357.75,298.90625 L 360.28125,301.25 L 360.28125,304 L 359.03125,305.90625 L 360.5,306.78125 L 360.5,308.25 L 359.21875,309.3125 L 359.21875,311.03125 L 364.75,316.125 L 371.34375,317.1875 L 371.96875,319.09375 L 369.84375,321.625 L 371.5625,322.6875 L 373.6875,321.84375 L 375.96875,322.1875 L 380.0625,320.15625 L 379.40625,318.875 L 376.65625,316.125 L 380.90625,314.625 L 386.4375,313.34375 L 390.6875,307.84375 L 387.90625,305.5 L 388.0625,303.46875 L 384.09375,302.3125 L 381.53125,303.15625 L 381.125,299.75 L 378.78125,297.625 L 377.28125,297.40625 L 373.46875,295.09375 L 374.09375,293.59375 L 374.09375,287 L 375.15625,285.53125 L 375.53125,280.96875 L 374.875,282.53125 L 373.5,282.34375 L 372.75,278.4375 L 371.75,275.3125 z ", "name" : "Rhône"}, "fr-70" : {"path": "M 423.5,175.5 L 419.8125,176.09375 L 419.21875,178.03125 L 417.25,179.40625 L 415.90625,177.84375 L 414.9375,178.4375 L 415.6875,179.59375 L 413.75,180.78125 L 414.34375,182.34375 L 412.1875,183.125 L 412.1875,185.65625 L 409.4375,185.65625 L 409.25,187.21875 L 406.53125,187.8125 L 406.71875,190.15625 L 408.46875,190.34375 L 407.5,191.5 L 406.90625,195.40625 L 405.15625,195.40625 L 402.21875,196.59375 L 399.09375,195.40625 L 396.375,196.59375 L 396.375,198.5625 L 398.5,198.9375 L 400.0625,202.0625 L 400.28125,203.625 L 397.75,206.5625 L 396.5625,206.9375 L 395.78125,207.90625 L 397.9375,208.90625 L 398.3125,212.03125 L 400.0625,212.21875 L 400.28125,216.125 L 401.0625,216.90625 L 401.15625,217.53125 L 402.65625,217.9375 L 404.34375,219.34375 L 406.875,219.34375 L 407.84375,218.375 L 409.5625,218.4375 L 411.34375,218.5 L 415.28125,215.28125 L 416.40625,215.28125 L 417.65625,214.3125 L 421.71875,214.4375 L 424.8125,211.90625 L 427.0625,211.5 L 427.90625,209.40625 L 429.71875,208.84375 L 431.53125,205.75 L 434.0625,203.78125 L 436.71875,203.375 L 438.6875,204.78125 L 442.34375,204.34375 L 442.34375,202.375 L 443.8125,201.53125 L 444.96875,199.9375 L 447.21875,199.9375 L 448.46875,198.625 L 448.9375,195.5 L 448.9375,193.5625 L 448.09375,190.59375 L 448.09375,188.09375 L 449.625,186.96875 L 451.4375,186.03125 L 451.25,185.65625 L 445,182.34375 L 443.25,180.375 L 441.5,179.21875 L 439.9375,180 L 439.71875,181.15625 L 438.15625,182.125 L 437.1875,182.125 L 434.25,178.8125 L 430.15625,178.8125 L 428.40625,180.1875 L 426.84375,180.375 L 424.3125,178.4375 L 424.5,176.28125 L 423.5,175.5 z ", "name" : "Haute Saône"}, "fr-71" : {"path": "M 351.46875,227.84375 L 351.46875,228.03125 L 348.53125,228.03125 L 346.15625,229.4375 L 344.75,231.40625 L 345.875,233.09375 L 346.84375,233.65625 L 346.15625,235.34375 L 345.15625,235.90625 L 344.0625,237.4375 L 345.3125,238.28125 L 345.15625,240.25 L 345.4375,242.34375 L 347.28125,243.46875 L 347.28125,244.3125 L 345.3125,245.4375 L 345.3125,246.6875 L 346.71875,247.9375 L 346.5625,248.65625 L 343.5,248.5 L 343.21875,249.5 L 341.8125,249.78125 L 340.40625,251.59375 L 338.59375,251.59375 L 337.1875,253 L 335.34375,253.28125 L 334.375,250.90625 L 333.125,250.75 L 330.0625,252.65625 L 333.6875,259.46875 L 333.6875,262.40625 L 334.65625,263.59375 L 337.96875,263.59375 L 339.125,265.15625 L 342.25,265.15625 L 343.625,267.09375 L 343.4375,274.71875 L 339.34375,277.84375 L 339.25,278.0625 L 339.53125,278.03125 L 340.125,278.21875 L 340.3125,281.34375 L 343.25,281.9375 L 343.625,283.3125 L 345.1875,283.3125 L 347.53125,281.9375 L 353.78125,282.90625 L 354.96875,284.09375 L 356.53125,282.53125 L 358.6875,282.53125 L 359.84375,276.28125 L 360.625,275.6875 L 362.5625,275.6875 L 364.9375,277.25 L 366.6875,275.6875 L 367.84375,277.25 L 369.625,275.5 L 371.75,275.3125 L 372.75,278.4375 L 373.5,282.34375 L 374.875,282.53125 L 376.0625,279.78125 L 379.75,265.34375 L 381.125,262.8125 L 383.28125,262.59375 L 385.4375,264.375 L 387,263.96875 L 388.9375,262.59375 L 390.90625,263 L 392.0625,265.53125 L 393.1875,265.96875 L 398.3125,265.34375 L 400.28125,263.78125 L 399.5,262.59375 L 397.15625,261.8125 L 396.9375,259.09375 L 398.90625,257.71875 L 399.6875,254.40625 L 397.9375,251.28125 L 396.75,249.71875 L 397.34375,249.125 L 397.34375,247.1875 L 395.78125,246.1875 L 395.375,244.625 L 399.875,244.0625 L 400.28125,242.5 L 398.90625,242.5 L 397.75,241.125 L 395.59375,241.125 L 393.8125,238.1875 L 392.25,238 L 392.4375,235.65625 L 390.75,235.46875 L 388.5,237 L 386.25,237.5625 L 384.71875,236.59375 L 382.75,236.46875 L 382.1875,237.28125 L 380.375,237.5625 L 376.3125,238.84375 L 370.40625,240.9375 L 368.15625,239.125 L 365.5,238.5625 L 365.375,236.1875 L 362.84375,234.34375 L 359.34375,231.6875 L 355.40625,231.8125 L 351.625,227.90625 L 351.46875,227.84375 z ", "name" : "Saône et Loire"}, "fr-72" : {"path": "M 202.4375,151.875 L 197.15625,152.0625 L 191.875,156.9375 L 189.125,156.78125 L 185.46875,157.96875 L 184.34375,159.90625 L 183.84375,164.09375 L 184.1875,166.65625 L 181.28125,169.09375 L 180.46875,170.6875 L 181.125,172.15625 L 180.3125,174.09375 L 180.625,174.90625 L 177.40625,175.21875 L 176.9375,176.65625 L 178.375,180.21875 L 178.21875,181.1875 L 176.9375,182.3125 L 174.1875,182.46875 L 173.84375,183.4375 L 174.5,184.40625 L 174.5,190.21875 L 173.875,191.6875 L 175.625,193.125 L 175.625,195.0625 L 178.53125,195.21875 L 186.125,197.46875 L 194.34375,202.46875 L 197,203.5 L 198.3125,200.875 L 202.21875,203.625 L 204.375,203.625 L 203.1875,199.71875 L 205.5625,201.28125 L 206.90625,199.3125 L 212.5625,197.75 L 211.59375,195.40625 L 212.96875,193.65625 L 215.90625,192.5 L 218.625,188.96875 L 218.625,185.25 L 220.59375,185.25 L 221.375,182.53125 L 221.5625,178.4375 L 219.625,176.65625 L 221.1875,173.9375 L 223.5,171 L 220.78125,169.0625 L 218.25,168.65625 L 215.5,164.5625 L 214.71875,164.5625 L 214.53125,166.5 L 214.34375,165.15625 L 210.25,165.15625 L 208.28125,162.21875 L 204.96875,161.03125 L 204,154 L 202.4375,151.875 z ", "name" : "Sarthe"}, "fr-73" : {"path": "M 417,293.8125 L 416.59375,299.53125 L 415.3125,300.59375 L 415.3125,306.96875 L 412.75,307.40625 L 412.34375,311.03125 L 410,312.71875 L 409.96875,312.6875 L 410.21875,313.78125 L 412.5625,316.3125 L 412.5625,318.03125 L 414.875,322.28125 L 419.78125,323.34375 L 421.46875,324.625 L 422.125,323.96875 L 421.25,322.28125 L 422.53125,319.5 L 424.03125,319.3125 L 426.5625,322.6875 L 427.625,321.21875 L 429.125,321.21875 L 433.15625,325.25 L 433.375,328 L 431.46875,329.0625 L 430.59375,333.09375 L 432.3125,334.8125 L 432.3125,336.5 L 431.875,338.21875 L 433.15625,336.9375 L 435.28125,338.21875 L 436.40625,339.75 L 439.9375,339.375 L 441.09375,340.53125 L 441.6875,343.28125 L 445.1875,342.875 L 445.59375,339.9375 L 447.34375,339.15625 L 451.09375,339.34375 L 451.03125,339.21875 L 456.875,336.875 L 459.03125,338.25 L 461.1875,338.25 L 461.375,335.90625 L 463.90625,334.53125 L 464.875,333.375 L 469.96875,331.40625 L 470.5625,328.09375 L 469.5625,326.53125 L 472.3125,321.84375 L 469.78125,320.875 L 469,318.125 L 463.71875,315 C 463.71875,315 464.03377,309.01275 463.53125,307.9375 C 463.51544,307.91055 463.48155,307.86019 463.46875,307.84375 C 463.46374,307.8383 463.44264,307.81713 463.4375,307.8125 C 463.43393,307.81272 463.4091,307.81243 463.40625,307.8125 C 463.4062,307.80552 463.40608,307.78312 463.40625,307.78125 C 463.40269,307.78137 463.37784,307.78121 463.375,307.78125 C 463.37209,307.7811 463.3467,307.78118 463.34375,307.78125 C 463.34022,307.78117 463.31534,307.78126 463.3125,307.78125 C 462.53125,307.97657 459.625,308.1875 459.625,308.1875 L 456.6875,304.84375 L 456.78125,301.625 L 455.46875,301.46875 L 453.96875,303.15625 L 452.0625,304.4375 L 452.5,303.375 L 450.5625,300.1875 L 447.375,300.1875 L 445.46875,297.84375 L 446.53125,296.5625 L 446.125,295.28125 L 444.625,294.875 L 442.71875,296.15625 L 441.21875,300.59375 L 439.3125,302.09375 L 438.46875,305.5 L 437.625,307.1875 L 434.21875,307.84375 L 433.15625,306.78125 L 430.1875,303.59375 L 428.46875,303.59375 L 427.84375,304.84375 L 424.4375,304.4375 L 422.96875,301.65625 L 419.125,301.03125 L 419.125,295.5 L 417,293.8125 z ", "name" : "Savoie"}, "fr-74" : {"path": "M 446.125,266.1875 L 441.65625,266.96875 L 437.34375,270.46875 L 436.1875,268.71875 L 434.03125,268.90625 L 432.0625,273.21875 L 432.28125,274.96875 L 434.40625,276.71875 L 430.5,279.28125 L 427.96875,281.625 L 423.65625,281.625 L 421.6875,283.1875 L 419.78125,283.8125 L 418.71875,285.75 L 416.8125,284.6875 L 416.375,290.1875 L 417.4375,292.125 L 417.5,294.21875 L 419.125,295.5 L 419.125,301.03125 L 422.96875,301.65625 L 424.4375,304.4375 L 427.84375,304.84375 L 428.46875,303.59375 L 430.1875,303.59375 L 433.15625,306.78125 L 434.21875,307.84375 L 437.625,307.1875 L 438.46875,305.5 L 439.3125,302.09375 L 441.21875,300.59375 L 442.71875,296.15625 L 444.625,294.875 L 446.125,295.28125 L 446.53125,296.5625 L 445.46875,297.84375 L 447.375,300.1875 L 450.5625,300.1875 L 452.5,303.375 L 452.0625,304.4375 L 453.96875,303.15625 L 455.46875,301.46875 L 456.78125,301.625 L 456.875,298.21875 L 463.53125,295.46875 L 464.3125,293.53125 L 463.90625,289.21875 L 459.625,284.75 L 458.25,285.53125 L 458.25,283.75 L 458.25,280.84375 L 454.53125,279.0625 L 454.34375,277.5 L 456.5,275.15625 L 456.5,272.4375 L 452.96875,268.71875 L 452.78125,266.1875 L 446.125,266.1875 z ", "name" : "Haute Savoie"}, "fr-75" : {"path": "M 280.28125,129.0625 L 277.75,129.09375 L 276.625,129.59375 L 276.15625,130.21875 L 275.125,130.28125 L 274.1875,131.34375 L 274.21875,131.9375 L 274.4375,132.625 L 276,133.0625 L 277.90625,134.03125 L 279.125,134.09375 L 279.9375,133.875 L 280.78125,133.28125 L 281.0625,133.53125 L 282.875,133.78125 L 283.1875,133.125 L 283.1875,132.46875 L 282.875,132.34375 L 281.625,132.40625 L 281.71875,132.71875 L 281.5,132.90625 L 281.09375,132.90625 L 281.25,132.5 L 281.3125,132.0625 L 281.25,132.0625 L 281.09375,130.3125 L 280.28125,129.0625 z ", "name" : "Paris"}, "fr-76" : {"path": "M 241.9375,61.5 L 240.65625,63.0625 L 232.28125,69.5 L 217.4375,73.21875 L 207.65625,76.71875 L 199.65625,81.03125 L 194.96875,88.0625 L 194,93.53125 L 197.90625,96.46875 L 203.5625,97.625 L 202.65625,97.78125 L 202.6875,97.9375 L 207.0625,97.375 L 209.3125,94.96875 L 211,94.5625 L 212.9375,97.9375 L 215.625,97.65625 L 216.75,99.59375 L 221.5,99.3125 L 226.28125,102.6875 L 223.1875,103.65625 L 225.4375,105.34375 L 226.84375,105.34375 L 228.09375,108.03125 L 230.34375,108.03125 L 231.03125,106.34375 L 229.34375,105.21875 L 234.125,103.8125 L 239.15625,103.25 L 240.4375,99.59375 L 242.8125,97.5 L 247.3125,97.375 L 252.5,100.03125 L 255.59375,100.375 L 256.125,98.75 L 257.5,96.1875 L 258.28125,94.84375 L 256.3125,94.84375 L 256.3125,91.5 L 255.15625,89.5625 L 255.9375,85.65625 L 256.71875,83.6875 L 255.15625,83.6875 L 255.9375,81.75 L 257.875,79.40625 L 255.9375,75.875 L 255.34375,72.375 L 246.75,63.96875 L 245.78125,62.03125 L 243.625,62.21875 L 241.9375,61.5 z ", "name" : "Seine Maritime"}, "fr-77" : {"path": "M 307.5,116.5 L 306.3125,117.09375 L 304.375,118.65625 L 302.4375,118.0625 L 299.09375,119.4375 L 296.375,117.875 L 295.1875,119.4375 L 293.4375,119.625 L 292.25,118.65625 L 290.3125,117.5 L 287.96875,119.0625 L 287.875,118.96875 L 287.03125,124.375 L 288.1875,131.25 L 288.1875,135.84375 L 286.65625,139.6875 L 287.03125,142.34375 L 285.3125,143.6875 L 286.25,148.875 L 285.5,150 L 284.9375,155.1875 L 286.25,156.90625 L 281.875,159.78125 L 281.875,163.71875 L 283.09375,165.53125 L 285.4375,166.71875 L 285.625,170.03125 L 282.5,172.1875 L 284.25,173.75 L 286.40625,172.375 L 291.6875,172.5625 L 293.625,172.1875 L 294.21875,170.625 L 296.375,170.8125 L 296.75,172.375 L 301.625,169.625 L 303.40625,167.5 L 305.75,164.75 L 304.1875,163 L 305.5625,160.0625 L 309.0625,158.3125 L 316.6875,158.6875 L 318.4375,157.34375 L 318.59375,157.5 L 319.03125,154.21875 L 319.8125,150.3125 L 321.1875,148.53125 L 321.375,146.1875 L 324.09375,145.03125 L 324.09375,143.46875 L 321.1875,143.65625 L 320.59375,142.28125 L 321.5625,140.53125 L 320.78125,137.59375 L 319.21875,136.625 L 319.625,133.90625 L 321.1875,132.90625 L 320.96875,131.75 L 321.53125,131.0625 L 318.25,130.375 L 317.25,128.03125 L 315.5,127.4375 L 310.25,122.375 L 309.65625,118.0625 L 307.5,116.5 z ", "name" : "Seine et Marne"}, "fr-78" : {"path": "M 251.5,118.15625 L 251.4375,118.28125 L 245.96875,119.84375 L 245.1875,120.8125 L 246.1875,122.375 L 246.1875,123.9375 L 247.9375,124.3125 L 246.9375,125.3125 L 247.03125,126.1875 L 247.15625,126.09375 L 249.09375,128.03125 L 249.6875,130.375 L 251.25,131.9375 L 250.46875,134.09375 L 250.46875,136.03125 L 251.84375,137.59375 L 250.46875,139.9375 L 251.84375,143.28125 L 254.5625,145.21875 L 254.96875,147.375 L 257.3125,147.75 L 257.875,152.0625 L 259.65625,154.21875 L 262.8125,154.8125 L 263.28125,151.71875 L 264.625,150.1875 L 263.5,148.46875 L 266.34375,148.46875 L 268.28125,145.8125 L 266.9375,143.5 L 267.3125,141.40625 L 270.1875,140.0625 L 270.5625,137.9375 L 272.46875,137.1875 L 274.21875,136.40625 L 274.5625,136.625 L 274.5625,136.40625 L 272.8125,134.4375 L 271.71875,131.46875 L 273.46875,127.65625 L 272.59375,124.78125 L 269.1875,122.71875 L 264.375,122.5 L 259.875,119.625 L 256.25,120.28125 L 251.5,118.15625 z ", "name" : "Yvelines"}, "fr-79" : {"path": "M 181.71875,229.40625 L 176.4375,229.59375 L 171.5625,230.5625 L 166.28125,230.96875 L 166.28125,233.6875 L 163.5625,235.46875 L 157.5,234.09375 L 153.40625,235.84375 L 155.34375,238.59375 L 155.34375,240.9375 L 160.03125,244.84375 L 158.875,247.375 L 162,250.875 L 160.625,252.65625 L 162.5625,255.5625 L 163.15625,261.03125 L 162,262.59375 L 163.375,264.9375 L 162,267.5 L 162.1875,269.0625 L 163.75,267.875 L 165.6875,269.84375 L 162.96875,271.59375 L 162,272.75 L 159.84375,273.34375 L 157.3125,274.53125 L 157.125,274.375 L 157.21875,277.25 L 159.34375,279.5625 L 159.34375,280.84375 L 162.53125,283.1875 L 166.5625,283.40625 L 169.3125,287 L 173.78125,286.59375 L 177.40625,289.125 L 180.15625,290.40625 L 180.59375,292.53125 L 182.125,294 L 183.96875,292.96875 L 183.5625,291.90625 L 185.03125,290.1875 L 185.03125,288.71875 L 187.59375,288.0625 L 191,286.375 L 194.59375,285.75 L 195.25,283.8125 L 192.25,282.96875 L 190.78125,280.625 L 191.84375,278.09375 L 193.125,276.59375 L 193.125,273.40625 L 191.84375,272.5625 L 190.15625,273.40625 L 190.15625,274.46875 L 189.28125,275.75 L 187.59375,273.84375 L 187.375,272.5625 L 188.03125,271.09375 L 186.53125,270.03125 L 186.53125,265.5625 L 185.6875,265.34375 L 185.6875,263.84375 L 186.96875,261.71875 L 187.15625,260.65625 L 188.03125,258.34375 L 187.375,256.84375 L 185.25,256 L 187.375,252.8125 L 188.03125,251.125 L 188.03125,250.0625 L 186.53125,248.34375 L 186.53125,247.71875 L 187.375,246.21875 L 186.75,245.15625 L 188.03125,243.6875 L 186.96875,241.34375 L 186.3125,237.9375 L 186.09375,235.8125 L 184.40625,236.03125 L 184.09375,231.21875 L 183.6875,231.9375 L 182.3125,230.78125 L 181.71875,229.40625 z ", "name" : "Deux Sèvres"}, "fr-80" : {"path": "M 249.78125,44.5 L 249.25,50.9375 L 253.5625,54.84375 L 253.5625,56.8125 L 248.28125,53.6875 L 241.9375,61.5 L 243.625,62.21875 L 245.78125,62.03125 L 246.75,63.96875 L 255.34375,72.375 L 255.9375,75.875 L 257.875,79.40625 L 257.21875,80.21875 L 259.6875,80.21875 L 260.09375,80.8125 L 260.09375,82.96875 L 261.28125,83.78125 L 263.84375,82.78125 L 267.4375,82.78125 L 269.21875,84.15625 L 275.9375,83.5625 L 280.90625,84.96875 L 283.6875,87.75 L 287.25,88.125 L 290.8125,89.3125 L 295.1875,85.15625 L 300.34375,83.78125 L 303.125,84.15625 L 307.25,83.75 L 306.875,81.59375 L 305.90625,77.625 L 305.5,75.25 L 307.28125,73.25 L 307.28125,70.6875 L 309.84375,67.90625 L 309.375,65.15625 L 307.875,64.75 L 306.125,63 L 301.4375,63 L 298.5,64.5625 L 298.5,63.1875 L 297.75,61.8125 L 295.96875,62.59375 L 293.8125,63.78125 L 295,62.03125 L 294.8125,60.46875 L 292.25,58.6875 L 292.25,60.65625 L 290.5,60.65625 L 286.40625,59.28125 L 284.65625,57.90625 L 282.875,59.09375 L 282.3125,60.65625 L 281.53125,60.84375 L 280.5625,59.875 L 280.5625,57.125 L 283.46875,55.1875 L 282.3125,53.21875 L 279.96875,54.21875 L 278.78125,53.21875 L 273.90625,53.8125 L 271.375,54.78125 L 268.8125,53.8125 L 268.8125,51.875 L 265.3125,50.3125 L 264.34375,47.96875 L 262.96875,48.53125 L 259.25,45.625 L 257.5,45.03125 L 256.125,46.78125 L 253.78125,47.375 L 252.8125,45.21875 L 249.78125,44.5 z ", "name" : "Somme"}, "fr-81" : {"path": "M 270.8125,396.875 L 267.4375,397.0625 L 265.15625,399.34375 L 264.4375,397.75 L 262.84375,398.65625 L 262.6875,398.28125 L 261.78125,399.1875 L 258.96875,400.25 L 256.65625,401.65625 L 250.65625,402.375 L 249.9375,405.375 L 252.25,405.375 L 249.9375,407.5 L 248.875,409.4375 L 245.53125,409.4375 L 247.28125,411.375 L 246.28125,413.03125 L 246.59375,413.15625 L 247.46875,415.78125 L 249.59375,418.28125 L 250.125,418.625 L 250.28125,421.09375 L 252.0625,423.9375 L 253.46875,425.53125 L 253.46875,427.46875 L 252.0625,428 L 253.125,429.59375 L 257.71875,431.53125 L 258.59375,432.78125 L 260.90625,435.59375 L 263.5625,436.3125 L 265.6875,435.9375 L 265.6875,438.4375 L 265.625,439.71875 L 266.78125,439.5625 L 266.5,440.9375 L 270.375,440.9375 L 273.96875,442.0625 L 274.25,438.46875 L 275.90625,438.46875 L 281.96875,439.5625 L 287.78125,439.5625 L 292.1875,438.1875 L 293.3125,434.59375 L 290.28125,431.8125 L 291.09375,429.0625 L 292.75,426.59375 L 295.5,428.5 L 302.6875,426.03125 L 303.8125,423.8125 L 300.15625,421.46875 L 298.5625,421.09375 L 297.5,422.5 L 295.375,423.03125 L 292,421.28125 L 288.46875,416.6875 L 288.46875,414.75 L 286.53125,411.1875 L 286.71875,409.59375 L 285.125,405.53125 L 282.125,404.125 L 280,400.40625 L 274.15625,399.34375 L 270.8125,396.875 z ", "name" : "Tarn"}, "fr-82" : {"path": "M 220.1875,384.6875 L 218.8125,389.15625 L 220.96875,391.5 L 220,395.21875 L 218.8125,396.59375 L 219.625,398.9375 L 215.90625,399.71875 L 212.96875,400.5 L 213.75,403.21875 L 212.28125,403.65625 L 213.15625,404.46875 L 216,404.46875 L 217.40625,403.78125 L 218.65625,404.46875 L 216.34375,405.53125 L 216.34375,407.3125 L 214.21875,408.90625 L 214.21875,411.1875 L 218.125,411.375 L 219.34375,412.625 L 219.34375,415.09375 L 220.78125,416.5 L 219.53125,418.4375 L 220.0625,419.5 L 222.53125,418.4375 L 227.65625,418.4375 L 229.09375,417.5625 L 230.84375,417.5625 L 232.78125,419.875 L 237.21875,418.625 L 238.4375,416.6875 L 236.6875,415.78125 L 237.90625,415.28125 L 238.28125,413.5 L 240.21875,413.6875 L 241.28125,414.90625 L 242.15625,413.5 L 245,412.4375 L 246.28125,413.03125 L 247.28125,411.375 L 245.53125,409.4375 L 248.875,409.4375 L 249.9375,407.5 L 252.25,405.375 L 249.9375,405.375 L 250.65625,402.375 L 256.65625,401.65625 L 258.96875,400.25 L 261.78125,399.1875 L 262.6875,398.28125 L 261.59375,395.46875 L 263.1875,392.28125 L 260.375,392.09375 L 260.03125,387.6875 L 255.78125,389.625 L 252.9375,388.9375 L 251.1875,391.0625 L 248.1875,390.6875 L 247.65625,394.21875 L 246.21875,394.21875 L 245.34375,392.28125 L 244.8125,391.40625 L 243.21875,391.5625 L 240.21875,394.75 L 236.5,394.59375 L 235.96875,392.28125 L 235.96875,390.53125 L 235.625,390.15625 L 234.375,391.5625 L 232.78125,391.5625 L 231.03125,389.625 L 229.4375,389.625 L 228.375,387.5 L 229.78125,385.90625 L 229.625,384.875 L 227.125,384.96875 L 227.4375,385.65625 L 223.125,386.4375 L 220.1875,384.6875 z ", "name" : "Tarn et Garonne"}, "fr-83" : {"path": "M 457.78125,413.1875 L 454.8125,413.3125 L 453.40625,414.75 L 448.09375,414.5625 L 443.5,417.90625 L 440.34375,415.78125 L 435.375,417.375 L 434.5,419.15625 L 430.96875,421.8125 L 424.59375,417.5625 L 419.4375,419.25 L 419.1875,420.625 L 419.28125,420.5625 L 422.46875,422.6875 L 418.21875,425.53125 L 416.46875,429.0625 L 418.59375,430.8125 L 418.40625,434.53125 L 421.78125,437.71875 L 420.875,438.4375 L 417,438.25 L 417,439.65625 L 418.75,440.53125 L 418.75,441.0625 L 417.15625,442.5 L 418.0625,443.5625 L 419.46875,443.5625 L 420.875,444.96875 L 421.0625,446.03125 L 419.28125,447.09375 L 417.875,448.6875 L 417.6875,452.5625 L 418.21875,453.28125 L 421.71875,454.84375 L 422.6875,458.75 L 424.84375,459.15625 L 426.8125,457.78125 L 430.3125,455.625 L 436.375,456.21875 L 436.1875,457.78125 L 434.21875,458.75 L 438.90625,458.96875 L 437.75,457.78125 L 437.34375,455.25 L 439.875,453.5 L 442.8125,454.46875 L 444,454.84375 L 444.96875,456.03125 L 446.34375,455.0625 L 446.71875,452.5 L 448.28125,451.15625 L 452.375,451.15625 L 453.5625,449.375 L 456.28125,450.15625 L 459.40625,448.8125 L 459.40625,443.71875 L 455.3125,443.90625 L 458.4375,441.96875 L 460,439.8125 L 460.40625,436.6875 L 466.0625,435.90625 L 469.21875,432.375 L 467.03125,430.125 L 467.03125,428.875 L 465.96875,427.8125 L 467.375,426.59375 L 467.03125,424.625 L 464.71875,423.75 L 463.5,423.75 L 461.375,421.625 L 461,417.90625 L 458.71875,416.84375 L 456.40625,416.6875 L 455.53125,414.5625 L 457.78125,413.1875 z ", "name" : "Var"}, "fr-84" : {"path": "M 387,381.34375 L 384.25,381.5625 L 382.125,384.875 L 382.6875,388.375 L 386,388.78125 L 385.4375,390.34375 L 382.875,390.53125 L 379.96875,393.46875 L 379.1875,392.5 L 379.75,388.59375 L 378.59375,387.21875 L 373.3125,388 L 372.28125,390.09375 L 372.84375,390.40625 L 376.15625,395.90625 L 376.15625,400.34375 L 381.96875,406.125 L 381.96875,408.625 L 379.71875,409.90625 L 379.875,409.96875 L 386.9375,412.96875 L 389.9375,416.3125 L 391.375,418.28125 L 395.25,420.03125 L 399.84375,419.875 L 407.4375,423.03125 L 411.6875,423.5625 L 417,422.34375 L 419.1875,420.625 L 419.46875,419.15625 L 415.40625,414.5625 L 410.96875,414.5625 L 410.96875,412.96875 L 412.5625,411.1875 L 412.5625,409.25 L 409.03125,407.5 L 408.6875,404.65625 L 410.625,403.78125 L 410.625,401.3125 L 408.5,400.9375 L 408.34375,398.28125 L 408.3125,398.09375 L 406.53125,397.96875 L 403.59375,395.8125 L 402.8125,393.28125 L 397.34375,392.875 L 393.25,392.5 L 392.84375,390.15625 L 394.21875,387.21875 L 391.6875,389.375 L 387.78125,388.96875 L 387,387.59375 L 389.71875,383.90625 L 387,381.34375 z ", "name" : "Vaucluse"}, "fr-85" : {"path": "M 138.53125,229.5625 L 137.40625,231.65625 L 134.1875,231.65625 L 135.46875,232.96875 L 134.5,236.1875 L 131.59375,237.15625 L 130.46875,236.34375 L 130.96875,233.125 L 130.15625,231.34375 L 128.375,231.34375 L 127.09375,232.78125 L 127.71875,237.3125 L 129.1875,239.40625 L 127.71875,241.03125 L 125,240.53125 L 120.96875,239.5625 L 119.84375,236.5 L 117.25,236.1875 L 113.875,234.71875 L 113.0625,232.78125 L 109.375,230.375 L 103.5625,237.875 L 103.375,242.5625 L 109.40625,248.40625 L 109.21875,250.15625 L 110.96875,250.15625 L 114.6875,261.3125 L 118.59375,263.25 L 122.5,267.15625 L 127,267.15625 L 128.75,271.0625 L 133.0625,271.0625 L 135,274 L 139.3125,276.15625 L 139.5,273.40625 L 140.59375,274.4375 L 146.5625,270.8125 L 149.3125,270.625 L 150.46875,273.75 L 154.1875,272.1875 L 157.3125,274.53125 L 159.84375,273.34375 L 162,272.75 L 162.96875,271.59375 L 165.6875,269.84375 L 163.75,267.875 L 162.1875,269.0625 L 162,267.5 L 163.375,264.9375 L 162,262.59375 L 163.15625,261.03125 L 162.5625,255.5625 L 160.625,252.65625 L 162,250.875 L 158.875,247.375 L 160.03125,244.84375 L 155.34375,240.9375 L 155.34375,238.59375 L 153.40625,235.84375 L 153.78125,235.6875 L 151.125,233.4375 L 146.125,233.4375 L 144.5,232.46875 L 142.25,232.15625 L 139.65625,229.71875 L 138.53125,229.5625 z ", "name" : "Vendée"}, "fr-86" : {"path": "M 188.75,225.6875 L 185.03125,229.59375 L 184.09375,231.21875 L 184.40625,236.03125 L 186.09375,235.8125 L 186.3125,237.9375 L 186.96875,241.34375 L 188.03125,243.6875 L 186.75,245.15625 L 187.375,246.21875 L 186.53125,247.71875 L 186.53125,248.34375 L 188.03125,250.0625 L 188.03125,251.125 L 187.375,252.8125 L 185.25,256 L 187.375,256.84375 L 188.03125,258.34375 L 187.15625,260.65625 L 186.96875,261.71875 L 185.6875,263.84375 L 185.6875,265.34375 L 186.53125,265.5625 L 186.53125,270.03125 L 188.03125,271.09375 L 187.375,272.5625 L 187.59375,273.84375 L 189.28125,275.75 L 190.15625,274.46875 L 190.15625,273.40625 L 191.84375,272.5625 L 193.125,273.40625 L 193.125,276.59375 L 191.84375,278.09375 L 190.78125,280.625 L 192.25,282.96875 L 195.25,283.8125 L 194.59375,285.75 L 191.8125,286.21875 L 194.375,289.34375 L 197.78125,289.125 L 200.75,288.0625 L 203.75,289.78125 L 204.8125,288.9375 L 204.59375,286.15625 L 206.28125,284.875 L 207.78125,287.4375 L 209.03125,288.71875 L 212.65625,287.21875 L 214.15625,285.53125 L 217.53125,285.53125 L 219.28125,286.40625 L 219.40625,282.71875 L 218.0625,281.15625 L 219.625,280 L 222.15625,277.0625 L 226.4375,276.875 L 226.4375,274.53125 L 228.59375,272.75 L 233.875,271.78125 L 234.25,268.84375 L 232.125,267.6875 L 230.9375,263.59375 L 227.8125,263.1875 L 225.875,261.25 L 222.15625,258.3125 L 222.9375,255.96875 L 222.9375,252.25 L 219.40625,248.75 L 219.03125,246 L 215.6875,242.5 L 214.53125,237.8125 L 213.15625,237.21875 L 211.59375,235.0625 L 210.03125,236.03125 L 210.4375,238.1875 L 205.34375,239.375 L 199.5,239.375 L 199.6875,237.03125 L 199.6875,233.3125 L 195,231.9375 L 195,229.59375 L 191.28125,228.8125 L 190.5,225.6875 L 188.75,225.6875 z ", "name" : "Vienne"}, "fr-87" : {"path": "M 239.53125,270.8125 L 237.78125,272.5625 L 232.875,272.1875 L 232.3125,272.0625 L 228.59375,272.75 L 226.4375,274.53125 L 226.4375,276.875 L 222.15625,277.0625 L 219.625,280 L 218.0625,281.15625 L 219.40625,282.71875 L 219.21875,288 L 218.25,289.75 L 219.8125,291.5 L 222.53125,291.71875 L 223.125,294.4375 L 223.3125,296.1875 L 219.8125,296.96875 L 218.0625,297.5625 L 218.4375,302.4375 L 216.09375,304 L 214.125,304.59375 L 213.15625,307.34375 L 211.59375,307.53125 L 210.9375,310.5 L 215.5,310.65625 L 216.5,312.59375 L 215.6875,314.75 L 217.46875,317.09375 L 218.8125,316.71875 L 220.1875,314.75 L 226.4375,315.34375 L 227.4375,319.25 L 231.71875,319.84375 L 232.6875,321.1875 L 229.75,322.5625 L 231.125,323.53125 L 235.25,324.125 L 235.5625,324.90625 L 236.65625,322.6875 L 239,323.5625 L 241.5625,320.375 L 243.03125,320.5625 L 244.3125,318.4375 L 248.125,318.875 L 249.625,317.375 L 251.53125,317.375 L 253.03125,314.625 L 255.34375,314.40625 L 256.84375,311.875 L 258.96875,312.5 L 260.46875,312.5 L 261.46875,310.78125 L 260.46875,310.15625 L 260.03125,307.625 L 261.53125,307.625 L 261.53125,306.5625 L 258.96875,304.84375 L 256.21875,303.59375 L 256.625,301.03125 L 255.78125,301.03125 L 254.71875,302.53125 L 251.3125,302.71875 L 249.40625,302.53125 L 249.40625,300.59375 L 251.75,298.6875 L 250.25,296.78125 L 246.65625,297.84375 L 247.28125,289.78125 L 245.59375,288.0625 L 243.875,283.8125 L 241.34375,283.1875 L 240.90625,280.84375 L 243.25,276.1875 L 243.1875,273.3125 L 242.65625,273.9375 L 239.53125,270.8125 z ", "name" : "Haute Vienne"}, "fr-88" : {"path": "M 459,145.9375 L 457,146.375 L 453.9375,147.53125 L 452.40625,149.4375 L 450.6875,150.59375 L 447.40625,152.125 L 446.46875,151.9375 L 444.15625,151.34375 L 441.875,151.15625 L 441.09375,148.65625 L 439.5625,149.25 L 439.375,151.9375 L 438.21875,150.78125 L 436.125,152.3125 L 434.03125,153.0625 L 431.53125,152.875 L 429.8125,153.46875 L 427.90625,152.3125 L 426.75,153.25 L 423.875,153.25 L 422.53125,155.75 L 416.21875,156.125 L 414.875,154.40625 L 412.78125,154.03125 L 412.96875,153.0625 L 414.3125,152.125 L 413.15625,151.71875 L 412.96875,148.65625 L 410.09375,148.46875 L 408.40625,149 L 407.21875,150.59375 L 404.15625,151.53125 L 404.15625,150.40625 L 403.21875,150.40625 L 403.21875,151.71875 L 399.375,152.5 L 399.375,154.21875 L 395.9375,154.65625 L 394.625,155.96875 L 395.96875,157.90625 L 399.09375,158.125 L 401.84375,161.8125 L 404.1875,161.8125 L 404.75,164.375 L 407.3125,164.75 L 407.875,166.5 L 406.125,167.6875 L 404.96875,172.96875 L 410.4375,175.6875 L 410.4375,179.78125 L 412.5625,179 L 414.34375,180.40625 L 415.6875,179.59375 L 414.9375,178.4375 L 415.90625,177.84375 L 417.25,179.40625 L 419.21875,178.03125 L 419.8125,176.09375 L 423.5,175.5 L 424.5,176.28125 L 424.3125,178.4375 L 426.84375,180.375 L 428.40625,180.1875 L 430.15625,178.8125 L 434.25,178.8125 L 437.1875,182.125 L 438.15625,182.125 L 439.71875,181.15625 L 439.9375,180 L 441.5,179.21875 L 443.25,180.375 L 445,182.34375 L 451.15625,185.59375 L 453.59375,183.5 L 453.78125,175.875 L 457.125,172.96875 L 459.0625,168.46875 L 458.46875,165.53125 L 460.8125,160.84375 L 462.96875,155.96875 L 459.25,155 L 458.46875,149.71875 L 459.25,146.1875 L 459,145.9375 z ", "name" : "Vosges"}, "fr-89" : {"path": "M 318.4375,157.34375 L 316.6875,158.6875 L 309.0625,158.3125 L 305.5625,160.0625 L 304.1875,163 L 305.75,164.75 L 303.40625,167.5 L 301.625,169.625 L 305.15625,172.96875 L 306.125,176.09375 L 308.6875,178.8125 L 308.6875,182.34375 L 303.59375,186.625 L 305.34375,188.59375 L 304.96875,191.5 L 302.21875,193.46875 L 298.3125,193.46875 L 298.90625,195.625 L 301.4375,199.125 L 302.03125,202.25 L 302.625,204.40625 L 301.46875,204.75 L 303.9375,205.3125 L 305.78125,205.3125 L 306.75,203.78125 L 308,203.78125 L 309.40625,205.03125 L 309.125,206.59375 L 310.40625,207.4375 L 312.21875,207.4375 L 314.75,209.125 L 315.875,208.5625 L 317,209.53125 L 318.125,209.25 L 320.0625,208 L 321.90625,208.5625 L 323.15625,208.28125 L 323.15625,204.78125 L 323.84375,204.90625 L 324.28125,206.71875 L 326.53125,208.125 L 326.53125,210.25 L 329.75,210.375 L 333.96875,214.3125 L 336.625,214.4375 L 336.46875,213.1875 L 337.59375,211.5 L 338.59375,212.75 L 337.75,214.15625 L 338.15625,215.4375 L 339.6875,214.4375 L 341.53125,214.4375 L 341.375,217.25 L 343.0625,218.375 L 344.34375,217.8125 L 347.46875,215.6875 L 347.28125,215.28125 L 345.4375,214.15625 L 345.3125,212.1875 L 347.28125,211.21875 L 348.125,210.09375 L 347.5625,209.125 L 347.5625,206.875 L 349.09375,204.625 L 351.34375,199.84375 L 351.75,197.75 L 353.15625,197.1875 L 353.3125,196.78125 L 352.59375,196.21875 L 352.59375,194.53125 L 354.84375,192.84375 L 355.40625,190.03125 L 354.4375,188.375 L 352.875,188.375 L 352.46875,187.9375 L 352.46875,185.5625 L 354.4375,184.15625 L 354.28125,182.75 L 354,181.34375 L 353,183.5 L 351.625,183.3125 L 350.46875,181.15625 L 346.5625,183.125 L 338.75,182.71875 L 337.78125,180.5625 L 335.625,177.65625 L 335.25,174.125 L 332.125,170.40625 L 330.15625,171.78125 L 326.625,169.0625 L 327.21875,163.78125 L 322.15625,158.5 L 319.8125,158.5 L 318.4375,157.34375 z ", "name" : "Yonne"}, "fr-90" : {"path": "M 451.4375,186.03125 L 449.625,186.96875 L 448.09375,188.09375 L 448.09375,190.59375 L 448.9375,193.5625 L 448.9375,195.5 L 448.46875,198.625 L 447.40625,199.71875 L 459.4375,205.15625 L 460.1875,204.28125 L 462.78125,203.875 L 461.8125,199.71875 L 461.21875,197.5625 L 458.46875,197.96875 L 458.09375,195.625 L 459.0625,193.84375 L 459.25,191.5 L 458.6875,190.15625 L 455.15625,187.40625 L 452.03125,187.21875 L 451.4375,186.03125 z ", "name" : "Territoire de Belfort"}, "fr-91" : {"path": "M 274.21875,136.40625 L 272.46875,137.1875 L 270.5625,137.9375 L 270.1875,140.0625 L 267.3125,141.40625 L 266.9375,143.5 L 268.28125,145.8125 L 266.34375,148.46875 L 263.5,148.46875 L 264.625,150.1875 L 263.28125,151.71875 L 262.8125,154.8125 L 263.75,155 L 264.125,157.53125 L 264.53125,158.125 L 264.9375,163.375 L 271.1875,162.8125 L 273.71875,160.46875 L 275.875,162.21875 L 281.125,162.59375 L 281.875,163.71875 L 281.875,159.78125 L 286.25,156.90625 L 284.9375,155.1875 L 285.5,150 L 286.25,148.875 L 285.3125,143.6875 L 287.03125,142.34375 L 286.6875,139.90625 L 284.53125,138.90625 L 280.90625,138.90625 L 278.8125,137.75 L 277.28125,138.53125 L 274.21875,136.40625 z ", "name" : "Essonne"}, "fr-92" : {"path": "M 277.3125,125.78125 L 273.8125,127.65625 L 273.4375,127.71875 L 271.71875,131.46875 L 272.8125,134.4375 L 274.5625,136.40625 L 274.5625,136.625 L 277.28125,138.53125 L 277.9375,138.1875 L 277.4375,137.25 L 277.9375,135.78125 L 277.625,135.25 L 277.96875,134.03125 L 277.90625,134.03125 L 276,133.0625 L 274.4375,132.625 L 274.21875,131.9375 L 274.1875,131.34375 L 275.125,130.28125 L 276.15625,130.21875 L 276.625,129.59375 L 277.75,129.09375 L 277.375,128.1875 L 277.90625,128.09375 L 278.3125,127.21875 L 277.90625,126.59375 L 277.46875,126.5 L 277.3125,125.78125 z ", "name" : "Hauts de Seine"}, "fr-93" : {"path": "M 287.28125,122.8125 L 285.4375,124.125 L 282.5625,125.4375 L 277.3125,125.78125 L 277.46875,126.5 L 277.90625,126.59375 L 278.3125,127.21875 L 277.90625,128.09375 L 277.375,128.1875 L 277.75,129.09375 L 280.28125,129.0625 L 281.09375,130.3125 L 281.25,132.0625 L 282.125,131.9375 L 282.9375,131.28125 L 284.15625,131.34375 L 285.6875,132.21875 L 286.5625,133.1875 L 286.96875,133.375 L 287.21875,133.84375 L 288.1875,134.09375 L 288.1875,131.25 L 287.03125,124.375 L 287.28125,122.8125 z ", "name" : "Seine Saint-Denis"}, "fr-94" : {"path": "M 282.9375,131.28125 L 282.125,131.9375 L 281.3125,132.0625 L 281.25,132.5 L 281.09375,132.90625 L 281.5,132.90625 L 281.71875,132.71875 L 281.625,132.40625 L 282.875,132.34375 L 283.1875,132.46875 L 283.1875,133.125 L 282.875,133.78125 L 281.0625,133.53125 L 280.78125,133.28125 L 279.9375,133.875 L 279.125,134.09375 L 277.96875,134.03125 L 277.625,135.25 L 277.9375,135.78125 L 277.4375,137.25 L 277.9375,138.1875 L 278.8125,137.75 L 280.90625,138.90625 L 284.53125,138.90625 L 286.6875,139.90625 L 286.65625,139.6875 L 288.1875,135.84375 L 288.1875,134.09375 L 287.21875,133.84375 L 286.96875,133.375 L 286.5625,133.1875 L 285.6875,132.21875 L 284.15625,131.34375 L 282.9375,131.28125 z ", "name" : "Val de Marne"}, "fr-95" : {"path": "M 255.5625,109.6875 L 254,111.625 L 252.8125,115.9375 L 251.5,118.15625 L 256.25,120.28125 L 259.875,119.625 L 264.375,122.5 L 269.1875,122.71875 L 272.59375,124.78125 L 273.46875,127.65625 L 273.4375,127.71875 L 273.8125,127.65625 L 277.3125,125.78125 L 282.5625,125.4375 L 285.4375,124.125 L 287.28125,122.8125 L 287.875,118.96875 L 286.59375,117.6875 L 282.3125,115.15625 L 278.1875,113 L 276.0625,113.96875 L 273.71875,114.5625 L 272.15625,113.375 L 269.03125,111.4375 L 266.5,113.375 L 262.78125,113.78125 L 257.5,113.375 L 256.3125,111.4375 L 255.5625,109.6875 z ", "name" : "Val d'Oise"}}});
Index: public/vendors/vmap/maps/jquery.vmap.germany.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.germany.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.germany.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add Germany Map Data Points */
+jQuery.fn.vectorMap('addMap', 'germany_en', {"width":592,"height":801,"paths":{"th":{"path":"m312.19,352.19c-2.73,0.22 -2.22,4.11 -3.64,5.97 -1.01,2.7 -4.71,2.26 -7.13,2.91 -2.52,0.84 -2.65,-2.93 -5,-3.11 -2.02,-1.67 -5.36,0.2 -4.98,2.55 -0.62,4.82 -6.22,6.91 -9.72,9.65 -2.98,3.28 -7.8,2.07 -11.1,4.73 -2.55,1.59 -5.81,3.14 -7.87,5.03 0.64,3.74 1.96,8.43 6.44,8.84 3.41,0.33 2.07,4.91 5.71,5.17 2.12,1.11 4.61,1.57 6.04,3.67 2.61,-0.18 1.95,2.83 0.13,3.41 -0.75,1.55 1.21,2.98 -0.06,4.88 -2.65,1.33 -1.59,-4.91 -4.58,-2.96 -2.15,1.14 2.24,4.28 1.18,6.62 -0.73,2.87 3.35,2.38 3.93,4.97 0.22,2.4 -1.82,4.2 -4.4,4.04 -1.89,0.05 -3.04,-2.14 -5.19,-1.69 -2.29,-1.13 -3.6,1.4 -2.29,3.19 0.92,3.27 2.06,6.86 1.64,10.24 -1.04,2.07 -1.35,6.09 -4.56,5.07 -2.5,-0.54 -3.05,2.78 -2.17,4.43 0.33,2.11 -1.94,1.58 -0.64,3.71 0.2,3.37 -2.96,5.74 -4.05,8.57 -1.46,3 3.1,3.73 4.61,2.61 -1.8,-1.67 -0.95,-4.04 1.83,-4.18 2.21,-0.46 5.52,-0.43 5.9,2.47 2.29,2.61 -2.68,2.96 -1.96,5.59 0.5,1.86 -0.79,8.31 0.95,7 1.72,-3.38 5.8,-2.18 8.88,-2.88 2.69,0.85 3.11,5.24 6.43,5.5 3.89,0.66 4.77,4.88 6.09,7.93 -0.55,3.14 2.45,3.82 4.54,1.98 0.31,5.02 5.89,6.45 10.06,7.19 -0.2,3.63 -1.27,7.43 0.53,10.84 2.35,0.1 5.18,2.71 7.07,1.85 0.03,-1.3 -1.32,-4.82 1.27,-4.26 2.07,-0.06 5.3,2.5 6.66,0.25 0.29,-2.71 -3.43,-1.58 -4.54,-3.52 -1.94,-1.64 -5.47,-2.54 -4.67,-5.79 -0.91,-3.55 3.89,-3.37 6.02,-4.77 2.87,-1.54 6.27,-0.65 9.38,-0.79 1.61,1.84 2.4,4.9 5.49,4.49 2.33,1.02 3.21,-1.38 4.71,-2.1 2.52,-0.39 4.79,2.85 4.64,5.17 -2.32,0.34 -2,2.87 -0.04,3.79 1.25,1.09 4.62,-1.62 5.78,-2.97 1.07,-2.95 1.98,-5.92 0.84,-9.01 0.33,-2.69 -1.49,-4.1 -2.06,-6.05 -0.35,-1.26 0.15,-3.52 1.89,-2.72 2.51,-0.54 3.16,-3.11 5.03,-4.31 2.41,-0.31 6.41,-0.25 6.75,2.81 -1.09,1.47 -1.71,2.75 -1.31,4.94 2.04,1.91 4.67,0.65 4.88,4.5 0.54,1.96 3.79,3.19 4.05,0.56 1.06,-1.74 3.34,-0.66 4.25,0.63 6.13,-1.07 12.67,-0.94 18.25,-3.97 -1.68,-0.65 -2.19,-2.46 -0.38,-3.31 1.4,-0.73 5.24,-2.7 2.32,-4.13 -1.1,-2.24 -4.24,-0.26 -4.55,-3.08 -1.3,-2.44 2.29,-4.28 3.11,-6.33 2.98,-0.71 2.97,-4.68 5.91,-5.31 1.95,1.54 1.58,4.54 1.16,6.72 1.66,-0.64 6.6,0.71 6.33,-0.74 -3.05,-0.17 -0.61,-3 1.2,-3.1 2.57,-1.22 5.33,-2.23 7.87,-3.14 1.72,-1.51 4.46,-4.54 0.25,-4.48 -1.74,-1.64 -3.31,-4.12 -3.69,-6.5 0.38,-2.82 0.28,-5.87 1.72,-8.41 0.89,2.58 5.82,0.77 5.81,-1.09 0.71,-1.83 4.18,-2.99 5.41,-0.97 2.56,-0.68 0.59,-4.69 3.44,-5.44 3.25,-1.87 7.85,-0.32 10.53,-2.97 -2.57,-1.55 -0.79,-6.34 -4.47,-6.16 -2.74,-0.84 -6.28,-2.6 -5.42,-6.03 0.8,-2.88 -3.5,-2.46 -5.15,-3.47 -2.87,-0.81 -6.3,-2.89 -8.61,0.02 -2.54,2.1 0.01,3.58 1.21,5.21 -0.17,3.21 -2.39,6.03 -3.68,8.9 -1.08,1.71 -2.42,1.35 -2.66,-0.64 -2.24,-4.02 -1.09,1.94 -3.66,-0.66 -2.71,-1.39 -5.95,-1.32 -8.59,0.19 -0.02,-4.6 -5.04,-6.77 -8.31,-9 -2.72,-0.06 -5.6,1.79 -8.33,0.1 -2.65,-0.52 -5.05,-1.27 -4.7,-4.45 -2.02,-1.11 -5.86,-2.21 -7.53,-1.16 -1.29,1.98 -3.84,1.06 -5.84,1.31 -1.81,-1.01 -2.04,-3.39 -2.5,-5.41 3.14,0.3 2.23,-3.59 0.51,-4.83 -1.37,-2.03 -4.15,0.89 -5.53,-1.6 -1.69,-0.96 1.02,-5.32 2.36,-2.94 1.62,-1.63 2.76,-3.73 4,-5.66 -0.78,-1.58 -4.12,-2.02 -3.47,-4.09 -2.15,-0.17 -2.01,-2.77 -1.75,-4.31 -4.91,-2.77 -10.54,-0.91 -15.84,-1.69 -2.69,-0.42 -5.41,-2.8 -8.03,-1.28 -1.99,0.45 -4.28,-1.52 -3.68,-3.5 0.86,-2.86 -0.76,-4.88 -2.35,-7.1 -1.55,-2.64 -4.98,-6.28 -2.16,-9.19 -2.47,-3.43 -7.17,-3.03 -10.89,-3.21 -0.41,0.09 -0.82,0.18 -1.23,0.27z m95.09,106.63c0.36,0.47 0.77,-0.65 0,0z","name":"Thüringen"},"sh":{"path":"m173.41,0.78c-1.96,2.02 -2.32,5.26 -3.72,7.72 0.61,-2.46 2.87,-3.44 4.94,-4.31 1.37,-2.31 1.87,-2.9 -1.22,-3.41z m-4.63,9.69c-1.37,3.14 -2.78,7.11 -2.63,10.16 1.42,-1.81 3.12,-2.33 4.66,-0.67 1.41,1.35 2.9,1.87 4.52,0.27 2.61,-1.53 -0.74,-0.41 -1.92,-1.16 -2.06,-1.81 -4.59,-3.55 -3.89,-6.71 -0.29,-0.68 0.25,-4.89 -0.73,-1.88z m16.78,8.5c-1.27,2.96 0.71,4.89 2.59,6.89 3.39,3 2.55,7.98 4.79,11.67 0.62,3.55 5.38,3.23 6.46,6.57 3.09,5.18 8.01,9.55 9.53,15.49 -0.32,3.65 -4.55,4.93 -6.72,7.41 -1.75,1.07 -3.73,2 -5.62,0.78 -2.44,0.59 -7.26,-0.45 -7.37,2.95 0.9,2.44 -1.97,3.88 -3.95,4.18 -1.94,-2.13 -2.52,-1.01 -2.77,1.45 -0.87,2.9 3.21,3.7 4.93,4.64 1.92,-3.3 6.38,-1.94 9.56,-2.06 2.21,2.21 1.18,5.9 0.57,8.61 -1.14,2.05 -2.44,4.23 -0.74,6.43 0.5,2.36 2.45,2.12 4.01,1.08 3.24,-0.45 3.19,4.26 4.78,6.16 2.07,2.16 -0.11,6.53 -3.11,5.16 -1.14,-1.75 -5.79,-1.46 -5.26,0.73 2.63,2.93 2.85,7.1 5.04,10.2 1.56,1.12 3.1,3.53 5.09,1.5 1.43,0.34 0.36,3.67 3.4,2.47 5.03,0.4 10.67,-0.76 14.8,2.92 4.21,3.5 4.64,9.55 8.23,13.45 3.79,1.81 5.25,6.01 5.59,9.84 1.82,3.22 5.7,4.78 8.7,6.74 2.98,1.76 2.45,-2.04 3.3,-3.87 0.32,-3.07 2.7,-3.68 2.95,-0.51 1.97,4.21 4.12,0.09 5.74,-1.98 1.13,-1.81 1.09,-3.61 3.84,-2.85 2.75,1.63 4.73,-1.94 6.94,-3.16 -0.04,-2.48 1.02,-3.47 3.73,-4.47 1.51,-1.18 4,-1.93 4.95,0.16 -0.92,3.02 -1.41,6.74 1.26,9.04 1.1,1.47 -0.59,3.76 -1.58,5.02 -3.72,1.55 -2.94,7.3 0.6,8.57 3.05,0.71 1.81,2.28 4.18,4.34 1.9,2.3 3.7,4.33 6.71,5.17 4.24,1.47 7.8,5.01 12.4,5.13 1.57,-2.96 0.71,-7.47 3.24,-9.94 1.76,-0.99 3.85,1.15 5.23,-1.34 4.78,-3.66 7.65,-9.11 11.5,-13.72 0.07,-2.89 2.79,-4.69 1.09,-7.69 -1.21,-2.36 -3.12,-1.39 -5.13,-1.38 -2.37,-1.11 -4.33,-3.37 -5.88,-5.25 0.57,-2.78 0.94,-5.55 -0.72,-8.01 -1.68,-4.33 3.4,-6.71 6.26,-8.75 2.76,0.39 4.62,-1.55 2.8,-4.28 -2.57,0.04 -0.18,-3.45 -2.47,-3.84 -2.6,1.03 -5.44,-0.16 -6.16,-2.94 -1.95,-2.52 -0.1,-5.31 2.05,-6.91 1.09,-2.74 3.32,0.44 5.2,-0.9 2.94,-4.13 6.93,-7.19 11.06,-10.05 2.63,-1.56 0.21,-5.06 0.5,-7.57 -0.21,-3.63 -1.2,-7.39 -0.01,-10.84 0.18,-2.96 -5.24,-0.47 -7.49,-1.07 -5.13,1.62 -7.3,9.04 -13.4,8.34 -3.13,0.69 -4.64,-2.86 -6.1,-4.84 -4.97,-2.87 -10.19,-5.54 -15.47,-7.76 -2.99,-1.52 -6.08,0.55 -8.5,2.13 -0.97,2.39 -2.38,4.59 -2.88,7.13 -1.56,-1.44 -3.01,-3.67 -0.84,-5.3 1.62,-1.77 -1.68,-4.84 0.9,-6.58 0.02,-1.27 -2.39,-3.21 -3.97,-2.94 -4.31,0.8 -8.65,1.68 -12.59,3.47 -2.43,1.23 -4.15,-0.86 -4.81,-2.94 1.24,-1.68 2.97,0.32 4.34,-1.22 3.92,-1.6 8.22,-4.79 7.48,-9.56 -0.08,-4.17 0.91,-8.43 -1.14,-12.32 -1.21,-3.12 -1.73,-8.59 -5.28,-9.18 -0.59,1.71 -1.3,5.52 -3.94,3.91 -3.94,-2.44 -5.62,-7.87 -10.62,-8.75 -2.4,-0.95 -5.92,-1.49 -2.94,-4.34 -2.83,-1.32 -4.46,2.91 -6.75,4.06 -1.81,0.77 -3.7,1.77 -5.55,1.1 -2.17,-0.1 -2.78,3.34 -5.32,2.53 -2.44,-0.17 -5.39,0.15 -5.47,-3.04 1.26,-2.25 -1.79,-2.35 -3.37,-3.29 -2.69,-1.82 -6.3,0.87 -8.88,-1.52 -3,-2.97 -8.01,-2.63 -12.09,-2.77 -2.73,-0.05 -5.94,1.35 -8.19,-0.63 -2.53,-0.79 -2.34,1.14 -3.28,2.91z M165.38,30.69c0.26,2.81 0.4,-8.09 0.17,-2.47 -0.06,0.82 -0.12,1.65 -0.17,2.47z m13.5,1.44c-2.38,0.11 -5.93,-0.19 -6.48,2.95 -0.84,2.31 2.84,2.19 4.01,3.33 2.08,0.12 5.59,1.6 6.02,-1.46 1.83,-2.49 -0.07,-5.86 -3.55,-4.82z m-11.97,6.41c-1.92,2.44 0.88,5.14 2.25,6.97 3.61,0.13 0.82,-1.45 -0.03,-3.16 -0.91,-0.75 -0.95,-5.89 -2.22,-3.81z M181.53,44c-3.16,2.07 3.2,-1.05 4.68,-0.94 3.57,-2.86 -4.04,0.86 -4.68,0.94z m-1.31,6.22c-3.19,-0.54 3.33,2.8 0.63,-0.13 -0.17,-0.12 -0.42,0.08 -0.63,0.13z m8.44,2.63c-1.5,0.95 -5.02,0.69 -5.3,2.69 0.04,2.05 2.12,3.65 4.01,2.44 0.45,-0.74 3.48,-5.42 1.28,-5.13z m142.28,2.25c-2.22,2.09 -3.42,5.93 -2.84,8.5 1.81,-1.93 6.45,-1.17 5.53,2.13 0.75,2.01 5.23,1.5 7.53,1.68 3.9,0.79 4.95,-0.34 2.64,-3.56 -1.78,-3.59 -4.09,-7.7 -8.61,-7.85 -1.38,-0.32 -3.03,-0.37 -4.25,-0.9z m-134.34,2.94c-1.42,2.56 1.08,4.09 3.5,3.69 1.95,-0.37 3.87,-2.9 3.63,-4.91 -2.37,-0.51 -4.91,-1.04 -6.76,0.98l-0.36,0.24z M140.06,88.88c-0.28,2.81 2.92,0.39 0,0z m48.13,13.38c-1.61,1.32 0.69,2.85 0.06,-0.03l-0.06,0.03z","name":"Schleswig-Holstein"},"st":{"path":"m367.5,207.72c-2.53,0.49 -2.68,6.11 -5.69,3.88 -1.54,-0.27 -2,4.74 -0.62,6.28 -1.83,0.03 -4.69,1.23 -5.84,3.45 -2.16,1.75 -5.06,2.95 -7.73,3.81 -1.55,-0.32 -3.98,0.25 -4.38,-1.66 -3.96,-2.32 -9.18,-1.22 -13.69,-1.78 -0.82,1.11 0.07,3.08 -1.73,3.89 -1.82,3.69 -6.1,1.61 -9.28,2.54 -2.64,-0.11 -4.45,1.7 -3.62,4.38 -0.45,3.07 1.59,5.83 2.38,8.76 4.58,2.95 6.91,8.32 9.22,13.03 -1.02,4.14 2.73,7.03 5,9.88 -2.35,-0.75 -6.67,0.93 -4.41,3.78 2.13,2.7 4,5.66 7.03,7.25 2.19,1.61 0.12,4.97 -2.22,4.59 -1.88,2.15 -0.66,5.73 1.52,7.3 1.12,1.37 4.12,3.9 1.64,5.39 -1.82,-0.07 -4.08,1.44 -3.31,3.44 0.85,1.22 3.42,-0.32 2.88,2 0.05,3.3 -3.89,4.53 -5.42,6.71 -0.9,2.3 0.67,6.76 -2.83,4.48 -2.5,-0.5 -4.36,0.86 -6.64,1.31 -3.5,0.14 -7.17,-0.75 -10.56,0.56 0.56,2.46 -2.44,4.29 -4.71,3.94 -2.29,1.2 4.79,4.03 4.2,5.21 -3.3,0.45 -2.03,3.05 0.01,3.98 1.13,2.32 -0.87,4.55 -2.86,5.36 -2.94,1.53 -1.17,5.3 -1.3,7.86 2.06,2.6 4.65,5.37 5.72,8.78 -0.64,2.04 0.85,6.26 3.56,4.75 3.65,0.5 8.21,-0.2 10.69,3.16 4.64,-2.48 0.38,1.08 -0.35,3.49 0.67,3.87 3.9,7.06 5.79,10.42 0.02,2.22 -1.14,5.56 1.78,6.09 2.2,-1.04 4.22,-0.48 6.44,0.45 5.84,2.46 12.54,-0.89 18.17,2.38 2.32,0.62 -0.45,4.34 2.28,4.54 1.79,0.31 -0.33,2.19 2.35,3 1.69,0.92 2.02,2.61 0.5,3.94 -1.45,1.35 -2.21,4.99 -4.56,4.59 -2.63,-0.91 0.09,3.99 2.28,1.66 2.83,0.66 5.62,4.8 3.25,7.41 -2.57,1.08 1.05,5.18 3.56,3.71 1.96,-0.79 2.91,-2.94 5.65,-1.43 2.6,0.08 6.05,0.91 5.78,4.15 1.33,1.52 4.58,2.03 6.72,2.37 2.49,-0.44 5.14,-1.91 7.2,0.43 2.77,1.74 6.17,3.82 6.94,7.21 2.79,-1.13 5.73,-0.73 8.41,0.53 1.23,-2 2.73,-1.49 3.69,0.66 0.59,3.07 2,-0.72 2.48,-1.83 0.83,-2.27 3.92,-5.75 0.2,-7.01 -1.99,-2.12 2.54,-4.35 -0.47,-5.52 -3.54,-1.32 0.06,-3.71 -3.77,-3.68 -1.13,-1.82 -0.14,-5.31 -0.45,-7.77 0.09,-3.62 -2.36,-6.17 -3.27,-9.5 -2.24,-2.8 3.78,-1.95 2.18,-4.77 -0.27,-3.83 -1.97,-7.24 -2.66,-10.91 1.12,-2.57 2.7,-5.07 2.75,-7.88 2.68,-2.78 6.09,-4.94 9.75,-6.06 4.81,0.08 9.58,-1.34 13.94,-3.25 0.29,-3.17 3.92,1.99 5.64,-1.8 0.58,-1.59 1.27,-4.54 3.8,-3.39 2.22,1.16 4.46,1.71 7.03,1.3 4.79,-0.31 9.85,0.27 14.45,-1.01 2.63,-2.16 7.03,-3.34 7.55,-7.13 -2.51,-3.21 -2.57,-7.84 -4.05,-11.66 -1.56,-2.32 0.46,-2.56 1.11,-3.49 -1.21,-1.69 -2.84,1.88 -4.93,0.87 -3.35,0.33 -4.21,-4.14 -7.34,-4.73 -1.95,-1.81 -4.21,-0.39 -6.46,-1.61 -1.95,-1.37 -5.09,-1.98 -5.86,-4.32 -2.25,-0.71 -4.5,-3.34 -6.75,-2.88 0.04,3.1 -4.02,3.62 -6.31,2.65 -6.29,-1.76 -13.04,-4.4 -16.59,-10.25 -1.82,-2.88 -4.27,-5.73 -5.88,-8.53 1.69,-2.65 1.92,-5.52 1.61,-8.56 0.08,-3.49 1.94,-6.54 3.57,-9.44 -0.44,-3.76 -2.35,-8 0.31,-11.34 1.69,-3.42 -2.77,-5.17 -4.84,-4.84 -0.77,1.84 -4.03,2.12 -4.73,-0.07 -3.16,-2.02 -0.66,-5.45 -0.28,-8.33 0.25,-2.72 1.68,-3.75 3.82,-4.6 0.52,-2.45 0.69,-5 -1.29,-6.86 -2,-2.13 -0.72,-5.29 -0.24,-7.76 2.19,-2.1 2.75,-4.3 1.28,-7.4 -0.37,-2.87 -3.52,-1.27 -5.2,-0.49 -2.2,0.23 -1.98,-4.35 -5.66,-2.08 -3.04,0.71 -6,0.64 -8.83,-0.79 -2.04,-1.1 -6.47,-1.05 -6.16,-4.18 0.48,-0.96 2.72,-2.17 0.45,-2.84 -2.36,-0.92 -4.97,-4.41 -7.35,-1.78 -2.26,0.12 -3.78,-2.34 -5.44,-3.56 -1.33,-1.14 2.25,-2.99 -0.03,-2.78z m-35.72,88.19c-0.1,0.03 0.04,0.06 0,0z","name":"Sachsen-Anhalt"},"sn":{"path":"m438.91,347.22c-0.71,1.7 -1.23,3.74 -3.22,4.5 -2.58,1.63 -3.52,-1.1 -5.94,1.53 -4.3,1.22 -8.55,2.77 -13.09,2.53 -3.01,1.74 -7.34,3.17 -8.45,6.62 0.03,3.26 -3.77,5.91 -1.75,9.19 1.33,3.2 1.78,6.8 2.19,10.31 -4.06,0.29 -2.18,3.87 -0.74,6.17 2.24,3.72 1.36,8.42 1.53,12.58 2.6,-0.28 2.73,2.06 3.18,3.2 1.51,2.44 3.44,1.13 5.41,0.39 3.7,1.5 8.18,1.88 11.41,4.16 0.74,1.94 -0.81,4.85 2,5.77 1.72,1.99 6.37,0.62 6.03,4.01 -0.35,2.66 3.75,3.98 1.22,5.97 -3.58,1.98 -8.34,0.37 -11.41,3.34 -0.07,2.05 -0.66,4.73 -3.19,4.69 -0.84,-2.38 -4.84,-0.74 -3.91,1.56 -2.16,0.55 -4.73,2.38 -6.75,1.41 -0.26,3.26 -1.99,6.93 0.66,9.67 0.13,3.51 6.2,1.64 4.46,5.11 -1.54,2.13 -3.26,4.42 -6.11,4.51 -2.19,1.15 -4.93,1.82 -6.85,3.17 1.14,0.4 3.92,-0.58 2.97,1.81 -1.3,0.56 -2.71,1.18 -4.15,1.04 -1.87,-0.95 -6.83,1.68 -5.71,-1.56 0.5,-1.28 0.39,-7.08 -1.74,-3.97 -0.56,2.99 -4.53,3.58 -5.56,6.44 -1.97,1.1 -1.24,4.78 1.19,3.64 1.33,1.03 5.21,3.22 2.79,5.13 -0.59,1.68 -5.69,2.39 -2.69,4 2.14,0.67 3.79,2.61 5.05,4.37 -0.72,2.68 -0.54,4.28 2.54,4.44 2.89,0.5 5.02,2.48 7.96,1.72 3.8,-1.14 4.85,3.42 6.85,5.61 1.23,2.16 4.76,5.08 2.59,7.58 -0.49,1.72 3.93,3.14 3.09,0.38 -2.48,-2.46 -0.08,-6.44 1.28,-8.97 2.86,-4.57 6.53,-8.74 9.94,-12.84 4.56,-2.02 9.99,-0.84 14.06,-4.03 2.14,-0.66 4.2,-3.73 6.38,-3.05 2.63,1.52 5.07,3.45 7.78,4.83 2.07,-1.12 5.11,-3.24 4.13,-5.91 0.2,-2.04 -0.2,-5.69 2.84,-5.24 2.59,-0.29 5.2,-0.72 7.63,0.55 2.91,-0.54 1.72,-4.96 3.88,-6.45 2.35,-2.97 5.63,-5.26 8.68,-7.26 2.67,-0.81 5.51,3.8 7.01,0.39 1.65,-1.64 3.72,-4.3 2.58,-6.74 3.93,-2.17 7.47,-5.47 12.25,-5.22 2.33,-0.49 4.94,-0.78 7,0.62 2.41,-0.15 5.15,-2.09 4.01,-4.81 -1.95,-3.53 3.27,-1.43 5.18,-3.05 2.77,-1.08 6.09,-1.25 7.96,-3.69 5.86,-2.9 11.49,-6.39 17.78,-8.32 1.88,-3.11 -0.76,-3.48 -3.2,-3.83 -2.51,-0.45 -4.28,-2.72 -5.9,-4.48 1.17,-2.33 1.01,-5.72 3,-7.44 2.01,-0.54 2.32,2.64 4.53,2.3 2.11,1.26 6.52,1.34 7.5,-0.58 -0.17,-3.74 3.64,0.67 5,1.7 3.7,2.16 4.3,6.67 5.45,10.42 1.49,2.62 -2.09,6.06 2.42,6.33 2.67,0.89 5.37,2.57 8.28,1.87 0.47,-3.78 1.26,-7.7 4.06,-10.39 2.84,-3.18 3.04,-7.91 3.71,-11.62 2.05,-4.17 1.85,-9.14 2.71,-13.74 0.26,-3.07 0.84,-6.1 1.99,-8.91 0.22,-5.15 -3.62,-9.39 -5.25,-14.09 -0.63,-2.47 0.48,-5.37 -1.69,-7.4 -2.96,-2 -6.81,-2.81 -10.16,-4.16 -2.63,0.45 -5.28,-0.92 -5.64,-3.77 -0.41,-2.32 0.72,-4.39 -0.77,-0.54 -0.78,2.23 -4.07,1.99 -5.91,1.44 -0.89,-2.72 -3.76,-2.22 -5.89,-1.05 -2.43,0.03 -4.2,1.93 -3.78,3.04 -2.98,-1.35 -5.85,1.55 -8.48,2.42 -3.55,-1.67 -7.51,-1.35 -11.28,-1.56 -3.58,3.73 -3.22,9.41 -5.54,13.67 -1.24,3.16 -4.34,3.42 -7.26,3.89 -3.26,1.02 -6.88,-0.1 -9.67,2.35 -1.59,0.79 -4,-0.13 -5.49,-0.56 -4.01,0.9 -8.8,0.36 -12.18,-2.44 -2.57,-1.34 -4.55,-3.47 -6.76,-5.28 -2.23,1.37 -5.63,2.37 -6.56,4.87 -0.02,1.86 -4.09,1.87 -5.44,1.29 -1.42,-2.13 -2.64,-3.94 -1.26,-6.61 0.56,-3.54 0.3,-7.09 -1.63,-10.2 -0.72,-1.89 -2.32,-5.98 -4.72,-4.31 -2.79,1.33 -2.48,-5.48 -5.68,-3.53 -5.59,0.15 -11.31,0.77 -16.84,0.31 -1.25,-0.57 -2.44,-1.63 -3.94,-1.22z","name":"Sachsen"},"sl":{"path":"m63.72,553.88c-2.9,2.18 -6.1,2.82 -9.5,4.44 -3.47,4.51 -10,4.1 -15.06,5.38 -4.6,0.18 -8.97,-1.26 -13.22,-2.78 -2.47,1.73 -0.51,5.04 -0.84,7.5 1.8,0.96 4.08,-1.32 5.97,0.4 2.44,1.62 5.28,3.2 6.78,5.81 -3.49,0.44 0.05,4.79 -0.09,6.94 1.05,3.41 4.13,4.95 6.56,7.16 1.79,1.94 0.3,5.34 3.04,6.13 2.43,1.92 -2.53,4.66 1.39,5.86 2.37,0.12 6.25,2.27 7.13,-1.09 -0.35,-2.25 -3.03,-3.71 0.38,-4.78 4.42,0.26 10.1,1.27 11.81,5.94 0.51,1.58 -0.22,5.5 1.56,5.84 2.33,-0.7 1.95,-7.32 3.65,-3.1 1.02,1.94 2.67,2.87 4.44,1.6 2.61,-0.08 5.35,0.47 7.44,1.84 0.63,-1.3 5.37,-2.76 3.56,-3.91 -1.62,-2.52 -4.36,-5.17 -3.81,-8.41 1.42,-2.72 5.03,-3.05 6.69,-5.31 0.32,-2.19 -0.19,-4.41 0.63,-6.91 -2.49,1.08 -4.55,-2.01 -6.84,-2.72 1.25,-2.57 -1.08,-3.33 -2.41,-4.88 -1.38,-2.57 3.05,-1.81 2.04,-4.46 0.15,-3.03 0.9,-7.08 -0.66,-9.48C81.13,563.37 78.01,559.23 75,558.25c-1.82,-1.1 -4.05,-5.12 -6.16,-3.76 -1.8,1.27 -2.93,1.15 -3.06,-0.42 -0.68,-0.01 -1.4,-0.33 -2.06,-0.19z","name":"Saarland"},"rp":{"path":"m124.22,422c-3.08,1.37 -2.76,4.11 -2.15,6.91 -0.74,2.27 -2.92,4.57 -5.35,5.28 1.82,2.98 -1.68,6.02 -4.55,6.28 -3.87,1.42 -8.15,2.76 -11.74,4.31 -2.53,-1.67 -5.28,-0.25 -4.24,2.84 0.38,2.78 -1.77,4.53 -4.33,4.8 -2.21,0.9 -4.57,1.03 -6.93,0.89 0.24,-3.01 0.16,-2.77 -0.66,-0.16 -2.61,2.5 -6.78,2.21 -10.16,3.14 -1.7,1.36 -3.59,4.13 -6.33,3.09 -1.84,0.93 -1.47,5.36 -2.5,7.61 -0.31,2 -3.88,3.46 -5.32,1.71 -2.49,-2.13 -5.07,1.92 -3.92,4.39 -1.32,2.14 3.87,6.32 1.33,6.03 -2.57,-0.38 -4.98,1.47 -7.53,-0.25 -1.87,-0.86 -4.14,-1.17 -5.28,-3.06 -3.07,1.11 -6.64,2.41 -9.75,2.06 -1.18,-2.88 -5.27,-3.74 -3.13,0.21 0.06,1.85 3.77,4.69 0.04,3.72 -2.34,1.34 -4.33,-0.2 -6.47,-0.11 -0.71,2.72 -2.48,4.43 -4.99,5.59 -1.73,1.37 -5.12,2.04 -4.14,4.93 1.73,3.46 -1.97,4.26 -2.68,6.98 -1.38,4.14 -2.64,8.53 -0.77,12.73 1.47,5.09 3.95,10.18 7.71,13.93 3.19,1.73 6.27,3.8 8.6,6.49 1.94,2.68 4.29,-1.39 6.06,0.93 1.74,1.25 1.47,4.34 1.36,6.37 -1,5.55 -4.71,9.97 -7.61,14.63 -1.1,1.62 -3.21,1.58 -3.81,3.7 1.32,3.4 5.62,2.86 8.44,4.25 6.02,0.99 12.25,-0.27 17.78,-2.55 1.84,-1.13 2.94,-3.18 5.35,-3.48 2.7,-0.62 4.85,-2.4 7.33,-3.4 2.47,-0.56 3.3,1.96 4.66,0.63 1.69,-1.87 4.4,2.01 6.06,3.12 2.19,1.85 4.96,3.22 7.6,4.23 2.08,-1.3 3.07,-1.77 3.74,1 0.63,3.7 0.2,7.6 -0.21,11.34 -3.62,0.15 -1.02,2.73 0.84,3.34 -0.88,3.1 1.79,3.86 4.18,5.17 2.7,-0.99 3.7,-0.04 2.19,2.5 -0.63,2.28 0.81,4.56 -1.1,6.61 -1.8,1.77 -5.4,2.25 -6.16,5.03 0.5,2.47 2.45,5.22 3.88,6.72 0.53,-2.07 4.25,-1.3 6.09,-2.06 2.18,0.88 4.73,2.02 3.59,4.81 0.57,4.16 4.15,6.47 7.58,8.3 4.06,2.82 9.28,1.81 13.75,1.03 5.57,0.87 11.49,1.89 16.04,5.46 1.5,1.92 4.34,2.91 6.75,3.03 1.44,0.1 3.88,-0.46 4.75,1.03 2.73,-1.42 4.25,-4.04 4.38,-7.03 0.97,-3.35 4.62,-5.13 4.47,-8.92 0.59,-3.28 2.22,-6.72 1.35,-9.86 0.74,-2.94 4.48,-3.42 5.84,-6.03 2.45,-0.61 0.47,-2.16 -0.81,-2.44 -2.02,-2.71 2.93,-3.58 2.9,-6.17 0.3,-2.2 -0.42,-4.5 0.69,-6.55 -1.31,-0.77 -4.55,0.38 -4.34,-2.22 1.3,-2.38 -0.67,-5.57 -0.94,-8.16 -1.05,-1.55 -0.56,-3.22 -0.06,-4.81 -2.06,-3.14 -3.58,-6.56 -4.31,-10.28 -0,-3.21 3.88,-3.16 5.84,-4.38 1.83,-1.95 0.9,-4.67 -1.26,-6.04 -2.48,-3.08 -4.3,-6.94 -4.99,-10.83 0.78,-1.71 1.4,-3.41 0.25,-5.25 -0.12,-3.38 -3.6,-5.04 -5.13,-7.75 -2.86,-3.27 -7.52,-1.08 -10.66,0.56 -4.69,1.79 -9.52,4.51 -14.68,3.47 -2.44,-2.49 -4.42,-5.7 -6.29,-8.66 -2.19,-2.94 2.65,-2.19 3.79,-4.33 1.44,-3.52 5.56,-1 5.95,-3.31 1.05,-2.62 -4.12,-2.88 -2.51,-5.79 1.38,-2.83 4.79,-3.85 7.44,-4.63 1.92,2.63 5.73,-0.22 2.09,-1.81 -1.3,-2.26 2.57,-3.89 4.23,-2.24 3.08,0.46 1.96,-3.71 0.96,-5.33 -1.37,-3.08 -3.17,-5.78 -6.33,-7.23 -3.79,-0.63 -1.12,-3.37 -0.49,-6.08 0.24,-1.88 -1.87,-3.91 -0.43,-6.13 1.19,-2.18 3.39,-6.07 6.28,-3.97 1.67,3.39 3.78,0.05 4.16,-2.21 1.81,-2.05 -0.69,-2.3 -1.07,-3.97 -0.17,-2.37 -1.93,-5.43 0.13,-7.42 -0.88,-3.78 -6.22,1.19 -5.36,-1.83 1.28,-4.22 -5.99,-5.38 -4.53,-9.85 1.32,-2 0.84,-5.3 -1.94,-5.86 -1.78,-2.03 -5.71,-1.54 -6.82,-3.48 -0.21,-1.96 2.71,-4.06 -0.25,-4.94C125.29,422.08 124.64,421.87 124.22,422z","name":"Rheinland-Pfalz"},"nw":{"path":"m177.25,263.34c-2.1,-1.63 -5.7,-1.31 -6.06,1.91 0.19,3.63 -4.48,4.11 -7,3.66 -1.11,-1.64 -4.06,-2.21 -2.35,0.66 0.52,3.14 4.56,4.05 6.57,6.26 1.92,1.46 2.52,4.49 2.62,6.8 0.18,2.64 0.19,5.1 -0.9,7.58 -1.32,1.99 0.48,3.83 2.46,3.92 3.25,0.58 0.3,2.71 -0.78,3.97 -1.55,0.88 -3.89,0.86 -4.75,2.84 1.66,2.95 -2.56,1.58 -4.29,1.1 -2.41,-0.95 -5.38,-1.98 -7.02,0.74 -2.16,1.92 -4.56,3.57 -7.26,4.5 -1.87,2.2 -2.96,-0.94 -5.46,-0.31 -2.18,0.39 -2.63,4.37 -4.84,2.75 -2.6,-0.41 -3.41,-2.28 -4.46,-4.35 -2.31,-1 2.21,-2.81 3.55,-2.98 3.51,0.2 5.07,-3.48 2.41,-5.69 -1.71,-1 -4.92,-1.05 -5.1,-3.81 -0.4,-2.56 2.07,-4.87 2.81,-7.19 0.91,-0.72 -1.83,-2.26 -0.5,-3.69 3.14,-1.64 1.45,-5.72 -1.26,-6.8 -2.05,-1.15 -4.05,1.71 -6.33,0.21 -2.51,-1.72 -6.07,-2.59 -6.27,-6.18 -0.22,-2.85 -2.57,-3.65 -4.96,-4.34 -1.35,-0.64 -3.78,3.65 -1.27,3.96 1.72,1.12 -0.74,4.19 -1.92,5.19 -4.58,2.06 -9.39,4.71 -12.83,8.28 -0.91,2.09 -3.91,0.71 -4.63,3.16 -3.68,0.16 -7.44,-1.07 -11.03,-0.19 -1.13,2.36 -3.53,1.5 -5.41,2.92 -3.3,2.56 -8.23,3.82 -10.15,7.67 -0.16,4.41 -5.85,3.29 -8.27,5.42 -1.07,1.95 -3.97,5.3 -0.36,6.02 2.12,2 6.43,3.97 4.59,7.5 -2.07,2.76 -4.18,5.76 -7.59,6.94 -1.43,-2.65 -3.58,-2.35 -5.97,-1.09 -2.93,0.68 -5.59,2.43 -8.37,3.24 -1.83,0.92 -6.4,-1.52 -6.2,0.14 1.25,2.44 1.32,5.11 -1.64,2.71 -2.84,-2.65 -6.23,-5.14 -10.34,-4.5 -2.26,1.13 -4.86,1.79 -7.57,1.91 -2.94,-0.3 -6.47,1.11 -7.66,3.97 0.91,4.49 1.78,9.09 3.5,13.31 3.65,0.48 3.87,3.28 3.59,6.38 -0.03,2.95 4.03,4.36 4.95,7.23 3.16,3.93 2.85,9.32 1.32,13.83 -1.07,2.64 2.37,5.59 -1.15,7.3 -2.71,3.53 -6.04,6.82 -8.16,10.71 -0.6,1.66 -1.81,5.57 0.42,6.15 1.79,-1.07 4.45,-3.48 6.03,-0.89 -1.83,0.74 -3.77,2.52 -4.63,4.79 -4.06,2.72 -7.88,5.86 -12.82,6.75 -2.54,0.57 -4.87,1.7 -3.17,4.63 0.65,3.73 2.86,3.68 5.9,3.34 1.73,-0.12 4.7,0.11 2.92,2.43 -1.62,2.73 0.97,3.7 3.18,4.3 2.89,0.68 -1.54,3.27 0.66,4.81 0.17,1.78 -1.03,5.56 -2.97,3.06 -2.7,0.41 -2.86,4.47 -3.11,6.49 1.25,3.17 3.86,4.98 6.86,6.32 1.73,2.64 2.03,6.34 4.88,8.31 -3.91,1.75 5.55,0.78 2.22,4.39 0.29,3.25 -5.37,3.94 -3.38,7.37 0.76,1.42 1.86,4.52 3.66,2.67 3.25,-0.44 6.22,1.26 7.36,4.35 2.36,2.77 -0.08,6.31 -0.45,9.15 2.56,4.82 -0.8,-1.03 2.06,-1.07 2.71,-1.06 3.44,4.11 6.19,2.53 2.75,0.37 5.82,-2.69 8.02,-1.5 1.92,2.23 5.39,3.01 8.14,3.37 3.72,-0.21 2.3,-1.41 1.51,-3.82 0.04,-2.95 -1.16,-6.55 2.63,-7.5 2,-1.69 3.89,3.12 6.16,0.31 1.15,-2.86 1.77,-6.3 2.41,-9.46 2.7,1.12 5.4,-0.08 6.75,-2.56 3.27,-1.13 7.52,-0.86 10.35,-2.91 0.37,-1.12 0.98,-4.32 2.62,-2.66 -0.82,3.1 2.33,2.44 4.39,1.84 2.3,-0.53 5.31,-1.22 4.81,-4.28 -0.51,-2.22 0.4,-5.33 3.3,-4.47 2.78,1.45 5.46,-1.31 8.27,-1.76 3.1,-1.68 7.91,-1.4 9.45,-5.05 -0.47,-2.98 -4.28,-3.7 0.44,-3.18 2.74,-1.08 5.31,-3.89 4.08,-6.99 -1.04,-2.52 1.87,-4.26 3.71,-5.24 2.21,0.36 5.37,2.16 3.03,4.28 -1.84,2.46 1.06,2.47 2.69,2.94 2.57,1.6 7.18,2.77 6.12,6.74 -0.22,1.83 -1.49,3.93 0.54,5.35 1.58,1.78 4.44,3.29 3.47,6.09 1.92,-1.91 4.28,0.75 5.25,0.78 1.15,-1.97 2.94,-4.17 0.84,-6.13 -1.97,-2.33 -1.27,-4.35 1.26,-5.9 2.67,-2.21 4.81,-5.42 7.75,-7.15 2.53,-0.53 5,4.12 6.81,1 1.81,-2.99 4.43,-5.63 4.94,-9.19 1.73,-1.11 2.77,-3.4 4.66,-4.63 0.39,-1.91 -1.57,-4.12 -1.75,-6.25 0.73,-3.23 4.88,-3.7 7.64,-2.9 1.98,0.85 4.51,0.77 5.94,-0.93 1.31,-3.2 3.81,-6.24 2.52,-9.88 -0.64,-1.84 0.53,-6.24 -2.48,-5.85 -2.48,0.46 -4.55,3.29 -7.13,2.53 -1.37,-1.68 -3.72,-3.65 -1.3,-5.48 2.34,-4.53 6.76,-7.46 11.73,-8.41 3.83,-1.47 7.94,-1.54 11.98,-1.11 1.92,-2.78 -0.9,-3.85 -1.9,-6.19 -1.82,-1.61 -1.41,-4.36 1.19,-4.68 3.14,-1.44 7.01,-2.83 10,-0.32 2.4,1.63 -0.27,3.86 1.25,5.59 1.92,0.62 4.04,0.65 4.63,-1.66 3.98,-3.61 9.19,-6.08 11.4,-11.26 1.23,-2.28 4.7,-5.14 4.82,-6.65 -1.68,0.55 -4.34,-0.05 -3.2,-2.36 0.05,-5.23 2.13,-10.09 3.74,-14.92 1,-2.69 -2.16,-5.66 -4.66,-4.72 -3.16,2.83 -0.64,-2.27 -0.81,-4.06 -0.05,-2.72 -2.54,-1.8 -3.99,-2.62 -2.61,-2.3 -7.4,-3.71 -6.62,-8.03 0.39,-2.34 -1.28,-5.79 0.83,-7.47 -2.23,-1.73 -1.62,-3.85 -2.5,-6.03 -2.65,-0.77 -5.5,-0.87 -7.39,-3.23 -1.18,-0.94 -5.31,-5.84 -2.07,-3.89 2.92,3.3 5.04,-1.41 4.58,-3.56 -1.6,-1.73 -4.39,-1.61 -6.02,-2.94 -1.48,-2.41 1.21,-4.72 1.94,-6.91 1.84,-2.01 5.4,-1.29 6.16,-4.38 1.42,-2.09 2.16,-4.3 0.81,-6.53 1.2,-2.26 2.95,-5.17 -0.91,-5.56 -3.17,-1.51 -3.6,3.21 -5.58,4.74 -1.93,2.12 -2.98,5.59 -6.39,5.38 -3.28,0.88 -6.88,0.85 -10.18,0.44 -3.79,-0.66 -2.03,-5.2 -2.58,-7.89 -0.63,-2.02 1.28,-4.76 -1.4,-5.81 -1.68,-1.96 -4.73,1.64 -6.71,2.05z m32.09,14.69c-0.04,0.06 0.1,0.03 0,0z","name":"Nordrhein-Westfalen"},"ni":{"path":"m186.44,120.91c-5.6,0.51 -6.88,7.11 -8.44,11.54 -1.55,4.84 -4.41,10.19 -1.33,15.08 0.62,2.76 4.51,0.93 6.62,1.66 3.74,-0.55 1.44,3.37 1.28,5.34 -0.09,2.27 2.07,5.17 -0.81,6.68 -0.57,2.01 -4.6,1.89 -4.47,0.01 0.2,-1.62 -2.19,-2.79 -1,-4.38 -2.39,-2.05 -5.8,-0.88 -8.29,-2.92 -3.19,-0.55 -3.1,-6.58 -7,-4.9 -3.25,1.5 -2.87,5.42 -3.31,8.39 1.73,1.09 4.31,-1.81 5,0.84 0.65,4.51 -0.3,10.35 -4.66,12.69 -2.05,0.33 -4.01,-0.7 -4.44,-2.75 -1.01,-1.99 -2.84,-4.1 -4.91,-2.06 -2.51,-1.99 -2.84,-5.26 -2.69,-8.25 1.7,2.41 4.86,0.82 6.63,-0.53 1,-2.85 -1.94,-5.58 -2.55,-8.38 -0.35,-2.68 -2.75,-3.1 -4.67,-3.53 -0.88,-2.07 -1.59,-4.78 -0.56,-6.72 -5.56,-1.98 -11.61,-0.89 -17.16,0.47 -4.67,-1.16 -9.01,2.41 -13.75,2.56 -2.64,-2.27 -6.36,-1.45 -9.63,-2 -6.44,-0.16 -11.29,4.48 -15.23,9 -2.96,1.82 0.86,2.65 1.75,4.06 2.29,2.26 -1.66,3.67 -2.74,5.44 -1.44,-2.96 -5.14,-3.8 -4.27,0.54 -0.65,3.9 -0.71,8.05 -1.52,11.83 -1.87,1.87 0.95,4.14 2.97,3.58 5.28,0.29 10.96,-0.24 15.72,2.42 -2.08,0.69 -5.45,-0.97 -5.28,2.53 -1.3,3.55 -0.88,7.6 -1.89,11.2 -1.02,2.31 -3.53,5.58 -0.77,7.39 -1.04,4.96 1.43,10.17 -1.09,14.86 -1.44,6.42 -8.35,10.37 -8.34,17.29 -0.73,5.37 -0.65,11.06 -2.02,16.22 -1.54,2.43 -4.12,-1.19 -6.18,-0.78 -4.31,-0.59 -8.85,-1.62 -13.15,-0.5 -3.28,1.5 -0.59,5.19 -1.65,7.89 0.05,2.71 -1.96,5.6 -1.13,7.99 3.96,3.35 9.48,3.72 14.25,5.18 1.32,-0.55 1.98,-4.64 3.66,-2.59 1.6,4.04 5.43,7.78 4.44,12.38 -1.84,2.71 -4.41,6.49 -1.89,9.57 1.86,2.89 3.08,-1.11 5.12,-1.16 3.32,-0.74 7.21,1.07 10.28,0.08 0.77,-2.08 3.82,-0.65 4.33,-3.02 3.95,-3.24 8.34,-6.11 13.06,-8 3.49,-2.99 -0.93,-3.55 0.23,-6.31 0.69,-1.71 1.95,-4.41 4.07,-2.55 2.19,0.59 4.44,1.49 4.69,4.05 0.24,3.46 3.25,4.66 5.87,6.2 2.49,1.33 5.1,-2.32 7.3,0.36 2.1,0.86 2.8,3.79 2.88,5.66 -2.14,1.36 -2.99,3.7 -0.25,5 -2.47,1.24 -2.71,4.41 -4.06,6.59 -0.13,3.3 3.86,2.19 5.28,4.24 1.61,1.34 2.29,6.23 -0.56,6.24 -2.12,1.03 -7.72,1.03 -4.44,4.18 0.32,1.52 3.77,3.35 4.41,1.19 1.64,-2.26 4.29,-2.15 6.63,-1.31 1.36,-0.07 3.99,-1.2 5.52,-2.37 2.72,-1.18 4.39,-5.59 7.79,-3.97 1.75,0 5.6,2.6 5.94,0.72 0.62,-2.2 3.26,-3.09 5.19,-3.63 2.15,-1.43 1.31,-2.65 -0.91,-2.81 -3.46,-2.11 -0.12,-6.05 -0.14,-8.9 -0.15,-3.52 0.05,-8 -3.58,-9.88 -2.14,-2.11 -6.14,-3.08 -5.9,-6.7 -1.51,-2.43 0.6,-3.29 2.77,-2.04 1.45,1.42 4.2,1.38 5.98,0.03 1.26,-1.81 0.54,-4.61 3.46,-5.43 2.32,-1.11 5.18,2.05 7.68,-1.07 2.13,-2.24 4.04,-0.2 5.66,1.43 0.57,2.57 -0.21,5.4 0.22,8.09 -0.93,3.21 1.85,4.85 4.75,4.17 3.21,-0.08 7.22,0.09 9.7,-1.99 2.54,-2.97 4.51,-6.31 6.89,-9.36 2.02,0.69 5.86,0.77 5.97,3.44 -1.73,2.35 -1.52,4.54 -0.97,7.06 -1.39,2.86 -2.39,6.91 -6.2,7.13 -2.4,1.05 -3.91,4.28 -3.71,6.63 1.97,1.04 4.71,1.6 6.53,3.33 0.07,1.63 -1.12,5.59 -2.84,6.05 -3.41,-0.73 1.6,2.55 2.84,3.1 2.26,0.15 6.09,0.95 5.15,4.09 -0.68,1.53 3.99,3.73 1.27,4.76 -0.76,2.74 -0.13,6 0.12,8.84 1.43,2.32 4.36,3.6 6.57,5.25 3.31,-0.99 4.48,3.42 3.35,5.85 0.3,0.17 2.48,-0.22 3.34,0.68 2.41,1.16 3.09,3.45 2.56,5.97 -2.13,4.96 -3.82,10.38 -3.75,15.72 2.51,0.18 4.77,-1.21 7.34,-1.06 0.61,1.51 -0.65,3.85 2.25,3.24 3.59,-0.55 6.83,1.47 9.03,4.14 1.86,0.23 1.58,3.6 -0.22,2.84 -1.35,2.17 -4.02,2.06 -5.22,4.59 1.78,2.73 3.46,5.34 3.51,8.74 1.02,2.35 -1.28,3.79 -3.38,3.42 -2.32,0.54 -3.56,5.32 -0.53,5.96 3.22,1.18 6.33,2.54 9.36,4.13 4.29,-2.82 0.47,-2.05 -1.06,-3.89 -2.77,-2.53 1.66,-4.59 3.28,-6.24 2.15,-2.54 5.98,-1.9 8.84,-2.34 2.08,1.35 1.61,5.72 4.21,2.64 3.91,-2.4 7.72,-5.21 12.48,-5.45 3.97,-2.72 8.84,-4.93 11.78,-8.85 1.12,-1.78 0.33,-3.88 2.39,-5.63 3.16,-1.67 6.79,0.6 8.47,3.25 2.88,-0.58 7.14,-0.26 7.76,-3.87 -0.05,-2.88 3.65,-4.47 1.75,-6.24 -1.57,-2.46 -0.32,-5.67 -2.8,-7.78 -1.09,-2.4 -4.13,-3.43 -3.79,-6.44 -0.16,-2.66 -0.99,-6.17 2.11,-7.49 1.53,-0.76 3.52,-2.56 1.95,-4.3 -2.69,0.07 -2.43,-3.84 -0.41,-4.53 -1.85,-1.14 -5.14,-4 -4.75,-5.49 2.09,-0.39 4.95,0.22 5.97,-2.13 -0.9,-2.87 3.5,-2.65 5.41,-2.71 2.87,-0.48 6.16,1.13 8.63,-0.98 1.86,-0.84 5.77,1.14 5.58,-1.56 -0.39,-2.88 1.81,-4.27 3.9,-5.7 0.91,-0.47 3.07,-3.7 1.17,-3.53 -3.44,0 -2.76,-5.19 0.13,-5.66 3.82,-0.08 0.19,-3.6 -1.09,-4.81 -2.24,-1.37 -1.88,-4.21 -1.94,-6.38 0.35,-2.73 4.31,-1.12 3.91,-4.03 -1.37,-1.84 -4.07,-2.33 -5.04,-4.76 -1.41,-2.15 -5.08,-4.85 -2.74,-7.55 3.42,-1.12 3.06,-1.7 0.77,-4.08 -1.69,-1.79 -1.55,-4.29 -1.69,-6.46 -2.28,-4.45 -4.68,-9.22 -8.86,-12.09 -1.05,-3.33 -3.02,-6.48 -2.57,-9.99 -0.32,-2.09 0.44,-4.42 2.92,-4.26 2.85,-1.12 6.27,-0.08 8.93,-1.09 1.55,-1.38 2.76,-2.68 2.6,-4.79 1.69,-2.11 5.13,-0.16 7.46,-0.64 2.96,0.35 7.54,-0.38 8.88,2.86 3.56,1.21 6.67,-1.39 9.63,-2.75 1.37,-1.79 3.07,-3.85 5.5,-3.97 -1.07,-2.07 -0.03,-4.66 0.75,-6.72 2.37,0.04 3.51,1.16 4.74,-2.15 -3.03,-0.57 -6.18,-1.13 -7.93,-4.01 -2.99,-1.28 -5.04,3.32 -7.81,2.09 -1.68,-2.2 -4.97,-3.78 -4.59,-6.94 -1.58,-2.26 -4.54,-2.52 -6.84,-3.72 3.01,-0.21 2.65,-3.1 -0.2,-2.77 -6.07,-2.31 -7.72,-9.29 -10.33,-14.6 -2.42,-1.1 -4.9,-1.16 -5.92,1.34 -1.84,1.96 -4.18,1.97 -6.29,0.43 -2.67,-1.78 -3.79,-6.4 -7.79,-5.36 -2.51,-0.77 -4.24,2.4 -6.66,0.76 -4.42,-0.95 -7.78,-4.07 -12.05,-5.47 -1.87,-1.32 -3.8,-1.77 -5.52,0.17 -0.27,2.44 -2.51,2.71 -4.5,2.22 -3.65,-0.29 -5.04,-4.84 -7.84,-6.5 -1.55,0.25 -1.89,4.05 -4.47,4.49 -2.08,0.15 -3.58,-2.52 -5.1,-3.8 -1.02,-1.09 -2.8,3.74 -4.07,0.89 -2.45,-1.59 -2.98,-4.24 -4.53,-6.41 -0.49,-1.9 1.56,-6.03 -2.15,-5.31 -4.45,-0.29 -7.84,-3.81 -11.28,-6.28 -1.97,-2.7 -0.94,-6.7 -3.64,-9.09 -3.37,-1.87 -5.18,-5.18 -6.46,-8.69 -1.64,-4.08 -4.33,-8.01 -8.9,-9 -3.99,-0.41 -8.13,-0.36 -12.15,-0.37 -3.37,0.14 1.11,4.61 0.44,4.78 -2.24,-0.97 -4.59,-0.85 -6.63,0.19 -3.12,0.32 -6.61,0.16 -9.54,-0.98 -2.08,-1.54 -4.86,-2.91 -5.69,-5.53l-0.44,0.03z m-49.34,8.94c-0.03,1.09 0.83,-0.73 0,0z m-9.69,0.88c-1.79,0.64 -2,2.84 -0.28,0.69 1.15,0.39 7.48,0.12 5.09,-0.5 -1.6,-0.1 -3.21,-0.36 -4.81,-0.19z m18.53,1.06c0.45,3.21 0.81,1.46 0,0z m-31.41,1c-2.03,0.59 -1.28,4.28 0.3,1.19 1.64,-1.6 4.48,-0.97 6.64,-1.09 -2.3,-0.17 -4.65,-0.31 -6.94,-0.09z M108.19,134.75c-2.3,1.14 5.75,0.85 0.38,-0.03 -0.12,0.04 -0.27,-0.05 -0.38,0.03z m-12.13,0.84c-3.52,0.44 -2.54,2.25 0.41,1.38 2.85,-0.48 5.82,-0.48 8.59,-1.28 -2.97,-0.23 -6.02,-0.18 -9,-0.09z m-32.28,11.06c-1.1,1.27 2.99,3.13 2.5,3.16 1.33,-1.35 0.17,-2.16 3.86,-2.62 3.23,0.07 0.14,-2.1 -1.3,-2.1 -1.69,0.52 -3.38,1.04 -5.06,1.56z M174.25,186.75c0.36,2.67 4.51,2.84 6.35,4.51 3.41,1.6 7.66,0.4 10.79,2.95 3.11,1.84 7.08,3.66 10.49,1.79 1.4,0.19 3.63,2.7 2.89,3.67 -2.99,0.4 -0.11,3.94 -0.78,6.22 0.86,2.85 -2.01,3.95 -3.7,5.61 -3.46,-0.92 -6.93,-3.62 -10.57,-2.86 -2.23,0.9 -3.13,-2.21 -2.65,-3.92 -0.64,-2.4 -4,-3.06 -3.74,-5.78 -0.67,-2.42 -1.42,-4.7 -4.2,-4.81 -3.28,-1.01 -7.24,-4.77 -5.34,-8.44 0.16,0.35 0.31,0.71 0.47,1.06z","name":"Niedersachsen"},"mv":{"path":"m468.38,35.5c-3.45,0.91 -7.31,1.41 -8.93,5.06 -0.26,1.49 -3.68,7.61 -2.06,6.34 1.83,-1.19 3.02,-3.21 2.21,-5.18 0.53,-1.31 3.04,-4.63 4,-2.16 0.98,2.93 -2.17,4.94 -1.91,7.78 2.5,-1.15 4.75,-3.34 7.37,-1.07 2.42,1.29 5.16,2.48 7.7,0.7 1.54,0.46 0.47,5.05 0.71,7.19 0.58,3.31 -4.03,1.68 -5.65,1 -1.59,-1.22 -4.83,-1.69 -5.19,-3.75 1.7,-4.11 -3.26,-1.94 -5.53,-2.31 -2.04,0.6 -6.23,0.55 -4.31,3.72 1.26,1.16 4.35,-0.42 5.38,2.04 2.76,1.44 -0.43,4.39 -2.54,4.37 -2.75,-0.56 -4.74,4.2 -0.71,3.48 2.64,0.57 6.65,0.82 2.18,2.56 -1.86,1.21 -4.55,1.66 -6,3.25 -1.1,2.82 0.47,5.48 1.28,8.13 5.01,1.69 10.02,3.38 15.03,5.06 2.12,-0.23 1.09,-3.14 0.16,-2.97 -0.76,1.88 -3.98,1.99 -3.25,-0.63 2.8,-3.12 5.65,-6.81 9.31,-9 3.6,-0.24 7.24,-1.3 10.81,-1.09 1.21,1.32 2.75,4.02 0.25,4.94 -1.68,2.68 3.83,-2.34 2.14,-4.14 -1.15,-2.6 -3.19,-5.78 -6.42,-4.67 -2.75,-1.52 -4.42,-5.28 -3.91,-8.38 1.26,-2.37 3.94,-3.83 5.78,-5.54 1.61,-2.97 -1.68,-6.36 -4.75,-5.02 -3.75,0.66 -8.71,3.63 -11.63,-0.19 -1.83,-1.92 -3.2,-6.71 0.31,-7.56 2.78,-1.63 0.58,-2.73 -1.84,-1.94z m-11.72,12.09c-0.08,-0.04 -0.09,0.18 0,0z m-4.56,2.28c1.4,-3.26 1.29,-4.92 0.11,-0.61l-0.09,0.49 -0.02,0.12z M457,55.72c-1,0.46 -3.54,5.14 -1.38,3.6 1.48,-0.87 6.21,-2.64 2.44,-3.69 -0.36,-0.17 -0.71,0.02 -1.06,0.09z m-41.09,7c-0.25,1.57 -4.9,6.97 -0.87,4.76 3.72,-1.22 7.4,-2.58 10.67,-4.69 2.93,-0.95 5.29,-0.58 1.12,-0.91 -3,-0.7 -6.71,0.09 -8.98,-2.44 -0.65,1.09 -1.29,2.19 -1.94,3.28z m31.25,-1.97c0.11,0.78 4.7,-2.13 0,0z m-5.81,0.66c-3.54,0.47 -7.66,0.41 -10.88,0.66 0.67,2.11 2.68,1.92 4.62,1.67 3.01,-0.17 6.3,-0.07 8.66,-2.29 -0.79,-0.19 -1.6,-0.03 -2.41,-0.03z m1.56,3.03c-2.88,1.13 -1.21,5.18 -4.19,6.34 -3.6,2.14 -6.72,-2.29 -10.47,-2.06 -3.01,-0.89 -5.76,1.74 -8.35,3.01 -2.71,2.18 -6.52,4.43 -7.27,7.96 0.18,1.51 4.13,0.67 2.84,2.66 -2.29,1.22 -5.24,-0.3 -6.59,-2.13 -0.64,-1.13 1.18,-6.54 -0.53,-3.19 -3.22,4.08 -9.79,4.87 -11.29,10.52 -1.07,2.64 -1.85,5.58 -5.3,3.89 -4.59,-1.7 -8.52,1.77 -12.84,2.72 -3.31,0.47 -6.17,-1.62 -9.5,-0.72 -2.97,1.63 -5.73,4.31 -8.33,6.62 -1.96,2.01 -2.68,5.33 -0.14,1.47 1.06,-1.2 2.41,-4.78 4.19,-3.41 2.37,2.62 -1.24,5.31 -2.34,7.63 -1.89,1.4 -5.07,1.98 -4.85,5.06 -0.11,3.13 -0.5,6.25 -2.62,8.72 -1.16,-0.88 -3.68,-1.23 -3.47,-3.09 -1.92,-1.17 -4.21,-1.95 -5.89,0 -2.35,1.65 -4.97,-1.81 -3.77,-4.13 -1.91,-1.96 -3.3,-5.2 -6.59,-3.87 -5.1,-0.35 -9.02,3.11 -13.04,5.78 1.53,2.15 0.81,6.74 -2.56,5.38 -2.64,1.41 -7.07,3.37 -6.72,7.09 1.31,2.5 2.06,5.12 1.15,7.92 0.24,2.24 3.08,3.96 4.95,5.27 1.49,-0.13 2.88,-0.94 4.38,0.28 1.77,1.48 2.91,4.8 1.54,6.72 -1.07,2.51 -1.74,5.18 -3.94,7.19 -3.45,4.41 -6.57,9.53 -11.63,12.13 -2.85,-1.67 -4.12,1.25 -4.21,3.8 -1.04,3.05 -1.35,4.72 2.28,3.81 4.38,-1.22 5.62,3.97 8.63,5.73 2.06,1.71 4.79,0.13 5.56,-2.03 1.66,-2.26 4.66,-0.28 6.53,0.28 2.66,5.4 4.35,13.11 11.13,14.56 1.97,-0.26 2.54,2.31 1.09,3.34 1.98,0.75 4.2,1.46 5.28,3.41 2.92,0.33 5.86,0.78 7.88,-1.84 2.53,-1.04 4.17,0.11 6.2,0.92 3.41,1.17 3.57,-3.72 2.91,-5.91 -1.19,-2.85 2.75,-4.04 4.19,-5.91 2.26,-0.57 6.06,-0.68 6.92,2.18 2.22,-0.82 7.58,-0.29 4.18,-3.52 1.89,-0.52 5.64,-0.7 8.01,-2.08 1.84,-1.16 5.37,-2.23 4.75,-4.82 0.89,-1.93 2.17,-4.64 4.7,-3.27 2.88,0.17 5.85,-1.68 8.79,-1.42 2.69,2.85 6.38,3.54 9.59,5.47 2.1,1.42 2.54,5.89 5.86,4.62 1.42,-1.54 4.52,-1.23 6.97,-0.84 2.64,0.11 5.42,0.12 6.99,2.65 1.76,1.23 2.9,3.74 4.81,4.36 3.51,-2.08 7.9,-1.79 11.85,-1.57 1.87,0.92 -0.02,2.26 -1.2,2.88 2.73,2.02 3.96,-3.02 6.01,-4.14 1.85,-2.5 5.05,-5.4 8.21,-4.51 0.4,1.63 2.6,4.73 2.69,1.53 -0.18,-4.03 4.85,-6.14 8.16,-4.72 0.92,1.02 1.13,4.66 2.78,2.25 1.94,-2.52 5.64,-4.66 5.83,-7.92 -0.98,-3.87 1.53,-7.87 4.55,-10.15 2.94,-2.19 5.03,-6.55 9.2,-6.14 3.13,-1.46 0.88,-2.47 0.94,-4.94 -0.47,-2.01 1.66,-5.18 3.04,-2.12 2.09,2.5 4.8,4.66 5.08,8.15 0.55,3.39 3.31,3.78 6.08,2.65 2.41,-0.3 6.44,1.78 7.55,-1.21 2.62,0.79 6.91,-0.99 8.25,2.06 1.49,6.11 -3.45,10.78 -7.19,14.78 -1.98,3.1 3.33,1.46 5.03,1.98 3.6,0.68 6.06,-2.53 6.41,-5.79 1,-1.79 6.72,-1.16 5.01,-3.95 -1.75,-4.35 -2.83,-9 -3.99,-13.46 -2.18,-2.83 -4,-6.6 -2.87,-10.22 -0.22,-5.43 -3.03,-10.29 -3.44,-15.72 -0.42,-2.28 -2.57,-2.04 -3.28,-0.22 -1.81,2.36 -5.39,1.17 -7.84,0.59 -3.37,-1.38 -7.23,-1.87 -9.74,-4.72 -2.44,-2.52 -7.36,-2.95 -8.1,-6.78 1.68,-2.2 3.24,-5.36 5.94,-6.13 0.44,-2.04 -2.63,-3.55 -3.67,-5.18 -2.27,-2.24 -3.02,-5.61 -4.55,-8.32 0.21,-2.8 0.27,-5.88 -2.37,-7.5 -1.78,-3.54 -4.86,-2.15 -7.78,-0.99 -2.53,1.08 -5.51,1.39 -7.79,2.9 0.14,1.21 2.98,3.43 0.56,3.84 -3.2,0.18 -3.78,-3.49 -4.59,-5.69 -0.99,-1.26 -3.18,1.08 -3.03,-1.66 3.36,-2.44 -2.45,-0.94 -3.09,-2.5 -1.56,-2.33 -1.97,-5.95 -5.39,-6.49 -2.15,-2.65 -4.68,-0.2 -6.44,-0.76 -2.83,-2.27 -3.42,-6.13 -4.17,-9.38 1.49,-2.52 -2.16,-5.5 -3.62,-7.17 -1.75,-0.48 -3.25,0.75 -4.88,1.21z m52.69,22.19c-3.16,0.36 -1.48,4.22 0.37,5.25 1.73,2.04 0.07,5.76 2.48,7.75 1.23,2.84 2.71,4.73 5.49,2.07 1.56,-1.43 -2.24,-3.39 -0.78,-5.26 2.84,0.22 4.58,0.55 1.09,-0.38 -3.78,-1.63 -6.46,-4.91 -7.63,-8.84 -0.21,-0.29 -0.58,-0.78 -1.03,-0.59z M508.81,98.25c2.29,2.13 4.59,4.76 3.68,8.19 1.29,3.82 -2.55,2.56 -4.59,1.72 -1.01,-1.74 -1.1,-5.02 -3.97,-3.22 -1.8,2.49 2.15,3.83 2.07,6.36 1.37,2.89 -1.67,5.12 -4.12,5.88 -2.51,0.31 -1.55,2.32 0.67,2.35 4.16,0.13 7.86,-2 11.53,-3.58 2.18,-0.69 5.82,0.22 7.3,-1.22 1.43,-3.32 1.05,-6.01 -2.4,-7.65 -4.01,-3.08 -7.07,-7.49 -11.49,-9.99 0.44,0.39 0.88,0.77 1.31,1.16z m-153.22,8.91c-2.07,0.65 -6.19,2.56 -3.84,5.09 3.14,1.72 4.9,-0.57 5.38,-3.56 0.63,-1.6 0.03,-1.86 -1.53,-1.53z","name":"Mecklenburg-Vorpommern"},"he":{"path":"m231.91,351.28c-2.52,4.22 -6.22,7.61 -8.38,12.09 -3.47,2.99 -7.81,5.31 -10.28,9.09 -2.28,0.4 -5.74,0.13 -5.5,-3 2,-3.26 -3.47,-5.21 -5.91,-3.76 -1.41,0.82 -5.95,0.93 -4.65,3.28 0.64,2.39 3.13,3.23 3.37,5.4 0.17,2.42 -1.34,4.44 -3.94,3.29 -5.15,-0.39 -10.41,1.05 -14.95,3.35 -3.17,1.4 -4.72,4.59 -6.61,7.28 0.84,1.05 2.01,4.06 3.59,2.09 2.37,-0.9 6.57,-4.19 7.88,-0.28 0.22,4.19 2.13,8.77 -0.72,12.51 -0.71,2.75 -2.31,4.62 -5.22,4.99 -3.14,-0.43 -7.52,-2.41 -9.63,1.09 0.39,2.15 1.85,4.24 2.13,6.19 -1,1.73 -3.4,2.91 -4,4.63 3.11,2.85 -2.97,-1.27 -1.76,3.31 -1.97,2.72 -3.4,6.11 -5.96,8.25 -2.51,0.68 -5.22,-4.25 -7.23,-1.05 -2.7,2.64 -5.41,5.28 -8.11,7.92 0.49,2.48 3.93,4.74 1.63,7.26 -0.76,2.71 -4.3,4.36 -2.78,7.49 -0.8,2.92 2.77,3.49 2.12,5.75 -1.13,1.85 -1.06,5.6 -3.44,5.9 -1.97,0.22 -2.63,-1.53 -4.06,-2.13 -2.8,1.41 -5.48,6.02 -2.56,8.66 -0.49,2.46 -3.67,5.82 0.27,6.82 3.67,1.53 5.25,5.3 6.61,8.75 0.92,2.04 1.08,4.85 -1.7,5.37 -1.07,-0.93 -5.7,-1.33 -3.5,1.11 2.47,0.99 0.89,3.49 -1,3.99 -2.32,-1.08 -4.25,-1.29 -6.55,0.33 -2.11,0.73 -3.8,3.88 -1.08,4.86 2.02,1.08 1.39,4.09 0.28,5.59 -2.84,-2.01 -4.64,0.94 -6.72,2.5 -3.14,0.7 -2.62,2.78 -0.67,4.69 1.7,1.7 2.49,4.75 4.7,5.72 7.32,0.54 13.26,-4.85 20.19,-5.97 3.41,-0.25 5.55,2.38 7.21,4.9 2.7,2.09 3.72,5.69 3.75,8.95 -2.21,2.91 0.93,6.19 1.75,9.06 1.22,3.02 5.3,4.54 4.69,8.16 -0.83,2.19 -2.69,3.5 -5.03,3.69 -3.67,1.29 -0.58,5.33 -0.19,7.78 1.19,1.23 1.73,4.58 3.56,3.47 2.87,-0.09 4.72,3.15 6.02,5.29 0.45,2.46 3.64,2.83 4.61,0.44 0.84,-1.91 -0.18,-4.52 -1.35,-5.64 -0.49,-3.07 3.89,-2.29 5.74,-3.3 2.12,-0.86 2.95,1.54 1.33,2.77 -0.13,1.19 0.36,6.2 2.44,7.44 3.73,1.71 7.96,2.48 12.06,2.41 0.3,2.37 -0.95,4.21 -3.22,5.14 -2.12,0.41 -4.13,4.05 -2.97,5.83 3.16,0.98 4.62,-3.02 6.97,-4.37 2.62,-1.23 -1.27,-2.95 1.23,-4.7 1.83,-3.04 5.68,-3.23 8.67,-4.31 2.07,1.28 4.67,2.3 1.65,-0.28 -2.77,-0.69 1.28,-2 0.17,-4.09 -1.83,-2.61 0.09,-5.95 0,-8.84 0.67,-3.72 4.45,-6.62 2.87,-10.6 0.27,-3.23 -3.17,-2.82 -4.5,-5.35 -1.88,-1.31 -2.94,-3.09 -2.59,-5.43 1.25,-0.49 -0.57,-3.68 -0.1,-5.19 -0.37,-2.39 0.26,-5.26 -1.15,-7.31 2.19,-0.29 2.3,-4.03 0.75,-4.91 -3.55,0.11 -2.06,-3.18 -1.51,-5.43 1.26,-3.72 6.02,-2.87 8.99,-4.29 3.44,-0.94 6.85,-2.48 10.38,-0.98 2.53,1.03 6.93,-0.17 7.36,3.51 0.22,3.77 3.72,2.22 6.1,1.81 3.18,-0.12 0.4,-3.63 0.68,-5.44 -0.84,-3.13 -0.37,-6.51 1.38,-9.24 2.02,0.57 4.63,1.89 6.47,0.94 0.86,-2.28 1.78,-5.61 4.88,-5.28 3,-1.1 4.77,-5.15 2.22,-7.63 2.46,-1.43 0.46,-5.9 4.2,-5.65 2.35,-1.65 4.24,2.19 6.72,0.64 3.67,-2.12 7.61,-4.88 9.17,-8.99 0.87,-4.15 -0.43,-8.59 0.34,-12.69 1.59,-1.67 2.87,-3.11 0.88,-5.25 -1.95,-0.3 -4.67,-0.51 -5.91,1.03 2.68,1.72 0.06,4.83 -2.4,3.41 -3.4,0.47 -3.73,-2.19 -3.1,-4.85 1.64,-2.54 4.97,-5.54 3.53,-8.77 -2.61,-1.88 3.02,-1.21 0.62,-3.76 -0.39,-2.4 1.7,-5.24 4.25,-4.19 2.32,-0.16 2.52,-3.78 3.13,-5.59 -0.42,-3.72 -1.44,-7.39 -2.41,-10.94 0.58,-3.37 4.7,-2.07 6.91,-1.42 1.33,1.43 3.54,1.27 4.93,0.14 1.65,-2.01 -0.8,-4 -2.88,-4.28 -0.73,-2.4 -0.28,-5.7 -2.15,-8.05 -1.81,-2.17 3.2,-3.84 4.13,-1.92 0.85,2.09 2.04,3.15 0.8,0.19 -0.79,-1.77 1.55,-2.57 1.81,-3.75 -2.16,-0.34 -3.1,-3.03 -5.47,-3.13 -2.41,-1.32 -5.66,-1.92 -5.69,-5.28 -2.73,-1.26 -6.43,-1.62 -7.14,-5.14 -0.93,-2.28 -2.35,-5.29 -0.96,-7.39 -0.41,-3.77 -4.2,-2.41 -6.91,-2.04 -2.44,0.91 -4.65,3.07 -6.27,5.16 0.26,3.75 3.81,-0.17 4,2.53 0.6,2.43 -1.31,3.7 -3.35,4.44 -2.57,-2.31 -6.46,-3.25 -9.7,-4.62 -2.11,-0.64 -2.73,-3.33 -1.64,-5.16 0.52,-2.33 2.7,-3.11 4.88,-2.75 1.13,-2.01 -0.13,-5.09 -0.97,-7.03 -0.84,-1.85 -3.71,-4.21 -0.9,-5.87 1.12,-2.04 3.33,-1.71 4.5,-3.66 2.57,-0.35 -1.93,-2.01 -2.09,-3.38 -2.42,-2.04 -5.4,-1.51 -8.28,-1.84 -2.56,-0.15 0.13,-3.78 -1.82,-2.9 -0.65,0.13 -1.3,0.26 -1.96,0.4z m48.47,53.75c-0.2,0.03 0.16,0.35 0,0z","name":"Hessen"},"hh":{"path":"m273.31,139.16c-1.5,1.09 -0.93,4.3 -3.67,5.06 -1.61,1.47 -3.71,3.26 -5.89,1.85 -2.33,-0.78 -1.81,2.21 -3.43,3.24 -1.3,1.52 -3.26,5.5 -5.37,2.78 -1.64,-2.73 -2.78,-2.89 -3.11,0.48 -1.95,3.52 3.88,1.56 2.16,5.63 -0.89,2.25 0.93,3.48 1.47,5.56 1.11,1.96 3.5,5.01 5.03,1.63 1.82,-0.66 3.1,2.78 4.87,3.63 1.74,1.19 3.59,-1.92 4.1,-3.57 1.25,-2.32 3.61,0.86 4.66,2.15 1.9,2.2 3.93,4.76 7.21,3.97 1.13,-0.62 1.01,-2.97 2.91,-3.07 2.93,-1.45 -2.65,-3.59 -2.97,-5.78 -1.42,-2.02 -5.31,-2.65 -5.35,-5.94 -0.83,-2.64 0.75,-4.88 3,-6.12 2.02,-2.17 0.93,-4.31 -0.94,-5.97 0.01,-2.33 -0.49,-4.73 0.53,-6.88 -1.59,-1.66 -3.52,1.07 -5.22,1.34z","name":"Hamburg"},"hb":{"path":"m177.13,149.91c-1.02,1.81 2,3.93 2.44,6 0.78,1.49 -1.36,2.66 0.47,3.7 0.36,2.05 1.77,2.73 3.27,0.5 2.31,-1.97 -1.15,-5.18 0.62,-7.7 1.79,-3.68 -3.69,-1.91 -5.73,-2.54 -0.36,-0.05 -0.71,0.02 -1.07,0.05z m-2.34,39.47c1.3,3.24 5.12,3.63 7.78,4.94 1.52,2.61 1.31,5.93 3.86,7.69 2.1,1.22 1.38,3.71 2.04,5.46 1.64,0.31 3.99,-0.68 5.77,0.73 2.5,0.16 5.45,3.63 7.38,0.87 2.63,-1.56 0.74,-5.04 0.98,-7.51 -2.78,-1.97 1.76,-2.01 0.87,-3.11 -1.26,-2.73 -3.93,0.26 -6.25,-0.86 -4.35,-0.36 -7.69,-4.63 -12.29,-4.36 -3.91,0.3 -6.92,-2.67 -10.15,-3.86z","name":"Bremen"},"bb":{"path":"m499.25,149.81c-0.84,1.88 -0.81,4.34 1.28,5.34 -1.74,2.06 -3.79,3.29 -6.37,3.46 -3.18,2.74 -6.61,5.55 -9.05,8.91 -1.36,2.25 -1.54,4.68 -0.87,7.16 -2.28,3.16 -4.83,6.45 -8.06,8.63 -2.41,-0.12 -1.19,-4.5 -3.97,-3.53 -3,-0.61 -5.44,2.28 -5,5.15 -0.4,2.7 -4.01,1.19 -3.97,-1.02 -0.57,-1.97 -3.52,0.03 -4.56,0.75 -2.74,2.49 -4.73,6.13 -7.88,8 -1.99,-0.23 -3.86,-2.04 -1.25,-3.16 1.45,-1.47 -4.76,-0.14 -6.18,-0.46 -2.13,-0.19 -5.04,3.22 -6.6,0.49 -2.73,-2.51 -5.01,-6.52 -9.27,-5.91 -2.13,0.04 -5.13,-1.3 -6.45,0.69 -2.87,1.21 -4.79,-0.3 -6.25,-2.72 -1.52,-3.98 -6.92,-3.25 -9.48,-6.32 -1.8,-2.15 -4.65,0.11 -6.93,0.1 -2.38,1.26 -5.39,-1.14 -6.32,2.55 0.99,3.09 -2.96,4.01 -4.77,5.61 -2.15,1.15 -6.11,1.77 -7.27,2.46 2,2.09 -1.36,2.73 -2.94,2.85 -3.43,2.16 -3.88,-1.29 -6.73,-1.81 -3.03,-0.86 -4.57,2.1 -6.63,3.69 0.64,2.72 1.23,7.08 -1.72,8.53 -1.68,-0.03 -3.77,-0.05 -4.75,-1.47 -3.21,-0.91 -4.58,3.15 -7.53,2.47 -2.88,-1 -5.03,0.48 -2.09,2.67 1.36,1.69 3.08,4 5.08,1.55 1.94,-1.5 5.34,-2.28 6.7,0.42 1.5,2.04 4.32,1.65 6.53,2.39 1.23,-1.43 4.73,-0.25 2.95,1.62 -1.67,1.72 2.21,2.59 2.91,3.81 1.43,1.12 2.93,-2.01 4.58,-0.33 1.76,1.64 5.48,1.89 6.03,4.47 0.12,1.23 -2.72,2.23 -0.94,3.16 4.27,1.68 8.68,4.08 13.38,2.66 2.5,1.2 6.82,-4.08 4.61,0.18 -0.35,3.68 2.96,0.6 4.61,0.47 3.29,0.55 2.92,4.31 3.72,6.78 0.37,2.84 -3.59,3.22 -2.84,6.46 -1.66,3.81 3.69,5.99 2.3,9.81 0.77,2.86 -2.32,3.27 -3.45,4.66 -0.54,2.65 -2.13,5.71 -1.65,8.26 0.83,2.24 4.39,3.7 4.36,0.28 2.12,1.42 6.84,0.74 6.61,4.02 1.02,3.09 -2.67,5.39 -1.23,8.53 0.24,2.83 1.88,6.06 -0.69,8.26 -2.05,3.4 -2.35,7.41 -1.88,11.28 -2.17,2.79 -1.48,5.22 1.03,7.44 3.11,5.22 7.1,10.36 13.17,12.16 3.29,1.01 7.58,3.94 10.7,1.22 -0.29,-3.23 3.4,-2.12 4.94,-0.75 2.81,1.03 3.99,2.78 6.11,4.39 2.08,1.33 4.66,2.82 7.04,1.98 3.14,1.39 6,3.2 8.16,5.88 3.11,1.39 3.63,-2.03 5.78,-1.38 1.85,0.64 2.36,3.88 -0.16,3.41 1.53,4.44 1.98,9.42 4.53,13.28 -0.28,4.36 -5.19,5.81 -8.13,8.16 1.38,4.17 2.89,2.17 5.54,3.45 2.71,1.73 3.05,5.69 4.55,8.42 0.92,3.28 0.16,6.97 -0.56,10.28 1.12,1.84 2.33,3.34 4.61,2.31 0.97,-1.14 2.38,-3.45 4.49,-4.31 2.22,-1.43 4.58,-3.03 6.29,-0.12 4.07,3.53 9.06,7.27 14.8,6.16 2.09,-1.58 2.79,0.71 5.58,0.52 2.7,-0.23 5.1,-3 8.17,-1.96 3.29,-1.1 7.81,-0.26 9.47,-3.95 2.24,-4.34 2.1,-9.97 5.65,-13.77 1.52,-0.92 3.97,-0 5.84,-0.31 2.67,-0.5 5.34,2.24 7.62,0.72 1.65,-1.85 4.86,-1.52 6.32,-2.54 1.7,-2.16 5.35,-2.05 7.75,-3.38 2.31,-0.33 2.58,2.04 4.09,2.56 2.19,0.22 4.28,-0.47 4.14,-3.06 1.18,-2.26 3.58,-0.39 3.55,-4.22 -0.1,-2.81 -0.47,-5.99 -3.36,-7.26 -3.75,-2.16 -4.56,-6.65 -6.42,-10.21 -2.9,-0.63 -3.35,-5.09 -0.55,-6.35 3.76,-2.93 5.89,-7.61 5.36,-12.4 -0.5,-2.47 -0,-3.76 1.5,-6 1.18,-2.51 -0.13,-5.99 -3.13,-5.94 -2.3,-1.74 -2.72,-5.61 -0.53,-7.63 -0.28,-2.81 1.52,-6.55 -1.09,-8.56 -2.6,-1.24 -6.3,-0.29 -7.81,-3.19 -1.11,-3.05 -1.39,-6.47 -2.42,-9.42 -1.68,-2.31 -0.63,-6.4 2.17,-7.48 1.98,-2.33 3.3,-5.1 2.57,-8.22 0.38,-2.83 -0.31,-5.28 -2.51,-7.19 -3.54,-2.79 -8.55,-3.73 -11.34,-7.59 -2.56,-5.3 -8.11,-8.18 -12.88,-11.28 -2.02,-1.42 -4.87,-0.97 -6.69,-2.38 -2.03,-2.63 3.01,-4.81 1.15,-7.48 -0.64,-2.66 -2.69,-6.39 0.67,-8.11 3.25,-1.9 6.37,-3.89 8.77,-6.91 3.06,-2.56 2.89,-6.96 3.39,-10.59 -1.83,-1.72 -1.71,-4.98 -0.47,-6.84 1.2,-1.67 4.41,-4.79 3.03,-6.69 -2.15,0.19 -2.35,-3.69 -2.22,-5.41 -2.44,1.01 -5.3,1.53 -5.5,4.63 -1.15,2.4 -3.02,3.91 -5.78,3.72 -2.22,-0.47 -6.15,0.62 -7.41,-0.9 0.47,-4.6 5.82,-6.58 7.23,-10.78 0.81,-2.01 1.54,-5.13 -0.2,-6.73 -3.16,-0.57 -5.69,-0.28 -7.87,1.03 -3.28,0.28 -6.64,-0.73 -9.75,0.5 -4.23,-1.06 -2.75,-6.98 -5.95,-9.24 -1.05,-1.15 -2.07,-2.54 -3.15,-3.54z M484.13,240.25c2.62,1.78 3.22,5.59 5.07,8.15 1.73,3.05 5.13,4.94 5.9,8.6 -0.13,3.15 2.96,3.88 5.31,4.97 3.02,1.16 1.5,3.96 0.62,6.15 -2.11,1.18 -0.3,2.41 -1.81,3.94 -3.37,1.44 -6.8,-1.31 -10.22,-1.72 -2.61,0.29 -4.02,-2.66 -5.44,-2.59 -3.39,0.13 0.93,5.86 -3.25,4.2 -2.15,-1.56 -3.93,-2.85 -6.03,-2.56 -2.2,-2.21 -6.14,-1.55 -8.26,0.46 3.07,1.05 -3.31,1.77 -4.27,0.08 -2.48,-1.03 -0.87,-2.57 0.43,-3.73 -0.55,-1.26 -1.2,-3.36 0.31,-4.63 3.03,-2.14 1.73,-3.7 -0.71,-3.56 0.04,-2.5 -0.02,-5.34 0.62,-7.66 1.31,-1.47 2.88,-1.58 4.41,-0.5 1.08,0.35 -1.33,-2.46 0.8,-3.32 1.36,-1.61 4.71,-0.61 6.85,-0.8 2.24,1.02 3.85,-0.76 4.63,-2.66 1.77,2.37 2.44,0.08 3.29,-1.66 0.36,-0.52 1.13,-1.47 1.74,-1.16z","name":"Brandenburg"},"be":{"path":"m483.38,241.69c-1,1.58 -1.61,5.27 -4.03,2.88 -0.91,2.64 -3.81,2.59 -6.06,2.05 -1.91,-0.31 -7.28,0.09 -4.84,2.79 1.38,2.14 -2.25,1.68 -3.34,0.78 -3.18,-0.15 -1.8,4.36 -2.36,6.45 -0.09,0.87 5.17,1.04 2.51,3.18 -1.16,1.75 -4.04,3.69 -1.89,5.83 0.53,1.82 -3.82,2.76 -0.54,3.7 2.29,1.61 3.52,-2 6.07,-2.2 2.07,-0.34 5.08,-0.28 6.25,1.69 2.29,-3.28 5.18,4.71 6.09,1.16 -1.15,-2.62 1.9,-3.14 3.66,-3.85 0.63,3.56 5.17,2.88 7.8,4.18 1.96,0.26 4.94,2.32 6.26,0.28 -2.5,-1.19 2.5,-2.95 2,-5.26 1.05,-2.66 -3.24,-2.9 -4.77,-4.37 -2.69,-0.38 -1.4,-4.38 -3.15,-6.05 -1.61,-3.03 -4.93,-4.88 -5.94,-8.38 -1.14,-0.99 -1.96,-6.07 -3.71,-4.88z","name":"Berlin"},"by":{"path":"m273.66,464.44c-1.31,1.91 -3.76,2.78 -3.5,5.34 -1.83,4.59 -6.12,7.95 -10.5,9.94 -2.67,1.02 -4.62,-2.49 -7.15,-0.61 -1.54,0.74 -0.64,3.49 -2.13,4.58 2.4,3.04 -0.04,7.53 -3.44,8.47 -3.38,-0.45 -3.01,4.07 -4.66,5.5 -2.16,0.47 -4.23,-0.33 -6.28,-0.91 -2.54,3.91 -0.46,8.53 0,12.63 -0.53,2.87 -4.66,1.74 -6.9,2.55 -3.16,0.27 -1.64,-5.68 -4.98,-5.22 -4.19,-0.72 -8.41,-2.46 -12.49,-0.42 -2.97,1.16 -6.84,1.23 -9.32,2.99 -0.59,1.48 -2.41,4.44 -0.69,5.28 3.02,-0.37 2.55,4.03 2.28,5.63 -2.37,0.86 0.17,4.18 -0.45,6.12 0.28,2.66 -0.27,5.78 1.89,7.78 -3.88,-0.85 0.14,3.73 1.52,4.58 0.84,1.94 3.96,0.92 3.59,3.64 1.27,2.88 0.6,5.62 -0.78,8.31 -2.26,2.93 -2.47,7.6 -2.42,11.23 1.24,2.27 4.6,0.89 6.75,1.12 2.16,0.04 4.75,-2.13 4.73,-4.03 -0.34,-2.04 2.18,-5.23 4.72,-3.63 1.87,0.74 5.34,1.32 4.23,-1.45 1.6,-1.24 -0.63,-7.5 -0.96,-4.79 0.79,2.49 -3.31,2.3 -3.52,0.13 -0.83,-1.56 -3.4,-4.82 -1.19,-6.09 3.07,-0.15 6.37,-1.05 9.34,-0.19 0.41,-2.46 4.94,-2.22 3.88,0.41 0.59,1.49 3.45,3.68 4.43,1.04 1.16,-1.1 4.96,-5.66 4.94,-1.88 -0.59,2.44 0.18,5.72 -1.59,7.45 0.33,2.92 3.79,0.57 5.16,-0.39 2.48,-0.32 5.61,-3.48 7.29,-0.3 2.99,3.39 2.07,8.94 5.01,12.52 2.18,0.31 2.43,3.58 2.41,5.6 0.45,1.81 -0.72,3.89 -0.34,5.16 2.77,0.82 6.24,0.65 7.69,-2.25 -0.15,-1.12 -1.91,-2.61 0.74,-3.68 2.83,-1.31 3.76,2.79 4.2,4.84 -1.95,1.56 1.87,3.4 1.31,5.57 0.26,2.1 4.02,5.65 0.6,6.68 -2.91,-0.9 -2.81,3.3 -1.87,5.04 0.96,2.51 3.11,4.68 1.16,7.27 0.44,2.52 -1.72,6.37 1.65,7.44 1.89,1.55 4.82,1.6 5.41,4.43 1.71,2.58 1.5,5.88 2.31,8.79 -2.03,1.94 3.23,2.14 4.31,3.59 2.13,2.06 5.86,2.95 6.29,6.28 3.84,2.87 1.91,8.3 2.08,12.46 0.25,2.64 -0.94,5.5 -2.07,7.44 -0.04,3.1 4.34,2.42 3.61,6.41 2.49,1.05 0.06,3.97 -1.86,4.33 -1.61,1.16 -4.23,0.12 -2.18,-1.56 2.29,-3.25 -3.46,-0.68 -4.81,-0.69 -2.23,0.84 -5.79,-3.18 -5.97,0.9 -0.14,3 3.91,4.63 3.42,7.93 0.53,2.67 0.99,5.81 0.27,8.32 -1.49,1.89 -3.93,-0.58 -5.06,1.19 0.32,2.29 -3.52,3.66 -4.94,5.41 -3.13,1.93 -4.28,-3.47 -7.13,-0.01 -2.35,0.12 -0.74,3.36 -2.58,4.82 -1.74,2.44 -2.43,5.75 -0.16,8.06 1.31,2.7 4.08,4.51 3.75,7.78 0.56,4.38 1.13,8.84 2.71,12.9 2.91,1.82 1.6,5.52 2,8.41 0.45,2.66 -1.86,4.17 -1.66,6.72 0.19,1.55 -3.47,0.81 -1.84,3.13 2.61,1.07 0.38,3.66 0.87,5.81 0.2,2.47 -0.14,5.78 2.07,7.38 0.5,2.56 -3.74,2.92 -1.81,6.18 1.02,3.01 3.86,6.55 1.16,9.46 -1.18,1.16 -3.19,0.63 -3.38,2.95 -1.52,3.81 -0.35,-4.27 -2.92,-3.81 -1.88,-0.93 -3.51,0.34 -4.08,2.09 -3.48,0.28 -7.46,-0.44 -10.66,0.7 -2.62,1.93 -4.17,6.22 -7.96,5.49 -1.72,0.26 -2.84,-2.34 -4.53,-0.51 -3.88,1.61 -1.7,3.37 1.37,4.04 3.22,2.32 4.79,-0.35 6.38,-2.97 2.19,-2.61 6.67,0.35 5.03,3.47 -1.46,1.59 3.12,2.56 4.5,2.46 2.2,0.75 5.22,-2.54 5.71,-2.37 -1.26,2.65 0.2,5.16 1.79,7.23 3.74,-0.93 5.96,3.27 7.63,5.97 -1.64,1.92 -2.48,3.42 -1,5.94 0.03,1.72 5.17,0.51 4.35,-1.56 0.81,-1.86 3.6,-1.1 5.09,-0.53 2.05,2.24 -1.68,3.98 -1.81,6.26 -0.21,1.48 -3.48,5.59 -1.04,5.45 5.9,-0.28 10.64,-4.27 13.65,-9.1 1.68,-2.49 4.2,-4.8 5.23,-7.51 -0.27,-1.73 0.37,-4.61 -1.96,-4.47 -1.78,-2.98 -0.76,-6.77 -1.03,-10.06 0.59,-1.59 4.6,-2.06 3.97,0.09 -1.67,2.23 -0.39,3.45 2.34,3.77 2.31,0.63 4.34,0.47 4.81,-2.09 1.65,-2.51 5.13,-0.08 7.59,-0.22 0.5,2.03 3.14,2.52 5.19,3.38 2.99,1.48 5.86,-2.19 8.72,-1.09 3.48,2.5 -1.05,3.09 -0.97,5.59 2.55,0.29 4.83,1.11 6.25,3.38 2.96,1.58 0.77,3.77 1.16,5.09 4.01,0.78 8.16,-0.05 11.5,-2.41 2.24,-1.08 5.28,-2.46 7.66,-1.16 -0.63,2.06 -2.84,4.65 1.39,2.92 0.99,-2.2 2.51,-4.2 4.63,-5.64 2.78,-1.69 3.97,-4.98 6.66,-6.66 2.2,2.25 6,0.82 8.75,0.25 1.72,-1.5 -0.11,-4.24 1.75,-6 1.27,-3.31 5.21,-1.69 7.87,-2.01 3.14,-0.06 6.26,-0.02 9.34,0.6 1.3,-3.59 5.97,-3.64 9.18,-3.87 2.61,1.43 5.36,-1.54 7.57,0.5 2.56,0.03 5.94,1.12 8.03,-0.19 -0.56,-3.08 -2.75,-5.66 -1.81,-8.97 1.68,-1.6 3.23,-4.06 5.5,-4.97 2.05,1.73 -0.97,3.82 0.9,5.81 0.74,1.55 6.18,-3.23 5.07,-0.41 2.78,1.55 7.13,-0.47 8.4,3.24 1.5,2.9 4.05,3.71 6.55,1.34 2.39,-0.55 1.97,-4.34 4.92,-3.93 3.45,-1.43 7.22,-0.35 10.38,1.04 0.63,2.57 4.26,5.4 1.53,7.59 -1.91,3.64 3.48,5.29 5.61,7.15 2.86,2.07 5.93,3.86 9.26,5.04 1.6,-1.29 3.65,-3.83 2,-5.66 -1.98,-1.39 0.16,-4.42 -0.13,-6.41 0.81,-2.05 3.05,-3.55 3.5,-5.53 -1.37,-2.88 -2.02,-7.29 -5.72,-7.94 -0.69,2.59 -4.42,1.51 -6.31,1.34 -1.86,-0.73 -2.16,-2.62 -0.73,-4.04 1.53,-3.69 4.03,-7.15 5.39,-10.77 -2.14,-3.41 -3.7,-7.7 -6.59,-10.34 -2.88,0.4 -3.64,-2.11 -3.9,-4.41 -1.24,-4.49 -8.32,-5.42 -8.04,-10.73 0.04,-2.8 4.04,-3.87 5.63,-5.89 1.81,-1.22 1.17,-3.89 2.78,-4.97 2.57,-0.91 6.07,0.24 7.47,-2.89 1.29,-1.84 2.29,-3.74 4.7,-4.4 2.08,-2 5.15,-0.22 7.17,-2.39 2.7,-1.73 6.58,0.63 8.88,-2.3 3.06,-1.95 5.85,-4.79 7.85,-7.65 0.43,-2.52 2.26,-5.13 0.38,-7.38 0.45,-3.1 3.3,-6.59 0.44,-9.38 -0.61,-1.41 4.07,-1.2 4.41,-3.5 -0.1,-4.04 4.08,-0.04 6.17,0.11 3.24,1.6 5.97,4.3 9.52,5.26 3.15,-4.15 7.21,-9.07 5.25,-14.64 0.5,-2.8 -3.41,-5.03 -1.06,-7.39 1.18,-2.53 1.51,-5.28 -0.56,-7.48 -1.75,-2.45 -3.35,-5.1 -5.19,-7.42 -2,1.56 -5.42,0.69 -5.99,-1.97 -0.86,-2.58 -2.84,-4.62 -4.76,-6.5 -2.32,-0.51 -5.25,-0.27 -4.06,2.66 -1.49,2 -4.02,-1.61 -5.78,-2.26 -3.51,-1.84 -1.34,-7.26 -4.67,-9.54 -1.77,-2.1 -3.92,-4.14 -6.4,-5.23 -2.11,1.09 -4.33,0.73 -6.1,-0.79 -2.35,-0.65 -1.29,-3.34 -2.28,-4.52 -5.62,-4.34 -8.22,-11.7 -13.85,-16.05 -0.96,-0.66 -5.12,-1.7 -4.56,-0.67 1,2.66 -3.26,0.86 -4.59,0.92 -2.67,0.16 -4.59,-1.69 -5.1,-4.2 0.33,-2.99 -3.95,-3.91 -5.58,-5.98 -1.3,-1.16 -4.06,-3.42 -2.45,-4.96 0.01,-2.41 0.31,-4 -2.29,-4.05 -2.07,-0.53 -1.46,-1.98 -2.8,-3.5 -2.08,-3.55 -3.13,-7.39 -3.48,-11.47 -1,-2.47 -5.61,-0.9 -6.56,-3.96 -1.46,-1.68 -3.4,-4.99 -0.08,-5.91 3.24,-0.92 2.39,-4.05 3.21,-6.53 0.88,-3.28 4.17,-5.56 3.4,-9.15 -1.69,-2.78 -3.02,-7.24 -7.16,-6.34 -2.89,-1.46 -5.43,-3.31 -7.5,-5.81 -4.37,0.47 -3.42,-1.95 -5.22,-4.41 -1.08,-0.95 -3.08,-0.2 -3.19,-2.3 -0.69,-1.94 -0.29,-3.97 0.91,-5.48 -1.13,-3.44 -4.24,-5.4 -7.25,-6.96 -2.59,-1.3 0.21,-3.74 1.9,-4.17 -1.15,-4.86 -6.38,-5.68 -10.5,-6.63 -1.66,-1.44 1.51,-4.7 -1.45,-5.85 -1.47,-2.96 -3.98,-0.6 -6.15,-0.03 -4.99,1.83 -10.54,1.94 -15.74,2.63 -0.77,-0.67 -2.77,-2.61 -3.03,-0.5 -0.96,2.08 -4.29,1.95 -5.15,-0.33 -1.46,-1.7 -1.05,-3.98 -3.62,-3.71 -2.87,-0.72 -2.28,-4.47 -1.51,-6.47 2.3,-1.83 -2.65,-2.89 -4.3,-2.43 -1.7,1.3 -2.92,3.72 -5.37,4.41 -1.61,-1.19 -1.85,2.9 -0.04,2.88 0.66,3.05 1.58,6.38 1.39,9.48 -1.36,2.21 -0.38,7.05 -3.72,7.01 -1.95,0.12 -2.86,4.45 -5,1.12 -2.19,-1.15 -2.98,-4.4 -0.24,-5.3 -0.32,-1.92 -3.58,-5.33 -4.44,-2.09 -2.92,1.68 -7.59,1.16 -8.96,-2.28 -0.97,-2.98 -4.83,-0.87 -7.1,-1.48 -2.57,0.83 -5.91,1.76 -7.83,3.43 -0.82,2.98 1.43,4.47 3.69,5.77 1.52,2.24 6.27,1.22 5.55,4.87 -1.22,3.47 -5.4,0.77 -7.88,0.59 -0.91,0.73 1.13,4.84 -1.63,4.69 -2.37,-0.99 -5.13,-1.74 -7.34,-2.66 -1.81,-3.33 -1.13,-7.07 -0.75,-10.66 -3.86,-0.79 -8.92,-2.08 -9.69,-6.56 -1.65,1.27 -4.99,0.71 -4.64,-1.87 -0.45,-2.76 -1.64,-5.72 -3.61,-7.69 -2.74,-0.99 -5.53,-1.93 -6.83,-4.79 -1.25,-3.09 -5.32,-0.4 -7.74,-0.8z m46.75,26.38c-0.1,0.03 0.04,0.06 0,0z","name":"Bayern"},"bw":{"path":"m233,542.31c-1,3.03 -3.8,0.55 -6.25,1.41 -1.85,0.3 -6.11,-0.67 -4.1,2.56 0.5,1.4 3.45,5.79 2.97,1.91 0.74,-2.88 3.54,0.29 3.5,2.12 -0.05,2.12 0.13,4.28 -0.67,5.91 -2.21,2.88 -6.93,-2.7 -8.36,1.34 0.26,1.89 -0.96,3.78 -2.66,5.38 -2.87,1.47 -6.48,1.36 -9.56,0.91 -0.14,1.71 -1.09,2.75 0.88,3.56 2.16,2.43 -1.84,4.61 -2.82,1.5 -2.24,-0.41 -4.9,0.87 -7.01,1.83 -1.86,1.31 -3.21,3.14 -1.07,4.79 -2.58,2.03 -4.76,4.93 -7.53,6.53 -2.28,0.77 -4.85,-1.67 -3.07,-3.7 0.44,-3.45 3.31,-3.76 5.49,-5.64 2.15,-2.77 -2.95,-1.33 -4.33,-2.33 -3.36,-0.68 -8.66,-1.27 -8.78,-5.66 -0.37,-2.27 -2.39,-6.18 0.16,-6.35 -1.56,0.22 -6.19,0.51 -5.66,2.03 1.02,1.01 1.63,3.91 1.34,5.81 -0.91,2.56 -4.61,4.01 -6.17,1.22 -1.23,-2.27 -2.8,-5.47 -5.58,-5.87 -1.35,0.5 -2.27,2.96 -1.13,4.34 0.64,2.82 1.72,5.99 1.41,8.75 -1.19,1.47 2.13,0.8 2.94,1.09 2.56,1.28 -0.68,4.01 0.44,6.03 0.58,2.78 -1.68,4.86 -3.44,6.5 -0.2,1.61 2.95,0.95 2.5,3.03 -0.5,1.7 -2.89,2.29 -3.8,3.97 -1.51,1 -4.09,2.21 -3,4.19 -0,4.19 -1.63,8.4 -2.57,12.44 -1.88,2.38 -4.07,4.74 -4.06,8 -0.94,3.32 -4.33,5.15 -7.25,6.25 -3.09,4.3 -5.58,9.02 -6.75,14.19 -2.02,2.94 -5.4,5.15 -8.91,5.69 -0.21,2.82 -1.4,5.14 -3.56,6.99 -1.36,2.17 -3.49,3.53 -5.66,4.61 -1.15,2.67 -3.64,5.13 -2.5,8.22 0.36,2.98 -0.28,5.69 -1.97,8.15 -1.95,4.34 -4.99,8.87 -3.01,13.76 0.98,2.33 -1.6,3.46 -3.29,4.06 -1.58,3.35 -1.03,7.85 -3.97,10.71 -3.45,3.81 -5.74,8.63 -5.57,13.85 -1.32,3.83 3.9,5.48 3.32,9.25 -1.3,3.08 -3.94,5.46 -4.57,8.93 -0.87,1.91 1.04,3.96 -0.54,5.81 -1.06,2.51 -2.87,5.19 -1.04,7.86 1.18,2.15 -0.92,4.15 -2.35,5.35 -0.31,3.89 3.1,6.22 5,9.16 2.34,1.03 6.63,0.35 6.5,3.84 -1.16,1.4 -4.38,2.08 -0.94,3.62 2.67,0.19 5.38,-1.24 7.85,-2.15 1.44,-1.71 2.81,-3.83 5.44,-3.09 2.67,-0.79 2.95,2.96 5.54,2.9 3.15,1.3 6.81,1.64 9.99,0.41 0.13,-3.3 4.53,-3.63 6.59,-5.48 2.38,-1.41 5.39,0.37 7.78,0.98 0.79,1.29 -0,3.08 2.19,3.78 3.61,0.25 7.37,1.32 10.72,-0.47 -3.18,-2.2 -0.41,-3.55 1.74,-5.09 1.44,-1.37 5.34,0.59 4.6,2.72 0.03,1.73 2.81,-2.43 2.91,-3.66 0.99,-2.17 -2.08,-3.31 -3.78,-2.38 -2.21,0.79 -3.16,2.58 -5.97,3.13 -1.88,-0.81 -4.32,-2.21 -5.31,-4.16 0.59,-3.61 2.99,-6.72 5.06,-9.63 1.63,-2.24 5.73,-0.38 6.44,-3.38 2.06,-2.35 5.55,0.44 4.49,3.47 2.07,0.67 0.21,-4.19 4.06,-1.25 1.57,1.2 4.32,3.45 2.25,5.23 0.1,2.76 1.41,4.58 4.22,5.01 1.74,-2.24 3.46,-0.92 5.76,1.59 2.1,2.97 5.8,0.78 7.96,-0.93 3.82,-2.7 8.65,-0.24 12.27,1.62 3.55,2.04 4.43,-1.99 2.13,-4.27 -0.59,-2.2 -2.12,-3.67 -4.12,-4.07 -2.4,-1.85 -6.01,-3.5 -6.96,-6.5 0.3,-2.1 3.03,-1.62 3.78,-0.16 3.5,2.46 7.48,4.47 10.66,7.31 -0.21,3.96 4.69,5.62 7.5,7.39 1.67,0.53 3.72,-1.14 5.59,-0.11 2.75,0.87 6.81,1.33 7.03,4.97 0.46,3.2 4.49,4.9 6.69,2.27 1.24,-1.5 4.61,-2.56 5.4,-0.7 4.17,1.33 6.15,-3.91 8.97,-5.72 3.32,-0.45 7.13,0.12 10.19,-0.66 1,-2.57 4.28,-2.37 6.22,-1.28 0.84,2.31 0.58,2.71 2.56,1.13 2.97,-0.39 2.03,-4.58 0.76,-6.39 -1.17,-2.02 -2,-5.8 -0.79,-7.3 3.32,-0.17 0.06,-2.21 -0,-3.93 -0.63,-3.04 -0.86,-6.31 0,-9.32 -2.23,-0.74 -2.32,-4.76 0.44,-4.66 -0.41,-2.68 2.08,-4.21 1.66,-6.88 -0.15,-2.82 0.59,-6.09 -1.94,-7.94 -2.26,-5.15 -1.96,-11.11 -3.49,-16.32 -1.93,-2.69 -4.53,-5.55 -4.67,-9 0.46,-2.92 3.93,-5.48 2.72,-8.47 0.1,-0.35 4.87,-3.47 6.42,-2.05 2,3.2 4.93,-0.95 6.82,-2.36 0.33,-1.38 1,-2.91 3.14,-2.96 3.03,1.76 2.98,-2.24 2.69,-4.25 -0.32,-3.5 -1.14,-6.78 -3.64,-9.37 -0.98,-1.42 0.15,-4.75 1.23,-5.16 3.02,1.48 6.11,1.47 9.25,0.41 2.37,-0.94 3.55,1.55 1.82,3.19 0.08,1.06 5.19,-1.87 2.3,-2.88 -0.25,-2.1 -0.85,-4.44 -3.47,-3.91 -1,-3.13 0.42,-4.65 1.54,-7.33 0.09,-4.38 1.32,-9.19 -0.13,-13.38 -2.03,-1.38 -1.82,-4.46 -4.4,-5.39 -2.47,-2.1 -5.26,-3.59 -8.29,-4.72 -0.45,-2.63 0.5,-4.11 -0.61,-6.97 -0.35,-3.23 -2.39,-5.85 -5.43,-6.81 -1.8,-1.05 -4.02,-2.25 -3.05,-4.75 -0.53,-2.57 0.99,-5.27 0.62,-7.5 -1.67,-2.84 -3.08,-6.33 -1.5,-9.56 2.72,0.17 4.05,-1.19 2,-3.69 -1.12,-2.08 -1.1,-4.65 -2.84,-6.37 -0.05,-1.52 1.05,-2.79 -0.28,-4.24 -1.33,-3.13 -3.46,0.38 -1.36,0.89 -1.36,2.26 -3.18,4.9 -6.23,4.2 -1.84,0.68 -5.99,-0.78 -4,-3.06 0.32,-2.43 0.8,-5.95 -0.91,-7.66 -1.91,-0.49 -2.69,-3.58 -3.13,-5.51 -1.12,-3.07 -1.07,-6.84 -4.03,-8.84 -3.37,0.71 -6.2,2.77 -9.34,3.81 -2.15,-0.26 -3.2,-3.12 -1.25,-4.19 -0.15,-1.71 1.98,-8.34 -1.11,-4.8 -1.56,1.02 -3.09,4.67 -5.17,2.44 -1.38,-0.64 -3.13,-1.84 -2.32,-3.58 -0.34,-0.5 -0.91,-0.09 -1.41,-0.13z m-57.69,212.03c0.26,4.67 5.28,-0.76 0,0z","name":"Baden-Württemberg"}}});
Index: public/vendors/vmap/maps/jquery.vmap.greece.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.greece.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.greece.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+jQuery.fn.vectorMap('addMap','greece',{"width": 700, "height": 637, "paths":{"30":{"path":"M420.84,610.62l0.6,-2.95l2.52,-1.21l1.51,0.78l1.03,-1.03l0.13,-5.12l0.49,-2.19l0.69,-0.69l2.13,3.43l4.4,-0.52l1.93,-6.25l0.03,-3.74l-2.04,-2.19l1.58,-2.32l-1.7,-2.35l0.23,-0.51l1.97,1.18l0.59,-0.23l0.34,-1.21l3.46,0.17l0.95,-1.95l1.37,1.01l1.07,-0.67l0.98,0.21l-0.15,0.88l1.02,0.9l1.19,0.12l-0.76,1.22l0.24,1.97l0.55,1.17l1.5,0.9l2.54,0.2l6.51,-0.8l1.36,1.17l2.4,-0.2l0.93,0.45l11.41,-0.75l0.68,1.54l1.45,1.2l0.91,0.09l0.73,1.11l4.33,-0.05l-0.1,1.51l-2.21,1.89l-2.68,0.03l-1.29,0.98l0.02,1.76l-1.56,3.51l0.34,1.46l1.06,1.18l6.05,2.92l0.88,0.98l-0.27,2.21l2.54,1.09l1.24,2.29l0.05,4.61l-3.61,0.77l-2.45,-0.82l-3.17,0.44l-3.4,-1.09l-3.46,1.49l-3.85,-0.2l-1.15,1.54l-1.66,0.85l-4.03,1.04l-0.59,-0.72l-4.34,0.12l-2.71,1.72l-0.64,-0.51l-3.66,-0.32l-2.35,1.19l-2.49,-0.5l-1.86,0.83l-0.55,-0.7l-2.58,0.65l-6.38,-1.29l-2.17,0.32l-1.42,1.22l-1.83,-0.47l-2.65,0.59l1.84,-2.13l-0.76,-1.24l0.45,-0.4l-0.38,-1.96l0.08,-0.94l1.05,-0.6l-0.02,-1.74l-1.25,-4.67l-1.74,-1.49l-1.46,-0.17ZM459.6,579.71l-0.31,-0.33l1.25,-0.46l0.42,-0.92l1.68,1.17l-0.16,1.03l-0.79,0.27l-0.35,-0.81l-1.75,0.05Z","name":"Heraklio"},"28":{"path":"M275.61,38.56l4.99,0.09l0.68,0.66l3.98,0.4l1.89,-0.26l5.64,1.51l6.68,-0.2l3.51,-1.66l1.13,-3.67l4.09,-2.23l2.08,0.08l1.54,3.26l3.52,-1.75l1.79,-1.66l1.4,0.24l1.45,-0.73l3.6,0.73l3.36,-0.66l1.72,1.77l2.12,-0.35l1.54,1.17l2.45,0.01l-0.2,1.86l1.18,4.08l6.66,3.06l-1.35,4.61l0.6,1.63l3.83,3.09l4.69,5.15l4.14,2.81l4.19,0.99l2.35,2.15l1.9,-1.23l2.58,-0.02l1.37,0.93l1.75,2.91l5.29,3.67l-0.4,1.12l0.82,2.63l-1.09,3.5l-5.39,4.06l-1.72,2.35l-4.08,3.11l-12.05,3.17l-2.08,0.73l-1.58,1.27l-12.88,0.02l-3.68,-2.34l-2.51,-2.52l-1.88,-0.52l-2.98,1.0l-1.01,-0.36l-0.97,-2.77l-4.22,0.31l-0.97,-1.0l-0.6,-3.84l-1.36,-0.94l-0.48,-1.48l-2.98,-0.46l-2.04,-4.12l-2.87,-3.05l-3.59,-2.52l1.03,-2.29l-0.51,-1.9l-12.37,-4.52l-4.06,-4.34l0.16,-1.31l-0.87,-1.43l-0.55,-0.13l-4.51,2.8l-2.52,-0.63l-1.11,-0.86l-0.5,-1.16l1.05,-4.05l-1.2,-3.99l0.4,-5.98Z","name":"Serres"},"29":{"path":"M261.09,114.12l-4.19,-1.83l-2.31,-5.35l-4.42,-4.66l-5.66,-0.79l2.39,-2.42l2.8,-1.76l1.25,0.19l0.43,-0.55l-1.82,-2.64l-0.88,-2.62l-1.62,-1.01l3.07,-0.25l0.34,-1.26l3.87,0.84l1.55,-0.54l-0.31,-1.25l1.26,-1.51l1.37,-0.67l0.9,0.31l-0.17,2.39l0.9,2.71l2.64,2.12l4.45,-2.1l4.6,0.43l5.98,-1.36l1.63,0.13l1.96,-2.29l4.89,-2.55l-0.05,-3.85l0.66,-0.94l4.95,-2.22l5.91,-0.85l2.36,-2.28l4.58,-1.55l1.0,-0.95l1.64,1.32l1.99,4.11l2.92,0.41l0.44,1.38l1.31,0.86l0.59,3.77l1.3,1.44l4.38,-0.17l0.52,2.34l1.6,0.77l3.25,-1.0l1.41,0.45l2.38,2.44l4.04,2.49l10.33,0.14l-2.67,4.56l-0.44,2.83l0.74,0.82l3.21,0.88l1.91,2.27l-6.67,-0.18l-3.58,3.38l-1.44,0.69l-4.12,-0.43l-2.67,2.17l-7.05,-1.43l-3.01,4.83l-1.1,0.85l-1.23,-0.64l-2.84,-0.2l-2.18,3.74l-4.04,-0.84l-4.81,1.68l-2.33,2.65l-0.25,1.41l0.57,2.49l-2.37,2.06l-1.23,2.15l-1.07,0.02l-0.99,-0.77l-0.34,-3.73l-2.04,-0.5l-1.49,1.22l-1.06,2.4l-0.76,5.1l-0.73,-1.84l-2.64,-2.37l-1.79,-0.28l-1.36,-0.99l-2.85,0.18l0.64,-0.61l-2.23,-3.32l-1.36,-0.83l-0.83,-2.98l-1.17,-0.84l-1.99,-0.38l0.24,-2.01l3.24,0.44l3.59,-0.39l3.02,-1.19l2.7,-2.11l0.31,-1.53l-3.55,-2.77l0.9,-1.0l0.37,-2.36l-1.15,-1.6l-1.81,-0.6l-0.81,0.32l-1.58,-1.03l-2.77,1.87l-1.81,-0.6l-0.44,1.13l0.88,1.05l1.26,0.16l-0.15,1.67l-3.95,2.47l-2.1,-0.7l-2.56,1.06l-0.45,0.56l0.56,1.15l-0.98,0.74l0.39,2.02l-1.09,-0.6l-0.49,0.48l0.19,1.0l-1.11,-1.76l-0.5,0.16l-0.42,-0.86l-0.77,-0.17ZM278.81,128.1l-0.0,0.0l-0.05,-0.0l0.01,-0.01l0.05,0.01Z","name":"Thessaloniki"},"34":{"path":"M502.84,458.49l0.72,0.26l1.34,-1.64l0.88,0.18l0.59,-0.6l2.96,0.43l1.56,-0.58l0.62,-0.58l-0.31,-0.68l1.34,-0.35l-2.04,-1.11l0.41,-0.71l4.64,-1.26l4.73,-2.72l1.13,-0.93l-0.51,-0.8l-1.29,-0.08l1.12,-1.04l2.19,0.13l0.42,-0.94l2.71,2.05l2.69,1.14l-0.98,0.1l-0.97,-0.78l-2.04,0.3l-4.1,1.71l-2.02,2.22l-1.13,0.23l-2.09,2.09l-0.42,1.29l-2.97,2.51l-3.02,0.1l-1.95,1.66l-2.14,-0.13l-2.06,-1.47ZM515.0,449.74l0.37,-0.11l0.75,0.15l-0.19,0.14l-0.92,-0.18ZM501.66,496.87l2.8,-3.07l4.2,2.63l0.67,1.13l1.66,0.48l-0.67,0.25l-1.68,-0.93l-4.01,1.0l-2.45,-0.78l-0.52,-0.72ZM506.66,429.4l1.43,-1.27l1.41,1.52l-0.07,0.81l-1.4,0.35l-1.59,-0.92l-0.31,-0.87l0.53,0.36ZM509.09,505.08l0.62,-0.01l0.04,0.15l-0.39,0.22l-0.28,-0.37ZM497.64,473.35l0.11,0.0l-0.04,0.04l-0.07,-0.04ZM496.21,453.59l0.05,-0.03l0.08,0.11l-0.07,-0.03l-0.06,-0.05ZM492.19,449.99l0.1,-0.84l1.17,0.1l1.54,-1.28l1.72,0.73l-0.13,0.73l0.79,0.93l-0.85,-0.37l-1.4,0.4l-1.27,-0.91l-1.67,0.5ZM490.75,445.09l0.44,-1.01l1.07,-0.1l0.47,0.8l-0.9,0.61l-1.07,-0.29ZM472.0,432.79l-0.92,-1.49l1.94,0.6l0.86,-1.33l-0.11,-0.73l2.88,-2.45l2.71,-0.38l1.96,-1.84l1.07,-2.07l3.57,-1.82l0.6,0.35l0.15,1.14l2.39,2.11l1.61,4.04l-0.65,1.4l0.48,1.44l-0.94,0.85l-0.48,4.64l-0.81,0.73l-1.25,4.94l-3.04,0.15l-1.4,0.68l-0.91,1.39l-0.75,-0.46l-1.72,1.76l-1.67,-1.3l0.13,-2.87l-3.04,-1.35l0.61,-1.0l-1.76,-2.95l0.64,-1.16l-2.15,-3.02ZM488.07,448.11l-0.07,-0.03l0.36,0.02l-0.14,0.03l-0.15,-0.03ZM488.65,447.99l0.33,-0.48l0.27,0.03l-0.48,0.56l-0.12,-0.12ZM490.18,447.02l0.13,-0.23l0.38,-0.18l-0.26,0.31l-0.26,0.1ZM484.44,451.14l-0.69,-0.59l1.29,-1.01l0.79,2.34l-1.39,-0.74ZM481.95,398.56l-0.04,-0.05l0.09,-0.09l0.03,0.06l-0.08,0.08ZM472.63,497.63l0.21,-0.54l0.29,0.16l-0.09,0.0l-0.41,0.38ZM473.26,497.25l0.61,-0.28l2.52,0.53l2.09,-3.08l-0.67,-1.24l-0.12,-1.97l-0.76,-0.56l0.69,-1.19l-0.79,-1.1l-0.42,-0.43l-3.06,0.13l0.0,-0.91l1.18,-0.58l2.27,0.63l5.06,5.69l0.09,2.74l-0.61,0.75l0.46,0.67l-2.95,2.39l-1.62,-1.25l-2.86,-0.11l-1.11,-0.81ZM477.9,455.08l-0.61,-0.55l0.62,0.12l0.55,-0.63l-0.24,-0.58l1.44,-0.56l0.4,-0.4l-0.02,-0.14l0.42,-0.42l-0.07,-0.09l0.2,-0.2l0.19,1.15l0.74,0.67l-0.15,1.23l-1.05,-0.01l-0.73,0.76l-1.69,-0.35ZM468.85,401.16l0.0,-0.0l0.0,0.0l-0.0,-0.0ZM468.87,401.08l-0.79,-0.62l0.07,-0.55l0.5,0.22l0.22,0.95ZM470.07,401.46l-0.46,-0.71l0.57,-3.52l-1.16,-0.91l-0.5,-0.9l0.32,-0.52l3.01,-0.49l0.12,1.85l1.47,1.56l1.08,-1.01l-0.15,-2.2l1.12,-0.03l-0.06,0.89l0.88,0.63l1.09,-0.1l0.27,0.9l2.21,-0.1l-0.34,1.61l-2.31,0.32l-0.65,1.12l-0.73,-0.37l-0.68,1.56l-0.83,-0.55l-0.92,0.99l-0.48,-0.28l-0.39,0.81l-2.04,-0.91l-0.43,0.33ZM474.69,493.39l0.11,-0.58l1.08,0.14l-0.81,0.84l-0.38,-0.4ZM464.56,464.18l-0.3,-0.35l0.74,-1.52l-0.27,-1.94l0.88,-1.27l2.4,-0.59l1.51,1.41l0.27,0.62l-0.51,0.99l0.42,0.43l4.42,2.03l1.01,1.22l-1.67,1.68l0.43,0.67l-0.39,0.41l0.68,0.73l-0.55,0.63l0.61,0.93l-1.33,-0.53l-0.98,1.42l-1.86,-2.68l-2.93,-2.47l0.41,-0.54l-0.6,-0.68l-1.67,0.15l0.52,-0.67l-0.55,-0.58l-0.7,0.5ZM469.77,490.79l0.89,-1.87l0.87,0.45l-0.7,1.3l0.26,1.38l-1.28,-0.53l-0.04,-0.74ZM452.02,436.9l0.77,-1.41l-0.09,-1.83l3.88,-2.43l-0.55,-0.8l-1.02,-0.23l1.95,-1.97l4.07,-1.67l0.04,0.69l-0.83,0.75l1.3,0.91l1.45,-0.71l1.75,0.33l0.74,-0.93l0.31,0.66l-1.36,1.88l0.28,0.89l-1.07,1.08l1.76,1.61l-0.99,0.53l0.43,0.75l-1.46,1.82l-0.22,1.31l-5.07,3.1l-2.73,-0.98l-1.09,-1.16l-0.76,0.38l-1.48,-1.73l0.01,-0.84ZM465.42,427.26l-0.28,-0.9l0.82,-0.38l0.4,0.51l-0.94,0.78ZM464.63,426.32l0.0,0.0l-0.0,0.0l0.0,-0.0ZM465.35,404.05l-0.25,-0.32l0.14,-0.52l0.28,0.58l-0.17,0.25ZM443.43,380.46l-1.14,-1.21l-0.18,-0.89l1.64,0.95l0.6,-1.16l0.87,0.56l0.76,-0.65l0.62,0.81l1.04,-0.66l0.42,1.03l-0.72,0.72l1.15,0.96l1.21,-0.19l0.43,0.82l2.8,-1.22l1.71,1.16l0.33,1.0l0.88,-0.18l0.36,-0.71l1.18,0.39l0.86,-0.49l0.41,0.54l1.22,0.05l2.67,2.2l0.92,-0.08l-0.04,2.07l-1.88,2.64l0.32,1.49l-3.09,0.9l-3.51,-2.45l-1.18,-0.25l-0.53,0.55l-0.77,-0.39l0.39,-1.2l-1.23,-1.29l-2.65,-1.47l-0.43,0.3l-1.57,-2.05l-1.68,-0.67l-2.17,-1.91ZM459.99,400.83l1.13,0.29l0.48,-0.48l0.76,0.62l-0.13,0.65l-1.06,0.5l-0.1,-0.76l-1.07,-0.83ZM463.25,404.57l-0.13,-0.51l0.53,-0.46l-0.04,0.99l-0.36,-0.01ZM461.95,402.29l0.02,0.02l0.0,0.0l-0.02,-0.02ZM461.84,405.15l-0.15,-0.1l0.47,-0.56l-0.04,0.58l-0.27,0.08ZM459.81,507.32l-0.06,-0.0l0.15,-0.25l0.13,0.13l-0.22,0.13ZM449.9,472.1l-0.87,-0.13l1.86,-2.41l0.66,-2.14l3.33,-1.94l2.96,-0.13l-0.16,0.96l-2.04,2.14l-5.74,3.64ZM445.84,441.07l0.5,-1.96l-0.4,-0.45l1.56,-0.81l0.9,-1.61l1.79,-0.6l-0.9,3.14l0.04,2.04l-1.11,1.03l0.85,1.88l-2.01,-2.26l-1.22,-0.41ZM450.22,435.48l-0.09,-0.22l0.15,-0.02l0.07,0.06l-0.13,0.18ZM443.16,443.4l-0.67,-0.59l0.57,-0.82l0.8,0.62l1.27,-0.48l0.6,0.56l-1.47,0.57l-0.46,-0.45l-0.63,0.58ZM420.49,356.11l-0.55,-0.92l0.13,-1.6l-0.7,-0.77l0.43,-1.14l2.83,-1.07l1.45,-1.35l2.99,-0.46l-0.55,1.07l0.66,1.19l3.07,0.96l-0.42,2.09l1.41,2.84l1.95,0.03l0.95,0.71l5.12,-0.31l0.42,0.41l0.43,2.15l-1.38,1.49l-0.37,1.37l1.04,1.03l0.88,0.02l0.42,1.09l0.64,-0.48l0.63,0.9l-2.27,3.87l0.71,0.73l3.15,-0.69l-1.53,3.69l-2.28,2.3l0.61,0.96l-0.37,0.4l-2.82,-2.63l0.26,-0.67l-2.06,-3.62l-0.88,-0.58l-0.94,0.27l-0.55,-1.16l-0.65,0.12l-0.64,-1.62l-1.13,-0.25l-0.04,-1.26l-1.06,-0.98l-1.11,-0.16l-1.01,-2.81l-1.87,-2.03l-2.16,-0.38l-0.55,-0.79l-1.37,1.46l0.15,-1.8l-1.29,-0.74l0.24,-0.93ZM432.87,403.09l0.13,-1.03l1.2,-0.54l0.42,-0.42l-0.34,-0.52l2.09,-1.73l-0.46,-1.72l0.57,-0.81l-0.57,-0.64l0.57,-0.86l-1.75,-1.8l3.26,1.01l1.57,2.18l-0.04,2.25l-0.88,1.77l1.14,0.27l1.47,2.34l-1.36,1.02l-0.48,-0.39l-4.8,2.35l0.36,-2.51l-0.53,-0.5l-1.57,0.27ZM440.58,444.18l0.07,-0.33l0.45,-0.35l-0.31,0.65l-0.21,0.04ZM431.75,470.64l1.26,-0.66l3.6,3.02l1.01,0.18l0.55,-0.48l1.35,0.97l-0.18,0.67l0.82,1.04l-0.6,0.42l-2.63,-0.48l-1.45,-2.94l-2.4,0.0l-1.34,-1.73ZM416.32,436.84l0.02,-0.43l0.55,-0.05l1.45,1.16l1.53,-0.16l4.95,6.08l-1.72,1.98l-0.44,-0.34l-0.71,0.58l-1.03,1.92l-0.76,-0.15l-0.64,-1.06l0.5,-0.81l-0.9,-0.31l-0.46,-1.4l0.37,-0.48l-1.21,-0.85l0.33,-0.66l-0.95,-0.75l1.8,-0.96l-1.77,-0.95l0.28,-0.46l-0.76,-0.7l0.3,-0.81l-0.75,-0.38ZM422.13,448.17l0.0,-0.02l0.02,0.0l-0.02,0.02ZM418.49,384.43l-0.19,-0.05l0.42,0.05l-0.23,0.0ZM419.3,384.48l1.78,-2.01l2.05,-0.35l-0.55,1.98l0.33,0.94l-3.61,-0.56ZM413.17,459.53l0.39,-0.78l2.86,0.88l0.61,1.77l-1.01,0.75l-2.0,-0.53l-0.86,-2.09ZM406.38,456.31l-0.02,-0.64l0.43,0.18l2.27,-2.13l1.25,1.45l1.56,-0.44l0.32,0.19l-0.86,1.13l-0.11,1.61l-1.27,1.58l-0.92,-0.3l-1.29,0.7l-0.66,-0.65l0.18,-0.99l-0.88,-0.63l-0.02,-1.08ZM390.6,470.47l-0.11,-0.96l1.03,-1.0l-0.46,-1.49l0.85,-1.1l-0.51,-0.65l1.32,-2.83l1.55,1.67l1.35,-0.3l0.34,0.44l-0.56,1.29l0.8,0.98l1.75,0.15l1.08,1.16l1.18,0.08l1.77,-0.96l0.47,-1.1l-1.78,-2.03l-1.64,0.35l-1.41,-2.23l0.11,-1.3l0.74,-0.27l-0.31,0.68l0.49,0.53l3.35,1.58l2.83,-1.18l0.53,-1.16l1.86,0.73l-0.77,1.31l1.4,3.45l-1.39,2.25l-0.87,-0.16l-3.31,1.43l-0.68,-0.68l-1.55,-0.28l-2.56,1.18l-5.76,0.43l-0.9,0.65l-0.23,-0.65ZM398.01,427.74l0.38,-0.39l1.04,-0.67l-0.83,-1.59l1.18,-0.4l-0.55,-0.81l1.01,-0.62l0.36,-1.13l0.55,0.39l0.45,-0.79l0.78,0.24l0.56,-0.97l2.24,0.08l1.43,0.76l-0.33,0.86l0.38,0.42l-0.8,1.65l0.78,0.44l0.34,1.13l-0.92,-0.76l-0.75,0.53l0.0,2.32l-1.2,0.56l0.2,-0.67l-0.99,-0.78l-1.7,0.4l0.35,-0.94l-0.62,-0.55l-1.07,0.78l-0.53,-0.58l-1.75,1.08ZM394.19,411.77l0.64,-0.69l-0.41,-1.03l0.85,-1.07l-0.03,-1.1l1.65,-1.78l-0.93,-1.64l0.69,-0.71l0.15,-0.78l-0.68,-0.59l0.6,-0.5l-2.63,-0.85l2.54,-3.33l2.51,-1.78l-0.64,3.46l1.0,0.29l0.21,1.12l2.02,0.03l1.23,2.16l-0.38,0.38l-0.8,-0.59l-1.01,0.55l-0.37,0.86l0.4,0.76l-1.19,2.66l-0.56,-0.13l-0.68,1.38l-0.55,-0.14l-1.96,2.55l-1.66,0.51ZM387.38,387.25l-0.33,-0.97l-0.85,0.04l0.99,-1.44l-0.46,-1.51l0.81,-0.66l-0.27,-0.36l1.3,-2.57l1.79,-0.21l0.63,-1.72l1.2,-0.33l0.47,0.84l0.89,-0.94l3.2,1.85l0.36,0.77l-0.91,0.57l0.26,0.51l-0.86,2.17l-2.58,3.62l-3.02,2.11l-1.93,2.45l-0.99,0.06l-0.26,-1.64l0.56,-2.63ZM382.76,458.05l0.87,-0.71l1.0,0.28l-0.35,2.34l-1.37,-1.11l-0.15,-0.8ZM373.3,379.84l1.99,-7.53l0.84,-1.21l0.61,1.1l-0.43,0.43l0.24,0.89l-1.18,1.08l-0.92,2.18l0.3,0.4l-1.45,2.66Z","name":"Cyclades"},"24":{"path":"M288.95,133.67l0.57,-1.39l0.2,-3.74l0.99,-2.24l1.15,-0.9l0.91,0.14l0.48,3.87l1.24,0.96l1.69,0.06l1.63,-2.46l2.49,-2.23l-0.31,-3.95l2.09,-2.31l4.43,-1.5l4.02,0.89l2.26,-3.77l4.14,0.82l1.48,-1.18l2.59,-4.5l6.97,1.43l2.6,-2.15l4.06,0.42l1.82,-0.8l3.28,-3.26l4.05,0.42l2.99,-0.3l0.57,0.58l0.24,2.03l1.82,1.52l1.14,0.0l1.31,2.16l1.75,-0.29l2.02,0.75l0.51,-0.51l0.16,0.81l1.73,1.19l-1.36,0.79l-4.51,0.0l-0.99,0.71l-0.79,2.88l1.31,4.02l1.32,0.75l-0.15,0.6l0.99,1.3l2.61,2.24l3.02,1.22l2.38,-0.07l0.53,0.43l2.63,-0.54l-0.04,4.51l-0.24,0.81l-2.64,-2.77l-3.39,-1.66l-2.35,0.41l-3.13,-0.93l-3.33,1.35l-2.06,1.77l-1.12,-0.84l-2.69,-0.7l-0.99,1.23l0.19,0.69l-1.28,-0.13l-0.47,0.45l-1.05,4.35l1.18,2.67l2.64,3.04l1.53,0.47l0.15,1.61l1.39,1.51l1.25,0.34l1.24,-0.57l1.3,1.21l6.81,2.1l1.93,1.86l2.95,1.04l1.09,1.14l-0.72,0.84l-0.2,1.65l2.11,2.19l-1.63,1.71l0.64,0.94l1.93,-0.03l0.33,1.35l-0.27,0.98l-0.96,0.18l-1.56,1.79l0.85,1.19l-2.38,0.8l1.17,0.99l1.07,-0.04l-0.9,0.45l-1.44,-0.26l-1.49,0.96l-1.47,-0.9l0.5,-1.3l-1.04,-0.86l-0.21,0.9l-0.57,-0.0l0.02,-1.9l-1.34,-1.28l-1.34,-0.1l-0.85,-1.68l-2.06,-0.93l-1.22,0.43l-0.24,-1.76l-2.02,-2.22l0.38,-2.09l-1.42,-0.83l-0.11,-1.83l-3.1,-2.57l-1.85,-3.43l-1.41,-1.36l-0.98,-0.19l-0.24,-0.8l-2.28,-1.98l-2.91,-0.41l-2.47,0.34l-2.59,-1.14l-1.7,0.08l-2.61,-2.1l-2.8,-0.26l-2.61,-1.4l-2.1,-0.23l-1.38,0.72l-2.92,3.12l-1.75,3.48l-0.51,-1.62l-2.0,-1.72l-5.56,-1.81l-2.01,-0.09l-1.69,-1.28l-2.39,-0.21l-2.36,-1.99l-6.25,-2.37ZM315.18,150.84l2.0,0.36l1.61,1.12l1.69,2.3l1.01,2.63l3.62,3.89l7.71,3.46l3.66,1.19l1.97,0.08l0.92,0.87l-0.3,0.69l1.63,2.98l1.16,0.49l2.78,-0.31l0.19,0.74l-2.37,0.7l-2.39,-0.85l-3.24,0.26l-3.9,-0.62l-1.21,-1.03l-1.8,-0.21l-7.19,-3.31l-1.95,0.0l-1.76,0.93l-2.91,-0.31l-1.13,0.47l1.27,-2.05l0.31,-2.01l-3.09,-4.6l-0.22,-1.19l-2.43,-1.83l-0.17,-1.23l1.38,-2.73l-0.5,-0.99l0.79,-3.51l-0.46,-1.85l1.35,1.68l0.53,2.3l1.47,1.51ZM311.83,145.21l0.0,0.05l-0.01,-0.06l0.01,0.01ZM311.77,145.09l0.0,-0.04l0.01,0.05l-0.01,-0.01ZM311.8,145.12l0.01,0.01l-0.0,0.04l-0.01,-0.01l0.0,-0.04ZM347.7,144.3l-0.23,-0.35l-0.04,-0.53l0.59,0.44l-0.32,0.44ZM356.51,133.08l1.6,-0.55l0.63,0.76l-1.11,0.41l-1.13,-0.62ZM359.96,134.69l0.01,-0.01l0.07,0.07l-0.02,0.0l-0.06,-0.06Z","name":"Chalkidiki"},"25":{"path":"M238.06,57.62l3.34,1.83l3.02,0.11l6.61,-1.25l3.21,1.2l1.77,-1.29l2.48,-4.13l1.12,-0.62l2.17,2.47l2.3,1.02l1.53,-1.3l1.16,-2.35l0.79,-11.67l0.59,-1.95l3.0,-1.17l3.7,0.45l-0.43,5.56l1.2,4.1l-1.06,3.85l0.73,1.81l1.41,1.04l2.76,0.69l4.62,-2.72l0.58,0.95l-0.1,1.48l4.33,4.57l12.31,4.52l0.19,1.2l-0.79,1.18l-0.1,1.66l3.73,2.62l0.66,1.09l-0.81,0.82l-4.58,1.55l-2.26,2.23l-5.83,0.84l-5.21,2.32l-1.05,1.57l0.12,3.55l-4.63,2.25l-1.84,2.21l-1.38,-0.19l-5.99,1.36l-4.58,-0.43l-1.5,0.28l-2.57,1.83l-2.21,-1.7l-0.84,-2.52l-0.06,-2.87l-1.66,-0.44l-1.73,0.89l-1.35,1.62l-9.75,-2.22l-6.01,0.56l-1.3,-2.76l-3.99,-1.96l-0.58,-1.63l-2.09,-2.63l-4.66,-1.23l-0.77,-2.62l0.58,-0.84l2.71,-0.08l0.35,-1.51l1.35,-1.37l-0.29,-1.21l1.08,-2.71l-0.11,-5.36l0.91,-3.05l1.46,0.97l4.23,-0.49Z","name":"Kilkis"},"26":{"path":"M211.87,55.91l0.97,-0.03l0.35,0.81l2.96,1.76l1.98,0.3l3.5,-3.04l3.69,-0.67l2.74,0.05l3.56,1.81l-0.95,3.24l0.11,5.34l-1.06,2.59l0.24,1.33l-1.17,0.93l-0.12,1.22l-2.51,0.07l-1.12,1.34l0.82,3.3l1.5,0.95l3.33,0.49l1.97,2.48l0.67,1.75l3.92,1.89l1.8,3.11l6.08,-0.6l9.74,2.23l0.26,0.33l-0.85,0.29l-1.31,-0.68l-2.85,-0.18l-0.4,1.32l-4.38,0.64l2.67,1.78l0.86,2.56l1.52,1.95l-0.96,-0.05l-2.88,1.81l-2.85,0.31l-1.82,2.39l-1.36,0.47l-2.69,0.07l-1.66,-0.85l-3.49,3.29l-2.89,1.63l-2.21,-2.73l-3.86,-2.37l-11.47,-3.0l-1.72,0.17l-1.08,1.13l-0.08,1.24l-4.29,1.33l-7.33,1.22l-9.96,-1.87l1.72,-3.68l-0.01,-1.47l-2.85,-1.22l-1.99,-5.47l-1.13,-1.18l0.3,-0.7l2.67,0.13l4.59,-1.16l1.47,-1.15l0.38,-1.49l-1.33,-1.56l-2.59,-1.15l-0.54,-3.37l2.17,-0.35l1.01,-1.14l0.56,-2.68l2.19,-1.61l1.49,-2.59l1.42,-0.56l0.68,-1.48l1.05,-0.26l0.95,-1.52l0.35,-3.17l4.14,-2.88l5.48,-0.88l1.1,-0.73l0.85,-1.56Z","name":"Pella"},"27":{"path":"M250.07,150.49l1.64,4.32l0.15,3.81l1.34,1.78l0.57,2.41l3.71,2.96l5.34,2.63l0.46,1.07l-4.87,0.76l-1.29,-0.93l-1.54,-0.21l-6.18,1.56l-2.75,-0.9l-2.32,-2.06l-1.83,-2.89l-5.3,-3.33l-2.29,-2.3l-0.85,-2.53l0.21,-3.97l-0.8,-1.74l-2.89,-1.44l-3.34,1.03l-4.56,4.61l-0.97,-0.33l-0.47,-1.09l-0.02,-2.69l0.99,-2.4l-0.31,-0.47l-4.12,-0.86l-2.37,1.52l-0.28,-0.65l-0.21,-1.66l0.46,-1.2l2.95,-1.26l1.2,-1.21l0.35,-2.92l3.0,-5.52l1.79,-1.14l2.84,-0.32l1.8,-1.1l3.35,-3.66l6.04,-4.69l2.9,-7.46l2.63,-0.51l2.63,1.89l4.04,-0.33l0.43,1.25l2.37,1.35l-0.6,1.36l1.62,1.69l-0.07,1.42l1.42,4.56l2.84,1.31l-4.47,7.52l-1.67,5.31l0.7,1.38l-2.74,3.26l-0.68,3.02Z","name":"Pieria"},"20":{"path":"M74.09,165.63l4.23,0.25l1.93,-0.81l0.4,-2.07l1.27,-2.06l-0.33,-1.04l2.88,-1.98l2.93,0.92l1.98,-1.52l2.73,1.55l1.47,-0.11l2.95,-0.61l1.75,-1.67l4.17,-0.51l0.15,-3.19l1.43,-2.34l-1.44,-1.51l0.29,-1.86l2.05,-0.83l1.5,-2.6l-0.3,-2.94l-1.01,-1.1l0.38,-1.32l1.28,-1.16l0.45,-1.26l3.27,0.53l2.81,-1.98l2.6,-0.55l0.98,1.19l1.6,4.35l3.31,3.72l2.09,4.02l0.99,3.83l-0.23,1.33l-1.96,3.23l1.25,1.38l1.06,3.97l2.11,2.57l3.34,-1.16l0.89,0.66l-0.18,2.46l-2.04,3.71l2.46,2.52l1.04,5.09l1.54,2.86l1.83,0.62l7.34,-2.0l2.67,0.12l4.9,2.6l0.02,0.51l-1.64,-0.42l-1.75,0.56l-2.54,2.14l-0.84,1.46l-0.51,1.44l1.38,7.58l-0.88,0.04l-1.35,-0.93l-3.08,-0.17l-2.91,2.05l1.0,5.99l3.27,3.08l-0.4,2.49l0.61,2.41l-1.13,1.93l-2.03,-0.59l-2.69,1.76l-4.4,-1.69l-1.46,1.41l-0.92,3.67l0.12,2.46l-1.18,2.37l-2.98,1.82l-1.37,-0.68l-1.46,0.97l-1.5,-0.1l-2.81,1.86l-7.21,2.45l-2.44,-1.78l-3.07,-0.76l-1.42,1.43l-2.41,4.57l-0.65,0.19l-2.48,-7.54l-1.51,-2.75l-0.18,-3.64l-1.25,-2.83l0.16,-2.8l-0.62,-1.35l-5.57,-1.41l-3.37,-4.07l0.01,-4.71l1.8,-2.57l-2.19,-3.85l-0.71,-4.09l-4.67,-0.88l-1.93,-2.06l-0.2,-1.8l1.34,0.57l1.07,-0.39l1.89,-2.43l0.31,-2.87l-2.25,-2.71l-0.29,-1.74l-3.64,-3.22l0.51,-2.16l-2.39,-3.57Z","name":"Ioannina"},"21":{"path":"M76.32,229.36l-3.08,-2.41l1.54,-1.5l2.83,-1.16l2.53,0.01l1.37,1.27l0.99,2.25l3.52,2.73l-0.18,0.61l-1.73,-1.12l-0.74,0.72l-0.77,-0.05l-1.84,-0.98l-2.0,0.47l-2.37,-0.29l-0.07,-0.55ZM87.58,231.43l1.78,0.52l3.46,-1.56l2.07,1.26l2.77,-0.72l2.45,0.42l1.42,-0.55l2.46,-4.67l1.13,-1.12l2.37,0.76l2.81,1.86l7.46,-2.54l2.82,-1.85l1.5,0.1l1.36,-0.9l0.53,0.39l-0.98,1.11l-0.43,5.67l-1.22,2.46l-1.18,0.98l-4.65,1.36l-0.74,1.43l1.81,5.73l-0.18,1.03l-2.67,3.22l-2.84,-0.25l-1.73,2.21l-1.46,0.76l-1.37,3.85l0.11,1.6l1.18,2.47l2.18,0.81l0.79,-0.21l2.74,2.2l1.07,0.1l0.21,0.66l-1.67,-0.31l-1.45,-1.13l-1.92,0.0l-0.33,-0.95l-0.82,1.14l0.42,2.04l-1.06,0.3l-0.75,-0.44l-1.92,-3.99l0.89,-0.58l0.35,-1.2l-0.26,-1.9l-0.96,-1.72l-3.4,-3.37l-1.01,-0.67l-0.71,0.2l-2.7,-2.05l-5.65,-6.69l-4.35,-2.72l0.42,-1.58l-0.74,-2.3l0.59,-0.73Z","name":"Preveza"},"48":{"path":"M390.39,225.38l-0.42,-0.15l0.75,-2.52l0.2,1.24l-0.52,1.43ZM376.93,222.06l0.9,-1.16l0.04,-1.94l0.88,-0.87l-0.02,1.04l0.66,0.75l-0.29,0.72l-1.57,1.68l-0.62,-0.21ZM379.18,210.53l-0.05,0.0l0.04,-0.13l0.06,0.06l-0.05,0.06ZM375.77,224.78l0.04,-0.03l0.17,0.24l-0.21,-0.21ZM373.95,250.66l0.31,-0.29l0.21,0.21l-0.21,-0.08l-0.3,0.16ZM373.59,249.38l-0.34,-1.34l0.28,-0.49l0.58,0.53l-0.53,1.31ZM368.63,226.67l0.66,-2.56l1.38,-1.36l0.18,0.45l-1.17,1.51l1.52,0.5l0.72,-1.07l0.46,0.73l-0.48,1.53l0.39,1.13l-1.85,1.5l-1.26,-0.8l1.08,-0.25l0.27,-0.79l-1.04,-1.04l-0.87,0.51ZM360.68,240.06l-0.18,-0.35l1.74,-0.61l1.42,0.35l-0.32,1.5l-0.84,-0.65l-0.96,0.62l-0.88,-0.86ZM363.59,238.14l0.0,-0.08l0.03,-0.06l0.05,0.1l-0.09,0.04ZM363.63,237.97l-1.06,-1.49l0.3,-1.2l0.24,1.81l0.7,0.3l-0.19,0.58ZM351.98,242.46l3.62,-1.95l0.24,-0.64l-0.62,-0.58l0.36,-1.01l-0.5,-0.5l3.18,-2.51l0.46,-1.88l1.55,-1.97l2.65,0.2l0.13,1.0l-3.83,4.81l-0.92,2.7l-1.15,0.26l-3.69,3.59l-0.71,-0.87l-0.91,-0.06l0.18,-0.6ZM360.48,231.05l-0.09,-0.14l0.77,-0.95l0.2,0.5l-0.88,0.6ZM363.28,246.21l0.08,-0.06l-0.03,0.19l-0.04,-0.04l-0.0,-0.09ZM333.53,238.83l-0.6,-1.18l1.21,-0.31l0.05,0.84l1.7,0.84l1.57,2.0l5.39,2.35l0.33,0.49l-0.42,0.66l1.12,1.32l1.04,-1.05l2.83,0.05l0.46,0.48l-1.81,2.72l-1.36,0.18l-1.63,1.38l-1.11,-0.21l0.2,-0.63l-1.3,-0.91l-2.49,0.38l-0.62,-1.01l0.66,-1.1l-0.75,-0.37l-0.74,-2.11l-1.4,-0.89l-2.34,-3.93ZM317.34,242.29l-0.3,-0.33l0.76,-0.65l3.3,-1.22l0.36,-1.62l1.07,-0.91l1.52,0.22l2.31,2.24l-0.0,0.78l-0.27,0.29l-0.44,-0.65l-2.42,1.25l-1.38,1.82l0.53,0.81l-0.58,-0.1l-0.55,-1.21l-1.44,0.51l-1.71,-1.21l-0.7,0.42l-0.04,-0.45ZM325.54,245.15l-0.08,-0.08l0.02,-0.1l0.02,0.09l0.04,0.09ZM325.49,244.9l0.01,-0.01l-0.01,0.03l0.0,-0.02ZM271.1,232.62l0.53,4.39l2.23,4.02l0.07,1.24l1.3,0.48l1.79,-1.76l1.18,0.35l0.66,0.67l0.29,3.29l0.86,1.12l0.94,0.31l1.38,-1.1l2.02,1.76l-0.45,1.05l1.42,1.98l-0.57,1.07l0.3,1.33l-2.29,0.61l-0.24,2.33l1.19,0.55l0.49,-0.69l1.81,-0.36l2.79,-1.84l2.18,-0.08l-0.6,1.12l-1.91,0.08l-0.66,0.55l-1.54,3.67l-0.77,0.47l-2.2,-0.76l-3.0,1.26l-4.31,0.28l-2.39,-2.11l-1.49,-0.48l-2.79,0.3l-5.59,-1.13l-6.59,-3.53l-6.14,0.57l-2.92,-0.21l-1.07,-0.59l-0.82,-5.14l0.37,-1.93l2.74,-1.58l0.65,-1.4l0.99,-3.64l-0.38,-5.28l0.88,-0.91l2.97,-0.41l3.46,-3.27l0.63,-1.4l0.22,-1.46l-0.58,-1.36l-2.42,-1.94l0.42,-2.01l1.15,-0.92l1.16,-0.03l1.75,0.97l1.69,-0.65l1.86,-2.25l-0.22,-2.72l2.81,-3.22l-0.16,-1.42l1.01,-0.8l4.44,-0.24l3.21,-3.31l2.12,-3.47l2.62,-1.72l1.53,2.49l2.86,1.23l0.99,0.98l1.16,-0.13l1.65,2.08l2.23,0.03l3.63,2.67l1.64,3.72l2.75,2.51l1.53,2.24l1.5,0.91l1.1,2.75l5.41,4.76l0.55,3.48l2.59,2.62l-0.0,0.98l1.22,1.24l1.54,3.71l-1.23,1.83l-2.35,1.84l-2.26,-0.17l-1.84,1.33l-1.59,-0.03l-0.62,-0.54l-1.47,1.4l0.4,0.76l0.91,0.23l-0.59,0.26l-2.82,0.07l-1.4,1.02l-1.8,-0.38l-1.09,1.02l-2.06,-0.31l3.72,-2.3l1.12,0.18l0.63,-0.8l0.85,0.18l0.62,-0.6l-0.31,-2.15l2.0,1.21l0.74,-0.46l1.02,-2.89l-0.24,-1.13l-2.3,-2.06l-1.01,-2.63l0.39,-1.01l-1.4,-2.21l-3.86,-3.43l-3.68,-0.9l-1.18,0.41l-2.96,-0.44l-0.35,-1.81l-1.82,-1.48l-1.68,0.36l-2.37,-1.31l-1.54,1.25l0.6,0.86l0.69,-0.01l-1.42,1.95l1.38,2.07l-2.63,0.03l-0.58,0.67l-1.59,-0.46l-2.09,0.98l-0.76,-0.23l-1.96,1.17l-0.55,1.67ZM276.76,240.42l-0.41,-0.55l0.77,-0.36l-0.08,1.09l-0.27,-0.18ZM292.32,248.22l-1.8,-1.0l1.32,-1.57l-0.02,-1.77l0.57,-0.57l1.13,0.38l0.86,-0.99l0.08,1.08l0.58,0.4l-1.78,2.4l0.27,1.37l-1.2,0.28ZM291.97,241.94l0.11,-0.25l0.73,-0.28l-0.44,0.53l-0.4,-0.0Z","name":"Magnesia"},"49":{"path":"M198.51,179.02l1.82,1.52l0.54,7.57l1.26,5.61l1.57,0.67l1.63,-1.07l4.06,-0.59l0.96,0.96l0.5,2.72l1.56,1.02l2.55,-0.11l0.99,1.24l0.57,2.79l2.79,1.15l0.72,1.17l-0.15,2.01l-3.17,0.03l-6.6,2.52l-4.08,-1.31l-4.82,1.81l-2.84,0.33l-1.44,1.09l-3.15,0.32l-3.3,1.92l-1.14,1.27l-0.67,2.23l-1.15,0.41l-1.0,-0.54l-0.85,-1.46l-1.37,-0.2l-3.42,2.33l-2.81,0.34l-2.15,1.35l-2.2,-1.92l-1.81,0.21l-2.29,3.66l-3.32,3.5l-1.19,0.18l-2.49,-1.58l-4.21,-0.84l-1.82,0.73l-1.3,2.42l0.01,1.1l-1.06,0.22l-3.95,-0.55l-2.57,-1.77l-1.22,-3.25l-3.63,-2.72l-0.49,-1.38l0.23,-1.58l-1.67,-3.0l1.22,-2.35l-0.65,-2.54l0.36,-2.67l-0.88,-1.39l-1.44,-0.56l-1.0,-1.23l-0.96,-5.21l2.24,-1.62l2.85,0.16l1.41,0.94l1.81,-0.48l-1.38,-8.0l1.18,-2.34l1.45,-0.75l0.85,-1.19l1.28,-0.46l1.95,0.5l1.19,0.93l1.53,-0.07l4.93,-1.89l1.92,-2.34l4.42,-2.04l11.55,1.38l7.93,1.89l2.91,0.14l5.83,-1.17l4.08,0.59l1.07,-0.74Z","name":"Trikala"},"46":{"path":"M219.74,206.48l-0.38,1.99l0.47,1.71l1.55,1.02l2.82,-0.06l0.91,1.15l-1.44,4.86l0.42,1.5l1.81,2.47l-2.43,1.5l-0.78,1.15l0.21,1.46l-1.53,2.39l0.14,1.52l3.87,5.07l-6.83,7.11l-2.42,5.22l-1.49,1.15l-4.48,1.38l-2.16,2.24l-3.26,1.47l-3.83,0.41l-0.19,-4.97l-1.32,-1.56l-2.59,-0.87l-2.93,-1.95l-1.62,0.11l-4.42,2.86l-2.53,0.32l-1.56,-1.93l0.68,-2.28l-0.61,-1.62l-2.55,-1.47l-0.43,-3.76l-0.72,-1.5l-1.23,-0.94l-7.21,1.55l-1.59,1.04l-1.61,2.1l-2.22,-1.68l-1.78,0.23l-3.06,1.97l-3.53,3.34l-2.61,-2.9l-0.24,-1.32l4.03,-7.13l-1.19,-3.05l-1.86,-2.03l-0.04,-1.04l1.12,-2.09l2.6,-0.53l5.02,2.43l1.75,-0.16l3.68,-3.76l2.01,-3.42l1.1,-0.22l2.76,2.02l2.16,-1.4l2.92,-0.38l3.19,-2.26l0.97,0.14l0.68,1.34l1.61,0.72l1.76,-0.8l0.7,-2.34l0.97,-1.03l2.98,-1.72l3.1,-0.3l1.45,-1.09l2.87,-0.35l4.71,-1.77l3.94,1.31l6.83,-2.56l2.84,-0.0Z","name":"Karditsa"},"47":{"path":"M214.61,148.99l0.35,0.79l0.7,0.06l2.09,-1.75l3.6,0.76l-0.95,2.18l0.06,2.88l0.59,1.36l1.58,0.67l2.04,-1.34l2.88,-3.35l3.11,-0.96l2.31,1.26l0.5,1.15l-0.19,4.11l1.0,2.84l2.46,2.45l5.25,3.31l1.76,2.82l2.43,2.16l3.31,1.05l6.21,-1.57l2.65,1.16l4.94,-0.76l-0.27,1.74l1.91,4.05l2.8,1.51l3.17,3.33l3.41,2.12l0.99,6.32l3.8,11.32l-2.8,1.89l-2.09,3.44l-3.08,3.17l-4.01,0.08l-1.65,1.14l0.12,1.52l-2.79,3.2l0.22,2.73l-1.68,2.03l-1.22,0.42l-1.33,-0.88l-1.65,-0.03l-1.7,1.3l-0.52,2.63l2.52,2.14l0.28,2.21l-0.46,1.07l-3.3,3.12l-2.75,0.3l-1.3,1.22l-0.35,1.57l0.59,4.06l-0.96,3.53l-0.46,1.07l-2.6,1.44l-4.94,0.46l-0.97,-0.75l-0.58,-3.98l-1.37,-1.2l-2.89,-1.75l-5.52,-1.84l-3.67,-2.01l-3.95,-5.28l-0.03,-1.0l1.49,-2.19l-0.21,-1.46l0.61,-0.89l2.6,-1.7l-2.19,-4.41l1.39,-5.11l-1.39,-1.59l-3.07,0.01l-0.98,-0.75l0.33,-6.27l-1.08,-1.57l-2.44,-0.83l-0.54,-2.65l-1.22,-1.61l-3.06,-0.09l-0.96,-0.73l-0.34,-2.43l-1.31,-1.42l-4.71,0.52l-1.36,1.02l-0.96,-0.32l-0.5,-1.15l-1.17,-11.78l-2.17,-1.97l-0.25,-5.12l-0.6,-1.36l-2.16,-1.26l4.79,-3.95l3.25,-1.7l1.62,-2.57l0.75,-2.43l3.78,-3.52l2.37,-3.48l0.77,-2.47l1.34,-1.5Z","name":"Larisa"},"44":{"path":"M195.79,313.36l0.64,-2.02l-0.19,-1.83l1.52,-2.59l3.11,-2.43l4.43,-1.37l0.92,-1.28l-0.23,-2.96l1.26,-2.46l-2.31,-2.71l-0.03,-0.94l1.03,-1.3l-0.3,-2.71l0.99,-2.48l-0.34,-2.44l1.25,-3.01l3.8,2.14l3.26,0.48l3.04,-0.58l4.94,-4.64l4.41,-2.23l2.63,0.62l0.44,1.03l-0.69,4.05l1.83,2.65l3.5,-1.66l2.54,0.39l1.14,0.39l1.72,2.76l3.64,2.82l4.27,-0.55l1.26,6.95l1.03,2.53l-5.49,-1.72l-1.69,1.12l-0.07,0.56l1.07,1.37l1.21,3.97l2.74,3.39l-1.21,1.09l-0.21,1.45l0.57,1.34l2.84,1.12l2.72,-0.26l0.39,0.91l-0.72,3.86l0.98,1.46l-0.33,0.85l1.34,0.91l-1.14,0.92l0.13,0.86l-0.86,0.93l-1.3,0.1l-1.21,-2.68l-1.56,-1.39l1.2,-0.14l0.36,-1.19l-2.04,-1.68l-0.66,-1.86l-4.26,-4.58l-1.7,0.14l-1.17,-1.72l-0.65,0.25l-0.46,-0.68l-0.84,0.48l0.02,1.56l0.92,1.64l-0.85,-0.18l-2.13,2.31l2.26,2.12l-1.38,0.32l-0.43,2.56l-0.93,-0.33l-0.22,-1.22l-2.71,0.48l-2.04,-1.12l-0.98,1.63l-2.94,-2.24l-0.82,0.65l-0.72,-0.4l-2.72,1.94l-0.79,1.51l-2.1,-2.48l-0.95,0.51l-1.48,-2.06l-1.86,-0.05l-4.12,-2.6l-3.66,0.51l-0.81,-0.89l-4.36,-0.71l-3.56,3.26l-1.21,0.33l-1.91,-0.84ZM212.48,314.35l0.0,-0.16l0.4,0.13l-0.17,0.26l-0.23,-0.23ZM212.85,314.9l0.0,-0.06l0.03,0.03l-0.03,0.03Z","name":"Fokida"},"45":{"path":"M239.43,245.04l1.66,1.29l4.62,-0.43l0.03,6.01l0.58,1.35l1.44,0.89l3.28,0.26l5.93,-0.58l6.43,3.49l5.77,1.18l2.93,-0.29l1.15,0.4l2.61,2.19l4.55,-0.29l3.04,-1.25l1.95,0.83l-0.16,1.11l-1.29,-0.78l-2.02,1.31l-0.78,-0.6l-0.75,0.91l0.58,0.79l-0.88,0.04l-0.45,0.68l-4.89,-0.73l-1.76,1.86l-0.17,1.61l-2.21,0.14l-1.42,1.03l-0.88,-0.39l-1.6,1.05l-2.29,-0.48l-1.23,-1.23l-1.27,0.85l-1.78,-0.27l-1.82,-2.04l-2.1,-0.74l-1.18,0.15l-2.24,1.82l-2.3,0.82l-0.6,0.76l0.44,0.6l-1.55,1.22l0.92,0.66l1.84,-0.88l-1.21,0.91l0.58,1.96l1.22,-0.37l0.75,1.26l1.33,-0.64l0.88,0.82l1.84,-1.45l0.77,0.63l1.75,-0.15l2.51,-1.35l6.19,6.36l1.49,-0.54l1.45,0.31l1.07,-0.73l3.39,3.13l2.66,-2.05l1.63,0.52l1.19,1.51l2.63,0.95l3.97,-0.41l0.97,-0.64l2.39,3.25l-0.53,1.67l0.35,1.66l1.47,1.89l0.22,1.59l1.8,1.91l2.14,-0.69l0.88,-1.24l1.41,-0.03l0.55,0.54l0.58,-0.74l1.22,0.0l0.62,-1.06l-2.05,-1.46l1.82,-0.36l4.73,3.4l2.25,-0.56l2.32,0.66l1.56,1.6l0.25,1.38l-2.33,1.12l-2.02,2.98l0.68,0.45l0.68,-0.83l1.0,0.15l1.87,3.24l0.85,-0.59l2.22,0.85l-3.9,0.27l-8.99,1.92l-3.18,-3.5l-2.77,-0.51l-0.52,-2.29l-1.56,-0.75l-3.11,0.53l-3.29,3.29l-1.27,0.24l-3.44,-0.3l-2.72,-1.16l-5.4,0.8l-1.01,-2.84l-4.68,-0.73l-5.11,1.02l-9.93,4.9l-2.32,-1.28l-1.03,-1.32l-1.28,-3.12l-1.4,-7.31l-1.66,-0.45l-2.87,0.8l-3.47,-2.69l-1.66,-2.71l-1.52,-0.62l-3.04,-0.38l-2.87,1.64l-1.42,-2.11l0.73,-3.72l-0.87,-1.85l-2.94,-0.69l-1.79,0.57l-3.21,1.85l-4.69,4.49l-2.72,0.54l-3.11,-0.46l-7.1,-3.98l-1.39,-3.49l-3.08,-2.97l-1.39,-0.51l-2.23,-1.96l-0.61,-4.34l-2.9,-4.86l2.77,-6.33l3.85,-2.52l0.76,0.11l-0.32,0.96l0.65,1.61l4.41,-0.38l3.46,-1.55l2.18,-2.25l4.47,-1.37l1.76,-1.42l2.36,-5.14l6.75,-7.03l3.62,1.97l5.51,1.83l2.71,1.65l1.08,0.83l0.58,3.98ZM294.65,289.32l0.05,0.0l0.17,0.13l-0.05,0.05l-0.17,-0.17ZM293.63,286.56l-0.02,-0.26l0.05,-0.06l0.12,0.17l-0.15,0.15ZM293.66,286.09l0.05,0.04l-0.03,0.03l0.0,-0.04l-0.02,-0.02Z","name":"Fthiotida"},"42":{"path":"M399.78,267.63l-0.5,-0.12l1.69,-1.3l-0.02,-1.03l1.31,-0.94l-0.15,-1.36l-0.85,-0.43l-0.47,-1.24l0.81,-1.39l1.82,-1.13l0.61,0.77l0.76,0.03l0.36,0.87l5.26,3.23l-0.8,1.29l0.58,2.36l-0.78,0.71l0.95,1.04l1.26,-0.15l1.43,1.66l0.78,-0.08l2.88,1.94l1.7,1.91l0.31,1.13l-0.72,0.89l0.53,0.6l-2.02,0.77l-1.39,-0.85l-1.08,1.05l-1.98,-2.33l-0.9,-0.1l-1.91,1.04l0.44,1.62l-0.81,-0.61l-0.22,-1.12l-1.44,-0.52l3.05,-1.74l-0.18,-2.84l-1.17,-0.78l-1.13,0.87l-0.56,-1.43l-1.92,0.45l0.37,-0.71l-0.42,-0.43l-1.63,0.56l-0.6,-1.69l-0.53,-0.4l-0.56,0.58l-0.8,-1.17l-1.35,0.54ZM403.11,274.0l1.09,-1.66l0.39,-0.39l-1.01,1.45l0.15,0.74l-0.62,-0.15ZM404.67,271.81l0.0,-0.02l0.01,-0.01l0.0,0.02l-0.01,0.01ZM404.7,271.75l-0.01,0.01l0.01,-0.05l0.01,0.0l0.0,0.04ZM413.17,279.19l-0.89,-0.04l0.51,-0.64l1.27,0.78l-0.89,-0.1ZM273.39,271.59l0.0,-1.02l1.16,-1.72l0.61,0.18l1.6,-0.92l1.71,0.1l1.59,-1.36l1.13,0.1l0.51,-0.67l3.9,-1.25l1.07,0.26l3.33,-3.2l2.49,0.28l0.93,-1.17l0.22,-2.9l2.9,-2.23l5.71,0.38l1.69,-1.51l2.3,-0.23l2.12,-1.44l2.77,-0.05l1.69,2.18l2.75,0.72l-0.57,1.96l1.23,2.04l3.44,0.89l-0.27,4.36l1.21,1.81l-0.18,1.26l1.25,1.84l1.54,1.65l3.36,1.33l0.45,1.25l0.56,-0.15l1.06,1.1l2.05,0.59l0.66,1.18l0.7,-0.78l-0.16,0.81l0.73,1.35l1.13,-0.41l2.09,1.28l1.3,-0.28l1.81,0.59l1.18,-0.15l1.53,-1.29l2.43,3.17l1.09,0.56l-0.32,0.54l1.1,1.32l1.16,0.66l2.87,0.28l4.03,2.17l2.51,-0.63l5.0,1.62l2.5,-1.63l1.9,0.51l0.36,-0.72l1.22,0.33l0.97,-0.82l7.74,2.58l0.53,0.35l-1.15,0.41l-1.41,1.7l0.13,2.96l3.36,3.16l5.06,3.42l-3.33,3.58l0.36,2.78l-0.71,0.66l0.37,0.64l-0.53,0.51l1.87,1.77l-1.24,0.65l-0.59,1.3l2.45,1.5l-0.11,0.82l0.57,0.53l-1.01,2.33l2.02,2.39l0.54,-0.24l-0.33,0.96l1.82,1.75l-0.42,2.7l0.5,0.66l-0.91,0.51l0.13,1.32l2.24,3.1l1.49,0.2l1.98,1.4l0.76,-0.59l-0.15,1.38l2.11,1.57l3.38,-1.02l0.66,0.99l2.5,1.04l3.7,0.23l0.55,-0.51l1.66,-0.02l3.29,0.58l2.87,-1.65l0.04,1.51l-1.34,2.87l0.56,1.5l-0.38,1.07l0.94,1.6l-0.31,2.24l-0.28,1.37l-1.18,1.14l-0.07,1.32l-0.77,0.66l0.33,0.51l-1.33,0.18l-2.2,2.49l-1.32,-0.04l-1.3,-0.66l0.36,-0.86l-1.58,-2.84l-2.67,-1.42l-1.1,-0.03l-2.09,1.01l-0.5,1.63l0.59,1.07l-0.5,1.06l-3.15,-2.38l-0.85,-2.34l-1.59,-0.62l-0.09,-0.78l1.27,-1.44l-1.41,-2.28l-1.33,-0.01l-0.64,-1.44l-1.71,-0.84l-4.09,0.25l0.62,-2.7l-0.86,-0.68l-1.84,0.17l2.15,-1.99l0.44,-1.27l-0.33,-1.32l-1.21,-1.06l-0.42,-2.17l-2.44,-1.62l-1.66,0.25l-0.92,1.19l-0.38,-0.37l3.28,-4.18l-0.35,-1.1l-1.61,-0.63l-1.79,2.71l-0.64,-1.26l0.29,-0.47l-0.83,-0.41l1.51,-0.73l-0.31,-0.45l0.75,-1.01l-0.92,-0.28l-0.31,-1.32l-2.98,-0.92l-1.58,0.51l-2.01,-0.44l1.64,-0.21l1.3,-0.91l-0.79,-2.01l0.68,-1.48l-1.21,-1.8l-1.22,0.6l-1.25,-0.19l-1.63,-1.33l-2.74,1.68l-5.32,0.26l-2.83,-1.45l-2.72,-0.51l-2.59,1.56l-3.22,-1.18l-0.95,0.18l-1.14,-0.97l-2.56,-0.28l-1.47,0.26l-0.77,1.04l-1.14,-0.08l-0.33,-1.2l-1.42,-1.55l0.02,-1.13l-1.19,-1.11l-0.66,0.33l-0.7,-0.59l0.87,-0.83l0.82,0.38l1.03,-0.88l0.96,-3.21l-0.97,-2.09l0.2,-0.77l-2.1,-2.7l-0.95,-0.63l-1.72,0.15l-1.06,-0.94l-2.4,0.47l-1.12,-0.78l-1.27,-4.07l-2.48,-1.65l-0.96,-0.03l-0.61,-1.92l-1.23,-1.32l-3.25,-1.23l-2.88,-2.63l-2.17,-3.3l-1.78,-0.87l-1.27,0.31l-7.06,-6.19l-4.86,-1.64l-4.11,1.28l-2.85,-1.28l-1.17,-2.79l-3.28,0.13l-2.13,-0.84l-1.54,1.71l0.62,0.66l2.29,0.05l0.66,0.77l-0.41,0.83l-3.64,1.25l-3.13,-0.59l-4.73,1.28l0.07,-0.52ZM332.67,307.98l0.56,1.26l-0.59,0.89l2.83,0.84l0.01,2.7l1.95,2.31l-1.91,0.59l-11.47,-4.11l-1.94,-1.7l0.42,-2.49l-1.35,-1.59l-8.44,-0.11l-5.76,3.84l-1.16,-2.61l3.29,-3.53l2.55,-1.82l1.55,0.59l2.17,-1.17l2.6,0.13l0.93,1.05l3.79,-0.1l1.22,1.25l2.67,0.51l2.06,-2.72l0.89,0.25l2.89,2.83l-1.69,1.23l-0.04,1.1l1.96,0.61ZM392.75,271.92l-0.42,-0.44l0.62,-0.8l0.88,0.72l-1.08,0.52ZM387.34,346.2l0.46,-0.55l-0.32,-0.34l0.41,-0.07l-0.1,1.78l-0.45,-0.82ZM383.59,349.84l0.92,-2.75l0.74,-0.4l1.46,0.83l0.35,1.29l-0.49,1.12l-1.63,-0.56l-0.53,0.85l-0.82,-0.4ZM377.77,333.04l-0.54,-0.85l1.26,-0.06l-0.8,0.5l0.08,0.41ZM373.24,328.16l0.04,-0.04l0.01,0.01l-0.0,0.01l-0.04,0.03ZM373.1,327.8l-0.18,-0.24l0.22,-0.29l0.08,0.67l-0.12,-0.14Z","name":"Evia"},"43":{"path":"M157.36,242.82l0.92,0.11l3.69,-3.49l2.77,-1.81l1.21,-0.25l2.82,1.75l3.31,-3.24l6.5,-1.51l1.53,1.95l0.41,3.79l2.64,1.62l0.48,1.09l-0.66,2.56l0.72,1.51l1.23,0.93l1.74,0.25l5.95,-3.41l1.17,-0.04l2.62,1.84l2.63,0.9l1.0,1.25l0.27,1.94l-2.53,0.43l-2.76,2.2l-2.97,7.2l2.92,4.84l0.71,4.55l6.73,5.46l0.98,2.23l-7.19,3.47l-4.02,-0.34l-0.9,1.43l0.05,2.48l-2.64,1.91l-1.07,0.16l0.07,-0.96l-1.26,-1.56l-6.9,0.49l-6.69,-3.66l-1.1,-1.09l-1.13,-2.54l0.43,-2.36l5.71,-3.07l0.18,-1.64l-2.83,-1.48l-4.3,-0.87l-2.6,-1.13l-1.04,-0.78l0.14,-3.66l-0.74,-1.81l-7.74,-4.3l-0.25,-0.98l1.94,-3.36l0.46,-2.82l-2.63,-3.88l-0.02,-2.31Z","name":"Evritania"},"40":{"path":"M173.44,425.1l0.37,-2.05l1.32,-2.41l4.88,-3.8l1.27,-0.43l2.48,-3.91l0.07,-3.41l-1.25,-3.91l0.88,-0.38l5.15,0.99l2.91,-0.56l2.81,0.58l1.63,-0.87l2.79,-3.31l-0.45,-1.59l0.39,-0.95l3.0,-2.95l1.2,0.88l-0.35,1.82l1.59,1.96l-1.27,5.03l4.57,4.06l0.57,5.15l2.32,1.79l1.6,2.81l2.69,0.87l1.59,2.6l2.47,1.68l1.84,2.94l2.86,-1.41l2.5,-0.05l1.52,2.49l1.32,0.55l0.41,0.96l-1.39,2.07l-0.34,1.59l3.72,3.8l3.2,9.65l-0.68,1.34l1.72,2.54l0.81,2.46l0.02,2.6l-1.41,4.75l-1.73,1.29l-2.04,-6.17l-2.94,-2.72l-0.26,-1.31l-2.77,-3.6l-1.0,-0.07l-0.91,-0.89l-2.43,1.36l-3.16,-1.94l1.61,-2.05l-0.42,-2.57l1.14,-2.64l-0.24,-1.89l-2.11,-1.06l-5.19,-0.48l-6.29,1.61l-4.69,3.0l-0.28,1.91l0.66,0.82l0.02,1.88l-0.79,2.31l-0.28,3.78l0.99,4.33l1.86,1.97l-1.8,1.35l-0.04,1.85l-1.86,0.85l-2.27,2.09l-0.64,-1.89l-1.58,-0.98l-1.16,-1.56l-0.39,-2.37l-0.56,-0.53l-2.36,-0.08l-2.55,1.15l-0.65,-0.68l-1.7,0.03l-1.06,-1.64l-0.98,-0.2l-1.6,-5.8l0.77,-2.06l1.45,-1.18l0.29,-1.74l-2.53,-1.71l-1.9,0.55l0.64,-0.88l-1.62,-3.52l-2.27,-1.69l-0.8,-1.57l-2.16,-1.9l0.45,-2.84l-1.21,-5.95ZM181.17,446.97l-0.13,-0.45l0.15,-0.15l0.08,0.8l-0.1,-0.2ZM187.77,464.51l0.68,-2.69l1.64,0.9l-0.77,2.3l-0.5,-0.44l-0.72,0.53l-0.33,-0.6ZM189.11,465.92l-0.26,0.05l0.1,-0.32l0.04,0.15l0.12,0.13ZM189.02,465.45l0.26,-0.26l0.03,-0.06l0.01,0.03l-0.3,0.29ZM183.39,462.12l-0.22,-0.25l0.1,-0.1l0.38,0.49l-0.33,0.33l0.07,-0.46ZM183.31,462.61l0.04,0.16l-0.07,0.07l-0.06,-0.06l0.09,-0.17ZM183.92,460.86l-0.6,-0.99l0.74,-1.33l0.76,0.45l-0.06,1.44l-0.84,0.42ZM171.45,434.55l-0.04,-0.21l0.76,-0.46l-0.25,0.6l-0.48,0.07Z","name":"Messinia"},"41":{"path":"M253.68,316.17l-0.42,-0.18l0.7,-3.81l-0.57,-1.34l-3.16,0.06l-2.35,-0.81l-0.27,-2.02l1.31,-1.45l-0.8,-1.63l-2.09,-2.07l-1.17,-3.9l-0.94,-1.25l0.84,-0.67l5.98,1.87l1.16,1.43l2.78,1.44l1.58,-0.33l8.63,-4.64l4.85,-0.97l4.24,0.65l1.2,2.96l5.63,-0.84l2.58,1.15l3.56,0.31l1.77,-0.39l3.08,-3.18l2.67,-0.5l0.99,0.35l0.54,2.39l3.12,0.73l3.18,3.51l3.2,-0.22l6.23,-1.53l-3.16,2.38l-3.45,3.71l0.14,1.73l1.23,1.97l1.99,-0.32l4.44,-3.42l8.0,0.09l0.86,1.12l-0.3,2.68l2.24,1.93l11.63,4.19l3.26,-0.77l0.99,0.99l2.96,0.41l0.85,-0.45l0.46,0.53l-4.24,1.21l-2.93,2.48l-1.7,2.68l-0.69,8.53l-1.98,2.02l-2.7,1.68l-6.1,-2.21l-3.01,-3.95l-1.36,-0.81l-2.82,0.01l-0.92,-0.73l0.96,-2.35l-0.78,-1.63l-1.41,-0.88l-3.31,0.76l-2.71,1.92l-0.67,4.27l-0.82,0.84l-6.99,-0.46l-0.12,0.78l3.26,1.01l-3.82,-0.72l-2.58,0.48l1.36,-1.48l-2.81,-2.59l-3.53,3.38l-0.7,-0.76l-1.46,0.01l0.75,-0.18l0.53,-0.99l-2.59,-2.1l-5.14,0.17l-0.53,-0.98l-0.46,0.51l-1.64,0.0l-0.88,1.62l0.61,0.85l-0.61,-0.43l-0.43,0.39l-0.61,-3.58l-0.73,-0.63l-1.03,1.25l-0.94,-0.87l-2.55,0.75l-4.3,-0.77l-0.69,-1.11l0.54,-0.49l0.7,0.28l0.3,-1.01l1.06,-0.58l-0.09,-0.61l-8.33,-4.02l-0.93,-1.31l0.74,-1.34l-0.33,-1.5l-2.46,-2.31l-2.81,1.34l0.53,0.91l0.99,0.13l-0.53,0.96l-0.62,-0.05l-0.75,-1.27l-2.35,1.61ZM278.88,330.45l0.0,0.16l-0.05,-0.06l0.05,-0.09ZM280.56,330.51l1.22,-0.87l1.05,0.96l-1.05,0.56l-1.22,-0.65Z","name":"Viotia"},"1":{"path":"M335.82,35.31l0.94,-1.66l1.88,-1.15l1.43,0.49l2.88,-0.32l3.11,0.98l3.01,-3.48l3.75,-0.28l0.81,-0.8l1.74,-0.42l0.82,0.25l1.39,-0.72l0.64,-1.63l0.74,0.34l0.61,1.67l2.33,1.3l3.85,-2.34l0.52,0.68l1.92,0.27l2.31,-1.39l-0.71,-5.08l1.1,-0.79l0.17,-0.81l1.43,-0.71l0.49,0.59l1.62,0.15l0.41,0.64l1.71,-0.4l1.03,1.51l1.05,0.15l0.84,-0.32l0.25,-1.15l1.38,-1.43l1.41,0.04l2.29,-1.99l0.55,1.16l1.79,1.01l-0.16,1.67l0.94,1.37l2.79,-1.24l2.35,0.71l1.41,-1.49l1.44,-0.24l0.48,0.82l3.16,0.68l1.16,-0.83l0.16,-1.07l1.31,-0.79l3.04,-0.45l1.26,-0.85l0.38,0.97l1.22,0.31l-0.55,0.8l1.07,2.17l-0.46,1.41l0.94,2.62l1.67,0.72l-0.51,1.62l0.85,1.64l0.8,0.43l3.26,-0.51l0.07,1.37l2.33,-0.29l0.91,0.64l2.82,0.28l0.76,3.03l4.04,3.03l-1.83,0.69l-2.94,-0.89l-2.02,2.23l-6.08,1.71l-0.84,4.02l-0.7,0.95l-6.04,1.48l-0.77,2.43l-2.79,0.34l-0.55,1.54l1.19,1.01l-0.54,2.03l1.33,1.5l-11.29,7.76l-2.92,0.5l-2.4,2.26l-1.56,0.73l-0.57,4.92l-4.97,-2.06l-5.63,-0.96l-1.77,-0.79l-3.62,-2.88l-1.66,-2.81l-1.64,-1.16l-3.21,-0.04l-1.38,1.16l-2.16,-1.97l-4.27,-1.03l-3.96,-2.68l-4.68,-5.14l-3.71,-2.93l-0.49,-1.18l1.34,-4.92l-6.74,-3.2l-1.09,-3.79l0.45,-1.77Z","name":"Drama"},"3":{"path":"M354.47,90.69l-0.13,-0.13l6.24,-1.28l1.7,-0.79l4.24,-3.21l1.7,-2.33l4.45,-3.12l1.11,-1.1l1.21,-3.89l-0.82,-2.79l0.35,-0.76l5.3,0.89l5.25,2.17l0.52,-0.2l0.59,-1.41l-0.06,-3.56l1.55,-0.75l2.15,-2.11l3.09,-0.58l11.68,-8.05l0.07,-0.59l-1.47,-1.66l0.5,-1.33l0.96,0.3l3.08,-0.99l4.85,0.08l7.08,1.24l0.52,0.9l-2.86,1.32l-0.06,0.69l2.49,1.72l1.81,2.69l3.77,1.91l0.41,1.36l-1.1,3.57l-0.02,2.79l0.84,4.08l2.47,6.84l-0.56,0.45l0.46,1.26l-2.64,-1.14l-4.48,0.75l1.23,-0.67l-0.64,-0.89l-1.18,0.41l-2.12,-0.9l-1.36,0.16l-1.77,1.16l-1.51,-2.48l-2.48,-2.33l-2.2,-3.9l-3.42,-0.63l-3.04,0.7l-0.55,0.83l-1.89,-0.34l-2.15,1.29l-1.49,-0.12l-1.63,2.5l-2.49,0.73l-1.19,1.67l-1.07,0.45l-0.28,1.28l1.6,0.92l-0.34,0.94l-0.84,-0.67l-1.06,0.97l-0.13,1.43l0.54,0.67l-8.4,4.22l-4.42,3.13l-4.4,1.66l-3.42,0.31l-10.32,-3.46l-3.82,-2.26ZM405.76,102.69l1.03,-3.81l2.69,-4.13l0.18,-1.63l1.37,0.29l1.32,-1.77l3.94,-2.16l2.12,1.92l1.67,0.31l1.55,-0.7l1.54,2.6l1.12,0.94l1.47,0.01l0.45,0.39l-1.18,0.28l-0.79,1.44l0.73,1.41l0.98,0.21l0.37,1.38l-1.58,1.23l0.77,4.26l0.66,0.56l-0.29,0.91l-0.85,-0.88l-1.57,1.35l-1.6,-0.15l-0.58,0.96l-1.64,-0.23l-2.26,2.26l-1.28,0.12l-0.7,-1.03l-0.83,0.1l-3.14,-3.71l-1.03,-0.34l-3.35,0.42l-0.23,-0.9l-0.96,-0.58l-0.09,-1.34Z","name":"Kavala"},"2":{"path":"M494.01,82.96l0.7,-2.64l-0.19,-4.91l1.13,-0.35l2.47,1.2l1.46,-2.31l2.85,0.45l4.65,-2.47l3.12,-0.95l1.35,-2.47l2.57,-2.15l0.95,-3.73l2.93,-1.28l-0.44,-6.58l-1.95,-2.8l0.3,-2.3l2.34,-4.8l-0.86,-1.75l-1.47,-1.28l0.78,-0.59l3.15,0.19l1.96,-0.85l0.92,-1.63l1.76,-0.53l3.53,0.4l1.16,-0.14l0.93,-0.87l2.08,0.17l0.72,-2.02l1.74,-1.76l0.4,-3.08l1.1,-1.23l2.02,-0.4l-0.26,-1.32l-2.19,-3.19l1.34,-0.77l1.01,-2.45l-0.77,-3.37l-0.6,-0.46l-1.81,0.15l0.41,-4.43l-1.27,-1.1l-0.24,-1.78l-1.7,0.63l-1.54,-0.12l-0.33,-1.35l-1.52,-0.72l-0.67,-3.51l0.68,-1.66l0.95,-0.6l2.22,0.3l0.86,-1.64l3.64,-1.68l2.42,1.41l1.36,0.09l0.85,-0.74l1.16,1.49l2.95,1.11l2.52,0.17l1.46,-0.67l2.8,0.52l3.21,1.82l2.54,-0.21l3.93,2.31l1.75,2.83l1.46,1.19l4.65,1.08l0.39,1.36l-0.63,1.46l0.84,2.79l-0.56,1.42l0.88,2.27l-0.23,2.41l1.08,1.58l-0.07,3.1l1.2,1.13l0.59,3.37l-0.37,3.15l-3.23,2.3l-1.99,-1.58l-2.84,-0.13l-2.05,1.2l-0.95,1.69l-1.75,1.13l-1.15,1.76l-3.71,2.52l-2.41,0.34l-2.76,-0.79l-1.17,0.99l-0.72,1.96l0.17,1.9l-1.5,3.69l1.83,2.86l-1.52,2.48l1.17,1.0l-0.88,2.06l0.38,2.29l0.98,2.14l2.18,1.36l-0.49,2.01l-1.61,0.44l-0.7,1.36l2.27,2.89l-2.25,0.56l-0.82,0.8l-1.55,0.05l-0.38,0.71l0.95,1.92l-0.71,0.72l-1.39,-1.86l-0.72,-0.06l-0.99,2.65l-1.88,-0.44l-0.42,0.71l0.29,1.08l-1.97,2.47l1.15,1.47l-4.65,2.13l-2.46,5.48l-3.05,1.31l-2.84,-0.24l0.42,-0.73l-0.57,-0.31l-0.37,-2.01l-0.9,-1.48l-1.03,-0.47l0.18,-1.74l-0.99,-0.45l-0.48,0.6l-3.9,-2.79l-3.18,-0.52l-3.22,0.65l-4.15,-0.91l-6.75,0.57l-7.51,-1.63ZM523.68,89.25l-0.03,0.01l-0.03,-0.03l0.03,0.0l0.03,0.03ZM480.17,120.5l-0.17,-0.33l0.87,0.03l2.06,-2.1l2.17,-0.88l3.39,-0.57l4.03,0.67l1.6,0.86l1.42,0.03l3.17,2.47l-0.3,3.53l-7.2,2.67l-2.02,0.0l-1.0,-0.29l-1.53,-1.73l-2.65,-1.01l-3.83,-3.33Z","name":"Evros"},"5":{"path":"M427.13,38.79l1.4,-0.87l0.94,-3.22l-0.21,-1.08l2.19,0.16l1.37,0.76l3.59,-1.63l1.89,1.93l9.09,2.05l2.21,2.45l1.38,0.39l1.65,-0.81l0.73,1.7l3.68,1.26l0.4,1.14l1.96,0.63l0.97,0.92l0.72,2.89l1.46,0.42l-5.09,3.34l-1.8,-2.43l-0.64,-0.0l-0.85,1.14l0.15,1.43l-2.45,2.08l-2.84,4.68l0.25,3.05l4.31,5.19l0.71,2.96l-1.21,0.39l-2.8,-0.29l-2.02,0.73l-4.93,3.97l-0.81,2.54l-2.16,-0.36l-5.59,1.98l-6.06,5.58l-0.02,-1.47l-2.48,-6.88l-0.81,-3.96l0.01,-2.49l1.12,-3.86l-0.7,-1.88l-3.78,-1.92l-0.58,-1.38l-3.18,-2.64l2.62,-1.21l-0.66,-2.01l-7.64,-1.48l-4.94,-0.08l-3.13,0.98l-1.92,-0.96l0.17,-0.74l3.03,-0.48l0.51,-2.25l6.17,-1.61l0.92,-1.33l0.53,-3.54l6.0,-1.69l1.93,-2.18l2.5,0.92l2.76,-0.94Z","name":"Xanthi"},"4":{"path":"M454.4,74.2l0.04,-1.03l1.81,-0.76l1.06,-1.89l-2.25,-1.45l-0.82,-3.18l-4.23,-5.04l-0.24,-2.42l2.74,-4.51l2.5,-2.09l0.33,-2.13l2.19,2.39l3.41,-1.78l2.75,-2.4l2.18,0.88l0.78,-0.86l3.19,0.33l2.54,-1.78l1.43,0.27l3.27,-0.73l0.56,-1.05l3.22,-1.1l4.38,0.84l1.44,-2.92l0.99,-0.57l3.96,1.29l3.33,-0.8l4.13,1.76l0.67,-0.27l0.42,-1.72l4.71,-0.24l0.74,-0.89l1.9,-0.26l0.62,-0.77l1.8,1.48l1.32,-0.09l-0.36,1.12l1.38,0.86l2.79,-0.52l2.38,2.69l-2.26,4.5l-0.38,2.69l1.97,2.91l0.4,6.04l-1.27,0.06l-1.42,1.03l-1.05,3.87l-2.55,2.11l-1.09,2.22l-3.06,0.94l-4.57,2.42l-3.0,-0.4l-1.14,1.08l-0.13,0.95l-2.05,-0.99l-1.87,0.46l-0.09,5.55l-0.71,2.48l-2.9,-0.43l-2.12,1.12l-0.85,-0.18l-7.42,-3.59l-6.08,-1.15l-1.1,-2.02l-2.39,-1.57l-0.49,0.5l-2.84,-0.13l-2.33,1.88l-1.22,-1.2l-5.83,-0.34l-0.91,-0.96l-2.32,-0.48ZM454.97,70.78l-0.51,-0.54l0.08,-0.08l0.79,0.37l-0.35,0.26Z","name":"Rodopi"},"7":{"path":"M365.19,123.75l0.31,-1.46l1.57,4.27l3.14,3.43l1.84,0.08l1.03,0.65l1.81,-0.17l1.56,0.84l1.02,-0.49l2.39,1.25l-0.46,1.17l0.95,1.15l2.65,0.08l1.24,0.62l0.44,1.15l1.12,0.72l-0.22,0.67l1.75,3.34l3.49,2.42l1.12,1.6l2.12,0.88l0.99,1.03l1.0,3.59l-7.02,2.21l-0.87,-0.97l0.15,-1.4l-0.83,-1.76l-2.83,-2.44l-1.77,-0.65l0.02,-2.14l-2.48,-2.32l-2.68,-3.85l-3.16,-0.75l-2.51,0.26l-2.37,-0.75l-1.01,0.26l-2.27,-1.09l-0.95,-0.92l0.81,-6.99l-1.1,-3.53Z","name":"Ayion Oros"},"6":{"path":"M293.08,343.35l6.44,-1.45l1.2,-1.48l2.32,-0.79l0.62,-1.98l-1.34,-1.29l-0.45,0.32l-1.34,-0.55l0.68,-0.65l1.92,0.05l0.99,-0.55l-0.61,-2.24l-0.99,-0.49l4.57,0.33l1.16,-1.31l0.56,-4.04l2.36,-1.64l2.74,-0.72l0.99,0.56l0.62,1.31l-0.72,1.08l-0.11,1.61l1.38,1.03l2.78,-0.02l1.04,0.59l3.13,4.06l6.58,2.37l3.14,-1.84l2.19,-2.22l0.8,-8.82l1.55,-2.36l2.6,-2.22l6.93,-2.14l1.33,1.35l1.66,-0.61l1.94,1.45l2.86,0.38l2.0,1.25l1.13,-0.33l3.58,1.17l7.6,7.15l1.57,0.68l-1.34,1.18l1.21,1.54l-0.95,0.62l-0.28,1.2l-2.84,0.61l-3.25,3.04l0.31,1.88l1.26,1.73l-0.01,3.05l2.42,3.56l-1.65,1.26l-0.22,1.42l0.85,2.06l-1.18,1.52l2.35,0.66l1.09,1.44l-0.86,0.74l-1.48,-0.27l-0.64,0.83l1.5,2.0l2.34,1.05l-0.7,1.65l0.43,0.58l-0.61,0.76l1.42,0.99l0.36,1.01l1.33,0.46l0.04,1.3l-0.99,2.23l0.55,0.74l-0.81,0.0l-1.3,1.29l-0.07,0.74l0.81,0.83l-0.5,0.44l0.7,1.21l-0.38,0.59l0.61,0.67l-0.44,0.5l-0.43,-0.28l-1.95,2.49l-0.53,-0.59l-0.85,0.28l-1.58,-0.74l-0.83,0.4l-0.64,-0.76l-2.18,-0.18l-0.27,-3.1l0.81,-1.27l-1.25,-0.86l-1.75,0.61l-0.59,-4.64l-5.48,-4.38l-0.6,0.8l-1.05,-0.98l-0.75,0.03l-1.12,1.9l-0.94,-1.29l-0.48,0.26l0.07,-1.84l-3.21,-3.77l-1.0,-2.83l-2.59,-2.1l0.4,-0.67l-0.45,-0.5l-1.64,-0.23l-2.6,1.37l-0.26,-0.43l1.16,-0.66l-0.64,-0.56l-1.28,0.23l-0.93,-1.6l-1.29,0.65l-1.56,-0.88l-0.94,0.23l-0.33,-1.36l1.34,-0.91l-0.11,-0.64l0.94,0.25l0.82,-0.73l1.03,-2.03l-2.64,-2.48l-2.61,1.11l-1.71,-0.95l-2.6,1.79l-2.86,0.06l-2.88,2.64l-0.13,0.69l-1.66,0.25l-0.85,1.27l-2.39,-0.69l-2.04,0.05l-1.52,0.74l-2.1,-0.8l-2.89,0.18l-3.49,2.01l-2.89,0.83l-3.63,-6.94l-2.12,-2.62ZM368.17,360.03l0.02,-0.02l0.01,0.0l-0.02,0.04l-0.01,-0.02ZM360.37,380.33l0.19,-0.28l0.81,-0.03l0.36,0.42l-1.35,-0.1ZM358.86,395.97l-0.21,-0.32l0.84,0.38l0.44,1.08l-1.06,-1.14ZM316.48,411.74l0.05,-0.67l9.66,-4.62l1.08,-0.23l1.15,0.66l0.86,-0.86l0.96,0.17l0.36,0.31l-4.83,1.37l-0.72,2.24l-3.64,0.06l-1.32,1.19l-2.36,0.93l-0.46,-0.71l-0.79,0.15ZM330.81,406.67l-0.14,-0.14l0.17,0.12l-0.03,0.02ZM318.76,357.42l-0.4,-1.04l0.61,-0.99l4.17,0.17l2.39,-3.27l0.2,-0.51l-0.62,-0.5l-1.47,0.13l-1.03,0.89l-1.85,-0.25l1.33,-0.89l-0.06,-0.49l2.1,-0.81l-0.33,-0.91l0.42,-0.39l2.3,0.27l1.78,1.13l-0.79,0.64l-0.26,1.22l1.2,0.7l-0.44,1.76l0.41,0.66l-0.6,1.03l-1.25,-0.2l-0.47,0.45l0.38,1.22l-0.66,-0.61l-1.07,0.13l-3.21,2.47l-2.79,-2.0ZM319.76,352.28l-0.06,-0.09l0.28,-0.13l-0.18,0.22l-0.05,-0.0ZM321.54,350.3l-0.96,-0.0l-0.65,-0.23l1.07,-0.01l0.54,0.24ZM321.58,350.33l-0.01,-0.01l0.02,0.01l-0.01,0.0ZM321.65,350.35l-0.01,-0.01l0.02,0.01l-0.01,0.0ZM319.9,370.67l-0.16,-0.73l1.09,0.22l2.24,-0.82l7.24,0.44l-0.77,1.43l-0.85,-0.05l-0.71,0.68l0.47,1.11l-1.61,1.83l0.33,1.4l-3.03,1.5l-1.57,-1.11l0.91,-0.83l-0.42,-1.39l-2.34,-1.53l-0.83,-2.14ZM322.31,376.53l0.06,-0.03l0.05,0.03l-0.09,0.03l-0.02,-0.03ZM301.09,384.93l5.38,2.51l1.0,1.77l2.35,0.73l1.51,1.47l1.8,-0.3l2.19,-1.75l3.17,1.75l0.25,0.48l-2.24,0.64l0.11,0.83l0.55,0.5l3.43,0.34l2.49,1.45l0.8,1.24l1.31,0.16l1.58,1.43l-0.18,1.7l-5.22,1.57l-0.03,-2.1l-1.26,-1.52l-3.02,-0.0l-1.57,0.73l-3.79,-0.86l-1.39,0.22l-2.17,-1.99l-1.45,-0.3l-2.45,-1.64l-3.79,-1.1l-1.49,-2.2l2.12,-5.77ZM320.84,392.25l2.46,-1.18l1.08,0.39l0.48,-0.49l0.9,1.3l0.78,-0.41l0.35,0.35l-2.01,1.26l-1.77,-0.71l-1.49,0.1l-0.79,-0.61ZM323.91,390.44l0.09,-0.09l-0.07,-0.28l0.07,-0.07l0.06,0.38l-0.14,0.21l0.0,-0.15ZM315.17,388.13l-0.28,-1.12l-3.66,-3.64l0.72,-1.02l1.36,-0.51l4.15,-0.1l0.94,1.45l-0.13,1.04l-1.93,2.71l-0.08,1.17l-1.09,0.03ZM322.58,447.3l-0.13,-0.33l-0.04,-0.23l0.22,0.22l-0.04,0.34ZM312.23,377.62l-0.04,-1.35l1.07,-1.35l1.94,0.53l-0.04,0.57l-1.31,0.51l-0.98,1.24l-0.64,-0.15ZM308.8,408.87l2.91,-0.67l0.62,1.16l1.45,-1.19l0.54,0.36l-2.78,1.3l-1.48,0.05l-1.26,-1.0ZM309.59,540.0l1.25,0.63l0.79,3.94l-2.35,-1.77l-0.88,-1.98l-0.55,-1.83l1.16,1.72l0.59,-0.71ZM311.64,544.64l0.02,0.15l-0.03,0.03l-0.04,-0.09l0.06,-0.09ZM306.82,375.39l-0.01,0.0l0.18,-0.16l-0.16,0.16ZM306.62,364.72l-0.15,-0.03l0.29,-0.09l-0.09,0.09l-0.05,0.03ZM298.96,418.68l0.21,-0.03l0.66,0.76l-0.16,0.03l-0.71,-0.76ZM294.79,415.28l-0.78,-0.98l3.44,0.46l1.6,1.21l-0.27,0.98l-0.46,0.6l-1.36,0.08l-2.16,-2.34ZM278.05,500.88l1.1,-2.81l1.21,-1.22l-0.12,-0.82l1.97,-0.44l1.93,3.21l0.48,1.93l1.71,1.53l3.46,1.73l4.0,3.53l0.18,0.85l-0.73,1.2l-1.38,-0.67l-1.91,1.3l-0.64,2.4l0.13,2.95l0.59,0.72l-0.42,1.31l-1.77,-1.08l-1.05,0.6l-0.82,-0.9l-0.68,0.62l-1.16,-1.14l-1.15,0.08l-0.67,-1.0l-0.78,0.29l-0.13,-1.19l-0.66,-0.21l-1.36,-2.13l0.47,-0.94l-1.23,-1.65l1.82,-1.31l-0.79,-1.95l0.66,-2.13l-0.37,-1.08l-1.91,-1.58Z","name":"Attica"},"9":{"path":"M108.16,271.01l0.99,-1.33l3.33,-0.41l0.58,-0.66l-3.7,-3.59l-0.46,-1.52l1.27,-0.45l-0.33,-0.48l0.28,-1.39l1.56,2.69l1.75,0.51l2.28,-0.23l1.44,-1.76l2.09,1.66l1.07,0.08l0.79,-0.15l1.52,-1.77l1.33,0.84l2.73,-1.14l0.75,0.96l-0.2,1.24l0.47,0.48l0.94,0.1l0.22,-0.97l1.19,-0.13l0.33,1.07l-0.9,1.22l3.88,2.14l1.25,1.41l0.71,-0.37l-0.29,-0.91l0.93,-0.4l-0.3,-2.14l0.69,-0.62l2.84,1.72l0.76,-0.2l0.72,1.93l0.86,0.91l0.59,-0.23l0.53,-1.35l-0.79,-2.61l-2.12,-1.62l0.19,-3.36l0.99,-1.67l-0.13,-1.59l-2.89,-4.3l-1.5,-1.35l-1.51,-0.2l-1.04,0.81l0.11,0.86l-0.25,-0.25l-0.27,-0.74l0.73,-2.13l2.54,-1.47l11.3,-0.47l3.12,-1.37l4.23,-3.2l1.2,-0.34l0.11,2.75l2.54,3.66l-0.41,2.35l-1.97,3.4l0.29,1.6l7.95,4.56l0.47,1.35l-0.42,2.35l0.33,1.47l1.38,1.15l9.35,3.06l0.03,0.75l-5.72,3.13l-0.66,1.6l0.06,1.57l1.19,2.68l1.34,1.35l6.9,3.77l7.02,-0.42l0.9,2.57l1.89,-0.33l2.89,-2.09l0.43,-3.61l4.02,0.29l7.19,-3.48l3.11,2.13l-1.26,3.45l0.34,2.46l-0.98,2.46l0.29,2.63l-1.02,1.26l0.16,1.53l2.14,2.15l-1.22,2.54l0.29,2.66l-2.02,1.64l-3.0,0.65l-3.25,2.53l-1.72,2.88l0.16,1.95l-0.51,1.45l-1.22,-0.71l-2.04,1.52l-1.44,0.16l-1.19,1.83l-0.57,2.45l-2.51,-0.66l-1.45,-1.15l-2.92,0.17l-3.02,-1.11l-2.05,1.49l-1.87,-0.27l-1.13,1.45l-3.71,1.38l-1.38,1.57l-1.53,-0.38l-0.04,-1.86l-0.9,-1.37l0.77,-1.18l-0.68,-0.6l-0.83,0.2l-0.25,-1.29l-1.2,0.34l-0.75,-0.52l-1.17,0.77l-0.02,-1.52l-1.17,-1.44l-2.98,-2.14l-0.87,0.66l0.61,-1.38l-0.61,-2.91l-3.69,-3.95l-1.63,1.96l1.15,1.7l1.59,0.91l0.79,1.57l-0.57,0.56l0.45,1.11l-0.61,2.54l-1.53,1.02l-1.66,0.15l-0.23,1.22l-1.48,-0.15l-0.62,2.32l-1.66,0.51l-1.04,1.4l-0.85,-0.38l-0.73,0.93l0.31,0.39l-4.2,0.56l-1.6,-1.78l0.2,-0.95l-0.95,-0.83l-1.16,0.0l-0.48,-2.28l1.87,-1.7l0.39,-1.23l-0.68,-1.05l1.77,0.76l0.84,-1.01l-2.85,-0.96l-0.64,-2.66l-1.03,-0.94l0.5,-1.36l-1.03,-0.5l0.55,-0.65l-0.94,-0.43l-0.09,-0.69l0.9,-2.68l-1.56,-0.61l-3.05,2.86l-1.02,-0.16l-0.31,-1.53l-0.83,-0.75l0.83,-6.83l-2.54,-3.42l-0.07,-2.25l-1.41,-0.73l-2.25,0.56l-1.01,-0.95l-1.12,0.61l-1.7,-3.15l0.04,-2.25l-1.18,-2.75l0.0,-1.9l-1.17,-1.47l-2.61,0.56l-2.05,2.43l-0.69,-0.33l-2.38,1.15l-1.01,-2.51l-0.71,-0.76l-1.18,-0.18l-0.11,-1.57l1.1,-2.01l-0.25,-0.6ZM135.68,304.09l-0.08,0.18l-0.21,-0.27l0.12,-0.01l0.18,0.1ZM134.05,252.92l-0.03,0.03l0.0,-0.06l0.01,0.01l0.02,0.02ZM117.68,261.03l-0.05,0.04l0.0,-0.06l0.05,0.02ZM136.19,321.02l-0.07,-0.07l0.11,-0.03l0.03,0.03l-0.07,0.07ZM137.18,320.56l-0.29,-0.57l0.13,-0.62l0.46,0.84l-0.3,0.36ZM135.25,310.04l-0.24,-1.2l1.19,1.3l0.2,1.4l-1.15,-1.5ZM132.13,305.92l-0.06,0.03l-0.06,0.06l0.16,-0.19l-0.04,0.1ZM129.74,304.37l0.22,-0.5l0.46,0.7l-0.56,-0.23l-0.11,0.03Z","name":"Aitoloakarnania"},"8":{"path":"M155.27,340.92l0.45,-1.66l1.4,-0.86l0.7,-1.75l-0.4,-3.69l0.92,-2.88l-0.32,-1.15l0.85,-0.04l1.83,2.3l3.26,-0.71l6.44,4.04l1.04,-0.38l4.76,1.47l5.68,-2.87l0.3,-1.12l2.98,-2.74l1.91,-5.43l3.02,-3.27l2.57,-0.8l0.83,0.28l2.11,-2.06l1.09,0.18l0.93,1.1l5.52,-0.28l3.07,1.53l1.86,-0.15l1.39,2.65l1.27,0.89l1.5,0.15l1.28,1.81l2.31,-1.16l1.47,1.22l2.15,3.57l1.67,1.2l1.68,-0.05l1.54,1.96l1.81,-0.19l2.27,0.98l5.23,-0.53l1.07,2.05l-0.34,2.71l1.79,2.85l-3.33,7.9l-7.62,3.49l-1.5,7.9l1.7,2.54l-0.42,1.09l-4.25,1.52l-2.15,2.22l-1.25,0.45l-0.95,-0.33l-0.62,-1.38l-2.72,-0.16l-1.79,0.65l-1.94,2.07l-1.13,0.04l-10.4,-4.72l-0.7,-2.57l-2.37,-2.09l-2.64,-0.92l-0.95,-0.95l0.03,-1.4l-1.21,-0.92l-1.53,-0.27l-1.69,1.23l-2.25,3.37l-3.57,3.18l-1.2,2.17l-0.76,-0.11l-0.38,-3.49l-1.46,-0.99l-4.24,-0.88l-1.34,-1.2l-5.27,-0.27l-3.58,-4.76l0.16,-2.32l-0.86,-1.82l-2.81,-0.54l-2.18,-2.72l-1.28,-0.49l-0.45,-3.66Z","name":"Achaea"},"13":{"path":"M108.83,135.41l0.74,-0.8l-0.18,-1.52l2.26,-2.21l-0.24,-3.58l0.4,-1.19l-0.53,-1.12l2.84,-1.25l1.32,-3.33l2.14,0.69l2.76,-0.43l1.76,1.22l2.28,-0.65l1.26,-2.03l-0.08,-2.62l2.57,-1.58l0.4,-1.4l2.7,-0.62l1.02,-2.41l7.1,-2.79l3.02,-1.95l3.36,-7.22l1.15,-0.24l1.09,0.58l1.62,4.11l2.78,-0.34l1.07,0.8l1.43,2.62l0.49,5.11l0.65,1.49l3.24,-0.87l5.23,6.73l1.25,-0.17l-1.63,1.7l-2.11,3.61l0.13,3.96l-0.84,2.09l-2.74,0.34l-1.16,1.1l-1.07,-0.15l-2.39,-2.05l-1.79,-0.26l-1.73,0.71l-1.47,2.2l-1.12,0.23l-1.29,-1.15l-1.82,0.06l-0.55,1.46l0.71,2.4l-3.77,-1.08l-2.88,0.12l-1.69,0.37l-2.9,1.9l-3.32,5.2l-0.19,1.48l1.25,3.72l-1.51,3.87l-0.08,1.89l-1.31,0.67l-1.29,0.27l-1.7,-0.85l0.2,-1.37l-1.05,-4.04l-2.19,-4.19l-3.29,-3.7l-1.52,-4.21l-1.25,-1.55l-3.35,0.49l-2.64,1.94l-1.56,-0.19Z","name":"Kastoria"},"12":{"path":"M130.61,151.11l4.25,1.8l4.49,-2.35l2.6,2.03l1.62,-0.36l2.82,-1.84l2.82,-0.35l2.48,-3.74l3.04,0.16l6.79,-1.59l5.79,0.31l2.2,1.91l0.69,3.82l1.41,1.19l4.77,-1.3l1.42,0.43l2.33,2.02l2.09,4.23l1.6,0.17l2.96,-1.28l0.99,0.33l-0.25,3.74l0.93,2.65l-1.44,4.75l0.25,1.79l1.89,1.56l1.57,-0.08l3.0,-1.3l1.78,0.11l-0.56,1.07l2.46,1.33l0.49,1.12l0.23,4.86l-0.77,0.66l-4.1,-0.57l-5.85,1.18l-2.72,-0.14l-7.89,-1.89l-11.67,-1.39l-3.3,1.16l-1.7,1.13l-1.78,2.22l-1.46,0.74l-4.43,1.08l-0.73,-0.67l-0.26,-1.45l-5.35,-2.79l-2.91,-0.12l-7.37,2.0l-1.06,-0.35l-1.4,-2.55l-1.06,-5.17l-2.35,-2.13l1.92,-3.5l0.09,-3.28l-1.66,-0.98l-2.8,1.24l-1.86,-2.27l-1.0,-3.87l-1.12,-0.94l1.61,-2.67l1.77,0.88l1.74,-0.28l1.66,-0.84l0.26,-1.63Z","name":"Grevena"},"14":{"path":"M197.12,103.47l-1.68,3.69l0.18,2.81l1.95,2.42l-0.93,2.19l0.17,1.76l1.19,0.9l2.95,4.28l5.38,2.78l0.25,1.42l1.55,0.75l4.12,-0.59l0.54,3.59l2.65,2.78l0.34,2.48l0.93,1.56l3.47,1.55l-1.08,1.89l-0.23,2.63l-0.92,0.96l-3.25,1.52l-0.59,1.64l0.2,1.64l-1.69,1.89l-0.81,2.53l-2.31,3.39l-3.77,3.49l-2.37,4.99l-3.13,1.59l-3.61,3.17l-2.93,-0.18l-4.41,1.38l-1.25,-1.04l-0.23,-1.31l1.46,-4.94l-0.11,-1.48l-0.82,-1.3l0.49,-2.71l-0.32,-1.32l-1.89,-0.72l-2.99,1.3l-1.06,-0.15l-1.83,-4.02l-2.46,-2.13l-1.77,-0.57l-4.57,1.34l-0.96,-0.72l-0.77,-3.95l-2.59,-2.23l-6.1,-0.37l-6.9,1.6l-3.05,-0.17l-1.68,1.45l-1.0,2.33l-2.68,0.34l-4.22,2.17l-2.32,-1.99l-4.73,2.32l-2.75,-0.84l-1.49,-1.06l1.47,-3.72l-1.28,-4.03l0.18,-1.04l3.06,-4.79l2.77,-1.81l1.38,-0.28l2.75,-0.11l2.57,1.09l1.61,-0.03l0.6,-1.57l-0.84,-1.52l0.36,-0.97l2.43,1.33l1.48,-0.31l1.74,-2.4l1.31,-0.48l1.18,0.16l2.39,2.05l1.6,0.29l1.31,-1.15l2.78,-0.34l1.13,-1.49l0.53,-6.19l5.12,-6.35l4.21,-3.15l15.16,-3.86l1.86,-2.3l-0.01,-2.78l0.71,-2.5l6.84,1.53Z","name":"Kozani"},"11":{"path":"M125.21,92.59l1.58,-1.74l-0.0,-5.63l0.91,0.02l0.43,-0.9l9.87,-0.21l3.47,-0.62l4.4,-1.87l2.87,1.89l3.04,0.04l4.07,-1.24l6.98,-4.14l2.34,0.89l5.18,0.04l2.72,3.3l1.13,0.59l1.33,-0.24l2.99,-2.16l2.18,-0.22l0.87,-0.97l0.15,-1.61l2.86,-1.49l3.06,0.98l0.6,3.7l3.85,2.43l-0.17,0.9l-1.19,0.95l-4.37,1.1l-2.8,-0.15l-0.9,1.45l1.23,1.57l2.13,5.69l2.66,0.98l-1.83,4.91l0.24,0.55l2.39,0.44l-0.69,2.43l0.08,2.55l-1.68,2.07l-14.96,3.74l-4.42,3.29l-0.81,1.16l-2.07,0.78l-5.17,-6.65l-2.04,-0.14l-1.19,0.85l-0.87,-5.95l-1.56,-2.92l-1.67,-1.15l-2.55,0.32l-0.4,-2.39l-0.9,-1.4l-1.46,-0.83l-2.04,0.49l-3.25,7.13l-2.78,1.81l-4.5,1.41l-2.96,1.61l0.2,-2.45l0.85,-0.56l-0.37,-1.66l0.38,-3.11l-2.68,-4.04l-3.19,-2.65l-0.16,-2.29l-1.41,-0.71Z","name":"Florina"},"10":{"path":"M137.35,362.35l0.25,-4.66l1.2,-3.38l0.51,-0.41l1.68,1.41l1.66,-0.05l1.8,-0.86l2.59,-2.39l1.44,-0.41l4.23,-5.53l1.76,-3.19l0.53,2.11l1.45,0.68l2.18,2.72l2.76,0.54l0.65,1.29l-0.08,2.63l3.78,5.02l5.6,0.43l1.26,1.17l5.2,1.4l0.73,3.94l1.75,-0.01l1.21,-2.25l3.56,-3.17l2.31,-3.44l1.11,-0.91l1.06,0.16l0.93,0.71l-0.07,1.33l1.16,1.17l2.67,0.95l1.7,1.51l-2.32,0.59l-4.61,6.99l-0.4,3.68l1.65,4.59l0.1,9.89l5.55,1.14l7.16,5.23l2.03,2.31l-1.65,1.18l-1.51,-1.12l-1.78,1.06l-2.16,2.34l-0.49,1.17l0.48,1.41l-2.58,3.06l-1.3,0.67l-2.65,-0.6l-2.76,0.56l-5.2,-1.0l-1.19,0.44l-2.08,-5.15l-2.5,-3.97l-4.18,-5.16l-3.88,-3.49l-11.98,-7.75l-3.59,-0.1l-0.99,0.98l-0.14,1.5l-0.26,-0.51l0.55,-1.9l-0.57,-0.53l1.39,-3.07l-1.07,-2.11l-0.18,-2.73l-1.5,-1.82l-5.06,-3.47l-8.87,-2.79Z","name":"Ilia"},"39":{"path":"M233.82,463.25l2.17,-2.97l0.99,-3.8l-0.03,-2.95l-0.86,-2.6l-1.63,-2.32l0.68,-1.29l-3.29,-9.9l-3.63,-3.57l1.72,-3.68l-0.57,-1.32l-1.38,-0.62l-0.54,-0.88l1.4,-1.18l4.87,-1.47l4.12,-2.25l2.15,-3.19l0.73,-7.04l15.38,3.7l-0.25,8.99l3.98,4.45l1.75,2.88l0.65,5.07l3.59,0.0l2.96,0.85l1.64,1.82l4.69,1.8l1.87,-1.47l9.16,-0.2l0.15,0.43l-0.43,-0.12l-0.82,1.28l2.05,2.64l-0.43,0.61l3.02,6.58l-0.92,0.7l1.54,2.21l2.39,1.56l-0.11,2.95l1.89,1.03l-2.08,1.15l0.34,2.39l-2.13,-1.45l-1.14,0.58l0.14,0.78l-0.81,-0.33l-1.04,1.0l-0.07,1.53l0.91,0.64l-0.32,0.87l0.56,0.96l-1.02,1.95l0.44,3.17l3.73,4.52l2.76,1.88l1.31,-0.03l0.11,1.21l1.34,0.7l-0.77,0.68l0.24,1.41l-1.03,1.15l1.67,1.58l1.03,-0.13l0.7,1.86l1.97,0.48l0.31,1.48l-4.07,-0.48l-1.18,1.23l-1.91,-1.25l-0.78,0.24l-2.21,-2.82l0.43,-2.25l-1.34,-1.53l-2.67,-1.51l-3.94,0.7l-1.01,-2.26l-1.26,-1.15l0.52,-0.86l-0.64,-1.01l-4.86,-3.57l0.68,-1.51l-1.07,-2.24l-2.31,-2.28l-1.12,-0.35l-0.68,0.6l-0.09,1.64l-0.95,-0.48l1.16,-3.82l-0.66,-1.99l-1.01,-1.1l-0.46,-2.9l-1.19,-1.88l-3.46,-0.63l-6.97,-0.08l-2.15,0.08l-4.51,2.64l-0.66,1.23l0.93,2.71l-2.77,1.07l-1.39,1.56l0.55,1.15l-0.7,0.48l0.11,0.8l0.66,0.83l0.81,-0.23l0.73,0.5l-0.18,1.03l0.53,0.43l-0.56,0.13l-0.9,-1.53l-1.82,-0.25l-0.97,1.48l2.34,3.31l-1.11,1.09l-1.18,-1.61l-1.85,0.85l-0.35,2.19l0.79,3.29l-0.75,2.46l2.37,2.99l0.09,2.19l-0.66,0.95l0.42,1.61l-2.27,0.55l-0.7,-1.91l-2.95,-1.0l-1.67,-1.66l-0.77,1.05l-1.55,-0.57l-1.38,-2.61l-0.24,-1.14l0.45,0.21l1.25,-1.2l1.93,-0.71l-0.74,-1.2l0.37,-1.81l-1.12,-0.78l1.12,-0.91l-1.86,-1.18l1.03,-0.81l-0.99,-1.76l1.0,0.03l0.53,-1.0l-1.45,-0.78l-0.31,-1.05l0.22,-0.91l0.72,0.0l1.36,-1.56l-0.95,-0.83l-2.36,0.25l-1.25,-3.37ZM245.08,491.08l0.93,0.75l-0.37,0.98l0.35,0.61l-0.77,0.22l-0.71,-0.98l0.57,-1.58ZM280.65,487.53l0.08,-1.06l1.57,-1.59l2.07,-0.76l-0.04,2.6l0.66,0.82l-0.91,-0.99l-1.21,-0.25l-2.22,1.24Z","name":"Laconia"},"38":{"path":"M235.43,335.0l4.58,1.72l1.06,-0.56l1.64,0.61l3.28,-0.56l4.28,2.87l2.03,0.28l3.01,1.65l2.21,0.46l1.89,1.6l4.9,2.24l3.81,3.43l2.0,2.97l5.96,3.07l2.02,0.1l2.24,-1.09l1.9,0.08l2.44,-3.55l-5.44,-3.93l-3.93,-1.0l2.13,-1.51l1.56,-0.19l1.02,-1.14l1.28,0.08l0.4,-0.91l0.81,-0.31l2.51,0.46l1.23,1.25l1.77,0.58l0.53,-0.73l1.86,0.93l1.61,-0.57l2.51,3.09l3.68,7.05l-1.2,1.62l-2.3,0.48l-1.6,-0.28l-2.21,0.63l-0.73,-0.91l-1.75,0.41l-1.16,-0.53l-0.88,1.21l0.63,1.36l-1.92,1.76l0.53,1.93l1.69,1.85l2.45,-0.38l1.49,0.76l3.39,-0.81l0.66,0.76l0.53,-0.2l3.4,3.3l0.64,-0.04l0.01,2.02l-2.17,1.55l-1.72,-0.51l-0.99,1.11l0.77,1.83l-1.62,1.06l-4.06,-0.15l-2.63,1.79l-5.01,-1.04l-1.06,-0.6l-0.79,-1.45l-3.96,-0.88l-4.79,1.25l-2.87,0.02l-2.79,-0.93l-4.94,-3.01l-4.27,0.3l-2.73,-1.4l-3.96,-0.86l-1.6,0.7l-0.68,-0.38l2.18,-3.5l-0.24,-1.59l-1.24,-0.69l-1.78,0.7l-1.08,-0.17l-1.48,-1.18l-1.48,0.52l-1.51,1.21l-2.3,3.56l-1.22,0.78l-2.68,-0.78l-4.11,0.35l-1.12,-0.38l-5.44,-6.39l0.17,-2.18l0.77,-1.19l0.42,-3.93l5.88,-2.32l2.49,-2.32l0.5,-2.5l2.23,-4.57l-1.85,-3.3l0.31,-1.93Z","name":"Corinthia"},"15":{"path":"M66.98,242.34l0.11,-0.42l1.08,1.04l-1.15,-0.43l-0.04,-0.2ZM60.45,236.48l-0.59,-1.22l0.59,-0.44l2.03,1.19l2.61,3.64l-2.3,-0.36l-2.34,-2.81ZM22.0,187.48l-0.54,-0.66l2.42,-3.64l1.77,-0.13l1.54,0.78l2.49,-0.93l0.84,0.49l1.41,-0.44l1.4,0.8l2.57,-1.32l1.67,-1.67l1.88,0.59l1.04,1.69l2.11,0.92l0.77,-0.4l1.26,1.23l0.94,-0.08l-1.98,3.63l-3.64,0.91l-3.24,1.92l-0.19,2.65l0.95,0.99l-0.82,0.73l1.0,1.51l0.51,-0.22l0.89,0.98l3.21,1.15l1.18,-0.15l-0.6,0.8l0.52,0.71l-0.03,0.99l-1.17,-1.36l-0.86,1.15l1.1,1.25l-0.2,3.41l1.94,7.13l3.21,1.51l1.93,0.08l0.73,1.81l0.98,0.53l2.37,-0.63l1.62,-1.22l1.67,2.64l0.52,2.03l1.61,1.82l-0.5,1.33l-1.06,-0.62l-1.07,0.16l-4.26,-2.46l-2.08,-0.5l-2.72,-2.16l-3.09,-1.03l-1.41,0.13l-2.87,-1.98l-1.49,-3.12l-0.18,-2.64l-0.6,-1.07l0.67,-1.4l-1.58,-2.65l-2.09,-2.08l-2.45,-0.74l0.35,-0.65l-0.42,-0.43l-2.52,-1.04l-0.29,-1.62l-0.92,-1.1l0.31,-1.6l-0.4,-0.39l-1.5,-0.13l-0.58,0.48l-1.93,-0.82l0.75,-2.88l-1.26,-1.1l-0.81,0.19l-0.79,-2.02ZM54.97,214.9l0.01,-0.01l0.01,0.01l-0.02,-0.0ZM43.75,211.98l0.0,0.0l-0.01,0.0l0.0,-0.01ZM37.7,194.99l-0.0,0.0l-0.0,-0.0l0.0,0.0ZM37.67,194.96l-0.01,-0.01l0.01,0.01l-0.0,-0.0ZM43.66,188.25l0.0,0.0l-0.0,0.0l-0.0,-0.0ZM31.96,200.19l0.01,-0.0l-0.0,0.0l-0.0,-0.0ZM16.24,174.41l-0.12,-0.76l1.18,0.67l-0.24,0.51l-0.82,-0.42ZM17.08,174.85l0.01,0.0l-0.0,0.0l-0.0,-0.0ZM12.14,186.04l-0.21,-0.19l-0.03,-0.34l-0.45,-0.55l0.03,-0.08l0.86,0.9l-0.2,0.26ZM0.47,177.23l0.25,-0.79l1.52,0.8l1.87,-0.72l-1.17,1.84l-0.8,-0.11l-0.19,0.46l-1.32,-0.52l-0.14,-0.96ZM3.46,177.15l-0.03,-0.01l0.03,0.01l-0.0,0.0Z","name":"Corfu"},"22":{"path":"M51.81,193.2l-0.47,0.0l-0.06,-0.78l1.19,0.05l1.36,0.48l-2.03,0.25ZM54.71,193.37l1.69,0.66l0.97,0.72l-2.43,-0.95l-0.23,-0.42ZM57.39,194.76l0.37,0.31l0.06,0.05l-0.04,0.04l-0.39,-0.4ZM59.7,196.12l4.2,0.56l0.89,-0.56l0.35,-1.31l1.5,0.51l0.87,-1.26l2.62,1.07l0.2,-2.11l1.34,-1.53l1.22,-0.24l1.9,-1.72l-2.36,-3.25l1.14,-1.55l-1.33,-2.1l0.9,-0.67l3.5,1.25l0.32,2.93l1.06,1.66l1.45,0.99l4.13,0.53l0.7,3.95l1.84,2.56l0.27,1.01l-1.67,2.14l-0.29,1.42l0.3,4.14l3.52,4.25l5.46,1.3l0.46,1.01l-0.44,1.27l0.3,1.56l1.22,2.69l0.22,3.84l1.53,2.78l2.38,7.23l-1.88,-0.31l-2.37,0.73l-2.47,-1.3l-3.5,1.58l-1.98,-0.72l-4.11,-3.19l-0.96,-2.21l-1.82,-1.55l-2.92,0.02l-4.93,2.59l0.23,-0.78l-0.61,-1.17l0.53,-0.65l-1.02,-0.85l0.54,-1.21l-1.45,-1.66l-2.14,-0.72l-1.42,-3.16l3.8,-0.1l0.62,-0.53l0.15,-0.62l-0.64,-0.66l-4.04,-2.7l1.09,-0.2l1.71,1.03l0.84,-1.79l-0.15,-0.93l-2.48,-1.33l-1.17,0.77l-4.17,-2.37l-1.87,0.77l0.57,-1.16l1.42,-0.99l0.75,-2.39l-0.74,-0.55l2.1,-2.66l-1.87,-2.07l-2.1,-0.4l-1.21,-0.91ZM61.93,202.47l-0.23,-0.28l0.69,0.05l-0.23,0.15l-0.23,0.07Z","name":"Thesprotia"},"17":{"path":"M118.71,293.28l2.02,-3.91l4.1,-0.56l-0.33,1.01l-2.06,1.7l-1.92,0.32l-1.23,0.92l-0.4,0.48l0.51,0.51l-0.94,1.13l0.25,-1.59ZM120.68,297.09l-0.17,0.04l0.02,-0.18l0.16,0.03l-0.01,0.11ZM121.78,295.3l0.2,-0.2l0.49,-0.83l-0.22,0.64l-0.47,0.39ZM112.77,304.14l-0.13,-0.04l1.43,-1.5l-0.11,1.62l-1.2,-0.08ZM108.26,290.3l-0.44,-0.77l0.38,-2.08l1.41,0.74l0.83,-0.94l1.84,0.68l-1.28,1.15l-1.21,-0.38l-1.09,1.97l-0.44,-0.36ZM92.66,294.72l1.27,-4.24l-0.24,-4.65l1.42,-2.3l2.15,-6.75l1.93,-1.41l1.58,-3.21l1.96,0.13l1.23,-1.84l1.73,0.46l-0.52,1.08l0.82,2.01l-0.19,4.38l1.12,2.93l-1.31,1.36l-1.42,3.19l1.08,0.73l0.96,2.3l-0.02,1.67l-0.78,-0.01l-1.01,-1.26l-0.51,1.58l-1.01,0.17l0.35,1.3l-1.38,0.29l-0.72,-0.69l-1.33,1.44l-0.44,-0.67l-1.09,0.27l-0.7,-1.32l0.11,-1.05l-1.25,-0.68l-2.28,4.32l-1.02,0.82l-0.48,-0.38ZM99.73,293.95l-0.02,0.15l0.46,0.75l-0.44,-0.45l-0.09,-0.7l0.1,-0.1l0.0,0.35ZM106.03,285.14l-0.2,-0.4l0.05,-0.55l0.38,0.48l-0.14,1.62l-0.1,-1.15ZM105.12,298.27l0.09,-1.29l0.38,-0.36l0.44,0.38l-0.3,1.54l-0.61,-0.27Z","name":"Levkada"},"16":{"path":"M76.75,330.07l1.36,-2.41l-0.18,-2.77l1.11,0.01l1.39,-1.65l-0.1,-2.28l0.63,-0.96l0.38,-2.82l0.51,0.65l0.95,-1.43l1.09,-0.48l0.39,2.3l1.25,0.96l0.72,-0.2l1.01,1.4l5.07,-3.74l0.77,-1.43l-0.54,-1.43l0.63,-0.76l-0.66,-1.75l0.38,-1.89l-0.85,-0.81l0.61,-0.92l-0.48,-2.32l1.47,-0.18l1.03,0.68l-0.01,1.04l0.72,0.53l-0.31,0.62l0.59,0.55l-0.28,0.52l0.91,1.16l-0.21,0.98l1.26,0.66l0.47,1.81l-0.35,0.46l1.23,4.61l-2.39,1.91l1.05,1.04l1.14,2.86l0.95,0.99l1.01,0.0l2.36,-2.62l-0.62,1.38l0.47,0.48l1.06,-0.52l0.52,0.36l-0.23,0.5l1.15,1.37l0.17,1.28l3.47,3.94l2.92,4.66l1.71,1.39l-0.02,0.62l-1.79,4.16l-1.62,-0.98l-1.78,0.76l-3.35,-0.74l-4.85,-3.81l-1.95,-0.66l-3.13,1.25l-1.01,1.3l-2.38,-1.27l-1.13,0.28l-2.0,-1.57l0.54,-1.16l-1.51,-2.17l0.35,-1.24l-0.88,-1.59l2.14,2.63l0.99,-0.81l-2.39,-3.46l-2.19,-5.32l-0.02,-1.17l-1.01,-0.68l-1.14,0.2l-0.99,1.32l1.42,3.79l0.07,5.63l-3.49,0.59l-0.63,0.57l-0.53,-1.38l-2.6,-1.05l0.18,-1.75ZM81.4,316.84l0.03,0.02l-0.03,0.05l0.0,-0.07ZM81.28,316.41l0.0,0.08l-0.05,-0.13l0.02,-0.09l0.03,0.14ZM91.51,313.21l0.0,0.05l-0.05,0.0l0.05,-0.05ZM98.47,305.92l0.24,-1.18l1.51,1.15l0.86,-0.71l0.35,-1.2l-0.5,-1.26l1.64,0.81l-1.11,2.67l2.22,0.81l1.31,1.38l-2.62,5.19l-1.91,-3.88l0.07,-1.64l-1.12,-0.42l-0.94,-1.72ZM103.04,315.34l1.44,-0.82l1.78,0.67l0.2,-0.91l-1.21,-1.0l0.72,0.48l0.82,-0.65l0.63,0.27l0.49,1.07l-0.63,0.46l0.86,0.97l-0.7,1.3l0.39,1.07l1.3,0.71l-3.36,1.24l-1.35,-1.31l-0.55,-2.65l-0.96,-0.51l-0.46,-0.78l0.58,0.38ZM104.12,306.74l-0.07,-0.01l-0.03,0.01l0.08,-0.08l0.03,0.07Z","name":"Kefallonia"},"19":{"path":"M108.62,255.0l0.13,1.05l-0.69,-0.26l-0.89,-2.12l1.04,-4.49l1.52,-0.83l1.58,-2.02l1.26,0.56l1.68,-0.45l2.82,-3.4l0.28,-1.61l-1.81,-5.4l0.36,-0.88l4.54,-1.33l1.56,-1.29l1.33,-2.75l0.42,-5.6l4.31,-3.02l0.89,-1.28l1.41,-7.7l0.97,-0.8l3.96,1.74l3.08,-1.8l1.82,0.69l1.55,2.72l-0.23,1.58l0.57,1.6l3.77,2.9l1.23,3.27l2.93,1.97l5.49,0.31l1.69,1.82l1.09,2.45l-4.05,7.35l0.35,1.72l1.69,2.35l-1.36,0.42l-4.18,3.17l-4.33,1.59l-9.8,0.16l-1.63,0.57l-1.42,1.15l-0.93,2.53l-0.7,0.29l-0.24,1.13l0.48,0.53l-2.31,1.23l-0.71,-0.64l-1.88,0.57l-1.3,-1.83l-0.79,-0.2l-3.16,2.37l-2.14,-2.06l-4.66,-0.03l-1.3,-2.31l-1.58,-0.26l-3.03,2.55l-0.72,2.05Z","name":"Arta"},"18":{"path":"M99.32,361.39l0.11,-1.91l1.42,-1.79l3.85,-2.93l0.54,1.03l-0.45,1.0l0.77,1.52l3.2,3.88l1.82,1.07l1.26,-0.66l2.55,0.79l5.01,2.18l1.06,0.76l-0.49,2.21l3.51,1.92l1.03,1.55l2.62,1.24l0.26,1.37l-3.2,-1.18l-2.27,-1.55l-2.69,0.43l-1.93,1.29l-2.23,3.35l1.82,1.97l-0.13,0.49l-1.47,0.9l-1.32,-0.4l-0.64,-0.3l-0.6,-1.51l-2.97,-2.32l-0.44,-1.2l-3.3,-1.34l-1.47,-1.58l0.33,-1.44l-1.82,-0.83l0.4,-1.88l-0.82,-0.63l-1.51,-0.05l-1.48,-1.59l0.08,-1.76l-0.7,-1.38l0.3,-0.7Z","name":"Zakynthos"},"31":{"path":"M327.75,593.03l-0.42,-0.51l0.29,-0.77l2.19,-1.31l-1.44,-1.44l0.55,-0.9l-0.68,-1.05l0.42,-1.69l1.29,-1.41l-0.57,-1.1l1.09,-0.34l0.84,-1.2l0.13,-1.74l-1.07,-0.59l-0.22,-1.15l2.15,-2.24l-0.26,-1.29l-0.77,-0.65l0.4,-0.47l-0.44,-0.89l0.55,-2.03l1.01,-1.32l-0.44,-0.85l0.93,-0.92l-0.09,-0.75l0.18,-0.78l0.27,-0.5l0.31,0.33l-0.68,0.95l0.22,1.97l0.66,0.67l-0.11,3.64l0.51,0.55l3.5,1.92l4.73,-0.8l0.66,-0.77l0.59,-3.11l-0.37,-2.22l-1.25,-2.32l0.53,-1.69l-0.77,-2.6l0.22,-1.3l1.99,-2.75l2.38,1.89l-0.86,1.85l1.25,4.41l0.04,4.64l1.19,1.0l3.33,0.4l0.86,0.82l4.89,0.75l2.08,-0.35l1.18,0.77l2.13,0.22l0.69,-0.41l1.63,0.31l1.51,-0.69l0.61,0.37l1.91,-1.12l0.33,-1.99l0.83,0.27l1.87,-0.95l-1.04,-1.98l0.44,-1.1l0.99,0.19l0.51,-0.67l1.79,-0.37l3.74,1.3l1.93,3.97l-1.43,2.79l-1.68,0.83l-4.03,-1.22l-1.21,0.35l-0.9,-0.43l-1.4,0.77l-0.51,1.05l4.98,2.39l2.49,-0.07l2.85,1.99l1.12,-0.1l0.9,-1.12l0.74,0.25l1.46,-1.21l1.05,1.51l-0.39,1.97l1.05,1.02l-0.15,1.88l-0.64,1.0l0.42,2.12l1.58,1.05l2.23,0.25l1.11,2.82l-0.18,0.85l-4.4,2.05l0.26,1.27l1.17,0.64l-1.6,7.17l-2.09,-0.12l-2.53,-1.79l-3.7,0.82l-2.06,-0.99l-2.25,0.37l-0.97,-0.42l-0.94,0.61l-1.01,-0.34l-2.1,0.52l-1.26,-0.5l-2.27,-2.63l-2.74,-0.07l-2.47,0.82l-3.38,-1.64l-1.13,0.35l-3.18,-1.24l-1.51,0.17l-0.93,0.84l-0.63,-0.19l-0.38,0.82l-1.3,0.19l-0.73,-0.84l-2.1,-0.22l-2.67,0.17l-1.21,0.8l-1.44,-0.78l-3.62,0.69l-1.73,-0.51l-0.65,0.45l-0.76,-0.84l0.46,-1.45l-1.63,-1.05l-1.4,0.0l-1.4,-1.93ZM333.77,564.73l0.01,0.01l-0.01,0.02l0.0,-0.03ZM368.85,632.83l1.97,-1.56l3.5,0.92l-0.9,2.3l1.57,2.01l-4.18,-1.82l-1.95,-1.85Z","name":"Chania"},"23":{"path":"M245.57,99.28l-2.08,2.1l0.15,0.66l6.13,0.94l1.08,0.83l0.65,1.42l2.38,2.11l2.33,5.41l3.55,1.67l-1.47,0.84l0.78,2.84l-1.07,1.36l-1.3,-0.14l-0.62,-0.78l-0.82,0.86l-0.86,-0.1l-2.56,-1.59l-0.7,-1.47l-4.23,0.35l-2.7,-1.9l-2.99,0.57l-1.15,1.67l-2.01,5.98l-5.98,4.65l-3.26,3.59l-1.53,0.98l-3.01,0.38l-1.96,1.24l-1.8,3.39l-3.25,-1.38l-0.76,-1.23l-0.46,-2.75l-2.56,-2.61l-0.08,-2.53l-0.6,-1.37l-4.71,0.38l-0.98,-0.53l-0.22,-1.38l-5.48,-2.85l-2.8,-4.12l-1.21,-0.96l0.9,-3.74l-2.01,-2.51l-0.08,-2.34l1.78,-3.8l7.22,-1.2l4.59,-1.39l0.28,-1.53l0.85,-0.89l12.37,2.88l3.74,2.29l2.78,2.95l3.31,-1.88l3.28,-3.09l1.24,0.83l3.02,-0.1l1.74,-0.69l1.5,-2.17l1.64,-0.18Z","name":"Imathia"},"51":{"path":"M511.66,240.3l-0.73,-0.21l0.88,-1.29l-0.36,-3.39l0.91,-1.34l-0.45,-0.83l3.98,-3.39l0.78,1.18l1.23,-0.12l0.9,0.6l1.26,-0.95l0.89,0.64l1.62,-0.05l0.83,-1.0l1.98,0.18l0.77,-0.6l2.32,-0.17l2.45,-1.65l0.99,0.72l2.87,-1.62l1.25,-0.08l1.45,-1.4l-0.99,-1.18l0.46,-1.24l-0.41,-0.9l0.9,-0.45l1.0,0.49l2.56,-0.87l6.77,0.98l1.71,-1.29l1.42,0.91l-0.93,1.65l0.93,1.15l1.01,0.64l2.41,-0.31l1.47,0.6l-3.54,4.76l0.15,1.08l7.69,4.54l-0.31,0.65l1.01,0.6l1.2,2.63l1.12,0.94l1.52,0.32l-0.43,2.31l1.48,0.88l0.8,2.0l-0.15,1.14l3.07,2.68l1.14,1.92l0.26,2.77l-1.28,0.38l-2.29,-0.99l-1.71,0.29l-1.05,-1.22l0.5,-1.13l-1.49,-0.42l0.2,-0.77l1.31,-0.7l-0.17,-1.52l-2.46,-2.96l-1.51,-0.87l-2.3,0.59l-1.36,1.43l0.81,1.92l1.63,1.66l1.51,0.36l3.26,3.74l0.61,2.88l-1.32,1.08l-0.35,-0.84l-3.02,0.97l-6.01,0.67l-2.77,-1.24l-2.93,-0.03l-3.25,-2.31l-4.1,-1.36l-3.35,-0.26l-1.63,0.87l-1.98,-1.52l-2.11,-3.32l-1.27,-0.92l-1.17,0.08l1.52,-1.35l2.05,0.69l2.21,-0.95l2.09,-2.67l2.58,-0.41l2.66,-1.9l2.08,-0.38l1.5,-3.12l-1.39,-1.45l-2.19,-0.87l-2.84,0.28l-1.38,-0.41l-1.29,0.9l-1.3,-0.03l-1.45,1.79l0.02,2.09l-2.56,2.04l-0.61,2.41l-1.07,-0.45l-1.63,2.44l-6.52,-2.1l-2.78,0.37l-0.79,-1.06l0.22,-0.42l-1.32,-1.17l-2.45,-0.44l-1.34,-1.13l-0.75,0.03l-0.21,-1.19l-1.13,-0.73ZM510.53,239.98l0.04,-0.09l0.13,0.13l-0.08,0.05l-0.09,-0.09ZM566.85,246.35l0.09,0.0l0.09,-0.03l-0.1,0.1l-0.08,-0.08ZM551.06,221.97l0.02,-0.02l0.01,0.0l-0.02,0.02l-0.01,-0.0ZM551.15,221.94l-0.02,0.0l0.04,-0.02l-0.02,0.02ZM551.27,221.89l-0.01,0.0l0.01,-0.01l0.0,0.01ZM448.04,166.17l-0.08,-0.51l0.88,-0.55l3.11,-0.0l2.94,-1.58l1.0,1.76l3.63,-1.08l1.39,0.23l1.06,-0.72l1.42,1.52l1.11,0.25l-0.15,1.8l1.37,0.89l-0.61,0.58l0.95,1.02l0.79,0.08l2.08,-2.08l0.75,0.47l2.0,-1.25l-0.59,-1.15l2.54,-2.26l-0.37,-1.25l2.34,1.39l1.58,-1.83l1.56,-0.77l-1.18,1.04l0.86,3.47l-1.93,0.81l-2.44,2.62l-0.5,1.76l0.46,1.08l-0.63,-0.47l-1.29,0.44l-0.69,1.02l0.39,1.3l-1.44,0.99l0.22,1.26l0.4,0.4l0.29,-0.03l0.1,0.1l-0.91,0.74l0.18,1.19l2.25,2.54l-1.77,1.02l0.41,1.35l-3.71,-1.11l-0.76,-1.01l0.54,-1.17l-1.28,-1.2l-1.16,-0.08l-1.52,-1.93l1.88,-0.97l-0.55,-0.92l1.29,-1.58l-2.09,-2.15l-1.86,0.08l-3.4,2.53l-0.53,0.71l0.4,0.53l1.27,-0.7l-2.05,2.72l-1.47,-0.58l-2.05,1.89l0.31,-0.51l-1.56,-1.1l-2.08,1.27l-1.96,-0.34l-0.89,0.81l1.25,-1.44l-1.12,-1.04l0.69,-0.74l0.18,-1.21l-0.49,-0.51l0.91,-0.8l0.37,-1.78l-1.01,-1.33l-0.79,-0.21l-0.51,-2.15l0.31,-1.57ZM460.14,174.79l0.05,-0.05l0.04,0.02l-0.03,0.03l-0.06,0.0ZM463.27,177.14l0.03,0.03l0.06,0.02l-0.14,-0.03l0.05,-0.02ZM458.62,178.95l1.05,0.2l0.09,1.26l1.53,1.87l-4.42,0.0l-1.09,-1.01l-0.02,-0.9l0.77,-0.55l0.33,-1.24l0.87,-0.22l0.89,0.6ZM454.4,161.85l0.14,-0.09l0.11,0.04l-0.06,0.03l-0.19,0.03ZM441.92,209.44l0.53,-2.24l0.88,-0.54l0.81,-1.82l3.82,2.78l-5.21,5.52l-0.82,-3.7Z","name":"Lesvos"},"36":{"path":"M264.22,394.85l1.73,2.56l-0.07,1.92l1.74,1.8l-1.41,2.47l0.95,0.98l0.89,-0.03l1.83,2.45l0.82,2.48l1.1,0.8l-0.12,0.74l1.51,2.1l-0.13,0.98l1.75,1.02l-0.52,1.05l2.46,2.42l0.63,2.53l1.2,0.85l-1.36,4.24l0.37,2.27l1.78,1.41l0.92,-0.1l0.47,-0.67l1.76,0.01l-0.39,1.29l2.41,2.2l-0.91,-0.39l-0.73,0.73l3.21,4.32l-0.72,0.39l0.66,0.94l-0.29,0.64l-8.96,0.21l-1.65,1.43l-4.36,-1.67l-1.69,-1.84l-3.23,-0.91l-3.27,0.0l-0.3,-4.6l-1.87,-3.06l-3.79,-4.08l-0.03,-9.53l-16.15,-3.9l-0.49,0.35l-0.77,7.4l-1.97,2.84l-3.79,2.03l-4.91,1.49l-1.51,1.23l-1.05,-1.21l-2.6,0.08l-2.48,1.35l-1.61,-2.57l-2.47,-1.68l-1.62,-2.65l-2.89,-1.04l-1.33,-2.54l-2.36,-1.87l-0.55,-5.11l-4.5,-4.0l1.35,-4.51l-0.59,-1.6l-1.09,-0.9l0.42,-1.2l1.48,-0.62l0.72,-1.62l-2.32,-2.63l-7.24,-5.29l-2.69,-0.93l-2.49,0.13l-0.09,-9.62l-1.64,-4.52l0.38,-3.49l4.4,-6.59l2.32,-0.47l0.8,2.5l10.79,4.83l1.66,-0.17l1.99,-2.12l1.31,-0.47l2.34,0.13l0.5,1.29l1.55,0.44l1.63,-0.63l2.0,-2.11l4.34,-1.55l0.56,-1.06l3.63,3.73l1.45,0.46l4.12,-0.35l2.22,0.67l-1.72,4.47l-0.74,3.88l0.31,1.46l1.66,1.23l2.73,-1.27l0.93,0.32l2.12,5.36l2.52,1.29l0.09,1.2l1.97,2.3l-0.99,3.48l0.57,1.64l1.43,1.15l2.4,0.84l1.8,4.02l1.24,0.69l1.58,0.02l1.53,-0.73l2.64,0.38l1.69,-0.8l-0.12,-4.18l2.16,-1.97l1.33,-0.37l0.61,1.37l-0.92,1.94Z","name":"Arcadia"},"35":{"path":"M655.95,516.09l0.86,-0.68l2.79,-0.55l1.5,-1.58l0.96,-0.02l2.13,-3.15l0.11,-2.12l1.25,-2.36l1.26,-0.05l1.51,-0.98l2.77,-3.56l2.75,-1.8l3.62,-1.0l7.32,-4.0l5.1,-1.94l5.45,-0.15l2.57,-3.07l1.04,1.24l-0.85,3.06l1.37,1.42l-3.21,3.62l0.73,1.82l-2.88,3.72l-0.85,2.1l0.3,0.92l-1.73,2.13l-0.7,1.9l0.02,1.51l-2.89,0.87l-2.13,3.28l-0.77,3.28l0.71,0.75l1.17,-0.21l-0.39,0.58l0.37,0.89l-1.24,1.16l0.77,1.03l-1.45,-0.38l-1.17,-1.33l-1.93,-0.08l-5.37,2.85l-1.91,2.08l-3.22,5.7l-1.97,2.4l-3.06,1.6l-2.35,2.32l-1.0,0.18l-3.35,-2.28l-1.17,-2.32l2.81,-6.35l0.26,-7.4l-1.04,-1.3l-2.92,-0.86l0.56,-1.14l-1.1,-1.88l-0.92,0.45l-0.5,-0.32ZM662.87,475.92l2.06,-1.51l0.25,-1.32l0.58,0.06l0.21,0.8l1.23,-0.21l0.57,0.76l1.07,-0.9l1.13,-0.35l-1.27,0.98l0.58,0.6l1.37,-0.3l-0.72,1.16l0.66,0.63l-1.58,0.83l1.47,0.8l-1.25,0.63l0.73,1.36l-1.17,0.9l-0.93,0.03l-0.13,-0.48l0.63,0.25l0.71,-1.18l-0.64,-0.85l-1.73,-0.93l-1.23,0.4l0.82,-0.76l-0.53,-1.23l-2.21,0.48l-0.67,-0.65ZM666.06,472.87l0.0,0.03l-0.03,0.0l0.03,-0.03ZM667.51,470.92l1.33,-0.73l0.58,0.62l-1.66,0.3l-0.24,-0.2ZM669.44,482.72l0.01,-0.43l0.49,0.1l-0.33,0.15l-0.18,0.18ZM661.51,540.46l-0.28,-0.22l0.58,-0.04l-0.25,0.26l-0.04,-0.0ZM656.06,505.7l0.5,-0.91l1.67,-0.38l-0.27,1.05l-0.62,-0.45l-1.29,0.69ZM657.78,505.91l0.12,0.12l-0.19,0.23l-0.12,-0.12l0.19,-0.23ZM642.85,510.36l0.28,-1.77l1.91,-0.33l0.49,0.41l3.2,-0.95l1.57,0.5l-0.02,0.86l-0.65,0.51l-0.38,-0.29l-1.61,0.71l-2.25,-0.39l-2.55,0.73ZM625.13,491.24l0.26,-3.35l2.18,1.0l0.95,-0.7l0.28,-1.33l1.05,-0.06l2.46,3.88l-0.63,1.5l0.6,0.73l0.74,0.3l0.83,-0.77l1.45,1.48l0.93,-1.38l0.55,0.58l-0.86,1.0l-3.17,0.99l-2.43,-2.32l0.0,-1.53l-0.79,-0.95l-0.85,-0.02l-2.11,1.75l-0.46,-0.89l-0.97,0.11ZM595.85,461.29l2.67,-1.16l2.47,0.45l6.79,-7.27l7.24,-3.62l4.7,-0.23l3.72,-1.96l1.39,1.93l2.01,0.76l1.44,-0.58l0.81,1.51l0.09,0.78l-1.92,1.06l-12.49,3.52l-4.43,4.42l-6.51,-0.9l-3.92,1.63l-0.97,1.03l1.05,2.06l-1.36,1.29l0.28,2.56l-2.99,-2.61l-0.44,-1.17l0.35,-3.5ZM607.4,566.45l-0.29,-1.13l1.38,-0.5l0.42,-0.42l-0.28,-0.58l2.91,-2.09l0.24,-1.12l-0.59,-0.85l0.59,-1.62l3.37,-4.61l-0.53,-2.0l0.74,-4.14l1.15,0.43l1.73,-2.5l1.41,0.1l-0.18,2.46l-1.56,1.73l-0.18,1.8l0.8,2.52l-2.22,2.84l-0.61,2.37l-1.73,1.6l-0.33,2.32l0.37,0.43l-0.87,0.82l1.08,1.52l1.33,0.28l-0.15,0.79l1.14,1.2l0.87,0.15l-0.0,1.22l1.14,0.97l-1.58,1.44l0.09,1.42l1.04,0.95l1.55,-0.07l0.74,0.85l-0.84,1.65l-0.55,-0.76l-1.45,0.05l-1.33,1.57l-1.28,0.55l-1.38,1.77l-0.37,1.54l0.88,0.62l-0.74,0.59l-1.38,-1.86l-1.28,0.15l-1.96,-1.57l1.8,-1.69l0.92,-1.94l-1.14,-2.14l0.59,-3.04l-1.23,-1.7l-1.86,-0.77l0.42,-0.74l-0.81,-0.84ZM619.11,544.06l-1.33,-0.28l-0.98,-1.42l0.73,-0.03l1.52,-1.75l0.07,-1.68l0.98,-0.25l-0.64,2.32l0.75,2.53l-1.1,0.54ZM612.11,477.65l-0.07,-2.67l2.91,-0.82l1.39,0.03l1.8,2.89l-1.49,2.04l-4.13,-0.55l-0.41,-0.9ZM611.67,444.78l-1.14,-0.97l1.82,-0.29l0.44,0.82l0.89,-0.88l0.97,0.39l-1.51,1.3l0.72,0.67l-0.34,0.24l-1.09,-0.03l0.13,-0.57l-0.88,-0.68ZM610.24,470.04l0.38,0.04l-0.33,0.71l-0.14,-0.42l0.09,-0.32ZM611.76,469.09l0.45,-0.51l0.08,0.08l0.09,0.34l-0.62,0.08ZM608.14,433.66l0.37,0.08l0.08,0.07l-0.36,-0.03l-0.09,-0.11ZM608.78,433.87l0.03,0.0l0.05,0.03l-0.03,0.03l-0.06,-0.06ZM608.45,413.96l-0.12,-0.34l0.02,-0.5l0.76,0.82l-0.66,0.03ZM608.37,412.45l0.06,-0.06l0.02,-0.09l0.01,0.09l-0.09,0.06ZM608.64,412.03l0.08,-0.08l0.01,0.01l-0.09,0.09l0.0,-0.02ZM607.28,478.3l-0.07,0.0l0.07,-0.0l-0.0,0.0ZM592.61,432.78l0.31,-0.31l4.77,1.97l0.54,-0.3l2.27,1.38l-1.1,-0.32l-0.4,0.42l2.76,2.59l0.33,1.18l0.84,-0.86l1.39,-0.2l0.86,1.18l-0.58,1.5l-0.99,0.67l1.11,0.58l-1.02,0.76l0.35,0.48l-3.48,-0.15l-0.66,0.65l0.31,1.67l-0.84,0.05l-0.49,-0.58l-0.49,0.58l-1.13,-0.3l-0.9,-0.81l0.09,-0.48l-1.16,-0.59l1.51,-1.45l-0.75,-1.14l1.16,-1.89l-0.02,-1.2l1.82,0.57l0.42,-0.57l-2.04,-2.57l-1.84,-0.23l-0.33,-0.95l-2.62,-1.34ZM594.9,435.64l0.03,-0.08l0.07,0.03l-0.07,0.05l-0.02,0.0ZM595.2,435.61l-0.02,0.0l0.01,-0.01l0.01,0.01ZM605.01,443.52l0.08,0.02l0.11,0.28l-0.31,-0.17l0.13,-0.13ZM589.8,587.02l4.34,-5.04l2.23,0.45l5.29,-1.41l-1.08,2.38l-2.28,0.47l-2.41,2.49l-1.51,0.12l-2.14,2.06l-1.88,-0.59l-0.55,-0.93ZM597.45,396.88l-0.21,-0.44l3.54,0.62l-1.06,1.1l-0.78,-0.7l-1.16,1.11l-0.33,-1.7ZM601.39,397.57l0.01,-0.12l0.24,0.21l-0.07,0.05l-0.18,-0.14ZM599.03,484.53l0.17,-0.18l0.2,0.03l-0.1,0.1l-0.27,0.05ZM594.58,438.91l-1.1,-0.4l-0.36,-0.31l1.36,-0.08l0.81,1.07l-0.71,-0.28ZM584.27,423.73l-0.69,-0.36l0.83,-1.31l1.03,0.73l1.26,-0.57l0.64,0.47l0.71,-0.56l1.9,0.72l-1.69,1.81l0.97,0.85l1.19,-0.39l0.38,0.22l-0.63,0.9l1.97,1.67l0.62,1.15l-0.24,0.67l-1.07,-0.72l-0.58,0.48l0.33,0.56l-1.77,0.08l-0.46,-0.79l1.69,-0.35l0.31,-1.49l-1.01,-0.45l-2.63,1.39l-0.44,-0.81l1.82,-1.46l-0.07,-0.55l-1.43,-0.78l-1.33,0.36l-0.4,-1.07l-1.21,-0.4ZM586.0,421.56l-0.11,-0.11l0.32,-0.12l0.01,0.01l-0.22,0.22ZM590.76,579.99l0.3,0.17l0.14,0.32l-0.94,-0.37l0.5,-0.12ZM579.57,411.16l0.84,-1.12l0.71,1.26l1.26,0.59l-0.84,0.65l-1.96,-1.38ZM583.27,413.28l0.39,-0.73l-0.43,-0.41l1.35,-0.43l0.1,1.3l-1.41,0.28ZM583.11,412.12l-0.03,-0.03l0.04,0.03l-0.0,-0.0ZM579.7,403.28l-0.41,-0.42l2.7,2.23l-1.39,-0.57l-0.9,-1.24ZM579.22,402.85l0.04,-0.03l0.03,0.03l-0.06,0.0ZM578.28,406.43l-0.02,-0.02l0.24,-0.24l-0.01,0.08l-0.21,0.18ZM575.32,498.35l-0.22,-0.4l1.21,-0.37l0.94,1.36l-1.66,0.57l-0.26,-1.15ZM564.78,412.9l0.18,-2.08l0.59,-0.62l1.76,1.31l-0.74,0.37l0.03,0.65l-1.16,-0.24l-0.65,0.61ZM567.25,413.75l0.16,0.66l-1.37,-0.32l0.78,-0.63l0.43,0.29ZM565.0,409.6l0.21,-0.09l0.04,0.23l-0.04,0.04l-0.22,-0.19ZM565.94,409.14l-0.74,-1.62l0.57,-0.51l-0.59,-0.75l0.0,-0.74l1.09,0.93l1.48,-1.04l0.36,0.99l1.48,0.59l0.04,0.8l-2.32,-0.67l-1.38,2.03ZM558.18,439.04l-0.47,0.14l1.45,-0.58l-0.57,0.41l-0.41,0.04ZM557.07,438.84l-0.35,0.05l-0.04,-0.1l0.31,-0.05l0.09,0.11ZM560.55,439.22l-0.29,-0.05l-0.52,-0.43l1.7,0.4l-0.89,0.08ZM559.67,481.46l-0.04,-0.04l0.08,-0.08l0.01,0.06l-0.05,0.05ZM543.97,476.7l-0.11,-0.28l0.34,-0.33l0.57,1.13l1.36,-1.0l0.74,0.15l2.3,1.28l0.38,0.95l0.77,0.03l0.37,1.18l-1.48,1.28l2.0,2.17l-0.73,0.27l-1.06,-0.53l-1.11,0.6l-1.52,-1.15l-0.65,0.28l-0.97,-2.46l-0.86,-0.54l0.31,-1.52l-0.86,-1.02l0.2,-0.48ZM552.22,477.71l-0.38,-0.46l1.03,-0.58l1.11,0.63l-1.75,0.41ZM554.54,477.68l-0.27,-0.26l0.73,-0.63l-1.04,-2.14l1.83,-1.03l-0.71,-0.43l-1.7,0.47l-0.84,-1.15l0.41,-0.58l2.93,1.36l3.52,3.47l-0.38,0.28l-1.08,-0.95l-1.43,0.64l-0.41,-0.28l-0.63,1.26l-0.46,-0.38l-0.47,0.36ZM554.25,523.06l0.07,-0.07l-0.02,0.11l-0.04,-0.04ZM544.74,441.15l0.86,0.08l0.49,-0.5l0.64,0.02l-1.75,0.97l-0.6,-0.28l0.35,-0.28ZM540.76,479.76l-0.1,-0.07l0.1,-0.1l0.02,0.04l-0.02,0.13ZM533.92,479.75l-0.06,-0.06l-0.15,0.07l-0.02,-0.02l0.29,-0.11l-0.07,0.11Z","name":"Dodekanisa"},"52":{"path":"M568.13,373.41l-0.33,-0.57l2.98,-3.09l2.06,0.03l3.09,-2.53l1.34,0.09l3.98,-1.6l8.4,0.66l2.63,2.49l3.63,0.62l2.99,2.19l1.25,-0.93l-2.05,-2.62l5.86,1.19l1.77,-0.46l-1.75,0.64l-0.79,1.44l1.19,0.96l-0.33,1.05l0.47,0.53l1.95,-0.1l0.26,0.6l-4.19,1.04l-2.45,-0.35l-1.82,1.6l-1.97,-0.1l-1.88,0.68l-2.06,1.59l-0.46,2.36l-1.4,0.3l-4.93,-0.55l-2.93,-4.44l-3.03,-1.77l-6.24,0.68l-1.87,1.75l-1.87,0.53l-0.81,-1.03l0.5,-1.1l-1.16,-1.77ZM600.19,367.76l0.05,-0.05l0.06,0.15l-0.0,0.0l-0.11,-0.11ZM554.86,386.52l1.01,-0.48l0.42,0.34l-1.17,0.38l-0.26,-0.24ZM556.31,386.4l0.69,-1.08l1.08,-0.04l0.35,1.53l-0.36,0.85l-0.74,-1.23l-1.01,-0.04ZM561.61,389.72l0.11,-1.24l-1.16,-1.16l0.34,-1.35l0.78,0.77l0.09,1.71l1.02,1.01l-0.43,0.46l0.46,0.7l-1.22,-0.9ZM560.76,385.7l0.11,-0.11l-0.02,0.2l-0.09,-0.09ZM562.99,385.75l-0.05,-0.16l0.65,-0.15l-0.35,0.53l-0.25,-0.21ZM563.89,385.14l-0.46,-1.57l0.37,-0.81l-1.51,-0.9l0.81,-1.77l1.55,1.12l-0.74,0.87l0.22,0.91l0.99,0.46l-1.21,1.7ZM560.89,385.09l-0.11,-0.07l0.04,-0.04l0.07,0.07l0.0,0.05ZM521.1,391.86l2.76,-4.83l3.62,-4.03l1.76,-1.19l1.32,0.61l4.06,-0.73l0.63,0.61l1.37,-0.18l1.69,0.68l7.94,-4.91l4.62,-0.86l-0.05,0.64l-1.38,0.73l-1.64,3.2l-2.15,2.03l-5.41,3.49l-1.9,0.73l-6.33,0.51l-4.43,3.77l-2.67,-0.23l-3.21,0.76l-0.59,-0.79Z","name":"Samos"},"33":{"path":"M386.55,602.99l1.36,-7.37l-1.28,-0.84l-0.15,-0.72l4.28,-1.84l0.24,-1.41l-1.04,-2.64l3.11,0.22l1.55,-1.07l2.75,0.2l0.86,-0.73l1.83,-0.16l1.12,0.52l1.12,-0.74l1.18,0.51l5.06,-0.75l4.86,-1.59l3.0,-2.46l3.31,0.14l0.53,-0.69l6.17,0.62l0.62,1.15l6.76,-0.26l-0.45,1.46l1.65,2.29l-1.57,2.42l2.05,1.98l-0.01,3.49l-1.81,5.89l-3.47,0.2l-1.03,-2.52l-1.66,-0.91l-1.13,1.23l-0.52,2.35l-0.03,4.8l-0.65,0.66l-1.19,-0.78l-1.69,0.42l-1.43,1.06l-0.83,3.18l-10.37,-0.4l-3.62,-3.74l-3.24,-0.84l-1.73,0.37l-2.58,-1.27l-0.62,-1.02l-1.18,0.22l0.38,-0.72l-1.71,-1.29l-1.51,0.2l-1.1,0.87l-2.29,-0.65l-2.88,1.34l-1.0,-0.4ZM434.08,582.94l0.78,-0.96l1.74,0.97l-0.29,1.04l-2.22,-1.05Z","name":"Rethymno"},"37":{"path":"M245.37,362.21l1.56,0.32l1.58,-0.71l0.86,0.48l0.02,0.9l-2.29,3.53l1.38,1.26l1.77,-0.69l3.77,0.82l2.7,1.4l4.28,-0.31l4.78,2.95l3.07,1.02l3.13,-0.03l4.56,-1.23l3.66,0.81l0.65,1.34l1.35,0.74l5.29,1.1l1.36,-1.15l2.69,-0.94l2.71,0.42l1.54,-0.83l2.76,1.44l0.81,-0.15l-1.78,3.22l1.47,2.34l-0.79,0.88l-0.29,1.65l2.35,1.69l-2.18,6.19l0.66,1.69l1.31,1.29l3.83,1.11l2.36,1.6l1.37,0.26l2.23,2.04l1.69,-0.15l3.85,0.88l1.7,-0.74l2.73,0.0l0.67,0.88l0.02,1.9l-2.11,0.84l-0.48,-0.76l-5.19,-0.18l-3.29,1.87l-2.23,-1.16l-0.97,0.88l-0.08,0.81l-2.17,0.53l-0.62,0.93l0.99,1.69l0.63,-0.78l0.66,1.51l1.77,0.16l-1.27,0.1l-1.97,-0.43l-3.11,0.66l-1.23,1.94l1.73,1.71l-0.04,0.71l-1.09,-0.28l-0.77,0.86l-2.17,-1.77l1.32,-0.78l-0.64,-1.13l-0.92,0.07l-2.51,-2.37l-3.05,0.08l0.69,-0.84l-0.68,-2.19l2.36,0.14l1.21,-1.34l-0.16,-1.39l1.42,1.0l1.19,-0.85l-0.99,-0.83l0.13,-1.42l-1.25,-1.46l-2.48,-0.4l-2.59,0.46l-0.47,-0.37l0.6,-0.88l-1.25,-1.56l-2.81,1.58l-1.77,-4.22l-0.68,-0.6l-2.73,-0.25l-1.02,-1.42l-0.92,0.03l-0.33,0.63l-1.33,-0.43l-2.21,0.48l-1.19,1.37l-1.79,-1.49l-0.63,0.1l0.47,-0.97l-2.1,-2.07l0.43,-0.61l-0.35,-0.61l-2.5,-1.54l-2.65,1.01l-1.89,1.79l0.75,2.79l-1.52,0.47l-2.46,2.34l-0.28,1.62l0.52,2.27l-1.16,0.58l-2.74,-0.38l-2.61,0.75l-1.02,-0.57l-1.64,-3.87l-3.8,-1.92l-0.46,-1.08l0.98,-3.83l-2.03,-2.41l-0.27,-1.5l-2.36,-1.06l-2.2,-5.47l-1.51,-0.64l-2.76,1.28l-0.94,-0.73l-0.25,-1.07l0.72,-3.76l1.79,-4.65l1.46,-0.98l2.31,-3.58l1.2,-0.96l1.17,-0.41l0.97,0.99ZM296.07,410.1l0.02,-0.13l-0.65,-0.61l1.41,0.78l-0.79,-0.05ZM296.96,410.15l0.06,-0.01l0.13,-0.13l-0.11,0.16l-0.08,-0.02ZM284.1,399.72l0.02,-0.1l0.12,0.08l-0.07,0.06l-0.07,-0.03ZM279.5,394.13l0.26,0.06l0.19,0.31l-0.27,-0.08l-0.17,-0.29Z","name":"Argolida"},"32":{"path":"M549.55,595.0l0.17,0.07l-0.41,-0.23l0.19,0.16l0.04,0.0ZM549.78,595.1l0.05,-0.01l0.02,0.02l-0.03,0.03l-0.03,-0.04ZM482.85,592.96l2.65,-0.85l1.3,-1.07l2.3,0.17l1.39,-1.19l5.59,-1.41l2.88,1.13l5.21,-0.42l-0.34,1.21l-3.01,1.72l0.28,1.25l-0.7,1.96l0.91,1.17l0.47,2.02l-1.97,1.07l0.41,1.38l-0.5,0.58l0.58,0.63l-0.87,1.21l0.11,0.99l1.46,2.22l-0.28,0.91l0.56,0.57l2.4,-0.0l3.82,1.74l0.98,-0.4l2.29,-2.61l0.18,-1.19l0.41,-0.25l0.61,0.67l2.41,-1.71l0.47,-0.5l-0.27,-0.79l1.8,0.56l2.74,-0.35l0.94,-1.59l0.59,0.52l1.95,-0.32l2.43,-2.86l0.98,0.52l1.23,-0.49l0.89,0.89l1.16,0.17l2.3,-0.87l-0.77,1.36l0.66,0.8l1.86,0.75l2.23,-0.27l1.88,-1.12l0.42,-0.42l-0.33,-0.93l3.4,-2.6l-0.39,-0.95l1.25,-0.69l-0.35,-0.52l0.33,-0.14l0.98,0.81l0.54,-0.77l0.85,-0.02l-1.06,0.89l0.95,3.16l-0.69,1.86l0.74,1.22l2.37,1.29l0.84,-0.79l0.12,0.84l-3.0,1.31l-0.33,1.89l0.74,0.97l-0.33,1.81l-1.42,1.56l0.67,0.81l-1.33,1.23l-1.73,3.06l-0.94,0.01l-2.22,1.91l-2.42,-0.07l-3.2,1.88l-1.37,-0.24l0.13,-0.69l-1.08,-1.22l-1.8,-0.27l-0.94,0.99l-1.27,-0.81l-0.76,0.5l-3.99,-2.28l-1.21,0.68l-2.21,-0.21l-5.94,1.39l-3.64,1.69l-3.07,0.0l-1.82,-0.92l-1.09,0.51l-3.91,-0.91l-1.89,0.87l-5.41,-0.2l-3.88,1.69l-0.06,-5.02l-1.58,-2.83l-2.17,-0.63l0.15,-2.37l-1.18,-1.27l-5.93,-2.83l-1.13,-2.07l1.52,-3.25l-0.12,-1.49l0.97,-0.73l2.89,-0.17l2.4,-2.15l0.28,-2.28ZM544.88,594.27l0.45,0.01l-0.95,0.21l0.13,-0.12l0.37,-0.1ZM545.45,593.01l0.09,0.05l0.32,-0.05l-0.29,0.17l-0.12,-0.17ZM546.42,592.9l0.12,-0.12l0.04,0.04l-0.03,0.03l-0.13,0.05ZM545.59,591.89l0.15,-0.1l0.4,0.0l-0.15,0.12l-0.41,-0.02ZM546.29,591.73l0.37,-0.19l0.45,0.04l-0.54,0.42l-0.29,-0.27ZM502.47,595.99l0.28,-0.47l-0.35,-0.58l0.06,-0.12l0.14,-0.14l0.27,1.46l-0.41,-0.15ZM502.41,593.7l0.07,-0.31l0.82,0.43l-0.49,0.44l-0.39,-0.56ZM536.5,588.82l0.09,-0.62l0.67,-0.05l-0.35,0.47l-0.4,0.2ZM536.47,590.06l0.02,-0.01l0.1,0.02l-0.06,0.06l-0.07,-0.07ZM532.93,624.92l0.29,-0.78l1.51,0.65l-1.04,0.66l-0.77,-0.53ZM497.99,630.73l0.21,-0.25l0.32,0.01l1.44,0.42l-1.97,-0.17Z","name":"Lasithio"},"50":{"path":"M538.11,299.14l0.54,-0.22l0.93,0.82l0.65,-0.41l1.25,1.1l1.8,0.41l-1.73,0.7l-0.64,-0.77l-1.81,-0.38l-0.99,-1.25ZM545.24,302.33l0.09,-0.09l0.32,0.2l-0.22,0.22l-0.19,-0.33ZM510.29,299.18l-0.55,-0.95l1.71,-2.76l2.8,-0.82l3.72,0.1l5.31,-1.55l2.95,1.47l1.17,-0.36l1.59,2.95l0.73,0.58l0.92,-0.38l1.12,1.71l0.62,-0.8l0.61,0.54l0.49,-0.4l0.15,-1.44l1.47,1.1l0.08,0.94l-0.95,1.34l0.26,2.27l-1.73,0.29l-0.69,1.52l0.75,0.58l0.8,-0.3l-0.53,1.15l1.45,0.35l-1.6,3.44l-0.04,1.2l0.7,6.29l1.29,1.04l-0.48,0.71l0.5,0.93l-4.38,3.37l0.04,2.49l0.92,1.2l-1.18,1.85l-4.33,0.65l-1.78,2.36l-0.27,2.19l-1.16,-0.38l-0.55,-0.84l-1.62,-0.27l-1.47,-1.41l0.29,-0.67l-0.4,-0.4l-1.92,0.08l0.28,-0.82l-1.26,-0.49l-0.15,-1.23l-1.59,-0.08l-0.67,-1.95l-1.22,0.28l0.68,-2.09l3.11,-2.23l0.87,0.81l0.51,-0.4l-0.18,-0.58l0.5,0.45l0.5,-0.46l0.51,0.46l0.96,-0.2l1.06,-1.75l-0.4,-0.69l0.31,-0.84l1.84,-1.37l0.07,-0.76l-0.75,-2.73l0.4,-0.99l-0.47,-0.45l-0.48,0.32l-1.36,-1.36l0.0,-1.01l-0.69,-0.4l0.18,-1.84l-1.07,-1.56l-1.71,-1.29l-2.69,-0.41l-1.88,-1.53l-2.04,-3.78ZM532.37,298.24l-0.01,0.01l-0.02,-0.07l0.04,0.04l-0.01,0.01ZM487.0,294.52l-0.64,-0.91l1.18,0.38l1.75,-1.0l0.53,0.37l0.54,-0.39l2.07,1.41l-0.77,4.63l-1.54,-0.05l-1.28,-0.94l-0.54,0.43l0.61,-1.81l-1.91,-2.11ZM483.59,298.89l0.72,-0.92l0.74,0.18l-0.69,1.11l-0.81,0.03l0.04,-0.39Z","name":"Chios"}},"height": 637.163792480661,"width": 700.0});
Index: public/vendors/vmap/maps/jquery.vmap.indonesia.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.indonesia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.indonesia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+/*
+* Map of Indonesia
+* Author : Anggi Prima Nadvi Lubis <https://www.github.com/aa-lubis>
+*/
+jQuery.fn.vectorMap('addMap', 'indonesia_id', {"width":1600,"height":600,"paths":{"path01":{"name":"Aceh","path":"m33.03 8.63c-0.38 -0.02 -0.81 0.09 -1.33 0.30 -1.39 0.57 -1.52 1.14 -0.60 2.47 0.95 1.36 2.00 1.44 3.37 0.26L35.48 10.79 34.73 9.77C34.17 9.01 33.67 8.65 33.03 8.63Zm-9.17 4.79c-0.55 0.10 -0.60 0.99 -0.06 2.01 0.59 1.10 2.50 0.79 2.50 -0.41 0.00 -0.68 -0.92 -1.35 -2.18 -1.60 -0.10 -0.02 -0.19 -0.02 -0.27 -0.01zm13.25 3.11c-0.66 -0.02 -1.45 0.31 -2.99 1.10 -1.23 0.63 -2.80 1.24 -3.50 1.36l-1.26 0.22 0.07 1.97c0.04 1.08 0.07 3.26 0.08 4.85 0.01 2.14 0.20 3.21 0.72 4.18 0.38 0.71 0.81 1.93 0.96 2.70 0.14 0.77 0.70 2.04 1.24 2.84 0.54 0.79 1.58 3.04 2.31 5.00 1.73 4.63 3.45 6.73 11.37 13.88 1.64 1.48 4.17 4.08 5.62 5.76 1.45 1.69 3.20 3.37 3.89 3.74 0.69 0.37 1.66 1.21 2.15 1.85 0.54 0.70 1.36 1.27 2.06 1.43 1.91 0.42 2.67 1.14 5.46 5.15 1.46 2.10 3.49 4.63 4.51 5.62l1.85 1.80h4.03 0.00c3.84 0.00 4.12 0.05 6.01 1.11 1.36 0.77 2.24 1.58 2.81 2.60 0.46 0.82 1.32 1.77 1.92 2.12 0.60 0.35 1.42 1.28 1.82 2.07 0.40 0.79 1.77 3.00 3.04 4.90 1.84 2.74 2.59 3.57 3.65 3.98 1.24 0.49 1.38 0.71 2.13 3.25 0.69 2.35 1.09 3.03 2.88 4.88 1.72 1.79 2.44 2.27 4.23 2.79 1.19 0.35 2.43 0.93 2.76 1.30 0.89 0.99 1.42 3.85 1.71 9.33 0.25 4.77 0.29 4.94 1.42 6.47 1.33 1.81 3.48 3.60 5.12 4.28 0.40 0.16 0.81 0.03 1.18 0.05l1.23 -0.82c0.00 0.00 1.13 -8.85 1.13 -11.57 0.00 -1.36 0.68 -3.23 1.36 -5.02 0.68 -1.79 1.36 -3.49 1.36 -4.51 0.00 -0.51 -0.20 -1.02 -0.51 -1.55 -0.32 -0.53 -0.75 -1.08 -1.22 -1.68 -0.94 -1.19 -2.01 -2.55 -2.58 -4.26 -0.57 -1.70 -0.68 -3.63 -0.71 -5.39 -0.03 -1.76 0.03 -3.35 -0.20 -4.37 -0.45 -2.04 -2.27 -6.13 -2.95 -7.49 -0.34 -0.68 -0.40 -1.82 -0.17 -2.92 0.11 -0.55 0.30 -1.10 0.55 -1.58 0.26 -0.48 0.58 -0.89 0.98 -1.17 0.79 -0.57 1.99 -1.30 2.98 -2.10 0.50 -0.40 0.94 -0.81 1.27 -1.22 0.32 -0.41 0.52 -0.82 0.52 -1.22 0.00 -0.79 0.23 -2.61 0.71 -4.40 0.24 -0.89 0.55 -1.78 0.92 -2.53 0.37 -0.75 0.81 -1.36 1.32 -1.70 1.50 -1.00 5.36 -2.96 8.00 -4.33 0.15 -0.95 0.06 -1.40 -0.87 -2.57 -1.43 -1.80 -3.78 -3.35 -6.29 -4.15l-1.85 -0.59 -0.62 -3.27c-0.92 -4.84 -1.72 -6.48 -3.92 -7.98 -3.26 -2.23 -7.15 -5.70 -8.86 -7.89 -0.92 -1.18 -2.16 -2.43 -2.78 -2.79 -1.04 -0.61 -1.20 -0.61 -2.49 -0.07 -3.25 1.38 -6.49 2.42 -7.45 2.40 -0.67 -0.02 -1.50 -0.47 -2.34 -1.27 -0.71 -0.68 -1.62 -1.40 -2.02 -1.60 -0.40 -0.20 -2.82 -0.41 -5.39 -0.46 -4.31 -0.09 -4.88 -0.02 -7.30 0.87 -2.50 0.92 -2.84 0.95 -7.01 0.73 -3.15 -0.17 -4.74 -0.42 -5.65 -0.88 -0.69 -0.36 -2.26 -0.72 -3.48 -0.82 -3.20 -0.24 -5.38 -1.57 -8.89 -5.38C51.54 21.83 49.59 20.07 48.82 19.66 46.11 18.24 43.40 17.44 41.24 17.41 40.05 17.39 38.73 17.18 38.29 16.93 37.86 16.68 37.51 16.54 37.12 16.53Zm12.09 89.26c-0.82 0.07 -1.22 0.57 -1.44 1.65 -0.15 0.74 -0.52 1.14 -1.31 1.41 -0.61 0.21 -1.20 0.64 -1.32 0.94 -0.33 0.86 2.57 5.07 3.86 5.60 0.59 0.24 1.71 0.91 2.49 1.48 1.01 0.73 1.85 1.03 2.88 1.03 1.66 0.00 3.27 0.71 4.84 2.14 0.59 0.54 2.10 1.60 3.35 2.34 1.25 0.75 2.37 1.60 2.48 1.89 0.11 0.30 0.71 0.75 1.32 1.02 1.34 0.58 2.72 0.64 3.97 0.16 0.71 -0.27 0.92 -0.60 0.92 -1.45 0.00 -1.19 -1.36 -2.87 -2.32 -2.87 -0.08 0.00 -0.17 -0.04 -0.29 -0.11 -0.33 -0.21 -0.79 -0.69 -1.16 -1.25 -0.49 -0.75 -1.43 -1.66 -2.07 -2.04 -0.65 -0.37 -1.72 -1.15 -2.37 -1.71 -0.66 -0.57 -1.67 -1.13 -2.25 -1.25 -0.87 -0.17 -1.05 -0.39 -1.05 -1.25 0.00 -0.95 -0.24 -1.15 -2.61 -2.23 -3.04 -1.39 -4.68 -2.67 -5.29 -4.14 -0.33 -0.79 -0.75 -1.11 -1.69 -1.29 -0.37 -0.07 -0.69 -0.10 -0.96 -0.07zm48.17 23.20 -2.18 0.25c-2.51 0.28 -3.30 0.72 -2.68 1.48 0.22 0.27 0.61 0.49 0.85 0.49 0.25 0.00 1.37 0.89 2.51 1.98 1.39 1.33 2.36 1.98 2.97 1.98 0.88 0.00 0.90 -0.05 0.66 -1.71 -0.14 -0.94 -0.67 -2.33 -1.19 -3.09l-0.94 -1.37zm-5.02 5.25c-0.65 -0.04 -1.38 0.53 -1.10 0.98 0.28 0.45 1.67 0.23 1.84 -0.29 0.07 -0.22 -0.14 -0.51 -0.47 -0.63 -0.09 -0.03 -0.18 -0.05 -0.27 -0.06z"},"path02":{"name":"Sumatera Utara","path":"m130.36 59.29c-2.64 1.37 -6.50 3.33 -8.00 4.33 -0.51 0.34 -0.95 0.95 -1.32 1.70 -0.37 0.75 -0.68 1.64 -0.92 2.53 -0.48 1.79 -0.71 3.60 -0.71 4.40 0.00 0.40 -0.20 0.81 -0.52 1.22 -0.32 0.41 -0.77 0.82 -1.27 1.22 -0.99 0.79 -2.18 1.53 -2.98 2.10 -0.40 0.28 -0.72 0.69 -0.98 1.17 -0.26 0.48 -0.44 1.02 -0.55 1.58 -0.23 1.11 -0.17 2.24 0.17 2.92 0.68 1.36 2.50 5.45 2.95 7.49 0.23 1.02 0.17 2.61 0.20 4.37 0.03 1.76 0.14 3.69 0.71 5.39 0.57 1.70 1.64 3.07 2.58 4.26 0.47 0.60 0.90 1.15 1.22 1.68 0.32 0.53 0.51 1.04 0.51 1.55 0.00 1.02 -0.68 2.72 -1.36 4.51 -0.68 1.79 -1.36 3.66 -1.36 5.02 0.00 2.72 -1.13 11.57 -1.13 11.57l-1.23 0.82c0.41 0.03 0.78 0.20 1.30 0.06 1.20 -0.32 1.62 -0.23 3.72 0.81 2.85 1.41 5.13 2.95 6.35 4.29 1.37 1.50 3.97 3.04 5.14 3.04 2.18 0.00 3.85 1.33 9.35 7.47 1.11 1.24 1.60 1.52 2.62 1.52 2.41 0.00 2.63 3.01 0.33 4.37 -1.42 0.84 -1.53 1.29 -0.57 2.51 0.98 1.25 3.64 6.84 3.65 7.68 0.01 0.40 0.43 1.69 0.93 2.88 1.20 2.79 2.23 6.29 2.64 8.94 0.19 1.19 0.63 2.45 1.02 2.88 0.96 1.05 1.51 2.19 1.51 3.13 0.00 0.43 0.31 1.30 0.69 1.91 0.85 1.39 2.57 8.26 2.82 11.28 0.08 0.93 0.27 1.47 0.44 1.92l1.96 -2.66c0.00 0.00 0.79 -1.42 1.96 -2.95 0.58 -0.77 1.25 -1.56 1.97 -2.22 0.71 -0.66 1.47 -1.18 2.20 -1.41 0.74 -0.23 1.90 -0.06 3.24 0.27 1.34 0.33 2.86 0.81 4.30 1.21 1.45 0.40 2.82 0.71 3.88 0.70 0.53 -0.01 0.98 -0.10 1.31 -0.30 0.34 -0.20 0.57 -0.51 0.65 -0.97 0.17 -0.91 0.03 -1.76 -0.29 -2.56 -0.32 -0.80 -0.82 -1.56 -1.36 -2.29 -0.54 -0.72 -1.12 -1.41 -1.61 -2.07 -0.49 -0.66 -0.89 -1.30 -1.06 -1.92 -0.17 -0.62 -0.16 -1.25 0.01 -1.81 0.16 -0.56 0.48 -1.05 0.90 -1.40 0.43 -0.35 0.96 -0.57 1.58 -0.59 0.62 -0.02 1.31 0.17 2.05 0.62 1.47 0.91 3.86 1.82 5.87 2.50 2.01 0.68 3.66 1.14 3.66 1.14 0.00 0.00 0.91 -9.53 0.91 -11.57 0.00 -0.51 -0.33 -1.06 -0.80 -1.65 -0.47 -0.59 -1.09 -1.20 -1.67 -1.84 -0.58 -0.64 -1.13 -1.30 -1.46 -1.97 -0.33 -0.67 -0.44 -1.35 -0.16 -2.03 0.28 -0.68 0.80 -1.31 1.44 -1.88 0.65 -0.57 1.43 -1.10 2.27 -1.58 1.67 -0.96 3.55 -1.76 4.91 -2.44 1.36 -0.68 2.50 -1.31 3.06 -2.16 0.28 -0.43 0.43 -0.91 0.38 -1.48 -0.04 -0.57 -0.27 -1.24 -0.72 -2.03 -0.91 -1.59 -1.93 -2.84 -2.78 -3.97 -0.85 -1.13 -1.53 -2.16 -1.76 -3.29 -0.23 -1.13 -0.06 -1.82 0.20 -2.55 0.26 -0.74 0.60 -1.53 0.71 -2.89 0.11 -1.36 -0.28 -2.78 -0.71 -3.86 -0.43 -1.08 -0.88 -1.81 -0.88 -1.81l0.88 -14.34c-0.06 -0.04 -0.20 -0.30 -0.25 -0.32 -0.86 -0.31 -2.54 0.56 -2.97 1.53 -0.49 1.12 -0.90 1.01 -0.90 -0.25 0.00 -1.17 -0.31 -1.46 -1.95 -1.81 -0.84 -0.18 -1.08 -0.41 -1.00 -0.93 0.44 -2.70 0.22 -4.39 -0.77 -5.82 -0.56 -0.81 -1.50 -1.67 -2.08 -1.91 -0.59 -0.24 -1.24 -0.78 -1.46 -1.20 -0.21 -0.42 -1.20 -1.83 -2.18 -3.14 -1.71 -2.27 -1.90 -2.41 -4.18 -3.03 -2.12 -0.57 -2.69 -0.94 -5.09 -3.24 -1.48 -1.43 -3.26 -2.88 -3.96 -3.23 -0.69 -0.35 -2.29 -1.58 -3.56 -2.74 -2.70 -2.47 -6.97 -4.89 -11.37 -6.44 -4.99 -1.76 -6.12 -2.69 -8.09 -6.60 -0.30 -0.60 -0.99 -1.20 -1.61 -1.40 -0.59 -0.19 -1.77 -0.96 -2.61 -1.69 -1.92 -1.68 -6.18 -3.94 -7.43 -3.94 -2.05 0.00 -2.65 -2.84 -1.60 -7.64 0.07 -0.31 0.02 -0.41 0.06 -0.63zm-29.56 93.34c-0.64 -0.01 -1.36 0.48 -3.31 1.78 -1.90 1.27 -2.02 1.30 -4.38 1.08 -2.22 -0.21 -2.43 -0.17 -2.43 0.45 0.00 0.37 0.42 1.07 0.93 1.55 1.31 1.22 5.58 6.63 6.94 8.78 0.62 0.99 1.30 2.41 1.50 3.17 0.30 1.13 0.64 1.49 1.88 2.03 2.29 1.00 5.85 4.42 6.48 6.23 0.29 0.84 0.80 2.28 1.13 3.21 0.40 1.14 0.97 1.92 1.74 2.40 0.63 0.39 1.82 0.72 2.65 0.74 2.63 0.05 3.55 -1.55 3.89 -6.81 0.13 -2.07 0.49 -4.44 0.78 -5.25 0.48 -1.31 0.48 -1.62 -0.02 -2.80 -0.38 -0.91 -0.90 -1.45 -1.65 -1.71 -0.62 -0.21 -1.52 -1.02 -2.08 -1.85 -0.61 -0.90 -1.39 -1.58 -2.03 -1.75 -1.34 -0.36 -3.31 -2.24 -4.25 -4.08 -0.98 -1.90 -4.79 -5.84 -6.49 -6.71 -0.56 -0.29 -0.92 -0.47 -1.30 -0.47zm32.12 49.43c-0.66 0.00 -1.30 0.16 -1.42 0.36 -0.31 0.50 1.49 4.94 2.59 6.40 0.82 1.08 0.85 1.25 0.34 1.81 -1.68 1.85 -3.31 7.80 -2.62 9.58 0.18 0.48 0.72 0.56 3.02 0.47l2.79 -0.11 0.10 -2.97c0.08 -2.23 0.23 -2.97 0.60 -2.97 0.27 0.00 0.68 -0.56 0.91 -1.25 0.38 -1.14 0.31 -1.44 -0.86 -3.52 -0.70 -1.25 -1.51 -2.96 -1.81 -3.79 -0.89 -2.52 -2.25 -4.02 -3.64 -4.02z"},"path03":{"name":"Sumatera Barat","path":"m177.95 172.83c-0.62 0.02 -1.15 0.24 -1.58 0.59 -0.43 0.35 -0.74 0.84 -0.90 1.40 -0.16 0.56 -0.18 1.18 -0.01 1.81 0.17 0.62 0.57 1.26 1.06 1.92 0.49 0.66 1.07 1.35 1.61 2.07 0.54 0.72 1.04 1.48 1.36 2.29 0.32 0.80 0.46 1.65 0.29 2.56 -0.09 0.45 -0.31 0.77 -0.65 0.97 -0.34 0.20 -0.79 0.29 -1.31 0.30 -1.06 0.01 -2.43 -0.30 -3.88 -0.70 -1.45 -0.40 -2.96 -0.88 -4.30 -1.21 -1.34 -0.33 -2.50 -0.50 -3.24 -0.27 -0.74 0.23 -1.49 0.75 -2.20 1.41 -0.71 0.66 -1.39 1.45 -1.97 2.22 -1.16 1.53 -1.96 2.95 -1.96 2.95l-1.96 2.66c0.06 0.15 0.09 0.58 0.15 0.63 0.69 0.52 3.30 1.14 4.78 1.14 1.11 0.00 1.64 0.24 2.45 1.08 0.57 0.59 1.39 1.08 1.82 1.08 2.41 0.00 6.98 2.70 9.09 5.36 1.26 1.59 1.41 1.98 1.24 3.21 -0.15 1.12 0.00 1.69 0.75 2.79 0.52 0.76 0.94 1.82 0.94 2.36 0.00 0.78 0.58 1.46 2.95 3.42 3.95 3.28 4.73 4.12 6.66 7.10 0.91 1.40 2.74 3.68 4.07 5.06 2.66 2.77 3.38 3.94 3.95 6.46 0.21 0.92 0.74 2.17 1.17 2.76 0.77 1.04 0.78 1.11 0.17 2.16 -0.81 1.41 -0.79 1.85 0.14 2.68 0.42 0.38 1.38 1.51 2.13 2.52 0.75 1.01 1.86 2.04 2.47 2.29 0.94 0.39 1.11 0.65 1.11 1.70 0.00 1.05 1.86 5.84 3.36 8.63 0.81 1.51 2.59 4.15 4.11 6.08 2.64 3.36 3.26 5.77 2.25 8.77 -0.40 1.18 -0.71 2.44 -0.69 2.79 0.06 1.26 3.14 6.08 5.91 9.83 1.07 -1.04 2.13 -2.13 3.16 -3.16 0.96 -0.96 1.92 -1.66 2.80 -2.16 0.88 -0.50 1.70 -0.81 2.39 -0.99 1.39 -0.37 2.30 -0.26 2.30 -0.26 0.00 0.00 -0.57 -0.74 -1.19 -2.01 -0.62 -1.28 -1.30 -3.09 -1.53 -5.25 -0.11 -1.08 0.07 -2.45 0.45 -4.00 0.38 -1.54 0.94 -3.25 1.59 -4.99 1.30 -3.49 2.95 -7.12 4.09 -9.84 0.57 -1.36 1.39 -2.82 2.30 -4.25 0.91 -1.43 1.92 -2.81 2.86 -4.03 1.87 -2.44 3.46 -4.20 3.46 -4.20 0.00 0.00 -2.04 -2.72 -3.86 -4.31 -0.91 -0.79 -1.93 -1.08 -3.01 -1.22 -1.08 -0.14 -2.21 -0.14 -3.35 -0.37 -0.57 -0.11 -1.25 -0.52 -1.95 -1.08 -0.70 -0.55 -1.42 -1.25 -2.08 -1.93 -1.30 -1.36 -2.33 -2.67 -2.33 -2.67 0.00 0.00 -11.80 -13.16 -14.52 -16.34 -0.68 -0.79 -0.99 -1.87 -1.08 -3.08 -0.09 -1.21 0.04 -2.54 0.23 -3.84 0.40 -2.61 1.08 -5.11 0.85 -6.24 -0.11 -0.57 -0.58 -1.28 -1.26 -2.05 -0.68 -0.78 -1.56 -1.62 -2.51 -2.46 -1.90 -1.67 -4.06 -3.32 -5.31 -4.34 -0.62 -0.51 -1.37 -0.78 -2.21 -0.92 -0.83 -0.14 -1.75 -0.15 -2.70 -0.13 -0.95 0.01 -1.94 0.05 -2.91 -0.00 -0.98 -0.05 -1.94 -0.20 -2.85 -0.54 -0.91 -0.34 -1.46 -0.97 -1.78 -1.75 -0.32 -0.78 -0.40 -1.73 -0.37 -2.70 0.06 -1.96 0.57 -4.06 0.57 -5.30 0.00 -0.05 -0.07 -0.19 -0.07 -0.25 -0.06 -0.02 -1.62 -0.45 -3.59 -1.11 -2.01 -0.68 -4.40 -1.59 -5.87 -2.50 -0.74 -0.45 -1.43 -0.64 -2.05 -0.62zm-29.13 59.60c-0.41 0.02 -0.82 0.14 -1.44 0.39 -0.88 0.35 -1.90 0.49 -2.60 0.36 -1.01 -0.19 -1.28 -0.06 -2.06 0.96 -0.49 0.65 -1.00 1.67 -1.13 2.26 -0.13 0.59 -0.56 1.91 -0.95 2.92 -0.97 2.51 -0.56 3.89 2.48 8.33 1.31 1.92 2.76 4.04 3.22 4.71 0.46 0.67 0.83 1.58 0.83 2.02 0.00 0.44 0.32 1.21 0.72 1.72 0.66 0.84 7.03 5.29 8.27 5.77 0.77 0.30 2.52 -0.04 3.49 -0.67 0.46 -0.30 1.23 -1.17 1.71 -1.94 0.49 -0.77 1.05 -1.50 1.26 -1.63 0.66 -0.41 0.41 -2.20 -0.40 -2.92 -1.65 -1.46 -2.83 -3.47 -2.83 -4.82 0.00 -0.92 -0.35 -1.81 -1.11 -2.87 -0.61 -0.85 -1.29 -2.04 -1.51 -2.66 -0.35 -1.01 -1.48 -2.95 -3.90 -6.70 -0.45 -0.69 -0.90 -1.99 -1.01 -2.88 -0.19 -1.50 -0.30 -1.65 -1.62 -2.08 -0.60 -0.20 -1.01 -0.29 -1.42 -0.27zm24.94 35.88c-0.18 -0.01 -0.36 0.02 -0.58 0.08 -1.71 0.43 -1.92 0.82 -1.92 3.61v0.00 2.60l1.71 1.60c1.51 1.41 2.62 2.05 7.10 4.05 0.75 0.33 1.22 0.37 1.54 0.11 0.62 -0.50 0.23 -1.57 -1.19 -3.32 -1.25 -1.54 -3.04 -4.70 -3.04 -5.37 0.00 -0.23 -0.71 -1.11 -1.59 -1.97 -1.03 -1.01 -1.49 -1.36 -2.02 -1.38zm12.18 15.74c-0.54 0.04 -0.87 0.56 -0.96 1.56 -0.06 0.76 0.08 1.89 0.31 2.52 0.23 0.62 0.54 2.38 0.69 3.91 0.15 1.53 0.49 3.04 0.76 3.36 1.23 1.49 5.62 -0.75 6.46 -3.29 0.51 -1.53 0.06 -2.37 -2.22 -4.17 -0.84 -0.66 -2.12 -1.82 -2.86 -2.58 -0.90 -0.92 -1.64 -1.36 -2.18 -1.32zm8.91 9.71c-0.19 0.00 -0.90 0.37 -1.57 0.81l-1.22 0.81 0.23 2.70c0.28 3.20 1.33 5.31 3.22 6.42 1.10 0.65 1.27 0.93 1.27 2.13 0.00 1.44 0.91 3.01 2.54 4.36 0.48 0.40 1.24 0.74 1.69 0.74 1.10 0.02 1.07 -1.18 -0.08 -3.05 -1.23 -1.99 -1.18 -3.00 0.16 -3.47 1.22 -0.42 1.61 -1.30 1.27 -2.83 -0.23 -1.07 -6.82 -8.63 -7.52 -8.63z"},"path04":{"name":"Riau","path":"m193.35 113.72 -0.88 14.34c0.00 0.00 0.45 0.74 0.88 1.81 0.43 1.08 0.82 2.50 0.71 3.86 -0.11 1.36 -0.45 2.15 -0.71 2.89 -0.26 0.74 -0.42 1.42 -0.20 2.55 0.23 1.13 0.91 2.16 1.76 3.29 0.85 1.13 1.87 2.38 2.78 3.97 0.45 0.79 0.68 1.46 0.72 2.03 0.04 0.57 -0.10 1.06 -0.38 1.48 -0.57 0.85 -1.70 1.48 -3.06 2.16 -1.36 0.68 -3.23 1.48 -4.91 2.44 -0.84 0.48 -1.62 1.01 -2.27 1.58 -0.65 0.57 -1.16 1.20 -1.44 1.88 -0.28 0.68 -0.17 1.36 0.16 2.03 0.33 0.67 0.88 1.33 1.46 1.97 0.58 0.64 1.20 1.26 1.67 1.84 0.47 0.59 0.80 1.14 0.80 1.65 0.00 2.04 -0.91 11.57 -0.91 11.57 0.00 0.00 -0.07 -0.02 -0.07 -0.02 0.00 0.05 0.07 0.20 0.07 0.25 0.00 1.25 -0.51 3.35 -0.57 5.30 -0.03 0.98 0.06 1.92 0.37 2.70 0.32 0.78 0.87 1.41 1.78 1.75 0.91 0.34 1.87 0.48 2.85 0.54 0.98 0.05 1.96 0.02 2.91 0.00 0.95 -0.01 1.86 -0.01 2.70 0.13 0.83 0.14 1.58 0.41 2.21 0.92 1.25 1.02 3.41 2.67 5.31 4.34 0.95 0.84 1.84 1.68 2.51 2.46 0.68 0.78 1.14 1.49 1.26 2.05 0.23 1.13 -0.45 3.63 -0.85 6.24 -0.20 1.30 -0.33 2.64 -0.23 3.84 0.09 1.21 0.40 2.28 1.08 3.08 2.72 3.18 14.52 16.34 14.52 16.34 0.00 0.00 1.02 1.31 2.33 2.67 0.65 0.68 1.37 1.38 2.08 1.93 0.70 0.55 1.38 0.96 1.95 1.08 1.13 0.23 2.27 0.23 3.35 0.37 1.08 0.14 2.10 0.43 3.01 1.22 1.62 1.42 3.07 3.36 3.44 3.84 0.67 -0.87 1.64 -2.33 2.04 -2.74 1.12 -1.12 2.41 -1.77 3.89 -2.29 1.48 -0.52 3.17 -0.92 5.09 -1.56 0.96 -0.32 1.95 -0.30 2.90 -0.07 0.96 0.23 1.89 0.66 2.75 1.16 1.72 1.00 3.17 2.29 3.97 2.77 0.80 0.48 2.17 1.20 3.57 1.64 0.70 0.22 1.41 0.37 2.07 0.39 0.66 0.02 1.26 -0.11 1.74 -0.43 0.48 -0.32 0.76 -0.84 0.95 -1.46 0.19 -0.62 0.28 -1.33 0.38 -2.03 0.10 -0.70 0.21 -1.39 0.44 -1.97 0.23 -0.58 0.57 -1.04 1.13 -1.28 1.12 -0.48 2.49 -1.36 4.13 -2.05 0.82 -0.34 1.72 -0.63 2.68 -0.80 0.97 -0.17 2.01 -0.20 3.14 -0.04 2.25 0.32 6.82 0.32 10.83 0.24 3.33 -0.07 5.29 -0.16 6.19 -0.20 -0.79 -0.75 -1.66 -1.56 -1.85 -1.62 -0.34 -0.11 -0.26 -0.64 0.30 -2.13 0.44 -1.15 0.68 -2.43 0.58 -3.06 -0.17 -1.07 -0.15 -1.08 1.22 -0.95 2.58 0.25 5.84 -2.40 4.20 -3.41 -0.29 -0.18 -0.08 -0.37 0.63 -0.54 2.48 -0.60 5.04 -1.67 5.13 -2.14 0.05 -0.28 -0.22 -1.02 -0.61 -1.65 -0.53 -0.86 -1.18 -1.29 -2.59 -1.71 -2.58 -0.77 -3.57 -0.70 -4.96 0.32 -1.26 0.93 -1.18 0.93 -3.20 -0.38 -0.06 -0.04 0.88 -0.75 2.10 -1.58 1.22 -0.83 2.54 -2.06 2.94 -2.73 0.46 -0.77 1.00 -1.23 1.49 -1.24 0.88 -0.02 6.22 -1.53 6.55 -1.86 0.12 -0.12 -0.21 -2.13 -0.74 -4.47 -0.27 -1.22 -0.46 -1.80 -0.67 -2.50 -0.31 -0.66 -0.60 -1.51 -0.91 -2.07 -0.05 -0.08 -0.07 -0.16 -0.11 -0.24 -0.14 -0.18 -0.22 -0.44 -0.39 -0.62 -0.87 -0.91 -1.42 -1.17 -2.47 -1.17 -1.03 0.00 -1.40 -0.17 -1.57 -0.72 -0.60 -1.90 -4.77 -5.51 -7.07 -6.13 -1.29 -0.35 -1.66 -0.29 -3.30 0.52 -1.02 0.50 -2.73 1.58 -3.80 2.40 -1.07 0.82 -2.65 1.79 -3.51 2.15 -0.86 0.37 -2.15 1.07 -2.88 1.57 -1.24 0.84 -1.92 0.92 -1.92 0.21 0.00 -0.17 0.85 -0.81 1.89 -1.42 2.40 -1.40 3.87 -2.71 3.87 -3.44 0.00 -0.99 -1.10 -2.78 -3.38 -5.49 -2.69 -3.21 -3.22 -3.39 -10.18 -3.46 -2.81 -0.03 -5.22 -0.17 -5.36 -0.31 -0.29 -0.29 0.61 -0.32 7.40 -0.27 4.22 0.04 4.95 0.13 5.57 0.72 1.48 1.39 4.24 1.91 4.64 0.87 0.40 -1.03 0.23 -2.42 -0.38 -3.09 -0.74 -0.82 -0.43 -1.21 0.50 -0.63 0.97 0.60 3.22 0.13 3.71 -0.78 0.54 -1.01 -0.52 -2.59 -3.76 -5.61 -2.94 -2.74 -7.01 -4.79 -9.52 -4.79 -1.29 0.00 -1.54 0.17 -2.74 1.80 -0.73 0.99 -1.44 1.80 -1.59 1.80 -0.15 0.00 -0.66 -0.42 -1.14 -0.93 -1.40 -1.50 -2.05 -1.72 -3.09 -1.04 -1.18 0.77 -1.38 0.52 -0.93 -1.23 0.28 -1.09 0.25 -1.66 -0.13 -2.39 -0.57 -1.10 -0.64 -1.73 -0.17 -1.43 0.18 0.11 0.58 0.10 0.90 -0.02 0.83 -0.32 0.79 -4.91 -0.06 -6.61 -0.81 -1.62 -1.81 -2.07 -6.90 -3.08 -2.30 -0.46 -4.63 -1.00 -5.19 -1.21 -1.50 -0.57 -2.93 -0.46 -3.87 0.30l-0.84 0.68 0.99 1.50c1.29 1.95 3.75 3.49 6.09 3.81l1.85 0.25 -0.94 0.68c-1.23 0.90 -1.63 3.05 -0.85 4.58 0.31 0.60 0.56 1.55 0.55 2.10 -0.02 0.94 -0.07 0.90 -0.88 -0.61 -0.48 -0.89 -0.87 -2.21 -0.88 -2.94 -0.02 -1.64 -1.11 -3.01 -3.91 -4.87 -1.14 -0.76 -3.57 -2.67 -5.40 -4.24 -4.01 -3.45 -4.99 -3.86 -8.04 -3.37 -2.19 0.35 -2.29 0.33 -4.93 -1.01 -2.64 -1.34 -2.72 -1.42 -3.51 -3.53 -0.44 -1.19 -0.82 -2.76 -0.83 -3.50 -0.04 -3.14 -1.18 -4.56 -6.75 -8.42 -1.44 -1.00 -1.93 -1.58 -2.10 -2.49 -0.12 -0.65 -0.41 -1.26 -0.65 -1.35 -0.90 -0.35 -6.33 -0.23 -7.17 0.15 -0.49 0.22 -1.16 1.00 -1.49 1.74 -0.84 1.87 -0.43 3.65 1.30 5.65 1.63 1.88 1.97 3.34 0.38 1.64 -1.49 -1.59 -5.44 -4.03 -6.52 -4.03 -1.08 0.00 -1.91 -0.51 -4.77 -2.96 -2.53 -2.16 -3.26 -3.32 -4.55 -7.21 -1.02 -3.05 -3.73 -7.61 -4.91 -8.39zm46.60 18.92c-0.24 0.00 -0.94 0.36 -1.55 0.79 -0.70 0.50 -1.55 0.76 -2.30 0.71 -0.65 -0.04 -1.83 0.25 -2.62 0.65 -1.87 0.95 -2.17 2.34 -1.29 6.05 0.72 3.04 2.23 5.10 4.23 5.74 1.13 0.36 3.23 0.25 4.11 -0.22 0.23 -0.12 1.00 -0.75 1.71 -1.40 1.01 -0.92 1.29 -1.45 1.29 -2.43 0.00 -0.69 0.32 -1.86 0.72 -2.59 0.40 -0.74 0.72 -1.67 0.72 -2.08 0.00 -1.56 -3.52 -5.20 -5.02 -5.20zm56.38 33.88c-1.30 -0.00 -2.00 1.45 -0.65 2.81 0.85 0.85 0.68 0.82 2.12 0.32 1.41 -0.49 1.40 -1.52 -0.03 -2.58 -0.51 -0.38 -1.01 -0.55 -1.45 -0.55zm0.54 7.85c-0.45 0.01 -0.84 0.14 -1.11 0.42 -1.05 1.05 0.19 4.81 1.86 5.62 1.56 0.76 2.64 0.50 3.46 -0.84l0.78 -1.26 -0.77 -1.24c-1.01 -1.63 -2.88 -2.73 -4.22 -2.70zm4.21 1.07c-0.20 0.00 -0.36 0.16 -0.36 0.36 0.00 0.20 0.16 0.36 0.36 0.36 0.20 0.00 0.36 -0.16 0.36 -0.36 0.00 -0.20 -0.16 -0.36 -0.36 -0.36zm-9.21 3.95c-0.44 -0.02 -0.93 0.14 -1.55 0.45 -1.58 0.81 -2.20 4.17 -1.04 5.57 0.90 1.08 3.97 -0.04 5.19 -1.91 0.43 -0.66 0.36 -0.93 -0.58 -2.43 -0.71 -1.13 -1.29 -1.66 -2.02 -1.69z"},"path05":{"name":"Jambi","path":"m250.32 295.12c0.22 -0.15 0.19 -0.13 0.42 -0.29 2.72 -1.84 5.96 -3.94 8.00 -4.96 2.04 -1.02 3.74 -1.99 5.39 -2.84 1.65 -0.85 3.23 -1.59 5.05 -2.16 1.82 -0.57 2.90 -1.02 3.52 -1.62 0.31 -0.30 0.51 -0.63 0.63 -1.03 0.12 -0.40 0.16 -0.87 0.16 -1.44 0.00 -1.13 0.17 -1.82 0.68 -2.21 0.51 -0.40 1.36 -0.51 2.72 -0.51 1.36 0.00 2.67 -0.28 3.66 -0.68 0.99 -0.40 1.67 -0.91 1.79 -1.36 0.11 -0.45 0.97 -1.25 1.82 -1.59 0.43 -0.17 0.85 -0.23 1.18 -0.07 0.33 0.16 0.57 0.53 0.63 1.21 0.11 1.36 0.34 2.84 0.74 3.94 0.20 0.55 0.44 1.01 0.73 1.32 0.29 0.31 0.63 0.46 1.03 0.41 0.79 -0.11 1.93 -0.68 2.98 -1.42 1.05 -0.74 2.01 -1.65 2.47 -2.44 0.45 -0.79 0.68 -2.04 0.91 -3.23 0.23 -1.19 0.45 -2.33 0.91 -2.89 0.45 -0.57 2.67 -2.10 4.77 -3.49 2.10 -1.39 4.08 -2.64 4.08 -2.64 0.00 0.00 0.79 -0.80 1.96 -1.65 0.58 -0.43 1.25 -0.87 1.97 -1.23 0.71 -0.36 1.47 -0.65 2.20 -0.76 1.47 -0.23 4.03 0.17 6.38 0.63 2.35 0.45 4.51 0.96 5.19 0.96 0.68 0.00 1.81 -0.23 2.86 -0.71 0.52 -0.24 1.03 -0.55 1.44 -0.92 0.41 -0.37 0.74 -0.81 0.91 -1.32 0.34 -1.02 0.74 -1.99 1.50 -2.53 0.38 -0.27 0.86 -0.43 1.46 -0.44 0.61 -0.01 1.34 0.13 2.25 0.47 0.45 0.17 0.99 0.02 1.58 -0.38 0.01 -0.01 0.02 -0.02 0.03 -0.03 -0.15 -0.40 -0.13 -0.57 -0.34 -1.07 -1.13 -2.74 -1.26 -3.37 -1.26 -6.43 0.00 -2.80 -0.13 -3.62 -0.76 -4.67 -0.53 -0.90 -0.84 -2.24 -1.02 -4.50 -0.15 -1.77 -0.47 -3.47 -0.73 -3.77 -0.55 -0.66 -2.61 -0.72 -4.78 -0.14 -1.35 0.36 -1.72 0.32 -3.05 -0.36 -0.83 -0.42 -2.05 -0.77 -2.71 -0.77 -0.66 0.00 -1.52 -0.24 -1.90 -0.53 -0.38 -0.29 -1.38 -0.53 -2.21 -0.54 -1.19 -0.01 -1.79 0.23 -2.77 1.09l-1.25 1.10 -0.62 -0.94c-0.34 -0.52 -1.44 -1.36 -2.45 -1.86 -3.22 -1.62 -6.50 -3.91 -8.51 -5.94 -0.25 -0.25 -0.32 -0.26 -0.55 -0.49 -0.91 0.04 -2.86 0.13 -6.19 0.20 -4.01 0.08 -8.58 0.08 -10.83 -0.24 -1.12 -0.16 -2.17 -0.12 -3.14 0.04 -0.97 0.17 -1.86 0.46 -2.68 0.80 -1.64 0.68 -3.01 1.57 -4.13 2.05 -0.56 0.24 -0.90 0.70 -1.13 1.28 -0.23 0.58 -0.34 1.27 -0.44 1.97 -0.10 0.70 -0.19 1.41 -0.38 2.03 -0.19 0.62 -0.47 1.14 -0.95 1.46 -0.48 0.32 -1.08 0.44 -1.74 0.43 -0.66 -0.02 -1.37 -0.17 -2.07 -0.39 -1.40 -0.44 -2.77 -1.16 -3.57 -1.64 -0.80 -0.48 -2.25 -1.76 -3.97 -2.77 -0.86 -0.50 -1.80 -0.93 -2.75 -1.16 -0.96 -0.23 -1.94 -0.25 -2.90 0.07 -1.93 0.64 -3.61 1.04 -5.09 1.56 -1.48 0.52 -2.77 1.16 -3.89 2.29 -0.41 0.41 -1.38 1.86 -2.04 2.74 0.05 0.06 0.42 0.47 0.42 0.47 0.00 0.00 -1.59 1.76 -3.46 4.20 -0.94 1.22 -1.94 2.61 -2.86 4.03 -0.91 1.43 -1.74 2.89 -2.30 4.25 -1.13 2.72 -2.78 6.35 -4.09 9.84 -0.65 1.74 -1.22 3.45 -1.59 4.99 -0.38 1.54 -0.56 2.92 -0.45 4.00 0.23 2.16 0.91 3.97 1.53 5.25 0.11 0.22 0.10 0.16 0.21 0.35 0.14 0.10 0.41 0.23 0.52 0.32 0.96 0.80 1.69 2.01 2.37 3.37 0.68 1.36 1.32 2.89 2.13 4.33 0.40 0.72 0.94 1.46 1.62 2.21 0.68 0.75 1.50 1.50 2.47 2.24 1.93 1.48 4.41 2.93 7.46 4.21 1.52 0.64 2.89 1.45 4.09 2.31 0.28 0.20 0.47 0.42 0.73 0.63z"},"path06":{"name":"Sumatera Selatan","path":"m306.51 361.78c0.39 0.75 0.75 1.55 1.19 2.14 0.36 0.49 0.74 0.90 1.12 1.21 0.39 0.30 0.78 0.49 1.18 0.53 1.60 0.16 3.45 0.80 5.17 1.08 0.86 0.14 1.69 0.19 2.45 0.04 0.76 -0.15 1.44 -0.49 2.00 -1.13 0.56 -0.64 1.04 -1.58 1.48 -2.70 0.44 -1.11 0.84 -2.40 1.24 -3.72 0.80 -2.65 1.60 -5.46 2.73 -7.38 0.56 -0.96 1.10 -1.72 1.69 -2.36 0.58 -0.64 1.20 -1.16 1.92 -1.65 1.44 -0.96 3.29 -1.76 6.02 -3.05 2.73 -1.28 6.26 -2.25 9.31 -3.25 1.52 -0.50 2.93 -1.01 4.05 -1.58 1.12 -0.57 1.97 -1.19 2.37 -1.91 0.40 -0.72 0.62 -1.40 0.74 -2.03 0.12 -0.63 0.14 -1.20 0.14 -1.70 0.00 -0.50 -0.02 -0.93 0.02 -1.28 0.04 -0.35 0.14 -0.61 0.38 -0.77 0.48 -0.32 1.04 -0.48 1.73 -0.60 0.68 -0.12 1.48 -0.20 2.45 -0.36 0.48 -0.08 0.88 -0.36 1.24 -0.74 0.36 -0.38 0.68 -0.85 1.00 -1.31 0.32 -0.46 0.64 -0.91 1.00 -1.25 0.36 -0.34 0.76 -0.56 1.24 -0.56 0.48 0.00 1.06 0.22 1.67 0.58 0.61 0.36 1.26 0.86 1.86 1.43 1.20 1.12 2.25 2.49 2.57 3.45 0.32 0.96 1.04 2.25 2.09 3.37 0.52 0.56 1.12 1.08 1.80 1.51 0.67 0.42 1.41 0.74 2.21 0.90 1.61 0.32 2.97 0.80 5.14 1.45 0.47 -2.50 1.58 -6.11 2.70 -8.12 0.67 -1.21 1.22 -2.47 1.22 -2.81 0.00 -1.15 -1.10 -2.74 -2.53 -3.64 -1.77 -1.12 -1.84 -2.01 -0.49 -6.76 1.13 -3.98 1.67 -4.91 4.21 -7.29 2.72 -2.55 3.24 -3.41 2.77 -4.62 -0.20 -0.53 -0.37 -1.69 -0.37 -2.56 0.00 -1.40 -0.36 -2.48 -0.89 -3.37 -0.59 -0.36 -1.18 -0.61 -1.75 -1.04 -0.34 -0.25 -0.57 -0.62 -0.89 -0.89 -0.47 -0.12 -0.92 -0.26 -1.47 -0.26 -1.14 0.00 -1.59 -0.23 -2.51 -1.27 -1.10 -1.25 -1.30 -2.05 -1.14 -4.41 0.10 -1.51 -0.26 -1.92 -3.03 -3.47 -2.60 -1.46 -2.81 -1.91 -2.73 -5.83l0.06 -2.57 -1.91 -0.18c-1.05 -0.10 -3.04 -0.43 -4.43 -0.74 -5.05 -1.11 -6.50 -1.26 -9.66 -1.00 -2.62 0.22 -3.43 0.15 -4.54 -0.34 -0.85 -0.38 -1.53 -0.49 -1.85 -0.29 -0.74 0.47 -0.97 0.40 -1.22 -0.39 -0.32 -1.01 -1.03 -0.90 -2.51 0.40 -1.84 1.62 -2.82 3.13 -3.09 4.79l-0.24 1.46 -0.05 -1.50c-0.03 -1.15 -0.26 -1.67 -0.95 -2.22l-0.91 -0.71 1.25 -0.41c1.34 -0.44 4.72 -3.85 5.27 -5.31 0.42 -1.11 0.42 -3.40 -0.01 -4.53 -0.19 -0.49 -0.91 -1.32 -1.60 -1.85 -1.14 -0.87 -1.39 -0.92 -2.49 -0.56 -1.75 0.58 -3.01 -0.07 -3.47 -1.77 -0.55 -2.04 -3.30 -3.73 -3.83 -2.35 -0.11 0.30 -0.35 0.45 -0.53 0.34 -0.18 -0.11 0.00 -0.83 0.40 -1.60 0.84 -1.66 0.71 -2.82 -0.21 -5.24 -0.01 0.01 -0.02 0.02 -0.03 0.03 -0.59 0.40 -1.12 0.55 -1.58 0.38 -0.91 -0.34 -1.65 -0.48 -2.25 -0.47 -0.61 0.01 -1.08 0.17 -1.46 0.44 -0.77 0.54 -1.16 1.51 -1.50 2.53 -0.17 0.51 -0.50 0.95 -0.91 1.32 -0.41 0.37 -0.92 0.68 -1.44 0.92 -1.05 0.48 -2.18 0.71 -2.86 0.71 -0.68 0.00 -2.84 -0.51 -5.19 -0.96 -2.35 -0.45 -4.91 -0.85 -6.38 -0.63 -0.74 0.11 -1.49 0.40 -2.20 0.76 -0.71 0.36 -1.39 0.80 -1.97 1.23 -1.16 0.85 -1.96 1.65 -1.96 1.65 0.00 0.00 -1.98 1.25 -4.08 2.64 -2.10 1.39 -4.31 2.92 -4.77 3.49 -0.45 0.57 -0.68 1.70 -0.91 2.89 -0.23 1.19 -0.45 2.44 -0.91 3.23 -0.45 0.79 -1.42 1.70 -2.47 2.44 -1.05 0.74 -2.18 1.31 -2.98 1.42 -0.40 0.06 -0.74 -0.10 -1.03 -0.41 -0.29 -0.31 -0.53 -0.77 -0.73 -1.32 -0.40 -1.11 -0.62 -2.58 -0.74 -3.94 -0.06 -0.68 -0.30 -1.05 -0.63 -1.21 -0.33 -0.16 -0.76 -0.10 -1.18 0.07 -0.85 0.34 -1.70 1.14 -1.82 1.59 -0.11 0.45 -0.79 0.96 -1.79 1.36 -0.99 0.40 -2.30 0.68 -3.66 0.68 -1.36 0.00 -2.21 0.11 -2.72 0.51 -0.51 0.40 -0.68 1.08 -0.68 2.21 0.00 0.57 -0.04 1.03 -0.16 1.44 -0.12 0.40 -0.32 0.73 -0.63 1.03 -0.62 0.60 -1.70 1.05 -3.52 1.62 -1.82 0.57 -3.40 1.31 -5.05 2.16 -1.65 0.85 -3.35 1.82 -5.39 2.84 -2.04 1.02 -5.28 3.12 -8.00 4.96 -0.23 0.16 -0.20 0.14 -0.42 0.29 0.86 0.68 1.72 1.38 2.40 2.07 1.76 1.81 2.89 3.49 3.37 4.29 0.24 0.40 0.76 0.78 1.41 1.13 0.65 0.35 1.42 0.66 2.16 0.92 1.48 0.52 2.85 0.84 2.85 0.84 0.00 0.00 0.56 1.44 1.36 3.05 0.40 0.80 0.86 1.65 1.34 2.37 0.48 0.72 0.98 1.32 1.47 1.64 0.48 0.32 1.20 0.50 2.02 0.59 0.81 0.09 1.71 0.09 2.56 0.05 1.68 -0.08 3.13 -0.32 3.13 -0.32l6.74 3.85c0.00 0.00 1.12 0.64 1.97 1.44 0.42 0.40 0.77 0.84 0.88 1.26 0.11 0.42 -0.04 0.82 -0.60 1.14 -1.12 0.64 -2.97 1.45 -4.89 2.53 -0.96 0.54 -1.95 1.15 -2.87 1.85 -0.92 0.70 -1.79 1.48 -2.51 2.36 -0.72 0.88 -1.12 1.64 -1.28 2.33 -0.16 0.68 -0.08 1.28 0.16 1.85 0.48 1.12 1.60 2.09 2.73 3.21 1.12 1.12 2.49 2.97 4.09 4.73 0.80 0.88 1.66 1.74 2.59 2.49 0.92 0.74 1.90 1.36 2.95 1.77 2.09 0.80 4.09 1.04 6.02 1.40 0.96 0.18 1.91 0.39 2.83 0.72 0.92 0.33 1.82 0.77 2.71 1.41 1.77 1.28 3.13 2.65 4.37 4.13 1.24 1.48 2.37 3.09 3.65 4.85 1.28 1.77 2.17 3.29 2.73 4.37 0.56 1.08 0.80 1.73 0.80 1.73 0.00 0.00 -0.72 0.48 -0.92 0.61z"},"path07":{"name":"Bengkulu","path":"m228.93 275.48c0.49 0.90 0.99 1.67 0.99 1.67 0.00 0.00 -0.91 -0.11 -2.30 0.26 -0.69 0.18 -1.51 0.49 -2.39 0.99 -0.88 0.50 -1.83 1.19 -2.80 2.16 -1.03 1.03 -2.09 2.12 -3.16 3.16 0.93 1.26 1.96 2.87 2.64 3.55 0.92 0.92 2.72 2.25 4.02 2.97 1.29 0.72 2.61 1.60 2.93 1.96 0.32 0.36 1.66 2.76 2.97 5.33 2.79 5.47 6.17 10.51 8.05 12.04 3.50 2.84 9.75 7.30 13.09 9.32 5.29 3.20 5.59 3.49 6.24 5.98 0.31 1.18 0.87 2.76 1.26 3.51 0.50 0.96 0.65 1.75 0.50 2.70 -0.19 1.23 -0.08 1.46 1.53 3.02 0.95 0.93 3.82 3.16 6.36 4.96 5.22 3.69 7.07 5.19 11.05 8.90 1.53 1.43 3.64 3.01 4.70 3.51 2.78 1.33 7.86 5.24 9.12 7.03 0.71 1.00 1.55 1.70 2.42 2.00 0.74 0.25 2.09 0.98 3.02 1.62 0.85 0.59 2.63 1.43 4.07 2.00 0.34 -0.26 0.71 -0.66 1.03 -0.89 1.81 -1.28 3.17 -2.09 3.17 -2.09 0.00 0.00 -0.24 -0.64 -0.80 -1.73 -0.56 -1.08 -1.44 -2.61 -2.73 -4.37 -1.28 -1.77 -2.41 -3.37 -3.65 -4.85 -1.24 -1.48 -2.61 -2.85 -4.37 -4.13 -0.88 -0.64 -1.78 -1.08 -2.71 -1.41 -0.92 -0.33 -1.87 -0.54 -2.83 -0.72 -1.93 -0.36 -3.93 -0.60 -6.02 -1.40 -1.04 -0.40 -2.03 -1.02 -2.95 -1.77 -0.92 -0.74 -1.78 -1.60 -2.59 -2.49 -1.60 -1.77 -2.97 -3.61 -4.09 -4.73 -1.12 -1.12 -2.25 -2.09 -2.73 -3.21 -0.24 -0.56 -0.32 -1.16 -0.16 -1.85 0.16 -0.68 0.56 -1.44 1.28 -2.33 0.72 -0.88 1.59 -1.67 2.51 -2.36 0.92 -0.70 1.91 -1.31 2.87 -1.85 1.93 -1.08 3.77 -1.89 4.89 -2.53 0.56 -0.32 0.70 -0.72 0.60 -1.14 -0.11 -0.42 -0.46 -0.86 -0.88 -1.26 -0.84 -0.80 -1.97 -1.44 -1.97 -1.44l-6.74 -3.85c0.00 0.00 -1.44 0.24 -3.13 0.32 -0.84 0.04 -1.74 0.04 -2.56 -0.05 -0.81 -0.09 -1.53 -0.27 -2.02 -0.59 -0.48 -0.32 -0.98 -0.92 -1.47 -1.64 -0.48 -0.72 -0.94 -1.56 -1.34 -2.37 -0.80 -1.60 -1.36 -3.05 -1.36 -3.05 0.00 0.00 -1.36 -0.32 -2.85 -0.84 -0.74 -0.26 -1.51 -0.57 -2.16 -0.92 -0.65 -0.35 -1.17 -0.73 -1.41 -1.13 -0.48 -0.80 -1.60 -2.49 -3.37 -4.29 -0.88 -0.90 -1.93 -1.83 -3.13 -2.70 -1.20 -0.87 -2.57 -1.67 -4.09 -2.31 -3.05 -1.28 -5.54 -2.73 -7.46 -4.21 -0.96 -0.74 -1.78 -1.50 -2.47 -2.24 -0.68 -0.75 -1.22 -1.49 -1.62 -2.21 -0.80 -1.44 -1.44 -2.97 -2.13 -4.33 -0.68 -1.36 -1.40 -2.57 -2.37 -3.37 -0.11 -0.09 -0.38 -0.22 -0.52 -0.32zm28.49 100.34c-0.53 -0.03 -0.69 0.17 -0.92 0.80 -0.65 1.71 0.59 3.31 4.30 5.57 0.69 0.42 1.78 0.76 2.43 0.76 1.11 0.00 1.17 -0.07 1.18 -1.35 0.00 -0.74 0.10 -1.71 0.22 -2.15 0.19 -0.71 -0.09 -0.94 -2.54 -2.05 -1.51 -0.69 -3.31 -1.36 -3.99 -1.49 -0.28 -0.05 -0.49 -0.09 -0.67 -0.10z"},"path08":{"name":"Lampung","path":"m306.51 361.78c-0.51 0.31 -0.96 0.57 -2.24 1.48 -0.32 0.23 -0.69 0.63 -1.03 0.89 0.12 0.05 0.22 0.13 0.34 0.17 2.04 0.76 3.00 1.34 3.79 2.32 0.58 0.72 1.80 1.62 2.70 2.01 2.07 0.89 3.16 1.90 3.45 3.21 0.12 0.57 0.76 1.48 1.42 2.02 0.74 0.61 1.34 1.55 1.58 2.43 0.43 1.61 3.61 4.94 7.51 7.88 1.88 1.41 2.25 1.87 2.25 2.77 0.00 0.84 0.25 1.21 1.13 1.69 2.15 1.16 6.57 5.44 7.24 7.02 0.35 0.83 0.91 1.71 1.24 1.96 1.26 0.96 3.12 0.47 3.89 -1.01 1.09 -2.10 0.48 -4.10 -2.69 -8.79 -0.80 -1.19 -1.46 -2.35 -1.46 -2.60 -0.00 -0.72 2.04 -1.58 3.14 -1.32 0.55 0.13 1.64 0.83 2.43 1.55 1.90 1.75 4.57 3.42 9.21 5.76 3.28 1.65 3.99 1.89 5.12 1.68 1.72 -0.32 2.18 -1.23 1.90 -3.77 -0.18 -1.66 -0.10 -2.21 0.50 -3.10 0.40 -0.59 0.72 -1.52 0.72 -2.07 0.00 -1.64 0.99 -1.19 3.96 1.80 5.71 5.75 10.72 10.52 11.04 10.52 0.18 0.00 0.83 -0.53 1.45 -1.17 1.69 -1.76 2.67 -5.99 2.81 -12.16 0.06 -2.68 0.30 -5.59 0.54 -6.47 0.24 -0.88 0.42 -2.72 0.40 -4.10 -0.02 -1.40 0.28 -3.88 0.69 -5.63 0.68 -2.90 0.69 -3.22 0.17 -4.47 -0.68 -1.64 -0.71 -2.89 -0.09 -4.72 0.28 -0.83 0.45 -2.85 0.43 -5.02 -0.04 -3.39 -0.13 -3.81 -1.37 -6.42 -0.79 -1.65 -1.33 -3.34 -1.33 -4.12 0.00 -0.38 0.28 -1.25 0.39 -1.84 -2.17 -0.64 -3.54 -1.13 -5.14 -1.45 -0.80 -0.16 -1.54 -0.48 -2.22 -0.90 -0.67 -0.42 -1.27 -0.94 -1.80 -1.51 -1.04 -1.12 -1.77 -2.41 -2.09 -3.37 -0.32 -0.96 -1.36 -2.33 -2.57 -3.45 -0.60 -0.56 -1.25 -1.06 -1.86 -1.43 -0.61 -0.36 -1.19 -0.58 -1.67 -0.58 -0.48 0.00 -0.88 0.22 -1.24 0.56 -0.36 0.34 -0.68 0.79 -1.00 1.25 -0.32 0.46 -0.64 0.93 -1.00 1.31 -0.36 0.38 -0.76 0.66 -1.24 0.74 -0.96 0.16 -1.76 0.24 -2.45 0.36 -0.68 0.12 -1.24 0.28 -1.73 0.60 -0.24 0.16 -0.34 0.42 -0.38 0.77 -0.04 0.35 -0.02 0.78 -0.02 1.28 0.00 0.50 -0.02 1.07 -0.14 1.70 -0.12 0.63 -0.34 1.31 -0.74 2.03 -0.40 0.72 -1.24 1.34 -2.37 1.91 -1.12 0.57 -2.53 1.08 -4.05 1.58 -3.05 1.00 -6.58 1.97 -9.31 3.25 -2.73 1.28 -4.57 2.09 -6.02 3.05 -0.72 0.48 -1.34 1.00 -1.92 1.65 -0.58 0.64 -1.12 1.40 -1.69 2.36 -1.12 1.93 -1.93 4.73 -2.73 7.38 -0.40 1.32 -0.80 2.61 -1.24 3.72 -0.44 1.11 -0.92 2.06 -1.48 2.70 -0.56 0.64 -1.24 0.98 -2.00 1.13 -0.76 0.15 -1.59 0.10 -2.45 -0.04 -1.72 -0.28 -3.57 -0.92 -5.17 -1.08 -0.40 -0.04 -0.80 -0.23 -1.18 -0.53 -0.39 -0.30 -0.76 -0.72 -1.12 -1.21 -0.44 -0.60 -0.80 -1.40 -1.19 -2.14zm36.67 29.22c-0.16 -0.02 -0.31 0.02 -0.42 0.13 -0.25 0.25 -0.18 0.55 0.22 0.96 0.72 0.72 1.26 0.76 1.26 0.09 0.00 -0.57 -0.58 -1.12 -1.06 -1.18z"},"path09":{"name":"Kep. Bangka Belitung","path":"m379.79 250.85 -1.68 0.60c-0.93 0.33 -2.19 0.60 -2.81 0.60 -0.70 -0.00 -1.21 0.22 -1.35 0.57 -0.38 0.99 -0.21 3.87 0.32 5.34 0.53 1.49 0.45 2.00 -0.34 2.00 -0.72 0.00 -1.64 -1.63 -2.39 -4.25 -0.37 -1.30 -0.80 -2.48 -0.95 -2.63 -0.15 -0.15 -1.53 -0.15 -3.05 -0.01 -2.31 0.22 -2.99 0.44 -4.08 1.33 -0.72 0.58 -1.65 1.66 -2.07 2.38l-0.76 1.32 0.84 1.50 0.84 1.49 -0.84 0.89c-0.46 0.49 -2.03 1.48 -3.48 2.20 -2.96 1.46 -4.03 2.67 -4.03 4.53 0.00 1.63 0.79 2.40 2.48 2.40 0.97 0.00 1.58 0.25 2.19 0.90 0.80 0.85 1.00 0.89 3.86 0.72 1.71 -0.10 3.50 -0.43 4.12 -0.75 1.00 -0.52 1.23 -0.52 2.41 -0.01 0.72 0.31 2.11 0.67 3.10 0.80 0.99 0.13 2.06 0.37 2.37 0.53 0.69 0.36 2.12 4.55 2.12 6.20 0.00 0.88 0.32 1.49 1.29 2.42 1.90 1.82 2.38 2.91 1.90 4.28 -0.22 0.62 -0.33 2.24 -0.25 3.61 0.12 2.05 0.33 2.76 1.22 4.03 1.06 1.51 1.18 1.57 6.18 3.02 3.94 1.15 5.39 1.74 6.38 2.61 0.76 0.66 1.68 1.13 2.25 1.13 0.61 0.00 1.43 0.45 2.24 1.25 0.70 0.69 1.92 1.48 2.71 1.77v0.00 0.00c1.79 0.66 5.59 0.73 6.38 0.13 0.32 -0.25 0.63 -0.85 0.70 -1.35 0.11 -0.85 0.21 -0.89 2.11 -0.78 2.18 0.13 2.73 -0.21 2.86 -1.74 0.13 -1.61 0.01 -1.83 -1.32 -2.38 -1.73 -0.72 -2.78 -0.41 -3.72 1.12 -0.43 0.69 -1.02 1.26 -1.32 1.26 -0.79 0.00 -2.64 -1.98 -2.64 -2.83 0.00 -1.52 1.91 -5.83 3.28 -7.38 0.77 -0.87 1.40 -1.75 1.40 -1.95 0.00 -0.20 -0.55 -0.84 -1.22 -1.43 -0.89 -0.78 -1.87 -1.19 -3.69 -1.52 -1.36 -0.25 -3.02 -0.67 -3.68 -0.95 -0.67 -0.27 -1.85 -0.49 -2.62 -0.49 -2.83 0.00 -4.69 -2.27 -6.60 -8.03 -0.99 -2.99 -1.34 -4.74 -1.51 -7.54 -0.19 -3.18 -0.36 -3.86 -1.24 -5.26 -0.56 -0.88 -1.02 -1.75 -1.02 -1.93 0.00 -0.18 -0.48 -1.00 -1.07 -1.82 -0.79 -1.10 -1.06 -1.86 -1.02 -2.88 0.03 -0.76 -0.10 -1.49 -0.29 -1.62 -0.19 -0.13 -1.28 -0.95 -2.42 -1.83l-2.08 -1.59zm98.51 1.92c-0.68 0.00 -2.40 0.95 -2.89 1.61 -0.35 0.46 -0.03 2.29 0.51 2.94 0.49 0.59 0.43 0.60 1.92 -0.02 1.33 -0.56 1.99 -1.49 1.99 -2.81 0.00 -1.02 -0.62 -1.71 -1.52 -1.71zm-6.45 4.86c-1.16 -0.02 -1.99 0.55 -1.58 1.22 0.13 0.22 0.96 0.39 1.84 0.39 1.32 0.00 1.60 -0.12 1.60 -0.67 0.00 -0.50 -0.35 -0.73 -1.34 -0.89 -0.18 -0.03 -0.35 -0.04 -0.52 -0.05zm-30.53 28.22c-2.62 0.00 -3.16 0.27 -4.42 2.22 -0.74 1.15 -2.03 6.68 -2.03 8.72 0.00 0.92 -0.17 2.36 -0.37 3.19 -0.29 1.19 -0.23 2.04 0.27 4.02 0.59 2.34 0.74 2.57 2.15 3.35 1.30 0.72 1.70 0.78 2.89 0.46 0.76 -0.20 1.93 -0.94 2.60 -1.64 1.54 -1.59 2.60 -1.63 3.68 -0.15 0.45 0.62 1.38 1.51 2.07 1.98 0.69 0.47 1.47 0.86 1.73 0.86 0.26 0.00 1.22 -0.57 2.13 -1.26 0.91 -0.69 1.86 -1.26 2.11 -1.26 1.02 0.00 1.59 -1.12 1.59 -3.11 0.00 -1.58 0.28 -2.56 1.41 -4.84 1.39 -2.81 1.41 -2.88 0.89 -4.38 -0.97 -2.83 -5.43 -6.44 -8.78 -7.10 -0.99 -0.19 -2.62 -0.52 -3.62 -0.71 -1.00 -0.20 -2.95 -0.36 -4.32 -0.36zm-10.30 9.03c-0.18 0.01 -0.40 0.04 -0.69 0.08 -2.15 0.35 -2.82 1.45 -1.92 3.14 0.43 0.80 1.01 0.87 2.30 0.28 1.06 -0.48 1.44 -1.42 1.12 -2.71 -0.15 -0.62 -0.28 -0.81 -0.82 -0.79zm-13.07 2.12c-0.21 0.00 -0.28 0.16 -0.16 0.36 0.12 0.20 0.29 0.36 0.38 0.36 0.09 0.00 0.16 -0.16 0.16 -0.36 0.00 -0.20 -0.17 -0.36 -0.38 -0.36zm-36.25 2.05c0.33 0.27 0.55 0.64 0.89 0.89 0.57 0.42 1.16 0.67 1.75 1.04 -0.59 -0.98 -1.47 -1.64 -2.64 -1.93z"},"path10":{"name":"Kep. Riau","path":"m448.00 45.97c-0.70 0.00 -1.76 1.65 -1.50 2.33 0.11 0.30 0.62 0.54 1.12 0.54 0.82 0.00 0.91 -0.14 0.91 -1.44 0.00 -1.03 -0.15 -1.44 -0.53 -1.44zm6.93 17.71c-0.34 0.05 -2.00 1.63 -3.69 3.51 -3.33 3.70 -3.55 4.28 -2.51 6.75 0.58 1.38 1.86 2.96 2.40 2.96 0.17 0.00 0.90 0.25 1.62 0.55l1.31 0.55 -1.32 1.36c-1.58 1.62 -1.65 2.21 -0.33 3.00 1.28 0.77 2.05 0.79 4.43 0.08 2.35 -0.69 2.71 -0.96 3.02 -2.22 0.13 -0.54 0.65 -1.58 1.15 -2.31 0.82 -1.20 0.90 -1.61 0.78 -4.01 -0.13 -2.59 -0.18 -2.72 -1.75 -4.43 -0.89 -0.97 -2.26 -2.68 -3.05 -3.82 -0.93 -1.33 -1.66 -2.03 -2.05 -1.97zm-63.36 28.68c-0.71 0.00 -1.37 1.95 -0.84 2.48 0.58 0.58 1.68 0.49 1.93 -0.16 0.29 -0.75 -0.45 -2.32 -1.09 -2.32zm-1.81 3.96c-0.43 0.00 -0.57 0.36 -0.57 1.41 0.00 1.12 0.20 1.56 0.99 2.15 1.75 1.32 3.00 0.55 2.47 -1.53 -0.21 -0.83 -1.92 -2.03 -2.89 -2.03zm-16.94 7.73 -0.11 2.12c-0.06 1.16 -0.02 2.34 0.08 2.61 0.24 0.62 0.55 0.62 1.26 -0.02 0.31 -0.28 1.13 -0.65 1.82 -0.83 0.99 -0.25 1.36 -0.60 1.76 -1.66 0.30 -0.80 0.38 -1.47 0.19 -1.65 -0.18 -0.17 -1.38 -0.37 -2.66 -0.43l-2.34 -0.12zm102.86 0.54c-0.63 0.00 -1.98 1.89 -1.98 2.77 0.00 0.37 0.19 0.87 0.43 1.11 0.92 0.92 3.52 0.01 3.52 -1.24 0.00 -0.78 -1.39 -2.64 -1.98 -2.64zm-85.90 6.22c-0.06 -0.01 -0.10 0.01 -0.14 0.04 -0.10 0.10 -0.08 0.59 0.05 1.10 0.24 0.96 1.29 1.29 1.29 0.40 0.00 -0.51 -0.82 -1.49 -1.21 -1.54zm91.15 7.88c-0.17 0.02 -0.33 0.09 -0.45 0.21 -0.21 0.21 -0.26 0.56 -0.12 0.79 0.32 0.51 1.34 0.34 1.54 -0.26 0.15 -0.44 -0.45 -0.79 -0.96 -0.73zm-147.66 44.56c-0.32 0.00 -0.67 0.02 -1.05 0.04 -2.21 0.14 -2.95 0.37 -4.78 1.48 -3.14 1.91 -3.26 2.11 -2.12 3.84 0.81 1.23 1.14 1.44 2.24 1.44 0.71 0.00 1.85 -0.27 2.55 -0.60 1.54 -0.73 1.90 -0.36 1.90 2.02 0.01 1.31 0.21 1.82 1.15 2.79 1.34 1.38 1.65 1.42 3.46 0.50 1.45 -0.74 2.68 -2.78 3.09 -5.12 0.20 -1.15 0.06 -1.52 -1.19 -3.10 -2.07 -2.62 -3.00 -3.29 -5.25 -3.28zm-15.34 0.33c-0.91 -0.02 -2.76 2.57 -3.03 4.22 -0.19 1.17 -0.44 1.55 -1.27 1.90 -1.37 0.57 -1.32 1.52 0.13 2.21 1.42 0.68 2.07 0.30 2.07 -1.23 0.00 -0.89 0.11 -1.03 0.63 -0.79 0.35 0.16 1.38 0.35 2.29 0.43 1.55 0.14 1.73 0.06 2.62 -1.11 1.13 -1.48 1.79 -3.49 1.31 -3.97 -0.41 -0.41 -3.94 -1.65 -4.76 -1.66zm2.86 8.12c-0.92 -0.06 -0.46 1.53 1.38 3.99 0.98 1.31 1.48 1.25 2.62 -0.30 0.93 -1.26 0.76 -2.12 -0.42 -2.12 -0.45 0.00 -1.45 -0.42 -2.21 -0.94 -0.61 -0.42 -1.07 -0.62 -1.38 -0.64zm-11.88 1.68c-0.30 -0.00 -0.53 0.09 -0.65 0.28 -0.35 0.57 0.49 2.31 1.37 2.82 0.81 0.47 2.14 0.49 2.42 0.04 0.12 -0.19 -0.03 -0.83 -0.33 -1.41 -0.49 -0.95 -1.92 -1.73 -2.80 -1.74zm17.34 3.13c-0.45 -0.08 -1.04 0.18 -1.68 0.78 -1.05 0.99 -1.06 1.67 -0.02 2.08 1.12 0.45 2.34 0.45 2.62 -0.01 0.13 -0.21 0.13 -0.94 0.01 -1.62 -0.14 -0.74 -0.47 -1.16 -0.92 -1.24zm10.61 0.00c-0.56 0.00 -0.90 0.21 -0.90 0.54 0.00 0.34 0.34 0.54 0.90 0.54 0.56 0.00 0.90 -0.20 0.90 -0.54 0.00 -0.34 -0.34 -0.54 -0.90 -0.54zm-2.56 18.00c-0.47 -0.02 -0.85 0.10 -0.85 0.37 0.00 1.35 2.39 3.88 4.91 5.20 1.29 0.67 1.56 0.67 1.56 0.00 0.00 -0.50 -3.02 -4.15 -4.25 -5.13 -0.34 -0.27 -0.90 -0.42 -1.37 -0.44zm-3.60 2.39c-0.73 0.28 -0.63 2.51 0.13 2.96 1.04 0.61 2.61 0.34 2.61 -0.44 0.00 -0.68 -2.22 -2.72 -2.74 -2.52zm5.31 4.88c-0.19 0.00 -0.39 0.03 -0.59 0.06 -0.99 0.19 -1.30 0.44 -1.46 1.21 -0.44 2.15 -1.00 3.92 -1.64 5.18 -0.82 1.61 -0.65 2.16 0.96 3.02 1.22 0.66 1.27 0.66 3.73 -0.18 3.00 -1.02 3.72 -0.92 7.03 1.02 1.38 0.81 2.64 1.46 2.80 1.46 0.16 0.00 1.10 -0.26 2.07 -0.58 2.12 -0.69 2.31 -1.48 0.61 -2.44 -0.64 -0.36 -1.74 -1.31 -2.45 -2.10l-1.28 -1.44 -1.19 0.62 -1.19 0.62 -1.31 -1.27c-0.72 -0.70 -1.74 -1.43 -2.26 -1.63 -0.65 -0.24 -1.03 -0.72 -1.20 -1.47 -0.29 -1.32 -1.32 -2.10 -2.65 -2.07zm-2.92 11.79c-0.31 0.01 -1.20 0.41 -1.99 0.90 -1.75 1.08 -2.19 1.11 -2.44 0.17 -0.26 -1.01 -0.77 -0.90 -2.05 0.45 -0.98 1.04 -1.08 1.33 -0.87 2.60 0.13 0.81 0.74 2.06 1.40 2.88 0.64 0.79 1.44 1.97 1.76 2.61 0.73 1.44 1.23 1.46 2.50 0.14 0.54 -0.57 1.58 -1.21 2.32 -1.43 1.85 -0.56 3.12 -2.47 2.83 -4.26 -0.23 -1.43 -2.49 -4.08 -3.46 -4.06z"},"path11":{"name":"DKI Jakarta","path":"m402.69 399.71c-0.29 1.24 -0.61 2.76 -0.75 4.62 -0.16 2.09 -0.52 3.49 -0.56 4.59 -0.02 0.55 0.04 1.03 0.25 1.48 0.21 0.45 0.56 0.87 1.12 1.31 1.12 0.88 2.20 1.88 3.21 2.63 0.50 0.37 0.98 0.68 1.44 0.87 0.46 0.19 0.89 0.27 1.29 0.19 0.80 -0.16 1.61 -0.88 2.33 -1.95 0.72 -1.06 1.36 -2.47 1.85 -3.99 0.48 -1.52 0.60 -3.65 0.60 -5.40 0.00 -1.27 -0.05 -1.78 -0.09 -2.26 -0.33 0.07 -0.39 0.13 -0.89 0.22 -3.24 0.60 -4.16 0.51 -5.30 -0.52 -1.57 -1.42 -2.91 -1.80 -4.48 -1.79z"},"path12":{"name":"Jawa Barat","path":"m469.97 456.03c0.06 -1.55 0.18 -3.41 0.04 -3.92 -0.23 -0.79 -1.08 -1.70 -2.01 -2.78 -0.94 -1.08 -1.96 -2.33 -2.52 -3.80 -0.28 -0.74 -0.48 -1.40 -0.57 -2.01 -0.09 -0.61 -0.08 -1.16 0.06 -1.67 0.14 -0.51 0.41 -0.98 0.83 -1.42 0.42 -0.44 0.99 -0.85 1.72 -1.25 1.47 -0.79 2.50 -0.57 3.32 -0.88 0.41 -0.16 0.77 -0.44 1.12 -1.07 0.34 -0.62 0.67 -1.57 1.01 -3.05 0.34 -1.47 0.50 -3.19 0.54 -4.94 0.03 -1.27 -0.04 -2.49 -0.10 -3.70 -0.97 -0.09 -1.79 -0.31 -3.09 -1.02 -1.93 -1.05 -2.20 -1.34 -2.58 -2.76 -0.23 -0.87 -0.53 -2.52 -0.66 -3.66 -0.23 -2.00 -0.31 -2.13 -2.22 -3.57 -1.09 -0.82 -2.72 -2.46 -3.62 -3.63 -1.14 -1.48 -2.15 -2.36 -3.28 -2.86l-1.63 -0.72 -0.84 1.04c-0.46 0.57 -1.00 1.24 -1.20 1.48 -0.71 0.87 -2.47 0.43 -6.75 -1.71 -4.46 -2.22 -5.70 -2.50 -7.25 -1.62 -1.38 0.79 -2.95 0.65 -4.34 -0.40 -0.68 -0.51 -1.90 -1.23 -2.71 -1.58 -1.05 -0.46 -1.95 -1.32 -3.14 -2.99 -2.40 -3.36 -3.48 -3.94 -6.81 -3.64 -2.28 0.21 -2.85 0.14 -4.14 -0.52 -2.31 -1.18 -3.21 -1.03 -3.66 0.59 -0.21 0.74 -0.38 1.85 -0.38 2.46 -0.00 0.88 -0.38 1.09 -1.72 1.37 0.03 0.49 0.09 0.99 0.09 2.26 0.00 1.74 -0.12 3.87 -0.60 5.40 -0.48 1.52 -1.12 2.93 -1.85 3.99 -0.72 1.06 -1.53 1.79 -2.33 1.95 -0.40 0.08 -0.83 0.00 -1.29 -0.19 -0.46 -0.19 -0.94 -0.50 -1.44 -0.87 -0.50 -0.37 -1.06 -0.85 -1.59 -1.30 -0.04 0.03 -0.08 0.09 -0.12 0.12 -0.69 0.54 -1.34 0.88 -1.85 0.83 -1.02 -0.11 -2.55 -0.40 -4.14 -0.48 -0.79 -0.04 -1.60 -0.04 -2.37 0.07 -0.77 0.10 -1.49 0.30 -2.11 0.64 -0.62 0.34 -0.89 0.75 -0.94 1.25 -0.04 0.49 0.14 1.07 0.43 1.73 0.28 0.67 0.67 1.43 1.02 2.29 0.35 0.86 0.68 1.83 0.85 2.90 0.34 2.16 0.51 3.29 0.40 4.11 -0.11 0.82 -0.51 1.33 -1.30 2.24 -0.40 0.45 -0.65 1.01 -0.81 1.58 -0.16 0.57 -0.22 1.17 -0.24 1.71 -0.01 0.24 0.02 0.22 0.03 0.43 1.23 0.44 2.46 0.58 3.89 0.08 1.66 -0.58 2.90 0.04 2.90 1.44 0.00 0.76 -0.29 1.23 -1.03 1.71 -2.77 1.80 -4.34 4.93 -3.65 7.30 0.45 1.58 1.01 2.18 2.04 2.18 0.48 0.00 1.47 0.30 2.20 0.67 0.95 0.48 2.85 0.79 6.55 1.08 7.59 0.61 12.14 1.09 14.39 1.52 1.09 0.21 3.52 0.52 5.39 0.68 1.88 0.16 3.90 0.42 4.50 0.56 1.86 0.45 5.21 2.30 6.77 3.73 0.82 0.76 2.06 1.50 2.76 1.64 0.69 0.15 1.72 0.59 2.29 0.99 0.59 0.42 1.97 0.84 3.24 0.99 1.22 0.15 3.51 0.62 5.09 1.04 1.58 0.43 5.02 0.96 7.65 1.19l4.77 0.41 1.52 -1.47c1.98 -1.90 2.89 -2.35 4.31 -2.08 0.23 0.04 0.80 -0.10 1.20 -0.12z"},"path13":{"name":"Jawa Tengah","path":"m543.10 473.48c0.03 -0.29 0.01 -0.57 0.06 -0.85 0.17 -0.79 0.46 -1.51 0.94 -2.03 0.96 -1.04 3.17 -2.25 5.21 -3.43 1.02 -0.59 2.01 -1.18 2.77 -1.74 0.77 -0.56 1.32 -1.09 1.48 -1.57 0.32 -0.96 0.72 -1.48 0.90 -1.95 0.18 -0.46 0.14 -0.86 -0.42 -1.59 -0.56 -0.72 -1.36 -1.12 -1.96 -1.88 -0.30 -0.38 -0.55 -0.85 -0.70 -1.50 -0.15 -0.65 -0.19 -1.47 -0.07 -2.55 0.24 -2.17 0.28 -4.09 0.26 -5.62 -0.02 -1.52 -0.10 -2.65 -0.10 -3.21 0.00 -0.56 0.12 -0.84 0.52 -1.00 0.40 -0.16 1.08 -0.20 2.21 -0.28 1.12 -0.08 2.25 0.24 3.31 0.28 0.53 0.02 1.05 -0.03 1.54 -0.23 0.49 -0.21 0.96 -0.57 1.40 -1.17 0.88 -1.20 1.81 -1.73 2.53 -2.43 0.36 -0.35 0.67 -0.75 0.90 -1.29 0.23 -0.55 0.38 -1.25 0.42 -2.22 0.08 -1.93 0.20 -3.49 0.46 -4.97 0.26 -1.48 0.66 -2.89 1.30 -4.49 0.79 -1.96 1.39 -3.32 2.16 -5.11 -2.38 -2.33 -3.70 -2.55 -6.95 -1.16 -2.27 0.98 -2.83 1.07 -5.33 0.94 -2.60 -0.14 -2.89 -0.24 -4.06 -1.38 -0.90 -0.87 -1.48 -1.94 -2.01 -3.67 -0.81 -2.66 -1.14 -3.00 -4.18 -4.19 -0.92 -0.36 -1.42 -0.54 -1.97 -0.56 -0.56 -0.02 -1.18 0.12 -2.34 0.41 -4.48 1.09 -5.64 2.19 -6.37 6.03 -0.71 3.72 -2.90 8.30 -4.78 10.00 -1.52 1.38 -3.93 2.28 -5.09 1.91 -0.37 -0.12 -1.67 -0.86 -2.90 -1.66 -2.19 -1.42 -2.27 -1.44 -3.54 -0.94 -0.72 0.28 -2.36 0.72 -3.65 0.97 -2.56 0.50 -3.96 0.29 -10.96 -1.60 -3.81 -1.03 -7.28 -1.15 -9.69 -0.33 -2.33 0.79 -5.31 0.48 -9.69 -1.01 -3.42 -1.16 -3.46 -1.17 -4.56 -0.52 -0.97 0.57 -1.24 0.59 -2.25 0.18 -0.63 -0.26 -2.12 -0.45 -3.30 -0.43 -0.51 0.01 -0.84 -0.06 -1.22 -0.10 0.06 1.21 0.13 2.44 0.10 3.70 -0.04 1.74 -0.20 3.46 -0.54 4.94 -0.34 1.47 -0.67 2.43 -1.01 3.05 -0.34 0.62 -0.71 0.91 -1.12 1.07 -0.82 0.31 -1.85 0.09 -3.32 0.88 -0.74 0.40 -1.30 0.81 -1.72 1.25 -0.42 0.44 -0.69 0.91 -0.83 1.42 -0.14 0.51 -0.16 1.06 -0.06 1.67 0.09 0.61 0.29 1.28 0.57 2.01 0.57 1.48 1.59 2.72 2.52 3.80 0.94 1.08 1.79 1.99 2.01 2.78 0.14 0.51 0.02 2.37 -0.04 3.92 0.70 -0.04 1.36 -0.02 2.11 -0.22 2.83 -0.74 3.00 -0.72 2.81 0.31 -0.12 0.63 0.05 0.98 0.64 1.30 0.91 0.49 4.24 0.29 4.61 -0.27 0.32 -0.50 4.32 -0.96 8.07 -0.94 2.96 0.02 3.26 0.09 4.76 1.16 1.52 1.09 1.79 1.15 5.57 1.30 2.95 0.12 4.64 0.38 6.57 1.04 1.43 0.48 4.18 1.29 6.10 1.80 0.73 0.19 1.97 0.86 2.79 1.15 0.15 -0.23 0.13 -0.21 0.29 -0.44 1.74 -2.57 3.75 -5.42 4.80 -6.54 1.04 -1.12 2.04 -1.84 3.03 -2.17 0.49 -0.16 0.98 -0.22 1.46 -0.18 0.48 0.04 0.97 0.18 1.45 0.42 0.96 0.48 1.69 1.56 2.51 2.63 0.41 0.53 0.85 1.06 1.35 1.50 0.50 0.44 1.08 0.81 1.76 1.01 1.36 0.40 3.05 0.60 4.45 1.10 0.70 0.25 1.34 0.58 1.82 1.04 0.49 0.46 0.83 1.07 0.95 1.87 0.37 2.49 0.27 6.89 0.25 9.44 0.93 0.20 2.15 0.61 2.77 0.67 0.73 0.06 1.43 0.30 2.24 0.48z"},"path14":{"name":"Banten","path":"m393.19 432.46c-0.01 -0.21 -0.04 -0.19 -0.03 -0.43 0.01 -0.54 0.08 -1.13 0.24 -1.71 0.16 -0.57 0.42 -1.13 0.81 -1.58 0.79 -0.91 1.19 -1.42 1.30 -2.24 0.11 -0.82 -0.06 -1.96 -0.40 -4.11 -0.17 -1.08 -0.50 -2.04 -0.85 -2.90 -0.35 -0.86 -0.74 -1.62 -1.02 -2.29 -0.28 -0.67 -0.47 -1.24 -0.43 -1.73 0.04 -0.49 0.31 -0.91 0.94 -1.25 0.62 -0.34 1.35 -0.54 2.11 -0.64 0.77 -0.10 1.58 -0.11 2.37 -0.07 1.59 0.09 3.12 0.37 4.14 0.48 0.51 0.06 1.16 -0.28 1.85 -0.83 0.04 -0.03 0.08 -0.09 0.12 -0.12 -0.54 -0.46 -1.05 -0.88 -1.62 -1.32 -0.56 -0.44 -0.91 -0.86 -1.12 -1.31 -0.21 -0.45 -0.27 -0.93 -0.25 -1.48 0.04 -1.10 0.40 -2.51 0.56 -4.59 0.14 -1.86 0.46 -3.38 0.75 -4.62 -0.75 0.01 -1.41 -0.08 -2.44 0.19 -1.40 0.36 -1.77 0.29 -4.23 -0.75 -1.48 -0.63 -3.13 -1.32 -3.65 -1.54 -0.84 -0.35 -1.11 -0.26 -2.23 0.72 -1.56 1.37 -2.62 1.23 -3.04 -0.39 -0.29 -1.12 -1.76 -2.26 -2.80 -2.28 -0.15 -0.00 -0.29 0.02 -0.41 0.06 -1.03 0.37 -5.86 7.18 -6.45 9.08 -0.29 0.94 -0.65 3.27 -0.81 5.17 -0.31 3.84 -1.07 5.45 -2.78 5.87 -1.59 0.40 -3.67 2.34 -4.32 4.04 -0.33 0.87 -1.04 1.89 -1.58 2.28 -0.54 0.38 -1.18 1.19 -1.43 1.78 -0.25 0.60 -0.61 1.09 -0.80 1.09 -0.41 0.00 -2.09 -1.71 -2.67 -2.71 -0.40 -0.68 -0.48 -0.67 -2.70 0.51 -3.18 1.70 -3.37 1.91 -2.96 3.35 0.30 1.04 0.49 1.19 1.59 1.21 1.09 0.02 1.27 0.15 1.43 1.07 0.23 1.34 0.94 1.48 3.62 0.73 1.15 -0.32 2.48 -0.49 2.96 -0.37 0.48 0.12 1.88 -0.05 3.13 -0.37 1.59 -0.41 2.92 -0.52 4.47 -0.35 1.53 0.16 2.87 0.06 4.43 -0.34 2.85 -0.74 4.79 -0.35 8.04 1.61 1.30 0.78 2.51 1.42 2.70 1.42 0.19 0.00 1.07 0.49 1.96 1.08 0.50 0.33 0.99 0.41 1.48 0.59z"},"path15":{"name":"Jawa Timur","path":"m658.55 472.78c-0.09 -0.68 -0.36 -2.50 -0.36 -2.50 0.00 0.00 0.08 -1.77 0.40 -3.89 0.16 -1.06 0.38 -2.21 0.68 -3.28 0.30 -1.07 0.68 -2.05 1.16 -2.77 0.02 -0.03 0.06 -0.08 0.08 -0.11 -0.20 -0.92 -0.67 -1.70 -1.52 -2.26 -0.73 -0.48 -2.06 -1.04 -2.95 -1.25 -4.62 -1.08 -6.60 -1.80 -7.60 -2.76 -1.43 -1.37 -3.29 -1.38 -5.23 -0.04 -0.93 0.64 -1.88 0.98 -2.76 0.98 -0.74 0.00 -1.85 0.26 -2.45 0.57 -0.95 0.49 -1.64 0.52 -4.86 0.21l-3.75 -0.37 -3.67 1.37 -3.67 1.37 -1.62 -0.85c-0.89 -0.47 -1.96 -0.85 -2.38 -0.85 -0.42 0.00 -1.19 -0.34 -1.72 -0.75 -0.52 -0.41 -2.82 -1.46 -5.09 -2.32 -2.28 -0.86 -4.62 -1.91 -5.21 -2.33 -1.30 -0.93 -1.41 -2.33 -0.30 -3.75 0.86 -1.09 1.24 -3.46 0.88 -5.41 -0.31 -1.67 -1.99 -2.82 -3.73 -2.56 -1.02 0.15 -1.16 0.09 -0.98 -0.48 0.13 -0.42 -0.15 -1.08 -0.75 -1.80 -1.05 -1.25 -1.64 -3.23 -1.73 -5.85 -0.03 -0.93 -0.18 -1.81 -0.33 -1.96 -0.15 -0.15 -0.90 -0.22 -1.68 -0.17 -0.85 0.06 -1.74 -0.12 -2.22 -0.46 -1.01 -0.71 -3.63 -0.72 -6.76 -0.03 -1.29 0.28 -3.13 0.52 -4.11 0.53 -1.63 0.01 -1.89 -0.11 -3.24 -1.54 -1.84 -1.95 -3.48 -2.67 -4.73 -2.10 -1.25 0.57 -2.02 0.52 -4.37 -0.31 -1.35 -0.47 -2.61 -1.28 -3.72 -2.36 -0.01 -0.01 -0.01 -0.01 -0.02 -0.02 -0.77 1.79 -1.37 3.14 -2.16 5.11 -0.64 1.60 -1.04 3.01 -1.30 4.49 -0.26 1.48 -0.38 3.05 -0.46 4.97 -0.04 0.96 -0.19 1.67 -0.42 2.21 -0.23 0.55 -0.54 0.94 -0.90 1.29 -0.72 0.70 -1.65 1.22 -2.53 2.43 -0.44 0.60 -0.91 0.96 -1.40 1.17 -0.49 0.21 -1.01 0.25 -1.54 0.23 -1.06 -0.04 -2.19 -0.36 -3.31 -0.28 -1.12 0.08 -1.81 0.12 -2.21 0.28 -0.40 0.16 -0.52 0.44 -0.52 1.00 0.00 0.56 0.08 1.68 0.10 3.21 0.02 1.52 -0.02 3.45 -0.26 5.62 -0.12 1.08 -0.08 1.91 0.07 2.55 0.15 0.65 0.40 1.12 0.70 1.50 0.60 0.76 1.40 1.16 1.96 1.88 0.56 0.72 0.60 1.12 0.42 1.59 -0.18 0.46 -0.58 0.98 -0.90 1.95 -0.16 0.48 -0.71 1.01 -1.48 1.57 -0.77 0.56 -1.75 1.15 -2.77 1.74 -2.05 1.18 -4.25 2.39 -5.21 3.43 -0.48 0.52 -0.77 1.24 -0.94 2.03 -0.06 0.27 -0.03 0.56 -0.06 0.85 0.78 0.17 1.68 0.27 2.16 0.46 1.70 0.67 1.88 0.68 3.04 0.12 1.21 -0.58 1.26 -0.57 2.41 0.40 0.99 0.83 1.40 0.96 2.54 0.77 0.75 -0.12 1.99 -0.32 2.74 -0.44 1.02 -0.16 1.98 0.02 3.71 0.72 1.40 0.56 3.05 0.94 4.11 0.94 1.13 0.00 2.47 0.33 3.72 0.91 2.20 1.03 2.90 0.94 2.90 -0.34 0.00 -0.53 0.38 -1.19 0.96 -1.63 1.04 -0.82 2.63 -0.75 4.51 0.21 0.54 0.27 2.69 0.58 4.83 0.69 2.27 0.12 4.27 0.41 4.86 0.72 0.55 0.28 1.80 0.52 2.77 0.52 0.98 0.00 2.49 0.32 3.38 0.71 0.89 0.39 2.67 0.86 3.97 1.05 1.29 0.18 2.68 0.51 3.08 0.73 1.15 0.61 3.55 0.46 5.09 -0.33 1.00 -0.51 2.12 -0.72 3.88 -0.72 2.35 0.00 2.52 -0.06 3.55 -1.22 0.84 -0.95 1.56 -1.32 3.21 -1.68 3.70 -0.80 5.85 -0.65 7.89 0.56 0.99 0.59 2.41 1.35 3.17 1.70 0.76 0.35 1.81 0.94 2.34 1.31 0.53 0.37 1.53 0.79 2.22 0.93 0.69 0.14 1.91 0.70 2.70 1.25 1.37 0.95 2.15 1.27 6.63 2.71 1.07 0.35 2.58 1.04 3.34 1.55 1.17 0.77 1.85 0.93 4.34 0.99 1.62 0.04 3.38 0.19 3.91 0.33 0.61 0.17 1.34 0.06 2.03 -0.30 0.86 -0.44 1.32 -0.48 2.20 -0.17 1.09 0.38 1.32 0.81 1.55 2.83 0.09 0.76 0.34 0.93 1.72 1.14 0.89 0.13 2.02 0.41 2.52 0.61 1.61 0.66 2.77 0.48 3.59 -0.55 1.32 -1.68 0.88 -2.61 -1.92 -4.06 -2.65 -1.38 -3.44 -2.36 -3.46 -4.28 -0.01 -0.74 -0.37 -1.70 -0.91 -2.40 -1.04 -1.37 -1.10 -2.26 -0.36 -5.30 0.12 -0.50 0.33 -1.38 0.52 -2.13zm31.19 -45.94c-3.30 0.00 -4.02 0.30 -4.73 2.00 -0.61 1.46 -0.46 2.08 0.64 2.61 1.20 0.58 2.12 0.50 3.30 -0.29 0.59 -0.39 1.60 -0.72 2.24 -0.72 1.42 0.00 3.70 -1.04 3.70 -1.69 0.00 -1.08 -2.23 -1.90 -5.15 -1.90zm-47.12 0.80c-0.24 0.00 -0.48 0.02 -0.74 0.06 -3.94 0.56 -11.88 0.83 -20.78 0.71 -12.46 -0.17 -12.89 -0.10 -16.14 2.81 -2.21 1.98 -2.50 2.39 -2.50 3.52 0.00 0.70 0.13 1.48 0.29 1.73 0.58 0.91 2.74 2.25 3.64 2.25 0.51 0.00 2.54 0.40 4.52 0.89 4.36 1.08 4.87 1.10 5.11 0.19 0.18 -0.70 0.21 -0.70 1.03 -0.05 0.68 0.53 1.53 0.67 4.32 0.70 1.91 0.02 3.54 0.10 3.62 0.18 0.08 0.08 1.31 0.07 2.74 -0.03 2.61 -0.18 3.64 -0.66 4.03 -1.87 0.34 -1.07 2.53 -1.82 5.32 -1.81 2.45 0.01 2.65 -0.06 3.49 -1.08 0.63 -0.75 1.50 -1.24 2.88 -1.59 3.20 -0.83 5.40 -1.90 5.38 -2.62 -0.01 -0.67 -2.18 -2.45 -4.26 -3.51 -0.63 -0.32 -1.25 -0.47 -1.96 -0.47z"},"path16":{"name":"Yogyakarta","path":"m538.10 472.34c0.02 -2.56 0.12 -6.96 -0.25 -9.44 -0.12 -0.80 -0.46 -1.40 -0.95 -1.87 -0.49 -0.46 -1.12 -0.79 -1.82 -1.04 -1.40 -0.50 -3.09 -0.70 -4.45 -1.10 -0.68 -0.20 -1.25 -0.56 -1.76 -1.01 -0.50 -0.44 -0.94 -0.97 -1.35 -1.50 -0.82 -1.06 -1.54 -2.15 -2.51 -2.63 -0.48 -0.24 -0.96 -0.38 -1.45 -0.42 -0.48 -0.04 -0.97 0.02 -1.46 0.18 -0.98 0.32 -1.98 1.04 -3.03 2.17 -1.04 1.12 -3.05 3.97 -4.80 6.54 -0.16 0.23 -0.14 0.21 -0.29 0.44 1.93 0.69 3.70 1.27 6.57 2.72 8.72 4.41 8.75 4.42 13.40 5.97 1.53 0.51 2.76 0.69 4.15 1.00z"},"path17":{"name":"Bali","path":"m660.52 460.22c-0.02 0.03 -0.06 0.08 -0.08 0.11 -0.48 0.72 -0.86 1.71 -1.16 2.77 -0.30 1.07 -0.52 2.22 -0.68 3.28 -0.32 2.13 -0.40 3.89 -0.40 3.89 0.00 0.00 0.27 1.81 0.36 2.50 0.26 -1.07 0.51 -2.09 0.74 -3.04 0.39 -1.63 0.72 -3.55 0.72 -4.27 0.00 -0.72 0.18 -1.93 0.41 -2.67 0.29 -0.97 0.28 -1.81 0.11 -2.57zm22.73 7.24c-0.84 0.05 -1.46 0.32 -1.88 0.78 -1.69 1.88 -3.49 2.72 -6.31 2.97 -2.44 0.22 -3.03 0.14 -5.21 -0.69 -1.40 -0.53 -3.60 -1.03 -5.09 -1.14 -1.44 -0.11 -2.70 -0.34 -2.81 -0.51 -0.10 -0.17 -0.58 -0.31 -1.05 -0.31 -0.70 0.00 -0.91 0.23 -1.10 1.26 -0.37 1.98 0.09 3.48 1.77 5.78 2.25 3.07 2.67 3.36 5.29 3.62 2.93 0.29 6.81 1.66 9.22 3.26 1.99 1.32 5.36 4.75 6.17 6.30 0.44 0.84 0.40 1.06 -0.45 2.31 -1.09 1.60 -1.22 2.89 -0.31 3.13 2.31 0.60 3.51 -0.29 5.09 -3.80 1.34 -2.97 2.35 -3.97 4.91 -4.90 1.17 -0.42 2.54 -1.02 3.03 -1.32 0.49 -0.30 1.79 -1.01 2.88 -1.58 4.54 -2.37 4.71 -4.08 0.82 -8.04 -3.06 -3.12 -4.24 -3.87 -8.82 -5.65 -2.73 -1.06 -4.75 -1.54 -6.16 -1.45zm12.23 20.19c-0.42 0.05 -0.87 0.26 -1.31 0.62 -1.13 0.92 -0.71 2.74 0.85 3.69 1.44 0.88 2.27 0.88 2.74 0.00 0.57 -1.06 0.45 -2.15 -0.37 -3.30 -0.43 -0.61 -0.94 -0.94 -1.49 -1.01 -0.14 -0.02 -0.28 -0.02 -0.42 0.00z"},"path18":{"name":"Nusa Tenggara Barat","path":"m774.39 467.98c-0.57 0.00 -1.25 0.13 -2.42 0.39 -3.36 0.75 -5.38 2.16 -5.73 4.02 -0.25 1.32 -0.21 1.39 2.96 4.42 3.71 3.54 6.45 5.22 7.99 4.88 0.78 -0.17 1.46 0.06 2.96 1.03 3.19 2.05 4.08 2.90 3.80 3.63 -0.21 0.54 -0.53 0.61 -2.03 0.43 -2.22 -0.26 -3.74 0.23 -5.51 1.81 -1.06 0.95 -1.59 1.18 -2.34 1.03 -0.53 -0.10 -1.57 -0.29 -2.31 -0.42 -1.54 -0.26 -2.86 -1.60 -3.50 -3.56 -0.32 -0.97 -0.68 -1.33 -1.56 -1.55 -0.81 -0.20 -1.33 -0.66 -1.79 -1.59 -0.36 -0.72 -1.25 -1.85 -1.98 -2.50l-1.33 -1.20 2.08 -3.75c1.15 -2.06 2.00 -3.96 1.90 -4.23 -0.13 -0.34 -0.94 -0.48 -2.71 -0.48h-2.52 0.00l-0.95 1.43c-1.09 1.65 -1.02 2.82 0.35 5.52l0.83 1.65 -1.00 0.22c-0.55 0.12 -1.19 0.45 -1.43 0.74 -0.65 0.78 -1.76 0.61 -3.94 -0.60 -4.42 -2.47 -6.33 -2.51 -8.59 -0.18 -0.65 0.68 -2.35 1.75 -3.77 2.40 -3.34 1.52 -4.76 2.59 -5.61 4.27 -0.65 1.28 -0.66 1.52 -0.18 3.83 0.51 2.45 0.51 2.48 -0.40 3.78 -0.86 1.24 -0.89 1.45 -0.55 3.53 0.20 1.21 0.46 2.37 0.58 2.57 0.42 0.68 2.48 1.52 5.72 2.34 1.79 0.45 3.60 0.84 4.02 0.86 1.13 0.06 3.05 -0.67 4.39 -1.66 1.14 -0.84 1.28 -0.86 3.62 -0.47 3.23 0.54 6.55 -0.19 9.98 -2.20 2.05 -1.20 2.72 -1.43 3.84 -1.28 2.17 0.29 6.12 -0.36 8.40 -1.38 1.50 -0.67 2.50 -0.89 3.44 -0.77 1.95 0.25 6.38 -2.38 7.65 -4.56 0.50 -0.86 1.22 -1.84 1.60 -2.18 0.65 -0.59 0.70 -0.58 0.92 0.13 0.15 0.48 -0.04 1.20 -0.54 2.00 -0.76 1.23 -0.77 1.27 -0.12 2.60 0.99 2.04 2.40 2.26 6.67 1.05 4.04 -1.15 4.60 -1.17 7.32 -0.23 3.68 1.27 5.51 0.02 2.91 -1.97 -0.85 -0.65 -1.65 -0.92 -2.72 -0.92 -0.92 0.00 -1.43 -0.14 -1.29 -0.36 0.35 -0.56 4.29 -0.42 6.17 0.22 2.05 0.69 5.04 0.53 6.38 -0.34 0.86 -0.56 0.93 -0.82 0.93 -3.12 0.00 -2.80 -0.37 -3.12 -2.07 -1.78 -0.81 0.64 -1.01 0.67 -1.67 0.22 -0.65 -0.43 -0.74 -0.80 -0.64 -2.62 0.10 -1.84 -0.05 -2.45 -1.20 -4.73 -1.70 -3.39 -2.37 -3.83 -5.34 -3.51 -1.98 0.21 -2.45 0.41 -3.49 1.48 -0.66 0.68 -1.32 1.24 -1.48 1.24 -0.15 0.00 -0.54 -0.50 -0.85 -1.11 -0.64 -1.24 -3.63 -2.84 -5.31 -2.84 -1.20 -0.01 -3.41 1.07 -4.36 2.11 -1.59 1.75 -4.75 0.28 -6.39 -2.98 -1.33 -2.65 -2.40 -3.81 -3.51 -3.81 -0.56 0.00 -1.72 -0.25 -2.59 -0.55 -0.71 -0.25 -1.17 -0.38 -1.74 -0.37zm37.11 2.05c-0.42 0.00 -0.88 0.25 -1.41 0.74 -0.93 0.87 -1.03 1.62 -0.41 2.98 0.52 1.13 1.59 1.19 2.71 0.13 0.97 -0.91 1.06 -1.97 0.27 -3.10 -0.35 -0.50 -0.73 -0.76 -1.15 -0.76zm-87.84 2.12c-2.43 -0.06 -4.95 1.47 -8.54 4.97 -1.83 1.79 -3.33 3.54 -3.33 3.90 -0.00 0.36 0.26 1.80 0.59 3.21 0.33 1.40 0.50 2.95 0.37 3.44 -0.31 1.23 -3.24 2.57 -5.72 2.61 -1.42 0.02 -1.91 0.17 -2.00 0.60 -0.25 1.29 0.63 2.37 3.19 3.90 2.59 1.54 2.65 1.56 3.66 0.98 1.28 -0.74 3.12 -0.76 4.80 -0.05 0.71 0.30 1.88 0.54 2.60 0.54 0.72 0.00 1.79 0.33 2.38 0.72 1.31 0.88 2.04 0.79 2.52 -0.29 0.32 -0.72 0.53 -0.79 1.88 -0.59 1.73 0.26 3.33 -0.03 3.33 -0.61 0.00 -0.21 -0.33 -0.86 -0.74 -1.43 -0.73 -1.03 -0.74 -1.06 -0.06 -2.03 1.09 -1.57 3.51 -6.44 5.10 -10.26 1.07 -2.56 1.37 -3.69 1.13 -4.13 -0.74 -1.37 -2.54 -2.63 -4.91 -3.46 -1.38 -0.48 -3.10 -1.13 -3.84 -1.44 -0.83 -0.36 -1.63 -0.55 -2.44 -0.57zm-23.87 25.27c-0.34 0.05 -0.81 0.30 -1.23 0.70 -0.53 0.49 -1.74 1.42 -2.69 2.06 -0.95 0.64 -1.67 1.35 -1.59 1.58 0.08 0.23 0.92 0.53 1.88 0.67 1.26 0.18 2.05 0.56 2.84 1.35 1.28 1.28 1.84 1.25 1.81 -0.10 -0.13 -5.69 -0.17 -6.02 -0.72 -6.23 -0.08 -0.03 -0.18 -0.04 -0.30 -0.02z"},"path19":{"name":"Nusa Tenggara Timur","path":"m934.92 468.06c-0.47 0.03 -0.81 0.35 -1.65 1.19 -1.40 1.40 -1.77 2.81 -1.03 3.97 0.28 0.45 0.53 0.46 1.61 0.07 0.80 -0.29 1.49 -0.34 1.85 -0.14 0.48 0.27 0.26 0.61 -1.29 1.99 -1.79 1.61 -4.41 2.76 -6.28 2.76 -0.93 0.00 -3.44 2.53 -4.46 4.50 -1.20 2.30 -1.58 2.61 -3.84 3.09 -3.03 0.64 -4.77 0.53 -5.88 -0.37 -1.85 -1.50 -4.15 -2.90 -4.76 -2.90 -0.44 0.00 -0.66 -0.34 -0.74 -1.17 -0.10 -1.01 -0.27 -1.18 -1.20 -1.27 -0.67 -0.07 -1.77 0.27 -2.88 0.87 -1.66 0.91 -2.07 0.98 -5.53 0.91 -3.37 -0.06 -3.89 0.02 -5.22 0.80 -0.81 0.48 -1.78 1.20 -2.16 1.62 -0.38 0.42 -1.10 0.75 -1.62 0.75 -1.49 -0.01 -3.81 -1.25 -4.71 -2.51 -0.95 -1.34 -2.13 -1.90 -5.69 -2.71 -1.76 -0.40 -3.02 -0.95 -4.07 -1.78 -1.44 -1.14 -1.72 -1.22 -5.33 -1.45 -2.85 -0.18 -4.25 -0.45 -5.60 -1.08 -2.95 -1.38 -5.59 -1.75 -8.85 -1.24 -1.55 0.24 -3.06 0.35 -3.36 0.23 -1.02 -0.39 -3.96 0.79 -5.23 2.09 -0.68 0.70 -1.49 1.27 -1.82 1.27 -0.32 0.00 -1.38 0.53 -2.36 1.17 -1.50 0.99 -2.09 1.17 -3.93 1.17h-2.16 0.00l-0.11 1.26c-0.06 0.70 -0.49 1.65 -0.97 2.16 -0.47 0.49 -1.01 1.33 -1.21 1.85 -0.21 0.56 -0.80 1.10 -1.44 1.32 -0.90 0.31 -1.24 0.26 -1.97 -0.32 -0.49 -0.38 -1.16 -0.69 -1.50 -0.69 -0.53 0.00 -0.58 0.20 -0.34 1.35 0.15 0.74 0.30 2.08 0.32 2.97l0.04 1.62 1.53 0.11 1.53 0.11v0.00 -1.40c0.00 -1.02 0.24 -1.62 0.90 -2.24l0.90 -0.85v0.00 1.42c0.00 1.58 0.51 2.49 2.65 4.73 1.66 1.73 2.02 1.82 3.41 0.80 1.07 -0.79 4.32 -1.77 5.88 -1.78 0.53 0.00 1.55 0.34 2.25 0.75 0.96 0.57 1.66 0.71 2.81 0.57 0.84 -0.10 3.04 -0.37 4.88 -0.59l3.36 -0.40 2.19 1.09c2.45 1.22 3.03 1.30 4.03 0.54 1.19 -0.90 2.29 -0.62 4.08 1.04 0.93 0.86 1.94 1.67 2.23 1.78 1.01 0.40 4.85 0.02 6.53 -0.65 1.51 -0.61 1.87 -0.62 3.69 -0.19 2.37 0.57 3.08 0.31 5.19 -1.87l1.31 -1.35 2.34 0.37c1.29 0.21 2.90 0.72 3.59 1.14 1.79 1.09 5.43 1.11 7.26 0.03 0.73 -0.43 2.35 -1.04 3.60 -1.36 1.25 -0.32 2.92 -1.02 3.71 -1.55 1.41 -0.95 1.56 -0.97 7.03 -0.97l5.60 -0.01 2.62 -1.37c1.44 -0.75 3.86 -1.69 5.37 -2.07 1.51 -0.39 3.29 -0.88 3.95 -1.09l1.20 -0.39 -0.25 -2.42 -0.24 -2.43 1.28 -0.75c0.73 -0.43 1.38 -1.15 1.51 -1.67 0.14 -0.56 0.48 -0.92 0.88 -0.92 0.36 0.00 0.91 -0.10 1.22 -0.22 0.44 -0.17 0.57 0.02 0.57 0.83 0.00 0.58 0.17 1.22 0.39 1.43 0.27 0.27 0.10 0.46 -0.61 0.63 -1.28 0.32 -3.73 2.26 -3.73 2.95 0.00 0.89 1.07 2.65 1.60 2.65 0.28 0.00 0.86 -0.49 1.28 -1.09 0.43 -0.60 1.37 -1.39 2.09 -1.76 0.73 -0.37 1.91 -1.34 2.64 -2.15 1.17 -1.31 1.50 -1.48 2.93 -1.48 1.41 0.00 1.76 -0.17 2.87 -1.40 1.10 -1.21 1.23 -1.56 1.02 -2.60 -0.31 -1.51 -1.40 -2.10 -3.91 -2.10 -1.92 -0.01 -3.93 0.90 -5.08 2.28 -0.74 0.89 -1.05 0.71 -1.05 -0.62 0.00 -2.32 -2.53 -5.99 -4.57 -6.61 -0.50 -0.15 -0.82 -0.24 -1.10 -0.23zm54.38 1.58c-1.49 0.00 -1.72 0.12 -2.55 1.34 -0.63 0.93 -0.91 1.82 -0.91 2.90 0.00 1.11 -0.26 1.90 -0.90 2.74 -0.99 1.30 -1.23 3.68 -0.45 4.49 0.52 0.53 2.34 0.38 6.20 -0.52 1.38 -0.32 3.57 -0.64 4.85 -0.70 1.29 -0.06 3.39 -0.37 4.68 -0.68 1.29 -0.31 3.35 -0.56 4.59 -0.56 2.14 -0.01 2.34 -0.08 3.87 -1.49 1.92 -1.77 2.07 -2.88 0.69 -5.24l-0.92 -1.58 -6.27 0.19c-3.45 0.10 -6.90 0.29 -7.68 0.42 -1.12 0.18 -1.65 0.06 -2.49 -0.53 -0.71 -0.51 -1.62 -0.76 -2.71 -0.76zm-23.36 2.14c-1.00 0.04 -2.25 0.74 -4.23 2.15 -2.84 2.03 -3.01 2.10 -3.47 1.45 -0.49 -0.70 -2.51 -1.43 -3.98 -1.43 -1.17 0.00 -1.39 0.96 -0.45 1.96l0.80 0.85 -3.27 2.43c-1.83 1.36 -3.27 2.70 -3.27 3.03 0.00 0.35 1.00 1.20 2.43 2.07 1.34 0.81 2.54 1.49 2.67 1.50 0.13 0.01 0.73 -0.39 1.33 -0.90 1.05 -0.88 1.13 -0.90 2.20 -0.35 1.38 0.71 1.68 0.52 2.58 -1.56 0.93 -2.16 1.64 -2.93 2.75 -2.93 0.64 0.00 1.46 -0.61 2.83 -2.14 1.48 -1.64 2.20 -2.16 3.09 -2.25 1.58 -0.15 1.67 -1.21 0.25 -2.72 -0.64 -0.67 -1.20 -1.07 -1.85 -1.16 -0.13 -0.02 -0.27 -0.03 -0.42 -0.02zm16.03 0.38c-1.52 0.01 -2.36 0.58 -4.09 2.78l-1.84 2.34 -0.82 -1.03 -0.82 -1.03 -1.62 0.79c-0.89 0.43 -1.73 1.12 -1.86 1.53 -0.37 1.17 0.43 3.03 1.61 3.73 0.59 0.35 1.50 1.19 2.02 1.88 0.52 0.68 1.12 1.24 1.32 1.24 0.80 0.00 2.81 -1.91 3.34 -3.17 0.30 -0.73 1.02 -1.81 1.58 -2.41 1.69 -1.78 2.56 -6.66 1.18 -6.65zm-158.30 7.62c-0.70 0.08 -1.06 0.58 -1.90 2.62 -0.88 2.13 -0.98 2.71 -0.68 3.78 0.20 0.69 0.26 1.95 0.15 2.79 -0.20 1.44 -0.16 1.53 0.67 1.53 1.38 0.00 2.15 -0.81 2.96 -3.07 0.65 -1.81 0.91 -2.14 1.90 -2.40 0.63 -0.16 1.25 -0.45 1.36 -0.64 0.67 -1.08 -2.92 -4.78 -4.46 -4.60zm185.23 16.51c-0.57 -0.01 -1.30 0.04 -2.26 0.12 -3.18 0.25 -4.66 0.72 -8.47 2.66 -1.76 0.90 -6.58 4.79 -6.58 5.31 0.00 0.25 0.18 0.85 0.40 1.33 0.34 0.76 0.18 1.25 -1.29 3.79 -1.61 2.79 -3.03 4.36 -3.94 4.36 -0.23 0.00 -1.05 -0.65 -1.82 -1.44 -0.77 -0.79 -1.63 -1.44 -1.91 -1.44 -0.28 0.00 -1.06 0.49 -1.74 1.08 -0.68 0.59 -1.46 1.08 -1.75 1.08 -0.29 0.00 -1.61 -0.67 -2.93 -1.48 -3.28 -2.01 -4.45 -1.86 -7.26 0.88 -1.11 1.09 -3.46 3.23 -5.21 4.77 -2.85 2.51 -3.16 2.90 -2.98 3.79 0.11 0.55 -0.05 1.59 -0.35 2.32 -0.36 0.87 -0.47 1.79 -0.32 2.71 0.21 1.25 0.12 1.49 -0.86 2.31 -1.18 0.99 -1.86 3.17 -1.19 3.83 0.21 0.21 1.24 0.67 2.29 1.03 1.58 0.53 1.91 0.80 1.91 1.48 0.00 0.67 -0.45 1.05 -2.22 1.91 -2.25 1.09 -3.85 2.35 -4.48 3.52 -0.60 1.12 0.30 3.05 1.79 3.84 1.07 0.56 2.08 0.70 5.32 0.71 3.71 0.02 4.09 -0.05 5.35 -0.91 0.75 -0.51 2.21 -1.24 3.24 -1.62 1.03 -0.39 2.81 -1.37 3.95 -2.18l2.07 -1.48 4.37 -0.24c2.40 -0.13 4.71 -0.43 5.13 -0.66 0.42 -0.23 1.85 -1.63 3.18 -3.12 1.33 -1.48 3.13 -3.14 4.01 -3.69 0.88 -0.55 2.62 -2.30 3.88 -3.88 1.26 -1.58 2.96 -3.36 3.79 -3.96 0.82 -0.59 1.88 -1.36 2.34 -1.71 0.61 -0.45 0.92 -1.14 1.10 -2.47 0.14 -1.01 0.52 -2.05 0.84 -2.32 0.32 -0.27 0.97 -0.79 1.44 -1.15l0.85 -0.67 -0.47 -4.40 -0.47 -4.39 2.46 -2.48 2.46 -2.48 -0.81 -1.99c-0.86 -2.11 -1.14 -2.67 -2.85 -2.69zm-169.52 12.54c-0.48 0.00 -1.90 0.51 -3.15 1.14l-2.27 1.14 -2.58 -0.64c-2.14 -0.53 -2.81 -0.57 -3.89 -0.21 -0.72 0.24 -1.47 0.33 -1.68 0.20 -0.20 -0.13 -2.92 -0.04 -6.03 0.20 -7.03 0.53 -9.54 1.35 -11.86 3.88 -0.84 0.91 -1.53 1.85 -1.53 2.08 0.00 0.87 3.03 4.90 4.32 5.76 1.78 1.18 8.13 2.38 12.22 2.32 1.68 -0.03 3.95 0.12 5.04 0.33 1.69 0.32 2.21 0.63 3.60 2.14 1.78 1.94 3.00 2.69 5.31 3.27 1.84 0.46 3.78 2.08 4.42 3.68 0.58 1.46 1.41 2.42 3.99 4.58 1.85 1.55 2.24 1.72 4.50 1.96 1.36 0.14 2.96 0.47 3.55 0.74 1.72 0.78 3.77 0.64 5.52 -0.36 0.95 -0.54 2.15 -0.90 3.06 -0.91 2.28 -0.02 3.31 -0.66 5.49 -3.39 1.70 -2.14 1.97 -2.67 1.79 -3.60 -0.22 -1.18 -2.88 -3.92 -4.76 -4.91 -0.78 -0.41 -1.44 -1.29 -2.24 -2.97 -0.86 -1.82 -1.41 -2.52 -2.33 -2.96 -0.66 -0.32 -1.47 -1.03 -1.80 -1.59 -0.77 -1.30 -1.39 -1.48 -3.81 -1.09 -1.08 0.17 -2.17 0.23 -2.42 0.14 -0.73 -0.28 -1.91 -2.44 -1.91 -3.49 0.00 -0.79 -0.28 -1.09 -1.53 -1.66 -0.84 -0.38 -1.88 -0.70 -2.32 -0.70 -0.50 -0.01 -1.73 -0.95 -3.29 -2.53 -1.73 -1.74 -2.77 -2.52 -3.38 -2.52zm115.00 28.05c-0.94 0.00 -1.52 0.37 -3.04 1.98 -1.70 1.80 -1.85 2.09 -1.63 3.15 0.14 0.64 0.32 1.28 0.41 1.43 0.22 0.38 1.33 0.33 2.45 -0.09 0.57 -0.22 1.16 -0.88 1.49 -1.68 0.31 -0.73 0.97 -1.87 1.47 -2.52 0.75 -0.98 0.83 -1.29 0.46 -1.73 -0.25 -0.30 -0.97 -0.54 -1.61 -0.54zm-50.29 9.35c-1.27 0.00 -1.75 0.20 -2.61 1.11 -0.58 0.61 -1.82 1.51 -2.76 1.99 -2.04 1.04 -2.22 1.91 -0.54 2.75 2.36 1.18 4.91 0.70 7.73 -1.45 1.35 -1.03 1.44 -1.62 0.45 -3.23 -0.63 -1.03 -0.90 -1.17 -2.27 -1.17zm47.83 0.79c-0.74 -0.15 -5.62 3.43 -6.49 4.76 -0.76 1.16 -5.29 3.54 -8.61 4.53 -3.66 1.09 -3.96 1.45 -3.44 4.16 0.22 1.17 0.67 2.33 0.98 2.59 0.78 0.62 2.38 0.24 4.34 -1.04 0.87 -0.57 1.86 -1.04 2.18 -1.04 0.33 0.00 1.31 -0.24 2.19 -0.52 0.88 -0.29 2.26 -0.69 3.08 -0.90 1.15 -0.29 1.59 -0.63 1.94 -1.48 0.52 -1.25 2.65 -2.85 3.80 -2.85 1.20 0.00 1.73 -0.86 1.15 -1.86 -0.28 -0.48 -0.48 -1.95 -0.48 -3.52 0.00 -2.31 -0.09 -2.71 -0.65 -2.82z"},"path20":{"name":"Kalimantan Barat","path":"m537.25 302.84 2.53 -3.93c0.00 0.00 1.85 -0.64 3.81 -1.73 0.98 -0.54 1.99 -1.19 2.82 -1.93 0.83 -0.74 1.47 -1.56 1.71 -2.44 0.48 -1.76 1.04 -4.41 1.29 -6.82 0.12 -1.20 0.16 -2.35 0.07 -3.29 -0.09 -0.94 -0.31 -1.69 -0.71 -2.09 -0.80 -0.80 -1.60 -2.25 -2.37 -3.81 -0.76 -1.56 -1.48 -3.25 -2.13 -4.53 -0.64 -1.28 -1.20 -2.57 -1.37 -4.01 -0.08 -0.72 -0.06 -1.49 0.10 -2.31 0.16 -0.82 0.46 -1.70 0.94 -2.67 0.48 -0.96 0.76 -1.78 0.90 -2.50 0.14 -0.71 0.13 -1.31 0.03 -1.84 -0.20 -1.04 -0.76 -1.77 -1.24 -2.41 -0.24 -0.32 -0.26 -0.74 -0.13 -1.18 0.14 -0.44 0.43 -0.90 0.81 -1.30 0.38 -0.40 0.85 -0.74 1.35 -0.94 0.50 -0.20 1.02 -0.26 1.50 -0.10 0.48 0.16 1.02 0.18 1.58 0.10 0.55 -0.09 1.11 -0.28 1.63 -0.54 1.04 -0.52 1.92 -1.32 2.25 -2.13 0.32 -0.80 1.77 -2.33 3.33 -3.81 1.56 -1.48 3.25 -2.93 4.05 -3.57 0.80 -0.64 1.76 -1.60 2.57 -2.65 0.80 -1.04 1.44 -2.17 1.60 -3.13 0.08 -0.48 0.68 -1.24 1.59 -2.13 0.91 -0.88 2.14 -1.88 3.46 -2.85 1.32 -0.96 2.75 -1.89 4.06 -2.61 1.31 -0.72 2.52 -1.24 3.40 -1.40 1.77 -0.32 3.85 -0.32 6.02 -0.32 2.17 0.00 4.41 0.00 6.50 -0.32 2.09 -0.32 6.34 -1.93 10.51 -3.53 4.17 -1.60 8.26 -3.21 10.03 -3.53 1.77 -0.32 4.01 0.08 5.82 0.12 0.90 0.02 1.70 -0.05 2.26 -0.35 0.28 -0.15 0.51 -0.35 0.66 -0.63 0.16 -0.28 0.24 -0.63 0.24 -1.07 0.00 -1.77 -0.24 -3.13 -0.12 -4.25 0.06 -0.56 0.21 -1.06 0.53 -1.52 0.32 -0.46 0.80 -0.88 1.52 -1.28 0.72 -0.40 1.32 -0.80 1.84 -1.28 0.51 -0.48 0.93 -1.03 1.29 -1.73 0.72 -1.40 1.20 -3.41 1.69 -6.62 0.48 -3.21 1.12 -5.86 2.09 -8.14 0.48 -1.14 1.04 -2.20 1.70 -3.18 0.66 -0.99 1.42 -1.91 2.31 -2.79 0.88 -0.88 2.02 -1.74 3.24 -2.54 1.22 -0.80 2.51 -1.53 3.70 -2.15 2.37 -1.24 4.29 -2.05 4.29 -2.05 0.00 0.00 -1.20 -1.76 -2.17 -3.97 -0.48 -1.10 -0.90 -2.32 -1.08 -3.47 -0.18 -1.16 -0.12 -2.26 0.36 -3.14 0.48 -0.88 1.28 -1.81 2.22 -2.69 0.93 -0.89 2.00 -1.74 3.00 -2.48 2.01 -1.48 3.77 -2.53 3.77 -2.53l0.75 -8.41c-1.22 -0.53 -1.78 -0.58 -4.37 -0.23l-3.06 0.41 -2.52 2.63c-2.11 2.20 -2.85 2.74 -4.59 3.28l-2.07 0.65 -1.20 -1.16c-1.17 -1.13 -1.26 -1.16 -3.52 -0.92 -2.15 0.22 -2.40 0.17 -3.44 -0.71 -1.38 -1.16 -3.71 -2.02 -5.50 -2.02 -0.76 0.00 -1.71 -0.29 -2.20 -0.67 -0.47 -0.37 -1.39 -0.94 -2.04 -1.27 -1.08 -0.55 -1.16 -0.72 -0.95 -1.82 0.19 -0.99 0.09 -1.28 -0.52 -1.61 -1.39 -0.74 -4.29 -1.11 -5.35 -0.68 -0.60 0.24 -3.70 0.42 -7.82 0.44l-6.83 0.04 -2.52 1.19c-5.31 2.50 -5.02 2.29 -5.24 3.85 -0.11 0.79 -0.48 1.96 -0.82 2.60 -0.34 0.64 -0.83 2.10 -1.08 3.24 -0.52 2.29 -1.28 2.95 -3.40 2.96 -1.57 0.01 -3.58 1.07 -5.02 2.66 -1.42 1.56 -2.60 1.91 -4.66 1.36 -2.11 -0.57 -3.09 -0.52 -4.60 0.20 -1.12 0.54 -1.43 0.55 -2.44 0.12 -0.63 -0.27 -1.91 -0.46 -2.83 -0.42 -1.15 0.05 -2.34 -0.23 -3.77 -0.87 -2.30 -1.03 -3.51 -1.03 -7.76 -0.01 -1.24 0.30 -3.20 0.72 -4.36 0.95 -1.63 0.32 -2.46 0.73 -3.62 1.80 -0.98 0.90 -2.08 1.51 -3.14 1.75 -0.90 0.20 -2.40 0.70 -3.34 1.10 -1.41 0.61 -1.95 0.67 -3.07 0.37 -0.75 -0.20 -1.57 -0.63 -1.84 -0.94 -0.26 -0.32 -1.46 -1.23 -2.65 -2.03 -1.19 -0.80 -3.50 -2.81 -5.12 -4.47 -1.64 -1.67 -3.56 -3.27 -4.32 -3.58 -2.13 -0.89 -3.85 -2.44 -4.38 -3.95 -0.69 -1.94 -1.38 -2.61 -3.16 -3.06 -1.16 -0.29 -1.74 -0.70 -2.31 -1.62 -0.42 -0.67 -1.31 -1.64 -1.98 -2.15 -1.59 -1.22 -2.67 -2.99 -2.67 -4.42 0.00 -1.43 -1.05 -3.50 -2.45 -4.83 -1.25 -1.19 -1.20 -1.59 0.64 -5.20 1.75 -3.43 1.08 -4.28 -1.52 -1.94 -1.17 1.05 -2.13 1.52 -4.22 2.03 -4.40 1.09 -4.18 0.91 -4.43 3.57 -0.36 3.85 -1.28 5.13 -6.72 9.34l-1.98 1.53 -0.20 3.04c-0.13 1.92 -0.44 3.48 -0.85 4.23 -0.42 0.77 -0.58 1.57 -0.44 2.25 0.19 0.94 0.07 1.12 -1.24 1.79 -0.80 0.41 -1.54 0.98 -1.65 1.27 -0.11 0.29 0.14 1.48 0.56 2.63 0.42 1.15 0.76 2.68 0.76 3.40 0.00 1.16 -0.21 1.46 -1.76 2.58 -0.97 0.70 -1.85 1.48 -1.95 1.74 -0.10 0.26 0.37 2.15 1.05 4.19 1.04 3.14 1.18 3.89 0.86 4.86 -0.27 0.82 -0.26 1.43 0.04 2.18 0.23 0.57 0.39 2.05 0.36 3.29 -0.08 2.90 0.34 3.69 1.94 3.69 1.64 0.00 3.14 1.35 5.29 4.75 2.28 3.59 2.32 3.74 1.16 4.03 -0.81 0.20 -0.93 0.39 -0.78 1.21 0.10 0.53 0.35 1.86 0.55 2.95 0.20 1.09 0.47 2.24 0.60 2.56 0.20 0.51 0.00 0.56 -1.41 0.41 -2.81 -0.32 -3.25 0.82 -1.54 3.94 0.65 1.19 0.68 1.50 0.29 2.81 -0.38 1.27 -0.35 1.65 0.21 2.80 0.76 1.56 4.25 3.64 6.13 3.66 0.94 0.01 1.21 0.19 1.39 0.92 0.13 0.50 0.57 1.17 1.00 1.48 0.62 0.46 0.64 0.53 0.11 0.35 -0.36 -0.12 -1.29 -0.32 -2.06 -0.45 -1.30 -0.21 -1.43 -0.15 -1.80 0.81 -0.22 0.57 -0.33 1.83 -0.23 2.81 0.14 1.47 0.39 1.98 1.44 2.95 1.72 1.58 3.50 1.89 5.45 0.94 1.30 -0.63 1.64 -0.67 2.56 -0.28 1.31 0.56 2.47 1.81 2.15 2.33 -0.13 0.21 -1.18 0.38 -2.33 0.38 -1.25 0.00 -2.23 0.18 -2.44 0.45 -0.19 0.25 -0.63 2.11 -0.97 4.14 -0.63 3.68 -0.63 3.69 0.15 4.95 0.43 0.69 1.06 1.26 1.40 1.26 0.34 0.00 2.25 -0.80 4.25 -1.78 4.01 -1.97 5.50 -3.41 5.50 -5.35 0.00 -1.36 0.09 -1.38 1.55 -0.28 0.63 0.47 1.51 0.97 1.96 1.10 0.66 0.20 0.81 0.51 0.81 1.68 0.00 1.89 0.77 3.30 2.30 4.20 2.04 1.21 2.52 2.25 2.22 4.85 -0.14 1.23 -0.39 3.44 -0.55 4.91 -0.28 2.62 -0.32 2.70 -2.13 4.37 -2.90 2.68 -2.52 4.39 1.37 6.25 2.17 1.04 2.22 1.09 2.91 3.35 0.65 2.09 0.66 2.40 0.17 3.57 -0.77 1.83 -0.68 3.94 0.22 5.20 0.41 0.58 0.98 2.12 1.25 3.43 0.27 1.30 0.82 2.92 1.22 3.60 0.94 1.59 0.92 1.85 -0.22 3.04l-0.95 0.99 1.16 1.73c1.15 1.71 1.16 1.77 1.00 5.23 -0.13 2.99 -0.06 3.67 0.53 4.63 0.62 1.01 0.81 1.10 1.98 0.92 0.71 -0.12 2.44 -0.88 3.85 -1.70 1.40 -0.82 3.12 -1.57 3.83 -1.67 1.13 -0.16 1.39 -0.04 2.25 1.09 0.53 0.70 0.97 1.54 0.97 1.86 0.00 1.04 0.67 1.89 1.80 2.29 0.59 0.21 0.96 0.21 1.32 0.14z"},"path21":{"name":"Kalimantan Tengah","path":"m702.98 245.55c0.03 -1.17 0.07 -2.23 0.07 -2.67 0.00 -0.68 -0.57 -1.64 -1.33 -2.75 -0.77 -1.11 -1.73 -2.36 -2.52 -3.60 -0.40 -0.62 -1.03 -1.09 -1.79 -1.49 -0.76 -0.40 -1.64 -0.72 -2.52 -1.06 -0.88 -0.34 -1.76 -0.69 -2.52 -1.15 -0.76 -0.45 -1.40 -1.01 -1.79 -1.75 -0.79 -1.47 -1.13 -3.12 -1.28 -4.65 -0.14 -1.53 -0.08 -2.95 -0.08 -3.97 0.00 -0.51 -0.24 -1.06 -0.60 -1.65 -0.36 -0.59 -0.84 -1.20 -1.33 -1.84 -0.48 -0.64 -0.96 -1.30 -1.33 -1.97 -0.36 -0.67 -0.60 -1.35 -0.60 -2.03v0.00 -11.34c0.00 -0.85 -0.23 -1.36 -0.61 -1.60 -0.39 -0.24 -0.93 -0.21 -1.57 0.01 -1.28 0.45 -2.92 1.70 -4.39 3.18 -0.74 0.74 -1.28 1.15 -1.67 1.34 -0.39 0.19 -0.64 0.15 -0.80 -0.00 -0.31 -0.31 -0.26 -1.11 -0.26 -1.56 0.00 -0.45 0.17 -1.87 0.45 -3.49 0.28 -1.62 0.68 -3.43 1.14 -4.68 0.45 -1.25 0.85 -4.14 1.11 -7.15 0.26 -3.01 0.37 -6.13 0.26 -7.83 -0.06 -0.85 -0.30 -1.46 -0.67 -1.90 -0.38 -0.44 -0.89 -0.70 -1.48 -0.85 -1.19 -0.31 -2.72 -0.20 -4.20 -0.20 -1.47 0.00 -3.58 0.51 -5.59 1.16 -2.01 0.65 -3.94 1.45 -5.08 2.01 -0.57 0.28 -1.25 0.44 -1.98 0.50 -0.73 0.06 -1.52 0.02 -2.30 -0.07 -1.56 -0.20 -3.09 -0.65 -4.11 -1.11 -1.02 -0.45 -2.55 -0.51 -4.20 -0.45 -1.65 0.06 -3.40 0.23 -4.88 0.23 -0.50 0.00 -1.13 0.03 -1.86 0.04 -0.12 0.05 -1.86 0.78 -4.15 1.98 -1.18 0.62 -2.48 1.35 -3.70 2.15 -1.22 0.80 -2.36 1.66 -3.24 2.54 -0.88 0.88 -1.64 1.81 -2.31 2.79 -0.66 0.99 -1.22 2.04 -1.70 3.18 -0.96 2.29 -1.60 4.93 -2.09 8.14 -0.48 3.21 -0.96 5.22 -1.69 6.62 -0.36 0.70 -0.78 1.25 -1.29 1.73 -0.51 0.48 -1.11 0.88 -1.84 1.28 -0.72 0.40 -1.20 0.82 -1.52 1.28 -0.32 0.46 -0.47 0.96 -0.53 1.52 -0.12 1.12 0.12 2.49 0.12 4.25 0.00 0.44 -0.09 0.79 -0.24 1.07 -0.16 0.28 -0.38 0.48 -0.66 0.63 -0.57 0.30 -1.36 0.37 -2.26 0.35 -1.81 -0.04 -4.05 -0.44 -5.82 -0.12 -1.77 0.32 -5.86 1.93 -10.03 3.53 -4.17 1.60 -8.42 3.21 -10.51 3.53 -2.09 0.32 -4.33 0.32 -6.50 0.32 -2.17 0.00 -4.25 -0.00 -6.02 0.32 -0.88 0.16 -2.09 0.68 -3.40 1.40 -1.31 0.72 -2.74 1.65 -4.06 2.61 -1.32 0.96 -2.55 1.96 -3.46 2.85 -0.91 0.88 -1.51 1.64 -1.59 2.13 -0.16 0.96 -0.80 2.09 -1.60 3.13 -0.80 1.04 -1.76 2.00 -2.57 2.65 -0.80 0.64 -2.49 2.09 -4.05 3.57 -1.56 1.48 -3.01 3.01 -3.33 3.81 -0.32 0.80 -1.20 1.60 -2.25 2.13 -0.52 0.26 -1.08 0.45 -1.63 0.54 -0.55 0.09 -1.09 0.06 -1.58 -0.10 -0.48 -0.16 -1.00 -0.10 -1.50 0.10 -0.50 0.20 -0.97 0.54 -1.35 0.94 -0.38 0.40 -0.67 0.86 -0.81 1.30 -0.14 0.44 -0.11 0.86 0.13 1.18 0.48 0.64 1.04 1.36 1.24 2.41 0.10 0.52 0.11 1.12 -0.03 1.84 -0.14 0.71 -0.42 1.53 -0.90 2.50 -0.48 0.96 -0.78 1.84 -0.94 2.67 -0.16 0.82 -0.18 1.59 -0.10 2.31 0.16 1.44 0.72 2.73 1.37 4.01 0.64 1.28 1.36 2.97 2.13 4.53 0.76 1.56 1.56 3.01 2.37 3.81 0.40 0.40 0.62 1.14 0.71 2.09 0.09 0.94 0.05 2.09 -0.07 3.29 -0.24 2.41 -0.80 5.06 -1.29 6.82 -0.24 0.88 -0.88 1.71 -1.71 2.44 -0.83 0.74 -1.84 1.39 -2.82 1.93 -1.97 1.08 -3.81 1.73 -3.81 1.73l-2.53 3.93c0.48 -0.10 0.88 -0.41 1.33 -1.18 0.78 -1.33 1.00 -1.33 1.77 -0.02 0.34 0.57 1.36 1.48 2.28 2.02 1.66 0.97 1.67 0.97 3.87 0.43 1.21 -0.30 3.98 -1.53 6.15 -2.74 3.65 -2.03 4.11 -2.19 6.19 -2.19 1.98 0.00 2.39 0.13 3.47 1.08 1.58 1.38 3.84 1.49 5.66 0.26 1.00 -0.68 1.28 -1.16 1.60 -2.79l0.39 -1.97 1.58 3.06 1.58 3.06 0.13 4.68c0.07 2.57 0.16 6.31 0.20 8.30 0.08 4.22 0.39 4.82 2.43 4.82 1.12 0.00 1.76 -0.32 3.46 -1.76 1.15 -0.97 2.65 -2.36 3.35 -3.10 1.42 -1.52 4.35 -3.05 5.86 -3.05 1.34 -0.01 3.21 0.81 5.91 2.57 2.05 1.34 2.34 1.42 3.38 1.06 0.63 -0.22 1.50 -0.40 1.94 -0.40 0.44 0.00 1.91 -0.82 3.27 -1.83 1.36 -1.01 3.61 -2.49 4.99 -3.30 3.14 -1.83 3.39 -2.13 3.16 -3.82 -0.13 -0.94 0.04 -1.80 0.55 -2.79 1.08 -2.12 1.61 -2.45 2.44 -1.53 0.38 0.42 1.45 1.15 2.39 1.62 1.14 0.58 1.78 1.16 1.92 1.76 0.28 1.10 2.23 2.86 4.31 3.87l1.56 0.76 2.57 -1.32c3.12 -1.60 4.72 -1.73 5.32 -0.41 0.50 1.10 0.54 3.16 0.09 4.72 -0.26 0.89 -0.17 1.46 0.40 2.61 0.87 1.76 1.68 2.03 4.56 1.53 2.21 -0.39 8.27 -3.20 9.67 -4.48 0.66 -0.60 0.81 -0.64 0.81 -0.18 0.00 0.32 0.62 0.81 1.45 1.14 1.28 0.51 1.59 0.52 2.69 0.06l1.24 -0.52 0.36 0.75c0.61 -0.98 1.22 -2.00 1.67 -2.96 0.53 -1.12 0.89 -2.14 0.89 -2.88 0.00 -1.48 -0.85 -2.95 -1.05 -4.45 -0.10 -0.75 -0.04 -1.51 0.38 -2.28 0.41 -0.77 1.18 -1.55 2.48 -2.34 2.61 -1.59 4.94 -2.61 6.72 -3.37 1.79 -0.77 3.04 -1.28 3.49 -1.85 0.45 -0.57 0.62 -1.30 0.96 -2.21 0.34 -0.91 0.85 -1.99 1.99 -3.23 1.13 -1.25 1.99 -1.87 2.44 -2.50 0.23 -0.31 0.36 -0.62 0.37 -1.01 0.01 -0.39 -0.09 -0.86 -0.31 -1.48 -0.45 -1.25 -1.36 -2.61 -1.59 -3.83 -0.11 -0.61 -0.06 -1.19 0.31 -1.69 0.37 -0.51 1.05 -0.95 2.18 -1.29 2.27 -0.68 4.31 -0.51 6.18 -0.80 0.94 -0.14 1.83 -0.40 2.69 -0.93 0.86 -0.53 1.68 -1.34 2.47 -2.59 1.59 -2.50 3.69 -6.64 5.39 -10.15 1.70 -3.52 3.01 -6.41 3.01 -6.41 0.00 0.00 -0.06 -0.91 0.00 -1.93 0.06 -1.02 0.23 -2.16 0.68 -2.61 0.45 -0.45 1.47 -0.57 2.58 -0.77 0.55 -0.10 1.13 -0.22 1.66 -0.41 0.54 -0.20 1.03 -0.46 1.43 -0.86 1.41 -1.41 2.21 -2.86 2.43 -3.23z"},"path22":{"name":"Kalimantan Selatan","path":"m730.05 278.58 -2.95 -0.52c0.00 0.00 -7.94 -0.91 -13.84 -2.04 -1.47 -0.28 -2.44 -0.67 -3.06 -1.12 -0.62 -0.45 -0.91 -0.97 -1.02 -1.52 -0.23 -1.11 0.23 -2.35 0.00 -3.49 -0.45 -2.27 -0.23 -5.22 -0.91 -7.94 -0.17 -0.68 -0.17 -1.30 -0.06 -1.89 0.11 -0.59 0.34 -1.13 0.63 -1.66 0.57 -1.05 1.36 -2.02 1.93 -3.04 0.28 -0.51 0.38 -0.98 0.35 -1.44 -0.03 -0.46 -0.19 -0.92 -0.41 -1.40 -0.45 -0.96 -1.19 -2.04 -1.76 -3.52 -0.28 -0.74 -0.78 -1.35 -1.37 -1.85 -0.59 -0.50 -1.26 -0.89 -1.90 -1.19 -1.28 -0.60 -2.41 -0.82 -2.41 -0.82 0.00 0.00 -1.13 2.04 -2.72 3.63 -0.40 0.40 -0.89 0.67 -1.43 0.86 -0.54 0.20 -1.11 0.32 -1.66 0.41 -1.11 0.20 -2.13 0.31 -2.58 0.77 -0.45 0.45 -0.62 1.59 -0.68 2.61 -0.06 1.02 0.00 1.93 0.00 1.93 0.00 0.00 -1.30 2.89 -3.01 6.41 -1.70 3.52 -3.80 7.66 -5.39 10.15 -0.79 1.25 -1.62 2.06 -2.47 2.59 -0.86 0.53 -1.75 0.79 -2.69 0.93 -1.87 0.28 -3.91 0.12 -6.18 0.80 -1.13 0.34 -1.82 0.78 -2.18 1.29 -0.37 0.51 -0.42 1.08 -0.31 1.69 0.23 1.22 1.13 2.58 1.59 3.83 0.23 0.62 0.33 1.09 0.31 1.48 -0.01 0.39 -0.14 0.70 -0.37 1.01 -0.45 0.62 -1.31 1.25 -2.44 2.50 -1.13 1.25 -1.65 2.33 -1.99 3.23 -0.34 0.91 -0.51 1.65 -0.96 2.21 -0.45 0.57 -1.70 1.08 -3.49 1.85 -1.79 0.77 -4.11 1.79 -6.72 3.37 -1.30 0.79 -2.07 1.57 -2.48 2.34 -0.41 0.77 -0.48 1.53 -0.38 2.28 0.20 1.50 1.05 2.98 1.05 4.45 0.00 0.74 -0.36 1.76 -0.89 2.88 -0.46 0.96 -1.07 1.98 -1.67 2.96l0.25 0.53c0.41 0.87 1.02 1.44 1.90 1.78 0.71 0.27 1.92 0.84 2.70 1.26l1.42 0.77 0.78 -0.91 0.78 -0.91 0.41 1.79c0.23 0.98 0.88 2.46 1.46 3.29 1.01 1.45 1.05 1.66 1.28 7.25 0.13 3.16 0.22 6.55 0.19 7.51 -0.04 1.46 0.12 1.93 0.94 2.79 1.31 1.36 2.37 1.31 4.96 -0.26 2.99 -1.80 6.61 -3.59 9.36 -4.63 1.29 -0.49 3.05 -1.29 3.91 -1.80 0.86 -0.50 1.79 -0.92 2.07 -0.92 0.28 -0.00 1.88 -0.58 3.57 -1.29 1.68 -0.70 3.87 -1.53 4.85 -1.83 0.99 -0.30 2.89 -1.10 4.22 -1.77 1.33 -0.67 2.67 -1.22 2.98 -1.22 0.31 0.00 1.24 -0.63 2.08 -1.40 1.03 -0.95 2.21 -1.60 3.68 -2.02 2.49 -0.71 2.72 -0.88 3.32 -2.44l0.45 -1.15 -0.18 1.44c-0.10 0.79 -0.28 2.12 -0.41 2.96 -0.19 1.24 -0.04 1.89 0.77 3.49 0.91 1.79 0.97 2.18 0.75 4.47 -0.19 1.90 -0.11 2.83 0.31 3.84 0.53 1.26 0.64 1.33 1.82 1.13 0.89 -0.14 2.06 -0.92 3.97 -2.65 2.69 -2.43 2.71 -2.46 2.52 -3.95 -0.10 -0.83 -0.02 -2.00 0.19 -2.60 0.25 -0.73 0.27 -1.94 0.05 -3.63 -0.18 -1.39 -0.25 -2.61 -0.15 -2.71 0.10 -0.10 0.62 0.35 1.17 0.99 0.91 1.07 1.04 1.12 1.57 0.60 0.67 -0.65 1.84 -6.08 1.51 -6.96 -0.61 -1.60 -2.19 -0.84 -3.42 1.65l-0.70 1.41 -0.71 -2.44c-0.45 -1.56 -0.65 -3.06 -0.54 -4.16 0.17 -1.71 -0.27 -2.78 -1.13 -2.78 -0.23 0.00 -1.42 0.93 -2.65 2.07 -1.80 1.67 -2.48 2.63 -3.49 4.95 -0.96 2.19 -1.26 2.63 -1.27 1.86 -0.01 -1.28 2.20 -5.33 3.98 -7.30 2.97 -3.28 3.18 -5.13 1.04 -9.06 -0.99 -1.81 -1.34 -2.81 -1.13 -3.18 0.26 -0.46 0.44 -0.38 1.08 0.44 0.43 0.54 0.77 1.27 0.77 1.61 0.00 1.91 2.96 1.80 4.46 -0.17 1.46 -1.92 1.71 -2.95 1.77 -7.57l0.06 -4.32 -0.99 -0.11c-1.14 -0.13 -1.31 -0.95 -0.30 -1.49 0.84 -0.45 3.41 -0.57 4.94 -0.23 1.44 0.32 1.53 0.17 2.56 -4.10 0.27 -1.11 0.47 -1.95 0.72 -2.96z"},"path23":{"name":"Kalimantan Timur","path":"m663.98 149.72c-0.17 0.65 -0.29 1.30 -0.36 2.16 -0.19 2.43 -0.23 2.52 -1.10 2.43 -0.49 -0.05 -1.34 -0.42 -1.87 -0.81 -1.50 -1.10 -3.33 -0.82 -7.86 1.19 -1.20 0.53 -1.38 0.52 -2.88 -0.16 -0.12 -0.05 -0.18 -0.04 -0.29 -0.09l-0.75 8.41c-0.00 0.00 -1.76 1.04 -3.77 2.53 -1.00 0.74 -2.07 1.59 -3.00 2.48 -0.93 0.89 -1.74 1.81 -2.22 2.69 -0.48 0.88 -0.54 1.99 -0.36 3.14 0.18 1.16 0.60 2.37 1.09 3.47 0.96 2.21 2.17 3.97 2.17 3.97 0.00 0.00 -0.14 0.07 -0.14 0.07 0.73 -0.01 1.35 -0.04 1.86 -0.04 1.47 0.00 3.23 -0.17 4.88 -0.23 1.65 -0.06 3.18 0.00 4.20 0.45 1.02 0.45 2.55 0.91 4.11 1.10 0.78 0.10 1.57 0.14 2.30 0.07 0.73 -0.06 1.42 -0.22 1.98 -0.50 1.13 -0.57 3.06 -1.36 5.08 -2.01 2.01 -0.65 4.11 -1.16 5.59 -1.16 1.47 0.00 3.01 -0.11 4.20 0.20 0.60 0.16 1.11 0.42 1.48 0.86 0.38 0.44 0.62 1.05 0.67 1.90 0.11 1.70 -0.00 4.82 -0.26 7.83 -0.26 3.01 -0.65 5.90 -1.10 7.15 -0.45 1.25 -0.85 3.06 -1.14 4.68 -0.28 1.62 -0.45 3.03 -0.45 3.49 0.00 0.45 -0.06 1.25 0.26 1.56 0.16 0.16 0.40 0.19 0.80 0.00 0.39 -0.19 0.93 -0.60 1.67 -1.34 1.47 -1.48 3.12 -2.72 4.39 -3.18 0.64 -0.23 1.19 -0.26 1.57 -0.01 0.39 0.24 0.61 0.75 0.61 1.60v0.00 11.34c0.00 0.68 0.24 1.36 0.60 2.03 0.36 0.67 0.84 1.33 1.32 1.97 0.48 0.64 0.96 1.25 1.33 1.84 0.36 0.59 0.60 1.14 0.60 1.65 0.00 1.02 -0.06 2.44 0.08 3.97 0.14 1.53 0.48 3.18 1.28 4.65 0.40 0.74 1.03 1.29 1.79 1.75 0.76 0.45 1.64 0.81 2.52 1.15 0.88 0.34 1.76 0.67 2.52 1.06 0.76 0.40 1.40 0.86 1.79 1.49 0.79 1.25 1.76 2.50 2.52 3.60 0.77 1.11 1.33 2.07 1.33 2.75 0.00 0.43 -0.04 1.50 -0.07 2.67 0.03 -0.05 0.30 -0.40 0.30 -0.40 0.00 0.00 1.14 0.23 2.41 0.82 0.64 0.30 1.31 0.69 1.90 1.19 0.59 0.50 1.08 1.11 1.36 1.85 0.57 1.47 1.31 2.55 1.76 3.52 0.23 0.48 0.38 0.94 0.41 1.40 0.03 0.46 -0.07 0.93 -0.35 1.44 -0.57 1.02 -1.36 1.99 -1.93 3.04 -0.28 0.52 -0.51 1.07 -0.63 1.65 -0.11 0.58 -0.11 1.21 0.06 1.89 0.68 2.72 0.45 5.67 0.91 7.94 0.23 1.13 -0.23 2.38 0.00 3.49 0.11 0.55 0.40 1.07 1.02 1.52 0.62 0.45 1.59 0.83 3.06 1.12 5.90 1.13 13.84 2.04 13.84 2.04l2.95 0.52c0.17 -0.70 0.41 -1.69 0.50 -2.05 0.34 -1.40 0.31 -1.65 -0.26 -2.07 -0.36 -0.26 -1.47 -0.48 -2.47 -0.48 -1.35 -0.01 -2.27 -0.27 -3.56 -1.03l-1.74 -1.03 1.56 -1.05c1.54 -1.03 1.57 -1.08 1.78 -3.55 0.31 -3.59 -0.41 -5.35 -2.67 -6.52 -0.64 -0.33 -1.42 -0.44 -2.11 -0.29 -2.99 0.66 0.93 -2.11 4.71 -3.33 2.53 -0.82 3.40 -2.07 3.10 -4.49 -0.20 -1.65 -0.17 -1.72 1.15 -2.57 0.75 -0.48 2.12 -1.15 3.05 -1.49 0.93 -0.34 1.97 -0.93 2.32 -1.32 0.88 -0.97 0.80 -3.66 -0.17 -5.84 -0.43 -0.97 -0.72 -1.83 -0.63 -1.92 0.08 -0.08 0.46 0.55 0.84 1.40 0.91 2.05 3.17 3.67 4.63 3.33 2.00 -0.46 4.13 -1.97 4.69 -3.30 0.59 -1.40 2.59 -3.95 5.24 -6.66 0.94 -0.96 1.71 -1.89 1.71 -2.06 0.00 -0.17 0.17 -0.76 0.37 -1.29l0.37 -0.97 0.87 0.81 0.87 0.81 1.55 -0.75c0.85 -0.41 2.51 -0.99 3.67 -1.30 1.17 -0.30 2.21 -0.63 2.32 -0.74 0.11 -0.11 -0.01 -0.76 -0.26 -1.45 -0.40 -1.12 -0.37 -1.39 0.31 -2.49 0.63 -1.03 0.69 -1.35 0.32 -1.94 -0.38 -0.61 -0.29 -0.90 0.58 -2.04 0.65 -0.86 1.03 -1.80 1.06 -2.64 0.04 -1.25 -0.01 -1.31 -1.31 -1.41 -0.95 -0.08 -1.68 0.12 -2.45 0.67 -0.60 0.43 -1.19 0.69 -1.30 0.57 -0.12 -0.12 0.12 -0.98 0.53 -1.91 0.73 -1.70 0.73 -1.71 0.04 -3.08 -1.06 -2.08 -0.96 -4.16 0.36 -6.89 1.23 -2.56 1.41 -4.03 0.60 -5.10 -0.70 -0.93 -0.67 -1.73 0.18 -4.26 0.39 -1.17 0.71 -2.67 0.71 -3.34 0.00 -1.30 0.67 -2.84 2.00 -4.60 0.45 -0.59 1.47 -2.57 2.27 -4.39 0.80 -1.82 1.87 -4.12 2.37 -5.11 1.52 -3.00 4.66 -4.49 6.51 -3.10 1.18 0.89 1.95 0.66 2.54 -0.77 0.51 -1.21 0.50 -1.43 -0.11 -2.78 -0.36 -0.80 -1.19 -2.34 -1.83 -3.41 -0.65 -1.07 -1.09 -2.03 -1.00 -2.13 0.32 -0.32 1.29 0.73 2.25 2.41 0.52 0.91 1.20 1.95 1.51 2.31 0.82 0.96 2.84 1.91 4.71 2.19 0.89 0.14 2.48 0.66 3.53 1.16 1.37 0.65 2.18 0.84 2.88 0.65 0.96 -0.26 1.47 -0.28 5.64 -0.21 1.19 0.02 2.72 0.02 3.42 -0.01 0.69 -0.03 2.17 0.07 3.29 0.22l2.02 0.27 2.47 -2.07c2.31 -1.94 3.70 -3.90 3.72 -5.25 0.02 -0.90 -1.07 -1.63 -3.41 -2.29 -2.45 -0.69 -4.27 -2.20 -4.88 -4.04 -0.24 -0.74 -0.97 -1.59 -1.89 -2.23 -0.82 -0.57 -1.89 -1.46 -2.36 -1.97 -0.47 -0.51 -1.69 -1.17 -2.71 -1.46 -1.83 -0.53 -3.09 -1.56 -4.34 -3.54 -0.37 -0.58 -1.71 -1.54 -3.19 -2.28 -3.88 -1.94 -6.88 -4.23 -7.84 -5.97 -0.63 -1.14 -1.21 -1.66 -2.34 -2.08 -1.98 -0.73 -3.27 -1.99 -3.71 -3.61 -0.19 -0.72 -0.68 -1.61 -1.07 -1.97 -0.84 -0.76 -0.93 -1.26 -0.21 -1.26 0.60 0.00 1.82 -1.43 3.15 -3.69 0.69 -1.18 1.26 -1.70 2.04 -1.87 1.23 -0.27 2.93 -2.26 2.93 -3.42 0.00 -1.52 -1.61 -3.84 -4.75 -6.83 -0.28 -0.26 -0.32 -0.37 -0.57 -0.61l-3.97 2.81 -0.42 2.75 -2.11 0.21 -2.54 -1.90 -1.06 -2.11 -1.06 -1.90 -1.27 -1.06 -4.23 -0.21 -2.33 -2.54 -3.80 -0.42 -4.02 1.48 -2.54 1.06 -0.42 1.06 -2.75 1.06 -2.75 1.90 -3.80 -0.84 -4.86 -0.42 -0.84 1.69 -2.54 1.90 -2.32 1.69 -1.90 3.80 -0.42 4.86 -1.27 0.84v0.00 3.17l3.38 2.54 0.63 1.90 -2.11 2.54c0.00 0.00 -0.42 0.74 -0.95 1.59 -0.53 0.85 -1.16 1.80 -1.58 2.22 -0.21 0.21 -0.37 0.51 -0.49 0.85 -0.12 0.34 -0.20 0.71 -0.25 1.05 -0.11 0.69 -0.11 1.27 -0.11 1.27l-3.38 4.65 -4.23 5.07 -3.59 1.69h-4.65 0.00l-2.75 1.69 -6.55 1.06 -5.28 -1.69 -5.28 -0.21 -5.28 -2.75 -4.65 -3.38 -2.96 -2.75 -2.96 -0.42 -2.96 -5.07z"},"path24":{"name":"Kalimantan Utara","path":"m663.98 149.72 0.90 0.81 2.96 5.07 2.96 0.42 2.96 2.75 4.65 3.38 5.28 2.75 5.28 0.21 5.28 1.69 6.55 -1.06 2.75 -1.69h4.65 0.00l3.59 -1.69 4.23 -5.07 3.38 -4.65c0.00 0.00 0.00 -0.58 0.11 -1.27 0.05 -0.34 0.13 -0.71 0.25 -1.05 0.12 -0.34 0.28 -0.64 0.49 -0.85 0.42 -0.42 1.06 -1.37 1.58 -2.22 0.53 -0.85 0.95 -1.59 0.95 -1.59l2.11 -2.54 -0.63 -1.90 -3.38 -2.54v0.00 -3.17l1.27 -0.84 0.42 -4.86 1.90 -3.80 2.32 -1.69 2.54 -1.90 0.84 -1.69 4.86 0.42 3.80 0.84 2.75 -1.90 2.75 -1.06 0.42 -1.06 2.54 -1.06 4.02 -1.48 3.80 0.42 2.33 2.54 4.23 0.21 1.27 1.06 1.06 1.90 1.06 2.11 2.54 1.90 2.11 -0.21 0.42 -2.75 3.97 -2.81c-2.89 -2.82 -4.03 -4.33 -4.03 -5.63 0.00 -1.60 -2.15 -3.55 -4.82 -4.38 -0.65 -0.20 -0.65 -0.25 0.13 -1.07 0.93 -0.99 0.81 -1.37 -0.61 -1.96 -0.55 -0.23 -1.21 -0.89 -1.47 -1.48 -0.40 -0.91 -0.39 -1.18 0.10 -1.87 0.75 -1.07 0.72 -2.31 -0.06 -2.62 -0.35 -0.14 -1.48 -0.39 -2.51 -0.56 -1.28 -0.21 -2.42 -0.72 -3.57 -1.60 -0.93 -0.71 -2.06 -1.38 -2.52 -1.50 -0.46 -0.12 -0.84 -0.31 -0.84 -0.43 0.00 -0.12 0.59 -0.82 1.31 -1.56l1.31 -1.34 0.64 0.79 0.64 0.79 1.02 -0.76c1.28 -0.95 1.30 -1.72 0.07 -1.87 -0.79 -0.09 -0.98 -0.34 -1.16 -1.48 -0.26 -1.63 -0.71 -2.06 -2.59 -2.50l-1.41 -0.33 1.73 -0.03c3.15 -0.07 3.95 -1.09 1.99 -2.54 -1.26 -0.93 -5.41 -1.59 -6.51 -1.03 -0.62 0.32 -2.39 -0.59 -2.41 -1.24 -0.01 -0.25 3.24 -0.16 9.39 0.28 1.96 0.14 2.43 0.07 2.61 -0.40 0.12 -0.31 0.13 -0.72 0.02 -0.90 -0.36 -0.59 0.61 -0.34 1.54 0.39 0.71 0.56 1.46 0.72 3.38 0.72 2.33 0.00 2.55 -0.07 3.91 -1.30 0.79 -0.72 1.44 -1.45 1.44 -1.63 0.00 -0.18 -0.56 -0.66 -1.26 -1.07 -0.74 -0.43 -1.26 -1.03 -1.26 -1.43 0.00 -0.54 0.26 -0.68 1.26 -0.68 1.01 0.00 1.26 -0.14 1.26 -0.71 0.00 -0.42 -0.42 -0.93 -1.04 -1.25 -0.97 -0.50 -1.08 -0.49 -1.53 0.19 -0.48 0.71 -0.51 0.70 -1.66 -0.46 -0.64 -0.65 -2.18 -2.28 -3.40 -3.63 -1.23 -1.35 -2.84 -2.79 -3.59 -3.21 -0.75 -0.42 -1.36 -0.86 -1.36 -0.98 0.00 -0.12 0.61 -0.16 1.36 -0.08 1.07 0.10 1.57 -0.07 2.37 -0.81 0.83 -0.77 0.94 -1.04 0.58 -1.47 -0.25 -0.30 -1.05 -0.52 -1.83 -0.52 -1.06 0.00 -1.71 -0.28 -2.74 -1.18 -0.74 -0.65 -2.32 -1.81 -3.51 -2.59l-2.16 -1.41 -10.66 -0.05c-10.35 -0.05 -10.69 -0.07 -11.65 -0.83 -1.30 -1.02 -1.64 -0.99 -2.87 0.30 -1.30 1.36 -2.31 1.36 -4.17 0.02 -1.20 -0.87 -1.62 -1.00 -2.36 -0.72 -0.49 0.19 -1.74 0.34 -2.76 0.34 -1.49 0.00 -2.28 0.25 -3.95 1.26 -1.15 0.69 -2.21 1.26 -2.36 1.26 -0.15 0.00 -0.72 -0.47 -1.27 -1.04 -0.55 -0.57 -1.65 -1.33 -2.45 -1.69 -0.73 -0.33 -1.09 -0.49 -1.36 -0.47v0.00 0.00c-0.27 0.02 -0.44 0.23 -0.77 0.65 -0.37 0.46 -0.67 1.30 -0.67 1.87 0.00 0.87 -0.28 1.18 -1.71 1.93 -3.08 1.62 -3.70 2.36 -4.41 5.27 -0.36 1.46 -1.00 3.45 -1.44 4.42 -0.63 1.40 -0.75 2.15 -0.58 3.60 0.14 1.16 0.01 2.65 -0.35 4.09 -0.54 2.15 -0.53 2.82 0.07 6.80 0.18 1.22 0.01 2.04 -0.86 4.15 -0.60 1.44 -1.19 3.51 -1.31 4.59 -0.12 1.08 -0.41 3.14 -0.64 4.58 -0.41 2.57 -0.44 2.62 -1.70 2.95 -2.94 0.77 -3.19 0.78 -4.27 0.23 -1.33 -0.69 -1.89 -0.51 -2.69 0.85 -0.34 0.57 -1.16 1.38 -1.82 1.78 -0.66 0.41 -1.65 1.39 -2.20 2.17 -0.98 1.41 -0.98 1.45 -0.41 2.87 0.45 1.13 0.49 1.63 0.18 2.32 -0.58 1.28 -0.12 2.56 1.53 4.21 1.77 1.77 1.70 2.73 -0.29 3.96 -0.73 0.45 -1.83 1.26 -2.44 1.80 -0.61 0.54 -1.67 1.12 -2.36 1.30 -0.94 0.24 -1.40 0.65 -1.88 1.65 -0.44 0.92 -0.87 1.33 -1.39 1.33 -0.43 0.00 -1.48 0.72 -2.39 1.62 -1.61 1.61 -1.62 1.64 -1.42 3.58 0.40 3.87 -0.40 6.16 -5.17 14.76 -0.51 0.93 -0.82 1.70 -1.03 2.51z"},"path25":{"name":"Sulawesi Utara","path":"m1063.85 53.66c-0.20 -0.00 -0.43 0.02 -0.69 0.07 -1.76 0.30 -2.03 0.62 -2.34 2.77 -0.57 3.98 -0.44 5.29 0.61 6.19 0.53 0.45 1.16 0.89 1.39 0.97 0.54 0.18 -0.18 1.65 -1.79 3.67 -0.61 0.77 -1.11 1.69 -1.11 2.05 0.00 0.36 -0.32 0.83 -0.72 1.04 -1.23 0.66 -1.22 1.86 0.05 4.82 0.82 1.90 1.36 2.72 1.74 2.65 0.87 -0.16 0.88 -2.52 0.03 -4.19 -0.96 -1.88 -0.94 -1.97 0.37 -1.71 0.61 0.12 1.42 0.06 1.80 -0.15 1.01 -0.54 2.10 -2.88 1.87 -4.05 -0.14 -0.76 0.11 -1.37 1.12 -2.67 1.60 -2.05 1.90 -3.12 1.29 -4.57 -0.26 -0.61 -0.48 -1.97 -0.51 -3.02 -0.03 -1.72 -0.16 -2.02 -1.30 -2.97 -0.78 -0.66 -1.22 -0.90 -1.83 -0.91zm-0.81 22.54c-0.57 -0.04 -0.71 0.38 -0.68 1.50 0.02 0.79 0.34 1.44 0.97 1.98 1.28 1.10 2.20 1.04 2.50 -0.15 0.29 -1.17 -0.68 -2.65 -2.08 -3.15 -0.29 -0.10 -0.53 -0.17 -0.72 -0.18zm-42.19 4.11c-0.16 0.01 -0.31 0.02 -0.46 0.05 -1.00 0.20 -1.11 0.35 -1.11 1.61 0.00 1.09 0.28 1.70 1.30 2.83 1.11 1.23 1.27 1.61 1.08 2.62 -0.20 1.05 -0.05 1.35 1.31 2.65 0.84 0.80 1.93 1.73 2.42 2.05 1.34 0.90 2.11 0.73 2.74 -0.58 0.55 -1.16 0.54 -1.22 -1.46 -5.11 -1.11 -2.17 -2.30 -4.24 -2.63 -4.62 -0.89 -0.98 -2.10 -1.54 -3.19 -1.51zm-1.37 30.48c-0.33 -0.03 -0.75 0.06 -1.25 0.26 -1.35 0.56 -1.59 1.23 -0.91 2.55 0.71 1.38 1.78 1.37 2.50 -0.01 0.86 -1.65 0.66 -2.72 -0.34 -2.81zm0.07 13.30c-0.75 -0.03 -1.70 0.66 -1.70 1.34 0.00 0.37 0.28 0.75 0.63 0.85 0.35 0.09 0.66 0.18 0.69 0.21 0.03 0.02 0.32 -0.06 0.63 -0.18 0.71 -0.27 0.75 -1.89 0.06 -2.16 -0.10 -0.04 -0.20 -0.06 -0.30 -0.06zm-13.69 20.79c-0.81 0.02 -5.49 4.86 -6.65 6.88 -0.64 1.12 -1.74 2.54 -2.43 3.15 -1.10 0.97 -1.44 1.08 -2.68 0.88 -1.19 -0.19 -1.62 -0.07 -2.67 0.73 -1.18 0.90 -2.06 2.75 -1.73 3.67 0.08 0.22 0.54 0.58 1.03 0.81 0.75 0.34 0.83 0.52 0.51 1.13 -0.32 0.61 -0.75 0.72 -2.70 0.72 -2.08 0.00 -2.44 0.11 -3.60 1.13 -0.71 0.62 -1.61 1.76 -2.01 2.53 -0.86 1.69 -3.67 3.58 -7.52 5.07 -1.48 0.57 -3.21 1.43 -3.84 1.91 -0.93 0.70 -1.57 0.86 -3.42 0.86 -1.25 -0.00 -3.24 -0.18 -4.43 -0.40 -1.19 -0.22 -2.99 -0.45 -4.01 -0.51 -1.02 -0.06 -2.94 -0.45 -4.26 -0.86 -1.33 -0.41 -3.04 -0.74 -3.80 -0.74 -0.35 0.00 -0.74 -0.21 -1.17 -0.32 -0.32 1.02 -0.56 1.89 -0.78 2.56 -0.29 0.88 -0.66 1.90 -0.94 2.95 -0.28 1.04 -0.48 2.10 -0.45 3.05 0.04 0.95 0.31 1.79 0.98 2.40 0.33 0.30 0.76 0.54 1.31 0.71 0.55 0.17 1.22 0.26 2.02 0.26 1.61 0.00 3.11 0.18 4.49 0.51 1.38 0.33 2.64 0.81 3.78 1.39 1.13 0.59 2.14 1.28 3.01 2.05 0.87 0.77 1.60 1.61 2.19 2.49 0.46 0.69 1.31 1.55 2.16 2.40 2.71 -0.44 5.97 -0.91 6.81 -1.22 0.69 -0.26 2.47 -0.54 3.96 -0.63 2.05 -0.13 3.35 -0.46 5.39 -1.39 4.91 -2.22 4.97 -2.26 6.26 -5.09 0.65 -1.43 1.67 -3.16 2.27 -3.85 0.60 -0.68 1.28 -1.84 1.51 -2.58 0.53 -1.61 3.72 -4.65 6.10 -5.78 2.34 -1.12 5.67 -5.89 7.28 -10.43 0.78 -2.20 1.56 -3.71 2.33 -4.48 1.24 -1.26 1.94 -1.49 1.94 -0.63 0.00 0.74 0.45 0.68 1.61 -0.24 1.14 -0.89 2.08 -2.87 1.76 -3.69 -0.27 -0.70 -0.64 -0.71 -1.20 -0.04 -0.70 0.84 -2.90 -1.83 -2.90 -3.51 0.00 -1.38 -0.70 -2.04 -2.17 -2.04 -0.43 0.00 -1.26 -0.40 -1.85 -0.90 -0.59 -0.49 -1.26 -0.90 -1.49 -0.89z"},"path26":{"name":"Sulawesi Tengah","path":"m871.90 157.95c-0.94 -0.00 -1.77 0.09 -2.40 0.30 -1.42 0.47 -1.44 0.50 -1.68 2.63 -0.74 6.57 -0.20 5.47 -4.84 9.86 -0.99 0.93 -1.56 1.84 -1.73 2.71 -0.18 0.94 -0.50 1.41 -1.15 1.65 -1.22 0.46 -3.86 0.43 -4.93 -0.05 -0.89 -0.41 -2.04 -2.38 -2.04 -3.51 0.00 -0.35 -0.22 -0.94 -0.49 -1.31 -0.44 -0.60 -0.61 -0.62 -1.63 -0.20 -1.34 0.56 -2.19 1.64 -2.19 2.81 0.00 0.46 -0.31 1.44 -0.69 2.19 -0.67 1.31 -1.51 1.86 -4.45 2.92 -1.38 0.50 -2.09 2.29 -1.81 4.61 0.23 1.96 0.08 2.20 -2.75 4.35 -1.61 1.22 -2.88 3.38 -2.88 4.90 0.00 1.05 -0.20 1.40 -1.08 1.90 -1.45 0.83 -1.38 1.71 0.37 4.33l1.45 2.18 -0.47 1.91c-0.40 1.62 -0.60 1.92 -1.37 2.01 -0.63 0.07 -1.23 -0.23 -1.96 -0.99 -0.85 -0.89 -1.34 -1.10 -2.61 -1.10 -1.89 0.00 -2.25 0.60 -1.31 2.21 0.92 1.57 2.45 2.62 3.82 2.64 0.94 0.01 1.18 0.17 1.28 0.87 0.07 0.47 -0.16 1.48 -0.50 2.24 -0.45 1.00 -0.63 2.42 -0.66 5.25 -0.04 4.26 0.63 7.41 2.15 10.00 0.47 0.80 0.89 1.93 0.95 2.52 0.19 2.02 -0.62 1.33 -1.77 -1.49 -0.63 -1.56 -1.40 -2.99 -1.70 -3.18 -0.77 -0.50 -2.95 1.68 -3.25 3.24 -0.16 0.87 -0.70 1.55 -1.98 2.53 -0.53 0.40 -0.90 0.82 -1.27 1.25 0.10 1.26 0.11 1.51 0.28 3.33 0.36 3.85 0.84 8.34 1.32 10.91 0.48 2.57 1.36 5.46 2.33 8.54 0.96 3.09 2.01 6.38 2.81 9.75 0.32 1.33 0.52 2.32 0.78 3.51 0.33 -0.09 0.29 -0.09 0.63 -0.19 3.46 -0.96 7.43 -1.99 9.47 -2.21 2.04 -0.23 3.74 -1.02 5.45 -1.13 0.85 -0.06 1.70 0.06 2.59 0.50 0.89 0.44 1.83 1.21 2.85 2.45 2.04 2.50 4.42 5.56 6.98 8.11 1.28 1.28 2.60 2.43 3.94 3.31 1.34 0.89 2.70 1.51 4.06 1.74 2.72 0.45 6.69 1.25 10.44 2.38 1.87 0.57 3.69 1.22 5.26 1.96 1.57 0.74 2.91 1.56 3.81 2.47 0.91 0.91 2.13 1.70 3.40 2.43 1.28 0.73 2.61 1.40 3.74 2.05 1.13 0.65 2.07 1.29 2.55 1.96 0.24 0.34 0.37 0.68 0.35 1.04 -0.02 0.36 -0.18 0.74 -0.52 1.13 -0.68 0.79 -1.56 1.56 -2.50 2.26 -0.94 0.70 -1.93 1.34 -2.84 1.88 -1.69 1.00 -2.89 1.55 -3.07 1.64 0.07 0.01 0.68 0.12 0.68 0.12l4.99 -1.36c0.00 0.00 1.82 0.80 3.97 1.82 2.16 1.02 4.65 2.27 6.02 3.17 2.17 1.45 8.71 4.58 11.95 6.16 0.36 -0.69 1.16 -1.33 2.27 -1.66 1.27 -0.38 1.46 -0.57 1.46 -1.47 0.00 -1.68 -0.37 -2.20 -2.12 -2.95 -2.60 -1.11 -2.91 -1.53 -2.66 -3.56 0.25 -2.12 -0.44 -3.40 -2.02 -3.74 -0.69 -0.15 -1.32 -0.66 -1.79 -1.46 -0.43 -0.73 -1.28 -1.45 -2.09 -1.79 -1.82 -0.76 -2.96 -2.20 -2.97 -3.76 -0.01 -0.87 -0.64 -2.25 -2.08 -4.61 -1.14 -1.85 -2.55 -4.21 -3.15 -5.24 -1.07 -1.85 -4.30 -5.16 -5.82 -5.95 -0.43 -0.23 -1.19 -0.41 -1.68 -0.41 -1.21 0.00 -3.00 -1.58 -3.29 -2.90 -0.15 -0.70 -0.71 -1.40 -1.55 -1.96 -0.72 -0.48 -1.64 -1.36 -2.04 -1.96 -0.90 -1.36 -1.44 -1.57 -2.16 -0.85 -0.31 0.31 -0.61 0.51 -0.66 0.44 -0.79 -1.17 -1.24 -3.86 -0.73 -4.37 0.37 -0.37 2.70 1.01 4.98 2.95 2.44 2.08 3.63 2.29 6.22 1.12 1.46 -0.66 3.69 -3.41 3.69 -4.55 0.00 -1.39 6.18 -4.54 10.18 -5.19 1.63 -0.26 3.35 -0.82 4.43 -1.44 0.97 -0.56 2.51 -1.42 3.42 -1.92 1.04 -0.56 2.67 -2.09 4.32 -4.05 1.46 -1.73 3.55 -4.12 4.65 -5.32 3.21 -3.50 5.40 -6.36 6.38 -8.36 1.01 -2.06 1.10 -2.10 5.10 -2.47 1.48 -0.14 3.15 -0.48 3.70 -0.76 1.08 -0.55 1.70 -0.39 1.70 0.44 0.00 0.70 2.17 3.06 3.94 4.28 1.17 0.81 1.67 0.95 2.71 0.76 1.55 -0.29 2.21 -1.22 3.14 -4.44 0.93 -3.21 1.18 -6.18 0.66 -7.75 -0.35 -1.07 -0.86 -1.51 -3.16 -2.75 -3.55 -1.91 -6.32 -2.26 -9.16 -1.15 -1.05 0.41 -3.04 0.85 -4.43 0.97 -3.30 0.30 -4.96 0.75 -5.99 1.62 -0.80 0.67 -0.81 0.74 -0.21 1.21 0.35 0.27 1.61 0.69 2.79 0.92 1.18 0.23 2.15 0.56 2.15 0.73 0.00 0.17 -0.69 0.42 -1.53 0.55 -0.84 0.13 -2.11 0.41 -2.83 0.61 -1.03 0.29 -1.48 0.26 -2.16 -0.18 -1.22 -0.78 -15.71 -0.71 -16.66 0.08 -0.34 0.28 -1.11 1.47 -1.70 2.64 -0.88 1.74 -1.21 2.09 -1.80 1.94 -0.40 -0.10 -1.49 0.04 -2.44 0.32 -1.03 0.31 -3.13 0.49 -5.28 0.47l-3.57 -0.04 -2.01 -2.11c-1.11 -1.16 -2.22 -2.11 -2.46 -2.11 -0.40 0.00 -3.28 1.81 -4.72 2.97 -0.31 0.25 -1.07 1.20 -1.70 2.12 -0.63 0.92 -1.53 1.97 -2.00 2.34 -0.47 0.37 -1.37 1.43 -2.00 2.38 -0.63 0.94 -1.55 1.97 -2.03 2.29 -0.53 0.35 -1.08 1.25 -1.39 2.30 -0.66 2.22 -1.16 3.17 -2.30 4.39 -1.05 1.13 -1.62 1.21 -3.42 0.45 -0.73 -0.30 -1.74 -0.44 -2.34 -0.32 -0.78 0.16 -1.43 -0.04 -2.48 -0.73 -1.38 -0.91 -1.46 -0.93 -2.97 -0.40 -2.41 0.85 -3.12 0.73 -3.59 -0.61 -0.22 -0.64 -0.84 -1.62 -1.38 -2.18 -0.86 -0.90 -0.98 -1.32 -1.00 -3.46 -0.02 -1.87 -0.22 -2.75 -0.84 -3.75 -1.74 -2.82 -5.36 -4.89 -7.53 -4.32 -1.02 0.27 -1.95 -0.57 -4.73 -4.25 -2.39 -3.17 -3.00 -4.69 -3.61 -8.94 -0.24 -1.68 -0.76 -4.16 -1.16 -5.51 -0.72 -2.45 -0.73 -3.14 0.01 -7.08 0.17 -0.89 0.74 -2.25 1.26 -3.02 0.53 -0.77 0.96 -1.84 0.96 -2.38 0.00 -1.54 1.01 -4.02 2.13 -5.21 0.56 -0.59 1.44 -1.81 1.95 -2.70 1.62 -2.83 4.78 -5.59 7.57 -6.63 3.40 -1.27 5.60 -1.22 8.73 0.19 6.16 2.76 5.75 2.64 7.31 2.18 1.02 -0.31 1.65 -0.32 2.14 -0.06 1.01 0.54 2.06 0.46 4.70 -0.35 0.31 -0.10 0.99 -0.10 1.36 -0.19 -1.01 -2.06 -2.10 -4.29 -3.20 -6.12 -0.68 -1.13 -1.47 -2.13 -2.15 -3.00 -0.67 -0.87 -1.23 -1.63 -1.43 -2.28 -0.10 -0.33 -0.11 -0.63 -0.00 -0.91 0.11 -0.28 0.33 -0.54 0.70 -0.77 0.74 -0.48 2.08 -0.87 4.23 -1.21 2.16 -0.34 4.45 -0.51 6.77 -0.59 2.32 -0.08 4.66 -0.06 6.90 -0.04 4.48 0.06 8.57 0.17 11.29 -0.28 2.72 -0.45 5.44 -0.34 7.32 -0.74 0.94 -0.20 1.66 -0.52 2.06 -1.11 0.20 -0.29 0.32 -0.66 0.35 -1.10 0.03 -0.44 -0.03 -0.97 -0.20 -1.59 -0.03 -0.10 -0.05 -0.21 -0.08 -0.31 -0.22 -0.04 -0.57 -0.04 -0.75 -0.08 -2.74 -0.65 -3.91 -0.73 -5.34 -0.41 -0.95 0.22 -1.17 0.12 -1.61 -0.70 -0.50 -0.93 -0.57 -0.94 -3.04 -0.72 -1.39 0.13 -3.48 0.40 -4.65 0.60 -4.95 0.86 -7.77 -0.60 -8.56 -4.43 -0.25 -1.19 -0.67 -2.25 -0.95 -2.36 -0.27 -0.11 -1.00 0.10 -1.61 0.47 -1.79 1.06 -4.13 0.91 -6.25 -0.41 -2.08 -1.29 -5.86 -2.17 -8.67 -2.17zm23.22 48.95c-0.14 -0.03 -0.34 0.04 -0.62 0.19 -0.40 0.21 -0.72 0.64 -0.72 0.94 0.00 0.41 0.21 0.49 0.81 0.30 1.07 -0.33 1.12 -0.39 0.86 -1.06 -0.09 -0.23 -0.18 -0.35 -0.32 -0.37zm20.85 2.37c-0.38 0.01 -0.67 0.13 -0.81 0.37 -0.13 0.21 0.63 1.18 1.69 2.14 1.06 0.96 2.09 1.71 2.29 1.65 0.20 -0.06 0.36 -0.65 0.36 -1.32 0.00 -0.98 -0.24 -1.37 -1.22 -2.04 -0.81 -0.55 -1.67 -0.83 -2.29 -0.81zm-6.42 1.97 -0.63 0.84c-0.60 0.79 -0.72 0.81 -2.15 0.38 -1.31 -0.39 -1.69 -0.37 -2.81 0.16 -1.23 0.59 -1.28 0.68 -1.10 2.07 0.17 1.26 0.11 1.41 -0.41 1.18 -0.33 -0.15 -1.33 -0.33 -2.22 -0.40 -1.44 -0.12 -1.77 0.01 -2.97 1.12 -1.05 0.97 -1.35 1.53 -1.35 2.47 0.00 0.67 0.11 1.32 0.24 1.46 0.38 0.38 0.68 0.29 1.75 -0.55 0.66 -0.52 1.81 -0.89 3.33 -1.07 2.76 -0.33 3.47 -0.77 2.92 -1.81 -0.35 -0.66 -0.30 -0.70 0.70 -0.48 1.12 0.25 4.02 -0.91 4.02 -1.60 0.00 -0.18 0.57 -0.44 1.26 -0.57 1.54 -0.29 1.65 -1.10 0.34 -2.34l-0.92 -0.87zM945.61 239.96c-0.29 0.01 -0.61 0.08 -0.99 0.19 -0.61 0.17 -1.51 0.24 -1.99 0.15 -1.01 -0.19 -6.36 0.84 -6.97 1.34 -0.72 0.60 -2.28 3.75 -2.66 5.40 -0.34 1.44 -0.26 1.91 0.78 4.61l1.15 3.00 1.34 -0.18c1.71 -0.23 3.95 -2.08 5.14 -4.25 0.50 -0.91 1.17 -1.88 1.49 -2.15 0.50 -0.42 0.70 -0.35 1.44 0.51 1.15 1.33 1.08 2.48 -0.22 3.96 -0.59 0.68 -1.08 1.40 -1.08 1.62 0.00 0.58 2.99 2.22 4.06 2.22 0.99 0.00 1.19 -0.50 1.42 -3.59 0.14 -1.84 1.44 -2.21 3.29 -0.96l1.37 0.93 1.40 -0.72c1.48 -0.76 1.72 -0.61 0.85 0.54 -1.14 1.50 -0.48 4.85 1.21 6.22 0.31 0.25 0.99 0.45 1.52 0.45 1.98 0.00 2.78 -2.76 1.31 -4.52 -0.49 -0.58 -1.14 -1.67 -1.45 -2.41 -0.31 -0.74 -0.81 -1.34 -1.12 -1.34 -0.72 0.00 -0.70 -0.22 0.11 -1.38 0.37 -0.53 0.87 -1.57 1.11 -2.33 0.53 -1.62 0.15 -2.21 -2.48 -3.90 -2.24 -1.43 -2.94 -1.33 -5.14 0.79 -1.65 1.59 -1.99 1.77 -2.69 1.45 -0.80 -0.36 -0.80 -0.39 -0.20 -1.65 0.58 -1.22 0.58 -1.34 -0.05 -2.52 -0.58 -1.08 -1.09 -1.51 -1.95 -1.48zm6.14 17.49c-0.89 0.00 -1.51 0.70 -1.51 1.69 0.00 0.97 0.58 1.06 1.50 0.23 0.85 -0.77 0.86 -1.92 0.01 -1.92zm-8.69 2.52c-0.86 0.00 -1.78 2.31 -1.55 3.87 0.11 0.71 0.38 1.17 0.71 1.17 0.79 0.00 2.55 -1.36 2.81 -2.17 0.29 -0.90 -1.06 -2.87 -1.97 -2.87zm22.55 4.11c-0.10 -0.02 -0.18 -0.03 -0.23 0.01 -0.52 0.32 -0.50 2.11 0.04 2.64 0.71 0.71 2.44 0.40 2.44 -0.44 0.00 -0.58 -1.57 -2.04 -2.25 -2.22z"},"path27":{"name":"Sulawesi Selatan","path":"m850.05 262.62c-0.21 -0.01 -0.43 -0.01 -0.64 0.01 -1.70 0.11 -3.40 0.91 -5.45 1.13 -2.04 0.23 -6.01 1.25 -9.47 2.21 -0.34 0.09 -0.30 0.09 -0.63 0.19 0.40 1.83 0.83 3.79 1.19 5.39 0.60 2.65 1.25 5.06 2.21 7.46 0.48 1.20 0.78 2.45 0.96 3.69 0.18 1.24 0.24 2.49 0.24 3.69 0.00 2.41 -0.24 4.66 -0.24 6.42 0.00 0.88 -0.14 1.46 -0.35 1.84 -0.21 0.38 -0.49 0.55 -0.77 0.61 -0.56 0.12 -1.12 -0.20 -1.12 -0.20l-11.55 0.32v0.00 8.02c0.00 1.44 0.16 3.13 -0.08 4.77 -0.12 0.82 -0.34 1.64 -0.73 2.40 -0.39 0.77 -0.95 1.49 -1.75 2.13 -0.76 0.61 -1.91 2.22 -2.93 3.43 1.49 -0.21 3.05 0.41 5.05 2.02l0.87 0.70 -0.96 2.22c-0.53 1.22 -0.96 2.43 -0.96 2.69 0.00 0.26 1.20 2.76 2.68 5.56 2.80 5.33 2.82 5.39 2.70 10.29 -0.07 2.81 -0.06 3.61 0.04 4.50 0.05 0.49 -0.09 2.46 -0.32 4.36 -0.32 2.71 -0.71 4.08 -1.77 6.29 -1.30 2.72 -1.35 2.97 -1.26 6.18 0.08 3.12 0.01 3.50 -0.99 5.39 -0.59 1.12 -1.08 2.22 -1.08 2.44 -0.00 0.22 -0.51 1.09 -1.12 1.94 -0.88 1.22 -1.20 2.12 -1.47 4.28 -0.45 3.52 -0.24 4.97 1.07 7.50 0.58 1.13 1.17 2.51 1.30 3.05 0.20 0.84 0.42 0.99 1.47 0.99 0.96 0.00 1.40 0.24 2.01 1.10 0.43 0.61 0.97 1.03 1.19 0.95 1.73 -0.65 2.00 -0.61 3.17 0.42 0.66 0.58 1.60 1.13 2.10 1.22 0.49 0.09 1.12 0.19 1.39 0.22 0.27 0.03 1.51 -1.03 2.74 -2.35l2.24 -2.40 2.52 0.45c2.75 0.49 4.61 0.30 6.58 -0.70 0.70 -0.35 1.84 -0.74 2.52 -0.87 1.04 -0.20 1.39 -0.09 2.10 0.68 0.95 1.01 3.03 1.84 3.66 1.46 0.87 -0.54 -0.71 -5.81 -3.27 -10.94l-2.19 -4.39 0.54 -2.22c0.30 -1.22 0.65 -3.32 0.79 -4.67 0.21 -2.12 0.38 -2.53 1.19 -3.05 1.19 -0.75 1.47 -1.15 1.48 -2.06 0.00 -0.40 0.33 -1.33 0.73 -2.07 0.88 -1.65 0.88 -1.79 0.04 -4.03 -1.07 -2.83 -1.46 -5.59 -1.06 -7.48 0.23 -1.09 0.23 -2.10 -0.01 -2.95 -0.20 -0.71 -0.27 -1.84 -0.16 -2.51 0.12 -0.73 -0.05 -1.86 -0.42 -2.84 -1.03 -2.68 -0.65 -6.27 1.00 -9.59 1.51 -3.04 1.57 -3.63 0.76 -7.08 -0.43 -1.83 -0.54 -3.66 -0.42 -7.23l0.16 -4.78 -1.17 -1.02c-0.64 -0.56 -1.66 -1.32 -2.28 -1.68 -0.72 -0.43 -1.11 -0.94 -1.11 -1.47 0.00 -0.45 -0.26 -1.47 -0.58 -2.27 -1.00 -2.51 -0.50 -3.17 5.07 -6.66 1.19 -0.74 3.05 -2.08 4.14 -2.97 2.41 -1.97 5.87 -3.67 7.48 -3.67 0.65 -0.00 2.56 0.35 4.25 0.77 3.63 0.91 4.29 1.59 4.17 4.28 -0.04 0.94 0.17 2.28 0.46 2.99 0.03 0.06 0.02 0.11 0.04 0.17 0.05 0.12 0.04 0.24 0.07 0.35 2.14 0.30 3.84 0.60 4.64 0.60 0.62 0.00 1.86 0.26 3.32 0.55 1.21 0.38 2.47 0.67 3.54 0.87 1.53 0.28 2.67 0.40 2.67 0.40 0.00 0.00 1.47 -0.68 3.29 -1.76 0.91 -0.54 1.90 -1.18 2.84 -1.88 0.94 -0.70 1.82 -1.47 2.50 -2.26 0.34 -0.40 0.50 -0.77 0.52 -1.13 0.02 -0.36 -0.11 -0.71 -0.35 -1.04 -0.48 -0.67 -1.42 -1.31 -2.55 -1.96 -1.13 -0.65 -2.47 -1.32 -3.74 -2.05 -1.28 -0.73 -2.50 -1.53 -3.40 -2.43 -0.91 -0.91 -2.24 -1.73 -3.81 -2.47 -1.57 -0.74 -3.39 -1.39 -5.26 -1.96 -3.74 -1.13 -7.72 -1.93 -10.44 -2.38 -1.36 -0.23 -2.72 -0.85 -4.06 -1.74 -1.34 -0.89 -2.66 -2.04 -3.94 -3.31 -2.55 -2.55 -4.94 -5.61 -6.98 -8.11 -1.02 -1.25 -1.96 -2.01 -2.85 -2.45 -0.67 -0.33 -1.32 -0.48 -1.96 -0.51zm7.29 129.75c-1.44 -0.17 -1.67 0.87 -1.85 8.44 -0.13 5.49 -0.07 6.90 0.40 8.07 0.36 0.89 0.48 1.86 0.33 2.63 -0.13 0.69 -0.04 1.63 0.20 2.16 0.54 1.18 1.75 1.27 1.75 0.13 0.00 -0.45 0.25 -1.62 0.55 -2.61 0.51 -1.67 1.03 -5.17 1.47 -9.89 0.14 -1.53 -0.05 -2.76 -0.85 -5.39 -0.95 -3.14 -1.11 -3.42 -2.00 -3.53zm5.73 40.57c-0.62 0.00 -1.31 1.05 -1.31 1.99 0.00 0.33 0.34 1.07 0.74 1.64 0.41 0.57 0.96 1.04 1.23 1.04 0.58 0.00 1.98 -1.86 1.98 -2.64 0.00 -0.64 -1.82 -2.04 -2.65 -2.04z"},"path28":{"name":"Sulawesi Tenggara","path":"m876.08 297.65c0.26 0.81 0.28 1.45 -0.13 3.37 -0.30 1.44 -0.45 3.04 -0.34 3.57 0.31 1.39 -0.64 3.34 -2.72 5.62 -2.51 2.75 -3.70 5.17 -3.40 6.92 0.20 1.17 0.94 2.02 5.25 6.09 3.36 3.17 5.37 4.80 6.09 4.95 0.93 0.19 1.07 0.37 1.07 1.39 0.00 1.19 0.47 1.61 1.78 1.61 0.36 0.00 1.07 0.56 1.59 1.23 0.95 1.25 1.39 1.44 5.74 2.55 1.87 0.48 2.55 0.83 2.84 1.46 0.58 1.26 -0.25 4.00 -1.70 5.60 -1.10 1.21 -1.21 1.55 -1.19 3.43 0.01 1.20 -0.32 3.20 -0.78 4.71 -0.52 1.69 -0.72 3.04 -0.58 3.80 0.37 1.98 2.17 4.43 3.88 5.29 0.85 0.43 1.92 1.12 2.38 1.55 0.66 0.60 1.32 0.78 3.06 0.80 1.22 0.02 3.27 0.23 4.56 0.48 2.41 0.46 4.34 0.34 5.92 -0.39 1.05 -0.48 1.13 -1.13 0.37 -2.94 -0.74 -1.78 -0.68 -3.56 0.21 -5.61 0.71 -1.65 0.87 -1.78 3.32 -2.68 1.42 -0.52 2.94 -0.94 3.38 -0.94 0.44 0.00 1.46 -0.26 2.26 -0.58 0.97 -0.39 1.93 -0.51 2.89 -0.35 0.97 0.15 1.77 0.05 2.49 -0.32 1.72 -0.89 3.08 -0.70 3.97 0.53 0.42 0.59 1.10 1.08 1.50 1.08 0.99 0.00 2.82 -1.35 2.82 -2.07 0.00 -0.46 0.10 -0.49 0.43 -0.16 0.67 0.67 1.57 0.51 2.78 -0.50 1.10 -0.93 1.11 -0.95 1.11 -4.55 0.00 -3.01 -0.13 -3.88 -0.80 -5.21 -0.91 -1.83 -1.76 -2.41 -3.04 -2.10 -0.71 0.18 -0.87 0.41 -0.78 1.20 0.12 1.04 -0.25 1.12 -2.09 0.42 -0.66 -0.25 -0.85 -0.59 -0.85 -1.53 0.00 -0.82 -0.29 -1.47 -0.90 -2.05l-0.90 -0.85 0.76 -0.81c0.42 -0.44 0.67 -0.96 0.55 -1.15 -0.12 -0.19 -1.19 -0.71 -2.39 -1.16 -1.78 -0.67 -2.31 -1.06 -2.85 -2.12 -0.79 -1.54 -1.67 -2.38 -2.90 -2.73 -1.72 -0.50 -5.41 -2.75 -6.01 -3.66 -0.59 -0.90 -0.58 -0.94 0.53 -1.87 1.31 -1.09 2.01 -2.71 1.71 -3.91 -0.18 -0.73 -0.10 -0.81 0.65 -0.62 1.13 0.28 2.18 -0.70 1.70 -1.60 -0.19 -0.35 -0.59 -0.84 -0.90 -1.10 -0.63 -0.52 -0.69 -1.24 -0.34 -1.91 -3.24 -1.58 -9.78 -4.71 -11.95 -6.16 -1.36 -0.91 -3.86 -2.15 -6.02 -3.17 -2.16 -1.02 -3.97 -1.82 -3.97 -1.82l-4.99 1.36c0.00 0.00 -0.61 -0.11 -0.68 -0.12 -0.01 0.01 -0.22 0.12 -0.22 0.12 0.00 0.00 -1.14 -0.11 -2.67 -0.40 -0.64 -0.12 -1.37 -0.41 -2.09 -0.59 -2.20 -0.41 -3.94 -0.83 -4.77 -0.83 -0.81 0.00 -2.50 -0.30 -4.64 -0.60zm44.64 16.26c-0.69 0.00 -0.78 1.11 -0.14 1.81 0.77 0.85 1.25 0.91 1.25 0.14 0.00 -0.77 -0.67 -1.95 -1.10 -1.95zm23.02 5.39c-0.21 0.00 -0.28 0.16 -0.16 0.36 0.12 0.20 0.29 0.36 0.38 0.36 0.09 0.00 0.16 -0.16 0.16 -0.36 0.00 -0.20 -0.17 -0.36 -0.38 -0.36zm-2.48 13.40c-0.75 0.05 -1.47 0.43 -2.26 1.17 -1.86 1.74 -0.95 4.79 2.13 7.10 1.49 1.12 2.15 1.20 3.83 0.50 0.85 -0.36 1.48 -1.08 2.33 -2.66 1.40 -2.62 1.42 -3.09 0.22 -4.67 -0.87 -1.14 -1.04 -1.21 -2.36 -0.99 -0.85 0.14 -1.84 0.07 -2.47 -0.19 -0.49 -0.20 -0.96 -0.29 -1.41 -0.26zm-0.36 13.92c-0.82 0.05 -1.78 0.35 -2.51 0.89 -2.60 1.92 -3.98 5.05 -4.14 9.37 -0.06 1.58 -0.29 3.32 -0.50 3.87 -0.22 0.54 -0.30 1.45 -0.19 2.02 0.11 0.57 0.01 1.40 -0.23 1.85 -0.24 0.45 -0.57 1.80 -0.74 3.01 -0.45 3.19 -1.26 5.83 -2.35 7.70l-0.96 1.64 -0.49 -1.78c-0.93 -3.40 -0.95 -3.93 -0.19 -5.40 0.40 -0.77 1.15 -1.80 1.66 -2.29 0.52 -0.48 1.34 -1.56 1.84 -2.41 0.79 -1.35 0.86 -1.71 0.54 -3.08 -0.19 -0.85 -0.50 -2.60 -0.69 -3.89 -0.19 -1.29 -0.52 -2.80 -0.74 -3.37 -0.37 -0.96 -0.51 -1.02 -1.89 -0.84 -0.82 0.11 -1.91 0.54 -2.42 0.95 -1.36 1.09 -4.33 2.48 -5.83 2.71 -0.99 0.15 -1.54 0.54 -2.25 1.57 -1.13 1.63 -1.18 2.83 -0.22 5.55 0.91 2.60 0.90 3.06 -0.11 4.59 -0.46 0.69 -1.28 2.95 -1.83 5.02l-1.00 3.77 0.95 0.81c1.13 0.97 2.53 1.06 2.87 0.19 0.23 -0.59 0.27 -0.59 0.62 0.04 0.31 0.55 0.64 0.62 1.89 0.44 1.38 -0.21 1.56 -0.14 1.93 0.68 0.63 1.38 1.66 1.14 2.99 -0.70 0.64 -0.89 1.20 -1.57 1.26 -1.52 0.05 0.05 0.01 0.78 -0.11 1.62 -0.16 1.19 -0.44 1.67 -1.24 2.14 -0.57 0.33 -1.05 0.86 -1.07 1.16 -0.09 1.27 0.14 2.44 0.76 3.86 0.58 1.34 0.81 1.52 2.04 1.65 4.54 0.47 6.30 0.04 7.66 -1.88 0.79 -1.10 0.83 -2.01 0.20 -3.65 -0.34 -0.87 1.19 -1.68 3.99 -2.13 2.99 -0.48 4.86 -1.48 6.11 -3.29 0.81 -1.17 0.88 -1.46 0.47 -1.95 -1.01 -1.21 -4.96 -3.75 -5.84 -3.75 -0.51 0.00 -1.02 -0.16 -1.15 -0.36 -0.12 -0.20 -0.23 -1.70 -0.25 -3.33 -0.03 -3.22 0.71 -5.69 2.48 -8.27 1.09 -1.59 1.37 -1.64 2.48 -0.45 1.73 1.86 2.48 0.60 2.12 -3.55 -0.29 -3.41 -0.88 -4.87 -2.70 -6.66 -0.73 -0.72 -1.42 -1.58 -1.54 -1.93 -0.17 -0.49 -0.85 -0.69 -1.67 -0.64zm-34.85 22.56c-0.25 -0.01 -0.57 0.01 -0.99 0.03 -3.19 0.17 -3.19 0.17 -4.05 3.15l-0.79 2.72 1.09 2.24c1.25 2.56 1.49 2.89 3.35 4.48 1.58 1.36 1.38 1.31 2.95 0.66 1.37 -0.57 1.44 -0.82 1.79 -5.75 0.19 -2.70 0.15 -2.91 -0.79 -4.12 -0.54 -0.70 -1.17 -1.77 -1.39 -2.37 -0.28 -0.78 -0.42 -1.00 -1.17 -1.03zm52.29 5.51c-0.19 0.01 -0.39 0.03 -0.60 0.06 -0.74 0.10 -0.84 0.31 -0.82 1.63 0.02 0.83 0.24 1.76 0.49 2.07 0.57 0.69 2.17 0.73 3.07 0.06 0.61 -0.45 0.63 -0.64 0.23 -1.97 -0.41 -1.36 -1.07 -1.89 -2.38 -1.84zm5.36 7.55c-0.48 0.00 -0.88 0.09 -0.88 0.20 0.00 0.46 0.86 1.84 1.74 2.78 1.20 1.28 2.07 1.15 1.93 -0.29 -0.12 -1.28 -1.58 -2.68 -2.80 -2.68zm8.41 13.31c-0.50 0.00 -0.65 0.28 -0.65 1.19 0.00 0.65 0.20 1.38 0.43 1.62 0.62 0.62 2.43 0.54 2.68 -0.13 0.27 -0.70 -1.55 -2.68 -2.46 -2.68z"},"path29":{"name":"Gorontalo","path":"m968.24 192.29c-0.85 -0.85 -1.69 -1.71 -2.16 -2.40 -0.59 -0.88 -1.32 -1.72 -2.19 -2.49 -0.87 -0.77 -1.87 -1.46 -3.01 -2.05 -1.13 -0.59 -2.40 -1.06 -3.78 -1.39 -1.38 -0.33 -2.88 -0.51 -4.49 -0.51 -0.80 0.00 -1.47 -0.09 -2.02 -0.26 -0.55 -0.17 -0.98 -0.41 -1.31 -0.71 -0.67 -0.60 -0.94 -1.44 -0.98 -2.40 -0.04 -0.95 0.16 -2.01 0.45 -3.05 0.28 -1.04 0.65 -2.07 0.94 -2.95 0.22 -0.67 0.46 -1.54 0.78 -2.56 -0.50 -0.13 -1.03 -0.17 -1.37 -0.37 -1.13 -0.69 -1.16 -0.69 -2.51 0.00 -1.66 0.85 -1.91 0.85 -4.21 0.11 -2.23 -0.72 -3.38 -0.36 -5.73 1.80 -1.50 1.38 -1.58 1.40 -2.94 1.00 -0.77 -0.23 -2.26 -1.07 -3.30 -1.85 -1.05 -0.79 -2.48 -1.52 -3.17 -1.63 -0.70 -0.11 -2.51 -0.59 -4.01 -1.08 -1.95 -0.63 -3.56 -0.89 -5.57 -0.89 -1.33 -0.00 -3.04 -0.22 -4.32 -0.45 0.03 0.10 0.05 0.21 0.08 0.31 0.17 0.62 0.23 1.15 0.20 1.59 -0.03 0.44 -0.15 0.80 -0.35 1.10 -0.40 0.59 -1.13 0.91 -2.06 1.11 -1.87 0.40 -4.59 0.28 -7.32 0.74 -2.72 0.45 -6.81 0.34 -11.29 0.28 -2.24 -0.03 -4.58 -0.04 -6.90 0.04 -2.32 0.08 -4.62 0.25 -6.77 0.59 -2.16 0.34 -3.49 0.74 -4.23 1.21 -0.37 0.24 -0.60 0.49 -0.70 0.77 -0.11 0.28 -0.10 0.58 0.00 0.91 0.20 0.65 0.75 1.41 1.43 2.28 0.67 0.87 1.47 1.86 2.15 3.00 1.10 1.83 2.19 4.06 3.20 6.12 1.45 -0.32 3.03 -0.62 5.26 -0.72 3.45 -0.15 4.55 -0.33 5.63 -0.94 1.09 -0.61 1.77 -0.72 3.58 -0.59 1.99 0.14 2.35 0.29 3.18 1.31 1.53 1.86 2.92 2.04 7.74 0.96 2.27 -0.51 4.51 -0.83 4.97 -0.71 0.46 0.12 2.53 -0.04 4.58 -0.35 4.29 -0.64 6.39 -0.69 8.87 -0.23 1.04 0.20 5.01 0.21 9.67 0.04l7.91 -0.29 2.62 2.65c3.75 3.80 3.83 3.83 10.86 3.92 3.27 0.04 7.15 -0.07 8.64 -0.25 1.65 -0.20 2.40 -0.45 3.98 -0.71z"},"path30":{"name":"Sulawesi Barat","path":"m818.92 316.14c1.02 -1.21 2.17 -2.82 2.93 -3.43 0.80 -0.64 1.36 -1.36 1.75 -2.13 0.39 -0.77 0.61 -1.58 0.73 -2.40 0.24 -1.64 0.08 -3.33 0.08 -4.77v0.00 -8.02l11.55 -0.32c0.00 0.00 0.56 0.32 1.12 0.20 0.28 -0.06 0.56 -0.23 0.77 -0.61 0.21 -0.38 0.35 -0.96 0.35 -1.84 0.00 -1.76 0.24 -4.01 0.24 -6.42 0.00 -1.20 -0.06 -2.45 -0.24 -3.69 -0.18 -1.24 -0.48 -2.49 -0.96 -3.69 -0.96 -2.41 -1.61 -4.81 -2.21 -7.46 -0.60 -2.65 -1.16 -5.53 -1.96 -8.90 -0.80 -3.37 -1.84 -6.66 -2.81 -9.75 -0.96 -3.09 -1.85 -5.98 -2.33 -8.54 -0.48 -2.57 -0.96 -7.06 -1.32 -10.91 -0.17 -1.81 -0.18 -2.07 -0.28 -3.33 -0.61 0.70 -1.15 1.51 -1.77 2.84 -0.71 1.52 -1.29 3.11 -1.29 3.54 0.00 0.44 -0.78 1.66 -1.78 2.76 -0.98 1.08 -2.01 2.42 -2.29 2.97 -0.60 1.18 -1.09 4.58 -1.03 7.12 0.20 9.19 0.28 10.07 1.07 11.59 1.36 2.59 1.13 3.37 -1.56 5.48 -1.29 1.02 -2.49 2.21 -2.66 2.64 -2.59 6.67 -2.96 8.38 -2.38 10.97 0.35 1.56 -0.26 3.00 -1.63 3.80 -0.59 0.35 -1.47 1.26 -1.96 2.03 -0.95 1.50 -2.11 2.25 -4.13 2.68 -4.00 0.85 -5.27 3.02 -3.63 6.22 0.38 0.73 1.11 1.73 1.62 2.21 1.26 1.17 1.18 2.12 -0.35 4.12 -1.77 2.32 -1.94 3.71 -0.70 5.82 0.68 1.16 1.04 2.36 1.15 3.88 0.16 2.02 1.52 6.33 2.30 7.27 0.18 0.21 0.93 0.59 1.69 0.84 1.25 0.41 1.52 0.37 3.12 -0.48 1.28 -0.68 2.29 -0.93 3.77 -0.93 1.38 -0.00 2.39 -0.23 3.19 -0.72 0.62 -0.38 1.22 -0.56 1.84 -0.65z"},"path31":{"name":"Maluku","path":"m1151.49 293.43c-1.42 -0.03 -2.12 0.39 -3.21 1.40 -1.46 1.34 -6.38 3.62 -7.83 3.62 -0.62 0.00 -1.19 -1.13 -1.59 -3.18 -0.28 -1.40 -0.66 -1.40 -4.24 -0.08 -2.04 0.75 -2.30 0.76 -8.83 0.37 -4.87 -0.29 -7.31 -0.30 -8.84 -0.01 -1.16 0.21 -3.15 0.39 -4.42 0.39 -2.04 0.00 -2.48 0.13 -3.70 1.10 -0.91 0.72 -1.54 1.61 -1.83 2.55 -0.54 1.79 -2.12 3.54 -3.20 3.54 -0.45 0.00 -1.35 0.41 -2.01 0.92 -0.66 0.50 -1.77 1.16 -2.46 1.44 -1.61 0.67 -1.60 1.32 0.04 4.08 1.17 1.96 1.27 2.34 1.06 3.89 -0.44 3.12 -0.38 4.79 0.16 5.13 0.76 0.47 0.99 0.18 1.68 -2.01 0.34 -1.09 1.19 -2.64 1.88 -3.44 0.96 -1.13 1.36 -2.03 1.72 -3.94 0.52 -2.74 1.33 -4.27 2.25 -4.27 0.84 0.00 1.47 0.71 1.47 1.65 0.00 0.91 0.53 1.40 1.85 1.72 0.67 0.16 1.28 0.80 2.04 2.15 0.60 1.06 1.87 2.78 2.83 3.82 1.64 1.79 1.84 1.90 3.54 1.92 2.28 0.03 4.54 -1.06 7.29 -3.54 2.52 -2.27 5.06 -4.12 5.66 -4.12 0.25 0.00 0.80 0.28 1.23 0.63 0.68 0.55 0.73 0.77 0.39 1.66 -0.60 1.57 0.01 2.02 2.69 2.02 1.77 0.00 2.76 0.23 4.54 1.08 1.87 0.89 2.74 1.08 4.87 1.08 1.97 0.00 2.89 0.18 3.84 0.74 0.83 0.49 1.73 0.70 2.63 0.63 1.34 -0.11 1.37 -0.15 1.48 -1.67 0.06 -0.86 -0.08 -1.79 -0.32 -2.08 -0.87 -1.05 -0.43 -1.10 6.14 -0.69 5.10 0.31 6.23 0.83 7.55 3.41 0.60 1.17 1.22 1.63 4.04 3.01 1.83 0.90 4.03 1.81 4.87 2.03 2.49 0.65 8.03 3.38 9.97 4.92 2.32 1.84 2.28 1.82 5.12 2.84v0.00 0.00c2.47 0.89 4.29 0.92 4.83 0.06 0.16 -0.24 0.29 -1.37 0.29 -2.50 0.00 -1.17 0.26 -2.60 0.61 -3.32 0.56 -1.17 0.56 -1.39 0.01 -3.16 -0.33 -1.04 -0.68 -2.34 -0.79 -2.89 -0.28 -1.39 -2.69 -2.95 -4.12 -2.67 -1.39 0.28 -2.17 -0.77 -2.17 -2.91 0.00 -2.57 -2.39 -6.29 -4.82 -7.52 -0.61 -0.31 -1.70 -1.12 -2.42 -1.81 -1.72 -1.64 -2.93 -1.86 -8.06 -1.48 -2.37 0.18 -4.78 0.25 -5.38 0.16 -0.59 -0.09 -2.41 -0.92 -4.04 -1.83 -4.11 -2.32 -7.74 -3.80 -10.71 -4.36 -1.60 -0.30 -2.71 -0.48 -3.56 -0.49zm-49.84 4.66c-0.39 0.01 -0.85 0.27 -1.36 0.81 -0.84 0.90 -1.36 2.54 -1.00 3.13 0.34 0.56 0.86 0.47 2.22 -0.37 0.82 -0.50 1.21 -1.02 1.21 -1.59 0.00 -1.30 -0.43 -1.99 -1.07 -1.98zm-41.72 4.50c-8.05 0.02 -9.93 0.26 -13.27 1.70l-3.02 1.30 -1.21 -0.93 -1.22 -0.92 -1.40 0.97c-1.61 1.12 -1.82 1.67 -1.83 4.90 -0.01 3.14 1.08 5.27 4.58 8.99 2.99 3.18 7.34 6.03 11.78 7.73 1.38 0.53 3.17 1.26 3.96 1.63 1.60 0.75 2.14 0.72 6.82 -0.39 1.98 -0.47 3.69 -1.11 4.42 -1.67 1.77 -1.35 5.65 -3.01 7.05 -3.01 0.67 0.00 1.39 -0.20 1.60 -0.45 0.49 -0.59 1.08 -3.18 1.26 -5.62 0.14 -1.81 0.07 -2.03 -1.14 -3.36 -1.16 -1.28 -1.42 -1.41 -2.63 -1.24 -1.04 0.14 -1.48 0.02 -1.99 -0.55 -0.41 -0.46 -0.50 -0.79 -0.25 -0.88 0.22 -0.08 0.68 -0.35 1.02 -0.60 0.57 -0.42 0.58 -0.57 0.10 -1.73 -0.68 -1.62 -2.05 -2.69 -4.30 -3.36 -0.98 -0.29 -2.70 -0.98 -3.82 -1.53 -1.90 -0.93 -2.33 -1.00 -6.53 -0.99zm34.37 3.08c-0.46 0.05 -0.78 0.36 -1.52 1.16 -1.29 1.40 -1.29 1.88 0.00 2.40v0.00 0.00c1.00 0.40 3.16 0.43 3.77 0.04 0.30 -0.19 0.43 -0.82 0.36 -1.70 -0.11 -1.30 -0.22 -1.43 -1.51 -1.75 -0.50 -0.12 -0.83 -0.19 -1.10 -0.16zm-5.36 3.43c-1.03 0.08 -2.40 0.77 -2.40 1.38 0.00 0.31 0.53 0.88 1.17 1.28 1.43 0.87 3.87 0.98 3.87 0.16 0.00 -0.75 -1.04 -2.28 -1.84 -2.71 -0.11 -0.06 -0.24 -0.09 -0.38 -0.11 -0.13 -0.01 -0.27 -0.01 -0.41 -0.00zm34.02 7.79c-0.12 -0.00 -0.22 0.01 -0.30 0.04 -0.63 0.24 -0.67 1.87 -0.06 2.26 0.25 0.16 1.10 0.56 1.89 0.88 2.75 1.13 3.49 0.62 1.79 -1.22 -0.99 -1.07 -2.50 -1.94 -3.32 -1.96zm-10.17 0.50c-0.41 0.03 -0.80 0.13 -1.14 0.30 -0.55 0.29 -1.48 0.78 -2.07 1.09 -0.58 0.31 -1.95 0.70 -3.04 0.88 -2.36 0.38 -3.25 0.80 -4.80 2.28 -1.33 1.26 -1.58 3.02 -0.57 4.03 0.71 0.71 2.41 0.49 4.50 -0.57 1.80 -0.92 2.16 -0.88 1.89 0.21 -0.32 1.26 0.43 1.17 3.07 -0.38 1.97 -1.16 2.18 -1.39 2.18 -2.48 0.00 -0.96 0.17 -1.24 0.84 -1.41 0.87 -0.22 1.68 -1.55 1.68 -2.75 0.00 -0.77 -1.31 -1.28 -2.53 -1.19zm6.29 0.15c-0.68 -0.02 -1.37 0.23 -1.91 0.81 -1.00 1.07 -1.44 3.40 -0.73 3.86 0.28 0.18 0.69 0.25 0.91 0.17 0.23 -0.08 1.12 -0.35 1.98 -0.60 2.14 -0.61 2.56 -0.99 2.29 -2.09 -0.31 -1.32 -1.41 -2.11 -2.55 -2.15zm-40.87 10.14c-0.34 0.01 -0.79 0.21 -1.35 0.61 -1.30 0.92 -1.38 1.55 -0.28 2.09 1.50 0.74 2.24 0.39 2.36 -1.10 0.09 -1.07 -0.16 -1.61 -0.73 -1.60zm137.02 4.73c-0.21 0.02 -0.43 0.09 -0.67 0.22 -0.92 0.49 -0.88 1.21 0.11 1.90 1.48 1.03 2.27 0.62 1.87 -0.97 -0.20 -0.80 -0.69 -1.21 -1.31 -1.14zm-3.51 3.53c-0.70 0.13 -0.90 1.24 -0.35 1.91 0.48 0.58 2.86 0.73 2.86 0.18 0.00 -0.58 -1.94 -2.19 -2.51 -2.09zm10.73 11.78c-0.82 0.00 -0.85 0.64 -0.07 1.50 0.53 0.59 1.56 0.91 1.56 0.49 0.00 -0.71 -0.96 -1.99 -1.50 -1.99zm-55.50 2.88c-0.67 0.00 -1.68 1.06 -1.42 1.48 0.22 0.36 1.53 0.10 2.08 -0.41 0.40 -0.37 -0.03 -1.07 -0.66 -1.07zm58.49 5.78c-0.37 0.01 -0.46 0.36 -0.24 1.03 0.13 0.41 0.47 0.74 0.75 0.74 0.69 0.00 0.66 -1.41 -0.04 -1.67 -0.19 -0.07 -0.35 -0.10 -0.47 -0.10zm46.44 19.79c-0.25 -0.03 -0.46 0.02 -0.66 0.14 -0.59 0.38 -3.12 6.34 -3.57 8.41 -0.15 0.66 -0.80 1.79 -1.44 2.51 -0.70 0.78 -1.40 2.11 -1.72 3.29 -0.30 1.09 -1.05 3.43 -1.67 5.19 -0.62 1.77 -1.05 3.43 -0.95 3.69 0.38 1.00 1.24 0.38 2.85 -2.04 1.07 -1.62 1.67 -2.91 1.67 -3.61 0.00 -1.50 1.14 -3.59 2.49 -4.59 1.76 -1.29 2.93 -3.41 3.90 -7.00 1.20 -4.49 1.20 -4.96 0.00 -5.64 -0.35 -0.20 -0.63 -0.31 -0.88 -0.34v0.00 0.00zm46.87 4.28c-1.39 0.00 -3.41 2.16 -5.21 5.57l-1.70 3.24 -1.55 -0.12c-1.93 -0.15 -3.26 0.17 -3.26 0.78 0.00 0.68 1.81 2.26 3.06 2.65 1.48 0.47 1.53 1.34 0.19 3.20 -0.99 1.38 -1.10 1.78 -0.91 3.11 0.14 0.95 0.03 2.07 -0.29 2.97l-0.51 1.44 -0.26 -1.14c-0.36 -1.63 -0.89 -1.94 -2.75 -1.63l-1.59 0.27 -0.11 1.97c-0.07 1.15 -0.35 2.23 -0.68 2.59 -0.52 0.57 -0.51 0.82 0.06 2.85 0.39 1.39 0.54 2.75 0.40 3.62 -0.12 0.76 -0.07 1.68 0.12 2.03 0.26 0.48 0.17 0.79 -0.35 1.24 -0.54 0.46 -0.70 1.06 -0.70 2.65 0.00 1.13 -0.34 3.25 -0.75 4.71 -0.85 3.04 -1.03 2.57 2.34 6.11 0.99 1.04 2.10 1.89 2.47 1.89 0.62 0.00 2.04 -1.36 8.30 -7.93 2.57 -2.70 2.74 -3.20 1.84 -5.47 -0.20 -0.52 -0.05 -0.63 0.86 -0.63 1.44 0.00 2.34 -1.29 2.14 -3.06 -0.14 -1.20 -0.07 -1.29 1.19 -1.63 1.87 -0.50 3.32 -2.59 4.09 -5.88 0.61 -2.57 0.60 -2.64 -0.15 -4.11 -0.42 -0.82 -1.17 -1.76 -1.66 -2.08 -0.49 -0.32 -0.89 -0.69 -0.89 -0.81 0.00 -0.13 0.57 -0.60 1.26 -1.04 1.40 -0.91 1.56 -1.69 0.68 -3.39 -0.56 -1.08 -0.55 -1.96 0.05 -4.88 0.15 -0.75 0.07 -1.37 -0.22 -1.72 -0.25 -0.30 -0.59 -1.37 -0.74 -2.37 -0.46 -2.93 -2.43 -4.98 -4.78 -4.98zm-58.52 4.67c-0.83 0.00 -1.04 0.16 -1.04 0.78 0.00 0.43 0.27 1.08 0.59 1.44 0.82 0.90 1.44 0.82 1.70 -0.21 0.33 -1.33 -0.09 -2.01 -1.26 -2.01zm-3.93 0.72c-1.69 0.00 -1.90 0.72 -0.89 3.02 0.53 1.20 0.90 2.71 0.90 3.66 0.00 1.59 0.78 3.67 1.58 4.19 1.31 0.86 3.40 -0.11 3.51 -1.64 0.11 -1.54 -0.09 -2.20 -1.54 -5.07 -1.81 -3.57 -2.32 -4.16 -3.56 -4.16zm72.40 23.07c-0.56 0.07 -1.31 0.63 -1.96 1.57 -1.15 1.66 -1.23 2.33 -0.47 3.80 0.62 1.19 1.42 1.37 1.92 0.43 0.59 -1.10 1.45 -4.81 1.24 -5.36 -0.13 -0.34 -0.40 -0.48 -0.73 -0.43zm-4.67 2.60c-0.04 0.04 -0.07 0.17 -0.07 0.37 -0.02 0.38 0.07 0.59 0.19 0.47 0.12 -0.12 0.13 -0.43 0.03 -0.69 -0.06 -0.14 -0.11 -0.19 -0.14 -0.16zm-0.97 7.21c-0.14 0.00 -0.30 0.05 -0.46 0.15 -1.08 0.70 -1.52 3.08 -0.82 4.39 0.56 1.05 1.37 0.84 2.02 -0.52 0.82 -1.72 0.27 -4.04 -0.74 -4.03zm-101.96 3.09c-0.36 0.03 -0.75 0.30 -0.87 0.78 -0.11 0.43 -0.12 0.92 -0.02 1.08 0.44 0.71 1.58 -0.16 1.58 -1.21 0.00 -0.47 -0.33 -0.68 -0.69 -0.65zm-97.28 12.64c-0.62 0.06 -1.22 0.43 -1.91 1.09 -1.49 1.45 -1.50 2.18 -0.02 3.12 1.57 1.01 2.98 0.96 4.06 -0.12 1.20 -1.20 1.14 -2.48 -0.16 -3.41 -0.73 -0.52 -1.36 -0.75 -1.97 -0.69zm107.07 1.42c-0.43 -0.01 -0.97 0.01 -1.69 0.04l-2.92 0.11 -0.11 1.17c-0.11 1.13 -0.07 1.17 1.26 1.18 0.75 0.01 1.94 0.32 2.63 0.70 1.47 0.80 1.79 0.84 3.03 0.37 1.17 -0.45 1.17 -1.10 -0.02 -2.51 -0.70 -0.83 -0.90 -1.05 -2.18 -1.06zm-7.93 0.09c-0.18 0.00 -0.38 0.03 -0.60 0.07 -1.50 0.31 -2.74 1.13 -2.74 1.82 0.00 0.31 -1.29 1.90 -2.86 3.54 -1.57 1.64 -2.96 3.39 -3.08 3.88 -0.15 0.60 -0.72 1.12 -1.73 1.57 -1.60 0.72 -3.69 3.38 -4.04 5.13 -0.40 2.02 -0.74 2.74 -1.34 2.85 -0.46 0.09 -0.62 -0.12 -0.62 -0.81 0.00 -0.67 -0.19 -0.92 -0.69 -0.92 -1.19 0.00 -1.79 0.39 -2.58 1.68 -0.99 1.61 -0.54 2.22 1.24 1.67 1.14 -0.35 1.26 -0.31 1.83 0.67 0.61 1.03 0.60 1.06 -0.49 2.30 -1.09 1.24 -1.10 1.28 -0.56 2.56 0.33 0.79 0.46 1.76 0.33 2.47 -0.17 0.90 -0.07 1.25 0.44 1.55 0.93 0.54 1.68 0.50 3.40 -0.19 1.24 -0.50 1.69 -0.52 2.70 -0.16 1.51 0.55 1.94 0.30 1.94 -1.11 0.00 -1.41 1.15 -3.27 2.57 -4.17 0.61 -0.38 1.45 -1.31 1.88 -2.05 0.51 -0.89 1.18 -1.49 1.98 -1.76 1.64 -0.54 3.13 -2.71 4.01 -5.85 0.62 -2.18 0.67 -2.97 0.39 -5.39 -0.18 -1.56 -0.44 -3.10 -0.57 -3.43 -0.18 -0.43 0.04 -0.73 0.77 -1.08 0.79 -0.38 1.04 -0.77 1.12 -1.78 0.09 -1.09 -0.08 -1.45 -1.04 -2.26 -0.69 -0.58 -1.12 -0.81 -1.66 -0.81zm-18.70 9.95c-0.74 -0.02 -1.52 0.12 -1.83 0.43 -0.47 0.47 -0.58 2.17 -0.17 2.58 0.14 0.14 0.83 0.21 1.52 0.15 0.98 -0.08 1.38 -0.33 1.75 -1.12 0.27 -0.56 0.39 -1.24 0.28 -1.53 -0.12 -0.32 -0.81 -0.50 -1.55 -0.52zm-6.21 2.88c-0.66 0.00 -1.10 0.90 -0.82 1.71 0.32 0.94 2.61 0.38 2.61 -0.63 0.00 -0.67 -0.68 -1.08 -1.78 -1.08zm-113.83 0.77c-0.31 0.04 -0.62 0.23 -0.97 0.55 -0.83 0.75 -0.82 1.11 0.06 2.55 0.84 1.37 0.91 1.38 2.43 0.45 1.42 -0.87 1.45 -1.28 0.20 -2.59 -0.69 -0.72 -1.21 -1.03 -1.72 -0.96zm-27.49 1.83c-0.26 -0.01 -0.52 0.02 -0.84 0.07 -1.54 0.25 -3.79 1.29 -5.49 2.55 -1.84 1.36 -8.65 1.78 -11.26 0.69 -2.04 -0.85 -2.48 -0.68 -3.92 1.55 -0.74 1.14 -1.93 2.80 -2.65 3.69 -1.11 1.37 -1.35 1.99 -1.57 4.05 -0.32 3.04 0.03 3.12 3.15 0.72l2.22 -1.71 2.88 0.06c5.03 0.10 11.83 0.71 12.92 1.16 1.35 0.56 1.83 0.35 2.57 -1.11 0.63 -1.25 1.64 -2.24 3.82 -3.75 1.00 -0.69 1.98 -0.98 3.95 -1.15l2.63 -0.24 0.11 -1.19c0.14 -1.44 -0.44 -2.22 -1.62 -2.22 -0.48 0.00 -2.11 -0.74 -3.61 -1.66 -1.80 -1.10 -2.53 -1.46 -3.31 -1.50zm101.56 6.89c-1.63 0.09 -2.95 0.95 -3.25 2.55 -0.26 1.40 0.07 2.08 2.45 4.95 1.29 1.56 1.55 1.71 2.99 1.71 1.75 0.00 2.76 -0.77 3.62 -2.78 0.81 -1.89 0.63 -3.07 -0.67 -4.33 -1.55 -1.50 -3.50 -2.19 -5.13 -2.10zm-81.28 7.79c-0.58 -0.07 -1.09 0.41 -1.19 1.36 -0.06 0.66 -0.03 1.43 0.08 1.71 0.21 0.55 0.67 0.61 1.92 0.28 0.97 -0.26 1.07 -1.40 0.24 -2.59 -0.33 -0.47 -0.70 -0.71 -1.05 -0.76zm20.64 2.58c-0.88 0.05 -1.39 0.45 -1.39 1.16 0.00 1.32 1.63 3.01 3.17 3.29 0.73 0.13 1.94 0.55 2.70 0.93l1.37 0.69 1.55 -0.87 1.55 -0.87 0.58 1.21c0.53 1.11 0.71 1.21 2.20 1.21 1.50 0.00 1.62 -0.07 1.62 -0.92 0.00 -1.73 -0.60 -2.31 -2.35 -2.31 -1.54 0.00 -1.61 -0.04 -1.61 -1.07 0.00 -1.22 -0.29 -1.34 -3.77 -1.57 -1.19 -0.08 -2.84 -0.35 -3.68 -0.59 -0.76 -0.23 -1.42 -0.32 -1.95 -0.29zm106.42 0.37c-0.64 0.03 -1.31 0.11 -1.98 0.26 -2.61 0.59 -3.69 1.25 -3.69 2.23 0.00 0.44 -0.67 1.39 -1.57 2.24 -1.78 1.66 -2.86 3.21 -2.51 3.57 0.59 0.59 1.76 0.12 3.13 -1.26 1.09 -1.10 1.92 -1.58 3.10 -1.80 2.22 -0.42 7.01 -3.23 7.01 -4.12 0.00 -0.77 -1.58 -1.21 -3.50 -1.13zm-177.89 1.21c-0.40 -0.06 -0.94 0.03 -1.47 0.31 -2.29 1.18 -3.62 4.00 -2.45 5.17 0.25 0.25 1.01 0.40 1.71 0.34 1.21 -0.10 1.29 -0.20 2.04 -2.44 0.43 -1.29 0.79 -2.52 0.81 -2.75 0.03 -0.35 -0.23 -0.57 -0.63 -0.63zm67.48 0.19c-0.82 0.07 -1.76 0.50 -2.24 1.23 -0.74 1.12 -0.53 1.84 0.59 2.06 0.46 0.09 1.02 0.18 1.26 0.21 0.52 0.06 1.91 -1.83 1.91 -2.59 0.00 -0.69 -0.70 -0.98 -1.52 -0.91zm39.87 0.91c-1.67 0.13 -2.87 1.07 -2.05 2.07 0.68 0.82 3.66 0.76 4.72 -0.09 0.99 -0.80 0.72 -1.36 -0.89 -1.81 -0.60 -0.17 -1.21 -0.21 -1.77 -0.17z"},"path32":{"name":"Maluku Utara","path":"m1121.97 115.95c-0.40 0.06 -1.03 0.40 -1.85 1.03 -0.92 0.70 -1.90 1.28 -2.17 1.28 -0.84 0.00 -3.97 3.19 -5.47 5.56 -1.74 2.75 -2.25 4.49 -1.81 6.05 0.18 0.64 0.33 1.76 0.33 2.50 0.00 0.74 0.27 2.01 0.59 2.83l0.59 1.48 1.65 -0.24c0.91 -0.13 2.46 -0.36 3.45 -0.51 2.30 -0.34 3.87 -1.18 4.98 -2.65 1.17 -1.56 2.25 -3.77 2.57 -5.25 0.14 -0.66 0.65 -2.05 1.12 -3.09 0.82 -1.80 0.84 -1.95 0.31 -3.49 -0.53 -1.55 -2.95 -4.86 -3.98 -5.45 -0.08 -0.05 -0.19 -0.06 -0.32 -0.04zm-13.90 9.14c-0.49 0.00 -0.66 0.27 -0.66 1.02 0.00 0.56 0.11 1.13 0.24 1.26 0.35 0.35 1.49 0.29 1.72 -0.09 0.35 -0.57 -0.61 -2.18 -1.30 -2.18zm-5.28 5.47c-0.27 -0.02 -0.57 0.01 -0.93 0.07 -1.01 0.19 -2.03 1.09 -5.49 4.87 -2.33 2.55 -4.78 5.52 -5.44 6.61 -1.73 2.85 -2.92 6.60 -3.26 10.22 -0.26 2.84 -0.48 3.50 -2.13 6.57l-1.84 3.41 0.10 3.24 0.11 3.24 1.21 0.40c0.91 0.30 1.29 0.68 1.51 1.53 0.16 0.62 0.92 2.13 1.69 3.34l1.40 2.21 -0.85 1.65c-1.19 2.31 -1.48 4.95 -0.76 7.11 0.31 0.95 0.66 2.33 0.77 3.06 0.17 1.12 0.55 1.58 2.36 2.88l2.15 1.55 -0.23 1.62c-0.13 0.89 -0.27 3.64 -0.31 6.11 -0.04 2.47 -0.20 5.71 -0.34 7.19 -0.24 2.47 -0.19 2.80 0.58 3.94 0.47 0.70 1.90 1.85 3.25 2.62 2.28 1.31 2.49 1.55 4.31 4.87 1.05 1.92 2.31 4.30 2.81 5.29 0.86 1.71 1.08 1.88 4.32 3.32 2.80 1.25 3.47 1.70 3.73 2.52 0.46 1.42 0.86 1.83 1.96 2.00 2.50 0.38 3.66 0.18 3.66 -0.66 0.00 -0.26 -1.11 -1.48 -2.47 -2.69 -2.74 -2.45 -3.45 -3.35 -6.39 -8.08 -1.91 -3.07 -4.22 -8.28 -5.41 -12.23 -0.30 -0.99 -0.95 -2.60 -1.45 -3.58 -0.98 -1.93 -1.16 -4.62 -0.42 -6.02 0.57 -1.06 0.46 -3.52 -0.22 -5.22 -0.65 -1.64 -0.41 -2.61 1.15 -4.66l0.97 -1.27 2.30 0.25c1.37 0.15 3.04 0.63 4.14 1.20 1.51 0.78 2.48 0.99 5.46 1.15 3.34 0.18 3.78 0.29 5.77 1.48 1.19 0.71 2.97 1.48 3.96 1.70 0.99 0.23 2.85 0.67 4.13 0.97 4.05 0.96 4.32 0.99 4.32 0.45 0.00 -1.07 -2.07 -2.77 -4.10 -3.36 -1.88 -0.55 -2.02 -0.66 -2.02 -1.69 0.00 -1.73 -0.73 -3.73 -1.86 -5.10 -0.77 -0.93 -1.57 -1.40 -3.10 -1.83 -5.51 -1.53 -10.15 -3.92 -10.15 -5.22 0.00 -0.17 -0.09 -0.55 -0.21 -0.85 -0.14 -0.38 0.13 -0.61 0.92 -0.78 0.80 -0.18 1.29 -0.60 1.70 -1.44 0.42 -0.88 0.88 -1.25 1.73 -1.41 1.26 -0.24 5.97 -2.75 8.26 -4.40 2.00 -1.45 3.06 -3.15 3.06 -4.91 0.00 -0.80 0.27 -2.41 0.60 -3.58 0.58 -2.07 0.58 -2.17 -0.16 -3.62 -0.42 -0.82 -0.84 -2.18 -0.93 -3.03 -0.35 -3.27 -1.96 -4.06 -5.21 -2.59 -0.86 0.39 -2.08 0.72 -2.70 0.72 -1.15 0.01 -2.59 0.75 -6.79 3.51 -2.40 1.57 -3.76 3.21 -4.54 5.47 -0.41 1.18 -0.37 1.31 0.52 2.09l0.96 0.83 -0.82 0.88c-0.50 0.54 -1.23 0.88 -1.86 0.88 -2.65 0.00 -5.68 3.04 -5.68 5.71 0.00 1.55 -0.86 3.50 -1.74 3.98 -1.49 0.80 -3.20 0.47 -4.73 -0.92 -0.79 -0.72 -1.54 -1.69 -1.66 -2.16 -0.32 -1.29 0.48 -2.82 1.82 -3.46 0.66 -0.31 1.74 -1.05 2.41 -1.63 0.67 -0.58 1.86 -1.39 2.65 -1.79 0.79 -0.40 1.75 -1.27 2.14 -1.94 0.39 -0.66 1.23 -1.90 1.89 -2.76 0.84 -1.10 1.19 -1.94 1.19 -2.88 0.00 -0.73 0.16 -2.31 0.36 -3.52 0.27 -1.68 0.24 -2.53 -0.13 -3.60 -0.27 -0.77 -0.41 -1.99 -0.32 -2.71 0.20 -1.64 -0.92 -3.30 -2.89 -4.31 -0.75 -0.38 -1.54 -1.08 -1.75 -1.55 -0.33 -0.72 -0.23 -1.06 0.64 -2.20 0.57 -0.74 1.35 -1.87 1.75 -2.52 0.40 -0.65 1.19 -1.75 1.75 -2.46 0.94 -1.17 0.99 -1.38 0.59 -2.36 -0.48 -1.16 -0.94 -1.66 -1.75 -1.73zm-21.47 43.44c-1.04 0.00 -1.64 2.34 -0.81 3.17 0.50 0.50 1.69 0.56 2.40 0.11 0.96 -0.61 -0.34 -3.27 -1.59 -3.27zm3.65 4.02c-0.33 -0.03 -0.75 0.10 -1.24 0.40 -1.02 0.62 -1.69 2.12 -1.34 3.02 0.16 0.43 0.50 0.51 1.35 0.34 1.60 -0.32 2.10 -0.85 2.10 -2.25 0.00 -0.93 -0.31 -1.45 -0.86 -1.50zm-1.02 12.03c-0.86 0.10 -2.50 1.19 -2.34 1.68 0.08 0.24 0.54 0.64 1.02 0.88 1.04 0.53 0.86 0.50 1.56 0.24 0.72 -0.27 0.78 -2.50 0.08 -2.77 -0.08 -0.03 -0.19 -0.04 -0.31 -0.02zm0.21 10.21c-0.59 0.00 -0.61 0.41 -0.07 1.60 0.47 1.03 1.74 1.25 1.74 0.31 0.00 -0.75 -1.02 -1.92 -1.67 -1.92zm63.51 1.82c-0.22 0.04 -0.33 0.22 -0.33 0.54 0.00 0.70 4.59 5.88 5.57 6.28 1.00 0.41 1.90 0.41 2.15 -0.01 0.39 -0.63 -0.50 -1.74 -3.47 -4.31 -1.78 -1.54 -3.00 -2.37 -3.66 -2.50 -0.10 -0.02 -0.19 -0.02 -0.26 -0.01zm-70.01 8.61c-0.75 0.00 -1.88 0.32 -2.53 0.71 -1.15 0.70 -1.17 0.75 -1.17 3.40 0.00 2.50 0.08 2.78 1.12 3.96 0.61 0.70 1.42 1.27 1.78 1.27 1.09 0.00 2.47 -0.78 2.71 -1.53 0.19 -0.59 0.39 -0.41 1.24 1.07 0.93 1.63 2.58 3.34 4.08 4.24 0.52 0.31 0.54 0.52 0.17 1.49 -0.40 1.04 -0.34 1.24 0.76 2.63 0.94 1.19 1.35 1.46 1.95 1.27 0.42 -0.13 1.50 -0.32 2.41 -0.43 1.55 -0.18 1.71 -0.12 2.47 0.96 0.45 0.63 1.16 1.30 1.58 1.48 1.03 0.44 3.30 0.17 4.36 -0.53 0.98 -0.64 1.57 -2.87 1.01 -3.78 -0.71 -1.15 -2.71 -2.19 -4.21 -2.19 -1.89 -0.01 -3.17 -0.67 -3.59 -1.85 -0.27 -0.76 -0.15 -1.17 0.62 -2.18 0.52 -0.69 0.95 -1.61 0.95 -2.06 0.00 -1.33 -1.05 -3.14 -2.73 -4.68 -1.66 -1.53 -2.97 -1.85 -3.75 -0.91 -0.26 0.31 -1.04 0.54 -1.85 0.54 -1.92 0.00 -3.81 0.86 -4.31 1.95 -0.60 1.31 -1.03 0.79 -1.03 -1.23 0.00 -2.81 -0.45 -3.60 -2.06 -3.60zm0.66 11.51c-0.97 0.00 -1.74 0.86 -2.18 2.44 -0.55 1.97 -0.46 3.23 0.26 3.64 0.83 0.48 2.24 0.48 3.63 -0.01 0.95 -0.33 1.13 -0.58 1.13 -1.55 0.00 -1.51 -1.90 -4.53 -2.84 -4.53zm10.73 18.46c-0.19 -0.00 -0.38 0.01 -0.55 0.05 -1.32 0.25 -1.94 1.06 -1.94 2.56 0.00 0.91 0.08 0.96 1.35 0.79 1.96 -0.26 4.05 -1.23 4.05 -1.86 0.00 -0.76 -1.57 -1.52 -2.90 -1.53zm3.05 5.02c-0.20 -0.01 -0.37 -0.00 -0.53 0.03 -0.56 0.11 -1.76 0.77 -2.66 1.46 -0.91 0.69 -2.20 1.36 -2.88 1.49 -0.68 0.13 -1.39 0.42 -1.57 0.64 -0.49 0.61 -1.13 3.98 -1.13 5.95 0.00 1.96 0.31 2.35 3.06 3.76 2.09 1.07 3.06 1.14 5.04 0.35 2.08 -0.83 9.65 -1.22 11.46 -0.59 2.28 0.79 3.55 0.62 5.06 -0.69 1.34 -1.16 1.35 -1.19 0.95 -2.69 -0.36 -1.33 -0.58 -1.56 -1.77 -1.88 -0.75 -0.20 -1.75 -0.79 -2.24 -1.31 -1.61 -1.73 -3.81 -3.02 -5.15 -3.02 -0.90 0.00 -1.63 -0.32 -2.51 -1.08 -1.50 -1.31 -3.74 -2.35 -5.12 -2.42zm-10.75 1.18c-0.89 0.13 -1.22 1.08 -0.69 2.47 0.32 0.84 1.07 0.69 1.92 -0.38 0.96 -1.22 0.94 -1.52 -0.15 -1.93 -0.41 -0.16 -0.77 -0.21 -1.07 -0.16zm-89.33 8.85c-2.39 -0.06 -4.70 0.21 -5.55 0.77 -1.09 0.71 -3.30 4.58 -3.62 6.35 -0.28 1.54 0.89 3.48 3.08 5.06 1.08 0.78 1.89 1.07 2.96 1.07 2.01 0.00 5.72 -1.10 8.27 -2.47 2.49 -1.33 2.59 -1.34 5.54 -0.41l2.26 0.71 2.01 -1.07c1.77 -0.94 2.37 -1.07 5.00 -1.07 2.59 0.00 3.05 -0.10 3.50 -0.73 0.45 -0.64 0.56 -0.66 0.96 -0.18 0.25 0.30 0.82 0.55 1.26 0.55 0.44 0.00 1.43 0.50 2.20 1.12 1.34 1.07 1.49 1.11 3.73 0.87 1.29 -0.14 3.64 -0.23 5.22 -0.20 1.59 0.03 3.34 -0.12 3.90 -0.33 0.72 -0.27 1.43 -0.28 2.42 -0.01 1.14 0.31 1.86 0.25 3.83 -0.33 1.43 -0.42 3.42 -0.71 4.86 -0.69 2.06 0.02 2.66 -0.13 3.89 -0.94 0.80 -0.53 1.39 -1.15 1.31 -1.39 -0.08 -0.24 -1.02 -0.54 -2.09 -0.67 -1.07 -0.13 -3.59 -0.44 -5.59 -0.68 -2.87 -0.35 -4.82 -0.35 -9.19 -0.01 -5.43 0.42 -9.94 0.29 -12.57 -0.37 -1.62 -0.41 -2.34 -0.15 -3.00 1.07 -0.49 0.89 -0.52 0.90 -0.53 0.15 -0.03 -1.42 -0.79 -2.62 -1.67 -2.62 -0.45 0.00 -0.92 0.16 -1.04 0.36 -0.36 0.58 -0.83 0.42 -1.08 -0.36 -0.24 -0.76 -1.90 -1.80 -2.88 -1.80 -0.32 0.00 -0.75 0.49 -0.95 1.08 -0.47 1.36 -1.45 1.41 -3.26 0.18 -0.76 -0.52 -2.45 -1.12 -3.95 -1.41 -1.44 -0.28 -3.75 -0.78 -5.14 -1.11 -1.19 -0.28 -2.66 -0.44 -4.09 -0.48zm44.02 11.09c-0.58 0.02 -1.20 0.44 -1.84 1.27 -0.86 1.12 -0.94 1.49 -0.77 3.22 0.11 1.07 0.77 3.21 1.46 4.76 0.69 1.54 1.38 3.45 1.52 4.24 0.17 0.95 0.67 1.83 1.49 2.61 1.40 1.33 2.42 1.49 2.97 0.47 0.64 -1.20 0.42 -2.17 -1.27 -5.74 -1.67 -3.51 -1.87 -4.48 -1.44 -7.05 0.19 -1.12 0.08 -1.70 -0.49 -2.61 -0.50 -0.80 -1.05 -1.19 -1.64 -1.18z"},"path33":{"name":"Papua","path":"m1346.84 223.59c-1.22 0.05 -2.07 0.40 -2.07 0.98 0.00 1.48 1.18 2.75 3.53 3.82 1.32 0.60 2.93 1.55 3.58 2.12 1.39 1.22 1.45 1.22 3.17 0.41l1.32 -0.63 0.74 0.98c1.08 1.44 2.68 6.48 2.48 7.81 -0.18 1.25 0.52 2.27 2.14 3.11 0.82 0.42 1.14 0.42 2.20 -0.02 1.12 -0.47 1.41 -0.45 3.00 0.18 2.80 1.12 7.99 0.16 10.24 -1.89l1.20 -1.09 -0.80 -0.65c-0.44 -0.36 -1.82 -0.99 -3.07 -1.40 -2.48 -0.83 -4.08 -2.12 -5.88 -4.77 -0.64 -0.93 -1.93 -2.26 -2.88 -2.95 -0.95 -0.69 -2.17 -1.82 -2.71 -2.51 -1.22 -1.55 -2.98 -2.01 -4.33 -1.13 -0.66 0.43 -0.97 0.48 -1.16 0.18 -0.45 -0.73 -3.17 -1.77 -4.66 -1.78 -0.79 -0.01 -2.39 -0.24 -3.54 -0.51 -0.88 -0.21 -1.74 -0.29 -2.48 -0.26zm-7.40 26.72c-0.45 0.01 -0.93 0.07 -1.40 0.18 -1.45 0.34 -1.92 1.20 -1.17 2.11 0.94 1.13 5.02 0.07 5.02 -1.30 0.00 -0.63 -1.10 -1.03 -2.45 -0.99zm87.57 0.15c-0.74 -0.03 -1.59 0.17 -2.90 0.50 -3.20 0.81 -5.68 1.95 -12.41 5.72 -2.45 1.37 -5.15 2.69 -5.99 2.92 -0.84 0.23 -2.12 0.92 -2.85 1.52 -1.20 0.99 -1.31 1.21 -1.10 2.39 0.14 0.82 0.64 1.66 1.35 2.27 0.94 0.81 2.06 2.95 2.08 3.96 0.01 0.48 -1.60 1.12 -3.95 1.55 -1.29 0.24 -4.12 1.25 -6.30 2.24 -4.92 2.24 -7.56 2.62 -11.55 1.68 -2.17 -0.51 -2.92 -0.55 -4.05 -0.21 -1.64 0.49 -3.28 2.60 -3.28 4.21 0.00 0.58 -0.41 1.86 -0.90 2.83 -0.49 0.97 -0.90 2.09 -0.90 2.49 0.00 1.53 -1.52 3.00 -4.74 4.58 -1.74 0.85 -3.74 2.15 -4.45 2.87 -1.13 1.16 -1.33 1.64 -1.61 3.91 -0.41 3.25 -1.14 4.31 -4.15 5.99 -1.69 0.94 -2.52 1.67 -3.01 2.64 -0.52 1.02 -1.02 1.44 -2.13 1.77 -1.37 0.41 -2.91 1.84 -2.93 2.71 0.00 0.22 -0.53 0.99 -1.17 1.71 -0.96 1.08 -1.61 1.41 -3.72 1.90 -1.90 0.44 -2.80 0.50 -3.53 0.22 -0.54 -0.20 -1.83 -0.37 -2.88 -0.37 -1.05 0.00 -2.60 -0.24 -3.44 -0.54 -0.84 -0.30 -2.00 -0.54 -2.57 -0.54 -0.82 0.00 -1.21 -0.28 -1.80 -1.27 -0.41 -0.70 -1.39 -1.60 -2.16 -1.99 -2.08 -1.06 -2.72 -2.63 -2.17 -5.30 0.54 -2.59 0.55 -4.98 0.04 -5.30 -0.22 -0.13 -0.93 0.28 -1.59 0.92 -0.93 0.90 -1.40 1.11 -2.08 0.94 -0.56 -0.14 -0.82 -0.62 -1.07 -1.56 -0.96 4.64 -1.83 9.80 -2.34 14.87 -0.13 1.29 -0.09 2.57 0.09 3.81 0.17 1.24 0.48 2.44 0.87 3.60 0.79 2.31 1.93 4.42 3.10 6.20 1.18 1.78 2.39 3.24 3.30 4.26 0.91 1.01 1.54 1.59 1.54 1.59l-7.03 -0.21 -0.76 0.87c0.24 0.77 0.14 2.92 -0.30 3.77 -0.75 1.45 -0.68 1.71 0.71 2.53 0.68 0.40 1.33 1.01 1.44 1.34 0.30 0.92 2.34 2.08 4.43 2.53 1.32 0.28 2.67 1.00 4.66 2.47 1.54 1.14 3.81 2.53 5.06 3.09 2.16 0.97 2.37 1.00 4.76 0.63 2.81 -0.44 8.45 0.03 10.95 0.90 0.88 0.31 2.91 0.51 5.15 0.51 4.06 0.01 5.33 0.36 7.30 2.05 2.10 1.81 6.69 3.76 9.32 3.97 2.50 0.20 4.04 0.84 7.19 2.97 1.09 0.74 2.38 1.46 2.88 1.61 0.49 0.15 1.71 0.72 2.70 1.26 2.98 1.64 5.40 2.36 6.41 1.90 0.70 -0.32 1.06 -0.26 1.90 0.31 0.78 0.53 1.42 0.66 2.55 0.52 1.58 -0.20 3.04 0.26 4.96 1.57 1.36 0.92 1.35 0.92 2.64 -0.17 0.99 -0.84 1.10 -0.85 1.29 -0.25 0.35 1.09 3.18 3.59 4.52 3.99 3.12 0.92 4.59 1.65 6.10 3.05 0.90 0.83 2.46 1.88 3.47 2.35 1.32 0.61 2.01 1.19 2.42 2.07 0.47 0.99 0.78 1.22 1.68 1.22 0.84 0.00 1.50 0.42 2.84 1.80 1.58 1.63 2.26 1.98 3.50 1.83 0.78 -0.09 1.17 1.89 0.63 3.18 -0.99 2.37 -0.30 5.42 1.23 5.42 0.34 -0.00 1.48 -0.33 2.54 -0.74 1.06 -0.40 2.00 -0.67 2.08 -0.59 0.08 0.08 -0.44 0.73 -1.16 1.45 -0.72 0.72 -1.23 1.51 -1.15 1.76 0.08 0.25 1.05 0.78 2.16 1.18 2.55 0.91 2.65 1.03 1.54 1.76 -0.95 0.62 -1.21 1.79 -0.50 2.23 0.72 0.44 3.07 6.00 3.72 8.78 1.01 4.32 1.86 5.62 6.43 9.75 2.27 2.05 4.14 3.86 4.15 4.00 0.02 0.15 -0.21 0.27 -0.51 0.27 -0.72 0.00 -0.68 0.89 0.09 2.07 0.61 0.93 0.61 0.95 -0.09 0.66 -1.48 -0.60 -1.80 -0.45 -1.74 0.83 0.03 0.67 0.40 1.68 0.81 2.23 0.95 1.29 0.94 1.46 -0.06 1.22 -1.04 -0.25 -3.15 1.03 -3.15 1.91 0.00 0.80 5.45 6.19 7.13 7.05 0.66 0.34 2.22 0.83 3.47 1.09 1.25 0.26 2.57 0.67 2.94 0.90 0.63 0.40 0.63 0.41 -0.05 0.16 -0.40 -0.14 -2.38 -0.34 -4.41 -0.43 -3.01 -0.13 -3.85 -0.06 -4.59 0.42 -1.15 0.75 -1.14 1.22 0.06 1.67 0.53 0.20 1.99 1.12 3.25 2.05 1.72 1.26 2.53 2.16 3.23 3.60 0.51 1.05 0.85 2.00 0.74 2.11 -0.11 0.11 -0.74 -0.53 -1.40 -1.42 -1.77 -2.38 -3.81 -3.25 -7.18 -3.02 -3.07 0.20 -10.26 1.72 -12.36 2.61 -2.18 0.92 -5.61 3.02 -6.97 4.28 -0.67 0.61 -2.07 2.41 -3.12 3.99 -1.05 1.58 -2.39 3.57 -2.98 4.41 -0.59 0.84 -1.58 2.95 -2.21 4.68 -0.62 1.73 -1.43 3.46 -1.79 3.86 -0.98 1.08 -1.79 2.84 -3.13 6.80 -1.35 4.00 -1.45 4.81 -0.66 5.12 0.30 0.11 2.02 -0.16 3.83 -0.61 3.10 -0.76 3.54 -0.79 7.64 -0.39 2.39 0.23 5.12 0.42 6.05 0.41 0.94 0.00 2.43 0.19 3.31 0.43 2.23 0.60 5.10 -0.31 7.26 -2.31 0.87 -0.80 1.64 -1.40 1.71 -1.32 0.07 0.08 0.39 0.67 0.72 1.31 0.33 0.64 0.63 1.18 0.68 1.19 1.43 0.31 6.93 1.04 7.93 1.05 1.53 0.01 2.77 -0.51 2.76 -1.17 0.00 -0.24 -0.49 -1.39 -1.08 -2.56 -0.59 -1.17 -1.07 -2.26 -1.07 -2.44 0.00 -0.18 0.60 0.09 1.34 0.59 0.74 0.50 1.53 0.91 1.77 0.91 0.23 0.00 1.09 -0.80 1.91 -1.78 0.98 -1.17 2.20 -2.11 3.54 -2.74 1.13 -0.53 2.33 -1.21 2.68 -1.51 0.35 -0.30 0.63 -0.39 0.63 -0.19 0.00 0.56 2.12 3.11 3.00 3.60 1.69 0.95 6.44 0.25 9.13 -1.33 1.07 -0.63 2.06 -0.81 5.29 -0.94 2.19 -0.09 4.58 -0.22 5.33 -0.30 1.00 -0.10 1.35 0.00 1.35 0.39 0.00 0.96 1.36 3.17 2.76 4.48 0.76 0.71 2.59 2.21 4.08 3.33 1.48 1.12 3.39 2.56 4.23 3.20 2.95 2.24 6.40 5.88 8.97 9.44 3.48 4.82 8.67 9.94 11.64 11.49 1.27 0.66 2.56 1.18 2.85 1.14 0.48 -0.05 0.54 -12.28 0.52 -107.70 -0.02 -93.68 -0.08 -107.68 -0.54 -107.97 -0.29 -0.18 -1.74 -0.23 -3.24 -0.11 -3.39 0.28 -5.02 -0.37 -5.02 -1.98 0.00 -0.56 -0.28 -1.26 -0.63 -1.57 -0.73 -0.65 -3.27 -1.55 -5.32 -1.88 -0.79 -0.13 -2.16 -0.39 -3.05 -0.59 -1.27 -0.28 -1.92 -0.23 -2.93 0.19 -1.92 0.80 -4.64 -0.06 -6.45 -2.04l-1.33 -1.46 -1.38 0.55c-0.76 0.30 -3.18 0.67 -5.38 0.81 -4.24 0.27 -5.65 -0.05 -8.33 -1.90 -0.54 -0.37 -2.11 -1.09 -3.49 -1.59 -1.38 -0.51 -3.38 -1.50 -4.43 -2.21 -1.05 -0.71 -2.69 -1.52 -3.64 -1.81 -0.95 -0.28 -2.35 -0.90 -3.12 -1.39 -2.30 -1.44 -8.12 -3.94 -9.66 -4.14 -2.03 -0.26 -4.08 -1.37 -5.76 -3.11 -1.87 -1.93 -3.15 -2.52 -8.71 -3.95 -2.52 -0.65 -5.58 -1.69 -6.80 -2.31 -1.22 -0.62 -3.36 -1.38 -4.75 -1.70 -2.13 -0.48 -2.93 -0.90 -4.96 -2.57 -2.08 -1.70 -2.97 -2.37 -4.20 -2.42zm-77.94 4.17c-2.63 0.01 -2.64 0.64 -1.61 2.15 0.78 1.15 1.08 1.31 2.95 1.51 6.49 0.70 8.26 1.14 13.63 3.39 1.41 0.59 3.75 1.36 5.21 1.70 1.46 0.35 3.06 0.85 3.56 1.11 0.55 0.29 1.32 0.39 1.98 0.25 0.59 -0.13 1.56 -0.20 2.16 -0.16 0.59 0.04 3.05 0.07 5.46 0.07 3.78 0.00 4.59 -0.10 5.91 -0.78 0.84 -0.43 2.47 -0.86 3.62 -0.97 1.85 -0.17 2.09 -0.28 2.09 -0.97 0.00 -0.43 -0.46 -1.22 -1.02 -1.76 -0.91 -0.87 -1.42 -1.01 -4.76 -1.31 -2.06 -0.19 -5.20 -0.35 -6.98 -0.36 -2.67 -0.02 -3.77 -0.21 -6.29 -1.11 -2.59 -0.93 -3.88 -1.15 -8.45 -1.44 -2.97 -0.19 -7.26 -0.53 -9.53 -0.75 -3.82 -0.38 -6.35 -0.59 -7.93 -0.59z"},"path34":{"name":"Papua Barat","path":"m1196.25 202.37c-0.53 0.00 -0.98 0.10 -1.64 0.28 -2.11 0.55 -8.37 1.50 -12.46 1.89 -3.26 0.31 -3.89 0.72 -3.89 2.56 0.00 0.87 -0.19 1.43 -0.54 1.56 -0.76 0.29 -0.68 0.73 0.39 2.00 0.88 1.05 1.07 1.11 3.56 1.11 2.56 0.00 2.66 0.03 3.74 1.27 0.61 0.70 1.12 1.59 1.12 1.98 0.00 1.01 1.02 0.87 1.51 -0.20 0.79 -1.73 1.88 -1.54 3.99 0.69 1.72 1.82 2.05 2.02 3.40 2.02 1.77 0.00 3.97 -1.18 4.43 -2.38 0.29 -0.75 0.42 -0.80 1.43 -0.44 0.91 0.32 1.40 0.26 2.60 -0.28 1.72 -0.77 2.93 -0.70 4.28 0.26 1.43 1.02 2.25 0.85 3.29 -0.67 0.83 -1.23 0.90 -1.58 0.72 -3.92 -0.17 -2.28 -0.29 -2.62 -1.07 -2.97 -0.48 -0.22 -1.07 -0.40 -1.30 -0.41 -0.24 -0.01 -1.07 -0.49 -1.84 -1.08 -0.78 -0.59 -1.75 -1.07 -2.16 -1.07 -0.41 -0.00 -2.68 -0.54 -5.04 -1.21 -2.55 -0.71 -3.63 -1.00 -4.50 -1.00zm54.05 11.10c-1.75 -0.05 -2.80 0.10 -4.61 0.55 -3.87 0.96 -7.33 2.75 -8.39 4.35 -0.52 0.79 -1.24 1.35 -1.91 1.50 -0.62 0.14 -2.25 1.34 -3.88 2.86 -2.79 2.61 -3.14 2.79 -6.50 3.25 -0.89 0.12 -2.46 0.47 -3.49 0.78 -1.48 0.44 -2.11 0.48 -3.04 0.15 -1.00 -0.35 -1.59 -0.27 -3.99 0.53 -1.55 0.52 -3.29 1.33 -3.87 1.82 -1.04 0.87 -1.05 0.91 -0.84 3.83 0.19 2.76 0.13 3.13 -0.96 5.73 -1.13 2.68 -1.25 2.82 -3.25 3.82l-2.08 1.04 0.18 -1.30c0.10 -0.72 0.33 -1.77 0.51 -2.35 0.85 -2.69 0.13 -7.22 -1.21 -7.58 -0.44 -0.12 -1.63 -0.48 -2.64 -0.80 -1.77 -0.56 -1.94 -0.56 -4.50 0.22 -5.04 1.54 -5.18 1.61 -5.11 2.57 0.22 3.05 0.78 5.45 1.44 6.18 0.41 0.45 1.19 1.54 1.73 2.43 1.74 2.85 2.64 3.60 4.36 3.60 0.84 0.00 1.93 -0.15 2.41 -0.34l0.89 -0.34 -0.19 2.09c-0.22 2.48 -0.03 2.67 2.78 2.77 1.11 0.04 2.72 0.40 3.67 0.83 1.57 0.71 1.79 0.73 2.97 0.23 0.70 -0.29 1.46 -0.94 1.69 -1.45 0.23 -0.50 0.63 -0.92 0.90 -0.92 0.52 0.00 1.51 0.93 2.13 2.00 0.36 0.62 0.51 0.64 1.88 0.19 1.31 -0.43 1.68 -0.42 3.21 0.15 0.95 0.35 2.49 1.12 3.43 1.71 1.19 0.75 1.97 1.01 2.57 0.86 0.60 -0.15 0.93 -0.04 1.08 0.36 0.22 0.58 0.99 0.57 3.09 -0.07 0.87 -0.26 0.88 -0.25 0.27 0.44 -0.77 0.88 -0.78 1.29 -0.06 2.69 0.51 0.99 0.69 1.07 1.78 0.87l1.22 -0.23 -0.91 2.00 -0.91 1.99 0.80 2.40c0.77 2.32 1.62 3.54 2.99 4.31 0.36 0.20 0.76 0.91 0.90 1.58 0.21 1.01 0.62 1.43 2.49 2.51 1.24 0.71 2.86 1.89 3.60 2.62 1.65 1.61 2.79 1.69 5.79 0.43 1.16 -0.49 2.74 -0.99 3.51 -1.11 1.31 -0.21 1.44 -0.14 2.28 1.15 1.19 1.82 2.93 2.29 4.86 1.30 1.27 -0.65 1.51 -0.66 4.22 -0.16 2.58 0.48 2.99 0.47 4.07 -0.04 1.67 -0.80 6.82 -2.04 8.38 -2.02 0.71 0.01 2.22 0.23 3.36 0.50 1.80 0.43 2.33 0.42 4.23 -0.09 1.72 -0.46 2.40 -0.50 3.25 -0.17 0.96 0.36 1.41 0.26 3.86 -0.87 1.53 -0.70 3.21 -1.58 3.73 -1.95 0.53 -0.37 1.20 -0.67 1.51 -0.67 1.14 0.00 0.94 0.76 -0.65 2.46 -2.03 2.17 -2.12 2.93 -0.35 2.93 0.71 0.00 1.62 -0.18 2.03 -0.40 0.69 -0.37 0.73 -0.33 0.51 0.63 -0.71 3.13 -0.70 3.28 0.11 3.54 0.62 0.20 0.70 0.35 0.36 0.76 -0.55 0.66 -1.57 0.65 -2.13 -0.03 -0.52 -0.62 -2.94 -0.72 -3.98 -0.17 -0.95 0.51 -0.87 1.38 0.24 2.54 1.36 1.42 0.95 2.50 -0.86 2.24 -0.73 -0.10 -2.01 -0.43 -2.83 -0.73 -1.38 -0.50 -1.59 -0.49 -2.65 0.12 -1.14 0.66 -1.15 0.66 -1.69 -0.14 -0.58 -0.86 -2.72 -1.16 -3.16 -0.44 -0.13 0.21 -0.58 -0.15 -1.02 -0.80 -1.30 -1.93 -3.64 -3.36 -5.45 -3.32 -3.62 0.08 -6.63 2.09 -9.77 6.51 -2.64 3.73 -5.05 5.87 -6.60 5.87 -0.57 0.00 -1.69 -0.54 -2.66 -1.29 -2.40 -1.84 -3.60 -2.11 -5.24 -1.19l-1.31 0.74 -1.66 -0.88c-0.91 -0.48 -2.58 -1.00 -3.71 -1.14 -1.92 -0.24 -2.15 -0.18 -3.61 0.86 -0.97 0.70 -2.41 1.29 -3.83 1.57 -2.07 0.42 -2.28 0.54 -2.38 1.44 -0.06 0.54 0.15 1.80 0.48 2.79 0.45 1.36 0.94 2.03 1.98 2.72 1.29 0.85 1.51 0.89 3.22 0.52 3.89 -0.83 4.92 -0.61 8.39 1.80 4.32 3.00 6.57 5.34 6.85 7.12 0.12 0.77 0.52 1.76 0.88 2.20 0.61 0.75 0.75 0.77 1.95 0.34 1.83 -0.66 2.98 0.11 3.25 2.19 0.14 1.08 0.57 1.88 1.48 2.82 1.42 1.46 1.94 3.15 1.32 4.31 -0.34 0.63 -0.74 0.76 -2.31 0.76 -1.04 0.00 -2.20 0.22 -2.58 0.50 -0.66 0.48 -0.63 0.62 0.66 4.41 0.73 2.15 1.33 4.40 1.33 5.01 0.00 0.83 0.54 1.73 2.22 3.69 2.34 2.72 2.72 2.90 4.97 2.20 0.69 -0.21 2.68 -0.43 4.43 -0.49l3.18 -0.10 2.51 -2.48c1.38 -1.36 3.02 -3.11 3.64 -3.88l1.12 -1.40 -0.74 -1.30c-1.00 -1.75 -0.68 -2.49 2.47 -5.67 2.42 -2.45 2.53 -2.64 2.31 -3.85 -0.14 -0.72 -0.63 -1.58 -1.13 -1.97 -0.49 -0.38 -0.89 -0.87 -0.89 -1.09 0.00 -0.49 0.07 -0.49 1.26 -0.04 0.83 0.32 1.07 0.23 1.90 -0.72 0.52 -0.59 1.09 -1.08 1.26 -1.08 0.33 0.00 0.07 1.65 -0.56 3.48 -0.35 1.01 -0.26 1.41 0.80 3.42 0.66 1.25 1.42 2.54 1.70 2.86 0.77 0.89 2.62 1.15 3.37 0.47 0.57 -0.52 0.69 -0.47 1.44 0.63 0.45 0.65 1.55 1.96 2.45 2.90 1.40 1.46 1.84 1.71 3.02 1.71 0.76 0.00 1.87 -0.26 2.48 -0.57 0.60 -0.31 1.18 -0.48 1.29 -0.37 0.11 0.11 0.28 1.02 0.37 2.01 0.14 1.50 0.36 1.95 1.24 2.57 0.59 0.42 1.75 0.84 2.59 0.93 1.33 0.15 1.63 0.05 2.27 -0.77 1.04 -1.32 2.00 -1.18 3.41 0.52 0.97 1.16 1.52 1.50 2.72 1.66 1.38 0.19 1.59 0.10 2.66 -1.11 0.64 -0.72 1.27 -1.30 1.40 -1.30 0.07 0.00 0.04 0.42 0.09 0.57l0.76 -0.87 7.03 0.21c0.00 0.00 -0.62 -0.57 -1.54 -1.59 -0.91 -1.01 -2.12 -2.47 -3.30 -4.26 -1.18 -1.78 -2.32 -3.89 -3.10 -6.20 -0.39 -1.15 -0.70 -2.36 -0.87 -3.60 -0.17 -1.24 -0.22 -2.51 -0.09 -3.81 0.51 -5.08 1.38 -10.23 2.34 -14.87 -0.08 -0.30 -0.16 -0.45 -0.26 -0.91 -0.25 -1.24 -0.57 -4.28 -0.72 -6.75 -0.15 -2.47 -0.39 -4.79 -0.54 -5.14 -0.33 -0.79 -2.01 -1.70 -3.14 -1.70 -0.46 0.00 -1.38 0.49 -2.04 1.10 -1.15 1.05 -1.19 1.18 -1.01 3.15 0.10 1.13 0.37 3.17 0.59 4.53 0.43 2.67 0.40 2.86 -0.39 2.55 -0.66 -0.25 -1.43 -1.75 -2.86 -5.57 -1.18 -3.14 -3.11 -6.20 -4.32 -6.85 -1.05 -0.56 -1.76 -2.27 -2.35 -5.65 -0.30 -1.71 -0.71 -3.42 -0.92 -3.81 -0.27 -0.51 -0.25 -1.24 0.07 -2.58 0.38 -1.58 0.36 -2.29 -0.12 -4.53 -0.90 -4.15 -1.10 -6.92 -0.59 -7.90 0.25 -0.47 0.97 -1.51 1.60 -2.30 1.28 -1.60 1.99 -3.35 1.99 -4.92 0.00 -0.57 0.34 -1.70 0.74 -2.50 0.41 -0.80 0.66 -1.67 0.56 -1.94 -0.10 -0.26 -1.22 -1.91 -2.48 -3.65 -1.26 -1.75 -2.92 -4.34 -3.68 -5.76 -1.23 -2.28 -1.34 -2.70 -0.97 -3.51 0.23 -0.51 0.99 -1.19 1.68 -1.52 0.70 -0.33 1.26 -0.79 1.26 -1.03 0.00 -0.23 -1.20 -1.34 -2.67 -2.47l-2.67 -2.04 -2.63 0.01c-1.45 0.01 -3.04 0.03 -3.54 0.06 -3.33 0.18 -11.90 -0.12 -12.90 -0.44 -0.67 -0.22 -2.04 -1.15 -3.06 -2.07 -2.62 -2.37 -3.70 -3.08 -6.26 -4.12 -1.24 -0.51 -2.88 -1.41 -3.65 -2.02 -1.06 -0.84 -1.75 -1.10 -2.95 -1.10 -0.91 -0.00 -2.38 -0.38 -3.52 -0.91 -2.62 -1.22 -4.53 -1.63 -9.02 -1.95 -0.80 -0.06 -1.46 -0.09 -2.04 -0.11zm-60.50 2.39c-0.11 -0.01 -0.21 0.00 -0.33 0.05 -0.34 0.13 -1.39 0.37 -2.33 0.52 -0.94 0.15 -1.81 0.38 -1.93 0.49 -0.12 0.12 -0.11 0.80 0.03 1.52 0.19 1.01 0.50 1.41 1.39 1.80 1.61 0.70 2.06 0.65 3.58 -0.38 1.55 -1.05 1.61 -1.35 0.61 -2.99 -0.40 -0.66 -0.70 -0.97 -1.02 -1.01zm7.06 11.47c-0.62 -0.01 -1.13 0.17 -1.83 0.59 -0.71 0.44 -1.83 0.76 -2.67 0.76 -0.80 0.00 -2.64 0.24 -4.09 0.53 -1.46 0.29 -3.13 0.57 -3.73 0.63 -1.22 0.12 -1.59 1.14 -0.89 2.45 0.38 0.71 0.65 0.75 3.71 0.63 4.65 -0.18 9.20 -1.46 10.70 -3.01 1.37 -1.42 1.21 -2.18 -0.53 -2.51 -0.24 -0.04 -0.46 -0.07 -0.66 -0.07zm132.36 5.67c-0.37 0.00 -1.14 0.35 -1.73 0.79 -1.61 1.19 -1.47 2.74 0.42 4.80 0.82 0.89 1.67 1.61 1.89 1.61 0.86 -0.00 2.74 -1.45 2.74 -2.11 0.00 -1.66 -2.23 -5.08 -3.32 -5.08zm-163.26 6.76c-1.04 -0.01 -2.27 0.58 -3.16 1.67 -0.47 0.57 -0.45 0.69 0.16 1.14 1.10 0.81 2.58 0.60 3.86 -0.54 0.97 -0.86 1.09 -1.13 0.71 -1.58 -0.38 -0.46 -0.94 -0.68 -1.57 -0.69zm13.80 18.11c-0.24 0.00 -0.52 0.03 -0.88 0.08 -0.85 0.12 -2.99 0.37 -4.77 0.55 -3.58 0.38 -4.44 0.63 -7.47 2.23 -1.14 0.60 -2.75 1.29 -3.58 1.52 -1.24 0.36 -1.55 0.63 -1.80 1.60 -0.18 0.69 -0.16 1.43 0.05 1.82 0.55 1.04 4.30 2.83 6.86 3.29 1.29 0.23 3.22 0.70 4.29 1.05v0.00 0.00c2.29 0.74 4.13 0.53 5.64 -0.65 0.55 -0.44 1.42 -0.77 1.92 -0.74 1.85 0.12 1.92 0.06 1.69 -1.37 -0.16 -1.01 -0.04 -1.63 0.49 -2.43 0.45 -0.68 0.71 -1.69 0.71 -2.76 0.00 -1.43 -0.19 -1.88 -1.25 -3.01 -0.87 -0.92 -1.20 -1.20 -1.91 -1.19zm128.20 1.74c-0.47 0.00 -1.19 0.40 -1.66 1.05 -0.82 1.16 -0.94 2.23 -0.36 3.32 0.21 0.39 0.55 0.66 0.75 0.59 0.36 -0.12 1.71 -3.64 1.73 -4.51 0.01 -0.32 -0.18 -0.46 -0.46 -0.46zm4.61 8.69c-0.44 0.02 -0.87 0.14 -1.07 0.31 -0.58 0.48 -1.05 2.34 -0.73 2.87 0.32 0.51 1.72 0.46 2.48 -0.10 0.37 -0.27 0.66 -0.99 0.70 -1.71 0.06 -1.11 -0.04 -1.25 -0.95 -1.36 -0.14 -0.02 -0.29 -0.02 -0.43 -0.01zm6.25 10.43c-0.42 0.03 -0.73 0.66 -0.50 1.37 0.14 0.43 0.43 0.71 0.66 0.64 0.58 -0.19 0.75 -1.33 0.27 -1.81 -0.15 -0.15 -0.30 -0.21 -0.44 -0.20zm-62.54 35.55c-0.92 0.00 -1.20 1.06 -0.49 1.85 0.64 0.71 2.29 0.92 2.29 0.30 0.00 -0.74 -1.18 -2.14 -1.80 -2.14zm22.15 22.89c-0.19 -0.00 -0.33 0.09 -0.50 0.26 -1.04 1.04 -0.24 2.28 2.37 3.62 2.40 1.23 3.46 1.48 4.55 1.06 1.07 -0.41 0.57 -1.17 -1.34 -2.04 -1.05 -0.48 -2.62 -1.39 -3.48 -2.01 -0.86 -0.62 -1.28 -0.88 -1.59 -0.88z"}}});
Index: public/vendors/vmap/maps/jquery.vmap.iran.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.iran.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.iran.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/**
+	Iran Vector Map
+	Created By Mahmoud Eskandari E-mail:info@webafrooz.com
+	http://Webafrooz.com
+**/
+jQuery.fn.vectorMap('addMap', 'iran_ir', {"width": 600, "height": 600, "paths": {"15": {"path": "M353.778,484.712c-0.204,0.204-0.767,1.047-1.086,0.647c-0.827-1.037-1.373-1.065,0.181-1.321c1.159-0.191,0.241-1.308,0.129-1.762,c1.186-0.392,0.011-1.69,1.216-1.813c0.314-0.032,0.236,0.389,0.362,0.596c0.17,0.278,1.727,0.29,1.5,0.648,c-0.309,0.486-1.089,0.681-1.449,1.269c-0.285,0.466-0.058,0.691,0.129,1.114c0.293,0.664,0.37,0.697,1.035,0.492,c1.294-0.398-0.207,1.125-0.207,1.451c0,0.426,0.75,0.525,0.75,1.166c0,0.801-1.546,0.131-1.733-0.544,c-0.095-0.344,0.073-0.81,0.181-1.088c0.068-0.176-0.222-0.894-0.414-0.751L353.778,484.712L353.778,484.712z M345.481,490.346,l1.34,0.013c0.671,0.399,1.383,0.555,1.319,1.554c-0.074,1.158-0.609,1.96-0.543,3.186c0.061,1.134-1.56,1.24-1.086,2.616,c0.447,1.301,0.758,2.382,0.414,3.782c-0.596,2.42,1.885,3.342,4.293,3.342l0,0c-0.346-1.397-0.552-2.951,0.491-4.196,c1.153-1.153,1.093-2.818,1.966-3.601c1.01-0.907,0.182-2.637,1.371-2.72c0.986-0.069-0.495-1.184-0.414-1.347,c0.24-0.482,0.528-0.418,0.181-0.984c-0.562-0.919,0.188-1.772,0.957-2.383c-0.399-0.526-0.618-0.158-1.164-0.311,c-0.457-0.128-0.411-0.699-0.828-0.699c-1.719,0-0.173-1.046-0.905-1.995c-0.475-0.615-4.146-2.35-4.371-2.124,c-0.819,0.819-1.219,2.63-1.888,3.678C346.177,488.842,345.809,489.582,345.481,490.346L345.481,490.346z", "name": "kish"},"16": {"path": "M88.025,126.032l3.75,9.17l0,0l-1.242,0.466c-1.013,0.757-0.514,0.974,0,1.943c0.528,0.995-0.879,0.732-0.879,1.632,c0,0.626-0.057,0.962-0.491,1.399c-0.707-0.142-2.869,0.147-3.569,0.44c-1.019,0.427-1.894-0.358-2.923-0.544,c-3.022-0.549-4.12-0.821-5.664-3.704c-0.14-0.261-4.453,1.089-5.405,1.14c-2.403,0.129-5.432,0.934-7.785,0.052,c-2.395,0-2.618,1.147-4.449-0.544c-1.483-1.37-3.149-0.943-4.863-0.337c-4.995,1.769,1.601,7.02-4.319,7.02,c-0.814,0-5.872-0.138-5.613,1.062c0.453,2.089,0.013,1.056-1.215,1.865c-0.527,0.347,0.242,0.937-0.052,1.399,c-0.196,0.308-0.76,0.949-0.828,1.217c-0.132,0.033-0.422,0.192-0.569,0.104c-1.182,0.705-0.506,1.224-1.112,2.357l-1.798,1.349l0,0,c-0.607-0.063-1.25-0.02-1.926,0.153c-3.41,0.875-2.708,0.088-2.043-2.513c0.355-1.39-0.312-1.358-1.138-2.487,c-0.83-1.134,0.065-2.718-0.595-3.601c0.582-0.778-0.295,0.567-0.698-1.502l-0.44-2.254c0.613-0.821-0.307-2.06-0.647-2.668,c-0.694-1.244-1.166-0.618-2.38-0.181c-3.151,1.133-2.089-2.262-3.905-3.341c-2.108-1.252,0.281-1.809-0.233-3.135,c-0.276-0.712,1.17-0.287,1.112-1.244c-0.053-0.881-0.172-2.377-0.517-3.16c-0.603-1.364-1.736-0.626-2.406-1.295,c-0.216-0.216-0.034-1.307-0.595-1.114c-0.786,0.27-0.988-0.207-1.707,0.026c-0.962,0.107-1.842,0.142-1.267-1.269,c0.184-0.453,0.599-0.971,0.724-1.347c0.166,0,0.465-0.176,0.621-0.207c0.344-1.361,1.191-1.689,0.13-3.316,c-0.568-0.87,1.157-2.6-0.31-2.953c-0.631-0.152-1.037-1.034-1.707-0.44c-0.432,0.382-0.403-0.434-0.569-0.622,c-0.312-0.353-0.621-0.252-0.621-0.829c0-0.726-0.939-0.56-0.802-1.269l0.621-1.191l0,0l0.052-1.244,c-0.228-0.536-0.488-1.089-0.388-1.684c0.094-0.561,0.719-0.657,1.034-1.088c1.038-1.414-0.911-1.704-1.707-2.28,c-0.711-0.513,0.19-1.551-0.828-1.813c-1.648-0.425-1.354-0.222-1.966-1.762c-2.102-0.297-1.198-1.036-1.811-2.59,c0-1.183,1.781-0.797,0.698-2.306c-0.596-0.83,0.773-1.285-0.44-2.409c-2.093-1.94,1.882-1.913,0.284-4.455,c-0.85-1.353-1.989-1.627-3.388-1.14c-1.449,0.505-1.908-1.46-2.664-2.461c-0.545-0.723-1.717-1.342-2.69-1.062,c-4.412,1.27-0.362-4.35-0.362-5.44c0.706-0.239,0.549-1.572,0.854-1.995c0-1.172,0.596-0.621,1.138-1.295,c0.501-0.622-0.633-1.01,0.543-1.01c0.401,0,1.037-2.409,0.983-2.824c-0.106-0.81-0.721-1.622,0.388-2.176,c0.585-0.292,2.246-1.031,2.302-1.761c0.085-1.131-1.451-2.459-2.431-1.943c-1.234,0.65-1.201-0.215-2.302,0.078,c-1.526,0.406-0.539-1.488-0.569-1.891c-0.078-1.037-1.135-1.662,0.052-2.849c-0.289-0.725-0.225-2.556,0.285-3.264,c-0.157-0.573,0.146-1.12-0.543-1.451c-0.704-0.337-1.434,0.246-0.957-1.218c0.565-1.734-1.473-1.105,0.337-3.057,c0.593-0.64-0.641-0.765,0.103-1.71c0.548-0.697,0.486-2.295-0.647-2.383c-1.784-0.139-1.077-2.062-1.992-2.875,c-0.683-0.608,0.13-1.425-0.336-1.762c-1.082-0.781,0.326-1.169,0.543-1.606c0.206-0.414-0.426-1.14-0.44-1.606,c-0.257-1.276,1.173-1.014,0.621-2.124c-0.139-0.279-1.063-2.11-1.19-2.202c-0.632-0.456-1.216-0.19-1.733-0.466,c-0.894-0.479-0.082-1.512-0.647-2.228c-0.317-0.402-0.166-0.768,0.052-1.166c0.232-0.424-0.607-2.388-1.034-2.668,c-0.624-0.409-0.122-1.53-0.155-1.502c0.621-1.347,1.686-0.641,2.38-0.026c0.743,0.658,2.1-0.974,3-0.751,c0.046,0.188,0.211,0.431,0.259,0.622c0.403,0.079,1.482,0.615,1.552,0.596c0.641-0.182,3.104-1.18,3.492-1.658,c0.745-0.918-1.121-0.886,0.259-2.383c0.746-0.81,0.28-1.267,0.052-2.124c-0.281-1.056,0.889-1.55,1.267-2.564,c0.498-1.334-0.293-2.462,0.853-3.419l3.104-2.772l1.242,2.305l2.354,0.518l0.461,1.31l1.453,0.71l0,0,c0.118,0.363,0.15,0.778,0.384,1.079c0.348,0.446,0.355,0.639,1.09,0.579c0.287-0.023,1.183-0.143,1.215,0.363,c0.002,0.035-0.082,1.047-0.052,1.321c0.004,0.034,0.007,0.112,0.052,0.129c0.68,0.268,0.541,1.293,0.983,1.787,c0.541,0.605,0.776,0.793,0.776,1.658c0,1.208,0.261,2.069,1.474,2.383c1.484,0.384,1.621,0.647,2.172,1.969,c0.242,0.579,0.836,1.044,1.086,1.606c0.448,1.007-0.174,2.844,1.009,3.575c1.055,0.653,4.628,0.653,5.121,1.554,c0.522,0.954,1.678,2.359,1.759,3.342c0.078,0.956,1.604,0.098,1.604,2.072c0,0.861,0.245,1.361,0.631,1.644l0,0l-1.174,3.796,c-0.076,0.058-0.23,0.207-0.336,0.233c-0.236,0.962-1.192,0.73-1.086,2.487c0.065,1.089-0.597,1.442-0.672,2.332,c-0.092,1.096,0.347,3.122,0.827,4.067c0.244,0.48,0.642,1.447,0.673,1.995c0.049,0.864-0.527,0.759-0.646,1.243,c-1.135,0.163-4.156,3.429-5.354,4.145c-1.239,1.553-2.131,2.754-2.276,4.818c-0.188,2.683,3.082,3.757,3.75,6.424,c0.736,2.938,0.724,5.99,0.724,9.041c0.408,2.176,0.336,4.302,1.086,6.45c0.986,2.824,3.563,3.061,3.337,6.321,c-0.254,3.655-2.212,5.331,1.215,8.083c1.672-0.324,5.477,3.043,6.543,4.196c1.91,2.065,1.981,2.36,4.837,1.917,c1.492-0.231,3.489-0.926,4.526,0.622c2.131,3.181,5.285,5.379,7.889,8.367c3.668-0.71,2.64-4.662,6.208-5.388,c1.793-0.365,1.039,1.257,2.405-0.751c1.885-2.772,3.462,1.012,4.759,1.347c2.552,0.66,0.651,2.484,1.759,3.834,c2.171,2.647-1.244,5.854,2.949,6.761C83.021,127.549,84.826,126.482,88.025,126.032L88.025,126.032z", "name": "west azarbaijan"},"17": {"path": "M122.165,111.707l2.286-2.053c2.929-0.999,3.038,0.377,5.215,1.769c1.317,0.842,2.151-0.129,2.923-1.088,c0.477-0.592,3.404-0.882,4.112-0.882l0,0c-0.139-0.34-0.198-0.669-0.155-0.983c0.299-1.103,1.149-3.97,0.181-4.74,c-1.701-1.352-3.029-2.186-4.009-4.274l-5.483-11.683c-0.095-0.774-0.879-1.213-0.879-2.046c0-0.829,0.611-1.261,0.802-1.969,c0.281-1.044-0.181-3.102,0.259-3.756c1.581-2.353,0.112-5.67,2.664-7.616c2.331-1.777-0.965-1.104-1.423-2.228,c-0.527-1.296,0.084-0.907-1.319-1.45l-0.084-5.983l0,0c-0.113-0.095-0.24-0.182-0.382-0.261c-0.222-0.123-0.892-0.409-1.009-0.622,c-0.209-0.381,0.188-0.904-0.052-1.295c-0.399-0.652-1.228,0.111-1.5-0.933c-0.053-0.203-0.258-1.153-0.233-1.166,c-0.362-0.488-1.51,0.147-2.069,0.259c-1.269,0.48-2.168-0.038-2.38-1.321c-0.213-1.293-1.597-0.63-1.319-1.995,c0.576-2.832-2.515-2.004-3.957-3.005c-0.443-0.308-0.427-1.145-1.06-1.425c-1.189-0.526-1.748-2.797-1.474-3.912,c0.444-0.11,0.691,0.145,1.267,0c0.012-0.05,0.028-0.065,0.078-0.078c0.447-2.266,4.801-0.884,6.595-2.409,c1.194-1.014,0.622-1.429,0.957-2.694c-0.105-0.415-0.883-2.154-1.112-2.435c-0.657-0.802-1.633,0.181-2.224-1.347,c-0.674-1.741-3.718-2.309-2.095-4.792c0.437-0.669,1.864-1.925,2.612-2.124c0.974-0.259,0.981,0.262,1.992-0.492,c0.757-0.566,1.46-0.278,1.862-1.269l-9.285-11.165l-2.194-0.998c-0.027,0.064-0.054,0.118-0.082,0.169,c-0.315,0.567-4.093,2.458-4.397,2.357c-1.127-0.375-1.411-0.177-2.121,0.958c-0.554,0.885-0.878,1.014-1.966,1.114,c-0.676,0.062-0.982,1.874-1.811,1.528c-0.233-0.097-0.795,0.09-1.112,0.285c-0.516,0.317-0.533,1.161-1.216,1.502,c-1.153,0.576-2.805,0.306-3.673,0.933c-1.574,1.137-3.351,5.511-5.483,5.673c-0.873,0.066-3.698,1.991-4.164,2.746,c-0.745,1.204-0.494,1.367-1.491,2.249l0,0l2.965,3.451c0.025,0.784,1.235,2.558,1.603,3.368c1.203,2.638-0.732,5.713,0.104,8.238,h0.103c0.149-0.442,2.494-1.829,3-2.668c0.899-1.49,2.311-4.025,3.751-4.87c2.393-1.404,2.378-1.242,2.819,1.217,c0.517,2.881,2.429,4.76,0.905,7.539c-0.91,1.659-4.453,2.773-4.061,4.766c1.718,0.422,1.656-0.441,3.311-0.441,c4.846-1.661-3.133,11.299-3.699,12.305c-0.891,1.586-1.106,1.049,0.491,2.124c1.632,1.098,4.413,2.596,6.259,3.16,c2.359,0.721,4.063-1.082,5.82-0.648c0.173,0.703,0.903,2.148,1.267,2.875l2.095,8.082l2.069,2.409l3.854,0.906,c0,0.73,0.447,1.43,0.052,2.15c-1.03,1.879-1.607,4.278-1.707,6.45c-0.158,3.425,0.743,4.18,3.776,5.699,c1.485-0.24,1.587,4.466,1.681,5.388c0.113,1.113,0.436,1.234,1.241,1.813C120.872,110.372,122.039,111.195,122.165,111.707,L122.165,111.707z", "name": "Ardabil"},"18": {"path": "M37.781,44.496c0.986,0.724,2.892,0.041,3.973,0.403c1.154,0.387,0.601,0.829,2.121,0.829c1.189,0,1.338,0.984,2.25,0.958,c1.591-0.045,1.839-0.001,3.026,1.192c1.474,1.48,1.306,0.056,2.483-0.078c0.887-0.101,0.907,0.981,2.095,0.492,c1.817-0.747,1.99,1.21,3.575,1.363l0,0c0.064,0.006,0.131,0.01,0.201,0.01c2.044,0,3.687-2.735,5.819-2.875,c1.315-0.086,1.208,1.212,2.845,0.751c1.03-0.29,1.67,0.217,2.51,0.315l0,0c0.354,0.041,0.744,0.01,1.215-0.186,c0.865-0.359,1.123-0.534,1.578-1.321c0.13-0.226,0.616-1.112,0.854-1.217c0.547-0.241,0.16-1.326,0.595-1.58,c1.149-0.673,1.968-0.287,2.302-1.813c0.236-1.077,0.846-0.823,1.552-1.528c0.887-0.887,0.963-2.894,2.897-2.357,c0.466,0.129,0.733,0.857,1.397,0.466c0.51-0.3,1.007-0.981,1.474-1.373c0.078-0.066,0.151-0.128,0.217-0.187l0,0l2.965,3.451,c0.025,0.784,1.235,2.558,1.603,3.368c1.203,2.638-0.732,5.713,0.104,8.238h0.103c0.149-0.442,2.494-1.829,3-2.668,c0.899-1.49,2.311-4.025,3.751-4.87c2.393-1.404,2.378-1.242,2.819,1.217c0.517,2.881,2.429,4.76,0.905,7.539,c-0.91,1.659-4.453,2.773-4.061,4.766c1.718,0.422,1.656-0.441,3.311-0.441c4.846-1.661-3.133,11.299-3.699,12.305,c-0.891,1.586-1.106,1.049,0.491,2.124c1.632,1.098,4.413,2.596,6.259,3.16c2.359,0.721,4.063-1.082,5.82-0.648,c0.173,0.703,0.903,2.148,1.267,2.875l2.095,8.082l2.069,2.409l3.854,0.906c0,0.73,0.447,1.43,0.052,2.15,c-1.03,1.879-1.607,4.278-1.707,6.45c-0.158,3.425,0.743,4.18,3.776,5.699c1.485-0.24,1.587,4.466,1.681,5.388,c0.113,1.113,0.436,1.234,1.241,1.813c0.414,0.297,1.581,1.12,1.707,1.632l0,0l-1.319,0.13c-0.578-0.289-1.172-0.427-1.759-0.751,c-0.422-0.233-0.741-0.558-1.215-0.725c-1.084-0.383-2.66-0.217-3.802,0.026c-0.891,0.189-1.832,0.115-2.741,0.285,c-1.364,0.114-2.735-1.294-3.751-0.751c-1.745,0.933-2.549,0.7-4.5,0.7c-2.711,0-6.016,3.304-8.277,4.715,c-1.54,0.961-1.702,3.162-3.233,3.808c-2.723,1.149-2.986,2.524-4.009,5.026l0.465,1.865l0,0c-3.199,0.45-5.004,1.516-8.302,0.803,c-4.193-0.907-0.778-4.114-2.949-6.761c-1.107-1.35,0.793-3.174-1.759-3.834c-1.297-0.335-2.874-4.119-4.759-1.347,c-1.366,2.008-0.613,0.387-2.405,0.751c-3.567,0.726-2.54,4.678-6.208,5.388c-2.603-2.988-5.758-5.186-7.889-8.367,c-1.037-1.548-3.035-0.853-4.526-0.622c-2.855,0.443-2.927,0.148-4.837-1.917c-1.066-1.153-4.872-4.52-6.543-4.196,c-3.428-2.751-1.469-4.427-1.215-8.083c0.227-3.26-2.351-3.497-3.337-6.321c-0.75-2.148-0.679-4.274-1.086-6.45,c0-3.051,0.012-6.102-0.724-9.041c-0.668-2.667-3.939-3.741-3.75-6.424c0.145-2.064,1.037-3.266,2.276-4.818,c1.198-0.716,4.219-3.982,5.354-4.145c0.12-0.484,0.695-0.38,0.646-1.243c-0.031-0.548-0.429-1.515-0.673-1.995,c-0.48-0.945-0.92-2.971-0.827-4.067c0.075-0.889,0.738-1.242,0.672-2.332c-0.106-1.756,0.85-1.525,1.086-2.487,c0.106-0.026,0.26-0.175,0.336-0.233L37.781,44.496L37.781,44.496z", "name": "East azarbaijan"},"19": {"path": "M140.063,222.347c0.521-1.967,4.346-1.949,3.647-4.741c-0.292-1.167-0.69-1.534-0.414-2.849c0.289-1.375-0.134-2.142-0.802-3.316,c-0.837-1.416-1.899-1.953-2.354-3.782c-0.388-1.559,0.446-3.232,0.155-4.818c-0.162-0.882-4.343-2.083-2.923-3.031,c0.431-0.288,2.37,0.698,3.518,0.311c0.939-0.317,2.051,0.602,2.328,1.451c1.473,0-1.464-4.296-1.293-5.181,c0.38-1.967,4.289-0.463,2.535-3.989c-0.259-0.806-1.321-1.903-0.595-2.824c0.082-0.104,4.752,0.657,5.768,0.544,c1.956-0.218,4.43-0.763,3.129,2.072c-0.606,1.32-1.43,2.726,0.337,3.29c1.183,0.378,5.065,4.071,3.957-0.674,c-0.523-2.243-1.266-5.141-3.311-6.451c-1.397-0.894-2.504-1.122-4.035-1.502c-0.623-0.155-2.567-1.427-2.043-2.254,c0.657-1.037,4.298,0.218,4.397-1.969c0.091-2.008-1.167-2.535-2.121-4.067c-0.453-0.783-0.583-3.704,0.207-4.274,c1.273-0.92,1.187,1.234,1.164,1.969c-0.048,1.556,1.723,2.332,2.483,0.803c0.921-1.855-0.828-2.485-0.828-4.041l0.104-1.451l0,0,c-0.811-1.426-3.456,0.009-4.681-0.518c-2.196-0.944-4.186,0.126-6.362-0.155c-1.46-0.188-2.075-1.325-0.828-2.487,c0.45-0.419,1.067-0.197,1.449-0.622c0.543-0.605-0.522-1.51-1.06-1.684c-1.412-1.238-3.036-2.327-4.94-2.435,c-0.679-0.039-1.225,0.363-1.81,0.363c-0.025,0.038-0.026,0.014-0.052,0.052c-0.135,0-0.334,0.214-0.414,0.285l0,0v2.772,l-2.871,1.217c-2.487-0.167-4.042-1.812-6.052-2.979c-2.242-1.301-3.165,1.697-5.509,1.114c-1.395-0.347-1.654-2.166-2.69-3.031l0,0,l-1.164-0.518c-0.916-0.916-2.125-1.987-3.311-2.513c-2.166-0.96-1.862,0.18-0.621,1.425c1.626,1.63,4.677,3.941,0.362,4.43,c-0.825,0.093-1.382,0.753-2.121,1.062c-2.375,0.994-0.793-4.999-2.819-2.643c-0.679,0.79-2.36,0.963-1.681,2.383,c1.071,2.243,2.801,3.924,3.388,6.424c0.233,0.996,0.13,3.497,1.449,3.497c1.379,1.973,3.841,2.384,4.888,4.689,c0.87,1.915,0.577,3.959-0.492,5.751c-1.236,2.073-1.641,1.735-2.457-0.052c-1.48-3.243-1.63,2.221-3.336,1.166,c-0.755-0.467-1.577-0.344-1.707,0.699l0,0c0.088,0.919,0.046,1.665-0.569,2.28c-0.553,0.553-1.326,0.857-1.862,1.451,c-0.692,0.766,1.255,2.616-0.465,3.057c-1.227,0.314-6.279,0.341-4.087,3.109c0.199,0.251,2.2,1.589,2.483,1.632,c0.885,0.135,2.498-0.58,2.845,0.829c0.383,0.723,0.059,2.823,0.647,3.083c1.017,0.449,1.365-1.052,1.681-1.658,c0.622-1.196,1.329-0.516,1.759-1.14c0.604-0.876,1.394-0.673,1.888,0.13c0.459,0.746-0.189,1.676-0.258,2.435,c-0.09,0.974,0.753,2.954-0.104,3.575c-0.485,0.351-4.484-0.717-5.276-0.958c-1.728-0.526-1.63,1.851-2.276,2.72l0,0l2.742,2.409,c0.894,0.689,2.586,1.691,3.207,2.487c1.524,1.952,4.08,0.866,6,3.652c1.278,1.854,2.945,1.843,5.018,1.762,c1.585-0.062,2.803,0.798,4.319,1.01c1.474,0.207,1.978-0.984,2.974-1.761c0.482-0.377,2.72,0.127,4.061-0.544,c1.221-0.612,1.466,1.153,2.483,1.969L140.063,222.347L140.063,222.347z", "name": "Hamadan"},"20": {"path": "M122.165,111.707l2.286-2.053c2.929-0.999,3.038,0.377,5.215,1.769c1.317,0.842,2.151-0.129,2.923-1.088,c0.477-0.592,3.404-0.882,4.112-0.882l0,0c1.049,2.559,6.683,5.723,8.173,7.876c1.143,1.652,1.159,3.67,1.604,5.544,c0.392,1.65,2.933,0.922,3.078,2.098l0,0l-9.492,5.44c-1.217,4.215,3.094,6.887,6.492,7.875c5.659,1.645,5.421,3.828,6.078,9.144,c0.165,1.046,1.605,4.199,0.388,4.844c-1.93,1.023-3.881,2.939-6.207,2.539c-1.483-0.255-2.36,0.391-3.518,1.243,c-0.301,0.221-2.163,1.275-2.354,0.518c-0.859-0.217-5.328-6.648-5.328-0.933c0,3.073-3.231,3.045-2.405,7.201l1.164,1.528l0,0,v2.772l-2.871,1.217c-2.487-0.167-4.042-1.812-6.052-2.979c-2.242-1.301-3.165,1.697-5.509,1.114,c-1.395-0.347-1.654-2.166-2.69-3.031l0,0c-0.545-1.094-0.087-2.106-1.5-2.798l-3.595-1.761c-1.816-0.89-5.851-2.272-3.518-4.767,c1.677-1.793,1.023-3.276,1.604-5.284c1.014-1.269,0.203-2.197-0.543-3.316c-0.959-1.439-0.755-2.357-1.086-3.886,c-0.814-3.756-4.053-2.322-6.828-3.316l-5.716-2.047c-1.38-0.494-1.865,0.483-3.362,0.441l-0.931-1.528l0,0l-3.75-9.17l0,0,l-0.465-1.865c1.023-2.502,1.285-3.877,4.009-5.026c1.531-0.646,1.693-2.847,3.233-3.808c2.26-1.411,5.566-4.715,8.277-4.715,c1.952,0,2.755,0.233,4.5-0.7c1.015-0.543,2.387,0.865,3.751,0.751c0.91-0.17,1.85-0.096,2.741-0.285,c1.143-0.242,2.718-0.409,3.802-0.026c0.475,0.168,0.794,0.493,1.215,0.725c0.587,0.325,1.181,0.462,1.759,0.751L122.165,111.707,L122.165,111.707z", "name": "Zanjan"},"21": {"path": "M91.775,135.203l0.931,1.528c1.497,0.042,1.982-0.934,3.362-0.441l5.716,2.047c2.775,0.993,6.014-0.441,6.828,3.316,c0.331,1.529,0.127,2.446,1.086,3.886c0.746,1.119,1.557,2.047,0.543,3.316c-0.581,2.009,0.074,3.491-1.604,5.284,c-2.333,2.495,1.701,3.877,3.518,4.767l3.595,1.761c1.413,0.692,0.955,1.704,1.5,2.798l0,0l-1.164-0.518,c-0.916-0.916-2.125-1.987-3.311-2.513c-2.166-0.96-1.862,0.18-0.621,1.425c1.626,1.63,4.677,3.941,0.362,4.43,c-0.825,0.093-1.382,0.753-2.121,1.062c-2.375,0.994-0.793-4.999-2.819-2.643c-0.679,0.79-2.36,0.963-1.681,2.383,c1.071,2.243,2.801,3.924,3.388,6.424c0.233,0.996,0.13,3.497,1.449,3.497c1.379,1.973,3.841,2.384,4.888,4.689,c0.87,1.915,0.577,3.959-0.492,5.751c-1.236,2.073-1.641,1.735-2.457-0.052c-1.48-3.243-1.63,2.221-3.336,1.166,c-0.755-0.467-1.577-0.344-1.707,0.699l0,0c-2.219,0-2.778,0.234-4.319-1.787c-1.332-1.748-1.905-3.886-4.371-3.886,c-1.359,0-2.132-2.15-2.974-1.917c-1.794,0.497,1.194,3.274-0.491,3.834c-0.959,0.319-1.928,0.249-2.949,0.052,c-3.336,0-0.63,5.541-3.802,3.86c-3.176-1.684-0.966,1.674-3.957,2.409c-0.175,0.712-0.207,3.038-1.293,2.824,c-2.672-0.528-1.357,1.21-1.448,2.202c-0.139,1.503-6.171-0.474-6.777-0.155c-2.808,1.479-1.613-2.334-1.707-3.264,c-0.13-1.273-1.423-0.466-2.069-0.466c-1.278-5.055-6.586-9.106-10.423-12.538l-3.698-1.714l0,0,c-0.09-0.852-0.645-1.503-1.268-2.198c-1.419-1.427-1.941-2.27-2.871-4.041c-0.793-1.512,0.365-2.007-0.336-3.29,c-0.834-1.524,0.122-0.668,0.905-0.933c0-1.786-1.132-1.532-0.103-3.135c1.145-1.784,1.318-1.036,3.517-1.036,c0.838,0,1.617-0.815,1.733-0.803c1.906,0.194,1.327,0.264,2.845-1.114c2.016-1.829,0.733-1.212,0.233-2.746,c-1.654,0-3.918,2.594-5.044-0.337c-0.479-1.248-5.23,0.406-5.276,0.544c-0.456,0-0.736-0.247-1.216-0.337,c-1.055,0-0.802,1.036-1.577,1.036c-0.509,0-0.997-0.537-1.552-0.259c-1.562,0.781-1.542-0.459-2.354-1.787,c-1.361-2.23-3.354-4.491-5.988-4.764l0,0l1.798-1.349c0.606-1.134-0.07-1.652,1.112-2.357c0.147,0.088,0.437-0.07,0.569-0.104,c0.068-0.268,0.632-0.909,0.828-1.217c0.294-0.462-0.475-1.052,0.052-1.399c1.229-0.809,1.668,0.224,1.215-1.865,c-0.26-1.2,4.798-1.062,5.613-1.062c5.92,0-0.676-5.251,4.319-7.02c1.714-0.607,3.38-1.034,4.863,0.337,c1.83,1.691,2.054,0.544,4.449,0.544c2.353,0.882,5.382,0.077,7.785-0.052c0.952-0.051,5.265-1.401,5.405-1.14,c1.544,2.883,2.643,3.156,5.664,3.704c1.028,0.187,1.904,0.971,2.923,0.544c0.7-0.293,2.862-0.582,3.569-0.44,c0.435-0.437,0.491-0.773,0.491-1.399c0-0.899,1.407-0.636,0.879-1.632c-0.514-0.969-1.013-1.186,0-1.943L91.775,135.203,L91.775,135.203z", "name": "kurdistan"},"22": {"path": "M291.472,136.187l-3.983,1.425c-0.003,0.002-0.293,0.161-0.31,0.233c-1.739,0.439-3.645,3.402-4.112,5.025,c-0.631,2.191,0.275,5.176-2.121,6.269c-1.846,1.406-2.17,2.113-3.362,4.171c-1.991,3.435-3.776,4.279-7.734,3.73,c-1.681-0.233-2.387-0.543-3.595,0.958c-1.045,1.298-2.422,0.725-3.802,0.725l-1.81,0.311l0,0c-1.624-0.41-3.292-2.612-4.733-1.891,c-4.141,2.07-4.712-0.92-8.121-1.632c-1.265-0.264-4.237-0.314-4.733-1.813c-2.851,0-4.758,3.599-6.802,5.155,c-2.517,2.517-3.978,3.94-7.811,1.839c-3.214-1.762-3.148-5.916-6.544-8.134c-2.677-1.749-4.387-1.829-7.604-1.736l-3.931,0.078l0,0,l-0.595-1.373c0-1.44,0.248-2.423-1.629-2.565c-1.424-0.108-2.44-1.111-3.906-1.321c-0.967-0.138-2.114,0.228-2.845-0.596,c-0.767-0.865-1.763-2.313-3-2.383c-0.956-0.054-1.509,0.069-2.354-0.414l-2.897-1.036l0,0c0.451-0.594,0.012-1.819-0.569-2.176,c-0.783-0.481-1.741-0.684-2.509-1.192l-5.173-3.419l-6.895-5.602l0,0c1.728,0.109,3.545-1.323,3.789-3.07,c0.303-2.171-0.663-4.424,1.966-5.518l3.088-1.287l0,0c0.166,0.122,0.319,0.246,0.457,0.374c5.232,4.834,14.559,8.61,21.674,9.507,c0.024,0.002,0.473,0.022,0.491,0.078c1.387-0.697,5.906,2.33,7.397,2.849c2.857,0.995,8.985,1.342,11.923,0.518l13.579-3.808,c0.062,0.006,0.385,0.087,0.466,0.026c1.149,0.46,6.984-1.636,8.535-2.047l12.725-3.368c3.11-0.823,8.528-0.464,11.406-1.554,c1.508,0,5.463-0.45,6.854-0.984c0.622-0.239,1.736-0.655,2.354-0.725c0.93-0.106,0.681,0.296,0.31,0.829,c-0.583,0.839-7.37,1.235-8.819,1.606c-0.702,0.18-6.893-0.06-4.035,0.907c-0.251,0.335-2.489-0.049-3.311,0.466,c-0.24,0.15,0.474,1.3,0.724,1.425c0.948,0.472,3.104-0.544,4.293-0.544c1.757,0,4.643,0.214,6.337,0.648,c1.406,0.36,2.858,0.121,3.982-0.583l0,0l-0.179,1.697l-2.172,1.503l-0.724,2.228l2.173,1.295l4.371,2.331L291.472,136.187,L291.472,136.187z", "name": "Mazandaran"},"23": {"path": "M177.991,128.824l6.895,5.602l5.173,3.419c0.768,0.508,1.726,0.71,2.509,1.192c0.581,0.357,1.02,1.581,0.569,2.176l0,0,c-0.956,0.185-2.726-0.271-3.698-0.544c-0.821-0.23-2.086,0.036-2.974-0.078c-1.547-0.199-2.718-0.596-4.345-0.052,c-2.229,0.745,1.132,3.188,1.785,3.653c-0.149,0.518,2.071,0.96,2.431,1.14c4.234,2.117-1.654,4.289-0.31,6.062,c-0.068,0.113-0.148,0.818-0.181,0.984c-0.745,1.653-0.602,2.011-2.483,2.953c-1.981,0.993-3.81,1.672-5.871,2.357,c-2.433,0.808-1.435,3.302-0.802,4.793l0.672,1.684l0,0c-0.923,0-1.461-0.506-2.354-0.337c-1.024,0.195-2.139,0.651-3,1.244,c-0.551,0.379-1.77,0.832-2.121,1.295c-2.532,0-3.869,1.174-6.13,1.865c-1.397,0.427-4.246,0.263-4.94,1.658,c-0.415,0.834,0.035,1.917-1.164,1.917c-1.093,0-3.694-0.871-4.578-0.233l0,0c-0.811-1.426-3.456,0.009-4.681-0.518,c-2.196-0.944-4.186,0.126-6.362-0.155c-1.46-0.188-2.075-1.325-0.828-2.487c0.45-0.419,1.067-0.197,1.449-0.622,c0.543-0.605-0.522-1.51-1.06-1.684c-1.412-1.238-3.036-2.327-4.94-2.435c-0.679-0.039-1.225,0.363-1.81,0.363,c-0.025,0.038-0.026,0.014-0.052,0.052c-0.135,0-0.334,0.214-0.414,0.285l0,0l-1.164-1.528c-0.826-4.156,2.405-4.128,2.405-7.201,c0-5.715,4.469,0.716,5.328,0.933c0.191,0.757,2.053-0.297,2.354-0.518c1.158-0.852,2.034-1.498,3.518-1.243,c2.327,0.4,4.277-1.516,6.207-2.539c1.217-0.645-0.223-3.798-0.388-4.844c-0.657-5.316-0.419-7.499-6.078-9.144,c-3.398-0.988-7.709-3.66-6.492-7.875l9.492-5.44l0,0l0.543,2.332c1.794,2.647,6.891,4.456,10.087,4.456,c2.774,0,4.297,0.126,6.802-0.984c2.186-0.969,4.466-2.798,6.983-2.798L177.991,128.824L177.991,128.824z", "name": "Qazvin"},"24": {"path": "M136.701,109.452c1.049,2.559,6.683,5.723,8.173,7.876c1.143,1.652,1.159,3.67,1.604,5.544c0.392,1.65,2.933,0.922,3.078,2.098l0,0,l0.543,2.332c1.794,2.647,6.891,4.456,10.087,4.456c2.774,0,4.297,0.126,6.802-0.984c2.186-0.969,4.466-2.798,6.983-2.798,l4.02,0.849l0,0c1.728,0.109,3.545-1.323,3.789-3.07c0.303-2.171-0.663-4.424,1.966-5.518l3.088-1.287l0,0,c-1.733-1.277-4.803-2.304-5.595-4.134c-3-2.984-3.629-2.985-4.94-6.942c-1.034-3.12-1.229-4.93-5.069-5.285,c-2.334-0.216-2.993-1.936-4.759-2.616c-0.017-0.007-1.425,1.136-2.328,1.062c-0.42-0.035-3.172-0.126-3.259-0.388,c-0.13,0-0.107-0.044-0.362-0.052c-1.06-0.635-4.91-0.539-6.311-0.751c-1.874-0.284-4.323-1.151-6-2.072,c-2.409-1.323-7.115-3.843-7.889-6.839c-0.556-2.151-2.472-5.598-2.044-7.823c0-2.644-0.925-4.967-0.724-7.616,c0.216-2.857-1.164-4.907-1.164-7.668c0-0.665-0.06-2.072-0.064-3.338l0,0c-0.891,0-3.049-0.18-3.583,0.54,c-0.821,1.108-1.312,1.098-2.612,1.036c-2.01-0.095-1.54-2.222-2.877-3.34l0,0l0.084,5.983c1.403,0.543,0.791,0.155,1.319,1.45,c0.458,1.124,3.754,0.451,1.423,2.228c-2.552,1.946-1.083,5.262-2.664,7.616c-0.439,0.654,0.022,2.712-0.259,3.756,c-0.19,0.708-0.802,1.14-0.802,1.969c0,0.834,0.784,1.272,0.879,2.046l5.483,11.683c0.98,2.088,2.309,2.922,4.009,4.274,c0.968,0.77,0.118,3.638-0.181,4.74C136.503,108.783,136.562,109.112,136.701,109.452L136.701,109.452z", "name": "Gilan"},"25": {"path": "M95.422,221.311c0.829,0.926,1.398,2.896,1.345,4.145c-0.045,1.062-0.542,1.981-1.5,2.461c-1.444,0.723-1.62,2.461-3.13,3.057,c-1.621,0.64-3.14-0.251-4.837,0.311c-1.616,0.925-4.422,1.215-5.509,3.109c-0.786,1.37-2.393,3.11-3.336,4.119,c-0.489,0.523,2.339,3.963,2.845,4.533c0.882,0.995,1.101,2.094,2.483,2.539c2.308,0.743,2.528,2.502,5.173,2.746,c3.016,0.279,3.665,1.601,5.949,3.031l8.949,6.684c-0.077,0.026,0.525,0.774,0.595,1.088c0.228,1.024,0.185,2.066,0.854,2.927,c0.933,1.2,0.908,2.285,1.629,3.471c0.326,0.537,0.854,0.809,0.854,1.502c0,0.758-0.252,1.698,0.155,2.383l1.707,1.71l0,0,c0,0.416-1.026,2.338-1.216,2.875c-0.387,1.096-0.582,2.419-1.319,3.368c-1.542,1.984-3.646,3.394-2.586,6.113,c0.563,1.444,0.477,2.493-0.828,3.497l-3.798,2.612l0,0c-0.326-0.33-0.606-0.539-0.806-0.565c-1.344-0.177-0.895-0.749-1.397-1.788,c0.211-0.211,0.508-0.395,0.75-0.544c0.223-0.137,0.354-0.541,0.362-0.544c0-0.77-1.111-1.582-1.733-1.736,c-0.109-0.554,0.604-1.228,0.155-1.477c-0.48-0.265-1.378-0.018-1.681-0.57c-0.899-1.636,0.406-1.623,0.077-2.435,c-0.631-1.558-4.353-4.52-5.535-3.186c-2.529,2.854-13.634-6.027-14.458-8.756c-2.075-1.04-4.061-3.123-5.975-4.663,c-2.908-2.34-6.196-3.238-9.88-3.238c-2.33,0-3.543,0.482-3.543-2.331c0.219-0.074,0.22-0.169,0.543-0.13,c0.073,0.009,0.522,0.065,0.543,0c2.97,0-5.567-3.523-1.448-3.523c1.715,0,4.393-1.062,2.638-2.824,c-0.381-0.383,0.513-1.148-0.233-1.865c-0.863-0.686-1.828-1.374-2.405-2.28c-0.407-0.639-0.323-2.148-1.19-2.435,c0-1.129-0.779-4.001-2.276-3.135c-1.276,0.739-3.609-0.016-1.423-1.114c1.892-0.95,0.201-1.53,0.078-2.409,c-0.216-1.537-2.4-1.177-3.518-0.596c-1.727,0.898-0.546,0.31-1.242-0.777c-0.038-0.059-0.1-0.124-0.18-0.194l0,0l0.723-4.676,c0.323-1.005,0.53-2.365,1.086-3.238c0.173-0.27,1.005-2.367,0.621-2.461c-0.048-0.195-2.065-2.628-0.595-2.305,c2.335,0.512,4.671,0.085,6.259-1.503c0.643-0.643,3.364,1.988,4.423,2.331c1.819,0.59,2.713-0.465,4.475-0.285,c2.074,0.212,3.957,2.878,5.509,4.093c2.135,1.671,5.215,1.961,7.837,2.202c0.958,0.028,2.436,0.555,3.311,0.026,c1.403-0.849,4.231-2.422,5.949-2.072c1.451,0.295,1.626,1.678,3.31,0.648c0.824-0.504,1.266-2.369,1.423-3.29,c0.14-0.818-2.771-3.558-0.569-4.015c0.686-0.142,3.987-0.84,4.475-0.544L95.422,221.311L95.422,221.311z", "name": "Illam"},"26": {"path": "M95.422,221.311c0.018-0.092,0.002-0.26,0.078-0.285c0-0.333,0.754-0.668,0.569-1.321c-0.332-1.172-1.443-2.804,0.388-3.264,c2.11-0.531,4.386,0.828,4.837-1.943c0.334-2.056-1.828-3.983,0.724-5.052l2.018,0.363l0,0l2.742,2.409,c0.894,0.689,2.586,1.691,3.207,2.487c1.524,1.952,4.08,0.866,6,3.652c1.278,1.854,2.945,1.843,5.018,1.762,c1.585-0.062,2.803,0.798,4.319,1.01c1.474,0.207,1.978-0.984,2.974-1.761c0.482-0.377,2.72,0.127,4.061-0.544,c1.221-0.612,1.466,1.153,2.483,1.969l5.225,1.554l0,0l-0.207,1.969c0.962,2.372-0.388,2.673-0.388,4.741,c0,0.72-0.611,1.458-0.492,2.15c0.164,0.954,0.781,0.272,1.345,0.648c0.349,0.233,0.605,1.177,1.19,1.01,c1.754-0.5,1.792,0.372,3.181,0.596c1.818,0.292,4.811-1.684,4.811-3.627c0-1.535,4.683-4.143,5.664-3.419,c1.392,1.026,2.845,1.942,2.845,3.86c0,2.004-0.902,3.606,1.448,4.611c1.064,0.293,1.899,0.573,2.38,1.58,c0.28,0.586,0.536,1.07,1.293,0.699c0.801-0.393,0.424-1.575,0.802-2.253c1.167-2.094,1.718,1.548,2.354,1.243,c0.406-0.195,1.392-1.489,1.837-0.596c0.372,0.747-0.647,2.254-0.647,3.135c0,1.603,0.961,0.311,1.759,0.311l0.595,1.14l0,0,c-0.12,0.478-0.537,0.916-0.854,1.295c-0.268,0.322-0.955,0.522-0.569,1.062c0.482,0.674,1.838,0.306,1.759,1.347,c-0.061,0.812-0.621,1.495-0.879,2.254c-0.529,0.526-1.804,2.985-1.992,3.652c-0.325,1.157,0.646,3.212-1.293,3.212,c-1.045,0-2.163,0.976-2.974,0.751c-2.375-0.659-0.681,0.523-2.173,1.011c-0.608,0.198-1.676,0.141-1.914,0.855,c-0.473,1.42,1.912,3.217,0.88,4.715c-1.437,2.085-4.202,0.326-5.638,3.756l0,0c-2.166,0-4.873,1.678-6.802,0.466,c-2.297-1.442-4.044-3.813-6.181-5.492c-1.554-1.22-2.697,1.074-4.113,0.13c-2.507-1.674-2.688,1.342-4.681-2.099,c-1.652-2.85-5.43-1.215-7.423,0.078c-3.419,0.724-8.33-2.58-9.57,1.943c-0.791,2.887-2.44,4.686-2.612,7.849,c-0.075,1.383-2.283,3.047-3.155,4.196l0,0l-1.707-1.71c-0.407-0.685-0.155-1.626-0.155-2.383c0-0.693-0.527-0.965-0.854-1.502,c-0.722-1.186-0.697-2.271-1.629-3.471c-0.669-0.861-0.625-1.903-0.854-2.927c-0.07-0.314-0.672-1.062-0.595-1.088l-8.949-6.684,c-2.283-1.43-2.932-2.752-5.949-3.031c-2.645-0.244-2.865-2.002-5.173-2.746c-1.382-0.445-1.601-1.543-2.483-2.539,c-0.506-0.57-3.334-4.01-2.845-4.533c0.944-1.009,2.55-2.749,3.336-4.119c1.087-1.894,3.893-2.184,5.509-3.109,c1.696-0.561,3.215,0.329,4.837-0.311c1.51-0.596,1.686-2.333,3.13-3.057c0.958-0.48,1.455-1.399,1.5-2.461,C96.82,224.207,96.251,222.237,95.422,221.311L95.422,221.311z", "name": "Lorestan"},"27": {"path": "M57.35,178.719l3.698,1.714c3.838,3.432,9.146,7.483,10.423,12.538c0.646,0,1.939-0.807,2.069,0.466,c0.094,0.93-1.101,4.743,1.707,3.264c0.606-0.319,6.638,1.659,6.777,0.155c0.092-0.992-1.223-2.73,1.448-2.202,c1.087,0.215,1.118-2.112,1.293-2.824c2.991-0.736,0.781-4.093,3.957-2.409c3.172,1.682,0.466-3.86,3.802-3.86,c1.02,0.197,1.99,0.267,2.949-0.052c1.685-0.559-1.303-3.336,0.491-3.834c0.842-0.234,1.615,1.917,2.974,1.917,c2.466,0,3.039,2.138,4.371,3.886c1.542,2.022,2.1,1.787,4.319,1.787l0,0c0.088,0.919,0.046,1.665-0.569,2.28,c-0.553,0.553-1.326,0.857-1.862,1.451c-0.692,0.766,1.255,2.616-0.465,3.057c-1.227,0.314-6.279,0.341-4.087,3.109,c0.199,0.251,2.2,1.589,2.483,1.632c0.885,0.135,2.498-0.58,2.845,0.829c0.383,0.723,0.059,2.823,0.647,3.083,c1.017,0.449,1.365-1.052,1.681-1.658c0.622-1.196,1.329-0.516,1.759-1.14c0.604-0.876,1.394-0.673,1.888,0.13,c0.459,0.746-0.189,1.676-0.258,2.435c-0.09,0.974,0.753,2.954-0.104,3.575c-0.485,0.351-4.484-0.717-5.276-0.958,c-1.728-0.526-1.63,1.851-2.276,2.72l0,0l-2.018-0.363c-2.552,1.068-0.39,2.995-0.724,5.052c-0.45,2.77-2.726,1.412-4.837,1.943,c-1.831,0.46-0.72,2.092-0.388,3.264c0.185,0.653-0.569,0.988-0.569,1.321c-0.075,0.025-0.06,0.193-0.078,0.285l0,0l-1.061,0.078,c-0.488-0.296-3.789,0.402-4.475,0.544c-2.202,0.457,0.709,3.197,0.569,4.015c-0.157,0.921-0.598,2.786-1.423,3.29,c-1.685,1.03-1.859-0.353-3.31-0.648c-1.718-0.35-4.546,1.224-5.949,2.072c-0.874,0.529-2.353,0.002-3.311-0.026,c-2.622-0.241-5.701-0.531-7.837-2.202c-1.552-1.215-3.435-3.882-5.509-4.093c-1.762-0.18-2.655,0.875-4.475,0.285,c-1.058-0.343-3.78-2.974-4.423-2.331c-1.588,1.588-3.925,2.015-6.259,1.503c-1.47-0.323,0.546,2.11,0.595,2.305,c0.384,0.094-0.448,2.191-0.621,2.461c-0.556,0.872-0.763,2.233-1.086,3.238l-0.723,4.676l0,0c-0.562-0.493-2.039-1.243-2.588-1.826,c-0.24-0.255-1.632-3.46-1.655-3.705c-0.729-0.729-0.458-1.409-0.879-2.176c-0.39-0.711-1.049-1.21-1.449-1.943,c-0.969-1.775-3.846-0.082-3.311-2.435c0.177-0.777,1.751-0.275,1.655-1.969c-0.052-0.914,0.862-2.114,1.655-2.668,c0.614-0.429,1.431-0.092,1.061-1.295c-0.493-1.6-0.354-1.055,0.181-2.409c0.488-1.233-0.095-2.216-0.44-3.394,c-0.32-0.74-1.056-0.863-1.785-1.036c-1.236-0.292-0.479-0.98-0.543-1.761c-0.056-0.686-2.186-2.768,0.698-2.28,c0.909,0.154,1.061-1.967,0.879-2.617c-0.081-0.29-0.841-1.908-0.491-1.994c0.09,0.364,2.058,1.149,2.535,1.528,c1.056,0.84,1.802-0.133,3.026,0.544c1.501,0.83-0.155-4.23-0.155-5.129c0-0.99-2.69-0.677-0.543-2.824,c0.837-0.837,0.704-0.893,0.491-2.098c0.798-0.798,3.615,0.398,2.768-2.072c-0.776-2.259,3.13,1.488,2.25-1.684,c-0.137-0.494,0.492-0.476,0.492-0.984c0-1.286-1.336-2.36,0.595-2.902c1.311-0.367-0.031-1.244,0.44-1.425,c0.185-0.07,0.623,0.339,0.802,0.441c0.751,0.425,1.701-0.149,2.069,0.078c0.74,0.455,1.63,1.796,1.63-0.285,c0-0.032,1.77-0.224,2.354-0.518c1.412-0.711-1.37-2.173,0.44-2.772c1.835-0.608-0.519-2.15-1.629-2.15,c-0.154-0.608,0.608-0.875,0.672-1.502C57.368,179.042,57.367,178.877,57.35,178.719L57.35,178.719z", "name": "Kermanshah"},"28": {"path": "M192.722,180.562c-1.182,4.092,0.944,12.279-5.25,12.279c-3.116,0-2.937,3.744-5.949,4.378c-3.162,0.666-3.569,1.323-3.569,4.663,c0.442,0.827,4.428,3.928,5.173,4.119c3.744,0.959,3.692,7.668,6.285,7.668c2.128,0,3.335-0.81,4.397,1.451,c0.891,1.898,0.87,2.564,3.233,2.564l1.112-0.388l0,0c0.82-0.645,1.293-4.819,1.293-5.88c0-9.376,16.095-2.658,21.286-6.451,l1.526-1.036l0,0l0.181-1.269c0.563-0.701,1.701-0.776,2.017-1.606c0.351-0.921,0.28-1.787,0.336-2.772,c0.119-2.102,1.907-4.245-0.181-5.855l0,0l-1.319-0.647c-2.116-2.128-3.718-2.521-6.595-3.264c-3.632-0.938-4.636-3.33-7.371-5.337,c-1.564-1.148-3.484-0.98-5.25-1.451c-2.473-0.66-3.071-2.774-5.897-1.891L192.722,180.562L192.722,180.562z", "name": "Qom"},"29": {"path": "M177.359,164.164c0.579,0.019,1.169,0.164,1.789,0.296c0.548,0.116,1.119,0.223,1.728,0.223c1.219,0,2.73,0.188,3.802,0.725,c0.994,0.498,1.157,1.261,1.836,2.021c0.58,0.649,1.715,0.56,1.112-0.414c-0.456-0.737-1.345-1.82-0.673-2.668,c1.236-1.561,3.052-0.564,3.052,1.243c0,0.746-0.883,2.282,0.207,2.642c1.949,0.646,0.727-3.855,3.026-2.383,c1.042,0.667,1.686,2.629,2.095,3.73c-0.155,0.532,0.197,0.979,0.155,1.528c-0.129,1.705-0.834,3.161-1.319,4.741l-1.449,4.714l0,0,c-1.182,4.092,0.944,12.279-5.25,12.279c-3.116,0-2.937,3.744-5.949,4.378c-3.162,0.666-3.569,1.323-3.569,4.663,c0.442,0.827,4.428,3.928,5.173,4.119c3.744,0.959,3.692,7.668,6.285,7.668c2.128,0,3.335-0.81,4.397,1.451,c0.891,1.898,0.87,2.564,3.233,2.564l1.112-0.388l0,0c0.37,0.679,0.828,1.089,1.371,1.632c1.367-0.275,0.454,2.673,0.336,3.057,c-0.592,1.937-2.845,2.238-3.285,4.093c-0.216,0.911,0.459,1.832-0.026,2.746c-0.648,1.223-1.773,0.25-2.768,0.285,c-1.426,0.049-3.396,2.248-4.63,3.005c-0.981,0.613-3.196,1.621-4.397,1.425c-1.148-0.188-2.361-0.36-3.337,0.441,c-2.222,1.823-4.838,0.92-7.345,2.539c-1.581,1.021-2.781,2.477-4.242,3.627l0,0l-0.595-1.14c-0.797,0-1.759,1.292-1.759-0.311,c0-0.881,1.018-2.388,0.647-3.135c-0.444-0.893-1.43,0.401-1.837,0.596c-0.636,0.304-1.187-3.337-2.354-1.243,c-0.378,0.679-0.001,1.861-0.802,2.253c-0.758,0.371-1.013-0.113-1.293-0.699c-0.481-1.007-1.315-1.288-2.38-1.58,c-2.35-1.005-1.448-2.607-1.448-4.611c0-1.918-1.453-2.834-2.845-3.86c-0.981-0.723-5.664,1.884-5.664,3.419,c0,1.942-2.993,3.919-4.811,3.627c-1.39-0.224-1.428-1.096-3.181-0.596c-0.585,0.167-0.84-0.777-1.19-1.01,c-0.564-0.376-1.181,0.306-1.345-0.648c-0.119-0.692,0.492-1.43,0.492-2.15c0-2.068,1.35-2.369,0.388-4.741l0.207-1.969l0,0,c0.521-1.967,4.346-1.949,3.647-4.741c-0.292-1.167-0.69-1.534-0.414-2.849c0.289-1.375-0.134-2.142-0.802-3.316,c-0.837-1.416-1.899-1.953-2.354-3.782c-0.388-1.559,0.446-3.232,0.155-4.818c-0.162-0.882-4.343-2.083-2.923-3.031,c0.431-0.288,2.37,0.698,3.518,0.311c0.939-0.317,2.051,0.602,2.328,1.451c1.473,0-1.464-4.296-1.293-5.181,c0.38-1.967,4.289-0.463,2.535-3.989c-0.259-0.806-1.321-1.903-0.595-2.824c0.082-0.104,4.752,0.657,5.768,0.544,c1.956-0.218,4.43-0.763,3.129,2.072c-0.606,1.32-1.43,2.726,0.337,3.29c1.183,0.378,5.065,4.071,3.957-0.674,c-0.523-2.243-1.266-5.141-3.311-6.451c-1.397-0.894-2.504-1.122-4.035-1.502c-0.623-0.155-2.567-1.427-2.043-2.254,c0.657-1.037,4.298,0.218,4.397-1.969c0.091-2.008-1.167-2.535-2.121-4.067c-0.453-0.783-0.583-3.704,0.207-4.274,c1.273-0.92,1.187,1.234,1.164,1.969c-0.048,1.556,1.723,2.332,2.483,0.803c0.921-1.855-0.828-2.485-0.828-4.041l0.104-1.451l0,0,c0.884-0.638,3.485,0.233,4.578,0.233c1.199,0,0.749-1.083,1.164-1.917c0.694-1.395,3.543-1.23,4.94-1.658,c2.261-0.691,3.597-1.865,6.13-1.865c0.351-0.463,1.57-0.916,2.121-1.295c0.861-0.592,1.976-1.049,3-1.244,C175.899,163.658,176.436,164.164,177.359,164.164L177.359,164.164z", "name": "Markazi"},"30": {"path": "M177.359,164.164c0.579,0.019,1.169,0.164,1.789,0.296l0,0l1.573-0.814c2.54-1.36,5.817-0.272,8.638-1.321,c1.882-0.699,4.065-0.432,6-0.803c1.039-0.199,7.273,2.43,5.199-0.7c-1.13-1.704-0.844-2.13,0.543-3.057,c0.98-0.654,1.414-2.902,2.767-2.902c1.588-0.614,4.25,3.097,5.095,1.399c0.39-0.784-1.487-2.314-0.104-3.005,c0.445-0.222,0.892-0.044,1.216-0.492c0.243-0.337,0.285-1.443,0.285-1.865l0,0l-0.595-1.373c0-1.44,0.248-2.423-1.629-2.565,c-1.424-0.108-2.44-1.111-3.906-1.321c-0.967-0.138-2.114,0.228-2.845-0.596c-0.767-0.865-1.763-2.313-3-2.383,c-0.956-0.054-1.509,0.069-2.354-0.414l-2.897-1.036l0,0c-0.956,0.185-2.726-0.271-3.698-0.544c-0.821-0.23-2.086,0.036-2.974-0.078,c-1.547-0.199-2.718-0.596-4.345-0.052c-2.229,0.745,1.132,3.188,1.785,3.653c-0.149,0.518,2.071,0.96,2.431,1.14,c4.234,2.117-1.654,4.289-0.31,6.062c-0.068,0.113-0.148,0.818-0.181,0.984c-0.745,1.653-0.602,2.011-2.483,2.953,c-1.981,0.993-3.81,1.672-5.871,2.357c-2.433,0.808-1.435,3.302-0.802,4.793L177.359,164.164L177.359,164.164z", "name": "Alborz"},"31": {"path": "M179.148,164.46c0.548,0.116,1.119,0.223,1.728,0.223c1.219,0,2.73,0.188,3.802,0.725c0.994,0.498,1.157,1.261,1.836,2.021,c0.58,0.649,1.715,0.56,1.112-0.414c-0.456-0.737-1.345-1.82-0.673-2.668c1.236-1.561,3.052-0.564,3.052,1.243,c0,0.746-0.883,2.282,0.207,2.642c1.949,0.646,0.727-3.855,3.026-2.383c1.042,0.667,1.686,2.629,2.095,3.73,c-0.155,0.532,0.197,0.979,0.155,1.528c-0.129,1.705-0.834,3.161-1.319,4.741l-1.449,4.714l0,0l5.458-0.725,c2.826-0.883,3.423,1.231,5.897,1.891c1.766,0.471,3.686,0.303,5.25,1.451c2.735,2.006,3.74,4.398,7.371,5.337,c2.878,0.743,4.479,1.136,6.595,3.264l1.319,0.647l0,0c0.304-0.535,0.796-1.103,1.009-1.658c0.158-0.412-0.104-1.25-0.104-1.735,c0-1.084,1.528-2.679,2.224-3.471c2.782-1.395-2.078-5.21-3.052-6.347c-2.83-3.305-0.104-4.809-0.104-8.082,c0-1.616-0.641-4.264,1.837-2.254c0.286,0.232,1.642,0.065,1.655,0.104c0.065,0,2.116,1.246,2.793,1.425,c1.039,0.274,2.131,1.494,2.897,2.202c1.981,1.831,3.511,2.278,6.078,1.451c2.163-0.539,4.442,1.847,6.518,2.28,c2.245,0.468,4.938-0.205,7.113-0.751c1.999-0.502,8.456-6.824,8.613-8.886c0.187-2.468-1.707-4.971-1.448-7.668l0,0,c-1.624-0.41-3.292-2.612-4.733-1.891c-4.141,2.07-4.712-0.92-8.121-1.632c-1.265-0.264-4.237-0.314-4.733-1.813,c-2.851,0-4.758,3.599-6.802,5.155c-2.517,2.517-3.978,3.94-7.811,1.839c-3.214-1.762-3.148-5.916-6.544-8.134,c-2.677-1.749-4.387-1.829-7.604-1.736l-3.931,0.078l0,0c0,0.423-0.041,1.529-0.285,1.865c-0.324,0.448-0.771,0.27-1.216,0.492,c-1.383,0.691,0.494,2.221,0.104,3.005c-0.846,1.698-3.507-2.013-5.095-1.399c-1.353,0-1.787,2.247-2.767,2.902,c-1.387,0.926-1.673,1.352-0.543,3.057c2.074,3.13-4.16,0.5-5.199,0.7c-1.935,0.371-4.118,0.104-6,0.803,c-2.821,1.048-6.098-0.039-8.638,1.321L179.148,164.46L179.148,164.46z", "name": "Tehran"},"32": {"path": "M176.299,309.698c2.173,1.657,5.344,4.292,8.173,3.419c3.609-1.114,3.981,3.262,6.57,4.56c1.033,1.316,3.139,3.593,4.681,4.223,c0.784,0.32,1.439,1.05,2.327,0.855c1.148-0.252,1.155,0.208,2.069,0.389c0.268,0.822,2.176-0.495,2.431-0.751,c0.729-0.729,0.914-1.215,1.888-1.632l2.666-0.104l0,0c3.428-4.271-3.287-10.555-2.586-15.129c0.14-0.916,0.154-3.983,1.112-4.378,c1.179-0.485,1.205,0.221,1.293-1.14c-0.226-1.126-3.138-2.244-1.009-3.601c2.273-1.448,0.54-0.899,0.362-2.461,c-0.111-0.97,1.259-1.682,1.474-2.513c0.376-1.456-0.846-2.61-1.862-3.523l-5.276-4.741c-0.77-0.692-2.777-1.292-3.207-2.021,c-2.469-2.469,1.996-2.889,0.078-5.544c-0.631-0.873-0.281-0.896-0.388-1.839c-0.116-1.018-1.965,0.363-1.965-1.606,c0-1.297-0.183-3.599-2.173-2.824c-0.762,0.297-0.922,1.339-1.836,1.658c-2.339,0.815-3.876-0.914-6.44,0.829,c-1.154,0.575-1.931,1.43-2.974,2.124c-1.127,0.75-1.64-0.98-2.819-0.751c-1.031,0.2-1.376,0.829-2.354,0.052l-2.509-1.995,c-1.563-1.242-1.973,0.312-3.44,0.725c-0.904,0.254-1.44-0.575-2.224-0.622c-2.325-0.14-3.896,3.394-6.362,3.394l0,0l0.903,3.704,c0.044,1.507,2.161,3.243,3,4.404c1.649,2.283,1.582,5.883,4.681,6.683c2.863,0.74,0.458,5.227,3,7.046,c0.493,1.177,2.347,3.279,3.492,3.886c0.911,0.483,1.954,1.096,1.888,2.254c-0.076,1.336,1.258,2.228,0.336,3.471,C178.383,307.437,177.243,308.522,176.299,309.698L176.299,309.698z", "name": "Charmahal&Bakhtiari"},"33": {"path": "M186.283,354.902c-1.954,1.796,1.107,4.938,2.586,5.751c1.508,0.828,0.523,3.748,2.483,4.352c0.96,0.296,3.129,1.116,4.086,0.933,c1.086-0.208,2.077-0.673,3.207-0.544c0.682,0.077,1.398,0.685,2.043,0.933c2.094,0.804,4.714-0.527,5.147,2.901,c0.355,1.142-0.239,2.008,0.052,2.953c0.15,0.488,2.311,4.151,2.69,4.404c2.674,1.785,5.92,1.346,7.501,4.507,c1.259,2.517,4.095,7.385,4.423,10.051c0.399,1.421,2.156,3.164,3.13,4.326c3.664,4.375,3.763,10.737,5.949,15.673,c-0.084,0.578,2.198,4.905,2.587,5.855c0.396,0.968-0.242,3.614,0.724,4.145c2.484,1.364,3.202,2.063,5.147,4.197,c1.924,2.109,2.464,4.172,3.207,6.917c0.255,2.66,3.21,6.327,5.043,8.16c0.958,0.958,2.523,1.491,3.724,2.124,c1.335,0.703,2.334,1.782,3.466,2.772l1.655,1.606l0,0c-0.639,1.285-4.029,0.907-5.199,0.907c-0.796,0-1.398,0.265-2.147,0.337,l-1.225,1.308l0,0c-0.611-0.754-2.059-1.826-2.603-1.826c-0.326-0.987,0.849-0.318,1.086-1.036c0.566,0,0.983-0.191,1.423-0.337,c0-0.052-0.014-0.039,0.026-0.052c0-1.297-0.892-1.273-1.94-1.736c-1.01-0.446-1.174-2.255-1.888-3.057,c-1.797-2.018-3.391-3.058-6-3.29c-3.503-0.432-5.179-2.21-7.113-4.818c-0.829-1.118-8.63-1.018-10.294-0.699,c-1.204,0.231-1.528-0.475-2.509-0.544c-1.98-0.139-2.881-1.836-4.992-2.357c0.026-0.052-0.436-0.778-0.517-0.881,c-0.253-0.32-0.399-0.519-0.621,0.026c-0.406,0.998-1.164-0.254-1.448-0.933c-0.402-0.946-0.71-3.375-1.707-3.704,c-0.205,0.62-0.259,1.36-0.259,2.124c-0.281,0-0.672-1.988-0.672-2.357c0-0.894-0.667-1.552-0.362-2.746,c0.465-1.822-2.212-5.565-3.44-6.891c-2.024-2.183-1.674-3.783-2.198-6.502c0-1.055-0.074-2.5-0.414-3.445,c-0.404-1.124-1.364-1.748-1.707-2.642c-0.236-0.614,0.238-1.149-0.466-1.502c-0.833-0.418-1.964-0.078-2.871-0.311,c-1.323-0.339-1.386-1.965-2.147-3.109c-0.653-0.981,1.081-2.83,1.5-3.912c0.174-0.449,0.643,1.674,0.828,1.788,c0.735,0.452,0.311-1.943,0.155-2.228c-0.642-1.175-0.855-2.103-2.509-2.228c-0.748-0.056-3.124-1.424-3.673,0.233,c-0.998-0.741-0.855-1.522-0.957-2.591c0-0.569-0.047-0.981,0.077-1.528c0.054-0.238,0.667-1.086,0.569-1.217,c0.229-0.384-0.543-1.505-0.543-2.072c0-0.781,0.015-1.545-0.181-2.253c-0.146-0.527-1.492-3.39-1.759-3.549,c-0.126,0.094-0.494,0.294-0.543,0.44c-0.675,0-1.572-1.398-1.836-1.995c-0.534-1.209-1.344-1.679-2.224-2.564l-1.086-1.062,l-1.242-1.451c-1.286-1.037-1.82-2.711-2.845-3.886l-2.871-3.29c-1.597-1.829,0.635-4.119-0.931-6.787,c-1.176-2.003-1.632-2.272-3.152-2.637l0,0l2.945-1.871c0.777,0.226,1.664,0.055,2.406,0.492c1.184,0.698,1.876,0.669,3.233,0.44,c0.986-0.167,2.479,0.178,3.362-0.156l0,0c1.095,0.193,1.954-0.284,2.69,0.777c0.163,0.234,0.743,0.049,1.009,0.181,C185.761,354.122,185.984,354.603,186.283,354.902L186.283,354.902z", "name": "Bushehr"},"34": {"path": "M154.185,264.054l1.865,4.559c2.63,0.308,4.344-1.291,6.751,0.44c1.244,0.894,0.867,1.603,0.077,2.668,c-0.881,1.189-1.17,1.552-0.879,3.031l0,0l0.903,3.704c0.044,1.507,2.161,3.243,3,4.404c1.649,2.283,1.582,5.883,4.681,6.683,c2.863,0.74,0.458,5.227,3,7.046c0.493,1.177,2.347,3.279,3.492,3.886c0.911,0.483,1.954,1.096,1.888,2.254,c-0.076,1.336,1.258,2.228,0.336,3.471c-0.916,1.236-2.056,2.321-3,3.497l0,0l-1.474,3.238c-0.965,2.504-3.056,2.223-5.302,3.031,c-1.325,0.477-3.29,2.677-3,4.171c0.204,1.05,0.194,1.843,0.517,2.902c0.636,2.08,1.637,2.182,1.06,4.611,c-0.553,2.328-0.113,5.368,2.561,2.694c2.638-2.639,2.226,1.842,3.931,2.824c1.016,0.582,1.804,1.421,2.923,1.917,c1.446,0.64,3.828,0.678,3.828,2.824c0,0.643-1.174,3.213-1.785,3.419c0,1.828-0.819,2.343,0.957,3.938,c1.403,1.259,0.854,3.32,0.854,5.077l0.285,2.616l0,0c-0.883,0.334-2.376-0.011-3.362,0.156c-1.357,0.229-2.049,0.258-3.233-0.44,c-0.742-0.437-1.628-0.266-2.406-0.492l-2.945,1.871l0,0c-0.351-0.084-0.759-0.174-1.245-0.291c-0.97-0.234-1.832,0.903-2.483,0.777,l-5.328,3.808c-0.628,0.449-4.293,3.803-4.888,2.616c-0.21-0.419-1.461-1.904-1.216-2.15c0.319-0.321,2.547-2.927,0.466-2.927,c-1.778,0-4.783-0.768-6.156-0.207c-2.955,1.207-0.535-1.971-4.138-2.565c-1.49-0.245-2.542-0.711-3.466-1.788l-2.535-2.953,c-0.571-0.665,1.775-0.922,1.293-1.166c-0.58-0.292-1.723-0.026-2.354-0.026c-0.335,1.332-1.43,1.638-0.621,3.523l1.19,2.772,c0.82,0.207,0.17,4.416-0.052,5.077c-1.043,3.123-1.798,1.048-3.906,1.606c-3.93-1.464-3.089,2.432-4.63,2.305,c-0.595-0.049-1.331-0.765-1.681,0.207l0,0c-1.066-0.76-3.088-0.918-3.906-1.995c-0.582-0.766-0.159-2.857-0.905-3.186,c-0.868-0.383-0.846-0.874-0.647-1.762c0.207-0.331,0.348-0.887,0.517-1.114c-0.633-1.062-3.1-5.033-4.371-5.129,c-0.313-0.024-1.73,1.316-1.94,0.466c-0.204-0.052-0.429-2.639-0.647-3.083c-0.617-1.26-1.99-1.007-3.026-1.58l-1.291-0.567,l0.362-17.462H101.94V313.74l4.681-11.683c0.394-0.393,0.663-1.729,0.466-2.28c-0.281-0.785-0.953-0.602-1.345-1.217,c-0.219-0.343,0.055-1.028-0.155-1.451c-0.332-0.667-1.291-0.503-1.63-1.399c-0.372-0.984-2.645-4.689-4.056-6.118l0,0l3.798-2.612,c1.305-1.004,1.39-2.053,0.828-3.497c-1.059-2.72,1.044-4.129,2.586-6.113c0.737-0.949,0.932-2.272,1.319-3.368,c0.19-0.538,1.216-2.459,1.216-2.875l0,0c0.872-1.15,3.08-2.813,3.155-4.196c0.172-3.164,1.821-4.962,2.612-7.849,c1.24-4.522,6.151-1.219,9.57-1.943c1.993-1.293,5.771-2.928,7.423-0.078c1.994,3.441,2.174,0.425,4.681,2.099,c1.415,0.944,2.559-1.35,4.113-0.13c2.138,1.679,3.884,4.05,6.181,5.492C149.312,265.732,152.02,264.054,154.185,264.054,L154.185,264.054z", "name": "Khuzestan"},"35": {"path": "M181.653,352.959c1.095,0.193,1.954-0.284,2.69,0.777c0.163,0.234,0.743,0.049,1.009,0.181c0.41,0.204,0.632,0.685,0.931,0.984l0,0,l3.114-0.605c2.433,0.3,3.768,0.755,6.197,0.112c1.57-0.415,2.402-2.306,3.776-2.15c2.228,0.253,5.268-2.741,4.966-5.026,c-0.165-1.244-1.443-2.187-0.543-3.238c0.842-0.983-0.442-2.386-1.19-3.135c-0.143-0.279-0.336-0.493-0.336-0.803,c1.269-0.429-0.155-1.643-0.155-2.202c0-0.605,4.579,0.197,5.121,0.984c0.409,0.594,0.98,0.934,1.629,1.088,c1.478,0.351,1.126,2.046,2.819,2.046c4.777,0,7.105-1.412,6.13-6.372l-0.543-1.606l0,0c-1.617-2.015-4.689-3.401-6.647-5.077,c-2.485-2.128-3.538-5.086-3.516-8.264l0,0l-2.666,0.104c-0.974,0.417-1.159,0.903-1.888,1.632,c-0.256,0.256-2.163,1.573-2.431,0.751c-0.914-0.18-0.921-0.64-2.069-0.389c-0.888,0.195-1.544-0.535-2.327-0.855,c-1.542-0.63-3.649-2.907-4.681-4.223c-2.589-1.298-2.96-5.674-6.57-4.56c-2.829,0.873-6-1.763-8.173-3.419l0,0l-1.474,3.238,c-0.965,2.504-3.056,2.223-5.302,3.031c-1.325,0.477-3.29,2.677-3,4.171c0.204,1.05,0.194,1.843,0.517,2.902,c0.636,2.08,1.637,2.182,1.06,4.611c-0.553,2.328-0.113,5.368,2.561,2.694c2.638-2.639,2.226,1.842,3.931,2.824,c1.016,0.582,1.804,1.421,2.923,1.917c1.446,0.64,3.828,0.678,3.828,2.824c0,0.643-1.174,3.213-1.785,3.419,c0,1.828-0.819,2.343,0.957,3.938c1.403,1.259,0.854,3.32,0.854,5.077L181.653,352.959L181.653,352.959z", "name": "Kohgiluyeh&Boyer-Ahmad"},"36": {"path": "M328.406,243.589c1.906,2.51,4.877,4.674,6.466,7.202l3.776,6.01c1.611,2.564,4.353,5.927,6.621,7.875,c2.773,2.382,3.853,5.413,6.104,8.238c0,2.689,1.991,7.904,4.138,9.637c1.117,0.901,2.01,1.708,2.69,2.953,c0.344,0.63,0.656,1.305,1.035,1.917c0.284,0.46,2.961,3.322,3.026,3.782l0,0c-0.091,0-0.076,0.035-0.129,0.052,c0,1.654-3.957,3.954-5.276,3.316c-2.036,1.021-3.243,2.305-4.785,3.938c-1.384,1.466-3.182,2.129-4.888,3.083,c-3.035,1.697-7.507,2.231-10.164,4.378c-1.909,1.542-1.038,3.974-1.449,6.165c0,3.25,1.695,11.048-3.207,12.072,c-3.162,0.66-9.996,1.105-12.88-0.389c-4.115-0.452-8.991,3.262-12.622,2.565c-4.096-0.786-5.901,1.244-7.889,4.87,c-0.388,0.708-1.611,5.959-0.776,6.165c0.039,0.27,0.901,1.331,1.19,1.373c0.57,1.428,1.958,2.225,1.837,4.119,c0.497,1.361-0.012,4.509,1.034,5.207c1.747,1.167,2.46-0.234,2.328,2.668c-0.186,4.092-2.979,7.959-0.853,11.994,c1.458,2.767,0.491,1.793-2.043,2.28c-1.03,0.198-2.005,0.74-2.897,1.217l0,0c-1.436-2.525-7.139-3.555-9.518-5.129,c-3.245-2.147-1.58-8.77-3.233-12.098c-0.881-1.774-3.902-3.599-4.293-5.336c-4.583-4.571-8.795-14.572-10.449-20.828,c-0.358-2.891-2.099-7.51-3.931-9.818c-1.941-2.444-5.165-3.818-7.759-5.492l-6.053-2.072l0,0c0.415-1.43-1.371-3.374-1.371-5,c0-1.245-0.018-2.551,0.233-3.756c0.294-1.41,0.881-3.158,1.034-4.559c1.074-3.819,1.61-8.519,0.776-12.486,c-0.383-1.825-0.751-3.813,0.465-5.414c1.005-1.322,3.408-0.457,4.733-1.788c2.043-1.8,3.163-3.808,6.337-3.808,c4.46,0,8.005,2.367,12.208,2.176c4.577-0.208,8.73-3.341,12.648-5.311c1.549-0.049,4.662-1.579,6.544-1.891,c6.23-1.034,15.904-2.45,16.797-10.207c0.955-0.939,2.189-0.182,3.223-1.735c0.484-0.726,0.283-1.669,0.776-2.435,c0.749-1.164,1.906-2.208,3.207-2.642c1.616-0.538,2.76-1.722,4.293-2.487L328.406,243.589L328.406,243.589z", "name": "Yazd"},"37": {"path": "M217.268,333.997l2.716-0.803c0.632-1.181-0.157-2.267-0.233-3.445c-0.142-2.215,0.132-4.169,1.319-6.088,c1.409-2.278,2.096-3.955,2.431-6.684c0.258-0.586,1.345-4.213,0.362-4.456c-0.103-0.408-1.818-0.376-2.199-0.466,c-1.501-0.356-3.013-1.063-3.906-2.461c-1.75-2.742,0.776-2.043,2.509-1.503c1.323,0.412,3.749-0.194,4.63-1.373,c0.58-0.776,4.705-3.561,5.638-3.938c2.118-0.855,2.516-2.831,2.328,1.321c-0.171,3.777,3.012,3.336,6.233,4.145,c4.234,1.063,6.898-0.996,10.682-1.528l3.776-1.217l0,0l6.053,2.072c2.594,1.674,5.818,3.048,7.759,5.492,c1.832,2.307,3.574,6.926,3.931,9.818c1.654,6.255,5.866,16.257,10.449,20.828c0.391,1.738,3.412,3.562,4.293,5.336,c1.653,3.328-0.012,9.951,3.233,12.098c2.379,1.574,8.082,2.604,9.518,5.129l0,0l0.259,1.684l2.923,5.777,c-0.111,1.703,2.554,4.288,4.061,4.663c3.502,0.871,7.316-1.335,8.82,3.316c1.181,3.653,1.649,7.247,3.44,10.828l0.983,1.684l0,0,l1.267,3.393c0.318,0.989,0.693,1.643,0.44,2.668c-2.005,0.507-2.702,0.526-0.879,2.487c3.283,3.532,11.574,6.976,9.492,12.719,c-0.602,0.872-2.419,7.516-2.147,8.549c0.504,1.912,3.82,2.072,4.371,4.948c1.006,5.255-4.557,3.116-6.932,3.342,c-1.485,0.141-1.339,2.004-2.923,2.409c-2.152,0.552-2.085,1.495-3.233,3.419c0.261,1.623-1.366,4.54-2.819,5.362,c-3.058,1.729-5.88-1.548-8.613-2.072c-1.571-0.301-3.311,0.254-4.63,1.166c-1.79,1.238-2.089,0.585-3.879-0.311l-9.078,0.855,c-1.092,0.103-5.233,1.085-4.914,2.746c0.144,0.752,0.723,1.308,0.905,2.021c0.119,0.466-0.771,1.38-1.009,1.813,c-0.44,0.802,1.753,2.079,0.698,3.264c-0.564,0.633-1.981-0.064-2.742,0.7c-2.396,2.403-6.193-0.22-9.518-0.259,c-1.299,0.377-3.86,0.387-5.018-0.155c-1.366-0.641-1.28-2.272-3.078-2.72c-1.839-0.458-3.899,0.804-5.794,0.389,c-2.279-0.5-1.943-1.664-2.897-3.342l-1.216-0.7l0,0l-1.655-1.606c-1.132-0.99-2.131-2.068-3.466-2.772,c-1.201-0.633-2.766-1.166-3.724-2.124c-1.833-1.833-4.788-5.5-5.043-8.16c-0.743-2.745-1.283-4.807-3.207-6.917,c-1.945-2.134-2.664-2.833-5.147-4.197c-0.966-0.531-0.328-3.177-0.724-4.145c-0.389-0.95-2.671-5.277-2.587-5.855,c-2.185-4.935-2.284-11.297-5.949-15.673c-0.973-1.162-2.73-2.905-3.13-4.326c-0.328-2.667-3.164-7.534-4.423-10.051,c-1.581-3.162-4.826-2.722-7.501-4.507c-0.379-0.253-2.54-3.916-2.69-4.404c-0.291-0.945,0.303-1.812-0.052-2.953,c-0.433-3.429-3.053-2.098-5.147-2.901c-0.646-0.248-1.361-0.855-2.043-0.933c-1.13-0.129-2.121,0.336-3.207,0.544,c-0.957,0.183-3.126-0.637-4.086-0.933c-1.96-0.604-0.975-3.524-2.483-4.352c-1.479-0.813-4.54-3.955-2.586-5.751l0,0l3.114-0.605,c2.433,0.3,3.768,0.755,6.197,0.112c1.57-0.415,2.402-2.306,3.776-2.15c2.228,0.253,5.268-2.741,4.966-5.026,c-0.165-1.244-1.443-2.187-0.543-3.238c0.842-0.983-0.442-2.386-1.19-3.135c-0.143-0.279-0.336-0.493-0.336-0.803,c1.269-0.429-0.155-1.643-0.155-2.202c0-0.605,4.579,0.197,5.121,0.984c0.409,0.594,0.98,0.934,1.629,1.088,c1.478,0.351,1.126,2.046,2.819,2.046c4.777,0,7.105-1.412,6.13-6.372L217.268,333.997L217.268,333.997z", "name": "Fars"},"38": {"path": "M253.555,305.502c0.415-1.43-1.371-3.374-1.371-5c0-1.245-0.018-2.551,0.233-3.756c0.294-1.41,0.881-3.158,1.034-4.559,c1.074-3.819,1.61-8.519,0.776-12.486c-0.383-1.825-0.751-3.813,0.465-5.414c1.005-1.322,3.408-0.457,4.733-1.788,c2.043-1.8,3.163-3.808,6.337-3.808c4.46,0,8.005,2.367,12.208,2.176c4.577-0.208,8.73-3.341,12.648-5.311,c1.549-0.049,4.662-1.579,6.544-1.891c6.23-1.034,15.904-2.45,16.797-10.207c0.955-0.939,2.189-0.182,3.223-1.735,c0.484-0.726,0.283-1.669,0.776-2.435c0.749-1.164,1.906-2.208,3.207-2.642c1.616-0.538,2.76-1.722,4.293-2.487l2.948-0.57l0,0,c0-8.078-1.04-15.524-1.81-23.522l0,0l-27.623-0.466c-9.167,0-18.756-1.201-27.778-2.642c-6.502-1.039-15.626,0.091-19.064-6.419,c-1.116-0.173-2.22-0.357-3.309-0.55c-3.098-1.123-6.007-3.238-9.337-3.238c-3.639,0-8.011,1.021-11.432,0.13,c-1.074-0.28-4.751-1.938-5.38-2.824c-0.135-0.016-0.291-0.087-0.414-0.13l0,0l-1.526,1.036c-5.191,3.792-21.286-2.925-21.286,6.451,c0,1.062-0.474,5.235-1.293,5.88l0,0c0.37,0.679,0.828,1.089,1.371,1.632c1.367-0.275,0.454,2.673,0.336,3.057,c-0.592,1.937-2.845,2.238-3.285,4.093c-0.216,0.911,0.459,1.832-0.026,2.746c-0.648,1.223-1.773,0.25-2.768,0.285,c-1.426,0.049-3.396,2.248-4.63,3.005c-0.981,0.613-3.196,1.621-4.397,1.425c-1.148-0.188-2.361-0.36-3.337,0.441,c-2.222,1.823-4.838,0.92-7.345,2.539c-1.581,1.021-2.781,2.477-4.242,3.627l0,0c-0.12,0.478-0.537,0.916-0.854,1.295,c-0.268,0.322-0.955,0.522-0.569,1.062c0.482,0.674,1.838,0.306,1.759,1.347c-0.061,0.812-0.621,1.495-0.879,2.254,c-0.529,0.526-1.804,2.985-1.992,3.652c-0.325,1.157,0.646,3.212-1.293,3.212c-1.045,0-2.163,0.976-2.974,0.751,c-2.375-0.659-0.681,0.523-2.173,1.011c-0.608,0.198-1.676,0.141-1.914,0.855c-0.473,1.42,1.912,3.217,0.88,4.715,c-1.437,2.085-4.202,0.326-5.638,3.756l0,0l1.865,4.559c2.63,0.308,4.344-1.291,6.751,0.44c1.244,0.894,0.867,1.603,0.077,2.668,c-0.881,1.189-1.17,1.552-0.879,3.031l0,0c2.466,0,4.037-3.534,6.362-3.394c0.784,0.047,1.32,0.876,2.224,0.622,c1.467-0.413,1.877-1.967,3.44-0.725l2.509,1.995c0.978,0.777,1.322,0.148,2.354-0.052c1.179-0.229,1.692,1.501,2.819,0.751,c1.043-0.694,1.82-1.549,2.974-2.124c2.564-1.743,4.101-0.014,6.44-0.829c0.914-0.318,1.075-1.361,1.836-1.658,c1.99-0.775,2.173,1.526,2.173,2.824c0,1.969,1.85,0.588,1.965,1.606c0.107,0.943-0.243,0.966,0.388,1.839,c1.918,2.655-2.547,3.075-0.078,5.544c0.43,0.729,2.437,1.329,3.207,2.021l5.276,4.741c1.016,0.913,2.238,2.067,1.862,3.523,c-0.215,0.831-1.585,1.542-1.474,2.513c0.178,1.562,1.91,1.013-0.362,2.461c-2.13,1.357,0.783,2.475,1.009,3.601,c-0.089,1.361-0.114,0.655-1.293,1.14c-0.959,0.394-0.972,3.462-1.112,4.378c-0.7,4.573,6.015,10.857,2.586,15.129l0,0,c-0.022,3.177,1.03,6.135,3.516,8.264c1.958,1.677,5.03,3.063,6.647,5.077l0,0l2.716-0.803c0.632-1.181-0.157-2.267-0.233-3.445,c-0.142-2.215,0.132-4.169,1.319-6.088c1.409-2.278,2.096-3.955,2.431-6.684c0.258-0.586,1.345-4.213,0.362-4.456,c-0.103-0.408-1.818-0.376-2.199-0.466c-1.501-0.356-3.013-1.063-3.906-2.461c-1.75-2.742,0.776-2.043,2.509-1.503,c1.323,0.412,3.749-0.194,4.63-1.373c0.58-0.776,4.705-3.561,5.638-3.938c2.118-0.855,2.516-2.831,2.328,1.321,c-0.171,3.777,3.012,3.336,6.233,4.145c4.234,1.063,6.898-0.996,10.682-1.528L253.555,305.502L253.555,305.502z", "name": "Isfahan"},"39": {"path": "M357.141,131.213l1.5,0.518c1.201,0,2.353-0.958,3.543-0.958c1.058,0,1.796-0.148,2.716,0.44c0.566,0.363,0.926,0.958,1.423,1.295,c0.319,3.567-1.947,5.103-2.923,8.29c-1.009,3.293,1.769,6.551,0.905,9.637c1.001,2.417,1.186,4.622,2.845,6.684,c1.243,1.545,3.459,2.404,4.966,3.808c3.294,3.07,6.463,5.144,1.474,9.067c-4.038,4.055-1.004,8.803-7.552,10.492,c-4.116,1.061-6.406,2.549-8.692,5.145c-3.741,2.67-6.647,6.623-9.853,9.828l-0.258,1.606l0,0c5.691,0,10.888,2.374,17.277,1.347,c5.401-0.868,4.617-7.748,9.725-9.067c6.543-1.689,14.046-0.157,14.949,7.72c0.271,2.362-0.23,7.063,2.379,8.134,c2.921,1.2,2.47,4.386,1.19,6.632c-1.142,1.048-0.904,4.496,0.362,5.44c3.082,2.298,6.276-0.777,9.466-0.777,c1.2,0,2.271,0.77,2.949,1.71c0.444,0.615,2.561,2.072,2.535,2.176c2.966,1.111,9.807-0.762,13.423-0.311,c1.708-0.158,3.346,0.518,5.483,0.052c1.669-0.364,3.564-0.829,5.276-0.829c2.427,0,1.829,2.266,4.63,1.684l3.362-0.699,c1.19-0.248,1.962-1.252,3.181-1.373c2.703,0,3.841,1.219,6.311,1.865c4.416,1.154,8.082,3.714,12.337,4.974,c3.698,1.095,7.854-3.462,12.023-3.135l0,0l-0.307-1.709l1.138-3.342l3.31-3.083l0.181-1.114l6.698,0.207,c0.138-0.035,0.072-1.102-0.181-1.166c-0.105-0.535-1.526-1.057-1.526-1.528c0-1.014-0.75-1.308-0.75-2.254,c0-0.817,0.294-0.892-0.414-1.477c-0.277-0.229-2.247-1.188-1.992-1.477c0.142-0.162,2.381-0.855,2.664-0.855,c2.659,0,1.529-1.676,2.845-2.668c2.708,1.646,1.34-3.457,2.948-3.989c0-0.052-0.014-0.039,0.026-0.052,c0-0.058,0.026-0.071,0.026-0.13c0.1-0.033,0.045-0.092,0.052-0.285l0.978-2.085c-0.038-0.15-0.081-0.314-0.124-0.48,c-0.074-0.28,0.502-1.561,0.285-1.658c-0.024-0.01,0.023-0.066,0-0.078c-0.154-0.076,0.207-2.135,0.207-2.642,c0-1.063,1.225-1.48,0.931-2.409c-0.193-0.611-0.548-1.133,0.052-1.736c0.914-0.918,0.924-0.748,0.362-2.021,c-0.656-1.484-1.603-1.195-0.672-2.85c0.414-0.738-0.947-1.38-0.75-2.15c0.203-0.796,1.501-0.649,2.121-0.699,c1.509-0.124,0.501-1.818,0.776-2.539c0.737-1.932,1.302-3.421,2.354-5.129c0.616-1,0.605-2.495,0.179-3.792l0,0,c-0.223-0.68-0.56-1.305-0.98-1.777c-1.113-1.249,0.704-2.446,0.388-3.575c-0.102-0.366-0.052-1.49,0.207-1.969,c0.401-0.742-0.453-3.06-0.672-3.704c-0.507-1.488-0.842-0.742-2.328-0.855c-1.296-0.098-0.526-1.579,0.026-1.839,c0.304-0.144,0.75-2.21,0.828-2.228c0.564-0.128,0.683-1.605,0.983-2.15c1.195-2.17-0.536-3.527-0.983-5.751,c-0.136-0.679-0.75-0.593-0.75-1.347c0-0.489,0.232-0.964-0.052-1.373c-0.892-1.287,0.325-1.477,0.207-2.513,c-0.051-0.451-0.332-1.15,0.336-1.503c0.125-0.066,0.093-0.359-0.026-0.414c-0.966-0.448,0.29-2.215,0.517-2.772,c0.398-0.977-0.546-2.269-1.118-3.328l-8.917,0.349l-14.122-0.104l-3.466-5.647c-0.46-0.749-0.245-1.038-1.19-1.58,c-1.321-0.757-1.156-1.516-2.069-2.539c-0.892-1.601-0.949-3.564-2.587-4.637c-2.051-1.344-3.448,0.594-5.25-2.124,c-1.44-2.172-2.246-0.217-3.414-0.959c-0.615-0.391-0.902-0.941-1.759-0.751c-1.213,0.269-0.629,0.96-2.173,0.155,c-1.428-0.745-1.132-0.371-1.604-1.917c-0.378-1.24-1.474,0.133-1.474-1.839c0-0.409-1.664-2.493-2.095-2.59,c-1.368-0.824-0.68-1.83-1.138-3.109c-0.48-1.338,1.378-1.257,0.026-2.357c-0.312-0.254-0.44-1.673-0.595-2.176,c-0.217-0.704-2.269,0.259-2.897,0.259c-0.379,0-3.637-2.068-3.957-2.409c-1.099-1.172-3.878-2.807-5.505-2.943,c-1.392,0-2.308-1.51-3.531-1.51c-0.238,0.714,0.149,2.755-1.429,1.572l-0.306,0.163c-0.592,2.961-5.027-4.009-6.715-0.633,c-1.251,2.503-6.112,0.227-8.245-0.306c-0.217-1.084-0.338-4.082-1.796-4.082c-0.621,0-1.167-0.042-1.673-0.129l0,0l0.44,4.19,c-0.088,0.948,1.251,5.815,1.966,6.424c-0.014,0.049,1.422,2.678,1.422,3.627c0,2.799-0.193,3.253,2.147,5,c2.965,2.213,0.299,2.318,0,4.689c0.622,1.68-1.981,0.687-2.483,2.772c-0.218,0.906-0.177,1.753,0.491,2.513,c0.11,0.126,1.745,1.495,0.983,1.684c-0.115,0.467-3.774,2.331-4.397,2.643c-3.946,1.97-2.929,3.656-4.707,6.942,c-1.914,3.538-4.823,1.297-7.371,0.026l-10.164-5.259l-13.941-6.217l-11.898,7.823L357.141,131.213L357.141,131.213z", "name": "Razavi Khorasan"},"40": {"path": "M337.484,105.127c-2.603,0-4.637,6.755-5.276,8.73c-0.574,1.774-1.697,2.534-2.095,4.611c-0.323,1.688-0.022,3.997-0.181,5.777,c-0.425,4.993-11.137,1-14.82,1.477c-6.764,0.875-7.284,7.656-12.906,9.999c-1.299,0.345-2.688,1.319-4.061,0.933,c-1.748-0.492-3.578-1.065-5.457-0.907l-1.216,0.44l0,0l-3.828-2.564l-4.371-2.331l-2.173-1.295l0.724-2.228l2.172-1.503,l0.179-1.697l0,0c1.196-0.75,2.019-2.026,2.019-3.666c0-0.638,0.176-1.745-0.414-2.202c-1.087-0.843-0.724-0.593-0.724-1.969,c0-0.435-0.759-2.64-1.086-2.901c0-2.029-0.968-4.843-1.345-6.813c-0.135-0.703-0.238-1.46-0.319-2.246l0,0l9.653,0.876l1.143-1.082,l2.204,0.061l1.347-0.408l2.2-2.169c0.412-0.187,0.576,0.015,0.918-0.194c0.119-0.073,0.217-0.293,0.349-0.389,c0.192-0.137,1.65-0.816,1.733-0.816c0.619,0,1.253,0.631,1.914,0.79c0.856,0.206,1.546-0.597,1.94-1.217,c0.242-0.382,0.398-1.003,0.945-1.003c0.232,0,0.698-0.087,0.905-0.544c0.247-0.544,1.086-3.311,0.724-3.782,c-1.056-1.375,0.694-3.65,1.242-5.077c0.357-0.932,1.636-0.407,2.328-1.528c0.272-0.441,0.725-0.907,1.267-0.907,c0.954,0,0.761-0.768,1.345-1.192c0.556-0.403,1.164-1.653,1.68-2.21c0.38-0.41,1.046-1.019,1.513-1.296,c0.428-0.254,0.825,0.113,1.255-0.285c0.319-0.296,0.44-0.039,0.789-0.039c0.474,0,0.736-0.712,1.125-0.972,c0.516-0.344,1.31-0.667,1.915-0.613c0.614-1.376,2.826-1.114,3.609-2.314c1.267-1.939,1.284-0.075,2.123-0.755,c1.265-1.026,3.969-0.462,5.633-0.735c1.082-0.177,1.342-0.911,2.408-0.612c0.501,0.141,0.96-0.415,1.449-0.143,c0.393,0.218,0.758,0.524,1.143,0.755c2.828,1.515,5.116,0.388,8.021,0.388c0.638,0,1.55,0.68,2.053,0.853l0,0l-0.316,3.236,c-0.217,0.929-0.771,1.902-0.931,2.85c-0.159,0.946,0.091,1.844-0.233,2.798c-0.513,1.51-1.895,3.441-0.776,5.104,c0.822,1.22,2.872,1.077,3.724,2.228c1.106,1.491,0.172,3.851-1.63,4.196c-1.572,0.301-5.485-1.445-5.949,0.855l-1.707,0.674,c-0.873,0.395-1.448,1.025-1.448,2.021c0,0.461,0.014,0.71-0.259,1.088c-0.144,0.199-0.619,0.457-0.672,0.674,C338.53,104.117,337.759,104.714,337.484,105.127L337.484,105.127z", "name": "Golestan"},"41": {"path": "M337.484,105.127c0.225,2.342,2.438,1.913,3.078,3.989c0.353,1.148,0.71,3.203,2.354,2.901c0.857-0.157,2.954-0.161,3.466,0.7,c0.893,1.503-2.429,0.831-2.767,2.59c-0.218,1.138,2.136,1.597,1.371,3.627c-1.496,3.874,0.802,5.308,3.311,7.823,c1.006,1.009,2.256,2.464,3.518,3.057c1.325,0.622,3.015,0.001,4.423,0.881l0.905,0.518l0,0l1.5,0.518,c1.201,0,2.353-0.958,3.543-0.958c1.058,0,1.796-0.148,2.716,0.44c0.566,0.363,0.926,0.958,1.423,1.295,c0.319,3.567-1.947,5.103-2.923,8.29c-1.009,3.293,1.769,6.551,0.905,9.637c1.001,2.417,1.186,4.622,2.845,6.684,c1.243,1.545,3.459,2.404,4.966,3.808c3.294,3.07,6.463,5.144,1.474,9.067c-4.038,4.055-1.004,8.803-7.552,10.492,c-4.116,1.061-6.406,2.549-8.692,5.145c-3.741,2.67-6.647,6.623-9.853,9.828l-0.258,1.606l0,0l-3.983,5.596,c-1.651,3.307-4.342,7.019-5.225,10.621c-0.708,2.888-1.148,6.217-4.397,6.217c-1.517,0-5.844-0.069-7.035,0.57l0,0l-27.623-0.466,c-9.167,0-18.756-1.201-27.778-2.642c-6.502-1.039-15.626,0.091-19.064-6.419c-1.116-0.173-2.22-0.357-3.309-0.55,c-3.098-1.123-6.007-3.238-9.337-3.238c-3.639,0-8.011,1.021-11.432,0.13c-1.074-0.28-4.751-1.938-5.38-2.824,c-0.135-0.016-0.291-0.087-0.414-0.13l0,0l0.181-1.269c0.563-0.701,1.701-0.776,2.017-1.606c0.351-0.921,0.28-1.787,0.336-2.772,c0.119-2.102,1.907-4.245-0.181-5.855l0,0c0.304-0.535,0.796-1.103,1.009-1.658c0.158-0.412-0.104-1.25-0.104-1.735,c0-1.084,1.528-2.679,2.224-3.471c2.782-1.395-2.078-5.21-3.052-6.347c-2.83-3.305-0.104-4.809-0.104-8.082,c0-1.616-0.641-4.264,1.837-2.254c0.286,0.232,1.642,0.065,1.655,0.104c0.065,0,2.116,1.246,2.793,1.425,c1.039,0.274,2.131,1.494,2.897,2.202c1.981,1.831,3.511,2.278,6.078,1.451c2.163-0.539,4.442,1.847,6.518,2.28,c2.245,0.468,4.938-0.205,7.113-0.751c1.999-0.502,8.456-6.824,8.613-8.886c0.187-2.468-1.707-4.971-1.448-7.668l0,0l1.81-0.311,c1.38,0,2.757,0.573,3.802-0.725c1.208-1.501,1.914-1.191,3.595-0.958c3.958,0.548,5.743-0.296,7.734-3.73,c1.192-2.057,1.516-2.765,3.362-4.171c2.396-1.093,1.49-4.078,2.121-6.269c0.468-1.624,2.374-4.586,4.112-5.025,c0.018-0.072,0.307-0.231,0.31-0.233l3.983-1.425l0,0l1.216-0.44c1.879-0.158,3.709,0.415,5.457,0.907,c1.373,0.387,2.761-0.588,4.061-0.933c5.622-2.343,6.142-9.124,12.906-9.999c3.683-0.477,14.395,3.516,14.82-1.477,c0.159-1.779-0.142-4.089,0.181-5.777c0.398-2.077,1.521-2.837,2.095-4.611C332.847,111.882,334.881,105.127,337.484,105.127,L337.484,105.127z", "name": "Semnan"},"42": {"path": "M337.484,105.127c0.225,2.342,2.438,1.913,3.078,3.989c0.353,1.148,0.71,3.203,2.354,2.901c0.857-0.157,2.954-0.161,3.466,0.7,c0.893,1.503-2.429,0.831-2.767,2.59c-0.218,1.138,2.136,1.597,1.371,3.627c-1.496,3.874,0.802,5.308,3.311,7.823,c1.006,1.009,2.256,2.464,3.518,3.057c1.325,0.622,3.015,0.001,4.423,0.881l0.905,0.518l0,0l-0.44-5.88l11.898-7.823l13.941,6.217,l10.164,5.259c2.548,1.271,5.457,3.512,7.371-0.026c1.778-3.286,0.761-4.973,4.707-6.942c0.623-0.311,4.282-2.176,4.397-2.643,c0.762-0.188-0.872-1.558-0.983-1.684c-0.668-0.759-0.71-1.606-0.491-2.513c0.502-2.085,3.105-1.092,2.483-2.772,c0.299-2.371,2.965-2.476,0-4.689c-2.339-1.746-2.147-2.2-2.147-5c0-0.949-1.436-3.578-1.422-3.627,c-0.714-0.609-2.054-5.476-1.966-6.424l-0.44-4.19l0,0c-1.2-0.205-2.184-0.658-3.449-1.381c-1.145-0.52-2.025-1.039-3.021-1.674,c-0.942-0.6-1.756,1.25-2.306-0.163c-0.25-0.642-0.753-1.097-1.408-0.918c-0.737,0.2-0.807-0.832-2.041-0.653,c-0.925,0.134-3-0.819-3.408-0.674c-0.373,0.133-1.394,0.838-1.694,0.755c-0.549-0.152-3.957-1.688-4.102-2.123h-0.041,c-0.314-0.941-0.225-1.184-0.225-2.265c0.407-1.356-0.181-3.258-1.429-3.98c-0.576-0.334-0.687-0.752-0.653-1.408,c0.06-1.151-2.582-5.028-3.817-2.939c-1.07,1.811-1.805,2.905-3.857,2.796c-1.212-0.064-0.66-1.075-1.572-1.184,c-1.355-0.162-2.4,0.134-3.755-0.367c-0.762-0.282-2.692-2.33-3.061-2.102c-1.151,0.71-1.043,0.768-2.429,0.898,c-0.573,0.115-0.897,0.939-1.51,0.939c-0.506-1.519-2.888-1.266-4.388-0.959c-1.57,0.321-2.677,1.887-3.674,3.082,c-0.232,0.278,0.322,2.216,0.265,2.898c-0.111,1.337-2.017,0.666-3.184,1.184c-0.064,0.028-0.158,0.015-0.274-0.025l0,0,l-0.316,3.236c-0.217,0.929-0.771,1.902-0.931,2.85c-0.159,0.946,0.091,1.844-0.233,2.798c-0.513,1.51-1.895,3.441-0.776,5.104,c0.822,1.22,2.872,1.077,3.724,2.228c1.106,1.491,0.172,3.851-1.63,4.196c-1.572,0.301-5.485-1.445-5.949,0.855l-1.707,0.674,c-0.873,0.395-1.448,1.025-1.448,2.021c0,0.461,0.014,0.71-0.259,1.088c-0.144,0.199-0.619,0.457-0.672,0.674,C338.53,104.117,337.759,104.714,337.484,105.127L337.484,105.127z", "name": "North Khorasan"},"43": {"path": "M444.147,339.903l-3.027,12.227l-1.19,9.326c-0.282,1.952-0.828,3.059-1.396,4.922c-1.055,3.458-1.247,4.156,2.121,6.062,c1.804,1.021,0.922,5.156,1.293,7.046c-0.426,2.423,0.592,4.955-0.155,7.616c-0.587,2.089-3.388,4.112-3.388,6.191,c0,2.785,0.33,5.482,1.914,7.745c-0.041,0,0.297,1.091,0.233,1.425c-0.676,3.491-8.794,6.688-11.897,7.461,c-0.644,0.16-3.588,0.974-2.173,2.15c1.863,1.547,4.026,1.193,4.733,3.938c0.723,2.803-1.26,3.829-3.13,5.414l-1.061,1.192,c0,6.92,1.652,13.112-1.19,19.739c-1.174,2.668-2.626,9.347-1.5,12.15c0.946,2.356,0.414,3.369,0.414,5.751,c0,2.643,1.734,3.138,3.336,4.74c1.439,1.25,1.566,5.459-0.207,6.399c-1.267,0.672,1.609,2.62,1.552,3.627,c-0.04,0.704-1.984,0.734-2.276,1.865c-0.822,3.189,2.34,3.672,2.043,5.518c-0.226,1.409-3.004,2.734-2.561,4.792l-0.052,2.357,l-0.892,1.552l0,0c-0.363,0.678-0.906,1.191-0.815,2.085c0.138,1.35,0.538,0.798,1.448,1.23c0.455,0.217,0.485,0.901,0.737,1.296,c1.051,1.641,3.309,2.18,4.41,3.938c0.435,0.491,0.905,0.898,1.034,1.556c0.245,1.255-0.29,1.526,0.957,2.202,c0.517,0.281,1.246,0.447,1.19,1.166c-0.094,1.21,0.734,1.207,1.112,2.254c0.276,0.762,0.951,2.677,0.951,3.504l0,0,c0.978-0.299,1.97-0.628,2.954-0.861c5.065-1.203,5.112,2.658,9.234,2.15c0.753-0.219,4.674-0.268,5.276,0.104,c0.454,0.281,0.944,1.038,1.423,1.425c0.142,0.115,1.075-0.674,1.448-0.777c3.021-0.838,4.624,0.379,6.932,1.269,c0.683,0.263,0.823-1.251,1.526-1.684c2.061-1.269,1.901,1.338,3.362,1.658c0.624,0.137,2.769,0.872,3.13,0.622,c0,0-1.371-1.378-1.371-2.383c0-1.802,3.09-2.096,4.319-1.839c1.371,0.286,2.676,2.711,1.474,3.108,c1.237,1.244-0.647,2.435,2.949,2.435c2.861-0.279,8.055,2.128,11.147,2.564c1.518,0.215,1.46,1.122,2.431,1.891,c2.043,1.617,9.13,3.197,9.13-0.052c0-2.577,2.02-1.763,3.605-1.664l0,0l1.024-3.827l0.517-10.906,c0.404-0.575,0.647-0.432,0.647-1.14c-0.063-0.021,1.397-1.15,1.397-1.839c0.043-0.014,0.057-0.052,0.129-0.052,c0.069-0.204,1.114,0.34,1.164,0.492c0.941,0,1.422-0.939,1.862-1.529l-0.621-2.357c-0.257-0.975,0.916-0.862,1.19-1.477,c0.419-0.942-1.469-1.077-1.552-2.254c-0.056-0.803,0.535-1.047,0.776-1.684c0.191-0.505-0.269-1.093-0.078-1.736,c0.898-1.631,0.773-4.105,1.474-5.829c0.232-0.571,3.217-0.458,3.88-2.461c1.215,0,5.431,3.135,5.431,1.14,c0-0.594,0.198-1.401,1.009-1.088c0.627,0.242,0.285-4.274,0.931-4.274c0.544-1.644,1.234-2.836,3.388-2.616,c0.877,0.09,0.647-1.142,1.655-1.399c0.735-0.188,2.196,0.186,3.104,0.103c1.647-0.039,1.818-1.088,3.207-1.088,c0.19,0.584,2.058-0.806,2.276-1.217c0.418-0.79,4.329,0.53,5.458,0.104c1.103-0.418,8.675,0.749,7.138-1.813,c-0.245-0.408,0.543-2.76,0.077-3.912c-0.407-1.007,0.686-0.814,1.345-0.881c1.012-0.103-0.026-0.991-0.026-1.58,c0.072-0.024,0.251-0.205,0.336-0.233v-0.078l0.155-2.15l-0.026-3.756c0.52-1.282,1.3-0.554,2.069-1.166,c0.376-0.299-1.193-3.503-1.759-3.549c-1.674-0.137-0.931,0.041-2.095-0.984c-0.423-0.372-1.296,0.635-1.81,0.803,c-0.724,0.236-0.975-0.244-1.629-0.207c-0.936,0.053-1.685,0.907-2.871,0.907c-0.44,0-0.825,0.233-1.241,0.233,c-0.53,0-0.588-0.516-0.905-0.596c-0.023-0.092-0.118-0.057-0.181-0.103c-0.701,0.42-0.807,0.711-1.655,0.544,c-0.071-0.289-2.205-1.051-1.474-1.658c2.809-2.333-0.882-1.798,0.569-3.653c1.26-1.61,1.293-2.915,1.293-4.87l-0.414-7.953,l-1.94-8.6l0.88-8.341l-4.5,0.777c-2.099,0.173-2.205-0.202-3.284-1.813c-0.574-0.857-0.693-2.445-1.811-2.616,c-1.164-0.178-1.307-0.757-2.328-1.192c-0.831-0.354-2.33-0.655-3.233-0.829c-1.409-0.404-2.955-1.347-4.345-1.347,c-1.458,0-2.213-0.961-3.492-1.217c-0.806-0.161-2.04-0.081-2.664-0.673c-0.743-0.706-1.159-2.216-2.069-2.668,c-2.074-1.03-1.884-1.599-3.078-3.549c-0.299-0.489-1.801-0.856-2.431-1.736l-2.845-5.336c-0.141-0.719-0.448-1.798-1.267-1.891,c-1.195-0.136-0.432-0.984-0.103-1.399c0.4-0.506-0.604-0.737-0.672-1.036c-0.173-0.762,0.043-1.321-1.086-1.321,c-1.279,0-0.932-1.465-0.724-2.28c0.204-0.797-1.499-1.73-1.785-2.72c-0.213-0.738,0.517-0.968,0.233-1.71,c-0.222-0.578-0.212-1.488-0.388-2.021c-0.049,0-0.064,0.016-0.078-0.026c-0.26,0-0.457,0.103-0.724,0.103,c-0.123-0.372-0.677-0.425-0.698-1.088l-3.699-3.756l-8.509-10.854l0,0l25.89-31.371c-0.616-1.008,1.498-1.558,0.983-2.901,c-0.198-0.516-0.29-1.307-0.432-1.992l1.413-1.375l-0.181-3.963l-0.828-0.933l-0.207-2.124l-0.672-0.622l-0.052-3.471l-1.94-2.435,l-5.638-0.751l-11.505-1.794l0,0c0,1.14,0.876,2.604,0.876,3.763c0,1.028-0.49,1.696-1.164,2.409,c-0.523,0.555-0.605,1.567-1.112,1.969c-1.498,4.51-2.897,7.789-2.897,12.616c0,1.108,0.314,2.971,0.026,3.964,c0,1.973,0.361,3.519,0.646,5.388c0.136,0.889,0.58,3.786,1.061,4.43c-0.384,0.517-0.097,0.72-0.879,1.088,c-0.374,0.176-1.17,0.207-1.604,0.207c-1.095,0-2.285,0.088-3.337-0.181c-1.009-0.259-1.1-1.024-1.836-1.554,c-1.392-1.571-2.241-3.521-3.13-5.388c-0.905-1.899-2.542-1.796-3.828-3.083c-1.089-1.089-1.152-1.511-2.742-1.865,c-1.205-0.269-3.42-0.665-3.802-2.176c-1.545-0.39-2.357,1.444-3.957,1.295l-12.104,3.394l-2.897,0.44L444.147,339.903,L444.147,339.903z", "name": "Sistan&Baluchestan"},"44": {"path": "M298.791,366.275l0.259,1.684l2.923,5.777c-0.111,1.703,2.554,4.288,4.061,4.663c3.502,0.871,7.316-1.335,8.82,3.316,c1.181,3.653,1.649,7.247,3.44,10.828l0.983,1.684l0,0c1.398-0.75,5.471-0.186,6.751,0.699c2.265,1.568,4.853,6.44,7.656,5.984,c3.818-0.622,6.815-6.372,10.242-6.372c1.981-0.575,2.706,2.196,2.638,3.627c-0.134,2.807,0.531,5.67-0.026,8.342,c-0.628,3.011-2.267,4.882-0.285,7.668c0.323,2.5,8.182,7.464,10.604,7.823c3.551,0.527,6.755-1.85,8.897-4.507,c3.721-4.615,6.998-2.555,7.242,2.824c0.054,1.189,0.255,6.373,1.914,6.373c2.812,0,2.03-0.049,3.362,2.616l1.604,2.202,c0.531,0.729,2.942,2.696,2.095,3.653c-0.294,0.332-2.889,1.835-1.241,2.409c2.485,0.866,2.463,1.836,2.69,4.43l0.595,6.813,c-0.436,4.476-0.598,8.603,4.061,9.507c2.401,0.466,5.925,2.582,7.216,4.637c1.63,2.592,4.522-6.142,8.251-1.58,c1.164,1.423,3.195,2.45,4.164,3.912c0.238,0.359,0.775,2.229,0.258,2.487c-0.434,0.216-1.156-0.971-1.94-0.777,c-0.574,1.762,0.885,3.455-0.647,5.207c-0.686,0.715-0.166,2.013-0.776,3.005c-0.453,0.737-0.605,4.277-0.336,5.026,c0.272,0.758-0.396,2.525-0.853,3.212c-1.156,1.737,1.033,0.425,1.604,0.285c2.062-0.508,3.648,1.834,5.38,0.855,c0.345-0.195,1.341-1.639,1.836-0.829c0.579,0.946,1.098,0.917,2.043,1.269c0.376,0,2.433-0.58,2.095,0.44,c-0.302,0.911-0.533,0.728,0.026,1.502c0.436,0.603,0.291,3.427,1.138,3.368c0.509-0.036,0.857-0.596,1.5-0.596,c0.736,0,1.955,0.986,2.328-0.233c0.426-1.392,1.057-1.31,2.147-0.829c1.018,0.45,1.442,1.692,2.186,2.432l0,0l0.892-1.552,l0.052-2.357c-0.444-2.059,2.334-3.383,2.561-4.792c0.296-1.845-2.866-2.328-2.043-5.518c0.292-1.131,2.236-1.161,2.276-1.865,c0.057-1.007-2.819-2.955-1.552-3.627c1.773-0.94,1.646-5.149,0.207-6.399c-1.602-1.602-3.336-2.097-3.336-4.74,c0-2.382,0.533-3.395-0.414-5.751c-1.126-2.802,0.326-9.481,1.5-12.15c2.842-6.627,1.19-12.819,1.19-19.739l1.061-1.192,c1.869-1.585,3.852-2.612,3.13-5.414c-0.708-2.745-2.871-2.39-4.733-3.938c-1.415-1.176,1.529-1.99,2.173-2.15,c3.104-0.772,11.221-3.97,11.897-7.461c0.065-0.334-0.274-1.425-0.233-1.425c-1.584-2.264-1.914-4.961-1.914-7.745,c0-2.079,2.802-4.102,3.388-6.191c0.747-2.661-0.271-5.193,0.155-7.616c-0.371-1.891,0.511-6.025-1.293-7.046,c-3.368-1.906-3.176-2.604-2.121-6.062c0.569-1.863,1.114-2.97,1.396-4.922l1.19-9.326l3.027-12.227l0,0l-5.458-8.652l-5.845-9.844,l-19.76-9.326l-12.932-6.424l-6.104-2.176l0,0l-7.785-3.471c-3.533,0-7.423-3.889-10.708-5.052,c-3.807-1.348-6.55-3.338-10.785-3.601l-2.509-0.156l0,0c-0.091,0-0.076,0.035-0.129,0.052c0,1.654-3.957,3.954-5.276,3.316,c-2.036,1.021-3.243,2.305-4.785,3.938c-1.384,1.466-3.182,2.129-4.888,3.083c-3.035,1.697-7.507,2.231-10.164,4.378,c-1.909,1.542-1.038,3.974-1.449,6.165c0,3.25,1.695,11.048-3.207,12.072c-3.162,0.66-9.996,1.105-12.88-0.389,c-4.115-0.452-8.991,3.262-12.622,2.565c-4.096-0.786-5.901,1.244-7.889,4.87c-0.388,0.708-1.611,5.959-0.776,6.165,c0.039,0.27,0.901,1.331,1.19,1.373c0.57,1.428,1.958,2.225,1.837,4.119c0.497,1.361-0.012,4.509,1.034,5.207,c1.747,1.167,2.46-0.234,2.328,2.668c-0.186,4.092-2.979,7.959-0.853,11.994c1.458,2.767,0.491,1.793-2.043,2.28,C300.658,365.255,299.682,365.797,298.791,366.275L298.791,366.275z", "name": "Kerman"},"45": {"path": "M356.623,456.756c-0.599-0.279-1.332,0.137-1.332,0.842c0,0.331,0.126,0.688,0.414,0.881c0.301,0.201,0.581,0.104,0.918,0.104,c0.006-0.024,0.346-0.207,0.401-0.246c0.153-0.111,0.362-0.376,0.362-0.57c0-0.158-0.094-0.79-0.298-0.79L356.623,456.756,L356.623,456.756z M262.684,466.29c-0.279,0.065-1.269-0.738-1.513-0.933c-0.111-0.089-0.637-0.588-0.556-0.751,c0.042-0.085,0.56,0.13,0.647,0.155c1.065,0.306,2.339,0.458,3.44,0.674c0.475,0.093,2.612,0.106,2.612,0.712,c-1.138,0.363-2.346,0.389-3.569,0.389L262.684,466.29L262.684,466.29z M274.361,470.772c-0.505,0.118-1.321-0.206-1.177-0.803,c0.066,0,0.251-0.06,0.323-0.078c0.102-0.026,0.22,0.056,0.297,0.091c0.353,0.157,0.985-0.069,1.306,0.155,c0.504,0.351,0.054,0.595-0.414,0.635H274.361L274.361,470.772z M283.556,475.72c-0.556,0.126-1.299-0.635-1.397-1.14,c-0.133-0.689,0.726-0.755,1.151-0.855c1.069-0.251,2.033,0.273,2.587,1.179c0.724,1.183-0.839,0.946-1.565,0.946L283.556,475.72,L283.556,475.72z M314.775,496.6c-0.235-0.126-0.429-0.501-0.285-0.752c0.085-0.147,0.204-0.372,0.401-0.401,c0.224-0.034,0.519,0.387,0.595,0.557c0.138,0.309-0.249,0.513-0.504,0.609L314.775,496.6L314.775,496.6z M300.058,495.395,c-0.274,0-0.576-0.139-0.699-0.389c-0.1-0.203,0.293-0.308,0.427-0.375c0.238-0.119,0.571-0.439,0.828-0.259,c0.086,0.06,0.082,0.288,0.09,0.402c0.004,0.061,0.159,0.36,0.207,0.376c0,0.039,0.013,0.083,0.013,0.13,c-0.069,0.023-0.152,0.105-0.246,0.13c-0.133,0.035-0.282,0.085-0.414,0.103L300.058,495.395L300.058,495.395z M299.553,483.504,c-0.084-0.251-0.349-0.602-0.349-0.894c0-0.72,1.083-0.778,1.28-0.181c0.086,0.261-0.142,0.674-0.142,0.971,c0,0.256,0.008,0.44-0.052,0.673c-0.147,0-0.517-0.1-0.556-0.259L299.553,483.504L299.553,483.504z M329.518,469.169,c-0.052,0.155-3.32,1.446-3.698,1.477c-0.681,0.056-1.802,0.455-2.431,0.699c-0.93,0.361-1.393-0.414-1.966-0.414,c0,0.929,0.439,2.035,0.543,2.953c0.151,1.323,1.397-0.567,1.681-0.544c3.119,0.256,6.097-0.781,9.104-2.642,c1.375-0.851,7.229-3.112,7.733-1.062c-2.508,0.83-2.318,4.07-0.052,0.933c1.353-1.873,3.418-2.591,4.966-3.989,c0.909-0.822,1.946-3.85,2.949-4.015c0.67-0.11,3.512-1.361,1.604-1.995c-4.017-1.335-6.343,2.251-9.958,2.435,c-2.146,0.109-5.885-3.097-4.138,0.803c0.888,1.982-0.965,2.012-1.578,0.414c-0.188-0.49,0.283-0.999-0.104-1.632,c-0.156-0.256-2.774,3.013-1.371,3.756c2.682,1.422-1.397,1.363-2.561,2.383L329.518,469.169L329.518,469.169z M353.455,463.453,l0.556-0.104c0.368-0.185,0.988,0.478,0.88,0.829c-0.148,0.48-0.476,0.564-0.853,0.816c-0.657,0.439-2.32,1.012-1.849-0.428,C352.391,463.946,352.964,463.716,353.455,463.453L353.455,463.453z M436.719,510.339c-2.417,0.739-4.756,1.304-6.719-0.162,l-4.681-3.497c-0.451-0.336-8.991-2.117-9.776-1.995c-0.6,0.118-2.91,0.634-3.259,0.492c-1.109-0.452-1.151-1.323-2.56-1.036,c-1.345,0.274-5.55,2.675-6.828,1.969c-0.449-0.248-2.982-3.426-2.923-3.575c-0.807-0.807-1.606-0.653-2.638-0.026,c-0.671-0.404-1.79,0.649-2.354,0.881c-0.95,0.39-0.57-0.848-0.414-1.684c0-3.6-13.684,0.68-14.07-5.311,c-0.072-1.126-1-3.83-2.224-4.015c-2.075-0.314-0.068-4.794-0.44-5.621c-0.578-1.286-2.357-2.487-2.483-3.911,c0-0.697-0.827-1.663-0.827-1.943c-0.367-0.12-0.982-3.789-0.75-4.482c0.6-1.796,0.19-2.961,0.052-4.793,c-0.277-3.659-2.523-6.086-3.879-9.222c-0.966-1.602,0.902-2.953-1.681-2.953l-0.388-1.943c-0.251-1.257-0.965-0.098-1.552-1.528,c-0.366-0.892-4.58-1.58-5.613-1.58c-1.546,0-3.944,0.359-5.328,0c-0.487-0.126-1.51-0.903-1.888-0.803l-5.509,1.451,c-1.75,0.461-1.731,0.273-2.794,0.881c-0.146,0.591-1.522,1.542-2.147,1.347c-0.761-0.237-1.335,1.09-1.785,1.58,c-1.215,1.324-4.426-0.155-4.991,1.554c-1.801,0-3.017-1.018-4.604,0.57c-1.279,1.279-1.125,2.779-1.681,4.326,c-1.407,3.912-6.394,0.768-8.82,1.71c-0.472,0-2.018,3.057-2.457,1.709c-1.471,0.372-2.391,2.517-3.362,2.591,c-2.224,0.168-3.137,2.022-4.992,3.057c-2.592,1.446-7.227,2.477-8.819-0.414c-1.5-2.724-4.019,0.412-5.897-2.409,c-0.7-1.052-1.598-3.344-2.897-2.772c-2.341,1.032-2.968,0.045-5.121-0.155c-3.448-1.733-2.523,0.337-5.25,0.337,c-1.931,0-3.723-0.281-5.069,0.725c-1.088-1.626-4.126-2.81-5.613-4.145c-2.2-1.975-0.74-4.345-3.647-5.311l-5.302-1.761,c-1.376-0.457-6.265-2.022-7.138-2.979c-1.067-0.848-4.529-1.827-5.044-2.668c-0.769-1.257-2.169-2.588-3.725-2.901,c-0.03-0.123-0.127-0.28-0.268-0.454l0,0l1.225-1.308c0.749-0.072,1.351-0.337,2.147-0.337c1.169,0,4.56,0.378,5.199-0.907l0,0,l1.216,0.7c0.954,1.678,0.618,2.842,2.897,3.342c1.894,0.416,3.954-0.846,5.794-0.389c1.798,0.448,1.712,2.079,3.078,2.72,c1.157,0.543,3.719,0.533,5.018,0.155c3.325,0.039,7.122,2.662,9.518,0.259c0.761-0.763,2.178-0.067,2.742-0.7,c1.055-1.185-1.138-2.462-0.698-3.264c0.238-0.433,1.127-1.347,1.009-1.813c-0.182-0.713-0.761-1.269-0.905-2.021,c-0.319-1.661,3.822-2.643,4.914-2.746l9.078-0.855c1.791,0.895,2.09,1.549,3.879,0.311c1.318-0.912,3.059-1.467,4.63-1.166,c2.733,0.525,5.555,3.802,8.613,2.072c1.453-0.822,3.08-3.739,2.819-5.362c1.148-1.924,1.081-2.868,3.233-3.419,c1.583-0.406,1.438-2.268,2.923-2.409c2.375-0.226,7.938,1.913,6.932-3.342c-0.551-2.876-3.867-3.036-4.371-4.948,c-0.273-1.033,1.545-7.677,2.147-8.549c2.082-5.744-6.209-9.187-9.492-12.719c-1.823-1.961-1.126-1.98,0.879-2.487,c0.253-1.025-0.121-1.679-0.44-2.668l-1.267-3.393l0,0c1.398-0.75,5.471-0.186,6.751,0.699c2.265,1.568,4.853,6.44,7.656,5.984,c3.818-0.622,6.815-6.372,10.242-6.372c1.981-0.575,2.706,2.196,2.638,3.627c-0.134,2.807,0.531,5.67-0.026,8.342,c-0.628,3.011-2.267,4.882-0.285,7.668c0.323,2.5,8.182,7.464,10.604,7.823c3.551,0.527,6.755-1.85,8.897-4.507,c3.721-4.615,6.998-2.555,7.242,2.824c0.054,1.189,0.255,6.373,1.914,6.373c2.812,0,2.03-0.049,3.362,2.616l1.604,2.202,c0.531,0.729,2.942,2.696,2.095,3.653c-0.294,0.332-2.889,1.835-1.241,2.409c2.485,0.866,2.463,1.836,2.69,4.43l0.595,6.813,c-0.436,4.476-0.598,8.603,4.061,9.507c2.401,0.466,5.925,2.582,7.216,4.637c1.63,2.592,4.522-6.142,8.251-1.58,c1.164,1.423,3.195,2.45,4.164,3.912c0.238,0.359,0.775,2.229,0.258,2.487c-0.434,0.216-1.156-0.971-1.94-0.777,c-0.574,1.762,0.885,3.455-0.647,5.207c-0.686,0.715-0.166,2.013-0.776,3.005c-0.453,0.737-0.605,4.277-0.336,5.026,c0.272,0.758-0.396,2.525-0.853,3.212c-1.156,1.737,1.033,0.425,1.604,0.285c2.062-0.508,3.648,1.834,5.38,0.855,c0.345-0.195,1.341-1.639,1.836-0.829c0.579,0.946,1.098,0.917,2.043,1.269c0.376,0,2.433-0.58,2.095,0.44,c-0.302,0.911-0.533,0.728,0.026,1.502c0.436,0.603,0.291,3.427,1.138,3.368c0.509-0.036,0.857-0.596,1.5-0.596,c0.736,0,1.955,0.986,2.328-0.233c0.426-1.392,1.057-1.31,2.147-0.829c1.018,0.45,1.442,1.692,2.186,2.432l0,0,c-0.363,0.678-0.906,1.191-0.815,2.085c0.138,1.35,0.538,0.798,1.448,1.23c0.455,0.217,0.485,0.901,0.737,1.296,c1.051,1.641,3.309,2.18,4.41,3.938c0.435,0.491,0.905,0.898,1.034,1.556c0.245,1.255-0.29,1.526,0.957,2.202,c0.517,0.281,1.246,0.447,1.19,1.166c-0.094,1.21,0.734,1.207,1.112,2.254C436.043,507.597,436.719,509.512,436.719,510.339,L436.719,510.339z", "name": "Hormozgan"},"46": {"path": "M474.094,222.605l1.452,8.083l-0.828,2.694l0.103,3.212l0.595,1.632l3.828,1.969l5.949,0.026l0.957,0.751l-0.388,0.466l-1.345-0.207,l-0.75,0.725l0.233,2.305l-1.242,0.829l-5.354,5.751l-1.631,3.627l1.526,4.119l1.862,7.72l0.828,4.015l2.612,5.855l0.879,6.684l0,0,l1.138,3.73l-1.267,4.249l-0.75,1.114l0.414,1.684l-0.336,1.166l-0.155,7.564l0,0l1.19,8.316l7.427,1.159l0,0,c0,1.14,0.876,2.604,0.876,3.763c0,1.028-0.49,1.696-1.164,2.409c-0.523,0.555-0.605,1.567-1.112,1.969,c-1.498,4.51-2.897,7.789-2.897,12.616c0,1.108,0.314,2.971,0.026,3.964c0,1.973,0.361,3.519,0.646,5.388,c0.136,0.889,0.58,3.786,1.061,4.43c-0.384,0.517-0.097,0.72-0.879,1.088c-0.374,0.176-1.17,0.207-1.604,0.207,c-1.095,0-2.285,0.088-3.337-0.181c-1.009-0.259-1.1-1.024-1.836-1.554c-1.392-1.571-2.241-3.521-3.13-5.388,c-0.905-1.899-2.542-1.796-3.828-3.083c-1.089-1.089-1.152-1.511-2.742-1.865c-1.205-0.269-3.42-0.665-3.802-2.176,c-1.545-0.39-2.357,1.444-3.957,1.295l-12.104,3.394l-2.897,0.44l-4.216,1.347l0,0l-5.458-8.652l-5.845-9.844l-19.76-9.326,l-12.932-6.424l-6.104-2.176l0,0l-7.785-3.471c-3.533,0-7.423-3.889-10.708-5.052c-3.807-1.348-6.55-3.338-10.785-3.601,l-2.509-0.156l0,0c-0.065-0.46-2.742-3.322-3.026-3.782c-0.378-0.612-0.691-1.287-1.035-1.917c-0.68-1.245-1.572-2.052-2.69-2.953,c-2.147-1.732-4.138-6.948-4.138-9.637c-2.25-2.825-3.331-5.856-6.104-8.238c-2.268-1.949-5.01-5.311-6.621-7.875l-3.776-6.01,c-1.589-2.528-4.561-4.692-6.466-7.202l0,0c0-8.078-1.04-15.524-1.81-23.522l0,0c1.191-0.64,5.518-0.57,7.035-0.57,c3.249,0,3.689-3.329,4.397-6.217c0.883-3.602,3.574-7.314,5.225-10.621l3.983-5.596l0,0c5.691,0,10.888,2.374,17.277,1.347,c5.401-0.868,4.617-7.748,9.725-9.067c6.543-1.689,14.046-0.157,14.949,7.72c0.271,2.362-0.23,7.063,2.379,8.134,c2.921,1.2,2.47,4.386,1.19,6.632c-1.142,1.048-0.904,4.496,0.362,5.44c3.082,2.298,6.276-0.777,9.466-0.777,c1.2,0,2.271,0.77,2.949,1.71c0.444,0.615,2.561,2.072,2.535,2.176c2.966,1.111,9.807-0.762,13.423-0.311,c1.708-0.158,3.346,0.518,5.483,0.052c1.669-0.364,3.564-0.829,5.276-0.829c2.427,0,1.829,2.266,4.63,1.684l3.362-0.699,c1.19-0.248,1.962-1.252,3.181-1.373c2.703,0,3.841,1.219,6.311,1.865c4.416,1.154,8.082,3.714,12.337,4.974,C465.769,226.836,469.925,222.279,474.094,222.605L474.094,222.605z", "name": "South Khorasan"}},"height": 500,"width": 550});
Index: public/vendors/vmap/maps/jquery.vmap.iraq.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.iraq.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.iraq.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1 @@
+jQuery.fn.vectorMap('addMap', 'iraq', {"width": 612, "height": 400, "paths": {"1": {"path": "M125.762 71.4976l-0.7938 0.2467c-0.4965,0.1542 -0.8363,-0.0117 -1.0584,0.5666 -0.1883,0.4906 -0.1481,0.7334 -0.4745,1.1972 -0.3726,0.5293 -1.0559,0.7039 -0.9854,1.4805 0.0839,0.9234 0.3575,1.277 -0.4653,1.9465 -0.1845,0.3443 -0.4324,1.6622 -0.7756,1.7546 -0.2969,0.08 -1.0177,-0.6974 -1.177,-0.9413 -0.2237,-0.3423 -0.8904,-0.3658 -1.2592,-0.2924 -0.5173,0.1031 0.1802,0.5088 -0.0912,0.8042 -0.291,0.3169 0.2352,0.4444 0.146,0.8042 -0.0571,0.23 -0.4987,0.3691 -0.5201,0.5575 -0.0197,0.1743 0.1648,0.4201 0.1095,0.5209 -0.2754,0.5025 0.1518,0.6887 -0.0274,1.1971 -0.1255,0.3564 -0.2291,0.4782 -0.3102,0.8865 -0.0869,0.438 0.227,0.288 0.2737,0.4935 0.0558,0.245 0.0365,0.8223 0.0365,1.1058 0,0.4783 -0.6858,0.6319 -0.9854,0.9321 -0.107,0.2398 -0.357,0.4721 -0.511,0.6946 -0.1863,0.2694 -0.6754,0.2879 -0.9763,0.53 -0.3483,0.2804 -0.4053,1.2259 -0.7117,1.6358 -0.3265,0.437 -0.3284,1.1217 -0.3284,1.6358 0.926,0.1876 1.2041,-0.1586 1.8157,0.7037 0.4652,0.6561 1.388,0.7405 0.958,1.709 -0.0054,0.1713 0.0059,0.0488 -0.0091,0.1096 -0.1854,0.0927 -0.886,1.5501 -1.031,1.8095 -0.3903,0.6981 -0.0347,1.0128 0.3193,1.5444 0.1069,0.1607 -0.0582,2.2243 -0.2098,2.3761 -0.3034,0.3041 -0.8158,-0.0796 -1.0858,0.2467 -0.2167,0.262 -0.0935,0.7108 -0.2281,1.0784 -0.0758,0.222 -0.2187,0.3645 -0.365,0.5392 -0.1889,0.2254 -0.1638,0.6285 -0.1095,0.8956 0.0549,0.2705 0.2976,0.5049 0.4745,0.7036l0.265 0.393 0 0 -1.36 1.2794 0 0 -1.2135 -1.5901c-0.2411,-0.2632 -0.5015,-0.6908 -0.7299,-0.987 -0.2033,-0.2637 -0.5139,-0.4731 -0.7391,-0.7219 -0.5148,-0.5688 -0.6338,-0.7526 -0.6113,-1.5262 0.0143,-0.4901 -0.1625,-0.606 -0.3924,-0.9961 -0.3375,-0.5724 -0.5831,-0.6104 -1.1765,-0.7951l-4.5986 -0.0365 -1.2229 -0.9139 -5.4928 0 -7.7738 -9.7236 0.0182 -6.1046 -2.6642 3.0706 -5.8395 -4.0028 -0.4927 -7.9506 0 0 0 -3.6555 10.3833 -0.3473 -3.23 -5.0628c0.1264,-0.642 -0.2558,-1.6619 -0.2558,-2.376 0,-1.3906 0.9994,-2.1322 1.9343,-3.0341 0.4386,-0.4232 0.9549,-0.9725 1.5238,-1.1972 0.6425,-0.2539 1.5209,-0.026 2.2354,-0.265 0.594,-0.1945 1.1876,-0.4951 1.7519,-0.7768 0.4584,-0.2289 0.9803,-0.3038 1.4416,-0.5117l0.6569 -0.0822 0 0c0.0481,0.6366 0.0298,0.9099 -0.2098,1.5169 -0.1298,0.3291 -0.2778,0.6375 -0.3649,0.9779 -0.0307,0.1198 -0.2079,0.4587 -0.1095,0.5574 0.2255,0.2265 0.7802,0.2831 1.0858,0.4296 0.341,0.1634 0.2554,0.4876 0.2554,0.8224l0 0 -2.9559 1.0693 2.5183 6.1594c0.5629,0.3712 1.97,0.6815 2.6457,0.8134 1.3177,0.2574 2.4226,1.0733 3.6315,1.6084 1.2722,0.5632 1.6817,1.3643 2.6095,2.2938 0.6821,0.6357 1.1333,1.6724 2.2081,1.6724 0.2645,0 0.9659,-0.1084 1.1223,0.0822 0.971,1.1839 2.6094,1.9096 3.6041,3.0706 0.5995,0.6996 0.6633,0.3511 1.0857,-0.4204 0.4688,-0.856 0.6123,-2.1303 1.1406,-2.8512 0.3185,-0.2095 0.7264,-1.2365 0.8942,-1.6084 0.3772,-0.8361 0.8828,-1.4374 0.9763,-2.3761 0.0566,-0.569 -0.151,-1.5042 0.7025,-1.6449l0 0c0.0891,0.1455 0.2149,0.2746 0.292,0.4295 0.0314,0.0257 0.0411,0.0388 0.0639,0.0731 0.4656,0.2999 0.522,0.732 1.1861,0.8407 0.8036,0.1316 1.7691,0.0731 2.5913,0.0731 0.4239,0 0.8071,0.0259 1.2227,0.0823 0.5187,0.0703 0.7939,0.3667 1.2226,0.594 0.1945,0.2877 0.5056,0.5286 0.6479,0.8499 0.1827,0.4122 0.3179,0.8694 0.1642,1.316 -0.1378,0.4001 -0.3102,1.0892 -0.3102,1.5079l0.0182 0.5026 0 0z","name": "salah ad-Din"},"2": {"path": "M118.664 65.2285c0.0891,0.1455 0.2149,0.2746 0.292,0.4295 0.0314,0.0257 0.0411,0.0388 0.0639,0.0731 0.4656,0.2999 0.522,0.732 1.1861,0.8407 0.8036,0.1316 1.7691,0.0731 2.5913,0.0731 0.4239,0 0.8071,0.0259 1.2227,0.0823 0.5187,0.0703 0.7939,0.3667 1.2226,0.594 0.1945,0.2877 0.5056,0.5286 0.6479,0.8499 0.1827,0.4122 0.3179,0.8694 0.1642,1.316 -0.1378,0.4001 -0.3102,1.0892 -0.3102,1.5079l0.0182 0.5026 0 0c0.4194,0.21 0.8462,0.4882 1.3322,0.3198 1.0067,-0.3487 0.9951,-1.352 1.7792,-0.0457 0.6421,1.0696 1.0296,-0.5466 1.4872,-0.0182l0.7756 0.8956c0.1519,0.1753 -0.0726,0.5719 -0.1277,0.7859 -0.1691,0.6557 0.6843,0.1998 0.6843,0.7676 0,0.5248 0.0119,0.8572 0.3467,1.2886 -0.0616,0.4954 0.0698,0.7447 0.1278,1.2063 0.1201,0.06 0.2926,0.3005 0.4379,0.0914 0.2616,-0.3767 0.6902,-0.9738 1.0493,-1.2612 0.3051,-0.2443 0.6831,0.0512 0.9033,-0.1462 0.3613,-0.3237 1.0164,-0.4532 1.25,-0.8407 0.0921,-0.1529 0.0347,-0.4728 0.0822,-0.658 0.0884,-0.3442 0.1795,-0.5717 0.3193,-0.9047 0.2786,-0.661 0.7421,-0.9607 0.8759,-1.6907 0.2094,-1.1429 1.3068,-1.5315 1.8523,-2.4857 0.288,-0.504 -0.6205,-0.247 -0.6205,-0.6946 0,-0.1245 0.4295,-0.405 0.5292,-0.53 0.1672,-0.2095 0.1612,-0.4405 0.3467,-0.6397 0.2326,-0.0976 0.4824,-0.4292 0.584,-0.658 0.1154,-0.2597 0.0078,-0.8485 0.3558,-0.8682 0.3243,-0.0184 0.6927,-0.3107 1.022,-0.3107 0.153,0.6189 -0.1773,1.4864 -0.1095,2.175 0.0818,0.8314 0.3526,2.4684 0.6387,3.2534l0 0c0.4609,0 0.471,-0.101 0.9124,0.1462 0.4563,0.2554 0.4359,-0.6399 0.5292,-0.8864 0.0921,-0.2435 0.4079,-0.269 0.365,-0.5758 -0.0781,-0.5585 -0.6369,-1.1267 -0.1369,-1.6267 0.1561,-0.1561 1.1401,-0.0605 0.5748,-0.3838l0.1313 -0.6504c0.0091,-0.045 0.009,-0.0244 0.0426,-0.0041 0.0697,0.0427 0.1656,0.0533 0.328,0.0148 0.2052,-0.0487 0.5073,0.3621 0.6387,0.4843 0.2186,0.2032 0.4174,-0.1722 0.5474,-0.0274 0.1805,0.2011 0.1979,0.1387 0.4289,0.2102 0.058,0.018 0.7433,0.6325 0.6022,0.064 -0.2573,-1.0363 0.579,-0.2711 0.9945,-0.5209 0.2928,-0.176 0.7064,-0.0974 0.8668,-0.4204 0.0479,-0.0965 0.1037,-0.1837 0.1721,-0.2671l-0.3546 -0.3086c-0.3223,-0.324 -0.2697,-0.8511 0.0457,-1.1424 0.3578,-0.3306 0.629,-0.3076 0.2646,-0.8042 -0.2101,-0.2865 -0.1628,-0.3219 -0.5384,-0.2833 -0.4385,0.045 -0.8354,-0.0079 -0.5201,-0.5666 0.2304,-0.4085 0.7088,-0.4593 0.5931,-1.0418 -0.1118,-0.5634 -1.168,-1.3031 -1.688,-1.4713l-1.3504 -2.5771 0.0365 -0.7128 0.0183 -0.0092c0.0174,-0.0706 0.3134,-0.0438 0.3741,-0.0639 0,-0.0218 0.0056,-0.0308 -0.0183,-0.0366 0,-0.1142 -0.2554,-0.2106 -0.2554,-0.4295 0,-0.2436 -0.061,-0.3609 -0.2099,-0.5483 -0.5176,-0.6519 0.4593,-0.1214 0.6661,-0.1097 0.2859,0.0161 -0.0399,-0.4351 -0.1004,-0.53 -0.0654,-0.1028 -0.0547,-0.3008 -0.0547,-0.4204 0,-0.2506 0.1273,-0.269 -0.1734,-0.4113 -0.3088,-0.146 -0.1117,-0.2415 -0.0456,-0.5209 0.1115,-0.3357 0.4653,-1.0083 0.8668,-0.8773 0.4453,0.1454 0.8749,0.461 1.3869,0.2193 0.4665,-0.2201 0.2355,0.0823 0.6022,0.0823 0.203,-0.6137 0.5894,-0.8168 1.1861,-0.6763 0.5338,0.1256 0.8041,-0.2926 1.1497,-0.6397 0.3361,-0.3374 0.2691,-0.2536 0.7482,-0.3747 0.0307,-0.1244 -0.0752,-0.512 0.1095,-0.5574 0.019,-0.0774 0.0401,-0.6599 -0.0092,-0.6763 -0.021,-0.0849 -0.627,0.1268 -0.739,-0.329 -0.1969,-0.0486 -0.3889,0.5882 -0.9033,0.4661 -0.402,-0.0955 -0.5445,0.661 -0.9033,0.1645 -0.2779,-0.3847 -0.2954,0.0974 -0.5475,0.0822 -0.2007,-0.012 -0.438,-0.6489 -0.5292,-0.8133 -0.1317,-0.2375 -1.0654,-0.4202 -1.3048,-0.3747 -0.4018,0.0763 -0.5161,0.3975 -0.9945,0.3838 -0.3952,0 -0.8851,-0.111 -0.8851,0.2833 0,0.2099 -0.8772,-0.2193 -1.031,-0.2193 -0.3662,0 -0.3422,0.4025 -0.5383,0.5118 -0.1426,0.0796 -0.2185,-0.0979 -0.2829,-0.0731 -0.1202,0.0462 -0.2853,0.1693 -0.4197,0.1279 -0.1616,-0.0499 -0.3614,-0.3203 -0.438,-0.329 -0.1481,-0.0167 -0.2965,0.2219 -0.4653,0.265 -0.0982,0.0251 -0.2681,0.1855 -0.292,0.1828 -0.3148,-0.0359 -0.7615,-1.3924 -0.9489,-1.645 -0.2367,-0.3193 -0.6089,-0.4227 -0.6478,-0.8316 -0.0144,-0.1514 -0.8085,-0.8193 -0.9672,-0.8681 -0.4934,-0.152 -0.7933,-0.4701 -1.0949,-0.8682l-0.8942 -0.0731c-0.1526,0.0941 -0.3792,-0.0183 -0.5566,-0.0183 -0.1017,0 -0.6906,0.1556 -0.7755,0.2193 -0.3531,0.2651 -0.6056,0.6965 -0.9763,0.2102 -0.185,-0.2427 -0.2912,0.1579 -0.438,0 -0.0457,-0.0492 -0.0026,-0.2623 -0.1095,-0.201 -0.1145,0.0656 0.0509,-0.4037 -0.0912,-0.4478 -0.0033,-0.001 -0.0268,-0.0052 -0.0905,-0.0194 0.224,-0.3076 0.7558,-1.0303 0.8295,-1.4154 0.106,-0.5538 -0.1815,-0.5619 -0.5748,-0.7585 -0.5415,-0.2707 -0.366,-1.397 -0.2646,-1.8552 0.0361,-0.1636 -0.3472,-0.9064 -0.4745,-1.0144 -0.1718,-0.1456 -0.724,-0.0023 -0.666,-0.3198 0.0609,-0.3339 0.4562,-0.2019 0.4562,-0.5758 0,-0.3353 -0.7065,-0.3424 -0.6205,-0.6762 0.0274,-0.334 0.3641,-0.4424 0.2373,-0.7951 -0.1054,-0.2931 -0.0822,-0.5032 -0.0822,-0.8225 0,-0.267 -0.6273,-0.982 -0.8212,-0.9413 -0.2971,0.0625 -1.0653,0.0787 -1.2226,0.3199 -0.1218,0.1869 -0.3159,0.3653 -0.5475,0.2285 -0.682,-0.4027 -0.6748,-0.8591 -1.1131,-1.3708 -0.1788,-0.2089 -0.0358,-0.9249 -0.2373,-0.9961 -0.2042,-0.0721 -0.7413,-0.3477 -0.8602,-0.6481l0 0c-1.1616,0.436 -1.9794,-0.0912 -2.9628,0.9953 -0.7789,0.8605 -1.424,-0.7289 -1.9526,-0.859 -0.4388,-0.1079 -1.0156,0.383 -1.2409,0.7219 -0.4545,0.6839 -0.5372,0.9662 -1.4143,1.0419l0.0365 2.8512c0.3053,0.1032 0.9106,-0.1333 1.0949,-0.0822 0.3703,0.1026 0.2653,0.9333 0.9581,0.9595 0.4381,0.0165 0.4014,-0.039 0.4014,0.4752 0,0.572 0.156,0.4801 -0.4653,0.5027 -0.3098,0.0113 -1.7648,0.0559 -1.8066,0.2741 -0.073,0.3804 -0.0365,0.8952 -0.0365,1.2886 0,0.0735 -0.0596,0.383 0.0183,0.4021 0.0449,0.1817 1.4749,0.9603 1.7336,1.3525l1.5237 1.8278c0.4139,0.4967 0.777,0.7865 1.3048,1.124 0.236,0.1508 0.6573,0.4017 0.8121,0.6306 0.0853,0.126 0.6534,0.8875 0.2189,0.8042 -0.1651,-0.0317 -0.3698,-0.2709 -0.5201,-0.2102 -0.2811,0.1135 -0.0141,0.5113 -0.3467,0.594 -0.3423,0.0852 -0.3583,-0.4295 -0.5474,-0.4295 -0.2988,0 -0.346,0.818 -0.6935,0.3381 -0.3523,-0.4863 -0.7399,-0.466 -1.2409,-0.1828l0 0 0.2646 1.0693c0,0.8834 -0.3178,1.9544 0.5292,2.5405 0.8368,0.5789 -0.1678,1.6073 -0.2737,2.3304 -0.0791,0.5407 0.4422,1.4213 0.6478,1.9283 0.1181,0.5889 0.847,1.0918 0.8121,1.6723 -0.0242,0.4017 -0.8779,0.9319 -1.1679,1.2063 -1.1278,1.0669 -1.1195,1.9558 -1.6971,3.2534 -0.2333,0.524 -0.9889,1.4597 -1.5877,1.5536l-1.323 0.5118 0 0z","name": "As-Sulaymaniyyah"},"3": {"path": "M98.4807 57.36l-2.9559 1.0693 2.5183 6.1594c0.5629,0.3712 1.97,0.6815 2.6457,0.8134 1.3177,0.2574 2.4226,1.0733 3.6315,1.6084 1.2722,0.5632 1.6817,1.3643 2.6095,2.2938 0.6821,0.6357 1.1333,1.6724 2.2081,1.6724 0.2645,0 0.9659,-0.1084 1.1223,0.0822 0.971,1.1839 2.6094,1.9096 3.6041,3.0706 0.5995,0.6996 0.6633,0.3511 1.0857,-0.4204 0.4688,-0.856 0.6123,-2.1303 1.1406,-2.8512 0.3185,-0.2095 0.7264,-1.2365 0.8942,-1.6084 0.3772,-0.8361 0.8828,-1.4374 0.9763,-2.3761 0.0566,-0.569 -0.151,-1.5042 0.7025,-1.6449l0 0 1.323 -0.5118c0.5988,-0.0939 1.3544,-1.0296 1.5877,-1.5536 0.5776,-1.2976 0.5693,-2.1865 1.6971,-3.2534 0.29,-0.2744 1.1437,-0.8046 1.1679,-1.2063 0.0349,-0.5805 -0.694,-1.0834 -0.8121,-1.6723 -0.2056,-0.507 -0.7269,-1.3876 -0.6478,-1.9283 0.1059,-0.7231 1.1105,-1.7515 0.2737,-2.3304 -0.847,-0.5861 -0.5292,-1.6571 -0.5292,-2.5405l-0.2646 -1.0693 0 0 -0.5931 -0.1827c-0.5802,-0.0366 -0.7761,-0.1021 -1.2135,-0.4295 -0.2482,-0.1859 -1.165,0.5556 -1.3321,0.7676 -0.1952,0.2478 -0.4652,0.1994 -0.6935,0.0274 -0.3801,-0.2866 -0.7414,-0.1 -1.1405,0.0274 -0.4111,0.1311 -1.1616,0.745 -1.5511,0.6306 -0.4876,-0.1433 -0.2854,0.0573 -0.6479,0.1828 -0.1714,0.0594 -0.7391,-0.2309 -0.8941,-0.3199 -0.4519,-0.2594 -1.0061,-0.0874 -1.5055,-0.1188 -0.4306,0 -1.2071,-0.0681 -1.5785,0.1645 -0.3052,0.1912 -0.6936,0.9014 -0.9125,0.9687 -0.2416,0.0744 -1.5394,-1.0043 -1.7883,-1.1606 -2.2637,-1.4211 -3.2193,2.0587 -3.5311,3.5458 -0.1849,0.8519 -0.3207,1.8333 -0.6843,2.6228 -0.1991,0.4321 -0.1548,1.6922 -0.5019,1.8186 -0.3144,0.1146 -0.6452,-0.1109 -0.8668,-0.3198 -0.5607,-0.5288 -0.3863,-0.552 -1.1953,-0.4204 -0.424,0.069 -0.2483,1.5297 -0.3558,1.9648 -0.2983,0 -0.8636,-1.4348 -1.0949,-1.4348 -0.0533,0.217 -0.3285,0.2712 -0.3285,0.6489 0,0.2307 0.0368,0.454 -0.2555,0.2284l-1.3139 -1.0144 0 0z","name": "Kirkuk"},"4": {"path": "M110.769 17.3229l0.2482 0.8322c-0.0439,0.3169 0.5918,1.2374 0.3741,1.4348 -0.2189,0.1986 0.146,0.8703 0.146,1.1789l-0.0183 0.0091c-0.0163,0.0495 -0.4073,-0.084 -0.5657,0 -0.3536,0.1874 -0.508,0.6237 -0.7299,0.9687 -0.4494,0.699 -1.2827,1.0751 -1.8705,1.6358l-1.5329 1.4622 0 0 -0.6204 -0.1553c-0.4888,-0.0924 -1.0703,-0.0335 -1.5603,0.0274 -0.571,0.0709 -1.2403,0.3107 -1.7975,0.3107 -0.3225,0 -0.4052,0.013 -0.4744,0.3838 -0.0833,0.4459 -0.1469,0.4491 0.2646,0.5757 0.3036,0.0935 0.6286,0.2745 0.7664,0.5666 0.281,0.5952 0.1722,1.4393 -0.4106,1.8095 -0.7092,0.2364 -1.0382,0.4674 -1.8248,0.5483 -0.6729,0.0691 -1.0284,-0.1572 -1.5603,-0.5026 -0.7466,-0.4847 -1.957,-1.7977 -2.8832,-1.7089 -1.0578,0.1015 -1.1298,0.879 -1.8432,1.2977 -0.1709,0.8567 -0.9048,1.5747 -1.5602,2.111 -0.6086,0.4979 -1.2585,0.6762 -1.98,0.9504 -0.46,0.1747 -1.0898,0.3732 -1.5785,0.2102 -0.5986,-0.3426 -0.8011,0.9246 -1.2226,-0.0822 -0.2864,-0.684 -1.2004,0.3133 -1.0311,-0.5392 0.1414,-0.7123 -0.2662,-0.2259 -0.593,-0.6397 -0.595,-0.7536 -0.5413,-0.953 -1.3961,-0.4478 -0.8437,0.4985 -1.1166,-0.376 -1.5693,-0.923 -0.2839,-0.3432 -1.0109,-0.1836 -0.8303,-0.6123 0.1134,-0.3416 -0.1574,-0.2774 -0.2555,-0.4844 -0.0998,-0.2108 0.1814,-0.3577 0.1551,-0.5757 -0.0156,-0.1299 -0.173,-0.164 -0.2281,-0.265 -0.0747,-0.1371 0.0342,-0.4459 0.1004,-0.5666 0.2112,-0.3854 -0.3329,-0.1451 -0.4836,-0.1371 -0.2832,0.0152 -0.7457,-0.4402 -0.9216,-0.6397 -0.3271,-0.3707 -0.5153,-0.8171 -0.6478,-1.2886l-0.0932 -0.9408 0 0 -0.0963 -0.6981 -0.1021 -0.5178 0 0 0.8382 -0.0083c0.422,-0.0765 0.5797,-0.4048 0.9954,-0.4578 0.3477,-0.0444 0.6277,-0.0091 0.9854,-0.1005 0.2501,-0.0638 0.9939,-0.0799 1.0767,-0.3107 0.1051,-0.2926 0.2931,-0.5407 0.5201,-0.7677 0.1035,-0.1035 0.2812,-0.2822 0.2463,-0.4295 -0.049,-0.2072 0.4454,-0.4296 0.584,-0.6306 0.1378,-0.2 0.0456,-0.4663 0.0456,-0.7036 0.0727,-0.0183 0.4512,0.0026 0.4653,-0.0549 0.0183,-0.0045 0.1206,-0.385 0.1551,-0.4295 -0.0858,-0.7758 0.0759,-0.0755 0.5384,-0.5026 0.0574,-0.0531 0.2824,-0.1556 0.3011,-0.2102 0.0182,-0.0529 -0.0619,-0.336 0,-0.3564 0.069,-0.2809 0.8244,-0.5594 0.885,-0.8682l0.0092 -0.0091c0.1611,0 0.3677,0.1188 0.5657,0.1188 0.0112,0.0224 0.0377,0.0314 0.0638,0.0365l0.0092 0.0092c0.2046,0.8278 0.1759,0.2437 0.6387,0.53 0.3299,0.2042 1.5249,0.9159 1.8887,0.7402 0.0813,-0.0393 0.0535,-0.2283 0.219,-0.2833 0.5603,-0.1861 0.6743,0.007 0.8941,-0.6671 0.2809,0 0.3775,0.1209 0.5657,-0.0914 0.2348,-0.2651 0.6341,-0.1326 0.9307,-0.265 0.2579,-0.0285 1.4776,0.2516 1.5603,0.4387 0.1175,0.266 0.5909,-0.0661 0.7208,0.1462 0.12,0.1963 0.1809,0.2974 0.4197,0.3564 0.0801,0.3239 0.5324,0.7808 0.8942,0.5392 0.3463,-0.2311 0.2458,-0.5761 0.9124,-0.4113 0.1173,0.5974 1.2145,1.0254 1.7519,1.2795 0.4255,0.2013 0.3337,0.5273 0.9033,0.5026 0.2148,-0.0093 0.954,-0.564 1.0219,-0.0823 0.1649,0.0829 0.2412,0.1789 0.438,0.2376l0.2281 -0.0182c0.2151,0.5047 0.0633,0.5386 0.6843,0.3655 0.2245,-0.0626 0.6383,-0.351 0.8485,-0.3107 0.5086,0.0975 1.3296,-0.0349 1.7702,0.1462 0.2321,0.0954 0.2517,0.58 0.5109,0.6946 0.3138,0.1386 0.3275,-0.1914 0.4562,-0.4204 0.1997,-0.3555 0.7419,0.1081 1.1041,-0.1097 0.3641,-0.2191 0.4182,-0.5988 0.7299,-0.8225 0,-0.2265 0.1036,-0.4707 0.0821,-0.7768 -0.0061,-0.0879 0.477,-0.076 0.6205,-0.2101 0.2697,-0.2518 0.4677,-0.7002 0.885,-0.5392 0.0886,0.0342 0.1759,0.0769 0.2628,0.1182l0 0z","name": "Duhok"},"5": {"path": "M110.769 17.3229l0.2482 0.8322c-0.0439,0.3169 0.5918,1.2374 0.3741,1.4348 -0.2189,0.1986 0.146,0.8703 0.146,1.1789l-0.0183 0.0091c-0.0163,0.0495 -0.4073,-0.084 -0.5657,0 -0.3536,0.1874 -0.508,0.6237 -0.7299,0.9687 -0.4494,0.699 -1.2827,1.0751 -1.8705,1.6358l-1.5329 1.4622 0 0 1.688 0.6671c0.4293,0.1695 0.8173,0.5258 1.2774,0.7403 0.4178,0.1949 0.0949,0.8416 0.4471,0.9047 0.3606,0.0647 0.2925,0.2765 0.3376,0.6032 0.0805,0.5832 0.3793,0.1181 0.6661,0.201 0.2934,0.0849 0.4676,0.3269 0.7299,0.4661 0.2829,0.15 0.6586,-0.0119 0.9398,0.1005 0.3232,0.1291 0.9194,0.37 1.1405,0.6397 0.197,0.2401 0.2567,0.5681 0.3376,0.859 0.0718,0.2578 0.9431,0.4487 0.657,0.8865 -0.34,0.5205 -0.9183,0.7987 -1.2592,1.3525 -0.117,0.3642 -1.2105,1.2612 -1.5785,1.2612 -0.1812,0 -0.2714,-0.1935 -0.52,-0.1554 -0.3488,0.0534 -0.6528,0.3347 -0.949,0.064 -0.6049,-0.5531 -0.7431,-0.1854 -1.2226,0.3564 -0.1834,0.2071 -0.5019,0.4474 -0.6205,0.6854 -0.2246,0.4505 0.039,0.292 -0.4379,0.4661 -0.408,0.0697 -0.1012,0.594 -0.6661,0.594 -1.2974,0 -0.0839,0.9905 -0.9216,1.2702 -0.1485,0.0495 -0.5093,-0.1135 -0.447,0.1463 0.1874,0.7803 -0.9089,2.0426 -1.3869,2.5679 -0.745,0.8189 -1.9003,1.1634 -2.5457,2.1019 -0.1388,0.4062 -0.2177,0.9023 -0.7026,0.987 -0.631,0.1103 -0.8484,3.2448 -2.2719,3.7012 -0.98,0.3143 -0.6542,0.6004 -0.3924,1.4896 0.182,0.618 -0.5168,1.3684 -0.7573,1.91 0.0116,0.2929 -0.2638,0.5994 -0.3741,0.8773 -0.3282,0.8262 -0.1643,1.5777 -0.1643,2.4675l0 0c0.0481,0.6366 0.0298,0.9099 -0.2098,1.5169 -0.1298,0.3291 -0.2778,0.6375 -0.3649,0.9779 -0.0307,0.1198 -0.2079,0.4587 -0.1095,0.5574 0.2255,0.2265 0.7802,0.2831 1.0858,0.4296 0.341,0.1634 0.2554,0.4876 0.2554,0.8224l0 0 1.3139 1.0144c0.2923,0.2256 0.2555,0.0023 0.2555,-0.2284 0,-0.3777 0.2752,-0.4319 0.3285,-0.6489 0.2313,0 0.7966,1.4348 1.0949,1.4348 0.1075,-0.4351 -0.0682,-1.8958 0.3558,-1.9648 0.809,-0.1316 0.6346,-0.1084 1.1953,0.4204 0.2216,0.2089 0.5524,0.4344 0.8668,0.3198 0.3471,-0.1264 0.3028,-1.3865 0.5019,-1.8186 0.3636,-0.7895 0.4994,-1.7709 0.6843,-2.6228 0.3118,-1.4871 1.2674,-4.9669 3.5311,-3.5458 0.2489,0.1563 1.5467,1.235 1.7883,1.1606 0.2189,-0.0673 0.6073,-0.7775 0.9125,-0.9687 0.3714,-0.2326 1.1479,-0.1645 1.5785,-0.1645 0.4994,0.0314 1.0536,-0.1406 1.5055,0.1188 0.155,0.089 0.7227,0.3793 0.8941,0.3199 0.3625,-0.1255 0.1603,-0.3261 0.6479,-0.1828 0.3895,0.1144 1.14,-0.4995 1.5511,-0.6306 0.3991,-0.1274 0.7604,-0.314 1.1405,-0.0274 0.2283,0.172 0.4983,0.2204 0.6935,-0.0274 0.1671,-0.212 1.0839,-0.9535 1.3321,-0.7676 0.4374,0.3274 0.6333,0.3929 1.2135,0.4295l0.5931 0.1827 0 0c0.501,-0.2832 0.8886,-0.3035 1.2409,0.1828 0.3475,0.4799 0.3947,-0.3381 0.6935,-0.3381 0.1891,0 0.2051,0.5147 0.5474,0.4295 0.3326,-0.0827 0.0656,-0.4805 0.3467,-0.594 0.1503,-0.0607 0.355,0.1785 0.5201,0.2102 0.4345,0.0833 -0.1336,-0.6782 -0.2189,-0.8042 -0.1548,-0.2289 -0.5761,-0.4798 -0.8121,-0.6306 -0.5278,-0.3375 -0.8909,-0.6273 -1.3048,-1.124l-1.5237 -1.8278c-0.2587,-0.3922 -1.6887,-1.1708 -1.7336,-1.3525 -0.0779,-0.0191 -0.0183,-0.3286 -0.0183,-0.4021 0,-0.3934 -0.0365,-0.9082 0.0365,-1.2886 0.0418,-0.2182 1.4968,-0.2628 1.8066,-0.2741 0.6213,-0.0226 0.4653,0.0693 0.4653,-0.5027 0,-0.5142 0.0367,-0.4587 -0.4014,-0.4752 -0.6928,-0.0262 -0.5878,-0.8569 -0.9581,-0.9595 -0.1843,-0.0511 -0.7896,0.1854 -1.0949,0.0822l-0.0365 -2.8512c0.8771,-0.0757 0.9598,-0.358 1.4143,-1.0419 0.2253,-0.3389 0.8021,-0.8298 1.2409,-0.7219 0.5286,0.1301 1.1737,1.7195 1.9526,0.859 0.9834,-1.0865 1.8012,-0.5593 2.9628,-0.9953l0 0c-0.0396,-0.1002 -0.0329,-0.2032 0.0482,-0.3024 0.1432,-0.1751 0.4521,-0.0783 0.5931,-0.2193 0.1372,-0.1372 -0.1262,-0.5451 -0.1916,-0.6763 -0.2292,-0.4559 0.6843,-0.319 0.6843,-0.6397 0,-0.3181 0.0035,-0.7726 -0.0456,-1.0783 -0.1303,-0.8111 -0.3804,-1.9476 -1.4417,-1.709 -0.6301,0.1417 -0.1259,-1.26 -1.0037,-0.6854 -0.4095,0.2681 -0.5324,-0.1702 -0.8394,-0.0914 -0.6133,0.1576 -0.4731,0.0726 -0.6022,-0.4569 -0.1422,-0.5828 0.4614,-0.6236 0.4106,-0.8225 -0.1213,-0.4753 0.6414,-0.3213 0.7299,-0.795 0.0248,-0.4194 0.1016,-0.848 -0.0729,-1.2429 -0.1273,-0.2879 -0.3285,-0.3656 -0.3285,-0.722 0,-0.3104 0.4315,-1.1662 0.1551,-1.4439 -0.245,-0.246 -0.7005,0.0209 -0.8394,-0.466 -0.0257,-0.0043 -0.0163,-0.0072 -0.0365,-0.0275 -0.3345,0.084 -0.6365,0.4828 -0.8121,-0.0913 -0.0635,-0.2079 -0.3832,-0.5894 -0.3832,-0.6946 0,-0.2931 -0.1378,-0.3181 -0.1643,-0.5026 -0.0908,-0.0519 -0.2535,-0.2373 -0.2918,-0.329l0.5291 -0.53 0 0c-0.1674,-0.1221 -0.2615,-0.2387 -0.438,-0.329 -0.1665,-0.0853 -0.4532,-0.0211 -0.5839,-0.1645 -0.3663,-0.4016 -1.1536,0.1685 -1.3139,-0.2468 -0.1129,-0.2924 -0.6849,0.0247 -0.8395,0.1188 -0.0961,0.0586 -0.238,0.3386 -0.3193,0.3564 -0.1004,0.0219 -0.2496,-0.0008 -0.3559,0.0092 -0.1413,0.1939 -0.2172,0.7777 -0.4197,0.8407 -0.3808,0.1186 -0.2677,0.0064 -0.4288,0.3382 -0.0708,0.1457 -0.3135,0.2443 -0.4562,0.3198 -0.1932,0.1021 -1.8217,1.187 -1.9344,0.7311 -0.0652,0 -0.5495,0.289 -0.5931,0.3381 -0.032,0.0362 0.1886,0.3856 0.1552,0.5209 -0.3206,0.046 -0.7221,1.0255 -0.8121,1.2977 -0.1943,0 -0.4783,-0.3254 -0.7664,-0.3472 -0.4748,-0.0359 -0.3421,-0.236 -0.3924,-0.594 -0.0351,-0.2494 -0.1159,-0.2778 -0.2555,-0.4753 -0.2001,-0.2829 -0.0869,-0.4079 -0.1825,-0.7128 -0.657,-0.376 -0.3879,-0.4214 -0.593,-0.9595 -0.1464,-0.3844 0.2997,-0.6526 0.4836,-0.9687 0.0307,-0.0529 0.0712,-0.2783 0.1277,-0.2925 0.0212,-0.0859 0.9763,0.1431 0.9763,-0.3381 0,-0.4598 -0.2737,-0.6126 -0.2737,-0.9778 0,-0.1511 0.1148,-0.6805 0.073,-0.6946l0 -0.0183c-0.2541,-0.0357 -0.507,-0.3651 -0.5566,-0.6031 -0.0751,-0.3609 -0.4321,-0.1229 -0.6843,-0.2285 -0.179,-0.075 -0.1741,-0.2582 -0.438,-0.3198 -0.3883,-0.0908 -0.4823,-0.1662 -0.7208,-0.4661 -0.1233,-0.1549 -0.3719,0.0285 -0.5657,0.0457 -0.2851,0.1628 -0.5438,0.0503 -0.8048,-0.0737l0 0z","name": "Arbil"},"6": {"path": "M80.7412 23.127l0.0932 0.9408c0.1325,0.4715 0.3207,0.9179 0.6478,1.2886 0.1759,0.1995 0.6384,0.6549 0.9216,0.6397 0.1507,-0.008 0.6948,-0.2483 0.4836,0.1371 -0.0662,0.1207 -0.1751,0.4295 -0.1004,0.5666 0.0551,0.101 0.2125,0.1351 0.2281,0.265 0.0263,0.218 -0.2549,0.3649 -0.1551,0.5757 0.0981,0.207 0.3689,0.1428 0.2555,0.4844 -0.1806,0.4287 0.5464,0.2691 0.8303,0.6123 0.4527,0.547 0.7256,1.4215 1.5693,0.923 0.8548,-0.5052 0.8011,-0.3058 1.3961,0.4478 0.3268,0.4138 0.7344,-0.0726 0.593,0.6397 -0.1693,0.8525 0.7447,-0.1448 1.0311,0.5392 0.4215,1.0068 0.624,-0.2604 1.2226,0.0822 0.4887,0.163 1.1185,-0.0355 1.5785,-0.2102 0.7215,-0.2742 1.3714,-0.4525 1.98,-0.9504 0.6554,-0.5363 1.3893,-1.2543 1.5602,-2.111 0.7134,-0.4187 0.7854,-1.1962 1.8432,-1.2977 0.9262,-0.0888 2.1366,1.2242 2.8832,1.7089 0.5319,0.3454 0.8874,0.5717 1.5603,0.5026 0.7866,-0.0809 1.1156,-0.3119 1.8248,-0.5483 0.5828,-0.3702 0.6916,-1.2143 0.4106,-1.8095 -0.1378,-0.2921 -0.4628,-0.4731 -0.7664,-0.5666 -0.4115,-0.1266 -0.3479,-0.1298 -0.2646,-0.5757 0.0692,-0.3708 0.1519,-0.3838 0.4744,-0.3838 0.5572,0 1.2265,-0.2398 1.7975,-0.3107 0.49,-0.0609 1.0715,-0.1198 1.5603,-0.0274l0.6204 0.1553 0 0 1.688 0.6671c0.4293,0.1695 0.8173,0.5258 1.2774,0.7403 0.4178,0.1949 0.0949,0.8416 0.4471,0.9047 0.3606,0.0647 0.2925,0.2765 0.3376,0.6032 0.0805,0.5832 0.3793,0.1181 0.6661,0.201 0.2934,0.0849 0.4676,0.3269 0.7299,0.4661 0.2829,0.15 0.6586,-0.0119 0.9398,0.1005 0.3232,0.1291 0.9194,0.37 1.1405,0.6397 0.197,0.2401 0.2567,0.5681 0.3376,0.859 0.0718,0.2578 0.9431,0.4487 0.657,0.8865 -0.34,0.5205 -0.9183,0.7987 -1.2592,1.3525 -0.117,0.3642 -1.2105,1.2612 -1.5785,1.2612 -0.1812,0 -0.2714,-0.1935 -0.52,-0.1554 -0.3488,0.0534 -0.6528,0.3347 -0.949,0.064 -0.6049,-0.5531 -0.7431,-0.1854 -1.2226,0.3564 -0.1834,0.2071 -0.5019,0.4474 -0.6205,0.6854 -0.2246,0.4505 0.039,0.292 -0.4379,0.4661 -0.408,0.0697 -0.1012,0.594 -0.6661,0.594 -1.2974,0 -0.0839,0.9905 -0.9216,1.2702 -0.1485,0.0495 -0.5093,-0.1135 -0.447,0.1463 0.1874,0.7803 -0.9089,2.0426 -1.3869,2.5679 -0.745,0.8189 -1.9003,1.1634 -2.5457,2.1019 -0.1388,0.4062 -0.2177,0.9023 -0.7026,0.987 -0.631,0.1103 -0.8484,3.2448 -2.2719,3.7012 -0.98,0.3143 -0.6542,0.6004 -0.3924,1.4896 0.182,0.618 -0.5168,1.3684 -0.7573,1.91 0.0116,0.2929 -0.2638,0.5994 -0.3741,0.8773 -0.3282,0.8262 -0.1643,1.5777 -0.1643,2.4675l0 0 -0.6569 0.0822c-0.4613,0.2079 -0.9832,0.2828 -1.4416,0.5117 -0.5643,0.2817 -1.1579,0.5823 -1.7519,0.7768 -0.7145,0.239 -1.5929,0.0111 -2.2354,0.265 -0.5689,0.2247 -1.0852,0.774 -1.5238,1.1972 -0.9349,0.9019 -1.9343,1.6435 -1.9343,3.0341 0,0.7141 0.3822,1.734 0.2558,2.376l3.23 5.0628 -10.3833 0.3473 0 3.6555 0 0 -8.8875 0.1005 -3.8322 -1.2154c-0.489,-0.1966 -1.9201,-0.5846 -2.2263,-1.0144 -0.8084,-0.2015 -1.7486,0.0048 -2.6004,-0.1005 -0.0507,-0.0405 -0.1489,-0.0666 -0.1734,-0.128 -0.3988,-0.2498 -0.7649,-0.8062 -1.1679,-1.1149 -0.4167,-0.3193 -1.0228,-0.5255 -1.5055,-0.722l-0.8248 -0.3194 0 0 -0.0232 -0.6401 0.1095 -2.4492 0.8212 -2.3943 0.0364 -2.4858 2.0986 -2.9061 -0.292 -4.88 -1.989 -4.7887 0.4744 -6.3605 2.1533 -3.8017 7.5366 -1.4074 9.6511 -10.6095 0 0z","name": "Ninawa"},"7": {"path": "M119.704 109.423c-0.1021,0.0465 -0.1288,0.0457 -0.2281,0.0457 -0.1046,0.3208 -0.062,0.7747 -0.0821,1.1515 -0.0354,0.6605 -0.3288,0.5849 -0.876,0.5849 -0.0456,0.1379 -0.0023,0.5309 -0.0091,0.7128 -0.0346,0.9124 0.0278,0.453 0.657,0.7676 0.3562,0.178 0.3523,0.5763 0.6752,0.7951 0.6084,0.4125 0.9191,0.6173 1.5237,0.0822 0.1681,-0.1487 0.7055,-0.2651 0.9124,-0.137 0.2907,0.1798 0.2545,0.5651 0.4745,0.7585 0.1997,0.6364 1.0663,1.2836 1.6789,1.4713 0.5308,0.1627 1.0409,0.1529 1.5602,0.2742 0.273,0.0638 1.0139,1.4819 1.3595,1.782 0.2739,0.2379 0.4954,0.4626 0.8486,0.5849 0.1887,0.0654 0.6054,0.1868 0.7391,0.3198l0 0.064c-0.3609,0.2868 -0.4928,0.5657 -0.4928,1.051 0,1.0645 0.6811,0.6397 1.3869,0.6397 0.1406,0.2323 -0.0397,0.6885 -0.2098,0.859 -0.3213,0.3218 -1.3593,0.9094 -1.1132,1.4713 0.1421,0.3247 0.6073,0.1645 0.8851,0.1645 0.3543,0 0.5188,0.1525 0.666,0.4478l0.0365 0.4844 0 0c1.1687,0.3745 2.3277,0.3633 3.3669,1.1058 0.3779,0.2699 0.3773,0.5811 0.5931,0.9321 0.2127,0.3457 0.8032,0.549 1.1314,0.7951 0.6109,0.5526 0.9423,0.6958 1.2318,1.4987 0.1461,0.4051 0.0945,0.7384 0.4014,1.0875 0.5505,0.6259 1.063,0.9521 1.7336,1.4256 0.7132,0.5035 0.6399,1.1955 0.8486,1.9283l0.6569 1.0692 0 0 0.5201 -0.2559c0.0619,-0.0774 0.1765,-0.1113 0.2646,-0.1553 0.0325,-0.0029 0.0352,-0.0039 0.0639,-0.0183l6.7246 -0.064 3.8687 -0.1553 0 0c0.1463,-0.4036 0.7646,-0.4297 0.8485,-0.8682 0.0749,-0.3911 -0.5313,-0.7362 -0.6478,-1.0418 -0.0658,-0.1724 -0.1586,-0.691 0.0183,-0.8133 0.1308,-0.0905 0.3675,-0.1065 0.5201,-0.1828l1.9708 -0.8408c0.4949,-0.2111 0.3723,-0.5439 0.3011,-1.0509 -0.0178,-0.0071 -0.0203,-0.0096 -0.0274,-0.0274 -0.3888,-0.0562 -1.1135,-0.681 -1.1679,-1.0693 -0.1092,-0.7799 -0.3217,-1.0664 -0.8029,-1.6723 -0.7535,-0.9489 0.7915,-2.0716 0.9124,-3.1346 0,-0.3565 0.6205,0.1243 0.6205,-0.6946 0,-0.4907 -0.1271,-0.8222 -0.0274,-1.3433 0.216,-1.1293 0.1839,-2.4035 0.7391,-3.4545 0.1635,-0.3097 0.5807,-1.1587 0.4562,-1.4804 -0.2924,-0.7566 -0.403,-0.4984 0.146,-1.1678l0 0c-0.3264,-0.314 -0.6847,-0.5884 -1.1315,-0.6691 -0.4802,-0.0868 -0.7129,-0.4341 -1.1314,-0.6214 -0.9036,-0.4044 -2.0705,-1.0104 -3.1205,-0.8042 -0.6963,0.1368 -1.3732,0.4723 -2.0803,0.1827 -0.23,-0.0941 -0.6047,-0.4935 -0.8212,-0.4935 0,-0.1379 -0.0559,-0.7128 0.1186,-0.7128 0.4778,0 0.463,-0.2122 0.6205,-0.6123 0.1089,-0.0817 0.2134,-0.1753 0.3376,-0.2376 0.0086,-0.0697 0.0821,-0.1075 0.0821,-0.201l-0.0091 -0.0092c-0.3323,0 -0.7613,0.0913 -0.9672,-0.2193 -0.2276,-0.3435 -1.3132,-0.266 -1.2318,-0.4661 0.4408,-1.0822 1.2405,-0.0437 1.9526,-0.6488 0.2139,-0.1817 1.2912,-1.4193 1.0037,-1.5079 -0.4365,-0.1344 -0.4941,0.1461 -0.3559,-0.4204 0.0267,-0.1094 0.2732,-0.7864 0.1643,-0.8224 -0.019,-0.0776 -0.8664,-0.5773 -0.9946,-0.658 -0.5305,-0.3343 -0.2303,-0.5299 -0.4653,-0.9139 -0.1153,-0.1886 -0.4644,-0.2125 -0.5748,-0.4569 -0.1734,-0.3841 0.0509,-0.5879 -0.2555,-0.987 -0.253,-0.5571 -0.4439,-0.3979 -0.3924,-1.0784 0.0148,-0.1961 -0.2506,-0.6457 -0.447,-0.6945l0 0 -0.4106 0.3564c0.0289,0.4645 -1.0202,0.6901 -1.3504,0.7676 -1.4279,0.3353 -0.7203,1.2438 -1.5602,2.0837 -0.6136,0.6136 -1.0921,-0.2861 -1.6241,0.9595 -0.4373,1.0237 -0.7904,2.2674 -1.5967,3.0341 -1.3222,1.2571 -1.1361,0.3565 -2.5001,-0.1463 -0.7856,-0.1773 -1.3246,-0.4686 -2.2263,-0.4934 -0.6142,-0.0169 -1.3021,0.0202 -1.8795,-0.2194 -0.6727,-0.279 -1.7349,-0.9655 -2.2628,-1.4713 -0.7444,-0.7131 -1.7039,-0.5706 -2.6004,-0.7951 -0.5243,0.1016 -1.5382,0.1871 -1.9435,0.5118 -0.5902,0.4727 -0.7994,1.9265 -1.2043,2.6228 -0.4553,0.7832 -1.1455,1.4693 -1.8705,2.0014 -0.1599,0.3085 -0.5845,0.5664 -0.9036,0.6671 -0.974,0.3077 -0.4692,-0.8039 -0.7847,-1.2703 -0.2013,-0.2974 -0.4228,-0.189 -0.6296,0.0183 -0.2493,0.2501 -0.4736,-0.1176 -0.6113,-0.3016l0 0z","name": "Wasit"},"8": {"path": "M125.762 71.4976c0.4194,0.21 0.8462,0.4882 1.3322,0.3198 1.0067,-0.3487 0.9951,-1.352 1.7792,-0.0457 0.6421,1.0696 1.0296,-0.5466 1.4872,-0.0182l0.7756 0.8956c0.1519,0.1753 -0.0726,0.5719 -0.1277,0.7859 -0.1691,0.6557 0.6843,0.1998 0.6843,0.7676 0,0.5248 0.0119,0.8572 0.3467,1.2886 -0.0616,0.4954 0.0698,0.7447 0.1278,1.2063 0.1201,0.06 0.2926,0.3005 0.4379,0.0914 0.2616,-0.3767 0.6902,-0.9738 1.0493,-1.2612 0.3051,-0.2443 0.6831,0.0512 0.9033,-0.1462 0.3613,-0.3237 1.0164,-0.4532 1.25,-0.8407 0.0921,-0.1529 0.0347,-0.4728 0.0822,-0.658 0.0884,-0.3442 0.1795,-0.5717 0.3193,-0.9047 0.2786,-0.661 0.7421,-0.9607 0.8759,-1.6907 0.2094,-1.1429 1.3068,-1.5315 1.8523,-2.4857 0.288,-0.504 -0.6205,-0.247 -0.6205,-0.6946 0,-0.1245 0.4295,-0.405 0.5292,-0.53 0.1672,-0.2095 0.1612,-0.4405 0.3467,-0.6397 0.2326,-0.0976 0.4824,-0.4292 0.584,-0.658 0.1154,-0.2597 0.0078,-0.8485 0.3558,-0.8682 0.3243,-0.0184 0.6927,-0.3107 1.022,-0.3107 0.153,0.6189 -0.1773,1.4864 -0.1095,2.175 0.0818,0.8314 0.3526,2.4684 0.6387,3.2534l0 0c-0.1938,0 0.2259,0.9565 -0.1369,1.2337 -0.1414,0.1081 -0.4407,0.3258 -0.5931,0.3838 -0.4647,0.1771 -0.2157,-0.0194 -0.4197,-0.2924l-0.6934 0.6671c-0.1048,0.1008 0.2965,0.5639 0.0638,0.6397 0,0.1373 0.1278,0.1285 0.1278,0.2925 -0.5217,0.0643 -0.2958,0.339 -0.5019,0.6488 -0.3489,0.5241 -0.2937,0.4099 0.3011,0.7585 0.2656,0.2568 0.1187,0.2843 0.1187,0.5666 0,0.2436 0.1637,0.1715 0.2828,0.3382 0.0794,0.1113 0.2372,0.7535 0.2372,0.8864 0,0.3944 0.0394,0.3954 0.1734,0.7494 0.0852,0.2254 -0.0525,0.4214 -0.0091,0.6488 0.0132,0.0692 0.1741,0.3303 0.0821,0.393 -0.4616,0.3149 -0.532,-0.2644 -0.8394,-0.3381 -0.1235,-0.0296 -0.3043,0.0832 -0.4198,0.1279 -0.1811,0.0702 -0.2751,-0.1786 -0.5839,-0.064 -0.9151,0.3394 -1.1547,-0.091 -1.3413,-0.8499 -0.0653,0 -0.3227,-0.0136 -0.3376,-0.0731 -0.1355,0 -0.3596,0.6734 -0.4562,0.8316 -0.0731,0.1195 0.1901,0.3008 0.2099,0.4753 0.0376,0.3315 -0.0427,0.5459 -0.0639,0.8681 -0.1668,0.4498 -0.3473,0.6441 -0.8212,0.3839 -0.0189,-0.0104 -0.6442,0.3261 -0.7026,0.4021 -0.0337,0.0437 0.3103,0.6642 0.3103,0.8499 0,0.2642 -0.0666,0.5252 0.1095,0.7402 0.1524,0.1862 0.3969,0.9701 0.5748,0.9595 0.1335,-0.008 0.2252,-0.242 0.3832,-0.1279 0.2585,0.1869 0.3647,-0.176 0.6113,0.1279 0.739,0.9105 0.723,1.6495 0.146,2.7325 -0.0099,0.3941 0.1719,1.1562 0.5201,1.3891 0,0.1017 -0.7436,0.3911 -0.8942,0.4843 -0.2645,0.1635 -0.4601,0.3541 -0.6387,0.6123 -0.1759,0.2542 -0.2521,0.262 -0.4471,0.457 -0.1807,0.1807 0.024,0.2852 0.0365,0.4386 0.008,0.0978 -0.1743,0.9494 -0.2281,0.9961 -0.2128,0.1844 -0.4924,-0.0523 -0.5474,0.3108 -0.0777,0.5129 -0.6075,0.204 -0.1734,0.9138 0.1068,0.1746 1.2078,0.0457 1.4599,0.0457l0.0091 0.0092c0.1318,0.5334 0.0925,0.7088 0.6387,1.0509 0.0939,0.2736 0.3497,0.5153 0.4197,0.8133 0.1017,0.4331 0.2763,0.9195 0.6205,1.2246 0.1488,0.132 0.6993,0.4344 0.7482,0.5758 0.0611,0.177 -0.0365,0.4492 -0.0365,0.6488 0,0.9118 1.1062,1.727 1.7883,2.1842 0.3232,0.1273 0.5824,0.004 0.4745,0.4386 -0.0445,0.1796 -0.2646,0.5463 -0.2646,0.6671 0.2268,-0.1695 0.6749,-0.1341 0.8759,-0.3472 0.3687,-0.3911 0.9482,-0.4314 1.5055,-0.4752 0.0756,-0.0059 0.6723,-0.1522 0.5566,0.0913 -0.2694,0.5671 -0.084,0.5277 0.3194,0.9322 0.6285,0.6304 -0.03,0.9744 -0.5566,1.3982 -0.4361,0.3511 -1.0689,0.6231 -0.146,0.658 0.5348,0.0202 0.661,0.2991 1.0128,-0.1371 0.124,-0.1539 0.84,-0.3854 0.958,-0.201 0.1212,0.1892 -0.1599,0.3511 0.1552,0.4295l0 0 -0.4106 0.3564c0.0289,0.4645 -1.0202,0.6901 -1.3504,0.7676 -1.4279,0.3353 -0.7203,1.2438 -1.5602,2.0837 -0.6136,0.6136 -1.0921,-0.2861 -1.6241,0.9595 -0.4373,1.0237 -0.7904,2.2674 -1.5967,3.0341 -1.3222,1.2571 -1.1361,0.3565 -2.5001,-0.1463 -0.7856,-0.1773 -1.3246,-0.4686 -2.2263,-0.4934 -0.6142,-0.0169 -1.3021,0.0202 -1.8795,-0.2194 -0.6727,-0.279 -1.7349,-0.9655 -2.2628,-1.4713 -0.7444,-0.7131 -1.7039,-0.5706 -2.6004,-0.7951 -0.5243,0.1016 -1.5382,0.1871 -1.9435,0.5118 -0.5902,0.4727 -0.7994,1.9265 -1.2043,2.6228 -0.4553,0.7832 -1.1455,1.4693 -1.8705,2.0014 -0.1599,0.3085 -0.5845,0.5664 -0.9036,0.6671 -0.974,0.3077 -0.4692,-0.8039 -0.7847,-1.2703 -0.2013,-0.2974 -0.4228,-0.189 -0.6296,0.0183 -0.2493,0.2501 -0.4736,-0.1176 -0.6113,-0.3016l0 0 -0.1639 -0.7402c-0.0527,-0.2835 -0.1183,-0.5525 -0.2555,-0.8134 -0.1152,-0.2192 -0.5331,-0.319 -0.7573,-0.3929 -0.7697,-0.254 -0.1988,-0.9858 -0.4379,-1.4805l0 0 0.5474 0.0092c0.3982,0.069 1.1275,-0.0321 1.3778,-0.4021 0.295,-0.4359 0.0793,-0.6022 0.1003,-1.0876 0.012,-0.2763 0.0839,-0.5793 0.1186,-0.859 0.0498,-0.4019 0.0694,-0.8613 0,-1.2611 -0.1173,-0.676 -0.2635,-0.7852 -0.9124,-0.8225l-3.6496 -0.2102 0 0 -0.265 -0.393c-0.1769,-0.1987 -0.4196,-0.4331 -0.4745,-0.7036 -0.0543,-0.2671 -0.0794,-0.6702 0.1095,-0.8956 0.1463,-0.1747 0.2892,-0.3172 0.365,-0.5392 0.1346,-0.3676 0.0114,-0.8164 0.2281,-1.0784 0.27,-0.3263 0.7824,0.0574 1.0858,-0.2467 0.1516,-0.1518 0.3167,-2.2154 0.2098,-2.3761 -0.354,-0.5316 -0.7096,-0.8463 -0.3193,-1.5444 0.145,-0.2594 0.8456,-1.7168 1.031,-1.8095 0.015,-0.0608 0.0037,0.0617 0.0091,-0.1096 0.43,-0.9685 -0.4928,-1.0529 -0.958,-1.709 -0.6116,-0.8623 -0.8897,-0.5161 -1.8157,-0.7037 0,-0.5141 0.0019,-1.1988 0.3284,-1.6358 0.3064,-0.4099 0.3634,-1.3554 0.7117,-1.6358 0.3009,-0.2421 0.79,-0.2606 0.9763,-0.53 0.154,-0.2225 0.404,-0.4548 0.511,-0.6946 0.2996,-0.3002 0.9854,-0.4538 0.9854,-0.9321 0,-0.2835 0.0193,-0.8608 -0.0365,-1.1058 -0.0467,-0.2055 -0.3606,-0.0555 -0.2737,-0.4935 0.0811,-0.4083 0.1847,-0.5301 0.3102,-0.8865 0.1792,-0.5084 -0.248,-0.6946 0.0274,-1.1971 0.0553,-0.1008 -0.1292,-0.3466 -0.1095,-0.5209 0.0214,-0.1884 0.463,-0.3275 0.5201,-0.5575 0.0892,-0.3598 -0.437,-0.4873 -0.146,-0.8042 0.2714,-0.2954 -0.4261,-0.7011 0.0912,-0.8042 0.3688,-0.0734 1.0355,-0.0499 1.2592,0.2924 0.1593,0.2439 0.8801,1.0213 1.177,0.9413 0.3432,-0.0924 0.5911,-1.4103 0.7756,-1.7546 0.8228,-0.6695 0.5492,-1.0231 0.4653,-1.9465 -0.0705,-0.7766 0.6128,-0.9512 0.9854,-1.4805 0.3264,-0.4638 0.2862,-0.7066 0.4745,-1.1972 0.2221,-0.5783 0.5619,-0.4124 1.0584,-0.5666l0.7938 -0.2467 0 0z","name": "Diyala"},"9": {"path": "M114.311 102.642l1.36 -1.2794 0 0 3.6496 0.2102c0.6489,0.0373 0.7951,0.1465 0.9124,0.8225 0.0694,0.3998 0.0498,0.8592 0,1.2611 -0.0347,0.2797 -0.1066,0.5827 -0.1186,0.859 -0.021,0.4854 0.1947,0.6517 -0.1003,1.0876 -0.2503,0.37 -0.9796,0.4711 -1.3778,0.4021l-0.5474 -0.0092 0 0c-0.9394,0 -1.6685,0.2674 -2.4544,0.7859 -0.8912,0.5878 -1.7469,0.2366 -2.5913,-0.1553 -0.4529,-0.2101 -1.0879,-0.3972 -1.4781,-0.6946l2.7459 -3.2899z","name": "Baghdad"},"10": {"path": "M120.197 129.62l-1.7154 1.3708 -0.0182 2.3212c0.2746,0.5073 0.5778,1.3094 0.9672,1.6998 0.5555,0.5571 -1.169,1.0384 -1.0493,1.6633 0.0896,0.4683 0.2977,0.7427 0.1186,1.252 -0.0941,0.2675 -0.2704,0.4119 -0.3741,0.6488 -0.104,0.2377 0.085,0.6387 0.1642,0.8773 0.0758,0.5948 0.7654,1.8889 -0.3011,1.7638 -0.3615,-0.0424 -0.8869,0.4643 -0.6752,0.7677l0.9307 1.3342c0.3664,0.5251 0.4526,1.4549 1.1132,1.5993l3.4672 0.7585 0.7938 0.2467 0 0c-0.5083,0.4581 -1.1559,2.0604 -1.3504,2.7234 -0.2833,0.9653 -0.8244,1.9461 -1.5602,2.641 -0.5736,0.5416 -0.5167,1.5622 -0.9125,2.1568 -0.1591,1.0684 -0.2911,2.4585 -1.0675,3.2807 -0.7532,0.7978 -1.1497,1.9279 -1.9343,2.7142 -0.4859,0.4868 -1.1121,1.4077 -1.6789,1.7364 -1.5533,1.4576 -2.2474,3.7499 -3.0293,5.6568 -0.1477,0.3602 -0.3721,1.4362 -0.6295,1.6633 -0.119,0.9057 -0.68,1.8693 -0.8669,2.7873 -0.1418,0.697 -0.6659,1.6353 -1.1679,2.1384 -0.3262,0.3268 -0.4973,0.7629 -0.812,1.0967 -0.4483,0.4753 -0.6892,1.2186 -1.1314,1.7089l-0.5267 1.0497 0 0 -16.4446 -13.825 0 0 0.0552 -7.6588c0.03,-1.2041 0.803,-3.4239 1.7424,-4.2221 0.4244,-0.3605 0.7751,-0.8011 1.2227,-1.1514 0.4613,-0.3612 0.2431,-1.6802 0.3376,-2.2116 0.1101,-0.6266 0.0471,-1.0951 0.2919,-1.7089 0.3055,-0.7656 1.4143,-1.5634 1.4143,-2.3761 0,-1.201 -0.0783,-2.3028 0.7482,-3.2808 0.481,-0.271 1.0487,-1.5784 1.4142,-2.0653 0.6345,-0.845 1.2589,-2.026 2.0074,-2.7416 1.0954,-1.0474 2.1026,-1.1738 3.5037,-1.709 0.172,-0.0638 0.4123,-0.2855 0.5383,-0.4203 0.2464,-0.2638 0.5768,-0.4809 0.8486,-0.722 0.1316,-0.1166 0.2489,-0.2489 0.3832,-0.3564 0.1934,-0.155 0.4,-0.2356 0.6113,-0.3564l0.8851 -0.9779 -1.7701 -1.8825 0 0 9.1612 -3.8109 0 0 0.8481 3.6921 1.1405 -0.064 1.5147 -1.8186 2.792 2.0105 0 0z","name": "An-Najaf"},"11": {"path": "M120.197 129.62c0.3288,0.3294 1.8679,0.7805 2.3358,0.8134 0.5129,0.036 1.2796,0.1303 1.7701,0.0091l0.0092 -1.3982c0.0023,-0.3457 -0.1664,-0.5412 -0.2008,-0.786 -0.0596,-0.4231 1.0691,-0.5391 1.3869,-0.5391 0.8068,0 1.0724,-0.7293 1.5511,-1.3069 0.2745,-0.296 0.5498,-0.1888 0.8577,-0.4021 0.1747,-0.1211 0.2991,-0.4605 0.4197,-0.6488 0.4098,-0.64 1.2179,-1.055 1.7701,-1.5627l0 0c1.1687,0.3745 2.3277,0.3633 3.3669,1.1058 0.3779,0.2699 0.3773,0.5811 0.5931,0.9321 0.2127,0.3457 0.8032,0.549 1.1314,0.7951 0.6109,0.5526 0.9423,0.6958 1.2318,1.4987 0.1461,0.4051 0.0945,0.7384 0.4014,1.0875 0.5505,0.6259 1.063,0.9521 1.7336,1.4256 0.7132,0.5035 0.6399,1.1955 0.8486,1.9283l0.6569 1.0692 0 0c-0.4131,0.6908 0.2929,1.4865 0.5019,2.0837 0.3245,0.9268 0.5383,1.7511 0.5383,2.769 0,0.1596 -0.0091,0.3169 -0.0091,0.4752 0,0.4189 0.0736,0.8154 0.1642,1.2246l0.1643 0.6397 0 0c-0.5437,0 -1.1341,-0.219 -1.6424,-0.3838l-2.2537 -0.7311c-0.4715,-0.1528 -1.0791,-0.4669 -1.5603,-0.4935 -0.8573,-0.1497 -3.8153,-1.6256 -4.3249,-0.6032 -0.173,0.347 -0.4011,0.7995 -0.7938,0.9139 -0.5572,0.1622 -1.3214,-0.0141 -1.9161,0.0365 -0.8296,0.0705 -1.3162,0.0185 -0.3193,0.6489 0.3186,0.2015 1.5713,1.3011 1.1223,1.6815 -0.1937,0.3396 -0.2555,0.7748 -0.4836,1.0784 -0.2606,0.3471 -0.576,0.3025 -0.8121,0.7676 -0.4239,0.8353 -0.4899,2.0216 -0.9854,2.8421 -0.2285,0.3782 -0.7117,1.2178 -0.7117,1.6541 -0.1119,0.0848 -0.6642,-0.1112 -0.8029,-0.1462 -0.1902,-0.7526 -1.5884,-2.026 -2.3176,-2.175l0 0 -0.7938 -0.2467 -3.4672 -0.7585c-0.6606,-0.1444 -0.7468,-1.0742 -1.1132,-1.5993l-0.9307 -1.3342c-0.2117,-0.3034 0.3137,-0.8101 0.6752,-0.7677 1.0665,0.1251 0.3769,-1.169 0.3011,-1.7638 -0.0792,-0.2386 -0.2682,-0.6396 -0.1642,-0.8773 0.1037,-0.2369 0.28,-0.3813 0.3741,-0.6488 0.1791,-0.5093 -0.029,-0.7837 -0.1186,-1.252 -0.1197,-0.6249 1.6048,-1.1062 1.0493,-1.6633 -0.3894,-0.3904 -0.6926,-1.1925 -0.9672,-1.6998l0.0182 -2.3212 1.7154 -1.3708 0 0z","name": "Al-Qadisyyah"},"12": {"path": "M111.565 105.932c0.3902,0.2974 1.0252,0.4845 1.4781,0.6946 0.8444,0.3919 1.7001,0.7431 2.5913,0.1553 0.7859,-0.5185 1.515,-0.7859 2.4544,-0.7859l0 0c0.2391,0.4947 -0.3318,1.2265 0.4379,1.4805 0.2242,0.0739 0.6421,0.1737 0.7573,0.3929 0.1372,0.2609 0.2028,0.5299 0.2555,0.8134l0.1639 0.7402 0 0c-0.1021,0.0465 -0.1288,0.0457 -0.2281,0.0457 -0.1046,0.3208 -0.062,0.7747 -0.0821,1.1515 -0.0354,0.6605 -0.3288,0.5849 -0.876,0.5849 -0.0456,0.1379 -0.0023,0.5309 -0.0091,0.7128 -0.0346,0.9124 0.0278,0.453 0.657,0.7676 0.3562,0.178 0.3523,0.5763 0.6752,0.7951 0.6084,0.4125 0.9191,0.6173 1.5237,0.0822 0.1681,-0.1487 0.7055,-0.2651 0.9124,-0.137 0.2907,0.1798 0.2545,0.5651 0.4745,0.7585 0.1997,0.6364 1.0663,1.2836 1.6789,1.4713 0.5308,0.1627 1.0409,0.1529 1.5602,0.2742 0.273,0.0638 1.0139,1.4819 1.3595,1.782 0.2739,0.2379 0.4954,0.4626 0.8486,0.5849 0.1887,0.0654 0.6054,0.1868 0.7391,0.3198l0 0.064c-0.3609,0.2868 -0.4928,0.5657 -0.4928,1.051 0,1.0645 0.6811,0.6397 1.3869,0.6397 0.1406,0.2323 -0.0397,0.6885 -0.2098,0.859 -0.3213,0.3218 -1.3593,0.9094 -1.1132,1.4713 0.1421,0.3247 0.6073,0.1645 0.8851,0.1645 0.3543,0 0.5188,0.1525 0.666,0.4478l0.0365 0.4844 0 0c-0.5522,0.5077 -1.3603,0.9227 -1.7701,1.5627 -0.1206,0.1883 -0.245,0.5277 -0.4197,0.6488 -0.3079,0.2133 -0.5832,0.1061 -0.8577,0.4021 -0.4787,0.5776 -0.7443,1.3069 -1.5511,1.3069 -0.3178,0 -1.4465,0.116 -1.3869,0.5391 0.0344,0.2448 0.2031,0.4403 0.2008,0.786l-0.0092 1.3982c-0.4905,0.1212 -1.2572,0.0269 -1.7701,-0.0091 -0.4679,-0.0329 -2.007,-0.484 -2.3358,-0.8134l0 0 -2.792 -2.0105 -1.5147 1.8186 -1.1405 0.064 -0.8481 -3.6921 0 0 -0.9489 -2.3212c-0.3973,-0.4702 -0.6506,-0.9636 -1.1223,-1.3982 -0.1975,-0.1821 -0.9129,-1.0048 -0.8942,-1.252 0.0419,-0.5538 0.9786,-1.7558 1.3687,-2.1659 0.4262,-0.4482 0.812,-0.3332 0.812,-0.9413 0,-0.0937 -0.077,-0.6177 -0.1642,-0.6397 -0.0258,-0.1023 -0.9023,-0.2459 -1.0402,-0.265 -0.4038,-0.0559 -0.9436,-0.2602 -1.3504,-0.3747l0 0 -0.0182 -0.5483c0.3999,-0.8021 0.8034,-1.8489 0.9033,-2.7325 0.0912,-0.8063 -0.2007,-1.562 -0.2007,-2.312 0,-0.5284 0.0937,-1.0236 -0.0183,-1.5353 -0.0498,-0.1377 -0.4621,-0.5009 -0.5931,-0.5941 -0.1829,-0.1303 -0.2664,-0.3367 -0.3102,-0.5574 -0.0556,-0.2805 -0.9733,-0.7168 -1.25,-0.6763 -0.3608,0.0529 -0.4147,0.3502 -0.6478,-0.0822 -0.1123,-0.2082 -0.365,-0.8971 -0.365,-1.1149 0,-0.2404 0.0913,-0.4413 0.0913,-0.6763l3.4124 0.3198 0 0z","name": "Babil"},"13": {"path": "M110.562 116.442c0.4068,0.1145 0.9466,0.3188 1.3504,0.3747 0.1379,0.0191 1.0144,0.1627 1.0402,0.265 0.0872,0.022 0.1642,0.546 0.1642,0.6397 0,0.6081 -0.3858,0.4931 -0.812,0.9413 -0.3901,0.4101 -1.3268,1.6121 -1.3687,2.1659 -0.0187,0.2472 0.6967,1.0699 0.8942,1.252 0.4717,0.4346 0.725,0.928 1.1223,1.3982l0.9489 2.3212 0 0 -9.1612 3.8109 0 0 -8.4488 -8.6909 5.0366 -1.1698 5.4383 -2.4126c0.4377,-0.1706 0.8483,-0.4228 1.3139,-0.53 0.5642,-0.13 1.1933,-0.2833 1.7701,-0.2833l0.7116 -0.0823 0 0z","name": "Karbala"},"14": {"path": "M90.506 163.452l0.0552 -7.6588c0.03,-1.2041 0.803,-3.4239 1.7424,-4.2221 0.4244,-0.3605 0.7751,-0.8011 1.2227,-1.1514 0.4613,-0.3612 0.2431,-1.6802 0.3376,-2.2116 0.1101,-0.6266 0.0471,-1.0951 0.2919,-1.7089 0.3055,-0.7656 1.4143,-1.5634 1.4143,-2.3761 0,-1.201 -0.0783,-2.3028 0.7482,-3.2808 0.481,-0.271 1.0487,-1.5784 1.4142,-2.0653 0.6345,-0.845 1.2589,-2.026 2.0074,-2.7416 1.0954,-1.0474 2.1026,-1.1738 3.5037,-1.709 0.172,-0.0638 0.4123,-0.2855 0.5383,-0.4203 0.2464,-0.2638 0.5768,-0.4809 0.8486,-0.722 0.1316,-0.1166 0.2489,-0.2489 0.3832,-0.3564 0.1934,-0.155 0.4,-0.2356 0.6113,-0.3564l0.8851 -0.9779 -1.7701 -1.8825 0 0 -8.4488 -8.6909 5.0366 -1.1698 5.4383 -2.4126c0.4377,-0.1706 0.8483,-0.4228 1.3139,-0.53 0.5642,-0.13 1.1933,-0.2833 1.7701,-0.2833l0.7116 -0.0823 0 0 -0.0182 -0.5483c0.3999,-0.8021 0.8034,-1.8489 0.9033,-2.7325 0.0912,-0.8063 -0.2007,-1.562 -0.2007,-2.312 0,-0.5284 0.0937,-1.0236 -0.0183,-1.5353 -0.0498,-0.1377 -0.4621,-0.5009 -0.5931,-0.5941 -0.1829,-0.1303 -0.2664,-0.3367 -0.3102,-0.5574 -0.0556,-0.2805 -0.9733,-0.7168 -1.25,-0.6763 -0.3608,0.0529 -0.4147,0.3502 -0.6478,-0.0822 -0.1123,-0.2082 -0.365,-0.8971 -0.365,-1.1149 0,-0.2404 0.0913,-0.4413 0.0913,-0.6763l3.4124 0.3198 0 0 2.7459 -3.2899 0 0 -1.2135 -1.5901c-0.2411,-0.2632 -0.5015,-0.6908 -0.7299,-0.987 -0.2033,-0.2637 -0.5139,-0.4731 -0.7391,-0.7219 -0.5148,-0.5688 -0.6338,-0.7526 -0.6113,-1.5262 0.0143,-0.4901 -0.1625,-0.606 -0.3924,-0.9961 -0.3375,-0.5724 -0.5831,-0.6104 -1.1765,-0.7951l-4.5986 -0.0365 -1.2229 -0.9139 -5.4928 0 -7.7738 -9.7236 0.0182 -6.1046 -2.6642 3.0706 -5.8395 -4.0028 -0.4927 -7.9506 0 0 -8.8875 0.1005 -3.8322 -1.2154c-0.489,-0.1966 -1.9201,-0.5846 -2.2263,-1.0144 -0.8084,-0.2015 -1.7486,0.0048 -2.6004,-0.1005 -0.0507,-0.0405 -0.1489,-0.0666 -0.1734,-0.128 -0.3988,-0.2498 -0.7649,-0.8062 -1.1679,-1.1149 -0.4167,-0.3193 -1.0228,-0.5255 -1.5055,-0.722l-0.8248 -0.3194 0 0 0.2688 7.4385 -1.8796 2.6867 -2.4824 5.5381 -6.1439 1.9129 -32.8881 20.0199 0 0 5.2257 18.5888 -1.7046 0.3831 1.0767 3.7286 3.7044 -1.1515 0.7117 2.632 -1.6887 1.6632 0 0 20.6573 4.2038 0.9614 0.1338 18.3004 12.0572 11.4601 5.3553 14.7625 12.4109 0 0z","name": "Al-Anbar"},"15": {"path": "M165.453 151.479l-0.0091 5.8854 -0.5932 2.6684c-0.0522,0.2551 -0.2463,0.4326 -0.2463,0.6855 0,0.8395 0.3194,1.602 0.3194,2.44l-0.0183 0.0091c-0.0219,0.0671 -0.2542,-0.0589 -0.2919,-0.0822 -0.3278,-0.2033 -0.6957,-0.3292 -1.0402,-0.5118 -0.2032,-0.1078 -0.3797,-0.2546 -0.5931,-0.3564 -0.1746,-0.0834 -0.3946,-0.1322 -0.5566,-0.2193l-6.7519 2.4217 0 0 0.292 2.9061c0.1052,1.0482 0.763,2.0102 1.3321,2.8513 0.6738,1.0344 0.9124,2.0358 0.9124,3.2534 0,0.997 -0.0652,2.3344 -0.3558,3.2807l-1.2318 5.2365c-0.4309,0.9199 -0.7038,1.9957 -0.5748,3.0066 0.098,0.7688 0.0988,1.5953 -0.0274,2.3578 -0.0725,0.4376 -0.4319,0.7409 -0.584,1.1515 -0.2386,0.6436 -0.2984,1.1336 -0.3558,1.8277l0.0511 2.1816 0 0 0.1223 -0.0431 0 0 1.0219 -1.2246c0.4279,-0.4867 0.9857,-0.7778 1.3504,-1.3434 0.4638,-0.7195 0.9947,-1.4039 1.3777,-2.175 0.1946,-0.62 0.7632,-1.0096 1.2044,-1.4256 0.5611,-0.5292 1.0662,-1.6513 1.3048,-2.3852 0.3243,-0.9978 1.0336,-1.625 1.4599,-2.5314 0.2076,-0.4947 0.3285,-1.0143 0.3285,-1.5536 0,-0.6199 0.8541,-1.5675 1.0949,-2.1567 0.4087,-1.0003 0.8848,-2.0542 1.1496,-3.1163 0.7263,-0.4455 0.5627,-1.0391 1.5694,-1.1881 0.5172,-0.0766 1.0564,-0.4046 1.5055,-0.6762 0.8917,-0.5393 0.935,-0.8146 2.0712,-0.7951l5.3103 0.0914 4.5987 2.4035 0 0c0.8361,-1.2246 1.4959,-1.2524 2.865,-1.0053 0.6548,0.1182 1.2383,0.2292 1.8614,0.4844 0.9042,0.2583 1.6695,1.1473 2.4544,1.6541 0.3863,0.2495 1.2768,0.1553 1.7519,0.1553 0.2003,0 0.2928,-0.1462 0.4653,-0.1462 0.2109,0 0.5625,0.2198 0.8303,0.2559 0.2092,0.0281 0.3127,-0.3109 0.3011,-0.4661 -0.0109,-0.1447 -1.7336,-0.5362 -1.7336,-1.0327l0 0c-0.2009,-0.2437 -0.387,-0.5006 -0.6025,-0.7311 -0.3984,-0.4262 0.2683,-1.1175 -0.6204,-1.6449 -0.8411,-0.4991 -0.3467,-1.2779 -0.3467,-2.0288 0,-1.1 -3.0123,-2.4873 -3.6862,-3.162 -0.9131,-0.9143 -0.7351,-1.9992 -2.3906,-2.2847 -0.1302,-0.0224 -0.2564,-0.0463 -0.3964,-0.0749l0.1227 -10.8549 -6.1862 -0.0549 0.014 -4.2678 0 0c-0.4512,0 -1.1371,-0.0368 -1.5741,-0.1553 -0.3134,-0.085 -0.6251,-0.2825 -0.9398,-0.3472 -1.9628,-0.984 -4.4015,-0.5649 -6.2501,0.4295 -0.5423,0.2916 -0.7214,0.9144 -1.104,1.3251l0.0182 1.0783 0 0z","name": "Al-Basrah"},"16": {"path": "M123.618 145.923c0.7292,0.149 2.1274,1.4224 2.3176,2.175 0.1387,0.035 0.691,0.231 0.8029,0.1462 0,-0.4363 0.4832,-1.2759 0.7117,-1.6541 0.4955,-0.8205 0.5615,-2.0068 0.9854,-2.8421 0.2361,-0.4651 0.5515,-0.4205 0.8121,-0.7676 0.2281,-0.3036 0.2899,-0.7388 0.4836,-1.0784 0.449,-0.3804 -0.8037,-1.48 -1.1223,-1.6815 -0.9969,-0.6304 -0.5103,-0.5784 0.3193,-0.6489 0.5947,-0.0506 1.3589,0.1257 1.9161,-0.0365 0.3927,-0.1144 0.6208,-0.5669 0.7938,-0.9139 0.5096,-1.0224 3.4676,0.4535 4.3249,0.6032 0.4812,0.0266 1.0888,0.3407 1.5603,0.4935l2.2537 0.7311c0.5083,0.1648 1.0987,0.3838 1.6424,0.3838l0 0c0.3286,0.3898 0.4386,0.5572 0,0.8499 -0.432,0.2884 -0.1095,0.8627 -0.1095,1.252 0,0.8221 -0.2871,1.4774 -0.4745,2.2664 -0.0302,0.3456 -0.2723,0.5926 -0.3193,0.9138 -0.0264,0.181 -0.1534,0.7255 0.0821,0.8042 0.1266,0.0422 0.2772,-0.4031 0.4744,-0.1827 0.2767,0.3095 -0.276,0.8695 -0.3741,1.124 -0.506,1.3133 1.134,3.1928 -0.2737,4.2495 -0.411,0.5728 -0.3619,0.9718 -0.6204,1.5536 -0.3313,0.7454 -0.8025,0.4945 -1.2592,0.859 -0.0036,0.0262 -0.008,0.0355 -0.0274,0.0549 0,0.7611 -0.1587,2.1413 0.1734,2.8055 2.2243,1.0146 5.0953,0.9139 7.5458,1.0053 0.7267,0.2019 1.4957,0.3655 2.2537,0.3655 0.9282,0 1.984,0.5332 2.6825,1.115 0.3584,0.2984 0.7601,0.6089 1.0493,0.9869 0.2906,0.38 0.4902,0.8706 0.7847,1.2246 0.0748,0.5852 1.0292,1.9733 1.5055,2.3578 0.1826,0.1476 0.4818,0.077 0.7117,0.0914l0.4471 -0.1097 0 0 0.292 2.9061c0.1052,1.0482 0.763,2.0102 1.3321,2.8513 0.6738,1.0344 0.9124,2.0358 0.9124,3.2534 0,0.997 -0.0652,2.3344 -0.3558,3.2807l-1.2318 5.2365c-0.4309,0.9199 -0.7038,1.9957 -0.5748,3.0066 0.098,0.7688 0.0988,1.5953 -0.0274,2.3578 -0.0725,0.4376 -0.4319,0.7409 -0.584,1.1515 -0.2386,0.6436 -0.2984,1.1336 -0.3558,1.8277l0.0511 2.1816 0 0 -2.2986 0.8108 -30.2079 -2.8309 -15.6726 -13.1762 0 0 0.5267 -1.0497c0.4422,-0.4903 0.6831,-1.2336 1.1314,-1.7089 0.3147,-0.3338 0.4858,-0.7699 0.812,-1.0967 0.502,-0.5031 1.0261,-1.4414 1.1679,-2.1384 0.1869,-0.918 0.7479,-1.8816 0.8669,-2.7873 0.2574,-0.2271 0.4818,-1.3031 0.6295,-1.6633 0.7819,-1.9069 1.476,-4.1992 3.0293,-5.6568 0.5668,-0.3287 1.193,-1.2496 1.6789,-1.7364 0.7846,-0.7863 1.1811,-1.9164 1.9343,-2.7142 0.7764,-0.8222 0.9084,-2.2123 1.0675,-3.2807 0.3958,-0.5946 0.3389,-1.6152 0.9125,-2.1568 0.7358,-0.6949 1.2769,-1.6757 1.5602,-2.641 0.1945,-0.663 0.8421,-2.2653 1.3504,-2.7234l0 0z","name": "Al-Muthanna"},"17": {"path": "M140.06 133.641l0.5201 -0.2559c0.0619,-0.0774 0.1765,-0.1113 0.2646,-0.1553 0.0325,-0.0029 0.0352,-0.0039 0.0639,-0.0183l6.7246 -0.064 3.8687 -0.1553 0 0c0.1202,0.1861 0.2307,0.3072 0.2007,0.5209 -0.2216,0.1769 -0.5414,0.3451 -0.7847,0.4661 -0.0045,0.0183 -0.0091,0.0241 -0.0091,0.0457 0.476,0.2973 0.8841,0.8577 1.25,1.2977 0.2197,0.2641 0.4076,0.5606 0.5566,0.8681 0.1957,0.4037 0.2361,0.8306 0.4106,1.2246 -0.097,0.3668 -0.2101,1.8717 0.0456,2.1476 0.1728,0.1864 0.3313,0.2286 0.5019,0.4661 0.3374,0.4699 0.6379,0.1839 0.8394,0.8407 0.18,0.5867 0.8423,1.1041 1.3139,1.5353 0.6142,0.5614 0.3355,1.4218 0.1277,2.0745 -0.4442,1.3787 0.9951,1.6251 1.8796,2.1476 0.8425,0.4976 1.0676,0.4266 1.0676,1.4531 0,0.2347 -0.1295,0.3922 -0.1643,0.6305 -0.0223,0.1524 0.0635,1.1066 0.1278,1.2155 0.1275,0.2161 0.5099,0.3495 0.6752,0.6031 0.2468,0.3784 0.4049,0.901 0.9033,0.9047l2.3814 0.0183 2.6278 0.0274 0 0 -0.0091 5.8854 -0.5932 2.6684c-0.0522,0.2551 -0.2463,0.4326 -0.2463,0.6855 0,0.8395 0.3194,1.602 0.3194,2.44l-0.0183 0.0091c-0.0219,0.0671 -0.2542,-0.0589 -0.2919,-0.0822 -0.3278,-0.2033 -0.6957,-0.3292 -1.0402,-0.5118 -0.2032,-0.1078 -0.3797,-0.2546 -0.5931,-0.3564 -0.1746,-0.0834 -0.3946,-0.1322 -0.5566,-0.2193l-6.7519 2.4217 0 0 -0.4471 0.1097c-0.2299,-0.0144 -0.5291,0.0562 -0.7117,-0.0914 -0.4763,-0.3845 -1.4307,-1.7726 -1.5055,-2.3578 -0.2945,-0.354 -0.4941,-0.8446 -0.7847,-1.2246 -0.2892,-0.378 -0.6909,-0.6885 -1.0493,-0.9869 -0.6985,-0.5818 -1.7543,-1.115 -2.6825,-1.115 -0.758,0 -1.527,-0.1636 -2.2537,-0.3655 -2.4505,-0.0914 -5.3215,0.0093 -7.5458,-1.0053 -0.3321,-0.6642 -0.1734,-2.0444 -0.1734,-2.8055 0.0194,-0.0194 0.0238,-0.0287 0.0274,-0.0549 0.4567,-0.3645 0.9279,-0.1136 1.2592,-0.859 0.2585,-0.5818 0.2094,-0.9808 0.6204,-1.5536 1.4077,-1.0567 -0.2323,-2.9362 0.2737,-4.2495 0.0981,-0.2545 0.6508,-0.8145 0.3741,-1.124 -0.1972,-0.2204 -0.3478,0.2249 -0.4744,0.1827 -0.2355,-0.0787 -0.1085,-0.6232 -0.0821,-0.8042 0.047,-0.3212 0.2891,-0.5682 0.3193,-0.9138 0.1874,-0.789 0.4745,-1.4443 0.4745,-2.2664 0,-0.3893 -0.3225,-0.9636 0.1095,-1.252 0.4386,-0.2927 0.3286,-0.4601 0,-0.8499l0 0 -0.1643 -0.6397c-0.0906,-0.4092 -0.1642,-0.8057 -0.1642,-1.2246 0,-0.1583 0.0091,-0.3156 0.0091,-0.4752 0,-1.0179 -0.2138,-1.8422 -0.5383,-2.769 -0.209,-0.5972 -0.915,-1.3929 -0.5019,-2.0837l0 0z","name": "Dhi Qar"},"18": {"path": "M155.362 114.15c-0.549,0.6694 -0.4384,0.4112 -0.146,1.1678 0.1245,0.3217 -0.2927,1.1707 -0.4562,1.4804 -0.5552,1.051 -0.5231,2.3252 -0.7391,3.4545 -0.0997,0.5211 0.0274,0.8526 0.0274,1.3433 0,0.8189 -0.6205,0.3381 -0.6205,0.6946 -0.1209,1.063 -1.6659,2.1857 -0.9124,3.1346 0.4812,0.6059 0.6937,0.8924 0.8029,1.6723 0.0544,0.3883 0.7791,1.0131 1.1679,1.0693 0.0071,0.0178 0.0096,0.0203 0.0274,0.0274 0.0712,0.507 0.1938,0.8398 -0.3011,1.0509l-1.9708 0.8408c-0.1526,0.0763 -0.3893,0.0923 -0.5201,0.1828 -0.1769,0.1223 -0.0841,0.6409 -0.0183,0.8133 0.1165,0.3056 0.7227,0.6507 0.6478,1.0418 -0.0839,0.4385 -0.7022,0.4646 -0.8485,0.8682l0 0c0.1202,0.1861 0.2307,0.3072 0.2007,0.5209 -0.2216,0.1769 -0.5414,0.3451 -0.7847,0.4661 -0.0045,0.0183 -0.0091,0.0241 -0.0091,0.0457 0.476,0.2973 0.8841,0.8577 1.25,1.2977 0.2197,0.2641 0.4076,0.5606 0.5566,0.8681 0.1957,0.4037 0.2361,0.8306 0.4106,1.2246 -0.097,0.3668 -0.2101,1.8717 0.0456,2.1476 0.1728,0.1864 0.3313,0.2286 0.5019,0.4661 0.3374,0.4699 0.6379,0.1839 0.8394,0.8407 0.18,0.5867 0.8423,1.1041 1.3139,1.5353 0.6142,0.5614 0.3355,1.4218 0.1277,2.0745 -0.4442,1.3787 0.9951,1.6251 1.8796,2.1476 0.8425,0.4976 1.0676,0.4266 1.0676,1.4531 0,0.2347 -0.1295,0.3922 -0.1643,0.6305 -0.0223,0.1524 0.0635,1.1066 0.1278,1.2155 0.1275,0.2161 0.5099,0.3495 0.6752,0.6031 0.2468,0.3784 0.4049,0.901 0.9033,0.9047l2.3814 0.0183 2.6278 0.0274 0 0 -0.0182 -1.0783c0.3826,-0.4107 0.5617,-1.0335 1.104,-1.3251 1.8486,-0.9944 4.2873,-1.4135 6.2501,-0.4295 0.3147,0.0647 0.6264,0.2622 0.9398,0.3472 0.437,0.1185 1.1229,0.1553 1.5741,0.1553l0 0 0.0135 -4.0666 3.1297 -7.6948c0.1436,-0.3176 0.1733,-0.7101 -0.1004,-0.9687 -0.3373,-0.3189 -0.7493,-0.4132 -0.9763,-0.8682 0.0384,-0.0064 0.0106,0.0083 0,0.0457 0.0267,-0.121 0.2402,-0.466 0.1825,-0.5666 -0.0854,-0.1486 -0.3913,0.0567 -0.4562,-0.3016 -0.0914,-0.5052 -0.6178,-0.2766 -0.7847,-0.8224 -0.081,-0.2652 -0.2793,-0.5118 -0.3467,-0.7677 -0.0561,-0.2134 -0.1185,-0.826 -0.2281,-0.9778 -0.1325,-0.1833 -0.4651,0.0739 -0.6022,-0.2011 -0.1198,-0.2401 -0.1698,-0.3526 -0.3285,-0.5666 -0.1717,-0.2316 0.1868,-0.5057 -0.0548,-0.6762l-0.8668 -0.6123c-0.4558,-0.3219 -0.5969,0.4621 -0.8942,-0.3382 -0.0797,-0.2144 -0.319,-0.2227 -0.4379,-0.4386 -0.1088,-0.4756 0.2725,-0.6128 0.5657,-0.8316 0.2011,-0.1502 0.0912,-0.5676 0.0912,-0.8042 -0.4842,-0.1223 -0.7388,-0.3564 -0.9763,-0.8043 -0.2597,-0.49 0.4726,-0.348 0.1825,-0.8224 -0.1004,-0.1641 -0.8154,-0.0897 -1.0037,-0.2102 -0.0882,-0.0565 -0.0088,-0.2717 -0.0729,-0.3838 -0.0777,-0.1361 -0.447,-0.324 -0.365,-0.4478 0.2903,-0.4378 0.824,-0.6033 0.1004,-1.0784 -0.4074,-0.2721 -0.8716,-1.4212 -1.2957,-1.3617 -0.4328,0.0608 -1.5913,-0.4323 -1.6332,-0.4021 -0.289,0.2088 -0.3841,0.5829 -0.7756,0.658 -2.2778,0.4372 -4.0861,-2.2622 -5.7483,-3.3722 -0.5729,-0.3503 -1.1445,-0.8738 -1.4964,-1.4439 -0.2593,-0.4203 -0.7374,-0.375 -0.885,-0.859 -0.0872,-0.2858 -0.395,-0.4443 -0.5931,-0.658 -0.4187,-0.4518 -0.2114,-0.5109 -0.8486,-0.6854 -0.4109,-0.1126 -1.2475,-0.4197 -1.5055,-0.7676 -0.2374,-0.3203 -0.5014,-0.5594 -0.8303,-0.8043 -0.0332,-0.0331 -0.0666,-0.0661 -0.1003,-0.0985l0 0z","name": "Maysan"}},"height": 300,"width": 306});
Index: public/vendors/vmap/maps/jquery.vmap.new_regions_france.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.new_regions_france.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.new_regions_france.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,32 @@
+jQuery.fn.vectorMap('addMap','france_fr',
+  {"width":520,"height":550,
+    "pathes":{
+
+      "21":{"path":"M 174.2,23.3 L 174.5,21.8 L 172.5,19.6 L 169.6,19.9 L 166.8,21.8 L 165.3,21.1 L 163.9,18.6 L 162.2,18.6 L 161.6,17.2 L 162.1,14.3 L 160.9,11.3 L 159.5,10.5 L 151.2,12.6 L 144.5,14.7 L 141.6,17.1 L 141.6,26.1 L 143,27.9 L 141.6,27.1 L 141.3,30 L 141.5,31.9 L 142.7,32.7 L 140.8,33.4 L 140.6,34.9 L 142.2,37.7 L 140.8,36.9 L 137.5,41.4 L 143.8,46.7 L 145.5,50.9 L 144,53.3 L 144.7,57.6 L 144,61.6 L 145.7,65.8 L 143.7,67.1 L 144.5,68.7 L 147.3,69.3 L 150.5,68.4 L 155.1,69.5 L 156.2,68.7 L 161.6,71.9 L 165.1,72.4 L 166.1,71.3 L 167.3,72.1 L 171.4,70.6 L 172.7,71 L 173.6,72.2 L 173.3,73.6 L 175.2,75.7 L 179.9,78.7 L 183.7,73.6 L 182.4,73 L 182.9,71.6 L 182.1,70.4 L 184.8,69.3 L 183.2,65.3 L 183.8,63.9 L 187.8,61.9 L 190.5,62.9 L 190.9,61.4 L 190.8,54.3 L 192.2,54.2 L 194.7,50.6 L 194,49 L 194.7,47.3 L 194.3,44.4 L 194.1,44.4 L 192.3,43.8 L 193.9,40.7 L 192.4,38.1 L 193.4,34.8 L 192,35.1 L 190,32.7 L 187,33.2 L 184.2,32.6 L 183.1,33.6 L 182.1,29.1 L 179.3,28.4 L 178.8,27.1 L 177.3,28.1 L 175.8,27.6 L 174.2,23.3 z "
+        ,"name":"Hauts-de-France"},
+      "2":{"path":"M 137.5,41.4 L 137.4,41.5 L 132,45.3 L 120.9,48 L 113.8,51.9 L 110.9,58.2 L 111.8,59.3 L 116.2,60.3 L 116.3,60.3 L 115.5,60.6 L 115.4,60.6 L 112,61.4 L 109.6,63.5 L 104.8,64.9 L 100.5,63.1 L 94.3,62.4 L 89.5,60.8 L 86.9,61.9 L 83.7,56.7 L 84.9,52.7 L 84.4,51.4 L 81.1,51 L 79.9,51.9 L 76.6,52.1 L 70.9,49.8 L 70.8,51.2 L 72.5,52.1 L 72.7,54.6 L 71.8,55.6 L 73,60.7 L 77.3,65.3 L 76.6,70.3 L 77.6,71.7 L 77.4,74.7 L 76.2,77.5 L 78.3,82.2 L 79.6,82.9 L 80.9,82.1 L 80.4,83.6 L 76.8,83.9 L 79.2,88.7 L 80.5,89.2 L 84.1,86.8 L 86.8,88 L 91.1,88.4 L 92.8,90.2 L 94,89.4 L 95.2,90.3 L 98.6,88.6 L 103.2,88.6 L 103.5,87.3 L 104.9,87.4 L 105.8,90.4 L 107.5,91.2 L 107.5,92.7 L 109,92.7 L 114.5,89.8 L 115.8,90.5 L 116.6,94.7 L 120.3,97.2 L 121.7,96.7 L 123.3,98.5 L 124.9,98.8 L 124.8,98.8 L 124.3,95.1 L 128.1,92.5 L 127.8,90.2 L 127.9,88 L 125.5,85.8 L 125.5,84.2 L 126.7,82.9 L 129.6,82.3 L 132.3,80.7 L 133.7,81.5 L 136.7,80.9 L 136.6,79.5 L 139.6,76 L 138.7,73.1 L 139.8,71.8 L 141.8,71.9 L 143.7,67.1 L 145.7,65.8 L 144,61.6 L 144.7,57.6 L 144,53.3 L 145.5,50.9 L 143.8,46.7 L 137.5,41.4 z "
+        ,"name":"Normandie"},
+      "4":{"path":"M 173.3,73.6 L 173.6,72.2 L 172.7,71 L 171.4,70.6 L 167.3,72.1 L 166.1,71.3 L 165.1,72.4 L 161.6,71.9 L 156.2,68.7 L 155.1,69.5 L 150.5,68.4 L 147.3,69.3 L 144.5,68.7 L 143.7,67.1 L 141.8,71.9 L 139.8,71.8 L 138.7,73.1 L 139.6,76 L 141.4,79.3 L 141.7,84.8 L 144.7,87.5 L 145.3,90.3 L 146.5,91.4 L 148,91 L 149.4,96.3 L 149.5,96.3 L 152.9,95.9 L 153.9,94.5 L 154.6,95.9 L 156,95 L 157.9,95.3 L 158.2,96.8 L 160.3,98.9 L 160,100.3 L 158.7,101.1 L 163.3,101.4 L 168.9,100.1 L 170.8,97.4 L 170.9,94.5 L 178.6,93 L 178.4,88.7 L 179.9,88.3 L 181.4,85.8 L 180.1,85 L 178.4,80.8 L 179.6,79.7 L 179.9,78.7 L 175.2,75.7 L 173.3,73.6 z "
+        ,"name":"Île-de-France"},
+      "5":{"path":"M 86,95.2 L 86.8,94 L 86.8,88 L 84.1,86.8 L 80.5,89.2 L 79.2,88.7 L 76.8,83.9 L 71,84 L 71.2,81.1 L 69.5,81.5 L 67.6,83.4 L 68.7,86.1 L 67.7,85.3 L 66.9,83.1 L 65.4,83.1 L 65.4,84 L 63.4,84.2 L 62.9,82.6 L 61.3,83.3 L 60.8,82 L 59,82.2 L 53.7,86.6 L 53.2,84.8 L 51.2,83.5 L 51.2,81.9 L 48.9,78 L 47.4,77.7 L 47.7,76.3 L 46.2,76.5 L 45.4,78 L 46.1,74.7 L 43.7,76.3 L 43.4,74.5 L 39,76.3 L 38.3,75.1 L 36,76.9 L 35.9,80 L 34.3,80.2 L 34.2,80.2 L 31.8,78.8 L 30.4,79.1 L 30.1,80.8 L 29,79.4 L 28.2,81 L 28.1,77.8 L 20.9,79.9 L 20.2,78.6 L 15.1,81.4 L 16.4,82 L 12.2,81.6 L 11.2,82.8 L 10.5,87.3 L 11.4,88.5 L 12.8,87.9 L 14.1,88.5 L 20.2,86.7 L 18.4,87.5 L 18.1,89.2 L 21.1,88.5 L 20.9,90 L 22.3,90.6 L 20.8,90.9 L 23.9,92.2 L 20.9,91.5 L 20.3,90.3 L 18.4,90.8 L 15.5,90.2 L 14.6,89 L 13.9,90.9 L 15.1,93.5 L 16,92.1 L 17.4,92.2 L 20.1,93.8 L 20.5,95.4 L 19.7,96.6 L 18.4,96 L 12.2,96.6 L 11.4,97.8 L 16.2,99.6 L 18,102.7 L 17.5,105.5 L 21.2,105.8 L 23,103.7 L 23,103.5 L 23,103.5 L 22.6,102.1 L 23.1,102 L 23.3,100.4 L 24,101.9 L 23.1,102 L 23,103.5 L 24.5,104.5 L 26.8,103.7 L 29.1,106.6 L 30.5,106.3 L 30.5,104.9 L 30.7,106.3 L 32,105.9 L 31.7,107.3 L 33.1,107.6 L 35,106.8 L 35.1,105.3 L 35.5,109.2 L 36.8,109.9 L 38.1,109.3 L 37.9,106.3 L 38.1,107.8 L 39.7,108.1 L 38.6,109.2 L 39.3,110.5 L 41.2,111.3 L 42.5,110.7 L 41.3,111.3 L 41.4,112.7 L 42.5,114.1 L 42.1,116 L 43.2,117.1 L 42.6,115.7 L 43.9,114.5 L 45.5,114.1 L 46.7,115 L 46.1,112.1 L 47.7,114.5 L 48.4,113.3 L 50.3,113.6 L 51.3,114.8 L 50.3,116 L 47.2,115.6 L 49.6,117.5 L 55.8,117 L 57.1,117.8 L 55.6,117.8 L 56.4,119.1 L 64.1,116.9 L 64.3,113.9 L 66.9,112.2 L 73.5,112 L 74.3,110.5 L 78.8,108.6 L 82.2,110.4 L 82.4,109.3 L 84.2,105 L 86.9,103.9 L 86,95.2 z M 41.5,122.9 L 43.4,122.3 L 40.9,120.6 L 39.5,120.8 L 39.9,122.5 L 41.5,122.9 z "
+        ,"name":"Bretagne"},
+      "6":{"path":"M 275.2,70.9 L 270.9,69.4 L 263.6,69.1 L 259.4,65.4 L 256.3,67.5 L 252.8,66.9 L 251.5,67.5 L 250.4,65.5 L 248.9,64.8 L 247.5,65.6 L 247.4,67.1 L 246,66.7 L 242,62.2 L 241.1,59.2 L 239.6,58.2 L 234.1,56.9 L 231.9,58.7 L 230.5,58.7 L 227.8,57.5 L 226.1,56.1 L 222.7,56.1 L 222.1,57.5 L 219.3,57.8 L 217.5,54.2 L 216,54.4 L 216,52.8 L 213,52 L 209.6,49.1 L 206.6,49.1 L 207.1,45.9 L 205.7,43.1 L 205.7,41 L 207,38.4 L 205.6,37.7 L 203.6,39.8 L 202.7,43.1 L 198.4,45 L 195.7,44.1 L 194.3,44.4 L 194.7,47.3 L 194,49 L 194.7,50.6 L 192.2,54.2 L 190.8,54.3 L 190.9,61.4 L 190.5,62.9 L 187.8,61.9 L 183.8,63.9 L 183.2,65.3 L 184.8,69.3 L 182.1,70.4 L 182.9,71.6 L 182.4,73 L 183.7,73.6 L 179.9,78.7 L 179.6,79.7 L 178.4,80.8 L 180.1,85 L 181.4,85.8 L 179.9,88.3 L 178.4,88.7 L 178.6,93 L 180.5,93.7 L 182.7,96.5 L 183.9,100.6 L 184.9,99.5 L 186.7,101.6 L 189.2,107 L 195.5,106.2 L 197,106.9 L 198.1,105.9 L 201.2,105.5 L 203.5,103.5 L 205.4,103.8 L 207.2,104.1 L 207.5,105.5 L 208.8,106 L 208.6,107.4 L 210.1,107.6 L 210.9,108.7 L 211.5,110.2 L 210.1,111.4 L 211.2,113.8 L 215.8,114.8 L 217.3,115.6 L 217.3,117 L 219.7,116.1 L 220.3,114.8 L 223.6,112.9 L 224.7,113.8 L 226.2,113.3 L 226.4,109.1 L 227.4,107.9 L 228.9,108.1 L 230,106.5 L 229.9,105.8 L 233.9,102.9 L 237.4,105 L 240.3,104.2 L 242.7,106 L 245.3,104.9 L 249.5,108.2 L 250,107.9 L 253.8,110.4 L 254,114.9 L 255.4,114.8 L 256.4,117.4 L 254.5,117.6 L 254.5,117.7 L 256.3,117.4 L 257.7,117.8 L 257.3,119.2 L 261.1,119.3 L 262.4,118.8 L 262.7,117.2 L 264.2,117.2 L 264.3,115.6 L 265.4,114.6 L 263.9,110.7 L 265.3,103 L 264.3,97.9 L 267.3,90.9 L 268,83.1 L 273.3,76.2 L 275.2,70.9 z  "
+        ,"name":"Grand-Est"},
+      "8":{"path":"M 86.8,94 L 86,95.2 L 86.9,103.9 L 84.2,105 L 82.4,109.3 L 82.2,110.4 L 78.8,108.6 L 74.3,110.5 L 73.5,112 L 66.9,112.2 L 64.3,113.9 L 64.1,116.9 L 56.4,119.1 L 54.2,121.3 L 55.4,124.4 L 58.4,124.9 L 59.4,125.9 L 61.9,124.1 L 65.5,123.8 L 62.1,125 L 61.8,128.4 L 60.3,129 L 63.3,130.1 L 65.7,132.6 L 61.8,136.7 L 62,138.9 L 67.2,145 L 68.2,148.6 L 72.3,151.9 L 74.7,152.5 L 75.5,154.2 L 78.4,154.8 L 80.8,156.7 L 81.1,155.3 L 82.6,155.6 L 87,153.9 L 86.3,155.3 L 89.5,155.2 L 90.7,156.1 L 95.2,153.8 L 94,152.8 L 94.1,149.2 L 91.7,140.2 L 89.6,138.1 L 88.5,135.3 L 94.6,134.9 L 96.5,132.5 L 99.3,132.1 L 104.1,132 L 105.2,133.1 L 108.6,130.2 L 108.6,130.1 L 111.4,122.5 L 112.3,117.8 L 112.7,116.6 L 115.7,117.9 L 115.5,116.3 L 116.9,116.4 L 120.7,114.2 L 121,112.4 L 122.6,111.9 L 125.7,106.6 L 125.6,103.8 L 124.7,102.7 L 125.7,101.7 L 125.7,101.6 L 125.9,100.7 L 124.9,98.8 L 123.3,98.5 L 121.7,96.7 L 120.3,97.2 L 116.6,94.7 L 115.8,90.5 L 114.5,89.8 L 109,92.7 L 107.5,92.7 L 107.5,91.2 L 105.8,90.4 L 104.9,87.4 L 103.5,87.3 L 103.2,88.6 L 98.6,88.6 L 95.2,90.3 L 94,89.4 L 92.8,90.2 L 91.1,88.4 L 86.8,88 L 86.8,94 z "
+        ,"name":"Pays de la Loire"},
+      "9":{"path":"M 172.4,106.7 L 172.2,103.8 L 168.9,100.1 L 163.3,101.4 L 158.7,101.1 L 160,100.3 L 160.3,98.9 L 158.2,96.8 L 157.9,95.3 L 156,95 L 154.6,95.9 L 153.9,94.5 L 152.9,95.9 L 149.5,96.3 L 149.4,96.3 L 148,91 L 146.5,91.4 L 145.3,90.3 L 144.7,87.5 L 141.7,84.8 L 141.4,79.3 L 139.6,76 L 136.6,79.5 L 136.7,80.9 L 133.7,81.5 L 132.3,80.7 L 129.6,82.3 L 126.7,82.9 L 125.5,84.2 L 125.5,85.8 L 127.9,88 L 127.8,90.2 L 128.1,92.5 L 124.3,95.1 L 124.8,98.8 L 124.9,98.8 L 125.9,100.7 L 125.7,101.6 L 125.7,101.7 L 124.7,102.7 L 125.6,103.8 L 125.7,106.6 L 122.6,111.9 L 121,112.4 L 120.7,114.2 L 116.9,116.4 L 115.5,116.3 L 115.7,117.9 L 112.7,116.6 L 112.3,117.8 L 111.4,122.5 L 108.6,130.1 L 108.6,130.2 L 111.3,131.8 L 111.4,133.4 L 112.9,133.2 L 113.6,136.3 L 115,137 L 120,136.8 L 119.2,135.3 L 121.9,136.8 L 122,138.4 L 126.6,144.9 L 126.2,147.8 L 128.6,150 L 130,150 L 131.3,152.7 L 132.6,153.3 L 131.8,154.7 L 133.1,155.3 L 136,154.7 L 136.8,156 L 138.3,154.5 L 144,154 L 144.9,152.7 L 151.5,154.1 L 152.9,153.7 L 155.4,153.8 L 155.3,153.7 L 157.1,150.8 L 161.5,150.3 L 162.3,149.1 L 161.5,146.4 L 162.6,145.5 L 166.8,144 L 169.2,142.2 L 171.2,142.2 L 172,134.8 L 170.9,133.8 L 170.8,130.9 L 169.2,127.1 L 167.8,126 L 168.7,123.1 L 167.7,119.9 L 168.4,118.7 L 169.9,118.3 L 168.7,114.9 L 167.2,113.5 L 169.9,111.8 L 170.7,110.6 L 170.1,109.2 L 172.4,106.7 z "
+        ,"name":"Centre-Val-de-loire"},
+      "10":{"path":"M 170.9,94.5 L 170.8,97.4 L 168.9,100.1 L 172.2,103.8 L 172.4,106.7 L 170.1,109.2 L 170.7,110.6 L 169.9,111.8 L 167.2,113.5 L 168.7,114.9 L 169.9,118.3 L 168.4,118.7 L 167.7,119.9 L 168.7,123.1 L 167.8,126 L 169.2,127.1 L 170.8,130.9 L 170.9,133.8 L 172,134.8 L 171.2,142.2 L 174.1,145.3 L 177.3,145.4 L 178.7,144.6 L 180.9,146.4 L 183.9,143.4 L 187.2,150.2 L 191.1,151.7 L 192,152.8 L 191.7,155.6 L 189.9,157.9 L 189.9,159.4 L 192.4,161 L 196.4,160.3 L 197.5,161.3 L 200.3,159.4 L 200.5,157.9 L 201.7,157 L 202.7,157.8 L 203.9,157 L 205.1,157.8 L 205.9,156.7 L 208.8,160.5 L 211.7,150 L 214.6,150.8 L 217.3,150.2 L 219.8,151.8 L 221.9,155.7 L 223.4,155.7 L 223.4,157.2 L 224.9,157.1 L 226.9,154.9 L 228.5,155.7 L 228.7,157.1 L 230.7,157 L 233.4,155.4 L 235.8,152.1 L 235.7,152 L 237.5,146 L 243.3,140.6 L 242.9,135.8 L 247.2,132.8 L 253.1,125.6 L 253,124.1 L 254.1,123.1 L 252,121.3 L 252.4,119.8 L 252.5,119.7 L 254.3,117.7 L 254.5,117.7 L 254.5,117.6 L 256.4,117.4 L 255.4,114.8 L 254,114.9 L 253.8,110.4 L 250,107.9 L 249.5,108.2 L 245.3,104.9 L 242.7,106 L 240.3,104.2 L 237.4,105 L 233.9,102.9 L 229.9,105.8 L 230,106.5 L 228.9,108.1 L 227.4,107.9 L 226.4,109.1 L 226.2,113.3 L 224.7,113.8 L 223.6,112.9 L 220.3,114.8 L 219.7,116.1 L 217.3,117 L 217.3,115.6 L 215.8,114.8 L 211.2,113.8 L 210.1,111.4 L 211.5,110.2 L 210.9,108.7 L 210.1,107.6 L 208.6,107.4 L 208.8,106 L 207.5,105.5 L 207.2,104.1 L 205.4,103.8 L 203.5,103.5 L 201.2,105.5 L 198.1,105.9 L 197,106.9 L 195.5,106.2 L 189.2,107 L 186.7,101.6 L 184.9,99.5 L 183.9,100.6 L 182.7,96.5 L 180.5,93.7 L 178.6,93 L 170.9,94.5 z  "
+        ,"name":"Bourgogne-Franche-Comté"},
+      "11":{"path":"M 166.8,144 L 162.6,145.5 L 161.5,146.4 L 162.3,149.1 L 161.5,150.3 L 157.1,150.8 L 155.3,153.7 L 155.4,153.8 L 155.9,155.7 C 157.2,156.5 158.4,157.3 159.6,158.2 L 161.4,162.3 L 161.2,164.4 L 162.3,167.7 L 157.6,172 L 159.9,174.8 L 160.5,177.6 L 159.6,178.8 L 160.6,185.7 L 157.5,184.7 L 157.1,186.5 L 153.3,191.2 L 154.3,192.3 L 153.1,193.3 L 153,195 L 151.4,195.6 L 152.2,197.3 L 150.5,198.2 L 151,200.9 L 152.9,203.9 L 152,206.8 L 153.7,209.3 L 156.3,207.7 L 159.4,208.5 L 161.3,206.1 L 162.8,201.5 L 165.2,199.4 L 167.8,201.4 L 168.4,203.5 L 169.6,204.3 L 169.4,205.8 L 170.7,208.4 L 174.1,200.4 L 175,201.6 L 178.9,198.2 L 180,199.1 L 180.8,201.9 L 184,202.5 L 184.1,201.1 L 185.5,201.2 L 190,205.1 L 191,209.6 L 194.5,216.7 L 198.4,219.2 L 201.9,217 L 202,218.6 L 203.3,217.5 L 204.6,217.5 L 207.7,219.2 L 207.6,217.4 L 210.5,217.7 L 212.3,219.8 L 216.6,217.9 L 217.8,218.6 L 219.1,217.5 L 219.3,220.4 L 224,220.8 L 224.1,222.2 L 226.7,223.4 L 228.8,221 L 230,220.9 L 230.5,220.8 L 230.6,218.5 L 225.6,215.6 L 224.8,214.3 L 226.4,211.8 L 228.5,212.5 L 229.8,211.2 L 228.3,210.1 L 229.5,206.7 L 232.4,206.5 L 232.6,204.9 L 233,203.3 L 235.8,202.7 L 236.2,201.3 L 242.5,199.4 L 244.1,199.9 L 244.3,197 L 242.1,195.5 L 241.2,193.4 L 242,191.5 L 245.9,193.2 L 246.9,192.2 L 249.9,191.6 L 249.9,191.6 L 259.6,187.5 L 260.6,185.6 L 259.9,184.3 L 261.4,181.7 L 257.7,179.2 L 256.6,176.4 L 256.9,174.9 L 254.2,173.7 L 252.7,172.4 L 252.5,170.9 L 252.5,170.8 L 252.6,170.7 L 256.7,166.7 L 257.2,165.2 L 255.5,162.9 L 251.6,159.2 L 252.8,156.1 L 250.9,153.4 L 251.1,152 L 249.5,151.7 L 245.2,151.9 L 242.7,154 L 241,153.3 L 239.6,156.2 L 240.8,157.7 L 237.3,160.4 L 233.8,160.9 L 234.1,158.3 L 236.9,156.6 L 237.5,153.1 L 235.8,152.1 L 233.4,155.4 L 230.7,157 L 228.7,157.1 L 228.5,155.7 L 226.9,154.9 L 224.9,157.1 L 223.4,157.2 L 223.4,155.7 L 221.9,155.7 L 219.8,151.8 L 217.3,150.2 L 214.6,150.8 L 211.7,150 L 208.8,160.5 L 205.9,156.7 L 205.1,157.8 L 203.9,157 L 202.7,157.8 L 201.7,157 L 200.5,157.9 L 200.3,159.4 L 197.5,161.3 L 196.4,160.3 L 192.4,161 L 189.9,159.4 L 189.9,157.9 L 191.7,155.6 L 192,152.8 L 191.1,151.7 L 187.2,150.2 L 183.9,143.4 L 180.9,146.4 L 178.7,144.6 L 177.3,145.4 L 174.1,145.3 L 171.2,142.2 L 169.2,142.2 L 166.8,144 z M 216.9,215.5 L 215.7,217.2 L 213.7,217.8 L 212.7,216.7 L 213.3,215.2 L 214.6,214.1 L 216.9,215.5 z  "
+        ,"name":"Auvergne-Rhône-Alpes"},
+      "12":{"path":"M 79.4,172.2 L 80,174.4 L 83.9,176.8 L 89.1,182.4 L 90.2,186.1 L 90.2,186.2 L 90.5,187.6 L 89.4,189.2 L 88.1,185.3 L 82.8,180.1 L 82.3,178.7 L 80.9,181.5 L 77.8,206.6 L 79.8,202.7 L 82,205.3 L 82.1,206.7 L 78.9,206.3 L 77.3,209.7 L 77.3,212.1 L 71.9,237.1 L 69.9,240.6 L 67.6,243.8 L 64.5,246.1 L 67.4,247.5 L 67.6,249 L 68.8,248 L 72,248.6 L 72.8,250.1 L 71.8,253 L 70.5,254.2 L 71.1,255.6 L 73.1,256.1 L 73.3,254.3 L 74.8,253.8 L 74.9,255.5 L 77.9,257.1 L 82.7,258.9 L 85.8,258.8 L 87.1,261.1 L 91,264.4 L 92.2,263.5 L 93.4,264.2 L 96.3,262.7 L 96.4,262.7 L 97,258.4 L 97.8,257 L 99.5,256.6 L 99.3,255.1 L 103.3,250.5 L 102.9,248.9 L 104.2,248.2 L 104,244.6 L 102.6,244.6 L 103.3,243.2 L 102.1,240.3 L 102,240.3 L 98.7,240.2 L 98,238.8 L 100.1,233.3 L 99.8,230.1 L 104.5,228.7 L 104.8,230.2 L 106.1,229.6 L 106.2,228.1 L 106.2,228.1 L 108.1,228.5 L 108.8,227.2 L 113,227.5 L 115.5,226.1 L 119.8,226.6 L 121.1,226 L 122.9,223.6 L 124.3,223.7 L 123.6,222.3 L 125.8,219.6 L 124.6,218.9 L 124.6,217.4 L 128.3,216.4 L 127.1,211.9 L 128.8,210.3 L 131.1,207.1 L 134.1,205.4 L 133.8,203.6 L 136.1,202 L 137.1,196.8 L 141.1,196.4 L 144.5,199.5 L 147.1,198.1 L 150.5,198.2 L 152.2,197.3 L 151.4,195.6 L 153,195 L 153.1,193.3 L 154.3,192.3 L 153.3,191.2 L 157.1,186.5 L 157.5,184.7 L 160.6,185.7 L 159.6,178.8 L 160.5,177.6 L 159.9,174.8 L 157.6,172 L 162.3,167.7 L 161.2,164.4 L 161.4,162.3 L 159.6,158.2 C 158.4,157.3 157.2,156.5 155.9,155.7 L 155.4,153.8 L 152.9,153.7 L 151.5,154.1 L 144.9,152.7 L 144,154 L 138.3,154.5 L 136.8,156 L 136,154.7 L 133.1,155.3 L 131.8,154.7 L 132.6,153.3 L 131.3,152.7 L 130,150 L 128.6,150 L 126.2,147.8 L 126.6,144.9 L 122,138.4 L 121.9,136.8 L 119.2,135.3 L 120,136.8 L 115,137 L 113.6,136.3 L 112.9,133.2 L 111.4,133.4 L 111.3,131.8 L 108.6,130.2 L 105.2,133.1 L 104.1,132 L 99.3,132.1 L 96.5,132.5 L 94.6,134.9 L 88.5,135.3 L 89.6,138.1 L 91.7,140.2 L 94.1,149.2 L 94,152.8 L 95.2,153.8 L 90.7,156.1 L 89.5,155.2 L 86.3,155.3 L 87,153.9 L 82.6,155.6 L 80.3,160.4 L 81.7,160.8 L 83.8,164.8 L 82.4,165.1 L 83.2,167.7 L 81.7,170.7 L 79.4,172.2 z M 101.9,249 L 102,250.4 L 100.8,249.6 L 101.9,249 z M 74.2,157.2 L 74.2,157.1 L 74.7,158.3 L 75.3,158.2 L 77.6,160.2 L 79,159.5 L 76.3,157.8 L 76.3,157.8 L 74.2,157.2 z M 79.9,165.8 L 77.3,164.2 L 76.4,165.5 L 79.7,171.1 L 80.3,169.5 L 79.9,165.8 z "
+        ,"name":"Nouvelle-Aquitaine"},
+      "13":{"path":"M 242,191.5 L 241.2,193.4 L 242.1,195.5 L 244.3,197 L 244.1,199.9 L 242.5,199.4 L 236.2,201.3 L 235.8,202.7 L 233,203.3 L 232.6,204.9 L 232.4,206.5 L 229.5,206.7 L 228.3,210.1 L 229.8,211.2 L 228.5,212.5 L 226.4,211.8 L 224.8,214.3 L 225.6,215.6 L 230.6,218.5 L 230.5,220.8 L 230,220.9 L 228.8,221 L 226.7,223.4 L 224.1,222.2 L 224,220.8 L 219.3,220.4 L 219.1,217.5 L 217.8,218.6 L 216.6,217.9 L 212.3,219.8 L 210.5,217.7 L 207.6,217.4 L 207.7,219.2 L 209,221.4 L 209,224.2 L 212.2,227.4 L 208,232 L 207,237.2 L 205.4,236.8 L 203.3,239.2 L 203.8,240.5 L 200.9,241.4 L 199,244.4 L 206.1,244.6 L 207.1,245.8 L 206.9,247.2 L 208.7,247.6 L 213.6,247.1 L 212.5,245.9 L 213.1,244.7 L 214.5,244.8 L 216.8,247.5 L 223.4,246.8 L 225.3,251.2 L 230.2,252.4 L 231.6,252 L 234.7,253.8 L 234.6,255.2 L 239,253.9 L 242,254.7 L 242.6,256.1 L 243.6,253.4 L 247.3,254 L 247.3,252.6 L 250.1,251.9 L 251.5,250.7 L 253.4,250.9 L 254.5,248.2 L 252.7,247.3 L 255.8,243.3 L 258.5,242.9 L 260.7,239.1 L 263.5,237.7 L 264.1,235.7 L 271.3,231.7 L 271.5,228.1 L 274.6,223.8 L 275.7,221.6 L 273.7,219 L 267.7,221.1 L 263.1,218.7 L 259.9,218 L 256.8,214.3 L 257.8,211.8 L 255.8,209.1 L 256.9,208.2 L 257.6,205.2 L 257.6,205.2 L 257.7,205.1 L 258.6,204 L 260.4,204.1 L 258.5,199.4 L 255.5,199.2 L 252.9,197.6 L 252.5,194.3 L 251.1,194.2 L 249.9,191.6 L 246.9,192.2 L 245.9,193.2 L 242,191.5 z M 218.4,241.8 L 219.5,243.8 L 221.1,243.1 L 220,245 L 218.4,245.6 L 216.1,243.4 L 216.4,241.8 L 218.4,241.8 z M215.7,217.2l1.2-1.7l-2.3-1.4l-1.3,1.1l-0.6,1.5l1,1.1L215.7,217.2z "
+        ,"name":"Provence-Alpes-Côte d'Azur"},
+      "14":{"path":"M 280.3,246.2 L 279.4,241.7 L 277.9,241.1 L 276.8,242.1 L 277,250.8 L 272.7,250.2 L 270.9,252.6 L 265.6,254.7 L 265.2,256.2 L 263.8,256.3 L 262.7,257.7 L 262.8,259.4 L 260.9,261.9 L 260.6,263.4 L 261.9,262.9 L 263.8,265 L 261.2,266.9 L 261.7,269.6 L 265.6,271.8 L 264.4,272.6 L 262.9,276.8 L 266.4,275.5 L 266.9,278.4 L 265.6,281.9 L 270.4,282.9 L 267.9,284.6 L 267.8,286 L 270.2,288.2 L 275.8,289.9 L 276.4,291.3 L 277.9,291.9 L 280.9,284.6 L 279.2,284.4 L 280.5,283.4 L 281.6,280.7 L 281.2,273.3 L 283.9,267.4 L 282,254.3 L 279.9,251.5 L 280.3,246.2 z "
+        ,"name":"Corse"},
+      "15":{"path":"M 141.1,196.4 L 137.1,196.8 L 136.1,202 L 133.8,203.6 L 134.1,205.4 L 131.1,207.1 L 128.8,210.3 L 127.1,211.9 L 128.3,216.4 L 124.6,217.4 L 124.6,218.9 L 125.8,219.6 L 123.6,222.3 L 124.3,223.7 L 122.9,223.6 L 121.1,226 L 119.8,226.6 L 115.5,226.1 L 113,227.5 L 108.8,227.2 L 108.1,228.5 L 106.2,228.1 L 106.2,228.1 L 106.1,229.6 L 104.8,230.2 L 104.5,228.7 L 99.8,230.1 L 100.1,233.3 L 98,238.8 L 98.7,240.2 L 102,240.3 L 102.1,240.3 L 103.3,243.2 L 102.6,244.6 L 104,244.6 L 104.2,248.2 L 102.9,248.9 L 103.3,250.5 L 99.3,255.1 L 99.5,256.6 L 97.8,257 L 97,258.4 L 96.4,262.7 L 102,267.7 L 108.1,266.9 L 109.3,267.9 L 117.4,268 L 118.5,266.9 L 118.4,263.6 L 119.6,263 L 127.9,265.4 L 130.3,267.6 L 133.5,267.4 L 136.3,271.2 L 136.9,269.7 L 138.6,269.6 L 143.8,272.2 L 142.9,274.6 L 147.3,275.9 L 148.5,278.7 L 150.1,278.8 L 152.3,276.8 L 153.9,276.8 L 158.6,277.8 L 160.9,279.6 L 164,279.4 L 164,277.9 L 168.1,275.8 L 171.2,275.2 L 175.5,276.4 L 172.6,272.8 L 172.7,259.1 L 175.5,253.7 L 176.8,252.4 L 176.8,252.4 L 179.5,250.4 L 182.9,250.4 L 186.2,246.7 L 191.7,242.7 L 195.9,241.6 L 197.4,244 L 198.9,244.4 L 199,244.4 L 200.9,241.4 L 203.8,240.5 L 203.3,239.2 L 205.4,236.8 L 207,237.2 L 208,232 L 212.2,227.4 L 209,224.2 L 209,221.4 L 207.7,219.2 L 204.6,217.5 L 203.3,217.5 L 202,218.6 L 201.9,217 L 198.4,219.2 L 194.5,216.7 L 191,209.6 L 190,205.1 L 185.5,201.2 L 184.1,201.1 L 184,202.5 L 180.8,201.9 L 180,199.1 L 178.9,198.2 L 175,201.6 L 174.1,200.4 L 170.7,208.4 L 169.4,205.8 L 169.6,204.3 L 168.4,203.5 L 167.8,201.4 L 165.2,199.4 L 162.8,201.5 L 161.3,206.1 L 159.4,208.5 L 156.3,207.7 L 153.7,209.3 L 152,206.8 L 152.9,203.9 L 151,200.9 L 150.5,198.2 L 147.1,198.1 L 144.5,199.5 L 141.1,196.4 z M102,250.4l-0.1-1.4l-1.1,0.6L102,250.4z "
+        ,"name":"Occitanie"}
+    }
+  });
Index: public/vendors/vmap/maps/jquery.vmap.russia.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.russia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.russia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add Russia Map Data Points */
+jQuery.fn.vectorMap('addMap','russia_en',{"width":959,"height":593,"paths":{"da":{"path":"m34.939,403.74,2.6516,1.2627,3.6618,0.50507,1.7678-2.0203,2.1466,2.0203,2.3991-1.6415,0.25254-1.7678,1.6415-2.1466,3.0305,0.50508,3.7881-2.9042-0.50508-1.894-4.7982-0.50508,0.75762-3.1567-1.0102-0.63134,0.63135-2.2728-3.1567-2.7779,1.5152-0.50508,3.9143,0.88388,0-1.389-1.0102-1.2627,8.3338-0.25254,4.9245,5.4296,1.2627,1.894-0.37881,2.2728-5.3033-0.3788,0.50508,2.5254,1.5152,3.0304-1.0102,3.5355-2.3991,2.7779-1.2627,0.25254,4.5457,0.75761-5.5558,2.1466-0.50508,2.0203-0.75762,0.50508-3.0305,0.50507-0.25254,4.7982-1.2627,0.88388-1.1364,13.132-9.0914-0.12627-3.6618-2.2728-1.389-0.88388,0-11.617-3.283-5.9346,0.37881-2.9042,1.2627-0.37881z","name":"Republic of Dagestan"},"sa":{"path":"M671.25,126.75l-1.44,1.06-1.25,1.63s1.44,0.87,2.16,0.87c0.71,0,2.69-1.97,2.69-1.97l-2.16-1.59zm18.47,12.09c-0.18-0.01-0.4,0.02-0.63,0.07-1.78,0.35-4.81,1.93-4.81,1.93s-1.41,1.1-2.12,1.1c-0.72,0-2.35-0.38-2.35-0.38-0.71,0-2.5,1.25-2.5,1.25l-1.4,1.78s-1.1-0.51-1.1,0.38-0.35,1.96,0.72,2.5c1.07,0.53,1.61,1.06,2.5,1.06s3.22-0.72,3.22-0.72l1.97-0.87,1.97,1.06s0.51-0.9,1.4-1.44c0.9-0.53,3.4-2.31,3.75-3.03,0.36-0.71,0.72-3.22,0.72-3.22s-0.11-1.36-1.34-1.47zm-19.81,7.1c-0.15,0.01-0.29,0.05-0.44,0.09-1.25,0.36-2.85,0.19-3.56,0.19-0.72,0-0.91,0.19-0.91,0.19s-0.88,1.58-1.59,1.93c-0.72,0.36-1.99,0.74-3.07,0.57-1.07-0.18-3.75-1.25-3.75-1.25s-1.93-0.02-1.93,1.59,3.03,3.41,3.03,3.41l1.06,1.4s-2.51,0.73-3.41,0.38c-0.89-0.36-2.65-2.16-2.65-2.16l-3.22-0.72s-2.88,0.2-2.88,1.1c0,0.89-0.68,2.67-0.68,3.56s-0.9,3.04,0.53,3.94c1.43,0.89,1.79,3.03,1.97,3.75,0.17,0.71,0.7,1.77,2.84,2.31,2.14,0.53,4.29,0.53,5,1.06,0.71,0.54,1.77,1.07,2.84,0.53,1.08-0.53,1.82-2.65,1.82-2.65l2.12-1.97s1.61-1.44,2.5-2.16c0.89-0.71,2.7-0.54,4.13-1.44,1.42-0.89,2.31-3.75,2.31-3.75v-5l-0.38-4.43s-0.68-0.58-1.68-0.47zm106.25,5.62c-0.45,0.09-0.75,4.1-0.75,4.1l-7.32,1.65-3.28,0.63-4.53-6.06-7.84-0.13-0.38,0.87-5.68,1.66-1.76,2.13-6.06,6.31v2.78l-2.15,1.91-3.29,5.03-4.93-2.38-3.41-0.37-1.75,2h-4.56l-3.41,1.78-1.75-1.53,4.28-2.91-2.28-1.62-3.03-0.13-8.84,4.03,1.9,5.44-0.87,4.78-2.66,2.91-1.65-2.13,3.03-7.47-1.75-0.37-2.66,4.03-3.03,2.03-1-0.75,1-3.16,2.28-0.74,2.91-2.66-7.1,1.75-9.22,5.31-6.68,0.25,3.65,3.66-3.65,3.4-0.5,3.03,0.37,1.16,3.91-1.78-1,4.03,4.81,2.91-0.91,2.9-2-1.37-3.68,1,1.28,3.41,2.4-0.26-1.03,2.66-3.9-0.5-4.28-1.66-3.53,0.26-2.41,3.15-0.63,4.06h-6.46l-1.76-1.53-2.4-2-0.5,4.41,0.87,0.87-0.12,1.41,1.65,0.87-0.9,2.54,1.66,6.18-3.29-1.4-1,1.15-9.87-5.31v-4.94l-2.25,0.13-1.78,2.41-2-3.41,3.65-0.63-0.5-2.9-4.43-1.66,0.75-0.87,0.12-2.53-5.28-4.04-5.31-2.53-1,3.66-7.35,0.65-2.37-1.65-4.19,2.15v2.13l4.19,4.69-10.94,5.31-10.28-1.16,0.44-4.4-12.07,0.19-3.96,3.78h-2.85l-1.09,1.09,2.66,2.87h-2.13l-2.91-2.06,1.19-2.09-0.87-1.38-1.54-1.78,0.07,2.28-1.5,1.07-3.85-1.32s-2.9,3.53-2.84,3.78c0.06,0.26,2.66,3.29,2.66,3.29l-1.41,3.34,1.59,2.09,0.19,2.78,7.38,5.82-0.32,5.47,2.53,1.9,1.63,2.53-2.53,2.72-4.41,3.03-0.69,2.63-4.81,2.78,0.25,6.12-2.25,1.1-2.97-1.28-5.65,4.75-4.44,0.09,0.06,1.97,5.38,6.59,1.78,20.1-6.35,1.97,4.19,3.4-1.78,4.19v1.25l7.16,8.84-4.57,6.69,0.97,1.6-2.4,1.87,0.09,2.25,5.63,0.34,0.71,0.72,9.1,0.19,3.31,3.31-0.53,1.6-3.31,0.34,0.19,3.94,4.03-1.06,5.06,6.59-0.53,5.53,3.84,5.19-1.97,3.4,0.53,2.13,7.69,6.53v4.37l-3.75,6.44,0.28,10.78,3.85,4.13,3.37-3.94,3.75,0.09,1.88-1.34,2.68-0.62,2.41-2.07,3.56,3.85,0.38,2.31,4-5.06,0.09-4.13,5.38-2.75-0.29-6.25,2.32-4.12,3.84-1.5,4.91,1.06,6.15,4.91,0.57,3.84,1.31,0.87,4.03-1.4,2.5-2.06,2.69,1.06,0.87,4.47,3.13,4.56,2.15,1.78v3.03l2.32,1.35,0.71,4.71,3.94,0.19,0.97,1.35,1.53,4.09,8.38-0.25,3.31-1.97,5.53,1.16,3.56,1.97,11-0.72,5.54,3.75,2.21,0.53,5.19-2.6h2.6l3.03,2.26,2.78-0.19,3.22-3.94,5.68-0.06,2.5-1.97h7.88l0.19-3.75,10.68-5.09,0.82-3.04-4.28-4.12,2.31-1.69,0.62-4.03-1.34-1.69-2.41,0.38-2.03-1.44,2.75-4.03-2.84-1.6,0.25-1.87,1.53-1.97-1.44-1.44-3.47-1.15-0.53-1.6,3.38-1.43-1.88-0.91-0.19-5.25-0.87-0.62-0.19-1.88,2.78-1.25-1.62-1.25v-2.94l5.47-1.97,3.12,0.16,0.25-1.78,6.53,0.09v-2.75l-1.25-1.53,1.16-1.25,3.47-0.62,3.31-2.22,1.34-6,5-0.44,0.1-2.06s-5.29-4.9-5.47-5.25c-0.18-0.36-0.88-3.94-0.88-3.94l-3.56-2.59v-5.97l2.94-7.16-1.69-9.19,0.78-3.12,13.5,0.72,0.25-5.28,5.19-1.16,3.47,1.87,0.81-2.31-2.41-3.69,1.69-0.62,0.19-2.75-7.16-8.5,0.1-4.37-3.13-1.5-0.09-4.04-1.78-1.15,1.09-2.13,3.81-0.47,1.35-1.78,4.28,0.38,0.09-2.44-3.37-1.5,0.15-3.31,5.47-0.53v-3.57l5.63,0.44,5.62-8.03,0.44-2.5-6.06-6.06-0.19-1.88,2.31-3.4-0.97-1.79-3.31,0.19-1.5-2.34,4.72-1.41-0.09-1.53-2.07-0.97-0.25-1.34,2.13-3.75,5.72-1.97-0.78-3.56,5.15,0.68-0.62-5.43,1.34,0.28,0.19-3.59-2.69-0.63-2.94-4.53-7.59-0.28-4.19-1.88,0.72-3.47h-3.12l-0.19-1.62,8.12-10.44,1.07-7.84s-9.81-5.72-10.25-5.63zm-135.1,8.56c-0.12,0.03-0.23,0.08-0.34,0.19-0.89,0.9-1.07,1.79-0.53,2.5,0.53,0.72,1.06,1.63,1.78,2.35,0.71,0.71,2.31,1.25,2.31,1.25s0.71-1.1,0.53-1.82c-0.18-0.71-1.97-2.84-1.97-2.84s-0.94-1.78-1.78-1.63zm28.94,7.35l-2.31,0.34s-1.07,0.91-1.25,1.63c-0.18,0.71-0.9,1.24,0,1.78,0.89,0.53,3.75,1.25,3.75,1.25s1.6-0.02,1.78,0.87c0.18,0.9,0.18,1.8,0,2.69s-0.53,1.78-0.53,1.78l0.72,0.72,1.93-0.53s0.74-0.72,1.82-0.72h2.65s1.44-0.53,1.97-1.25c0.54-0.71,1.97-1.25,1.97-1.25h2.69s1.41-0.52,0.87-1.59c-0.53-1.07-1.76-1.62-2.65-2.16-0.9-0.53-3.22-2.31-3.22-2.31h-2.5l-3.6,0.34-2.84,0.38-1.25-1.97zm-17,10.15c-0.12,0-0.22,0.01-0.31,0.04-0.72,0.17-1.44,1.4-1.44,1.4s0.37,1.78,2.16,1.78c1.78,0,2.3,0.55,2.65-0.34,0.36-0.89-0.87-2.31-0.87-2.31s-1.37-0.55-2.19-0.57z","name":"Sakha Republic"},"so":{"path":"m45.583,387.43-2.2728,2.6516-4.1669-2.6516-2.0203,1.1364-0.37881,5.8084-1.1364,1.389-2.2728-0.12627-5.9346-2.6516-3.0305-3.283,0.12627-4.9245,4.672,0.75761,0.37881-0.88388,2.5254-0.12627,3.283,1.5152,4.0406-1.894s-0.12627-3.5355,0.75761-2.7779c0.88388,0.75762,1.389,1.2627,1.389,1.2627l0.25254,3.5355z","name":"Republic of North Ossetia–Alania"},"kb":{"path":"m20.982,375.86c0.26786,0.35715,2.5893,4.7322,2.5893,4.7322l0.98214,3.9286,4.6429,1.1607,2.8571-1.0714,3.2143,1.5179,4.375-1.875,0.26786-3.125-5.9821-2.3214-1.875-5.0893-2.2321-1.1607-4.375,0.71429z","name":"Kabardino-Balkar Republic"},"kc":{"path":"m13.482,361.39,2.2321,8.4821,5.0893,6.25,4.375-2.6786,5.3571-0.89286,0.08929-3.3928,3.75-1.0714-6.6964-7.2321-2.2321,2.4107-2.8571,0.26786-1.6071-4.5536,0.44643-2.1429z","name":"Karachay–Cherkess Republic"},"st":{"path":"m33.929,367.73-3.4821,0.98215,0.17857,3.75,1.5179,1.25,1.7857,4.6428,6.5179,3.0357,1.3393,1.3393,0.08929,3.0357,3.8393,1.7857,1.6071,2.5893,3.2143,0.625,0.71429-1.4286-2.8571-3.125,1.5179-0.53572,3.5714,0.80357,0.17857-1.1607-0.98214-1.3393,7.7679-0.0893,1.6964-1.5179,0.26786-3.5714-5.2679-7.5-0.17857-9.4643-3.4821-6.0714-4.9107-0.98214-1.5179-2.7679-5.0893-5.7143-0.98214-0.625-1.5179,1.3393-2.7679-2.0536-1.4286,0.80357-0.80357,1.0714-0.08929,1.6071,0.35714,1.3393,0.35714,1.1607-0.71429,1.6071-0.98214,1.4286-1.9643,2.2322-1.875,1.0714-0.71428,0.98214-0.98214,2.3214z","name":"Stavropol Krai"},"ks":{"path":"m21.607,356.48-0.08929,2.0536,0.98214,3.8393,0.35714,0.80357,2.2321,0.0893,3.75-4.5536,1.4286-1.9643,1.9643-1.0714,2.6786-4.0178-0.26786-3.3929,0.17857-1.6964,0.89286-1.5179,1.3393,0,1.7857,1.5179,1.3393,0,2.5893-3.0357,0.08929-1.9643-0.89286-0.98214-2.2321-1.3393,0.17857-2.9464,2.8571-3.125,0.08929-1.4286-2.7679-2.9464-3.75-0.71428-0.80357-0.89286,1.6071-1.25,0.17857-2.4107-2.1429-1.6072-2.5893-0.80357-1.6071-1.6964-1.25-0.98214-0.89286-0.0893-1.3393,2.2322-0.625,0.98214,1.0714,1.4286-0.35714,1.5179-0.80357,0.625-2.7679-0.26786-0.89286-0.89286-1.9643,0.0893-1.875,0.71429-3.0357,1.7857-1.6964,0-1.3393-1.4286-1.6071-0.625-1.1607-1.4286,0-2.6786-2.2321-0.26786-1.25,0.625-0.35714,2.9464-0.089286,13.214,0.71429,5.8929,0.98214,3.6607-0.089286,2.3214-0.625,2.7679-0.089286,2.4107,0.17857,2.0536,1.5179,0.89285,0.71429,0.625,1.6071,1.5179,0.89286,1.0714,0.89286,0.89286l7.947-4.27-0.804-1.25-0.357-1.43-5.089,2.68h-1.875l-1.25-1.875,0.35714-3.5714,6.25-1.4286,2.7679-2.3214,0.71429-2.5893-1.3393-0.80357-1.9643,0.44642-1.1607-1.5178-0.71429-2.6786-1.3393-1.7857-0.17857-1.25,0.08929-1.1607,1.3393-0.80357,1.3393,0.625,1.0714,1.3393,1.0714,1.9643,1.3393,1.7857,2.3214,1.3393,1.6964,0.89285s0.625,0.26786,0.71429,0.625c0.08929,0.35715,0.89286,2.6786,0.89286,2.6786v4.0178l-0.08929,1.3393-1.0714,1.0714-1.875,1.5178-1.6071,1.4286z","name":"Krasnodar Krai"},"ro":{"path":"m37.5,323.45,2.0536,0.98214,1.4286-0.17857,0.625-0.89286-0.44643-1.1607-1.25-0.89286-1.9643-1.3393-0.89286-1.1607-0.35714-0.71428,1.0714-1.4286l2.231-1.08,1.6071-0.26786,1.0714,0.35714,1.4286,1.3393,1.5179,0.35714,1.6964-0.89286,0.89286,0.44643,1.072,1.06,1.339,1.79,0.268,1.33,1.607-0.08,1.3393-0.80358,1.6964-0.0893,1.3393-0.0893,0.35714-1.5178,0.53571-1.4286,1.25-1.6071,1.3393-1.0714,1.6964,1.0714,0.71429,0.35714,0.89286-1.875,0.44643-0.71428,2.6786-0.26786,1.875-1.6964,2.3214-0.17857,2.0536,1.1607,2.1429,1.25,0.98214,0.53571,3.9286,0.0893h2.2321l1.5179-0.98215h1.3393l0.71429,0.625,0.26786,1.6964-0.08929,1.9643v1.875l-0.08929,1.0714-0.981,1.34-1.25,0.98214-1.25,0.71429-0.80357,0.35714-0.35714,1.25-0.44643,1.6072-0.08929,1.4286-0.44643,1.1607-0.625,1.4286-1.4286,1.5179-1.6964,0.53571h-3.125l-1.608-0.36-1.518,0.53-0.625,1.97-0.982,0.62-0.80357,0.53572,0.17857,0.89285,1.3393,1.4286,0.71429,1.4286-1.1607,1.4286-1.3393,0.89285-0.80357,1.7857-0.08929,0.80357,0.98214,0.53571,1.1607,1.1607,0.625,1.0714,0.80357,0.80357,0.71429,1.3393v1.0714l-0.71429,0.80357,0.53572,0.625,1.4286,0.35715,0.625-0.53572,0.71429-0.0893,0.35714,0.98214v1.4286l-1.3393,1.3393-2.1429,1.0714-2.0536,1.1607-3.3929,0.0893-0.80357,0.80357-1.3393,0.80357-1.696,0.46-1.429-0.71-1.696-0.71-0.893-0.9-0.178-2.23-0.179-1.52-1.696-2.14-1.1607-0.80357-0.17857-1.25-0.80357-0.89286-1.7857-0.0893h-2.7679l-2.8571-0.0893-1.3393-0.17857-1.6071-1.7857-0.98214-0.71429v-0.89286l1.3393-1.5178v-1.5179l-0.625-1.25-1.875-1.4286-0.71429-0.625,0.26786-2.2322,2.7679-3.2143,0.08928-1.6071-1.9643-2.2322-1.3393-0.89285-2.411-0.55-1.0714-0.35714-0.08929-0.71429,1.0714-1.0714,0.26786-1.1607z","name":"Rostov Oblast"},"kk":{"path":"m44.554,348.71,0.98214,1.6071,1.1607,1.0714,1.1607,1.6964,0.80357,1.1607,1.1607,0.71429,2.5893,0.44643,1.3393,0.625,0.98214,1.6071s0.98214,1.7857,1.25,2.2321c0.26786,0.44643,0.98214,2.4107,0.98214,2.4107l0.17857,4.9107v3.2143l0.89286,2.2321,3.3036,4.1964,1.25,2.0536-0.17857,2.5893-1.4286,1.875,0.89286,1.3393,4.375,4.7321,0.53571,1.25,0.35714,0.98215,0.89286,0.53571,1.4286,0.0893,1.6071-0.26786,1.7857-0.53572,2.2321-0.89285,2.3214-0.26786,0.713-0.71,0.625-2.15-0.268-1.16-2.232-1.34-0.982-0.71,0.08928-1.3393,1.0714-0.625,1.7857,0.0893,1.4286-1.25-0.53572-0.71428-0.71428-2.0536-0.268-1.7-0.179-1.16h1.0714l1.6964,1.25,1.7857,0.80357,2.6786-0.17857h0.89286l0.53571-1.1607-0.17857-2.4107-0.08929-3.8393v-6.3393-0.98214l-0.08929-2.2321,2.9464-2.8572,0.17857-1.3393-1.4286-0.625v-3.2143l-1.0714-1.1607-1.1607-0.35715-2.5-0.17857-0.625-1.4286-0.17857-0.80357-1.25,0.26786-0.625,1.0714h-1.3393l-1.25-0.0893-1.071-0.98-0.804-0.71-2.321-0.27-0.98214,0.35715-0.71429,0.80357-0.71429,0.35714-0.26786,1.1607-0.35714,0.80357,0.35714,0.625,1.0714,0.35714,1.0714-0.44643,0.89286,0.35714,0.08929,0.98215-0.44643,1.5178-5,3.125-3.3929,0.26786-2.3214,1.3393-1.5179,0.53571-3.8393-1.7857-0.53571-0.35715-0.08929-3.3928-0.71429-1.4286-2.3214-2.2322-0.625-1.25-1.9643-0.80357h-3.5714z","name":"Republic of Kalmykia"},"as":{"path":"m86.873,350.94,1.6415-1.389,1.1364-0.63135,1.7678,1.2627,2.0203,0.63135,2.2728,0.50508,0.88388,1.0102,2.1466,0.88388,0.75761,1.1364,0.63134,1.1364,0,1.389,0,0.88389-1.5152,0.3788-1.1364,1.389-0.12627,1.0102,0.63134,1.389,1.0102,1.1364-0.37881,2.1466-0.75762,1.0102-1.7678,0.88389-0.25254,1.1364,0.50508,0.88388,1.7678,1.1364,2.2728,1.5152,1.389,1.6415,0.63134,1.0102,0,1.5152-1.0102,1.1364-0.25254,2.0203-1.0102,1.0102,0,2.2728,0,2.7779-0.75761,0.3788-1.7678-0.3788-1.894-0.75762-0.63134,0.37881-0.37881,2.1466,1.6415,2.1466,1.1364,1.2627,0.88388,1.0102,0.50508,0.63134,0.12627,1.2627-3.9143,0.25253-3.0305,0.63135-2.1466,0-1.894-1.2627-2.0203-1.5152-5.4296,0-1.0102-0.37881-1.1364-1.1364,0.37881-2.9042-0.88388-1.0102-2.2728-1.6415,0-1.6415,1.0102-0.3788,1.5152,0,1.389-1.0102-0.63134-1.389-0.75761-4.0406,0.63134-0.3788,1.2627,0.75761,2.9042,1.389,2.0203-0.25254,1.2627-0.12627,0.50508-1.6415-0.25254-5.4296,0.12627-5.0508-0.25254-4.2931,2.1466-2.2728,1.0102-1.1364,0.12627-1.389-1.2627-0.50508-0.25254-2.1466z","name":"Astrakhan Oblast"},"ad":{"path":"m21.786,356.21,2.4107-1.4286,2.5-2.6786,0.35714-2.1428-0.26786-3.9286-1.0714-2.7679-2.9464-0.98214l-2.412-1.78-2.232-3.75-1.5179-1.1607-1.3393,0.71428-0.17857,2.1429,1.6071,1.875,0.80357,2.5893,1.1607,1.6964,1.6071-0.35714,1.5179,0.44643-0.44643,2.9464-2.9464,2.3214-3.394,0.71-2.8571,0.35715-0.17857,3.8393,1.0714,1.7857h1.7857l5.3571-2.9464,0.35714,1.7857z","name":"Republic of Adygea"},"vl":{"path":"m85.893,313.18,1.5179-0.98214,1.875-0.0893,1.1607-1.0714,1.1607-1.6072,0-1.25,1.1607-0.98214,1.9643,1.25,2.5,1.9643,3.3036,2.1428,3.9286,1.5179,1.4286,1.5179,0.625,2.1428,0.44643,1.4286,2.8571,0.35714,0.44643,1.4286,2.5893,0.80357,1.7857,1.7857,1.6964,1.6964,0.17857,2.2322-1.5179,1.25-1.6071,2.2321-1.4286,1.3393-0.26786,1.25,0.89286,2.2321,2.9464,1.875,1.6964,1.875,1.7857,1.1607,1.25,3.3036,1.0714,1.875,0.0893,1.25-0.71428,0.53572-1.3393,0.44643-0.71429,0.53571-2.8571,0.26786-4.6429-0.0893-1.6964,0.26786-0.71429,1.6071,0,2.8572-0.17857,1.1607-1.6964,1.25-1.3393,0.98214-4.0178-0.0893-1.0714-0.0893-1.3393-3.0357-1.4286-1.0714-1.875-1.0714-1.0714-0.625l-2.256-0.46-2.054-1.25-1.071-0.18-1.1607,0.625-0.98214,0.71429-1.25,0.26785-2.1429-0.0893-0.89286-1.1607-0.35714-1.25-1.4286,0.26786-0.89286,1.1607h-1.25l-1.875-0.71428-1.25-0.80357-1.3393-0.35715-1.4286,0.17858-1.4286,1.25h-0.89286l-1.4286-2.5-1.25-1.4286-1.0714-0.71428,0.448-1.44,0.893-1.52,1.607-1.43,0.179-0.89-1.6964-2.1429-0.44643-1.0714,1.4286-0.80358,0.625-1.875,0.625-0.53571,1.25-0.35714,1.6071,0.0893h3.0357l1.7857-0.625,1.9643-2.5893,0.89286-4.0179,0.625-1.4286,2.8571-2.0536,1.1607-1.6964,0.35714-3.3036v-2.2322z","name":"Volgograd Oblast"},"vn":{"path":"m70.089,310.77,0-6.0714,0.08929-1.1607,3.75-3.2143,2.5-3.6607,1.3393-1.4286,0.35714-1.875,2.4107-0.71428,0.35714-2.5893,0.625-1.7857,1.0714-0.35714,0.625-2.0536,1.3393-1.7857,1.1607-1.0714,0.98214-0.53571,0.89286,1.1607,0.44643,0,0.71429-1.0714,0.53571-0.71428,1.1607-0.17857,0.89286,0.89285,1.25,1.1607,1.4286,1.4286,1.1607,1.5179,0.80357,0.89285-0.26786,2.1429,0,1.6071,1.875,1.0714,2.3214,1.3393,0.80357,1.3393-0.0893,1.7857-0.89285,1.5178-0.44643,0.98215,1.5179,1.25,1.875,1.7857,1.9643,2.2321,1.3393,1.6964,1.1607,1.9643-0.26786,2.3214,0,2.0536-2.1429,1.0714-0.71428,0.17857-4.2857-1.875-2.6786-1.7857-2.1429-1.4286-1.6964-1.1607-0.53571-0.17857-0.71429,0.80357-0.44643,1.25-1.4286,1.9643-1.6964,0.44643-2.8571,0.80357-3.5714,1.1607-3.2143,0.0893-2.5-0.17857-2.3214-1.25-2.3214-1.0714z","name":"Voronezh Oblast"},"bl":{"path":"m63.304,272.29-5.4464,3.3036,0.08928,2.6786,1.6964,1.875,0.08929,3.125,0.44643,1.6964,2.8571,1.6071,2.8571,0.44643l1.608,2.23-2.5,3.3036-0.35714,2.1429,1.0714,1.6071,2.3214,1.5179,0.17857,2.9464,1.1607,1.5179,0.71428,0.89285,4.7321-4.375,3.75-5.4464,2.0536-0.89285,0.80357-4.1072,1.0714-0.89285,0.53571-1.3393-2.5-2.8571-3.5714-4.1071-2.7679-0.26786-2.9464-1.1607-2.6786-1.6964-2.5893-1.6072-1.9643-1.6071z","name":"Belgorod Oblast"},"ky":{"path":"m63.482,271.84,0-4.6429l-0.357-1.61-1.786-1.97-0.714-1.07,1.3393-1.0714,3.75-1.3393,2.7679-1.3393,2.6786,0.0893,0.53571,1.0714,1.25-0.0893,1.7857-1.1607h0.80357l0.98214,0.44643,1.4286,1.6071,0.53571,0.80357,0.08929,1.6964,1.0714,0.89286,1.0714,0.71428h0.89286l1.0714,1.25,0.17857,3.2143v2.4107l-0.89286,0.98214v1.5179,1.1607l1.0714,1.25,1.1607,0.98214,0.89286,0.17857,1.5179,0.53571,1.0714,1.6072,1.6071,1.5178-0.71429,1.1607-0.80357,0.89286-0.89286-0.80358-1.9643,1.25-1.4286,1.1607-0.53571,0.80357-3.4821-4.1071-2.2321-2.3214-0.98214-0.53572-3.3036-0.625-2.8571-1.5178-3.6607-2.1429-2.4107-1.9643z","name":"Kursk Oblast"},"or":{"path":"m74.732,258.27,1.0714-1.875,2.2321-0.26786,0.89286-1.6071,0.89286-0.53572,1.9643,0.89286,1.6964-0.0893,1.6071-0.71429,1.0714-1.5179,0.89286-0.53571,0.98214,0.17857,1.3393,0.98214,1.9643,0.89286,1.1607,0.89286,0.35714,0.89285,0.71429,1.3393,0.17857,2.0536,0,3.6607,0.98214,1.7857,1.4286,1.875,0.80357,1.25,0.71429,1.7857-0.26786,1.5179-3.9286,1.875-1.9643,0.98214-1.0714,2.1429-1.875,1.0714-1.875,1.0714-2.4107-0.89286-1.9643-1.6071-0.44643-1.6964,0.44643-1.9643,0.44643-0.89285,0.08928-4.4643-0.89286-1.6964-1.7857-0.53571-1.7857-1.4286-0.08929-1.6072-1.3393-1.5178-1.6071-1.6964z","name":"Oryol Oblast"},"lp":{"path":"m86.875,278.45,1.5179,1.875,1.0714,0.89286,1.1607,0.71428,1.1607,1.0714,2.5,2.2321,1.25,1.5179,0.625,1.4286-0.44643,2.5893,0.53572,0.625,2.5,1.3393,1.875,1.7857,1.0714-0.17857,1.0714-0.625,0.44643-0.80357,0.0893-5.8036,0.35714-0.71428,1.4286-0.80357,2.3214-0.17857,2.0536-1.1607,1.3393-0.44643,0.17857-1.6964,0.625-1.3393,1.25-1.5179-0.80357-1.1607-2.6786-0.98215-0.53571-0.53571-0.17858-0.71429,1.0714-1.3393,0-1.6071-2.1428-0.35715-1.0714,0.44643-1.6072,0.80357-0.98214,0.89286-1.1607,0.625-1.4286,0.0893-1.3393-1.5179-1.6964-1.6964-0.80357-0.98214-2.4107,0.89285-3.125,1.6964-1.1607,1.6072-1.6071,1.4286z","name":"Lipetsk Oblast"},"tl":{"path":"m93.482,256.3,3.2143-2.0536,0.98214-0.17857,1.6071,0.80357,0.98215-0.80357,0.71428-1.0714,3.125,0,1.6072,0.625,2.0536,0.35714,1.4286,0.80358,2.4107,0.35714,1.4286,0.71428,0.53572,1.0714,0.98214,1.0714,1.25,1.4286,0.71429,1.6072-0.35715,1.6964-0.98214,1.1607-0.71428,1.6964-1.3393,1.9643-1.6964,2.0536-1.0714,1.875-0.71428,0.98215-0.53572,0.35714-1.7857,0-2.5,0.89286-1.5179,1.0714-1.3393,0.26785-2.0536-1.3393-2.0536-2.5893-0.26786-2.0536-0.53571-1.4286-1.6071-2.5l-1.413-2.14-0.179-2.23z","name":"Tula Oblast"},"bn":{"path":"m67.679,258.62,0.26786-1.7857,2.3214-1.5179,0.44643-1.1607,0-1.4286-1.6071-1.9643-1.7857-2.1429-1.6964-1.9643-2.3214-1.875-1.5179-0.89286-1.6964-0.26786-0.89286-1.1607,0.17857-2.3214,1.3393-1.6071,3.125-2.1429,2.6786-1.875,0.89286-1.7857,0.98214-0.71428,1.6964,0.26786,0.625,1.25,0.625,1.5178,1.0714,2.2322,1.1607,0.80357,5.8929,0.26785,2.1429-0.35714,1.4286,0.53572,3.125,0.89285,2.3214,0,0.71429,1.9643,0,2.2321-0.17857,1.1607-0.98214,1.5178-0.71429,0.53572-0.26786,1.4286,0.26786,1.5179,0,1.25-0.80357,1.4286-1.4286,1.5178-1.7857,0.71429-1.6964,0.17857-1.7857-0.71428-1.4286,0.71428-0.26786,0.89286-2.4107,0.80357-1.0714,1.4286-1.3393,1.25-1.4286,0.17857-1.4286-0.71428z","name":"Bryansk Oblast"},"kj":{"path":"m89.196,239.61,1.6071-1.25,1.6071-1.3393l1.161-0.27,1.429,0.63,0.80357,1.4286,1.0714,1.25,1.7857,0.80357,1.7857,0.35715,3.125,0.0893,1.875-0.0893,1.6071-1.0714,2.4107-0.0893,1.4286,0.44643,0.98214,2.0536,0.26786,1.4286,1.25,0.625,1.6071,0.98215,0.98214,0.80357,0.53572,1.25-0.53572,2.0536-1.0714,1.7857-1.4286,1.9643-1.1607,1.25-0.89286,0.44643-3.75-1.25-2.6786-1.0714-2.6786,0.0893-1.875,0.44642-1.0714,1.25-1.5179-0.44642-1.0714,0.0893-1.0714,0.80357-2.0536,1.0714-0.89286-0.89286-1.0714-0.80357-1.9643-1.25-1.5179-0.89285-0.89286-0.44643v-1.0714-2.4107l-0.08929-0.625,1.1607-1.6964,1.0714-1.875v-1.7857l-0.26786-1.6071z","name":"Kaluga Oblast"},"sm":{"path":"M79.375,237.55,80,235.95,80.179,234.52,79.732,233l-0.08928-1.4286,1.5179-1.3393,0.71429-1.6071,0.08929-3.125,0.35714-1.875,2.4107-2.5,2.5-1.9643,1.875-1.7857s1.875-1.3393,2.2321-1.5179c0.35714-0.17857,2.5-1.5178,2.5-1.5178l2.5,0.0893,3.0357,3.4822,1.875,3.4821,2.5,3.6607,1.4286,0.89286,2.7679,0.53571h2.0536l0.80357,0.71429,1.1607,1.875,1.1607,1.3393,1.25,1.6071,1.0714,1.4286,0.17857,1.3393-0.98214,1.25-1.875,0.89285-1.875,0.53572-0.89286,1.25-0.44643,0.89285-1.875,0.44643-1.7857,0.625-1.6072,0.35715h-3.0357l-3.75-0.80358-1.7857-1.7857-1.4286-1.3393-1.1607-0.26785-1.1607,0.71428-2.2321,1.5179-1.1607,0.44643-1.7857-0.44643-4.1071-0.98214-2.4107-0.35715z","name":"Smolensk Oblast"},"mc":{"path":"m116.07,234.16,3.5714,0.26785,2.3214-0.89285,1.4286-0.44643,0.53571,0.625,0.0893,1.7857,0,1.1607-0.17857,1.3393,1.5178,0.89286,2.9464,0.44643,1.7857,0.89285,2.0536,0.89286,2.7678,0.89286,1.7857,0.26786,1.25,0.53571,0.26786,1.6071-0.0893,1.5179-0.44643,1.6964-1.5179,0.625-2.1428,1.1607-1.6072,1.3393-0.0893,1.25-0.625,1.7857-1.1607,1.5179-0.35714,1.6071,0.17857,1.6072,0.0893,0.89285,1.1607,1.0714,1.0714,0.625,1.1607-1.0714,0.625,0.44643,0,1.5179-0.0893,3.2143-0.44643,1.1607-1.3393-0.44643-1.875-0.17857-1.6072,0.17857-0.80357,0.89286-2.0536,0.0893-1.6071-0.35714-1.25-0.71429-1.0714-1.1607-1.6071-0.625-1.6964,0-0.44643,0.80357-0.17857,1.1607-1.0714,0.53571-1.4286,0.0893-0.80357-0.80358-0.17858-0.625,1.1607-2.4107,0.26786-1.9643-0.53572-1.6964-1.1607-1.5179-1.1607-1.5179-1.0714-0.89286,0.625-1.25,2.5-2.9464,1.1607-2.6786-0.71429-1.7857-1.6071-1.6071-1.6071-0.98215-0.53572-0.35714-0.625-1.875-0.80357-1.25-0.80357-0.80357,0.625-1.5179,2.5893-1.3393z","name":"Moscow Oblast"},"rz":{"path":"m114.55,265.59-1.9643,2.6786-2.1429,3.125-0.625,2.7679-0.80357,1.7857,0.17857,0.80357,1.6964,0.71429,1.9643,1.3393,0.44643,1.5179-0.26786,0.89286,1.4286,1.1607,1.9643,0,1.1607,0.71429,0.0893,1.875,0.44643,1.1607,1.25,0.44643,1.5179-0.625,1.9643,0,1.5179,0.98214,0.625,1.7857,1.0714,1.1607,2.6786-0.17857,3.125,0,2.9464-2.0536,3.0357-2.9464,1.5179-2.2321,1.0714-1.7857-0.98214-2.2321-0.53572-3.125-2.0536-2.0536-1.25-1.6964-0.44643-2.8571-0.53571-1.6072-0.35715-0.98214-2.1428-0.35714-3.4822,0.26786-0.625,0.80357-2.1428-0.17857-1.875-0.71429-1.875-1.0714-1.9643-0.89286-1.0714,0.35715-0.80357,1.4286-1.4286,0.89286-1.6071-0.44643z","name":"Ryazan Oblast"},"tb":{"path":"m112.77,279.43-1.6964,2.1429-0.35714,1.7857-0.80358,0.89286-2.6786,0.98214-1.875,0.44643-1.5178,0.71429-0.71429,1.4286,0,2.1429,0.26786,2.3214-0.71429,1.875-1.5179,0.53571-0.44642,1.4286-0.44643,1.6964-0.625,1.1607,0.08928,0.625,2.3214,2.1429,2.2321,2.1429,1.6072,2.2321,1.4286,2.0536,0.98214,0,2.1429,0,1.9643-1.25,2.5-1.25,1.6964-1.0714,4.0179-0.26785,1.0714-0.98215v-3.6607c0-0.35714,0.0893-2.3214,0.0893-2.3214l1.5179-1.1607s0.71429-0.71429,0.80357-1.0714c0.0893-0.35714-0.26785-4.6429-0.26785-4.6429l1.4286-1.0714-0.80357-2.1428-1.7857-1.4286-2.3214,0.26786-0.89285,0.625-1.1607-0.80357-0.89286-1.3393v-1.3393l-1.875-0.80357h-1.3393l-0.89286-1.0714-0.26786-1.3393z","name":"Tambov Oblast"},"kn":{"path":"m44.107,152.55,0,2.2322,0.53571,2.5,2.0536,5.1786,1.4286,3.4821,1.9643,3.6607,2.5,1.0714,3.75-0.44642,1.9643-1.3393,0.625-1.7857-0.44643-4.2857-0.89286-2.8571-1.5179-1.6071-2.4107-0.53572-0.98214-0.71428,0-3.0357-0.80357-1.4286-1.6964-1.6071-1.6071-0.26786-0.35714,1.25-0.625,1.3393-0.625,0.89285-1.4286-0.35714z","name":"Kaliningrad Oblast"},"ps":{"path":"m95.268,213.98,0.35714-2.1428-0.26786-2.1429-1.4286-1.875-1.3393-1.4286-0.08929-1.6964,0.98214-0.71429,0.17857-1.6964-0.89286-0.98215-1.25-1.875,0-4.1964,1.5179-0.89285,3.75-2.2322,0.80357-2.4107,0.53572-1.7857,1.875-1.25,2.4107-0.0893,1.3393-1.6071,0.98214-1.6964s1.25-0.625,1.6072-0.80357c0.35714-0.17857,2.8571-0.71429,2.8571-0.71429l1.5179-0.0893,1.0714,0.53571-0.625,1.5179-0.71428,0.89285-0.17857,0.98215,1.6071,0.26785,1.25-1.7857,0.98214-2.0536,1.1607-1.5179,1.6071-0.71428h1.6071l1.5179-1.5179,1.1607-0.625h1.4286l0.98214,0.98214,0.625,1.5179,0.98214,1.6071-0.26786,1.6964-0.89285,0.98214-0.35715,1.3393-0.80357,1.6071-0.17857,1.1607h-1.4286-0.80357l-0.71429-0.53572-0.80357,0.53572-0.625,0.80357-0.53571,1.5178-0.53572,2.1429-0.0893,2.5-0.35715,1.875-1.1607,1.25-1.3393,0.98214h-1.7857l-1.5179,1.3393-0.53571,1.7857-1.3393,0.53572-0.44643,1.0714-0.17857,1.4286-1.7857,0.89286-1.7857,0.80357-0.625,1.6964,0.625,1.5178,0.625,0.625-0.26785,1.4286s-0.0893,0.44643-0.44643,0.80358c-0.35714,0.35714-1.1607,1.3393-1.1607,1.3393l-1.4286,0.80357-2.3214,0.89286-1.0714,0.0893-1.1607-0.89286-0.89286-0.89286z","name":"Pskov Oblast"},"no":{"path":"m123.12,188.27,1.5179,1.25,2.1428,0.35714,2.1429,0.17857,1.25,1.1607,2.5,0.53571,2.3214-0.0893,1.0714-0.89286,0.44643,0.625,0.0893,1.7857,2.1429-0.53571,2.3214,0.0893,0.80357,0.80358,0.17857,2.5,0.17857,2.5,0.53572,1.0714,1.3393,0.17858,1.3393,0.44642,0.26785,2.1429,0.71429,1.6964,0.98214,0.80357,0.44643,2.9464,0.0893,2.2321,0.89285,1.4286-0.53571,0.98215-0.71429,0.53571,0,1.6071,0.17858,1.5179,1.4286,1.3393,0.625,0.53571,0.0893,1.9643,0,1.9643-0.17857,1.3393-1.25,0.53571-0.71428-0.26785-0.625-0.80358-0.71429-0.80357-0.17857-1.1607-0.98214-0.80357-0.80358-0.625-2.0536,0-1.5178-0.53572-0.53572-0.35714-1.5178-0.53571-0.71429-0.26786,0-0.44643s-0.26786-1.25-0.26786-1.6964c0-0.44643-0.0893-2.0536-0.0893-2.0536l-0.625-0.98214h-1.7857l-0.89285-0.44643-0.44643-0.98214-0.98215-0.625-0.53571,0.625-0.89286,1.0714-1.6964,1.4286h-2.1428c-0.35715,0-1.5179,0.0893-1.5179,0.0893l-0.71429-1.0714-1.0714-0.71428-2.3214-0.17857-2.6786-0.0893-1.5179-0.44643-1.3393-0.98214-2.3214-0.44643h-2.1428l-0.89286-1.1607-1.25-1.0714-0.53571-0.71429-1.1607-0.71428,0.98214-2.7679,0.71429-0.44643,1.1607-1.5179,1.0714-1.0714,2.0536-0.625,2.5-1.9643,0.625-1.9643,0.0893-3.5714,0.98214-2.5893,1.0714-1.25,1.1607,0.26786z","name":"Novgorod Oblast"},"tr":{"path":"m98.661,216.66,3.2143-0.625,2.2321-1.6072,1.3393-1.6071,0.17857-1.4286-0.80357-1.4286-0.26786-1.3393,0.35714-0.89286,1.4286-0.89285,1.6964-0.625,1.1607,0.44643,1.5179,1.5178,1.0714,0.98215,0.98215,0.53571,1.6964,0.17857,2.4107,0.35714,1.3393,0.98215,1.3393,0.26785,3.2143,0.44643,1.5178,0,1.25,0.71429,0.80358,0.71428,1.875,0.35715,1.7857-0.17857,1.875-1.6072,1.25-1.25,0.71429,0.44643,0.625,0.80357,1.4286,0.44643,1.4286,0.17857,0.53571,1.5179,0.17857,2.4107,0.35715,0.80358,1.1607,0.71428,1.4286,0.80357,1.0714,0.26786,1.875,0.35714,0.98214,0.26786,1.25,1.0714,0.44643,1.3393,0.98214,1.0714,0.80358,0.53572,1.7857-0.35715,1.3393,0.0893,1.25,0.71429,1.6071,0.89285,0,1.5179-0.625,1.6964-1.25,1.6071-1.6071,0.44643-1.25,0.98214-1.5179,1.3393-0.89286,1.0714-0.44643,0.71428-0.26785,1.5179-0.44643,1.0714-1.25,1.4286-0.53572,1.4286-0.35714,2.0536-2.0536,1.9643-2.0536,1.3393-1.0714,0.17858-0.53571-0.71429-0.26786-1.7857-1.6964-0.71429-3.8393-0.89286-3.8393-1.6071-3.0357-0.80357-1.5178-1.0714-0.0893-3.0357-0.35714-1.6964-3.3036,0.80357-3.4822,0.26786-1.3393-0.89286-3.4821-4.4643-1.5179-2.0536-3.3036-0.625-2.7679-0.53571-1.4286-1.7857z","name":"Tver Oblast"},"vm":{"path":"m137.41,247.73,1.6072,1.7857,2.0536,1.25,1.1607,1.0714,1.3393,0.35714,0.80357,0.89286,0.0893,1.5178-0.89285,1.7857-0.35715,1.0714,1.25,0.625,1.7857,0.26785,1.0714,1.1607,0.17857,1.9643,0.98214,1.875,1.0714,1.25,1.3393,1.25,1.3393,1.3393,1.3393,1.1607,1.7857,1.875,0.89286,1.3393-0.17857,0.98214-0.89286,0.71429l-0.18,0.98,0.53571,0.71429,0.44643,0.71428,0.0893,1.6072-1.7857,0.53571-2.2321-0.0893-1.1607-1.0714-4.4643-0.0893h-5.1786l-1.7857,0.53571-0.71429-1.6964-1.6964-1.9643-1.6071-2.6786-0.80357-4.1964-0.0893-4.1071-0.17857-2.0536-0.44643-0.44643-0.71428,0.44643-1.1607,0.26785-1.4286-1.25-0.26786-2.5893,0.71429-2.0536,1.1607-2.0536,0.44643-1.7857,1.3393-1.0714z","name":"Vladimir Oblast"},"pz":{"path":"m127.05,289.96,1.6964,1.7857,2.0536,1.5179,1.25,0.98214,1.6964,0.625,1.25,1.875,0.71429,1.6071,0.26785,1.9643,0.98215,0.98214,1.0714,1.0714,2.6786,0.17857,1.6964,0.0893,0.625,2.1429,0.89286,1.7857,1.6964,0.71429,2.1429,0.26785,1.4286,1.0714,0.625,1.0714-1.5179,0.89286-0.89286,0.98214,0.0893,4.1071-0.26786,3.4822-2.7679,1.25-1.0714-0.0893-0.89286,1.6071-1.9643,0.98215-1.1607-1.7857-0.98214-0.98214-5.9822-0.0893-1.1607-1.875-0.89286-0.89285-3.125-0.71429-0.98214-1.6071-1.25-1.6964-2.1429-0.71429-2.4107-1.3393-1.6071-1.0714-2.5,0.0893-0.71429-1.875,0.26786-2.5,1.1607-0.89285,3.8393-0.80357,0.89285-2.4107,0-3.4821,1.3393-1.6964,1.3393-1.6071-0.26786-2.5893,0-1.9643,1.1607-0.89286z","name":"Penza Oblast"},"sr":{"path":"m107.23,308.27-0.17857,3.0357-0.26786,1.25-2.2321,1.1607,1.4286,1.6964,1.0714,3.2143,2.2321,0.71429,0.98215,0.80357,0.89285,1.0714,1.7857,0.625,2.5893,2.5,0.89286,1.0714,0,1.875-1.5179,2.0536-2.4107,2.8571-0.44643,1.25,0.44643,1.6964,0.71429,0.89286,2.1428,1.1607,4.0179,3.9286,1.7857,4.5536,1.25,1.4286,1.25,1.3393,0.26786,1.9643-0.71428,2.5-0.53572,2.4107,0.26786,1.7857,0.89286,1.0714,1.6071,0.44643,1.6964,0,1.6964-1.1607,1.25-1.0714,0.44642-2.6786,0.0893-1.875,2.2321-0.625,3.3036,1.25,1.6964,0.35714,1.6072,0,1.3393-1.5179,0.44643-0.53571,1.6071,0.35714,1.3393,1.0714,1.5178,0.89286,4.6429,0,1.1607-1.1607,1.3393,0.17857,0.89286,0.80358,1.6071-0.53572,0-1.7857-0.89286-1.9643-0.35714-1.3393-0.17857-3.9286-0.0893-2.0536-0.71428-1.25,0.0893-2.8571-0.35714-1.6071,0-2.5-0.80357-1.3393-1.1607-1.6071-2.5-1.0714-1.6072-2.0536-2.5893-0.0893-1.0714-0.35714-1.7857-1.6964-0.625-1.25-0.44642-0.89286-1.7857-2.4107-5.625-0.26786-0.53571-0.17857-1.9643-2.5893-3.125-0.89286-2.2321-2.9464-6.1607-3.3036-2.3214,0-1.0714-1.6964,0.44643-2.5-0.80357-0.35714-3.8393,2.1428-1.5179,0.35715z","name":"Saratov Oblast"},"mr":{"path":"m127.59,290.05,1.875,2.1429,2.6786,1.7857,1.7857,1.1607,1.7857,2.7679,0.44642,2.4107,2.0536,2.1429,2.5893,0.0893,1.6071,0.26786,0.89286,2.2321,0.71429,1.4286,2.0536,0.89286,1.7857,0.35714,1.25,0.625,0.53572,0.80358,5.8928,0.17857,2.6786-3.5714,0.35715-0.53572,0.71428-1.3393,0.0893-2.1429-0.0893-1.9643-1.7857-0.98215-0.35714-2.5-0.0893-0.80357-1.6964,0,0,0.17857-0.80357,0.89286-1.3393,0.80357-5.2678,0-2.5893-2.3214,0.17857-3.5714-1.1607-1.0714-0.17857-0.80358,1.0714-1.0714,0-1.6072-2.5893-0.53571-1.7857-0.0893-0.80357-1.25-0.71429-1.6964-1.25,1.1607-2.1429,2.3214-2.4107,1.5178-1.5179,0.98215-2.9464,0.26785z","name":"Republic of Mordovia"},"cu":{"path":"m159.11,299.07,1.3393-0.89286,2.9464,0.44643,1.3393,0.44643,1.0714-1.3393,0.26786-1.7857,2.2321-1.1607,2.2321-2.2322,3.125,0.0893,2.6786,0,1.25,1.5179,0.35715,2.9464-0.17857,1.5179,0.35714,1.25,0.71428,1.1607-0.0893,0.71428-1.3393,0.625-4.1071-0.0893-1.3393,0.53571-0.80357,0.80357,0,0.89286,1.1607,0.71428-0.17857,0.89286-1.3393,1.1607-1.7857,1.25-2.1429,0.98214-1.3393,0.44643-1.3393-1.3393-2.5-0.44643-0.98215-0.625-0.98214-1.3393-0.80357-0.80357,0.80357-3.5714z","name":"Chuvash Republic"},"ul":{"path":"m158.57,305.32-1.875,2.6786-0.98215,1.4286-4.8214-0.26785-0.80358,0.26785-1.7857,1.4286-0.80357,1.1607,0,2.3214,0,2.5893,0,1.6964-1.7857,1.4286-1.0714,0.26786-0.89286,0-1.25,1.25-1.25,1.0714-0.625,0.26786,0.89286,1.9643,1.6071,1.6071,2.3214,0.44643,1.5178,0.17857,1.25,1.6072,1.5179,0.80357,2.1429,0.17857,0.89286-0.625,0.0893-1.875,0.17857-1.6964,1.0714-1.6964,0.35714-1.3393,1.3393-0.26786,0.80357,0.53571,1.3393,0.625,1.875-0.17857,1.3393-0.98214,1.0714,0.17857,1.6964,1.4286,2.0536,1.875,1.5179,1.6072,0.80357,1.4286,2.3214,0.17857,1.1607-1.5179,2.8572-2.0536,2.0536-1.1607,0.26785-2.3214,0-3.5714-1.875-1.1607-3.6607-0.0893-2.0536-1.4286-0.98214-1.1607-2.5-0.26785-0.98215-1.5179-3.0357-1.5179-0.80357-1.5179-0.625-2.0536z","name":"Ulyanovsk Oblast"},"ss":{"path":"m150.98,329.96,1.3393,2.1428,0.71428,2.8572,0.44643,2.8571,0,2.1429,0.625,2.3214-0.0893,2.8571,0.35714,2.4107,0.53571,2.1429,0.625,1.9643,0.71429,0.98214,5.8929,0.0893,3.0357-1.6071,1.25-1.9643,1.9643-0.35715,1.6964-0.0893,2.1429-1.4286,1.4286-0.89286,1.25-0.17857,1.6072,0.625,1.7857-0.17857,0.80357-1.875,1.0714-2.3214,4.375-2.5893,1.7857-1.4286,1.1607-2.0536-0.625-1.5179-0.80357-1.7857-0.35715-2.5-1.1607-1.25-0.71429-2.4107-3.6607-0.26785-2.3214-1.6964-1.4286-0.80357-3.5714,2.3214-1.9643,2.2322-2.4107,0.0893-0.98214-0.98214-2.2321-2.4107-2.4107-1.875-1.0714-1.0714-0.89285,0.26785-1.6072,0.71429-1.6964-0.0893-1.5178-0.80357-1.0714,0-0.625,0.98215-0.53572,1.0714-0.80357,1.5179-0.17857,1.3393,0,0.98214-0.0893,0.71429z","name":"Samara Oblast"},"ob":{"path":"m155.89,352.82,0.53571,1.4286,0.71429,1.6071-1.0714,1.6072,1.0714,1.4286,3.0357,0.17857,1.9643-0.35714,2.5,0,0.17857,2.3214-0.89286,2.6786,0.35714,1.0714,3.5714,1.6071,2.1429,1.4286,0.17857,3.5714,0,4.1071,0,1.4286-1.25,0.89286,0,1.9643,0,0.71428,0.71429,1.0714,1.0714,0.89286,1.7857-2.5,0-1.4286,0.89286-0.89286,1.4286,0,1.0714,2.3214-0.17858,1.4286-0.71428,1.25-0.35714,1.4286l0.36,1.43,1.25,0.89286,2.3214,1.25,1.7857,0.89286h1.9643,2.5l1.4286-1.0714,1.6071,0.17857,1.9643,1.0714,0.89285,1.6071,0.35715,1.7857,1.0714,1.25h1.7857l0.89286-0.89285h1.25l1.6071,0.53571,1.25,1.4286,0.53571,2.6786-0.17857,3.5714,1.7857,1.6072,1.4286,0.89285,1.0714,1.6072,1.0714,0.53571,1.6071-0.71429,1.4286-0.17857,1.6071,1.4286v1.25l1.9643,1.7857,1.25,0.71428,2.1429,0.35715h2.6786l1.4286-0.17857,1.25-0.89286,1.25-1.0714,0.89286-0.89286-0.17858-1.25-2.3214-3.2143-1.0714-1.25v-3.75l-0.71429-2.1429-0.17857-2.1429,1.0714-2.3214,1.9643-1.4286-1.4286-1.7857-3.0357-2.8571-1.9643,0.35714-1.4286-0.17857-0.89286-1.25h-2.3214l-1.4286,1.25-1.0714,1.25-0.53572,1.0714h-2.5l-1.0714-2.5-3.2143-0.17858-2.8572-0.35714-0.89285-2.5-1.08,0.33-1.79,0.89h-1.4286l-0.17857-1.0714,1.4286-1.7857,2.5-2.5-0.53-1.78-0.71-0.36v-0.89286l2.5-1.9643,0.35715-1.0714v-2.1429h-1.7857l-2.1429,0.71429-1.6071,0.17857-1.4286-1.9643-0.53571-2.3214,1.25-1.7857,1.0714-0.89286v-1.6071l-0.35714-2.3214,1.0714-0.89285,0.17857-3.0357-1.25-1.9643-1.7857-1.7857-0.17857-1.6071,1.0714-2.8571,1.6072-2.5,0.89285-1.7857-0.53571-1.25-2.1429-1.6071-1.4286-2.1429-1.25-1.4286-1.6071,1.7857-1.4286,1.4286-4.1072,2.5-1.4286,1.9643-0.35714,1.9643-0.53571,0.35714-1.9643,0.17857-2.1429-0.35714-1.9643,0.53571-1.9643,1.4286-2.8571,0.53572-1.0714,0.71428-1.4286,1.7857-2.1429,1.25h-2.5z","name":"Orenburg Oblast"},"nn":{"path":"m156.25,271.57,4.2857-0.53571,2.5-1.4286,3.5714-0.71428,2.6786-1.0714,1.25-0.17857,2.3214,1.25,1.7857,1.0714,2.6786-0.17857,1.4286,0,2.6786-1.0714,1.25,0.17857,1.4286,1.9643,1.0714,2.1429,2.5,0.17857,2.5,1.7857,1.0714,1.25,0.89286,2.5,1.25,1.4286-0.17858,1.6071-1.25,0.89286-1.7857,0.17857-0.71429,0.89286-1.6071,0-0.71428-0.89286-1.7857-1.0714-1.6071,0.71429,0,1.6071-1.25,1.4286-1.25,0.53572-2.1429-0.89286-2.1429-1.6071-3.0357-0.89286-1.7857,0-1.0714,0.89286-0.71429,1.7857,0,2.8571-0.17857,2.8572,0.53571,1.0714-1.0714,1.4286-2.3214,1.4286-1.4286,0.89285,0,1.4286-0.35715,0.89285-0.89285,0.71429-2.8572-0.35714-1.0714-0.17858-0.89285,0-0.71429,0.53572-0.38692,0.34215-0.69448-0.12626-0.44194-0.50508-0.50508-3.0936-1.5784-0.12627-1.5784,1.4521-2.2097,0.44194-3.9775-0.25253-2.0834-2.0203,0.1894-3.3461-1.2627-1.389-0.0631-0.75761,1.0102-1.4521-0.0631-1.0733-3.7249-0.63135-1.1996-0.75761-1.0733-2.7148,1.1364-2.336-1.1996-3.3461,2.0203-0.50507,3.283-0.12627,5.9978,0.12627,1.2627,0.88388,2.0203,0.1894,2.0203-0.75761,0.12627-1.5152-0.94702-1.4521,0.63135-1.0733z","name":"Nizhny Novgorod Oblast"},"ml":{"path":"m181.51,286.29,2.2728,2.336,2.4622,2.0834,2.7779,1.1364,2.9673,0.0631,2.4622,2.0834,1.5784,1.6415,0.44194,1.3258,0.63134,0.94702-0.3788,1.6415-0.56821,1.1364-0.0631,1.8309-1.5152,1.389-0.88388,0.56821-1.4521-0.12627-1.1996-1.5152-1.1996-0.44194-1.389-0.82075-1.7046-0.12627-0.50508,0.88389-1.7046,0.88388-2.5885,0.12627-1.9572-0.82075-1.1364-0.69448-0.88388-3.0305-0.37881-4.7351-1.1996-1.4521-4.0406-0.0631-1.3258-0.1894-0.63134-1.0733,0-2.0834,0.0631-3.0936,0.37881-1.8309,1.0102-1.0733,0.82075-0.63134,2.5885,0.3788,2.2728,0.88389,2.9673,1.7678z","name":"Mari El Republic"},"ta":{"path":"m160.93,308.14,0.0631,1.1364,0.44194,1.0733,0.88389,1.0102,1.5152,0.63134,1.8309,1.4521,1.5152,0.75762,1.389,0.44194,1.4521,1.0733,1.389,1.0102,2.4622,0.44194,1.4521,0.0631,1.7046,0.88388,0.12627,2.2097-0.37881,2.9042,0.44195,1.4521,2.0834,1.1996,1.0733,0.75761,2.9042,0.18941,0.82075,0.69448,0.56821,1.7046,1.3258,2.1466,0.63134,2.5885,0.88389,1.7678,1.6415,1.894,1.389,2.2728,1.6415,1.1364,0.88388,0.88388,1.1996,0.0631,2.9042-1.8309,2.9042-2.7148,0.44194-0.63135,0-1.894-1.0102-1.0102-0.0631-0.88388,1.8309-0.25254,1.2627,0.31567,0.75762,0.56822,1.3258,0.3788,1.6415-0.31567,1.1996-0.69448,2.9042-0.12627,1.5152-0.37881,0-0.94701-0.37881-1.2627-1.1996-1.5784-0.63134-1.2627-1.5152-0.44194-0.88389-1.2627s1.2627-1.0102,1.5784-1.1364c0.31567-0.12627,2.2728-0.75762,2.2728-0.75762l0.0631-1.4521s-1.1364-0.18941-1.389-0.50508c-0.25254-0.31567-0.69448-0.94702-0.69448-0.94702l2.0203-1.3258,2.0203-1.389,0.12626-1.1364-0.69447-0.82075h-1.5152l-0.69448,0.0631-1.1364,1.3258-0.56821,0.69448h-1.894l-0.12627,0.88388-0.12627,1.3258-0.82075,1.1364-1.5152-0.12627-0.75761-1.4521-1.1364-0.94702-0.82075,1.0102-1.7678-0.31567-0.56821-2.2728-1.4521-0.88388-0.63135-1.2627,0.12627-1.3258-1.1364-1.3258,0.0631-2.6516,0.12627-3.0936,0.63135-0.94702-0.25254-1.0102-0.69448-1.0733-0.56821-0.56821-1.0102,0.44194-0.88388,0.37881-1.0102-0.12627-1.0733-0.88389-0.88388-0.82074-1.8309-0.69448-1.4521-0.44195-0.94702,0.94702-1.8309,0.75762-1.8309,0.1894-1.6415-0.31567-1.9572-1.0733-1.389,0.50508h-2.7148l-2.0834,0.0631-1.389,1.1364-0.0631,0.88389,0.69448,0.50507,0.12627,0.82075-0.82075,1.0733-1.5152,1.2627-2.6516,1.0733-1.5784,0.69448-1.1364-0.75762-2.0834-0.82075z","name":"Republic of Tatarstan"},"iv":{"path":"m144.26,252.7,2.0203-1.1364s0.94702-0.50507,1.1996-0.50507c0.25254,0,2.5885,0.31567,2.5885,0.31567l2.7148,1.1364,2.3991,1.1364,1.2627,1.1996s1.4521,1.0102,1.7046,1.1996c0.25254,0.18941,1.4521,1.2627,1.4521,1.2627l1.7046,0.63135,1.1364-0.88388h0.88388l0.50508,0.82074,0.1894,1.1996,1.0102,0.75762,1.5152,0.82074,1.0102,0.63135,0.44194,1.0102-0.69448,1.0733-0.12626,0.88388,0.75761,0.37881,0.88388-0.56821,1.389,0.63134,0.69448,0.94702,0.25254,1.2627-0.25254,0.50508-1.894,0.69448-2.9673,0.82075-3.0936,0.50507-2.3991,1.5152-3.4724,0.50508-0.94702-0.12627-1.7678-2.3991-3.5987-3.4724-2.7148-3.3461-0.82075-2.7779-0.88388-1.0102-2.1466-0.44195-0.69448-0.56821,0.50507-1.4521,0.56821-1.3258z","name":"Ivanovo Oblast"},"yr":{"path":"m154.11,228.33,1.7678,1.5784,1.9572,0.50507,1.7678,0.50508,1.3258,1.6415,1.9572,1.5784,1.5784,0.0631,1.0733-0.69448,0.82075,0.31568,0.3788,1.4521,0.12627,3.4093-0.0631,2.6516,0.25254,1.5152,0.88388,1.0102,0.56821,0.94702-0.37881,1.0733-1.7046,1.1364-2.7148,1.3258-3.283,2.2097-1.6415,1.0733-3.3461,0.88388-2.4622-0.1894-2.1466-0.63135-2.6516-0.69448-2.1466,0.63135-1.8309,1.0733-1.7046-0.88388-1.4521-1.0102-1.894-1.1364-1.1364-1.1996-0.25254-1.3258,0.56821-1.4521,2.0203-0.88388,2.2097-1.1996,1.6415-2.7779,1.0102-2.9673,1.1996-1.2627,0.75762-2.4622,1.6415-1.8309,1.9572-1.8309,2.7148-1.5152z","name":"Yaroslavl Oblast"},"kt":{"path":"m168.7,245,1.389,0.12627,1.2627-0.75762,1.5152-1.389,1.894-0.75762,1.894,1.1364,1.894,1.5152,2.5254,0.12627,0.63135-0.75761,0.75761,0.50507,1.2627,2.1466,2.2728,2.2728,1.5152,1.5152,1.1364,1.894,0.3788,2.2728,1.2627,1.7678,1.5152,1.6415,2.5254,1.389,1.7678,1.5152,1.7678,1.894,2.0203,0.88388,1.894,0.12627,2.0203-2.0203,1.6415-0.3788,0.63135,1.894,1.1364,1.0102-0.12627,1.6415-1.6415,1.5152-0.12627,1.894-0.3788,2.5254s-1.7678,0.75761-2.3991,0.75761c-0.63134,0-6.3134-0.12626-6.3134-0.12626l-3.1567,0.12626-1.1364,1.1364-1.2627,0.50507-2.0203-0.75761-1.5152-0.75762-2.0203-0.3788-1.0102-1.5152-0.88388-1.6415-0.75762-0.63135-1.1364-0.12627-0.88388,0.50508-2.1466,0.75762-3.283-0.25254-1.7678-0.50508-2.0203-1.2627-0.50508-0.50508,0.25254-0.63134v-1.1364l-1.389-1.2627-0.88389-0.50508-0.63134,0.37881-0.38556,0.10695-0.53571-0.35714,0.0893-0.89286,0.71429-0.625,0.0893-0.98214-0.89285-0.71429-1.7857-1.0714-0.98214-0.98215-0.26786-0.98214-0.71428-0.89286h-0.98215l-0.89285,0.625-0.625,0.0893-1.25-0.71429-1.4286-0.80357-1.3393-1.25-1.7857-1.3393-0.69-0.57,1.07-0.71,2.05-0.54,2.3214-0.71428,2.8571-2.0536,3.3036-1.6964z","name":"Kostroma Oblast"},"le":{"path":"m123.49,177.57,1.7678-1.6415,1.5152,0,2.2728-1.894,2.5254-0.50507,2.2728,0.63134,2.9042,2.1466,2.7779,1.5152,0.75761,2.5254,0.12627,1.389,1.0102,1.1364,1.1364-0.37881,0.75761-2.0203-0.12627-2.3991-0.88388-1.6415-0.88388-1.894,0.12626-2.0203,1.1364-1.2627-0.25254-1.894-0.75762-1.0102,0-0.37881,1.2627-0.25254,3.283,0.25254,3.5355,1.2627,2.2728,0.12627,1.894,0.12627,1.2627,1.1364,0.63135,1.2627,0,1.7678-0.37881,1.6415-0.25254,2.1466-0.63134,1.7678-2.1466,1.2627-0.75761,1.0102-1.0102,1.894-1.0102,1.1364-1.7678,1.1364-0.63135,1.2627,0.25254,1.1364,1.389,0.75762,2.1466,0.25253,1.0102,0.88389,0.25254,1.6415,1.0102,0.75762,2.1466,0.12627,1.1364-0.50508,3.4093-0.25254,1.7678-0.63134,2.0203-0.25254,1.5152,0.75761,1.0102,1.6415,1.1364-1.2627,1.389-1.7678,0.75762,0.88388,0.50507,2.0203,0.63135,2.2728,2.1466,0.50507,1.2627,0.75762,1.1364,1.0102,0.12626,1.2627,0.12627,1.6415-0.12627,1.7678-1.2627,0.75761-2.2728-0.25254-1.389-0.88388-1.389-0.25254-0.75761,0.88388-1.5152,1.0102-3.0305,0-1.5152,0.3788-2.7779,3.0305-1.0102,1.389-0.37881,2.1466-1.6415,1.0102-1.1364,0.12627-0.3788,1.2627-1.2627,0.63134-0.63135-1.0102-1.1364-1.1364-2.2728-0.12627-0.75761,0-1.1364-3.0305,0-2.9042-1.0102-1.5152-0.88389-1.894-0.12627-1.6415-2.2728-0.88388-0.88388-0.63135s-0.37881-1.0102-0.37881-1.5152c0-0.50507-0.25254-3.4093-0.25254-3.4093l-0.75761-1.1364-2.3991-0.25254-1.389,0.75761-0.75762-0.50507-0.12627-1.2627-0.63134-0.88389-1.0102,0.63135-2.1466,0.3788-2.7779-0.88388-1.5152-0.88388-3.283-0.37881-1.2627-0.88388-1.0102-0.75762,0.63135-1.2627,0.88388-2.1466,0.88388-1.389,0.12627-1.2627z","name":"Leningrad Oblast"},"ki":{"path":"m207.59,265.33,1.2627-0.88388,0.12627-2.0203,0-2.0203-1.0102-1.389-0.12627-1.6415,1.5152-0.37881,3.9143,0.25254,2.5254-0.88388,2.6516-1.1364,0.63134-1.389,1.1364-0.63134,2.7779,0.25254,1.389,1.7678,0.12627,2.7779-0.63134,3.0305-1.0102,1.389-0.75761,2.7779-1.894,0.75762-2.0203,0.12626-1.6415,1.7678-0.63134,1.6415-1.0102,0.63134-0.75761,0.88389,0.75761,1.389,1.6415,0.88388,1.0102,1.389-1.6415,1.894,0.12626,1.894,1.1364,0.88389,1.2627,0.50507,0.88388-1.389,0.88388-1.894,2.7779,0,3.1567,0.3788,4.2932,1.2627,1.7678,2.2728,2.1466-0.12627,2.1466-1.6415,1.6415,0.37881,1.2627,1.0102,0.75762,1.894s1.0102,1.5152,1.389,1.7678c0.3788,0.25254,2.5254,1.894,2.5254,1.894l0.25254,1.5152-0.88389,2.0203-2.0203,1.1364-3.5355,0.25253-1.2627,0.63135-1.2627,1.5152-0.25254,1.389,1.0102,1.389,0.12627,1.1364-1.5152,1.1364-0.75762,1.389-0.12627,2.1466-1.2627,1.0102-2.7779,0.12627-1.1364-1.2627-1.0102-2.5254-2.0203-0.12627-1.389-0.3788v-1.894l-2.0203-1.1364-3.1567,0.75761-1.7678,1.389s-1.2627,1.0102-1.2627,1.5152c0,0.50508-0.3788,2.2728-0.50507,2.7779-0.12627,0.50508-1.6415,1.5152-1.6415,1.5152l-2.5254,1.1364-1.894-0.50507-1.2627-1.389-1.5152,0.25253s-0.75761,0.50508-1.0102,1.389c-0.25254,0.88389-0.12627,2.7779-0.12627,2.7779l0.12627,1.894-2.0203,0.63135-3.4093,0.3788-0.25254,1.1364v1.389l-0.3788,1.389-1.7678,0.88389h-0.63135l-0.63134-1.5152-0.50508-0.37881,0.12627-2.5254,0.25254-2.5254,0.50508-1.5152-0.88389-1.6415-0.25254-1.2627,0.75762-2.9042,0.63134-2.5254-1.0102-1.5152-1.6415-2.5254-2.1466-1.5152-0.88388-0.63134-3.9144-0.12627-1.7678-1.2627-1.6415-1.5152-1.6415-1.5152-0.50507-0.50508,0.50507-1.0102,1.2627-1.6415,0.25254-1.0102,1.1364-0.75761,1.5152,0.50507,1.894,1.389,1.389-0.75761,2.1466-0.63135,1.389-1.2627v-1.5152l-1.2627-1.894-0.63135-1.5152s-0.78918-1.1049-0.85231-1.2627c-0.0631-0.15784,0.56821-0.69448,0.56821-0.69448l0.97858-0.63135,0.75762-0.75761s2.2728-0.0316,2.8095-0.0316c0.53664,0,3.1567,0.0631,3.8828,0.0631,0.72605,0,3.7881-0.44194,3.7881-0.44194l1.4521-0.59978s0.12626-1.5784,0.15783-1.7993c0.0316-0.22097,0.47351-2.4938,0.47351-2.4938l2.0203-2.3991z","name":"Kirov Oblast"},"bs":{"path":"m211.5,329.86,2.3991-1.6415,2.5254-1.6415,1.5152-0.25254,1.894,2.6516,2.2728,2.2728,2.9042,0,2.6516,2.5254,1.7678,2.5254,1.1364,1.7678,1.7678,0,1.2627,2.1466,2.6517,2.3991,2.2728,1.6415,2.0203,1.7678,1.2627,1.1364,0.88389,1.389-0.37881,1.1364-1.6415,0.63134-0.88388,1.2627,0.25254,1.389,1.389,0.63135-0.63135,1.2627-1.5152,0.50508-1.2627-0.75762-2.3991,0.37881,0,1.0102-1.5152-0.25254-0.50508-0.88388-1.5152-1.0102-4.5457,0-1.1364-0.37881,0-1.2627,1.7678-1.2627,0.12627-1.389-1.0102-0.88389-1.6415-1.1364-2.5254,0.25254-1.0102,2.1466-1.7678,2.6516-0.88388,2.0203,0.50508,3.0305,1.894,1.0102,2.0203-0.75761,1.6415,0.75761,1.0102,2.0203,2.5254,0.12627,2.0203,0.75761,2.7779,0,1.7678-0.50508,1.5152,1.1364-0.63135,1.389-1.894,1.5152-1.2627,1.1364-1.0102,1.389-1.2627,0-1.2627-0.63134-2.1466-0.75762-1.6415-0.3788-1.6415,1.2627-0.3788,1.5152-0.63135,1.389-2.3991,2.6516-1.6415,2.3991-3.9143,3.6618-1.894,1.5152-0.25254,2.0203-0.63134,1.5152-2.9042-0.25254-1.6415,1.7678-1.2627,1.389-0.50507,0.63135-2.0203,0-1.1364-2.0203-0.50508-0.63134-5.4296-0.63135-1.389-2.1466-2.7779,0.88388-1.2627-0.12627,0-0.50507,3.4093-4.4194,0-1.6415-0.88389-0.63134,0-1.1364,1.7678-1.1364,1.0102-1.389,0-2.0203-0.25253-0.50508-1.894-0.12627-2.2728,1.2627-1.7678-1.1364-1.1364-2.3991,1.2627-2.3991,1.0102-1.894-0.25254-2.5254,0-0.75761,0.88389-1.5152,0-3.1567-2.5254-2.9042-0.12627-2.0203,1.0102-2.6516,2.0203-4.1669,2.9042-2.1466,3.9143-3.1567,1.0102-2.1466-0.88389-1.389-0.12627-0.12627,0-0.75761,1.389-0.25254,2.3991,0.75762,1.389,0.12626,1.7678-0.63134,2.6516-0.25254,1.7678-0.12627,0.88388-0.63134,0-1.7678z","name":"Republic of Bashkortostan"},"cl":{"path":"m242.18,347.66,1.7678-0.88388,2.7779,0.50507,2.3991,2.1466,2.3991,1.7678,3.0305,1.894,2.9042,0,1.5152,1.6415,1.6415,2.3991,0.75761,1.894-0.63135,3.1567,0,2.7779-0.88388,1.389-1.7678,0.63135-1.6415,1.1364-0.75762,1.2627-2.0203,0.63135-1.894,1.5152,0,1.1364,1.5152,1.5152,2.0203,2.0203,1.1364,2.3991-0.37881,2.7779-0.75762,1.7678-2.3991-0.63135-2.6516-0.50507-3.283-0.37881-2.0203-0.50508-1.5152-1.7678-2.0203-1.7678-1.1364-1.1364-1.1364,0.50508-1.5152,1.1364-0.88388,1.0102,0,1.894,1.6415,1.2627-0.37881,0.75761-2.2728,0.63135v1.0102c0,0.50508,0.75761,2.0203,0.75761,2.0203l2.0203,1.7678,0.12627,1.894-1.5152,0.63134-1.5152-1.5152-1.389-1.2627-2.2728-0.63134-3.283,0.12627-1.5152,0.25253-0.63134,1.2627,1.0102,1.389-0.37881,1.894-1.0102,1.6415-4.5457,0.25254-1.6415-0.88389-1.6415-0.63134,0.50507-2.0203,1.6415-0.88388-0.75761-1.7678-2.0203-2.3991-1.6415-1.0102-1.894,0.12627-1.389-0.63135,0.63134-2.7779,1.7678-2.6516,4.4194-4.1669,3.7881-4.672,1.2627-2.9042,1.389-0.88389,2.5254,0.25254,2.0203,1.0102h2.0203l1.894-2.2728,2.2728-1.894,0.50508-1.389-1.5152-1.2627-2.1466,0.50507h-3.0304l-2.7779-0.88388h-1.5152l-0.88388-1.894-1.389-0.50507-1.7678,0.63134-1.0102-0.37881-0.88389-0.63134-0.63134-1.894-0.12627-1.6415,3.6618-5.6821,0.75762-0.63135,1.7678,0.37881,1.7678,0.88388,0.63134,1.1364-0.3788,0.75762-1.2627,1.1364v1.1364l-0.12627,0.12627,0.75761,0.63135,2.6516,0.12627h2.2728l1.5152,1.0102,1.2627,1.1364,1.1364-0.63135,0.50507-0.75761,2.0203,0.12627,1.7678,0.37881,1.1364-1.2627-0.37881-1.0102-0.75761-0.88388,0.25253-1.5152,1.5152-1.0102,0.63135-1.1364z","name":"Chelyabinsk Oblast"},"ud":{"path":"m231.7,302.33-0.12627,1.389-2.0203,2.7779-1.5152,1.389,0.12626,1.389-1.6415,1.0102-1.1364,1.5152-1.5152,2.3991-0.50508,1.894-0.50508,3.1567-2.0203,1.0102-2.2728,0.12627-0.63135,1.1364-0.37881,3.0304-0.12627,1.389-3.0304,2.0203-2.2728,1.389-1.0102,0-1.2627-1.5152-1.7678-0.75762-0.63134-1.2627,1.389-1.1364,2.0203-0.75761,0.50508-1.1364-0.37881-0.50508-1.5152-0.88388,0.25254-0.88389,2.7779-1.7678,1.0102-1.1364-0.50507-1.0102-0.75762-0.63134-2.0203,0.63134-1.1364,1.389-1.5152,0.63135-1.0102,0.25253-0.3788,1.5152-0.63135,0.75762-0.88388,0.25254-0.75762-1.0102-1.389-1.2627-0.75761,0.37881-1.2627,0.37881-0.88388-0.88389-0.63135-1.1364-1.0102-1.0102-0.63135-1.0102,0-1.1364,1.6415-0.88389,1.1364-1.1364,0.25254-2.0203,0.25254-1.0102,3.1567-0.50507,1.6415-0.50508,0.37881-4.4194s0-1.2627,0.63135-1.5152c0.63134-0.25253,1.2627-0.3788,1.2627-0.3788l1.2627,0.63134s1.6415,1.894,2.3991,1.389c0.75761-0.50507,1.894-0.88388,1.894-0.88388s2.3991-1.0102,2.2728-1.6415c-0.12627-0.63134,0.25254-1.6415,0.25254-1.6415l0.3788-1.389,2.1466-2.2728,1.2627-0.75761,2.2728-0.50508,1.6415,0.37881,0.88388,1.1364v0.75761l0.25254,0.63135,1.0102,0.12627,1.6415,0.3788,0.63135,0.50508,0.63134,1.6415,0.75762,0.75761z","name":"Udmurt Republic"},"pe":{"path":"M242.06,274.03l-2.28,1.16,0.5,1.5-0.5,3.53,0.5,1.28,1.41,2.41,2.25,1.62,0.65,1.66-1.4,2.12-2.41,1.03-2.87,0.63-1.66,0.87-1.13,1.54,0.5,1.24,0.63,1.38-0.13,1.03-1.9,1.63-0.38,2.4-0.87,1.6-0.13-0.19-1,0.12-1.28,2.5-2,2.29-0.15,1.53-0.88,0.87-2,2.03-1.91,3.41-0.62,3.9-1.28,0.88-2.25,0.38-1.28,0.78-0.63,4.9,2.53,2.66,2.13,2.28,2.53,0.25,2.28,1.5,3.41,4.94,1,0.37,1.28-0.12,1.12-1.25,0.88-1.28,1.03-1.75,1.25-1.66,1.28,0.88,1.5,1.28h2.41l2.03-0.91,0.5-1.75,0.25-1.91,0.87-0.75,0.88-1,0.78-0.5,2.5,2.75h3.69l0.87-1,0.5-1.5,0.25-1.65,0.88-1.25,4.69-0.38,2.15-0.78,0.63-1.5-0.63-0.62-0.12-1.41,1.12-1.38,0.75-1.03v-1.37l-0.5-0.88-0.62-1.03,0.25-1.75,1-1.53,2.03-1.5,3.15-0.5,1.88-1.91,2.28-1.62,2.28-1.66,2.28-1.65,0.88-0.75,0.5-1.25,1-1.78s0.9-1.12,1.53-1.75c0.63-0.64,1.62-1.91,1.62-1.91l1.16-1.37,0.25-1.66-2.41-0.38-2.65-0.75-2.66-1.65-2.75-1.38-2.66-1.28-2.53,0.66-3.15,0.12-3.66-0.9-2.9-1.63-1.63,0.85-0.41-0.22-1.9-1.25-1.38-2.03-1.12-1.13-2.28-0.78-0.13-1.63-1.12-1.28-1.41-1.5-1.91-0.5-2.62-0.25-2.41-0.78z","name":"Perm Krai"},"sv":{"path":"m286.13,291.72,1.7678-1.1364,1.1364,1.389,0.88388,2.3991,2.6516,1.5152,2.9042,2.1466,1.2627,2.3991,2.2728,2.7779,0.12627,1.7678,0.63135,2.0203,0.75761,1.5152-0.63134,1.7678-1.894,1.894-0.63135,1.7678-0.25253,4.7982,0.3788,2.7779,0.63135,1.0102-1.0102,2.9042-1.5152,1.7678-0.37881,2.3991,2.0203,1.2627,2.3991,2.0203,0.75761,2.0203,0.12627,2.6516-0.63134,1.6415,0,2.9042,0.75761,2.3991-0.25254,1.894s-0.88388,0.88388-0.88388,1.389c0,0.50508-0.50508,2.7779-0.50508,2.7779l-1.2627,1.2627-2.0203,0.12627-1.1364,0.88388h-3.0304l-1.5152-0.88388-2.1466,0.25254-1.389,1.1364-0.88388,1.389-0.25254,2.9042-0.75761,1.1364-1.1364,1.0102-1.7678,0.50508-3.0305,0.25254-2.0203,0.25254-1.0102,0.88388-1.894-0.37881-1.389-1.1364-1.894-1.894-2.5254-1.6415-1.5152-0.63135-2.2728,0.37881-1.894,0.3788-1.389-0.12626-1.6415-1.389-1.894-2.2728h-2.2728c-0.50508,0-1.6415-0.75761-1.6415-0.75761l-4.672-3.1567-1.6415-1.7678-2.9042-0.3788-1.389,0.12627-0.88389,0.12627-1.2627-1.2627-3.9143-3.283-3.1567-3.0305-0.50507-1.389,2.0203-2.9042,1.389-2.7779,0.75762-0.25253,1.6415,1.1364,1.1364,0.75761h2.7779l1.5152-1.389,0.50507-1.7678,0.12627-1.7678,2.5254-1.7678,1.7678,2.0203,1.2627,0.63134h2.3991l1.6415-1.1364,0.75761-2.0203,0.50508-1.894,3.7881-0.75762,2.5254-0.3788,1.389-1.2627v-1.0102l-0.88388-1.389,1.7678-2.1466,0.25254-1.1364v-1.389l-1.0102-1.6415,1.0102-2.5254,2.1466-1.6415,3.283-0.88388,1.1364-0.75762,8.0812-6.1872,0.88388-1.6415,1.6415-2.7779,2.1466-2.5254z","name":"Sverdlovsk Oblast"},"ku":{"path":"m255.69,383.01,2.3991,1.894,3.283,0.88388,4.2932,1.2627,3.1567,0.75762,4.1669-0.50508,2.5254,0.25254,2.9042,1.0102,3.5355,1.1364,3.5355,0.88388,3.283,1.0102,3.4093-0.12627,2.3991-1.2627,3.6618,0,1.0102-1.5152,0-1.894-1.5152-2.1466-1.389-2.7779s-1.5152-0.12627-2.1466-0.37881c-0.63135-0.25254-2.2728-1.6415-2.2728-1.6415l-0.75761-3.1567-1.389-1.7678-2.6516-1.2627-1.5152-1.6415-1.2627-2.2728-1.6415-1.5152-1.389-1.2627-1.0102-1.389,0.50508-2.3991,1.389-1.2627,1.1364-1.894-2.5254,0.37881-3.0305,0.12627-1.389,0.50507-0.75762,0.50508-1.2627-0.37881-2.0203-1.0102-1.7678-1.7678-2.0203-1.389-1.7678-0.75761h-1.2627l-3.0305,0.63134-1.7678-0.12627v1.1364l0.63135,0.88388-0.50508,2.2728v2.2728l-0.25253,2.1466-0.88389,1.1364-2.5254,1.1364-1.389,1.1364-1.5152,1.2627-1.7678,0.88388-0.50507,1.2627,0.63134,1.1364,1.894,1.894,1.389,1.389,0.63134,1.7678v1.894l-0.50507,1.7678z","name":"Kurgan Oblast"},"ko":{"path":"m224.63,259.27,2.1466-0.63134,0.63134-0.88388,1.894,0.12627,1.6415,1.894,2.1466,0.25254,2.1466-0.50508,1.5152-1.894,0.50508-1.5152-0.63135-0.88389,0.63135-1.5152,2.1466-1.2627,4.5457-1.894,2.6516-1.1364,0.25254-1.5152-0.50508-2.5254-2.1466-0.88389-3.283,0.12627-2.3991,1.6415-2.3991-0.75761s-0.50508-1.0102-1.2627-1.0102-1.5152-0.25253-1.5152-0.25253l0.50507-3.0305,1.7678-0.37881,1.389-1.5152,0.50508-1.894,2.1466-0.50508,2.2728,0.12627,0.63135-1.7678-0.63135-0.63134-0.63134-2.1466,0.63134-1.389,4.5457-2.0203v-1.2627l-1.0102-2.5254-0.63135-1.6415-1.6415-1.7678-0.63134-1.1364,0.25254-1.6415,1.2627-0.63134,1.7678,0.75761,1.5152,2.1466,1.6415,1.5152,2.2728,1.894,2.6516,1.2627,1.7678,1.1364,0.50508,1.7678,1.5152,1.5152,3.1567,0.3788,1.894,1.2627,2.9042,0.50507,0.88388,1.2627h2.0203l1.0102-0.63134-0.25254-1.5152-0.75761-1.5152,0.50507-1.0102,0.88389-1.5152s0.25253-1.1364-0.12627-1.6415c-0.37881-0.50508-1.1364-1.1364-1.1364-1.1364v-0.88388l2.7779-3.283,3.1567-2.1466,1.894-2.0203,1.0102-0.88388,2.3991,0.63134,3.4093,0.12627,2.5254,0.75762,4.2932,0.50507,2.1466,0.63135,3.283,0.12627,2.3991-0.50508,1.5152,0.12627,0.12627,1.894,1.2627,1.0102,2.1466,2.1466,5.3033,4.672,7.4499,4.672,6.4397,3.7881,5.177,3.0305,5.5558,3.283,2.7779,1.894,2.2728,0.25254h3.283l2.1466-1.0102,2.5254-2.3991,1.6415-1.2627,2.7779,0.25253,2.3991-0.12626,2.0203-0.63135,1.5152-0.88388,1.6415-0.37881,3.1567,0.12627,1.6415,0.25254-0.50508,1.5152-0.88388,1.1364-1.1364,0.63134-0.50508,1.894,1.2627,1.7678,1.2627,1.389,0.12627,1.894-1.1364,1.389-0.88388,0.25254-0.75762,1.389-2.0203,0.25254-2.3991-0.12627-2.1466,0.88388-2.5254,1.389-1.389,1.1364-3.0305-0.12627-2.1466-0.50507h-3.1567-2.0203l-1.0102,0.3788-1.389,1.5152-0.75762,0.88389-2.1466,1.6415-1.5152,0.50508h-2.3991l-2.3991-0.25254-1.5152,0.50508-2.9042,2.0203-2.2728,1.2627-1.5152,1.0102-1.5152,0.3788-1.2627-0.12626-1.2627-1.0102-0.12626-1.894-0.63135-1.389-1.6415,0.88388-1.5152,1.389-1.0102,1.2627-0.88388,0.50508-1.2627,0.50507-0.75762,0.37881-0.12627,1.7678-0.3788,1.7678-0.63135,1.389-0.88388,1.1364-1.0102,1.6415-1.894,1.6415-1.6415,1.389-1.2627,0.75762-2.7779,3.283-1.894,2.6516-1.1364,3.0305-0.50507,1.6415-1.5152,1.6415-2.0203,0.88388-1.5152,0.63134-1.7678,1.0102h-2.2728l-3.1567-1.0102-3.1567-1.6415-4.4194-2.1466-0.75761-0.3788-2.5254,0.50507h-3.283l-3.0305-0.88388-2.9042-1.389-1.0102,0.25254-1.6415-0.12627-1.5152-1.2627-2.2728-2.3991-1.894-0.88388-0.63135-1.5152-2.2728-3.0305-5.8084-1.1364-1.389-0.63134-1.7678,0.63134-0.75761,0.75762v0.75761l0.37881,0.88389v1.6415,1.0102l-0.50508,0.3788-1.389-0.63134-0.88388-0.37881-1.1364,0.25254-1.5152,0.88388-1.5152,0.50508-1.1364-0.25254-0.88389-1.389-0.88388-0.63135-2.2728-0.88388-6.0609-1.1364-1.2627,0.25254-1.1364,1.1364-0.63135,1.5152-1.1364,0.37881-1.6415-1.389v-1.1364l1.0102-1.389,0.50507-0.75761-0.50507-1.0102-1.1364-1.0102-1.1364-1.0102-0.3788-0.75761,1.5152-1.2627,1.1364-2.5254,1.6415-1.0102,1.6415-0.3788,1.894-1.2627,0.88388-2.3991,1.2627-1.2627z","name":"Komi Republic"},"mu":{"path":"m217.31,136.92,1.1364-1.5152,1.5152-0.75761,2.9042,0,4.2932,0.12626,2.1466-0.50507,2.5254-1.6415,0.88388-2.0203,0.12627-3.5355,1.5152-3.4093,1.0102-1.0102,4.7982,0,2.3991-0.63134,1.0102-1.2627,1.7678-0.12627,2.3991,1.0102,3.0305,1.894,2.2728,1.894,2.6516,0,2.2728-0.25253,0.25254,2.3991,1.894,0.3788,1.7678,1.0102,0,2.2728,0,1.7678-1.0102,0.63134-1.5152-0.3788-0.75761-1.1364-0.25254-0.63134-0.88388,1.0102-0.25254,0.63135,0.50508,1.1364,1.1364,0.88388,0.50507,0.75762-0.3788,1.0102-1.0102,0.63134,0,0.75762,1.1364,1.2627,0.88388,1.5152,0.88388,1.7678,2.0203,2.1466,0.75761,1.7678,0,1.7678,0,1.1364-0.50507,1.1364-0.25254,2.0203-0.12627,5.5558,0,5.5558-0.75762,1.389-0.25253,1.894,0.63134,0.88389,0.63135,1.0102-0.12627,4.0406,0,3.5355-0.63135,1.389-1.7678,1.1364-0.88389,0.88388,0,1.0102-0.25254,0.88389-1.1364,0.88388-2.7779,0.75761-3.6618,0.12627-3.1567,0.50508-1.6415,0.37881-2.5254-0.50508-2.0203-0.75761-1.894-1.389-1.894-2.2728-1.7678-2.2728-1.1364-1.894-0.63135-2.2728-0.3788-2.3991-1.2627-2.6516-1.1364-2.0203-0.3788-1.6415-0.37881-3.9143,0-1.7678,0-1.389-0.88388-0.88389-0.12627-2.9042,0-2.1466,0.75761-1.5152,0.12627-1.1364,0-1.5152-0.88388,0-0.63135,0.88388-0.88388,1.389-0.75762,1.894-0.25253,0.63135-3.5355,0-2.6516-0.25254-0.75761-1.5152,1.389-2.0203,1.1364-0.75761,0.25254-1.0102-1.7678-2.2728-1.5152-1.7678-1.2627-2.7779-1.2627-1.2627z","name":"Murmansk Oblast"},"kl":{"path":"M216.94,136.91l-2.28,1.53,0.12,1.62-1,2.28-1.9,2.04-1.88,0.87-4.31-0.13-0.88,1-2.28,2.16h-2.91l-2.4,0.38-0.13,4.03-0.62,1.9-2.91,0.38-1.87,0.25,0.12,1.4,0.88,1.5-1.78,1.29-1.25,0.5-3.41-0.91-1.66,1.16-0.37,2.9-0.13,4.16-1.25,2.28-2.65,1.62-3.41,1.16-8.72-0.12-3.53-0.91-5.19-0.75-4.28-0.75,0.88,1.87-0.13,1.54,0.07,0.53-0.94,5.65-2.53,1.5-2.03,3.32-2.91,1.87-0.13,1.66,2.66,1.25,1.91,0.75,1,2.4,2.9,0.25,5.07-0.75,1.65-0.9,2.25,0.53,1.78,1.37,1.38-1.62,1.12-0.78,1.78,4.69,1.5,0.62,2.91,1.53,0.06,0.69-0.12,2.69,0.06,1.78-1.63,1.53,1,1.12,2.29,0.5,1.75-0.62,2.53-1,0.62-0.5,1.91,1.5,1,1.9,1.03,1.88,3.16,0.25,3.28-3.03,0.75-1.5,1.25-1.38,2.4-1.28,2.03-1.75,0.5-1.15-0.37-1.25-1.91-0.63-1-1.03,0.13-1.63,1.37-2.4,1.78-1.91,1.66-1.87,1.25-2.16,1.38,0.25,1.78,1.53h1.9l0.88-0.53,0.12-2,1.5-2.03,0.25-1.75-0.25-3.16-0.5-1.53,0.63-1.78,1.4-0.87,1.38-0.63,3.03-2.53,0.5-1.13,0.53-1.28h1.38l3.4-0.62,2.16-1,1.5-1.28v-1.88-3.4l0.25-2.54,1.03-0.87v-1.16l-0.12-2-0.78-1.15-2-0.38-1.41-0.37-0.63-0.88v-0.75l0.63-1.15,1.28-1,0.75-0.63-0.38-1.03-1.65-2.37-1.88-2.29-1.4-2.15-1.75-2.53z","name":"Republic of Karelia"},"vo":{"path":"m185.36,208.76c0.12627,2.5254-1.389,5.0508-1.389,5.0508l-1.5152,1.894s-0.3788,1.0102-0.3788,1.7678c0,0.75762,0.12626,1.389,0.12626,1.389s0.63135,1.389,1.894,2.1466c1.2627,0.75761,2.0203,2.7779,2.0203,2.7779l1.0102,1.894,1.5152,1.2627,1.2627,1.0102,1.1364,1.894,1.2627,0.37881,3.1567,0.50508,1.5152,2.2728,1.0102,1.894,1.7678,0.63135,0.25254,0.63135,1.0102,2.2728,1.2627,0.75761,2.6516,0.25254,1.5152,0.12627,0.50507,2.7779,1.2627,2.0203,2.7779,1.389,1.389,0.12627,1.0102-0.63134,1.389,0.12627,1.0102,0.50507,0.75761,1.0102-0.63134,1.5152-0.75762,1.389,0.25254,0.75762,1.2627,1.1364,0.75761,0.50508,1.0102,0.50507,0.3788,0.63135v1.0102l-1.5152,1.5152-2.0203,0.63135-2.0203,0.75761-4.2931-0.25254-1.2627,0.88389,0.25253,1.1364,0.88389,1.2627v2.6516,1.1364l-1.0102,1.1364-0.75761-0.63134-1.1364-1.0102-0.37881-1.5152-1.0102-0.12626-1.6415,1.0102-1.0102,1.0102h-1.7678l-3.0305-1.5152-2.1466-2.1466-2.0203-1.1364-1.894-1.6415-2.0203-2.7779v-1.894l-1.894-2.7779-2.5254-2.2728-1.5152-2.0203-1.2627-1.7678-0.63135,0.75761-1.6415,0.12627-1.6415-0.25254-2.2728-1.894-0.88388-0.50508-1.2627,0.63135-2.7779,1.7678-0.63135,0.37881-1.2627,0.12627-0.88388-0.50508-0.50508-1.2627-0.63134-1.894,0.25254-4.0406-0.50508-2.5254-0.50508-1.2627-1.2627,0.12627-1.2627,0.37881-0.88388-0.25254-1.389-1.2627-1.6415-1.7678-4.0406-1.0102-1.2627-1.1364-0.50508-1.0102,0.63135-2.0203-0.50508-0.88388-1.0102-0.75761-1.1364-0.63135-1.894-0.37881-0.25254-0.12627,0.50508-2.7779-0.50508-1.6415-0.63134-1.2627-0.88388-0.88389-0.37881-0.50507-0.12627-1.0102-0.25254-1.5152,0.63135-0.88388,0.75761-0.88388,1.389-0.25254h1.6415l0.88388,1.2627,1.0102,0.88388,1.1364-0.50507,0.25253-1.1364,1.2627-0.25254,1.1364-0.63135,0.75761-1.1364,0.12627-1.5152,3.283-3.6618,1.2627-0.88388h1.7678l2.0203-0.37881,1.389-0.75762,0.88388-0.63134h1.1364l1.5152,0.88388h1.2627l0.88389,0.75762,0.50507,0.88388,1.389,0.63134h1.1364l1.389-0.3788,1.5152-0.50508,1.1364-0.37881,0.63135-0.25253,0.88388,0.12627,1.0102,0.88388,1.2627,1.6415,0.50507,1.2627z","name":"Vologda Oblast"},"ar":{"path":"M391.06,151.03l-3.56,1.06-2.16,0.91-3.56,0.19-1.59,0.87s-1.26-1.07-1.97-1.25c-0.72-0.18-0.91,1.1-0.91,1.1l-1.78,2.65-2.69,1.63-3.03,0.87-2.31,1.78s-2.15,0.37-3.22,0.72c-1.07,0.36-2.5,0.19-2.5,0.19l-1.59,0.72,1.06,1.78-2.16,1.25,0.38,0.72,1.25,1.44,1.78,1.59,1.78,1.78,0.91,1.63,1.4-0.72,0.91-1.97,2.16-0.72,1.25-0.53,1.93-0.19,0.91-1.59h1.97l1.25,0.87,1.59-1.25,1.1-1.25,2.65-0.15,0.72-0.57,3.41,0.72,1.78-1.06,0.34-1.44,2.69-0.34s1.07-0.01,2.5-1.44l0.72,1.06,2.84-0.68s1.98-0.19,2.69-0.19,3.03-0.38,3.03-0.38h2.31l2.35,1.25,1.78,0.91,1.25-0.72,0.72-0.87,4.28,1.06,1.97-1.44,3.22,0.19,4.09-0.72,1.25-1.59,1.97-2.88s-1.26-0.89-1.97-1.25-2.69-1.44-2.69-1.44l-3.22,0.57-4.43,1.59-4.32-0.91-2.5-0.15-3.18-0.72-1.63-0.91-1.59-1.78-1.44,0.72-1.97,1.06-2.5-0.15-3.22-0.91-2.5-0.72zm-35.53,14.47l-2.5,0.53-1.78,1.63-2.5-0.38s-1.44-1.06-1.44-0.34v1.78l0.72,1.59-2.12,1.25-2.88,1.1-1.06,1.25h-2.16l-0.72-1.1-1.59-0.87-2.69,2.12-0.15,3.03,1.93,2.69,1.44,2.16s1.26,2.14,0.91,3.03c-0.36,0.89-4.28,2.5-4.28,2.5l1.06,2.5,1.25,1.59v1.97l2.31,0.53,2.88,1.97,2.12,2.31,1.97,0.38s1.06-1.07,1.06-1.78c0-0.72-0.15-4.48-0.15-5.38,0-0.89,1.59-8.37,1.59-8.37l0.34-1.44,4.13-2.69s0.88-1.07,2.31-1.97c1.43-0.89,4.66-3.03,4.66-3.03l1.78-1.4s0.71-1.64,0-1.82c-0.72-0.17-1.62-0.53-2.16-1.25-0.53-0.71-3.03-2.65-3.03-2.65l-1.25-1.44zm-132.28,14.34l-0.63,0.63-2.28,0.25-0.87-0.13-1.78,0.91v1.38l-0.63,1.65-1.15,0.75-0.13,1.38,0.91,0.78,0.87,0.87-0.12,1.25-1.25,1.28-1.66,1.5-1.65,0.13-1.38-1-0.62-1.53-1.41-2-1.25-1.03-2.03,0.53h-1l-2.41-1.66-1,0.38-1.66,2.15-1.37,2-1.66,1.78-1.25,2.66,0.38,1,1,1.28,1.78,0.25,0.12,1-0.12,1-2.78,2.41-2.16,0.87-1.87,3.03-2.53,2.53-2.91,0.5-1.13,0.13-0.5,0.91-0.28,1.87-0.87,2.16-1.75,2.03-0.13,1.87,1.25,2.79,1.5,1.28,2.04,3.53,3.78,4.15,1.28,0.75,3.15,0.38,0.38,0.65,1.37,1.38,1.66,2.53,1.38,0.5,0.5,1.66,0.9,1.5,3.28,0.5,1.63,0.25,0.78,1.4,0.37,2.13,0.75,1.15,2.41,0.88,1.5,0.75,1.28-0.5,1.13-0.25,1.37,0.75,0.91,1.66-1.03,1.25-0.13,1.53,0.66,1,1.25,0.75,1,1.03,1.03,0.62,0.75-0.37,1.25-0.25,1.41,0.5,1,1.37,0.5,0.91,0.24,2,0.26,1.03h0.65l0.88-0.16,0.87-0.5,0.63-0.37h1.03l0.75,0.75,0.62,0.91,0.88,0.25,1.4,0.25,1.88-0.5,1.41-0.5,1.37-1.79v-0.87l-0.37-0.66-0.26-0.5,0.26-1,0.5-0.5,2.78-1.28,2.4-1,1.66-1.12,1.87-0.78,0.5-0.75,0.13-1.38-0.75-1.53-1.13-0.87-2.15-0.13h-1.5l-1.53,0.5-1,0.75h-1.28l-0.63-0.12-1-1.13-1.53-0.37-0.75-0.38,0.25-1.53v-1.13l1.66-0.5,0.74-0.78,0.76-0.87,0.62-1.63,0.53-0.37,1.5-0.53,1.78,0.25,1-0.5-0.12-1.38-0.5-0.87-0.5-1.66,0.25-0.88,0.87-0.62,1-0.53,1.41-0.63,1.37-0.75,0.38-0.75v-0.5l-0.88-1.9-0.75-1.41-0.9-1.62-1-0.75-0.63-1.28,0.38-1.88,0.62-0.5h1.28l0.88,0.38,1,0.87,1.41,2.16,2.65,2.37,1,0.91s1.65,0.49,2.28,0.75c0.63,0.25,1.38,1,1.38,1l0.5,0.62,0.37,1.03,0.53,1,1,0.63,1.38,0.37h1.41l1.12,0.53,0.88,0.88,2.03,0.5h1.37l0.28,0.88,1,0.53,1,0.25,0.88-0.54,0.78-0.74-0.13-1.26-1.03-1.03,0.38-0.87,0.78-1,0.37-1.53-0.25-1-1.15-0.75-0.13-1.28,0.91-0.88,3.15-3.28,1.88-1.12,1.91-1.79,0.25-1.25-0.63-0.5-1.65-0.9-1.63-1-2.16-0.25-1.25,0.62h-1.4l-1.5-1.12-1.03-1.78-0.75-1.75-1.5-3.16-1.41-2.28-0.75-1.41-0.88-2.25-0.12-1.15-2.41,0.25-0.75-0.63-1.53-1.12s0.25-0.5,0.88-0.5,1.02-0.41,1.53-0.66c0.5-0.25,0.25-0.87,0.25-0.87s-0.37-1-0.88-1.76c-0.5-0.75-0.77-0.77-1.28-1.15-0.5-0.38-0.75-1.75-0.75-1.75l-1.25-0.41-2.03-0.5-1.66,0.13-1.5,0.53-1.9,0.12-0.88-0.65-1.62-1-2.03-0.13h-2.78-2.53l-1.63,0.75-0.91,0.75-0.37,1.66-1.13,1.37-1.12,2.04-1.28,0.87h-2.41c-0.63,0-1.75-1-1.75-1l-1.03-1c-0.51-0.51,0-2.03,0-2.03s0.13-1.53,0-2.16-1.5-1-1.5-1l-2.03-0.87s1.65-0.78,2.16-1.16c0.5-0.38,0.37-1,0.37-1v-2.28c0-0.63-0.25-2-0.25-2l-0.75-1.91zm110.16,1l-0.19,1.1,0.53,1.78,1.44,0.72,0.53-0.72v-1.63l-0.38-1.25h-1.93zm-28.22,6.19l-2.35,0.78-1.4,2.07-2.88,1.43-0.25,1.07,1.78,1.43,2.13,0.97,3.22-0.44,3.5-0.9,0.25-1.6-0.78-1.96-1.1-1.88-2.12-0.97z","name":"Arkhangelsk Oblast"},"tu":{"path":"m299.02,389.7,2.0536,0.80357,2.1428,1.1607,1.6072,1.3393,1.6071,1.5179,1.7857,0.71428,2.3214,0.17858,0.89286-1.0714,1.6071-1.875,0.53572-2.3214,0.625-2.1429,2.2321-1.7857,1.875-0.44643,1.25-2.5,1.6964-1.0714,2.9464,0.26786,1.6071-1.6072s0.625-2.3214,0.53571-2.6786c-0.0893-0.35714-0.80357-2.5893-0.80357-2.5893l-0.89285-1.875-0.625-3.3036-0.71429-2.2322v-1.7857l1.5179-1.9643,2.2321-2.5,1.4286-1.4286,3.125-0.26786,0.35714,1.4286-0.89285,1.6071-1.6964,1.6964-0.17857,1.25,2.5,0.35714,4.0178,0.35714,1.9643,1.6072,3.0357,1.7857,1.5179-1.25,2.9464-0.17857,2.1429,1.4286,3.3928,1.0714s2.5-0.98214,2.9464-1.1607c0.44643-0.17857,3.5714-0.44642,3.5714-0.44642l0.89286-0.98215-0.53572-1.0714-1.6964-1.25-2.9464-2.2321-1.0714-1.4286s-1.6964-0.44643-2.3214-0.44643-2.6786-0.80357-2.6786-0.80357l-0.17857-2.6786-0.26786-2.4107-1.3393-1.3393-0.44642-2.2321-0.53572-3.5714-0.35714-0.89286-2.4107-2.7679-1.1607-0.71428s-2.6786-0.26786-2.9464-0.26786h-5.0893l-0.98215-0.26786s-0.625-1.5178-0.625-1.875c0-0.35714-0.98214-1.5178-0.98214-1.5178l-1.875-0.35715-1.25,1.25-2.4107,1.875-2.1429,0.89286h-3.0357l-4.6428,0.0893-2.9464,0.26785s-1.4286,0.53572-1.7857,0.625c-0.35714,0.0893-4.375,0.0893-4.375,0.0893l-3.0357-0.0893-1.4286,0.35715-0.89286,1.5178-0.53571,2.3214-0.89286,1.3393-2.3214,0.71428-1.6071,0.53572-1.5179,0.35714-1.7857-0.17857-1.3393-0.625-1.4286,0.17857c-0.35714,0.17857-1.6964,1.0714-1.6964,1.0714l-1.1607,2.1429-0.35715,2.4107-1.6071,2.3214-2.1429,2.5893-0.98214,1.5179,0.26786,1.25,0.71428,1.3393,1.5179,1.25,1.25,1.6071,1.6964,1.875,1.0714,1.6964s3.0357,0.98214,3.0357,1.5179c0,0.53571,1.6964,2.9464,1.6964,2.9464l0.625,1.875,1.6071,1.4286,1.875,0.71428,1.0714,0.80357,1.4286,2.3214,1.0714,1.4286v1.6072z","name":"Tyumen Oblast"},"ne":{"path":"m260.27,198.54,1.6071-0.89286,1.4286-1.1607,2.0536-1.0714,1.1607-1.25,0.625-3.3929,1.1607-1.6071s1.4286-0.80358,2.4107-1.0714c0.98215-0.26786,2.3214-0.26786,2.6786-0.26786,0.35714,0,1.5178-0.98214,2.0536-1.5179,0.53571-0.53571,3.0357-2.5,3.0357-2.5l0.71429-1.0714v-2.2321l1.25-1.9643s0.89285,0.17857,0.98214,0.625c0.0893,0.44642,0.26786,1.5178,0.625,1.6964,0.35714,0.17858,1.875,1.4286,1.875,1.4286l1.6964,1.1607,0.98214,0.89286-0.0893,1.3393-0.625,1.4286-0.44643,1.7857v1.6964l-0.26786,1.0714-0.44643,0.80357-0.26786,1.25-1.25,0.71428-1.3393-0.625-1.25-0.98214-0.625-0.80357-2.3214-0.53572h-3.0357c-0.44643,0-2.1429,1.1607-2.1429,1.1607l-0.80357,1.4286,0.17857,1.0714s0.53571,0.89286,0.625,1.25c0.0893,0.35714-0.71429,1.1607-0.71429,1.1607l-0.89285,1.6072s-0.26786,1.1607-0.0893,1.4286c0.17857,0.26785,0.625,0.80357,1.1607,1.25,0.53572,0.44643,1.875,1.5178,2.1429,1.6964,0.26786,0.17857,1.875,0.89285,1.875,0.89285s2.3214,0.17857,2.8571,0.17857c0.53572,0,1.9643-0.26785,1.9643-0.26785s1.5179-0.98215,1.875-1.1607c0.35714-0.17857,1.9643-1.1607,1.9643-1.1607s1.0714-0.44643,1.4286-0.35714c0.35714,0.0893,1.3393,0.98214,1.3393,0.98214l2.3214,0.17857s0.35714-0.44643,0.71429-0.80357c0.35714-0.35714,0.53571-0.71429,0.98214-0.35714,0.44643,0.35714,1.875,1.3393,1.875,1.3393l1.7857,0.44643h5.0893l2.5893,0.0893s0.80357,0.80357,1.25,0.89285c0.44642,0.0893,3.3928,0.53572,3.3928,0.53572l1.5179,1.4286,0.71429,1.9643,1.1607,0.17858,0.71429-1.5179,0.89285-1.0714,1.875-0.17857,0.89286,0.53571,2.1429,0.17857,2.5893,0.44643-0.44643,0.80357-0.98214,0.80358-1.6964,0.625-0.80357,0.98214-0.71428,0.98214-1.6964,0.71429-0.26786,1.0714,1.3393,0.98214,1.25,0.53571,0.625,2.0536,0.71428,0.35715,1.6964-0.80357s1.3393-0.89286,1.6071-0.89286c0.26786,0,3.3036,0.53571,3.3036,0.53571l2.6786,1.3393,1.5178,1.3393,1.4286,0.89286,4.4643,0.17857,0.71429,0.71429,1.5178-0.26786,2.5893-0.35714,1.7857-1.3393,0.625-1.7857s0.53572,0.625,0.53572,1.1607c0,0.53572-1.6964,2.7679-1.6964,2.7679l-0.71429,1.7857v1.0714l-1.1607,1.1607-0.89286,0.625-0.44643,0.98214,0.44643,0.80357h1.4286l0.80357-1.6071,0.17858-0.53572,1.5178-0.0893,1.5179,1.25,2.3214,0.35714,1.1607-0.89286,1.3393-1.1607,0.53571-0.89286-0.71428-1.0714-0.35715-1.4286,1.5179-1.1607,0.71429-1.875-0.53572-1.6964-1.25-0.80357-0.71428-3.3929-0.26786-3.125s-0.26786-0.89286,0.0893-1.25c0.35714-0.35714,2.2321-1.6964,2.2321-1.6964l1.3393,0.17857,1.1607,1.4286,1.0714,1.9643,0.35714,2.1429-0.89286,3.3036,0.89286,1.0714,2.8571,2.4107,2.7679,2.8572,3.3929,2.5893,2.1428,3.3036,1.6964,3.3929,0.80357,1.875,0.17858,1.6071-1.0714,1.1607-0.98215,2.0536-0.98214,1.5179h-2.5c-0.44643,0-3.6607-0.17858-3.6607-0.17858l-2.1429,0.98215-2.7679,0.71428h-3.0357l-1.7857-0.17857-2.4107,1.875-3.0357,2.4107-1.6072,0.53571-2.7678-0.0893-2.0536-0.53571-4.2857-2.4107-23.036-13.929-7.6786-6.875-1.25-1.1607v-1.3393l-0.98214-0.625-2.4107,0.625-5.0893-0.44642-5.625-0.98215-5.1786-0.80357-3.125-0.26786-4.1071-2.3214-2.0536-0.44643-1.7857,0.625-1.7857-0.26786-1.5179-1.7857-4.2857-8.4822-0.98215-2.4107z","name":"Nenets Autonomous Okrug"},"om":{"path":"m358.39,368.89,0.71428,2.5-1.25,1.6071-1.25,1.9643,0.53572,1.6071,0.71428,1.9643-1.25,1.9643s-1.0714,1.25-1.0714,2.1429c0,0.89286,0.17857,3.0357,0.17857,3.0357l1.7857,1.6072,0.35714,2.3214-0.53571,3.3929-1.9643,0.89286-1.25,1.6071,0.71429,2.3214-0.35715,1.9643-3.9286,0.17857s-1.4286-0.89286-2.3214-1.0714c-0.89285-0.17857-3.3928,2.8571-3.3928,2.8571l-2.5,2.1429-0.89286,4.2857,0.53571,0.89286,1.9643,2.1429,0.35714,2.6786-1.6071,2.6786-1.0714,1.7857-0.17857,3.0357-2.5,2.1429s-2.3214,1.0714-3.0357,1.0714h-4.8214l-1.6072-0.71428c-2.1428,1.4286-3.75,0-3.75,0l-1.6071-0.71429-1.9643-0.35714h-1.0714l0.35714-1.7857,1.7857-1.0714,0.71429-1.4286-2.3214-1.25-2.1429-2.3214-1.9643,0.89285-0.89286-0.71428v-3.75l-1.4286-0.89286-2.8571,0.35714-2.8572-0.89285-0.89285-0.53572-0.17857-2.1428,2.1428-2.6786,0.71429-2.3214,0.35714-2.6786v-4.1071l0.71429-2.1429,1.4286-3.9286,1.6071-2.5,2.3214-0.53571,1.0714-1.25,1.0714-1.7857,1.6071-0.89285h2.6786l1.6071-1.4286,0.89286-3.9286-1.4286-3.2143-0.71429-3.0357-1.25-3.3928,0.35715-1.6072,4.4643-4.6428,1.0714-0.89286h2.6786l0.17857,1.6071-1.25,1.6072-1.7857,1.25-0.17857,1.4286,1.4286,0.35714,3.2143,0.35714,2.3214,0.17857,2.1429,1.4286,1.9643,1.4286,1.0714,0.35714,1.0714-0.71429,1.9643-0.35714,2.3214,0.35714,3.5714,1.6072h2.5l2.1428-1.0714h2.1429z","name":"Omsk Oblast"},"ht":{"path":"m329.64,260.32,0,3.75-0.53572,3.2143-1.6071,2.3214-2.3214,2.3214-0.89286,1.25,1.9643,1.9643,1.7857,2.3214,5,1.9643,4.8214,0.17857,3.5714,1.4286,2.3214,2.6786,0,1.4286-2.1429,1.7857,1.4286,1.4286,2.3214,2.8572,1.9643,1.0714,2.1428-1.0714,1.7857-0.89286s1.6071,0.71429,1.9643,0c0.35715-0.71429,0.89286-2.1429,0.89286-2.1429l1.6071,2.1429,1.4286,2.8571,1.9643,1.6072s0.35714,2.1428,0.35714,2.8571v4.6429l1.9643,3.3928s0.35714,0.17857,0.71429,0.89286c0.35714,0.71429,0,2.1429,0,2.1429l1.0714,1.25,2.5,0.53571,3.75,0.71429,1.4286,0.89285s2.8571,2.1429,3.5714,2.6786c0.71429,0.53571,1.25,1.6071,2.1429,1.9643,0.89286,0.35714,3.5714,0.53572,3.5714,0.53572l2.8571,0.35714,0.89286,1.0714s0.35714,1.6071,0.71428,2.6786c0.35715,1.0714,1.4286,1.7857,1.4286,1.7857l3.0357,0.17857,1.7857,0.53572,0.35715,1.9643,0.35714,1.4286,1.0714,2.5c1.9643,0.17857,2.5,0.17857,3.5714,0.17857s3.3928,1.0714,3.3928,1.0714l1.9643,0.71428,2.8571,0.35714,2.8572-1.0714,3.2143-1.9643,3.0357,0.53571,1.9643,2.6786s0.35714,1.7857,1.0714,2.1428c0.71429,0.35715,2.8571,0.53572,2.8571,0.53572l2.3214,1.6071,0.71429,2.3214,1.9643,0.71428,2.6786-0.89285,1.9643,1.6071,1.0714,3.0357v2.3214l-0.35714,1.6072-0.53572,1.9643,3.0357,1.9643,2.5,1.7857,0.35714,2.3214v1.0714l-3.75,1.7857-2.6786,0.53572-3.2143,0.17857-3,0.15-1.61-1.07-1.7857-0.71428-2.3214,0.35714-2.3214,1.6071-2.6786,1.0714-2.1429-1.9643s-2.8571-0.35714-3.5714-0.35714c-0.71429,0-2.3214-1.7857-2.3214-1.7857l-0.89286-1.25-3.9286,0.17857h-3.5714l-1.6071-2.5s-1.25-0.89286-2.1429-0.89286c-0.89286,0-4.4643-1.25-4.4643-1.25l-2.5-2.3214h-1.25c-0.71428,0-2.3214,1.25-2.3214,1.25l-2.5,2.1429-1.7857,2.6786-2.8571,2.5-1.6071,3.3929-4.4643,1.6071-3.5714,0.89286-0.35714,2.1429-0.71429,2.1428-2.6786,1.25h-2.8571l-5.8929-5.5357-3.9286-0.89286-1.0714-1.4286-0.53571-4.1071-1.0714-1.25-1.0714-5.3572-0.53571-1.7857-3.5714-3.2143h-5.5357l-3.0357-0.35714-1.9643-2.8571-1.6071-0.53572-4.4643,3.0357-3.3929,0.71428h-5.1786l-5,0.71429-4.2857,0.53571h-3.5714l-1.4286-0.17857-0.53571-2.8571-0.35714-3.2143,0.89285-3.2143-0.89285-3.2143-2.3214-2.1428-1.0714-0.89286-1.0714-1.0714,1.25-2.6786,1.4286-2.3214-0.17857-2.1429-0.71429-3.2143,0.71429-5.5357,1.4286-1.7857,1.4286-2.1429-0.71428-2.3214-1.0714-3.5714-1.9643-2.6786-2.3214-3.3928-3.3928-2.1429-1.7857-1.9643-1.0714-2.6786,3.3929-2.1429,1.6071-2.6786,2.3214-4.8214,2.1429-2.6786,2.5-1.9643,3.5714-3.3929,1.6071-1.7857,1.7857-3.3929-0.17858-1.7857,0.89286-1.0714,2.1429-1.0714,1.4286-1.9643,1.6071-1.0714,1.25,0.17857,0.89286,2.3214,0.35714,1.0714,1.4286,0.35714,2.5-0.71428,3.0357-1.6071,1.4286-1.25,1.25-1.0714,2.5-0.53572z","name":"Khanty–Mansi Autonomous Okrug"},"ya":{"path":"m366.25,234.25,1.4286,2.6786,1.6071,1.7857,1.6072,2.6786,1.0714,3.0357,0.89286,2.8572,3.0357,0.17857,1.7857-1.6072,1.4286-1.25-0.53571-3.2143s-0.89286-1.4286-0.53572-2.3214c0.35715-0.89286,1.7857-2.5,1.7857-2.5v-2.3214l-2.1429-1.6071-1.25-2.5s0.71429-1.6071,1.4286-1.9643c0.71429-0.35714,3.75-2.3214,3.75-2.3214s1.6071-3.75,1.9643-4.4643c0.35714-0.71429,0.35714-4.8214,0.35714-4.8214l0.89286-1.4286,7.5-2.1429,4.8214-3.5714,5.7143-6.0714,3.2143-2.1429,2.1428-0.71429,1.7857,2.3214,3.3928,0.35714,1.7857,1.25,1.0714,2.6786,0.17857,1.7857-0.89286,3.75-2.1429,2.6786-2.3214,2.8571-3.0357,1.6072-1.25,1.0714-0.35714,1.9643,1.0714,2.1429,0.17857,2.8571-0.89286,2.8571-2.1429,2.6786-1.7857,3.2143-2.6786,4.4643-1.25,3.5714-0.89286,2.1429-0.17857,2.5,0.35714,2.6786,0.71429,2.3214-0.71429,1.4286-3.0357,2.1429-1.0714,3.2143-0.89286,3.2143h-3.2143l-2.3214,1.25-2.1429,3.3929-3.5714,0.53571-2.3214,1.25-1.4286,1.4286h-3.5714l-1.4286-1.0714-1.0714-2.6786-0.71429,0.53572v1.6071l-1.9643-1.4286-0.71428-1.9643-1.0714,0.71429-0.17857,1.9643,1.7857,2.1428,2.5,2.1429,2.5,1.25,3.2143,1.0714,2.1429,1.25,2.1428-0.89286,3.5714-1.7857,3.0357-0.71429,3.75-1.0714,2.3214-3.0357,3.2143-2.6786,3.3929-1.6072,2.1428-1.7857-0.17857-2.1429-0.89286-2.3214-0.17857-1.7857,2.1429-2.1429,4.2857-0.89285h3.3929l1.4286,1.4286,1.25,3.0357v2.8571,3.0357l-1.6071,1.4286-1.25,2.5,0.17857,3.5714,1.7857,1.25,3.2143,0.71428,2.1429,2.8572,1.9643,3.2143,0.53572-0.71428-0.53572-4.1072-2.5-3.2143-3.75-1.0714v-2.8571l2.3214-3.0357s1.7857-0.35714,1.9643-1.0714c0.17857-0.71428,0.17857-3.5714,0.17857-3.5714l-0.89286-3.9286-2.6786-2.6786-2.6786-3.2143-0.89286-1.4286h-2.1428s-0.53572,1.25-1.4286,1.25c-0.89285,0-2.6786-1.25-2.6786-1.25l-1.6071-1.0714-0.53571-2.5,1.4286-3.75,2.3214-3.2143,2.1428-2.6786,3.0357-1.25,0.17857-4.4643-0.17857-3.0357v-3.0357l0.17857-2.3214,1.7857-2.3214,1.4286-1.4286,2.1429-0.35715,3.2143-0.53571,2.3214-2.5,1.7857-1.0714,1.25,2.1429-1.9643,2.3214-0.89285,1.4286-1.0714,4.4643-1.25,2.5,1.25,1.7857,2.6786,2.1429h2.8571l1.4286,2.1428,2.3214,2.5,1.7857,0.35715-1.4286-2.1429v-2.5s-1.25-1.25-1.9643-1.6071c-0.71429-0.35715-3.5714-2.8572-3.5714-2.8572l-1.25-3.5714-0.17857-1.4286s1.9643-0.71428,2.6786-0.71428c0.71429,0,3.2143,0.89285,3.2143,0.89285l0.89285,1.7857,1.6072,0.17857,1.25-0.71429-0.35715-1.9643,0.17858-1.9643,1.4286-0.35714,1.6071,0.71429,1.7857,1.4286,1.25,1.0714,0.89286,1.7857-0.35714,1.7857-2.3214,2.5-3.0357,1.25,1.0714,1.4286,2.6786,2.1428,0.35714,2.8572,0.17857,3.3928-0.71429,2.6786-2.5,1.4286-2.6786,1.4286-3.5714,1.7857-2.1428,2.1429,0.35714,2.6786,1.4286,2.5,1.25,2.5,1.6071,1.0714h3.3929,2.5l1.7857,1.6071,0.53571,3.0357,0.17857,3.3928v2.8572l-1.9643,3.2143-1.7857,2.5h-2.6786l-0.71429,0.53572,0.53572,1.9643,0.71428,1.7857-0.53571,2.5-0.89286,1.25,2.3214,3.3928,0.53572,1.7857,0.35714,1.7857-1.25,1.7857-1.0714,1.25,0.89286,2.1428-0.17857,2.5-1.6072,1.6072,1.6072,1.7857,2.1428,1.9643,1.6072,1.4286-0.17858,3.3928-1.4286,2.3214-0.17857,2.6786,2.3214,2.1429,4.6429,0.89286,0.89285,1.4286-1.4286,2.1429-0.53571,3.3928-0.89286,2.3214-2.6786,1.4286s-0.89286,0.53572-1.6071,1.0714c-0.71429,0.53572-1.7857,2.8572-1.7857,2.8572l1.9643,1.7857,0.17857,2.3214-1.4286,2.1429-1.25,2.5-2.6786,2.3214-2.8572,2.8572-0.89285-1.7857-1.6072-2.1428-1.7857-1.0714-1.9643,0.71428-1.9643-0.71428-0.71429-1.6072-1.25-1.25-2.5-0.89285-2.1428-0.89286-0.71429-1.6071-0.89286-1.7857-1.4286-1.4286-2.8571-0.17857-2.5,1.4286-2.5,1.0714-2.6786,0.17857-4.1072-1.6071-3.5714-0.35714-2.1429-0.17858-0.89286-1.9643-1.0714-2.3214v-1.4286l-3.3928-0.71429-2.3214-0.53571-0.89286-2.5-0.71429-2.3214s1.4286-0.17857-1.0714-0.35714-5.5357-1.0714-5.5357-1.0714l-1.4286-0.53572-3.2143-2.5-2.5-1.6071-2.8572-1.0714-3.2143-1.25-1.25-0.89285-0.17857-2.1429-2.8572-3.9286,0.17857-6.7857-1.25-1.7857-2.3214-2.8571-1.0714-2.1429-0.53572-0.53572-1.0714,1.25-0.53571,0.71429h-1.4286l-2.6786,0.89286-1.25,0.35714-1.6072-0.35714-2.1428-2.3214-1.7857-1.6071,0.53572-0.89286,1.4286-1.6071-0.35714-1.7857-2.5-2.3214-3.0357-1.4286-4.2857,0.35714-3.0357-1.25-2.6786-0.89285-3.3929-4.2857,2.3214-2.5,2.5-3.75,0.17857-5.3571,0.35715-1.4286,3.75-1.0714,2.6786-2.5,1.4286-1.4286h3.75,3.3929l3.9286,0.53571,1.7857-1.25,3.5714-1.6071,3.3929-0.53571,2.5-1.25,2.3214-1.25,0.35714-2.8572-2.1429-2.3214-0.71428-1.25,0.53571-1.6071,2.3214-1.4286,0.35714-1.25,1.92-2.87z","name":"Yamalo-Nenets Autonomous Okrug"},"kr":{"path":"M501.66,122.41c-0.45,0.04-1,0.37-1,0.37-0.9,0.72-1.25,0.77-0.94,1.13,0.31,0.35,0.19,0.55,0.9,0.78,0.72,0.22,0.91,0.49,1.44,0,0.54-0.49,0.77-1.24,0.41-1.69s-0.37-0.64-0.81-0.59zm11.56,0.65c-0.22,0.02-0.44,0.11-0.6,0.38-0.31,0.53-0.49,1.57-0.62,1.84s-0.2,0.74-0.78,0.88c-0.58,0.13-1.39,0.54-1.75,0.09s-1.03-1.51-1.25-1.69-1.04-0.74-1.13-0.03c-0.09,0.72,0.19,1.51,0.19,1.91s-0.18,0.99-0.4,1.12c-0.23,0.14-1.06,0.25-1.29,0.56-0.22,0.32-0.62,0.49-0.62,1.16s-0.27,1.67-0.31,1.94c-0.05,0.27-0.32,0.26-0.63,0.75s-1.09,1.87-1.09,1.87,0.89,0.62,1.15,0.85c0.27,0.22,0.42,0.77,0.38,1-0.05,0.22-0.13,1.05-0.53,1.19-0.4,0.13-1.43,0-1.78-0.13-0.36-0.13-1.01-0.48-1.5-0.44-0.49,0.05-1.01,0.23-1.19,0.63s-0.71,0.38-0.13,1.18c0.58,0.81,0.87,1.53,1,1.76,0.14,0.22,0.29,1.51,0.07,1.87-0.23,0.36-1,1.13-1.22,1.53-0.23,0.4-0.44,0.71-0.22,1.16,0.22,0.44,0.66,0.8,1.15,0.94,0.5,0.13,3.66,0.71,3.66,0.71s0.28-0.36,0.81-0.71c0.54-0.36,1.36-0.77,1.85-0.41s0.52,0.8,0.65,1.25c0.14,0.45,0.41,2.02,0.5,2.37,0.09,0.36,0.49,0.58,0.94,1.16s1.59,1.37,2.22,1.59c0.63,0.23,1.05,0.55,1.72,0.6,0.67,0.04,2.85,0.82,2.94,1.09s0.31,1,0.31,1,0.54,0.52,0.81,0.56c0.27,0.05,2.22,0.19,2.22,0.19,1.38-0.76,2.23-0.8,2.5-0.94,0.27-0.13,0.84-0.03,1.37-1.06,0.54-1.03,0.76-1.35,0.63-2.06-0.13-0.72-0.34-0.93-0.87-1.6-0.54-0.66-1.5-1.24-1.1-1.56,0.4-0.31,1.56-0.8,1.88-1.15,0.31-0.36,0.54-1.32,0.4-2.35-0.13-1.02-0.15-2.5-0.47-2.9-0.31-0.41-0.73-0.92-1.4-1.19s-1.23-0.67-1.81-0.53c-0.59,0.13-1.92,0.25-2.19,0.03s-0.62-0.83-0.85-1.5c-0.22-0.67-0.5-1.13-0.5-1.53s1.16-3.63,1.16-3.63,0.71-0.29,0.84-0.56c0.14-0.27,0.36-0.76,0.22-1.66-0.13-0.89-0.39-1.55-1.28-2.09s-2.09-1.72-2.09-1.72v-0.97c0-0.35-0.15-1.73-0.28-2-0.14-0.27-0.48-0.72-0.97-0.72-0.25,0-0.5-0.05-0.72-0.03zm17.72,22.91c-0.13,0.02-0.25,0.07-0.35,0.19-0.4,0.44-0.72,1.12-0.9,1.34s-0.51,0.09-0.91,0-0.89-0.43-1.16-0.03c-0.26,0.4-0.67,0.74-0.71,1.19-0.05,0.44,0.09,1.75,0.09,2.46,0,0.72,0.09,1.8,0,2.6s-0.2,1.3-0.78,1.66c-0.58,0.35-0.91,0.4-1.31,0.93-0.41,0.54-1.13,1.25-1.13,1.88,0,0.62,0.06,1.45-0.66,2.03-0.71,0.58-1.14,0.56-0.96,1.4,0.17,0.85,0.22,0.93,0.84,1.38s2.79,0.63,3.28,0.5,1.26-0.77,1.66-1.22,1.61-0.99,2.28-1.12c0.67-0.14,1.17-0.08,2.16-0.13,0.98-0.04,1.54-0.39,2.03-0.65,0.49-0.27,0.54-0.54,1.43-0.54,0.9,0,1.74,0,2.1-0.31,0.35-0.31,1.35-1.19,1.62-1.5s0.88-1.05,0.97-1.5,0.18-1.3,0-1.75,0.15-1.15-1.19-1.28-1.57,0.07-1.84-0.38c-0.27-0.44-1.03-0.88-1.03-1.37s0.08-1.02-0.19-1.37c-0.27-0.36-0.79-0.81-1.28-0.72s-1.31,0.58-1.53,0.62c-0.22,0.05-0.71-0.09-0.85-0.4-0.13-0.32-0.21-1.11-0.21-1.91s-0.25-1.63-0.25-1.63c-0.34-0.13-0.83-0.43-1.22-0.37zm5.22,20.03c-0.62,0.05-1.16,0.75-1.16,0.75s-1.62,1.95-2.16,2.84c-0.53,0.9-0.86,1.08-1.93,1.25-1.08,0.18-1.82,1.63-1.82,1.63s-0.51,1.23-0.68,2.12c-0.18,0.9-1.25,3.07-1.25,3.07v1.93l0.87,1.63s1.6,1.05,1.78,2.12c0.18,1.08-2.12-0.68-2.12-0.68s-2.14-0.73-3.03-0.91c-0.9-0.18-1.64,0.01-3.07,0.19-1.42,0.18-1.25,0.34-1.25,0.34l0.72,1.63s1.61,1.4,1.25,2.65c-0.35,1.25-1.4-0.53-1.4-0.53l-1.97-0.87s-1.98,0.16-2.88,0.87c-0.89,0.72-1.25,0.91-1.97,0.91-0.71,0-1.59-0.71-2.12-1.78-0.54-1.08-0.91-0.91-1.63-1.44-0.71-0.54-3.2,0-4.09,0s-2.32,1.79-3.75,1.97-1.78,0.53-1.78,0.53l0.34,2.12-1.97,1.1-2.12,0.53-2.16,0.53c-0.71,0.18-2.12-0.19-2.12-0.19l-1.97-0.34-1.44,0.87-0.53,0.57-2.84,0.15-2.16,0.91s-2.49,2.13-4.09,2.31c-1.61,0.18-0.19,0.53-0.19,0.53s1.06,0.91,1.06,1.63c0,0.71-0.7,0.87-0.87,1.4-0.18,0.54-1.45-0.33-2.35-0.68-0.89-0.36-1.25,0-1.25,0s0.2,1.04,0.38,1.93c0.18,0.9,1.06,1.28,1.06,2.35s-0.19,2.12-0.19,2.12,0.53,2.69,0.53,3.41v2.69c0,0.89-0.87,1.59-0.87,1.59s-1.25,0.72-3.03,0.72c-1.79,0-0.91-0.72-0.91-0.72l0.72-0.91-0.53-1.4-1.97-0.38-2.31,1.25-1.78-0.53h-3.22-3.94c-1.43,0-1.95-1.07-2.84-1.25-0.9-0.18-2.88-0.34-2.88-0.34s-2.14-0.02-3.03,0.34-1.97,1.06-1.97,1.06v3.07,3.03s-1.6,0.69-1.78,1.4c-0.18,0.72,0.01,2.68,0.19,3.75,0.18,1.08,1.05,0.72,2.12,1.25,1.07,0.54,2.16,1.25,2.16,1.25l0.53,0.57,0.34,1.78s0.57,1.94,0.57,2.65c0,0.72,1.25,1.97,1.25,1.97s0.68,1.63,0.68,2.35c0,0.71-0.51,1.22-0.87,1.93-0.36,0.72-0.73,1.61-0.91,2.5-0.18,0.9,0,2.16,0,2.16l0.38,2.84s-0.2,2.88-0.38,3.6c-0.18,0.71-0.89,1.42-1.78,1.78s-1.25,2.12-1.25,2.12,0.01,2.7,0.19,3.6c0.18,0.89,0.88,1.42,1.59,1.78,0.72,0.36,1.25,1.78,1.25,1.78l-0.87,1.78-1.78-0.34-1.44-1.78-0.91-1.82v-2.5s-0.54-1.76-1.97-2.65c-1.42-0.9,0.19-1.63,0.19-1.63s1.08-1.25,1.44-1.97c0.36-0.71,1.06-1.78,1.06-1.78s1.8-1.6,2.16-2.5c0.35-0.89-0.38-1.4-0.38-1.4l-1.06,0.68-1.78,1.82-1.78-0.91s0.69-1.25,0.87-1.78c0.18-0.54,0.54-1.79,0.72-2.5,0.18-0.72,0.35-1.6,1.06-2.31,0.72-0.72,2.35-0.19,2.35-0.19l1.25-1.25v-1.63l-1.1-1.59s-1.4-0.17-3.9-0.34c-2.5-0.18-0.72-1.25-0.72-1.25l-0.72-1.82s-0.72-1.76-1.44-2.12c-0.71-0.36-1.94-3.04-2.65-3.75-0.72-0.72-1.1-1.44-1.82-2.16-0.71-0.71-2.11-1.78-3.18-2.5-1.08-0.71-1.97-1.4-1.97-1.4l-1.63,0.34s-1.05,1.07-0.15,2.5c0.89,1.43,1.06,1.44,1.06,1.44l1.25-0.28,0.97,0.18,1.22,0.5,1.15,1.07,1.06,0.71,0.91,1.07,0.53,0.9,0.1,0.94-0.6,1.63-1.68,1.84-1.29,0.81-1.93,0.88,0.81,1.15s2.04,1.71,2.22,1.85c0.18,0.13,0.69,0.9,0.69,0.9l0.31,2.85,0.09,2.59s-0.33,2.1-0.37,2.28c-0.05,0.18-0.63,0.88-0.63,0.88l-7.09,3.97-1.44,0.9-1.25,0.94-0.66,0.81s0.3,2.37,0.35,2.6c0.04,0.22,0.64,1.18,0.69,1.4,0.04,0.23,1.28,2.69,1.28,2.69s1.15,1.2,1.46,1.69c0.32,0.49,2.16,0.31,2.16,0.31h3.44c0.4,0,1.34,0.5,1.34,0.5s1.3,0.98,1.35,1.16c0.04,0.17,0.37,1.31,0.37,1.31l0.38,3.34s0.09,3.42,0.09,3.69-0.5,1.56-0.5,1.56l-0.34,1.22c-0.04-0.01-0.07-0.03-0.1-0.06l-1.15,2.06-1.82,1.69-1.68,0.28-1.6,0.28,0.16,1.41s1,1.98,1,2.34-0.01,1.68-0.19,2.13c-0.18,0.44-0.81,1.68-0.81,1.68l0.47,1.19,1.15,1.69,0.88,2.41,0.47,1.68-1.16,1.97-1,1.63,0.72,1.93s0.08,1.53-0.09,1.97c-0.18,0.45-1.07,1.16-1.07,1.16l-0.43,1.19s4.1,3.63,5,4.53c0.89,0.89,0.15,1.52,0.15,2.06s-0.72,2.5-0.72,2.5l-1.25,2.22,0.1,1.87s1.54,1.46,1.72,1.82c0.17,0.35,1.68,0.78,2.22,0.87,0.53,0.09,2.78,0.38,2.78,0.38l1.25,1.31-0.19,0.81-1.16,1.63-0.72,3.28s-0.8,2.07-1.15,2.34c-0.36,0.27-1.44,1.16-1.44,1.16l-2.22,1.15-1.72,2.41,0.38,0.97,1.34,1,0.25,1.78-0.81,1.78-1.25,2.78-1.5,1.41-2.31,2.34-1.72,1.6-1.5,2.25s-0.9,2.92-0.81,4c0.08,1.07,0.96,0.72,0.96,0.72s1.62,1.07,2.16,1.34,1.51,0.99,1.78,1.34c0.27,0.36,1,1.24,1,1.69v1.53l-0.81,0.88-1.25,0.81-3.41,1.25-1.69,0.34-2.4-0.25s-1,0.43-0.91,0.78c0.09,0.36,0.72,1.63,0.72,1.63s0.45,1.24,0.63,1.69c0.17,0.44,0.27,0.88,0.72,1.06,0.44,0.18,0.09,2.97,0.09,2.97s-0.89,2.3-1.16,2.75c-0.27,0.44-0.46,1.25-0.37,1.87,0.09,0.63,0.72,1,0.72,1s1.7,0.69,2.06,0.78,2.94,1.1,2.94,1.1,3.13,0.72,3.84,0.72,2.58,0.06,3.56,0.15,2.5,1,2.5,1,1,0.87,1.53,1.41c0.54,0.53,0.25,4.64,0.25,5s2.88,0.19,3.5,0.28c0.63,0.09,2.32,0.81,2.32,0.81s0.43,1.33,0.43,1.69-0.43,1.88-0.43,1.88l-1.78,0.9-3.47,1.5-0.57,1.06s-1.13,4.74-1.4,5.19,0.53,1.88,0.53,1.88l1.5,0.62,2.25,1.06s3.47,2.25,4.09,2.79c0.63,0.53-0.09,0.96-0.09,0.96l-0.97,1.82-5.44,4.72-0.72,1.96-0.18,1.5s-0.44,3.58-0.44,3.94,0.34,1.53,0.34,1.53,1.81,1.15,2.25,1.5c0.45,0.36,1.88,1,1.88,1l0.72,1.41s0.79,1.54,1.06,2.34c0.27,0.81-0.72,0.97-0.72,0.97l-3.56,2.94-1.97,0.91s-1.35,1.33-1.44,1.87,0.81,0.97,0.81,0.97l0.97,1.44,1,1.34s1.95,0.73,2.75,0.91c0.81,0.17,1.63-0.57,1.63-0.57s1.42-1.95,2.4-2.22c0.99-0.26,0.53,0.46,1.07,0.72,0.53,0.27,1.96,0.61,2.59,0.88s2.22,1.34,2.22,1.34l0.81,2.06,1.78,7.41,0.82,2.5-1.26,4.13s0.1,2.05,0.19,2.4c0.09,0.36,0.8,1.24,1.07,1.6,0.26,0.35,0.43,2.15,0.43,2.15l-0.97,1.35-2.4,1.5-1.1,1.78s-2.3,3.32-2.65,3.59c-0.36,0.27-2.06,1.14-2.6,1.41-0.53,0.27-2.06,1.44-2.06,1.44s0.27,1.06,0.63,1.15c0.35,0.09,0.53,2.16,0.53,2.16l0.81,1.06,1.88-0.44,3.21,0.78,2.5,0.91s1.25,0.88,1.79,1.06c0.53,0.18,3.4-0.44,3.4-0.44s5.87-2.32,6.31-2.59c0.45-0.27,1.72-1.06,1.72-1.06s2.5-1.89,3.03-2.25c0.54-0.36,3.74-2.14,4.1-2.41,0.35-0.27,1.44-1.78,1.44-1.78l0.9-2.12s0.16-1.99,0.25-2.44,0.53-1.5,0.53-1.5l0.72-1.25,2.16-0.19,3.12,0.44,2.32,0.19s3.57,0.1,4.37-0.35c0.8-0.44,0.45-0.72,0.63-1.34,0.17-0.63-0.27-0.9-0.63-1.35-0.36-0.44-1-1.33-1.53-1.78-0.54-0.44-1.25-1.15-1.25-1.15s-2.31-4.22-2.31-4.75c0-0.54,0.81-1.15,2.15-1.69s3.91-0.97,3.91-0.97l2.06-1.19-0.09-2.65,0.47-1.78s1.16-2.8,1.25-3.07c0.09-0.26,1.51-2.93,1.68-3.56,0.18-0.62,0.62-1.79,1.07-2.59,0.44-0.81,1.62-1.68,2.15-2.03,0.54-0.36,1.68-1.91,2.13-2.44,0.44-0.54,1.09-2.22,1.09-2.22l-0.19-4.09s-2.13-2.42-2.4-3.22c-0.27-0.81,0.07-1.43,0.34-1.78,0.27-0.36,1.61-1.88,1.97-2.5,0.36-0.63,0.81-2.53,0.81-2.97,0-0.45,0.98-1.5,1.88-2.13,0.89-0.62,2.83-0.18,3.28,0s1.09,0.81,1.72,1.35c0.62,0.53,3.28,0.68,3.28,0.68s1.07-1.42,1.25-1.87,0.98-1.77,1.25-2.22,1.53-1.07,2.25-1.16c0.71-0.09,1.69,0.63,1.69,0.63s0.97,1.78,1.15,2.31c0.18,0.54,1.18,1.61,1.53,1.97,0.36,0.36,1.26,1.8,1.35,2.16,0.09,0.35,1.06,0.33,2.22,0.15s0.09-1.4,0.09-1.4v-2.16s-0.62-2.16-0.62-2.78c0-0.63,0.71-1.78,0.71-1.78s2.5-0.8,3.03-1.06c0.54-0.27-0.08-1.17,0.1-1.97,0.18-0.81,1.33-1.7,1.69-1.88,0.35-0.18,2.96-0.61,3.4-0.87,0.45-0.27,1.41-1.25,1.41-1.25l0.62-2.69,0.28-2.88s-0.02-0.11-0.03-0.12c0.09-0.06,0.32-0.22,0.32-0.22l1.31,0.19s0.6-0.58,1.31-0.94c0.72-0.36,0.79,0.03,0.97,0.03s0.68,1.11,0.81,1.47c0.14,0.36,0.36,1.26,0.41,1.53,0.04,0.27,1.38,0.68,1.56,0.72s1.55,0.47,1.81,0.56c0.27,0.09,1.66,1.08,1.97,1.44,0.32,0.36,1.04,0.45,2.38,0.94s1.53-0.28,1.53-0.28l0.65-0.63s0.23-1.4,0.32-1.94c0.09-0.53,0.72-0.87,0.72-0.87s1.51-1.22,1.87-1.63c0.36-0.4,0.5-0.87,0.5-0.87s0.34-2.99,0.16-3.13c-0.18-0.13-1.38-0.71-1.78-0.84-0.41-0.13-1.6-1.46-2-2.13-0.41-0.66,0.3-1.16,0.43-1.43,0.14-0.27,1.41-1.06,1.63-1.28,0.22-0.23,1.06-0.78,1.59-1,0.54-0.23,0.27-2.9,0.22-3.35-0.04-0.44-0.7-0.44-1.81-0.62-1.12-0.18-1.97-0.85-1.97-0.85s-1.52-1.52-2.19-2.28-0.22-2.76-0.22-3.03,0.17-4.1,0.13-4.9c-0.05-0.81,0.54-1.63,0.72-1.85s2.37-0.49,2.59-0.53,1.9-0.99,2.35-1.34c0.44-0.36,0.59-1.19,0.59-1.19s-0.37-1.3-0.5-1.75c-0.14-0.45,0.72-1.65,1.03-1.88,0.31-0.22,1.91-1.37,1.91-1.37s1.07-6.86,1.25-7.13c0.17-0.26-0.32-1.59-0.32-1.59s-1.19-3.62-1.28-3.84c-0.09-0.23-0.68-1.65-0.5-2.32s1.27-1.02,1.41-1.25c0.13-0.22,0.07-0.97-0.16-1.15-0.22-0.18-1.03-1.16-1.03-1.16s0.58-3.41,0.63-3.81c0.04-0.4,0.28-1.69,0.28-1.69l1.22-0.84s3.79-0.07,4.06-0.07,2.03-0.79,2.44-1.06c0.4-0.27,0.13-1.66,0-1.84-0.14-0.18-1.19-1.94-1.19-1.94h-2.28l-2.5,0.06-2.1-0.43-1.03-0.41s-2.49-0.25-2.72-0.25c-0.22,0-1.5-0.16-1.5-0.16l-0.65-0.25s-0.13-1.6-0.13-1.87,0.48-0.55,1.07-0.91c0.58-0.35,0.93-0.94,0.93-0.94s-0.17-0.98-0.43-1.34c-0.27-0.36-0.1-0.97-0.1-0.97s2.29-2.76,2.38-2.93c0.09-0.18,0.62-1.04,0.62-1.04s0.89-1.56,1.06-2.18c0.18-0.63-0.59-1.16-0.59-1.16s-3.42-4.04-3.78-4.44-1.14-1.64-1.31-1.9c-0.18-0.27-0.91-1.24-1-1.69s0.31-1.41,0.31-1.41l1.09-3.47-0.56-1.06s-1.07-0.96-1.16-1.09c-0.09-0.14-1-0.75-1-0.75s-0.63-0.55-0.5-0.91c0.14-0.36,1.36-0.56,1.63-0.56s2.31-0.69,2.31-0.69,1.39-0.56,1.56-0.78c0.18-0.22-0.03-1.16-0.03-1.16s-1.56-17.7-1.56-18.06-0.65-1.56-0.78-1.78c-0.14-0.22-2.19-2.34-2.19-2.34l-0.72-5.16h0.06s1.85,0.06,2.47,0.06c0.63,0,0.97-0.84,0.97-0.84l2.5-2.06,1.53-1.38s0.57-0.52,0.88-0.56c0.31-0.05,1.26,0.58,1.44,0.62,0.17,0.05,1.47,0.6,1.47,0.6s0.99-0.52,1.43-0.66c0.45-0.13,0.75-0.62,0.75-0.62l-0.31-5.94,4.16-2.16s0.93-1.1,0.93-1.28,0.57-1.87,0.57-1.87l4.47-3.1s1.78-2.23,2.18-2.5-0.03-0.62-0.03-0.62l-1.25-1.85s-1.07-1.29-1.78-1.47c-0.71-0.17-0.91-1.09-0.91-1.09l0.29-5-0.6-0.47-2.84-2.31-3.41-2.69-0.72-1.97-0.34-1.4-1.06-1.78,0.15-0.91,1.25-2.69-1.4-1.4-1.63-1.97-0.72,1.59s-1.43-0.53-2.5-0.53-1.06,1.44-1.06,1.44-1.95,0.71-2.84,1.25c-0.9,0.53-1.25,1.78-1.25,1.78s-1.45,1.25-2.16,1.25-2.14,0.01-3.03,0.19c-0.89,0.17-1.43,1.41-1.97,2.12-0.54,0.72-1.44,2.33-2.16,2.69-0.71,0.36-0.71,0.34-1.78,0.34s-0.16-0.7,0.38-2.31c0.53-1.61,1.95-1.79,2.31-2.5s0.72-1.78,0.72-1.78l2.5-0.91s0.54-3.02,1.44-3.37c0.89-0.36,3.75-0.53,3.75-0.53s1.22-1.63,1.4-2.35c0.18-0.71,1.44-1.58,1.97-2.65,0.54-1.08,0.72-1.79,0.72-2.5,0-0.72,0.91-1.82,0.91-1.82l2.5-2.12s1.58-1.6,1.93-2.31c0.36-0.72,2.16-1.97,2.16-1.97l2.16-1.97,2.31-2.5s0.19-1.44,0.19-2.16c0-0.71-0.72-1.78-0.72-1.78s-1.26-0.9-1.97-1.44c-0.72-0.53-1.78-0.7-1.78-1.59s0.16-0.72,0.34-1.44c0.18-0.71,0.72,0,0.72,0l1.44,1.1,0.15-1.25-0.15-2.35-0.53-1.97-2.69-0.68-1.78-1.1h-2.16c-0.71,0-0.52-0.69-0.87-1.4-0.36-0.72-0.37-1.62-0.91-2.69s-2.31-0.19-2.31-0.19l-1.78,0.91c-0.72,0.35-0.73,0.52-1.44,1.06-0.72,0.54-1.61-0.37-3.22-0.91-1.61-0.53-1.77,0.02-2.84,0.38-1.08,0.36,0.17,0.88,0.53,1.59,0.35,0.72,0,1.44,0,1.44l-2.35-0.19s-1.06-0.35-1.78-1.25c-0.71-0.89,0.19-1.06,0.19-1.06s1.25-1.43,1.25-2.5-0.72-1.25-0.72-1.25h-2.69c-1.25,0-1.96-0.17-3.03-0.34-1.07-0.18-1.25-0.37-1.97-1.44-0.71-1.07,0.57-0.53,0.57-0.53l1.4-1.25,1.25-0.72,2.69,0.34s0.9,0.56,1.97,0.38,0.19-0.72,0.19-0.72l-1.63-1.06s-1.77,0.34-2.84,0.34-2.16-0.72-2.16-0.72l-1.97-0.87s-1.41-1.45-2.12-1.63c-0.09-0.02-0.2-0.04-0.28-0.03zm-45.94,3.34c-0.85,0.32-1.23-0.03-1.5,0.82-0.27,0.84-0.34,0.96,0.16,1.18,0.49,0.23,0.87,0.53,1.4,0.44,0.54-0.09,1.24-0.47,1.06-1.09-0.17-0.63-1.12-1.35-1.12-1.35zm20.84,3.82c-0.33,0-0.47,0.12-0.94,0.56-0.62,0.58-1.62,1.37-1.71,1.9-0.09,0.54,0.12,0.96-0.19,1.54s-1.55,1.81-2,2.12-2.51,0.16-2.6,0.47c-0.08,0.31-0.37,0.52,0.04,0.87,0.4,0.36,2.91,0.63,3.72,0.54,0.8-0.09,3.3-0.3,3.74-0.35,0.45-0.04,0.71,0.28,0.66-0.43-0.04-0.72-0.72-1.36-0.4-1.85,0.31-0.49,0.6-0.65,0.78-0.97,0.17-0.31,0.49-1.06,0.31-1.47-0.18-0.4-0.72-0.95-0.72-1.53s-0.28-1.37-0.28-1.37c-0.18-0.01-0.3-0.04-0.41-0.03zm-45.53,6.62c-0.49,0-2.1,0.86-2.19,1.13-0.09,0.26-0.56,0.38,0.07,0.97,0.62,0.58,0.39,0.88,1.15,0.84,0.76-0.05,1.55-0.67,2.22-0.63,0.67,0.05,1,0.79,1.31,0.79,0.32,0,0.62-0.23,0.66-0.72s-0.42-0.89-0.59-1.07c-0.18-0.17-0.54-0.18-0.54-0.18-0.31-0.45-1.6-1.13-2.09-1.13zm-2.06,6.25c-0.54,0.18-1.01,0.45-1.5,0.63-0.49,0.17-0.81,0.17-1.13,0.43-0.31,0.27-0.72,0.46-0.72,0.82,0,0.35,0.15,0.5,0.6,0.81s0.52,0.62,1.19,0.62,1.89-0.5,2.03-0.81c0.13-0.31,0.48-0.94,0.53-1.25,0.04-0.31-1-1.25-1-1.25zm-51.31,9.13l-2.35,2.12-0.34,1.78,1.97,0.38,1.25,0.87h2.5l1.25-0.87v-1.78l-1.63-2.16-2.65-0.34zm59.09,4.4c-0.49,0.14-1.47,0.59-1.25,1.03,0.22,0.45,0.5,0.8,0.91,0.75,0.4-0.04,0.74-0.01,0.87-0.5,0.14-0.49-0.22-1.25-0.22-1.25l-0.31-0.03zm97.34,1.78c-0.09,0.01-0.18,0.07-0.28,0.22-0.38,0.6-0.53,1.69-0.4,2.1,0.12,0.41-0.42,0.87,0.12,1.31s0.62,1.22,1.53,1.25c0.92,0.03,1.9,0.47,2.63-0.06,0.72-0.54,1.43-1.69,1.65-2.19,0.22-0.51,0.32-1.22,0.07-1.53-0.26-0.32-0.62-0.81-1.13-0.88-0.5-0.06-1.19,0.16-1.19,0.16-1.07,0.31-0.99,0.66-1.78,0.31-0.59-0.26-0.92-0.72-1.22-0.69zm-135.37,0.22l-1.97,0.19-1.44,1.44,0.53,1.06,1.63-0.91,1.44,0.57,0.34,1.59,1.25,0.34,0.72-0.87-0.53-1.06-1.97-2.35zm27.09,1.13c-0.49,0.01-1.04,0.1-0.9,0.5,0.17,0.53,1.09,0.75,2.03,0.75s2.97,0.08,3.06,0.44c0.09,0.35,0.68,1.56,0.91,1.65,0.22,0.09,0.92,0.13,0.97-0.41,0.04-0.53-0.44-1.13-0.76-1.4-0.31-0.27-2.09-1.25-2.09-1.25-0.45-0.09-2.24-0.28-2.78-0.28-0.13,0-0.27-0.01-0.44,0zm10.31,1.12c-0.71,0.23-0.93,0.25-0.93,0.88,0,0.62-0.1,1.06,0.43,1.15,0.54,0.09,0.85,0.33,1.26,0.07,0.4-0.27,0.59-0.91,0.37-1.22s-1.13-0.88-1.13-0.88zm-44.71,1.16l-1.44,1.25,0.72,0.87,1.78-1.06-1.06-1.06zm6.4,2.31v1.78l2.35-0.53v-1.25h-2.35zm133.35,1.5c-1.05,0.29-1.25,0.28-2.07,0.6-0.82,0.31-1.49,0.24-1.87,0.74-0.38,0.51-0.44,0.28-0.66,1.29s-0.69,0.99,0.1,1.31c0.79,0.31,1.39,0.29,2.31-0.41,0.91-0.69,1.71-1.09,2.19-1.65,0.47-0.57,0.84-1.19,0.84-1.35s-0.84-0.53-0.84-0.53zm-122.41,0.5c-0.4,0.63-0.65,1.16-0.87,1.56-0.23,0.41-0.68,0.77-1.13,1.66s-0.81,1.32-0.81,2.03c0,0.72,0.24,1.18,0.68,1.41,0.45,0.22,0.34,0.5,0.57,0.5,0.22,0,0.82,0.09,1.31,0s1.03-0.19,1.03-0.5v-1.88c0-0.53-0.31-3.37-0.31-3.59s-0.47-1.19-0.47-1.19zm-16.47,0.69l-1.06,0.87v1.25l1.44,0.57,0.87-1.25-1.25-1.44z","name":"Krasnoyarsk Krai"},"tm":{"path":"m424.64,359.43,1.25,3.2143,1.25,2.3214s-0.53571,2.3214-0.71428,3.0357c-0.17857,0.71429-1.6071,3.0357-1.6071,3.0357s0.53571,1.25,1.6071,1.9643c1.0714,0.71429,5.8929,1.7857,5.8929,1.7857l5.3571,0.17857s3.75,0.89285,4.1071,1.6071c0.35714,0.71429,0.89286,1.0714,0.89286,2.1429,0,1.0714,0.35714,4.2857,0.35714,4.2857s1.25,0.35714,2.6786,0.35714,3.0357,0.35715,3.0357,0.35715,0.35714,2.1428,0.35714,2.6786c0,0.53571-0.89286,1.7857-1.9643,1.7857s-3.75,1.6072-3.75,1.6072-1.25,2.6786-1.25,3.75-0.89285,3.5714-0.53571,4.2857c0.35714,0.71429,4.4643,1.7857,5.1786,2.1429,0.71429,0.35714,3.2143,2.6786,3.2143,2.6786s-0.71429,1.6071-1.6072,2.6786c-0.89285,1.0714-4.1071,3.0357-5.3571,4.6429-1.25,1.6071-0.35714,2.8571-0.35714,2.8571l-0.71429,1.6071-3.2143,0.53572-3.2143,0.35714-1.4286-1.6071-1.9643-0.17857-4.66-0.57h-2.3214l-1.25,1.0714s-2.1429,1.0714-3.2143,1.25c-1.0714,0.17857-5.3571,1.25-6.0714,1.25-0.71428,0-6.4286,0.71429-6.4286,0.71429l-3.3928,1.4286h-2.3214l-0.35715-1.9643,0.71429-2.1429-0.35714-2.3214,1.7857-2.3214-0.53571-1.4286s-1.0714-0.17858-1.9643,0.53571c-0.89286,0.71429-4.4643,1.0714-4.4643,1.0714l-4.2857-0.17857-1.9643-2.3214-0.89286-3.0357s-1.25-1.0714-2.6786-0.71428c-1.4286,0.35714-1.6072,1.25-2.6786,1.25s-2.5,0-3.0357-0.89286c-0.53571-0.89286-0.89285-3.0357-0.89285-3.0357l-0.9-2.33s-1.6071-0.89286-2.5-1.6071c-0.89286-0.71429-3.2143-2.3214-3.2143-2.3214l-5.1786-2.3214-4.2857-1.9643-4.6429-1.7857-2.6786-1.0714-1.7857-2.5v-3.0357l1.6072-2.8572,0.35714-1.7857-0.53571-2.3214,1.25-3.0357,0.71428-3.3929,1.9643-1.0714,3.3928-2.8571s0-2.1429,0.71429-2.3214c0.71429-0.17857,5.7143-1.6071,5.7143-1.6071l1.9643-1.7857,1.25-2.6786,2.5-1.6071,1.6071-3.2143s1.0714-1.0714,1.7857-1.7857c0.71428-0.71429,2.1428-1.4286,2.1428-1.4286l1.9643-0.35715,2.1429,1.7857,2.1428,1.0714,2.5,0.35714,2.8572,1.4286,1.0714,1.6071,3.0357,0.89286h3.3929l2.1428,0.35714,1.25,1.6072,2.6786,0.71428,2.3214,0.71429,2.1429,1.7857,1.25-0.89286,1.7857-0.53571,2.1428-1.4286,2.1429-0.17857,1.6071,0.71428,1.7857,0.89286z","name":"Tomsk Oblast"},"nv":{"path":"m341.43,421.57,4.1071,0.71429l4.4643-0.17858c1.25-0.17857,2.1429-0.71428,2.1429-0.71428l-2.14,3.4h-3.0357l-0.89285,2.1428s1.0714,1.9643,1.7857,2.5c0.71429,0.53572,2.6786,3.0357,2.6786,3.0357l0.53572,2.1428,2.3214,0.35715h1.4286s2.6786,0.35714,3.3928,0.35714c0.71429,0,0.89286,0,1.9643-0.35714,1.0714-0.35715,3.2143-0.71429,4.6429-0.71429h3.5714s2.6786,0.17857,3.5714-0.35714c0.89286-0.53572,0.89286-1.0714,2.3214-1.25,1.4286-0.17857,3.0357-0.17857,3.9286-0.17857,0.89286,0,1.9643-0.17857,1.9643-0.17857s0,1.6071,0.89286,2.1428c0.89285,0.53572,4.1071,2.6786,4.1071,2.6786l0.71428,0.71429c0.17858,0.71429-0.17857,2.5-0.17857,3.2143,0,0.71428-1.0714,0.71428-0.17857,1.6071,0.89286,0.89286,1.9643,1.4286,1.9643,1.4286l2.3214-1.9643,2.3214-2.3214s2.1429-0.53572,2.8572-0.53572c0.71428,0,3.0357,0,3.75-0.17857,0.71428-0.17857,1.4286-0.71429,2.6786-0.17857,1.25,0.53571,2.3214,0.71428,3.3929,0.71428,1.0714,0,3.5714-1.25,3.5714-1.25s1.7857-2.1428,1.9643-2.8571c0.21-0.7-0.33-4.45-0.33-4.45v-3.75c0-0.71429,0.71428-2.3214,1.25-2.6786,0.53571-0.35714,1.7857-0.89285,1.7857-1.7857,0-0.89286-0.89286-1.6071-0.89286-1.6071s-0.89285-0.53572-0.89285-1.4286c0-0.89286,0.35714-3.2143-0.53572-3.0357-0.89285,0.17857-4.1071,1.7857-4.1071,1.7857s0,0.17857-1.4286,0.17857-2.5,0-2.6786-0.71429c-0.17857-0.71428,0.35714-5,0.35714-5l0.53571-2.6786,0.17858-2.1429-2.8572,1.4286s-1.6071,0.53572-2.5,0.71429c-0.9,0.18-4.47-0.71-4.47-0.71l-2.1429-0.71428-1.4286-2.1429-1.4286-2.8571s-2.5,0.53571-3.2143,0.71428c-0.71428,0.17858-1.9643,0.53572-1.9643,0.53572l-2.3214-1.25-1.0714-3.3929v-1.25l-3.0357-1.7857s-1.9643-1.6072-2.6786-2.1429c-0.71428-0.53571-3.3928-1.7857-3.3928-1.7857s-3.3929-1.25-4.1072-1.6072c-0.71428-0.35714-1.9643-1.25-2.6786-1.6071-0.71428-0.35714-3.9286-1.4286-3.9286-1.4286l-1.9643,0.17857s-0.35715,1.0714-0.53572,1.9643c-0.17857,0.89285-1.0714,2.3214-1.0714,2.3214l-1.4286,1.0714-0.89286,1.6072,0.17858,2.1428-0.71429,1.4286h-3.2143l-2.5-0.35714-2.1428,0.89286-2.1429,2.3214-1.4286,1.9643-0.71429,2.6786,0.71429,1.9643,1.7857,2.6786v1.7857l-2.1428,3.5714z","name":"Novosibirsk Oblast"},"al":{"path":"m351.25,435.14,1.7857,5,1.7857,5.1786,1.6071,6.7857,0.89286,8.5714,0.35714,8.2143,0.35714,2.8571,2.3214-0.53571,1.7857-0.53572,0.89285-0.53571,0.17857-1.9643,1.25-1.6071,1.25-0.35714,1.7857,0.53571,0.89286,1.9643,0.89285,2.8571,2.3214,2.8571,1.9643,1.6071,4.6428,0,3.3929-0.35714,2.5-0.89286,2.3214,0,3.3929,1.4286,1.0714,1.9643,2.3214,0.53572,2.3214-0.53572-0.17857-1.4286-1.6071-1.0714-1.0714-0.89286,0.35714-1.6071,0.71429-0.35714,2.5-0.35714,4.4643-0.71429,3.75-0.17857,2.6786-0.71429,2.3214-1.9643,1.0714-1.9643s0.53572-0.71428,1.25-0.71428c0.71429,0,3.3929-0.17858,3.3929-0.17858l1.9643-0.17857,1.0714-1.7857s0.53572-2.1429,1.25-2.5c0.71429-0.35714,0.89286-2.3214,0.89286-2.3214l0.71429-2.1429-0.35715-1.0714-0.71428-1.0714,0.71428-0.89286,1.25-0.53571-0.17857-1.0714-1.4286-1.6072-1.0714-1.0714c-0.17857-0.71429-0.89286-2.8572-0.89286-2.8572l-1.7857-1.7857-0.17857-0.89286-0.53572-2.1429-1.6071-1.4286-2.5-1.9643-1.74-1.79s-1.6072,1.0714-2.3214,1.4286c-0.71429,0.35715-1.7857,0.71429-1.7857,0.71429l-2.5,0.17857-2.5-0.35714-3.0357-0.17857-4.8214,0.71428-2.5,1.6072-1.6071,1.7857-1.0714,0.71429-0.89286,0.35714-1.4286-1.25-0.35714-0.89286,0.35714-0.89286,0.17857-1.7857-0.17857-1.4286-2.3214-1.6071-1.9643-1.25-1.0714-1.25-0.17857-0.89286-1.9643-0.17857-4.2857,0.17857-1.25,1.25-2.1429,0.53571-3.75-0.53571-4.2857,0.17857-2.6786,1.25h-2.5l-3.3929-0.17857z","name":"Altai Krai"},"km":{"path":"m442.14,414.79-0.71428,2.3214,0.89286,1.6072,2.5,1.4286,1.7857,1.6071,1.25,2.5,0.17857,0.89286s-0.89286,1.4286-1.6071,2.1429c-0.71429,0.71428-4.2857,2.3214-4.2857,2.3214l-1.7857,1.7857-1.7857,1.7857v1.6072l1.0714,1.7857,0.17858,1.7857-1.9643,2.5s-1.25,1.0714-1.0714,1.7857c0.17857,0.71428,1.0714,1.4286,1.7857,1.6071,0.71428,0.17857,2.8571,0.89286,2.8571,0.89286l-0.71429,1.4286-1.25,1.7857-0.53571,1.6072-1.7857,0.71428-1.4286,1.6072,0.71429,1.25,1.25,1.25-0.89286,2.5-1.25,1.6071,0.53572,1.25,1.7857,1.7857-0.35714,1.6072-1.6072,1.9643-2.5,2.1429h-1.9643l-0.71429-1.7857-1.9643-1.25-2.6786-0.35714-1.4286,1.0714-2.1428-1.4286-0.71429-2.3214-1.0714-0.71429,0.17857-2.5-0.53571-2.5,0.89286-1.9643,0.71428-1.6071-2.1428-2.6786-1.6072-2.6786-1.25-1.4286-0.71428-2.3214-0.89286-1.7857-2.3214-2.1429-1.7857-1.6071-0.71429-1.25v-1.7857l-0.35714-4.6428,0.17857-2.5,0.71429-2.3214,1.25-1.4286,0.71428-1.25-1.4286-1.9643v-0.89286l-0.35714-2.5,1.6071-0.35714,4.4643-0.53571,2.5-0.89286,3.0357-0.89286,1.0714-0.35714,0.71428-0.89286h1.6072,1.9643,2.5l1.7857,0.35715,1.4286,0.35714,0.89286,0.89286,1.9643,0.53571,1.6071-0.17857,2.5-0.71429z","name":"Kemerovo Oblast"},"lt":{"path":"m392.32,478.89-0.44643,2.1428s-0.17857,1.875,0,2.5893c0.17857,0.71429,1.1607,2.3214,1.1607,2.3214l3.3036,0.89286s0.98215,1.1607,1.0714,1.6071c0.0893,0.44643,0.0893,3.3036,0.0893,3.3036s0.17857,0.89286,0.53571,1.6071c0.35715,0.71429,1.25,1.875,1.7857,2.2322,0.53571,0.35714,1.6071,1.25,2.4107,1.3393,0.80357,0.0893,3.125,0.0893,3.5714,0.0893,0.44643,0,4.0179,0.0893,4.0179,0.0893s1.0714,0.53572,1.6071,0.89286c0.53571,0.35714,1.4286,1.25,1.7857,1.875,0.35715,0.625,1.5179,1.6964,2.0536,1.9643,0.53571,0.26785,1.1607,0.80357,1.7857,1.1607,0.625,0.35714,1.6964,0.71429,2.4107,0.80357,0.71429,0.0893,2.9464-0.44643,3.3929-0.71428,0.44643-0.26786,2.3214-0.89286,3.4821-0.89286s4.7322-0.35714,5-0.44643c0.26786-0.0893,3.5714-1.3393,4.1964-1.3393s1.4286-0.89285,1.6071-1.25c0.17858-0.35714,0.625-1.9643,0.17858-2.7678-0.44643-0.80357-0.80358-1.0714-1.4286-1.4286-0.625-0.35715-1.4286-1.25-1.25-1.7857,0.17858-0.53571,1.9643-1.1607,2.4107-1.1607,0.44643,0,2.5,1.0714,2.5,0.26785,0-0.80357-1.6964-2.2321-1.6964-2.2321s-0.98214-1.3393-1.25-1.7857c-0.26786-0.44643-1.875-1.9643-1.875-1.9643s-2.2321-2.7679-2.0536-4.1071c0.17857-1.3393-0.0893-3.3929-0.0893-3.3929s-0.625-1.3393-0.71428-1.6964c-0.0893-0.35714-1.3393-0.17857-1.3393-0.17857l-1.5179,1.5179s-1.4286-0.26786-1.5178-0.80357c-0.0893-0.53572-0.71429-2.5893-0.71429-2.5893s-0.35714-1.7857-0.44643-2.1429c-0.0893-0.35714-0.17857-1.9643-0.17857-1.9643l1.6964-1.3393,2.8571-1.3393,0.35715-1.1607-1.3393-1.6071-0.80357-0.625-2.1429-0.53571-1.9643,0.98214s-1.0714-0.625-1.4286-0.80357c-0.35714-0.17857-1.0714-0.89286-1.0714-0.89286l-0.89286-1.7857s0-1.0714-0.71429-0.89286c-0.71428,0.17857-0.89285,0.71428-0.89285,0.71428s-1.1607,1.1607-1.1607,1.5179c0,0.35714-0.625,1.4286-0.625,1.4286l-0.98214,1.0714s-1.6071,0.44643-1.9643,0.44643h-3.0357c-0.35714,0-1.1607,0.71429-1.5179,1.0714-0.35714,0.35714-1.1607,1.9643-1.1607,1.9643l-1.5179,1.0714-0.98214,0.625-2.3214,0.71429h-2.3214l-4.1071,0.71428-4.1071,0.625-1.0714,0.625-0.0893,0.98215s0.0893,0.89285,0.53572,0.98214c0.44642,0.0893,1.6071,0.80357,1.6071,0.80357l0.44643,0.89286-0.0893,0.89286-1.875,0.625z","name":"Altai Republic"},"tv":{"path":"m431.96,477.02,0.26786-1.6964s0.89286-0.625,1.6071-0.625c0.71429,0,1.6964,0.71428,2.4107,0.89286,0.71428,0.17857,2.7678,0.71428,3.0357,0.71428,0.26786,0,1.0714-0.80357,1.3393-1.25,0.26785-0.44643,1.9643-2.6786,1.9643-2.6786s0-1.25,0.625-1.6071c0.625-0.35715,1.875-0.35715,2.3214-0.35715,0.44643,0,1.6071-0.17857,2.3214,0.26786,0.71429,0.44643,1.1607,3.0357,1.1607,3.0357s0.89286,0.89285,1.1607,0.89285c0.26786,0,2.1429-0.80357,2.1429-0.80357s1.4286,0.17857,1.7857,0.44643c0.35714,0.26786,3.0357,0.89286,3.0357,0.89286s1.6964,1.6071,2.2322,1.6071c0.53571,0,1.6964,0.26786,2.6786-0.0893,0.98214-0.35714,2.8571-0.80357,3.3929-1.25,0.53571-0.44642,5.5357-1.9643,5.9821-2.5,0.44643-0.53571,7.0536-5.9821,7.0536-5.9821l2.1429-2.8571s-0.17857-1.875-0.17857-2.9464,1.0714-2.3214,1.4286-2.5893c0.35714-0.26785,2.8571,0.0893,3.3036,0.17858,0.44643,0.0893,4.375,0.89285,4.7321,0.80357,0.35714-0.0893,4.2857-0.44643,4.2857-0.44643l2.4107-2.2321s1.5179-0.35715,2.4107,0.0893c0.89286,0.44643,3.6607,2.5,4.1964,2.7679,0.53572,0.26786,3.75,2.3214,3.75,2.3214l1.6072,1.5178s1.25,0.71429,1.7857,0.44643c0.53571-0.26785,2.3214-0.89285,2.3214-0.89285l1.6071,0.53571,0.35714,1.25s0.53572,0.89286,0.53572,1.25-0.89286,1.6071-0.89286,1.6071-0.71428,0.53572-0.80357,1.1607c-0.0893,0.625-0.26786,4.1071-0.26786,4.1071s-0.0893,2.3214-0.0893,2.7679c0,0.44643-0.71429,2.1428-0.71429,2.1428l-1.4286,2.4107s-1.5179,1.3393-1.875,1.875c-0.35714,0.53571-2.2321,1.3393-2.4107,1.6964-0.17858,0.35714-0.71429,1.875-0.71429,1.875s-0.71429,1.875-0.71429,2.4107c0,0.53572-0.0893,3.3929-0.0893,3.9286,0,0.53572,0.53571,2.5,1.0714,3.2143,0.53571,0.71428,1.25,1.6071,1.25,2.0536,0,0.44643-0.80357,2.3214-1.1607,2.7679-0.35714,0.44643-4.8214,4.1964-4.8214,4.1964l-2.0536,1.25-2.1428,0.17857s-1.7857-0.98215-2.1429-0.89286c-0.35714,0.0893-2.3214,0.17857-2.6786,0.17857-0.35715,0-1.7857-0.89286-1.7857-0.89286s-1.6964-0.35714-2.1428-0.625c-0.44643-0.26785-1.7857-1.1607-1.7857-1.1607s-2.7679-0.26786-3.2143-0.26786c-0.44643,0-2.8572-0.17857-3.2143-0.53571l-2.0536-2.0536s-0.71429-1.4286-0.80357-1.9643c-0.0893-0.53571-0.17857-2.5-0.17857-2.5s-0.80358-0.80357-1.3393-1.25c-0.53571-0.44643-2.1429-0.89286-2.9464-0.89286-0.80357,0-3.9286,0.17858-3.9286,0.17858s-1.9643,0.53571-2.2321,0.625c-0.26786,0.0893-1.25,0.71428-1.875,0.80357-0.625,0.0893-2.0536,0.0893-1.9643-0.80357,0.0893-0.89286,1.25-1.6964,1.3393-2.0536,0.0893-0.35714-0.0893-1.0714-0.71429-1.3393-0.625-0.26786-2.1429-0.17857-3.0357,0.0893-0.89286,0.26786-2.3214,0.80358-2.8572,0.89286-0.53571,0.0893-3.3928,0.71429-3.3928,0.71429s-2.1429,0.89285-2.6786,1.0714c-0.53572,0.17857-3.8393,1.1607-3.8393,1.1607l-3.0357,1.5179-2.4107,1.1607-2.5893-0.26786-2.1429-0.98214-1.5179-0.71428-1.25-1.25c0-0.44643,0.35714-0.98215,0.35714-0.98215l2.4107-0.44643,1.7857,0.53572s1.25-0.35714,0.17857-1.0714c-1.0714-0.71429-4.4643-5.0893-4.4643-5.0893l-1.48-2.44s-1.0714-1.4286-1.0714-1.7857v-2.5893z","name":"Tuva Republic"},"hk":{"path":"m440.27,432.11c0.53572,0.35715,1.9643,1.875,1.9643,1.875l1.3393,1.6072s0.26785,0.625,1.1607,0.80357c0.89286,0.17857,2.0536,0.17857,2.0536,0.17857s0.35714-0.35714,0.80357-0.80357,0.625-0.98214,0.98215-1.25c0.35714-0.26786,0.89285-0.89286,1.3393-0.80357,0.44643,0.0893,0.71429,0.26785,1.3393,0.71428,0.625,0.44643,1.3393,1.25,2.2321,1.25,0.89286,0,2.5,0.80357,2.5,0.80357s0.44643,1.875,0.625,2.3214c0.17857,0.44643,0.53571,2.9464,0.53571,2.9464s0.35715,1.5179,0.71429,2.4107c0.35714,0.89285,0.98214,2.0536,1.0714,2.4107,0.0893,0.35714-0.0893,3.125-0.17857,3.3929-0.0893,0.26785-0.80357,1.875-0.89286,2.2321-0.0893,0.35714,0,2.5893,0,2.5893l1.5179,1.5179,0.625,1.875s-1.25,1.4286-1.4286,1.6964c-0.17858,0.26786-2.2322,1.3393-2.5893,1.875-0.35714,0.53571-1.4286,3.0357-1.4286,3.0357s-1.6071,1.9643-2.1429,2.2322c-0.53571,0.26785-2.8571,1.0714-3.125,1.5178-0.26786,0.44643-1.6964,1.6964-1.6964,1.6964l-2.7678,0.0893s-1.3393,0.17857-1.6072,0.625c-0.26785,0.44643-0.53571,1.4286-1.0714,1.875-0.53571,0.44643-1.0714,1.25-1.1607,1.6071-0.0893,0.35714-0.89286,1.0714-0.89286,1.0714s0.0893,0.71429-1.0714,0.625c-1.1607-0.0893-2.9464-0.35714-2.9464-0.35714l-1.7857-1.1607-1.6071,0.44643-0.625,0.80357-0.26786,0.89286-2.5,1.0714s-0.625,0.89286-1.1607,0.35714c-0.53572-0.53571-1.25-2.3214-1.25-2.3214l-0.625-2.5893v-1.5179s0.17857-1.0714,0.53571-1.25c0.35714-0.17857,2.5-1.6071,2.5-1.6071s1.3393-0.98215,1.6964-1.0714c0.35714-0.0893,2.1429-0.44643,2.1429-0.44643l1.9643-1.0714,1.5179-2.0536,1.3393-1.0714-0.44643-1.6071s-1.25-1.25-1.4286-1.6071c-0.17858-0.35715-0.44643-1.25-0.44643-1.25l1.6071-2.2322,0.0893-1.875s-1.0714-1.1607-1.1607-1.5178c-0.0893-0.35715-0.0893-1.25-0.0893-1.25l2.5893-1.5179,1.0714-1.875,1.1607-1.9643,0.53572-1.6964-3.5714-1.1607s-0.89286-1.25-0.71429-1.7857c0.17858-0.53572,1.7857-2.4107,1.7857-2.4107s0.89286-1.875,0.89286-2.3214c0-0.44642-1.0714-2.8571-1.0714-2.8571s0-0.71428,0.26785-1.1607c0.26786-0.44643,1.25-0.98215,1.25-0.98215z","name":"Republic of Khakassia"},"ir":{"path":"M569.41,325.78c-0.12,0.03-0.22,0.12-0.22,0.34,0,0.45,0.53,1.54,0.53,1.54l0.37,1.06s-0.26,0.88-0.62,1.06-1.78,0.63-1.78,0.63l-2.69,0.09s-1.61,0.26-1.88,0.44c-0.26,0.18-0.9,0.73-0.9,1.09s-0.44,1.96-0.53,2.31c-0.09,0.36-0.16,1.97-0.16,1.97s0.18,0.78,0.63,1.41c0.44,0.62,0.43,1.81,0.43,1.81l-1.25,1.16s0.26,1.67,0.35,2.03,1,3.4,1,3.4l0.43,2.5s-0.28,1.42-0.28,1.69-0.96,4.57-0.96,4.57-0.09,0.98-0.54,1.24c-0.44,0.27-2.06,1.88-2.06,1.88s-0.19,0.99-0.19,1.34c0,0.36,0.37,1.06,0.19,1.5-0.18,0.45-1.97,1.72-1.97,1.72l-2.59,0.72-1.31,0.88-0.29,3.84-0.09,2.22v1.81c0,0.36,0.27,1.34,0.72,1.78,0.45,0.45,2.16,1.97,2.16,1.97l2.21,0.53,1.16,0.78,0.1,2.25s-0.37,1.33-0.82,1.5c-0.44,0.18-2.75,1.82-2.75,1.82l-0.53,1.15,0.97,1.16,1.97,1.59s0.78,0.1,0.87,0.72c0.09,0.63-0.15,2.6-0.15,2.6l-0.47,1.43-1.25,1.07-1.41,1.43-0.19,1.6-1.24,0.81-2.79-0.28-1.59-1.35-1.78-0.68-2.25-0.63s-0.45-0.74-0.63-1.19c-0.17-0.44-0.34-1.68-0.34-1.68l-1.25-0.72-1.87,1-1.26,0.09-0.18,1.69-0.35,2.41-0.53,1.53-0.9,0.97-1.6,0.53s-1.89,0.28-2.25,0.37c-0.35,0.09-1.34,1.41-1.34,1.41s-0.53,0.8-0.44,1.15c0.09,0.36,0.19,1.25,0.19,1.25l-1.16,0.91-2.06,0.81s-0.44,0.9-0.44,1.25c0,0.36,0.16,1.97,0.16,1.97l0.37,1.5,0.1,1.63s0.7,0.7,0.43,1.06c-0.26,0.36-2.78,0.62-2.78,0.62l-1.93-2.78-1-1.5-1.07-2.34-1.06-0.69h-1.72l-1.59,1.69s-0.89,0.81-1.16,1.44c-0.27,0.62,0.01,1.78-1.15,1.78s-3.22-0.38-3.22-0.38l-1.25-1.15-1.97-0.44-1.34-0.19s-0.62,0.64-0.97,0.91c-0.36,0.27-1.35,1.25-1.35,1.25v0.62l-0.72,1.88-1.15,2.22-0.81,0.9-0.29,1.35,0.63,1.68s0.45,0.9,0.81,1.25c0.36,0.36,0.63,0.35,0.72,0.97,0.09,0.63,0.19,2.6,0.19,2.6l-0.38,2.4-0.97,1.88s-1.88,1.79-2.15,2.06-2.13,1.61-2.13,1.97-1.62,4.19-1.62,4.19l-1.25,2.25s-0.69,2.11-0.78,2.56-0.63,3.59-0.63,3.59-0.09,1.33-0.62,1.6c-0.54,0.26-3.69,0.81-3.69,0.81s-2.12,1.07-2.56,1.34c-0.45,0.27-0.72,0.63-0.72,0.63s-0.19,0.52-0.1,0.87c0.09,0.36,1.16,2.25,1.16,2.25l1.44,2.66,1.06,0.56,0.97,1.06,1.09,1.69v0.81l1.25-0.43s0.9-0.91,1.25-1c0.36-0.09,1.78,0.28,1.78,0.28l1.44,0.87s1.43,0.91,1.78,1c0.36,0.09,2.03,1.41,2.03,1.41l4.32,2.87s0.34,0.82,1.06,0.82c0.71,0,2.41-0.38,2.41-0.38l1.78-0.34,1.06,1.15,0.28,1.16,0.28,1.53,2.56-0.81,2.44-2.41s2.14-2.16,3.13-2.34c0.98-0.18,2.12,1.19,2.12,1.19s0.72,1.58,1.25,2.03c0.54,0.44,2.43,2.32,2.78,2.59,0.36,0.27,3.03,1.53,3.03,1.53l2.22,2.66c0.45,0.53,2.52,3.22,2.97,3.22s2.84,0.18,3.38,0.09c0.53-0.09,1.96,0.63,2.5,1.25,0.53,0.63,1.78,2.69,1.78,2.69s1.27,1.69,1.62,1.78c0.36,0.09,1.16,1.88,1.16,1.88s0.89,1.62,1.25,1.53,2.31-0.63,2.31-0.63,0.73,0.15,0.91,0.69c0.18,0.53,0.87,2.59,0.87,2.59s1.18,0.62,1.53,0.53c0.36-0.09,1.88-1.25,1.88-1.25s1.77-0.26,2.12-0.43c0.36-0.18,1.44-0.82,0.82-1.44-0.05-0.04-0.11-0.06-0.16-0.09,0.05-0.01,0.34-0.07,0.34-0.07l1.69-0.62,8.75-2.88s1-1.76,1-2.03,0.63-2.06,0.63-2.06l0.06-2.06,0.81-0.82,1.78-0.96,2.25-0.82,1.16-1.68,1.06-0.82,5.44-2.59,1.62-1.31,0.82-1.1,0.62-2.5,1.94-1.15s1.27-0.9,1.62-1.35c0.36-0.44,0.35-0.97,0.35-0.97l-0.63-0.81-1.25-1.25-0.34-0.81s0.18-0.96,0.62-1.41c0.45-0.44,0.71-0.63,1.07-0.72,0.35-0.09,1.25,0.35,1.25,0.35l1,1.09,0.87-0.47,0.63-1.78s0.81-2.14,0.9-2.5,0.25-1.69,0.25-1.69-0.25-3.05-0.25-3.5v-2.5s0.44-4.01,0.53-4.37,0.35-2.13,0.35-2.13l-0.1-1.87s-0.44-1.17-0.62-1.44-0.16-0.81-0.16-0.81,0.63-1.05,0.72-1.41c0.09-0.35-0.37-0.81-0.37-0.81s-0.54-0.71-0.72-1.06c-0.18-0.36-0.88,0.15-0.88,0.15l-1.44,0.91s-0.79,1.26-1.15,1.53-0.44,1.31-0.44,1.31l-0.28,4.38-0.81,1.34-1.53-0.09c-0.34-0.63-0.73-1.32-0.79-1.6-0.08-0.44-0.43-2.67-0.34-3.65s0.97-4.38,0.97-4.38l1.25-1.25s0.09-1.52-0.53-2.06c-0.63-0.53-1.87-1.07-2.41-1.34-0.53-0.27-1.72-1.35-1.72-1.97,0-0.63,0.92-1.77,1.19-2.13,0.27-0.35,3.93-1.51,4.28-1.78,0.36-0.27,3.57-2.15,3.57-2.15l3.65-1.07,2.78,0.25,2.13-0.34,1.34-2.5,2.88-0.81s1.87,1.25,2.4,1.25c0.54,0,2.22-0.72,2.22-0.72s1.07,0.64,1.25,1,1.63,1.34,1.63,1.34l1.93-0.37s1.35-0.44,2.07-0.35c0.71,0.09,1.7,0.98,2.06,1.07s2.75-0.72,2.75-0.72l1.09-1.5,2.5-1.16s1.35-1.08,1.35-1.53,0.15-3.22,0.15-3.22,1.25-0.61,1.88-0.97c0.62-0.35,2.15-0.18,2.15-0.18s0.17-1.34,0.35-1.79c0.18-0.44,1.33-1.34,1.78-1.43s2.44,0.37,2.44,0.37l1.15,0.97-1.34,1.44-0.72,1.15,0.72,0.72s2.31-0.45,2.94-0.72c0.62-0.26,2.24-0.44,2.78-0.53,0.53-0.09,2.84-1.15,2.84-1.15s0.91-1.08,0.91-1.44-0.2-1.71-0.38-2.16c-0.18-0.44-2.21-1.14-2.65-1.59-0.45-0.45-0.54-2.58-0.72-2.94s-0.9-1.9-0.63-2.44c0.27-0.53,1.06-1.78,1.06-1.78l-0.62-2.5s-0.01-2.48,0.34-2.84c0.36-0.36,2.07-1,2.07-1l2.93,0.81s0.9,1.15,1.35,1.06c0.44-0.09,2.15-0.53,2.15-0.53l0.25-3.56-0.87-1.16s-1.27-1.42-1.63-1.68c-0.35-0.27-1.25-1.25-1.25-1.25l-1.68-2.97-0.25-2.6-0.72-1.68-2.25-0.54-1.78,0.97-3.13,1.53-1.97,0.44-0.72-0.72-0.78-2.84-1-1.59-2.75-2.35-2.34-1.68-2.66-0.91-2.78-0.06s-2.49,0.8-2.84,1.15c-0.36,0.36-1.45,1.52-1.72,1.88-0.27,0.35-0.88,2.5-0.88,2.5l-0.28,2.12v2.5s-0.17,1.36-0.43,1.72c-0.27,0.36-3.94,2.03-3.94,2.03l-1.16,1.72-0.19,2.66-0.97,2.25-2.15,2.22s-0.6,0.63-0.69,0.09-0.62-2.22-0.62-2.22l-2.16-2.34s-0.44-1.23-1.06-0.78c-0.63,0.44-1.63,1.31-1.63,1.31l-3.28,1s-0.89,0.43-1.25,0.87c-0.36,0.45-2.97,0.72-2.97,0.72l-2.03,0.28-2.16,2.5s-0.62,1.26-1.24,0.82c-0.63-0.45-2.22-2.35-2.22-2.35l-0.82-1.59-0.53-2.94,0.16-5.56-0.06-2.56,1.5-2.6,1.87-3.03s0.44-1.61,0.44-2.06-0.53-3.03-0.53-3.03l-2.03-2.25-4.94-3.66s-0.63-0.71-0.63-1.25c0-0.53,0.1-2.31,0.1-2.31l1.15-1.97s0.63-0.35,0-1.06c-0.62-0.72-3.18-4.57-3.18-4.57l0.15-5.34s0.02-0.65-0.34-1.09c-0.36-0.45-2.59-3.28-2.59-3.28l-1.54-1.88s-0.24-0.62-0.68-0.62c-0.45,0-2.16,0.68-2.16,0.68s-1.17,0.82-1.44,0.29c-0.27-0.54-0.25-2.6-0.25-2.6s-0.29-1.16,0.16-1.25,1.62-0.44,1.62-0.44h1.5l0.29-1.43-1.79-1.97-1.53-1.35-1.4-0.06s-0.14-0.03-0.25,0z","name":"Irkutsk Oblast"},"br":{"path":"m513.39,476.39s1.6072,0.98214,2.3214,1.1607c0.71429,0.17857,2.8572,1.25,3.3929,1.3393,0.53571,0.0893,1.7857,0.71428,2.5,0.98214,0.71429,0.26786,1.875,0.98214,2.5893,1.3393,0.71428,0.35714,2.2321,0.53571,3.2143,0.625,0.98214,0.0893,2.8571,0.89285,3.4821,1.0714,0.625,0.17858,2.1429,1.0714,2.9464,1.1607,0.80357,0.0893,1.5179,0,2.7679,0.625s2.7679,1.3393,3.125,1.5179c0.35714,0.17857,0.71429,0.26785,0.80357,0.98214,0.0893,0.71428,0,2.6786,0.0893,3.0357,0.0893,0.35715,0.26785,1.6964,0.625,2.0536,0.35714,0.35715,1.6071,1.9643,2.5893,2.5893,0.98215,0.625,1.4286,1.6964,1.9643,2.1429,0.53571,0.44643,2.3214,1.875,2.8571,1.9643,0.53572,0.0893,2.3214,0.625,2.7679,0.625,0.44643,0,5.0893,0.44643,5.0893,0.44643s1.7857-0.80357,2.7679-1.25c0.98214-0.44643,4.0179-1.25,4.4643-1.5179,0.44643-0.26785,1.5178-0.98214,2.6786-1.0714,1.1607-0.0893,4.1964-0.0893,5.0893-0.0893,0.89286,0,4.1072,0.0893,4.1072,0.0893s2.3214-0.0893,3.125,0.44642c0.80357,0.53572,1.6071,1.6072,1.9643,2.1429,0.35715,0.53572,0.625,1.4286,1.0714,1.6071,0.44643,0.17858,1.4286,0.35715,1.875,0.35715,0.44643,0,2.1429-0.26786,2.5-0.35715,0.35714-0.0893,2.2321-0.44642,2.2321-0.44642l0.0893-2.6786s-0.0893-1.7857,0.53571-2.0536c0.625-0.26785,4.4643-1.5178,4.8214-1.6964,0.35715-0.17857,1.25-1.6071,1.25-1.6071s-2.5-0.625-3.3036-0.625c-0.80357,0-1.25-1.4286-1.25-1.4286l1.0714-1.5179,0.17857-1.9643,0.98214-1.0714,0.80358-1.3393s-0.625-0.98214-0.80358-1.3393c-0.17857-0.35715-0.0893-1.4286-0.0893-1.4286l2.2321-1.1607,3.125-0.35714,2.4107-1.1607,3.4821-2.4107,1.7857-0.625s1.4286,0.0893,1.875,0.26786c0.44643,0.17857,2.4107,0.53571,2.5893,0.17857,0.17857-0.35714,1.6071-1.9643,2.0536-2.3214,0.44643-0.35714,2.6786-2.1429,2.6786-2.1429l1.4286-1.1607s0.98215-1.25,1.4286-1.5179c0.44643-0.26786,1.875-1.0714,2.4107-1.0714,0.53571,0,0.98214,0,1.3393-0.26785,0.35715-0.26786,1.1607-1.25,1.3393-1.6072,0.17857-0.35714,1.0714-0.80357,1.6071-0.89285,0.53572-0.0893,5-1.3393,5-1.3393l2.6786-1.5179s1.875-1.5178,2.0536-1.875c0.17857-0.35714,1.6071-2.8571,1.6071-2.8571l0.98214-1.875s-0.26786-1.4286-0.71428-1.7857c-0.44643-0.35715-2.1429-1.6072-2.1429-1.6072l-2.5-1.25s-1.25-0.80357-1.1607-1.6071c0.0893-0.80357,7.5-5.625,7.5-5.625s0.98215-1.6964,1.0714-2.0536c0.0893-0.35714,0.89286-1.9643,1.25-2.3214,0.35715-0.35714,2.5-2.0536,2.5-2.0536s1.4286-0.625,1.875-0.71429c0.44643-0.0893,3.5714-1.5178,3.5714-1.5178l1.25-0.98215s0.44643-2.0536,0.44643-2.5893c0-0.53572-0.80357-3.8393-0.80357-3.8393s-1.0714-0.53571-1.4286-0.89285c-0.35715-0.35715-1.25-0.80358-2.1429-0.80358-0.89286,0-2.6786,0-3.125-0.625-0.44643-0.625-1.3393-1.25-1.6964-1.875-0.35714-0.625-1.1607-1.7857-1.25-2.2321-0.0893-0.44643-0.80357-2.4107-0.98214-2.7679-0.17857-0.35714-1.0714-2.3214-1.0714-2.3214l-2.0536-3.5714-1.0714-2.7679,0.26786-2.0536,1.0714-0.625,0.80357-1.25,1.4286-1.875,0.625-0.98214-2.3214-1.25s-1.875,0.44642-2.2321,0.71428c-0.35715,0.26786-0.98215,1.3393-0.98215,1.3393s0.35715,0.625,0,0.80357c-0.35714,0.17857-2.3214,0.44643-2.3214,0.44643l-1.25,0.89285-0.71429,1.9643v1.6071l-0.98214,0.98215-2.0536,1.0714-1.3393,0.98215-1.1607,1.3393s-1.6964,0.0893-2.0536,0.0893c-0.35714,0-2.0536-0.625-2.0536-0.625l-2.6786,0.17857-2.3214-0.0893-1.9643-1.4286-1.4286,0.26786-2.0536-0.35714s-0.80357-0.71429-1.1607-0.71429c-0.35714,0-2.1429,0.625-2.1429,0.625l-1.5178,1.3393-0.98215,1.0714-2.6786,0.26785-1.9643-0.0893-2.3214,0.44643-2.2322,1.1607-3.3928,1.7857-2.3214,0.98215-1.3393,0.89285-0.89285,1.1607s-0.0893,0.35714,0.0893,0.71428c0.17857,0.35715,0.98214,1.4286,0.98214,1.4286l1.6072,0.80357,0.98214,0.89285,0.83,0.91,0.0893,1.1607-1.6071,2.1428-0.35714,2.2322-0.35715,1.875v2.6786l0.80358,1.6071,1.1607,1.4286s0.26786-0.44643,0.71429-0.80357c0.44642-0.35714,1.1607-2.3214,1.1607-2.3214v-2.0536l0.0893-2.0536,0.98214-1.875,1.6964-1.25,1.1607-0.17857,0.89286,1.1607s-0.0893,1.25-0.26786,1.6964c-0.17857,0.44643-0.53571,0.98214-0.35714,1.3393,0.17857,0.35714,0.89286,1.4286,0.89286,1.4286l-0.17858,2.7678s-0.35714,2.3214-0.35714,2.6786c0,0.35714-0.26786,2.5893-0.26786,3.0357v2.5893c0,0.89285,0,1.5178,0.0893,2.1428s0.0893,1.6964-0.0893,2.1429c-0.17857,0.44643-0.44642,1.25-0.71428,1.9643-0.26786,0.71428-0.35714,1.25-0.44643,1.9643-0.0893,0.71429-1.0714,1.6964-1.0714,1.6964s-0.71428,0.26786-0.98214-0.625-1.6071-0.98214-1.6071-0.98214-0.71429,0.44642-1.0714,0.98214c-0.35715,0.53571-0.89286,1.25-0.35715,1.6964,0.53572,0.44643,1.5179,1.6071,1.5179,1.6071s0.625,0.35714,0.26786,1.1607c-0.35714,0.80358-1.1607,1.0714-1.6964,1.4286-0.53571,0.35714-1.5179,0.89285-1.6964,1.25-0.17857,0.35714-0.71428,1.4286-0.71428,1.7857,0,0.35714-0.44643,2.0536-0.44643,2.0536l-1.3393,0.98214-1.875,1.3393s-2.2321,0.71429-2.6786,0.98214c-0.44643,0.26786-2.5,1.4286-2.8571,1.7857-0.35715,0.35714-0.53572,1.25-1.4286,1.6071-0.89286,0.35714-3.125,1.3393-3.125,1.3393l-0.98215,0.26785s-0.35714,0.80357-0.35714,1.1607c0,0.35714-0.26786,2.2321-0.26786,2.7678,0,0.53572-0.26785,0.98215-0.625,1.6964-0.35714,0.71429-0.98214,1.6964-1.6071,1.7857-0.625,0.0893-2.7679,0.71428-3.2143,0.89285-0.44642,0.17858-2.5,0.89286-3.0357,0.98215-0.53571,0.0893-2.8571,1.0714-2.8571,1.0714l-0.71429,0.80357-1.5179,1.1607-2.0536,0.71429-1.4286,0.80357-1.6964-1.0714-0.35714-0.98214-0.44643-1.25s-0.35714-0.35715-1.25-0.26786c-0.89286,0.0893-2.0536,0.44643-2.0536,0.44643s-1.3393-1.4286-1.6071-1.875c-0.26786-0.44643-1.875-3.125-1.875-3.125l-1.54-1.99-1.34-1.61s-1.1607-0.71429-1.6964-0.71429c-0.53571,0-2.6786-0.17857-3.0357-0.17857-0.35715,0-1.6072-0.89285-1.7857-1.1607-0.17857-0.26786-3.4821-4.2857-3.4821-4.2857l-1.875-0.89285-2.8571-1.9643-1.9643-2.2321-1.0714-1.6964-0.89286-0.625s-0.89285-0.26786-1.25,0.0893c-0.35714,0.35714-0.80357,0.53571-1.3393,0.89285-0.53572,0.35715-1.875,1.4286-1.875,1.4286l-1.3393,1.25-1.9643,1.1607-1.4286,0.89286s-0.89286,1.0714-0.98215,1.6071c-0.0893,0.53571-0.26785,1.1607-0.26785,2.0536,0,0.89286-0.35715,3.3036-0.35715,3.3036z","name":"Buryat Republic"},"zb":{"path":"m588.41,500.07s1.1364,1.1364,1.6415,1.5152c0.50508,0.3788,1.6415,1.6415,2.2728,1.894,0.63134,0.25254,2.6516,1.6415,2.6516,1.6415s2.9042,1.0102,3.4093,1.0102h5.5558c1.1364,0,3.283,0.75762,3.283,0.75762s0.88388,0.63134,2.0203-0.25254c1.1364-0.88389,2.3991-1.6415,2.3991-1.6415s0.75762,0.25254,1.6415,0.63135c0.88388,0.3788,1.5152,1.2627,2.1466,1.2627,0.63135,0,3.4093-1.7678,3.4093-1.7678s2.6516-2.2728,3.1567-2.7779c0.50507-0.50508,2.5254-0.88388,3.5355-1.2627,1.0102-0.37881,5.4296-0.50508,5.4296-0.50508s1.894-1.2627,2.2728-1.894c0.37881-0.63135,1.7678-3.4093,1.894-3.9143,0.12627-0.50508,2.7779-2.3991,3.4093-2.9042,0.63135-0.50508,4.9245-2.5254,5.177-3.0305,0.25253-0.50508,2.0203-1.5152,2.0203-1.5152l3.1567,1.2627,2.9042,1.2627s2.2728,0.25254,2.9042,0.25254c0.63135,0,2.2728-0.50508,2.7779-0.88388,0.50508-0.37881,3.1567-1.7678,3.1567-1.7678s3.283,0.25254,3.7881,0.50508c0.50508,0.25253,1.7678,0.88388,2.3991,1.1364,0.63135,0.25254,3.9144,1.389,3.9144,1.389s3.6618,0.3788,4.4194,0.25254c0.75762-0.12627,2.5254-1.7678,2.7779-2.3991,0.25254-0.63134,0.75762-2.3991,1.6415-2.9042,0.88388-0.50507,4.2932-1.5152,4.2932-1.5152s1.389-0.12627,1.5152-1.6415c0.12627-1.5152,0.37881-2.9042-0.25254-3.5355-0.63135-0.63134-1.389-0.88388-1.7678-1.7678-0.3788-0.88389,0.88389-8.9651,0.88389-8.9651l1.6415-3.7881,1.2627-4.2932s1.389-2.2728,1.2627-2.9042c-0.12627-0.63134-0.37881-3.9143-0.37881-3.9143l-1-2.41s-1.1364-0.88388-1.5152-1.389c-0.37881-0.50507-1.0102-0.37881-1.5152-1.0102-0.50508-0.63135-1.7678-1.1364-1.7678-1.7678,0-0.63134-0.25254-1.5152,0.37881-2.0203,0.63134-0.50508,3.0305-3.0305,3.7881-3.4093,0.75761-0.37881,4.5457-2.5254,4.9245-3.0305,0.37881-0.50507,1.389-1.6415,1.7678-2.1466,0.37881-0.50508,0.88388-0.50508,0.63135-1.6415-0.25254-1.1364-2.6516-3.5355-2.6516-3.5355s-0.63135-0.88389-1.5152-0.88389c-0.88389,0-3.1567-0.3788-3.1567-1.0102,0-0.63134-0.37881-1.2627-0.12627-2.0203,0.25254-0.75762,2.0203-2.2728,2.2728-2.9042,0.25254-0.63135,0.37881-1.894,0.37881-1.894l-2.3991-1.6415-2.6516,0.12627s-0.25254-0.25253-0.25254-0.88388c0-0.63134,0.63135-2.7779,0.88388-3.283,0.25254-0.50507,0.50508-1.5152,0.63135-2.1466,0.12627-0.63134-0.25254-1.7678-0.75761-2.3991-0.50508-0.63135-1.5152-1.389-1.5152-1.389s-1.1364-0.50508-1.6415,0.12627c-0.50508,0.63134-1.1364,1.5152-1.1364,1.5152s-1.1364,0.12627-1.6415-0.25254c-0.50508-0.37881-0.88388-4.1669-0.88388-4.1669s-0.88389-1.2627-1.6415-1.389c-0.75762-0.12627-1.6415-0.12627-2.1466,0.50508-0.50507,0.63134-1.0102,1.0102-1.7678,1.5152-0.75762,0.50508-1.2627,1.1364-1.894,0.75762-0.63134-0.37881-1.389-0.75762-1.2627-1.389,0.12627-0.63135,0.75761-1.6415,0.88388-2.1466,0.12627-0.50507-1.7678-2.1466-1.7678-2.1466l-3.283-0.12627-1.1364-1.1364c-0.12627-0.75761,0.25254-2.5254,0.25254-2.5254l-1.389-1.5152-2.7779-4.0406-1.2627-1.894-3.1567-0.3788-1.1364-2.0203-0.25254-2.9042-1.2627-0.3788h-1.2627l-1.6415,0.63134-1.6415-1.0102-3.0304-0.63135-1.894,0.75762-0.37881,1.0102-0.12627,1.894,0.37881,1.894-0.25254,1.5152-0.50507,2.0203,0.75761,2.0203,0.50508,1.389,1.7678,1.5152,0.88389,0.88388,0.25254,1.894s-0.25254,1.0102-0.75762,1.389c-0.50507,0.37881-3.0305,1.2627-3.0305,1.2627s-2.3991,0.63134-2.9042,0.75761c-0.50508,0.12627-3.4093,0.75762-3.4093,0.75762l-1.389,1.5152-0.25254,1.6415,0.75762,2.5254,1.7678,3.283,1.6415,3.7881,0.75762,2.9042,2.0203,2.2728,1.2627,1.1364,2.1466,0.25254,2.2728,0.50507,1.7678,1.389,0.50507,1.6415,0.12627,1.894v2.3991l-1.894,1.6415-3.0305,1.2627-2.5254,1.2627-2.1466,2.0203-1.0102,1.7678-0.75761,2.1466-2.6516,1.6415-1.894,1.389-2.0203,1.5152-0.88388,0.88388v0.75762l0.88388,0.88388c0.50508,0.12627,2.1466,1.2627,2.1466,1.2627l1.894,1.0102s0.75762,0.88389,0.88389,1.389c0.12627,0.50508,0,1.5152-0.12627,2.1466-0.12627,0.63134-2.0203,3.6618-2.0203,3.6618l-1.894,1.6415-3.6618,2.0203-3.1567,0.63135-2.1466,1.0102s-0.75761,0.37881-1.1364,1.0102c-0.3788,0.63135-1.6415,1.2627-1.6415,1.2627l-2.2728,0.50507-1.0102,0.88388s-1.2627,0.88389-1.6415,1.389c-0.37881,0.50508-3.5355,2.9042-3.5355,2.9042l-0.88389,1.389s-0.75761,1.1364-1.389,1.2627c-0.63134,0.12627-2.2728,0.12627-2.2728,0.12627l-2.3991-0.88388-1.6415,1.389s-1.6415,0.37881-2.1466,0.88388c-0.50508,0.50508-2.7779,1.7678-2.7779,1.7678l-2.3991,0.63134s-1.894-0.25253-2.5254,0.12627c-0.63134,0.37881-1.2627,1.5152-1.2627,1.5152l0.63135,1.5152,0.25254,0.88388-0.88389,1.894s-1.0102,0.75762-1.0102,1.2627-0.88388,2.0203-0.88388,2.0203-0.50508,0.88388,0.25253,1.389c0.75762,0.50507,2.5254,0.88388,2.5254,0.88388s1.389-0.12627,1.5152,0.50508c0.12627,0.63134-1.1364,1.6415-1.1364,1.6415l-2.6516,0.75762-2.0203,1.2627-0.88389,1.6415z","name":"Zabaykalsky Krai"},"am":{"path":"m662.32,397.46,4.6429-0.17857,2.3214-0.17858,3.5714-1.7857,2.6786,0.35714,3.5714,1.0714,2.1429,1.0714,2.6786,0.53571,4.4643-0.53571,3.0357,0,2.3214,0.53571,2.8571,2.1429,2.1429,0.89286,2.8571,0.35714,2.3214-1.7857,2.3214-0.71429,1.9643,0,2.1429,1.4286,2.1429,0.71429,2.5-0.71429,1.7857-1.9643,1.7857-1.25,4.1072,0,2.5-1.4286,2.1428-0.89286,3.75,0,1.4286,0,1.25-0.71429,0.53571-2.5,1.6071-1.0714,4.2857-2.3214,2.3214-0.89286,3.5714-1.9643,2.8572-1.4286,5-0.89286,3.0357,0,1.6071,1.4286l-0.37,3.2s-1.25,1.6071-1.9643,2.6786c-0.71429,1.0714-1.6072,2.6786-1.9643,3.3929-0.35714,0.71429-1.25,2.1429-1.25,2.1429s-0.53571,2.8571-0.71429,3.5714c-0.17857,0.71428-1.0714,2.8571-1.0714,2.8571s-1.25,1.7857-1.0714,2.5c0.17857,0.71428,1.25,1.25,1.25,1.25l0.89285,0.71428,3.2143-0.71428s1.7857-0.17857,2.6786-0.17857c0.89286,0,2.5,0.89285,2.5,0.89285l0.53572,1.9643,0.89285,2.6786s0.17857,0.53572,1.6072,0.53572,2.6786-1.4286,2.6786-1.4286l0.17857-2.3214s1.0714-0.89286,1.9643-0.89286c0.89286,0,2.5-0.53572,2.5-0.53572l1.25-2.1428,0.35715-2.5,1.9643-1.7857,2.3214,0.17857c0.71,0.19,3.03-1.6,3.03-1.6l1.4286-1.4286s0.89285-1.0714,1.9643-0.35714c1.0714,0.71428,2.3214,2.5,2.3214,2.5v2.8571l0.53572,1.6071,1.9643,1.7857s1.6071,0.71428,1.25,1.6071c-0.35714,0.89286-2.8571,1.9643-3.5714,1.9643-0.71428,0-3.5714,0.89285-3.5714,0.89285l-1.6071,0.17857-1.96,0.89s-0.71429,0.17857-0.17858,1.0714c0.53572,0.89286,1.9643,1.7857,1.9643,1.7857l1.25,0.89286,0.35714,1.9643-3.2143,2.3214-1.6072,3.0357-0.17857,2.1429-1.6071,2.3214-2.6786,0.89285-1.6071,1.4286,1.9643,1.9643,0.35714,1.7857-2.3214,2.3214-1.25,3.5714,1.6071,2.8571s3.5714,1.4286,4.2857,1.6072c0.71429,0.17857,4.8214,0.71428,4.8214,0.71428s1.4286,0.71429,1.9643,1.25c0.53571,0.53572,0.71428,3.2143,0.71428,3.2143l0.35715,2.5s0,0.53571,0.71428,1.0714c0.71429,0.53571,0,3.5714,0,3.5714l-0.71428,2.8571-0.53572,1.7857-1.25,1.7857-3.2143,0.35714-4.1072-0.17857-2.8571-1.4286-1.77-0.53-3.04,1.07h-3.3929-2.5l-3.2143,0.89286s-2.6786-0.35714-3.5714-0.53572c-0.89286-0.17857-3.5714-2.1428-3.5714-2.1428l-3.22-2.67-1.07-2.15-1.43-2.14-1.7857-1.0714-1.0714-1.9643s0-1.0714-0.71428-1.6072c-0.71429-0.53571-2.6786-0.71428-2.6786-0.71428l-0.89286-1.25-1.7857-2.8571-1.9643-2.5s-1.25-1.4286-1.9643-1.6072c-0.72-0.18-1.79-0.36-2.15-1.43-0.35715-1.0714-2.3214-2.6786-2.3214-2.6786l-2.8572-1.4286-2.6786-1.4286-3.0357-0.17857-2.6786-0.17858s-0.71429,0.89286-1.6072,1.0714c-0.89285,0.17857-4.4643-0.35714-4.4643-0.35714l-3.5714-1.25-2.3214,0.35714-1.9643,0.89286-1.6072,1.4286-3.75,0.71429s-3.2143,0.71428-3.3928,0c-0.17858-0.71429-2.8572-4.1072-2.8572-4.1072l-1.7857-1.4286h-1.6071l-1.0714-1.0714v-2.1428l2.1428-2.1429,0.17858-1.4286-0.89286-1.4286-1.25-0.89286-2.1429-0.17857s-0.71428,1.0714-0.71428,0,0.71428-3.3929,0.71428-3.3929l0.89286-2.3214-0.35714-1.9643-1.25-1.7857-1.7857-0.71428-1.25,0.71428-1.25,0.71429-1.25-0.17857s-0.35714-0.71429-0.35714-1.4286c0-0.71429-1.25-2.6786-1.25-2.6786l-0.71429-0.71428-1.7857-0.17857-0.89286,0.89285-1.4286,0.89286-2.5,0.53572s-0.35714-0.35715-0.17857-1.0714c0.17857-0.71429,0.71428-2.5,0.71428-2.5l-1.25-1.4286-0.51-0.52-1.79-0.18h-2.1429l-0.35714-1.0714v-2.1429z","name":"Amur Oblast"},"ch":{"path":"M876.72,53.094c-0.34,0-0.66,0.094-0.66,0.094l-1.78,2.124-4.47,1.969s-6.05,2.853-7.12,3.031c-1.07,0.179-1.44,1.969-1.44,1.969s0.37,2.514,0.19,3.407c-0.18,0.892-1.44,1.406-1.44,1.406s-2.32,1.428-2.5,2.5c-0.18,1.071,0.91,2.156,0.91,2.156s2.66,0.906,3.37,0.906c0.72,0,2.85-0.375,3.56-0.375,0.72,0-0.34,1.625-0.34,1.625l-0.91,1.782-2.31-0.907-3.03-0.719s-2.14,0.554-3.03,0.376c-0.89-0.179-2.31-1.438-2.31-1.438l-2.69,0.531-2.88,0.375h-1.06s-0.53,2.656-1.25,2.656c-0.71,0-2.12,1.782-2.12,1.782l-3.41,0.187-2.84,2.875s-2.86,2.496-3.75,3.032c-0.9,0.535-1.61,0.531-2.5,0.531-0.9,0-2.5,1.062-2.5,1.062l-4.85,3.219-5.15,1.062-3.07,0.907s-1.04,2.861-1.93,3.219c-0.9,0.357-2.88,1.968-2.88,1.968l-3.22,1.938-2.12,1.966-2.16,3.03-1.25,1.97-1.06,2.5v3.22s-0.91,0.72-1.63,0.72c-0.71,0-2.84,1.25-2.84,1.25s-0.9,2.51-1.44,3.41c-0.53,0.89-2.85,1.76-3.56,2.12s0.34,1.25,0.34,1.25l2.35,0.53,0.53,2.16,2.69,0.53h2.65,3.75s1.44,1.07,1.97,1.78c0.54,0.72,1.63,1.78,1.63,1.78l-1.82,2.5-2.5,1.1-2.31-0.72s-1.6,1.25-2.31,1.25c-0.72,0-2.16,1.59-2.16,1.59s-1.42-0.71-2.31-1.25c-0.89-0.53-1.96,0-3.03,0s-1.26,1.26-1.44,1.97-0.87,2.84-0.87,2.84-1.09,1.79-1.63,2.5c-0.53,0.72-2.66,2.69-3.37,3.22-0.72,0.54-1.81,0.54-4.13,0.72s-1.07,1.26-1.25,2.16c-0.18,0.89-1.06,3.03-1.06,3.03s-2.15,1.24-2.69,2.31c-0.53,1.07-0.53,2.67-0.53,3.56,0,0.9,0.53,1.82,0.53,1.82h1.06l0.19-0.72,0.19-1.97,0.72-1.06,0.72,0.53,3.9,1.59,5,3.41,0.38,0.87-0.38,5.19-1.06,2.84-4.09,4.47-2.88,3.94-0.34,2.5,1.25,0.19h1.59s-0.17,1.42-0.53,2.31,0.34,1.59,0.34,1.59l2.88,1.25,3.75,0.38,4.62-0.19,2.69,3.41,2.16,1.78h4.47c1.25,0,1.06,2.5,1.06,2.5l1.06,1.59,3.94-0.34s5.36-1.44,6.25-1.44,3.2-0.53,3.56-1.25c0.36-0.71,2.69-1.59,2.69-1.59l1.97-0.91h3.75s2.66-1.24,3.37-1.59c0.72-0.36,0.74-1.98,1.1-2.69,0.35-0.71,0.87-3.03,0.87-3.03l1.25-2.5h1.63l1.78-1.06,1.06-1.63,1.44-0.34,2.31-1.44,1.06-1.25s0.91-0.89,1.63-1.78c0.71-0.89,0.87-1.6,1.4-2.31,0.54-0.72,2.51-1.44,3.22-1.97,0.72-0.54,2.15-2.14,2.5-3.03,0.36-0.9,1.63,0,1.63,0l4.09,0.68s3.22-1.04,5.72-1.93c2.5-0.9,1.08,1.06,0.91,1.78-0.18,0.71,0,3.2,0,4.09s0.88,3.22,1.78,4.47c0.89,1.25,3.9-1.44,3.9-1.44s3.05-1.78,3.94-2.5c0.89-0.71,3.94,0,3.94,0h6.06v-2.84c0-0.72,1.43-3.23,1.97-4.13,0.54-0.89,1.25-3.56,1.25-3.56l0.72-2.5-0.19-4.81s1.79-1.97,3.22-1.97,2.69,1.59,2.69,1.59l4.28,0.91,1.44-0.53s-0.19-3.22-0.19-3.94c0-0.71-0.19-2.84-0.19-2.84l-0.53-3.22s-0.54-2.51-0.72-3.41c-0.18-0.89-0.87-2.12-0.87-2.12l-2.5-1.63,1.25-0.87,4.09-0.38s1.96-2.66,2.5-3.37c0.54-0.72,2.84-2.35,2.84-2.35v-2.5s-1.04-2.13-1.93-3.03c-0.9-0.89-2.35,0.18-3.07,0.53-0.71,0.36-3.03-0.34-3.03-0.34s-1.41-0.88-2.12-0.34c-0.72,0.53-1.63,1.06-1.63,1.06l-1.4-1.06-1.97,1.78-1.44-0.72s-2.84-1.79-4.09-1.25c-1.25,0.53-1.97-0.72-1.97-0.72h-2.5s-0.56,1.25-1.1,1.97c-0.53,0.71-3.03,0.87-3.03,0.87l-2.84,0.91-2.69,3.75-2.69,0.53,1.25-2.5,0.19-1.59-3.03-0.38s2.13-0.88,2.84-1.06c0.72-0.18,3.41-1.06,3.41-1.06l1.97-0.91,0.34-1.59s1.78-3.41,1.78-4.13c0-0.71-0.68-3.22-0.68-3.22l-0.91-2.31s-2.5-4.63-3.22-5.34c-0.71-0.72-1.05-1.78-2.12-1.78-1.08,0-3.07,0.68-3.07,0.68l-1.4,0.91-1.25-1.06s-2.17-1.98-3.6-2.159c-1.42-0.178,0.38-0.719,0.38-0.719l0.87-1.593s-0.16-1.973,0.38-2.688c0.53-0.714,1.97,1.25,1.97,1.25s2.67,1.438,3.56,1.438,1.78,0.531,1.78,0.531,3.41-0.371,4.13-0.906c0.71-0.536,0.68-2.313,0.68-2.313l0.19-2.687,0.72-1.25,1.25-1.782s0.36-1.964,1.25-2.5c0.89-0.535,1.79,0,2.69,0,0.89,0,2.31,1.626,2.31,1.626l1.59,0.718,2.5-1.437s1.28-2.139,1.82-3.031c0.53-0.893,2.84-1.782,2.84-1.782l2.84-2.156,1.44-3.219s2.14-1.973,2.5-2.687c0.36-0.715-0.34-1.782-1.59-1.782h-1.78l-1.82-1.062-1.93-0.188-3.07-1.781-3.18-0.187h-3.75c-0.9,0,0-0.875,0-0.875l2.5-1.625,0.68-2.5-1.06-1.25-2.5-0.532,1.78-1.25,0.53-1.25-2.31-0.531v-2.5s-0.35-1.785-0.53-2.5c-0.09-0.357-0.45-0.437-0.78-0.437zm-77.19,16.062c-0.22-0.01-0.48,0.081-0.78,0.282-1.61,1.071-3.94,2.312-3.94,2.312-1.07,0.357-1.79,1.42-1.97,2.312-0.17,0.893-0.53,2.88-0.53,3.594,0,0.715,0.2,2.496,1.1,3.032,0.89,0.535,3.03,1.598,3.03,2.312s-0.56,2.321,0.15,2.5c0.72,0.179,1.44-0.522,1.97-1.594,0.54-1.071,0.36-3.419,0.72-4.312s1.45-2.491,1.63-3.563c0.17-1.071-0.19-5.187-0.19-5.187s-0.24-1.644-1.19-1.688z","name":"Chukotka Autonomous Okrug"},"ha":{"path":"m779.82,276.93c0.53572-0.71428,1.4286-1.4286,1.9643-2.3214,0.53571-0.89285,1.7857-2.5,1.7857-2.5s1.7857-0.17857,4.1072,0.17858c2.3214,0.35714,4.4643,1.4286,5.7143,2.1428,1.25,0.71429,2.6786,1.25,3.0357,2.3214,0.35714,1.0714,1.6071,2.1429,1.6071,3.3929s-1.4286,3.5714-1.4286,4.2857c0,0.71429-0.17857,2.5,0.71428,3.3929,0.89286,0.89286,0.71429,1.6071,1.7857,1.4286,1.0714-0.17857,3.9286-1.0714,5-1.25,1.0714-0.17857,3.3929,0,5,0.53572,1.6071,0.53571,2.8571,0.89285,3.2143,1.6071,0.35715,0.71428,1.0714,1.4286,0.89286,2.5-0.17857,1.0714-2.5,2.8571-2.5,2.8571l0.17857,1.4286,0.89286,1.6072s1.6071,0.71428-0.35714,0.89285c-1.9643,0.17857-3.0357-0.71428-3.0357-0.71428s0.17857-0.17857,0-1.0714c-0.17857-0.89286-0.71428-1.7857-1.7857-1.4286-1.0714,0.35714-2.3214,1.9643-3.0357,2.5-0.71428,0.53571-2.8571,3.0357-2.8571,3.0357s-1.9643,0.71429-2.8571,1.7857c-0.89286,1.0714-4.1071,4.6428-4.1071,4.6428s-0.17858,1.25-1.0714,2.5c-0.89286,1.25-2.3214,2.3214-2.5,3.5714-0.17857,1.25,0,4.1071,0,4.1071s1.4286,1.0714,1.6071,2.3214c0.17857,1.25-0.89286,1.9643-1.25,2.8572-0.35714,0.89285-1.4286,0.53571-1.4286,1.7857s0.17857,5.7143,0.17857,5.7143l-0.35714,4.8214-0.35715,4.1072s-1.0714,1.9643-1.25,3.2143c-0.17857,1.25-0.35714,2.6786-0.35714,3.3929,0,0.71429-0.17857,3.0357-0.17857,3.75,0,0.71429-0.71429,1.9643-0.89286,2.6786-0.17857,0.71429-1.0714,1.25-0.17857,1.9643,0.89286,0.71428,1.9643,1.9643,1.9643,1.9643l-1.7857,3.3929-0.17857,1.9643-1.7857,3.3928-1.25,3.75-0.35715,4.1072-0.71428,1.6071-3.2143,4.1071,0.35715,2.6786s2.1428,1.0714,2.8571,1.0714c0.71428,0,3.3929,0.53572,4.4643-0.17857s2.5-1.4286,3.2143-1.7857c0.71429-0.35715,1.6071-0.89286,2.8571,0.35714s2.5,4.4643,2.5,4.4643,0.17857,1.4286,1.4286,1.0714c1.25-0.35714,1.9643-2.1428,1.9643-2.1428l-1.0714-2.1429,0.53572-2.6786-0.53572-1.7857-1.6071-2.5s-1.7857-1.4286-2.5-1.4286c-0.71429,0-3.75,1.4286-3.75,1.4286s-1.9643,2.3214-1.6071,1.4286c0.35714-0.89285,1.9643-3.3928,1.9643-3.3928l1.6071-0.35715,1.25-1.7857s0.89286-0.71429,1.9643-0.71429,3.2143-1.25,3.2143-1.25,1.25-2.6786,1.0714-0.89285c-0.12,1.78-1.72,4.28-1.72,4.28l1.0714,2.1429,1.9643,2.1429,0.53572,1.7857-0.17857,2.6786,2.3214,1.4286v1.6072,2.8571l1.7857-0.71429c0.71429-0.71428,2.1429-4.2857,2.1429-4.2857l0.89285-3.2143v-2.1428s-1.6071-1.7857-0.89285-1.9643c0.71428-0.17857,4.6428-2.1429,4.6428-2.1429s2.1429-0.53571,3.0357-0.53571c0.89286,0,4.1071,0.17857,4.8214,0.35714,0.71428,0.17857,4.4643,1.6071,4.4643,1.6071s4.4643,1.25,5.1786,1.25c0.71429,0,1.9643,1.7857,1.9643,1.7857s-0.89286,1.9643,0.53571,2.8571c1.4286,0.89286,4.8214,3.0357,4.8214,3.0357l3.75,2.1428s1.4286,3.3929,1.4286,4.2857c0,0.89285-0.17857,4.6428-0.17857,5.7143,0,1.0714,0,5,0.53572,5.7143,0.53571,0.71428,1.0714,2.3214,2.1428,3.2143,1.0714,0.89286,3.2143,4.2857,3.2143,4.2857l2.5,1.25,3.0357,6.9643s1.4286,1.4286,1.6072,2.3214c0.17857,0.89286,1.6071,3.0357,1.7857,3.75,0.17857,0.71429,1.6071,5,1.7857,5.7143,0.17857,0.71428-0.53572,8.5714-0.53572,8.5714l0.53572,3.3928s0,1.25-0.89286,1.9643c-0.89286,0.71429-3.5714,1.6071-3.5714,1.6071l-1.4286,0.17857-1.4286-1.7857-0.53572-2.6786-3.0357-3.0357s-1.9643-1.25-2.6786-0.71428c-0.71429,0.53571-2.3214,1.9643-2.3214,1.9643s-0.89286,1.7857-1.25,2.5c-0.35714,0.71429-1.4286,1.25-0.89286,2.3214,0.53572,1.0714,1.9643,2.6786,1.9643,2.6786s0.35714-0.71428,2.1428-0.53571c1.79,0.18,2.14,2.68,2.14,2.68l-0.89286,3.2143s-1.9643,1.25-2.6786,1.6071c-0.71428,0.35714-2.8571,1.25-1.7857,2.1429,1.0714,0.89285,2.3214,1.25,2.3214,1.25s0.71428,1.25,0,1.9643c-0.71429,0.71429-2.3214,2.1429-2.3214,2.1429s-1.7857,0.35714-3.0357,1.25-3.2143,1.4286-4.2857,1.6071c-1.0714,0.17857-2.8571,1.25-4.1071,0s-2.1429-0.89285-2.5,0.17857c-0.35715,1.0714-1.6072,0.89286-1.7857,1.9643-0.17857,1.0714,0,2.8571,0.35715,3.5714,0.35714,0.71428,0,3.0357,0,3.0357s-2.3214,1.9643-2.5,1.25c-0.17858-0.71428,0.17857-2.3214-0.35715-3.2143-0.53571-0.89286-2.3214-2.5-2.3214-2.5s-2.8571-1.4286-1.7857-2.3214c1.0714-0.89286,2.8571-2.6786,3.2143-3.2143,0.35714-0.53571,0.35714-3.0357,0.35714-3.0357s-2.1429-0.89286-2.6786-1.7857c-0.53572-0.89285-1.0714-3.3928-1.0714-4.1071,0-0.71428-0.71429-3.3929,0.17857-3.75,0.89286-0.35714,2.8571-1.9643,2.8571-1.9643l0.53572-1.9643s-0.53572-0.35714-2.1429-0.35714c-1.6071,0-2.5-0.17857-3.9286,0.89285s-1.4286,1.0714-2.5,2.5-2.1429,2.6786-3.2143,3.2143c-1.0714,0.53571-2.6786,0.71429-2.6786,0.71429s-4.1071-0.71429-4.2857-1.4286c-0.17857-0.71428-1.6072-1.9643-2.5-1.9643-0.89286,0-2.1429,0.35714-3.2143,0.89286-1.06,0.55-1.95,0.73-2.84,0.73-0.89286,0-4.2857,1.0714-4.2857,1.0714s-2.1428,1.7857-3.2143,1.7857c-1.0714,0-2.1014,0.40945-2.28-0.66198-0.17857-1.0714-1.0823-3.4216-1.0823-3.4216l-1.5332-4.3507s-2.6677-0.69261-3.7392-0.87119c-1.0714-0.17857-3.8221-0.85138-3.8221-0.85138l-2.4892-1.1525s-2.1249-2.2078-1.7678-2.9221c0.35714-0.71428,1.7028-4.0044,2.4171-4.5401,0.71428-0.53572,1.2608-1.4069,1.2608-1.4069l-1.25-2.3214s-1.7965-1.2085-0.90368-1.7442c0.89286-0.53571,3.7608-2.0058,3.7608-2.0058l2.0906-4.0892,1.5025-3.2341,3.5498-2.6767-0.89285-1.9643-2.4171-1.7118-0.11357-1.6288,2.5306-1.1237,4.1071-0.71428,2.6786-0.89286,1.0714-1.25-0.53571-1.6071-1.986-1.47-1.0083-2.5108-0.0631-2.4477-1.47-2.0058-1.7226-0.67282-2.2583,1.7442s-1.6703,1.0823-2.3846,1.4394c-0.73,0.34-2.87,0.19-2.87,0.19l-2.3214,1.25-0.44008,2.5-0.80992,2.3214-2.5,1.0714-2.1429,0.53571-0.53571,2.4585-1.4809,1.4286-2.3431-0.17857-0.99746-2.4585-1.0714-2.5s-1.2608-0.51404-1.9751-0.69262c-0.71428-0.17857-4.4534,0.51405-4.4534,0.51405l-1.7857-0.17857-1.7857-1.25,1.9643-5.5357,0.89286-4.1072s1.25-2.3214,1.9643-3.0357c0.71428-0.71429,3.0357-5,3.0357-5l0.35714-2.6786s-0.53571-1.25-1.6071-1.6072c-1.0714-0.35714-5.3571,0.17858-5.3571,0.17858l-2.6786,0.53571s-3.3424,2.5325-4.0567,1.8182c-0.71428-0.71429-1.1219-3.9611-1.1219-3.9611s-3.0376-1.6288-3.0376-2.5217c0-0.89286,1.9662-1.5855,1.9662-1.5855s0.53571-1.0714,0.71428-2.1429c0.17857-1.0714-0.20024-2.8138-0.20024-2.8138l-2.6281-0.77741s-1.4069-0.89472-2.1212-1.0733c-0.71428-0.17857,1.1996-2.2998,1.1996-2.2998l0.89286-1.6072-0.35714-1.0714s-2.2493-0.54655-2.2493-1.2608c0-0.71429,1.6505-3.3604,1.6505-3.3604l-1.5873-1.6703-2.5415-0.82971-0.80806-1.618s0.69262-0.73594,1.5855-1.0931c0.89286-0.35714,1.0498-0.61866,1.0498-0.61866l-1.3852-0.89286v-2.4062c0-0.71429-0.074-2.3304-0.074-2.3304s-1.2718-1.1078-1.4502-2.345c-0.1894-1.3131,2.6371-1.7532,2.6371-1.7532l-0.93619-0.82972-0.49238-1.4917,0.2417-2.1339,2.7525-0.86037,2.9094-0.89285,2.4477,0.1371,0.70345-1.8922,3.2034,0.21106,2.9203,0.0108s0.35715-1.7749,0.35715-2.4892c0-0.71428-1.8705-1.618-1.4286-2.2691,0.40112-0.59101,1.5657-0.89285,2.4585-1.0714,0.89286-0.17858,3.9286-0.71429,4.1072-1.4286,0.17857-0.71428,2.5829-6.1562,2.5829-6.1562s0.96683-1.0083,1.6811-1.1869c0.71429-0.17857,3.9286-0.93432,3.9286-0.93432l-1.764-2.794-3.0051-2.8246-1.6378-4.8539-2.3214-2.1428-1.4286-1.7857v-5.3571l3.0357-6.7857-1.0714-3.2143-0.72512-5.8585,0.81889-2.85s3.5498,0.11543,4.264,0.29401c0.71428,0.17857,7.7634,0.22004,7.7634,0.22004s0.95599-4.0152,1.3131-4.7295c0.35714-0.71428,1.3871-0.826,2.28-1.0046,0.89286-0.17857,3.3495-0.62051,3.3495-0.62051l2.5433,1.1562,1.6071-1.0714z","name":"Khabarovsk Krai"},"eu":{"path":"m781.96,462.82c0.98214,1.875,1.1607,1.875,1.875,2.5893l2.6786,2.6786s0.80357,1.1607,1.0714,1.7857c0.26786,0.625-0.0893,1.6964,0.625,1.9643,0.71429,0.26785,2.3214,0.53571,2.7679,0.625,0.44643,0.0893,1.4286,1.0714,2.3214,1.1607,0.89285,0.0893,1.6071,0.0893,2.1428-0.35714,0.53572-0.44643,1.0714-1.25,1.6964-1.7857,0.625-0.53571,2.5893-1.4286,3.125-1.6964,0.53572-0.26785,1.875-0.625,2.3214-1.0714,0.44643-0.44643,1.1607-0.98215,1.1607-2.0536s0.26785-2.7678,0.71428-3.125c0.44643-0.35714,2.9464-1.9643,3.5714-2.5,0.625-0.53571,1.6964-2.2321,2.1429-2.8571,0.44643-0.625,1.875-2.6786,2.2321-3.2143,0.35714-0.53572,2.1429-2.0536,2.1429-2.0536l2.0536-2.3214,0.98214-1.0714,2.6786-1.875,0.71429-0.80357,0.17857-1.1607,0.0893-0.35714-1.5179-0.17857-1.875-0.0893-1.6964,0.44643-1.6964,1.1607-1.3393,1.25-0.80358,1.0714-1.25,1.6072-1.4286,0.98214-1.7857,0.625s-1.25,0.17857-1.7857,0c-0.53571-0.17857-2.1428-0.71429-2.1428-0.71429l-1.4286-0.625-0.80358-0.98214-0.89285-0.625s-0.80357-0.26786-1.1607-0.17857c-0.35714,0.0893-1.7857,0.625-1.7857,0.625l-2.0536,0.71429-2.4107,0.17857s-1.0714,0.44643-1.7857,0.625c-0.71429,0.17857-2.4107,0.80357-2.4107,0.80357l-1.4286,0.89285-1.875,0.26786-0.80357,0.17857-0.35714,0.98215-0.0893,1.4286s-0.44643,1.1607-0.44643,1.5178c0,0.35715-0.53571,1.875-0.53571,1.875l-0.53571,1.1607-0.71429,1.4286z","name":"Jewish Autonomous Oblast"},"pr":{"path":"m822.68,473.71c0,0.53571,0.53571,1.25,0.53571,1.25l1.4286,1.4286s0.35715,1.0714,0.44643,1.4286c0.0893,0.35714-0.625,2.0536-0.625,2.0536l-1.1607,2.7679s-0.0893,2.2321,0,2.5893c0.0893,0.35715,0.625,1.0714,0.89285,1.5179,0.26786,0.44643,0.80358,1.1607,0.80358,1.5179,0,0.35714-0.80358,1.9643-0.80358,1.9643v1.9643c0,0.44643-0.44642,1.9643-0.44642,1.9643s-0.17858,0.0893-0.17858,1.0714v2.7679c0,0.71429-0.26785,3.0357-0.35714,3.3929-0.0893,0.35714-1.9643,0.53571-2.3214,0.53571-0.35714,0-1.3393-0.98214-1.3393-0.98214s-0.98215-1.6071-1.1607-2.0536c-0.17857-0.44643-1.3393-1.5179-1.3393-1.875,0-0.35715-0.26786-1.6072-0.89286-1.7857-0.625-0.17857-1.5179,0.26786-1.5179,0.26786s-0.53571,0.89286-0.625,1.25c-0.0893,0.35714,0,0.98214-0.0893,1.4286-0.0893,0.44643-0.71429,2.5-0.71429,2.5s-0.625,0.625-1.1607,0.89286c-0.53572,0.26786-2.2322,1.0714-2.2322,1.6071,0,0.53572,1.0714,0.71429,2.1429,2.0536,1.0714,1.3393,3.125,4.6429,3.125,4.6429l2.5,4.2857,1.4286,4.9107s0.44643,1.6071,0.625,2.1429c0.17857,0.53571,0.89286,1.1607,0.98215,1.9643,0.0893,0.80357,0.53571,2.5-0.35715,2.8571-0.89285,0.35715-4.0178,1.0714-4.0178,1.0714l-0.71429,0.625,1.1607,0.71429s0.625,0.44643,1.0714,0.53571c0.44643,0.0893,0.53572,1.4286,0.98215,1.4286,0.44642,0,1.875-0.35714,2.4107-0.71428,0.53571-0.35714,1.3393-0.625,2.1429-0.625,0.80357,0,1.4286-0.44643,1.4286-1.0714,0-0.625-0.625-3.3929-0.625-3.8393,0-0.44642,1.5179-2.5893,1.5179-2.5893v-2.1429c0-0.35714-0.17858-1.4286,0.35714-1.5179,0.53571-0.0893,2.9464-0.71428,2.9464-0.71428s0-1.1607,1.0714-0.26786c1.0714,0.89286,1.5178,2.9464,1.5178,2.9464s1.875,0.35714,2.2322,0.17857c0.35714-0.17857,0.98214-0.625,1.5178-0.98214,0.53572-0.35714,2.5893-0.53572,3.3929-0.53572,0.80357,0,2.1429-0.44642,2.1429-0.44642l-0.26786-1.1607s2.0536-1.25,2.5-1.5179c0.44643-0.26785,2.2321-1.1607,2.8571-1.7857s1.5179-1.4286,1.9643-2.4107c0.44643-0.98215,1.3393-3.125,1.5179-3.4822,0.17857-0.35714,1.1607-2.5,1.4286-3.2143,0.26785-0.71429,0.89285-2.3214,1.3393-3.125,0.44643-0.80357,1.5179-2.8572,1.5179-2.8572s-0.0893-2.3214-0.0893-2.8571c0-0.53571-0.26785-1.875-0.625-2.8571-0.35714-0.98214-0.53571-1.1607-0.44642-2.1429,0.0893-0.98214,0.98214-1.6071,1.6071-2.0536,0.625-0.44643,1.0714-1.4286,1.0714-1.9643,0-0.53571-1.25-2.9464-1.25-2.9464s0.0893-1.1607,0.35714-1.6964c0.26786-0.53572,1.5179-1.7857,1.5179-1.7857l0.17857-2.9464s0.80357-2.2321,0.80357-2.6786c0-0.44643,0.26786-3.9286,0.26786-3.9286l0.89285-2.1429s0.26786-3.3928,0.26786-3.9286c0-0.53571-0.53571-5-0.53571-5.5357,0-0.53572-0.17857-4.1071-0.17857-4.7321s-0.71429-2.1429-0.71429-2.5893c0-0.44643,0.0893-2.1429,0.26786-2.5893,0.17857-0.44643,0.98214-1.9643,0.98214-1.9643s-0.0893-2.0536-0.0893-2.5893c0-0.53571,0.17858-1.6964-0.44642-1.7857s-2.3214,0.80357-2.3214,0.80357l-1.7857,0.71429-1.5178,0.17857-0.71429-0.44643-1.0714-1.4286s-0.26786-1.4286-0.26786-1.7857c0-0.35714-0.53571-1.1607-0.53571-1.1607l-1.25-1.3393-1.3393-1.3393-1.4286-0.71429-1.0714,0.17857s-0.98214,0.17858-1.0714,0.53572c-0.0893,0.35714-0.53572,0.44643-0.80358,0.80357-0.26785,0.35714-1.1607,1.3393-1.1607,1.3393l-0.53571,1.0714-0.44643,1.0714-0.80357,0.80357-0.17858,0.71429,0.35715,0.80357,0.89285,0.98214s0,0.71429,0.53572,0.80358c0.53571,0.0893,1.0714,0.0893,1.0714,0.0893h1.3393l1.25,0.625,0.71429,0.80357,0.0893,1.3393-0.26785,1.4286-0.44643,1.25-0.53572,0.71429-1.5178,0.89285-1.7857,0.89286-0.89285,0.89286,0.26785,0.80357,1.9643,0.80357,0.80357,0.98214-0.0893,0.71429-0.80357,1.0714-1.0714,1.0714-1.875,0.89286-1.7857,0.98214-3.64,1.44-1.6964,0.44643-1.9643,0.26786-0.89286-0.44643-1.25-0.71429s-0.53571-0.26786-0.89285,0c-0.35715,0.26786-0.625,0.98214-0.625,0.98214l-1.5179,1.0714-0.53571,1.6964,0.0893,1.3393s0.35714,0.71428,0.44643,1.1607c0.08,0.44,0.08,1.33,0.08,1.33l-0.0893,1.6071-0.98214,1.0714z","name":"Primorsky Krai"},"ma":{"path":"m829.64,182.46s1.0714,0.71428,2.1429,1.25c1.0714,0.53571,3.0357,2.1429,3.2143,2.8571,0.17857,0.71429,0.17857,2.3214,1.0714,2.8571,0.89286,0.53572,3.5714,1.0714,3.5714,1.0714l1.9643,0.89286,1.0714,1.7857,3.0357,1.6072s0.71429,1.0714,0.17857,1.9643c-0.53571,0.89286,0,2.6786,0,2.6786l2.5-0.35714,2.8572,0.35714,1.6071,2.3214,1.9643,2.6786,2.1429,1.0714,1.9643,2.1429,1.0714,1.9643,0.17857,2.5s-0.35715,2.5,0,3.2143c0.35714,0.71429,1.0714,3.75,1.0714,3.75l1.0714,1.7857s0.53572,1.0714,0.53572,1.7857c0,0.71428-0.89286,2.1429-0.89286,2.1429l0.17857,1.7857-1.9643-0.53571-0.35715-1.9643s0.35715-0.71429-0.53571-0.35714c-0.89286,0.35714-1.7857,1.4286-1.7857,1.4286s-0.35715,0.89286-1.0714-0.53572c-0.71429-1.4286-1.7857-1.9643-1.7857-1.9643s-1.6071-0.71429-1.6071-1.9643-1.7857-2.3214-1.7857-2.3214l-1.6072-1.4286s-0.35714,1.7857-0.35714,2.5c0,0.71429,1.4286,1.4286-0.35714,1.4286s-4.1072,0.71429-4.1072,0.71429l-0.89285,1.0714-0.35715,2.6786-1.25,1.25-2.6786,2.8571-0.35714,2.3214-1.0714,1.9643,0.53572,2.3214,1.4286,1.4286s0.53571,0.71428,0.53571,1.4286v2.6786l0.17857,1.6071,1.6072,1.4286,0.17857,4.4643v4.4643l0.17857,3.0357,1.7857,2.6786,1.0714,3.0357,0.35714,0.89285,1.9643,0.35715,1.0714-1.25,1.9643-1.0714s1.6072-0.17857,2.3214-0.17857c0.71429,0,1.6072,0.89285,1.6072,0.89285l0.17857,0.89286-1.7857,1.4286-1.7857,0.71429v1.0714l-0.71429,0.89285-1.7857,0.89286-1.25,0.53571-0.53572,0.71429-0.17857,2.6786v2.3214l-0.89285,0.71429-1.7857-0.89286-0.71428,1.4286-0.53572,2.5-1.0714,1.25-3.2143,0.71429-1.25-0.17858-0.53572-1.6071,2.5-1.6071,1.25-1.9643s1.9643-1.7857,0.53572-1.7857-2.6786,1.0714-2.6786,1.0714l-0.89286,1.25-0.89286,0.53571s-0.89286,0.35714-1.7857-0.17857c-0.89286-0.53571-2.3214-0.71429-2.3214-0.71429s-1.25,0.89286-1.25,1.4286c0,0.53571,0.35714,1.4286-0.53572,1.4286-0.89285,0-3.2143,0.17857-3.2143,0.17857l-2.5,1.6071-2.5,0.89286-1.0714,2.1429,0.35714,1.7857,0.53572,1.9643,0.35714,0.89285,1.6071,1.0714s0.17857,0.89286-1.7857,0.89286h-4.4643l-1.0714,2.1429-1.0714,1.25-2.5,0.35714-2.1429-2.8571-2.6786-1.25s-1.9643-0.71429-2.6786-0.71429c-0.71429,0-3.3929,0.17857-3.3929,0.17857l-2.1429,0.89286-1.7857,0.17857-1.25-0.89286-1.0714-1.7857-0.17857-2.3214,1.25-1.9643,0.17857-2.5-2.5-3.9286-2.3214-1.4286-2.3214-1.25-2.6786-0.71428-2.6786-0.71429-2.1429,0.71429-1.0714,1.4286-1.0714,1.9643-0.89285,1.25h-1.25l-1.25-1.9643-0.17857-0.89286,1.25-0.71429,0.35714-1.4286v-1.25l-1.25-1.25-5.7143-6.7857s-0.35714-1.0714-0.35714-1.7857v-3.2143l-1.78-0.88-0.89286-0.35714-0.17857-3.0357-0.53572-1.4286-1.0714-0.35714-0.35714-1.25,1.6071-1.4286,2.1429-0.17857,1.0714-0.53572,1.0714-1.0714,2.1429-0.17857,1.9643,0.17857,0.53572-1.0714-1.25-1.9643-1.4286-1.25-0.35714-2.1429s1.25-0.53571,1.9643-0.53571c0.71428,0,3.5714-1.0714,3.5714-1.0714l-0.17858-2.6786s0.53572-0.35714,1.25-0.35714c0.71429,0,3.9286,0.35714,3.9286,0.35714l2.1428-1.7857,4.1072-6.4286-0.17858-3.0357-1.4286-1.4286-2.6786-2.8572s-1.25-0.89285-1.4286-1.6071c-0.17857-0.71428-0.35714-1.7857-0.35714-1.7857l2.1428-2.3214,0.17858-1.6071-1.25-1.25-2.5,0.17857-0.71429-0.53572-1.0714-1.0714v-0.71429l3.06-0.86,1.25-1.0714-0.53572-1.4286-1.25-0.89285-0.17857-1.6072,2.1429-3.0357,3.75-1.25,2.1428-1.25-1.25-2.5s0.17858-0.35714,0.89286-0.35714c0.71429,0,3.3929,0.71428,3.3929,0.71428l1.0714-0.17857-0.53572-3.5714v-1.6071l1.4286-0.53572,0.2-2.66-0.17858-0.53571h2.5l1.6072,0.53571,0.53571,1.9643,1.0714,1.0714s0.53571,0.53571,1.25,0.53571,3.75-0.71428,3.75-0.71428l3.5714-0.71429,2.3214-0.35714,2.6786-1.0714,2.3214-1.4286,2.3214-0.89286,1.9643-0.17857,2.8571-0.35714,2.5-1.6072z","name":"Magadan Oblast"},"sh":{"path":"M943.16,321.59c-0.45,0.19-0.81,0.37-1.19,0.94s-0.31,1.53-0.5,1.85c-0.19,0.31-1.53,1.12-1.53,1.12-0.51,0.51-0.87,1.06-2,1.25-1.14,0.19-2.59-0.23-2.85,0.66-0.25,0.88,0.06,2.12,0.69,2.25,0.63,0.12,1.53,0.44,2.1,0.25,0.56-0.19,1.56-1.25,1.56-1.25s0.62,0.3,1,0.93c0.38,0.64,0.97,1.78,0.97,2.03,0,0.26,0.19,1.06-0.07,1.57-0.25,0.5-0.81,2.78-0.56,3.03s1.24,0.9,1.94,0.9c0.69,0,1.09,0.17,1.78-0.78,0.69-0.94,0.93-1.74,1.25-2.56s0.78-1.9,1.09-2.16c0.32-0.25,0.48-1.02-0.22-1.65-0.69-0.63-0.93-1.75-1-2.06-0.06-0.32-0.56-1.09-0.24-1.53,0.31-0.45,1.12-1.31,1-1.69-0.13-0.38-1.38-1.09-1.82-1.47s-0.96-1.82-1.4-1.63zm2.15,20.44s-0.43,0.15-0.69,0.85c-0.25,0.69-0.5,1.74-0.31,2.31s0.56,1.4,0.81,1.78c0.26,0.38,0.75,1.31,0.88,1.62,0.13,0.32,0.53,0.72,1.03,0.91,0.51,0.19,1.12,0.07,1.25-0.44,0.13-0.5,0.19-1.4,0.19-2.03s-0.19-2.15-0.19-2.53,0.07-0.87-0.31-1.31-2.66-1.16-2.66-1.16zm2.53,9.22c-0.56,0.19-1.9,0.5-2.15,0.69-0.26,0.19-0.63,0.52-0.5,1.03,0.12,0.5-0.2,1.24,0.5,1.69,0.69,0.44,2.15,0.96,2.53,1.09s0.55,0.44,1.19,0.13c0.63-0.32,1.09-0.59,1.03-1.41-0.07-0.82-0.59-1.62-0.78-1.88-0.19-0.25-1.5-1.34-1.5-1.34h-0.32zm-117,4.5l-1.87,1.25s0.5,1.12,0,1.12h-1.78s-1.26,0.78-0.5,1.29c0.76,0.5,2.4,0.87,3.03,1,0.63,0.12,1.52,0.65,2.16,1.15,0.63,0.51,1.49,0.87,1.74,1.63,0.26,0.76,0.63,2.28,0.63,2.28l0.91,1.62-0.54,2.16-1.74,0.13s-0.91-1.14-1.41-0.13c-0.51,1.01-0.5,1.77-0.5,2.41,0,0.63,0.27,1.24,0.91,1.37,0.63,0.13,1.48,0.4,2.74,1.41,1.27,1.01,2.03,2.9,2.29,3.53,0.25,0.63,0.24,2.65,0.5,3.41,0.25,0.75,1.4,2.02,2.03,2.53,0.63,0.5,2.03,2.52,2.28,3.03,0.25,0.5,1.25,2.4,1.5,2.9,0.25,0.51,1.78,1.75,1.78,1.75s1.24,1.15,2,1.66,3.8,1.37,4.56,1.37,3.03,0.66,3.28,1.16c0.26,0.51,2.78,5.66,2.78,5.66l5.57,8.34s2.52,2.15,3.15,2.66c0.64,0.5,2.4,3.9,2.91,4.65,0.51,0.76,2.12,4.44,2.5,4.94,0.38,0.51,3.69,5.06,3.69,5.06s2.77,1.88,3.4,2c0.64,0.13,3.41,1.91,3.41,1.91s2.65,2.9,2.78,3.41c0.13,0.5,0.75,3.53,0.75,3.53l2.16,3.4,3.15,2.66,2.5,5.19,0.53,2.25s0,2.15,0.5,2.53c0.51,0.38,5.29,4.06,5.29,4.06l1.65,0.88,1.78,0.25v-2.54s-0.9-1.65-1.15-2.15c-0.26-0.51-0.88-3.03-0.88-3.03s-0.5-0.74-0.5-1.63c0-0.88,0.75-2.4,0.75-2.4s1.53-0.25,2.16-0.25,1.24-0.12,2.25-0.63c1.01-0.5,2.41-0.37,2.41-0.37l2.28,2,1.37,0.78s0.5-1.4,0.5-2.03c0-0.64,0.01-1.53-0.62-2.41-0.64-0.88-1.63-1.88-1.63-1.88l-2.03-1.65s-0.99-1.38-1.75-1.25-1.15,0.24-1.41,0.75c-0.25,0.5,1.52,2.66,0,2.28-1.51-0.38-2.4-0.9-2.78-1.41-0.38-0.5-1.62-1.87-1.62-1.87s-2.4-1.28-3.03-1.53c-0.64-0.26-2.4-0.88-3.04-0.88-0.63,0-4.06-1.15-4.06-1.15l-2.12-2.38-2.41-6.31s-1.12-1.65-1.25-2.41-1.03-3.15-1.16-3.65c-0.12-0.51-0.37-2.28-0.62-2.78-0.25-0.51-1-2.29-1-2.29l-0.53-3.28,1.78-1.62s2.77-1.03,3.41-1.03c0.63,0,5.06-0.13,5.06-0.13l2.4,0.63s2,0.25,2.5,0.25c0.51,0,1.03,0.51,1.16-0.5s-1.53-2-1.53-2l-3.53-0.53-3.66-1.26-2.4-1.78-18.57-15.25-1.5-1.28-1.78-0.12s-0.87,0.13-1.25-0.63-0.4-1.27-1.15-1.9c-0.76-0.64-2.5-1.88-2.5-1.88s-1.52-0.25-2.66-0.5-3.66-1.4-3.66-1.4l-0.4-2.79-1.38-1.25-0.62-1.28,1.25-1.62-0.25-1.91-2.53-2.12-3.54-0.79s-2.4-0.99-2.65-1.5c-0.25-0.5,0.12-2.15,0.12-2.15s-0.62-1.12-1.12-1.5c-0.51-0.38-4.28-1.91-4.28-1.91l-2.91-1.9-1.03-2.63s0.01-1.91-0.63-1.91c-0.63,0-2.78-0.87-2.78-0.87zm119.16,7.94c-0.88,0.25-1.53,0.4-1.72,0.97-0.19,0.56,0.06,1.24,0.31,1.43,0.26,0.19,0.84,0.69,1.47,0.57,0.63-0.13,1.56-0.19,1.82-0.57,0.25-0.38-1.13-1.46-1.32-1.78-0.19-0.31-0.56-0.62-0.56-0.62zm1.75,4.06c-0.51,0.25-1.19,0.56-1.37,1.06-0.19,0.51,0.36,1.37,1,1.75,0.63,0.38,1.05,0.63,1.56,0.06,0.5-0.56,1.09-1.62,1.03-1.93-0.06-0.32-2.22-0.94-2.22-0.94zm0.19,6.97c-0.18,0.01-0.34,0.06-0.5,0.16-0.63,0.37-0.82,1.18-0.82,1.56s0.88,3.09,0.88,3.47-0.87,2.4-1,2.9c-0.13,0.51-0.01,1.33,0.62,2.6,0,0,1.13-0.25,1.38-0.25s1.72-0.94,1.84-1.19c0.13-0.25,0.44-2.28,0.44-2.91s-0.06-2.02-0.12-2.47c-0.07-0.44-0.63-1.4-0.63-1.78s-0.31-1.43-0.69-1.69c-0.28-0.18-0.87-0.44-1.4-0.4zm-4.41,14.53s-1.28,0.03-1.53,0.16c-0.25,0.12-0.69,0.49-0.81,0.75-0.13,0.25-0.57-0.07,0.06,0.62,0.63,0.7,1.02,1.38,1.66,1.38,0.63,0,2.06,0.65,2.31,0.65s1.03-0.21,1.22-0.47c0.19-0.25,0.75-0.49,0.31-1.18-0.44-0.7-0.97-1.06-1.22-1.19s-2-0.72-2-0.72zm1.81,6.47c-0.19,0.31-1.37,1.18-1.43,1.44-0.07,0.25-0.32,0.74-0.38,1.25-0.06,0.5-0.31,1.77-0.31,2.09s-0.53,1.59-0.78,2.16c-0.26,0.56-0.5,1.49-0.44,2.12s-0.07,1.09,0.19,1.66c0.25,0.57,0.24,1.18,0.56,1.37s-0.04,1.29,1.09,0.6c1.14-0.7,1.63-1.34,1.82-1.79,0.19-0.44,0.53-2.09,0.72-2.34,0.18-0.25,0.56-1.43,0.68-1.81,0.13-0.38,0.63-1.9,0.63-2.22s0.06-1.59-0.25-2.22c-0.32-0.63-1.19-1.31-1.19-1.31l-0.91-1zm-4.9,15.4c-0.26,0.07-0.97,0.19-1.28,0.44-0.32,0.26-0.63,0.56-0.69,0.75s-0.5,0.94-0.5,1.19,0.06,1.15,0,1.41c-0.06,0.25,0,0.56-0.56,0.81-0.57,0.25-1.22,0.43-1.6,0.56s-0.81,0.44-1.06,0.69-0.94,0.72-0.94,0.72-0.53,0.18-0.53,0.5c0,0.31,0.41,0.99,0.53,1.25,0.13,0.25,0.75,1.22,0.75,1.22l-0.18,0.75s-1.04,0.74-1.1,1.06c-0.06,0.31-0.12,1.59-0.12,1.97s0.06,1.74,0.06,2c0,0.25,0.19,1.84,0.19,2.09s0.15,1.34,0.28,1.97c0.12,0.63,0.12,1.06,0.43,1.44,0.32,0.38,0.56,1.03,0.88,1.22s0.5,0.68,0.88,0.62c0.37-0.06,1.71-1.03,1.71-1.03s0.63-0.62,0.75-1.06c0.13-0.44,0.44-2.16,0.44-2.16s0.19-1.37,0.13-1.69c-0.07-0.31-0.69-0.65-0.75-1.22-0.07-0.56-0.07-0.8,0-1.68,0.06-0.89,0.87-2.09,1.06-2.35,0.19-0.25,0.84-1.18,0.97-1.93,0.12-0.76-0.07-1.84,0.19-2.16,0.25-0.32,0.8-0.75,1.06-1.06,0.25-0.32,1.06-1.65,1.18-2.03,0.13-0.38,0.13-1.4,0.13-1.91s-0.31-1.37-0.56-1.56c-0.26-0.19-1.75-0.82-1.75-0.82zm-8.35,23.69c-0.31-0.01-0.62,0-0.75,0.03-0.25,0.07-0.56,0-0.81,0.32-0.25,0.31-0.78,0.71-1.22,0.84s-0.87,0-0.93,0.31c-0.07,0.32-0.26,0.87-0.26,1.13,0,0.25,0.06,0.74,0.32,1,0.25,0.25,0.62,0.21,0.75,0.78,0.12,0.57,0.19,1.18,0.12,1.44-0.06,0.25-0.31,1.12-0.37,1.43-0.07,0.32-0.19,0.4-0.38,1.03-0.19,0.64-0.31,1.38-0.31,1.76v1.15c0,0.38-0.06,1.19,0.13,1.44,0.18,0.25,0.62,0.56,0.87,0.81s1.47,0.47,1.72,0.47,0.5-0.28,0.75-0.66,0.56-0.99,0.56-1.56-0.12-2.96-0.06-3.28,1.12-0.84,1.19-1.41c0.06-0.56,0.03-1.74,0.09-2,0.06-0.25,0.31-1.15,0.31-1.15s0.75-0.44,0.88-0.81c0.12-0.38,0.25-1.13,0.25-1.5,0-0.38-0.19-1.54-0.19-1.54h-1.84c-0.19,0-0.5-0.02-0.82-0.03zm7.85,1.88c-0.57,1.01-0.72,0.99-0.78,1.75-0.07,0.76-0.88,1.53-0.88,1.53s-0.31,0.31-0.44,0.62c-0.12,0.32-0.69,0.81-0.06,1s1.72,0.19,1.97,0.07c0.25-0.13,0.75-0.69,1-0.82,0.25-0.12,0.44-0.49,0.44-1.37,0-0.89-0.19-1.9-0.31-2.16-0.13-0.25-0.94-0.62-0.94-0.62z","name":"Sakhalin Oblast"},"ka":{"path":"M888.56,146.75l-1.65,0.84c-0.26,0.13-1.25,0.88-1.25,0.88l-0.13,1,0.13,2.78,0.25,1.16-0.88,2.43-1.72,4.69-0.93,1.56-0.44,1.41-0.06,1.81s-0.22,1.03-0.47,1.22c-0.26,0.19-0.82,0.13-0.82,0.13h-1.81-2.59l-1.6-0.19-1.68-0.31s-0.53,0.25-0.85,0.25c-0.31,0-0.68,0.56-1,0.75-0.31,0.19-1.37,0.74-1.56,1-0.19,0.25-1.28,0.78-1.59,0.9-0.32,0.13-1.38,1-1.63,1.19s-0.78,0.56-1.22,0.63c-0.44,0.06-0.94-0.32-0.94-0.32s-0.62-0.99-0.74-1.25c-0.13-0.25-0.97-1.72-0.97-1.72s-0.07-1.31-0.13-1.62c-0.06-0.32-0.06-1.47-0.12-1.72-0.07-0.25-0.13-1.06-0.13-1.06s0.25-1.22,0.31-1.66c0.07-0.44,0.38-0.75,0.38-0.75s0-0.56-0.19-0.87c-0.19-0.32-0.81,0.06-0.81,0.06l-1.75,0.44-1.97,0.81-1.66,0.5-1.18,0.19-2.04-0.25s-1.62-0.38-1.87-0.57-1.03-0.12-1.03-0.12l-0.63,0.56-0.87,1.16-0.63,0.81-0.84,0.88s-1.31,0.74-1.56,0.87c-0.26,0.13-0.94,0.59-0.94,0.59l-1.22,1.32-1.44,2.28s-2.27,2.28-2.59,2.47-1.18,0.87-1.44,1.12c-0.25,0.25-1.34,0.38-1.72,0.44s-0.74,0.62-1,0.94c-0.25,0.31-1.15,1.28-1.15,1.28l-0.81,0.56s-0.75-0.31-1.13-0.31-0.44,0.31-0.44,0.31l-0.97,1.91-1,2.18s-0.5,1.59-0.5,1.91,0.63,0.44,0.88,0.63c0.25,0.18,1.65,0.8,2.03,1.06,0.38,0.25,1,0.84,1.31,1.15,0.32,0.32,1.41,1.32,1.41,1.32s-0.13,0.43-0.06,0.68c0.06,0.26,0.37,1.15,0.68,1.66,0.32,0.51,0.94,0.81,0.94,0.81s4.09,1.16,4.35,1.28c0.25,0.13,1.09,1.32,1.09,1.32l0.37,0.68s1.13,0.85,1.44,1.04c0.32,0.18,1.22,0.31,1.22,0.31l0.62,0.62,0.44,1.19s-0.31,1.59-0.37,1.97c-0.07,0.38-0.07,0.99,0,1.37,0.06,0.38,1.12-0.06,1.12-0.06s1.4-0.31,1.97-0.25,1.56,0.25,1.56,0.25,1.22,0.4,1.35,0.66c0.12,0.25,0.75,1.18,0.75,1.18l1.15,1.5,1.25,1.72,1.85,1.32,2,1.65,1,1.31s0.84-0.99,1.03-1.31c0.19-0.31,0-0.74,0-1.19,0-0.44-0.37-0.71-0.75-0.96-0.38-0.26-0.97-1.19-1.35-1.63-0.37-0.44-0.56-0.84-0.56-0.84s-0.81-1.06-1.06-1.31c-0.25-0.26-1.09-0.94-1.34-1.19-0.26-0.26-1.25-1.34-1.69-1.97s0-0.75,0-1.06c0-0.32,0.87-1.04,0.87-1.04s0.94-1.3,1.19-1.62,0.44-1.21,0.5-1.59,0.47-1.31,0.85-1.5c0.37-0.19,1.18-0.38,1.68-0.44,0.51-0.06,1.84,0.5,1.97,0.81,0.13,0.32-0.62,0.69-0.75,0.94-0.12,0.25,0,1.59-0.06,2.16-0.06,0.56,0.12,1.71,0.12,2.28,0,0.56,0.75,1.37,0.75,1.37s1.13,1.4,1.44,1.72c0.32,0.32,1.28,0.93,1.59,1.19,0.32,0.25,1.57,1.65,1.57,1.65l3.34,2.32,0.97,0.59s0.75,1.25,0.81,1.69c0.07,0.44,0.44,0.93,0.44,0.93s1.03,0.22,1.34,0.47c0.32,0.26,0.63,1.31,0.63,1.69s-0.12,1.03-0.44,1.47c-0.31,0.44-1.21,0.93-1.53,1.25s-0.69,0.75-0.69,0.75-0.06,5.68-0.06,6.25,0.75,1.78,1,2.16,1.21,2.14,1.72,2.9c0.5,0.76,0.69,1.12,0.69,1.44s0.25,1.66,0.25,1.66,0.56,10.46,0.62,11.09,0.59,1.03,0.78,1.41,0.75,0.93,1,1.18c0.26,0.26,0.75,0.84,0.88,1.16,0.12,0.32,0.97,1.62,0.97,1.62s0.74,2.78,0.87,3.54c0.13,0.75,0.13,1.72,0.13,1.72s1.31,3.96,1.31,4.4v1.47s-0.81,1.75-1.13,2.13c-0.31,0.37-0.06,1.77-0.06,2.09,0,0.31-1.34,2.46-1.84,2.84-0.51,0.38-1.31,1-1.44,1.38s0.25,1.03,0.25,1.03l1.81,0.87,2.28,0.94s1.09,2.15,1.47,2.66c0.38,0.5,0.56,1.59,0.56,1.9,0,0.32,0.32,3.47,0.44,4.16,0.13,0.69,0.38,1.65,0.56,2.09,0.19,0.45,1.79,1.5,1.79,1.5s2.21,3.94,2.34,4.25c0.13,0.32,0.81,1.69,1.06,2,0.08,0.1,0.29,0.25,0.53,0.41,0.62,0.78,3.07,1.94,3.07,1.94l0.93,0.62s4.63,4.25,4.69,4.5c0.06,0.26,2.78,2.32,2.78,2.32s2.34,0.84,2.6,1.03c0.25,0.19,1.68,0.75,1.68,0.75l14.91,10.22,2.03,1.21,3.03,0.94s1.19,1.59,1.44,1.72,3.15,1.19,3.59,1.19c0.45,0,1.47,1,1.47,1s2.59,2.78,2.97,3.03,2.56,1.91,2.56,1.91,2.09,1.18,2.47,1.18,2.85-0.5,2.85-0.5l0.68-0.62v-2.03s-0.06-1.69-0.06-1.88,0-1.21-0.25-1.53-0.81-0.88-0.81-0.88,0.18-1.52,0.44-1.96c0.25-0.45,0.43-0.69,0.43-1.07s-0.31-1.15-0.56-1.4c-0.25-0.26-0.5-1.19-0.5-1.19s-0.06-2.34-0.31-2.66c-0.25-0.31-1.09-0.99-1.28-1.62s-0.5-1.03-0.63-1.41c-0.12-0.38-1.37-1.62-1.62-2.06-0.26-0.44-1.53-1.59-1.72-1.84-0.19-0.26-0.31-1.28-0.5-2.1s-1.02-0.75-1.78-0.75-1.12-0.06-1.38-0.25c-0.25-0.19,0.5-0.43,0.75-0.56,0.26-0.13,1.09-0.9,1.28-1.22,0.19-0.31,0.5-1.37,0.5-1.37l0.69-4.22,1.91-1.6c0.38-0.31,0.25-0.93-0.19-1.31s-1.09-0.25-1.41-0.31c-0.31-0.06-0.8-0.84-1.31-1.16-0.5-0.31-0.84-0.81-1.28-1s-1.24-0.31-2.06-0.56-1.4-1.03-1.91-1.47c-0.5-0.44-0.44-1-0.5-1.25s-0.06-1.96-0.06-2.84v-1.22s-0.97-2.78-0.97-3.1c0-0.31,0.03-1.05,0.16-1.43,0.12-0.38,0.49-0.69,0.75-0.94,0.25-0.25,1.43-0.78,1.43-0.78l1.47-0.88s0.38-1.71,0.38-2.59-0.5-2.25-0.63-2.56c-0.12-0.32-1.34-0.72-1.34-0.72s-1.5-1.19-1.94-1.19-2.46-0.56-2.9-0.69c-0.45-0.12-1.6-0.78-1.85-0.9-0.25-0.13-1.71-1.25-2.09-1.56-0.38-0.32-1.25-1.1-1.5-1.41-0.26-0.32-0.75-1.44-0.88-1.75-0.12-0.32-0.84-1.66-0.84-1.66s0-0.55-0.13-1.12c-0.12-0.57-0.18-1.65-0.18-2.41s1.02-0.62,1.28-0.62c0.25,0,1.68-0.25,2-0.32,0.31-0.06,1.03-0.74,1.22-1,0.19-0.25,0.37-1.77,0.31-2.09s-0.65-0.81-1.22-1-0.94-0.78-1.12-0.84c-0.19-0.07-2.16-0.88-2.16-0.88s-2.06-0.69-2.5-0.75-0.59,0.44-0.84,0.63c-0.26,0.19-0.5,0.37-1.32,0.37s-1.22-0.44-1.22-0.44l-0.87-1.18s-1.18,0.06-1.81,0.06c-0.64,0-0.91-0.59-1.16-0.91-0.25-0.31-1.06-0.56-1.06-0.56s-0.47-0.19-0.69-0.28c0-0.06,0.19-3.44,0.13-3.69-0.07-0.25-0.66-1.21-0.91-1.47-0.25-0.25-1.37-0.44-1.94-0.44s-1.4,0.6-1.84,0.85-1.06,0.75-1.31,0.94c-0.26,0.19-0.13,1.12-0.13,1.68,0,0.57-0.34,1.03-0.72,1.35-0.38,0.31-0.68,0.25-1.31,0.25s-1.12-0.19-1.63-0.31c-0.5-0.13-0.77-0.56-1.03-0.82-0.25-0.25-1.06-0.96-1.37-1.47-0.32-0.5-0.19-1.05-0.25-1.62-0.07-0.57-0.84-1.65-1.1-2.16-0.25-0.5-1.24-2.34-1.37-2.59s-0.56-1.28-1-1.91-0.9-1.99-1.28-2.62-0.74-1.09-1.5-2.1-0.78-0.56-1.35-0.68c-0.56-0.13-0.99-0.78-1.5-1.35-0.5-0.57-0.84-0.93-1.15-1.75-0.32-0.82-0.37-0.83-0.94-2.15-0.57-1.33-0.07-1.09,0.19-1.66,0.25-0.57,1.06-0.62,1.06-0.62l0.47-0.88s-0.38-1.59-0.31-2.09c0.06-0.51,0.36-0.56,1.06-0.75,0.69-0.19,1.56,0.75,1.94,0.75s1.59-0.5,1.9-0.82c0.32-0.31,0.32-1.08,0.32-1.71,0-0.64-0.62-1-1.13-1.13s-0.94-0.56-0.94-1.06c0-0.51,0.25-1.21,0.25-1.91,0-0.69,0-0.74-0.06-1.25-0.06-0.5-0.12-0.53-0.25-0.91-0.13-0.37,0.06-1.18,0.19-1.68,0.12-0.51,0.56-0.44,0.94-0.38,0.37,0.07,1.24,0.69,1.62,0.94s0.65,0.62,0.84,1,1,1.09,1.63,1.16c0.63,0.06,1.15-0.38,1.15-0.38s-0.09-0.52-0.34-1.09-0.81-1.44-1-1.81c-0.19-0.38-0.5-1.22-0.75-1.6s-0.44-0.5-0.44-0.75,0.69-2.09,0.69-2.41v-3.78c0-0.82,0.19-1.4,0.38-1.72,0.19-0.31,0.87-1.24,1.25-2.06s0.84-1.15,1.09-1.9c0.25-0.76,0.87-1.4,1.44-2.16s0.77-1,1.15-1.12c0.38-0.13,2.91,0.06,3.29,0.06,0.37,0,1.96-0.44,2.65-0.56,0.7-0.13,2.71-0.31,3.41-0.57,0.69-0.25,0.25-0.59,0.18-0.84-0.06-0.25-1.27-0.94-1.65-1.06-0.38-0.13-1.12-0.69-1.38-0.94-0.25-0.25-0.5-1.16-0.5-1.16s-0.59-2.96-0.65-3.28c-0.07-0.31-0.75-1.56-0.75-1.56s-0.13-5.18-0.13-5.63c0-0.44-0.68-2.02-1.37-2.34-0.7-0.32-0.91-0.99-0.91-1.5s0-0.96-0.12-1.59c-0.13-0.64-0.75-1.37-1-1.88-0.26-0.5,0.12-0.78,0.12-1.22s-0.12-1.18-0.5-1.5c-0.38-0.31-0.68-0.49-0.94-0.75-0.25-0.25-0.46-0.9-0.46-1.53s0.28-1,0.34-1.31c0.06-0.32,0.06-1.09-0.06-1.53-0.13-0.44-0.35-1.06-0.41-1.31-0.06-0.26-0.37-1.22-0.37-1.22s-0.5-0.44-0.69-0.44-0.94-0.19-0.94-0.19l-1.78-0.31s-1.69-0.44-1.81-0.69c-0.13-0.25-1.04-0.69-1.04-0.69l-1.56-0.59zm7.25,70.22c-0.88,0.44-1.12,0.43-1.06,1s0.37,1.09,0.63,1.47c0.25,0.38,0.44,0.93,0,1.44-0.45,0.5-1.45,0.52-1.19,1.15,0.25,0.63,0.49,1.06,0.75,1.31,0.25,0.26,0.81,0.9,0.94,1.41,0.12,0.51-0.01,1.06,0.31,1.56,0.31,0.51,0.31,0.69,0.69,0.69,0.37,0,0.59,0.32,0.65-0.5s-0.06-0.95,0-2.84c0.06-1.9,0-2.84,0.06-3.41,0.07-0.57,0.26-1.37,0-1.75-0.25-0.38-1.28-0.9-1.4-1.22-0.13-0.31-0.38-0.31-0.38-0.31zm58.91,12.47c-1.07,0.71-1.16,0.62-1.16,1.15,0,0.54-0.18,0.9,0.53,0.72,0.72-0.18,0.91-0.18,1-0.62,0.09-0.45-0.37-1.25-0.37-1.25zm-10.97,4.53c-0.63,0.45-1.08,0.2-0.81,1.09,0.27,0.9,0.44,1.16,1.15,1.25,0.72,0.09,0.73,0.1,2.07,0.1s2.31,0.06,3.03,0.06c0.71,0,0.99,0.36,1.43,0,0.45-0.36,0.63-0.07,0.54-0.78-0.09-0.72-1.24-0.9-2.22-0.81-0.98,0.08-1.52,0.34-3.13-0.19-1.6-0.54-2.06-0.72-2.06-0.72z","name":"Kamchatka Krai"},"in":{"path":"m33.393,395.68,0.08929,5.2679,17.946-8.5714-1.3393-1.25-2.9464-1.25-1.5179-1.9643-2.4107,2.4107-4.1071-2.6786-1.875,1.0714,0.08929,5.8929-1.5179,1.0714z","name":"Republic of Ingushetia"},"cc":{"path":"m33.482,401.04,1.0714,2.5,3.125,1.6964,3.4821,0.44642,2.1429-1.9643,2.1429,1.7857,2.5-1.5178-0.08929-1.6072,1.875-2.1428,2.8571,0.44642,3.8393-2.8571-0.625-1.9643-4.4643-0.53572,0.44643-2.7679z","name":"Chechen Republic"}}});
Index: public/vendors/vmap/maps/jquery.vmap.serbia.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.serbia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.serbia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+/*
+ * Map of Serbia
+ * @author: Đorđe Jocić <http://www.djordjejocic.com/>
+ * @source: https://upload.wikimedia.org/wikipedia/commons/2/29/Serbia_location_map_%28with_Kosovo%29.svg
+ */
+jQuery.fn.vectorMap("addMap", "serbia", { "width" : 1041, "height" : 726, paths : { "1" : { path : "m 81.383968,195.26246 c -1.823902,-2.05385 -3.527788,-2.48647 -7.350116,-1.86619 -3.243695,0.52638 -4.97581,0.25634 -4.97581,-0.77574 0,-0.87077 -0.867873,-1.58321 -1.928607,-1.58321 -1.060735,0 -2.676438,-0.90108 -3.590451,-2.00239 -1.329163,-1.60155 -1.083213,-2.31208 1.228596,-3.54932 1.939672,-1.03808 2.89044,-2.93576 2.89044,-5.76916 0,-3.50736 -0.835116,-4.57118 -4.932351,-6.28312 -2.712792,-1.13347 -6.177847,-3.30636 -7.700122,-4.82864 -3.493756,-3.49375 -5.095129,-3.48667 -7.292746,0.0323 -2.274158,3.6415 -6.675203,3.68737 -6.675203,0.0696 0,-1.50176 -0.947575,-3.26076 -2.105722,-3.90889 -1.767308,-0.98904 -1.823558,-1.78596 -0.350006,-4.95873 0.965644,-2.07916 2.616708,-3.78521 3.66903,-3.79122 1.222386,-0.007 1.648896,-1.02207 1.181087,-2.81097 -0.481493,-1.84123 -0.04295,-2.80004 1.280675,-2.80004 2.859541,0 3.819238,-3.46074 1.935677,-6.98021 -1.034084,-1.9322 -1.129416,-3.58959 -0.268009,-4.65947 0.735334,-0.91329 1.386069,-4.65308 1.446076,-8.31064 0.102944,-6.27442 -0.105505,-6.66264 -3.689856,-6.87193 -2.08943,-0.122 -4.954049,-0.12012 -6.365821,0.004 -1.411771,0.12431 -3.616806,-0.38672 -4.900077,-1.13562 -2.159425,-1.26022 -2.154392,-1.36482 0.06756,-1.40422 3.240997,-0.0575 5.562276,-4.78812 5.033215,-10.25742 -0.360048,-3.72209 -1.089069,-4.56078 -4.283945,-4.92839 -4.498279,-0.51758 -5.072381,-2.41084 -1.050017,-3.46271 3.148018,-0.82323 3.712813,-5.066916 1.050017,-7.88948 -1.400022,-1.484023 -1.400022,-1.983365 0,-2.496705 0.962515,-0.352924 1.750028,-1.743748 1.750028,-3.090722 0,-2.173398 0.901753,-2.326671 8.011908,-1.361803 4.406551,0.597982 8.344113,0.751553 8.750139,0.341268 0.406028,-0.410283 0.738231,-2.422513 0.738231,-4.471622 0,-3.387082 0.545066,-3.764986 5.997993,-4.158496 l 5.997994,-0.432843 -0.90488,-4.823417 c -0.632567,-3.371879 -0.207157,-5.888274 1.413629,-8.361907 2.668451,-4.072569 4.995542,-3.396732 4.995542,1.450812 0,4.644893 1.63622,5.266505 13.499039,5.128383 12.912352,-0.150342 16.123706,1.035628 20.062856,7.409306 2.54071,4.110946 2.79388,5.429681 1.37144,7.143614 -1.34036,1.61504 -1.37247,2.918411 -0.13861,5.626433 0.88322,1.938458 1.60585,5.93559 1.60585,8.882509 0,4.49765 0.99322,6.3206 6.18518,11.35226 3.65722,3.54431 6.52483,7.76481 7.01621,10.32633 0.56123,2.92564 2.46374,5.38985 5.85995,7.59005 l 5.02892,3.25793 3.00511,-2.80244 c 2.93321,-2.7354 3.0812,-2.7404 6.18525,-0.20911 1.86039,1.5171 2.58665,2.96015 1.75003,3.4772 -2.40765,1.48802 -1.58952,6.07942 1.2435,6.97859 5.85103,1.85704 6.23198,4.47541 1.50665,10.35546 -3.67212,4.56945 -4.28872,6.30405 -3.50667,9.86471 0.81733,3.72129 0.55434,4.32034 -1.89669,4.32034 -1.87586,0 -3.63801,1.66988 -5.17084,4.90008 -2.50374,5.27624 -3.48321,5.70666 -7.76796,3.41353 -3.94025,-2.10876 -11.0385,1.17311 -11.0385,5.10364 0,1.80138 -1.40628,3.57431 -3.64373,4.59376 -3.17851,1.44823 -3.57738,2.35595 -3.12405,7.1095 0.49976,5.2405 0.34434,5.46976 -4.0564,5.98352 -2.51684,0.29383 -4.576068,0.0732 -4.576068,-0.49032 0,-1.79731 -5.906301,-2.98306 -6.89449,-1.38414 -1.810947,2.93017 -9.043306,3.05257 -11.580074,0.19597 z", name : "Западна Бачка" }, "2" : { path : "m 156.11128,153.54035 c -4.69128,-2.21669 -6.82217,-3.90406 -5.75956,-4.56079 2.8389,-1.75454 0.30363,-8.1903 -3.61377,-9.1735 -3.62269,-0.90924 -4.47918,-2.58604 -2.07871,-4.06962 2.64652,-1.63563 1.39262,-4.6298 -3.14097,-7.50026 -4.07353,-2.57918 -4.86045,-2.66585 -7.64405,-0.84196 -2.46648,1.61609 -3.83257,1.7008 -6.65918,0.41291 -3.23275,-1.47294 -4.18524,-3.40427 -3.72306,-7.54912 0.0906,-0.81301 -2.98474,-4.49665 -6.83423,-8.18586 -5.8145,-5.57241 -7.01572,-7.57324 -7.09746,-11.822 -0.0541,-2.812893 -0.60627,-6.37437 -1.227,-7.914395 -0.62278,-1.545102 -0.54132,-3.536818 0.18174,-4.443946 1.69083,-2.12123 -0.0728,-11.648795 -2.1622,-11.680503 -0.87682,-0.0133 -3.02859,-2.060838 -4.7817,-4.550072 l -3.187487,-4.525879 3.755687,-3.026621 c 2.7491,-2.215437 4.96352,-2.830617 8.26226,-2.295304 3.76926,0.611665 5.45148,-0.122348 10.28197,-4.486407 3.17647,-2.869746 5.77539,-5.972741 5.77539,-6.895543 0,-0.922802 2.20504,-2.729331 4.90008,-4.014506 5.09017,-2.427332 6.09392,-4.828206 3.22005,-7.70207 -1.30668,-1.306688 -1.19935,-1.680027 0.48303,-1.680027 1.18968,0 3.2444,-1.194881 4.56605,-2.65529 1.83731,-2.030202 3.65837,-2.486911 7.73561,-1.940039 3.16448,0.424447 5.72459,0.08099 6.29674,-0.844765 1.85595,-3.003006 8.78899,-1.666427 13.32231,2.56833 2.43068,2.270591 5.80486,4.552732 7.49818,5.071425 1.69332,0.518693 3.86312,1.570505 4.82178,2.337362 1.20062,0.9604 2.87058,0.655482 5.36642,-0.979855 3.43037,-2.247666 3.72669,-2.237843 5.56257,0.184397 2.49419,3.290814 2.47993,3.940839 -0.13405,6.110247 -1.49939,1.244381 -1.88827,3.042102 -1.26848,5.863984 0.91492,4.165571 -1.54395,12.284649 -3.72041,12.284649 -2.71457,0 -5.57227,10.525781 -4.93475,18.176116 0.53917,6.470088 0.1633,8.241909 -2.31487,10.912126 -2.91734,3.143431 -2.92223,3.249327 -0.35043,7.603026 1.43446,2.42835 3.01702,6.34891 3.5168,8.71235 0.56274,2.6612 1.68074,4.16983 2.93662,3.9627 1.11537,-0.18396 2.86992,1.56769 3.899,3.89255 2.42167,5.47092 0.63085,7.72769 -6.93775,8.74285 -3.13223,0.42012 -6.08056,1.14945 -6.55183,1.62073 -0.83951,0.8395 -1.8573,7.50231 -1.8791,12.30119 -0.006,1.33236 -0.60093,2.78707 -1.32194,3.23268 -0.72101,0.44561 -1.31094,2.87693 -1.31094,5.40293 0,7.12551 -4.36667,8.37875 -13.74836,3.94578 z", name : "Северна Бачка" }, "3" : { path : "m 270.27719,158.19471 c -2.97345,-2.17424 -3.09633,-3.55797 -0.31596,-3.55797 1.15502,0 2.10004,-1.13401 2.10004,-2.52004 0,-3.0977 2.62067,-5.88009 5.53833,-5.88009 3.24993,0 6.41793,-7.90221 4.22655,-10.54266 -0.93918,-1.13165 -2.45879,-2.05754 -3.37691,-2.05754 -1.97313,0 -6.38797,-8.71674 -6.38797,-12.61253 0,-2.57469 -0.89057,-2.68455 -16.95907,-2.09217 -9.79779,0.36121 -17.77879,1.30552 -18.9003,2.23629 -2.23264,1.85293 -2.62785,6.86832 -0.54121,6.86832 2.02061,0 1.7258,3.8535 -0.35001,4.57501 -0.96251,0.33456 -3.53089,-0.87296 -5.7075,-2.68337 -2.86016,-2.37896 -5.70009,-3.29166 -10.2422,-3.29166 -3.4566,0 -7.47818,-0.63872 -8.93685,-1.41937 -1.45867,-0.78066 -6.29512,-1.67679 -10.74768,-1.99141 -5.45991,-0.3858 -8.11784,-1.17715 -8.16402,-2.43069 -0.12405,-3.36757 -3.86597,-9.55877 -5.77726,-9.55877 -1.03142,0 -1.8753,-0.92979 -1.8753,-2.0662 0,-1.13641 -1.25767,-4.12895 -2.79482,-6.6501 -3.49323,-5.729439 -3.48458,-6.279659 0.11679,-7.422688 2.6779,-0.849932 2.84252,-1.6128 1.97009,-9.129728 -1.059,-9.124386 1.08538,-18.131978 4.31657,-18.131978 1.0953,0 1.99145,-1.222838 1.99145,-2.717419 0,-1.494581 0.70201,-3.151284 1.56002,-3.681563 0.92813,-0.573613 1.26861,-3.136781 0.84058,-6.327959 -0.48611,-3.624225 -0.0839,-5.891231 1.24003,-6.99003 2.57874,-2.140167 2.493,-6.097804 -0.18017,-8.316342 -1.85407,-1.538741 -1.43365,-2.209778 3.15005,-5.027809 3.26173,-2.005296 7.53349,-3.268819 11.14241,-3.295762 5.01948,-0.03747 5.91641,0.404772 6.3001,3.106356 0.58335,4.107479 7.84773,5.268715 10.47581,1.674596 1.64065,-2.243724 2.01367,-2.253645 5.24046,-0.139372 2.17462,1.424865 4.95563,1.979992 7.43497,1.484123 2.91555,-0.583109 4.65629,-0.02379 6.59575,2.119301 1.44917,1.601314 3.23445,2.91148 3.96729,2.91148 0.73284,0 4.32757,3.190214 7.98829,7.089363 6.0492,6.443207 9.84562,14.136688 9.84562,19.952246 0,3.626909 8.76498,9.358969 14.31095,9.358969 5.58759,0 7.02349,1.322535 9.37858,8.638149 2.22708,6.917964 4.42858,8.580365 9.04069,6.826841 3.31819,-1.261571 3.67035,-1.078269 3.67035,1.910419 0,2.394165 1.33498,3.939367 4.84061,5.602907 6.68155,3.1706 7.69529,5.23019 7.77827,15.80292 0.0133,1.69436 0.6513,3.46825 1.41779,3.94196 0.86535,0.53482 0.59189,2.00591 -0.72144,3.88096 -1.16328,1.66081 -2.11505,4.81777 -2.11505,7.01547 0,3.70444 -0.35301,3.96541 -4.8411,3.57873 -3.81304,-0.32851 -5.92799,0.54518 -9.95927,4.11421 -5.18282,4.58852 -5.33867,5.3632 -2.73696,13.60475 0.81614,2.58534 0.36448,2.77446 -5.51008,2.30724 -3.62912,-0.28864 -8.67646,0.40228 -11.66021,1.59614 -4.27772,1.7116 -5.7127,1.77487 -7.6771,0.33847 z", name : "Северни Банат" }, "4" : { path : "m 140.46136,260.78201 c -2.69384,-0.77215 -5.24516,-1.96581 -5.6696,-2.65256 -0.42444,-0.68676 -3.04515,-1.4157 -5.82381,-1.61987 -4.41211,-0.3242 -5.14148,-0.90328 -5.7577,-4.57129 -1.84156,-10.96187 -2.41936,-11.4224 -15.34277,-12.22866 -9.648251,-0.60193 -13.97112,-1.70023 -23.562717,-5.98649 -13.179998,-5.88983 -16.646743,-8.38936 -16.646743,-12.00231 0,-3.85303 -3.942665,-6.88313 -8.956102,-6.88313 -2.952184,0 -5.627636,-1.14067 -7.600121,-3.24028 -3.947771,-4.20221 -3.8567,-4.64732 1.155979,-5.64986 3.249004,-0.6498 4.200066,-1.59136 4.200066,-4.15808 0,-1.82494 -1.26002,-4.45838 -2.800044,-5.85208 -1.753236,-1.58666 -2.739329,-4.15395 -2.63764,-6.86709 0.08932,-2.3832 0.423662,-3.37004 0.742978,-2.19299 0.319315,1.17706 1.905691,2.96766 3.52528,3.97911 2.440067,1.52384 3.170743,1.51698 4.263685,-0.0401 1.029267,-1.46634 1.474949,-1.49468 2.029072,-0.12904 0.390553,0.96251 1.622382,1.75003 2.737399,1.75003 1.115017,0 2.405715,0.98611 2.868215,2.19137 0.545199,1.42077 2.375961,2.10937 5.206143,1.95819 6.826192,-0.36465 7.86529,-0.0915 7.86529,2.06791 0,1.10958 0.51053,2.33293 1.13451,2.71857 1.779056,1.09952 12.865713,-2.10888 12.865713,-3.72324 0,-0.79569 1.102517,-0.48058 2.450039,0.70025 1.813891,1.58951 4.085848,1.91301 8.750138,1.24591 l 6.3001,-0.90105 -0.43104,-5.80894 c -0.35928,-4.84183 0.0486,-5.96117 2.45004,-6.72336 1.79444,-0.56953 2.88108,-2.11417 2.88108,-4.0954 0,-4.47947 5.64575,-6.94272 9.58642,-4.18258 3.70723,2.59665 7.93769,0.30605 9.91606,-5.3691 0.85207,-2.44424 2.35863,-3.87891 4.07329,-3.87891 2.75757,0 5.32711,-5.80732 3.72007,-8.40757 -0.92285,-1.4932 2.21365,-6.99268 3.9881,-6.99268 0.66547,0 4.33143,1.56784 8.14658,3.48408 6.46376,3.24656 7.26501,3.34687 11.7535,1.47146 4.18531,-1.74873 4.81687,-2.65362 4.81687,-6.90151 0,-2.68889 0.62037,-5.2723 1.3786,-5.74091 0.75822,-0.46861 1.36551,-2.23832 1.34952,-3.93268 -0.0763,-8.07943 0.77917,-10.0165 4.972,-11.25878 2.31004,-0.68443 6.33986,-2.15071 8.95517,-3.25839 4.98674,-2.11206 19.02579,-1.36048 20.54642,1.09996 0.42027,0.68002 4.09437,1.23639 8.16465,1.23639 5.62249,0 8.00932,0.67273 9.93452,2.80005 2.11995,2.34252 2.184,2.80004 0.39199,2.80004 -2.73223,0 -4.49088,8.0917 -2.32569,10.7006 1.6384,1.97416 0.89103,2.40472 -3.39987,1.95868 -3.35623,-0.34889 -6.56662,2.44389 -6.56662,5.71244 0,1.75988 1.04107,2.66515 3.15005,2.73914 1.73252,0.0608 2.36253,0.4283 1.40002,0.81669 -4.24365,1.71234 -1.20165,7.88101 4.55007,9.22678 2.396,0.56061 2.17988,0.89246 -1.49766,2.29967 -4.19998,1.60713 -4.3018,1.86623 -4.47852,11.3957 -0.0994,5.36314 0.40981,9.75117 1.13166,9.75117 2.13145,0 6.94455,-4.66296 6.94455,-6.72791 0,-2.8577 2.84927,-1.35077 6.571,3.47528 l 3.31175,4.29442 -4.94137,2.34484 c -6.47145,3.07089 -6.65089,7.20992 -0.38756,8.9393 5.04576,1.39321 9.3786,1.34669 11.76189,-0.12626 0.89628,-0.55394 1.86759,0.18431 2.27071,1.72588 0.4055,1.55066 -0.1211,3.01068 -1.24085,3.44037 -2.19367,0.84179 -2.68208,5.03444 -0.58647,5.03444 0.78253,0 1.02663,2.37514 0.57556,5.60009 -0.68019,4.86287 -0.42902,5.60008 1.90787,5.60008 3.80086,0 4.64561,1.2975 2.78472,4.27725 -1.36024,2.17811 -0.82394,3.33715 3.47699,7.51416 6.20877,6.02988 7.67468,9.98699 4.87485,13.15932 -1.14059,1.29234 -2.51523,5.04174 -3.05474,8.33201 l -0.98092,5.9823 -4.56903,-4.01166 c -3.58532,-3.14795 -6.46798,-4.21014 -13.38903,-4.93353 -7.77672,-0.81283 -9.04723,-0.59746 -10.74103,1.82078 -2.28363,3.26034 -6.04447,2.30599 -6.04447,-1.53386 0,-1.48181 -0.89412,-3.03731 -1.98692,-3.45666 -2.79793,-1.07366 -9.21326,3.4643 -9.21326,6.5171 0,1.39958 -1.10251,2.8577 -2.45004,3.24028 -4.38528,1.24504 -23.93233,0.0169 -25.91457,-1.6282 -1.47416,-1.22345 -3.64723,-0.94946 -9.19815,1.15972 -7.91108,3.00597 -21.2671,3.50404 -29.63612,1.10517 z", name : "Јужна Бачка" }, "5" : { path : "m 262.43859,273.50349 c -2.09283,-1.94975 -2.80938,-3.78919 -2.21078,-5.6752 0.53245,-1.6776 -0.006,-3.77617 -1.35117,-5.26212 -2.56027,-2.82907 -1.7244,-10.2308 1.45316,-12.86794 1.06222,-0.88157 1.92896,-2.62822 1.92608,-3.88146 -0.007,-3.09361 -5.17218,-11.53 -8.87602,-14.49768 l -3.01894,-2.4189 3.13306,-0.0311 c 2.65178,-0.0263 3.07808,-0.70905 2.77517,-4.44431 -0.2178,-2.68574 -1.44417,-5.01478 -3.13306,-5.9501 -1.52634,-0.84529 -3.03798,-1.69472 -3.35919,-1.88759 -0.32122,-0.19288 -0.66605,-1.46398 -0.76629,-2.82466 -0.10025,-1.36069 -0.66213,-3.25041 -1.24863,-4.19939 -0.60646,-0.98127 -0.37895,-1.72541 0.52752,-1.72541 1.06155,0 1.27368,-1.51967 0.63514,-4.55007 -1.33145,-6.31889 -2.34404,-6.98968 -7.05546,-4.67389 -3.89798,1.91596 -11.80858,1.60113 -11.80858,-0.46997 0,-0.53206 2.52004,-2.07922 5.60009,-3.43814 3.08005,-1.35891 5.60009,-2.95036 5.60009,-3.53654 0,-0.58618 -2.42327,-3.69065 -5.38503,-6.89882 -5.02315,-5.44104 -11.17034,-7.79221 -11.59024,-4.43301 -0.0962,0.77001 -0.25376,1.97753 -0.35001,2.68337 -0.0962,0.70585 -0.58678,1.69513 -1.09006,2.19842 -0.50329,0.50328 -0.81829,-2.27858 -0.70001,-6.18191 0.13206,-4.35817 0.84662,-7.09756 1.85162,-7.0985 0.90011,-8.3e-4 3.57367,-1.10404 5.94124,-2.45156 6.56256,-3.73513 5.24207,-10.8394 -1.35818,-7.30705 -1.61611,0.86491 -3.99166,1.16406 -5.27901,0.66476 -2.10478,-0.81632 -2.05848,-1.11807 0.4594,-2.99441 2.7668,-2.06183 2.76778,-2.11051 0.0824,-4.10008 -1.49469,-1.10741 -3.2644,-2.01347 -3.93269,-2.01347 -0.66828,0 -0.82569,-0.63001 -0.3498,-1.40002 0.4759,-0.77001 2.92812,-1.40002 5.44938,-1.40002 5.94129,0 6.93544,-1.15187 4.37148,-5.06497 -2.41276,-3.68233 -1.46306,-7.51413 1.87911,-7.58181 5.79493,-0.11734 11.5539,-9.8373 6.85033,-11.56194 -1.38397,-0.50745 -1.36924,-1.04434 0.0704,-2.56671 2.13497,-2.25763 31.08008,-2.84608 31.08008,-0.63185 0,3.60909 6.03783,13.20226 8.80263,13.98602 3.04468,0.86309 3.02692,0.93619 -1.04061,4.28194 -3.07048,2.52563 -4.60567,3.01587 -5.95009,1.9001 -1.30441,-1.08256 -2.40015,-1.01559 -3.91196,0.23911 -2.79816,2.32226 -2.65509,5.13766 0.35,6.88797 2.15791,1.25686 2.17738,1.43209 0.16329,1.46959 -1.25771,0.0234 -2.6654,1.46009 -3.1282,3.19262 -1.27052,4.75631 2.65865,7.02414 10.31503,5.95361 5.21039,-0.72853 11.04438,-1.24397 22.90926,-2.02406 1.26365,-0.0831 0.6023,-6.11801 -1.10517,-10.08495 -0.66677,-1.5491 0.30161,-3.61578 2.95204,-6.3001 3.31358,-3.35595 4.89583,-3.92592 9.89442,-3.56426 l 5.9501,0.43051 0,-5.59797 c 0,-3.07887 0.63001,-5.98732 1.40002,-6.46322 0.77001,-0.47589 1.45684,-2.87561 1.52629,-5.33271 l 0.12626,-4.46744 1.29593,4.48114 c 1.69241,5.85216 2.31245,6.12521 10.84573,4.77628 l 7.22443,-1.14202 -0.25091,9.94252 c -0.17006,6.73875 -1.09915,11.46492 -2.88331,14.66712 -3.36316,6.03617 -2.93327,14.8701 0.7245,14.88795 3.00439,0.0147 5.14062,3.03179 5.17002,7.30193 0.0142,2.05633 -1.4052,3.85183 -4.17863,5.28603 -3.23851,1.6747 -4.20007,3.12526 -4.20007,6.33605 0,3.81484 0.40549,4.16412 4.83421,4.16412 7.17987,0 12.19675,2.66772 11.15997,5.93431 -1.02323,3.22393 2.95266,8.06591 6.62317,8.06591 1.42067,0 2.58305,0.95851 2.58305,2.13003 0,1.17151 3.15005,5.3134 7.00011,9.20419 3.85007,3.89079 7.00012,7.3138 7.00012,7.60669 0,0.29289 -2.18837,0.94306 -4.86301,1.44483 -2.67466,0.50177 -7.87023,3.05036 -11.54571,5.66353 -3.67549,2.61317 -7.47223,4.75122 -8.4372,4.75122 -2.12437,0 -2.33817,3.67409 -0.28756,4.94144 1.77099,1.09453 -3.22405,6.13028 -8.99931,9.07265 -2.21777,1.12991 -4.65956,3.43105 -5.42621,5.11366 -1.37648,3.02104 -1.47762,2.9931 -8.09171,-2.23504 -10.17159,-8.04017 -22.3034,-8.94635 -22.37185,-1.67105 -0.0173,1.83952 -0.25693,1.90682 -1.24349,0.34923 -0.67213,-1.06117 -1.87897,-1.5234 -2.68187,-1.02718 -0.80289,0.49621 -1.85553,0.26192 -2.33918,-0.52065 -1.63528,-2.64593 -3.64806,-1.44436 -5.66443,3.38148 -1.10406,2.64239 -2.69799,5.23116 -3.54206,5.75283 -0.84407,0.52166 -1.1731,2.38909 -0.73118,4.14984 0.54782,2.18268 0.0879,3.47595 -1.44542,4.06433 -1.42724,0.54769 -1.98201,1.88365 -1.51839,3.65653 1.00056,3.82615 -3.83597,7.05798 -9.01296,6.02258 -2.19623,-0.43924 -4.8331,-0.1015 -5.85972,0.7505 -1.41099,1.17102 -2.62234,0.84501 -4.963,-1.33565 l 0,0 z", name : "Средњи Банат" }, "6" : { path : "m 197.43148,376.34499 c -1.55471,-1.5547 0.46953,-3.30478 3.82248,-3.30478 1.77575,0 4.91233,-1.3244 6.97018,-2.9431 5.51048,-4.33454 2.68201,-6.85705 -7.6887,-6.85705 -7.7199,0 -8.58491,-0.35786 -15.31672,-6.33666 -6.90218,-6.13011 -7.35561,-6.30736 -13.91083,-5.43778 -6.03635,0.80075 -6.9563,0.56215 -8.42682,-2.18554 -2.45341,-4.58424 -0.37939,-16.11038 4.33882,-24.11248 2.22188,-3.76831 4.02352,-7.29626 4.00366,-7.83988 -0.0199,-0.54362 -2.3824,-2.04802 -5.25009,-3.34311 -5.20415,-2.35026 -13.69953,-2.51004 -21.76523,-0.40934 -2.47083,0.64352 -5.23997,0.33925 -7.39143,-0.81218 -2.94157,-1.57428 -3.76845,-1.51315 -5.70322,0.42162 -2.08378,2.08378 -2.49977,1.91037 -5.25687,-2.19135 -3.25815,-4.84714 -9.19791,-6.88233 -9.19791,-3.15155 0,1.20857 -0.94502,2.1974 -2.10003,2.1974 -1.15502,0 -2.10004,0.56118 -2.10004,1.24707 0,0.68588 -5.19758,1.10103 -11.55018,0.92255 -6.352603,-0.17847 -12.586549,0.19212 -13.853215,0.82355 -1.494314,0.74492 -2.90647,0.42096 -4.021487,-0.92255 -2.231995,-2.68939 -8.233458,-2.67035 -9.269454,0.0294 -0.443222,1.15501 -1.703242,2.10003 -2.800044,2.10003 -1.096803,0 -2.356823,0.94501 -2.800045,2.10003 -0.443222,1.15502 -1.348163,2.10004 -2.010979,2.10004 -2.580892,0 1.052054,-5.58042 5.704761,-8.76285 3.663815,-2.50603 4.800535,-4.20626 4.50553,-6.73908 -0.616286,-5.29123 -3.539584,-7.5139 -7.262148,-5.52165 -3.597543,1.92535 -5.330683,0.92012 -3.083011,-1.78816 2.698545,-3.25155 3.350273,-19.67286 0.962488,-24.2514 -2.938757,-5.63501 -2.733686,-6.06077 2.509385,-5.20994 4.019214,0.65223 5.223716,0.0782 9.100145,-4.3368 2.457284,-2.79869 4.467789,-5.62293 4.467789,-6.27608 0,-0.65316 2.588863,-0.29562 5.753031,0.79452 7.327955,2.52469 11.482904,1.40823 10.317974,-2.77251 -0.818763,-2.93839 -0.760002,-2.92999 1.80735,0.2585 1.91201,2.37458 4.57763,3.50585 9.53791,4.04784 3.78636,0.41371 7.38809,1.60822 8.00386,2.65446 1.45183,2.46676 5.05892,2.44816 6.01026,-0.031 0.8785,-2.28936 9.03889,-0.91411 12.7265,2.14477 2.91748,2.42005 24.68332,2.21346 33.73256,-0.32017 3.76857,-1.05514 6.622,-1.26153 6.8767,-0.49741 0.23944,0.71834 6.57794,1.27565 14.08557,1.23848 13.75294,-0.0681 19.95033,-1.74878 19.95033,-5.41033 0,-1.03365 0.98464,-2.69652 2.18807,-3.69529 1.91079,-1.58581 2.07519,-1.36619 1.29733,1.73307 -0.79226,3.15661 -0.37633,3.65303 3.76203,4.48992 3.69166,0.74655 5.12765,0.35965 6.95172,-1.87302 2.00985,-2.46006 3.26238,-2.68584 9.95993,-1.79539 6.07254,0.80736 8.84096,2.08776 13.35214,6.17541 6.35501,5.75837 8.68951,9.4046 8.68951,13.572 0,1.54699 1.16964,3.63594 2.5992,4.64211 5.72602,4.03019 5.39524,12.18923 -0.60502,14.92312 -1.95365,0.89014 -3.20518,2.17976 -2.78117,2.86581 0.424,0.68605 -0.17048,1.60861 -1.32108,2.05014 -2.51316,0.96439 -2.74654,5.27617 -0.41197,7.61076 1.30669,1.30668 1.09785,1.68002 -0.93977,1.68002 -1.44089,0 -3.74613,1.01931 -5.12274,2.26513 -1.37663,1.24582 -4.57628,2.68667 -7.11035,3.20189 -3.50277,0.71217 -4.72349,1.76349 -5.09157,4.38498 -0.26629,1.89652 -0.98257,4.07822 -1.59173,4.84824 -0.60918,0.77001 -1.54288,4.04017 -2.07492,7.26703 -0.75374,4.57158 -1.63562,5.96263 -3.99405,6.3001 -3.77386,0.53999 -4.85253,5.26846 -1.72377,7.55626 1.50004,1.09686 1.80321,2.03749 0.84712,2.62838 -0.81892,0.50612 -1.12475,2.37124 -0.67964,4.14472 0.58096,2.31477 0.0886,3.50374 -1.74489,4.21426 -2.44188,0.94623 -2.44476,1.07033 -0.0655,2.82234 2.27427,1.67475 2.0331,2.03394 -2.80004,4.17027 -7.90593,3.49454 -11.07882,5.5056 -15.21992,9.64669 -3.50843,3.50842 -8.7568,4.89638 -10.79768,2.85549 l -4e-5,0 z", name : "Срем" }, "7" : { path : "m 333.06436,370.69876 c -0.34701,-0.90279 -2.06993,-1.8478 -3.82873,-2.10003 -2.03424,-0.29173 -4.3146,-2.49628 -6.26702,-6.05868 -1.68805,-3.08005 -4.83012,-7.30696 -6.98236,-9.39314 -3.18779,-3.08993 -3.92347,-5.03634 -3.96876,-10.50017 -0.0463,-5.58737 -0.58236,-6.93822 -3.21089,-8.09138 -1.73542,-0.76134 -2.96328,-1.70636 -2.72859,-2.10003 0.2347,-0.39368 1.85889,-3.74748 3.60931,-7.45289 2.99265,-6.33503 3.04668,-6.94455 0.90534,-10.21265 -1.25249,-1.91154 -3.97568,-4.12127 -6.05153,-4.91051 -5.21249,-1.98179 -8.67949,-5.37754 -8.67949,-8.50113 0,-1.44484 -1.10251,-3.04162 -2.45003,-3.54839 -1.34753,-0.50677 -5.12759,-3.66123 -8.40014,-7.00991 -6.23736,-6.38247 -8.0385,-13.2802 -3.88401,-14.87443 2.49249,-0.95646 8.3096,-12.84312 7.1798,-14.67117 -1.5133,-2.44858 3.31125,-9.70132 6.91113,-10.38948 1.93057,-0.36905 3.84728,-0.12548 4.25935,0.54126 1.39195,2.25223 3.44589,1.2318 4.82574,-2.39747 1.21365,-3.19215 1.89799,-3.49577 5.91544,-2.62448 6.4274,1.39394 14.64352,6.37632 16.62935,10.08428 2.27762,4.25281 5.17195,3.96884 6.93976,-0.68085 1.5612,-4.10625 5.88398,-8.7693 8.1294,-8.7693 0.75469,0 3.43395,-1.88315 5.95391,-4.18479 3.42527,-3.1285 4.17956,-4.58699 2.98832,-5.77822 -1.19123,-1.19124 0.0594,-2.71809 4.9548,-6.04905 7.2149,-4.90921 22.86873,-9.22765 23.75974,-6.55462 0.28716,0.86149 1.18767,1.56635 2.00113,1.56635 0.81346,0 2.18782,0.96934 3.05413,2.1541 1.41732,1.93829 2.19101,1.9368 7.72285,-0.0149 3.38125,-1.19298 6.22783,-2.00482 6.32572,-1.80409 1.34638,2.76066 3.48322,7.84898 4.03563,9.60977 1.05542,3.3641 11.98777,8.59969 15.9043,7.6167 1.81672,-0.45597 4.66781,-0.0987 6.33574,0.79397 1.66792,0.89264 5.17965,1.91233 7.80383,2.26597 5.02622,0.67735 10.90862,4.19572 17.67601,10.57236 4.28635,4.03886 4.20838,4.66635 -0.89466,7.20036 -1.76855,0.87821 -3.3537,3.11135 -3.57863,5.04154 -0.68741,5.899 -5.0432,13.93202 -7.56371,13.94912 -1.30208,0.009 -2.75679,0.64607 -3.23268,1.41608 -0.4759,0.77001 -2.0207,1.40002 -3.4329,1.40002 -1.4122,0 -2.9515,1.00034 -3.42066,2.22297 -1.08363,2.82388 11.09841,17.37735 14.54578,17.37735 3.34935,0 15.40814,5.44011 15.40814,6.95112 0,0.671 0.38241,2.21654 0.8498,3.43454 0.63788,1.66229 -0.0398,2.21454 -2.71741,2.21454 -1.96198,0 -3.91166,0.55731 -4.33265,1.23848 -0.42099,0.68116 -3.82016,1.23848 -7.55372,1.23848 -10.88662,0 -15.64419,1.53478 -17.16611,5.53775 -0.74345,1.95542 -1.03088,4.5746 -0.63873,5.82042 0.88512,2.81191 -6.33677,7.88482 -13.24189,9.30158 -7.48316,1.53536 -14.57929,5.61388 -16.71693,9.6081 -1.42062,2.65446 -2.70641,3.40214 -4.9027,2.85091 -1.8209,-0.45702 -4.20207,0.31527 -6.13145,1.9886 -2.35692,2.04415 -4.48643,2.55713 -8.42326,2.02909 -4.13042,-0.554 -6.43949,0.0877 -10.68655,2.96983 -2.97972,2.02209 -6.23919,4.84941 -7.24327,6.28294 -2.06649,2.95033 -7.6366,4.40202 -18.33047,4.77731 -4.53312,0.15908 -7.57453,-0.36946 -7.96452,-1.38408 l 0,0 z", name : "Јужни Банат" }, "8" : { path : "m 130.99579,493.46112 c -0.95523,-1.52958 -1.73679,-4.06938 -1.73679,-5.64403 0,-3.59621 -3.53793,-5.06749 -6.42463,-2.67175 -1.806,1.49885 -2.41141,1.46501 -3.46079,-0.19337 -0.69954,-1.10551 -1.28153,-2.4469 -1.29332,-2.98087 -0.0118,-0.53398 -1.86128,-2.05768 -4.10996,-3.38602 -2.84917,-1.68305 -4.37044,-3.93507 -5.01854,-7.42926 -0.51151,-2.75777 -1.75668,-5.95914 -2.76705,-7.11416 -1.01038,-1.15502 -2.06752,-3.36005 -2.34922,-4.90008 -0.40321,-2.20426 -1.75944,-2.87037 -6.37407,-3.13055 -3.224037,-0.18176 -6.245826,0.29075 -6.71509,1.05002 -1.285632,2.0802 -3.487999,1.657 -3.487999,-0.67026 0,-2.44508 -4.141928,-4.84174 -6.754834,-3.90855 -2.373858,0.84779 -7.245388,-4.33098 -7.245388,-7.70235 0,-1.41822 -0.54867,-3.17709 -1.219268,-3.9086 -0.670597,-0.73151 -1.602058,-2.96072 -2.069913,-4.9538 -0.648611,-2.7631 -0.02651,-4.34035 2.61929,-6.64084 4.094676,-3.56028 4.533707,-9.46866 1.369902,-18.43584 -2.630564,-7.45581 -2.711222,-7.00011 1.239006,-7.00011 4.228752,0 8.374699,-6.02115 7.455803,-10.82805 -0.500133,-2.61627 0.0076,-3.6964 1.979867,-4.21217 2.562897,-0.67021 5.515957,-5.69683 7.613924,-12.96022 0.556028,-1.92503 3.149449,-6.0032 5.763158,-9.0626 2.613702,-3.0594 5.112212,-6.99696 5.552232,-8.75014 0.44002,-1.75318 1.28773,-3.1876 1.8838,-3.1876 0.59607,0 1.53571,-4.88257 2.08809,-10.85017 0.55239,-5.96759 1.69631,-11.69522 2.54206,-12.72805 1.86404,-2.27639 1.43873,-11.2859 -0.65167,-13.80467 -1.15624,-1.39318 -0.81457,-1.81773 1.46289,-1.81773 1.63431,0 2.97147,-0.70715 2.97147,-1.57145 0,-1.10673 0.60289,-1.07109 2.03871,0.12053 2.34518,1.94633 4.96141,0.82222 4.96141,-2.13176 0,-3.35834 2.68584,-2.25986 3.62515,1.48265 0.61963,2.4688 1.83062,3.50005 4.11007,3.50005 1.77739,0 3.44302,-0.6342 3.7014,-1.40935 0.30433,-0.913 2.02989,-0.82047 4.89964,0.26274 3.45686,1.30482 5.60874,1.29244 9.79705,-0.0564 5.27335,-1.69822 13.58121,-1.54985 15.4062,0.27514 0.5103,0.5103 2.02225,0.92782 3.35988,0.92782 2.10662,0 1.88867,1.00324 -1.6288,7.49756 -3.08918,5.70356 -4.14569,9.67061 -4.41542,16.57923 -0.47349,12.12768 1.26795,14.27471 10.79129,13.3047 6.75454,-0.688 7.30587,-0.47515 12.96906,5.00704 5.95643,5.76607 7.42498,6.21866 21.20723,6.53582 2.79099,0.0642 3.04311,0.41184 1.5786,2.17647 -0.95858,1.15501 -3.53359,2.10003 -5.72225,2.10003 -4.84905,0 -8.04495,4.60704 -5.40365,7.78961 1.92534,2.3199 9.87959,2.69684 12.00743,0.56902 0.98868,-0.98869 1.40649,0.66057 1.33002,5.25008 l -0.11152,6.69161 -5.11943,0 c -3.22118,0 -6.40607,1.11276 -8.5894,3.00103 -3.06574,2.65144 -3.34686,3.67428 -2.41316,8.78029 0.59277,3.24163 0.49719,6.12513 -0.21768,6.56694 -0.70098,0.43323 -0.88582,2.0123 -0.41078,3.50905 0.59002,1.85898 -0.16833,3.56478 -2.39309,5.38289 -2.6128,2.13523 -2.91076,3.01339 -1.50678,4.44093 0.96251,0.97867 1.75002,2.91342 1.75002,4.29944 0,3.78485 -7.32154,3.41447 -9.11816,-0.46127 -0.79734,-1.72004 -4.34345,-4.08872 -8.38211,-5.59895 -8.45399,-3.1613 -10.03351,-3.21108 -15.26819,-0.48121 -3.77859,1.97052 -4.2556,1.92011 -6.70465,-0.70863 -2.98238,-3.20122 -5.18606,-3.437 -12.67771,-1.35646 -5.84306,1.6227 -5.90578,1.71449 -3.64526,5.33416 2.24984,3.60257 0.40706,9.99247 -2.88174,9.99247 -1.44297,0 -2.98622,0.94501 -3.42944,2.10003 -1.08925,2.83856 0.37967,6.3001 2.67348,6.3001 3.60585,0 3.63149,2.94086 0.0502,5.75791 -1.98957,1.56499 -3.61741,3.74474 -3.61741,4.84387 0,1.09913 -0.55656,1.99842 -1.23681,1.99842 -0.68024,0 -1.54114,1.59202 -1.91311,3.53783 -0.51702,2.70461 0.23734,4.18838 3.20296,6.3001 2.1336,1.51925 4.51729,2.76227 5.2971,2.76227 0.77981,0 4.31744,1.24292 7.8614,2.76204 5.14894,2.20709 6.61387,3.61354 7.29119,7.00011 0.46619,2.33094 1.57386,4.23808 2.4615,4.23808 0.88764,0 2.58706,1.13658 3.7765,2.52573 1.68982,1.97357 1.79046,2.87338 0.46032,4.11592 -0.93626,0.87459 -2.02587,1.26658 -2.42137,0.87107 -1.15669,-1.15668 -8.96238,3.38131 -9.86585,5.7357 -1.20963,3.15226 -8.28328,2.72334 -10.37699,-0.62923 z", name : "Мачва" }, "9" : { path : "m 181.94973,501.40042 c -1.1581,-4.61422 -4.93168,-8.40099 -11.35538,-11.39502 -3.06097,-1.42669 -6.41352,-3.44211 -7.45012,-4.47871 -1.0366,-1.03659 -2.88604,-1.88472 -4.10988,-1.88472 -2.4947,0 -10.17504,-7.98668 -10.17504,-10.5809 0,-2.6333 -3.14831,-4.61945 -12.77357,-8.05835 -6.91059,-2.46901 -9.02782,-3.88633 -9.37415,-6.27527 -0.24606,-1.69726 0.22645,-3.08592 1.05001,-3.08592 0.82357,0 1.4974,-0.89247 1.4974,-1.98327 0,-1.09079 1.66783,-3.19819 3.70628,-4.6831 2.99074,-2.1786 3.52618,-3.41747 2.77338,-6.41687 -0.61687,-2.4578 -1.87246,-3.71703 -3.70629,-3.71703 -1.52535,0 -2.77337,-0.63001 -2.77337,-1.40002 0,-0.77002 1.18359,-1.40003 2.63019,-1.40003 2.8327,0 5.91435,-5.80651 6.2642,-11.80313 0.28277,-4.84663 7.2309,-6.58383 10.07757,-2.51963 1.94678,2.77942 8.14948,2.87744 9.83181,0.15538 2.32,-3.75384 19.28002,2.1095 20.58983,7.11822 0.68023,2.6012 1.63135,2.96019 6.84866,2.5849 6.02326,-0.43326 6.05779,-0.46655 5.89904,-5.6859 -0.10025,-3.29596 0.47853,-5.25008 1.55501,-5.25008 2.25118,0 3.65451,-12.02881 2.17081,-18.60731 -0.9953,-4.41306 -0.73174,-5.35221 2.00539,-7.14564 2.39419,-1.56874 3.54224,-1.67387 4.77852,-0.43759 1.17837,1.17837 2.28595,1.21169 4.01538,0.1208 1.89857,-1.19759 2.67997,-0.92616 3.81153,1.32396 3.03729,6.03974 15.32332,10.26 17.01733,5.84548 1.15505,-3.01 4.25162,-2.5901 5.11016,0.69294 1.233,4.71501 5.27681,5.13902 8.65121,0.90712 3.11356,-3.90477 4.9452,-3.65893 4.9452,0.66374 0,1.37343 1.01983,3.06787 2.26629,3.76542 1.68031,0.94035 2.12323,2.76829 1.71303,7.06968 -0.30429,3.19077 -0.0641,5.8014 0.53376,5.8014 2.09188,0 1.05552,3.39499 -2.68325,8.79004 -2.913,4.20347 -3.43645,5.9697 -2.30213,7.76797 1.02563,1.62595 1.02183,3.04213 -0.0126,4.69852 -1.99601,3.19613 0.85676,8.5246 8.66353,16.18193 6.4103,6.28761 8.62164,7.28948 8.62164,3.90614 0,-1.16652 0.83049,-1.73741 1.91952,-1.31951 2.04684,0.78545 5.57666,-2.11954 7.93906,-6.53373 0.79206,-1.47998 2.83881,-2.69087 4.54834,-2.69087 4.59875,0 6.93909,8.12468 3.90327,13.55052 -1.21546,2.17236 -2.99745,4.45357 -3.95996,5.06934 -0.96252,0.61577 -1.75003,2.19891 -1.75003,3.51808 0,1.31917 -1.34606,3.02039 -2.99124,3.78049 -1.64518,0.7601 -2.7477,1.86009 -2.45004,2.44442 0.29766,0.58433 -1.50633,2.3076 -4.00887,3.82948 -2.50254,1.52189 -4.55007,3.27134 -4.55007,3.88766 0,0.61633 -1.10252,1.20117 -2.45004,1.29963 -8.4835,0.61993 -15.1063,1.98919 -15.51229,3.20715 -0.25921,0.77764 -1.99382,1.4139 -3.85468,1.4139 -2.07411,0 -3.38339,0.81265 -3.38339,2.10003 0,2.57484 -1.86392,2.56657 -9.10015,-0.0404 -7.20345,-2.59513 -10.41271,-2.57277 -13.35844,0.0931 -3.08727,2.79394 -9.40028,0.23187 -10.01969,-4.0664 -0.60979,-4.23148 -7.78024,-6.56302 -10.16289,-3.30456 -1.94786,2.66386 -5.70741,3.20608 -7.05962,1.01816 -1.06528,-1.72366 -3.55496,-1.7655 -6.17998,-0.10387 -1.61831,1.02438 -1.29868,2.06289 1.75002,5.68607 3.61985,4.30195 5.01415,9.81804 2.4817,9.81804 -0.68654,0 -1.6144,-1.45884 -2.06191,-3.24188 z", name : "Колубара" }, "10" : { path : "m 254.4364,454.92067 c -6.33525,-6.18328 -8.19657,-10.14413 -6.00689,-12.78253 1.37997,-1.66276 1.3985,-2.70781 0.0853,-4.81059 -0.92271,-1.47749 -1.10394,-2.68636 -0.40273,-2.68636 4.03157,0 6.28691,-26.721 2.44608,-28.98089 -1.04654,-0.61577 -2.47624,-3.59119 -3.17711,-6.61203 -1.67278,-7.20989 -3.96113,-7.73061 -6.886,-1.56691 -3.1326,6.60147 -4.0912,7.00205 -6.81352,2.84727 -2.61686,-3.99384 -5.28543,-4.42357 -8.36238,-1.34662 -1.3717,1.3717 -3.38352,1.82967 -5.59705,1.27411 -6.08839,-1.52809 -7.7745,-4.85082 -8.12402,-16.00952 -0.31679,-10.11412 -0.23276,-10.39562 3.81922,-12.79555 8.05669,-4.77185 12.29529,-6.81097 14.15755,-6.81097 1.24249,0 1.80079,-1.54949 1.63945,-4.55007 -0.13456,-2.50254 0.24969,-6.90596 0.85389,-9.78537 0.88112,-4.19916 0.65262,-5.40641 -1.15453,-6.09988 -3.07555,-1.1802 -2.83099,-2.88736 0.53991,-3.76886 1.53613,-0.40171 3.07131,-1.57771 3.41149,-2.61333 0.34018,-1.03562 1.74301,-5.82051 3.1174,-10.63308 2.14224,-7.50128 2.9625,-8.75014 5.74719,-8.75014 1.78657,0 4.60078,-1.26002 6.2538,-2.80005 1.65302,-1.54002 4.10954,-2.80004 5.45892,-2.80004 3.45215,0 4.4247,-2.22552 2.5243,-5.77646 -1.32573,-2.47713 -1.20908,-3.26642 0.63526,-4.29856 1.24255,-0.69536 2.25917,-1.92983 2.25917,-2.74326 0,-0.81344 1.64154,-2.77021 3.64788,-4.34839 3.62208,-2.84913 4.02599,-6.91488 1.35472,-13.6367 -1.0528,-2.64922 4.05297,-6.02222 7.47288,-4.93678 1.61856,0.51371 2.54186,2.25911 2.61836,4.94976 0.0856,3.00938 2.0241,6.09248 7.02533,11.17321 3.79894,3.85934 7.62135,7.01698 8.49425,7.01698 0.8729,0 1.58709,1.23061 1.58709,2.73468 0,2.6893 1.4426,4.02143 11.20018,10.34247 5.56449,3.60473 5.92266,7.37269 1.31336,13.81658 -3.54599,4.95738 -3.42787,6.1741 0.87297,8.99212 3.16677,2.07495 3.4788,2.98653 2.66699,7.7916 -0.83428,4.93805 -0.47199,5.86367 3.91411,10.0003 2.65842,2.50721 5.98743,6.99031 7.3978,9.96245 1.58346,3.33688 4.06963,5.97208 6.49975,6.88934 2.16449,0.81701 3.93544,1.97735 3.93544,2.57855 0,0.6012 1.26002,1.09309 2.80004,1.09309 1.8667,0 2.80005,0.93334 2.80005,2.80004 0,1.54002 0.67246,2.80004 1.49437,2.80004 0.85847,0 1.11527,1.19443 0.60347,2.80695 -0.59209,1.86553 -0.15419,3.08963 1.30568,3.64984 2.6884,1.03163 2.90326,3.34337 0.31075,3.34337 -1.0372,0 -3.28017,1.20932 -4.98438,2.68737 -2.81218,2.439 -2.95639,3.21536 -1.56028,8.40013 1.03071,3.82773 2.32892,5.72548 3.93437,5.75131 2.59077,0.0417 9.39619,8.27495 9.39619,11.36763 0,1.14547 -1.65997,1.93968 -4.20007,2.00953 -8.12475,0.22341 -9.10015,0.57734 -9.10015,3.30193 0,1.49458 -0.63001,3.10679 -1.40002,3.58269 -2.29196,1.41651 -1.60017,5.66805 1.58018,9.7112 4.07482,5.18029 1.73978,7.55193 -4.41323,4.48239 -3.28525,-1.63889 -5.18058,-1.8495 -7.15156,-0.79466 -3.27587,1.75319 -6.81565,-1.17742 -6.81565,-5.64275 0,-4.05794 -2.72208,-4.73079 -8.82416,-2.18118 -5.15937,2.15573 -5.17607,2.15148 -5.17607,-1.31512 0,-2.83795 -1.40768,-4.14378 -7.65083,-7.09726 l -7.65083,-3.61942 -4.24936,3.14167 c -4.88682,3.61298 -5.16516,4.88275 -1.86877,8.52521 2.21837,2.45128 2.22382,2.93577 0.08,7.11035 -1.2653,2.4639 -2.5096,5.73986 -2.7651,7.27988 -0.31097,1.87441 -1.38367,2.67402 -3.24489,2.41882 -1.93236,-0.26495 -3.56316,1.07235 -5.34695,4.38464 -1.94786,3.61698 -3.24447,4.58861 -5.37856,4.03053 -1.54659,-0.40444 -3.22,-0.1725 -3.71869,0.51543 -0.49869,0.68793 -2.8528,-0.64863 -5.23136,-2.97013 l -1e-5,0 z", name : "Београд" }, "11" : { path : "m 392.07708,470.15064 c -2.1342,-1.11822 -4.51269,-1.64233 -5.28554,-1.16469 -2.39811,1.48212 -14.03971,-5.05407 -15.40698,-8.65026 -1.2922,-3.39873 -2.03173,-3.47068 -11.12189,-1.08204 -1.15502,0.30351 -3.90458,-0.38506 -6.11013,-1.53015 -2.20555,-1.14509 -4.92555,-2.08197 -6.04444,-2.08197 -1.40583,0 -1.75625,-0.8762 -1.13423,-2.83601 0.71732,-2.26008 0.0485,-3.13288 -3.29347,-4.29789 -5.14506,-1.79359 -6.84136,-5.45564 -3.61865,-7.81215 2.95399,-2.16001 1.62066,-6.05429 -2.07287,-6.05429 -4.13472,0 -4.83896,-2.39274 -2.28704,-7.7705 2.38416,-5.02424 4.64135,-5.98888 7.44748,-3.18275 1.26257,1.26258 2.30814,1.04857 4.48007,-0.917 1.55822,-1.41017 2.83312,-3.46816 2.83312,-4.57331 0,-2.84632 -7.24932,-12.76683 -9.999,-13.68338 -1.26438,-0.42146 -2.68231,-1.84793 -3.15095,-3.16995 -0.46864,-1.32202 -1.22216,-3.20015 -1.67449,-4.17362 -0.51313,-1.10432 1.06673,-2.55928 4.20097,-3.86885 5.76399,-2.40835 6.12415,-4.2164 2.22334,-11.16147 -3.28613,-5.85068 -3.54376,-7.89763 -0.86459,-6.86954 2.90549,1.11494 18.10719,-3.22686 19.90464,-5.68502 4.44679,-6.08135 18.4313,-12.16518 16.52113,-7.18737 -0.41333,1.07713 -0.0113,2.41591 0.89342,2.97505 1.25526,0.77579 1.24889,1.2614 -0.0269,2.04988 -1.24068,0.76679 -0.90915,2.70746 1.28555,7.52512 1.62656,3.57053 3.55188,6.49187 4.27848,6.49187 0.7266,0 0.94945,0.96848 0.49522,2.15217 -1.0286,2.68048 3.28953,7.64798 6.6482,7.64798 3.53332,0 4.67508,2.54551 2.75281,6.1373 -1.69462,3.16643 -1.09427,5.53213 3.40608,13.42178 1.31465,2.30475 1.48642,3.75951 0.51479,4.36 -0.80198,0.49566 -1.28241,2.40425 -1.06761,4.24131 0.2148,1.83706 -1.02623,6.06566 -2.75783,9.3969 -3.36695,6.47728 -2.45372,10.04347 2.57192,10.04347 1.3264,0 3.49796,1.20037 4.82569,2.66749 2.31764,2.56097 2.24308,2.70505 -1.867,3.60777 -5.03236,1.10529 -6.86056,3.33842 -4.14251,5.06001 1.39717,0.88494 1.44665,1.22797 0.17937,1.24349 -2.01506,0.0247 -2.47976,10.60537 -0.519,11.81718 1.70937,1.05646 2.80923,5.79786 1.74453,7.52058 -0.5722,0.92584 -2.24231,0.71289 -4.76168,-0.60714 z", name : "Подунавље" }, "12" : { path : "m 505.08278,497.5092 c -0.50781,-0.82165 -2.3639,-1.13233 -4.12465,-0.69042 -2.19081,0.54986 -3.47623,0.0872 -4.07214,-1.46574 -0.66237,-1.72611 -2.04266,-2.07906 -5.76703,-1.47468 -3.95788,0.64227 -5.55082,0.14 -8.31169,-2.62088 -2.50677,-2.50677 -4.93834,-3.41544 -9.1396,-3.41544 -5.07588,0 -6.45443,-0.79278 -12.17236,-7.00011 -3.54651,-3.85007 -7.53724,-7.00012 -8.86828,-7.00012 -1.33105,0 -3.20438,-0.94501 -4.16296,-2.10003 -2.18164,-2.62872 -3.85641,-2.6271 -8.91017,0.009 -4.93089,2.57163 -7.74597,2.78728 -5.37006,0.41138 2.37945,-2.37945 2.08555,-6.72011 -0.45501,-6.72011 -1.25779,0 -2.48426,-1.74615 -2.98499,-4.24979 -1.32272,-6.61361 -9.8131,-9.73905 -11.27458,-4.15034 -1.01692,3.88868 -5.48181,3.50116 -8.24472,-0.71557 -1.26693,-1.93359 -4.53761,-4.57577 -7.26817,-5.8715 l -4.96466,-2.35589 3.73585,-1.24528 c 2.05471,-0.6849 3.73584,-2.02797 3.73584,-2.9846 0,-2.37858 -5.99157,-7.8275 -8.60703,-7.8275 -1.16956,0 -2.52135,-0.39488 -3.00398,-0.87751 -1.41343,-1.41343 3.08644,-8.92264 5.34686,-8.92264 2.52482,0 2.63146,-1.92255 0.31406,-5.6618 -1.42022,-2.29161 -1.39199,-3.04663 0.14982,-4.00629 2.02609,-1.2611 1.1665,-6.20197 -1.70009,-9.77197 -1.70566,-2.12419 -2.10536,-6.05428 -0.72823,-7.16036 0.47936,-0.38501 0.56535,-2.74755 0.1911,-5.25009 -0.4543,-3.03784 -1.4547,-4.55007 -3.01007,-4.55007 -1.2813,0 -3.75987,-1.00178 -5.50793,-2.22617 -2.46948,-1.72968 -2.82431,-2.65271 -1.59101,-4.13874 1.95587,-2.35668 0.37556,-5.2996 -2.29543,-4.27464 -1.8456,0.70822 -2.70237,-2.28651 -2.06293,-7.21073 0.12499,-0.96252 -0.27287,-1.75129 -0.88414,-1.75284 -0.61126,-0.002 -1.25092,-2.04907 -1.42146,-4.55007 -0.27246,-3.9955 0.32705,-4.85363 4.94073,-7.07207 2.88795,-1.38865 6.29245,-2.1251 7.56556,-1.63656 1.63594,0.62777 2.94139,-0.32353 4.45158,-3.24392 2.28963,-4.42766 10.7044,-9.08405 19.21057,-10.63034 2.78183,-0.50569 6.18501,-2.16491 7.56263,-3.68716 2.88478,-3.18764 5.49738,-1.8855 6.82428,3.40129 0.97416,3.88138 5.30464,5.02128 19.07573,5.02128 12.74311,0 15.27084,2.08282 16.64214,13.71289 0.56677,4.80686 1.77793,9.48716 2.69145,10.40069 1.00135,1.00134 7.07901,1.79385 15.30411,1.99561 12.79965,0.31396 21.5321,1.10371 29.74342,2.68995 1.92503,0.37187 5.8501,1.04178 8.72239,1.48867 4.02174,0.62575 5.71392,1.79795 7.36063,5.09884 1.95894,3.9268 1.93192,4.48692 -0.32227,6.67846 -5.14608,5.00307 -8.05012,9.13402 -8.32049,11.83575 -1.25905,12.58183 -2.30213,16.10026 -4.77304,16.10026 -1.41279,0 -3.2195,1.21602 -4.01492,2.70226 -0.79542,1.48625 -2.86511,2.90378 -4.59933,3.15005 -2.0566,0.29207 -3.3126,1.57301 -3.61172,3.68345 -0.25222,1.77961 -1.35474,3.57954 -2.45003,3.99984 -2.06958,0.79417 -2.76445,7.62508 -0.95929,9.43024 0.56769,0.56769 1.0402,2.08566 1.05002,3.37328 0.0113,1.48496 2.06585,3.01242 5.61795,4.17675 7.36576,2.41438 7.98807,3.18398 8.34982,10.32619 0.16878,3.33227 0.78906,7.1612 1.3784,8.50872 1.22722,2.80605 4.94973,3.32549 5.01653,0.70001 0.0276,-1.0854 0.73766,-0.83762 1.86958,0.65242 1.92609,2.53547 1.95655,4.17235 0.2357,12.66314 -0.67493,3.33017 -0.49874,5.95033 0.47941,7.12892 2.01686,2.43018 0.61449,3.7059 -4.07377,3.7059 -2.07786,0 -5.5531,1.39636 -7.72277,3.10303 -4.53879,3.57021 -8.48265,4.52012 -9.81516,2.36407 l 0,0 z", name : "Браничево" }, "13" : { path : "m 550.33656,538.48345 c -1.33604,-0.52944 -3.85608,-3.79272 -5.60009,-7.25173 -3.15613,-6.25975 -8.071,-9.29949 -8.071,-4.99172 0,1.21147 -0.21821,2.20268 -0.48492,2.20268 -1.86166,0 -9.62431,-4.8904 -12.80126,-8.0647 -2.67768,-2.67543 -5.37753,-3.87991 -8.92648,-3.98234 -13.37257,-0.38598 -12.92297,-0.21959 -11.89796,-4.40322 0.5188,-2.11753 1.51653,-4.07363 2.21718,-4.34689 0.70064,-0.27327 1.86707,-2.05699 2.59206,-3.96387 0.72499,-1.90685 2.1018,-3.18099 3.05958,-2.8314 0.95777,0.34958 3.14523,-0.64117 4.86101,-2.20168 1.71579,-1.56051 5.42728,-3.21285 8.24778,-3.67187 5.83354,-0.94937 9.4804,-5.03623 6.27703,-7.03438 -1.58051,-0.98587 -1.66332,-2.37267 -0.43147,-7.22577 0.83843,-3.30316 1.18307,-6.55805 0.76588,-7.2331 -0.4172,-0.67504 -0.75855,-3.3906 -0.75855,-6.03458 0,-5.09513 -3.01038,-6.55693 -6.4401,-3.12722 -0.92401,0.92402 -1.70805,1.39653 -1.7423,1.05002 -0.0343,-0.34651 -0.28715,-3.75546 -0.56198,-7.57546 -0.55429,-7.70415 -4.12094,-11.95485 -10.03101,-11.95485 -2.37771,0 -3.34496,-0.78579 -3.34496,-2.71742 0,-1.49458 -0.63001,-3.10679 -1.40002,-3.58268 -1.73521,-1.07242 -1.86115,-6.3001 -0.15177,-6.3001 0.68653,0 1.62892,-1.51673 2.09419,-3.37051 0.59802,-2.3827 1.585,-3.17725 3.36764,-2.71108 1.68048,0.43946 3.16245,-0.53783 4.44248,-2.92959 1.24504,-2.32637 3.10665,-3.58902 5.29153,-3.58902 2.93207,0 3.33109,-0.59216 3.06597,-4.55007 -0.16764,-2.50254 0.43982,-6.39125 1.34989,-8.64157 0.91008,-2.25032 1.33374,-4.92786 0.94147,-5.95009 -0.39327,-1.02485 0.20914,-1.8586 1.34288,-1.8586 1.13086,0 2.0561,-0.84862 2.0561,-1.88582 0,-1.0372 1.26002,-3.33863 2.80004,-5.1143 l 2.80005,-3.22847 0,3.78112 c 0,2.10356 1.41799,5.14904 3.19606,6.86432 1.75784,1.69576 4.19987,4.67451 5.42675,6.61945 3.17205,5.02858 11.08719,8.99134 15.66448,7.84251 2.87775,-0.72227 4.63404,-2.97105 7.83654,-10.034 2.27015,-5.00671 5.37925,-10.86097 6.9091,-13.00945 1.52986,-2.14849 3.20027,-5.5746 3.71202,-7.61358 0.51175,-2.03898 1.87929,-4.49471 3.03898,-5.45716 1.15968,-0.96245 2.6573,-3.19333 3.32804,-4.9575 0.838,-2.20412 2.35413,-3.20759 4.84627,-3.20759 4.42005,0 9.11759,-2.36346 11.57218,-5.82227 3.02843,-4.26741 6.24708,-2.99654 15.01468,5.92848 9.12177,9.28556 14.08489,12.49399 19.32693,12.49399 4.80249,0 9.80728,2.88896 14.34298,8.27935 l 3.89324,4.62685 -3.40324,2.61591 c -4.2217,3.24503 -6.02659,3.32191 -8.48191,0.36128 -3.09165,-3.72795 -10.14077,-6.07665 -14.63243,-4.87539 -3.21313,0.85932 -4.3748,2.30361 -5.79319,7.20262 -2.32514,8.03083 -3.55048,9.05987 -10.21518,8.57866 -4.06265,-0.29333 -5.81815,0.19964 -6.43497,1.80705 -1.22965,3.2044 0.50072,8.85121 3.68943,12.03992 1.52044,1.52044 2.76444,4.06358 2.76444,5.65143 0,5.10432 4.24625,15.89266 7.91056,20.09813 2.42286,2.78069 6.30974,4.84871 12.17453,6.47749 8.61073,2.39138 8.6152,2.39537 8.31349,7.41124 -0.18546,3.08327 -2.14647,7.6429 -5.08522,11.8239 -4.49497,6.39503 -4.76814,7.43425 -4.53105,17.23721 l 0.25231,10.43188 -9.55503,2.95472 c -9.31919,2.88179 -9.58991,2.88954 -10.96851,0.31359 -1.09026,-2.03716 -0.76147,-3.341 1.43773,-5.70156 1.56818,-1.68324 2.85123,-3.61307 2.85123,-4.28851 0,-2.57942 -2.98373,-6.64408 -4.8772,-6.64408 -1.08826,0 -3.67813,-1.57503 -5.75527,-3.50006 -3.76208,-3.48658 -13.16791,-5.03446 -13.16791,-2.16699 0,2.04598 -13.04714,-2.33561 -15.03015,-5.04755 -1.99717,-2.73129 -1.8469,-2.82622 -6.59002,4.16316 -4.02326,5.92861 -4.4895,8.70299 -1.64592,9.79417 1.06387,0.40825 2.29399,2.83819 2.73361,5.39987 0.43961,2.56169 1.2157,6.70514 1.72465,9.20768 0.55844,2.74596 0.36349,4.55007 -0.49169,4.55007 -2.0502,0 -10.10094,16.05904 -10.10094,20.14863 0,2.23349 -0.99418,3.77861 -2.80005,4.35176 -1.54002,0.48879 -2.80004,1.47626 -2.80004,2.19438 0,1.48702 -1.05943,1.52124 -4.5292,0.14627 l 0,0 z", name : "Бор" }, "14" : { path : "m 214.35063,734.93986 c -2.73764,-1.86028 -5.61521,-5.21156 -6.39459,-7.4473 -1.23749,-3.54985 -2.10921,-4.06496 -6.87918,-4.06496 -10.69747,0 -22.17377,-5.91152 -23.09252,-11.89512 -0.53346,-3.47435 -9.15897,-6.6369 -18.18051,-6.66591 -5.54805,-0.0179 -6.70855,-0.50247 -7.54972,-3.15277 -1.75753,-5.53746 -7.89484,-13.66858 -10.31697,-13.66858 -4.28418,0 -8.47807,-5.33251 -8.47807,-10.77984 0,-3.81226 -0.99946,-5.97027 -4.02727,-8.69559 -2.21499,-1.99372 -4.46381,-5.64391 -4.99738,-8.11155 -0.5994,-2.77216 -2.07582,-4.83755 -3.86369,-5.405 -1.59146,-0.50511 -5.63014,-3.00724 -8.97483,-5.56031 -3.3447,-2.55307 -7.51139,-5.09544 -9.25932,-5.64971 -1.74793,-0.55428 -5.407238,-2.41447 -8.131789,-4.13379 -4.894916,-3.08889 -5.84712,-6.11339 -3.735519,-11.86517 0.424031,-1.15502 1.192252,-4.61528 1.707158,-7.68946 1.248692,-7.45518 1.593997,-7.82702 5.787697,-6.23258 2.608873,0.99189 4.685613,0.8329 7.507293,-0.57473 3.65509,-1.8234 3.99792,-1.73264 5.44402,1.44121 0.84881,1.86294 1.54329,4.6373 1.54329,6.16526 0,4.44726 3.95958,4.84453 8.16147,0.81886 2.67712,-2.56485 4.71571,-3.39414 6.92399,-2.81667 1.72136,0.45015 4.0714,0.0369 5.22232,-0.91823 2.51002,-2.08313 2.76093,-6.5378 0.41234,-7.32067 -1.3031,-0.43437 -1.29155,-2.29689 0.0515,-8.29824 1.00571,-4.49399 1.32318,-10.29306 0.75725,-13.83222 -1.31898,-8.24842 -11.83258,-23.27212 -17.92077,-25.60838 -1.24937,-0.47943 -2.69606,-1.97784 -3.21485,-3.32981 -0.5188,-1.35196 -3.65456,-6.33665 -6.96836,-11.07708 -3.3138,-4.74044 -6.025088,-9.04569 -6.025088,-9.56724 0,-0.52155 -1.457348,-2.95376 -3.238552,-5.40493 -1.781203,-2.45116 -3.977162,-6.19891 -4.879909,-8.32833 -1.598511,-3.7706 -1.541378,-3.84685 2.188534,-2.92085 6.189155,1.53653 12.328455,4.38073 14.122785,6.54277 1.17088,1.41083 5.06541,2.07377 13.03337,2.21857 6.24993,0.11359 11.80024,0.47644 12.33402,0.80633 0.53379,0.3299 3.26894,-1.89997 6.07811,-4.95527 2.80918,-3.05529 6.69494,-6.27832 8.63503,-7.16229 2.88795,-1.31584 3.52743,-2.5923 3.52743,-7.04111 0,-6.13225 -3.80038,-11.33035 -7.90852,-10.81713 -1.4254,0.17807 -4.16667,-0.36161 -6.0917,-1.19929 -3.36252,-1.4632 -3.37817,-1.52654 -0.39827,-1.61179 1.70598,-0.0488 4.98306,-1.92776 7.28241,-4.17545 2.75153,-2.6897 5.11997,-3.84106 6.92851,-3.36811 1.84021,0.48122 3.2662,-0.2499 4.31703,-2.2134 1.7875,-3.33997 4.99672,-3.83879 6.65115,-1.0338 0.61577,1.044 3.63962,3.03658 6.71967,4.42796 6.25746,2.82675 10.42213,7.13268 10.46904,10.82413 0.0213,1.67993 1.1451,2.45004 3.57512,2.45004 4.35481,0 5.60554,-2.8361 3.68294,-8.35127 -1.25218,-3.59201 -1.12344,-4.1592 0.90695,-3.99576 5.00139,0.40259 7.26636,-0.33092 7.26636,-2.35321 0,-1.15502 0.94502,-2.10003 2.10004,-2.10003 1.15502,0 2.10003,1.21712 2.10003,2.70471 0,3.03605 6.81573,8.49547 10.60605,8.49547 1.36053,0 3.60042,-1.01969 4.97755,-2.26597 2.86478,-2.59259 8.85806,-1.73066 10.07837,1.44943 0.42373,1.10423 0.13674,4.30269 -0.63776,7.10769 -0.94563,3.42482 -0.94434,5.6589 0.004,6.8015 0.88484,1.06616 0.92726,2.4681 0.11361,3.75457 -2.01212,3.1814 -1.61522,5.01284 2.02352,9.33725 2.32985,2.76886 3.15124,5.11653 2.67035,7.63217 -0.49414,2.58498 0.22691,4.4917 2.49919,6.60864 1.75657,1.63647 2.52363,2.97541 1.70458,2.97541 -0.81902,0 -2.4939,2.04753 -3.72195,4.55007 -1.94573,3.96503 -1.971,4.74788 -0.19662,6.08852 1.11989,0.84615 1.62983,1.94481 1.13317,2.44146 -0.49665,0.49665 0.0112,2.00938 1.12828,3.36162 1.18824,1.43822 1.9574,5.07338 1.85325,8.75873 -0.14774,5.22848 0.49823,6.9422 3.79776,10.07507 3.59208,3.41064 3.81183,4.13483 2.27697,7.50349 -1.4248,3.12708 -1.33628,3.9936 0.54874,5.37196 3.00684,2.19866 0.001,6.9575 -3.13896,4.97049 -1.1107,-0.70274 -3.71207,-1.28736 -5.78081,-1.29915 -3.22562,-0.0184 -3.82384,0.62663 -4.20007,4.52863 -0.34955,3.62539 -1.00775,4.47465 -3.23875,4.17896 -1.70667,-0.2262 -5.20807,1.90253 -8.96684,5.45153 -5.21719,4.92603 -6.56166,5.57603 -8.73114,4.22117 -4.19202,-2.61796 -6.80241,-1.93415 -6.80241,1.78192 0,1.86087 -0.78751,3.66567 -1.75003,4.01068 -2.45755,0.88089 2.11825,8.53917 5.5043,9.21226 1.40021,0.27834 3.04964,1.38085 3.66541,2.45004 0.61578,1.06918 2.66331,1.94397 4.55008,1.94397 3.06032,0 3.43048,0.59536 3.43048,5.51746 0,3.0346 0.61316,5.89642 1.36256,6.35957 0.74941,0.46316 2.44933,3.17788 3.7776,6.03273 1.32827,2.85484 3.54732,6.76563 4.93123,8.69066 1.3839,1.92503 2.74643,5.50499 3.02784,7.95546 0.28142,2.45047 1.56265,5.50639 2.84717,6.79092 2.18066,2.18066 2.97733,2.17822 12.01586,-0.0368 5.32418,-1.30477 10.29337,-1.99342 11.04263,-1.53036 1.74619,1.0792 -2.14751,11.64314 -5.81916,15.78785 -2.69346,3.04048 -2.69075,3.10861 0.31861,7.97784 1.66939,2.70115 4.26401,5.30116 5.7658,5.77781 1.50179,0.47665 2.73053,1.32763 2.73053,1.89107 0,1.42959 -8.58737,4.38697 -12.73846,4.38697 -3.71498,0 -8.76843,4.78977 -7.87038,7.45971 0.30347,0.90224 -1.26141,2.40843 -3.47752,3.3471 -2.82375,1.19603 -5.08629,4.01546 -7.56212,9.42337 -1.94305,4.24419 -4.01692,8.01591 -4.6086,8.38158 -0.59167,0.36569 -3.31566,-0.85718 -6.05331,-2.71745 l 0,4e-5 z", name : "Златибор" }, "15" : { path : "m 262.61112,678.71788 c -0.96252,-0.38838 -1.75003,-1.36892 -1.75003,-2.17897 0,-1.78095 -6.60808,-8.094 -8.47227,-8.094 -0.73034,0 -1.32789,0.63001 -1.32789,1.40002 0,0.77001 -1.73668,1.40002 -3.8593,1.40002 -2.12262,0 -5.78286,0.55166 -8.13387,1.22593 -4.24145,1.21642 -10.11064,-1.0558 -8.04994,-3.11649 0.82141,-0.82142 -0.63048,-4.87558 -3.83538,-10.70964 -5.97642,-10.87924 -9.67989,-18.70911 -9.11599,-19.27301 1.46186,-1.46187 -3.60997,-8.72744 -6.09231,-8.72744 -1.43786,0 -2.97694,-0.94501 -3.42016,-2.10003 -0.44322,-1.15502 -2.06348,-2.10003 -3.60058,-2.10003 -1.5371,0 -3.46907,-1.26002 -4.29327,-2.80005 -1.016,-1.89841 -1.03186,-2.80004 -0.0493,-2.80004 0.79711,0 1.44928,-1.38602 1.44928,-3.08005 0,-2.39559 0.37334,-2.7067 1.68003,-1.40002 3.00522,3.00522 6.94169,1.78787 12.63777,-3.90822 3.07353,-3.07352 6.1551,-5.2379 6.84793,-4.80971 2.97952,1.84145 6.83472,-1.03337 6.83472,-5.09663 0,-4.489 2.23057,-5.25829 7.33132,-2.52844 2.40712,1.28824 3.28818,1.11094 4.80804,-0.9676 2.16157,-2.95612 2.49449,-9.00982 0.49549,-9.00982 -0.86157,0 -0.89544,-1.23602 -0.0918,-3.3498 1.4953,-3.93292 0.42068,-9.2504 -1.86942,-9.2504 -3.06903,0 -5.30426,-5.69137 -4.38113,-11.1553 0.67171,-3.97585 0.37816,-5.47181 -1.19197,-6.07432 -1.30383,-0.50033 -1.80085,-1.87895 -1.32854,-3.68507 0.53228,-2.03543 0.0877,-2.88569 -1.50869,-2.88569 -2.71897,0 -2.80653,-1.26713 -0.31443,-4.55007 1.02292,-1.34752 3.20792,-2.45004 4.85556,-2.45004 4.26985,0 3.70226,-3.15112 -1.22358,-6.79295 -3.60845,-2.66784 -3.99645,-3.53583 -2.6801,-5.99546 1.22577,-2.29036 1.01586,-3.49057 -1.03079,-5.89397 -4.24739,-4.98774 -6.15062,-9.10302 -4.64135,-10.0358 1.64793,-1.01848 1.83232,-5.85749 0.24827,-6.51571 -0.61769,-0.25667 -0.57084,-3.19365 0.10411,-6.52661 0.99203,-4.89872 1.67671,-5.87431 3.57311,-5.09124 6.4808,2.67606 7.7114,2.58189 6.89817,-0.52791 -0.64188,-2.45457 -0.18011,-3.02115 2.46228,-3.02115 1.78877,0 3.46232,-0.60077 3.71899,-1.33505 0.25667,-0.73428 2.67171,-1.66975 5.36675,-2.07883 11.10861,-1.68614 14.00022,-2.59874 14.00022,-4.41847 0,-1.05295 1.57503,-2.30977 3.50006,-2.79292 2.13134,-0.53493 3.50005,-1.876 3.50005,-3.42935 0,-1.57947 1.1996,-2.72127 3.15005,-2.99828 2.02438,-0.28751 3.30993,-1.57306 3.59743,-3.59743 0.24606,-1.73253 1.05388,-3.15005 1.79514,-3.15005 0.74127,0 1.87871,-1.41752 2.52763,-3.15005 1.07147,-2.86065 1.34493,-2.6034 2.97654,2.80005 0.98817,3.27255 2.32696,5.95009 2.97509,5.95009 0.64813,0 1.10381,0.47251 1.01262,1.05002 -0.46931,2.97229 0.48664,4.32705 3.60565,5.10987 3.72183,0.93412 8.71669,9.54566 7.99872,13.79043 -0.23488,1.38863 0.45684,2.45004 1.5967,2.45004 2.34835,0 14.94148,11.12198 12.86451,11.36167 -0.76967,0.0888 -2.29161,0.24632 -3.3821,0.35 -1.09049,0.10369 -3.44351,2.94714 -5.22893,6.3188 -1.78542,3.37166 -4.35826,6.95181 -5.71742,7.95588 -1.97999,1.46272 -2.12334,2.17826 -0.72116,3.59987 0.96251,0.97585 1.75002,2.96727 1.75002,4.42539 0,1.4581 1.2377,2.97477 2.75045,3.37036 1.51274,0.39559 3.97478,2.79435 5.47119,5.33058 l 2.72075,4.61132 -4.11525,3.94266 c -2.26339,2.16846 -3.92245,4.9083 -3.68681,6.08853 0.23564,1.18024 -1.00454,3.59204 -2.75596,5.35957 -1.75143,1.76753 -3.18441,4.76008 -3.18441,6.65011 0,2.47547 -0.76457,3.43641 -2.73417,3.43641 -5.6815,0 -9.86603,3.06431 -9.86603,7.22484 0,2.18644 0.47251,3.9766 1.05002,3.97815 0.5775,0.002 1.19481,2.04907 1.37178,4.55007 0.30344,4.2882 0.0641,4.53747 -4.20006,4.37538 -2.48701,-0.0946 -6.25713,0.83044 -8.37803,2.0555 -3.31527,1.91495 -3.73817,2.85655 -3.01478,6.71255 1.4104,7.51806 -0.45988,12.46438 -5.80048,15.34049 -2.65585,1.43028 -4.82883,2.8177 -4.82883,3.08317 0,0.26547 2.99255,3.63957 6.65011,7.49799 8.85222,9.33834 9.23815,10.19001 9.41022,20.76597 0.0816,5.01449 0.66475,10.84977 1.29592,12.9673 0.91056,3.05488 0.69267,3.85006 -1.05496,3.85006 -1.2114,0 -2.95821,1.41197 -3.8818,3.13772 -1.61457,3.01683 -8.91824,10.97982 -9.86176,10.75197 -0.25173,-0.0608 -1.24521,-0.42829 -2.20772,-0.81667 l 0,0 z", name : "Моравица" }, "16" : { path : "m 328.65696,563.77181 c -0.82787,-0.56572 -2.7179,-3.61522 -4.20007,-6.77667 -1.48216,-3.16145 -4.64854,-7.23448 -7.03641,-9.0512 -2.38786,-1.81671 -5.10498,-5.02777 -6.03803,-7.13569 -0.93306,-2.10791 -2.84736,-4.19785 -4.25402,-4.6443 -3.2544,-1.03291 -4.51911,-7.26883 -1.98761,-9.80033 1.05655,-1.05655 1.921,-2.70391 1.921,-3.66079 0,-2.63169 4.23254,-6.76001 6.16887,-6.01697 0.93815,0.36 2.55327,-0.92912 3.58917,-2.86472 1.72316,-3.21974 1.55356,-3.84946 -1.9927,-7.39906 -2.13188,-2.1339 -5.48208,-4.93508 -7.44489,-6.22485 -1.99278,-1.30947 -4.46369,-5.01897 -5.59536,-8.40013 -2.02309,-6.04455 -5.90795,-10.95517 -8.66677,-10.95517 -0.80221,0 -1.45856,-0.91371 -1.45856,-2.03047 0,-1.11676 -0.95186,-2.56315 -2.11524,-3.21421 -1.16338,-0.65106 -2.41241,-3.67492 -2.77561,-6.71968 -0.95214,-7.98182 -3.96455,-18.83613 -5.22762,-18.83613 -2.09786,0 -0.98564,-6.34333 1.71833,-9.80016 3.41651,-4.36775 3.41576,-4.46174 -0.068,-8.47858 l -2.86808,-3.30692 3.21525,-2.42528 c 3.07995,-2.32321 3.3477,-2.30084 6.36262,0.53153 1.73105,1.62623 3.54768,2.55646 4.03697,2.06718 1.83725,-1.83725 5.87327,1.7589 5.13641,4.57662 -1.02393,3.91552 2.42122,4.84288 8.52182,2.29388 l 5.06351,-2.11566 0,4.12863 c 0,2.6286 0.7206,4.12862 1.98337,4.12862 1.09085,0 2.2434,0.78011 2.56122,1.73357 0.4542,1.3626 1.36722,1.3739 4.26673,0.0528 2.29402,-1.04522 4.00373,-1.17134 4.52152,-0.33354 0.45795,0.74098 1.98807,1.34723 3.40027,1.34723 1.41219,0 2.92041,0.91932 3.35158,2.04294 0.43117,1.12362 2.86111,2.6077 5.39987,3.29796 2.53876,0.69027 4.44717,2.00973 4.24091,2.93214 -0.48211,2.15611 3.0743,5.72718 5.70367,5.72718 1.11574,0 2.77088,0.89438 3.6781,1.98751 1.63254,1.9671 7.91667,2.07301 13.71962,0.23122 2.07411,-0.65829 3.01743,-0.16874 3.54229,1.83832 0.91035,3.48118 12.85546,9.52607 19.0953,9.66328 5.50192,0.12098 7.37552,2.26995 5.73684,6.57999 -0.63439,1.66858 -0.6372,3.86907 -0.006,4.88999 0.63096,1.02091 0.82,2.70887 0.42009,3.75102 -0.39991,1.04215 0.0505,2.83181 1.00097,3.97702 2.24372,2.70352 -0.0892,5.6908 -6.55345,8.39175 -5.47199,2.28635 -6.00582,5.2287 -1.33478,7.35697 2.58921,1.17973 3.17379,2.31588 2.63683,5.12481 -0.37939,1.98497 -1.60642,3.60903 -2.72667,3.60903 -1.12025,0 -3.04944,1.01262 -4.28709,2.25027 -1.82553,1.82553 -1.96173,3.01466 -0.72162,6.3001 1.27117,3.3677 1.16791,4.04983 -0.61307,4.04983 -1.41316,0 -1.90561,0.90283 -1.44765,2.65405 0.4707,1.79999 -0.37779,3.22768 -2.63676,4.43664 -3.57376,1.91262 -4.42387,6.65649 -1.68386,9.39649 1.26258,1.26258 1.05554,2.30044 -0.88712,4.44706 -1.39374,1.54006 -3.00381,2.5098 -3.57793,2.15497 -0.57412,-0.35483 -2.63768,0.94869 -4.58569,2.8967 l -3.54184,3.54183 -3.56369,-3.56369 c -3.53498,-3.53498 -10.69108,-4.92793 -10.69108,-2.08105 0,0.81546 -0.67089,1.06802 -1.49086,0.56125 -0.81998,-0.50677 -3.71758,-0.50367 -6.43912,0.007 -4.7253,0.88647 -4.90896,1.13773 -4.07626,5.57642 0.66221,3.52987 0.33129,4.85562 -1.37551,5.51058 -2.93675,1.12693 -5.16582,1.0606 -7.02378,-0.20901 l 0,3e-5 z", name : "Шумадија" }, "17" : { path : "m 394.05035,581.27019 c -0.94942,-0.94968 -3.11246,-1.83758 -4.80675,-1.9731 -1.69429,-0.13552 -4.97055,-0.63987 -7.28059,-1.12077 -2.31003,-0.48091 -5.93863,-1.0952 -8.06354,-1.3651 -3.68402,-0.46792 -9.26977,-5.49484 -9.40928,-8.4679 -0.0361,-0.77002 -0.44557,-2.81755 -0.90987,-4.55008 -0.6008,-2.24188 -0.23874,-3.15005 1.25585,-3.15005 1.15502,0 2.42954,-1.26002 2.83226,-2.80004 0.41138,-1.57312 1.90966,-2.80005 3.4193,-2.80005 3.11831,0 8.77525,-5.51841 8.77525,-8.56036 0,-1.14389 -0.72931,-2.80912 -1.62069,-3.7005 -1.22758,-1.22757 -1.1891,-2.14073 0.15863,-3.76464 0.97863,-1.17918 2.3424,-1.79596 3.0306,-1.37062 0.6882,0.42533 1.61896,-0.36912 2.06835,-1.76545 0.44939,-1.39632 1.45427,-3.87754 2.23306,-5.51382 0.95988,-2.01674 0.95046,-3.84491 -0.0293,-5.67552 -1.72142,-3.2165 -0.54744,-5.53479 3.15877,-6.23771 2.77769,-0.52682 5.55269,-7.38932 4.32505,-10.69576 -0.36424,-0.98102 -2.09373,-2.3162 -3.84333,-2.96708 -3.00868,-1.11927 -2.87757,-1.32714 2.41901,-3.83543 l 5.60009,-2.65203 0.0658,-10.48115 c 0.0362,-5.76464 0.80801,-12.21342 1.71514,-14.33062 1.75429,-4.09446 0.85619,-12.2508 -1.34896,-12.2508 -2.56918,0 -0.50559,-7.66221 2.20204,-8.17625 3.30632,-0.62769 9.26614,2.46616 9.26614,4.81023 0,0.96851 2.03749,2.77736 4.52777,4.01967 4.1941,2.0923 4.65467,2.08522 6.24961,-0.096 0.94701,-1.29511 1.91408,-2.93148 2.14904,-3.63636 0.87908,-2.63724 4.99035,0.6111 5.78177,4.56823 0.47821,2.39104 1.71524,4.11056 2.95715,4.11056 2.57865,0 2.64428,0.62259 0.438,4.1554 -2.13362,3.41648 -1.07324,4.47974 5.15176,5.16573 3.73502,0.41159 4.94541,0.0229 4.94541,-1.58803 0,-2.76155 3.34888,-2.74551 5.64992,0.0271 0.98599,1.18804 2.77746,1.97043 3.98105,1.73864 2.21806,-0.42717 11.36936,8.55394 11.36936,11.15791 0,2.02703 5.44839,3.55814 11.44573,3.21647 4.20791,-0.23973 5.59365,0.39062 7.60414,3.45903 2.10089,3.20635 3.15792,3.63868 7.26634,2.97198 3.29791,-0.53518 5.48209,-0.10594 6.95479,1.36677 1.18084,1.18083 3.35162,1.83195 4.82396,1.44693 3.44847,-0.9018 4.98258,2.85569 2.08218,5.09996 -2.2483,1.73969 -5.92049,13.30572 -4.63325,14.59296 0.40005,0.40005 -1.41228,3.52957 -4.02739,6.95448 -2.61512,3.42492 -4.4432,7.03903 -4.0624,8.03137 0.4084,1.06428 -1.12151,2.55558 -3.73033,3.63619 -4.2944,1.7788 -4.39719,2.02414 -3.54372,8.45793 0.76463,5.76401 0.41751,7.17441 -2.66821,10.84159 -3.00677,3.57334 -4.50351,4.20113 -9.82433,4.12069 -3.99263,-0.0604 -7.21083,0.75007 -8.8426,2.2268 -1.41099,1.27694 -3.21135,2.3217 -4.0008,2.3217 -0.78944,0 -3.01988,1.41752 -4.95652,3.15005 -1.93664,1.73253 -5.45496,4.20103 -7.81847,5.48557 l -4.2973,2.33552 -0.96982,-4.41555 c -1.63735,-7.45481 -6.16593,-8.6531 -16.56878,-4.38418 -2.44075,1.00159 -2.58898,0.61127 -1.75305,-4.61633 0.50222,-3.14074 1.29487,-6.70521 1.76143,-7.92105 1.0748,-2.8009 -2.9825,-4.52467 -5.57859,-2.37011 -1.04536,0.86757 -2.2306,4.03733 -2.63387,7.04392 -0.52031,3.87925 -2.09528,6.68353 -5.42413,9.65786 -2.58001,2.30524 -5.00931,3.679 -5.39844,3.0528 -0.38913,-0.6262 -1.94093,-1.35902 -3.44843,-1.62848 -2.28461,-0.40838 -2.81658,0.43048 -3.1954,5.03882 -0.53875,6.55398 -0.72841,6.84696 -2.97668,4.59807 z", name : "Поморавље" }, "18" : { path : "m 618.08098,664.43062 c -1.65785,-1.43784 -3.01427,-3.32787 -3.01427,-4.20007 0,-0.87218 -1.26002,-1.5858 -2.80004,-1.5858 -1.55558,0 -2.80004,0.93335 -2.80004,2.10003 0,2.67158 -2.88266,2.6917 -6.38252,0.0445 -1.4947,-1.13051 -4.05801,-2.07553 -5.69625,-2.10003 -4.49368,-0.0672 -6.42557,-3.30022 -5.36144,-8.97248 0.79272,-4.22556 0.37018,-5.45597 -2.92114,-8.50625 -3.8458,-3.56418 -9.03912,-4.80867 -9.03912,-2.1661 0,2.15136 -2.33398,1.66608 -5.05015,-1.05002 -1.76415,-1.7641 -4.34483,-2.36717 -9.2176,-2.15407 -5.23156,0.2288 -7.93692,-0.49763 -11.92013,-3.20071 -2.83395,-1.92316 -6.13365,-3.29722 -7.33266,-3.05344 -1.30411,0.26513 -3.02381,-1.29596 -4.28006,-3.88532 -1.15502,-2.38069 -4.15339,-6.80302 -6.66305,-9.82739 -3.8267,-4.61154 -4.95627,-5.24416 -7.00011,-3.92041 -2.39036,1.54818 -2.62629,2.75472 -1.56533,8.00536 0.29054,1.43789 -0.55732,3.31401 -1.88412,4.16915 -2.75613,1.77635 -5.28337,-0.6913 -8.73963,-8.53352 -2.05353,-4.65944 -4.20758,-5.40292 -13.58063,-4.68741 -2.69252,0.20554 -3.98869,-0.52292 -4.65263,-2.6148 -0.50618,-1.59484 -2.76421,-4.9185 -5.01784,-7.38591 -2.25363,-2.46741 -4.09751,-5.50081 -4.09751,-6.7409 0,-1.24008 -0.43624,-2.69094 -0.96942,-3.22412 -1.78559,-1.78559 -1.90799,-6.9843 -0.18945,-8.04642 1.30567,-0.80695 1.32469,-1.87349 0.082,-4.60078 -1.01072,-2.2183 -1.11217,-3.86271 -0.2704,-4.38295 2.34454,-1.44902 1.47739,-4.10092 -2.91268,-8.90742 -3.66036,-4.00759 -3.96479,-4.88891 -2.16307,-6.26211 1.15326,-0.87896 2.77311,-3.41875 3.59968,-5.64397 1.18427,-3.18819 1.06425,-4.53051 -0.56614,-6.33208 -2.50595,-2.76903 -1.46263,-4.63658 4.08944,-7.32015 3.01825,-1.45885 4.10623,-2.89845 3.86657,-5.1162 -0.18342,-1.69737 0.28908,-3.08612 1.05002,-3.08612 0.76093,0 1.40342,-0.78752 1.42776,-1.75003 0.0243,-0.96252 1.63746,-3.56199 3.58473,-5.77661 2.90939,-3.30882 4.8271,-4.09599 10.75832,-4.41602 6.48627,-0.34998 7.68699,0.0662 11.84677,4.10664 2.54593,2.47285 6.9111,5.32132 9.7004,6.32994 4.55071,1.64556 5.21578,1.57595 6.47715,-0.67799 1.2083,-2.15912 1.74507,-1.64387 3.8224,3.66923 3.44592,8.81344 12.82173,14.12878 14.66695,8.31499 0.48879,-1.54002 2.10627,-2.80004 3.5944,-2.80004 2.11879,0 2.70617,-0.98699 2.70788,-4.55007 0.001,-2.50254 1.23502,-6.75511 2.74183,-9.45016 1.50681,-2.69504 3.15434,-6.00259 3.66117,-7.35011 0.50683,-1.34752 1.79304,-2.45004 2.85825,-2.45004 1.26438,0 1.9153,-1.57963 1.87496,-4.55007 -0.0879,-6.47191 -3.41503,-18.30921 -5.32519,-18.94593 -2.31089,-0.7703 -1.99125,-4.05978 0.4869,-5.01073 1.15502,-0.44322 2.10003,-1.76053 2.10003,-2.92736 0,-1.76048 0.95825,-1.62204 5.63098,0.81353 4.60223,2.39881 7.00782,2.763 13.16729,1.99343 6.2853,-0.7853 7.96508,-0.51035 10.11928,1.65632 1.42062,1.42886 4.31548,3.34324 6.43302,4.25419 4.56998,1.96596 4.74388,3.02894 1.13011,6.90787 -2.57442,2.76332 -3.14159,9.01387 -1.01121,11.14425 1.95142,1.95141 0.81082,4.6645 -1.96097,4.6645 -5.47727,0 -8.30809,2.6094 -8.30809,7.65824 0,2.61782 -0.70408,6.53322 -1.56462,8.70088 -0.86054,2.16766 -1.76173,6.14624 -2.00264,8.84128 -0.90304,10.1019 -2.2362,16.7607 -3.51375,17.55027 -2.23672,1.38237 -1.46623,7.47698 1.72641,13.656 1.67505,3.24187 3.13378,7.15434 3.24162,8.69436 0.10784,1.54003 0.31236,4.19565 0.45451,5.90138 0.30738,3.68864 8.11695,12.99892 10.90364,12.99892 1.07525,0 1.9957,0.47251 2.04543,1.05002 0.0498,0.57751 0.36337,4.51507 0.69695,8.75014 1.10619,14.04378 2.17881,18.82837 5.96331,26.60042 2.66707,5.47722 4.65885,7.82928 6.89953,8.1475 1.73253,0.24605 3.15005,1.32641 3.15005,2.40079 0,2.49303 4.37956,4.85196 9.00811,4.85196 1.97565,0 3.59209,0.48816 3.59209,1.0848 0,1.44378 -13.87113,15.71546 -15.27438,15.71546 -0.60361,0 -2.45386,-1.17641 -4.11171,-2.61426 z", name : "Зајечар" }, "19" : { path : "m 277.15835,780.19301 c -1.38892,-0.77727 -3.68377,-1.11028 -5.09966,-0.74002 -3.0908,0.80826 -3.97324,-2.31355 -3.37972,-11.95651 0.26747,-4.34573 -0.16715,-6.72604 -1.25425,-6.86924 -0.91495,-0.12054 -3.33993,-0.34083 -5.38883,-0.48957 -2.0489,-0.14874 -8.90392,-2.91713 -15.23337,-6.15198 -8.4273,-4.30701 -12.51253,-5.66093 -15.26007,-5.05748 -2.98114,0.65477 -4.06795,0.16601 -5.29,-2.37902 -2.54777,-5.30594 -3.13223,-7.97483 -1.91162,-8.72922 0.63692,-0.39363 1.51052,-2.47807 1.94131,-4.63206 1.06253,-5.31262 6.17917,-11.54216 9.48016,-11.54216 1.48414,0 2.77718,-0.63001 2.87344,-1.40002 0.65856,-5.26854 2.86189,-8.40014 5.91016,-8.40014 1.64206,0 5.6875,-1.10251 8.98988,-2.45003 6.54225,-2.66954 7.56746,-6.41425 2.54808,-9.30717 -1.47246,-0.84865 -3.93622,-2.74676 -5.47504,-4.218 -2.79537,-2.67263 -2.79517,-2.67717 0.22716,-5.12449 1.66375,-1.34723 3.025,-3.42139 3.025,-4.60925 0,-2.99511 2.99848,-9.29161 4.42479,-9.29161 0.64641,0 1.1753,0.71806 1.1753,1.59568 0,2.10336 4.29807,5.30372 7.19834,5.3599 1.30431,0.0253 2.67818,-1.46918 3.17672,-3.45553 0.48315,-1.92503 1.71035,-3.50005 2.7271,-3.50005 1.01675,0 2.56626,-1.57503 3.44336,-3.50006 0.87711,-1.92503 2.45213,-3.50005 3.50006,-3.50005 2.40737,0 5.53488,-6.66124 4.15753,-8.85505 -0.56808,-0.90482 -0.85148,-2.74764 -0.6298,-4.09516 0.22169,-1.34752 -0.12745,-2.45004 -0.77588,-2.45004 -0.64841,0 -1.13777,-3.62255 -1.08744,-8.05013 0.0777,-6.84041 -0.53845,-8.89166 -4.1005,-13.65021 -2.3056,-3.08005 -5.3209,-6.42333 -6.70068,-7.42951 -3.27478,-2.38808 -3.19848,-5.46308 0.16203,-6.52966 2.8824,-0.91484 4.00877,-2.94864 5.81148,-10.49332 0.75948,-3.17861 0.61416,-5.50911 -0.42134,-6.75681 -1.83417,-2.21004 0.59137,-4.3432 5.23936,-4.60779 10.62316,-0.60473 9.83242,0.025 9.4328,-7.5117 -0.20205,-3.81052 -1.1418,-7.40684 -2.08834,-7.99183 -2.57627,-1.59223 0.20044,-3.70088 6.63339,-5.03745 4.69456,-0.97539 5.66302,-1.80238 6.41471,-5.47773 0.48694,-2.3809 2.19413,-5.73371 3.79374,-7.4507 1.59962,-1.71698 2.59718,-3.9328 2.21681,-4.92402 -0.38037,-0.99123 1.02674,-3.39555 3.1269,-5.34293 3.65116,-3.38555 3.9601,-3.43788 7.05056,-1.19425 1.77764,1.29055 3.25187,3.232 3.27607,4.31434 0.0744,3.3282 7.03122,11.33232 9.84952,11.33232 1.46461,0 4.30279,-0.74717 6.30706,-1.66037 2.95128,-1.3447 3.56272,-2.47598 3.21593,-5.9501 -0.41214,-4.12872 -0.22251,-4.28971 5.05292,-4.28971 3.01462,0 5.73389,-0.7552 6.04282,-1.67821 1.21356,-3.62587 8.46445,5.21837 9.40158,11.46751 0.50162,3.3451 1.82618,6.84066 2.94346,7.76792 2.49296,2.06898 2.65611,4.26806 0.28139,3.79311 -1.74115,-0.34823 -1.98049,0.44657 -2.28855,7.60012 -0.0888,2.06254 -1.10651,4.69508 -2.26152,5.8501 -2.61065,2.61064 -2.75593,7.90012 -0.21699,7.90012 1.03568,0 3.02932,1.26662 4.43033,2.81472 2.47152,2.73101 2.45397,2.91404 -0.59059,6.15483 -2.69287,2.86642 -3.00044,4.25662 -2.16876,9.8027 0.53303,3.55442 1.52644,6.80702 2.20761,7.22801 2.56973,1.58818 1.07068,3.30481 -3.66111,4.1925 -4.08774,0.76686 -5.34714,0.37142 -7.60074,-2.3866 -2.10279,-2.57345 -3.07855,-2.93489 -4.40474,-1.63157 -0.94346,0.92719 -3.41072,1.33276 -5.52967,0.90897 -4.70226,-0.94045 -6.26824,1.2181 -3.94515,5.43803 2.26381,4.11224 2.30158,6.0866 0.2576,13.46508 -0.92727,3.34732 -1.34007,6.98738 -0.91733,8.08902 1.04719,2.72894 5.38519,4.88837 7.88953,3.92736 1.58047,-0.60648 2.17015,0.68382 2.56155,5.60511 0.27965,3.51613 0.0314,6.39296 -0.55165,6.39296 -0.58306,0 -1.06011,0.94501 -1.06011,2.10003 0,1.15502 -0.67818,2.10003 -1.50708,2.10003 -0.90672,0 -1.33619,2.36673 -1.07811,5.94121 0.4051,5.61054 0.19677,5.985 -3.743,6.72794 -2.48512,0.46863 -4.00435,1.54115 -3.75741,2.65258 0.31094,1.39949 -0.8526,1.66022 -4.65516,1.04316 -4.50691,-0.73137 -5.54041,-0.28661 -9.30973,4.0064 -3.72547,4.24309 -5.05372,4.82911 -10.94531,4.82911 -4.49473,0 -6.9563,0.65413 -7.46669,1.98417 -0.41876,1.09129 0.0949,2.31278 1.14157,2.7144 1.08509,0.4164 1.59896,1.89272 1.19563,3.43504 -0.53175,2.03342 0.20253,2.93316 2.95824,3.6248 2.01606,0.506 4.20765,2.34581 4.87021,4.08849 0.66256,1.74266 2.21531,4.00724 3.45054,5.03239 3.2016,2.65709 2.82337,7.23228 -0.67348,8.14673 -2.43607,0.63704 -2.78066,1.50282 -2.0815,5.22968 0.64449,3.43542 0.0935,5.33248 -2.38704,8.21932 -2.23769,2.60417 -3.67173,3.30626 -4.68451,2.29348 -2.12382,-2.12382 -5.22641,-0.47185 -8.03114,4.27619 -1.35031,2.28588 -3.58187,4.15616 -4.95901,4.15616 -4.40138,0 -10.67305,10.246 -7.60544,12.42498 0.6777,0.48137 2.33995,2.61582 3.69389,4.74321 2.41156,3.78916 2.39663,3.89279 -0.73234,5.0855 -1.75674,0.66964 -4.78658,2.8125 -6.73299,4.76193 -2.77836,2.78267 -4.08164,3.24069 -6.06423,2.13117 z", name : "Рашка" }, "20" : { path : "m 354.16257,709.74556 c -1.15502,-1.15502 -2.98505,-2.10003 -4.06673,-2.10003 -2.84944,0 -3.62519,-1.19376 -2.80756,-4.3204 0.52952,-2.0249 1.47029,-2.52051 3.53842,-1.86411 2.50883,0.79627 2.70773,0.45583 1.81741,-3.11079 -0.54985,-2.2027 -2.00965,-5.12549 -3.24399,-6.49509 -2.54605,-2.82502 -4.01924,-17.81015 -1.75092,-17.81015 0.77731,0 1.41329,-0.94501 1.41329,-2.10003 0,-1.15502 0.60033,-2.10003 1.33406,-2.10003 1.20289,0 0.45277,-13.79835 -0.83089,-15.28426 -0.43351,-0.50181 -2.65549,-0.88891 -8.03222,-1.39934 -0.67946,-0.0645 -0.74776,-2.7771 -0.15276,-6.06676 1.67937,-9.28501 1.79955,-12.76564 0.52642,-15.24622 -0.94903,-1.84912 -0.29924,-2.43143 3.33851,-2.99179 2.80586,-0.43222 5.37753,0.0609 6.78887,1.30184 2.73323,2.40317 11.93965,2.06154 14.08433,-0.52264 1.1048,-1.3312 0.85172,-3.93924 -0.93281,-9.61273 l -2.44896,-7.78588 3.70643,-3.86868 c 3.48816,-3.64085 3.87173,-8.52465 0.66952,-8.52465 -0.68763,0 -2.459,-1.20877 -3.93637,-2.68614 -2.58945,-2.58945 -2.59492,-2.7687 -0.15188,-4.97963 1.40795,-1.27417 2.23472,-3.43896 1.86028,-4.87085 -0.3707,-1.41756 0.002,-3.84011 0.82777,-5.38345 1.18119,-2.20709 2.62762,-2.70257 6.77596,-2.32113 12.71287,1.16895 18.78669,2.45319 20.71304,4.37954 3.121,3.121 7.03881,1.7253 6.57548,-2.34248 -0.61078,-5.36234 0.69845,-7.66079 3.18719,-5.59532 1.69234,1.40452 2.9698,0.92452 7.03226,-2.64237 5.46232,-4.79598 6.37393,-5.09158 8.65799,-2.80753 1.13483,1.13483 2.95375,1.08823 6.77727,-0.17365 4.53337,-1.49614 5.39582,-1.42159 6.5061,0.56237 1.44533,2.58266 7.89111,9.26032 8.93876,9.26032 0.3771,0 2.20795,-0.99746 4.06857,-2.21658 3.12136,-2.0452 3.6554,-2.01813 6.90685,0.35001 3.7781,2.75171 5.05209,7.93143 1.62758,6.61732 -1.28899,-0.49463 -2.81818,0.99575 -4.36392,4.25313 -1.94001,4.08828 -2.05202,5.40928 -0.60635,7.1512 0.97527,1.17514 1.89541,3.84858 2.04475,5.94097 0.14933,2.0924 0.37013,4.89488 0.49066,6.22773 0.12052,1.33285 1.79416,2.81867 3.71919,3.30183 2.19024,0.54971 3.50005,1.8695 3.50005,3.52672 0,1.45655 0.73502,2.64827 1.63336,2.64827 0.89835,0 1.20759,0.42577 0.68721,0.94616 -0.52039,0.52038 0.33744,2.31247 1.90627,3.98242 2.6921,2.86561 2.64015,7.67162 -0.0829,7.67162 -1.81095,0 -1.17349,8.69107 0.94477,12.88069 2.57543,5.09383 2.52319,5.252 -2.28864,6.92941 -2.31004,0.80529 -4.20007,2.33553 -4.20007,3.40056 0,1.99419 -6.18338,4.27983 -9.65963,3.5706 -1.07773,-0.21988 -2.73822,-1.17851 -3.69,-2.13028 -2.8463,-2.8463 -19.34196,-1.66346 -25.22726,1.80895 -2.74112,1.6173 -5.79521,2.94054 -6.78687,2.94054 -2.44818,0 -6.43706,4.59247 -6.43706,7.4111 0,1.2598 -1.18755,2.9261 -2.639,3.70289 -1.45145,0.7768 -3.07472,3.14837 -3.60725,5.27017 -0.85561,3.409 -8.27069,11.61629 -10.49503,11.61629 -0.4602,0 -1.91559,-1.26002 -3.2342,-2.80005 -2.6119,-3.05047 -5.93371,-3.6511 -7.36697,-1.33204 -0.62536,1.01186 -1.49328,0.98167 -2.79318,-0.0972 -2.55537,-2.12077 -7.86888,0.66881 -6.76304,3.55059 0.43872,1.14326 0.10025,2.07867 -0.75214,2.07867 -0.92643,0 -1.54981,2.81568 -1.54981,7.00011 0,3.85006 -0.61384,7.00011 -1.36407,7.00011 -0.75024,0 -2.34145,1.89003 -3.53601,4.20007 -2.44379,4.72577 -3.76603,5.1341 -6.80011,2.10003 z", name : "Расина" }, "21" : { path : "m 562.56588,727.45629 c -6.54562,-2.12837 -21.70034,-15.10154 -21.70034,-18.57653 0,-0.85761 -1.03079,-1.13826 -2.33811,-0.63659 -1.28596,0.49347 -2.80226,0.14622 -3.36954,-0.77168 -0.77568,-1.25506 -2.24451,-1.09325 -5.92361,0.65259 -5.99597,2.84528 -6.24138,2.84915 -8.94959,0.14094 -1.29525,-1.29525 -3.10196,-1.77704 -4.45007,-1.18668 -1.24823,0.54662 -4.15955,1.23896 -6.46958,1.53851 -3.77957,0.49012 -4.47553,-0.0568 -6.95142,-5.46342 -1.51325,-3.30444 -2.8314,-8.11451 -2.92923,-10.68904 -0.18354,-4.83025 -2.31044,-7.16051 -6.56962,-7.19778 -1.34752,-0.0118 -2.45003,-0.65145 -2.45003,-1.42146 0,-0.77001 -0.91647,-1.40002 -2.0366,-1.40002 -1.2272,0 -2.40973,1.98898 -2.97547,5.00465 -0.66943,3.56833 -1.3707,4.57284 -2.44348,3.50006 -0.82753,-0.82753 -2.56147,-1.5046 -3.85321,-1.5046 -1.29174,0 -3.12672,-0.93756 -4.07774,-2.08347 -1.40034,-1.6873 -1.29983,-2.2482 0.52859,-2.94983 3.13192,-1.20183 2.83834,-4.76686 -0.39255,-4.76686 -3.35473,0 -4.97362,-3.3778 -5.01633,-10.4665 -0.0233,-3.86569 -0.67517,-5.65646 -2.13357,-5.86112 -1.15502,-0.16208 -5.16265,-0.69885 -8.90584,-1.19281 -6.76775,-0.8931 -6.78733,-0.91074 -3.50006,-3.15453 1.81817,-1.24102 3.80957,-3.08194 4.42534,-4.09093 0.61577,-1.00899 2.04889,-1.83453 3.1847,-1.83453 2.81287,0 5.32554,-6.77499 3.38145,-9.11748 -2.53573,-3.05537 -2.94864,-11.40474 -0.65803,-13.30578 2.6657,-2.21233 2.65272,-6.15276 -0.0276,-8.37723 -1.15502,-0.95858 -2.10004,-2.57944 -2.10004,-3.60191 0,-1.02247 -0.78751,-2.36286 -1.75003,-2.97863 -0.96251,-0.61577 -1.75002,-2.0646 -1.75002,-3.21961 0,-1.15502 -1.41753,-2.30136 -3.15005,-2.54742 -3.5123,-0.49882 -3.95063,-1.69209 -1.51592,-4.12679 1.24549,-1.2455 1.08092,-1.84642 -0.69197,-2.52674 -1.27936,-0.49094 -2.04696,-1.34428 -1.70578,-1.89631 0.34117,-0.55203 -0.22887,-2.64051 -1.26677,-4.64105 -1.6706,-3.2201 -1.57582,-3.97146 0.8262,-6.54973 1.49231,-1.6018 3.31875,-2.91236 4.05877,-2.91236 1.5113,0 1.78708,-4.22031 0.49569,-7.58562 -0.46739,-1.218 -1.72741,-2.21454 -2.80005,-2.21454 -1.07263,0 -1.95025,-1.20016 -1.95025,-2.66701 0,-3.87044 11.25477,-10.02675 19.44539,-10.63656 5.6487,-0.42055 7.30605,0.0659 10.58604,3.10731 3.37975,3.13388 3.59299,3.77149 1.62894,4.87063 -2.81988,1.57808 -2.86964,3.51587 -0.15986,6.22564 1.86669,1.8667 1.86132,2.33874 -0.0483,4.2484 -1.3566,1.35659 -1.68186,2.73865 -0.88257,3.75006 0.69619,0.88093 1.68074,3.90687 2.18789,6.7243 0.54042,3.00226 2.70696,6.86765 5.23423,9.33853 2.37169,2.31876 3.93434,4.82725 3.47256,5.57443 -1.16089,1.87836 5.50861,6.0179 8.0961,5.02499 1.15849,-0.44456 2.92403,-0.27995 3.92342,0.36579 0.99939,0.64574 3.0456,1.17408 4.54714,1.17408 1.57349,0 3.05628,1.22121 3.50006,2.88261 0.42349,1.58544 2.11862,4.57538 3.76695,6.64431 2.71532,3.40817 3.60344,3.67856 9.45015,2.87718 3.54925,-0.48648 6.45318,-1.45439 6.45318,-2.15092 0,-0.69653 -1.37276,-3.12319 -3.0506,-5.39258 -1.67783,-2.26938 -2.64873,-4.52801 -2.15757,-5.01918 1.14293,-1.14293 8.65492,7.71903 8.68531,10.24614 0.0126,1.04819 0.96794,2.50521 2.12295,3.2378 1.15502,0.7326 1.55039,1.34164 0.87859,1.35343 -0.67179,0.0118 -0.42534,0.98068 0.54767,2.15309 1.04419,1.25816 2.86272,1.78454 4.43799,1.28457 1.71829,-0.54537 4.4376,0.502 7.63476,2.9406 4.21702,3.21647 5.87326,3.66329 10.98281,2.96295 5.29154,-0.72528 6.10943,-0.47095 6.78429,2.10971 0.50253,1.92167 1.5055,2.65117 2.90608,2.11371 1.1763,-0.45138 2.51108,-0.2182 2.96619,0.51818 1.30713,2.11498 4.86229,1.55845 4.86229,-0.76116 0,-2.71167 1.3572,-2.61268 5.2255,0.38114 l 3.12547,2.41891 -2.37003,11.4314 c -2.34133,11.29293 -2.42555,11.43789 -6.95251,11.96638 -2.59907,0.30343 -6.8215,-0.5541 -9.75556,-1.98125 -2.8452,-1.38393 -7.66627,-2.51623 -10.71349,-2.51623 l -5.5404,0 0.89214,6.50886 c 0.49068,3.57987 1.61481,7.37963 2.49808,8.44389 1.23518,1.4883 1.09037,2.32895 -0.62724,3.6413 -1.22824,0.93845 -3.14957,4.41721 -4.26962,7.73057 -1.92475,5.69386 -1.87596,6.17382 0.8894,8.75014 1.60921,1.49921 3.59456,2.75145 4.41188,2.78274 0.81732,0.0314 3.66727,1.92132 6.33323,4.20006 2.90784,2.4855 6.44181,4.14317 8.83276,4.14317 2.19207,0 3.62311,0.58649 3.1801,1.30328 -0.44301,0.71681 -0.16519,1.69901 0.61739,2.18267 2.51366,1.55352 1.52459,4.38659 -2.23363,6.39793 -2.01106,1.07628 -4.2005,3.38777 -4.86542,5.13665 -1.23243,3.24153 -2.61408,3.60437 -7.57835,1.99019 l 0,0 z", name : "Нишава" }, "22" : { path : "m 622.11135,770.99653 c -0.0288,-1.13026 -2.24341,-1.75002 -6.25348,-1.75002 -7.7494,0 -12.07125,-1.60721 -16.65929,-6.19526 -3.47425,-3.47424 -3.50024,-3.63051 -0.8408,-5.0538 2.11617,-1.13254 2.43374,-2.04901 1.38747,-4.00399 -1.61987,-3.02676 -19.33547,-11.77881 -21.87201,-10.80545 -0.97648,0.37471 -2.12279,-0.22394 -2.54736,-1.33034 -0.42456,-1.1064 -2.10423,-2.01163 -3.73258,-2.01163 -3.68622,0 -2.95573,-2.99865 1.18649,-4.87051 4.13371,-1.86802 5.0037,-4.83748 2.2944,-7.83123 -2.10809,-2.32941 -1.96968,-2.64649 2.06628,-4.73356 4.56745,-2.36193 5.28333,-5.06408 2.96034,-11.17402 -1.05029,-2.76246 -2.3426,-3.59119 -5.60009,-3.59119 -2.32909,0 -4.23472,-0.63001 -4.23472,-1.40002 0,-0.77002 -0.59842,-1.40003 -1.32983,-1.40003 -1.89918,0 -14.07041,-8.38244 -14.07041,-9.69042 0,-3.06017 3.24402,-9.78834 4.58962,-9.51898 2.56266,0.51298 2.78922,-4.46518 0.42953,-9.43787 -2.66893,-5.62435 -2.84375,-9.09578 -0.46908,-9.31455 3.72761,-0.3434 7.3902,0.5142 8.27637,1.93791 0.50944,0.81847 5.21682,1.54105 10.46084,1.60575 8.50073,0.10486 9.58271,-0.18599 9.97843,-2.68243 1.48706,-9.38134 1.43897,-9.32505 5.96651,-6.98377 2.29266,1.18558 4.16847,1.78869 4.16847,1.34025 0,-0.44844 1.4002,0.16539 3.11156,1.36407 3.64225,2.55113 9.02459,2.87154 9.78756,0.58265 0.31513,-0.9454 2.15943,-0.0887 4.52117,2.10004 4.4089,4.08603 14.35327,5.4519 12.94338,1.77779 -1.08117,-2.81747 9.01473,-11.96453 11.64724,-10.55261 1.14938,0.61645 4.37658,1.48406 7.17155,1.928 3.89086,0.61802 5.98605,2.11208 8.94054,6.37541 2.12233,3.06253 4.37355,5.56823 5.00272,5.56823 0.62916,0 2.17093,2.36254 3.42616,5.25008 1.25522,2.88755 2.86131,6.1951 3.56908,7.35012 0.70777,1.15502 1.87236,3.44547 2.58798,5.08988 1.90109,4.36853 11.45306,13.23198 14.00245,12.99314 1.20451,-0.11284 2.84992,-0.13262 3.65647,-0.0439 1.26657,0.13925 1.61811,6.10004 0.85479,14.49389 -0.12166,1.33786 -2.66576,3.97565 -5.65355,5.86176 -2.98778,1.88611 -6.06327,5.20156 -6.83442,7.36768 -1.5499,4.35361 -10.14727,13.79392 -15.99392,17.56207 -2.89143,1.86351 -3.97786,3.96624 -4.70183,9.10014 -1.28674,9.12454 -3.93846,13.01984 -8.60057,12.63399 -2.04641,-0.16936 -3.95826,0.40462 -4.24856,1.27553 -0.36692,1.10076 -1.89051,0.90366 -4.99806,-0.64659 -5.52754,-2.7575 -12.04128,-2.39598 -14.47124,0.80318 -1.13259,1.49112 -1.84806,1.74313 -1.8756,0.66067 l 0,-10e-6 z", name : "Пирот" }, "23" : { path : "m 431.3138,773.87752 c -1.34753,-0.34994 -2.45004,-1.77133 -2.45004,-3.15864 0,-2.88654 -8.0357,-5.19686 -10.27766,-2.9549 -1.74863,1.74863 -8.1202,-9.99845 -7.7536,-14.29508 0.50635,-5.93442 -0.17738,-9.23114 -2.36907,-11.42283 -3.10478,-3.10478 -6.07685,-2.73113 -7.55649,0.95002 -1.23071,3.06185 -1.26865,3.04552 -1.35491,-0.58334 -0.0488,-2.05337 -0.71669,-3.9434 -1.48419,-4.20007 -0.7675,-0.25667 -1.66997,-4.08055 -2.00549,-8.49751 -0.68495,-9.01708 -1.54616,-11.11828 -4.32676,-10.55659 -1.05405,0.21293 -2.8887,-0.87288 -4.07699,-2.41291 -2.14654,-2.78193 -2.17689,-2.77917 -4.69182,0.42655 l -2.5313,3.22658 -2.60327,-2.87658 c -2.78644,-3.07898 -11.10913,-4.00123 -12.71148,-1.40858 -0.62314,1.00827 -1.50968,0.96806 -2.83082,-0.12839 -1.61881,-1.3435 -1.54748,-2.18598 0.45031,-5.31806 1.30562,-2.04692 3.46724,-4.53084 4.8036,-5.51983 1.75969,-1.30227 2.20121,-2.94084 1.60104,-5.94171 -0.45579,-2.27895 -0.0258,-6.08184 0.95544,-8.45087 1.45065,-3.50217 2.38295,-4.15703 4.9876,-3.5033 1.76507,0.443 3.65225,0.0779 4.20297,-0.81324 0.69873,-1.13057 1.5468,-0.8688 2.81815,0.86988 1.00024,1.36792 3.4189,2.48712 5.3748,2.48712 4.65247,0 12.81097,-6.29437 13.9282,-10.74576 0.48394,-1.92817 2.50514,-5.13101 4.49155,-7.11743 1.99206,-1.99205 3.26346,-4.51908 2.83518,-5.63517 -0.52081,-1.3572 0.47498,-2.32592 3.02415,-2.94194 2.09035,-0.50515 5.52644,-2.1247 7.63575,-3.59901 4.63562,-3.24009 21.60648,-4.33217 22.70677,-1.46119 0.36887,0.96252 2.23417,1.75003 4.14511,1.75003 1.91093,0 4.0523,1.0326 4.75859,2.29467 0.86112,1.53874 3.76017,2.49317 8.8002,2.89721 8.5784,0.68771 9.24635,1.02691 7.1044,3.6078 -1.9021,2.29189 2.12151,12.20066 4.95427,12.20066 1.44407,0 1.47352,0.55512 0.14255,2.68636 -1.31494,2.10554 -1.29301,3.14984 0.10143,4.83003 1.67966,2.02387 12.52775,7.88385 14.59472,7.88385 0.5269,0 1.00774,-2.67754 1.06853,-5.95009 0.0608,-3.27256 0.42829,-5.16259 0.81668,-4.20007 0.38838,0.96251 2.1552,1.75003 3.92625,1.75003 3.51984,0 5.60016,4.38662 3.21259,6.77418 -0.94694,0.94694 -0.34069,2.91224 1.84545,5.98239 1.79063,2.51469 3.13774,5.99706 2.99361,7.7386 -0.14413,1.74154 0.35131,3.54552 1.10098,4.00884 2.31779,1.43247 -2.62808,7.31092 -6.86384,8.15808 -2.17319,0.43464 -5.86269,2.39862 -8.19889,4.3644 -2.3362,1.96578 -5.64105,3.57415 -7.3441,3.57415 -1.70306,0 -4.33538,1.57503 -5.84961,3.50006 -2.05998,2.61884 -4.07156,3.50005 -7.98969,3.50005 -3.99083,0 -6.19379,0.99915 -9.26046,4.20007 -2.21315,2.31004 -4.69356,4.2201 -5.51201,4.24459 -0.81846,0.0245 -2.67038,0.93978 -4.1154,2.03399 -2.5621,1.94009 -2.55625,2.10986 0.23577,6.84198 2.79843,4.74299 2.80368,4.90627 0.23282,7.23286 -1.44663,1.30918 -2.53523,2.77783 -2.4191,3.26365 0.11613,0.48583 -0.27394,2.93085 -0.86682,5.43339 -0.73273,3.0929 -1.90238,4.55007 -3.65225,4.55007 -1.41587,0 -3.41334,0.24012 -4.43883,0.5336 -1.0255,0.29348 -2.96705,0.24729 -4.31457,-0.10265 z", name : "Топлица" }, "24" : { path : "m 476.20735,816.49726 c -0.33557,-2.3391 -1.27156,-3.06245 -3.63577,-2.80976 -2.24692,0.24015 -3.55917,-0.64682 -4.45919,-3.01405 -1.66328,-4.37477 -3.55701,-5.43491 -10.45387,-5.85225 -8.64949,-0.5234 -22.60286,-4.10946 -20.66061,-5.30983 0.92857,-0.57389 1.41,-2.57817 1.06985,-4.45397 -0.34015,-1.87579 -0.0302,-3.41054 0.68886,-3.41054 0.71902,0 1.30731,-1.58357 1.30731,-3.51905 0,-1.93548 0.57705,-4.61302 1.28233,-5.9501 2.75759,-5.22786 5.71823,-12.74592 5.72701,-14.54281 0.005,-1.03865 1.22415,-3.73144 2.70906,-5.98399 2.45768,-3.72821 2.5145,-4.45392 0.63357,-8.09124 -2.1524,-4.16228 -1.63219,-6.71352 1.36892,-6.71352 0.96551,0 3.56624,-1.89003 5.77939,-4.20007 2.90695,-3.0342 5.32905,-4.20006 8.72571,-4.20006 3.04018,0 5.8403,-1.13852 7.92342,-3.22164 1.7719,-1.77191 3.99487,-2.96391 4.93992,-2.64889 0.94505,0.31502 4.03424,-1.27672 6.86488,-3.5372 2.83063,-2.26047 7.23591,-4.83032 9.7895,-5.71078 4.67983,-1.61355 9.92458,-6.62895 10.01076,-9.57299 0.0256,-0.87512 1.77911,-1.88853 3.89664,-2.25203 2.11753,-0.3635 4.84036,-1.08936 6.05073,-1.61302 1.53814,-0.66547 2.7119,0.16993 3.89881,2.77491 1.5356,3.37027 1.92799,3.52745 4.09943,1.64215 5.53966,-4.80969 16.11134,-3.57054 19.48198,2.28356 2.62812,4.5645 15.89149,13.43416 21.40808,14.3163 l 5.74398,0.9185 -3.07155,3.26952 c -2.54346,2.70739 -2.76605,3.63764 -1.29463,5.4106 0.97732,1.17759 2.88268,2.14107 4.23413,2.14107 1.35146,0 3.23573,0.93808 4.18727,2.08462 0.95156,1.14654 2.32674,1.71587 3.05597,1.26517 1.89476,-1.17102 9.20775,2.12076 10.14655,4.56725 0.4349,1.13333 1.41216,1.67652 2.1717,1.2071 1.68025,-1.03845 7.03894,1.64535 7.03894,3.52532 0,0.74292 -1.26002,1.35077 -2.80005,1.35077 -4.07698,0 -3.41254,2.87618 1.84389,7.98172 5.02141,4.87729 10.41577,7.41852 15.74753,7.41852 1.8749,0 3.40891,0.52019 3.40891,1.15598 0,2.14767 -6.25719,6.66894 -14.00019,10.11615 -4.23504,1.88546 -9.17363,5.16063 -10.97462,7.27817 -1.80099,2.11753 -4.41115,3.85006 -5.80033,3.85006 -1.3892,0 -2.88845,0.94501 -3.33168,2.10003 -1.38157,3.60034 -8.42351,2.4581 -13.95038,-2.26283 -2.80922,-2.39957 -4.76082,-4.92406 -4.33691,-5.60997 1.27905,-2.06955 -3.79008,-3.18643 -6.57328,-1.4483 -3.11651,1.94629 -4.48608,2.08571 -3.41168,0.3473 1.51649,-2.45373 -0.95302,-5.72643 -4.32103,-5.72643 -1.86974,0 -4.96853,1.02805 -6.88619,2.28455 -3.1075,2.03611 -3.74922,2.05598 -5.90084,0.18269 -2.99479,-2.60739 -5.91422,-1.70759 -5.91422,1.82282 0,2.8233 -2.09084,3.62148 -12.39677,4.73246 -10.14271,1.0934 -15.24088,3.34159 -16.19459,7.1415 -0.47435,1.88996 -1.48046,3.43629 -2.2358,3.43629 -0.75535,0 -1.37335,1.8543 -1.37335,4.12068 0,4.8577 -4.31895,8.47952 -10.11167,8.47952 -2.13871,0 -5.14858,1.26002 -6.6886,2.80004 -3.53381,3.53381 -3.90423,3.50472 -4.45723,-0.35 z", name : "Јабланица" }, "25" : { path : "m 476.46451,912.39718 c -9.62204,-3.22982 -10.35053,-3.72717 -12.52234,-8.54937 -1.14633,-2.54526 -2.78282,-4.19806 -3.77839,-3.81602 -2.11637,0.81212 -3.71058,-3.48323 -2.48153,-6.68609 0.48485,-1.26349 2.09394,-2.29726 3.57574,-2.29726 1.48181,0 3.021,-0.85162 3.42041,-1.89248 0.4335,-1.12966 2.05584,-1.63831 4.0249,-1.2619 2.6727,0.51092 3.74202,-0.30368 5.63491,-4.29264 2.07705,-4.37705 2.10982,-5.3553 0.29548,-8.81811 -1.95001,-3.72171 -1.81699,-4.16257 2.99156,-9.91514 2.76776,-3.31113 5.92265,-6.02024 7.01086,-6.02024 1.45989,0 1.75419,-1.12187 1.12265,-4.27956 -0.75802,-3.79012 -0.39379,-4.44064 3.1848,-5.68815 4.23482,-1.47626 6.53013,-6.27102 4.29263,-8.96704 -1.83164,-2.20699 1.41752,-10.27351 4.53691,-11.26357 3.20169,-1.01617 3.11193,-3.22983 -0.30825,-7.60228 -3.47567,-4.44338 -3.47567,-5.90464 0,-8.07523 1.69772,-1.06024 2.80004,-3.26489 2.80004,-5.60009 0,-2.38675 1.10939,-4.54426 2.9172,-5.67325 1.60446,-1.002 2.59142,-2.6708 2.19324,-3.70845 -0.82815,-2.15812 3.21761,-3.45783 13.78133,-4.42726 6.99483,-0.64191 13.30874,-3.56452 13.30874,-6.16039 0,-0.82754 1.02177,-0.74151 2.55339,0.215 1.99189,1.24396 3.66969,1.0649 7.62974,-0.81427 5.75178,-2.7294 8.09267,-2.04777 7.02243,2.04482 -0.59404,2.27161 -0.042,2.79865 2.93148,2.79865 2.01484,0 3.66334,-0.58234 3.66334,-1.29408 0,-1.18653 3.59725,1.40875 9.70408,7.00112 5.25551,4.81278 13.35102,5.74952 16.35067,1.89196 0.8549,-1.0994 2.53143,-1.99891 3.72561,-1.99891 1.19419,0 3.69435,-1.8101 5.55591,-4.02245 4.04088,-4.8023 9.46444,-8.07585 9.46444,-5.71253 0,0.86004 2.17452,5.27396 4.83226,9.8087 2.65773,4.53475 4.27266,8.59084 3.58871,9.01355 -2.76318,1.70774 -5.63081,9.51422 -4.15026,11.29817 0.86408,1.04116 0.93723,2.09203 0.17827,2.56109 -0.70789,0.4375 -1.68351,3.80114 -2.16805,7.47476 -0.48455,3.67361 -1.25519,8.95868 -1.71255,11.74458 -0.73478,4.47575 -0.44963,5.16121 2.45007,5.88946 1.80491,0.45329 6.06047,3.65604 9.4568,7.11722 l 6.17516,6.29304 -2.46565,10.46999 c -1.53224,6.50647 -3.07492,10.24761 -4.07511,9.88255 -0.88522,-0.32308 -2.2405,-0.12153 -3.01173,0.44788 -1.87595,1.38504 -4.96638,7.51431 -5.44991,10.80879 -0.5847,3.98382 -15.86709,6.97631 -19.4513,3.80881 -1.83806,-1.62437 -2.26128,-3.31297 -1.59295,-6.35582 0.90794,-4.13383 0.89717,-4.14168 -4.49704,-3.27949 -3.38111,0.54043 -6.47602,2.19237 -8.25979,4.40874 -1.56895,1.94946 -4.26626,3.54447 -5.99403,3.54447 -1.72777,0 -3.51793,0.98123 -3.97813,2.1805 -0.47403,1.2353 -1.74566,1.8317 -2.93356,1.37586 -1.15325,-0.44254 -2.89528,-0.14196 -3.87117,0.66796 -0.9759,0.80992 -4.91983,1.84512 -8.76429,2.30044 -6.26887,0.74245 -7.6603,0.36662 -13.48863,-3.64338 -7.60559,-5.23278 -11.13475,-5.14857 -11.76139,0.28064 -0.49877,4.32121 -4.34818,5.24313 -7.25713,1.73806 -2.84597,-3.42919 -7.96334,-2.63092 -8.97504,1.40002 -0.56283,2.2425 -1.86333,3.50006 -3.61956,3.50006 -1.5076,0 -3.77309,1.57502 -5.03442,3.50005 -1.35429,2.06691 -3.62191,3.50006 -5.53802,3.50006 -2.01511,0 -3.58147,1.06108 -4.13339,2.80004 -1.01074,3.18456 -0.68771,3.17219 -9.10015,0.34841 l 0,0 z", name : "Пчиња" }, "26" : { path : "m 280.81141,905.76146 c -2.50254,-1.08771 -4.55008,-2.59562 -4.55008,-3.35091 0,-0.7553 -1.38235,-1.81201 -3.0719,-2.34825 -1.68954,-0.53624 -4.10096,-2.24581 -5.35869,-3.79906 -1.71929,-2.12323 -2.88609,-2.48869 -4.70167,-1.47264 -1.32817,0.74328 -4.27184,1.07888 -6.54149,0.74576 -3.73066,-0.54754 -4.12662,-1.1113 -4.12662,-5.87542 0,-3.011 -0.91368,-6.02804 -2.13165,-7.03887 -1.1724,-0.973 -1.80115,-2.81038 -1.39722,-4.08306 0.40393,-1.27268 -1.75586,-7.39455 -4.79955,-13.60417 -4.36059,-8.89632 -6.46212,-11.67466 -9.9114,-13.1034 -4.62987,-1.91775 -9.13341,-7.40071 -7.82184,-9.52289 0.42907,-0.69424 0.24287,-3.13555 -0.41376,-5.42512 -0.92098,-3.21126 -0.59879,-4.937 1.40945,-7.54944 5.17062,-6.72624 3.56124,-8.58551 -13.08464,-15.11625 -6.03427,-2.36745 -4.28627,-10.95119 2.96695,-14.56957 3.71865,-1.85511 4.64947,-1.85654 8.141,-0.0126 2.16826,1.14512 7.56485,2.42365 11.99242,2.84118 6.83433,0.6445 8.05012,0.41262 8.05012,-1.53533 0,-1.26196 0.63001,-2.29448 1.40003,-2.29448 0.77001,0 1.40002,-0.65552 1.40002,-1.45671 0,-0.80119 1.3785,-3.32123 3.06333,-5.60009 2.32187,-3.1405 4.18563,-4.14337 7.70012,-4.14337 2.55024,0 4.63679,-0.63001 4.63679,-1.40003 0,-0.77001 1.57503,-1.40002 3.50006,-1.40002 1.92503,0 3.50005,-0.63001 3.50005,-1.40002 0,-1.93493 3.66684,-1.75334 7.06746,0.35 2.49327,1.54214 3.30292,1.2095 6.81547,-2.80004 2.19235,-2.50254 4.96845,-4.55007 6.16913,-4.55007 1.20068,0 2.48918,-0.49533 2.86334,-1.10073 1.73886,-2.81354 13.48518,0.85342 13.48518,4.2098 0,0.8858 1.20811,2.91116 2.68469,4.50082 2.40324,2.58727 2.52496,3.68916 1.16105,10.51074 -1.14744,5.73892 -1.11896,7.75536 0.11536,8.1668 2.61994,0.87331 1.89987,3.99831 -1.43089,6.20985 -2.98629,1.98283 -3.00605,2.17283 -0.72584,6.97801 3.02385,6.37229 5.39747,8.33984 8.04275,6.66679 3.45814,-2.18715 4.51162,-1.50922 3.76051,2.41996 -0.81081,4.24145 0.0492,7.43885 2.00094,7.43885 0.71983,0 2.62634,1.22749 4.23669,2.72776 2.17029,2.02193 4.05704,2.50423 7.29157,1.86391 3.98092,-0.78807 4.19195,-0.65509 2.4059,1.51607 -1.70007,2.06664 -1.62608,2.62244 0.5621,4.22248 1.81601,1.3279 2.05366,2.1307 0.8508,2.87411 -0.95534,0.59043 -1.28123,2.25346 -0.76211,3.88908 0.58273,1.83601 0.37796,2.53061 -0.57282,1.943 -0.81387,-0.503 -2.16355,0.36312 -2.99929,1.92471 -0.83574,1.56159 -2.63858,2.83925 -4.00632,2.83925 -2.68445,0 -8.61487,-4.85637 -8.61487,-7.05464 0,-1.66803 -7.95692,-1.79523 -8.97774,-0.14352 -0.40857,0.66108 -4.49896,1.54256 -9.08975,1.95884 -12.22696,1.1087 -17.4657,7.67759 -14.01567,17.57434 0.94028,2.69731 1.01028,5.2045 0.19028,6.81606 -2.40135,4.71942 0.72521,11.4483 7.5569,16.26372 5.92526,4.17651 6.13128,4.52589 3.09193,5.24338 -1.79098,0.4228 -3.25633,1.48061 -3.25633,2.35069 0,1.23644 -9.66475,8.97468 -10.91235,8.73716 -0.15831,-0.0301 -2.33536,-0.94474 -4.8379,-2.03245 z", name : "Пећ" }, "27" : { path : "m 328.76217,832.24751 c -1.39371,-1.54003 -3.36563,-2.80005 -4.38206,-2.80005 -1.30636,0 -1.60203,-1.23006 -1.00872,-4.19659 1.09508,-5.47542 -1.53656,-8.91571 -5.28533,-6.90942 -1.47509,0.78944 -3.29896,1.05402 -4.05306,0.58796 -1.79577,-1.10984 -1.77341,-8.66836 0.0289,-9.78227 1.72912,-1.06866 1.86797,-7.70012 0.16122,-7.70012 -0.68134,0 -0.92129,-3.95563 -0.53321,-8.79029 0.56175,-6.99821 0.24346,-9.17382 -1.56124,-10.67159 -1.24676,-1.03472 -2.26683,-2.70628 -2.26683,-3.71458 0,-2.36856 -7.91258,-8.02059 -10.17057,-7.26493 -0.95129,0.31835 -3.46215,-1.27386 -5.57968,-3.53825 -5.88576,-6.29396 -4.65433,-13.55943 2.10958,-12.44654 1.36478,0.22455 2.873,-0.72576 3.38836,-2.13497 0.51082,-1.39682 1.93794,-3.85958 3.17138,-5.47281 1.74845,-2.28685 2.75866,-2.60764 4.58463,-1.45584 3.26337,2.05848 12.47397,-7.22996 11.367,-11.46305 -0.41334,-1.5806 0.2567,-4.31327 1.48899,-6.0726 3.02573,-4.31984 2.81977,-8.61767 -0.55954,-11.6759 -1.54002,-1.3937 -2.80004,-3.68438 -2.80004,-5.09039 0,-1.5306 -1.34788,-2.89468 -3.3591,-3.39946 -2.04627,-0.51358 -3.60246,-2.11617 -3.98179,-4.10051 -0.55492,-2.90286 0.0328,-3.35573 5.39931,-4.16049 4.22082,-0.63295 7.03286,-2.10438 9.40164,-4.91952 3.02054,-3.5897 3.91199,-3.8964 8.38986,-2.88648 5.55004,1.25174 6.55043,0.7971 6.55043,-2.97692 0,-3.85997 2.05317,-3.1102 6.13394,2.23996 4.42401,5.80017 4.43069,5.86703 0.68434,6.84672 -1.99184,0.52088 -2.70368,1.50476 -2.14397,2.96333 0.46085,1.20095 0.22767,2.18355 -0.51818,2.18355 -0.74584,0 -1.35608,1.23147 -1.35608,2.73661 0,2.03072 1.29275,2.97912 5.01185,3.67683 2.75652,0.51713 5.34397,1.8057 5.74988,2.86348 0.40591,1.05779 1.61563,1.92326 2.68827,1.92326 1.07263,0 1.95024,0.52355 1.95024,1.16345 0,0.63989 1.69882,2.05741 3.77516,3.15005 5.34545,2.81294 10.22507,7.5538 10.22507,9.9343 0,2.86339 5.25115,13.3905 7.34883,14.73237 2.76169,1.76664 6.65139,9.61171 6.65139,13.41509 0,1.90444 -0.94502,4.24692 -2.10004,5.20549 -1.15501,0.95858 -2.10003,2.89502 -2.10003,4.30319 0,4.73724 4.18583,18.68294 6.21755,20.71466 1.75112,1.75112 1.52887,2.52665 -1.70634,5.95437 -2.38687,2.52889 -3.83632,5.76414 -4.04519,9.02905 -0.31368,4.90336 -1.33684,6.26284 -8.50534,11.30109 -3.53592,2.48516 -7.36092,1.67576 -7.36092,-1.55763 0,-2.9874 -5.52772,-2.67534 -9.72281,0.54889 -2.62332,2.01621 -4.22221,2.32663 -6.84591,1.3291 -3.94738,-1.50079 -8.63168,1.69235 -8.63168,5.88394 0,1.59043 -1.45091,2.7905 -4.06899,3.36552 -4.25227,0.93396 -6.51883,5.44731 -4.88012,9.7177 1.14762,2.99066 0.0989,2.78143 -2.95108,-0.58876 l 0,0 z", name : "Косовска Митровица" }, "28" : { path : "m 408.79677,946.11598 c -0.51334,-0.51334 -0.93335,-1.92134 -0.93335,-3.1289 0,-1.20755 -1.73252,-5.81314 -3.85006,-10.23465 -3.20322,-6.68848 -4.67331,-8.27843 -8.75014,-9.46351 -7.01127,-2.03807 -7.2798,-1.96533 -13.37663,3.62301 -10.33148,9.46983 -10.49168,9.50994 -13.52202,3.38508 -2.30666,-4.66217 -3.63345,-5.64024 -9.58954,-7.06907 -5.27643,-1.2658 -6.9125,-2.28796 -6.9125,-4.31869 0,-1.46322 0.72805,-2.66041 1.61788,-2.66041 0.88984,0 3.56738,-1.4639 5.9501,-3.25312 2.38272,-1.78921 5.36015,-3.63084 6.61653,-4.09253 2.96366,-1.08906 3.88825,-9.1092 2.07216,-17.97472 -1.1168,-5.45187 -2.00591,-6.91385 -4.28295,-7.04254 -2.45798,-0.13889 -2.50934,-0.25691 -0.35515,-0.81584 1.39332,-0.36151 2.34711,-1.69624 2.13497,-2.98765 -0.21089,-1.28382 0.0558,-3.03323 0.59272,-3.88758 1.36999,-2.18008 -1.95225,-8.79132 -4.89611,-9.74326 -1.34752,-0.43574 -2.45003,-1.69481 -2.45003,-2.79794 0,-1.10312 -0.51654,-2.00569 -1.14787,-2.00569 -0.63133,0 -3.26484,-1.89003 -5.85225,-4.20006 -2.5874,-2.31004 -6.16593,-4.20007 -7.95227,-4.20007 -2.91021,0 -3.27097,-0.69143 -3.46973,-6.65011 -0.122,-3.65755 -0.13616,-7.71466 -0.0315,-9.01578 0.1047,-1.30112 -0.9973,-2.74263 -2.44889,-3.20334 -5.9025,-1.87339 -4.59366,-8.05068 2.05958,-9.72054 2.0447,-0.51319 3.44263,-1.87651 3.44263,-3.35741 0,-4.06797 2.68266,-5.84688 6.31886,-4.19011 2.55798,1.16549 4.00271,0.83506 7.43099,-1.69958 l 4.25567,-3.14635 3.25608,3.78542 c 2.98965,3.47568 3.55095,3.63244 6.85976,1.91581 8.03244,-4.16729 12.38584,-9.14126 13.36609,-15.27145 0.56866,-3.55617 2.29134,-7.22906 4.23589,-9.0312 3.98407,-3.69231 4.00907,-4.14462 0.47739,-8.63442 -1.54002,-1.95783 -2.80004,-4.76603 -2.80004,-6.24045 0,-1.47442 -0.91802,-4.45601 -2.04004,-6.62577 -1.76793,-3.4188 -1.77387,-4.29654 -0.0445,-6.58058 4.13919,-5.46685 1.79412,-19.34834 -4.09418,-24.2352 -2.95095,-2.44907 -6.42146,-9.67147 -6.42146,-13.36355 0,-1.66787 -1.73253,-4.56362 -3.85006,-6.43501 l -3.85006,-3.40253 3.44682,-0.48626 c 2.23524,-0.31535 4.2826,0.54586 5.8245,2.45003 2.83054,3.49557 5.82035,3.7449 8.82896,0.73628 1.21002,-1.21002 2.20004,-1.50943 2.20004,-0.66536 0,0.84407 1.52509,2.11451 3.38908,2.8232 2.46567,0.93744 3.19069,2.04718 2.66095,4.07292 -0.40048,1.53142 -0.0171,4.93877 0.85187,7.57188 0.86901,2.63312 1.8409,6.14216 2.15976,7.79788 0.31886,1.65572 0.96766,3.63804 1.44176,4.40515 1.48043,2.39539 5.12462,1.5261 5.89119,-1.40528 0.40273,-1.54003 1.25915,-2.80005 1.90316,-2.80005 1.64706,0 3.99945,9.19212 3.16702,12.37533 -0.72421,2.76941 5.97427,17.02514 7.99978,17.02514 0.64387,0 1.56004,-0.63001 2.03593,-1.40002 1.486,-2.4044 6.52295,-1.55028 7.24984,1.22936 0.90801,3.47223 6.71432,6.00884 11.18552,4.88664 3.26789,-0.82019 3.48051,-0.61047 2.47739,2.4435 -0.60352,1.83738 -1.14571,4.60071 -1.20487,6.14073 -0.0592,1.54003 -0.89508,3.30386 -1.8576,3.91963 -0.96251,0.61577 -1.75002,2.85231 -1.75002,4.97008 0,2.11777 -0.71367,4.56416 -1.58593,5.43642 -0.87225,0.87225 -1.18778,2.62345 -0.70116,3.89155 0.67444,1.75756 1.89706,2.08329 5.14332,1.37029 2.55925,-0.5621 5.04919,-0.27917 6.23993,0.70905 1.08975,0.90441 2.63896,1.23796 3.44271,0.74122 2.10238,-1.29935 1.79845,1.07022 -0.54443,4.24458 -1.60764,2.17818 -2.35798,2.37025 -3.78006,0.9676 -2.34668,-2.3146 -4.93449,-2.21981 -5.86881,0.21497 -1.1272,2.93744 0.52003,7.83516 2.63516,7.83516 2.56943,0 3.75708,2.3306 2.77096,5.43761 -0.52426,1.65179 -2.14434,2.61251 -4.40549,2.61251 -4.56288,0 -10.34632,3.06696 -10.34632,5.48666 0,1.02491 -0.48061,1.86346 -1.06803,1.86346 -0.58742,0 -1.68994,1.41752 -2.45004,3.15005 -0.7601,1.73253 -2.82581,3.78006 -4.59047,4.55007 -4.03263,1.75965 -5.24159,6.33461 -3.21228,12.15589 1.29341,3.71027 1.19558,4.715 -0.55444,5.69437 -2.92071,1.6345 -2.94091,13.42501 -0.0249,14.54398 1.29574,0.49723 2.10003,2.62518 2.10003,5.55615 0,3.71367 -0.57362,4.75029 -2.62862,4.75029 -4.11725,0 -6.21889,3.56803 -5.14645,8.73732 0.52065,2.50959 0.91352,6.54514 0.87305,8.96788 -0.0445,2.66601 0.75061,4.72125 2.01419,5.20614 1.14828,0.44064 2.08778,1.76594 2.08778,2.94514 0,1.53595 1.45763,2.14397 5.13985,2.14397 2.82691,0 6.25509,1.00927 7.61816,2.24285 2.35776,2.13373 2.31205,2.39693 -0.93978,5.41062 -1.87995,1.74227 -3.41809,3.76472 -3.41809,4.4943 0,0.72959 -1.3192,4.05695 -2.93156,7.39414 -2.27084,4.70009 -2.60905,6.77548 -1.50061,9.20823 1.28436,2.81886 0.99305,3.22818 -2.84353,3.99549 -5.38052,1.0761 -6.04388,1.06887 -7.1912,-0.0784 l 0,-5e-5 z", name : "Косово" }, "29" : { path : "m 429.73938,913.73294 c -0.4442,-0.71872 -2.98068,-1.65941 -5.63663,-2.09041 -4.35902,-0.70737 -10.63924,-5.1544 -10.63924,-7.53364 0,-0.51688 1.00673,-2.05221 2.23718,-3.41184 2.46495,-2.72374 1.37431,-6.0595 -1.60711,-4.91542 -1.07791,0.41364 -2.272,-0.4898 -2.78541,-2.1074 -0.99555,-3.13672 2.53328,-6.70551 6.70541,-6.78133 1.96637,-0.0357 2.45004,-1.29693 2.45004,-6.38857 0,-4.34763 -0.66085,-6.59763 -2.10003,-7.14989 -2.8089,-1.07788 -2.83074,-10.11392 -0.027,-11.1898 2.13357,-0.81873 2.12641,-5.75621 -0.0158,-10.86773 -0.85031,-2.02895 -0.0693,-3.50713 3.3286,-6.3001 2.44176,-2.00704 4.43388,-4.16667 4.42694,-4.79918 -0.007,-0.63251 0.87615,-2.03878 1.96241,-3.12505 1.08627,-1.08626 2.19851,-2.64547 2.47166,-3.46489 0.27314,-0.81942 3.00693,-1.79152 6.07509,-2.16023 6.14018,-0.73786 9.07853,-3.5533 9.07853,-8.69875 0,-2.18612 -0.98017,-3.61986 -2.80004,-4.09577 -1.54003,-0.40273 -2.80005,-1.54478 -2.80005,-2.53791 0,-1.118 1.06921,-1.52607 2.80751,-1.0715 3.44314,0.90041 6.99265,-1.82432 6.99265,-5.3678 0,-2.67574 1.53263,-3.42937 3.32636,-1.63564 0.54614,0.54614 3.54529,0.80871 6.66477,0.58347 5.18618,-0.37445 5.59256,-0.1599 4.74644,2.50599 -0.73009,2.30029 -0.12599,3.21941 2.86288,4.35577 2.08352,0.79216 4.13134,1.09716 4.55071,0.67779 0.41937,-0.41937 1.56161,1.13802 2.5383,3.46088 1.98805,4.7282 4.34251,5.46033 5.70284,1.77334 2.65801,-7.20411 12.45998,-5.89447 14.96544,1.99954 0.62418,1.96661 0.22767,3.1871 -1.21532,3.74082 -1.17796,0.45203 -2.14175,1.87471 -2.14175,3.16151 0,1.2868 -1.07874,3.12842 -2.39719,4.0925 -1.98889,1.45431 -2.08982,2.12324 -0.59254,3.92735 1.64511,1.98224 1.82027,9.40847 0.18968,8.04211 -1.79506,-1.50419 -7.00011,3.05828 -7.00011,6.13593 0,1.84293 -0.78751,4.22073 -1.75003,5.28399 -0.96251,1.06326 -3.81374,4.1475 -6.33605,6.85386 -4.44548,4.76985 -4.52526,5.0652 -2.60302,9.63685 2.67134,6.35325 0.56738,11.50058 -4.21066,10.30137 -2.2706,-0.56988 -3.54223,-0.12397 -4.14796,1.45454 -0.55163,1.43753 -2.18028,2.13713 -4.41969,1.89852 -2.85931,-0.30465 -3.62988,0.30009 -3.9784,3.12222 -0.82581,6.68695 0.8093,12.6002 3.48415,12.6002 3.26851,0 6.17729,6.02419 3.97308,8.22839 -2.23084,2.23084 -5.21182,1.94715 -5.21182,-0.49599 0,-1.13727 -1.59485,-3.11275 -3.54412,-4.38996 -4.7606,-3.11926 -12.35259,-1.16083 -13.00351,3.35439 -0.27736,1.92396 -1.43097,3.10333 -3.03555,3.10333 -1.42349,0 -3.52098,0.35795 -4.66109,0.79545 -1.14011,0.4375 -2.43636,0.20741 -2.88055,-0.51131 z", name : "Косовo-Поморавље" }, "30" : { path : "m 308.44861,996.71531 c -1.95157,-5.13301 -1.77005,-6.20613 1.49725,-8.85183 1.68472,-1.3642 2.92588,-4.07741 2.98465,-6.52451 0.12686,-5.28201 -5.4194,-23.34655 -7.57746,-24.6803 -0.91591,-0.56606 -1.71036,-4.96471 -1.83201,-10.14327 -0.11814,-5.02907 -0.88322,-9.95883 -1.70018,-10.95502 -0.81696,-0.9962 -2.24105,-4.63653 -3.16465,-8.08963 -0.92359,-3.45311 -3.62763,-8.7384 -6.00898,-11.74509 l -4.32971,-5.46671 4.12207,-3.2982 c 2.26713,-1.81401 4.56594,-3.30133 5.10844,-3.30516 1.70207,-0.012 8.11747,-7.05233 8.03775,-8.82073 -0.0418,-0.92751 -3.03435,-3.57926 -6.6501,-5.89278 -5.08923,-3.25631 -6.47516,-4.91645 -6.13608,-7.35011 0.2409,-1.72905 -0.23694,-3.14373 -1.06188,-3.14373 -1.00391,0 -0.94423,-0.88975 0.18046,-2.69067 1.26053,-2.01843 1.29634,-3.94189 0.14333,-7.69875 -0.84536,-2.75444 -0.99369,-5.34387 -0.32961,-5.7543 0.66408,-0.41042 0.8862,-1.58327 0.49362,-2.60634 -0.96303,-2.50962 7.26616,-6.27441 17.31108,-7.91968 10.24629,-1.67825 10.12542,-1.68551 10.12542,0.60831 0,2.45305 6.01461,6.46112 9.6957,6.46112 1.53676,0 3.52948,-0.78751 4.42826,-1.75003 0.98482,-1.05464 4.06644,-1.55493 7.75532,-1.25905 4.7438,0.3805 6.12117,1.04994 6.12117,2.97505 0,1.63631 1.42372,2.76881 4.17173,3.31841 2.73376,0.54676 3.92156,1.48628 3.44596,2.72568 -0.42396,1.10482 0.75222,2.56475 2.82838,3.51071 1.95478,0.89066 3.6329,2.26289 3.72915,3.04941 0.72044,5.88709 0.28164,9.83017 -1.09395,9.83017 -0.93715,0 -1.30626,1.19575 -0.87646,2.83931 0.48955,1.87205 1.53591,2.58749 3.07149,2.10011 1.87287,-0.59443 2.37076,0.30806 2.54224,4.60804 0.11728,2.94098 0.32575,5.9335 0.46328,6.65003 1.03875,5.41202 -0.58104,8.55444 -6.26437,12.15297 -3.34434,2.11753 -7.1014,3.85006 -8.34902,3.85006 -1.43029,0 -2.346,1.29318 -2.47841,3.50005 -0.11551,1.92503 -0.27301,4.28312 -0.35001,5.24019 -0.0777,0.9653 2.66528,2.36794 6.1601,3.15005 8.43018,1.88661 10.7954,3.48317 11.94049,8.06002 0.85184,3.40476 0.57141,3.85006 -2.42458,3.85006 -3.39882,0 -9.51591,4.53493 -9.51591,7.05465 0,0.74002 -1.81289,1.34549 -4.02864,1.34549 -2.21576,0 -4.81294,0.94501 -5.77152,2.10003 -0.95858,1.15502 -3.12228,2.10003 -4.80821,2.10003 -1.83304,0 -4.42145,1.8292 -6.43863,4.55008 -2.76796,3.73358 -3.36514,6.18304 -3.32798,13.65021 0.0249,5.00508 0.42532,11.98409 0.88979,15.5089 0.75702,5.74486 0.41851,6.86456 -3.26763,10.80874 -3.32972,3.56279 -4.87259,4.24787 -8.10893,3.6006 -2.19824,-0.43965 -5.33974,-0.0806 -6.98111,0.7978 -2.61374,1.3988 -3.15652,1.14423 -4.37111,-2.05039 l 0,0 z", name : "Призрен" } }, height: 1041.4434, width: 726.97412 });
Index: public/vendors/vmap/maps/jquery.vmap.tunisia.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.tunisia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.tunisia.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** JQVMap merc map for tunisia  */
+jQuery.fn.vectorMap('addMap', 'tunisia',{"insets": [{"width": 900, "top": 0, "height": 1954.3544733545057, "bbox": [{"y": -4519725.417185229, "x": 838669.3845975221}, {"y": -3535818.4871775922, "x": 1291768.476435734}], "left": 0}], "paths": {"tn-za": {"path": "M544.74,259.86l2.72,1.39l7.19,-0.8l12.57,4.89l6.58,1.79l1.94,4.02l3.89,5.26l1.57,2.68l1.05,2.92l2.21,1.45l2.38,0.61l2.1,2.54l3.23,1.77l2.82,-0.07l1.77,0.4l1.82,-0.2l1.09,0.44l0.38,1.26l-2.85,10.19l0.32,2.67l0.5,0.33l4.18,-1.24l3.47,-2.95l1.84,-0.52l0.98,-1.62l1.84,-0.95l9.62,-3.95l0.71,3.78l-1.2,9.68l-0.23,8.98l2.32,4.63l0.5,1.8l2.33,1.82l-1.15,3.44l0.08,3.65l2.92,5.28l0.62,2.65l-0.45,2.65l0.69,2.7l0.0,2.42l-0.92,1.17l-1.87,0.04l-1.82,0.73l-1.15,1.42l0.62,1.7l3.05,0.6l1.01,0.73l0.85,1.72l0.09,1.82l-1.76,2.6l-2.33,1.81l-5.25,0.52l-2.5,0.81l-5.24,-1.44l-2.52,-0.35l-4.58,1.11l-1.65,2.57l0.35,2.41l0.91,2.29l0.05,2.24l-1.14,5.1l-2.41,7.18l-1.25,0.98l-4.44,0.92l-1.96,1.11l-0.85,0.84l-2.61,-0.32l-4.42,1.35l-3.22,-0.6l-3.46,0.36l-2.5,-0.52l-0.46,0.25l-1.15,3.09l1.7,2.38l-0.08,2.79l-1.54,3.16l-0.56,3.15l-2.52,2.28l-2.88,1.77l-3.17,0.53l-1.96,-0.71l-2.25,-2.38l-1.39,-2.04l-0.55,-0.11l-2.14,1.4l-0.45,2.56l2.11,4.25l-1.67,3.27l0.21,4.88l-0.93,3.06l-1.56,2.42l-2.45,0.93l-2.88,-0.85l-2.14,-1.51l-1.79,-2.1l-1.35,-3.0l-2.16,-0.47l-2.46,-1.63l-1.9,-0.72l-2.99,0.47l-2.21,-0.75l-7.12,1.17l-3.09,-1.56l-1.98,-2.19l-2.79,-5.16l-8.94,-2.95l-2.99,1.11l-3.85,2.31l-1.36,1.35l-1.59,2.31l-0.89,0.01l-10.27,-3.61l1.51,-4.78l1.43,-2.07l1.29,-2.72l1.08,-2.45l0.76,-2.85l1.16,-2.28l1.09,-4.14l-0.48,-3.05l-2.29,-1.99l-9.72,-2.97l-1.94,-3.36l-1.89,-4.26l-6.23,-3.31l-2.06,0.47l-2.04,1.41l-1.3,0.16l-0.78,-2.44l0.05,-4.75l-0.54,-1.89l-4.85,-1.61l-3.66,-5.44l1.71,-0.74l5.26,0.79l4.1,-0.73l2.57,-0.86l5.41,-5.28l4.59,-2.74l1.75,-1.7l1.41,-3.49l2.34,-3.85l0.54,-2.47l1.25,-2.91l1.87,-13.37l0.16,-3.05l-0.37,-3.78l-0.96,-2.98l-2.4,-4.03l-1.82,-1.99l0.78,-2.14l9.8,-4.82l2.01,-2.76l2.1,-6.42l1.03,-2.19l1.53,-1.95l4.75,-3.74l4.27,-4.42l2.6,-1.02l3.86,0.23l2.81,-1.34l3.64,-4.82l1.81,-5.19l0.83,-4.15l3.28,-6.96l1.83,-1.71l2.48,-0.51l4.59,2.4l2.42,2.68l1.76,3.79l1.18,4.24l1.56,2.47Z", "name": "Zaghouan"}, "tn-bz": {"path": "M346.87,111.96l2.64,-1.16l1.34,0.62l1.78,-0.39l0.58,-0.71l0.29,-1.37l0.84,-0.23l1.77,-1.7l1.3,-0.46l2.92,-2.33l2.09,-2.55l1.05,-1.91l0.58,0.0l0.4,-0.4l0.55,-1.85l-0.31,-0.56l1.54,-1.3l1.23,-1.91l5.52,-4.48l0.32,0.0l-0.18,0.99l0.61,0.94l-0.18,1.37l0.68,0.4l-0.06,0.53l0.47,0.42l-0.59,0.89l0.65,0.71l2.52,0.46l3.5,-0.14l1.29,0.45l1.26,-1.23l2.61,-0.23l1.6,-1.54l1.54,0.0l0.58,-0.93l0.83,0.0l0.57,-0.62l2.14,0.39l2.66,-0.54l2.44,0.23l1.97,-0.77l2.78,-1.78l0.72,-0.15l0.63,-0.7l0.6,0.0l3.07,-1.39l3.23,-2.72l0.68,-0.77l-0.12,-0.6l1.34,-0.54l1.52,-0.16l1.8,-1.24l4.76,0.23l2.21,0.46l2.11,1.16l1.72,-0.23l5.71,-1.93l2.05,-1.85l2.13,-0.77l1.9,-1.16l1.66,-1.31l0.4,-0.4l-0.17,-0.25l1.45,-1.28l1.66,-0.62l1.15,0.0l1.29,-0.93l2.66,-1.0l0.94,0.59l0.92,1.64l0.83,0.71l1.66,0.0l1.06,-0.69l1.64,-0.16l3.64,-2.39l3.24,-1.39l6.21,-4.64l0.89,-1.16l1.14,-0.16l1.51,-1.34l1.63,0.65l2.34,0.0l0.76,-0.86l0.7,-0.15l1.43,1.16l0.52,-0.33l0.59,0.56l0.86,0.0l0.69,-0.46l2.57,-0.15l2.27,-1.24l1.47,-1.29l1.01,-0.02l2.72,0.62l0.37,0.5l-0.12,0.96l2.55,2.18l1.15,0.0l2.84,0.93l5.13,-0.15l0.52,0.31l0.82,-1.78l2.03,-0.93l2.26,0.15l0.37,-0.37l1.72,0.83l1.18,-0.31l1.4,0.31l1.5,-0.22l0.25,0.41l-0.06,2.89l0.86,1.2l-0.25,4.05l1.29,2.3l0.06,2.18l1.32,1.84l-0.46,0.4l0.33,1.83l-2.49,2.04l-0.52,-0.33l-2.89,0.39l-0.46,0.48l0.06,0.77l0.4,0.4l1.38,0.28l-2.12,0.39l-0.65,0.56l-0.7,-0.25l-0.65,0.63l0.45,0.99l-0.54,-0.23l-0.68,0.36l-0.48,-0.52l-0.43,0.0l-1.2,1.54l-1.38,-0.08l-0.46,0.49l0.68,0.98l-0.32,0.23l-1.37,-1.23l-0.61,0.0l-1.11,0.46l-0.63,0.7l-1.52,-0.08l-0.75,0.62l-2.01,-0.15l-1.01,1.25l-0.06,3.16l0.89,0.68l-0.63,0.15l-0.66,-1.0l-1.21,-0.23l-0.6,-1.68l-0.89,-0.55l-0.58,0.55l0.86,1.41l-1.26,0.28l-0.46,0.55l1.63,1.4l0.55,-0.3l1.76,1.77l0.31,0.77l-0.98,1.84l0.4,0.48l1.35,-0.08l1.14,-1.42l0.18,1.04l-1.35,3.76l0.06,2.01l2.0,2.33l2.44,0.93l-0.08,0.45l1.23,0.79l0.74,1.42l-0.55,0.88l-0.37,2.54l2.24,2.33l0.56,-0.13l2.86,0.59l0.39,0.39l1.71,-0.31l3.21,1.16l2.4,-0.23l2.89,-1.85l1.83,-2.16l1.67,-0.08l0.94,-1.16l1.21,-0.08l2.09,-0.85l2.0,-2.87l1.41,-2.78l1.84,-5.63l0.55,-3.78l-0.31,-2.55l-1.57,-1.79l-1.72,-0.39l-1.98,0.23l-3.06,-0.15l-1.4,0.39l-3.87,-1.16l-0.87,-0.62l-2.46,-0.46l-2.41,0.69l-1.77,0.0l-1.94,1.77l-1.18,-0.08l-0.51,-0.54l-0.77,0.15l0.18,-0.62l1.38,0.03l2.03,-1.31l0.65,-1.02l-0.43,-0.68l1.81,-0.7l1.78,-1.39l1.41,-0.08l2.06,-2.56l0.18,-1.76l1.82,-1.52l0.48,0.52l0.74,0.15l0.52,-0.34l0.49,0.41l0.18,0.99l0.65,0.79l1.54,0.69l1.28,0.16l0.94,0.69l1.21,-0.16l10.46,2.16l2.95,0.23l0.69,-0.23l1.83,0.16l3.09,-1.16l2.75,-0.16l4.87,-2.63l3.61,-0.85l3.35,-1.64l0.0,0.53l-0.68,1.09l0.43,1.08l2.03,1.94l-0.06,0.99l2.37,2.79l1.29,0.54l3.92,-0.23l1.06,0.46l1.34,-0.08l6.81,2.93l0.58,0.93l0.92,0.09l1.41,1.6l0.29,-0.08l1.25,0.93l0.97,0.16l0.57,0.69l0.66,0.0l1.12,1.08l0.95,-0.08l-0.25,0.29l0.18,0.46l0.65,0.63l2.73,1.39l0.12,1.45l1.14,1.33l1.29,0.77l3.07,0.39l3.35,-0.46l1.37,0.23l0.94,0.85l3.86,-0.39l1.03,0.59l-1.69,0.16l-4.12,1.46l-0.75,1.22l-0.3,-0.3l-3.75,0.15l-0.46,0.79l0.56,0.48l-0.52,0.2l-0.85,1.13l-0.41,-0.29l-0.06,-1.6l-0.58,-0.86l-1.54,0.08l-0.62,-0.46l-2.27,-0.08l-1.8,0.85l-2.4,0.23l-5.15,-0.15l-1.41,0.39l-1.69,1.79l-0.43,1.48l-2.09,3.53l0.8,0.62l-0.18,0.7l0.86,0.83l0.06,0.58l-2.9,0.03l-2.01,-0.69l-2.71,-0.23l-5.35,2.57l-4.12,4.26l-1.95,-0.71l-0.49,0.19l-0.93,2.21l1.75,3.86l-0.26,2.64l0.16,6.08l-2.07,4.82l-3.88,7.05l-6.47,5.23l-0.31,3.74l-3.24,8.4l1.5,2.44l-2.35,2.37l-1.93,0.85l-3.68,0.74l-2.3,1.13l-1.8,-0.14l-1.07,-1.18l-0.82,-2.56l-2.19,-4.03l-1.82,-1.4l-4.53,-1.71l-3.37,-0.31l-2.89,-0.76l-10.52,0.15l-5.27,-3.59l-0.49,0.05l-1.94,1.96l-0.63,4.19l-3.57,3.8l-1.23,2.42l-1.45,4.57l-1.67,1.69l-1.95,1.16l-3.14,0.5l-2.89,-1.28l-2.49,0.1l-3.34,3.09l-2.7,0.82l-3.78,0.51l-5.66,6.42l-1.49,-2.59l-4.66,-0.26l-2.6,1.13l-2.84,3.11l-3.42,4.85l-2.47,1.86l-4.34,4.47l-5.25,6.86l-2.02,1.67l-1.88,2.1l-7.6,5.25l-7.73,7.22l-4.26,0.9l-2.52,-0.65l-1.58,-1.83l-2.36,0.12l-0.48,-0.47l-0.68,-4.29l-1.84,-4.36l-0.46,-2.3l3.43,-7.04l0.84,-3.12l2.42,-5.56l-0.86,-2.7l-2.87,-4.34l-2.97,-2.6l-3.39,-0.8l-3.81,0.17l-2.4,0.45l-4.57,-4.17l-1.57,-2.57l-4.7,-2.87l-1.62,-1.5l-0.26,-6.49l-0.69,-2.8l-7.1,-8.59l-0.52,-2.48l-0.11,-5.41l-0.72,-5.28l-5.48,-9.5l-5.71,-0.18l-2.76,0.76l-2.34,1.25l-1.79,1.58l-2.84,1.08l-3.32,0.4l-1.61,-0.39l-0.0,-2.43l-0.96,-4.86l-1.7,-4.95l0.06,-1.91l4.06,-7.1l0.34,-2.85l-1.28,-2.27l-0.44,-1.97l1.75,-0.08ZM596.93,112.81l0.9,-0.86l0.62,0.4l-1.06,0.73l-0.46,-0.26ZM498.79,95.3l-0.28,-0.46l0.59,-0.4l-0.25,-0.86l1.97,-1.6l0.42,-0.91l1.06,-0.88l0.71,0.73l0.83,0.0l-1.78,2.53l-0.37,1.3l-1.01,-0.15l-1.31,1.06l-0.57,-0.34ZM506.78,89.05l0.06,0.0l0.0,0.06l-0.06,-0.06ZM303.01,11.56l0.17,-0.7l2.29,-1.48l0.29,-0.92l0.78,0.15l2.08,-0.78l2.16,0.08l1.57,-1.72l0.0,-0.76l1.1,0.16l0.0,1.31l2.21,2.62l-0.68,0.79l-0.65,1.6l-0.5,-0.14l-1.77,-2.09l-1.53,0.46l-1.24,1.16l-1.35,-0.15l-2.17,1.32l-1.98,-0.08l-0.8,-0.82ZM315.36,0.56l0.01,-0.08l0.2,0.2l-0.02,0.03l-0.18,-0.14ZM296.55,17.42l0.57,-0.52l0.66,0.31l0.25,0.59l-1.47,-0.39ZM298.75,18.27l0.02,-0.06l0.12,0.13l-0.1,-0.08l-0.04,0.0Z", "name": "Bizerte"}, "tn-bj": {"path": "M304.73,149.07l2.7,-2.82l1.04,-0.63l0.38,-0.92l6.45,-5.94l1.23,-2.76l0.55,-0.55l0.06,-0.92l0.43,-0.68l2.52,-2.48l1.91,-3.16l0.12,-0.92l-0.46,-0.48l-0.43,0.0l0.19,-0.19l0.37,0.14l2.72,-2.39l1.46,-0.31l1.94,-2.17l0.29,-1.22l1.09,0.08l0.83,-0.63l0.06,-0.93l1.31,-1.84l0.57,0.15l0.39,-0.39l1.4,-0.08l1.57,-1.62l1.64,-1.0l2.32,-0.39l1.78,-0.93l0.63,-0.69l1.52,0.23l1.01,-0.62l0.53,2.31l1.24,2.2l-0.36,2.39l-4.0,6.94l-0.13,2.32l1.73,5.08l0.96,4.83l-0.01,2.58l0.31,0.39l1.99,0.48l3.58,-0.4l3.05,-1.14l1.86,-1.62l2.26,-1.2l2.57,-0.7l5.05,0.04l5.25,9.15l0.67,5.03l0.12,5.42l0.56,2.69l7.1,8.6l0.66,2.66l-0.04,3.94l0.44,2.9l1.85,1.69l4.58,2.79l1.52,2.52l4.76,4.34l6.58,-0.55l2.96,0.67l2.78,2.42l2.81,4.25l0.76,2.13l-2.37,5.42l-0.83,3.09l-3.51,7.4l0.52,2.55l1.81,4.26l0.7,4.38l0.83,0.92l2.32,-0.14l1.73,1.88l2.73,0.71l4.81,-1.02l7.81,-7.29l7.66,-5.3l1.89,-2.11l2.04,-1.7l5.23,-6.85l4.3,-4.44l2.31,-1.73l0.5,1.06l2.84,3.51l1.49,1.35l-0.58,2.65l0.24,1.44l1.59,0.83l2.26,-1.06l0.59,1.16l0.42,2.37l1.1,2.29l1.64,2.08l4.36,2.29l2.38,0.79l4.16,0.58l11.62,8.22l1.56,1.64l1.75,0.31l1.78,-0.13l2.42,-2.13l2.43,-0.66l0.28,0.64l-0.91,7.11l1.69,6.94l3.56,6.62l1.77,2.04l2.56,1.81l3.08,6.55l4.94,6.17l1.44,2.63l0.55,1.88l-2.17,0.89l-4.28,4.43l-4.84,3.83l-1.58,2.02l-1.11,2.33l-2.11,6.44l-1.86,2.52l-9.91,4.94l-0.84,2.94l1.91,2.07l2.26,3.81l-1.16,2.08l-3.72,0.64l-9.31,-1.12l-1.55,1.54l-0.98,2.05l0.02,1.83l-2.83,0.94l-2.37,-1.72l-3.49,-0.13l-4.09,0.63l-4.82,-0.92l-2.06,-2.21l-2.28,-3.43l-4.53,-4.0l-2.19,-1.24l-4.47,1.28l-1.85,1.03l-3.43,-0.81l-4.41,0.22l-2.81,-0.37l-4.12,0.27l-6.64,1.09l-8.24,3.03l-2.4,2.71l-0.8,3.33l-0.1,4.26l0.82,2.91l-0.4,2.46l-2.23,2.42l-4.78,2.61l-3.34,0.96l-2.16,-1.22l-2.48,-2.3l-1.16,-1.96l-1.27,-1.32l-2.5,-1.11l-2.78,-0.76l-3.61,-0.45l-4.75,-0.04l-5.96,-0.74l-1.28,0.59l-5.56,4.12l-7.53,2.57l-2.1,-0.82l-3.2,-3.13l-2.29,-0.16l-0.42,-1.28l0.68,-3.9l-1.24,-1.96l-3.66,-2.52l-1.64,-4.36l-2.17,-1.55l-2.11,-0.29l-2.99,0.26l-1.89,-0.3l-2.53,-2.89l2.7,-0.15l4.48,-1.05l3.48,-1.18l0.27,-0.38l-0.21,-5.31l0.52,-5.99l0.78,-2.5l4.61,-7.57l0.44,-2.77l0.28,-6.79l-0.18,-3.23l-1.48,-3.19l-7.91,-9.79l-2.61,-5.95l-0.23,-3.2l0.91,-3.56l1.92,-5.18l1.7,-3.14l-4.13,-9.63l-1.47,-2.4l-2.59,-1.74l-3.06,-1.12l-14.79,-1.07l-0.59,-1.22l0.14,-2.27l0.95,-2.62l0.24,-5.73l0.48,-1.63l4.43,-2.45l4.38,-3.72l1.31,-2.54l2.24,-3.28l1.14,-6.32l-2.0,-2.02l-4.69,-2.89l-2.17,-0.65l-2.77,-1.85l-1.28,-2.23l-0.82,-2.84l0.05,-2.3l0.63,-1.52l3.12,-4.66l0.35,-2.36l-0.04,-2.64l-3.39,-3.47l-6.51,-4.08Z", "name": "Beja"}, "tn-ba": {"path": "M555.79,232.61l2.34,0.88l2.91,0.49l4.38,-0.1l2.91,-0.65l2.08,-1.0l3.0,-3.29l0.67,-2.14l1.23,-1.68l2.37,0.23l2.18,1.08l3.24,0.01l4.53,-1.1l2.68,-0.31l1.69,-1.5l0.71,-1.53l0.4,-2.04l-0.28,-2.9l0.6,-0.27l0.4,0.4l0.68,-0.08l2.23,-1.76l0.6,-0.15l0.46,-0.48l-0.13,-0.37l1.17,0.24l0.06,0.9l1.11,1.02l-0.19,0.36l0.68,1.3l2.06,2.01l1.72,0.08l1.94,-1.47l0.37,-1.99l-0.43,-0.68l0.06,-4.01l-0.52,-0.63l-0.95,-0.44l-0.51,-1.59l1.28,-0.3l0.98,1.14l1.15,0.31l-0.63,0.75l1.2,0.71l1.51,-1.55l-0.12,-1.83l1.98,-0.15l1.09,0.61l-1.14,0.5l-1.32,1.87l-0.97,0.89l-0.41,-0.08l-0.46,0.63l0.49,1.29l-0.12,1.09l1.84,2.36l0.12,0.81l-0.37,0.43l0.18,1.61l0.71,0.63l0.4,-0.4l-0.18,-0.84l3.56,4.76l6.05,5.15l5.96,3.14l4.18,1.23l-1.41,6.39l-1.41,0.61l-1.46,1.32l-1.11,7.0l-1.95,5.62l-4.4,5.59l-0.83,1.48l0.44,1.79l0.35,0.28l4.7,0.46l1.52,1.23l0.21,2.04l-0.58,2.18l-3.53,7.21l-0.18,2.07l-2.48,5.12l-0.37,1.98l0.16,0.4l1.36,0.87l4.46,0.09l0.45,0.65l-1.14,1.14l-14.01,5.69l-1.96,1.02l-0.88,1.55l-1.89,0.57l-3.38,2.9l-3.61,1.08l-0.26,-1.98l2.86,-10.19l-0.47,-1.8l-1.79,-0.84l-1.85,0.2l-1.73,-0.4l-2.56,0.12l-3.07,-1.68l-2.02,-2.48l-2.54,-0.71l-2.03,-1.33l-0.89,-2.69l-1.62,-2.77l-3.88,-5.26l-1.97,-4.08l-6.94,-2.03l-12.67,-4.93l-7.32,0.78l-2.15,-1.11l-1.42,-2.22l-1.2,-4.27l-2.07,-4.2l1.48,-1.75l2.23,-1.7l2.43,-1.3l6.49,-7.08l0.84,-2.07l1.65,-2.13ZM596.34,213.83l0.02,0.02l-0.04,0.0l0.02,-0.02Z", "name": "Ben Arous"}, "tn-gf": {"path": "M133.61,830.47l0.8,-1.16l1.16,0.04l1.76,-0.46l0.33,-0.56l-0.32,-1.07l0.93,-1.91l1.16,-0.41l0.15,-0.9l0.96,0.06l0.76,-0.33l0.27,-0.74l-1.14,-2.07l0.32,-0.25l-0.34,-0.84l1.67,0.63l0.51,-0.38l-0.29,-2.36l1.23,0.07l2.14,0.86l2.62,-0.79l1.14,0.08l0.63,-0.79l1.08,0.33l1.97,-0.08l0.59,-0.35l0.23,-0.81l-0.36,-0.66l-1.25,-0.41l-2.03,-1.59l0.7,-0.18l0.29,-0.43l0.52,-3.27l1.76,-0.23l1.14,-1.1l0.8,0.08l0.23,-0.55l-0.3,-0.71l0.58,-0.3l1.22,0.58l2.89,-0.37l0.04,-0.71l-1.48,-1.94l-0.23,-2.14l1.2,-1.14l2.63,-1.19l1.11,-0.93l0.87,0.28l1.27,-0.8l0.12,-0.86l1.4,-1.69l0.05,-1.08l-0.43,-0.77l-0.49,-0.4l-1.24,-0.22l-0.58,0.5l-2.44,0.09l-3.5,-2.34l-1.01,-2.23l0.96,-2.59l4.66,-0.42l0.8,-0.69l1.96,-2.72l0.3,-1.17l3.34,-4.44l0.62,-2.25l0.79,-0.29l1.59,0.75l1.28,0.22l1.85,-1.04l-0.07,-1.16l-2.27,-0.37l-1.69,-1.35l-1.1,-1.46l17.14,7.42l7.58,4.37l5.03,0.14l3.6,2.33l8.72,6.88l3.87,3.69l4.13,2.58l6.13,1.85l4.98,-0.37l0.36,-0.29l0.82,-3.07l-1.64,-6.19l7.86,-3.15l13.91,-7.44l4.35,-2.86l3.52,-1.46l5.86,-1.25l5.77,-2.99l3.84,-3.9l5.5,-2.77l2.08,2.02l2.29,1.58l2.78,0.9l5.6,2.81l2.67,0.68l5.84,0.82l1.93,1.1l2.41,2.27l2.9,1.18l3.1,0.71l3.27,2.61l2.39,1.11l15.01,-4.09l5.13,-3.02l7.96,4.08l5.28,0.76l5.09,-1.1l2.81,1.81l3.79,0.41l3.1,2.24l5.13,-0.35l3.91,6.67l1.6,0.92l3.06,0.16l3.74,-3.22l1.51,-2.45l1.27,1.51l-0.0,3.15l-2.23,2.78l-2.14,1.59l-1.42,1.62l-1.25,2.25l0.86,3.09l1.65,2.49l0.53,2.05l-0.69,2.42l-0.23,7.43l0.41,2.4l1.27,1.99l2.4,1.71l2.18,0.02l1.92,-0.82l2.27,0.63l3.17,2.3l2.61,1.98l1.16,1.98l-0.11,3.11l1.55,1.81l5.44,-0.34l9.87,1.23l10.13,5.95l4.35,4.11l2.27,4.19l2.38,3.57l2.9,1.45l4.76,1.53l6.29,1.32l3.29,1.9l3.18,1.17l1.41,2.34l-1.0,3.28l-1.87,3.16l-1.01,4.68l-1.02,7.52l-2.34,6.23l0.79,2.41l1.78,1.45l-1.41,4.17l-2.32,4.94l-4.41,3.92l-4.88,2.33l-10.86,4.15l-6.85,0.63l-19.19,-3.68l-6.46,0.82l-4.36,2.19l-4.73,1.47l-4.53,3.42l-4.32,2.55l-4.08,1.08l-6.92,0.42l-4.36,0.74l-3.69,-0.1l-3.08,1.72l-2.7,1.07l-2.56,-0.72l-2.71,-1.62l-2.63,-0.99l-6.78,2.04l-5.01,2.02l-3.7,2.0l-2.35,2.58l-1.38,2.46l3.23,6.81l0.17,2.64l-1.33,2.87l-3.07,2.79l-5.95,0.5l-5.63,-0.64l-5.22,-1.24l-3.26,-1.72l-4.14,-3.38l-3.26,0.77l-2.94,2.6l-5.31,1.56l-7.89,-1.12l-6.49,-0.26l-9.93,0.77l-5.74,1.12l-4.49,1.07l-5.86,2.79l-0.52,1.4l-4.63,-1.82l-5.08,-1.25l-2.89,-1.14l-6.75,0.33l-5.52,-0.3l-8.27,1.2l-9.65,0.19l-10.23,-0.26l-8.04,2.23l-4.61,0.59l-2.42,-0.21l-0.3,-1.83l2.29,-5.07l0.2,-3.43l-2.87,-2.73l-2.4,-1.41l-0.81,-3.5l-1.66,-2.49l-3.63,-1.93l-10.87,-4.61l-5.77,-1.91l-9.43,-1.0l-3.25,-3.34l-2.1,-4.61l-2.5,-4.41l-6.93,-6.39l-11.74,-8.06l-5.12,-4.87l1.34,-3.97l2.96,-3.37l5.02,-7.72l1.26,-4.02l2.38,-0.83l3.95,-0.19l5.12,-1.42l3.85,-2.53l0.15,-0.48l-1.22,-2.94l-10.12,-5.98l-0.3,-2.38l1.11,-5.28l2.42,-3.16l2.07,-3.45l1.67,-4.43l-2.07,-3.64Z", "name": "Gafsa"}, "tn-ms": {"path": "M653.52,557.43l0.84,-1.3l2.94,-1.27l5.72,-3.87l1.88,-2.39l0.68,-3.27l-2.8,-4.92l0.21,-2.67l1.74,-1.99l3.09,-0.96l6.3,-0.37l2.84,-1.43l1.47,-2.52l0.32,-2.91l1.2,-2.85l5.43,-5.67l0.21,-2.71l-1.62,-3.15l-0.13,-4.72l0.65,-5.6l1.24,-2.72l-1.12,-3.02l4.39,-0.23l1.49,-2.59l0.61,-3.82l-0.6,-2.73l2.61,-2.87l5.13,4.71l2.46,0.99l6.33,4.24l1.41,0.38l1.9,0.23l2.77,-0.3l1.78,-0.76l1.63,-1.14l1.26,-0.08l1.72,-1.94l0.53,-0.1l0.95,0.6l0.6,-0.29l0.75,0.14l1.66,-0.76l0.81,-0.83l1.0,0.15l1.63,0.91l0.97,-0.15l1.8,0.3l0.58,-0.49l0.46,0.51l-0.52,0.94l1.97,1.46l0.04,0.7l-0.78,1.93l0.0,0.89l-0.55,0.38l-0.59,-0.23l-0.8,0.3l-0.46,0.55l0.06,0.58l-0.74,0.7l0.13,0.66l-1.12,2.89l-0.12,1.97l0.37,1.51l-1.23,1.67l1.3,1.73l-0.01,0.69l0.92,1.59l1.32,1.61l2.95,1.45l1.04,1.2l0.48,0.0l1.55,1.13l2.99,0.23l0.82,1.21l0.68,0.38l0.54,-0.15l0.93,1.13l1.09,-0.15l1.8,0.76l3.86,0.76l1.24,0.76l2.94,0.61l2.29,1.13l1.35,0.15l1.03,-0.68l0.23,0.89l0.71,0.63l4.58,0.53l1.14,2.12l1.96,0.85l0.93,1.19l0.98,0.68l1.89,-0.08l3.5,0.53l1.89,0.68l2.37,1.77l-0.77,0.93l-0.06,3.72l-0.31,1.06l-1.72,3.39l-0.8,2.83l-11.14,1.71l-0.36,0.43l1.35,2.62l-1.47,1.31l0.18,1.52l-0.3,0.34l-1.2,-0.3l-2.78,1.36l-2.14,-0.3l-1.5,1.15l-0.06,-1.36l-0.4,-0.4l-0.85,0.08l-0.97,-0.92l-0.06,-0.72l-0.4,-0.4l-0.8,-0.04l-3.87,2.28l-5.35,4.16l-7.33,4.54l-5.34,5.75l-2.95,2.72l-0.19,5.12l-1.31,1.09l-2.33,0.46l-3.3,0.2l-7.3,-1.67l-3.1,-3.05l-2.66,-4.49l-0.81,-3.13l-0.32,-0.29l-2.26,-0.41l-4.25,0.82l-2.84,0.15l-5.42,-0.84l-2.42,-0.7l-10.07,0.43l-3.07,-2.68l-2.8,-1.61l-4.92,1.07l-1.71,1.0l-0.99,1.97l-0.48,2.24l-0.82,1.67l-2.11,-0.34l-1.86,-1.34l-2.07,-0.45l-1.72,-1.64l-1.2,-2.2l-0.85,-2.82l-0.09,-2.03ZM729.78,500.25l-0.04,0.04l-0.04,-0.04l0.0,-0.0l0.07,0.0ZM730.77,489.62l0.07,-0.07l-0.06,0.3l0.0,-0.23l-0.01,-0.01ZM776.66,530.1l-0.03,-0.03l0.04,0.03l-0.01,0.0ZM773.24,488.32l-0.73,-0.9l1.11,-1.43l0.49,-1.19l1.13,-0.53l1.1,0.08l1.09,1.81l-1.21,1.25l-2.97,0.91ZM768.51,494.0l-0.06,-0.41l0.94,0.15l0.66,1.19l-0.58,-0.63l-0.95,-0.3ZM730.34,506.27l0.12,-0.14l0.12,0.37l-0.31,-0.0l0.06,-0.24Z", "name": "Monastir"}, "tn-to": {"path": "M0.85,1023.06l5.17,-9.76l-2.66,-11.0l-2.9,-7.94l5.01,-7.93l-1.24,-10.33l3.52,-10.85l-5.84,-6.8l-1.51,-3.59l0.33,-2.14l1.02,-0.89l3.04,-0.86l1.6,-0.14l1.25,-1.57l3.86,-0.8l1.76,-1.36l0.53,-1.3l-0.79,-0.93l-0.47,-0.01l-1.1,0.73l-0.15,-0.47l1.65,-1.45l0.51,0.1l1.36,-0.78l0.44,0.18l0.53,-0.27l0.45,-0.86l2.71,-1.08l1.16,-6.92l9.08,-14.97l16.68,7.74l0.4,-0.04l17.21,-12.26l0.14,-1.59l-0.56,-6.62l1.12,-2.56l0.11,-1.59l8.31,-26.46l-0.44,-1.69l0.33,-1.01l-0.18,-0.49l0.41,-1.84l0.65,-0.53l0.24,-1.17l-0.22,-0.62l-0.64,-0.13l-0.39,-1.81l0.39,-0.87l0.15,-2.69l1.44,0.17l1.85,-0.53l1.24,0.18l1.97,-1.45l0.74,-0.94l0.83,-0.23l2.42,0.56l0.9,-0.3l1.66,0.16l1.8,-1.11l1.26,-0.25l0.49,-0.59l0.03,-1.56l0.7,-1.08l1.42,-1.8l1.29,0.09l0.89,-0.42l0.33,-1.76l1.05,-0.38l3.08,0.33l5.57,-2.45l2.8,-0.28l2.19,-4.24l5.07,-5.25l6.41,-0.88l0.26,-1.86l0.83,-0.42l0.24,-0.61l0.69,-0.45l0.47,-1.72l0.7,0.34l1.62,0.03l1.26,0.62l1.39,-0.54l2.15,0.28l0.59,-1.95l0.69,-1.03l1.33,-1.05l2.32,3.55l-1.56,4.15l-2.04,3.4l-2.49,3.3l-1.16,5.51l0.33,2.74l10.35,6.28l0.9,2.32l-3.41,2.27l-5.02,1.39l-3.99,0.19l-2.63,0.92l-1.5,4.32l-4.97,7.64l-3.03,3.47l-0.92,2.26l-0.43,2.49l5.37,5.09l11.69,8.02l6.87,6.33l2.38,4.24l2.1,4.63l3.48,3.61l9.69,1.11l5.68,1.88l10.86,4.6l3.34,1.73l1.5,2.21l1.02,3.85l2.45,1.43l2.56,2.26l-0.14,3.01l-2.32,5.14l0.34,2.47l0.36,0.33l2.86,0.24l4.67,-0.6l7.96,-2.21l10.17,0.26l9.7,-0.19l8.31,-1.2l5.46,0.31l6.68,-0.32l2.72,1.11l5.05,1.24l4.67,1.85l-1.83,8.35l-3.97,9.37l-5.56,5.72l-4.83,6.93l-4.52,7.52l-3.46,4.15l-13.35,10.93l-8.65,5.88l-10.79,8.74l-17.4,15.85l-2.64,1.17l-15.49,13.61l-8.52,6.31l-6.84,4.46l-8.12,6.54l-8.62,6.24l-14.17,13.29l-26.47,21.42l-13.56,9.69l-12.44,4.71l-8.0,2.17l-2.42,-2.95l-0.59,-1.87l-23.34,-36.31l-7.09,-18.14l1.29,-11.15l-0.84,-3.92l-0.23,-3.41l-1.56,-9.49l-5.5,-7.27l-8.43,-4.57Z", "name": "Tozeur"}, "tn-kb": {"path": "M50.05,1122.84l7.76,-2.11l12.52,-4.75l13.69,-9.77l26.52,-21.47l14.14,-13.25l8.61,-6.23l8.13,-6.55l6.83,-4.44l8.55,-6.33l15.48,-13.6l2.66,-1.18l17.42,-15.87l10.77,-8.72l8.65,-5.87l13.4,-10.98l3.59,-4.3l4.53,-7.53l4.79,-6.87l5.63,-5.84l4.0,-9.45l2.33,-10.19l5.66,-2.69l10.03,-2.14l4.55,-0.53l5.28,-0.23l6.38,0.25l8.12,1.12l5.48,-1.61l3.08,-2.67l2.79,-0.61l3.67,3.19l3.52,1.85l5.34,1.26l5.69,0.65l6.21,-0.51l3.47,-3.04l1.54,-3.35l-0.21,-2.95l-3.19,-6.37l1.2,-2.15l2.16,-2.41l3.58,-1.94l4.94,-1.99l6.38,-2.0l2.4,0.9l2.82,1.67l3.0,0.76l2.91,-1.15l2.79,-1.63l3.7,0.1l4.34,-0.74l7.01,-0.44l4.17,-1.11l2.75,-1.61l2.75,3.67l2.96,2.41l7.72,8.22l2.86,2.32l1.83,2.28l0.75,1.91l-5.46,7.42l-2.91,1.68l-3.02,2.91l-3.92,2.66l-2.38,2.59l-1.56,2.59l-0.56,3.56l0.88,5.24l-1.05,13.95l-0.82,3.56l-0.25,5.65l0.11,4.83l1.41,8.15l1.84,3.69l3.82,5.65l2.78,5.62l3.38,2.99l4.09,8.25l2.57,5.58l0.44,6.26l2.18,6.97l1.29,1.76l4.46,1.35l2.67,2.44l0.46,0.02l1.83,-1.17l2.97,-0.02l3.35,0.63l5.65,6.03l0.35,4.65l0.66,3.62l3.36,2.06l3.71,-0.89l5.98,-0.25l1.91,1.55l1.7,3.93l2.34,3.58l3.08,1.2l4.65,2.55l-4.41,4.03l-3.93,4.93l-0.19,3.56l0.37,6.28l-0.78,1.51l-2.94,1.9l-1.47,2.18l0.01,0.47l6.0,7.05l1.5,3.48l8.22,5.62l3.12,1.73l3.11,2.72l3.91,12.02l5.28,7.08l3.5,6.97l8.58,7.95l10.56,10.91l5.22,3.99l2.86,0.5l3.33,3.85l3.75,1.03l3.13,1.53l7.6,-0.75l6.27,0.79l3.56,2.61l0.17,6.82l-0.4,22.87l-1.94,2.16l-2.28,1.23l-1.03,2.99l-0.65,3.43l1.24,1.48l1.85,1.27l2.48,5.81l6.24,2.05l2.91,2.04l5.99,3.36l2.19,3.11l-0.59,1.19l-9.22,0.14l-2.13,0.59l-1.72,2.07l0.25,3.44l-0.14,6.09l1.1,3.05l0.57,7.66l1.09,2.13l5.18,2.81l0.77,1.49l-1.88,4.06l-2.63,1.03l-2.44,1.57l-1.18,2.63l-1.85,2.01l-2.83,1.24l-1.58,2.06l0.58,3.8l1.26,2.76l-0.07,2.46l-2.85,5.73l-2.05,0.92l-1.65,1.66l-0.09,0.43l1.25,3.1l5.11,4.27l3.03,3.15l2.28,2.95l2.67,2.52l1.67,2.37l-0.66,2.22l-2.3,0.42l-2.21,-1.26l-2.45,-0.77l-7.54,-1.47l-2.91,-2.81l-1.62,-3.92l-1.91,-3.52l-5.71,-3.02l-3.13,-0.72l-3.58,-1.47l-4.96,-2.89l-2.93,-5.25l-2.38,-5.07l-0.42,-3.11l-1.9,-3.41l-3.03,-1.44l-6.01,1.37l-3.0,1.08l-6.64,-0.96l-2.66,1.91l-2.93,1.3l-3.65,1.23l-7.8,1.6l-16.56,10.73l-27.73,7.88l-21.32,5.34l-20.95,7.29l-55.16,0.91l-70.86,18.66l-53.18,14.74l-6.41,1.4l-6.97,-77.21l-16.71,-26.63l-17.3,-21.24l-1.46,-0.88l-10.21,-10.95l-0.34,-0.62l0.01,-2.12l0.61,-6.59l-0.13,-3.96l-7.22,-3.85l-5.88,-2.72l-1.49,-0.33l-0.86,-0.92l-1.27,-0.3l-12.52,-6.11l-5.08,-2.11l-2.48,-1.21l-1.1,-0.88l-1.08,-0.18l-7.91,-3.81l-3.74,-0.61l-11.52,-0.69l-0.87,0.23l-6.55,-16.33l-3.33,-9.46l-4.07,-21.09l-0.96,-3.6l-2.28,-13.0Z", "name": "Kebili"}, "tn-ta": {"path": "M341.01,1475.73l-1.11,-0.12l-58.51,-38.82l-64.13,-45.95l-33.83,-23.72l-0.57,-6.3l6.54,-1.43l53.18,-14.75l70.81,-18.64l55.2,-0.92l20.96,-7.3l21.31,-5.34l27.8,-7.9l16.64,-10.77l7.66,-1.54l3.71,-1.24l3.02,-1.34l2.36,-1.81l6.75,0.94l3.01,-1.09l5.88,-1.33l2.49,1.28l1.63,3.07l0.41,3.09l2.42,5.17l3.14,5.51l5.13,2.99l3.64,1.49l3.05,0.68l5.61,2.98l3.28,7.15l3.15,3.08l7.79,1.57l2.32,0.72l2.29,1.31l2.95,-0.45l0.31,-0.28l0.73,-2.99l-1.86,-2.62l-2.68,-2.53l-2.26,-2.93l-3.06,-3.18l-5.08,-4.25l-1.01,-2.6l1.41,-1.42l2.17,-1.04l2.98,-5.98l0.11,-2.79l-1.29,-2.89l-0.61,-3.27l1.26,-1.71l2.94,-1.32l1.96,-2.12l1.09,-2.52l2.23,-1.45l2.94,-1.26l2.05,-4.43l-1.07,-2.25l-5.21,-2.83l-0.82,-1.76l-0.53,-7.54l-1.09,-2.96l0.14,-6.02l-0.32,-3.08l1.33,-1.71l1.83,-0.52l9.4,-0.14l0.37,-0.22l0.79,-1.98l-2.58,-3.6l-5.98,-3.35l-3.01,-2.09l-5.93,-1.84l-2.41,-5.68l-2.97,-2.41l0.61,-3.19l0.95,-2.75l2.12,-1.06l1.97,-2.19l10.23,0.67l5.95,-1.54l8.2,-1.39l4.92,-1.17l5.21,-2.09l1.96,-2.48l0.46,-3.73l1.82,-3.39l2.38,-3.08l2.66,-1.3l3.87,-0.85l4.14,-0.05l3.88,1.81l9.08,2.03l5.21,-1.76l4.41,-3.99l4.52,-6.65l2.88,-1.84l6.93,-0.27l3.74,-1.56l3.28,-0.89l10.29,-1.84l14.92,-9.83l7.76,-3.9l4.84,0.0l7.74,2.76l2.93,2.22l2.93,0.82l7.11,-1.98l2.77,-1.88l2.57,-1.09l0.4,2.06l-2.39,1.92l-1.4,2.71l-0.73,2.93l-1.25,1.53l-4.25,2.33l-0.02,0.69l15.28,9.37l0.54,-0.12l1.16,-1.73l9.05,3.71l60.41,28.92l0.89,5.43l1.41,5.41l2.3,4.53l2.88,4.31l5.61,4.83l4.15,1.97l7.84,7.92l2.23,2.53l1.0,2.05l-1.38,2.99l-3.75,3.55l-2.02,3.34l-1.62,4.13l-0.31,9.18l-0.45,2.6l1.38,8.01l-0.96,4.52l0.17,10.47l-1.16,2.3l-1.72,2.44l-0.36,4.68l24.88,19.46l23.11,19.35l14.16,10.84l10.72,-2.18l2.02,5.03l-37.6,22.73l-15.14,30.11l-4.0,10.36l-1.5,1.18l-8.24,2.86l-2.77,2.13l-3.22,0.27l-3.89,2.43l-1.62,1.77l-3.34,2.67l-3.92,1.56l-4.58,1.02l-3.1,1.45l-11.47,7.97l-3.49,3.41l-12.5,8.57l-1.08,5.39l-0.79,1.97l-2.73,5.37l-9.42,16.04l-5.85,1.16l-3.85,1.63l-1.95,1.64l-2.32,0.92l-2.71,0.3l-3.96,-1.33l-4.27,-0.41l-2.42,-0.69l-2.13,0.85l-1.59,1.96l-2.77,1.23l-0.76,1.48l0.33,5.75l-0.69,1.57l-2.05,1.84l-0.73,1.92l0.19,1.85l4.02,6.57l0.07,2.3l-1.54,3.14l-0.41,1.65l-4.21,4.35l-4.3,3.6l-1.09,0.44l-2.18,2.3l-1.86,3.33l-2.58,9.96l-2.12,2.85l-0.98,0.48l-1.26,1.41l-2.57,1.81l-8.27,2.95l-7.34,1.94l-3.79,0.26l-10.51,-3.43l-1.99,0.03l-2.48,0.62l-2.13,1.02l-11.49,7.48l-4.86,4.06l-0.56,1.48l-1.02,1.22l-1.14,3.35l-5.52,8.22l-0.17,1.05l-2.8,5.11l-3.78,5.25l-0.39,1.31l-2.45,3.51l-1.85,1.83l-0.48,1.65l-2.43,3.11l-0.98,0.31l-3.09,4.31l-0.55,1.6l-3.13,4.2l-0.99,0.67l-2.04,2.99l-0.76,2.19l0.0,5.94l1.53,3.49l0.48,2.81l-0.36,4.2l0.59,4.1l1.41,4.68l0.82,0.93l8.2,20.92l3.03,8.98l0.67,1.04l1.21,4.79l0.75,1.04l2.55,7.21l2.32,4.38l4.39,16.92l2.01,3.22l3.03,6.24l0.6,3.46l-2.66,9.47l-0.08,5.04l1.05,5.14l0.56,0.85l0.95,4.08l0.29,5.82l2.02,9.27l2.31,5.19l-0.28,1.07l-2.42,2.7l-0.27,2.0l0.52,1.88l-2.08,5.87l-0.68,3.77l-1.35,4.27l-6.91,13.44l-4.54,10.37l-2.78,4.78l-2.97,2.42l-1.09,0.4l-2.91,2.15l-1.58,1.91l-4.92,9.28l-8.37,10.61l-3.18,5.95l-4.26,5.02l-0.93,1.54l-4.64,4.24l-7.92,9.86l-2.89,7.82l-6.51,10.54l-1.44,1.48l-1.98,1.3l-3.26,7.59l-6.46,4.76l-6.35,6.53l-1.29,0.43l-2.63,-0.2l-9.96,1.08l-6.14,2.44l-1.28,1.1l-3.87,1.78l-6.73,1.84l-6.49,4.37l-1.84,1.72l-6.9,2.62l-5.94,3.33l-7.26,4.84l-5.32,2.04l-7.21,1.28l-34.88,-157.68l-7.9,-36.95l-0.73,-1.16l-28.19,-129.54l-14.48,-63.67l-8.86,-41.11l-6.22,-24.9l-1.26,-2.38l-4.8,-20.66l-0.44,-0.11Z", "name": "Tataouine"}, "tn-kf": {"path": "M161.61,454.97l1.41,-1.77l-0.23,-1.86l0.36,-1.08l0.03,-2.34l1.1,-1.19l0.26,-0.75l1.18,-0.32l0.35,-0.63l0.77,0.17l0.81,-0.88l0.89,0.02l0.49,-0.49l-0.21,-0.8l0.38,-0.43l0.61,-8.37l1.0,-6.98l-1.01,-5.88l0.55,-2.05l0.79,-0.65l1.39,-2.19l1.08,-2.45l0.1,-2.62l1.48,-2.13l0.6,-2.1l4.67,-4.02l-0.43,-3.22l-0.87,-2.01l0.42,-2.43l-0.6,-2.6l-0.9,-1.02l-1.65,-1.08l-0.56,-1.07l-1.11,-0.9l-0.51,-1.46l-0.91,-0.39l-0.62,-3.62l1.11,-1.45l2.72,-1.83l1.21,-1.72l1.91,-6.31l1.38,-1.23l0.14,-1.43l1.54,-2.04l-0.28,-1.8l0.22,-4.06l-1.25,-2.41l-2.15,-0.81l1.52,-2.19l0.42,-1.43l1.58,-1.96l0.68,-0.26l2.12,-2.06l0.83,-0.36l2.26,-0.07l0.43,-1.57l1.39,-0.39l0.25,-0.59l-0.79,-1.29l-1.66,-1.07l-0.91,-2.23l-0.1,-2.04l1.01,-2.7l-0.8,-3.75l3.46,-3.37l13.04,1.42l7.4,-5.77l3.39,-0.93l4.71,-0.7l4.94,-4.78l2.04,-1.26l5.1,0.09l2.94,0.69l3.12,-0.11l3.1,-1.14l9.2,-4.42l3.46,0.68l4.7,1.47l3.72,1.87l2.72,0.41l3.88,-0.34l3.85,-1.15l3.57,-0.24l9.69,-2.09l3.02,0.04l3.6,-1.49l5.65,0.03l2.55,-0.76l2.92,-1.61l4.95,-5.76l1.54,5.28l2.25,4.39l5.51,6.23l0.85,3.42l1.72,3.66l0.47,2.3l-0.83,2.27l-5.75,6.2l-0.01,3.32l1.72,3.56l4.24,6.79l1.09,2.12l1.06,3.16l1.48,2.33l2.34,1.38l6.06,2.38l1.68,2.28l-0.62,3.06l1.06,3.61l-0.18,2.42l-1.78,2.54l-1.39,2.67l1.19,2.82l2.33,9.08l0.37,0.27l3.17,0.07l2.31,0.65l1.02,1.2l1.14,2.94l0.81,1.16l2.96,0.01l2.03,-0.33l1.34,3.49l7.7,2.6l-0.67,5.51l-0.13,4.58l0.8,6.57l1.31,5.46l-0.23,1.6l-2.48,2.42l-3.81,1.9l-6.49,6.2l-1.11,3.04l0.64,6.1l-0.09,2.99l-0.88,2.86l-3.26,2.26l-3.34,0.49l-2.95,1.65l-3.53,3.8l-1.63,5.9l0.33,0.51l2.66,0.38l-0.5,1.72l-2.94,2.63l-0.12,0.4l1.27,4.65l0.49,5.32l-0.66,4.07l-4.21,6.57l1.43,3.51l3.5,5.61l0.05,3.17l0.63,3.03l-0.24,2.44l-1.92,-0.29l-3.87,-2.43l-4.2,-1.83l-11.74,-2.24l-9.82,-2.8l-4.1,-1.85l-4.69,-3.17l-4.89,-2.82l-6.03,-5.41l-3.03,-1.73l-4.1,0.55l-5.39,2.3l-3.27,-1.12l-5.4,-2.82l-5.34,0.53l-2.36,4.05l-1.82,2.3l-4.75,2.27l-4.43,3.98l0.57,3.72l-0.52,3.69l1.2,5.47l-0.54,3.65l-2.88,2.59l-4.25,4.83l-2.73,-0.13l-2.95,1.92l-5.65,-6.49l-4.0,-2.52l-3.47,0.34l-6.19,1.3l-9.33,0.27l-3.24,2.28l-3.69,3.8l-2.49,2.89l-1.53,3.07l-0.97,0.25l-2.94,-0.07l0.27,-2.55l-0.2,-1.11l-0.68,-1.08l0.4,-1.31l-0.55,-3.54l-0.52,-1.0l-3.36,-2.04l-0.82,-0.93l-1.19,-0.28l-2.6,0.09l-1.35,-1.8l-0.49,-0.26l-0.55,0.15l-1.12,-2.58l-4.71,-5.76l-3.18,-1.9l0.36,-2.11l-1.02,-1.97l-0.7,-4.73l0.25,-1.73l1.12,-2.4l0.28,-2.29l-0.33,-0.7l0.12,-1.78l0.32,-1.37l0.58,-0.91l0.1,-2.71l0.56,-0.54l0.09,-1.05l-1.24,-13.82l0.48,-0.77l-0.2,-0.54l0.35,-1.67l1.05,-0.9l0.39,-1.58l-0.34,-0.58l-2.78,0.07l0.24,-0.61l0.96,-0.82l0.56,-1.56l-0.5,-0.54l-2.65,-0.89l-0.02,-0.74Z", "name": "Le Kef"}, "tn-me": {"path": "M647.37,1061.54l1.7,0.74l0.8,-0.15l0.43,0.44l1.51,0.3l0.45,0.44l-0.33,0.34l0.31,0.78l-1.48,0.22l-1.32,-0.44l-0.83,0.77l-0.06,2.37l-0.58,0.92l-0.37,-0.07l-0.46,0.55l0.89,0.62l1.19,-0.98l0.65,0.1l0.65,-0.55l0.31,-0.81l0.74,-0.59l-0.45,-0.78l1.28,0.3l-0.84,0.85l0.23,0.71l-0.78,0.62l0.65,0.62l0.8,-0.37l1.17,1.55l0.46,-0.47l-0.26,-0.6l0.38,-0.55l1.26,-0.3l0.46,-0.47l-0.93,-0.84l0.18,-0.76l0.36,0.29l0.92,0.0l1.23,-0.29l0.55,-0.52l0.86,0.15l0.7,-0.52l1.14,0.44l0.79,-0.7l0.25,0.25l0.39,-0.26l1.89,0.12l0.86,-0.29l0.46,-0.47l-0.26,-0.33l0.36,-0.23l0.86,0.0l0.36,0.3l1.27,-0.63l0.33,0.33l0.68,-0.29l0.22,0.23l-0.77,0.15l-0.46,0.47l0.71,0.62l1.72,-0.52l1.29,-1.03l-1.14,2.48l-0.12,2.58l0.46,0.47l0.44,-0.22l0.42,0.29l1.03,-0.15l1.55,1.03l0.68,-0.37l1.17,0.37l1.63,-1.43l-0.06,-0.74l-0.77,-0.55l-0.93,1.18l-0.54,-0.59l-0.71,0.55l-0.53,-0.55l-0.48,0.07l-1.56,-0.81l-0.38,-1.09l1.06,-2.56l0.63,0.09l2.16,-1.03l2.94,-0.3l0.83,-0.77l0.0,-0.34l0.95,-0.44l0.75,-0.96l1.42,-0.37l0.72,0.3l1.04,-0.3l0.55,-0.59l0.8,0.07l3.56,-0.81l1.41,-0.81l2.98,-2.95l2.98,-2.22l2.33,-0.59l1.07,-1.11l0.97,-0.44l2.32,0.0l2.02,-0.44l2.43,1.4l0.93,1.04l1.84,5.12l-1.04,3.04l-0.55,3.48l-1.23,1.46l-0.37,1.18l0.31,4.94l0.98,3.23l-0.12,2.31l-0.43,1.17l-0.89,0.26l-0.95,1.15l-0.8,4.53l-1.44,0.0l-1.81,2.07l-2.43,1.4l-2.12,2.17l-0.86,1.77l-0.43,4.05l0.89,1.06l0.79,-0.29l1.34,0.66l1.16,0.91l0.74,1.18l0.12,2.31l-0.92,2.65l-0.55,0.58l0.31,1.99l1.63,0.99l0.37,0.0l0.63,-0.66l0.85,0.29l2.32,-0.07l1.22,0.37l2.08,1.81l0.95,1.8l0.97,0.15l0.75,0.59l3.45,-0.29l3.67,0.15l1.61,-2.06l1.03,0.07l1.54,-0.44l0.95,-1.06l0.76,-1.88l3.95,-0.29l3.75,-1.33l1.87,-2.36l3.11,-0.44l4.07,-1.7l2.88,-0.52l3.61,-1.16l0.32,0.2l1.14,-0.78l0.52,0.34l0.61,-0.44l0.62,0.8l0.95,-0.69l0.31,-0.66l-1.29,-0.97l1.05,-1.09l0.18,-0.97l1.78,-1.98l0.28,-0.93l0.83,-0.84l-0.06,-1.33l0.86,-1.03l0.25,-1.25l-0.31,-0.96l-0.98,-1.02l-0.92,-2.45l-0.98,-0.8l-0.98,-1.66l-0.55,-1.75l-1.01,-0.84l-1.41,-0.15l-0.89,-0.59l0.06,-1.96l1.52,-1.37l1.22,0.0l1.17,-1.11l1.07,-0.37l1.33,0.22l0.95,-0.92l0.18,-0.81l1.97,0.33l0.83,0.67l0.98,0.0l1.41,1.18l3.07,-0.22l0.44,-0.42l1.09,-0.17l1.01,-1.21l-0.18,-2.07l-0.65,-0.47l-0.58,0.74l-0.37,-0.1l0.06,-0.59l0.41,-0.28l1.46,0.59l2.0,-0.14l0.12,0.77l1.69,1.58l4.36,1.62l1.6,-0.15l1.2,-0.52l2.39,3.29l1.29,0.96l-0.37,0.37l0.25,0.89l1.2,1.51l1.26,0.77l2.46,3.04l0.49,1.33l3.99,5.52l0.74,2.14l0.49,3.04l0.55,0.65l-0.43,1.05l0.47,0.96l-0.29,0.29l0.06,1.25l0.68,1.76l-0.18,0.75l0.43,0.73l-0.43,1.26l0.25,0.65l-0.25,0.97l0.49,0.6l-0.85,0.81l-0.74,1.33l1.82,1.96l-2.93,2.39l-0.8,2.81l-2.15,4.33l-0.12,4.12l2.89,5.01l-0.25,2.36l0.77,0.4l0.95,-1.06l3.04,2.98l2.15,1.69l0.28,-0.15l0.06,0.48l-2.38,2.63l-1.56,1.14l-1.21,1.66l-2.19,0.3l-1.55,-1.03l-1.38,1.14l0.0,0.66l0.52,0.4l0.86,-0.69l0.18,0.18l-0.64,0.55l0.74,0.49l-0.06,0.39l0.4,0.4l0.54,-0.22l0.69,0.44l1.11,0.15l0.81,-0.59l0.66,0.15l0.43,-0.3l2.06,-1.94l0.18,-0.7l1.46,-0.67l3.17,1.85l3.85,4.12l1.23,1.66l0.06,2.57l0.77,0.92l2.41,0.66l0.79,0.51l0.49,-0.07l0.74,0.88l0.46,-0.15l3.17,1.47l1.59,0.37l4.46,2.13l5.94,4.12l3.19,1.55l-1.97,-0.44l-0.92,-0.73l-1.89,-0.29l-4.87,-2.28l-4.04,-1.03l-9.17,-3.9l-1.68,0.0l-2.49,-1.03l-2.03,-0.15l-0.86,0.15l-1.44,1.47l-1.33,-0.44l-1.04,0.15l-0.71,0.77l-0.49,1.32l-0.31,3.34l-0.32,0.28l-0.38,-0.34l-0.98,-0.07l-0.4,0.4l1.23,4.48l0.71,0.55l1.22,-0.75l1.46,2.48l1.57,1.8l2.99,1.4l1.53,1.76l-0.12,1.44l1.47,2.34l-0.18,4.13l2.27,4.11l2.67,1.21l1.97,-0.44l0.88,-0.88l2.19,-0.22l0.41,-0.38l5.43,1.48l6.07,-0.73l5.29,1.76l0.75,0.59l4.06,0.89l2.89,1.24l4.6,0.88l2.59,1.03l1.83,0.29l0.53,0.29l-0.06,0.55l0.52,0.55l0.62,-0.15l1.47,1.32l0.89,-1.13l1.04,-0.66l0.96,-2.84l0.73,0.67l1.26,0.26l1.85,1.5l1.01,1.32l0.68,0.07l0.6,-0.42l0.32,0.2l0.3,-0.3l1.94,-0.36l1.26,1.69l0.96,0.37l1.13,1.17l0.95,0.0l0.83,0.66l1.35,-0.22l1.69,-1.72l0.22,0.85l-0.65,0.55l0.4,0.77l0.48,-0.29l0.87,0.22l0.59,-0.59l1.07,0.73l1.35,0.15l1.57,-1.13l-0.46,-0.55l-0.52,0.1l-0.89,-0.77l-0.58,0.15l-0.01,-1.14l-0.4,-0.4l-0.58,0.36l0.06,-0.77l-1.32,-1.14l-2.64,-0.81l-1.32,1.32l-0.43,-0.07l0.37,-1.88l-0.12,-1.03l-0.58,-0.77l-1.41,-0.66l-4.49,-3.31l-1.03,-0.15l-1.18,-0.81l-1.04,-1.18l-6.13,-4.41l-2.95,-2.57l-1.61,-1.76l-2.06,-1.7l0.09,0.0l2.38,1.62l3.22,2.87l1.46,0.74l5.48,4.78l2.08,1.03l4.87,3.38l3.65,1.69l3.97,2.5l2.7,1.32l1.28,0.07l1.79,1.25l4.98,1.69l2.09,0.51l1.09,-0.07l1.3,0.66l2.41,-0.66l1.62,0.18l-0.89,2.44l0.31,2.18l-2.35,8.68l-4.15,7.48l-0.74,3.22l-0.66,5.34l-0.53,10.6l-0.49,1.95l1.56,1.53l0.29,2.87l-2.83,3.39l-2.94,12.22l-3.16,9.92l1.52,4.19l2.51,9.0l-1.46,4.44l-1.14,5.47l-1.55,10.37l1.95,8.81l0.2,3.61l-0.95,8.19l-1.21,5.32l0.29,3.03l1.04,3.5l3.05,7.82l2.64,2.75l2.51,1.17l2.36,2.06l4.99,6.87l2.75,2.29l2.77,4.16l1.78,4.15l-15.57,31.4l-13.16,9.77l-0.92,1.18l-2.84,1.17l-5.63,0.62l-7.19,5.2l-5.71,3.04l-2.38,0.87l-4.43,0.93l-4.54,1.88l-24.51,8.26l-11.81,5.25l3.49,-9.04l15.08,-29.99l37.64,-22.68l0.16,-0.49l-2.28,-5.66l-0.46,-0.24l-10.54,2.28l-14.01,-10.73l-23.11,-19.34l-24.71,-19.32l0.47,-3.99l1.64,-2.25l1.26,-2.59l-0.17,-10.55l0.96,-4.61l-1.38,-8.01l0.45,-2.51l0.31,-9.09l1.55,-3.92l1.94,-3.21l3.79,-3.6l1.5,-3.24l-1.11,-2.62l-10.24,-10.67l-4.18,-2.0l-5.46,-4.69l-2.81,-4.2l-2.24,-4.39l-2.54,-11.23l-60.62,-29.02l-9.34,-3.85l-0.51,0.14l-1.14,1.7l-14.37,-8.81l3.72,-2.03l1.47,-1.75l0.79,-3.04l1.33,-2.59l2.41,-1.89l-0.39,-3.17l-0.55,-0.29l-3.06,1.3l-2.72,1.85l-6.71,1.92l-2.61,-0.7l-3.0,-2.26l-7.9,-2.82l-5.29,0.02l-7.92,3.98l-14.74,9.74l-10.25,1.83l-3.38,0.92l-3.58,1.52l-7.14,0.32l-3.17,2.06l-4.55,6.68l-4.12,3.75l-4.8,1.68l-8.94,-2.0l-4.0,-1.84l-4.27,0.06l-4.12,0.91l-2.92,1.48l-2.46,3.18l-1.91,3.55l-0.42,3.64l-1.65,2.17l-5.03,2.02l-4.85,1.15l-8.23,1.4l-5.9,1.53l-9.86,-0.67l0.4,-22.65l-0.34,-7.35l-3.96,-2.85l-6.49,-0.82l-7.6,0.75l-2.9,-1.48l-3.67,-1.0l-3.14,-3.74l-2.99,-0.58l-5.09,-3.9l-4.76,-5.17l-6.46,-6.34l1.6,0.05l3.19,1.71l4.79,1.61l4.94,0.72l3.88,-0.41l6.21,-2.54l6.35,-0.72l2.3,1.19l4.14,-0.48l4.46,-1.09l2.96,1.13l4.32,0.07l3.88,-1.13l2.67,-1.89l2.29,-2.63l1.86,0.09l2.66,1.74l3.16,0.73l2.75,-2.79l5.69,-0.85l3.81,-1.63l3.31,-2.74l4.52,-2.88l0.35,-4.26l-0.43,-2.73l2.03,-1.65l3.39,-0.61l3.51,-1.83l2.31,-3.98l0.21,-2.74l7.09,-4.11l3.99,-1.65l3.94,0.04l4.73,0.86l4.87,-0.01l4.26,-3.62l1.3,-2.87l1.05,-3.9l5.28,-5.66l2.39,-3.51l1.58,-3.05l4.77,-6.78l0.94,-4.39l3.92,-6.9l2.19,-3.3l3.02,-3.72l2.15,-4.58l2.13,-2.98l5.11,-2.49l3.38,-2.67ZM649.72,1065.39l-0.01,-0.01l0.04,0.0l-0.01,0.01l-0.01,0.0ZM749.07,1056.14l-0.69,-0.2l-1.4,1.26l-0.44,-0.3l-1.23,0.15l-1.87,2.34l-0.56,1.76l-0.18,5.86l-0.37,1.08l-0.77,-0.62l-1.44,-0.19l-0.49,-2.73l-0.55,-1.32l0.74,-1.12l0.06,-2.38l1.17,-1.32l0.37,-1.33l-0.37,-3.4l-2.7,-2.84l-0.31,-0.92l-4.12,-4.72l-0.86,-1.42l-2.98,-3.13l-1.17,-0.22l-2.46,0.59l-1.92,1.85l-1.22,0.15l-1.84,1.4l-1.01,1.21l-0.31,0.89l0.0,3.66l-1.01,-0.67l-3.93,1.18l-1.81,-3.44l-2.52,-2.17l-0.12,-0.78l-0.9,-1.14l0.17,-0.86l-0.8,-3.03l-1.12,-1.98l0.14,-1.94l-0.59,-1.22l0.47,-0.7l-0.23,-0.55l0.72,-1.61l0.46,-0.03l0.46,-0.92l0.46,0.25l0.77,-0.84l-0.13,-1.0l1.54,-2.63l0.37,-1.63l-0.18,-2.97l0.25,-0.95l-0.43,-1.84l0.37,-0.38l-0.3,-0.39l0.23,-1.6l-0.31,-0.62l0.43,-1.9l-0.43,-1.48l-0.74,-1.17l0.06,-0.83l-0.43,-0.83l0.25,-0.7l0.71,0.15l0.58,-0.47l0.31,-0.89l-1.35,-1.17l0.18,-3.04l-0.66,-0.47l0.47,-1.94l1.57,-0.65l3.87,-0.83l0.46,-0.37l1.02,0.15l3.5,-0.74l0.65,-0.77l0.71,0.62l0.61,-0.38l0.37,0.3l0.73,-0.3l0.69,0.37l0.67,-0.07l1.6,0.81l0.79,-0.3l2.88,1.04l1.56,1.04l1.03,0.11l1.31,0.86l0.44,-0.38l1.41,1.34l2.58,1.26l0.92,0.0l0.89,-0.54l2.25,1.36l2.32,-0.07l1.98,0.37l3.27,-0.52l0.85,0.15l1.26,-1.21l0.18,-1.48l-1.29,-2.56l0.23,-0.2l3.15,2.68l0.25,0.68l2.18,2.4l2.21,1.78l3.59,2.07l1.23,2.19l3.96,3.95l2.58,1.55l1.41,0.44l0.75,-0.44l1.22,0.07l1.04,-0.74l0.43,0.59l1.33,0.44l1.35,1.01l0.06,4.96l0.92,3.15l-0.41,0.38l-0.57,-0.83l0.18,-0.33l-0.49,-2.66l-0.46,-0.47l-0.58,0.4l-0.06,0.89l0.18,1.92l1.84,2.44l0.06,0.81l0.38,0.39l-0.44,0.94l-0.83,-0.62l-1.54,0.22l-1.61,1.48l-1.89,1.03l-2.35,3.03l-2.45,0.22l-2.06,1.5l-2.94,4.88l-0.49,1.63l-0.18,3.62l-0.46,-0.4l-0.58,0.62l-1.04,7.83l-1.35,-2.5l0.68,-1.34l0.06,-1.93l0.37,-0.65l-0.74,-2.35l0.18,-2.3l-0.58,-0.84l-0.55,0.0l-0.81,0.74l-1.22,-0.07l-1.26,1.51l-1.17,2.81l-0.37,2.3l-1.11,2.03l-1.07,0.15l-0.74,0.52l-2.93,3.01ZM763.77,1048.35l0.0,0.6l0.12,0.59l-0.43,-0.58l0.31,-0.62ZM763.9,1049.92l0.0,0.08l-0.06,0.06l0.0,-0.08l0.06,-0.06ZM763.74,1047.59l0.04,-0.05l0.06,-0.06l0.0,0.09l-0.1,0.02ZM761.48,1055.5l-0.02,0.0l0.1,-0.12l0.0,0.04l-0.08,0.08ZM761.62,1055.31l0.0,0.01l-0.06,0.06l0.0,-0.01l0.06,-0.06ZM831.61,1162.48l-0.08,-0.08l0.12,0.08l-0.03,0.0ZM831.46,1162.33l-0.05,0.0l-0.38,-0.38l0.3,0.29l0.12,0.08ZM830.87,1161.89l-0.15,-0.15l-0.05,-0.01l0.08,0.0l0.2,0.15l-0.1,0.0ZM844.73,1168.72l-0.05,-0.0l-0.01,-0.01l0.05,0.0l0.01,0.01ZM840.49,1166.59l-0.37,-0.22l-0.17,0.0l-0.13,-0.08l0.35,0.07l0.32,0.23ZM839.73,1166.22l0.02,0.0l0.01,0.01l-0.02,0.0l-0.01,-0.01ZM840.98,1166.81l0.01,0.01l-0.04,-0.01l0.03,0.0ZM841.05,1166.88l1.09,0.29l1.73,1.04l-2.66,-1.18l-0.16,-0.16ZM843.94,1168.28l0.17,0.0l0.13,0.08l-0.22,0.0l-0.08,-0.08ZM844.54,1168.65l-0.23,-0.23l0.3,0.23l-0.07,0.0ZM870.95,1191.32l-0.12,-0.12l0.06,0.0l0.06,0.12ZM863.61,1189.36l0.06,0.0l0.46,-0.44l-0.23,0.45l-0.29,-0.01ZM763.94,1066.35l0.5,-0.6l0.8,0.56l-0.55,0.48l-0.76,-0.44ZM764.02,1062.94l0.06,0.57l-0.25,0.36l-0.49,-1.12l0.18,-0.28l0.49,0.47ZM763.53,1062.47l0.0,-0.01l0.06,-0.06l0.0,0.01l-0.06,0.06ZM761.99,1059.16l-0.25,-0.48l0.03,-0.38l0.58,0.25l0.0,0.52l-0.37,0.09ZM737.29,1077.98l-0.37,-0.39l1.01,-0.75l1.26,0.65l0.06,1.53l-0.49,1.24l-1.29,-1.55l-0.18,-0.73ZM716.64,1052.66l-0.17,-0.28l2.01,0.3l-0.37,0.63l0.28,0.48l-0.16,0.36l-0.95,-0.87l-0.64,-0.15l0.0,-0.47ZM703.24,1042.15l0.95,-1.06l1.05,-0.08l0.4,-0.4l0.0,-0.52l0.1,1.07l-0.47,0.92l0.37,2.41l-1.04,-0.74l-1.35,-1.61ZM705.64,1040.0l0.0,0.01l-0.04,-0.04l0.01,-0.01l0.03,0.03ZM653.53,1067.21l-0.12,-0.9l0.18,-0.07l0.18,0.38l-0.24,0.59Z", "name": "Medenine"}, "tn-ks": {"path": "M167.23,763.61l0.3,-5.31l0.63,-2.12l-0.1,-1.38l-1.15,-1.68l0.39,-1.74l-0.39,-2.44l-0.63,-2.32l-0.91,-1.0l0.6,-1.01l-1.08,-1.95l0.18,-3.08l-2.46,-3.38l-0.27,-1.94l0.45,-1.67l-0.14,-1.18l-1.06,-3.09l-0.06,-1.1l-0.96,-1.01l0.07,-1.0l-0.89,-1.03l1.67,-1.77l2.02,-1.17l1.14,-0.01l1.39,-1.68l1.09,-0.48l0.78,-1.02l1.57,-0.25l1.04,-0.54l0.45,-0.75l1.13,0.62l0.81,-0.33l1.32,0.22l0.48,-0.3l0.57,-14.31l-0.49,-2.32l6.07,-16.35l-0.1,-0.62l1.27,-1.77l0.78,-2.75l0.71,-0.64l0.37,-2.07l0.78,-1.01l3.4,-1.99l1.83,-1.85l1.2,-0.67l2.71,-2.77l3.17,-6.11l1.39,-7.26l0.87,-0.77l1.27,-2.46l3.5,-5.0l1.3,-2.83l5.2,-5.49l-0.05,-0.54l-0.54,-0.36l-2.64,0.93l-0.67,-0.25l-4.02,0.34l-2.14,-0.68l-2.01,-1.57l-2.2,-0.39l-1.56,0.29l-0.11,-0.72l-1.8,-0.64l-1.62,-1.99l-3.33,-2.4l-2.77,-1.01l-1.14,-1.33l-2.08,-0.67l-3.44,-0.39l-1.87,-2.62l0.02,-1.87l-0.61,-1.66l-1.98,-2.54l0.01,-2.95l0.84,0.05l0.42,-0.45l-0.13,-2.17l0.34,-2.6l-0.81,-4.28l0.31,-2.31l-0.47,-2.45l2.62,-5.29l0.66,-2.68l-0.61,-2.0l-1.94,-0.28l2.24,-1.56l1.97,-5.82l2.55,-2.84l0.75,-1.56l-0.11,-0.63l0.66,-0.48l1.84,-0.3l1.77,-0.83l2.49,0.2l0.56,-0.69l0.47,-4.77l-2.93,-2.92l-2.89,-7.68l0.75,-3.26l-0.04,-3.05l-1.95,-8.54l-0.19,-6.28l-0.58,-2.5l1.37,-2.58l0.31,-3.17l3.0,0.07l1.31,-0.33l1.79,-3.31l2.45,-2.85l3.64,-3.74l2.84,-2.07l9.23,-0.27l6.28,-1.31l3.26,-0.32l3.5,2.28l5.84,6.7l0.52,0.08l3.14,-2.04l2.9,0.04l1.8,-2.29l5.6,-5.53l0.58,-3.87l-1.21,-5.58l0.53,-3.58l-0.67,-3.33l4.21,-3.79l4.83,-2.34l1.94,-2.46l1.97,-3.68l4.83,-0.53l5.32,2.79l3.45,1.18l5.77,-2.35l3.56,-0.54l2.79,1.57l6.06,5.43l4.96,2.87l4.74,3.2l4.21,1.89l5.08,1.52l4.84,1.3l11.63,2.21l2.93,1.28l-2.33,1.72l-3.99,1.16l-2.5,1.21l-0.03,0.71l5.75,3.29l1.5,2.75l1.14,3.06l0.54,2.64l2.79,2.02l3.65,0.23l4.96,-2.08l1.65,2.27l1.02,2.39l1.8,2.92l2.7,1.67l5.12,-2.08l2.56,-0.1l2.6,0.69l3.89,0.06l2.14,-1.04l2.62,1.01l2.19,2.6l2.79,1.99l-0.1,2.14l-0.87,3.5l1.11,3.26l3.36,2.46l3.61,1.59l2.57,0.47l2.64,0.04l4.21,-1.33l1.46,3.97l3.16,0.53l1.98,1.29l2.87,3.23l1.87,4.7l0.5,2.13l-0.89,2.1l0.28,0.55l2.8,0.7l-6.38,4.7l-1.52,2.37l-2.65,1.72l-3.41,1.42l-3.01,2.25l-6.7,8.61l-4.84,8.12l-7.7,10.74l-1.72,3.24l-2.1,6.67l0.26,2.57l1.69,2.1l2.87,0.45l5.93,3.35l1.47,3.36l1.71,2.35l4.09,2.37l2.23,2.01l3.34,1.36l4.98,3.64l0.16,1.44l-4.95,2.73l-0.51,2.15l1.2,2.7l0.03,2.32l-0.83,2.43l0.86,3.15l-1.56,2.01l-0.87,2.15l1.35,4.97l2.01,3.56l-1.25,2.83l-0.42,3.04l1.6,2.72l1.87,2.08l2.23,1.38l-0.42,3.19l-2.13,4.18l-3.47,1.36l-4.85,0.33l-4.58,1.03l-7.94,0.67l-3.29,1.42l-2.88,2.29l-3.51,1.94l-3.47,0.53l-4.89,0.08l-1.82,2.4l-1.07,3.29l-7.53,8.26l-1.18,1.77l-0.65,3.1l-1.25,2.98l-0.39,3.16l1.33,1.68l3.21,1.39l1.53,1.46l-0.2,2.53l-8.68,4.11l-6.11,5.64l-8.5,3.11l-5.7,3.17l-9.17,2.95l-3.41,2.08l-6.11,5.01l-4.25,2.4l-4.55,1.48l-4.4,2.44l-3.83,3.89l-5.66,2.93l-5.74,1.21l-3.66,1.51l-4.39,2.88l-13.9,7.43l-8.1,3.23l-0.25,0.47l1.7,6.45l-0.71,2.48l-4.63,0.35l-5.86,-1.79l-3.95,-2.48l-3.83,-3.65l-8.74,-6.9l-3.74,-2.43l-5.06,-0.15l-7.55,-4.34l-16.61,-7.31l-1.52,-0.29l-2.57,-6.06Z", "name": "Kasserine"}, "tn-mh": {"path": "M586.17,630.73l0.75,-10.67l1.22,-5.15l0.45,-5.91l-5.77,-5.63l-0.9,-4.02l0.66,-3.86l1.7,-3.36l0.77,-2.77l-0.39,-2.15l0.8,-2.97l0.09,-2.12l1.72,-1.47l4.35,-2.28l1.37,-1.3l0.67,-1.71l0.4,-3.91l1.72,-1.86l4.44,-2.98l1.89,-2.46l-0.35,-2.41l-1.71,-2.89l-2.3,-2.81l-1.77,-3.06l-1.05,-3.28l3.85,-2.41l1.35,-1.6l2.19,-1.71l1.72,-0.83l6.11,-0.99l3.68,-1.4l0.87,0.09l-3.63,3.61l-0.65,2.6l0.98,4.07l1.62,2.87l1.9,2.23l2.21,1.71l1.19,2.45l1.37,1.41l1.8,1.12l1.06,1.27l0.5,1.92l1.39,2.0l2.14,0.11l0.39,-0.42l-0.09,-1.97l0.83,-1.13l1.43,-0.72l1.68,0.96l2.54,0.3l1.73,-0.71l1.2,0.69l2.1,2.41l1.85,1.06l2.8,-0.09l0.8,3.38l1.69,2.93l1.16,1.52l2.02,1.0l2.68,4.21l2.18,2.06l4.23,1.09l5.08,2.05l3.22,0.24l0.38,-0.21l2.96,-5.47l0.4,-2.24l1.19,-1.73l3.22,-1.76l3.74,-3.19l0.85,-3.38l-0.39,-3.79l9.79,-0.39l2.29,0.68l5.59,0.86l2.91,-0.16l4.1,-0.82l1.94,0.35l0.8,3.04l2.71,4.57l3.29,3.25l5.03,1.4l2.68,0.41l5.96,-0.69l1.85,-1.65l0.07,-4.86l2.83,-2.61l5.32,-5.73l7.26,-4.48l5.34,-4.15l3.54,-2.15l0.34,0.0l0.0,0.47l1.51,1.53l0.77,0.04l-0.06,0.92l0.95,0.93l1.55,-1.28l1.04,0.38l1.04,-0.08l2.53,-1.28l1.46,0.23l1.01,-1.08l-0.18,-1.51l0.56,-0.48l0.64,0.34l0.52,-0.55l-1.32,-3.02l10.23,-1.61l-0.37,3.51l0.31,4.99l0.43,2.34l1.78,4.3l2.8,3.19l2.58,1.51l1.04,0.15l2.61,-1.28l-0.37,0.63l-1.57,0.45l-0.73,0.97l-0.83,0.41l-0.06,0.51l-0.71,-0.08l-0.52,0.63l-0.37,1.78l-1.78,4.79l-0.18,1.83l-1.6,5.57l-0.61,7.32l0.49,2.71l0.74,2.11l0.49,0.59l0.34,1.56l-0.8,-0.21l-0.67,0.89l-0.44,-0.13l-0.74,0.45l-1.01,1.68l-0.18,6.63l1.11,6.03l0.68,2.18l2.95,4.74l5.53,6.48l4.12,3.98l0.68,1.14l1.75,1.3l1.38,0.6l0.12,0.43l2.98,2.81l2.79,1.81l1.09,1.05l2.08,0.3l1.07,0.9l-0.41,0.7l-0.68,0.4l-0.06,0.91l-0.66,0.42l-0.66,-0.75l-0.74,-0.3l-0.89,0.64l-0.46,-0.51l0.09,-0.63l-0.46,-0.4l-1.78,0.68l-0.57,0.68l-1.28,0.07l-0.65,0.55l0.0,1.14l-2.27,1.65l0.31,0.99l-0.55,0.96l0.0,1.13l0.49,1.37l-0.25,0.41l-0.71,0.0l-1.51,1.15l-0.37,0.75l0.06,0.98l-0.89,0.27l-0.89,0.93l-0.74,2.12l-0.8,1.04l0.0,0.53l1.46,1.3l-1.04,0.25l-2.23,-0.38l-1.34,0.38l-0.94,-0.38l-2.34,1.81l-0.52,0.62l0.18,0.44l-1.66,2.34l-3.56,6.54l-0.98,2.95l-11.73,-0.63l-4.44,-2.15l-3.76,1.3l-1.47,-0.59l-0.96,-5.95l-0.89,-2.94l0.58,-4.07l-2.13,-5.96l-1.39,-2.27l-2.0,-1.87l-2.12,-0.6l-0.44,0.16l-1.44,2.06l-0.83,2.55l-1.27,2.2l-5.96,2.67l-1.77,1.17l-0.87,-0.84l-0.47,-2.9l-0.87,-2.56l-1.88,-3.35l-3.42,-3.53l-2.01,-3.47l1.28,-11.44l-1.13,-2.64l-1.89,-1.93l-2.3,-1.25l-2.37,-0.45l-3.79,2.22l-3.26,2.61l-8.91,5.84l-4.06,0.34l-2.72,-0.71l-10.5,-4.45l-2.36,-1.32l-3.39,-0.35l-0.43,0.45l0.53,3.92l-3.3,4.94l-2.41,2.1l-0.41,1.48l3.93,4.31l1.4,2.63l-2.11,1.2l-4.24,1.16l-8.29,6.52l-4.82,5.15l-6.1,5.27l-4.35,4.45l-3.41,1.87l-3.61,-1.64l-5.48,-3.19l-2.39,-2.45l-3.5,-2.11l-2.46,-2.2l-5.68,-1.21l-11.68,1.1l-3.53,-1.5l-3.53,-2.05l-4.16,-1.13l-0.91,-2.69l-0.46,-2.91l0.39,-5.45l0.77,-2.11l0.49,-2.71l-1.35,-1.91l-6.1,-3.84l-1.82,-2.26l-0.31,-2.86Z", "name": "Mahdia"}, "tn-mn": {"path": "M454.12,207.27l-0.63,-0.35l-0.2,-1.02l0.49,-3.18l-1.58,-1.43l-2.81,-3.48l-0.57,-1.25l4.78,-6.4l0.92,-0.91l2.29,-1.03l2.57,0.0l1.67,0.22l0.82,1.96l0.76,0.75l0.59,-0.03l5.8,-6.61l3.43,-0.38l2.89,-0.87l3.46,-3.14l1.96,0.01l2.98,1.29l3.34,-0.53l2.2,-1.28l1.95,-2.02l1.46,-4.62l1.16,-2.27l3.59,-3.82l0.69,-4.31l1.51,-1.44l5.29,3.54l10.51,-0.16l2.93,0.77l3.24,0.28l4.43,1.67l1.49,1.13l2.13,3.92l0.8,2.53l1.58,1.64l2.28,0.12l2.35,-1.16l3.03,-0.6l1.5,2.42l0.01,1.62l-0.26,1.08l-1.25,1.6l-0.89,4.07l-1.97,2.37l-1.37,0.86l-2.08,0.4l-0.46,2.48l-1.65,0.9l-0.25,0.85l0.25,0.44l0.86,0.41l4.43,0.52l1.78,0.8l0.93,-0.02l0.71,-1.04l-0.28,-2.59l0.88,-0.9l2.32,0.34l1.78,-0.89l2.45,-0.23l1.14,-0.6l3.91,-3.52l3.53,8.51l2.5,4.39l3.71,3.4l1.92,0.9l0.58,1.28l1.1,0.82l0.2,1.35l-2.75,-0.28l-3.21,0.58l-2.53,1.32l-0.42,1.35l0.93,1.21l-0.06,0.63l-0.64,0.55l-2.36,0.13l-3.68,-4.12l-1.87,-0.4l-0.97,-0.94l-3.08,0.41l-1.64,1.03l-0.76,2.03l0.15,0.45l3.24,2.58l2.82,9.05l2.55,1.44l2.1,0.5l1.15,1.7l0.92,4.03l-0.34,1.83l-1.81,2.33l-0.82,2.05l-6.4,6.98l-2.33,1.22l-2.29,1.75l-1.52,1.75l-1.84,-2.02l-4.83,-2.52l-3.16,0.63l-2.04,1.95l-1.68,3.28l-1.67,3.83l-0.84,4.21l-1.77,5.07l-3.48,4.58l-2.49,1.14l-3.8,-0.25l-0.57,-1.94l-1.5,-2.74l-4.89,-6.08l-3.13,-6.64l-2.72,-1.98l-2.75,-3.74l-2.36,-4.65l-1.61,-6.71l0.93,-6.99l-0.46,-1.21l-1.5,-0.22l-1.92,0.72l-2.27,2.07l-3.05,-0.16l-1.36,-1.51l-11.68,-8.27l-4.45,-0.68l-2.24,-0.75l-4.18,-2.2l-1.44,-1.88l-1.01,-2.13l-0.39,-2.27l-0.8,-1.63l-0.47,-0.2l-1.22,0.35l-1.34,0.76Z", "name": "Manubah"}, "tn-kr": {"path": "M546.49,689.98l-0.53,-13.26l-1.0,-5.96l-1.5,-5.45l-0.39,-4.56l0.11,-5.45l-0.26,-0.38l-1.94,-0.54l-3.96,3.1l-3.6,0.96l-2.96,1.76l-4.16,1.8l-10.19,-5.67l-3.3,-2.55l-2.33,-0.82l-5.04,0.29l-5.63,-0.7l-4.39,-1.74l-4.96,0.83l-4.65,-1.15l-5.13,-3.38l-4.57,-2.37l0.78,-3.89l-1.88,-3.13l-3.33,-3.39l-2.48,-3.05l-2.3,-3.99l-3.02,-4.15l-3.81,-2.93l-2.99,-0.95l-3.59,3.1l-2.68,1.28l-2.6,2.01l-1.35,-2.51l-0.65,-2.38l-4.03,-7.04l-10.98,-6.17l-2.76,-2.22l-1.75,-2.84l-0.5,-3.15l3.88,-4.6l2.83,-2.72l2.67,-3.94l-0.03,-2.03l-1.66,-5.79l-0.87,-9.05l-4.05,-2.58l-5.06,-2.65l-1.88,-2.18l-1.53,-4.47l-1.26,-10.12l-3.77,-4.11l-5.17,-9.77l-3.4,-1.09l-2.85,-2.8l-2.76,-3.96l-3.24,-1.79l-3.5,-2.43l-6.15,-6.32l-1.99,-2.77l-1.24,-2.52l-0.52,-3.43l3.27,-4.51l2.53,-0.39l9.15,5.01l3.57,1.24l6.34,-0.43l2.94,1.58l0.45,-0.05l3.2,-2.78l5.19,-1.63l4.51,-1.84l2.55,-2.24l3.15,-1.41l4.88,-0.09l3.76,-0.64l2.29,-1.9l1.88,-2.01l-0.21,-0.66l-4.77,-0.97l-3.6,-3.37l-2.21,-2.68l-1.37,-2.79l-0.33,-2.82l4.43,-5.17l2.04,-2.95l-1.23,-3.85l1.28,-2.43l0.66,-3.59l-5.75,-9.59l-0.02,-2.05l7.39,-4.0l12.33,-10.51l5.61,-6.51l4.76,-6.92l4.2,-0.82l8.19,-8.62l3.91,-3.12l3.99,-4.0l2.57,-2.02l9.71,3.41l1.3,0.0l3.2,-3.82l2.03,-1.37l4.23,-1.88l8.61,2.84l2.58,4.96l2.18,2.37l3.27,1.65l7.4,-1.13l2.21,0.75l2.78,-0.49l1.67,0.63l2.48,1.64l2.16,0.5l1.08,2.73l1.95,2.26l2.36,1.63l3.33,0.9l2.89,-1.18l1.71,-2.68l0.96,-3.18l-0.19,-4.98l1.67,-3.49l-2.16,-4.37l0.27,-1.73l1.66,-1.09l1.23,1.79l2.34,2.48l2.3,0.88l3.7,-0.6l3.03,-1.88l2.77,-2.62l0.54,-3.12l1.59,-3.35l0.08,-3.03l-1.67,-2.19l0.95,-2.55l2.35,0.47l3.34,-0.36l3.25,0.61l4.63,-1.36l1.8,0.18l-2.37,3.08l-0.47,2.62l0.62,5.32l-0.17,2.43l-2.56,5.26l-0.08,2.53l0.37,0.41l9.49,0.88l1.72,1.26l1.92,4.9l2.24,8.41l0.24,5.92l-4.39,10.97l-3.03,4.98l-1.39,3.6l-0.84,3.33l-1.5,3.55l-3.59,5.96l-1.25,3.58l-2.63,2.58l-2.92,4.48l-0.64,2.81l1.97,3.03l6.03,7.76l1.09,2.36l1.29,4.63l5.97,5.01l4.58,13.86l1.8,2.73l2.61,5.21l2.05,7.02l3.68,3.65l-0.05,2.36l2.55,5.98l0.73,0.94l-2.81,1.08l-6.28,1.04l-1.88,0.91l-2.26,1.76l-1.32,1.58l-4.01,2.47l-0.21,0.48l1.2,3.73l1.81,3.12l2.33,2.87l1.62,2.76l0.33,1.72l-1.65,2.17l-4.42,2.97l-1.91,2.05l-0.51,4.21l-0.5,1.33l-1.19,1.13l-4.4,2.32l-1.89,1.62l-0.22,2.45l-0.81,3.01l0.39,2.14l-0.74,2.64l-1.69,3.33l-0.71,4.09l1.03,4.54l2.02,2.21l3.6,3.11l-0.43,5.63l-1.23,5.21l-0.75,10.67l0.33,3.14l2.03,2.62l6.16,3.89l1.11,1.6l-1.29,4.38l-0.4,5.6l0.47,3.06l0.81,2.22l-0.96,-0.18l-2.99,2.03l-5.64,0.3l-4.84,2.8l-5.31,6.6l-6.68,5.67l-4.77,4.93l-3.66,4.96l-4.84,7.93l-5.34,-0.64l-3.08,-1.58Z", "name": "Kairouan"}, "tn-an": {"path": "M531.89,193.29l1.75,-1.16l0.35,-2.34l1.74,-0.19l1.57,-0.95l2.23,-2.64l0.72,-2.24l0.23,-1.95l1.2,-1.48l0.35,-1.39l-0.05,-1.96l-1.4,-2.41l1.88,-0.84l1.78,-1.5l0.91,-1.28l0.0,-0.46l-1.5,-2.16l3.2,-8.28l0.31,-3.67l2.84,-1.97l3.52,-3.07l3.94,-7.14l2.12,-4.94l-0.13,-6.28l0.27,-2.69l-1.75,-4.05l0.68,-1.33l2.24,0.59l1.78,-1.55l2.44,-2.8l5.14,-2.46l2.35,0.24l2.08,0.7l3.36,-0.04l0.87,0.73l3.19,1.16l0.74,0.62l2.49,-0.08l0.18,0.83l2.74,2.56l4.64,-0.15l-0.48,0.97l-0.97,-0.15l-0.58,0.48l-0.31,0.69l0.46,0.48l0.52,-0.14l-2.46,2.13l-2.83,3.7l-0.43,1.79l-0.68,0.52l0.37,0.48l-0.12,1.0l-1.17,0.99l-0.37,0.77l-0.31,1.08l0.12,1.08l0.74,1.06l-0.25,1.02l0.72,1.19l0.14,1.36l0.61,0.39l0.18,1.31l0.8,0.52l0.74,1.62l-0.06,0.48l0.78,0.73l0.88,3.49l-0.55,1.48l2.09,4.23l3.69,5.08l2.81,2.4l0.01,0.64l1.42,2.23l2.27,2.29l0.64,1.24l2.19,1.07l3.08,3.07l0.21,2.32l1.42,1.44l0.0,1.06l-1.38,1.04l-1.71,4.28l0.96,2.24l1.44,1.13l-1.08,1.52l-7.06,-0.66l-2.77,0.14l-0.44,-0.3l-0.05,-2.15l-0.41,-0.43l-0.82,-0.03l-2.78,1.9l-1.35,1.84l-0.02,1.7l-4.38,-0.25l-3.04,0.53l-0.83,0.91l-0.65,0.07l-1.15,-0.13l-3.75,-2.77l-1.8,-0.67l-3.82,0.61l-1.29,1.14l-1.52,3.61l-1.5,1.91l-2.93,2.63l-1.67,-0.76l-3.54,-3.22l-2.43,-4.25l-1.98,-5.16l-1.67,-3.63l-0.38,-0.23l-1.01,0.26l-3.61,3.44l-1.0,0.51l-2.31,0.18l-1.67,0.87l-1.91,-0.37l-0.78,0.16l-1.2,1.36l0.29,1.87l-0.2,1.2l-2.29,-0.81l-2.14,-0.08l-2.72,-0.69ZM591.95,118.06l0.0,-0.57l0.92,-2.45l0.98,-0.6l-1.42,1.99l0.18,2.99l0.8,2.4l-0.92,-1.76l-0.55,-2.0Z", "name": "Ariana"}, "tn-gb": {"path": "M439.92,1103.68l1.26,-1.88l2.85,-1.8l1.03,-1.87l-0.23,-9.71l3.82,-4.8l4.74,-4.34l-0.07,-0.63l-5.16,-2.85l-2.83,-1.03l-2.25,-3.44l-1.7,-3.93l-2.21,-1.86l-2.78,-0.13l-3.7,0.3l-3.64,0.87l-2.76,-1.81l-0.92,-8.13l-1.97,-2.35l-2.08,-1.69l-1.76,-2.18l-3.77,-0.81l-3.2,0.01l-1.9,1.14l-2.59,-2.36l-4.26,-1.23l-1.16,-1.59l-2.08,-6.74l-0.47,-6.34l-2.6,-5.65l-4.13,-8.34l-3.38,-2.99l-2.75,-5.57l-3.84,-5.7l-1.78,-3.57l-1.35,-7.93l-0.1,-4.75l0.25,-5.57l0.82,-3.55l1.05,-14.03l-0.88,-5.31l0.48,-3.14l1.45,-2.42l2.32,-2.52l3.84,-2.59l2.98,-2.88l3.06,-1.8l4.05,-5.19l1.64,-2.89l-0.9,-2.26l-1.89,-2.36l-2.88,-2.34l-7.77,-8.26l-2.95,-2.4l-2.6,-3.49l5.44,-3.97l4.7,-1.46l4.26,-2.16l6.33,-0.81l19.05,3.68l7.17,-0.66l10.95,-4.18l5.06,-2.43l4.61,-4.14l2.37,-5.04l1.38,-4.09l15.11,-3.58l3.68,1.45l2.82,1.87l3.36,1.03l3.5,10.13l2.26,2.07l3.99,1.86l4.27,3.14l5.65,1.33l3.23,-0.65l2.79,-2.53l2.64,-1.02l7.39,3.47l1.64,2.1l1.05,3.88l1.75,2.81l2.15,1.35l2.5,3.79l3.2,2.03l3.32,0.98l5.0,-0.76l2.09,-1.58l1.45,-1.59l0.75,-1.74l-1.33,-2.29l-0.53,-2.17l1.15,-0.97l2.43,0.67l1.81,1.75l0.79,2.8l2.6,0.92l4.69,3.14l-0.16,1.26l-0.6,0.38l-0.49,1.11l0.68,1.11l1.29,1.1l0.0,1.65l0.37,1.25l-0.12,2.7l-0.49,1.47l0.06,1.79l-0.31,0.8l0.44,1.17l-0.31,0.46l0.65,0.64l-0.46,0.77l0.92,2.07l-0.49,0.98l0.18,2.57l-0.31,0.32l-0.06,1.04l1.11,3.03l0.06,2.91l0.37,0.73l0.61,6.02l0.37,0.58l1.84,7.58l0.38,0.53l-0.14,0.28l0.68,1.17l0.12,1.49l4.86,11.12l3.07,5.93l1.81,1.14l1.26,0.15l-0.86,0.79l0.25,0.81l0.65,0.55l1.08,-0.3l0.56,0.08l-1.43,1.15l-0.31,0.59l2.4,3.54l0.41,0.94l-0.16,0.48l0.52,0.47l1.0,-0.6l-0.42,0.72l1.54,2.81l13.64,15.48l3.53,3.34l11.04,7.76l1.35,1.51l-0.43,0.9l0.58,0.62l0.91,-0.59l2.75,2.22l2.45,3.13l-0.43,1.42l0.49,0.67l0.4,0.4l0.7,-0.36l1.06,0.87l8.63,9.01l4.98,3.18l0.49,0.0l1.17,1.03l3.61,2.07l0.75,0.81l0.87,0.23l0.42,0.58l0.58,-0.3l1.08,1.11l1.01,-0.37l1.57,1.62l0.49,0.0l0.58,-0.59l1.23,0.15l0.83,1.18l1.72,0.44l0.9,-0.22l0.64,1.11l1.11,-0.14l0.42,0.44l0.86,0.0l0.44,-0.68l0.81,0.45l-2.85,2.26l-5.16,2.51l-2.36,3.22l-2.18,4.63l-2.95,3.61l-2.23,3.36l-3.98,6.99l-0.92,4.36l-4.72,6.71l-1.6,3.07l-2.35,3.46l-5.3,5.68l-1.15,4.13l-1.12,2.55l-3.85,3.37l-4.66,0.01l-4.66,-0.85l-4.28,-0.02l-4.1,1.7l-7.32,4.23l-0.38,3.03l-2.05,3.64l-3.35,1.75l-3.5,0.66l-2.29,1.86l0.32,3.21l-0.15,3.69l-4.36,2.78l-3.23,2.69l-3.64,1.57l-5.98,0.98l-2.31,2.6l-2.85,-0.66l-2.76,-1.77l-2.16,-0.11l-2.71,2.88l-2.51,1.75l-3.52,1.02l-4.19,-0.07l-3.11,-1.14l-4.56,1.11l-3.94,0.46l-2.29,-1.18l-6.54,0.74l-6.35,2.57l-3.53,0.37l-4.78,-0.69l-4.72,-1.59l-3.36,-1.76l-2.64,-0.09l-6.92,-6.45l-3.44,-6.89l-5.21,-6.95l-4.03,-12.22l-3.3,-2.88l-3.11,-1.72l-8.1,-5.54l-1.41,-3.37l-5.83,-6.83Z", "name": "Gabes"}, "tn-sf": {"path": "M835.67,770.84l0.43,-1.82l1.5,-0.85l3.26,-0.38l0.46,-0.3l1.64,0.62l-2.53,-0.08l-2.03,0.9l-2.12,2.05l-0.55,0.12l-0.06,-0.26ZM836.23,750.94l-1.01,-1.33l0.27,-0.52l1.22,0.22l0.47,0.75l1.97,1.65l0.54,-0.08l0.68,0.15l0.52,0.22l-1.94,-0.05l-0.41,-0.37l-1.57,0.07l-0.73,-0.71ZM795.73,789.68l-0.52,-0.57l1.35,-0.38l0.4,-0.4l0.68,-0.97l0.49,-1.64l-0.74,-1.84l2.18,-0.52l0.74,-0.52l0.95,-1.07l1.54,-2.84l-0.06,-1.1l2.67,-0.75l1.26,-1.3l-1.35,-1.45l0.18,-0.72l-0.23,-0.42l1.8,0.15l0.83,-0.85l0.0,-0.6l-0.73,-1.77l-0.63,-0.68l-0.18,-1.43l-0.31,-0.35l1.25,-0.3l-0.45,0.65l0.0,0.67l1.04,1.03l0.06,0.61l1.51,1.3l0.58,0.04l0.4,0.55l0.55,0.0l0.8,0.75l0.69,-0.22l1.65,0.22l0.87,-0.45l0.79,0.67l1.17,0.37l0.74,0.0l0.65,-0.55l0.06,-0.75l-0.92,-1.73l0.52,0.04l0.52,-0.55l-0.37,-2.67l1.29,-1.07l0.0,-0.52l-0.89,-1.15l-0.44,0.0l-1.5,-1.31l-0.8,-2.31l2.37,0.75l0.68,-0.82l0.83,-0.22l0.12,0.8l0.52,0.4l0.71,-0.77l-0.06,-0.45l-0.58,-0.55l-0.73,-0.45l-0.16,-0.19l0.83,0.17l1.06,-0.54l1.03,0.31l0.46,-0.47l-0.18,-1.87l-0.86,-1.86l1.07,0.09l0.58,-0.62l-0.12,-1.57l-1.29,-1.19l-0.06,-1.4l0.71,-0.22l0.58,-0.7l-0.37,-0.72l0.89,0.37l0.58,-0.52l-0.25,0.72l1.72,1.18l0.37,1.74l0.74,0.88l0.0,0.76l1.01,1.22l1.23,0.75l0.55,0.0l0.4,-0.4l0.31,-0.9l-0.74,-1.27l-1.17,-0.7l0.17,-0.99l3.18,1.65l1.69,0.22l1.56,1.42l2.35,1.32l-0.35,0.35l-0.52,-0.6l-0.48,0.15l-1.55,-1.5l-0.61,-0.23l-1.85,0.23l-0.48,0.51l-0.37,-0.07l-0.71,1.07l1.27,1.4l-1.27,1.0l-0.06,0.75l0.68,1.5l1.36,1.53l-0.5,0.5l-1.84,-0.03l-0.31,-0.95l-0.89,-0.77l-0.43,0.0l-1.26,1.22l0.0,0.45l0.58,0.63l0.71,0.07l-0.37,1.55l0.18,0.9l4.95,3.93l-0.09,0.71l1.11,1.26l0.31,1.69l-0.19,0.41l-0.82,0.13l-0.65,0.86l-1.5,-0.64l-1.66,0.15l-1.08,1.27l-1.26,0.97l-0.61,0.0l-0.75,0.82l-0.77,0.07l-0.57,-0.52l-0.37,0.0l-0.46,0.6l-0.71,-0.23l-0.58,0.7l0.08,1.44l-0.76,0.78l-6.54,1.12l-2.12,1.3l-1.07,-0.33l-2.53,1.5l-0.54,-0.3l-1.08,0.92l-0.43,0.87l-1.38,0.45l-1.75,1.64l-0.77,0.0l-1.17,0.75l-1.54,1.42l-2.02,0.97l-0.68,0.75l-0.79,0.15l-1.36,1.35l-0.52,-0.04l-0.49,-1.57l0.43,-1.64ZM832.68,763.52l0.84,0.12l-0.18,0.9l0.31,0.51l-1.15,-0.99l0.19,-0.55ZM817.55,757.97l0.28,0.24l0.16,0.0l0.36,0.22l0.0,0.05l-0.45,-0.18l-0.35,-0.34ZM816.07,756.53l0.92,0.26l0.06,0.64l-0.94,-0.69l-0.04,-0.2ZM821.48,754.81l-0.06,-0.06l0.0,-0.0l0.06,0.06l0.0,0.0ZM821.36,754.6l0.0,-0.01l0.06,0.07l-0.06,-0.06ZM761.0,795.39l0.03,-0.1l0.32,0.32l-0.06,0.0l-0.29,-0.22ZM761.52,795.67l1.64,-1.3l1.6,-2.36l2.31,-0.94l1.71,0.79l2.46,0.0l2.1,-0.45l1.52,0.3l0.91,-0.6l1.07,0.23l1.77,1.12l0.8,-0.22l1.2,-1.0l0.4,0.4l0.61,-0.35l3.33,0.5l1.54,-0.3l0.67,-0.52l1.05,1.57l4.91,0.07l1.39,1.23l-0.22,0.58l-3.07,0.67l-4.13,3.36l-1.03,0.0l-1.01,1.45l-4.47,4.23l-1.78,-0.07l-1.19,1.59l0.54,0.94l-4.26,-4.26l-3.85,-1.12l-3.82,-2.32l-2.84,-2.61l-1.85,-0.62ZM543.99,918.65l-0.63,-2.61l-1.97,-1.91l-3.27,-0.77l-1.62,1.67l0.61,2.48l1.27,1.92l-0.56,1.36l-1.33,1.47l-1.79,1.42l-4.8,0.73l-3.01,-0.93l-2.99,-1.91l-2.39,-3.68l-2.15,-1.34l-1.62,-2.57l-1.13,-4.04l-1.89,-2.35l-7.94,-3.59l-2.96,1.16l-2.63,2.44l-3.02,0.61l-5.17,-1.22l-4.24,-3.11l-4.03,-1.89l-2.04,-1.89l-2.59,-7.32l6.88,3.3l4.12,-0.57l1.4,-3.09l-1.07,-2.48l-1.68,-1.84l-1.21,-2.92l-0.49,-2.8l-1.0,-2.62l1.43,-2.29l2.49,-1.82l4.35,-1.99l4.04,-1.28l6.72,0.6l7.91,-3.22l2.65,-3.02l2.8,-4.04l3.34,-5.93l0.64,-1.92l2.54,-3.55l1.61,-3.36l2.51,-1.48l1.85,1.06l4.06,0.57l1.64,-1.71l1.25,-2.02l4.2,-3.84l4.04,-1.55l5.23,-0.7l2.96,-1.38l1.76,-4.16l1.83,-2.2l1.36,-2.94l0.87,-6.74l-0.21,-0.42l-3.51,-1.84l-7.15,-4.59l-5.5,-2.64l-3.76,-4.38l-3.69,-1.99l-1.69,0.09l-6.37,2.34l-3.19,-0.16l-4.37,1.67l-6.04,0.36l-1.9,-4.21l-4.03,-5.76l-0.59,-3.21l2.14,-3.36l2.21,-4.34l1.51,-1.95l10.37,-17.43l1.69,-4.73l2.93,-6.58l6.36,-12.87l3.51,-3.35l-0.2,-2.75l2.81,-4.44l3.25,-3.18l2.64,-3.43l1.71,-4.35l2.47,-2.92l0.08,-3.43l2.31,-4.91l2.58,-8.2l1.26,-5.29l-1.18,-3.07l-2.22,-2.13l0.46,-1.49l4.57,-7.18l3.6,-4.88l4.72,-4.87l6.7,-5.69l5.3,-6.58l4.59,-2.64l5.47,-0.25l3.12,-2.04l5.46,1.59l3.46,2.02l3.81,1.58l11.73,-1.1l5.41,1.17l2.29,2.1l3.41,2.04l2.51,2.54l5.54,3.23l4.18,1.72l3.73,-2.06l4.36,-4.46l6.14,-5.3l4.77,-5.11l8.2,-6.44l4.07,-1.09l2.58,-1.46l0.15,-0.54l-1.61,-3.03l-3.78,-3.92l0.2,-0.93l2.4,-2.1l3.44,-5.15l-0.43,-3.83l2.64,0.25l9.65,4.54l6.25,1.99l4.44,-0.43l8.99,-5.89l3.24,-2.59l3.63,-2.13l1.77,0.41l2.2,1.19l1.7,1.76l0.98,2.34l-1.26,11.52l2.17,3.71l3.36,3.45l1.83,3.28l0.8,2.36l0.49,3.0l1.31,1.38l0.5,0.05l1.96,-1.3l6.08,-2.74l1.5,-2.5l0.81,-2.5l1.24,-1.78l1.75,0.49l1.72,1.66l1.28,2.11l2.04,5.74l-0.59,4.05l0.9,2.96l1.22,6.43l2.13,0.74l3.44,-1.31l4.48,2.14l11.7,0.63l-0.32,3.54l0.55,2.33l0.86,1.56l-0.55,0.54l0.12,1.67l-1.04,3.14l0.06,0.98l0.49,0.81l-0.0,1.8l-0.98,0.84l-0.12,0.84l-0.86,1.11l-0.26,1.09l-1.46,2.06l-0.07,1.93l-2.23,0.97l-2.55,2.24l-0.71,-0.36l-0.4,0.67l-1.01,-0.15l-0.87,0.82l-0.6,0.08l-1.84,1.2l-2.8,2.93l-2.1,1.59l-1.77,2.11l-0.18,0.69l-0.74,0.44l0.12,0.61l-0.68,1.11l0.21,0.36l-0.76,3.39l0.49,5.08l-0.49,3.24l0.8,3.36l-0.55,1.21l-0.18,2.4l0.22,0.64l-1.51,2.73l-2.34,3.02l-1.84,1.63l0.0,0.45l-1.97,2.02l-0.86,1.95l0.18,0.91l-0.25,0.97l-1.54,1.34l-1.29,1.94l-0.59,-0.55l-0.52,0.55l0.29,1.84l-0.23,1.08l1.62,2.61l-0.14,1.06l-1.57,0.34l-0.7,0.52l-2.92,0.22l-2.13,1.42l-2.05,0.9l-1.57,1.3l-1.63,2.97l-2.08,0.15l-0.71,0.7l-0.37,0.99l-0.83,0.26l-1.11,1.35l-2.21,0.67l-0.95,1.22l-0.12,0.65l-1.47,0.92l-0.8,1.42l0.25,1.42l1.99,1.47l-0.14,0.39l-1.27,-1.16l-1.38,1.24l-0.06,0.37l0.4,0.4l0.85,-0.46l1.07,1.16l-0.39,0.0l-0.52,0.77l-0.58,-0.85l-0.92,-0.15l-0.46,0.47l-0.12,0.37l0.68,0.44l0.31,1.56l-0.86,-0.06l-0.37,-1.56l-0.8,-0.47l0.0,-0.8l-0.83,-1.15l-1.32,0.7l0.0,0.42l-1.11,1.3l-0.37,1.19l-0.68,0.91l0.0,0.52l0.74,0.47l-0.31,0.87l1.33,0.87l-0.82,0.15l-0.67,-0.3l-0.65,0.7l0.12,2.39l0.37,0.4l0.0,1.17l0.43,0.52l-0.37,1.57l0.22,1.23l-2.74,3.33l-0.86,1.49l-1.57,-1.44l-0.54,0.0l-0.69,-0.67l-1.41,0.22l-2.06,1.15l-0.18,0.52l0.52,0.7l-0.67,0.76l-0.31,-0.07l-1.0,0.75l-0.6,-0.3l-1.05,0.07l-0.98,0.6l-0.52,0.9l-1.7,1.41l-0.55,0.2l-1.59,-0.58l-1.08,1.12l-1.48,0.92l-0.8,1.35l0.47,1.23l-0.16,0.35l-1.57,0.63l-0.95,0.92l-0.43,0.97l0.12,0.91l-2.4,3.66l-1.1,1.0l-0.59,-0.37l-1.2,1.22l-0.0,1.13l-0.74,0.81l-0.18,2.33l-0.37,0.73l0.06,1.04l0.37,0.5l-0.31,0.92l0.0,2.39l0.31,0.31l-1.75,2.42l-2.41,1.42l-6.58,2.91l-0.6,-0.97l-1.11,-0.07l-3.35,1.37l0.06,-0.53l-0.46,-0.47l-0.86,-0.15l-1.12,0.97l-3.0,-0.37l-1.2,0.77l-0.37,0.52l0.12,0.42l-0.52,-0.15l-1.3,0.82l-0.85,-0.37l-1.97,0.45l-0.43,0.45l-1.1,-0.07l-0.58,0.97l-1.63,0.37l-1.44,1.57l-2.24,1.42l-2.37,2.56l0.0,0.35l-0.98,0.7l-0.98,1.87l-3.44,3.8l-2.33,3.89l-2.15,2.15l-1.29,2.77l-1.17,0.96l-0.89,1.46l-2.12,0.37l-0.49,-0.22l-0.06,-1.24l-0.4,-0.4l-1.38,-0.45l-0.52,-0.52l-0.74,0.0l-0.58,0.47l-0.74,1.19l0.36,0.43l-1.16,0.91l0.49,0.88l-0.37,0.91l1.01,0.62l2.0,-1.45l-0.18,2.26l-0.47,0.85l-5.87,2.68l-0.87,-0.6l-1.32,0.03l-0.83,-1.07l-3.5,-1.56l-0.8,1.19l-0.55,-0.07l-0.52,0.55l0.52,0.57l-0.91,-0.22l-0.52,0.55l0.36,0.47l-0.3,0.44l0.58,0.61l0.51,0.0l-0.17,0.8l-0.18,0.36l-0.58,-0.55l-0.61,0.08l-0.95,1.0l-0.49,2.16l-1.12,1.61l-2.54,0.22l-2.22,0.89l-1.28,-0.22l-1.63,1.37l-1.22,1.68l-2.37,1.12l-0.65,0.92l-1.63,-1.97l-1.41,-0.74l-0.52,0.1l0.0,-0.52l-0.4,-0.4l-1.04,0.22l-0.58,0.62l0.18,0.91l-1.23,1.48l0.12,1.35l-1.35,2.87l-1.38,0.52l-0.4,0.46l-1.01,-0.54l-0.92,0.0l-0.77,0.55l0.18,1.97l-0.49,3.46l-3.23,-3.97l-2.07,0.28l-1.99,1.13l-2.12,2.56l0.06,0.39l-3.13,3.26l-0.74,1.26l-0.06,0.52l0.31,0.34l-0.71,-0.07l-1.44,1.96l-2.77,5.87l-2.4,7.3l-2.21,2.81l-1.66,3.51l-0.58,-0.41l-0.46,0.47l-0.12,5.47l-0.55,0.55l-0.31,2.17l-0.9,1.75l-0.54,-0.46l-1.54,-0.15l0.09,-2.02l-5.11,-3.43l-2.52,-0.9ZM711.21,783.49l0.89,0.3l0.06,0.96l-0.47,0.48l0.04,-0.95l-0.52,-0.8ZM612.54,873.73l0.31,-2.37l0.64,-0.15l0.99,-1.19l0.91,-0.45l0.34,1.39l0.92,0.82l0.18,0.73l0.25,1.44l-0.31,1.19l-0.57,0.26l-1.24,-0.37l-0.97,0.37l-1.09,-0.56l-0.37,-1.11ZM610.94,868.65l0.12,-0.52l0.18,0.01l0.12,0.4l-0.43,0.11Z", "name": "Sfax"}, "tn-sl": {"path": "M308.76,304.47l2.39,-1.55l14.04,-1.63l0.7,1.21l2.46,2.39l2.06,0.33l3.09,-0.25l1.87,0.27l1.8,1.33l1.65,4.35l3.75,2.61l0.96,1.6l-0.71,3.59l0.55,1.84l0.37,0.28l2.13,0.04l3.17,3.09l2.43,0.98l8.0,-2.63l5.67,-4.19l1.07,-0.48l5.65,0.76l4.8,0.04l3.51,0.44l2.66,0.74l2.34,1.04l2.25,3.14l2.55,2.36l2.74,1.42l3.62,-1.06l4.88,-2.66l2.46,-2.64l0.54,-2.87l-0.82,-2.99l0.09,-4.08l0.68,-3.01l2.27,-2.56l7.92,-2.86l6.49,-1.07l4.06,-0.26l2.8,0.37l4.39,-0.22l3.42,0.83l2.16,-1.1l3.95,-1.25l1.93,1.09l4.46,3.94l2.24,3.39l2.39,2.45l5.01,0.96l4.26,-0.63l3.25,0.13l2.58,1.75l3.31,-1.1l0.27,-0.39l-0.06,-1.85l0.86,-1.82l1.03,-1.2l9.27,1.1l3.97,-0.68l1.2,-1.85l0.63,1.97l0.35,3.63l-0.16,2.94l-1.86,13.24l-1.22,2.82l-0.51,2.39l-2.32,3.82l-1.33,3.37l-1.57,1.54l-4.7,2.82l-5.2,5.13l-2.41,0.81l-4.01,0.72l-5.39,-0.77l-2.28,0.99l-0.16,0.6l4.0,5.92l4.75,1.5l0.45,1.54l-0.04,4.84l0.91,2.83l0.43,0.27l1.72,-0.22l2.12,-1.44l1.55,-0.44l5.78,2.98l1.84,4.15l2.05,3.55l10.01,3.17l1.84,1.53l0.45,2.65l-1.06,4.01l-1.16,2.28l-0.76,2.87l-2.31,5.03l-1.46,2.11l-0.78,2.04l-0.87,3.22l0.34,0.51l-2.23,1.75l-3.96,3.97l-3.95,3.16l-8.13,8.55l-4.26,0.87l-4.82,7.01l-5.54,6.43l-12.27,10.46l-7.48,4.02l-0.23,0.37l0.07,2.59l5.69,9.32l-0.62,3.37l-1.32,2.75l1.26,3.46l-1.88,2.72l-4.53,5.3l0.26,3.36l1.51,3.1l2.29,2.77l3.7,3.46l4.37,0.95l-3.35,3.17l-3.56,0.61l-5.09,0.13l-3.28,1.47l-2.53,2.23l-4.4,1.79l-5.25,1.65l-3.19,2.74l-2.99,-1.55l-6.24,0.45l-3.36,-1.16l-9.52,-5.11l-3.09,0.6l-3.47,4.78l0.52,4.07l1.32,2.66l2.03,2.83l6.29,6.46l3.55,2.47l3.08,1.66l2.72,3.91l3.0,2.96l3.26,0.98l5.11,9.66l3.67,3.91l1.27,10.12l1.56,4.59l1.27,1.85l-3.08,1.51l-8.53,-1.75l-4.51,1.77l-8.61,0.88l-1.01,0.36l-2.23,-0.48l0.78,-2.02l-0.55,-2.35l-1.91,-4.8l-3.11,-3.51l-2.25,-1.42l-2.96,-0.49l-0.28,-1.64l-1.0,-2.23l-0.47,-0.22l-4.38,1.39l-2.53,-0.04l-2.43,-0.45l-3.36,-1.49l-3.23,-2.36l-0.88,-2.61l0.85,-3.43l0.12,-2.48l-3.02,-2.37l-2.39,-2.75l-2.89,-1.11l-2.35,1.05l-3.74,-0.05l-2.63,-0.7l-2.68,0.11l-4.8,2.07l-2.29,-1.37l-1.73,-2.81l-1.04,-2.42l-1.84,-2.54l-0.45,-0.15l-2.63,0.86l-2.63,1.31l-3.03,-0.19l-2.4,-1.62l-0.53,-2.57l-1.16,-3.12l-1.6,-2.93l-5.34,-3.12l1.73,-0.84l4.03,-1.17l2.84,-2.12l4.42,2.67l2.42,0.37l0.46,-0.36l0.28,-2.92l-0.65,-3.17l-0.05,-3.16l-3.6,-5.88l-1.3,-3.22l4.17,-6.25l0.69,-4.31l-0.5,-5.41l-1.22,-4.51l2.84,-2.55l0.78,-2.46l-0.33,-0.51l-2.66,-0.38l1.48,-5.4l3.32,-3.49l2.6,-1.46l3.53,-0.56l3.45,-2.39l1.11,-3.36l0.09,-3.13l-0.63,-6.02l0.92,-2.54l6.35,-6.08l3.85,-1.93l2.62,-2.56l0.37,-2.03l-1.33,-5.67l-0.78,-6.41l0.12,-4.48l0.71,-5.86l-0.32,-0.44l-7.77,-2.57l-1.15,-3.39l-0.44,-0.27l-4.67,0.52l-1.75,-3.8l-1.4,-1.59l-2.58,-0.72l-2.94,-0.06l-2.22,-8.76l-1.15,-2.75l3.15,-4.9l0.18,-2.76l-1.05,-3.38l0.56,-3.45l-2.04,-2.65l-6.11,-2.4l-2.06,-1.17l-1.4,-2.21l-1.01,-3.05l-1.13,-2.21l-4.27,-6.83l-1.64,-3.41l-0.04,-2.65l5.7,-6.14l0.98,-2.78l-0.5,-2.46l-1.75,-3.76l-0.84,-3.4l-5.58,-6.36l-2.18,-4.23l-1.77,-5.63Z", "name": "Siliana"}, "tn-ss": {"path": "M579.35,475.76l0.54,-2.45l2.85,-4.37l2.71,-2.7l1.23,-3.56l3.61,-6.0l1.52,-3.6l0.84,-3.35l1.36,-3.54l3.02,-4.96l2.46,-5.62l2.01,-5.65l-0.26,-6.13l-2.25,-8.48l-1.98,-5.08l-2.26,-1.65l-9.21,-0.85l0.03,-1.91l2.6,-5.38l0.18,-2.64l-0.61,-5.26l0.44,-2.38l1.14,-1.71l2.4,-2.42l1.84,-1.05l4.41,-0.9l1.66,-1.34l2.48,-7.38l1.15,-5.16l-0.04,-2.47l-0.95,-2.45l-0.3,-2.11l1.39,-2.02l4.0,-0.91l2.39,0.34l5.33,1.46l2.69,-0.83l5.32,-0.52l2.68,-2.0l1.95,-2.86l-0.03,-2.28l-0.97,-2.04l-1.47,-1.06l-2.64,-0.37l-0.44,-0.86l0.76,-1.0l1.65,-0.66l2.15,-0.17l1.21,-1.68l-0.01,-2.7l-0.68,-2.66l0.45,-2.64l-0.66,-2.79l-2.89,-5.16l-0.09,-3.34l1.18,-3.51l1.81,0.1l2.93,-0.92l5.25,-1.08l3.72,0.19l1.6,1.04l5.49,6.13l1.95,0.2l2.27,-1.86l0.63,-1.94l0.23,-2.24l1.05,-1.82l1.47,-1.3l1.41,0.38l9.71,11.45l-2.4,3.82l-1.9,3.89l-4.18,10.68l-3.81,12.73l-2.15,10.44l-0.86,7.23l-0.31,11.27l0.49,8.06l1.41,9.05l1.9,7.76l2.27,4.33l1.32,1.31l0.39,-0.27l1.49,0.12l0.86,0.53l0.71,0.99l0.56,-0.06l-0.04,2.47l0.37,2.28l0.48,0.4l-0.24,0.89l0.98,1.69l0.61,1.87l0.49,3.81l2.7,4.6l0.31,1.32l5.1,7.06l2.15,2.28l0.12,0.68l0.86,0.87l1.66,3.31l3.09,3.38l-0.32,0.33l0.06,1.21l0.74,3.11l3.07,3.7l0.8,2.67l1.23,2.12l3.38,3.02l0.46,1.02l1.24,0.75l-0.53,1.2l0.0,2.12l1.32,1.84l1.79,1.21l-2.65,2.95l0.55,3.04l-0.59,3.66l-1.29,2.2l-4.32,0.03l-0.39,0.49l1.2,3.46l-1.22,2.44l-0.66,5.74l0.13,4.84l1.66,3.31l-0.13,2.0l-5.45,5.74l-1.25,2.97l-0.3,2.85l-1.2,2.18l-2.5,1.29l-6.26,0.37l-3.34,1.03l-2.08,2.3l-0.29,3.35l1.29,2.62l1.46,2.06l-0.55,2.84l-1.71,2.19l-2.95,2.19l-2.64,1.59l-2.98,1.28l-1.21,1.89l0.11,2.3l0.88,2.9l1.28,2.36l1.92,1.86l2.15,0.49l2.04,1.41l2.5,0.4l0.42,-0.22l0.97,-1.98l0.49,-2.25l0.76,-1.64l1.41,-0.85l4.74,-1.02l5.06,3.64l0.6,4.39l-0.79,3.05l-3.48,2.87l-3.34,1.87l-1.3,1.88l-0.43,2.3l-2.8,5.18l-2.77,-0.19l-5.08,-2.05l-4.0,-0.98l-2.03,-1.9l-2.68,-4.23l-2.21,-1.17l-0.95,-1.3l-1.62,-2.82l-0.82,-3.54l-0.41,-0.31l-2.8,0.16l-1.68,-0.97l-1.99,-2.32l-1.53,-0.92l-1.97,0.7l-2.35,-0.28l-2.02,-0.98l-1.71,0.86l-1.11,1.44l-0.0,1.96l-1.18,0.04l-1.22,-1.76l-0.53,-1.96l-1.16,-1.39l-1.9,-1.21l-1.22,-1.27l-1.25,-2.51l-2.19,-1.69l-1.85,-2.17l-1.48,-2.62l-0.94,-3.92l0.59,-2.18l4.01,-3.99l-0.26,-0.66l-1.95,-0.14l-0.79,-1.0l-2.5,-5.86l-0.02,-2.55l-3.66,-3.58l-2.04,-6.97l-2.66,-5.31l-1.76,-2.65l-4.6,-13.92l-6.07,-5.15l-1.13,-4.32l-1.18,-2.58l-7.86,-10.36Z", "name": "Sousse"}, "tn-je": {"path": "M138.24,295.01l0.48,-0.75l1.18,0.23l1.36,-0.63l1.21,-1.05l0.79,-2.37l0.82,-0.2l3.26,1.72l3.13,-1.71l2.69,-0.46l0.58,-0.61l0.07,-0.71l1.42,-0.12l1.6,-1.27l0.52,0.06l0.75,-0.67l0.56,-0.03l0.83,-1.56l1.51,-0.9l1.79,0.54l2.24,-0.79l1.11,-0.21l1.06,0.22l1.46,-0.59l2.31,-2.24l1.07,-0.05l0.98,-0.5l1.0,-1.38l1.04,-0.74l0.22,-0.88l0.52,-0.48l-0.19,-0.86l0.85,-2.15l1.47,-0.61l1.0,0.02l1.52,-1.12l1.14,-0.14l0.53,-0.64l1.43,-0.61l0.79,-1.39l0.69,-0.52l2.96,-0.82l0.57,-0.52l1.47,1.01l1.86,-1.25l0.06,-1.25l1.01,-1.51l0.09,-1.16l0.88,-1.19l1.19,-0.03l1.27,-0.76l0.46,-0.65l2.94,0.87l3.88,-0.27l0.31,-0.56l-0.31,-0.78l0.84,-1.76l0.02,-1.22l0.94,-1.96l1.06,-4.31l-0.31,-0.73l-1.08,-0.59l1.29,-0.25l2.31,-1.33l1.36,-2.49l1.48,-1.25l0.5,-1.78l-0.33,-0.69l0.86,-1.19l0.0,-0.98l-0.23,-0.44l-1.25,-0.64l-0.26,-1.74l-0.85,-2.38l-1.47,-1.33l-0.62,-1.17l-0.33,-2.73l1.16,-1.82l-0.22,-0.55l-2.43,-2.08l-2.85,0.8l-1.51,-0.03l-0.36,-0.47l-0.74,-0.19l-0.73,-2.12l2.02,-0.38l4.24,-2.45l3.42,-0.73l1.4,-1.66l0.79,-0.33l3.78,0.26l5.1,-0.64l1.72,1.8l0.6,-0.29l1.79,0.46l1.94,-0.71l0.4,-0.42l1.66,1.12l1.55,-0.43l1.12,0.55l3.3,-4.6l1.63,-1.69l1.21,-0.78l1.78,1.82l0.98,0.17l1.68,-1.17l0.94,-1.74l1.55,0.09l4.6,-2.56l1.42,-0.46l2.91,-2.07l0.61,-1.82l1.11,-1.51l0.63,-2.1l-0.16,-0.64l-2.07,-1.12l-2.02,-2.58l-2.18,0.73l-2.16,-1.23l-0.98,0.1l-1.63,-0.72l-1.12,0.28l0.83,-1.8l-0.25,-1.56l0.57,-1.64l-0.35,-3.54l0.47,-1.56l-0.18,-1.22l0.68,-1.91l0.46,-1.08l3.86,-1.7l0.19,-0.51l-2.22,-3.87l-0.7,-2.94l2.59,-1.77l2.2,-0.85l1.23,-0.91l1.23,-0.09l0.51,-1.11l0.78,0.26l0.89,-0.69l1.03,-0.23l1.7,0.54l2.1,-1.77l-0.05,0.6l1.01,0.71l2.6,-1.08l2.14,0.23l1.06,-1.23l2.01,2.38l1.35,1.08l0.41,-0.11l1.67,1.65l3.5,-0.08l1.84,-1.21l3.01,-1.09l0.58,-0.72l0.71,0.18l3.55,-3.0l2.17,-0.38l5.16,-4.0l2.72,-2.54l0.84,-0.39l0.38,-0.69l6.3,-5.82l6.61,4.11l3.1,3.01l-0.24,4.49l-3.07,4.56l-0.76,1.87l-0.04,2.56l0.85,2.94l1.52,2.58l2.9,1.94l2.18,0.66l4.63,2.85l1.6,1.4l-1.02,5.9l-3.52,5.76l-4.17,3.5l-4.69,2.72l-0.55,1.92l-0.24,5.72l-0.92,2.49l-0.17,2.55l1.08,1.93l14.88,1.07l2.87,1.04l2.35,1.54l1.38,2.25l4.04,9.41l-1.62,2.7l-1.96,5.28l-0.93,3.64l0.22,3.45l1.24,3.37l1.52,2.94l7.89,9.77l1.35,2.86l0.18,3.08l-0.28,6.77l-0.42,2.63l-4.55,7.41l-0.84,2.66l-0.54,6.11l0.21,5.09l-7.58,2.12l-17.83,1.91l-2.69,1.76l-5.36,6.28l-2.74,1.49l-2.37,0.7l-5.55,-0.05l-3.75,1.52l-2.91,-0.06l-9.72,2.09l-3.61,0.25l-3.78,1.13l-3.79,0.33l-2.52,-0.39l-3.64,-1.85l-4.75,-1.48l-3.66,-0.72l-9.55,4.51l-2.99,1.1l-2.87,0.08l-5.36,-0.89l-2.86,0.12l-2.45,1.47l-4.84,4.68l-4.4,0.59l-3.54,0.97l-7.46,5.78l-12.23,-1.42l1.23,-1.92l-0.52,-2.27l0.88,-3.11l-0.86,-0.95l0.06,-0.36l2.84,-3.38l-0.44,-2.97l-0.88,-0.59l-4.25,-0.49l-2.34,-0.81l-1.21,-0.99l-0.62,-1.32l-2.29,-2.5l-0.98,-0.08l-2.3,2.94l-3.09,0.8l-0.13,-0.77l-0.69,-0.43l-0.56,0.15l-0.83,1.59l-0.33,-0.88l-1.23,-0.21l0.46,-0.96l-0.76,-1.15l-2.66,-0.62l-1.54,0.17l-1.3,-0.82l-5.05,1.9l-0.8,-0.88l-2.02,-1.15l-1.04,-0.13l-1.57,0.31l-2.89,-0.54l-3.03,0.11l-1.48,-0.84l-1.38,-2.32l-0.85,-0.61l-4.2,0.2l-1.08,-0.64l-0.47,-0.63l0.03,-0.71l-0.6,-1.5l-0.8,-1.19l0.27,-2.61l-0.2,-0.96l-1.71,-1.05ZM271.85,165.87l-0.18,-0.26l0.24,-0.25l0.06,0.64l-0.12,-0.14Z", "name": "Jendouba"}, "tn-sz": {"path": "M345.25,702.43l4.4,0.08l3.78,-0.59l3.6,-1.99l2.83,-2.26l3.18,-1.37l7.8,-0.64l4.55,-1.03l5.0,-0.36l3.86,-1.6l2.3,-4.53l0.46,-3.51l-0.19,-0.39l-2.31,-1.42l-1.75,-1.94l-1.5,-2.56l0.44,-2.57l1.26,-3.23l-2.04,-3.6l-1.3,-4.78l0.77,-1.71l1.67,-2.41l-0.88,-3.22l0.83,-2.28l-0.06,-2.63l-1.17,-2.65l0.44,-1.57l4.86,-2.57l-0.01,-2.25l-5.33,-4.06l-3.4,-1.39l-2.16,-1.97l-4.06,-2.35l-1.47,-2.06l-1.66,-3.62l-6.17,-3.49l-2.65,-0.34l-1.41,-1.67l-0.24,-2.36l2.05,-6.4l1.64,-3.07l7.69,-10.73l4.84,-8.12l6.65,-8.53l2.84,-2.11l3.31,-1.36l2.82,-1.83l1.53,-2.38l6.68,-4.93l-0.04,-0.69l9.05,-1.04l4.33,-1.76l8.55,1.75l3.84,-1.79l8.94,4.97l0.86,8.88l1.67,5.85l0.02,1.74l-2.5,3.57l-2.79,2.68l-4.01,4.76l0.45,3.73l1.88,3.11l2.93,2.39l10.81,6.01l3.96,6.91l0.64,2.36l1.6,2.96l0.6,0.13l2.94,-2.27l2.62,-1.24l3.18,-2.96l2.58,0.79l3.7,2.85l2.89,4.0l2.32,4.02l2.54,3.12l3.31,3.37l1.72,2.88l-0.85,3.74l0.21,0.44l4.79,2.48l5.29,3.46l4.8,1.18l4.88,-0.85l4.43,1.74l5.71,0.71l4.92,-0.3l2.08,0.71l3.34,2.56l10.39,5.78l4.71,-1.87l2.98,-1.76l3.53,-0.93l3.95,-3.08l1.11,0.41l-0.11,5.18l0.39,4.66l1.51,5.5l0.99,5.88l0.6,10.08l-0.08,3.35l0.22,0.36l3.5,1.77l5.27,0.63l-0.02,0.82l2.25,2.1l1.08,2.63l-1.23,5.14l-2.58,8.17l-2.31,4.89l-0.02,3.29l-2.48,2.97l-1.66,4.26l-2.55,3.32l-3.33,3.27l-2.91,4.6l0.25,2.62l-3.49,3.37l-6.4,12.95l-2.94,6.6l-1.67,4.66l-10.35,17.39l-1.52,1.96l-4.47,8.08l0.7,3.61l4.07,5.82l1.25,3.04l1.11,1.54l6.35,-0.37l4.46,-1.68l3.19,0.16l6.37,-2.35l1.2,-0.1l3.41,1.81l3.9,4.49l5.53,2.65l7.12,4.57l3.31,1.74l-0.79,6.32l-1.31,2.83l-1.85,2.23l-1.52,3.86l-2.76,1.29l-5.1,0.67l-4.35,1.67l-4.36,3.99l-1.29,2.09l-1.41,1.46l-3.42,-0.63l-1.86,-1.1l-3.23,1.66l-1.77,3.55l-2.56,3.57l-0.67,1.98l-3.31,5.88l-2.74,3.94l-2.41,2.82l-7.73,3.15l-6.68,-0.61l-4.18,1.33l-4.41,2.01l-2.66,1.94l-1.71,2.99l1.06,2.77l0.49,2.81l1.25,3.03l1.68,1.84l0.97,2.24l-1.21,2.39l-3.27,0.35l-7.4,-3.49l-0.8,-2.04l-3.51,-1.08l-2.78,-1.86l-3.84,-1.51l-7.19,1.81l-5.07,0.83l-2.95,0.93l-1.86,-1.43l-0.7,-1.86l2.32,-6.24l1.02,-7.55l0.99,-4.57l1.85,-3.12l1.06,-3.49l-1.61,-2.93l-3.42,-1.35l-3.44,-1.96l-6.29,-1.32l-4.71,-1.52l-2.72,-1.37l-4.43,-7.53l-4.5,-4.28l-10.33,-6.07l-10.11,-1.29l-5.35,0.33l-0.99,-1.35l0.13,-3.06l-1.36,-2.27l-2.67,-2.03l-3.36,-2.41l-2.48,-0.69l-2.23,0.86l-1.8,-0.04l-2.01,-1.5l-1.08,-1.75l-0.33,-2.06l0.23,-7.34l0.69,-2.59l-0.63,-2.34l-1.6,-2.37l-0.8,-2.86l2.36,-3.21l2.22,-1.67l2.35,-2.93l0.09,-3.69l-1.81,-2.31l-0.65,0.05l-1.67,2.76l-3.6,3.09l-2.49,-0.24l-1.12,-0.62l-3.96,-6.78l-0.37,-0.21l-4.99,0.42l-3.06,-2.21l-3.99,-0.49l-3.0,-1.85l-5.18,1.12l-5.0,-0.75l-7.97,-4.11l-5.56,3.08l-14.54,4.06l-2.13,-0.98l-3.3,-2.63l-3.25,-0.79l-2.8,-1.14l-2.27,-2.17l-2.11,-1.22l-8.6,-1.54l-5.51,-2.77l-2.81,-0.91l-3.81,-3.13l2.51,-0.82l4.31,-2.43l6.19,-5.06l3.29,-2.0l9.07,-2.91l5.73,-3.18l8.55,-3.13l6.23,-5.72l8.77,-4.15l0.32,-3.58l-1.84,-1.71l-3.18,-1.37l-1.0,-1.34l0.43,-2.63l1.22,-2.88l0.61,-3.0l1.06,-1.61l7.57,-8.31l1.18,-3.47l1.6,-2.07Z", "name": "Sidi Bou Zid"}, "tn-nb": {"path": "M620.65,291.8l3.67,-1.35l1.6,-1.53l0.05,-0.51l-1.05,-1.26l-4.58,-0.1l-0.81,-0.57l0.27,-1.54l2.49,-5.15l0.18,-2.08l3.52,-7.19l0.65,-2.51l-0.23,-2.28l-1.88,-1.68l-4.78,-0.54l-0.34,-1.05l5.2,-7.03l1.97,-5.7l1.11,-6.94l2.83,-1.8l1.47,-6.63l2.16,0.46l3.44,0.15l6.45,-2.22l1.6,-0.83l2.7,-0.47l0.69,-0.77l1.71,-0.69l0.65,-1.15l0.48,0.0l3.73,3.83l0.8,0.15l2.52,-1.23l1.2,-1.7l0.0,-0.54l-0.58,-0.55l-3.07,-0.46l-0.4,0.4l0.31,0.6l-0.49,0.29l-1.08,-0.52l-1.03,0.08l-1.13,-1.02l0.1,-0.36l1.44,-0.12l1.98,-1.0l1.4,0.0l1.06,-0.69l1.52,-0.31l2.64,-1.23l2.4,-1.38l0.95,-1.09l0.43,-1.44l0.71,-0.15l0.95,-0.86l0.98,-2.46l-0.18,-1.09l0.31,-0.91l0.0,-1.93l1.54,-1.14l0.49,-1.38l0.12,-2.85l0.74,-1.14l-0.12,-0.78l0.49,-0.68l-0.37,-0.69l0.37,-0.39l0.37,-1.76l0.12,-1.23l-0.3,-0.64l0.54,-0.67l-0.26,-0.44l0.55,-0.69l0.54,0.15l1.32,-1.63l0.31,-1.23l-0.34,-0.49l0.91,-2.03l2.29,-0.15l1.08,-0.86l0.35,-0.67l2.11,-1.17l0.06,-0.84l-0.74,-0.75l0.06,-0.31l1.67,0.15l1.24,1.38l0.8,0.0l1.04,-0.6l1.35,-0.02l0.81,-0.67l1.44,-0.18l0.77,0.31l1.58,-1.19l1.56,1.11l0.52,-0.4l0.58,1.17l1.49,-0.34l0.72,0.18l0.82,-0.62l0.72,0.62l1.29,0.0l0.51,-0.31l0.84,0.23l2.03,-0.69l6.47,-3.38l0.6,0.0l2.29,-1.77l1.7,-0.69l4.27,-5.26l2.38,-2.43l6.68,-4.0l2.72,-2.54l0.48,0.15l0.46,-0.62l1.38,-0.38l0.46,-0.63l-0.75,-0.68l0.97,-0.46l2.54,-2.62l0.81,-0.49l0.58,0.41l0.77,-1.08l0.89,-0.08l0.46,-0.48l-0.12,-1.99l0.71,0.23l2.18,-1.86l-0.04,-0.58l0.28,-0.25l0.35,-0.23l0.6,0.38l0.83,-0.86l-0.25,-1.28l0.71,-0.09l1.26,-1.55l-0.51,-0.75l1.4,0.92l1.11,0.23l0.4,-0.4l0.61,-1.77l0.06,-1.62l-1.26,-1.63l-0.41,-0.08l-0.75,-0.92l-0.52,0.0l0.06,-0.66l0.83,0.62l0.71,-0.63l0.12,-1.0l-1.17,-0.63l0.58,0.03l0.71,-0.94l-1.54,-1.14l1.11,-1.4l0.95,1.01l1.11,-0.15l0.34,-0.34l0.46,0.49l0.68,0.0l0.52,-1.0l1.55,-0.62l1.12,0.54l0.58,-0.49l0.77,0.34l0.88,-0.92l2.14,0.54l0.84,-0.62l0.88,1.15l1.11,0.23l1.01,-0.78l0.12,-0.45l0.89,0.15l1.25,-1.23l1.21,0.08l0.58,-0.92l1.01,0.08l3.99,-1.62l1.18,-1.54l0.68,-0.39l0.54,0.08l1.12,-0.92l0.6,0.08l0.95,-0.94l-0.8,-2.0l1.72,1.17l0.18,1.14l0.4,0.4l0.78,0.0l0.84,0.59l0.8,0.88l-0.12,1.52l0.31,0.54l3.11,3.5l-0.08,0.72l-0.45,0.47l0.28,0.55l-1.97,0.43l-1.44,2.56l-0.37,1.92l0.31,4.54l1.41,2.45l0.18,1.63l1.78,2.26l0.18,0.89l1.01,0.88l-0.4,0.81l1.29,1.37l0.65,1.26l1.03,0.08l0.72,0.89l0.37,1.86l0.49,0.52l-0.18,0.63l0.65,0.96l-0.16,1.19l0.55,2.86l-0.06,1.68l0.31,2.46l0.59,1.58l0.27,3.5l0.68,1.54l2.95,4.15l1.81,2.01l1.0,0.38l-1.21,2.44l-0.25,2.29l-0.92,1.02l0.17,0.88l-0.48,0.58l-0.68,2.76l-0.6,0.83l-0.26,0.18l-0.52,-0.57l-0.28,0.21l-0.46,-0.91l-0.92,0.0l-1.47,0.23l-1.38,1.08l-1.01,0.0l-4.76,3.99l-1.94,0.92l-3.05,3.16l-2.11,1.68l-3.41,3.78l-1.41,2.47l-2.03,2.59l-0.61,1.63l-3.26,5.06l-3.44,4.2l-1.54,3.16l-1.87,-1.11l-0.52,0.48l1.47,1.24l0.37,0.69l-5.96,9.1l-0.31,0.98l-1.29,1.47l0.27,0.44l-0.27,0.77l-1.84,2.77l0.0,0.78l-1.72,2.9l-0.31,1.09l-0.92,0.98l-3.26,5.82l-0.8,2.08l-1.72,2.74l-3.26,7.39l-0.68,0.64l-0.8,2.77l-1.23,1.36l0.25,0.4l-0.61,1.61l-1.78,3.43l-1.23,3.36l-0.37,2.17l-1.35,4.11l-1.35,1.82l0.16,0.5l-0.53,1.35l-0.46,-0.19l-0.4,0.4l-1.11,1.76l-0.43,1.68l0.64,0.62l-0.57,1.86l-0.43,0.49l-1.14,0.76l-0.59,-0.16l-0.48,0.62l-0.77,0.0l-0.58,0.61l-1.26,-0.84l-0.55,0.0l-2.41,1.22l-1.46,-0.31l-3.72,2.29l-2.66,0.23l-1.19,-0.54l-0.71,0.84l-2.12,0.31l-2.04,1.07l-0.35,-0.08l-1.38,0.99l-1.08,-0.15l-3.09,2.22l-2.01,0.61l-4.15,4.58l-1.58,0.53l-0.97,-0.08l-1.2,0.92l-0.89,-0.15l-3.89,2.14l-0.77,0.23l-0.04,-1.05l-2.67,-1.93l-2.95,0.23l-2.04,1.07l-0.78,0.0l-1.84,1.3l-2.98,2.84l-1.72,2.06l0.07,0.31l-2.03,2.85l-9.63,-11.34l-1.92,-0.58l-2.13,1.67l-1.12,1.95l-0.28,2.44l-0.56,1.71l-1.66,1.41l-1.37,-0.07l-5.4,-6.04l-1.99,-1.25l-3.98,-0.2l-8.25,2.01l-2.1,-0.15l-1.95,-1.44l-0.52,-1.81l-2.24,-4.37l0.22,-8.81l1.21,-9.74l-0.81,-4.18ZM747.43,149.99l-0.12,-0.12l0.12,0.0l0.0,0.12ZM747.55,142.0l-0.06,-0.06l0.0,-0.09l0.06,0.06l0.0,0.09ZM747.43,141.78l0.0,-0.01l0.06,0.08l-0.06,-0.06ZM747.43,141.77l-0.06,-0.06l0.0,-0.01l0.06,0.06l0.0,0.01ZM747.31,141.63l-0.12,-0.23l0.06,-0.38l0.12,0.12l-0.06,0.49ZM722.05,121.91l-0.78,-0.98l0.1,-0.48l2.46,-2.1l0.62,-0.77l-0.12,-0.94l0.4,-0.12l0.52,1.76l0.92,0.83l0.06,1.17l1.17,1.02l0.12,1.23l-0.65,0.36l-1.41,-0.47l-0.97,0.62l-0.94,-0.39l-1.35,0.52l-0.56,-0.55l0.41,-0.72Z", "name": "Nabeul"}, "tn-tu": {"path": "M575.35,193.7l1.2,0.41l3.83,2.81l1.51,0.2l1.15,-0.26l0.52,-0.74l2.97,-0.53l4.61,0.29l0.42,-0.42l-0.07,-1.74l1.22,-1.66l2.34,-1.64l0.27,0.0l0.06,2.03l1.11,0.87l2.77,0.1l0.23,-0.23l7.47,0.5l1.71,-2.21l-0.26,-0.68l-0.7,-0.06l-1.01,-0.84l-0.8,-1.57l1.58,-3.99l1.52,-1.3l0.0,-1.44l-1.44,-1.49l-0.33,-2.57l-3.23,-3.21l-2.06,-0.94l-0.68,-1.27l-2.83,-3.18l2.93,3.0l0.79,0.15l3.18,2.23l0.25,0.6l1.14,1.01l1.63,-0.08l1.63,1.23l2.09,0.92l1.78,0.17l0.49,0.52l0.49,-0.37l0.68,0.83l1.01,-0.11l0.43,1.26l-0.92,1.91l0.12,0.69l1.05,1.37l0.12,1.09l1.2,1.17l1.35,1.0l0.32,-0.17l2.44,2.17l1.01,0.54l0.86,1.35l-0.31,0.9l-0.58,-0.14l-1.93,1.01l-0.37,0.7l0.0,1.4l-1.78,1.44l-0.98,1.38l-0.25,0.54l0.18,1.68l-0.46,-0.01l-1.08,1.17l-1.04,2.82l-1.41,1.09l-1.04,1.61l0.0,0.46l1.14,0.72l-0.81,0.54l-1.77,-1.66l-0.45,0.27l-0.59,-0.27l-1.2,0.23l-0.29,-0.67l4.07,-1.9l1.08,-1.01l0.0,-0.61l-0.95,-0.63l-1.7,-0.08l-0.59,-0.42l0.05,-1.18l-0.65,-0.71l-2.27,-1.07l-1.84,-0.15l-1.11,0.54l-1.17,-1.15l-1.65,-0.19l-2.83,1.23l-2.74,-0.02l-1.5,1.44l-2.21,-0.0l-0.95,-0.5l-1.04,-0.0l-3.32,2.44l-1.09,1.08l-1.13,2.01l-0.09,2.81l2.42,4.15l0.92,0.19l0.25,1.34l0.52,0.48l-0.28,0.67l0.65,0.71l1.09,0.15l0.61,0.78l0.26,2.91l-0.32,1.78l-0.55,1.26l-1.52,1.35l-2.43,0.22l-4.38,1.08l-3.11,-0.01l-2.13,-1.07l-2.68,-0.25l-1.77,2.09l-0.64,2.09l-2.87,3.14l-1.77,0.83l-2.84,0.64l-4.13,0.1l-2.84,-0.48l-2.19,-0.84l0.31,-1.84l-1.01,-4.32l-1.52,-2.05l-2.12,-0.49l-2.16,-1.11l-1.87,-6.66l-0.95,-2.37l-3.25,-2.68l0.46,-1.4l1.32,-0.85l2.62,-0.41l0.95,0.89l1.77,0.31l3.55,4.16l3.16,-0.07l1.1,-1.05l0.03,-1.16l-0.89,-1.27l0.18,-0.41l2.18,-1.13l3.02,-0.58l3.35,0.33l0.28,-0.6l-0.31,-1.89l-1.18,-0.97l-0.47,-1.04l2.95,-2.65l1.58,-2.02l1.57,-3.69l0.78,-0.73l3.4,-0.61l0.41,0.17ZM590.4,214.39l0.38,-0.6l-0.18,-1.14l0.0,-0.38l0.18,0.0l0.25,2.07l-0.63,0.04Z", "name": "Tunis"}}, "height": 1954.3544733545057, "projection": {"type": "merc", "centralMeridian": 0.0}, "width": 900.0});
Index: public/vendors/vmap/maps/jquery.vmap.turkey.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.turkey.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.turkey.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+/*
+ * Map of Turkey
+ * @author: Burak Özdemir <https://github.com/ozdemirburak>
+ * @source: https://upload.wikimedia.org/wikipedia/commons/2/2e/BlankMapTurkishProvincesRegions.svg
+ */
+jQuery.fn.vectorMap("addMap","turkey",{"width": 1052, "height": 744, paths:{"01":{path:"M 518.88945,536.62132 C 518.88945,536.07132 518.26346,535.62132 517.49836,535.62132 C 516.73326,535.62132 511.97173,533.17756 506.91718,530.19074 L 497.7271,524.76016 L 501.55827,523.69631 C 503.66542,523.1112 506.19107,522.62996 507.17083,522.6269 C 510.07497,522.61781 510.41243,519.58393 507.9795,515.35663 C 505.99039,511.90047 505.87157,511.07869 506.9756,508.41335 C 508.08759,505.72874 508.0129,505.26315 506.30864,504.25575 C 505.25309,503.63182 503.29662,502.89632 501.96094,502.62132 C 498.69356,501.94861 497.3983,497.30054 499.55919,494.0026 C 500.97835,491.83669 500.97132,491.39521 499.48141,489.12132 C 498.25083,487.24322 496.97309,486.62132 494.34496,486.62132 C 491.57224,486.62132 490.60734,486.09626 489.69325,484.09005 C 488.65658,481.81481 488.85957,481.28377 491.7001,478.84005 C 494.56985,476.37118 494.8846,475.52394 495.12487,469.62132 L 495.38945,463.12132 L 500.38945,462.59575 C 505.10181,462.10041 508.51769,460.80828 513.5626,457.61273 C 515.42541,456.43279 516.84105,456.47608 523.4757,457.91585 C 533.26028,460.03919 534.18,459.47061 533.72544,451.57937 C 533.37519,445.49913 534.72929,442.62132 537.94047,442.62132 C 538.93384,442.62132 540.40086,441.96705 541.20052,441.16739 C 542.00018,440.36773 544.84483,438.67919 547.52195,437.41509 C 550.58589,435.96833 552.95627,434.00597 553.9192,432.11902 C 557.78299,424.54754 561.3206,419.45051 564.07115,417.49194 C 567.03396,415.38223 567.09906,415.37974 570.6275,417.2412 C 575.02417,419.5607 577.57844,425.50888 575.66434,428.97063 C 574.35858,431.33217 572.9019,440.31251 572.55796,448.12132 C 572.43683,450.87132 571.67098,454.47132 570.85607,456.12132 C 569.54224,458.78151 568.75989,459.17796 563.9492,459.62132 L 558.52399,460.12132 L 555.80427,465.62132 C 554.30842,468.64632 552.54714,473.14632 551.8903,475.62132 C 551.23347,478.09632 550.28631,480.79632 549.7855,481.62132 C 547.00063,486.20892 546.53081,487.82921 547.52738,489.40909 C 548.23447,490.53007 548.23167,491.90371 547.51844,493.79327 C 546.11779,497.50402 546.97837,498.02883 551.42039,496.17284 C 556.13315,494.20372 557.88945,495.4026 557.88945,500.58873 C 557.88945,503.20394 556.75378,506.06835 554.07157,510.21825 C 548.46337,518.89522 545.2349,521.98503 540.59278,523.11814 C 536.68177,524.07279 536.43215,524.36322 535.43313,529.12132 L 534.38332,534.12132 L 528.71947,534.41874 C 525.30384,534.59811 522.5771,535.29276 521.85009,536.16874 C 520.46102,537.84247 518.88945,538.08271 518.88945,536.62132 z",name:"Adana"},"02":{path:"M 666.88945,476.95274 C 666.06445,476.67186 663.97144,475.80739 662.23832,475.03169 C 660.5052,474.25599 657.5228,473.62132 655.61077,473.62132 C 653.69873,473.62132 651.57414,472.94632 650.88945,472.12132 C 649.37398,470.29529 646.73637,470.18304 645.01481,471.87132 C 643.99109,472.87525 643.30454,472.57996 641.52725,470.37132 C 640.31014,468.85882 638.75289,467.62132 638.0667,467.62132 C 637.38051,467.62132 635.74671,466.91867 634.43603,466.05989 C 632.2339,464.61699 632.15764,464.29435 633.43156,461.80989 C 634.18978,460.33117 635.05624,457.99632 635.35704,456.62132 C 635.65783,455.24632 637.36318,453.21524 639.14669,452.10781 C 641.25068,450.80139 642.49811,449.15885 642.69885,447.43054 C 642.98999,444.92408 643.18743,444.82924 646.04233,445.82446 C 652.43377,448.05253 669.01974,444.05131 670.61399,439.89677 C 670.91365,439.11587 670.18127,437.15474 668.98649,435.5387 L 666.81414,432.60045 L 669.4169,431.61088 C 670.84841,431.06662 672.24538,430.62132 672.52127,430.62132 C 672.79716,430.62132 674.49784,429.49632 676.30056,428.12132 C 678.10328,426.74632 680.21076,425.62974 680.98384,425.64003 C 681.75693,425.65031 685.48113,427.22531 689.25984,429.14003 C 693.03856,431.05474 696.59609,432.62132 697.16545,432.62132 C 697.73482,432.62132 699.67562,433.74632 701.47834,435.12132 C 703.28106,436.49632 705.25099,437.62132 705.85597,437.62132 C 708.50398,437.62132 716.7703,432.46632 719.17241,429.31698 C 723.83428,423.20496 730.41515,424.18895 726.27539,430.37904 C 725.26671,431.88729 724.42974,433.57132 724.41544,434.12132 C 724.40115,434.67132 722.25195,435.53424 719.63945,436.03892 C 716.80857,436.58579 714.88945,437.49484 714.88945,438.28892 C 714.88945,439.02174 715.33945,439.62132 715.88945,439.62132 C 717.73094,439.62132 716.91458,442.47857 714.88945,443.12132 C 713.78945,443.47045 712.88945,444.57329 712.88945,445.57208 C 712.88945,446.57087 712.05043,447.60747 711.02495,447.87563 C 709.81346,448.19245 708.9153,449.67002 708.46047,452.09445 C 708.07548,454.14663 707.4965,455.5617 707.17384,455.23905 C 706.85119,454.9164 705.99452,455.43291 705.27013,456.38686 C 704.37561,457.56485 703.94285,457.69737 703.92125,456.79989 C 703.88536,455.30834 701.47729,452.62132 700.17649,452.62132 C 699.70578,452.62132 698.5048,451.24016 697.50762,449.55209 C 696.51045,447.86401 695.53454,446.6429 695.33892,446.83851 C 694.61971,447.55773 698.17937,458.17898 699.73193,459.9463 C 701.24572,461.66949 701.18301,461.7331 698.60768,461.08674 C 696.34834,460.51968 695.24712,461.01712 692.19148,463.98506 C 690.16267,465.95564 688.34717,467.41237 688.15704,467.22225 C 687.96692,467.03212 688.43937,465.05373 689.20694,462.82584 C 690.60417,458.77035 689.7533,454.20658 688.30408,457.98319 C 687.78523,459.3353 687.41399,459.47004 686.8265,458.51947 C 686.19356,457.49535 685.74198,457.49882 684.49059,458.53738 C 683.17521,459.62905 682.75827,459.42753 681.74888,457.21215 C 680.56958,454.62387 680.54133,454.61786 678.72396,456.56858 C 677.71498,457.65159 676.88945,459.00651 676.88945,459.57951 C 676.88945,460.1525 675.76445,460.62132 674.38945,460.62132 C 671.53457,460.62132 671.17773,461.78575 673.45374,463.67467 C 674.44666,464.49872 674.80495,465.82185 674.43468,467.29712 C 674.02052,468.94726 674.2817,469.62132 675.33521,469.62132 C 676.15134,469.62132 677.27887,470.48044 677.84083,471.53047 C 678.7041,473.14351 678.31293,473.76392 675.31885,475.53047 C 671.80966,477.60095 669.79288,477.94123 666.88945,476.95274 z",name:"Adıyaman"},"03":{path:"M 224.92847,443.31 C 224.30556,442.31377 222.21895,440.56825 220.29155,439.43105 C 217.1445,437.57425 216.8545,437.0452 217.44742,434.24237 C 218.1982,430.69335 222.15135,426.8825 225.97707,426.01979 C 227.40026,425.69885 230.66276,423.6429 233.22707,421.45099 C 238.2035,417.19726 238.86115,414.94511 236.38945,410.62132 C 235.60343,409.24632 234.94437,406.96226 234.92489,405.54563 C 234.88846,402.89813 232.18062,399.79632 228.03806,397.65683 L 225.68666,396.44242 L 228.28806,393.72715 C 229.85657,392.08997 230.90265,389.84247 230.9227,388.0666 C 230.95005,385.64339 232.38963,383.88053 239.04421,378.12132 C 249.67456,368.92127 250.87006,367.62651 251.4909,364.64122 C 251.77912,363.25527 252.22786,361.07862 252.48809,359.80421 C 252.74879,358.52753 254.37359,356.73144 256.10663,355.80421 C 257.83659,354.87862 260.27798,353.06194 261.53195,351.76714 L 263.81189,349.41296 L 266.77509,352.65726 C 269.26173,355.37978 270.2267,355.80387 272.7751,355.29419 C 274.44534,354.96014 276.08091,355.12209 276.40969,355.65407 C 276.73848,356.18606 278.99009,356.62132 281.41328,356.62132 C 284.83009,356.62132 286.06513,356.16158 286.91517,354.57326 C 287.69809,353.11036 288.59375,352.71008 290.05003,353.17228 C 291.37664,353.59333 294.35372,352.66975 298.57281,350.52825 C 305.76054,346.87995 308.13707,347.21351 308.70375,351.95018 C 309.01044,354.51376 313.04723,358.61576 315.27431,358.6269 C 315.88764,358.62996 318.07695,359.10112 320.13945,359.6739 C 323.64193,360.64659 323.88945,360.96909 323.88945,364.55992 C 323.88945,367.82682 324.2651,368.49879 326.38945,369.03196 C 329.33588,369.77147 329.6831,371.60102 327.00969,372.30013 C 325.69288,372.64448 324.96783,374.00031 324.58863,376.82746 C 324.23201,379.48622 322.99678,381.94711 320.96838,384.03988 C 317.23591,387.89082 317.11434,389.31104 320.38945,390.80327 C 321.76445,391.42977 322.88945,392.23045 322.88945,392.58257 C 322.88945,392.93469 320.97695,394.19091 318.63945,395.37418 C 316.30195,396.55744 311.63435,399.32153 308.267,401.5166 L 302.14455,405.50764 L 300.017,403.52552 C 298.84685,402.43536 297.88945,401.05169 297.88945,400.4507 C 297.88945,399.74387 296.40135,399.55758 293.67559,399.92318 C 290.69517,400.32294 288.90852,401.24781 287.57179,403.08285 C 286.53232,404.5098 284.26606,406.40137 282.53565,407.28633 C 280.80524,408.17129 277.66796,410.24843 275.56392,411.90219 C 273.45988,413.55595 268.73488,416.12015 265.06392,417.60042 C 259.99789,419.64323 257.6665,421.27208 255.38945,424.35961 C 253.73945,426.59689 250.63585,429.24418 248.49257,430.24247 C 245.69266,431.54659 243.42581,433.88341 240.43978,438.54379 L 236.28386,445.03004 L 231.17244,445.07568 C 227.28884,445.11036 225.78896,444.68622 224.92847,443.31 z",name:"Afyonkarahisar"},"04":{path:"M 909.70981,362.4615 C 908.21002,360.16428 907.88403,358.98236 906.08458,349.31747 C 905.44731,345.89471 904.15783,343.45099 901.59935,340.81747 C 899.6244,338.78459 897.5398,335.87575 896.96692,334.35339 C 896.39404,332.83102 894.76791,331.14541 893.3533,330.60757 L 890.78128,329.6297 L 893.33536,326.28112 C 896.61733,321.97824 896.75445,317.13456 893.63945,315.53971 C 891.10099,314.24005 882.88945,306.57728 882.88945,305.50813 C 882.88945,304.15935 891.70514,299.66507 896.51918,298.55963 C 904.77777,296.66324 915.26475,293.53323 917.88945,292.18134 C 922.6369,289.73609 929.29446,289.51535 933.72567,291.65628 C 935.96261,292.73705 938.23425,293.62132 938.77376,293.62132 C 940.31317,293.62132 941.05996,297.19551 940.33167,301.07761 C 939.68878,304.50452 939.76706,304.62132 942.70673,304.62132 C 944.37865,304.62132 946.39035,303.97756 947.17718,303.19074 C 948.40686,301.96105 949.15414,301.95489 952.4986,303.14684 C 954.63857,303.90952 958.21195,304.55329 960.43945,304.57743 C 962.66695,304.60157 964.94281,305.07468 965.49693,305.6288 C 966.05104,306.18291 971.43824,306.69762 977.46849,306.7726 C 985.88913,306.87731 989.17,306.5276 991.61136,305.26513 C 993.35968,304.36103 995.16279,303.62132 995.61826,303.62132 C 996.70935,303.62132 996.25132,311.4637 995.07291,312.95863 C 994.56883,313.59811 994.13649,316.29235 994.11215,318.94583 C 994.05445,325.23815 992.50056,326.33249 983.5439,326.38856 C 977.51786,326.42628 976.30801,326.74069 974.87412,328.64164 C 973.44515,330.53607 972.62434,330.75233 969.11399,330.15926 C 965.2749,329.51065 964.92292,329.65591 963.45487,332.49481 C 962.59389,334.15977 961.88945,336.12935 961.88945,336.87166 C 961.88945,340.12957 959.59331,340.63282 956.27538,338.10211 C 954.48651,336.73768 952.73784,335.62132 952.38945,335.62132 C 952.04106,335.62132 950.28106,334.49632 948.47834,333.12132 C 944.80329,330.31822 939.78144,329.84161 937.89327,332.11672 C 937.21068,332.93919 934.85874,334.14945 932.66673,334.80619 C 927.05854,336.48645 926.49069,339.21403 931.38945,340.94143 C 932.69885,341.40315 930.31575,346.08684 926.41681,350.71454 C 920.67697,357.52724 919.88945,358.64876 919.88945,360.01031 C 919.88945,361.90941 917.73676,363.50186 914.21824,364.20556 C 911.8196,364.68529 910.93934,364.34477 909.70981,362.4615 z",name:"Ağrı"},"05":{path:"M 522.9393,286.52818 C 523.55542,285.37695 523.8006,283.40344 523.48415,282.1426 C 523.12994,280.73134 523.48165,279.37473 524.39912,278.6133 C 525.2188,277.93302 525.88945,276.83497 525.88945,276.17319 C 525.88945,275.51141 527.01445,273.91307 528.38945,272.62132 C 529.76445,271.32957 530.88945,269.66979 530.88945,268.93291 C 530.88945,267.34178 524.91279,261.69268 523.1849,261.65063 C 522.5224,261.63451 520.80133,260.44229 519.3603,259.00126 C 517.06383,256.70479 516.132,256.43964 511.81542,256.85441 C 506.40335,257.37444 505.3449,256.69616 503.94355,251.80994 C 503.36525,249.79355 503.49434,248.00929 504.33587,246.38724 C 505.02568,245.05763 505.83157,241.82723 506.12673,239.20857 C 506.8781,232.54239 508.18885,231.57592 511.79397,235.02984 C 514.6054,237.72337 514.8988,237.78504 519.84978,236.72325 C 527.29327,235.12691 527.79254,235.23338 527.57771,238.37132 C 527.41543,240.7419 527.80336,241.1644 530.38945,241.43354 C 532.03945,241.60526 533.94765,242.47288 534.62989,243.36159 C 535.31213,244.2503 538.01213,245.27896 540.62989,245.64751 C 543.24765,246.01606 548.19693,246.92493 551.6283,247.66723 L 557.86715,249.01687 L 560.79739,246.20951 C 562.40903,244.66547 564.00789,242.28556 564.35042,240.92082 C 564.77908,239.2129 565.45318,238.62367 566.51311,239.0304 C 567.36006,239.35541 569.23122,239.62132 570.67124,239.62132 C 572.70762,239.62132 573.02278,239.88799 572.08945,240.82132 C 570.16542,242.74535 570.69531,244.53449 573.38945,245.21068 C 575.18432,245.66116 575.88945,246.51269 575.88945,248.22973 C 575.88945,249.95465 576.44696,250.62132 577.88945,250.62132 C 580.52696,250.62132 580.45952,252.23898 577.79294,252.93631 C 575.93232,253.42287 575.73541,254.09212 576.04294,258.88408 L 576.38945,264.28359 L 571.63945,263.82523 C 567.35615,263.4119 566.88945,263.57007 566.88945,265.43507 C 566.88945,266.57259 567.36744,267.7987 567.95164,268.15976 C 568.57467,268.54481 567.66746,269.80955 565.75736,271.21877 C 562.22978,273.82134 555.88945,274.53893 555.88945,272.33561 C 555.88945,271.44383 554.20426,271.04989 550.38945,271.04989 C 545.88369,271.04989 544.88945,271.35663 544.88945,272.74671 C 544.88945,275.22105 539.55738,279.30863 533.67031,281.34731 C 530.2447,282.5336 528.02443,284.03029 526.96851,285.865 C 525.03016,289.23295 521.14995,289.87161 522.9393,286.52818 z",name:"Amasya"},"06":{path:"M 431.49319,391.03108 C 431.15757,390.15644 431.13002,389.04109 431.43198,388.5525 C 432.02275,387.59663 428.00264,381.62132 426.76878,381.62132 C 426.35927,381.62132 425.72636,382.5598 425.36231,383.70683 L 424.70039,385.79234 L 422.29492,383.53252 C 419.85242,381.23791 418.80886,374.62132 420.88945,374.62132 C 422.26057,374.62132 422.0853,370.5788 420.60401,368.03805 C 418.52775,364.47675 415.14808,360.62132 414.10252,360.62132 C 413.55302,360.62132 412.84441,361.29632 412.52782,362.12132 C 411.65226,364.403 410.78757,364.03114 404.38945,358.62132 C 398.5272,353.6646 394.59272,352.34624 393.57526,354.99771 C 393.23983,355.87182 392.106,356.19421 390.46827,355.88114 C 388.51763,355.50825 387.88945,355.80069 387.88945,357.08167 C 387.88945,359.16148 382.59151,364.62132 380.57336,364.62132 C 379.7649,364.62132 378.85703,365.26343 378.55587,366.04824 C 377.98478,367.53646 369.67785,371.62132 367.22249,371.62132 C 366.4455,371.62132 363.96376,370.67955 361.70751,369.5285 C 358.72326,368.00605 356.62198,367.6052 353.99735,368.05769 C 352.01301,368.39979 349.03945,368.9136 347.38945,369.19949 C 344.79337,369.64929 344.08651,369.24333 342.13945,366.18432 C 340.90195,364.2401 339.88945,362.21542 339.88945,361.68503 C 339.88945,361.15465 339.15119,360.30755 338.24887,359.80259 C 336.86466,359.02794 337.21346,358.47325 340.48101,356.2529 C 342.611,354.80553 345.13343,353.62132 346.0864,353.62132 C 347.03938,353.62132 348.32347,352.67886 348.93994,351.52697 C 349.86686,349.79501 349.67136,349.01808 347.81011,347.03686 C 345.86936,344.97103 345.71985,344.28897 346.72443,342.08416 C 348.38498,338.43963 348.19434,336.56216 345.54733,330.49216 C 341.84491,322.00193 340.98644,320.2365 339.65868,318.38219 C 338.60904,316.9163 338.76501,316.39678 340.65142,315.07549 C 343.75043,312.90486 343.4507,311.14295 339.67106,309.31241 C 337.61216,308.31526 335.71621,306.1987 334.40849,303.43751 C 332.38805,299.17143 332.2909,299.11321 326.04105,298.42253 C 322.56325,298.03819 319.049,297.1687 318.23162,296.49033 C 316.45012,295.01182 301.23169,294.37598 296.95848,295.60152 C 292.50322,296.87927 290.00477,295.82396 289.03378,292.25423 C 288.2363,289.32242 288.41294,289.01067 291.78553,287.39754 C 293.76768,286.44947 296.10721,285.66197 296.98446,285.64754 C 299.29687,285.60953 301.88945,282.35625 301.88945,279.49258 C 301.88945,274.80457 305.02708,273.89801 309.11393,277.40521 C 310.34053,278.45784 311.99766,278.69973 314.85374,278.24302 C 318.13373,277.71853 319.25323,277.9851 320.96674,279.69861 C 322.73196,281.46383 323.88257,281.71112 328.22693,281.25893 C 341.8244,279.84363 345.50279,278.93809 350.33523,275.81631 C 353.05541,274.05907 355.68878,272.62132 356.18717,272.62132 C 357.89905,272.62132 370.87233,264.12102 370.88089,262.99376 C 370.8856,262.37361 370.17382,261.27229 369.29915,260.54638 C 366.54053,258.25692 370.30932,256.62075 378.33058,256.62551 C 383.87051,256.62879 386.44803,257.16674 390.30893,259.12551 C 393.01464,260.4982 396.14214,261.62132 397.25893,261.62132 C 398.83822,261.62132 399.02278,261.88799 398.08945,262.82132 C 396.04503,264.86574 396.75943,267.50273 399.78103,269.06526 C 401.3714,269.88767 403.13425,271.88481 403.69848,273.50334 C 404.85999,276.83524 410.48281,282.62132 412.5592,282.62132 C 413.31442,282.62132 414.46831,281.44497 415.1234,280.0072 C 416.21644,277.60825 416.68796,277.43783 420.85196,277.93674 C 423.34758,278.23576 427.24153,279.31295 429.50518,280.3305 L 433.62092,282.18059 L 430.72732,287.15095 C 427.9434,291.93292 427.62577,295.16464 429.46786,299.96505 C 430.03915,301.4538 424.43147,304.94765 420.38945,305.62132 C 418.11725,306.00002 417.30826,306.72782 417.05477,308.62132 C 416.8707,309.99632 416.3082,311.54882 415.80477,312.07132 C 415.30135,312.59382 414.88945,314.63617 414.88945,316.60988 C 414.88945,318.58359 413.98945,321.96373 412.88945,324.12132 C 411.78945,326.27891 410.88945,328.41708 410.88945,328.87282 C 410.88945,329.32855 412.69171,331.41588 414.89446,333.51131 C 418.39168,336.83813 418.81989,337.7191 418.2718,340.45957 C 417.85101,342.56351 418.17897,344.41424 419.26679,346.07446 C 420.15925,347.43653 420.88945,349.01679 420.88945,349.58614 C 420.88945,351.91086 436.61206,367.57567 438.97278,367.60299 C 442.04921,367.6386 441.83802,368.97175 438.38413,371.31872 C 434.67267,373.84073 433.92543,376.57637 436.38945,378.62132 C 438.41989,380.30643 438.2832,381.97947 435.6453,387.72954 C 433.2543,392.94143 432.46661,393.56776 431.49319,391.03108 z",name:"Ankara"},"07":{path:"M 358.69746,559.88281 C 355.56686,557.26399 352.97936,554.7297 352.94746,554.25105 C 352.88285,553.2817 349.1951,547.29935 343.88945,539.55694 C 340.92578,535.23212 339.39341,534.05619 333.88945,531.88296 C 330.31445,530.47138 326.31626,528.48504 325.00459,527.46888 C 323.69292,526.45272 322.21957,525.62132 321.73048,525.62132 C 321.2414,525.62132 318.59018,524.07287 315.83889,522.18031 C 313.0876,520.28776 309.83595,518.43604 308.613,518.06538 C 307.39005,517.69472 305.47495,516.55679 304.35722,515.53666 C 301.61782,513.03643 290.36605,510.51439 279.38945,509.94022 C 272.73687,509.59224 270.06646,509.05232 269.15109,507.87017 C 268.08302,506.49082 267.56826,506.45525 265.4077,507.61155 C 261.29423,509.81302 259.88467,513.02983 259.50113,521.09122 C 259.2772,525.79782 258.53963,529.50627 257.51707,531.06689 C 256.62188,532.43312 255.88945,534.24179 255.88945,535.08614 C 255.88945,535.93049 255.38838,536.62132 254.77595,536.62132 C 254.08247,536.62132 253.85349,537.84725 254.16891,539.87132 C 254.45716,541.72109 254.02613,544.52155 253.16846,546.37132 C 251.65269,549.64047 249.91059,550.69514 249.86485,548.37132 C 249.82911,546.55582 243.36717,543.62132 239.40505,543.62132 C 237.2289,543.62132 235.53196,544.28936 234.69615,545.4751 C 233.47386,547.20912 228.88053,548.65693 224.46392,548.70028 C 223.40487,548.71067 222.05487,549.36163 221.46392,550.14687 C 220.87296,550.9321 217.78272,551.8743 214.59673,552.24064 C 209.47698,552.82934 208.57209,552.65779 206.80777,550.76402 C 205.70984,549.58554 203.81657,548.60537 202.60049,548.58588 C 201.38442,548.5664 199.26445,547.90734 197.88945,547.12132 C 196.51445,546.3353 194.44669,545.67624 193.29444,545.65676 C 190.72361,545.61327 186.75637,541.55055 188.64104,540.89136 C 189.32942,540.65059 190.17519,538.68661 190.52053,536.52697 C 191.07944,533.0317 191.65599,532.37668 195.76893,530.56423 C 202.30055,527.68595 209.50755,520.28718 211.43643,514.47986 C 212.30332,511.8699 213.82299,508.69652 214.81346,507.4279 C 217.29018,504.25567 218.21035,500.93768 216.84704,500.09511 C 216.14661,499.66222 216.8737,498.70098 218.77714,497.54343 C 221.35035,495.97856 221.80925,495.10811 221.69289,492.01274 C 221.53169,487.72482 222.77531,486.55602 230.62318,483.61976 C 233.56753,482.51813 237.26968,480.66075 238.85018,479.49223 C 242.38818,476.87647 246.92224,477.45663 251.95399,481.16894 C 254.44046,483.00339 256.60603,483.68592 259.88216,483.66767 C 262.36117,483.65386 266.97695,483.90443 270.13945,484.22449 C 273.54186,484.56883 275.88945,484.41542 275.88945,483.84873 C 275.88945,483.322 276.81336,481.71647 277.94259,480.28089 C 279.70725,478.03749 280.26976,477.84188 281.94605,478.88874 C 283.48361,479.84897 284.26599,479.84323 285.64291,478.86164 C 288.64828,476.71914 292.21718,475.49442 297.17558,474.90404 C 301.41382,474.39942 302.45756,474.69027 306.29311,477.44475 C 311.71269,481.3368 317.47655,482.40332 321.59135,480.27547 C 324.52107,478.76046 324.67044,478.80095 327.664,481.92179 C 329.35199,483.68153 331.82433,487.59632 333.1581,490.62132 C 336.02495,497.12336 342.35065,503.7356 349.63945,507.84925 C 352.57698,509.50712 354.88945,511.52244 354.88945,512.42462 C 354.88945,513.31142 356.43133,515.63097 358.31586,517.57916 C 362.34144,521.74073 364.16879,528.37884 364.30187,539.32424 C 364.37466,545.31045 364.72728,546.77475 366.38945,547.99295 C 368.07429,549.22777 368.38945,550.61402 368.38945,556.79004 C 368.38945,563.36749 368.1838,564.14821 366.38945,564.38281 C 365.19907,564.53845 362.08526,562.71679 358.69746,559.88281 z",name:"Antalya"},"08":{path:"M 830.49644,257.03953 C 830.16259,256.16955 829.88945,253.49061 829.88945,251.08633 C 829.88945,246.86526 829.73427,246.64627 825.37764,244.71912 C 822.89614,243.62144 820.59372,242.01423 820.26114,241.14756 C 819.57255,239.3531 822.66825,234.56056 829.45824,226.90926 L 834.08358,221.6972 L 830.34708,218.27412 C 828.29201,216.39142 826.04174,213.19637 825.34648,211.174 C 824.09141,207.52325 824.1067,207.48536 827.48591,205.87393 C 829.35786,204.98126 830.88945,203.96604 830.88945,203.61789 C 830.88945,203.26974 832.29081,201.16156 834.00358,198.93305 C 837.39852,194.51584 837.67791,194.50082 846.67338,198.25193 C 851.29024,200.17715 852.45531,199.98831 854.66364,196.95675 C 856.30204,194.70759 857.44531,194.25706 861.99704,194.06687 C 873.19428,193.599 884.76253,196.76283 887.73933,201.10719 C 890.67372,205.38964 890.47788,206.795 886.13945,212.58823 C 884.07695,215.34234 881.03945,220.77818 879.38945,224.66786 L 876.38945,231.74001 L 867.87373,231.09305 C 857.14359,230.27784 855.68793,231.39546 855.45008,240.63161 C 855.3223,245.59299 854.8553,247.11002 852.83326,249.13205 C 850.62207,251.34324 849.99456,251.48913 846.6576,250.56775 C 842.14597,249.32203 838.53318,250.87253 835.10951,255.52385 C 832.55983,258.98779 831.39138,259.3717 830.49644,257.03953 z",name:"Artvin"},"09":{path:"M 83.81018,461.37132 C 83.766581,461.23382 83.654081,457.14728 83.56018,452.29011 C 83.399687,443.9884 83.239556,443.37596 80.88945,442.07555 C 79.51445,441.3147 77.60195,440.67624 76.63945,440.65676 C 75.67695,440.63727 74.88945,440.141 74.88945,439.55393 C 74.88945,438.96687 75.67695,438.72798 76.63945,439.02306 C 79.347196,439.8532 86.182473,437.93667 87.684021,435.92629 C 88.487514,434.85051 88.824457,432.79438 88.518058,430.83675 C 88.007195,427.57278 88.02538,427.55619 91.417328,428.19253 C 94.460114,428.76336 95.285412,428.38713 99.019205,424.7271 C 103.74971,420.09004 105.74602,419.71607 109.79379,422.70872 C 112.27251,424.54131 113.51874,424.72255 120.0033,424.19344 C 124.06568,423.86197 129.86445,423.45997 132.88945,423.30011 C 141.3862,422.85109 141.41508,422.83929 143.20472,419.08639 C 144.65082,416.05389 145.16526,415.69856 146.82419,416.58639 C 147.88777,417.1556 150.55826,417.62132 152.75861,417.62132 C 158.178,417.62132 160.64166,418.71927 165.63444,423.35956 L 169.87943,427.30485 L 167.38444,428.44165 C 165.31522,429.38445 164.88945,430.27783 164.88945,433.6768 C 164.88945,436.87097 165.53279,438.4185 167.80543,440.69115 C 169.40923,442.29494 170.30923,443.86188 169.80543,444.17324 C 169.30164,444.4846 168.88945,445.56878 168.88945,446.58251 C 168.88945,447.72852 167.76265,448.81847 165.91034,449.46419 C 162.22775,450.74795 155.88952,455.70525 155.88948,457.30177 C 155.88943,459.39676 151.47548,459.23899 148.38945,457.03371 C 144.67713,454.38087 137.94193,454.02805 133.27634,456.24202 C 128.54134,458.48892 113.59907,457.3248 109.90861,454.42148 C 106.44443,451.69618 101.20748,449.62132 97.793006,449.62132 C 95.645981,449.62132 94.563604,450.35076 93.41513,452.57166 C 92.576006,454.19435 91.88945,456.16759 91.88945,456.95665 C 91.88945,458.60256 87.705714,461.62132 85.424633,461.62132 C 84.580282,461.62132 83.853778,461.50882 83.81018,461.37132 z",name:"Aydın"},10:{path:"M 141.46624,347.76982 C 140.65523,346.20149 138.88495,344.19317 137.53229,343.30687 C 134.64135,341.41265 131.88945,336.32757 131.88945,332.87978 C 131.88945,330.60453 131.63487,330.48854 127.99208,331.10398 C 125.59855,331.50836 123.8394,331.34935 123.43306,330.69188 C 123.06915,330.10307 121.15295,329.62132 119.17482,329.62132 C 116.87917,329.62132 114.39265,328.71703 112.30056,327.12132 C 108.80148,324.45244 105.95898,323.95179 104.21379,325.69698 C 103.44623,326.46454 101.62355,326.32287 97.850526,325.2024 C 92.07415,323.487 86.237687,324.29187 83.883494,327.1285 C 83.20208,327.94955 81.879823,328.62132 80.945145,328.62132 C 80.010466,328.62132 77.478066,329.9588 75.317589,331.5935 C 70.580585,335.1777 70.118789,335.24512 69.709001,332.41231 C 69.51335,331.05981 68.420121,329.93114 66.88945,329.50135 L 64.38945,328.79938 L 66.63945,328.09372 C 67.87695,327.70561 68.88945,327.04514 68.88945,326.62601 C 68.88945,326.20688 70.23945,325.30477 71.88945,324.62132 C 73.53945,323.93787 74.88945,322.75827 74.88945,322 C 74.88945,321.24173 75.56445,320.62132 76.38945,320.62132 C 77.21445,320.62132 77.88945,319.94632 77.88945,319.12132 C 77.88945,318.29632 78.717218,317.62132 79.728935,317.62132 C 81.801855,317.62132 84.128399,313.40759 83.278437,311.19262 C 82.842679,310.05705 80.994307,309.8022 74.805275,310.02434 C 65.938717,310.34259 65.280293,309.71684 69.077508,304.58083 C 70.88161,302.14065 71.983174,301.62132 75.355002,301.62132 C 77.604192,301.62132 80.437188,300.92597 81.650549,300.0761 C 83.644259,298.67965 84.314676,298.68638 88.613831,300.14598 C 91.230274,301.03429 94.180181,302.62963 95.16918,303.6912 C 97.655126,306.35955 100.5256,306.09801 106.52611,302.65644 C 110.09632,300.60876 111.99503,298.7572 112.75232,296.58486 C 114.26515,292.24513 113.13163,281.75403 110.78878,278.41181 C 109.74415,276.92158 108.88945,275.4009 108.88945,275.03252 C 108.88945,273.73627 118.12599,265.7788 120.24486,265.2496 C 121.42438,264.955 124.13885,265.10969 126.277,265.59336 C 129.58662,266.34201 130.73876,266.11027 134.027,264.03449 C 136.1645,262.68515 137.88945,262.10611 137.88945,262.73794 C 137.88945,263.5435 139.67538,263.6776 143.95519,263.19339 C 149.69246,262.54429 149.96617,262.60944 149.00979,264.39647 C 148.45366,265.43561 147.30139,266.86447 146.4492,267.57173 C 144.40986,269.26424 145.36658,278.8271 148.01669,283.23935 C 149.04671,284.95427 149.89933,287.42927 149.91141,288.73935 C 149.92349,290.04944 150.77934,292.98435 151.8133,295.26139 C 153.25337,298.43278 154.53917,299.68064 157.30873,300.59468 C 159.62281,301.3584 161.48329,302.869 162.47736,304.79133 C 163.94093,307.62156 164.32682,307.77534 169.16915,307.45804 C 174.28162,307.12304 174.3129,307.13916 175.30677,310.62132 C 176.88213,316.14081 179.01964,317.87512 183.26529,317.07864 C 187.84674,316.21915 188.99747,318.39724 185.98516,322.22678 C 184.82613,323.70024 183.88945,326.35536 183.88945,328.16729 C 183.88945,331.81276 179.66393,336.22414 175.31238,337.12161 C 173.97977,337.39645 171.76445,337.85489 170.38945,338.14037 C 167.705,338.69772 167.24071,340.54061 168.97047,343.77271 C 169.56503,344.88366 169.84886,345.99524 169.60121,346.24289 C 169.35356,346.49055 164.9296,347.15944 159.77019,347.72933 C 154.61078,348.29921 149.96195,349.18305 149.43945,349.6934 C 148.91695,350.20376 147.24101,350.62132 145.71513,350.62132 C 143.67607,350.62132 142.55001,349.8656 141.46624,347.76982 z M 133.88945,259.94269 C 131.93243,259.35998 127.74982,252.82565 128.88483,252.12418 C 130.0351,251.41327 138.43378,253.31869 141.70516,255.03275 L 144.2796,256.38163 L 140.12436,258.50148 C 137.83898,259.66739 135.8387,260.56912 135.67929,260.50532 C 135.51988,260.44152 134.71445,260.18833 133.88945,259.94269 z M 121.23453,245.07819 C 120.90884,244.22947 120.87675,243.30069 121.16321,243.01423 C 122.17755,241.99988 127.99922,242.33109 129.13595,243.46782 C 130.00728,244.33915 129.76573,244.62132 128.14847,244.62132 C 126.97093,244.62132 125.72937,245.07132 125.38945,245.62132 C 124.44705,247.14615 121.90033,246.81325 121.23453,245.07819 z",name:"Balıkesir"},11:{path:"M 236.86925,316.25782 L 230.38945,314.02059 L 230.4832,308.57095 C 230.53476,305.57366 230.93513,301.40921 231.37291,299.31664 C 231.85808,296.99757 231.75645,294.65475 231.11263,293.31664 C 228.67771,288.25587 228.89804,286.42921 232.44293,282.28781 C 235.4485,278.77647 235.88945,277.57085 235.88945,272.8644 C 235.88945,268.23271 236.30392,267.05301 238.81253,264.5444 C 242.49878,260.85814 243.48962,260.87219 244.23945,264.62132 C 244.68083,266.82823 245.40271,267.62132 246.97009,267.62132 C 248.14195,267.62132 250.45125,268.7577 252.10187,270.1466 C 254.51988,272.18123 255.76101,272.54844 258.48965,272.03654 C 262.60019,271.2654 266.88664,272.21055 266.89715,273.89037 C 266.90139,274.56739 268.70139,276.14726 270.89715,277.40118 C 273.49968,278.88739 274.88945,280.38976 274.88945,281.71692 C 274.88945,282.83666 275.33649,284.58811 275.88288,285.60905 C 276.72162,287.17625 276.43161,287.56297 274.02039,288.09256 C 270.66116,288.83037 266.60161,293.08129 265.88053,296.61614 C 265.56308,298.17229 264.15307,299.68633 262.13294,300.64018 C 260.35168,301.48125 258.19268,303.17109 257.33516,304.39536 C 256.0939,306.16751 254.80379,306.62132 251.00706,306.62132 C 247.31507,306.62132 245.74705,307.144 244.06376,308.93577 C 241.69258,311.45978 241.14386,316.18837 243.13945,316.90108 C 243.82695,317.14662 244.15536,317.60571 243.86925,317.92128 C 243.58314,318.23685 240.43314,317.4883 236.86925,316.25782 z",name:"Bilecik"},12:{path:"M 782.63945,402.53939 C 781.67695,401.97979 780.88945,400.65467 780.88945,399.59468 C 780.88945,398.53469 779.76445,396.9303 778.38945,396.02936 C 775.58728,394.19331 775.12342,391.8525 777.38945,390.98295 C 778.21445,390.66636 778.88945,389.82494 778.88945,389.11311 C 778.88945,388.40128 780.46445,386.8896 782.38945,385.75382 C 786.63411,383.24941 786.84292,380.76392 783.02361,378.20528 C 781.20334,376.98584 780.32716,375.66352 780.61361,374.56814 C 780.86115,373.62153 780.60411,372.56301 780.04241,372.21586 C 778.92365,371.52442 779.47651,365.66024 781.05626,361.46205 C 782.29502,358.17005 780.66548,354.62132 777.91509,354.62132 C 776.86789,354.62132 773.93135,356.42132 771.38945,358.62132 C 768.84755,360.82132 766.17127,362.62132 765.44217,362.62132 C 764.64743,362.62132 763.85905,360.9043 763.4736,358.33389 C 762.63734,352.75735 764.96191,347.566 767.94581,348.34631 C 769.05098,348.63532 770.72792,348.22744 771.67233,347.43991 C 772.61675,346.65238 774.6729,345.45974 776.24156,344.7896 C 778.54948,343.80363 778.98124,343.12317 778.50441,341.22333 C 777.65751,337.849 783.94267,333.64873 790.79066,333.01262 C 795.72378,332.55439 795.88945,332.62259 795.88945,335.11155 C 795.88945,336.56485 796.5972,337.95568 797.51621,338.30833 C 798.41092,338.65167 803.6812,338.26717 809.22794,337.4539 L 819.31293,335.97521 L 821.46586,338.29827 C 822.64997,339.57595 824.46719,340.63934 825.50412,340.66136 C 826.98729,340.69285 826.80285,341.01963 824.63945,342.19329 C 821.24787,344.03326 821.24127,344.59715 824.53258,351.32435 C 826.49364,355.33261 828.171,357.23447 831.03258,358.69434 C 835.60071,361.02482 835.86313,362.24603 832.13945,363.84524 C 830.62695,364.49481 829.27007,365.09205 829.12415,365.17243 C 828.97824,365.25281 828.19074,367.88365 827.37415,371.01874 C 825.61234,377.7828 825.47213,382.24537 826.99191,383.18464 C 827.64543,383.58854 826.81806,384.48413 824.96009,385.38397 C 823.23624,386.21886 820.90949,388.1888 819.78954,389.76163 C 818.66959,391.33446 816.94048,392.62132 815.94708,392.62132 C 814.95368,392.62132 812.39683,393.22912 810.26518,393.97198 C 807.44487,394.95484 804.41137,395.10718 799.12548,394.53141 C 792.25529,393.78306 791.73071,393.87097 789.44866,396.15301 C 788.1216,397.48008 786.89039,399.55559 786.71263,400.76526 C 786.32962,403.37183 785.0385,403.9342 782.63945,402.53939 z",
+    name:"Bingöl"},13:{path:"M 908.88945,432.51896 C 907.51445,430.93174 903.84966,428.29807 900.74548,426.66635 C 897.64129,425.03462 892.97401,421.85824 890.37375,419.60773 C 886.3295,416.10746 885.19372,415.60718 882.51772,416.14738 C 880.79717,416.49471 878.23872,417.59275 876.83228,418.58747 C 874.5023,420.23538 873.92481,420.26742 870.33228,418.94809 C 868.16372,418.1517 864.99441,417.07485 863.28936,416.5551 C 858.73675,415.16732 857.2847,412.92082 855.89899,405.12132 C 854.2551,395.86868 854.18001,395.65282 852.41213,395.09864 C 847.31368,393.50041 847.27804,393.46381 849.8564,392.47313 C 851.21323,391.9518 855.93823,391.29314 860.3564,391.00943 C 872.46733,390.23176 872.2898,390.31241 873.7283,384.93402 C 874.8496,380.74163 874.80612,380.03356 873.36259,378.97802 C 871.87143,377.88765 871.90542,377.68314 873.74113,376.7007 C 874.85039,376.10704 876.81389,375.62132 878.10447,375.62132 C 879.79339,375.62132 880.76831,374.7806 881.58335,372.62132 C 882.29043,370.74804 883.42438,369.62132 884.60259,369.62132 C 885.64036,369.62132 887.0423,369.06847 887.718,368.39277 C 888.41549,367.69528 892.06819,367.07276 896.168,366.95265 C 906.55006,366.64849 917.66728,365.05059 919.39868,363.61366 C 920.2186,362.93318 920.88945,361.47643 920.88945,360.37643 C 920.88945,358.91607 921.22673,358.64306 922.13945,359.3646 C 922.82695,359.9081 924.73945,360.82767 926.38945,361.4081 C 928.33426,362.09224 928.7329,362.49119 927.52282,362.54237 C 926.08652,362.60312 925.7952,363.14004 926.25916,364.87132 C 926.5908,366.10882 926.86829,367.42893 926.8758,367.8049 C 926.88331,368.18087 928.12695,368.63703 929.63945,368.81861 L 932.38945,369.14874 L 929.18686,370.88619 C 926.96448,372.09187 923.10548,372.72346 916.57847,372.94978 C 908.97389,373.21346 905.9008,373.81647 900.53106,376.09863 C 895.09635,378.40842 893.88945,379.33767 893.88945,381.21232 C 893.88945,382.47235 894.33945,383.7814 894.88945,384.12132 C 896.35194,385.02519 896.11018,386.62132 894.51077,386.62132 C 893.7525,386.62132 892.5863,387.93899 891.91921,389.54946 C 891.25213,391.15994 890.07254,392.72082 889.29789,393.01808 C 888.52325,393.31534 887.88945,394.3062 887.88945,395.21999 C 887.88945,396.59532 888.65733,396.79487 892.3486,396.37881 C 895.14882,396.06319 896.94549,396.28945 897.17801,396.987 C 897.44344,397.7833 898.31771,397.74722 900.26592,396.85956 C 904.04106,395.13949 907.88945,395.27163 907.88945,397.12132 C 907.88945,398.05465 908.83389,398.62132 910.38945,398.62132 C 912.54434,398.62132 912.88945,399.07088 912.88945,401.87792 C 912.88945,403.66905 913.30804,406.59405 913.81964,408.37792 C 914.55946,410.95752 914.45713,411.62132 913.31964,411.62132 C 912.39721,411.62132 911.88945,412.6864 911.88945,414.62132 C 911.88945,416.81177 912.36169,417.62134 913.63945,417.6214 C 915.15314,417.62146 915.38945,418.65133 915.38945,425.24799 C 915.38945,431.78613 915.10403,433.05506 913.38945,434.13965 C 911.6362,435.24871 911.08102,435.04876 908.88945,432.51896 z",name:"Bitlis"},14:{path:"M 281.88945,287.07033 C 278.20841,286.15848 277.23155,285.42471 276.52182,283.03846 C 276.04463,281.43403 275.26634,279.35468 274.7923,278.41768 C 274.26028,277.36607 274.34134,276.46007 275.0041,276.05046 C 275.59463,275.6855 275.85423,274.21741 275.58099,272.78805 C 275.26032,271.11056 275.7878,269.29086 277.06884,267.65526 C 278.70385,265.56775 280.14017,265.03323 285.22147,264.62132 L 291.38945,264.12132 L 291.69695,259.87132 L 292.00445,255.62132 L 299.44695,255.62132 C 303.74195,255.62132 306.88945,256.04423 306.88945,256.62132 C 306.88945,257.90175 312.97963,257.91773 316.32435,256.64607 C 318.44571,255.83953 318.8933,255.01783 318.91169,251.89607 C 318.94279,246.61656 321.40533,243.99839 327.0121,243.28372 C 333.88275,242.40795 336.92332,240.70196 337.59447,237.34623 C 337.91312,235.75299 338.67234,234.2971 339.28164,234.11093 C 339.89094,233.92475 345.66654,233.48156 352.11631,233.12606 L 363.84317,232.47969 L 364.51844,236.70264 C 365.29331,241.54841 367.87332,244.62132 371.16694,244.62132 C 372.41957,244.62132 374.46918,245.33908 375.72164,246.21634 C 377.51322,247.47121 377.93387,248.59081 377.69415,251.46634 C 377.40724,254.90789 377.15587,255.15256 373.38945,255.65638 C 366.93884,256.51924 365.02819,258.83173 368.43191,261.65656 C 369.76206,262.76049 369.03941,263.53082 363.18191,267.25299 C 359.44606,269.62696 355.91505,271.581 355.33523,271.59531 C 354.75541,271.60961 352.05541,273.05907 349.33523,274.81631 C 346.03306,276.94953 342.3955,278.29113 338.38945,278.85333 C 323.23193,280.9805 324.15719,281.01326 321.60479,278.25917 C 319.42583,275.90804 318.94067,275.7928 315.5729,276.8264 C 312.55731,277.75191 311.59966,277.67734 310.15001,276.40414 C 305.58983,272.39903 300.88945,273.50789 300.88945,278.58878 C 300.88945,281.44142 298.23504,284.60582 295.81071,284.64328 C 295.02902,284.65536 292.58945,285.4572 290.38945,286.42515 C 287.02623,287.9049 285.67307,288.00761 281.88945,287.07033 z",name:"Bolu"},15:{path:"M 197.88945,502.68034 C 197.88945,502.1628 198.33945,501.46124 198.88945,501.12132 C 200.59038,500.07009 199.99425,497.16787 197.79533,495.79461 C 195.94866,494.64135 195.87028,494.28796 197.13203,492.80407 C 197.91898,491.87856 200.26375,487.97132 202.34264,484.12132 C 204.42152,480.27132 207.42,475.48156 209.00594,473.47742 C 212.46813,469.10224 212.62989,467.25734 209.66723,465.93536 C 207.76798,465.0879 207.4316,464.12098 207.35277,459.28255 C 207.26426,453.84972 207.364,453.62115 209.82499,453.61699 C 211.23544,453.61461 215.98945,451.78486 220.38945,449.55088 C 226.19075,446.60543 229.21396,445.61979 231.38945,445.96459 C 234.91105,446.52275 248.59571,444.84889 250.99094,443.56701 C 252.30875,442.86173 253.37194,443.77447 256.20787,448.04569 C 259.06493,452.34873 260.72138,453.76192 264.57956,455.18794 C 270.83916,457.50154 271.88945,458.37424 271.88945,461.26184 C 271.88945,462.57943 273.64408,466.54564 275.78863,470.07564 C 279.57332,476.30537 279.6328,476.54361 277.81416,478.18946 C 276.78365,479.12205 275.66042,480.76758 275.31808,481.84619 C 274.77499,483.55733 274.10255,483.72447 270.04255,483.15751 C 267.48334,482.80012 263.36901,482.51968 260.89958,482.53429 C 257.68264,482.55333 255.3644,481.83646 252.72267,480.00574 C 247.4622,476.36023 241.55519,475.753 237.86844,478.47873 C 236.27789,479.65467 232.56753,481.51813 229.62318,482.61976 C 221.93215,485.49734 220.59856,486.72678 220.44743,491.07893 C 220.27831,495.94896 217.73176,497.93694 212.74082,497.09516 C 209.60115,496.56562 208.43965,496.97787 204.41422,500.05055 C 199.67573,503.66752 197.88945,504.38748 197.88945,502.68034 z",name:"Burdur"},16:{path:"M 193.88945,318.92086 C 193.06445,318.62245 190.91957,317.70321 189.12306,316.87809 C 187.29081,316.03656 184.62196,315.62482 183.04453,315.9403 C 179.7279,316.60363 177.81542,314.80917 176.29594,309.60818 C 175.28515,306.14837 175.23742,306.12377 170.14303,306.43706 C 165.32151,306.73357 164.91487,306.57115 163.46652,303.77035 C 162.48325,301.86892 160.61376,300.35541 158.30873,299.59468 C 155.53917,298.68064 154.25337,297.43278 152.8133,294.26139 C 151.77934,291.98435 150.92349,288.98395 150.91141,287.59383 C 150.89933,286.2037 150.12141,283.9698 149.18269,282.62959 C 148.24397,281.28937 147.18562,277.92992 146.8308,275.16413 C 146.24299,270.58223 146.46036,269.77941 149.27721,266.12838 C 150.97755,263.92449 152.41581,262.0039 152.47335,261.8604 C 152.75914,261.1476 168.83332,264.05867 171.78331,265.35747 C 174.42856,266.5221 175.97261,266.61972 178.78331,265.80003 C 182.5115,264.71277 187.51012,265.19854 188.46324,266.74072 C 189.42381,268.29495 197.61591,267.77653 198.25108,266.12132 C 198.56766,265.29632 199.7408,264.62132 200.85807,264.62132 C 201.97533,264.62132 202.88945,264.24106 202.88945,263.77631 C 202.88945,262.36763 199.34407,259.62132 197.52553,259.62132 C 196.13812,259.62132 196.01603,259.25333 196.87249,257.653 C 197.68648,256.13205 198.43315,255.87263 200.15768,256.51161 C 201.38515,256.96642 207.89842,257.3572 214.6316,257.38002 C 225.2314,257.41594 227.20143,257.16376 229.31626,255.50023 C 231.74597,253.58902 231.78791,253.59325 237.32411,256.30846 C 243.32369,259.25093 243.98694,260.13822 240.91554,261.11304 C 237.20337,262.29124 234.88945,266.5009 234.88945,272.07618 C 234.88945,276.57077 234.41651,277.81385 231.33827,281.41007 C 228.17623,285.10421 227.86178,285.97316 228.46866,289.34007 C 228.84353,291.41976 229.59256,293.67889 230.13319,294.36036 C 230.67381,295.04183 230.81975,297.17933 230.45748,299.11036 C 229.80351,302.59633 229.76178,302.62109 224.59414,302.58952 C 221.61235,302.5713 218.5604,301.93065 217.44832,301.08952 C 214.15125,298.59574 211.88945,299.2139 211.88945,302.60878 C 211.88945,305.01596 211.09766,306.09606 207.81302,308.16957 C 205.28874,309.76308 203.15176,312.14761 202.20063,314.43211 C 200.12186,319.42508 198.18118,320.47322 193.88945,318.92086 z",name:"Bursa"},17:{path:"M 37.70422,313.12212 C 36.925933,312.32184 39.867496,305.62132 40.99711,305.62132 C 42.269906,305.62132 43.737719,299.3488 43.805194,293.62132 C 43.840831,290.59632 44.451435,286.11435 45.162091,283.6614 C 46.382966,279.44733 46.660376,279.19431 50.194444,279.07159 C 53.876077,278.94374 56.786379,276.67241 56.857647,273.87132 C 56.875138,273.18382 57.56445,272.62132 58.38945,272.62132 C 59.358976,272.62132 59.8897,271.64878 59.890156,269.87132 C 59.890743,267.58541 60.349095,267.09471 62.606176,266.96366 C 64.102532,266.87677 66.172962,265.75447 67.218201,264.46366 C 68.261391,263.17537 69.471095,262.12132 69.906432,262.12132 C 70.341768,262.12132 72.545412,260.46282 74.803418,258.43577 C 78.419643,255.18942 79.354606,254.81865 82.649167,255.32453 C 84.706323,255.6404 86.933518,256.3262 87.598491,256.84853 C 89.079884,258.01215 94.361865,256.96195 95.81119,255.21562 C 96.454752,254.44017 98.937077,253.98954 102.13029,254.06848 C 107.23335,254.19463 107.38084,254.27937 107.09947,256.92349 C 106.85591,259.21229 107.53117,260.08653 111.31786,262.38491 C 113.79747,263.88993 115.84046,265.43761 115.85784,265.8242 C 115.87523,266.21078 114.08945,267.97359 111.88945,269.74156 C 107.56123,273.21981 106.88968,275.85911 109.57726,278.82885 C 110.53095,279.88267 111.58264,283.3872 111.9952,286.88611 C 112.9917,295.33754 111.58546,298.38038 105.03567,301.94522 C 99.840846,304.7726 96.578907,304.8604 95.558142,302.20033 C 95.274303,301.46066 92.493601,300.05388 89.378804,299.07415 C 84.075186,297.40596 83.536621,297.39853 80.898202,298.95708 C 79.348667,299.87241 76.274499,300.62132 74.066717,300.62132 C 70.587767,300.62132 69.775039,301.07037 67.971009,303.98935 C 66.826152,305.84177 65.88945,308.00402 65.88945,308.79435 C 65.88945,309.80304 63.72864,310.58287 58.63945,311.41086 C 47.946961,313.15048 38.484048,313.92399 37.70422,313.12212 z M 47.907647,273.94624 C 47.917656,273.49254 49.267656,271.1411 50.907647,268.72084 C 53.868453,264.35135 54.57813,261.64333 53.13945,260.20465 C 51.530495,258.5957 52.513472,257.03832 56.369446,255.08723 C 58.580448,253.96847 61.28945,252.56091 62.38945,251.95931 C 67.13933,249.36155 72.167441,247.62132 74.923377,247.62132 C 76.554717,247.62132 77.88945,247.17132 77.88945,246.62132 C 77.88945,246.07132 78.67695,245.60701 79.63945,245.58952 C 84.587412,245.4996 86.553568,239.51814 82.38945,237.22345 C 81.28945,236.61728 80.212825,236.01969 79.996949,235.89549 C 79.781074,235.77128 80.173674,234.98378 80.869394,234.14549 C 81.652694,233.20167 83.813104,232.62132 86.54328,232.62132 C 91.907524,232.62132 93.161557,234.63832 89.933588,238.07434 C 88.610534,239.48266 87.858211,241.36716 88.05762,242.77346 C 88.348624,244.82571 87.572084,245.44776 81.889996,247.71408 C 78.314696,249.1401 75.50195,250.8276 75.63945,251.46408 C 75.77695,252.10056 75.203312,252.62132 74.364699,252.62132 C 73.526086,252.62132 72.403949,253.76809 71.87106,255.16969 C 71.314735,256.63293 69.438243,258.32973 67.464192,259.15454 C 65.573303,259.9446 63.715506,261.09375 63.335754,261.7082 C 62.956002,262.32265 61.131166,263.45803 59.280564,264.23126 C 56.753301,265.28722 55.974773,266.18191 56.152641,267.82588 C 56.33108,269.47514 55.341883,270.60084 52.13945,272.3929 C 49.80195,273.70095 47.897639,274.39995 47.907647,273.94624 z M 23.0294,267.28995 C 21.942416,265.98021 22.197542,265.51336 24.710383,264.21392 C 26.339735,263.37135 29.634078,262.55583 32.031145,262.40165 C 36.122471,262.13849 36.372815,262.27068 36.117889,264.55955 C 35.75289,267.83671 35.657021,267.89312 29.599006,268.3955 C 25.648575,268.7231 23.98671,268.44344 23.0294,267.28995 z",name:"Çanakkale"},18:{path:"M 442.38945,283.69166 C 440.18945,282.63121 436.81445,281.30884 434.88945,280.75305 C 432.96445,280.19727 429.58945,279.06001 427.38945,278.22582 C 423.12293,276.60805 414.88945,276.08398 414.88945,277.43019 C 414.88945,277.87507 414.29004,279.0588 413.55744,280.0607 C 412.30048,281.77968 412.04346,281.70446 408.99635,278.72582 C 407.22036,276.98973 405.29598,274.21733 404.71995,272.56492 C 404.14391,270.91252 402.3714,268.88767 400.78103,268.06526 C 397.79237,266.51976 397.15589,265.19272 398.88945,264.12132 C 400.57948,263.07682 399.99681,260.62132 398.05893,260.62132 C 397.05214,260.62132 394.01464,259.4982 391.30893,258.12551 C 388.60322,256.75281 384.70195,255.62781 382.63945,255.62551 C 379.05135,255.6215 378.88945,255.47633 378.88945,252.2629 C 378.88945,249.30287 379.53953,248.47285 384.36966,245.26582 C 387.73767,243.02959 390.09005,240.67024 390.47302,239.14437 C 391.01118,237.00018 391.37494,236.81078 393.14027,237.75556 C 396.01397,239.29351 402.48673,237.26933 403.18067,234.61568 C 403.62294,232.92444 404.54846,232.62132 409.27015,232.62132 C 414.54621,232.62132 414.92473,232.79169 416.49095,235.87132 C 417.40002,237.65882 418.32364,239.32089 418.54345,239.56481 C 418.76326,239.80873 420.25566,238.57123 421.8599,236.81481 C 424.68323,233.72366 425.03771,233.62132 432.92098,233.62132 L 441.06525,233.62132 L 440.41128,237.87132 C 440.0516,240.20882 439.51196,243.58382 439.21209,245.37132 L 438.66687,248.62132 L 443.55565,248.62132 C 449.45327,248.62132 452.34472,250.44074 453.89047,255.12442 C 454.52522,257.04772 455.35905,258.62132 455.74343,258.62132 C 456.12781,258.62132 456.27064,260.42132 456.06084,262.62132 C 455.80494,265.30467 456.07975,266.62132 456.89571,266.62132 C 457.7491,266.62132 457.91187,267.68827 457.44121,270.19712 C 457.03912,272.34042 457.2143,274.30781 457.87847,275.1081 C 458.68941,276.08521 458.68883,276.62727 457.87633,277.12943 C 457.26569,277.50682 456.35981,278.88417 455.86326,280.19021 C 455.35675,281.52244 453.35485,283.23568 451.30282,284.09307 C 446.76818,285.98776 447.1926,286.00688 442.38945,283.69166 z",name:"Çankırı"},19:{path:"M 458.13945,304.30261 C 456.90195,302.48483 455.88945,300.38236 455.88945,299.63044 C 455.88945,296.64789 453.25617,291.02108 450.88945,288.94641 L 448.38945,286.7549 L 452.18296,285.15651 C 454.26939,284.2774 456.25029,282.78484 456.58496,281.83972 C 456.91963,280.8946 457.89257,279.30865 458.74706,278.31538 C 459.89927,276.97604 460.03091,276.07175 459.25657,274.81538 C 458.68232,273.88365 458.41402,271.43382 458.66037,269.37132 C 458.96541,266.81731 458.71368,265.62132 457.87105,265.62132 C 456.98769,265.62132 456.81678,264.47727 457.27346,261.62132 C 457.63625,259.35253 457.50873,257.62132 456.97882,257.62132 C 456.46497,257.62132 455.52522,256.04772 454.89047,254.12442 C 454.25573,252.20113 452.7707,249.95113 451.59042,249.12442 C 449.52879,247.6804 449.52197,247.61751 451.41694,247.52443 C 452.50182,247.47114 455.11844,247.50854 457.23166,247.60755 C 459.34487,247.70656 462.43157,247.22519 464.09098,246.53784 C 466.84361,245.39767 467.06429,244.96152 466.60838,241.56248 C 466.33354,239.51338 465.1124,236.48932 463.89473,234.84233 C 461.01821,230.95164 461.77966,227.52575 466.79569,221.79037 C 470.28793,217.7973 471.04396,217.41843 476.48644,216.93414 C 481.98429,216.44492 482.91568,216.69359 490.05626,220.55709 C 495.69243,223.6066 497.98078,225.44455 498.69604,227.49634 C 499.27685,229.16246 500.90891,230.80096 502.74538,231.56165 C 505.69416,232.78307 505.79849,233.02852 505.26056,237.47862 C 504.95189,240.03211 504.05421,243.56654 503.26571,245.33291 C 501.73034,248.7724 502.17401,252.59453 504.55039,256.40019 C 505.82292,258.43809 506.48991,258.61055 510.85781,258.03113 C 515.24112,257.44966 516.01093,257.65189 518.36129,260.00225 C 519.80178,261.44274 521.5224,262.63451 522.1849,262.65063 C 522.8474,262.66676 524.90059,264.05387 526.74753,265.73311 L 530.10561,268.78626 L 527.67967,271.45379 C 523.71535,275.81291 521.67567,279.69582 522.23221,281.82405 C 522.51967,282.92327 522.27298,284.88021 521.68403,286.17282 C 520.82211,288.06453 519.71468,288.58138 516.00733,288.82217 L 511.40145,289.12132 L 510.39545,296.01278 C 509.32272,303.36136 509.16092,303.53888 502.13945,305.07104 C 499.46435,305.65478 498.88945,305.47805 498.88945,304.07194 C 498.88945,302.58988 498.1958,302.45568 493.65147,303.0585 C 490.77058,303.44066 486.93249,304.45612 485.12239,305.31507 C 482.11254,306.74334 481.36479,306.73007 476.37271,305.15987 C 471.04256,303.48334 470.83461,303.49209 467.53376,305.53213 C 462.85774,308.42207 460.75668,308.14708 458.13945,304.30261 z",name:"Çorum"},20:{path:"M 184.76463,500.8011 C 182.04115,498.36768 181.50748,497.22334 181.70794,494.24679 C 182.0552,489.0904 179.68384,485.28166 173.91684,481.73319 C 171.15178,480.03183 168.88945,478.18565 168.88945,477.63056 C 168.88945,477.07548 168.28419,476.62132 167.54444,476.62132 C 165.6156,476.62132 162.88945,473.30986 162.88945,470.96689 C 162.88945,469.86857 161.80738,467.9534 160.48485,466.71095 C 159.16233,465.4685 157.78176,462.86084 157.41694,460.91616 C 156.8258,457.76511 157.11466,457.07142 160.07154,454.54116 C 161.89639,452.9796 164.85195,451.19892 166.63945,450.58409 C 168.42695,449.96926 169.88945,448.82001 169.88945,448.0302 C 169.88945,447.24039 170.39278,445.78823 171.00795,444.80318 C 171.93145,443.32443 171.58275,442.46847 169.00795,439.89367 C 164.97949,435.86521 164.69881,431.12094 168.38945,429.43937 C 171.68377,427.93838 171.51957,426.72589 167.5364,423.14023 L 164.22482,420.15914 L 167.56879,415.50458 C 169.55699,412.73715 171.90799,410.65977 173.36747,410.38077 C 174.71756,410.12268 180.39371,410.29808 185.98112,410.77054 C 195.26979,411.55596 196.41786,411.45786 199.38279,409.62543 C 203.536,407.05861 204.11363,407.09763 207.79283,410.19348 C 209.6057,411.7189 211.77339,412.63453 213.11956,412.44348 C 215.00304,412.17616 215.54819,411.22759 216.32194,406.87132 C 216.83481,403.98382 217.78662,401.62132 218.43708,401.62132 C 219.08754,401.62132 220.79269,400.69867 222.2263,399.57099 C 224.40768,397.85512 225.2045,397.71238 227.11116,398.69596 C 231.06483,400.73551 233.88945,403.88828 233.88945,406.26171 C 233.88945,407.52217 234.67521,410.20121 235.63557,412.21513 L 237.3817,415.87679 L 232.53131,420.14491 C 229.8636,422.49237 226.49034,424.68084 225.03519,425.00816 C 220.51861,426.02414 217.05545,429.71349 216.32566,434.28656 C 215.70849,438.15387 215.86598,438.55782 218.52756,439.93418 C 220.10419,440.74949 222.20104,442.30814 223.18722,443.39786 C 224.94013,445.3348 224.85162,445.45175 219.23356,448.62239 C 216.07287,450.40617 211.83368,452.08737 209.81315,452.35838 L 206.13945,452.85113 L 206.13945,459.26794 C 206.13945,464.79763 206.43323,465.83734 208.26445,466.78849 C 209.4332,467.39555 210.5562,468.03552 210.76,468.21066 C 210.96381,468.3858 209.77873,470.23734 208.12649,472.32521 C 206.47425,474.41307 203.42152,479.27132 201.34264,483.12132 C 199.26375,486.97132 196.9664,490.82616 196.2374,491.68763 C 195.5084,492.54911 194.31026,494.99188 193.57486,497.11601 C 192.83947,499.24015 191.29872,501.60159 190.15098,502.36366 C 188.27005,503.61256 187.73867,503.45841 184.76463,500.8011 z",name:"Denizli"},21:{path:"M 765.88945,467.92092 C 761.30638,467.02037 760.59452,465.68898 761.1979,459.1463 C 761.89967,451.53681 760.86434,446.24017 758.58953,445.80208 C 757.64331,445.61985 755.34496,446.41275 753.48207,447.56407 L 750.09502,449.65739 L 744.74633,445.09183 C 741.58332,442.39194 737.65926,440.08855 735.14355,439.45508 C 732.80379,438.86593 730.88945,438.19648 730.88945,437.96742 C 730.88945,437.73836 731.66841,436.36212 732.62046,434.90909 C 734.32037,432.31471 734.31205,432.27755 732.15723,432.84104 C 729.19515,433.61564 727.39447,431.41471 728.81647,428.75768 C 730.68539,425.26557 727.88791,421.74294 724.79877,423.69853 C 721.8473,425.56695 721.12372,424.66119 722.76592,421.15389 C 723.66125,419.24169 725.1479,417.67184 726.08043,417.65389 C 727.01047,417.63597 728.04953,417.17132 728.38945,416.62132 C 729.28938,415.1652 732.95431,415.39348 738.7553,417.26699 C 743.83296,418.90689 743.86466,418.9035 747.8004,416.29895 C 749.97268,414.8614 753.80637,413.16743 756.31972,412.53456 C 760.42245,411.50148 760.88945,411.08944 760.88945,408.50261 C 760.88945,406.9179 761.22695,405.61567 761.63945,405.60877 C 768.72744,405.49016 786.49599,404.36449 787.09169,403.99633 C 787.53046,403.72515 787.88945,402.6503 787.88945,401.60776 C 787.88945,400.56522 788.95522,398.64646 790.25783,397.34385 C 792.47968,395.12199 793.06968,395.02285 799.79385,395.74132 C 805.11845,396.31026 808.01309,396.13616 811.0512,395.06425 C 813.30054,394.27064 815.81199,393.62132 816.6322,393.62132 C 817.45241,393.62132 819.8261,391.8669 821.90706,389.72261 C 826.32147,385.17386 831.29335,383.59665 833.6835,385.9868 C 835.47012,387.77342 838.88741,396.23239 838.88864,398.87132 C 838.88908,399.83382 838.32695,400.63093 837.63945,400.64267 C 835.72642,400.67535 830.83429,408.18639 830.20656,412.0546 C 829.7963,414.58276 830.2446,416.4599 831.89727,419.13397 C 833.66943,422.00138 833.9297,423.23391 833.12481,424.94713 C 828.2115,435.40514 826.27878,438.84638 824.24589,440.75619 C 821.30429,443.51968 821.11206,447.60527 823.88945,448.33157 C 824.98945,448.61923 825.88945,449.2121 825.88945,449.64906 C 825.88945,450.72655 820.02692,455.59387 818.56272,455.73201 C 815.15496,456.05351 812.09439,455.28665 809.57084,453.479 C 805.84381,450.80928 803.88945,451.68424 803.88945,456.02255 C 803.88945,459.96667 801.80407,461.20075 796.94327,460.13314 C 794.49789,459.59604 793.68742,459.97556 791.78512,462.54856 C 789.01168,466.29984 787.05358,467.03339 779.38945,467.19221 C 776.08945,467.26059 772.26445,467.56306 770.88945,467.86435 C 769.51445,468.16565 767.26445,468.19111 765.88945,467.92092 z",name:"Diyarbakır"},22:{path:"M 67.514349,238.91289 C 67.163412,238.56195 63.091855,238.17004 58.466445,238.04198 C 47.052527,237.72598 45.88945,237.27093 45.88945,233.12132 C 45.88945,230.63435 46.411411,229.59043 47.88945,229.12132 C 48.98945,228.77219 49.88945,228.01885 49.88945,227.44722 C 49.88945,226.06237 59.994244,216.62132 61.476454,216.62132 C 63.03967,216.62132 64.158182,210.65005 62.882818,209.11333 C 62.325175,208.44141 62.07271,205.91833 62.321784,203.50649 C 62.570858,201.09465 62.800477,198.3927 62.832048,197.50216 C 62.869904,196.43434 64.117452,195.68373 66.495862,195.29776 C 68.479389,194.97588 70.660209,193.9495 71.342129,193.01692 C 72.052809,192.04501 74.034711,191.27864 75.985717,191.22132 L 79.38945,191.12132 L 79.38945,181.37228 C 79.38945,174.75482 79.024082,171.62293 78.252012,171.62228 C 77.626421,171.62175 76.051421,170.2754 74.752012,168.63039 C 73.452603,166.98539 71.710196,165.63538 70.879997,165.63039 C 70.049798,165.6254 68.808484,164.72132 68.121523,163.62132 C 67.121901,162.02067 67.123789,161.20767 68.130976,159.54973 C 69.177497,157.82704 70.039852,157.57941 73.251213,158.07942 C 77.690502,158.77062 79.88945,157.45948 79.88945,154.12132 C 79.88945,150.55115 82.162752,149.52646 90.812158,149.1979 L 98.88945,148.89107 L 98.88945,157.17947 C 98.88945,164.56147 98.616057,165.79278 96.38945,168.43895 C 93.365207,172.03306 93.248456,173.44865 95.895511,174.42786 C 97.810095,175.13611 97.741694,175.41811 94.395511,180.61191 C 90.622421,186.46835 90.014633,190.56006 92.072474,196.25092 C 92.974297,198.74487 92.979144,200.12905 92.092866,202.07421 C 90.781252,204.9529 85.770114,208.40477 81.618641,209.28929 C 78.217572,210.01393 77.087455,211.593 79.145592,212.74479 C 80.365538,213.4275 80.50254,214.38003 79.809847,217.36311 C 78.559845,222.74624 78.692893,228.02476 80.114409,229.44628 C 81.081022,230.41289 81.081022,231.08492 80.114409,232.63271 C 79.440682,233.71152 78.88945,235.27529 78.88945,236.10775 C 78.88945,237.17619 77.840797,237.62132 75.323709,237.62132 C 73.362551,237.62132 70.946718,238.05549 69.955191,238.58614 C 68.963665,239.11679 67.865286,239.26382 67.514349,238.91289 z",name:"Edirne"},23:{path:"M 741.65956,417.05809 C 741.34978,416.74832 738.72235,415.86862 735.82081,415.10321 C 731.10962,413.86043 730.24565,413.88855 727.74435,415.3661 C 725.05283,416.95603 724.84492,416.92812 722.42168,414.6516 C 720.17193,412.53806 719.51958,412.39927 716.37353,413.36482 C 713.059,414.38208 712.62403,414.2367 709.13373,410.94492 C 705.68658,407.69384 705.25363,407.54388 703.09529,408.85348 C 701.052,410.09328 699.82041,410.01288 692.93178,408.19 C 688.62061,407.04918 684.14743,405.25978 682.99137,404.21356 C 680.31875,401.79486 680.29259,397.47144 682.93612,395.07908 C 684.06179,394.06037 685.66056,391.79858 686.48895,390.05289 C 687.92245,387.03201 688.21503,386.90369 692.55428,387.39279 L 697.11346,387.90667 L 696.41356,383.764 C 695.93182,380.91261 696.07038,379.62132 696.85809,379.62132 C 697.58766,379.62132 697.38398,378.57421 696.29622,376.73279 C 694.06547,372.95641 694.99701,370.07333 697.93918,371.64793 C 699.56711,372.51918 699.76951,373.06091 698.8714,374.14307 C 698.1786,374.97784 698.03055,376.43555 698.49761,377.82333 C 699.25629,380.07757 699.43117,380.86031 699.73714,383.37132 C 699.96376,385.23119 702.88945,384.88552 702.88945,382.99888 C 702.88945,381.62638 703.13545,381.58059 704.48623,382.70164 C 705.83053,383.81731 706.22937,383.7653 707.0087,382.37272 C 708.15099,380.33156 714.80386,380.86633 716.49969,383.13563 C 718.02811,385.1809 718.88945,384.99553 718.88945,382.62132 C 718.88945,380.18623 720.18695,380.06168 722.40877,382.2835 C 723.60374,383.47847 724.27283,383.61903 724.78917,382.78357 C 725.31787,381.92812 726.01959,382.00888 727.44842,383.08959 C 728.51599,383.89706 730.17695,384.57202 731.13945,384.58952 C 732.10195,384.60701 732.88945,385.06601 732.88945,385.60953 C 732.88945,386.15305 733.90049,386.49055 735.13622,386.35953 C 738.91912,385.95845 738.71959,390.28264 734.80437,393.55121 C 728.85227,398.52024 734.14593,399.8241 742.65641,395.48522 C 747.11488,393.21216 751.48752,393.08069 752.66475,395.1843 C 754.00924,397.58676 758.5673,396.04101 759.35146,392.91666 C 760.03222,390.20429 759.2319,388.5021 758.08508,390.22322 C 756.9498,391.92702 753.72788,392.73212 752.41272,391.64064 C 751.73995,391.08228 749.74362,390.79379 747.97644,390.99955 C 746.20925,391.20531 743.67026,390.86688 742.33422,390.24749 C 737.12278,387.83145 740.92866,382.42202 749.06808,380.67643 C 751.77398,380.09612 754.52824,379.61825 755.18867,379.61449 C 756.89925,379.60475 760.88945,373.41712 760.88945,370.77426 C 760.88945,369.55144 760.20431,367.5053 759.36692,366.22728 C 757.99952,364.14036 758.00383,363.77128 759.4093,362.60484 C 760.59463,361.62111 761.25501,361.58688 762.13183,362.4637 C 764.27427,364.60614 767.73932,363.64598 772.38945,359.62132 C 774.93135,357.42132 777.41789,355.62132 777.91509,355.62132 C 779.3979,355.62132 780.78008,359.05983 779.93531,360.64714 C 778.64204,363.07722 777.76428,372.42592 778.77097,373.0481 C 779.28287,373.36447 779.50299,374.41036 779.26013,375.37232 C 778.97302,376.5095 779.87938,377.82094 781.85113,379.12132 C 783.51904,380.22132 784.88499,381.474 784.88657,381.90505 C 784.88816,382.33609 783.31445,383.61804 781.38945,384.75382 C 779.46445,385.8896 777.88945,387.44942 777.88945,388.2201 C 777.88945,388.99077 777.45528,389.62132 776.92463,389.62132 C 776.39398,389.62132 775.43674,390.59869 774.79743,391.79326 C 773.78386,393.68714 774.02028,394.29526 776.64416,396.54326 C 778.29917,397.96119 779.8768,400.08607 780.14999,401.26521 C 780.61302,403.26368 780.14876,403.45575 773.30504,404.09706 C 769.26712,404.47545 765.4927,404.49415 764.91746,404.13863 C 762.70912,402.7738 759.88945,404.69808 759.88945,407.56999 C 759.88945,410.08109 759.39253,410.50902 755.2715,411.5467 C 752.73163,412.18625 749.02717,413.81467 747.03937,415.16542 C 743.24638,417.74282 742.57905,417.97759 741.65956,417.05809 z",name:"Elazığ"},24:{path:"M 695.36395,365.87656 C 693.25556,362.41176 689.15655,360.95478 684.18887,361.90441 C 682.71891,362.18542 681.03769,362.23175 680.45283,362.00739 C 678.94607,361.42935 679.19682,345.3522 680.72051,344.8443 C 682.44343,344.26999 682.14215,340.65552 680.31285,339.95355 C 677.98527,339.06038 676.68193,334.92648 678.04152,332.74943 C 678.82913,331.48825 678.85903,330.38938 678.14065,329.10571 C 677.0433,327.14484 679.60317,319.70086 682.46093,316.54258 C 684.58953,314.19014 684.19596,312.08201 681.38945,310.80327 C 678.58566,309.52578 678.16582,307.46677 680.34101,305.66152 C 681.47567,304.71984 682.56712,304.73691 685.34036,305.73973 C 688.10082,306.73792 689.15459,306.75618 690.0888,305.82197 C 690.74916,305.16161 693.0107,304.62132 695.11445,304.62132 C 698.55625,304.62132 698.99899,304.32364 699.53372,301.64997 C 700.0546,299.04559 700.37411,298.81033 702.12078,299.74512 C 703.21681,300.3317 705.23885,300.59652 706.61419,300.33361 C 708.97803,299.88173 718.68346,303.67347 728.15652,308.74981 C 730.2284,309.86007 733.1534,310.65687 734.65652,310.52046 C 736.15963,310.38405 738.88217,310.61833 740.70661,311.04109 C 743.09031,311.59343 744.49733,311.3944 745.70661,310.33381 C 746.63217,309.52205 748.28945,308.57771 749.38945,308.23527 C 750.48945,307.89284 752.41718,306.02268 753.67331,304.07937 C 754.92943,302.13606 756.98371,300.15578 758.23837,299.67876 C 764.93654,297.13212 780.61042,297.30035 778.0197,299.89107 C 774.87024,303.04053 779.38574,307.62132 785.63979,307.62132 C 789.1306,307.62132 790.88945,309.24023 790.88945,312.45329 C 790.88945,315.25134 794.26904,321.16927 796.31539,321.95453 C 797.0774,322.24694 797.99798,323.83898 798.36114,325.49241 C 798.8065,327.52012 799.89506,328.81841 801.70543,329.48103 L 804.38945,330.46343 L 801.88945,330.61538 C 800.51445,330.69895 796.97371,331.11063 794.02115,331.53022 C 789.23605,332.21024 788.35127,332.03935 785.87679,329.95722 C 782.42667,327.05413 773.81233,326.73672 768.40863,329.31356 C 765.05695,330.91187 764.58274,330.90612 759.86588,329.20996 C 754.2185,327.17919 751.40729,327.66953 752.16154,330.55379 C 752.5289,331.95859 752.00875,332.62555 750.18976,333.08208 C 748.83084,333.42315 746.65541,334.84982 745.35549,336.25247 C 742.81501,338.99369 740.88945,338.69612 740.88945,335.5623 C 740.88945,333.20891 739.60691,333.10512 736.41006,335.19977 C 735.08509,336.06792 731.83842,336.89367 729.19524,337.03477 C 726.55206,337.17587 723.12266,337.81557 721.57435,338.45632 C 720.02605,339.09707 718.12702,339.62132 717.35429,339.62132 C 716.58156,339.62132 714.95123,340.97132 713.73133,342.62132 C 712.51143,344.27132 710.92296,345.62132 710.20139,345.62132 C 709.47982,345.62132 708.88945,346.10164 708.88945,346.68871 C 708.88945,347.29417 708.04027,347.48658 706.92722,347.13331 C 703.99819,346.20367 700.70931,348.3438 701.07877,350.93898 C 701.29795,352.47858 702.19938,353.21451 704.13945,353.43774 C 707.89951,353.87038 707.59045,355.23838 703.38945,356.75748 C 701.46445,357.45357 699.88945,358.31337 699.88945,358.66815 C 699.88945,359.02292 698.22155,359.21193 696.18301,359.08817 C 693.66643,358.93538 692.20754,358.2602 691.63851,356.98496 C 690.71834,354.92279 684.88945,351.16021 684.88945,352.6284 C 684.88945,353.13114 685.60684,354.12271 686.48364,354.83189 C 687.36045,355.54108 689.13511,357.17219 690.42733,358.45658 C 692.05749,360.07687 693.4079,360.59155 694.83806,360.13763 C 697.32436,359.34851 698.1749,361.03339 697.68441,365.77612 L 697.33845,369.12132 L 695.36395,365.87656 z",name:"Erzincan"},25:{path:"M 847.97054,347.74073 C 843.44593,341.07795 841.39517,340.16434 833.24872,341.18217 C 829.57312,341.64141 827.88945,341.50141 827.88945,340.73654 C 827.88945,340.12317 827.15355,339.62132 826.25412,339.62132 C 825.35469,339.62132 823.53544,338.45237 822.21135,337.02365 C 820.53167,335.21124 819.13667,334.58611 817.59668,334.95569 C 809.89764,336.8034 798.66206,337.79393 797.58781,336.71968 C 795.77833,334.9102 798.09433,332.17076 801.7403,331.80796 C 805.52153,331.43171 805.99134,328.93598 802.44834,328.04674 C 800.77856,327.62766 799.80084,326.49437 799.35405,324.46012 C 798.99479,322.82445 798.0774,321.24694 797.31539,320.95453 C 795.26904,320.16927 791.88945,314.25134 791.88945,311.45329 C 791.88945,308.24023 790.1306,306.62132 786.63979,306.62132 C 783.63398,306.62132 777.88945,304.10979 777.88945,302.79564 C 777.88945,301.0846 780.46404,299.62132 783.47457,299.62132 C 788.57754,299.62132 800.88945,288.68806 800.88945,284.1565 C 800.88945,282.37928 798.78698,282.12379 797.20232,283.70845 C 796.41947,284.4913 795.92712,284.4913 795.4433,283.70845 C 795.07376,283.11053 793.68881,282.62132 792.36562,282.62132 C 791.01053,282.62132 789.50771,281.77655 788.92463,280.68706 C 787.47818,277.98434 787.63401,276.62132 789.38945,276.62132 C 791.1294,276.62132 791.39778,273.52965 789.79681,271.92868 C 789.00662,271.13849 789.03984,270.1835 789.9168,268.47868 C 791.69825,265.01556 797.06008,259.62132 798.72095,259.62132 C 800.46392,259.62132 804.88945,255.02996 804.88945,253.22167 C 804.88945,251.91705 810.67582,248.98164 814.38184,248.40622 C 815.47765,248.23607 816.93334,246.9303 817.6167,245.50451 L 818.85918,242.91216 L 823.87432,245.39412 C 828.72967,247.79701 828.88945,248.01279 828.88945,252.16692 C 828.88945,254.52687 829.16259,257.16955 829.49644,258.03953 C 830.47517,260.59006 833.65099,259.8637 836.10951,256.52701 C 839.49662,251.93006 842.40403,250.71077 847.12249,251.90844 C 850.71337,252.8199 851.28849,252.67682 853.691,250.27432 C 855.88834,248.07698 856.36586,246.61497 856.57674,241.43909 C 856.94515,232.39652 858.34097,231.30698 868.39042,232.21764 C 875.29405,232.84323 876.64722,233.30837 879.80594,236.14166 C 881.77687,237.90952 884.35178,239.65506 885.52796,240.02064 C 886.70414,240.38621 888.81748,241.75205 890.22427,243.05582 C 892.56698,245.22697 892.6932,245.74821 891.72516,249.25417 C 891.14385,251.35949 890.93765,255.37431 891.26693,258.176 C 891.81329,262.8247 891.62629,263.49044 889.12754,265.79228 C 884.55593,270.00363 881.59166,271.62066 878.41694,271.63497 C 870.88374,271.66895 869.06432,274.03133 872.85747,278.85354 C 874.11789,280.4559 876.26905,281.58631 878.84037,281.99748 C 881.5103,282.42442 883.37999,283.44034 884.42168,285.03016 C 885.28321,286.34503 887.74669,288.58461 889.89606,290.007 C 892.04543,291.42938 894.26905,293.46209 894.83743,294.52411 C 895.75598,296.24045 895.12287,296.82553 889.14111,299.7882 C 885.02719,301.82575 882.27313,303.84464 882.05573,304.9822 C 881.65291,307.08995 887.8096,313.95703 892.13945,316.22942 C 893.78893,317.0951 894.88945,318.50105 894.88945,319.74263 C 894.88945,322.70015 891.30295,327.3352 886.82925,330.15933 C 883.89475,332.01179 882.55829,333.80799 881.18672,337.74287 C 879.03423,343.91807 874.96582,348.61244 871.73824,348.64506 C 870.44641,348.65811 866.68945,349.78103 863.38945,351.14042 C 854.11526,354.96083 852.65496,354.63885 847.97054,347.74073 z",
+    name:"Erzurum"},26:{path:"M 326.88945,360.68457 C 326.06445,360.20281 322.75998,359.12326 319.54617,358.28556 C 312.94718,356.56548 309.88945,354.31124 309.88945,351.16633 C 309.88945,345.93439 305.52156,345.34358 297.60987,349.50537 C 294.12509,351.33847 291.20513,352.21316 289.59684,351.90572 C 287.74102,351.55095 286.76693,351.98173 285.94278,353.52166 C 284.7128,355.81992 278.57519,356.53988 277.33395,354.53151 C 276.93086,353.8793 275.31988,353.69319 273.3219,354.06801 C 270.49797,354.59779 269.73116,354.30937 268.34696,352.19682 C 267.44692,350.82319 265.81723,349.41579 264.72542,349.06926 C 262.21442,348.2723 258.3707,339.74007 259.85432,338.25645 C 260.42364,337.68713 260.88945,335.65577 260.88945,333.74232 C 260.88945,331.04364 260.10443,329.54428 257.38945,327.05745 C 255.17188,325.02624 253.88945,322.93258 253.88945,321.34344 C 253.88945,318.67875 252.28341,317.62132 248.23623,317.62132 C 245.49738,317.62132 242.88945,315.54628 242.88945,313.36706 C 242.88945,310.38761 247.34659,307.62132 252.1472,307.62132 C 255.79905,307.62132 257.10512,307.1515 258.33516,305.39536 C 259.19268,304.17109 261.3557,302.48116 263.14187,301.63997 C 265.2738,300.63595 266.50923,299.26308 266.73813,297.64363 C 268.06834,288.23249 286.43858,284.61697 288.19915,293.4198 C 288.89661,296.90714 292.41766,298.20343 297.38945,296.80324 C 301.7485,295.57563 315.50739,296.05935 317.24484,297.5013 C 318.05495,298.17364 321.56325,299.03819 325.04105,299.42253 C 331.2909,300.11321 331.38805,300.17143 333.40849,304.43751 C 334.73321,307.2346 336.60969,309.31406 338.74008,310.34584 L 342.0275,311.93799 L 339.45848,314.32012 C 336.38643,317.16868 336.35768,317.41153 338.77934,320.05687 C 341.3014,322.81188 346.18566,334.48521 346.12851,337.62132 C 346.10346,338.99632 345.75895,341.37459 345.36293,342.90636 C 344.84376,344.91446 345.12958,346.22917 346.38746,347.61912 C 348.65015,350.11937 347.79154,352.1909 344.19433,352.91034 C 342.61748,353.22571 339.24725,355.3147 336.70494,357.55253 C 332.1046,361.60191 329.74806,362.35387 326.88945,360.68457 z",name:"Eskişehir"},27:{path:"M 635.88945,523.62132 C 631.6241,521.28614 629.88945,521.14158 629.88945,523.12132 C 629.88945,525.9649 627.04207,524.6138 625.92936,521.24224 C 624.49761,516.904 622.38858,515.07332 617.24534,513.70432 C 613.98132,512.83552 612.95533,512.01937 612.41421,509.86129 C 612.03635,508.35431 610.80439,506.26103 609.67652,505.20957 C 607.09885,502.80653 604.60914,504.08878 603.88594,508.19184 C 603.4983,510.39107 602.61344,511.26902 600.04096,512.0068 C 598.20316,512.53387 595.41239,514.25222 593.83926,515.82535 C 591.10919,518.55543 590.82909,518.62215 587.68424,517.29147 C 585.87211,516.52471 583.57308,514.98042 582.57531,513.85972 C 578.2058,508.95192 585.15521,497.83699 595.72108,492.83429 C 599.07782,491.24495 601.4004,489.40762 601.98007,487.88297 C 603.26893,484.49302 605.00974,485.43537 607.68077,490.9689 C 610.72404,497.27361 612.22568,497.66705 616.71,493.33461 C 622.24459,487.98747 630.98613,482.62132 634.1621,482.62132 C 637.48166,482.62132 641.88945,478.65435 641.88945,475.66677 C 641.88945,474.36374 642.54278,473.62132 643.68945,473.62132 C 644.67945,473.62132 646.01882,473.09195 646.66582,472.44495 C 647.56765,471.54312 648.2745,471.65981 649.69456,472.94495 C 650.71337,473.86695 652.8615,474.62746 654.46819,474.63497 C 659.36659,474.65787 661.88945,475.72002 661.88945,477.75939 C 661.88945,478.81059 660.79112,480.16463 659.43857,480.7809 C 658.00142,481.4357 656.72873,483.07658 656.36163,484.74799 C 656.0173,486.31571 655.3202,487.8551 654.81251,488.16887 C 653.36043,489.06631 653.73383,497.00463 655.4177,501.03469 C 656.30351,503.15474 657.98501,505.08735 659.4177,505.63206 C 660.77716,506.14893 661.88945,507.20652 661.88945,507.98226 C 661.88945,508.75801 662.56168,510.68164 663.38329,512.25701 C 665.20909,515.75783 665.29807,517.62125 663.63945,517.62155 C 662.95195,517.62167 659.91445,518.95382 656.88945,520.58187 C 653.73074,522.28188 649.81824,523.55885 647.69847,523.58164 C 645.66843,523.60346 643.72937,524.07132 643.38945,524.62132 C 642.46412,526.11853 639.80256,525.76366 635.88945,523.62132 z",name:"Gaziantep"},28:{path:"M 702.38945,298.61617 C 701.28945,298.13779 698.21951,297.4608 695.56737,297.11177 C 692.7633,296.74274 689.90646,295.63833 688.7409,294.47277 C 687.56378,293.29565 685.01399,292.31831 682.56299,292.10476 C 680.26754,291.90476 676.36445,291.0958 673.88945,290.30706 L 669.38945,288.87298 L 669.71278,284.33929 C 669.90949,281.58102 669.41998,278.61415 668.46278,276.76312 C 667.59745,275.08976 666.88945,271.4768 666.88945,268.73434 C 666.88945,263.83971 666.8297,263.74228 663.63945,263.43468 C 660.87037,263.16769 660.33973,262.68441 660.05348,260.1687 C 659.86869,258.54475 659.07918,256.74475 658.29902,256.1687 C 657.08959,255.27568 657.17635,254.34494 658.88775,249.85333 C 662.1496,241.29253 662.72393,240.70582 667.56686,240.98719 C 669.91529,241.12363 672.14859,241.54713 672.52976,241.92829 C 672.91092,242.30946 676.00304,242.62132 679.40113,242.62132 C 684.29269,242.62132 685.9534,242.20814 687.37481,240.63749 C 688.63888,239.24072 689.89222,238.83489 691.61023,239.26609 C 693.26543,239.68152 694.97639,239.19382 696.92939,237.74991 C 698.51288,236.57919 700.41169,235.62132 701.14896,235.62132 C 701.88623,235.62132 702.91695,235.2241 703.43945,234.73861 C 703.96195,234.25313 706.71663,233.64758 709.56096,233.39295 L 714.73246,232.92999 L 715.18895,239.02565 C 715.44002,242.37827 715.81285,246.00403 716.01745,247.0829 C 716.27798,248.45668 715.49048,249.50679 713.38945,250.58729 C 709.09195,252.79738 699.06787,263.06224 698.32787,266.01067 C 697.48398,269.37297 698.28965,270.38272 702.78133,271.59221 C 704.87542,272.15609 708.01183,273.9774 709.75112,275.63956 L 712.91348,278.66168 L 710.45377,279.59687 C 707.09892,280.87238 704.73848,284.7811 704.14537,290.04312 C 703.74152,293.62608 704.0316,294.76261 705.71861,296.20707 C 709.01993,299.03375 706.89139,300.57404 702.38945,298.61617 z",name:"Giresun"},29:{path:"M 741.88945,309.63415 C 741.88945,309.05883 739.95177,308.84304 737.24498,309.11694 C 733.87519,309.45791 731.61097,309.05779 728.99498,307.65902 C 727.01194,306.59869 722.01445,304.18229 717.88945,302.28925 C 707.75342,297.63763 704.4948,294.44066 705.23572,289.87492 C 706.00687,285.12292 708.47687,281.66111 711.9635,280.44566 C 713.57277,279.88467 714.88945,279.19288 714.88945,278.90837 C 714.88945,277.3846 706.93735,271.44203 703.7497,270.58369 C 697.4118,268.87707 697.96403,266.39012 706.54009,258.01721 C 709.51307,255.11466 713.30507,252.0616 714.96676,251.23264 C 717.90848,249.76512 718.1687,249.84231 724.84988,254.16434 C 728.6239,256.60574 732.93549,259.06853 734.4312,259.63719 C 735.9269,260.20586 738.39886,261.55992 739.92443,262.64623 C 744.82627,266.13665 747.72171,264.59022 748.809,257.90104 C 749.13222,255.91254 750.00502,254.0828 750.74854,253.83496 C 751.78181,253.49053 751.93899,254.11929 751.41548,256.50283 C 750.82421,259.19486 751.00811,259.62132 752.7603,259.62132 C 753.87668,259.62132 755.19369,260.34255 755.68701,261.22406 C 757.02012,263.6062 760.44317,262.53753 760.15124,259.83033 C 759.80511,256.62058 761.49541,257.12507 763.31621,260.77496 C 765.35954,264.87091 765.35709,267.01475 763.30999,266.2292 C 756.53505,263.62941 748.95977,276.27864 752.89174,283.6256 C 753.7322,285.19602 753.08636,286.17944 748.89174,289.7164 C 744.58856,293.34489 743.88945,294.43977 743.88945,297.55045 C 743.88945,300.6574 744.38222,301.43189 747.38945,303.05139 C 751.51892,305.27525 751.79036,306.3571 748.43047,307.20038 C 747.07803,307.53982 745.44793,308.4484 744.80802,309.21943 C 743.45996,310.84375 741.88945,311.06691 741.88945,309.63415 z",name:"Gümüşhane"},30:{path:"M 1001.2037,487.37132 C 997.67738,481.88705 997.3506,477.62132 1000.4568,477.62132 C 1004.1355,477.62132 1000.8939,469.93895 996.42793,468.07295 C 989.75631,465.28537 983.97482,466.62627 982.48964,471.30566 C 981.69701,473.803 978.88162,474.59274 970.88945,474.5596 C 959.87631,474.51394 955.80503,473.40301 952.26441,469.47742 C 948.56938,465.38061 947.72487,463.0028 949.45492,461.56698 C 950.46292,460.73042 950.77807,459.3907 950.38637,457.60731 C 949.90036,455.3945 950.42946,454.35437 953.34191,451.7972 C 955.45285,449.94378 956.89097,447.75889 956.8932,446.40187 C 956.89808,443.43174 963.44482,440.62517 970.39996,440.61155 C 975.66798,440.60124 984.28972,437.26908 986.75276,434.29147 C 988.88457,431.71427 990.10343,433.39531 989.34743,437.87002 C 988.68799,441.77322 988.74624,441.88844 991.02687,441.19198 C 992.32629,440.79517 995.38014,440.05342 997.8132,439.54366 C 1000.2463,439.03389 1002.9463,438.00459 1003.8132,437.25633 C 1006.5624,434.88348 1011.5174,434.49945 1013.9517,436.47057 C 1015.8806,438.03256 1015.9835,438.49795 1014.8137,440.37104 C 1013.7094,442.13935 1013.7094,442.9163 1014.8138,444.97979 C 1015.6288,446.50269 1015.8964,448.7712 1015.5062,450.85073 C 1014.9775,453.66904 1015.3502,454.77711 1017.7192,457.43054 C 1019.286,459.18547 1020.9778,460.63343 1021.4787,460.64822 C 1021.9796,460.66302 1023.9645,462.00736 1025.8895,463.63564 C 1028.2218,465.60844 1029.0061,466.85058 1028.2403,467.35874 C 1027.6083,467.77816 1026.9333,469.24632 1026.7403,470.62132 C 1026.4395,472.76529 1025.8717,473.12132 1022.7535,473.12132 C 1019.7591,473.12132 1018.259,473.96382 1014.2535,477.89501 C 1006.452,485.55163 1003.0983,488.62132 1002.5345,488.62132 C 1002.2446,488.62132 1001.6458,488.05882 1001.2037,487.37132 z",name:"Hakkari"},31:{path:"M 562.76082,585.97743 C 562.36305,584.6209 560.98585,583.58177 559.01082,583.14798 C 556.76653,582.65505 555.88945,581.89229 555.88945,580.43346 C 555.88945,578.7243 555.46028,578.51222 553.1666,579.08789 C 550.48271,579.76151 550.4701,579.74217 552.28513,577.7366 C 553.61763,576.2642 553.93643,574.93081 553.43873,572.91161 C 552.64154,569.6774 546.30507,557.99622 544.8651,557.10627 C 543.18758,556.06951 543.78287,554.10497 546.85132,550.55143 C 548.48036,548.66487 550.16786,546.80435 550.60132,546.41694 C 555.72077,541.84146 559.95446,538.60501 562.56858,537.26856 C 566.23541,535.39392 566.7814,534.00014 566.54595,527.11517 C 566.31936,520.48909 563.19586,515.22318 558.48087,513.51822 C 554.33537,512.01918 554.22265,511.71417 556.79418,508.95396 C 558.40411,507.2259 559.4094,507.0173 563.28947,507.60615 C 565.81428,507.98932 568.76415,509.10294 569.84475,510.08086 C 571.27474,511.37499 572.70516,511.69087 575.10048,511.24151 C 577.99164,510.69912 578.72234,511.03873 581.11435,514.03654 C 582.61191,515.91338 585.42395,517.97265 587.36332,518.6127 C 591.36912,519.93473 591.48916,520.16447 589.3118,522.34182 C 588.4441,523.20953 587.94764,524.73584 588.20857,525.73363 C 588.4695,526.73141 588.04016,528.08128 587.25448,528.73333 C 586.45977,529.39289 585.86688,531.51663 585.91815,533.5201 C 585.96885,535.50077 585.70513,538.98718 585.33212,541.26767 C 584.63061,545.55651 586.12993,549.52181 590.17012,554.06286 C 593.0918,557.34675 591.95046,559.1133 586.86401,559.18 C 582.59366,559.236 580.20618,559.80531 576.88945,561.55851 C 575.8508,562.10753 575.37144,564.01862 575.33089,567.77209 C 575.26154,574.19247 574.5762,575.61367 571.88845,574.91081 C 570.49856,574.54734 569.88945,574.88066 569.88945,576.00469 C 569.88945,576.91951 569.07437,577.62132 568.01189,577.62132 C 565.35165,577.62132 564.08819,579.53585 563.71396,584.134 C 563.47021,587.12898 563.233,587.58776 562.76082,585.97743 z",name:"Hatay"},32:{path:"M 281.07356,475.87132 C 276.72711,469.74826 272.88945,462.3996 272.88945,460.19976 C 272.88945,457.37605 271.81547,456.49278 265.57956,454.18794 C 261.70196,452.75474 260.06672,451.35144 257.14295,446.94791 C 254.18021,442.48571 253.13845,441.60205 251.45283,442.12141 C 239.42608,445.82697 238.18344,445.39827 241.94046,438.83973 C 244.12225,435.03103 246.14052,432.97443 249.17772,431.46502 C 251.49417,430.31381 254.73945,427.55388 256.38945,425.33186 C 258.67527,422.25358 261.02866,420.63073 266.27522,418.51483 C 270.06239,416.98748 274.78739,414.43112 276.77522,412.83403 C 278.76304,411.23693 281.80524,409.19831 283.53565,408.30377 C 285.26606,407.40922 287.51606,405.54597 288.53565,404.16322 C 290.48176,401.52394 296.88945,399.47241 296.88945,401.48861 C 296.88945,402.10311 298.19607,403.7701 299.79306,405.19302 C 301.40274,406.62726 302.9769,409.27393 303.32553,411.13227 C 303.78689,413.59155 305.89144,416.30053 311.22685,421.30286 C 315.22671,425.05301 318.85084,428.70353 319.28047,429.41512 C 320.42526,431.3112 318.05135,433.62132 314.95813,433.62132 C 313.4806,433.62132 311.3982,434.28201 310.33058,435.08952 C 309.26296,435.89702 307.58783,436.57202 306.60807,436.58952 C 303.51207,436.64479 303.57476,439.45582 306.78349,444.45619 C 308.49177,447.11831 309.88945,450.08204 309.88945,451.04224 C 309.88945,452.00244 308.26602,454.36463 306.28182,456.29155 C 303.22041,459.26458 302.76651,460.2566 303.2839,462.84359 C 303.61924,464.52029 303.42533,467.63121 302.85299,469.75673 C 301.93671,473.15953 301.45166,473.62132 298.79373,473.62132 C 294.36583,473.62132 287.12432,475.63339 285.79724,477.23242 C 284.1436,479.22494 283.27683,478.97518 281.07356,475.87132 z M 283.88945,440.69275 C 283.88945,439.63203 284.65099,438.00264 285.58176,437.07187 C 286.72201,435.93162 287.27407,433.74199 287.27407,430.35965 C 287.27407,426.09606 286.86459,425.01323 284.55629,423.17266 C 283.06152,421.98077 282.14821,420.6959 282.52671,420.31739 C 282.90521,419.93889 283.36146,418.29047 283.54058,416.65424 C 284.02628,412.21763 280.99856,410.93559 277.37944,414.04541 C 274.9911,416.09765 274.71669,416.88691 275.30368,420.0158 C 275.6757,421.99883 276.52219,423.62821 277.18476,423.63663 C 277.84734,423.64505 279.01144,424.04588 279.77164,424.52735 C 280.94629,425.2713 280.94717,425.86963 279.77753,428.51204 C 279.02056,430.22214 278.06108,431.62132 277.64534,431.62132 C 277.2296,431.62132 276.88945,432.97132 276.88945,434.62132 C 276.88945,436.27132 277.3491,437.62132 277.91089,437.62132 C 278.47268,437.62132 279.44491,438.74632 280.0714,440.12132 C 281.41808,443.07695 283.88945,443.44683 283.88945,440.69275 z",name:"Isparta"},33:{path:"M 372.38945,568.09404 L 369.38945,566.61229 L 369.46502,556.87262 L 369.5406,547.13295 L 375.96502,545.33436 C 379.49846,544.34513 384.05812,543.55104 386.0976,543.56971 C 391.33125,543.61761 394.76984,542.06611 395.87555,539.15789 C 396.68607,537.02604 397.27153,536.74774 399.85761,537.26495 C 404.56195,538.20582 403.71308,535.40397 397.94268,530.94438 C 395.00307,528.67253 392.36569,525.59154 391.44268,523.35108 C 388.96827,517.34482 389.28507,516.62132 394.38945,516.62132 C 396.86445,516.62132 398.88945,517.07132 398.88945,517.62132 C 398.88945,519.76816 401.50741,518.47181 402.50402,515.83148 C 403.37314,513.52893 404.63147,512.74292 409.70816,511.33148 C 413.09126,510.39089 417.60536,509.62132 419.73949,509.62132 C 422.13728,509.62132 424.61557,508.83799 426.2263,507.57099 C 428.27048,505.96304 429.2563,505.74729 430.79542,506.57099 C 434.44294,508.52309 437.22242,507.63959 445.91837,501.76394 C 452.71445,497.17199 456.16607,495.55003 461.8952,494.25623 C 470.09601,492.40425 471.88886,491.32674 471.89077,488.24888 C 471.89175,486.65401 473.16388,485.55766 476.9716,483.87008 C 485.82022,479.94838 486.58402,479.95455 488.25811,483.96122 C 489.52378,486.9904 490.26186,487.53596 493.45998,487.80629 C 498.09756,488.1983 499.82662,490.50168 498.01888,493.87948 C 496.28504,497.11919 497.78603,503.00407 500.45262,503.42134 C 501.51788,503.58803 503.34555,504.19708 504.51412,504.77477 C 506.39333,505.70378 506.50999,506.16637 505.52389,508.77885 C 504.57571,511.29086 504.75056,512.32609 506.69313,515.70137 C 509.20065,520.05827 508.91512,521.59186 505.58043,521.67776 C 504.37539,521.70881 501.81445,522.28076 499.88945,522.94878 C 496.75946,524.03495 496.03111,523.92326 492.9999,521.89233 C 487.83209,518.42987 481.10468,518.99667 475.85846,523.33654 C 470.66288,527.63452 466.8577,530.53636 463.13945,533.0361 C 460.80195,534.60757 458.88945,536.17748 458.88945,536.52479 C 458.88945,536.8721 456.86445,539.26954 454.38945,541.85243 C 451.26471,545.11337 449.88752,547.40014 449.88313,549.33495 C 449.87843,551.40436 449.075,552.57772 446.76073,553.89506 C 443.90144,555.52263 443.54711,555.5354 442.46102,554.05009 C 440.82943,551.81876 436.69652,552.60378 435.30314,555.40969 C 433.58677,558.86602 430.79024,560.55424 426.72278,560.58952 C 424.70612,560.60701 422.88159,561.14489 422.66829,561.7848 C 422.40952,562.56112 418.1774,563.05673 409.9502,563.27419 C 403.01196,563.45758 397.04477,564.07745 396.30466,564.69169 C 395.58125,565.29206 392.49451,565.89973 389.44522,566.04205 C 385.98952,566.20335 383.21,566.92624 382.06652,567.96108 C 379.81098,570.00231 376.34932,570.04988 372.38945,568.09404 z",name:"Mersin"},34:{path:"M 210.10993,235.38932 C 208.9156,234.14192 205.90749,231.32132 203.42522,229.12132 C 200.94296,226.92132 198.90694,224.77488 198.90073,224.35145 C 198.89453,223.92802 199.98889,221.83996 201.33264,219.71131 C 202.6764,217.58266 203.50416,215.56936 203.17211,215.23731 C 202.84006,214.90526 203.38536,213.73082 204.3839,212.62745 C 206.8154,209.94068 211.35909,210.05385 220.22148,213.02191 C 224.16386,214.34224 230.65195,216.19072 234.63945,217.12963 C 238.62695,218.06855 241.88945,219.04287 241.88945,219.29478 C 241.88945,220.67795 239.64444,223.62132 238.58946,223.62132 C 237.91316,223.62132 235.69864,224.51167 233.6683,225.59986 C 230.21668,227.44982 229.79451,227.47381 227.1725,225.96898 C 224.53559,224.4556 224.15998,224.48505 220.87884,226.46242 C 218.51455,227.88725 216.90467,229.91818 215.88594,232.76114 C 214.06427,237.84489 212.94753,238.35303 210.10993,235.38932 z M 199.96203,233.98646 C 197.69977,231.11046 197.33386,229.62132 198.88945,229.62132 C 199.43945,229.62132 199.88945,230.041 199.88945,230.55393 C 199.88945,231.06687 200.78945,231.77219 201.88945,232.12132 C 202.98945,232.47045 203.88945,233.62577 203.88945,234.68871 C 203.88945,237.36701 202.41359,237.10312 199.96203,233.98646 z M 182.13945,224.86951 C 178.27874,224.61014 176.88945,224.11706 176.88945,223.0062 C 176.88945,222.12872 176.156,221.61166 175.13945,221.77251 C 174.17695,221.92481 172.23728,221.28225 170.82908,220.3446 C 165.04233,216.49154 154.60535,214.63824 149.53963,216.56422 C 147.6245,217.29235 146.92634,217.15983 146.47453,215.98243 C 145.3296,212.9988 145.93925,210.83785 149.84855,204.02299 C 157.13638,191.31851 157.40464,190.67592 156.21539,188.77163 C 155.40835,187.47935 155.44994,186.57529 156.37457,185.31078 C 157.54854,183.70528 157.71183,183.70387 159.0078,185.28807 C 163.27953,190.50982 192.89483,207.2103 200.07165,208.44454 C 204.00229,209.12051 204.00469,209.1238 202.07323,211.19533 C 201.00965,212.33604 200.13945,214.51372 200.13945,216.03462 C 200.13945,219.12818 196.97525,222.99952 196.18622,220.87132 C 195.4244,218.81651 193.6137,219.45885 194.1701,221.58653 C 194.90659,224.40288 191.01222,225.4656 182.13945,224.86951 z",name:"İstanbul"},35:{path:"M 91.220802,426.84727 C 90.578046,426.43838 89.903046,424.54866 89.720802,422.64789 C 89.432845,419.64453 88.96087,419.10503 86.116896,418.52831 C 84.316991,418.16332 81.655726,416.58216 80.202974,415.01461 C 78.091643,412.73645 76.692134,412.16019 73.228714,412.14292 C 70.207533,412.12786 68.894857,411.70038 68.892636,410.73085 C 68.890884,409.96609 67.909685,407.37859 66.712195,404.98085 C 64.728088,401.00806 64.205433,400.62132 60.820603,400.62132 C 57.692633,400.62132 57.007212,401.01598 56.478806,403.12132 C 55.741191,406.06021 51.902423,406.68465 51.868099,403.87132 C 51.844459,401.93377 44.407043,396.1834 43.027463,397.03602 C 42.548567,397.332 41.41025,396.74929 40.497868,395.74112 C 38.978711,394.06247 38.973874,393.79614 40.440437,392.579 C 41.735157,391.50448 42.193397,391.49508 42.832965,392.52992 C 44.387192,395.04472 52.88945,388.75332 52.88945,385.08845 C 52.88945,384.25795 51.821878,383.09202 50.517067,382.49751 C 49.065665,381.83621 47.706933,379.9555 47.017067,377.65293 C 45.480376,372.52391 45.596597,370.88459 47.575421,369.77718 C 50.217886,368.29839 53.601515,370.44443 55.293078,374.67207 C 56.124741,376.7506 57.27415,378.74104 57.847321,379.09528 C 59.366803,380.03437 59.122586,382.62132 57.51445,382.62132 C 56.71445,382.62132 56.13945,383.66677 56.13945,385.12132 C 56.13945,386.49632 56.5332,387.62132 57.01445,387.62132 C 57.4957,387.62132 57.88945,388.71976 57.88945,390.0623 C 57.88945,391.40484 58.33945,392.7814 58.88945,393.12132 C 59.452266,393.46916 59.88945,392.66737 59.88945,391.28733 C 59.88945,387.26123 64.803063,386.96599 64.874137,390.98782 C 64.882559,391.46439 67.92695,391.57459 71.63945,391.23272 C 75.35195,390.89084 79.51445,390.62277 80.88945,390.63699 C 83.989789,390.66907 87.88945,388.68919 87.88945,387.08305 C 87.88945,386.29459 85.780769,385.83508 81.743689,385.74382 C 75.087455,385.59336 73.533606,384.53367 72.349852,379.33744 C 72.001044,377.8063 70.629759,375.84204 69.302552,374.97243 C 67.555821,373.82792 66.88945,372.47679 66.88945,370.07963 C 66.88945,366.3555 68.833883,365.32827 72.711063,367.00412 C 75.375308,368.15571 77.215785,366.37279 76.489015,363.34433 C 76.156977,361.96072 77.039596,361.30603 80.476012,360.38693 C 82.903403,359.7377 84.88945,358.6766 84.88945,358.02893 C 84.88945,356.20798 80.287057,353.62132 77.047078,353.62132 C 75.445072,353.62132 73.592061,352.96791 72.929276,352.16931 C 71.352091,350.26892 72.473394,346.88815 74.940602,346.10508 C 77.670455,345.23866 77.366239,342.0072 74.262641,338.9036 L 71.635831,336.27679 L 75.012641,333.45032 C 76.869886,331.89575 79.51445,330.32423 80.88945,329.95805 C 82.26445,329.59186 84.51445,328.46831 85.88945,327.46126 C 89.079136,325.12515 92.214191,324.89235 98.14035,326.55158 C 102.19558,327.68697 103.15716,328.47097 104.82233,331.99957 C 105.97877,334.45013 106.94341,339.09811 107.20148,343.46314 C 107.78331,353.3041 106.04553,355.53004 96.819943,356.76095 C 91.586475,357.45922 89.971541,358.13106 88.144417,360.37013 C 85.268089,363.89495 85.312571,365.68242 88.38945,370.21646 C 89.76445,372.24263 90.88945,374.9922 90.88945,376.32661 C 90.88945,380.23258 92.593606,382.34324 96.310283,383.04049 C 98.221549,383.39905 101.60845,385.21559 103.83672,387.07726 C 106.06499,388.93893 109.26883,390.76537 110.95636,391.13602 C 112.64388,391.50666 114.28573,392.55498 114.6049,393.46562 C 115.62875,396.38678 119.94724,401.62132 121.33335,401.62132 C 122.82746,401.62132 123.88945,399.48451 123.88945,396.47826 C 123.88945,394.68826 124.34414,394.56369 128.63945,395.1769 C 133.9748,395.9386 134.5468,396.29039 135.0528,399.12132 C 135.3385,400.7197 136.41233,401.22258 140.40036,401.62556 C 145.54463,402.14538 151.07743,405.23553 152.87386,408.59219 C 154.40738,411.4576 152.16174,416.95208 149.76254,416.20476 C 148.73234,415.88387 147.00523,415.34796 145.92452,415.01386 C 144.38131,414.53678 143.59036,415.18066 142.2393,418.01386 C 141.29315,419.99796 139.81487,421.68943 138.95424,421.77268 C 138.0936,421.85593 134.91445,422.05886 131.88945,422.22364 C 128.86445,422.38842 123.5204,422.81313 120.01379,423.16744 C 114.49718,423.72483 113.25631,423.52934 110.80429,421.71648 C 106.40156,418.4614 102.846,418.99566 98.127115,423.62132 C 93.900486,427.76446 93.186707,428.09786 91.220802,426.84727 z",name:"İzmir"},36:{path:"M 896.08991,294.16195 C 895.4736,292.80929 893.17357,290.51418 890.97873,289.0617 C 888.78389,287.60923 886.29893,285.36901 885.45659,284.08345 C 884.48139,282.59511 882.41075,281.44659 879.75618,280.92163 C 875.77809,280.13492 870.6467,275.53073 872.11338,274.06405 C 872.43788,273.73956 875.14273,273.14303 878.12415,272.73844 C 883.46734,272.01336 887.59468,269.82319 891.25888,265.76853 C 892.77469,264.09121 892.99816,262.83191 892.44023,259.11141 C 892.06179,256.58775 892.03269,253.24563 892.37558,251.68448 C 892.973,248.96442 893.30606,248.81726 900.36105,248.15615 L 907.7231,247.46627 L 908.3592,242.29379 C 909.6435,231.85033 909.69328,231.75031 914.21506,230.52656 C 925.43996,227.4887 926.59065,226.69362 928.02894,220.98163 C 928.77013,218.03812 929.65693,216.63165 930.75816,216.65312 C 932.80973,216.69312 935.88945,218.97946 935.88945,220.46251 C 935.88945,221.0789 937.12695,221.87794 938.63945,222.23816 C 943.14291,223.31071 946.88945,225.92141 946.88945,227.98701 C 946.88945,229.05098 948.08558,232.28377 949.54752,235.17101 C 952.05218,240.11754 952.13048,240.68879 950.90422,245.06857 C 950.18846,247.625 948.31733,251.09277 946.74615,252.77473 C 943.50392,256.24554 943.21035,257.81283 945.45374,259.67467 C 946.45943,260.50933 946.80573,261.81877 946.42351,263.34165 C 945.85604,265.60263 948.46114,271.62132 950.00723,271.62132 C 950.38484,271.62132 951.14036,272.90233 951.68616,274.46801 C 952.58506,277.0466 952.39255,277.48363 949.64209,279.10837 C 947.81001,280.19061 944.48046,280.93275 941.24755,280.97948 C 936.3579,281.05016 935.88945,281.25646 935.88945,283.33913 C 935.88945,285.1068 935.32583,285.62132 933.38945,285.62132 C 931.88988,285.62132 930.88945,286.19278 930.88945,287.04936 C 930.88945,288.04065 929.13083,288.68987 925.13945,289.17206 C 921.97695,289.55412 918.26445,290.44626 916.88945,291.15459 C 913.30401,293.00161 901.61075,296.62132 899.22947,296.62132 C 898.05519,296.62132 896.74165,295.59235 896.08991,294.16195 z",name:"Kars"},37:{path:"M 440.22047,246.00424 C 440.52306,244.96863 441.07421,241.53382 441.44526,238.37132 L 442.1199,232.62132 L 432.95692,232.62132 C 424.39557,232.62132 423.63721,232.79045 421.40665,235.19726 L 419.01935,237.7732 L 417.42872,234.69726 C 415.94789,231.83365 415.46197,231.62132 410.38945,231.62132 C 405.37183,231.62132 404.82057,231.38881 403.42084,228.68202 C 402.58486,227.06541 400.93521,225.06635 399.75496,224.23968 C 397.9942,223.00639 397.71527,222.08209 398.20086,219.08974 C 398.95941,214.41533 400.39972,212.73509 405.63945,210.41201 C 410.31347,208.33974 410.8682,207.2155 407.97955,205.66954 C 406.83595,205.05751 405.80293,203.06869 405.40489,200.7127 C 404.6311,196.13267 403.41841,195.45001 397.49777,196.26153 C 392.2058,196.98687 390.77595,195.43549 393.78468,192.23284 C 396.38803,189.46171 396.39923,188.5409 393.88945,183.62132 C 391.19639,178.3425 391.34477,177.62656 395.13945,177.59005 C 396.92695,177.57285 400.63945,176.45196 403.38945,175.09919 C 406.13945,173.74642 408.89596,172.63549 409.51502,172.63046 C 410.13408,172.62543 413.1209,171.52441 416.1524,170.18374 C 421.51414,167.81252 421.83745,167.78667 428.02683,169.23419 C 431.52627,170.05261 440.68945,171.10711 448.38945,171.57754 C 456.08945,172.04796 463.11277,172.72378 463.99682,173.07934 C 466.26617,173.99208 468.15847,181.06952 467.37424,185.71133 L 466.71768,189.5975 L 473.76148,189.35941 C 479.26464,189.1734 481.17632,189.49097 482.50167,190.81134 C 484.07732,192.38107 484.08163,192.67907 482.56227,194.9979 C 481.66259,196.371 479.69683,198.08549 478.19393,198.80788 C 474.74188,200.46716 473.16487,206.10403 474.82244,210.85895 C 475.78203,213.61163 475.6925,214.29217 474.23004,215.36154 C 473.28247,216.05442 471.78849,216.62132 470.91008,216.62132 C 468.45825,216.62132 461.83367,225.19022 461.18228,229.20423 C 460.74586,231.89358 461.12911,233.4542 462.77148,235.67563 C 463.96185,237.28569 465.19223,239.8852 465.50565,241.45231 C 465.9933,243.89058 465.66245,244.4727 463.21218,245.48764 C 461.63734,246.13996 458.33298,246.62733 455.86915,246.57069 C 453.40531,246.51405 448.75264,246.78708 445.52988,247.17743 C 440.09655,247.83553 439.71032,247.75018 440.22047,246.00424 z",name:"Kastamonu"},38:{path:"M 525.38945,457.03474 C 522.63945,456.36296 518.8825,455.77011 517.04067,455.71732 L 513.6919,455.62132 L 515.7045,452.21021 C 517.40349,449.33064 517.64208,447.57758 517.2356,440.96021 C 516.66815,431.72201 515.16583,429.56111 508.7082,428.69459 C 505.03944,428.2023 504.3077,427.69755 503.52799,425.12132 C 501.23483,417.54455 500.66353,416.62132 498.26813,416.62132 C 494.26673,416.62132 495.47541,413.53496 501.63945,408.01263 L 507.38945,402.86125 L 506.01406,399.49129 C 505.25759,397.63781 504.4227,394.67459 504.15874,392.90636 C 503.89479,391.13813 503.1242,389.23111 502.44633,388.66852 C 501.28454,387.70432 501.68568,384.82081 504.50484,373.87132 C 504.8703,372.45192 508.88945,372.13674 508.88945,373.52748 C 508.88945,374.02587 511.17775,374.74837 513.97457,375.13303 C 518.55594,375.76313 519.32367,375.5806 521.72457,373.29048 C 523.19025,371.89242 525.62695,370.28107 527.13945,369.70969 C 529.9106,368.66283 530.92702,365.3806 528.87314,364.11124 C 527.00222,362.95495 528.89406,361.74304 533.66276,361.04303 C 536.99375,360.55405 539.4976,359.35588 542.14233,356.98525 C 544.20642,355.13509 546.27417,353.62132 546.73734,353.62132 C 548.19246,353.62132 550.88701,357.1941 550.94478,359.20006 C 550.97521,360.25675 552.41917,362.24632 554.15359,363.62132 C 556.82761,365.74121 558.57114,366.17507 565.62103,366.47487 C 570.48335,366.68164 574.45841,366.39402 575.19575,365.78207 C 575.99203,365.12123 576.99681,365.07743 577.92299,365.66321 C 580.30214,367.16794 584.15987,366.75382 587.66362,364.61758 C 592.17874,361.86471 594.17446,362.10902 595.72149,365.60399 C 596.66157,367.72779 598.15659,368.92068 600.91334,369.74662 C 605.70483,371.18219 606.60948,373.25408 603.89342,376.57182 C 602.74549,377.97405 601.03749,380.78576 600.09786,382.82008 C 599.15824,384.8544 597.37032,386.98527 596.12472,387.55535 C 594.87912,388.12543 593.35947,389.6904 592.74771,391.03305 C 591.8395,393.02636 592.00276,394.08402 593.63754,396.79778 C 595.73425,400.27835 595.58063,402.54159 593.15054,403.97265 C 592.11646,404.58161 591.88641,405.79158 592.34248,408.22265 C 592.95155,411.46928 592.84689,411.62132 590.00286,411.62132 C 586.73402,411.62132 584.30018,414.28622 581.55487,420.87132 C 579.6428,425.45775 577.4856,425.69115 576.26736,421.44341 C 575.33525,418.19334 570.98899,414.83084 567.54382,414.69441 C 563.43266,414.5316 558.63331,419.92166 552.9192,431.11902 C 551.95627,433.00597 549.58589,434.96833 546.52195,436.41509 C 543.84483,437.67919 541.00018,439.36773 540.20052,440.16739 C 539.40086,440.96705 538.02667,441.62132 537.14676,441.62132 C 536.26686,441.62132 534.73696,442.35433 533.747,443.25024 C 532.26213,444.59402 532.05043,445.86808 532.53757,450.52878 C 533.29502,457.77575 532.26405,458.7141 525.38945,457.03474 z",name:"Kayseri"},39:{path:"M 114.21348,198.00342 C 111.83937,195.48613 110.17556,194.61975 107.7066,194.61516 C 105.88217,194.61177 103.04328,193.90708 101.39796,193.04917 C 99.486478,192.05249 97.230043,191.71004 95.147955,192.10065 C 92.093767,192.67362 91.88945,192.53456 91.88945,189.88291 C 91.88945,188.32694 93.46445,184.60923 95.38945,181.62132 C 99.461058,175.30154 99.664686,174.05731 96.752021,173.29563 C 94.633154,172.74154 94.637496,172.70946 97.252021,169.60228 C 99.657998,166.74293 99.889557,165.70673 99.890671,157.7946 C 99.891737,150.22948 100.17921,148.79363 102.14067,146.55661 C 104.10732,144.31367 105.14221,144.0029 110.38945,144.0796 C 116.81673,144.17355 120.88945,146.00034 120.88945,148.78929 C 120.88945,149.71707 122.12695,151.40392 123.63945,152.53786 C 125.15195,153.67179 126.95203,155.07227 127.63963,155.65003 C 128.52143,156.39098 130.14206,156.29553 133.13963,155.32612 C 137.28825,153.98445 150.82271,153.84401 152.88922,155.12118 C 154.63131,156.19785 153.96982,159.36704 151.88945,159.91107 C 149.13027,160.63261 149.30384,164.41722 152.38945,170.81338 C 153.76445,173.66361 154.88945,176.78485 154.88945,177.74946 C 154.88945,178.71406 155.33945,179.7814 155.88945,180.12132 C 157.99127,181.42032 156.74526,182.62132 153.29575,182.62132 C 148.17277,182.62132 130.46043,188.33291 128.34935,190.66564 C 127.37266,191.74486 126.30056,194.30733 125.96691,196.36 C 125.40883,199.79336 125.04176,200.14391 121.38174,200.73883 C 117.76972,201.32594 117.10937,201.07395 114.21348,198.00342 z",name:"Kırklareli"},40:{path:"M 454.98447,378.62132 C 453.29238,375.87132 451.52601,373.62132 451.05921,373.62132 C 450.59241,373.62132 449.74158,372.59219 449.16847,371.33436 C 448.45307,369.76423 446.57172,368.62403 443.16622,367.69669 C 439.34991,366.65747 436.72811,364.89982 431.79772,360.07523 C 424.3265,352.76436 421.88945,349.97004 421.88945,348.71444 C 421.88945,346.85506 431.69984,339.62132 434.22153,339.62132 C 435.62651,339.62132 437.36406,338.81541 438.08275,337.8304 C 438.80143,336.84539 440.8407,335.02276 442.61445,333.78011 C 444.74361,332.28846 446.20501,330.16315 446.91527,327.52542 C 448.63656,321.13306 457.43305,317.03149 459.82717,321.50495 C 460.40076,322.57671 462.46323,323.68612 464.61235,324.07892 C 469.18405,324.9145 472.88945,327.15676 472.88945,329.08767 C 472.88945,329.8688 473.82257,331.1615 474.96306,331.96032 C 476.78615,333.23727 476.87676,333.67417 475.71306,335.57678 C 474.496,337.56662 474.74484,338.04563 478.80412,341.52693 C 483.12848,345.23558 483.18474,345.36165 481.55412,347.68968 C 480.63855,348.99684 479.88945,351.0912 479.88945,352.34383 C 479.88945,354.23934 480.42615,354.62132 483.08945,354.62132 C 485.57834,354.62132 486.02278,354.88799 485.08945,355.82132 C 484.42945,356.48132 483.88945,357.77957 483.88945,358.70631 C 483.88945,359.63305 482.75932,361.13179 481.37806,362.03683 C 479.42208,363.31843 479.00374,364.2285 479.48647,366.15184 C 480.00645,368.22361 479.74793,368.62132 477.88123,368.62132 C 476.18974,368.62132 475.775,369.07566 476.15166,370.51601 C 476.49391,371.82478 475.91149,372.74588 474.26829,373.49457 C 472.95993,374.0907 471.88945,375.19335 471.88945,375.94489 C 471.88945,376.69644 471.02688,378.09196 469.97264,379.04604 C 468.4699,380.40599 467.62001,380.54749 466.03838,379.70102 C 463.00333,378.07671 461.93496,378.37141 460.88945,381.12132 C 460.36668,382.49632 459.51641,383.62132 458.99998,383.62132 C 458.48354,383.62132 456.67656,381.37132 454.98447,378.62132 z",
+    name:"Kırşehir"},41:{path:"M 237.88945,255.07701 C 232.33314,252.15647 231.35417,252.11061 228.16232,254.62132 C 226.58898,255.85891 224.10554,256.62132 221.6476,256.62132 C 218.25683,256.62132 217.78092,256.36519 218.39591,254.87132 C 218.79216,253.90882 219.34188,252.33728 219.61753,251.379 C 220.3043,248.99143 226.74223,247.38554 236.38355,247.19685 C 243.0538,247.06631 244.43216,246.7573 244.70687,245.33086 C 244.98109,243.90697 244.22182,243.62132 240.16277,243.62132 C 237.48245,243.62132 234.76742,243.09929 234.12938,242.46125 C 233.41773,241.7496 229.4749,241.30734 223.92938,241.31713 C 218.95742,241.32591 214.88945,240.92 214.88945,240.4151 C 214.88945,239.91021 215.61062,237.29227 216.49205,234.59746 C 217.658,231.03277 218.9791,229.17596 221.34082,227.78251 C 224.36464,225.99842 224.76846,225.97732 227.23606,227.47457 C 229.72026,228.98189 230.14972,228.94713 234.13728,226.91594 C 236.47597,225.72465 239.18776,224.50599 240.16347,224.20781 C 241.13919,223.90962 242.31253,222.65186 242.77089,221.41277 C 243.54817,219.31158 244.10309,219.18071 251.01228,219.46905 C 257.34934,219.73352 258.81314,219.46918 261.13786,217.64056 C 263.11287,216.08702 264.31476,215.75996 265.5364,216.44362 C 267.03658,217.28316 266.91838,217.6833 264.43725,220.16443 C 260.64473,223.95695 259.56421,228.0917 261.42519,231.69044 C 263.38515,235.48058 263.2715,236.90163 260.88945,238.38925 C 259.53725,239.23371 258.88945,240.72127 258.88945,242.98191 C 258.88945,248.37601 255.15751,252.90861 249.86808,253.93874 C 247.40483,254.41847 244.71445,255.40303 243.88945,256.12665 C 242.63399,257.22784 241.65584,257.05672 237.88945,255.07701 z",name:"Kocaeli"},42:{path:"M 359.63945,517.07544 C 357.57695,514.78046 355.88945,512.20738 355.88945,511.35749 C 355.88945,510.5076 353.52695,508.47889 350.63945,506.84925 C 343.25428,502.68121 337.05846,496.13309 333.86533,489.12132 C 332.36252,485.82132 329.72875,481.80019 328.01251,480.18548 L 324.89207,477.24965 L 321.25345,478.98478 C 316.72593,481.14381 312.88198,480.4347 307.24578,476.40073 C 303.23219,473.5281 303.13306,473.32291 304.08802,469.86434 C 304.63026,467.90048 304.81328,464.99048 304.49472,463.39767 C 304.03892,461.11869 304.4722,459.98575 306.52829,458.08023 C 309.77449,455.07175 311.25818,455.84226 310.45571,460.11982 C 309.62068,464.57089 312.48955,465.83433 315.38383,462.29014 C 316.68309,460.69913 318.92285,459.58345 321.74336,459.12229 C 325.99148,458.42771 326.08205,458.33401 325.47071,455.26587 C 325.12611,453.53637 324.40435,451.97132 323.86681,451.78799 C 323.32926,451.60465 322.88945,450.81715 322.88945,450.03799 C 322.88945,449.25882 322.22302,448.62132 321.4085,448.62132 C 320.59398,448.62132 319.64375,447.49057 319.29689,446.10855 C 318.95002,444.72652 318.15395,443.26402 317.52784,442.85855 C 315.65919,441.6484 311.94836,435.89574 312.60975,435.23435 C 312.94692,434.89719 314.40778,434.62132 315.85612,434.62132 C 318.92893,434.62132 320.88945,432.97562 320.88945,430.39624 C 320.88945,429.39244 317.27164,425.09494 312.84988,420.84624 C 306.56049,414.803 304.68983,412.35578 304.25692,409.60475 C 303.71334,406.15055 303.83378,406.00576 311.04649,401.4423 C 315.08512,398.88706 319.62695,396.23479 321.13945,395.54835 C 324.62376,393.96703 324.66945,391.29774 321.23896,389.73471 L 318.58847,388.52706 L 321.81789,385.19515 C 323.98832,382.95583 325.22482,380.53982 325.58863,377.82746 C 325.96783,375.00031 326.69288,373.64448 328.00969,373.30013 C 330.8591,372.55499 330.41602,368.79158 327.38945,368.03196 C 325.47582,367.55167 324.88945,366.7551 324.88945,364.63575 C 324.88945,361.95802 325.03311,361.88319 329.25913,362.35952 C 331.91044,362.65836 333.8999,362.41343 334.31815,361.73668 C 335.52134,359.78989 337.69597,360.52829 339.13224,363.37132 C 343.05377,371.13376 345.18107,372.09174 352.56654,369.42112 C 355.45503,368.37663 356.47314,368.50637 360.41429,370.42112 C 362.90505,371.63123 365.99871,372.62132 367.28908,372.62132 C 370.486,372.62132 378.88083,368.80735 379.55587,367.04824 C 379.85703,366.26343 380.7649,365.62132 381.57336,365.62132 C 383.54343,365.62132 388.88945,360.1832 388.88945,358.17919 C 388.88945,356.97775 389.50517,356.73775 391.38013,357.20834 C 393.15324,357.65336 394.04837,357.37075 394.48712,356.22739 C 395.45548,353.70389 397.11624,354.28608 402.80762,359.14415 C 405.72187,361.63171 408.99557,364.14293 410.08251,364.72464 C 411.16945,365.30636 412.71814,367.3604 413.52404,369.28919 C 415.40932,373.80132 414.19626,375.34859 408.77347,375.34859 C 404.4109,375.34859 402.93032,376.61574 402.90476,380.37132 C 402.89634,381.60882 402.49191,382.62132 402.00603,382.62132 C 400.53193,382.62132 399.90108,388.03047 401.24796,389.12132 C 401.92705,389.67132 403.07879,391.58382 403.80738,393.37132 C 404.53597,395.15882 405.71603,396.62132 406.42973,396.62132 C 407.14343,396.62132 409.12712,397.40882 410.83792,398.37132 C 413.37145,399.79669 413.83819,400.57261 413.35402,402.55414 C 413.02708,403.89218 411.75275,406.1835 410.52218,407.64595 C 409.29161,409.1084 407.68258,412.81518 406.94656,415.88324 C 405.39988,422.33053 406.32624,425.60947 412.63311,436.01132 L 416.20435,441.90132 L 426.2969,441.17564 C 431.8478,440.77652 440.10748,440.26173 444.65174,440.03168 C 452.83689,439.6173 452.93025,439.63987 454.65174,442.44941 C 455.60748,444.00922 459.20195,447.88448 462.63945,451.06109 C 467.82964,455.85737 468.88945,457.3857 468.88945,460.07405 C 468.88945,462.04135 468.10485,464.0214 466.88945,465.12132 C 465.46187,466.41326 464.88945,468.20129 464.88945,471.36858 C 464.88945,474.29167 465.57194,476.6735 466.88945,478.34845 C 467.98945,479.74687 468.88945,481.73646 468.88945,482.76975 C 468.88945,483.80304 469.42488,485.50581 470.07929,486.55369 C 471.94331,489.53846 469.68349,491.28155 461.57051,493.11686 C 457.62093,494.01033 452.90399,495.61272 451.08843,496.67771 L 447.78741,498.61407 L 448.40373,491.13573 L 449.02006,483.65738 L 444.87737,481.99981 C 441.46659,480.63509 440.32052,479.43679 438.39049,475.2173 C 437.10118,472.39859 435.44851,468.14937 434.71787,465.7746 C 433.40449,461.50572 433.34681,461.46358 429.62396,462.05337 C 421.97789,463.26468 418.38947,465.41243 416.08431,470.15713 C 413.99009,474.46768 411.73226,475.79404 410.33561,473.5342 C 409.96608,472.93629 408.78699,472.67636 407.71542,472.95658 C 406.5689,473.2564 405.54249,472.88072 405.22129,472.0437 C 404.08802,469.09044 400.19255,470.58972 395.27629,475.87132 C 391.33023,480.11063 389.6194,481.21758 386.38945,481.62132 C 382.75356,482.07581 382.41458,482.36482 382.66554,484.79634 C 382.83572,486.44511 382.26026,487.98134 381.16554,488.80067 C 380.18869,489.53179 378.38294,491.56421 377.15275,493.31716 C 373.86978,497.99524 374.93606,501.76447 380.58122,505.4366 L 385.04002,508.33701 L 380.21473,512.49952 C 377.56083,514.78891 374.26445,516.93141 372.88945,517.26065 C 371.51445,517.58988 369.48945,518.40186 368.38945,519.06505 C 364.37963,521.48255 363.39991,521.25978 359.63945,517.07544 z",name:"Konya"},43:{path:"M 235.57867,372.88972 L 234.19663,368.12132 L 226.55126,367.21781 C 219.43097,366.37635 218.47607,366.49674 212.64767,368.97068 C 209.20565,370.43169 205.48945,371.64172 204.38945,371.65963 C 203.28945,371.67754 201.26445,372.3353 199.88945,373.12132 C 196.58106,375.01257 188.88945,375.10687 188.88945,373.25618 C 188.88945,372.50535 187.98945,370.74687 186.88945,369.34845 C 185.78945,367.95003 184.88945,365.85022 184.88945,364.68221 C 184.88945,363.5142 184.28116,362.32513 183.5377,362.03983 C 182.70226,361.71925 182.36856,360.56585 182.66404,359.02015 C 183.40277,355.15575 179.39827,351.43389 174.91566,351.81865 C 171.43279,352.1176 171.38212,352.06601 170.79284,347.62132 C 170.4647,345.14632 169.86128,342.35266 169.45192,341.41319 C 168.88046,340.10174 169.3093,339.57922 171.29853,339.16319 C 172.72354,338.86516 174.97977,338.39645 176.31238,338.12161 C 180.66393,337.22414 184.88945,332.81276 184.88945,329.16729 C 184.88945,327.36535 185.78945,324.74687 186.88945,323.34845 C 187.98945,321.95003 188.88945,320.36219 188.88945,319.81992 C 188.88945,319.17581 190.26718,319.18369 192.86324,319.84264 C 198.76154,321.33978 201.31347,320.3153 203.11595,315.72663 C 204.14566,313.10524 206.03693,310.92204 208.77593,309.19298 C 212.09652,307.09678 212.88945,306.02037 212.88945,303.60878 C 212.88945,300.26136 213.61933,299.94978 216.44832,302.08952 C 217.55987,302.93025 220.61181,303.57131 223.58955,303.58952 L 228.78964,303.62132 L 229.08955,309.33119 L 229.38945,315.04106 L 235.88945,317.30336 C 240.01659,318.7398 243.54414,319.35862 245.55251,318.99851 C 250.24839,318.15651 252.88945,319.31688 252.88945,322.22204 C 252.88945,323.70693 254.2819,326.08043 256.38945,328.18799 C 260.16231,331.96085 260.78805,334.97089 258.35776,337.65633 C 256.97994,339.17882 256.99693,339.68897 258.52696,342.73507 C 262.38372,350.4134 262.31537,350.85322 256.83064,353.65132 C 252.68329,355.76714 250.88945,358.18259 250.88945,361.65129 C 250.88945,364.99272 248.16443,368.72211 242.31231,373.38972 L 236.9607,377.65813 L 235.57867,372.88972 z",name:"Kütahya"},44:{path:"M 645.91768,444.50812 C 640.76471,442.45169 640.56384,438.47754 645.38945,434.05745 C 649.62134,430.1812 649.98123,426.10697 646.61649,420.16644 C 644.89906,417.13426 643.2836,415.82057 639.69228,414.5357 C 637.116,413.61397 633.84318,411.94348 632.41935,410.8235 C 630.99552,409.70352 628.00819,408.47928 625.78084,408.10297 L 621.73111,407.41877 L 623.73547,405.27005 C 624.83786,404.08825 626.94298,400.7174 628.4135,397.77927 C 630.10966,394.3903 632.33065,391.70354 634.48831,390.43049 C 638.11115,388.29296 638.72839,386.00365 636.67896,382.30558 C 636.01318,381.10424 635.40963,377.98382 635.33772,375.37132 C 635.20866,370.68224 635.24739,370.62132 638.35709,370.62132 C 640.08964,370.62132 642.3807,371.28201 643.44832,372.08952 C 646.5896,374.46546 648.51454,373.92138 649.5272,370.37132 L 650.45426,367.12132 L 661.10219,366.08936 C 669.01383,365.32259 672.27541,364.582 673.79426,363.20747 C 675.55708,361.61213 676.24465,361.52581 678.79021,362.58021 C 680.4137,363.25269 682.71431,363.4943 683.90267,363.11712 C 687.67082,361.92116 692.47693,363.42053 693.73651,366.18499 C 695.25115,369.50926 695.19132,370.62132 693.49786,370.62132 C 691.10542,370.62132 690.62087,375.42992 692.71179,378.42224 C 693.74909,379.90674 694.91065,382.41325 695.29303,383.99227 L 695.98827,386.86323 L 691.57238,386.20102 C 687.30086,385.56047 687.1046,385.64815 685.56964,388.88284 C 684.69687,390.72206 683.06179,393.06037 681.93612,394.07908 C 679.05799,396.68376 679.16588,402.62726 682.13945,405.27972 C 683.37695,406.38358 688.16776,408.27066 692.7857,409.47322 C 700.45609,411.47067 701.38542,411.52637 703.5357,410.11745 C 704.83026,409.26922 705.88945,409.01269 705.88945,409.54738 C 705.88945,410.08206 707.456,411.7144 709.37068,413.1748 C 712.4791,415.54571 713.19696,415.70977 716.07403,414.70682 C 718.87497,413.73041 719.56369,413.85129 721.3428,415.63157 C 723.32262,417.6127 723.33231,417.77922 721.63945,420.73148 C 720.67695,422.41004 719.88945,424.23996 719.88945,424.79799 C 719.88945,427.18786 715.34848,431.86176 710.77486,434.17939 L 705.83581,436.68219 L 702.51824,434.15176 C 700.69358,432.76002 698.73482,431.62132 698.16545,431.62132 C 697.59609,431.62132 694.03856,430.05474 690.25984,428.14003 C 682.08353,423.99701 679.6285,423.82024 675.37051,427.06797 C 673.60627,428.41362 670.93995,429.82153 669.44536,430.19664 C 665.77129,431.11878 665.27299,433.02215 667.84846,436.29634 L 669.99889,439.03017 L 667.72673,440.74406 C 662.38714,444.77172 651.35105,446.67646 645.91768,444.50812 z",name:"Malatya"},45:{path:"M 158.27138,417.23326 C 153.387,416.17209 153.1953,416.00824 154.07294,413.64483 C 155.44629,409.94651 154.29164,407.02987 150.22678,403.92945 C 147.75725,402.04585 144.94788,400.98194 141.526,400.63448 C 137.15781,400.19092 136.39313,399.7836 135.88819,397.63134 C 135.42824,395.67086 134.46248,394.99199 131.34673,394.43897 C 124.23393,393.1765 122.89093,393.40354 122.87414,395.87132 C 122.84289,400.46219 121.30981,401.04557 118.66561,397.47278 C 117.30139,395.62948 115.92407,393.37625 115.6049,392.46562 C 115.28573,391.55498 113.64388,390.50666 111.95636,390.13602 C 110.26883,389.76537 107.06499,387.93893 104.83672,386.07726 C 102.60845,384.21559 99.221549,382.39905 97.310283,382.04049 C 93.593606,381.34324 91.88945,379.23258 91.88945,375.32661 C 91.88945,373.9922 90.76445,371.24263 89.38945,369.21646 C 86.354127,364.74366 86.355506,364.78782 89.144417,361.37013 C 90.971541,359.13106 92.586475,358.45922 97.819943,357.76095 C 102.91396,357.08129 104.7224,356.35427 106.52132,354.26291 C 108.62723,351.81465 108.74874,350.98712 108.19389,342.87209 C 107.86482,338.05916 106.9867,333.23369 106.24251,332.14881 C 104.47297,329.56916 104.5187,326.70082 106.34052,326.00172 C 107.13861,325.69547 109.31858,326.60959 111.18491,328.03311 C 113.38166,329.70865 115.84648,330.62132 118.17482,330.62132 C 120.15295,330.62132 122.08131,331.12275 122.46008,331.7356 C 122.87161,332.40146 124.70628,332.64097 127.0191,332.33076 C 130.52048,331.86112 130.88945,332.02625 130.88945,334.06284 C 130.88945,337.34686 133.70167,342.45218 136.53229,344.30687 C 137.88495,345.19317 139.65523,347.20149 140.46624,348.76982 C 141.70667,351.16854 142.5625,351.62132 145.85611,351.62132 C 148.00953,351.62132 150.03007,351.20281 150.3462,350.69131 C 150.66232,350.1798 153.50138,349.49135 156.65521,349.16142 C 159.80904,348.83149 164.04701,348.34947 166.07291,348.09026 C 169.48453,347.65375 169.77974,347.82201 170.07291,350.37014 C 170.35348,352.80872 170.8022,353.12132 174.02208,353.12132 C 178.89306,353.12132 182.174,356.04927 181.37573,359.6838 C 180.95889,361.58164 181.24068,362.54212 182.33784,362.96314 C 183.19123,363.29062 183.88945,364.4909 183.88945,365.63043 C 183.88945,366.76996 184.83471,368.98084 185.99003,370.54349 C 187.98167,373.23733 188.00425,373.51648 186.42547,375.92601 C 185.31707,377.61763 183.47533,378.68444 180.91712,379.11665 C 174.96903,380.12157 173.85593,381.43525 173.26851,388.14355 C 172.98061,391.43132 172.04409,395.78689 171.18735,397.82259 C 169.67177,401.42378 169.70094,401.60858 172.26624,404.65726 C 175.07691,407.99755 174.95007,409.62132 171.87847,409.62132 C 170.76033,409.62132 168.71827,411.46322 166.88945,414.12132 C 165.18661,416.59632 163.70249,418.55919 163.59141,418.48326 C 163.48033,418.40732 161.08632,417.84482 158.27138,417.23326 z",name:"Manisa"},46:{path:"M 610.71397,493.48136 C 609.9628,492.18334 608.66744,489.77132 607.8354,488.12132 C 605.87038,484.22451 602.23989,483.56939 600.9796,486.88419 C 600.47742,488.20505 598.56465,490.01313 596.72902,490.90216 C 593.43829,492.4959 593.37224,492.4818 592.01738,489.89596 C 588.54858,483.27551 586.05226,481.36748 581.72835,482.03165 C 569.16528,483.96139 569.96271,483.99358 569.04761,481.51983 C 568.57755,480.24914 568.56393,477.61465 569.01735,475.6654 C 570.39575,469.73961 570.0756,465.90746 568.13945,465.15689 C 566.57931,464.55208 566.5571,464.35061 567.93475,463.2999 C 570.57353,461.28734 573.91089,452.84929 573.84235,448.36337 C 573.74949,442.2863 575.26685,432.49851 576.70567,429.89342 C 577.38244,428.66807 579.05066,426.55102 580.41281,425.18887 C 581.77496,423.82672 582.88945,422.12124 582.88945,421.39891 C 582.88945,420.67658 584.03067,418.40613 585.4255,416.35345 C 587.42049,413.41757 588.6106,412.62132 591.0037,412.62132 C 593.90113,412.62132 594.03024,412.44641 593.71765,408.9447 C 593.39174,405.29376 593.42437,405.2594 598.38945,404.02392 C 604.14587,402.59153 624.88945,400.7659 624.88945,401.69166 C 624.88945,402.03249 623.98945,403.12583 622.88945,404.12132 C 619.86681,406.85678 620.46531,408.37387 624.86001,409.11635 C 627.04382,409.4853 629.99552,410.70352 631.41935,411.8235 C 632.84318,412.94348 636.116,414.61397 638.69228,415.5357 C 642.2836,416.82057 643.89906,418.13426 645.61649,421.16644 C 648.78891,426.76743 648.50875,429.28432 644.28192,433.15595 C 640.70665,436.43076 640.68055,436.51337 641.36291,442.39264 L 642.05143,448.32497 L 637.97044,451.55718 C 635.61937,453.41926 633.88945,455.64212 633.88945,456.80106 C 633.88945,457.90748 633.10215,460.14553 632.1399,461.77449 C 630.41752,464.69025 630.42916,464.76606 632.8899,466.65655 C 634.26465,467.71271 636.16112,468.58685 637.10427,468.59908 C 639.06996,468.62457 640.88945,471.50963 640.88945,474.60103 C 640.88945,477.645 636.51265,481.62132 633.1621,481.62132 C 629.99188,481.62132 621.24763,486.98466 615.7346,492.31058 L 612.07975,495.84139 L 610.71397,493.48136 z",name:"Kahramanmaraş"},47:{path:"M 780.81376,505.04126 C 779.20985,503.3343 778.36215,501.21927 778.30876,498.79126 C 778.2533,496.26862 776.92467,493.11898 774.05876,488.71628 C 771.76564,485.19351 769.88945,481.75171 769.88945,481.06783 C 769.88945,480.38395 768.6002,477.37351 767.02446,474.37797 L 764.15947,468.93154 L 769.27446,468.78216 C 772.0877,468.7 776.86445,468.61516 779.88945,468.59364 C 786.74237,468.54487 790.02115,467.28703 792.68407,463.68524 C 794.27611,461.53189 795.35763,460.98816 797.30738,461.36088 C 798.70719,461.62847 800.98581,461.56297 802.37097,461.21531 C 804.42854,460.6989 804.88945,459.97666 804.88945,457.26893 C 804.88945,453.063 805.76468,452.19843 807.98673,454.20935 C 808.9545,455.08517 811.63029,456.22506 813.93294,456.74243 C 817.41886,457.52566 818.67865,457.35323 821.46002,455.71219 L 824.80047,453.74127 L 826.73708,456.9313 C 827.80222,458.68581 828.983,461.58382 829.36103,463.37132 L 830.04836,466.62132 L 839.03465,466.62132 C 848.71816,466.62132 850.04021,466.20569 855.08343,461.57592 C 858.44533,458.48962 866.81145,453.16716 867.3325,453.78316 C 869.09832,455.87074 869.93246,458.97831 868.98209,459.92868 C 868.38114,460.52963 867.88945,462.17307 867.88945,463.58077 C 867.88945,466.61357 865.48283,468.34289 860.05418,469.21097 C 856.28349,469.81393 856.10752,470.0137 855.51051,474.36934 C 855.16893,476.86146 854.88945,480.22341 854.88945,481.84035 C 854.88945,484.60809 855.07108,484.74034 857.99127,484.09896 C 861.07218,483.42227 861.08824,483.44027 860.37445,486.7695 C 859.9792,488.613 859.59589,490.13466 859.52263,490.15098 C 859.44938,490.16729 857.75453,490.92243 855.75629,491.82908 C 851.14138,493.92297 838.00841,494.3299 827.6326,492.7005 C 818.20478,491.21996 810.88059,492.43343 803.98823,496.61789 C 801.4589,498.15348 797.89654,499.72488 796.07188,500.10989 C 794.24722,500.4949 792.51507,501.43337 792.22266,502.19538 C 791.65808,503.66665 785.80769,507.62132 784.19573,507.62132 C 783.66902,507.62132 782.14714,506.46029 780.81376,505.04126 z",name:"Mardin"},48:{path:"M 182.76506,537.2068 C 180.3339,534.9525 180.21664,534.44104 180.99789,529.49889 C 181.84327,524.15105 181.2282,522.67447 178.13945,522.63663 C 176.19703,522.61284 176.66719,520.24122 178.88945,518.85339 C 181.35636,517.31278 181.48102,515.04219 179.13945,514.2996 C 178.17695,513.99436 176.17663,512.95262 174.6943,511.98463 C 172.31153,510.42864 171.69417,510.38787 169.36785,511.63288 C 167.44641,512.6612 166.85131,513.64149 167.16197,515.26657 C 167.39595,516.49057 167.21224,518.08362 166.75373,518.80667 C 166.15228,519.75514 165.91581,519.54713 165.90476,518.05988 C 165.88242,515.05235 162.56165,511.97001 158.52872,511.21342 C 155.46512,510.63869 154.97099,510.13842 154.70028,507.33742 C 154.44601,504.70656 153.93452,504.09376 151.88945,503.96986 C 150.51445,503.88656 148.82695,503.77406 148.13945,503.71986 C 147.45195,503.66566 146.88945,502.72132 146.88945,501.62132 C 146.88945,500.51021 146.22278,499.62132 145.38945,499.62132 C 144.55612,499.62132 143.88945,500.51021 143.88945,501.62132 C 143.88945,502.73243 143.22278,503.62132 142.38945,503.62132 C 141.56445,503.62132 139.98945,502.72132 138.88945,501.62132 C 137.78945,500.52132 136.44802,499.62132 135.9085,499.62132 C 134.42466,499.62132 133.47917,504.61104 134.72663,505.8585 C 135.51429,506.64616 135.22913,507.45942 133.7004,508.78528 C 132.53607,509.7951 131.08978,510.62417 130.48644,510.62764 C 129.8831,510.63112 128.65911,511.91799 127.76648,513.48735 C 126.07711,516.45746 121.28657,518.41844 119.66981,516.80168 C 119.096,516.22787 119.75503,515.87132 121.38945,515.87132 C 122.84695,515.87132 124.51545,515.39532 125.09723,514.81354 C 126.70071,513.21006 125.24439,510.63409 122.67083,510.52164 C 120.46976,510.42547 120.47745,510.39763 122.88945,509.73065 C 124.42463,509.30613 125.51277,508.18681 125.709,506.83033 C 125.99743,504.83645 125.59781,504.62132 121.60569,504.62132 C 119.17312,504.62132 114.43549,504.33417 111.07763,503.9832 C 105.32087,503.3815 104.91021,503.48137 103.88204,505.7332 C 102.92677,507.8254 102.03821,508.14971 96.711238,508.35042 C 89.535126,508.6208 88.517237,508.19019 90.150475,505.57496 C 91.073193,504.09745 92.48988,503.62132 95.96333,503.62132 C 98.489363,503.62132 100.85196,503.32547 101.21355,502.96388 C 102.33986,501.83758 113.13241,501.72819 118.71876,502.78646 C 124.69196,503.91802 125.87615,503.43093 124.09312,500.57584 C 123.28321,499.27897 123.23298,498.62132 123.94383,498.62132 C 124.53307,498.62132 124.87438,497.60882 124.70231,496.37132 C 124.42276,494.36084 124.81527,494.12132 128.38945,494.12132 C 131.20426,494.12132 133.05612,493.45465 134.63945,491.87132 C 135.87695,490.63382 137.78945,489.62132 138.88945,489.62132 C 139.98945,489.62132 140.88945,488.97228 140.88945,488.17901 C 140.88945,486.95643 137.49979,486.78443 118.63945,487.04994 C 101.82792,487.28662 96.022812,487.05529 94.88945,486.10354 C 94.06445,485.41074 91.95824,484.53994 90.208984,484.16843 C 87.613821,483.61726 86.825215,483.87283 85.9238,485.55714 C 84.361405,488.4765 83.189514,488.11915 82.667767,484.56425 C 81.817013,478.7677 89.931768,475.56177 93.41099,480.31989 C 94.444251,481.73296 94.816452,481.71526 97.222756,480.13859 C 98.689438,479.17758 99.88945,477.59815 99.88945,476.62875 C 99.88945,475.65935 100.56445,474.30601 101.38945,473.62132 C 103.33964,472.00281 103.3262,468.62132 101.36958,468.62132 C 100.53365,468.62132 98.017513,467.46471 95.778166,466.05107 C 91.992253,463.66113 91.818267,463.35746 93.298038,461.72233 C 95.164951,459.65941 95.347994,457.94083 93.757274,457.41059 C 92.014877,456.8298 95.602515,450.61701 97.66513,450.64328 C 99.807379,450.67057 107.82555,454.25518 109.87147,456.10026 C 110.79291,456.93125 115.2045,457.74824 121.09735,458.17919 C 129.00017,458.75715 131.43266,458.59143 134.17948,457.28798 C 138.48215,455.24623 144.22884,455.75679 147.95532,458.5119 C 149.97771,460.00711 151.63563,460.47215 153.38162,460.03393 C 155.57872,459.48249 155.97242,459.78618 156.5036,462.44208 C 156.83791,464.11361 158.18649,466.49119 159.50044,467.72559 C 160.8144,468.95999 161.88945,470.94676 161.88945,472.14065 C 161.88945,474.28843 164.67961,477.62132 166.47764,477.62132 C 166.98954,477.62132 167.95328,478.49389 168.61931,479.56036 C 169.28533,480.62683 171.4717,482.27831 173.47791,483.23032 C 178.32196,485.52897 181.13709,490.09951 180.36836,494.41737 C 179.86411,497.24968 180.28251,498.21438 183.34222,501.27409 C 186.30618,504.23805 187.36228,504.71946 189.64412,504.14676 C 193.03008,503.29694 192.79523,503.55174 194.43781,498.94573 C 195.18793,496.8423 195.82142,495.68382 195.84556,496.37132 C 195.8697,497.05882 196.56445,497.62132 197.38945,497.62132 C 199.25582,497.62132 199.2471,498.56436 197.35765,501.06245 C 195.29628,503.78781 195.52,504.62132 198.31285,504.62132 C 199.64573,504.62132 202.88466,502.9814 205.51049,500.97706 C 209.9907,497.55725 210.44149,497.42079 212.83002,498.76144 C 216.13737,500.61781 216.52139,503.00249 214.0242,506.17714 C 212.91782,507.58368 211.30332,510.8699 210.43643,513.47986 C 208.50967,519.28081 201.37867,526.53392 194.63945,529.54735 C 191.21835,531.07709 189.88945,532.24224 189.88945,533.71205 C 189.88945,536.437 188.11366,539.62132 186.59405,539.62132 C 185.92028,539.62132 184.19724,538.53479 182.76506,537.2068 z",name:"Muğla"},49:{path:"M 838.4379,392.51486 C 836.38316,386.08417 834.65543,383.9838 830.99158,383.4625 C 826.28373,382.79265 826.0461,380.31017 829.47235,367.5915 C 829.69901,366.7501 831.23558,365.55169 832.88696,364.92836 C 837.24775,363.28235 836.88579,360.17026 832.0464,357.70139 C 829.23288,356.26604 827.50124,354.32209 825.58248,350.44499 C 823.93642,347.11891 823.31318,344.79759 823.90686,344.20391 C 825.1761,342.93467 836.69287,341.53835 840.15907,342.23344 C 842.12229,342.62714 844.09847,344.51142 846.94633,348.70509 C 850.64111,354.14589 851.26233,354.62095 854.67671,354.61669 C 856.71872,354.61414 861.08945,353.49982 864.38945,352.14042 C 867.68945,350.78103 871.44641,349.65811 872.73824,349.64506 C 875.9637,349.61246 880.03386,344.91919 882.18238,338.75509 C 884.35549,332.52042 887.54858,330.01205 891.60741,331.35115 C 893.16062,331.86359 894.99587,333.56149 895.76237,335.19516 C 896.51748,336.80455 898.72265,339.78459 900.66274,341.81747 C 904.086,345.40446 904.58446,346.80552 906.55544,358.38059 C 906.86068,360.17319 907.51071,361.88724 907.99994,362.18961 C 911.18881,364.16043 905.62191,365.75296 894.6726,366.00215 C 890.8816,366.08843 887.41859,366.69218 886.7226,367.38817 C 886.04437,368.0664 884.64036,368.62132 883.60259,368.62132 C 882.42438,368.62132 881.29043,369.74804 880.58335,371.62132 C 879.76831,373.7806 878.79339,374.62132 877.10447,374.62132 C 872.304,374.62132 868.7122,378.57185 872.27103,379.9375 C 873.38866,380.36638 873.44292,381.25323 872.55505,384.57965 C 871.31337,389.23163 871.28452,389.2435 859.3564,390.00943 C 849.68637,390.63037 847.15691,391.46605 845.58531,394.55907 C 844.92759,395.85353 843.47333,397.24693 842.35364,397.65552 C 840.55825,398.31067 840.09581,397.70358 838.4379,392.51486 z",name:"Muş"},50:{path:"M 483.38945,417.70832 C 480.5344,417.37314 476.81246,416.05458 474.7134,414.63468 C 471.1848,412.24778 471.04441,411.93063 471.2134,406.7275 C 471.38767,401.36169 471.34906,401.28558 467.38945,399.18995 C 463.47047,397.11583 463.38945,396.96248 463.38945,391.6188 C 463.38945,387.35298 463.03067,386.09381 461.74275,385.83955 C 460.27114,385.54903 460.24723,385.2114 461.51792,382.66425 C 462.8307,380.03272 463.16417,379.89874 465.86452,380.91801 C 468.31218,381.8419 469.12365,381.71934 470.83935,380.16666 C 471.96691,379.14624 472.88945,377.69644 472.88945,376.94489 C 472.88945,376.19335 474.04447,375.05218 475.45616,374.40897 C 477.20829,373.61065 477.87272,372.66536 477.54978,371.43041 C 477.21551,370.15216 477.63608,369.62132 478.98307,369.62132 C 480.42958,369.62132 480.88945,368.90612 480.88945,366.6565 C 480.88945,364.71514 481.57985,363.3222 482.88945,362.62132 C 483.98945,362.03262 484.88945,360.72189 484.88945,359.70858 C 484.88945,358.69528 485.56445,357.30601 486.38945,356.62132 C 488.80281,354.61841 488.13809,353.62132 484.38945,353.62132 C 480.48004,353.62132 480.13658,352.70441 482.52896,348.65444 L 484.16846,345.87898 L 489.69474,349.75015 C 492.73419,351.87929 495.73105,353.62132 496.35443,353.62132 C 497.05394,353.62132 497.33633,354.91921 497.09206,357.01153 C 496.7655,359.80873 497.34154,361.11597 500.38524,364.48498 C 503.78752,368.2509 504.02292,368.90059 503.4142,372.84478 C 503.0512,375.19688 502.08316,379.53164 501.263,382.47758 C 499.92544,387.28197 499.93241,388.01131 501.33062,389.55632 C 502.18798,390.50368 502.88945,392.27822 502.88945,393.49972 C 502.88945,394.72123 503.62839,397.14959 504.53154,398.89609 L 506.17363,402.07155 L 500.53154,407.11778 C 496.83755,410.42165 494.88945,412.94207 494.88945,414.41742 C 494.88945,416.45336 491.25677,418.97771 489.07435,418.45832 C 488.69766,418.36868 486.13945,418.03118 483.38945,417.70832 z",name:"Nevşehir"},51:{path:"M 469.88945,482.25618 C 469.88945,480.95535 468.98945,478.74687 467.88945,477.34845 C 466.77049,475.92593 465.88945,473.29167 465.88945,471.36858 C 465.88945,469.20129 466.6284,467.26255 467.88945,466.12132 C 469.29271,464.85139 469.88945,463.04135 469.88945,460.05492 C 469.88945,456.10686 469.42971,455.37553 463.54335,449.95991 C 460.05299,446.74869 456.64857,443.08344 455.97797,441.81491 C 455.30738,440.54639 453.81582,439.15971 452.6634,438.7334 C 450.73875,438.02143 450.93905,437.67988 455.12265,434.53981 C 457.62766,432.65964 462.42496,429.43229 465.78333,427.36792 C 470.9078,424.21794 471.88945,423.16494 471.88945,420.81792 C 471.88945,419.27979 471.38866,417.52053 470.77658,416.90845 C 470.16451,416.29638 469.97999,415.28384 470.36654,414.65838 C 470.8474,413.88035 472.09795,414.30571 474.32606,416.00517 C 477.02109,418.06077 478.85952,418.52932 484.98609,418.72201 C 489.05794,418.85008 493.98471,418.61091 495.93447,418.19051 C 499.1393,417.49951 499.59513,417.67995 500.68447,420.07079 C 501.34721,421.52534 501.88945,423.50824 501.88945,424.47724 C 501.88945,427.61371 504.32222,429.74233 508.26433,430.05512 C 514.13654,430.52105 515.7816,432.87799 515.98813,441.12132 C 516.31497,454.16667 511.34857,460.28826 499.38945,461.58088 L 494.38945,462.12132 L 494.09641,468.75529 C 493.751,476.57459 492.28457,478.43207 485.44866,479.70916 C 482.96657,480.17286 479.04083,481.4678 476.72479,482.58679 C 471.27673,485.219 469.88945,485.1519 469.88945,482.25618 z",name:"Niğde"},52:{path:"M 639.57482,277.8148 C 637.13394,275.26708 637.02155,274.82908 638.35592,273.0648 C 641.48588,268.92646 640.40729,267.62132 633.85733,267.62132 C 625.78107,267.62132 621.35522,265.67183 619.53357,261.31201 C 617.69571,256.91339 617.53665,256.8303 608.5665,255.58266 C 601.83235,254.64603 600.63607,254.13497 597.21429,250.73292 C 595.11063,248.64139 592.71445,246.6873 591.88945,246.39048 C 590.6488,245.94413 590.73525,245.57713 592.38945,244.26788 C 593.48945,243.39725 595.34126,242.67062 596.50459,242.65312 C 599.6028,242.60654 603.60003,239.0637 605.03656,235.09104 C 605.73081,233.17112 606.98316,231.61857 607.84034,231.61516 C 608.69235,231.61177 610.67839,230.93677 612.25376,230.11516 C 615.54322,228.39958 619.48645,228.16023 620.38945,229.62132 C 620.72937,230.17132 622.01042,230.62132 623.23624,230.62132 C 624.46206,230.62132 627.023,231.95303 628.92722,233.58068 C 633.46932,237.46307 635.3952,237.36276 638.13026,233.10133 C 640.81324,228.92105 645.1577,228.49069 645.70632,232.35084 C 646.15114,235.48068 650.52591,238.21546 656.31042,238.97974 C 659.01695,239.33734 661.41541,239.81395 661.64032,240.03886 C 661.86524,240.26377 661.39584,241.49934 660.59721,242.78456 C 659.79859,244.06978 658.3085,247.52621 657.28589,250.46552 C 655.56662,255.4073 655.55052,255.90032 657.07206,257.0129 C 657.97705,257.67464 658.86869,259.54475 659.05348,261.1687 C 659.34118,263.69715 659.86499,264.16698 662.69971,264.43917 C 667.33417,264.88418 666.58011,267.72318 661.44475,269.16401 C 657.31693,270.32216 656.37699,271.37032 655.42996,275.87132 C 654.95854,278.11186 654.31004,278.62132 651.92941,278.62132 C 650.32235,278.62132 648.72937,278.17132 648.38945,277.62132 C 647.30196,275.86172 644.88945,276.55101 644.88945,278.62132 C 644.88945,281.43467 642.72873,281.10678 639.57482,277.8148 z",name:"Ordu"},53:{path:"M 786.00665,263.69375 C 784.66592,262.86514 784.39015,258.41437 785.42703,254.3391 C 786.42779,250.40582 783.2607,239.72116 780.09916,236.36473 C 776.92313,232.9929 777.85581,231.69316 784.01837,230.90311 C 789.63968,230.18246 795.41175,227.26269 799.30582,223.17004 C 801.42385,220.944 803.69416,219.72487 806.55601,219.27676 C 809.46452,218.82135 812.3149,217.26518 815.99624,214.12285 C 818.89676,211.64701 821.87056,209.62132 822.60468,209.62132 C 823.3388,209.62132 824.21271,210.98761 824.54669,212.65752 C 824.90038,214.42595 826.62851,216.90919 828.68544,218.60469 L 832.21695,221.51566 L 828.3032,226.12235 C 821.66581,233.93489 818.89252,237.85143 818.81636,239.51999 C 818.69085,242.2698 815.31744,247.10741 813.30854,247.41844 C 809.66741,247.98218 803.88945,250.92863 803.88945,252.22167 C 803.88945,254.05111 799.4549,258.62132 797.67977,258.62132 C 796.86558,258.62132 795.41099,259.49253 794.44735,260.55734 C 792.30277,262.92708 787.596,264.67603 786.00665,263.69375 z",name:"Rize"},54:{path:"M 270.13945,275.34616 C 268.90195,274.7794 267.88945,273.73978 267.88945,273.03589 C 267.88945,271.28838 264.88801,270.47748 259.45984,270.75846 C 255.94978,270.94016 254.38483,270.49589 252.58766,268.80753 C 251.30775,267.60511 249.28562,266.62132 248.09405,266.62132 C 245.98048,266.62132 245.7666,266.19999 244.43245,259.40809 C 243.97588,257.08377 245.56443,255.98171 250.86808,254.94335 C 256.14126,253.91096 259.88945,249.37674 259.88945,244.03014 C 259.88945,241.80438 260.57877,240.25191 262.01311,239.24726 C 263.74344,238.03529 264.01247,237.14503 263.46566,234.44055 C 261.5909,225.16831 261.5828,225.23883 264.92496,221.74157 L 268.12461,218.39345 L 273.12186,220.00739 C 275.87035,220.89505 278.72859,221.62132 279.47349,221.62132 C 280.2184,221.62132 282.52922,222.4908 284.60866,223.5535 C 286.68809,224.6162 290.52695,225.79229 293.13945,226.16704 C 295.75195,226.54179 297.94277,227.35981 298.00793,227.98486 C 298.30976,230.8799 297.55451,232.34831 294.23042,235.3294 C 291.394,237.87314 290.54721,239.47802 290.14129,243.0794 C 289.73267,246.70465 289.93674,247.62132 291.15241,247.62132 C 293.24358,247.62132 294.19358,250.54994 292.69008,252.36155 C 292.01145,253.17925 291.21618,255.93471 290.92283,258.4848 L 290.38945,263.12132 L 284.22147,263.62132 C 278.97188,264.04687 277.72864,264.53592 275.87173,266.90585 C 274.4075,268.77461 273.88403,270.46359 274.28004,272.04143 C 275.06018,275.14974 273.10968,276.70649 270.13945,275.34616 z",
+    name:"Sakarya"},55:{path:"M 549.38945,246.05119 C 546.63945,245.28598 542.94448,244.65122 541.17841,244.64061 C 539.32661,244.62949 537.21008,243.81158 536.17841,242.70843 C 535.19448,241.65634 533.03945,240.64384 531.38945,240.45843 C 528.76903,240.16397 528.43014,239.77337 528.71102,237.37132 C 528.99524,234.94068 528.70491,234.62409 526.21102,234.64518 C 524.65915,234.6583 521.59078,235.08598 519.3924,235.59558 C 515.83271,236.42075 515.1155,236.25401 512.83769,234.07173 C 511.43097,232.724 509.31331,231.62132 508.13178,231.62132 C 504.27632,231.62132 500.78538,229.308 499.30914,225.77487 C 498.08539,222.84602 498.07212,222.06315 499.22341,220.71558 C 499.97253,219.83874 500.86374,218.3364 501.20387,217.37704 C 501.78037,215.75099 507.46107,211.63342 509.13945,211.62506 C 509.55195,211.623 509.88945,212.15963 509.88945,212.81757 C 509.88945,213.47551 511.07565,215.72551 512.52545,217.81757 C 515.95915,222.7724 519.79365,223.00589 523.98824,218.51556 C 527.1148,215.16857 527.47937,213.5921 525.83663,210.52263 C 525.07922,209.1074 525.13914,207.51248 526.05018,204.83838 C 528.19189,198.55194 530.69162,195.62132 533.91206,195.62132 C 535.49958,195.62132 539.85644,194.46681 543.59396,193.05574 C 547.33148,191.64467 551.18486,190.24011 552.15704,189.93451 C 553.34586,189.56079 555.06488,190.58788 557.40704,193.07129 C 560.42133,196.26737 560.88945,197.43193 560.88945,201.73456 C 560.88945,205.76346 561.5053,207.54841 564.13945,211.15413 C 565.92695,213.60093 568.30586,215.85668 569.42592,216.16691 C 570.54599,216.47713 571.89599,217.71879 572.42592,218.92614 C 573.4341,221.22305 577.34326,222.24067 581.26028,221.22587 C 582.43132,220.92248 584.38381,218.91721 585.59915,216.7697 L 587.80884,212.86515 L 593.44857,214.17615 C 601.04235,215.94138 606.88945,219.85991 606.88945,223.18378 C 606.88945,225.09422 607.68928,226.05603 610.13945,227.09195 L 613.38945,228.46602 L 610.57435,229.54367 C 609.02605,230.13638 607.20395,230.62132 606.52524,230.62132 C 605.84653,230.62132 604.72663,232.1827 604.03656,234.09104 C 602.56063,238.17264 598.56574,241.62132 595.31361,241.62132 C 594.04524,241.62132 592.72835,242.07297 592.38718,242.62499 C 592.04602,243.17701 590.6774,243.35522 589.34582,243.02101 C 588.01424,242.68681 584.65887,242.95695 581.88945,243.62132 C 579.12003,244.28569 575.73841,244.54924 574.37475,244.20699 C 572.20856,243.66331 572.04811,243.34013 573.10456,241.64849 C 574.62954,239.20661 574.39713,239.02375 568.72234,238.20061 C 564.43984,237.57942 563.99794,237.71308 563.36,239.82248 C 562.42269,242.92175 557.88667,247.64257 555.95236,247.5319 C 555.09276,247.48272 552.13945,246.8164 549.38945,246.05119 z",name:"Samsun"},56:{path:"M 870.97959,454.12132 C 869.99393,453.02132 868.89601,451.29856 868.53978,450.29297 C 868.03639,448.87198 867.05628,448.53777 864.14077,448.79297 L 860.38945,449.12132 L 860.38945,444.68359 L 860.38945,440.24585 L 854.38945,439.12852 C 844.6494,437.3147 841.1033,434.18279 845.88945,431.62132 C 846.98945,431.03262 847.88945,429.89179 847.88945,429.08614 C 847.88945,428.20917 848.84658,427.62132 850.27444,427.62132 C 852.76487,427.62132 855.88945,423.98727 855.88945,421.09076 C 855.88945,420.21025 856.33533,418.65671 856.88028,417.63845 C 857.84081,415.84369 858.03201,415.84813 863.13028,417.78346 C 873.26265,421.62976 874.90726,421.91517 876.84308,420.16328 C 877.81701,419.28189 880.03258,418.15386 881.76656,417.65657 C 884.60711,416.84191 885.37318,417.14526 889.50412,420.72056 C 892.0258,422.90306 896.40659,425.86009 899.23922,427.29175 C 902.07185,428.7234 905.89618,431.48717 907.73774,433.43346 L 911.08603,436.97216 L 915.27689,434.68281 C 921.13989,431.48001 923.05783,432.12994 924.99925,437.97739 C 926.51136,442.53176 926.4977,443.05649 924.77422,446.62368 L 922.93939,450.42134 L 918.66442,449.38122 C 916.31319,448.80915 913.46045,447.50415 912.325,446.48121 C 907.88707,442.48303 900.1025,444.82039 895.43767,451.55173 C 892.20265,456.21988 893.07302,455.93786 881.58058,456.04172 C 873.97569,456.11044 872.52677,455.84796 870.97959,454.12132 z",name:"Siirt"},57:{path:"M 490.03647,219.04738 C 486.52557,217.10147 482.43996,215.62132 480.57963,215.62132 C 477.55993,215.62132 477.21354,215.28211 476.14202,211.27583 C 474.63654,205.64703 475.75225,201.49364 479.2226,199.80788 C 480.70973,199.08549 482.6304,197.42012 483.49076,196.10705 C 487.00784,190.7393 482.75707,187.19525 473.88945,188.10203 L 468.38945,188.66445 L 468.38945,183.39289 C 468.38945,180.49352 468.00374,177.05247 467.53232,175.74609 C 466.94134,174.10842 467.01181,173.57891 467.75924,174.04085 C 468.35548,174.40934 470.60801,174.23565 472.76487,173.65487 C 475.55833,172.90267 478.17821,172.91882 481.87214,173.71103 C 491.39476,175.75326 498.54611,173.11653 502.48603,166.11058 C 503.53537,164.24466 503.714,164.29203 506.63196,167.20999 C 508.97004,169.54806 509.56194,170.88376 509.16956,172.93637 C 508.70445,175.36942 509.65125,177.99725 513.21245,184.15726 C 515.30723,187.78073 518.31168,190.32994 521.88945,191.5195 C 523.81445,192.15953 526.2398,193.32734 527.27912,194.11463 C 528.97666,195.40053 529.02222,195.77864 527.7272,197.83369 C 524.80791,202.46629 523.47783,208.4225 524.7427,211.19857 C 525.73744,213.3818 525.59925,214.22013 523.83655,216.69561 C 520.71395,221.0809 517.23184,221.55917 514.29532,218.00608 C 512.98403,216.41946 511.63249,214.10882 511.29189,212.87132 C 510.9513,211.63382 509.93392,210.623 509.03104,210.62506 C 506.64057,210.6305 500.92697,214.34594 500.18565,216.37704 C 499.8355,217.3364 498.79952,219.10055 497.88347,220.29738 L 496.21793,222.47344 L 490.03647,219.04738 z",name:"Sinop"},58:{path:"M 596.46788,401.27752 C 596.80672,400.39453 596.10969,398.09571 594.91893,396.16902 L 592.75391,392.66595 L 595.1285,390.29136 C 596.43452,388.98534 597.92752,387.7378 598.44627,387.51905 C 598.96502,387.3003 600.17106,385.54632 601.12635,383.62132 C 602.08165,381.69632 603.82776,378.92299 605.00661,377.45837 C 608.14628,373.55758 607.00492,370.2721 601.98795,368.76898 C 599.15671,367.92072 597.66872,366.74394 596.72149,364.60399 C 595.09014,360.91853 591.65508,360.64703 586.33931,363.78341 C 583.08678,365.70244 582.28801,365.80561 579.23371,364.70116 C 576.56547,363.73631 575.4699,363.72463 574.35594,364.64913 C 573.43149,365.41635 570.31094,365.70971 565.60306,365.47197 C 559.65607,365.17166 557.69852,364.6364 555.14346,362.61192 C 553.41462,361.24209 551.97521,359.25032 551.94478,358.18577 C 551.91435,357.12122 550.96272,355.26376 549.83005,354.05809 L 547.77065,351.86596 L 552.58005,348.8943 C 556.78399,346.29673 557.80235,344.95515 560.66928,338.23756 C 563.68825,331.16372 563.85433,330.23614 562.75744,326.57503 C 562.10201,324.38743 560.96359,322.09781 560.2276,321.487 C 559.49162,320.87619 558.88945,319.07188 558.88945,317.47744 C 558.88945,315.3556 558.21926,314.27308 556.38945,313.43937 C 553.47196,312.11007 553.29838,311.35676 555.49038,309.53755 C 556.64927,308.57577 561.22758,308.1769 572.07142,308.093 C 588.8847,307.96292 588.34632,308.20581 589.43947,300.25764 C 589.88717,297.00244 590.94882,294.47104 592.52906,292.8908 C 594.68583,290.73404 595.49241,290.55274 600.27355,291.15011 C 604.18774,291.63915 606.40531,291.40592 608.59182,290.27523 C 611.28789,288.88104 611.72436,288.8848 613.15414,290.31459 C 614.62468,291.78512 622.1001,293.64318 627.88945,293.97712 C 629.90973,294.09365 630.44954,293.60016 630.70259,291.40534 C 630.90344,289.66327 632.42742,287.57128 634.95259,285.57131 C 637.11786,283.85638 638.88945,281.72607 638.88945,280.83729 C 638.88945,279.58042 639.15612,279.48799 640.08945,280.42132 C 640.74945,281.08132 642.32445,281.62132 643.58945,281.62132 C 645.29248,281.62132 645.88945,281.05031 645.88945,279.42132 C 645.88945,277.71021 646.15612,277.48799 647.08945,278.42132 C 647.74945,279.08132 649.95131,279.62132 651.98246,279.62132 C 655.7334,279.62132 656.88945,278.45293 656.88945,274.66198 C 656.88945,272.35137 658.58284,271.02474 662.63945,270.15734 C 665.65823,269.51185 665.88945,269.64946 665.88945,272.09152 C 665.88945,273.53754 666.56349,276.02409 667.38731,277.61719 C 668.23656,279.25945 668.77785,282.50608 668.63731,285.11468 L 668.38945,289.71563 L 673.88945,291.5503 C 676.91445,292.55937 680.82097,293.40718 682.57061,293.43431 C 684.36225,293.46209 686.62394,294.35581 687.74853,295.4804 C 688.84674,296.57861 691.80272,297.78569 694.31737,298.16278 C 696.83201,298.53988 698.88945,299.21051 698.88945,299.65308 C 698.88945,302.41998 697.40392,303.62132 693.98246,303.62132 C 691.95131,303.62132 689.84317,304.0676 689.29771,304.61306 C 688.64205,305.26872 687.21012,305.19117 685.07227,304.38422 C 681.0701,302.87357 678.52673,304.17444 678.07384,307.96373 C 677.83151,309.99137 678.35385,310.87579 680.32384,311.77338 C 683.24179,313.10289 683.48349,313.88342 681.48965,315.53816 C 680.71976,316.17712 679.1082,319.1185 677.90842,322.07458 C 676.20621,326.26855 675.96512,327.89418 676.81093,329.4746 C 677.59362,330.93708 677.5882,331.68947 676.79141,332.18191 C 675.10418,333.22468 676.62128,338.88779 679.08994,340.76198 C 681.14183,342.31976 681.16326,342.49037 679.51419,344.13944 C 678.10806,345.54556 677.90262,346.87855 678.43513,351.14064 C 679.20371,357.29215 678.40156,360.62132 676.1508,360.62132 C 675.26867,360.62132 673.69265,361.39444 672.64852,362.33936 C 671.30463,363.55556 667.65313,364.35883 660.14753,365.08936 C 649.58925,366.11701 649.54093,366.13385 648.5803,369.12132 C 647.30582,373.08484 647.43079,373.02213 644.5579,371.13973 C 642.94634,370.0838 640.50777,369.60945 637.72113,369.80983 C 634.01919,370.07604 633.43962,370.41208 633.73453,372.12132 C 633.92433,373.22132 634.0345,375.61692 633.97935,377.44488 C 633.9242,379.27283 634.55641,381.73546 635.38427,382.91738 C 637.60939,386.09419 637.26658,387.20126 633.34043,389.51774 C 631.27317,390.73745 629.17381,393.08983 628.31218,395.15201 C 626.48358,399.52848 624.82025,400.16139 612.88945,401.02048 C 607.66445,401.39672 601.69348,401.96969 599.62064,402.29375 C 596.43723,402.79143 595.94751,402.63358 596.46788,401.27752 z",name:"Sivas"},59:{path:"M 89.231551,243.07044 C 88.891608,242.18456 89.583572,240.51136 90.845312,239.1683 C 92.167883,237.76049 92.920835,235.87497 92.721825,234.46918 C 92.434736,232.44122 91.75334,232.08024 87.720735,231.81985 C 83.945594,231.57608 82.717634,231.00804 81.304938,228.85199 C 79.772651,226.51343 79.694618,225.38721 80.67024,219.69157 C 81.460502,215.07805 81.473055,212.82452 80.713591,211.90942 C 79.914419,210.94648 80.064175,210.62132 81.306843,210.62132 C 84.111129,210.62132 90.767623,206.73689 92.503663,204.08735 C 93.626251,202.37407 93.981459,200.34396 93.624413,197.68199 C 93.163034,194.24215 93.370653,193.71736 95.393787,193.20959 C 96.654435,192.89319 98.969179,193.30361 100.53766,194.12165 C 102.10615,194.93969 104.88217,195.61177 106.7066,195.61516 C 109.20827,195.6198 110.84905,196.49639 113.38082,199.18085 C 116.42174,202.40516 117.09818,202.68035 120.56367,202.10294 C 126.5368,201.10771 126.88945,200.86714 126.88945,197.78756 C 126.88945,193.6671 130.29736,189.86177 135.1931,188.51557 C 137.50109,187.88093 141.76883,186.5201 144.67696,185.4915 C 147.58509,184.4629 151.30141,183.62132 152.93544,183.62132 C 155.61416,183.62132 155.78853,183.81006 154.70809,185.54012 C 153.7664,187.048 153.78699,187.79293 154.80422,189.01862 C 155.88132,190.31645 155.75556,191.12762 154.05517,193.84983 C 146.80289,205.46026 144.76329,210.15031 145.18738,214.24131 C 145.9314,221.41859 143.11339,223.51583 138.06317,219.54333 C 135.73222,217.7098 134.59604,217.54442 128.40544,218.13752 C 121.24095,218.82392 117.96761,220.84682 117.91169,224.62259 C 117.88055,226.72448 108.16575,236.75071 103.58229,239.41133 C 101.48835,240.62682 98.76186,241.62132 97.523419,241.62132 C 96.284979,241.62132 94.398201,242.28201 93.33058,243.08952 C 90.82834,244.98212 89.963586,244.97809 89.231551,243.07044 z",name:"Tekirdağ"},60:{path:"M 553.8337,305.51715 C 553.31436,304.54676 552.88945,302.91322 552.88945,301.88706 C 552.88945,298.29344 550.94441,297.60815 542.44831,298.20833 L 534.38945,298.77762 L 530.63945,295.25045 C 524.70616,289.66973 526.17342,285.44083 535.17894,282.16693 C 540.7974,280.12438 545.88945,276.13817 545.88945,273.78243 C 545.88945,272.48037 546.86214,272.12132 550.38945,272.12132 C 553.32278,272.12132 554.88945,272.55651 554.88945,273.37132 C 554.88945,274.17234 556.39374,274.62132 559.07757,274.62132 C 565.36748,274.62132 572.36733,269.27077 568.88945,267.12132 C 567.14141,266.04097 567.81092,264.62132 570.06845,264.62132 C 571.2669,264.62132 573.73059,265.15763 575.54332,265.81312 C 579.48542,267.2386 580.84108,266.33034 578.54999,263.79871 C 577.63309,262.78555 576.88945,260.30865 576.88945,258.26783 C 576.88945,255.21451 577.33831,254.40116 579.47073,253.59042 C 582.46147,252.45334 582.22513,250.26734 579.06112,249.80177 C 577.76984,249.61176 576.88945,248.76413 576.88945,247.7109 C 576.88945,246.37179 578.28283,245.62775 582.59985,244.66165 C 586.93626,243.6912 588.40446,243.66634 588.70178,244.55831 C 588.91712,245.20433 589.7821,246.2703 590.62395,246.92711 C 591.4658,247.58393 593.92861,249.78956 596.09686,251.82851 C 599.56,255.08515 600.95396,255.66294 607.5665,256.58266 C 616.53665,257.8303 616.69571,257.91339 618.53357,262.31201 C 620.35522,266.67183 624.78107,268.62132 632.85733,268.62132 C 636.175,268.62132 638.88945,268.86215 638.88945,269.1565 C 638.88945,269.45085 638.13377,270.845 637.21017,272.2546 C 635.8661,274.3059 635.76629,275.19446 636.71017,276.70585 C 638.63176,279.78281 638.10634,281.28148 633.95259,284.57131 C 631.42742,286.57128 629.90344,288.66327 629.70259,290.40534 C 629.46539,292.46262 628.90439,293.05698 627.38945,292.85604 C 619.86197,291.85758 615.60535,290.67418 613.86002,289.09469 C 611.95257,287.36846 611.65896,287.36081 608.32566,288.95035 C 605.70671,290.19924 603.42954,290.46721 599.43006,289.99715 C 594.60311,289.42983 593.80279,289.61707 591.58803,291.83183 C 589.94755,293.47231 588.89313,295.95914 588.43947,299.25764 C 588.06432,301.98527 587.39427,304.8045 586.95047,305.52259 C 586.35233,306.4904 582.08594,306.88684 570.46075,307.05485 C 556.36131,307.25861 554.68262,307.10336 553.8337,305.51715 z",name:"Tokat"},61:{path:"M 769.38945,263.26309 C 766.70118,262.45356 764.96164,261.16704 764.08488,259.33994 C 762.37025,255.76677 758.88945,255.6203 758.88945,259.12132 C 758.88945,261.87131 757.43559,262.48693 756.52782,260.12132 C 756.21124,259.29632 755.11603,258.62132 754.09403,258.62132 C 752.58667,258.62132 752.32135,258.03865 752.68878,255.53524 C 753.09561,252.76332 752.9012,252.48337 750.77905,252.78524 C 748.9038,253.05199 748.28907,253.90896 747.79929,256.93923 C 747.4599,259.03907 746.47977,261.45958 745.62122,262.31812 C 744.20656,263.73278 743.77513,263.67611 741.01907,261.71361 C 739.34643,260.52259 736.4955,259.04088 734.68368,258.42092 C 732.87185,257.80096 731.16445,257.01516 730.88945,256.6747 C 730.61445,256.33425 727.96932,254.52406 725.01138,252.65207 C 718.00768,248.21966 715.89796,244.69772 715.89319,237.43034 C 715.88907,231.16062 716.77526,229.90855 719.85547,231.83217 C 721.5971,232.91984 722.53652,232.77515 726.14615,230.86327 C 731.34016,228.11221 732.09921,228.09064 734.39617,230.62875 C 737.25922,233.79238 741.82537,235.72598 743.86077,234.63667 C 745.10767,233.96935 746.74115,234.28202 749.50263,235.7166 C 752.33381,237.1874 754.44444,237.57541 757.2739,237.14524 C 760.12441,236.71188 761.64888,236.99862 763.00127,238.22252 C 765.35532,240.3529 771.28585,239.537 774.34649,236.66168 L 776.51673,234.62285 L 779.10621,237.37208 C 782.74978,241.24045 785.54018,251.63609 783.95936,255.45253 C 783.30751,257.02625 783.05812,259.44517 783.40516,260.82791 C 783.96149,263.04449 783.6577,263.41767 780.8378,263.98165 C 776.535,264.84221 774.13268,264.69143 769.38945,263.26309 z",name:"Trabzon"},62:{path:"M 732.23574,381.92154 C 730.5012,381.05701 728.55001,379.35559 727.89977,378.1406 C 727.04258,376.53893 726.05759,376.05768 724.31744,376.39034 C 720.55257,377.11003 714.88945,375.71988 714.88945,374.07601 C 714.88945,372.04148 710.91281,372.24759 709.19174,374.37132 C 707.91047,375.95235 707.8113,375.80338 708.1646,372.82837 C 708.46477,370.30082 708.2268,369.66163 707.14077,370.07837 C 706.36258,370.37699 705.51112,370.62132 705.24865,370.62132 C 704.98617,370.62132 705.04953,371.07132 705.38945,371.62132 C 705.72937,372.17132 705.30593,372.62132 704.44847,372.62132 C 703.59101,372.62132 702.88945,371.93049 702.88945,371.08614 C 702.88945,370.24179 702.17468,368.46007 701.30107,367.12678 C 698.83432,363.36204 700.19671,359.2736 704.42783,357.7436 C 708.65306,356.21574 709.36926,352.62132 705.44847,352.62132 C 702.22662,352.62132 701.12152,350.65601 703.40463,348.98656 C 704.82505,347.94793 705.54202,347.91802 706.66562,348.85052 C 707.80835,349.7989 708.36452,349.69211 709.35791,348.33357 C 710.04652,347.39183 711.0382,346.62132 711.56163,346.62132 C 712.08507,346.62132 713.51143,345.27132 714.73133,343.62132 C 715.95123,341.97132 717.58156,340.62132 718.35429,340.62132 C 719.12702,340.62132 721.02605,340.12917 722.57435,339.52766 C 724.12266,338.92614 727.5712,338.2739 730.23779,338.07823 C 732.90437,337.88257 736.1368,337.03405 737.42095,336.19264 C 739.61623,334.75423 739.77472,334.79543 740.07262,336.88184 C 740.52416,340.04437 743.60278,340.22269 746.36139,337.2461 C 747.65807,335.84696 749.91962,334.40087 751.38706,334.03256 C 753.36574,333.53595 753.9288,332.87979 753.56617,331.49312 C 752.85465,328.77226 754.31443,328.35422 758.46756,330.08951 C 762.99105,331.97954 766.62114,331.98965 769.88945,330.12132 C 773.69075,327.9483 782.1888,328.18963 784.30749,330.53075 C 785.94737,332.34281 785.94253,332.4714 784.21248,333.05209 C 783.20981,333.38863 780.8327,334.95721 778.93001,336.53783 C 775.94191,339.02011 775.65203,339.63031 776.80237,341.0164 C 777.96408,342.41617 777.68027,342.81077 774.58019,344.10607 C 772.6255,344.92279 770.74286,346.04949 770.39655,346.60984 C 770.05023,347.17019 768.70901,347.36315 767.41606,347.03864 C 765.45036,346.54528 764.78436,347.04051 763.35081,350.06151 C 762.24299,352.39606 761.83582,354.9034 762.20004,357.14786 C 762.66994,360.04349 762.46183,360.62132 760.94902,360.62132 C 759.95095,360.62132 758.54549,361.33083 757.8258,362.19802 C 756.73579,363.51139 756.81568,364.32887 758.30414,367.09277 C 761.37822,372.80099 758.5021,376.9834 750.71048,378.13535 L 746.03151,378.8271 L 745.71048,375.47421 C 745.45146,372.76892 744.90711,372.05334 742.8922,371.76937 C 740.48419,371.42999 740.45739,371.48642 742.1422,373.34811 C 744.58424,376.04654 744.32362,378.31444 741.24343,381.16907 C 738.20577,383.98428 736.63719,384.11531 732.23574,381.92154 z",name:"Tunceli"},63:{path:"M 725.38945,525.58657 C 723.73945,525.0698 718.25566,524.73919 713.20325,524.8519 L 704.01706,525.05682 L 699.20325,520.81072 C 696.55566,518.47537 692.36445,515.64166 689.88945,514.51359 C 684.0661,511.8594 673.63848,511.52136 669.30537,513.8463 L 666.22129,515.50108 L 664.55537,511.72518 C 663.63912,509.64843 662.88945,507.41435 662.88945,506.76055 C 662.88945,506.10675 661.77716,505.14893 660.4177,504.63206 C 656.41851,503.11157 652.81743,491.01993 655.81251,489.16887 C 656.3202,488.8551 657.0173,487.31571 657.36163,485.74799 C 657.72873,484.07658 659.00142,482.4357 660.43857,481.7809 C 661.78655,481.16671 662.88945,479.96405 662.88945,479.10832 C 662.88945,477.82785 663.74024,477.6653 667.6957,478.19001 C 671.50498,478.69532 673.17756,478.41671 675.759,476.84685 C 678.50921,475.17434 679.66756,475.0196 683.20275,475.85244 C 685.50544,476.39491 688.31909,477.84359 689.45531,479.07173 C 691.19461,480.95172 692.20788,481.21117 695.86521,480.71301 L 700.20925,480.12132 L 697.54935,478.70234 C 694.8362,477.25495 693.74606,474.24533 696.2883,475.22088 C 698.52583,476.0795 699.27069,473.62535 697.23959,472.08659 C 695.45326,470.73327 695.45268,470.68383 697.22278,470.65312 C 698.23112,470.63563 698.86996,470.06284 698.64243,469.38025 C 697.71352,466.59353 701.79833,464.92436 707.38945,465.80596 C 708.49577,465.98041 709.29203,465.60563 709.17142,464.96723 C 709.0515,464.33248 709.614,463.26488 710.42142,462.59479 C 711.22884,461.92469 711.88945,461.80359 711.88945,462.32568 C 711.88945,462.84777 713.18616,463.08462 714.77103,462.85201 C 716.3559,462.6194 717.95745,462.92234 718.33005,463.5252 C 719.38396,465.23047 720.60369,464.82207 721.19355,462.56643 C 721.59418,461.03441 721.09965,460.27154 719.25001,459.5683 C 716.71529,458.60461 716.84885,456.62132 719.44847,456.62132 C 720.24101,456.62132 720.88945,456.17132 720.88945,455.62132 C 720.88945,455.07132 720.26259,454.62132 719.49644,454.62132 C 717.68822,454.62132 716.64218,451.89217 718.10409,450.98866 C 718.82154,450.54525 718.47034,450.01043 717.1381,449.5176 C 714.62181,448.58676 715.12472,444.99881 717.8947,444.11965 C 719.12405,443.72947 719.51481,442.90469 719.14333,441.48418 C 717.37372,434.71715 734.21232,437.95375 743.92982,446.24846 C 746.74744,448.65353 749.5254,450.62132 750.10307,450.62132 C 750.68074,450.62132 752.70194,449.66426 754.59462,448.49452 C 759.46739,445.48298 760.30475,446.80921 760.08163,457.18503 C 759.90715,465.29897 760.06801,466.02049 763.00229,470.28532 C 764.71021,472.7677 767.13443,477.4189 768.38945,480.62132 C 769.64447,483.82374 772.14064,488.57951 773.9365,491.18971 C 776.26246,494.57037 777.16311,496.96185 777.06756,499.50349 C 776.96459,502.24248 777.65014,503.81094 780.01815,506.25411 C 783.02238,509.35368 783.04962,509.46523 781.0619,510.52903 C 779.93937,511.12979 778.07723,511.62132 776.92381,511.62132 C 775.77039,511.62132 774.56766,512.29632 774.25108,513.12132 C 773.93449,513.94632 773.24575,514.62132 772.72054,514.62132 C 772.19532,514.62132 769.43097,515.69685 766.57752,517.01139 C 763.72408,518.32594 760.26445,519.65147 758.88945,519.95702 C 757.51445,520.26258 753.91445,521.23948 750.88945,522.12792 C 745.88868,523.59664 739.43857,524.90596 731.38945,526.08625 C 729.73945,526.3282 727.03945,526.10335 725.38945,525.58657 z",name:"Şanlıurfa"},64:{path:"M 208.58369,409.10476 C 205.21261,406.12095 202.66687,405.97924 198.50748,408.54386 C 195.73147,410.25551 194.35237,410.38012 185.93481,409.67993 C 180.07901,409.19283 176.3275,408.43548 176.0791,407.69026 C 175.85851,407.0285 174.64434,405.28532 173.38095,403.81654 C 171.35752,401.46417 171.2348,400.84673 172.35078,398.63367 C 173.04758,397.25188 173.86965,393.21528 174.17759,389.66346 C 174.80645,382.41018 175.84269,381.14291 181.99472,380.10353 C 184.33842,379.70757 186.32667,378.67288 186.93767,377.53122 C 187.73867,376.03454 189.08807,375.61365 193.17463,375.58588 C 196.04278,375.5664 199.51445,374.90734 200.88945,374.12132 C 202.26445,373.3353 204.28945,372.67754 205.38945,372.65963 C 206.48945,372.64172 210.17488,371.44477 213.5793,369.99974 C 219.20833,367.61046 220.37711,367.45164 226.47935,368.24687 L 233.18955,369.12132 L 234.63848,374.107 L 236.08741,379.09268 L 232.98843,381.67983 C 230.77332,383.52908 229.88945,385.13177 229.88945,387.29909 C 229.88945,389.67317 228.70881,391.4478 224.44931,395.47626 C 221.45723,398.30604 218.38935,400.62132 217.6318,400.62132 C 216.75545,400.62132 215.91523,402.52995 215.32194,405.8684 C 214.23508,411.98414 212.6804,412.73084 208.58369,409.10476 z",name:"Uşak"},65:{path:"M 941.88945,442.49935 C 939.10531,440.91952 937.26453,440.62956 932.88945,441.08165 L 927.38945,441.64999 L 925.88945,436.88566 C 924.4955,432.45815 924.13314,432.0999 920.76402,431.81838 C 917.34778,431.53292 917.1072,431.28141 916.59457,427.45946 C 916.29535,425.22866 916.29818,421.87749 916.60084,420.0124 C 917.08215,417.04641 916.88402,416.62132 915.02029,416.62132 C 913.55612,416.62132 912.88945,415.99559 912.88945,414.62132 C 912.88945,413.44608 913.55612,412.62132 914.50608,412.62132 C 915.70949,412.62132 915.95573,412.0462 915.46942,410.37132 C 913.81728,404.68117 913.6589,398.05755 915.14548,396.8238 C 915.96524,396.14346 917.25549,395.82763 918.0127,396.12196 C 919.46777,396.68756 921.88945,401.15606 921.88945,403.27537 C 921.88945,404.72465 927.23238,405.93761 931.48152,405.45298 C 933.53044,405.21929 934.34822,404.60317 934.24989,403.36729 C 934.09331,401.3994 939.24332,396.62132 941.52097,396.62132 C 942.65833,396.62132 942.92878,395.53992 942.69424,391.92996 C 942.4149,387.63027 942.13302,387.17257 939.31787,386.4476 C 935.65634,385.50468 932.86871,381.24206 934.70966,379.40111 C 935.35854,378.75223 935.88945,377.36919 935.88945,376.3277 C 935.88945,375.28621 936.76416,374.20534 937.83326,373.92576 C 938.90235,373.64619 939.91631,372.45082 940.08649,371.26938 C 940.31104,369.71054 941.01222,369.18666 942.64268,369.35953 C 943.87841,369.49055 944.88945,369.18794 944.88945,368.68708 C 944.88945,368.18622 946.46445,367.25663 948.38945,366.62132 C 950.31445,365.98601 951.88945,365.10571 951.88945,364.66509 C 951.88945,364.22447 953.23945,363.30477 954.88945,362.62132 C 960.13934,360.44675 957.87176,358.21848 949.24427,357.074 C 944.98321,356.50875 943.49109,356.81037 939.04336,359.13602 C 933.74587,361.906 931.62105,361.99839 925.63945,359.71883 C 924.12695,359.14243 922.88945,358.27304 922.88945,357.78686 C 922.88945,357.30068 924.57695,354.92146 926.63945,352.4997 C 933.33297,344.64026 934.6694,340.32103 930.78879,339.08937 C 928.22104,338.2744 929.22008,337.23634 934.05946,335.69097 C 936.07796,335.04639 938.27056,333.86703 938.9319,333.07017 C 940.71133,330.92609 943.78478,331.3041 947.47834,334.12132 C 949.28106,335.49632 951.04106,336.62132 951.38945,336.62132 C 951.73784,336.62132 953.60862,337.83081 955.54673,339.30908 C 959.77091,342.53102 961.47623,341.86417 963.41199,336.23343 C 965.16639,331.13023 965.5348,330.90909 971.48821,331.38573 C 976.57263,331.7928 976.59091,331.80683 977.98821,336.37521 C 978.75889,338.89491 980.27908,341.44357 981.36641,342.0389 C 982.45374,342.63423 983.90193,343.79632 984.58461,344.62132 C 986.1959,346.56853 986.24824,352.33506 984.65942,352.86466 C 982.93749,353.43864 986.51967,361.18529 989.64312,363.6422 C 991.75755,365.30541 991.95021,366.03335 991.34467,370.07137 C 990.82456,373.5397 991.06783,375.24461 992.36537,377.22492 C 993.38746,378.78482 994.27024,382.68373 994.57217,386.97154 C 995.1159,394.69329 995.90381,395.87085 1000.1584,395.32039 C 1003.7277,394.85859 1005.4195,396.76235 1003.9237,399.5574 C 1003.3161,400.69255 1002.3849,401.62132 1001.8543,401.62132 C 1001.3236,401.62132 1000.8895,403.64632 1000.8895,406.12132 C 1000.8895,408.59632 1000.507,410.62132 1000.0395,410.62132 C 998.56645,410.62132 993.72449,423.31306 994.0645,426.28293 C 994.35397,428.81142 994.82618,429.15481 998.38945,429.42803 C 1001.0348,429.63087 1002.9469,430.45647 1004.0355,431.8659 C 1005.5926,433.88201 1005.553,434.09816 1003.301,435.86954 C 1001.9918,436.8994 999.22606,438.00245 997.155,438.32077 C 995.08395,438.63909 992.64579,439.2793 991.73688,439.74347 C 990.29912,440.4777 990.15344,440.07204 990.61611,436.62256 C 991.27298,431.72525 989.00141,430.2592 985.58857,433.37783 C 981.67953,436.94989 976.54377,438.94747 969.38945,439.67858 C 965.53945,440.07201 960.42478,441.13584 958.02351,442.04264 C 951.15372,444.6369 945.91766,444.78513 941.88945,442.49935 z",name:"Van"},66:{path:"M 512.63945,373.90507 C 511.12695,373.67594 509.88945,373.06837 509.88945,372.5549 C 509.88945,372.04143 508.76445,371.62132 507.38945,371.62132 C 505.5057,371.62132 504.88945,371.09657 504.88945,369.49252 C 504.88945,368.32168 503.27318,365.57471 501.29774,363.38813 C 498.30366,360.07404 497.79985,358.88914 498.26985,356.26693 C 498.78348,353.40134 498.50233,352.96709 495.11156,351.38882 C 493.0644,350.43595 487.83874,346.87613 483.49899,343.47811 C 476.41861,337.93419 475.78723,337.16923 477.34913,336.02715 C 479.23732,334.64646 478.71274,332.9877 475.70066,330.81462 C 474.70449,330.09593 473.88945,328.8688 473.88945,328.08767 C 473.88945,326.15676 470.18405,323.9145 465.61235,323.07892 C 463.46323,322.68612 461.40076,321.57671 460.82717,320.50495 C 460.27272,319.46895 459.18543,318.62132 458.41097,318.62132 C 456.6923,318.62132 453.88945,314.80849 453.88945,312.47053 C 453.88945,311.20268 455.36565,310.45015 459.63945,309.53933 C 462.80195,308.86534 466.73945,307.52088 468.38945,306.55163 C 471.08098,304.97056 471.80074,304.9334 475.38945,306.19028 C 480.46288,307.96716 482.85622,307.97269 486.48581,306.21593 C 488.08281,305.44297 491.30195,304.50341 493.63945,304.12803 C 497.14167,303.56561 497.88945,303.72491 497.88945,305.03342 C 497.88945,306.91679 500.64235,306.99226 506.38945,305.26644 L 510.38945,304.06527 L 511.39648,297.09329 L 512.40351,290.12132 L 518.59031,289.82506 C 524.26098,289.55352 524.88606,289.73113 526.08328,291.95413 C 526.80167,293.28806 528.87865,295.62135 530.69879,297.13921 C 533.85559,299.77176 534.37223,299.87402 541.90719,299.35756 C 547.27092,298.98992 550.0975,299.18609 550.71365,299.96873 C 551.97462,301.57042 553.07385,306.52461 552.98743,310.21662 C 552.93207,312.58183 553.50165,313.57923 555.40221,314.44518 C 557.15549,315.24403 557.88945,316.37303 557.88945,318.27114 C 557.88945,319.75212 558.50073,321.67427 559.24785,322.54258 C 562.7953,326.66546 562.83434,329.94669 559.428,337.68245 C 556.85587,343.52373 555.35335,345.58475 552.20543,347.58971 C 550.01929,348.98209 547.59137,350.66123 546.81004,351.32113 C 546.02872,351.98102 543.58945,354.05729 541.38945,355.93506 C 538.59267,358.32219 535.9431,359.56157 532.5812,360.05526 C 527.52983,360.79704 525.81742,362.62468 527.86366,365.09025 C 529.23543,366.74312 528.4384,368.62132 526.36523,368.62132 C 525.59183,368.62132 523.42148,369.97132 521.54223,371.62132 C 519.66299,373.27132 517.50983,374.5539 516.75743,374.47149 C 516.00504,374.38908 514.15195,374.13419 512.63945,373.90507 z",name:"Yozgat"},67:{path:"M 335.88945,231.62132 C 334.51445,231.18097 330.77658,230.77582 327.58308,230.721 C 322.41408,230.63226 321.46264,230.27746 318.91554,227.48874 L 316.05438,224.35617 L 318.49343,221.73874 C 319.83491,220.29916 321.20142,217.45817 321.53012,215.42544 C 322.04083,212.26714 322.76339,211.43077 326.49771,209.67544 C 328.90118,208.54567 331.2172,207.62132 331.64442,207.62132 C 332.07164,207.62132 335.56405,205.77006 339.40532,203.50741 C 351.44674,196.41456 353.84753,195.62768 358.17745,197.35469 C 360.69285,198.35796 361.88945,199.46666 361.88945,200.79402 C 361.88945,201.87135 362.41445,203.73377 363.05612,204.93274 C 363.69778,206.13171 364.22278,208.60391 364.22278,210.42653 C 364.22278,213.07527 363.5872,214.12691 361.05612,215.66616 C 358.48299,217.23097 357.88945,218.23963 357.88945,221.0476 C 357.88945,222.94823 357.3962,224.80813 356.79333,225.18072 C 356.19047,225.55332 355.88173,227.11537 356.10725,228.65196 C 356.46281,231.07452 356.12678,231.52385 353.57837,232.03354 C 349.53779,232.84165 338.92791,232.5944 335.88945,231.62132 z",name:"Zonguldak"},68:{path:"M 413.63046,435.00695 C 411.66774,431.76985 409.32024,427.26135 408.41379,424.98806 C 406.89558,421.18051 406.89156,420.42187 408.36273,415.36123 C 409.24109,412.33978 410.80346,409.10413 411.83466,408.1709 C 412.86587,407.23768 413.98362,405.38225 414.31857,404.04772 C 414.65351,402.7132 415.28479,401.62132 415.72141,401.62132 C 417.24541,401.62132 422.10254,407.46752 421.45244,408.51939 C 420.3967,410.22762 422.77751,413.62132 425.03162,413.62132 C 426.51589,413.62132 426.93012,413.1697 426.49231,412.02878 C 426.08949,410.97903 426.53637,410.26491 427.80344,409.93356 C 428.86068,409.65709 430.28157,408.08887 430.96098,406.44864 C 431.64038,404.8084 433.25223,402.7745 434.54286,401.92885 C 437.19087,400.1938 437.67772,397.62132 435.35807,397.62132 C 433.54078,397.62132 432.17935,394.70117 433.56269,393.7704 C 435.1441,392.70635 438.88945,384.17325 438.88945,381.63434 C 438.88945,380.33879 438.10436,378.41129 437.14481,377.351 C 435.47002,375.50038 435.52007,375.3262 438.39481,373.00093 C 442.70316,369.51605 445.90295,368.8915 447.49939,371.22386 C 448.21371,372.26746 449.63167,374.02132 450.65042,375.12132 C 451.66917,376.22132 453.73587,379.05615 455.2431,381.42094 C 456.75032,383.78573 458.96888,386.08507 460.17323,386.53059 C 462.05261,387.22582 462.36483,388.10459 462.3762,392.73097 C 462.3888,397.85492 462.55723,398.20508 465.78418,399.81605 C 471.13721,402.48841 471.29751,402.86981 469.94883,409.72503 C 468.98793,414.60918 468.98606,416.43332 469.94011,418.21598 C 471.74451,421.58753 470.8023,422.8403 462.84724,427.64683 C 458.86603,430.05231 454.01258,433.52574 452.06181,435.36555 C 448.84366,438.40066 447.86038,438.74309 441.4522,439.06045 C 437.56769,439.25283 430.52161,439.74376 425.79424,440.1514 L 417.19904,440.89258 L 413.63046,435.00695 z",
+    name:"Aksaray"},69:{path:"M 747.64124,301.77989 C 743.2738,299.1441 743.98117,295.9216 750.11433,290.51339 C 755.08379,286.13133 755.27988,285.77364 754.1147,283.21633 C 752.22596,279.07101 752.64313,275.58427 755.52545,271.42507 C 758.112,267.69268 759.11851,267.21599 763.63945,267.58219 C 765.31341,267.71779 765.88945,267.22922 765.88945,265.67383 C 765.88945,263.87339 766.27114,263.68996 768.63945,264.35227 C 770.15195,264.77525 775.56468,265.1011 780.66774,265.0764 C 788.6622,265.03769 789.85514,265.24524 789.28915,266.5764 C 787.93763,269.75499 787.73563,272.40822 788.79528,273.06312 C 790.38531,274.04581 790.13538,275.62132 788.38945,275.62132 C 786.65264,275.62132 786.40536,278.84827 787.92463,281.68706 C 788.49398,282.7509 789.97898,283.62132 791.22463,283.62132 C 792.47028,283.62132 794.04068,284.17255 794.71441,284.84628 C 795.68102,285.81289 796.35591,285.8111 797.91441,284.83781 C 801.67196,282.49117 799.97676,285.66612 794.75811,290.74925 C 786.43344,298.85774 785.96404,299.05198 778.35129,297.53881 C 769.00682,295.68143 757.36453,297.36769 754.20963,301.03548 C 751.66217,303.99707 751.36993,304.03019 747.64124,301.77989 z",name:"Bayburt"},70:{path:"M 365.80664,545.37132 C 365.7611,544.68382 365.60586,541.19632 365.46166,537.62132 C 365.31747,534.04632 364.7532,529.28017 364.20774,527.02989 L 363.21599,522.93845 L 367.80272,520.90864 C 370.32542,519.79224 373.51445,518.41785 374.88945,517.85444 C 378.16194,516.51352 385.88995,509.79536 385.88766,508.2934 C 385.88668,507.64875 383.8899,505.86035 381.45038,504.31917 C 378.81658,502.65526 376.87859,500.62426 376.67934,499.31917 C 376.32599,497.00472 379.1829,492.03388 382.13945,489.81895 C 383.11278,489.08976 383.88945,487.20165 383.88945,485.56462 C 383.88945,482.85596 384.17434,482.62132 387.4631,482.62132 C 390.51884,482.62132 391.76525,481.82423 396.06344,477.12132 C 401.28019,471.41337 403.24049,470.48777 404.29461,473.23477 C 404.68719,474.25781 405.64081,474.6581 406.90061,474.32865 C 407.99337,474.04289 409.13946,474.21683 409.44747,474.7152 C 409.75548,475.21357 411.11177,475.62132 412.46146,475.62132 C 414.37641,475.62132 415.39185,474.64073 417.08431,471.15713 C 419.28488,466.62771 422.15269,464.77766 429.38945,463.219 C 432.22473,462.60833 432.46239,462.80674 433.71787,466.83261 C 434.44851,469.17548 436.10118,473.39859 437.39049,476.2173 C 439.30204,480.39637 440.47882,481.63998 443.76662,482.95549 C 447.61363,484.49477 447.78035,484.74195 447.40162,488.34504 C 447.1833,490.42199 446.97875,493.75402 446.94707,495.74954 C 446.8955,498.9967 446.31243,499.77517 441.39549,503.1616 C 436.05441,506.84014 435.79225,506.90936 431.97384,505.64917 C 428.38261,504.46396 427.8137,504.53574 425.33293,506.48712 C 423.62164,507.83322 421.18687,508.62132 418.73949,508.62132 C 416.60536,508.62132 412.10632,509.3867 408.74163,510.32217 C 403.61868,511.74648 402.40805,512.51879 401.29587,515.07217 C 400.56539,516.7492 399.95012,517.55882 399.92859,516.87132 C 399.90217,516.02758 398.10191,515.62132 394.38945,515.62132 C 389.17085,515.62132 388.88945,515.75087 388.88945,518.15344 C 388.88945,519.5461 389.51033,522.17153 390.26918,523.98771 C 391.65314,527.29999 396.28239,532.62132 397.77992,532.62132 C 398.21967,532.62132 399.39695,533.52462 400.39608,534.62864 C 402.18415,536.60444 402.16336,536.6261 399.07223,536.00788 C 396.35686,535.4648 395.80191,535.72138 394.9723,537.90341 C 393.70049,541.24852 392.31681,541.98301 386.91661,542.17959 C 384.42667,542.27022 378.91022,543.30669 374.65783,544.48285 C 365.56355,546.99822 365.9121,546.96323 365.80664,545.37132 z",name:"Karaman"},71:{path:"M 419.95679,344.74714 C 419.37924,343.66799 419.18679,341.38462 419.52911,339.673 C 420.07192,336.95895 419.63073,336.06553 416.07933,332.68717 L 412.00713,328.81338 L 413.94829,325.00591 C 415.01593,322.9118 415.88945,319.58359 415.88945,317.60988 C 415.88945,315.63617 416.30135,313.59382 416.80477,313.07132 C 417.3082,312.54882 417.8707,310.99632 418.05477,309.62132 C 418.31121,307.70573 419.06564,307.04413 421.28206,306.79114 C 424.12221,306.46694 431.88945,301.99825 431.88945,300.68843 C 431.88945,300.32152 431.49755,299.59382 431.01856,299.07132 C 428.72918,296.57399 429.02842,292.95443 431.9467,287.84472 C 433.58746,284.97185 435.4833,282.62543 436.15968,282.63046 C 438.16826,282.6454 446.32505,286.9298 449.46911,289.62132 C 452.24261,291.99562 454.88945,297.45799 454.88945,300.80746 C 454.88945,301.65674 455.78945,303.49577 456.88945,304.89419 C 459.47852,308.18566 459.44174,308.34111 455.88945,309.12132 C 453.46371,309.6541 452.89238,310.29143 452.90476,312.45078 C 452.91318,313.91957 453.33619,315.7792 453.84478,316.58328 C 454.54671,317.69303 453.8805,318.54192 451.07946,320.10688 C 448.3319,321.64197 447.04601,323.24779 446.04477,326.39425 C 445.19792,329.05551 443.53191,331.43807 441.54477,332.82972 C 439.80934,334.04509 437.80143,335.84539 437.08275,336.8304 C 436.36406,337.81541 434.62651,338.62132 433.22153,338.62132 C 431.69956,338.62132 428.71468,340.25591 425.83694,342.66528 C 421.26503,346.49311 420.95075,346.60438 419.95679,344.74714 z",name:"Kırıkkale"},72:{path:"M 830.36103,462.37132 C 829.983,460.58382 828.85968,457.77132 827.86477,456.12132 C 826.74151,454.25847 826.25802,452.07894 826.58922,450.37132 C 826.99717,448.26803 826.73506,447.62132 825.47464,447.62132 C 822.51534,447.62132 822.58243,444.73503 825.62221,441.27291 C 827.24177,439.42833 829.57169,435.71462 830.79981,433.02022 C 832.02792,430.32583 833.4505,427.33993 833.96109,426.38489 C 835.37625,423.73793 835.09027,421.68232 832.7888,417.95846 C 831.32758,415.59416 830.89048,413.75334 831.35286,411.91107 C 832.21943,408.45838 837.03652,401.67005 838.63945,401.64267 C 839.32695,401.63093 839.88945,401.21534 839.88945,400.71915 C 839.88945,400.22295 841.24538,399.34429 842.90264,398.76657 C 844.55989,398.18885 846.16501,397.0668 846.46957,396.27313 C 847.15443,394.48841 851.884,395.50978 852.9509,397.6728 C 854.83974,401.50225 856.61211,414.91145 855.63295,417.96433 C 853.74736,423.84332 852.09359,426.11391 849.46139,426.43774 C 848.04682,426.61177 846.88945,427.26987 846.88945,427.90018 C 846.88945,428.53049 845.73637,429.96562 844.32706,431.08937 C 839.61355,434.84779 842.96846,438.19202 853.38945,440.12291 L 859.38945,441.23464 L 859.38945,445.67798 L 859.38945,450.12132 L 863.29857,450.12132 C 868.74527,450.12132 868.64858,451.71084 863.03581,454.44102 C 860.41291,455.71685 856.58832,458.29851 854.5367,460.17803 C 849.07575,465.18092 847.82154,465.62132 839.03465,465.62132 L 831.04836,465.62132 L 830.36103,462.37132 z",name:"Batman"},73:{path:"M 861.60522,485.98538 C 862.19031,482.37991 862.16883,482.35332 859.04235,482.81219 C 855.52347,483.32865 855.44941,483.11093 856.51051,475.36934 C 857.10752,471.0137 857.28349,470.81393 861.05418,470.21097 C 866.57653,469.32791 868.88945,467.6243 868.88945,464.43979 C 868.88945,462.95455 869.33945,461.46124 869.88945,461.12132 C 870.43945,460.7814 870.88945,459.71811 870.88945,458.75846 C 870.88945,457.20017 871.93184,457.04149 880.63945,457.27424 C 886.00195,457.41757 891.12543,457.31533 892.02497,457.04703 C 892.9245,456.77873 894.9199,454.74187 896.45919,452.52068 C 901.01303,445.9495 907.79944,443.6544 911.28558,447.50654 C 912.22394,448.54342 914.26618,449.64667 915.8239,449.95821 C 917.38162,450.26975 919.81105,450.81452 921.22262,451.16881 C 923.51278,451.7436 924.01645,451.32935 925.90035,447.32153 C 927.83108,443.21407 928.39482,442.77262 932.49456,442.15783 C 936.02505,441.6284 937.93798,441.95049 941.49775,443.67375 C 945.11798,445.42627 947.00065,445.73158 950.9537,445.20719 C 957.13742,444.38689 957.5822,446.19617 952.33039,450.80732 C 949.63172,453.17678 948.84029,454.58965 949.05659,456.65175 C 949.21348,458.14749 948.71702,460.12416 947.95334,461.04433 C 946.76258,462.47912 946.79669,463.2036 948.19291,466.13149 C 950.20406,470.34892 949.21856,471.0746 944.28145,469.01175 C 939.81305,467.14473 933.7249,467.64301 931.29314,470.07477 C 930.10119,471.26673 928.77263,471.53848 926.51574,471.05199 C 924.79628,470.68134 923.23945,469.98281 923.05612,469.4997 C 922.30983,467.53312 918.88536,468.82217 916.75572,471.87132 C 915.50727,473.65882 914.20531,475.34632 913.86248,475.62132 C 913.51965,475.89632 912.37297,477.97313 911.3143,480.23645 C 909.63148,483.83415 908.70834,484.56208 903.97267,486.02562 C 897.96855,487.88116 896.93314,487.36376 896.90476,482.49376 C 896.88642,479.34646 895.50685,478.11474 891.0539,477.26992 C 888.09687,476.70891 887.30251,477.07915 884.0539,480.5325 C 881.33465,483.42313 878.43553,485.09769 872.81427,487.02461 C 868.64792,488.4528 864.28871,489.62132 863.12714,489.62132 C 861.25693,489.62132 861.08273,489.20515 861.60522,485.98538 z",name:"Şırnak"},74:{path:"M 365.38392,211.61237 C 365.04096,211.05745 365.04323,209.71217 365.38896,208.62287 C 365.74773,207.49247 365.34619,205.6838 364.45351,204.40931 C 363.59328,203.18116 362.88945,201.19957 362.88945,200.00577 C 362.88945,198.44078 361.84326,197.40129 359.13945,196.2798 C 357.04441,195.41082 356.19627,194.70164 357.21764,194.67285 C 358.22315,194.64451 360.73992,192.80458 362.81047,190.58411 C 365.09264,188.13671 368.11371,186.12307 370.48228,185.47062 C 372.63122,184.87867 375.51445,183.60137 376.88945,182.63217 C 378.26445,181.66297 380.96445,180.55545 382.88945,180.171 C 384.81445,179.78655 387.15718,179.25655 388.09552,178.99322 C 389.3521,178.64058 390.49082,179.87455 392.41754,183.67676 L 395.03349,188.83909 L 392.83228,191.18217 C 391.45554,192.64765 390.82894,194.28193 391.15936,195.54546 C 391.58011,197.15442 390.87447,197.92443 387.69289,199.32814 C 385.43107,200.32605 383.06219,202.32038 382.23219,203.92544 C 381.22349,205.87604 378.72898,207.6743 374.23463,209.69078 C 367.02964,212.92344 366.29304,213.08337 365.38392,211.61237 z",name:"Bartın"},75:{path:"M 893.28248,244.85161 C 892.55211,242.91666 890.69163,241.21988 887.72646,239.78446 C 885.27458,238.59753 881.98789,236.28974 880.4227,234.65603 L 877.57691,231.68566 L 880.48318,225.18023 C 882.08163,221.60224 885.30014,216.08653 887.63544,212.9231 C 892.31249,206.58746 892.35045,205.57743 888.14517,199.35944 C 885.76965,195.84695 885.70999,195.47711 887.24522,193.7807 C 888.14954,192.78143 888.88945,190.97563 888.88945,189.76783 C 888.88945,187.03575 892.47138,185.51694 897.13126,186.27313 C 900.19914,186.77098 900.4742,187.09054 900.08972,189.71015 C 899.77939,191.82455 900.14855,192.78351 901.46767,193.28971 C 902.5507,193.70531 903.43377,193.48837 903.68125,192.74592 C 903.93246,191.9923 905.5631,192.99438 907.86348,195.31601 C 909.93724,197.40893 913.71645,200.23692 916.26171,201.60043 C 919.48726,203.32839 920.88945,204.70971 920.88945,206.15931 C 920.88945,207.30317 921.52809,209.11245 922.30865,210.17993 C 923.55721,211.88744 924.10811,211.97726 926.89063,210.92698 C 931.10951,209.33453 934.88945,210.73746 934.88945,213.89577 C 934.88945,215.93587 934.48654,216.17268 931.5907,215.83461 C 928.41783,215.46419 928.23657,215.63404 926.8407,220.28541 C 925.27433,225.50492 922.15226,227.78779 914.88945,229.02422 C 909.46461,229.94776 908.83997,230.79505 907.74324,238.71784 C 907.17958,242.78975 906.64438,246.18322 906.55392,246.25887 C 906.46346,246.33452 903.68744,246.70338 900.38499,247.07856 C 894.42914,247.75518 894.37165,247.73715 893.28248,244.85161 z",name:"Ardahan"},76:{path:"M 974.38945,305.82039 C 970.53945,305.65489 966.96195,305.09239 966.43945,304.57039 C 965.91695,304.0484 963.83113,303.62132 961.80428,303.62132 C 959.77744,303.62132 955.84482,302.8868 953.06512,301.98906 C 948.39066,300.47938 947.88853,300.47938 946.37885,301.98906 C 945.48111,302.8868 943.97202,303.62132 943.02532,303.62132 C 941.61613,303.62132 941.3118,302.69558 941.34675,298.51543 L 941.38945,293.40954 L 936.88945,291.63804 C 931.74131,289.61138 930.20756,286.62132 934.31613,286.62132 C 936.35404,286.62132 936.88945,286.13002 936.88945,284.25999 C 936.88945,282.35155 937.32098,281.98043 939.13945,282.32501 C 940.37695,282.55951 943.40603,282.29655 945.87074,281.74067 C 949.44126,280.93539 950.6767,281.02379 951.94948,282.17565 C 952.82808,282.97077 954.17145,283.62132 954.93476,283.62132 C 955.69806,283.62132 958.28101,284.36925 960.67465,285.28339 C 964.74047,286.83614 965.66777,286.83326 974.77305,285.23961 C 984.28948,283.574 984.624,283.58088 988.95442,285.53117 C 993.54832,287.60012 997.8411,290.81981 997.95471,292.28161 C 997.9906,292.74345 999.2281,294.12642 1000.7047,295.35487 C 1009.1023,302.34118 1011.8871,304.95703 1011.4221,305.42209 C 1011.1359,305.70826 1010.1115,305.26355 1009.1456,304.43386 C 1008.1797,303.60416 1006.602,302.64604 1005.6395,302.3047 C 1004.677,301.96337 1003.8895,301.21997 1003.8895,300.6527 C 1003.8895,299.05239 1000.8971,299.4378 1000.2511,301.12132 C 999.91889,301.98698 998.42423,302.62132 996.71672,302.62132 C 995.08941,302.62132 992.77505,303.15425 991.57371,303.80562 C 988.49846,305.47301 982.54516,306.171 974.38945,305.82039 z",name:"Iğdır"},77:{path:"M 187.63945,257.29779 C 184.42207,254.66351 184.1699,253.62132 186.7499,253.62132 C 187.77315,253.62132 190.26814,252.49632 192.29431,251.12132 C 195.54101,248.91805 197.03422,248.62132 204.87484,248.62132 C 209.76796,248.62132 214.02342,248.21357 214.33143,247.7152 C 214.63944,247.21683 215.79339,247.04494 216.89577,247.33322 C 217.99815,247.6215 219.53264,247.33241 220.30575,246.69079 C 221.1876,245.95891 221.9363,245.8881 222.31494,246.50077 C 222.64689,247.03787 222.12446,247.74079 221.15397,248.0628 C 220.18348,248.3848 218.71445,250.1047 217.88945,251.88479 C 216.56601,254.74035 215.75044,255.22193 210.96069,255.97605 C 207.28071,256.55544 204.23935,256.44351 201.51939,255.62859 C 197.70731,254.48647 197.41235,254.55616 195.61475,257.02387 C 193.3108,260.18668 191.25408,260.25732 187.63945,257.29779 z",name:"Yalova"},78:{path:"M 376.44832,245.08952 C 375.3807,244.28201 373.4682,243.62132 372.19832,243.62132 C 368.88987,243.62132 366.29669,240.56955 365.52977,235.77346 C 364.90119,231.84253 364.68357,231.62132 361.44502,231.62132 C 358.84784,231.62132 357.8637,231.11555 357.3575,229.52066 C 356.9908,228.36529 357.18548,226.92529 357.79011,226.32066 C 358.39475,225.71602 358.88945,223.74669 358.88945,221.94437 C 358.88945,218.04859 359.85661,217.32983 372.29791,211.97954 C 378.82781,209.17141 381.68565,207.36042 383.00141,205.19682 C 385.13494,201.68851 390.67651,198.66272 396.87689,197.62057 C 402.82066,196.62154 403.61898,197.06094 404.41445,201.76929 C 404.78533,203.9645 405.71893,206.00239 406.48911,206.29794 C 408.73565,207.16001 408.12848,208.13311 404.53276,209.43334 C 399.78194,211.15126 397.73168,213.8414 397.13437,219.14076 C 396.69492,223.03956 396.9406,223.96884 398.7449,225.23262 C 403.83736,228.79952 403.81312,234.75507 398.69888,236.53791 C 396.70685,237.23234 395.07263,237.25454 393.85652,236.6037 C 391.0492,235.10126 390.16152,235.40116 389.4894,238.0791 C 388.93334,240.29463 381.23455,246.66808 379.20927,246.58952 C 378.75837,246.57202 377.51594,245.89702 376.44832,245.08952 z",name:"Karabük"},79:{path:"M 612.38578,530.28771 C 611.83377,529.6462 611.51917,528.1729 611.68667,527.01372 C 612.01371,524.75056 609.54699,523.36251 602.88945,522.06341 C 598.28065,521.16408 593.67526,518.7639 594.102,517.48367 C 594.50149,516.28521 598.24997,514.02994 602.13945,512.64794 C 604.07063,511.96176 604.88945,510.97862 604.88945,509.34607 C 604.88945,508.06746 605.39512,506.51565 606.01316,505.89761 C 607.50621,504.40456 610.48066,507.13813 611.41421,510.86129 C 611.95533,513.01937 612.98132,513.83552 616.24534,514.70432 C 621.38858,516.07332 623.49761,517.904 624.92936,522.24224 C 625.78807,524.84417 626.60169,525.62132 628.467,525.62132 C 629.96802,525.62132 630.88945,525.04303 630.88945,524.101 C 630.88945,522.82439 631.52342,522.9041 634.84424,524.59826 L 638.79903,526.61584 L 636.50226,529.09409 C 634.47325,531.28344 633.80896,531.45862 630.80407,530.59683 C 626.50512,529.36391 615.5969,529.32474 614.33945,530.53771 C 613.76103,531.09567 612.99687,530.99788 612.38578,530.28771 z",name:"Kilis"},80:{path:"M 570.02867,508.61782 C 568.73023,507.51975 566.40454,506.62132 564.86045,506.62132 C 559.72489,506.62132 558.88945,505.78399 558.88945,500.63678 C 558.88945,494.49178 557.1188,492.775 552.50262,494.44424 C 548.02486,496.06342 547.77384,495.96917 549.05791,493.15093 C 549.9241,491.24985 549.88295,490.31841 548.87933,489.10912 C 547.78861,487.79488 547.90193,487.09446 549.57174,484.82951 C 550.66986,483.34 551.86557,480.88382 552.22888,479.37132 C 552.59219,477.85882 553.18528,475.38382 553.54684,473.87132 C 553.90841,472.35882 555.41301,468.87132 556.8904,466.12132 C 559.48836,461.28551 559.73565,461.11106 564.42094,460.80885 L 569.2653,460.49639 L 566.82738,462.62311 C 565.48652,463.7928 564.83945,464.95323 565.38945,465.20183 C 569.16941,466.91038 569.30007,467.31154 568.1285,473.61134 C 566.53928,482.15694 567.58886,484.62132 572.81765,484.62132 C 575.00538,484.62132 577.90833,484.11421 579.26866,483.4944 C 583.04447,481.77403 586.10905,483.18561 589.17192,488.05596 L 591.95438,492.48044 L 586.92418,497.1856 C 583.59274,500.30178 581.54249,503.19611 580.85317,505.75604 C 580.16247,508.32112 579.23666,509.62591 578.10091,509.63497 C 577.15961,509.64248 575.48945,509.86591 574.38945,510.13148 C 573.24874,510.40687 571.37515,509.75653 570.02867,508.61782 z",name:"Osmaniye"},81:{path:"M 307.88945,255.62132 C 307.88945,255.04898 304.86699,254.62132 300.82206,254.62132 C 294.20975,254.62132 293.79555,254.49254 294.38945,252.62132 C 295.26487,249.86311 294.07717,246.62132 292.19122,246.62132 C 289.20133,246.62132 291.36155,239.78961 295.4761,236.23286 C 298.19807,233.8799 299.18518,232.21735 299.27205,229.83944 C 299.3625,227.36343 299.84847,226.60599 301.38945,226.53922 C 302.48945,226.49155 305.97313,226.12973 309.13096,225.73518 C 314.74121,225.0342 314.9393,225.09328 317.79563,228.31956 C 320.36225,231.21861 321.32378,231.62132 325.67912,231.62132 C 333.99154,231.62132 336.88945,232.53993 336.88945,235.17489 C 336.88945,236.44186 336.19927,238.16865 335.35571,239.0122 C 333.60821,240.7597 327.65948,242.60748 323.75446,242.61574 C 320.42442,242.62279 317.88945,246.29455 317.88945,251.11089 C 317.88945,254.01211 317.41482,254.85128 315.32435,255.64607 C 311.9967,256.91124 307.88945,256.89757 307.88945,255.62132 z",name:"Düzce"}},height:744.09448,width:1052.3622});
Index: public/vendors/vmap/maps/jquery.vmap.ukraine.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.ukraine.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.ukraine.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add Ukraine Map Data Points */ /** @author: DariyGRAY <https://github.com/dariygray> <dariy.gray@gmail.com> */
+jQuery.fn.vectorMap('addMap', 'ukraine_ua', {"width":1350,"height":950,"paths":{"05":{"path":"M517.4,446.91c-0.273-0.71-0.666-1.749-0.883-2.313-0.292-0.784-1.021-2.306-1.158-3.125-0.127-0.756,0.082-2.287,0.082-3.044,0-0.673-0.082-2.687-0.082-2.687l-0.638-4.485,2.725-1.758s-1.494-4.318-1.803-5.813c-0.438-2.079-0.866-6.325-0.921-8.446-0.054-2.124,0.474-8.493,0.474-8.493l5.887-5.768s0.766-0.229,0.884-0.438c0.236-0.409-0.173-1.412-0.118-1.885,0.055-0.438,0.528-1.24,0.519-1.676-0.009-0.447-0.584-1.241-0.602-1.687-0.009-0.328,0.365-1.285,0.365-1.285l5.203-2.324h1.039l0.082-1.676,3.965,0.557,4.091,1.084,4.565,2.241,2.761-4.164,3.563,1.247,1.44-2.969-3.763-1.523,0.164-7.043,0.72-3.773-2.287-4.118,3.69-2.489-1.321-3.006-4.492-0.556-1.677-3.245,3.244-1.804,0.238-5.204-3.163-1.603,4.565-6.853,2.562,0.127,0.519-1.403-3.517-1.486,0.602-4.046,2.998-1.485-0.848-3.444,0.646-0.191s0.911-0.975,1.285-1.203c0.629-0.401,2.051-0.884,2.761-1.085,0.701-0.2,2.123-0.546,2.844-0.519,0.747,0.027,2.159,0.583,2.888,0.755,1.084,0.274,3.244,0.922,4.365,1.049,1.767,0.191,5.358,0.108,7.126-0.127,1.412-0.183,4.228-0.83,5.53-1.395,0.902-0.401,3.317-2.169,3.317-2.169l6.771,3.363,1.567-0.274,0.355-5.166,1.85,0.556,1.358,2.888,4.127,0.237,2.962,4.247,1.721-5.403,4.284-0.047,1.44,3.208,4.008,0.437-0.801-5.321,3.363-0.2,4.893-6.653,7.125,7.928-2.122,4.009,2.561,4.966-4.047,5.368,4.612,4.283-2.37,3.881,0.884,1.531,14.781,0.036,3.161,0.921,1.64-0.921-1.12-2.076,4.774-1.933,1.641,1.723,0.802-0.839-0.282-3.928,5.548,2.169,2.296,3.143-2.079,2.297,6.353,15.172-6.516,4.703,6.033,8.483,3.792-0.474,0.108,4.802,1.021,1.713,3.945-0.054,0.11,2.24-0.591,0.091-2.506,0.392,3.043,8.064-3.791,3.892-3.152,1.659-0.055,6.57,2.889-0.218,1.011,4.063-5.495,3.791,1.914,4.273,4.921-2.834,1.494,0.592,0.374,7.737,9.395,9.832-3.098,2.934,6.46,5.13,0.164,2.288,1.175,2.515,1.495,0.856v3.518l1.386,4.811-2.351,1.869,0.255,2.104,0.018,0.138-1.175,0.911-2.461,3.627-3.253-1.596-2.459,2.079,0.593,2.562-8.494,11.272,2.989,2.296,0.182,2.905,0.027,0.456-3.144,3.583-2.625-2.087-2.715,2.45,4.219,4.604,0.045,6.14-2.989-0.429-0.045-4.064-6.197-1.011-0.856,4.01-5.23-0.273-1.549-3.361-11.91,2.987-4.811-6.241-2.133-0.22-7.053-7.526-3.735,5.659-4.165,0.164-2.187,7.689-5.001,0.265c-0.055-0.237-0.119-0.464-0.183-0.638-0.265-0.802-0.847-2.414-1.331-3.098-0.265-0.373-0.947-1.003-1.34-1.23-0.655-0.391-2.159-0.783-2.879-1.012-1.139-0.373-3.481-0.902-4.593-1.34-0.782-0.3-2.231-1.147-2.988-1.493-0.71-0.33-2.104-1.175-2.89-1.231-0.664-0.045-1.921,0.512-2.56,0.693-0.684,0.199-2.05,0.627-2.725,0.857-0.401,0.135-1.322,0.264-1.603,0.583-0.248,0.291-0.248,1.12-0.32,1.502-0.109,0.612,0.009,1.969-0.374,2.451-0.237,0.31-1.058,0.619-1.439,0.594-0.82-0.073-2.278-1.111-2.779-1.77-0.418-0.535-0.683-1.938-0.803-2.614-0.099-0.601,0.265-1.97-0.108-2.451-0.256-0.345-1.222-0.474-1.65-0.539-0.528-0.072-1.641,0.238-2.142,0.057-0.52-0.192-1.485-0.921-1.649-1.44-0.137-0.418,0.346-1.274,0.418-1.712,0.129-0.704,0.63-2.215,0.274-2.836-0.255-0.418-1.321-0.729-1.822-0.791-0.565-0.084-1.787,0.028-2.288,0.319-0.492,0.273-0.847,1.61-1.393,1.757-0.419,0.111-1.276-0.354-1.605-0.637-0.555-0.493-0.957-2.05-1.494-2.561-0.474-0.464-1.704-1.086-2.352-1.231-0.629-0.156-1.959,0.02-2.614,0.048-0.611,0.026-1.868,0.362-2.451,0.162-0.455-0.154-1.186-0.873-1.45-1.284-0.419-0.665-0.574-2.314-0.901-3.043-0.274-0.574-0.938-1.676-1.394-2.133-0.656-0.667-2.379-1.531-3.145-2.078-0.847-0.609-2.487-1.876-3.262-2.569-0.892-0.802-2.542-2.579-3.362-3.471-0.711-0.767-1.968-2.479-2.78-3.153-0.582-0.483-1.904-1.266-2.614-1.542-0.775-0.308-2.442-0.508-3.253-0.7-1.103-0.254-3.363-0.629-4.384-1.121-0.456-0.218-1.238-0.875-1.603-1.23-0.501-0.482-1.185-1.787-1.758-2.188-0.557-0.372-1.896-0.729-2.571-0.801-0.446-0.045-1.394-0.017-1.813,0.164-0.457,0.2-1.048,0.975-1.495,1.368-0.52-0.612-1.348-1.594-1.658-2.06-0.539-0.838-1.568-2.597-1.795-3.572-0.219-0.912,0.2-2.833,0.036-3.763-0.1-0.546-0.602-1.558-0.802-2.078-0.02-0.14-0.06-0.26-0.1-0.37","name":"Вінницька область"},"07":{"path":"M447.53,198.26c0.062,0.584,0.044,1.768-0.028,2.351-0.054,0.475-0.164,1.469-0.428,1.868-0.693,1.04-3.071,2.152-4.055,2.908-0.455,0.354-1.466,0.983-1.768,1.475-0.374,0.611-0.555,2.087-0.638,2.797-0.072,0.63-0.199,1.915-0.027,2.516,0.127,0.428,0.692,1.138,0.967,1.494,0.336,0.438,1.33,1.102,1.521,1.631,0.118,0.329,0.045,1.074-0.055,1.412-0.091,0.283-0.383,0.857-0.638,1.012-0.391,0.237-1.367,0.073-1.822,0.11-0.939,0.073-2.825,0.245-3.765,0.373-0.673,0.09-2.058,0.164-2.669,0.456-0.52,0.246-1.457,1.01-1.731,1.521-0.374,0.674-0.318,2.287-0.456,3.044-0.164,0.902-0.501,2.715-0.747,3.608-0.238,0.856-0.875,2.524-1.176,3.362-0.218,0.61-0.766,1.796-0.912,2.425-0.081,0.364-0.091,1.102-0.127,1.467-0.054,0.483-0.155,1.457-0.272,1.922-0.083,0.365-0.137,1.259-0.474,1.421-0.31,0.146-0.976-0.31-1.258-0.482-0.246-0.146-0.729-0.493-0.855-0.747-0.21-0.401-0.019-1.395-0.183-1.814-0.164-0.4-0.656-1.175-1.048-1.367-0.355-0.173-1.204,0-1.604,0-0.519,0-1.658,0.255-2.104-0.027-0.383-0.236-0.674-1.194-0.803-1.631-0.108-0.383,0-1.23-0.154-1.595-0.183-0.419-0.83-1.084-1.185-1.368-0.473-0.382-1.613-0.856-2.16-1.147-0.519-0.273-1.503-1.204-2.077-1.094-0.21,0.045-0.474,0.447-0.565,0.638-0.173,0.393-0.118,1.275-0.237,1.686-0.109,0.374-0.373,1.158-0.656,1.431-0.41,0.383-1.53,0.691-2.086,0.802-0.757,0.146-2.306,0.045-3.081,0.036-0.982,0-2.942-0.073-3.926-0.082-0.72,0-2.188-0.173-2.88,0.046-0.611,0.182-1.741,0.893-2.124,1.403-0.383,0.501-0.538,1.813-0.765,2.396-0.127,0.337-0.273,1.148-0.601,1.285-0.384,0.164-1.176-0.509-1.604-0.564-0.475-0.055-1.532-0.091-1.915,0.2-0.373,0.282-0.601,1.275-0.683,1.731-0.11,0.564,0.108,1.75,0,2.314-0.083,0.456-0.411,1.349-0.684,1.722-0.209,0.292-0.783,0.757-1.121,0.884-0.466,0.173-1.514,0.209-2.005,0.082-0.666-0.173-1.75-1.121-2.359-1.44-0.447-0.237-1.35-0.702-1.842-0.802-0.656-0.137-2.077-0.254-2.687,0.037-0.42,0.2-1.112,0.984-1.194,1.44-0.091,0.491,0.438,1.448,0.676,1.885,0.29,0.52,1.21,1.35,1.483,1.887,0.247,0.464,0.584,1.504,0.602,2.041,0.019,0.52-0.319,1.531-0.447,2.041-0.163,0.702-0.728,2.078-0.756,2.797-0.018,0.557,0.146,1.705,0.437,2.168,0.283,0.438,1.331,0.857,1.686,1.241,0.283,0.309,0.793,1.029,0.884,1.439,0.064,0.301,0.019,0.965-0.164,1.204-0.164,0.217-0.729,0.427-1.002,0.436-0.273,0.019-0.766-0.318-1.039-0.318-0.209,0-0.802,0.245-0.802,0.245l1.084,3.363-3.891,1.002v3.9l-3.281-0.703-0.484-4.802s-0.318-1.194-0.601-1.484c-0.282-0.283-1.111-0.475-1.476-0.639-0.538-0.236-1.604-0.711-2.123-0.957-0.328-0.154-0.938-0.573-1.285-0.646-0.483-0.101-1.476,0.037-1.959,0.118-0.619,0.11-1.786,0.602-2.406,0.683-0.336,0.045-1.038-0.091-1.366,0-0.492,0.137-1.294,0.82-1.758,1.048-0.301,0.137-0.912,0.429-1.24,0.474-1.504,0.209-4.693,0.091-6.05-0.602-0.32-0.164-0.848-0.738-0.958-1.076-0.127-0.382,0.155-1.202,0.155-1.604,0.01-0.49-0.155-1.967-0.155-1.967l-4.572-2.598-3.163-1.402s-0.483-0.965-0.52-1.322c-0.063-0.656,0.392-1.922,0.483-2.569,0.109-0.784,0.381-2.37,0.319-3.162-0.027-0.393-0.155-1.211-0.401-1.522-0.201-0.246-0.92-0.347-1.121-0.601-0.456-0.575-0.501-2.151-0.757-2.844-0.127-0.319-0.346-1.012-0.61-1.239-0.546-0.474-2.059-0.639-2.761-0.838-0.792-0.238-2.442-0.557-3.199-0.884-0.4-0.174-1.194-0.592-1.485-0.92-0.347-0.391-0.793-1.376-0.875-1.886-0.055-0.246,0.163-0.756,0.072-1.003-0.155-0.427-0.938-1.001-1.276-1.321-0.3-0.273-0.838-1.011-1.248-1.039-0.555-0.026-1.438,0.884-1.876,1.24-0.402,0.33-1.085,1.084-1.45,1.449-0.319,0.319-0.819,1.294-1.276,1.276-0.355-0.01-0.674-0.829-0.92-1.077-1.713-1.73-5.495-4.783-7.335-6.367-0.939-0.813-2.908-2.343-3.763-3.245-0.448-0.484-1.331-1.485-1.605-2.087-0.337-0.766-0.364-2.498-0.637-3.28-0.146-0.419-0.538-1.204-0.912-1.896,0-0.593-0.063-1.468-0.208-1.915-0.183-0.546-0.966-1.44-1.203-1.958-0.264-0.584-0.692-1.814-0.757-2.442-0.064-0.658,0-2.015,0.274-2.607,0.264-0.565,1.211-1.458,1.721-1.805,0.393-0.254,1.286-0.528,1.722-0.683,0.885-0.301,2.644-0.948,3.564-1.075,0.765-0.11,2.341,0.228,3.089,0.036,0.355-0.091,1.157-0.374,1.284-0.72,0.238-0.665-0.61-2.049-1.002-2.643-0.511-0.765-1.969-1.949-2.688-2.523-0.775-0.619-2.542-1.577-3.28-2.241-0.765-0.693-2.104-2.288-2.642-3.162-0.393-0.647-0.912-2.06-1.167-2.77-0.292-0.802-0.839-2.433-0.993-3.281-0.183-0.957-0.01-2.953-0.284-3.882-0.173-0.592-0.893-1.612-1.167-2.168-0.4-0.802-1.222-2.416-1.476-3.281-0.31-1.039-0.474-3.225-0.684-4.283-0.245-1.211-0.647-3.69-1.167-4.812-0.537-1.185-2.195-3.253-3.043-4.246-0.748-0.875-2.522-2.37-3.28-3.245-0.62-0.719-1.851-2.215-2.242-3.08-0.264-0.593-0.61-1.878-0.564-2.524,0.063-0.984,0.829-2.861,1.367-3.682,0.483-0.756,2.014-1.813,2.561-2.524,0.309-0.409,0.865-1.303,1.002-1.804,0.19-0.711,0.2-2.204,0.036-2.925-0.164-0.748-1.066-2.042-1.321-2.762-0.128-0.382-0.292-1.165-0.355-1.566-0.128-0.711-0.21-2.168-0.328-2.88-0.064-0.437-0.555-1.33-0.356-1.722,0.192-0.374,1.203-0.418,1.523-0.684,0.354-0.291,0.91-1.078,1.038-1.519,0.182-0.604,0.018-1.896-0.036-2.524-0.074-0.879-0.483-2.607-0.565-3.483-0.064-0.687-0.282-2.106-0.073-2.763,0.165-0.525,0.902-1.404,1.321-1.762,0.51-0.45,1.759-1.087,2.396-1.322,0.428-0.156,1.321-0.393,1.769-0.363,0.573,0.04,1.695,0.429,2.16,0.763,0.41,0.29,0.856,1.25,1.238,1.561,0.356,0.288,1.212,0.655,1.649,0.801,0.437,0.15,1.404,0.185,1.841,0.361,0.73,0.296,2.05,1.197,2.643,1.722,0.438,0.39,1.23,1.274,1.486,1.802,0.172,0.389,0,1.398,0.31,1.681,0.437,0.386,1.786,0.377,2.333,0.162,0.729-0.293,1.531-1.795,2.124-2.321,0.546-0.497,1.694-1.442,2.359-1.764,0.803-0.391,2.671-0.476,3.444-0.921,0.684-0.396,1.75-1.616,2.242-2.244,0.265-0.34,0.52-1.248,0.884-1.481,0.757-0.493,2.716-0.198,3.6-0.4,0.938-0.215,2.789-0.833,3.646-1.282,0.892-0.468,2.587-1.608,3.244-2.363,0.637-0.728,1.503-2.5,1.839-3.405,0.393-1.027,0.72-3.224,1.002-4.288,0.192-0.684,0.539-2.078,0.848-2.719,0.301-0.632,0.975-1.943,1.559-2.325,0.975-0.631,3.408-0.708,4.564-0.801,1.358-0.107,4.092-0.025,5.45,0.081,1.057,0.083,3.143,0.605,4.2,0.6,0.739-0.002,2.187-0.471,2.925-0.44,0.838,0.034,2.415,0.662,3.245,0.762,1.958,0.237,5.923,0.08,7.891,0.08,1.913,0,5.741,0.023,7.655-0.08,1.951-0.104,5.85-0.362,7.763-0.762,1.176-0.245,3.417-1.131,4.565-1.481,0.884-0.269,2.624-0.876,3.526-1.002,0.519-0.071,1.567-0.071,2.087,0,0.556,0.076,1.676,0.319,2.16,0.602,0.591,0.35,1.375,1.552,1.922,1.962,0.939,0.695,2.999,1.875,4.128,2.162,0.656,0.169,2.042,0,2.725,0.041,1.431,0.087,4.283,0.528,5.723,0.603,0.793,0.039,1.905,0.044,3.081,0.033,0.082,0.698,0.336,1.68,0.619,2.143,0.273,0.453,1.121,1.152,1.576,1.415,0.346,0.195,1.131,0.415,1.522,0.482,0.747,0.125,2.288,0.158,3.044,0.079,0.592-0.063,1.859-0.939,2.323-0.561,0.301,0.247,0.064,1.182-0.056,1.547-0.155,0.469-0.738,1.323-1.12,1.631-0.41,0.325-1.531,0.458-1.95,0.774-0.383,0.29-1.003,1.072-1.176,1.521-0.146,0.38-0.027,1.233-0.137,1.629-0.154,0.577-0.847,1.59-1.038,2.161-0.138,0.409-0.511,1.298-0.32,1.684,0.109,0.214,0.638,0.322,0.856,0.427,0.2,0.101,0.675,0.232,0.83,0.401,0.291,0.328,0.527,1.22,0.609,1.655,0.128,0.677,0.192,2.077,0.055,2.75-0.146,0.683-0.838,1.923-1.176,2.538-0.273,0.505-0.975,1.433-1.23,1.949-0.201,0.402-0.501,1.251-0.637,1.682-0.118,0.372-0.247,1.158-0.402,1.522-0.172,0.392-0.619,1.121-0.911,1.44-0.3,0.327-0.984,0.957-1.412,1.094-0.319,0.108-1.03,0.045-1.368-0.027-0.354-0.083-0.993-0.647-1.357-0.584-0.173,0.026-0.475,0.311-0.51,0.482-0.073,0.419,0.574,1.158,0.774,1.541,0.4,0.747,1.367,2.141,1.685,2.916,0.22,0.537,0.674,1.686,0.583,2.268-0.045,0.337-0.519,0.885-0.72,1.176-0.136,0.209-0.51,0.556-0.583,0.802-0.146,0.482,0.045,1.502,0.11,1.996,0.044,0.447,0.063,1.375,0.318,1.74,0.218,0.318,1.03,0.529,1.303,0.802,0.237,0.227,0.574,0.793,0.692,1.094,0.155,0.382,0.282,1.212,0.328,1.631,0.063,0.693,0.037,2.077-0.036,2.779-0.037,0.411-0.401,1.239-0.319,1.65,0.109,0.501,0.865,1.256,1.158,1.686,0.254,0.391,0.792,1.166,1.038,1.576,0.21,0.355,0.428,1.239,0.775,1.467,0.236,0.155,0.865,0.146,1.147,0.082,0.356-0.09,0.921-0.665,1.277-0.756,0.282-0.064,0.893-0.055,1.157,0.064,0.328,0.146,0.766,0.784,1.039,1.038,0.209,0.192,0.592,0.793,0.875,0.748,0.329-0.055,0.484-0.875,0.675-1.148,0.3-0.438,0.912-1.385,1.385-1.631,0.337-0.174,1.175-0.328,1.522-0.165,0.191,0.102,0.373,0.52,0.428,0.73,0.127,0.482-0.046,1.493-0.055,1.995-0.008,0.939-0.155,2.826,0.028,3.746,0.091,0.456,0.474,1.321,0.692,1.73,0.393,0.711,1.394,2.006,1.896,2.644,0.465,0.583,1.577,1.612,1.977,2.242,0.33,0.529,0.822,1.695,0.958,2.296,0.128,0.547,0.072,1.668,0.11,2.215,0.027,0.374,0,1.166,0.164,1.494,0.237,0.492,1.212,1.094,1.576,1.495,0.675,0.765,1.887,2.414,2.451,3.263,0.201,0.29,0.593,0.874,0.721,1.202,0.2,0.475,0.583,1.494,0.483,2.004-0.073,0.375-0.665,0.948-0.901,1.249-0.302,0.375-0.894,1.121-1.258,1.421-0.355,0.293-1.121,0.903-1.577,0.957-0.347,0.046-0.993-0.346-1.34-0.4-0.373-0.055-1.166-0.137-1.512,0-0.219,0.083-0.575,0.392-0.675,0.592-0.191,0.365-0.172,1.222-0.182,1.622-0.018,0.502-0.109,1.55,0.127,1.978,0.22,0.392,1.048,0.875,1.45,1.066,0.547,0.283,1.741,0.601,2.342,0.702,0.445,0.063,1.357-0.065,1.795,0.055,0.546,0.146,1.649,0.609,1.995,1.065,0.39,0.46,0.5,1.62,0.55,2.18","name":"Волинська область"},"12":{"path":"M885.82,555.97c-0.558-0.117-1.141-0.265-1.504-0.365-0.447-0.117-1.731-0.592-1.731-0.592l-1.678-6.133-0.518-6.807,5.767-4.41-1.321-6.123,1.796-0.883-0.035-1.923-2.344-3.737s0.53-0.411,0.566-0.609c0.036-0.247-0.22-0.731-0.401-0.885-0.201-0.183-0.775-0.282-1.038-0.319-0.237-0.036-0.966,0-0.966,0l-0.613-7.965,0.837-3.807c0.074,0.018,0.13,0.026,0.195,0.018,0.272-0.018,0.672-0.502,0.919-0.637,0.694-0.395,2.196-0.96,2.925-1.287,0.768-0.336,2.271-1.049,3.043-1.357,0.794-0.318,2.416-0.885,3.243-1.121,0.356-0.099,1.15-0.089,1.442-0.319,0.273-0.228,0.527-0.938,0.601-1.284,0.056-0.265,0.01-0.811-0.045-1.076-0.083-0.475-0.457-1.358-0.602-1.804-0.202-0.664-0.721-1.985-0.758-2.688-0.02-0.383,0.037-1.222,0.282-1.521,0.248-0.299,1.057-0.575,1.442-0.556,0.264,0.008,0.782,0.282,0.964,0.473,0.357,0.401,0.592,1.494,0.758,2.004,0.182,0.602,0.346,1.869,0.602,2.443,0.154,0.347,0.464,1.222,0.847,1.24,0.301,0.017,0.603-0.712,0.792-0.959,0.199-0.254,0.574-0.782,0.765-1.039,0.211-0.299,0.758-0.848,0.84-1.201,0.092-0.39-0.347-1.213-0.236-1.604,0.09-0.337,0.592-0.874,0.874-1.083,0.31-0.221,1.029-0.484,1.403-0.559,0.711-0.135,2.168,0.02,2.887,0,0.539-0.017,1.733,0.212,2.162-0.118,0.235-0.189,0.19-0.91,0.365-1.163,0.228-0.355,0.9-0.922,1.273-1.122,0.476-0.266,1.568-0.429,2.088-0.603,0.52-0.173,1.867-0.246,2.041-0.757,0.109-0.347-0.838-0.846-0.802-1.202,0.037-0.427,0.802-1.064,1.202-1.239,0.311-0.146,1.066,0.119,1.358-0.044,0.42-0.238,0.957-1.131,1.04-1.604,0.117-0.666-0.511-1.969-0.594-2.642-0.109-0.821,0.117-2.527-0.128-3.327-0.117-0.401-0.557-1.165-0.874-1.44-0.248-0.199-0.901-0.347-1.203-0.436-0.174-0.057-0.546-0.057-0.683-0.164-0.319-0.266-0.631-1.103-0.639-1.522-0.009-0.455,0.475-1.285,0.639-1.723,0.208-0.547,0.774-1.612,0.839-2.196,0.19-1.694-0.729-5.048-0.958-6.735-0.128-0.955-0.411-2.879-0.482-3.843-0.037-0.557-0.192-1.705-0.037-2.243,0.146-0.52,0.855-1.358,1.157-1.804,0.191-0.283,0.737-0.773,0.801-1.12,0.074-0.348-0.381-1.012-0.362-1.358,0.027-0.328,0.28-0.984,0.527-1.203,0.229-0.209,0.883-0.265,1.158-0.4,0.263-0.137,0.684-0.603,0.964-0.684,0.355-0.102,1.141-0.066,1.486,0.081,0.61,0.264,1.96,1.841,1.96,1.841l6.89-4.529,6.442-6.562-0.885-0.765-1.915-0.081-4.69-4.483-6.524,0.246-1.004-5.213s0.84-0.911,1.204-1.085c0.254-0.109,0.847-0.054,1.12-0.118s0.819-0.218,1.039-0.4c0.254-0.211,0.418-0.93,0.683-1.122,0.339-0.228,1.212-0.19,1.602-0.318,0.412-0.127,1.169-0.52,1.559-0.684,0.221-0.082,0.667-0.41,0.885-0.32,0.384,0.165,0.612,1.113,0.685,1.522,0.083,0.511-0.354,1.568-0.165,2.042,0.147,0.346,1.122,0.967,1.122,0.967l8.894,0.154,0.757-1.24-1.796-6.843h3.08l0.073-2.789c0.602,0.393,1.186,0.785,1.558,1.077,0.803,0.628,2.251,2.077,2.988,2.778,0.785,0.738,2.215,2.37,3.101,2.99,0.755,0.527,2.486,1.192,3.309,1.603,0.7,0.339,2.058,1.103,2.777,1.386,0.828,0.319,2.597,0.639,3.418,0.965,0.645,0.256,1.929,0.83,2.459,1.276,0.748,0.646,1.696,2.46,2.342,3.208,0.666,0.756,2.158,2.096,2.889,2.779,0.609,0.565,1.877,1.648,2.459,2.241,0.674,0.684,1.842,2.241,2.562,2.879,0.659,0.592,2.133,1.576,2.881,2.033,0.7,0.418,2.34,0.893,2.888,1.494,0.684,0.766,0.775,3.107,1.495,3.846,0.482,0.492,1.878,0.955,2.56,1.065,0.767,0.126,2.415,0.146,3.098-0.209,0.456-0.218,1.276-1.039,1.185-1.495-0.092-0.509-1.483-0.583-1.931-0.856-0.41-0.253-1.203-0.838-1.494-1.23-0.429-0.583-0.775-2.031-1.123-2.67-0.416-0.765-1.42-2.205-1.976-2.878-0.958-1.185-3.18-3.273-4.22-4.383-1.203-1.286-3.344-4.111-4.702-5.231-0.618-0.521-1.849-1.094-2.869-1.659-0.057-0.856-0.147-1.959-0.057-2.579,0.103-0.583,0.229-2.096,0.803-2.242,0.338-0.082,0.712,0.756,1.003,0.922,0.319,0.181,1.113,0.609,1.402,0.4,0.603-0.418,0.12-2.196,0.202-2.925s0.465-2.177,0.445-2.923c-0.009-0.229-0.082-0.712-0.208-0.921-0.229-0.393-1.102-0.819-1.359-1.193-0.309-0.465-0.619-1.577-0.719-2.124-0.191-1.002-0.246-3.033-0.201-4.045,0.026-0.691,0.11-2.086,0.365-2.725,0.181-0.491,1.021-1.229,1.192-1.722,0.475-1.33-0.52-4.52,0.364-5.604,0.282-0.355,1.386-0.191,1.724-0.484,1.039-0.892,0.976-4.473,2.243-5.011,2.021-0.855,6.186,3.654,8.291,3.008,0.801-0.247,1.376-2.123,2.005-2.725,0.364-0.419,1.274-1.111,1.821-1.439,0.64-0.464,2.098-1.249,2.825-1.686,0.455-0.311,1.457-0.975,1.914-1.276,0.729-0.428,2.277-1.111,3.007-1.603,0.273-0.265,0.82-0.976,1.274-1.203,0.548-0.329,1.823-0.529,2.368-0.801,0.547-0.273,1.46-1.076,2.007-1.367,0.546-0.256,1.55-0.784,2.097-0.793,0.546-0.008,1.548,0.355,1.911,0.683,0.365,0.256,0.456,1.34,0.913,1.395,0.364,0.055,0.729-0.765,1.003-1.002,0.271-0.255,0.909-0.849,1.272-0.957,0.458-0.136,1.459,0.009,1.918,0.2,0.453,0.191,1,1.066,1.456,1.276,0.548,0.282,1.823,0.638,2.461,0.529,0.364-0.063,0.909-0.546,1.275-0.775,0-0.027,0.09-0.054,0.09-0.073,0.366-0.2,1.187-0.593,1.64-0.675,0.275-0.055,0.822-0.1,1.004,0,0.364,0.128,0.819,0.903,1.184,0.994,0.365,0.119,1.186-0.282,1.643-0.355,0.453-0.072,1.274-0.291,1.638-0.236,0.638,0.063,1.915,0.547,2.37,0.911,0.547,0.355,1.276,1.294,1.548,1.849,0.184,0.583-0.271,1.896,0,2.479,0.094,0.41,0.73,1.085,1.095,1.322,0.456,0.292,1.549,0.428,2.003,0.601,0.731,0.247,2.189,0.684,2.826,1.085,0.64,0.408,1.642,1.584,2.187,2.123,0.639,0.583,1.734,1.876,2.461,2.36,1.002,0.674,3.281,1.394,4.374,2.004,0.729,0.465,2.095,1.75,2.824,2.206,0.457,0.246,1.366,0.684,1.914,0.755,0.912,0.137,2.644-0.29,3.553-0.318,1.004-0.027,2.917,0.008,3.919,0.119,1.005,0.118,2.915,0.602,3.827,0.801,0.911,0.192,2.734,0.53,3.646,0.766,0.638,0.165,1.913,0.793,2.553,0.803,1.184,0.009,3.279-0.92,4.373-1.33,1.458-0.557,4.374-1.805,5.648-2.635,0.821-0.5,2.096-1.94,2.918-2.37,0.818-0.409,2.641-0.719,3.463-0.956,0.271-0.073,0.819-0.474,1.002-0.283,0.182,0.192-0.183,0.784-0.273,1.04-0.184,0.456-0.729,1.303-0.821,1.767-0.183,0.62-0.455,1.915-0.363,2.561,0,0.373,0.273,1.092,0.547,1.403,0.272,0.41,1.185,0.92,1.548,1.276,0.365,0.41,1.275,1.248,1.459,1.804,0.09,0.392,0,1.249-0.184,1.604-0.091,0.183-0.547,0.337-0.637,0.52-0.182,0.282-0.182,0.984-0.091,1.284,0.091,0.301,0.637,0.72,0.911,0.958,0.637,0.691,2.55,2.723,2.55,2.723l-0.181,1.968,4.646,2.599,0.273,3.289s0.183,2.241,0.456,2.924c0.183,0.383,1.096,1.312,1.096,1.312l3.096,2.77s1.369,1.205,1.914,1.44c0.638,0.291,2.28,0.037,2.824,0.519,0.639,0.52,1.094,2.214,1.004,3.008,0,0.374-0.731,0.937-0.731,1.32,0,0.593,1.096,1.422,1.276,1.96,0.274,0.492,0.547,1.548,0.547,2.086,0,0.52-0.453,1.577-0.272,2.078,0.093,0.401,0.73,1.103,1.094,1.238,0.454,0.138,1.64-0.236,1.64-0.236l10.389-11.491,3.28,2.561,4.009,2.041,2.915-3.163,3.191,1.212,0.364,0.145,5.74,0.648-0.092,3.408s0.548,0.428,0.82,0.511c0.548,0.218,1.912,0.063,2.552,0.328,0.455,0.193,1.003,1.039,1.367,1.24,0.365,0.164,1.183,0.027,1.549,0.237,0.092,0.082,0.365,0.373,0.365,0.52-0.092,0.419-0.731,1.029-1.003,1.366-0.272,0.355-0.911,0.994-1,1.401-0.183,0.458,0,1.533-0.183,1.961-0.185,0.227-0.73,0.437-0.821,0.637-0.365,0.365-0.73,1.256-0.914,1.687-0.27,0.546-0.91,2.24-0.91,2.24l0.094,10.134-2.19,1.239,0.64,2.442,8.657,0.364,1.549,9.814-2.733,1.44,0.728,6.569,1.185,3.362-5.831,5.167s-1.366-0.574-1.731-0.757c-1.275-0.528-3.736-1.657-5.01-2.004-1.277-0.348-3.829-1.021-5.106-0.765-1.001,0.199-2.733,1.396-3.461,2.041-0.547,0.509-1.641,1.703-1.912,2.405-0.548,1.048-0.821,4.527-0.821,4.527l-0.092,3.326s4.558-0.565,5.376,0.52c0.458,0.656-0.728,3.199-0.728,3.199l-4.011-0.2,0.093,2.853,3.279,4.319,0.456,0.244-6.742,0.055-0.366,2.051-11.116-0.347-1.274,2.726-1.734,0.318v-2.806l-14.761,0.483-1.003-4.321,3.646,0.211,2.097-4.593-2.553-3.309-5.377-3.471,2.28-1.658-1.002-4.164-7.2,2.833-0.912-4.063-7.836,1.286-0.273-3.319-5.285,1.287-1.732-4.594-11.298,7.582-4.829-3.418-8.839-3.479c0.089-0.356,0.183-0.759,0.183-1.002-0.094-0.548-0.91-1.524-1.459-1.688-0.365-0.128-1.274,0.363-1.639,0.482-0.458,0.118-1.277,0.483-1.733,0.483-0.636-0.009-2.095-0.31-2.551-0.803-0.365-0.362-0.272-1.439-0.365-1.92-0.182-0.94-0.638-2.818-0.548-3.764,0-0.566,0.548-1.605,0.641-2.17,0-0.611-0.274-1.888-0.641-2.396-0.363-0.529-1.639-0.948-2.004-1.449-0.456-0.52-0.909-1.822-1.003-2.479-0.183-1.021,0.184-3.152-0.09-4.163-0.183-0.975-1.368-2.67-1.731-3.61-0.365-0.81-0.91-2.487-1.002-3.361,0-0.83,0.271-2.479,0.546-3.282,0.183-0.755,0.819-2.169,1.094-2.888,0.273-0.729,0.729-2.287,1.277-2.88,0.453-0.526,1.821-1.002,2.368-1.438,0.639-0.503,1.729-1.631,2.097-2.325,0.272-0.509,0.637-1.694,0.454-2.241-0.089-0.411-0.729-1.093-1.184-1.212-0.547-0.154-1.824,0.264-2.278,0.564-0.638,0.365-1.641,1.458-2.006,2.087-0.363,0.574-0.363,2.042-0.729,2.562-0.364,0.399-1.548,0.528-1.822,0.957-0.364,0.472-0.183,1.684-0.274,2.241-0.09,0.564-0.09,1.758-0.363,2.25-0.273,0.374-1.003,0.975-1.367,1.121-0.546,0.182-1.822,0.182-2.278-0.081-0.456-0.238-0.817-1.258-1.184-1.605-0.547-0.455-1.642-1.148-2.278-1.44-0.638-0.3-1.912-0.737-2.643-0.884-0.729-0.163-2.279-0.191-3.007-0.318-0.729-0.119-2.006-0.61-2.733-0.638-0.821-0.038-2.462,0.218-3.19,0.473-0.455,0.165-1.64,0.492-1.823,0.966-0.09,0.356,0.365,1.139,0.64,1.358,0.546,0.328,1.73,0.217,2.278,0.245,0.454,0.02,1.365-0.027,1.823,0,0.817,0.037,2.549-0.027,3.278,0.319,0.547,0.255,1.276,1.431,1.824,1.687,0.454,0.218,1.639,0.017,2.094,0.154,0.547,0.146,1.643,0.666,2.096,0.965,0.549,0.338,1.642,1.094,2.096,1.604,0.457,0.483,1.003,1.622,1.186,2.242,0.183,0.71-0.092,2.269,0.183,2.961,0.273,0.566,1.365,1.276,1.64,1.841,0.272,0.811,0,2.679,0.184,3.526,0.272,0.747,1.184,2.05,1.547,2.716,0.549,0.92,2.004,2.589,2.28,3.609,0.181,0.855-0.276,2.649-0.093,3.523,0.093,0.822,1.093,2.298,1.093,3.128,0,0.802-0.272,2.476-0.819,3.124-0.364,0.52-1.548,1.186-2.187,1.359-0.638,0.183-2.005-0.165-2.644,0-0.637,0.162-1.912,0.767-2.369,1.284-0.546,0.667-1.002,2.424-1.002,3.28,0,0.3,0,0.703,0.09,1.121l-7.653,1.632-2.278-5.286-2.004,0.319,0.455,8.648s0.184,1.75,0.456,2.268c0.091,0.338,0.638,0.829,0.913,1.102,0.272,0.284,0.91,0.769,1.001,1.123,0.182,0.454-0.182,1.513,0,1.977,0.182,0.501,1.184,1.121,1.457,1.621,0.184,0.502,0.184,1.622,0.091,2.17,0,0.31-0.364,1.204-0.364,1.204l-5.375-2.06-0.092,8.783s0.456,0.773,0.729,0.957c0.366,0.291,1.185,0.747,1.641,0.747,0.457,0.008,1.274-0.654,1.732-0.721,0.272-0.034,0.911,0.066,1.186,0.164,0.637,0.229,1.911,0.866,2.367,1.413,0.273,0.365,0.547,1.32,0.454,1.769-0.088,0.263-0.546,0.618-0.728,0.793-0.183,0.173-0.729,0.336-0.911,0.563-0.273,0.519-0.091,1.805-0.091,2.405,0,0.475,0.091,1.467,0.364,1.896,0.092,0.31,0.638,0.783,1.002,0.956,0.363,0.235,1.367,0.235,1.731,0.565,0.455,0.456,0.729,1.824,0.82,2.45,0.183,0.676,0.457,2.06,0.364,2.726-0.091,0.346-0.455,0.993-0.819,1.204-0.273,0.235-1.185,0.207-1.458,0.427-0.275,0.146-0.639,0.545-0.729,0.802,0,0.318,0.273,0.966,0.454,1.284,0.093,0.467,0.549,1.377,0.549,1.869,0,0.666-0.273,1.985-0.549,2.615-0.181,0.573-1.092,1.532-1.092,2.131-0.092,0.456,0.182,1.396,0.364,1.759,0.364,0.466,1.457,0.938,1.914,1.231,0.364,0.199,1.094,0.619,1.641,0.893-0.182,0.064-0.274,0.117-0.456,0.155-1.276,0.328-3.918,0.155-5.192,0-0.73-0.1-2.189-0.629-2.918-0.748-0.82-0.117-2.277-0.181-3.007-0.218-1.002-0.038-2.915,0.117-3.827-0.055-1.094-0.191-3.1-0.893-4.01-1.438-0.638-0.329-1.55-1.26-2.004-1.716-0.364-0.381-0.911-1.384-1.458-1.593-0.364-0.174-1.368-0.137-1.732,0.046-0.455,0.19-0.818,1.047-1.184,1.283-0.274,0.211-1.003,0.447-1.367,0.483-0.638,0.073-1.913-0.238-2.644-0.317-0.682-0.101-2.114-0.512-2.842-0.428-0.492,0.054-1.512,0.345-1.869,0.691-0.281,0.281-0.409,1.139-0.581,1.493-0.265,0.53-0.776,1.613-1.186,2.032-0.256,0.274-0.901,0.738-1.275,0.802-0.503,0.082-1.514-0.293-1.979-0.482-0.574-0.236-1.559-1.059-2.143-1.285-0.581-0.218-1.829-0.501-2.449-0.474-0.484,0.019-1.468,0.256-1.869,0.528-0.399,0.273-0.993,1.103-1.174,1.55-0.164,0.409,0.073,1.421-0.219,1.767-0.176,0.21-0.786,0.274-1.059,0.321-0.419,0.054-1.275-0.147-1.655,0-0.293,0.098-0.685,0.665-0.969,0.8-0.291,0.136-0.958,0.218-1.275,0.21-0.41-0.01-1.266-0.101-1.604-0.317-0.529-0.338-1.057-1.578-1.506-2.033-0.499-0.512-1.602-1.531-2.285-1.759-0.521-0.175-1.659-0.055-2.197,0.054-0.345,0.074-1.073,0.275-1.331,0.526-0.198,0.204-0.198,0.868-0.427,1.024-0.264,0.181-0.957,0.055-1.286,0.055-0.299,0-0.957-0.211-1.22-0.055-0.336,0.198-0.437,1.094-0.69,1.384-0.186,0.2-0.648,0.629-0.913,0.584-0.319-0.037-0.556-0.848-0.856-0.958-0.263-0.09-0.9,0.027-1.119,0.219-0.339,0.292-0.521,1.258-0.586,1.705-0.108,0.7-0.055,2.142,0.101,2.833,0.074,0.318,0.375,0.848,0.548,1.239l-1.678-1.269-7.727,2.646-14.542,0.602-1.04-1.887s0.475-1.039,0.601-1.403c0.129-0.393,0.338-1.192,0.393-1.604,0.056-0.375,0.083-1.14,0.047-1.523-0.029-0.282-0.339-0.847-0.248-1.119,0.111-0.311,0.812-0.573,1.004-0.839,0.181-0.236,0.481-0.783,0.481-1.085,0.01-0.327-0.346-0.946-0.519-1.238-0.146-0.246-0.456-0.794-0.719-0.92-0.339-0.156-1.122-0.045-1.486,0.046-0.492,0.108-1.377,0.628-1.841,0.836-0.337,0.147-1.012,0.494-1.358,0.604-0.402,0.116-1.649,0.28-1.649,0.28l0.684,4.724-0.875,0.801-9.222,0.199s-0.673,0.548-0.793,0.802c-0.108,0.238,0.02,0.802-0.081,1.039-0.127,0.291-0.549,0.838-0.838,0.967-0.283,0.119-0.912,0.027-1.202-0.046-0.632-0.146-1.778-0.774-2.372-1.04-0.474-0.209-1.421-0.617-1.876-0.883-0.4-0.229-1.157-0.757-1.521-1.038-0.711-0.549-2.124-1.669-2.688-2.361-0.229-0.292-0.438-1.039-0.721-1.285-0.546-0.482-1.995-0.955-2.725-1.084-0.792-0.135-2.433,0.19-3.235,0.129-0.32,0-0.68-0.07-1.06-0.14","name":"Дніпропетровська область"},"14":{"path":"M1120.9,521.29l-0.456-0.244-3.279-4.319-0.093-2.853,4.011,0.2s1.186-2.543,0.728-3.199c-0.818-1.085-5.376-0.52-5.376-0.52l0.092-3.326s0.273-3.479,0.821-4.527c0.271-0.702,1.365-1.896,1.912-2.405,0.728-0.646,2.46-1.842,3.461-2.041,1.277-0.256,3.829,0.417,5.106,0.765,1.273,0.347,3.734,1.476,5.01,2.004,0.365,0.183,1.731,0.757,1.731,0.757l5.831-5.167-1.185-3.362-0.728-6.569,2.733-1.44-1.549-9.814-8.657-0.364-0.64-2.442,2.19-1.239-0.094-10.134s0.641-1.693,0.91-2.24c0.184-0.431,0.549-1.322,0.914-1.687,0.091-0.2,0.637-0.401,0.821-0.637,0.183-0.429,0-1.504,0.183-1.961,0.089-0.407,0.728-1.046,1-1.401,0.271-0.337,0.911-0.947,0.911-1.366,0.092-0.146-0.182-0.43-0.273-0.52-0.366-0.21-1.184-0.073-1.549-0.237-0.364-0.202-0.912-1.047-1.367-1.24-0.64-0.265-2.004-0.11-2.552-0.328-0.272-0.083-0.82-0.511-0.82-0.511l0.092-3.408-5.74-0.648-0.364-0.145,1.274-9.103s-1.547-2.752-2.097-3.645c-0.453-0.767-1.64-2.17-1.911-2.998-0.184-0.365-0.458-1.167-0.272-1.531,0.089-0.365,1.184-0.993,1.184-0.993l5.101-0.247,2.826,2.561,1.914-1.322,0.638-1.959,6.105,0.201,4.556,5.367,1.457-1.003-3.735-5.522,3.099-2.687,1.093,2.287,1.186-4.41,3.279-0.037,0.182,4.848,3.374-0.163-0.184-6.771,3.008-3.727,7.107-0.274-2.643-4.41s-0.273-1.257-0.092-1.64c0.184-0.638,1.458-1.468,2.006-1.84,0.638-0.438,2.37-0.739,2.914-1.286,0.365-0.328,0.729-1.276,0.914-1.722,0.18-0.519,0.271-1.686,0.637-2.16,0.455-0.683,1.73-1.722,2.46-2.122,0.455-0.283,1.73-0.401,2.186-0.72,0.273-0.192,0.729-0.685,0.821-1.003,0.091-0.482-0.365-1.467-0.365-1.959,0-0.3,0-0.967,0.273-1.166,0.183-0.201,0.821-0.164,1.095-0.155,0.727,0.018,2.004,0.473,2.643,0.52,0.728,0.045,2.096,0.1,2.641-0.166,0.548-0.199,1.277-0.947,1.552-1.402,0.271-0.445,0.364-1.494,0.364-2.005,0-0.4-0.456-1.559-0.456-1.559l-5.834-2.004-0.455-2.241,1.55-3.645,4.19,0.336,1.277-1.63,11.844,2.296,1.733-2.661,3.098,1.139,0.91,6.086,2.005,1.176,5.65,1.814s0.911-1.204,1.186-1.604c0.183-0.265,0.546-0.984,0.91-1.066,0.184-0.064,0.73,0.347,1.002,0.483,0.182,0.118,0.73,0.309,0.82,0.538,0.274,0.529,0.092,1.813-0.09,2.397-0.091,0.583-0.821,1.594-1.002,2.141-0.274,0.51-0.912,1.521-0.912,2.078,0.091,0.856,1.093,2.36,1.459,3.097,0.455,0.793,2.095,2.999,2.095,2.999l-6.743,4.966s0.911,0.875,1.275,1.066c0.729,0.338,2.279,0.548,3.007,0.692,1.186,0.22,3.464,0.73,4.556,0.693,1.003-0.027,2.827-0.511,3.737-0.802,0.638-0.173,1.642-0.766,2.188-0.912,0.271-0.072,1.002-0.3,1.185-0.1,0.363,0.255,0.183,1.249,0.272,1.648,0.091,0.411,0.548,1.139,0.64,1.549,0,0.383-0.274,1.122-0.274,1.504,0.091,0.401,0.274,1.193,0.454,1.595,0.093,0.5,0.184,1.549,0.457,1.977,0.272,0.31,0.819,0.919,1.185,0.966,0.275,0.036,0.818-0.62,1.187-0.593,0.546,0.046,1.729,0.738,1.729,1.286,0,0.41-1.275,1.066-1.275,1.066l0.545,3.899-3.005,3.892,5.648,2.569,0.182,3.043-2.916,3.846s0,2.451,0.183,3.252c0.092,0.83,0.82,2.388,0.911,3.208,0.183,0.765,0,2.387,0.364,3.1,0.364,0.782,1.641,2.021,2.278,2.559,0.729,0.556,2.37,1.193,3.1,1.768,0.273,0.274,1.001,1.332,1.001,1.332l-2.096,4.19,3.007,2.726s1.275-0.875,1.824-1.039c0.272-0.109,0.91-0.255,1.275-0.165,0.272,0.092,0.819,0.604,1.002,0.857,0.639,0.701,1.822,3.208,1.822,3.208l2.188,2.587h1.457l0.912,1.869-2.644,1.257-0.091,6.033,2.915,0.026,6.652,2.588s0.545,1.722,0.729,2.296c0.091,0.465,0.272,1.458,0.545,1.867,0.458,0.704,1.823,1.733,2.461,2.188,0.729,0.466,2.278,1.202,3.007,1.448,1.277,0.385,4.01,0.448,5.286,0.722,1.002,0.198,3.826,1.064,3.826,1.064l-0.091,4.429-0.548,1.869,2.006,0.373,0.911,5.049,3.19-1.651,8.019,0.021,0.275,2.223,5.738,2.672-0.637,1.601-0.365,4.64,2.188,1.849-0.092,1.805c-0.273-0.054-0.455-0.099-0.638-0.126-0.638-0.082-2.097,0.036-2.825,0-1.366-0.064-4.009-0.477-5.377-0.529-1.091-0.056-3.37,0.045-4.556,0.045-0.637,0.008-1.913-0.009-2.552,0-0.363,0.008-0.91-0.101-1.182,0.055-0.275,0.221-0.458,1.049-0.641,1.386-0.273,0.729-1.002,2.141-1.276,2.888-0.363,0.939-0.91,2.86-1.092,3.847-0.184,1.165-0.365,3.518-0.365,4.702,0,0.773,0.273,2.322,0.273,3.098,0,0.547,0.092,1.677-0.092,2.188-0.089,0.345-0.728,0.864-0.912,1.119-0.362,0.328-1,1.03-1.456,1.177-0.547,0.164-1.641-0.093-2.188-0.109-0.454-0.01-1.549-0.12-2.005,0-0.363,0.098-1.274,0.399-1.457,0.747-0.273,0.3-0.091,1.094-0.182,1.447,0,0.439-0.092,1.405-0.456,1.707-0.182,0.189-0.821,0.189-1.094,0.216-0.911,0.085-2.644-0.045-3.554,0-0.911,0.037-2.643,0.092-3.556,0.319-0.818,0.209-2.368,0.975-3.097,1.386-0.819,0.419-2.187,1.515-2.915,1.924-0.822,0.428-2.645,0.982-3.463,1.393-0.729,0.385-2.369,1.13-3.008,1.76-0.455,0.463-1.185,1.647-1.273,2.295-0.185,0.805,0.271,2.443,0.361,3.253,0.092,1.085,0.457,3.246,0.549,4.328,0.09,1.038,0.181,3.126,0.273,4.167,0,0.92,0.273,2.777,0.09,3.681-0.09,0.729-0.82,2.059-1.273,2.669-0.457,0.692-1.732,1.806-2.188,2.46-0.459,0.547-1.367,1.633-1.552,2.296-0.089,0.357-0.273,1.187,0,1.497,0.274,0.479,1.552,0.729,2.097,0.911,0.639,0.198,1.914,0.373,2.553,0.581,0.363,0.13,1.093,0.347,1.367,0.648,0.271,0.355,0.455,1.337,0.455,1.812,0,0.429-0.184,1.266-0.366,1.649-0.363,0.739-1.366,2.042-2.005,2.571-0.546,0.519-2.279,0.938-2.823,1.548-0.273,0.392-0.64,1.458-0.73,1.977-0.091,0.586-0.091,1.806,0,2.398,0.091,0.557,0.457,1.631,0.457,2.196,0.089,0.691,0.456,2.168,0.182,2.798-0.274,0.655-1.823,1.184-2.369,1.685-0.366,0.374-1.093,1.213-1.276,1.721-0.273,0.575,0.092,1.917-0.182,2.444-0.365,0.537-1.459,1.138-2.097,1.403-0.362,0.173-1.184,0.61-1.548,0.437-0.274-0.118-0.548-0.756-0.455-1.038,0-0.374,0.819-0.838,0.819-1.203,0.091-0.465-0.272-1.44-0.547-1.806-0.365-0.392-1.366-0.864-1.822-0.919-0.364-0.036-1.002,0.155-1.276,0.319-0.274,0.199-0.637,0.947-0.91,1.165-0.273,0.202-1.001,0.328-1.367,0.474-0.548,0.247-1.458,1.021-2.003,1.122-0.912,0.18-2.918-0.395-3.83-0.592-0.819-0.165-2.276-0.774-3.006-0.802-0.82-0.028-2.461,0.364-3.189,0.637-1.001,0.354-2.825,1.531-3.737,2.005-0.818,0.383-2.367,1.247-3.277,1.439-0.457,0.109-1.551,0.102-2.007,0.047-1.094-0.138-3.188-0.867-4.19-1.086-1.188-0.255-3.556-0.919-4.74-0.801-1.001,0.09-2.732,0.801-3.462,1.32-0.639,0.438-1.73,1.631-2.187,2.288-0.548,0.919-1.367,3.033-1.823,4.035-0.454,0.939-1.275,2.826-1.822,3.728-0.729,1.285-2.369,3.709-3.188,4.931-0.548,0.785-1.641,2.352-2.186,3.081-0.549,0.582-1.369,1.931-2.098,2.203-0.363,0.146-1.277,0.138-1.55-0.117-0.365-0.301-0.455-1.34-0.545-1.804,0-0.558,0.271-1.762,0-2.243-0.364-0.584-1.643-1.274-2.37-1.356-0.911-0.137-2.916,0.582-3.829,1.038-0.909,0.481-2.366,2.068-3.279,2.678-1.366,1.003-4.375,2.825-5.921,3.609-0.549,0.264-1.276,0.554-2.098,0.856l-2.734-4.631,3.009-3.679,3.098,1.319,3.37-1.957-0.181-3.409-0.73-5.084-2.095-2.078-2.369,1.521-3.191,0.994-2.549-2.562s0.639-1.203,0.639-1.64c0-0.738-0.366-2.232-0.822-2.842-0.456-0.657-1.821-1.505-2.46-1.961-0.638-0.454-2.005-1.164-2.641-1.685-0.548-0.546-1.55-1.833-2.007-2.523-0.183-0.294-0.728-0.956-0.547-1.239,0.455-0.776,2.918,0.573,3.736,0.08,0.273-0.173,0.456-0.819,0.456-1.13,0-0.347-0.456-0.956-0.547-1.274-0.456-0.922-1.276-2.753-1.732-3.692-0.271-0.684-0.637-2.15-1.001-2.797-0.183-0.254-0.638-0.647-0.728-0.919-0.185-0.467-0.275-1.568,0-1.97,0.271-0.419,1.458-0.772,2.002-0.684,0.455,0.101,1.003,1.048,1.459,1.287,0.271,0.146,0.82,0.31,1.185,0.363,0.364,0.083,1.365-0.054,1.732,0.117,0.272,0.102,0.544,0.603,0.819,0.684,0.639,0.174,1.82-0.171,2.461-0.282,0.909-0.172,2.731-0.5,3.554-0.968,0.363-0.197,1.001-0.781,1.184-1.155,0.091-0.328,0.091-1.086,0.091-1.439-0.091-0.72-0.455-2.123-0.455-2.844,0-0.528-0.09-1.685,0.274-2.086,0.181-0.256,0.91-0.4,1.274-0.365,0.365,0.046,1.003,0.484,1.275,0.729,0.364,0.355,1.002,1.25,1.185,1.723,0.183,0.31,0.183,1.186,0.548,1.321,0.272,0.147,1.092-0.399,1.366-0.683,0.272-0.337,0.639-1.257,0.639-1.724,0.09-0.435-0.272-1.282-0.272-1.722,0-0.846,0.729-2.424,0.91-3.242,0.271-0.813,0.729-2.416,0.819-3.245,0-0.429,0.092-1.367-0.09-1.722-0.183-0.263-0.823-0.492-1.095-0.563-0.456-0.093-1.458,0.063-1.914,0.079-0.363,0.02-1.184-0.108-1.548,0.083-0.365,0.173-0.638,0.947-0.82,1.204-0.183,0.172-0.638,0.572-0.913,0.554-0.636-0.026-1.457-1.174-1.912-1.593-0.91-0.768-2.553-2.351-3.281-3.209-0.453-0.473-1.093-1.558-1.548-2.006-0.184-0.162-0.547-0.518-0.82-0.553-0.272-0.057-0.82,0.354-1.187,0.354-0.362,0.009-1.001-0.208-1.273-0.354-0.457-0.211-1.184-0.83-1.641-1.123-0.275-0.272-0.911-0.909-1.274-1.165-0.276-0.183-0.821-0.575-1.096-0.603-0.364-0.018-1.002,0.255-1.275,0.446-0.183,0.192-0.456,0.848-0.728,1.04-0.183,0.136-0.729,0.356-0.911,0.281-0.457-0.154-1.005-1.449-1.005-1.449l-3.644-5.521-6.104,1.723-2.004-5.166,3.004-0.802,0.367-1.241-5.47,0.238,0.093-5.529-2.644-4.002-6.471-3.526,4.557-1.441-2.6-1.34z","name":"Донецька область"},"18":{"path":"M547.06,335.04l-5.121,1.531-0.356-5.485-8.528-7.217-0.082-2.597-2.889-1.485,3.846-8.575-3.044-5.248,2.487-0.794,3.527,1.003,3.882-3.572-3.926-2.36,0.519-7.372,3.845,0.565,0.401-3.043-1.44-0.201-1.64-2.605-1.567-5.487-1.878-0.037-0.246,2.643-3.161-0.127-0.483-2.359-5.122-2.324-0.046-3.326-4.482-4.684-1.003-0.155-0.118-2.324-6.005-2.524,4.92-9.175,0.282-2.124-0.756-1.204-1.887-0.273-2.278-2.524-0.145-0.264,2.041-0.966,0.374-1.549-2.406-1.714-2.296-1.595-0.374-1.767s1.138-0.984,1.496-1.33c0.865-0.848,2.587-2.561,3.307-3.527,0.529-0.702,1.494-2.205,1.768-3.043,0.191-0.602,0.264-1.877,0.264-2.516,0-0.746-0.4-2.242-0.319-2.988,0.055-0.501,0.574-1.413,0.639-1.924,0.073-0.5,0-1.53-0.11-2.021-0.118-0.594-0.802-1.65-0.847-2.243-0.036-0.438,0.201-1.311,0.374-1.712,0.181-0.447,1.011-1.13,1.066-1.605,0.054-0.464-0.446-1.338-0.638-1.758-0.3-0.655-1.029-1.895-1.394-2.515-0.228-0.383-1.039-1.058-0.957-1.494,0.055-0.328,0.92-0.492,1.066-0.802,0.191-0.392,0.019-1.321-0.054-1.759-0.119-0.701-0.538-2.087-0.857-2.725-0.292-0.592-1.522-1.477-1.549-2.132-0.009-0.41,0.547-1.12,0.857-1.395,0.364-0.309,1.322-0.563,1.767-0.747,0.739-0.3,2.196-1.048,2.989-1.174,0.383-0.056,1.194,0.263,1.549,0.108,0.418-0.182,1.065-0.983,1.175-1.439,0.045-0.229-0.191-0.675-0.219-0.911-0.054-0.466-0.191-1.44,0-1.868,0.164-0.356,0.939-0.712,1.175-1.012,0.2-0.256,0.438-0.847,0.583-1.122,0.21-0.364,0.748-1.038,0.857-1.448,0.137-0.501-0.182-1.587,0-2.079,0.163-0.446,1.229-1.439,1.229-1.439l6.779-5.933-0.373-9.658,2.142-0.219s0.729-0.31,0.957-0.429c0.419-0.218,1.358-0.565,1.604-0.956,0.246-0.394,0.281-1.377,0.155-1.823-0.101-0.374-0.611-1.021-0.904-1.276-0.282-0.247-1.193-0.346-1.338-0.702-0.256-0.629,0.647-1.951,0.802-2.616,0.182-0.72,0.173-2.288,0.536-2.934,0.229-0.401,0.932-1.202,1.386-1.229,0.411-0.019,1.058,0.666,1.339,0.965,0.546,0.575,1.249,2.023,1.705,2.669,0.328,0.456,1.395,1.759,1.395,1.759l1.12-1.066,1.23-7.798,1.758-0.375,1.285-2.562,0.938-1.01c0.275,0.555,1.04,1.239,1.404,1.595,0.283,0.281,0.875,0.819,1.23,0.965,0.301,0.127,0.966,0.228,1.286,0.164,0.555-0.128,1.42-0.957,1.922-1.23,0.756-0.418,2.342-1.138,3.153-1.439,0.62-0.238,1.959-0.474,2.561-0.757,0.419-0.191,1.32-0.61,1.548-1.009,0.264-0.475,0.146-1.651,0.055-2.188-0.1-0.566-0.428-1.705-0.801-2.133-0.292-0.337-1.193-0.592-1.549-0.856-0.301-0.228-0.965-0.712-1.066-1.076-0.118-0.401,0.11-1.312,0.374-1.65,0.201-0.253,0.856-0.51,1.175-0.591,0.402-0.092,1.249-0.11,1.649,0,0.684,0.191,1.806,1.083,2.406,1.448,0.865,0.52,2.733,1.385,3.472,2.078,0.31,0.291,0.601,1.166,0.965,1.385,0.511,0.337,1.786,0.428,2.397,0.428,0.437,0.01,1.284-0.182,1.713-0.264,1.002-0.193,3.08-0.42,4-0.856,0.729-0.337,1.913-1.441,2.515-1.978,0.565-0.5,1.603-1.585,2.132-2.132,0.402-0.411,1.049-1.395,1.549-1.659,0.338-0.173,1.139-0.346,1.495-0.208,0.519,0.19,1.14,1.193,1.449,1.657,0.411,0.629,0.938,2.069,1.33,2.716,0.483,0.819,1.804,2.232,2.187,3.097,0.247,0.566,0.319,1.833,0.539,2.406,0.1,0.255,0.282,0.847,0.529,0.957,0.547,0.245,1.73-0.418,2.304-0.582,0.83-0.239,2.469-0.794,3.307-1.012,1.004-0.274,3.027-0.794,4.056-0.911,0.966-0.11,2.925-0.137,3.9-0.055,0.639,0.064,1.877,0.418,2.506,0.483,0.438,0.044,1.339-0.101,1.769,0,0.264,0.063,0.838,0.246,0.956,0.483,0.22,0.419-0.246,1.394-0.263,1.867-0.036,1.139,0.137,3.417,0.318,4.538,0.183,1.129,0.564,3.435,1.121,4.428,0.246,0.438,0.929,1.24,1.394,1.449,0.365,0.165,1.193,0.046,1.595,0.046,0.657,0.018,2.032,0.282,2.625,0,0.373-0.174,0.902-0.894,1.066-1.275,0.191-0.447,0.146-1.45,0.209-1.924,0.091-0.656,0.174-2.004,0.429-2.615,0.346-0.829,1.531-2.224,2.133-2.889,0.729-0.792,2.277-2.351,3.208-2.879,0.537-0.311,1.758-0.584,2.351-0.747,0.883-0.247,2.679-0.648,3.581-0.858,1.012-0.245,3.125-0.492,4.055-0.965,1.312-0.666,3.599-2.661,4.482-3.837,0.256-0.346,0.61-1.139,0.703-1.549,0.081-0.411-0.119-1.257,0-1.658,0.081-0.301,0.363-0.911,0.636-1.066,0.301-0.172,1.049-0.091,1.386,0,0.384,0.092,1.157,0.429,1.387,0.748,0.527,0.71,0.473,2.615,0.7,3.471,0.465,1.74,1.75,5.112,2.295,6.834,0.439,1.366,1.286,4.11,1.65,5.494,0.265,0.976,0.757,2.916,0.912,3.9,0.127,0.793,0.046,2.433,0.264,3.208,0.265,0.911,1.258,2.562,1.768,3.362,0.347,0.557,1.212,1.559,1.595,2.087,0.264,0.346,0.593,1.267,1.003,1.431l3.17,3.8-2.086,7.207-3.308-1.868-3.9,2.188,3.846,14.426,1.339-1.286,9.923,8.539-4.638,2.998-0.055,4-2.406,0.055,0.374,2.67,5.504,6.779s-0.118,1.486-0.164,1.979c-0.046,0.517-0.356,1.584-0.21,2.085,0.192,0.674,1.44,1.594,1.705,2.242,0.2,0.474,0.492,1.567,0.264,2.032-0.172,0.365-1.02,0.666-1.384,0.846-0.474,0.247-1.476,0.611-1.977,0.803-0.393,0.156-1.44,0.191-1.595,0.592-0.137,0.318,0.347,0.975,0.583,1.229,0.336,0.348,1.257,0.739,1.704,0.903,0.647,0.236,1.986,0.601,2.669,0.593,0.675-0.009,1.997-0.411,2.624-0.647,0.293-0.109,0.839-0.729,1.121-0.583,0.292,0.146,0.156,0.957,0.209,1.275,0.119,0.738,0.574,2.206,0.484,2.943-0.092,0.747-0.711,2.178-1.176,2.779-0.647,0.829-2.45,2.031-3.363,2.56-1.03,0.593-3.325,1.276-4.382,1.813-0.602,0.301-2.297,1.394-2.297,1.394l-0.055,2.617,3.426,2.341,0.583,1.712-2.514,2.087,0.801,2.506,2.46,1.869-2.141,3.361-3.626-0.208,3.79,7.854,9.56,7.737-0.319,5.449-1.704-0.165,2.605,2.569-2.451,5.067,0.803,2.78,2.405,0.318,2.132,4.12-2.614,1.44,1.01,2.934-3.627,4.009,7.364,9.131-8.803,4.483-6.733,5.977-7.956,3.58,1.55,5.186-0.912,3.308,3.362,1.603-0.319,5.341-5.548-2.169,0.282,3.928-0.802,0.838-1.649-1.722-4.766,1.933,1.121,2.076-1.64,0.921-3.162-0.921-14.781-0.036-0.883-1.531,2.369-3.881-4.611-4.283,4.047-5.368-2.561-4.966,2.123-4.009-7.135-7.928-4.884,6.653-3.362,0.2,0.801,5.321-4.009-0.437-1.44-3.208-4.284,0.047-1.721,5.403-2.962-4.247-4.127-0.237-1.368-2.888-1.84-0.556-0.355,5.166-1.567,0.274-6.771-3.363s-2.415,1.768-3.315,2.169c-1.313,0.565-4.12,1.211-5.532,1.395-1.769,0.236-5.358,0.319-7.126,0.127-1.121-0.127-3.28-0.775-4.365-1.049-0.729-0.171-2.14-0.728-2.888-0.756-0.721-0.027-2.142,0.32-2.844,0.52-0.709,0.201-2.132,0.684-2.76,1.085-0.374,0.228-1.286,1.203-1.286,1.203l-0.66,0.24z","name":"Житомирська область"},"21":{"path":"M326.34,478.76c0.299,0.48,0.72,1.61,0.692,2.184-0.027,0.604-0.611,1.726-0.903,2.241-0.337,0.586-1.395,1.506-1.604,2.144-0.229,0.665,0.009,2.113,0,2.825-0.019,0.647-0.092,2.187-0.136,3.043-0.966-0.411-2.762-0.611-3.654-0.792-0.957-0.202-2.889-0.511-3.847-0.702-0.564-0.11-1.676-0.521-2.242-0.484-0.418,0.037-1.183,0.402-1.548,0.593-0.729,0.374-2.032,1.395-2.725,1.813-0.783,0.473-2.341,1.465-3.207,1.767-0.665,0.221-2.078,0.412-2.779,0.43-1.158,0.02-3.444-0.374-4.592-0.537-0.912-0.128-2.753-0.319-3.628-0.583-0.537-0.175-1.604-0.592-2.031-0.967-0.492-0.428-0.948-1.759-1.439-2.187-0.884-0.765-3.135-1.547-4.221-1.979-0.929-0.365-2.824-0.993-3.79-1.229-0.92-0.229-2.797-0.692-3.746-0.639-1.084,0.056-3.116,1.13-4.209,1.175-0.802,0.028-2.415-0.328-3.153-0.646-0.628-0.264-1.677-1.166-2.242-1.55-0.811-0.527-2.378-1.678-3.262-2.078-0.793-0.364-2.516-0.784-3.362-1.012-0.957-0.253-2.908-0.592-3.846-0.91-1.002-0.347-2.833-1.459-3.845-1.768-0.675-0.201-2.078-0.475-2.78-0.429-0.655,0.055-1.858,0.683-2.505,0.802-0.794,0.146-2.424,0.329-3.208,0.165-0.702-0.146-1.932-0.931-2.561-1.285-0.875-0.486-2.67-1.413-3.417-2.078-0.583-0.52-1.513-1.795-1.922-2.461-0.411-0.673-1.103-2.122-1.331-2.877-0.192-0.611-0.165-1.933-0.429-2.517-0.273-0.582-1.121-1.621-1.657-1.977-0.839-0.538-2.862-0.929-3.847-1.065-0.665-0.091-2.014-0.136-2.669,0-0.593,0.136-1.722,0.638-2.188,1.021-0.629,0.501-1.448,1.913-1.922,2.561-0.546,0.737-1.53,2.304-2.195,2.934-0.447,0.427-1.495,1.156-2.078,1.394-0.603,0.236-1.923,0.346-2.561,0.419-0.72,0.091-2.196,0.437-2.889,0.218-0.464-0.146-1.039-1.066-1.494-1.231-0.401-0.145-1.321-0.181-1.713,0-0.419,0.201-0.939,1.04-1.167,1.441-0.155,0.273-0.382,0.874-0.428,1.176-0.073,0.436,0.182,1.339,0.055,1.766-0.127,0.393-0.693,1.021-0.966,1.332-0.318,0.364-0.911,1.283-1.385,1.339-0.255,0.026-0.702-0.338-0.857-0.538-0.355-0.473-0.447-1.73-0.638-2.296-0.219-0.629-1.084-1.795-1.02-2.452,0.054-0.574,0.938-1.466,1.284-1.921,0.411-0.548,1.404-1.504,1.76-2.088,0.345-0.565,0.992-1.795,1.021-2.46,0.018-0.529-0.466-1.541-0.693-2.022-0.274-0.574-0.902-1.688-1.339-2.142-0.502-0.519-1.742-1.32-2.406-1.604-0.811-0.337-2.598-0.555-3.472-0.692-0.993-0.145-2.998-0.427-4-0.427-0.738,0-2.214,0.19-2.944,0.327-0.555,0.1-1.64,0.728-2.187,0.583-0.474-0.128-1.139-0.967-1.385-1.385-0.292-0.485-0.537-1.596-0.637-2.142-0.174-0.875-0.165-2.689-0.329-3.582-0.136-0.757-0.564-2.25-0.792-2.988-0.228-0.676-0.665-2.042-1.02-2.671-0.256-0.438-0.856-1.312-1.286-1.596-0.519-0.354-1.776-0.627-2.396-0.745-0.83-0.165-2.534-0.156-3.372-0.274-0.574-0.083-1.759-0.228-2.287-0.483-0.41-0.183-1.112-0.765-1.395-1.122-0.209-0.264-0.509-0.892-0.583-1.22-0.191-0.848,0.127-2.617,0-3.473-0.109-0.693-0.547-2.041-0.857-2.67-0.218-0.437-0.792-1.238-1.12-1.604-0.274-0.3-1.048-0.701-1.23-1.066-0.173-0.354-0.046-1.193-0.11-1.595-0.072-0.483-0.246-1.467-0.437-1.922-0.202-0.464-0.784-1.33-1.122-1.722-0.328-0.364-1.13-0.965-1.522-1.276-0.3-0.245-0.875-0.802-1.239-0.919-0.437-0.156-1.421,0.126-1.85-0.046-0.482-0.183-1.312-0.902-1.558-1.357-0.228-0.438-0.283-1.477-0.237-1.969,0.063-0.747,0.638-2.168,0.875-2.879,0.292-0.839,0.957-2.479,1.248-3.326,0.428-1.276,0.975-3.946,1.558-5.167,0.692-1.449,2.634-4.073,3.645-5.321,0.921-1.149,2.943-3.318,4.047-4.292,0.948-0.83,3.217-2.05,4.082-2.961,1.02-1.067,2.506-3.655,3.244-4.921,0.557-0.948,1.704-2.843,2.005-3.89,0.301-1.058,0.282-3.272,0.364-4.365,0.064-0.976-0.073-2.962,0.238-3.883,0.209-0.629,1.038-1.685,1.44-2.205,0.747-0.966,2.386-2.78,3.244-3.646,0.756-0.765,2.332-2.205,3.162-2.888,0.656-0.529,2.068-1.44,2.724-1.959,0.546-0.428,1.851-1.158,2.123-1.805,0.265-0.61,0.038-2.005-0.155-2.642-0.1-0.311-0.564-0.803-0.646-1.12-0.055-0.247-0.137-0.821,0.045-1.003,0.292-0.292,1.23-0.1,1.64-0.073,0.438,0.018,1.313,0.082,1.724,0.237,0.627,0.246,1.676,1.156,2.241,1.521,0.765,0.492,2.305,1.477,3.125,1.886,0.738,0.355,2.242,1.039,3.044,1.193,0.729,0.146,2.251-0.136,2.961,0.046,0.628,0.154,1.703,0.911,2.286,1.203,0.447,0.219,1.313,0.738,1.805,0.838,0.219,0.045,0.538,0.082,0.884,0.082l6.643,7.127-4.327,2.286,0.919,4.202,3.444,4.164,2.16,6.971,7.537-1.677,5.804,7.563,4.329-0.164,4.364,2.406,2.925,4.282,8.247,1.605,0.702-2.168c0.501,0.364,1.158,0.846,1.449,1.093,0.456,0.375,1.294,1.192,1.713,1.604,0.3,0.283,0.948,0.82,1.175,1.167,0.356,0.555,0.657,1.877,0.957,2.461,0.347,0.664,1.186,1.921,1.658,2.505,0.219,0.273,0.638,0.875,0.958,1.021,0.5,0.218,1.64,0.045,2.196,0.055,0.647,0,1.959-0.083,2.615-0.055,0.556,0.018,1.858-0.209,2.242,0.209,0.264,0.292,0.018,1.167,0,1.549-0.018,0.484-0.128,1.441-0.164,1.923-0.045,0.656-0.155,1.959-0.155,2.615,0,0.474-0.037,1.421,0.1,1.876,0.126,0.384,0.565,1.104,0.856,1.386,0.565,0.538,2.024,1.159,2.726,1.495,0.618,0.301,1.922,0.72,2.515,1.065,0.392,0.237,1.239,0.71,1.44,1.122,0.164,0.364,0,1.211-0.055,1.604-0.074,0.492-0.401,1.43-0.483,1.922-0.128,0.792-0.583,2.47-0.265,3.208,0.137,0.328,0.765,0.865,1.121,0.902,0.365,0.047,1.048-0.4,1.34-0.637,0.382-0.329,0.883-1.24,1.166-1.659,0.192-0.272,0.474-0.93,0.747-1.122,0.228-0.154,0.801-0.2,1.076-0.208,0.482-0.028,1.448,0.318,1.922,0.208,0.602-0.126,1.568-1.029,2.133-1.284,0.483-0.218,1.503-0.538,2.032-0.638,0.473-0.092,1.448-0.256,1.923-0.155,0.437,0.083,1.33,0.483,1.603,0.848,0.329,0.464,0.237,1.695,0.365,2.251,0.109,0.427,0.538,1.256,0.538,1.703,0,0.448-0.328,1.313-0.538,1.704-0.273,0.528-1.248,1.313-1.44,1.878-0.119,0.337-0.063,1.084,0,1.439,0.101,0.555,0.565,1.604,0.747,2.132,0.255,0.73,0.565,2.268,1.021,2.889,0.564,0.785,2.224,1.913,3.088,2.351,0.638,0.311,2.024,0.729,2.725,0.748,0.428,0.008,1.331-0.109,1.659-0.375,0.282-0.228,0.382-1.038,0.638-1.286,0.447-0.418,1.668-0.764,2.25-0.965,0.301-0.101,0.93-0.438,1.221-0.318,0.456,0.19,0.702,1.292,0.966,1.713,0.319,0.509,1.03,1.484,1.385,1.976,0.473,0.639,1.494,1.841,1.922,2.506,0.383,0.603,1.057,1.859,1.34,2.515,0.436,1.021,1.094,3.153,1.439,4.21,0.21,0.656,0.629,1.96,0.801,2.624,0.146,0.573,0.575,1.758,0.484,2.352-0.092,0.537-0.812,1.439-1.075,1.922-0.265,0.483-0.857,1.449-1.066,1.967-0.119,0.302-0.428,0.931-0.32,1.23,0.11,0.32,0.775,0.638,1.066,0.802,0.53,0.31,1.723,0.647,2.242,0.966,0.921,0.556,2.516,2.005,3.317,2.716,0.465,0.42,1.477,1.23,1.814,1.768","name":"Закарпатська область"},"23":{"path":"M 1165.838,556.373 C 1166.018,556.727 1165.928,557.666 1165.928,558.095 1165.838,558.924 1165.38,560.527 1165.109,561.34 1164.927,562.158 1164.197,563.736 1164.197,564.582 1164.197,565.021 1164.561,565.869 1164.471,566.304 1164.471,566.771 1164.105,567.691 1163.832,568.028 1163.558,568.311 1162.738,568.858 1162.466,568.711 1162.101,568.575 1162.101,567.699 1161.918,567.39 1161.735,566.917 1161.098,566.023 1160.733,565.667 1160.461,565.423 1159.822,564.984 1159.458,564.938 1159.094,564.903 1158.364,565.047 1158.184,565.303 1157.819,565.704 1157.91,566.861 1157.91,567.389 1157.91,568.11 1158.273,569.513 1158.365,570.233 1158.365,570.587 1158.365,571.344 1158.273,571.672 1158.091,572.046 1157.454,572.63 1157.089,572.827 1156.268,573.295 1154.445,573.623 1153.536,573.795 1152.895,573.906 1151.714,574.251 1151.075,574.077 1150.8,573.996 1150.526,573.495 1150.255,573.393 1149.889,573.222 1148.887,573.359 1148.524,573.276 1148.16,573.222 1147.611,573.058 1147.338,572.913 1146.881,572.674 1146.335,571.726 1145.88,571.626 1145.336,571.537 1144.149,571.891 1143.877,572.31 1143.603,572.711 1143.692,573.813 1143.877,574.28 1143.968,574.551 1144.423,574.945 1144.605,575.199 1144.97,575.845 1145.336,577.312 1145.607,577.996 1146.063,578.935 1146.881,580.767 1147.338,581.688 1147.43,582.006 1147.886,582.616 1147.886,582.973 1147.886,583.273 1147.703,583.919 1147.43,584.092 1146.61,584.585 1144.149,583.236 1143.693,584.012 1143.513,584.295 1144.058,584.957 1144.241,585.25 1144.698,585.941 1145.7,587.229 1146.248,587.774 1146.882,588.295 1148.251,589.004 1148.888,589.459 1149.528,589.915 1150.893,590.763 1151.349,591.42 1151.805,592.029 1152.171,593.524 1152.171,594.262 1152.171,594.699 1151.532,595.902 1151.532,595.902 L 1154.081,598.463 1157.272,597.47 1159.641,595.949 1161.736,598.027 1162.466,603.111 1162.647,606.52 1159.277,608.477 1156.179,607.158 1153.17,610.837 1155.904,615.468 C 1154.264,616.061 1152.442,616.689 1151.439,617.289 1149.982,618.119 1147.429,620.179 1146.427,621.419 1145.514,622.577 1144.057,625.273 1143.512,626.667 1143.054,627.753 1142.324,630.021 1142.234,631.187 1142.144,632.08 1142.508,633.867 1142.418,634.75 1142.418,635.352 1142.234,636.582 1141.961,637.084 1141.597,637.586 1140.412,638.167 1139.867,638.479 1139.411,638.77 1138.5,639.543 1137.952,639.526 1137.678,639.507 1137.042,639.253 1137.042,639.006 1137.042,638.387 1138.682,638.059 1139.137,637.641 1139.594,637.23 1140.412,636.264 1140.686,635.716 1140.959,635.16 1141.234,633.931 1141.325,633.312 1141.416,632.626 1141.325,631.215 1141.143,630.55 1140.87,629.675 1139.957,628.018 1139.321,627.387 1138.592,626.668 1136.585,625.74 1135.584,625.466 1134.673,625.209 1132.759,625.183 1131.758,625.264 1130.3,625.384 1127.568,626.085 1126.199,626.504 1124.468,627.042 1121.187,628.508 1119.547,629.192 1118.362,629.657 1116.083,630.541 1114.989,631.07 1114.08,631.508 1112.257,632.354 1111.437,633.038 1110.798,633.658 1109.796,635.263 1109.341,636.081 1108.793,637.111 1107.975,639.336 1107.61,640.447 1107.427,641.02 1107.064,642.216 1106.881,642.807 1106.606,643.754 1105.97,645.631 1105.695,646.571 1105.42,647.537 1104.876,649.54 1104.419,650.416 1103.873,651.336 1102.322,652.903 1101.504,653.579 1100.683,654.288 1098.77,655.419 1097.677,655.865 1097.22,656.065 1096.309,656.521 1095.765,656.42 1095.49,656.375 1095.036,656.02 1094.944,655.782 1094.852,655.481 1095.036,654.798 1095.217,654.498 1095.398,654.033 1096.036,653.204 1096.491,652.903 1096.947,652.547 1098.132,652.245 1098.679,652.021 1099.135,651.828 1100.047,651.482 1100.502,651.217 1101.139,650.816 1102.414,649.806 1102.961,649.258 1103.508,648.713 1104.51,647.529 1104.876,646.852 1105.147,646.26 1105.513,644.94 1105.695,644.292 1105.878,643.746 1106.057,642.632 1106.15,642.087 1106.241,641.676 1106.515,640.866 1106.515,640.446 1106.605,640.262 1106.698,639.79 1106.515,639.726 1106.241,639.636 1105.969,640.208 1105.786,640.4 1105.513,640.729 1105.146,641.53 1104.876,641.804 1104.693,641.978 1104.147,642.286 1103.873,642.248 1103.6,642.204 1103.052,641.693 1102.87,641.447 1102.597,641.038 1102.414,640.008 1102.142,639.596 1101.776,639.187 1101.047,638.477 1100.591,638.239 1100.136,638.003 1099.134,637.785 1098.585,637.757 1097.767,637.72 1096.216,638.058 1095.488,638.204 1094.85,638.312 1093.666,638.603 1093.028,638.761 1092.388,638.943 1091.115,639.433 1090.477,639.561 1089.474,639.752 1087.377,639.762 1086.284,639.88 1085.373,639.999 1083.46,640.4 1082.457,640.526 1081.548,640.634 1079.634,640.627 1078.632,640.845 1077.902,641.018 1076.444,641.556 1075.806,641.965 1075.259,642.319 1074.348,643.331 1073.892,643.808 1073.348,644.299 1072.344,645.32 1071.888,645.811 1070.429,647.169 1067.423,649.748 1065.965,651.096 1064.143,652.783 1060.589,656.337 1058.767,657.949 1057.947,658.587 1056.398,659.754 1055.579,660.345 1055.122,660.701 1054.212,661.485 1053.664,661.749 1053.299,661.949 1052.48,662.341 1052.023,662.269 1051.659,662.205 1050.929,661.739 1050.838,661.384 1050.655,660.974 1051.113,660.099 1051.294,659.705 1051.385,659.406 1052.113,658.952 1052.023,658.623 1052.023,658.332 1051.385,657.931 1051.114,657.948 1050.656,657.957 1050.018,658.721 1049.745,659.069 1049.472,659.334 1049.382,660.126 1049.017,660.307 1048.744,660.473 1048.014,660.408 1047.649,660.263 1046.92,659.925 1045.919,658.55 1045.554,657.866 1045.006,657.074 1044.279,655.341 1044.094,654.423 1044.004,653.739 1044.459,652.335 1044.279,651.652 1044.186,651.132 1043.55,650.239 1043.366,649.73 1043.276,649.411 1043.092,648.718 1043.002,648.371 1043.002,647.697 1043.276,646.311 1043.092,645.646 1043.002,645.246 1042.455,644.588 1042.275,644.207 1042.09,643.808 1041.911,642.923 1041.728,642.521 1041.546,642.193 1041.181,641.573 1040.906,641.317 1040.724,641.146 1040.269,640.744 1039.995,640.799 1039.632,640.871 1039.267,641.617 1039.083,641.964 1038.902,642.549 1038.812,643.824 1038.902,644.443 1038.995,645.034 1039.449,646.138 1039.449,646.72 1039.542,647.422 1039.083,648.788 1039.083,649.491 1039.083,650.375 1039.357,652.114 1039.542,652.97 1039.813,653.992 1040.633,655.915 1040.906,656.944 1041,657.865 1040.906,659.777 1041.09,660.71 1041.272,661.601 1042.001,663.297 1042.365,664.152 1042.548,664.764 1042.912,666.096 1043.277,666.595 1043.55,666.839 1044.095,667.215 1044.461,667.279 1044.825,667.341 1045.646,667.205 1045.92,666.994 1046.191,666.832 1046.467,666.265 1046.556,666.031 1046.831,665.738 1047.196,665.145 1047.47,664.874 1047.651,664.69 1047.923,664.235 1048.199,664.189 1048.38,664.152 1048.835,664.354 1048.928,664.554 1049.02,664.919 1048.562,665.657 1048.289,665.993 1048.108,666.348 1047.471,666.94 1047.196,667.278 1046.74,667.904 1045.738,669.173 1045.374,669.875 1044.826,670.833 1044.097,672.917 1043.643,673.921 1043.188,674.898 1042.277,676.837 1041.73,677.766 1041.456,678.256 1040.726,679.162 1040.455,679.653 1040.09,680.155 1039.634,681.203 1039.359,681.73 1039.179,682.224 1038.813,683.243 1038.63,683.734 1038.63,683.781 1038.54,683.837 1038.54,683.889 L 1037.354,683.169 C 1037.719,682.769 1038.173,682.323 1038.449,682.013 1038.72,681.574 1039.268,680.591 1039.543,680.09 1039.814,679.46 1040.271,678.15 1040.544,677.529 1040.818,676.994 1041.455,675.962 1041.819,675.442 1042.002,675.104 1042.548,674.476 1042.639,674.084 1042.73,673.775 1042.73,673.091 1042.548,672.837 1042.365,672.646 1041.819,672.518 1041.547,672.481 1041.182,672.427 1040.361,672.691 1039.905,672.646 1039.449,672.591 1038.539,672.354 1038.173,672.042 1037.901,671.76 1037.627,670.96 1037.627,670.559 1037.536,670.039 1037.9,669.036 1038.083,668.554 1038.267,668.155 1038.812,667.45 1038.902,667.033 1039.083,666.522 1039.267,665.411 1039.083,664.91 1038.902,664.545 1038.448,663.915 1038.083,663.751 1037.81,663.626 1037.263,663.751 1036.898,663.708 1036.534,663.652 1035.713,663.524 1035.349,663.269 1035.076,663.014 1034.802,662.185 1034.62,661.831 1034.438,661.438 1034.075,660.583 1033.8,660.264 1033.527,660.055 1033.071,659.706 1032.706,659.706 1032.343,659.697 1031.522,660.144 1031.25,660.463 1030.976,660.847 1030.61,661.875 1030.702,662.351 1030.794,662.806 1031.704,663.364 1031.977,663.709 1032.432,664.181 1033.345,665.047 1033.617,665.63 1033.8,666.195 1033.8,667.444 1033.71,668.036 1033.617,668.537 1033.254,669.492 1032.981,669.922 1032.617,670.506 1031.705,671.61 1031.066,671.963 1030.795,672.129 1030.155,672.346 1029.792,672.284 1029.336,672.191 1028.517,671.555 1028.243,671.117 1028.06,670.696 1028.15,669.676 1028.243,669.203 1028.243,668.692 1028.516,667.682 1028.425,667.197 1028.335,666.897 1027.876,666.313 1027.607,666.23 1027.334,666.169 1026.786,666.432 1026.602,666.63 1026.239,667.024 1026.147,668.155 1026.054,668.674 1025.964,669.63 1026.054,671.563 1026.054,672.519 1026.054,673.075 1025.6,674.414 1026.054,674.724 1026.239,674.87 1026.785,674.468 1026.967,674.358 1027.239,674.27 1027.696,673.804 1027.876,673.922 1028.15,674.059 1027.969,674.733 1027.969,675.006 1027.876,675.488 1027.787,676.475 1027.607,676.928 1027.422,677.458 1026.877,678.469 1026.513,678.888 1026.328,679.081 1026.147,679.28 1025.873,679.49 1025.144,679.354 1024.415,679.154 1024.051,678.934 1023.595,678.623 1023.14,677.668 1022.866,677.211 1022.593,676.685 1022.047,675.599 1021.955,675.006 1021.955,674.597 1022.047,673.713 1022.226,673.364 1022.5,673.027 1023.412,672.857 1023.594,672.481 1023.867,671.797 1023.139,670.313 1023.049,669.592 1022.774,668.426 1022.32,666.057 1021.954,664.909 1021.863,664.443 1021.497,663.514 1021.225,663.112 1020.86,662.521 1019.858,661.51 1019.31,661.108 1018.673,660.67 1017.307,660.079 1016.669,659.824 1015.939,659.568 1014.391,659.413 1013.753,659.067 1013.387,658.885 1012.75,658.384 1012.567,658.065 1012.113,657.401 1012.113,655.769 1011.838,655.059 1011.655,654.702 1011.289,653.938 1011.019,653.783 1010.653,653.619 1009.833,653.828 1009.467,653.938 1008.83,654.12 1007.737,654.92 1007.099,655.095 1006.736,655.203 1005.914,655.367 1005.55,655.221 1005.094,655.049 1004.549,654.246 1004.276,653.891 1003.911,653.453 1003.363,652.478 1002.999,652.05 1002.633,651.713 1002.088,650.793 1001.633,650.858 1001.36,650.884 1001.268,651.522 1001.086,651.65 1000.904,651.805 1000.266,651.961 999.993,651.851 999.719,651.732 999.353,651.113 999.263,650.811 999.173,650.529 998.992,649.91 999.082,649.609 999.082,649.419 999.263,649.051 999.353,648.889 999.628,648.598 1000.174,648.196 1000.448,647.931 1000.721,647.678 1001.177,647.175 1001.267,646.847 1001.452,646.365 1001.267,645.308 1001.176,644.807 1001.085,644.452 1000.993,643.757 1000.81,643.43 1000.721,643.194 1000.538,642.701 1000.265,642.564 999.993,642.346 999.081,642.365 998.717,642.346 998.351,642.336 997.531,642.592 997.167,642.437 996.894,642.336 996.711,641.863 996.528,641.653 996.437,641.491 996.347,641.061 996.164,640.969 995.891,640.824 995.253,641.007 994.979,641.08 994.796,641.135 994.431,641.5 994.25,641.416 994.066,641.314 993.978,640.741 993.885,640.506 V 639.173 C 993.885,638.882 993.792,638.254 993.978,638.034 994.159,637.762 994.979,637.744 995.344,637.661 995.799,637.534 996.801,637.317 997.347,637.207 997.805,637.105 998.716,636.969 999.171,636.822 999.443,636.734 1000.081,636.577 1000.264,636.324 1000.355,636.158 1000.173,635.729 1000.173,635.539 1000.081,635.221 999.534,634.583 999.717,634.309 999.899,634.054 1000.72,634.253 1000.992,634.201 1001.265,634.164 1001.813,634.192 1001.903,633.99 1002.086,633.781 1001.903,633.208 1001.813,632.951 1001.721,632.588 1001.45,631.904 1001.357,631.539 1001.265,631.203 1001.265,630.518 1001.174,630.19 1001.083,629.807 1000.626,629.061 1000.808,628.706 1000.902,628.46 1001.357,628.212 1001.63,628.104 1001.902,627.976 1002.45,627.884 1002.815,627.812 1003.087,627.721 1003.999,627.766 1004.183,627.447 1004.274,627.219 1003.909,626.718 1003.816,626.491 1003.544,626.073 1003.087,625.289 1002.815,624.915 1002.542,624.597 1001.994,624.074 1001.721,623.737 1001.63,623.52 1001.174,622.983 1001.357,622.763 1001.538,622.5 1002.36,623.001 1002.63,622.791 1002.724,622.707 1002.724,622.418 1002.724,622.3 1002.541,621.862 1001.813,621.27 1001.537,620.923 1001.174,620.494 1000.353,619.655 1000.08,619.21 999.716,618.8 999.17,617.916 998.896,617.506 998.714,617.249 998.348,616.658 998.075,616.531 997.712,616.375 996.982,616.566 996.618,616.531 996.346,616.493 995.798,616.385 995.522,616.256 994.885,615.946 993.976,614.918 993.428,614.472 992.88,614.06 991.879,613.296 991.424,612.813 991.15,612.54 990.695,611.903 990.512,611.566 990.329,611.237 990.147,610.5 989.966,610.198 989.783,609.952 989.237,609.64 989.054,609.397 988.598,608.877 988.235,607.637 988.05,607.027 987.779,606.271 987.505,604.714 987.231,603.957 987.05,603.419 986.869,602.253 986.502,601.842 986.23,601.515 985.226,601.423 984.86,601.132 984.498,600.83 983.951,599.583 983.951,599.583 L 981.464,587.171 984.498,586.251 984.408,583.772 981.39,583.091 981.463,579.161 978.7,579.042 978.218,582.605 970.29,583.044 965.808,574.596 967.894,572.035 965.653,569.419 C 966.383,569.356 967.12,569.254 967.587,569.108 968.441,568.819 970.071,567.924 970.738,567.295 971.274,566.768 971.921,565.355 972.333,564.727 972.698,564.179 973.306,562.986 973.828,562.593 974.254,562.266 975.33,561.993 975.86,561.891 976.323,561.817 977.261,561.828 977.726,561.846 978.239,561.855 979.248,562.021 979.758,562.001 980.305,561.983 981.426,561.882 981.945,561.682 982.584,561.428 983.677,560.469 984.314,560.078 985.045,559.604 986.411,558.574 987.23,558.212 988.049,557.857 989.691,557.263 990.511,557.199 991.149,557.145 992.515,557.262 993.062,557.574 993.518,557.81 994.064,558.72 994.428,559.066 994.703,559.348 995.341,559.905 995.706,560.078 996.067,560.271 996.98,560.333 997.435,560.453 997.982,560.606 999.167,560.881 999.623,561.199 1000.169,561.6 1000.898,562.857 1001.446,563.341 1001.899,563.762 1002.901,564.551 1003.45,564.833 1003.995,565.126 1005.362,565.282 1005.909,565.584 1006.456,565.828 1007.277,566.53 1007.64,566.913 1008.188,567.432 1009.007,568.735 1009.554,569.208 1010.101,569.637 1011.195,570.356 1011.832,570.495 1012.379,570.604 1013.38,570.475 1013.837,570.34 1014.473,570.14 1015.749,569.401 1016.297,568.999 1016.935,568.518 1018.119,567.168 1018.849,566.759 1019.578,566.339 1021.309,565.92 1022.218,565.793 1023.041,565.672 1024.864,565.839 1025.775,565.793 1026.777,565.747 1028.781,565.728 1029.692,565.419 1030.787,565.098 1032.609,563.968 1033.427,563.285 1034.247,562.622 1035.706,561.098 1036.072,560.132 1036.343,559.514 1036.254,558.128 1036.162,557.463 1036.162,556.579 1035.98,554.767 1035.707,553.937 1035.343,553.18 1034.068,552.014 1033.703,551.268 1033.519,550.785 1033.339,549.717 1033.247,549.19 1033.063,548.597 1032.882,547.376 1032.974,546.783 1033.064,546.428 1033.52,545.799 1033.703,545.502 1033.977,545.126 1034.705,544.542 1034.978,544.17 1035.16,543.915 1035.524,543.366 1035.524,543.05 1035.614,542.786 1035.432,542.193 1035.25,542.027 1034.979,541.857 1034.248,541.911 1033.978,542.027 1033.793,542.138 1033.428,542.639 1033.248,542.831 1033.064,543.076 1032.61,543.659 1032.337,543.797 1031.972,543.924 1031.334,543.924 1031.06,543.852 1030.515,543.726 1029.513,543.206 1029.148,542.788 1028.965,542.549 1028.874,541.947 1028.874,541.664 1028.783,541.037 1029.239,539.632 1028.874,539.15 1028.603,538.885 1027.87,538.84 1027.508,538.885 1027.145,538.931 1026.415,539.341 1026.141,539.577 1025.778,539.86 1025.049,540.552 1024.867,540.963 1024.502,541.546 1024.226,542.895 1024.046,543.532 1023.863,544.069 1023.59,545.174 1023.317,545.665 1023.046,546.12 1022.222,546.877 1021.86,547.269 1021.586,547.624 1020.857,548.28 1020.493,548.654 1019.946,549.32 1019.034,550.894 1018.395,551.487 1017.668,552.153 1015.845,553.017 1015.025,553.519 1014.296,553.911 1013.113,554.787 1012.293,555.178 1011.746,554.904 1011.018,554.484 1010.651,554.284 1010.194,553.991 1009.103,553.518 1008.739,553.064 1008.555,552.689 1008.281,551.75 1008.373,551.293 1008.373,550.694 1009.284,549.735 1009.466,549.162 1009.74,548.533 1010.014,547.213 1010.014,546.547 1010.014,546.055 1009.558,545.145 1009.466,544.678 1009.284,544.36 1009.012,543.724 1009.012,543.394 1009.102,543.139 1009.466,542.739 1009.741,542.592 1010.014,542.372 1010.927,542.401 1011.2,542.165 1011.563,541.954 1011.928,541.307 1012.018,540.961 1012.112,540.295 1011.837,538.911 1011.655,538.236 1011.563,537.609 1011.289,536.241 1010.835,535.785 1010.47,535.466 1009.467,535.455 1009.103,535.22 1008.741,535.048 1008.193,534.574 1008.102,534.264 1007.83,533.835 1007.737,532.842 1007.737,532.368 1007.737,531.767 1007.554,530.481 1007.83,529.963 1008.01,529.736 1008.558,529.572 1008.741,529.4 1008.921,529.225 1009.379,528.87 1009.468,528.607 1009.56,528.159 1009.286,527.204 1009.014,526.838 1008.558,526.291 1007.283,525.653 1006.647,525.425 1006.372,525.327 1005.733,525.227 1005.46,525.261 1005.002,525.327 1004.186,525.99 1003.728,525.982 1003.273,525.982 1002.454,525.526 1002.087,525.235 1001.815,525.051 1001.358,524.278 1001.358,524.278 L 1001.452,515.495 1006.825,517.555 C 1006.825,517.555 1007.19,516.66 1007.19,516.351 1007.282,515.805 1007.282,514.683 1007.099,514.181 1006.825,513.682 1005.823,513.061 1005.641,512.56 1005.459,512.096 1005.823,511.038 1005.641,510.583 1005.55,510.229 1004.913,509.744 1004.641,509.461 1004.365,509.188 1003.818,508.696 1003.727,508.358 1003.456,507.84 1003.272,506.09 1003.272,506.09 L 1002.817,497.442 1004.821,497.124 1007.099,502.409 1014.751,500.777 C 1015.026,501.706 1015.391,502.8 1015.575,503.421 1016.027,504.515 1016.94,506.657 1017.58,507.584 1018.125,508.313 1019.765,509.261 1020.13,510.072 1020.401,510.635 1020.313,511.941 1020.219,512.559 1020.13,513.417 1019.491,515.055 1019.402,515.921 1019.402,517.067 1019.583,519.4 1020.039,520.486 1020.22,521.132 1021.225,522.19 1021.496,522.809 1021.77,523.21 1021.861,524.277 1022.225,524.486 1022.499,524.632 1023.228,524.477 1023.411,524.249 1023.867,523.803 1023.777,522.446 1023.685,521.843 1023.593,521.124 1022.955,519.767 1022.865,519.047 1022.773,518.483 1022.773,517.343 1022.955,516.796 1023.139,516.331 1023.777,515.584 1023.959,515.119 1024.141,514.099 1023.867,511.958 1023.594,510.956 1023.411,510.153 1022.318,508.786 1022.046,507.985 1021.863,507.201 1022.046,505.451 1021.681,504.703 1021.407,504.13 1020.221,503.42 1019.95,502.862 1019.676,502.389 1019.221,501.286 1019.404,500.776 1019.585,500.011 1021.226,499.182 1021.955,498.771 1022.866,498.261 1024.78,497.441 1025.783,497.259 1026.692,497.085 1028.608,497.239 1029.519,497.331 1030.155,497.403 1031.43,497.823 1032.069,497.813 1032.617,497.802 1033.8,497.695 1034.256,497.331 1034.44,497.185 1034.621,496.894 1034.804,496.584 L 1043.643,500.056 1048.472,503.474 1059.77,495.892 1061.502,500.486 1066.787,499.199 1067.06,502.518 1074.896,501.232 1075.808,505.295 1083.008,502.462 1084.01,506.626 1081.73,508.284 1087.107,511.755 1089.66,515.064 1087.563,519.657 1083.917,519.446 1084.92,523.767 1099.681,523.284 V 526.09 L 1101.415,525.772 1102.689,523.046 1113.805,523.393 1114.171,521.342 1120.913,521.287 1123.282,522.526 1118.725,523.967 1125.195,527.493 1127.84,531.495 1127.747,537.024 1133.215,536.786 1132.85,538.027 1129.846,538.829 1131.848,543.995 1137.952,542.272 1141.597,547.793 C 1141.597,547.793 1142.145,549.088 1142.6,549.242 1142.783,549.317 1143.33,549.096 1143.512,548.961 1143.784,548.769 1144.058,548.113 1144.241,547.921 1144.514,547.73 1145.152,547.457 1145.515,547.475 1145.79,547.503 1146.335,547.895 1146.61,548.078 1146.975,548.334 1147.611,548.971 1147.886,549.243 1148.343,549.536 1149.07,550.155 1149.527,550.366 1149.799,550.512 1150.438,550.728 1150.8,550.72 1151.165,550.72 1151.714,550.31 1151.987,550.366 1152.259,550.401 1152.624,550.757 1152.807,550.919 1153.262,551.367 1153.901,552.452 1154.353,552.925 1155.083,553.783 1156.726,555.366 1157.636,556.134 1158.091,556.553 1158.912,557.7 1159.548,557.727 1159.822,557.746 1160.278,557.345 1160.461,557.173 1160.644,556.916 1160.916,556.152 1161.281,555.969 1161.645,555.778 1162.466,555.906 1162.828,555.886 1163.284,555.87 1164.287,555.714 1164.743,555.807 1165.014,555.878 1165.655,556.108 1165.836,556.37","name":"Запорізька область"},"26":{"path":"M399.07,429.11l-4.757,2.005s-0.136,1.485-0.155,1.978c-0.044,1.112-0.09,3.326,0,4.438,0.092,1.13,0.629,3.352,0.748,4.482,0.127,1.285,0.1,3.882,0.155,5.176,0.056,1.194,0.073,3.581,0.273,4.757,0.109,0.655,0.774,1.895,0.748,2.56-0.028,0.475-0.356,1.44-0.703,1.769-0.446,0.419-1.73,0.773-2.342,0.746-1.038-0.054-2.833-1.266-3.799-1.657-0.765-0.31-2.269-1.094-3.089-1.176-1.011-0.1-3.062,0.291-4.009,0.646-1.595,0.584-4.41,2.561-5.823,3.516-1.303,0.895-3.892,2.745-5.021,3.846-0.819,0.811-2.124,2.752-2.88,3.627-0.574,0.665-1.731,1.995-2.406,2.569-0.574,0.492-2.022,1.131-2.504,1.705-0.529,0.628-0.867,2.323-1.34,2.998-0.355,0.511-1.321,1.321-1.814,1.703-0.646,0.511-2.141,1.241-2.778,1.76-0.712,0.592-1.741,2.241-2.561,2.669-0.492,0.265-1.659,0.22-2.188,0.384-0.437,0.126-1.33,0.437-1.658,0.737-0.856,0.802-1.695,3.079-2.241,4.118-0.692,1.303-2.214,3.846-2.726,5.231-0.309,0.838-0.728,2.588-0.801,3.472-0.064,0.765,0.054,2.295,0.209,3.044,0.137,0.6,0.592,1.75,0.857,2.295,0.381,0.794,1.604,2.142,1.822,2.99,0.227,0.919-0.082,2.851-0.218,3.799-0.164,1.139-0.665,3.399-1.067,4.482-0.391,1.04-1.63,2.927-2.086,3.948-0.201,0.464-0.574,1.547-0.829,2.275-0.165-0.036-0.311-0.063-0.446-0.081-0.584-0.09-1.832,0.119-2.351-0.163-0.638-0.337-1.331-1.714-1.769-2.295-0.5-0.677-1.558-1.99-1.968-2.727-0.383-0.665-0.737-2.195-1.176-2.836-0.52-0.736-1.986-1.858-2.67-2.449-0.838-0.721-2.642-1.997-3.416-2.779-0.384-0.374-1.059-1.202-1.34-1.648-0.483-0.785-1.203-2.471-1.549-3.317-0.31-0.766-0.766-2.37-1.065-3.153-0.265-0.682-0.757-2.104-1.176-2.715-0.11-0.155-0.373-0.446-0.538-0.538-0.063-0.037-0.145-0.073-0.236-0.109,0.044-0.856,0.118-2.396,0.136-3.043,0.009-0.712-0.229-2.16,0-2.825,0.208-0.638,1.267-1.558,1.594-2.144,0.302-0.516,0.885-1.638,0.913-2.241,0.027-0.573-0.393-1.703-0.692-2.184-0.337-0.539-1.349-1.35-1.814-1.77-0.802-0.711-2.396-2.161-3.318-2.715-0.519-0.32-1.711-0.657-2.241-0.967-0.292-0.164-0.957-0.481-1.066-0.802-0.108-0.3,0.201-0.928,0.32-1.229,0.209-0.519,0.802-1.485,1.066-1.968,0.263-0.483,0.983-1.385,1.075-1.922,0.091-0.592-0.337-1.778-0.484-2.352-0.172-0.664-0.591-1.968-0.801-2.624-0.346-1.057-1.003-3.189-1.439-4.21-0.284-0.656-0.958-1.913-1.34-2.515-0.428-0.665-1.449-1.867-1.923-2.506-0.354-0.491-1.065-1.467-1.384-1.976-0.265-0.421-0.511-1.523-0.966-1.713-0.291-0.119-0.92,0.217-1.221,0.318-0.583,0.201-1.804,0.547-2.25,0.966-0.255,0.247-0.355,1.057-0.638,1.285-0.328,0.265-1.23,0.383-1.659,0.375-0.701-0.019-2.087-0.438-2.725-0.747-0.865-0.438-2.524-1.567-3.088-2.352-0.456-0.621-0.766-2.159-1.021-2.888-0.182-0.53-0.646-1.578-0.747-2.133-0.063-0.355-0.119-1.103,0-1.439,0.191-0.564,1.167-1.35,1.44-1.878,0.21-0.391,0.538-1.256,0.538-1.704,0-0.446-0.429-1.275-0.538-1.703-0.128-0.556-0.036-1.787-0.365-2.251-0.272-0.365-1.166-0.766-1.603-0.848-0.475-0.101-1.45,0.063-1.923,0.155-0.529,0.1-1.549,0.419-2.032,0.638-0.566,0.255-1.531,1.158-2.133,1.284-0.474,0.11-1.44-0.236-1.922-0.208-0.274,0.009-0.848,0.055-1.076,0.208-0.273,0.192-0.555,0.849-0.747,1.122-0.283,0.419-0.784,1.331-1.166,1.659-0.292,0.236-0.975,0.684-1.34,0.638-0.356-0.036-0.984-0.575-1.121-0.903-0.319-0.738,0.137-2.415,0.265-3.208,0.082-0.492,0.41-1.43,0.483-1.922,0.055-0.393,0.218-1.24,0.055-1.604-0.201-0.41-1.048-0.885-1.44-1.122-0.593-0.346-1.896-0.765-2.515-1.065-0.702-0.336-2.161-0.957-2.726-1.495-0.291-0.282-0.729-1.002-0.856-1.386-0.137-0.455-0.1-1.402-0.1-1.875,0-0.657,0.109-1.96,0.155-2.616,0.036-0.482,0.145-1.439,0.164-1.923,0.018-0.382,0.264-1.256,0-1.549-0.383-0.418-1.686-0.191-2.242-0.209-0.656-0.028-1.968,0.055-2.616,0.055-0.556-0.009-1.695,0.164-2.195-0.055-0.319-0.145-0.738-0.748-0.958-1.021-0.473-0.584-1.312-1.842-1.658-2.505-0.3-0.584-0.602-1.905-0.957-2.461-0.227-0.347-0.875-0.884-1.175-1.167-0.419-0.411-1.258-1.229-1.714-1.604-0.291-0.246-0.947-0.729-1.448-1.093l1.585-4.92,1.321-5.641,3.126-0.884,0.036-2.807-1.723-3.199,2.524-7.335,6.89-5.969v-2.241l6.25-3.6,5.122,2.078,3.891-0.756,6.807,0.237,2.041-1.439,3.281,1.476,3.762,0.966,4.576-0.802,4.802-1.923,2.807-1.558h2.925l0.956,2.607,3.089-0.283,1.121-5.887-0.602-1.203-7.536-1.121-0.236-3.243-2.406-2.087,2.205-3.281,3.326,1.64,2.041-3.407,0.283-3.727-1.404-3.043,3.327-3.646-1.121-1.995,2.323-5.249,4.165-0.438,0.603,3.646,1.321,0.675,3.445-1.003,10.178,3.981-0.292,4.794,2.569,5.075,1.649,12.921s1.394,0.784,1.869,1.012c0.702,0.338,2.123,0.931,2.833,1.229,0.465,0.192,1.586,0.33,1.868,0.748,0.137,0.2,0.11,0.748,0,0.966-0.2,0.374-1.057,0.747-1.439,0.958-0.794,0.428-2.57,0.929-3.309,1.438-0.455,0.311-1.348,1.048-1.548,1.549-0.192,0.456-0.1,1.495,0,1.979,0.118,0.601,0.583,1.758,0.956,2.241,0.402,0.528,1.541,1.284,2.086,1.658,0.557,0.383,1.796,0.975,2.352,1.386,0.547,0.41,1.694,1.266,2.023,1.867,0.201,0.383,0.301,1.276,0.265,1.714-0.018,0.292-0.11,0.975-0.374,1.12-0.237,0.137-0.83-0.119-1.066-0.264-0.364-0.228-0.729-1.157-1.122-1.34-0.328-0.154-1.084-0.074-1.439,0-0.373,0.083-1.011,0.565-1.384,0.639-0.42,0.091-1.304-0.173-1.713-0.046-0.301,0.091-0.939,0.438-1.012,0.748-0.119,0.437,0.501,1.266,0.747,1.648,0.219,0.356,0.749,1.022,1.067,1.286,0.337,0.292,1.185,0.647,1.549,0.911,0.492,0.346,1.412,1.148,1.813,1.604,0.411,0.455,0.912,1.63,1.385,2.022,0.666,0.556,2.36,1.047,3.153,1.394,0.71,0.292,2.278,0.647,2.833,1.167,0.311,0.301,0.585,1.157,0.748,1.549,0.21,0.501,0.684,1.495,0.748,2.032,0.072,0.647-0.401,1.923-0.32,2.562,0.055,0.472,0.383,1.411,0.693,1.767,0.302,0.347,1.14,0.875,1.604,0.903,0.355,0.027,1.056-0.31,1.33-0.528,0.3-0.246,0.593-1.013,0.856-1.286,0.257-0.264,0.811-0.884,1.176-0.855,0.438,0.036,1.112,0.81,1.23,1.229,0.118,0.456-0.328,1.375-0.483,1.813-0.101,0.292-0.483,0.82-0.483,1.12,0,0.42,0.282,1.349,0.647,1.55,0.311,0.183,1.076-0.255,1.44-0.209,0.61,0.074,1.767,0.619,2.296,0.957,0.638,0.418,1.641,1.612,2.241,2.086,0.493,0.392,1.504,1.148,2.087,1.385,0.301,0.129,0.966,0.364,1.275,0.274,0.439-0.137,1.012-0.921,1.286-1.285,0.22-0.3,0.446-1.049,0.693-1.34,0.155-0.165,0.52-0.51,0.747-0.529,0.437-0.045,1.267,0.465,1.604,0.748,0.355,0.292,0.856,1.084,1.066,1.494,0.32,0.601,0.583,1.968,0.912,2.561,0.246,0.473,0.883,1.358,1.276,1.713,0.464,0.419,1.549,1.075,2.141,1.285,0.582,0.2,1.877,0.092,2.451,0.319,0.455,0.173,1.331,0.711,1.604,1.121,0.483,0.712,0.656,2.506,0.748,3.363,0.062,0.583-0.147,1.777,0,2.352,0.272,1.084,1.429,3.079,2.131,3.954,0.22,0.16,0.47,0.41,0.75,0.67","name":"Івано-Франківська область"},"32":{"path":"M655.83,179.6l-3.17-3.8c0.009,0,0.009,0.008,0.018,0.008,0.345,0.128,1.121-0.182,1.439-0.373,0.511-0.31,1.083-1.478,1.603-1.758,0.411-0.238,1.396-0.365,1.869-0.329,0.693,0.054,1.951,0.701,2.615,0.857,0.356,0.082,1.102,0.336,1.44,0.209,0.282-0.092,0.629-0.611,0.801-0.849,0.447-0.609,0.994-2.022,1.45-2.615,0.5-0.684,1.758-1.85,2.396-2.405,0.729-0.629,2.323-1.723,3.097-2.296,0.776-0.575,2.343-1.705,3.099-2.297,0.411-0.32,1.139-1.102,1.603-1.341,0.512-0.253,1.668-0.509,2.243-0.528,0.446-0.018,1.476-0.082,1.759,0.264,0.346,0.43-0.137,1.642-0.101,2.188,0.054,0.939,0.22,2.852,0.638,3.691,0.282,0.555,1.157,1.53,1.704,1.813,0.82,0.419,2.725,0.446,3.636,0.483,0.419,0.009,1.256,0.009,1.658-0.109,0.566-0.184,1.521-0.912,2.023-1.232,0.528-0.337,1.932-1.274,2.142-1.274s2.569-0.264,3.417-0.429c0.419-0.083,1.312-0.172,1.659-0.428,0.292-0.228,0.492-1.011,0.747-1.286,0.283-0.318,0.965-0.911,1.385-1.01,0.71-0.173,2.159,0.364,2.889,0.482,1.486,0.228,4.51,0.483,5.977,0.848,0.757,0.192,2.188,0.838,2.934,1.066,0.593,0.191,1.961,0.209,2.407,0.647,0.428,0.411,0.392,1.776,0.691,2.296,0.311,0.547,1.24,1.44,1.713,1.869,0.501,0.456,1.95,0.965,2.188,1.603,0.146,0.383-0.311,1.194-0.374,1.604-0.101,0.594-0.155,1.795-0.209,2.397-0.083,0.765-0.402,2.287-0.328,3.043,0.054,0.528,0.31,1.613,0.647,2.032,0.328,0.41,1.339,0.839,1.814,1.067,0.509,0.254,1.594,0.664,2.132,0.855,0.61,0.21,1.85,0.547,2.458,0.748,0.52,0.173,1.614,0.446,2.079,0.747,0.438,0.283,1.04,1.167,1.45,1.494,0.3,0.255,0.947,0.748,1.33,0.857,0.182,0.054,0.539,0.109,0.784,0.063l-0.538,2.325c-0.391-0.21-0.939-0.393-1.257-0.411-0.683-0.037-1.959,0.775-2.644,0.72-0.292-0.027-0.784-0.356-1.047-0.483-0.527-0.264-1.513-0.965-2.077-1.12-0.565-0.156-1.741-0.092-2.324-0.083-0.72,0.019-2.215,0.512-2.88,0.248-0.4-0.165-0.72-1.158-1.121-1.286-0.473-0.146-1.44,0.547-1.932,0.483-0.427-0.064-1.093-0.757-1.521-0.884-0.456-0.136-1.559-0.4-1.922-0.082-0.355,0.318-0.382,1.503-0.155,1.922,0.409,0.766,2.305,1.229,3.044,1.686,0.602,0.375,1.659,1.358,2.323,1.604,0.528,0.191,1.732,0,2.241,0.237,0.63,0.29,1.86,1.248,2.005,1.922,0.155,0.738-1.039,2.049-1.121,2.806-0.09,0.802,0.365,2.396,0.474,3.199,0.092,0.583,0.192,1.75,0.33,2.324,0.127,0.574,0.828,1.667,0.72,2.241-0.101,0.537-0.912,1.394-1.368,1.685-0.593,0.383-2.033,0.602-2.716,0.72-1.057,0.174-3.262-0.082-4.255,0.32-0.428,0.181-1.267,0.766-1.439,1.202-0.154,0.418-0.055,1.431,0.245,1.759,0.311,0.364,1.377,0.392,1.842,0.483,0.629,0.136,1.949,0.173,2.559,0.401,0.885,0.328,2.535,1.339,3.209,2.005,0.765,0.766,1.858,2.697,2.323,3.681,0.357,0.766,0.993,2.36,1.04,3.207,0.072,1.267-0.612,3.773-1.04,4.966-0.309,0.831-1.357,2.296-1.686,3.126-0.236,0.593-0.264,1.959-0.638,2.479-0.236,0.328-0.985,0.755-1.367,0.884-0.51,0.172-1.749-0.2-2.16,0.164-0.292,0.255-0.446,1.148-0.319,1.513,0.127,0.382,0.957,0.729,1.202,1.047,0.275,0.355,0.839,1.156,0.794,1.604-0.046,0.591-1.257,1.348-1.44,1.922-0.155,0.511-0.237,1.723,0.081,2.16,0.365,0.492,1.896,0.364,2.326,0.802,0.528,0.538,0.81,2.141,0.965,2.879,0.191,0.984,0.008,3.053,0.32,4.01,0.318,1.002,1.293,2.998,2.159,3.599,0.62,0.437,2.215,0.493,2.961,0.565,0.621,0.055,1.997,0.375,2.488,0,0.492-0.383,0.72-1.786,0.638-2.406-0.118-0.912-1.54-2.323-1.841-3.198-0.327-0.957-0.52-2.998-0.564-4.01-0.055-1.439-0.083-4.383,0.327-5.769,0.319-1.085,1.722-2.916,2.242-3.918,0.402-0.792,1.295-2.341,1.44-3.207,0.208-1.23-0.502-3.727-0.402-4.966,0.074-0.949,0.584-2.789,0.885-3.691,0.209-0.638,0.875-1.822,1.039-2.479,0.2-0.818,0.391-2.523,0.317-3.362-0.063-0.646-0.709-1.841-0.718-2.488-0.01-0.2,0.026-0.446,0.082-0.71l1.521,0.026h1.604l1.12,0.73-0.52,5.367,2.479,6.607,1.441,0.875h3.408l0.838,2.806,0.163,4.365-1.048,0.566-2.241-1.522-2.16,4.044,3.526,0.52,2.078,0.838,2.043-0.365,0.847,0.329,0.2,1.558,1.923,1.24,2.516,0.127,4.729-0.565,4.246-1.039,3.289-1.084,1.158,0.118,0.838,1.003,0.117,1.167,1.889,1.521,1.722,1.403,0.237,1.076-0.604,1.203,0.65,0.437,0.8,0.484,0.601,3.125,0.803,3.363-0.364,1.722-1.368,0.438-2.359,0.328,0.082,1.322,0.685,1.402,0.282,1.312,1.273-0.474,1.485-0.52,3.163,3.399,3.928,0.046,4.119-0.365,3.727,0.483,3.727-0.519,3.481,0.355,2.77,1.167,1.075-1.203,1.405-1.404,7.088-0.355,0.601-1.969,4.328-3.645,6.005,2.242,0.684,4.811,6.37,1.039,2.242,2.241-7.856,4.093,4.493,7.244,3.766,0.036-4.293,6.771,5.969-0.154-1.222,10.761-0.956-0.483-2.562,4.22-3.097-2.324-4.165,9.769-2.133,2.087-0.27,2.09,2.854,2.724,1.574,0.456-7.097,3.446-1.229,5.795-2.059-0.19s-0.948,0.947-1.205,1.311c-0.309,0.457-0.774,1.486-0.983,2.005-0.173,0.428-0.519,1.293-0.537,1.758-0.01,0.301,0.374,0.902,0.245,1.175-0.138,0.284-0.828,0.447-1.12,0.565-0.255,0.101-0.866,0.109-1.05,0.319-0.235,0.263-0.173,1.048-0.263,1.384-0.108,0.402-0.564,1.549-0.564,1.549l-6.826-0.165s-0.676-0.665-0.755-0.957c-0.12-0.419,0.207-1.302,0.207-1.73,0.01-0.438,0.019-1.349-0.17-1.741-0.201-0.391-0.851-1.147-1.286-1.203-0.43-0.054-1.175,0.529-1.504,0.802-0.438,0.365-1.03,1.367-1.439,1.769-0.119,0.118-0.365,0.31-0.612,0.492,0.039-0.2,0.065-0.383,0.085-0.557,0.153-1.612-0.156-4.865-0.249-6.478-0.072-1.449-0.035-4.375-0.4-5.767-0.235-0.903-1.021-2.644-1.604-3.373-0.519-0.656-1.887-1.695-2.643-2.078-0.646-0.326-2.077-0.71-2.799-0.802-0.699-0.09-2.103,0.028-2.805,0.082-0.555,0.037-1.785-0.1-2.241,0.238-0.328,0.245-0.593,1.111-0.639,1.522-0.054,0.419,0.43,1.303,0.236,1.685-0.108,0.219-0.628,0.52-0.884,0.483-0.52-0.083-1.082-1.139-1.439-1.53-0.383-0.412-0.984-1.497-1.521-1.679-0.309-0.108-1.076-0.017-1.274,0.238-0.174,0.199-0.11,0.802,0,1.038,0.181,0.447,1.165,0.93,1.356,1.367,0.163,0.382,0.246,1.294,0.073,1.686-0.219,0.528-1.222,1.284-1.758,1.521-0.849,0.365-2.763,0.511-3.682,0.392-1.168-0.136-3.39-1.02-4.412-1.594-1.166-0.674-3.171-2.534-4.163-3.444-1.368-1.275-3.91-4.019-5.203-5.368-1.03-1.075-2.962-3.353-4.082-4.328-1.13-0.976-3.792-2.433-4.894-3.445-0.546-0.51-1.504-1.695-1.923-2.323-0.555-0.847-1.466-2.661-1.841-3.6-0.501-1.266-1.175-3.9-1.521-5.212-0.311-1.175-0.528-3.663-1.122-4.729-0.382-0.683-1.512-1.941-2.242-2.242-0.483-0.2-1.622-0.245-2.087,0-0.61,0.328-1.347,1.65-1.521,2.325-0.318,1.247,0.054,3.891,0.401,5.129,0.3,1.058,1.612,2.898,2.004,3.919,0.42,1.111,1.021,3.408,1.203,4.574,0.119,0.729-0.282,2.37,0.155,2.962,0.283,0.374,1.358,0.409,1.768,0.638,0.693,0.392,1.833,1.549,2.487,2.005,1.314,0.92,4.229,2.332,5.522,3.28,1.458,1.083,4.056,3.644,5.368,4.893,1.494,1.412,4.208,4.52,5.85,5.769,1.303,0.992,4.164,2.66,5.687,3.28,1.477,0.601,4.583,1.403,6.168,1.604,1.285,0.165,3.927,0.264,5.203,0,0.683-0.146,1.986-0.729,2.561-1.121,0.064-0.045,0.138-0.101,0.201-0.165l-0.392,6.17-7.701,2.159-1.64,1.723-0.874,7.573,1.275,1.922-0.119,5.485,0.839,2.89-5.559,7.845,1.395,2.324-2.961,4.127-7.527,7.008,1.157,2.124-0.557,1.285-5.686-0.246-0.082,1.841,1.557,3.491-6.44,3.479-5.933,1.522-4.164-3.598-1.287-0.201-0.162,0.72-1.04-0.046-1.677-1.358-1.048-0.118-6.689,2.679,1.287,2.041-0.521,0.802-3.964-4.046-1.767,0.847,1.649,3.199-3.09,1.768,1.805,5.048-0.282,1.195-3.563-0.037-0.921-1.805-9.613-2.242,0.201-5.886-5.804-0.046-3.327,0.802-3.645-0.355-5.076,2.377-0.819,4.647-1.449,1.148-0.483,4.593-1.996,1.968-6.306-1.094-2.779-3.963,0.593-0.091-0.11-2.24-3.946,0.054-1.021-1.713-0.108-4.802-3.792,0.474-6.033-8.483,6.516-4.703-6.352-15.172,2.079-2.297-2.297-3.143,0.318-5.34-3.361-1.604,0.912-3.308-1.55-5.185,7.956-3.581,6.733-5.977,8.803-4.483-7.364-9.13,3.627-4.01-1.01-2.934,2.613-1.44-2.131-4.12-2.405-0.318-0.803-2.78,2.451-5.067-2.605-2.568,1.704,0.164,0.319-5.449-9.56-7.736-3.791-7.854,3.627,0.208,2.141-3.361-2.461-1.869-0.801-2.506,2.515-2.086-0.583-1.713-3.426-2.341,0.054-2.617s1.696-1.093,2.298-1.394c1.057-0.537,3.352-1.221,4.382-1.813,0.912-0.529,2.716-1.731,3.363-2.56,0.465-0.602,1.083-2.032,1.176-2.779,0.09-0.738-0.365-2.205-0.484-2.943-0.054-0.319,0.083-1.13-0.209-1.274-0.282-0.146-0.828,0.473-1.121,0.582-0.627,0.236-1.949,0.639-2.624,0.647-0.683,0.008-2.022-0.355-2.669-0.593-0.446-0.164-1.367-0.555-1.704-0.902-0.237-0.255-0.72-0.92-0.584-1.23,0.156-0.401,1.203-0.437,1.596-0.591,0.501-0.191,1.503-0.557,1.977-0.803,0.364-0.182,1.211-0.482,1.384-0.847,0.228-0.465-0.063-1.558-0.264-2.032-0.265-0.647-1.513-1.568-1.705-2.242-0.146-0.51,0.164-1.569,0.21-2.086,0.046-0.493,0.164-1.978,0.164-1.978l-5.504-6.78-0.374-2.67,2.406-0.055,0.055-4,4.638-2.998-9.923-8.539-1.339,1.286-3.846-14.426,3.9-2.188,3.308,1.869,2.03-7.18z","name":"Київська область"},"35":{"path":"M882.63,511.41c-0.318-0.093-0.737-0.41-0.975-0.54-0.547-0.312-1.667-0.919-2.123-1.366-0.263-0.263-0.581-0.995-0.837-1.275-0.146-0.174-0.456-0.582-0.684-0.602-0.457-0.046-1.177,0.729-1.605,0.921-0.519,0.236-1.62,0.52-2.158,0.72-0.548,0.199-1.65,0.609-2.16,0.884-0.257,0.137-0.803,0.399-0.966,0.639-0.192,0.3-0.292,1.047-0.273,1.401,0.017,0.766,0.639,2.206,0.711,2.962,0.063,0.51,0.191,1.588-0.037,2.05-0.137,0.283-0.692,0.685-1.002,0.794-0.602,0.219-1.923,0.072-2.561,0.044-0.364-0.018-1.158,0.064-1.441-0.162-0.309-0.256-0.227-1.213-0.48-1.523-0.221-0.264-0.857-0.653-1.204-0.637-0.355,0.019-0.874,0.646-1.203,0.8-0.684,0.321-2.177,0.695-2.914,0.839-0.513,0.102-1.577,0.02-2.051,0.24-0.219,0.106-0.547,0.498-0.72,0.683-0.255,0.281-1.085,0.855-0.921,1.202,0.191,0.401,1.321,0.073,1.758,0.081,0.657,0.011,1.959-0.036,2.606-0.046,0.429,0,1.331-0.227,1.686,0,0.282,0.183,0.502,0.912,0.556,1.24,0.037,0.191,0.082,0.619-0.034,0.765-0.239,0.301-1.096,0.402-1.488,0.448-0.627,0.055-1.887-0.229-2.522-0.246-0.565-0.021-1.777-0.202-2.276,0.079-0.321,0.175-0.806,1.205-0.806,1.205l1.205,1.276s-3.481,10.733-3.362,10.733c-0.138,0.01-3.893,0.046-3.893,0.046l-4.445-1.887-9.57,4.129-2.403-4.85-3.043,0.365-3.245,2.314-2.278,3.444-3.564,0.803-1.046-1.276,0.2-2.287-2.444-4.884-8.929,1.402,0.118,2.277-0.883,1.05-7.006-0.129,1.885-2.277,0.354-4.41,2.206-1.24-1.403-1.119,0.482-1.04-2.441-3.681-0.318-1.97-1.887,0.485-3.645-3.292-1.523-5.805,3.929-1.521-2.561-3.964-3.044,0.201-2.169-1.805-1.724,0.601-2.12-2.004-1.925,1.24-0.035,1.603-3.528,2.041-2.961-0.119,1.442-2.996-0.12-1.522-5.332,0.354-1.84-1.521,0.884-1.757-10.18,0.552-3.563-4.279,1.004-1.924-2.278-2.643-4.895,0.52s-0.481-2.068-1.073-2.204c-0.237-0.056-0.529,0.547-0.767,0.601-0.646,0.173-2.112-0.347-2.679,0-0.155,0.1-0.183,0.528-0.327,0.646-0.146,0.128-0.619,0.091-0.757,0.238-0.364,0.399-0.402,2.122-0.402,2.122l-7.526,3.764-2.442-1.677-12.383,0.155-3.963,1.758-2.76,0.209-1.442,3.234s-0.865-0.817-1.165-1.072c-0.593-0.521-1.759-1.642-2.479-1.969-0.711-0.311-2.306-0.466-3.089-0.521-0.894-0.054-2.725-0.1-3.6,0.119-0.475,0.129-1.349,0.621-1.768,0.884-0.255,0.163-0.784,0.421-1.12,0.711-0.766,0.484-2.087,0.393-2.644,0.31-0.737-0.127-2.131-0.691-2.853-0.883-0.702-0.192-2.15-0.493-2.888-0.51-0.382-0.01-1.139,0.138-1.514,0.19-0.92,0.127-2.715,0.583-3.636,0.583-0.875,0-2.632-0.246-3.443-0.556-0.658-0.265-1.823-1.094-2.351-1.549-0.793-0.691-2.17-2.306-2.752-3.181-0.521-0.791-1.23-2.569-1.66-3.417-0.246-0.51-1.01-2.031-1.01-2.031l-1.787-0.208-0.109,4.262-3.762,0.082-2.151-3.135-3.062,0.091-0.182-2.905-2.989-2.296,8.494-11.272-0.593-2.562,2.459-2.079,3.253,1.596,2.461-3.627,1.175-0.911-0.018-0.138,4.983-1.676,1.121,0.664,1.23,5.505,5.314-6.543,4.774,2.644,13.669-10.598s1.64,1.176,2.25,1.467c0.583,0.283,1.832,0.729,2.478,0.802,0.656,0.063,1.987-0.073,2.607-0.282,0.427-0.147,1.366-0.511,1.557-0.921,0.128-0.273-0.062-0.929-0.2-1.203-0.291-0.61-1.412-1.477-1.804-2.042-0.365-0.529-1.149-1.639-1.193-2.286-0.046-0.51,0.474-1.486,0.673-1.959,0.22-0.511,0.557-1.64,1.003-1.958,0.218-0.156,0.784-0.201,1.047-0.165,0.265,0.045,0.712,0.374,0.958,0.483,0.201,0.091,0.593,0.355,0.803,0.319,0.291-0.046,0.811-0.484,0.919-0.757,0.2-0.501-0.128-1.604-0.236-2.132-0.146-0.657-0.693-1.896-0.849-2.56-0.118-0.556-0.482-1.75-0.272-2.278,0.155-0.42,0.946-0.93,1.322-1.167,0.756-0.473,2.459-1.103,3.315-1.358,0.766-0.237,2.333-0.61,3.126-0.646,0.902-0.027,2.715,0.164,3.562,0.446,0.667,0.219,1.814,1.067,2.453,1.357,0.392,0.184,1.203,0.547,1.64,0.603,1.057,0.145,3.181-0.273,4.247-0.366,0.763-0.053,2.304-0.264,3.078-0.237,0.811,0.028,2.425,0.257,3.208,0.484,0.729,0.219,2.059,1.047,2.797,1.239,0.429,0.109,1.322,0.12,1.769,0.164,0.455,0.046,1.377,0.229,1.84,0.201,0.813-0.055,2.37-0.592,3.162-0.766,1.142-0.236,3.408-0.739,4.566-0.838,1.131-0.101,3.417-0.174,4.529,0.036,0.745,0.146,2.194,0.684,2.842,1.085,0.438,0.282,1.058,1.194,1.521,1.439,0.237,0.128,0.773,0.283,1.038,0.247,0.504-0.092,1.313-0.785,1.725-1.085,0.372-0.272,1.175-0.802,1.403-1.203,0.209-0.355,0.153-1.221,0.318-1.604,0.127-0.291,0.454-0.864,0.719-1.038,0.43-0.273,1.503-0.301,2.006-0.365,0.592-0.073,1.794-0.017,2.368-0.155,0.41-0.1,1.213-0.437,1.558-0.682,0.438-0.302,1.277-1.031,1.475-1.522,0.139-0.302,0.057-0.992,0.048-1.322-0.02-0.565-0.101-1.686-0.2-2.242-0.118-0.582-0.492-1.722-0.685-2.287-0.163-0.493-0.574-1.458-0.719-1.959-0.109-0.374-0.354-1.139-0.318-1.522,0.035-0.346,0.318-1.03,0.565-1.285,0.208-0.228,0.828-0.436,1.12-0.555,0.382-0.164,1.174-0.528,1.594-0.52,0.319,0.01,0.876,0.329,1.168,0.438,0.282,0.1,0.854,0.383,1.155,0.4,0.548,0.037,1.586-0.391,2.124-0.446,0.493-0.036,1.532-0.146,1.969,0.083,0.292,0.165,0.501,0.938,0.802,1.084,0.29,0.146,0.992,0.082,1.32,0,0.42-0.1,1.177-0.583,1.559-0.803,0.63-0.364,1.804-1.247,2.441-1.603,0.428-0.228,1.295-0.675,1.76-0.802,0.428-0.11,1.349-0.283,1.768-0.154,0.327,0.1,0.802,0.673,1.076,0.883,0.317,0.237,0.964,0.693,1.282,0.92,0.412,0.292,1.25,0.858,1.643,1.158,0.254,0.191,0.829,0.519,0.966,0.802,0.118,0.246,0.063,0.811,0.036,1.083-0.027,0.301-0.346,0.903-0.283,1.205,0.055,0.2,0.365,0.509,0.529,0.637,0.192,0.155,0.629,0.464,0.876,0.437,0.418-0.037,1.047-0.72,1.33-1.039,0.326-0.364,0.69-1.321,1.038-1.685,0.337-0.355,1.184-0.93,1.639-1.121,0.34-0.137,1.112-0.119,1.439-0.282,0.393-0.191,0.922-0.975,1.322-1.158,0.556-0.264,1.832-0.391,2.45-0.355,0.521,0.018,1.551,0.318,2.033,0.519,0.512,0.202,1.367,0.931,1.888,1.075,0.345,0.101,1.111,0.191,1.439,0.045,0.228-0.1,0.509-0.556,0.646-0.765,0.183-0.292,0.665-0.901,0.601-1.24-0.073-0.346-0.802-0.674-1.048-0.92-0.246-0.236-0.919-1.003-0.919-1.003l4.044-1.758,2.444-9.331,9.048-1.886,0.081,2.688,3.809,2.643,2.68-2.323,3.125,9.048,3.327-2.642,1.402-1.959,1.158,3.799,4.29,0.319,1.396-2.123,2.168,2.926,10.938-1.004-3.609-5.32,0.737-5.761c0.128-0.044,0.237-0.081,0.336-0.089,0.666-0.11,2.032-0.046,2.717-0.055,0.856-0.01,2.569,0.091,3.416,0,0.583-0.064,1.749-0.264,2.297-0.483,0.355-0.137,0.921-0.684,1.285-0.802,0.721-0.227,2.288-0.227,3.043-0.154,0.575,0.055,1.668,0.583,2.243,0.529,0.39-0.037,1.048-0.602,1.439-0.639,0.354-0.036,1.11,0.1,1.393,0.319,0.292,0.237,0.711,0.967,0.692,1.339-0.016,0.439-0.848,1.067-0.965,1.496-0.218,0.838,0.356,2.604,0.219,3.472-0.085,0.537-0.365,1.704-0.801,2.023-0.528,0.391-2.024-0.109-2.616,0.164-0.273,0.128-0.738,0.574-0.857,0.856-0.082,0.201-0.127,0.674,0,0.857,0.174,0.236,0.829,0.391,1.121,0.373,0.238-0.018,0.621-0.373,0.856-0.427,0.284-0.073,0.876-0.073,1.176-0.055,0.367,0.019,1.103,0.364,1.439,0.209,0.384-0.164,0.711-1.02,0.902-1.385,0.254-0.446,0.773-1.367,0.856-1.869,0.082-0.446-0.309-1.394-0.153-1.813,0.254-0.711,1.503-1.73,2.131-2.141,0.62-0.401,2.05-0.92,2.779-1.066,0.655-0.128,2.014-0.165,2.671-0.056,0.565,0.102,1.621,0.557,2.132,0.802,0.311,0.147,0.839,0.703,1.175,0.694,0.183,0,0.402-0.083,0.638-0.202l0.483,1.968-0.639,2.242-3.309-0.273,5.176,8.658,3.417,1.12,0.222-2.889,3.471,0.055,1.276,2.196,4.866,0.045,1.12,2.033,1.76,0.109,2.122-4.493c0.218,0.419,0.446,0.857,0.711,1.021,0.719,0.473,2.552,0.501,3.418,0.529,0.691,0.028,2.086-0.292,2.768-0.21,0.758,0.091,2.232,0.574,2.89,0.966,0.602,0.355,1.466,1.503,2.031,1.913,0.858,0.648,2.816,1.578,3.736,2.142,0.467,0.282,1.168,0.719,1.86,1.166l-0.073,2.789h-3.08l1.796,6.843-0.757,1.24-8.894-0.155s-0.975-0.62-1.122-0.966c-0.188-0.474,0.248-1.531,0.165-2.042-0.072-0.411-0.301-1.358-0.685-1.522-0.219-0.089-0.664,0.238-0.885,0.32-0.39,0.164-1.146,0.556-1.559,0.684-0.39,0.128-1.264,0.09-1.602,0.318-0.265,0.191-0.43,0.911-0.683,1.122-0.211,0.182-0.766,0.336-1.039,0.4s-0.866,0.009-1.12,0.118c-0.364,0.174-1.204,1.085-1.204,1.085l1.004,5.213,6.523-0.246,4.691,4.483,1.913,0.081,0.886,0.765-6.441,6.562-6.89,4.529s-1.35-1.577-1.96-1.841c-0.346-0.147-1.131-0.183-1.486-0.082-0.281,0.082-0.701,0.547-0.966,0.684-0.273,0.136-0.928,0.191-1.156,0.401-0.247,0.219-0.5,0.875-0.527,1.203-0.021,0.346,0.436,1.011,0.362,1.357-0.063,0.348-0.611,0.838-0.802,1.121-0.302,0.446-1.011,1.285-1.156,1.804-0.155,0.539,0,1.686,0.037,2.243,0.071,0.964,0.354,2.889,0.481,3.843,0.229,1.687,1.149,5.041,0.959,6.735-0.057,0.584-0.631,1.649-0.839,2.196-0.165,0.438-0.648,1.267-0.639,1.721,0.008,0.421,0.329,1.259,0.639,1.524,0.136,0.106,0.509,0.106,0.683,0.164,0.302,0.089,0.955,0.236,1.202,0.436,0.318,0.275,0.756,1.039,0.874,1.44,0.246,0.8,0.02,2.506,0.129,3.327,0.083,0.673,0.709,1.976,0.592,2.64-0.083,0.476-0.618,1.366-1.038,1.606-0.292,0.163-1.049-0.102-1.358,0.044-0.4,0.174-1.165,0.813-1.203,1.239-0.035,0.356,0.911,0.855,0.803,1.202-0.174,0.52-1.521,0.584-2.041,0.757-0.52,0.174-1.612,0.337-2.088,0.603-0.373,0.2-1.047,0.767-1.274,1.121-0.174,0.254-0.129,0.975-0.364,1.164-0.429,0.33-1.623,0.102-2.162,0.118-0.719,0.02-2.176-0.135-2.887,0-0.374,0.074-1.094,0.338-1.403,0.559-0.282,0.209-0.785,0.746-0.874,1.083-0.11,0.392,0.328,1.214,0.236,1.604-0.082,0.354-0.63,0.902-0.84,1.201-0.19,0.257-0.565,0.785-0.765,1.039-0.189,0.247-0.491,0.976-0.792,0.959-0.383-0.019-0.692-0.896-0.847-1.24-0.256-0.574-0.412-1.842-0.602-2.443-0.166-0.51-0.401-1.603-0.758-2.004-0.182-0.19-0.701-0.465-0.966-0.473-0.384-0.02-1.192,0.257-1.441,0.556-0.244,0.3-0.301,1.139-0.281,1.521,0.037,0.702,0.556,2.023,0.758,2.688,0.145,0.445,0.519,1.329,0.602,1.804,0.055,0.266,0.101,0.812,0.045,1.076-0.073,0.347-0.328,1.057-0.601,1.284-0.293,0.23-1.086,0.221-1.442,0.318-0.829,0.237-2.449,0.804-3.243,1.122-0.773,0.309-2.275,1.021-3.043,1.357-0.729,0.327-2.23,0.893-2.925,1.286-0.247,0.136-0.647,0.62-0.92,0.638-0.064,0.009-0.12,0-0.194-0.018","name":"Кіровоградська область"},"09":{"path":"M1345.2,464.34c0,0.639,0.184,1.967,0,2.56-0.182,0.347-0.729,0.947-1.094,1.066-0.366,0.137-1.275-0.2-1.639-0.209-0.365-0.008-1.095-0.074-1.366,0.101-0.275,0.172-0.549,0.819-0.728,1.121-0.186,0.61-0.276,1.967-0.55,2.57-0.274,0.536-1.002,1.439-1.368,1.921-0.272,0.393-1.003,1.113-1.185,1.55-0.271,0.556-0.545,1.785-0.637,2.397-0.182,0.793-0.273,2.406-0.365,3.207-0.091,0.72,0,2.232-0.363,2.889-0.184,0.465-1.096,1.121-1.458,1.494-0.274,0.284-1.003,0.748-1.094,1.122-0.274,0.39-0.274,1.329-0.183,1.757,0.091,0.502,0.911,1.249,1.185,1.713,0.274,0.548,0.82,1.677,0.911,2.287,0.183,1.095-0.091,3.336-0.272,4.438-0.092,1.076-0.364,3.272-0.729,4.274-0.456,0.966-1.731,2.651-2.461,3.417-0.547,0.583-1.731,1.678-2.46,2.022-1.002,0.485-3.188,0.832-4.283,0.967-0.819,0.108-2.551,0.045-3.462,0.108-0.819,0.056-2.552,0.529-3.372,0.374-0.638-0.118-1.641-1.03-2.186-1.175-0.547-0.128-1.55-0.063-2.097,0-0.729,0.099-2.277,0.639-3.099,0.801-0.729,0.155-2.278,0.422-3.099,0.475-0.638,0.065-2.096,0.065-2.824,0-0.819-0.063-2.46-0.52-3.28-0.528-1.094-0.01-3.098,0.409-4.192,0.583-0.818,0.146-2.367,0.511-3.189,0.647-0.82,0.136-2.552,0.475-3.462,0.429-0.456-0.036-1.368-0.328-2.005-0.521l0.092-1.805-2.188-1.849,0.365-4.64,0.637-1.601-5.738-2.672-0.275-2.223-8.018-0.021-3.189,1.651-0.913-5.049-2.006-0.373,0.548-1.869,0.092-4.429s-2.825-0.866-3.827-1.064c-1.276-0.273-4.009-0.337-5.284-0.722-0.73-0.246-2.278-0.992-3.009-1.448-0.638-0.454-2.003-1.483-2.461-2.188-0.272-0.409-0.454-1.402-0.545-1.867-0.183-0.574-0.729-2.296-0.729-2.296l-6.652-2.588-2.915-0.026,0.091-6.033,2.644-1.257-0.912-1.869h-1.457l-2.188-2.587s-1.184-2.507-1.822-3.208c-0.183-0.253-0.729-0.765-1.002-0.857-0.365-0.09-1.003,0.056-1.275,0.164-0.547,0.165-1.824,1.04-1.824,1.04l-3.007-2.726,2.096-4.19s-0.728-1.058-1.001-1.332c-0.729-0.575-2.371-1.212-3.1-1.768-0.638-0.538-1.912-1.777-2.278-2.559-0.364-0.712-0.182-2.334-0.364-3.1-0.091-0.82-0.819-2.378-0.911-3.208-0.181-0.803-0.181-3.252-0.181-3.252l2.914-3.846-0.18-3.044-5.65-2.568,3.005-3.892-0.545-3.899s1.275-0.657,1.275-1.066c0-0.547-1.184-1.239-1.729-1.286-0.368-0.027-0.911,0.629-1.185,0.593-0.367-0.046-0.912-0.656-1.187-0.966-0.273-0.427-0.362-1.476-0.457-1.977-0.18-0.402-0.363-1.194-0.454-1.595,0-0.382,0.274-1.121,0.274-1.504-0.092-0.41-0.549-1.138-0.64-1.549-0.09-0.4,0.091-1.393-0.271-1.648-0.183-0.2-0.912,0.027-1.186,0.099-0.546,0.147-1.549,0.739-2.187,0.912-0.911,0.292-2.734,0.775-3.738,0.803-1.091,0.037-3.37-0.474-4.556-0.693-0.728-0.145-2.277-0.354-3.007-0.692-0.364-0.191-1.275-1.075-1.275-1.075l6.743-4.957s-1.64-2.206-2.095-2.999c-0.366-0.737-1.368-2.241-1.459-3.097,0-0.556,0.638-1.568,0.912-2.078,0.181-0.547,0.911-1.558,1.002-2.141,0.182-0.585,0.364-1.869,0.09-2.397-0.09-0.229-0.639-0.419-0.82-0.538-0.271-0.136-0.729-0.547-1.002-0.483-0.364,0.083-0.728,0.801-0.91,1.066-0.274,0.4-1.186,1.604-1.186,1.604l-5.65-1.814-2.005-1.176-0.91-6.086-3.098-1.139,1.64-2.441-0.09-4.375,3.645,1.896s0.636-0.555,0.73-0.802c0.088-0.272,0.088-0.884-0.093-1.147-0.093-0.328-0.638-0.802-1.003-0.993-0.455-0.283-1.549-0.5-2.005-0.72-0.545-0.218-1.639-0.593-1.912-1.012-0.273-0.292-0.455-1.075-0.548-1.439-0.273-1.094-0.91-3.289-1.093-4.411-0.089-0.664,0-2.031-0.182-2.696-0.093-0.594-0.548-1.723-0.73-2.297-0.271-0.565-0.82-1.641-0.909-2.242-0.091-0.766,0.273-2.314,0.454-3.07,0.091-0.61,0.274-1.969,0.638-2.424,0.273-0.255,1.003-0.292,1.368-0.456,0.273-0.155,0.817-0.501,1.002-0.775,0.182-0.229,0.273-0.811,0.182-1.039-0.089-0.219-0.637-0.329-0.82-0.428-0.273-0.137-1.091-0.228-1.184-0.511-0.183-0.272,0-0.965,0.093-1.229,0.271-0.346,1.091-0.71,1.545-0.847,0.547-0.218,1.823-0.218,2.37-0.428,0.457-0.155,1.368-0.52,1.549-0.884,0.365-0.51,0.365-1.84,0.456-2.461,0.183-0.574,0.274-1.722,0.456-2.295,0.092-0.475,0.092-1.532,0.454-1.869,0.275-0.274,1.276-0.073,1.55-0.347,0.185-0.2,0.273-0.829,0.273-1.121,0-0.373-0.089-1.122-0.273-1.467-0.273-0.793-1.366-2.161-1.823-2.834-0.454-0.511-1.093-1.75-1.731-1.95-0.453-0.128-1.457,0.765-1.729,0.429-0.366-0.419,0.728-1.495,0.818-2.032,0.183-0.492,0.093-1.576,0.274-2.051,0.091-0.282,0.547-0.837,0.82-0.965,0.182-0.084,0.637-0.019,0.819,0.054,0.365,0.119,0.728,0.803,1.093,0.803,0.364,0.008,0.822-0.584,1.094-0.803,0.273-0.264,0.91-0.875,1.186-1.148,0.364-0.346,1.184-1.021,1.64-1.275,0.364-0.193,1.366-0.183,1.457-0.539,0.092-0.182-0.182-0.564-0.363-0.691-0.456-0.402-1.823-0.447-2.458-0.666-0.275-0.128-1.097-0.374-1.277-0.648-0.274-0.3-0.729-1.157-0.548-1.548,0.093-0.237,0.729-0.31,0.82-0.5,0.182-0.229,0.182-0.938,0.365-1.122,0.272-0.228,1.094,0.009,1.456-0.081,0.275-0.072,0.912-0.264,1.004-0.511,0.273-0.573-0.092-1.967-0.275-2.587-0.181-0.51-0.637-1.468-1-1.896-0.366-0.565-1.822-1.284-2.097-1.949-0.092-0.272,0-0.938,0.091-1.376,0.456,0.156,1.366,0.1,1.822,0.018,0.729-0.155,2.097-0.855,2.734-1.285,0.819-0.52,2.097-1.913,2.734-2.561,0.364-0.346,1.184-0.956,1.457-1.394,0.365-0.72,0.457-2.397,0.639-3.198,0.091-0.748-0.093-2.26,0.091-2.998,0.089-0.593,0.362-1.85,0.728-2.296,0.365-0.365,1.367-0.693,1.822-0.792,0.548-0.12,1.641-0.028,2.097-0.056,0.549-0.037,1.641-0.328,2.187-0.218,0.274,0.064,0.911,0.336,1.003,0.592,0.456,0.638,0.456,2.314,0.547,3.089,0.183,0.72,0.092,2.215,0.363,2.888,0.183,0.384,0.64,1.149,1.096,1.34,0.455,0.255,1.731,0,2.277,0,0.638-0.009,1.913-0.055,2.551-0.055,0.639,0,1.914-0.245,2.461,0.055,0.455,0.274,0.912,1.449,1.185,1.922,0.272,0.393,0.729,1.404,1.185,1.541,0.274,0.091,0.82-0.284,1.094-0.42,0.638-0.337,1.73-1.265,2.277-1.658,0.822-0.555,2.552-1.777,3.464-2.087,0.547-0.154,1.549-0.118,2.095-0.154,0.729-0.055,2.187-0.456,2.825-0.164,0.638,0.282,1.367,1.522,1.639,2.141,0.276,0.52,0.185,1.74,0.457,2.242,0.547,0.901,2.277,2.15,3.007,2.825,0.639,0.537,1.824,1.722,2.644,2.031,0.454,0.22,1.641,0.22,2.278,0.264,0.911,0.073,2.825-0.246,3.736,0.164,0.272,0.119,0.546,0.621,0.728,0.857,0.365,0.446,0.821,1.421,1.094,1.922,0.364,0.647,0.821,2.078,1.275,2.67,0.274,0.356,0.911,1.067,1.275,1.175,0.549,0.11,1.552-0.345,2.005-0.537,0.912-0.364,2.552-1.395,3.372-1.868,0.911-0.52,2.825-1.44,3.646-2.087,0.637-0.427,1.548-1.54,2.096-2.022,0.365-0.328,1.002-1.202,1.46-1.23,0.636-0.045,1.638,0.838,2.002,1.23,1.003,0.801,2.371,2.871,3.098,3.791,0.73,0.766,2.006,2.397,2.826,2.989,0.455,0.301,1.458,0.71,2.004,0.856,0.455,0.137,1.549,0.137,2.005,0.264,0.729,0.191,2.096,0.984,2.825,1.122,0.457,0.091,1.367,0.091,1.822,0,0.548-0.109,1.459-0.692,2.005-0.857,0.456-0.127,1.274-0.419,1.731-0.373,0.639,0.063,1.73,0.812,2.278,1.02,0.455,0.174,1.55,0.456,2.005,0.529,0.729,0.092,2.004,0,2.734,0.055,0.455,0.037,1.366,0,1.821,0.264,0.364,0.292,0.729,1.303,0.818,1.767,0.274,0.729,0.55,2.287,0.731,3.044,0.18,0.784,0.545,2.388,1.001,3.099,0.272,0.592,1.276,1.612,1.823,2.022,0.455,0.32,1.367,0.747,1.914,0.966,0.547,0.246,1.64,0.674,2.186,0.901,0.64,0.293,1.914,0.866,2.552,1.185,0.637,0.283,1.823,1.021,2.458,1.222,0.551,0.191,1.916,0.191,2.463,0.319,0.729,0.136,1.915,0.71,2.552,0.747,0.729,0.046,2.095-0.137,2.732-0.418,0.729-0.365,1.915-1.65,2.553-2.252,0.455-0.473,1.274-1.547,1.821-2.022,0.549-0.529,1.55-1.668,2.188-1.977,0.457-0.201,1.459-0.265,1.915-0.265,0.453-0.01,1.276,0.155,1.73,0.21,0.639,0.081,1.913,0.228,2.552,0.319,0.456,0.063,1.275,0.09,1.73,0.273,0.548,0.273,1.55,1.139,1.824,1.704,0.18,0.301,0.272,1.039,0.09,1.339-0.181,0.302-0.821,0.602-1.185,0.639-0.272,0.028-0.729-0.347-1.003-0.264-0.454,0.154-1.001,1.184-1.274,1.594-0.548,0.793-1.731,2.351-2.096,3.263-0.274,0.602-0.457,1.915-0.364,2.562,0,0.746,0.637,2.159,0.91,2.832,0.455,0.976,1.823,2.717,2.461,3.628,0.727,1.22,2.37,3.653,3.099,4.911,0.453,0.82,1.367,2.478,1.639,3.372,0.273,0.619,0.456,1.914,0.548,2.56,0.09,0.792,0.273,2.396,0.273,3.207,0,0.529,0.272,1.623,0.091,2.133-0.364,0.902-1.822,2.196-2.46,2.935-0.819,1.101-2.735,3.244-3.463,4.438-0.638,0.893-1.55,2.806-2.006,3.79-0.272,0.684-0.548,2.188-1.002,2.824-0.274,0.593-1.366,1.477-1.822,2.034-0.548,0.854-1.276,2.915-2.004,3.689-0.456,0.546-1.822,1.385-2.461,1.65-0.82,0.282-2.46,0.228-3.189,0.428-0.547,0.127-1.548,0.5-2.004,0.746-0.364,0.219-1.002,0.93-1.458,1.067-0.64,0.191-1.914-0.109-2.552-0.055-0.729,0.082-2.277,0.456-3.098,0.703-0.638,0.2-2.096,0.492-2.46,1.066-0.274,0.4-0.185,1.485,0,1.922,0.181,0.381,0.908,1.029,1.274,1.176,0.273,0.11,1.002-0.01,1.277-0.111,0.362-0.108,0.909-0.764,1.274-0.746,0.455,0.018,1.093,0.684,1.366,0.966,0.548,0.427,1.276,1.512,1.823,1.967,0.729,0.738,2.46,2.014,3.188,2.725,0.729,0.665,2.279,1.969,2.826,2.779,0.275,0.346,0.363,1.239,0.637,1.549,0.637,0.593,2.277,1.076,3.008,1.44,0.82,0.383,2.279,1.349,3.098,1.548,0.729,0.173,2.277,0.127,3.008,0,0.455-0.09,1.549-0.383,2.003-0.747,0.366-0.319,0.549-1.285,0.819-1.713,0.093-0.319,0.274-1.085,0.549-1.275,0.273-0.165,0.911-0.045,1.184,0,0.274,0.044,0.911,0.163,1.188,0.374,0.363,0.3,0.636,1.204,0.727,1.649,0.091,0.593,0,1.813-0.091,2.406-0.092,0.729-0.272,2.214-0.636,2.833-0.366,0.52-1.369,1.25-1.916,1.605-0.546,0.419-1.823,1.174-2.551,1.44-0.729,0.281-2.278,0.583-3.098,0.691-0.729,0.109-2.46,0.483-3.189,0.164-0.638-0.264-1.275-1.549-1.731-2.031-0.365-0.411-1.095-1.268-1.549-1.55-0.366-0.191-1.183-0.592-1.552-0.429-0.544,0.264-0.727,1.695-1,2.243-0.274,0.546-0.912,1.621-1.184,2.132-0.455,0.638-1.459,1.787-1.822,2.46-0.184,0.52-0.551,1.623-0.639,2.196-0.09,0.776,0.181,2.36,0.181,3.144-0.093,0.739-0.363,2.205-0.638,2.888-0.271,0.575-1.001,1.559-1.366,2.079-0.366,0.574-1.276,1.658-1.55,2.295-0.18,0.491-0.273,1.558-0.273,2.087,0,0.557,0.184,1.686,0.457,2.188,0.272,0.656,1.275,1.84,1.913,2.187,0.454,0.292,1.731,0.401,2.278,0.374,0.73-0.019,1.913-0.556,2.552-0.584,0.819-0.037,2.369,0.091,3.097,0.428,0.822,0.402,2.279,1.769,2.734,2.562,0.455,0.665,0.912,2.223,1.094,2.988,0.184,0.857,0.184,2.616,0.366,3.472,0.179,0.856,0.545,2.587,1,3.363,0.364,0.702,1.367,1.941,1.913,2.459,0.456,0.429,1.642,1.004,2.189,1.332,0.364,0.255,1.276,0.666,1.638,1.021,0.184,0.2,0.456,0.691,0.55,0.956,0.089,0.356,0.18,1.149,0,1.45-0.275,0.336-1.187,0.428-1.55,0.582-0.457,0.201-1.64,0.438-2.005,0.858-0.275,0.382-0.366,1.431-0.366,1.923,0,0.518,0.274,1.612,0.548,2.032,0.364,0.445,1.457,1.111,2.004,1.12,0.545,0,1.369-0.938,1.914-1.075,0.457-0.11,1.458-0.11,1.914,0,0.363,0.108,1.183,0.511,1.457,0.801,0.364,0.355,0.911,1.276,1.003,1.769,1.3,0.89,1.2,2.65,1.2,3.53","name":"Луганська область"},"46":{"path":"M380.54,266.74l4.045,0.865,0.119,2.406-3.718,1.924,0.201,10.05,12.092,14.379s0.228-0.255,0.592-0.638l1.567,4.027-2.879,9.769-3.526,3.152s-0.993,0.557-1.332,0.483c-0.41-0.091-0.992-0.802-1.175-1.174-0.218-0.438,0.055-1.559-0.272-1.922-0.138-0.156-0.593-0.229-0.794-0.219-0.519,0.027-1.458,0.501-1.921,0.701-0.401,0.165-1.13,0.692-1.55,0.748-0.455,0.045-1.32-0.382-1.768-0.374-0.848,0.009-2.478,0.61-3.308,0.793-0.893,0.209-2.843,0.219-3.581,0.755-0.437,0.311-0.984,1.339-1.066,1.868-0.11,0.729,0.409,2.178,0.637,2.88,0.174,0.537,0.912,2.086,0.912,2.086l-1.978,4.219-4.27,0.48-3.891,5.44-6.305,4.646-10.151,3.362,1.166,5.294-0.073,1.129-10.178-3.981-3.445,1.003-1.321-0.675-0.603-3.646-4.164,0.438-2.323,5.249,1.121,1.995-3.327,3.646,1.404,3.053-0.283,3.717-2.041,3.407-3.326-1.64-2.205,3.281,2.406,2.086,0.237,3.245,7.536,1.12,0.601,1.204-1.121,5.887-3.089,0.283-0.956-2.607h-2.925l-2.807,1.558-4.802,1.923-4.576,0.802-3.762-0.966-3.281-1.477-2.041,1.44-6.807-0.237-3.891,0.756-5.122-2.078-6.25,3.6v2.25l-6.89,5.96-2.524,7.335,1.723,3.199-0.036,2.807-3.126,0.884-1.321,5.641-1.585,4.92-0.702,2.168-8.247-1.605-2.925-4.282-4.364-2.396-4.329,0.155-5.804-7.563-7.527,1.677-2.169-6.971-3.444-4.164-0.919-4.202,4.327-2.286-6.643-7.117c0.501,0.008,1.038-0.029,1.358-0.129,0.51-0.172,1.53-0.792,1.758-1.285,0.355-0.774-0.019-2.604-0.319-3.407-0.337-0.903-1.622-2.387-2.241-3.117-0.429-0.51-1.559-1.295-1.841-1.886-0.218-0.456-0.146-1.514-0.246-2.006-0.091-0.455-0.254-1.412-0.52-1.794-0.255-0.394-1.066-0.903-1.439-1.167-0.328-0.237-1.14-0.52-1.368-0.839-0.282-0.401-0.41-1.431-0.4-1.922,0.017-0.701,0.428-2.077,0.683-2.724,0.264-0.675,1.129-1.851,1.367-2.525,0.229-0.675,0.41-2.096,0.475-2.807,0.182-1.904,0.082-5.741,0.127-7.645,0.036-1.723,0.183-5.166,0.2-6.889,0.009-1.148-0.036-3.425-0.044-4.574-0.009-0.684,0.31-2.169-0.038-2.762-0.191-0.309-0.938-0.591-1.284-0.719-0.419-0.155-1.313-0.327-1.759-0.355-0.41-0.036-1.375,0.392-1.649,0.073-0.246-0.292,0.219-1.149,0.328-1.522,0.265-0.92,0.793-2.825,1.358-3.599,0.948-1.294,3.791-2.961,5.011-4.01,0.958-0.819,2.815-2.523,3.718-3.398,1.303-1.276,3.827-3.9,5.048-5.249,2.261-2.479,6.571-7.609,8.775-10.133,1.204-1.387,3.563-4.21,4.839-5.531,2.479-2.56,7.882-7.227,10.379-9.769,1.303-1.331,3.708-4.182,5.002-5.532,1.057-1.093,3.227-3.234,4.365-4.246,0.93-0.811,2.88-2.315,3.846-3.08,1.531-1.221,4.538-3.717,6.133-4.848,2.296-1.622,7.171-4.464,9.531-6.005,1.367-0.901,4.019-2.815,5.404-3.69,0.546-0.336,1.832-0.784,2.242-1.275,0.419-0.511,0.62-1.869,0.847-2.488,0.338-0.929,0.875-2.889,1.476-3.681,0.319-0.411,1.194-0.993,1.641-1.24,0.492-0.264,1.531-0.701,2.087-0.765,0.765-0.082,2.279,0.319,3.043,0.402,1.211,0.137,3.626,0.556,4.848,0.482,0.519-0.027,1.549-0.263,2.041-0.438,0.729-0.265,2.068-1.075,2.761-1.403,0.911-0.437,2.88-1.048,3.69-1.64,0.329-0.246,0.848-0.902,1.077-1.248,0.564-0.83,1.366-2.661,1.803-3.564,0.411-0.847,1.376-2.486,1.568-3.408,0.182-0.902-0.082-2.76-0.119-3.682-0.063-1.284-0.09-3.862-0.329-5.119-0.2-1.122-1.165-3.218-1.357-4.33-0.1-0.601-0.127-1.831-0.082-2.442,0.045-0.51,0.375-1.494,0.401-2.004,0-0.082,0.009-0.182,0.009-0.291,0.375,0.692,0.766,1.476,0.912,1.896,0.272,0.782,0.3,2.514,0.638,3.28,0.273,0.602,1.157,1.603,1.604,2.087,0.855,0.902,2.824,2.432,3.763,3.244,1.84,1.585,5.622,4.638,7.335,6.368,0.246,0.248,0.564,1.067,0.92,1.077,0.457,0.018,0.958-0.957,1.276-1.276,0.365-0.365,1.048-1.121,1.45-1.449,0.438-0.356,1.321-1.267,1.877-1.24,0.409,0.028,0.946,0.766,1.247,1.049,0.338,0.309,1.121,0.883,1.277,1.32,0.09,0.237-0.127,0.748-0.073,0.994,0.082,0.51,0.529,1.495,0.875,1.886,0.291,0.328,1.084,0.747,1.485,0.92,0.757,0.338,2.407,0.646,3.199,0.884,0.702,0.2,2.214,0.364,2.761,0.838,0.265,0.228,0.483,0.92,0.61,1.239,0.256,0.692,0.301,2.269,0.757,2.844,0.201,0.254,0.92,0.354,1.121,0.601,0.246,0.311,0.375,1.129,0.401,1.521,0.063,0.793-0.21,2.379-0.319,3.172-0.092,0.638-0.546,1.914-0.483,2.56,0.037,0.356,0.52,1.322,0.52,1.322l3.163,1.402,4.573,2.607s0.165,1.467,0.155,1.958c0,0.402-0.282,1.222-0.155,1.604,0.11,0.336,0.638,0.912,0.958,1.076,1.357,0.692,4.546,0.811,6.05,0.602,0.328-0.045,0.939-0.337,1.24-0.474,0.464-0.228,1.266-0.911,1.758-1.048,0.329-0.091,1.03,0.045,1.366,0,0.62-0.082,1.787-0.573,2.406-0.683,0.484-0.082,1.476-0.219,1.959-0.118,0.347,0.072,0.957,0.492,1.285,0.646,0.52,0.246,1.585,0.721,2.123,0.957,0.365,0.164,1.193,0.355,1.476,0.639,0.283,0.291,0.602,1.484,0.602,1.484l0.483,4.802,3.26,0.73z","name":"Львівська область"},"48":{"path":"M854.35,535.02c-0.119,0,3.362-10.733,3.362-10.733l-1.205-1.276s0.484-1.03,0.806-1.204c0.499-0.282,1.711-0.101,2.276-0.08,0.636,0.018,1.896,0.301,2.522,0.246,0.393-0.046,1.249-0.14,1.488-0.448,0.116-0.146,0.071-0.573,0.034-0.765-0.054-0.328-0.273-1.048-0.556-1.24-0.354-0.227-1.257,0-1.686,0-0.647,0.011-1.949,0.057-2.605,0.048-0.438-0.01-1.567,0.318-1.759-0.083-0.164-0.347,0.666-0.921,0.921-1.202,0.173-0.185,0.501-0.576,0.72-0.683,0.474-0.221,1.538-0.139,2.051-0.24,0.737-0.144,2.23-0.518,2.914-0.839,0.329-0.154,0.849-0.781,1.203-0.8,0.347-0.017,0.983,0.373,1.204,0.637,0.254,0.311,0.172,1.268,0.48,1.523,0.283,0.227,1.077,0.145,1.441,0.162,0.638,0.028,1.959,0.175,2.561-0.044,0.31-0.109,0.866-0.511,1.002-0.794,0.229-0.462,0.101-1.54,0.037-2.05-0.072-0.756-0.694-2.195-0.711-2.962-0.019-0.354,0.081-1.102,0.273-1.401,0.163-0.239,0.709-0.502,0.966-0.639,0.51-0.274,1.612-0.685,2.16-0.884,0.538-0.2,1.64-0.483,2.158-0.72,0.429-0.192,1.148-0.967,1.605-0.921,0.228,0.02,0.538,0.428,0.684,0.602,0.256,0.28,0.574,1.013,0.837,1.284,0.456,0.438,1.576,1.046,2.123,1.356,0.237,0.131,0.656,0.448,0.975,0.541l-0.838,3.817,0.613,7.954s0.728-0.036,0.965,0c0.263,0.037,0.837,0.137,1.039,0.319,0.181,0.153,0.437,0.638,0.4,0.885-0.036,0.198-0.566,0.608-0.566,0.608l2.344,3.738,0.035,1.922-1.796,0.884,1.321,6.123-5.766,4.41,0.517,6.806,1.678,6.134s1.284,0.474,1.731,0.591c0.363,0.11,0.946,0.257,1.504,0.366l3.254,6.325,2.567,9.375-4.527-0.082-2.89-5.685-2.314,1.365,3.035,7.764,3.691,0.246,1.356,4.237-2.24,2.169,0.208,4.246,2.114,5.083-4.046,2.607-6.359,0.237-3.892,7.49,3.928,4.966,7.208,4.812-3.601,4.64-4.256-1.878-1.795,2.88,3.683,1.521-0.083,2.688-9.768,3.243-0.155,1.604,5.998-0.081,2.285,2.76-17.523,3.7-1.657-4.939-3.9,1.678-2.406-2.435-4.857,0.065,1.147,3.654-4.327,0.638-2.132-2.242-4.384-0.026,0.218,5.267-6.414-4.093-3.198,2.78-2.188,2.323-0.19,2.615-4.374,3.098-2.269-3.152-6.954,1.331,3.556,6.414-1.239,0.866c-0.385-0.455-0.786-1.028-1.03-1.357-0.594-0.811-1.769-2.433-2.196-3.326-0.602-1.24-1.56-3.873-1.687-5.248-0.108-1.131,0.229-3.438,0.564-4.53,0.292-0.966,1.34-2.715,1.842-3.599,0.546-0.976,1.951-2.754,2.314-3.809,0.308-0.874,0.492-2.753,0.483-3.682,0-0.547-0.11-1.657-0.32-2.169-0.163-0.4-0.646-1.165-1.001-1.438-0.32-0.248-1.12-0.483-1.522-0.559-0.219-0.035-0.711,0.139-0.883,0-0.293-0.254-0.265-1.138-0.239-1.52,0.029-0.318,0.247-0.931,0.403-1.203,0.162-0.281,0.8-0.646,0.838-0.966,0.063-0.448-0.483-1.277-0.757-1.642-0.255-0.327-0.884-0.956-1.285-1.075-0.474-0.146-1.466,0.182-1.958,0.237-0.356,0.037-1.06,0.202-1.403,0.12-0.238-0.055-0.694-0.321-0.839-0.521-0.256-0.337-0.475-1.192-0.446-1.603,0.036-0.456,0.537-1.286,0.765-1.688,0.255-0.455,1.021-1.23,1.204-1.712,0.219-0.604,0.372-1.896,0.272-2.524-0.054-0.374-0.356-1.077-0.593-1.367-0.254-0.309-1.021-0.656-1.32-0.92-0.42-0.374-1.257-1.165-1.487-1.686-0.107-0.237,0.074-0.867-0.118-1.038-0.172-0.156-0.71-0.084-0.92,0-0.29,0.108-0.809,0.518-0.93,0.801-0.182,0.483-0.036,1.595,0.21,2.04,0.22,0.42,1.184,0.811,1.44,1.202,0.392,0.612,0.729,2.079,0.757,2.808,0.028,0.547-0.246,1.631-0.402,2.16-0.155,0.547-0.619,1.595-0.838,2.123-0.155,0.382-0.628,1.112-0.639,1.521-0.01,0.402,0.293,1.22,0.557,1.521,0.346,0.382,1.351,0.802,1.842,0.922,0.374,0.091,1.146,0.009,1.521,0.035,0.447,0.046,1.495-0.063,1.769,0.283,0.219,0.281-0.048,1.057-0.118,1.403-0.073,0.337-0.328,0.965-0.446,1.286-0.146,0.399-0.684,1.164-0.674,1.602,0,0.41,0.428,1.185,0.674,1.521,0.218,0.272,0.756,0.776,1.083,0.886,0.309,0.09,0.993-0.092,1.322-0.082,0.329,0,1.029-0.083,1.284,0.116,0.311,0.247,0.458,1.122,0.475,1.523,0.036,0.611-0.228,1.84-0.475,2.406-0.291,0.627-1.203,1.703-1.685,2.195-0.922,0.955-3.228,2.352-4.128,3.324-0.528,0.584-1.576,1.868-1.76,2.645-0.21,0.883,0.175,2.753,0.484,3.608,0.19,0.529,0.965,1.403,1.202,1.923,0.254,0.574,0.748,1.768,0.757,2.396,0.01,0.655-0.639,1.84-0.719,2.486-0.111,0.895,0.307,2.725,0.116,3.609-0.127,0.593-0.683,1.73-1.084,2.196-0.373,0.445-1.367,1.139-1.913,1.32-0.865,0.301-2.743,0.283-3.645,0.209-0.683-0.063-2.016-0.41-2.644-0.645-0.875-0.328-2.414-1.414-3.29-1.724-0.665-0.237-2.059-0.547-2.759-0.565-0.95-0.009-2.846,0.302-3.729,0.647-0.819,0.312-2.157,1.53-2.96,1.876-0.52,0.229-1.614,0.484-2.16,0.565-0.465,0.066-1.403,0.163-1.851,0.038-0.328-0.092-0.975-0.438-1.157-0.721-0.262-0.382-0.446-1.395-0.328-1.841,0.164-0.574,1.358-1.24,1.567-1.804,0.248-0.648-0.229-2.104,0-2.762,0.238-0.692,1.458-1.641,1.806-2.286,0.335-0.629,0.673-2.051,0.919-2.716,0.201-0.575,0.547-1.748,0.884-2.252,0.429-0.646,1.75-1.548,2.243-2.157,0.463-0.574,1.468-1.788,1.557-2.526,0.046-0.374-0.109-1.257-0.437-1.438-0.292-0.163-1.003,0.182-1.285,0.364-0.456,0.281-1.122,1.176-1.403,1.64-0.235,0.401-0.464,1.34-0.675,1.758-0.273,0.521-0.884,1.541-1.284,1.96-0.337,0.355-1.104,0.994-1.559,1.166-0.573,0.209-1.813,0.282-2.404,0.2-0.42-0.056-1.178-0.546-1.605-0.564-0.327-0.01-1.039,0.138-1.283,0.364-0.229,0.219-0.504,0.886-0.438,1.204,0.063,0.309,0.619,0.729,0.874,0.92,0.302,0.209,1.085,0.364,1.332,0.636,0.337,0.395,0.628,1.451,0.637,1.97,0.019,0.638-0.392,1.896-0.684,2.477-0.438,0.904-1.759,2.435-2.405,3.211-0.602,0.719-1.813,2.176-2.562,2.761-0.646,0.52-2.076,1.447-2.879,1.641-0.718,0.171-2.241,0-2.961-0.167-0.885-0.189-2.514-1.008-3.363-1.31-0.729-0.264-2.168-0.847-2.924-0.968-0.484-0.071-1.559,0.275-1.97,0-0.235-0.154-0.372-0.764-0.454-1.038-0.182-0.609-0.437-1.875-0.475-2.516-0.072-1.102-0.036-3.363,0.266-4.428,0.154-0.554,0.946-1.466,1.066-2.032,0.137-0.61,0.035-1.914-0.165-2.505-0.175-0.538-0.912-1.403-1.223-1.868-0.209-0.328-0.802-0.901-0.854-1.285-0.064-0.447,0.509-1.259,0.538-1.712,0.025-0.62-0.164-1.951-0.538-2.453-0.31-0.419-1.433-0.665-1.813-1.021-0.364-0.316-0.883-1.166-1.121-1.601-0.266-0.466-0.557-1.523-0.857-1.972-0.446-0.664-1.638-1.767-2.24-2.294-0.512-0.446-1.759-1.104-2.144-1.658-0.381-0.564-0.636-1.787-0.828-2.688l2.516-2.69s1.074-0.265,1.439-0.244c0.227,0.017,0.684,0.163,0.885,0.281,0.337,0.219,0.737,1.048,1.12,1.168,0.302,0.09,0.929-0.21,1.24-0.282,0.481-0.112,1.429-0.411,1.922-0.449,0.491-0.027,1.559,0.449,1.959,0.165,0.347-0.229,0.263-1.222,0.492-1.559,0.173-0.282,0.692-0.745,0.993-0.882,0.39-0.176,1.259-0.211,1.686-0.248,0.603-0.035,1.805,0.056,2.396,0,0.292-0.017,0.904-0.009,1.131-0.191,0.273-0.237,0.437-1.012,0.521-1.367,0.127-0.618,0.154-1.886,0.154-2.522,0-1.439-0.238-4.319-0.355-5.77-0.119-1.35-0.338-4.063-0.565-5.402-0.118-0.72-0.02-2.525-0.683-2.844-0.364-0.173-1.075,0.628-1.479,0.684-1.127,0.137-4.482-0.803-4.482-0.803v1.886l-5.33,1.111-0.719-2.796,4.728-3.607s0.311-0.712,0.355-0.958c0.082-0.463,0.138-1.449-0.037-1.888-0.127-0.309-0.616-0.829-0.918-0.965-0.548-0.238-1.787-0.173-2.37-0.074-0.483,0.084-1.457,0.411-1.843,0.722-0.29,0.236-0.607,0.946-0.835,1.239-0.164,0.2-0.43,0.72-0.685,0.765-0.482,0.082-1.267-0.765-1.723-0.966-0.318-0.135-1.002-0.3-1.32-0.438-0.547-0.236-1.706-0.693-2.125-1.121-0.246-0.255-0.565-0.93-0.638-1.283-0.082-0.402,0.201-1.249,0.082-1.641-0.108-0.338-0.573-0.948-0.883-1.121-0.255-0.146-0.876-0.172-1.166-0.118-0.447,0.082-1.213,0.664-1.641,0.839-0.438,0.173-1.331,0.592-1.804,0.566-0.383-0.029-1.149-0.357-1.403-0.649-0.575-0.674-0.693-2.579-0.911-3.445-0.202-0.773-0.639-2.331-0.767-3.125-0.082-0.491-0.337-1.53-0.164-1.994,0.109-0.274,0.647-0.584,0.847-0.803,0.22-0.256,0.72-0.756,0.793-1.084,0.119-0.467-0.063-1.449-0.274-1.887-0.164-0.328-0.719-0.895-1.039-1.075-0.438-0.254-1.541-0.173-1.922-0.483-0.265-0.211-0.51-0.883-0.601-1.203-0.137-0.429-0.411-1.375-0.246-1.802,0.1-0.238,0.583-0.513,0.802-0.639,0.245-0.139,0.839-0.209,1.048-0.402,0.264-0.246,0.51-0.974,0.637-1.319,0.101-0.284,0.064-0.959,0.283-1.159,0.229-0.219,0.984-0.027,1.239-0.2,0.319-0.238,0.72-1.011,0.756-1.402,0.047-0.429-0.209-1.313-0.481-1.65-0.237-0.282-1.031-0.446-1.322-0.674-0.3-0.246-0.847-0.849-0.992-1.203-0.11-0.235-0.065-0.784-0.12-1.038-0.072-0.285-0.172-0.92-0.409-1.085-0.31-0.219-1.138-0.038-1.513,0-0.419,0.046-1.238,0.455-1.649,0.363-0.346-0.091-0.901-0.637-1.121-0.929-0.292-0.384-0.584-1.339-0.756-1.795-0.155-0.392-0.702-1.176-0.565-1.567,0.064-0.184,0.51-0.3,0.683-0.4,0.256-0.146,0.839-0.383,1.039-0.602,0.219-0.237,0.574-0.838,0.565-1.159-0.019-0.427-0.473-1.265-0.847-1.483-0.675-0.394-2.369-0.21-3.125,0-0.539,0.153-1.568,0.766-1.914,1.202-0.265,0.338-0.41,1.212-0.565,1.604-0.127,0.328-0.336,1.021-0.564,1.285-0.264,0.311-0.984,0.818-1.394,0.875-0.283,0.045-0.875-0.13-1.085-0.32-0.302-0.271-0.52-1.12-0.602-1.521s0.128-1.287-0.082-1.643c-0.209-0.372-1.03-0.8-1.441-0.918-0.928-0.273-2.916-0.035-3.881,0-1.139,0.046-3.398,0.2-4.528,0.356-0.82,0.116-2.415,0.608-3.244,0.646-0.464,0.018-1.431,0.008-1.841-0.201-0.365-0.182-0.902-0.836-1.084-1.204-0.355-0.711-0.455-2.34-0.6-3.125-0.21-1.12-0.648-3.353-0.803-4.482-0.073-0.555-0.401-1.723-0.2-2.241,0.173-0.438,1.011-0.958,1.367-1.247,0.446-0.366,1.476-0.938,1.877-1.358,0.282-0.292,0.774-0.94,0.884-1.322,0.191-0.646,0.09-2.023-0.036-2.678-0.101-0.484-0.301-1.569-0.72-1.806-0.739-0.418-2.489,0.61-3.327,0.557-0.4-0.019-1.521-0.438-1.521-0.438l-3.043-11.973-3.844-1.769-0.72-4.838,2.477-1.531-2.806-4.838s-0.073-1.45,0.283-1.685c0.492-0.331,1.695,0.525,2.288,0.563,0.31,0.019,0.938-0.071,1.238-0.164,0.374-0.108,1.02-0.601,1.403-0.683,0.283-0.064,0.866,0.046,1.158,0.046,0.51,0,1.649,0.238,2.049-0.083,0.274-0.219,0.265-1.02,0.355-1.366,0.073-0.274,0.338-0.829,0.32-1.121-0.019-0.365-0.657-1.003-0.556-1.358,0.028-0.126,0.137-0.254,0.273-0.373,0.336-0.29,0.866-0.548,1.121-0.711,0.419-0.263,1.293-0.755,1.767-0.884,0.875-0.219,2.707-0.173,3.6-0.119,0.784,0.056,2.379,0.211,3.09,0.521,0.718,0.327,1.885,1.448,2.479,1.969,0.3,0.253,1.165,1.083,1.165,1.083l1.441-3.245,2.76-0.209,3.964-1.758,12.384-0.155,2.442,1.677,7.525-3.764s0.038-1.723,0.403-2.122c0.137-0.147,0.61-0.11,0.757-0.238,0.145-0.118,0.171-0.547,0.326-0.646,0.566-0.347,2.033,0.173,2.68,0,0.236-0.054,0.529-0.657,0.766-0.601,0.592,0.135,1.075,2.204,1.075,2.204l4.893-0.52,2.278,2.643-1.002,1.923,3.563,4.28,10.179-0.552-0.885,1.757,1.841,1.521,5.332-0.354,0.119,1.522-1.441,2.996,2.961,0.119,3.527-2.041,0.035-1.603,1.926-1.24,2.12,2.004,1.723-0.601,2.17,1.805,3.044-0.201,2.56,3.964-3.928,1.521,1.523,5.805,3.646,3.291,1.885-0.484,0.319,1.97,2.44,3.681-0.481,1.04,1.402,1.119-2.206,1.249-0.354,4.401-1.886,2.277,7.007,0.129,0.883-1.05-0.117-2.277,8.929-1.402,2.443,4.884-0.201,2.287,1.047,1.285,3.565-0.812,2.276-3.444,3.246-2.314,3.042-0.365,2.405,4.85,9.57-4.129,4.446,1.887c-0.06-0.06,3.69-0.1,3.83-0.11","name":"Миколаївська область"},"51":{"path":"M671.2,739.65c0.173-0.338,0.126-1.12,0.109-1.496-0.019-0.428-0.201-1.265-0.265-1.686-0.064-0.41-0.056-1.275-0.246-1.654-0.083-0.168-0.374-0.433-0.529-0.533-0.228-0.144-0.811-0.209-0.993-0.399-0.229-0.245-0.155-1.075-0.419-1.285-0.208-0.163-0.811-0.163-1.075-0.109-0.21,0.056-0.529,0.438-0.748,0.456-0.427,0.055-1.212-0.546-1.648-0.556-0.32-0.009-0.948,0.163-1.204,0.346-0.456,0.317-1.121,1.275-1.34,1.787-0.255,0.628-0.474,2.005-0.401,2.669,0.056,0.43,0.438,1.23,0.647,1.604,0.183,0.347,0.766,0.92,0.93,1.285,0.183,0.383,0.384,1.231,0.428,1.65,0.045,0.401-0.146,1.21-0.054,1.602,0.082,0.347,0.328,1.177,0.665,1.261,0.338,0.07,0.839-0.585,1.103-0.804,0.3-0.256,0.848-0.83,1.148-1.095,0.329-0.29,1.002-0.884,1.358-1.146,0.401-0.302,1.256-0.82,1.658-1.121,0.23-0.19,0.75-0.52,0.87-0.78m12.33-11.22c0.009-0.329-0.364-0.923-0.446-1.24-0.027-0.146,0.037-0.501-0.073-0.603-0.318-0.301-1.358,0-1.768-0.163-0.464-0.182-1.067-1.139-1.559-1.239-0.71-0.136-2.142,0.447-2.761,0.803-0.456,0.264-1.275,0.984-1.531,1.438-0.254,0.485-0.063,1.724-0.4,2.169-0.219,0.292-0.956,0.721-1.313,0.639-0.337-0.082-0.773-0.745-0.846-1.084-0.065-0.311,0.52-0.993,0.318-1.238-0.163-0.209-0.856-0.111-1.075,0.036-0.438,0.31-0.702,1.449-0.802,1.969-0.129,0.673-0.064,2.076,0.037,2.762,0.091,0.608,0.61,1.756,0.683,2.358,0.082,0.639-0.128,1.923-0.081,2.568,0.026,0.329-0.073,1.194,0.245,1.322,0.174,0.073,0.482-0.317,0.638-0.446,0.501-0.401,1.403-1.331,1.876-1.759,0.411-0.365,1.241-1.047,1.641-1.404,0.54-0.465,1.585-1.42,2.124-1.876,0.673-0.574,2.059-1.639,2.726-2.204,0.473-0.401,1.476-1.148,1.849-1.643,0.17-0.27,0.49-0.86,0.51-1.18m18.7-228.87c0.557,0.083,1.878,0.175,2.644-0.309-0.137,0.119-0.247,0.246-0.273,0.372-0.101,0.356,0.538,0.995,0.555,1.358,0.019,0.292-0.246,0.848-0.319,1.122-0.091,0.346-0.082,1.146-0.357,1.367-0.399,0.319-1.538,0.081-2.049,0.081-0.283,0-0.875-0.11-1.157-0.045-0.383,0.082-1.029,0.573-1.404,0.683-0.3,0.092-0.929,0.183-1.238,0.163-0.592-0.037-1.796-0.892-2.288-0.563-0.354,0.234-0.282,1.685-0.282,1.685l2.806,4.838-2.478,1.523,0.719,4.847,3.846,1.768,3.043,11.973s1.121,0.421,1.521,0.438c0.838,0.045,2.588-0.974,3.326-0.556,0.419,0.236,0.621,1.32,0.72,1.796,0.127,0.663,0.227,2.041,0.036,2.688-0.11,0.382-0.601,1.03-0.884,1.322-0.401,0.419-1.431,0.993-1.876,1.357-0.356,0.29-1.195,0.811-1.367,1.247-0.202,0.52,0.127,1.687,0.2,2.241,0.155,1.131,0.592,3.364,0.802,4.482,0.146,0.786,0.246,2.416,0.601,3.126,0.183,0.367,0.72,1.021,1.083,1.203,0.41,0.21,1.377,0.219,1.842,0.201,0.829-0.036,2.424-0.528,3.243-0.646,1.13-0.156,3.39-0.311,4.529-0.356,0.965-0.035,2.952-0.272,3.881,0,0.411,0.118,1.231,0.546,1.441,0.918,0.209,0.357,0,1.242,0.082,1.644,0.081,0.399,0.3,1.248,0.602,1.521,0.209,0.191,0.802,0.356,1.084,0.319,0.409-0.057,1.129-0.564,1.394-0.875,0.228-0.273,0.438-0.956,0.565-1.285,0.155-0.392,0.3-1.267,0.565-1.604,0.346-0.437,1.375-1.049,1.913-1.202,0.756-0.21,2.451-0.393,3.125,0,0.374,0.22,0.829,1.057,0.848,1.483,0.009,0.323-0.346,0.922-0.565,1.159-0.2,0.219-0.784,0.455-1.039,0.603-0.173,0.1-0.62,0.216-0.683,0.399-0.137,0.392,0.41,1.176,0.564,1.567,0.173,0.456,0.465,1.403,0.756,1.796,0.219,0.291,0.776,0.838,1.122,0.928,0.411,0.092,1.229-0.316,1.649-0.363,0.374-0.036,1.204-0.217,1.512,0,0.238,0.165,0.337,0.801,0.41,1.085,0.054,0.254,0.009,0.793,0.119,1.038,0.146,0.355,0.692,0.958,0.993,1.203,0.291,0.228,1.085,0.392,1.321,0.675,0.282,0.338,0.529,1.221,0.482,1.649-0.036,0.392-0.438,1.164-0.756,1.402-0.256,0.174-1.012-0.018-1.239,0.201-0.219,0.2-0.182,0.875-0.283,1.158-0.128,0.346-0.373,1.073-0.638,1.32-0.208,0.193-0.802,0.263-1.047,0.401-0.219,0.127-0.702,0.4-0.802,0.639-0.164,0.427,0.109,1.365,0.247,1.803,0.09,0.319,0.336,0.992,0.601,1.202,0.382,0.312,1.485,0.229,1.922,0.483,0.319,0.181,0.874,0.748,1.039,1.075,0.21,0.438,0.393,1.421,0.282,1.887-0.081,0.328-0.582,0.828-0.801,1.085-0.2,0.218-0.739,0.528-0.847,0.802-0.173,0.464,0.082,1.503,0.164,1.994,0.127,0.794,0.565,2.352,0.766,3.126,0.218,0.866,0.337,2.761,0.911,3.444,0.255,0.292,1.021,0.621,1.404,0.639,0.472,0.036,1.367-0.383,1.804-0.556,0.427-0.175,1.193-0.756,1.641-0.838,0.289-0.055,0.911-0.027,1.165,0.118,0.311,0.172,0.775,0.773,0.884,1.12,0.119,0.392-0.164,1.239-0.083,1.641,0.074,0.355,0.393,1.028,0.638,1.283,0.419,0.428,1.578,0.885,2.125,1.123,0.319,0.136,1.003,0.301,1.321,0.436,0.456,0.201,1.24,1.049,1.722,0.968,0.256-0.047,0.52-0.565,0.685-0.767,0.227-0.293,0.546-1.011,0.836-1.238,0.386-0.311,1.358-0.639,1.843-0.722,0.583-0.1,1.822-0.163,2.369,0.074,0.302,0.135,0.791,0.655,0.919,0.964,0.174,0.439,0.119,1.425,0.037,1.889-0.046,0.245-0.355,0.957-0.355,0.957l-4.728,3.607,0.719,2.797,5.33-1.12v-1.878s3.354,0.939,4.482,0.803c0.403-0.055,1.113-0.865,1.486-0.684,0.655,0.318,0.557,2.124,0.675,2.844,0.228,1.339,0.446,4.054,0.565,5.402,0.117,1.438,0.354,4.33,0.354,5.77,0,0.637-0.027,1.904-0.155,2.523-0.082,0.354-0.245,1.129-0.521,1.367-0.226,0.174-0.837,0.174-1.129,0.19-0.591,0.056-1.793-0.034-2.396,0-0.428,0.038-1.297,0.073-1.686,0.248-0.301,0.137-0.82,0.6-0.993,0.883-0.229,0.336-0.146,1.33-0.492,1.56-0.4,0.282-1.468-0.193-1.96-0.167-0.492,0.038-1.44,0.337-1.921,0.449-0.312,0.072-0.939,0.373-1.241,0.282-0.383-0.12-0.784-0.949-1.119-1.167-0.202-0.118-0.659-0.265-0.886-0.282-0.364-0.019-1.438,0.245-1.438,0.245l-2.517,2.69c-0.044-0.239-0.089-0.45-0.125-0.621-0.22-0.949-0.604-2.871-0.647-3.845-0.028-0.858,0.281-2.561,0.271-3.419-0.008-0.6,0.037-1.887-0.271-2.405-0.139-0.237-0.631-0.674-0.903-0.637-0.33,0.045-0.666,0.736-0.858,1.01-0.3,0.429-1.019,1.295-1.065,1.813-0.054,0.602,0.702,1.668,0.857,2.242,0.172,0.645,0.346,1.959,0.427,2.624,0.101,0.931,0.173,2.798,0.265,3.736,0.101,1.066-0.009,3.315,0.483,4.273,0.301,0.593,1.503,1.341,1.969,1.815,0.784,0.79,2.268,2.431,2.941,3.307,0.677,0.892,1.915,2.761,2.452,3.745,0.421,0.736,1.258,2.259,1.45,3.088,0.155,0.712,0.063,2.168,0,2.89-0.073,0.783-0.583,2.304-0.594,3.099,0,0.637,0.211,1.904,0.431,2.503,0.163,0.458,0.745,1.231,0.955,1.66,0.238,0.475,0.729,1.449,0.802,1.979,0.075,0.5,0.165,1.676-0.209,2.022-0.244,0.237-1.013-0.019-1.339,0.054-0.611,0.146-1.74,0.711-2.297,1.02-0.646,0.367-1.759,1.44-2.45,1.706-0.885,0.336-2.808,0.364-3.736,0.482-1.003,0.137-3.027,0.301-4.011,0.538-0.592,0.136-1.84,0.392-2.296,0.802-0.555,0.501-1.03,2.003-1.284,2.717-0.457,1.311-1.004,4.044-1.331,5.394-0.43,1.739-1.131,5.256-1.705,6.942-0.61,1.778-2.141,5.24-3.043,6.889-0.829,1.495-2.707,4.357-3.799,5.66-0.938,1.139-3.208,3.044-4.22,4.108-0.911,0.977-2.505,3.136-3.471,4.064-0.794,0.775-2.752,1.922-3.464,2.78-0.628,0.746-1.412,2.55-1.877,3.417-0.5,0.956-1.384,2.935-1.967,3.845-0.729,1.132-2.433,3.208-3.317,4.21-0.337,0.4-0.957,1.694-1.44,1.504-0.254-0.109-0.1-0.857,0-1.12,0.183-0.457,1.195-0.976,1.331-1.442,0.155-0.525-0.445-1.602-0.373-2.141,0.09-0.593,0.938-1.547,1.075-2.132,0.155-0.691,0.173-2.159-0.055-2.833-0.229-0.675-1.157-1.787-1.658-2.297-0.429-0.437-1.604-1.002-1.978-1.492-0.254-0.349-0.573-1.179-0.638-1.605-0.091-0.594,0.009-1.822,0.164-2.406,0.119-0.456,0.766-1.23,0.803-1.704,0.036-0.573-0.365-1.694-0.647-2.186-0.172-0.311-0.646-0.866-0.957-1.022-0.556-0.263-1.896,0.046-2.46-0.21-0.51-0.236-1.294-1.083-1.604-1.549-0.283-0.42-0.684-1.376-0.748-1.867-0.099-0.757,0.438-2.279,0.374-3.045-0.037-0.527-0.191-1.676-0.583-2.031-0.32-0.291-1.331-0.526-1.713-0.317-0.228,0.128-0.347,0.701-0.373,0.956-0.046,0.556,0.483,1.64,0.428,2.196-0.037,0.437-0.273,1.401-0.638,1.649-0.3,0.21-1.148,0.21-1.44,0-0.401-0.276-0.537-1.341-0.646-1.813-0.184-0.829-0.136-2.552-0.374-3.362-0.1-0.355-0.41-1.048-0.637-1.341-0.356-0.437-1.231-1.203-1.76-1.385-0.993-0.336-3.162-0.254-4.173,0-0.627,0.155-1.84,0.756-2.296,1.23-0.52,0.547-1.121,1.987-1.276,2.717-0.208,0.981-0.208,3.061,0.101,4.008,0.345,1.038,1.749,2.797,2.514,3.581,0.903,0.931,3.089,2.37,4.165,3.098,0.947,0.639,2.951,1.75,3.899,2.397,0.884,0.603,2.607,1.867,3.418,2.569,1.092,0.929,3.416,2.751,4.108,4,0.483,0.866,0.519,2.926,0.856,3.845,0.32,0.876,1.467,2.417,1.704,3.31,0.219,0.792,0.155,2.451,0.166,3.262,0.009,0.511,0.126,1.56-0.056,2.031-0.172,0.448-0.883,1.149-1.23,1.495-0.355,0.355-1.194,0.92-1.549,1.276-0.5,0.52-1.313,1.731-1.813,2.241-0.692,0.729-2.351,1.896-3.043,2.624-0.492,0.512-1.176,1.832-1.759,2.242-0.336,0.236-1.24,0.263-1.549,0.538-0.583,0.48-0.967,2.078-1.439,2.66-1.02,1.267-3.746,3.097-4.921,4.219-1.185,1.14-3.28,3.69-4.483,4.812-1.859,1.732-5.951,4.783-7.9,6.405-1.84,1.532-5.432,4.667-7.262,6.196-1.331,1.104-3.929,3.391-5.34,4.385-1.166,0.81-3.672,2.196-4.921,2.878-1.412,0.785-4.364,2.169-5.758,2.989-0.829,0.492-2.452,1.54-3.208,2.144-0.573,0.455-1.677,1.447-2.132,2.021-0.528,0.657-1.44,2.096-1.713,2.889-0.136,0.392-0.183,1.239-0.209,1.648-0.055,0.63-0.41,1.998-0.055,2.518,0.256,0.363,1.257,0.546,1.705,0.581,0.282,0.028,0.903,0.009,1.121-0.153,0.318-0.236,0.318-1.23,0.647-1.448,0.446-0.293,1.603-0.147,2.132-0.057,0.538,0.102,1.648,0.421,2.031,0.812,0.466,0.476,0.838,1.84,0.912,2.507,0.019,0.272-0.173,0.801-0.164,1.066,0.027,0.627,0.509,1.83,0.583,2.459,0.109,0.821-0.046,2.488,0.055,3.308,0.118,0.885,0.747,2.589,0.856,3.473,0.091,0.711,0.173,2.187,0,2.88-0.201,0.812-1.258,2.168-1.549,2.941-0.227,0.592-0.438,1.841-0.593,2.452-0.109,0.455-0.082,1.566-0.474,1.823-0.209,0.127-0.72-0.147-0.965-0.165-0.329-0.027-1.001-0.035-1.33,0-0.383,0.044-1.112,0.383-1.495,0.375-0.255,0-0.793-0.083-0.966-0.264-0.501-0.531-0.455-2.134-0.638-2.835-0.292-1.104-1.467-3.254-1.285-4.383,0.092-0.557,1.121-1.322,1.285-1.868,0.183-0.583,0.218-1.877,0-2.45-0.255-0.649-1.331-1.598-1.869-2.034-0.928-0.747-3.026-1.924-4.109-2.404-1.23-0.53-3.845-1.158-5.13-1.541-1.048-0.319-3.108-1.011-4.165-1.284-1.357-0.346-4.109-0.976-5.504-1.122-1.302-0.136-3.927-0.11-5.23-0.054-1.03,0.035-3.144,0.019-4.11,0.373-0.874,0.32-2.306,1.577-3.042,2.131-0.793,0.594-2.25,1.961-3.098,2.463-0.711,0.418-2.26,1.048-3.044,1.283-0.602,0.174-1.841,0.347-2.46,0.43-0.438,0.045-1.376-0.121-1.758,0.1-0.501,0.293-0.912,1.485-1.286,1.922-0.208,0.246-0.738,0.612-0.939,0.856-0.482,0.593-1.011,2.143-1.594,2.644-0.445,0.383-1.604,0.747-2.168,0.883-0.665,0.156-2.087,0.493-2.725,0.236-0.556-0.228-1.084-1.51-1.604-1.839-0.445-0.3-1.539-0.574-2.076-0.639-0.657-0.081-2.042-0.127-2.643,0.154-0.419,0.201-1.122,0.922-1.285,1.368-0.301,0.82,0.419,2.671,0.164,3.518-0.228,0.757-1.211,2.096-1.84,2.567-0.61,0.447-2.132,0.859-2.888,0.96-1.213,0.153-3.701-0.02-4.885-0.319-0.701-0.175-2.041-0.803-2.642-1.205-0.593-0.391-1.439-1.63-2.086-1.92-0.365-0.165-1.204-0.229-1.605-0.156-0.364,0.064-0.983,0.609-1.357,0.638-0.92,0.063-2.679-0.747-3.526-1.121-1.175-0.519-3.473-1.758-4.484-2.568-1.029-0.813-2.724-2.853-3.608-3.838-0.719-0.81-2.27-2.352-2.797-3.288-0.492-0.858-1.039-2.798-1.286-3.764-0.236-0.95-0.227-2.962-0.638-3.846-0.309-0.665-1.421-1.704-1.922-2.242-0.319-0.336-1.111-0.865-1.312-1.285-0.155-0.319-0.173-1.075-0.155-1.438,0.027-0.558,0.164-1.723,0.475-2.188,0.392-0.583,1.693-1.256,2.295-1.604,0.803-0.454,2.469-1.313,3.372-1.492,0.492-0.102,1.522,0.008,2.022,0.055,0.61,0.044,1.805,0.346,2.406,0.317,0.574-0.028,1.667-0.619,2.242-0.536,0.373,0.054,0.966,0.555,1.284,0.746,0.32,0.2,0.911,0.728,1.276,0.8,0.537,0.11,1.694-0.055,2.141-0.372,0.311-0.22,0.629-0.963,0.747-1.329,0.192-0.595,0.119-1.859,0.266-2.464,0.089-0.362,0.2-1.228,0.536-1.383,0.33-0.154,1.049,0.62,1.386,0.482,0.318-0.137,0.482-0.911,0.592-1.229,0.227-0.701,0.619-2.148,0.583-2.888-0.019-0.564-0.592-1.624-0.638-2.188-0.046-0.565,0.328-1.676,0.264-2.241-0.046-0.446-0.365-1.31-0.583-1.713-0.201-0.347-0.884-0.847-1.02-1.222-0.127-0.354-0.091-1.139,0-1.493,0.136-0.529,0.738-1.449,1.074-1.878,0.311-0.391,1.012-1.213,1.495-1.385,0.365-0.128,1.175,0,1.549,0.11,0.128,0.036,0.337,0.245,0.474,0.265,0.482,0.062,1.521-0.147,1.867-0.485,0.457-0.438,0.457-1.82,0.702-2.395,0.154-0.384,0.455-1.224,0.802-1.452,0.429-0.28,1.604,0.02,2.078-0.208,0.564-0.273,1.285-1.394,1.769-1.813,0.355-0.328,1.075-1.03,1.539-1.177,0.639-0.198,2.023,0.255,2.68,0.101,0.437-0.101,1.285-0.519,1.594-0.847,0.821-0.884,1.887-3.18,1.978-4.383,0.045-0.556-0.438-1.603-0.583-2.133-0.146-0.52-0.54-1.55-0.593-2.088-0.064-0.746,0.091-2.259,0.273-2.987,0.165-0.676,0.556-2.087,1.066-2.561,0.666-0.638,2.597-0.921,3.462-1.23,0.985-0.355,2.934-1.076,3.901-1.439,1.047-0.392,3.144-1.156,4.165-1.604,0.674-0.293,2.232-0.666,2.624-1.285,0.301-0.481,0.127-1.73,0-2.296-0.137-0.583-0.81-1.594-1.076-2.132-0.246-0.52-0.848-1.521-0.957-2.087-0.1-0.511-0.118-1.612,0.109-2.079,0.282-0.591,1.485-1.272,1.969-1.712,0.765-0.675,2.287-2.04,2.998-2.781,0.802-0.817,2.424-2.495,3.044-3.461,0.246-0.401,0.71-1.248,0.748-1.714,0.027-0.382-0.146-1.183-0.375-1.493-0.291-0.391-1.265-0.736-1.657-1.013-0.766-0.546-2.351-1.63-2.879-2.405-0.401-0.574-0.757-1.941-0.912-2.615-0.274-1.165-0.474-3.563-0.593-4.758-0.137-1.564-0.09-4.745-0.374-6.303-0.155-0.903-0.756-2.653-1.066-3.519-0.201-0.575-0.775-1.656-0.903-2.251-0.063-0.272-0.209-0.883-0.054-1.12,0.19-0.3,0.976-0.492,1.33-0.527,0.738-0.093,2.196,0.453,2.944,0.427,0.71-0.029,2.131-0.336,2.769-0.637,0.921-0.439,2.26-2.104,3.208-2.461,0.602-0.229,1.959,0.046,2.56-0.164,0.711-0.236,1.887-1.229,2.517-1.648,0.464-0.321,1.357-1.04,1.867-1.287,0.456-0.218,1.44-0.729,1.923-0.582,0.41,0.109,0.966,0.884,1.121,1.275,0.265,0.657,0.154,2.125,0.109,2.836-0.063,0.873-0.52,2.585-0.593,3.471-0.09,1.075-0.099,3.242,0,4.319,0.064,0.627,0.046,2.014,0.483,2.461,0.227,0.236,0.966,0.345,1.285,0.264,0.701-0.165,1.777-1.258,2.242-1.814,0.409-0.499,1.021-1.676,1.22-2.297,0.174-0.5,0.138-1.585,0.329-2.085,0.246-0.621,0.92-1.876,1.493-2.242,0.384-0.247,1.386-0.438,1.814-0.265,0.446,0.175,0.929,1.083,1.175,1.495,0.311,0.526,0.729,1.675,0.957,2.241,0.173,0.41,0.237,1.477,0.646,1.659,0.173,0.072,0.574-0.147,0.702-0.284,0.355-0.382,0.511-1.483,0.602-1.996,0.092-0.5-0.082-1.546,0.118-2.004,0.174-0.372,0.83-0.901,1.167-1.122,0.501-0.327,1.613-0.955,2.206-0.883,0.5,0.066,1.285,0.83,1.64,1.204,0.629,0.655,1.477,2.296,2.005,3.043,0.784,1.128,2.442,3.346,3.281,4.448,0.519,0.673,1.356,2.285,2.122,2.678,0.365,0.191,1.249,0.209,1.641,0.082,0.574-0.183,1.43-1.094,1.886-1.485,0.528-0.467,1.677-1.349,2.041-1.958,0.292-0.494,0.602-1.632,0.602-2.206,0-0.428-0.447-1.247-0.438-1.678,0.01-0.482,0.238-1.484,0.557-1.85,0.218-0.247,0.875-0.593,1.203-0.558,0.555,0.056,1.375,0.959,1.803,1.323,0.684,0.602,1.905,1.968,2.562,2.606,0.792,0.747,2.815,1.915,3.244,2.914,0.137,0.33,0.027,1.068-0.037,1.404-0.091,0.429-0.701,1.177-0.647,1.605,0.083,0.565,0.939,1.429,1.368,1.803,0.491,0.43,1.684,1.004,2.277,1.286,0.574,0.264,1.768,1.121,2.369,0.92,0.428-0.147,0.747-1.129,0.957-1.522,0.292-0.537,0.656-1.713,1.002-2.204,0.292-0.41,0.948-1.295,1.44-1.404,0.528-0.109,1.484,0.594,2.004,0.72,0.602,0.146,1.832,0.267,2.442,0.319,0.675,0.063,2.013,0.128,2.688,0.128,0.893-0.02,2.707-0.045,3.572-0.254,0.529-0.13,1.505-0.604,1.979-0.858,0.438-0.228,1.431-0.638,1.658-1.066,0.164-0.317,0.154-1.157-0.055-1.438-0.236-0.331-1.11-0.457-1.493-0.54-0.684-0.136-2.161,0.146-2.779-0.163-0.521-0.256-1.175-1.275-1.496-1.759-0.428-0.637-0.883-2.151-1.385-2.725-0.537-0.61-2.012-1.394-2.668-1.867-0.475-0.349-1.396-1.06-1.878-1.396-0.52-0.365-1.66-1.003-2.133-1.439-0.427-0.392-1.395-1.24-1.439-1.813-0.036-0.438,0.538-1.229,0.857-1.548,0.464-0.467,1.868-0.785,2.287-1.276,0.51-0.602,0.974-2.169,1.074-2.944,0.119-0.893-0.273-2.678-0.318-3.581-0.045-0.72-0.129-2.159-0.056-2.878,0.064-0.694,0.484-2.032,0.584-2.726,0.109-0.737,0.437-2.26,0.272-2.988-0.146-0.612-0.883-1.658-1.285-2.142-0.419-0.483-1.603-1.12-1.978-1.65-0.272-0.381-0.83-1.329-0.638-1.767,0.173-0.393,1.203-0.521,1.603-0.693,0.329-0.146,1.158-0.265,1.332-0.582,0.164-0.312-0.128-1.066-0.265-1.396-0.201-0.473-0.72-1.467-1.175-1.703-0.393-0.2-1.358,0.236-1.759,0.055-0.483-0.221-1.047-1.167-1.34-1.604-0.319-0.493-0.646-1.675-1.066-2.086-0.218-0.2-0.783-0.438-1.065-0.474-0.529-0.073-1.568,0.227-2.087,0.316-0.492,0.084-1.486,0.456-1.978,0.375-0.346-0.064-0.966-0.454-1.229-0.691-0.647-0.594-1.495-2.187-2.032-2.889-0.584-0.784-1.649-2.479-2.451-3.044-0.575-0.399-2.024-0.62-2.67-0.911-0.675-0.293-1.931-1.058-2.56-1.441-0.357-0.208-0.993-0.792-1.396-0.9-0.309-0.091-0.975,0.154-1.274,0.044-0.401-0.127-1.24-0.645-1.285-1.065-0.055-0.519,1.039-1.185,1.285-1.647,0.191-0.374,0.465-1.185,0.482-1.606,0.009-0.481-0.51-1.392-0.427-1.867,0.108-0.674,1.13-1.695,1.439-2.295,0.354-0.693,1.075-2.116,1.176-2.89,0.063-0.502,0.055-1.632-0.274-2.022-0.282-0.355-1.258-0.511-1.704-0.591-0.655-0.121-2.005-0.094-2.67-0.11-0.537-0.011-1.668,0.264-2.141,0-0.3-0.166-0.646-0.839-0.747-1.167-0.137-0.51-0.228-1.649,0.055-2.087,0.256-0.391,1.239-0.61,1.658-0.802,0.502-0.238,1.658-0.491,2.033-0.91,0.255-0.282,0.446-1.059,0.483-1.44,0.063-0.775-0.328-2.323-0.429-3.099-0.127-0.865-0.546-2.597-0.482-3.473,0.045-0.646,0.364-1.949,0.692-2.505,0.31-0.538,1.395-1.268,1.759-1.759,0.309-0.418,0.874-1.312,0.966-1.821,0.1-0.566-0.119-1.75-0.329-2.297-0.219-0.593-0.975-1.64-1.385-2.133-0.445-0.546-1.394-1.659-2.023-1.979-0.546-0.272-1.803-0.519-2.404-0.428-0.448,0.064-1.24,0.538-1.604,0.803-0.538,0.382-1.403,1.395-1.868,1.866-0.528,0.548-1.413,1.853-2.086,2.197-0.465,0.237-1.631,0.537-2.079,0.264-0.427-0.272-0.483-1.447-0.637-1.921-0.229-0.676-0.848-1.97-0.911-2.671-0.065-0.702,0.464-2.078,0.427-2.779-0.036-0.639-0.327-1.941-0.692-2.461-0.22-0.302-0.939-0.619-1.23-0.847-0.948-0.766-2.907-2.296-3.582-3.316-0.382-0.574-0.5-2.097-0.956-2.618-0.328-0.372-1.267-0.881-1.768-0.91-0.492-0.018-1.367,0.538-1.813,0.758-0.438,0.2-1.23,0.829-1.705,0.902-0.382,0.063-1.193-0.046-1.504-0.266-0.318-0.228-0.637-1.01-0.746-1.395-0.119-0.427-0.355-1.429-0.101-1.813,0.229-0.337,1.139-0.465,1.549-0.528,0.4-0.074,1.349,0.282,1.649,0,0.374-0.345,0.301-1.54,0.165-2.032-0.109-0.401-0.584-1.186-0.967-1.331-0.373-0.153-1.193,0.32-1.603,0.311-0.529,0-1.677-0.073-2.077-0.418-0.419-0.365-0.666-1.541-0.749-2.089-0.063-0.464-0.146-1.474,0.109-1.867,0.329-0.52,1.586-1.001,2.188-1.177,0.427-0.117,1.33,0.012,1.758-0.108,0.445-0.109,1.366-0.437,1.659-0.802,0.245-0.293,0.337-1.109,0.374-1.494,0.082-0.903-0.21-2.715-0.266-3.627-0.072-1.111-0.409-3.324-0.272-4.438,0.1-0.763,0.674-2.214,0.965-2.934,0.274-0.674,0.894-2.005,1.276-2.615,0.464-0.718,1.567-2.041,2.142-2.67,0.41-0.453,1.631-1.111,1.758-1.702,0.064-0.283-0.192-0.903-0.418-1.076-0.438-0.319-1.604-0.129-2.143-0.156-0.528-0.026-1.739,0.303-2.131-0.055-0.301-0.273-0.329-1.22-0.219-1.603,0.154-0.521,1.103-1.203,1.394-1.658,0.364-0.565,1.057-1.777,1.176-2.451,0.127-0.813,0.009-2.543-0.375-3.263-0.283-0.511-1.467-1.029-1.822-1.493-0.382-0.512-0.792-1.751-1.012-2.352-0.355-0.967-0.592-3.099-1.176-3.946-0.301-0.455-1.185-1.211-1.712-1.34-0.51-0.117-1.567,0.292-2.078,0.429-0.383,0.102-1.176,0.255-1.495,0.481-0.601,0.42-1.212,1.869-1.768,2.354-0.355,0.309-1.175,0.883-1.649,0.899-0.602,0.028-1.677-0.653-2.196-0.954-0.974-0.576-2.697-2.078-3.626-2.726-0.529-0.363-1.65-0.984-2.142-1.384-0.519-0.438-1.467-1.432-1.868-1.979-0.529-0.738-1.375-2.359-1.704-3.209-0.273-0.691-0.492-2.032-0.729-2.988l5.001-0.265,2.188-7.689,4.164-0.164,3.736-5.659,7.052,7.526,2.133,0.22,4.811,6.241,11.91-2.987,1.549,3.361,5.23,0.273,0.856-4.01,6.197,1.011,0.045,4.064,2.989,0.429-0.045-6.14-4.219-4.604,2.715-2.45,2.625,2.087,3.144-3.583-0.027-0.456,3.062-0.091,2.151,3.137,3.762-0.084,0.109-4.262,1.787,0.208s0.764,1.521,1.012,2.031c0.428,0.848,1.138,2.626,1.658,3.417,0.583,0.875,1.958,2.489,2.752,3.181,0.528,0.455,1.693,1.284,2.351,1.549,0.811,0.31,2.568,0.556,3.443,0.556,0.921,0,2.716-0.456,3.636-0.583,0.375-0.053,1.131-0.2,1.514-0.19,0.738,0.017,2.187,0.317,2.888,0.51,0.93,0.14,2.32,0.7,3.06,0.83m-46.88,250.63c0.601-0.338,1.85-0.949,2.451-1.276,0.583-0.319,1.722-0.976,2.295-1.286,0.337-0.182,1.084-0.419,1.341-0.692,0.118-0.126,0.392-0.529,0.264-0.646-0.264-0.236-0.921,0.674-1.276,0.701-0.428,0.019-1.194-0.527-1.604-0.647-0.218-0.063-0.756,0.009-0.911-0.154-0.301-0.327-0.19-1.32-0.21-1.767-0.027-0.639,0.201-1.925,0.101-2.563-0.073-0.499-0.411-1.494-0.693-1.921-0.475-0.703-2.132-1.532-2.506-2.297-0.328-0.674-0.3-2.241-0.264-2.988,0.036-0.804,0.391-2.38,0.583-3.152,0.173-0.703,0.692-2.07,0.857-2.781,0.155-0.665,0.538-2.04,0.429-2.724-0.064-0.364-0.33-1.267-0.702-1.329-0.446-0.083-0.92,1.037-1.332,1.229-0.209,0.091-0.72,0.235-0.911,0.099-0.2-0.137,0-0.82-0.21-0.956-0.401-0.266-1.54,0.035-1.867,0.373-0.156,0.156-0.166,0.639-0.166,0.856,0.01,0.42,0.338,1.23,0.375,1.649,0.063,0.71,0.008,2.135-0.101,2.834-0.127,0.73-0.72,2.104-0.856,2.834-0.2,1.066,0.037,3.3-0.319,4.328-0.255,0.712-1.349,1.841-1.713,2.507-0.237,0.429-0.71,1.33-0.802,1.813-0.146,0.748-0.018,2.297,0.109,3.043,0.11,0.693,0.73,1.979,0.802,2.671,0.082,0.838-0.464,2.532-0.319,3.361,0.055,0.348,0.366,1.013,0.583,1.286,0.273,0.355,0.949,1.086,1.387,1.119,0.354,0.029,0.938-0.49,1.229-0.691,0.482-0.337,1.338-1.157,1.813-1.495,0.51-0.36,1.59-1.02,2.14-1.33","name":"Одеська область"},"53":{"path":"M834.27,303.92v-1.468l-6.516-1.567-4.564-7.007,0.018-0.127,1.222-10.761,2.687-1.368,2.324,1.885,4.565-5.73,4.283-3.799,2.241,1.675,6.204,0.047,0.895,4.766,9.122,0.438v-2.525l1.767,0.046,1.439,1.922,6.606-0.529,8.212-7.81,1.202-2.878,3.363-0.801,2.843-5.888-0.01-0.346c0.239-0.054,0.474-0.09,0.619-0.127,0.311-0.064,0.957-0.127,1.275-0.102,0.575,0.047,1.725,0.312,2.242,0.557,0.665,0.318,1.724,1.42,2.378,1.768,0.492,0.255,1.561,0.673,2.114,0.693,0.409,0.018,1.295-0.137,1.621-0.402,0.283-0.219,0.521-0.947,0.64-1.284,0.129-0.337,0.181-1.094,0.356-1.414,0.09-0.171,0.338-0.574,0.525-0.583,0.284-0.027,0.677,0.51,0.885,0.692,0.356,0.31,1.012,0.966,1.332,1.304,0.454,0.473,1.192,1.568,1.711,1.95,0.401,0.291,1.322,0.746,1.815,0.803,0.683,0.081,2.049-0.366,2.724-0.476,0.372-0.063,1.121-0.272,1.495-0.245,0.327,0.028,0.964,0.245,1.257,0.4,0.256,0.146,0.812,0.492,0.902,0.774,0.127,0.356-0.438,1.095-0.319,1.44,0.127,0.374,0.83,0.866,1.202,0.993,0.412,0.138,1.303-0.09,1.732-0.054,0.684,0.046,1.995,0.482,2.67,0.482,0.31,0,0.93-0.054,1.184-0.218,0.258-0.164,0.53-0.756,0.692-1.011,0.146-0.237,0.329-0.793,0.528-0.994,0.294-0.282,1.066-0.683,1.478-0.719,0.283-0.019,0.829,0.237,1.095,0.346,0.554,0.255,1.576,0.965,2.13,1.23,0.802,0.382,2.46,1.049,3.308,1.313,1.068,0.319,3.245,0.884,4.358,0.929,0.946,0.046,2.896-0.091,3.763-0.482,0.402-0.174,1.175-0.73,1.338-1.139,0.146-0.402-0.354-1.285-0.218-1.687,0.1-0.282,0.574-0.701,0.828-0.856,0.274-0.164,0.912-0.374,1.23-0.374,0.283,0,0.813,0.319,1.095,0.319,0.519,0.009,1.512-0.374,2.005-0.529,0.576-0.191,1.677-0.729,2.268-0.857,0.537-0.117,1.668-0.245,2.216-0.164,0.501,0.083,1.376,0.684,1.867,0.776,0.574,0.11,1.742-0.128,2.323-0.072,0.42,0.036,1.25,0.19,1.632,0.363,0.348,0.165,0.948,0.647,1.23,0.912,0.355,0.346,0.819,1.266,1.221,1.549,0.165,0.109,0.575,0.319,0.755,0.237,0.265-0.108,0.403-0.783,0.476-1.066,0.127-0.473,0.264-1.466,0.162-1.949-0.081-0.402-0.737-1.048-0.8-1.468-0.055-0.336-0.027-1.139,0.236-1.357,0.536-0.465,2.124-0.045,2.835-0.055,0.919-0.01,2.77-0.109,3.681-0.027,0.627,0.064,1.868,0.292,2.461,0.484,0.362,0.117,1.147,0.337,1.384,0.637,0.21,0.265,0.283,0.976,0.265,1.313-0.018,0.456-0.428,1.304-0.49,1.758-0.111,0.838-0.074,2.543,0,3.381,0.071,0.774,0.299,2.332,0.545,3.071,0.236,0.729,0.93,2.123,1.357,2.761,0.564,0.829,1.978,2.269,2.688,2.98,0.476,0.491,1.568,1.339,1.995,1.868,0.256,0.309,0.739,0.993,0.85,1.385,0.055,0.2,0.045,0.636-0.028,0.838-0.1,0.291-0.611,0.71-0.755,0.974-0.174,0.312-0.521,0.958-0.503,1.305,0.019,0.354,0.366,1.093,0.684,1.265,0.284,0.154,0.956-0.136,1.276-0.1,0.41,0.044,1.175,0.355,1.567,0.502,0.618,0.227,1.904,0.655,2.462,1.021,0.398,0.254,1.191,0.847,1.384,1.275,0.146,0.355-0.202,1.203-0.02,1.548,0.165,0.338,0.874,0.766,1.241,0.903,0.392,0.146,1.347-0.082,1.677,0.172,0.218,0.174,0.272,0.792,0.381,1.049,0.146,0.318,0.656,0.884,0.685,1.239,0.017,0.311-0.274,0.912-0.466,1.157-0.311,0.419-1.185,1.057-1.658,1.267-0.382,0.165-1.448-0.091-1.641,0.274-0.254,0.482,0.655,1.485,0.901,1.968,0.365,0.738,1.031,2.278,1.559,2.898,0.337,0.4,1.149,1.103,1.641,1.266,0.566,0.192,1.814-0.081,2.405,0,0.701,0.101,2.022,0.547,2.751,0.803,0.64,0.236,1.732,1.129,2.37,1.157,0.549,0.028,2.005-0.775,2.005-0.775l1.367-5.986,1.731,0.619,0.365,1.604,2.733,0.692,2.822-3.044,5.927,2.17s1.73,5.093,0.637,6.625c-0.273,0.391-1.458,0.229-1.823,0.483-0.272,0.155-0.729,0.619-0.819,0.911-0.182,0.556,0.091,1.803,0,2.396,0,0.83-0.274,2.516-0.639,3.262-0.183,0.247-0.637,0.584-0.729,0.849-0.182,0.491-0.182,1.576,0,2.086,0.093,0.628,0.822,1.713,1.094,2.296,0.274,0.556,0.548,1.758,0.91,2.242,0.457,0.619,1.822,1.494,2.371,1.978,0.729,0.61,2.187,2.05,3.098,2.405,0.273,0.128,1.004,0.238,1.367,0.109,0.273-0.136,0.548-1.047,0.911-1.075,0.729-0.065,1.55,1.941,2.278,1.923,0.365-0.009,1.093-1.012,1.093-1.012l0.821,2.296h5.923l2.004,1.176,1.094,10.999s0.364,1.04,0.639,1.204c0.455,0.236,1.549-0.155,2.004-0.119,0.457,0.027,1.548-0.027,1.823,0.319,0.274,0.319-0.185,1.267,0,1.638,0.183,0.384,1.275,1.04,1.275,1.04l7.837,0.566,5.192,8.291s0,1.469-0.181,1.924c-0.183,0.445-0.912,1.138-1.004,1.603-0.09,0.427,0,1.367,0.185,1.758,0.181,0.293,1,0.556,1,0.885,0.183,0.446-0.455,1.257-0.637,1.677-0.275,0.62-0.548,2.095-1.094,2.486-0.456,0.273-1.458,0.247-1.913,0.119-0.638-0.156-1.367-1.139-2.007-1.321-0.637-0.227-2.092-0.145-2.823-0.082-0.546,0.046-1.64,0.101-2.003,0.438-0.456,0.4-0.821,1.649-0.821,2.251-0.091,0.5,0.091,1.521,0.274,1.995,0.181,0.529,0.91,1.458,1.275,1.886,0.456,0.521,1.639,1.277,2.006,1.841,0.361,0.62,1.185,2.086,1,2.807-0.183,0.72-1.731,1.395-2.277,1.876-0.457,0.393-1.457,1.129-1.823,1.603-0.546,0.666-1.55,2.124-1.55,2.962,0,0.556,1.004,1.45,0.912,2.005,0,0.457-0.638,1.24-1.094,1.44-0.455,0.199-1.367,0.1-1.822,0-0.457-0.091-1.185-0.62-1.549-0.721-0.73-0.155-2.187,0.101-2.825-0.036-0.546-0.11-1.457-0.693-2.003-0.802-0.639-0.146-2.007,0-2.734-0.082-1.005-0.101-2.825-0.557-3.828-0.721-0.819-0.146-2.551-0.912-3.278-0.52-1.186,0.629-1.916,3.582-2.279,4.885-0.183,0.675-0.364,2.808-0.364,2.808l4.556,8.637c-0.366,0.238-0.911,0.712-1.275,0.775-0.637,0.109-1.913-0.236-2.461-0.52-0.455-0.22-1.003-1.094-1.456-1.285-0.459-0.191-1.46-0.336-1.916-0.2-0.365,0.108-1.003,0.701-1.274,0.957-0.274,0.236-0.639,1.057-1.003,1.002-0.457-0.055-0.548-1.139-0.912-1.395-0.364-0.328-1.365-0.691-1.912-0.683-0.547,0.009-1.549,0.546-2.097,0.802-0.547,0.282-1.458,1.094-2.007,1.358-0.545,0.282-1.82,0.481-2.368,0.801-0.454,0.228-1.001,0.947-1.274,1.203-0.729,0.492-2.278,1.175-3.007,1.603-0.457,0.302-1.459,0.966-1.914,1.275-0.728,0.438-2.186,1.222-2.825,1.687-0.547,0.327-1.457,1.021-1.821,1.439-0.629,0.602-1.204,2.479-2.005,2.724-2.105,0.646-6.27-3.862-8.291-3.007-1.268,0.537-1.203,4.12-2.243,5.011-0.338,0.293-1.441,0.128-1.724,0.484-0.883,1.084,0.11,4.274-0.364,5.604-0.17,0.493-1.012,1.231-1.192,1.722-0.255,0.638-0.339,2.033-0.365,2.725-0.045,1.011,0.01,3.043,0.201,4.045,0.1,0.547,0.41,1.659,0.719,2.124,0.258,0.374,1.13,0.801,1.359,1.193,0.127,0.209,0.199,0.693,0.209,0.921,0.019,0.747-0.364,2.194-0.446,2.932-0.082,0.729,0.4,2.499-0.202,2.917-0.289,0.209-1.083-0.219-1.402-0.401-0.291-0.165-0.665-1.002-1.003-0.921-0.573,0.146-0.699,1.659-0.803,2.242-0.091,0.619,0,1.723,0.058,2.579-0.52-0.292-0.994-0.574-1.295-0.856-0.747-0.674-2.16-2.27-2.406-3.253-0.146-0.638,0.439-1.915,0.427-2.561,0-0.601-0.08-1.869-0.427-2.352-0.182-0.264-0.794-0.62-1.121-0.638-0.438-0.037-1.238,0.803-1.648,0.638-0.236-0.091-0.374-0.666-0.429-0.911-0.09-0.418,0.245-1.331,0.055-1.703-0.12-0.237-0.601-0.629-0.856-0.593-0.364,0.054-0.655,0.902-0.912,1.176-0.491,0.556-1.458,1.777-2.132,2.086-0.291,0.129-0.993,0.257-1.284,0.102-0.311-0.165-0.739-0.876-0.693-1.221,0.027-0.255,0.63-0.502,0.693-0.749,0.063-0.245-0.028-0.8-0.209-0.966-0.281-0.255-1.122-0.199-1.497-0.154-0.49,0.045-1.382,0.529-1.866,0.583-0.711,0.081-2.142-0.055-2.834-0.219-0.839-0.192-2.441-0.884-3.198-1.277-0.837-0.427-2.407-1.465-3.152-2.031-0.812-0.602-2.25-2.005-3.044-2.615-0.812-0.619-2.505-1.758-3.363-2.297-0.864-0.538-2.688-1.412-3.526-1.978-0.347-0.228-0.901-0.883-1.286-1.011-0.254-0.091-0.827-0.118-1.064,0-0.273,0.127-0.464,0.838-0.745,0.956-0.35,0.146-1.14-0.036-1.497-0.155-0.51-0.173-1.366-0.838-1.822-1.12-0.52-0.346-1.549-1.058-2.077-1.395-0.885-0.563-2.68-1.694-3.581-2.242-0.319-0.191-0.911-0.783-1.275-0.746-0.491,0.045-1.341,0.811-1.495,1.284-0.209,0.593,0.246,1.897,0.527,2.451,0.202,0.402,0.831,1.058,1.179,1.34,0.519,0.419,1.757,0.947,2.294,1.33,0.547,0.393,1.585,1.258,2.031,1.768,0.146,0.175,0.311,0.484,0.466,0.793l-2.122,4.493-1.76-0.109-1.12-2.033-4.866-0.045-1.276-2.196-3.471-0.055-0.222,2.888-3.417-1.119-5.176-8.658,3.309,0.273,0.639-2.242-0.492-1.968c0.502-0.254,1.03-0.71,1.24-1.03,0.211-0.3,0.274-1.075,0.274-1.439,0-0.428-0.009-1.403-0.319-1.704-0.457-0.438-1.85-0.254-2.461-0.374-0.028-0.01-0.065-0.018-0.092-0.018l1.376-0.894-1.922-2.824-3.327,0.136c-0.019-0.027-0.026-0.055-0.035-0.091-0.211-0.383-0.676-1.12-1.021-1.385-0.503-0.382-1.786-0.62-2.352-0.911-0.676-0.347-1.96-1.185-2.562-1.65-0.601-0.465-1.793-1.422-2.241-2.032-0.773-1.057-1.603-3.581-2.188-4.757-0.281-0.556-0.672-1.832-1.176-2.188-0.601-0.419-2.187-0.199-2.889-0.428-0.554-0.174-1.63-0.694-2.085-1.066-0.674-0.575-1.495-2.215-2.132-2.834-0.702-0.683-2.342-1.813-3.209-2.297-0.209-0.118-0.746-0.181-0.902-0.373-0.199-0.228-0.438-0.92-0.263-1.167,0.226-0.355,1.285-0.073,1.648-0.272,0.456-0.248,1.149-1.085,1.394-1.551,0.373-0.71,0.584-2.358,0.748-3.152,0.163-0.802,1.065-2.625,0.528-3.254-0.229-0.273-1.102-0.136-1.44,0-0.481,0.192-1.129,1.066-1.493,1.44-0.511,0.52-1.595,1.522-1.979,2.133-0.218,0.355-0.237,1.339-0.582,1.558-0.356,0.218-1.386,0.154-1.659-0.164-0.272-0.328,0.135-1.285,0.101-1.713-0.037-0.565-0.191-1.741-0.474-2.242-0.265-0.456-1.075-1.203-1.55-1.439-0.555-0.283-1.83-0.428-2.461-0.484-0.729-0.063-2.222,0.237-2.934,0.056-0.363-0.092-1.094-0.447-1.34-0.748-0.336-0.418-0.665-1.541-0.638-2.078,0.027-0.629,0.646-1.768,0.967-2.296,0.399-0.684,1.585-1.776,1.977-2.46,0.594-1.049,1.376-3.363,1.65-4.539,0.227-0.966,0.474-2.962,0.427-3.955-0.019-0.474-0.009-1.567-0.372-1.868-0.302-0.246-1.212-0.191-1.551,0-0.311,0.174-0.436,1.039-0.746,1.229-0.246,0.156-0.911,0.238-1.174,0.109-0.203-0.099-0.348-0.573-0.485-0.755-0.155-0.219-0.409-0.674-0.665-0.921l0.21-3.024-5.066-1.021-3.472-0.984-0.886-2.005,0.622-1.122-0.11-2.268-4.676-3.919-1.603,0.875-6.532-9.02,3.014-2.515-0.427-5.231-2.697-1.065,0.401-6.679-1.395-2.05-4.702-0.22-1.412-1.758,0.665-6.061,0.85-0.15z","name":"Полтавська область"},"56":{"path":"M514.57,251.32l-0.21,0.1-3.198-0.155-1.604-4.329-3.153,1.175-1.067,2.671-3.898,0.154-2.133,2.196-4.438-2.779-3.737,2.078s-0.136,1.568-0.529,1.822c-0.364,0.229-1.283-0.263-1.713-0.272-0.71,0-2.186,0.063-2.824,0.383-0.501,0.236-1.35,1.046-1.604,1.539-0.311,0.593-0.283,1.977-0.428,2.625-0.209,0.884-0.72,2.624-1.076,3.463-0.137,0.337-0.374,1.102-0.691,1.285-0.32,0.191-1.14-0.174-1.495-0.055-1.212,0.41-3.017,2.387-4,3.208-0.684,0.564-2.151,1.585-2.671,2.295-0.401,0.537-0.692,1.904-1.065,2.452-0.548,0.792-1.988,2.077-2.725,2.677-0.875,0.703-2.698,2.088-3.746,2.507-0.738,0.292-2.352,0.438-3.144,0.528-0.482,0.064-1.477-0.018-1.923,0.164-0.638,0.255-1.64,1.249-2.141,1.713-0.893,0.829-2.424,2.735-3.308,3.572-0.857,0.819-2.579,2.506-3.635,3.043-0.802,0.419-2.862,0.893-4.165,1.167l0.292-6.088s1.238-1.449,1.604-1.968c0.228-0.31,0.857-0.938,0.802-1.321-0.037-0.311-0.638-0.72-0.92-0.874-0.282-0.166-0.919-0.33-1.24-0.33-0.4,0.009-1.139,0.346-1.521,0.447-0.355,0.091-1.075,0.318-1.439,0.318-0.802-0.008-2.351-0.473-3.089-0.766-0.438-0.173-1.194-0.765-1.641-0.919-0.418-0.146-1.322-0.347-1.758-0.275-0.419,0.065-1.112,0.565-1.485,0.757-0.347,0.183-1.011,0.756-1.403,0.72-0.411-0.036-1.022-0.709-1.323-1.001-0.463-0.456-1.102-1.668-1.64-2.042-0.31-0.219-1.066-0.501-1.44-0.483-0.492,0.037-1.385,0.539-1.767,0.848-0.384,0.311-0.92,1.149-1.204,1.559-0.365,0.546-1.021,1.695-1.321,2.288-0.201,0.401-0.437,1.293-0.72,1.639-0.383,0.474-1.485,1.076-1.996,1.404-0.492,0.3-1.477,0.912-2.004,1.12-0.62,0.237-1.923,0.738-2.57,0.603-0.584-0.137-1.394-1.139-1.877-1.486-0.202-0.137-0.803-0.519-0.803-0.519l-5.804,0.155s-1.239,1.266-1.649,1.686c-0.273,0.291-0.721,1.102-1.121,1.166-0.684,0.091-1.832-0.975-2.397-1.367-0.546-0.364-1.494-1.284-2.049-1.64-0.346-0.228-1.084-0.638-1.477-0.765-0.41-0.128-1.302-0.429-1.686-0.237-0.482,0.237-0.901,1.358-1.039,1.886-0.145,0.556-0.117,1.75,0,2.324,0.092,0.437,0.511,1.249,0.721,1.64,0.272,0.492,0.983,1.377,1.239,1.877,0.21,0.4,0.583,1.24,0.647,1.686,0.054,0.382,0.082,1.231-0.119,1.558-0.282,0.456-1.312,0.929-1.805,1.13-0.719,0.273-2.351,0.21-3.043,0.556-1.112,0.556-3.29,2.779-4.337,3.891-0.364,0.382-0.592,0.638-0.592,0.638l-12.092-14.379-0.201-10.06,3.718-1.914-0.119-2.406-4.046-0.865v-3.9l3.891-1.002-1.084-3.363s0.593-0.245,0.802-0.245c0.273,0,0.765,0.336,1.038,0.318,0.273-0.009,0.839-0.219,1.003-0.437,0.183-0.238,0.229-0.902,0.164-1.203-0.091-0.41-0.602-1.13-0.884-1.439-0.355-0.384-1.403-0.802-1.686-1.241-0.291-0.464-0.455-1.612-0.437-2.168,0.028-0.719,0.593-2.095,0.756-2.797,0.128-0.51,0.466-1.521,0.447-2.041-0.018-0.537-0.355-1.577-0.602-2.041-0.273-0.537-1.193-1.367-1.483-1.887-0.239-0.437-0.767-1.394-0.676-1.885,0.082-0.457,0.774-1.24,1.194-1.44,0.61-0.292,2.031-0.174,2.687-0.037,0.493,0.1,1.395,0.565,1.842,0.802,0.61,0.319,1.694,1.267,2.359,1.44,0.491,0.127,1.539,0.091,2.005-0.082,0.336-0.127,0.911-0.593,1.121-0.884,0.282-0.374,0.601-1.266,0.684-1.722,0.108-0.564-0.11-1.75,0-2.314,0.091-0.456,0.31-1.449,0.683-1.731,0.382-0.291,1.44-0.255,1.923-0.2,0.419,0.055,1.211,0.728,1.595,0.564,0.328-0.137,0.474-0.948,0.601-1.285,0.237-0.583,0.382-1.895,0.765-2.396,0.382-0.51,1.512-1.222,2.124-1.403,0.692-0.219,2.16-0.046,2.88-0.046,0.983,0.009,2.943,0.082,3.926,0.082,0.775,0.009,2.324,0.109,3.08-0.036,0.557-0.11,1.677-0.419,2.087-0.802,0.283-0.273,0.547-1.057,0.656-1.431,0.119-0.411,0.064-1.293,0.237-1.686,0.091-0.19,0.355-0.593,0.564-0.638,0.575-0.11,1.559,0.821,2.078,1.094,0.547,0.292,1.687,0.766,2.169,1.147,0.346,0.283,0.993,0.949,1.176,1.368,0.154,0.365,0.046,1.212,0.154,1.595,0.128,0.437,0.419,1.395,0.802,1.631,0.446,0.282,1.585,0.027,2.114,0.027,0.391,0,1.24-0.173,1.595,0,0.392,0.192,0.883,0.967,1.048,1.367,0.163,0.42-0.028,1.413,0.183,1.813,0.127,0.255,0.61,0.602,0.855,0.748,0.283,0.173,0.948,0.629,1.258,0.482,0.337-0.162,0.392-1.057,0.482-1.421,0.109-0.465,0.21-1.439,0.264-1.922,0.037-0.365,0.046-1.103,0.127-1.467,0.146-0.629,0.693-1.815,0.912-2.425,0.301-0.838,0.938-2.506,1.176-3.362,0.245-0.893,0.583-2.707,0.747-3.608,0.137-0.757,0.082-2.37,0.456-3.044,0.274-0.511,1.211-1.275,1.731-1.522,0.612-0.291,2.004-0.364,2.669-0.455,0.939-0.128,2.826-0.3,3.765-0.373,0.455-0.037,1.431,0.126,1.822-0.11,0.255-0.155,0.547-0.729,0.638-1.012,0.1-0.337,0.173-1.083,0.055-1.412-0.191-0.529-1.185-1.194-1.521-1.631-0.274-0.355-0.839-1.066-0.967-1.494-0.172-0.602-0.045-1.886,0.027-2.516,0.083-0.71,0.265-2.186,0.648-2.797,0.292-0.492,1.303-1.121,1.758-1.475,0.984-0.756,3.372-1.869,4.055-2.908,0.273-0.399,0.374-1.393,0.428-1.868,0.073-0.583,0.09-1.767,0.028-2.351-0.056-0.555-0.165-1.722-0.502-2.16-0.347-0.456-1.458-0.92-2.004-1.065-0.438-0.12-1.35,0.008-1.786-0.055-0.61-0.102-1.804-0.419-2.351-0.702-0.401-0.192-1.23-0.675-1.449-1.066-0.236-0.428-0.145-1.476-0.127-1.978,0.009-0.4-0.009-1.257,0.182-1.622,0.1-0.2,0.465-0.509,0.675-0.592,0.346-0.137,1.139-0.055,1.513,0,0.347,0.055,0.993,0.447,1.339,0.4,0.456-0.054,1.222-0.664,1.577-0.957,0.364-0.3,0.956-1.046,1.258-1.421,0.236-0.301,0.828-0.874,0.901-1.249,0.101-0.51-0.283-1.531-0.482-2.004-0.128-0.328-0.52-0.912-0.721-1.202-0.564-0.849-1.776-2.498-2.451-3.263-0.364-0.401-1.339-1.003-1.576-1.495-0.164-0.328-0.127-1.121-0.164-1.494-0.037-0.546,0.019-1.668-0.1-2.215-0.138-0.601-0.638-1.767-0.968-2.296-0.4-0.629-1.512-1.659-1.977-2.242-0.501-0.637-1.503-1.932-1.896-2.644-0.218-0.41-0.601-1.274-0.692-1.73-0.184-0.921-0.037-2.807-0.028-3.746,0.009-0.502,0.183-1.513,0.055-1.996-0.055-0.21-0.236-0.628-0.428-0.729-0.338-0.163-1.185-0.009-1.521,0.165-0.474,0.246-1.076,1.193-1.386,1.631-0.191,0.273-0.337,1.093-0.675,1.148-0.282,0.045-0.665-0.556-0.875-0.748-0.272-0.254-0.711-0.892-1.038-1.038-0.265-0.12-0.875-0.128-1.148-0.064-0.365,0.091-0.93,0.667-1.286,0.756-0.282,0.064-0.911,0.074-1.147-0.082-0.348-0.228-0.565-1.113-0.775-1.467-0.246-0.41-0.784-1.186-1.038-1.576-0.283-0.429-1.049-1.186-1.148-1.686-0.091-0.412,0.272-1.239,0.319-1.65,0.063-0.702,0.09-2.086,0.027-2.779-0.036-0.419-0.172-1.249-0.328-1.631-0.119-0.3-0.455-0.867-0.692-1.094-0.273-0.273-1.085-0.483-1.303-0.802-0.255-0.365-0.274-1.293-0.318-1.74-0.065-0.493-0.256-1.513-0.11-1.996,0.073-0.246,0.447-0.593,0.583-0.802,0.202-0.292,0.675-0.838,0.72-1.176,0.092-0.583-0.363-1.731-0.583-2.269-0.318-0.774-1.285-2.168-1.685-2.915-0.2-0.383-0.848-1.122-0.774-1.541,0.036-0.172,0.337-0.456,0.51-0.482,0.364-0.063,1.002,0.501,1.357,0.584,0.338,0.072,1.048,0.136,1.368,0.026,0.427-0.136,1.111-0.766,1.412-1.093,0.292-0.32,0.739-1.048,0.911-1.44,0.155-0.365,0.284-1.151,0.402-1.522,0.136-0.431,0.437-1.28,0.637-1.682,0.255-0.517,0.957-1.444,1.23-1.949,0.337-0.615,1.03-1.854,1.176-2.538,0.146-0.674,0.073-2.073-0.055-2.75-0.082-0.435-0.318-1.327-0.609-1.655-0.155-0.169-0.63-0.3-0.83-0.401-0.219-0.105-0.748-0.213-0.856-0.427-0.191-0.386,0.182-1.275,0.32-1.684,0.19-0.571,0.883-1.584,1.048-2.161,0.1-0.396-0.019-1.25,0.127-1.629,0.173-0.448,0.793-1.231,1.176-1.521,0.419-0.317,1.54-0.449,1.95-0.774,0.392-0.308,0.965-1.162,1.12-1.631,0.12-0.366,0.356-1.302,0.056-1.547-0.464-0.378-1.731,0.498-2.323,0.561-0.757,0.08-2.297,0.047-3.044-0.079-0.392-0.067-1.176-0.287-1.522-0.482-0.455-0.263-1.302-0.962-1.576-1.415-0.283-0.463-0.537-1.445-0.619-2.143,1.722-0.013,3.571-0.059,4.729-0.076,1.914-0.024,5.75-0.342,7.654-0.16,0.519,0.05,1.559,0.239,2.041,0.442,0.538,0.225,1.395,1.131,1.958,1.28,0.647,0.172,1.996-0.3,2.644-0.16,0.709,0.154,1.903,1.067,2.569,1.359,0.656,0.299,1.995,0.923,2.724,1.006,0.538,0.059,1.613-0.325,2.16-0.281,0.665,0.052,1.941,0.529,2.56,0.761,0.785,0.29,2.287,1.014,3.044,1.362,1.148,0.521,3.508,1.443,4.565,2.121,0.957,0.609,2.397,2.503,3.445,2.924,0.792,0.315,2.551,0.188,3.409,0.199,0.992,0.017,2.979-0.193,3.962-0.119,0.866,0.062,2.624,0.223,3.409,0.601,0.719,0.355,1.859,1.565,2.397,2.163,0.61,0.673,1.549,2.256,2.168,2.923,0.583,0.631,1.794,1.934,2.597,2.244,0.346,0.132,1.121,0.088,1.485,0.039,0.474-0.064,1.403-0.372,1.841-0.56,0.774-0.323,2.114-1.401,2.925-1.6,0.884-0.223,2.788-0.271,3.645,0.039,0.857,0.307,2.151,1.692,2.843,2.281,0.765,0.649,2.142,2.125,2.961,2.686,0.474,0.317,1.522,0.783,2.051,0.998,0.801,0.335,2.515,0.773,3.316,1.121,0.812,0.356,2.25,1.423,3.09,1.686,0.627,0.197,1.977,0.305,2.642,0.276,1.039-0.036,3.053-0.604,4.082-0.759,1.222-0.182,3.663-0.533,4.894-0.56,1.275-0.028,3.918-0.101,5.121,0.359,0.383,0.146,1.066,0.654,1.285,1.004,0.3,0.495,0.418,1.701,0.438,2.275,0.027,1.076-0.739,3.189-0.574,4.257,0.146,0.92,0.837,2.833,1.604,3.361,0.565,0.383,2.296-0.328,2.725,0.21,0.31,0.391-0.31,1.477-0.32,1.977-0.018,0.401-0.1,1.294,0.155,1.604,0.246,0.302,1.139,0.265,1.495,0.428,0.438,0.201,1.148,0.911,1.604,1.066,0.756,0.246,2.415-0.009,3.208,0.154,1.02,0.219,2.853,1.504,3.891,1.495,0.7,0,1.95-0.81,2.624-1.011,0.729-0.219,2.223-0.656,2.989-0.638,0.911,0.018,2.661,0.62,3.527,0.91,0.938,0.31,2.724,1.232,3.681,1.496,0.702,0.191,2.242,0.073,2.879,0.428,0.438,0.237,1.257,1.001,1.284,1.494,0.046,0.776-1.32,1.924-1.759,2.562-0.509,0.737-1.613,2.149-2.032,2.934-0.191,0.355-0.646,1.103-0.583,1.494,0.009,0.091,0.037,0.183,0.082,0.274l-0.938,1.01-1.285,2.562-1.759,0.375-1.23,7.798-1.12,1.066s-1.067-1.303-1.395-1.768c-0.456-0.637-1.158-2.085-1.705-2.66-0.282-0.301-0.92-0.985-1.339-0.965-0.455,0.027-1.157,0.828-1.386,1.229-0.364,0.646-0.354,2.214-0.536,2.934-0.154,0.665-1.058,1.986-0.802,2.616,0.155,0.355,1.056,0.445,1.338,0.692,0.293,0.264,0.803,0.912,0.904,1.286,0.126,0.445,0.091,1.429-0.155,1.823-0.247,0.391-1.185,0.738-1.604,0.956-0.227,0.119-0.957,0.429-0.957,0.429l-2.142,0.209,0.373,9.667-6.779,5.932s-1.066,0.994-1.229,1.44c-0.174,0.492,0.136,1.577,0,2.079-0.109,0.41-0.647,1.075-0.857,1.439-0.146,0.282-0.383,0.874-0.583,1.13-0.236,0.3-1.012,0.656-1.175,1.011-0.191,0.429-0.055,1.403,0,1.869,0.027,0.235,0.264,0.682,0.219,0.911-0.11,0.456-0.757,1.257-1.175,1.439-0.356,0.155-1.167-0.164-1.549-0.108-0.793,0.126-2.25,0.874-2.989,1.174-0.446,0.182-1.403,0.438-1.767,0.747-0.312,0.275-0.867,0.985-0.857,1.395,0.027,0.656,1.257,1.541,1.549,2.132,0.319,0.638,0.738,2.024,0.856,2.725,0.073,0.438,0.247,1.367,0.055,1.759-0.146,0.301-1.011,0.474-1.066,0.801-0.082,0.438,0.729,1.112,0.957,1.495,0.365,0.62,1.094,1.859,1.394,2.515,0.192,0.42,0.692,1.294,0.638,1.758-0.055,0.475-0.885,1.158-1.067,1.605-0.172,0.401-0.409,1.274-0.373,1.712,0.045,0.593,0.729,1.649,0.847,2.243,0.11,0.491,0.183,1.521,0.11,2.021-0.065,0.51-0.584,1.422-0.639,1.924-0.081,0.746,0.319,2.242,0.319,2.988,0,0.639-0.074,1.915-0.265,2.516-0.273,0.829-1.238,2.332-1.767,3.043-0.72,0.966-2.442,2.679-3.307,3.527-0.358,0.346-1.496,1.33-1.496,1.33l0.374,1.767,2.296,1.595,2.406,1.714-0.374,1.549-2.02,0.94z","name":"Рівненська область"},"59":{"path":"M1047.7,276.95c-0.092,0.528-0.272,1.204-0.364,1.585-0.093,0.41-0.273,1.267-0.547,1.604-0.275,0.273-0.819,0.793-1.186,0.774-0.272-0.009-0.728-0.545-0.91-0.737-0.274-0.191-0.548-0.71-0.821-0.801-0.547-0.155-1.549,0.154-2.003,0.265-0.548,0.099-1.458,0.382-1.916,0.555-0.453,0.154-1.456,0.355-1.64,0.765-0.089,0.337,0.64,1.021,0.547,1.376-0.091,0.265-0.547,0.574-0.819,0.72-0.183,0.119-0.547,0.373-0.729,0.348-0.546-0.073-1.185-1.049-1.64-1.423-0.457-0.51-1.459-1.612-1.914-2.169-0.273-0.327-0.729-1.321-1.184-1.34-0.275-0.008-0.456,0.574-0.639,0.72-0.455,0.302-1.367,0.685-1.823,0.885-0.636,0.272-1.82,0.747-2.459,0.984-0.274,0.11-1.004,0.228-1.184,0.438-0.185,0.155-0.459,0.61-0.459,0.837,0,0.291,0.185,0.866,0.367,1.103,0.181,0.272,0.818,0.573,0.912,0.866,0.089,0.218,0.181,0.746,0.089,0.957-0.089,0.218-0.637,0.437-0.82,0.501-0.548,0.137-1.458,0.064-2.004,0.082-0.547,0.008-1.731-0.274-2.187,0.019-0.274,0.154-0.547,0.728-0.547,1.02-0.092,0.383,0.547,1.039,0.547,1.421,0,0.274-0.274,0.803-0.364,1.021-0.183,0.273-0.729,0.693-1.003,0.884-0.183,0.146-0.64,0.438-0.822,0.482-0.454,0.074-1.275-0.21-1.729-0.3-0.64-0.146-1.915-0.52-2.644-0.682-0.271-0.074-0.911-0.347-1.185-0.284-0.364,0.082-0.91,0.629-1.186,0.884-0.455,0.41-1.275,1.294-1.549,1.822-0.181,0.409-0.364,1.312-0.456,1.758,0,0.483,0.092,1.45,0.092,1.923-0.092,0.318-0.182,1.011-0.455,1.202-0.183,0.146-0.729,0.065-0.913,0.082-0.543,0.037-1.639,0.247-2.187,0.119-0.363-0.073-0.819-0.474-1.092-0.638-0.365-0.173-0.819-0.748-1.186-0.702-1.367,0.2-3.552,4.028-3.552,4.028l-5.927-2.17-2.823,3.044-2.733-0.692-0.364-1.604-1.732-0.619-1.366,5.986s-1.456,0.803-2.005,0.775c-0.638-0.028-1.73-0.921-2.37-1.157-0.729-0.255-2.05-0.702-2.751-0.803-0.591-0.081-1.84,0.192-2.407,0-0.49-0.164-1.302-0.866-1.639-1.266-0.528-0.62-1.193-2.16-1.559-2.898-0.246-0.482-1.155-1.486-0.902-1.968,0.192-0.365,1.259-0.109,1.642-0.274,0.474-0.209,1.348-0.847,1.657-1.267,0.192-0.245,0.483-0.847,0.466-1.156-0.027-0.356-0.538-0.922-0.685-1.24-0.108-0.256-0.162-0.875-0.381-1.049-0.329-0.254-1.284-0.026-1.678-0.172-0.365-0.137-1.074-0.565-1.24-0.903-0.182-0.345,0.166-1.193,0.021-1.548-0.192-0.428-0.985-1.021-1.386-1.275-0.556-0.366-1.842-0.793-2.46-1.021-0.394-0.147-1.158-0.458-1.568-0.502-0.319-0.037-0.992,0.254-1.275,0.1-0.318-0.172-0.666-0.911-0.684-1.265-0.019-0.347,0.328-0.994,0.503-1.305,0.144-0.263,0.653-0.683,0.755-0.974,0.073-0.201,0.083-0.638,0.028-0.838-0.11-0.393-0.595-1.076-0.85-1.385-0.428-0.529-1.521-1.377-1.995-1.868-0.702-0.711-2.123-2.151-2.688-2.98-0.428-0.638-1.121-2.032-1.357-2.761-0.246-0.739-0.474-2.296-0.545-3.071-0.074-0.838-0.111-2.543,0-3.381,0.062-0.454,0.471-1.302,0.49-1.758,0.018-0.337-0.056-1.048-0.265-1.313-0.237-0.3-1.021-0.52-1.385-0.637-0.592-0.192-1.833-0.429-2.46-0.483-0.911-0.083-2.762,0.008-3.682,0.026-0.71,0.009-2.288-0.41-2.834,0.055-0.264,0.218-0.292,1.021-0.236,1.357,0.062,0.421,0.719,1.067,0.8,1.468,0.102,0.482-0.035,1.476-0.162,1.949-0.074,0.284-0.211,0.958-0.476,1.067-0.181,0.082-0.591-0.128-0.755-0.238-0.401-0.283-0.865-1.203-1.221-1.548-0.283-0.265-0.883-0.748-1.23-0.912-0.382-0.174-1.212-0.328-1.633-0.364-0.582-0.056-1.749,0.182-2.322,0.072-0.492-0.092-1.368-0.693-1.869-0.776-0.546-0.081-1.677,0.047-2.214,0.164-0.592,0.128-1.693,0.667-2.268,0.857-0.494,0.155-1.486,0.538-2.006,0.529-0.281,0-0.811-0.319-1.094-0.319-0.318,0-0.948,0.209-1.23,0.374-0.255,0.156-0.729,0.574-0.828,0.856-0.136,0.401,0.364,1.285,0.218,1.687-0.163,0.409-0.938,0.965-1.338,1.139-0.866,0.391-2.816,0.529-3.763,0.482-1.114-0.045-3.291-0.61-4.358-0.929-0.848-0.264-2.506-0.931-3.308-1.313-0.556-0.265-1.576-0.975-2.13-1.23-0.266-0.109-0.813-0.365-1.095-0.346-0.411,0.036-1.184,0.437-1.478,0.719-0.199,0.2-0.382,0.757-0.528,0.994-0.162,0.255-0.436,0.847-0.692,1.012-0.255,0.164-0.874,0.217-1.185,0.217-0.674,0-1.986-0.436-2.669-0.482-0.43-0.036-1.32,0.192-1.732,0.054-0.363-0.126-1.076-0.619-1.202-0.993-0.118-0.345,0.446-1.084,0.318-1.44-0.09-0.283-0.646-0.628-0.901-0.774-0.293-0.156-0.931-0.373-1.257-0.401-0.374-0.027-1.123,0.182-1.496,0.245-0.675,0.11-2.04,0.556-2.724,0.476-0.493-0.057-1.413-0.512-1.814-0.803-0.519-0.382-1.258-1.477-1.712-1.95-0.319-0.337-0.975-0.994-1.332-1.304-0.207-0.183-0.6-0.72-0.884-0.692-0.188,0.009-0.436,0.411-0.526,0.583-0.175,0.32-0.228,1.076-0.355,1.414-0.118,0.337-0.356,1.066-0.64,1.284-0.327,0.265-1.212,0.419-1.621,0.402-0.554-0.02-1.622-0.438-2.114-0.693-0.655-0.347-1.705-1.45-2.378-1.768-0.519-0.246-1.668-0.51-2.242-0.557-0.318-0.026-0.966,0.038-1.276,0.102-0.146,0.037-0.38,0.073-0.618,0.127l-0.064-1.541,2.042-3.48,1.604-2.807-0.766-2.042,1.924-2.279,0.838-2.805,4.966,0.165,0.163-1.722-4.766-2.808-1.238-4.045,1.959-2.405-0.483-6.453,2.487,0.046,0.839-1.122-0.237-6.651-12.895-13.531-1.156-0.501-0.957,0.692-1.012-0.045v-1.021l0.155-1.978,1.12-1.541,0.21-1.339-0.638-1.705-0.055-1.395,0.912-1.065,1.493-0.374,1.387-0.801,0.063-1.276,0.154-1.714,1.067-1.549,0.967-2.296-0.304-2.059,0.11-3.471-0.983-1.332-0.983-0.829-1.287-2.779-0.938-1.413-0.083-1.229,0.784-1.147,0.929-0.348,0.984,0.32,0.484,0.938,0.375,1.603,0.371,1.759,1.66,1.631,1.84,0.374,1.204-0.83,0.982-1.867,0.164-1.367-1.412-1.868-0.856-1.468-0.801-1.494-0.184-2.406,0.748-0.929,1.921-0.911,1.732-1.066,0.292-1.494-0.829-1.231-0.901-1.521-0.913-1.631,1.313-0.583,1.923,0.082,0.792-0.456-0.235-1.631-1.067-2.806-1.257-2.078-1.12-1.011-0.291-2.998-0.348-2.188-1.549-1.977-2.032-1.814-0.025-3.181,1.119-4.2,1.485-2.525,0.956-1.686,0.128-1.919-0.128-1.241,0.72-1.241,1.851-1.404,0.519,0.644,1.32,1.16,1.241-0.399,0.437-1.281-0.602-1.205,0.448-0.598,1.356,0.078,1.203,0.604,1.687,0.157,0.755-0.717,1.366,0.319,1.679,0.72,0.646-1.642,0.958-2.564-1.205-2.602-0.836-1.403-1.96-0.919-2.168-2.323-0.686-1.402,1.568-0.521,2.206-0.402,1.759-0.48,0.602,1.16,1.521,0.802,1.357-0.479h1.605l1.767-0.681,0.082-1.404-1.211-1.881-1.03-0.16-0.93-1.241-0.283-1.723-1.238-1.282-2.442-0.962-2.277-1.721-1.969-1.843-0.482-2.483,0.965-2.685,1.805-2.521,0.273-2.925,0.484-3.204,1.236-2.683,1.014-2.884c1.01,0.057,2.241,0.119,2.96,0.148,0.529,0.02,1.649-0.17,2.132,0.052,0.365,0.167,0.866,0.838,1.068,1.175,0.3,0.488,0.572,1.616,0.8,2.137,0.128,0.289,0.291,1.019,0.585,1.12,0.464,0.159,1.319-0.615,1.767-0.8,0.857-0.351,2.607-0.942,3.473-1.281,1.075-0.42,3.144-1.505,4.271-1.763,0.903-0.206,2.763-0.305,3.683-0.213,1.313,0.13,3.892,0.768,5.077,1.334,1.211,0.583,3.371,2.253,4.328,3.205,0.582,0.586,1.492,1.989,1.968,2.669,0.474,0.681,1.303,2.129,1.822,2.779,0.702,0.886,2.269,2.543,3.146,3.256,0.526,0.429,1.749,1.054,2.294,1.441,0.684,0.478,2.151,1.349,2.625,2.032,0.448,0.655,0.774,2.257,0.901,3.044,0.128,0.804,0.146,2.441,0.109,3.256-0.063,1.158-0.555,3.438-0.637,4.594-0.074,0.865-0.219,2.616-0.056,3.47,0.209,1.093,1.103,3.177,1.703,4.111,0.431,0.661,1.578,1.75,2.143,2.296,0.838,0.828,2.827,2.195,3.526,3.152,0.527,0.732,1.148,2.454,1.44,3.312,0.2,0.6,0.118,2.034,0.583,2.457,0.365,0.326,1.44,0.244,1.923,0.267,0.774,0.032,2.323-0.181,3.097-0.162,0.521,0.014,1.641-0.064,2.088,0.214,0.475,0.299,0.984,1.39,1.165,1.922,0.319,0.916,0.184,2.909,0.428,3.846,0.211,0.775,0.912,2.224,1.288,2.935,0.337,0.637,1.403,1.75,1.548,2.461,0.128,0.601-0.02,1.95-0.374,2.451-0.364,0.528-1.649,0.993-2.24,1.229-0.939,0.384-2.944,0.739-3.902,1.067-1.119,0.382-3.296,1.33-4.383,1.821-0.9,0.411-2.614,1.496-3.57,1.76-0.867,0.246-2.717,0.073-3.583,0.319-0.719,0.209-2.242,0.72-2.67,1.338-0.135,0.191-0.209,0.739-0.107,0.958,0.226,0.445,1.301,0.737,1.711,1.011,1.403,0.947,4.303,2.779,5.396,4.063,0.691,0.812,1.367,2.908,1.978,3.792,0.611,0.883,2.112,2.451,2.879,3.197,0.684,0.675,2.633,1.595,2.89,2.516,0.182,0.692-0.576,2.087-0.911,2.725-0.529,0.966-2.305,2.451-2.725,3.472-0.238,0.583-0.43,1.895-0.264,2.505,0.154,0.565,0.965,1.467,1.384,1.868,0.921,0.875,3.473,1.813,4.219,2.834,0.31,0.419,0.657,1.466,0.583,1.977-0.071,0.637-0.847,1.767-1.329,2.187-0.529,0.456-2.032,0.666-2.562,1.121-0.401,0.338-1.047,1.249-1.12,1.768-0.08,0.602,0.446,1.786,0.692,2.343,0.283,0.628,0.911,1.903,1.44,2.351,0.335,0.282,1.174,0.582,1.603,0.646,0.674,0.091,2.06-0.1,2.726-0.272,0.647-0.165,1.795-0.949,2.45-1.066,0.575-0.092,1.741,0.009,2.298,0.163,0.474,0.119,1.358,0.583,1.768,0.848,0.545,0.365,1.339,1.549,1.966,1.713,0.602,0.156,1.815-0.355,2.408-0.482,0.884-0.183,2.632-0.702,3.523-0.749,0.459-0.017,1.396,0.047,1.814,0.221,0.648,0.263,1.66,1.256,2.197,1.704,0.736,0.619,2.115,1.94,2.842,2.561,0.548,0.418,1.458,1.393,2.006,1.603,0.547,0.21,1.822,0.11,2.46,0,1.003-0.164,2.733-1.001,3.735-1.33,1.185-0.437,3.555-1.348,4.74-1.767,1.366-0.448,3.917-1.368,5.284-1.705,0.912-0.237,2.824-0.739,3.828-0.692,0.546,0.018,1.639,0.345,2.095,0.583,0.82,0.392,2.461,1.403,3.007,2.142,0.548,0.674,0.911,2.379,1.094,3.199,0.364,1.285,0.546,3.973,1.001,5.229,0.275,0.894,1.004,2.698,1.643,3.373,0.453,0.492,1.729,1.12,2.368,1.274,0.639,0.147,1.913-0.063,2.461-0.054,1.092,0.027,3.278,0.019,4.282,0.275,0.729,0.182,2.277,0.802,2.826,1.283,0.546,0.384,1.638,1.34,1.638,1.969,0,0.418-0.544,1.157-0.91,1.394-0.639,0.428-2.279,0.329-2.915,0.693-0.549,0.292-1.643,1.121-1.824,1.704-0.18,0.702,0.457,2.178,0.729,2.833,0.456,0.93,1.824,2.497,2.552,3.252,0.365,0.43,1.367,1.058,1.642,1.55,0.364,0.593,0.455,2.013,0.636,2.671,0.364,0.982,1.002,2.951,1.459,3.844,0.456,0.711,1.641,1.876,2.005,2.57,0.546,0.81,1.457,2.532,1.732,3.472,0.18,1.011,0.09,3.116,0.18,4.164,0,0.811,0.366,2.458,0.184,3.253-0.184,0.793-1.093,2.178-1.456,2.889-0.366,0.646-1.278,1.84-1.46,2.561-0.274,0.729-0.182,2.287-0.091,3.043,0.091,1.167,0.365,3.518,0.728,4.646,0.274,1.211,1.276,3.555,1.916,4.648,0.363,0.702,1.365,1.987,1.911,2.615,0.185,0.237,0.548,0.738,0.822,0.902,0.272,0.166,0.91,0.247,1.184,0.374,0.456,0.228,1.368,0.83,1.731,1.13,0.639,0.447,2.096,1.25,2.553,1.914,0.363,0.575,0.363,1.987,0.545,2.625,0.183,0.546,0.548,1.649,0.911,2.132,0.365,0.51,1.276,1.285,1.73,1.713,0.64,0.565,1.733,1.95,2.462,2.241,0.3,0.13,0.7,0.15,1,0.15","name":"Сумська область"},"61":{"path":"M448.25,286.55l-0.064,1.401,3.28,1.076,0.365,2.087-3.289,0.802-1.076,4.129,2.241,1.558-0.564,2.324-0.675,2.76-4.446-0.082s-0.329,1.868-0.483,2.488c-0.118,0.455-0.337,1.384-0.556,1.795-0.283,0.528-1.35,1.276-1.531,1.85-0.1,0.338,0.101,1.085,0.127,1.439,0.036,0.675-0.009,2.023,0.119,2.679,0.1,0.565,0.474,1.658,0.72,2.169,0.355,0.72,1.348,1.995,1.759,2.679,0.382,0.628,1.238,1.858,1.439,2.57,0.218,0.72,0.228,2.25,0.209,2.998-0.027,0.828-0.492,2.46-0.447,3.288,0.064,1.04,0.692,3.063,1.048,4.047,0.182,0.51,0.747,1.449,0.912,1.958,0.264,0.784,0.665,2.416,0.646,3.244-0.009,0.492-0.227,1.495-0.482,1.923-0.237,0.401-1.084,0.901-1.358,1.286-0.392,0.537-0.957,1.758-1.121,2.396-0.11,0.419,0.119,1.367-0.128,1.723-0.236,0.373-1.193,0.555-1.558,0.801-0.419,0.292-1.33,0.894-1.522,1.367-0.255,0.621,0.101,2.015,0.201,2.679,0.145,0.938,0.655,2.762,0.838,3.692,0.146,0.72,0.391,2.186,0.483,2.915,0.128,1.048,0.337,3.152,0.32,4.21-0.019,1.048-0.429,3.116-0.438,4.165-0.01,1.066,0.118,3.207,0.355,4.247,0.218,0.92,1.221,2.587,1.367,3.526,0.136,0.875,0.054,2.687-0.246,3.517-0.165,0.474-0.83,1.239-1.158,1.604-0.365,0.4-1.24,1.046-1.604,1.448-0.4,0.437-1.212,1.349-1.403,1.923-0.364,1.112-0.118,3.518-0.036,4.684,0.091,1.313,0.729,3.89,0.802,5.204,0.072,1.338-0.155,4.027-0.201,5.367-0.018,0.61,0.118,1.867-0.082,2.441-0.192,0.556-1.047,1.414-1.403,1.887-0.428,0.574-1.403,1.668-1.722,2.324-0.356,0.739-0.784,2.342-0.838,3.163-0.055,0.802,0.018,2.487,0.401,3.198,0.209,0.4,1.139,0.782,1.357,1.166,0.311,0.528,0.557,1.794,0.483,2.405-0.064,0.538-0.82,1.432-0.921,1.96-0.199,1.075,0.265,3.271,0.282,4.364,0.02,1.121-0.155,3.363-0.163,4.492,0,1.322-0.174,4,0.163,5.285,0.247,0.957,1.313,2.68,1.842,3.526,0.246,0.392,0.966,1.075,1.12,1.521,0.183,0.529-0.154,1.732,0.083,2.241,0.156,0.33,0.884,0.656,1.084,0.958,0.366,0.583,0.593,1.987,0.793,2.643,0.218,0.71,0.529,2.186,0.883,2.844,0.565,1.057,2.296,2.76,3.044,3.689,0.41,0.501,1.267,1.594,1.941,2.442-0.957,0.064-2.315,0.355-3.062,0.427-1.03,0.102-3.08,0.338-4.109,0.321-1.204-0.028-3.619-0.228-4.757-0.593-0.775-0.246-2.278-0.993-2.88-1.549-0.446-0.4-0.957-1.548-1.338-2.022-0.347-0.437-1.066-1.322-1.55-1.604-0.236-0.137-0.801-0.346-1.067-0.264-0.345,0.09-0.7,0.83-1.01,1.012-0.556,0.318-1.831,0.811-2.46,0.693-0.438-0.083-1.13-0.74-1.44-1.066-0.255-0.274-0.748-0.867-0.802-1.232-0.119-0.855,0.984-2.441,1.021-3.307,0.019-0.565-0.182-1.713-0.484-2.196-0.199-0.311-0.838-0.756-1.175-0.901-0.328-0.138-1.039-0.247-1.394-0.219-0.319,0.037-0.939,0.282-1.222,0.428-0.564,0.292-1.549,1.122-2.085,1.45-0.466,0.272-1.396,0.875-1.923,1.011-0.493,0.128-1.541,0.2-2.032,0.055-0.52-0.164-1.395-0.875-1.759-1.285-0.483-0.538-1.011-1.921-1.439-2.504-0.328-0.439-1.093-1.24-1.495-1.605-0.364-0.327-1.093-1.029-1.549-1.175-0.793-0.255-2.488,0.018-3.317,0.109-0.701,0.073-2.069,0.547-2.77,0.484-0.656-0.074-1.896-0.63-2.462-0.967-0.482-0.282-1.229-0.875-1.812-1.421-0.283-0.254-0.53-0.509-0.703-0.711-0.702-0.875-1.858-2.86-2.131-3.954-0.147-0.575,0.062-1.768,0-2.352-0.092-0.856-0.265-2.652-0.748-3.363-0.273-0.409-1.149-0.947-1.604-1.121-0.574-0.227-1.868-0.119-2.451-0.319-0.592-0.21-1.677-0.866-2.141-1.285-0.393-0.355-1.03-1.24-1.276-1.713-0.328-0.593-0.592-1.959-0.912-2.561-0.209-0.411-0.71-1.203-1.066-1.494-0.337-0.284-1.167-0.793-1.604-0.748-0.227,0.019-0.592,0.364-0.746,0.529-0.247,0.291-0.474,1.04-0.693,1.339-0.273,0.365-0.847,1.149-1.286,1.286-0.31,0.09-0.974-0.146-1.284-0.274-0.575-0.237-1.586-0.993-2.079-1.385-0.6-0.474-1.603-1.668-2.241-2.086-0.528-0.328-1.686-0.884-2.296-0.958-0.364-0.045-1.129,0.393-1.44,0.21-0.365-0.201-0.647-1.13-0.647-1.55,0-0.3,0.383-0.829,0.483-1.12,0.155-0.438,0.601-1.357,0.483-1.813-0.119-0.419-0.792-1.195-1.23-1.23-0.365-0.027-0.919,0.593-1.176,0.856-0.263,0.273-0.556,1.039-0.855,1.286-0.274,0.218-0.975,0.555-1.331,0.528-0.465-0.028-1.303-0.556-1.604-0.903-0.31-0.355-0.638-1.294-0.693-1.768-0.081-0.637,0.392-1.913,0.32-2.561-0.064-0.537-0.538-1.531-0.748-2.032-0.163-0.393-0.437-1.248-0.748-1.549-0.555-0.52-2.131-0.874-2.833-1.167-0.792-0.347-2.488-0.838-3.153-1.395-0.473-0.391-0.974-1.566-1.385-2.021-0.401-0.457-1.32-1.25-1.813-1.604-0.364-0.264-1.212-0.62-1.549-0.911-0.319-0.264-0.848-0.931-1.067-1.286-0.246-0.383-0.865-1.211-0.747-1.649,0.072-0.311,0.71-0.656,1.012-0.748,0.41-0.127,1.284,0.137,1.713,0.046,0.373-0.074,1.011-0.558,1.384-0.639,0.356-0.074,1.112-0.154,1.439,0,0.393,0.183,0.757,1.111,1.122,1.34,0.236,0.146,0.829,0.401,1.066,0.263,0.264-0.145,0.355-0.828,0.374-1.119,0.037-0.438-0.064-1.331-0.265-1.714-0.328-0.601-1.476-1.458-2.023-1.867-0.556-0.411-1.794-1.003-2.352-1.386-0.555-0.375-1.685-1.131-2.086-1.659-0.373-0.482-0.838-1.64-0.956-2.242-0.1-0.482-0.192-1.521,0-1.977,0.201-0.501,1.093-1.239,1.548-1.55,0.738-0.509,2.515-1.01,3.309-1.438,0.382-0.211,1.239-0.574,1.439-0.958,0.11-0.217,0.137-0.765,0-0.965-0.281-0.418-1.403-0.556-1.868-0.748-0.71-0.3-2.131-0.892-2.833-1.229-0.475-0.228-1.869-1.012-1.869-1.012l-1.658-12.921-2.561-5.075,0.292-4.794,0.073-1.129-1.166-5.294,10.151-3.362,6.296-4.646,3.899-5.451,4.274-0.473,1.978-4.219s-0.738-1.549-0.912-2.086c-0.229-0.702-0.748-2.151-0.637-2.88,0.082-0.529,0.629-1.558,1.066-1.868,0.737-0.537,2.688-0.546,3.581-0.755,0.83-0.184,2.46-0.786,3.308-0.793,0.447-0.009,1.313,0.419,1.768,0.374,0.419-0.055,1.149-0.583,1.55-0.748,0.464-0.2,1.402-0.674,1.921-0.701,0.201-0.009,0.656,0.063,0.794,0.219,0.328,0.364,0.054,1.484,0.264,1.922,0.192,0.373,0.774,1.083,1.184,1.174,0.338,0.073,1.332-0.483,1.332-0.483l3.526-3.152,2.879-9.769-1.567-4.027c1.048-1.112,3.226-3.335,4.337-3.891,0.692-0.347,2.324-0.283,3.043-0.556,0.494-0.201,1.523-0.674,1.796-1.13,0.209-0.327,0.182-1.176,0.128-1.558-0.074-0.447-0.438-1.285-0.647-1.686-0.255-0.5-0.975-1.385-1.239-1.877-0.22-0.392-0.629-1.203-0.721-1.64-0.117-0.573-0.145-1.768,0-2.324,0.138-0.52,0.557-1.649,1.039-1.886,0.384-0.192,1.276,0.109,1.686,0.237,0.393,0.127,1.13,0.538,1.477,0.765,0.556,0.356,1.503,1.275,2.049,1.64,0.565,0.392,1.714,1.458,2.397,1.367,0.4-0.064,0.848-0.875,1.121-1.166,0.411-0.42,1.649-1.686,1.649-1.686l5.804-0.155s0.601,0.382,0.803,0.519c0.483,0.346,1.293,1.349,1.877,1.486,0.646,0.136,1.95-0.365,2.57-0.602,0.527-0.208,1.512-0.82,1.995-1.12,0.52-0.329,1.622-0.93,2.005-1.404,0.283-0.346,0.52-1.239,0.72-1.639,0.3-0.593,0.956-1.741,1.321-2.288,0.283-0.41,0.82-1.249,1.204-1.559,0.382-0.31,1.275-0.811,1.767-0.848,0.374-0.018,1.13,0.274,1.44,0.483,0.538,0.374,1.176,1.585,1.64,2.042,0.301,0.291,0.912,0.965,1.323,1.001,0.392,0.037,1.046-0.537,1.403-0.72,0.364-0.191,1.066-0.691,1.485-0.757,0.437-0.072,1.34,0.129,1.758,0.275,0.446,0.154,1.203,0.746,1.641,0.919,0.738,0.292,2.287,0.757,3.089,0.766,0.364,0.009,1.084-0.227,1.439-0.318,0.383-0.101,1.122-0.438,1.521-0.447,0.32,0,0.958,0.164,1.24,0.329,0.282,0.154,0.884,0.564,0.92,0.874,0.055,0.384-0.574,1.012-0.802,1.322-0.365,0.52-1.604,1.968-1.604,1.968l-0.28,6.06z","name":"Тернопільська область"},"63":{"path":"M1195.087,379.248l-1.733,2.661l-11.844-2.296l-1.276,1.631l-4.191-0.336l-1.548,3.645l0.454,2.241 l5.833,2.004c0,0,0.456,1.158,0.456,1.559c0,0.511-0.091,1.558-0.364,2.005c-0.274,0.456-1.004,1.203-1.551,1.402 c-0.546,0.265-1.914,0.211-2.642,0.165c-0.639-0.045-1.914-0.501-2.643-0.519c-0.273-0.009-0.911-0.046-1.093,0.155 c-0.273,0.199-0.273,0.866-0.273,1.166c0,0.492,0.455,1.476,0.363,1.959c-0.09,0.318-0.546,0.811-0.82,1.003 c-0.456,0.318-1.731,0.437-2.187,0.72c-0.729,0.4-2.005,1.439-2.46,2.122c-0.366,0.475-0.457,1.641-0.637,2.16 c-0.184,0.446-0.549,1.395-0.914,1.722c-0.544,0.547-2.276,0.848-2.913,1.286c-0.549,0.372-1.823,1.202-2.007,1.84 c-0.182,0.383,0.092,1.64,0.092,1.64l2.643,4.41l-7.106,0.274l-3.009,3.727l0.184,6.771l-3.374,0.163l-0.18-4.848l-3.281,0.037 l-1.186,4.41l-1.093-2.287l-3.098,2.687l3.734,5.522l-1.456,1.003l-4.557-5.367l-6.105-0.201l-0.638,1.959l-1.914,1.322 l-2.824-2.562l-5.103,0.248c0,0-1.095,0.628-1.184,0.993c-0.186,0.364,0.089,1.166,0.272,1.53c0.271,0.829,1.459,2.232,1.912,2.998 c0.549,0.894,2.096,3.645,2.096,3.645l-1.274,9.104l-3.191-1.212l-2.915,3.163l-4.008-2.041l-3.281-2.561l-10.389,11.491 c0,0-1.183,0.374-1.639,0.246c-0.364-0.145-1.002-0.847-1.094-1.24c-0.182-0.51,0.271-1.566,0.271-2.086 c0-0.538-0.271-1.595-0.545-2.086c-0.182-0.538-1.278-1.367-1.278-1.96c0-0.383,0.731-0.938,0.731-1.321 c0.092-0.793-0.363-2.487-1.003-3.007c-0.545-0.473-2.188-0.228-2.825-0.519c-0.545-0.236-1.914-1.44-1.914-1.44l-3.096-2.77 c0,0-0.913-0.929-1.095-1.312c-0.274-0.683-0.455-2.924-0.455-2.924l-0.275-3.29l-4.646-2.598l0.182-1.968 c0,0-1.914-2.032-2.551-2.724c-0.274-0.237-0.82-0.647-0.91-0.958c-0.092-0.3-0.092-1.001,0.09-1.285 c0.09-0.182,0.546-0.336,0.638-0.519c0.183-0.355,0.273-1.212,0.183-1.604c-0.183-0.556-1.093-1.384-1.459-1.804 c-0.362-0.356-1.274-0.866-1.548-1.277c-0.273-0.31-0.547-1.029-0.547-1.403c-0.091-0.646,0.183-1.94,0.364-2.56 c0.092-0.464,0.637-1.313,0.82-1.768c0.091-0.254,0.455-0.846,0.273-1.039c-0.183-0.191-0.73,0.21-1.002,0.283 c-0.822,0.237-2.645,0.547-3.462,0.956c-0.823,0.429-2.096,1.869-2.919,2.37c-1.274,0.83-4.19,2.078-5.648,2.634 c-1.093,0.41-3.189,1.339-4.373,1.331c-0.64-0.01-1.913-0.638-2.552-0.803c-0.911-0.236-2.733-0.574-3.646-0.766 c-0.912-0.199-2.823-0.683-3.828-0.801c-1.002-0.11-2.915-0.146-3.918-0.119c-0.91,0.028-2.642,0.455-3.554,0.318 c-0.547-0.072-1.457-0.509-1.913-0.756c-0.729-0.457-2.096-1.74-2.825-2.205c-1.092-0.611-3.371-1.331-4.374-2.004 c-0.727-0.475-1.822-1.776-2.461-2.361c-0.545-0.537-1.546-1.713-2.186-2.122c-0.638-0.402-2.096-0.839-2.827-1.085 c-0.454-0.173-1.546-0.309-2.002-0.601c-0.365-0.237-1.002-0.912-1.095-1.322c-0.271-0.583,0.183-1.896,0-2.479 c-0.271-0.555-1.001-1.494-1.549-1.839c-0.455-0.374-1.73-0.848-2.369-0.921c-0.364-0.055-1.184,0.164-1.639,0.236 c-0.457,0.073-1.276,0.475-1.643,0.365c-0.363-0.1-0.818-0.875-1.184-1.003c-0.182-0.1-0.729-0.055-1.003,0 c-0.453,0.082-1.274,0.475-1.641,0.674c0,0.028-0.09,0.047-0.09,0.073l-4.556-8.637c0,0,0.182-2.132,0.364-2.808 c0.363-1.303,1.094-4.255,2.279-4.885c0.728-0.392,2.459,0.375,3.278,0.52c1.003,0.164,2.823,0.62,3.828,0.721 c0.728,0.082,2.096-0.064,2.734,0.082c0.546,0.108,1.457,0.691,2.004,0.802c0.638,0.137,2.096-0.119,2.824,0.036 c0.364,0.101,1.093,0.629,1.55,0.721c0.454,0.1,1.459,0.199,1.822,0c0.455-0.201,1.093-0.984,1.093-1.44 c0.092-0.555-0.911-1.449-0.911-2.005c0-0.838,1.003-2.296,1.549-2.962c0.366-0.474,1.366-1.21,1.823-1.603 c0.547-0.482,2.096-1.157,2.277-1.876c0.185-0.721-0.638-2.187-1-2.807c-0.367-0.564-1.55-1.321-2.006-1.841 c-0.364-0.428-1.095-1.357-1.274-1.886c-0.184-0.473-0.366-1.494-0.275-1.995c0-0.602,0.365-1.851,0.821-2.251 c0.364-0.337,1.457-0.392,2.004-0.438c0.73-0.063,2.186-0.145,2.822,0.082c0.64,0.183,1.369,1.166,2.007,1.321 c0.455,0.128,1.457,0.155,1.913-0.119c0.546-0.391,0.82-1.867,1.094-2.486c0.183-0.42,0.819-1.231,0.638-1.677 c0-0.329-0.82-0.592-1.001-0.885c-0.185-0.391-0.274-1.331-0.185-1.758c0.092-0.465,0.821-1.158,1.004-1.603 c0.182-0.455,0.182-1.924,0.182-1.924l-5.193-8.291l-7.837-0.566c0,0-1.093-0.656-1.275-1.04c-0.185-0.372,0.274-1.329,0-1.638 c-0.274-0.346-1.366-0.292-1.823-0.319c-0.455-0.036-1.549,0.354-2.004,0.119c-0.274-0.164-0.639-1.204-0.639-1.204l-1.093-10.999 l-2.005-1.176h-5.923l-0.821-2.296c0,0-0.728,1.003-1.092,1.012c-0.729,0.018-1.551-1.988-2.278-1.923 c-0.364,0.028-0.639,0.939-0.911,1.075c-0.364,0.128-1.095,0.019-1.368-0.109c-0.91-0.355-2.368-1.795-3.098-2.405 c-0.548-0.483-1.913-1.359-2.369-1.978c-0.364-0.492-0.637-1.686-0.91-2.242c-0.273-0.583-1.003-1.667-1.095-2.296 c-0.183-0.51-0.183-1.595,0-2.086c0.092-0.264,0.546-0.602,0.729-0.849c0.366-0.747,0.64-2.432,0.64-3.262 c0.09-0.592-0.183-1.84,0-2.396c0.09-0.291,0.546-0.755,0.818-0.911c0.365-0.254,1.55-0.091,1.823-0.482 c1.094-1.531-0.636-6.634-0.636-6.634s2.184-3.818,3.551-4.018c0.366-0.046,0.82,0.528,1.186,0.702 c0.273,0.164,0.729,0.564,1.093,0.637c0.548,0.129,1.643-0.082,2.188-0.118c0.183-0.017,0.729,0.064,0.912-0.082 c0.273-0.191,0.362-0.884,0.455-1.202c0-0.474-0.093-1.44-0.093-1.923c0.093-0.446,0.276-1.349,0.456-1.758 c0.274-0.528,1.095-1.413,1.55-1.822c0.274-0.255,0.821-0.803,1.185-0.884c0.274-0.063,0.913,0.209,1.186,0.284 c0.729,0.162,2.003,0.537,2.643,0.682c0.453,0.09,1.276,0.374,1.729,0.3c0.184-0.045,0.64-0.336,0.821-0.482 c0.274-0.191,0.82-0.611,1.004-0.884c0.089-0.218,0.363-0.747,0.363-1.021c0-0.383-0.638-1.039-0.547-1.421 c0-0.292,0.272-0.865,0.547-1.021c0.455-0.292,1.641-0.01,2.187-0.018c0.546-0.018,1.456,0.054,2.004-0.082 c0.184-0.064,0.731-0.283,0.82-0.501c0.093-0.211,0-0.739-0.089-0.958c-0.093-0.292-0.731-0.592-0.912-0.865 c-0.183-0.238-0.367-0.812-0.367-1.103c0-0.227,0.275-0.682,0.459-0.837c0.18-0.21,0.909-0.328,1.185-0.438 c0.638-0.237,1.823-0.711,2.458-0.984c0.456-0.2,1.368-0.593,1.823-0.885c0.183-0.146,0.365-0.728,0.639-0.72 c0.454,0.019,0.91,1.012,1.184,1.34c0.455,0.557,1.458,1.659,1.915,2.169c0.455,0.374,1.094,1.35,1.639,1.423 c0.184,0.025,0.547-0.229,0.729-0.348c0.274-0.146,0.729-0.455,0.82-0.72c0.092-0.355-0.637-1.04-0.546-1.376 c0.182-0.41,1.186-0.611,1.639-0.765c0.459-0.172,1.368-0.456,1.915-0.555c0.454-0.11,1.457-0.42,2.005-0.265 c0.271,0.091,0.545,0.61,0.82,0.801c0.182,0.192,0.637,0.729,0.91,0.737c0.365,0.02,0.91-0.501,1.186-0.774 c0.272-0.337,0.453-1.193,0.546-1.604c0.092-0.382,0.272-1.057,0.365-1.584c0.637,0.009,1.458-0.11,1.913-0.164 c0.82-0.101,2.552-0.41,3.281-0.747c0.637-0.265,1.64-1.086,2.186-1.495c0.911-0.766,2.553-2.524,3.464-3.317 c0.819-0.683,2.369-2.104,3.279-2.615c1.094-0.627,3.646-1.431,4.921-1.705c0.82-0.172,2.459-0.327,3.281-0.318 c0.729,0,2.278,0.082,2.916,0.318c0.544,0.182,1.549,0.939,2.002,1.176c0.912,0.374,2.917,0.656,3.739,1.066 c0.818,0.365,2.277,1.376,2.914,1.922c0.819,0.693,2.46,2.215,3.099,3.099c0.729,0.965,1.458,3.334,2.277,4.273 c0.457,0.52,1.46,1.484,2.097,1.704c0.729,0.245,2.371,0,3.189-0.109c0.729-0.101,2.005-0.611,2.734-0.692 c0.454-0.045,1.274,0.017,1.641,0.053c0.91,0.073,2.734,0.366,3.645,0.484c0.818,0.1,2.46,0.301,3.189,0.428 c0.456,0.056,1.273,0.01,1.547,0.265c0.364,0.346,0.364,1.484,0.456,1.977c0.183,0.73,0.366,2.288,0.82,2.879 c0.455,0.511,1.642,1.176,2.188,1.339c0.82,0.202,2.463,0.191,3.19-0.108c0.909-0.365,2.277-1.858,2.915-2.615 c0.455-0.638,1.093-2.178,1.549-2.834c0.639-0.856,2.188-2.388,3.008-3.088c0.911-0.766,2.733-2.143,3.735-2.726 c1.001-0.61,3.006-1.721,4.191-2.032c1.275-0.364,4.101-0.4,5.469-0.482c0.91-0.055,2.734,0.099,3.645-0.11 c0.728-0.173,2.005-1.029,2.823-1.277c0.456-0.171,1.551-0.418,2.098-0.481c0.729-0.082,2.276,0.2,3.005,0 c0.64-0.174,1.733-0.966,2.188-1.331c0.912-0.592,2.459-1.959,3.279-2.57c0.821-0.601,2.554-1.804,3.462-2.296 c0.731-0.438,2.462-1.084,3.372-1.441c0.729-0.309,2.097-1.193,2.826-1.23c0.364-0.018,1.094,0.247,1.367,0.429 c0.729,0.41,1.913,1.567,2.368,2.242c0.731,1.002,1.093,3.526,1.824,4.482c0.638,0.894,2.641,2.025,3.552,2.671 c0.821,0.591,2.644,1.576,3.371,2.305c0.365,0.337,0.821,1.166,1.095,1.595c0.273,0.564,0.638,1.74,0.819,2.352 c0.273,1.076,0.273,3.29,0.456,4.383c0.183,1.185,0.549,3.608,1.095,4.692c0.454,1.029,2.094,2.716,2.915,3.582 c0.455,0.592,1.55,1.704,2.095,2.295c0.365,0.456,1.004,1.505,1.458,1.869c0.365,0.264,1.188,0.6,1.551,0.693 c0.729,0.155,2.186-0.11,2.915,0c0.548,0.09,1.55,0.456,2.096,0.692c1.367,0.692,3.828,2.542,5.104,3.526 c1.092,0.911,3.098,2.988,4.101,4.009c0.728,0.728,2.096,2.241,2.824,2.989c0.456,0.51,1.276,1.741,1.913,2.032 c0,0.009,0.091,0.026,0.091,0.036c-0.091,0.438-0.182,1.104-0.091,1.376c0.275,0.665,1.732,1.384,2.097,1.949 c0.363,0.428,0.819,1.385,1.002,1.896c0.183,0.62,0.547,2.014,0.273,2.587c-0.091,0.246-0.729,0.439-1.003,0.51 c-0.363,0.091-1.185-0.146-1.455,0.082c-0.185,0.183-0.185,0.893-0.366,1.122c-0.092,0.191-0.729,0.264-0.821,0.5 c-0.18,0.392,0.273,1.249,0.549,1.548c0.181,0.274,1.001,0.52,1.276,0.648c0.635,0.219,2.002,0.264,2.459,0.666 c0.181,0.127,0.455,0.51,0.363,0.691c-0.092,0.356-1.093,0.346-1.458,0.539c-0.456,0.253-1.274,0.929-1.64,1.275 c-0.271,0.273-0.912,0.884-1.186,1.148c-0.271,0.219-0.728,0.811-1.093,0.803c-0.364,0-0.728-0.684-1.094-0.803 c-0.181-0.073-0.638-0.138-0.817-0.045c-0.274,0.119-0.729,0.673-0.822,0.956c-0.182,0.474-0.091,1.559-0.274,2.06 c-0.089,0.529-1.183,1.604-0.818,2.022c0.271,0.337,1.275-0.556,1.729-0.428c0.64,0.2,1.278,1.439,1.732,1.95 c0.455,0.673,1.548,2.041,1.822,2.834c0.184,0.345,0.273,1.094,0.273,1.467c0,0.291-0.09,0.92-0.273,1.121 c-0.274,0.274-1.274,0.073-1.549,0.346c-0.364,0.337-0.364,1.395-0.456,1.869c-0.181,0.573-0.271,1.721-0.455,2.295 c-0.092,0.62-0.092,1.95-0.455,2.461c-0.183,0.365-1.094,0.729-1.551,0.884c-0.547,0.21-1.821,0.21-2.37,0.427 c-0.452,0.138-1.273,0.502-1.545,0.848c-0.093,0.264-0.275,0.957-0.093,1.229c0.093,0.283,0.91,0.375,1.186,0.511 c0.182,0.1,0.729,0.209,0.818,0.428c0.092,0.236,0,0.81-0.181,1.039c-0.186,0.273-0.729,0.62-1.003,0.775 c-0.365,0.163-1.093,0.2-1.368,0.456c-0.363,0.455-0.547,1.813-0.638,2.424c-0.181,0.766-0.545,2.304-0.454,3.069 c0.089,0.602,0.638,1.678,0.911,2.242c0.181,0.575,0.636,1.704,0.729,2.306c0.181,0.656,0.092,2.023,0.181,2.688 c0.183,1.121,0.821,3.317,1.093,4.411c0.093,0.364,0.275,1.148,0.549,1.439c0.272,0.418,1.367,0.793,1.913,1.012 c0.455,0.219,1.548,0.437,2.005,0.729c0.363,0.182,0.91,0.656,1.001,0.984c0.183,0.264,0.183,0.875,0.093,1.147 c-0.093,0.246-0.73,0.802-0.73,0.802l-3.645-1.896l0.092,4.374L1195.087,379.248L1195.087,379.248z","name":"Харківська область"},"65":{"path":"M1024,678.93c0.272,0.22,1.093,0.42,1.822,0.556-0.729,0.492-1.55,1.011-2.005,1.367-0.818,0.602-2.278,1.995-3.189,2.441-0.637,0.3-2.004,0.701-2.643,0.72-0.636,0.017-1.73-0.409-2.278-0.481-0.546-0.063-1.638-0.293-2.095-0.083-0.456,0.217-1.003,1.24-1.366,1.648-0.366,0.439-1.186,1.294-1.551,1.724-0.548,0.556-1.73,1.603-2.276,2.195-0.273,0.337-0.73,1.094-1.004,1.448-0.181,0.32-0.638,1.012-1.002,1.24-0.363,0.254-1.275,0.611-1.641,0.557-0.729-0.083-1.731-1.167-2.368-1.441-0.638-0.3-2.097-0.817-2.824-0.801-0.822,0.018-2.28,0.62-3.008,0.967-0.367,0.173-0.91,0.746-1.275,0.919-0.365,0.146-1.186,0.054-1.366,0.356-0.093,0.253,0.363,0.784,0.453,1.057,0,0.511-0.181,1.575-0.09,2.077,0.09,0.584,0.911,1.559,1.003,2.142,0.18,0.984,0,3.014-0.184,4.007-0.182,1.031-0.729,3.056-1.183,4.002-0.364,0.701-1.096,2.104-1.642,2.617-0.547,0.455-1.822,1.001-2.551,1.174-0.547,0.137-1.733-0.091-2.188,0.11-0.365,0.12-0.819,0.683-1.094,0.847-0.363,0.202-1.186,0.474-1.549,0.539-0.181,0.025-0.546,0.108-0.639,0-0.454-0.346-0.092-1.604-0.272-2.081-0.182-0.298-0.64-0.773-0.912-0.964-0.454-0.299-1.612-0.41-1.876-0.857-0.192-0.318-0.019-1.137,0.101-1.493,0.183-0.493,0.772-1.421,1.229-1.703,0.364-0.229,1.367-0.019,1.639-0.329,0.185-0.191,0.275-0.802,0.185-1.057-0.093-0.383-1.005-0.756-1.095-1.132-0.183-0.373-0.091-1.219,0.09-1.592,0.093-0.429,0.64-1.224,1.005-1.507,0.271-0.182,0.818-0.445,1.093-0.417,0.274,0.009,0.547,0.373,0.729,0.417,0.272,0.074,0.91,0.083,1.184-0.044,0.183-0.109,0.365-0.665,0.548-0.757,0.363-0.126,1.093,0.064,1.366,0.22,0.273,0.127,0.545,0.757,0.819,0.801,0.274,0.046,0.91-0.31,1.095-0.536,0.364-0.393,0.638-1.459,0.728-1.978,0-0.512-0.274-1.568-0.182-2.078,0.092-0.392,0.456-1.095,0.638-1.44,0.184-0.317,0.911-0.883,0.822-1.229-0.185-0.602-1.553-1.085-2.19-1.23-0.455-0.118-1.547-0.118-1.912,0.111-0.364,0.189-0.91,0.954-1.095,1.328-0.182,0.411-0.182,1.366-0.363,1.77-0.273,0.435-0.91,1.282-1.367,1.494-0.545,0.254-1.912,0.21-2.55,0-1.186-0.409-2.927-2.334-3.899-3.1-0.795-0.61-2.298-1.995-3.21-2.405-0.481-0.218-1.623-0.684-2.086-0.428-0.438,0.245-0.694,1.375-0.694,1.866,0.012,0.42,0.394,1.186,0.584,1.551,0.2,0.384,0.893,0.975,0.968,1.395,0.146,0.766-0.337,2.377-0.749,3.043-0.263,0.429-1.085,1.121-1.548,1.331-0.302,0.146-1.078,0.428-1.341,0.219-0.345-0.291-0.08-1.368-0.044-1.822,0.044-0.655,0.573-1.958,0.473-2.616-0.146-1.021-1.286-2.825-1.868-3.682-0.483-0.72-1.74-1.94-2.296-2.614-0.565-0.693-1.776-2.031-2.188-2.836-0.326-0.636-0.391-2.213-0.856-2.771-0.337-0.418-1.34-0.974-1.867-1.02-0.692-0.053-2.085,0.467-2.617,0.911-0.354,0.291-1.046,1.167-0.9,1.596,0.102,0.338,0.974,0.411,1.275,0.591,0.493,0.302,1.568,0.922,1.821,1.441,0.274,0.602-0.309,2.05-0.063,2.669,0.202,0.483,1.24,0.994,1.505,1.449,0.227,0.393,0.438,1.304,0.475,1.759,0.025,0.292,0.108,0.976-0.102,1.177-0.219,0.198-0.92,0.198-1.177,0.053-0.299-0.171-0.454-0.938-0.638-1.229-0.262-0.4-0.72-1.395-1.185-1.493-0.244-0.057-0.79,0.244-0.9,0.481-0.2,0.429,0.255,1.422,0.43,1.867,0.227,0.583,1.139,1.567,1.22,2.188,0.063,0.419-0.137,1.34-0.419,1.658-0.318,0.348-1.303,0.638-1.769,0.638-0.437,0-1.284-0.356-1.658-0.592-0.348-0.219-0.783-1.021-1.166-1.167-0.294-0.118-0.955-0.082-1.23,0.045-0.31,0.146-0.62,0.85-0.911,1.021-0.311,0.173-1.067,0.456-1.387,0.318-0.453-0.2-0.81-1.256-1.01-1.713-0.355-0.775-0.647-2.487-1.022-3.253-0.317-0.646-1.102-1.896-1.646-2.351-0.666-0.53-2.28-1.157-3.101-1.339-0.818-0.165-2.486-0.027-3.315-0.046-0.655-0.028-2.005,0.136-2.617-0.109-0.609-0.246-1.419-1.404-1.976-1.759-0.411-0.273-1.284-0.729-1.758-0.802-0.493-0.083-1.549-0.037-1.978,0.209-0.503,0.291-1.03,1.413-1.396,1.868-0.29,0.373-0.755,1.394-1.22,1.439-0.429,0.055-1.048-0.756-1.395-1.013-0.336-0.243-0.957-0.817-1.33-1.011-0.513-0.264-1.696-0.982-2.197-0.691-0.254,0.146-0.31,0.874-0.264,1.166,0.036,0.255,0.182,0.603,0.366,0.931l-0.421,1.211-2.278-0.047,2.645,10.736-1.342,0.674c-0.109-0.865-0.527-2.315-0.946-2.952-0.275-0.421-1.067-1.075-1.523-1.286-0.664-0.3-2.168-0.592-2.879-0.437-0.547,0.118-1.55,0.784-1.875,1.237-0.273,0.374-0.586,1.322-0.494,1.76,0.099,0.42,0.893,0.929,1.131,1.286,0.264,0.392,0.767,1.221,0.838,1.686,0.053,0.373,0.018,1.202-0.246,1.477-0.237,0.264-1.02,0.235-1.358,0.327-0.274,0.064-0.884,0.118-1.075,0.318-0.245,0.246-0.355,0.993-0.365,1.34-0.018,0.42,0.447,1.258,0.32,1.658-0.072,0.247-0.477,0.666-0.72,0.703-0.345,0.063-0.965-0.448-1.285-0.62-0.318-0.174-0.875-0.729-1.238-0.758-0.339-0.035-0.976,0.302-1.241,0.503-0.173,0.118-0.327,0.584-0.519,0.655-0.346,0.128-1.202,0.02-1.438-0.254-0.283-0.33,0.062-1.304-0.064-1.704-0.146-0.449-0.748-1.204-1.058-1.552-0.219-0.226-0.821-0.527-0.983-0.791-0.202-0.311-0.247-1.084-0.385-1.431-0.146-0.346-0.436-1.131-0.754-1.34-0.273-0.173-0.968-0.1-1.286-0.091-0.439,0.011-1.295,0.273-1.721,0.236-0.522-0.055-1.541-0.364-1.942-0.683-0.392-0.301-0.748-1.304-1.104-1.64-0.326-0.31-1.092-0.804-1.521-0.921-0.455-0.128-1.449-0.173-1.885,0-0.257,0.101-0.574,0.611-0.803,0.756-0.182,0.129-0.601,0.456-0.803,0.364-0.19-0.091-0.256-0.592-0.235-0.801,0.036-0.447,0.61-1.186,0.765-1.604,0.182-0.548,0.527-1.695,0.518-2.276-0.008-0.476-0.507-1.342-0.48-1.807,0.019-0.327,0.364-0.902,0.48-1.202,0.111-0.29,0.459-0.856,0.439-1.167-0.009-0.162-0.155-0.563-0.319-0.602-0.236-0.044-0.575,0.457-0.764,0.602-0.302,0.257-1.003,0.667-1.205,1.002-0.218,0.384-0.245,1.295-0.317,1.724-0.091,0.602-0.064,1.859-0.32,2.405-0.3,0.637-1.294,1.75-1.922,2.086-0.593,0.319-1.984,0.574-2.644,0.438-0.619-0.137-1.53-1.175-2.123-1.403-0.482-0.181-1.522-0.309-2.04-0.319-0.475-0.008-1.477-0.008-1.887,0.238-0.192,0.119-0.445,0.547-0.52,0.764-0.135,0.439,0.083,1.396-0.037,1.842-0.081,0.319-0.381,0.949-0.636,1.157-0.357,0.301-1.305,0.529-1.769,0.601-0.812,0.146-2.479,0.193-3.28,0.047-0.921-0.163-2.553-1.284-3.49-1.366-0.684-0.055-2.004,0.463-2.679,0.564-0.484,0.073-1.44,0.172-1.923,0.153-0.721-0.017-2.124-0.454-2.843-0.391-0.467,0.028-1.35,0.345-1.77,0.556-0.446,0.228-1.174,1.002-1.639,1.203-0.446,0.191-1.432,0.354-1.923,0.365-0.855,0.008-2.543-0.503-3.399-0.53-0.765-0.017-2.322,0.047-3.053,0.283-0.501,0.166-1.467,0.702-1.841,1.085-0.282,0.293-0.692,1.038-0.803,1.44-0.09,0.381,0.156,1.23,0,1.603-0.073,0.191-0.364,0.521-0.555,0.601-0.366,0.156-1.222,0.12-1.604,0-0.545-0.171-1.394-1.011-1.876-1.32-1.048-0.686-3.161-2.021-4.293-2.561-1.255-0.619-3.854-1.658-5.203-2.006-0.994-0.263-3.035-0.428-4.045-0.6-0.739-0.128-2.241-0.265-2.925-0.565-0.512-0.218-1.559-0.82-1.805-1.32-0.182-0.373-0.108-1.295,0.046-1.678,0.217-0.565,1.292-1.284,1.595-1.804,0.2-0.356,0.52-1.122,0.527-1.522,0-0.447-0.218-1.367-0.527-1.686-0.274-0.272-1.094-0.482-1.479-0.482-0.472,0.01-1.338,0.528-1.802,0.647-0.72,0.163-2.188,0.428-2.927,0.354-0.665-0.063-1.958-0.52-2.558-0.839-0.604-0.317-1.741-1.146-2.162-1.686-0.418-0.519-0.665-1.922-1.12-2.395-0.302-0.312-1.104-0.713-1.522-0.805-0.556-0.127-1.722,0.166-2.286,0.083-0.594-0.101-1.725-0.511-2.242-0.812-0.703-0.392-1.859-1.53-2.488-2.041-0.519-0.419-1.477-1.394-2.077-1.678-0.346-0.163-1.103-0.289-1.485-0.281-0.309,0.011-0.984,0.065-1.202,0.281-0.209,0.203-0.209,0.84-0.273,1.122-0.091,0.328-0.138,1.066-0.364,1.321-0.329,0.364-1.322,0.665-1.806,0.72-0.701,0.083-2.131-0.191-2.797-0.438-0.639-0.236-1.831-0.946-2.288-1.449-0.245-0.266-0.636-0.92-0.684-1.276-0.046-0.417,0.184-1.311,0.446-1.639,0.349-0.455,1.479-0.892,1.998-1.12,0.672-0.301,2.076-0.811,2.807-0.886,0.599-0.063,1.812,0.139,2.403,0.237,0.521,0.092,1.522,0.458,2.043,0.52,0.993,0.129,3.053,0.31,4.008,0,0.757-0.245,2.051-1.295,2.599-1.876,0.365-0.394,0.701-1.477,1.119-1.806,0.266-0.199,0.957-0.244,1.24-0.399,0.392-0.22,1.259-0.72,1.368-1.158,0.154-0.64-0.647-1.877-0.968-2.45-0.428-0.793-1.411-2.353-2.112-2.915-0.63-0.513-2.181-1.121-2.974-1.286-0.718-0.155-2.22,0-2.958,0-0.875,0-2.636,0.127-3.482-0.036-0.828-0.166-2.396-0.83-3.126-1.249-0.657-0.364-1.567-1.186-2.415-1.896l3.135-1.467,0.574-1.148c0.91,0.4,1.905,0.792,2.552,0.983,1.285,0.401,3.946,0.866,5.285,1.049,1.065,0.146,3.208,0.319,4.283,0.319,1.539-0.01,4.594-0.401,6.132-0.519,1.195-0.102,3.609-0.5,4.801-0.365,0.74,0.091,2.162,0.628,2.847,0.92,0.827,0.364,2.377,1.322,3.17,1.767,0.526,0.302,1.55,1.003,2.113,1.241,0.683,0.283,2.115,0.729,2.844,0.764,0.738,0.027,2.159-0.428,2.889-0.48,0.682-0.057,2.058,0.153,2.724,0,0.603-0.148,1.76-0.685,2.205-1.122,0.255-0.264,0.647-0.957,0.674-1.322,0.028-0.463-0.272-1.475-0.637-1.767-0.364-0.283-1.386-0.294-1.842-0.236-0.52,0.054-1.512,0.445-1.967,0.719-0.318,0.191-0.839,0.756-1.121,1.003-0.255,0.217-0.72,0.766-1.038,0.883-0.53,0.191-1.696,0.119-2.244,0-0.28-0.063-0.873-0.245-1.046-0.482-0.238-0.356,0.045-1.321-0.119-1.721-0.1-0.258-0.531-0.612-0.674-0.841-0.247-0.383-0.884-1.166-0.802-1.603,0.073-0.411,0.984-0.792,1.237-1.121,0.448-0.573,1.241-1.85,1.359-2.562,0.117-0.691,0.008-2.205-0.401-2.769-0.327-0.457-1.576-0.657-1.995-1.039-0.22-0.201-0.457-0.765-0.638-1.002-0.201-0.248-0.601-0.768-0.884-0.885-0.246-0.09-0.803-0.09-1.04,0-0.346,0.127-0.856,0.683-1.13,0.919-0.392,0.365-1.03,1.305-1.521,1.521-0.501,0.238-1.667,0.01-2.206,0.167-0.455,0.135-1.291,0.619-1.677,0.92-0.317,0.245-0.737,0.954-1.073,1.156-0.348,0.209-1.149,0.557-1.531,0.446-0.247-0.074-0.565-0.528-0.685-0.764-0.272-0.575-0.181-1.926-0.4-2.525-0.173-0.491-0.702-1.431-1.074-1.795-0.593-0.593-2.115-1.321-2.845-1.724-0.728-0.408-2.314-1.001-2.97-1.521-0.156-0.127-0.338-0.337-0.527-0.565l1.239-0.866-3.556-6.414,6.944-1.331,2.278,3.152,4.374-3.097,0.19-2.615,2.188-2.323,3.198-2.781,6.414,4.093-0.218-5.267,4.384,0.026,2.132,2.242,4.327-0.638-1.147-3.654,4.857-0.065,2.406,2.435,3.9-1.678,1.657,4.939,17.523-3.7-2.286-2.76-6.007,0.081,0.164-1.604,9.769-3.242,0.083-2.689-3.683-1.52,1.795-2.881,4.248,1.878,3.608-4.64-7.209-4.812-3.927-4.966,3.891-7.49,6.36-0.237,4.045-2.604-2.113-5.085-0.209-4.246,2.241-2.159-1.357-4.256-3.691-0.237-3.034-7.765,2.314-1.365,2.889,5.686,4.528,0.081-2.567-9.375-3.254-6.325c0.381,0.072,0.747,0.139,1.012,0.165,0.81,0.062,2.45-0.264,3.242-0.129,0.729,0.129,2.18,0.602,2.725,1.084,0.284,0.246,0.493,0.993,0.721,1.285,0.565,0.692,1.979,1.813,2.688,2.361,0.364,0.281,1.12,0.81,1.521,1.038,0.455,0.266,1.402,0.674,1.875,0.885,0.594,0.264,1.733,0.893,2.363,1.038,0.301,0.073,0.929,0.165,1.212,0.046,0.289-0.129,0.71-0.666,0.838-0.967,0.1-0.236-0.027-0.8,0.082-1.039,0.12-0.254,0.793-0.802,0.793-0.802l9.212-0.199,0.883-0.801-0.684-4.722s1.247-0.166,1.65-0.282c0.347-0.109,1.021-0.456,1.358-0.604,0.464-0.208,1.349-0.728,1.84-0.836,0.365-0.091,1.147-0.202,1.486-0.046,0.263,0.126,0.572,0.674,0.719,0.92,0.165,0.292,0.528,0.911,0.519,1.238,0,0.302-0.3,0.849-0.48,1.086-0.193,0.265-0.893,0.527-1.004,0.848-0.092,0.263,0.218,0.827,0.247,1.119,0.027,0.374,0.009,1.139-0.047,1.521-0.054,0.403-0.264,1.212-0.391,1.596-0.128,0.364-0.602,1.403-0.602,1.403l1.039,1.887,14.542-0.602,7.729-2.645,1.676,1.268c0.038,0.092,0.074,0.173,0.093,0.257,0.18,0.563,0.573,1.767,0.427,2.351-0.101,0.391-0.846,0.901-1.012,1.274-0.265,0.622-0.555,2.024-0.375,2.671,0.146,0.527,1.004,1.321,1.387,1.713,0.301,0.292,1.083,0.701,1.285,1.066,0.338,0.63,0.282,2.114,0.319,2.833,0.056,1.104,0.255,3.363-0.055,4.429-0.265,0.93-1.597,2.443-2.023,3.309-0.347,0.71-0.857,2.207-1.12,2.943-0.22,0.583-0.466,1.822-0.812,2.351-0.482,0.739-1.951,1.813-2.607,2.397-0.756,0.663-2.432,1.831-3.051,2.622-0.63,0.796-1.486,2.68-1.86,3.628-0.408,1.021-0.938,3.162-1.239,4.219-0.227,0.811-0.499,2.514-0.902,3.255-0.435,0.81-1.676,2.222-2.404,2.777-0.61,0.474-2.135,0.92-2.778,1.34-0.638,0.409-1.934,1.319-2.344,1.979-0.301,0.464-0.527,1.575-0.592,2.133-0.09,0.763,0.309,2.351,0.109,3.097-0.136,0.512-0.867,1.341-1.121,1.813-0.265,0.475-0.819,1.44-0.91,1.977-0.119,0.649,0.235,1.96,0.217,2.615-0.025,0.639-0.209,1.904-0.372,2.506-0.146,0.512-0.429,1.567-0.813,1.933-0.291,0.283-1.13,0.519-1.548,0.582-0.847,0.12-2.552-0.209-3.407-0.265-0.71-0.044-2.142-0.299-2.834-0.163-0.805,0.155-2.197,1.057-2.935,1.387-0.574,0.264-1.786,0.654-2.299,1.02-0.572,0.4-1.476,1.485-1.92,2.031-0.338,0.402-0.93,1.276-1.231,1.706-0.228,0.318-1.04,0.91-0.911,1.284,0.146,0.383,1.194,0.374,1.603,0.429,0.503,0.063,1.532,0.099,2.033,0,0.611-0.139,1.767-0.686,2.297-1.022,0.583-0.364,1.502-1.431,2.088-1.813,0.627-0.418,1.994-1.085,2.714-1.328,0.593-0.209,1.831-0.557,2.461-0.538,0.409,0.008,1.212,0.282,1.603,0.426,0.483,0.175,1.376,0.712,1.868,0.857,0.393,0.111,1.205,0.266,1.604,0.208,0.674-0.097,1.978-0.672,2.506-1.12,0.392-0.326,1.047-1.2,1.12-1.712,0.065-0.437-0.482-1.257-0.528-1.703-0.063-0.564-0.026-1.713,0.153-2.241,0.185-0.558,0.967-1.485,1.287-1.978,0.491-0.775,1.65-2.24,1.977-3.1,0.374-0.983,0.412-3.134,0.639-4.163,0.229-1.048,0.675-3.172,1.175-4.119,0.429-0.801,1.668-2.16,2.352-2.771,0.556-0.511,1.95-1.201,2.506-1.714,0.582-0.536,1.741-1.712,2.031-2.452,0.228-0.581,0.083-1.885,0.155-2.514,0.09-0.683,0.173-2.131,0.538-2.723,0.318-0.512,1.376-1.223,1.921-1.497,0.42-0.209,1.432-0.209,1.814-0.482,0.629-0.437,1.258-1.939,1.714-2.56,0.655-0.894,2.233-2.497,2.771-3.472,0.538-0.948,1.221-3.054,1.503-4.109,0.246-0.939,0.284-2.934,0.639-3.846,0.338-0.849,1.312-2.479,2.031-3.045,0.61-0.481,2.16-0.956,2.935-1.064,0.711-0.109,2.16,0.182,2.88,0.163,0.6-0.019,1.867,0.019,2.406-0.272,0.29-0.155,0.738-0.702,0.854-1.012,0.174-0.464,0.282-1.542,0.056-1.979-0.126-0.234-0.647-0.509-0.91-0.592-0.256-0.073-0.813-0.063-1.067,0-0.529,0.153-1.404,0.893-1.868,1.186-0.429,0.255-1.23,0.875-1.713,1.012-0.511,0.136-1.615,0.107-2.133,0-0.372-0.073-1.119-0.321-1.394-0.586-0.273-0.282-0.61-1.056-0.638-1.447-0.037-0.656,0.491-1.906,0.746-2.505,0.32-0.748,0.957-2.342,1.604-2.836,0.491-0.373,1.786-0.508,2.405-0.583,0.857-0.109,2.598,0,3.462,0,1.224,0,3.655,0.075,4.867,0,0.408-0.026,1.028-0.063,1.648-0.119l2.233,2.617-2.078,2.561,4.483,8.447,7.928-0.438,0.482-3.563,2.763,0.119-0.073,3.93,3.017,0.671,0.091,2.489-3.034,0.92,2.487,12.412s0.547,1.247,0.909,1.549c0.365,0.291,1.369,0.383,1.642,0.709,0.366,0.411,0.548,1.578,0.729,2.116,0.274,0.757,0.548,2.314,0.73,3.07,0.273,0.61,0.637,1.851,1.093,2.369,0.183,0.256,0.729,0.556,0.912,0.802,0.181,0.301,0.363,1.039,0.546,1.368,0.183,0.336,0.638,0.974,0.912,1.247,0.455,0.483,1.456,1.239,2.004,1.659,0.548,0.446,1.457,1.475,2.094,1.784,0.275,0.129,0.823,0.237,1.096,0.274,0.364,0.036,1.094-0.156,1.457,0,0.273,0.128,0.64,0.719,0.821,0.976,0.273,0.41,0.819,1.294,1.184,1.704,0.273,0.445,1.094,1.284,1.457,1.713,0.274,0.347,1.004,0.939,1.185,1.375,0,0.119,0,0.409-0.092,0.493-0.271,0.21-1.093-0.291-1.274-0.028-0.183,0.22,0.273,0.757,0.365,0.974,0.272,0.337,0.82,0.859,1.094,1.178,0.272,0.374,0.729,1.158,1.001,1.576,0.093,0.228,0.458,0.729,0.367,0.956-0.185,0.319-1.096,0.274-1.368,0.364-0.364,0.073-0.912,0.165-1.185,0.293-0.273,0.107-0.729,0.355-0.822,0.602-0.182,0.354,0.275,1.102,0.366,1.484,0.091,0.328,0.091,1.013,0.183,1.349,0.093,0.365,0.364,1.049,0.456,1.412,0.09,0.256,0.272,0.83,0.09,1.039-0.09,0.201-0.638,0.174-0.911,0.211-0.272,0.053-1.094-0.146-1.275,0.108-0.183,0.274,0.364,0.912,0.456,1.23,0,0.19,0.182,0.619,0.091,0.793-0.183,0.245-0.82,0.392-1.093,0.49-0.455,0.146-1.366,0.283-1.824,0.385-0.546,0.11-1.548,0.326-2.003,0.454-0.366,0.083-1.186,0.101-1.366,0.373-0.186,0.218-0.093,0.848-0.093,1.139v1.333c0.093,0.235,0.182,0.809,0.365,0.91,0.181,0.084,0.546-0.281,0.729-0.336,0.273-0.073,0.911-0.256,1.185-0.102,0.184,0.082,0.273,0.512,0.364,0.674,0.183,0.21,0.365,0.684,0.639,0.793,0.364,0.146,1.184-0.109,1.55-0.1,0.364,0.019,1.275,0,1.548,0.218,0.272,0.138,0.456,0.629,0.545,0.866,0.184,0.327,0.275,1.021,0.366,1.377,0.091,0.501,0.275,1.558,0.091,2.04-0.091,0.328-0.546,0.831-0.819,1.084-0.273,0.265-0.819,0.667-1.095,0.957-0.091,0.163-0.271,0.529-0.271,0.72-0.091,0.302,0.091,0.921,0.181,1.203,0.091,0.302,0.456,0.921,0.73,1.039,0.272,0.109,0.911-0.045,1.093-0.2,0.182-0.128,0.273-0.766,0.547-0.793,0.455-0.063,1,0.856,1.366,1.193,0.364,0.428,0.912,1.403,1.277,1.841,0.273,0.355,0.818,1.158,1.274,1.33,0.364,0.146,1.186-0.018,1.549-0.126,0.638-0.165,1.731-0.976,2.368-1.158,0.366-0.1,1.186-0.318,1.552-0.154,0.271,0.154,0.636,0.919,0.818,1.276,0.275,0.71,0.275,2.342,0.729,3.006,0.182,0.329,0.819,0.82,1.186,1.002,0.638,0.346,2.186,0.501,2.916,0.757,0.637,0.255,2.003,0.847,2.641,1.283,0.548,0.403,1.55,1.414,1.915,2.005,0.271,0.402,0.637,1.331,0.729,1.796,0.365,1.148,0.819,3.518,1.095,4.684,0.09,0.721,0.818,2.205,0.545,2.889-0.183,0.376-1.094,0.546-1.368,0.883-0.18,0.349-0.271,1.232-0.271,1.642,0.092,0.593,0.637,1.678,0.911,2.204,0.4,0.4,0.9,1.35,1.3,1.66","name":"Херсонська область"},"68":{"path":"M548.83,388l-1.44,2.969-3.563-1.247-2.761,4.164-4.565-2.241-4.091-1.084-3.96-0.56-0.082,1.676h-1.038l-5.21,2.32s-0.374,0.957-0.365,1.285c0.018,0.446,0.593,1.24,0.602,1.677,0.009,0.446-0.464,1.248-0.519,1.686-0.055,0.473,0.355,1.477,0.118,1.885-0.128,0.209-0.884,0.438-0.884,0.438l-5.887,5.768s-0.528,6.369-0.474,8.493c0.055,2.123,0.484,6.368,0.921,8.454,0.309,1.486,1.803,5.805,1.803,5.805l-2.725,1.76,0.638,4.483s0.072,2.014,0.082,2.687c0,0.757-0.208,2.288-0.082,3.044,0.137,0.819,0.866,2.341,1.158,3.125,0.208,0.565,0.61,1.604,0.883,2.313-0.401,0.029-0.829,0-1.058-0.036-0.537-0.081-1.43-0.775-1.921-1.011-0.712-0.355-2.106-1.166-2.881-1.339-0.409-0.082-1.267-0.129-1.658,0-0.301,0.101-0.711,0.674-1.013,0.757-0.482,0.117-1.521-0.476-1.976-0.274-0.356,0.154-0.656,0.947-0.856,1.285-0.174,0.292-0.374,1.011-0.638,1.23-0.337,0.264-1.23,0.528-1.659,0.472-0.684-0.072-1.731-1.156-2.405-1.33-0.528-0.135-1.64-0.027-2.188,0-0.601,0.028-1.832,0.01-2.406,0.21-0.509,0.182-1.357,0.92-1.813,1.229-0.265,0.183-0.757,0.658-1.066,0.748-0.437,0.127-1.476,0.201-1.813-0.109-0.301-0.273,0.009-1.302-0.274-1.595-0.309-0.327-1.311-0.354-1.757-0.382-0.438-0.018-1.341,0.346-1.758,0.218-0.466-0.145-1.013-1.066-1.451-1.283-0.555-0.284-1.84-0.656-2.449-0.529-0.502,0.101-1.213,0.938-1.66,1.176-0.401,0.21-1.257,0.537-1.704,0.637-0.62,0.136-1.904,0.393-2.515,0.21-0.438-0.128-1.148-0.766-1.44-1.12-0.328-0.401-0.492-1.549-0.912-1.868-0.638-0.484-2.351-0.565-3.143-0.583-0.748-0.018-2.251,0.091-2.943,0.374-0.357,0.137-0.894,0.719-1.222,0.902-0.32,0.182-0.995,0.473-1.34,0.593-0.729,0.237-2.414,0.135-2.988,0.637-0.32,0.273-0.429,1.167-0.593,1.55-0.255,0.609-0.72,1.877-1.121,2.405-0.456,0.612-1.576,1.751-2.296,2.033-0.565,0.219-1.868,0.246-2.452,0.045-0.773-0.245-1.94-1.458-2.568-1.968-0.72-0.601-1.996-2.023-2.825-2.459-0.603-0.321-1.941-0.649-2.616-0.694-0.165-0.009-0.356-0.009-0.574,0-0.675-0.848-1.531-1.941-1.941-2.442-0.748-0.93-2.47-2.633-3.044-3.689-0.354-0.658-0.665-2.134-0.883-2.844-0.201-0.655-0.428-2.059-0.794-2.643-0.2-0.302-0.928-0.639-1.083-0.958-0.237-0.509,0.1-1.712-0.083-2.241-0.154-0.446-0.875-1.129-1.12-1.521-0.528-0.846-1.595-2.57-1.842-3.526-0.336-1.285-0.163-3.963-0.163-5.285,0.008-1.122,0.182-3.372,0.163-4.492-0.017-1.094-0.481-3.29-0.282-4.365,0.101-0.528,0.856-1.422,0.921-1.96,0.074-0.611-0.173-1.876-0.483-2.405-0.218-0.383-1.148-0.766-1.357-1.166-0.383-0.703-0.456-2.396-0.401-3.198,0.055-0.812,0.482-2.424,0.838-3.163,0.319-0.655,1.294-1.75,1.722-2.324,0.356-0.473,1.212-1.331,1.403-1.886,0.2-0.575,0.063-1.832,0.082-2.442,0.046-1.34,0.274-4.028,0.201-5.367-0.073-1.313-0.711-3.891-0.802-5.204-0.082-1.167-0.328-3.572,0.036-4.684,0.191-0.564,1.003-1.486,1.403-1.932,0.364-0.393,1.249-1.039,1.604-1.439,0.328-0.365,0.993-1.131,1.166-1.604,0.301-0.829,0.374-2.643,0.238-3.517-0.146-0.939-1.149-2.606-1.367-3.526-0.238-1.039-0.365-3.18-0.355-4.247,0.009-1.049,0.419-3.117,0.438-4.165,0.018-1.057-0.192-3.162-0.32-4.21-0.092-0.729-0.337-2.195-0.483-2.915-0.183-0.93-0.693-2.753-0.838-3.692-0.1-0.665-0.456-2.059-0.201-2.679,0.192-0.473,1.103-1.075,1.522-1.367,0.364-0.246,1.322-0.428,1.558-0.801,0.248-0.356,0.018-1.304,0.128-1.713,0.164-0.647,0.729-1.869,1.121-2.406,0.273-0.384,1.121-0.885,1.358-1.286,0.255-0.428,0.474-1.431,0.482-1.923,0.019-0.828-0.382-2.46-0.646-3.244-0.165-0.519-0.729-1.448-0.912-1.958-0.356-0.984-0.984-3.007-1.048-4.047-0.045-0.828,0.419-2.46,0.446-3.288,0.018-0.748,0.009-2.278-0.201-2.998-0.209-0.711-1.066-1.941-1.448-2.57-0.411-0.684-1.403-1.959-1.758-2.679-0.247-0.511-0.621-1.604-0.72-2.169-0.119-0.656-0.073-2.004-0.119-2.679-0.026-0.354-0.227-1.093-0.127-1.439,0.182-0.574,1.249-1.322,1.531-1.84,0.218-0.42,0.438-1.35,0.556-1.805,0.155-0.62,0.483-2.487,0.483-2.487l4.446,0.081,0.675-2.76,0.565-2.324-2.242-1.558,1.076-4.129,3.289-0.802-0.365-2.087-3.28-1.075,0.064-1.402c1.303-0.275,3.363-0.748,4.165-1.167,1.056-0.537,2.778-2.224,3.635-3.043,0.885-0.837,2.415-2.743,3.308-3.572,0.501-0.465,1.503-1.458,2.141-1.712,0.447-0.173,1.44-0.101,1.924-0.155,0.792-0.1,2.405-0.246,3.143-0.538,1.048-0.419,2.871-1.795,3.746-2.507,0.737-0.601,2.177-1.885,2.725-2.677,0.373-0.548,0.664-1.916,1.065-2.452,0.52-0.71,1.987-1.73,2.671-2.295,0.983-0.821,2.787-2.799,4-3.208,0.355-0.119,1.175,0.246,1.495,0.055,0.318-0.183,0.555-0.948,0.691-1.275,0.357-0.839,0.867-2.598,1.076-3.472,0.146-0.647,0.118-2.032,0.428-2.625,0.254-0.491,1.103-1.303,1.604-1.548,0.638-0.311,2.114-0.374,2.824-0.364,0.43,0,1.349,0.492,1.714,0.263,0.392-0.254,0.528-1.822,0.528-1.822l3.737-2.078,4.438,2.78,2.133-2.197,3.899-0.154,1.066-2.671,3.153-1.175,1.604,4.329,3.198,0.155,0.21-0.1,0.145,0.264,2.278,2.524,1.887,0.273,0.756,1.204-0.282,2.124-4.92,9.175,6.005,2.524,0.118,2.324,1.003,0.155,4.482,4.684,0.046,3.326,5.122,2.324,0.483,2.359,3.161,0.127,0.246-2.642,1.878,0.037,1.567,5.486,1.64,2.605,1.44,0.201-0.401,3.043-3.845-0.565-0.519,7.372,3.926,2.36-3.882,3.573-3.527-1.003-2.487,0.794,3.044,5.248-3.846,8.575,2.89,1.485,0.082,2.597,8.528,7.217,0.356,5.485,5.122-1.54,0.847,3.453-2.998,1.486-0.602,4.045,3.518,1.486-0.52,1.403-2.561-0.127-4.566,6.853,3.163,1.604-0.239,5.204-3.244,1.803,1.677,3.246,4.492,0.555,1.321,3.006-3.69,2.489,2.287,4.118-0.72,3.773-0.164,7.043,3.78,1.53z","name":"Хмельницька область"},"71":{"path":"M834.27,303.92l-0.938,0.136-0.667,6.06,1.414,1.758,4.702,0.22,1.393,2.05-0.399,6.679,2.697,1.065,0.427,5.231-3.015,2.515,6.533,9.021,1.603-0.875,4.676,3.918,0.11,2.269-0.622,1.121,0.886,2.005,3.471,0.984,5.067,1.021-0.21,3.024c-0.063-0.062-0.128-0.108-0.182-0.144-0.292-0.146-0.986-0.174-1.286-0.055-0.463,0.191-1.102,1.038-1.384,1.449-0.355,0.5-0.903,1.603-1.066,2.187-0.2,0.674-0.565,2.115-0.328,2.779,0.166,0.429,1.094,0.884,1.34,1.277,0.327,0.527,0.656,1.74,0.745,2.351,0.11,0.756,0.11,2.305-0.053,3.043-0.118,0.519-0.711,1.421-0.858,1.922-0.198,0.738-0.382,2.278-0.371,3.043,0.009,0.83,0.136,2.516,0.482,3.263,0.31,0.655,1.411,1.667,1.921,2.187,0.486,0.483,1.805,1.175,2.032,1.813,0.137,0.4-0.117,1.266-0.273,1.658-0.126,0.348-0.5,1.011-0.801,1.231-0.565,0.418-2.014,0.72-2.716,0.802-0.737,0.082-2.25,0.09-2.943-0.164-0.902-0.337-2.242-1.814-3.042-2.352-1.113-0.739-3.546-1.896-4.647-2.67-1.386-0.985-3.873-3.335-5.176-4.428-0.867-0.729-2.563-2.224-3.473-2.889-0.848-0.61-2.533-1.923-3.526-2.242-0.93-0.3-2.926-0.146-3.893-0.21-0.847-0.054-2.559-0.045-3.37-0.272-0.909-0.257-2.604-1.14-3.362-1.705-0.794-0.583-1.939-2.241-2.723-2.834-1.096-0.811-3.656-1.859-4.859-2.506-1.411-0.755-4.173-2.386-5.613-3.097-1.12-0.556-3.381-1.695-4.592-2.033-1.037-0.282-3.191-0.501-4.264-0.529-0.793-0.026-2.378,0.084-3.154,0.21-0.528,0.083-1.804,0.083-2.078,0.538-0.246,0.383,0.183,1.349,0.366,1.758,0.283,0.63,1.074,1.795,1.603,2.241,0.794,0.675,2.79,1.386,3.737,1.814,0.692,0.32,2.096,0.865,2.778,1.185,0.92,0.418,2.753,1.312,3.636,1.813,1.057,0.593,3.116,1.904,4.11,2.615,1.156,0.821,3.389,2.561,4.437,3.526,0.775,0.729,2.188,2.334,2.881,3.145,1.002,1.185,2.806,3.709,3.846,4.866,0.854,0.956,2.67,2.824,3.682,3.626,1.047,0.83,3.343,2.225,4.536,2.835,1.341,0.674,4.166,1.695,5.559,2.242,1.021,0.401,3.108,1.11,4.111,1.548,1.374,0.602,4.08,1.922,5.394,2.669,1.421,0.812,4.145,2.652,5.494,3.581,0.857,0.576,2.56,1.76,3.363,2.398,1.312,1.047,3.891,3.198,5.029,4.436,0.894,0.976,2.442,3.145,3.146,4.267,0.382,0.61,0.781,2.068,1.338,2.515,0.394,0.31,1.423,0.536,1.922,0.536,0.347-0.008,0.931-0.291,1.377-0.447l-0.737,5.761,3.609,5.32-10.938,1.004-2.168-2.926-1.395,2.123-4.291-0.319-1.158-3.799-1.402,1.959-3.327,2.642-3.125-9.048-2.68,2.323-3.809-2.643-0.081-2.688-9.048,1.886-2.444,9.331-4.044,1.758s0.673,0.767,0.919,1.003c0.247,0.246,0.975,0.574,1.048,0.92,0.064,0.338-0.418,0.947-0.601,1.24-0.138,0.208-0.419,0.665-0.646,0.765-0.328,0.146-1.095,0.056-1.439-0.045-0.521-0.145-1.376-0.874-1.888-1.075-0.482-0.201-1.513-0.492-2.032-0.519-0.619-0.036-1.895,0.1-2.451,0.355-0.399,0.183-0.93,0.966-1.322,1.167-0.326,0.154-1.1,0.136-1.439,0.273-0.455,0.191-1.302,0.766-1.639,1.13-0.348,0.355-0.712,1.312-1.038,1.676-0.283,0.319-0.912,1.002-1.33,1.039-0.247,0.027-0.684-0.281-0.875-0.437-0.165-0.128-0.476-0.438-0.529-0.637-0.063-0.301,0.256-0.904,0.282-1.205,0.027-0.273,0.082-0.837-0.036-1.083-0.137-0.283-0.712-0.611-0.966-0.802-0.392-0.3-1.23-0.866-1.643-1.158-0.318-0.227-0.965-0.683-1.282-0.92-0.273-0.209-0.749-0.783-1.076-0.883-0.419-0.128-1.34,0.044-1.768,0.154-0.465,0.127-1.332,0.575-1.759,0.811-0.639,0.347-1.813,1.23-2.442,1.594-0.382,0.229-1.139,0.702-1.559,0.803-0.327,0.082-1.03,0.155-1.32,0-0.301-0.146-0.51-0.919-0.802-1.084-0.437-0.228-1.476-0.119-1.969-0.072-0.538,0.045-1.576,0.473-2.124,0.436-0.3-0.017-0.873-0.291-1.155-0.4-0.292-0.109-0.849-0.429-1.168-0.438-0.42-0.008-1.212,0.356-1.594,0.52-0.291,0.119-0.912,0.328-1.12,0.555-0.247,0.255-0.53,0.939-0.565,1.285-0.036,0.384,0.209,1.149,0.318,1.522,0.145,0.501,0.556,1.467,0.719,1.959,0.192,0.565,0.566,1.705,0.685,2.287,0.1,0.556,0.181,1.676,0.2,2.242,0.009,0.33,0.091,1.02-0.048,1.322-0.197,0.491-1.037,1.22-1.475,1.522-0.345,0.245-1.147,0.583-1.558,0.682-0.574,0.138-1.776,0.092-2.368,0.165-0.503,0.055-1.576,0.082-2.006,0.355-0.265,0.174-0.59,0.747-0.719,1.038-0.165,0.384-0.109,1.249-0.318,1.604-0.229,0.401-1.031,0.93-1.403,1.203-0.411,0.301-1.221,0.993-1.724,1.085-0.265,0.045-0.802-0.119-1.039-0.247-0.464-0.245-1.083-1.157-1.521-1.439-0.647-0.401-2.097-0.938-2.842-1.085-1.112-0.209-3.398-0.136-4.529-0.036-1.158,0.1-3.425,0.602-4.566,0.838-0.792,0.173-2.35,0.71-3.162,0.766-0.463,0.027-1.385-0.155-1.84-0.201-0.446-0.044-1.34-0.055-1.769-0.164-0.738-0.191-2.068-1.02-2.797-1.239-0.783-0.227-2.397-0.456-3.208-0.484-0.774-0.027-2.315,0.184-3.078,0.247-1.066,0.083-3.19,0.501-4.247,0.356-0.438-0.056-1.248-0.419-1.64-0.603-0.639-0.291-1.785-1.138-2.453-1.357-0.846-0.282-2.66-0.473-3.562-0.437-0.793,0.027-2.36,0.4-3.126,0.637-0.856,0.255-2.56,0.885-3.315,1.358-0.375,0.237-1.167,0.747-1.331,1.167-0.2,0.537,0.164,1.723,0.282,2.278,0.156,0.665,0.703,1.903,0.849,2.57,0.109,0.518,0.436,1.621,0.236,2.122-0.109,0.273-0.628,0.711-0.919,0.757-0.21,0.036-0.602-0.229-0.802-0.319-0.247-0.11-0.694-0.438-0.959-0.483-0.263-0.036-0.828,0.009-1.047,0.165-0.446,0.318-0.783,1.448-1.003,1.958-0.199,0.474-0.719,1.449-0.673,1.959,0.044,0.647,0.829,1.757,1.193,2.286,0.393,0.564,1.513,1.432,1.805,2.042,0.137,0.273,0.327,0.929,0.199,1.203-0.19,0.41-1.129,0.774-1.557,0.921-0.621,0.209-1.951,0.345-2.607,0.282-0.646-0.073-1.895-0.519-2.478-0.802-0.61-0.292-2.25-1.467-2.25-1.467l-13.669,10.598-4.774-2.644-5.314,6.543-1.229-5.505-1.122-0.664-4.983,1.676-0.255-2.104,2.351-1.869-1.385-4.811v-3.518l-1.496-0.856-1.175-2.515-0.164-2.288-6.46-5.13,3.098-2.934-9.395-9.832-0.374-7.737-1.494-0.592-4.921,2.834-1.914-4.273,5.495-3.791-1.011-4.063-2.889,0.218,0.055-6.57,3.152-1.659,3.791-3.892-3.043-8.064,2.506-0.392,2.779,3.963,6.306,1.094,1.996-1.968,0.482-4.593,1.45-1.148,0.819-4.647,5.076-2.377,3.645,0.355,3.327-0.802,5.803,0.046-0.2,5.886,9.613,2.242,0.921,1.805,3.563,0.037,0.283-1.195-1.805-5.048,3.09-1.768-1.649-3.199,1.767-0.847,3.964,4.046,0.521-0.802-1.287-2.041,6.689-2.679,1.048,0.118,1.677,1.358,1.038,0.046,0.164-0.72,1.287,0.2,4.164,3.599,5.933-1.522,6.44-3.48-1.557-3.49,0.081-1.841,5.687,0.246,0.557-1.285-1.157-2.124,7.527-7.008,2.961-4.127-1.395-2.324,5.559-7.845-0.839-2.89,0.119-5.485-1.275-1.922,0.874-7.573,1.64-1.723,7.701-2.159,0.392-6.17c0.51-0.456,1.166-1.356,1.649-1.677,0.338-0.236,1.102-0.656,1.514-0.646,0.573,0.027,1.62,0.629,2.003,1.048,0.773,0.829,1.641,3.043,1.841,4.164,0.265,1.422-0.155,4.329-0.319,5.759-0.1,0.976-0.499,2.889-0.637,3.855-0.092,0.657-0.501,2.005-0.319,2.642,0.183,0.639,1.049,1.878,1.675,2.078,0.74,0.237,2.397-0.282,2.972-0.801,0.665-0.603,1.013-2.506,1.277-3.364,0.282-0.92,0.765-2.661,0.964-3.854,0.247-0.182,0.493-0.374,0.612-0.492,0.409-0.402,1.002-1.404,1.439-1.769,0.329-0.264,1.074-0.856,1.504-0.802,0.436,0.056,1.085,0.812,1.275,1.203,0.199,0.393,0.19,1.303,0.181,1.741,0,0.428-0.327,1.312-0.207,1.73,0.079,0.292,0.755,0.957,0.755,0.957l6.826,0.165s0.456-1.147,0.564-1.549c0.09-0.336,0.027-1.121,0.263-1.384,0.184-0.21,0.795-0.219,1.05-0.319,0.292-0.119,0.982-0.282,1.12-0.565,0.129-0.273-0.255-0.875-0.245-1.175,0.019-0.465,0.364-1.33,0.537-1.758,0.209-0.52,0.675-1.548,0.983-2.005,0.257-0.364,1.205-1.311,1.205-1.311l2.059,0.19,1.229-5.795,7.097-3.446-1.574-0.456-2.86-2.74,0.292-2.132,2.133-2.087,4.165-9.769,3.097,2.324,2.562-4.22,0.956,0.483-0.018,0.127,4.564,7.007,6.516,1.567v1.467l0.01,0.003z","name":"Черкаська область"},"74":{"path":"M882.17,262.09l0.018,0.346-2.851,5.888-3.363,0.801-1.202,2.878-8.212,7.81-6.606,0.529-1.439-1.922-1.758-0.046v2.525l-9.131-0.438-0.885-4.766-6.214-0.047-2.241-1.675-4.283,3.799-4.565,5.73-2.324-1.885-2.687,1.368-5.97,0.154,4.292-6.771-3.764-0.036-4.493-7.244,7.856-4.093-2.242-2.241-6.37-1.039-0.684-4.811-6.005-2.242-4.328,3.645-0.601,1.969-7.089,0.355-1.394,1.404-1.086,1.203-2.77-1.167-3.482-0.355-3.727,0.519-3.726-0.483-4.119,0.365-3.928-0.046-3.163-3.399-1.485,0.52-1.273,0.483-0.282-1.33-0.685-1.394-0.082-1.322,2.359-0.328,1.368-0.438,0.362-1.722-0.801-3.363-0.601-3.125-0.801-0.484-0.649-0.437,0.611-1.203-0.245-1.076-1.723-1.403-1.888-1.521-0.117-1.167-0.838-1.003-1.158-0.118-3.289,1.084-4.246,1.039-4.721,0.565-2.523-0.118-1.923-1.249-0.2-1.558-0.847-0.329-2.043,0.365-2.078-0.838-3.526-0.52,2.16-4.044,2.241,1.522,1.048-0.566-0.164-4.365-0.838-2.806h-3.407l-1.441-0.875-2.479-6.607,0.521-5.367-1.121-0.73h-1.604l-1.522-0.026c0.174-0.885,0.593-2.013,0.802-2.652,0.256-0.776,1.067-2.233,1.194-3.043,0.155-0.894,0-2.717-0.154-3.608-0.238-1.321-1.64-3.782-1.604-5.121,0.019-0.575,0.683-1.604,0.802-2.169,0.117-0.548,0.273-1.686,0.163-2.241-0.172-0.813-0.912-2.397-1.521-2.962-0.093-0.073-0.21-0.155-0.347-0.227l0.538-2.325c0.072-0.01,0.136-0.037,0.182-0.063,0.4-0.283,0.274-1.604,0.693-1.868,0.409-0.255,1.439,0.237,1.922,0.156,0.375-0.056,1.112-0.329,1.386-0.585,0.374-0.354,0.93-1.347,0.911-1.868-0.027-0.528-1.104-1.292-1.076-1.812,0.038-0.538,1.104-1.213,1.286-1.713,0.181-0.474,0.201-1.522,0.164-2.032-0.063-0.922-0.492-2.752-0.802-3.627-0.271-0.757-1.148-2.133-1.439-2.888-0.2-0.501-0.538-1.542-0.593-2.078-0.082-0.802,0.219-2.405,0.219-3.208-0.009-0.829,0.028-2.533-0.273-3.307-0.292-0.766-1.594-1.887-1.977-2.625-0.283-0.556-0.656-1.776-0.748-2.397-0.219-1.603,0.009-4.856,0.164-6.461,0.074-0.729,0.62-2.168,0.483-2.887-0.109-0.565-1.02-1.414-1.175-1.97-0.155-0.574-0.201-1.803,0-2.351,0.146-0.419,0.738-1.156,1.121-1.394,0.418-0.255,1.43-0.438,1.921-0.419,0.447,0.009,1.268,0.529,1.713,0.473,0.348-0.037,0.994-0.428,1.222-0.691,0.419-0.484,0.755-1.777,0.911-2.406,0.246-1.003,0.246-3.099,0.482-4.11,0.255-1.121,1.048-3.271,1.496-4.325,0.5-1.194,1.502-3.616,2.295-4.645,0.866-1.138,3.271-2.775,4.265-3.793,0.792-0.802,2.096-2.668,2.943-3.417,0.956-0.856,3.398-1.938,4.273-2.884,0.529-0.576,1.232-2.007,1.549-2.724,0.302-0.706,0.838-2.173,0.902-2.937,0.056-0.547-0.418-1.66-0.264-2.188,0.108-0.383,0.656-1.054,1.012-1.229,0.545-0.26,1.803,0.008,2.406-0.05,1.038-0.108,3.07-0.628,4.109-0.751,0.93-0.11,2.807-0.284,3.735-0.214,0.712,0.054,2.15,0.276,2.78,0.59,0.554,0.27,1.393,1.214,1.867,1.601,0.618,0.498,1.74,1.752,2.516,1.922,0.602,0.133,1.858-0.242,2.396-0.533,0.464-0.245,1.138-1.064,1.494-1.44,0.611-0.643,1.705-2.023,2.305-2.673,0.666-0.729,1.885-2.391,2.771-2.829,0.884-0.435,2.917-0.467,3.899-0.481,1.313-0.019,3.937,0.258,5.231,0.481,0.538,0.092,1.566,0.415,2.086,0.534,1.969,0.45,5.924,1.223,7.901,1.602,1.867,0.355,5.594,1.104,7.479,1.335,1.222,0.147,3.692,0.138,4.911,0.32,0.693,0.103,2.051,0.436,2.726,0.64,0.466,0.142,1.578,0.274,1.813,0.695,0.19,0.341-0.299,1.157-0.263,1.549,0.044,0.509,0.364,1.53,0.691,1.92,0.319,0.375,1.24,0.813,1.703,0.961,0.483,0.151,1.486,0.26,1.979,0.215,0.557-0.051,1.586-0.542,2.142-0.64,0.426-0.079,1.322-0.134,1.759-0.109,0.437,0.029,1.286,0.247,1.713,0.321,0.41,0.072,1.247,0.381,1.658,0.267,0.229-0.067,0.564-0.466,0.736-0.641,0.613-0.598,1.651-1.961,2.251-2.563,0.903-0.904,3.063-2.353,3.848-3.363,0.473-0.616,1.021-2.089,1.385-2.778,0.282-0.552,0.647-1.863,1.175-2.189,0.383-0.237,1.395,0.113,1.813-0.054,0.318-0.126,0.931-0.575,1.012-0.907,0.128-0.483-0.482-1.416-0.693-1.87-0.272-0.597-1.167-1.649-1.273-2.296-0.13-0.721,0.243-2.192,0.471-2.885,0.268-0.785,1.323-2.138,1.551-2.937,0.102-0.36,0.073-1.121,0.109-1.496,0.074-0.667-0.036-2.133,0.373-2.669,0.346-0.452,1.531-0.792,2.076-0.907,0.804-0.167,2.452-0.013,3.264,0,0.992,0.014,2.998-0.15,3.955,0.105,1.084,0.291,2.988,1.552,3.956,2.136,1.027,0.631,2.932,2.158,3.997,2.724,0.797,0.423,2.472,1.175,3.364,1.335,0.584,0.104,1.768,0.004,2.353-0.054,0.808-0.082,2.395-0.49,3.205-0.587,1.096-0.132,3.317-0.32,4.43-0.267,0.592,0.028,1.758,0.319,2.351,0.375,0.556,0.049,1.688,0.16,2.243,0.053,0.91-0.18,2.596-1.057,3.416-1.495,1.104-0.586,3.18-1.975,4.22-2.671,0.819-0.551,2.441-1.668,3.206-2.298,0.82-0.675,2.161-2.423,3.09-2.937,0.737-0.401,2.434-0.731,3.262-0.8,0.984-0.079,2.964,0.246,3.956,0.322,1.094,0.083,3.28,0.251,4.374,0.319,0.298,0.019,0.682,0.041,1.102,0.066l-1.013,2.884-1.237,2.683-0.484,3.204-0.272,2.925-1.805,2.523-0.966,2.684,0.482,2.483,1.969,1.843,2.277,1.721,2.443,0.962,1.238,1.281,0.283,1.724,0.931,1.241,1.028,0.16,1.211,1.881-0.08,1.404-1.768,0.68h-1.605l-1.357,0.48-1.521-0.802-0.602-1.16-1.758,0.481-2.207,0.401-1.567,0.522,0.684,1.398,2.169,2.325,1.96,0.92,0.837,1.403,1.204,2.601-0.955,2.565-0.649,1.641-1.679-0.719-1.365-0.32-0.756,0.718-1.686-0.158-1.204-0.603-1.356-0.079-0.447,0.599,0.602,1.203-0.437,1.282-1.242,0.398-1.32-1.159-0.518-0.644-1.85,1.404-0.721,1.241,0.127,1.241-0.127,1.919-0.957,1.686-1.484,2.525-1.12,4.2,0.026,3.181,2.032,1.814,1.55,1.977,0.346,2.188,0.292,2.998,1.12,1.011,1.257,2.078,1.066,2.806,0.236,1.631-0.792,0.456-1.923-0.082-1.313,0.583,0.912,1.631,0.902,1.521,0.83,1.231-0.292,1.494-1.732,1.066-1.922,0.911-0.748,0.929,0.183,2.406,0.802,1.494,0.855,1.468,1.414,1.868-0.166,1.367-0.982,1.867-1.204,0.83-1.839-0.374-1.66-1.631-0.372-1.759-0.374-1.603-0.483-0.938-0.985-0.32-0.929,0.348-0.783,1.147,0.083,1.229,0.938,1.413,1.286,2.779,0.982,0.829,0.984,1.331-0.11,3.473,0.304,2.059-0.966,2.296-1.067,1.549-0.155,1.714-0.055,1.276-1.395,0.801-1.494,0.374-0.912,1.065,0.056,1.395,0.638,1.705-0.21,1.339-1.121,1.541-0.154,1.978v1.021l1.012,0.054,0.957-0.701,1.157,0.501,12.894,13.531,0.237,6.651-0.839,1.122-2.487-0.046,0.482,6.453-1.957,2.405,1.238,4.045,4.765,2.797-0.163,1.732-4.966-0.165-0.838,2.805-1.924,2.279,0.767,2.042-1.605,2.807-2.04,3.48,0.05,1.6z","name":"Чернігівська область"},"77":{"path":"M449.44,447.03c0.218-0.009,0.41-0.019,0.574,0,0.674,0.044,2.013,0.373,2.615,0.692,0.829,0.437,2.105,1.859,2.825,2.46,0.628,0.509,1.795,1.723,2.568,1.968,0.584,0.201,1.887,0.174,2.452-0.045,0.72-0.283,1.84-1.422,2.296-2.033,0.401-0.528,0.866-1.795,1.121-2.405,0.164-0.383,0.273-1.277,0.593-1.55,0.574-0.501,2.259-0.399,2.988-0.637,0.346-0.12,1.021-0.411,1.34-0.583,0.328-0.201,0.865-0.774,1.222-0.911,0.691-0.283,2.195-0.402,2.943-0.374,0.792,0.018,2.515,0.1,3.143,0.583,0.419,0.319,0.583,1.466,0.912,1.868,0.292,0.354,1.002,0.992,1.44,1.12,0.611,0.183,1.895-0.074,2.515-0.21,0.447-0.1,1.303-0.428,1.704-0.637,0.447-0.238,1.158-1.075,1.66-1.176,0.609-0.127,1.895,0.246,2.449,0.529,0.438,0.217,0.985,1.139,1.451,1.283,0.417,0.128,1.32-0.237,1.758-0.218,0.446,0.028,1.448,0.054,1.757,0.382,0.284,0.292-0.027,1.322,0.274,1.595,0.337,0.311,1.376,0.237,1.813,0.109,0.319-0.091,0.802-0.565,1.066-0.748,0.456-0.309,1.303-1.047,1.813-1.229,0.574-0.2,1.805-0.182,2.406-0.21,0.547-0.027,1.659-0.135,2.196,0,0.666,0.174,1.713,1.258,2.397,1.33,0.428,0.056,1.321-0.208,1.659-0.472,0.273-0.229,0.464-0.939,0.638-1.23,0.2-0.337,0.51-1.13,0.856-1.285,0.456-0.202,1.494,0.391,1.976,0.274,0.301-0.083,0.712-0.656,1.013-0.757,0.391-0.129,1.249-0.082,1.658,0,0.775,0.172,2.169,0.984,2.89,1.339,0.482,0.236,1.375,0.93,1.913,1.011,0.229,0.036,0.656,0.063,1.058,0.036,0.045,0.12,0.082,0.229,0.118,0.329,0.2,0.52,0.703,1.532,0.802,2.078,0.165,0.93-0.254,2.852-0.036,3.763,0.227,0.975,1.256,2.734,1.796,3.572,0.309,0.466,1.138,1.448,1.657,2.06-0.054,0.045-0.109,0.09-0.154,0.127-0.802,0.573-2.552,1.467-3.417,1.922-0.574,0.3-1.694,0.919-2.296,1.121-0.337,0.109-1.066,0.391-1.394,0.265-0.429-0.156-0.812-1.103-1.122-1.44-0.355-0.392-1.092-1.168-1.547-1.44-0.512-0.309-1.65-0.801-2.242-0.801-0.492-0.01-1.439,0.391-1.87,0.638-0.583,0.337-1.485,1.368-2.031,1.769-0.729,0.538-2.306,1.457-3.099,1.921-0.783,0.446-2.332,1.432-3.197,1.704-0.748,0.237-2.37,0.656-3.099,0.374-0.902-0.336-1.85-2.232-2.57-2.88-0.611-0.565-1.877-2.25-2.661-1.977-0.52,0.173-0.42,1.567-0.593,2.078-0.126,0.391-0.292,1.266-0.591,1.549-0.401,0.401-1.577,0.629-2.133,0.747-0.747,0.173-2.286,0.2-3.043,0.319-0.783,0.137-2.359,0.994-3.098,0.702-0.447-0.183-0.802-1.203-1.067-1.604-0.382-0.593-0.948-1.959-1.493-2.406-0.529-0.428-1.915-0.747-2.561-0.956-0.703-0.229-2.133-0.547-2.834-0.749-0.628-0.182-1.859-0.893-2.515-0.802-0.329,0.046-0.92,0.474-1.122,0.748-0.253,0.345-0.437,1.22-0.473,1.659-0.046,0.473-0.019,1.493,0.209,1.92,0.255,0.467,1.249,0.996,1.659,1.333,0.538,0.446,1.623,1.33,2.132,1.813,0.3,0.282,1.103,0.775,1.122,1.175,0.017,0.347-0.584,0.856-0.858,1.066-0.411,0.337-1.384,0.976-1.913,0.967-0.33-0.01-0.875-0.438-1.131-0.646-0.593-0.485-1.358-1.906-2.022-2.299-0.357-0.199-1.221-0.446-1.604-0.318-0.465,0.164-0.947,1.14-1.284,1.495-0.301,0.328-1.24,0.793-1.276,1.23-0.037,0.419,0.948,0.92,1.012,1.339,0.053,0.383-0.32,1.12-0.538,1.441-0.31,0.473-1.194,1.221-1.65,1.548-0.464,0.337-1.53,0.774-2.033,1.067-0.601,0.355-1.803,1.056-2.35,1.494-0.429,0.346-1.175,1.148-1.549,1.549-0.292,0.338-0.748,1.141-1.122,1.394-0.355,0.247-1.221,0.558-1.658,0.529-0.437-0.026-1.185-0.582-1.594-0.747-0.447-0.173-1.34-0.556-1.823-0.584-0.383-0.036-1.185,0.109-1.54,0.265-0.329,0.137-0.875,0.601-1.13,0.857-0.264,0.265-0.593,1.002-0.902,1.229-0.602,0.431-2.197,0.513-2.834,0.902-0.628,0.393-1.513,1.651-2.079,2.133-0.519,0.446-1.694,1.148-2.195,1.604-0.984,0.901-2.716,2.945-3.518,4.01-0.711,0.929-1.905,2.942-2.57,3.899-0.437,0.63-1.257,1.934-1.813,2.451-0.811,0.773-2.788,1.869-3.735,2.459-0.611,0.376-1.777,1.232-2.46,1.442-0.548,0.171-1.723,0.244-2.297,0.163-0.628-0.1-1.795-0.702-2.406-0.913-0.737-0.252-2.205-0.891-2.988-0.955-1.113-0.103-3.336,0.402-4.429,0.639-1.075,0.226-3.125,1.166-4.219,1.229-0.865,0.046-2.552-0.694-3.417-0.592-0.82,0.099-2.25,1.093-3.044,1.338-0.783,0.237-2.396,0.521-3.207,0.583-0.993,0.083-3.008,0.093-4-0.053-0.692-0.092-1.986-0.675-2.67-0.749-0.801-0.072-2.414,0.156-3.208,0.275-0.793,0.108-2.351,0.573-3.152,0.637-1.24,0.101-3.727-0.092-4.965-0.209-1.113-0.119-3.309-0.62-4.43-0.703-1.002-0.072-3.007-0.055-4.01,0.056-0.592,0.063-1.785,0.266-2.342,0.482-0.537,0.211-1.468,0.911-1.977,1.175-0.465,0.228-1.431,0.629-1.923,0.805-0.438,0.145-1.358,0.272-1.769,0.471-1.029,0.521-2.771,2.07-3.626,2.837-0.911,0.81-2.743,2.459-3.417,3.47-0.628,0.932-1.376,3.063-1.769,4.11-0.245,0.684-0.755,2.061-0.847,2.779-0.064,0.438,0.073,1.32,0.046,1.758-0.009,0.301,0.072,0.994-0.155,1.175-0.247,0.192-0.93-0.045-1.231-0.099-0.684-0.146-1.996-0.665-2.669-0.855-1.249-0.365-3.764-1.014-5.022-1.341-0.783-0.2-2.241-0.612-3.226-0.821,0.246-0.729,0.62-1.812,0.82-2.275,0.456-1.021,1.695-2.908,2.086-3.948,0.402-1.083,0.904-3.344,1.068-4.482,0.136-0.948,0.445-2.87,0.218-3.799-0.218-0.849-1.44-2.196-1.822-2.99-0.266-0.546-0.721-1.695-0.848-2.295-0.165-0.749-0.273-2.279-0.219-3.044,0.073-0.884,0.492-2.634,0.801-3.472,0.512-1.377,2.033-3.929,2.726-5.231,0.547-1.029,1.386-3.316,2.241-4.109,0.329-0.31,1.221-0.62,1.658-0.746,0.529-0.164,1.695-0.119,2.188-0.384,0.82-0.428,1.849-2.077,2.561-2.669,0.637-0.52,2.133-1.25,2.778-1.76,0.493-0.382,1.458-1.192,1.814-1.703,0.473-0.674,0.812-2.37,1.34-2.998,0.482-0.575,1.931-1.213,2.504-1.705,0.674-0.574,1.832-1.904,2.406-2.56,0.756-0.885,2.061-2.826,2.88-3.637,1.129-1.102,3.718-2.952,5.021-3.846,1.413-0.955,4.228-2.932,5.823-3.516,0.947-0.355,2.998-0.747,4.01-0.646,0.819,0.082,2.333,0.866,3.088,1.176,0.966,0.391,2.761,1.604,3.8,1.657,0.611,0.027,1.895-0.327,2.35-0.746,0.338-0.329,0.666-1.294,0.694-1.769,0.027-0.666-0.639-1.905-0.748-2.56-0.2-1.176-0.218-3.563-0.273-4.757-0.055-1.294-0.027-3.891-0.155-5.176-0.11-1.13-0.656-3.353-0.748-4.482-0.09-1.112-0.044-3.326,0-4.438,0.019-0.493,0.156-1.978,0.156-1.978l4.757-2.005c0.592,0.547,1.339,1.14,1.813,1.422,0.565,0.336,1.806,0.893,2.461,0.966,0.701,0.063,2.068-0.411,2.77-0.484,0.829-0.091,2.524-0.364,3.317-0.109,0.456,0.146,1.185,0.848,1.549,1.175,0.401,0.366,1.166,1.167,1.495,1.605,0.428,0.583,0.956,1.967,1.439,2.504,0.365,0.41,1.239,1.121,1.759,1.285,0.492,0.146,1.54,0.073,2.032-0.055,0.528-0.136,1.458-0.729,1.923-1.011,0.536-0.328,1.521-1.158,2.085-1.45,0.292-0.146,0.902-0.391,1.23-0.428,0.346-0.027,1.057,0.082,1.385,0.219,0.337,0.146,0.976,0.591,1.175,0.901,0.302,0.483,0.502,1.631,0.484,2.196-0.037,0.865-1.139,2.452-1.02,3.307,0.054,0.365,0.546,0.958,0.801,1.232,0.31,0.327,1.002,0.983,1.44,1.066,0.629,0.118,1.914-0.375,2.459-0.693,0.31-0.182,0.666-0.921,1.01-1.012,0.266-0.073,0.831,0.127,1.067,0.264,0.484,0.283,1.204,1.168,1.55,1.604,0.382,0.475,0.892,1.623,1.338,2.023,0.602,0.555,2.105,1.302,2.88,1.548,1.148,0.365,3.563,0.565,4.757,0.593,1.029,0.018,3.079-0.219,4.109-0.319,0.73,0.01,2.09-0.28,3.04-0.35","name":"Чернівецька область"},"43":{"path":"M1137,751.74c0.183,0.74-0.092,2.253-0.092,3.009,0,2.059,0.274,6.206,0.092,8.248-0.182,1.118-0.546,3.398-1.094,4.364-0.363,0.563-1.367,1.503-2.003,1.767-0.639,0.265-2.097,0.366-2.735,0.201-0.546-0.137-1.367-1.012-1.914-1.203-0.454-0.164-1.364-0.409-1.821-0.283-0.273,0.1-0.82,0.62-1.004,0.922-0.181,0.354-0.364,1.192-0.364,1.604,0,0.438,0.184,1.329,0.093,1.758-0.093,0.547-0.638,1.533-1.003,1.969-0.638,0.8-2.371,1.896-3.099,2.641-0.273,0.32-1.001,0.967-1.001,1.404-0.092,0.337,0.091,1.231,0.363,1.323,0.364,0.072,0.638-0.741,1.003-0.84,0.273-0.119,1.003-0.182,1.275,0.037,0.364,0.284,0.364,1.293,0.272,1.723-0.092,0.437-0.817,1.093-0.909,1.521-0.276,0.885-0.276,2.78-0.094,3.683,0.186,0.863,0.911,2.478,1.368,3.242,0.455,0.831,1.914,2.18,2.097,3.091,0.182,0.582,0.091,1.84-0.183,2.405-0.184,0.638-1.094,1.759-1.642,2.196-0.638,0.545-2.186,1.331-3.007,1.521-0.911,0.218-2.824-0.126-3.734,0-1.002,0.156-3.1,0.721-4.102,1.203-0.546,0.282-1.458,1.057-1.914,1.485-0.273,0.283-0.729,1.139-1.092,1.276-0.457,0.153-1.276-0.218-1.731-0.319-1.46-0.317-4.283-1.303-5.741-1.52-1.093-0.166-3.28-0.385-4.373-0.156-1.005,0.2-2.733,1.183-3.646,1.722-0.639,0.4-1.642,1.668-2.369,1.921-0.638,0.221-2.006-0.054-2.734,0-0.729,0.046-2.188,0.238-2.823,0.439-0.367,0.099-1.005,0.519-1.37,0.555-0.637,0.064-1.821-0.219-2.367-0.473-0.729-0.301-1.822-1.202-2.278-1.768-0.639-0.712-1.093-2.578-1.64-3.317-0.457-0.702-1.822-1.857-2.46-2.37-0.73-0.527-2.28-1.477-3.099-1.758-1.001-0.31-2.917-0.52-3.827-0.564-2.187-0.092-6.378,0.027-8.476,0.481-1.548,0.338-4.465,1.504-5.832,2.279-0.819,0.519-2.552,1.777-3.19,2.568-0.362,0.419-1,1.378-1,1.925,0,0.481,0.729,1.312,0.729,1.803,0.091,0.619-0.183,1.914-0.547,2.441-0.183,0.355-1.003,0.738-1.277,1.038-0.272,0.257-0.818,0.777-0.818,1.123-0.093,0.409,0.181,1.237,0.364,1.64,0.091,0.229,0.364,0.638,0.364,0.885,0.09,0.481-0.091,1.631-0.457,1.877-0.454,0.256-1.55-0.202-1.912-0.438-0.548-0.266-1.094-1.367-1.643-1.559-0.544-0.221-1.91-0.091-2.459,0.155-0.363,0.19-1.093,0.883-1.274,1.285-0.366,0.527-0.366,1.812-0.638,2.358-0.273,0.511-0.913,1.478-1.367,1.806-0.362,0.29-1.459,0.481-1.914,0.636-0.548,0.184-1.73,0.357-2.095,0.722-0.639,0.536-1.188,2.122-1.551,2.888-0.271,0.758-0.271,2.415-0.638,3.126-0.457,0.711-1.55,1.895-2.277,2.361-0.728,0.536-2.462,1.538-3.372,1.521-0.729-0.008-2.005-0.848-2.551-1.239-0.548-0.383-1.459-1.575-2.096-1.84-0.456-0.21-1.551-0.202-2.098-0.129-0.729,0.119-2.095,0.839-2.823,1.05-0.82,0.245-2.644,0.591-3.464,0.718-0.637,0.102-2.005,0.138-2.644,0.237-2.185,0.335-6.648,1.221-8.745,1.887-1.551,0.481-4.557,1.859-6.015,2.479-1.367,0.528-4.01,1.367-5.193,2.123-0.549,0.401-1.642,1.476-2.096,2.005-1.187,1.248-3.464,3.835-4.466,5.248-0.546,0.757-1.368,2.407-1.823,3.245-0.455,1.065-1.093,3.334-1.639,4.4-0.639,1.396-1.906,4.2-2.89,5.367-0.392,0.475-1.368,1.259-1.922,1.522-1.039,0.491-3.429,0.555-4.484,1.001-0.984,0.419-2.744,1.687-3.563,2.371-0.62,0.5-1.768,1.639-2.241,2.277-0.592,0.793-1.35,2.624-1.887,3.444-0.502,0.776-1.522,2.35-2.242,2.926-1.103,0.865-3.792,1.857-5.13,2.287-0.966,0.3-2.962,0.701-3.965,0.8-1.492,0.138-4.502-0.072-6.004-0.044-1.258,0.017-3.772-0.019-5.012,0.202-1.305,0.234-3.718,1.564-5.04,1.637-0.737,0.046-2.259-0.217-2.888-0.6-0.692-0.421-1.422-1.995-2.04-2.525-0.44-0.372-1.506-0.872-2.006-1.157-0.438-0.246-1.42-0.592-1.759-0.965-0.255-0.272-0.51-0.993-0.602-1.358-0.127-0.5,0.027-1.585-0.201-2.041-0.3-0.61-1.349-1.56-1.968-1.841-0.773-0.364-2.542-0.382-3.401-0.401-0.955-0.027-2.888,0.538-3.807,0.274-0.501-0.138-1.274-0.91-1.677-1.238-0.92-0.749-2.688-2.333-3.525-3.162-0.492-0.483-1.56-1.432-1.886-2.042-0.229-0.448-0.438-1.457-0.438-1.968,0-0.312,0.028-1.048,0.282-1.239,0.236-0.183,0.903,0.09,1.203,0.045,0.455-0.082,1.357-0.392,1.722-0.683,0.365-0.301,0.684-1.284,1.039-1.604,0.394-0.365,1.368-0.874,1.886-1.003,0.493-0.126,1.532-0.036,2.04,0,0.503,0.037,1.532,0.101,1.997,0.283,0.282,0.109,0.712,0.601,1.003,0.683,0.308,0.085,1.066,0.157,1.284-0.082,0.283-0.301,0.228-1.302,0-1.64-0.21-0.319-1.039-0.465-1.403-0.565-0.337-0.091-1.103-0.008-1.357-0.236-0.337-0.3-0.511-1.285-0.483-1.722,0.028-0.484,0.621-1.313,0.758-1.768,0.173-0.559,0.399-1.706,0.445-2.28,0.072-1.026-0.092-3.098-0.2-4.127-0.1-0.939-0.582-2.779-0.603-3.727-0.019-1.011,0.119-3.089,0.484-4.044,0.302-0.813,1.374-2.226,1.959-2.881,0.501-0.574,1.769-1.449,2.277-2.005,0.364-0.384,1.011-1.229,1.286-1.677,0.264-0.438,0.765-1.349,0.885-1.841,0.253-1.094,0.189-3.382,0.035-4.492-0.192-1.366-1.058-4-1.56-5.286-0.5-1.284-1.794-3.745-2.442-4.966-0.655-1.229-2.231-3.554-2.768-4.848-0.275-0.683-0.693-2.104-0.758-2.844-0.053-0.61,0.056-1.858,0.236-2.441,0.137-0.403,0.702-1.048,0.849-1.441,0.138-0.361,0.236-1.138,0.272-1.527,0.046-0.411-0.046-1.259,0-1.679,0.037-0.326,0.101-1.011,0.283-1.283,0.182-0.248,0.811-0.447,1.048-0.639,0.272-0.221,0.956-0.685,0.956-1.04,0-0.219-0.363-0.564-0.564-0.646-0.237-0.091-0.775,0.054-1.039,0.081-0.455,0.046-1.349,0.228-1.805,0.2-0.427-0.026-1.282-0.228-1.676-0.4-0.31-0.128-0.802-0.629-1.121-0.721-0.392-0.107-1.22-0.063-1.603,0.046-0.355,0.092-0.931,0.613-1.286,0.722-0.364,0.107-1.137,0.117-1.521,0.117-0.339,0-1.031-0.018-1.36-0.117-0.208-0.064-0.545-0.457-0.765-0.447-0.31,0.027-0.864,0.474-0.956,0.766-0.108,0.327,0.155,1.037,0.356,1.32,0.226,0.311,1.093,0.51,1.284,0.838,0.138,0.245,0.163,0.877,0.037,1.12-0.2,0.394-1.059,0.839-1.476,0.967-0.54,0.154-1.688-0.055-2.252,0-0.511,0.045-1.551,0.21-2.032,0.401-0.519,0.192-1.457,0.774-1.886,1.121-0.337,0.273-0.82,1.021-1.167,1.285-0.338,0.246-1.104,0.674-1.522,0.709-0.528,0.056-1.557-0.346-2.041-0.555-0.63-0.272-1.813-0.992-2.323-1.439-0.91-0.812-2.305-2.835-3.042-3.809-0.85-1.121-2.279-3.582-3.246-4.604-0.884-0.937-2.979-2.478-4.045-3.206-0.949-0.647-2.961-1.769-3.965-2.323-1.486-0.82-4.392-2.646-6.004-3.162-1.605-0.521-5.003-0.921-6.688-0.921-1.241,0-3.745,0.219-4.887,0.684-0.993,0.392-2.578,1.896-3.443,2.524-0.474,0.326-1.376,1.038-1.886,1.313-0.439,0.237-1.35,0.784-1.842,0.729-0.619-0.073-1.458-1.203-2.041-1.403-0.627-0.218-1.986-0.209-2.642-0.2-0.575,0-1.74,0.363-2.287,0.2-0.465-0.146-1.212-0.865-1.522-1.249-0.528-0.646-1.275-2.169-1.558-2.96-0.283-0.756-0.766-2.353-0.722-3.163,0.047-0.939,0.768-2.743,1.239-3.563,0.565-0.994,2.087-2.743,2.963-3.489,1.411-1.195,4.738-2.871,6.334-3.8,0.819-0.483,2.577-1.286,3.316-1.886,0.682-0.547,1.686-2.006,2.324-2.597,0.383-0.356,1.158-1.075,1.639-1.25,0.512-0.183,1.76-0.429,2.168-0.073,0.193,0.166,0.185,0.757,0.119,1.004-0.081,0.3-0.71,0.684-0.765,0.992-0.045,0.284,0.111,0.911,0.327,1.084,0.292,0.238,1.157,0.246,1.524,0.119,0.427-0.155,1.027-0.93,1.319-1.276,0.374-0.455,1.166-1.392,1.321-1.968,0.154-0.602-0.31-1.867-0.199-2.479,0.09-0.536,0.583-1.547,0.883-2.005,0.712-1.12,2.487-3.132,3.518-3.962,1.121-0.911,3.726-2.188,5.011-2.844,1.303-0.673,4.02-1.786,5.323-2.44,1.026-0.531,3.151-1.514,4.044-2.244,0.483-0.401,1.285-1.384,1.604-1.931,0.329-0.557,0.811-1.796,0.92-2.433,0.081-0.51-0.173-1.551-0.072-2.05,0.082-0.476,0.427-1.432,0.758-1.807,0.226-0.253,0.864-0.59,1.203-0.672,0.227-0.065,0.772-0.154,0.956,0,0.226,0.181,0.217,0.863,0.234,1.156,0.047,0.465-0.19,1.396-0.071,1.84,0.109,0.429,0.602,1.186,0.92,1.486,0.273,0.256,0.966,0.601,1.32,0.72,0.622,0.209,1.951,0.493,2.599,0.401,0.673-0.092,1.856-0.803,2.451-1.121,0.811-0.439,2.416-1.377,3.124-1.958,0.693-0.585,1.86-1.988,2.434-2.69,0.301-0.354,0.73-1.229,1.131-1.476,0.392-0.253,1.395-0.2,1.841-0.363,0.445-0.166,1.304-0.631,1.677-0.921,0.39-0.301,0.903-1.268,1.366-1.44,0.511-0.199,1.723-0.11,2.205,0.155,0.282,0.164,0.466,0.903,0.758,1.048,0.337,0.154,1.127,0.027,1.484-0.083,0.374-0.127,1.038-0.573,1.32-0.847,0.384-0.355,0.83-1.375,1.24-1.723,0.537-0.438,1.85-1.013,2.523-1.156,0.438-0.09,1.368-0.082,1.807,0.035,0.334,0.1,0.9,0.566,1.236,0.684,0.401,0.139,1.303,0.473,1.677,0.283,0.2-0.1,0.339-0.556,0.402-0.757,0.183-0.5,0.28-1.547,0.446-2.05,0.182-0.555,0.584-1.677,0.957-2.124,0.217-0.245,0.81-0.599,1.118-0.719,0.402-0.154,1.297-0.119,1.688-0.283,0.373-0.145,1.128-0.564,1.321-0.92,0.163-0.284,0.21-1.013,0.081-1.322-0.145-0.354-0.811-0.837-1.165-1.001-0.576-0.266-1.888-0.329-2.517-0.356-0.756-0.035-2.276-0.035-3.007,0.154-0.438,0.121-1.158,0.802-1.604,0.802-0.335,0.011-1.056-0.271-1.238-0.555-0.227-0.366,0.009-1.294,0.036-1.723,0.037-0.437,0.202-1.295,0.202-1.722,0-0.71-0.193-2.114-0.32-2.807-0.128-0.711-0.693-2.077-0.72-2.796-0.037-0.842,0.42-2.472,0.566-3.291,0.082-0.527,0.39-1.585,0.354-2.122,0-0.065-0.01-0.139-0.019-0.21l1.343-0.674-2.646-10.736,2.278,0.047,0.421-1.212c0.218,0.403,0.49,0.792,0.701,0.992,0.3,0.274,1.11,0.476,1.447,0.701,0.393,0.265,1.192,0.849,1.386,1.275,0.201,0.439-0.026,1.451,0.055,1.925,0.091,0.52,0.383,1.557,0.692,1.977,0.374,0.501,1.494,1.131,2.032,1.439,0.665,0.384,2.012,1.249,2.778,1.287,0.521,0.026,1.633-0.303,1.978-0.694,0.282-0.328,0.301-1.276,0.32-1.712,0.008-0.283-0.246-0.876-0.111-1.124,0.191-0.334,1.005-0.672,1.387-0.691,0.446-0.02,1.329,0.338,1.658,0.639,0.336,0.31,0.811,1.194,0.801,1.657-0.008,0.438-0.556,1.186-0.801,1.55-0.21,0.301-0.855,0.766-0.967,1.121-0.164,0.564-0.127,1.904,0.274,2.352,0.244,0.272,1.085,0.227,1.44,0.318,0.39,0.092,1.219,0.191,1.549,0.429,0.438,0.327,0.857,1.421,1.176,1.868,0.235,0.337,0.655,1.074,1.011,1.283,0.4,0.229,1.375,0.256,1.85,0.237,0.529-0.027,1.722-0.081,2.078-0.482,0.31-0.347,0.116-1.386,0.245-1.84,0.109-0.446,0.347-1.403,0.675-1.722,0.274-0.268,1.065-0.475,1.439-0.52,0.447-0.055,1.321,0.154,1.769,0.198,0.444,0.037,1.347,0.1,1.794,0.12,0.319,0.009,1.086-0.246,1.284,0,0.275,0.318-0.308,1.229-0.281,1.641,0.047,0.591,0.364,1.813,0.766,2.25,0.42,0.447,1.722,0.684,2.277,0.955,0.394,0.193,1.239,0.52,1.521,0.838,0.338,0.377,0.574,1.388,0.768,1.843,0.116,0.31,0.408,0.921,0.481,1.238,0.101,0.492,0.319,1.549,0.117,2.006-0.164,0.382-0.873,0.993-1.283,1.048-0.355,0.045-0.968-0.675-1.32-0.602-0.357,0.063-0.904,0.69-1.002,1.038-0.119,0.429,0.116,1.388,0.397,1.724,0.283,0.326,1.187,0.547,1.604,0.637,0.639,0.146,1.978,0.339,2.608,0.165,0.582-0.165,1.603-0.938,2.004-1.404,0.326-0.392,0.854-1.33,0.91-1.841,0.055-0.437-0.21-1.32-0.391-1.723-0.193-0.437-0.766-1.202-1.084-1.566-0.302-0.337-1.011-0.909-1.358-1.192-0.318-0.265-1.075-0.649-1.321-0.967-0.181-0.22-0.418-0.756-0.446-1.039-0.018-0.237,0.037-0.757,0.199-0.92,0.272-0.264,1.104-0.246,1.487-0.282,0.418-0.037,1.312-0.174,1.676,0.045,0.155,0.082,0.328,0.42,0.365,0.591,0.045,0.21-0.094,0.629-0.119,0.85-0.055,0.336-0.238,1.021-0.199,1.357,0.026,0.31,0.225,0.901,0.399,1.165,0.218,0.329,0.802,0.966,1.202,1.04,0.43,0.072,1.295-0.364,1.641-0.647,0.365-0.29,0.921-1.104,1.039-1.558,0.1-0.355-0.291-1.177-0.082-1.476,0.174-0.247,0.829-0.402,1.12-0.367,0.265,0.03,0.795,0.293,0.921,0.52,0.164,0.276-0.072,0.979,0,1.287,0.083,0.318,0.393,0.947,0.646,1.156,0.33,0.273,1.214,0.438,1.644,0.484,0.49,0.044,1.467-0.139,1.957-0.166,0.419-0.009,1.277-0.091,1.686,0,0.292,0.074,1.004,0.238,1.086,0.52,0.053,0.228-0.529,0.538-0.529,0.769,0,0.462,0.784,1.138,1.047,1.52,0.32,0.474,1.222,1.348,1.285,1.923,0.027,0.391-0.41,1.102-0.602,1.438-0.301,0.514-1.139,1.341-1.447,1.842-0.209,0.347-0.63,1.085-0.685,1.486-0.035,0.348,0.02,1.139,0.281,1.359,0.165,0.135,0.685-0.139,0.849,0,0.318,0.281-0.054,1.375,0.237,1.684,0.182,0.192,0.784,0.273,1.038,0.2,0.384-0.101,1.003-0.7,1.185-1.038,0.274-0.582,0.364-1.95,0.364-2.606,0.093-0.528,0-1.594,0-2.124,0.093-0.528,0-1.648,0.273-2.123,0.091-0.264,0.637-0.712,0.912-0.756,0.273-0.055,0.91,0.201,1.095,0.438,0.273,0.29,0.273,1.111,0.273,1.484,0,0.547-0.185,1.649-0.185,2.195,0,0.721-0.182,2.207,0.092,2.889,0.093,0.301,0.455,0.867,0.729,1.002,0.456,0.184,1.367,0.084,1.822-0.08,0.364-0.156,0.821-0.976,1.185-1.121,0.364-0.146,1.185,0.136,1.55,0,0.455-0.156,1.093-0.773,1.277-1.167,0.362-0.591,0.18-1.978,0.18-2.644,0-0.482,0-1.476-0.091-1.96-0.089-0.453-0.639-1.266-0.729-1.721,0-0.327-0.092-1.047,0.09-1.32,0.275-0.349,1.094-0.656,1.549-0.685,0.365-0.017,1.096,0.248,1.367,0.447,0.639,0.366,1.551,1.431,1.915,2.041,0.363,0.592,0.728,1.959,0.728,2.642-0.091,0.792-0.638,2.326-0.911,3.045-0.272,0.664-1.002,2.022-1.55,2.478-0.546,0.392-1.821,0.53-2.368,0.84-0.364,0.227-1.002,0.819-1.275,1.166-0.455,0.602-0.82,2.086-1.184,2.724-0.273,0.355-0.822,1.012-1.094,1.32-0.365,0.419-1.275,1.094-1.551,1.561-0.273,0.398-0.818,1.329-0.729,1.767,0.184,0.383,1.094,0.711,1.549,0.721,0.64,0.017,1.914-0.646,2.461-1.039,0.547-0.429,1.275-1.722,1.822-2.171,0.638-0.49,2.187-1.01,2.825-1.475,0.729-0.502,1.913-1.731,2.46-2.369,0.547-0.583,1.366-1.948,1.914-2.479,0.637-0.574,2.005-1.613,2.824-1.841,0.458-0.137,1.549-0.192,2.004,0.036,0.184,0.118,0.549,0.583,0.549,0.838,0,0.558-0.912,1.458-1.367,1.77-0.365,0.234-1.276,0.28-1.641,0.437-0.547,0.201-1.55,0.666-2.006,1.002-0.363,0.338-1.092,1.168-1.365,1.642-0.274,0.481-0.64,1.548-0.549,2.085,0,0.354,0.274,1.131,0.639,1.275,0.364,0.165,1.095-0.19,1.459-0.355,0.456-0.21,1.002-1.065,1.458-1.203,0.637-0.2,2.005-0.08,2.643,0.239,0.364,0.218,0.818,1.001,0.91,1.403,0.273,0.528,0.364,1.686,0.364,2.242-0.091,0.509-0.636,1.428-0.819,1.922-0.091,0.337-0.274,1.01-0.274,1.367,0,0.399,0.091,1.256,0.364,1.557,0.185,0.293,1.095,0.492,1.459,0.52,0.364,0.038,1.096-0.045,1.459-0.236,0.273-0.183,0.455-0.938,0.728-1.121,0.365-0.21,1.186-0.373,1.549-0.282,0.367,0.091,0.912,0.603,1.186,0.92,0.183,0.355,0.272,1.221,0.272,1.649,0,0.465-0.455,1.331-0.455,1.796,0,0.446,0.092,1.422,0.455,1.723,0.184,0.217,0.912,0.173,1.276,0.197,0.638,0.064,2.098-0.052,2.826,0.037,1.002,0.138,3.098,0.521,4.011,1.003,0.816,0.475,2.275,1.942,2.914,2.689,0.638,0.656,1.548,2.15,2.096,2.878,0.273,0.476,0.911,1.424,1.186,1.889,0.818,1.191,2.732,3.397,3.28,4.729,0.454,0.929,0.819,2.952,0.819,3.964-0.092,0.801-0.457,2.432-0.819,3.114-0.365,0.558-1.368,1.47-2.006,1.722-0.456,0.202-1.549,0.021-2.004,0.202-0.547,0.229-1.459,1.039-1.914,1.486-0.363,0.483-1.003,1.611-1.276,2.205-0.272,0.666-0.819,2.079-0.729,2.798,0.091,0.746,0.638,2.186,1.185,2.723,0.273,0.338,1.095,0.857,1.549,0.851,0.456-0.012,1.275-0.477,1.548-0.851,0.185-0.444-0.18-1.529-0.09-2.04,0-0.556,0.09-1.693,0.274-2.197,0.183-0.38,0.728-1.084,1.092-1.245,0.274-0.093,0.821-0.102,1.003,0.042,0.366,0.293,0.366,1.34,0.455,1.807,0.185,0.708,0.275,2.204,0.548,2.879,0.365,0.629,1.093,1.958,1.73,2.203,0.638,0.248,2.097-0.427,2.825-0.598,0.546-0.138,1.552-0.648,2.096-0.603,0.82,0.053,2.097,0.773,2.733,1.201,0.82,0.567,1.824,2.415,2.643,2.882,0.637,0.309,1.915,0.317,2.554,0.436,0.543,0.11,1.638,0.229,2.096,0.447,0.728,0.318,2.004,1.411,2.64,1.84,0.638,0.402,1.823,1.257,2.554,1.486,0.638,0.18,1.913,0.301,2.46,0.2,0.455-0.074,1.187-0.374,1.458-0.648,0.182-0.199,0.546-0.745,0.546-1.038,0-0.383-0.637-1.001-0.817-1.32-0.274-0.401-0.824-1.231-1.187-1.568-0.456-0.401-1.548-0.92-2.005-1.238-0.548-0.311-1.549-0.901-2.006-1.276-1.184-0.947-3.189-3.207-4.191-4.292-0.729-0.82-2.368-2.433-3.097-3.325-1.822-2.206-5.013-6.953-6.562-9.332-1.185-1.769-3.372-5.439-4.558-7.209-1.273-1.966-4.099-5.786-5.557-7.688-0.73-1.05-2.369-3.108-3.19-4.165-0.455-0.602-1.185-1.648-1.822-2.508l2.096-1.166c0.183,0.35,0.365,0.648,0.548,0.913,0.911,1.365,3.099,3.79,4.099,5.048,0.821,1.048,2.643,3.07,3.466,4.165,0.819,1.121,2.276,3.5,3.005,4.684,1.094,1.876,3.281,5.74,4.465,7.572,1.095,1.612,3.554,4.702,4.739,6.204,1.185,1.386,3.646,4.047,4.828,5.367,1.094,1.178,3.282,3.49,4.375,4.648,0.638,0.654,1.914,1.94,2.46,2.644,0.365,0.436,0.912,1.512,1.367,1.839,0.456,0.356,1.641,0.646,2.277,0.721,0.913,0.119,2.644,0.08,3.555-0.156,0.729-0.208,2.097-1.12,2.825-1.52,0.819-0.493,2.461-1.688,3.279-2.087,0.639-0.283,2.097-0.575,2.733-0.758,0.64-0.172,1.824-0.373,2.462-0.647,0.729-0.337,2.005-1.257,2.552-1.875,0.365-0.457,0.819-1.56,0.911-2.124,0.092-0.558-0.183-1.687-0.092-2.241,0-0.328,0.092-1.002,0.272-1.284,0.274-0.458,1.184-1.003,1.642-1.359,0.365-0.364,1.185-1.085,1.458-1.531,0.272-0.383,0.546-1.312,0.819-1.713,0.183-0.337,0.638-1.011,0.911-1.248,0.272-0.22,1.003-0.537,1.367-0.521,0.273,0.02,0.821,0.237,0.911,0.447,0.183,0.311,0.092,1.111,0,1.478,0,0.382-0.363,1.109-0.363,1.484,0.273,0.875,1.731,2.142,2.368,2.76,0.729,0.666,2.188,1.85,3.005,2.325,0.729,0.383,2.188,1.011,2.919,1.167,0.546,0.107,1.821,0.172,2.369,0.035,0.453-0.1,1.183-0.574,1.64-0.803,0.546-0.355,1.822-1.021,2.278-1.565,0.455-0.593,0.911-2.097,1.002-2.843,0.182-0.502,0-1.598,0.182-2.08,0.092-0.301,0.457-0.864,0.821-1.002,0.273-0.136,0.909,0.045,1.185,0,0.547-0.072,1.548-0.265,1.913-0.6,0.364-0.283,0.638-1.149,0.729-1.56,0.182-0.546,0.091-1.703,0.271-2.251,0.276-0.646,1.005-1.794,1.277-2.396,0.365-0.548,0.91-1.631,1.183-2.204,0.185-0.492,0.458-1.58,0.73-2.041,0.274-0.438,0.913-1.287,1.276-1.522,0.455-0.2,1.275-0.11,1.731-0.2,0.729-0.166,2.096-0.874,2.823-0.967,0.729-0.091,2.277,0.137,3.099,0.283,0.639,0.135,2.005,0.491,2.553,0.802,0.546,0.29,1.367,1.311,2.005,1.521,0.637,0.235,2.006,0.273,2.645,0.118,0.545-0.118,1.272-0.885,1.821-1.003,0.363-0.091,1.275,0.01,1.639,0.129,0.729,0.182,1.913,0.929,2.552,1.238,0.729,0.337,2.004,1.212,2.734,1.357,0.546,0.101,1.551,0.101,2.004-0.118,0.363-0.185,0.638-1.11,1.003-1.239,0.547-0.173,1.731,0.165,2.188,0.521,0.1,0.31,0.4,1.34,0.5,1.83","name":"АР Крим"}}});
Index: public/vendors/vmap/maps/jquery.vmap.usa.counties.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.usa.counties.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.usa.counties.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add USA Counties Map Data Points */
+jQuery.fn.vectorMap('addMap', 'usa_counties_en', {"width":"989.97772","height":"627.07098","paths":{"51153":{"name":"Prince William, VA","path":"m 849.44672,261.01737 0.57668,0.003 0.31735,0.6049 0.19286,0.003 -0.0161,0.30123 0.28474,-0.0411 0.33661,-0.0826 0.19138,-0.15519 0.24325,0.14563 0.0358,0.25974 0.34809,0.15435 0.006,0.2166 0.19248,0.36182 0.1925,-0.17759 0.47257,0.40331 -0.0461,0.27884 0.22361,0.18547 0.14063,-0.12572 0.0323,-0.18143 0.62357,0.0364 0.053,0.31649 0.13515,0.004 0.27,-0.23467 1.13099,0.60557 0.41523,0.38773 -0.68478,3.59959 -1.2738,-0.16011 -1.61692,-1.1017 -0.69128,-0.10425 -0.55562,0.98098 -0.77062,-0.86792 -3.7672,-4.814 -0.0571,-0.248 0.0623,-0.49721 -0.03,-0.46029 0.33001,0.23197 0.25617,-1.74327 0.74077,0.37708 0.64846,0.60783 0.71307,0.14632 z m 2.17756,1.68932 0.0492,-0.25359 5.3e-4,-0.17754 -0.19412,-0.19977 -0.23356,-0.002 -0.28469,0.007 -0.16425,0.18853 0.0709,0.0763 -0.0341,0.15335 -0.33937,0.39075 -0.08,0.27143 -0.0789,0.0999 -0.13537,0.0957 0.0693,0.48407 0.41308,0.22627 0.0771,-0.17608 -0.31274,-0.4698 0.13647,-0.13777 0.39038,0.11614 0.23804,0.0653 0.24962,-0.26741 -0.0118,-0.61071 z"},"51685":{"name":"Manassas Park, VA","path":"m 850.79744,262.26875 0.0709,0.0766 0.31723,0.0248 0.005,0.17325 0.25994,0.0428 0.174,0.12079 0.0493,-0.25359 5.3e-4,-0.17754 -0.19412,-0.20035 -0.23357,-0.002 -0.28468,0.007 z"},"02185":{"name":"North Slope, AK","path":"m 111.74805,462.41314 1.57249,-1.571 1.17669,-0.784 0.39045,0.784 -0.78268,0.393 0.78268,0 3.92945,-1.177 3.53543,-4.324 3.14142,1.573 0,0.788 -1.17848,1.175 0,1.182 1.17848,-0.394 0.78624,-1.963 0.78447,-0.788 1.17847,1.177 0.39223,1.574 1.17848,0.394 0.39045,-0.786 1.96294,-0.396 3.1432,0 0.39045,0.396 -0.78447,1.176 0,0.393 2.35874,0.394 -0.3958,1.176 1.5725,0 1.96294,-1.176 4.31989,-0.394 2.74918,0.786 1.18383,0 1.17313,0.392 0.39758,0.392 1.57071,0 1.96294,-0.392 2.35873,0 2.74919,0.788 0.78446,-0.396 1.57249,-1.176 0.39045,-0.394 0.78625,-0.783 2.75097,0.39 6.28283,1.963 1.96294,6.287 1.17848,3.927 -16.10289,3.928 0.78625,4.318 -3.14142,0.786 -8.24934,1.576 -0.39758,0 -18.45448,1.962 -4.32168,0 0,-0.787 -3.13963,0 0,-0.786 -3.1432,0 -3.14142,0.392 -2.35874,0 0,-0.781 -1.17669,0 0,0.389 -3.53365,0 -0.78624,-0.389 -0.39402,0 0,0.389 -1.56892,0 -0.3958,-0.784 -1.96294,0 0,0.784 -0.78803,0 -5.500153,-0.389 0,1.566 -2.749186,0 -2.355171,-1.177 -1.178477,-1.572 0.784463,-2.354 0.394014,-2.752 2.749186,0.395 3.537213,-0.395 1.174912,-0.391 2.356949,-2.751 1.18205,-3.534 2.35517,-3.533 1.57249,-1.574 1.17669,0.397 1.5725,-0.788 2.35695,-2.751"},"02188":{"name":"Northwest Arctic, AK","path":"m 132.55771,496.97814 -0.78268,0 -1.57071,0.784 0.39401,0.786 -2.35517,0 0,2.355 -1.57249,0.395 0,-0.785 -0.78446,-0.783 -1.57071,0 0,1.568 -1.57249,0 0,-1.568 -3.13964,0 0,3.534 -3.92766,0 0,1.569 -2.35517,0 0,3.928 -0.78624,0 0,0.788 -0.78625,0 -13.747711,-0.394 0,-1.573 -0.395797,0 -0.390448,-0.392 0,-1.177 -0.786246,-0.394 0,-3.141 -0.395797,-3.93 1.572491,0 0.786246,0.393 -0.786246,2.749 0.395797,1.574 7.069081,0.781 1.96472,-1.961 1.18026,0 -0.3958,-0.786 -1.17669,-0.785 -1.17669,-0.783 -1.57784,-1.968 -0.7809,-0.39 -0.39223,-1.179 0.39223,-0.394 0.7809,0 1.18204,2.749 1.57249,1.571 0.78625,-0.389 -0.78625,-0.394 -1.17669,-1.574 0.78446,-2.355 0.39223,0.392 0,-0.392 -1.17669,-0.785 -1.96473,0.391 -1.57427,0 -2.750969,-1.177 -1.174912,-4.32 -3.931228,-4.323 2.749186,0 0,-1.566 5.500153,0.389 0.78803,0 0,-0.784 1.96294,0 0.3958,0.784 1.56892,0 0,-0.389 0.39402,0 0.78624,0.389 3.53365,0 0,-0.389 1.17669,0 0,0.781 2.35874,0 3.14142,-0.392 3.1432,0 0,0.786 3.13963,0 0,0.787 3.1432,0 0,1.963 0.78446,0 0,0.786 1.56893,1.572 0,2.354 1.57071,0 0.78268,0.786 0.39579,2.357 -0.39579,1.571"},"02198":{"name":"Prince of Wales-Hyder Census Area, AK","path":"m 236.25391,561 -0.39063,0.78516 1.17969,0.78515 0.39258,0.39258 0.78125,0.39258 0.39648,0.39258 1.17774,2.35742 0.7871,-0.39063 0,-0.39453 -1.43554,-2.57812 1.13476,-1.05664 -1.27343,-0.68555 -2.75,0 z m 1.96289,2.35547 -1.17383,0 -1.17969,-0.78516 -0.78711,0.39258 -0.39062,1.18164 0.78711,1.17578 1.96289,1.17774 0.78125,0.78515 -0.78125,0 0,1.18164 0.78125,1.96289 0.78711,0.39063 -0.39063,-1.96484 0.7832,0.78906 0,-2.35938 -0.7832,0 -0.39648,-1.17773 0,-0.78516 0.78711,-0.39062 -0.78711,-1.57422 z m 18.85351,-1.96094 -0.38867,0.78516 0.0488,1.48828 1.52344,0.86914 0,-2.35742 -1.1836,-0.78516 z m -14.92578,4.71094 -1.95898,0.78515 0,0.39258 0.78515,1.96485 -0.39258,1.17968 0.39258,0.39063 0.78516,-0.39063 0.38867,-1.17968 1.18359,1.57031 -0.39648,0.39453 -0.78711,0 -0.38867,0.39258 1.96484,0.78515 1.17774,0 1.17773,1.17774 -1.57031,1.57226 0.39258,0.78516 4.71289,3.14258 1.17969,0 -0.78711,-1.96289 -0.78321,-0.39453 -0.78906,0.78711 -1.96289,-2.75 3.53516,1.17773 2.35547,1.96289 1.17968,-0.39062 0,-1.18164 -1.96484,-3.53516 -1.57031,-0.7832 -2.35743,-2.75 -5.50195,-3.14258 z m -6.67187,3.14258 0.39062,0.7832 0,-0.7832 -0.39062,0 z m 5.10546,1.57031 -0.39257,0.39453 0.39257,0.39258 0,-0.78711 z m -1.96484,0.78711 -0.39648,0.39258 0.78711,0.39257 0.39257,-0.78515 -0.7832,0 z m 14.92578,0 0.39258,1.57226 0.39258,0.78516 1.17969,-0.78516 -0.39258,-1.17968 -1.57227,-0.39258 z m -9.42773,1.17578 -1.57422,0.78711 0,1.17969 1.57422,0.39257 0.78711,-1.96289 -0.78711,-0.39648 z"},"02130":{"name":"Ketchikan Gateway, AK","path":"m 256.28906,573.17773 -0.78515,1.17579 1.17773,0 0,-0.78516 z m 0.39258,-10.99804 -1.17773,0 -2.35743,-1.17969 -1.57226,0.39453 1.17969,0.78516 -0.39453,0.7832 -1.17579,1.57422 -1.17968,0.7832 -0.39258,0.78516 0,1.57226 0.39258,0.39258 0,1.57227 -1.17774,-0.39453 -0.39453,0 1.17969,1.17968 1.17969,0 0,-2.75 -0.78711,-0.39453 0.78711,-0.39258 1.17773,2.35743 -0.39453,0.7832 0,0.78711 0.43555,0.125 0.34961,1.05469 1.17968,1.17968 -0.39258,-1.57226 -0.88281,-0.58985 2.06055,0.58985 1.57031,-0.39258 0.39453,-1.18164 -0.78515,-2.35352 -3.14453,-2.74804 2.75195,1.96093 1.57031,2.75196 -0.39258,1.57031 1.96485,2.75 0.78125,0.39063 1.17773,-0.39063 0.78516,-2.75 0,-3.14258 -2.74414,-3.5332 -1.52277,-0.86855 z"},"02275":{"name":"Wrangell City and Borough, AK","path":"m 245.10547,559.56641 -0.30078,1.55468 -0.85742,0.34766 0.95117,0.31641 0.78515,2.75195 -0.78515,1.56836 0,0.78515 1.17773,0.78711 1.96485,0.39258 0.39062,-0.78711 -0.39062,-0.78515 0.39062,-1.56836 0.78906,3.14062 -0.39453,1.17774 1.17774,0.39453 0,-1.57227 -0.39258,-0.39258 0,-1.57226 0.39258,-0.78516 1.17968,-0.7832 1.17579,-1.57422 0.39453,-0.7832 -1.17969,-0.78516 -3.14258,-0.78711 -0.78516,0.39258 -1.17773,-1.17773 -1.36328,-0.25586 z m -0.99414,4.57812 -1.17969,0.78516 0,1.17578 1.17969,0 0.78711,-0.39063 -0.78711,-1.57031 z"},"02195":{"name":"Petersburg Census Area, AK","path":"m 239.21094,554.00391 -3.40821,0.33789 -0.33007,0.76758 0,0.78515 1.31445,2.38086 0.1875,1.40039 0.85351,0.14649 1.17579,0 1.96679,-0.39454 0.38868,0.78516 1.17773,0.78711 1.41016,0.46875 0.85742,-0.34766 0.30078,-1.55468 -0.16016,-1.33789 -1.61719,0.0234 0,-1.17968 -1.18359,-1.17774 -1.55273,-1.26172 -0.75196,0.23828 -0.59179,-0.15625 -0.0371,-0.71093 z m 0.97461,6.20898 -1.18164,0.78711 1.27343,0.68555 -1.13476,1.05664 1.43554,2.57812 1.17774,0 0.38867,-0.7832 -0.38867,-0.78906 -1.57031,-0.78516 0,-0.7832 1.95898,1.17578 0,0.78906 1.18359,0 1.17774,-1.57422 -4.32031,-2.35742 z"},"02220":{"name":"Sitka, AK","path":"m 226.04248,557.46314 1.96294,0.788 1.57251,-0.788 1.17668,1.965 0,0.394 -1.17668,0.39 -2.75098,-1.176 -0.394,0.392 1.18024,1.572 -0.39401,1.179 -0.78623,0 -3.53365,-3.143 1.57071,-0.391 0,-1.572 1.57247,0.39 m 9.82007,12.569 0,0.396 -0.78625,-0.396 -1.96474,-1.962 0,-1.179 -0.78444,0.786 -0.39403,-0.786 -1.17848,-0.394 -0.78446,-2.353 -0.78803,-0.788 0,-0.785 -0.78447,0.391 -1.17847,-0.783 0.78624,-2.357 1.57251,0.786 1.57071,-0.396 0.39221,0.788 -0.78624,0.394 0.78624,0 2.75277,4.32 1.56893,3.534 -0.39045,0 0.39045,0.784 m -9.0356,-7.461 0.39223,-0.392 1.57071,1.569 0,1.182 -0.78447,0.39 -1.17847,-2.749"},"02100":{"name":"Haines, AK","path":"m 224.86224,547.25314 -0.39223,0.392 -1.17848,-1.963 -1.17671,-0.786 0,0.394 1.96472,3.141 1.56893,2.357 1.96472,3.142 -1.57071,0 -1.18024,-1.177 -0.39223,-0.392 0.78623,-0.787 -0.78623,-0.786 -1.96296,-0.394 0.39225,-1.963 -1.57071,-1.178 -3.53543,0 0,-3.143 1.57071,-1.963 3.14318,2.358 1.17671,-0.395 0.39578,0.395 1.56893,0 0.78448,0.785 0.394,-0.394 0.78624,1.178 0.39223,0 -3.14318,1.179"},"02110":{"name":"Juneau, AK","path":"m 235.0763,553.93014 0,0.786 -0.78268,0 -2.75277,-2.355 -1.96292,0.781 -3.14498,-1.96 -1.96294,-3.537 0.39223,-0.392 3.14318,-1.179 0.78447,0.785 1.18026,0.394 3.92768,1.572 0,0.785 1.96472,1.178 -0.78625,2.748 0,0.394 m -5.10615,0.394 -0.78803,0 -0.39223,-1.182 0.39223,0.394 0.39581,-0.394 1.96292,-0.389 -1.17847,0.783 -0.39223,0.394 0,0.394"},"02230":{"name":"Skagway Municipality, AK","path":"m 222.50705,544.50514 -3.14318,-2.358 0.78801,-1.177 1.56894,0.39 1.17848,0.787 0.78446,1.963 -1.17671,0.395"},"02105":{"name":"Hoonah-Angoon Census Area, AK","path":"m 217.79297,547.25391 0,0.78515 -1.17774,0.39258 -2.35546,3.53516 -1.57032,1.57031 3.92578,1.57227 1.17774,0.39257 0.78711,0 1.57226,0.78516 2.35547,-2.35742 -1.57226,-2.35547 -2.35547,-0.78516 -1.57227,0 0,-0.39453 3.53516,0.78711 0.39258,0 0,-0.78711 1.17968,1.17969 0.78321,2.35547 1.96289,-1.17578 -0.39063,-0.39258 0.78516,-0.78711 -0.78516,-0.78516 -1.96289,-0.39453 0.39063,-1.96289 -1.57032,-1.17773 -3.53515,0 z m 9.42578,4.71289 0,0.39453 1.57031,1.96289 1.57422,3.13867 1.96289,1.57422 0,2.35742 1.17774,1.56836 1.18164,-1.96289 0,-1.17773 0.78711,-1.17774 -0.39649,-0.78711 -2.75,-2.74804 0.39258,-0.39258 1.17969,1.57031 0.78711,0 -3.14453,-3.14453 0,-0.38867 -1.17774,0.7832 -0.39258,0.39258 0,0.39453 -0.78906,0 -0.39258,-1.18164 -1.17578,-1.17578 -0.39453,0 z m -3.13867,2.35742 -0.78906,0.78516 -1.57032,0.39257 -0.39258,1.96094 0.39258,1.18164 1.17774,0.39258 1.57226,-0.39258 0,-1.57226 1.57227,0.39062 1.96289,0.39453 0.7832,-0.39453 0.39258,-0.39062 -0.39258,-1.17774 -0.39062,-0.78515 -4.31836,-0.78516 m 16.5114,0.30795 -4.7282,-3.84311 -0.78711,2.74805 0,0.39258 0.39649,1.17969 0.32932,-0.76835 3.40988,-0.33781 0.036,0.71194 0.59229,0.15561 z"},"02282":{"name":"Yakutat, AK","path":"m 195.40565,544.50514 1.96115,0 0.39582,-0.788 2.35695,0.393 0.78625,-1.568 2.35517,-0.788 0.39401,2.356 0.78447,0.395 1.96472,0.391 0.78446,1.178 5.89239,3.142 1.17847,2.751 -1.5707,1.569 0,-0.783 -1.18026,-0.786 -8.63801,-1.965 -0.39401,-0.392 0,-0.785 0.78446,0 0,-0.786 -1.1767,-1.965 -0.39401,1.179 -1.57071,1.572 -3.53899,0.391 -2.35341,-1.177 -5.10436,0.392 -5.49837,1.963 1.96653,-5.104 5.10255,-1.573 0.78446,0 0,0.788 2.74919,-0.788 0.78626,0 0.39222,0.788"},"02016":{"name":"Aleutians West, AK","path":"m 62.259146,580.24714 -0.784463,0.786 -0.394014,-0.396 0,-0.39 1.178477,0 m 1.964723,6.284 0.392231,0 -0.392231,0.392 -0.786246,-0.786 0.786246,0.394 m 13.348347,25.137 1.572491,1.571 -0.394014,0.786 -3.141417,2.355 -1.178477,0.394 -1.176694,0 -3.1432,1.178 -1.178477,-0.786 4.321677,-1.572 0.390448,-3.142 0.394015,-0.392 2.355171,-0.392 0,0.784 0.394014,0.394 0.394014,-0.394 0.390449,-0.784 m -13.742362,6.284 2.358737,-1.572 0.386883,-0.786 0.786246,-0.392 1.178477,-0.391 1.178477,0.391 -0.786246,1.572 -1.570708,0.392 -1.961157,1.963 -2.356954,1.18 -1.176694,0.393 1.962939,-1.965 0,-0.785 m -56.5651136,0 0.39758,0.393 -0.39758,0.392 -0.3922314,-0.392 0.3922314,-0.393 m 3.9312286,0.393 0.784462,0 0.786246,1.572 -1.176694,0.785 -0.786246,-0.393 -0.394014,-1.964 0.786246,0 m 47.529529,0 0,0.784 -0.394014,-0.392 0.394014,-0.392 m -1.964723,0.784 0.388666,0 -0.388666,0.394 -0.39758,-0.394 0.39758,0 m -24.355786,1.18 -0.392231,-0.392 1.572491,-0.788 0.78268,1.18 -1.176694,1.571 -2.356954,0 -4.319894,-0.788 3.927662,0.396 1.96294,-0.786 0.394014,-0.393 -0.394014,0 m -10.212279,-0.786 0.784463,0 0,0.786 -0.390449,0.393 -0.786245,-0.393 0,-0.786 0.392231,0 m -5.892385,0 0.786246,0.394 -1.178477,1.571 -0.784463,0 -1.178477,-0.786 1.96294,-0.393 0.392231,-0.786 m 42.031159,0 0.394014,0.394 -0.394014,0.392 -1.570709,-0.392 0.388666,-0.394 1.182043,0 m -38.493945,1.569 1.176694,0.396 -0.392231,0.784 -3.927663,0.391 1.964723,-2.746 1.178477,0 0,0.392 -0.394014,0 -0.394014,0.783 0.788028,0 m 36.133425,-0.783 0.392231,0 0,0.393 -0.392231,0 0,-0.393 z m -2.749186,0 0.395798,0.393 -0.395798,0.786 -1.174911,0 0,-0.786 1.174911,-0.393 m -29.066128,0.783 0.394014,0.396 -0.394014,0 0,-0.396 m -2.747403,0.396 1.178477,0 0.390449,0.392 -1.176694,0.392 -0.786246,-0.392 0.394014,-0.392 m -16.1028806,0 0,0.392 -0.39758,0.392 0.39758,-0.784 m 44.3809806,0 0.394015,0.392 -0.394015,0.392 -0.392231,-0.392 0.392231,-0.392 m -6.676848,0 0.394015,0.392 0,0.392 -1.572492,0 0.394015,-0.392 0.784462,-0.392 m -7.070862,0.784 0.788029,0.391 2.749185,0.788 -3.143199,0 -1.568926,-0.394 -1.178477,-1.177 1.178477,0.392 1.174911,0 m -31.4212991,-0.392 0,0.783 -0.3940143,0 0.3940143,-0.783"},"02013":{"name":"Aleutians East, AK","path":"m 113.71099,597.92414 0,0.782 -0.39045,-0.782 0,-0.788 -0.78624,-0.394 -0.39402,0.786 -0.78446,0 -0.3958,0.786 -1.96294,1.573 -3.53186,1.176 -1.57784,-0.392 0.78981,-1.965 -1.1767,0 -1.96829,4.713 -1.568921,0.786 -1.182042,-0.392 0,-1.963 -0.780898,-0.394 -0.395797,0.784 0.395797,0.786 0.390449,1.573 -1.572491,0.392 -0.786246,-1.965 -1.178477,0.393 0.788029,1.572 0,2.355 -1.178477,-0.392 -1.572492,0.392 -2.749185,0 -0.786246,0.396 -1.176694,1.177 -1.964723,0 -0.392231,-1.177 0,-0.788 1.178477,-0.394 0.784463,-1.177 4.319894,-1.964 1.178477,0 0.394014,1.964 0.786246,0 0,-2.357 2.355171,-0.786 3.540783,-3.926 2.35517,-1.965 2.35517,-0.786 1.18026,0.392 1.17848,0.394 -0.39402,0 0,0.787 0.39402,0.788 0.78624,-0.396 0.39223,-0.786 0,-1.179 1.1767,-2.749 2.35695,-1.961 4.71213,-3.145 0.39401,0.396 0,0.388 -0.78446,0.788 -1.17848,0 0,0.787 -1.57249,0 0,0.786 -1.57071,0 0,1.567 0.39402,0 0,3.143 -0.39402,0.786 1.57071,0 0,1.575 m -3.53365,2.351 0.78268,0 0,0.788 -0.78268,0 -0.39401,-0.392 0.39401,-0.396 m -1.18026,1.181 0.78625,0 0,0.784 -0.78625,1.179 -1.56892,-0.393 -0.39402,-1.57 0.39402,-0.393 0.78624,0 0.78268,0.393 m 3.1432,0.394 0.39402,1.569 -1.96473,2.356 0,-2.356 0.39045,-0.393 0.78803,0.393 0.39223,-1.569 m 1.96472,0.39 0,1.965 -0.78446,0 0.78446,-1.965 m -10.99852,1.179 0.39401,0.394 -0.78624,0 -0.78803,-0.787 0.39223,-0.392 0.78803,0.785 m 11.7812,0.394 0.3958,0.786 -0.78625,0.392 0,-1.178 0.39045,0 m -14.924401,0.786 0,0.784 -0.390448,0.392 -0.791594,-0.784 1.182042,-0.392 m 15.320201,0.392 0.39223,0.392 -0.39223,0.392 0,-0.784 m -18.465183,3.928 1.182042,0.39 0,0.396 -1.182042,0 -0.390449,-0.396 0.390449,-0.39 m -14.532173,0.786 0.392231,0 0,0.784 -0.784462,0.787 -0.394015,-1.179 0.394015,-0.392 0.392231,0 m -1.176694,1.178 -0.394014,0.785 -1.178477,0 -0.392232,-0.785 0.786246,-0.786 1.178477,0.786 m 3.925879,0.393 0.394015,0 0,0.392 -1.570709,0 1.176694,-0.392 m -1.570708,0.392 0.394014,0.392 -1.18026,-0.392 0.786246,0"},"02150":{"name":"Kodiak Island, AK","path":"m 128.63539,582.60014 0.78268,-1.175 1.18026,-0.788 0.39045,-0.39 0.39402,0.39 0.39223,-0.39 0.78268,-1.179 1.57249,-1.18 -0.39223,-3.14 1.57249,-0.786 1.96472,-0.785 1.1767,-0.786 0,-1.963 1.18026,0 1.17491,-0.396 -0.39223,-0.784 1.96293,0 -0.39223,-1.178 0.78981,0 -0.39758,1.178 -0.78446,0.784 -0.78624,0.396 -0.78447,1.177 -0.39044,2.749 -0.78803,1.179 -1.17848,0.784 -0.78625,-0.392 -1.17847,0.392 -0.78447,0.788 -0.78624,1.963 -0.78268,0 -1.18026,1.569 -0.78446,0.396 -0.39402,-0.396 0,0.788 -2.35339,1.571 0,0.39 0.78268,-0.39 0,1.572 -1.95759,0 0,-0.788 0.78268,-0.394 0.39223,-0.786 m 16.88556,-7.067 -0.39223,0.392 -1.96294,-0.785 1.56893,-2.358 1.57606,-2.75 1.17312,-0.39 -0.38688,1.571 0,0.784 1.57071,-0.392 0.78446,0.392 0.38867,1.18 -0.38867,0.785 -3.14141,1.178 -1.18205,-0.786 -0.39401,0.394 0.78624,0.785 m -4.7139,4.714 0.39401,1.178 0.78446,0.392 -0.78446,-0.784 -0.39401,-3.145 0.78624,-0.783 2.35696,-0.394 0.78446,-0.394 1.18382,0 -0.39758,1.18 0.39758,0.391 1.56536,-1.571 0.78803,-0.392 -0.39045,1.572 0.78625,1.179 0.78446,0 -0.78446,1.571 -1.97007,1.964 -1.96294,2.357 -0.39223,0.392 -0.39223,-0.786 0.39223,-0.788 -0.39223,0 -1.17492,2.751 -1.18204,1.18 -1.17847,0.391 -0.78268,-1.177 -1.18026,-1.963 -0.39402,-1.182 -0.78268,-0.786 0.39045,-1.963 1.17848,-1.177 1.96294,-0.392 0,1.179 m -0.39223,8.641 1.5707,0.392 -0.39223,0.391 -1.57071,0 -0.39044,-0.391 0.78268,-0.392 m -1.57071,0 0.78803,0.392 -1.96651,1.573 0,-0.786 1.17848,-1.179 m -5.10614,6.675 0.78624,0.392 0,1.573 -1.57071,-0.392 0,-0.787 0.78447,-0.786"},"02060":{"name":"Bristol Bay, AK","path":"m 125.88621,568.85414 3.1432,0 0,2.359 -4.32168,0.392 0.78625,-1.177 0.39223,-1.574"},"02070":{"name":"Dillingham, AK","path":"m 125.10175,568.85414 0,0.394 -4.71213,2.357 -0.78625,-0.392 -1.5707,-2.359 -0.39402,0.394 -0.39223,1.571 0.78625,1.963 -1.18026,0.786 -0.78268,0 -2.35874,-4.32 -0.78625,-0.394 -0.39044,1.178 -0.39402,0 -1.96294,-1.567 0.39223,-0.395 -0.39223,-0.393 -3.1432,1.965 0,-1.572 0.78446,0 0.78803,-2.356 0.78447,-0.784 0.39223,-2.359 0.78624,-1.571 1.17848,0 0,-1.572 1.17669,-2.355 0.78625,-1.571 0.78624,0 1.96473,-4.714 4.71212,0 0,0.786 0.78625,0 0.78268,-0.786 0,-1.178 1.57249,0 0,0.784 5.10257,0 0,0.788 0.3958,2.748 0.39045,7.464 -0.78625,0 0,1.177 -1.56714,0 -0.78624,0.785 -0.39402,1.574 -1.17669,0 -1.17848,0.784 0.78625,3.14 m -19.63653,1.574 0,-0.786 1.17669,0 -1.17669,0.786"},"02164":{"name":"Lake and Peninsula, AK","path":"m 128.63539,582.60014 -0.39223,0.786 -0.78268,0.394 0,0.788 1.95759,0 -4.31632,3.14 -0.78625,-0.391 -0.39223,1.571 -2.35517,0.783 0,0.396 0.39223,0 0.39223,0.786 -2.35695,0 -0.78447,1.178 1.56893,1.569 -1.56893,1.963 -5.10614,1.179 0,1.182 -0.39401,0.782 0,-2.357 -1.57071,0 0.39402,-0.786 0,-3.143 -0.39402,0 0,-1.567 1.57071,0 0,-0.786 1.57249,0 0,-0.787 1.17848,0 0.78446,-0.788 0,-0.388 1.17848,0 -0.39223,-1.573 0.78446,-1.571 3.92588,-3.927 0.78803,-7.465 1.17669,-1.963 4.32168,-0.392 0,-2.359 -3.1432,0 -0.39223,-0.389 -0.39223,0.783 0,-0.394 -0.78625,-3.14 1.17848,-0.784 1.17669,0 0.39402,-1.574 0.78624,-0.785 1.56714,0 0,-1.177 0.78625,0 -0.39045,-7.464 -0.3958,-2.748 0,-0.788 6.28284,-0.392 2.35695,-0.392 2.35696,0 0.78624,3.926 -0.78624,0 0.39223,3.143 -0.78447,0 0.39224,0.784 0,2.359 -0.39224,0 0,0.786 -0.78446,0 0,0.786 -0.39401,0.785 -0.39223,0.392 -0.78625,0.785 -0.39045,1.574 -1.18026,0 0,1.567 0.39223,0.394 0,0.786 0.39223,2.751 1.5725,0 0,1.963 -1.1767,0.786 -1.96472,0.785 -1.57249,0.786 0.39223,3.14 -1.57249,1.18 -0.78268,1.179 -0.39223,0.39 -0.39402,-0.39 -0.39045,0.39 -1.18026,0.788 -0.78268,1.175 m -2.74918,7.467 0.78446,0.39 -1.56892,0 0.39223,-0.39 0.39223,0"},"02122":{"name":"Kenai Peninsula, AK","path":"m 137.27518,564.93014 0.39045,-1.574 0.78625,-0.785 0.39223,-0.392 0.39401,-0.785 0,-0.786 0.78446,0 0,-0.786 0.39224,0 0,-2.359 -0.39224,-0.784 0.78447,0 -0.39223,-3.143 0.78624,0 -0.78624,-3.926 0,-0.394 -0.39224,-3.534 0,-0.786 0.39224,0 1.5707,-0.391 1.57071,0 0.78625,-0.395 4.71925,-0.393 0,1.573 1.1767,0 0.78803,0.392 -0.78803,0.786 -1.96651,1.571 -1.57427,2.749 -1.56893,4.322 0,1.963 -1.96294,3.139 -1.96472,1.182 -1.17848,1.568 -1.17847,0.786 -0.39223,2.357 0.39223,0.786 0.39401,-0.394 1.56893,-0.392 1.96828,1.572 0,0.393 -0.78981,0 0.39223,1.178 -1.96293,0 0.39223,0.784 -1.17491,0.396 -2.75276,0 -0.39223,-2.751 0,-0.786 -0.39223,-0.394 0,-1.567 1.18026,0 m 11.39254,-2.359 2.74384,-1.963 0.79159,-1.572 -0.79159,0 -1.17313,1.176 -0.78625,-0.39 -0.78446,-0.786 0.39401,-2.357 0.77912,-1.963 0.39758,-1.574 0,-1.568 -0.78625,-1.572 1.57428,-0.786 2.35339,-2.357 0.78802,0.786 1.1767,0 1.17669,-0.786 1.17848,0.394 1.57249,0 0.39223,0.392 1.18026,0.786 0.78268,0 0,0.394 0.39402,1.569 0,0.394 0.39223,0.394 0.39401,3.534 0,0.394 -3.1432,0.392 -1.56892,0.785 0,2.358 -2.75097,2.355 -0.39223,-0.392 -0.78447,0.786 -0.78802,1.962 -3.539,1.18 -1.17313,-0.788 0,-1.177"},"02020":{"name":"Anchorage, AK","path":"m 156.52126,546.85914 -1.96294,-1.569 0.39402,-0.394 0,-0.391 0.39223,0 0.78624,-1.572 0.39045,-0.391 0.3958,0 0.39045,-0.395 0.39223,0 0.3958,0.395 3.14141,-0.788 0,1.179 0.39045,1.177 0,1.18 0.39402,0.392 0,1.571 -1.1767,0 0,0.786 0.39223,0.392 -0.39223,0 -1.18026,-0.786 -0.39223,-0.392 -1.57249,0 -1.17848,-0.394"},"02261":{"name":"Valdez-Cordova, AK","path":"m 162.02142,546.46814 0,-0.786 -0.39402,-0.392 0,-1.18 -0.39045,-1.177 0,-1.179 3.13964,-0.394 2.35873,-0.39 -0.39401,-0.396 0.39401,0 0.78268,-0.39 -0.78268,-4.32 0,-0.394 -0.78624,-1.965 1.96472,-0.392 0.39045,-0.391 -0.39045,-1.18 0,-0.392 -1.17848,-5.106 -0.39401,-1.179 1.57249,-0.786 1.17669,-0.394 0.39224,0 0.78446,-0.39 1.18026,0 1.17848,0.39 0.39223,0 6.67864,-1.569 0.78446,1.179 0.39223,1.963 0,1.178 1.17848,0 0.39399,-1.178 1.56895,0 1.9647,1.178 0.78448,2.751 0.78801,0.392 0,0.392 0.39224,1.571 3.14141,-1.18 3.92768,13.355 -0.78626,0 -2.74919,0.788 0,-0.788 -0.78446,0 -5.10255,1.573 -1.96653,5.104 -5.1079,-1.569 0,-1.18 -1.57072,0.786 0.78625,0.785 -3.1432,-1.177 -3.53365,3.143 -0.78803,-1.18 0.3958,-1.177 0.78446,0 1.57071,-0.786 0.78624,-0.786 0,-0.785 -1.96472,0.785 -1.57249,0 -0.39045,-0.394 1.57071,-1.177 0.39223,-0.392 -1.57249,0.784 -0.39045,-0.784 -0.39401,0.392 0,-1.965 -2.35517,1.179 -0.39224,1.178 -2.74918,1.179 -0.3958,0 0.3958,-2.357 -0.78625,0.394 -0.39223,1.963 1.17848,0.392 1.17848,2.749 -0.39402,1.573 1.57071,1.569 -0.78625,1.18 -2.7474,0.394 0,-0.394 -0.39401,-3.534 -0.39223,-0.394 0,-0.394 -0.39402,-1.569 0,-0.394 -0.39045,0 -0.39223,-0.392 0,-0.786 1.1767,0 0,-0.785 m 5.89238,-0.786 0,0.392 -0.78624,0 0.78624,-0.392 m -1.17848,1.963 0.78268,0.394 -0.78268,0.392 0,-0.786 m -2.35873,0 0.78803,0.394 -0.39402,0.392 -0.39401,-0.392 0,-0.394 m 1.96472,1.18 0,3.928 -1.17669,-0.786 0.39044,-1.965 0.78625,-1.177 m 2.74918,3.142 -0.78624,1.175 -0.39045,2.36 -1.57249,0.785 0,-1.571 1.96294,-3.142 0,-0.786 0.39401,-0.394 1.17848,0.394 -0.78625,1.179"},"02170":{"name":"Matanuska-Susitna, AK","path":"m 157.69974,542.14714 -0.39223,0 -0.39045,0.395 -0.3958,0 -0.39045,0.391 -0.78624,1.572 -0.39223,0 0,0.391 -3.1432,0 -0.78268,0.786 -0.78803,-0.392 -1.1767,0 0,-1.573 -4.71925,0.393 -0.78625,0.395 -1.57071,0 0,-0.788 -0.39223,-0.394 0,-3.533 -0.39223,-0.393 0,-2.749 -0.39401,-3.926 4.32167,-0.395 0,-0.785 9.4296,-6.284 5.50016,-0.789 0,-0.39 -0.39402,-0.784 4.32168,-0.787 1.96294,-0.392 0.39223,2.749 0.39401,1.179 1.17848,5.106 0,0.392 0.39045,1.18 -0.39045,0.391 -1.96472,0.392 0.78624,1.965 0,0.394 0.78268,4.32 -0.78268,0.39 -0.39401,0 0.39401,0.396 -2.35873,0.39 -3.13964,0.394 -3.14141,0.788 -0.3958,-0.395"},"02240":{"name":"SE Fairbanks, AK","path":"m 169.09049,523.68514 -1.17669,0.394 -1.57249,0.786 -0.39223,-2.749 -1.96294,0.392 -1.57249,-7.071 2.35695,-0.788 0.78446,-1.173 1.18026,-0.788 1.17848,0 4.71213,-3.533 1.5707,0 0,-0.394 0.78625,-1.179 -0.78625,-1.178 0.39224,-0.785 0.39401,-0.786 1.17669,-0.788 0.39402,-2.355 0.39223,0 1.17848,-1.177 1.17848,-0.394 1.17848,-1.571 0,-1.176 0.78623,-1.179 9.81826,34.169 -3.14141,1.18 -0.39224,-1.571 0,-0.392 -0.78801,-0.392 -0.78448,-2.751 -1.9647,-1.178 -1.56895,0 -0.39399,1.178 -1.17848,0 0,-1.178 -0.39223,-1.963 -0.78446,-1.179 -6.67864,1.569 -0.39223,0 -1.17848,-0.39 -1.18026,0 -0.78446,0.39 -0.39224,0"},"02090":{"name":"Fairbanks North Stark, AK","path":"m 155.7368,513.47614 0,-0.392 -1.17848,-5.108 0.39402,0 3.92766,-0.786 0.39223,-0.786 1.57249,0 0.78268,-0.785 0.78625,-1.178 0.78624,-0.396 0.78625,0.396 0,0.788 0.78446,0.784 0.39402,0 0.78446,1.177 0.39223,0.392 4.32168,-1.569 1.96294,-0.394 -0.39224,0.785 0.39224,2.751 -4.71213,3.533 -1.17848,0 -1.18026,0.788 -0.78446,1.173 -2.35695,0.788 -2.74919,0.396 -1.17848,-0.396 -0.39044,0 -1.57428,-1.961 -0.78446,0"},"02068":{"name":"Denali, AK","path":"m 154.55832,525.25814 -9.4296,6.284 0,0.785 -4.32167,0.395 1.5707,-4.323 0,-1.179 -1.5707,-0.39 -0.39223,-2.361 2.36051,-0.39 0.7809,-1.571 -0.39045,-1.572 1.1767,-1.177 0.78624,0 1.18205,0.392 1.5707,-3.141 5.89061,-0.786 4.7139,-0.787 1.17848,0.396 2.74919,-0.396 1.57249,7.071 -4.32168,0.787 0.39402,0.784 0,0.39 -5.50016,0.789"},"02050":{"name":"Bethel, AK","path":"m 140.02258,545.68214 0.39224,3.534 0,0.394 -2.35696,0 -2.35695,0.392 -6.28284,0.392 -5.10257,0 0,-0.784 -1.57249,0 0,1.178 -0.78268,0.786 -0.78625,0 0,-0.786 -4.71212,0 -1.96473,4.714 -0.78624,0 -0.78625,1.571 -1.17669,2.355 0,1.572 -1.17848,0 -0.78624,1.571 -0.39223,2.359 -0.78447,0.784 -0.78803,2.356 -0.78446,0 0,1.572 -1.56892,0 0,1.571 -1.17848,0.392 -2.75454,-0.392 0.78625,-0.394 0.78803,0.394 0.39401,-1.571 -0.39401,-2.359 -0.78803,-1.569 1.56893,-1.966 -0.7809,-2.354 0,-0.394 -1.96472,-3.927 -0.78268,1.572 -2.754538,1.567 -2.750968,0.396 -1.570708,-0.786 -0.392232,-1.177 -1.570708,-2.358 -3.535431,-3.145 2.356954,-1.568 -0.392232,-1.18 -0.786245,0 0,-0.392 0.392231,-0.392 2.358737,0 1.96294,-0.394 1.964723,-3.142 3.931228,-0.784 0.390448,-0.394 1.178481,-0.391 2.35873,0.785 3.53365,-0.785 1.18026,-1.182 1.96294,-1.176 -0.39401,-0.787 5.10435,0 0,-0.786 3.14499,0 0,-0.784 6.28283,-0.393 0,0.787 5.88882,0 1.96294,-0.394 3.53365,0 1.57427,-0.393 0.78268,0 0,-0.786 1.57428,-0.39 0,-0.396 0.39044,-0.39 0.78447,0 0.39401,-0.787 0,2.749 0.39223,0.393 0,3.533 0.39223,0.394 0,0.788 -1.5707,0.391 -0.39224,0 0,0.786 m -85.230093,1.963 0.395797,1.18 0.388666,0.785 1.572491,0.784 0.395797,0.394 -1.574274,0 -0.394014,-0.786 -1.171346,-1.571 0.386883,-0.786 m 28.672114,6.679 1.176694,-0.394 1.964723,1.572 -0.392232,2.355 -0.392231,0.788 -1.96294,0.783 -3.927662,-1.965 -1.18026,-1.176 0,-0.785 0.394014,-0.392 2.355171,0 1.572492,-1.18 0.392231,0.394"},"02270":{"name":"Wade Hampton, AK","path":"m 109.78333,541.36014 0.39401,0.787 -1.96294,1.176 -1.18026,1.182 -3.53365,0.785 -2.35873,-0.785 -1.178481,0.391 -0.390448,0.394 -3.931228,0.784 -1.964723,3.142 -1.96294,0.394 -2.358737,0 0,-0.394 0.786246,-0.391 0.394014,-0.786 -1.572491,-0.786 -0.392232,0.786 -1.178477,-0.394 -1.962939,-3.928 0.392231,-2.357 4.319894,-5.496 1.96294,-1.574 -0.390449,-1.177 0.784463,-1.963 1.570708,-1.963 1.572492,-0.394 2.749185,2.357 1.182043,-0.394 1.959369,-1.963 0.78625,0.394 1.56893,2.355 4.71925,0 -0.39223,0 -0.3958,1.18 -0.39044,3.142 0,3.143 0.78624,0 -0.3958,1.177 0,0.786 0.3958,0.39 1.56893,0"},"02180":{"name":"Nome, AK","path":"m 112.92474,522.90214 0,1.567 -0.78446,0 0,0.789 -0.78446,0.786 -1.57249,0 -0.78625,0.786 0,2.357 -0.39045,0 0,2.355 -4.71925,0 -1.56893,-2.355 -0.78625,-0.394 1.18205,-1.573 1.17313,0.394 1.57784,0 1.96294,-0.394 1.17847,-2.355 0.39045,-1.18 -1.17848,-3.534 -0.78446,-1.178 0,-1.179 0.78446,0 1.17848,-0.784 0,-1.177 -1.56892,-1.574 -0.78625,1.178 -3.14142,0.787 -1.57427,1.176 -6.284617,-0.39 -3.1432,0.784 -4.319894,-1.57 -0.786246,-0.787 -0.392231,-0.788 0.392231,-1.173 -0.392231,-2.358 0.392231,-0.394 0.392232,-1.175 -3.535431,-1.573 -2.355171,-1.572 0,-1.175 7.069079,-3.931 0.786245,0.786 1.964723,0.394 0,-0.394 -1.178477,-0.786 0,-0.785 5.496588,-1.965 0.395797,3.93 0,3.141 0.786246,0.394 0,1.177 0.390448,0.392 0.395797,0 0,1.573 13.747711,0.394 0.78625,0 0,-0.788 1.5707,0 0,2.357 -0.39401,0 0,3.141 -0.78625,0 0,1.574 -0.78446,0 0,6.283 0.78446,0 0,0.786 m -22.783291,-21.999 -0.392232,0.395 0,-0.395 0.392232,0 m -9.426033,10.607 0.784462,-0.392 0.394015,0.784 -0.784463,0.396 -0.394014,-0.788 m -15.314853,9.426 0.388666,-0.785 0,1.179 2.356954,1.572 1.964722,-1.18 0.784463,0.394 0.786246,0.786 0,1.177 1.962939,1.573 3.1432,0.784 -0.786246,1.571 -1.570708,-0.787 -1.176694,0.787 -1.18026,-0.393 -2.355171,-2.749 -1.572491,-0.786 -0.784463,0 -1.572491,0.786 -1.173129,-0.786 0,-0.784 0.784463,-2.359 m 36.917887,4.716 0,0.784 -1.17669,0 0.39044,-0.784 0.78625,0"},"02290":{"name":"Yukon-Koyukuk, AK","path":"m 140.41482,537.43514 -0.39224,0 -0.39044,0.39 0,0.396 -1.57428,0.39 0,0.786 -0.78268,0 -1.57427,0.393 -3.53365,0 -1.96294,0.394 -5.88882,0 0,-0.787 -6.28283,0.393 0,0.784 -3.14499,0 0,0.786 -6.67328,0 -0.3958,-0.39 0,-0.786 0.3958,-1.177 -0.78624,0 0,-3.143 0.39044,-3.142 0.3958,-1.18 0.39223,0 0,-2.355 0.39045,0 0,-2.357 0.78625,-0.786 1.57249,0 0.78446,-0.786 0,-0.789 0.78446,0 0,-2.353 -0.78446,0 0,-6.283 0.78446,0 0,-1.574 0.78625,0 0,-3.141 0.39401,0 0,-2.357 -0.78446,0 0,-3.928 2.35517,0 0,-1.569 3.92766,0 0,-3.534 3.13964,0 0,1.568 1.57249,0 0,-1.568 1.57071,0 0.78446,0.783 0,0.785 1.57249,-0.395 0,-2.355 2.35517,0 -0.39401,-0.786 1.57071,-0.784 0.78268,0 0.39579,-1.571 -0.39579,-2.357 -0.78268,-0.786 -1.57071,0 0,-2.354 -1.56893,-1.572 0,-0.786 -0.78446,0 0,-1.963 1.17848,0 18.45448,-1.962 0.39758,0 8.24934,-1.576 3.14142,-0.786 -0.78625,-4.318 16.10289,-3.928 6.67862,23.174 -0.78623,1.179 0,1.176 -1.17848,1.571 -1.17848,0.394 -1.17848,1.177 -0.39223,0 -0.39402,2.355 -1.17669,0.788 -0.39401,0.786 -0.39224,0.785 0.78625,1.178 -0.78625,1.179 0,0.394 -1.5707,0 -0.39224,-2.751 0.39224,-0.785 -1.96294,0.394 -4.32168,1.569 -0.39223,-0.392 -0.78446,-1.177 -0.39402,0 -0.78446,-0.784 0,-0.788 -0.78625,-0.396 -0.78624,0.396 -0.78625,1.178 -0.78268,0.785 -1.57249,0 -0.39223,0.786 -3.92766,0.786 -0.39402,0 1.17848,5.108 0,0.392 0.78446,0 1.57428,1.961 0.39044,0 -4.7139,0.787 -5.89061,0.786 -1.5707,3.141 -1.18205,-0.392 -0.78624,0 -1.1767,1.177 0.39045,1.572 -0.7809,1.571 -2.36051,0.39 0.39223,2.361 1.5707,0.39 0,1.179 -1.5707,4.323 0.39401,3.926 -0.39401,0.787 -0.39223,0"},"01069":{"name":"Houston, AL","path":"m 730.3972,455.30114 6.44329,-0.587 -0.20859,0.61 -0.1355,0.595 0.27278,1.632 0.19968,0.465 0.16937,0.1 0.16938,0 0.14619,0.04 0.92888,1.022 0.14619,0.262 0.21216,0.458 0.57587,1.665 -9.49735,1.156 -0.15333,-1.822 -0.31556,-2.814 -1.9362,0.33 -2.44253,0.257 0.69353,-1.744 0.11054,-0.1 0.4582,-0.152 0.32983,-0.02 0.312,0.02 0.6668,0.159 0.50811,0.137 0.88431,0.08 0.29774,-0.03 -0.10533,-0.92153 1.34977,-0.14547 -0.0802,-0.658"},"01067":{"name":"Henry, AL","path":"m 729.63413,448.33314 -0.21751,-2.002 3.88844,-0.337 0.10341,-0.176 0.29774,-0.892 0.51525,-0.651 0.0981,-0.06 0.11053,0 0.32983,0.104 0.18542,0.162 2.13766,5.329 -0.24247,4.901 -6.44329,0.587 -0.76307,-6.968"},"01061":{"name":"Geneva, AL","path":"m 723.39765,458.81114 1.57428,-0.144 2.44253,-0.257 1.9362,-0.33 0.31556,2.813 0.15333,1.823 -0.19611,0.03 -10.49933,1.215 -2.98274,0.296 -0.58478,-4.525 7.84106,-0.924"},"01045":{"name":"Dale, AL","path":"m 723.19619,449.07314 6.43794,-0.74 0.76307,6.968 0.0802,0.658 -1.34977,0.14547 0.10533,0.92153 -0.29774,0.03 -0.88431,-0.08 -0.50811,-0.137 -0.6668,-0.159 -0.312,-0.02 -0.32983,0.02 -0.4582,0.152 -0.11054,0.1 -0.69353,1.744 -1.57428,0.144 -0.99484,-9.651 0.79338,-0.09"},"01031":{"name":"Coffee, AL","path":"m 722.40281,449.16014 0.99484,9.651 -7.84106,0.924 -0.60261,-5.672 -0.22642,-2.059 0.73989,-0.08 0.23177,-0.193 -0.23177,-1.833 6.93536,-0.74"},"01039":{"name":"Covington, AL","path":"m 708.81378,452.72114 1.92906,-0.243 0.20274,1.67912 1.75485,-1.91012 0.36193,-0.03 0.082,0.335 0.15333,1.325 0.32983,0.3 1.32645,-0.113 0.60261,5.672 0.58478,4.525 -3.94549,0.401 -5.89951,0.565 -0.65075,-4.493 -0.76842,-7.586 3.93658,-0.426"},"01097":{"name":"Mobile, AL","path":"m 680.80846,463.68914 0.16046,0.321 0.42788,1.817 0.58657,3.121 -0.83795,1.548 -0.55447,2.168 -0.0374,0.49 0.33518,0.811 0.42789,0.822 -0.28348,-0.1 -0.0731,0.05 -0.9057,0.963 -0.54734,3.368 -1.7276,3.334 -1.14817,-0.367 -1.60815,-0.03 -0.44036,0.07 -0.2086,0.07 -0.37084,0.392 0,0 -1.0198,-8.363 -0.73811,-5.996 -0.34053,-2.655 2.00038,-0.158 1.97008,-0.617 3.99362,-0.564 0.93958,-0.506"},"01003":{"name":"Baldwin, AL","path":"m 684.60954,460.25014 3.02374,0.957 0.83439,5.632 -0.44394,3.078 0.25852,0.438 2.00038,2.181 0.62935,0.433 0.11054,0.04 0.32983,0.06 0.66679,0.344 0.88431,0.547 0.24068,0.394 0.0713,0.273 0.0321,0.378 -0.19968,5.023 -0.26565,2.513 -1.2694,0.573 -2.67609,0.946 -2.80445,0.708 -0.74703,0.12 -2.45857,0.155 -0.0963,-0.129 1.0198,-0.37 2.66718,-1.705 -3.53543,-7.176 -0.25674,-0.36 -0.11945,-0.1 -0.9164,-0.33 -0.27277,-0.09 -0.42789,-0.822 -0.33518,-0.811 0.0374,-0.49 0.55447,-2.168 0.83795,-1.548 -0.58657,-3.121 -0.42788,-1.817 -0.16046,-0.321 0.45998,-0.74 3.3411,-2.699"},"01053":{"name":"Escambia, AL","path":"m 705.64562,460.73314 0.65075,4.493 -1.88628,0.142 -7.39356,0.66 -8.54886,0.811 -0.83439,-5.632 1.14639,0.296 0.19433,-0.08 1.09112,-0.77 1.22126,-0.141 12.96147,-1.234 -0.0321,0.152 -0.0214,1.004 0.0214,0.208 0.066,0.09 0.15868,0.136 0.89143,0.02 0.31379,-0.161"},"01035":{"name":"Conecuh, AL","path":"m 704.8772,453.14714 0.76842,7.586 -0.31379,0.16 -0.89143,-0.02 -0.15868,-0.135 -0.066,-0.09 -0.0214,-0.208 0.0214,-1.004 0.0321,-0.152 -12.96147,1.234 0.009,-0.132 0.13015,-0.314 2.11983,-3.007 1.18917,-1.334 1.39064,-4.074 0.0571,-0.417 2.00038,-1.808 1.64559,-0.907 0.44394,-0.218 0.11945,-0.02 0.25139,2.749 1.03584,1.951 0.51347,0.387 2.685,-0.225"},"01129":{"name":"Washington, AL","path":"m 670.2093,452.19814 7.31333,-0.627 0.0232,0.973 0.34765,1.261 1.00376,0.861 0.26565,0.16 0.8112,0.282 0.72385,0.182 0.76307,0.701 0.55269,2.234 0.025,0.144 -0.0553,0.749 -0.1872,0.706 -0.39223,0.41 -0.34588,0.465 -0.27278,0.925 0.48316,1.325 -0.45998,0.74 -0.93958,0.506 -3.99362,0.564 -1.97008,0.617 -2.00038,0.158 -1.6955,-13.336"},"01023":{"name":"Choctaw, AL","path":"m 669.92047,438.10514 9.47595,-0.829 -0.90034,0.128 -0.50099,0.314 -0.26387,0.289 -1.46908,5.48 0.0891,0.845 0.0963,0.232 0.14263,0.159 0.16046,0.09 0.4992,0.06 0.27278,6.7 -7.31333,0.627 -0.46533,-4.507 0.13015,-7.707 0.0464,-1.879"},"01025":{"name":"Clarke, AL","path":"m 685.10874,444.17014 3.56752,3.432 -0.30487,0.369 0.30281,2.61922 -1.00348,0.15178 0.28883,3.081 0.25138,2.248 -0.14441,0.699 -0.41184,0.547 -0.23356,0.137 -0.25673,-0.04 -0.41006,-0.315 -0.23891,0.02 -0.21751,0.08 -1.79713,1.526 -0.3334,0.834 0,0.105 0.0499,0.241 0.0713,0.135 0.32092,0.211 -3.3411,2.699 -0.48316,-1.325 0.27278,-0.925 0.34588,-0.465 0.39223,-0.41 0.1872,-0.706 0.0553,-0.749 -0.025,-0.144 -0.55269,-2.234 -0.76307,-0.701 -0.72385,-0.182 -0.8112,-0.282 -0.26565,-0.16 -1.00376,-0.861 -0.34765,-1.261 -0.0232,-0.973 -0.27278,-6.7 7.85889,-0.701"},"01099":{"name":"Monroe, AL","path":"m 700.19895,446.50214 0.19255,1.783 -0.11945,0.02 -0.44394,0.218 -1.64559,0.907 -2.00038,1.808 -0.0571,0.417 -1.39064,4.074 -1.18917,1.334 -2.11983,3.007 -0.13015,0.314 -0.009,0.132 -1.22126,0.141 -1.09112,0.77 -0.19433,0.08 -1.14639,-0.296 -3.02374,-0.957 -0.32092,-0.21 -0.0713,-0.136 -0.0499,-0.241 0,-0.105 0.3334,-0.834 1.79713,-1.526 0.21751,-0.08 0.23891,-0.02 0.41006,0.315 0.25673,0.04 0.23356,-0.137 0.41184,-0.547 0.14441,-0.699 -0.25138,-2.248 -0.28883,-3.081 1.00348,-0.15178 -0.30281,-2.61922 0.30487,-0.369 5.20063,-0.529 2.82764,-0.209 3.49442,-0.362"},"01131":{"name":"Wilcox, AL","path":"m 688.3393,437.55014 0.5206,-0.139 0.12123,0.07 2.40153,1.68 3.09506,2.852 5.24699,-0.506 0.92303,-0.11706 0.218,1.99806 -0.99696,0.14541 0.33017,2.96558 -3.49442,0.362 -2.82764,0.209 -5.20063,0.529 -3.56752,-3.432 0.80407,-0.403 -0.24247,-2.906 1.92719,-0.2218 -0.23168,-2.7662 0.16224,-0.276 0.17473,-0.06 0.33696,-0.02 0.29952,0.04"},"01013":{"name":"Butler, AL","path":"m 700.86574,443.39114 7.92486,-0.836 0.61866,5.659 0.0874,1.421 -0.98771,0.103 0.30487,2.983 -3.93658,0.426 -2.685,0.225 -0.51347,-0.387 -1.03584,-1.951 -0.25139,-2.749 -0.19255,-1.783 -0.33017,-2.96558 0.99696,-0.14541"},"01041":{"name":"Crenshaw, AL","path":"m 713.75589,442.00014 0.37075,3.22245 0.91292,-0.13489 0.37374,3.79803 -0.59632,1.08186 0.65047,-0.0674 0.23177,1.833 -0.23177,0.193 -0.73989,0.08 0.22642,2.059 -1.32645,0.113 -0.32983,-0.3 -0.15333,-1.325 -0.082,-0.335 -0.36193,0.03 -1.75485,1.91012 -0.20274,-1.67912 -1.92906,0.243 -0.30487,-2.983 0.98771,-0.103 -0.0874,-1.421 -0.61866,-5.659 0.60974,-2.058 1.98434,-0.224 0.23534,1.986 2.13587,-0.259"},"01109":{"name":"Pike, AL","path":"m 717.3145,439.67214 0.79516,-0.332 0.84508,0.07 0.36014,0.129 0.93244,1.76 1.20217,-0.18217 0.25979,2.03917 2.58872,-0.283 -1.10181,6.197 -0.79338,0.09 -6.93536,0.74 -0.65047,0.0674 0.59632,-1.08186 -0.37374,-3.79803 -0.91292,0.13489 -0.37075,-3.22245 3.79871,-0.52452 -0.2401,-1.80348"},"01011":{"name":"Bullock, AL","path":"m 727.72825,434.27714 0.6757,1.972 -0.312,0.2 0.16759,2.009 0.12837,0.843 -1.58319,0.53 -1.52436,0.572 -0.8843,1.735 -0.1141,0.556 0.016,0.182 -2.58872,0.283 -0.25979,-2.03917 -1.20217,0.18217 -0.93244,-1.76 -0.36014,-0.129 -0.84508,-0.07 -0.79516,0.332 -0.66652,-5.06378 1.62214,-0.21722 1.18383,0.779 0.15867,0.06 8.11563,-0.95"},"01087":{"name":"Macon, AL","path":"m 721.77346,426.55514 0.041,0.323 4.17013,1.51 0.97345,-0.112 0.31378,1.993 0.45642,4.008 -8.11563,0.95 -0.15867,-0.06 -1.18383,-0.779 -2.35517,-3.125 2.46036,-1.953 1.70442,-0.21 -0.17158,-2.28392 1.86531,-0.26408"},"01085":{"name":"Lowndes, AL","path":"m 700.8497,434.62514 0.52594,-1.197 0.0606,-0.107 0.85043,-0.151 2.30704,-0.273 2.37834,1.038 2.42827,6.562 -0.60974,2.058 -7.92486,0.836 -0.218,-1.99806 -0.92303,0.11706 1.12499,-6.885"},"01101":{"name":"Montgomery, AL","path":"m 708.47682,432.27014 2.64934,-2.404 0.21751,0.03 0.28348,0.1 0.15154,0.102 0.9164,0.989 -0.0892,0.154 1.52614,0.289 1.33537,0.112 0.4475,-0.369 2.35517,3.125 -1.62214,0.21722 0.66652,5.06378 0.2401,1.80348 -3.79871,0.52452 -2.13587,0.259 -0.23534,-1.986 -1.98434,0.225 -2.42827,-6.563 1.50475,-1.665"},"01051":{"name":"Elmore, AL","path":"m 715.4104,423.55114 2.37121,-0.24 0.0553,0.02 0.041,0.306 -0.17829,0.674 0.54913,4.75 0.0624,0.184 0.0642,0.07 -2.46036,1.952 -0.4475,0.369 -1.33537,-0.112 -1.52614,-0.289 0.0892,-0.154 -0.9164,-0.989 -0.15154,-0.102 -0.28348,-0.1 -0.21751,-0.03 -2.64934,2.403 -0.73276,-6.821 0.57943,-1.15 7.08691,-0.747"},"01001":{"name":"Autauga, AL","path":"m 707.74406,425.44814 0.73276,6.822 -1.50475,1.665 -2.37834,-1.038 -2.30704,0.273 -0.85043,0.151 -0.0606,0.107 -0.52594,1.197 -2.67431,-7.232 1.93442,-0.1 1.9772,-0.224 -0.10876,-1.011 5.76581,-0.612"},"01047":{"name":"Dallas, AL","path":"m 696.093,426.08114 0.15862,1.44051 1.92377,-0.12851 2.67431,7.232 -1.12499,6.885 -5.24699,0.506 -3.09506,-2.852 -2.40153,-1.68 -0.12123,-0.07 -0.5206,0.139 -0.10341,-0.982 0.98593,-0.09 -0.39223,-4.012 3.33397,-0.335 2.62616,-0.348 0.15511,-0.328 0.52238,-1.815 0.29596,-1.394 0.32983,-2.161"},"01091":{"name":"Marengo, AL","path":"m 681.25239,432.16614 1.59032,-0.137 0.10341,1.005 3.93836,-0.378 0.37852,3.99384 0.97289,-0.0818 0.10341,0.982 -0.29952,-0.04 -0.33696,0.02 -0.17473,0.06 -0.16224,0.276 0.23168,2.7662 -1.92719,0.2218 0.24247,2.906 -0.80407,0.403 -7.85889,0.701 -0.4992,-0.06 -0.16046,-0.09 -0.14263,-0.159 -0.0963,-0.232 -0.0891,-0.845 1.46908,-5.48 0.26387,-0.289 0.50099,-0.314 0.90034,-0.128 -0.84686,-0.708 -1.47622,-0.563 -0.041,-0.136 0.0339,-0.923 0.10341,-0.289 2.14479,-2.179 0.16046,-0.112 0.97166,-0.305 0.80586,0.105"},"01119":{"name":"Sumter, AL","path":"m 670.21999,422.28914 3.21987,-0.376 -0.2086,1.959 0.3851,1.68 2.31595,4.862 0.4582,0.563 0.0624,0.02 0.8219,-0.241 0.64005,-0.297 0.14619,-0.145 0.37084,-0.258 0.32805,-0.161 0.16937,0 0.19968,0.121 1.31754,2.042 -0.97166,0.305 -0.16046,0.112 -2.14479,2.179 -0.10341,0.288 -0.0339,0.924 0.041,0.135 1.47622,0.564 0.84686,0.708 -9.47595,0.829 0.13728,-6.246 0.1355,-8.131 0.0267,-1.439"},"01105":{"name":"Perry, AL","path":"m 688.05047,423.46414 1.95046,-0.194 0.0963,1.005 1.32824,-0.128 4.41082,-0.537 0.25673,2.471 -0.32983,2.161 -0.29596,1.394 -0.52238,1.815 -0.15511,0.328 -2.62616,0.348 -3.33397,0.335 0.39223,4.012 -0.98593,0.09 -0.97291,0.0857 -0.3785,-3.99769 -0.37619,-3.984 0.96992,-0.12311 -0.20685,-2.86889 0.97794,-0.12737 -0.19883,-2.08863"},"01021":{"name":"Chilton, AL","path":"m 705.02696,418.45614 1.10892,3.65648 2.18761,2.18552 -0.57943,1.15 -5.76581,0.612 0.10876,1.011 -1.9772,0.224 -1.93442,0.1 -1.92377,0.12851 -0.15862,-1.44051 -0.25673,-2.471 2.74027,-0.242 -0.32983,-3.391 -0.24247,-1.51 -0.0553,-0.509 3.08436,-0.235 2.10736,-0.11 0.32804,0.442 0.61866,0.385 0.93957,0.02"},"01037":{"name":"Coosa, AL","path":"m 711.37576,416.09693 3.13976,-0.3628 0.89488,7.81701 -7.08691,0.747 -2.18761,-2.18552 -1.10892,-3.65648 0.30487,-1.945 6.04393,-0.41421"},"01123":{"name":"Tallapoosa, AL","path":"m 721.29922,414.75314 1.15173,-0.137 0.95562,8.687 -1.9594,0.25458 0.32629,2.99742 -1.86531,0.26408 0.17158,2.28392 -1.70442,0.211 -0.0642,-0.07 -0.0624,-0.184 -0.54913,-4.75 0.17829,-0.674 -0.041,-0.306 -0.0553,-0.02 -2.37121,0.24 -0.89488,-7.81701 6.7837,-0.98099"},"01027":{"name":"Clay, AL","path":"m 716.56035,406.16314 -0.62757,0.579 0.0143,0.168 1.99503,-0.209 0.29061,-0.363 -0.0339,-0.344 2.32129,-0.195 0.77912,8.954 -6.7837,0.98099 -3.13976,0.3707 -0.18377,-2.33969 1.67462,-0.20833 -0.10734,-2.26767 2.06695,-0.20406 -0.0826,-2.00694 0.74875,-0.32771 0.0553,-2.47729 1.01267,-0.11"},"01121":{"name":"Talladega, AL","path":"m 710.54851,402.61014 1.80961,-0.09 0.54378,0.601 0.17829,0.861 0.54734,0.451 3.80108,-0.378 0.0463,0.674 -0.91461,1.432 -1.01267,0.11 -0.0553,2.47729 -0.74875,0.32771 0.0826,2.00694 -2.06695,0.20406 0.10737,2.26859 -1.67459,0.20925 0.18371,2.33785 -6.04393,0.40631 -0.0802,-1.469 2.17867,-3.206 0.17829,-1.391 -0.26743,-0.385 -0.52951,-0.379 2.03425,-2.498 0.79338,-1.712 -0.0874,-0.112 -0.19255,-0.426 -0.009,-0.12 0.88431,-2.027 0.31378,-0.176"},"01117":{"name":"Shelby, AL","path":"m 703.83066,406.38814 2.98096,3.293 0.52951,0.379 0.26743,0.385 -0.17829,1.391 -2.17867,3.206 0.0802,1.469 -0.30487,1.945 -0.93957,-0.02 -0.61866,-0.385 -0.32804,-0.442 -2.10736,0.11 -3.08436,0.235 0.0553,0.509 -1.67552,-0.6542 -0.59683,-1.92903 -0.85043,-0.18068 -0.0828,-1.48909 0.90035,-0.315 0.55447,-0.303 0.39401,-0.291 0.71672,-1.253 3.6531,-3.543 1.32824,-0.146 1.52613,-1.476 -0.041,-0.499"},"01007":{"name":"Bibb, AL","path":"m 694.05162,414.27914 0.74702,-0.07 0.0828,1.48909 0.85043,0.18068 0.59683,1.92903 1.67552,0.6542 0.24247,1.51 0.32983,3.391 -2.74027,0.242 -4.41082,0.537 -1.32824,0.128 -0.0963,-1.005 -1.95046,0.194 -0.28347,-2.965 1.9772,-0.242 -0.0553,-2.033 0.48138,-0.948 1.50835,-0.16609 -0.0607,-1.44091 0.81833,-0.909 0.16046,-0.1 1.25336,-0.369 0.20147,-0.02"},"01065":{"name":"Hale, AL","path":"m 682.14383,420.92314 5.62317,-0.424 0.28347,2.965 0.19883,2.08863 -0.97794,0.12737 0.20685,2.86889 -0.96992,0.12311 0.37619,3.984 -3.93836,0.378 -0.10341,-1.005 -1.59032,0.137 1.02159,-2.154 -0.95027,-1.134 -0.75416,-2.242 -0.34944,-1.751 -0.0303,-0.49 1.95403,-3.472"},"01063":{"name":"Greene, AL","path":"m 679.52301,417.75014 0.28074,3.35164 2.34008,-0.17864 -1.95403,3.472 0.0303,0.49 0.34944,1.751 0.75416,2.242 0.95027,1.134 -1.02159,2.154 -0.80586,-0.105 -1.31754,-2.041 -0.19968,-0.122 -0.16937,0 -0.32805,0.161 -0.37084,0.258 -0.14619,0.145 -0.64005,0.297 -0.8219,0.241 -0.0624,-0.02 -0.4582,-0.563 -2.31595,-4.862 -0.3851,-1.68 0.2086,-1.959 -0.0232,-0.103 1.65628,-1.118 1.45304,-0.811 0.64362,-0.227 2.35339,-1.904"},"01107":{"name":"Pickens, AL","path":"m 678.72785,409.21514 0.79516,8.535 -2.35339,1.904 -0.64362,0.226 -1.45304,0.812 -1.65628,1.117 0.0232,0.104 -3.21987,0.376 0.1355,-6.896 0.10519,-5.704 6.25787,-0.288 2.0093,-0.186"},"01125":{"name":"Tuscaloosa, AL","path":"m 686.49225,406.73314 0.34231,-0.02 1.68124,0.177 0.16046,1.679 0.98058,-0.06 -0.66679,0.589 0.33696,1.116 1.28723,1.405 0.76842,0.666 1.76147,1.054 0.90749,0.933 -0.20147,0.02 -1.25336,0.369 -0.16046,0.1 -0.81833,0.909 0.0607,1.44091 -1.50835,0.16609 -0.48138,0.948 0.0553,2.033 -1.9772,0.242 -5.62317,0.424 -2.34008,0.17864 -0.28074,-3.35164 -0.79516,-8.535 1.90589,-0.06 1.4049,-0.16 -0.0981,-1.181 0.64988,-0.047 -0.0615,-0.86002 3.96332,-0.177"},"01073":{"name":"Jefferson, AL","path":"m 694.94483,401.00314 1.25158,-0.772 2.37121,-0.167 2.16084,1.26 1.43878,0.139 0.66679,-0.06 0.43502,0.972 0.14442,1.501 -0.12124,0.513 -0.16046,0.02 -0.12836,0.344 0.11945,1.336 0.18542,0.167 0.52238,0.138 0.041,0.499 -1.52613,1.476 -1.32824,0.146 -3.6531,3.543 -0.71672,1.253 -0.39401,0.291 -0.55447,0.303 -0.90035,0.315 -0.74702,0.07 -0.90749,-0.933 -1.76147,-1.054 -0.76842,-0.666 -1.28723,-1.405 -0.33696,-1.116 0.66679,-0.589 0.42611,-0.24 0.54555,-0.402 2.08953,-2.305 0.40293,-0.709 0.34409,-0.697 1.21414,-2.468 0.26564,-0.692"},"01127":{"name":"Walker, AL","path":"m 690.82997,397.25914 0.65899,2.24885 3.17418,0.52415 0.28169,0.971 -0.26564,0.692 -1.21414,2.468 -0.34409,0.697 -0.40293,0.709 -2.08953,2.306 -0.54555,0.401 -0.42611,0.24 -0.98058,0.06 -0.16046,-1.679 -1.68124,-0.177 -0.34231,0.02 -0.18542,-2.002 -1.98612,0.113 -0.42254,-4.031 -1.9879,0.07 -0.082,-0.997 -0.18364,-2.002 9.18535,-0.626"},"01075":{"name":"Lamar, AL","path":"m 670.74772,397.51614 4.17192,-0.209 0.057,0.69861 0.66681,-0.0636 0.32092,3.753 0.57052,5.584 0.18363,2.122 -6.25787,0.288 0.10162,-4.894 0.18542,-7.279"},"01057":{"name":"Fayette, AL","path":"m 675.84316,400.29714 5.9851,-0.41 0.082,0.997 1.9879,-0.07 0.42254,4.031 1.98612,-0.113 0.18542,2.002 -3.96332,0.177 0.0615,0.86002 -0.64988,0.047 0.0981,1.181 -1.4049,0.16 -1.90589,0.06 -2.0093,0.186 -0.18363,-2.122 -0.57052,-5.584 -0.12124,-1.398"},"01059":{"name":"Franklin, AL","path":"m 671.02228,385.35214 11.47456,-0.651 0.53842,6.049 -1.98612,0.119 -1.58853,0.07 -4.163,0.291 -4.41261,0.18 0.0731,-3.298 0.0642,-2.756"},"01093":{"name":"Marion, AL","path":"m 670.885,391.40614 4.41261,-0.18 4.163,-0.291 1.58853,-0.07 0.59548,7.016 0.18364,2.002 -5.9851,0.41 -0.19968,-2.355 -0.66681,0.0636 -0.057,-0.69861 -4.17192,0.209 0.0178,-0.658 0.11945,-5.452"},"01133":{"name":"Winston, AL","path":"m 683.03526,390.75014 7.90703,-0.603 -0.11232,7.112 -9.18535,0.626 -0.59548,-7.016 1.98612,-0.119"},"01043":{"name":"Cullman, AL","path":"m 690.91198,389.81014 9.94663,-0.747 2.53168,0.803 -0.5937,0.04 -0.55804,0.187 -0.0784,0.06 -1.06081,2.659 -0.10341,0.178 -2.52454,3.231 -1.70264,1.501 -1.39955,1.385 -0.70602,0.931 -3.17418,-0.52415 -0.65899,-2.24885 0.11232,-7.112 -0.0303,-0.337"},"01009":{"name":"Blount, AL","path":"m 703.39029,389.86614 3.18064,3.4 -0.29774,0.65 -0.58478,3.135 0.84329,-0.09 -0.67749,1.77 -0.4885,0.633 -0.5313,0.572 -0.15154,0 -0.16937,-0.1 -2.42649,0.779 0.0802,0.845 -1.43878,-0.139 -2.16084,-1.26 -2.37121,0.167 -1.25158,0.772 -0.28169,-0.971 0.70602,-0.931 1.39955,-1.385 1.70264,-1.501 2.52454,-3.231 0.10341,-0.178 1.06081,-2.659 0.0784,-0.06 0.55804,-0.187 0.5937,-0.04"},"01115":{"name":"St. Clair, AL","path":"m 706.5317,396.96014 -0.016,-0.08 0.11945,-0.249 0.42611,-0.699 0.25851,-0.193 1.48692,-0.144 0.18363,0.103 0.14263,0.25 0.41898,0.973 0.4992,0.475 0.24069,0.151 0.39401,-0.159 0.99484,1.316 0.23534,0.216 0.0642,0.146 0.025,1.471 -1.44948,1.309 -0.0713,0.235 0.0642,0.528 -0.31378,0.176 -0.88431,2.027 0.009,0.12 0.19255,0.426 0.0874,0.112 -0.79338,1.712 -2.03425,2.498 -2.98096,-3.293 -0.52238,-0.138 -0.18542,-0.167 -0.11945,-1.336 0.12836,-0.344 0.16046,-0.02 0.12124,-0.513 -0.14442,-1.501 -0.43502,-0.972 -0.66679,0.06 -0.0802,-0.845 2.42649,-0.779 0.16937,0.1 0.15154,0 0.5313,-0.572 0.4885,-0.633 0.67749,-1.77"},"01015":{"name":"Calhoun, AL","path":"m 717.53201,395.14514 4.00076,0.185 -0.003,1.69821 -1.84403,0.0298 0.24069,2.362 0.30487,2.871 -0.27278,0.522 -1.50118,1.815 -0.98236,0.103 -0.0463,-0.674 -3.80108,0.378 -0.54734,-0.451 -0.17829,-0.861 -0.54378,-0.601 -1.80961,0.09 -0.0642,-0.528 0.0713,-0.235 1.44948,-1.309 -0.025,-1.471 -0.0642,-0.146 -0.23534,-0.216 0.30666,-0.03 0.49742,-0.28 0.46711,-0.363 1.04476,-1.077 0.56161,-0.906 0.32091,-0.201 1.13391,-0.113 1.55823,0.168 -0.0392,-0.763"},"01055":{"name":"Etowah, AL","path":"m 710.05109,390.54314 4.9332,-0.508 0.26565,2.049 0.83616,0.07 1.42987,2.513 0.016,0.482 0.0392,0.763 -1.55823,-0.168 -1.13391,0.113 -0.32091,0.201 -0.56161,0.906 -1.04476,1.077 -0.46711,0.363 -0.49742,0.28 -0.30666,0.03 -0.99484,-1.315 -0.39401,0.158 -0.24069,-0.151 -0.4992,-0.475 -0.41898,-0.973 -0.14263,-0.25 -0.18363,-0.103 -1.48692,0.144 -0.25851,0.193 -0.42611,0.699 -0.11945,0.249 0.016,0.08 -0.84329,0.09 0.58478,-3.134 0.29774,-0.651 3.48016,-2.723"},"01095":{"name":"Marshall, AL","path":"m 704.95565,381.79114 3.34288,-0.33 0.23177,1.327 1.76148,1.324 -0.24069,6.431 -3.48016,2.723 -3.18064,-3.4 -2.53168,-0.803 0.0392,-5.61 0.41184,0.957 0.65075,0.401 0.62578,0.107 0.65075,-0.217 1.8631,-0.951 0.26565,-0.682 0.14619,-0.876 -0.10697,-0.297 -0.24782,-0.12 -0.20146,0.02"},"01103":{"name":"Morgan, AL","path":"m 696.39074,383.78414 4.5071,-0.331 -0.0392,5.61 -9.94663,0.747 -0.71671,-8.575 6.19547,2.549"},"01079":{"name":"Lawrence, AL","path":"m 683.94274,379.16314 3.18956,0.665 3.06297,1.407 0.71671,8.575 0.0303,0.337 -7.90703,0.603 -0.53842,-6.049 1.33272,-2.0576 0.11318,-3.4804"},"01033":{"name":"Colbert, AL","path":"m 671.21483,378.12614 0.71494,-0.336 0.32269,-0.08 1.30863,0.439 0.41719,0.308 0.28348,0.383 0.12837,0.241 0.15154,0.515 0.22464,0.339 1.48691,1.166 0.15155,0.09 0.56339,0.169 0.85221,-0.153 0.49029,-0.275 0.0963,-0.103 0.32092,-0.555 2.17688,-1.292 0.73989,-0.314 0.40293,-0.09 0.14441,0.02 1.75078,0.57 -0.11318,3.4804 -1.33272,2.0576 -11.47456,0.651 0.19255,-7.226"},"01077":{"name":"Lauderdale, AL","path":"m 687.3195,374.22314 0.23177,-0.02 -0.41897,5.623 -3.18956,-0.665 -1.75078,-0.57 -0.14441,-0.02 -0.40293,0.09 -0.73989,0.314 -2.17688,1.292 -0.32092,0.555 -0.0963,0.103 -0.49029,0.275 -0.85221,0.153 -0.56339,-0.169 -0.15155,-0.09 -1.48691,-1.166 -0.22464,-0.339 -0.15154,-0.515 -0.12837,-0.241 -0.28348,-0.383 -0.41719,-0.308 -1.30863,-0.439 -0.32269,0.08 -0.71494,0.335 -2.10735,-2.225 3.99541,-0.577 7.07087,-0.548 7.14574,-0.552"},"01083":{"name":"Limestone, AL","path":"m 694.54369,373.71514 0.97701,-0.09 0.87004,10.164 -6.19547,-2.549 -3.06297,-1.407 0.41897,-5.623 6.99242,-0.49"},"01089":{"name":"Madison, AL","path":"m 704.32808,372.75914 0.39579,1.034 -0.49207,2.589 -0.17472,2.355 0.21751,2.364 0.68106,0.69 0.20146,-0.02 0.24782,0.12 0.10697,0.297 -0.14619,0.876 -0.26565,0.683 -1.8631,0.95 -0.65075,0.217 -0.62578,-0.107 -0.65075,-0.401 -0.41184,-0.957 -4.5071,0.331 -0.87004,-10.164 8.66653,-0.854 0.14085,0"},"01071":{"name":"Jackson, AL","path":"m 717.49101,371.51314 0.72384,2.811 -1.17134,2.58 -2.02,3.256 -3.21451,3.407 -0.52951,0.353 -0.42611,0.169 -0.5616,0.02 -1.76148,-1.324 -0.23177,-1.327 -3.34288,0.33 -0.68106,-0.69 -0.21751,-2.364 0.17472,-2.355 0.49207,-2.589 -0.39579,-1.034 8.33491,-0.811 4.82802,-0.435"},"01049":{"name":"DeKalb, AL","path":"m 718.21485,374.32414 1.51187,5.344 0.22465,0.79 0.40827,1.454 -0.11232,-0.04 -0.0695,0.05 -0.89322,1.036 -0.11232,1.334 -0.58656,1.262 -2.44432,2.983 -0.65074,0.08 -0.45464,0.432 -0.13015,0.251 0.0784,0.738 -4.9332,0.508 0.24069,-6.431 0.5616,-0.02 0.42611,-0.169 0.52951,-0.353 3.21451,-3.407 2.02,-3.256 1.17134,-2.58"},"01019":{"name":"Cherokee, AL","path":"m 720.35964,381.91214 1.57606,5.351 1.28545,4.644 0.73098,2.628 -2.41936,0.795 -4.00076,-0.185 -0.016,-0.482 -1.42987,-2.513 -0.83616,-0.07 -0.26565,-2.049 -0.0784,-0.738 0.13015,-0.251 0.45464,-0.432 0.65074,-0.08 2.44432,-2.983 0.58656,-1.262 0.11232,-1.334 0.89322,-1.036 0.0695,-0.05 0.11232,0.04"},"01029":{"name":"Cleburne, AL","path":"m 723.95213,394.53514 0.39401,1.405 1.55823,5.611 1.07685,3.831 -6.46112,0.417 -2.32129,0.195 0.0339,0.344 -0.29061,0.363 -1.99503,0.209 -0.0143,-0.168 0.62757,-0.579 0.91461,-1.432 0.98236,-0.103 1.50118,-1.815 0.27278,-0.522 -0.30487,-2.871 -0.24069,-2.362 1.84403,-0.0298 0.003,-1.69821 2.41936,-0.795"},"01111":{"name":"Randolph, AL","path":"m 720.5201,405.79914 6.46112,-0.417 0.34588,1.239 1.8631,6.725 0.13728,0.482 -6.87653,0.788 -1.15173,0.137 -0.77912,-8.954"},"01017":{"name":"Chambers, AL","path":"m 729.32748,413.82814 1.54396,5.343 1.2284,2.735 -2.12874,0.28 -0.6668,0.408 -5.89773,0.709 -0.95562,-8.687 6.87653,-0.788"},"01081":{"name":"Lee, AL","path":"m 723.40657,423.30314 5.89773,-0.709 0.6668,-0.408 2.12874,-0.28 1.38886,3.059 1.84349,2.05 -1.16474,0.28176 0.27198,1.00012 -3.56085,0.62312 -1.72192,0.35408 0.10664,0.74592 -1.99147,0.249 -0.31378,-1.993 -0.97345,0.112 -4.17013,-1.51 -0.041,-0.323 -0.32629,-2.99742 1.9594,-0.25458"},"01113":{"name":"Russell, AL","path":"m 735.86705,430.18914 -0.21573,0.82 0.041,0.194 0.12123,0.136 1.27654,0.344 0.47424,0.396 0.19255,0.383 -0.16046,0.724 -0.0464,0.07 -2.08953,4.127 -2.49423,0.323 -0.13372,-0.06 -0.79694,-0.838 -0.0731,-0.209 -0.61865,-0.722 -2.93996,0.371 -0.6757,-1.972 -0.45642,-4.008 1.99147,-0.249 -0.10664,-0.74592 1.72192,-0.35408 3.56085,-0.62312 -0.27198,-1.00012 1.16474,-0.28176 0.53486,3.174"},"01005":{"name":"Barbour, AL","path":"m 735.46055,437.37914 0.0535,1.719 -0.90748,4.937 0.33874,0.449 -0.18542,-0.162 -0.32983,-0.104 -0.11053,0 -0.0981,0.06 -0.51525,0.651 -0.29774,0.892 -0.10341,0.176 -3.88844,0.337 0.21751,2.002 -6.43794,0.74 1.10181,-6.197 -0.016,-0.182 0.1141,-0.556 0.8843,-1.735 1.52436,-0.572 1.58319,-0.53 -0.12837,-0.843 -0.16759,-2.009 0.312,-0.2 2.93996,-0.371 0.61865,0.722 0.0731,0.209 0.79694,0.838 0.13372,0.06 2.49423,-0.323"},"05017":{"name":"Chicot, AR","path":"m 614.22718,412.76114 0.26386,0.73 0.025,0.01 0.97345,0.663 0.79516,0.537 0.15155,0.536 -0.23178,0.459 -0.98949,0.288 0.96453,2.758 0.65075,1.181 0.4992,0.529 0.0553,1.747 0,0.02 -0.60261,2.501 -0.016,0.02 -0.56161,0.634 -0.15511,0.177 -1.89519,0.07 -3.2787,0.134 -0.47424,0.03 -0.36014,-8.83 -0.12123,-4.033 1.9772,-0.1 0.10519,0.692 0.5206,0.319 1.40668,-0.04 0.29774,-1.036"},"05003":{"name":"Ashley, AR","path":"m 599.85903,417.19414 10.18197,-0.239 0.36014,8.83 -11.67601,0.474 -1.46196,-3.521 0.44929,-1.155 0.70958,-0.925 0.84151,-0.681 0.37975,-0.106 0.55269,-0.467 0.25674,-1.775 -0.5937,-0.435"},"05115":{"name":"Pope, AR","path":"m 582.40652,364.07114 0.0481,3.101 -0.65253,0.934 0.041,2 0.073,6.29395 -0.66896,0.0594 -2.36943,0.255 0.31403,1.19628 -0.71382,-0.0759 -2.83101,-3.4634 -1.65553,-0.6564 -0.39045,-0.218 -0.0428,-3.302 0.33875,0 1.00376,-1.059 0.95561,-1.955 -0.0303,-3.037 3.95263,-0.02 2.62795,-0.04"},"05101":{"name":"Newton, AR","path":"m 579.60919,355.06414 0.16938,9.05 -3.95263,0.02 -6.5984,-0.617 -0.16046,-1.392 0.009,-1.341 0.40828,-1.012 0.57051,-1.004 -0.312,-3.641 3.30901,0 6.55739,-0.06"},"05087":{"name":"Madison, AR","path":"m 563.44926,351.07814 2.90965,0.01 0.49742,0.569 0.2496,0.908 0,0.868 0.16224,0.33 0.50633,0.706 0.64897,0.659 1.31932,0 0.312,3.641 -0.57051,1.004 -0.40828,1.012 -0.009,1.341 0.16046,1.392 -3.27869,-0.04 -3.96867,0.298 -0.96454,0 0,-1.679 0.17651,-5.98 0.96275,-3.352 0.0754,-1.65019 1.21894,-0.0358"},"05047":{"name":"Franklin, AR","path":"m 561.98018,363.77514 3.96867,-0.298 -0.0392,9.113 -1.59645,-0.6213 0.0202,1.76194 -2.22186,0.0639 0.11038,1.92293 -1.37644,-0.0392 -0.78718,0.77669 -0.72536,-0.007 -0.2463,-5.3295 0.28882,-0.153 0.34588,-1.108 0.25852,-1.317 -0.94339,-0.58029 -0.15514,-2.31442 0.71674,-0.0323 2.3822,-1.165 0.33696,-0.335 0.007,-0.339 -0.34409,0"},"05071":{"name":"Johnson, AR","path":"m 565.94885,363.47714 3.27869,0.04 6.5984,0.617 0.0303,3.037 -0.95561,1.955 -1.00376,1.059 -0.33875,0 0.0428,3.302 -2.03568,0.0217 -0.23332,-2.34275 -1.07388,0.40309 -0.78981,0.312 -1.4156,0.451 -2.14301,0.248 0.0392,-9.113"},"05083":{"name":"Logan, AR","path":"m 565.90962,372.59014 2.14301,-0.248 1.4156,-0.451 0.78981,-0.312 1.07388,-0.40309 0.23332,2.34275 2.03568,-0.0217 0.39045,0.218 0.16988,2.01309 -3.36476,0.23559 -1.55988,1.45225 -3.14816,0.52907 0.0227,2.24697 0.0945,0.619 -3.94549,0.02 -2.97383,-0.02 -1.26762,-0.651 0,-1.022 0.007,-1.012 2.01821,0.02 0.0143,-1.694 0.78718,-0.77669 1.37644,0.0392 -0.11038,-1.92293 2.22186,-0.0639 -0.0202,-1.76195 1.59645,0.6213"},"05149":{"name":"Yell, AR","path":"m 573.99137,373.71514 1.65553,0.6564 2.83101,3.4634 0.71382,0.0759 -0.31403,-1.19628 2.36943,-0.255 -2.65774,2.6856 -1.51187,1.4 -1.38886,1.341 -0.63648,0.709 -0.95562,1.309 0.0731,2.403 -1.97542,0.747 -5.93874,0.104 -0.0499,-6.347 -0.0945,-0.619 -0.0227,-2.24697 3.14816,-0.52907 1.55988,-1.45225 3.36476,-0.23559 -0.16988,-2.01309"},"05105":{"name":"Perry, AR","path":"m 578.58939,379.14514 6.01897,-0.08 1.56536,-0.151 0.29774,-0.06 0.24069,-0.09 0.93422,-0.772 0.0874,0.09 0.17651,0.472 0.025,0.216 -0.0713,0.564 -0.082,0.201 -0.14441,0.207 -0.2086,0.219 -0.29595,0.25 -0.13015,0.16 -0.082,0.273 0.0713,0.28 0.21751,0.362 0.19611,0.169 0.22286,0.129 0.33697,0.103 -0.55983,0.387 -1.37637,0.346 -1.94333,0.378 0.0143,1.333 0.29061,0 -0.18542,0.412 -1.50296,-0.396 -2.64221,0 -1.9362,0.08 0.0392,1.993 -3.99363,0.09 -0.0731,-2.403 0.95562,-1.309 0.63648,-0.71 1.38886,-1.34 1.51187,-1.4"},"05029":{"name":"Conway, AR","path":"m 581.84313,370.10614 6.91219,-0.07 0.0392,2.016 -1.14817,5.946 -0.93422,0.772 -0.24069,0.09 -0.29774,0.06 -1.56536,0.151 -6.01897,0.08 2.65774,-2.6856 0.66896,-0.0595 -0.073,-6.29395"},"05045":{"name":"Faulkner, AR","path":"m 595.67998,371.91614 0.13015,6.853 0.0214,1.252 -1.99325,0.03 -0.58478,2.018 -3.80999,0.04 -1.478,-0.419 -0.33697,-0.103 -0.22286,-0.129 -0.19611,-0.169 -0.21751,-0.362 -0.0713,-0.28 0.082,-0.273 0.13015,-0.16 0.29595,-0.25 0.2086,-0.219 0.14441,-0.207 0.082,-0.201 0.0713,-0.564 -0.025,-0.215 -0.17651,-0.473 -0.0874,-0.09 1.14817,-5.946 4.25928,-0.06 2.62616,-0.08"},"05141":{"name":"Van Buren, AR","path":"m 589.63071,362.27914 0.0553,1.70264 3.27692,-0.0546 0.0909,8.069 -4.25928,0.06 -0.0392,-2.016 -6.91219,0.07 -0.041,-2 0.65253,-0.934 -0.0481,-3.101 3.31079,-0.02 -0.0321,-1.678 3.94549,-0.1"},"05129":{"name":"Searcy, AR","path":"m 579.60919,355.06414 0.99663,0 0.97983,-0.008 0.0328,0.99434 7.8678,-0.111 0.0232,2.019 0.12124,4.328 -3.94549,0.1 0.0321,1.678 -3.31079,0.02 -2.62795,0.04 -0.16938,-9.05"},"05137":{"name":"Stone, AR","path":"m 593.40682,354.15714 2.20007,1.679 0.10697,0.08 0.33518,0.409 0.009,0.105 -0.8022,2.07146 2.74537,0.1586 1.17329,1.05694 0.87717,0.314 0.39402,3.751 -7.48271,0.145 -3.27692,0.0546 -0.0553,-1.70264 -0.12124,-4.328 1.98612,-0.03 -0.0109,-2.01105 1.95422,-0.046 -0.0321,-1.704"},"05023":{"name":"Cleburne, AR","path":"m 600.4456,363.78214 0.81599,-0.0239 0.15567,3.93794 0.0499,1.816 -0.94849,2.299 -4.83871,0.105 -2.62616,0.08 -0.0909,-8.069 7.48271,-0.145"},"05145":{"name":"White, AR","path":"m 601.41726,367.69614 3.94727,-0.09 0.0355,1.98541 4.42172,-0.0824 -1.51009,1.864 -0.0481,1.382 0.041,0.145 0.50633,0.698 -0.40293,3.57 -0.39401,0.531 -2.20922,0.035 0.0241,1.45842 -1.23674,-0.0633 -0.37822,-0.8962 -1.36585,0.32039 -1.07768,0.8007 -2.65113,-0.241 -0.87539,-0.307 -2.43362,-0.03 -0.13015,-6.853 4.83871,-0.105 0.94849,-2.299 -0.0499,-1.816"},"05063":{"name":"Independence, AR","path":"m 609.12282,359.07414 2.93282,-0.13 -0.1034,0.403 -0.18542,0.547 -0.51347,1.196 -1.6045,1.25484 0.0552,2.20916 -0.3958,2.958 -2.50671,0.08 -1.437,0 -3.94727,0.09 -0.15567,-3.93794 -0.81599,0.0239 -0.39402,-3.751 2.49245,-1.833 4.57128,-0.1 0.025,1.029 1.98255,-0.06"},"05067":{"name":"Jackson, AR","path":"m 612.05564,358.94414 3.07902,-0.05 0.13015,4.09 0.271,6.14 0.10519,2.051 -3.94371,0.126 -0.13015,-2.041 -1.80961,0.112 0.0642,0.129 -4.42172,0.0824 -0.0355,-1.98541 1.437,0 2.50671,-0.08 0.3958,-2.958 -0.0552,-2.20916 1.6045,-1.25484 0.51347,-1.196 0.18542,-0.547 0.1034,-0.403"},"05147":{"name":"Woodruff, AR","path":"m 609.82171,369.50414 -0.0642,-0.129 1.80961,-0.112 0.13015,2.041 3.94371,-0.126 0.19255,4.762 0.1647,3.41857 -1.98858,0.0564 -1.64559,0.05 -0.83795,0.481 -0.15154,0.708 0.0232,0.979 -1.38351,0.06 -0.0624,-3.222 -1.79,0.08 -0.0909,-0.255 -0.0571,-0.603 0.39401,-0.531 0.40293,-3.57 -0.50633,-0.698 -0.041,-0.145 0.0481,-1.382 1.51009,-1.864"},"05123":{"name":"St. Francis, AR","path":"m 625.90141,375.48314 1.91302,-0.201 0.16046,3.368 0.0161,2.273 -10.034,0.499 -1.90767,-0.02 -0.98592,0.06 0.0392,1.027 -0.88901,-0.96557 -0.20389,-2.10743 1.98858,-0.0564 -0.1647,-3.41857 10.06786,-0.457"},"05035":{"name":"Crittenden, AR","path":"m 631.77121,368.33214 0.0826,0.95529 0.33065,-0.0871 -0.003,-0.5322 0.58501,-0.24604 1.04603,0.89856 -0.46921,0.48046 0.1004,0.41812 -0.14434,0.75462 -0.97029,0.58638 0.26865,0.41812 0.86517,-0.0254 0.53298,0.566 0.15059,0.62718 -0.54284,0.86711 0.70142,0.32742 -0.0595,0.82488 -0.59016,0.46514 -1.05685,-0.37181 -0.35021,0.41971 -0.58569,1.81583 -1.74222,0.16275 -0.22464,0.717 0.0321,0.321 0.47246,3.102 -2.09665,0.768 -0.11232,-1.645 -0.0161,-2.273 -0.16046,-3.368 -1.91302,0.201 -0.3851,-6.878 4.01146,-0.16 2.24344,-0.113"},"05037":{"name":"Cross, AR","path":"m 625.51631,368.60514 0.3851,6.878 -10.06786,0.457 -0.19255,-4.762 -0.10519,-2.051 1.69551,-0.07 4.30741,-0.408 1.96116,-0.09 2.01642,0.05"},"05111":{"name":"Poinsett, AR","path":"m 615.26481,362.98714 3.47838,-0.114 7.38465,-0.383 3.03801,-0.09 0.36192,6.044 -4.01146,0.16 -2.01642,-0.05 -1.96116,0.09 -4.30741,0.408 -1.69551,0.07 -0.271,-6.14"},"05093":{"name":"Mississippi, AR","path":"m 639.60049,354.72439 0.0852,0.56319 0.89211,0.45974 0.4572,0.43906 -0.22462,1.03902 -1.37704,-0.24826 -0.33517,0.06 -0.21496,0.66415 1.2014,0.49515 -0.11767,0.9926 -1.24349,0.18845 -0.20906,0.56085 -0.4987,0.58153 -1.11935,0.33327 -0.63758,-0.0999 -0.69964,0.62414 0.58304,1.14135 0.93475,-0.45166 0.54167,0.7069 -0.28588,0.72758 -1.46511,0.91378 0.56235,0.76896 0.25979,1.04461 -1.31404,-0.25898 -0.31251,-0.56102 -0.70995,0.059 -0.12132,1.07844 0.57815,0.64923 -0.26106,1.89247 -0.289,0.032 -0.77362,-0.57834 -0.35978,-0.9882 -0.51378,0.50294 -0.8417,0.28677 -2.24344,0.113 -0.36192,-6.044 -0.45107,-6.847 6.07424,-0.433 4.81147,-0.39675"},"05031":{"name":"Craighead, AR","path":"m 628.71478,355.55414 0.45107,6.847 -3.03801,0.09 -7.38465,0.383 -3.47838,0.114 -0.13015,-4.09 3.32639,-0.0416 -0.10474,-2.04744 8.58273,-0.41 0.30844,-0.747 1.4673,-0.1"},"05065":{"name":"Izard, AR","path":"m 602.56721,350.97414 -0.0232,7.224 -2.49245,1.833 -0.87717,-0.314 -1.17329,-1.05694 -2.74537,-0.1586 0.8022,-2.07146 -0.009,-0.105 -0.33518,-0.409 -0.10697,-0.08 -2.20007,-1.679 -0.36192,0 -0.016,-0.963 0.98949,-0.412 -0.025,-1.624 8.57382,-0.184"},"05075":{"name":"Lawrence, AR","path":"m 610.51346,350.49114 2.23572,1.97 1.25336,1.093 0.57765,-0.804 4.33237,-0.185 1.10182,-0.05 0.007,0.09 -0.34766,0.868 -0.50634,0.488 -0.26386,0.195 -0.72206,2.016 0.17472,0.635 0.10474,2.04744 -3.32639,0.0416 -3.07902,0.05 -2.93282,0.13 -0.0713,-3.085 -0.15155,-3.496 -0.025,-1.294 0.3227,-0.346 1.31576,-0.362"},"05135":{"name":"Sharp, AR","path":"m 607.52537,345.09314 0.007,0.224 1.12678,1.141 0.66679,0.321 0.73811,1.029 0.3851,1.198 0.0642,1.485 -1.31576,0.362 -0.3227,0.346 0.025,1.294 0.15155,3.496 0.0713,3.085 -1.98255,0.06 -0.025,-1.029 -4.57128,0.1 0.0232,-7.224 2.31595,-0.03 -0.0815,-2.63807 2.00876,-0.0999 -0.0713,-3.095 0.78624,-0.02"},"05055":{"name":"Greene, AR","path":"m 618.82342,349.85114 1.6652,-0.123 5.99222,-0.144 1.31755,0.602 0.041,0.685 2.2482,-0.162 -2.84011,4.942 -0.30844,0.747 -8.58273,0.41 -0.17472,-0.635 0.72206,-2.016 0.26386,-0.195 0.50634,-0.488 0.34766,-0.868 -0.007,-0.09 -1.10182,0.05 -0.0891,-2.714"},"05021":{"name":"Clay, AR","path":"m 622.75286,344.25814 6.51639,-0.371 0.49029,-0.03 0.72385,-0.02 1.63846,2.314 0.17828,0.239 0.11945,1.826 -0.19433,0.529 -0.12836,0.202 -2.0093,1.767 -2.2482,0.162 -0.041,-0.685 -1.31755,-0.602 -5.99222,0.144 -1.6652,0.123 1.65993,-0.65071 -0.31883,-3.62584 -1.23056,-1.10945 3.8189,-0.207"},"05121":{"name":"Randolph, AR","path":"m 618.93396,344.46514 1.23056,1.10945 0.31883,3.62584 -1.65993,0.65071 0.0891,2.714 -4.33237,0.185 -0.57765,0.804 -1.25336,-1.093 -2.23572,-1.97 -0.0642,-1.485 -0.3851,-1.198 -0.73811,-1.029 -0.66679,-0.321 -1.12678,-1.141 -0.007,-0.224 5.14358,-0.273 6.26501,-0.355"},"05049":{"name":"Fulton, AR","path":"m 606.73913,345.11614 0.0713,3.095 -2.00876,0.0999 0.0815,2.63807 -2.31595,0.03 -8.57382,0.184 -0.0981,-5.493 0.54734,-0.03 8.21903,-0.369 4.07743,-0.146"},"05005":{"name":"Baxter, AR","path":"m 586.9457,345.95214 6.94963,-0.287 0.0981,5.493 0.025,1.624 -0.98949,0.412 0.016,0.963 0.36192,0 0.0321,1.704 -1.95422,0.046 0.0109,2.01105 -1.98612,0.03 -0.0232,-2.019 -0.0107,-1.349 -0.46355,-1.079 -0.98236,-2.013 -0.85043,-1.005 -0.30487,-0.22 0.0874,-1.822 -0.0161,-2.492"},"05089":{"name":"Marion, AR","path":"m 582.48675,346.10514 4.45895,-0.153 0.0161,2.492 -0.0874,1.822 0.30487,0.22 0.85043,1.005 0.98236,2.013 0.46355,1.079 0.0107,1.349 -7.8678,0.111 -0.0328,-0.99434 -0.97983,0.008 0.37618,-8.904 1.50475,-0.05"},"05009":{"name":"Boone, AR","path":"m 580.982,346.15314 -0.37618,8.904 -0.99663,0 -6.55739,0.06 -0.16759,-8.727 8.09779,-0.241"},"05015":{"name":"Carroll, AR","path":"m 572.88421,346.39414 0.16759,8.727 -3.30901,0 -1.31932,0 -0.64897,-0.659 -0.50633,-0.706 -0.16224,-0.33 0,-0.868 -0.2496,-0.908 -0.49742,-0.569 -2.90965,-0.01 -1.03719,-1.20743 10e-4,-3.21957 5.17568,-0.129 4.94033,-0.121 0.35479,0"},"05007":{"name":"Benton, AR","path":"m 558.54815,346.73114 3.86526,-0.08 -10e-4,3.21957 1.03719,1.20743 -1.21894,0.0358 -0.0754,1.65019 -0.33485,-0.82135 -1.89642,0.14437 -0.0141,0.95571 -5.94871,0.36327 -0.82012,1.678 -0.19255,1.006 -2.97383,-0.02 -0.21751,-1.377 -1.1339,-7.803 9.92523,-0.159"},"05143":{"name":"Washington, AR","path":"m 549.97433,356.07014 2.97383,0.02 0.19255,-1.006 0.82012,-1.678 5.94871,-0.36327 0.0141,-0.95571 1.89642,-0.14437 0.33485,0.82135 -0.96275,3.352 -0.17651,5.98 0,1.679 -2.997,-0.03 -2.29099,0.284 -4.53918,-0.04 -1.21414,-7.921"},"05033":{"name":"Crawford, AR","path":"m 561.01564,363.77514 1.30863,0 -0.007,0.339 -0.33696,0.335 -2.3822,1.165 -0.71674,0.0323 0.15514,2.31442 0.94339,0.58029 -0.25852,1.317 -0.34588,1.108 -0.28882,0.153 -1.10181,-0.111 -0.15868,0.02 -0.1141,0.06 -0.16046,0.135 -0.0784,0.177 0.0874,0.192 0.27278,0.243 0.0802,0.144 0.0713,0.248 -0.0143,0.169 -0.0571,0.147 -0.13728,0.119 -1.17313,0.529 -0.30487,0.1 -1.28545,0.1 -0.47424,-0.154 -0.43324,-0.538 -0.0642,-0.314 0.0731,-0.305 0,-0.09 -0.10518,-0.234 -0.61153,-0.474 -0.30487,-0.135 -0.2496,-0.05 -0.0481,0.02 -0.33874,1.205 -0.84152,-5.554 -0.4261,-2.788 4.53918,0.04 2.29099,-0.284 2.997,0.03"},"05131":{"name":"Sebastian, AR","path":"m 552.45609,372.33314 0.33874,-1.205 0.0481,-0.02 0.2496,0.05 0.30487,0.135 0.61153,0.474 0.10518,0.234 0,0.09 -0.0731,0.305 0.0642,0.314 0.43324,0.538 0.47424,0.154 1.28545,-0.1 0.30487,-0.1 1.17313,-0.529 0.13728,-0.119 0.0571,-0.147 0.0143,-0.169 -0.0713,-0.248 -0.0802,-0.144 -0.27278,-0.243 -0.0874,-0.192 0.0784,-0.177 0.16046,-0.135 0.1141,-0.06 0.15868,-0.02 1.10181,0.111 0.2463,5.3295 0.72536,0.007 -0.0143,1.694 -2.01821,-0.02 -0.007,1.012 -0.33875,0 -1.18917,0.501 -0.51525,0.328 0,0.17 0.42076,0 0,2.057 -0.63649,0.264 -3.09328,0.668 -0.32983,-0.06 0.11232,-10.34 0.007,-0.403"},"05127":{"name":"Scott, AR","path":"m 558.01864,379.13814 0,1.022 1.26762,0.651 2.97383,0.02 3.94549,-0.02 0.0499,6.347 -0.65253,0 -1.57249,0.841 -0.88609,1.07 -0.97879,0.04 0,-0.337 -1.66342,-0.25 -5.62496,0 -0.071,-0.74335 -2.51769,0.0614 0.0481,-4.748 0.32983,0.06 3.09328,-0.669 0.63649,-0.263 0,-2.058 -0.42076,0 0,-0.169 0.51525,-0.328 1.18917,-0.501 0.33875,0"},"05097":{"name":"Montgomery, AR","path":"m 572.19424,387.05414 -0.025,8.019 0.016,1.327 -9.95732,0 -0.0624,-7.297 0.97879,-0.04 0.88609,-1.069 1.57249,-0.842 0.65253,0 5.93874,-0.103"},"05051":{"name":"Garland, AR","path":"m 578.16329,386.21814 1.98433,-0.07 0.0571,2.025 -0.006,1.06207 1.22543,0.0359 0.32923,0.97037 1.56061,0.0126 0.33518,0.65 0.0107,1.35 -2.29099,0.02 -0.57765,1.341 0.0392,1.381 -8.66118,0.08 0.025,-8.019 1.97542,-0.747 3.99363,-0.09"},"05125":{"name":"Saline, AR","path":"m 584.39085,384.12814 1.6481,-0.17406 0.0225,1.38906 1.9772,1.904 2.75632,1.906 3.02375,0.928 0.15867,2.028 -2.97382,0.06 -0.003,1.0586 -2.8086,-0.006 -1.17313,0.908 -0.93957,0.103 -0.0569,-1.97663 -2.36241,-0.007 -0.0107,-1.35 -0.33518,-0.65 -1.56061,-0.0126 -0.32923,-0.97037 -1.22543,-0.0359 0.006,-1.06207 -0.0571,-2.025 -1.98433,0.07 -0.0392,-1.993 1.9362,-0.08 2.64221,0 1.50296,0.395 0.18542,-0.412"},"05119":{"name":"Pulaski, AR","path":"m 595.83153,380.02114 0.94314,-0.02 0.14441,6.46 -0.13429,2.53432 1.13804,-0.0103 0.11946,3.054 -3.34823,0.05 -0.71672,0.02 -0.15867,-2.028 -3.02375,-0.928 -2.75632,-1.906 -1.9772,-1.904 -0.0225,-1.38906 -1.64809,0.17406 -0.29061,0 -0.0143,-1.333 1.94333,-0.378 1.37637,-0.346 0.55983,-0.387 1.478,0.419 3.80999,-0.04 0.58478,-2.018 1.99325,-0.03"},"05085":{"name":"Lonoke, AR","path":"m 595.81013,378.76914 2.43362,0.03 0.87539,0.307 2.65113,0.241 0.0891,2.515 2.06635,-0.05 -0.14527,5.48485 1.48777,1.25815 0.16759,1.478 -0.009,0.353 -0.74702,1.535 -0.51347,0 -6.12415,0.114 -0.11946,-3.054 -1.13804,0.0103 0.13429,-2.53432 -0.14441,-6.46 -0.94314,0.02 -0.0214,-1.252"},"05117":{"name":"Prairie, AR","path":"m 601.77027,379.34914 1.07768,-0.8007 1.36585,-0.32039 0.37822,0.8962 1.23674,0.0633 -0.0241,-1.45842 2.20922,-0.035 0.0571,0.603 0.0909,0.255 1.79,-0.08 0.0624,3.222 -0.0309,5.52695 -1.49238,0.002 0.0823,1.39375 1.28997,0.19255 0.37738,0.96104 -4.08099,0.1 0.0695,2.009 -0.55269,0.05 -0.99663,0 0.74702,-1.535 0.009,-0.353 -0.16759,-1.478 -1.48777,-1.25815 0.14527,-5.48485 -2.06635,0.05 -0.0891,-2.515"},"05095":{"name":"Monroe, AR","path":"m 610.01426,381.69314 1.38351,-0.06 -0.0232,-0.979 0.15154,-0.708 0.83795,-0.481 1.64559,-0.05 0.20389,2.10743 0.88901,0.96557 0.10519,3.063 1.00375,-0.03 0.0571,2.042 0.15154,4.041 1.02693,-0.03 0.016,0.362 0.10697,2.724 -1.01445,0.04 -0.1355,0.01 -0.59548,-0.226 -0.29596,-0.207 -1.71155,-1.851 -1.33537,-1.913 -0.61687,-0.786 -1.6242,0.04 -0.37738,-0.96104 -1.28997,-0.19255 -0.0823,-1.39375 1.49238,-0.002 0.0309,-5.52695"},"05077":{"name":"Lee, AR","path":"m 615.10257,382.48814 -0.0392,-1.027 0.98592,-0.06 1.90767,0.02 10.034,-0.499 0.11232,1.645 -2.89182,4.606 -8.94287,0.386 -0.0571,-2.041 -1.00375,0.03 -0.10519,-3.063"},"05107":{"name":"Phillips, AR","path":"m 625.21144,387.17414 0.25673,2.676 0.20147,2.064 -0.1355,0.442 -0.0178,0.04 -0.041,0.03 -0.65075,0.57 -0.81834,0.392 -0.98949,0.203 -0.98593,0.193 -1.8007,3.231 -0.85399,1.759 -0.27278,0.569 0.0642,0.225 0.009,0.03 -3.52652,0.176 0.9057,-5.079 1.01445,-0.04 -0.10697,-2.724 -0.016,-0.362 -1.02693,0.03 -0.15154,-4.041 8.94287,-0.387"},"05069":{"name":"Jefferson, AR","path":"m 598.04229,392.03714 6.12415,-0.114 0.1355,5.753 2.25177,0.02 0.98949,0.05 0.19077,0.137 1.7686,2.057 0.24961,0.878 -0.1462,0.135 -0.10341,0.05 -1.06793,0.209 -1.42452,-0.466 -2.93282,-1.424 -0.43324,1.624 -3.76898,0.184 0.025,0.675 -5.29691,0.257 -0.0713,-2.457 0.30665,-1.44 -0.14441,-6.067 3.34823,-0.05"},"05053":{"name":"Grant, AR","path":"m 594.69406,392.09114 0.14441,6.067 -0.30665,1.44 0.0713,2.457 -1.94333,0.139 -1.76682,-1.455 -1.31041,-0.386 -3.47303,0 -0.0303,-6.116 0.93957,-0.103 1.17313,-0.908 2.80861,0.006 0.003,-1.0586 2.97382,-0.06 0.71672,-0.02"},"05059":{"name":"Hot Spring, AR","path":"m 583.65988,392.25314 2.36241,0.007 0.0569,1.97663 0.0303,6.116 -3.93836,0 -1.92728,0 -0.76307,-1.15 -6.28284,-1.446 0.0258,-1.29935 -1.03844,-0.0417 -0.016,-1.326 8.66118,-0.08 -0.0392,-1.381 0.57765,-1.341 2.29099,-0.02"},"05039":{"name":"Dallas, AR","path":"m 582.17118,400.34514 3.93836,0 3.47303,0 1.31041,0.387 1.76682,1.455 -2.55485,0.257 -0.007,1.856 0.34409,0.06 0.68284,0.617 0.44215,0.636 1.28545,2.266 0.0784,0.419 -4.73174,0 -5.90486,0.02 -0.42789,-1.928 -0.85005,-2.44098 1.15492,0.36598 0,-3.992"},"05025":{"name":"Cleveland, AR","path":"m 594.60313,402.05514 5.29691,-0.257 -0.15333,6.308 0.0891,2.018 -6.75886,0.193 -0.14619,-2.007 -0.0784,-0.419 -1.28545,-2.266 -0.44215,-0.637 -0.68284,-0.617 -0.34409,-0.06 0.007,-1.856 2.55485,-0.257 1.94333,-0.139"},"05079":{"name":"Lincoln, AR","path":"m 609.50257,400.99614 0.5206,1.494 0.007,0.368 -0.79337,0.563 -1.57606,0.05 0.009,3.446 0.0321,1.031 -7.95517,0.158 0.15333,-6.308 -0.025,-0.675 3.76898,-0.184 0.43324,-1.624 2.93282,1.424 1.42452,0.466 1.06793,-0.209"},"05001":{"name":"Arkansas, AR","path":"m 604.16644,391.92314 1.5101,0 0.55269,-0.05 -0.0695,-2.009 4.08099,-0.1 1.6242,-0.04 0.61687,0.787 1.33537,1.913 1.71155,1.85 0.29596,0.207 0.59548,0.226 0.1355,-0.01 -0.9057,5.079 -0.93422,0.635 -0.29596,0.281 -0.15511,0.25 -0.0214,0.522 0.0553,0.345 0.3958,0.395 0.87539,1.35 -0.33874,0.451 -2.31417,-0.685 -1.13212,-0.691 -1.76148,-0.145 -0.5206,-1.494 0.10341,-0.05 0.1462,-0.135 -0.24961,-0.878 -1.7686,-2.057 -0.19077,-0.137 -0.98949,-0.05 -2.25177,-0.02 -0.1355,-5.754"},"05041":{"name":"Desha, AR","path":"m 619.17643,399.60614 0.85221,0.682 0.20146,0.5 -0.11232,0.772 -3.71372,1.87 -1.52613,6.573 -0.10519,0.523 0.025,0.05 0.1141,0.203 0.56874,0.426 0.53842,0.435 0,0.02 -0.0499,0.247 -0.33696,0.289 -1.4049,0.565 -0.29774,1.036 -1.40668,0.04 -0.5206,-0.32 -0.10519,-0.691 -1.9772,0.1 -0.15164,-5.01321 -2.06625,0.0392 -0.0321,-1.031 -0.009,-3.446 1.57606,-0.05 0.79337,-0.563 -0.007,-0.368 1.76148,0.145 1.13212,0.691 2.31417,0.685 0.33874,-0.451 -0.87539,-1.35 -0.3958,-0.395 -0.0553,-0.345 0.0214,-0.522 0.15511,-0.25 0.29596,-0.281 0.93422,-0.635 3.52652,-0.176"},"05043":{"name":"Drew, AR","path":"m 599.74671,408.10614 7.95517,-0.158 2.06625,-0.0392 0.15164,5.01321 0.12123,4.033 -10.18197,0.239 -0.21038,-0.296 -0.312,-0.924 -0.0178,-0.112 0.0588,-1.632 0.0143,-0.04 0.60261,-0.03 -0.15868,-4.033 -0.0891,-2.018"},"05011":{"name":"Bradley, AR","path":"m 593.07699,410.31714 6.75886,-0.193 0.15868,4.033 -0.60261,0.03 -0.0143,0.04 -0.0588,1.632 0.0178,0.112 0.312,0.924 0.21038,0.296 0.5937,0.435 -0.25674,1.775 -0.55269,0.467 -0.37975,0.106 -0.84151,0.681 -0.70958,0.925 -0.44929,1.155 -1.68838,-1.283 -2.50493,-1.295 -0.0499,-0.248 0.0499,-0.146 -0.53842,-0.344 -0.11411,-0.717 0.082,-0.716 0.16046,-0.1 0.0802,0.03 0.32092,-0.812 0.43324,-1.29 0.14441,-0.717 -0.35123,-3.222 -0.21038,-1.567"},"05013":{"name":"Calhoun, AR","path":"m 588.19906,408.31714 4.73174,0 0.14619,2.007 0.21038,1.567 0.35123,3.222 -0.14441,0.717 -0.43324,1.29 -0.32092,0.812 -0.0802,-0.03 -0.16046,0.1 -0.082,0.717 0.11411,0.716 0.53842,0.344 -0.56338,0.491 -0.83617,0.176 -0.36905,-0.02 -0.57944,-0.449 0.0267,-0.06 -0.17829,-0.715 -1.42986,-0.771 -0.27278,-0.07 -2.685,-1.383 -1.20344,-1.375 -0.16224,-0.394 -0.0642,-0.818 0.92346,-0.56259 -0.0891,-1.86441 0.13015,-0.105 1.2694,-0.217 0.0874,-0.07 0.61866,-0.973 0.50633,-2.266"},"05103":{"name":"Ouachita, AR","path":"m 582.2942,408.34014 5.90486,-0.02 -0.50633,2.266 -0.61866,0.973 -0.0874,0.07 -1.2694,0.217 -0.13015,0.105 0.0891,1.86441 -0.92346,0.56259 0.0642,0.818 0.16224,0.394 1.20344,1.375 2.685,1.383 -7.86781,0.04 -2.68329,0.0204 7e-5,-1.69239 0,-7.49 3.97759,-0.884"},"05099":{"name":"Nevada, AR","path":"m 573.08567,405.22214 1.37281,1.97 2.96492,1.26 0.40114,0.225 0.49207,0.547 0,7.49 -4.74956,0.335 -2.29396,0.0545 0.0279,-0.71948 0.009,-4.548 0.19968,-3.519 0,-3.054 1.57605,-0.04"},"05057":{"name":"Hempstead, AR","path":"m 564.53503,404.23614 6.97459,1.027 0,3.054 -0.19968,3.519 -0.009,4.548 -4.58198,-0.03 -2.03068,-2.908 -2.06031,-1.26039 -0.51238,-1.93761 2.3944,0.01 0.025,-6.031"},"05019":{"name":"Clark, AR","path":"m 570.86065,396.40014 1.32467,0 1.03844,0.0417 -0.0258,1.29935 6.28284,1.446 0.76307,1.15 1.92728,0 0,3.991 -1.15492,-0.36548 0.85005,2.44148 0.42789,1.927 -3.97759,0.884 -0.49207,-0.547 -0.40114,-0.225 -2.96492,-1.26 -1.37281,-1.97 -1.10894,-2.065 -0.28348,-0.779 -0.81834,-3.954 -0.0143,-2.024"},"05109":{"name":"Pike, AR","path":"m 562.228,396.40014 8.63265,0 0.0143,2.024 0.81834,3.954 0.28348,0.779 1.10894,2.065 -1.57605,0.04 -6.97459,-1.027 -0.0481,-4.044 -1.99146,-0.02 -0.24961,-1.767 -0.0178,-2.007"},"05061":{"name":"Howard, AR","path":"m 562.228,396.40014 0.0178,2.007 0.24961,1.767 1.99146,0.02 0.0481,4.044 -0.025,6.031 -2.3944,-0.01 -0.0321,0 -2.11983,-3.808 -0.0802,-0.234 -0.37084,-2.443 -0.13728,-1.1 -0.0571,-1.745 0.0731,-0.699 -0.2086,-0.1 -2.70818,0.03 -0.26386,-1.774 -0.0107,-1.993 6.02789,0"},"05113":{"name":"Polk, AR","path":"m 552.2885,387.82414 2.51769,-0.0604 0.071,0.74335 5.62496,0 1.66342,0.25 0,0.337 0.0624,7.297 -6.02789,0 0.0107,1.993 0.26386,1.774 -4.28245,0.13 0.0963,-12.464"},"05133":{"name":"Sevier, AR","path":"m 556.47467,400.15814 2.70818,-0.03 0.2086,0.1 -0.0731,0.699 0.0571,1.746 0.13728,1.1 0.37084,2.442 0.0802,0.234 2.11983,3.808 -1.57427,-0.02 -4.99917,-1.48 -3.35893,-2.701 0.041,-5.761 4.28245,-0.13"},"05081":{"name":"Little River, AR","path":"m 552.15121,406.04914 3.35893,2.701 4.99917,1.48 1.57427,0.02 0.0161,0 0.016,0 0.51238,1.93761 2.06031,1.26039 -4.11487,1.421 -0.4582,-0.378 -0.353,-0.144 -1.84884,-0.371 -1.06972,0.155 -0.27991,0.03 -0.0963,0.09 -1.84883,0.938 -1.02872,-0.561 -0.27991,-0.184 -0.7809,-0.499 -0.12658,-0.17 -0.1462,-0.335 -0.15154,-0.394 0.0463,-7.001"},"05091":{"name":"Miller, AR","path":"m 564.68836,413.45114 2.03068,2.908 -0.13549,1.478 1.31932,1.954 0,0.121 -0.31378,1.02 -1.43878,2.539 -0.13728,0.177 -0.1355,0.128 -0.22464,0.03 -1.07685,1.911 0.82725,1.359 -0.18542,0 -4.38586,0.1 -0.25852,-12.304 4.11487,-1.421"},"05073":{"name":"Lafayette, AR","path":"m 566.71904,416.35914 4.58198,0.03 -0.0279,0.71948 2.29396,-0.0545 -0.2086,0.266 -1.89697,4.051 -0.0232,5.585 -0.58835,0 -5.44666,0.121 -0.82725,-1.358 1.07685,-1.911 0.22464,-0.03 0.1355,-0.129 0.13728,-0.176 1.43878,-2.539 0.31378,-1.02 0,-0.121 -1.31932,-1.954 0.13549,-1.478"},"05027":{"name":"Columbia, AR","path":"m 573.56705,417.04914 4.74956,-0.335 -7e-5,1.69239 2.68329,-0.0204 0.0713,8.307 -4.79592,0.13 -4.83693,0.128 0.0232,-5.586 1.89697,-4.05 0.2086,-0.266"},"05139":{"name":"Union, AR","path":"m 580.99983,418.38614 7.86781,-0.04 0.27278,0.07 1.42986,0.771 0.17829,0.715 -0.0267,0.06 0.57944,0.449 0.36905,0.02 0.83617,-0.176 0.56338,-0.491 -0.0499,0.147 0.0499,0.247 2.50493,1.295 1.68838,1.283 1.46196,3.522 -12.59241,0.338 -5.06157,0.1 -0.0713,-8.307"},"04015":{"name":"Mohave, AZ","path":"m 196.1531,304.30414 20.63493,3.84 6.44508,1.143 -1.76861,3.839 -1.1963,3.022 -0.0802,0.217 -0.94849,2.972 -0.0481,0.298 0,0.369 0.21751,0.676 0.19968,0.322 -0.25673,1.5 -0.21751,0.396 -0.58656,0.69 -0.23356,0.194 -0.27278,0.09 -4.29137,1.279 -0.79516,0.169 -0.80407,0.09 -0.15155,-0.05 -1.07685,0.137 -1.95224,0.747 -2.78128,1.24 -1.28545,2.626 -2.10557,10.157 -5.06156,27.531 -0.41898,0.36 -0.15154,0.07 -0.20147,0.03 -5.30154,-0.6705 -1.51972,1.0485 -7.40069,-3.327 -0.8843,-1.545 -1.02159,-1.138 -1.17313,-1.407 -1.18739,-4.999 -0.0642,-0.925 -1.27832,-2.008 -1.01267,-2.635 -0.0161,-0.121 0.0321,-0.321 0.57765,-2.557 1.72047,-2.875 0.16758,-0.548 0.0981,-0.458 0.0232,-0.513 0.12837,-2.805 -0.025,-0.675 -0.16759,-1.348 -0.24069,-2.844 0.22464,-4.027 0.49742,-6.588 0.23356,-2.25 0.016,-0.146 0.24961,-0.225 0.18363,-0.1 2.05743,-0.483 1.12678,0 1.05902,0.217 2.33913,0.69 0.2496,0.234 0.54556,0.772 0.22464,0.563 0.0321,0.176 0.009,0.05 0.0161,0.192 0.12837,0.385 0.4261,0.676 0.16046,0.168 0.23356,0.178 0.0963,0.02 0.36192,0.04 1.11608,0.02 0.016,0 0.0642,-0.04 0.0321,-0.02 0.2496,-0.282 2.33021,-3.148 0.77912,-4.042 0.44215,-2.316 0.73098,-4.172 0.0891,-0.462 0.72206,-3.786 0.69176,-3.584"},"04012":{"name":"La Paz, AZ","path":"m 182.74235,365.31014 7.40069,3.327 1.51972,-1.0485 5.30154,0.6705 0.20147,-0.03 0.15154,-0.07 0.41898,-0.36 -1.34251,7.247 -2.60299,14.126 -11.72415,-2.209 0.37797,-1.977 -5.8175,-1.093 -1.92907,9.827 -1.94333,-0.328 -2.76523,-0.547 -1.67233,-0.28 -0.312,-0.138 -0.88609,-0.62 -0.40115,-1.068 -0.0143,-0.04 1.13212,-6.975 1.92729,-0.476 2.31416,-2.731 0.74881,-2.603 0.54555,-2.724 0.10519,-0.747 0.49029,-1.76 0.53843,-0.933 1.7276,-2.442 2.36943,-0.908 1.6242,-0.666 2.41044,-1.391 0.041,-0.03 0.0642,-0.997"},"04003":{"name":"Cochise, AZ","path":"m 270.38467,423.76914 1.27119,0.167 -3.49621,24.959 -7.31155,-1.059 -20.05016,-2.942 1.5511,-9.03 2.4354,-15.857 5.37535,0.836 14.1346,2.041 6.09028,0.885"},"04023":{"name":"Santa Cruz, AZ","path":"m 223.58612,440.00714 0.353,-2.168 3.92232,0.626 0.73989,-4.644 5.97083,0.82 7.77688,1.223 -1.5511,9.03 -10.0126,-1.551 -2.32129,-0.539 -4.87793,-2.797"},"04019":{"name":"Pima, AZ","path":"m 211.64624,412.76114 7.7947,1.316 4.27354,0.845 7.22419,1.18 0.6347,0.09 3.01305,0.307 5.97975,0.829 4.53027,0.699 -0.312,1.975 -2.4354,15.857 -7.77688,-1.223 -5.97083,-0.82 -0.73989,4.644 -3.92232,-0.626 -0.353,2.168 -0.92353,-0.528 -2.93282,-1.697 -23.19871,-13.379 -4.64437,-2.642 -3.69767,-2.219 1.94511,-10.576 21.51211,3.795"},"04011":{"name":"Greenlee, AZ","path":"m 267.08279,394.71314 0.40115,-0.804 0.15333,-0.13 2.63508,-1.517 5.67487,0.77 -4.29136,30.904 -1.27119,-0.167 -1.81496,-2.653 0.0392,-0.312 0.41897,-0.908 0.25674,-1.158 0,-1.045 -0.43324,-1.687 -1.03763,-2.3 -0.28882,-0.05 -2.32308,-5.811 1.88092,-13.129"},"04009":{"name":"Graham, AZ","path":"m 259.32731,395.57314 1.14104,1.068 1.92193,0.433 1.88093,-1.173 2.81158,-1.188 -1.88092,13.129 2.32308,5.811 0.28882,0.05 1.03763,2.3 0.43324,1.687 0,1.045 -0.25674,1.158 -0.41897,0.908 -0.0392,0.312 1.81496,2.653 -6.09028,-0.885 -14.1346,-2.041 -5.37535,-0.836 0.312,-1.975 0.041,0 0.39401,-2.532 1.25336,-8.283 0.73098,-4.709 0.19255,-2.227 0.39401,-1.688 0.19255,-0.305 0.66858,-0.346 1.39777,-0.433 0.52951,-0.07 2.84546,-0.314 3.18955,0.465 0.37797,-2.539 2.02356,0.516"},"04001":{"name":"Apache, AZ","path":"m 286.17555,319.20214 -3.17351,22.867 -4.50888,32.626 -2.54594,18.337 -5.67487,-0.77 -2.63508,1.517 -0.15333,0.13 -0.40115,0.804 -2.81158,1.188 -1.88093,1.173 -1.92193,-0.433 -1.14104,-1.068 0.56339,-3.803 0.69888,-0.915 1.51901,-8.629 2.42648,-16.01 1.59924,-10.066 0.95562,-5.015 0.48315,-3.309 -3.18955,-0.475 4.53919,-30.601 17.25283,2.452"},"04017":{"name":"Navajo, AZ","path":"m 268.92272,316.75014 -4.53919,30.601 3.18955,0.475 -0.48315,3.309 -0.95562,5.015 -1.59924,10.066 -2.42648,16.01 -1.51901,8.629 -0.69888,0.915 -0.56339,3.803 -2.02356,-0.516 1.43878,-9.666 -14.06328,-2.147 10.74357,-68.671 4.60516,0.697 2.93995,0.58 5.95479,0.9"},"04007":{"name":"Gila, AZ","path":"m 245.62061,377.23414 -0.94136,6.01 14.06328,2.147 -1.81675,12.205 -3.18955,-0.465 -2.84546,0.314 -0.52951,0.07 -1.39777,0.433 -0.66858,0.346 -0.19255,0.305 -0.39401,1.688 -0.19255,2.227 -0.29596,0 -3.38389,0.644 -1.9772,1.365 -0.0232,0.104 0.11232,0.451 -0.0481,0.16 -1.10895,1.092 -0.28882,0 -0.0571,-0.03 -2.14657,-6.547 -0.16759,-1.858 -0.42611,-1.854 -0.3851,-1.487 -1.36746,-5.167 -0.5616,0.321 -0.47425,0.4 -2.8205,-4.483 -0.24781,-4.082 -0.11411,-0.345 -0.0481,-0.08 -0.3851,-0.176 -0.55447,0.06 0.85935,-1.344 0,-1.149 -0.10519,-0.394 -0.29596,-0.577 -3.94549,-0.667 -0.12124,-0.218 0.007,-0.06 0.66145,-1.694 1.32467,-3.229 0.26565,-0.107 1.4049,-0.415 0.45998,-0.323 0.0321,-0.03 0.10341,-0.754 5.33613,1.54 4.0489,2.767 3.06297,2.409 1.77574,0.458"},"04021":{"name":"Pinal, AZ","path":"m 237.31956,394.57614 0.3851,1.487 0.42611,1.854 0.16759,1.858 2.14657,6.547 0.0571,0.03 0.28882,0 1.10895,-1.091 0.0481,-0.161 -0.11232,-0.451 0.0232,-0.103 1.9772,-1.366 3.38389,-0.644 0.29596,0 -0.73098,4.709 -1.25336,8.283 -0.39401,2.532 -0.041,0 -4.53027,-0.699 -5.97975,-0.829 -3.01305,-0.307 -0.6347,-0.09 -7.22419,-1.181 -4.27354,-0.845 -7.7947,-1.315 0.68284,-3.957 2.24106,-12.872 0.17651,-0.995 0.0802,0.04 1.70442,2.106 2.09665,0.529 2.59586,0.46 4.88507,0.78 0.62044,-3.957 0.40114,-1.975 6.21152,1.047 3.97758,0.609"},"04027":{"name":"Yuma, AZ","path":"m 193.79079,389.16714 -3.65666,19.799 -1.94511,10.576 -0.32092,-0.2 -25.85875,-15.541 0.63649,-2.766 0.0553,-0.09 0.16759,-0.06 0.32983,0.07 0.82012,-0.756 0.77911,-1.132 2.01821,0.152 2.66718,-1.655 0.83438,-1.173 0,0 0.16937,-0.587 0.18542,-1.511 -0.57052,-1.332 -0.0553,-0.06 -0.0571,-0.07 2.76523,0.548 1.94333,0.328 1.92907,-9.827 5.8175,1.093 -0.37797,1.977 11.72415,2.209"},"04013":{"name":"Maricopa, AZ","path":"m 196.39378,375.04114 11.00031,1.976 8.285,4.211 0.75593,-0.458 1.14104,-1.437 0.0802,-0.316 0.77911,-1.189 0.27278,0.08 7.70557,2.394 4.33237,0.724 0.55447,-0.06 0.3851,0.177 0.0481,0.08 0.11411,0.344 0.24781,4.083 2.8205,4.482 0.47425,-0.4 0.5616,-0.321 1.36746,5.167 -3.97758,-0.61 -6.21152,-1.046 -0.40114,1.975 -0.62044,3.956 -4.88507,-0.779 -2.59586,-0.46 -2.09665,-0.529 -1.70442,-2.106 -0.0802,-0.04 -0.17651,0.995 -2.24106,12.872 -0.68284,3.956 -21.51211,-3.795 6.25965,-33.925"},"04005":{"name":"Coconino, AZ","path":"m 243.49008,312.70114 11.93274,1.872 -9.80221,62.661 -1.77574,-0.458 -3.06297,-2.409 -4.0489,-2.767 -5.33613,-1.54 0.68462,-3.771 0.61687,-3.76 -0.74702,-0.128 -3.23769,-0.571 -0.0571,-0.9 0.54734,-3.174 -4.41974,-0.627 -0.6347,-0.06 -5.2559,-0.884 0.67393,-4.001 -1.6866,-1.929 -9.08015,-5.721 -3.1646,-3.247 -1.56714,-0.845 -0.71671,-0.16 -0.28883,-0.04 -0.26565,0.02 2.10557,-10.157 1.28545,-2.626 2.78128,-1.24 1.95224,-0.747 1.07685,-0.137 0.15155,0.05 0.80407,-0.09 0.79516,-0.169 4.29137,-1.279 0.27278,-0.09 0.23356,-0.194 0.58656,-0.69 0.21751,-0.396 0.25673,-1.5 -0.19968,-0.322 -0.21751,-0.676 0,-0.369 0.0481,-0.298 0.94849,-2.972 0.0802,-0.217 1.1963,-3.022 1.76861,-3.839 20.25697,3.414"},"04025":{"name":"Yavapai, AZ","path":"m 202.79785,340.26314 0.26565,-0.02 0.28883,0.04 0.71671,0.16 1.56714,0.845 3.1646,3.247 9.08015,5.721 1.6866,1.929 -0.67393,4.001 5.2559,0.884 0.6347,0.06 4.41974,0.627 -0.54734,3.174 0.0571,0.9 3.23769,0.571 0.74702,0.128 -0.61687,3.76 -0.68462,3.771 -0.10341,0.754 -0.0321,0.03 -0.45998,0.323 -1.4049,0.415 -0.26565,0.107 -1.32467,3.229 -0.66145,1.694 -0.007,0.06 0.12124,0.218 3.94549,0.667 0.29596,0.577 0.10519,0.394 0,1.149 -0.85935,1.344 -4.33237,-0.724 -7.70557,-2.394 -0.27278,-0.08 -0.77911,1.189 -0.0802,0.315 -1.14104,1.437 -0.75593,0.459 -8.285,-4.211 -11.00031,-1.976 1.34251,-7.247 5.06156,-27.531"},"06015":{"name":"Del Norte, CA","path":"m 50.323251,148.95214 6.332754,1.993 4.974207,1.375 -0.547341,0.914 -0.754154,0.983 -1.165997,0.112 -1.631326,1.453 -1.301495,6.019 0.153327,0.531 0.153327,1.478 -0.09806,0.282 -0.802292,0.931 -0.443934,0.306 -0.939573,-0.274 -0.666793,-0.892 0.354791,-1.189 -1.880928,-0.611 -2.955998,-0.867 0.287042,-1.92 0.06418,-1.31 0.02496,-2.571 -0.0071,-0.218 -0.04101,-0.273 -0.08914,-0.297 0.394015,-3.785 0.586564,-2.17"},"06093":{"name":"Siskiyou, CA","path":"m 61.630212,152.32014 4.708559,1.317 0.04101,0 1.228398,0.255 1.752561,0.637 0.722062,0.215 0.426106,0.122 5.569686,1.574 2.208976,0.547 2.016426,0.546 0.52238,0.169 0.916396,0.282 13.733447,4.09 -0.443935,1.012 -0.158675,0.555 -0.877172,3.231 0.02496,0.07 0.08023,0.05 -2.089524,7.763 -1.502959,5.489 -9.199609,-2.557 -4.765611,-1.381 -3.471248,-0.933 0.417192,-2.337 -2.032472,-1.254 -3.608529,1.421 -2.515629,2.605 0.153327,1.068 -0.208596,0.371 -0.3851,0.305 -0.329831,-0.05 -1.349633,-0.685 -2.314165,-2.442 -1.269403,-1.905 -0.788029,-0.763 -0.82012,-0.659 0.128367,-4.491 -0.320917,-0.459 -2.636864,-0.779 0.443934,-0.306 0.802292,-0.931 0.09806,-0.282 -0.153327,-1.478 -0.153327,-0.531 1.301495,-6.019 1.631326,-1.453 1.165997,-0.112 0.754154,-0.983 0.547341,-0.914"},"06025":{"name":"Imperial, CA","path":"m 142.45127,377.78114 11.55656,2.418 9.48131,1.858 2.45857,0.424 3.81535,0.763 -1.92729,0.476 -1.13212,6.975 0.0143,0.04 0.40115,1.068 0.88609,0.62 0.312,0.138 1.67233,0.28 0.0571,0.06 0.0553,0.06 0.57052,1.332 -0.18542,1.512 -0.16937,0.586 0,0 -0.83438,1.173 -2.66718,1.655 -2.01821,-0.152 -0.11232,0 -14.20591,-1.686 -0.28169,-0.03 -1.61528,-0.193 -6.00292,-0.715 -2.55485,-0.298 -1.88093,-0.217 0.86826,-3.799 1.81496,-6.395 0.56338,-2.63 1.06081,-5.319"},"06065":{"name":"Riverside, CA","path":"m 176.23309,369.30414 -1.7276,2.442 -0.53843,0.933 -0.49029,1.76 -0.10519,0.747 -0.54555,2.724 -0.74881,2.603 -2.31416,2.731 -3.81535,-0.763 -2.45857,-0.424 -9.48131,-1.858 -11.55656,-2.418 -4.00967,-0.909 -5.9227,-1.285 -4.08099,-0.892 -7.52192,-1.806 0.0891,-0.387 -2.00216,-1.784 -2.69927,-0.619 0.13728,-0.66 2.45858,-2.401 -0.9164,-1.271 -1.06793,-0.401 -0.55626,-1.495 -1.19631,-2.718 0.62757,-1.138 2.35339,-2.034 2.66004,0.603 0.72385,0.169 0.16046,0.385 2.45858,0.916 5.48054,1.22 2.40152,0.09 4.66934,0.82 13.53198,2.86 9.43317,2 0.20239,-1.01215 3.54342,0.69815 12.82418,2.573"},"06073":{"name":"San Diego, CA","path":"m 116.3037,370.09914 2.69927,0.619 2.00216,1.784 -0.0891,0.387 7.52192,1.806 4.08099,0.892 5.9227,1.285 4.00967,0.909 -1.06081,5.319 -0.56338,2.629 -1.81496,6.396 -0.86826,3.799 -1.79892,-0.218 -3.6638,-0.44 -3.72976,-0.433 -5.26303,-0.621 -5.05444,-0.617 -0.11232,0 -0.87539,-3.833 0.35301,-5.68 0,-0.192 0.009,0 0.0143,-1.24 0.009,-0.481 -0.22464,-1.968 -0.0963,-0.697 -0.36906,-1.097 -0.0339,-0.09 -1.03585,-2.612 -0.30487,-0.731 -0.0571,-0.114 -0.41719,-0.883 -0.61866,-0.891 -0.37797,-0.408 -0.41006,-0.277 2.21789,-2.289"},"06059":{"name":"Orange, CA","path":"m 113.53134,358.98614 1.63132,2.167 1.19631,2.718 0.55626,1.495 1.06793,0.401 0.9164,1.271 -2.45858,2.401 -0.13728,0.66 -2.21789,2.289 -0.12123,-0.488 -0.32092,-0.651 -0.19968,-0.291 -3.5283,-4.426 -2.83655,-3.472 -0.69175,-0.854 0.49029,-0.866 1.02871,-1.295 2.02534,-1.741 0.85935,0.06 0.21751,0.05 2.52276,0.579"},"06037":{"name":"Los Angeles, CA","path":"m 96.897162,381.80514 -1.429862,-0.06 -0.907481,-1.118 -0.121235,-0.192 -0.442151,-1.407 -0.401146,-2.514 0.506335,0.17 2.635082,4.594 0.21751,0.467 -0.05705,0.06 m -0.971664,-15.651 -0.08023,-0.06 -0.01605,-0.166 0.01605,-0.03 0.08736,0.02 0.982362,0.33 1.10003,0.884 0.891435,0.715 0.675708,0.571 0.868255,1.799 0.0713,0.185 0.0481,0.385 -0.0874,0.209 -0.26564,0.155 -0.0161,0 -0.15333,0 -2.314161,-1.093 -0.153327,-0.137 -1.654503,-3.776 m 24.332611,-26.405 -1.22305,5.302 -0.56874,3.063 -0.42789,2.603 -0.16937,1.125 -1.23553,2.675 -1.06794,1.784 -0.4261,0.708 -1.33537,0.649 -0.48138,0.589 -0.0321,0.16 0.0874,0.362 0.15333,0.217 -2.52276,-0.579 -0.21751,-0.05 -0.85935,-0.06 -2.02534,1.741 -1.02871,1.295 -0.49029,0.866 -1.42986,0.195 -1.50296,-0.03 -0.69176,-0.273 -0.34409,-0.195 -1.3425,-0.866 -0.24069,-0.2 -0.14441,-0.811 0.1355,-0.144 0.43502,-0.323 0.22464,-0.05 0.11232,-0.232 0.11945,-0.579 -0.14263,-1.061 -0.0891,-0.515 -0.0481,-0.289 -0.1034,-0.596 -0.18542,-0.724 -0.25852,-0.697 -0.0232,-0.05 -0.0321,-0.07 -0.009,-0.01 -0.19968,-0.394 -0.041,-0.05 -0.15154,-0.218 -0.0499,-0.07 -0.0553,-0.05 -0.3227,-0.305 -0.465331,-0.184 -1.839922,-0.386 -1.445907,-0.193 -0.763069,0.06 -2.84546,-1.262 0.240688,-0.644 1.83279,-0.795 1.477999,-0.619 2.21789,0.548 1.124991,-1.794 0.121235,-0.841 -1.743647,-12.304 -0.08023,-0.667 22.419593,5.24"},"06111":{"name":"Ventura, CA","path":"m 88.332255,330.15614 1.060807,0.385 1.823876,0.85 0.249602,0.596 0.08736,0.625 4.637244,2.138 1.727601,0.426 1.743647,12.304 -0.121235,0.841 -1.124991,1.794 -2.21789,-0.547 -1.477999,0.618 -1.83279,0.795 -0.240688,0.644 -2.522761,-1.904 -2.772363,-4.823 -1.896973,-2.442 -0.442152,-0.562 -0.233556,-0.105 0.531295,-0.369 0.153327,-0.136 0.353008,-1.126 2.51563,-10.002"},"06083":{"name":"Santa Barbara, CA","path":"m 68.428295,346.58814 3.358927,0.271 1.502959,1.375 -0.04992,0.763 -0.01426,0.144 -0.08023,0.02 -2.742054,0.321 -0.247819,0.01 -0.730977,-0.746 -0.137281,-0.24 -0.859343,-1.928 m 9.385027,1.05 0.7078,0.5 1.864882,0.618 0.06418,-0.04 0.03031,-0.02 0.04814,-0.02 0.0731,-0.04 0.09628,-0.06 0.05705,-0.02 0.506335,0.03 0.609741,0.451 0.128367,0.191 -0.0071,0 -0.0071,0.02 -0.01783,0.01 -0.618656,0.483 -0.176504,0.144 -0.128366,0.02 -3.157463,0.06 -0.684622,-0.162 -0.666793,-0.264 -0.0071,0 -0.249602,-0.123 -0.563387,-0.262 -0.504552,-0.371 -0.04101,-0.135 -0.369054,-2.09 0.128367,-0.162 0.112321,0.03 0.989492,0.392 1.78287,0.811 m -10.936124,-24.78 2.868638,0.312 1.021584,0.396 0.946704,0.972 1.246226,-0.209 1.20522,-0.676 3.711936,-1.069 0.345876,0.41 1.053676,0.988 3.253738,2.611 4.080989,3.213 0.820121,0.211 0.345876,0 0.554473,0.139 -2.51563,10.002 -0.353008,1.126 -0.153327,0.136 -0.531295,0.369 -1.340718,-1.229 -1.01267,-0.44 -1.028716,-0.146 -0.279911,0 -0.04101,0 -1.100031,-0.05 -2.315948,-0.731 -0.79516,-0.804 -1.358546,-0.981 -0.545559,-0.216 -1.413815,-0.524 -1.182043,-0.314 -1.374593,-0.288 -1.574274,-0.2 -1.872013,-0.323 -2.410441,-3.148 0.151544,-1.826 1.182043,-6.065 0.41006,-1.648"},"06079":{"name":"San Luis Obispo, CA","path":"m 59.267909,301.13614 20.233791,5.539 0.353008,0.1 -1.01267,3.92 2.33198,0.81867 -0.354777,2.12133 1.113104,1.88083 1.65568,0.57404 -0.623992,1.95813 1.407268,0.53837 -0.628153,1.75963 2.00038,0.531 0.536644,0.63075 -0.1554,1.72988 0.90302,-0.14271 0.862311,0.30508 -0.372017,2.19738 1.256321,0.48762 -0.996625,3.935 -0.345876,0 -0.820121,-0.211 -4.080989,-3.213 -3.253738,-2.611 -1.053676,-0.988 -0.345876,-0.41 -3.711936,1.07 -1.20522,0.675 -1.246226,0.209 -0.946704,-0.972 -1.021584,-0.396 -2.868638,-0.312 0.304871,-0.556 0.02496,-0.04 0.288825,-0.642 0.233556,-0.619 0.110538,-0.379 0.08201,-0.384 0.02318,-0.105 0.0089,-0.04 0.03922,-0.511 0,-0.03 -0.05527,-0.369 -0.08023,-0.22 -0.16759,-0.174 -0.556256,-0.571 -0.08023,-0.07 -0.160458,-0.111 -1.663418,-4.532 -3.077233,-5.674 -2.02534,-3.135 -0.313785,-0.328 -0.183636,-0.224 -0.290608,-1.02 -0.07131,-1.988"},"06029":{"name":"Kern, CA","path":"m 91.63413,309.78514 8.71823,2.16 9.87532,2.427 7.87494,1.84 1.06259,0.305 6.80521,1.399 -0.74702,1.904 -0.1765,0.658 -0.24069,2.708 -3.90627,16.722 -0.64183,-0.159 -22.419593,-5.24 0.08023,0.667 -1.727601,-0.426 -4.637244,-2.138 -0.08736,-0.625 -0.249602,-0.596 -1.823876,-0.85 -1.060807,-0.385 -0.554473,-0.139 0.996625,-3.935 -1.256321,-0.48762 0.372017,-2.19738 -0.862311,-0.30508 -0.90302,0.14271 0.1554,-1.72988 -0.536644,-0.63075 -2.00038,-0.531 0.628153,-1.75963 -1.407268,-0.53837 0.623992,-1.95813 -1.65568,-0.57404 -1.113104,-1.88083 0.354777,-2.12133 -2.33198,-0.81867 1.01267,-3.92 11.779422,3.013"},"06071":{"name":"San Bernardino, CA","path":"m 125.97042,317.91614 4.63725,1.116 29.65804,6.556 1.68838,0 3.68697,5.537 1.27119,1.896 0.47246,0.7 6.81591,10.198 2.51385,3.743 -0.57765,2.556 -0.0321,0.321 0.0161,0.121 1.01267,2.635 1.27832,2.008 0.0642,0.925 1.18739,4.999 1.17313,1.407 1.02159,1.138 0.8843,1.545 -0.0642,0.997 -0.041,0.03 -2.41044,1.391 -1.6242,0.666 -2.36943,0.908 -12.82418,-2.573 -3.54342,-0.69815 -0.20239,1.01215 -9.43317,-2 -13.53198,-2.86 -4.66934,-0.82 -2.40152,-0.09 -5.48054,-1.22 -2.45858,-0.916 -0.16046,-0.385 -0.72385,-0.169 -2.66004,-0.603 -2.35339,2.034 -0.62757,1.138 -1.63132,-2.167 -0.15333,-0.217 -0.0874,-0.362 0.0321,-0.16 0.48138,-0.589 1.33537,-0.649 0.4261,-0.708 1.06794,-1.784 1.23553,-2.675 0.16937,-1.124 0.42789,-2.603 0.56874,-3.063 1.22305,-5.303 0.64183,0.159 3.90627,-16.722 0.24069,-2.708 0.1765,-0.658 0.74702,-1.904"},"06027":{"name":"Inyo, CA","path":"m 114.55114,275.53614 16.61813,3.931 9.2424,13.876 0.34409,0.513 1.96829,2.926 1.14995,1.744 6.06711,9.08 4.91715,7.385 0.6347,0.948 2.63687,3.953 0.2086,0.306 3.61566,5.383 -1.68838,0 -29.65804,-6.556 -4.63725,-1.116 -6.80521,-1.399 0.87539,-1.912 0.30487,-1.076 -0.0802,-1.519 -0.51347,-7.481 -1.3425,-7.611 -0.43324,-3.431 0.52238,-2.264 0.15155,-1.237 -0.0481,-0.87 -0.29774,-2.819 -0.23355,-0.476 -1.35677,-1.469 -0.35479,-0.03 -1.38886,-0.981 -0.0571,-0.05 -0.15154,-0.339 -0.90035,-4.525 0.0481,-1.396 0.64183,-1.488"},"06107":{"name":"Tulare, CA","path":"m 117.97603,293.48714 0.43324,3.431 1.3425,7.611 0.51347,7.481 0.0802,1.519 -0.30487,1.076 -0.87539,1.912 -1.06259,-0.305 -7.87494,-1.84 -9.87532,-2.427 -8.71823,-2.16 1.905888,-7.433 0.891435,-2.999 0.586564,-0.159 0.465329,0.111 0.747023,-2.963 -0.804803,-0.30301 0.346605,-1.91499 -0.79516,-0.202 2.394394,-1.454 2.712165,0.49434 0.63963,-1.69334 2.29812,0.612 3.36606,0.875 0.51525,-1.888 7.89811,1.858 3.17529,0.761"},"06031":{"name":"Kings, CA","path":"m 94.977011,293.92214 0.79516,0.202 -0.346605,1.91499 0.804803,0.30301 -0.747023,2.963 -0.465329,-0.111 -0.586564,0.159 -0.891435,2.999 -1.905888,7.433 -11.779422,-3.013 -0.353008,-0.1 -1.117859,-3.109 7.955165,-4.502 1.246226,-4.924 2.740271,0.674 2.586945,0.265 2.064563,-1.157"},"06039":{"name":"Madera, CA","path":"m 107.41609,267.17914 1.33359,0.362 1.12678,0.362 0.24781,0.298 0.55448,1.109 0.21038,2.394 -5.6107,3.454 -0.79516,0.522 -0.33696,0.332 -0.21751,0.426 -0.15333,1.027 -0.016,0.396 -0.0392,0.151 -0.36906,0.859 -0.26565,0.289 -0.50633,0.451 -0.54734,0.303 -2.611907,-0.167 -0.761286,0.121 -2.925689,1.824 -0.788029,0.522 -0.183635,0.152 -1.262272,1.406 -0.304871,0.507 -0.458197,0.449 -0.06418,0.02 -7.723456,-0.25 -1.100031,-0.208 -1.269403,-1.031 -0.691754,-1.123 -0.185418,-0.435 -0.08736,-0.289 -0.06418,-0.431 -0.506335,-3.948 1.461953,-0.868 3.487294,-0.355 2.724225,0.364 1.777521,0 6.450423,-3.938 1.945112,0.474 1.599225,-1.432 0.40115,-1.46 6.04393,-3.681 0.48137,1.044"},"06019":{"name":"Fresno, CA","path":"m 114.55114,275.53614 -0.64183,1.488 -0.0481,1.396 0.90035,4.525 0.15154,0.339 0.0571,0.05 1.38886,0.981 0.35479,0.03 1.35677,1.469 0.23355,0.476 0.29774,2.819 0.0481,0.87 -0.15155,1.237 -0.52238,2.264 -3.17529,-0.761 -7.89811,-1.858 -0.51525,1.888 -3.36606,-0.875 -2.29812,-0.612 -0.63963,1.69334 -2.712165,-0.49434 -2.394394,1.454 -2.064563,1.157 -2.586945,-0.265 -2.740271,-0.674 -1.246226,4.924 -7.955165,4.502 -3.640621,-4.452 -1.132122,-1.631 -0.08023,-1.298 0.490289,-2.4 0.914612,-0.988 0.979833,0.27203 0.749551,-3.87303 -4.073858,-7.133 8.452587,-5.032 0.506335,3.948 0.06418,0.431 0.08736,0.289 0.185418,0.435 0.691754,1.123 1.269403,1.031 1.100031,0.208 7.723392,0.25 0.06418,-0.02 0.458197,-0.449 0.304871,-0.507 1.262272,-1.406 0.183635,-0.152 0.788029,-0.522 2.925689,-1.824 0.761286,-0.121 2.611906,0.167 0.54734,-0.303 0.50633,-0.451 0.26565,-0.289 0.36906,-0.859 0.0392,-0.151 0.016,-0.396 0.15333,-1.027 0.21751,-0.426 0.33696,-0.332 0.79516,-0.522 5.6107,-3.454 3.66201,3.832"},"06053":{"name":"Monterey, CA","path":"m 60.738777,275.14214 -0.09806,0.467 0.185419,0.708 1.479782,2.456 1.67768,3.022 1.070596,1.31835 -0.426234,2.81518 0.874643,-0.0115 2.419355,4.88 -0.08326,1.13206 1.18329,0.21094 3.383887,2.85 0.488506,0.193 0.09806,0 0.135498,-0.08 0.893218,-1.311 -0.490289,2.4 0.08023,1.298 1.132122,1.631 3.640621,4.452 1.117859,3.109 -20.233791,-5.539 -0.570518,-0.833 -0.948487,-1.752 0.03209,-0.852 0.02318,-0.411 0.04101,-0.747 -0.105189,-0.659 -0.01605,-0.1 -2.128747,-4.563 -0.474243,-0.836 -0.914612,-1.031 -0.258517,-0.231 -0.0071,0 -0.178287,-0.02 -0.112321,-0.06 -0.176504,-0.223 -0.112321,-0.25 -0.451066,-1.045 -0.160458,-0.378 -0.01605,-0.362 0.588347,-5.849 1.285449,-0.457 0.03922,0.01 0.290608,0 0.222859,-0.1 0.443935,-0.328 0.272779,-0.282 0.199681,-0.241 0.345877,-0.524 0.329831,-0.656 0.884303,-1.913 0.01605,-0.266 -0.103406,-0.836 -0.0089,-0.06 3.198469,-0.153"},"06069":{"name":"San Benito, CA","path":"m 60.738777,275.14214 1.139254,0.162 1.601017,-0.9 1.638458,0.347 3.574654,0.961 -0.369054,0.385 -0.128367,0.179 -0.04814,0.128 0.121235,0.33 0.971664,2.112 3.157462,2.887 0.194333,0.33 4.073858,7.133 -0.749551,3.87303 -0.979833,-0.27203 -0.914612,0.988 -0.893218,1.311 -0.135498,0.08 -0.09806,0 -0.488506,-0.193 -3.383882,-2.85 -1.18329,-0.21094 0.08326,-1.13206 -2.419355,-4.88 -0.874643,0.0115 0.426234,-2.81518 -1.070596,-1.31835 -1.67768,-3.022 -1.479782,-2.456 -0.185419,-0.708 0.09806,-0.467"},"06047":{"name":"Merced, CA","path":"m 87.230441,264.54414 0.868258,4.427 -0.0071,0.339 -0.01604,0.06 -0.08023,0.08 0.730977,4.363 0.472461,0.672 1.296146,1.683 -1.777521,0 -2.724262,-0.364 -3.487294,0.355 -1.461953,0.868 -8.452587,5.032 -0.194333,-0.33 -3.157462,-2.887 -0.971664,-2.112 -0.121235,-0.33 0.04814,-0.128 0.128367,-0.179 0.369054,-0.385 -0.247819,-0.257 -0.137281,-0.303 -0.01605,-0.13 0.256733,-0.9 0.458198,-0.209 0.377968,-0.593 0.256734,-1.24 -0.09628,-0.303 5.881687,-3.473 0.03209,-0.754 -0.103406,-0.226 -0.135498,-0.08 2.611904,-0.772 9.39929,-1.928"},"06087":{"name":"Santa Cruz, CA","path":"m 54.268742,263.90214 -0.0071,0.255 0.03922,0.129 0.483157,1.014 0.939573,1.904 0.458197,0.656 1.230181,1.081 0.7702,0.552 1.551096,1.641 2.144793,3.549 0.121235,0.202 -0.121235,0.419 -1.139254,-0.162 -3.198469,0.153 -0.128366,-0.724 -0.281694,-1.332 -0.201464,-0.497 -0.176504,-0.339 -0.160458,-0.217 -0.361923,-0.323 -0.169373,-0.04 -0.900349,0.209 -0.804074,-0.04 -0.415409,-0.06 -0.290608,-0.07 -0.144412,-0.08 -0.05705,-0.03 -0.254951,-0.145 -0.194332,-0.114 -0.698885,-0.793 -0.691754,-0.995 -0.520598,-1.241 -0.43502,-1.307 -0.04814,-0.955 0.146196,-0.91 1.492262,-0.249 1.567142,0.433 0.121236,-0.312 0.336962,-1.261"},"06081":{"name":"San Mateo, CA","path":"m 52.765783,253.31014 -0.03209,0 -0.392231,2.347 0.238904,0.376 2.781277,2.918 0.201465,0.127 0.481374,0.169 0.329831,-0.09 0.0089,-0.02 0.329831,0.827 -2.444315,3.929 -0.336962,1.261 -0.121236,0.312 -1.567142,-0.433 -1.492262,0.249 -0.146196,0.91 0.04814,0.955 -0.144413,-0.233 -0.490289,-0.804 -0.659662,-1.231 -0.08023,-0.226 0.04101,-1.091 0.297739,-5.962 0.55269,-2.427 0.675708,-2.417 1.920151,0.545"},"06001":{"name":"Alameda, CA","path":"m 55.32955,249.51814 0.79516,0.02 0.09627,0.06 0.540209,0.755 0.344094,1.077 0.0731,0.537 3.141417,3.231 6.355931,-0.17 1.301495,-0.144 -0.722062,2.605 -0.989493,3.599 0.128366,0.275 0.980579,1.494 -0.01605,-0.02 -6.667933,-1.902 -0.217511,-0.02 -0.185418,0.137 -0.137281,0.06 -0.625787,0.08 -0.320917,-0.04 -2.203627,-0.754 -0.287042,-0.417 -0.329831,-0.827 0.01605,-4.035 -1.390639,-4.035 0.320917,-1.558"},"06085":{"name":"Santa Clara, CA","path":"m 56.713057,259.97314 0.287042,0.417 2.203627,0.754 0.320917,0.04 0.625787,-0.08 0.137281,-0.06 0.185418,-0.137 0.217511,0.02 6.667933,1.902 -0.281693,0.114 -0.07131,1.205 0.515249,5.882 2.023558,1.745 0.09628,0.303 -0.256734,1.24 -0.377968,0.593 -0.458198,0.209 -0.256733,0.9 0.01605,0.13 0.137281,0.303 0.247819,0.257 -3.574654,-0.961 -1.638458,-0.347 -1.601017,0.9 0.121235,-0.419 -0.121235,-0.202 -2.144793,-3.549 -1.551096,-1.64 -0.7702,-0.553 -1.230181,-1.081 -0.458197,-0.656 -0.939573,-1.904 -0.483157,-1.014 -0.03922,-0.129 0.0071,-0.255 2.444315,-3.929"},"06099":{"name":"Stanislaus, CA","path":"m 80.48941,252.10314 3.271566,6.752 3.47838,5.68 -0.0089,0 -9.39929,1.928 -2.611904,0.771 0.135498,0.08 0.103406,0.226 -0.03209,0.754 -5.881687,3.473 -2.023558,-1.745 -0.515249,-5.882 0.07131,-1.205 0.281693,-0.114 0.01605,0.02 4.73352,-2.798 0.836166,-0.536 0.360139,-0.162 2.034255,-0.539 0.449283,0.162 0.891435,0.177 1.030499,0.119 0.98771,-0.258 0.643616,-2.642 1.148168,-4.269"},"06043":{"name":"Mariposa, CA","path":"m 87.239356,264.53514 0.08736,-0.9 0.153327,-0.225 1.051893,-0.756 5.223809,-1.092 0.345877,0.178 1.511874,1.631 0.126583,0.234 0.10519,0.07 0.515249,0.248 1.663418,0.451 0.570518,0 2.208976,-0.339 0.27991,-0.152 1.5511,-1.237 1.04654,-0.241 1.69373,1.22 1.07685,1.239 0.48316,1.277 -6.04393,3.681 -0.40115,1.46 -1.599229,1.432 -1.945112,-0.474 -6.450423,3.938 -1.296146,-1.683 -0.472461,-0.672 -0.730977,-4.363 0.08023,-0.08 0.01604,-0.06 0.0071,-0.339 -0.868258,-4.427 0.0089,0"},"06109":{"name":"Tuolumne, CA","path":"m 104.29072,252.34614 -0.13549,0.112 -0.19434,0.678 -0.28882,2.111 0.73811,1.173 0.53129,0.451 0.41719,0.273 0.75594,0.41 0.6347,0.465 0.44215,0.346 0.7078,0.674 0.49742,1.086 -0.5553,2.15156 1.16765,0.86166 0.31118,1.07578 -0.62579,2.024 -0.9574,0.733 -0.32092,0.208 -0.48137,-1.044 -0.48316,-1.277 -1.07685,-1.239 -1.69373,-1.22 -1.04654,0.241 -1.5511,1.237 -0.27991,0.152 -2.208976,0.339 -0.570518,0 -1.663418,-0.451 -0.515249,-0.248 -0.10519,-0.07 -0.126583,-0.234 -1.511874,-1.631 -0.345877,-0.179 -5.223809,1.093 -1.051893,0.756 -0.153327,0.225 -0.08736,0.9 -3.47838,-5.68 3.139634,-2.073 1.326456,-1.304 2.210758,-2.28 2.112701,-1.961 2.692134,-2.336 0.43502,-0.203 0.417192,-0.13 2.208975,-0.303 1.952244,2.275 0.26565,-0.13 1.37459,-0.459 0.98771,-0.121 0.69888,0.162 0.0802,0.08 0.0642,0.16 0.56338,2.113"},"06051":{"name":"Mono, CA","path":"m 107.42501,243.90214 3.43024,5.135 2.30703,3.435 9.81827,14.772 8.18872,12.223 -16.61813,-3.931 -3.66201,-3.832 -0.21038,-2.394 -0.55448,-1.109 -0.24781,-0.298 -1.12678,-0.362 -1.33359,-0.362 0.32092,-0.208 0.9574,-0.733 0.62579,-2.024 -0.31118,-1.07578 -1.16765,-0.86166 0.5553,-2.15156 -0.49742,-1.086 -0.7078,-0.674 -0.44215,-0.346 -0.6347,-0.465 -0.75594,-0.41 -0.41719,-0.273 -0.53129,-0.451 -0.73811,-1.173 0.28882,-2.111 0.19434,-0.678 0.13549,-0.112 1.81497,-1.544 0.83616,-1.918 -0.72384,-2.669 0.025,-0.234 0.41897,-1.077 0.76307,-1.002"},"06003":{"name":"Alpine, CA","path":"m 103.19069,237.55214 4.23432,6.35 -0.76307,1.002 -0.41897,1.077 -0.025,0.234 0.72384,2.669 -0.83616,1.918 -1.81497,1.544 -0.56338,-2.113 -0.0642,-0.16 -0.0802,-0.08 -0.69888,-0.162 -0.98771,0.121 -1.37459,0.459 -0.26565,0.13 -1.952244,-2.275 -0.465329,-1.954 1.116077,-4.331 2.371216,-1.18 0.44037,-0.321 1.43878,-1.28 0.0891,-0.137 0.12123,-0.64 -0.025,-0.443 -0.19968,-0.427"},"06009":{"name":"Calaveras, CA","path":"m 98.303846,248.26514 -2.208975,0.303 -0.417192,0.13 -0.43502,0.203 -2.692134,2.336 -2.112701,1.961 -2.210758,2.28 -1.326456,1.304 -3.139634,2.073 -3.271566,-6.752 -0.304871,-3.638 0.119453,0.137 0.224641,0.137 1.399553,0.298 4.250362,-1.343 3.214514,-1.415 0.836166,-0.433 0.779115,0.05 6.830174,0.419 0.465329,1.954"},"06005":{"name":"Amador, CA","path":"m 98.954594,241.98014 -1.116077,4.331 -6.830174,-0.419 -0.779115,-0.05 -0.836166,0.433 -3.214514,1.415 -4.250362,1.343 -1.399553,-0.298 -0.224641,-0.137 -0.119453,-0.137 -0.09628,-1.76 1.244444,-4.709 1.663417,0.193 2.057511,-0.63326 3.148469,2.39326 0.796943,0.201 1.276535,0.146 3.521168,0.159 0.996624,-0.159 4.161219,-2.316"},"06077":{"name":"San Joaquin, CA","path":"m 80.184539,248.46514 0.304871,3.638 -1.148168,4.269 -0.643616,2.642 -0.98771,0.258 -1.030499,-0.119 -0.891435,-0.177 -0.449283,-0.162 -2.034255,0.539 -0.360139,0.162 -0.836166,0.536 -4.73352,2.798 -0.980579,-1.494 -0.128366,-0.275 0.989493,-3.599 0.722062,-2.605 1.262272,-6.235 0.779114,-1.011 1.93798,-2.052 0.408277,0 0.313785,0.132 0.215727,0.497 0.331614,0.314 0.866475,0.216 3.182423,0.371 0.121235,-0.02 1.237311,-0.426 1.454822,0.04 0.09628,1.76"},"06013":{"name":"Contra Costa, CA","path":"m 57.16234,246.07014 1.551097,0.94 0.891435,0.258 3.792164,0.922 0.256733,0.03 0.233556,-0.02 0.162241,-0.106 0.144413,-0.176 0.369054,1.013 0.160458,0.215 0.451066,0.186 0.199682,0.05 0.698885,0.02 0.788028,-0.223 0.426106,-0.267 0.08736,-0.159 0.04992,-0.322 0.08736,-0.143 0.128366,-0.06 0.199682,0 1.021584,0.183 0.320917,0.168 0.05705,0.07 -1.262272,6.235 -1.301495,0.144 -6.355931,0.17 -3.141417,-3.231 -0.0731,-0.537 -0.344094,-1.077 -0.540209,-0.755 -0.09627,-0.06 -0.79516,-0.02 -0.689971,-0.506 -0.659662,-1.503 2.282074,-0.499 0.377968,-0.179 0.490289,-0.383 0.04814,-0.153 -0.01605,-0.225"},"06017":{"name":"El Dorado, CA","path":"m 102.28143,234.10514 0.90926,3.447 0.19968,0.427 0.025,0.443 -0.12123,0.64 -0.0891,0.137 -1.43878,1.28 -0.44037,0.321 -2.371216,1.18 -4.161219,2.316 -0.996624,0.159 -3.521168,-0.159 -1.276535,-0.146 -0.796943,-0.201 -3.148469,-2.39326 -2.057511,0.63326 -1.663417,-0.193 -0.722063,-5.095 2.19293,-2.619 0.490289,-1.068 0.377969,-0.314 1.895191,-0.538 2.419354,-0.394 0.771983,0.04 0.121235,0.05 0.417191,0.246 0.554473,0.572 0.199681,0.449 0.146196,0.245 0.247819,0.287 1.060807,1.052 0.21751,0.13 0.144413,0 0.859343,-0.162 0.426106,-0.191 0.948487,-0.795 3.83317,0.144 1.01267,0.09 0.369054,-0.09 0.249602,-0.107 0.07131,-0.271 0.21751,-0.169 2.426492,0.618"},"06067":{"name":"Sacramento, CA","path":"m 74.84841,234.79014 5.762235,2.111 0.722063,5.095 -1.244444,4.709 -1.454822,-0.04 -1.237311,0.426 -0.121235,0.02 -3.182423,-0.371 -0.866475,-0.216 -0.331614,-0.314 -0.215727,-0.497 -0.313785,-0.132 -0.408277,0 -1.93798,2.052 -0.779114,1.011 -0.05705,-0.07 -0.320917,-0.168 -1.021584,-0.183 -0.199682,0 -0.128366,0.06 -0.08736,0.143 -0.04992,0.322 -0.08736,0.159 -0.426106,0.267 -0.788028,0.223 -0.698885,-0.02 -0.199682,-0.05 -0.451066,-0.186 -0.160458,-0.215 -0.369054,-1.013 1.044762,0.44 1.709772,-0.169 1.968288,-2.027 1.470868,-2.469 1.173128,-0.509 0.34766,-0.208 0.875389,-1.808 0.779114,-3.175 0.02496,-0.239 -0.02496,-0.105 -0.668576,-1.182 -0.07131,-2.266 2.025341,0.588"},"06095":{"name":"Solano, CA","path":"m 55.345595,243.25914 3.649535,1.051 0.07845,-0.208 -0.03922,-0.104 -0.06418,0 -0.09628,-0.136 -0.06418,-0.187 0.04814,-0.2 0.971664,-2.788 2.435401,0.681 0.08023,-0.191 0.02496,-0.201 0.02318,-0.41 -0.01605,-0.193 -0.08023,-0.522 -0.394014,-1.19 0.0071,-0.112 0.03209,-0.151 0.811206,-1.527 0.08914,-0.1 0.811205,0.136 6.083153,1.214 0.185418,0.307 0,0.07 -0.19255,0.82 -1.092899,3.88 1.750778,0.501 -1.470868,2.469 -1.968288,2.027 -1.709772,0.169 -1.044762,-0.44 -0.144413,0.176 -0.162241,0.106 -0.233556,0.02 -0.256733,-0.03 -3.792164,-0.922 -0.891435,-0.258 -1.551097,-0.94 -1.784653,-2.676 -0.03209,-0.135"},"06075":{"name":"San Franciso, CA","path":"m 52.765783,253.31014 -1.920151,-0.545 0,-0.02 0.02318,-0.355 0.226425,-1.31 0.208595,-0.12 0.827252,-0.162 0.691754,0.05 0.32983,0.08 0.121236,0.178 0.126583,0.393 -0.103406,1.372 -0.103407,0.332 -0.427888,0.103"},"06041":{"name":"Marin, CA","path":"m 45.9677,237.15214 0.21751,-0.114 1.454822,0.03 0.144412,0.04 3.801079,4.525 1.274696,0.68721 0.74173,1.56279 -0.641833,1.673 -0.666794,2.112 -0.04992,0.179 0.121235,0.19 0.297739,0.369 0.29774,0.494 0.103406,0.255 -0.0071,0.07 -1.060807,1.035 -0.474244,-0.06 -0.297739,-0.153 -0.201464,-0.193 -5.664178,-6.5 0.939573,-5.006 -0.05527,-0.426 -0.201465,-0.587 -0.0731,-0.191"},"06055":{"name":"Napa, CA","path":"m 60.055938,227.52314 1.679463,1.063 0.882521,4.699 0.208596,1.327 0.02496,0.474 -0.0089,1.679 -0.08914,0.1 -0.811206,1.527 -0.03209,0.151 -0.0071,0.112 0.394014,1.19 0.08023,0.522 0.01605,0.193 -0.02318,0.41 -0.02496,0.201 -0.08023,0.191 -2.435401,-0.681 -0.971664,2.788 -0.04814,0.2 0.06418,0.187 0.09628,0.136 0.06418,0 0.03922,0.104 -0.07845,0.208 -3.649535,-1.051 0.698885,0.128 0.554473,-0.9 0.04101,-0.53 -0.01605,-0.538 -0.21751,-1.858 -1.23018,-4.354 -0.706017,-1.938 0.05705,-1.51 0.295957,-0.989 3.045141,-0.04 2.059215,-1.743 0.199682,-0.305 -0.07132,-1.159"},"06097":{"name":"Sonoma, CA","path":"m 39.989737,223.98914 2.515357,0.74632 0.353981,-0.76632 4.041797,1.22568 0.394589,-1.04963 5.382961,1.59095 2.144793,5.032 -0.295957,0.989 -0.05705,1.51 0.706017,1.938 1.23018,4.354 0.21751,1.858 0.01605,0.538 -0.04101,0.53 -0.554473,0.9 -0.698885,-0.128 0.03209,0.135 -1.775738,0.49 -0.74173,-1.56279 -1.274696,-0.68721 -3.801079,-4.525 -0.144412,-0.04 -1.454822,-0.03 -0.21751,0.114 -1.139254,-4.052 -3.72085,-7.119 -1.117859,-1.992"},"06113":{"name":"Yolo, CA","path":"m 61.373479,226.45514 8.62909,2.418 2.8205,5.329 0.07131,2.266 0.668576,1.182 0.02496,0.105 -0.02496,0.239 -0.779114,3.175 -0.875389,1.808 -0.34766,0.208 -1.173128,0.509 -1.750778,-0.501 1.092899,-3.88 0.19255,-0.82 0,-0.07 -0.185418,-0.307 -6.083153,-1.214 -0.811205,-0.136 0.0089,-1.679 -0.02496,-0.474 -0.208596,-1.327 -0.882521,-4.699 -1.679463,-1.063 1.317541,-1.068"},"06061":{"name":"Placer, CA","path":"m 77.645733,229.25214 2.545938,-0.208 0.852212,0.729 0.185418,0.09 2.41044,0.811 0.57765,-0.1 1.108945,-1.1 0.153327,-0.225 0.135498,-0.353 0.153327,-0.162 0.836166,-0.627 0.836166,-0.434 1.269403,-0.633 2.433618,-1.134 0.909263,-0.208 0.666794,-0.03 10.952172,2.84 -0.85935,3.383 -0.28882,1.198 -0.24247,1.012 -2.426487,-0.618 -0.21751,0.169 -0.07131,0.271 -0.249602,0.107 -0.369054,0.09 -1.01267,-0.09 -3.83317,-0.144 -0.948487,0.795 -0.426106,0.19 -0.859343,0.163 -0.144413,0 -0.21751,-0.13 -1.060807,-1.052 -0.247819,-0.287 -0.146196,-0.245 -0.199681,-0.449 -0.554473,-0.572 -0.417191,-0.246 -0.121235,-0.05 -0.771983,-0.04 -2.419354,0.394 -1.895191,0.538 -0.377969,0.314 -0.490289,1.068 -2.19293,2.619 -5.762235,-2.111 1.429861,-4.213 0.948487,0.25 0.418975,-1.575"},"06057":{"name":"Nevada, CA","path":"m 104.45118,225.62814 -0.77911,2.884 -10.952172,-2.84 -0.666794,0.03 -0.909263,0.208 -2.433618,1.134 -1.269403,0.633 -0.836166,0.434 -0.836166,0.627 -0.153327,0.162 -0.135498,0.353 -0.153327,0.225 -1.108945,1.1 -0.57765,0.1 -2.41044,-0.811 -0.185418,-0.09 -0.852212,-0.729 1.198088,-4.388 0.465329,-0.74 1.567143,-1.086 1.469085,-0.772 0.957401,-0.103 0.418974,0.06 0.481375,0.232 0.240688,-0.28 0.401146,-0.103 2.893597,0.231 2.266028,-0.563 0.05705,-0.07 0.256733,-0.22 0.609742,-0.296 0.274562,-0.04 1.269403,0.408 0.361923,0.451 0.128366,1.084 0.376186,0.443 0.226424,0.128 8.340266,2.202"},"06091":{"name":"Sierra, CA","path":"m 88.467753,216.75814 1.647372,-1.048 0.226424,-0.833 0.456415,-0.323 0.836166,-0.24 3.262652,2.556 3.544345,0.883 5.086533,1.351 2.56376,0.312 -1.64024,6.212 -8.340264,-2.202 -0.226424,-0.128 -0.376186,-0.443 -0.128366,-1.084 -0.361923,-0.451 -1.269403,-0.408 -0.274562,0.04 -0.609742,0.296 -0.256733,0.22 -0.05705,0.07 -2.266028,0.563 -2.893597,-0.231 -0.401146,0.103 -0.240688,0.28 1.718687,-5.493"},"06115":{"name":"Yuba, CA","path":"m 87.071766,217.39314 1.395987,-0.635 -1.718687,5.493 -0.481375,-0.232 -0.418974,-0.06 -0.957401,0.103 -1.469085,0.772 -1.567143,1.086 -0.465329,0.74 -1.198088,4.388 -2.545938,0.208 -0.755937,-0.235 -0.386883,0.01 -1.203437,0.167 -0.427889,0.337 -0.247819,0.266 -0.02496,-2.393 0.796943,-4.767 0.103406,-0.344 0.304871,-0.646 0.112321,-0.06 2.233936,0.123 1.775738,-0.128 0.698885,-0.355 2.061762,-2.79765 2.961857,-0.0974 1.423239,-0.93598"},"06101":{"name":"Sutter, CA","path":"m 75.916349,221.58414 -0.112321,0.06 -0.304871,0.646 -0.103406,0.344 -0.796943,4.767 0.02496,2.393 0.247819,-0.266 0.427889,-0.337 1.203437,-0.167 0.386883,-0.01 0.755937,0.235 -0.418975,1.575 -0.948487,-0.25 -1.429861,4.213 -2.025341,-0.588 -2.8205,-5.329 0.675708,-1.341 -0.609742,-2.733 -0.517032,-1.059 0.169373,-1.109 1.406684,-2.571 4.788789,1.524"},"06011":{"name":"Colusa, CA","path":"m 71.940549,218.36614 -0.812989,1.694 -1.406684,2.571 -0.169373,1.109 0.517032,1.059 0.609742,2.733 -0.675708,1.341 -8.62909,-2.418 -0.852212,-1.013 -0.08023,-0.183 -0.611525,-2.332 0.06418,-1.614 0.653121,-1.91121 -2.355762,-0.99779 -0.618656,-0.619 -0.973447,-1.446 -0.144412,-0.692 0.353008,-0.595 0.707799,-0.769 10.17762,2.86218 0.320641,-0.75373 2.226724,0.67583 -0.261774,0.64936 1.96199,0.64936"},"06033":{"name":"Lake, CA","path":"m 57.515348,214.28314 -0.707799,0.769 -0.353008,0.595 0.144412,0.692 0.973447,1.446 0.618656,0.619 2.355762,0.99779 -0.653121,1.91121 -0.06418,1.614 0.611525,2.332 0.08023,0.183 0.852212,1.013 -1.317541,1.068 0.07132,1.159 -0.199682,0.305 -2.059215,1.743 -3.045141,0.04 -2.144793,-5.032 -1.461953,-1.66 -0.442152,-0.709 -0.98771,-2.594 -0.297739,-1.318 0.03922,-0.194 0.09627,-0.328 0.394014,-0.925 0.394014,-0.74 0.763069,-0.234 0.747022,-0.834 0.153327,-0.963 -0.09627,-3.161 0.19255,-0.64 0.137281,-0.348 0.497421,-1.086 0.738108,-0.151 1.488696,0.492 0.866475,-0.05 0.306654,-0.786 0.103406,-0.332 2.538807,0.726 -0.586564,2.273 -0.199682,0.633 -0.547341,1.474"},"06007":{"name":"Butte, CA","path":"m 71.876365,208.38414 -0.226424,-0.394 0.105189,-0.669 0.714931,-0.818 4.041766,1.091 0.499204,0.03 0.536644,-0.282 0.137281,-0.415 0.137281,-0.277 0.263864,-0.279 0.739891,-0.541 3.109326,-1.927 0.861126,0.234 1.10003,-0.209 0.215728,-0.128 0.24247,-0.466 0.536644,0.152 0.210379,1.091 0.02318,0.549 -0.08736,0.314 -0.376185,0.376 -1.431645,4.147 2.529893,4.605 1.312192,2.821 -1.423239,0.93598 -2.961857,0.0974 -2.061762,2.79765 -0.698885,0.355 -1.775738,0.128 -2.233936,-0.123 -4.788789,-1.524 0.812989,-1.694 1.494045,-3.168 -2.055475,-0.53571 1.372639,-4.14829 -0.87539,-2.129"},"06021":{"name":"Glenn, CA","path":"m 56.841423,204.06914 15.034942,4.315 0.87539,2.129 -1.372639,4.14829 2.055475,0.53571 -1.494045,3.168 -1.961991,-0.64936 0.261774,-0.64936 -2.226724,-0.67583 -0.320641,0.75373 -10.177619,-2.86218 0.547341,-1.474 0.199682,-0.633 0.586564,-2.273 -2.538807,-0.726 0.531295,-5.108"},"06063":{"name":"Plumas, CA","path":"m 85.133786,196.49014 2.845461,0.788 4.475003,1.188 -1.148168,4.252 0.208596,0.572 1.647371,1.469 0.634702,0.17 0.36014,-0.08 0.146195,-0.537 1.743647,-1.398 0.616873,-0.185 0.643616,0.169 2.957778,2.216 3.90449,4.58 0.4992,0.653 0.85935,3.726 -0.0161,0.701 -0.16937,0.649 -0.85935,2.542 -0.95561,1.141 -5.086533,-1.351 -3.544345,-0.883 -3.262652,-2.556 -0.836166,0.24 -0.456415,0.323 -0.226424,0.833 -1.647372,1.048 -1.395987,0.635 -1.312192,-2.821 -2.529893,-4.605 1.431645,-4.147 0.376185,-0.376 0.08736,-0.314 -0.02318,-0.549 -0.210379,-1.091 -0.536644,-0.152 1.519005,-1.037 0.06418,-0.06 0.128366,-0.202 0.529513,-1.583 -0.208596,-1.079 -0.151544,-0.03 -1.198089,-0.582 -0.05705,-0.06 -0.06418,-0.224 0.0071,-0.154 0.121235,-1.535 0.08914,-0.305"},"06103":{"name":"Tehama, CA","path":"m 85.133786,196.49014 -0.08914,0.305 -0.121235,1.535 -0.0071,0.154 0.06418,0.224 0.05705,0.06 1.198089,0.582 0.151544,0.03 0.208596,1.079 -0.529513,1.583 -0.128366,0.202 -0.06418,0.06 -1.519005,1.037 -0.24247,0.466 -0.215728,0.128 -1.10003,0.209 -0.861126,-0.234 -3.109326,1.927 -0.739891,0.541 -0.263864,0.279 -0.137281,0.277 -0.137281,0.415 -0.536644,0.282 -0.499204,-0.03 -4.041766,-1.091 -0.714931,0.818 -0.105189,0.669 0.226424,0.394 -15.034942,-4.315 -0.0731,-0.114 0,-1.034 0.522381,-1.062 0.618655,-0.362 0.185419,-0.419 0.05527,-0.746 -0.08023,-0.246 -0.05527,-0.429 0.377968,-3.142 0.328048,-1.159 0.08914,-0.08 0.21751,-1.027 0.01426,-0.237 -0.08736,-0.198 -1.085768,-1.235 1.479782,-0.171 2.410441,-0.06 1.927282,0.02 4.043549,0.548 1.091116,0.74 1.663418,0.531 0.588347,0.157 2.21789,0.148 1.654504,-0.06 1.486913,0.08 2.756317,0.392 2.442532,0.485 3.503339,1.091"},"06045":{"name":"Mendocino, CA","path":"m 39.934468,194.13714 8.042526,2.401 -0.16759,0.548 10.260417,3 0.08023,0.246 -0.05527,0.746 -0.185419,0.419 -0.618655,0.362 -0.522381,1.062 0,1.034 0.0731,0.114 -0.531295,5.108 -0.103406,0.332 -0.306654,0.786 -0.866475,0.05 -1.488696,-0.492 -0.738108,0.151 -0.497421,1.086 -0.137281,0.348 -0.19255,0.64 0.09627,3.161 -0.153327,0.963 -0.747022,0.834 -0.763069,0.234 -0.394014,0.74 -0.394014,0.925 -0.09627,0.328 -0.03922,0.194 0.297739,1.318 0.98771,2.594 0.442152,0.709 1.461953,1.66 -5.382961,-1.59095 -0.394589,1.04963 -4.041797,-1.22568 -0.353981,0.76632 -2.515357,-0.74632 -0.82012,-1.469 -1.228398,-2.656 0.980579,-10.122 0.05527,-0.394 0.03922,-0.178 0.331614,-0.825 0.3851,-0.845 0.401145,-0.585 0.224642,-0.332 0.306653,-0.319 0.112321,-0.153 0.06418,-0.09 0.01604,-0.02 0.401146,-0.619 0.03209,-0.16 0.345877,-2.313 0.05527,-0.572 -0.0071,-3.582 -0.01605,-0.06 -0.771982,-2.055 -0.424323,-1.109 -0.538427,-1.398"},"06023":{"name":"Humboldt, CA","path":"m 55.192269,165.32914 2.636864,0.779 0.320917,0.459 -0.128367,4.491 -0.281693,0.274 -0.295957,0.401 -0.531295,1.052 -0.03209,0.749 0.08736,0.152 -0.08736,1.117 -1.260489,1.286 -0.556255,0.49 -1.855968,1.494 -0.52238,2.66 -4.70856,15.805 -8.042526,-2.401 -0.386883,-0.681 -3.414196,-6.518 -0.105189,-0.289 0.433237,-4.163 0.05705,-0.105 1.461953,-2.106 1.028716,-1.326 0.394015,-0.442 0.707799,-0.755 1.051893,-1.021 1.237312,-1.318 0.684622,-0.722 0.520598,-0.627 0.684622,-0.988 0.74524,-1.311 0.363705,-0.836 -0.08914,-0.513 2.160838,-5.135 1.633109,-3.785 2.955998,0.867 1.880928,0.611 -0.354791,1.189 0.666793,0.892 0.939573,0.274"},"06105":{"name":"Trinity, CA","path":"m 58.021683,171.05814 0.82012,0.659 0.788029,0.763 1.269403,1.905 2.314165,2.442 1.349633,0.685 0.329831,0.05 0.3851,-0.305 0.208596,-0.371 -0.153327,-1.068 2.515629,-2.605 3.608529,-1.421 2.032472,1.254 -0.417192,2.337 0.338745,0.241 0.279911,0.305 0.04814,0.217 -0.249601,0.909 -0.119453,0.202 -0.160458,0.232 -1.937979,1.72 -0.634702,0.232 -0.112321,0.02 -4.612284,5.609 -2.957782,3.73 -2.747402,1.269 -2.089524,1.696 -0.249602,0.82 1.085768,1.235 0.08736,0.198 -0.01426,0.237 -0.21751,1.027 -0.08914,0.08 -0.328048,1.159 -0.377968,3.142 0.05527,0.429 -10.260417,-3 0.16759,-0.548 4.70856,-15.805 0.52238,-2.66 1.855968,-1.494 0.556255,-0.49 1.260489,-1.286 0.08736,-1.117 -0.08736,-0.152 0.03209,-0.749 0.531295,-1.052 0.295957,-0.401 0.281693,-0.274"},"06089":{"name":"Shasta, CA","path":"m 90.509139,180.25214 1.904105,0.504 -1.59032,5.875 -0.03209,0.772 -2.144792,7.763 -0.666793,2.112 -2.845461,-0.788 -3.503339,-1.091 -2.442532,-0.485 -2.756317,-0.392 -1.486913,-0.08 -1.654504,0.06 -2.21789,-0.148 -0.588347,-0.157 -1.663418,-0.531 -1.091116,-0.74 -4.043549,-0.548 -1.927282,-0.02 -2.410441,0.06 -1.479782,0.171 0.249602,-0.82 2.089524,-1.696 2.747402,-1.269 2.957782,-3.73 4.612284,-5.609 0.112321,-0.02 0.634702,-0.232 1.937979,-1.72 0.160458,-0.232 0.119453,-0.202 0.249601,-0.909 -0.04814,-0.217 -0.279911,-0.305 -0.338745,-0.241 3.471248,0.933 4.765611,1.381 9.199609,2.557"},"06035":{"name":"Lassen, CA","path":"m 114.5761,186.64014 -1.83279,7.135 -2.06456,8.221 -1.03585,4.008 -0.32983,1.294 -0.009,0.02 -1.12499,4.277 -1.73473,6.508 -0.35301,1.31 -2.56376,-0.312 0.95561,-1.141 0.85935,-2.542 0.16937,-0.649 0.0161,-0.701 -0.85935,-3.726 -0.4992,-0.653 -3.90449,-4.58 -2.957778,-2.216 -0.643616,-0.169 -0.616873,0.185 -1.743647,1.398 -0.146195,0.537 -0.36014,0.08 -0.634702,-0.17 -1.647371,-1.469 -0.208596,-0.572 1.148168,-4.252 -4.475003,-1.188 0.666793,-2.112 2.144792,-7.763 0.03209,-0.772 1.59032,-5.875 22.162858,5.884"},"06049":{"name":"Modoc, CA","path":"m 95.476215,162.08314 9.304795,2.603 3.05406,0.82 0.0232,0 6.0261,1.599 0.65074,0.168 4.74244,1.198 -4.70143,18.16 -22.162856,-5.883 -1.904105,-0.505 1.502959,-5.489 2.089524,-7.763 -0.08023,-0.05 -0.02496,-0.07 0.877172,-3.231 0.158675,-0.554 0.443935,-1.013"},"08083":{"name":"Montezuma, CO","path":"m 307.43805,307.04414 -0.78802,0.692 -1.28549,3.33789 -2.82046,1.98711 -0.13728,0.193 -1.53506,2.525 -2.42648,4.371 -0.24069,0.66 -12.02902,-1.608 1.57427,-11.154 2.72423,-3.059 10.8969,1.444 2.05743,0.226 1.56714,0.09 2.44253,0.297"},"08067":{"name":"La Plata, CO","path":"m 307.43805,307.04414 8.78242,1.084 -1.77574,14.714 -16.24016,-2.032 0.24069,-0.66 2.42648,-4.371 1.53506,-2.525 0.13728,-0.193 2.82046,-1.98711 1.28549,-3.33789 0.78802,-0.692"},"08099":{"name":"Prowers, CO","path":"m 402.52207,301.82914 12.48009,0.796 -0.009,0.144 -0.72385,12.125 -0.12836,2.177 -12.73504,-0.843 0.28882,-4.145 0.12837,0 0.0321,-0.33 0.66679,-9.924"},"08011":{"name":"Bent, CO","path":"m 402.52207,301.82914 -0.66679,9.924 -0.0321,0.33 -0.12837,0 -0.28882,4.145 -5.9227,-0.426 -5.91378,-0.45 1.19631,-14.368 11.75624,0.845"},"08061":{"name":"Kiowa, CO","path":"m 395.43517,293.27914 1.96828,0.09 8.01935,0.622 4.39478,0.248 5.682,0.376 -0.49742,8.013 -12.48009,-0.796 -11.75624,-0.845 -1.81675,-0.128 0.40293,-5.818 0.76307,-0.103 3.77612,0.289 1.39064,0.07 0.15333,-2.016"},"08017":{"name":"Cheyenne, CO","path":"m 416.11824,284.62614 -0.49029,8.084 -0.12837,1.902 -5.682,-0.376 -4.39478,-0.248 -8.01935,-0.622 -1.96828,-0.09 0.91639,-9.811 1.97542,0.1 5.92983,0.449 3.81712,0.2 2.60477,0.08 5.43954,0.331"},"08063":{"name":"Kit Carson, CO","path":"m 397.4195,271.26714 6.17943,0.403 13.23424,0.758 -0.007,0.134 -0.59548,10.069 -0.11232,1.995 -5.43954,-0.331 -2.60477,-0.08 -3.81712,-0.2 -5.92983,-0.449 -1.97542,-0.1 0.15154,-2.042 0.41898,-3.689 0.49742,-6.47"},"08125":{"name":"Yuma, CO","path":"m 407.4321,251.72014 10.6473,0.683 -0.13728,2.097 -0.50634,8.001 -0.60261,9.927 -13.23424,-0.758 0.52238,-6.899 0.18363,-3.136 0.74881,-8.059 0.3851,-1.995 1.99325,0.139"},"08121":{"name":"Washington, CO","path":"m 388.56398,260.45414 4.07386,0.323 0.27456,-3.819 0.37619,-4.225 0.25673,-1.994 11.89353,0.842 -0.3851,1.995 -0.74881,8.059 -0.18363,3.136 -0.52238,6.899 -6.17943,-0.403 -9.69881,-0.768 0.84329,-10.045"},"08095":{"name":"Phillips, CO","path":"m 418.54473,245.24114 -0.0802,1.207 -0.3851,5.955 -10.6473,-0.683 0.74702,-7.162 10.36561,0.683"},"08115":{"name":"Sedgwick, CO","path":"m 409.10443,238.74314 9.80222,0.656 -0.36192,5.842 -10.36561,-0.683 0.36905,-5.848 0.55626,0.03"},"08075":{"name":"Logan, CO","path":"m 392.69489,237.53714 3.30188,0.255 12.5514,0.918 -0.36905,5.848 -0.74702,7.162 -1.99325,-0.139 -11.89353,-0.842 0.1722,-1.97612 -2.02816,-0.19488 0.35479,-4.12 0.1034,0 0.5313,-6.379 0.016,-0.539"},"08087":{"name":"Morgan, CO","path":"m 388.56398,260.45414 -7.7537,-0.643 1.08399,-12.077 5.62495,0.483 2.1858,0.223 1.98434,0.128 2.02816,0.19488 -0.1722,1.97612 -0.25673,1.994 -0.37619,4.225 -0.27456,3.819 -4.07386,-0.323"},"08009":{"name":"Baca, CO","path":"m 395.4833,315.80214 5.9227,0.426 12.73504,0.843 -0.3851,5.898 -0.58657,9.162 -5.69627,-0.401 -9.45099,-0.779 -2.30703,-0.178 -1.52614,-0.113 0.20146,-2.892 0.52238,-5.921 0.14442,0 0.4261,-6.053"},"08089":{"name":"Otero, CO","path":"m 390.76583,300.98414 -1.19631,14.368 -11.7812,-0.971 0.12837,-2.099 0.85934,-9.506 0.43502,0.169 1.69551,0.507 1.83992,0.433 3.81712,0.307 0.16257,-1.31677 1.91091,0.10377 0.312,-2.123 1.81675,0.128"},"08025":{"name":"Crowley, CO","path":"m 379.58902,294.09914 9.76299,0.939 -0.40293,5.818 -0.312,2.123 -1.91091,-0.10377 -0.16257,1.31677 -3.81712,-0.307 -1.83992,-0.433 -1.69551,-0.507 -0.43502,-0.169 0.81299,-8.677"},"08073":{"name":"Lincoln, CO","path":"m 397.4195,271.26714 -0.49742,6.47 -0.41898,3.689 -0.15154,2.042 -0.91639,9.811 -0.15333,2.016 -1.39064,-0.07 -3.77612,-0.289 -0.76307,0.103 -9.76299,-0.939 0.65075,-8.003 5.94587,0.538 0.57051,-6.01 0.83617,-10.141 0.12837,0.02 9.69881,0.768"},"08039":{"name":"Elbert, CO","path":"m 380.23977,286.09614 0.57764,-5.989 -10.78279,-0.979 0.96453,-10.062 16.59317,1.417 -0.83617,10.141 -0.57051,6.01 -5.94587,-0.538"},"08005":{"name":"Arapahoe, CO","path":"m 367.42678,264.65914 1.48285,0.149 1.15708,0.114 4.61228,0.474 9.65068,0.762 3.72798,0.331 -0.33696,4.01 -0.12837,-0.02 -16.59317,-1.417 -6.807,-0.64 0.041,-1.288 0.0232,-0.199 0,-0.03 0.0178,0 2.94709,0.02 0.3227,-0.715 -0.12837,-1.197 0.0182,-0.199"},"08123":{"name":"Weld, CO","path":"m 384.46695,236.86314 8.22794,0.674 -0.016,0.539 -0.5313,6.379 -0.1034,0 -0.35479,4.12 -1.98434,-0.128 -2.1858,-0.223 -5.62495,-0.483 -1.08399,12.077 -14.42691,-1.305 0.0705,-0.565 -0.73478,-0.07 -0.101,0.569 -0.5327,-0.04 0.52951,-6.051 0.16938,-2.01 1.92015,0.179 0.21572,-2.026 1.2391,-12.931 15.30772,1.296"},"08001":{"name":"Adams, CO","path":"m 365.97634,258.48814 14.83394,1.323 7.7537,0.643 -0.50633,6.035 -3.72798,-0.331 -9.65068,-0.762 -4.61228,-0.474 -1.15708,-0.114 -1.48061,-0.164 0.62854,-0.77599 1.93097,0.15431 0.3733,-1.22638 2.03,0.14629 0.41642,-1.75892 -2.13827,-0.15652 -1.57957,1.94186 -1.71911,0.36035 -2.76196,-0.11 0.27457,-2.837 0.53719,-0.255 0.16977,-1.21 0.31674,0.04"},"08031":{"name":"Denver, CO","path":"m 364.60934,263.21814 2.75413,0.128 1.72913,-0.36585 1.58958,-1.94736 2.12443,0.16652 -0.43771,1.72992 -2.00833,-0.14629 -0.37018,1.22438 -1.92941,-0.15531 -0.62698,0.77499 -0.0184,0.386 0.12837,1.197 -0.3227,0.715 -2.94709,-0.02 0.0713,-0.844 0.0321,-0.331 0.23177,-2.514"},"08035":{"name":"Douglas, CO","path":"m 364.19215,268.42614 6.807,0.64 -0.96453,10.062 -6.53244,-0.619 -5.20776,-0.497 5.89773,-9.586"},"08041":{"name":"El Paso, CO","path":"m 380.23977,286.09614 -0.65075,8.003 -15.79801,-1.352 0.27278,-3.004 0.19255,-1.397 0.18541,-1.41153 -2.06327,-0.28508 0.017,-1.3252 0.72426,0.0478 -0.10783,-0.82594 0.3851,-3.713 0.10519,-2.324 6.53244,0.619 10.78279,0.979 -0.57764,5.989"},"08119":{"name":"Teller, CO","path":"m 358.27124,278.01214 0.0232,0 5.20776,0.497 -0.10519,2.324 -0.3851,3.713 0.10784,0.82594 -0.72427,-0.0478 -0.017,1.3252 2.06327,0.28508 -0.18541,1.41153 -0.19255,1.397 -2.98096,-0.231 -2.31417,-0.227 0.0553,-0.554 -0.74702,-0.66 -0.7702,-0.09 0.96453,-9.972"},"08101":{"name":"Pueblo, CO","path":"m 363.79101,292.74714 15.79801,1.352 -0.81299,8.677 -0.85934,9.506 -5.04553,-2.362 -5.13466,-2.394 -6.15625,-0.161 -0.73811,-0.57 -0.30665,-0.291 0.76485,-7.898 1.94333,0.176 0.54734,-6.035"},"08071":{"name":"Las Animas, CO","path":"m 372.87116,309.92014 5.04553,2.362 -0.12837,2.099 11.7812,0.971 5.91378,0.45 -0.4261,6.053 -0.14442,0 -0.52238,5.921 -0.20146,2.892 -16.75363,-1.246 -13.16115,-1.1 -4.8708,-0.448 -2.80445,-0.315 0.68284,-6.871 0.69888,0 6.87118,-1.936 0.77912,-0.619 3.26265,-3.719 2.16975,-3.208 1.80783,-1.278"},"08055":{"name":"Huerfano, CO","path":"m 352.90302,306.21514 0.96453,0.243 0.0963,-0.02 2.09665,-0.548 2.80446,-1.333 1.67055,1.943 0.30665,0.291 0.73811,0.57 6.15625,0.161 5.13466,2.394 -1.80783,1.278 -2.16975,3.208 -3.26265,3.719 -0.77912,0.618 -6.87118,1.937 -0.69888,0 0.61865,-2.707 -0.66679,-4.646 -1.68659,-1.205 -0.11232,-0.02 -1.27832,0.232 -1.35142,0.49 -0.85934,0.708 0.90926,-3.955 0.0481,-3.359"},"08023":{"name":"Costilla, CO","path":"m 346.78778,318.14814 5.15784,-4.619 0.85934,-0.708 1.35142,-0.49 1.27832,-0.232 0.11232,0.02 1.68659,1.205 0.66679,4.646 -0.61865,2.707 -0.68284,6.871 -1.18917,-0.114 -9.03202,-0.915 -0.7078,-0.788 -0.10341,-0.248 -0.025,-0.21 0.1141,-0.465 0.50456,-0.869 0.36192,-1.139 0.4261,-2.772 -0.16045,-1.883"},"08021":{"name":"Conejos, CO","path":"m 341.54792,316.58114 -0.11567,1.00235 5.35553,0.56465 0.16045,1.883 -0.4261,2.772 -0.36192,1.139 -0.50456,0.869 -0.1141,0.465 0.025,0.21 0.10341,0.248 0.7078,0.788 -5.22381,-0.538 -8.51677,-0.876 -0.17651,-0.522 -2.37121,-4.951 -0.50634,-0.353 0.4582,-4.026 11.50664,1.325"},"08003":{"name":"Alamosa, CO","path":"m 352.85488,309.57414 -0.90926,3.955 -5.15784,4.619 -5.35553,-0.56465 0.11567,-1.00235 0.85935,-8.012 10.44761,1.005"},"08105":{"name":"Rio Grande, CO","path":"m 330.88458,305.28614 1.9041,0.23 -0.20859,1.994 9.82718,1.059 -0.85935,8.012 -11.50664,-1.325 -0.58656,-0.08 0.30487,-2.717 0.64361,-3.245 0.48138,-3.928"},"08027":{"name":"Custer, CO","path":"m 347.98408,297.11214 4.45183,0.472 3.66558,0.492 5.19885,0.53 -0.76485,7.898 -1.67055,-1.943 -2.80446,1.333 -2.09665,0.548 -0.0963,0.02 -0.96453,-0.243 -0.46711,-0.699 -1.64559,-2.699 -0.93244,-2.724 -0.24247,-0.506 -1.63133,-2.475"},"08043":{"name":"Fremont, CO","path":"m 357.30671,287.98414 0.7702,0.09 0.74702,0.66 -0.0553,0.554 2.31417,0.227 2.98096,0.231 -0.82012,9.039 -1.94333,-0.176 -5.19885,-0.53 -3.66558,-0.492 -4.45183,-0.472 -3.36606,-4.58 1.99147,-1.382 0.52416,-1.052 0.2086,-0.87 0.007,-0.112 -0.0874,-0.328 -0.52238,-1.407 -0.0571,-0.07 -0.32092,-0.225 -0.41897,-0.169 4.13091,0.401 5.11862,0.449 2.11448,0.218"},"08109":{"name":"Saguache, CO","path":"m 340.35875,292.63014 4.25927,-0.1 3.36606,4.58 1.63133,2.475 0.24247,0.506 0.93244,2.724 1.64559,2.699 0.46711,0.699 -0.0481,3.359 -10.44761,-1.005 -9.82718,-1.059 0.20859,-1.994 -1.9041,-0.23 -0.11946,-0.943 -2.93282,-2.353 -0.19255,-0.153 -1.29436,-0.337 -0.55447,0.281 -0.0802,0.09 0.50633,-4.396 0.75594,-6.413 13.38579,1.569"},"08015":{"name":"Chaffee, CO","path":"m 336.10839,277.35214 6.81412,0.788 0.0963,0.443 1.00376,2.351 0.72384,0.291 0.0891,0 0.0945,-0.104 0.0499,-0.105 0.11945,-0.03 0.41897,0.06 0.97167,0.923 0.29774,0.603 0.2496,2.209 -0.61866,1.63 -0.47602,0.492 0.41897,0.169 0.32092,0.225 0.0571,0.07 0.52238,1.407 0.0874,0.328 -0.007,0.112 -0.2086,0.87 -0.52416,1.052 -1.99147,1.382 -4.25927,0.1 -1.29437,-1.796 -1.37281,-3.822 -0.0963,-0.843 0.61687,-2.774 0.16224,-0.345 0.0802,-0.05 0.0802,-0.05 1.51681,-1.57021 -2.46388,-0.376 -2.01075,-2.31979 0.5313,-1.336"},"08051":{"name":"Gunnison, CO","path":"m 322.27866,271.11614 0.15333,1.358 0.33696,0.644 1.0929,1.4 3.56752,0.415 0.24248,0.03 1.08398,1.276 -0.0161,0.443 0.31379,0.538 1.06081,0.972 1.38885,0.506 0.45107,0.04 0.33696,-0.169 0.69175,-0.837 0.0945,-0.37 0.83616,-0.207 0.12124,0.02 1.54218,1.512 2.01075,2.31979 2.46388,0.376 -1.51681,1.57021 -0.16046,0.1 -0.16224,0.345 -0.61687,2.774 0.0963,0.843 1.37281,3.822 1.29437,1.796 -13.38579,-1.569 -0.75594,6.413 -10.11778,-1.214 -0.74703,-3.705 2.40331,0.298 1.01267,-8.439 1.53327,-12.637 1.9772,-0.661"},"08097":{"name":"Pitkin, CO","path":"m 327.5096,269.18114 12.03794,1.462 -3.43915,6.709 -0.5313,1.336 -1.54218,-1.512 -0.12124,-0.02 -0.83616,0.207 -0.0945,0.37 -0.69175,0.837 -0.33696,0.169 -0.45107,-0.04 -1.38885,-0.506 -1.06081,-0.972 -0.31379,-0.538 0.0161,-0.443 -1.08398,-1.276 -0.24248,-0.03 -3.56752,-0.415 -1.0929,-1.4 -0.33696,-0.644 -0.15333,-1.358 -0.33696,-2.601 5.5679,0.666"},"08065":{"name":"Lake, CO","path":"m 343.4449,270.65914 1.25335,0.138 -0.34587,0.36 -0.67393,1.164 -0.12837,0.692 -0.0891,1.599 -0.016,1.656 -0.2817,1.405 -0.24069,0.467 -6.81412,-0.788 3.43915,-6.709 3.89736,0.02"},"08093":{"name":"Park, CO","path":"m 358.06086,267.82314 -0.98058,10.068 1.19096,0.121 -0.96453,9.972 -2.11448,-0.218 -5.11862,-0.449 -4.13091,-0.401 0.47602,-0.492 0.61866,-1.63 -0.2496,-2.209 -0.29774,-0.603 -0.97167,-0.923 -0.41897,-0.06 -0.11945,0.03 -0.0499,0.105 -0.0945,0.104 -0.0891,0 -0.72384,-0.291 -1.00376,-2.351 -0.0963,-0.443 0.24069,-0.467 0.2817,-1.405 0.016,-1.656 0.0891,-1.599 0.12837,-0.692 0.67393,-1.164 0.34587,-0.36 2.04139,0.529 3.07723,-3.109 0.69176,-1.134 7.55223,0.74"},"08059":{"name":"Jefferson, CO","path":"m 364.88391,260.38114 -0.13728,1.419 -0.13729,1.418 -0.23177,2.514 -0.0321,0.331 -0.0713,0.844 -0.0178,0 0,0.03 -0.0232,0.199 -0.041,1.288 -5.89773,9.586 -0.0232,0 -1.19096,-0.121 0.98058,-10.068 0.42611,-4.17 0.38688,-3.828 4.96522,0.481 -0.0573,0.211 0.67182,0.07"},"08047":{"name":"Gilpin, CO","path":"m 354.06723,258.88514 3.05406,0.316 1.10895,0 0.68283,0.112 -0.0392,0.505 -0.38688,3.828 -2.53881,-1.045 -0.46711,-0.62 -0.85043,-0.883 -1.00554,-0.387 0.44215,-1.833"},"08019":{"name":"Clear Creek, CO","path":"m 353.62508,260.71814 1.00554,0.387 0.85043,0.883 0.46711,0.62 2.53881,1.045 -0.42611,4.17 -7.55223,-0.74 1.03584,-0.829 0.0161,-0.127 -0.0802,-0.46 -0.16759,-0.167 -0.41897,0.03 -1.56715,-0.829 -0.24782,-0.287 0.0945,-0.589 0.34587,-0.593 1.64024,-1.214 1.0519,-0.113 0.39401,-0.167 0.8843,-0.724 0.1355,-0.291"},"08117":{"name":"Summit, CO","path":"m 340.83299,257.65714 0.68284,0.09 2.82941,1.031 1.67947,1.382 0.62579,0.891 0.18541,1.013 0.0571,0.925 0.47424,0.866 0.51347,0.177 0.90035,-0.02 0.39223,-0.193 -0.0945,0.589 0.24782,0.287 1.56715,0.829 0.41897,-0.03 0.16759,0.167 0.0802,0.46 -0.0161,0.127 -1.03584,0.829 -0.69176,1.134 -3.07723,3.109 -2.04139,-0.529 -1.25335,-0.138 -0.50634,-3.351 1.79184,-1.28945 -3.41382,-3.83018 -0.52281,-2.65237 -0.0892,-0.681 0.12837,-1.198"},"08037":{"name":"Eagle, CO","path":"m 337.49011,257.28814 3.34288,0.369 -0.12837,1.198 0.0892,0.681 0.52281,2.65237 3.41382,3.83018 -1.79184,1.28945 0.50634,3.351 -3.89736,-0.02 -12.03794,-1.462 1.48692,-12.736 1.43164,0.178 7.06195,0.665"},"08013":{"name":"Boulder, CO","path":"m 354.06723,258.88514 1.166,-7.513 1.76683,0.156 2.57981,0.344 6.03501,0.483 -0.52951,6.051 -0.14855,1.298 -0.61468,-0.06 -0.45916,0.654 -4.98913,-0.469 0.0392,-0.505 -0.68283,-0.112 -1.10895,0 -3.05406,-0.316"},"08049":{"name":"Grand, CO","path":"m 337.49011,257.28814 0.20146,-1.728 0.77912,-7.875 -0.0731,-2.426 0.54021,1.501 0.1355,0.186 2.68322,0.989 3.62457,0.915 0.72385,0.02 3.81712,-0.186 1.28545,-0.964 1.06794,-1.92 2.95778,5.567 -1.166,7.513 -0.44215,1.833 -0.1355,0.291 -0.8843,0.724 -0.39401,0.167 -1.0519,0.113 -1.64024,1.214 -0.34587,0.593 -0.39223,0.193 -0.90035,0.02 -0.51347,-0.177 -0.47424,-0.866 -0.0571,-0.925 -0.18541,-1.013 -0.62579,-0.891 -1.67947,-1.382 -2.82941,-1.031 -0.68284,-0.09 -3.34288,-0.369"},"08069":{"name":"Larimer, CO","path":"m 347.74339,233.40614 15.68569,1.607 5.73015,0.554 -1.2391,12.931 -0.21572,2.026 -1.92015,-0.179 -0.16938,2.01 -6.03501,-0.483 -2.57981,-0.344 -1.76683,-0.156 -2.95778,-5.567 -0.86647,-2.051 -0.65967,-2.979 -0.79516,-2.106 -0.20146,-0.392 -1.67233,-2.797 -0.33697,-2.074"},"08057":{"name":"Jackson, CO","path":"m 336.3259,232.02614 9.18356,1.115 2.23393,0.265 0.33697,2.074 1.67233,2.797 0.20146,0.392 0.79516,2.106 0.65967,2.979 0.86647,2.051 -1.06794,1.92 -1.28545,0.964 -3.81712,0.186 -0.72385,-0.02 -3.62457,-0.915 -2.68322,-0.989 -0.1355,-0.186 -0.54021,-1.501 -0.1765,-0.738 -0.32092,-2.45 0.007,-0.838 1.18204,-3.494 0.16046,-0.08 0.29774,-0.289 0.057,-0.305 -0.016,-0.33 -0.36192,-1.003 -0.21038,-0.307 -0.31201,-0.323 -1.19808,-0.665 -0.12837,-0.06 -0.0963,0.07 -0.26564,0.143 -0.81121,-0.769 -0.21751,-0.78 -0.0143,-0.362 0.27278,-0.587 0.0802,-0.07"},"08107":{"name":"Routt, CO","path":"m 328.43313,231.09814 7.89277,0.928 -0.0802,0.07 -0.27278,0.587 0.0143,0.361 0.21751,0.781 0.81121,0.769 0.26564,-0.143 0.0963,-0.07 0.12837,0.06 1.19808,0.665 0.31201,0.323 0.21038,0.306 0.36192,1.004 0.016,0.33 -0.057,0.305 -0.29774,0.289 -0.16046,0.08 -1.18204,3.494 -0.007,0.838 0.32092,2.45 0.1765,0.738 0.0731,2.426 -0.77912,7.875 -0.20146,1.728 -7.06195,-0.665 0.36014,-3.988 0.35479,-3.078 -6.96032,-0.788 0.2496,-2.562 0.82012,-4.74 1.13212,-1.127 0.57052,-0.02 0.43502,0.05 0.26387,-2.156 0.77911,-7.111"},"08081":{"name":"Moffat, CO","path":"m 318.14062,229.85514 10.29251,1.243 -0.77911,7.111 -0.26387,2.156 -0.43502,-0.05 -0.57052,0.02 -1.13212,1.127 -0.82012,4.74 -0.2496,2.562 -0.007,0.07 -0.13728,-0.01 -4.70856,-0.652 -7.03164,-0.842 -15.99769,-2.155 1.40668,-9.883 1.07685,-7.964 13.66748,1.84 5.68914,0.685"},"08103":{"name":"Rio Blanco, CO","path":"m 324.18277,248.76914 6.96032,0.788 -0.35479,3.078 -4.85297,-0.553 -0.28882,2.081 -0.22465,1.959 -1.73451,-0.28447 -0.47625,2.03847 -5.15071,-0.629 -3.67984,-0.387 -0.37797,3.008 -4.86902,-0.644 -3.96153,-0.151 -1.8918,-0.17966 -0.14959,0.59466 -5.94587,-0.802 -0.0642,-0.25 -2.61191,-0.353 1.79179,-12.906 15.99769,2.155 7.03164,0.842 4.70856,0.652 0.13728,0.01 0.007,-0.07"},"08045":{"name":"Garfield, CO","path":"m 330.7883,252.63514 -0.36014,3.988 -1.43164,-0.178 -1.48692,12.736 -5.5679,-0.666 -28.36546,-3.691 0.41898,-3.004 0.51346,-3.737 2.61191,0.353 0.0642,0.25 5.94587,0.802 0.14959,-0.59466 1.8918,0.17966 3.96153,0.151 4.86902,0.644 0.37797,-3.008 3.67984,0.387 5.15071,0.629 0.47625,-2.03847 1.73451,0.28447 0.22465,-1.959 0.28882,-2.081 4.85297,0.553"},"08029":{"name":"Delta, CO","path":"m 320.30146,271.77714 -1.53327,12.637 -15.52523,-1.95 0.48138,-3.705 4.00353,-1.17983 3.66281,-3.22417 2.10557,-0.119 1.66341,0.3519 1.66342,-0.4999 0.85935,-0.865 0.58656,-0.378 2.03247,-1.068"},"08077":{"name":"Mesa, CO","path":"m 293.57624,264.82414 28.36546,3.691 0.33696,2.601 -1.9772,0.661 -2.03247,1.068 -0.58656,0.378 -0.85935,0.865 -1.66342,0.4999 -1.66341,-0.3519 -2.10557,0.119 -3.66281,3.22417 -4.00353,1.17983 -0.48138,3.705 -0.51347,3.865 -12.05398,-1.622 0.69889,-5.048 0.69175,-4.227 0.12837,-0.884 0.60974,-4.172 0.77198,-5.552"},"08085":{"name":"Montrose, CO","path":"m 303.24296,282.46414 15.52523,1.95 -1.01267,8.439 -2.40331,-0.298 0.14442,-0.539 -0.0713,-0.151 -8.82342,-1.104 -0.0232,0.252 0.60974,1.617 1.33359,0.167 0.47424,0.218 0.58657,0.586 0.15332,0.193 -0.14441,1.036 -0.21751,0.474 -0.33696,-0.04 -19.14981,-2.544 0.78803,-8.01 12.05398,1.622 0.51347,-3.865"},"08111":{"name":"San Juan, CO","path":"m 312.3873,301.45114 0.22464,0.186 0.41006,0.208 0.0892,0 0.60261,-0.185 0.27278,-0.128 0.24068,-0.218 0.009,-0.06 -0.0571,-0.193 0,-0.121 0.10518,-0.651 1.3015,0.161 0.6347,7.673 -8.78242,-1.084 0.21573,-0.636 0.64362,-0.795 0.98771,-0.184 0.4582,-0.82 0.0802,-0.44 2.56377,-2.718"},"08033":{"name":"Dolores, CO","path":"m 309.82353,304.16914 -0.0802,0.44 -0.4582,0.82 -0.98771,0.184 -0.64362,0.795 -0.21573,0.636 -2.44253,-0.297 -1.56714,-0.09 -2.05743,-0.226 -10.8969,-1.444 -2.72423,3.059 1.27654,-9.094 3.95619,0.552 0.0713,-0.192 0.43324,-0.08 9.61145,1.294 0.27278,0.456 0.0963,0.371 0,0.417 0.25674,0.555 2.82228,-0.145 0.78625,-0.233 0.44215,0.169 1.14995,0.926 0.89856,1.125"},"08113":{"name":"San Miguel, CO","path":"m 289.88748,292.71714 19.14981,2.544 -0.0161,0.171 0.16938,0.701 1.00491,0.19999 -0.35595,1.97501 0.14441,0.362 0.10519,0.112 0.57052,0.378 0.5937,0.186 0.47424,0.328 0.60261,0.66 0.22642,0.563 -0.0963,0.433 -0.0731,0.121 -2.56377,2.718 -0.89856,-1.125 -1.14995,-0.926 -0.44215,-0.169 -0.78625,0.233 -2.82228,0.145 -0.25674,-0.555 0,-0.417 -0.0963,-0.371 -0.27278,-0.456 -9.61145,-1.294 -0.43324,0.08 -0.0713,0.192 -3.95619,-0.552 0.86112,-6.237"},"08091":{"name":"Ouray, CO","path":"m 315.35221,292.55514 0.74703,3.705 -0.11357,1.04875 0.89227,0.81208 -1.14901,1.10792 -0.14316,1.22625 -1.3015,-0.161 -0.10518,0.651 0,0.121 0.0571,0.193 -0.009,0.06 -0.24068,0.218 -0.27278,0.128 -0.60261,0.185 -0.0892,0 -0.41006,-0.208 -0.22464,-0.186 0.0731,-0.121 0.0963,-0.433 -0.22642,-0.563 -0.60261,-0.66 -0.47424,-0.328 -0.5937,-0.186 -0.57052,-0.378 -0.10519,-0.112 -0.14441,-0.362 0.35595,-1.97501 -1.00491,-0.19999 -0.16938,-0.701 0.0161,-0.171 0.33696,0.04 0.21751,-0.474 0.14441,-1.036 -0.15332,-0.193 -0.58657,-0.586 -0.47424,-0.218 -1.33359,-0.167 -0.60974,-1.617 0.0232,-0.252 8.82342,1.104 0.0713,0.151 -0.14442,0.539"},"08053":{"name":"Hinsdale, CO","path":"m 316.09924,296.26014 10.11778,1.214 -0.50633,4.396 -1.27832,-0.13 -1.23018,0.241 -0.68106,5.103 -0.025,2.827 -0.51346,3.963 -6.36485,-0.754 0.60261,-4.992 -0.6347,-7.673 0.14316,-1.22625 1.149,-1.10792 -0.89227,-0.81208 0.11358,-1.04875"},"08079":{"name":"Mineral, CO","path":"m 325.71069,301.87014 0.0802,-0.09 0.55447,-0.281 1.29436,0.337 0.19255,0.153 2.93282,2.353 0.11946,0.943 -0.48138,3.928 -0.64361,3.245 -0.30487,2.717 -0.0161,0.185 -7.54511,-0.781 0.0892,-0.706 0.51346,-3.963 0.025,-2.827 0.68106,-5.103 1.23018,-0.241 1.27832,0.13"},"08007":{"name":"Archuleta, CO","path":"m 315.61786,313.12014 6.36485,0.754 -0.0892,0.706 7.54511,0.781 0.0161,-0.185 0.58656,0.08 -0.4582,4.026 0.50634,0.353 2.37121,4.951 0.17651,0.522 -2.55485,-0.274 -4.58198,-0.505 -2.34447,-0.451 -7.61108,-0.9 -1.10003,-0.136 1.17313,-9.722"},"08014":{"name":"Broomfield, CO","path":"m 363.78175,260.50814 0.0777,-0.205 0.46606,-0.656 0.62824,0.07 0.13424,-1.306 0.53655,0.03 0.0987,-0.565 0.71317,0.06 -0.0565,0.572 -0.40949,-0.03 -0.0635,0.465 -0.32477,-0.03 -0.16943,1.215 -0.94604,0.444 -0.68484,-0.06"},"09003":{"name":"Hartford, CT","path":"m 910.37792,171.66914 3.17788,-0.74731 0.22757,0.87968 0.82688,-0.25166 0.049,-0.89993 3.97876,-0.93278 0.77198,1.888 -0.50103,0.13505 0.48085,1.90997 0.3197,-0.0698 0.14846,1.14443 0.48574,-0.2036 1.31136,2.91607 0.35685,0.16748 0.56266,0.75038 0.0571,0.127 0.0963,0.531 -0.82725,0.643 -1.00376,-1.253 -1.99503,0.66 -1.35676,0.642 -0.36192,1.253 -2.92676,1.09655 -0.5598,-1.76871 -0.68358,0.26216 -1.43877,-3.43 1.07863,-0.459 0.0945,-4.002 -2.31416,0.731 -0.0553,-1.719"},"09005":{"name":"Litchfield, CT","path":"m 909.63803,171.83714 0.73989,-0.168 0.0553,1.719 2.31416,-0.731 -0.0945,4.002 -1.07863,0.459 1.43877,3.43 -1.77574,2.218 -0.65852,0.34006 0.3381,0.96295 -2.74968,0.86699 -0.0553,0.306 0.0374,0.191 0.1462,0.146 0.21751,0.136 -0.0321,0.05 -0.24069,0 -0.77515,-0.246 -0.35728,-0.42266 -0.73867,0.5944 -0.39671,-0.63874 -0.14976,-0.264 -0.3227,-0.531 -0.90035,-1.89 -0.14441,-0.168 -0.46712,-0.1 -1.57427,-8.743 7.22419,-1.528"},"09001":{"name":"Fairfield, CT","path":"m 904.53367,185.29014 -0.54556,-3.182 0.46712,0.1 0.14441,0.168 0.90035,1.89 0.3227,0.531 0.14976,0.264 0.39671,0.63874 0.73867,-0.5944 0.35728,0.42266 0.77515,0.246 0.24069,0 0.0321,-0.05 0.62579,0.233 1.35141,0.442 2.98809,2.115 -0.0571,1.116 -0.2086,0.481 -0.041,0.186 0.0499,1.094 0.0481,0.109 0.27456,0.171 -1.15887,0.314 -2.90964,2.2 -3.99185,3.389 -0.0981,0.188 -0.0499,0.247 -1.79713,-2.312 1.25158,-1.278 2.26396,-2.33389 -1.61143,-1.48311 -0.2817,-1.623 -0.62757,-3.68"},"09009":{"name":"New Haven, CT","path":"m 917.18314,180.95814 0.58656,1.792 0.2953,1.54884 0.92597,-0.28684 0.62043,-0.307 0.24069,0.154 0.74702,0.843 2.00752,2.492 -0.88431,-0.05 -0.5616,0.136 -2.31417,0.7 -1.4459,0.608 -0.78803,0.115 -0.37084,-0.459 -0.1355,0.06 -1.96116,2.283 -0.26564,0.371 -0.31379,0.594 -0.0214,0.09 0,0.02 -0.27456,-0.171 -0.0481,-0.109 -0.0499,-1.094 0.041,-0.186 0.2086,-0.481 0.0571,-1.116 -2.98809,-2.115 -1.35141,-0.442 -0.62579,-0.233 -0.21751,-0.136 -0.1462,-0.146 -0.0374,-0.191 0.0553,-0.306 2.74968,-0.86699 -0.3381,-0.96295 0.65852,-0.34006 1.77574,-2.218 0.68358,-0.26216 0.5598,1.76871 2.92676,-1.09655"},"09007":{"name":"Middlesex, CT","path":"m 921.90061,179.65614 0.9834,0.86094 1.68596,-0.52982 0.78267,2.03664 -1.86982,0.78925 2.2991,3.07099 -3.17529,1.31 -2.00752,-2.492 -0.74702,-0.843 -0.24069,-0.154 -0.62043,0.307 -0.92597,0.28662 -0.2956,-1.54862 -0.58626,-1.792 0.36192,-1.253 1.35676,-0.642 1.99503,-0.66 1.00376,1.253"},"09011":{"name":"New London, CT","path":"m 933.05246,176.48314 0.96081,3.94251 -0.0783,0.0701 -0.26579,-0.003 -0.274,0.35605 0.0488,0.31509 0.20975,0.25828 0.0393,0.44768 0.20028,0.26774 0.0406,0.21847 -0.23405,0.3037 -0.11093,0.0764 -0.10146,0.19952 -0.5057,-0.20947 -0.99405,0.29866 -0.629,0.50681 -0.3464,0.27884 -1.28597,0.14348 -0.33613,0.62381 -0.44615,0.1009 -0.46959,-0.0718 -0.29481,-0.22121 -0.3019,0.11786 0.0195,0.63166 -0.871,0.4035 -0.90748,0.355 -0.16937,0.02 -0.16759,-0.03 -2.2991,-3.07099 1.86982,-0.78925 -0.78267,-2.03664 -1.68596,0.52982 -0.9834,-0.86094 0.82725,-0.643 1.26147,-0.60147 0.93146,-2.63653 1.0929,0.626 0.58656,0.291 3.53544,-0.355 1.50295,-0.617 1.15887,-0.202 0.25495,0.965 m -2.15825,8.80708 0.18785,-0.60504 0.18662,-0.0129 0.10743,0.0977 0.12855,-0.36953 0.58387,-0.31957 0.2143,-0.16388 0.2563,-0.10113 -0.0594,0.29583 -0.32804,0.24894 -0.45893,0.33465 -0.21661,0.4029 -0.23153,-0.002 z"},"09013":{"name":"Tolland, CT","path":"m 925.37899,168.14314 0.4475,1.549 -1.58676,0.401 -0.34587,0.112 0.68997,2.766 0.78803,-0.18352 0.68997,1.75052 -0.62433,-0.002 0.13582,0.5795 -1.00328,0.2528 0.35075,0.4072 -0.93146,2.63653 -1.26147,0.60147 -0.0963,-0.531 -0.0571,-0.127 -0.56266,-0.75038 -0.35685,-0.16748 -1.31136,-2.91607 -0.48574,0.2036 -0.14846,-1.14443 -0.3197,0.0698 -0.48085,-1.90997 0.50103,-0.13505 -0.77198,-1.888 6.17942,-1.464 0.56161,-0.11"},"09015":{"name":"Windham, CT","path":"m 930.48869,167.31414 1.80962,6.307 0.4992,1.897 -1.15887,0.202 -1.50295,0.617 -3.53544,0.355 -0.58656,-0.291 -1.0929,-0.626 -0.35075,-0.4072 1.00328,-0.2528 -0.13582,-0.5795 0.62433,0.002 -0.68997,-1.75052 -0.78803,0.18352 -0.68997,-2.766 0.34587,-0.112 1.58676,-0.401 -0.4475,-1.549 0.7078,-0.147 4.28958,-1.019 0.11232,0.337"},"10003":{"name":"New Castle, DE","path":"m 879.69727,231.2832 -0.20704,0.0117 -0.21289,0.0254 -0.21484,0.0371 -0.21875,0.0508 -0.22266,0.0664 -0.22656,0.0801 -0.27734,0.1269 -0.25977,0.1387 -0.24414,0.1504 -0.22656,0.1621 -0.21094,0.1719 -0.1953,0.1816 -0.1797,0.1934 -0.1641,0.20311 -0.1485,0.21289 -0.1348,0.22071 -0.1211,0.23242 -0.1074,0.24023 -0.0938,0.25 -0.0801,0.25782 -0.0684,0.26562 -0.0547,0.27539 -0.17187,0.0508 0.1875,0.70117 0.0176,0.11914 0.0215,0.11719 0.0274,0.11133 0.0312,0.10742 0.0312,0.10742 0.0351,0.10547 0.0371,0.10742 0.0352,0.10938 1.16601,4.35937 0.47461,1.77735 0.50586,1.79883 3.07422,-1.10352 0.2168,-0.80078 0.64648,-0.58594 -1.09961,-1.50586 -0.67578,-0.52929 -0.17969,-0.64258 0.16861,-1.72848 -1.028,-0.55275 -0.11514,-0.56255 0.078,-0.28513 0.15039,-0.375 0.41797,-0.39648 0.36328,-0.75782 0.19336,-0.90234 0.62109,-1.28906 0.58789,-0.70703 -0.1875,-0.0723 -0.1875,-0.0664 -0.18945,-0.0625 -0.19141,-0.0527 -0.19335,-0.0488 -0.19532,-0.0391 -0.19726,-0.0293 -0.19922,-0.0215 -0.20313,-0.01 z m 0.20791,4.85267 0.0845,0.46295 0.3073,-0.0308 -0.125,-0.561 z"},"10005":{"name":"Sussex, DE","path":"m 882.38151,259.08714 -1.22304,-4.356 2.42292,-0.633 1.00375,-0.909 0.0606,-0.346 0.29239,-0.69 1.39777,-0.996 1.34072,-0.747 0.14441,0.618 0.19255,0.232 1.60102,1.28 0.9057,0.69 0.63648,0.248 0.47424,0.09 0.35301,-0.1 0.24782,-0.193 0.041,-0.137 0.44928,0.94 1.07685,3.145 0.78803,2.706 0.19255,0.786 -5.10079,1.115 -0.25852,0.06 -0.6757,0.153 -0.28348,0.05 -0.24425,0.05 -0.066,0.01 -0.895,0.167 -0.36727,0.07 -1.04476,0.2 -0.52238,0.1 -0.0642,0 -1.22839,0.209 -0.54021,0.09 -0.20682,-0.726 -0.19255,-0.657 -0.24068,-0.867 -0.46712,-1.665"},"10001":{"name":"Kent, DE","path":"m 878.22743,244.30214 3.0729,-1.10297 0.21804,-0.80091 0.64563,-0.58712 1.51901,0.9 0.77198,0.99 0.14441,0.208 0.42433,1.091 0.0499,0.378 -0.13823,0.62334 0.65485,2.29547 1.00026,0.46585 0.68265,0.57138 0.40346,1.07596 -1.34072,0.747 -1.39777,0.996 -0.29239,0.69 -0.0606,0.346 -1.00375,0.909 -2.42292,0.633 -2.61013,-9.296 -0.32091,-1.133"},"12005":{"name":"Bay, FL","path":"m 732.95919,472.32014 0.82903,8.356 0.73276,6.317 -2.06813,-0.628 -0.44928,-0.185 -0.14442,-0.09 -0.54555,-0.388 -0.68997,-0.635 -4.35021,-2.523 -0.31913,-0.174 -0.22642,-0.129 -0.21573,-0.121 -0.34766,-0.169 -0.75237,-0.385 -0.31557,-0.154 -0.25673,-0.121 -0.30666,-0.127 -0.36905,-0.171 -0.32805,-0.117 -1.18917,-0.435 -0.23356,-2.757 0.48851,-0.538 2.13053,-0.924 6.01896,-0.579 1.19631,-0.13 -0.29596,-2.98 1.00376,-0.112 1.00376,-0.1"},"12063":{"name":"Jackson, FL","path":"m 729.81955,462.71614 9.49735,-1.156 3.46946,6.283 -1.05189,2.555 -3.23769,0.353 -1.43219,0.0835 0.0344,0.96348 -1.49583,0.247 -2.64399,0.275 -1.00376,0.1 -0.49742,-4.981 -1.51901,-0.854 -1.88092,0.187 1.56536,-4.019 0.19611,-0.03"},"12015":{"name":"Charlotte, FL","path":"m 820.17718,542.29414 0.83617,5.946 -10.15345,1.39241 0.0357,-0.62041 -0.22464,-1.262 -0.17171,-0.71255 -0.57678,-0.0481 -0.15962,-0.81935 0.54619,-0.21404 -0.0713,-0.248 -0.29774,-0.146 -0.64183,0.114 -0.1765,0.103 -0.96632,0.854 -0.10162,0.159 0.94506,1.83866 0.007,1.07942 -2.50556,0.23492 -2.644,-3.216 2.46036,-0.344 -0.18542,-1.35 -0.0945,-0.627 4.04027,-0.56798 z"},"12071":{"name":"Lee, FL","path":"m 821.01367,548.24023 -10.15429,1.39413 -0.28516,2.56681 -0.8459,-0.82923 -1.12114,0.24124 0.16523,0.53112 0.90592,0.76383 1.08442,2.62203 0.0456,0.69007 0.71563,-0.14332 0.0932,-0.50623 0.30822,-0.29869 0.89886,0.28856 0.0524,0.40385 0.78234,0.13105 1.43287,0.91822 1.04297,0.96485 0.65039,1.03125 0.58789,0.21289 3.3125,-0.5293 -0.47219,-2.32785 2.07766,-0.33231 L 821.94531,554 Z m -12.00781,1.47071 -2.50586,0.23437 0.01,0.0195 0.0469,0.0899 0.0977,0.29687 0.0957,0.3125 0.0809,0.62226 0.24032,-0.0701 -0.0419,-0.56194 0.13086,-0.44336 0.1289,-0.22071 0.0547,0 0.23437,0.21289 0.88282,-0.14453 0.0586,-0.0996 z m -2.13948,2.05247 0.24518,0.77565 2.12305,3.91211 0.1621,0.28321 0.0937,0.0898 0.0977,0.0801 1.05078,0.5625 0.62695,0.16992 0.32422,0.0195 0.16016,-0.0195 0.23047,-0.11328 0.92383,-0.75586 0,-0.0508 -1.0586,-0.20703 -0.2832,0.13476 -0.19922,0.2793 -1.32617,-0.32031 -0.38477,-0.2168 -0.27343,-0.25781 -1.93437,-3.62089 -0.1695,-0.97276 z"},"12051":{"name":"Hendry, FL","path":"m 821.01335,548.24014 8.07462,-1.223 4.63011,-0.745 0.53843,-4.47 2.34625,14.031 0.28705,1.664 -7.96943,1.404 -0.65788,-3.792 -0.33875,-2.121 -5.97796,1.011 -0.93244,-5.759"},"12021":{"name":"Collier, FL","path":"m 836.88981,557.49714 1.14995,6.257 0.62757,3.892 -9.73804,1.598 -0.14441,-0.289 -0.0963,-0.103 -0.96631,-0.541 -0.5206,-0.215 -0.15333,-0.05 -2.00216,-0.427 -0.24782,0 -2.40152,0.448 -0.19434,0.13 -0.16937,0.211 -0.0232,0.24 -0.0571,0.433 -0.0784,0.275 -0.14441,-0.02 -0.1141,-0.114 -1.30863,-1.849 -1.80783,-3.084 -0.21929,-0.845 -0.14263,-0.571 -0.5313,-1.863 -0.44928,-1.262 -0.34588,-0.706 -0.025,-0.04 0.58657,0.214 3.31257,-0.529 -0.47174,-2.32777 2.07811,-0.33223 -0.34588,-2.034 5.97796,-1.011 0.33875,2.121 0.65788,3.793 7.96943,-1.405"},"12087":{"name":"Monroe, FL","path":"m 838.66797,567.64258 -9.73828,1.5957 0.30078,1.77539 0.69726,0.2168 1.45313,1.41601 1.50976,2.29688 -0.26953,0.60547 1.14063,0.72265 0.58203,1.66211 0.86914,0.60352 0.0137,0.22461 -0.0469,0.15234 -0.27149,-0.0605 -0.11914,0.0605 -0.13867,0.2168 -0.0488,0.19141 -0.0879,0.8125 -0.0312,1.01171 0.0547,0.53125 0.85351,1.20508 0.1836,0.14453 0.91601,0.5293 0.33594,0.13867 1.66406,-0.39258 1.67188,-0.66211 1.25391,-1.01171 -0.0156,0 -0.2168,-0.3125 -0.93359,-3.78321 z m 14.25586,8.04297 -1.01953,1.63672 -1.01172,0.61718 0.57812,0.39453 0.0469,0.95899 -0.91406,0.84961 0.23242,0.59375 -0.35547,0.52344 -0.65235,0.0586 0.32227,0.81836 -0.40625,0.33398 -0.82226,-0.44922 -0.0703,0.29102 0.6211,0.24219 -0.0312,0.16211 -0.39063,1.08203 -0.625,0.75586 -0.44531,-0.0527 -0.0215,0.77735 -0.49414,0.38281 -0.45703,0.40039 -0.6582,1.00586 -0.01,0.10547 0,0.0195 0.0508,0.0508 1.63282,-1.55859 0.10156,-0.11914 1.03516,-1.47461 0.80468,-1.29883 1.45508,-1.7207 0.29883,-0.59375 0.12695,-0.36329 -0.14843,-0.32812 0.0371,-0.14453 1.24609,-3.19922 0.29492,-0.56055 0.12891,-0.0898 0,-0.006 z m -7.33008,11.84961 -1.78906,1.35546 -0.99024,0.98829 -0.0898,0.10547 0.0176,0.0195 0.0859,-0.0195 1.01563,-0.3711 0.83594,-0.72266 0.84179,-0.7539 0.23438,-0.49805 z m -4.0332,3.12109 -2.45899,1.36719 -1.77539,1.0039 0.0391,0.0703 -0.16406,0.19922 0.45313,0.26367 0.70898,-0.33594 1.21094,-0.82813 0.91016,-0.82812 0,-0.002 1.0996,-0.51953 0.10547,-0.12891 -0.11328,-0.24219 z m -8.73438,1.95313 -0.65039,0.3496 -0.15039,0.2461 0.67969,0.17773 0.99414,0.17383 -0.0371,-0.44531 z m -1.80859,0.72656 -0.42969,0.42187 -0.43359,-0.3164 -0.0176,0.8457 -0.46875,-0.0176 -0.59375,0.21875 -0.41406,0.55274 -0.49805,0.0703 -0.23828,0.26562 -0.0156,0.24219 -1.0039,1.00586 -0.79492,0.66797 -0.30469,0.17383 -0.73047,0.33984 -0.0918,-0.0312 -0.11914,-0.11914 -0.18359,0.0195 -0.95508,0.24024 -0.30664,0.42187 -0.043,0.14453 0.0898,0.37696 0.0547,0.0312 0.50977,-0.11914 1.41601,-0.0703 1.35352,-0.82422 1.92773,-1.11914 0.60938,-0.16211 -0.0117,-0.9375 0.44336,-0.0898 0.004,0 0.10938,0.44726 2.09375,-0.1621 1.24414,-0.61133 0.37891,-0.24219 -0.0611,-0.20766 -0.26777,-0.21226 -0.1164,-0.4707 -0.98437,-0.28907 -0.43555,-0.13476 z m 3.02468,1.63426 0.84898,-0.22801 -0.0954,-0.36723 -0.49022,0.003 z m -17.00515,3.96925 -0.7207,0.0449 -0.34375,0.54882 0.20312,0.41016 1.00391,-0.15039 z"},"12086":{"name":"Miami-Dade, FL","path":"m 853.40453,575.79214 -0.48138,-0.101 0.21751,-1.063 0.78625,-2.644 0.15333,-0.282 0.0963,0 0.15333,0.788 -0.36192,1.689 -0.56339,1.613 m -15.36477,-12.038 3.88786,-0.69618 0.17886,0.55218 4.95638,-0.811 2.85312,-0.30139 0.0386,-0.45231 1.36929,-0.3073 0.80229,-0.152 1.50296,-0.299 0.0196,0.06 0.20682,1.269 0.24068,1.68 0.0392,0.522 0.0499,1.043 -0.11411,0.522 -0.0981,0.236 -0.12801,0.45044 -0.0153,1.60217 -0.47958,-0.34163 -0.0364,-1.37668 -0.19827,-0.2973 -0.26386,0.08 -0.60261,0.367 -0.20325,0.227 -0.0553,0.176 -1.0608,4.411 -0.0927,0.779 0.0784,0.469 0.57587,1.758 0.13728,0.128 0.21751,0 0.0963,0.114 -0.0321,0.255 -0.39223,0.861 -0.87004,1.302 -0.0481,0.05 -0.54555,0.614 0.0234,0.67882 -0.75447,0.12292 -0.42606,0.46726 -0.37122,0.73066 -1.12852,-0.63698 -0.81061,0.0506 -0.31781,1.33187 -0.83698,0.60762 -0.8822,0.0918 -0.21226,0.60386 -0.55247,0.10239 -0.44805,-0.49888 -1.9208,-0.25299 -0.016,0 -0.21751,-0.312 -0.93423,-3.783 -1.5814,-9.892 -0.62757,-3.892"},"12011":{"name":"Broward, FL","path":"m 836.60276,555.83314 11.98089,-1.979 0.98058,-0.159 3.64062,-0.304 0.42432,7.896 -1.50296,0.299 -0.80229,0.152 -1.36929,0.3073 -0.0386,0.45231 -2.85312,0.30139 -4.95638,0.811 -0.17886,-0.55218 -3.88786,0.69618 -1.14995,-6.257 -0.28705,-1.664"},"12099":{"name":"Palm Beach, FL","path":"m 834.25651,541.80214 10.22119,-1.656 0.2086,-0.03 4.74421,-0.747 1.2177,-0.528 0.36192,0.795 0.39402,0.845 0.34409,0.745 0.53843,1.357 0.33874,2.147 0.27992,1.991 0.098,0.981 0.23178,5.329 -0.0303,0.362 -3.64062,0.304 -0.98058,0.159 -11.98089,1.979 -2.34625,-14.031"},"12115":{"name":"Sarasota, FL","path":"m 809.51205,539.88414 0.56517,3.959 -4.03998,0.571 0.0945,0.627 0.18542,1.35 -2.46036,0.344 -3.62992,-5.495 -0.21573,-0.299 -0.30844,-0.414 -0.19076,-0.269 -0.91818,-1.132 -0.5206,-0.528 -1.0929,-1.095 7.96052,-1.06 0.55625,4.002 4.01502,-0.561"},"12027":{"name":"DeSoto, FL","path":"m 819.10211,535.37314 1.07507,6.921 -10.09996,1.549 -0.98057,-6.901 4.00967,-0.564 2.21076,-0.41 3.78503,-0.595"},"12043":{"name":"Glades, FL","path":"m 832.1759,536.32914 1.51636,1.18933 0.56425,4.28367 -0.53843,4.47 -4.63011,0.745 -8.07462,1.223 -0.83617,-5.946 6.03502,-0.909 -0.3227,-1.994 1.91976,-0.28424 -0.22247,-2.02976 4.58911,-0.748"},"12085":{"name":"Martin, FL","path":"m 847.10565,532.67514 3.54256,6.164 -1.2177,0.528 -4.74421,0.747 -0.2086,0.03 -10.22119,1.656 3.53242,-4.3473 -0.19667,-1.8877 5.32543,-0.877 2.65291,-0.44 -0.20147,-1.295 1.73652,-0.28"},"12111":{"name":"St. Lucie, FL","path":"m 836.2658,527.64414 7.2545,-1.175 3.58535,6.206 -1.73652,0.28 0.20147,1.295 -2.65291,0.44 -5.32543,0.877 -1.32646,-7.923"},"12061":{"name":"Indian River, FL","path":"m 831.47701,522.30814 7.26341,-1.164 1.00376,-0.933 0.10519,-0.144 3.67093,6.402 -7.2545,1.175 -1.97899,0.314 -0.31913,-1.904 -1.92906,0.328 -0.56161,-4.074"},"12093":{"name":"Okeechobee, FL","path":"m 826.59017,527.23414 5.44845,-0.852 1.92906,-0.328 0.31913,1.904 1.97899,-0.314 1.32646,7.923 0.19667,1.8877 -3.53242,4.3473 -0.56425,-4.28367 -1.51636,-1.18933 -1.73652,-1.733 -2.02356,-1.562 -2.89949,-2.68092 0.67091,-1.09408 0.40293,-2.025"},"12055":{"name":"Highlands, FL","path":"m 818.04844,528.47914 8.54173,-1.245 -0.40293,2.025 -0.67091,1.09408 2.89949,2.68092 2.02356,1.562 1.73652,1.733 -4.58911,0.748 0.22247,2.02976 -1.91976,0.28424 0.3227,1.994 -6.03502,0.909 -1.07507,-6.921 -1.05367,-6.894"},"12049":{"name":"Hardee, FL","path":"m 808.10002,529.98314 9.94842,-1.504 1.05367,6.894 -3.78503,0.595 -2.21076,0.41 -4.00967,0.564 -0.99663,-6.959"},"12081":{"name":"Manatee, FL","path":"m 797.95906,531.48614 10.14096,-1.503 0.99663,6.959 0.4154,2.942 -4.01502,0.561 -0.55625,-4.002 -7.96052,1.06 -1.15886,-1.092 -0.65075,-1.199 0.53129,-0.247 0.69354,-0.451 1.34607,-2.161 0.0802,-0.17 0.13728,-0.697"},"12103":{"name":"Pinellas, FL","path":"m 794.30417,519.82614 0.72207,4.67 -1.35855,0.376 -0.0713,0.07 -0.0481,0.182 0.11945,0.258 0.23356,0.152 0.53472,0.23267 1.00171,-0.16581 0.0807,0.63682 0.57756,0.25132 0.82012,-0.351 0.1034,0.578 -0.5967,0.33081 0.33284,0.65819 -0.71271,1.09474 0.20445,1.06471 -0.38377,0.64114 -1.37465,0.3784 0.0447,0.73734 0.2767,0.28472 0.21457,0.62714 -0.67291,0.19272 -0.31523,-2.10591 -0.87041,-1.33505 -1.34196,-1.16951 -0.88959,-1.46278 0.91795,-1.51966 0.0143,-0.05 0.0963,-1.189 0.0571,-1.036 -0.19255,-1.631 -0.16759,-0.376 -0.10519,-0.155 -0.35479,-0.41 3.10397,-0.457"},"12057":{"name":"Hillsborough, FL","path":"m 794.30417,519.82614 11.00209,-1.553 1.00198,-0.144 1.06972,6.919 0.72206,4.935 -10.14096,1.503 2.04138,-3.045 0.0392,-0.09 0.45106,-1.095 0.10341,-0.586 -0.32983,-0.997 -0.28883,-0.383 -0.90162,-0.0407 -0.69691,-0.35698 0.12009,1.45043 0.30933,0.34708 0.0614,0.61371 -0.81598,0.0628 -0.81639,-0.62509 0.26375,-0.45113 -0.56881,-2.07913 -0.73098,0 -0.60261,0.114 -0.57051,0.161 -0.72207,-4.67"},"12053":{"name":"Hernando, FL","path":"m 792.73703,508.01514 4.56237,-0.662 0.10697,0.651 3.10041,-0.49 0.041,0.451 0.27278,0.371 0.81121,0.907 0.41719,0.25 2.58338,0.64 0.67392,1.053 -3.98828,0.58 0.14442,0.989 -7.76975,1.149 -0.77198,0.112 -0.18364,-6.001"},"12101":{"name":"Pasco, FL","path":"m 805.30626,511.18614 0.53665,3.768 0.11741,1.27377 -0.93778,0.219 0.28372,1.82623 -11.00209,1.553 -3.10397,0.457 1.72047,-6.267 0.77198,-0.112 7.76975,-1.149 -0.14442,-0.989 3.98828,-0.58"},"12097":{"name":"Osceola, FL","path":"m 813.7428,512.95514 15.94956,-2.5 0.39401,2.274 0.56161,3.649 -0.12837,0.03 0.9574,5.905 0.56161,4.074 -5.44845,0.852 -0.17651,-0.802 -0.14441,-0.565 -1.04655,-1.559 -0.60082,-0.857 -2.10982,-0.34584 -1.53707,-2.45518 -1.25218,-0.46915 -1.0593,-1.17632 1.48158,0.34749 0.76372,-1.26268 -2.19358,0.15168 -0.26222,-1.20029 -1.35514,0.14978 -0.13871,-1.27553 -0.87803,-1.24337 -2.03524,0.26741 -0.30309,-1.984"},"12105":{"name":"Polk, FL","path":"m 813.7428,512.95514 0.30309,1.984 2.03524,-0.26741 0.87803,1.24337 0.13871,1.27553 1.35514,-0.14978 0.26222,1.20029 2.19358,-0.15168 -0.76372,1.26268 -1.48158,-0.34749 1.0593,1.17632 1.25218,0.46915 1.53707,2.45518 2.10982,0.34584 0.60082,0.857 1.04655,1.559 0.14441,0.565 0.17651,0.802 -8.54173,1.245 -9.94842,1.504 -0.72206,-4.935 -1.06972,-6.919 -1.00198,0.144 -0.28372,-1.82623 0.93778,-0.219 -0.11741,-1.27377 0.81892,-0.38933 0.33675,0.35 0.65819,-0.004 0.0474,-1.00007 6.03858,-0.956"},"12095":{"name":"Orandge, FL","path":"m 817.10173,502.29714 -0.6454,1.858 0.0731,0.508 0.16879,1.10389 2.70821,-0.31047 0.12,0.52358 6.71786,-1.125 2.36693,2.31783 1.08114,3.28217 -15.94956,2.5 -1.51365,-9.756 0.19433,-0.183 0.19255,-0.04 0.28169,-0.04 4.20401,-0.638"},"12117":{"name":"Seminole, FL","path":"m 817.10173,502.29714 0.60974,-2.262 1.0929,0.857 2.00511,-0.22081 0.59075,0.80781 0.42432,0.07 0.12124,-0.02 0.65966,-0.316 0.19968,-0.449 1.28546,-0.0244 0.19254,1.26139 0.65966,0.829 1.3015,2.016 -6.71786,1.125 -0.12,-0.52358 -2.70821,0.37476 -0.16879,-1.16818 -0.0731,-0.508 0.6454,-1.858"},"12069":{"name":"Lake FL","path":"m 810.84742,491.87114 0.8113,1.46227 1.8843,0.60255 0.98425,1.63118 1.3532,0.898 0.84151,0.459 0.81121,0.625 0.0481,0.07 0.24247,1.173 -0.11232,1.247 -0.60974,2.262 -4.20401,0.638 -0.28169,0.04 -0.19255,0.04 -0.19433,0.183 1.51365,9.756 -6.03858,0.956 -1.99859,-13.925 5.89951,-0.891 0.0374,-2.38 -0.79516,-4.844"},"12119":{"name":"Sumter, FL","path":"m 798.57058,501.03114 7.13505,-1.045 1.99859,13.925 -0.0474,1.00007 -0.65819,0.004 -0.33675,-0.35 -0.81892,0.38933 -0.53665,-3.768 -0.67392,-1.053 -2.58338,-0.64 -0.41719,-0.25 -0.81121,-0.907 -0.27278,-0.371 -0.041,-0.451 0.0874,-0.997 0.0731,-0.208 0.2496,-0.434 0.40114,-0.545 0.37084,-0.1 0.0713,-0.07 0.21037,-0.731 -0.016,-0.1 -2.54059,-2.282 -0.8433,-1.02"},"12017":{"name":"Citrus, FL","path":"m 793.82102,499.76014 1.28187,-0.36098 3.46769,1.63198 0.8433,1.02 2.54059,2.282 0.016,0.1 -0.21037,0.731 -0.0713,0.07 -0.37084,0.1 -0.40114,0.545 -0.2496,0.434 -0.0731,0.208 -0.0874,0.997 -3.10041,0.49 -0.10697,-0.651 -4.56237,0.662 -0.32983,-3.402 -0.12837,-0.738 -0.13728,-0.282 -2.65112,-2.032 0.13371,-0.241 0.20325,-0.242 0.52238,-0.507 0.37797,-0.1 0.30487,0 1.23731,0.28 1.18204,-0.697 0.35301,-0.259 0.016,-0.05"},"12075":{"name":"Levy, FL","path":"m 789.73824,488.30314 0.0728,0.57163 2.05656,-0.25939 0.34089,1.32223 2.75354,-0.52747 0.94849,6.1 -2.64221,0.394 0.55269,3.856 -0.016,0.05 -0.35301,0.259 -1.18204,0.697 -1.23731,-0.28 -0.30487,0 -0.37797,0.1 -0.52238,0.506 -0.20325,0.243 -0.13371,0.241 0.0392,-0.771 -0.20681,-0.611 -1.23702,-0.55142 0.51175,-0.64113 -0.47282,-0.77745 -0.48316,-0.209 -3.22329,0.23217 -0.50273,0.83702 -0.6848,-0.086 -0.87541,-2.47716 -1.87199,-0.52905 1.60636,-1.432 0.85221,-1.535 0.43324,-1.455 0.7078,-3.07 5.65526,-0.182"},"12083":{"name":"Marion, FL","path":"m 794.96205,489.41014 3.56753,-0.504 0.36192,0.401 -0.041,0.248 1.46374,0.644 1.478,-0.617 0.25673,-0.163 0.0161,-0.05 -0.10163,-0.673 0.51169,-0.611 0.41897,-0.225 1.34963,-0.531 2.05738,-0.36212 0.12352,0.80486 1.29775,-0.2354 0.26413,1.3817 0.8115,-0.11536 0.0946,1.28502 0.94942,-0.12967 0.55797,0.0968 0.186,0.73901 -0.67807,0.11815 0.93957,0.958 0.79516,4.844 -0.0374,2.38 -5.89951,0.891 -7.13505,1.045 -3.46769,-1.63198 -1.28187,0.36098 -0.55269,-3.856 2.64221,-0.394 -0.94849,-6.099"},"12127":{"name":"Volusia, FL","path":"m 809.90785,490.91314 0.67808,-0.11937 3.74558,-1.36971 0.2225,-0.93892 0.3679,-0.0588 0.44331,3.12182 1.66341,-0.28 0.0802,-0.02 3.55148,-0.641 -0.4582,-2.461 0.84508,-1.333 1.51544,2.524 1.22483,1.888 0.94671,1.471 0.56873,0.77 1.68125,2.06 3.71372,4.482 -4.70143,0.781 0.70602,3.983 -0.4582,0.08 -1.3015,-2.017 -0.65966,-0.829 -0.19254,-1.26139 -1.28546,0.0244 -0.19968,0.449 -0.65966,0.316 -0.12124,0.02 -0.42432,-0.07 -0.59075,-0.80781 -2.00511,0.22081 -1.0929,-0.857 0.11232,-1.247 -0.24247,-1.173 -0.0481,-0.07 -0.81121,-0.625 -0.84151,-0.459 -1.3532,-0.898 -0.98425,-1.63118 -1.8843,-0.60255 -0.8113,-1.46227 -0.93957,-0.958"},"12009":{"name":"Brevard, FL","path":"m 826.24429,504.85514 0.4582,-0.08 -0.70602,-3.982 4.70143,-0.781 3.67093,3.888 0.0392,0.05 0.15689,0.159 0.0285,0.05 1.46373,2.669 0,0.185 -0.6757,0.433 -0.18542,0.257 -0.21573,0.426 -0.016,0.113 -0.0107,0.03 -0.0642,0.344 -0.0463,0.627 0.0321,0.637 0.0642,0.568 0.27991,1.199 0.57943,1.75 0.7809,1.778 0.54555,0.993 0.44037,0.677 0.59548,0.91 0.0339,0.06 1.6545,2.266 -0.10519,0.144 -1.00376,0.933 -7.26341,1.164 -0.9574,-5.905 0.12837,-0.03 -0.56161,-3.649 -0.39401,-2.274 -1.08114,-3.28217 -2.36693,-2.31783"},"12133":{"name":"Washington, FL","path":"m 723.56703,470.19814 0.11945,-1.528 0.11232,-0.522 1.37459,-0.128 0.36014,0.297 0.0588,0.667 2.30703,-0.192 0.2086,-1.582 0,-0.196 -0.0499,-0.246 1.88092,-0.187 1.51901,0.854 0.49742,4.981 -1.00376,0.112 0.29596,2.98 -1.19631,0.13 -6.01896,0.579 -2.13053,0.924 -0.48851,0.538 0.71315,-1.358 1.66137,-1.12924 -0.97853,-2.20476 -0.31201,-0.346 -0.0945,-0.699 0.91283,-1.587 0.25139,-0.157"},"12059":{"name":"Holmes, FL","path":"m 719.12411,463.96414 10.49933,-1.215 -1.56536,4.019 0.0499,0.246 0,0.196 -0.2086,1.582 -2.30703,0.192 -0.0588,-0.667 -0.36014,-0.297 -1.37459,0.128 -0.11232,0.522 -0.11945,1.528 -3.79217,0.371 -0.65075,-6.605"},"12131":{"name":"Walton, FL","path":"m 716.14137,464.26014 2.98274,-0.296 0.65075,6.605 3.79217,-0.371 -0.25139,0.157 -0.91283,1.587 0.0945,0.699 0.31201,0.346 0.97853,2.20476 -1.66137,1.12924 -0.71315,1.358 0.23356,2.757 -8.19764,-1.68 -1.25336,-14.095 3.94549,-0.401"},"12091":{"name":"Okaloosa, FL","path":"m 712.19588,464.66114 1.25336,14.095 -7.97121,0.603 -1.06794,-13.991 1.88628,-0.142 5.89951,-0.565"},"12113":{"name":"Santa Rosa, FL","path":"m 697.01653,466.02814 7.39356,-0.66 1.06794,13.991 -2.31238,0.593 -0.18352,-0.6014 -5.91657,1.55837 0.1216,-1.0052 1.29489,-0.32077 0.32173,-2.74237 -2.80705,-1.76463 -1.01267,-2.428 -0.30487,-0.826 -0.0642,-0.379 -0.24069,-1.719 0.0624,-0.337 0.36905,-1.36 0.13906,-0.239 0.88074,-0.774 1.19096,-0.986"},"12033":{"name":"Escambia, FL","path":"m 688.46767,466.83914 8.54886,-0.811 -1.19096,0.986 -0.88074,0.774 -0.13906,0.239 -0.36905,1.36 -0.0624,0.337 0.24069,1.719 0.0642,0.379 0.30487,0.826 1.01267,2.428 2.80705,1.76463 -0.32173,2.74237 -1.29489,0.32077 -0.1216,1.0052 5.91657,-1.55837 0.18352,0.6014 -4.57307,1.423 -0.17115,0.04 -0.11945,0.03 -0.69889,0.179 -0.46354,0.09 -0.74168,0.144 -3.07545,0.731 -1.80961,0.523 1.2694,-0.573 0.26565,-2.514 0.19968,-5.022 -0.0321,-0.378 -0.0713,-0.273 -0.24068,-0.394 -0.88431,-0.547 -0.66679,-0.344 -0.32983,-0.06 -0.11054,-0.04 -0.62935,-0.433 -2.00038,-2.181 -0.25852,-0.438 0.44394,-3.078"},"12013":{"name":"Calhoun, FL","path":"m 732.95919,472.32014 2.64399,-0.275 1.49583,-0.247 -0.0344,-0.96348 1.43219,-0.0835 3.23769,-0.353 -0.93957,2.147 -0.65966,4.239 -0.93244,3.306 -5.41458,0.586 -0.82903,-8.356"},"12045":{"name":"Gulf, FL","path":"m 733.78822,480.67614 5.41458,-0.586 0.14896,3.51594 2.2383,1.48806 0.23355,3.127 0.19453,0.92913 -1.28029,0.62187 -0.29596,-0.05 -1.75256,1.721 -0.18542,0.392 -1.87201,0.153 -0.0553,-2.289 -0.0571,-0.249 -0.29596,-0.491 -1.14995,-1.449 -0.47603,-0.455 -0.0767,-0.06 -0.73276,-6.317"},"12037":{"name":"Franklin, FL","path":"m 750.99291,483.07114 4.17014,0.652 0.14441,0.4 0.0571,0.217 0.0481,0.169 0.007,0.03 -0.0178,0.257 -0.11232,0.323 -0.10341,0.07 -0.57764,0.161 -0.9164,-0.12 -0.21751,-0.05 -0.21216,-0.144 -0.1979,-0.33 -1.15708,0.424 -0.4582,0.211 -2.86864,2.216 -1.30149,1.085 -1.13213,0.837 -1.07863,0.69 -2.15906,0.691 -0.86112,0.195 -0.71315,-0.107 -0.58657,0.07 -0.38688,0.114 -1.85775,0.697 0.18542,-0.392 1.75256,-1.721 0.29596,0.05 1.28029,-0.62187 -0.19453,-0.92913 -0.23355,-3.127 0.24069,-1.009 9.16216,-1.014"},"12029":{"name":"Dixie, FL","path":"m 783.68897,483.14214 0.39401,5.343 -0.7078,3.07 -0.43324,1.455 -0.85221,1.535 -1.60636,1.432 -0.36014,-1.246 -0.69354,-1.052 -0.39401,-0.555 -0.48138,-0.226 -0.47424,0 -0.93244,-0.425 -1.56715,-0.804 -0.45819,-0.256 -0.0481,-0.129 -0.63649,-3.214 1.22376,-0.68995 0.14371,-3.12005 7.88385,-1.118"},"12041":{"name":"Gilchrist, FL","path":"m 784.28979,481.60514 1.43165,-1.25 3.12537,1.928 0.89143,6.02 -5.65526,0.182 -0.39401,-5.343 0.60082,-1.537"},"12001":{"name":"Alachua, FL","path":"m 791.04152,479.39614 2.24107,0.1 0.55447,0.779 0.2086,0.08 2.51563,0.425 1.10003,-0.08 0.22464,-0.128 0.13015,-0.03 0.92353,0.1 0.28169,0.07 1.75969,1.664 0.21751,0.451 -0.0339,0.264 0.79872,5.61 0.10163,0.673 -0.0161,0.05 -0.25673,0.163 -1.478,0.617 -1.46374,-0.644 0.041,-0.248 -0.36192,-0.401 -3.56753,0.505 -2.75354,0.52722 -0.34089,-1.32248 -2.05656,0.25914 -0.0728,-0.57188 -0.89143,-6.02 2.19471,-2.887"},"12107":{"name":"Putnam, FL","path":"m 810.10932,478.94114 1.88984,4.748 0.58327,3.09215 1.97158,1.70385 -0.2225,0.93892 -3.74551,1.36971 -0.186,-0.7392 -0.55795,-0.0954 -0.94942,0.12967 -0.0946,-1.28502 -0.8115,0.11536 -0.26413,-1.3817 -1.29775,0.2354 -0.12352,-0.80486 -2.05738,0.36212 -1.34963,0.531 -0.41897,0.225 -0.51169,0.611 -0.79872,-5.61 0.10519,-0.02 0.47424,-0.239 1.76148,-1.257 0.0874,-0.408 0.13549,-0.164 1.81497,-1.298 0.30665,-0.05 4.25928,-0.715"},"12035":{"name":"Flagler, FL","path":"m 811.99916,483.68914 4.10858,-0.62094 1.86938,-1.42706 3.0701,5.174 -0.84508,1.333 0.4582,2.461 -3.55148,0.641 -0.0802,0.02 -1.66341,0.28 -0.44331,-3.12182 -0.3679,0.0588 -1.97158,-1.70385 -0.58327,-3.09215"},"12109":{"name":"St. Johns, FL","path":"m 807.17649,472.84914 1.07151,-0.449 0.45463,0 1.31754,0.417 2.06635,-0.353 -0.57943,-3.327 1.11786,-0.189 2.39439,6.216 1.68659,4.025 0.0321,0.08 0.2496,0.512 0.18542,0.401 0.80407,1.464 -1.86938,1.42706 -4.10858,0.62094 -1.88984,-4.747 -0.50356,-2.50909 -1.99836,-1.16498 -0.43091,-2.41893"},"12019":{"name":"Clay, FL","path":"m 807.17649,472.84914 0.43091,2.41868 1.99836,1.16473 0.50356,2.50859 -4.25928,0.715 -0.30665,0.05 -1.81497,1.297 -0.13549,0.164 -0.0874,0.409 -1.76148,1.257 -0.47424,0.239 -1.42986,-9.635 -0.14442,-0.99 1.97721,-0.288 4.11308,-0.683 0.54734,-0.121 0.61687,-0.08 0.22642,1.576"},"12007":{"name":"Bradford, FL","path":"m 798.00898,473.70914 1.83101,-0.273 1.42986,9.635 -0.10519,0.02 0.0339,-0.264 -0.21751,-0.451 -1.75969,-1.664 -0.28169,-0.07 -0.92353,-0.1 -0.13015,0.03 -0.22464,0.128 -1.10003,0.08 -2.51563,-0.424 -0.2086,-0.08 -0.55447,-0.779 0.86113,-0.392 1.24622,-0.676 2.12697,-2.997 0.58834,-1.148 0.0392,-0.25 -0.1355,-0.322"},"12125":{"name":"Union, FL","path":"m 798.00898,473.70914 0.1355,0.322 -0.0392,0.25 -0.58834,1.148 -2.12697,2.997 -1.24622,0.676 -0.86113,0.392 -2.24107,-0.1 -0.92845,-1.21841 1.868,-2.61974 -0.16935,-0.79685 6.19726,-1.052"},"12121":{"name":"Suwannee, FL","path":"m 784.54831,471.14714 1.17313,9.208 -1.43165,1.25 -1.22839,-1.458 -0.76307,-0.756 -0.32983,-0.241 -2.02356,-1.301 -0.93957,-0.443 -0.9895,-0.105 -0.0802,0.227 -0.30666,0.199 -0.61152,-0.139 -0.25674,-0.189 -0.70601,-1.633 -0.27456,-1.485 0.0178,-0.123 0.0802,-0.06 1.11786,-3.036 0.16046,-0.685 0.0553,-0.09 0.60261,-0.435 0.73989,-0.24 1.58141,0.03 0.9984,0.192 3.4142,1.304"},"12067":{"name":"Lafayette, FL","path":"m 775.87821,474.10314 -0.0802,0.06 -0.0178,0.123 0.27456,1.485 0.70601,1.633 0.25674,0.189 0.61152,0.139 0.30666,-0.199 0.0802,-0.227 0.9895,0.105 0.93957,0.443 2.02356,1.301 0.32983,0.241 0.76307,0.756 1.22839,1.458 -0.60082,1.537 -7.88385,1.118 -0.6668,0.1 -0.57943,-1.633 -1.03585,-8.299 2.35517,-0.323"},"12123":{"name":"Taylor, FL","path":"m 773.52304,474.42514 1.03585,8.3 0.57943,1.633 0.6668,-0.1 -0.14371,3.12005 -1.22376,0.68995 -0.68462,-0.171 -1.98077,-0.801 -0.21751,-0.187 -0.18541,-0.216 -0.68819,-0.941 0.007,-0.111 -0.13728,-0.435 -0.23356,-0.346 -1.02158,-1.212 -0.9057,-0.628 -0.16224,-0.105 -2.17867,-0.946 -1.18026,-0.337 -1.84705,-0.829 -1.28723,-0.756 2.74027,-5.433 6.9104,-0.922 0.12302,1.002 2.01464,-0.271"},"12129":{"name":"Wakulla, FL","path":"m 746.87805,476.87714 9.1693,-1.191 0.2086,0.644 3.26978,-0.394 0.49742,4.063 -3.34288,0.476 -1.82388,0.9 -0.312,0.169 -0.0481,0.778 0.18364,0.829 0.0481,0.06 0.43502,0.51 -4.17014,-0.652 -1.29614,-0.763 -0.62401,-0.435 -0.85399,-1.109 -0.44605,-2.70802 -1.14605,-0.88298 0.25138,-0.296"},"12077":{"name":"Liberty, FL","path":"m 747.9549,474.70514 -1.07685,2.172 -0.25138,0.296 1.14605,0.88298 0.44605,2.70802 0.85399,1.109 0.62401,0.435 1.29614,0.763 -9.16216,1.014 -0.24069,1.009 -2.2383,-1.48806 -0.14896,-3.51594 0.93244,-3.306 0.65966,-4.239 0.93957,-2.147 1.20887,-0.15767 0.21531,1.48321 2.11245,-0.14856 0.12533,1.20629 1.23932,-0.0582 0.16805,1.17519 0.83041,-0.0592 0.32069,0.866"},"12039":{"name":"Gadsden, FL","path":"m 752.34076,467.20114 1.97008,-0.137 -0.80408,2.17 -0.9057,2.699 -0.0909,0.194 -0.28883,0.257 -0.40114,0.168 -2.63509,1.333 -1.23018,0.82 -0.32069,-0.866 -0.83041,0.0592 -0.16805,-1.17519 -1.23932,0.0582 -0.12533,-1.20629 -2.11245,0.14856 -0.21531,-1.48321 -1.20887,0.15767 1.05189,-2.555 0.025,0 9.52944,-0.642"},"12073":{"name":"Leon, FL","path":"m 759.71828,466.68814 1.33401,3.02059 -1.56757,0.48941 -0.41006,2.074 0.45107,3.664 -3.26978,0.394 -0.2086,-0.644 -9.1693,1.191 1.07685,-2.172 1.23018,-0.82 2.63509,-1.333 0.40114,-0.168 0.28883,-0.257 0.0909,-0.194 0.9057,-2.699 0.80408,-2.17 3.89913,-0.275 1.50831,-0.101"},"12065":{"name":"Jefferson, FL","path":"m 764.92604,466.33314 2.61191,-0.169 0.1765,0.272 0.17651,1.288 -0.56339,0.747 -1.57428,1.695 -1.1339,3.343 -0.14441,1.107 -2.74027,5.433 -1.71156,-0.05 -0.94849,-7.727 0.41006,-2.074 1.56757,-0.48941 -1.33401,-3.02059 5.20776,-0.355"},"12079":{"name":"Madison, FL","path":"m 772.56564,465.81814 0.95027,-0.06 0.8843,0.394 0.92353,3.11 0.55447,1.061 0.12837,0.11 0.98949,0.63 -1.11786,3.036 -2.35517,0.322 -2.01464,0.271 -0.12302,-1.002 -6.9104,0.922 0.14441,-1.107 1.1339,-3.343 1.57428,-1.695 0.56339,-0.747 -0.17651,-1.288 -0.1765,-0.272 5.02769,-0.346"},"12047":{"name":"Hamilton, FL","path":"m 776.93189,465.52714 8.84482,-0.608 -0.44929,0.867 -0.007,0.41 0.0802,0.636 0.39223,0.458 1.12499,1.188 0.12837,0.183 0.20325,0.55 0.007,0.208 -0.52951,1.375 -0.12302,0.151 -1.05189,0.516 -0.93066,-0.08 -0.0731,-0.233 -3.4142,-1.303 -0.9984,-0.193 -1.58141,-0.03 -0.73989,0.241 -0.60261,0.435 -0.0553,0.09 -0.16046,0.685 -0.98949,-0.63 -0.12837,-0.11 -0.55447,-1.061 -0.92353,-3.109 -0.8843,-0.394 3.41598,-0.236"},"12023":{"name":"Columbia, FL","path":"m 787.86623,464.76614 2.45858,-0.177 1.48691,10.172 0.16935,0.79685 -1.868,2.61974 0.92845,1.21841 -2.19471,2.887 -3.12537,-1.928 -1.17313,-9.208 0.0731,0.233 0.93066,0.08 1.05189,-0.516 0.12302,-0.151 0.52951,-1.375 -0.007,-0.208 -0.20325,-0.55 -0.12837,-0.183 -1.12499,-1.188 -0.39223,-0.458 -0.0802,-0.636 0.007,-0.41 0.44929,-0.867 2.08952,-0.153"},"12003":{"name":"Baker, FL","path":"m 791.12888,464.53214 4.03464,-0.247 0.57765,3.221 0.19433,0.514 0.36905,0.529 0.40828,0.321 0.13015,0.03 2.24998,-0.435 0.31557,2.016 0.43146,2.958 -1.83101,0.273 -6.19726,1.052 -1.48691,-10.172 0.80407,-0.06"},"12031":{"name":"Duval, FL","path":"m 799.40853,470.47814 3.56574,-4.965 1.67768,-2.275 0.41898,-0.401 0.20146,-0.113 1.38172,-0.593 2.24107,0.09 0.29774,0.04 1.29436,1.052 0.37797,0.25 0.34588,0.289 0.55447,1.807 0.23356,1.366 0.21573,0.82 0.22464,0.653 0.18542,0.453 -1.11786,0.189 0.57943,3.326 -2.06635,0.353 -1.31754,-0.417 -0.45463,0 -1.07151,0.449 -0.22642,-1.576 -0.61687,0.08 -0.54734,0.121 -4.11308,0.683 -1.97721,0.288 -0.28704,-1.968"},"12089":{"name":"Nassau, FL","path":"m 809.76344,458.77714 0.72384,4.534 -1.29436,-1.052 -0.29774,-0.04 -2.24107,-0.09 -1.38172,0.593 -0.20146,0.113 -0.41898,0.401 -1.67768,2.275 -3.56574,4.965 -0.31557,-2.016 0.10341,-1.592 0.10519,-1.573 -0.0143,-1.537 -0.25852,-0.706 -0.60261,-0.788 -0.30665,-0.465 -0.0874,-0.474 0.17116,-2.484 2.15014,-1.253 0.83617,0.563 3.06297,0.658 2.31238,0.257 1.22305,-0.06 1.67233,-0.201 0.30309,-0.03"},"13241":{"name":"Rabun, GA","path":"m 763.82423,365.43214 -0.40293,1.831 -1.70442,1.324 -1.23553,2.243 -0.30666,1.737 -1.09758,-0.68276 -0.737,0.47111 -1.29369,-0.0674 -1.29369,-1.72612 -1.47399,0.29318 1.39599,-4.138 1.21592,-0.194 6.93358,-1.091"},"13281":{"name":"Towns, GA","path":"m 748.50225,367.76214 7.17248,-1.045 -1.39599,4.138 -0.48315,0.585 -1.81497,0.41 -0.0802,-0.578 -0.68284,-1.599 -0.54913,-0.314 -0.54377,0.04 -1.13926,-0.643 -0.59548,-0.571 0.11233,-0.424"},"13205":{"name":"Mitchell, GA","path":"m 757.66976,449.05514 0.94671,8.383 -2.20898,0.255 -5.07226,0.622 -2.56734,0.318 0.0161,-0.963 0.29417,-0.788 0.10697,-0.168 2.34448,-3.36 2.36408,-1.838 1.01089,-2.026 2.76523,-0.435"},"13007":{"name":"Baker, GA","path":"m 749.28849,450.26814 5.61604,-0.778 -1.01089,2.026 -2.36408,1.838 -2.34448,3.36 -0.10697,0.168 -0.29417,0.788 -0.0161,0.963 -0.67749,0.06 -0.80563,-4.09584 -1.62085,0.22484 -0.40115,-4.011 4.02572,-0.547"},"13201":{"name":"Miller, GA","path":"m 745.66392,454.82614 1.62085,-0.22484 0.80563,4.09584 -3.64775,0.669 -3.75472,0.369 -0.40115,-4.203 4.15587,-0.403 1.22127,-0.247 0,-0.03 0,-0.03"},"13099":{"name":"Early, GA","path":"m 741.53479,449.70114 0.23354,1.2907 3.49444,-0.1767 0.40115,4.011 0,0.06 -1.22127,0.248 -4.15587,0.402 0.40115,4.203 -1.9469,0.16 -0.21216,-0.458 -0.14619,-0.262 -0.92888,-1.022 -0.14619,-0.04 -0.16938,0 -0.16937,-0.1 -0.19968,-0.465 -0.27278,-1.632 0.1355,-0.595 0.20859,-0.61 0.24247,-4.901 0.42433,0.715 0.44215,-0.05 0.37797,-0.121 0.53842,-0.213 2.66896,-0.445"},"13253":{"name":"Seminole, GA","path":"m 740.68793,459.73514 3.75472,-0.369 -0.34409,0.843 0.35301,3.423 -0.15155,1.166 -0.61331,1.132 -0.77198,0.499 -0.28169,0.594 -0.0303,0.362 0.20859,0.458 -0.025,0 -3.46946,-6.283 -0.57587,-1.665 1.9469,-0.16"},"13087":{"name":"Decatur, GA","path":"m 751.33523,458.31514 1.00553,8.886 -9.52944,0.642 -0.20859,-0.458 0.0303,-0.362 0.28169,-0.594 0.77198,-0.499 0.61331,-1.132 0.15155,-1.166 -0.35301,-3.423 0.34409,-0.843 3.64775,-0.669 0.67749,-0.06 2.56734,-0.318"},"13131":{"name":"Grady, GA","path":"m 756.40749,457.69314 0.24247,2.259 0.29061,0.628 0.26386,0.33 0.39224,0.378 0.6133,5.501 -3.89913,0.275 -1.97008,0.137 -1.00553,-8.886 5.07226,-0.622"},"13275":{"name":"Thomas, GA","path":"m 758.61647,457.43814 0.0477,0.70829 5.27954,-0.47629 0.98236,8.663 -5.20776,0.355 -1.50831,0.101 -0.6133,-5.501 -0.39224,-0.378 -0.26386,-0.33 -0.29061,-0.628 -0.24247,-2.259 2.20898,-0.255"},"13027":{"name":"Brooks, GA","path":"m 769.05695,457.13214 1.76504,4.541 -0.51168,0.561 -0.5723,1.207 -0.0143,0.08 0.74702,1.096 0.31913,0.239 1.77574,0.958 -5.02769,0.346 -2.61191,0.169 -0.98236,-8.663 3.11955,-0.37086 -0.0887,-0.96314 2.08239,0.796"},"13071":{"name":"Colquitt, GA","path":"m 767.43989,450.48714 0.22818,2.73248 -0.69351,3.11652 0.0887,0.96314 -3.11955,0.37086 -5.27954,0.47629 -0.0477,-0.70829 -0.66501,-5.89 6.72676,-0.772 2.76167,-0.289"},"13075":{"name":"Cook, GA","path":"m 768.89649,449.77214 0,0.724 0.12659,0.36 0.12658,0.184 1.06438,0.747 0.312,0.114 1.09846,1.61404 0.5079,1.82496 0.4582,1.43 -3.53365,0.362 -2.08239,-0.796 0.69351,-3.11652 -0.22818,-2.73248 1.4566,-0.715"},"13173":{"name":"Lanier, GA","path":"m 776.93724,452.54414 1.47265,-0.217 0.98771,7.181 -0.87539,0.581 -0.2496,-1.237 -0.51525,-0.923 -2.67431,0.296 -0.58656,-1.671 -0.11019,-0.80255 0.46822,-0.0585 -0.10126,-1.99894 2.47641,-0.331 0.0143,-0.09 -0.11945,-0.402 -0.1872,-0.328"},"13185":{"name":"Lowndes, GA","path":"m 772.5906,456.77014 1.90589,-0.216 0.58656,1.671 2.67431,-0.296 0.51525,0.923 0.2496,1.237 -2.02672,0.80795 0.4364,4.63005 -3.41598,0.236 -0.95027,0.06 -1.77574,-0.958 -0.31913,-0.238 -0.74702,-1.097 0.0143,-0.08 0.5723,-1.207 0.51168,-0.561 -1.76504,-4.541 3.53365,-0.362"},"13101":{"name":"Echols, GA","path":"m 779.3976,459.50814 2.54772,0.469 0.22464,0.36 0.28883,0.804 0.56338,0.628 0.2817,0.15 0.52238,0.148 0.73811,-0.03 0.39401,-0.06 0.77911,-0.02 1.29437,0.08 0.34587,0.141 0.19969,0.199 0.0713,0.12 0.21751,2.266 -2.08952,0.153 -8.84482,0.608 -0.4364,-4.63005 2.02672,-0.80795 0.87539,-0.581"},"13065":{"name":"Clinch, GA","path":"m 778.40989,452.32714 5.83177,-0.794 1.75969,3.003 0.67571,0.683 1.23018,0.916 0.56276,3.10069 1.54102,-0.0787 0.40293,2.653 0.37797,2.039 0.33696,0.683 -0.80407,0.06 -2.45858,0.177 -0.21751,-2.266 -0.0713,-0.12 -0.19969,-0.199 -0.34587,-0.141 -1.29437,-0.08 -0.77911,0.02 -0.39401,0.06 -0.73811,0.03 -0.52238,-0.148 -0.2817,-0.15 -0.56338,-0.628 -0.28883,-0.804 -0.22464,-0.36 -2.54772,-0.469 -0.98771,-7.181"},"13003":{"name":"Atkinson, GA","path":"m 784.49304,447.31314 -0.0442,1.90619 -1.32644,-0.0252 1.11923,2.33898 -5.83177,0.794 -1.47265,0.217 -0.18364,-0.964 -0.48316,-2.09 -0.89321,-0.69 -0.91283,-0.964 -0.0321,-0.06 -0.041,-0.383 3.53543,-0.412 1.91024,-0.14111 0.6874,0.67411 0.30309,0.296 3.66558,-0.498"},"13019":{"name":"Berrien, GA","path":"m 774.11674,446.23514 0.27456,1.159 0.041,0.383 0.0321,0.06 0.91283,0.964 0.89321,0.69 0.48316,2.09 0.18364,0.964 0.1872,0.328 0.11945,0.401 -0.0143,0.09 -2.47641,0.331 0.10126,1.99894 -0.46822,0.0585 0.11019,0.80255 -1.90589,0.216 -0.4582,-1.43 -0.5079,-1.82496 -1.09846,-1.61404 -0.312,-0.114 -1.06438,-0.748 -0.12658,-0.183 -0.12659,-0.36 0,-0.724 1.478,-3.127 3.74225,-0.41"},"13155":{"name":"Irwin, GA","path":"m 776.34354,441.25314 -2.2268,4.982 -3.74225,0.41 -3.50334,-2.264 0.42433,-3.866 1.60101,-0.192 0.9037,-0.046 0.19634,1.668 1.14383,-0.034 0.0828,0.48296 1.72938,-0.169 -0.0577,-0.49575 1.16662,-0.0741 2.28207,-0.40219"},"13277":{"name":"Tift, GA","path":"m 764.05779,445.34314 -0.11687,-0.69865 2.93023,-0.26335 3.50334,2.264 -1.478,3.127 -1.4566,0.715 -2.76167,0.289 -0.62043,-5.433"},"13321":{"name":"Worth, GA","path":"m 757.62163,439.67914 2.77236,0.674 0.0874,0.06 0.14441,0.908 0.41898,3.15 1.52613,-0.178 0.16937,0.06 0.58479,0.386 0.31197,0.68539 0.42079,-0.0764 0.62043,5.433 -6.72676,0.772 -0.2817,-2.493 -0.9984,-4.667 -0.21639,-2.50268 1.16666,-2.20632"},"13095":{"name":"Dougherty, GA","path":"m 751.33523,445.71214 4.79863,-0.73185 0.5375,-0.59215 0.9984,4.667 -2.76523,0.435 -5.61604,0.778 -0.9057,-4.185 2.95244,-0.371"},"13037":{"name":"Calhoun, GA","path":"m 746.509,446.32414 1.87379,-0.241 0.9057,4.185 -4.02572,0.547 -3.49444,0.1767 -0.23354,-1.2907 -0.28169,-2.719 5.2559,-0.658"},"13061":{"name":"Clay, GA","path":"m 734.60656,444.03514 3.49621,-0.348 0.58421,3.493 2.56612,-0.198 0.28169,2.719 -2.66896,0.445 -0.53842,0.213 -0.37797,0.121 -0.44215,0.05 -0.42433,-0.715 -2.13766,-5.329 -0.33874,-0.449"},"13239":{"name":"Quitman, GA","path":"m 735.51404,439.09814 3.19134,1.118 0.22969,3.36552 -0.8323,0.10548 -3.49621,0.348 0.90748,-4.937"},"13243":{"name":"Randolph, GA","path":"m 743.57618,439.74314 1.08398,-0.13 0.33696,3.393 0.68284,0.273 0.87717,1.631 0.0642,0.786 -0.0642,0.451 -0.0481,0.177 -5.2559,0.658 -2.56612,0.186 -0.58421,-3.481 0.8323,-0.10548 -0.22969,-3.36552 4.8708,-0.473"},"13273":{"name":"Terrell, GA","path":"m 751.00183,444.15414 0.3334,1.558 -2.95244,0.371 -1.87379,0.241 0.0481,-0.177 0.0642,-0.451 -0.0642,-0.786 -0.87717,-1.631 -0.68284,-0.273 -0.33696,-3.393 2.8699,-0.37723 0.006,-1.07577 2.30525,1.904 1.12842,0.39381 0.49972,1.19714 -0.40838,0.60337 -0.0591,1.89568 -2e-5,0 -3e-5,0 -3e-5,0 z"},"13177":{"name":"Lee, GA","path":"m 757.76604,438.18514 -0.14441,1.494 -1.16666,2.20632 0.21639,2.50268 -0.5375,0.59215 -4.79863,0.73185 -0.3334,-1.558 0.0591,-1.89568 0.40838,-0.60337 -0.49972,-1.19714 -1.12842,-0.39381 -0.11767,-0.982 8.04253,-0.897"},"13081":{"name":"Crisp, GA","path":"m 756.67136,435.55714 6.79273,-0.82 0.46533,3.985 0.14109,1.21991 -3.67652,0.41109 -2.77236,-0.674 0.14441,-1.494 -1.09468,-2.628"},"13287":{"name":"Turner, GA","path":"m 763.92942,438.72214 2.5709,-0.184 0.79516,1.977 -0.42433,3.866 -2.93023,0.26335 0.11687,0.69865 -0.42079,0.0764 -0.31197,-0.68539 -0.58479,-0.386 -0.16937,-0.06 -1.52613,0.178 -0.41898,-3.15 -0.14441,-0.908 -0.0874,-0.06 3.67652,-0.41109 -0.14109,-1.21991"},"13017":{"name":"Ben Hill, GA","path":"m 766.50032,438.53814 5.84068,-0.797 3.72085,1.061 0.28169,2.451 -2.28207,0.40219 -1.16662,0.0741 0.0577,0.49575 -1.72938,0.169 -0.0828,-0.48296 -1.14383,0.034 -0.19634,-1.668 -0.9037,0.046 -1.60101,0.192 -0.79516,-1.977"},"13069":{"name":"Coffee, GA","path":"m 776.06185,438.80214 2.96491,-1.244 0.45107,3.303 4.0489,-0.595 0.34765,2.61 0.62579,-0.08 0.26565,2.025 -0.66629,0.0639 0.39351,2.42807 -3.66558,0.498 -0.30309,-0.296 -0.6874,-0.67411 -1.91024,0.14111 -3.53543,0.412 -0.27456,-1.159 2.2268,-4.982 -0.28169,-2.451"},"13005":{"name":"Bacon, GA","path":"m 785.44866,439.10914 1.49404,0.827 0.91462,0.474 1.29436,0.337 2.2268,1.102 0.19434,0.208 0.16759,0.33 -0.2496,0.04 -1.0519,1.021 0.0802,0.578 -0.73276,0.98 -1.42629,0.523 -1.53037,0.0268 -0.38905,-0.86994 -1.67485,0.13513 -0.26565,-2.025 -0.62579,0.08 -0.34765,-2.61 2.07676,-0.23222 -0.15483,-0.92478"},"13305":{"name":"Wayne, GA","path":"m 794.19185,435.13114 1.66164,0.635 6.75886,4.813 1.05367,1.831 -1.64558,3.119 -0.69532,-0.305 -0.77734,-0.259 -0.91639,0.36 -1.39064,0.403 -2.16084,-0.151 -0.20859,-0.137 -0.97572,-2.00353 -1.13877,0.0345 -1.0198,-6.878 0.73098,-1.205 0.72384,-0.257"},"13229":{"name":"Pierce, GA","path":"m 791.74041,442.38714 2.01642,1.084 1.13877,-0.0345 0.97572,2.00353 1.1553,1.351 -0.0464,0.497 -0.25851,0.289 -3.22165,2.179 -0.0571,0 -1.80783,-0.243 -2.20822,-1.05449 -1.06691,-2.92951 1.42629,-0.523 0.73276,-0.98 -0.0802,-0.578 1.0519,-1.021 0.2496,-0.04"},"13025":{"name":"Brantley, GA","path":"m 802.02044,445.52914 -0.13015,3.753 -1.07508,1.583 -1.248,0.394 -0.34588,0.16 -0.12124,0.195 -0.0945,0.93 -2.52454,-0.274 -0.16937,1.542 -0.99485,0.137 -2.10248,-1.76118 -0.22746,-1.55737 -1.4503,-0.3753 0.0986,-0.74215 1.80783,0.243 0.0571,0 3.22165,-2.179 0.25851,-0.289 0.0464,-0.497 -1.1553,-1.351 0.20859,0.137 2.16084,0.151 1.39064,-0.403 0.91639,-0.36 0.77734,0.259 0.69532,0.305"},"13299":{"name":"Ware, GA","path":"m 784.76582,444.82114 1.67485,-0.13513 0.38905,0.86994 1.53037,-0.0268 1.06691,2.92951 2.20822,1.05449 -0.0986,0.74215 1.4503,0.3753 0.22746,1.55737 2.10248,1.76118 -5.54472,0.749 0.62579,4.981 4.74956,-0.586 0.57052,0.06 -0.55447,5.128 -4.03464,0.247 -0.33696,-0.682 -0.37797,-2.04 -0.40293,-2.653 -1.54102,0.0787 -0.56276,-3.10069 -1.23018,-0.916 -0.67571,-0.683 -1.75969,-3.003 -1.11923,-2.33898 1.32644,0.0252 0.0442,-1.90619 -0.39351,-2.42807 0.66629,-0.0639"},"13049":{"name":"Charlton, GA","path":"m 799.0056,452.54414 1.34785,5.046 -2.15014,1.253 -0.17116,2.484 0.0874,0.474 0.30665,0.465 0.60261,0.788 0.25852,0.706 0.0143,1.537 -0.10519,1.573 -0.10341,1.592 -2.24998,0.435 -0.13015,-0.03 -0.40828,-0.321 -0.36905,-0.529 -0.19433,-0.514 -0.57765,-3.221 0.55447,-5.128 -0.57052,-0.06 -4.74956,0.586 -0.62579,-4.981 5.54472,-0.749 0.99485,-0.137 0.16937,-1.542 2.52454,0.274"},"13039":{"name":"Camden, GA","path":"m 808.59923,451.83714 1.16421,6.94 -0.30309,0.03 -1.67233,0.202 -1.22305,0.06 -2.31238,-0.257 -3.06297,-0.658 -0.83617,-0.563 -1.34785,-5.046 0.0945,-0.93 0.12124,-0.195 0.34588,-0.16 1.248,-0.394 1.07508,-1.583 0.0731,0.272 0.0624,0.09 1.58141,0.485 0.92531,0.04 4.06673,1.673"},"13127":{"name":"Glynn, GA","path":"m 811.07385,444.98314 -2.47462,6.854 -4.06673,-1.673 -0.92531,-0.04 -1.58141,-0.485 -0.0624,-0.09 -0.0731,-0.272 0.13015,-3.753 1.64558,-3.119 0.0143,0.07 1.05189,0.994 1.3425,0.812 2.73314,0.524 1.94333,0.24 0.3227,-0.07"},"13191":{"name":"McIntosh, GA","path":"m 805.36866,436.41614 0.63471,0.184 0.95561,0.669 0.49921,0.119 1.40668,-0.595 1.05903,0.04 0.56338,0.184 0.35301,0.169 0.64184,0.53 0.0802,0.16 0.0267,0.635 -0.51525,6.47 -0.3227,0.07 -1.94333,-0.24 -2.73314,-0.524 -1.3425,-0.812 -1.05189,-0.994 -0.0143,-0.07 -1.05367,-1.831 1.58196,-1.38856 1.17435,-2.77444"},"13149":{"name":"Heard, GA","path":"m 732.61331,406.07414 1.99325,4.436 -5.41636,2.836 -1.8631,-6.725 5.28621,-0.547"},"13143":{"name":"Haralson, GA","path":"m 724.34614,395.94014 2.21076,-0.207 1.05902,-0.265 3.07189,-0.314 0.47246,2.098 -0.0292,2.2619 -1.40062,0.5181 -2.90965,1.438 -0.91639,0.08 -1.55823,-5.611"},"13233":{"name":"Polk, GA","path":"m 730.23674,390.74314 2.36944,0.05 -0.69532,3.133 -1.34607,0.13 0.12302,1.1 -3.07189,0.313 -1.05902,0.266 -2.21076,0.207 -0.39401,-1.405 -0.73098,-2.628 3.08615,-0.314 -0.0339,-0.385 3.96332,-0.465"},"13115":{"name":"Floyd, GA","path":"m 728.51627,379.51614 -0.21287,4.05438 1.9173,0.28562 0.12836,1.044 0.007,3.112 -0.3851,0.04 0.26564,2.692 -3.96332,0.465 0.0339,0.385 -3.08615,0.314 -1.28545,-4.644 1.40669,-0.145 0.99484,-2.2 0.98771,-0.565 1.50296,-1.118 0.15332,-0.465 0.81121,-3.174 0.72384,-0.08"},"13055":{"name":"Chattooga, GA","path":"m 727.79243,379.59614 -0.81121,3.174 -0.15332,0.465 -1.50296,1.118 -0.98771,0.565 -0.99484,2.2 -1.40669,0.145 -1.57606,-5.351 -0.40827,-1.454 7.84106,-0.862"},"13313":{"name":"Whitfield, GA","path":"m 729.1688,370.11514 3.09328,-0.362 -0.37975,1.478 0.0662,4.36645 -1.24467,0.76155 -0.0588,0.765 0.6454,0.978 -2.51741,0.564 -0.26565,-2.234 -2.20898,0.24 0.025,-0.192 0.30487,-0.941 0.2086,-1.238 1.17491,-0.353 0.44037,-0.909 0.7078,-2.571 -0.0481,-0.344 0.0571,0"},"13047":{"name":"Catoosa, GA","path":"m 723.81485,370.78914 5.2969,-0.665 0.0481,0.344 -0.7078,2.571 -0.44037,0.909 -1.17491,0.353 -0.2086,1.238 -1.07202,0.17183 -0.33466,-1.8839 -1.07202,0.16434 -0.33466,-3.20227"},"13295":{"name":"Walker, GA","path":"m 723.81485,370.78914 0.33466,3.20227 1.07202,-0.16434 0.33466,1.8839 1.07202,-0.17183 -0.30487,0.941 -0.025,0.192 2.20898,-0.24 0.26565,2.234 -0.25674,0.85 -0.72384,0.08 -7.84106,0.862 -0.22465,-0.79 0.69711,-1.147 0.52238,-2.146 -0.10163,-0.869 0.42433,-2.626 0.71493,-1.841 1.83101,-0.25"},"13083":{"name":"Dade, GA","path":"m 721.98384,371.03914 -0.71493,1.841 -0.42433,2.627 0.10163,0.868 -0.52238,2.146 -0.69711,1.147 -1.51187,-5.344 -0.72384,-2.811 2.47462,-0.257 2.01821,-0.217"},"13183":{"name":"Long, GA","path":"m 797.8717,430.20514 0.49029,0.595 1.14984,0.27778 -0.073,1.90822 0.0553,0.248 2.74918,2.123 2.96492,1.067 0.16045,0 -1.17435,2.77444 -1.58196,1.38856 -6.75886,-4.814 2.01821,-5.561"},"13001":{"name":"Appling, GA","path":"m 790.5031,433.66714 3.68875,1.464 -0.72384,0.257 -0.73098,1.205 1.0198,6.878 -2.01642,-1.084 -0.16759,-0.33 -0.19434,-0.208 -2.2268,-1.102 -1.29436,-0.337 -0.91462,-0.474 -1.49404,-0.827 -0.39402,-2.919 1.71869,-0.232 -0.31378,-2.3 -0.10876,-0.624 4.15231,0.633"},"13161":{"name":"Jeff Davis, GA","path":"m 786.35079,433.03414 0.10876,0.624 0.31378,2.3 -1.71869,0.232 0.39402,2.919 0.15483,0.92478 -2.07676,0.23222 -4.0489,0.595 -0.45107,-3.303 3.3518,-2.853 1.83992,-1.198 1.166,-0.442 0.96631,-0.03"},"13259":{"name":"Stewart, GA","path":"m 742.65978,432.60114 0.18364,-0.03 0.19255,0.162 0.15332,1.307 0.12837,1.551 -0.007,1.673 0.26565,2.483 -4.8708,0.473 -3.19134,-1.118 -0.0535,-1.719 2.08953,-4.127 5.1097,-0.651"},"13307":{"name":"Webster, GA","path":"m 742.84342,432.56714 0.54734,-0.06 1.60636,1.152 0.41719,0.504 0.88431,0.28 1.01267,-0.114 0.22464,3.835 -0.006,1.07577 -2.8699,0.37723 -1.08398,0.13 -0.26565,-2.483 0.007,-1.673 -0.12837,-1.551 -0.15332,-1.307 -0.19255,-0.162"},"13261":{"name":"Sumter, GA","path":"m 751.7967,431.33202 0.75686,-0.003 0.10953,0.77856 2.09942,0.32142 1.90885,3.12767 1.09468,2.628 -8.04253,0.897 0.11767,0.982 -2.30525,-1.904 -0.22464,-3.835 -0.0642,-0.738 4.64114,-0.7511 -0.0915,-1.50402"},"13315":{"name":"Wilcox, GA","path":"m 768.46861,432.27014 3.16637,4.348 0.70602,1.123 -5.84068,0.797 -2.5709,0.184 -0.46533,-3.985 -0.25138,-2.056 2.27672,-0.299 1.02693,-0.303 0.34766,-0.234 0.80408,-0.08 0.21394,0.05 0.58657,0.458"},"13271":{"name":"Telfair, GA","path":"m 776.25618,430.52814 6.12238,4.177 -3.3518,2.853 -2.96491,1.244 -3.72085,-1.061 -0.70602,-1.123 4.6212,-6.09"},"13309":{"name":"Wheeler, GA","path":"m 779.65611,426.00314 1.30685,0.08 0.17829,0.03 0.16045,0.456 0.68284,2.298 0.14798,1.224 0.57587,1.814 0.19968,0.352 0.0874,0.146 1.22305,1.109 -1.83992,1.198 -6.12238,-4.177 0.6347,-1.505 2.76523,-3.02"},"13091":{"name":"Dodge, GA","path":"m 767.77864,428.49314 0.91887,-1.34379 -0.46702,-0.36553 2.16383,-2.85064 0.9037,0.57596 3.7048,5.905 1.88806,-1.391 -0.6347,1.505 -4.6212,6.09 -3.16637,-4.348 0.48137,-0.53 0.0571,-0.185 0.12124,-1.077 -1.80962,-1.398 0.45999,-0.587"},"13235":{"name":"Pulaski, GA","path":"m 767.77864,428.49314 -0.45999,0.587 1.80962,1.398 -0.12124,1.077 -0.0571,0.185 -0.48137,0.53 -0.58657,-0.459 -0.21394,-0.05 -0.80408,0.08 -0.34766,0.234 -1.02693,0.303 -2.27672,0.299 -0.64897,-3.874 1.19763,-2.97475 0.71361,0.0908 3.30366,2.57"},"13093":{"name":"Dooly, GA","path":"m 762.56374,428.80714 0.64897,3.874 0.25138,2.056 -6.79273,0.82 -1.90885,-3.12767 1.06618,-2.17759 2.24935,-0.91374 4.4857,-0.531"},"13193":{"name":"Macon, GA","path":"m 754.19138,424.82114 1.70265,-0.14746 1.70264,0.60546 0.48137,4.059 -2.24935,0.91374 -1.06618,2.17759 -2.09942,-0.32142 -0.10953,-0.77856 -0.75686,0.003 -0.85487,0.008 -0.29017,-1.41687 -0.63974,0.0621 0.0325,-1.52443 -0.1292,-0.78492 0.97331,-0.19333 0.62374,-1.61852 0.48928,-0.86559 1.47311,-0.45064 0.71671,0.273"},"13249":{"name":"Schley, GA","path":"m 747.88181,428.13114 2.16262,0.33 -0.0325,1.52443 0.63974,-0.0621 0.29017,1.41687 0.85487,-0.008 0.0915,1.50402 -4.64114,0.7511 -0.16938,-1.508 -0.0282,-1.46246 0.60051,-0.12954 -0.37083,-2.66 z m 0,0 0,0"},"13197":{"name":"Marion, GA","path":"m 742.24259,425.63214 3.62279,-1.068 1.41382,3.263 0.37083,2.66 -0.60051,0.12954 0.0282,1.46246 0.16938,1.508 0.0642,0.738 -1.01267,0.114 -0.88431,-0.28 -0.41719,-0.504 -1.60636,-1.152 -0.54734,0.06 -0.18364,0.03 -0.85396,-6.20042 0.43351,-0.0347 0.003,-0.73386"},"13053":{"name":"Chattahoochee, GA","path":"m 742.24259,425.63214 -0.003,0.73386 -0.43351,0.0347 0.85396,6.20042 -5.1097,0.651 0.0464,-0.07 0.16046,-0.724 -0.19255,-0.383 -0.47424,-0.396 -1.27654,-0.344 -0.12123,-0.136 -0.041,-0.194 0.21573,-0.82 1.9879,-1.054 2.1127,-0.602 0.58374,-2.00771 0.63752,-0.39429 1.05368,-0.499"},"13215":{"name":"Muscogee, GA","path":"m 733.4887,424.96514 3.36784,-0.385 0.0642,0.554 4.08277,-0.499 0.18542,1.496 -0.63752,0.39429 -0.58374,2.00771 -2.1127,0.602 -1.9879,1.054 -0.53486,-3.174 -1.84349,-2.05"},"13269":{"name":"Taylor, GA","path":"m 748.36496,419.94514 1.76505,1.116 2.30078,0.35405 0.63948,1.81733 1.33862,1.01062 -0.93422,0.305 -1.47311,0.45064 -0.48928,0.86559 -0.62373,1.61852 -0.97332,0.19333 0.1292,0.78492 -2.16262,-0.33 -0.60261,-0.304 -1.41382,-3.263 2.49958,-4.619"},"13263":{"name":"Talbot, GA","path":"m 743.77586,417.38614 0.17115,-0.07 0.41541,0.1 1.3015,0.836 0.30665,0.392 0.2389,0.468 0.0481,0.169 0.17651,0.137 0.9574,0.36 0.97344,0.163 -2.49958,4.619 -3.62279,1.068 -1.05368,0.499 -0.18542,-1.496 -0.82012,-5.953 2.38783,-0.35221 1.20466,-0.94379"},"13145":{"name":"Harris, GA","path":"m 737.02591,418.40814 1.74007,-0.26635 1.41739,0.54035 0.82012,5.953 -4.08277,0.499 -0.0642,-0.554 -3.36784,0.385 -1.38886,-3.059 -1.2284,-2.735 6.15447,-0.763"},"13285":{"name":"Troup, GA","path":"m 734.60656,410.51014 1.54396,-0.15813 0.87539,8.05613 -6.15447,0.763 -1.54396,-5.343 -0.13728,-0.482 5.41636,-2.836"},"13045":{"name":"Carroll, GA","path":"m 731.16027,397.25214 2.66004,0.417 0.51982,4.32712 1.79435,0.21388 -0.33613,1.06154 -3.18504,2.80246 -5.28621,0.547 -0.34588,-1.239 -1.07685,-3.831 0.91639,-0.08 2.90965,-1.438 1.40062,-0.5181 0.0292,-2.2619"},"13223":{"name":"Paulding, GA","path":"m 732.60618,390.79114 3.48729,-0.339 0.32983,3.029 0.30844,-0.04 0.35122,3.254 -3.26265,0.973 -2.66004,-0.417 -0.47246,-2.098 -0.12302,-1.1 1.34607,-0.13 0.69532,-3.133"},"13213":{"name":"Murray, GA","path":"m 735.77255,369.32214 0.4172,3.043 0.72384,0.555 0.0481,0.07 -0.007,0.07 -0.40293,0.692 -0.49742,0.545 -0.22464,1.061 0.44928,3.336 -4.98847,-0.596 -0.6454,-0.978 0.0588,-0.765 1.24467,-0.76155 -0.0662,-4.36645 0.37975,-1.478 0.64005,-0.08 2.87042,-0.351"},"13129":{"name":"Gordon, GA","path":"m 731.29042,378.10214 4.98847,0.596 0.0963,0.786 0.39402,3.127 -6.54848,1.245 -1.9173,-0.28562 0.21287,-4.05438 0.25674,-0.85 2.51741,-0.564"},"13015":{"name":"Bartow, GA","path":"m 736.76918,382.61114 0.8112,7.697 -4.9742,0.483 -2.36944,-0.05 -0.26564,-2.692 0.3851,-0.04 -0.007,-3.111 -0.12836,-1.045 6.54848,-1.245"},"13067":{"name":"Cobb, GA","path":"m 737.58038,390.30814 4.53206,-0.442 0.76485,1.727 -0.67749,2.798 -0.21573,0.898 -0.11232,0.332 -1.18739,1.492 -0.65253,0.685 -1.09787,-1.36206 -1.851,0.26006 -0.35122,-3.254 -0.30844,0.04 -0.32983,-3.029 1.48691,-0.144"},"13097":{"name":"Douglas, GA","path":"m 733.82031,397.66914 3.26265,-0.973 1.851,-0.26006 1.09787,1.36206 -1.19096,1.906 -1.79891,1.139 -0.73098,0.843 -0.15333,0.227 -0.0232,0.297 -1.79435,-0.21388 -0.51982,-4.32712"},"13077":{"name":"Coweta, GA","path":"m 735.79835,403.27168 3.83246,-0.28337 0.47234,0.41183 0.27456,2.378 1.22839,1.171 0.86113,1.061 0.44215,0.747 0.0143,0.843 -6.77313,0.75187 -1.54396,0.15813 -1.99325,-4.436 3.18504,-2.80246"},"13199":{"name":"Meriwether, GA","path":"m 743.12511,410.45414 0.0232,4.939 0.62757,1.993 -1.20466,0.94379 -2.38783,0.35221 -1.41739,-0.54035 -1.74007,0.26635 -0.87539,-8.05613 6.77313,-0.75187 0.20146,0.854"},"13231":{"name":"Pike, GA","path":"m 743.12511,410.45414 0.79516,-0.693 1.10003,-0.118 0.43502,0.376 2.3837,-0.272 0.14798,4.581 -4.30167,0.37116 -0.53704,0.69384 -0.0232,-4.939"},"13293":{"name":"Upson, GA","path":"m 747.987,414.32814 2.7463,-0.3361 0.21861,1.3311 0.21573,1.897 -0.0174,1.04092 -0.39386,0.0998 -0.62638,2.70032 -1.76505,-1.116 -0.97344,-0.163 -0.9574,-0.36 -0.17651,-0.137 -0.0481,-0.17 -0.2389,-0.467 -0.30665,-0.392 -1.3015,-0.836 -0.41541,-0.1 -0.17115,0.07 -0.62757,-1.993 0.53704,-0.69384 4.30167,-0.37116"},"13079":{"name":"Crawford, GA","path":"m 751.16764,417.22014 4.43578,-0.531 1.62719,2.1157 1.70039,1.066 -0.692,0.0701 -3.83011,4.29516 -1.33862,-1.01087 -0.63948,-1.81758 -2.30078,-0.35455 0.62638,-2.69982 0.39386,-0.0995 0.0174,-1.04067"},"13225":{"name":"Peach, GA","path":"m 754.40889,424.24314 3.83011,-4.30245 1.47928,-0.14255 0.11589,3.698 -0.0285,0.255 -1.41267,0.33084 0.20032,1.55016 -0.35301,0.225 -0.19255,0.04 -0.45106,-0.62 -1.70265,-0.60546 -1.70264,0.14746 -0.71733,-0.273 0.93484,-0.305"},"13153":{"name":"Houston, GA","path":"m 759.71828,419.79814 0,0 2.06278,0.378 0.61004,-0.007 0.82516,2.89712 0.95962,0.79967 0.1529,0.90724 0.1462,1.157 -0.71361,-0.0907 -1.19763,2.97475 -4.4857,0.532 -0.48137,-4.06 0.45106,0.62 0.19255,-0.04 0.35301,-0.225 -0.20029,-1.55898 1.41264,-0.32202 0.0285,-0.255 -0.11589,-3.698"},"13023":{"name":"Bleckley, GA","path":"m 771.29802,424.50914 -0.9037,-0.57596 -2.16383,2.85064 0.46702,0.36553 -0.91887,1.34379 -3.30366,-2.571 -0.1462,-1.157 4.79057,-3.713 2.17867,3.457"},"13175":{"name":"Laurens, GA","path":"m 769.11935,421.05214 4.76561,-3.536 1.77753,-0.426 1.55822,0.458 -0.10424,0.81878 2.586,0.57422 0.16937,2.03 0.55447,0.188 -0.21293,0.98681 -1.10968,2.94335 0.55241,0.91384 -2.76523,3.02 -1.88806,1.391 -3.7048,-5.905 -2.17867,-3.457"},"13319":{"name":"Wilkinson, GA","path":"m 765.56966,413.57114 3.46946,-2.195 0.28883,-0.239 0.28882,0.02 1.29615,1.22 1.03407,1.697 0.8629,0.298 0.32092,0.199 0.51347,0.806 0.27278,0.945 -0.0321,1.198 -4.76561,3.536 -4.41082,-6.716 0.86113,-0.765"},"13289":{"name":"Twiggs, GA","path":"m 762.84543,415.82814 1.8631,-1.492 4.41082,6.716 -4.79057,3.713 -0.1529,-0.90699 -0.95962,-0.79942 -0.82516,-2.89687 -0.61004,0.007 -0.33382,-1.56715 0.47288,-0.16885 1.23732,-1.6 0.19968,-0.586 -0.51169,-0.419"},"13021":{"name":"Bibb, GA","path":"m 758.76266,413.85214 0.38688,0.787 0.8023,0.565 1.14638,-0.145 0.66858,0.152 1.07863,0.617 0.51169,0.419 -0.19968,0.586 -1.23732,1.6 -0.47288,0.16885 0.33382,1.56715 -2.06278,-0.378 -0.78728,0.0798 -1.70039,-1.06614 -1.62719,-2.1157 3.15924,-2.837"},"13009":{"name":"Baldwin, GA","path":"m 766.3559,407.38414 0.39402,-0.04 3.06832,0.407 0.0606,0.09 0.0125,0.136 -0.0232,0.185 -0.10519,0.07 -0.0713,0.193 -0.0749,0.852 0.0588,0.191 0.40293,0.604 0.47781,-0.403 0.34766,-0.424 0.009,3.124 -1.29615,-1.22 -0.28882,-0.02 -0.28883,0.239 -3.46946,2.195 -2.15371,-5.754 2.93995,-0.433"},"13169":{"name":"Jones, GA","path":"m 763.41595,407.81714 2.15371,5.754 -0.86113,0.765 -1.8631,1.492 -1.07863,-0.617 -0.66858,-0.152 -1.14638,0.145 -0.8023,-0.565 -0.38688,-0.787 -2.5388,-3.84 5.02234,-1.583 2.16975,-0.612"},"13207":{"name":"Monroe, GA","path":"m 751.73281,408.93414 4.23431,-0.02 0.25674,1.094 2.5388,3.841 -3.15924,2.836 -4.43578,0.531 -0.21573,-1.897 1.32289,-0.144 0.14619,-0.403 -0.68818,-5.842"},"13171":{"name":"Lamar, GA","path":"m 751.73281,408.93414 0.68818,5.842 -0.14619,0.403 -1.32289,0.144 -0.21861,-1.3311 -2.7463,0.3361 -0.14798,-4.581 2.32004,0.005 0.005,-0.62391 1.56893,-0.194"},"13255":{"name":"Spalding, GA","path":"m 744.72434,406.32214 0.63471,-0.08 1.95448,-0.26996 0.18759,0.48728 1.55783,-0.34207 0.25606,0.64029 0.97724,0.13546 -0.12837,2.234 -0.005,0.62341 -2.32004,-0.005 -2.3837,0.273 -0.43502,-0.376 -1.10003,0.118 -0.79516,0.693 -0.20146,-0.854 -0.0143,-0.843 1.19595,-0.35209 0.61901,-2.08291"},"13113":{"name":"Fayette, GA","path":"m 740.10315,403.40014 0.26227,-0.9068 2.46373,-0.5592 1.61382,1.32501 0.28137,3.06299 -0.61901,2.08291 -1.19595,0.35209 -0.44215,-0.747 -0.86113,-1.061 -1.22839,-1.171 -0.27456,-2.378"},"13063":{"name":"Clayton, GA","path":"m 745.90639,399.32414 0.40114,0.321 0.18542,1.118 0.0214,0.763 -0.24782,2.676 -0.16046,0.208 -0.90748,0.412 0.16046,1.421 -0.63471,0.08 -0.28137,-3.06299 -1.61382,-1.32501 -0.15581,-2.27929 1.92977,-0.19371 1.30328,-0.137"},"13035":{"name":"Butts, GA","path":"m 753.24111,402.95714 1.39064,1.751 1.33537,4.209 -4.23431,0.02 -1.56893,0.195 0.12837,-2.234 2.94886,-3.937"},"13151":{"name":"Henry, GA","path":"m 745.90639,399.32414 1.83814,-0.202 1.06668,1.74288 1.9321,0.66112 0.37678,0.79695 1.45854,0.0758 0.66248,0.55828 -2.94886,3.937 -0.97724,-0.13546 -0.25606,-0.64029 -1.55783,0.34207 -0.18759,-0.48728 -1.95448,0.26996 -0.16046,-1.421 0.90748,-0.412 0.16046,-0.208 0.24782,-2.676 -0.0214,-0.763 -0.18542,-1.118 -0.40114,-0.321"},"13089":{"name":"DeKalb, GA","path":"m 745.10944,392.18914 1.59789,1.86971 3.76142,2.23029 -0.54556,0.681 -0.71634,2.4931 -0.73116,-0.4139 -0.73116,0.0728 -1.83814,0.202 -1.30328,0.137 -0.19255,-1.695 -0.15333,-1.391 -0.0214,-0.218 -0.46711,-3.879 0.73358,0.12521 0.60713,-0.21521"},"13121":{"name":"Fulton, GA","path":"m 744.79566,386.91014 0.32116,1.59373 3.10195,1.13027 -1.21183,0.43598 -0.34284,0.84152 -1.06699,0.0594 -0.48767,1.21808 -0.60713,0.21521 -0.73358,-0.12521 0.46711,3.879 0.0214,0.218 0.15333,1.391 0.19255,1.695 -1.92977,0.19371 0.15581,2.27929 -2.46373,0.5587 -0.26227,0.9063 -0.47234,-0.41133 -3.83246,0.28387 0.33613,-1.06154 0.0232,-0.297 0.15333,-0.227 0.73098,-0.843 1.79891,-1.139 1.19096,-1.906 0.65253,-0.685 1.18739,-1.492 0.11232,-0.332 0.21573,-0.898 0.67749,-2.798 -0.76485,-1.727 0.005,-0.97073 0.90253,-0.62314 0.26528,-1.26039 1.51083,-0.10174"},"13057":{"name":"Cherokee, GA","path":"m 744.27328,382.43314 0.10519,1.054 0.41719,3.423 -1.51083,0.10174 -0.26528,1.26039 -0.90253,0.62314 -0.005,0.97073 -4.53206,0.442 -0.8112,-7.697 7.5041,-0.178"},"13227":{"name":"Pickens, GA","path":"m 736.37516,379.48414 1.75078,-0.25 3.53543,-0.385 0.44216,-0.387 0.041,0.332 0.71493,1.792 1.18026,-0.136 0.23356,1.983 -7.5041,0.178 -0.39402,-3.127"},"13085":{"name":"Dawson, GA","path":"m 744.72434,376.85614 0.19969,0.33 0.42868,1.4534 1.58733,1.39427 2.42155,0.88033 0.66679,1.897 -5.64991,0.676 -0.10519,-1.054 -0.23356,-1.983 -1.18026,0.136 -0.71493,-1.792 -0.041,-0.332 1.59888,-0.29818 1.02193,-1.30782"},"13117":{"name":"Forsyth, GA","path":"m 744.37847,383.48714 5.64991,-0.676 0.60905,1.99903 -0.73237,1.42513 -1.38142,0.63184 -0.67383,2.04973 0.36896,0.71727 -3.10195,-1.13027 -0.32116,-1.59373 -0.41719,-3.423"},"13135":{"name":"Gwinnett, GA","path":"m 753.24825,387.20714 -0.39743,2.64603 1.34056,1.83497 -3.03088,3.739 -0.69175,0.862 -3.76142,-2.23029 -1.59789,-1.86971 0.48767,-1.21808 1.06699,-0.0594 0.34284,-0.84152 1.21183,-0.43598 -0.36896,-0.71727 0.67383,-2.04973 3.92649,0.98106 0.79812,-0.64106"},"13247":{"name":"Rockdale, GA","path":"m 752.55114,396.22214 0.052,2.10164 -1.85981,3.20236 -1.9321,-0.66112 -1.06668,-1.74288 0.73116,-0.0728 0.73116,0.4139 0.71634,-2.4931 0.54556,-0.681 0.69175,-0.862 1.39064,0.795"},"13159":{"name":"Jasper, GA","path":"m 760.6739,402.38514 0.5723,6.044 -5.02234,1.583 -0.25674,-1.095 -1.33537,-4.209 0.48703,-1.44721 0.99186,-0.58179 1.35244,-1.15874 0.12645,-0.87026 3.08437,1.735"},"13217":{"name":"Newton, GA","path":"m 752.55114,396.22214 4.85298,2.806 0.18541,1.622 -0.12645,0.87026 -1.35244,1.15874 -0.99186,0.58179 -0.48703,1.44721 -1.39064,-1.751 -0.66248,-0.55828 -1.45854,-0.0758 -0.37678,-0.79695 1.85981,-3.20236 -0.052,-2.10164"},"13297":{"name":"Walton, GA","path":"m 754.19138,391.68814 0.95557,0.69744 1.97547,-0.52644 2.92569,1.679 -2.64399,5.49 -4.85298,-2.806 -1.39064,-0.795 3.03088,-3.739"},"13013":{"name":"Barrow, GA","path":"m 753.24825,387.20714 0.74167,0.931 0.32092,0.202 1.77573,0.354 0.45642,-0.06 1.55823,0 0.21929,0.13 0.68284,1.446 -1.88093,1.639 -1.97547,0.52644 -0.95557,-0.69744 -1.34056,-1.83497 0.39743,-2.64603"},"13157":{"name":"Jackson, GA","path":"m 760.82544,384.57814 1.14911,1.38654 0.12921,2.10046 -3.10041,2.156 -0.68284,-1.446 -0.21929,-0.131 -1.55823,0 -0.45642,0.06 -1.77573,-0.355 -0.32092,-0.202 -0.74167,-0.93 3.20738,-4.333 0.58656,0.475 0.38689,0.249 0.22464,0.08 0.81833,-0.16 0.69889,-0.227 1.17491,0.878 0.47959,0.408"},"13059":{"name":"Clarke, GA","path":"m 762.10376,388.06514 2.04317,0.694 -0.15333,0 -0.10519,1.068 0.016,0.07 0.0891,0.199 0.77912,0.786 -0.48138,1.377 -5.28799,-2.042 3.10041,-2.155"},"13219":{"name":"Oconee, GA","path":"m 757.12242,391.85914 1.88093,-1.638 5.28799,2.041 0.16759,1.991 -0.39976,0.95562 -1.76999,0.81138 -2.24107,-2.482 -2.92569,-1.679"},"13211":{"name":"Morgan, GA","path":"m 762.28918,396.02014 3.03979,4.605 -4.65507,1.76 -3.08437,-1.735 -0.18541,-1.622 2.64399,-5.49 2.24107,2.482"},"13237":{"name":"Putnam, GA","path":"m 760.6739,402.38514 4.65507,-1.76 2.58516,2.637 0.27457,0.154 0.14084,0.126 0.0357,0.07 -0.16046,0.756 -0.76485,0.61 -0.52238,0.273 -0.39402,0.435 -0.20859,1.373 0.007,0.233 0.0339,0.09 -2.93995,0.433 -2.16975,0.612 -0.5723,-6.044"},"13141":{"name":"Hancock, GA","path":"m 773.54622,400.43314 0.61152,0.314 1.01267,2.554 0.80408,1.215 0.19077,0.328 -0.56161,0.08 -1.30684,1.148 -0.19434,0.387 -0.15332,0.658 -0.13015,0.379 -0.1979,0.262 -1.88271,1.368 -0.83438,0.121 -0.34766,0.424 -0.47781,0.403 -0.40293,-0.604 -0.0588,-0.191 0.0749,-0.852 0.0713,-0.193 0.10519,-0.07 0.0232,-0.185 -0.0125,-0.136 -0.0606,-0.09 -3.06832,-0.407 -0.39402,0.04 -0.0339,-0.09 -0.007,-0.233 0.20859,-1.373 0.39402,-0.435 0.52238,-0.273 0.76485,-0.61 0.16046,-0.756 -0.0357,-0.07 -0.14084,-0.126 -0.27457,-0.154 2.50672,-2.997 1.6348,0.37247 1.49057,-0.20447"},"13265":{"name":"Taliaferro, GA","path":"m 770.8006,394.05414 1.38886,2.103 0.27277,0.291 0.0205,0 0.0205,0 0.98482,-0.84618 1.34539,0.59618 1.46195,0.193 -0.61865,0.956 -0.31093,1.13709 -1.46481,0.41591 -0.62579,0.978 -0.025,0.1 0.29596,0.458 -1.49057,0.20447 -1.6348,-0.37247 0.6988,-0.75487 -0.88778,-1.83663 0.80697,-1.72846 -0.99596,-0.86304 0.75772,-1.028"},"13133":{"name":"Greene, GA","path":"m 770.04288,395.08214 0.99596,0.86304 -0.80698,1.72846 0.88779,1.83663 -0.69879,0.75487 -2.50672,2.997 -2.58516,-2.637 -3.03979,-4.605 1.76999,-0.81138 0.39976,-0.95562 3.26074,1.0275 2.32321,-0.1985"},"13221":{"name":"Oglethorpe, GA","path":"m 769.30477,387.02214 3.92766,1.15 -1.18739,0.891 -0.3851,0.466 -1.01267,1.841 -0.71671,1.582 -0.007,0.112 0.87717,0.99 -0.75772,1.028 -2.32321,0.1985 -3.26074,-1.0275 -0.16759,-1.991 0.48138,-1.376 -0.77912,-0.787 -0.0891,-0.199 -0.016,-0.07 0.10519,-1.068 0.15333,0 2.19115,-1.4 0.13728,-0.02 0.27456,0.161 1.02872,0.299 0.25673,0.03 1.2694,-0.811"},"13317":{"name":"Wilkes, GA","path":"m 773.23243,388.17214 2.46036,-0.669 1.66088,3.97691 2.5984,3.47209 -3.10932,1.157 -0.54735,0.282 -1.46195,-0.193 -1.3454,-0.59618 -0.98481,0.84618 -0.041,0 -0.27277,-0.291 -1.38886,-2.103 -0.87717,-0.99 0.007,-0.112 0.71671,-1.582 1.01267,-1.841 0.3851,-0.466 1.18739,-0.891"},"13301":{"name":"Warren, GA","path":"m 776.84275,396.10914 1.15708,2.298 1.73651,3.231 0.84152,0.257 2.25889,0.281 -0.78802,0.981 -1.38173,-0.474 -1.21235,-0.376 -0.56339,0.208 -2.91677,2.001 -0.80408,-1.215 -1.01267,-2.554 -0.61152,-0.314 -0.29596,-0.458 0.025,-0.1 0.62579,-0.978 1.46481,-0.41591 0.31093,-1.13709 0.61865,-0.956 0.54735,-0.282"},"13189":{"name":"McDuffie, GA","path":"m 780.94156,394.55114 -0.16937,0.234 -0.016,0.305 0.31378,1.806 1.26227,1.763 1.71869,2.072 0.34409,0.224 -0.98771,1.132 -0.57052,0.09 -2.25889,-0.282 -0.84152,-0.257 -1.73651,-3.23 -1.15708,-2.299 3.10932,-1.157 0.98949,-0.401"},"13125":{"name":"Glascock, GA","path":"m 775.97449,404.51614 2.91677,-2.001 0.56339,-0.208 1.21235,0.376 1.38173,0.474 -0.65788,0.676 -1.90589,2.105 0.0642,0.216 0.15333,0.973 -1.53505,0.05 -1.42774,-0.80334 -0.57442,-1.52866 -0.19077,-0.328"},"13163":{"name":"Jefferson, GA","path":"m 782.83675,402.17614 0.57052,-0.09 1.77396,0.79 0.10697,0.02 0.16046,0.129 0.52238,0.579 -0.39401,1.881 -0.12837,1.011 -0.0321,1.118 0.14441,0.568 0.21573,0.653 0.41006,1.581 -0.23891,1.398 -0.25673,1.045 -1.73478,0.96374 -0.26738,1.04526 -1.85597,-1.132 -0.42611,-2.517 -0.85934,-1.774 -0.0571,0 -0.69889,-0.36 -0.77911,-0.596 -0.31379,-0.419 -0.53129,-0.906 1.53505,-0.05 -0.15333,-0.973 -0.0642,-0.216 1.90589,-2.105 0.65788,-0.676 0.78802,-0.981"},"13303":{"name":"Washington, GA","path":"m 778.16742,407.17614 0.53129,0.905 0.31379,0.419 0.77911,0.596 0.69889,0.36 0.0571,0 0.85934,1.774 0.42611,2.517 -1.60815,0.804 -1.04654,0.489 -1.94775,0.62642 -0.15426,-0.59642 -0.56339,-0.275 -2.59585,1.533 -0.27278,-0.945 -0.51347,-0.806 -0.32092,-0.199 -0.8629,-0.298 -1.03407,-1.697 -0.009,-3.124 0.83438,-0.121 1.88271,-1.368 0.1979,-0.262 0.13015,-0.379 0.15332,-0.658 0.19434,-0.387 1.30684,-1.148 0.56161,-0.08 0.57442,1.52866 1.42774,0.80334"},"13167":{"name":"Johnson, GA","path":"m 783.68897,414.87214 -0.6123,2.69513 -2.65036,3.59187 -0.55447,-0.188 -0.16937,-2.03 -2.586,-0.57422 0.10424,-0.81878 -1.55822,-0.458 -1.77753,0.426 0.0321,-1.198 2.59585,-1.533 0.56339,0.274 0.15426,0.59642 1.94775,-0.62642 1.04654,-0.489 1.60815,-0.804 1.85597,1.132"},"13283":{"name":"Treutlen, GA","path":"m 780.42631,421.15914 2.8936,-0.07 0.50634,0.144 1.69372,0.706 0.18542,0.16 -0.041,1.133 -0.16046,0.902 -4.54097,1.95 -1.30685,-0.08 -0.55241,-0.91384 1.10968,-2.94335 0.21293,-0.98681"},"13209":{"name":"Montgomery, GA","path":"m 785.50393,424.13114 -0.11945,8.934 -1.166,0.442 -1.22305,-1.109 -0.0874,-0.146 -0.19968,-0.352 -0.57587,-1.815 -0.14798,-1.223 -0.68284,-2.298 -0.16045,-0.456 -0.17829,-0.03 4.54097,-1.95"},"13279":{"name":"Toombs, GA","path":"m 785.50393,424.13114 1.38125,1.17503 2.11496,-0.86303 1.31754,3.945 0.18542,5.279 -4.15231,-0.633 -0.96631,0.03 0.11945,-8.934"},"13179":{"name":"Liberty, GA","path":"m 798.9646,429.27314 0.68284,-1.068 1.6545,0.754 1.54495,1.63379 1.87103,-0.48579 1.41381,0.485 0.16046,0.271 0.62044,1.48 0.0374,0.16 -0.005,0.06 0.20681,0.186 1.45483,1.068 2.20362,1.069 0.11946,0.04 -0.0695,0.171 0.39045,0.353 0.52238,0.151 0.12124,-0.07 0.0303,-0.11 0.0499,-0.03 0.19255,-0.04 0.16937,0.06 0.1355,0.948 0.0802,0.708 -0.32983,1.284 -0.19255,0.369 -0.11232,0.03 -0.32805,-0.234 -0.0267,-0.635 -0.0802,-0.16 -0.64184,-0.53 -0.35301,-0.169 -0.56338,-0.184 -1.05903,-0.04 -1.40668,0.595 -0.49921,-0.119 -0.95561,-0.669 -0.63471,-0.184 -0.16045,0 -2.96492,-1.066 -2.74918,-2.123 -0.0553,-0.248 0.073,-1.90822 -1.14984,-0.27778 -0.49029,-0.595 1.0929,-0.933"},"13109":{"name":"Evans, GA","path":"m 793.115,424.76514 1.11608,0.07 1.36347,-0.32698 1.445,0.65128 1.17802,1.7917 1.42987,1.254 -0.68284,1.067 -2.46036,0.314 -1.85597,-0.451 -1.53327,-4.37"},"13267":{"name":"Tattnall, GA","path":"m 789.00014,424.44314 4.11486,0.322 1.53327,4.37 1.85597,0.451 2.46036,-0.313 -1.0929,0.932 -2.01821,5.561 -1.66164,-0.635 -3.68875,-1.464 -0.18542,-5.279 -1.31754,-3.945"},"13043":{"name":"Candler, GA","path":"m 792.14155,418.85014 1.22127,0.419 0.25918,1.24831 1.07441,0.84069 -0.30309,2.924 -0.16224,0.553 -1.11608,-0.07 -4.11486,-0.322 -0.38689,-0.947 0.86113,-2.74 0.46533,-1.159 1.18204,-1.093 1.0198,0.346"},"13107":{"name":"Emanuel, GA","path":"m 789.03401,412.92214 1.59195,3.29031 1.83651,1.00769 -0.32092,1.63 -1.0198,-0.346 -1.18204,1.093 -0.46533,1.159 -0.86113,2.74 0.38689,0.947 -2.11496,0.86303 -1.38125,-1.17503 0.16046,-0.902 0.041,-1.133 -0.18542,-0.16 -1.69372,-0.706 -0.50634,-0.144 -2.8936,0.07 2.65036,-3.59187 0.6123,-2.69513 0.26738,-1.04526 1.73478,-0.96374 3.34288,0.06"},"13051":{"name":"Chatham, GA","path":"m 810.5586,423.41414 0.0998,0.449 0.18185,0.918 0.2496,0.997 0.0892,0.09 1.08577,0.419 3.57465,0.674 0.66679,0.07 0.18364,0.03 0.0963,0.279 0,0.202 -0.0713,0.353 -0.20147,0.474 -3.22164,5.192 -0.14441,0.201 -0.90214,1.034 -0.13549,0.06 -0.44037,-0.1 -0.64362,-1.952 -0.11697,-1.6053 -1.82672,-0.2136 -1.17455,-2.0071 -1.59923,-1.425 -0.41185,-0.47 3.14633,-3.87906 1.51588,0.19706"},"13029":{"name":"Bryan, GA","path":"m 798.21757,426.95114 6.32384,-3.038 1.35498,3.183 0.41185,0.47 1.59923,1.425 1.17455,2.0071 1.82672,0.2136 0.11697,1.6053 0.64362,1.952 -0.73989,0.159 -0.11946,-0.04 -2.20362,-1.069 -1.45483,-1.068 -0.20681,-0.186 0.005,-0.06 -0.0374,-0.16 -0.62044,-1.48 -0.16046,-0.271 -1.41381,-0.485 -1.87103,0.48579 -1.54495,-1.63379 -1.6545,-0.754 -1.42987,-1.254"},"13031":{"name":"Bulloch, GA","path":"m 795.37924,415.79614 6.15447,2.79 3.0077,5.327 -6.32384,3.038 -1.17802,-1.7917 -1.445,-0.65128 -1.36347,0.32698 0.16224,-0.553 0.30309,-2.924 -1.07441,-0.84069 -0.25918,-1.24831 -1.22127,-0.419 0.32092,-1.63 2.91677,-1.424"},"13165":{"name":"Jenkins, GA","path":"m 789.03401,412.92214 -0.082,-0.154 0.24782,-1.527 0.69353,-0.878 2.30323,-0.42128 1.84016,-1.03872 0.6454,0.1 0.82547,0.267 0.20147,0.143 0.1765,0.242 -0.98687,5.804 0.48053,0.342 -2.91677,1.424 -1.83651,-1.00769 -1.59195,-3.29031"},"13103":{"name":"Effingham, GA","path":"m 804.17949,415.70014 2.00929,0.804 0.36906,0.137 1.71155,1.414 2.03961,4.138 0.2496,1.221 -1.51588,-0.19706 -3.14633,3.87906 -1.35498,-3.183 -3.0077,-5.327 2.64578,-2.886"},"13251":{"name":"Screven, GA","path":"m 795.88558,409.65014 3.80999,-3.762 3.65489,6.453 0.82903,3.359 -2.64578,2.886 -6.15447,-2.79 -0.48053,-0.342 0.98687,-5.804"},"13033":{"name":"Burke, GA","path":"m 785.18123,402.87714 1.73651,-0.943 0.12837,0 0.62757,0.364 0.1355,0.271 0.6184,0.83493 0.5155,-0.39993 1.84884,-0.02 1.57427,-1.013 0.75772,0.184 1.78822,1.351 3.20739,1.503 1.57605,0.867 -3.80999,3.761 -0.1765,-0.242 -0.20147,-0.143 -0.82547,-0.267 -0.6454,-0.1 -1.84016,1.03922 -2.30323,0.42178 -0.69353,0.877 -0.24782,1.528 0.082,0.153 -3.34288,-0.06 0.25673,-1.045 0.23891,-1.397 -0.41006,-1.582 -0.21573,-0.652 -0.14441,-0.569 0.0321,-1.118 0.12837,-1.011 0.39401,-1.881 -0.52238,-0.579 -0.16046,-0.129 -0.10697,-0.02"},"13245":{"name":"Richmond, GA","path":"m 788.77549,395.87614 0.31201,0.29 0.16224,0.154 0.90035,0.852 1.27475,1.487 0.45107,1.742 1.248,1.767 -0.75772,-0.184 -1.57427,1.013 -1.84884,0.02 -0.5155,0.39993 -0.6184,-0.83493 -0.1355,-0.271 -0.62757,-0.364 -0.12837,0 -1.73651,0.943 -1.77396,-0.79 0.98771,-1.132 4.38051,-5.079"},"13073":{"name":"Columbia, GA","path":"m 784.71768,393.16914 2.20006,1.921 1.85775,0.786 -4.38051,5.079 -0.34409,-0.224 -1.71869,-2.072 -1.26227,-1.763 -0.31378,-1.806 0.016,-0.305 0.16937,-0.234 3.77612,-1.382"},"13181":{"name":"Lincoln, GA","path":"m 775.69279,387.50314 1.6242,0.444 2.84368,1.694 0.11945,0.03 0.26743,-0.103 0.0874,0 1.64024,0.827 0.49742,0.355 1.18204,0.971 0.76307,1.439 -3.77612,1.382 -0.98949,0.401 -2.5984,-3.47209 -1.66088,-3.97691"},"13105":{"name":"Elbert, GA","path":"m 772.47828,380.78614 0.7078,1.841 3.34288,4.122 0.78803,1.198 -1.6242,-0.444 -2.46036,0.669 -3.92766,-1.15 -2.2109,-1.969 -0.26372,-1.969 2.60771,0.14912 3.04042,-2.44712"},"13195":{"name":"Madison, GA","path":"m 766.01716,382.10514 0.81299,0.979 0.26372,1.969 2.2109,1.969 -1.2694,0.811 -0.25673,-0.03 -1.02872,-0.3 -0.27456,-0.16 -0.13728,0.02 -2.19115,1.4 -2.04317,-0.694 -0.12921,-2.10046 -1.14911,-1.38654 0.65534,-0.16268 0.51111,-0.52326 3.63528,-0.69521 0.38999,-1.09185"},"13011":{"name":"Banks, GA","path":"m 760.10516,378.52814 0.59789,0.97142 0.0931,2.1974 1.06666,1.00747 0.12912,1.18777 -0.51111,0.52326 -0.65534,0.16268 -0.47959,-0.409 -1.17491,-0.877 -0.69889,0.227 -0.81833,0.16 -0.22464,-0.08 -0.38689,-0.25 -0.58656,-0.474 -0.80149,-1.59956 0.49662,-1.52744 1.44136,-1.52024 1.29713,-0.006 1.21591,0.306"},"13139":{"name":"Hall, GA","path":"m 754.96158,378.21514 1.18918,1.533 -0.49662,1.52744 0.80149,1.59956 -3.20738,4.332 -0.79812,0.64106 -3.92649,-0.98106 1.38142,-0.63184 0.73237,-1.42513 -0.60905,-1.99903 -0.66679,-1.897 2.2892,-2.312 3.31079,-0.387"},"13187":{"name":"Lumpkin, GA","path":"m 750.76649,373.65814 0.8843,4.944 -2.2892,2.312 -2.42155,-0.88033 -1.58733,-1.39427 -0.42868,-1.4534 0.44393,-1.132 2.41734,0.0402 1.43083,-2.58827 1.55036,0.15206"},"13123":{"name":"Gilmer, GA","path":"m 736.18975,372.36514 3.5693,-0.417 1.06794,0.121 0.82012,0.515 0.43502,0.327 1.32467,1.775 1.11608,1.623 0.20146,0.547 -1.02193,1.30782 -1.59888,0.29818 -0.44216,0.387 -3.53543,0.385 -1.75078,0.25 -0.0963,-0.786 -0.44928,-3.336 0.22464,-1.061 0.49742,-0.545 0.40293,-0.692 0.007,-0.07 -0.0481,-0.07 -0.72384,-0.555"},"13111":{"name":"Fannin, GA","path":"m 741.34046,368.63714 3.57822,-0.419 -0.74703,0.797 -0.0677,0.128 0.0178,0.12 1.69703,0.89556 -0.54429,1.02129 -0.0527,1.18515 0.3548,0.232 0.72168,-0.43872 0.28402,1.39334 -0.53528,1.14756 -0.67906,1.35482 -0.44393,1.132 -0.19969,-0.33 -0.20146,-0.547 -1.11608,-1.623 -1.32467,-1.775 -0.43502,-0.327 -0.82012,-0.515 -1.06794,-0.121 -3.5693,0.417 -0.4172,-3.043 5.56791,-0.685"},"13291":{"name":"Union, GA","path":"m 747.22214,367.92914 1.28011,-0.167 -0.11233,0.424 0.59548,0.571 1.13926,0.643 0.54377,-0.04 0.54913,0.314 0.68284,1.599 0.0802,0.578 -1.21413,1.808 -1.55036,-0.15206 -1.43083,2.58827 -2.41734,-0.0402 0.67906,-1.35482 0.53528,-1.14756 -0.28402,-1.39334 -0.72168,0.43872 -0.3548,-0.232 0.0527,-1.18515 0.54429,-1.02129 -1.69703,-0.89556 -0.0178,-0.12 0.0677,-0.128 0.74703,-0.797 2.30346,-0.289"},"13311":{"name":"White, GA","path":"m 751.98062,371.85014 1.81497,-0.41 0.98949,0.57 0.12837,0.218 0.12836,0.579 0.72206,4.379 -0.80229,1.029 -3.31079,0.387 -0.8843,-4.944 1.21413,-1.808"},"13137":{"name":"Habersham, GA","path":"m 754.27874,370.85514 1.47399,-0.29318 1.29369,1.72612 1.29369,0.0674 0.737,-0.47111 1.09758,0.68276 0.37084,0.618 -1.65628,5.037 -1.29713,0.006 -1.44136,1.52024 -1.18918,-1.533 0.80229,-1.029 -0.72206,-4.379 -0.12836,-0.579 -0.12837,-0.218 -0.98949,-0.57 0.48315,-0.585"},"13147":{"name":"Hart, GA","path":"m 766.46823,376.92014 1.16599,0.163 0.2086,-0.106 0.016,0 0.74881,-0.185 0.67392,-0.09 0.39402,0.112 0.19255,0.146 -0.007,0.06 0.62578,0.966 1.99147,2.803 -3.04042,2.44712 -2.60771,-0.14912 -0.81299,-0.979 0.45107,-5.185"},"13119":{"name":"Franklin, GA","path":"m 765.31649,376.11814 1.15174,0.802 -0.45107,5.185 -0.38999,1.09185 -3.63528,0.69521 -0.12913,-1.18777 -1.06665,-1.00747 -0.0931,-2.1974 -0.59789,-0.97142 0.37619,-0.231 0.14441,-0.05 3.54435,-0.642 1.14638,-1.487"},"13257":{"name":"Stephens, GA","path":"m 760.54553,373.18514 4.77096,2.933 -1.14638,1.487 -3.54435,0.642 -0.14441,0.05 -0.37619,0.231 -1.21591,-0.306 1.65628,-5.037"},"15007":{"name":"Kauai, HI","path":"m 309.6956,550.02314 2.34804,0 1.01088,0.672 0.33162,1.006 0,0.674 -0.67215,1.676 0,2.016 -1.3425,1.341 -1.00375,0.675 -3.35715,-0.338 -1.34428,-1.341 -2.01464,-0.674 -0.67215,-0.67 0,-1.009 1.00911,-1.343 3.35893,-2.685 2.34804,0 m -15.78197,10.747 -0.33518,-0.34 0.33518,-2.013 2.01464,-1.344 0.33697,-1.006 1.00732,0 -0.33518,2.35 -1.67946,0.672 -1.00733,1.681 -0.33696,0"},"15003":{"name":"Honolulu, HI","path":"m 349.65684,568.82314 -1.34606,1.013 0,-0.337 -2.01465,0.67 -1.67946,-1.007 -3.35715,0.337 -1.34428,0.337 -0.67036,-1.683 -1.0091,-0.67 -0.3334,-1.006 -1.0091,-1.009 0,-1.007 -1.00733,-0.669 3.35893,-0.676 1.67947,-2.346 1.00732,-0.674 1.00554,0.334 1.67946,3.022 0.33518,0 0.33518,0.674 -0.33518,0.67 0.33518,1.005 1.34428,1.011 0.33518,-1.011 0.67214,0 0,1.011 0.67215,0.337 0.33517,1.343 1.01089,0.331"},"15009":{"name":"Maui, HI","path":"m 364.7631,571.51214 0.33874,0 0.67215,0.333 0.33339,0 -0.33339,-0.67 3.0184,-0.67 1.34428,0.337 -0.67214,1.344 -2.01465,1.341 -1.00732,0 -4.02572,-0.669 -4.70143,0.333 -0.33874,0 1.01089,-2.686 0.33518,0 4.70142,0.337 1.00733,0.333 0.33161,0.337 m 8.05857,2.35 1.00732,0.337 1.67947,2.687 3.35714,-1.678 2.01464,0.335 0,0.335 2.68679,1.681 2.34982,0.671 0.33518,0.67 0,1.341 -1.3425,1.344 -1.67946,0.672 -3.35715,1.346 -2.3516,0 -0.67215,-0.338 -0.67035,-4.028 -1.00554,-0.337 -0.67215,0.669 -2.01464,-1.006 -1.3425,-1.344 -0.33696,-1.341 0.67214,-1.344 0.33518,-0.672 1.00732,0 m -8.72715,3.024 2.34804,0 1.34429,1.007 0.67036,1.007 -0.33697,1.341 -3.0184,1.011 -0.33874,-1.344 -0.33161,-1.008 -1.34251,-1.341 0,-0.34 1.00554,-0.333 m 10.07144,6.717 0.33517,0.334 0.33518,1.342 -2.68678,0.672 -1.00554,-0.338 0.67036,-1.002 2.35161,-1.008"},"15001":{"name":"Hawaii, HI","path":"m 397.00095,619.86514 -0.67036,0.672 -1.34428,-1.007 -3.35714,-1.342 -0.67571,-1.01 -0.33518,-0.67 0.33518,-5.374 -2.34982,-5.71 -1.34429,-1.341 -1.00732,-1.342 0.33696,-1.011 2.01465,-2.013 2.34982,-3.02 0,-1.343 -1.67768,-2.351 -0.33696,-1.343 0.33696,-1.346 0.67036,-0.335 2.01642,0.335 0.67036,1.007 3.02375,1.347 3.69589,0.67 4.02928,1.681 2.68679,1.678 1.3425,1.677 0.33518,2.689 1.67768,-0.337 0.67214,1.004 0,1.346 1.67947,1.342 2.34982,1.006 -0.67214,1.344 -3.69233,3.357 -3.02196,1.683 -2.68679,0.336 -3.02196,2.348 -1.67768,1.005 -2.35161,4.368"},"15005":{"name":"Kalawao, HI","path":"m 364.43149,571.17514 -1.00733,-0.333 2.34983,0.333 0.33339,0.67 -0.33339,0 -0.67215,-0.333 -0.33874,0 -0.33161,-0.337"},"19163":{"name":"Scott, IA","path":"m 610.2906,222.59014 1.91124,-0.104 5.72301,-0.162 2.32843,0.685 -0.26565,2.505 -0.89143,1.198 -1.0198,1.189 -3.24661,1.608 -1.38351,0.353 -0.58656,0.02 -0.24782,-0.03 -0.19061,-3.30549 -1.93992,0.0765 -0.19077,-4.027"},"19045":{"name":"Clinton, IA","path":"m 609.96969,216.53214 12.62985,-0.717 0.18542,2.405 -1.32646,3.437 -1.20522,1.352 -2.32843,-0.685 -5.72301,0.162 -1.91124,0.104 -0.21751,-4.033 -0.1034,-2.025"},"19119":{"name":"Lyon, IA","path":"m 513.29356,184.92814 2.42471,0.02 6.6608,0.02 3.19134,0 -0.009,5.592 -11.98088,-0.09 -0.052,-1.13109 1.02139,-0.0616 -0.0458,-1.68211 -1.13892,-1.28919 -0.0718,-1.388"},"19167":{"name":"Sioux, IA","path":"m 513.58061,190.48014 11.98088,0.09 0.0571,8.045 -11.14472,-0.02 1.16422,-4.019 0.26565,-0.708 0.0481,-0.158 -0.64361,-2.314 -0.15868,-0.08 -1.19809,0 -0.37083,-0.836"},"19149":{"name":"Plymouth, IA","path":"m 525.61854,198.61414 0,8.049 -10.45474,-0.02 -0.60975,-1.606 -0.43502,-0.699 -0.55447,-0.515 -0.44037,-0.337 0.67393,-3.084 0.6757,-1.801 11.14472,0.02"},"19035":{"name":"Cherokee, IA","path":"m 533.53449,198.57114 0.0553,8.044 -5.96905,0.03 -2.00217,0.01 0,-8.049 7.91595,-0.04"},"19141":{"name":"O'Brien, IA","path":"m 525.56149,190.56914 7.92308,0.02 0.0499,7.978 -7.91595,0.04 -0.0571,-8.045"},"19143":{"name":"Osceola, IA","path":"m 532.34531,184.93614 1.10895,0 0.0303,5.657 -7.92308,-0.02 0.009,-5.592 6.7749,-0.04"},"19059":{"name":"Dickinson, IA","path":"m 533.45426,184.93614 7.86602,-0.07 0.0874,5.655 -7.92307,0.07 -0.0303,-5.657"},"19041":{"name":"Clay, IA","path":"m 533.48457,190.59314 7.92307,-0.07 0.0891,7.981 -7.96229,0.07 -0.0499,-7.978"},"19021":{"name":"Buena Vista, IA","path":"m 541.49678,198.50014 0.0802,8.074 -7.98725,0.04 -0.0553,-8.044 7.96229,-0.07"},"19151":{"name":"Pocahontas, IA","path":"m 541.49678,198.50014 7.90703,-0.07 0.0963,6.082 0.041,1.984 -7.96408,0.08 -0.0802,-8.074"},"19147":{"name":"Palo Alto, IA","path":"m 549.26653,190.41614 0.13728,8.012 -7.90703,0.07 -0.0891,-7.981 7.85889,-0.103"},"19063":{"name":"Emmet, IA","path":"m 549.17917,184.75014 0.0874,5.666 -7.85889,0.103 -0.0874,-5.655 1.01267,-0.02 6.84622,-0.1"},"19109":{"name":"Kossuth, IA","path":"m 557.03806,184.62214 0.12837,5.641 0.15154,8.028 -7.91416,0.137 -0.13728,-8.012 -0.0874,-5.666 3.25552,-0.05 4.60337,-0.07"},"19091":{"name":"Humboldt, IA","path":"m 549.40381,198.42814 7.91416,-0.137 0.13015,6.074 -7.94803,0.145 -0.0963,-6.082"},"19193":{"name":"Woodbury, IA","path":"m 525.61854,206.66314 2.00217,-0.01 0.007,1.672 0.65966,0.327 0.55269,0 0,6.09 -11.62788,-0.09 0.21038,-1.422 -0.51525,-0.965 -0.19968,-2.646 0.11945,-0.319 -0.007,-0.355 -0.0713,-0.265 -0.17829,-0.248 -0.22464,-0.09 -0.57765,-0.04 -0.60439,-1.666 10.45474,0.02"},"19093":{"name":"Ida, IA","path":"m 533.58976,206.61514 0.016,2.01 1.10003,0 0.025,6.11 -5.8906,0.01 0,-6.09 -0.55269,0 -0.65966,-0.327 -0.007,-1.672 5.96905,-0.03"},"19161":{"name":"Sac, IA","path":"m 533.58976,206.61514 7.98725,-0.04 0.0161,1.988 0.98058,0 0.0481,6.114 -3.9455,0.02 -3.94549,0.03 -0.025,-6.11 -1.10003,0 -0.016,-2.01"},"19025":{"name":"Calhoun, IA","path":"m 541.57701,206.57414 7.96408,-0.08 0.025,1.977 0.7702,0 0.10519,6.108 -3.92231,0.06 -3.89735,0.05 -0.0481,-6.114 -0.98058,0 -0.0161,-1.988"},"19187":{"name":"Webster, IA","path":"m 557.44812,204.36514 0.0802,3.987 0.67571,0 0.1355,6.049 -3.95263,0.09 -3.94549,0.09 -0.10519,-6.108 -0.7702,0 -0.025,-1.977 -0.041,-1.984 7.94803,-0.145"},"19073":{"name":"Greene, IA","path":"m 550.44144,214.57214 3.94549,-0.09 0.16759,8.017 -1.98611,0.04 -5.93696,0.107 -0.11232,-8.02 3.92231,-0.06"},"19027":{"name":"Carroll, IA","path":"m 542.62178,214.67614 3.89735,-0.05 0.11232,8.02 -1.9772,0.03 -5.92983,0.05 -0.0481,-8.026 3.9455,-0.02"},"19047":{"name":"Crawford, IA","path":"m 538.67628,214.70114 0.0481,8.026 -7.91416,0.05 -1.97007,0.02 0,-8.053 5.8906,-0.01 3.94549,-0.03"},"19133":{"name":"Monona, IA","path":"m 528.84019,214.73814 0,8.053 -7.9623,-0.06 -2.25889,-4.195 -1.40669,-3.889 11.62788,0.09"},"19085":{"name":"Harrison, IA","path":"m 530.81026,222.77514 0.007,6.051 1.02872,0 0.009,2.227 -8.27608,0 -2.39618,-4.065 -0.30487,-4.243 7.9623,0.06 1.97007,-0.02"},"19165":{"name":"Shelby, IA","path":"m 530.81026,222.77514 7.91416,-0.05 0.0553,6.042 0.89322,0 0.025,2.248 -1.96116,0.01 -5.88169,0.02 -0.009,-2.227 -1.02872,0 -0.007,-6.051"},"19009":{"name":"Audubon, IA","path":"m 538.72442,222.72714 5.92983,-0.05 0.0802,5.004 0.75772,1.004 0.0303,2.27 -5.82463,0.05 -0.025,-2.248 -0.89322,0 -0.0553,-6.042"},"19077":{"name":"Guthrie, IA","path":"m 546.63145,222.64714 5.93696,-0.107 0.1141,6.053 0.66679,0 0.0392,2.251 -7.86603,0.113 -0.0303,-2.27 -0.75772,-1.004 -0.0802,-5.004 1.9772,-0.03"},"19001":{"name":"Adair, IA","path":"m 553.38853,230.84414 0.14619,8.018 -3.94549,0.06 -3.95262,0.05 -0.11411,-8.01 7.86603,-0.113"},"19029":{"name":"Cass, IA","path":"m 545.5225,230.95714 0.11411,8.01 -3.91518,0.04 -3.92945,0.02 -0.0553,-8.009 1.96116,-0.01 5.82463,-0.05"},"19155":{"name":"Pottawattamie, IA","path":"m 531.85502,231.04414 5.88169,-0.02 0.0553,8.009 -3.9134,0.03 -8.09066,0.02 -1.20522,-0.724 -0.25674,-4.677 -0.74702,-2.635 8.27608,0"},"19071":{"name":"Fremont, IA","path":"m 526.31921,245.05714 7.5665,-0.03 0.025,3.119 0.20147,2.588 0.016,1.726 -6.79808,-0.07 -1.5511,-4.598 0.54021,-2.732"},"19129":{"name":"Mills, IA","path":"m 533.87858,239.06214 0.007,5.963 -7.5665,0.03 -0.76485,-3.358 0.23356,-2.619 8.09066,-0.02"},"19137":{"name":"Montgomery, IA","path":"m 537.79198,239.03014 3.92945,-0.02 0.0481,5.967 -7.88385,0.05 -0.007,-5.963 3.9134,-0.03"},"19145":{"name":"Page, IA","path":"m 541.76956,244.97514 0.0499,4.012 0.26387,0 0.016,3.528 -4.99738,-0.03 -2.97383,-0.02 -0.016,-1.726 -0.20147,-2.588 -0.025,-3.119 7.88385,-0.05"},"19173":{"name":"Taylor, IA","path":"m 549.68551,244.89714 0.11232,7.609 -2.78663,0.03 -4.91181,-0.02 -0.016,-3.528 -0.26387,0 -0.0499,-4.012 7.91595,-0.08"},"19003":{"name":"Adams, IA","path":"m 549.58923,238.91914 0.0963,5.978 -7.91595,0.08 -0.0481,-5.967 3.91518,-0.04 3.95262,-0.05"},"19175":{"name":"Union, IA","path":"m 553.53472,238.86214 3.9134,-0.06 0.11945,6.012 -7.88206,0.09 -0.0963,-5.978 3.94549,-0.06"},"19159":{"name":"Ringgold, IA","path":"m 549.68551,244.89714 7.88206,-0.09 0.13728,7.481 -3.76007,0.117 -4.14695,0.1 -0.11232,-7.609"},"19053":{"name":"Decatur, IA","path":"m 557.56757,244.81014 7.90703,-0.211 0.18542,7.36 -3.76899,0.155 -4.18618,0.177 -0.13728,-7.481"},"19039":{"name":"Clarke, IA","path":"m 565.30701,238.50714 0.16759,6.092 -7.90703,0.211 -0.11945,-6.012 3.87239,-0.209 3.9865,-0.08"},"19121":{"name":"Madison, IA","path":"m 561.11192,230.48814 0.20859,8.101 -3.87239,0.209 -3.9134,0.06 -0.14619,-8.018 7.72339,-0.356"},"19049":{"name":"Dallas, IA","path":"m 560.48613,222.36514 0.14441,5.078 0.42433,1.005 0.0571,2.04 -7.72339,0.356 -0.0392,-2.251 -0.66679,0 -0.1141,-6.053 1.98611,-0.04 5.93161,-0.137"},"19015":{"name":"Boone, IA","path":"m 562.29396,214.32114 0.20147,7.996 -2.0093,0.05 -5.93161,0.137 -0.16759,-8.017 3.95263,-0.09 3.9544,-0.07"},"19079":{"name":"Hamilton, IA","path":"m 565.45856,206.19114 0.82725,8.032 -3.99185,0.1 -3.9544,0.07 -0.1355,-6.049 -0.67571,0 -0.0392,-1.985 7.96943,-0.176"},"19197":{"name":"Wright, IA","path":"m 557.31797,198.29114 7.9409,-0.209 0.19969,8.109 -7.96943,0.176 -0.041,-2.002 -0.13015,-6.074"},"19081":{"name":"Hancock, IA","path":"m 565.06632,190.07014 0.19255,8.012 -7.9409,0.209 -0.15154,-8.028 7.89989,-0.193"},"19189":{"name":"Winnebago, IA","path":"m 564.92191,184.43614 0.14441,5.634 -7.89989,0.193 -0.12837,-5.641 5.35931,-0.121 2.52454,-0.06"},"19195":{"name":"Worth, IA","path":"m 572.78793,184.20314 0.18364,5.635 -7.90525,0.232 -0.14441,-5.634 7.45596,-0.215 0.41006,-0.02"},"19033":{"name":"Cerro Gordo, IA","path":"m 565.06632,190.07014 7.90525,-0.232 0.0321,0.988 0.20147,7.039 -7.94626,0.217 -0.19255,-8.012"},"19069":{"name":"Franklin, IA","path":"m 565.25887,198.08214 7.94626,-0.217 0.22464,8.116 -7.97121,0.21 -0.19969,-8.109"},"19083":{"name":"Hardin, IA","path":"m 573.42977,205.98114 0.68462,8.01 -3.90627,0.13 -3.92231,0.102 -0.82725,-8.032 7.97121,-0.21"},"19169":{"name":"Story, IA","path":"m 570.20812,214.12114 0.23177,8.003 -1.97542,0.05 -5.96904,0.146 -0.20147,-7.996 3.99185,-0.1 3.92231,-0.102"},"19153":{"name":"Polk, IA","path":"m 568.46447,222.17114 0.55448,8.215 0.0143,0.369 -7.92129,-0.267 -0.0571,-2.04 -0.42433,-1.005 -0.14441,-5.078 2.0093,-0.05 5.96904,-0.146"},"19181":{"name":"Warren, IA","path":"m 569.03321,230.75514 0.22464,7.656 -3.95084,0.1 -3.9865,0.08 -0.20859,-8.101 7.92129,0.267"},"19117":{"name":"Lucas, IA","path":"m 569.25785,238.41114 3.94014,-0.112 0.20682,6.069 -7.93021,0.231 -0.16759,-6.092 3.95084,-0.1"},"19185":{"name":"Wayne, IA","path":"m 573.40481,244.36814 0.23355,7.281 -4.80483,0.223 -3.17351,0.09 -0.18542,-7.36 7.93021,-0.231"},"19007":{"name":"Appanoose, IA","path":"m 581.32253,244.09314 0.27991,7.135 -1.32645,0.07 -6.63763,0.348 -0.23355,-7.281 7.91772,-0.275"},"19135":{"name":"Monroe, IA","path":"m 581.08719,238.02814 0.23534,6.065 -7.91772,0.275 -0.20682,-6.069 3.9455,-0.129 3.9437,-0.142"},"19125":{"name":"Marion, IA","path":"m 576.85288,230.12814 0.29061,8.042 -3.9455,0.129 -3.94014,0.112 -0.22464,-7.656 -0.0143,-0.369 7.83393,-0.258"},"19099":{"name":"Jasper, IA","path":"m 570.43989,222.12414 7.93021,-0.24 0.44393,8.171 -1.96115,0.07 -7.83393,0.258 -0.55448,-8.215 1.97542,-0.05"},"19127":{"name":"Marshall, IA","path":"m 574.11439,213.99114 3.95975,-0.144 0.29596,8.037 -7.93021,0.24 -0.23177,-8.003 3.90627,-0.13"},"19075":{"name":"Grundy, IA","path":"m 581.41702,205.73314 0.54735,5.958 -3.95562,0.156 0.0654,2 -3.95975,0.144 -0.68462,-8.01 7.98725,-0.248"},"19023":{"name":"Butler, IA","path":"m 573.20513,197.86514 7.89989,-0.248 0.21751,6.115 0.0945,2.001 -7.98725,0.248 -0.22464,-8.116"},"19067":{"name":"Floyd, IA","path":"m 573.00366,190.82614 7.84285,-0.266 0.25851,7.057 -7.89989,0.248 -0.20147,-7.039"},"19131":{"name":"Mitchcell, IA","path":"m 580.63078,183.92314 0.21573,6.637 -7.84285,0.266 -0.21573,-6.623 7.84285,-0.28"},"19089":{"name":"Howard, IA","path":"m 582.36729,183.85914 6.12951,-0.25 0.26565,6.638 -7.91594,0.313 -0.21573,-6.637 1.73651,-0.06"},"19037":{"name":"Chickasaw, IA","path":"m 588.76245,190.24714 0.11054,3.007 0.16224,4.056 -7.93021,0.307 -0.25851,-7.057 7.91594,-0.313"},"19017":{"name":"Bremer, IA","path":"m 581.10502,197.61714 7.93021,-0.307 0.25138,6.116 -7.96408,0.306 -0.21751,-6.115"},"19013":{"name":"Black Hawk, IA","path":"m 589.28661,203.42614 0.17294,4.027 0.31557,0.514 0.12837,3.416 -3.96154,0.153 -3.97758,0.155 -0.54735,-5.958 -0.0945,-2.001 7.96408,-0.306"},"19171":{"name":"Tama, IA","path":"m 585.94195,211.53614 0.40114,10.048 -7.97299,0.3 -0.36802,-10.038 7.93987,-0.31"},"19157":{"name":"Poweshiek, IA","path":"m 578.3701,221.88414 7.97299,-0.3 0.33162,8.166 -1.96294,0.08 -5.89774,0.225 -0.44393,-8.171"},"19123":{"name":"Mahaska, IA","path":"m 578.81403,230.05514 5.89774,-0.225 0.33874,8.037 -3.96332,0.161 -3.9437,0.142 -0.29061,-8.042 1.96115,-0.07"},"19179":{"name":"Wapello, IA","path":"m 585.05051,237.86714 3.96154,-0.171 0.25673,6.083 -7.94625,0.314 -0.23534,-6.065 3.96332,-0.161"},"19051":{"name":"Davis, IA","path":"m 589.26878,243.77914 0.26387,6.919 -2.956,0.193 -4.97421,0.337 -0.27991,-7.135 7.94625,-0.314"},"19177":{"name":"Van Buren, IA","path":"m 589.26878,243.77914 7.95517,-0.369 0.082,2.025 0.26208,4.964 -3.93657,0.01 -4.09882,0.288 -0.26387,-6.919"},"19101":{"name":"Jefferson, IA","path":"m 596.99039,237.35214 0.23356,6.058 -7.95517,0.369 -0.25673,-6.083 4.02394,-0.193 3.9544,-0.151"},"19011":{"name":"Benton, IA","path":"m 593.85611,211.17214 0.43502,10.107 -7.94804,0.305 -0.40114,-10.048 3.96154,-0.153 3.95262,-0.211"},"19095":{"name":"Iowa, IA","path":"m 586.34309,221.58414 7.94804,-0.305 0.39223,8.091 -1.99147,0.107 -6.01718,0.273 -0.33162,-8.166"},"19107":{"name":"Keokuk, IA","path":"m 586.67471,229.75014 6.01718,-0.273 0.3441,8.026 -4.02394,0.193 -3.96154,0.171 -0.33874,-8.037 1.96294,-0.08"},"19183":{"name":"Washington, IA","path":"m 594.68336,229.37014 5.28799,-0.23 0.2817,0.401 0.44215,1.583 0.2496,6.05 -3.95441,0.178 -3.9544,0.151 -0.3441,-8.026 1.99147,-0.107"},"19087":{"name":"Henry, IA","path":"m 600.9448,237.17414 1.97624,-0.054 0.10437,1.99901 0.0592,6.083 -5.77865,0.233 -0.082,-2.025 -0.23356,-6.058 3.95441,-0.178"},"19111":{"name":"Lee, IA","path":"m 597.30596,245.43514 5.77865,-0.233 4.84369,2.435 -1.207,1.416 -0.56161,0.01 -0.45819,0.03 -0.13729,0 -0.007,0 -0.90926,0.319 -0.025,0.02 -0.10341,0.06 -0.43502,0.248 -0.15332,0.1 -0.0535,0.06 -0.0642,0.06 -0.0642,0.07 -0.73097,1.123 -0.0267,0.171 0.0571,0.192 0.35479,0.168 0.28882,0.419 0.0963,0.28 0.0143,0.232 -0.0464,2.068 -0.007,0.01 -0.041,0.202 -0.18364,0.153 -0.025,0.01 -0.53129,0.187 -1.13926,-0.08 -0.72563,-0.586 -1.75077,-2.154 -0.0642,-0.16 0.0571,-0.467 -0.041,-0.152 -1.37459,-1.038 -0.36193,-0.226 -0.26208,-4.964"},"19057":{"name":"Des Moines, IA","path":"m 610.28169,238.78214 0.016,0.06 0.0642,0.2 0.0874,0.62 -0.0695,1.872 -0.1462,0.683 -0.0963,0.144 -0.49742,0.282 -0.18542,0.182 -1.3425,1.915 -0.0642,0.297 -0.11945,2.603 -4.84369,-2.435 -0.0592,-6.083 7.25628,-0.337"},"19115":{"name":"Louisa, IA","path":"m 600.6952,231.12414 1.9772,-0.08 0.0874,2.017 4.96529,-0.193 0,0 -0.49029,1.963 0.0178,0.191 0.007,0.02 1.16422,1.399 0.54912,0.273 0.22999,-0.03 0.13907,0.06 0.14619,0.152 0.80942,1.326 -0.016,0.555 -7.25628,0.337 -0.10437,-1.99901 -1.97624,0.054 -0.2496,-6.05"},"19139":{"name":"Muscatine, IA","path":"m 610.48137,226.61714 1.93992,-0.0765 0.19061,3.30549 -1.05189,0 -2.41044,0.658 -0.6454,0.233 -0.18364,0.12 -0.016,0 0,0 -0.12124,0.171 -0.016,0.05 -0.23891,0.982 -0.20325,0.788 -4.96529,0.192 -0.0874,-2.016 -0.16046,-4.051 7.96943,-0.376"},"19103":{"name":"Johnson, IA","path":"m 602.22133,220.95114 0.29061,6.042 0.16046,4.051 -1.9772,0.08 -0.44215,-1.583 -0.2817,-0.401 -5.28799,0.23 -0.39223,-8.091 7.9302,-0.328"},"19113":{"name":"Linn, IA","path":"m 601.77918,210.86714 0.34766,8.068 0.0945,2.016 -7.9302,0.328 -0.43502,-10.107 3.97045,-0.114 3.95262,-0.191"},"19031":{"name":"Cedar, IA","path":"m 610.07309,218.55714 0.21751,4.033 0.19077,4.027 -7.96943,0.376 -0.3851,-8.058 7.94625,-0.378"},"19105":{"name":"Jones, IA","path":"m 605.72467,210.68214 3.92053,-0.194 0.32449,6.044 0.1034,2.025 -7.94625,0.378 -0.34766,-8.068 3.94549,-0.185"},"19019":{"name":"Buchanan, IA","path":"m 597.27922,203.03914 0.0481,1.752 0.11232,2.282 0.2906,2.209 0.0963,1.776 -3.97045,0.114 -3.95262,0.211 -0.12837,-3.416 -0.31557,-0.514 -0.17294,-4.027 7.99261,-0.387"},"19065":{"name":"Fayette, IA","path":"m 588.87299,193.25414 7.97477,-0.324 0.43146,10.109 -7.99261,0.387 -0.25138,-6.116 -0.16224,-4.056"},"19191":{"name":"Winneshiek, IA","path":"m 596.30042,183.27214 0.16759,3.657 0.12124,0 0.25851,6.01 -7.97477,0.324 -0.11054,-3.007 -0.26565,-6.638 5.81929,-0.248 1.98433,-0.09"},"19005":{"name":"Allamakee, IA","path":"m 602.83999,182.95814 0.28882,1.776 -0.016,1.182 1.78465,1.255 0.38688,0.491 0.50456,0.811 -0.0642,0.287 -1.28366,2.162 -0.43681,1.696 -7.15644,0.312 -0.25851,-6.01 -0.12124,0 -0.16759,-3.657 6.53957,-0.314"},"19043":{"name":"Clayton, IA","path":"m 604.0042,192.61814 0.35658,2.186 0.37618,1.758 1.53505,3.408 0.2086,0.434 1.35676,0.9 0.46712,0.216 0.8843,0.21 -3.92945,0.877 -7.98012,0.432 -0.43146,-10.109 7.15644,-0.312"},"19055":{"name":"Delaware, IA","path":"m 597.27922,203.03914 7.98012,-0.432 0.46533,8.075 -3.94549,0.185 -3.95262,0.191 -0.0963,-1.776 -0.2906,-2.209 -0.11232,-2.282 -0.0481,-1.752"},"19061":{"name":"Dubuque, IA","path":"m 605.25934,202.60714 3.92945,-0.877 2.17688,0.417 0.8433,0.202 0.19255,0.09 0.12124,0.122 1.06972,1.945 0.18363,0.579 0.0107,0.13 -0.0642,0.111 -0.23534,0.403 -0.007,0.05 0.016,0.129 0.0392,0.115 0.13728,0.143 0.39223,0.282 1.13569,0.586 1.44412,1.006 0.007,0 0.0428,0.04 -3.21451,0.168 0.10519,2.023 -3.94015,0.202 -3.92053,0.194 -0.46533,-8.075"},"19097":{"name":"Jackson, IA","path":"m 616.69467,208.09514 1.01089,1.171 0.0481,0.07 0.009,0.09 -0.0963,0.65 -0.0963,0.216 0,0.146 0.23534,0.53 0.0125,0.03 0.48316,0.602 0.016,0.01 0.29061,0.233 0.312,0.202 0.7078,0.226 2.97205,3.541 -12.62985,0.717 -0.32449,-6.044 3.94015,-0.202 -0.10519,-2.023 3.21451,-0.168"},"16043":{"name":"Fremont, ID","path":"m 273.01975,135.82314 0.77198,0.763 1.31933,2.587 0.71493,2.064 0.18542,0.548 1.30862,1.214 -1.7686,11.168 -5.95479,0.451 -0.0321,0.035 -0.0321,0.035 -0.0312,0.01 -0.0312,0.01 -2.45053,-0.43457 -0.17742,0.81957 -2.23394,-0.371 -2.14479,-1.389 -2.27494,-0.387 0.16045,-0.987 -2.91677,-0.515 0.33696,-1.96 1.98612,0.346 0.38136,-1.85737 1.91676,0.22637 1.06794,-0.844 0.33874,-1.47 0.24782,-1.455 1.20522,-1.15 1.48691,-0.369 1.42987,0.233 0.57943,-3.439 2.77949,-3.191 1.83101,-0.69"},"16033":{"name":"Clark, ID","path":"m 268.40925,139.70414 -0.57943,3.439 -1.42987,-0.233 -1.48691,0.369 -1.20522,1.15 -0.24782,1.455 -0.33874,1.47 -1.06794,0.844 -1.91676,-0.22637 -0.38136,1.85737 -1.98612,-0.346 -8.75746,-1.542 -0.35479,1.959 -4.86188,-0.884 1.05367,-5.937 0.96454,0.266 1.95937,0.344 0.59548,-3.318 -0.0963,-0.467 0.19255,-0.86 0.23356,-0.361 0.6347,-0.674 1.08399,-0.257 5.74619,1.43 2.44253,-0.917 4.475,0.459 3.23948,0.923 2.08952,0.06"},"16009":{"name":"Benewah, ID","path":"m 195.36507,59.678143 2.13053,0.473 4.2254,0.666 0.21751,-0.472 0.61152,-0.201 3.94371,0.884 -1.90232,8.741 -1.98612,-0.424 -4.75669,-1.407 -3.68876,-2.933 0.66857,-2.941 0.53665,-2.386"},"16055":{"name":"Kootenai, ID","path":"m 198.39416,46.057143 4.16301,0.82 2.12161,0.248 1.96116,0.435 -0.51525,2.25 2.78128,0.603 -2.41223,10.615 -3.94371,-0.884 -0.61152,0.201 -0.21751,0.472 -4.2254,-0.666 -2.13053,-0.473 3.02909,-13.621"},"16017":{"name":"Bonner, ID","path":"m 202.87095,26.781143 3.72085,0.811 -0.82725,3.849 -0.87717,3.849 11.10549,2.395 -1.37459,6.388 -1.11608,5.311 -0.14441,-0.298 -0.79516,-1.148 -1.39955,-1.109 -0.17651,-0.112 -0.64361,0.06 -0.9164,0.779 -0.0713,0.323 -0.44928,2.539 -2.78128,-0.603 0.51525,-2.25 -1.96116,-0.435 -2.12161,-0.248 -4.16301,-0.82 0.34588,-1.517 4.13091,-17.759"},"16021":{"name":"Boundary, ID","path":"m 203.65006,23.397143 14.71403,3.191 -2.37122,11.097 -11.10549,-2.395 0.87717,-3.849 0.82725,-3.849 -3.72085,-0.811 0.77911,-3.384"},"16057":{"name":"Latah, ID","path":"m 194.15985,65.005143 3.68876,2.933 4.75669,1.407 1.98612,0.424 -0.42611,1.969 -1.29436,5.963 -0.85221,0.731 -1.3015,-0.289 -2.39617,-0.57 -0.16759,0 -0.68997,0.257 -0.71672,0.442 -0.19255,0.249 0.009,0.08 -0.33697,0.579 -5.00629,-1.095 2.93995,-13.081"},"16069":{"name":"Nez Perce, ID","path":"m 191.2199,78.086143 5.00629,1.095 0.33697,-0.579 -0.009,-0.08 0.19255,-0.249 0.71672,-0.442 0.68997,-0.257 0.16759,0 2.39617,0.57 -0.35479,1.632 -0.24782,1.43 0.95562,0.03 0.36192,0.103 -0.16045,0.731 -0.0891,-0.06 -0.15154,-0.04 -0.39402,-0.07 -0.0891,0.01 0.025,0.313 0.0481,0.282 0.3851,1.262 -0.10519,0.69 -0.0785,0.195 -0.15332,0.192 -1.96829,-0.02 -3.48908,-0.772 -0.0945,0.483 0.007,0.159 -1.36568,6.775 -0.29061,0.112 -0.49742,0.387 -0.12836,0.136 -0.20147,0.371 -0.016,0.272 0.0499,0.33 0.0945,0.136 0.082,0.217 -0.0499,0.234 -0.31378,0.392 -0.11946,0.1 -0.65074,0.168 -0.17651,-0.06 -1.13212,-3.528 -0.0981,-1.59 0.76485,-2.108 -0.0981,-1.975 -0.15333,-1.269 -0.0232,-0.08 -0.50455,-2.034 0.33696,-1.004 0.58657,-2.595"},"16061":{"name":"Lewis, ID","path":"m 203.9068,84.877143 0.97344,2.908 -2.85259,1.631 -2.96491,-1.622 -0.37797,0.06 -0.057,0.06 -3.19847,3.014 -1.67055,0.546 1.36568,-6.775 -0.007,-0.159 0.0945,-0.483 3.48908,0.772 1.96829,0.02 0.15332,-0.192 0.0785,-0.195 0.10519,-0.69 -0.3851,-1.262 -0.0481,-0.282 -0.025,-0.313 0.0891,-0.01 0.39402,0.07 0.15154,0.04 0.0891,0.06 0.59369,0.772 1.83279,1.02 0.16046,0.297 0.041,0.305 0.007,0.419"},"16003":{"name":"Adams, ID","path":"m 190.31063,107.85114 5.52868,1.206 0.0802,0.417 0.16046,1.406 -0.0232,1.052 -0.22642,0.532 -0.11054,0.07 -0.0571,0.225 2.54059,0.579 0.66679,1.189 -0.90035,2.177 -0.34766,0.412 -0.14441,0 -0.23177,-0.139 -0.77199,1.175 -0.22464,0.497 -0.64183,1.785 -0.55626,4.475 0,2.089 -2.55485,0.74 -1.478,-0.322 -0.54556,-0.289 -1.39242,-1.238 0.69944,-2.692 -1.30918,-0.362 -0.0891,-1.164 0.86112,-3.954 -4.24323,-0.981 0.48316,-0.513 0.37619,-0.403 0.53842,-0.931 0.016,-0.02 -0.0232,-0.185 -0.0963,-0.225 -0.0571,-0.225 -0.016,-0.465 0.40114,-0.836 0.50812,-0.467 0.77912,-0.706 2.40152,-3.914"},"16087":{"name":"Washington, ID","path":"m 184.99946,116.73714 4.24323,0.981 -0.86112,3.954 0.0891,1.164 1.30918,0.362 -0.69944,2.692 1.39242,1.238 0.54556,0.289 1.478,0.322 -0.95562,1.632 -0.36192,0.923 -0.30487,1.503 -0.54556,1.808 -0.21038,0.529 -1.50296,-0.337 -7.15822,-1.606 0.0232,-0.04 0.0232,-0.05 0.0321,-0.06 0.009,0 0,-0.02 0.0232,-0.234 -0.0553,-0.176 -0.0161,-0.03 -0.85221,-1.686 -0.16759,-0.105 -0.63648,-0.225 -0.0874,0 -0.15333,0.07 -2.00038,-0.811 -0.24069,-0.408 -0.0321,-0.33 0.0232,-0.194 0.041,-0.122 0.55448,-3.783 0.20146,-0.403 3.55861,-4.892 0.37797,-0.339 0.11232,-0.05 0.39401,-0.09 1.53505,-0.523 0.87539,-0.941"},"16075":{"name":"Payette, ID","path":"m 181.4569,132.19114 7.15822,1.606 -0.43502,1.937 -2.34447,1.494 -2.26603,-0.521 -0.86826,3.928 -3.94549,-2.61 0.48138,-0.804 0.78089,-1.478 0.62579,-2.555 0.81299,-0.997"},"16015":{"name":"Boise, ID","path":"m 208.15894,133.51614 0.85935,0.964 -0.20923,3.04129 2.84431,0.96871 0.0731,0.378 0.0731,3.794 -0.066,0.191 -0.46533,0.467 -1.27832,-0.04 -1.57033,-1.19583 0.0646,-2.50376 -1.01525,-0.59323 -0.88607,3.55482 -3.76008,0.417 -0.33874,0.167 -1.81496,1.698 -0.78803,0.946 -0.72385,0.997 -0.46533,0.435 -0.40114,0.186 -2.27494,0.859 -1.29972,0.05 -0.92531,-0.114 -0.19255,-0.09 -0.10519,0.106 -1.80069,-2.869 -2.01643,-3.175 0.12124,0.03 0.0321,-0.113 1.67055,-7.641 0.98057,0.209 1.57428,-0.122 0.60439,-1.42 9.64889,2.073 0.77912,-0.03 0.89322,-0.298 2.17866,-1.333"},"16045":{"name":"Gem, ID","path":"m 195.05128,126.99914 0.0802,0.02 -0.85043,3.93 -0.9574,-0.2 -0.8433,3.896 -0.98057,-0.209 -1.67055,7.642 -0.0321,0.112 -0.12124,-0.03 -3.7369,-0.819 -3.23769,-0.7 0.86826,-3.928 2.26603,0.521 2.34447,-1.494 0.43502,-1.937 1.50296,0.337 0.21038,-0.529 0.54556,-1.808 0.30487,-1.503 0.36192,-0.923 0.95562,-1.632 2.55485,-0.74"},"16027":{"name":"Canyon, ID","path":"m 178.75585,138.02514 3.94549,2.61 3.23769,0.7 -0.85934,3.905 0.23356,0.972 -0.16938,1.8 -0.28882,1.311 -0.69889,1.173 -0.75593,2.499 -1.0519,-0.675 -2.37121,-4.413 -0.0321,-0.119 0.14441,-0.878 0.025,-0.41 -0.12124,-0.713 -0.1034,-0.346 -0.40115,-0.499 -1.96294,-2.266 -0.54556,-0.344 1.77574,-4.307"},"16001":{"name":"Ada, ID","path":"m 185.93903,141.33514 3.7369,0.819 2.01643,3.175 1.80069,2.869 0.10519,-0.105 -1.07685,5.118 -0.37797,1.776 -0.90035,3.883 -4.70856,-0.99 -0.25673,-0.233 -0.38688,-0.458 -0.52238,-0.828 -0.3851,-0.698 -0.007,-0.06 0.12837,-0.458 0.2086,-0.314 0.0321,-0.217 -0.31379,-1.116 -0.20146,-0.266 -0.11945,-0.09 -1.31041,-0.143 0.75593,-2.499 0.69889,-1.173 0.28882,-1.311 0.16938,-1.8 -0.23356,-0.972 0.85934,-3.905"},"16039":{"name":"Elmore, ID","path":"m 211.26827,143.32014 0.26565,0.33 -0.65967,1.734 -0.21751,0.138 -0.51346,0.738 -0.22464,0.419 -1.73652,4.145 -1.13391,5.281 -0.78624,3.888 -0.51347,6.645 -0.66857,3.255 -6.8694,-1.399 0.39401,-1.888 0.26565,-0.569 0.31913,-1.191 -5.73549,-1.622 -3.36784,-0.708 -0.20146,-0.09 -1.05903,-1.109 -1.52792,-1.769 -0.71493,-1.446 -0.0481,-0.225 4.70856,0.99 0.90035,-3.883 0.37797,-1.776 1.07685,-5.119 0.19255,0.09 0.92531,0.114 1.29972,-0.05 2.27494,-0.859 0.40114,-0.186 0.46533,-0.435 0.72385,-0.997 0.78803,-0.946 1.81496,-1.698 0.33874,-0.167 3.76008,-0.417 0.88607,-3.55482 1.01525,0.59323 -0.0646,2.50376 1.57033,1.19583 1.27832,0.04"},"16073":{"name":"Owyhee, ID","path":"m 176.98011,142.33214 0.54556,0.344 1.96294,2.266 0.40115,0.499 0.1034,0.346 0.12124,0.713 -0.025,0.41 -0.14441,0.878 0.0321,0.119 2.37121,4.413 1.0519,0.675 1.31041,0.143 0.11945,0.09 0.20146,0.266 0.31379,1.116 -0.0321,0.217 -0.2086,0.314 -0.12837,0.458 0.007,0.06 0.3851,0.699 0.52238,0.827 0.38688,0.458 0.25673,0.234 0.0481,0.224 0.71493,1.446 1.52792,1.769 1.05903,1.109 0.20146,0.09 3.36784,0.708 5.73549,1.622 -0.31913,1.191 -0.26565,0.569 -0.39401,1.888 6.8694,1.4 -3.55861,17.502 -24.5002,-5.201 -1.92907,-0.442 -6.49321,-1.487 -0.12836,-0.05 8.50963,-37.886"},"16025":{"name":"Camas, ID","path":"m 210.87425,145.38414 1.67947,1.173 2.59586,0.756 0.11945,0.154 0.0481,0.167 0.041,0.337 0.0161,1.045 -0.12837,1.785 -0.0802,1.686 0.98368,3.70551 -0.48355,2.57687 1.96736,0.30062 0.53665,0.305 -0.0321,1.88 -0.2086,1.043 -3.60675,-0.681 -8.06035,-1.624 0.78624,-3.888 1.13391,-5.281 1.73652,-4.145 0.22464,-0.419 0.51346,-0.738 0.21751,-0.138"},"16047":{"name":"Gooding, ID","path":"m 206.26197,159.99314 8.06035,1.624 -1.56001,7.875 -1.2694,4.491 -2.20184,-0.98 -1.14104,-1.054 -0.88431,-1.654 0.45107,-1.937 -0.009,-0.112 -0.67571,-1.416 -0.58478,-0.192 -0.45998,-0.1 -0.23891,0.1 0.51347,-6.645"},"16053":{"name":"Jerome, ID","path":"m 212.76231,169.49214 3.77612,0.746 -0.11945,0.611 0.26565,0.394 4.782,1.48386 -0.0895,0.46114 1.92728,0.378 -0.98058,5.213 -1.18026,-0.01 -2.10557,0.216 -0.77911,-0.786 -0.0891,-0.186 -0.79516,-0.69 -2.644,-1.432 -1.02871,-0.385 -2.00038,-1.301 -0.2086,-0.218 1.2694,-4.491"},"16083":{"name":"Twin Falls, ID","path":"m 205.7485,166.63814 0.23891,-0.1 0.45998,0.1 0.58478,0.192 0.67571,1.416 0.009,0.112 -0.45107,1.937 0.88431,1.654 1.14104,1.054 2.20184,0.98 0.2086,0.218 2.00038,1.301 1.02871,0.385 2.644,1.432 0.79516,0.69 0.0891,0.186 0.77911,0.786 2.10557,-0.216 -0.64361,0.1 -0.86648,1.68 -3.68875,-0.209 -0.24961,1.343 -0.0642,0.624 -1.49404,7.643 -3.61566,-0.715 -4.40369,-0.997 -2.51563,-0.506 -2.08061,-0.328 3.55861,-17.503 0.66857,-3.255"},"16031":{"name":"Cassia, ID","path":"m 222.32384,178.77914 3.56931,1.07 0.21573,0.03 0.11232,-0.03 0.69175,-0.218 0.23177,-0.201 0.26565,-0.385 1.23018,-1.59 0.12837,-0.106 0.26565,-0.153 0.68997,-0.112 0.79694,0.08 1.01089,0.07 0.86825,0.266 0.44216,0.731 0.2496,0.353 0.85043,0.467 0.0981,0 0.19255,-0.161 0.68283,-0.08 3.04515,1.639 -1.03585,5.929 -1.35855,7.497 -6.7339,-1.139 -0.49029,-0.08 -5.58395,-0.95 -0.53129,-0.09 -1.42986,-0.249 -0.19968,-0.04 -1.3425,-0.32 -1.11786,-0.282 -4.00076,-0.788 1.49404,-7.643 0.0642,-0.624 0.24961,-1.343 3.68875,0.209 0.86648,-1.68 0.64361,-0.1 1.18026,0.01"},"16071":{"name":"Oneida, ID","path":"m 247.3072,184.10814 1.4156,1.496 0,1.662 0.65788,0.772 1.5511,1.59 0.41006,0.284 0.33696,0.456 0.41006,0.768 -0.26565,1.571 -0.65075,-0.118 -0.67392,3.942 -0.91818,-0.146 -1.2284,-0.317 -0.009,0 -3.55148,-0.614 -4.33059,-0.748 -4.89398,-0.828 1.35855,-7.497 5.78541,1.006 0.35479,-1.986 2.59408,0.46 0.34588,-1.986 1.30149,0.233"},"16077":{"name":"Power, ID","path":"m 240.03487,168.54414 -1.02871,5.639 3.17529,0.563 1.44591,-1.815 0.68284,0.739 1.96828,-0.771 0.21751,0.04 0.4582,0.513 0.3851,1.102 1.20522,6.404 -0.0802,0.492 -0.32091,1.189 -0.83617,1.469 -1.30149,-0.233 -0.34588,1.986 -2.59408,-0.46 -0.35479,1.986 -5.78541,-1.006 1.03585,-5.929 -3.04515,-1.639 -0.68283,0.08 0.57051,-3.118 0.24961,-1.968 1.10003,-5.971 3.8813,0.708"},"16005":{"name":"Bannock, ID","path":"m 255.26237,173.30114 -1.35855,1.59 -0.0481,0.09 -0.33696,0.795 -0.51347,2.557 -0.041,0.649 0.025,0.249 0.312,1.304 0.13728,0.1 0.19968,-0.02 0.31557,-0.162 0.0874,-0.129 0.13728,-0.08 1.46195,0.248 0.44929,2.107 0.0321,0.344 0.0321,3.015 -0.007,1.018 -0.11232,0.662 -0.32983,-0.05 -0.64184,3.632 -1.46373,-0.251 -0.71493,-0.571 -1.54218,-0.487 -0.41006,-0.283 -1.5511,-1.59 -0.65788,-0.772 0,-1.662 -1.4156,-1.496 0.83617,-1.469 0.32091,-1.189 0.0802,-0.492 -1.20522,-6.404 -0.3851,-1.102 -0.4582,-0.513 -0.21751,-0.04 -1.96828,0.771 -0.68284,-0.739 0,-0.153 0.041,-0.112 0.25674,-0.555 1.34071,-0.474 0.19255,-0.03 9.80401,1.688"},"16041":{"name":"Franklin, ID","path":"m 256.03435,187.63714 4.61941,0.788 -0.1765,2.28 -0.73098,1.546 -0.33696,0.816 -0.0571,0.41 0.0963,2.177 0.0571,0.13 1.10894,2.384 -10.116,-1.637 0.67392,-3.942 0.65075,0.118 0.26565,-1.571 -0.41006,-0.768 -0.33696,-0.456 1.54218,0.486 0.71493,0.571 1.46373,0.251 0.64184,-3.632 0.32983,0.05"},"16007":{"name":"Bear Lake, ID","path":"m 270.22599,187.69414 -1.87379,11.679 -7.73766,-1.205 -1.10894,-2.384 -0.0571,-0.13 -0.0963,-2.177 0.0571,-0.41 0.33696,-0.816 0.73098,-1.546 0.1765,-2.28 -0.0553,-3.079 0.0321,-0.548 0.59369,-0.385 6.01897,0.958 0.2086,0.472 0.009,0.153 -0.15332,0.573 -0.12124,0.319 -0.19968,0.426 1.36568,0.668 1.87379,-0.288"},"16029":{"name":"Caribou, ID","path":"m 263.08025,174.66614 9.03202,1.471 -1.88628,11.557 -1.87379,0.288 -1.36568,-0.668 0.19968,-0.426 0.12124,-0.319 0.15332,-0.573 -0.009,-0.153 -0.2086,-0.472 -6.01897,-0.958 -0.59369,0.385 -0.0321,0.548 0.0553,3.079 -4.61941,-0.788 0.11232,-0.662 0.007,-1.018 -0.0321,-3.015 -0.0321,-0.344 -0.44929,-2.107 -1.46195,-0.248 -0.13728,0.08 -0.0874,0.129 -0.31557,0.162 -0.19968,0.02 -0.13728,-0.1 -0.312,-1.304 -0.025,-0.249 0.041,-0.649 0.51347,-2.557 0.33696,-0.795 0.0481,-0.09 1.35855,-1.59 7.81788,1.365"},"16067":{"name":"Minidoka, ID","path":"m 228.77783,164.37214 4.94212,0.932 -1.46374,7.964 -0.97879,-0.185 -0.75594,4.09 -0.79694,-0.08 -0.68997,0.112 -0.26565,0.153 -0.12837,0.106 -1.23018,1.59 -0.26565,0.385 -0.23177,0.201 -0.69175,0.218 -0.11232,0.03 -0.21573,-0.03 -3.56931,-1.07 0.98058,-5.213 2.78128,0.546 1.20522,-1.783 1.48691,-7.957"},"16063":{"name":"Lincoln, ID","path":"m 214.32232,161.61714 3.60675,0.681 10.84876,2.074 -1.48691,7.957 -1.20522,1.783 -2.78128,-0.546 -1.92728,-0.378 0.0895,-0.46114 -4.782,-1.48386 -0.26565,-0.394 0.11945,-0.611 -3.77612,-0.746 1.56001,-7.875"},"16019":{"name":"Bonneville, ID","path":"m 264.76863,160.74914 3.69589,0.715 2.55663,0.426 0.23178,0.394 0.016,0.232 1.35855,1.736 1.21235,0.917 -0.59813,3.95907 -1.12947,7.00893 -9.03202,-1.471 0.69889,-4.09 0.3227,-1.863 -3.8799,-1.00117 0.33555,-1.57083 -4.64333,-0.8856 0.25569,-1.2274 -6.84622,-1.198 0.80407,-4.58 14.64093,2.499"},"16011":{"name":"Bingham, ID","path":"m 250.1277,158.25014 -0.80407,4.58 6.84622,1.198 -0.25569,1.2274 4.64333,0.8856 -0.33555,1.57083 3.8799,1.00117 -0.3227,1.863 -0.69889,4.09 -7.81788,-1.365 -9.80401,-1.689 -0.19255,0.03 -1.34071,0.474 -0.25674,0.555 -0.041,0.112 0,0.154 -1.44591,1.814 -3.17529,-0.563 1.02871,-5.639 0.72385,-3.946 0.98058,0.177 0.49742,-1.849 0.34588,-1.865 1.9772,0.364 0.45444,-2.07278 1.83476,0.34278 0.36193,-1.872 2.91677,0.427"},"16013":{"name":"Blaine, ID","path":"m 211.53392,143.65014 0.77911,-0.557 0.19968,-0.103 0.61153,-0.225 0.24068,-0.04 0.97345,0.193 1.85418,1.906 1.35142,1.51 1.85597,-0.136 2.38726,0.699 0.62579,0.466 4.31633,4.701 1.28366,1.583 0.22643,0.305 0.45819,0.891 0.15868,0.362 0.13728,0.546 0.89322,-0.273 0.33696,0 0.42611,0.2 0.0802,0.144 0.6347,2.042 0.12123,0.941 -0.36192,0.248 -0.32983,1.752 4.48392,0.844 -0.34588,1.881 5.82642,1.06 -0.72385,3.946 -3.8813,-0.708 -1.10003,5.971 -0.24961,1.968 -0.57051,3.118 -0.19255,0.161 -0.0981,0 -0.85043,-0.467 -0.2496,-0.353 -0.44216,-0.731 -0.86825,-0.266 -1.01089,-0.07 0.75594,-4.09 0.97879,0.186 1.46374,-7.965 -4.94212,-0.932 -10.84876,-2.073 0.2086,-1.043 0.0321,-1.881 -0.53665,-0.305 -1.96736,-0.30062 0.48355,-2.57687 -0.98368,-3.70551 0.0802,-1.686 0.12837,-1.785 -0.0161,-1.045 -0.041,-0.337 -0.0481,-0.167 -0.11945,-0.154 -2.59586,-0.755 -1.67947,-1.174 0.65967,-1.734"},"16085":{"name":"Valley, ID","path":"m 198.2034,113.33914 0.0143,-0.128 0.25673,-0.5 0.34588,-0.433 2.49245,-0.337 20.38534,4.17 -0.31379,0.154 -0.21751,0.224 -0.26386,0.642 -0.2496,1.238 -0.16938,1.053 -0.55269,2.115 -0.94135,1.824 -0.93244,1.148 -2.52276,1.478 -0.16938,0.03 -0.68997,-0.241 -0.52238,-0.715 -0.4992,-0.435 -0.27278,-0.09 -0.78625,0.369 -2.9346,2.499 -0.55447,0.651 -0.0143,0.635 0.0392,0.387 0.0891,0.424 0.3851,0.128 0.0963,-0.06 0.0481,0.02 0.10519,0.218 0.0553,0.722 -0.28882,1.301 -0.0963,0.17 -0.36192,0.579 -0.29774,0.337 -0.51347,0.474 -0.19255,0.12 -2.17866,1.333 -0.89322,0.298 -0.77912,0.03 -9.64889,-2.073 -0.60439,1.421 -1.57428,0.121 0.8433,-3.896 0.9574,0.2 0.85043,-3.93 -0.0802,-0.02 0,-2.089 0.55626,-4.475 0.64183,-1.785 0.22464,-0.497 0.77199,-1.175 0.23177,0.139 0.14441,0 0.34766,-0.412 0.90035,-2.177 -0.66679,-1.189"},"16079":{"name":"Shoshone, ID","path":"m 208.90597,50.413143 0.44928,-2.539 0.0713,-0.323 0.9164,-0.779 0.64361,-0.06 0.17651,0.112 1.39955,1.109 0.79516,1.148 0.14441,0.298 0.47425,0.843 3.09328,6.301 0.0232,0.08 0.025,0.06 0.007,0.03 0,0.09 -0.007,1.287 -0.52238,1.325 -0.44215,1.005 -0.29774,1.849 0,0.02 0.0161,0.569 2.46036,3.4 0.33696,0.289 0.26565,0.233 0.8433,0.41 1.22126,0.489 0.26565,0.194 1.39777,3.149 1.30863,3.054 0.73989,1.381 0.40114,0.74 -20.94694,-4.428 0.42611,-1.969 1.90232,-8.741 2.41223,-10.615"},"16035":{"name":"Clearwater, ID","path":"m 204.16531,71.738143 20.94694,4.428 0.30666,2.323 0,0.01 0.0713,0.194 2.31595,3.093 0.22464,0.06 0.10341,0.03 0.68997,0 0.86826,2.176 -10.00369,0.177 -6.86226,0.128 -0.0321,0.02 -2.18579,2.589 -0.48138,0.94 -0.27278,0.305 -0.32983,0.29 -0.2496,-0.03 -0.32092,-0.103 -2.35339,-1.109 -0.0891,-0.07 -0.41006,-0.578 -0.28169,-0.619 -1.53505,-0.955 -0.37797,-0.17 -0.007,-0.418 -0.041,-0.305 -0.16046,-0.298 -1.83279,-1.02 -0.59369,-0.772 0.16045,-0.731 -0.36192,-0.103 -0.95562,-0.03 0.24782,-1.43 0.35479,-1.631 1.3015,0.288 0.85221,-0.731 1.29436,-5.963"},"16049":{"name":"Idaho, ID","path":"m 233.63972,84.605143 0.0874,0.09 0.0571,0.266 -0.0963,0.506 -0.55626,1.574 -0.93957,2.163 -1.40669,3.125 -4.48391,11.185997 -0.56161,3.077 -0.28169,1.558 -0.0161,0.08 0.0481,0.06 -0.70602,0.531 -1.5921,0.995 -0.81834,-0.433 -0.22642,-0.225 -0.1355,-0.257 -0.16046,-0.169 -0.22642,-0.03 -0.10341,0.07 -0.13015,0.259 -0.0963,0.465 -0.11232,0.82 0.009,0.09 0.57943,0.82 0.82726,1.117 0.69888,1.486 -1.59923,2.291 -20.38534,-4.17 -2.49245,0.337 -0.34588,0.434 -0.25673,0.499 -0.0143,0.128 -2.54059,-0.579 0.0571,-0.225 0.11054,-0.07 0.22642,-0.532 0.0232,-1.051 -0.16046,-1.407 -0.0802,-0.417 -5.52868,-1.206 0.54556,-1.15 2.78128,-3.567 1.54218,-1.576 0.38688,-0.44 0.0642,-0.291 -0.55448,-2.907997 -0.10519,-0.442 0,0 -0.312,-0.396 -0.27456,-0.353 -0.007,0 -0.58657,-0.257 -1.39955,-1.287 -0.73098,-0.674 -0.0481,-0.09 -0.0713,-0.135 0.17651,0.06 0.65074,-0.168 0.11946,-0.1 0.31378,-0.392 0.0499,-0.234 -0.082,-0.217 -0.0945,-0.136 -0.0499,-0.329 0.016,-0.273 0.20147,-0.371 0.12836,-0.135 0.49742,-0.387 0.29061,-0.113 1.67055,-0.545 3.19847,-3.015 0.057,-0.06 0.37797,-0.06 2.96491,1.623 2.85259,-1.632 -0.97344,-2.907 0.37797,0.169 1.53505,0.956 0.28169,0.618 0.41006,0.578 0.0891,0.07 2.35339,1.109 0.32092,0.103 0.2496,0.03 0.32983,-0.29 0.27278,-0.305 0.48138,-0.94 2.18579,-2.588 0.0321,-0.02 6.86226,-0.128 10.00369,-0.176 0.0321,0.03 1.71155,0.36 0.36192,-0.1 0.24961,-0.1 0.41006,-0.08 0.82725,0.112 0.28169,0.234 0.0731,0.07"},"16037":{"name":"Custer, ID","path":"m 208.15894,133.51614 0.19255,-0.12 0.51347,-0.474 0.29774,-0.337 0.36192,-0.579 0.0963,-0.17 0.28882,-1.301 -0.0553,-0.722 -0.10519,-0.218 -0.0481,-0.02 -0.0963,0.06 -0.3851,-0.128 -0.0891,-0.424 -0.0392,-0.387 0.0143,-0.635 0.55447,-0.651 2.9346,-2.499 0.78625,-0.369 0.27278,0.09 0.4992,0.435 0.52238,0.715 0.68997,0.241 0.16938,-0.03 2.52276,-1.478 -0.40115,1.349 0.0232,0.298 0.12836,0.369 2.63687,3.432 0.47424,0.562 0.0963,0.03 1.45482,-0.145 0.49742,-0.329 1.24623,-1.061 0.0642,-0.09 0.37619,-0.788 0.37083,-0.916 0.48138,-0.715 0.68462,-0.538 1.64737,-1.198 0.312,0.522 -0.0874,0.813 0.0392,1.952 4.52492,6.629 2.29812,1.455 1.70264,0.916 0.2086,0.08 0.57051,0.161 0.0981,-0.02 0.24069,-0.179 0.25673,-0.312 0.16046,-0.121 0.2086,0.04 0.0731,0.112 0.11232,0.296 0.82726,2.372 0.22464,0.7 0.0571,0.979 -0.0891,0.972 -1.55823,-0.289 -1.39955,3.817 -0.12837,0.642 -0.27991,2.676 -0.40293,2.41 -1.70264,1.721 -2.75632,0.907 -1.5921,0.852 -0.70602,0.747 -0.0571,0.129 -0.13728,-0.546 -0.15868,-0.362 -0.45819,-0.891 -0.22643,-0.305 -1.28366,-1.583 -4.31633,-4.702 -0.62579,-0.465 -2.38726,-0.699 -1.85597,0.136 -1.35142,-1.51 -1.85418,-1.906 -0.97345,-0.193 -0.24068,0.04 -0.61153,0.225 -0.19968,0.103 -0.77911,0.557 -0.26565,-0.33 0.46533,-0.467 0.066,-0.191 -0.0731,-3.794 -0.0731,-0.378 -2.84431,-0.96871 0.20923,-3.04129 -0.85935,-0.964"},"16059":{"name":"Lemhi, ID","path":"m 235.567,107.17614 0.32983,0.346 1.55823,2.201 0.0891,0.289 0.18364,1.824 -0.0143,0.683 -0.2086,0.378 -0.041,1.366 0.0232,1.8 2.51563,9.353 2.66718,3.712 0.54734,-0.135 0.57052,0.449 0.68283,0.763 0.30666,0.474 0.35122,1.102 0.46712,2 0,0.177 -0.0963,0.176 -0.0642,0.05 -0.0232,2.868 0.19077,1.086 0.44393,0.642 1.30863,1.464 0.41719,0.151 0.32983,-0.184 0.16046,-0.249 0.009,-0.06 0.0963,0.467 -0.59548,3.318 -1.95937,-0.344 -0.96454,-0.266 -5.27194,-0.941 0.0891,-0.972 -0.0571,-0.979 -0.22464,-0.7 -0.82726,-2.372 -0.11232,-0.296 -0.0731,-0.112 -0.2086,-0.04 -0.16046,0.121 -0.25673,0.312 -0.24069,0.179 -0.0981,0.02 -0.57051,-0.161 -0.2086,-0.08 -1.70264,-0.916 -2.29812,-1.455 -4.52492,-6.629 -0.0392,-1.952 0.0874,-0.813 -0.312,-0.522 -1.64737,1.198 -0.68462,0.538 -0.48138,0.715 -0.37083,0.916 -0.37619,0.788 -0.0642,0.09 -1.24623,1.061 -0.49742,0.329 -1.45482,0.145 -0.0963,-0.03 -0.47424,-0.562 -2.63687,-3.432 -0.12836,-0.369 -0.0232,-0.298 0.40115,-1.349 0.93244,-1.148 0.94135,-1.824 0.55269,-2.115 0.16938,-1.053 0.2496,-1.238 0.26386,-0.642 0.21751,-0.224 0.31379,-0.154 1.59923,-2.291 -0.69888,-1.486 -0.82726,-1.117 -0.57943,-0.82 -0.009,-0.09 0.11232,-0.82 0.0963,-0.466 0.13015,-0.258 0.10341,-0.07 0.22642,0.03 0.16046,0.169 0.1355,0.257 0.22642,0.225 0.81834,0.433 1.5921,-0.995 0.70602,-0.531 0.7078,0.1 0.6347,0.16 0.20147,0.09 1.18026,1.865 0.14441,0.562 0,0 0.65966,0.103 3.15033,-1.446 1.98434,-1.736 1.41381,-0.811"},"16023":{"name":"Butte, ID","path":"m 244.84862,143.07914 -1.05367,5.937 4.86188,0.884 -1.4459,7.923 -0.36193,1.872 -1.83476,-0.34278 -0.45444,2.07278 -1.9772,-0.364 -0.34588,1.865 -0.49742,1.849 -0.98058,-0.177 -5.82642,-1.06 0.34588,-1.881 -4.48392,-0.844 0.32983,-1.752 0.36192,-0.248 -0.12123,-0.941 -0.6347,-2.042 -0.0802,-0.144 -0.42611,-0.2 -0.33696,0 -0.89322,0.273 0.0571,-0.129 0.70602,-0.747 1.5921,-0.852 2.75632,-0.907 1.70264,-1.721 0.40293,-2.41 0.27991,-2.676 0.12837,-0.642 1.39955,-3.817 1.55823,0.289 5.27194,0.941"},"16051":{"name":"Jefferson, ID","path":"m 248.65683,149.90014 0.35479,-1.959 8.75746,1.542 -0.33696,1.96 2.91677,0.515 -0.16045,0.987 -0.60261,2.933 -0.17651,0.997 0.18364,0.169 0.35479,0.03 0.0285,-0.015 0.0285,-0.015 2.75081,2.69159 2.12534,0.36841 -0.11232,0.652 -14.64093,-2.499 -2.91677,-0.427 1.4459,-7.923"},"16065":{"name":"Madison, ID","path":"m 260.18844,152.94514 2.27494,0.387 2.14479,1.389 2.23394,0.371 0.17742,-0.81957 2.45053,0.43457 0.0312,-0.01 0.0312,-0.01 0.0321,-0.035 0.0321,-0.035 -1.13212,6.846 -3.69589,-0.715 0.11232,-0.652 -2.12534,-0.36841 -2.75081,-2.69159 -0.0285,0.015 -0.0285,0.015 -0.35479,-0.03 -0.18364,-0.169 0.17651,-0.997 0.60261,-2.932"},"16081":{"name":"Teton, ID","path":"m 275.55143,154.16714 -1.71156,11.002 -1.21235,-0.917 -1.35855,-1.736 -0.016,-0.232 -0.23178,-0.394 -2.55663,-0.426 1.13212,-6.846 5.95479,-0.451"},"17183":{"name":"Vermilion, IL","path":"m 670.36441,248.32714 0.59369,7.604 0.51347,6.115 -7.05482,0.69 -0.76485,-7.971 0.23356,-0.02 -0.40828,-4.01 -0.21751,-1.993 7.07799,-0.74 0.0267,0.328"},"17075":{"name":"Iroquois, IL","path":"m 658.88094,237.21614 10.38878,-1.191 1.06794,11.974 -7.07799,0.74 -3.16638,0.225 -1.21235,-11.748"},"17003":{"name":"Alexander, IL","path":"m 641.41951,323.66214 4.27354,-0.306 -0.0553,2.515 -0.0571,2.338 0.16937,0.362 0.14442,0.171 0.44393,0.2 1.18204,0.497 0.85756,1.927 -3.4962,-0.376 -1.21414,-0.989 -0.64183,-1.575 -1.11608,-2.089 -0.45998,-0.658 -0.0303,-2.017"},"17153":{"name":"Pulaski, IL","path":"m 645.69305,323.35614 3.69589,-0.145 0.0761,1.1715 2.06334,-0.6965 0.15333,1.768 -0.0981,0.03 -4.06316,3.953 -1.18204,-0.497 -0.44393,-0.2 -0.14442,-0.171 -0.16937,-0.362 0.0571,-2.338 0.0553,-2.515"},"17127":{"name":"Massac, IL","path":"m 651.52838,323.68614 3.89558,-1.092 4.30741,3.791 0.17829,2.145 -1.32468,-0.141 -6.90327,-2.935 -0.15333,-1.768"},"17069":{"name":"Hardin, IL","path":"m 661.00256,316.05314 4.4126,0.223 1.43521,1.487 0,0.371 -0.3441,0.392 -0.18363,0.04 -2.5085,0.531 -0.37797,0.08 -0.312,0.09 -0.1141,0.03 -0.0392,0 -0.43502,0.264 -0.0874,0.06 -0.016,0 -0.30666,0.283 -0.45641,0.608 -1.05368,-0.344 -0.27278,-4.081 0.65967,-0.05"},"17151":{"name":"Pope, IL","path":"m 660.34289,316.10114 0.27278,4.081 -0.11232,0.05 -0.312,0.143 -0.12837,0.1 -0.16224,0.114 -0.23355,0.303 -0.0945,0.227 -0.51525,2.264 0,0 -0.0107,0.153 0.15511,0.498 0.76307,0.916 0.24247,0.137 0.22464,0.216 0.51346,1.141 -0.26564,1.277 -0.21573,0.595 -0.41898,0.185 -0.13549,0.02 -0.17829,-2.145 -4.30741,-3.791 -0.42433,-6.059 5.34326,-0.434"},"17087":{"name":"Johnson, IL","path":"m 654.99963,316.53514 0.42433,6.059 -3.89558,1.092 -2.06334,0.6965 -0.0761,-1.1715 -0.39223,-6.163 6.00292,-0.513"},"17181":{"name":"Union, IL","path":"m 648.99671,317.04814 0.39223,6.163 -3.69589,0.145 -4.27354,0.306 0.65788,-0.176 0.2086,-0.107 0.016,-0.02 0.0178,-0.02 0.0143,-0.02 0.0731,-0.218 0.0713,-0.708 0.009,-0.03 -0.009,-0.02 -0.10341,-0.387 -0.009,-0.04 -0.007,-0.02 -0.28882,-0.651 -0.22464,-0.282 -0.47603,-0.467 -0.33696,-0.504 -0.51347,-0.958 -0.007,0 -0.1141,-0.46 -0.016,-0.209 0,-0.137 0.77964,-0.82848 5.80985,-0.28952 2.02534,-0.06"},"17059":{"name":"Gallatin, IL","path":"m 665.96785,308.89114 0.90748,2.035 -0.23356,0.875 -0.0874,0.234 -0.1355,0.247 -0.21751,0.236 -0.83616,0.608 -0.0143,0 -0.29061,0.547 -0.1462,0.248 -0.0232,0.05 -0.0963,0.256 -0.025,0.161 0.009,0.03 0.0945,0.52 0.0107,0.02 0.3851,1.045 0.1462,0.264 -4.4126,-0.223 -0.55448,-7.121 0,-0.02 5.51977,-0.02"},"17165":{"name":"Saline, IL","path":"m 660.44808,308.93214 0.55448,7.121 -0.65967,0.05 -5.34326,0.434 -0.44215,-6.109 -0.0713,-1.003 5.96191,-0.491"},"17199":{"name":"Williamson, IL","path":"m 654.55748,310.42614 0.44215,6.109 -6.00292,0.513 -2.02534,0.06 -0.39402,-6.051 7.98013,-0.626"},"17077":{"name":"Jackson, IL","path":"m 638.4546,309.45514 7.49697,-0.41 0.62578,2.007 0.39402,6.051 -5.80985,0.28952 -0.77964,0.82848 -3.11645,-5.16 1.18917,-3.606"},"17133":{"name":"Monroe, IL","path":"m 625.66251,297.15314 2.23215,2.032 1.6659,2.77304 2.53633,0.65596 0.49207,1.054 -2.45323,0.107 0.13015,2.025 -2.94352,1.269 -0.91283,-0.683 -1.51187,-1.47 -0.0464,-0.05 -0.0571,-0.08 -0.32983,-0.451 -0.2086,-0.515 -0.24068,-1.034 -0.0339,-0.965 0.016,-0.233 0.0339,-0.1 0.26208,-0.892 0.0802,-0.16 0.0499,-0.06 1.2391,-3.222"},"17157":{"name":"Randolph, IL","path":"m 638.07841,303.34814 0.37619,6.107 -1.18917,3.606 -4.85476,-1.347 -5.08831,-4.645 2.94352,-1.269 -0.13015,-2.025 2.45323,-0.107 3.51047,-0.191 1.97898,-0.129"},"17145":{"name":"Perry, IL","path":"m 638.07841,303.34814 7.97656,-0.411 0.17977,2.009 0.18355,2.59139 -0.46672,1.50761 -7.49697,0.41 -0.37619,-6.107"},"17055":{"name":"Franklin, IL","path":"m 654.13137,304.36814 0.42611,6.058 -7.98013,0.626 -0.62578,-2.007 0.46672,-1.50761 -0.18355,-2.59139 7.89663,-0.578"},"17065":{"name":"Hamilton, IL","path":"m 659.87578,300.89714 0.5723,8.019 0,0.02 -5.96191,0.491 -0.3548,-5.055 -0.19433,-3.038 5.93874,-0.433"},"17193":{"name":"White, IL","path":"m 666.65069,300.23014 0.66679,0.747 -0.10341,2.411 -0.25673,5.325 -0.0481,0.1 -0.0107,0.02 -0.0392,0.03 -0.0303,0 -0.86112,0.03 -5.51977,0.02 -0.5723,-8.019 3.92232,-0.337 2.85259,-0.33"},"17081":{"name":"Jefferson, IL","path":"m 653.60899,296.28514 0.32805,5.045 0.19433,3.038 -7.89663,0.578 -0.17977,-2.009 -0.37796,-6.043 7.93198,-0.609"},"17189":{"name":"Washington, IL","path":"m 645.63778,296.22014 0.0392,0.674 0.37796,6.043 -7.97656,0.411 -1.97898,0.129 -0.32092,-4.605 0.60974,-0.612 0.9164,-0.763 0.72384,-0.273 5.3504,-0.925 2.25889,-0.08"},"17027":{"name":"Clinton, IL","path":"m 643.27548,290.83414 2.06456,-0.01 0.29774,5.4 -2.25889,0.08 -5.3504,0.925 -0.72384,0.273 -0.9164,0.763 -0.60974,0.612 -0.41006,-5.472 1.80783,-2.17 6.0992,-0.396"},"17163":{"name":"St. Clair, IL","path":"m 626.92121,293.81714 8.44724,-0.417 0.41006,5.472 0.32092,4.605 -3.51047,0.191 -0.49207,-1.054 -2.53633,-0.65596 -1.6659,-2.77304 -2.23215,-2.032 0.0802,-0.284 1.17847,-3.052"},"17119":{"name":"Madison, IL","path":"m 636.03524,285.36514 0.16938,1.863 0.28169,1.003 0.5616,1.407 0.12837,1.592 -1.80783,2.17 -8.44724,0.417 -0.36727,-1.85 1.29437,-1.58 0.0392,-0.218 0.0642,-0.531 -0.016,-0.135 -0.0731,-0.129 -1.74365,-1.053 -0.33874,-0.2 -0.44929,-0.216 -0.45819,-0.139 2.19471,-1.849 7.92307,-0.479 1.04476,-0.07"},"17005":{"name":"Bond, IL","path":"m 642.87255,284.22414 0.40293,6.61 -6.0992,0.396 -0.12837,-1.592 -0.5616,-1.407 -0.28169,-1.003 -0.16938,-1.863 0.77529,-0.0418 -0.007,-0.83458 6.0687,-0.26459"},"17121":{"name":"Marion, IL","path":"m 645.34004,290.82014 -0.13728,-2.032 2.45323,-0.154 5.39853,-0.474 0.33875,5.087 0.21572,3.038 -7.93198,0.609 -0.0392,-0.674 -0.29774,-5.4"},"17191":{"name":"Wayne, IL","path":"m 661.30743,292.77214 1.95224,0.557 0.53843,7.231 -3.92232,0.337 -5.93874,0.433 -0.32805,-5.045 -0.21572,-3.038 7.91416,-0.475"},"17185":{"name":"Wabash, IL","path":"m 667.43693,292.93514 4.64616,-0.348 -1.27832,3.68 -3.46233,4.598 -0.025,0.112 -0.66679,-0.747 0.0321,-7.231 0.75415,-0.06"},"17047":{"name":"Edwards, IL","path":"m 666.68278,292.99914 -0.0321,7.231 -2.85259,0.33 -0.53843,-7.231 3.42311,-0.33"},"17101":{"name":"Lawrence, IL","path":"m 673.61636,285.83714 0.0731,0 0.0392,0.06 0.68462,1.471 -0.007,0.562 -0.25138,1.462 -0.17651,0.322 -0.14263,0.12 -1.40668,1.799 -0.34588,0.941 -4.64616,0.348 -0.47424,-6.47 6.65367,-0.628"},"17159":{"name":"Richland, IL","path":"m 666.96269,286.46514 0.47424,6.47 -0.75415,0.06 -3.42311,0.33 -1.95224,-0.557 -0.72385,-2.018 -0.0499,-0.344 -0.005,-0.651 0.46711,-0.02 -0.24425,-2.692 5.54473,-0.522 0.66679,-0.06"},"17025":{"name":"Clay, IL","path":"m 652.92615,286.11214 5.89061,-0.378 0.11756,1.487 1.81685,-0.17 0.24425,2.692 -0.46711,0.02 0.005,0.651 0.0499,0.344 0.72385,2.018 -7.91416,0.475 -0.33875,-5.087 -0.12837,-2.048"},"17079":{"name":"Jasper, IL","path":"m 664.56116,279.14414 1.01267,-0.11 0.72207,7.495 -7.36165,0.694 -0.59174,-7.499 6.21865,-0.58"},"17033":{"name":"Crawford, IL","path":"m 665.57383,279.03414 5.70519,-0.08 0.36192,1.235 0.83617,0.983 1.27653,2.28 -0.0481,0.733 -0.12836,0.363 -0.10519,0.145 0.14441,1.146 -6.65367,0.628 -0.66679,0.06 -0.72207,-7.495"},"17023":{"name":"Clark, IL","path":"m 664.80185,271.97714 4.7567,-0.554 0.0107,0.247 2.76344,-0.256 -0.82012,5.143 -0.23355,2.395 -5.70519,0.08 -1.01267,0.11 -0.47424,-4.724 -0.30721,-2.35699 1.02214,-0.086"},"17035":{"name":"Cumberland, IL","path":"m 664.08692,274.42014 0.47424,4.724 -8.16009,0.759 -0.3745,-4.719 8.06035,-0.764"},"17049":{"name":"Effingham, IL","path":"m 656.31539,278.87114 0.0842,1.034 1.94293,-0.181 0.47425,6.01 -5.89061,0.378 -2.00038,0.217 -0.50633,-7.04"},"17051":{"name":"Fayette, IL","path":"m 650.41944,279.28914 0.50633,7.04 2.00038,-0.217 0.12837,2.048 -5.39853,0.474 -2.45323,0.154 0.13728,2.032 -2.06456,0.01 -0.40293,-6.61 -0.29921,-4.44075 1.93767,-0.0913 5.90843,-0.403"},"17173":{"name":"Shelby, IL","path":"m 645.78219,269.46114 3.76899,-0.256 0.16046,1.681 4.15409,2.385 0.84329,0.312 1.19096,-0.09 0.12659,1.688 0.28882,3.687 -5.89595,0.418 -5.90843,0.403 -0.21573,-3.03 2.01821,-0.08 -0.27278,-4.088 -0.25852,-3.031"},"17135":{"name":"Montgomery, IL","path":"m 634.13114,273.32014 2.94708,-0.236 0.3334,4.067 4.91716,-0.337 1.9665,-0.152 0.21573,3.03 -1.93767,0.0913 0.29921,4.44075 -6.0687,0.26459 0.007,0.83458 -0.77529,0.0418 -1.04476,0.07 -0.85934,-12.118"},"17083":{"name":"Jersey, IL","path":"m 626.65735,279.86114 0.41006,6.056 -2.19471,1.849 -3.1646,-0.77 -2.89894,-3.311 0.31021,-1.583 0.77912,-0.185 0.49207,0.09 0.10162,0.09 0.0107,0.05 0.30309,0.175 3.04692,-0.239 -0.082,-1.182 2.05922,-0.983 0.82725,-0.05"},"17117":{"name":"Macoupin, IL","path":"m 630.18387,273.59914 3.94727,-0.279 0.85934,12.118 -7.92307,0.479 -0.41006,-6.056 -0.47424,-5.964 4.00076,-0.298"},"17013":{"name":"Calhoun, IL","path":"m 612.31594,277.49714 5.94409,-0.241 0.54913,6.429 2.89894,3.311 -3.7672,0.995 -0.95562,-2.562 0,0 -0.0446,-0.161 0.0178,-0.07 0.48315,-0.747 0.0143,-0.289 -0.82725,-2.82 -4.31277,-3.833"},"17061":{"name":"Greene, IL","path":"m 626.18311,273.89714 0.47424,5.964 -0.82725,0.05 -2.05922,0.983 0.082,1.182 -3.04692,0.239 -0.30309,-0.175 -0.0107,-0.05 -0.10162,-0.09 -0.49207,-0.09 -0.77912,0.185 -0.31021,1.583 -0.54913,-6.429 0.41006,-2.949 4.91003,-0.249 2.60299,-0.161"},"17021":{"name":"Christian, IL","path":"m 642.15762,266.03114 1.35142,0.191 0.28704,3.359 1.98611,-0.12 0.25852,3.031 0.27278,4.088 -2.01821,0.08 -1.9665,0.152 -4.91716,0.337 -0.3334,-4.067 -0.20681,-2.69 1.15619,-0.12704 -0.0196,-1.12646 1.18558,-0.0389 -0.049,-1.21465 2.35517,-1.856 0.65788,0"},"17029":{"name":"Coles, IL","path":"m 655.49527,268.77914 7.16179,-0.603 -0.0553,-0.667 0.64896,-0.137 1.03585,-0.116 0.51525,4.721 -1.02214,0.086 0.30721,2.35699 -8.06035,0.764 -0.12659,-1.688 -0.40471,-4.717"},"17045":{"name":"Edgar, IL","path":"m 664.41675,262.73614 7.05482,-0.69 0.58656,6.364 0.27456,3.004 -2.76344,0.256 -0.0107,-0.247 -4.7567,0.554 -0.51525,-4.721 -0.16759,-1.683 0.43324,-0.813 -0.1355,-2.024"},"17041":{"name":"Douglas, IL","path":"m 655.24745,263.50714 9.1693,-0.771 0.1355,2.024 -0.43324,0.813 0.16759,1.683 -1.03585,0.116 -0.64896,0.137 0.0553,0.667 -7.16179,0.603 -0.27991,-3.238 0.0321,-2.034"},"17139":{"name":"Moultrie, IL","path":"m 655.21536,265.54114 0.27991,3.238 0.40471,4.717 -1.19096,0.09 -0.84329,-0.312 -4.15409,-2.385 -0.16046,-1.681 -0.0735,-1.53426 0.94476,-0.68442 0.0273,-1.07432 4.76561,-0.371"},"17115":{"name":"Macon, IL","path":"m 649.99155,259.83614 0.4582,6.076 -0.0273,1.07432 -0.94476,0.68442 0.0735,1.53426 -3.76899,0.256 -1.98611,0.12 -0.28704,-3.359 -1.35142,-0.191 -0.1765,-2.403 1.25953,-0.0827 -0.19873,-3.05129 2.01821,-0.168 3.91162,-0.421 1.0198,-0.07"},"17167":{"name":"Sangamon, IL","path":"m 635.58418,262.70414 1.65628,-0.128 0.0731,1.004 1.39777,0.256 3.26979,-0.208 0.1765,2.403 -0.65788,0 -2.35517,1.856 0.049,1.21465 -1.18558,0.0389 0.0196,1.12646 -1.15619,0.12704 0.20681,2.69 -2.94708,0.236 -3.94727,0.279 -0.016,-0.673 -0.11945,-0.498 -1.18026,-3.296 -0.25852,-1.543 -0.1355,-2.025 -0.0481,-0.676 3.93836,-0.256 1.1553,-0.448 -0.0392,-0.467 0.0143,-0.852 2.08952,-0.161"},"17137":{"name":"Morgan, IL","path":"m 618.15663,266.09514 10.31746,-0.531 0.1355,2.025 0.25852,1.543 1.18026,3.296 0.11945,0.498 0.016,0.673 -4.00076,0.298 -2.60299,0.161 -0.1355,-2.692 -1.2539,-0.70131 -0.14387,-1.93469 -2.0093,-0.707 -2.03247,0.1 0.40828,-1.173 -0.25673,-0.853"},"17171":{"name":"Scott, IL","path":"m 623.58012,274.05814 -4.91003,0.249 0.12837,-0.41 -0.007,-0.09 -0.13728,-0.466 -0.61688,-1.727 -0.31378,-2.444 0.28169,-1.052 2.03247,-0.1 2.0093,0.707 0.14387,1.93469 1.2539,0.70131 0.1355,2.692"},"17149":{"name":"Pike, IL","path":"m 618.41336,266.94814 -0.40828,1.173 -0.28169,1.052 0.31378,2.444 0.61688,1.727 0.13728,0.466 0.007,0.09 -0.12837,0.41 -0.41006,2.949 -5.94409,0.241 -4.23431,-4.397 -2.47819,-1.886 -1.04298,-1.656 2.88468,-0.104 5.03661,-0.265 -0.11232,-2.033 6.04393,-0.208"},"17009":{"name":"Brown, IL","path":"m 612.09665,261.14414 2.0503,-0.135 1.75078,-0.06 1.31932,1.745 0.40115,0.778 1.6135,-0.02 -1.07507,2.637 0.25673,0.853 -6.04393,0.208 -0.27278,-6.012"},"17001":{"name":"Adams, IL","path":"m 612.0182,259.09414 0.0784,2.05 0.27278,6.012 0.11232,2.033 -5.03661,0.265 -2.88468,0.104 -1.75256,-4.249 -1.23018,-5.858 10.44048,-0.357"},"17067":{"name":"Hancock, IL","path":"m 606.7213,249.05314 4.87793,-0.284 0.33874,8.214 0.0802,2.111 -10.44048,0.357 0.10697,-1.125 1.28367,-3.062 0.53129,-0.187 0.025,-0.01 0.18364,-0.153 0.041,-0.202 0.007,-0.01 0.0464,-2.068 -0.0143,-0.232 -0.0963,-0.28 -0.28882,-0.419 -0.35479,-0.167 -0.0571,-0.193 0.0267,-0.171 0.73097,-1.123 0.0642,-0.07 0.0642,-0.06 0.0535,-0.06 0.15332,-0.1 0.43502,-0.248 0.10341,-0.06 0.025,-0.02 0.90926,-0.319 0.007,0 0.13729,0 0.45819,-0.03 0.56161,-0.01"},"17109":{"name":"Donough, IL","path":"m 613.59248,248.73914 5.96013,-0.153 0.3958,8.131 -8.01044,0.266 -0.33874,-8.214 1.99325,-0.03"},"17169":{"name":"Schuyler, IL","path":"m 611.93797,256.98314 8.01044,-0.266 0.056,1.96548 4.43507,-0.0855 -2.62795,1.544 -2.57981,3.317 -1.6135,0.02 -0.40115,-0.778 -1.31932,-1.745 -1.75078,0.06 -2.0503,0.135 -0.15868,-4.161"},"17017":{"name":"Cass, IL","path":"m 621.81151,260.14114 1.04323,0.26062 0.26718,1.25838 1.55823,-0.02 0.0321,-0.02 1.73651,-0.708 1.60102,-0.658 0.0713,-0.128 0.30487,4.763 0.0481,0.676 -10.31746,0.531 1.07507,-2.637 2.57981,-3.317"},"17129":{"name":"Menard, IL","path":"m 628.12109,260.12514 0.7702,-0.61 4.82088,-0.956 0.62578,0.111 0.62044,0.675 0.62579,3.359 -2.08952,0.161 -0.0143,0.852 0.0392,0.467 -1.1553,0.448 -3.93836,0.256 -0.30487,-4.763"},"17125":{"name":"Mason, IL","path":"m 628.86098,252.46714 3.59783,-0.225 0.21751,2.691 1.94333,-0.154 0.33874,4.566 -0.62044,-0.675 -0.62578,-0.111 -4.82088,0.956 -0.7702,0.61 -0.0713,0.128 -1.60102,0.658 -1.73651,0.708 -0.0321,0.02 -1.55823,0.02 -0.26718,-1.25838 -1.04323,-0.26062 2.62795,-1.544 1.19809,-1.075 0.11232,-0.147 0.81299,-1.517 0.21572,-1.309 0.0963,-0.363 0.10519,-0.187 1.62954,-1.38 0.25139,-0.152"},"17107":{"name":"Logan, IL","path":"m 640.51203,254.25914 0.0495,0.98242 2.01331,-0.13042 0.46711,5.383 0.19873,3.05129 -1.25953,0.0827 -3.26979,0.208 -1.39777,-0.256 -0.0731,-1.004 -1.65628,0.128 -0.62579,-3.359 -0.33874,-4.566 5.89238,-0.52"},"17039":{"name":"De Witt, IL","path":"m 652.55888,254.37114 -2.62178,4.19606 0.0544,1.26894 -1.0198,0.07 -3.91162,0.421 -2.01821,0.168 -0.46711,-5.383 9.98407,-0.74"},"17147":{"name":"Piatt, IL","path":"m 652.55888,254.37114 1.9986,-0.16 0.68997,9.296 -0.0321,2.034 -4.76561,0.371 -0.4582,-6.076 -0.0544,-1.26894 2.62178,-4.19606"},"17019":{"name":"Champaign, IL","path":"m 654.33284,251.50314 9.14434,-0.771 0.40828,4.01 -0.23356,0.02 0.76485,7.971 -9.1693,0.771 -0.68997,-9.296 -0.22464,-2.708"},"17053":{"name":"Ford, IL","path":"m 656.90195,237.45014 1.97899,-0.234 1.21235,11.748 3.16638,-0.225 0.21751,1.993 -9.14434,0.771 -0.3851,-5.048 3.87952,-0.328 -0.92531,-8.677"},"17113":{"name":"McLean, IL","path":"m 645.58073,243.94014 5.95657,-0.553 0.18363,2.009 0.24069,1.236 1.98612,-0.177 0.3851,5.048 0.22464,2.708 -1.9986,0.16 -9.98407,0.74 -2.01331,0.13042 -0.0495,-0.98242 -0.53843,-6.212 2.34091,-0.226 0.52209,-0.69268 0.97731,-0.13432 -0.0705,-0.82768 1.03504,-0.11232 -0.18414,-1.99996 0.98643,-0.11404"},"17179":{"name":"Tazewell, IL","path":"m 634.78189,244.84014 3.88844,-0.282 0.0963,1.352 0.16937,1.72 1.03763,0.417 0.53843,6.212 -5.89238,0.52 -1.94333,0.154 -0.21751,-2.691 -3.59783,0.225 0.78446,-1.842 3.57822,-2.289 1.62954,-2.46 0.12124,-0.408 -0.0945,-0.427 -0.0981,-0.201"},"17203":{"name":"Woodford, IL","path":"m 643.2523,240.10814 1.99147,-0.192 0.33696,4.024 -0.98643,0.11404 0.18414,1.99996 -1.03504,0.11232 0.0705,0.82768 -0.97731,0.13432 -0.52209,0.69268 -2.34091,0.226 -1.03763,-0.417 -0.16937,-1.72 -0.0963,-1.352 -3.88844,0.282 -0.0359,-2.10643 1.193,-1.99957 7.31333,-0.626"},"17143":{"name":"Peoria, IL","path":"m 632.9901,239.71414 2.86364,-0.10446 0.0852,1.12446 -1.193,1.99957 0.0359,2.10643 0.0981,0.201 0.0945,0.427 -0.12124,0.408 -1.62954,2.46 -3.57822,2.289 -0.0874,-1.549 -0.0945,-1.022 -2.00217,0.1 -0.0731,-2.003 -0.37619,-6.067 5.97796,-0.369"},"17057":{"name":"Fulton, IL","path":"m 627.38833,246.15014 0.0731,2.003 2.00217,-0.1 0.0945,1.022 0.0874,1.549 -0.78446,1.842 -0.25139,0.152 -1.62954,1.38 -0.10519,0.187 -0.0963,0.363 -0.21572,1.309 -0.81299,1.517 -0.11232,0.147 -1.19809,1.075 -4.43507,0.0855 -0.056,-1.96548 -0.3958,-8.131 -0.0963,-2.01 7.93199,-0.426"},"17187":{"name":"Warren, IL","path":"m 613.1111,238.72714 5.96192,-0.234 0.47959,10.093 -5.96013,0.153 -0.48138,-10.012"},"17071":{"name":"Henderson, IL","path":"m 610.29773,238.83914 2.81337,-0.112 0.48138,10.012 -1.99325,0.03 -4.87793,0.284 1.207,-1.416 0.11945,-2.603 0.0642,-0.297 1.3425,-1.915 0.18542,-0.182 0.49742,-0.282 0.0963,-0.144 0.1462,-0.683 0.0695,-1.872 -0.0874,-0.62 -0.0642,-0.2"},"17131":{"name":"Mercer, IL","path":"m 607.72505,232.87514 11.08411,-0.465 0.26386,6.083 -5.96192,0.234 -2.81337,0.112 -0.016,-0.06 0.016,-0.555 -0.80942,-1.326 -0.14619,-0.152 -0.13907,-0.06 -0.22999,0.03 -0.54912,-0.273 -1.16422,-1.399 -0.007,-0.02 -0.0178,-0.191 0.49029,-1.963"},"17095":{"name":"Knox, IL","path":"m 626.76967,236.04314 0.24247,4.04 0.37619,6.067 -7.93199,0.426 -0.38332,-8.083 -0.0891,-2.016 7.78579,-0.434"},"17175":{"name":"Stark, IL","path":"m 628.8271,233.94514 3.76018,-0.23348 0.12826,1.96948 0.27456,4.033 -5.97796,0.369 -0.24247,-4.04 2.18974,-0.21545 -0.13231,-1.88255"},"17123":{"name":"Marshall, IL","path":"m 632.71554,235.68114 2.96848,-0.201 2.34982,-0.153 -0.0303,0.563 -0.0339,0.153 -0.10162,0.143 -0.16938,0.09 -0.0963,0.11 3.37675,-0.251 1.97013,-0.12766 0.30303,4.09966 -7.31333,0.626 -0.0852,-1.12446 -2.86364,0.10446 -0.27456,-4.033"},"17155":{"name":"Putnam, IL","path":"m 640.60831,231.37914 0.37083,4.757 -3.37675,0.251 0.0963,-0.11 0.16938,-0.09 0.10162,-0.143 0.0339,-0.153 0.0303,-0.563 -2.34982,0.153 -0.14798,-1.977 2.04566,-0.20289 0.27742,-1.55011 0.93244,-0.513 0.2086,-0.02 1.60815,0.166"},"17105":{"name":"Livingston, IL","path":"m 650.87051,235.30314 5.73549,-0.595 0.29595,2.742 0.92531,8.677 -3.87952,0.328 -1.98612,0.177 -0.24069,-1.236 -0.18363,-2.009 -5.95657,0.553 -0.33696,-4.024 -0.29774,-4.117 5.92448,-0.496"},"17091":{"name":"Kankakee, IL","path":"m 668.93989,232.43314 0.32983,3.592 -10.38878,1.191 -1.97899,0.234 -0.29595,-2.742 -0.041,-2.033 2.98274,-0.331 0.86826,-1.334 -0.082,-0.761 8.33313,-0.861 0.27278,3.045"},"17063":{"name":"Grundy, IL","path":"m 655.9392,226.65614 0.62579,6.019 0.041,2.033 -5.73549,0.595 -0.79873,-8.044 5.86742,-0.603"},"17197":{"name":"Will, IL","path":"m 655.27954,220.62914 3.93843,-0.46972 0.0962,1.03972 0.11232,1.015 1.84985,-0.46847 0.3404,2.27597 1.98707,-0.19402 0.20319,2.00152 4.52136,-0.401 0.33874,3.96 -8.33313,0.861 0.082,0.761 -0.86826,1.334 -2.98274,0.331 -0.62579,-6.019 -0.65966,-6.027"},"17093":{"name":"Kendall, IL","path":"m 655.27241,220.62914 0.007,0 0.65966,6.027 -5.86742,0.603 -0.42432,-4.019 -0.15155,-2.032 5.7765,-0.579"},"17099":{"name":"La Salle, IL","path":"m 643.9191,223.75614 5.72836,-0.516 0.42432,4.019 0.79873,8.044 -5.92448,0.496 0.29774,4.117 -1.99147,0.192 -0.30303,-4.09966 -1.97013,0.12766 -0.37083,-4.757 -0.58479,-7.35 1.96473,-0.1 1.93085,-0.176"},"17011":{"name":"Bureau, IL","path":"m 640.10019,225.03414 0.50812,6.345 -1.60815,-0.166 -0.2086,0.02 -0.93244,0.513 -0.27742,1.55011 -2.04566,0.20289 0.14798,1.977 -2.96848,0.201 -0.12826,-1.96948 -3.76018,0.23348 -0.60261,-8.069 3.93658,-0.289 7.93912,-0.553"},"17073":{"name":"Henry, IL","path":"m 628.22449,225.87614 0.60261,8.069 0.13231,1.88255 -2.18974,0.21545 -7.78579,0.434 -0.17472,-4.067 -0.13907,-2.995 1.0929,-1.136 0.20147,-0.153 0.30308,-0.136 0.81299,-0.192 0.6347,-0.104 0.88431,-0.467 0.15332,-0.348 0.0731,-0.401 -0.0267,-0.142 -0.0963,-0.131 5.52155,-0.329"},"17161":{"name":"Rock Island, IL","path":"m 621.4585,221.65714 -0.0642,0.442 0.016,0.421 0.19255,0.922 0.25674,0.522 0.33161,0.305 0.33518,0.121 0.28348,0.177 0.22464,0.242 0.0392,0.312 0.009,0.282 -0.0481,0.523 -0.041,0.07 -0.29061,0.206 0.0963,0.131 0.0267,0.142 -0.0731,0.401 -0.15332,0.348 -0.88431,0.467 -0.6347,0.104 -0.81299,0.192 -0.30308,0.136 -0.20147,0.153 -1.0929,1.136 0.13907,2.995 -11.08411,0.465 0,0 0.20325,-0.788 0.23891,-0.982 0.016,-0.05 0.12124,-0.171 0,0 0.016,0 0.18364,-0.12 0.6454,-0.233 2.41044,-0.658 1.05189,0 0.24782,0.03 0.58656,-0.02 1.38351,-0.353 3.24661,-1.608 1.0198,-1.189 0.89143,-1.198 0.26565,-2.505 1.20522,-1.352"},"17103":{"name":"Lee, IL","path":"m 631.70465,218.27514 1.13926,-0.09 3.43202,-0.252 0.025,0.339 7.119,-0.602 0.49921,6.083 -1.93085,0.176 -1.96473,0.1 0.0767,1.005 -7.93912,0.553 -0.45642,-7.312"},"17195":{"name":"Whiteside, IL","path":"m 630.69198,217.67314 1.01267,0.602 0.45642,7.312 -3.93658,0.289 -5.52155,0.329 0.29061,-0.206 0.041,-0.07 0.0481,-0.522 -0.009,-0.282 -0.0392,-0.312 -0.22464,-0.242 -0.28348,-0.177 -0.33518,-0.121 -0.33161,-0.305 -0.25674,-0.522 -0.19255,-0.922 -0.016,-0.421 0.0642,-0.442 1.32646,-3.437 7.90702,-0.547"},"17015":{"name":"Carroll, IL","path":"m 630.24805,211.47514 0.44393,6.198 -7.90702,0.547 -0.18542,-2.405 -2.97205,-3.541 6.71786,-0.476 3.9027,-0.323"},"17141":{"name":"Ogle, IL","path":"m 635.19195,211.06914 3.7779,-0.314 0.0874,1.243 3.94371,-0.337 0.41897,6.012 -7.119,0.602 -0.025,-0.339 -3.43202,0.252 -1.13926,0.09 -1.01267,-0.602 -0.44393,-6.198 4.9439,-0.406"},"17037":{"name":"DeKalb, IL","path":"m 648.94144,211.17914 0.55447,10.029 0.15155,2.032 -5.72836,0.516 -0.49921,-6.083 -0.41897,-6.012 3.96332,-0.328 1.9772,-0.154"},"17089":{"name":"Kane, IL","path":"m 654.87127,210.69814 -0.10519,3.904 0.50633,6.027 -5.7765,0.579 -0.55447,-10.029 5.92983,-0.481"},"17043":{"name":"DuPage, IL","path":"m 655.27241,220.62914 -0.50633,-6.027 3.92053,-0.472 1.69551,-0.169 0.2496,0.811 0.57943,5.543 -1.89697,0.884 -0.0962,-1.03972 -3.93843,0.46972 -0.004,0 -0.003,0"},"17031":{"name":"Cook, IL","path":"m 655.52914,210.64114 7.4417,-0.594 1.69551,2.282 0.92353,2.587 0.20146,0.701 0.17651,0.754 0.16937,0.537 0.0642,0.144 0.12124,0.266 0.49742,0.902 1.04476,1.71 0.46355,5.498 -4.52136,0.401 -0.20319,-2.00152 -1.98706,0.19402 -0.34041,-2.27597 -1.84985,0.46847 -0.11232,-1.015 1.89697,-0.884 -0.57943,-5.543 -0.2496,-0.811 -1.69551,0.169 -3.92053,0.472 0.10519,-3.904 0.65787,-0.06"},"17097":{"name":"Lake, IL","path":"m 654.86235,202.75914 6.73568,-0.465 0.007,0 0.0802,0.456 0.0481,2.016 -0.15332,0.476 -0.0642,0.08 -0.11232,0.729 0,0.677 0.16046,0.715 0.35479,0.851 0.25495,0.531 0.79694,1.221 -7.4417,0.594 -0.66679,-7.882"},"17111":{"name":"McHenry, IL","path":"m 653.10979,202.93514 1.75256,-0.176 0.66679,7.882 -0.65787,0.06 -5.92983,0.481 -1.9772,0.154 -0.6347,-7.834 6.78025,-0.564"},"17007":{"name":"Boone, IL","path":"m 645.16354,203.57914 1.166,-0.08 0.6347,7.834 -3.96332,0.328 -0.60083,-7.898 2.76345,-0.184"},"17201":{"name":"Winnebago, IL","path":"m 642.40009,203.76314 0.60083,7.898 -3.94371,0.337 -0.0874,-1.243 -3.7779,0.314 -0.5723,-6.875 0.60261,-0.04 7.17783,-0.394"},"17177":{"name":"Stephenson, IL","path":"m 627.26887,204.57414 7.35078,-0.38 0.5723,6.875 -4.9439,0.406 -3.9027,0.323 -0.57944,-7.137 1.50296,-0.09"},"17085":{"name":"Jo Daviess, IL","path":"m 625.76591,204.66114 0.57944,7.137 -6.71786,0.476 -0.7078,-0.226 -0.312,-0.202 -0.29061,-0.233 -0.016,-0.01 -0.48316,-0.602 -0.0125,-0.03 -0.23534,-0.53 0,-0.146 0.0963,-0.216 0.0963,-0.65 -0.009,-0.09 -0.0481,-0.07 -1.01089,-1.171 -0.0428,-0.04 -0.007,0 -1.44412,-1.006 -1.13569,-0.586 -0.39223,-0.282 -0.13728,-0.143 -0.0392,-0.115 -0.016,-0.129 0.007,-0.05 0.23534,-0.403 3.61388,-0.178 8.4294,-0.491"},"18127":{"name":"Porter, IN","path":"m 677.91486,218.94214 1.09646,10.913 -0.14619,0.192 -0.49207,0.275 -0.15155,-0.04 -1.32645,-0.841 -0.93066,-0.323 -0.34588,-0.09 -0.19255,0.04 -0.97166,0.563 -0.40293,0.578 -0.87717,-8.799 4.74065,-2.467"},"18089":{"name":"Lake, IN","path":"m 667.86482,219.93014 5.30939,1.479 0.87717,8.799 -0.92531,0.628 -1.93339,1.27761 -2.25279,0.31939 -0.27278,-3.045 -0.80229,-9.458"},"18123":{"name":"Perry, IN","path":"m 690.04194,298.01914 1.94333,-0.272 0.20296,1.28436 1.89548,-0.10436 0.2906,2.542 -0.35479,1.211 -0.10519,0.01 -0.36905,0.07 -0.0963,0.06 -0.0731,0.104 -0.0303,0.251 0.1355,1.373 -1.17313,2.674 -0.49921,0.387 -0.2389,0.08 -0.13728,0 -3.19669,-3.316 -0.0588,-4.814 -0.11054,-1.012 2.02534,-0.17 -0.0499,-0.346"},"18147":{"name":"Spencer, IN","path":"m 688.17706,299.54714 0.0588,4.814 -2.79732,1.854 -1.11786,1.047 -1.3425,2.425 -2.62617,-1.751 -0.0874,-1.109 0.0303,-0.09 3.04514,-4.598 0.94154,-0.045 -0.13746,-2.12304 4.03285,-0.426"},"18173":{"name":"Warrick, IN","path":"m 678.7118,299.49214 4.38051,-0.1 0.0464,0.64917 1.0055,-0.0702 0.13746,2.12304 -0.94154,0.045 -3.04514,4.598 -0.0303,0.09 0.0874,1.109 -0.64361,-0.45 -2.75632,-0.739 -0.1765,-2.17 -0.41898,0.04 -0.15867,-2.009 -0.009,-1.013 -0.0571,-0.827 2.67074,-0.257 -0.0909,-1.02"},"18163":{"name":"Vanderburgh, IN","path":"m 672.23464,301.87614 3.9544,-0.28 0.009,1.013 0.15867,2.009 0.41898,-0.04 0.1765,2.17 -1.50265,0.43681 -1.01385,-1.15101 -0.43221,1.67638 0.81185,0.98166 -0.67758,0.94419 -1.04917,-0.26756 0.2272,-1.49545 -0.75836,0.20098 -0.3227,-6.197"},"18129":{"name":"Posey, IN","path":"m 667.3418,300.86523 -0.0234,0.10938 -0.10352,2.41211 -0.25781,5.32422 -0.0488,0.0996 -0.01,0.0215 -0.0391,0.0293 -0.0313,0 -0.85937,0.0293 0.90625,2.03516 0.83113,-0.0668 0.66431,0.42621 0.37813,-0.65038 0.44626,-0.29606 -0.84836,-1.37265 0.13595,-0.56964 4.07422,-0.32421 -0.32226,-6.19532 -0.0366,-0.47457 -2.40875,-0.0313 0.0186,-0.5849 z"},"18051":{"name":"Gibson, IN","path":"m 675.50586,293.0957 -4.70117,3.17188 0,-0.006 -3.46289,4.59766 2.46587,-0.0771 -0.0186,0.58295 2.40875,0.0332 0.0366,0.47262 3.95507,-0.27929 -0.0566,-0.82813 2.66992,-0.25586 -0.36523,-4.11523 -0.15234,-0.0606 -0.94532,0.16016 -0.25,0.0898 -1.05468,-1.27148 -0.39258,-0.65039 z"},"18125":{"name":"Pike, IN","path":"m 679.41069,292.46814 3.07901,0.417 0.60261,6.509 -4.38051,0.1 -0.27456,-3.095 -0.15154,-0.06 -0.94671,0.16 -0.2496,0.09 -1.05368,-1.271 -0.39223,-0.651 -0.13728,-1.565 0.65075,-0.233 1.18204,-0.186 0.11945,0.03 0.97345,0.656 0.22999,-0.06 0.30666,-0.273 0.23355,-0.234 0.2086,-0.329"},"18037":{"name":"Dubois, IN","path":"m 689.39832,291.95214 0.31379,3.028 0.32983,3.039 0.0499,0.346 -2.02534,0.17 0.11054,1.012 -4.03285,0.426 -1.0055,0.0702 -0.0464,-0.64917 -0.60261,-6.509 2.65826,-0.01 1.04541,-0.61325 3.20495,-0.30475"},"18025":{"name":"Crawford, IN","path":"m 696.28555,293.66614 0.95562,-0.09 0.40293,6.776 -3.62458,2.329 0.35479,-1.211 -0.2906,-2.542 -1.89548,0.10436 -0.20296,-1.28436 -1.94333,0.272 -0.32983,-3.039 4.08277,-0.448 2.55485,-0.2 -0.0642,-0.666"},"18061":{"name":"Harrison, IN","path":"m 701.20271,293.27014 0.21751,2.009 0.39401,0.635 0.0571,0 0.73098,0.538 0.36905,0.305 0.0391,1.5281 1.11085,0.0889 0.0232,0.177 -0.44215,4.041 -0.86826,0.296 -0.53664,0.177 -2.59586,-0.128 -0.12837,-0.02 -0.78089,-0.307 -0.81121,-0.537 -0.0874,-0.06 -0.041,-0.06 -0.10519,-0.161 -0.12836,-0.449 -0.0161,-0.04 -0.007,-0.105 -0.007,-0.161 0,-0.04 0.0553,-0.649 -0.40293,-6.776 3.96154,-0.305"},"18043":{"name":"Floyd, IN","path":"m 701.87841,293.19114 0.0178,0.168 0.51347,0.119 2.8205,-0.319 0.98058,1.157 -0.39402,1.478 -1.67233,2.757 -0.0232,-0.177 -1.11085,-0.0889 -0.0391,-1.5281 -0.36905,-0.305 -0.73098,-0.538 -0.0571,0 -0.39401,-0.635 -0.21751,-2.009 0.6757,-0.08"},"18019":{"name":"Clark, IN","path":"m 708.94928,288.05014 1.29436,-0.055 1.29436,0.22803 0.0553,1.449 -3.2787,3.712 -2.4978,2.41 0.39402,-1.478 -0.98058,-1.157 -2.8205,0.319 -0.51347,-0.119 -0.0178,-0.168 -0.14441,-1.624 0.77912,-0.394 1.10894,-0.15 0.29774,-0.379 0.25673,-0.701 -0.041,-0.319 0.46042,-0.42888 0.083,-0.85347 4.27032,-0.29165"},"18115":{"name":"Ohio, IN","path":"m 715.80263,279.30514 4.26106,-2.418 1.77395,2.828 -6.04036,0.02 0.005,-0.433"},"18155":{"name":"Switzerland, IN","path":"m 715.79728,279.73814 6.04036,-0.02 0.24247,1.003 -3.89022,2.63 -2.92391,2.001 -0.61865,-5.11 -0.0716,-0.42886 1.22155,-0.0721"},"18077":{"name":"Jefferson, IN","path":"m 710.37914,280.73414 4.26819,-0.495 0.61865,5.11 -2.48353,-0.862 -1.24445,3.736 -1.29436,-0.22803 -1.29436,0.055 -0.20147,-1.673 -0.68997,-0.256 -0.53129,-0.291 -0.57587,-0.612 -0.3958,-0.506 -0.14441,-1.262 1.2694,-0.344 0.56161,-0.901 0.17828,-0.543 0.32092,-0.728 1.63846,-0.2"},"18143":{"name":"Scott, IN","path":"m 706.41047,283.45014 0.14441,1.262 0.3958,0.506 0.57587,0.612 0.53129,0.291 0.68997,0.256 0.20147,1.673 -4.27032,0.29165 -0.083,0.85347 -0.46042,0.42888 -0.0865,-0.66032 -0.65265,1.5e-4 -0.40897,-3.25483 1.04208,-0.57768 0.42879,-1.28532 1.95224,-0.396"},"18175":{"name":"Washington, IN","path":"m 696.06982,285.75114 6.91754,-0.04 0.40897,3.25483 0.65265,-1.4e-4 0.0865,0.66031 0.041,0.319 -0.25673,0.701 -0.29774,0.379 -1.10894,0.15 -0.77912,0.394 0.14441,1.624 -0.6757,0.08 -3.96154,0.305 -0.95562,0.09 -0.62579,-6.117 -0.06,-1.05803 0.47008,-0.73997"},"18117":{"name":"Orange, IN","path":"m 695.65976,287.54914 0.62579,6.117 0.0642,0.666 -2.55485,0.2 -4.08277,0.448 -0.31379,-3.028 -0.37618,-3.696 6.63762,-0.707"},"18101":{"name":"Martin, IN","path":"m 684.61845,283.61014 3.9134,-0.39 0.49029,5.036 0.37618,3.696 -3.20495,0.30475 -1.04541,0.61325 -0.52951,-9.26"},"18027":{"name":"Daviess, IN","path":"m 681.17929,283.94214 3.43916,-0.332 0.52951,9.26 -2.65826,0.01 -3.07901,-0.417 -0.80229,-3.522 0.24068,-1.886 0.31379,-0.62 1.50296,-2.088 0.51346,-0.41"},"18083":{"name":"Knox, IN","path":"m 678.65653,284.08614 2.52276,-0.144 -0.51346,0.41 -1.50296,2.088 -0.31379,0.62 -0.24068,1.886 0.80229,3.522 -0.2086,0.329 -0.23355,0.234 -0.30666,0.273 -0.22999,0.06 -0.97345,-0.656 -0.11945,-0.03 -1.18204,0.186 -0.65075,0.233 -4.70143,3.172 1.27832,-3.68 0.34588,-0.941 1.40668,-1.799 0.14263,-0.12 0.17651,-0.322 0.25138,-1.462 0.007,-0.562 -0.68462,-1.471 -0.0392,-0.06 -0.0731,0 -0.14441,-1.146 5.18458,-0.605"},"18153":{"name":"Sullivan, IN","path":"m 677.91486,275.98714 0.17829,2.009 0.56338,6.09 -5.18458,0.605 0.10519,-0.145 0.12836,-0.363 0.0481,-0.733 -1.27653,-2.28 -0.83617,-0.983 -0.36192,-1.235 0.23355,-2.395 6.40229,-0.57"},"18055":{"name":"Greene, IN","path":"m 681.38076,277.77814 6.55739,-0.577 0.40115,3.993 0.19255,2.026 -3.9134,0.39 -3.43916,0.332 -2.52276,0.144 -0.56338,-6.09 3.28761,-0.218"},"18093":{"name":"Lawrence, IN","path":"m 688.3393,281.19414 6.44329,-0.611 0.85565,-0.093 0.43158,5.261 -0.47008,0.73997 0.06,1.05803 -6.63762,0.707 -0.49029,-5.036 -0.19255,-2.026"},"18071":{"name":"Jackson, IN","path":"m 698.83327,278.78214 4.00519,-0.4894 0.90484,-0.4486 0.71493,6.002 -0.42879,1.28532 -1.04208,0.57768 -6.91754,0.04 -0.43158,-5.261 -0.85565,0.093 -0.14441,-1.334 4.19509,-0.467"},"18079":{"name":"Jennings, IN","path":"m 709.74622,274.21814 0.63292,6.516 -1.63846,0.2 -0.32092,0.728 -0.17828,0.543 -0.56161,0.901 -1.2694,0.344 -1.95224,0.396 -0.71493,-6.002 -0.17,-1.25634 1.99209,-0.39966 2.6701,-0.62827 1.51073,-1.34173"},"18137":{"name":"Ripley, IN","path":"m 716.02727,270.90014 -0.22464,8.405 -0.005,0.433 -1.22155,0.0721 0.0716,0.42886 -4.26819,0.495 -0.63292,-6.516 2.33021,-1.961 1.21737,-0.85686 2.73347,-0.50014"},"18029":{"name":"Dearborn, IN","path":"m 716.02727,270.90014 4.32524,-0.458 0.52951,4.598 -0.81833,1.847 -4.26106,2.418 0.22464,-8.405"},"18047":{"name":"Franklin, IN","path":"m 719.83905,265.44314 0.51346,4.999 -4.32524,0.458 -2.73347,0.50014 -1.21737,0.85686 -0.4992,-4.258 -0.20147,-1.654 4.58733,-0.547 3.87596,-0.355"},"18031":{"name":"Decatur, IN","path":"m 705.75972,268.65914 5.81751,-0.66 0.4992,4.258 -2.33021,1.961 -1.51073,1.34173 -2.6701,0.62827 -0.51347,-5.054 0.9548,-0.20147 -0.247,-2.27353"},"18005":{"name":"Bartholomew, IN","path":"m 705.05192,271.13414 0.51347,5.054 -1.99209,0.39966 0.17,1.25634 -0.90484,0.4486 -4.00519,0.4894 -0.80229,-6.766 2.33734,-0.312 4.6836,-0.57"},"18013":{"name":"Brown, IN","path":"m 695.11242,272.38014 2.91856,-0.364 0.80229,6.766 -4.19509,0.467 -1.0855,0.14722 -0.71342,-6.73622 2.27316,-0.28"},"18105":{"name":"Monroe, IN","path":"m 688.44449,272.90814 4.39477,-0.248 0.71342,6.73622 1.0855,-0.14722 0.14441,1.334 -6.44329,0.611 -0.40115,-3.993 -0.35086,-4.23736 0.8572,-0.0556"},"18119":{"name":"Owen, IN","path":"m 682.73039,270.54514 4.44291,-0.36 1.12346,-0.0789 0.14773,2.80187 -0.8572,0.0556 0.35086,4.23736 -6.55739,0.577 -0.36192,-4.032 1.95046,-0.17 -0.23891,-3.031"},"18021":{"name":"Clay, IN","path":"m 677.89346,267.88714 3.26801,-0.258 0.24934,3.06335 1.31958,-0.14735 0.23891,3.031 -1.95046,0.17 0.36192,4.032 -3.28761,0.218 -0.17829,-2.009 -0.52773,-6.044 0.67392,-0.04 -0.16759,-2.017"},"18167":{"name":"Vigo, IN","path":"m 677.89346,267.88714 0.16759,2.017 -0.67392,0.04 0.52773,6.044 -6.40229,0.57 0.82012,-5.143 -0.27456,-3.004 2.62082,-0.25 3.21451,-0.273"},"18165":{"name":"Vermillion, IN","path":"m 673.16708,256.20914 0.12836,4.06 0.80408,1.052 0.22642,0.298 0.31914,0.634 -0.15155,4.113 0.18542,1.794 -2.62082,0.25 -0.58656,-6.364 -0.51347,-6.115 2.20898,0.278"},"18121":{"name":"Parke, IN","path":"m 679.04163,259.73014 0.20016,1.95101 1.40799,-0.093 0.51169,6.041 -3.26801,0.258 -3.21451,0.273 -0.18542,-1.794 0.15155,-4.113 -0.31914,-0.634 -0.22642,-0.298 -0.80408,-1.052 5.74619,-0.539"},"18133":{"name":"Putnam, IN","path":"m 680.64978,261.58814 5.48768,-0.492 0.14441,-0.02 0.30487,3.158 0.22092,2.24498 0.30324,-0.019 0.29596,0.651 0.0548,1.01448 -0.43915,0.60285 0.15078,1.45267 -4.44291,0.36 -1.31958,0.14735 -0.24934,-3.06335 -0.51169,-6.041"},"18109":{"name":"Morgan, IN","path":"m 694.45454,265.64414 0.65788,6.736 -2.27316,0.28 -4.39477,0.248 -0.14773,-2.80187 -1.12346,0.0789 -0.15078,-1.45267 0.43915,-0.60285 -0.0548,-1.01448 3.35179,-0.33 -0.0731,-0.674 2.26602,-0.272 0.16938,-0.02 1.33358,-0.179"},"18081":{"name":"Johnson, IN","path":"m 699.65339,264.99514 0.71493,6.709 -2.33734,0.312 -2.91856,0.364 -0.65788,-6.736 5.19885,-0.649"},"18145":{"name":"Shelby, IN","path":"m 699.51611,263.63514 5.56077,-0.633 0.68284,5.657 0.247,2.27353 -0.9548,0.20147 -4.6836,0.57 -0.71493,-6.709 -0.13728,-1.36"},"18139":{"name":"Rush, IN","path":"m 705.48516,260.90414 5.15249,-0.596 0.93958,7.691 -5.81751,0.66 -0.68284,-5.657 -0.26146,-2.01124 0.66974,-0.0868"},"18041":{"name":"Fayette, IN","path":"m 710.63765,260.30814 1.39777,-0.176 0.65967,-0.07 0.16759,1.68 2.62795,-0.28 0.47246,4.338 -4.58733,0.547 -0.73811,-6.037"},"18161":{"name":"Union, IN","path":"m 715.49063,261.46014 3.80821,-0.726 0.41897,3.666 0.12124,1.043 -3.87596,0.355 -0.47246,-4.338"},"18177":{"name":"Wayne, IN","path":"m 718.60173,254.31414 0.2086,2.034 0.48851,4.386 -3.80821,0.726 -2.62795,0.28 -0.16759,-1.68 -0.65967,0.07 -0.26284,-2.19164 0.27096,-0.0342 -0.23454,-2.7882 6.79273,-0.804"},"18065":{"name":"Henry, IN","path":"m 705.10897,254.17914 6.29354,-0.701 0.13652,1.64295 0.26997,-0.003 0.23454,2.7882 -0.27096,0.0342 0.26284,2.19164 -1.39777,0.176 -5.15249,0.596 -0.27541,-2.10577 0.46954,-0.0571 -0.24043,-1.5421 -0.32984,-3.02"},"18059":{"name":"Hancock, IN","path":"m 705.43881,257.19914 0.24038,1.5421 -0.46957,0.0571 0.27539,2.10577 -0.66974,0.0868 0.26146,2.01124 -5.56077,0.633 -0.32092,-5.325 1.31758,-0.1028 -0.0482,-0.4132 4.97421,-0.595"},"18097":{"name":"Marion, IN","path":"m 699.19519,258.31014 0.32092,5.325 0.13728,1.36 -5.19885,0.649 -1.33358,0.179 -0.68463,-6.736 1.4887,-0.191 5.27016,-0.586"},"18063":{"name":"Hendricks, IN","path":"m 692.43633,259.08714 0.68463,6.736 -0.16938,0.02 -2.26602,0.272 0.0731,0.674 -3.35179,0.33 -0.29596,-0.651 -0.30324,0.019 -0.22092,-2.24498 -0.30487,-3.158 -0.14441,0.02 -0.12837,-1.333 6.42724,-0.676"},"18011":{"name":"Boone, IN","path":"m 693.28855,253.02214 0.63648,5.874 -1.4887,0.191 -6.42724,0.676 -0.59548,-5.898 7.87494,-0.843"},"18057":{"name":"Hamilton, IN","path":"m 693.1994,252.20914 6.5984,-0.762 0.6668,6.347 0.0482,0.4132 -1.31758,0.1028 -5.27016,0.586 -0.63648,-5.874 -0.0892,-0.813"},"18135":{"name":"Randolph, IN","path":"m 710.71788,248.19014 7.17427,-0.908 0.70958,7.032 -6.79273,0.804 -0.26997,0.003 -0.13652,-1.64295 -0.68463,-5.288"},"18035":{"name":"Delaware, IN","path":"m 710.50929,246.52814 0.20859,1.662 0.68463,5.288 -6.29354,0.701 -0.80229,-6.961 2.3213,-0.248 3.88131,-0.442"},"18095":{"name":"Madison, IN","path":"m 704.30668,247.21814 0.80229,6.961 0.32984,3.02 -4.97421,0.595 -0.6668,-6.347 -0.40292,-3.674 4.9118,-0.555"},"18159":{"name":"Tipton, IN","path":"m 699.39488,247.77314 0.40292,3.674 -6.5984,0.762 -0.3851,-3.641 -0.0534,-0.61047 6.56983,-0.83553 0.0642,0.651"},"18023":{"name":"Clinton, IN","path":"m 684.85914,248.01314 5.51976,-0.545 1.14995,-0.112 0.10519,0.996 0.52952,0.289 0.65074,-0.07 0.3851,3.641 0.0892,0.813 -7.87494,0.843 -0.0802,-0.827 -0.47424,-5.025"},"18107":{"name":"Montgomery, IN","path":"m 685.33338,253.03814 0.0802,0.827 0.59548,5.898 0.12837,1.333 -5.48768,0.492 -1.40799,0.093 -0.20016,-1.95101 -0.59548,-6.042 6.88723,-0.65"},"18045":{"name":"Fountain, IN","path":"m 678.44615,253.68814 0.59548,6.042 -5.74619,0.539 -0.12836,-4.06 -0.54556,-0.586 -0.0891,-0.216 0.016,-0.121 0.23534,-0.448 2.77058,-2.909 0.42611,-0.353 2.14479,-1.384 0.32091,3.496"},"18075":{"name":"Jay, IN","path":"m 717.20396,241.24914 0.56874,5.056 0.11945,0.977 -7.17427,0.908 -0.20859,-1.662 0.30501,-0.0387 -0.47439,-4.32534 2.28386,-0.289 4.58019,-0.626"},"18009":{"name":"Blackford, IN","path":"m 706.09668,242.65614 4.24323,-0.492 0.47439,4.32534 -0.30501,0.0387 -3.88131,0.442 -0.5313,-4.314"},"18053":{"name":"Grant, IN","path":"m 702.57908,241.03214 3.268,-0.376 0.2496,2 0.5313,4.314 -2.3213,0.248 -4.9118,0.555 -0.0642,-0.651 -0.4261,-3.655 -0.22286,-1.986 3.89735,-0.449"},"18067":{"name":"Howard, IN","path":"m 693.71465,244.07714 5.18994,-0.61 0.4261,3.655 -6.56983,0.83553 0.0534,0.61047 -0.65074,0.07 -0.52952,-0.289 -0.10519,-0.996 -1.14995,0.112 -0.27278,-2.981 3.60853,-0.41"},"18015":{"name":"Carroll, IN","path":"m 690.10612,244.48714 0.27278,2.981 -5.51976,0.545 -0.35408,-2.98 -1.25942,0.112 -0.21751,-1.919 0.0874,-1.904 0.066,-0.162 0.0713,-0.09 2.86864,-0.245 0.9788,-0.09 0.10461,0.87649 2.60356,-0.15249 0.29774,3.029"},"18157":{"name":"Tippecanoe, IN","path":"m 677.64208,245.66914 5.60356,-0.524 1.26053,-0.112 0.35297,2.98 0.47424,5.025 -6.88723,0.65 -0.32091,-3.496 -0.26565,-2.515 -0.21751,-2.008"},"18171":{"name":"Warren, IN","path":"m 670.36441,248.32714 7.49518,-0.65 0.26565,2.515 -2.14479,1.384 -0.42611,0.353 -2.77058,2.909 -0.23534,0.448 -0.016,0.121 0.0891,0.216 0.54556,0.586 -2.20898,-0.278 -0.59369,-7.604"},"18007":{"name":"Benton, IN","path":"m 674.2992,241.93914 2.90964,-0.271 0.65075,6.009 -7.49518,0.65 -0.0267,-0.328 -0.50455,-5.666 4.46609,-0.394"},"18001":{"name":"Adams, IN","path":"m 716.24121,233.19814 0.542,4.468 0.42075,3.583 -4.58019,0.626 -1.02158,-8.026 4.63902,-0.651"},"18179":{"name":"Wells, IN","path":"m 707.10935,234.37814 4.49284,-0.529 1.02158,8.026 -2.28386,0.289 -4.24323,0.492 -0.2496,-2 1.97007,-0.236 -0.7078,-6.042"},"18069":{"name":"Huntington, IN","path":"m 701.60564,233.00514 5.2862,-0.661 0.21751,2.034 0.7078,6.042 -1.97007,0.236 -3.268,0.376 -0.97344,-8.027"},"18169":{"name":"Wabash, IN","path":"m 700.80156,232.05714 0.10753,0.98938 0.69655,-0.0414 0.97344,8.027 -3.89735,0.449 -1.29615,0.153 -0.96275,-8.001 -0.0963,-1.004 4.475,-0.572"},"18103":{"name":"Miami, IN","path":"m 696.42283,233.63314 0.96275,8.001 1.29615,-0.153 0.22286,1.986 -5.18994,0.61 -0.90035,-7.978 -0.20789,-1.97944 3.81642,-0.48656"},"18017":{"name":"Cass, IN","path":"m 687.67072,236.62114 5.14358,-0.522 0.90035,7.978 -3.60853,0.41 -0.29774,-3.029 -2.60356,0.15249 -0.10461,-0.87649 -0.9788,0.09 -0.40293,-4.032 1.95224,-0.168"},"18181":{"name":"White, IN","path":"m 685.71848,236.78914 0.40293,4.032 -2.86864,0.245 -0.0713,0.09 -0.066,0.162 -0.0874,1.904 0.21751,1.919 -5.60356,0.524 -0.43324,-4.001 -0.19053,-2.30882 1.75034,-0.21471 -0.13945,-1.69591 1.08636,-0.11256 6.00292,-0.547"},"18003":{"name":"Allen, IN","path":"m 715.33017,225.60314 0.72384,6.06 0.1872,1.535 -4.63902,0.651 -4.49284,0.529 -0.21751,-2.034 -0.36122,-3.78882 0.39368,-0.0404 -0.23214,-2.1788 1.96829,-0.227 6.6198,-0.931 0.0499,0.425"},"18183":{"name":"Whitley, IN","path":"m 700.72846,226.28714 1.97721,-0.226 0.057,0.667 3.92944,-0.392 0.23214,2.1788 -0.39368,0.0404 0.36122,3.78882 -5.2862,0.661 -0.69655,0.0414 -0.10753,-0.98938 -0.37084,-3.029 0.58122,-0.07 -0.16224,-1.735 -0.12124,-0.94"},"18049":{"name":"Fulton, IN","path":"m 687.08416,230.58614 6.66972,-0.715 0.26995,2.03634 0.82167,-0.13808 0.17258,1.03027 1.30848,-0.17053 0.0963,1.004 -3.81642,0.48656 0.20789,1.97944 -5.14358,0.522 -0.58656,-6.035"},"18131":{"name":"Pulaski, IN","path":"m 687.08416,230.58614 0.58656,6.035 -1.95224,0.168 -6.00292,0.547 -0.56874,-5.987 7.93734,-0.763"},"18033":{"name":"DeKalb, IN","path":"m 707.94374,220.07614 6.61445,-0.852 0.28882,2.394 0.43324,3.56 -6.6198,0.931 -0.71671,-6.033"},"18113":{"name":"Noble, IN","path":"m 707.94374,220.07614 0.71671,6.033 -1.96829,0.227 -3.92944,0.392 -0.057,-0.667 -1.97721,0.226 -0.38331,-3.271 -0.24069,-1.984 7.83928,-0.956"},"18085":{"name":"Kosciusko, IN","path":"m 693.43474,223.77914 6.91041,-0.763 0.38331,3.271 0.12124,0.94 0.16224,1.735 -0.58122,0.07 0.37084,3.029 -4.475,0.572 -1.30848,0.17053 -0.17258,-1.03027 -0.82167,0.13808 -0.26995,-2.03634 0.4246,-0.0602 -0.74374,-6.03177"},"18099":{"name":"Marshall, IN","path":"m 693.43474,223.77914 0.74374,6.03177 -0.4246,0.0602 -6.66972,0.715 -0.60261,-6.028 -0.10162,-0.995 3.06653,-0.362 3.87596,-0.41 0.11232,0.988"},"18149":{"name":"Starke, IN","path":"m 686.48155,224.55814 0.60261,6.028 -7.93734,0.763 -0.1355,-1.494 1.88628,-1.029 0.50634,-0.33 0.39223,-0.618 0.29952,-0.564 0.1141,-0.305 0.35123,-1.351 0.92353,-0.795 2.00751,-0.2 0.98949,-0.105"},"18073":{"name":"Jasper, IN","path":"m 679.01132,229.85514 0.1355,1.494 0.56874,5.987 -1.08636,0.11256 0.13945,1.69591 -1.75034,0.21471 0.19053,2.30882 -2.90964,0.271 -0.39936,-4.033 -0.0963,-0.04 -0.0499,-0.1 -0.62757,-6.933 0.92531,-0.628 0.40293,-0.578 0.97166,-0.563 0.19255,-0.04 0.34588,0.09 0.93066,0.323 1.32645,0.841 0.15155,0.04 0.49207,-0.274 0.14619,-0.193"},"18111":{"name":"Newton, IN","path":"m 668.93989,232.43314 2.25279,-0.31939 1.93339,-1.27761 0.62757,6.933 0.0499,0.1 0.0963,0.04 0.39936,4.033 -4.46609,0.394 -0.56339,-6.308 -0.32983,-3.592"},"18151":{"name":"Steuben, IN","path":"m 713.58652,213.98614 0.49742,1.428 0.47425,3.81 -6.61445,0.852 -0.65788,-5.35 6.30066,-0.74"},"18087":{"name":"LaGrange, IN","path":"m 705.66345,214.90014 1.62241,-0.174 0.65788,5.35 -7.83928,0.956 -0.67749,-5.415 6.23648,-0.717"},"18039":{"name":"Elkhart, IN","path":"m 699.42697,215.61714 0.67749,5.415 0.24069,1.984 -6.91041,0.763 -0.84508,-7.456 4.60337,-0.467 2.23394,-0.239"},"18141":{"name":"St. Joseph, IN","path":"m 692.58966,216.32314 0.73276,6.468 -3.87596,0.41 -3.06653,0.362 0.10162,0.995 -0.98949,0.105 -0.73811,-7.522 5.06335,-0.522 2.77236,-0.296"},"18091":{"name":"LaPorte, IN","path":"m 679.64424,217.63214 5.10971,-0.491 0.73811,7.522 -2.00751,0.2 -0.92353,0.795 -0.35123,1.351 -0.1141,0.305 -0.29952,0.564 -0.39223,0.618 -0.50634,0.33 -1.88628,1.029 -1.09646,-10.913 1.72938,-1.31"},"20043":{"name":"Doniphan, KS","path":"m 534.81102,265.90314 0.55447,0 0.009,0.216 0.11232,0.162 2.12161,1.92 0.85935,0.553 0.43324,0.16 0.33696,0.128 0.0642,0.02 0.0802,0 0.66858,-0.06 0.13015,-0.05 0.1034,-0.1 0.0143,-0.02 0.60261,-0.683 1.47086,1.849 0.14442,0.683 0.13728,0.634 -0.36906,0.822 -0.37083,0.06 -1.26941,1.124 -0.0713,0.08 -0.6044,0.882 -0.20859,0.298 -0.87007,-0.61232 -4.02213,-0.0317 -0.0571,-8.042"},"20013":{"name":"Brown, KS","path":"m 526.96818,265.93314 7.84284,-0.03 0.0571,8.042 -3.94549,0.02 -3.9544,0.02 0,-8.053"},"20187":{"name":"Stanton, KS","path":"m 414.2694,314.89414 9.27449,0.619 -0.44215,8.044 -0.56339,-0.03 -8.78241,-0.556 0.3851,-5.898 0.12836,-2.177"},"20129":{"name":"Morton, KS","path":"m 413.75594,322.96914 8.78241,0.556 -0.50633,9.096 -8.60591,-0.474 -0.25674,-0.02 0.58657,-9.162"},"20189":{"name":"Stevens, KS","path":"m 422.53835,323.52514 0.56339,0.03 7.89098,0.457 0.39223,0.02 -0.45641,9.025 -8.89652,-0.443 0.50633,-9.096"},"20067":{"name":"Grant, KS","path":"m 423.54389,315.51314 7.88207,0.433 -0.43324,8.068 -7.89098,-0.457 0.44215,-8.044"},"20081":{"name":"Haskell, KS","path":"m 439.31694,316.35614 -0.31378,6.051 -0.0963,2.026 -7.52193,-0.394 -0.39223,-0.02 0.43324,-8.068 7.89098,0.41"},"20175":{"name":"Seward, KS","path":"m 438.90688,324.43314 -0.0874,8.984 -5.682,-0.241 -2.20898,-0.112 0.45641,-9.025 7.52193,0.394"},"20119":{"name":"Meade, KS","path":"m 446.91019,322.76214 1.97007,0.105 -0.15333,10.958 -9.90741,-0.408 0.0874,-8.984 0.0963,-2.026 7.90703,0.355"},"20069":{"name":"Gray, KS","path":"m 447.15979,312.59814 -0.2496,10.164 -7.90703,-0.355 0.31378,-6.051 -0.12836,-2.161 0.20859,-4.016 7.86781,0.41 -0.10519,2.009"},"20057":{"name":"Ford, KS","path":"m 447.15979,312.59814 11.82934,0.512 0.0321,4.132 -0.16937,6.185 -9.97159,-0.56 -1.97007,-0.105 0.2496,-10.164"},"20025":{"name":"Clark, KS","path":"m 458.85185,323.42714 0.15154,2.018 -0.28882,8.838 -8.40623,-0.385 -1.58141,-0.07 0.15333,-10.958 9.97159,0.56"},"20033":{"name":"Comanche, KS","path":"m 468.64694,325.70214 -0.0874,8.92 -8.29392,-0.282 -1.55109,-0.06 0.28882,-8.838 9.64355,0.257"},"20097":{"name":"Kiowa, KS","path":"m 459.02122,317.24214 9.84323,0.385 -0.16938,6.082 -0.0481,1.993 -9.64355,-0.257 -0.15154,-2.018 0.16937,-6.185"},"20047":{"name":"Edwards, KS","path":"m 459.14781,309.07014 3.92944,0.137 -0.0642,2.016 5.89773,0.2 0.025,4.067 -0.0713,2.137 -9.84323,-0.385 -0.0321,-4.132 0.15868,-4.04"},"20151":{"name":"Pratt, KS","path":"m 478.69163,315.78614 0.0802,2.13 -0.16045,6.058 -9.91633,-0.265 0.16938,-6.082 0.0713,-2.137 9.75587,0.296"},"20007":{"name":"Barber, KS","path":"m 468.69507,323.70914 9.91633,0.265 0.003,1.97746 2.02904,0.0965 -0.16937,8.945 -3.60675,-0.115 -8.30817,-0.256 0.0874,-8.92 0.0481,-1.993"},"20077":{"name":"Harper, KS","path":"m 480.64387,326.04814 9.84322,0.162 -0.0802,8.982 -5.64991,-0.105 -4.28245,-0.09 0.16937,-8.945"},"20095":{"name":"Kingman, KS","path":"m 478.77185,317.91614 11.85252,0.239 -0.10519,6.019 -0.0321,2.036 -9.84322,-0.162 -2.02904,-0.0965 -0.003,-1.97746 0.16045,-6.058"},"20155":{"name":"Reno, KS","path":"m 488.76841,307.92914 3.95262,0.07 -0.11232,6.044 -0.0167,4.12352 -1.96765,-0.0125 -11.85252,-0.239 -0.0802,-2.13 0.19968,-8.068 9.8771,0.211"},"20079":{"name":"Harvey, KS","path":"m 498.64372,308.09814 3.86999,0.15506 0.0256,1.89294 -0.0303,4.049 -9.90027,-0.151 0.11232,-6.044 5.92269,0.1"},"20173":{"name":"Sedgwick, KS","path":"m 492.60871,314.04414 9.90027,0.151 -0.13728,10.134 -11.85252,-0.155 0.10519,-6.019 1.96765,0.0125 0.0167,-4.12352"},"20191":{"name":"Sumner, KS","path":"m 490.51918,324.17414 11.85252,0.155 -0.0321,11.042 -5.73727,-0.07 -6.19548,-0.107 0.0802,-8.982 0.0321,-2.036"},"20035":{"name":"Cowley, KS","path":"m 502.3717,324.32914 11.36223,0.08 0,4.026 -0.0571,7.03 -4.0899,-0.02 -7.24737,-0.07 0.0321,-11.042"},"20015":{"name":"Butler, KS","path":"m 508.14999,310.25014 5.72122,0.02 -0.11232,11.106 -0.025,3.03 -11.36223,-0.08 0.13728,-10.134 0.0303,-4.049 5.6107,0.104"},"20019":{"name":"Chautauqua, KS","path":"m 513.73393,328.43514 10.17484,0.105 0.005,6.959 -0.66501,0 -9.57223,-0.03 0.0571,-7.03"},"20049":{"name":"Elk, KS","path":"m 523.96226,321.48214 0,5.031 -0.0535,2.027 -10.17484,-0.105 0,-4.026 0.025,-3.03 10.20337,0.103"},"20073":{"name":"Greenwood, KS","path":"m 523.99613,308.33214 -0.009,3.036 -0.025,7.087 0,3.027 -10.20337,-0.103 0.11232,-11.106 2.96108,0.0176 0.0199,-2.00858 7.14396,0.05"},"20125":{"name":"Montgomery, KS","path":"m 523.96226,326.51314 7.8999,0.04 0.082,0 0.0713,2.717 -0.0553,4.741 0.005,1.453 -4.82088,0.03 -3.23056,0 -0.005,-6.959 0.0535,-2.027"},"20205":{"name":"Wilson, KS","path":"m 523.96226,318.45514 7.85889,0.02 0.041,8.083 -7.8999,-0.04 0,-8.058"},"20207":{"name":"Woodson, KS","path":"m 523.98722,311.36814 7.91594,0.02 -0.082,7.08 -7.85889,-0.02 0.025,-7.087"},"20099":{"name":"Labette, KS","path":"m 531.94417,326.55414 7.8571,-0.06 0.24069,1.02 0.11232,7.884 -6.09741,0.06 -2.09131,0 -0.005,-1.453 0.0553,-4.741 -0.0713,-2.717"},"20133":{"name":"Neosho, KS","path":"m 539.72105,318.42414 0.0178,1.339 0.0624,6.734 -7.8571,0.06 -0.082,0 -0.041,-8.083 7.8999,-0.05"},"20001":{"name":"Allen, KS","path":"m 539.8405,311.34314 -0.11945,7.081 -7.8999,0.05 0.082,-7.08 7.93734,-0.05"},"20021":{"name":"Cherokee, KS","path":"m 540.04196,327.51714 8.30818,-0.06 0.10519,7.884 -7.10296,0.06 -1.19809,0 -0.11232,-7.884"},"20037":{"name":"Crawford, KS","path":"m 548.23068,319.69214 0.11232,7.158 0.007,0.603 -8.30818,0.06 -0.24069,-1.02 -0.0624,-6.734 8.49181,-0.07"},"20011":{"name":"Bourbon, KS","path":"m 539.8405,311.34314 8.33491,-0.08 0.0553,8.429 -8.49181,0.07 -0.0178,-1.339 0.11945,-7.081"},"20075":{"name":"Hamilton, KS","path":"m 414.99325,302.76914 8.5346,0.508 0.44928,0.02 -0.37797,6.72 0.0642,3.382 -0.11945,2.113 -9.27449,-0.619 0.72385,-12.125"},"20071":{"name":"Greeley, KS","path":"m 415.62795,292.71014 8.49359,0.472 -0.59369,10.095 -8.5346,-0.508 0.50633,-8.157 0.12837,-1.902"},"20199":{"name":"Wallace, KS","path":"m 426.2913,283.20214 -0.69176,10.052 -1.478,-0.07 -8.49359,-0.472 0.49029,-8.084 0.11232,-1.995 10.06074,0.571"},"20181":{"name":"Sherman, KS","path":"m 416.82604,272.56214 11.17681,0.677 0.43324,0.02 -0.61688,10.022 -1.52791,-0.08 -10.06074,-0.571 0.59548,-10.069"},"20023":{"name":"Cheyenne, KS","path":"m 417.43578,262.50114 11.18573,0.694 -0.61866,10.044 -11.17681,-0.677 0.007,-0.134 0.60261,-9.927"},"20185":{"name":"Stafford, KS","path":"m 471.06451,305.45214 7.75548,0.225 0.0713,2.041 -0.19968,8.068 -9.75587,-0.296 -0.025,-4.067 1.95403,0.06 0.19968,-6.035"},"20093":{"name":"Kearny, KS","path":"m 423.97713,303.29814 7.46488,0.395 0.39401,0.02 -0.18542,3.866 -0.36192,6.216 0.13728,2.154 -7.88207,-0.433 0.11945,-2.113 -0.0642,-3.382 0.37797,-6.72"},"20055":{"name":"Finney, KS","path":"m 439.33299,304.10114 7.88207,0.421 0.30487,0.02 -0.25495,6.051 -7.86781,-0.41 -0.20859,4.016 0.12836,2.161 -7.89098,-0.41 -0.13728,-2.154 0.36192,-6.216 0.18542,-3.866 7.49697,0.391"},"20083":{"name":"Hodgeman, KS","path":"m 459.03548,305.01014 0.11233,4.06 -0.15868,4.04 -11.82934,-0.512 0.10519,-2.009 0.25495,-6.051 11.51555,0.472"},"20145":{"name":"Pawnee, KS","path":"m 459.10145,302.98514 9.88245,0.372 -0.0718,1.99607 2.15242,0.0989 -0.19968,6.035 -1.95403,-0.06 -5.89773,-0.2 0.0642,-2.016 -3.92944,-0.137 -0.11233,-4.06 0.066,-2.025"},"20031":{"name":"Coffey, KS","path":"m 532.05471,302.20614 0,1.021 0.0339,3.036 -0.16937,0 -0.0161,5.128 -7.91594,-0.02 0.009,-3.036 0.15155,-6.1 7.90703,-0.03"},"20003":{"name":"Anderson, KS","path":"m 532.05471,303.22714 7.92485,-0.05 0.0392,3.036 -0.17828,3.102 0,2.026 -7.93734,0.05 0.0161,-5.128 0.16937,0 -0.0339,-3.036"},"20107":{"name":"Linn, KS","path":"m 548.07023,303.10814 0.0963,7.614 0.009,0.541 -8.33491,0.08 0,-2.026 0.17828,-3.102 -0.0392,-3.036 8.09067,-0.07"},"20121":{"name":"Miami, KS","path":"m 548.02209,295.00614 0.025,6.044 0.0232,2.058 -8.09067,0.07 0.0784,-8.083 7.96408,-0.09"},"20059":{"name":"Franklin, KS","path":"m 532.14385,295.16014 7.91416,-0.06 -0.0784,8.083 -7.92485,0.05 0,-1.021 0.0891,-7.046"},"20139":{"name":"Osage, KS","path":"m 532.13493,292.11514 0.009,3.045 -0.0891,7.046 -7.90703,0.03 0.0731,-7.056 -0.007,-3.036 7.92129,-0.03"},"20111":{"name":"Lyon, KS","path":"m 516.98054,295.15114 7.24023,0.03 -0.0731,7.056 -0.15155,6.1 -7.14396,-0.05 0.0874,-8.086 0.041,-5.045"},"20017":{"name":"Chase, KS","path":"m 508.62245,300.12514 8.31708,0.07 -0.0874,8.086 -0.0199,2.00858 -2.96108,-0.0176 -5.72122,-0.02 0.0321,-3.808 0.0802,-2.291 0.32804,0.01 0.0321,-4.036"},"20127":{"name":"Morris, KS","path":"m 514.34368,292.11514 0.0789,1.02015 1.81986,0.0626 0.0209,1.94866 0.71725,0.005 -0.041,5.045 -8.31708,-0.07 -2.06359,0.0378 0.10421,-2.06979 0.27589,-5.11373 0.51234,0.003 -0.0162,-0.92334 6.90863,0.06"},"20115":{"name":"Marion, KS","path":"m 506.66307,298.09314 -0.10421,2.06979 2.06359,-0.0378 -0.0321,4.036 -0.32804,-0.01 -0.0802,2.291 -0.0321,3.808 -5.6107,-0.104 -0.0256,-1.89294 -3.86999,-0.15506 0.14442,-10.102 7.87493,0.1"},"20113":{"name":"McPherson, KS","path":"m 498.78814,297.99614 -0.14442,10.102 -5.92269,-0.1 -3.95262,-0.07 0.15867,-10.109 9.86106,0.176"},"20159":{"name":"Rice, KS","path":"m 478.9644,299.62814 9.93237,0.208 -0.12836,8.093 -9.8771,-0.211 -0.0713,-2.041 0.14441,-6.049"},"20169":{"name":"Saline, KS","path":"m 498.90937,289.92014 -0.12123,8.076 -9.86106,-0.176 0.0499,-6.06 0.0392,-2.017 9.89315,0.177"},"20053":{"name":"Ellsworth, KS","path":"m 479.0999,291.53514 9.8771,0.225 -0.0499,6.06 -0.0303,2.016 -9.93237,-0.208 0.009,-4.067 0.12658,-4.026"},"20009":{"name":"Barton, KS","path":"m 478.97332,295.56114 -0.009,4.067 -0.14441,6.049 -7.75548,-0.225 -2.15242,-0.0989 0.0718,-1.99607 0.2496,-8.069 9.73982,0.273"},"20165":{"name":"Rush, KS","path":"m 459.39741,294.95114 9.6578,0.328 0.17829,0 -0.2496,8.069 -9.88245,-0.372 0.29596,-8.034"},"20135":{"name":"Ness, KS","path":"m 447.60907,294.42914 1.66342,0.09 9.88423,0.426 0.24069,0 -0.29596,8.034 -0.066,2.025 -11.51555,-0.472 -0.30487,-0.02 0.39401,-10.093"},"20101":{"name":"Lane, KS","path":"m 439.76623,294.01014 7.84284,0.419 -0.39401,10.093 -7.88207,-0.421 0.43324,-10.091"},"20171":{"name":"Scott, KS","path":"m 431.9323,293.59314 5.51263,0.304 2.3213,0.113 -0.43324,10.091 -7.49697,-0.391 -0.39401,-0.02 0.49029,-10.1"},"20203":{"name":"Wichita, KS","path":"m 425.59954,293.25414 6.33276,0.339 -0.49029,10.1 -7.46488,-0.395 -0.44928,-0.02 0.59369,-10.095 1.478,0.07"},"20109":{"name":"Logan, KS","path":"m 427.81921,283.28414 2.63509,0.144 2.69035,0.193 4.92607,0.257 -0.62579,10.019 -5.51263,-0.304 -6.33276,-0.339 0.69176,-10.052 1.52791,0.08"},"20063":{"name":"Gove, KS","path":"m 439.67887,283.95814 9.85035,0.49 0.29061,0 -0.54734,10.061 -1.66342,-0.09 -7.84284,-0.419 -2.3213,-0.113 0.62579,-10.019 1.60815,0.08"},"20195":{"name":"Trego, KS","path":"m 449.81983,284.45514 9.60254,0.387 0.24068,0 -0.50633,10.093 -9.88423,-0.426 0.54734,-10.061"},"20051":{"name":"Ellis, KS","path":"m 459.66305,284.84914 9.62572,0.321 0.18542,0 -0.41898,10.1 -9.6578,-0.328 -0.24069,0 0.50633,-10.093"},"20167":{"name":"Russell, KS","path":"m 469.47419,285.17914 9.6899,0.289 -0.0642,6.067 -0.12658,4.026 -9.73982,-0.273 -0.17829,0 0.41898,-10.1"},"20105":{"name":"Lincoln, KS","path":"m 489.12141,283.69214 -0.10519,6.051 -0.0392,2.017 -9.8771,-0.225 0.0642,-6.067 0.0571,-2.018 9.90027,0.242"},"20143":{"name":"Ottawa, KS","path":"m 489.16955,281.67614 9.89136,0.176 -0.0874,4.035 -0.0642,4.033 -9.89315,-0.177 0.10519,-6.051 0.0481,-2.016"},"20041":{"name":"Dickinson, KS","path":"m 506.19774,285.96714 1.23731,6.092 0.0163,0.92334 -0.51234,-0.003 -0.27589,5.11373 -7.87493,-0.1 0.12123,-8.076 0.0642,-4.033 7.22419,0.08"},"20061":{"name":"Geary, KS","path":"m 506.19774,285.96714 0.0553,-2.041 1.96829,0.05 -0.0481,3.033 4.80484,0.39 1.39777,0.02 0,0.678 -0.0321,4.026 -6.90863,-0.06 -1.23731,-6.092"},"20197":{"name":"Wabaunsee, KS","path":"m 522.56449,286.19214 0.0324,0.72729 1.61029,0.026 0.006,5.19469 0.007,3.036 -7.24023,-0.03 -0.71725,-0.005 -0.0209,-1.94866 -1.81986,-0.0626 -0.0789,-1.02015 0.0321,-4.026 2.03364,0.0173 -0.0315,-3.00034 0.11232,0.105 0.44928,0.282 0.18542,0.05 0.93244,-0.955 1.19809,-0.289 2.1127,0.169 0.41898,0.17 0.25673,0.328 0.49742,1.046 0.0232,0.184"},"20177":{"name":"Shawnee, KS","path":"m 522.62867,284.10214 7.89098,0 -0.0268,1.75234 -0.0369,2.1252 1.66294,-0.17454 0.016,4.317 -7.92129,0.03 -0.006,-5.19469 -1.61029,-0.026 -0.0324,-0.72729 0.0642,-2.09"},"20045":{"name":"Douglas, KS","path":"m 537.67253,288.04114 2.33734,1.414 0.0481,5.641 -7.91416,0.06 -0.009,-3.045 -0.016,-4.317 0.77376,-0.28 0.36014,-0.04 0.24782,0.04 0.35479,0.152 0.22465,0.257 0.56338,0.338 0.31379,0.08 0.25495,-0.02 2.46036,-0.289"},"20091":{"name":"Johnson, KS","path":"m 542.62178,289.22114 0.47424,-1.462 0.11232,-0.1 0.23356,-0.08 0.27277,0 1.51901,0.386 2.72422,-0.04 0.0571,4.565 0.007,2.522 -7.96408,0.09 -0.0481,-5.641 2.61191,-0.234"},"20209":{"name":"Wyandotte, KS","path":"m 548.01496,285.23414 -0.082,1.079 0.025,1.606 -2.72422,0.04 -1.51901,-0.386 -0.27277,0 -0.23356,0.08 -0.11232,0.1 -0.47424,1.462 -0.025,-3.19 0.12124,-1.704 1.89697,0 3.39994,0.907"},"20103":{"name":"Leavenworth, KS","path":"m 537.72958,279.34614 3.71907,-0.04 3.16637,5.017 -1.89697,0 -0.12124,1.704 0.025,3.19 -2.61191,0.234 -2.33734,-1.414 -0.0321,-1.961 0.11945,-2.331 -0.0303,-4.403"},"20087":{"name":"Jefferson, KS","path":"m 530.83344,279.38714 6.89614,-0.04 0.0303,4.403 -0.11945,2.331 0.0321,1.961 -2.46036,0.289 -0.25495,0.02 -0.31379,-0.08 -0.56338,-0.338 -0.22465,-0.257 -0.35479,-0.152 -0.24782,-0.04 -0.36014,0.04 -0.77376,0.28 -1.66294,0.17454 0.0369,-2.1252 0.0268,-1.75234 -0.0672,-2.74378 0.38094,-1.96422"},"20005":{"name":"Atchison, KS","path":"m 539.06317,276.68614 2.38548,2.624 -3.71907,0.04 -6.89614,0.04 0.0891,-5.419 3.94549,-0.02 4.02213,0.0317 0.87007,0.61232 -0.6971,2.097"},"20085":{"name":"Jackson, KS","path":"m 530.83344,279.38714 -0.38094,1.96422 0.0671,2.74378 -7.89098,0 0,-8.099 2.42286,0.0476 1.87673,0.0252 0.0399,-2.08988 3.9544,-0.02 -0.0891,5.419"},"20149":{"name":"Pottawatomie, KS","path":"m 522.62867,284.10214 -0.0642,2.09 -0.0232,-0.184 -0.49742,-1.046 -0.25673,-0.328 -0.41898,-0.17 -2.1127,-0.169 -1.19809,0.289 -0.93244,0.955 -0.18542,-0.05 -0.44928,-0.282 -0.11232,-0.105 -1.2694,-0.378 -1.17313,-0.515 -1.66342,-1.541 -0.87539,-1.367 -0.86826,-1.597 0.007,-0.926 0.21752,-0.362 2.26602,-2.458 6.03502,0.03 3.57465,0 0,8.099"},"20161":{"name":"Riley, KS","path":"m 506.25301,283.92614 0.12837,-8.02 2.68322,0.02 3.9544,0.03 -2.26602,2.458 -0.21752,0.362 -0.007,0.926 0.86826,1.597 0.87539,1.367 1.66342,1.541 1.17313,0.515 1.2694,0.378 0.0315,3.00034 -2.03364,-0.0173 0,-0.678 -1.39777,-0.02 -4.80484,-0.39 0.0481,-3.033 -1.96829,-0.05"},"20027":{"name":"Clay, KS","path":"m 499.06091,281.85214 0.10519,-6.044 7.21528,0.1 -0.12837,8.02 -0.0553,2.041 -7.22419,-0.08 0.0874,-4.035"},"20029":{"name":"Cloud, KS","path":"m 489.24978,275.63414 0.0481,-2.019 9.89136,0.177 -0.0232,2.016 -0.10519,6.044 -9.89136,-0.176 0.0802,-6.042"},"20123":{"name":"Mitchell, KS","path":"m 489.24978,275.63414 -0.0802,6.042 -0.0481,2.016 -9.90027,-0.242 0.25851,-8.057 9.77013,0.241"},"20141":{"name":"Osborne, KS","path":"m 479.22114,283.45014 -0.0571,2.018 -9.6899,-0.289 -0.18542,0 0.10519,-3.366 0.13728,-2.676 0.14441,-4.024 9.4813,0.28 0.3227,0 -0.25851,8.057"},"20163":{"name":"Rooks, KS","path":"m 459.8556,274.77114 9.44208,0.315 0.37797,0.02 -0.14441,4.024 -0.13728,2.676 -0.10519,3.366 -9.62572,-0.321 -0.24068,0 0.43323,-10.071"},"20065":{"name":"Graham, KS","path":"m 449.52922,284.44814 0.49029,-10.077 9.38503,0.38 0.45106,0.02 -0.43323,10.071 -9.60254,-0.387 -0.29061,0"},"20179":{"name":"Sheridan, KS","path":"m 440.19233,273.88614 9.49913,0.478 0.32805,0 -0.49029,10.077 -9.85035,-0.49 0.51346,-10.072"},"20193":{"name":"Thomas, KS","path":"m 427.81921,283.28414 0.61688,-10.022 11.39432,0.61 0.36192,0.01 -0.51346,10.072 -1.60815,-0.08 -4.92607,-0.257 -2.69035,-0.193 -2.63509,-0.144"},"20153":{"name":"Rawlins, KS","path":"m 428.62151,263.19514 1.519,0.08 9.88245,0.529 0.34766,0.03 -0.54021,10.043 -11.39432,-0.61 -0.43324,-0.02 0.61866,-10.044"},"20039":{"name":"Decatur, KS","path":"m 440.37062,263.82914 9.52944,0.457 0.27278,0.02 -0.48138,10.06 -9.49913,-0.478 -0.36192,-0.01 0.54021,-10.043"},"20147":{"name":"Phillips, KS","path":"m 467.64318,264.97014 1.95937,0.06 -0.30487,10.06 -9.44208,-0.315 -0.45106,-0.02 0.41897,-10.062 7.81967,0.281"},"20137":{"name":"Norton, KS","path":"m 459.78251,264.68914 0.041,0 -0.41897,10.062 -9.38503,-0.38 -0.32805,0 0.48138,-10.06 9.60967,0.385"},"20183":{"name":"Smith, KS","path":"m 469.60255,265.02614 5.95479,0.185 3.88131,0.105 -0.2817,10.068 -9.4813,-0.28 -0.37797,-0.02 0.30487,-10.06"},"20089":{"name":"Jewell, KS","path":"m 483.4715,265.41114 5.98688,0.144 -0.16046,8.06 -0.0481,2.019 -9.77013,-0.241 -0.3227,0 0.2817,-10.068 4.03285,0.09"},"20157":{"name":"Republic, KS","path":"m 491.38744,265.59814 7.91416,0.127 -0.11232,8.067 -9.89136,-0.177 0.16046,-8.06 1.92906,0.04"},"20201":{"name":"Washington, KS","path":"m 499.3016,265.72514 7.93199,0.105 1.9362,0.02 -0.10519,10.078 -2.68322,-0.02 -7.21528,-0.1 0.0232,-2.016 0.11232,-8.067"},"20117":{"name":"Marshall, KS","path":"m 515.14953,265.90314 3.92766,0.02 -0.0232,10.07 -6.03502,-0.03 -3.9544,-0.03 0.10519,-10.078 5.97974,0.05"},"20131":{"name":"Nemaha, KS","path":"m 523.07082,265.93314 3.89736,0 0,8.053 -0.0399,2.08988 -1.87673,-0.0252 -2.42286,-0.0476 -3.57465,0 0.0232,-10.07 3.99363,0"},"21105":{"name":"Hickman, KY","path":"m 648.87547,335.90014 5.68201,-0.139 0.41719,6.254 -0.19968,0.02 -0.13728,0 -1.38886,-1.622 -0.7488,-0.282 -4.33059,-1.046 0.70601,-3.188"},"21075":{"name":"Fulton, KY","path":"m 648.16946,339.08814 4.33059,1.046 0.7488,0.282 1.38886,1.622 -9.36185,0.676 -1.29436,0.184 1.42273,-3.19 1.1639,1.0898 0.84441,-0.0675 0.24723,-1.08361 0.50969,-0.55868 m -6.4219,3.986 -0.40828,-0.584 -0.025,-0.03 -0.19968,-0.427 -0.007,-0.02 -0.0178,-0.1 -0.0178,-0.07 0.0178,-0.08 0.025,-0.105 0.0232,-0.09 0.0303,-0.04 0.21038,-0.281 0.1141,-0.07 0.33696,-0.05 0.51347,0.08 0.28169,0.08 0.0481,0.03 0.0392,0.03 0.025,0.02 0.11767,0.183 0.0107,0.02 0.11232,0.266 0.0571,0.25 0,0 0.007,0.04 0,0.1 -0.016,0.06 -0.0571,0.227 -0.0232,0.09 -0.0285,0.06 -0.18007,0.339 -0.98949,0.05"},"21013":{"name":"Bell, KY","path":"m 750.51689,321.94214 0.48494,0.948 -0.0635,3.86131 1.28298,1.36069 -3.70302,1.987 -4.60515,0.884 -0.91335,-1.48603 1.58727,-0.90897 1.22305,-2.155 1.70799,-1.753 0.75772,-0.713 1.11786,-1.244 0.11232,-0.483 -0.0891,-0.177 -0.41006,-0.323 1.51009,0.202"},"21121":{"name":"Knox, KY","path":"m 743.62253,320.12714 0.22643,-0.02 1.57427,0.202 0.58656,0.167 0.23356,0.209 0.2496,0.289 0.0392,0.162 0.53843,0.224 0.77912,0.25 0.75593,0.135 0.40115,0 0.41006,0.323 0.0891,0.177 -0.11232,0.483 -1.11786,1.244 -0.75772,0.713 -1.70799,1.753 -1.22305,2.156 -1.58319,-0.733 -2.29811,-2.667 -0.78625,-2.291 3.70302,-2.771"},"21235":{"name":"Whitley, KY","path":"m 736.22897,323.59814 3.69054,-0.7 0.78625,2.291 2.29811,2.667 1.58319,0.732 -1.58727,0.90897 0.91335,1.48603 -1.03585,0.103 -4.35555,0.5 -1.166,-1.086 -0.53129,-0.651 -1.05903,-2.282 -0.0392,-0.323 0.50277,-3.646"},"21125":{"name":"Laurel, KY","path":"m 738.03858,314.63814 3.70302,1.148 -0.23177,1.809 0.54556,0.603 0.94848,0.586 0.50634,0.755 0.11232,0.588 -3.70302,2.771 -3.69054,0.7 -1.13925,-0.171 0.70779,-4.578 2.24107,-4.211"},"21051":{"name":"Clay, KY","path":"m 744.30537,313.16714 1.47978,0.07 2.7171,1.34 0.72206,0.07 0.40828,0.465 -0.23793,3.14747 1.12223,3.69153 -1.51009,-0.202 -0.40115,0 -0.75593,-0.135 -0.77912,-0.25 -0.53843,-0.224 -0.0392,-0.162 -0.2496,-0.289 -0.23356,-0.209 -0.58656,-0.167 -1.57427,-0.202 -0.22643,0.02 -0.11232,-0.588 -0.50634,-0.755 -0.94848,-0.586 -0.54556,-0.603 0.23177,-1.809 2.56377,-2.619"},"21131":{"name":"Leslie, KY","path":"m 749.63259,315.10314 1.35141,-1.815 1.52614,0.884 1.98611,1.245 0.68997,0.604 0.73098,1.277 0.28348,0.955 -0.025,1.004 -5.17389,3.633 -0.48494,-0.948 -1.12223,-3.69153 0.23793,-3.14747"},"21095":{"name":"Harlan, KY","path":"m 756.17572,319.25714 1.14817,0.305 0.54555,0.684 2.70818,-1.462 1.39956,0.771 -0.0731,1.742 -0.37797,0.661 -1.18453,0.94749 -1.7333,0.0851 -0.71417,2.67216 -1.10614,0.0851 -3.46434,2.00421 -1.10232,0.35985 -1.28298,-1.36069 0.0635,-3.86131 5.17389,-3.633"},"21133":{"name":"Letcher, KY","path":"m 763.48014,312.38814 0.81833,0.714 0.51525,-0.02 0.50277,-0.41 0.10697,0 0.5937,0.376 0.71671,0.644 -2.47958,2.20387 0.13476,1.9525 -1.6249,0.9805 -0.78697,0.72913 -1.39956,-0.771 -2.70818,1.462 -0.54555,-0.684 0.21929,0.178 0.0642,0 0.82012,-0.651 0.0606,-0.09 0.0481,-0.258 -0.0232,-1.115 -0.46533,-0.893 0.0303,-0.16 0.31379,-0.813 0.51346,-0.963 0.32627,0.226 0.39045,0 0.70779,-0.562 0.36014,-0.362 0.33875,-0.435 1.24444,-0.866 1.20701,-0.41"},"21119":{"name":"Knott, KY","path":"m 759.3314,307.93614 1.79356,0.265 1.31933,0.731 0.16581,0.259 0.0891,0.754 -0.0392,0.626 0.32804,0.963 0.0963,0.1 0.40293,0.233 0.34587,0.154 -0.353,0.369 -1.20701,0.41 -1.24444,0.866 -0.33875,0.435 -0.36014,0.362 -0.70779,0.562 -0.39045,0 -0.32627,-0.226 -2.55106,-0.61598 -0.33897,-3.88602 0.0308,-2.34686 2.81998,-0.32714 0.46533,0.321"},"21193":{"name":"Perry, KY","path":"m 756.01526,310.28914 0.33897,3.88602 2.55106,0.61598 -0.51346,0.963 -0.31379,0.813 -0.0303,0.16 0.46533,0.893 0.0232,1.115 -0.0481,0.258 -0.0606,0.09 -0.82012,0.651 -0.0642,0 -0.21929,-0.178 -1.14817,-0.305 0.025,-1.004 -0.28348,-0.955 -0.73098,-1.277 -0.68997,-0.604 -1.98611,-1.245 -1.52614,-0.884 -1.35141,1.815 -0.40828,-0.465 -0.60974,-1.705 2.1127,-0.747 3.90448,-1.927 1.38351,0.03"},"21189":{"name":"Owsley, KY","path":"m 747.53593,309.07014 1.07864,3.863 0.60974,1.705 -0.72206,-0.07 -2.7171,-1.34 -1.47978,-0.07 -2.30525,-3.657 0.4261,0.321 0.4172,0.171 0.36192,0.07 1.42986,-0.345 1.06081,-0.555 0.21573,-0.314 0.85399,-0.06 0.7702,0.266"},"21109":{"name":"Jackson, KY","path":"m 738.17408,308.86814 3.3928,0.114 0.43324,0.528 2.30525,3.657 -2.56377,2.619 -3.70302,-1.148 -0.28169,-1.102 -0.49564,-1.197 -0.54021,-0.756 -0.34588,-0.618 -0.0874,-0.587 0.0553,-0.264 1.83101,-1.246"},"21065":{"name":"Estill, KY","path":"m 737.52333,302.25414 1.44769,0.16 0.77377,0.758 1.2284,0.827 1.43521,0.1 1.92906,0.482 -2.77058,4.405 -3.3928,-0.114 -0.65075,-6.614"},"21129":{"name":"Lee, KY","path":"m 744.59598,304.53814 3.55861,1.356 -0.61866,3.176 -0.7702,-0.266 -0.85399,0.06 -0.21573,0.314 -1.06081,0.555 -1.42986,0.345 -0.36192,-0.07 -0.4172,-0.171 -0.4261,-0.321 -0.43324,-0.528 2.77058,-4.405 0.25852,-0.04"},"21025":{"name":"Breathitt, KY","path":"m 748.15459,305.89414 0.6133,0.336 0.55269,-0.304 0.12837,-0.176 0.23177,-0.481 0.0481,-0.296 -0.0214,-0.147 0.0464,-0.217 0.0963,-0.161 0.47602,-0.279 2.6333,0.353 5.90665,3.093 -2.81998,0.32714 -0.0308,2.34686 -1.38351,-0.03 -3.90448,1.927 -2.1127,0.747 -1.07864,-3.863 0.61866,-3.176"},"21071":{"name":"Floyd, KY","path":"m 763.67982,301.86114 1.49583,0.617 -0.48316,0.163 -0.30487,0.185 -0.0802,0.119 0.34766,3.311 0.52951,0.523 0.30487,0.716 0.0143,0.505 -0.35301,1.455 -0.84329,2.016 -0.30487,0.41 -0.16938,0.138 -0.34587,-0.154 -0.40293,-0.233 -0.0963,-0.1 -0.32804,-0.963 0.0392,-0.626 -0.0891,-0.754 -0.16581,-0.259 -1.31933,-0.731 -1.79356,-0.265 -1.00376,-5.242 0.58657,0.01 2.08952,-1.075 0.57052,-0.209 0.53842,0.01 1.51188,0.377 0.0553,0.05"},"21115":{"name":"Johnson, KY","path":"m 763.66377,298.14214 -0.8576,2.09994 0.8736,1.61906 -0.0276,-0.025 -0.0276,-0.025 -1.51188,-0.377 -0.53842,-0.01 -0.57052,0.209 -2.08952,1.075 -0.58657,-0.01 -1.59745,-3.116 -0.0499,-2.45 0.15333,-0.499 0.0802,-0.161 0.30843,-0.264 0.0695,0 2.17867,0.457 1.87023,0.948 1.06972,0.378 1.25336,0.162"},"21153":{"name":"Magoffin, KY","path":"m 756.73019,299.57814 1.59745,3.116 1.00376,5.242 -0.46533,-0.321 -5.90665,-3.093 -0.36905,-0.956 -0.32983,-1.28 2.09843,-3.172 0.0499,-0.05 0.71315,0 0.83438,0.17 0.77377,0.344"},"21237":{"name":"Wolfe, KY","path":"m 747.96382,300.69514 0.24782,0.386 0.98949,0.451 1.89519,0.641 1.49405,1.393 0.36905,0.956 -2.6333,-0.353 -0.47602,0.279 -0.0963,0.161 -0.0464,0.217 0.0214,0.147 -0.0481,0.296 -0.23177,0.481 -0.12837,0.176 -0.55269,0.304 -0.6133,-0.336 -3.55861,-1.356 1.04476,-2.685 2.32308,-1.158"},"21197":{"name":"Powell, KY","path":"m 739.33295,300.19614 3.56574,-0.16 2.74205,1.817 -1.04476,2.685 -0.25852,0.04 -1.92906,-0.482 -1.43521,-0.1 -1.2284,-0.827 -0.77377,-0.758 0.36193,-2.218"},"21049":{"name":"Clark, KY","path":"m 736.76918,296.22814 2.56377,3.968 -0.36193,2.218 -1.44769,-0.16 -4.70143,-0.321 0.41363,-4.147 3.53365,-1.558"},"21173":{"name":"Montgomery, KY","path":"m 738.36128,294.22014 0.95562,0.915 0.93066,0.144 0.20146,0.177 1.03763,0.957 1.18918,1.441 0.15332,0.31 0.0695,1.872 -3.56574,0.16 -2.56377,-3.968 1.5921,-2.008"},"21165":{"name":"Menifee, KY","path":"m 747.31842,296.36514 1.21592,0.232 -0.57052,4.098 -2.32308,1.158 -2.74205,-1.817 -0.0695,-1.872 4.48927,-1.799"},"21175":{"name":"Morgan, KY","path":"m 755.95108,296.22014 0.72919,0.908 0.0499,2.45 -0.77377,-0.344 -0.83438,-0.17 -0.71315,0 -0.0499,0.05 -2.09843,3.172 0.32983,1.28 -1.49405,-1.393 -1.89519,-0.641 -0.98949,-0.451 -0.24782,-0.386 0.57052,-4.098 2.78662,-2.281 1.20902,2.2504 3.4211,-0.3464"},"21063":{"name":"Elliott, KY","path":"m 757.14738,292.13114 0.60407,1.85214 -1.80037,2.23686 -3.4211,0.3464 -1.20902,-2.2504 0.0963,-1.807 0.94848,-1.874 0.43502,0.09 1.37281,0.763 0.73098,0.529 1.38173,0.282 0.56338,0 0.29774,-0.158"},"21205":{"name":"Rowan, KY","path":"m 749.30454,289.81614 2.1127,2.693 -0.0963,1.807 -2.78662,2.281 -1.21592,-0.232 -2.84546,-2.821 0.93422,-0.763 0.30487,-0.331 0.7702,-1.172 -0.16759,-0.417 0.17829,-1.014 0.64183,-1.197 2.16976,1.166"},"21011":{"name":"Bath, KY","path":"m 740.36166,291.52114 0.1355,-0.157 0.0802,0 1.73651,0.09 0.19255,0.105 0.44037,0.337 0.59726,1.148 0.77912,0.919 0.11945,-0.186 0.0303,-0.225 2.84546,2.821 -4.48927,1.799 -0.15332,-0.31 -1.18918,-1.441 -1.03763,-0.957 -0.20146,-0.177 -0.93066,-0.144 -0.95562,-0.915 2.00038,-2.699"},"21181":{"name":"Nicholas, KY","path":"m 737.61248,288.54514 2.74918,2.976 -2.00038,2.699 -4.35733,-3.641 1.37459,-2.228 2.23394,0.194"},"21069":{"name":"Fleming, KY","path":"m 743.3444,285.78914 3.79038,2.861 -0.64183,1.197 -0.17829,1.014 0.16759,0.417 -0.7702,1.172 -0.30487,0.331 -0.93422,0.763 -0.0303,0.225 -0.11945,0.185 -0.77912,-0.918 -0.59726,-1.148 -0.44037,-0.337 -0.19255,-0.105 -1.73651,-0.09 -0.0802,0 -0.1355,0.157 -2.74918,-2.976 0.72384,-1.332 1.36568,0.665 2.29812,-1.413 1.34428,-0.676"},"21201":{"name":"Robertson, KY","path":"m 736.9546,285.01714 1.38172,2.196 -0.72384,1.332 -2.23394,-0.194 -1.62411,-0.39385 0.29944,-1.64415 2.90073,-1.296"},"21023":{"name":"Bracken, KY","path":"m 737.99044,280.80814 -1.03584,4.209 -2.90073,1.296 -0.85221,-0.556 -1.14996,-5.607 3.30188,0.939 2.63686,-0.281"},"21161":{"name":"Mason, KY","path":"m 742.91473,283.25014 0.42967,2.539 -1.34428,0.676 -2.29812,1.413 -1.36568,-0.665 -1.38172,-2.196 1.03584,-4.209 0.60975,0.08 0.21751,0.08 0.11232,0.09 1.56714,1.622 1.39064,0.69 1.02693,-0.121"},"21135":{"name":"Lewis, KY","path":"m 753.53172,279.74714 -1.70442,5.416 -0.80408,2.887 0.19434,0.939 -0.0731,0.168 -0.71671,0.41 -1.12321,0.249 -2.16976,-1.166 -3.79038,-2.861 -0.42967,-2.539 0.0963,-0.811 0.13728,-0.225 0.18542,-0.128 1.39777,-0.612 0.21929,-0.05 0.15154,0.02 0.025,0 0.72028,0.177 1.9148,0.46 0.0481,0.02 0.60083,0.282 0.0428,0.01 1.01802,0.763 0.72337,-0.63486 1.70727,-0.25222 0.30431,-1.21791 1.32464,-1.30901"},"21019":{"name":"Boyd, KY","path":"m 762.06401,286.00941 0.14853,1.22791 0.60486,0.69952 0.0405,0.9397 -0.24776,0.7956 -3.35715,0.554 -0.83616,-2.925 2.26424,-3.407 1.38298,2.11527"},"21089":{"name":"Greenup, KY","path":"m 757.81418,282.77814 2.86685,1.116 -2.26424,3.407 -1.76148,-0.346 -2.67431,-1.189 -0.73989,-0.257 -1.41381,-0.346 1.70442,-5.416 0,0 0.31914,-0.145 1.48691,-0.673 0.48494,-0.213 0.0214,0 0.0909,0 0.18364,0.08 0.082,0.09 0.0232,0.04 0.0481,0.07 0.0303,0.06 0.009,0.03 0.007,0.03 0.0339,0.137 0.0143,0.163 0,0.02 0.009,0.01 -0.0178,0.278 0.16937,0.724 0.49921,1.502 0.041,0.09 0.11945,0.255 0.14442,0.169 0.0178,0.03 0.3851,0.257 0.0802,0.04"},"21043":{"name":"Carter, KY","path":"m 751.8273,285.16314 1.41381,0.346 0.73989,0.257 2.67431,1.189 1.76148,0.346 0.83616,2.925 -2.10557,1.905 -0.29774,0.158 -0.56338,0 -1.38173,-0.282 -0.73098,-0.529 -1.37281,-0.763 -0.43502,-0.09 -0.94848,1.874 -2.1127,-2.693 1.12321,-0.249 0.71671,-0.41 0.0731,-0.168 -0.19434,-0.939 0.80408,-2.887"},"21127":{"name":"Lawrence, KY","path":"m 759.25295,290.22614 3.35715,-0.554 -0.44929,1.967 0,0 -0.0189,0.50545 0.80496,0.43682 0,0.02 0.33398,0.62528 0.53578,0.22658 0.90506,1.44203 1.21519,0.44384 0.025,0.03 0.007,0.02 0,0.129 -0.46533,0.804 -1.40085,0.33093 -0.43907,1.48507 -1.25336,-0.162 -1.06972,-0.378 -1.87023,-0.948 -2.17867,-0.457 -0.0695,0 -0.30843,0.264 -0.0802,0.161 -0.15333,0.499 -0.72919,-0.908 1.80037,-2.23686 -0.60407,-1.85214 2.10557,-1.905"},"21159":{"name":"Martin, KY","path":"m 767.14013,298.00293 2.09154,2.56421 -1.45094,1.67683 -2.60508,0.23417 -1.49583,-0.617 -0.8736,-1.61906 0.8576,-2.09994 0.43907,-1.48507 1.40085,-0.33093 1.63644,1.67679"},"21195":{"name":"Pike, KY","path":"m 765.17565,302.47814 2.60508,-0.23417 1.45094,-1.67683 -0.004,0.01 -0.004,0.01 0.0339,0.113 0.67214,1.035 1.32546,0.77503 0.61789,-0.36623 0.54941,1.04892 1.16569,1.00328 10e-4,0 10e-4,0 10e-4,0 0.001,0 1.17466,0.26062 1.06878,-0.37538 0.47543,0.21776 -5.28086,6.347 -0.6757,0.872 -2.71532,1.531 -0.70601,0.507 -0.20147,0.137 -0.71671,-0.644 -0.5937,-0.376 -0.10697,0 -0.50277,0.41 -0.51525,0.02 -0.81833,-0.714 0.353,-0.369 0.16938,-0.138 0.30487,-0.41 0.84329,-2.016 0.35301,-1.455 -0.0143,-0.505 -0.30487,-0.716 -0.52951,-0.523 -0.34766,-3.311 0.0802,-0.119 0.30487,-0.185 0.48316,-0.163"},"21097":{"name":"Harrison, KY","path":"m 734.05387,286.31314 -0.29944,1.64415 1.62411,0.39385 -1.37459,2.228 -4.163,2.58 -2.62617,-4.582 1.29258,-1.324 4.6943,-1.496 0.85221,0.556"},"21017":{"name":"Bourbon, KY","path":"m 729.84095,293.15914 4.163,-2.58 4.35733,3.641 -1.5921,2.008 -3.53365,1.558 -0.80745,-0.21577 -0.9998,-0.40813 0.0582,-1.85079 -0.71127,-0.50431 -0.93422,-1.648"},"21151":{"name":"Madison, KY","path":"m 732.8219,301.93314 4.70143,0.321 0.65075,6.614 -1.83101,1.246 -2.70818,-0.04 -3.8403,-4.919 1.39777,-1.975 1.62954,-1.246"},"21203":{"name":"Rockcastle, KY","path":"m 736.34307,310.11414 -0.0553,0.264 0.0874,0.587 0.34588,0.618 0.54021,0.756 0.49564,1.197 0.28169,1.102 -2.24107,4.211 -4.36446,-3.593 0.57052,-3.742 1.34464,0.28936 0.28668,-1.73036 2.70818,0.04"},"21147":{"name":"McCreary, KY","path":"m 735.08972,323.42714 1.13925,0.171 -0.50277,3.646 0.0392,0.323 1.05903,2.282 0.53129,0.651 1.166,1.086 -0.62757,0.07 -9.43495,0.884 1.46374,-3.239 1.15708,-1.822 0.27991,-1.448 3.72977,-2.605"},"21137":{"name":"Lincoln, KY","path":"m 727.79243,308.55414 4.21114,2.96 -0.57052,3.742 -1.02806,-0.40033 -2.64465,2.94833 0.0891,-1.448 -0.4582,-1.357 -1.40668,-0.538 -1.08399,-0.724 -0.28169,-0.907 0.0178,-1.881 3.15568,-2.395"},"21079":{"name":"Garrard, KY","path":"m 726.25025,304.51314 0.33696,-0.321 0.26565,-0.09 1.31041,0.749 0.0713,0.538 0.57052,0.708 0.27456,0.103 0.0481,-0.03 0.66679,-1.015 3.8403,4.919 -0.28668,1.73036 -1.34464,-0.28936 -4.21114,-2.96 -1.76861,-1.624 0.22643,-2.417"},"21113":{"name":"Jessamine, KY","path":"m 726.73875,300.06314 3.38094,0.98093 1.07267,2.13507 -1.39777,1.975 -0.66679,1.015 -0.0481,0.03 -0.27456,-0.103 -0.57052,-0.708 -0.0713,-0.538 -1.31041,-0.749 -0.26565,0.09 -0.33696,0.321 -0.007,-1.084 0.49564,-3.366"},"21067":{"name":"Fayette, KY","path":"m 730.77517,294.80714 0.71127,0.50431 -0.0582,1.85079 0.9998,0.40813 0.80745,0.21577 -0.41363,4.147 -1.62954,1.246 -1.07267,-2.13507 -3.38094,-0.98093 0.31557,-2.671 3.72085,-2.585"},"21239":{"name":"Woodford, KY","path":"m 725.05216,295.78514 2.00216,1.607 -0.31557,2.671 -0.49564,3.366 -1.8417,-2.307 -1.62241,-3.231 2.27316,-2.106"},"21209":{"name":"Scott, KY","path":"m 727.21478,288.57714 2.62617,4.582 0.93422,1.648 -3.72085,2.585 -2.00216,-1.607 -0.70067,-3.574 2.51028,-3.117 0.35301,-0.517"},"21073":{"name":"Franklin, KY","path":"m 722.03198,292.37814 2.31951,-0.167 0.70067,3.574 -2.27316,2.106 -0.90623,0.79442 -1.96419,-0.74442 -0.0874,-4.812 2.21076,-0.749"},"21005":{"name":"Anderson, KY","path":"m 719.90858,297.93914 1.96419,0.74442 0.90623,-0.79442 1.62241,3.231 -1.42095,0.852 -2.14657,1.406 -0.22286,0.12 -0.13015,-0.01 -0.0571,-0.07 -2.20185,0.112 -0.46533,-1.671 1.00554,-1.631 1.14639,-2.291"},"21167":{"name":"Mercer, KY","path":"m 724.40141,301.12214 1.8417,2.307 0.007,1.084 -0.22643,2.417 -4.9332,1.375 -0.66679,-4.885 0.0571,0.07 0.13015,0.01 0.22286,-0.119 2.14657,-1.407 1.42095,-0.852"},"21021":{"name":"Boyle, KY","path":"m 726.02382,306.93014 1.76861,1.624 -3.15568,2.395 -3.44985,0.467 -0.0642,-2.002 -0.0321,-1.109 4.9332,-1.375"},"21045":{"name":"Casey, KY","path":"m 721.1869,311.41614 3.44985,-0.467 -0.0178,1.881 0.28169,0.907 1.08399,0.724 1.40668,0.538 0.4582,1.357 -0.0891,1.448 -2.92391,3.189 -1.37816,0.36897 -1.37816,-1.66997 -0.4549,-1.46919 -2.07677,-1.14481 1.37459,-2.571 0.49936,-0.0554 -0.23549,-3.03562"},"21199":{"name":"Pulaski, KY","path":"m 727.76034,317.80414 2.64465,-2.94833 1.02806,0.40033 4.36446,3.593 -0.70779,4.578 -3.72977,2.605 -1.25336,-0.611 -1.15718,-1.95749 -1.34953,0.73549 -1.25336,-0.611 -1.56598,-0.92679 0.0559,-1.66821 2.92391,-3.189"},"21231":{"name":"Wayne, KY","path":"m 731.35995,326.03214 -0.27991,1.448 -1.15708,1.822 -1.46374,3.239 -0.1355,0 -3.35892,0.154 -0.38689,-0.08 -0.20859,-0.112 -0.0874,-0.185 -0.47246,-1.366 -0.0499,-0.218 -0.0143,-0.353 0.0481,-0.304 -0.73276,-1.971 -0.49207,-0.85 3.7779,-3.674 1.25336,0.611 1.34953,-0.73549 1.15718,1.95749 1.25336,0.611"},"21207":{"name":"Russell, KY","path":"m 722.08011,319.69214 1.37816,1.66997 1.37816,-0.36897 -0.0559,1.66821 1.56598,0.92679 -3.7779,3.674 -0.89857,0.842 -1.50296,-0.883 -0.66679,-0.28 -0.0963,0.06 0.016,0.114 0.41898,0.561 -0.24426,0.1 -0.15154,-0.03 -0.11945,-0.07 -0.68463,-0.87 0.70959,-0.713 0.2906,-1.706 0.61688,-0.922 1.14103,-2.266 0.68284,-1.503"},"21053":{"name":"Clinton, KY","path":"m 719.83905,327.67914 -0.41898,-0.561 -0.016,-0.114 0.0963,-0.06 0.66679,0.28 1.50296,0.883 0.89857,-0.842 0.49207,0.85 0.73276,1.971 -0.0481,0.304 0.0143,0.353 0.0499,0.218 0.47246,1.366 0.0874,0.185 0.20859,0.112 0.38689,0.08 -5.641,0.354 -0.35301,0.06 0.86826,-5.44"},"21057":{"name":"Cumberland, KY","path":"m 719.34876,326.08914 -0.70959,0.713 0.68463,0.87 0.11945,0.07 0.15154,0.03 0.24426,-0.1 -0.86826,5.44 -2.54059,0.46 -3.4142,-4.284 2.31417,-3.062 4.01859,-0.144"},"21001":{"name":"Adair, KY","path":"m 719.54844,317.07814 2.07677,1.14481 0.4549,1.46919 -0.68284,1.503 -1.14103,2.266 -0.61688,0.922 -0.2906,1.706 -4.01859,0.144 -1.79179,-3.785 2.93104,-2.266 3.07902,-3.104"},"21217":{"name":"Taylor, KY","path":"m 713.72202,314.12614 0.0339,-0.06 0.35123,-0.149 1.69016,-0.159 1.70108,0.93996 0.65844,-0.58925 0.89013,-0.56607 0.77429,0.17536 1.10181,0.795 -1.37459,2.571 -3.07902,3.104 -1.68659,-2.396 -1.01802,-1.291 -2.10735,-1.383 -0.0553,-0.202 -0.009,-0.658 2.12875,-0.126"},"21155":{"name":"Marion, KY","path":"m 714.19626,307.88014 0.68284,0.931 0.78803,0.731 1.38351,0.348 4.07207,-0.476 0.0642,2.002 0.23549,3.03562 -0.49936,0.0554 -1.10181,-0.795 -0.77429,-0.17536 -0.89013,0.56607 -0.65844,0.58925 -1.70108,-0.93996 -1.69016,0.159 -0.35123,0.149 -0.0339,0.06 -1.2284,-1.94 1.70264,-4.306"},"21229":{"name":"Washington, KY","path":"m 720.42383,303.42014 0.66679,4.885 0.0321,1.109 -4.07207,0.476 -1.38351,-0.348 -0.78803,-0.731 -0.68284,-0.931 4.02572,-4.348 2.20185,-0.112"},"21215":{"name":"Spencer, KY","path":"m 712.72718,298.32414 6.03501,1.906 -1.00554,1.631 -4.07542,1.23379 -1.7189,-1.03379 -0.38146,-0.41444 1.13026,-2.63756 0.016,-0.685"},"21211":{"name":"Shelby, KY","path":"m 714.68655,293.19914 5.13467,-0.07 0.0874,4.812 -1.14639,2.291 -6.03501,-1.906 0.082,-2.54398 -1.21594,-0.53802 0.19968,-0.262 0.16224,-0.109 0.30488,-0.121 0.6757,-0.202 0.6668,0.05 0.47424,-0.208 0.60974,-1.189"},"21103":{"name":"Henry, KY","path":"m 716.13424,287.71814 1.63133,-0.449 4.26641,5.109 -2.21076,0.749 -5.13467,0.07 -0.89856,-3.04 2.34625,-2.441"},"21187":{"name":"Owen, KY","path":"m 720.07082,285.48614 2.46749,-1.649 0.48138,2.316 2.95065,2.628 0.34409,0.151 0.54734,0.162 -2.51028,3.117 -2.31951,0.167 -4.26641,-5.109 2.30525,-1.783"},"21081":{"name":"Grant, KY","path":"m 725.31781,281.58714 1.519,0.06 1.67055,5.609 -1.29258,1.324 -0.35301,0.517 -0.54734,-0.162 -0.34409,-0.151 -2.95065,-2.628 -0.48138,-2.316 2.07348,-1.582 0.70602,-0.668"},"21191":{"name":"Pendleton, KY","path":"m 732.0517,280.15014 1.14996,5.607 -4.6943,1.496 -1.67055,-5.609 1.96116,-0.578 3.08436,-1.97 0.16937,1.054"},"21037":{"name":"Campbell, KY","path":"m 729.93009,275.89814 1.95224,3.198 -3.08436,1.97 -2.35517,-6.454 3.48729,1.286"},"21117":{"name":"Kenton, KY","path":"m 726.4428,274.61214 2.35517,6.454 -1.96116,0.578 -1.519,-0.06 -0.88431,-6.242 2.0093,-0.733"},"21015":{"name":"Boone, KY","path":"m 724.4335,275.34514 0.88431,6.242 -0.70602,0.668 -2.53168,-1.537 -0.24247,-1.003 -1.77395,-2.828 0.81833,-1.847 3.55148,0.305"},"21077":{"name":"Gallatin, KY","path":"m 722.08011,280.71814 2.53168,1.537 -2.07348,1.582 -2.46749,1.649 -1.88093,-2.138 3.89022,-2.63"},"21041":{"name":"Carroll, KY","path":"m 715.26598,285.34914 2.92391,-2.001 1.88093,2.138 -2.30525,1.783 -1.63133,0.449 -3.35179,-3.231 2.48353,0.862"},"21223":{"name":"Trimble, KY","path":"m 712.78245,284.48714 3.35179,3.231 -2.34625,2.441 -2.19472,-0.487 -0.0553,-1.449 1.24445,-3.736"},"21185":{"name":"Oldham, KY","path":"m 713.78799,290.15914 0.89856,3.04 -0.60974,1.189 -0.47424,0.208 -0.6668,-0.05 -0.6757,0.202 -0.30488,0.121 -0.16224,0.109 -0.19968,0.262 -3.2787,-1.858 3.2787,-3.712 2.19472,0.487"},"21111":{"name":"Jefferson, KY","path":"m 708.31457,293.38414 3.2787,1.858 1.21594,0.53802 -0.082,2.54398 -0.016,0.685 -2.17153,1.276 -2.80981,0 -2.75097,1.327 -0.53842,0.399 -0.52951,0.751 -0.2086,-0.17 0.44215,-4.041 1.67233,-2.757 2.4978,-2.41"},"21029":{"name":"Bullitt, KY","path":"m 712.71113,299.00914 -1.13026,2.63756 0.38146,0.41444 -1.46196,2.461 0.16938,0.151 -0.025,0.05 -1.02694,1.254 -0.5723,0.411 -0.77911,0.307 -0.30487,-0.02 -4.05068,-3.913 0.52951,-0.751 0.53842,-0.399 2.75097,-1.327 2.80981,0 2.17153,-1.276"},"21179":{"name":"Nelson, KY","path":"m 717.75665,301.86114 0.46533,1.671 -4.02572,4.348 -1.70264,4.306 -0.62044,0.754 -0.0695,0.05 -0.91639,-0.321 -0.0499,-0.435 0.0321,-0.715 0.0321,-0.354 0.37797,-0.434 -0.41006,-1.615 -0.16759,-0.118 -1.25336,-0.547 -0.25673,-0.05 -1.23018,-1.728 0.30487,0.02 0.77911,-0.307 0.5723,-0.411 1.02694,-1.254 0.025,-0.05 -0.16938,-0.151 1.46196,-2.461 1.7189,1.03379 4.07542,-1.23379"},"21123":{"name":"Larue, KY","path":"m 709.19175,308.40314 0.25673,0.05 1.25336,0.547 0.16759,0.118 0.41006,1.615 -0.37797,0.434 -0.0321,0.354 -0.0321,0.715 0.0499,0.435 0.91639,0.321 0.0695,-0.05 0.62044,-0.754 1.2284,1.94 -2.12875,0.126 -0.85748,0.22862 -0.34774,1.01638 -4.2985,0.05 0.0553,-2.441 1.21414,-1.67 0.75415,-0.949 1.07864,-2.08"},"21087":{"name":"Green, KY","path":"m 710.38805,315.49714 0.34774,-1.01638 0.85748,-0.22862 0.009,0.658 0.0553,0.202 2.10735,1.383 1.01802,1.291 1.68659,2.396 -2.93104,2.266 -1.93975,-0.19299 -1.13926,-1.16501 -0.0713,-5.593"},"21169":{"name":"Metcalfe, KY","path":"m 710.45937,321.09014 1.13926,1.16501 1.93975,0.19299 1.79179,3.785 -2.31417,3.062 -2.66004,-0.257 -0.60974,-3.776 -0.31379,-1.407 -0.32983,-0.932 -0.16759,-0.644 0.51347,-0.802 1.01089,-0.387"},"21171":{"name":"Monroe, KY","path":"m 710.35596,329.03814 2.66004,0.257 3.4142,4.284 -6.42012,0.617 -3.43915,0.21 -0.24069,-2.17 2.78476,-2.94267 1.24096,-0.25533"},"21213":{"name":"Simpson, KY","path":"m 694.41354,329.72814 0.6347,1.166 3.37319,0.192 -0.0214,0.722 0.19255,2.91 -2.74918,0.676 -3.66558,0 0.42978,-3.85748 1.80594,-1.80852"},"21003":{"name":"Allen, KY","path":"m 702.36692,327.72614 3.96332,4.51 0.24069,2.17 -4.18618,0.177 -3.79217,0.135 -0.19255,-2.91 1.79892,-1.895 0.54556,-0.868 1.04654,-1.212 0.57587,-0.107"},"21009":{"name":"Barren, KY","path":"m 709.44848,321.47714 -0.51347,0.802 0.16759,0.644 0.32983,0.932 0.31379,1.407 0.60974,3.776 -1.24096,0.25533 -2.78476,2.94267 -3.96332,-4.51 0.65966,-3.03 0.75911,-0.0886 0.0218,-2.4644 2.8205,-0.0185 2.8205,-0.64748"},"21099":{"name":"Hart, KY","path":"m 706.08955,315.54314 4.2985,-0.05 0.0713,5.593 -1.01089,0.387 -2.8205,0.64748 -2.8205,0.0185 0.0709,-1.20909 -2.30487,-2.47891 1.75463,-0.65577 -0.0431,-2.18823 2.80445,-0.07"},"21093":{"name":"Hardin, KY","path":"m 703.70229,302.59214 0.2086,0.17 4.05068,3.913 1.23018,1.728 -1.07864,2.08 -0.75415,0.949 -1.21414,1.67 -0.0553,2.441 -2.80445,0.07 -0.28883,-1.134 -1.14995,-1.375 -0.34587,-0.03 -0.31379,0.175 -0.49029,0.194 -1.8631,-0.709 1.74365,-4.966 2.53881,-0.722 0.41897,-1.389 -0.70067,-2.767 0.86826,-0.296"},"21163":{"name":"Meade, KY","path":"m 694.01952,302.68014 3.62458,-2.329 -0.0553,0.649 0,0.04 0.007,0.161 0.007,0.105 0.0161,0.04 0.12836,0.449 0.10519,0.161 0.041,0.06 0.0874,0.06 0.81121,0.537 0.78089,0.307 0.12837,0.02 2.59586,0.128 0.53664,-0.177 0.70067,2.767 -0.41897,1.389 -2.53881,0.722 -6.66259,-5.072 0.10519,-0.01"},"21091":{"name":"Hancock, KY","path":"m 685.43857,306.21514 2.79732,-1.854 3.19669,3.316 -0.17829,0.171 -0.11232,1.011 1.31219,3.077 -0.30665,-0.117 -3.49443,-1.432 -0.0107,-1.253 -0.7702,-1.07 -1.10182,-1.141 -1.40668,0.02 0.0749,-0.731"},"21027":{"name":"Breckinridge, KY","path":"m 691.43258,307.67714 0.13728,0 0.2389,-0.08 0.49921,-0.387 1.17313,-2.674 -0.1355,-1.373 0.0303,-0.251 0.0731,-0.104 0.0963,-0.06 0.36905,-0.07 6.66259,5.072 -1.74365,4.966 -0.19968,0.146 -1.50474,0.827 -1.79892,-0.683 -0.0178,-0.09 -0.21572,-0.223 -0.49029,-0.233 -0.0784,0 -0.41184,0.224 -0.3851,0.442 -0.53843,0.819 -1.04476,-2.152 0.30665,0.117 -1.31219,-3.077 0.11232,-1.011 0.17829,-0.171"},"21085":{"name":"Grayson, KY","path":"m 693.19227,313.97114 0.53843,-0.819 0.3851,-0.442 0.41184,-0.224 0.0784,0 0.49029,0.233 0.21572,0.223 0.0178,0.09 1.79892,0.683 1.50474,-0.827 0.19968,-0.146 1.8631,0.709 0.49029,-0.194 0.31379,-0.175 0.34587,0.03 1.14995,1.374 0.28883,1.134 0.0431,2.18823 -1.75463,0.65577 -5.58573,0.914 -0.52352,-1.05418 -2.2328,-0.40582 -1.40278,-3.80486 1.36358,-0.13314"},"21061":{"name":"Edmonson, KY","path":"m 695.98781,319.36914 5.58573,-0.914 2.30487,2.47891 -0.0709,1.20909 -0.0218,2.4644 -0.75911,0.0886 -1.43958,-0.30892 -0.49745,-0.61614 -1.19381,0.65369 -2.29978,-1.70163 -1.60815,-3.354"},"21227":{"name":"Warren, KY","path":"m 697.59596,322.72314 2.29978,1.70163 1.19381,-0.65369 0.49745,0.61614 1.43958,0.30892 -0.65966,3.03 -0.57587,0.107 -1.04654,1.212 -0.54556,0.868 -1.79892,1.895 0.0214,-0.722 -3.37319,-0.192 -0.6347,-1.166 -1.40669,-2.58 0.62757,-4.01 -0.14011,-0.43259 1.59866,0.0389 0.62612,-0.28523 0.6556,0.59888 1.22127,-0.335"},"21031":{"name":"Butler, KY","path":"m 693.23149,317.90914 2.2328,0.40582 0.52352,1.05418 1.60815,3.354 -1.22127,0.335 -0.6556,-0.59888 -0.62612,0.28523 -1.59866,-0.0389 0.14011,0.43259 -0.62757,4.01 -4.99738,-1.132 0.44215,-3.373 1.3425,-2.027 -0.21871,-0.87635 0.64203,-0.22728 0.28927,0.49236 0.44449,0.0973 2.28029,-2.193"},"21141":{"name":"Logan, KY","path":"m 688.00947,326.01614 4.99738,1.132 1.40669,2.58 -1.80594,1.80852 -0.42978,3.85748 -5.40745,0.649 -0.7702,-9.651 2.0093,-0.376"},"21219":{"name":"Todd, KY","path":"m 682.2294,326.49714 3.77077,-0.105 0.7702,9.651 -0.98771,0.114 -4.02393,0.394 0.47067,-10.054"},"21177":{"name":"Muhlenberg, KY","path":"m 684.38489,318.28414 4.06673,4.359 -0.44215,3.373 -2.0093,0.376 -3.77077,0.105 -1.51543,-1.838 0.29595,-0.651 -1.20522,-1.487 -0.21751,-1.285 1.31041,-2.057 3.48729,-0.895"},"21183":{"name":"Ohio, KY","path":"m 688.65308,310.38714 3.49443,1.432 1.04476,2.152 -1.36358,0.13314 1.40278,3.80486 -2.28029,2.193 -0.44449,-0.0973 -0.28927,-0.49236 -0.64203,0.22728 0.21871,0.87635 -1.3425,2.027 -4.06673,-4.359 -0.31603,-1.44222 1.10406,-2.00278 1.76683,-1.656 1.88238,-1.20504 -0.88398,-0.85296 0.71493,-0.738"},"21059":{"name":"Daviess, KY","path":"m 679.70843,307.48614 0.64361,0.45 2.62617,1.751 1.3425,-2.425 1.11786,-1.047 -0.0749,0.731 1.40668,-0.02 1.10182,1.141 0.7702,1.07 0.0107,1.253 -0.71493,0.738 0.88398,0.85296 -1.88238,1.20504 -1.76683,1.656 -6.91753,-2.209 0.36326,-1.286 1.83423,-1.17285 -0.83898,-1.00312 0.0945,-1.68203"},"21149":{"name":"McLean, KY","path":"m 678.25539,312.63014 6.91753,2.209 -1.10406,2.00278 0.31603,1.44222 -3.48729,0.895 -1.00558,-0.8904 -0.80047,-3.1056 -2.33199,-1.59 1.49583,-0.963"},"21107":{"name":"Hopkins, KY","path":"m 679.09155,315.18314 0.80047,3.1056 1.00558,0.8904 -1.31041,2.057 0.21751,1.285 1.20522,1.487 -0.29595,0.651 -1.23019,0.69 -2.07526,0.804 -2.97026,-0.765 -2.80623,-4.432 3.20738,-2.501 2.2268,-1.165 2.02534,-2.107"},"21047":{"name":"Christian, KY","path":"m 680.71397,324.65914 1.51543,1.838 -0.47067,10.054 -5.56077,0.579 -0.96454,0.111 0.0856,-1.969 -0.12658,-5.689 -1.4156,-0.706 0.66144,-3.489 2.97026,0.765 2.07526,-0.804 1.23019,-0.69"},"21221":{"name":"Trigg, KY","path":"m 673.77682,328.87714 1.4156,0.706 0.12658,5.689 -0.0856,1.969 -2.90073,0.339 0.007,-0.708 -2.98809,-0.06 -1.07151,0.06 -0.86647,-1.526 -1.07508,-2.708 4.91716,-2.57 2.52098,-1.198"},"21143":{"name":"Lyon, KY","path":"m 665.14773,326.24014 1.69551,-0.898 0.98949,0.03 1.42095,2.362 2.00216,2.339 -4.91716,2.57 -1.72581,-2.523 0.53486,-3.882"},"21033":{"name":"Caldwell, KY","path":"m 671.63203,320.95614 2.80623,4.432 -0.66144,3.489 -2.52098,1.198 -2.00216,-2.339 -1.42095,-2.362 -0.98949,-0.03 0.19022,-1.27646 4.76081,-3.78654 -0.16224,0.677"},"21233":{"name":"Webster, KY","path":"m 676.75956,313.59314 2.33199,1.59 -2.02534,2.107 -2.2268,1.165 -3.20738,2.501 0.16224,-0.677 -0.83779,-0.18359 0.0102,-0.76177 -1.32868,0.40372 -0.42175,-1.58236 3.26087,-3.967 4.28245,-0.595"},"21101":{"name":"Henderson, KY","path":"m 676.95211,306.74714 2.75632,0.739 -0.0945,1.68203 0.83898,1.00312 -1.83423,1.17285 -0.36326,1.286 -1.49583,0.963 -4.28245,0.595 -0.73732,-2.60624 -1.03621,-0.47657 -2.22189,-2.70919 4.07565,-0.323 0.75836,-0.20098 -0.2272,1.49545 1.04917,0.26756 0.67758,-0.94419 -0.81185,-0.98166 0.4322,-1.67638 1.01385,1.15101 1.50266,-0.43681"},"21225":{"name":"Union, KY","path":"m 666.87533,310.92614 0.83086,-0.0669 0.66425,0.42616 0.37806,-0.65042 0.4462,-0.29611 -0.84843,-1.37269 0.13542,-0.56999 2.22189,2.70919 1.03621,0.47657 0.73732,2.60624 -3.26087,3.967 -0.66856,0.0754 -0.63001,-1.62052 -0.45656,0.82708 -0.61074,0.32599 -1.43521,-1.487 -0.1462,-0.264 -0.3851,-1.045 -0.0107,-0.02 -0.0945,-0.52 -0.009,-0.03 0.025,-0.161 0.0963,-0.256 0.0232,-0.05 0.1462,-0.248 0.29061,-0.547 0.0143,0 0.83616,-0.608 0.21751,-0.236 0.1355,-0.247 0.0874,-0.234 0.23356,-0.875"},"21055":{"name":"Crittenden, KY","path":"m 669.21624,318.15514 0.42175,1.58236 1.32868,-0.40372 -0.0102,0.76177 0.83779,0.18359 -4.76081,3.78654 -0.19022,1.27646 -1.69551,0.898 -0.37753,-2.83809 -3.10085,-2.87591 0.45641,-0.608 0.30666,-0.283 0.016,0 0.0874,-0.06 0.43502,-0.264 0.0392,0 0.1141,-0.03 0.312,-0.09 0.37797,-0.08 2.5085,-0.531 0.18363,-0.04 0.3441,-0.392 0,-0.371 0.61074,-0.32599 0.45656,-0.82708 0.63001,1.62052 0.66856,-0.0754"},"21139":{"name":"Livingston, KY","path":"m 661.66935,320.52614 3.10085,2.87591 0.37753,2.83809 -0.53486,3.882 -2.02965,-1.90437 -2.45605,1.31737 -1.54219,-1.146 1.32468,0.141 0.13549,-0.02 0.41898,-0.185 0.21573,-0.595 0.26564,-1.277 -0.51346,-1.141 -0.22464,-0.216 -0.24247,-0.137 -0.76307,-0.916 -0.15511,-0.498 0.0107,-0.153 0,0 0.51525,-2.264 0.0945,-0.227 0.23355,-0.303 0.16224,-0.114 0.12837,-0.1 0.312,-0.143 0.11232,-0.05 1.05368,0.344"},"21035":{"name":"Calloway, KY","path":"m 660.56754,335.82514 6.84622,-0.472 0.86647,1.526 1.12363,3.29824 -0.46397,0.85576 -7.97834,0.554 -0.39401,-5.762"},"21157":{"name":"Marshall, KY","path":"m 660.12717,329.53514 2.45605,-1.31737 2.02965,1.90437 1.72581,2.523 1.07508,2.708 -6.84622,0.472 -0.32984,-4.434 -0.11053,-1.856"},"21083":{"name":"Graves, KY","path":"m 660.2377,331.39114 0.32984,4.434 0.39401,5.762 -0.49742,0.03 -5.48946,0.396 -0.41719,-6.254 -0.29774,-3.999 5.97796,-0.371"},"21145":{"name":"McCracken, KY","path":"m 651.68171,325.45414 6.90327,2.935 1.54219,1.146 0.11053,1.856 -5.97796,0.371 -0.0642,-0.176 -2.61191,-6.1 0.0981,-0.03"},"21039":{"name":"Carlisle, KY","path":"m 654.25974,331.76214 0.29774,3.999 -5.68201,0.139 -1.05189,-0.554 -0.009,0 0,-0.53 0.009,0 0.50634,-0.289 0.0107,0 0.68819,-2.298 5.16676,-0.618 0.0642,0.176"},"21007":{"name":"Ballard, KY","path":"m 651.58365,325.48614 2.61191,6.1 -5.16676,0.618 -0.65075,-0.838 -0.85756,-1.927 4.06316,-3.953"},"22103":{"name":"St. Tammany, LA","path":"m 636.69491,477.27614 8.21903,0.548 3.30187,4.548 0.0339,0.03 0.12836,0.13 1.23018,2.5 0.0303,0.426 -0.18363,0.465 -0.0499,0.193 0.016,0.123 0.62936,1.194 0.19255,0.371 0.43145,0.505 0.1462,0.169 0.0499,0.03 0.0713,0.05 0.0481,0.03 0.0374,0 0.91818,-0.06 -1.91124,0.784 -0.12837,-0.08 -1.10359,-0.36 -1.93887,-0.1535 -1.22338,-0.69012 -3.11329,-0.59613 -0.84947,-1.0593 -2.77006,-1.34281 -1.51019,0.65673 -0.70221,-8.41087"},"22117":{"name":"Washington, LA","path":"m 644.54488,470.11114 2.1127,-0.144 0.041,0.713 -0.24247,1.214 -0.1979,0.442 -0.12302,0.02 -0.16046,0.02 -0.0463,0.05 -0.25852,1.075 -0.29774,1.469 -0.2389,1.213 -0.21929,1.642 -8.21903,-0.548 -0.009,-0.41 -1.42986,-3.405 -0.61866,-0.515 -0.14441,-2.177 1.7276,-0.105 8.32422,-0.553"},"22081":{"name":"Red River, LA","path":"m 572.28873,444.94914 0.83617,0 4.38318,0.16565 0.32716,1.71335 0.23177,0.227 0.47246,0.713 0.37084,1.159 0.009,0.103 -0.10519,1.334 -1.80783,2.139 -0.8112,0.368 -0.7809,0 -0.56873,-0.202 -0.10698,-0.761 -1.75077,-1.293 -0.2086,-0.256 -1.23018,-1.915 -0.74702,-2.466 -1.2908,-0.972 2.77771,-0.07"},"22013":{"name":"Bienville, LA","path":"m 583.46733,436.59314 0.0647,3.20461 2.04082,-0.23761 -0.49028,7.085 -2.4051,0.06 -4.84227,0.135 -0.32716,-1.71335 -4.38318,-0.16565 0.96453,-4.042 2.62795,-0.08 1.70442,-1.085 -0.0267,-0.571 -0.67392,-2.403 5.74619,-0.184"},"22061":{"name":"Lincoln, LA","path":"m 586.32705,432.46914 1.59032,-0.05 0.82725,0.1 0.62757,0.137 0.87792,0.54552 0.12644,1.18428 2.00156,-0.0658 0.0802,2.009 0.0642,2.006 -3.99363,0.141 0.0481,0.993 -3.00414,0.09 -2.04082,0.23761 -0.0647,-3.20461 0.56931,-3.62374 2.29041,-0.50026"},"22049":{"name":"Jackson, LA","path":"m 585.57289,439.56014 3.00414,-0.09 -0.0481,-0.993 3.99363,-0.141 0.0731,1.85 0.11232,0.282 1.97542,1.824 0.0321,0.995 0.11232,3.029 -9.74516,0.33 0.49028,-7.085"},"22127":{"name":"Winn, LA","path":"m 585.08261,446.64514 9.74516,-0.33 0.19434,5.029 -0.85935,3.054 -4.99917,0.17 0.025,1.086 -0.0731,0.932 -6.78917,0.248 1.20522,-3.753 0.35301,-1.614 0.0339,-0.281 -0.12837,-1.705 -0.41184,-1.485 -0.70067,-1.294 2.4051,-0.06"},"22021":{"name":"Caldwell, LA","path":"m 594.71545,443.28614 5.37714,-0.207 1.14348,2.20101 1.68415,0.57899 0.4261,0.57 0.10519,0.193 0.0481,0.595 -1.0198,0.626 0.4582,1.622 0.26208,0.532 -0.0293,1.1507 -2.17787,-0.0347 -5.97083,0.231 -0.19434,-5.029 -0.11232,-3.029"},"22073":{"name":"Ouachita, LA","path":"m 599.07279,432.83314 3.08476,1.56085 0.0566,3.31715 -2.12161,5.368 -5.37714,0.207 -0.0321,-0.995 -1.97542,-1.824 -0.11232,-0.282 -0.0731,-1.85 -0.0642,-2.006 2.96669,-0.1 0.52952,-0.162 0.19968,-0.138 2.52276,-2.467 0.3958,-0.633"},"22083":{"name":"Richland, LA","path":"m 611.16421,435.55014 -0.18898,1.027 -0.22821,3.054 -3.00414,0.16 -0.72384,0.425 -1.68125,2.002 -0.87361,2.016 -1.54396,1.625 -1.68415,-0.57899 -1.14348,-2.20101 2.12161,-5.368 0.70602,-0.642 1.34963,-0.959 1.3015,-0.441 1.19095,-0.597 0.18364,-0.199 0.26565,-0.482 0.1765,-0.545 -0.0232,-0.09 0.8023,0.259 0.84329,1.622 2.15371,-0.09"},"22041":{"name":"Franklin, LA","path":"m 610.65966,444.30614 0.25174,5.35636 -1.51401,2.10964 -0.47425,-1.31 -0.98058,-0.465 -0.0303,0.192 -0.35122,0.596 -0.71137,0.786 -0.49563,0.362 -0.9271,0.257 -0.28882,-0.37 -0.46533,-0.714 -0.69889,-0.708 -0.49207,-0.314 -0.28169,-0.09 -0.26208,-0.532 -0.4582,-1.622 1.0198,-0.626 -0.0481,-0.595 -0.10519,-0.193 -0.4261,-0.57 1.54396,-1.625 0.87361,-2.016 1.68125,-2.002 0.72384,-0.425 3.00414,-0.16 -0.0874,4.675"},"22107":{"name":"Tensas, LA","path":"m 610.65966,444.30614 3.33396,-0.136 0.0963,-0.183 0.33696,-0.241 2.14479,-0.692 0.87539,-0.146 0.11411,0 0.25138,0.208 0.005,0.5 0,0.02 1.96116,2.291 -3.99363,5.828 -2.22502,2.942 -0.19255,0.346 -3.23948,-0.307 -0.73097,-2.965 1.51401,-2.10964 -0.25174,-5.35636"},"22065":{"name":"Madison, LA","path":"m 618.02826,435.64414 -0.4368,1.471 0.0339,0.369 0,0.03 0.0553,0.08 0.082,0.128 0.016,0.04 2.14479,2.282 0.1355,3.318 -2.24107,0.278 0,-0.02 -0.005,-0.5 -0.25138,-0.208 -0.11411,0 -0.87539,0.146 -2.14479,0.692 -0.33696,0.241 -0.0963,0.183 -3.33396,0.136 0.0874,-4.675 0.22821,-3.054 7.05303,-0.933"},"22035":{"name":"East Carroll, LA","path":"m 616.04927,425.55214 -0.63292,1.021 -0.20146,0.731 0.0321,0.186 1.54218,6.988 0.11411,0.275 0.0214,0.04 0.0606,0.07 0.0214,0.04 0.041,0.03 0.18364,0.161 0.0481,0.04 0.61153,0.191 0.13728,0.313 -7.05303,0.933 0.18898,-1.027 0.54912,-0.524 0.18364,-0.56 0.57765,-2.22 0.29596,-2.547 0.0891,-0.676 0.70067,-2.058 0.59369,-1.34 1.89519,-0.07"},"22123":{"name":"West Carroll, LA","path":"m 614.15408,425.62514 -0.59369,1.34 -0.70067,2.058 -0.0891,0.676 -0.29596,2.547 -0.57765,2.22 -0.18364,0.56 -0.54912,0.524 -2.15371,0.09 -0.84329,-1.622 -0.8023,-0.259 0.70602,-1.984 2.69035,-5.52 0.1141,-0.493 3.2787,-0.134"},"22067":{"name":"Morehouse, LA","path":"m 610.40114,425.78514 0.47424,-0.03 -0.1141,0.493 -2.69035,5.52 -0.70602,1.984 0.0232,0.09 -0.1765,0.545 -0.26565,0.482 -0.18364,0.199 -1.19095,0.598 -1.3015,0.44 -1.34963,0.959 -0.70602,0.642 -0.0566,-3.31715 -3.08476,-1.56085 0.0874,-0.07 0.14441,-0.314 -0.0571,-1.214 -0.69711,-1.977 0.17473,-2.997 11.67601,-0.475"},"22111":{"name":"Union, LA","path":"m 598.72513,426.25914 -0.17473,2.997 0.69711,1.978 0.0571,1.214 -0.14441,0.314 -0.0874,0.07 -0.3958,0.633 -2.52276,2.467 -0.19968,0.138 -0.52952,0.162 -2.96669,0.1 -0.0802,-2.009 -2.00156,0.0658 -0.12644,-1.18428 -0.87792,-0.54552 -0.62757,-0.137 -0.82725,-0.1 -1.59032,0.05 -0.19433,-5.871 12.59241,-0.339"},"22027":{"name":"Claiborne, LA","path":"m 581.07115,426.69314 5.06157,-0.1 0.19433,5.871 -2.29041,0.50026 -0.56931,3.62374 -5.74619,0.184 0.0481,-1.133 -0.29061,-1.904 -0.97701,0.04 -0.22642,-6.958 4.79592,-0.13"},"22119":{"name":"Webster, LA","path":"m 571.4383,426.95114 4.83693,-0.128 0.22642,6.958 0.97701,-0.04 0.29061,1.904 -0.0481,1.133 0.67392,2.403 0.0267,0.57 -1.70442,1.086 -2.62795,0.08 -1.32646,0.02 -0.16224,-2.015 -0.12658,-6.069 -0.20147,-2.498 -0.54734,-0.57 -0.67392,-1.006 -0.36014,-0.642 0,-0.345 0.15867,-0.837 0.58835,0"},"22015":{"name":"Bossier, LA","path":"m 570.84995,426.95814 -0.15867,0.837 0,0.345 0.36014,0.642 0.67392,1.006 0.54734,0.57 0.20147,2.498 0.12658,6.069 0.16224,2.015 1.32646,-0.02 -0.96453,4.042 -0.83617,0 -1.71155,-2.225 -2.15371,-1.148 -2.41757,-7.426 -0.20147,-1.085 -0.82725,-5.722 0.0321,-0.09 0.2086,-0.177 0.18542,0 5.44666,-0.121"},"22017":{"name":"Caddo, LA","path":"m 565.21787,427.08014 -0.2086,0.176 -0.0321,0.09 0.82725,5.722 0.20147,1.085 2.41757,7.426 2.15371,1.148 1.71155,2.225 -2.77771,0.07 -0.0178,-0.756 -0.18542,-0.28 -0.44928,-0.483 -0.40293,-0.297 -1.58319,-0.532 -0.33696,-0.07 -0.36727,0.08 -0.28348,0.178 -0.1034,0.09 -0.96632,1.141 -0.0535,0.339 0.0392,0.137 -0.0642,0.2 -0.68284,0.629 -1.04654,0.745 -1.77396,0.03 -0.2496,-11.459 -0.0802,-4.34 -0.0713,-3.189 4.38586,-0.1"},"22031":{"name":"De Soto, LA","path":"m 569.51102,445.01514 1.2908,0.972 0.74702,2.466 1.23018,1.914 0.2086,0.257 1.75077,1.293 -1.6231,0.15197 6.9e-4,1.89603 -8.51677,0.227 -2.74027,-3.062 -0.62579,-4.967 1.77396,-0.03 1.04654,-0.745 0.68284,-0.629 0.0642,-0.2 -0.0392,-0.137 0.0535,-0.339 0.96632,-1.141 0.1034,-0.09 0.28348,-0.178 0.36727,-0.08 0.33696,0.07 1.58319,0.531 0.40293,0.298 0.44928,0.483 0.18542,0.28 0.0178,0.756"},"22085":{"name":"Sabine, LA","path":"m 564.59921,454.19214 8.51677,-0.227 0.0642,3.006 2.00929,-0.05 0.1462,4.051 1.96828,-0.06 0.12837,4.002 -3.0291,0.09 -0.59517,1.8612 -2.20037,0.3258 -0.22642,0.715 -0.0963,1.255 0.0481,0.04 -0.91461,0.24 -0.20325,-1.189 -0.1355,-0.754 -0.58656,-2.557 -1.8007,-2.612 -2.1127,-2.219 -0.98058,-5.919"},"22069":{"name":"Natchitoches, LA","path":"m 577.83524,446.83714 4.84227,-0.135 0.70067,1.294 0.41184,1.485 0.12837,1.705 -0.0339,0.281 -0.35301,1.614 -1.20522,3.753 5.1097,4.234 -5.0063,4.108 -4.99738,-0.257 -0.12837,-4.002 -1.96828,0.06 -0.1462,-4.051 -2.00929,0.05 -0.0642,-3.006 -6.9e-4,-1.89603 1.6231,-0.15197 0.10698,0.761 0.56873,0.202 0.7809,0 0.8112,-0.368 1.80783,-2.139 0.10519,-1.334 -0.009,-0.103 -0.37084,-1.159 -0.47246,-0.713 -0.23177,-0.227"},"22043":{"name":"Grant, LA","path":"m 582.32629,456.83414 6.78917,-0.248 0.0731,-0.932 -0.025,-1.086 4.99917,-0.17 0.22464,2.912 0.64184,1.774 0.92531,1.287 0.89321,0.981 0.84865,0.246 -2.08061,0.533 -6.37198,1.808 -0.52238,0.07 -0.59548,-0.209 -0.13371,-0.1 -0.26565,-1.184 -0.29061,-1.453 -5.1097,-4.234"},"22059":{"name":"La Salle, LA","path":"m 595.02211,451.34414 5.97083,-0.231 0.53129,13.838 -1.55288,-0.16 -2.27494,-3.193 -0.84865,-0.246 -0.89321,-0.981 -0.92531,-1.287 -0.64184,-1.774 -0.22464,-2.912 0.85935,-3.054"},"22025":{"name":"Catahoula, LA","path":"m 600.99294,451.11314 2.17787,0.0347 0.0293,-1.1507 0.28169,0.09 0.49207,0.314 0.69889,0.708 0.46533,0.714 0.28882,0.37 0.9271,-0.257 0.49563,-0.362 0.71137,-0.786 0.35122,-0.596 0.0303,-0.192 0.98058,0.465 0.47425,1.31 0.73097,2.965 -2.69391,0.337 -0.15868,0.145 -0.005,1.54473 -2.09903,0.98627 -0.13015,0.225 0.1314,1.26532 1.94642,2.38225 -0.008,0.60213 -1.47009,-0.0131 -0.76996,-1.57723 -0.56052,0.3076 -0.10519,0.656 0.0891,3.489 0.066,0.21 0.624,0.876 -1.09111,-0.539 -0.40293,-0.1 -0.3441,0.06 -0.22642,0.232 -0.1355,0.353 0.19077,0.465 0.23534,0.284 0.0642,0.153 -0.37797,0.225 -0.93244,-0.06 -0.0891,-0.1 -0.35123,-1.431 0,-0.771 -0.53129,-13.838"},"22029":{"name":"Concordia, LA","path":"m 610.12836,454.73714 3.23948,0.307 -0.30844,0.528 -0.0143,0.02 -2.09666,4.212 -0.0481,0.09 -0.0731,0.155 -0.007,0.02 -0.73098,5.992 -0.47424,2.477 -0.47603,3.592 -0.47246,0.69 0.0571,-0.554 -1.3425,-1.086 0.14441,-0.346 0.0963,-0.335 0.52416,-2.662 -0.22642,-0.271 -0.35836,-0.185 -0.0998,0.03 -0.65966,-0.09 -0.93066,-0.248 -0.44394,-0.28 -0.44215,-0.611 -0.624,-0.876 -0.066,-0.21 -0.0891,-3.489 0.10519,-0.656 0.56052,-0.3076 0.76996,1.57723 1.47009,0.0131 0.008,-0.60213 -1.94642,-2.38225 -0.1314,-1.26532 0.13015,-0.225 2.09903,-0.98627 0.005,-1.54473 0.15868,-0.145 2.69391,-0.337"},"22009":{"name":"Avoyelles, LA","path":"m 599.97135,464.79114 1.55288,0.16 0,0.771 0.35123,1.431 0.0891,0.1 0.93244,0.06 0.37797,-0.224 -0.0642,-0.154 -0.23534,-0.283 -0.19077,-0.465 0.1355,-0.353 0.22642,-0.232 0.3441,-0.06 0.40293,0.1 1.09111,0.539 0.44215,0.611 0.44394,0.28 0.93066,0.248 0.65966,0.09 0.0998,-0.03 0.35836,0.185 0.22642,0.271 -0.52416,2.662 -0.0963,0.335 -0.14441,0.346 -0.48851,0.611 -1.11251,3.978 -7.83393,0.314 -1.43877,-2.619 1.23909,-0.658 -0.47424,-3.207 -0.16224,-4.388 0.17828,-0.153 0.1355,-0.06 0.082,0.02 1.21949,0.572 1.24622,-0.795"},"22079":{"name":"Rapides, LA","path":"m 587.43599,461.06814 0.29061,1.453 0.26565,1.184 0.13371,0.1 0.59548,0.209 0.52238,-0.07 6.37198,-1.808 2.08061,-0.533 2.27494,3.193 -1.24622,0.795 -1.21949,-0.572 -0.082,-0.02 -0.1355,0.06 -0.17828,0.153 0.16224,4.388 0.47424,3.207 -1.23909,0.658 -1.99147,-0.754 -4.19509,2.569 -4.44291,0.296 -0.17651,-2.785 -0.22464,-5.539 -1.02872,-1.462 -0.33874,-0.161 -1.67947,-0.449 5.0063,-4.108"},"22115":{"name":"Vernon, LA","path":"m 577.43231,464.91914 4.99738,0.257 1.67947,0.449 0.33874,0.161 1.02872,1.462 0.22464,5.539 0.17651,2.785 -3.04693,0.371 -3.0594,0 -5.66596,0.151 -2.69927,0.403 -0.0731,-7.288 -0.0481,-0.04 0.0963,-1.256 0.22642,-0.714 2.20037,-0.3263 0.59517,-1.8617 3.0291,-0.09"},"22039":{"name":"Evangeline, LA","path":"m 590.32068,475.27614 4.19509,-2.569 1.99147,0.754 1.43877,2.619 0.87539,1.824 0.0499,1.253 0.0232,0.885 -0.82012,2.483 -0.82725,0.715 -3.02197,0.112 -0.65788,0.122 -0.20681,0.233 -0.62935,1.043 -2.74741,0.08 0.0339,-0.153 0.12658,-0.13 0.17651,-0.312 0.5723,-1.391 -0.0428,-0.105 -0.26387,-0.241 -0.16937,-4.195 -0.0321,-0.858 -0.0642,-2.171"},"22003":{"name":"Allen, LA","path":"m 585.87777,475.57214 4.44291,-0.296 0.0642,2.171 0.0321,0.858 0.16937,4.195 0.26387,0.241 0.0428,0.105 -0.5723,1.391 -0.17651,0.312 -0.12658,0.13 -2.84724,0.09 0.058,0.8177 -1.63229,0.009 -3.15033,0.484 -2.30525,0.399 -0.10519,-4.001 1.64737,-0.07 1.3425,-0.04 -0.0963,-4.629 -0.0981,-1.8 3.04693,-0.371"},"22011":{"name":"Beauregard, LA","path":"m 582.83084,475.94314 0.0981,1.8 0.0963,4.629 -1.3425,0.04 -1.64737,0.07 0.10519,4.001 0.016,0.476 -5.04018,0.151 -0.0481,-2.009 -2.00751,0.05 0.0553,2.018 -5.08474,0.136 0.0214,-0.02 0.75772,-0.637 0.0802,-0.2 0.007,-0.119 -0.27991,-1.433 -0.55447,-0.669 -0.0571,-0.06 0,0 0.22464,-0.804 2.8205,-5.311 0.35479,-1.542 2.69927,-0.403 5.66596,-0.152 3.0594,0"},"22053":{"name":"Jefferson Davis, LA","path":"m 589.98371,484.83214 0.44929,8.92 -2.20898,1.339 -5.13466,0.146 -0.025,-1.013 2.12161,-0.121 -0.35479,-1.02 -0.48851,-0.593 -2.09843,-2.332 -0.0437,-2.73483 -2.02798,0.0578 -0.016,-0.529 -0.016,-0.476 2.30525,-0.399 3.15033,-0.484 1.63229,-0.009 -0.058,-0.8177 2.84724,-0.09 -0.0339,0.153"},"22019":{"name":"Calcasieu, LA","path":"m 580.15654,486.95214 0.016,0.529 2.02798,-0.0578 0.0437,2.73483 2.09843,2.332 0.48851,0.593 0.35479,1.02 -2.12161,0.121 0.025,1.013 -2.62795,0.09 -0.009,-0.339 -11.79725,0.328 -0.0303,0.03 0.0143,-4.441 -0.60796,-3.61 5.08474,-0.136 -0.0553,-2.018 2.00751,-0.05 0.0481,2.009 5.04018,-0.151"},"22023":{"name":"Cameron, LA","path":"m 588.22402,495.09114 2.45145,-0.104 0.29774,7.859 0.0303,2.667 -0.72385,-0.183 -1.83814,-0.61 -1.6652,-0.724 -0.91461,-0.394 -1.40668,-0.667 -0.66502,-0.267 -0.0267,0 -2.29633,-0.74 -1.79357,-0.435 -1.00554,-0.128 -0.80229,0 -4.14696,0.322 -1.26227,0.168 -1.9255,0.291 -0.96631,0.149 -1.1553,0.277 -0.0588,0.02 -0.11054,0.04 -0.31556,0.103 -0.64897,0.346 -0.39401,0.266 -0.36906,0.314 -1.32396,-0.94886 -0.73544,-1.76767 1.77216,-1.43502 0.10896,-0.97445 2.29098,-3.193 0.0303,-0.03 11.79725,-0.328 0.009,0.338 2.62795,-0.09 5.13466,-0.146"},"22001":{"name":"Acadia, LA","path":"m 589.98371,484.83214 2.74741,-0.08 4.91894,-0.184 1.39598,0.94 0.80408,2.635 0,0.506 -2.69035,3.584 -1.55823,1.778 -0.41006,0.287 -0.38689,0.178 -0.353,0.119 -3.80108,-0.777 -0.21751,-0.06 -0.44929,-8.92"},"22097":{"name":"St. Landry, LA","path":"m 605.77994,475.76614 0.29239,0.227 0.75951,1.292 0.70066,1.728 0.0892,0.772 -0.0963,3.125 -0.21751,0.845 0.79516,1.091 0.84508,1.206 -2.65291,0.128 -0.15154,-0.12 -0.99484,-0.354 -1.19096,0.522 -0.57701,0.49011 -2.19797,0.12806 -1.33275,1.80083 0,-0.506 -0.80408,-2.635 -1.39598,-0.94 -4.91894,0.184 0.62935,-1.043 0.20681,-0.233 0.65788,-0.122 3.02197,-0.112 0.82725,-0.715 0.82012,-2.483 -0.0232,-0.885 -0.0499,-1.253 -0.87539,-1.824 7.83393,-0.314"},"22077":{"name":"Pointe Coupee, LA","path":"m 606.89245,471.78914 1.83101,0.474 -0.0571,0.554 0.12837,2.539 1.8116,0.2101 0.41628,0.0961 0.007,-1.03305 -0.95813,-0.64306 1.36126,-0.23255 0.76602,1.55317 -0.3637,0.23976 -0.13792,1.14288 -1.13261,0.34736 0.36349,0.88569 2.54209,0.0825 0.77688,-0.65644 0.45235,0.009 0.2325,0.66363 0.61331,1.641 -2.86864,3.856 -4.27532,0.194 -1.0929,0.04 0.21751,-0.845 0.0963,-3.125 -0.0892,-0.772 -0.70066,-1.728 -0.75951,-1.292 -0.29239,-0.227 1.11251,-3.977"},"22121":{"name":"West Baton Rouge, LA","path":"m 615.54472,479.66414 0.51347,0.112 0.15332,0.07 3.45521,7.329 -3.36606,0.184 -0.77199,-0.972 -2.18579,-2.373 -0.6668,-0.497 2.86864,-3.856"},"22055":{"name":"Lafayette, LA","path":"m 599.85012,488.64714 1.33275,-1.80083 2.19797,-0.12806 0.48608,6.94289 -0.24782,0.902 -2.05743,-0.829 -1.2694,-0.884 -1.65272,-0.546 -1.47978,-0.07 2.69035,-3.584"},"22113":{"name":"Vermilion, LA","path":"m 603.6191,494.56314 0.12302,5.279 -1.2801,0.578 -0.40828,0.233 -0.98771,0.676 -0.71671,0.672 -0.0802,0.451 0.36906,0.82 0.45106,0.877 0.36906,0.06 1.91301,0.06 -0.82725,0.749 -0.10697,-0.06 -1.1963,0 -1.03407,0.153 -0.016,0 -1.06259,0.48 -0.76485,0.565 -0.52238,0.144 -0.0463,0 -0.12837,0 -0.35479,0.03 -0.0963,0 -5.02235,-0.658 -1.15708,-0.162 -0.0321,0 -0.0303,-2.667 -0.29774,-7.859 -2.45145,0.104 2.20898,-1.339 0.21751,0.06 3.80108,0.777 0.353,-0.119 0.38689,-0.179 0.41006,-0.287 1.55823,-1.777 1.47978,0.07 1.65272,0.545 1.2694,0.885 2.05743,0.829"},"22045":{"name":"Iberia, LA","path":"m 603.37128,504.26014 1.48514,-0.538 0.47602,-0.104 0.6668,0.1 3.15033,1.391 0.0535,0.09 -0.0356,0.151 -1.11252,1.553 -0.23355,0.144 -0.77912,0.241 -0.33696,-0.1 -3.85635,-1.847 -0.30487,-0.33 0.82725,-0.749 m 12.09321,-10.801 2.01919,0.0591 0.89759,0.56891 -0.55448,1.271 -4.30028,0.56 -3.03623,0.387 -1.61528,2.353 -3.16637,2.999 0.002,-2.25958 -1.96889,0.44458 -0.12302,-5.279 0.24782,-0.902 0.87004,-0.02 2.22334,0.42324 0.56507,-1.37924 0.36906,-0.224 0.26743,-0.07 0.56873,-0.02 0.71315,0.154 0.17829,0.06 1.51576,1.18794 1.94835,-0.18194 2.37835,-0.131"},"22047":{"name":"Iberville, LA","path":"m 612.67608,483.52014 0.6668,0.497 2.18579,2.373 0.77199,0.972 3.36606,-0.184 2.40152,-0.09 -1.37994,6.026 -2.30703,0.972 -0.89759,-0.56891 -2.01919,-0.0591 -0.0178,-0.303 -0.21572,-0.522 -1.18094,-1.16605 -0.89254,-1.81495 -0.3441,-0.152 -0.37083,-0.07 -0.62757,0.06 -0.40828,-0.03 -0.25852,-0.122 -0.25495,-0.21 -0.7078,-1.179 -0.11232,-0.315 -0.0428,-0.134 0.0428,-0.276 -0.0499,-1.204 -0.0874,-0.449 -0.27278,-0.651 -1.26227,-1.198 4.27532,-0.194"},"22007":{"name":"Assumption, LA","path":"m 623.51593,492.88214 1.75078,3.61 -2.18402,4.489 -1.41559,2.106 -0.43324,-1.655 0.0481,-1.479 -0.0161,-0.867 -0.15333,-0.298 -0.2496,-0.258 -0.40828,-0.216 -0.20859,0 -0.87004,-0.169 -0.29596,-0.289 -1.08577,-2.065 -0.16759,-0.433 0.55448,-1.271 2.30703,-0.972 2.82763,-0.233"},"22099":{"name":"St. Martin, LA","path":"m 607.30786,483.75514 1.0929,-0.04 1.26227,1.198 0.27278,0.651 0.0874,0.449 0.0499,1.204 -0.0428,0.276 0.0428,0.134 0.11232,0.315 0.7078,1.179 0.25495,0.21 0.25852,0.122 0.40828,0.03 0.62757,-0.06 0.37083,0.07 0.3441,0.152 0.89254,1.81495 1.18094,1.16605 0.21572,0.522 0.0178,0.303 -2.37835,0.131 -1.94835,0.18194 -1.51576,-1.18794 -0.17829,-0.06 -0.71315,-0.154 -0.56873,0.02 -0.26743,0.07 -0.36906,0.224 -0.56506,1.37924 -2.22335,-0.42324 -0.87004,0.02 -0.48608,-6.94289 0.57701,-0.49011 1.19096,-0.522 0.99484,0.354 0.15154,0.12 2.65291,-0.128 -0.84508,-1.206 -0.79516,-1.091 m 6.21865,12.163 4.30028,-0.56 0.16759,0.433 1.08577,2.065 0.29596,0.289 0.87004,0.169 0.20859,0 0.40828,0.216 0.2496,0.258 0.15333,0.298 0.0161,0.867 -0.0481,1.479 -2.35339,-1.069 -2.62109,-0.34398 -0.68078,-1.18302 -0.39676,-1.87852 -1.65533,-1.03948"},"22101":{"name":"St. Mary, LA","path":"m 613.52651,495.91814 1.65533,1.03998 0.39676,1.87902 0.68078,1.18252 2.62109,0.34348 2.35339,1.069 0.43324,1.655 -2.60535,1.11817 -1.01031,2.51383 -0.44216,0 -0.84329,-0.161 -3.96154,-0.859 -0.16224,-0.779 -0.11945,-0.651 -0.27278,-0.868 -1.52782,-0.24246 0.0569,-2.03954 -0.23356,-0.161 -2.09487,-0.06 -0.29952,0.04 -2.44253,0.715 3.16637,-2.999 1.61528,-2.353 3.03623,-0.387"},"22109":{"name":"Terrebonne, LA","path":"m 623.08269,500.98114 0.87405,-0.39575 1.71084,0.0525 0.0373,-0.84403 0.87405,-0.39575 0.1355,-0.06 0.26565,0.03 0.52406,1.45494 4.40914,3.24806 3.77077,3.873 0.28704,0.303 0.11945,0.34 0.12124,1.074 -0.50455,2.524 -2.43833,-0.12852 -0.1025,-0.67364 0.61908,-0.75003 -1.24336,-0.59992 -1.06633,0.63737 0.64206,0.7426 -8.4e-4,0.58291 -1.40469,0.15827 -0.38433,1.69727 -2.21286,0.67524 -0.85702,0.44867 0.39765,0.60692 3.09243,-0.73489 0.50543,0.43075 -4.06673,0.91 -2.92206,-2.835 -6.08321,-1.393 -0.50099,-0.394 -0.67927,-0.716 0.0303,-0.166 1.10004,-0.603 0.37641,-1.05311 0.975,0.27211 0.19077,-0.217 -0.0767,-0.451 -0.27634,-0.699 -0.12124,-0.264 -0.0802,-0.08 -1.06793,-0.861 1.01031,-2.51383 2.60535,-1.11817 1.41559,-2.106"},"22057":{"name":"Lafourche, LA","path":"m 632.16107,496.41214 1.07863,0.704 1.73474,1.847 1.0305,1.327 0.007,0.139 0.18363,0.247 0.24247,0.06 2.22503,-0.115 0.50633,-0.02 0.65788,0.154 0.21038,0.128 0.0553,0.176 0.23177,1.614 0.016,0.232 -0.11767,0.429 -0.50103,0.64173 0.94316,1.84523 1.16423,-0.11696 1.21235,0.531 0.025,2.603 -1.18917,1.462 0.60083,1.173 -0.29596,1.109 -0.21929,0.216 -0.0535,0.06 -1.28545,1.063 -0.066,0.06 -0.0535,0.03 -0.91105,0.488 -2.36943,0.788 -0.11232,0 0,-0.02 -0.0232,-0.12 0.47424,-0.29 0.42433,-0.08 0.22642,-0.04 0.19077,-0.1 0.49207,-0.239 0.0945,-0.06 0.35479,-0.401 -0.025,-0.425 -1.49718,-0.62674 -0.10216,-0.82418 0.41017,-0.69708 -0.64005,-0.859 -0.35657,-0.259 -0.68106,0.107 -0.3851,0.514 -0.36192,1.317 0.50455,-2.524 -0.12124,-1.074 -0.11945,-0.34 -0.28704,-0.303 -3.77077,-3.873 -4.40914,-3.24806 -0.52406,-1.45494 -0.26565,-0.03 -0.1355,0.06 -0.87405,0.39575 -0.0373,0.84403 -1.71084,-0.0525 -0.87405,0.39575 2.18402,-4.489 4.58911,0.111 2.30525,-0.191"},"22093":{"name":"St. James, LA","path":"m 629.78272,490.23814 -0.23177,2.669 -0.52952,0.378 0.39224,1.92 0.27456,1.045 0.16759,0.353 -4.58911,-0.111 -1.75078,-3.61 6.26679,-2.644"},"22005":{"name":"Ascension, LA","path":"m 624.59992,486.41314 3.61566,3.375 0.4261,0.289 0.0963,0.03 0.0802,-0.04 1.07863,-1.093 -0.1141,1.27 -6.26679,2.644 -2.82763,0.233 1.37994,-6.026 2.53168,-0.676"},"22033":{"name":"East Baton Rouge, LA","path":"m 624.97789,477.78314 -1.125,1.674 -1.29258,1.545 0.066,3.178 0.37619,0.941 1.59745,1.292 -2.53168,0.676 -2.40152,0.09 -3.45521,-7.329 0.58657,-1.166 0.20325,-0.152 7.97656,-0.748"},"22037":{"name":"East Feliciana, LA","path":"m 620.47792,471.58914 4.60515,-0.259 -0.59547,1.496 0.39401,1.992 0.0963,1.285 0,1.68 -7.97656,0.748 -0.20325,0.152 -0.58657,1.166 -0.15332,-0.07 -0.0464,-0.539 0.0374,-0.754 0.28883,-0.902 0.20325,-0.273 0.79516,-1.365 0.57764,-2.651 0.27992,-1.591 2.28385,-0.112"},"22091":{"name":"St. Helena, LA","path":"m 630.17852,471.03314 0.45641,8.028 -6.78204,0.396 1.125,-1.674 0,-1.68 -0.0963,-1.285 -0.39401,-1.992 0.59547,-1.496 5.09545,-0.297"},"22063":{"name":"Livingston, LA","path":"m 623.85289,479.45714 6.78204,-0.396 0.21751,3.744 0.48138,1.205 1.54396,2.138 -0.50982,0.19616 -0.29901,0.40166 -0.78697,0.71635 0.27832,0.79858 -0.002,0.35648 -0.20705,0.10891 0.005,0.34661 -0.11892,0.47025 -0.21573,-0.04 -1.12499,-0.533 -1.07863,1.093 -0.0802,0.04 -0.0963,-0.03 -0.4261,-0.288 -3.61566,-3.375 -1.59745,-1.293 -0.37619,-0.941 -0.066,-3.177 1.29258,-1.546"},"22095":{"name":"St. John the Baptist, LA","path":"m 634.99839,486.84258 1.50077,0.0189 0.0996,0.85362 -1.12465,0.96393 -0.9197,0.80808 -0.015,2.45505 -1.64559,1.254 -0.85221,0.353 -0.2086,0.338 0.0321,0.425 0.29596,2.1 -2.30525,0.191 -0.16759,-0.353 -0.27456,-1.045 -0.39224,-1.92 0.52952,-0.378 0.34587,-3.939 1.12499,0.533 0.21573,0.04 0.51337,0.39697 2.02231,-0.16572 0.7467,-1.31688 0.067,-0.3495 0.51068,-0.65937 -0.0992,-0.60206"},"22089":{"name":"St. Charles, LA","path":"m 632.16107,496.41214 -0.29596,-2.1 -0.0321,-0.425 0.2086,-0.338 0.85221,-0.353 1.64559,-1.254 0.71776,0.21499 1.86195,0.33557 0.0732,0.99144 0.0481,0.796 0.20147,1.142 0.12837,0.377 0.60974,0.941 1.21413,0.724 -0.32983,1.911 -0.11232,0.353 -0.28882,0.891 -2.22503,0.115 -0.24247,-0.06 -0.18363,-0.247 -0.007,-0.139 -1.0305,-1.327 -1.73474,-1.847 -1.07863,-0.704"},"22105":{"name":"Tangipahoa, LA","path":"m 630.5547,471.02014 3.93836,-0.251 0.14441,2.177 0.61866,0.515 1.42986,3.405 0.009,0.41 0.70201,8.41119 -0.26155,1.13338 -0.63621,0.0408 -1.50077,-0.0189 -0.54616,-0.53719 -0.54772,-0.112 -0.50186,-0.39968 -0.52487,0.35043 -1.54396,-2.138 -0.48138,-1.205 -0.21751,-3.744 -0.45641,-8.028 0.37618,-0.01"},"22071":{"name":"Orleans, LA","path":"m 642.81024,492.21732 2.66803,-2.90674 0.74106,1.31916 0.77087,-0.11182 0.17462,-0.52921 -0.51107,-0.5292 0.20976,-0.74087 1.93887,0.1535 1.10359,0.36 0.12837,0.08 -0.854,1.015 -0.36793,1.08747 -0.76462,0.1315 -0.14004,0.87508 -1.3928,-0.38305 -0.89321,1.068 -2.5624,0.31719 -0.62533,1.02316 1.62514,0.48176 0.67115,1.25689 -1.9772,-0.49 -1.06972,-0.8455 -1.44637,0.2795 0.10387,-2.344 1.74148,-0.67442 z"},"22087":{"name":"St. Bernard, LA","path":"m 645.62174,493.10614 0.12123,0.507 0.19255,0.49 0.12837,0.219 0.20146,0.134 0.47822,0.24371 1.05864,-0.24079 -0.0967,0.73098 1.38752,0.7071 0.63649,0.08 0.44928,-0.05 0.47959,-0.218 0.29061,-0.233 0.11232,-0.362 0.22643,-1.455 -0.0267,-0.555 1.48157,-1.647 0.68997,-0.337 0.82725,0.257 0.52238,0.428 -0.4261,0.239 -0.13015,0.13 -0.19077,0.183 0.016,0.387 0.0321,0.28 1.17313,1.278 0.22464,0.17 0.94848,0.488 0.22465,0.123 -1.33181,2.225 -0.77198,1.14 -1.14282,0.433 -0.89144,-0.342 -2.08952,-0.08 -0.33874,0.107 0.082,0.674 0.11232,0.201 0.99662,0.546 0.47603,0.201 0.33518,0.06 0.46889,-0.03 0.9788,0.843 0.0553,0.136 -0.0232,0.09 -0.12123,-0.176 -0.55448,-0.443 -2.1858,-0.524 -1.41381,-1.275 -0.29774,-0.315 -2.94887,-0.786 -0.21751,0.08 -0.12836,-0.02 -0.25139,-0.296 -0.44037,-0.765 -0.27991,-0.587 -0.67115,-1.25689 -1.62514,-0.48176 0.62533,-1.02316 2.5624,-0.31719"},"22075":{"name":"Plaquemines, LA","path":"m 642.7531,495.69514 1.9772,0.49 0.27991,0.587 0.44037,0.765 0.25139,0.296 0.12836,0.02 0.21751,-0.08 2.94887,0.786 0.29774,0.316 1.41381,1.274 2.1858,0.525 0.55448,0.442 0.12123,0.176 -0.37084,-0.224 -0.63292,-0.345 -1.72938,-0.08 -0.39401,0.232 -0.6347,0.537 -0.16046,0.554 -0.19968,1.897 0.0143,0.112 0.14619,0.163 0.58657,0.385 3.7262,1.968 0.59547,-0.04 1.55288,-0.07 4.15409,1.198 1.06794,1.326 0.53843,0.746 0.8112,0.467 0.74881,-0.337 0.14263,0.06 0.14619,0.137 0.3441,0.701 0,0.02 -0.0642,0.314 0,0.02 -0.36192,0.829 -0.62579,1.421 -1.82387,1.086 -1.28723,-0.795 -2.77058,0.07 -2.21789,-2.564 -0.0588,-0.06 -0.271,-0.262 -0.0321,-0.03 -0.21929,-0.153 0,0 -0.0856,-0.03 -0.59548,-0.218 -0.43502,-0.16 -2.78662,-1.022 -0.44215,-0.121 -0.0802,-0.02 -0.42611,-0.09 -0.16759,-0.04 -0.0339,0 -0.0874,0 -0.42076,-0.03 -0.59191,-0.05 -1.41429,0.12273 0.28216,-1.14173 0.25495,-0.443 0.0731,-0.16 0,-0.216 -0.025,-0.121 -0.44215,-1.542 -0.0125,-0.07 -0.13193,-0.06 -0.18364,-0.1 -0.25851,0.06 -0.26387,0.113 -0.50455,0.313 -0.31557,0.386 -0.2496,0.354 -0.4582,0.05 -0.19255,-0.129 -0.26386,-0.28 -0.29061,-3.439 -0.10341,-0.435 -0.79694,-1.358 -0.39223,-0.457 -0.64184,-0.861 -0.22107,-0.747 0.37262,-1.542 0.79516,-1.366"},"22125":{"name":"West Feliciana, LA","path":"m 609.13887,472.12714 9.0552,-0.426 -0.27992,1.591 -0.57764,2.651 -0.79516,1.365 -0.20325,0.273 -0.28883,0.902 -0.0374,0.754 0.0464,0.539 -0.51347,-0.112 -0.61331,-1.641 -0.2325,-0.66363 -0.45235,-0.009 -0.77688,0.65644 -2.54209,-0.0825 -0.36349,-0.88569 1.13261,-0.34736 0.13792,-1.14263 0.3637,-0.23951 -0.76602,-1.55311 -1.36126,0.23261 0.95813,0.64313 -0.007,1.03311 -0.41628,-0.0958 -1.8116,-0.2111 -0.12837,-2.539 0.47246,-0.69 m -1.75791,-0.95 1.3425,1.086 -1.83101,-0.474 0.48851,-0.612"},"22051":{"name":"Jefferson, LA","path":"m 640.34083,492.78514 -0.10387,2.344 1.44637,-0.2795 1.06972,0.8455 -0.79516,1.366 -0.37262,1.542 0.22107,0.747 0.64184,0.861 0.39223,0.457 0.79694,1.358 0.10341,0.435 0.29061,3.439 -0.9895,0.33 -1.21235,-0.531 -1.16423,0.11696 -0.94316,-1.84523 0.50103,-0.64173 0.11767,-0.429 -0.016,-0.232 -0.23177,-1.614 -0.0553,-0.176 -0.21038,-0.128 -0.65788,-0.154 -0.50633,0.02 0.28882,-0.891 0.11232,-0.353 0.32983,-1.911 -1.21413,-0.724 -0.60974,-0.941 -0.12837,-0.377 -0.20147,-1.142 -0.0481,-0.796 -0.0732,-0.99144 2.28198,0.35161 z m 2.13771,18.68 0.0178,0.02 0.55447,-0.107 0.43324,-0.488 1.15708,-0.892 0.16937,0.02 0.0339,0.07 -0.0178,0.06 -0.10341,0.167 -1.26405,0.94 -1.08399,1.127 -0.1872,0.192 -0.005,0 0.29596,-1.109"},"25027":{"name":"Worcester, MA","path":"m 924.76925,151.99914 0.0713,0.16 0.7861,0.65186 0.33271,0.88991 1.16985,-0.37536 -0.0598,-0.30677 2.01152,0.3056 0.27445,1.78337 0.74823,0.0913 -0.0188,-0.60805 1.53785,-0.35989 0.25851,0.476 -0.27868,1.05515 0.39814,0.19785 0.0642,1.284 -0.77666,0.41624 0.57698,0.23576 -0.51525,1.013 0.41336,0.2467 0.34567,0.42718 0.66153,-0.4978 0.99993,-0.31732 -0.0379,1.41985 -1.12076,0.56254 -0.26346,0.67535 0.14263,0.3595 0.44928,0.419 0.53129,0.175 0.78261,-0.42845 0.64726,0.65445 0.4885,3.206 -4.90111,1.503 -0.11232,-0.337 -4.28958,1.019 -0.7078,0.147 -0.56161,0.11 -0.73989,-2.949 -1.07685,0.289 -1.17313,-0.248 -0.0784,-0.29 0.007,-0.175 0.42432,-1.086 -0.2665,-1.32957 -1.00789,0.2894 -0.34215,-0.92105 -0.47833,0.15322 -0.29774,-1.182 0.23037,-0.984 -0.32667,-0.984 0.50892,-0.78078 -0.53554,-0.39781 -0.36862,-1.37337 0.26788,-0.41188 0.37234,-0.13335 -0.32397,-1.03855 -0.70693,-0.0637 -0.4603,-1.26454 5.83176,-1.263 0.49208,-0.11"},"25017":{"name":"Middlesex, MA","path":"m 935.11702,148.75214 0.63827,1.535 -0.26693,0.3124 1.90539,0.7876 1.62737,-0.59954 0.7887,0.66473 -0.67083,0.18954 0.11786,0.85427 0.60493,-0.0342 0.0619,0.88222 0.3334,0.424 0.33339,0.424 -0.0963,0.618 -0.3851,0.867 0.16221,0.40251 -0.18747,0.35864 -0.45148,0.11863 -0.18292,-0.26678 -0.68997,0.441 0.1576,0.49287 0.162,0.097 -0.238,0.428 0.28894,0.145 -0.2832,0.64413 -0.81121,-0.634 -0.0481,-0.03 -0.41006,-0.04 -0.27991,0.04 -0.89321,0.602 0.21037,0.33 0.39224,0.513 0.22642,0.484 -0.45941,0.25689 0.0636,0.98911 -0.82547,0.738 -1.11072,0.82 -0.64725,-0.65445 -0.78262,0.42845 -0.53129,-0.175 -0.44928,-0.419 -0.14263,-0.3595 0.26346,-0.67535 1.12076,-0.56254 0.0379,-1.41985 -0.99993,0.31732 -0.66153,0.4978 -0.34567,-0.42718 -0.41336,-0.2467 0.51525,-1.012 -0.57698,-0.23626 0.77666,-0.41674 -0.0642,-1.284 -0.39814,-0.19785 0.27868,-1.05515 -0.25851,-0.476 -1.53785,0.35989 0.0188,0.60805 -0.74823,-0.0913 -0.27445,-1.78337 -2.01152,-0.3056 0.0598,0.30677 -1.16985,0.37536 -0.33271,-0.88991 -0.7861,-0.65186 -0.0713,-0.16 4.06494,-0.909 0.2496,-0.06 0.0713,-0.02 5.5465,-1.278 0.41541,-0.988"},"25019":{"name":"Nantucket, MA","path":"m 963.10617,175.08522 0.15155,-0.08 0.26743,-0.306 0.19255,-0.36 0.12836,-0.468 -0.0784,-0.465 -0.0909,-0.16 -0.1765,-0.163 -0.16225,-0.128 -0.0945,-0.08 -0.016,-0.09 0.29774,0.06 0.353,0.312 1.52614,1.729 0.0909,0.321 -0.0107,0.241 -0.007,0.05 -0.12124,0.16 -0.39401,0.298 -0.21751,0.1 -1.3639,0.314 -0.36905,0.07 -0.95027,-0.06 -1.61528,-0.321 -0.21573,-0.1 -0.15332,-0.128 -0.0892,-0.186 0.2496,-0.06 0.21751,0.05 0.0963,0.03 0.8433,-0.03 1.1963,-0.312 0.51525,-0.233"},"25001":{"name":"Barnstable, MA","path":"m 952.43582,166.16514 0.27482,-0.0425 0.33875,0.241 0.4885,0.272 0.44216,0.12484 1.07863,0.0578 0.64718,-0.04 1.11233,-0.33411 0.68939,0.26544 0.56977,-0.68173 1.1304,-0.72019 0.85935,-0.58 0.69879,-0.39566 0.17294,-0.378 0.27945,-0.16792 -0.20146,-0.666 -0.31379,-0.821 -0.14441,-0.45542 -0.52951,-0.755 -0.27631,-0.0504 -0.15994,0.31779 0.0881,0.93091 -0.42665,-0.98125 -0.51052,-1.72104 -0.43154,-0.50496 -0.26743,-0.185 -0.29774,-0.113 -0.47424,-0.112 -0.11945,0.03 -0.22465,0.127 -0.12301,0.114 -0.0963,0.169 -0.0553,0.28 0.016,0.121 -0.94849,-0.369 -0.0553,-0.07 0.0642,-0.232 0.16937,-0.185 0.28882,-0.16 0.27991,-0.09 0.49564,-0.05 0.79694,0.04 0.62936,0.138 0.47959,0.208 0.55626,0.385 0.52951,0.53 0.66679,0.772 0.5313,0.763 0.82224,1.45525 0.37975,0.756 0.51848,1.54017 0.31735,1.101 0.0571,0.507 -0.17049,0.65017 -0.0392,1.89591 -0.35004,0.159 0.13489,-0.96978 -0.13602,-1.2333 -0.0392,-0.128 -0.082,-0.145 -0.4261,-0.201 -0.19969,-0.05 -0.12123,0.03 -3.36334,1.81463 -0.1649,0.7257 -0.47284,-0.44991 -1.14005,0.25291 -0.10484,0.36167 -1.11144,0.66339 -0.59841,1.52047 -2.16598,0.86578 -0.57454,0.71455 -0.62579,-0.06 0.55048,-1.17365 -0.45983,-2.21502 -0.3656,-0.38681 0.3589,-0.45594 -0.35904,-0.20528 0.0649,-1.17774 1.14827,-1.17775"},"25025":{"name":"Suffolk, MA","path":"m 940.59043,154.19214 0.81299,0.322 0.0614,0.54745 0.82912,0.89955 -0.8363,0.13613 -0.11761,0.54798 0.43955,0.56889 -0.58388,0.085 -0.0713,0.89107 -1.03699,1.19229 -1.24065,-0.84432 0.28321,-0.64417 0.222,0.112 0.409,-0.91 -0.021,-0.384 -0.392,0.126 -0.26896,0.48297 -0.16204,-0.0966 -0.15757,-0.49328 0.68997,-0.441 0.18292,0.26678 0.45148,-0.11863 0.18747,-0.35864 -0.16221,-0.40251 0.3851,-0.867 0.0963,-0.618"},"25005":{"name":"Bristol, MA","path":"m 937.49715,166.02814 4.29137,-3.792 1.29258,2.819 0.92888,0.19484 0.98305,1.60315 -0.47137,0.82301 -0.40919,0.38793 0.45747,0.17127 0.0483,0.55921 1.66738,-0.61491 0.7089,0.6925 1.79179,2.758 -0.30487,-0.02 -0.76307,0.112 -0.312,0.411 -0.18721,0.242 -0.0303,0.06 0.0553,0.747 0.0784,0.273 0.25852,0.31434 -1.45092,1.24658 -0.88346,0.0403 -0.50487,0.61584 -0.72333,-2.19009 -0.2726,-0.23377 -0.004,-0.44474 -0.2822,-0.71326 -1.04761,-0.10782 0.10191,-0.31941 0.25202,-0.31374 -0.23415,-0.0256 -0.72635,-0.2237 -0.13843,0.20612 -0.75594,-0.68594 -1.12023,-0.26096 -0.17467,-0.015 -0.10331,-0.17553 -0.19594,-0.16113 -0.0893,-0.29768 -0.149,-0.22941 0.0644,-0.29768 -0.10639,-0.14793 0.005,-0.3997 -0.30268,-0.63866 -0.0296,-0.21621 -0.66294,0.32026 -0.54878,-2.06945"},"25023":{"name":"Plymouth, MA","path":"m 943.38063,157.78414 0.18957,-0.75345 -0.44529,-0.2471 0.5065,-0.0892 0.70301,0.56078 0.59458,-0.0389 -0.249,0.49338 0.434,0.91951 0.639,-0.71815 0.073,-0.56657 1.15071,0.79669 2.06813,2.298 -0.18871,1.43971 -0.50578,0.60895 1.86838,0.82522 0.84376,-0.21105 0.97757,1.29017 0.28883,0.66 0.10697,1.117 -1.14827,1.17825 -0.0649,1.17824 -1.28549,-0.024 0.23801,0.86814 -0.52692,-0.0327 0.10913,1.24705 -0.96244,-0.0733 0.49485,0.6303 -0.50346,0.49299 -1.79179,-2.758 -0.7089,-0.6925 -1.66738,0.61491 -0.0483,-0.55921 -0.45747,-0.17127 0.40919,-0.38793 0.47137,-0.82301 -0.98305,-1.60315 -0.92888,-0.19484 -1.29258,-2.819 2.17077,-2.19206 -0.57866,-2.25994"},"25021":{"name":"Norfolk, MA","path":"m 939.74,156.81922 0.021,0.38363 -0.409,0.90988 -0.222,-0.11155 -0.289,-0.14518 0.238,-0.42786 0.269,-0.48316 z m 2.47094,1.17492 -0.43164,-0.67383 0,-0.002 -0.58399,0.0859 -0.0703,0.89062 -0.70161,0.20344 -0.3355,0.98797 -1.24023,-0.84375 -0.8125,-0.63281 -0.0469,-0.0312 -0.41016,-0.0391 -0.28124,0.0391 -0.89258,0.60351 0.21093,0.32813 0.39258,0.51367 0.22461,0.48437 -0.45877,0.25694 0.0642,0.98916 -0.82617,0.73828 -1.11133,0.82031 0.49023,3.20508 1.91798,-0.55887 0.18945,0.77567 4.29101,-3.79102 2.16992,-2.19336 -0.57812,-2.25977 -0.51953,-0.13281 z m 2.71875,-0.67187 -0.25,0.49414 0.43359,0.91992 0.64063,-0.71875 0.0723,-0.56641 z"},"25009":{"name":"Essex, MA","path":"m 941.40342,143.74614 0.11946,0.481 0.61865,1.478 0.96275,1.849 0.99663,0.442 0.71671,-0.0229 0.57555,-1.07428 0.22985,0.10289 0.22614,0.59815 0.42435,-0.14104 0.0963,0.54502 -0.40818,0.35288 -0.19546,1.14959 -0.22719,0.12664 -0.27433,-0.2391 -0.24307,0.37008 -1.70433,0.88681 -0.19732,0.36014 -0.71024,0.28513 0.25072,0.42241 0.5524,0.14568 0.11062,0.50477 -0.25521,0.0856 -0.39435,0.35508 -0.13426,0.44893 -0.4381,0.006 -0.12551,0.24107 0.21808,0.55585 0.48195,0.11827 0.0433,0.101 -0.56679,0.13501 -0.10221,-0.0735 -0.29129,-0.66367 -0.20204,0.34418 -0.15356,0.49107 -0.81299,-0.322 -0.33339,-0.424 -0.3334,-0.424 -0.0619,-0.88222 -0.60493,0.0342 -0.11786,-0.85427 0.67083,-0.18954 -0.7887,-0.66473 -1.62737,0.59954 -1.90539,-0.7876 0.26693,-0.3124 -0.63827,-1.535 0.10698,-0.242 0.9469,-0.0475 -0.39716,-1.05553 0.35774,-0.71899 0.21751,-0.227 1.35227,-0.073 0.22913,-1.27601 1.54932,-1.15 0.007,0 0.13193,-0.06 0.11232,-0.06 0.48851,-0.03 0.59191,0.30101 0.59191,-0.37101"},"25013":{"name":"Hampden, MA","path":"m 922.18052,163.79414 -0.42432,1.086 -0.007,0.175 0.0784,0.29 1.17313,0.248 1.07685,-0.289 0.73989,2.949 -6.17942,1.464 -3.97876,0.93278 -0.049,0.89993 -0.82688,0.25166 -0.22757,-0.87968 -3.17788,0.74731 -0.73989,0.168 -0.62757,-1.132 -0.0802,-0.209 -0.19255,-1.022 0.62757,-0.04 -0.0499,-2.547 -0.32092,-1.382 0.59548,-0.901 0.96988,-0.16 0.2193,0.137 0.44928,1.494 -0.34628,0.75066 0.69888,0.355 0.12536,-0.55516 1.01196,-0.24176 0.51046,0.76126 1.64915,-0.02 -0.26577,-0.64904 0.55813,-0.50575 0.21783,-1.16846 0.26939,-0.21152 0.14401,0.61239 -0.23212,0.57657 0.68134,0.32581 2.99701,-1.239 0.35707,0.95095 0.57201,-0.19536 0.33917,-0.84015 1.66457,-0.98344"},"25015":{"name":"Hampshire, MA","path":"m 920.08565,161.98614 0.47833,-0.15322 0.34215,0.92105 1.00789,-0.2894 0.2665,1.32957 -1.66457,0.98344 -0.33917,0.84015 -0.57201,0.19536 -0.35707,-0.95095 -2.99701,1.239 -0.68134,-0.32581 0.23212,-0.57657 -0.14401,-0.61239 -0.26939,0.21152 -0.21783,1.16846 -0.55813,0.50575 0.26577,0.64904 -1.64915,0.02 -0.51046,-0.76126 -1.01196,0.24176 -0.12536,0.55516 -0.69888,-0.355 0.34628,-0.75066 -0.44928,-1.494 -0.2193,-0.137 -0.96988,0.161 -0.59548,0.9 -0.0553,0.192 -0.36192,0.02 -0.69888,-0.321 -0.37797,-1.141 0,-0.201 0.93957,-0.02 -0.0713,-2.049 -0.11232,-1.43252 -0.21838,-0.41878 1.67091,-0.0637 0.33944,1.23755 0.73048,-0.0279 1.26005,0.0629 0.18579,0.3201 0.74561,-0.46667 0.35117,1.08141 2.52995,-1.21841 0.83352,-0.26309 0.16753,0.57774 1.80162,-0.784 0.98817,2.4977 0.44348,-1.10335"},"25003":{"name":"Berkshire, MA","path":"m 902.26943,156.83614 3.98471,-0.861 0.20346,0.96776 1.07008,-0.10621 -0.44844,0.82447 0.77439,0.2004 0.1843,2.27328 0.21838,0.41878 0.11232,1.43252 0.0713,2.049 -0.93957,0.02 0,0.201 0.37797,1.141 0.69888,0.321 0.36192,-0.02 0.0553,-0.192 0.32092,1.382 0.0499,2.547 -0.62757,0.04 0.19255,1.022 0.0802,0.209 0.62757,1.132 -7.22419,1.528 -0.16046,0.04 -0.3851,-0.779 0.25317,-10.141 0.14798,-5.648"},"25011":{"name":"Franklin, MA","path":"m 915.55181,153.99014 2.8936,-0.618 0.4603,1.26454 0.70693,0.0637 0.32397,1.03855 -0.37234,0.13335 -0.26788,0.41188 0.36862,1.37337 0.53554,0.39781 -0.50892,0.78078 0.32667,0.984 -0.23037,0.984 0.29774,1.182 -0.44348,1.10335 -0.98817,-2.4977 -1.80162,0.784 -0.16753,-0.57774 -0.83352,0.26309 -2.52995,1.21841 -0.35117,-1.08141 -0.74561,0.46667 -0.18579,-0.3201 -1.26005,-0.0629 -0.73048,0.0279 -0.33944,-1.23755 -1.67091,0.0637 -0.1843,-2.27328 -0.77439,-0.2004 0.44844,-0.82447 -1.07008,0.10621 -0.20346,-0.96776 1.52792,-0.321 7.76975,-1.664"},"25007":{"name":"Dukes, MA","path":"m 956.26186,174.17473 0.21573,0.522 0.23177,0.965 -0.016,0.137 -4.2115,1.18379 -0.58442,0.56721 -0.23818,0.62581 -1.06284,-0.31784 -0.25373,-0.48179 1.05554,-0.25118 0.65075,-2.041 0.17829,-0.298 0.49742,-0.611 0.624,-0.681 0.0981,0 0.0891,0.1955 0.63015,-0.11154 0.45076,0.85295 0.84302,0.32467 0.47592,0.20556 z m -4.13833,-1.1594 -0.72745,0.89939 -0.66451,1.12487 -0.74329,0.24289 -0.40652,0.55782 -0.53132,0.34779 -0.73977,0.32005 -0.19698,-0.0109 0.18741,-0.39674 0.70483,-0.1876 0.39561,-0.56769 1.40352,-1.24952 0.14164,-0.45952 0.55104,-0.68289 0.62579,0.06"},"24001":{"name":"Allegany, MD","path":"m 831.01703,243.76514 0.65253,-0.121 0.53665,1.945 -1.83993,3.15 -3.35001,0.184 -2.12161,-0.844 -2.88469,3.971 -1.89697,-0.426 1.3942,-6.108 2.11805,-0.387 7.39178,-1.364"},"24023":{"name":"Garrett, MD","path":"m 821.5072,245.51614 -1.3942,6.108 -3.26978,3.945 -0.92423,1.70743 -1.41583,1.54356 -0.5375,0.20301 -1.88806,-11.789 1.46374,-0.264 7.96586,-1.454"},"24037":{"name":"St. Mary's, MD","path":"m 871.70212,268.87714 0.8433,2.2 1.4339,1.40218 -0.15665,0.50292 0.65402,1.70821 -0.80261,-0.26266 -0.83763,-0.79593 -1.2306,-0.50672 -0.14218,0.65955 -1.22679,-0.60971 -1.22452,-1.14286 -1.5875,-0.34832 -1.32917,0.28336 -0.24946,0.21953 -0.84591,-0.39455 -0.70424,-0.949 -0.91818,-1.597 0.007,-0.428 0.95561,-2.931 0.15511,-0.138 0.61688,-0.09 0.32983,-0.03 0.7078,0.1 2.48244,1.80729 1.20758,0.26105 0.56191,1.2589 1.29992,-0.18224"},"24017":{"name":"Charles, MD","path":"m 858.00968,262.51214 1.06259,1.911 0.27991,-0.603 0.0464,-0.178 0.082,-0.103 0.23177,-0.159 0.56517,-0.266 1.83101,-0.315 2.17688,0.508 0.0695,0.128 0.4368,1.222 0.89143,0.265 0.27278,0 0.19434,0.819 -0.7078,-0.1 -0.32983,0.03 -0.61688,0.09 -0.15511,0.138 -0.95561,2.931 -0.007,0.428 0.91818,1.597 0.0927,0.587 0,0.297 -0.0392,0.179 -1.74794,-0.80329 -0.18513,-0.3654 -0.90675,-0.53621 -1.13362,-2.04799 -0.75511,0.52499 -0.47403,0.65856 -0.48564,0.0877 -0.26735,0.47303 -0.93879,0.90663 -0.18542,-0.04 -0.67392,-0.328 -0.38689,-0.667 -0.48137,-1.494 0.0463,-0.733 0.27457,-0.987 0.72384,-1.304 0.77911,-0.964 -0.87291,-0.80824 0.57715,-0.0254 0.23019,-0.63032 0.52377,-0.31006"},"24047":{"name":"Worcester, MD","path":"m 889.6788,261.83314 5.10079,-1.115 0.0892,0.844 0.007,0.602 -0.016,0.822 -0.0713,0.747 -0.47219,5.272 -0.0464,0.323 -0.0571,0.223 -0.0998,0.369 -0.0588,0.265 -0.32504,0.84146 -0.69324,0.23687 0.86508,-1.67277 0.13892,-0.57214 0.0884,-1.09313 0.32304,-2.7908 -0.21511,0.97888 -0.55549,0.4364 -0.12278,-0.74071 -0.56225,0.41383 -0.5035,2.29275 -0.16014,1.04153 -0.48421,0.13751 0.0258,0.67132 -0.32359,-0.0975 0.0199,1.47056 -4.5744,1.55604 -1.07976,-1.44852 2.0746,-1.03348 -0.56338,-2.059 -1.63668,-1.951 4.29672,-1.214 0.53842,-1.189 0.0892,-0.54 -0.38688,-1.083 -0.64897,-0.944"},"24045":{"name":"Wicomico, MD","path":"m 882.84863,260.75214 0.24068,0.867 0.19255,0.657 0.20682,0.726 0.54021,-0.09 1.22839,-0.209 0.0642,0 0.52238,-0.1 1.04476,-0.2 0.36727,-0.07 0.895,-0.167 0.066,-0.01 0.24425,-0.05 0.28348,-0.05 0.6757,-0.153 0.25852,-0.06 0.64897,0.944 0.38688,1.083 -0.0892,0.54 -0.53842,1.189 -4.29672,1.214 -1.06795,-0.45541 -0.49247,0.93443 -1.24235,0.0107 -1.40837,1.38032 -1.04654,-0.362 0.0339,-1.725 0.54556,-3.568 0.11232,-0.21 0.37084,-0.209 0.41541,-0.378 0.83795,-1.469"},"24043":{"name":"Washington, MD","path":"m 835.87892,242.84914 10.87372,-2.058 -0.25851,1.262 -0.26387,0.713 -0.14441,0.245 -0.62935,0.406 -0.0446,0.25 -0.13906,1.672 -0.041,2.154 -0.32804,3.141 -0.68998,0.08 -0.68168,-0.36058 0.0703,-1.78334 -1.15385,-0.1498 -0.21889,-1.24736 -0.49875,-0.0151 -0.51177,-0.27673 -0.77601,-1.2117 0.77054,-0.32129 -0.0831,-0.60585 -0.63372,0.0891 -0.8573,0.3127 -0.67438,0.0281 -0.83697,0.3127 -0.49145,-0.54096 -0.29596,-0.328 -0.80229,-0.581 -0.64362,-0.241 -0.64896,-0.07 -0.59548,-0.02 -0.10519,0.04 -0.12123,0.137 -0.45642,0.722 -0.62044,1.143 -0.20859,0.03 -0.93244,-0.185 -0.53665,-1.945 4.20936,-0.796"},"24009":{"name":"Calvert, MD","path":"m 871.70212,268.87714 -1.29992,0.18224 -0.56191,-1.2589 -1.20758,-0.26105 -2.48244,-1.80729 -0.19434,-0.819 -1.18026,-4.781 0.0874,-0.193 0.48138,-0.417 0.44215,-0.05 0.21024,0.93525 1.6796,-0.0293 0.007,0.305 0.10519,0.481 0.91462,3.111 0.082,0.225 0.27991,0.515 0.33874,0.45 0.79516,0.577 1.48692,1.198 0.0642,0.12 0.0802,0.476 -0.12837,1.045"},"24041":{"name":"Talbot, MD","path":"m 876.79578,253.57614 0.16938,0.546 1.09666,1.5975 -1.31061,1.6805 -0.18007,0.722 0.0571,0.08 0.93958,0.789 0.48137,0.111 -0.66277,2.3641 -2.03242,-0.16769 -0.70296,-0.50141 0.0553,-0.103 -0.24782,-0.451 -0.88782,-0.17979 -0.92892,-1.26621 -0.29774,0.03 -0.28689,0.57062 -0.68478,-0.22662 -0.0571,0.04 -0.18364,0.424 0,0.234 0.2817,0.266 0.0303,0.233 -0.27278,0.248 -0.19968,-0.305 -0.20325,-1.519 0.016,-0.499 0.34231,-1.332 0.0374,-0.06 0.46533,-0.554 0.47506,0.47765 0.80139,-0.0113 -0.13399,-0.83612 1.40037,-1.03911 -0.0938,-1.41264 2.71773,0.0385"},"24011":{"name":"Caroline, MD","path":"m 876.79578,253.57614 0.94817,-4.58569 1.44623,-1.26531 3.19133,11.362 -4.33237,0.02 -0.48137,-0.111 -0.93958,-0.789 -0.0571,-0.08 0.18007,-0.722 1.31061,-1.6805 -1.09666,-1.5975 -0.16938,-0.546"},"24029":{"name":"Kent, MD","path":"m 873.67041,243.47614 4.05068,-0.973 0.50634,1.799 0.32091,1.133 -2.29812,0.393 -1.46373,0.412 -0.58657,0.256 -0.68284,0.867 0.48424,1.10718 -1.68232,1.89882 -0.74524,0.354 0.32581,1.61399 -0.67502,-0.0609 -0.19813,-1.57309 -1.04477,-1.068 -0.025,-0.467 0.0642,-0.369 0.73989,-3.441 0.20146,-0.344 0.8433,-1.134 1.86488,-0.408"},"24510":{"name":"Baltimore City, MD","path":"m 865.28914,248.90114 -0.31114,0.5888 -1.31127,-0.7028 -1.82577,-0.53433 -0.43934,-2.09467 3.10067,-0.6458 0.7868,3.3888"},"24033":{"name":"Prince George's, MD","path":"m 859.48768,252.14614 0.95562,0.48 3.02196,2.203 0.65967,1.471 0.65074,3.832 1.18026,4.781 -0.27278,0 -0.89143,-0.265 -0.4368,-1.222 -0.0695,-0.128 -2.17688,-0.508 -1.83101,0.315 -0.56517,0.266 -0.23177,0.159 -0.082,0.103 -0.0464,0.178 -0.27991,0.603 -1.06259,-1.911 0.43324,-2.004 -0.009,-0.102 1.82515,-2.88049 -2.00166,-1.20251 1.23018,-4.177"},"24003":{"name":"Anne Arundel, MD","path":"m 867.45897,250.93514 0.38186,0.70176 -0.16844,0.66213 0.83134,0.55611 0.11946,0.25 -1.21162,1.10191 0.57157,0.69209 -0.44394,1.42 -0.19403,0.86913 0.452,0.18031 -0.90872,1.86556 0.15511,0.51 0.11767,0.202 0.51525,0.424 -1.6796,0.0292 -0.21024,-0.93525 -0.44215,0.05 -0.48138,0.417 -0.0874,0.193 -0.65074,-3.832 -0.65967,-1.471 -3.02196,-2.203 1.95224,-3.02 1.27119,-0.819 1.31123,0.71087 1.66205,0.61392 z"},"24027":{"name":"Howard, MD","path":"m 858.57307,247.16314 3.82247,2.443 -1.95224,3.02 -0.95562,-0.48 -0.28882,0.216 -0.75594,0.04 -0.20146,-0.06 -3.68698,-2.509 -0.84508,-0.866 -0.35301,-0.46 -0.016,-0.05 0.0321,-0.123 0.21929,-0.239 0.0143,-0.02 4.96708,-0.909"},"24031":{"name":"Montgomery, MD","path":"m 853.59173,248.08814 -0.21929,0.239 -0.0321,0.123 0.016,0.05 0.35301,0.46 0.84508,0.866 3.68698,2.509 0.20146,0.06 0.75594,-0.04 0.28882,-0.216 -1.23018,4.177 -0.91461,-0.474 -0.98236,1.599 -0.63731,-0.49051 -0.84824,0.0808 -0.2418,-0.0599 -0.38243,0.002 -0.4,-0.31474 -0.0221,-0.69265 -0.64609,-0.20048 -1.00644,-0.4202 -0.83616,0.09 -0.86113,0.04 -0.63292,-0.04 -0.0339,-0.01 -1.13926,-0.765 -0.11232,-0.08 -0.0107,0 -0.10162,-0.136 -0.12302,-0.392 -0.005,-0.02 0.0214,-0.208 0.0428,-0.289 0.007,-0.105 0.0731,-0.193 0.55727,-0.23701 0.14874,-0.87899 4.42152,-4.042"},"24035":{"name":"Queen Anne's, MD","path":"m 876.79578,253.57614 -2.71773,-0.0385 0.0938,1.41264 -1.40037,1.03911 -0.29838,-1.24102 -0.20871,-0.39888 -0.52103,-0.3345 -0.28818,0.56823 -0.35456,-0.12348 -0.381,0.25246 0.12437,0.45141 -0.75201,0.10792 0.25819,0.9762 -0.58157,0.77925 -0.0128,-0.82962 -0.41244,-1.53758 0.70223,-2.46281 0.60781,1.1183 1.41857,-0.20516 0.48991,-0.93817 -0.35883,-0.69591 0.17316,-0.50069 -0.0573,-0.60617 1.68232,-1.89882 -0.48424,-1.10718 0.68284,-0.867 0.58657,-0.256 1.46373,-0.412 2.29812,-0.393 0.64184,2.29 -1.44623,1.26531 -0.94817,4.58569"},"24015":{"name":"Cecil, MD","path":"m 869.69283,236.05814 5.9637,-1.277 0.18747,0.70087 0.0184,0.11922 0.0231,0.11514 0.027,0.11188 0.0301,0.10941 0.0326,0.10778 0.0342,0.10694 0.0352,0.10692 0.0354,0.10771 1.64099,6.13617 -4.05068,0.973 -0.0759,-0.27165 -0.5536,-0.0139 0.0307,-0.39581 0.64774,-0.95976 -0.55698,-0.20891 0.34095,-1.89581 -0.24733,-0.55154 -1.66982,0.70536 -3.57287,-3.463 1.67946,-0.363"},"24025":{"name":"Harford, MD","path":"m 867.90104,236.44414 0.11233,-0.02 3.57287,3.463 -0.44395,1.24221 0.96369,0.43347 0.19166,0.43632 -1.72047,2.024 -0.67571,0.799 -0.63373,0.90994 0.0349,0.46637 -0.32327,-0.098 -0.27596,-0.79734 -0.4172,-0.3 -0.0874,-0.206 -1.57605,-1.874 -1.0519,-0.795 -1.03763,-0.314 -0.36014,0.07 -0.46711,-0.369 -0.72206,-1.079 -0.16937,-0.401 -0.57944,-2.403 5.66596,-1.188"},"24005":{"name":"Baltimore County, MD","path":"m 858.49284,238.41114 3.74224,-0.779 0.57944,2.403 0.16937,0.401 0.72206,1.079 0.46711,0.369 0.36014,-0.07 1.03763,0.314 1.0519,0.795 1.57605,1.874 0.0874,0.206 -0.0874,0 -0.29774,0.138 0.412,1.09839 -0.82919,0.29161 -0.17472,1.004 0.30309,0.153 0.0998,-0.03 -0.0196,0.169 -0.0553,0.187 -0.47603,0.802 -0.24782,0.298 -1.08398,-0.105 -0.50634,-0.1 -0.0339,0 -0.7868,-3.3898 -3.10067,0.6458 0.43934,2.09567 1.82577,0.53433 -1.27119,0.819 -3.82247,-2.443 -0.68284,-2.394 0.27991,-1.817 0.3227,-4.541"},"24013":{"name":"Carroll, MD","path":"m 858.49284,238.41114 -0.3227,4.541 -0.27991,1.817 0.68284,2.394 -4.96708,0.909 0.36193,-2.637 0.0642,-0.706 -0.0161,-0.05 -2.1537,-1.574 -1.97825,-0.43134 0.52164,-0.88966 0.68997,-1.856 3.73868,-0.756 3.65845,-0.763"},"24021":{"name":"Frederick, MD","path":"m 846.92023,240.75714 4.17548,-0.827 -0.68997,1.856 -0.52164,0.88966 1.97825,0.43134 2.1537,1.574 0.0161,0.05 -0.0642,0.706 -0.36193,2.637 -0.0143,0.02 -4.42152,4.042 -1.58224,-0.53266 -0.66202,-0.83411 -0.95554,0.24477 -1.0666,-0.374 0.32804,-3.141 0.041,-2.154 0.13906,-1.672 0.0446,-0.25 0.62935,-0.406 0.14441,-0.245 0.26387,-0.713 0.25851,-1.262 0.16759,-0.03"},"24039":{"name":"Somerset, MD","path":"m 893.73047,271.13477 -0.69531,0.23632 -0.3868,1.04312 -0.43814,1.05375 -0.75918,1.43506 0.81124,-0.0207 -0.005,0.17592 -0.74013,0.18202 1.02673,0.34145 0.62795,-2.57746 z m -2.66211,4.19726 -0.3142,-0.19362 -2.5e-4,-0.54661 0.20507,-1.46485 -0.0488,-0.38867 0.63476,-0.43945 0.0254,-0.45313 -4.57422,1.55664 0,0.002 -0.58984,1.15039 -0.8613,0.46617 -0.16994,0.53528 1.2191,-0.11919 -0.0843,0.93219 -0.0137,0.2793 -0.30273,0.90429 -0.084,0.16602 -0.28907,0.38672 -0.63101,-0.35388 -0.64751,0.63081 0.31496,0.26218 0.27936,-0.286 0.31021,0.2978 -0.45999,0.6776 -1.19727,3.56836 -0.16406,0.57227 -0.10938,0.88281 0.0215,0.1211 0.10351,0.19336 1.73829,-0.51758 1.01367,0.41015 0.0957,0.9336 -0.0606,0.24023 -0.0371,0.18945 0.0938,0.21094 0.2246,-0.2207 0.22266,-0.35938 0.91406,-0.18945 0.0137,-0.23437 -0.68555,-0.16407 0.32226,-1.1289 0.3086,0.19726 0.043,0.33203 0.21484,0.14649 -0.16211,0.31054 0.20508,0.15626 0.13281,-0.38086 0.13867,0.0547 0.0391,0.54883 0.48242,0.37891 -0.0742,-0.19922 0.50781,-0.49024 0.24024,-1.62109 -0.28711,-3.00977 0.0625,-0.4414 0.53125,-2.42969 0.32031,-0.84765 0.24805,-0.51563 0.0664,-0.10352 0.0723,-0.11132 0.0723,-0.11524 0.11133,-0.13672 0.0566,-0.0605 0.0469,-0.0606 0.14648,-0.10156 z m -3.20898,9.80274 0.0254,0.006 -0.0254,-0.01 z m -7.2168,-9.56641 -0.93164,0.19531 0.0527,0.15039 0.11133,0.50196 0.31836,0.31836 0.48437,-0.13672 0.0469,-0.44141 -0.0312,-0.43164 z"},"24019":{"name":"Dorchester, MD","path":"m 878.04914,259.10314 2.14543,-1.15138 2.18694,1.13138 0.46712,1.665 -0.83795,1.469 -0.41541,0.378 -0.37084,0.209 -0.11232,0.21 -0.54556,3.568 -0.0339,1.725 -0.55665,0.51139 -0.69553,-0.47338 -0.72809,-0.82745 0.61962,-0.29145 0.38276,-0.37468 -0.52542,-0.81436 -0.6076,-0.0449 -0.002,0.88866 -0.50616,0.82823 0.51154,0.60497 0.14286,1.16756 -0.69999,-0.30782 -0.56552,-0.0147 -0.15844,-0.73527 -1.08582,0.0902 -0.1341,0.53031 1.03857,0.44846 -0.32555,0.41442 -0.87687,-0.55668 -0.29665,-0.41972 -0.4609,-0.33687 -0.62418,-0.21192 -0.0802,-0.06 -0.2496,-0.449 0.47573,-0.55737 -0.82018,-0.119 -0.74845,-1.46963 -0.99104,-1.12083 1.19773,-0.61794 0.13313,-0.58813 -1.05432,-0.73913 0.29196,-0.86197 0.0998,-0.169 0.3958,-0.337 0.16046,-0.09 1.46195,-0.41 0.70296,0.50141 2.03242,0.16769 0.66277,-2.3641 m 0.28883,13.138 -0.0392,-0.03 -0.016,0.01 -0.15333,-0.266 -0.12837,-0.451 -0.12836,-0.958 0.2496,-0.304 0.39401,-0.09 0.5937,0.484 0.0339,0.137 0.10341,0.339 -0.0963,0.456 -0.22464,0.467 -0.58834,0.207"},"23003":{"name":"Aroostook, ME","path":"m 950.81341,56.776143 -1.19096,-3.873 -13.73879,3.937 -4.6212,1.301 -0.34588,-2.715 -0.009,-0.07 0.0178,-0.06 0.41719,-1.238 1.17134,-3.439 2.26781,-6.589 3.05406,-8.84 1.24444,-0.103 1.47979,-0.03 0.22464,0.06 0.27099,0.369 0.0571,0.1 -0.11233,0.152 -0.016,0.03 -0.0321,0.536 0.80407,2.589 0.23356,0.209 0.12836,0.06 2.40331,0.786 0.61688,-0.537 1.67233,-1.592 1.84705,-1.679 2.84546,-2.484 0.39402,-0.224 0.74702,-0.234 0.69888,-0.06 0.2817,0.06 1.28545,0.433 3.74402,1.599 3.36784,2.122 0.0481,0.112 5.35931,17.125 3.1432,10.157 -0.25139,0.376 -0.016,0.217 0.50633,2.275 0.27278,0.225 -3.46055,2.033 -2.96669,1.711 -0.007,0.08 0.0392,0.12 -1.09469,0.62 -1.15708,0.642 -0.36014,-0.06 -1.08398,-3.682 -0.25852,-1.084 -0.49742,-1.767 -0.48316,-1.528 -2.997,-9.568 -4.04177,0.882 -1.90232,0.546"},"23021":{"name":"Piscataquis, ME","path":"m 950.81341,56.776143 0.89857,3.214 1.60636,5.481 2.0093,6.992 -1.9362,1.1 0.89144,3.327 1.56001,-0.813 3.12358,5.955 -1.58938,0.789901 0.97073,1.733099 -4.35377,2.275 -2.99879,1.519 -2.20897,1.807 -1.54219,0.772 -1.09289,-1.824 -4.73352,-9.24 0.22142,-2.317125 -2.47627,-1.581668 1.11504,-1.068623 1.20399,-2.723584 -1.33359,-2.427 -1.07685,-1.221 -2.23394,-7.658 -0.95383,-4.027 13.73879,-3.937 1.19096,3.873"},"23013":{"name":"Knox, ME","path":"m 956.87891,103.75195 -1.11719,1.53907 -0.71484,-0.47852 -0.14258,0.38281 -0.41016,0.21094 -0.16211,0.29492 0.35156,1.13281 0.49219,0.7168 0.5293,0.23242 0.5625,-0.0391 0.52148,-0.24219 1.03125,1.53516 0.72266,1.65625 -0.67383,1.07617 -0.10742,1.32617 1.54297,-0.27343 0.63086,0.47461 0.81445,-0.66407 -0.18164,-0.61328 1.56055,-2.23437 0.0312,-0.4336 0.33984,-0.33789 -0.16602,-0.48633 -0.78515,0.40625 -0.0996,-0.58593 0.041,-0.44141 -0.20117,-0.6875 0.28321,-0.27344 -0.22657,-1.25781 -0.81054,-0.42578 z m 8.16992,1.90039 -0.32813,0.17774 -0.88086,1.09375 -0.16992,0.47265 -0.0332,0.43555 0.041,0.0605 0.47657,-0.0527 0.87304,1.50586 0.29688,0.0899 0.17578,-0.041 0.66016,-0.35937 0.15234,-0.13672 0.22461,-0.5 0,0.006 0.0684,-0.1211 0.0664,-0.30468 -0.0859,-0.1836 -0.57422,-0.93164 -0.4082,-0.10742 -0.12305,-0.20117 0.65039,-0.30469 -0.95313,-0.49609 z m 3.92773,0.60157 -0.61133,0.83984 0.35718,0.65895 0.0725,0.77269 0.43164,-0.32031 0.35547,0.13672 0.0215,-1.58008 z m -2.88867,6.34375 -0.11719,0.2832 0.42969,0.87305 0.26758,-0.33985 -0.25586,-0.21484 -0.0937,-0.47266 z"},"23015":{"name":"Lincoln, ME","path":"m 950.57094,110.84714 1.72047,-0.08 -0.80407,-2.291 -0.0892,-1.23 1.73652,-0.05 0.1355,-0.129 0.16224,-0.426 -0.16224,-1.439 1.6331,-0.121 -0.41006,0.211 -0.16224,0.295 0.35301,1.133 0.49207,0.716 0.52952,0.234 0.5616,-0.04 0.52238,-0.243 1.0305,1.537 0.72206,1.655 -0.67392,1.077 -0.10698,1.326 -0.41719,-0.05 -0.32091,-0.04 -0.24782,0.321 -0.0695,0.08 -0.0125,0.54 0.11232,0.892 -0.27991,1.654 -0.13729,0.193 -2.12161,0.948 -0.50634,0.161 -0.37796,0 -2.81159,-6.839"},"23023":{"name":"Sagadahoc, ME","path":"m 950.57094,110.84714 2.81159,6.839 -0.14791,1.59745 -1.21071,1.22763 -1.11882,-1.11213 -0.47856,-1.64695 -0.10572,-2.09034 -0.28971,-0.19252 -0.43182,0.75486 -0.3548,0.449 -0.93065,0 -0.74168,-0.435 -0.36014,-0.513 -0.47246,-3.431 1.72192,-0.013 0.0449,-0.49499 0.0392,-0.545 0.0321,-0.161 0.14441,-0.265 0.11946,-0.152 1.55822,-0.09 0.12302,0.153 0.0481,0.127"},"23005":{"name":"Cumberland, ME","path":"m 939.76497,116.44114 -0.0107,0.05 0.0481,0.07 0.59547,0.24 0.90927,0.147 0.8192,0.14257 0.39288,-1.468 3.81739,1.99043 0.43324,-0.594 0.44215,-1.302 0.36014,0.514 0.74168,0.435 0.93065,0 0.3548,-0.449 0.43182,-0.75511 0.28971,0.19227 0.10572,2.08984 0.47856,1.64795 -0.84516,0.63755 -0.45849,0.84628 -0.68293,0.40505 0.30704,-1.75833 -0.41006,-1.182 -0.15511,-0.11 -0.14442,0.05 -1.25033,2.11105 -0.63291,1.101 -0.43502,1.792 0,0.153 0.32091,0.337 1.41654,1.66973 -0.83097,0.68863 -1.77588,0.85045 -1.20952,-0.31736 -1.68415,-0.51597 0.32805,-0.94 -1.9255,-1.228 -0.6397,0.76644 -0.96911,-0.0822 -0.36153,-1.74736 -1.61488,0.24658 -0.7782,-0.19674 -0.0374,-3.95276 -1.1267,-0.9058 -1.41091,-0.26633 -0.27405,-0.85843 0.79175,0.20737 1.40756,-2.01898 1.00493,-0.76371 0.88649,0.61002 -0.25036,1.29686 0.26387,0.417 0.43502,0.403 0.11232,0.06 0.62757,0.1 0.86113,-0.859"},"23031":{"name":"York, ME","path":"m 936.47371,122.9809 0.7782,0.19674 1.61488,-0.24658 0.36153,1.74736 0.96911,0.0822 0.6397,-0.76644 1.9255,1.228 -0.32805,0.94 1.68415,0.51597 1.20952,0.31736 -0.0713,1.599 0.59642,0.8564 -0.88564,2.49113 -1.00995,0.32088 -0.52266,2.43802 0.68934,0.51665 -0.95822,3.63875 -0.55937,-0.32519 -0.0802,0.16 -0.42789,0.37 -2.2482,-0.901 -0.624,-2.507 -0.0499,-0.06 -1.94333,-1.159 -0.80586,-0.401 -0.29595,-0.153 -0.46712,-0.649 -0.15154,-0.323 -0.12302,-0.513 -0.27991,-3.135 -2.02534,-5.279 1.52592,0.11483 1.86324,-1.12007"},"23001":{"name":"Androscoggin, ME","path":"m 940.9684,105.89914 1.5511,-1.118 1.07685,2.129 -0.5464,0.10083 1.15416,1.35542 0.90947,2.41575 1.62862,0.1 -0.003,1.40501 0.47246,3.43 -0.44215,1.302 -0.43324,0.594 -3.81739,-1.99043 -0.39288,1.468 -0.8192,-0.14257 -0.90927,-0.147 -0.59547,-0.24 -0.0481,-0.07 0.0107,-0.05 -0.25852,-0.611 1.478,-4.001 0.15154,-0.685 0,-3.006 -0.52951,-1.098 -0.0891,-0.588 0.45106,-0.553"},"23017":{"name":"Oxford, ME","path":"m 926.75358,90.638143 1.25336,2.909 0.9134,2.31235 -0.56039,0.23565 2.56555,6.032997 2.0396,-2.071 2.67609,3.285 -0.33231,0.78049 4.30989,-0.49849 0.8843,1.334 0.46533,0.941 -0.45106,0.553 0.0891,0.588 0.52951,1.098 0,3.006 -0.15154,0.685 -1.478,4.001 0.25852,0.611 -0.86113,0.86 -0.62757,-0.1 -0.11232,-0.06 -0.43502,-0.403 -0.26387,-0.417 0.25036,-1.29686 -0.88649,-0.61002 -1.00493,0.7637 -1.40755,2.01899 -0.79176,-0.20737 0.27405,0.85843 1.41091,0.26632 1.1267,0.90581 0.0374,3.95276 -1.86324,1.12007 -1.52592,-0.11483 -3.28404,-10.872 -3.01484,-9.586 -0.24068,-0.772 -3.39994,-10.252997 -0.61865,-1.767 1.10181,-0.619 2.21789,1.229 0.22464,0.112 0.46711,0 0.007,0 0.19254,-0.177 0.0339,-0.09 -0.0178,-0.563"},"23011":{"name":"Kennebec, ME","path":"m 944.89072,101.16614 1.71868,-0.41 3.61745,-0.298 0.18363,-0.216 -0.082,-1.004997 -0.54556,-0.402 -0.21573,-0.06 -0.28169,-0.29 -0.18542,-0.386 -0.0802,-0.24 2.21789,-1.118 0.22465,0 0.1141,0.209 0.0214,0.353 0.48673,0.964 1.08933,-0.151 0.28419,2.045237 0.65003,0.003 0.18542,2.016 -0.8219,0.08 -0.20146,2.957 0.16224,1.439 -0.16224,0.426 -0.1355,0.129 -1.73652,0.05 0.0892,1.23 0.80407,2.291 -1.72047,0.08 -0.0481,-0.127 -0.12302,-0.153 -1.55822,0.09 -0.11946,0.151 -0.14441,0.266 -0.0321,0.161 -0.0392,0.545 -0.0449,0.49499 -1.72192,0.013 0.003,-1.40501 -1.62862,-0.1 -0.90947,-2.41575 -1.15416,-1.35542 0.5464,-0.10083 -1.07685,-2.129 1.18561,-0.33936 0.0626,-0.69984 -0.74352,-0.26836 0.3453,-1.21379 1.36279,-0.34775 0.1584,-0.7459"},"23027":{"name":"Waldo, ME","path":"m 961.50781,94.304688 -5.0625,2.86914 -0.89258,-1.791016 -0.91601,0.451172 0,0.002 -0.75977,0.390624 -0.76562,-0.517578 -0.6543,0.06641 -0.0996,1.234375 -0.75976,0.392578 0.48632,0.96289 1.08985,-0.15039 0.28515,2.044927 0.64844,0.004 0.18555,2.01563 -0.82031,0.0801 -0.20313,2.95703 1.63477,-0.1211 0.14258,-0.38476 0.71484,0.47851 1.11719,-1.53906 3.65625,1.50977 0.8125,0.42578 0.76172,-2.25 0,-0.23438 -0.10352,-0.73047 -0.42852,-0.45858 -0.25312,-0.0727 -0.15625,-0.20898 -0.21485,-0.36914 0.0566,-0.29102 0.71679,-0.50586 0.0588,-0.42081 0.37886,-0.0371 0.3943,0.3252 0.89455,-1.095823 0.19922,-0.121094 -0.0156,-0.126953 -0.0879,-0.44336 -0.60156,-1.589843 -0.53907,-0.476563 -0.42187,-0.263672 -0.10156,-0.144531 -0.0332,-0.126953 0.11328,-1.433594 z m 0.78225,10.453982 0.33115,-1.32464 -0.18188,-0.99919 -0.0554,-0.53447 0.24867,-0.48158 0.46012,0.0648 0.21748,0.59621 -0.34145,0.67709 0.34786,0.43657 -0.0556,1.20406 -0.40214,0.91233 z"},"23009":{"name":"Hancock, ME","path":"m 970.06445,78.470703 -3.62304,1.894531 1.32812,2.517578 -1.89844,1.019532 0.93164,1.726562 -1.87304,0.958985 0.60351,1.115234 1.70508,3.423828 -2.52539,1.300781 -0.18945,1.066407 -0.84375,-0.294922 -0.39649,0.730469 -0.0527,0.65039 -0.81445,-0.166016 -0.45118,0.199219 0,0.01367 -0.11328,1.431641 0.0332,0.128906 0.10156,0.144531 0.42187,0.263672 0.53907,0.476563 0.60156,1.589843 0.0879,0.441407 0.0156,0.128906 0.1875,-0.111328 0.0293,0.255859 -0.0625,0.683599 -0.12891,0.16015 -0.041,0.0586 0.0156,0.45117 0.49805,2.07226 0.0469,0.0996 0.54296,-0.0586 0.28711,-0.39258 0.7168,-0.23242 1.73438,0.33594 0.49804,0.13086 0.81836,0.39062 0.24219,0.16016 0.0156,0.041 0.42969,-0.17382 -0.0918,-0.49414 -0.0254,-0.11133 -0.36132,-0.5 -0.16797,-0.17578 -0.29102,0.0605 -0.16797,-0.1289 -0.0644,-0.10157 -0.0391,-0.0996 -0.25977,-1.29296 -0.33924,-0.803539 0.521,-0.01641 0.39202,-0.982832 0.51411,0.925826 0.0215,0.21875 0.14453,0.199219 0.20312,-0.04102 0.0645,-0.06055 -0.19336,-0.697266 -0.23242,-0.570312 0.0137,-0.16211 0.0586,-0.121093 0.0957,-0.06836 0.14454,0 0.21093,0.144531 0.0371,0.296875 0.14453,0.552735 0.1211,0.08008 0.10547,-0.01953 0.0723,-0.06055 0.27344,-0.527344 0.36133,-0.322266 0.53711,-0.371093 0.60351,-0.595704 0.0898,-0.810546 0.56836,-0.248047 0.55859,-0.111328 0.62305,-0.128907 0.45898,-0.06055 0.11133,0.06055 0.0898,0.144532 -0.0156,0.201172 0.0879,0.3125 0.4082,0.93164 0.25195,0.324219 0.90625,0.916015 0.1211,0.04883 0.008,0 0.18359,-0.0293 0,-0.185547 0.01,-0.128906 0.0234,-0.410157 0.0566,-0.3125 0.0644,-0.443359 0.19922,-0.296875 0.17969,0.152344 0.0859,0.08008 0.11329,-0.0293 0.18554,-0.345703 -0.0332,-0.394531 -0.20899,-0.22461 -0.4414,-0.691406 -0.47656,-0.84375 -0.98633,-1.767578 -0.0723,-0.707031 -0.49023,-1.238282 -1.14844,-1.736328 -2.00781,-3.625 1.5664,-0.816406 -0.27539,-1.150391 -1.18945,-2.533203 z m 2.48047,19.619141 -0.71875,0.410156 -0.52539,0.216797 -0.41797,0.318359 -0.16211,0.226563 -0.20703,0.888671 -0.10351,0.6582 0.0879,0.30664 0.33593,0.48243 0.43555,0.40234 1.17188,0.35938 0.33203,-0.15235 0.27148,-0.625 -0.16015,-0.28906 -0.0469,-0.0215 -0.0449,-0.0684 -0.0527,-0.21679 0.0879,-0.20899 0.19336,-0.17773 0.65821,-0.19336 0.46679,-0.527344 0.0625,-0.07031 0.01,-0.01953 0.17773,-0.33789 -0.11914,-0.330078 -0.32422,-0.515625 -0.31054,-0.320313 -0.0176,-0.01953 z m 1.50977,2.703126 -0.80078,0.33984 0.0879,0.44336 0.47461,-0.14648 0.0234,-0.25781 z m -5.42062,-1.209133 -0.24815,0.223499 0.29645,0.535524 -0.008,0.50201 0.71354,0.10007 0.19433,-0.32085 -0.6867,-0.770748 z m 3.47772,3.378003 -4.6e-4,0.44246 0.61328,0.14258 -0.043,-0.47266 0.16016,-0.42774 -0.38868,0.0879 z m -1.62843,0.0871 -0.30367,-0.28524 -0.002,0.51172 0.33008,0.13086 0.16211,-0.14648 z m -3.68063,-0.15829 -0.0801,0.0293 0.0801,0.0684 0.041,0.14453 0,0.16211 -0.13672,0.71289 -0.27539,-0.0488 -0.006,0.38672 0.0234,0.0899 0.36914,1.09961 0.39648,0.0879 0.31055,0.16797 0.17578,0.125 0.0664,-0.4043 0.33203,-0.21875 0.24414,-0.49024 -0.11914,-1.1582 -0.18359,-0.2793 -0.25782,-0.18554 -0.84375,-0.25 z m 4.45118,0.4043 -0.72071,0.53906 -0.30273,0.73243 0.60937,0.041 0.32422,-0.0117 0.27344,0.36524 0.32617,-0.0527 0.32422,-0.69922 -0.0606,-0.3164 z m 1.69531,1.13086 -0.32031,0.0625 -0.0918,0.48438 0.36328,0.0312 0.47656,-0.29297 z m -2.32422,0.88281 -0.33398,0.0117 0.11914,0.53125 0.33789,-0.17968 z"},"23029":{"name":"Washington, ME","path":"m 971.08464,67.826143 5.40923,0.25 0.18542,-0.131 0.32091,-0.112 0.10341,0.02 0.5313,0.401 0.0802,0.145 1.33359,4.22 0.12837,0.811 -0.18364,1.093 -0.066,0.112 -0.26743,0.225 0.0196,0.242 0.64896,0.69 1.44056,1.446 0.9467,0.499 0.0321,0.02 0.0571,0.03 0.16759,0.04 0.0802,-0.02 0.40293,-0.587 -0.0642,-0.378 0,-0.635 0.0802,-0.128 0.19968,-0.04 1.89698,0.09 0.009,0 0.70602,0.515 0.39579,0.353 3.39815,4.138 0.35301,0.692 -0.0906,0.761647 0.0321,0.16 -0.42432,1.029 -1.40669,2.901 -0.37083,0.692 -1.06794,1.173 -0.6044,0.128 0.25704,-0.917962 -0.47522,-0.179103 -0.2855,-1.189698 -1.02211,0.794576 0.66876,0.879043 -0.32187,1.212875 -0.71974,0.366151 -1.26016,-0.569962 -0.42772,0.782846 0.42049,1.47188 -0.6131,0.612576 -1.16194,0.346463 -0.37505,0.960298 -2.23901,-0.819964 0.60162,3.354334 -0.63649,0.33 -0.53842,0.241 -0.14441,0.05 -0.2086,-0.225 -0.44215,-0.691 -0.47603,-0.844 -0.98771,-1.768 -0.0713,-0.706 -0.49029,-1.238 -1.14817,-1.736 -2.00929,-3.625 1.56714,-0.818 -0.27456,-1.15 -1.18918,-2.532 -1.42986,-2.69 0.45107,-0.177 1.28366,-0.643 -0.82725,-1.824 -3.34823,-5.859 3.46055,-2.032"},"23019":{"name":"Penobscot, ME","path":"m 967.62409,69.858143 3.34823,5.859 0.82725,1.824 -1.28366,0.643 -0.45107,0.177 -3.62457,1.895 1.32823,2.516 -1.8986,1.019639 0.93229,1.727361 -1.87202,0.958 0.60261,1.116 1.70443,3.423 -2.52455,1.301 -0.19011,1.067082 -0.84395,-0.295082 -0.3958,0.731 -0.0518,0.650149 -0.81464,-0.167149 -0.45107,0.2 -0.4582,-0.305 -5.06156,2.869 -0.89322,-1.792 -0.9164,0.451 -3.64062,-7.377 2.99879,-1.519 4.35377,-2.275 -0.97073,-1.733099 1.58938,-0.789901 -3.12358,-5.955 -1.56001,0.813 -0.89144,-3.327 1.9362,-1.1 -2.0093,-6.992 -1.60636,-5.481 -0.89857,-3.214 1.90232,-0.546 4.04177,-0.882 2.997,9.568 0.48316,1.528 0.49742,1.767 0.25852,1.084 1.08398,3.682 0.36014,0.06 1.15708,-0.642 1.09469,-0.62 -0.0392,-0.12 0.007,-0.08 2.96669,-1.712"},"23007":{"name":"Franklin, ME","path":"m 928.70404,80.570143 2.1234,4.58 3.09328,6.308 1.47659,-0.589692 0.67037,0.949446 1.66125,-0.937754 2.22196,3.88272 -0.67763,0.253375 0.8615,1.792512 1.48448,-0.516195 1.76834,3.699685 0.59566,-0.258097 0.90748,1.431997 -0.1584,0.7459 -1.36232,0.36414 -0.34577,1.1974 0.74352,0.26836 -0.0626,0.69984 -1.18561,0.33936 -1.5511,1.118 -0.46533,-0.941 -0.8843,-1.334 -4.30989,0.49899 0.33231,-0.77999 -2.67609,-3.286 -2.0396,2.071 -2.56555,-6.032997 0.56039,-0.23565 -0.9134,-2.31235 -1.25336,-2.909 -0.0161,-0.77 -0.016,-0.74 0.21573,-4.58 0.22464,-1.229 0.14619,-0.29 0.16759,-0.337 0.3958,-0.715 0.60796,-1.116 0.0499,-0.08 0.17472,-0.209"},"23025":{"name":"Somerset, ME","path":"m 935.88366,56.840143 0.95383,4.027 2.23394,7.658 1.07685,1.221 1.33359,2.427 -1.20399,2.723584 -1.11504,1.068623 2.47627,1.581668 -0.22142,2.317125 4.73352,9.24 1.09289,1.824 1.54219,-0.772 2.20897,-1.807 3.64062,7.377 -0.7595,0.39125 -0.76454,-0.518975 -0.6546,0.06736 -0.0999,1.234111 -0.7595,0.39125 -0.0214,-0.353 -0.1141,-0.208 -0.22465,0 -2.21789,1.118 0.0802,0.24 0.18542,0.385 0.28169,0.291 0.21573,0.06 0.54556,0.401 0.082,1.006001 -0.18363,0.216 -3.61745,0.297 -1.71868,0.41 -0.90748,-1.431001 -0.59566,0.258097 -1.76834,-3.699685 -1.48448,0.516195 -0.8615,-1.792512 0.67763,-0.253375 -2.22196,-3.88272 -1.66125,0.937754 -0.67037,-0.949446 -1.47659,0.589692 -3.09328,-6.308 -2.1234,-4.58 0.13015,-0.161 0.89322,-1.069 2.07348,-5.014 0.0374,-0.369 -0.0374,-0.957 -0.24961,-0.193 -0.25673,-0.119 -0.77198,0 -0.29774,-0.983 -0.25852,-1.075 -0.49742,-2.884 0.20147,-1.56 0.2496,-1.872 0.009,-0.02 0.17472,-0.499 0.15511,-0.241 0.0214,-0.02 0.0428,-0.02 0.50455,-0.371 0.89143,-1.381 -0.18363,-1.471 -0.27278,-2.147 4.6212,-1.301"},"26053":{"name":"Gogebic, MI","path":"m 620.09104,106.75814 0.41897,-0.03 0.23356,3.945 1.95041,-0.1086 0.13198,1.9896 5.96905,-0.417 0.28169,3.945 5.9637,-0.433 0.39223,5.399 -1.13212,-0.555 -1.0929,-0.369 -0.67749,-0.144 -0.86647,-0.177 -11.52447,-2.364 -1.62242,-0.337 -1.47799,-0.312 -3.23056,-3.97 -1.81497,-0.988 1.06081,-0.861 0.31379,-0.177 2.54772,-1.021 0.98771,-0.28 0.85934,-0.362 0.25852,-0.153 0.4885,-0.466 1.15709,-1.15 0.42432,-0.601"},"26131":{"name":"Ontonagon, MI","path":"m 634.76584,99.615143 0.46533,6.098997 1.08399,-0.08 0.13906,1.952 -1.97542,0.128 0.15867,2.596 0.24961,3.359 0.15332,1.977 -5.9637,0.433 -0.28169,-3.945 -5.96905,0.417 -0.13198,-1.9896 -1.95041,0.1086 -0.23356,-3.945 -0.41897,0.03 0.59726,-0.74 0.25673,-0.209 0.62579,-0.369 1.10003,-0.346 0.73098,-0.114 0.21038,0.03 0.29595,0.112 3.22343,-0.545 0.33875,-0.12 0.65788,-0.354 5.67131,-3.577 0.96631,-0.913997"},"26115":{"name":"Monroe, MI","path":"m 734.38013,203.79514 1.97186,-0.442 2.1127,-0.305 0.14441,0.06 1.90411,1.18 -1.91302,2.437 -0.91462,1.637 -0.72384,1.318 -0.0713,0.139 -0.025,0.103 0.0303,1.776 -5.21311,0.884 -1.24623,-8.205 3.94371,-0.586"},"26091":{"name":"Lenawee, MI","path":"m 730.43642,204.38114 1.24623,8.205 -1.9772,0.346 -8.10136,1.326 -1.07329,-8.413 3.91162,-0.46 5.994,-1.004"},"26059":{"name":"Hillsdale, MI","path":"m 720.5308,205.84514 1.07329,8.413 -0.64897,0.104 -6.87118,1.052 -0.49742,-1.428 -0.86826,-7.18 1.97542,-0.182 5.83712,-0.779"},"26023":{"name":"Branch, MI","path":"m 704.82728,207.74214 7.89098,-0.936 0.86826,7.18 -6.30066,0.74 -1.62241,0.174 -0.83617,-7.158"},"26149":{"name":"St. Joseph, MI","path":"m 696.91312,208.67314 7.91416,-0.931 0.83617,7.158 -6.23648,0.717 -2.23394,0.239 -0.27991,-7.183"},"26027":{"name":"Cass, MI","path":"m 689.12733,209.44514 7.78579,-0.772 0.27991,7.183 -4.60337,0.467 -2.77236,0.296 -0.68997,-7.174"},"26021":{"name":"Berrien, MI","path":"m 686.32109,205.74714 2.42699,-0.2475 0.37925,3.9455 0.68997,7.174 -5.06335,0.522 -5.10971,0.491 0.007,-0.01 0.74881,-0.627 0.93779,-0.901 0.58656,-0.65 0.90214,-1.229 0.312,-0.595 0.20859,-0.58 0.30666,-1.374 0.87539,-2.532 0.33874,-0.713 1.45304,-2.669"},"26163":{"name":"Wayne, MI","path":"m 740.92327,194.48314 3.56039,-0.571 -0.13728,1.236 -0.0624,0.217 -0.38689,0.926 -0.55269,0.369 -0.46711,0.233 -0.4261,0.114 -0.0642,0.01 -0.73276,0.378 -0.23177,0.249 -0.22643,0.459 -0.36905,1.253 0.007,0.08 0,0.08 0.0981,1.327 -0.12124,2.096 -0.29773,1.357 -1.90411,-1.18 -0.14441,-0.06 -2.1127,0.305 -1.97186,0.442 -1.26583,-7.982 7.80897,-1.33"},"26161":{"name":"Washtenaw, MI","path":"m 733.1143,195.81314 1.26583,7.982 -3.94371,0.586 -5.994,1.004 -1.01267,-8.082 7.81253,-1.173 1.87202,-0.317"},"26075":{"name":"Jackson, MI","path":"m 723.26929,197.31814 0.16046,-0.02 1.01267,8.082 -3.91162,0.46 -5.83712,0.779 -1.11607,-8.06 1.97898,-0.227 7.7127,-1.019"},"26025":{"name":"Calhoun, MI","path":"m 707.64778,199.28214 5.92983,-0.718 1.11607,8.06 -1.97542,0.182 -7.89098,0.936 -0.99662,-7.982 3.81712,-0.478"},"26077":{"name":"Kalamazoo, MI","path":"m 699.72471,200.17614 4.10595,-0.416 0.99662,7.982 -7.91416,0.931 -0.90035,-8.075 3.71194,-0.422"},"26159":{"name":"Van Buren, MI","path":"m 687.44786,201.52914 8.56491,-0.931 0.90035,8.075 -7.78579,0.772 -0.37925,-3.9455 -2.42699,0.2475 1.12677,-4.218"},"26005":{"name":"Allegan, MI","path":"m 694.83964,192.64114 3.96867,-0.435 0.9164,7.97 -3.71194,0.422 -8.56491,0.931 0.26565,-8.118 7.12613,-0.77"},"26015":{"name":"Barry, MI","path":"m 706.68325,191.25914 0.96453,8.023 -3.81712,0.478 -4.10595,0.416 -0.9164,-7.97 3.93836,-0.481 3.93658,-0.466"},"26045":{"name":"Eaton, MI","path":"m 710.64479,190.79914 3.9134,-0.447 0.9984,7.985 -1.97898,0.227 -5.92983,0.718 -0.96453,-8.023 3.96154,-0.46"},"26065":{"name":"Ingham, MI","path":"m 718.53755,189.72414 3.42846,-0.44 1.30328,8.034 -7.7127,1.019 -0.9984,-7.985 3.97936,-0.628"},"26093":{"name":"Livingston, MI","path":"m 729.81955,188.13614 1.42273,7.994 -7.81253,1.173 -0.16046,0.02 -1.30328,-8.034 3.91696,-0.596 3.93658,-0.552"},"26125":{"name":"Oakland, MI","path":"m 739.25272,184.41314 1.67055,10.07 -7.80897,1.33 -1.87202,0.317 -1.42273,-7.994 -0.31378,-2.02 1.96115,-0.303 1.95046,-0.419 5.83534,-0.981"},"26099":{"name":"Macomb, MI","path":"m 741.18,184.02814 4.06494,-0.649 0.78803,4.354 0.0891,0.545 -1.63845,5.634 -3.56039,0.571 -1.67055,-10.07 1.92728,-0.385"},"26147":{"name":"St. Clair, MI","path":"m 740.15307,178.09814 8.12988,-1.471 0.041,0.145 0.32983,0.971 0.13015,0.346 1.35676,2.01 -0.11232,6.427 -0.12123,2.259 -0.0731,0.561 -0.0571,0.154 -0.8433,1.365 -0.0785,0.1 -0.28347,0.08 -0.95562,0.19 -0.92174,-0.907 -0.0606,-0.161 0.29952,-0.722 0.31379,-0.281 0.41006,0.09 0.20859,-0.293 0.0642,-0.126 0.025,-0.2 -0.041,-0.217 -0.14441,-0.17 -0.0802,-0.04 -0.69176,-0.169 -0.19255,-0.04 -0.25673,0.05 -0.40115,0.219 -0.025,0.01 -0.0891,-0.545 -0.78803,-4.354 -4.06494,0.649 -1.02693,-5.93"},"26087":{"name":"Lapeer, MI","path":"m 732.24604,177.56014 -0.0321,-0.227 1.80638,-0.32895 -0.31947,-1.95305 3.85635,-0.625 0.15154,0.98 1.96116,-0.291 0.48316,2.983 1.02693,5.93 -1.92728,0.385 -5.83534,0.981 -1.17134,-7.834"},"26049":{"name":"Genesee, MI","path":"m 728.35403,178.10514 3.89201,-0.545 1.17134,7.834 -1.95046,0.419 -1.96115,0.303 0.31378,2.02 -3.93658,0.552 -1.1339,-8.051 -0.21136,-2.12524 3.81632,-0.40676"},"26155":{"name":"Shiawassee, MI","path":"m 724.74907,180.63714 1.1339,8.051 -3.91696,0.596 -3.42846,0.44 -1.03763,-7.834 -0.025,-0.231 7.27411,-1.022"},"26037":{"name":"Clinton, MI","path":"m 717.49992,181.89014 1.03763,7.834 -3.97936,0.628 -3.9134,0.447 -0.93958,-7.985 7.79471,-0.924"},"26067":{"name":"Ionia, MI","path":"m 701.79818,183.72314 7.90703,-0.909 0.93958,7.985 -3.96154,0.46 -3.93658,0.466 -0.94849,-8.002"},"26139":{"name":"Ottawa, MI","path":"m 693.61659,182.62314 0.49921,3.983 0.36192,2.685 0.36192,3.35 -7.12613,0.77 -1.88271,-7.946 2.44432,-0.248 3.62279,-0.412 -0.24247,-1.991 1.96115,-0.191"},"26121":{"name":"Muskegon, MI","path":"m 681.83896,177.64714 7.01381,-0.602 0.43323,3.986 4.12378,-0.426 0.20681,2.018 -1.96115,0.191 0.24247,1.991 -3.62279,0.412 -2.44432,0.248 -0.19255,-0.401 -0.73097,-1.294 -1.60637,-2.652 -0.2496,-0.488 -0.58657,-1.287 -0.30487,-0.795 -0.32091,-0.901"},"26081":{"name":"Kent, MI","path":"m 693.40978,180.60514 3.77612,-0.451 4.15409,-0.457 0.45819,4.026 0.94849,8.002 -3.93836,0.481 -3.96867,0.435 -0.36192,-3.35 -0.36192,-2.685 -0.49921,-3.983 -0.20681,-2.018"},"26117":{"name":"Montcalm, MI","path":"m 708.61231,174.86814 1.0929,7.946 -7.90703,0.909 -0.45819,-4.026 -4.15409,0.457 -0.43324,-3.994 7.90525,-0.836 3.9544,-0.456"},"26057":{"name":"Gratiot, MI","path":"m 712.5578,174.40114 3.92767,-0.482 0.98949,7.74 0.025,0.231 -7.79471,0.924 -1.0929,-7.946 3.94549,-0.467"},"26145":{"name":"Saginaw, MI","path":"m 727.5357,172.22414 0.81833,5.881 -3.81632,0.40676 0.21136,2.12524 -7.27411,1.022 -0.98949,-7.74 -0.0374,-0.362 3.28583,-0.41 -0.20325,-1.991 1.94689,-0.211 0.28375,0.91821 1.58114,-0.12221 2.1127,-0.264 0.35505,0.79181 1.72556,-0.0448"},"26151":{"name":"Sanilac, MI","path":"m 736.51423,166.44714 8.36166,-1.512 0.0802,0.475 0.29774,1.51 0.0891,0.29 0.79637,1.5183 1.05845,2.10955 0.56453,4.52715 0.11233,0.282 0.40827,0.98 -8.12988,1.471 -0.48316,-2.983 -1.96116,0.291 -0.15154,-0.98 -1.04298,-7.979"},"26157":{"name":"Tuscola, MI","path":"m 730.59688,165.99614 0.20325,1.407 5.7141,-0.956 1.04298,7.979 -3.85635,0.625 0.31947,1.95305 -1.80638,0.32895 0.0321,0.227 -3.89201,0.545 -0.81833,-5.881 -0.36193,-2.7 3.42311,-3.528"},"26063":{"name":"Huron, MI","path":"m 736.51423,166.44714 -5.7141,0.956 -0.20325,-1.407 0.0267,-0.112 0.18185,-0.909 0.4582,-1.462 1.9772,-3.456 4.51601,-2.875 0.82725,-0.218 2.15371,0.804 0.85934,0.514 0.13728,0.128 0.60974,0.875 1.40669,2.035 0.22642,0.465 0.4582,1.391 0.18363,0.641 0.25674,1.118 -8.36166,1.512"},"26017":{"name":"Bay, MI","path":"m 718.32539,161.35214 1.98612,-0.257 0.26564,1.961 2.1858,-0.258 -0.12123,3.512 2.49958,2.403 2.03247,0.811 0.36193,2.7 -1.72556,0.0448 -0.35505,-0.79181 -2.1127,0.264 -1.58114,0.12221 -0.28375,-0.91821 -1.94689,0.211 -0.72028,-5.884 -0.48494,-3.92"},"26111":{"name":"Midland, MI","path":"m 711.62002,166.40614 3.9437,-0.458 -0.041,-0.337 3.28761,-0.339 0.72028,5.884 0.20325,1.991 -3.28583,0.41 0.0374,0.362 -3.92767,0.482 -0.93778,-7.995"},"26073":{"name":"Isabella, MI","path":"m 711.62002,166.40614 0.93778,7.995 -3.94549,0.467 -3.9544,0.456 -0.9788,-7.953 7.94091,-0.965"},"26107":{"name":"Mecosta, MI","path":"m 695.87549,168.20514 7.80362,-0.834 0.9788,7.953 -7.90525,0.836 -0.87717,-7.955"},"26123":{"name":"Newaygo, MI","path":"m 695.87549,168.20514 0.87717,7.955 0.43324,3.994 -3.77612,0.451 -4.12378,0.426 -0.43323,-3.986 -0.82904,-7.997 7.85176,-0.843"},"26127":{"name":"Oceana, MI","path":"m 681.54835,169.63714 6.47538,-0.589 0.82904,7.997 -7.01381,0.602 -1.19809,-2.298 -0.19434,-0.369 -0.20859,-0.538 -0.0713,-0.353 -0.0267,-0.266 0.0107,-0.33 0.1034,-0.458 0.26565,-0.506 0.41006,-0.651 0.29061,-0.53 0.20681,-0.602 0.0892,-0.419 0.041,-0.619 -0.009,-0.07"},"26011":{"name":"Arenac, MI","path":"m 727.68011,156.26514 0.0481,0.86 0.009,0.586 -0.041,1.045 -1.38885,1.638 -1.3425,0.378 -0.39402,0.05 -0.68997,0 -0.28882,0.218 -0.0981,0.112 -0.32092,0.458 -0.36905,1.004 -0.041,0.186 -2.1858,0.258 -0.26564,-1.961 -1.98612,0.257 -0.46355,-3.778 4.60694,-0.587 5.21133,-0.722"},"26051":{"name":"Gladwin, MI","path":"m 717.86184,157.57414 0.94849,7.698 -3.28761,0.339 0.041,0.337 -3.9437,0.458 -0.99128,-7.916 3.92945,-0.481 3.30365,-0.435"},"26035":{"name":"Clare, MI","path":"m 706.64403,158.94814 3.98471,-0.458 0.99128,7.916 -7.94091,0.965 -0.89856,-8.045 3.86348,-0.378"},"26133":{"name":"Osceola, MI","path":"m 702.78055,159.32614 0.89856,8.045 -7.80362,0.834 -0.92353,-8.003 3.76721,-0.426 4.06138,-0.45"},"26085":{"name":"Lake, MI","path":"m 694.95196,160.20214 0.92353,8.003 -7.85176,0.843 -0.9057,-8.074 3.63171,-0.307 4.20222,-0.465"},"26105":{"name":"Mason, MI","path":"m 681.44494,161.31314 5.67309,-0.339 0.9057,8.074 -6.47538,0.589 -0.87717,-3.432 -1.11513,-1.46505 1.31837,-2.00695 0.57052,-1.42"},"26069":{"name":"Iosco, MI","path":"m 721.41332,149.06414 9.2424,-1.276 0.0856,0.577 0.10518,1.641 -0.20146,1.952 -1.34072,1.551 -0.30487,-0.09 -0.26743,0 -0.33696,0.121 -0.12659,0.09 -0.21751,0.305 -0.1765,0.339 -0.12123,0.497 -0.0731,1.487 -5.21133,0.722 -1.05546,-7.923"},"26129":{"name":"Ogemaw, MI","path":"m 721.41332,149.06414 1.05546,7.923 -4.60694,0.587 -3.30365,0.435 -1.00376,-7.923 7.85889,-1.022"},"26143":{"name":"Roscommon, MI","path":"m 705.71158,150.94514 7.84285,-0.859 1.00376,7.923 -3.92945,0.481 -3.98471,0.458 -0.93245,-8.003"},"26113":{"name":"Missaukee, MI","path":"m 705.71158,150.94514 0.93245,8.003 -3.86348,0.378 -4.06138,0.45 -0.8843,-7.955 7.87671,-0.876"},"26165":{"name":"Wexford, MI","path":"m 689.9528,152.67314 7.88207,-0.852 0.8843,7.955 -3.76721,0.426 -4.20222,0.465 -0.79694,-7.994"},"26101":{"name":"Manistee, MI","path":"m 689.9528,152.67314 0.79694,7.994 -3.63171,0.307 -5.67309,0.339 0.97033,-3.96181 0.14442,-1.31 0.016,-0.457 0.007,-2.252 7.36994,-0.65919"},"26001":{"name":"Alcona, MI","path":"m 720.36856,141.12514 9.17465,-1.26 0.41897,0.618 0.79516,2.587 0.0178,0.571 -0.11945,4.147 -9.2424,1.276 -1.04476,-7.939"},"26135":{"name":"Oscoda, MI","path":"m 712.55067,142.14714 7.81789,-1.022 1.04476,7.939 -7.85889,1.022 -1.00376,-7.939"},"26039":{"name":"Crawford, MI","path":"m 704.82728,142.99014 7.72339,-0.843 1.00376,7.939 -7.84285,0.859 -0.8843,-7.955"},"26079":{"name":"Kalkaska, MI","path":"m 704.82728,142.99014 0.8843,7.955 -7.87671,0.876 -0.75951,-6.879 0.0464,-0.802 0.0232,-0.114 0.48316,-0.225 7.19923,-0.811"},"26055":{"name":"Grand Treverse, MI","path":"m 695.26575,143.85814 1.80961,1.084 0.75951,6.879 -7.88207,0.852 -0.60083,-5.985 2.53992,-0.339 0.56652,0.37537 0.13328,-1.19591 0.50675,-0.55389 -0.15477,-0.61558 0.45185,-0.38242 -0.62096,-0.31716 0.44467,-1.08004 0.26242,-1.33306 0.66417,0.56326 -0.38773,0.81748 0.20026,1.58569 -0.52793,0.85322 -0.38336,1.68363 0.5458,0.0234 0.1434,-1.01929 1.52949,-1.89568"},"26019":{"name":"Benzie, MI","path":"m 689.35197,146.68814 0.60083,5.985 -7.36994,0.65919 0.0802,-0.731 0.0178,-0.41 -0.14441,-0.625 -0.14441,-0.323 -0.44929,-0.86 -0.12301,-0.345 -0.0161,-0.53 0.0161,-0.128 0.0891,-0.17 0.2496,-0.192 0.93957,-0.433 1.05368,-0.348 0.24782,-0.273 0.14619,-0.401 0.0392,-0.273 -0.009,-0.201 4.77586,-0.40119"},"26089":{"name":"Leelanau, MI","path":"m 691.99609,136.34766 -1.02929,0.66601 -1.19141,3.32031 -0.73633,0.53321 -0.14844,0.96484 -1.48046,1.65235 -0.56641,-0.58985 -0.88027,0.33867 -0.09,1.05703 -0.90077,0.36592 -0.19948,-0.50498 -0.42159,0.15698 0.0487,0.89693 0.17578,1.99219 4.77539,-0.40235 2.53906,-0.33789 -0.42382,-1.25195 -0.0645,-0.40235 -0.008,-0.57226 0.0312,-0.23242 0.23438,-0.89258 0.0625,-0.0488 -0.30078,-1.77734 0.28906,-1.34961 -0.60547,-1.80274 1.33984,-1.33007 -0.28125,-0.44922 z m -0.10547,10.10937 0.002,0.008 0,-0.008 z m -9.02624,-4.18643 10e-4,-0.68682 0.83563,-0.2884 0.15258,0.23089 -0.0968,0.60035 -0.49363,0.57073 z m 2.6698,-1.43994 0.12728,-0.43027 -0.34961,-1.73047 -0.82812,-0.25 -0.85352,0.55469 0.10157,0.63477 0.64843,0.49609 0.41407,0.57812 z"},"26007":{"name":"Alpena, MI","path":"m 727.40733,132.07014 1.31041,1.439 1.1963,2.41 -0.0784,0.09 -0.27635,-0.03 -0.89143,-0.233 -0.30487,-0.17 -0.19255,-0.249 -0.54021,-0.113 -0.51169,0.362 -0.11053,0.17 -0.13907,0.385 -0.007,0.08 0.19255,0.94 0.21751,0.852 0.11945,0.249 0.11232,0.17 0.14442,0.128 0.57943,0.474 1.31576,0.844 -9.17465,1.26 -0.47603,-3.535 0.009,-0.289 0.0731,-0.161 -0.50633,-3.913 7.93912,-1.157"},"26119":{"name":"Montmorency, MI","path":"m 719.46821,133.22714 0.50633,3.913 -0.0731,0.161 -0.009,0.289 0.47603,3.535 -7.81789,1.022 -0.89321,-7.866 1.93619,-0.243 5.87456,-0.811"},"26137":{"name":"Otsego, MI","path":"m 705.73476,134.92214 5.9227,-0.641 0.89321,7.866 -7.72339,0.843 -0.84151,-5.875 1.92603,-0.32537 -0.17704,-1.86763"},"26009":{"name":"Antrim, MI","path":"m 695.18552,136.01514 0.19077,-0.03 2.46749,-0.231 0.1765,1.654 0.63649,0.282 3.01305,-0.353 2.31595,-0.227 0.84151,5.875 -7.19923,0.811 -0.48316,0.225 -0.0232,0.114 -0.0464,0.802 -1.80961,-1.084 0.12658,-0.321 0.24247,-0.724 0.12124,-0.458 0.1141,-1.574 0.005,-1.64 -0.12837,-1.093 -0.5616,-2.033"},"26029":{"name":"Charlevoix, MI","path":"m 699.83789,131.9375 -1.14844,0.0195 -0.83007,0.31445 -0.19922,0.11133 -1.46289,1.18164 -0.24024,0.24805 -0.30554,0.28984 -0.37805,0.54024 -0.18555,0.84961 0.0977,0.62695 0.1914,-0.0293 2.4668,-0.23046 0.17578,1.65429 0.63672,0.28125 3.01367,-0.35351 2.31641,-0.22657 1.92578,-0.32422 -0.17773,-1.86914 -0.2168,-1.99218 -3.73633,0.39453 -0.81836,0 -1.125,-1.48047 z m -7.57555,-8.0805 -0.99136,-0.1353 0.006,0.96552 -0.52899,0.9018 0.12666,0.71876 -0.23327,0.61433 0.16864,0.94023 1.09583,0.0706 0.73779,-0.81129 0.0977,-0.60942 -0.37169,-0.98575 0.0367,-1.13834 -0.40604,-0.28831 z"},"26141":{"name":"Presque Isle, MI","path":"m 727.40733,132.07014 -7.93912,1.157 -5.87456,0.811 -0.67392,-5.32 -0.61866,-4.42 0.76129,-0.112 1.47978,1.776 5.49659,2.153 3.5283,1.086 0.47424,0.06 0.89857,-0.105 0.25851,-0.289 0.12659,0.02 0.82903,0.941 1.25336,2.234"},"26031":{"name":"Cheboygan, MI","path":"m 705.51725,132.92914 -1.34785,-11.378 0.32092,0.467 4.37873,2.097 1.35854,-0.234 0.72385,-0.298 1.91124,0.451 0.19968,0.152 -0.76129,0.112 0.61866,4.42 0.67392,5.32 -1.93619,0.243 -5.9227,0.641 -0.21751,-1.993"},"26047":{"name":"Emmet, MI","path":"m 705.51725,132.92914 -3.73511,0.394 -0.82012,0 -1.12499,-1.48 0.80942,-0.128 0.98949,-0.328 0.65075,-0.476 0.0321,-0.225 -0.0214,-0.16 -0.0749,-0.177 -0.11054,-0.08 -0.96453,-0.07 -0.14442,0.114 -0.83438,-0.169 -0.52594,-0.458 -0.34232,-0.369 -0.45998,-0.979 -0.14263,-0.396 -0.14619,-0.667 0,-0.144 0.082,-0.257 0.48138,-1.061 0.18541,-0.256 1.69551,-1.833 -0.80961,-1.14459 3.01859,0.0266 0.16224,-0.136 -0.32999,-0.69488 1.13228,-0.22112 1.34785,11.378"},"26097":{"name":"Mackinac, MI","path":"m 696.88086,111.92773 -1.97656,0.23243 -9.96485,1.125 0,0.0156 0.65039,6.29883 2.72461,-0.10352 0.51563,-0.21093 0.12695,-0.16797 0.50586,-0.85938 0.16211,-0.52343 0.88477,-1.23633 0.26953,-0.29883 0.13867,-0.0996 0.19336,-0.0703 1.14648,-0.24024 0.24219,-0.0195 1.23828,0.0605 3.39063,0.6914 1.94531,0.58594 4.38281,3.16602 0.53591,-0.61596 -0.35427,-1.58521 0.42383,-2.52735 2.68555,0.76563 3.375,0.73437 3.36718,-0.92773 -2.02539,-0.0586 -0.57031,-1.77734 -1.41992,0.20313 -0.45313,-1.97852 -11.90039,1.41406 z m 8.17377,7.32762 0.3342,0.77004 0.45769,-0.17694 -0.43056,-0.71029 z m 1.13846,1.66366 0.80496,-0.0792 1.25586,1.56641 1.62109,0.0586 0.32227,-1.36914 -1.34766,-0.0644 -1.69141,-0.56055 z"},"26033":{"name":"Chippewa, MI","path":"m 697.93359,99.537109 -1.18945,0.552731 -2.16211,0.17578 -0.99609,0.29883 1.31836,11.61914 1.97656,-0.23437 0.24023,1.99414 11.90039,-1.41406 0.45313,1.97851 1.41992,-0.20312 0.57031,1.77734 2.02539,0.0586 0.16016,0.0996 0.25781,0.10547 1.17969,0.041 2.17773,0.0586 0.13868,-0.51367 -0.19532,-0.63476 -0.36718,-0.0606 -0.57618,-0.6836 -0.94335,0.0957 -0.67579,-0.42578 -0.69726,-0.66602 0.12305,-0.5957 0.43945,-0.52735 -2.50586,-0.8164 -1.02148,0.21679 -0.35352,-0.91796 0.79492,-0.71875 0.40234,-0.10352 -0.39768,-0.70734 -0.37966,-0.33172 -0.19336,-1.2461 -0.5039,-0.5332 -0.3086,-1.32617 -0.48828,-0.4961 -0.63672,-0.76757 -0.82812,-0.16211 -0.92578,0.32226 -0.35938,0.32227 -0.0762,1.17773 -0.61719,0.0606 -1.32812,0.47461 -0.0899,-0.44922 -0.74414,-0.79102 -0.94922,-0.0859 -1.30859,0.9375 -0.84375,0.42578 -0.59961,-0.61914 -0.83789,0.0215 -0.57617,-0.24023 -1.02149,0.37109 -0.16992,-0.0586 -0.14648,-0.0996 -0.29688,-0.33789 -0.10547,-0.23242 -0.0469,-0.27344 -0.008,-3.65039 0.008,-0.28906 0.0723,-0.35352 0.16211,-0.38477 z m 13.37273,9.402451 0.47027,0.40697 0.42849,0.92886 0.14844,0.44727 0.10351,-0.43946 0.49609,-0.30468 -0.18554,-0.80274 -0.64063,-0.75976 -0.16601,-0.15505 -0.23047,0.004 -0.375,0.2195 z m 0.65462,-0.83995 0.82617,-0.0137 -0.80664,-0.86133 -0.72852,-1.22461 0.20313,-0.87109 0.23437,-0.12305 0.17188,-0.71094 0.0371,-0.41992 -0.2168,-0.26758 -0.16797,-0.0195 -0.875,-0.0703 -0.34765,0.70508 -0.71875,0.32617 0.0449,0.56055 0.5,0.21484 0.49609,1.3418 0.85547,0.49804 z m 8.79297,4.18359 -1.04688,0.18164 -0.18164,0.29883 0.97266,0.32617 0.1289,0.64454 -0.66797,0.24609 -0.74609,0.24609 -0.34375,0.76563 -0.46875,0.25195 -0.24219,-0.6543 -0.30859,-0.0996 -0.26758,0.69922 0.11328,0.4375 0.85157,0.13867 0.26367,0.29688 0.23242,0.30469 0.71484,0.12304 2.72461,0 0.55274,-0.21679 0.1289,-0.12891 0.0899,-0.14453 0.42578,-1.33398 -0.0234,-0.0898 -0.13281,-0.16015 -1.87696,-1.91211 -0.74023,-0.20118 z"},"26095":{"name":"Luce, MI","path":"m 684.30467,107.24014 -0.42433,-4.218 1.09825,0.09 0.70958,0 2.58695,-0.218 0.70601,-0.07 0.51525,-0.1 0.42789,-0.153 1.68303,-0.956 1.97899,-1.189 1.31754,11.619 -9.96446,1.125 -0.6347,-5.939"},"26153":{"name":"Schoolcraft, MI","path":"m 684.30467,107.24014 0.6347,5.939 0.65074,6.298 -0.85042,0.555 -2.41936,-0.136 -0.37084,0 -1.61528,0.248 -0.36905,0.136 -0.88252,0.483 -0.53843,0.676 -0.11232,0.215 -0.009,1.254 -0.17651,1.262 -0.1765,0.201 -0.9088,0.06 -0.24115,0.73599 -0.2496,0.112 -0.0642,-0.02 -0.30487,-3.158 -0.53129,-1.961 -0.57052,-3.968 -2.00038,0.176 -0.39402,-3.979 3.97937,-0.36 -0.39401,-3.978 7.91416,-0.804"},"26003":{"name":"Alger, MI","path":"m 683.88086,103.12305 -0.95117,0.22461 -4.08985,1.13476 -2.99023,2.40235 -2.10938,0.95312 -0.32226,0.59961 -0.52344,0.21094 -0.36523,1.0039 -0.33594,0.14649 -0.17188,0.84765 -0.52734,-0.0469 -0.0312,-0.48242 -0.91211,0.0801 -0.375,-0.51172 -0.83008,-0.1875 -0.48632,1.04883 -0.40821,-0.0293 -0.14648,-0.0898 -1.08985,-0.88476 -0.34765,-0.70703 -0.22461,-0.20899 -0.51367,-0.0918 -0.13868,0 -0.90625,0.50781 -0.57812,0.51562 0.72266,7.67969 7.9707,-0.76953 -0.39453,-3.98047 3.98047,-0.35937 -0.39454,-3.97852 7.91407,-0.80273 0,-0.006 z m -11.61298,6.13189 -0.0586,-0.35659 -0.25589,0.0689 -0.0799,0.26229 -0.28715,-0.12635 0.13217,-0.92282 -0.68728,-0.78581 -0.74805,0.35742 0.41016,0.98047 0.31641,0.44336 -0.16016,0.55078 0.17773,0.20117 0.29688,-0.0469 0.15625,-0.50195 0.19922,0.14843 -0.01,0.19727 0.22656,0.0352 z"},"26041":{"name":"Delta, MI","path":"m 665.22796,117.13114 7.97121,-0.77 2.00038,-0.176 0.57052,3.968 0.53129,1.961 0.30487,3.158 -0.86825,0.217 -0.18996,0.90196 -0.71276,0.0869 0.01,1.13015 -0.70096,0.16917 0.44792,1.25951 -1.11915,-0.30101 -0.63899,-0.66875 -0.1445,-0.67816 0.51599,-0.28918 0.0124,-0.47775 0.72174,-1.53092 1.0373,-0.15432 -0.39693,-0.28691 0.69307,-1.44268 -0.45501,-1.10855 -0.85989,0.68336 -0.53182,1.04608 -1.11124,-0.15391 -0.48256,-0.4859 -0.61527,0.25323 0.0853,1.50969 -0.79385,1.74444 -1.90714,1.42702 -0.24787,-1.93446 -0.18364,-0.884 -0.15332,-0.41 -0.31379,-0.458 0.68666,-1.15024 -0.31471,-0.81421 -0.45043,0.79317 -0.0398,0.79468 -0.6109,0.6756 -0.36105,0.83399 0.62024,1.01564 -0.91226,1.44786 -1.00811,0.53963 -0.76709,1.77188 -0.3851,0.885 -0.009,0.03 -1.0198,0.1 -0.69888,-7.964 -0.49742,-0.626 -0.35479,-1.294 1.99324,-0.177 -0.34587,-3.977 2.00038,-0.186"},"26109":{"name":"Menominee, MI","path":"m 657.59549,121.80814 3.98472,-0.337 0.35479,1.294 0.49742,0.626 0.69888,7.964 1.0198,-0.1 -0.29595,1.157 -0.51347,1.654 -1.47265,3.336 -1.04298,1.687 -0.99841,3.07 -0.73097,-0.114 -0.41719,-0.07 -0.0161,0 -1.2694,-1.342 -0.0731,-0.121 -0.14263,-0.473 -0.001,-0.002 -10e-4,-0.002 -10e-4,-0.002 -10e-4,-0.002 -10e-4,-0.003 -0.001,-0.002 -10e-4,-0.002 -10e-4,-0.002 1.03528,-3.44506 -0.93194,-0.82209 -0.8147,0.84765 -2.29013,-0.005 1.57876,-3.41468 -0.16045,-4.147 -0.48138,-0.594 -0.041,-0.04 -0.025,-0.02 -0.30488,-0.248 2.10379,-0.194 -0.34231,-4.017 1.2694,-0.114 -0.16937,-2"},"26043":{"name":"Dickinson, MI","path":"m 649.10012,116.53814 7.98012,-0.692 0.51525,5.962 0.16937,2 -1.2694,0.114 0.34231,4.017 -2.10379,0.194 -3.79929,-1.021 -0.21751,0.03 -0.016,0 -0.21751,-0.06 -0.1355,-0.03 -0.6133,-0.498 -0.0161,0 -0.1034,-0.201 0.0232,-0.08 0.009,-0.02 0.28169,-0.36 0.11232,-0.09 0.25673,-0.362 0.22465,-0.385 -0.0232,-0.08 -0.0499,-0.07 -0.47246,-0.676 -0.24782,-0.159 -0.62935,-7.521"},"26103":{"name":"Marquette, MI","path":"m 648.98779,101.23714 2.27316,-0.128 1.41739,0.37 0.50455,0.145 2.48354,1.342 0.65787,0.61 0.13729,0.674 0.16759,0.506 3.48907,4.429 0.1355,0.152 0.25852,0.208 0.25495,0.121 0.65966,0.145 0.83616,0 2.06635,-0.321 0.1765,-0.05 0.72207,7.68 -2.00038,0.186 0.34587,3.977 -1.99324,0.177 -3.98472,0.337 -0.51525,-5.962 -7.98012,0.692 -0.32092,-3.955 -0.47424,-5.914 1.96294,-0.185 -0.16225,-1.936 -0.0392,-0.02 -0.80407,0.06 -0.27457,-3.352"},"26071":{"name":"Iron, MI","path":"m 639.83632,113.29114 8.94288,-0.708 0.32092,3.955 0.62935,7.521 -0.37797,-0.251 -0.61152,-0.296 -0.39937,-0.06 -0.0356,0 -4.67647,-0.587 -2.81159,0.298 -0.32983,-0.586 -4.08099,-1.045 -0.97345,-0.474 -0.39223,-5.399 -0.15332,-1.977 4.94924,-0.378"},"26083":{"name":"Keweenaw, MI","path":"m 636.77514,74.640143 0.1141,-0.217 0.0285,-0.06 0.24247,-0.29 0.64183,-0.41 0.99662,-0.537 1.89519,-0.515 -0.62154,0.785425 -1.50374,1.193769 -0.11497,0.396378 0.17788,0.485828 -0.31347,0.3366 -1.28056,1.143025 -1.20353,0.654107 -1.19902,0.209956 -2.49093,1.786073 0.007,0.374554 1.11842,-0.03966 -2.82694,1.737951 -0.51346,0.144 -0.52417,-0.137 -0.72206,-0.408 -0.36192,-0.532 0.1141,-0.288 0.46355,-0.612 0.51525,-0.522 1.248,-0.844 1.50831,-0.898 3.42311,-2.147 1.18205,-0.795 m 4.15408,18.683 0.73811,-1.304 0.58122,-0.763 0.43323,-0.337 2.56912,-1.679 0.53843,-0.248 2.18579,-0.602 0.95027,-0.163 0.77734,-0.05 2.00929,-0.05 0.72206,0.227 0.42789,0.231 0.24782,0.186 0.15333,0.763 -0.0143,0.112 -1.58497,0.515 -0.18542,-0.02 -2.13587,0.45 -2.35518,3.294 -0.44036,0.571 -0.9895,0.458 -1.10894,0.1 -0.16937,-1.968 -3.35002,0.273"},"26061":{"name":"Houghton, MI","path":"m 642.77537,100.1088 -0.22374,0.85134 -1.62241,0.33 0.0583,1.90828 -1.90001,0.22972 0.7488,9.859 -4.94924,0.378 -0.24961,-3.359 -0.15867,-2.596 1.97542,-0.128 -0.13906,-1.953 -1.08399,0.08 -0.46533,-6.099997 0.36906,-1.269 0.20859,-0.346 1.09468,-1.02 1.63949,-1.553427 0.28774,-0.270698 0.0362,0.817488 0.68861,1.140043 1.51368,0.263871 0.55217,1.378121 z m -4.17205,-5.142803 2.32589,-1.645354 3.35003,-0.2705 0.16937,1.968 1.10894,-0.1 -2.65588,5.006639 -1.57469,-1.314611 -0.57449,-1.467423 -1.53601,-0.241546 -0.57698,-1.028415 z"},"26013":{"name":"Baraga, MI","path":"m 648.98779,101.23714 0.27457,3.352 0.80407,-0.06 0.0392,0.02 0.16225,1.936 -1.96294,0.185 0.47424,5.914 -8.94288,0.708 -0.7488,-9.859 1.90001,-0.22972 -0.0583,-1.90828 1.62241,-0.33 -0.31913,1.43 -0.0267,1.246 0.0267,0.129 0.18185,0.442 0.21038,0.433 0.37619,-0.03 0.0571,-0.161 0.26565,-0.442 0.77198,-1.077 1.70442,-1.823 1.34072,-0.924 0.17651,-0.06 0.1765,0.09 1.49404,1.02"},"27055":{"name":"Houston, MN","path":"m 601.33703,175.02814 0.40293,2.78 1.10003,5.15 -6.53957,0.314 -1.98433,0.09 -0.36371,-7.98 7.38465,-0.353"},"27045":{"name":"Fillmore, MN","path":"m 588.18302,175.62214 5.76936,-0.241 0.36371,7.98 -5.81929,0.248 -6.12951,0.25 -0.2906,-7.69 6.10633,-0.547"},"27071":{"name":"Koochiching, MN","path":"m 547.5728,73.080143 -0.15332,-7.73 0.21573,-0.09 0.41897,-0.03 1.23731,0.02 0.27456,0.05 0.47246,0.257 0.14442,0.289 0.009,0.153 0.0161,0.458 0,0 0.0945,0.06 0.31557,0.08 1.51009,0.09 1.13212,-0.02 3.26978,0.282 0.0981,0.08 0.19255,0.353 0.25673,0.717 0.0321,0.206 -0.0802,0.596 -0.10341,0.176 0,0.106 0.0553,0.08 0.3227,0.233 0.58656,0 1.45304,-0.05 1.80783,-0.346 1.18204,-0.41 0.0963,-0.112 0.0553,-0.257 -0.005,-0.128 -0.0749,-0.153 -0.0802,-0.298 0.0267,-0.105 1.78287,-0.835 1.41382,-0.41 0.73098,-0.02 0.43323,0.385 0.54734,-0.02 0.0321,0 0.82725,-0.09 0.0874,4.846 0.0428,3.92 0.13371,3.978 0.15511,1.045 0.17472,2.089 0.0339,0.875 -10.82559,0.129 0.025,1.198 -10.01973,0.216 -0.35301,-11.885"},"27077":{"name":"Lake of the Woods, MN","path":"m 533.62898,58.881143 2.59586,-0.02 -0.0303,-3.519206 -0.016,-1.48 -0.016,-2.369 -0.009,-0.651 0,-0.03 2.98988,0.29 0.94774,0.441 1.09364,0.925 1.25367,4.18812 0.003,2.600242 0.83089,0.707624 0.39483,1.786858 -0.28187,2.047362 0.71493,0.651 0.24782,0.225 1.02337,0.57 0.44037,0.243 0.025,0.02 0.21751,0.02 0.77733,0.08 0.58835,-0.259 0.15332,7.731 -12.10212,0.185 -0.0481,-3.961 -2.01821,0 -0.0232,-3.931 3.88844,-0.03 -0.0713,-4.722 -0.37796,0.392 -0.33875,0.201 -0.15154,0.06 -1.19631,0.249 -0.1765,0 -0.25852,-0.06 -0.7078,-0.435 -0.33696,-0.651 -0.0642,-1.109 0.0392,-0.394"},"27135":{"name":"Roseau, MN","path":"m 533.62898,58.881143 -0.0392,0.394 0.0642,1.109 0.33696,0.651 0.7078,0.435 0.25852,0.06 0.1765,0 1.19631,-0.249 0.15154,-0.06 0.33875,-0.201 0.37796,-0.392 0.0713,4.723 -3.88844,0.03 0.0232,3.931 -4.00968,0.06 -12.11638,-0.128 -0.009,-1.737 -0.24247,-2.2 0.025,-6.422 16.57713,0"},"27069":{"name":"Kittson, MN","path":"m 504.42914,58.753143 12.62271,0.128 -0.025,6.422 0.24247,2.2 0.009,1.737 -11.96662,-0.09 1.12677,-3.126 -0.67571,-1.535 -0.29774,-0.884 -1.10894,-3.623 -0.0892,-0.481 0.0178,-0.339 0.0713,-0.337 0.0731,-0.07"},"27125":{"name":"Red Lake, MN","path":"m 527.7883,83.109143 0.009,1.993 -1.98191,-0.0053 -0.0113,2.012251 -8.03539,0 -0.0274,-2.007751 -1.99796,0.0098 0,-2.644 12.03615,0 0.009,0.651"},"27113":{"name":"Pennington, MN","path":"m 529.56404,77.692143 0.18541,3.481 0.016,1.968 -1.9772,-0.03 -0.009,-0.651 -12.03615,0 -0.25852,-4.807 3.80286,0 1.1553,0.05 2.81159,0.03 6.30958,-0.05"},"27089":{"name":"Marshall, MN","path":"m 505.31166,69.151143 11.96662,0.09 12.11638,0.128 0,2.958 0.025,0.98 0.1355,0 0.009,4.379 -6.30958,0.05 -2.81159,-0.03 -1.1553,-0.05 -3.80286,0 -10.03577,-0.06 0.009,-0.468 0.50634,-1.952 -0.0981,-5.48 -0.36014,-0.442 -0.12124,-0.06 -0.0731,-0.04"},"27119":{"name":"Polk, MN","path":"m 515.48471,77.660143 0.25852,4.807 0,2.644 1.99796,-0.0098 0.0274,2.007751 8.03539,0 0.0113,-2.012251 1.98192,0.0053 -0.009,-1.993 1.9772,0.03 0.0802,5.577 0.16224,0.369 0.2389,0 0,3.954 -8.04252,0.04 -12.33568,-0.06 -0.53843,-3.961 -2.02355,-4.622 -1.49583,-5.391 -0.36192,-1.398 0,-0.06 10.03577,0.06"},"27107":{"name":"Norman, MN","path":"m 522.20435,93.082143 0,7.945997 -2.0093,0 -9.96446,-0.04 -0.0802,-1.992997 -0.2817,-5.978 12.33568,0.06"},"27087":{"name":"Mahnomen, MN","path":"m 530.24687,93.041143 0.0892,7.970997 -8.13167,0.02 0,-7.945997 8.04252,-0.04"},"27029":{"name":"Clearwater, MN","path":"m 529.7655,83.141143 -0.016,-1.968 5.50372,-0.03 0.57944,3.36 0.1765,4.547 0.0713,5.947 0.27456,5.945997 -6.01897,0.06 -0.0892,-7.970997 0,-3.954 -0.2389,0 -0.16224,-0.369 -0.0802,-5.577"},"27007":{"name":"Beltrami, MN","path":"m 533.40434,69.313143 2.01821,0 0.0481,3.961 12.10212,-0.185 0.35301,11.885 0.0571,3.697 0.11946,2.876 0.009,2.58 -0.0242,0.818204 -3.94624,0.0338 -8.06035,0.03 -0.0713,-5.947 -0.1765,-4.547 -0.57944,-3.361 -5.50372,0.03 -0.18541,-3.48 -0.009,-4.378 -0.1355,0 -0.025,-0.981 0,-2.958 4.00968,-0.06"},"27031":{"name":"Cook, MN","path":"m 600.30118,75.275143 0.82012,-0.683 1.38173,-0.676 0.59548,0 0.0553,0.02 0.0731,0.09 0.61866,1.373 0.26386,0.756 0,0.02 0.49742,1.006 0.16224,0.151 2.80446,-0.522 6.0885,-0.482 0.62935,-0.03 0.70067,0.129 0.27813,0.06 0.80407,0.321 0.43502,0.595 0.0785,0.186 -0.0321,0.312 0.0731,0.16 0.40292,0.291 1.14104,0.545 0.37619,0.02 0.3851,-0.185 2.95956,-0.546 2.57803,-0.33 -0.0232,0.216 -0.0571,0.06 -0.8843,0.692 -0.25674,0.193 -3.31792,1.952 -2.11983,1.159 -1.207,0.658 -1.13391,0.49 -1.38885,0.465 -1.06972,0.378 -2.94887,1.238 -1.45482,0.62 -3.00592,1.967 -1.98434,1.649 -2.31416,2.225 -0.45642,-9.346 -0.28169,-4.307 -0.26565,-2.892"},"27075":{"name":"Lake, MN","path":"m 600.30118,75.275143 0.26565,2.892 0.28169,4.307 0.45642,9.346 -0.34588,0.208 -1.21948,1.366 -0.42432,0.499 -1.93798,2.684 -2.51742,3.021 -0.30487,0.329 -0.6347,0.426997 -0.8433,0.459 -1.9772,2.032 -0.49029,0.537 -0.86112,1.03 -0.49564,-13.258997 -0.37975,-4.837 -0.0963,-1.945 -0.36192,-8.718 0.87182,-0.138 0.42433,0.1 0.016,0.03 0.0553,0.1 0.22464,1.109 -0.11232,0.499 -0.0553,0.145 0.007,0.06 1.11786,0.328 2.40153,0.563 2.47641,-0.176 0.59191,-0.104 0.3637,-0.13 0.23891,-0.128 0.0107,0 3.25373,-2.619"},"27061":{"name":"Itasca, MN","path":"m 568.74617,83.422143 0.007,1.593 0.0981,2.321 0.27278,2.644 0.21572,5.311 0.0963,2.772 0.25673,3.214997 0.0588,1.895 -11.35688,0.218 -0.12837,-6.275997 -0.15155,-0.08 -1.14995,-0.218 -0.30487,-0.02 -0.007,0.09 -0.3851,0.337 -0.17829,0.1 -0.42432,-0.265 -1.35141,-0.917 -0.18364,-0.192 -0.12837,-0.346 0,-0.571 0.0303,-0.06 -0.041,-0.41 -0.60974,-1.068 -0.24069,-0.217 -0.36192,-0.06 -2.79555,1.327 -0.38688,0.225 -0.97344,-0.275 -0.51169,-0.369 -0.009,-2.58 -0.11946,-2.876 -0.0571,-3.697 10.01973,-0.216 -0.025,-1.198 10.82559,-0.128"},"27057":{"name":"Hubbard, MN","path":"m 536.08043,95.002143 8.06035,-0.03 0.13015,2.025 0.19077,7.882997 0.0321,3.97 -2.00751,0.02 -5.95479,0.04 -0.0339,-3.968 -0.11232,-0.266 -0.0303,-1.648 0,-2.073 -0.27456,-5.945997"},"27021":{"name":"Cass, MN","path":"m 544.14078,94.970143 3.94624,-0.0338 0.0242,-0.818204 0.51169,0.369 0.97344,0.275 0.38688,-0.225 2.79555,-1.327 0.36192,0.06 0.24069,0.217 0.60974,1.068 0.041,0.41 -0.0303,0.06 0,0.571 0.12837,0.346 0.18364,0.192 1.35141,0.917 0.42432,0.265 0.17829,-0.1 0.3851,-0.337 0.007,-0.09 0.30487,0.02 1.14995,0.218 0.15155,0.08 0.23355,11.483001 -8.97496,0.122 -0.009,2.644 0.0321,1.347 0.25674,1.095 0.15332,5.777 0.0161,0.948 -0.0802,0.241 -0.14441,0.04 -0.0392,-0.234 -0.10519,-0.169 -1.23018,-0.827 -0.53843,0.04 -0.11232,0.194 -0.312,0.2 -0.75772,0.273 -0.15868,-0.04 -1.29436,-0.57 -0.45107,-0.41 -1.25336,-0.449 -0.77198,-0.571 -0.17472,-5.407 -0.0642,-3.978 2.00751,-0.02 -0.0321,-3.97 -0.19077,-7.883001 -0.13015,-2.025"},"27159":{"name":"Wadena, MN","path":"m 542.48628,108.86414 0.0642,3.978 0.17472,5.407 0.77198,0.571 -6.76599,0.07 -0.19968,-7.989 0,-2.001 5.95479,-0.04"},"27005":{"name":"Becker, MN","path":"m 536.35499,100.94814 0,2.074 0.0303,1.647 0.11232,0.266 0.0339,3.968 0,2.001 -7.4827,0.1 -8.556,-0.05 -0.29774,-9.915 2.0093,0 8.13167,-0.02 6.01897,-0.06"},"27027":{"name":"Clay, MN","path":"m 520.19505,101.03714 0.29774,9.915 0.018,2.00759 -1.71529,-0.0146 -7.97834,-0.04 -0.009,-1.287 0.30666,-4.998 -0.19434,-0.531 -0.66679,-2.186 -0.0232,-2.908 9.96446,0.04"},"27167":{"name":"Wilkin, MN","path":"m 510.81716,112.90614 7.97834,0.04 -0.007,7.987 0.24247,0 -0.0178,3.994 -0.016,1.993 -4.99739,-0.03 0.29774,-0.836 0.0392,-0.145 0.0321,-0.465 -0.0481,-0.403 -0.61153,-4.821 -2.20897,-5.32 -0.68284,-1.984 0,0"},"27111":{"name":"Otter Tail, MN","path":"m 520.49279,110.95214 8.556,0.05 7.4827,-0.1 0.19968,7.989 0.21038,6.017 -9.99833,0.03 -7.93021,-0.02 0.0178,-3.994 -0.24247,0 0.007,-7.987 1.71529,0.0146 -0.018,-2.00759"},"27137":{"name":"St. Louis, MN","path":"m 568.1186,66.669143 1.66342,0 10.90403,6.035 0.40114,-0.28 3.19847,-0.234 0.41006,0.747 0.70067,1.462 0.0713,0.113 0.12836,0.178 2.81872,0.956 0.36192,8.718 0.0963,1.945 0.37975,4.837 0.49564,13.258997 -0.72028,0.36 -0.64362,0.474 -2.69213,2.308 -0.41006,0.377 -0.12124,0.152 0.10697,0.321 0.40115,0.628 0.64183,0.763 0.17651,0.1 -0.082,0.06 -0.22285,-0.1 -0.91462,-0.894 -0.42789,0.03 -1.1232,0.764 -0.0892,0.184 -0.016,0.169 0.0553,0.145 0,0.02 0.0802,0.09 0.016,0.02 0.016,0.257 -0.21573,0.563 -0.0731,0.07 -0.0784,0.05 -0.47603,0.03 -0.44215,-0.04 -0.36014,-0.25 -0.24247,-2.298 -3.67985,0.1 -8.36522,0.266 -0.0945,-5.948 -0.0588,-1.895 -0.25673,-3.214997 -0.0963,-2.772 -0.21572,-5.311 -0.27278,-2.644 -0.0981,-2.321 -0.007,-1.593 -0.0339,-0.875 -0.17472,-2.089 -0.15511,-1.045 -0.13371,-3.978 -0.0428,-3.92 -0.0874,-4.846"},"27017":{"name":"Carlton, MN","path":"m 569.8462,109.12114 8.36522,-0.266 3.67985,-0.1 0.24247,2.298 0.20859,5.632 -12.14312,0.387 -0.11946,-3.448 -0.12836,-0.539 -0.0499,-0.85 -0.0464,-1.134 -0.009,-1.984"},"27115":{"name":"Pine, MN","path":"m 570.19921,117.07614 12.14312,-0.387 0.21573,5.964 0.041,0.996 0.0321,0.901 -2.33913,1.46 -3.34288,2.195 -0.005,0 -0.79872,0.699 -0.20147,0.265 -0.19968,0.36 -1.61349,3.231 -4.83871,0.137 -0.19434,-5.737 1.40669,-0.06 -0.10163,-4.058 -0.20324,-5.978"},"27065":{"name":"Kanabec, MN","path":"m 564.35853,123.32714 6.04392,-0.273 0.10163,4.058 -1.40669,0.06 0.19434,5.737 -5.99401,0.09 -0.15333,-3.23 -0.0624,-2.45 0.71315,-0.03 0.005,-0.62221 0.63101,-0.0448 -0.0731,-3.294"},"27001":{"name":"Aitkin, MN","path":"m 569.75171,103.17314 0.0945,5.948 0.009,1.984 0.0464,1.134 0.0499,0.85 0.12836,0.539 0.11946,3.448 0.20324,5.978 -6.04392,0.273 0.016,-0.603 -0.0481,-1.51 -1.65628,0.03 -4.18618,0.191 -0.18364,-0.12 -0.0499,-0.05 -0.007,-0.06 -0.18363,-7.586 0.4885,-1.68 -0.0481,-3.343 -0.10518,-5.207 11.35688,-0.218"},"27035":{"name":"Crow Wing, MN","path":"m 549.74969,120.81314 0.14441,-0.04 0.0802,-0.241 -0.0161,-0.948 -0.15332,-5.777 -0.25674,-1.095 -0.0321,-1.347 0.009,-2.644 8.97496,-0.122 0.0481,3.343 -0.4885,1.68 0.18363,7.586 0.007,0.06 0.0499,0.05 0.18364,0.12 -0.18364,1.993 -9.02488,0.169 -0.025,-0.763 0.016,-1.214 0.48316,-0.802"},"27097":{"name":"Morrison, MN","path":"m 544.75052,119.26914 0.45107,0.41 1.29436,0.57 0.15868,0.04 0.75772,-0.273 0.312,-0.2 0.11232,-0.194 0.53843,-0.04 1.23018,0.827 0.10519,0.169 0.0392,0.234 -0.48316,0.802 -0.016,1.214 0.025,0.763 9.02488,-0.169 0.0945,3.979 0.082,0 0.61865,1.341 0.12837,2.33 -3.96154,0.05 -5.51263,0.152 1.32467,1.054 -5.98509,0.121 -0.33875,-13.179"},"27153":{"name":"Todd, MN","path":"m 543.49716,118.82014 1.25336,0.449 0.33875,13.179 -7.97835,0.112 -0.16937,-7.65 -0.21038,-6.017 6.76599,-0.07"},"27041":{"name":"Douglas, MN","path":"m 536.94155,124.91014 0.16937,7.65 0,0.33 -9.96624,0.03 -0.007,-3.986 -0.1765,0 -0.0178,-3.994 9.99833,-0.03"},"27051":{"name":"Grant, MN","path":"m 519.01301,124.92614 7.93021,0.02 0.0178,3.994 0.1765,0 0.007,3.986 -7.96943,0 -0.17828,-6.01 0.016,-1.993"},"27155":{"name":"Traverse, MN","path":"m 513.99958,126.88714 4.99739,0.03 0.17828,6.01 0,4.003 -9.40285,-0.07 -0.28883,-0.369 -0.0642,-0.09 0.22464,-0.771 0.0553,-0.128 0.025,-0.02 0.0321,-0.04 0.025,-0.03 1.46909,-1.18 0.55625,-0.362 0.61866,-0.337 0.32805,-0.33 1.12499,-1.671 0.025,-0.06 0.016,-0.03 0.016,-0.05 0.016,-0.114 0.0392,-0.209 0.0571,-0.497 0.0713,-0.61 0.009,-0.03 0,-0.05 0.0891,-1.004 -0.21751,-1.993"},"27011":{"name":"Big Stone, MN","path":"m 509.7724,136.85914 9.40285,0.07 0.19077,0 -0.0161,3.968 2.01821,0.03 0.2086,5.408 -1.13391,-0.394 -1.64737,-0.665 -0.15154,-0.332 -0.68997,-0.314 -2.04139,-0.433 -0.26565,-1.326 -0.30665,-0.706 -0.52951,-0.426 -1.5511,-0.756 -1.24885,-0.15868 -1.11345,-2.46032 -1.12499,-1.503"},"27151":{"name":"Swift, MN","path":"m 527.34436,140.90914 7.97478,-0.05 0.18364,5.987 -12.84023,0.05 -1.08577,-0.563 -0.2086,-5.408 5.97618,-0.02"},"27149":{"name":"Stevens, MN","path":"m 527.14468,132.92214 0.016,4.01 0.16937,0 0.0143,3.977 -5.97618,0.02 -2.01821,-0.03 0.0161,-3.968 -0.19077,0 0,-4.003 7.96943,0"},"27121":{"name":"Pope, MN","path":"m 537.11092,132.89014 0.0303,3.992 0.13728,0 0.0321,3.972 -1.99147,0 -7.97478,0.05 -0.0143,-3.977 -0.16937,0 -0.016,-4.01 9.96624,-0.03"},"27145":{"name":"Stearns, MN","path":"m 545.08927,132.44814 5.98509,-0.121 2.06635,4.926 1.72047,3.109 -0.68455,1.84572 -1.42901,1.22533 -0.51911,-0.30493 -0.76727,0.48088 -2.1403,0.06 0.0164,-0.981 -2.33684,0.02 -3.70302,0.06 -0.0267,-1.993 -5.96013,0.08 -0.0321,-3.972 -0.13728,0 -0.0303,-3.992 0,-0.33 7.97835,-0.112"},"27009":{"name":"Benton, MN","path":"m 551.07436,132.32714 -1.32467,-1.054 5.51263,-0.152 3.96154,-0.05 0.2086,6.026 -6.29175,0.154 -2.06635,-4.926"},"27095":{"name":"Mille Lacs, MN","path":"m 558.48397,121.43014 4.18618,-0.191 1.65628,-0.03 0.0481,1.51 -0.016,0.603 0.0731,3.294 -0.63101,0.0448 -0.005,0.62221 -0.71315,0.03 0.0624,2.45 0.15333,3.23 0.15154,4.026 -4.0168,0.08 -0.2086,-6.026 -0.12837,-2.33 -0.61865,-1.341 -0.082,0 -0.0945,-3.979 0.18364,-1.993"},"27059":{"name":"Isanti, MN","path":"m 569.29173,132.90614 0.11232,3.97 1.94511,0.288 0.14441,3.005 -2.32308,0.02 -4.64438,0.143 -0.97166,0 -0.10519,-3.311 -0.15154,-4.026 5.99401,-0.09"},"27025":{"name":"Chisago, MN","path":"m 574.13044,132.76914 -0.65432,2 -0.0214,0.364 0.007,0.151 0.041,0.61 0.0553,0.451 0.21751,0.168 0.77199,0.13 0.32091,-0.05 1.27119,0.685 0.79338,1.501 0.32091,1.624 -0.60974,1.558 -0.42789,0.53 -0.0214,0.02 -0.19433,0.176 -4.41796,0.128 -0.0891,-2.644 -0.14441,-3.005 -1.94511,-0.288 -0.11232,-3.97 4.83871,-0.137"},"27123":{"name":"Ramsey, MN","path":"m 568.38246,148.92914 -0.0507,-2.21144 3.34728,0.0734 0.18542,5.359 -2.57982,0.138 -0.90213,-3.359"},"27003":{"name":"Anoka, MN","path":"m 563.55445,140.33014 0.97166,0 4.64438,-0.143 2.32308,-0.02 0.0891,2.644 0.0963,3.978 -3.34728,-0.0734 0.0507,2.21144 -0.7662,-0.0202 -0.23892,-2.71515 -3.75871,-1.97369 -0.0642,-3.89"},"27141":{"name":"Sherburne, MN","path":"m 563.44926,137.01914 0.10519,3.311 0.0642,3.89 -0.15154,-0.02 -0.99662,-1.022 -1.43165,-0.04 -1.36568,0.05 -0.23355,-0.06 -1.63133,-0.932 -2.94708,-1.84 -1.72047,-3.109 6.29175,-0.154 4.0168,-0.08"},"27171":{"name":"Wright, MN","path":"m 551.46124,143.60914 0.76727,-0.48088 0.51911,0.30493 1.42901,-1.22533 0.68455,-1.84572 2.94708,1.84 1.63133,0.932 0.23355,0.06 1.36568,-0.05 1.43165,0.04 0.99662,1.022 -1.93798,0.988 -0.22464,0.185 -1.45482,2.771 -0.2086,2.33 -4.00254,0.07 -3.96867,0.06 -0.2086,-6.999"},"27093":{"name":"Meeker, MN","path":"m 543.29748,142.76514 3.70302,-0.06 2.33684,-0.02 -0.0164,0.981 2.1403,-0.06 0.2086,6.999 -4.05539,0.0697 0.0707,2.01134 -4.17192,0.06 -0.21573,-9.988"},"27067":{"name":"Kandiyohi, MN","path":"m 535.31914,140.86114 1.99147,0 5.96013,-0.08 0.0267,1.993 0.21573,9.988 -7.99439,0.1 -0.016,-6.003 -0.18364,-5.987"},"27023":{"name":"Chippewa, MN","path":"m 522.66255,146.89614 12.84023,-0.05 0.016,6.003 -3.83317,0.04 0.025,3.167 -4.16478,-4.195 -4.88328,-4.966"},"27163":{"name":"Washington, MN","path":"m 571.58271,142.81314 4.41796,-0.128 -0.24782,2 -0.33875,3.03 0.0499,0.755 0.39936,0.853 0.34945,1.615 -0.1248,1.735 -0.56874,2.717 -3.67293,-0.18462 0.018,-3.05538 -0.18542,-5.359 -0.0963,-3.978"},"27037":{"name":"Dakota, MN","path":"m 569.28459,152.28814 2.57982,-0.138 -0.0181,3.05538 3.67293,0.18462 1.166,0.674 0.0624,1.945 -0.90871,0.0358 0.003,1.97321 -2.07526,0.07 -0.003,0.64691 -1.94037,0.0771 0.0232,0.995 -4.00731,-0.048 -0.0184,-1.49399 -0.007,-2 -0.65253,0.02 -0.21573,-1.992 -0.0731,-1.688 1.76269,-0.65901 0.64953,-1.65499"},"27053":{"name":"Hennepin, MN","path":"m 563.61863,144.22014 3.75871,1.97369 0.23892,2.71515 0.7662,0.0202 0.90213,3.359 -0.64953,1.65499 -1.76269,0.65901 -3.12537,-0.227 -0.0481,-2 -4.02572,0.105 -0.0321,-2.002 0.2086,-2.33 1.45482,-2.771 0.22464,-0.185 1.93798,-0.988 0.15154,0.02"},"27139":{"name":"Scott, MN","path":"m 563.747,154.37514 3.12537,0.227 0.0731,1.688 0.21573,1.992 0.65253,-0.02 0.007,2 -3.9758,0.114 -6.33276,0.161 2.28208,-2.291 0.0731,0.03 0.43323,-0.179 1.3746,-1.077 0.40114,-0.538 -0.11232,-0.209 0.0161,-0.337 0.82547,-1.308 0.60439,-0.252 0.33696,0"},"27019":{"name":"Carver, MN","path":"m 555.63851,150.55114 4.00254,-0.07 0.0321,2.002 4.02572,-0.105 0.0481,2 -0.33696,0 -0.60439,0.252 -0.82547,1.308 -0.0161,0.337 0.11232,0.209 -0.40114,0.538 -1.3746,1.077 -0.43323,0.178 -0.0731,-0.03 -4.00254,-1.686 -0.15333,-6.012"},"27085":{"name":"McLeod, MN","path":"m 551.66984,150.60814 3.96867,-0.06 0.15333,6.012 -1.99147,0.04 -1.98612,0.25 0.0178,1.799 -3.38389,0.07 -0.59547,0 -0.0321,-2.01 -0.13549,-4.025 -0.0707,-2.01134 4.05539,-0.0697"},"27143":{"name":"Sibley, MN","path":"m 555.79184,156.56314 4.00254,1.687 -2.28208,2.291 -0.26564,2 -11.40324,0.217 -0.11232,-1.986 -0.0642,-4.018 2.1537,-0.04 0.0321,2.009 0.59547,0 3.38389,-0.07 -0.0178,-1.799 1.98612,-0.25 1.99147,-0.04"},"27129":{"name":"Renville, MN","path":"m 547.68513,152.68914 0.13549,4.025 -2.1537,0.04 0.0642,4.018 0.11232,1.986 -2.57268,0.02 -1.4049,-0.94 -8.1388,-4.532 -2.01643,-1.253 -0.025,-3.167 3.83317,-0.04 7.99439,-0.1 4.17192,-0.06"},"27073":{"name":"Lac qui Parle, MN","path":"m 521.57678,146.33314 1.08577,0.563 4.88328,4.966 0,1.028 -1.80536,0.009 -0.008,1.97553 -9.84501,-0.02 0.025,-10.663 2.04139,0.433 0.68997,0.314 0.15154,0.332 1.64737,0.665 1.13391,0.394"},"27173":{"name":"Yellow Medicine, MN","path":"m 515.88764,154.85914 9.84501,0.02 0.008,-1.97553 1.80536,-0.009 0,-1.028 4.16478,4.195 2.01643,1.253 0.016,3.607 -3.84208,0 -0.15155,-2.017 -8.01221,0 -5.87456,-0.03 0.025,-4.018"},"27081":{"name":"Lincoln, MN","path":"m 521.73724,158.90914 0.22464,9.995 -6.16338,-0.02 0.0499,-7.987 0.0143,-2.017 5.87456,0.03"},"27083":{"name":"Lyon, MN","path":"m 529.95627,168.91314 -7.74479,0 -0.2496,0 -0.22464,-9.995 8.01221,0 0.15155,2.017 0.0553,7.987"},"27127":{"name":"Redwood, MN","path":"m 541.86584,161.84214 0.0571,4.974 -3.96867,0.06 -0.009,2 -5.82642,0.02 -2.16262,0.02 -0.0553,-7.987 3.84208,0 -0.016,-3.607 8.1388,4.532"},"27015":{"name":"Brown, MN","path":"m 543.27074,162.78214 0.52595,0.16 0.6971,0.346 3.48016,1.76 0.19255,0.137 0.39401,0.385 1.50296,1.544 0.10519,3.591 -8.09244,0.128 -4.13519,-0.0165 0.004,-1.94449 0.009,-2.001 3.96867,-0.06 -0.0571,-4.974 1.4049,0.94"},"27103":{"name":"Nicollet, MN","path":"m 557.24666,162.54114 -0.49742,2.009 -0.78803,2.354 0.0392,0.675 0.18542,1.462 -0.025,0.161 -0.69175,0.337 -0.14442,0.02 -0.47959,-0.146 -0.49207,-0.281 -0.20147,-0.159 -3.41419,-1.624 -0.67393,-0.232 -1.50296,-1.544 -0.39401,-0.385 -0.19255,-0.137 -3.48016,-1.76 -0.6971,-0.346 -0.52595,-0.16 2.57268,-0.02 11.40324,-0.217"},"27079":{"name":"Le Sueur, MN","path":"m 557.5123,160.54114 6.33276,-0.161 0.19077,8.011 -4.00076,0.1 -0.0374,-0.9803 -3.99722,0.0723 -0.0392,-0.675 0.78803,-2.354 0.49742,-2.009 0.26564,-2"},"27131":{"name":"Rice, MN","path":"m 563.84506,160.38014 3.9758,-0.114 0.0184,1.49399 4.00731,0.048 0.16937,6.342 -0.0891,0 -5.93696,0.176 -1.95402,0.07 -0.19077,-8.011"},"27049":{"name":"Goodhue, MN","path":"m 576.68529,156.06414 1.69372,1.439 0.17651,0.224 0.041,0.225 1.18918,1.182 0.25851,0.119 0.69889,0.08 2.20898,0.09 0.28169,0.06 0.18542,0.09 0.15867,0.137 0.0571,0.09 0.0907,1.09715 1.21258,0.84785 -3.09506,0.103 0.04,1.99109 -1.93697,0.0759 0.1355,4.009 -2.10201,0.05 -5.9637,0.177 -0.16937,-6.342 -0.0232,-0.995 1.94037,-0.0766 0.003,-0.64641 2.07526,-0.07 -0.003,-1.97321 0.90871,-0.0358 -0.0624,-1.945"},"27157":{"name":"Wabasha, MN","path":"m 584.93819,161.74614 2.46368,1.004 1.85159,0.86839 0.92749,0.84954 0.0222,0.51007 -0.0982,0.35854 0.39218,0.33969 0.35445,1.26378 0.26016,0.52827 -3.25631,0.1601 0.0797,2.00862 -3.95441,0.153 -0.0891,-2.009 -3.80999,0.144 -0.1355,-4.01 1.93697,-0.0754 -0.04,-1.99059 3.09506,-0.103"},"27169":{"name":"Winona, MN","path":"m 591.11183,167.46842 5.23687,3.75676 2.5868,0.74896 2.40153,3.054 -7.38465,0.353 -5.76936,0.241 -0.24782,-5.985 -0.0797,-2.00862 3.25631,-0.1601"},"27109":{"name":"Olmsted, MN","path":"m 577.97965,167.97314 2.10201,-0.05 3.80999,-0.144 0.0891,2.009 3.95441,-0.153 0.24782,5.985 -6.10633,0.547 -4.00255,-0.192 -0.0945,-8.004"},"27039":{"name":"Dodge, MN","path":"m 572.01595,168.15014 5.9637,-0.177 0.0945,8.004 -5.88882,0.201 -0.25851,-8.028 0.0891,0"},"27147":{"name":"Steele, MN","path":"m 571.92681,168.15014 0.25851,8.028 -0.0624,0 -5.91734,0.177 -0.21573,-8.029 5.93696,-0.176"},"27161":{"name":"Waseca, MN","path":"m 564.03583,168.39114 1.95402,-0.07 0.21573,8.029 -4.00076,0.103 -1.9772,0.05 -0.19255,-8.019 4.00076,-0.1"},"27013":{"name":"Blue Earth, MN","path":"m 560.03507,168.48714 0.19255,8.019 -7.93912,0.178 -2.01643,0.03 -0.10341,-6.01 -0.10519,-3.591 0.67393,0.232 3.41419,1.624 0.20147,0.159 0.49207,0.281 0.47959,0.146 0.14442,-0.02 0.69175,-0.337 0.025,-0.161 -0.18542,-1.462 3.99722,-0.0723 0.0374,0.9803"},"27165":{"name":"Watonwan, MN","path":"m 542.07622,170.83314 8.09244,-0.128 0.10341,6.01 -8.03539,0.112 -0.0802,0 -0.0802,-5.994"},"27033":{"name":"Cottonwood, MN","path":"m 532.11889,168.89014 5.82642,-0.02 -0.004,1.94449 4.13519,0.0165 0.0802,5.994 -9.82897,0.1 -0.16759,0 -0.041,-8.033"},"27101":{"name":"Murray, MN","path":"m 529.95627,168.91314 2.16262,-0.02 0.041,8.033 -9.76299,0 -0.20147,0 0.0161,-8.012 7.74479,0"},"27117":{"name":"Pipestone, MN","path":"m 515.7985,168.88114 6.16338,0.02 0.2496,0 -0.0161,8.012 -6.44507,-0.03 0.0481,-8.003"},"27133":{"name":"Rock, MN","path":"m 515.75036,176.88414 6.44507,0.03 0.20147,0 -0.0178,8.052 -6.6608,-0.02 0.0321,-8.06"},"27105":{"name":"Nobles, MN","path":"m 522.3969,176.91614 9.76299,0 0.16759,0 0.0178,8.013 -6.7749,0.04 -3.19134,0 0.0178,-8.052"},"27063":{"name":"Jackson, MN","path":"m 542.15645,176.82714 0.0802,0 0.0963,8.021 -1.01267,0.02 -7.86602,0.07 -1.10895,0 -0.0178,-8.013 9.82897,-0.1"},"27091":{"name":"Martin, MN","path":"m 552.2885,176.68414 0.14619,8.011 -3.25552,0.05 -6.84622,0.1 -0.0963,-8.021 8.03539,-0.112 2.01643,-0.03"},"27043":{"name":"Faribault, MN","path":"m 562.20482,176.45814 0.19255,8.043 -5.35931,0.121 -4.60337,0.07 -0.14619,-8.011 7.93912,-0.178 1.9772,-0.05"},"27047":{"name":"Freeborn, MN","path":"m 572.12292,176.17814 0.25495,8.043 -7.45596,0.215 -2.52454,0.06 -0.19255,-8.043 4.00076,-0.103 5.91734,-0.177"},"27099":{"name":"Mower, MN","path":"m 578.07414,175.97714 4.00255,0.192 0.2906,7.69 -1.73651,0.06 -7.84285,0.28 -0.41006,0.02 -0.25495,-8.043 0.0624,0 5.88882,-0.201"},"29143":{"name":"New Madrid, MO","path":"m 638.39755,334.91214 3.11824,-0.442 3.88844,5.238 -1.42273,3.19 -0.1955,0.86287 -0.63404,0.32741 -0.47196,-0.35741 0.0571,-0.70977 0.18007,-0.339 0.0285,-0.06 0.0232,-0.09 0.0571,-0.227 0.016,-0.06 0,-0.1 -0.007,-0.04 0,0 -0.0571,-0.25 -0.11232,-0.266 -0.0107,-0.02 -0.11767,-0.183 -0.025,-0.02 -0.0392,-0.03 -0.0481,-0.03 -0.28169,-0.08 -0.51347,-0.08 -0.33696,0.05 -0.1141,0.07 -0.21038,0.281 -0.0303,0.04 -0.0232,0.09 -0.025,0.105 -0.0178,0.08 0.0178,0.07 0.0178,0.1 0.007,0.02 0.19968,0.427 0.025,0.03 0.40828,0.584 0.26479,1.25996 0.69118,0.94016 -0.003,1.26737 -0.80635,0.26951 -0.96454,-1.485 -0.3637,-0.153 -1.33181,0.24 -1.35141,0.521 -2.81872,0.178 -0.8843,0 -0.31557,-5.559 4.72639,-0.267 -0.42433,-5.358 0.23178,-0.02"},"29155":{"name":"Pemiscot, MO","path":"m 641.89376,346.81114 -0.87453,0.14623 1.08912,0.80804 0.37303,0.77035 -1.05913,0.64787 -1.54908,-0.10591 0.70839,1.33342 1.18224,0.58179 -0.14183,0.83005 -1.19693,0.66454 -0.14333,1.20119 -0.68122,1.03568 -4.81147,0.39675 -0.60974,-9.009 0.8843,0 2.81872,-0.178 1.35141,-0.521 1.33181,-0.24 0.3637,0.153 0.96454,1.485"},"29005":{"name":"Atchison, MO","path":"m 527.3301,252.38714 6.79808,0.07 2.97383,0.02 0.0321,2.296 0.41719,0 0.0232,2.188 -0.0303,2.853 -6.47716,-0.03 0.0178,-0.418 0,-0.03 0.005,-0.04 -0.0463,-0.119 -1.21414,-1.182 -1.13212,-2.846 -0.0963,-0.408 0.19968,-0.185 0.37797,-0.676 -0.65075,-0.578 -0.22643,0.491 -0.97166,-1.414"},"29087":{"name":"Holt, MO","path":"m 537.54416,259.82014 1.65272,0 0.37084,0.717 -0.0464,0.09 -0.0891,0.708 0.23356,1.16 0.1034,0.175 0.21038,0.168 0.92175,5.311 -0.60261,0.683 -0.0143,0.02 -0.1034,0.1 -0.13015,0.05 -0.66858,0.06 -0.0802,0 -0.0642,-0.02 -0.33696,-0.128 -0.43324,-0.16 -0.85935,-0.553 -2.12161,-1.92 -0.11232,-0.163 -0.009,-0.215 -4.29849,-6.044 0,-0.06 6.47716,0.03"},"29165":{"name":"Platte, MO","path":"m 539.06317,276.68614 8.82877,-0.08 0.041,1.767 0.082,6.862 -3.39994,-0.907 -3.16637,-5.017 -2.38548,-2.624"},"29021":{"name":"Buchanan, MO","path":"m 547.77249,269.94314 0.0321,1.681 0.0874,4.981 -8.82877,0.08 0.6971,-2.097 0.20859,-0.298 0.6044,-0.882 0.0713,-0.08 1.26941,-1.124 0.37083,-0.06 0.36906,-0.822 -0.13728,-0.634 -0.14442,-0.683 5.40032,-0.06"},"29003":{"name":"Andrew, MO","path":"m 547.61381,262.84014 0.0374,2.018 0.12124,5.085 -5.40032,0.06 -1.47086,-1.849 -0.92175,-5.311 7.63425,0"},"29147":{"name":"Nodaway, MO","path":"m 542.09939,252.51514 4.91181,0.02 0.64005,4.265 -0.0374,6.035 -7.63425,0 -0.21038,-0.168 -0.1034,-0.174 -0.23356,-1.161 0.0891,-0.708 0.0464,-0.09 -0.37084,-0.717 -1.65272,0 0.0303,-2.853 -0.0232,-2.187 -0.41719,0 -0.0321,-2.297 4.99738,0.03"},"29227":{"name":"Worth, NO","path":"m 549.79783,252.50614 4.14695,-0.1 0.39223,4.342 -6.68576,0.06 -0.64005,-4.265 2.78663,-0.03"},"29075":{"name":"Gentry, MO","path":"m 547.65125,256.80514 6.68576,-0.06 0.0731,5.748 0,2.349 -6.75886,0.01 -0.0374,-2.018 0.0374,-6.035"},"29063":{"name":"DeKalb, MO","path":"m 554.41011,264.84714 0.33696,5.689 0.016,1.001 -6.95854,0.09 -0.0321,-1.681 -0.12124,-5.085 6.75886,-0.01"},"29049":{"name":"Clinton, MO","path":"m 554.76312,271.53714 0.0499,5.068 0,1.68 -6.8801,0.09 -0.041,-1.767 -0.0874,-4.981 6.95854,-0.09"},"29047":{"name":"Clay, MO","path":"m 547.93294,278.37214 6.8801,-0.09 0.0713,5.737 -0.51524,-0.529 -0.0963,-0.07 -0.1765,-0.06 -0.61153,0 -0.20681,0.104 -0.10519,0.132 -0.1355,0.262 -0.0891,0.403 -0.23534,0.344 -0.5206,0.538 -1.78465,0.884 -2.47463,0.291 0.082,-1.079 -0.082,-6.862"},"29025":{"name":"Caldwell, MO","path":"m 554.74707,270.53614 1.97721,0.03 3.56574,-0.09 2.2999,-0.01 0.10519,4.012 0.0321,2.016 -7.91416,0.105 -0.0499,-5.068 -0.016,-1.001"},"29061":{"name":"Daviess, MO","path":"m 562.31714,262.40714 0.12837,4.018 0.14441,4.047 -2.2999,0.01 -3.56574,0.09 -1.97721,-0.03 -0.33696,-5.689 0,-2.349 7.90703,-0.09"},"29081":{"name":"Harrison, MO","path":"m 561.89103,252.11414 0.36193,7.256 0.0642,3.037 -7.90703,0.09 -0.0731,-5.748 -0.39223,-4.342 3.76007,-0.117 4.18618,-0.177"},"29129":{"name":"Mercer, MO","path":"m 565.66002,251.95914 3.17351,-0.09 0.25673,4.564 0.066,2.701 -6.90327,0.233 -0.36193,-7.256 3.76899,-0.155"},"29079":{"name":"Grundy, MO","path":"m 569.15623,259.13714 0.24069,5.398 0.0392,1.518 -6.99063,0.372 -0.12837,-4.018 -0.0642,-3.037 6.90327,-0.233"},"29117":{"name":"Livingston, MO","path":"m 569.43614,266.05314 0.0321,2.034 0.0891,4.083 1.72047,-0.05 -0.13906,2.047 -8.44367,0.316 -0.10519,-4.012 -0.14441,-4.047 6.99063,-0.372"},"29033":{"name":"Carroll, MO","path":"m 562.69511,274.48414 8.44367,-0.316 0.0438,4.05748 3.11935,0.46526 0.0514,0.76026 -0.73097,0.06 -0.75237,0.291 -1.61885,1.446 -1.00376,1.688 -0.19255,0.12 -0.70601,0.176 -0.24069,-0.04 -0.11232,-0.103 -1.15887,-1.35 -1.88805,1.262 -1.18205,-0.146 -1.84705,0.997 -0.19255,-7.353 -0.0321,-2.016"},"29177":{"name":"Ray, MO","path":"m 562.7272,276.50014 0.19255,7.353 -1.3015,-0.161 -2.4764,0.36 -0.9788,0.79 0.0464,0.09 0.0339,0.249 -0.37797,0.323 -0.19255,0.126 -0.24068,0.04 -0.24961,-0.02 -0.36192,-0.186 -1.9362,-1.437 -0.0713,-5.737 0,-1.68 7.91416,-0.105"},"29107":{"name":"Lafayette, MO","path":"m 562.91975,283.85314 1.84705,-0.997 1.18205,0.146 1.88805,-1.262 -0.12836,8.116 0,0.338 -6.00114,-0.07 -0.0107,0.676 -4.94033,-0.09 0.0642,-5.249 0.36192,0.186 0.24961,0.02 0.24068,-0.04 0.19255,-0.126 0.37797,-0.323 -0.0339,-0.249 -0.0464,-0.09 0.9788,-0.79 2.4764,-0.36 1.3015,0.161"},"29095":{"name":"Jackson, MO","path":"m 556.82055,285.45914 -0.0642,5.249 -0.0481,1.952 -8.69327,-0.176 -0.0571,-4.565 -0.025,-1.606 2.47463,-0.291 1.78465,-0.884 0.5206,-0.538 0.23534,-0.344 0.0891,-0.403 0.1355,-0.262 0.10519,-0.132 0.20681,-0.104 0.61153,0 0.1765,0.06 0.0963,0.07 0.51524,0.529 1.9362,1.437"},"29101":{"name":"Johnson, MO","path":"m 567.70854,290.19414 -0.025,8.631 -9.87532,-0.03 -1.19901,-0.0408 0.099,-6.09817 0.0481,-1.952 4.94033,0.09 0.0107,-0.676 6.00114,0.07"},"29083":{"name":"Henry, MO","path":"m 567.68358,298.82514 0,1.011 -0.007,7.08 -9.4403,0.06 -0.3958,-5.393 -0.0321,-2.788 9.87532,0.03"},"29037":{"name":"Cass, MO","path":"m 548.01496,292.48414 8.69327,0.176 -0.099,6.09817 1.19902,0.0408 0.0321,2.788 -2.57268,0.02 -1.00375,-0.103 -1.03585,-0.394 -5.18102,-0.06 -0.025,-6.044 -0.007,-2.522"},"29185":{"name":"St. Clair, MO","path":"m 558.23615,306.98014 9.4403,-0.06 0.43502,3.102 -0.0481,3.694 -0.45998,0 -0.57052,1.006 -0.0232,1.014 -0.99662,-0.01 -3.30188,-0.05 0.0232,-1.34 -4.63546,-0.09 0.0713,-3.151 0.066,-4.113"},"29013":{"name":"Bates, MO","path":"m 548.04705,301.05014 5.18102,0.06 1.03585,0.394 1.00375,0.103 2.57268,-0.02 0.3958,5.393 -0.066,4.113 -1.35676,-0.472 -1.20522,0.101 -0.71493,0.107 -6.72677,-0.107 -0.0963,-7.614 -0.0232,-2.058"},"29039":{"name":"Cedar, MO","path":"m 558.09887,314.24414 4.63546,0.09 -0.0232,1.34 3.30188,0.05 0.37084,5.938 -8.30818,-0.02 0,-1.349 0.0232,-6.051"},"29217":{"name":"Vernon, MO","path":"m 558.17018,311.09314 -0.0713,3.151 -0.0232,6.051 -9.83787,-0.152 -0.007,-0.451 -0.0553,-8.429 -0.009,-0.541 6.72677,0.107 0.71493,-0.107 1.20522,-0.101 1.35676,0.472"},"29057":{"name":"Dade, MO","path":"m 558.07569,321.64414 8.30818,0.02 -0.009,3.368 0,3.373 -7.74657,0 -0.56873,-1.363 0.016,-5.385"},"29011":{"name":"Barton, MO","path":"m 558.07569,320.29514 0,1.349 -0.016,5.384 -9.71665,-0.178 -0.10518,-6.707 9.83787,0.152"},"29097":{"name":"Jasper, MO","path":"m 558.05965,327.02814 0.56873,1.364 -0.007,5.611 -10.18375,-0.02 -0.0874,-6.525 -0.007,-0.603 9.71665,0.178"},"29145":{"name":"Newton, MO","path":"m 548.4375,333.97814 10.18375,0.02 -0.041,6.95 -10.05182,-0.257 -0.0909,-6.718"},"29119":{"name":"McDonald, MO","path":"m 558.58024,340.95314 -0.0321,5.778 -9.92523,0.159 -0.0553,-3.903 -0.0392,-2.291 10.05182,0.257"},"29109":{"name":"Lawrence, MO","path":"m 566.37495,328.40114 0.41719,4.252 0.0321,2.37 0.0321,1.688 -8.25113,-0.02 0.0161,-2.692 0.007,-5.611 7.74657,0"},"29009":{"name":"Barry, MO","path":"m 558.6052,336.69514 8.25113,0.02 0.025,2.371 0.71493,0 -0.007,7.44 -5.17568,0.129 -3.86526,0.08 0.0571,-10.036"},"29167":{"name":"Polk, MO","path":"m 567.00965,315.73214 6.96746,0.392 0.35479,8.927 -7.95695,-0.02 0.009,-3.368 -0.37084,-5.938 0.99662,0.01"},"29209":{"name":"Stone, MO","path":"m 566.82423,335.02314 4.97421,-0.06 0.0321,4.056 0.69176,0 0.007,7.384 -4.94033,0.121 0.007,-7.439 -0.71493,0 -0.025,-2.372 -0.0321,-1.688"},"29077":{"name":"Greene, MO","path":"m 574.3319,325.05114 1.98255,0 0.0428,3.357 0.271,0 0.0642,4.195 -9.90028,0.06 -0.41719,-4.252 0,-3.373 7.95695,0.02"},"29213":{"name":"Taney, MO","path":"m 579.73756,338.97514 2.644,-0.01 0.10519,7.144 -1.50475,0.05 -8.09779,0.241 -0.35479,0 -0.007,-7.385 7.21527,-0.04"},"29043":{"name":"Christian, MO","path":"m 576.69242,332.59614 2.963,0.0557 0.002,0.26725 0.0802,6.056 -7.21527,0.04 -0.69176,0 -0.0321,-4.056 -4.97421,0.06 -0.0321,-2.37 9.90028,-0.06"},"29225":{"name":"Webster, MO","path":"m 580.2439,323.31714 3.02374,-0.05 0.0713,5.054 0.2389,0 0.0339,4.548 -3.95441,0.05 -0.002,-0.26725 -2.963,-0.0557 -0.0642,-4.195 -0.271,0 -0.0428,-3.357 0.0735,-1.63401 3.85599,-0.093"},"29059":{"name":"Dallas, MO","path":"m 575.97749,313.74414 3.9134,0.03 0.0553,4.053 0.24247,0 0.0553,5.497 -3.85599,0.093 -0.0735,1.63401 -1.98255,0 -0.35479,-8.927 -0.0855,-2.31075 2.08592,-0.0693"},"29085":{"name":"Hickory, MO","path":"m 568.11147,310.01814 7.88028,0.02 -0.0143,3.71 -2.08592,0.0693 0.0855,2.31075 -6.96746,-0.392 0.0232,-1.014 0.57052,-1.006 0.45998,0 0.0481,-3.694"},"29015":{"name":"Benton, MO","path":"m 567.68358,299.83614 3.94549,0.04 0.009,-0.675 1.87202,-0.02 2.11448,0.02 0.007,6.252 0.36014,4.582 -7.88028,-0.02 -0.43502,-3.102 0.007,-7.08"},"29159":{"name":"Pettis, MO","path":"m 567.70854,289.85614 3.46233,0.07 3.66558,0 0.80408,0.04 0,5.454 -0.0161,3.776 -2.11448,-0.02 -1.87202,0.02 -0.009,0.675 -3.94549,-0.04 0,-1.011 0.025,-8.631 0,-0.338"},"29195":{"name":"Saline, MO","path":"m 574.35329,279.45114 3.26618,1.53551 0.0601,1.90178 1.30386,0.0727 -1.39064,3.784 -1.95224,3.225 -0.80408,-0.04 -3.66558,0 -3.46233,-0.07 0.12836,-8.116 1.15887,1.35 0.11232,0.103 0.24069,0.04 0.70601,-0.176 0.19255,-0.12 1.00376,-1.688 1.61885,-1.446 0.75237,-0.291 0.73097,-0.06"},"29041":{"name":"Chariton, MO","path":"m 578.46816,271.98614 3.01546,-0.0348 -0.0327,2.01683 -0.041,6.688 -1.36844,-0.55472 -1.05804,2.85972 -1.30386,-0.0727 -0.0601,-1.90178 -3.26618,-1.53551 -0.0514,-0.76026 -3.11935,-0.46526 -0.0438,-4.05748 0.13906,-2.047 7.19032,-0.135"},"29115":{"name":"Linn, MO","path":"m 578.23638,264.17314 0.15155,0 0.0802,7.818 -7.19032,0.135 -1.72047,0.05 -0.0891,-4.083 -0.0321,-2.034 -0.0392,-1.518 8.83946,-0.362"},"29211":{"name":"Sullivan, MO","path":"m 569.09026,256.43614 4.87972,-0.216 4.0168,-0.121 0.0232,1.004 0.22642,7.07 -8.83946,0.362 -0.24069,-5.398 -0.066,-2.701"},"29171":{"name":"Putnam, MO","path":"m 580.27599,251.30114 0.31557,1.134 -0.11411,2.193 0.52238,2.355 -2.98987,0.12 -0.0232,-1.004 -4.0168,0.121 -4.87972,0.216 -0.25673,-4.564 4.80483,-0.223 6.63763,-0.348"},"29197":{"name":"Schuyler, MO","path":"m 586.57665,250.89114 0.23177,5.801 -5.80859,0.291 -0.52238,-2.355 0.11411,-2.193 -0.31557,-1.134 1.32645,-0.07 4.97421,-0.337"},"29001":{"name":"Adair, MO","path":"m 586.80842,256.69214 0.082,1.013 0.27991,6.147 -8.78242,0.316 -0.15155,0 -0.22642,-7.071 2.98987,-0.119 5.80859,-0.291"},"29121":{"name":"Macon, MO","path":"m 587.17035,263.85214 1.07863,1.928 0.11232,8.046 -0.0339,0 -6.87653,0.142 0.0327,-2.01683 -3.01546,0.0348 -0.0802,-7.818 8.78242,-0.316"},"29175":{"name":"Randolph, MO","path":"m 588.32743,273.82614 0.0713,5.969 0.0161,2.348 -2.04674,0.02 -4.95816,-1.51 0.041,-6.688 6.87653,-0.142"},"29089":{"name":"Howard, MO","path":"m 581.40989,280.65614 4.95816,1.51 -2.0182,6.525 -4.03286,0.127 -1.10181,-0.184 -0.19077,-0.08 -0.89321,-0.619 -0.14442,-0.192 -0.39401,-0.843 0,-0.155 1.39064,-3.784 1.05804,-2.85972 1.36844,0.55472"},"29053":{"name":"Cooper, MO","path":"m 577.59277,286.74514 0,0.155 0.39401,0.843 0.14442,0.192 0.89321,0.619 0.19077,0.08 1.10181,0.184 4.03286,-0.127 1.09289,1.093 -1.42807,3.937 -0.34766,1.029 -0.1355,0.506 -2.27316,0.209 -1.68838,0.05 -3.92944,-0.09 0,-5.454 1.95224,-3.225"},"29019":{"name":"Boone, MO","path":"m 588.41479,282.14314 3.71372,0 0.0713,4.072 -0.26386,0.01 -0.0963,0.216 -0.34409,3.351 -0.0981,3.382 -0.90748,1.591 0.1355,1.278 -3.18242,-2.105 -2.00039,-4.162 -1.09289,-1.093 2.0182,-6.525 2.04674,-0.02"},"29051":{"name":"Cole, MO","path":"m 587.44313,293.94614 3.18242,2.105 3.84921,1.517 0.19352,1.17946 -1.90936,0.93775 -1.06337,1.59037 -0.31407,1.88042 -0.99662,0.337 -2.83476,-0.321 0.016,-1.945 -1.64024,0 1.51723,-7.281"},"29135":{"name":"Moniteau, MO","path":"m 585.44274,289.78414 2.00039,4.162 -1.51723,7.281 -2.33199,0.02 -4.00076,-3.712 -0.0232,-2.018 1.68838,-0.05 2.27316,-0.209 0.1355,-0.506 0.34766,-1.029 1.42807,-3.937"},"29141":{"name":"Morgan, MO","path":"m 575.64053,295.42414 3.92944,0.09 0.0232,2.018 4.00076,3.712 -0.008,1.74923 -0.81861,0.065 -0.26485,3.0618 -1.21413,0.628 -3.56039,0.112 -1.21035,0.0537 0.16202,-0.91317 -1.04833,-0.54755 -0.007,-6.252 0.0161,-3.776"},"29131":{"name":"Miller, MO","path":"m 585.9259,301.22714 1.64024,0 -0.016,1.945 2.83476,0.321 0.99662,-0.337 0.016,1.005 0.0874,3.028 0.29061,0 0.0642,3.359 -3.97045,0.04 -1.6135,0.03 -1.03763,-0.653 -0.33696,-0.33 -0.50455,-1.005 -0.0267,-0.667 -0.16938,-0.713 -0.6757,-0.958 -1.00198,-0.176 0.26485,-3.0618 0.81861,-0.065 0.008,-1.74923 2.33199,-0.02"},"29029":{"name":"Camden, MO","path":"m 582.50279,306.11914 1.00198,0.176 0.6757,0.958 0.16938,0.713 0.0267,0.667 0.50455,1.005 0.33696,0.33 1.03763,0.653 1.6135,-0.03 0.0891,3.751 -1.05189,0.779 -1.24801,0.635 -0.1658,0.04 -0.28348,-0.111 -0.67393,-0.781 -0.28169,-0.538 -0.12837,-0.524 0.0339,-0.05 -0.025,-0.08 -4.24323,0.06 -3.9134,-0.03 0.0143,-3.71 -0.36014,-4.582 1.04833,0.54755 -0.16202,0.91317 1.21035,-0.0537 3.56039,-0.112 1.21413,-0.628"},"29169":{"name":"Pulaski, MO","path":"m 591.83968,310.54814 2.956,0 0.2496,9.456 -3.9758,0.114 -0.0339,-1.014 -3.02732,-1.405 -0.0499,-3.368 -0.0891,-3.751 3.97045,-0.04"},"29105":{"name":"Laclede, MO","path":"m 579.89089,313.77614 4.24323,-0.06 0.025,0.08 -0.0339,0.05 0.12837,0.524 0.28169,0.538 0.67393,0.781 0.28348,0.111 0.1658,-0.04 1.24801,-0.635 1.05189,-0.779 0.0499,3.368 3.02732,1.405 0.0339,1.014 0.0713,3.052 -7.87316,0.09 -3.02374,0.05 -0.0553,-5.497 -0.24247,0 -0.0553,-4.053"},"29229":{"name":"Wright, MO","path":"m 583.26764,323.26714 7.87316,-0.09 0.18363,5.048 0.12124,0.843 0.0874,3.68 -7.92129,0.119 -0.0339,-4.548 -0.2389,0 -0.0713,-5.054"},"29067":{"name":"Douglas, MO","path":"m 594.49081,332.70214 -0.17472,6.09 -11.93453,0.169 -2.644,0.01 -0.0802,-6.056 3.95441,-0.05 7.92129,-0.119 2.95778,-0.05"},"29153":{"name":"Ozark, MO","path":"m 582.38156,338.96114 11.93453,-0.169 0.12658,6.839 -0.54734,0.03 -6.94963,0.287 -4.45895,0.153 -0.10519,-7.144"},"29091":{"name":"Howell, MO","path":"m 602.38179,332.53214 0.13015,3.712 0.0713,2.339 -0.0321,4.227 0.11054,2.452 -8.21903,0.369 -0.12658,-6.839 0.17472,-6.09 1.97007,-0.06 2.26425,0.02 3.65666,-0.129"},"29215":{"name":"Texas, MO","path":"m 595.04528,320.01314 3.98472,-0.09 0.98236,-0.04 0.17828,4.043 1.9576,-0.06 0.23355,8.663 -3.65666,0.129 -2.26425,-0.02 -1.97007,0.06 -2.95778,0.05 -0.0874,-3.68 -0.12124,-0.843 -0.18363,-5.048 -0.0713,-3.052 3.9758,-0.114"},"29161":{"name":"Phelps, MO","path":"m 601.66864,306.93914 1.71869,-0.06 0.49564,8.415 -4.99739,0.168 0.14442,4.459 -3.98472,0.09 -0.2496,-9.456 1.45482,-0.683 0.76307,-0.355 2.16084,-0.128 2.56555,-0.07 -0.0713,-2.378"},"29125":{"name":"Maries, MO","path":"m 601.26572,303.81914 0.12476,3.09397 0.27816,0.026 0.0713,2.378 -2.56555,0.07 -2.16084,0.128 -0.76307,0.355 -1.45482,0.683 -2.956,0 -0.0642,-3.359 -0.29061,0 -0.0874,-3.028 3.0701,-0.04 2.51385,-0.136 4.28424,-0.164"},"29151":{"name":"Osage, MO","path":"m 600.78256,294.22014 0.12123,-0.02 0.36193,9.615 -4.28424,0.164 -2.51385,0.136 -3.0701,0.04 -0.016,-1.005 0.31407,-1.88042 1.06337,-1.59037 1.90936,-0.93775 -0.19352,-1.17946 0.7078,-0.527 1.42273,-1.35 0.12837,-0.235 0.13015,-0.145 0.15868,-0.103 2.31416,-0.988 0.57943,-0.07 0.86648,0.07"},"29027":{"name":"Callaway, MO","path":"m 592.19982,286.22214 8.43833,-0.248 0.14441,8.246 -0.86648,-0.07 -0.57943,0.07 -2.31416,0.988 -0.15868,0.103 -0.13015,0.145 -0.12837,0.235 -1.42273,1.35 -0.7078,0.527 -3.84921,-1.517 -0.1355,-1.278 0.90748,-1.591 0.0981,-3.382 0.34409,-3.351 0.0963,-0.216 0.26386,-0.01"},"29137":{"name":"Monroe, MO","path":"m 598.5825,272.17714 0.27991,7.377 -10.46367,0.241 -0.0713,-5.969 0.0339,0 1.98434,-0.05 -0.0321,-1.368 5.94587,-0.144 2.32308,-0.09"},"29205":{"name":"Shelby, MO","path":"m 594.11462,265.60514 1.96829,-0.06 0.17651,6.718 -5.94587,0.144 0.0321,1.368 -1.98434,0.05 -0.11232,-8.046 5.86564,-0.175"},"29103":{"name":"Knox, MO","path":"m 586.89044,257.70514 6.92823,-0.232 0.0303,1.013 0.26564,7.119 -5.86564,0.175 -1.07863,-1.928 -0.27991,-6.147"},"29199":{"name":"Scotland, MO","path":"m 593.63147,250.41014 0.1872,7.063 -6.92823,0.232 -0.082,-1.013 -0.23177,-5.801 2.956,-0.193 4.09882,-0.288"},"29045":{"name":"Clark, MO","path":"m 597.56804,250.39914 0.36193,0.226 1.37459,1.038 0.041,0.152 -0.0571,0.467 0.0642,0.16 1.75077,2.154 0.72563,0.586 1.13926,0.08 -1.28367,3.062 -7.83571,0.16 -0.0303,-1.013 -0.1872,-7.063 3.93657,-0.01"},"29111":{"name":"Lewis, MO","path":"m 601.68469,258.32614 -0.10697,1.125 1.23018,5.858 -6.72499,0.239 -1.96829,0.06 -0.26564,-7.119 7.83571,-0.16"},"29127":{"name":"Marion, MO","path":"m 602.8079,265.30914 1.75256,4.249 1.04298,1.656 -6.97629,0.40828 -0.0447,0.55472 -2.32308,0.09 -0.17651,-6.718 6.72499,-0.239"},"29173":{"name":"Ralls, MO","path":"m 598.5825,272.17714 0.0447,-0.55472 6.97629,-0.40828 2.47819,1.886 -0.45107,0.02 -4.3502,3.639 0.53308,3.04 -2.332,0 -2.61903,0.09 0,-0.344 -0.27991,-7.377"},"29007":{"name":"Audrain, MO","path":"m 588.39874,279.79514 10.46367,-0.241 0,0.344 2.61903,-0.09 2.332,0 0.71493,4.049 -3.88622,0.10488 -0.004,2.01612 -8.43833,0.248 -0.0713,-4.072 -3.71372,0 -0.0161,-2.348"},"29139":{"name":"Montgomery, MO","path":"m 607.16345,283.79014 0.0963,3.406 0.15868,3.448 -2.67431,0.09 0.0963,3.143 -3.93658,0.323 -0.12123,0.02 -0.14441,-8.246 0.004,-2.01612 3.88622,-0.10488 2.63508,-0.06"},"29163":{"name":"Pike, MO","path":"m 608.08163,273.10014 4.23431,4.397 4.31277,3.833 -5.02948,0.264 -3.17529,0.1 0.0642,2.05 -1.32467,0.05 -2.63508,0.06 -0.71493,-4.049 -0.53308,-3.04 4.3502,-3.639 0.45107,-0.02"},"29113":{"name":"Lincoln, MO","path":"m 616.62871,281.33014 0.82725,2.82 -0.0143,0.289 -0.48315,0.747 -0.0178,0.07 0.0446,0.161 0,0 0.95562,2.562 -5.11149,1.745 -1.87201,0.06 -1.33537,-1.31 -1.01267,-1.317 -1.34964,0.03 -0.0963,-3.406 1.32467,-0.05 -0.0642,-2.05 3.17529,-0.1 5.02948,-0.264"},"29219":{"name":"Warren, MO","path":"m 607.25972,287.19614 1.34964,-0.03 1.01267,1.317 1.33537,1.31 1.87201,-0.06 0.29596,7.488 -4.79771,-1.936 -0.11232,-0.217 -1.49404,-1.215 -0.19968,-0.02 -0.78803,0.248 -0.89322,-0.202 -0.0963,-3.143 2.67431,-0.09 -0.15868,-3.448"},"29073":{"name":"Gasconage, MO","path":"m 605.73359,294.08314 0.22464,4.393 0.25673,4.116 0.10519,2.821 -3.03249,0.0582 0.0997,1.41076 -1.71869,0.06 -0.27816,-0.026 -0.12476,-3.09397 -0.36193,-9.615 3.93658,-0.323 0.89322,0.202"},"29055":{"name":"Crawford, MO","path":"m 606.32015,305.41314 4.8708,-0.114 0.47959,10.745 -0.91282,1.034 -2.83833,0.08 -0.0571,-2.016 -3.97936,0.153 -0.49564,-8.415 -0.0997,-1.41076 3.03249,-0.0582"},"29065":{"name":"Dent, MO","path":"m 610.75772,317.07814 0.10162,2.534 -2.85259,0.03 0.0749,2.032 1.86131,-0.02 0.0874,2.002 -7.88206,0.207 -1.9576,0.06 -0.17828,-4.043 -0.98236,0.04 -0.14442,-4.459 4.99739,-0.168 3.97936,-0.153 0.0571,2.016 2.83833,-0.08"},"29203":{"name":"Shannon, MO","path":"m 602.14824,323.86914 7.88206,-0.207 0.66145,-0.02 0.3483,3.92844 1.57185,1.53456 1.2484,0.0865 0.078,1.68246 -1.6652,0.297 -1.95224,0.113 0.12837,4.683 -7.93734,0.273 -0.13015,-3.712 -0.23355,-8.663"},"29149":{"name":"Oregon, MO","path":"m 602.51194,336.24414 7.93734,-0.273 0.009,1.33582 2.01647,-0.0408 0.19433,7.554 -5.14358,0.273 -0.78624,0.02 -4.07743,0.146 -0.11054,-2.452 0.0321,-4.227 -0.0713,-2.339"},"29181":{"name":"Ripley, MO","path":"m 612.47462,337.26614 1.31932,-0.04 2.8419,0.07 4.12378,-0.193 1.99324,7.153 -3.8189,0.207 -6.26501,0.355 -0.19433,-7.554"},"29035":{"name":"Carter, MO","path":"m 613.93835,330.87814 1.20684,-0.013 0.0112,0.6985 3.16959,0.1345 1.41873,0.45091 0.57273,2.31209 0.44216,2.644 -4.12378,0.193 -2.8419,-0.07 -1.31932,0.04 -2.01647,0.0408 -0.009,-1.33582 -0.12837,-4.683 1.95224,-0.113 1.6652,-0.297"},"29179":{"name":"Reynolds, MO","path":"m 610.85934,319.61214 3.51404,-0.548 3.4445,-0.167 0.1765,4.348 0.11972,3.341 0.72536,-0.04 0.0802,1.015 0.0232,1.405 -0.68997,1.157 0.0731,1.576 -3.16959,-0.1345 -0.0112,-0.6985 -1.20684,0.013 -0.078,-1.68246 -1.2484,-0.0865 -1.57185,-1.53456 -0.3483,-3.92844 -0.66145,0.02 -0.0874,-2.002 -1.86131,0.02 -0.0749,-2.032 2.85259,-0.03"},"29093":{"name":"Iron, MO","path":"m 619.87531,315.72214 0.045,2.12738 2.0606,-0.12538 0.16937,7.552 -0.014,1.22294 -3.29683,0.0461 -0.72536,0.04 -0.11972,-3.341 -0.1765,-4.348 -3.4445,0.167 -3.51404,0.548 -0.10162,-2.534 0.91282,-1.034 8.20477,-0.322"},"29221":{"name":"Washington, MO","path":"m 616.84622,304.99414 2.67608,2.813 0.35301,7.915 -8.20477,0.322 -0.47959,-10.745 5.65527,-0.305"},"29071":{"name":"Franklin, MO","path":"m 613.12537,297.22414 4.01859,-2.344 0.15154,3.999 -0.44928,6.115 -5.65527,0.305 -4.8708,0.114 -0.10519,-2.821 -0.25673,-4.116 -0.22464,-4.393 0.78803,-0.248 0.19968,0.02 1.49404,1.215 0.11232,0.217 4.79771,1.936"},"29510":{"name":"St. Louis, MO","path":"m 626.55394,291.96714 0.36727,1.85 -1.17847,3.052 -0.73989,-0.383 -0.22643,-1.225 -0.27991,-1.806 0.44215,-0.916 0.72385,-0.546 0.89143,-0.03"},"29183":{"name":"St. Charles, MO","path":"m 621.7081,286.99614 3.1646,0.77 0.45819,0.139 0.44929,0.216 0.33874,0.2 1.74365,1.053 0.0731,0.129 0.016,0.135 -0.0642,0.531 -0.0392,0.218 -0.16938,-0.337 -0.2906,-0.187 -0.30488,0.03 -0.43323,0.29 -0.30487,-0.114 -1.10182,-0.659 -0.1765,-0.184 -1.28545,0.112 -0.0303,0.275 -0.13906,0.312 -0.11232,0.178 -0.19969,0.168 -0.26564,0.02 -0.63649,-0.12 -0.19076,0 -0.13015,0.06 -0.11946,0.134 -0.41897,0.765 -0.90035,1.945 0.0161,0.264 -0.11767,0.225 -0.29061,0.162 -0.26743,0.03 -1.53327,-0.09 -0.12837,0.04 -0.23355,0.176 -0.52238,0.819 -0.41719,0.187 -4.01859,2.344 -0.29596,-7.488 5.11149,-1.745 3.7672,-0.995"},"29189":{"name":"St. Louis Co., MO","path":"m 627.84831,290.38714 -1.29437,1.58 -0.89143,0.03 -0.72385,0.546 -0.44215,0.916 0.27991,1.806 0.22643,1.225 0.73989,0.383 -0.0802,0.284 -1.2391,3.222 -0.13728,-0.523 -1.13212,-2.113 -3.31079,0.184 -2.34626,0.587 -0.20146,0.369 -0.15154,-3.999 0.41719,-0.187 0.52238,-0.819 0.23355,-0.176 0.12837,-0.04 1.53327,0.09 0.26743,-0.03 0.29061,-0.162 0.11767,-0.225 -0.0161,-0.264 0.90035,-1.945 0.41897,-0.765 0.11946,-0.134 0.13015,-0.06 0.19076,0 0.63649,0.12 0.26564,-0.02 0.19969,-0.168 0.11232,-0.178 0.13906,-0.312 0.0303,-0.275 1.28545,-0.112 0.1765,0.184 1.10182,0.659 0.30487,0.114 0.43323,-0.29 0.30488,-0.03 0.2906,0.187 0.16938,0.337"},"29099":{"name":"Jefferson, MO","path":"m 617.2955,298.87914 0.20146,-0.369 2.34626,-0.587 3.31079,-0.183 1.13212,2.112 0.13728,0.523 -0.0499,0.06 -0.0802,0.16 -0.26208,0.892 -0.0339,0.1 -0.016,0.233 0.0339,0.965 0.24068,1.034 0.2086,0.515 0.32983,0.451 0.0571,0.08 0.0464,0.05 1.51187,1.47 -2.8205,1.983 -3.63488,0.67375 -0.43185,-1.23575 -2.67608,-2.813 0.44928,-6.115"},"29187":{"name":"St. Francois, MO","path":"m 619.5223,307.80714 0.43185,1.23575 3.63488,-0.67375 1.75078,1.301 -2.30525,2.527 1.46908,1.419 3.48195,3.141 0.78624,-0.745 0.82547,0.612 -0.60796,0.72 -7.00846,0.38 -2.0606,0.12538 -0.045,-2.12738 -0.35301,-7.915"},"29186":{"name":"Sainte Genevieve, MO","path":"m 627.32236,307.06914 5.08831,4.645 -2.81337,4.91 -0.82547,-0.612 -0.78624,0.745 -3.48195,-3.141 -1.46908,-1.419 2.30525,-2.527 -1.75078,-1.301 2.8205,-1.983 0.91283,0.683"},"29123":{"name":"Madison, MO","path":"m 628.98934,317.34414 0.0642,1.03 0.23177,1.286 0.19255,5.313 -1.30863,0.01 -6.01897,0.291 -0.16937,-7.552 7.00846,-0.38"},"29223":{"name":"Wayne, MO","path":"m 622.15025,325.27614 6.01897,-0.291 0.22286,5.29 2.0503,-0.112 0.0481,1.037 -1.76851,0.88297 -0.74712,2.03203 -7.65743,0.346 -0.57273,-2.31209 -1.41873,-0.45091 -0.0731,-1.576 0.68997,-1.157 -0.0232,-1.405 -0.0802,-1.015 3.29683,-0.0461 0.014,-1.22294"},"29023":{"name":"Butler, MO","path":"m 627.97489,334.11514 0.89322,2.356 0.63292,1.397 0.12301,0.05 0.16759,0.122 0.5937,1.139 0.22642,0.82 -0.0481,0.449 -0.16224,0.282 -1.13213,3.159 -6.51639,0.371 -1.99324,-7.153 -0.44216,-2.644 7.65743,-0.346"},"29069":{"name":"Dunklin, MO","path":"m 633.86371,340.55314 0.31557,5.559 0.60974,9.009 -6.07424,0.433 -1.4673,0.1 2.84011,-4.942 2.0093,-1.767 0.12836,-0.202 0.19433,-0.529 -0.11945,-1.826 -0.17828,-0.239 -1.63846,-2.314 -0.72385,0.02 -0.49029,0.03 1.13213,-3.159 3.46233,-0.175"},"29207":{"name":"Stoddard, MO","path":"m 634.81576,328.94914 1.83101,-0.113 0.35122,2.131 0.36906,0.495 0.29061,0.468 0.39401,0.957 0.28169,0.786 0.0642,1.239 -0.23178,0.02 0.42433,5.358 -4.72639,0.267 -3.46233,0.175 0.16224,-0.282 0.0481,-0.449 -0.22642,-0.82 -0.5937,-1.139 -0.16759,-0.122 -0.12301,-0.05 -0.63292,-1.397 -0.89322,-2.356 0.74712,-2.03203 1.76851,-0.88297 1.68659,-0.09 1.06259,-0.396 -0.1141,-1.686 1.69016,-0.08"},"29017":{"name":"Bollinger, MO","path":"m 634.20424,318.00414 0.61152,10.945 -1.69016,0.08 0.1141,1.686 -1.06259,0.396 -1.68659,0.09 -0.0481,-1.037 -2.0503,0.112 -0.22286,-5.29 1.30863,-0.01 -0.19255,-5.313 -0.23177,-1.286 5.15071,-0.37"},"29157":{"name":"Perry, MO","path":"m 632.41067,311.71414 4.85476,1.347 3.11645,5.16 0,0.137 -6.17764,-0.354 -5.15071,0.37 -0.0642,-1.03 0.60796,-0.72 2.81337,-4.91"},"29031":{"name":"Cape Girardeau, MO","path":"m 634.20424,318.00414 6.17764,0.354 0.016,0.209 0.1141,0.46 0.007,0 0.51347,0.958 0.33696,0.504 0.47603,0.467 0.22464,0.282 0.28882,0.651 0.007,0.02 0.009,0.04 0.10341,0.387 0.009,0.02 -0.009,0.03 -0.0713,0.708 -0.0731,0.218 -0.0143,0.02 -0.0178,0.02 -0.016,0.02 -0.2086,0.107 -0.65788,0.176 0.0303,2.017 -2.68532,0.32046 -0.956,0.86509 -0.3322,1.45219 -0.82953,0.51926 -1.83101,0.113 -0.61152,-10.945"},"29201":{"name":"Scott, MO","path":"m 641.44982,325.67914 0.45998,0.658 1.11608,2.089 0.64183,1.575 1.21414,0.989 -3.36606,3.48 -3.11824,0.442 -0.0642,-1.239 -0.28169,-0.786 -0.39401,-0.957 -0.29061,-0.468 -0.36906,-0.495 -0.35122,-2.131 0.82953,-0.51926 0.3322,-1.45219 0.956,-0.86509 2.68532,-0.32046"},"29133":{"name":"Mississippi, MO","path":"m 644.88185,330.99014 3.4962,0.376 0.65075,0.838 -0.68819,2.298 -0.0107,0 -0.50634,0.289 -0.009,0 0,0.53 0.009,0 1.05189,0.554 -0.70601,3.188 -0.50969,0.55868 -0.24723,1.08361 -0.84441,0.0675 -1.1639,-1.0898 -3.88844,-5.238 3.36606,-3.48"},"28047":{"name":"Harrison, MS","path":"m 663.79096,476.24014 1.23732,6.18 -1.49583,0.378 -3.15033,0.816 -3.86527,1.113 -1.23731,-0.852 -0.45819,-6.301 2.00038,-0.137 0.0909,-0.69 6.87831,-0.507"},"28059":{"name":"Jackson, MS","path":"m 663.68399,474.90514 9.29945,-0.72 1.0198,8.363 -0.016,0.337 -1.4156,0.909 -0.15868,0.06 -4.96707,-0.176 -0.37084,-0.08 -1.34072,-0.756 -0.70601,-0.417 -1.23732,-6.18 -0.10697,-1.335"},"28043":{"name":"Grenada, MS","path":"m 638.50274,403.58114 2.97204,-0.165 0.0481,0.681 4.96529,-0.328 0.30487,4.371 -5.3183,0.376 -6.49321,0.41 -0.21573,-1.019 -0.12123,-2.026 2.0503,-0.146 1.92015,-0.44 -0.0481,-0.667 -0.0642,-1.047"},"28161":{"name":"Yalobusha, MS","path":"m 645.97474,396.97814 0.51347,6.791 -4.96529,0.328 -0.0481,-0.681 -2.97204,0.165 -0.48851,-6.129 3.96346,-0.30945 -0.0358,-0.59855 3.96787,-0.21666 0.065,0.65066"},"28025":{"name":"Clay, MS","path":"m 661.49819,403.98414 0.24069,3.004 4.16478,-0.312 0.11411,0.138 -0.31557,0.57 0.73822,0.75136 -0.0634,1.88092 -3.40618,0.91972 -0.1141,-1.357 -5.94409,0.472 -0.65075,0.09 -0.59547,-4.058 0.22951,-0.66344 2.2901,-0.1483 -0.0875,-1.17859 3.39965,-0.10867"},"28155":{"name":"Webster, MS","path":"m 652.67834,406.31614 2.98809,-0.233 0.59547,4.058 -1.27118,0.764 -3.32435,0.51751 -2.13123,1.56149 -2.38548,0.178 -0.42789,-6.043 5.95657,-0.803"},"28017":{"name":"Chickasaw, MS","path":"m 659.06279,398.05614 1.99325,-0.146 0.44215,6.074 -3.39965,0.10867 0.0875,1.17859 -2.2901,0.1483 -0.22951,0.66344 -2.98809,0.233 -0.0909,-1.688 0.98949,-0.08 -0.4582,-6.033 5.94409,-0.457"},"28013":{"name":"Calhoun, MS","path":"m 645.97474,396.97814 4.99026,-0.328 0.13726,1.99155 2.01644,-0.12855 0.4582,6.033 -0.98949,0.08 0.0909,1.688 -5.95657,0.803 -0.23356,-3.35 -0.51347,-6.791"},"28115":{"name":"Pontotoc, MS","path":"m 658.55111,391.37014 0.51168,6.686 -5.94409,0.457 -2.01644,0.12855 -0.13726,-1.99155 -0.37084,-5.041 7.95695,-0.239"},"28081":{"name":"Lee, MS","path":"m 659.95601,387.92114 3.67307,-0.20848 0.0549,0.93148 0.66145,8.671 -3.33172,0.23831 0.0423,0.35669 -1.99325,0.146 -0.51168,-6.686 1.4049,-3.449"},"28145":{"name":"Union, MS","path":"m 653.19893,386.35514 6.62158,-0.46 0.1355,2.026 -1.4049,3.449 -7.95695,0.239 -0.19255,-2.674 -0.12658,-2.018 2.9239,-0.562"},"28071":{"name":"Lafayette, MS","path":"m 641.38564,388.19314 0.98949,-0.06 1.94689,-0.162 1.65986,-0.08 0.48856,0.60478 1.95575,-0.0408 1.97542,0.481 0.19255,2.674 0.37084,5.041 -4.99026,0.328 -0.065,-0.65066 -3.96787,0.21666 -0.55625,-8.351"},"28137":{"name":"Tate, MS","path":"m 632.13967,384.84314 1.83101,-0.303 3.51047,-1.15 3.5283,-0.226 0.15155,2 1.01267,0.163 0.20146,2.804 -0.98949,0.06 -8.96606,0.573 -0.94512,-1.9615 0.66521,-1.9615"},"28107":{"name":"Panola, MS","path":"m 632.41958,388.76614 8.96606,-0.573 0.55625,8.351 0.0358,0.59855 -3.96346,0.30945 -3.851,0.337 -0.13728,-2.443 -1.19809,-1.308 -0.35301,-4.269 -0.0553,-1.003"},"28119":{"name":"Quitman, MS","path":"m 632.47485,389.76914 0.35301,4.269 1.19809,1.308 0.13728,2.443 0.12124,2.009 -1.02159,0.06 -4.94211,0.296 -0.24961,-4.37 0.98237,-0.04 -0.23534,-3.746 1.84348,-0.128 -0.17115,-1.961 1.98433,-0.144"},"28135":{"name":"Tallahatchie, MS","path":"m 634.16323,397.78914 3.851,-0.337 0.48851,6.129 0.0642,1.047 0.0481,0.667 -1.92015,0.44 -2.0503,0.146 0.12123,2.026 -0.72239,0.0981 -0.007,-0.39803 -0.57956,-0.1368 -0.74964,0.9383 -1.19705,0.1926 -0.0576,-1.13106 0.26556,-0.41022 2.30507,-0.24889 -0.007,-0.39803 -0.0241,-0.475 -5.33342,0.255 -0.21929,-4.025 -0.11945,-2.01 4.94211,-0.296 1.02159,-0.06 -0.12124,-2.009"},"28083":{"name":"Leflore, MS","path":"m 628.65951,406.19314 5.33342,-0.255 0.0241,0.475 0.007,0.39803 -2.30507,0.24889 -0.26556,0.41022 0.0576,1.13106 1.19705,-0.1926 0.74964,-0.9383 0.57956,0.1368 0.007,0.39803 0.72239,-0.0981 0.21573,1.019 0.50099,0.314 0.0463,0.241 0.27991,4.436 -0.63292,1.019 -0.6971,0.03 0.11945,1.928 -2.05148,-0.67655 -0.90808,1.56055 -0.34752,-0.53593 -0.36642,0.50267 0.009,1.34715 -0.98138,0.008 -0.5898,-0.69362 -0.0778,-1.10185 -0.62579,-11.115"},"28133":{"name":"Sunflower, MS","path":"m 628.44022,402.16814 0.21929,4.025 0.62579,11.115 -1.96294,0.121 0.0909,1.35 -3.07724,0.183 -0.97094,0.0522 -0.26102,-5.9822 -0.11054,-2 1.99325,-0.111 -0.45107,-8.566 3.90449,-0.187"},"28053":{"name":"Humphreys, MS","path":"m 629.2853,417.30814 0.0778,1.10185 0.58979,0.69362 0.98139,-0.008 -0.009,-1.34715 0.36642,-0.50267 0.34752,0.53593 0.25851,3.865 -0.61865,1.141 -0.11232,0.08 -0.21751,-0.04 -0.51347,-0.319 -0.24069,-0.322 -0.082,0.02 -0.0464,0.08 -0.0677,0.383 0.0891,0.763 0.0428,0.121 0.93066,0.772 0.36192,0.23 -1.63133,0.13 0.10519,1.979 -3.97045,0.248 -1.09111,-3.952 -0.49921,-3.996 3.07724,-0.183 -0.0909,-1.35 1.96294,-0.121"},"28051":{"name":"Holmes, MS","path":"m 631.63869,417.78214 0.90808,-1.56055 2.05148,0.67655 8.29035,2.225 -3.64776,7.982 -7.81788,-2.552 -0.36192,-0.23 -0.93066,-0.772 -0.0428,-0.121 -0.0891,-0.763 0.0677,-0.383 0.0464,-0.08 0.082,-0.02 0.24069,0.322 0.51347,0.319 0.21751,0.04 0.11232,-0.08 0.61865,-1.141 -0.25851,-3.865"},"28015":{"name":"Carroll, MS","path":"m 634.98157,408.92614 6.49321,-0.41 0.42611,6.003 1.35141,0.241 1.31576,-0.103 0.20146,2.699 -1.33449,0.0954 -0.54643,1.67157 -8.29035,-2.225 -0.11945,-1.928 0.6971,-0.03 0.63292,-1.019 -0.27991,-4.436 -0.0463,-0.241 -0.50099,-0.314"},"28097":{"name":"Montgomery, MS","path":"m 646.79308,408.14014 0.35658,5.022 2.38548,-0.178 -0.30209,0.30741 -0.3021,0.28255 -0.55066,-0.21459 0.0459,3.73763 -3.65667,0.259 -0.20146,-2.699 -1.31576,0.103 -1.35141,-0.241 -0.42611,-6.003 5.3183,-0.376"},"28019":{"name":"Choctaw, MS","path":"m 654.99072,410.90514 0.41184,5.695 -0.3958,0.03 0.14409,2.04537 -1.98936,0.12963 0.1355,2.027 -1.98612,0.152 -0.2274,-4.01418 -2.65728,0.12318 -0.0459,-3.73763 0.55066,0.21459 0.30209,-0.28255 0.3021,-0.30741 2.13123,-1.56149 3.32435,-0.51751"},"28105":{"name":"Oktibbeha, MS","path":"m 656.2619,410.14114 0.65075,-0.09 5.94409,-0.472 0.1141,1.357 0.43681,5.038 -2.75275,0.223 -5.25234,0.403 -0.41184,-5.695 1.27118,-0.765"},"28087":{"name":"Lowndes, MS","path":"m 665.7022,407.38414 4.8601,-2.589 -0.10162,4.894 -0.10519,5.704 -6.94784,0.581 -0.43681,-5.038 3.40618,-0.91972 0.0634,-1.88092 -0.73822,-0.75136"},"28095":{"name":"Monroe, MS","path":"m 670.76555,396.85814 -0.0178,0.658 -0.18542,7.279 -4.8601,2.589 0.31557,-0.57 -0.11411,-0.138 -4.16478,0.312 -0.24069,-3.004 -0.44215,-6.074 -0.0423,-0.35669 3.33172,-0.23831 6.42011,-0.457"},"28057":{"name":"Itawamba, MS","path":"m 670.9581,388.10814 -0.19255,8.75 -6.42011,0.457 -0.66145,-8.671 4.01146,-0.281 3.26265,-0.255"},"28117":{"name":"Prentiss, MS","path":"m 666.45814,381.68614 0.96912,0.4997 0.26819,6.1773 -4.01146,0.281 -0.0549,-0.93148 -3.67307,0.20848 -0.1355,-2.026 0.5047,-0.0449 -0.0971,-3.67414 6.22997,-0.49"},"28141":{"name":"Tishomingo, MS","path":"m 666.05521,376.15214 3.05227,-0.251 2.10735,2.225 -0.19255,7.226 -0.0642,2.756 -3.26265,0.255 -0.26819,-6.1773 -0.96912,-0.4997 -0.40293,-5.534"},"28003":{"name":"Alcorn, MS","path":"m 665.74142,376.17314 0.31379,-0.02 0.40293,5.534 -6.22997,0.49 -0.39258,0.007 -0.0115,-2.3057 -1.98016,0.1276 -0.3608,-3.1714 0.68284,-0.06 7.57541,-0.603"},"28139":{"name":"Tippah, MS","path":"m 653.85681,377.11514 3.62636,-0.282 0.3608,3.1714 1.98016,-0.1276 0.0115,2.3057 0.39258,-0.007 0.0971,3.67414 -0.5047,0.0449 -6.62158,0.46 -0.36192,-5.006 0.98771,-0.07 0.25852,-1.031 -0.22643,-3.132"},"28009":{"name":"Benton, MS","path":"m 650.48362,377.36214 3.37319,-0.247 0.22643,3.132 -0.25852,1.031 -0.98771,0.07 0.36192,5.006 -2.9239,0.562 -0.9895,0.07 -0.44928,-6.035 -0.74702,-1.1 -0.49029,-2.289 2.88468,-0.204"},"28093":{"name":"Marshall, MS","path":"m 642.15049,377.91914 5.44845,-0.353 0.49029,2.289 0.74702,1.1 0.44928,6.035 0.9895,-0.07 0.12658,2.018 -1.97542,-0.481 -1.95575,0.0408 -0.48856,-0.60478 -1.65986,0.08 -1.94689,0.162 -0.20146,-2.804 -1.01267,-0.163 -0.15155,-2 -0.35301,-5.135 1.49405,-0.11"},"28033":{"name":"DeSoto, MS","path":"m 640.65644,378.02914 0.35301,5.135 -3.5283,0.226 -3.51047,1.15 -1.83101,0.303 -0.22828,-3.08945 -1.71148,0.0464 -0.47246,-3.102 10.92899,-0.669"},"28143":{"name":"Tunica, MS","path":"m 630.19991,381.80014 1.71148,-0.0464 0.22828,3.08945 -0.66521,1.9615 0.94512,1.9615 0.0553,1.003 -1.98433,0.145 0.17115,1.961 -1.84348,0.128 -3.35002,-2.153 -0.25673,-2.676 2.89182,-4.606 2.09665,-0.768"},"28027":{"name":"Coahoma, MS","path":"m 625.46817,389.85014 3.35002,2.153 0.23534,3.746 -0.98237,0.04 0.24961,4.37 0.11945,2.01 -3.90449,0.187 -0.21572,-3.031 -3.02197,0.119 -2.13053,0.129 -0.0642,-0.225 0.27278,-0.569 0.85399,-1.759 1.8007,-3.231 0.98593,-0.193 0.98949,-0.203 0.81834,-0.392 0.65075,-0.571 0.041,-0.03 0.0178,-0.04 0.1355,-0.442 -0.20147,-2.064"},"28011":{"name":"Bolivar, MS","path":"m 619.16751,399.57214 2.13053,-0.129 3.02197,-0.119 0.21572,3.031 0.45107,8.566 -1.99325,0.111 0.11054,2 -8.61305,0.459 -0.26386,-0.73 1.4049,-0.565 0.33696,-0.289 0.0499,-0.247 0,-0.02 -0.53842,-0.435 -0.56874,-0.426 -0.1141,-0.203 -0.025,-0.05 0.10519,-0.523 1.52613,-6.573 3.71372,-1.87 0.11232,-0.772 -0.20146,-0.5 -0.85221,-0.682 -0.009,-0.03"},"28151":{"name":"Washington, MS","path":"m 614.49104,413.49114 8.61305,-0.459 0.26102,5.9822 0.97094,-0.0522 0.49921,3.996 -3.65203,0.29426 -0.31308,1.96374 -4.66577,0.159 0.56161,-0.635 0.016,-0.02 0.60261,-2.501 0,-0.02 -0.0553,-1.747 -0.4992,-0.529 -0.65075,-1.181 -0.96453,-2.758 0.98949,-0.289 0.23178,-0.458 -0.15155,-0.536 -0.79516,-0.537 -0.97345,-0.663 -0.025,-0.01"},"28125":{"name":"Sharkey, MS","path":"m 624.83526,422.95814 1.09111,3.952 -1.87201,2.113 0.0321,0.499 0.36192,0.09 0.52238,0.416 0.5206,0.522 0.60261,1.817 -0.0232,0.297 -0.18541,0.193 -0.89857,0.121 -4.66042,0.241 -0.19255,-4.044 0.11232,-0.337 0.0963,-0.01 0.1355,-0.103 0.0891,-0.148 0.32804,-1.79 -0.025,-1.566 0.31308,-1.96374 3.65203,-0.29426"},"28055":{"name":"Issaquena, MS","path":"m 620.87015,425.21614 0.025,1.566 -0.32804,1.79 -0.0891,0.148 -0.1355,0.103 -0.0963,0.01 -0.11232,0.336 0.19255,4.044 4.66042,-0.241 0.11054,0.995 0.0157,0.97218 -2.58177,0.26973 0.0594,2.97609 -1.94333,0.605 -0.20146,-3.568 -2.55485,0.104 -0.61153,-0.191 -0.0481,-0.04 -0.18364,-0.16 -0.041,-0.03 -0.0214,-0.04 -0.0606,-0.07 -0.0214,-0.04 -0.11411,-0.274 -1.54218,-6.989 -0.0321,-0.186 0.20146,-0.731 0.63292,-1.021 0.15511,-0.177 4.66577,-0.158"},"28163":{"name":"Yazoo, MS","path":"m 631.42296,424.55314 7.81788,2.552 -1.22126,3.132 -0.19255,0.305 -1.10003,0.788 -5.64992,3.207 -0.71493,0.168 -1.91123,1.647 -3.35358,-2.38 -0.11054,-0.995 0.89857,-0.121 0.18541,-0.192 0.0232,-0.298 -0.60261,-1.817 -0.5206,-0.522 -0.52238,-0.416 -0.36192,-0.09 -0.0321,-0.499 1.87201,-2.113 3.97045,-0.248 -0.10519,-1.979 1.63133,-0.13"},"28007":{"name":"Attala, MS","path":"m 648.42619,417.09714 2.65728,-0.12318 0.2274,4.01418 0.25674,4.082 -4.60337,0.346 -3.27157,0.232 0.0713,1.045 -4.52315,0.412 3.64776,-7.982 0.54643,-1.67157 1.33449,-0.0954 3.65667,-0.259"},"28159":{"name":"Winston, MS","path":"m 655.40256,416.60014 5.25234,-0.403 0.63648,8.296 -1.95224,0.135 -7.77153,0.442 -0.25674,-4.082 1.98612,-0.152 -0.1355,-2.027 1.98936,-0.12963 -0.14409,-2.04537 0.3958,-0.03"},"28103":{"name":"Noxubee, MS","path":"m 663.40765,415.97414 6.94784,-0.581 -0.1355,6.896 -0.0267,1.439 -8.90187,0.765 -0.63648,-8.296 2.75275,-0.223"},"28069":{"name":"Kemper, MS","path":"m 661.29138,424.49314 8.90187,-0.765 -0.1355,8.131 -10.11779,0.812 -0.60082,-8.043 1.95224,-0.135"},"28099":{"name":"Neshoba, MS","path":"m 651.56761,425.07014 7.77153,-0.442 0.60082,8.043 -7.76083,0.57 -0.61152,-8.171"},"28079":{"name":"Leake, MS","path":"m 651.56761,425.07014 0.61152,8.171 -0.0981,0.01 -7.84997,0.52 -0.0963,-1.317 -0.37083,-5.762 -0.0713,-1.045 3.27157,-0.232 4.60337,-0.346"},"28089":{"name":"Madison, MS","path":"m 639.24084,427.10514 4.52315,-0.412 0.37083,5.762 -0.96453,1.166 -0.42611,0.02 -1.00375,0.119 -2.70105,2.484 -1.05189,1.171 -0.0713,0.171 -0.009,0.296 0.11232,0.394 -2.45145,0.138 -0.99484,-0.1 -0.11232,-1.847 -0.70958,0.04 -3.268,0.185 -0.12124,-1.984 0.71493,-0.168 5.64992,-3.207 1.10003,-0.788 0.19255,-0.305 1.22126,-3.133"},"28121":{"name":"Rankin, MS","path":"m 643.17029,433.62114 1.35627,4.9463 0.23583,3.3777 0.27278,4.017 -9.70772,0.556 -0.49743,-1.423 0.69889,-3.255 1.17313,-1.696 1.31754,-1.872 -0.11232,-0.394 0.009,-0.296 0.0713,-0.171 1.05189,-1.171 2.70105,-2.484 1.00375,-0.119 0.42611,-0.02"},"28049":{"name":"Hinds, MS","path":"m 628.45092,436.35214 1.91123,-1.647 0.12124,1.984 3.268,-0.185 0.70958,-0.04 0.11232,1.847 0.99484,0.1 2.45145,-0.137 -1.31754,1.872 -1.17313,1.695 -0.69889,3.256 0.49743,1.422 -9.46526,0.585 -0.42254,-4.056 3.01127,-6.695"},"28149":{"name":"Warren, MS","path":"m 617.89098,435.33114 2.55485,-0.104 0.20146,3.568 1.94333,-0.605 -0.0594,-2.97609 2.58177,-0.26973 -0.0157,-0.97218 3.35358,2.38 -3.01127,6.695 -0.4689,0.562 -0.95561,1.132 -2.01821,1.783 -0.5313,-0.07 -1.68659,-0.524 -1.96116,-2.291 2.24107,-0.278 -0.1355,-3.318 -2.14479,-2.282 -0.016,-0.04 -0.082,-0.128 -0.0553,-0.08 0,-0.03 -0.0339,-0.369 0.4368,-1.471 -0.13728,-0.313"},"28063":{"name":"Jefferson, MS","path":"m 615.78541,451.75614 4.57128,-0.06 3.37675,0.635 0.0481,0.271 0.007,0.258 0.15333,0.401 1.9041,-0.112 0.10341,2.016 0.0981,2.01 -8.12276,0.46 -1.92786,-0.0125 -0.94604,-1.04599 -0.49685,-1.83359 -0.99371,-0.0499 2.22502,-2.942"},"28021":{"name":"Claiborne, MS","path":"m 625.43965,443.04714 0.42254,4.056 -0.0161,6.051 -1.9041,0.112 -0.15333,-0.401 -0.007,-0.258 -0.0481,-0.271 -3.37675,-0.635 -4.57128,0.06 3.99363,-5.828 1.68659,0.524 0.5313,0.07 2.01821,-1.783 0.95561,-1.132 0.4689,-0.562"},"28029":{"name":"Copiah, MS","path":"m 635.32745,446.51814 2.0521,2.656 0.46352,4.046 -2.33912,0.956 -9.5544,0.994 -0.10341,-2.016 0.0161,-6.051 9.46526,-0.585"},"28127":{"name":"Simpson, MS","path":"m 645.03517,445.96214 1.23732,-0.0954 0.66679,6.12344 -1.97721,0.273 -4.25036,0.57 -2.86864,0.387 -0.46352,-4.046 -2.0521,-2.656 9.70772,-0.556"},"28129":{"name":"Smith, MS","path":"m 644.76239,441.94514 7.89099,-0.569 0.79516,9.672 -1.64024,0.234 -4.86902,0.708 -0.66679,-6.12344 -1.23732,0.0954 -0.27278,-4.017"},"28123":{"name":"Scott, MS","path":"m 644.13482,432.45514 0.0963,1.317 7.84997,-0.52 0.57231,8.124 -7.89099,0.569 -0.23583,-3.3777 -1.35627,-4.9463 0.96453,-1.166"},"28101":{"name":"Newton, MS","path":"m 652.17913,433.24114 7.76083,-0.57 0.61866,8.11 -7.90524,0.595 -0.57231,-8.124 0.0981,-0.01"},"28075":{"name":"Lauderdale, MS","path":"m 659.93996,432.67114 10.11779,-0.812 -0.13728,6.246 -0.0464,1.879 -9.3155,0.797 -0.61866,-8.11"},"28023":{"name":"Clarke, MS","path":"m 669.87412,439.98414 -0.13015,7.707 -8.43654,2.218 -0.74881,-9.128 9.3155,-0.797"},"28061":{"name":"Jasper, MS","path":"m 660.55862,440.78114 0.74881,9.128 -0.63649,0.09 -7.2224,1.044 -0.79516,-9.672 7.90524,-0.595"},"28067":{"name":"Jones, MS","path":"m 660.67094,450.00414 0.66145,8.982 -3.95263,0.276 -4.94568,0.353 -0.62578,-8.333 1.64024,-0.234 7.2224,-1.044"},"28031":{"name":"Covington, MS","path":"m 651.8083,451.28214 0.62578,8.333 -1.02871,0.07 -2.64222,0.188 -0.11945,-1.833 -0.35479,-0.563 -0.69889,-0.411 -0.70601,-0.09 -0.52417,-0.256 -1.15708,-0.667 -0.24069,-3.792 1.97721,-0.273 4.86902,-0.708"},"28065":{"name":"Jefferson Davis, MS","path":"m 640.71171,452.83314 4.25036,-0.57 0.24069,3.792 1.15708,0.667 0.52417,0.256 0.70601,0.09 0.69889,0.41 0.35479,0.563 0.11945,1.833 -1.31754,0.09 -3.32505,0.212 0.0874,1.011 -2.65291,0.161 -0.19255,-3.027 -0.46533,-2.406 -0.18542,-3.077"},"28077":{"name":"Lawrence, MS","path":"m 637.84307,453.22014 2.86864,-0.387 0.18542,3.077 0.46533,2.405 0.19255,3.028 -1.63093,0.1452 0.11906,1.2058 -4.00076,-0.08 -0.53843,-8.438 2.33912,-0.956"},"28085":{"name":"Lincoln, MS","path":"m 635.50395,454.17614 0.53843,8.438 -0.32805,0.02 -5.62674,0.348 -1.67055,0.103 -0.33696,-6.027 -2.03247,0.121 -0.0981,-2.01 9.5544,-0.994"},"28037":{"name":"Franklin, MS","path":"m 617.92485,457.64014 8.12276,-0.46 2.03247,-0.121 0.33696,6.027 -6.84622,0.387 -2.15905,0.747 -1.26406,-0.524 -0.22286,-6.056"},"28001":{"name":"Adams, MS","path":"m 613.56039,454.69814 0.99371,0.0499 0.49685,1.83359 0.94604,1.04599 1.92786,0.0125 0.22286,6.056 -0.0963,-0.09 -1.38173,-0.463 -0.80229,0.144 -0.63648,0.225 -2.63509,1.085 -2.50671,2.331 -0.18542,0.408 -0.28882,1.198 0.47424,-2.476 0.73098,-5.993 0.007,-0.02 0.0731,-0.155 0.0481,-0.09 2.09666,-4.211 0.0143,-0.02 0.30844,-0.528 0.19255,-0.346"},"28157":{"name":"Wilkinson, MS","path":"m 618.14771,463.69614 1.26406,0.524 0.77232,0.66999 0.29383,6.69901 -2.28385,0.112 -9.0552,0.426 0.47603,-3.592 0.28882,-1.198 0.18542,-0.408 2.50671,-2.331 2.63509,-1.085 0.63648,-0.225 0.80229,-0.145 1.38173,0.464 0.0963,0.09"},"28005":{"name":"Amite, MS","path":"m 630.08759,462.98314 0.46711,8.037 -0.37618,0.01 -5.09545,0.297 -4.60515,0.259 -0.29383,-6.69901 -0.77232,-0.66999 2.15905,-0.747 6.84622,-0.387 1.67055,-0.103"},"28113":{"name":"Pike, MS","path":"m 630.08759,462.98314 5.62674,-0.348 0.50633,8.029 -1.7276,0.105 -3.93836,0.251 -0.46711,-8.037"},"28147":{"name":"Walthall, MS","path":"m 636.04238,462.61414 4.00076,0.08 0.14619,2.345 0.33875,1.326 0.76307,0.941 1.43699,0.908 1.43877,0.232 0.37797,1.665 -8.32422,0.553 -0.50633,-8.029 0.32805,-0.02"},"28091":{"name":"Marion, MS","path":"m 647.44561,459.95914 0.6668,9.901 -1.45483,0.107 -2.1127,0.144 -0.37797,-1.665 -1.43877,-0.232 -1.43699,-0.908 -0.76307,-0.941 -0.33875,-1.326 -0.14619,-2.345 -0.11906,-1.2058 1.63093,-0.1452 2.65291,-0.161 -0.0874,-1.011 3.32505,-0.212"},"28073":{"name":"Lamar, MS","path":"m 651.40537,459.68614 0.15511,2.01 2.01642,-0.145 0.51525,7.715 -5.97974,0.594 -0.6668,-9.901 1.31754,-0.09 2.64222,-0.188"},"28035":{"name":"Forrest, MS","path":"m 657.37976,459.26214 0.5206,7.087 0.3441,2.853 0.16224,2.08 -3.99363,0.278 -0.32092,-2.294 -0.51525,-7.715 -2.01642,0.145 -0.15511,-2.01 1.02871,-0.07 4.94568,-0.353"},"28153":{"name":"Wayne, MS","path":"m 669.74397,447.69114 0.46533,4.507 0.76485,5.994 -7.64852,0.644 -1.99324,0.15 -0.66145,-8.982 0.63649,-0.09 8.43654,-2.218"},"28041":{"name":"Greene, MS","path":"m 663.32563,458.83614 7.64852,-0.644 0.93065,7.342 0.34053,2.655 -8.02113,0.628 -0.89857,-9.981"},"28111":{"name":"Perry, MS","path":"m 661.33239,458.98614 1.99324,-0.15 0.89857,9.981 0.14955,1.95517 -1.00176,0.11583 -4.96529,0.394 -0.16224,-2.08 -0.3441,-2.853 -0.5206,-7.087 3.95263,-0.276"},"28131":{"name":"Stone, MS","path":"m 663.37199,470.88814 0.312,4.017 0.10697,1.335 -6.87831,0.507 -0.0909,0.69 -2.00038,0.137 -0.40828,-6.014 3.99363,-0.278 4.96529,-0.394"},"28109":{"name":"Pearl River, MS","path":"m 654.09215,469.26614 0.32092,2.294 0.40828,6.014 -2.73136,0.185 -1.21414,0.764 0.15155,2.339 -1.94333,1.453 -0.86826,0.06 -3.30187,-4.548 0.21929,-1.642 0.2389,-1.213 0.29774,-1.469 0.25852,-1.075 0.0463,-0.05 0.16046,-0.02 0.12302,-0.02 0.1979,-0.442 0.24247,-1.214 -0.041,-0.713 1.45483,-0.107 5.97974,-0.594"},"28045":{"name":"Hancock, MS","path":"m 648.21581,482.37214 0.86826,-0.06 1.94333,-1.453 -0.15155,-2.34 1.21414,-0.763 2.73136,-0.185 0.45819,6.301 -0.36269,2.06897 -2.97127,2.58403 -0.91818,0.06 -0.0374,0 -0.0481,-0.03 -0.0713,-0.05 -0.0499,-0.03 -0.1462,-0.169 -0.43145,-0.505 -0.19255,-0.371 -0.62936,-1.194 -0.016,-0.123 0.0499,-0.193 0.18363,-0.465 -0.0303,-0.426 -1.23018,-2.5 -0.12836,-0.13 -0.0339,-0.03"},"28039":{"name":"George, MS","path":"m 664.2242,468.81714 8.02113,-0.628 0.73811,5.996 -9.29945,0.72 -0.312,-4.017 1.00176,-0.11583 -0.14955,-1.95517"},"30091":{"name":"Sheridan, MT","path":"m 400.09559,53.675143 -0.69176,8.292 -0.45819,5.545 -8.95179,-0.779 0.18541,-1.977 -2.11206,-0.27454 0.29532,-1.87946 -3.31079,-0.312 0.18542,-1.961 -1.00376,-0.105 0.27278,-5.923 0.19434,-2 15.39508,1.374"},"30085":{"name":"Roosevelt, MT","path":"m 385.05173,62.290143 3.31079,0.312 -0.29532,1.87946 2.11206,0.27454 -0.18541,1.977 8.95179,0.779 -0.71493,8.936 -2.94887,-1.022 -3.03801,-1.767 -6.50748,-1.638 -0.90926,0.369 -0.41006,0.546 -0.49742,0.378 -0.32983,0.167 -1.88806,0 -1.14995,-0.224 -0.87539,-0.635 -1.31754,-0.257 -1.14995,-0.05 -2.81159,-0.04 -0.76307,0.03 -0.83616,0.458 -2.41044,0.738 0.4992,-4.731 0.60083,0.06 0.80407,-7.795 12.76,1.262"},"30031":{"name":"Gallatin, MT","path":"m 283.339,103.93614 4.39478,0.708 -0.2817,1.125 -0.53842,3.214 -0.11946,1.19 -0.25851,1.656 -0.33518,2.016 -0.7809,4.66556 -1.11174,-0.0991 -0.0382,0.61656 -0.17333,0.88713 -0.98847,-0.11843 -0.49984,3.5943 -1.92906,-0.305 -0.77198,3.945 -0.2817,1.719 -0.312,2.266 -1.23219,7.26384 -0.76106,4.71916 -1.30862,-1.214 -0.18542,-0.548 -0.71493,-2.064 -1.31933,-2.587 -0.77198,-0.763 0.60439,-3.632 1.69551,-9.957 0.46533,-0.642 0.95562,-5.907 -2.94887,-0.49 -1.09111,-1.519 -0.62757,-1.118 -0.74703,-0.802 -0.58656,-0.433 -0.62757,-0.371 2.44253,-0.417 3.43203,-2.179 0.93957,-0.859 0.21573,-1.519 0.56338,-0.924 1.06972,-1.366 0.70602,-0.256 2.31417,0.247 1.54396,0.257"},"30057":{"name":"Madison, MT","path":"m 263.82014,111.04114 0.0892,0.03 0.31378,-0.02 0.5206,-0.387 0.46711,-0.866 0.0874,-0.442 0.18542,-0.17 0.39401,-0.135 1.03585,-0.07 1.37459,0.346 1.77574,1.246 0.0731,0.119 -0.025,0.25 0.62757,0.371 0.58656,0.433 0.74703,0.802 0.62757,1.118 1.09111,1.519 2.94887,0.49 -0.95562,5.907 -0.46533,0.642 -1.69551,9.957 -0.60439,3.632 -1.83101,0.69 -4.84584,-0.795 0.27456,-1.639 -1.94511,-0.321 -2.61903,-0.515 0.0516,-0.94913 -1.51537,-0.30387 -0.0392,-2.017 0.33696,-1.986 -2.29812,-0.401 0.10273,-1.94913 -1.72514,-0.38987 1.02872,-5.921 0.0624,-1.022 -0.4582,-1.221 -0.48851,-0.144 -0.43502,0.1 -0.26386,0.144 -0.29774,-0.04 -0.47425,-0.346 -0.80407,-1.037 -0.0392,-0.12 0.007,-1.164 0.64183,-2.027 1.55288,-0.594 0.7702,-0.337 0.39402,-0.289 0.19255,-0.185 1.1339,-0.619 4.33059,0.619"},"30007":{"name":"Broadwater, MT","path":"m 273.31036,93.556143 2.37835,0.09 0.59369,-3.522 0.62044,-0.754 0.0874,-0.05 0.26565,-0.05 1.32645,0.667 0.72784,2.554367 1.35892,1.134425 -0.59535,2.111079 1.25846,1.085564 0.27239,1.756093 1.52158,-0.329329 1.40324,1.563928 -1.98884,2.2739 0.65383,0.77507 0.14463,1.0719 -1.54396,-0.256 -2.31417,-0.248 -0.70602,0.256 -1.06972,1.366 -0.56338,0.924 -0.21573,1.519 -0.93957,0.859 -3.43203,2.179 0.80408,-4.894 -1.96116,-0.337 1.91302,-11.747997"},"30043":{"name":"Jefferson, MT","path":"m 264.53507,95.500143 0.6044,0.233 0.59369,-0.137 1.03763,-0.514 0.0392,-0.06 -0.0481,-0.369 2.52104,-0.337444 0.24241,-1.405556 3.78503,0.643 -1.91302,11.747997 1.96116,0.337 -0.80408,4.894 -2.44253,0.417 0.025,-0.25 -0.0731,-0.119 -1.77574,-1.247 -1.37459,-0.345 -1.03585,0.07 -0.39401,0.135 -0.18542,0.169 -0.0874,0.443 -0.46711,0.866 -0.5206,0.387 -0.31378,0.02 -0.0892,-0.03 -2.72422,-2.257 -0.45642,-1.047 0.15155,-4.796 0.007,-0.442 -0.83439,-2.064 -0.5723,-0.193 0.63649,-1.914997 0.009,-0.577 0.0624,-0.346 0.58657,-0.489 2.46749,-0.772 1.38172,-0.643"},"30093":{"name":"Silver Bow, MT","path":"m 259.39149,100.24214 0.5723,0.193 0.83439,2.064 -0.007,0.442 -0.15155,4.796 0.45642,1.047 2.72422,2.257 -4.33059,-0.619 -1.1339,0.619 -0.19255,0.185 -0.39402,0.289 -0.7702,0.337 -1.55288,0.594 -0.67392,-2.257 -0.54734,-1.086 -0.56161,-0.546 -2.56377,-1.333 -1.0198,-1.23 1.03585,-0.104 0.7078,-0.346 0.93244,-0.586 0.18542,-0.177 -0.0297,-1.26697 0.82482,0.086 0.79516,-1.181 1.26152,0.14801 0.26462,-1.91701 1.95224,-0.02 1.38172,-0.392"},"30023":{"name":"Deer Lodge, MT","path":"m 260.02798,98.327143 -0.63649,1.914997 -1.38172,0.392 -1.95224,0.02 -0.26462,1.91701 -1.26152,-0.14801 -0.79516,1.181 -0.82482,-0.086 0.0297,1.26697 -0.18542,0.177 -0.93244,0.586 -0.7078,0.346 -1.03585,0.104 0.0161,-0.266 -0.15154,-0.239 -0.11233,-0.05 -1.11786,-0.275 -0.60261,0.131 -2.25889,1.083 -0.27278,0.33 -0.64383,0.7117 -0.51325,-1.3777 -0.10519,-1.215 -0.40115,-1.72 -0.0802,-0.143 -0.0642,0 -0.1765,0.02 -0.0161,-0.03 1.36568,-0.707 1.36568,-0.352 1.30709,-0.66603 0.4526,-2.018967 0.36192,-1.961 3.89736,0.699 0.1765,-0.979 7.52193,1.364"},"30001":{"name":"Beaverhead, MT","path":"m 243.59527,102.98114 0.1765,-0.02 0.0642,0 0.0802,0.143 0.40115,1.72 0.10519,1.215 0.51325,1.3777 0.64383,-0.7117 0.27278,-0.329 2.25889,-1.084 0.60261,-0.131 1.11786,0.275 0.11233,0.05 0.15154,0.239 -0.0161,0.266 1.0198,1.23 2.56377,1.333 0.56161,0.546 0.54734,1.086 0.67392,2.257 -0.64183,2.027 -0.007,1.164 0.0392,0.12 0.80407,1.037 0.47425,0.346 0.29774,0.04 0.26386,-0.144 0.43502,-0.1 0.48851,0.144 0.4582,1.221 -0.0624,1.022 -1.02872,5.921 1.72516,0.38597 -0.10275,1.95303 2.29812,0.401 -0.33696,1.986 0.0392,2.017 1.51539,0.30003 -0.0517,0.95297 2.61903,0.515 1.94511,0.321 -0.27456,1.639 4.84584,0.795 -2.77949,3.191 -2.08952,-0.06 -3.23948,-0.923 -4.475,-0.459 -2.44253,0.917 -5.74619,-1.43 -1.08399,0.257 -0.6347,0.674 -0.23356,0.362 -0.19255,0.859 -0.009,0.06 -0.16046,0.25 -0.32983,0.183 -0.41719,-0.151 -1.30863,-1.464 -0.44393,-0.642 -0.19077,-1.086 0.0232,-2.868 0.0642,-0.05 0.0963,-0.177 0,-0.176 -0.46712,-2.001 -0.35122,-1.102 -0.30666,-0.474 -0.68283,-0.763 -0.57052,-0.449 -0.54734,0.135 -2.66718,-3.712 -2.51563,-9.353 -0.0232,-1.8 0.041,-1.366 0.2086,-0.378 0.0143,-0.683 -0.18364,-1.824 -0.0891,-0.288 -1.55823,-2.202 -0.32983,-0.346 0.32983,0.02 0.5313,-0.09 5.08653,-2.25 1.00375,-0.53 0.57052,-0.403 0.50634,-0.948"},"30081":{"name":"Ravalli, MT","path":"m 241.77139,85.778143 -0.8843,2.899 0.24068,3.713 0.0553,2.266 -0.81834,2.09 0.0963,3.068 1.166,2.178997 0.97166,0.804 0.98058,0.151 0.0161,0.03 -0.50634,0.948 -0.57052,0.403 -1.00375,0.53 -5.08653,2.249 -0.5313,0.09 -0.32983,-0.02 -1.41381,0.811 -1.98434,1.736 -3.15033,1.446 -0.65966,-0.103 0,0 -0.14441,-0.562 -1.18026,-1.865 -0.20147,-0.09 -0.6347,-0.16 -0.7078,-0.1 -0.0481,-0.06 0.0161,-0.08 0.28169,-1.558 0.56161,-3.077 4.48391,-11.185997 1.40669,-3.125 0.93957,-2.163 0.55626,-1.574 0.0963,-0.507 -0.0571,-0.265 -0.0874,-0.09 8.13167,1.174"},"30039":{"name":"Granite, MT","path":"m 250.67504,83.455143 1.44699,1.393104 0.5213,1.321896 0.4582,0.492 0.89856,-0.226 0.24247,-0.113 0.16046,0.05 -1.01267,5.779 -0.8843,4.813 -0.1765,0.979 -3.89736,-0.699 -0.36192,1.961 -0.4526,2.018967 -1.30709,0.66603 -1.36568,0.352 -1.36568,0.707 -0.98058,-0.151 -0.97166,-0.804 -1.166,-2.178997 -0.0963,-3.068 0.81834,-2.09 -0.0553,-2.266 -0.24068,-3.713 0.8843,-2.899 0.52238,0.16 1.96829,0.369 0.29319,-1.089574 1.78855,0.334574 0.43562,-0.769141 0.79165,0.01414 0.21929,-1.189 1.02088,0.154641 0.0952,-0.628641 1.76861,0.321"},"30049":{"name":"Lewis and Clark, MT","path":"m 260.18844,59.131143 0.21751,4.363 -0.15333,1.679 0.0642,0.218 0.52238,1.182 0.50634,0.795 0.5616,0.314 0.12124,0.02 1.81496,-0.241 1.76861,-0.369 0.0802,0.02 1.75256,1.446 0.12836,0.474 -0.0802,0.112 -0.016,0.514 0.0232,0.05 1.73651,1.237 1.03585,0.385 1.61706,0.225 0.99484,-0.05 -1.20522,7.295 1.45482,1.432 0.5937,0.506 0.33875,0.04 0.0553,-0.08 1.28545,0.209 -0.82012,4.855 2.05922,0.353 0.48405,0.956 -0.62035,0.956 1.94343,1.192657 0.12906,0.719343 -1.32645,-0.667 -0.26565,0.05 -0.0874,0.05 -0.62044,0.754 -0.59369,3.521 -2.37835,-0.09 -3.78503,-0.643 -0.24241,1.405556 -2.52104,0.337444 0.0481,0.369 -0.0392,0.06 -1.03763,0.514 -0.59369,0.137 -0.6044,-0.233 0.2086,-0.651 0.66679,-3.263 -0.19968,-1.437 -1.28616,-0.108548 0.13799,-1.105452 -1.95402,-0.314 0.54021,-3.061 -2.07526,-0.353 -0.17651,0.02 -1.81674,-0.33 1.32645,-7.48 0.0481,-0.305 -3.92053,-0.699 -0.13728,-0.08 1.24622,-6.911 -0.28169,0 -0.43324,-1.784 -0.15332,-0.924 0.18541,-2.853 0.0392,-0.176 1.88633,-0.367374 0.31551,-2.847626 0.82725,-0.875 0.65967,-0.467"},"30077":{"name":"Powell, MT","path":"m 251.33292,65.720143 4.94212,0.997 0.15332,0.924 0.43324,1.784 0.28169,0 -1.24622,6.911 0.13728,0.08 3.92053,0.699 -0.0481,0.305 -1.32645,7.48 1.81674,0.33 0.17651,-0.02 2.07526,0.353 -0.54021,3.061 1.95402,0.314 -0.13799,1.105452 1.28616,0.108548 0.19968,1.437 -0.66679,3.263 -0.2086,0.651 -1.38172,0.643 -2.46749,0.772 -0.58657,0.489 -0.0624,0.346 -0.009,0.577 -7.52193,-1.364 0.8843,-4.813 1.01267,-5.779 -0.16046,-0.05 -0.24247,0.113 -0.89856,0.226 -0.4582,-0.492 -0.5213,-1.321896 -1.44699,-1.393104 1.43699,-7.818 -2.53167,-0.451 1.75256,-9.466"},"30047":{"name":"Lake, MT","path":"m 248.75489,65.246143 -4.83871,-0.932 0.51347,7.682 0.0321,0.137 -0.37797,1.953 -1.91837,0.65 -3.93122,-0.756 0.20146,-0.98 0.50633,-3.953 -1.31754,-0.257 -0.37796,-0.169 -0.12837,-0.144 -0.33696,-0.628 0.39401,-1.1 0.36192,-0.57 0.0802,-0.02 0.12837,0.07 0.37618,-0.555 0.0571,-2.307 -0.0874,-0.128 -0.33875,-0.152 -0.96453,-0.185 -2.61904,-0.515 0.31379,-3.302 0.19968,-0.972 1.94511,0.385 0.37797,-1.913 -0.0232,-0.683 0.18364,-1.301 6.92645,1.333 0.0891,-0.616 -0.0321,-0.17 -0.0731,-0.1 -0.11054,-0.02 -0.025,-0.537 0.29596,-0.274 0.40293,-0.257 2.16797,0.433 2.62795,4.122 0.0321,0.122 0.25851,3.961 -0.016,0.563 -0.0731,0.353 -0.88252,1.728"},"30063":{"name":"Missoula, MT","path":"m 248.75489,65.246143 2.57803,0.474 -1.75256,9.466 2.53167,0.451 -1.43699,7.818 -1.76861,-0.321 -0.0952,0.628641 -1.02088,-0.154641 -0.21929,1.189 -0.79165,-0.01414 -0.43561,0.769141 -1.78855,-0.334574 -0.2932,1.089574 -1.96829,-0.369 -0.52238,-0.16 -8.13167,-1.173 -0.0731,-0.07 -0.28169,-0.233 -0.82725,-0.112 -0.41006,0.08 -0.24961,0.1 -0.36192,0.1 -1.71155,-0.36 -0.0321,-0.03 -0.86826,-2.177 0.12123,-0.627 1.93928,0.188964 0.22334,-2.228964 1.67947,-3.312 0.22306,-1.292984 -0.23673,-0.05025 -0.23673,-0.05025 -0.23672,-0.05025 -0.23673,-0.05025 -0.38689,-1.227248 -1.01088,-1.071252 0.12009,-1.461241 -1.51786,-0.837259 0.11945,-0.634 1.73652,0.208 0.87539,0.378 1.12499,0.626 1.83101,1.358 0.50812,0.516 0.28882,0.795 0.81121,0.82 0.23355,0.16 0.32983,0.122 1.10717,-0.195 3.93122,0.756 1.91837,-0.65 0.37797,-1.953 -0.0321,-0.137 -0.51347,-7.682 4.83871,0.932"},"30061":{"name":"Mineral, MT","path":"m 216.15333,60.393143 0.55447,0.965 0.35301,0.408 0.75594,0.258 0.62757,0.209 2.08774,0.362 0.5313,-0.137 0.12836,0.02 1.71869,0.314 0.48316,0.24 3.08436,2.17 0.67571,0.587 0.0642,0.515 -0.27991,1.373 1.75969,1.383 0.68997,0.136 -0.11945,0.634 1.51786,0.837259 -0.12009,1.461241 1.01088,1.071252 0.38689,1.227248 0.23673,0.05025 0.23672,0.05025 0.23673,0.05025 0.23673,0.05025 -0.22306,1.292984 -1.67947,3.312 -0.22334,2.228964 -1.93928,-0.188964 -0.12123,0.627 -0.68997,0 -0.10341,-0.03 -0.22464,-0.06 -2.31595,-3.093 -0.0713,-0.195 0,-0.01 -0.30666,-2.323 -0.40114,-0.74 -0.73989,-1.382 -1.30863,-3.054 -1.39777,-3.148 -0.26565,-0.194 -1.22126,-0.489 -0.8433,-0.41 -0.26565,-0.234 -0.33696,-0.288 -2.46036,-3.4 -0.0161,-0.569 0,-0.02 0.29774,-1.849"},"30089":{"name":"Sanders, MT","path":"m 214.61828,44.073143 1.61528,1.084 0.89144,-0.266 1.77573,-0.779 1.25514,2.564 0.87539,4.685 0.83617,1.157 0.16046,0.129 2.79554,1.133 1.56714,-0.354 0.75415,-0.876 0.16225,-1.23 2.18579,0.451 0.26387,0.392 -0.5937,2.91 1.96116,0.394 1.31754,0.225 2.61904,0.499 -0.37797,1.92 -0.19968,0.972 -0.31379,3.302 2.61904,0.515 0.96453,0.185 0.33875,0.152 0.0874,0.128 -0.0571,2.307 -0.37618,0.555 -0.12837,-0.07 -0.0802,0.02 -0.36192,0.57 -0.39401,1.1 0.33696,0.628 0.12837,0.144 0.37796,0.17 1.31754,0.256 -0.50633,3.953 -0.20146,0.98 -1.10717,0.195 -0.32983,-0.121 -0.23355,-0.161 -0.81121,-0.82 -0.28882,-0.795 -0.50812,-0.515 -1.83101,-1.359 -1.12499,-0.626 -0.87539,-0.378 -1.73652,-0.208 -0.68997,-0.136 -1.75969,-1.383 0.27991,-1.373 -0.0642,-0.515 -0.67571,-0.587 -3.08436,-2.17 -0.48316,-0.24 -1.71869,-0.314 -0.12836,-0.02 -0.5313,0.137 -2.08774,-0.362 -0.62757,-0.209 -0.75594,-0.258 -0.35301,-0.408 -0.55447,-0.965 0.44215,-1.005 0.52238,-1.325 0.007,-1.287 0,-0.09 -0.007,-0.03 -0.025,-0.06 -0.0232,-0.08 -3.09328,-6.301 -0.47425,-0.843 1.11608,-5.311"},"30053":{"name":"Lincoln, MT","path":"m 215.99287,37.685143 2.37122,-11.097 11.96484,2.546 6.63584,1.327 1.22127,0.24 -0.0232,3.167 0.66679,2.66 0,0.06 -0.81833,1.993 -3.77077,-0.749 -0.0553,1.304 0.25673,0.715 -1.52614,7.753 -2.26602,-0.458 -0.35301,-0.06 -0.40293,1.936 -0.40115,2.749 -2.18579,-0.451 -0.16225,1.23 -0.75415,0.876 -1.56714,0.354 -2.79554,-1.133 -0.16046,-0.129 -0.83617,-1.157 -0.87539,-4.685 -1.25514,-2.564 -1.77573,0.779 -0.89144,0.266 -1.61528,-1.084 1.37459,-6.388"},"30029":{"name":"Flathead, MT","path":"m 248.09523,32.670143 0.27991,3.929 0.63648,0.449 3.12661,-0.06613 0.15031,2.414126 -0.61773,3.328913 3.59869,1.758087 -0.0802,0.36 -0.10341,0.242 -0.37797,1.309 1.32215,1.299975 0.86744,0.349213 0.20604,0.8866 -1.40613,0.349212 0.37618,0.845 1.33537,2.385 -0.14441,0.949 0.0392,0.128 1.40669,0.965 0.0963,0.06 0.11232,0.04 1.34963,0.417 0.15333,-0.03 1.16468,2.747738 0.21031,1.704569 -1.60854,-0.362307 -0.65967,0.467 -0.82725,0.875 -0.31551,2.847626 -1.88633,0.367374 -0.0392,0.176 -0.18541,2.853 -4.94212,-0.997 -2.57803,-0.474 0.88252,-1.727 0.0731,-0.353 0.016,-0.564 -0.25851,-3.961 -0.0321,-0.122 -2.62795,-4.122 -2.16797,-0.433 -0.40293,0.257 -0.29596,0.274 0.025,0.537 0.11054,0.02 0.0731,0.1 0.0321,0.17 -0.0891,0.616 -6.92645,-1.333 -0.18364,1.301 0.0232,0.683 -0.37797,1.913 -1.94511,-0.385 0.37797,-1.92 -2.61904,-0.499 -1.31754,-0.225 -1.96116,-0.394 0.5937,-2.91 -0.26387,-0.392 0.40115,-2.749 0.40293,-1.936 0.35301,0.06 2.26602,0.458 1.52614,-7.753 -0.25673,-0.715 0.0553,-1.304 3.77077,0.749 0.81833,-1.993 0,-0.06 -0.66679,-2.66 0.0232,-3.167 9.90919,1.969"},"30035":{"name":"Glacier, MT","path":"m 274.48349,49.537143 -0.41719,-0.169 -0.57052,-0.145 -4.95816,-0.859 -0.68463,3.824 -0.0642,0.06 -11.71524,-2.12 -0.37618,-0.845 1.40613,-0.349212 -0.20604,-0.8866 -0.86744,-0.349213 -1.32215,-1.299975 0.37797,-1.309 0.10341,-0.242 0.0802,-0.36 -3.59869,-1.758087 0.61773,-3.328913 -0.15031,-2.414126 -3.12661,0.06613 -0.63648,-0.449 -0.27991,-3.929 1.478,0.288 4.17013,0.829 8.68614,1.591 1.60815,0.281 12.31785,2.186 -1.87201,11.692"},"30051":{"name":"Liberty, MT","path":"m 290.29754,40.184143 7.97835,1.261 -0.41006,1.872 -1.20522,7.811 -0.5937,3.221 -0.71493,4.566 -1.0929,-0.169 -0.30487,1.943 -8.92861,-1.405 0.3227,-1.961 2.05565,0.33 1.25335,-7.802 1.3425,-7.788 0.29774,-1.879"},"30101":{"name":"Toole, MT","path":"m 274.48349,49.537143 1.87201,-11.692 5.12753,0.876 1.39064,0.24 3.83139,0.635 3.59248,0.588 -0.29774,1.879 -1.3425,7.788 -1.25335,7.802 -2.05565,-0.33 -3.9455,-0.651 0.49743,-2.924 -1.92811,-0.197137 0.0561,-0.775863 -1.43877,-0.587 -1.478,-0.281 0.19345,-0.846312 -2.70017,-1.259688 -0.12123,-0.264"},"30073":{"name":"Pondera, MT","path":"m 256.07357,50.124143 11.71524,2.12 0.0642,-0.06 0.68463,-3.824 4.95816,0.859 0.57052,0.145 0.41719,0.169 0.12123,0.264 2.70017,1.259688 -0.19345,0.846312 1.478,0.281 1.43877,0.587 -0.0561,0.775863 1.92811,0.197137 -0.49743,2.924 3.9455,0.651 -0.3227,1.961 -0.52238,3.263 -8.8466,-1.416 0.16045,-0.923 -0.56005,-0.138525 0.14269,-0.965275 -2.33756,-0.593237 0.18403,-1.171963 -12.82419,-2.298 -0.15333,0.03 -1.34963,-0.417 -0.11232,-0.04 -0.0963,-0.06 -1.40669,-0.965 -0.0392,-0.128 0.14441,-0.949 -1.33537,-2.385"},"30099":{"name":"Teton, MT","path":"m 260.42199,55.041143 12.82419,2.298 -0.18403,1.171963 2.33756,0.593237 -0.14268,0.965275 0.56004,0.138525 -0.16045,0.923 8.8466,1.416 -1.07686,6.509 -3.97758,-0.652 -0.32092,1.954 -3.95262,-0.669 -0.7078,2.323 -1.58319,-0.506 -0.99484,0.05 -1.61706,-0.225 -1.03585,-0.385 -1.73651,-1.237 -0.0232,-0.05 0.016,-0.514 0.0802,-0.112 -0.12836,-0.474 -1.75256,-1.446 -0.0802,-0.02 -1.76861,0.369 -1.81496,0.241 -0.12124,-0.02 -0.5616,-0.314 -0.50634,-0.795 -0.52238,-1.182 -0.0642,-0.218 0.15333,-1.679 -0.21751,-4.363 1.60854,0.362307 -0.21031,-1.704569 -1.16468,-2.747738"},"30013":{"name":"Cascade, MT","path":"m 272.88425,71.506143 1.58319,0.506 0.7078,-2.323 3.95262,0.669 0.32092,-1.954 3.97758,0.652 6.67863,1.059 -0.52951,0.667 -0.32983,0.33 -0.53843,0.811 -0.0963,0.275 0.0713,0.183 1.6125,1.620907 2.31521,1.061949 -0.19973,1.263144 1.90411,0.98 -0.19255,1.295 -1.98434,-0.314 -0.51346,1.116 -0.20147,1.303 -0.29774,3.52 1.97721,0.313 -0.4582,3.905 -0.30487,1.961 -0.30665,0.266 -1.73666,-0.611286 0.23548,-1.005714 -2.0093,-2.562 -0.16045,-0.138 -2.53981,-0.705729 0.37897,-1.021271 -1.50911,-0.417207 -0.32584,1.239392 -5.54257,-0.992185 -0.32983,1.961 -1.84705,-0.304 -2.05922,-0.353 0.82012,-4.855 -1.28545,-0.209 -0.0553,0.08 -0.33875,-0.04 -0.5937,-0.506 -1.45482,-1.432 1.20522,-7.295"},"30059":{"name":"Meagher, MT","path":"m 276.64611,86.115143 1.84705,0.304 0.32983,-1.961 5.54257,0.992185 0.32583,-1.239392 1.50912,0.417207 -0.37897,1.021271 2.53981,0.705729 0.16045,0.138 2.0093,2.562 -0.23548,1.005714 1.73666,0.611286 -0.0232,0.513 0.0642,0.257 0.12837,0.273 0.16046,0.217 2.33912,2.452 1.42986,0.02 1.45483,-0.266 -0.65967,4.34 -0.65788,3.486997 -0.4992,3.264 -0.11945,0.819 -7.91594,-1.407 -4.39478,-0.708 -0.14463,-1.0719 -0.65383,-0.77507 1.98884,-2.2739 -1.40324,-1.563928 -1.52158,0.329329 -0.27239,-1.756093 -1.25846,-1.085564 0.59535,-2.111079 -1.35892,-1.134425 -0.72784,-2.554367 -0.12906,-0.719343 -1.94343,-1.192657 0.62035,-0.956 -0.48405,-0.956"},"30067":{"name":"Park, MT","path":"m 287.73378,104.64414 7.91594,1.407 -0.34588,1.125 -1.19809,7.914 1.14104,0.169 -0.57765,4.154 -0.79516,5.169 -0.25852,0.569 -0.59369,4.002 2.64399,0.417 4.25037,0.731 -0.55448,3.762 -3.66379,-0.57 -1.35142,-0.211 -1.81496,-0.09 -5.34326,-0.724 -0.041,0 -2.41935,-0.378 -0.70602,-0.242 -2.00038,-0.409 -2.70818,-0.419 0.312,-2.266 0.2817,-1.718 0.77198,-3.946 1.92906,0.305 0.49984,-3.5943 0.98847,0.11843 0.17333,-0.88713 0.0382,-0.61656 1.11174,0.0991 0.7809,-4.66556 0.33518,-2.016 0.25851,-1.656 0.11946,-1.189 0.53842,-3.215 0.2817,-1.125"},"30041":{"name":"Hill, MT","path":"m 298.27589,41.445143 19.00539,2.797 -0.58656,2.947 -0.37797,2.027 -0.6668,4.732 -1.0929,6.147 -0.74702,3.536 -0.98949,-0.09 -1.98434,-0.28 0.29774,-2.002 -1.77237,-0.198475 0.23019,-1.978525 -11.94166,-1.808 -0.30487,1.952 -1.99325,-0.312 0.71493,-4.566 0.5937,-3.221 1.20522,-7.811 0.41006,-1.872"},"30015":{"name":"Chouteau, MT","path":"m 295.35198,58.915143 1.99325,0.312 0.30487,-1.952 11.94166,1.808 -0.23019,1.978525 1.77237,0.198475 -0.29774,2.002 1.98434,0.28 0.98949,0.09 -1.34963,8.936 -0.62757,-0.289 -1.54397,0.08 -1.76682,0.337 -0.90035,0.754 0.009,0.524 -0.53842,2.241 -0.0481,0.105 -0.41719,0.314 -4.90289,1.79 -0.78803,-0.11 -6.62158,-1.006 -1.90411,-0.98 0.19973,-1.263144 -2.31521,-1.061949 -1.6125,-1.620907 -0.0713,-0.184 0.0963,-0.274 0.53843,-0.811 0.32983,-0.33 0.52951,-0.667 -6.67863,-1.059 1.07686,-6.509 0.52238,-3.263 8.92861,1.405 0.30487,-1.943 1.0929,0.169"},"30045":{"name":"Judith Basin, MT","path":"m 294.31435,77.307143 6.62158,1.006 -0.19968,1.299 1.28405,0.640614 -0.13589,0.798386 -0.13764,1.073157 1.91338,0.599843 0.0259,0.821757 1.87974,0.348443 -0.0799,0.6225 1.77389,0.188629 -0.93066,6.438671 -0.28583,0.718816 -0.43463,0.198027 -0.12628,0.944256 -0.87027,0.05147 1.33057,1.547928 -0.12881,1.1535 -1.15708,-0.162 -0.68997,-0.49 -0.9895,-0.779 -0.14441,-0.186 -0.32983,-0.233 -1.33359,-0.127 -0.79516,0 -2.7884,0.353 -1.45483,0.266 -1.42986,-0.02 -2.33912,-2.451 -0.16046,-0.218 -0.12837,-0.272 -0.0642,-0.257 0.0232,-0.514 0.30665,-0.265 0.30487,-1.961 0.4582,-3.905 -1.97721,-0.314 0.29774,-3.519 0.20147,-1.303 0.51346,-1.116 1.98434,0.313 0.19255,-1.294"},"30107":{"name":"Wheatland, MT","path":"m 305.81386,95.758143 5.60178,0.802 -0.42611,3.03 -1.31754,7.704997 -3.97758,-0.57 -9.92524,-1.493 0.4992,-3.264 0.65788,-3.486997 0.65967,-4.34 2.7884,-0.353 0.79516,0 1.33359,0.127 0.32983,0.233 0.14441,0.186 0.9895,0.779 0.68997,0.49 1.15708,0.162"},"30097":{"name":"Sweet Grass, MT","path":"m 295.76917,105.23214 9.92524,1.493 -0.2817,1.977 0.91475,0.0401 -0.42446,2.0489 2.97205,0.442 -0.27278,1.245 -0.21518,1.35503 -0.9905,-0.13598 -0.19867,1.33748 -0.974,-0.15353 -0.52238,1.961 -0.53843,3.962 -1.96829,-0.282 -0.22584,1.00205 -1.89577,-0.31005 -0.22138,1.06519 -1.89132,-0.36619 -0.58657,3.954 -2.09843,-0.314 -0.60975,4.017 -2.64399,-0.417 0.59369,-4.002 0.25852,-0.569 0.79516,-5.169 0.57765,-4.154 -1.14104,-0.169 1.19809,-7.914 0.34588,-1.125 0.11945,-0.819"},"30009":{"name":"Carbon, MT","path":"m 316.66262,122.37114 0.77912,-0.451 0.27278,-0.05 -0.0874,0.586 -0.16938,0.321 -0.12836,0.202 -0.0642,0.01 0.44216,1.553 0.81833,1.478 0.85221,0.112 -0.69175,0.626 -0.53843,1.872 -0.40114,2.999 9.20852,1.148 -0.1355,0.298 -2.47462,4.492 -6.00292,-0.813 -4.99026,-0.659 -2.13053,-0.289 -0.32804,-0.05 -2.98988,-0.547 -8.54173,-1.157 0.55448,-3.762 1.7276,0.259 0.68284,-2.083 0.99448,0.0509 0.51739,-1.52187 1.26762,-1.164 0.75594,-0.563 2.12161,-0.715 2.63508,0.378 1.19809,-1.196 0.10341,-0.756 0.54734,-0.555 2.05743,-0.483 0.16759,0.05 0.48316,0.339 0.36905,0.08 0.31379,0.04 0.80407,-0.09"},"30095":{"name":"Stillwater, MT","path":"m 316.98354,110.33314 -0.28169,1.881 -0.22465,2.049 -0.59369,6.341 0.24069,0.699 0.53842,1.068 -0.80407,0.09 -0.31379,-0.04 -0.36905,-0.08 -0.48316,-0.339 -0.16759,-0.05 -2.05743,0.483 -0.54734,0.555 -0.10341,0.756 -1.19809,1.196 -2.63508,-0.378 -2.12161,0.715 -0.75594,0.563 -1.26762,1.165 -0.51744,1.51033 -0.99443,-0.0403 -0.68284,2.083 -1.7276,-0.259 -4.25037,-0.731 0.60975,-4.016 2.09843,0.313 0.58657,-3.954 1.89132,0.36619 0.22138,-1.06519 1.89577,0.31005 0.22584,-1.00205 1.96829,0.282 0.53843,-3.962 0.52238,-1.961 0.974,0.15353 0.19867,-1.33748 0.9905,0.13598 0.21518,-1.35503 0.27278,-1.244 0.31557,-1.985 7.79292,1.084"},"30037":{"name":"Golden Valley, MT","path":"m 317.56297,96.102143 -0.39401,2.926 0.18363,1.028997 1.03763,2.202 1.33359,5.1 -0.44928,3.281 -2.29099,-0.307 -7.79292,-1.084 -0.31557,1.984 -2.97205,-0.442 0.42446,-2.0489 -0.91475,-0.0401 0.2817,-1.977 3.97758,0.57 1.31754,-7.704997 0.42611,-3.03 0.18542,-1.301 5.96191,0.843"},"30027":{"name":"Fergus, MT","path":"m 312.4604,72.567143 1.69551,0.675 1.83279,-0.604 0.41541,-0.28 4.6622,-0.06 0.25674,0.05 0.57051,0.369 0.57052,1.358 0.69889,0.45 0.34587,0.322 0.44929,0.642 0.0232,0.154 -0.0553,0.119 0.36192,0.653 1.2284,0.722 4.8387,1.865 0.16759,0.02 0.24961,-0.07 0.20859,-0.265 -0.57052,4.009 -0.26386,2.074 -0.35479,0.119 -3.93658,-0.49 -2.14479,0.547 -0.5313,1.913 -0.26564,1.953 2.00038,0.273 -0.82726,5.922 -0.57765,1.936 -5.94587,-0.836 -5.96191,-0.843 -0.18542,1.301 -5.60178,-0.802 0.12881,-1.1535 -1.33057,-1.547928 0.87027,-0.05147 0.12628,-0.944256 0.43463,-0.198027 0.28583,-0.718816 0.93066,-6.438671 -1.77389,-0.188629 0.0799,-0.6225 -1.87974,-0.348443 -0.0259,-0.821757 -1.91338,-0.599843 0.13764,-1.073157 0.13589,-0.798386 -1.28405,-0.640614 0.19968,-1.299 0.78803,0.11 4.90289,-1.79 0.41719,-0.313 0.0481,-0.106 0.53842,-2.241 -0.009,-0.524 0.90035,-0.754 1.76682,-0.337 1.54397,-0.08 0.62757,0.289"},"30005":{"name":"Blaine, MT","path":"m 313.81003,63.631143 0.74702,-3.536 1.0929,-6.147 0.6668,-4.732 0.37797,-2.027 0.58656,-2.947 1.59923,0.225 4.90824,0.708 0.90927,0.135 0.0874,0 6.85513,0.924 0.8433,0.112 3.81713,0.497 -0.0802,0.635 -0.2086,1.294 -0.81299,3.825 -0.95679,-0.158667 -1.53298,6.755667 -0.61777,-0.168 -0.13015,0.33 -0.97166,4.692 -0.72385,5.488 -3.61566,0.788 -0.2086,-0.08 -3.35179,-0.434 -0.19968,1.172 -0.42611,3.079 -0.57052,-1.359 -0.57051,-0.369 -0.25674,-0.05 -4.6622,0.06 -0.41541,0.28 -1.83279,0.604 -1.69551,-0.675 1.34963,-8.936"},"30071":{"name":"Phillips, MT","path":"m 322.46408,74.070143 0.42611,-3.079 0.19968,-1.172 3.35179,0.433 0.2086,0.08 3.61566,-0.788 0.72385,-5.488 0.97166,-4.693 0.13015,-0.329 0.61776,0.168 1.53299,-6.755667 0.95679,0.158667 0.81299,-3.825 0.2086,-1.294 0.0802,-0.635 16.07079,1.985 -0.63471,1.913 -0.82725,6.942 -0.12196,2.134706 -1.96579,0.751838 -0.26265,1.989264 1.12022,0.145442 -0.41006,1.67375 -1.67055,-0.211 -0.8112,2.22 -1.06973,7.536 -0.49742,4.051 -0.17828,0.731 -0.30487,0.626 -0.0785,0.1 -0.10519,0.05 -0.77198,-0.121 -1.33359,-0.715 -0.18542,-0.06 -0.6347,-0.08 -0.94849,0.444 -0.68283,1.013 -0.56161,0.617 -1.8007,1.874 -0.66679,0.08 -0.0963,-0.03 0.10519,-0.845 -0.11232,-1.478 -0.0802,-0.417 -0.59548,-0.475 -0.13728,-0.07 -1.94332,-0.305 -0.50634,0.06 -0.65966,-0.02 -1.50296,-0.121 -0.35301,-0.07 -0.10519,-0.08 -0.20859,0.265 -0.24961,0.07 -0.16759,-0.02 -4.8387,-1.864 -1.2284,-0.722 -0.36192,-0.653 0.0553,-0.119 -0.0232,-0.154 -0.44929,-0.642 -0.34587,-0.322 -0.69889,-0.45"},"30069":{"name":"Petroleum, MT","path":"m 330.98085,78.682143 0.10519,0.08 0.35301,0.07 1.50296,0.122 0.65966,0.02 0.50634,-0.06 1.94332,0.305 0.13728,0.07 0.59548,0.475 0.0802,0.417 0.11232,1.478 -0.10519,0.845 -1.13212,2.081 -0.34588,2.307 -0.65074,8.445 0.007,0.136 0.0571,0.07 0.5313,0.538 0.0874,0.05 0.7381,2.298 -6.94249,-0.836 -1.75078,-0.128 -3.96154,-0.523 0.57765,-1.936 0.82726,-5.922 -2.00038,-0.273 0.26564,-1.953 0.5313,-1.913 2.14479,-0.547 3.93658,0.49 0.35479,-0.119 0.26386,-2.074 0.57052,-4.009"},"30065":{"name":"Musselshell, MT","path":"m 317.56297,96.102143 5.94587,0.836 3.96154,0.523 1.75078,0.128 6.94249,0.836 -0.007,6.002997 -0.29774,2.289 -2.31416,-0.29 -1.48513,1.166 -0.36192,0.619 -0.13729,1.005 -4.61228,-0.603 -1.41382,0.457 -0.31378,2.355 -5.94587,-0.786 0.44928,-3.281 -1.33359,-5.1 -1.03763,-2.202 -0.18363,-1.028997 0.39401,-2.926"},"30111":{"name":"Yellowstone, MT","path":"m 336.15652,104.42814 0.6347,0.409 0.29774,0.37 1.33359,2.837 1.50296,4.202 -0.40115,1.993 -0.36192,1.02 -2.58873,-0.321 -0.28317,1.3152 -1.84557,-0.2472 -0.15477,0.7364 -0.60117,-0.1564 -0.11232,0.643 -0.70602,0.53 -2.65291,-0.282 -0.67392,2.587 -0.78803,6.051 -4.122,0.804 -2.05743,-0.273 -3.19847,-0.506 -0.85221,-0.112 -0.81833,-1.478 -0.44216,-1.553 0.0642,-0.01 0.12836,-0.202 0.16938,-0.321 0.0874,-0.586 -0.27278,0.05 -0.77912,0.451 -0.53842,-1.068 -0.24069,-0.699 0.59369,-6.341 0.22465,-2.049 0.28169,-1.881 2.29099,0.307 5.94587,0.786 0.31378,-2.355 1.41382,-0.457 4.61228,0.603 0.13729,-1.005 0.36192,-0.619 1.48513,-1.166 2.31416,0.29 0.29774,-2.289"},"30003":{"name":"Big Horn, MT","path":"m 347.82362,120.28914 -0.10519,0.877 0.0321,3.416 1.03763,0.289 1.54218,0.183 0.3227,0.122 -0.82725,7.336 -0.3375,0.0127 -0.22589,1.2403 -0.50634,2.603 3.95263,0.548 2.00216,0.176 1.92907,0.154 -0.20147,4.282 -10.10887,-1.182 -3.10219,-0.378 -0.85935,-0.177 -7.65921,-0.939 -4.60352,-0.56442 -5.7603,-0.71258 2.47462,-4.492 0.1355,-0.298 -9.20852,-1.148 0.40114,-2.999 0.53843,-1.872 0.69175,-0.626 3.19847,0.506 2.05743,0.273 4.122,-0.804 0.78803,-6.051 0.67392,-2.587 2.65291,0.282 0.70602,-0.53 0.11232,-0.643 0.60117,0.1564 0.15477,-0.7364 1.84557,0.2472 0.28317,-1.3152 2.58873,0.321 1.38173,0.17 -0.24069,1.968 3.95975,0.474 0.73989,1.086 1.01267,1.123 1.80783,0.209"},"30103":{"name":"Treasure, MT","path":"m 336.79122,104.83714 8.9197,1.069 -0.2989,1.962 2.37951,0.288 -0.75052,5.76321 1.4815,0.29479 -0.69889,6.075 -1.80783,-0.209 -1.01267,-1.123 -0.73989,-1.086 -3.95975,-0.474 0.24069,-1.968 -1.38173,-0.17 0.36192,-1.02 0.40115,-1.993 -1.50296,-4.202 -1.33359,-2.837 -0.29774,-0.37"},"30087":{"name":"Rosebud, MT","path":"m 335.42555,96.127143 6.68576,0.827 0.312,-0.08 0.60439,0 0.53665,0.06 10.31033,1.206 0.56161,0.29 1.15886,0.241 8.21903,0.875 -0.57765,0.28 -0.74702,5.264997 -0.64361,2.603 -0.57052,5.32 -0.009,0.594 -0.36014,1.301 -0.48315,0.619 -0.86648,7.948 -0.67571,-0.06 -0.39401,3.735 -0.7078,4.14 -0.13337,2.14451 -0.57978,-0.0875 -0.4261,3.897 -1.92907,-0.153 -2.00216,-0.176 -3.95263,-0.548 0.50634,-2.603 0.22589,-1.2403 0.3375,-0.0127 0.82725,-7.337 -0.3227,-0.121 -1.54218,-0.183 -1.03763,-0.289 -0.0321,-3.416 0.10519,-0.877 0.69889,-6.075 -1.4815,-0.29479 0.75052,-5.76321 -2.37951,-0.288 0.2989,-1.962 -8.9197,-1.07 -0.6347,-0.408 0.007,-6.002997 -0.7381,-2.298"},"30033":{"name":"Garfield, MT","path":"m 361.36452,73.740143 0.93244,0.105 -0.46313,1.984476 1.7468,0.199524 -0.91225,7.910494 -0.78451,-0.03846 -0.15029,3.73297 1.99146,0.208 -0.41541,3.946 1.30863,0.144 -0.77198,7.296 -0.0321,0.322 -8.21903,-0.875 -1.15886,-0.241 -0.56161,-0.29 -10.31033,-1.206 -0.53665,-0.06 -0.60439,0 -0.312,0.08 -6.68576,-0.828 -0.0874,-0.05 -0.5313,-0.538 -0.0571,-0.07 -0.007,-0.136 0.65074,-8.445 0.34588,-2.307 1.13212,-2.081 0.0963,0.03 0.66679,-0.08 1.8007,-1.874 0.56161,-0.617 0.68283,-1.012 0.94849,-0.444 0.6347,0.08 0.18542,0.06 1.33359,0.715 0.77198,0.121 0.10519,-0.05 0.0785,-0.1 0.30487,-0.626 0.17828,-0.731 2.51563,0.997 3.39815,0.424 0.23356,0 1.46195,-0.05 0.38689,-0.05 0.27277,-0.08 3.95263,-2.138 2.65291,-3.528 0.78803,-0.177 0.48137,0.362"},"30019":{"name":"Daniels, MT","path":"m 368.62793,50.677143 16.07258,1.624 -0.19434,2 -0.27278,5.923 1.00376,0.105 -0.18542,1.961 -12.76,-1.262 -3.83212,-0.101208 1.12394,-6.142792 -1.99146,-0.208 0.21572,-1.962 0.47603,-0.627 0.34409,-1.31"},"30105":{"name":"Valley, MT","path":"m 368.62793,50.677143 -0.34409,1.31 -0.47603,0.627 -0.21572,1.962 1.99146,0.208 -1.12394,6.142792 3.83212,0.101208 -0.80407,7.795 -0.60083,-0.06 -0.4992,4.732 -1.18918,0.03 -4.74065,-1.021 -0.22464,-0.104 -0.39402,-0.41 -1.83279,-0.626 -0.10519,0.05 -0.0945,0.105 -0.21751,0.297 -0.21751,0.562 -0.007,1.375 -0.48137,-0.362 -0.78803,0.176 -2.65291,3.529 -3.95263,2.137 -0.27277,0.08 -0.38689,0.05 -1.46195,0.05 -0.23356,0 -3.39815,-0.425 -2.51563,-0.996 0.49742,-4.051 1.06973,-7.536 0.8112,-2.22 1.67055,0.211 0.41006,-1.67375 -1.12022,-0.145442 0.26265,-1.989264 1.96579,-0.751838 0.12196,-2.134706 0.82725,-6.943 0.63471,-1.913 16.2562,1.84"},"30055":{"name":"McCone, MT","path":"m 380.55177,73.249143 -0.12659,1.487 -0.28169,2.668 -0.64183,0.265 -0.16938,1.76 -2.00216,-0.193 -0.70799,6.259931 -0.64184,-0.161572 -0.68977,7.681641 -6.69468,-0.667 -0.19968,2.002 -0.67571,-0.06 -1.32645,-0.146 0.20859,-2 -1.98433,-0.209 -1.30863,-0.144 0.41541,-3.946 -1.99146,-0.208 0.15029,-3.73297 0.78451,0.03846 0.91225,-7.910494 -1.7468,-0.199524 0.46313,-1.984476 -0.93244,-0.105 0.007,-1.375 0.21751,-0.561 0.21751,-0.298 0.0945,-0.105 0.10519,-0.05 1.83279,0.626 0.39402,0.41 0.22464,0.104 4.74065,1.021 1.18918,-0.03 2.41044,-0.738 0.83616,-0.458 0.76307,-0.03 2.81159,0.04 1.14995,0.05 1.31754,0.257 0.87539,0.634"},"30079":{"name":"Prairie, MT","path":"m 364.61826,91.932143 1.98433,0.209 -0.20859,2 1.32645,0.146 0.67571,0.06 0.19968,-2.002 6.69468,0.667 1.27653,0.13 -0.46533,4.654 2.01643,0.19 -0.17722,1.341233 2.05636,0.179767 0.29774,0.344 0.28883,0.490997 -0.0553,0.538 6.68576,0.635 -0.41719,4.009 -0.0642,0.66 -1.98612,-0.185 -0.0874,0.987 -1.99325,-0.176 -0.41719,0.955 -1.73652,0.5 -4.03463,-0.402 -3.24661,-1.005 -0.55269,-0.731 -0.79516,-1.416 -0.26564,-2.023 -0.45107,-2.058 -3.32684,-0.986997 -3.99362,-0.419 0.77198,-7.296"},"30075":{"name":"Powder River, MT","path":"m 359.55669,123.48014 19.36375,2 -0.73098,7.884 -0.28882,2.056 -0.82725,-0.07 -0.77198,8.051 -1.14569,-0.10895 -11.96732,-1.20105 -1.15709,-0.06 -1.9302,-0.10008 -3.66266,-0.39692 0.20147,-4.282 0.4261,-3.898 0.57978,0.0875 0.13337,-2.14451 0.7078,-4.14 0.39401,-3.735 0.67571,0.06"},"30017":{"name":"Custer, MT","path":"m 363.84628,99.228143 3.99362,0.419 3.32684,0.986997 0.45107,2.058 0.26564,2.023 0.79516,1.416 0.55269,0.731 3.24661,1.005 4.03463,0.402 1.73652,-0.5 0.41719,-0.955 1.99325,0.176 -0.28169,2.981 -2.74027,-0.257 -0.22465,2.452 0.0161,0.948 0.16759,0.491 -0.38332,4.033 -0.85399,-0.08 -0.74703,7.988 -0.69175,-0.06 -19.36375,-2 0.86648,-7.948 0.48315,-0.619 0.36014,-1.301 0.009,-0.594 0.57052,-5.32 0.64361,-2.603 0.74702,-5.264997 0.57765,-0.28 0.0321,-0.322"},"30011":{"name":"Carter, MT","path":"m 381.21321,117.63814 4.122,0.394 1.75791,0.361 -0.26952,1.5801 1.14669,0.1639 1.13159,0.1502 -0.32752,1.8668 1.38173,0.185 2.70818,0.209 -0.16938,1.984 1.44591,0.128 -1.23731,15.326 -0.69888,4.917 -15.9032,-1.503 0.77198,-8.051 0.82725,0.07 0.28882,-2.056 0.73098,-7.884 0.69175,0.06 0.74703,-7.988 0.85399,0.08"},"30025":{"name":"Fallon, MT","path":"m 384.6595,106.99014 0.0874,-0.987 1.98612,0.185 0.0642,-0.66 2.98809,0.264 0.98058,0.419 -0.0571,0.667 4.88684,0.417 -0.19255,2.3 -0.51525,5.955 -0.64183,7.657 -0.10519,1.453 -1.44591,-0.128 0.16938,-1.984 -2.70818,-0.209 -1.38173,-0.185 0.32752,-1.8668 -1.13159,-0.1502 -1.14669,-0.1639 0.26952,-1.5801 -1.75791,-0.361 -4.122,-0.394 0.38332,-4.033 -0.16759,-0.491 -0.0161,-0.948 0.22465,-2.452 2.74027,0.257 0.28169,-2.981"},"30109":{"name":"Wibaux, MT","path":"m 397.06649,90.060143 -0.13728,1.535 -1.33359,15.699997 -4.88684,-0.417 0.0571,-0.667 -0.98058,-0.419 -2.98809,-0.264 0.41719,-4.009 1.6866,0.151 1.0608,-0.569 0.36193,-0.297 1.53505,-2.201997 0.41897,-0.802 0.15155,-1.826 -0.0392,-1.334 -0.041,-0.337 -0.12837,-0.508 -1.67572,-2.349748 0.55786,-0.920252 4.52493,0.411 0.0874,-0.997 1.35141,0.121"},"30021":{"name":"Dawson, MT","path":"m 379.33228,79.429143 -0.20146,1.977 4.00076,0.385 -0.19968,1.984 6.00292,0.564 -0.22099,1.80392 1.29785,0.28508 -0.36193,3.969 1.45304,0.128 -0.55786,0.920252 1.67572,2.349748 0.12837,0.508 0.041,0.337 0.0392,1.334 -0.15155,1.826 -0.41897,0.802 -1.53505,2.201997 -0.36193,0.297 -1.0608,0.569 -1.6866,-0.151 -6.68576,-0.635 0.0553,-0.539 -0.28883,-0.489997 -0.29774,-0.344 -2.05636,-0.179767 0.17722,-1.341233 -2.01643,-0.19 0.46533,-4.654 -1.27653,-0.13 0.68977,-7.681641 0.64184,0.161572 0.70799,-6.259931 2.00216,0.193"},"30083":{"name":"Richland, MT","path":"m 398.23071,76.448143 -1.16422,13.612 -1.35141,-0.121 -0.0874,0.997 -4.52493,-0.411 -1.45304,-0.128 0.36193,-3.969 -1.29785,-0.28508 0.22099,-1.80392 -6.00292,-0.564 0.19968,-1.984 -4.00076,-0.385 0.20146,-1.977 0.16938,-1.76 0.64183,-0.265 0.28169,-2.668 0.12659,-1.487 1.14995,0.225 1.88806,0 0.32983,-0.168 0.49742,-0.377 0.41006,-0.546 0.90926,-0.369 6.50748,1.638 3.03801,1.767 2.94887,1.022"},"37043":{"name":"Clay, NC","path":"m 751.68289,363.42214 1.6824,-0.0555 3.52536,3.15652 -1.21592,0.194 -7.17248,1.045 -1.28011,0.167 1.73375,-3.04809 2.727,-1.45891"},"37113":{"name":"Macon, NC","path":"m 758.52911,358.43214 5.29512,7 -6.93358,1.091 -3.52536,-3.15652 -1.6824,0.0555 0.3851,-2.209 0.32091,-0.765 0.13015,-0.09 3.9758,-1.228 2.03426,-0.699"},"37175":{"name":"Transylvania, NC","path":"m 769.21028,354.82314 2.40866,2.145 0.51346,0.589 0.2086,0.657 0.12123,0.844 0.44394,1.342 0.1355,0.227 0.24068,0.126 -3.29474,2.25 -2.41757,0.619 -1.96116,0.947 -0.42428,-0.96678 1.2034,-5.32322 2.00869,-0.99465 0.81359,-2.46135"},"37099":{"name":"Jackson, NC","path":"m 760.79513,353.84314 5.59287,4.436 -1.2034,5.32322 0.42428,0.96678 -1.78465,0.863 -5.29512,-7 -0.36947,-3.18372 2.63549,-1.40528"},"37087":{"name":"Haywood, NC","path":"m 764.00252,346.87014 1.831,2.457 0.46884,1.23569 0.88619,-0.12109 1.1271,1.09193 -0.0903,2.59578 0.98491,0.69369 -0.81359,2.46135 -2.00869,0.99465 -5.59287,-4.436 -1.82566,-3.992 -0.0802,-0.437 5.11327,-2.544"},"37173":{"name":"Swain, NC","path":"m 758.96947,349.85114 1.82566,3.992 -2.63549,1.40528 0.36947,3.18372 -2.03426,0.699 -3.9758,1.228 -0.13015,0.09 -0.33696,-0.379 -0.007,-0.223 0.12836,-0.41 0.0981,-0.122 0.32983,-0.199 0.43146,-0.178 0.25851,-0.145 0.3851,-0.891 0.0874,-0.571 -0.016,-0.249 -0.0802,-0.427 -1.05189,-0.07 -5.80146,0.351 5.02056,-3.18 0.0891,0 0.33697,0 2.62616,-0.271 0.22643,-0.146 3.18955,-2.525 0.66679,-0.977"},"37075":{"name":"Graham, NC","path":"m 746.81387,356.93414 5.80146,-0.351 1.05189,0.07 0.0802,0.427 0.016,0.249 -0.0874,0.571 -0.3851,0.891 -0.25851,0.145 -0.43146,0.178 -0.32983,0.199 -0.0981,0.122 -0.12836,0.41 0.007,0.223 0.33696,0.379 -0.32091,0.765 -3.38211,0.738 -1.2694,0.594 -0.18007,0 -0.67393,-0.28 -0.65609,-1.262 0.75415,-4.122 0.15333,0.05"},"37039":{"name":"Cherokee, NC","path":"m 752.06799,361.21314 -0.3851,2.209 -2.727,1.45891 -1.73375,3.04809 -2.30346,0.289 -3.57822,0.419 -0.0695,-5.079 1.51543,-1.334 1.98077,-0.05 0.70424,-0.579 0.43502,-0.594 0.65609,1.262 0.67393,0.28 0.18007,0 1.2694,-0.594 3.38211,-0.738"},"37121":{"name":"Mitchell, NC","path":"m 779.13373,337.41714 2.47463,4.181 -2.47463,2.409 -0.52416,-1.976 -1.11197,-0.62044 -0.47885,-1.2869 -1.07858,0.29855 -1.72117,-1.23756 -1.10426,-0.11865 3.2787,-2.442 2.74027,0.793"},"37199":{"name":"Yancey, NC","path":"m 773.11476,339.06614 1.10426,0.11865 1.72117,1.23756 1.07858,-0.29855 0.47885,1.2869 1.11197,0.62044 0.52416,1.976 -2.20184,3.125 -2.82942,-2.25 -2.29633,-3.421 1.30862,-2.395"},"37115":{"name":"Madison, NC","path":"m 769.82715,340.31114 -0.20401,1.28048 1.0464,0.65527 0.64185,-0.6687 0.49475,-0.11705 2.29633,3.421 -1.7276,0.628 -1.01267,0.636 -0.59369,0.425 -1.15708,0.841 -2.34626,1.53 -1.43165,0.385 -1.831,-2.457 0.71136,-3.625 0.83082,-0.21 1.62241,-1.519 1.1553,-1.141 0.3227,-0.234 0.46711,-0.336 0.0874,-0.01 0.27635,0.175 0,0 0.35122,0.337"},"37021":{"name":"Buncombe, NC","path":"m 776.93189,347.13214 0.0414,2.65745 2.4956,1.10455 -1.57427,1.64 -1.34072,-0.563 -1.21413,0.852 -1.53505,0.827 -1.39064,0.516 -0.85221,-0.07 -0.57765,-0.13 -0.19434,-0.101 -0.36014,-0.06 -0.56873,0.223 -0.17829,0.138 -0.47246,0.666 -0.98491,-0.69369 0.0903,-2.59578 -1.1271,-1.09193 -0.88619,0.12109 -0.46884,-1.23569 1.43165,-0.385 2.34626,-1.53 1.15708,-0.841 0.59369,-0.425 1.01267,-0.636 1.7276,-0.628 2.82942,2.25"},"37089":{"name":"Henderson, NC","path":"m 777.89464,352.53414 0.32983,1.696 -1.41393,2.1142 0.29964,2.3998 -3.82783,2.009 -0.24068,-0.126 -0.1355,-0.227 -0.44394,-1.342 -0.12123,-0.844 -0.2086,-0.657 -0.51346,-0.589 -2.40866,-2.145 0.47246,-0.666 0.17829,-0.138 0.56873,-0.223 0.36014,0.06 0.19434,0.101 0.57765,0.13 0.85221,0.07 1.39064,-0.516 1.53505,-0.827 1.21413,-0.852 1.34072,0.563"},"37149":{"name":"Polk, NC","path":"m 784.30584,358.15014 -4.59624,0.475 -2.59942,0.119 -0.29964,-2.3998 1.41393,-2.1142 1.10003,-0.387 0.71493,-0.257 0.16937,0.02 0.57944,0.252 0.27278,0.18 2.93817,2.478 0.1872,0.305 0.11945,1.326"},"37161":{"name":"Rutherford, NC","path":"m 788.06056,348.39414 0.57765,5.126 -0.57765,3.249 -0.016,0.987 -1.97721,0.202 -1.76147,0.192 -0.11945,-1.326 -0.1872,-0.305 -2.93817,-2.478 -0.27278,-0.18 -0.57944,-0.252 -0.16937,-0.02 -0.71493,0.257 -1.10003,0.387 -0.32983,-1.696 1.57427,-1.64 3.01289,-1.04083 0.5781,0.4988 2.04614,-0.53955 0.5423,-0.93342 1.0634,-1.04165 1.34882,0.55665"},"37111":{"name":"McDowell, NC","path":"m 781.60836,341.59814 0.53664,-1.198 0.13015,0.07 0.13728,0.175 0.40828,0.659 0.10341,0.218 0.1551,0.513 -0.12301,0.869 -1.21486,1.10306 2.58054,1.67594 1.32645,3.193 -0.5423,0.93342 -2.04614,0.53955 -0.5781,-0.4988 -3.01289,1.04083 -2.4956,-1.10455 -0.0414,-2.65745 2.20184,-3.125 2.47463,-2.409"},"37011":{"name":"Avery, NC","path":"m 781.29457,333.37614 0.19255,-0.555 0.63693,0.9325 -0.53588,0.75207 0.48988,0.71885 0.81465,-0.25548 1.14214,1.58206 1.36781,0.95206 -0.77411,2.46194 -2.1196,-0.4321 -0.36394,0.8671 -0.53664,1.198 -2.47463,-4.181 2.16084,-4.041"},"37189":{"name":"Watauga, NC","path":"m 784.73373,329.98414 1.63132,0.644 1.06794,0.941 0.7078,0.516 1.53327,0.602 0.41193,1.497 -1.21422,1.497 -4.83693,0.87 -1.14214,-1.58206 -0.81465,0.25548 -0.48988,-0.71885 0.53588,-0.75207 -0.63693,-0.9325 0.1355,-0.369 0.84508,-0.947 0.9164,-0.627 0.0232,-0.02 0.0963,-0.06 0.1141,0.263 0.48138,0.154 0.28704,-0.01 0.0339,0 0.38332,-0.129 -0.0695,-1.095"},"37003":{"name":"Alexander, NC","path":"m 798.54027,335.85214 0.55512,2.59084 -1.12029,3.73316 -1.40922,-0.69117 -2.70386,0.94617 -0.60261,-4.597 0.99663,-0.825 0.53842,-0.21 0.82725,-0.264 0.29774,0.07 1.26762,-0.303 1.02159,-0.291 0.33161,-0.16"},"37009":{"name":"Ashe, NC","path":"m 784.82109,325.27114 5.92269,-0.596 0.0731,0.457 1.20344,1.697 0.65253,0.554 0.1765,0.289 0.41006,0.858 0.10341,0.691 -2.34525,0.45252 0.24213,1.64271 -1.58564,1.37077 -1.53327,-0.602 -0.7078,-0.516 -1.06794,-0.941 -1.63132,-0.644 0.0874,-4.713"},"37005":{"name":"Alleghany, NC","path":"m 798.97173,323.67814 -0.60261,3.857 -0.16046,0.658 -0.84508,0.135 -0.35301,-0.39 -0.0713,-0.394 -0.80408,-0.403 -0.14263,-0.02 -1.166,0.346 -1.46373,1.757 -0.10341,-0.691 -0.41006,-0.858 -0.1765,-0.289 -0.65253,-0.554 -1.20344,-1.697 -0.0731,-0.457 8.22795,-0.997"},"37193":{"name":"Wilkes, NC","path":"m 793.36282,329.22114 1.46373,-1.757 1.166,-0.346 0.14263,0.02 0.80408,0.403 0.0713,0.394 0.35301,0.39 0.84508,-0.135 0.16046,-0.658 1.61685,1.50677 0.6991,1.99623 0.49742,4.163 -2.64222,0.651 -0.33161,0.16 -1.02159,0.291 -1.26762,0.303 -0.29774,-0.07 -0.82725,0.264 -0.53842,0.21 -0.99663,0.825 -4.38764,-2.153 1.21422,-1.497 -0.41193,-1.497 1.58564,-1.37077 -0.24213,-1.64271 2.34525,-0.45252"},"37027":{"name":"Caldwell, NC","path":"m 784.03484,336.55114 4.83693,-0.87 4.38764,2.153 0.60261,4.597 -0.44215,0.741 -0.21573,0.282 -0.39579,0.03 -1.47087,-0.4473 -1.47087,0.4473 -3.56752,-2.161 -1.51722,-1.158 -0.15333,-0.209 0.77411,-2.46194 -1.36781,-0.95206"},"37023":{"name":"Burke, NC","path":"m 784.62854,339.96514 0.15333,0.209 1.51722,1.158 3.56752,2.161 1.47087,-0.4473 1.47087,0.4473 0.39579,-0.03 0.21573,-0.282 -2.42649,5.039 -0.041,0.11 -2.89182,0.07 -1.34882,-0.55665 -1.0634,1.04165 -1.32645,-3.193 -2.58054,-1.67594 1.21486,-1.10306 0.12301,-0.869 -0.1551,-0.513 -0.10341,-0.217 -0.40828,-0.66 -0.13728,-0.175 -0.13015,-0.07 0.36394,-0.8671 2.1196,0.4321"},"37045":{"name":"Cleveland, NC","path":"m 790.95238,348.32114 2.00038,3.079 2.4893,2.50246 0.7894,2.99454 -0.72385,0.07 -7.46309,0.788 0.016,-0.987 0.57765,-3.249 -0.57765,-5.126 2.89182,-0.07"},"37071":{"name":"Gaston, NC","path":"m 792.95276,351.40014 9.28162,-1.019 -0.84476,2.71435 0.14409,3.31865 -5.30225,0.483 -0.7894,-2.99454 -2.4893,-2.50246"},"37109":{"name":"Lincoln, NC","path":"m 801.61751,347.03814 0.45641,1.333 0.16046,2.01 -9.28162,1.019 -2.00038,-3.079 0.041,-0.11 10.62413,-1.173"},"37035":{"name":"Catawba, NC","path":"m 793.86202,342.43114 2.70386,-0.94617 1.40922,0.69117 1.1972,1.28235 1.1972,0.10665 0.67571,0.675 0.8843,1.15 -0.312,1.648 -10.62413,1.173 2.42649,-5.039 0.44215,-0.741"},"37097":{"name":"Iredell, NC","path":"m 801.18249,335.20114 3.46946,-0.458 0.45998,4.58 -0.35479,2.972 -0.15154,1.279 1.0608,2.893 0.11946,0.433 0.0731,0.41 -0.86825,0.138 -2.61854,0.18527 -0.29824,0.73773 -0.45641,-1.333 0.312,-1.648 -0.8843,-1.15 -0.67571,-0.675 -1.1972,-0.10665 -1.1972,-1.28235 1.12029,-3.73316 -0.55512,-2.59084 2.64222,-0.651"},"37119":{"name":"Mecklenburg, NC","path":"m 802.07392,348.37114 0.29824,-0.73773 2.61854,-0.18527 -0.016,0.167 0.025,0.154 0.71493,2.039 2.33913,2.765 2.35339,0.997 -4.58911,5.6 -1.49405,-1.526 -0.69755,-0.3075 -1.51172,1.51652 -0.55086,-0.36675 0.40924,-1.41429 -0.4393,-0.65798 -0.14409,-3.31865 0.84476,-2.71435 -0.16046,-2.01"},"37159":{"name":"Rowan, NC","path":"m 805.11193,339.32314 4.96529,1.769 2.40331,0.158 2.80446,2.791 0.75415,1.656 -2.06456,0.374 -8.11563,1.239 -0.0731,-0.41 -0.11946,-0.433 -1.0608,-2.893 0.15154,-1.279 0.35479,-2.972"},"37059":{"name":"Davie, NC","path":"m 804.65195,334.74314 3.59605,-0.476 2.11805,1.367 0.33696,0.186 0.10697,0.16 0.21573,0.603 0.0927,0.635 -0.16402,1.356 -0.69176,0.467 -0.18542,2.051 -4.96529,-1.769 -0.45998,-4.58"},"37197":{"name":"Yadkin, NC","path":"m 808.31753,329.68014 0.41738,2.34374 -1.02211,0.79509 0.53523,1.44817 -3.59605,0.476 -3.46946,0.458 -0.49742,-4.163 1.57427,-0.98 2.16237,0.10575 0.52798,-1.02275 1.08755,-0.02 0.34099,0.66984 1.35274,-0.38084 0.38688,0.121 0.19968,0.145"},"37171":{"name":"Surry, NC","path":"m 804.22941,322.91414 3.14142,-0.337 0.87717,6.636 0.0695,0.467 -0.19968,-0.145 -0.38688,-0.121 -1.35274,0.38084 -0.34099,-0.66984 -1.08755,0.02 -0.52798,1.02275 -2.16237,-0.10575 -1.57427,0.98 -0.6991,-1.99623 -1.61685,-1.50677 0.60261,-3.857 1.16599,-0.121 4.09169,-0.643"},"37169":{"name":"Stokes, NC","path":"m 814.86601,321.50914 0.9574,6.539 -7.57541,1.165 -0.87717,-6.636 7.02094,-0.988 0.47424,-0.08"},"37067":{"name":"Forsyth, NC","path":"m 808.248,329.21314 7.57541,-1.165 0.81834,5.659 -3.35028,0.19444 0.0784,0.73075 -1.58808,0.34767 -1.41569,0.65414 -2.11805,-1.367 -0.53523,-1.44817 1.02211,-0.79509 -0.41738,-2.34374 -0.0695,-0.467"},"37057":{"name":"Davidson, NC","path":"m 810.36605,335.63414 1.41569,-0.65414 1.58808,-0.34767 -0.0784,-0.73075 3.35028,-0.19444 0.27278,2.065 1.24801,9.529 -2.1234,0.396 -0.75415,-1.656 -2.80446,-2.791 -2.40331,-0.158 0.18542,-2.051 0.69176,-0.467 0.16402,-1.356 -0.0927,-0.635 -0.21573,-0.603 -0.10697,-0.16 -0.33696,-0.186"},"37167":{"name":"Stanly, NC","path":"m 813.97458,346.07114 2.06456,-0.374 1.42273,0.722 0.11232,0.07 0.86113,1.366 0.34409,0.717 -0.12382,2.077 1.01526,2.077 0.0267,0.135 -0.0339,0.209 -0.26565,0.538 -3.91875,-0.586 -2.07883,1.24482 -2.07882,-0.30582 2.65291,-7.891"},"37025":{"name":"Cabarrus, NC","path":"m 813.97458,346.07114 -2.65291,7.891 -0.91461,-0.392 -2.35339,-0.997 -2.33913,-2.765 -0.71493,-2.039 -0.025,-0.154 0.016,-0.167 0.86825,-0.138 8.11563,-1.239"},"37179":{"name":"Union, NC","path":"m 815.47932,353.02314 0.6561,8.853 -4.47322,0.664 -4.01146,0.592 -0.37797,-0.07 -0.009,-0.217 -0.12837,-2.346 -1.31754,-1.327 4.58911,-5.6 0.91461,0.392 2.07883,0.30582 2.07882,-1.24482"},"37007":{"name":"Anson, NC","path":"m 819.39807,353.60914 0.0481,0.202 0.21751,0.483 0.87717,0.344 0.4885,0.05 0.0981,-0.02 0.11232,-0.1 0.0464,-0.06 0.0571,-0.234 0.37084,-0.394 0.2389,-0.144 0.29774,0 0.33875,0.419 0.53129,0.859 1.38707,3.318 0,0.121 -0.18185,0.435 -0.89322,1.929 -7.29728,1.057 -0.6561,-8.853 3.91875,0.586"},"37157":{"name":"Rockingham, NC","path":"m 820.51593,320.55814 3.69589,-0.618 0.78089,6.702 0.0214,0.192 -9.1907,1.214 -0.9574,-6.539 5.64992,-0.951"},"37081":{"name":"Guilford, NC","path":"m 815.82341,328.04814 9.1907,-1.214 1.19096,7.829 -9.29054,1.109 -0.27278,-2.065 -0.81834,-5.659"},"37151":{"name":"Randolph, NC","path":"m 826.20507,334.66314 0.21572,1.285 1.06081,7.527 -3.89557,0.765 -5.42349,1.061 -1.24801,-9.529 9.29054,-1.109"},"37123":{"name":"Montgomery, NC","path":"m 823.58603,344.24014 1.9362,4.919 0.0553,0.289 0.27277,0.44 1.05368,1.232 0.43502,0.353 0.47424,0.209 -1.87379,0.105 -2.57981,0.2 -0.9788,0.66 -1.92015,0.843 -0.41184,0.09 -0.65075,0.03 0.26565,-0.538 0.0339,-0.209 -0.0267,-0.135 -1.01526,-2.077 0.12382,-2.077 -0.34409,-0.717 -0.86113,-1.366 -0.11232,-0.07 -1.42273,-0.722 2.1234,-0.396 5.42349,-1.061"},"37153":{"name":"Richmond, NC","path":"m 819.39807,353.60914 0.65075,-0.03 0.41184,-0.09 1.92015,-0.843 0.9788,-0.66 2.57981,-0.2 1.87379,-0.105 0.83572,0.5625 0.33922,1.47607 1.78901,-0.17233 0.37894,0.38376 -0.90927,0.562 -0.67571,0.611 -0.30665,0.328 -0.0963,0.909 0.0731,0.28 0.16938,0.266 -0.26387,1.335 -0.29061,0.619 -0.97879,1.253 -4.4447,0.724 0.89322,-1.929 0.18185,-0.435 0,-0.121 -1.38707,-3.318 -0.53129,-0.859 -0.33875,-0.419 -0.29774,0 -0.2389,0.144 -0.37084,0.394 -0.0571,0.234 -0.0464,0.06 -0.11232,0.1 -0.0981,0.02 -0.4885,-0.05 -0.87717,-0.344 -0.21751,-0.483 -0.0481,-0.202"},"37165":{"name":"Scotland, NC","path":"m 834.02117,358.23014 -0.0618,0.49058 0.57636,0.7158 -1.78042,3.90562 -4.87793,-3.247 0.97879,-1.253 0.29061,-0.619 0.26387,-1.335 -0.16938,-0.266 -0.0731,-0.28 0.0963,-0.909 0.30665,-0.328 0.67571,-0.611 0.90927,-0.562 2.14199,1.84802 0.72308,2.44998"},"37033":{"name":"Caswell, NC","path":"m 830.9368,318.72714 0.93957,6.879 -1.87914,0.297 -5.00452,0.739 -0.78089,-6.702 0.73097,-0.136 2.29812,-0.408 2.24285,-0.412 1.45304,-0.257"},"37001":{"name":"Alamance, NC","path":"m 824.99271,326.64214 5.00452,-0.739 0.89194,7.56581 0.73939,0.77719 0.22774,0.66222 -5.43551,1.03978 -0.21572,-1.285 -1.19096,-7.829 -0.0214,-0.192"},"37125":{"name":"Moore, NC","path":"m 831.24167,342.75314 1.62715,2.86234 2.28625,1.39766 -0.39489,1.3837 2.46124,0.9443 0.0481,0.421 -2.90073,-0.362 -0.62757,0.545 -0.88252,1.052 -1.14995,1.929 -0.55269,1.006 -0.37894,-0.38376 -1.78901,0.17233 -0.33922,-1.47607 -0.83572,-0.5625 -0.47424,-0.209 -0.43502,-0.353 -1.05368,-1.232 -0.27277,-0.44 -0.0553,-0.289 -1.9362,-4.919 3.89557,-0.765 3.76007,-0.722"},"37093":{"name":"Hoke, NC","path":"m 831.1561,353.93214 0.55269,-1.006 1.14995,-1.929 0.88252,-1.052 0.62757,-0.545 2.90073,0.362 2.06634,4.812 -2.13944,2.885 -1.01089,0.465 -2.1644,0.306 -0.72308,-2.44998 -2.14199,-1.84802"},"37155":{"name":"Robeson, NC","path":"m 839.3359,354.57414 2.94887,2.259 2.36943,2.988 0.0713,0.339 -0.18364,4.098 -0.24782,0.491 -0.8843,0.864 -1.11786,2.404 -0.94849,1.574 -8.33313,-6.073 -0.25495,-0.176 1.78042,-3.90562 -0.57636,-0.7158 0.0618,-0.49058 2.1644,-0.306 1.01089,-0.465 2.13944,-2.885"},"37047":{"name":"Columbus, NC","path":"m 856.04853,364.51314 1.92906,0.639 -1.10894,3.524 -2.24999,1.27 -2.00929,0.691 -0.21573,0.02 -0.14441,0.05 -0.47424,0.579 -0.85935,3.159 -0.26743,1.79 -9.3048,-6.646 0.94849,-1.574 1.11786,-2.404 0.8843,-0.864 0.78625,0.312 0.16046,0 0.39401,-0.07 2.04852,-0.531 2.33021,0.497 2.6119,0.739 2.06457,-0.152 1.35855,-1.029"},"37019":{"name":"Brunswick, NC","path":"m 857.97759,365.15214 2.5602,0.11 1.5297,1.808 1.10895,2.603 0.3851,1.432 0.0891,0.495 0.36906,2.47 -0.18943,1.5838 -0.65131,0.29894 -0.50176,-0.66174 -1.50831,-0.129 -0.80586,0 -0.76307,0.1 -1.83279,0.385 -1.89519,0.595 -0.0642,0.02 -0.007,0 -2.17867,1.262 -0.54021,0.442 -2.43362,-1.737 0.26743,-1.79 0.85935,-3.159 0.47424,-0.579 0.14441,-0.05 0.21573,-0.02 2.00929,-0.691 2.24999,-1.27 1.10894,-3.524"},"37129":{"name":"New Hanover, NC","path":"m 866.51932,365.04514 -0.34588,0.52 -0.32091,0.701 -0.85221,2.113 -0.13729,0.547 -0.32091,1.588 -0.0303,0.195 -0.49207,3.361 -0.36906,-2.47 -0.0891,-0.495 -0.3851,-1.432 -1.10895,-2.603 -1.5297,-1.808 1.78644,-1.095 1.44769,-0.69 0.74702,0 -0.1462,0.226 0.0802,0.177 0.29774,0.288 1.29437,0.885 0.47424,0"},"37017":{"name":"Bladen, NC","path":"m 849.69081,354.96114 5.72301,6.042 -0.2496,0.426 0.0499,0.111 0.4582,0.572 0.32805,0.201 0.56338,0.07 0.68106,0.361 -1.1963,1.767 -1.35855,1.029 -2.06457,0.152 -2.6119,-0.739 -2.33021,-0.497 -2.04852,0.531 -0.39401,0.07 -0.16046,0 -0.78625,-0.312 0.24782,-0.491 0.18364,-4.098 -0.0713,-0.339 -2.36943,-2.988 1.02693,-0.483 0.77377,-0.2 4.91537,-0.941 0.51347,-0.129 0.1765,-0.119"},"37051":{"name":"Cumberland, NC","path":"m 845.79524,346.52214 -0.33874,3.664 0,0.17 0.45106,0.989 0.59548,1.109 0.1355,0.209 3.05227,2.298 -0.1765,0.119 -0.51347,0.129 -4.91537,0.941 -0.77377,0.2 -1.02693,0.483 -2.94887,-2.259 -2.06634,-4.812 -0.0481,-0.421 0.57052,-0.255 3.31079,-1.519 1.63132,-0.877 0.55448,-0.127 2.50671,-0.04"},"37037":{"name":"Chatham, NC","path":"m 837.92209,333.32014 0.0374,0.587 -0.60974,5.577 1.58318,0.345 -0.76485,1.584 -1.79713,-1.416 -0.35657,-0.233 -0.19077,-0.09 -0.4992,-0.139 -0.37084,0.03 -0.32983,0.107 -0.77733,1.194 -0.82904,0.726 -1.31754,0.931 -0.4582,0.224 -3.76007,0.722 -1.06081,-7.527 5.43551,-1.03978 -0.22774,-0.66222 4.2985,-0.459 1.99503,-0.467"},"37085":{"name":"Harnett, NC","path":"m 838.93297,339.82914 4.04177,0.78 3.92231,4.072 -1.10181,1.841 -2.50671,0.04 -0.55448,0.127 -1.63132,0.877 -3.31079,1.519 -0.57052,0.255 -2.46124,-0.9443 0.39489,-1.3837 3.01305,-5.6 0.76485,-1.584"},"37105":{"name":"Lee, NC","path":"m 831.24167,342.75314 0.4582,-0.224 1.31754,-0.931 0.82904,-0.726 0.77733,-1.194 0.32983,-0.107 0.37084,-0.03 0.4992,0.139 0.19077,0.09 0.35657,0.233 1.79713,1.416 -3.01305,5.6 -2.28625,-1.39766 -1.62715,-2.86234"},"37135":{"name":"Orange, NC","path":"m 831.87637,325.60614 3.69233,-0.594 0.35836,8.775 -4.2985,0.459 -0.73939,-0.77719 -0.89194,-7.56581 1.87914,-0.297"},"37145":{"name":"Person, NC","path":"m 830.9368,318.72714 6.1723,-1.116 1.17313,6.982 -2.71353,0.419 -3.69233,0.594 -0.93957,-6.879"},"37063":{"name":"Durham, NC","path":"m 838.28223,324.59314 0.25816,3.22016 1.38921,0.35484 -0.12339,0.84341 1.27156,0.31559 -0.0802,1.06 -0.64938,1.30001 -0.92993,0.12492 -0.1162,1.27507 -1.37994,0.233 -1.99503,0.467 -0.35836,-8.775 2.71353,-0.419"},"37141":{"name":"Pender, NC","path":"m 857.3108,356.68814 7.97834,-1.503 4.25214,5.768 -3.02196,4.092 -0.47424,0 -1.29437,-0.885 -0.29774,-0.289 -0.0802,-0.176 0.1462,-0.226 -0.74702,0 -1.44769,0.69 -1.78644,1.095 -2.5602,-0.11 -1.92906,-0.639 1.1963,-1.767 -0.68106,-0.361 -0.56338,-0.07 -0.32805,-0.201 -0.4582,-0.573 -0.0499,-0.11 0.2496,-0.426 1.89698,-4.315"},"37163":{"name":"Sampson, NC","path":"m 846.89705,344.68114 1.41959,0.70274 3.03937,-0.85474 3.00414,1.712 0.54734,2.483 0.99484,3.976 -0.27278,3.947 1.33537,0.401 0.1141,-0.06 0.23178,-0.296 -1.89698,4.315 -5.72301,-6.042 -3.05227,-2.298 -0.1355,-0.209 -0.59548,-1.109 -0.45106,-0.989 0,-0.17 0.33874,-3.664 1.10181,-1.841"},"37191":{"name":"Wayne, NC","path":"m 854.45821,336.89514 4.45004,-0.56 1.21413,4.546 0.32983,4.468 -6.09206,0.892 -3.00414,-1.712 0.72206,-1.054 1.45483,-2.449 0.92531,-4.131"},"37101":{"name":"Johnston, NC","path":"m 851.49864,334.03514 0.79694,0.851 0.97345,1.818 1.18918,0.191 -0.92531,4.131 -1.45483,2.449 -0.72206,1.054 -3.03937,0.85474 -1.41959,-0.70274 -3.92231,-4.072 2.52989,-3.543 2.57803,-2.87 1.89876,-1.929 1.51722,1.768"},"37183":{"name":"Wake, NC","path":"m 839.9296,328.16814 3.88131,0.451 1.05189,0.249 1.32467,0.412 2.49959,1.405 0.64361,0.537 0.60261,0.813 0.0481,0.232 -1.89876,1.929 -2.57803,2.87 -2.52989,3.543 -4.04177,-0.78 -1.58318,-0.345 0.60974,-5.577 -0.0374,-0.587 1.37994,-0.233 0.1162,-1.27507 0.92993,-0.12492 0.64938,-1.30001 0.0802,-1.06 -1.27156,-0.31559 0.12339,-0.84341"},"37077":{"name":"Granville, NC","path":"m 838.22517,317.39414 4.99917,-0.933 -0.61152,0.781 -0.0481,0.451 0.15333,1.493 0.65074,3.487 0.44929,2.147 0.2496,0.135 -0.25673,3.664 -3.88131,-0.451 -1.38921,-0.35484 -0.25816,-3.22016 -1.17313,-6.982 1.11607,-0.217"},"37181":{"name":"Vance, NC","path":"m 843.22434,316.46114 2.3944,-0.481 1.49404,6.26 -0.56199,1.02751 -0.96058,0.32999 -0.33779,1.15207 -1.18478,0.20543 -0.2496,-0.135 -0.44929,-2.147 -0.65074,-3.487 -0.15333,-1.493 0.0481,-0.451 0.61152,-0.781"},"37185":{"name":"Warren, NC","path":"m 850.61612,315.02314 2.63687,-0.523 0.19968,0.861 -0.62579,7.289 -5.7141,-0.41 -1.49404,-6.26 4.99738,-0.957"},"37069":{"name":"Franklin, NC","path":"m 852.82688,322.65014 -2.84546,9.617 -0.0481,-0.232 -0.60261,-0.813 -0.64361,-0.537 -2.49959,-1.405 -1.32467,-0.412 -1.05189,-0.249 0.25673,-3.664 1.18478,-0.20543 0.33779,-1.15207 0.96058,-0.32999 0.56199,-1.02751 5.7141,0.41"},"37127":{"name":"Nash, NC","path":"m 858.62834,322.70514 -0.0499,1.116 -0.75237,3.794 -0.30666,2.049 -6.02075,4.371 -1.51722,-1.768 2.84546,-9.617 1.45037,0.015 0.69688,0.79746 2.26181,-0.50664 1.3924,-0.24582"},"37131":{"name":"Northampton, NC","path":"m 866.47831,311.85614 0.36137,0.716 0.77029,-0.0596 0.52463,0.77564 -0.93054,0.41808 0.19956,2.18692 -0.35479,2.931 -1.49866,1.11812 0.35228,0.96388 -0.10697,0.104 -0.18542,-0.03 -1.56536,-0.665 -0.79163,-0.97238 -1.03277,-1.30999 -2.26264,0.73978 0.0524,-1.18941 -0.32805,-1.455 -1.82565,-0.98 -4.32346,0.07 -0.0802,0.144 -0.19968,-0.861 2.38548,-0.456 8.47754,-1.672 2.3623,-0.516"},"37083":{"name":"Halifax, NC","path":"m 853.45267,315.36114 0.0802,-0.144 4.32346,-0.07 1.82565,0.98 0.32805,1.455 -0.0524,1.18941 2.26264,-0.73978 1.03277,1.30999 0.79163,0.97238 1.56536,0.665 0.18542,0.03 0.10697,-0.104 1.09415,1.22777 -1.31345,1.03123 -1.04297,1.854 -0.37976,0.105 -1.85596,-0.428 -0.31914,-0.688 -0.98949,-0.531 -2.46749,-0.772 -1.3924,0.24582 -2.26181,0.50664 -0.69688,-0.79746 -1.45037,-0.015 0.62579,-7.289"},"37065":{"name":"Edgecombe, NC","path":"m 864.64018,325.01914 1.77395,4.026 -0.77911,-0.168 -1.34964,1.02 -0.3851,0.658 -0.53129,0.685 -1.97007,2.144 -1.29971,-0.996 -0.83795,-1.689 -1.74187,-1.035 0.30666,-2.049 0.75237,-3.794 0.0499,-1.116 2.46749,0.772 0.98949,0.531 0.31914,0.688 1.85596,0.428 0.37976,-0.105"},"37195":{"name":"Wilson, NC","path":"m 857.51939,329.66414 1.74187,1.035 0.83795,1.689 1.29971,0.996 -0.60083,0.708 -1.88984,2.243 -4.45004,0.56 -1.18918,-0.191 -0.97345,-1.818 -0.79694,-0.851 6.02075,-4.371"},"37079":{"name":"Greene, NC","path":"m 860.79809,334.09214 5.10436,4.324 -1.48157,1.317 -1.14995,0.901 -0.60261,0.271 -0.16581,0.03 -0.33874,-0.385 -2.04139,0.328 -1.21413,-4.546 1.88984,-2.243"},"37107":{"name":"Lenoir, NC","path":"m 867.84578,340.07014 -1.02337,2.837 -1.01089,-0.138 0.61153,1.593 -0.009,0.151 -1.2284,2.427 -2.08061,1.905 -2.65291,-3.496 -0.32983,-4.468 2.04139,-0.328 0.33874,0.385 0.16581,-0.03 0.60261,-0.271 1.14995,-0.901 1.48157,-1.317 1.94333,1.654"},"37103":{"name":"Jones, NC","path":"m 866.82241,342.90714 0.19433,0.02 5.62496,2.241 0.57051,0.305 0.69889,-0.426 0.20859,0.04 0.11411,0.137 0.33696,1.043 0.69889,4.325 0.52238,0.56 -1.31041,0.684 -1.39777,-1.911 -0.0892,-0.109 -1.02871,-0.791 -0.57943,-0.07 -5.26839,0 -1.90588,0.495 -1.10717,-0.61 2.08061,-1.905 1.2284,-2.427 0.009,-0.151 -0.61153,-1.593 1.01089,0.138"},"37061":{"name":"Duplin, NC","path":"m 854.36015,346.24114 6.09206,-0.892 2.65291,3.496 1.10717,0.61 0.72384,1.004 0.19255,4.315 0.016,0.144 0.14441,0.267 -7.97834,1.503 -0.23178,0.296 -0.1141,0.06 -1.33537,-0.401 0.27278,-3.947 -0.99484,-3.976 -0.54734,-2.483"},"37133":{"name":"Onslow, NC","path":"m 864.21229,349.45514 1.90588,-0.495 5.26839,0 0.57943,0.07 1.02871,0.791 0.0892,0.109 1.39777,1.911 1.64737,3.11 -6.58771,6.001 -4.25214,-5.768 -0.14441,-0.267 -0.016,-0.144 -0.19255,-4.315 -0.72384,-1.004"},"37031":{"name":"Carteret, NC","path":"m 882.97878,344.57014 0.0784,0.153 0.32983,0.352 0.75416,-0.08 1.38099,-0.78493 0.37134,-1.75299 0.80616,1.02263 0.94691,0.93558 1.2344,-0.21113 -0.98658,-1.29671 1.60629,0.48683 0.57786,1.5134 -1.16827,1.78273 -0.45725,0.0415 -0.4556,0.62608 0.35514,0.84762 3.24713,-4.96284 1.62851,-2.42525 0.33411,0.44634 -1.5783,2.10013 -0.92531,2.218 -1.79392,2.58609 -1.84492,3.93691 -0.56594,1.24381 -0.37363,-0.66581 -0.63113,-0.216 -1.93263,-0.376 -0.95027,0.112 -0.7916,0.161 -0.85399,0.248 -1.59032,0.581 -1.48692,0.617 -0.16224,0.07 -0.066,0.03 -0.48138,0.235 -0.40828,0.234 -0.69888,0.401 -0.29774,0.168 -1.64737,-3.11 1.31041,-0.684 2.4354,-0.683 3.47838,-1.549 1.08576,-0.756 0.34588,-1.1 0.0874,-0.523 -0.13015,-0.119 -1.16421,-0.749 1.04833,-1.109"},"37137":{"name":"Pamlico, NC","path":"m 882.15509,337.19414 2.03425,-0.02 0.36906,0.113 0.27278,0.392 0.17115,0.394 0.0713,0.355 -0.26565,1.196 -0.52416,2.232 -0.28705,0.678 -1.01801,2.032 -1.04833,1.109 -0.80229,0.829 -0.3227,0.152 -0.71493,0.1 -1.65451,-0.408 -1.03763,-0.58 -0.43323,-0.458 -0.84509,-2.548 0.20325,-1.094 0.24069,-0.571 0.73276,-0.882 1.0822,0.666 3.80999,-1.237 0.15868,-0.868 0,-0.209 -0.19255,-1.373"},"37049":{"name":"Craven, NC","path":"m 871.14765,337.55514 6.14912,2.66 -0.73276,0.882 -0.24069,0.571 -0.20325,1.094 0.84509,2.548 0.43323,0.458 1.03763,0.58 1.65451,0.408 0.71493,-0.1 0.3227,-0.152 0.80229,-0.829 1.16421,0.749 0.13015,0.119 -0.0874,0.523 -0.34588,1.1 -1.08576,0.756 -3.47838,1.549 -2.4354,0.683 -0.52238,-0.56 -0.69889,-4.325 -0.33696,-1.043 -0.11411,-0.137 -0.20859,-0.04 -0.69889,0.426 -0.57051,-0.305 -5.62496,-2.241 -0.19433,-0.02 1.02337,-2.837 3.30187,-2.515"},"37147":{"name":"Pitt, NC","path":"m 866.41413,329.04514 3.60675,1.319 1.12677,7.191 -3.30187,2.515 -1.94333,-1.654 -5.10436,-4.324 0.60083,-0.708 1.97007,-2.144 0.53129,-0.685 0.3851,-0.658 1.34964,-1.02 0.77911,0.168"},"37117":{"name":"Martin, NC","path":"m 865.68315,323.16514 0.025,0.127 0.16759,0.258 2.15986,1.108 0.58755,1.108 0.21929,0.129 2.4071,-0.76307 0.53998,1.84107 0.21038,0.06 1.38724,-1.41257 1.06786,1.73205 0.77306,-0.84752 -0.0377,-0.89665 1.71954,0.24269 -0.78982,3.93 -1.7579,1.223 -0.57944,0.367 -1.62954,-0.506 -2.13231,-0.496 -3.60675,-1.319 -1.77395,-4.026 1.04297,-1.854"},"37041":{"name":"Chowan, NC","path":"m 876.05589,315.82814 2.21789,-1.765 -0.0214,2.673 0.90748,2.835 0.0713,0.07 0.21038,0.105 0.40828,0.06 0.74702,0.06 1.63668,-0.1 -1.11804,1.13821 -0.84003,1.00732 -1.76823,-0.5451 -0.65778,0.59257 -1.87752,-2.07266 0.14813,-2.84434 -0.0642,-1.219"},"37091":{"name":"Hertford, NC","path":"m 870.96223,311.01314 0.34588,0.515 -0.025,0.225 -0.312,0.907 -0.29774,0.138 0.31022,1.246 0.0678,0.08 0.28169,0.191 0.51347,0.151 1.64024,0.273 0.49742,0 2.07169,1.087 0.0642,1.22 -3.47837,0.731 -1.95225,0.483 -3.15746,0.562 -0.48316,0 0.35479,-2.931 -0.19956,-2.18692 0.93054,-0.41808 -0.52463,-0.77564 -0.77029,0.0596 -0.36137,-0.716 4.45183,-0.836 0.0321,0"},"37015":{"name":"Bertie, NC","path":"m 876.12007,317.04814 -0.14813,2.84434 1.87752,2.07266 -0.0731,1.803 -0.86647,2.078 -1.71954,-0.24269 0.0377,0.89665 -0.77306,0.84752 -1.06786,-1.73205 -1.38724,1.41257 -0.21038,-0.06 -0.53998,-1.84107 -2.4071,0.76307 -0.21929,-0.129 -0.58755,-1.108 -2.15986,-1.108 -0.16759,-0.258 -0.025,-0.127 1.31345,-1.03123 -1.09415,-1.22777 -0.35228,-0.96388 1.49866,-1.11812 0.48316,0 3.15746,-0.562 1.95225,-0.483 3.47837,-0.731"},"37073":{"name":"Gates, NC","path":"m 877.65691,309.48714 1.08398,0.715 1.30863,2.859 -1.77574,1.002 -2.21789,1.765 -2.07169,-1.087 -0.49742,0 -1.64024,-0.273 -0.51347,-0.151 -0.28169,-0.191 -0.0678,-0.08 -0.31022,-1.246 0.29774,-0.138 0.312,-0.907 0.025,-0.225 -0.34588,-0.515 -0.15722,-0.17913 6.8519,-1.34687"},"37029":{"name":"Camden, NC","path":"m 878.55904,309.29414 3.1949,-0.675 3.37498,2.234 2.1858,1.196 0.0891,-0.08 0.24782,0.02 0.41006,0.16 1.35854,1.029 1.85241,2.596 0.0125,0.06 -2.95778,0.08 -0.55626,-0.626 -1.39777,-0.98 -2.72244,-1.657 -3.67271,-1.686 -1.23732,-0.763 -1.08398,-0.715 0.90213,-0.193"},"37139":{"name":"Pasquotank, NC","path":"m 878.74089,310.20214 1.23732,0.763 3.67271,1.686 2.72244,1.657 1.39777,0.98 0.55626,0.626 -2.24999,2.017 -1.81496,-1.181 -2.23572,-1.285 -1.79,-2.088 -0.1872,-0.316 -1.30863,-2.859"},"37143":{"name":"Perquimans, NC","path":"m 880.04952,313.06114 0.1872,0.316 1.79,2.088 2.23572,1.285 1.81496,1.181 -3.84386,1.841 -1.63668,0.1 -0.74702,-0.06 -0.40828,-0.06 -0.21038,-0.105 -0.0713,-0.07 -0.90748,-2.835 0.0214,-2.673 1.77574,-1.002"},"37013":{"name":"Beaufort, NC","path":"m 879.88193,329.01114 0.88919,1.54178 2.40734,0.90922 -1.50475,1.48 -0.20859,0.122 -0.0571,0.1 0,0.1 0.0731,0.273 0.58657,1.087 0.63648,0.842 0.31201,0.362 -0.86113,1.374 0.19255,1.373 0,0.209 -0.15868,0.868 -3.80999,1.237 -1.0822,-0.666 -6.14912,-2.66 -1.12677,-7.191 2.13231,0.496 1.62954,0.506 0.57944,-0.367 1.7579,-1.223 3.76186,-0.765"},"37187":{"name":"Washington, NC","path":"m 877.77636,323.76814 0.0161,0.01 0.37083,0.151 0.11946,0 1.0608,-0.289 1.7597,-0.684 0.55625,-0.375 0.19077,-0.267 1.06259,-0.547 0.1765,0.07 0.18364,0.159 0.54734,0.578 0.29774,2.428 -0.37084,1.221 0.57944,2.033 -4.4447,0.745 -3.76186,0.765 0.78982,-3.93 0.86647,-2.078"},"37177":{"name":"Tyrrell, NC","path":"m 891.14075,327.50114 -1.91324,0.0235 -0.76141,-0.5184 -0.50976,0.65596 -0.0484,2.1239 -1.72606,0.0268 -0.15171,-1.73804 -1.70353,0.19125 -0.57944,-2.033 0.37084,-1.221 -0.29774,-2.428 1.4263,-1.022 0.98236,-0.569 0.65074,-0.256 2.07527,-0.433 0.78802,0.353 0.22465,0.201 0.44928,1.212 -0.041,0.298 -0.007,0.651 0.18542,1.262 0.32983,1.293 0.30309,1.519 -0.0464,0.408"},"37053":{"name":"Currituck, NC","path":"m 889.555,307.06641 0.95867,2.32617 0.42383,0.33789 -0.008,0.26758 0.74219,1.28906 0.29101,0.68945 -0.54687,-0.1875 0.32031,0.8086 0.66406,0.10156 0.72266,1.17187 0.14843,-0.10351 -3.51171,-6.74414 z m -0.463,0.0996 -0.906,0.19352 0.0139,0.16804 -0.33892,-0.0988 -0.58,0.12395 0.0882,0.16602 0.6875,0.0879 -0.0625,0.70117 0.25391,0.0957 0.27734,-0.18946 0.86133,0.0508 z m -2.231,0.47656 -1.68522,0.36133 0,-0.01 -3.42187,0.72266 3.375,2.23242 2.18554,1.19726 0.0899,-0.0801 0.24804,0.0195 0.41016,0.16015 1.35742,1.0293 1.85352,2.5957 0.0117,0.0606 0.51953,0.67383 0.48633,0.49023 0.2539,0.16797 0.75586,0.3125 0.11328,0 -0.0156,-0.24805 -0.30469,-0.65624 -0.84766,-1.99024 -2.37304,-3.12695 -0.31641,-1.63086 -0.39258,-0.0742 0.0488,0.92773 0.043,0.79297 -1.11133,-1.41406 0.58985,-0.0391 -0.23633,-0.30664 -0.55664,0.0586 -0.91993,-1.52734 z"},"37055":{"name":"Dare, NC","path":"m 891.14075,327.50114 0.0464,-0.408 -0.30309,-1.519 -0.32983,-1.293 -0.18542,-1.262 0.007,-0.651 0.041,-0.298 0.7702,-1.463 0.13728,-0.152 0.64362,-0.424 0.353,-0.113 0.34588,-0.07 0.19968,0 0.81121,0.224 0.64361,0.596 1.3015,1.834 0.21216,0.344 0.86291,2.748 0.0196,0.105 0.0321,1.606 -0.59548,1.23 -0.36905,0.202 -0.71671,0.232 -0.63292,-0.145 -1.35379,-1.88379 -1.94096,0.54879 m 5.10971,-7.255 0.32983,0.152 0.32805,0.258 0.42789,0.443 0.32805,0.561 0.2496,0.908 -0.0802,0.171 -0.0731,0.01 -0.86113,-0.153 -0.15867,-0.12 -1.34963,-1.968 -0.0981,-0.169 -0.009,-0.05 0.13728,-0.122 0.23356,-0.05 0.27456,0 0.32092,0.119 m 2.15371,16.811 0.33696,-0.185 0.26565,-0.177 1.45482,-1.005 1.55823,-1.156 0.0428,-0.369 -0.0838,-2.332 -0.11054,-1.558 -0.19433,-2.307 -0.23356,-1.045 -0.16759,-0.522 -0.24068,-0.544 -0.28883,-0.364 -0.22821,-0.288 -0.93065,-2.003 0.0678,-0.08 0.10162,0.02 0.0339,0 0.0374,0.05 0.47603,0.58 0.18364,0.297 0.55447,1.059 0.32805,0.764 0.45106,1.012 0.14441,0.99 0.0339,0.296 0.16759,1.406 0.15867,2.058 0.0767,1.679 -0.0107,2.042 -0.0963,0.21 -0.21573,0 -0.29774,-0.03 -0.36192,0.105 -0.52952,0.2 -0.4261,0.266 -1.90589,1.237 -0.15154,-0.305 m -5.13288,-23.39562 1.00554,1.50139 0.005,0 0.55626,0.8762 0.63801,0.731 0.89704,1.141 0.88302,1.24418 1.22789,2.15385 0.88252,1.364 -0.0856,0.266 -1.81675,-2.024 -0.73122,-1.62276 -0.99325,-0.3009 -0.6047,-1.28046 -0.89716,-1.79047 -1.11698,-2.16344 0.15001,-0.10259"},"37095":{"name":"Hyde, NC","path":"m 891.14075,327.50114 1.94096,-0.54879 1.35379,1.88379 -0.42611,0.321 -0.79694,1.173 -0.0553,0.114 -0.49742,1.318 0.0713,0.264 -0.009,0.241 -0.10162,0.739 -0.025,0.154 -0.0892,0.167 -0.68284,1.086 -1.14103,1.246 -0.11232,0.07 -4.66043,0.451 -0.16937,0 -1.51187,-0.188 -1.21235,-0.183 -0.31201,-0.362 -0.63648,-0.842 -0.58657,-1.087 -0.0731,-0.273 0,-0.1 0.0571,-0.1 0.20859,-0.121 1.50475,-1.48 -2.40734,-0.90922 -0.88919,-1.54178 4.4447,-0.745 1.70353,-0.19125 0.15171,1.73804 1.72606,-0.0268 0.0484,-2.1239 0.50976,-0.65596 0.76141,0.5184 1.91324,-0.0235 m 7.26342,9.556 0.15154,0.305 -0.34409,0.193 -0.33162,0.265 -0.82547,0.667 -1.16599,1.004 -0.51347,0.451 -0.57943,0.683 -0.27278,0.401 -0.18542,0.169 -0.0553,-0.07 0.0178,-0.09 0.28704,-0.818 0.32983,-0.473 1.166,-1.021 1.76682,-1.416 0.55448,-0.248"},"38017":{"name":"Cass, ND","path":"m 500.41055,98.850143 9.73982,0.153 0.0802,1.992997 0.0232,2.908 0.66679,2.186 0.19434,0.531 -0.30666,4.998 0.009,1.287 0,0 -7.89812,-0.06 -6.38089,-0.113 0.14442,-7.987 -0.38347,-0.044 0.1018,-5.942977 4.00968,0.09"},"38077":{"name":"Richland, ND","path":"m 510.81716,112.91314 0.68284,1.984 2.20897,5.32 0.61153,4.821 0.0481,0.403 -0.0321,0.465 -0.0392,0.145 -0.29774,0.836 0.21751,1.993 -10.68117,-0.105 -0.33696,-1.391 -0.12837,-1.422 0.0731,-5.149 -0.33875,0 0.1141,-7.955 7.89812,0.06"},"38013":{"name":"Burke, ND","path":"m 430.78234,60.352143 -1.99146,-0.135 -0.13921,1.937478 -1.2443,-0.04248 -0.26386,3.954 -10.03756,-0.708 0.14441,-1.968 0.14441,-1.984 -0.83438,-0.06 0.48138,-6.317 14.03118,0.965 -0.29061,4.355"},"38023":{"name":"Divide, ND","path":"m 400.09559,53.675143 16.94618,1.357 -0.48138,6.317 0.83438,0.06 -0.14441,1.984 -17.84653,-1.423 0.69176,-8.292"},"38105":{"name":"Williams, ND","path":"m 399.40383,61.967143 17.84653,1.423 -0.14441,1.968 -0.27278,3.946 0.8843,0.06 -0.41719,5.666 -0.65253,-0.346 -3.53365,-0.481 -1.57605,0.135 -0.19255,0.138 -0.40293,0.419 -0.27991,0.385 -0.009,0.04 0.0321,0.05 0.23356,0.103 0.12837,0.138 0.007,0.1 -0.0321,0.128 -0.11946,0.129 -0.72384,0.265 -1.06081,0.289 -2.24998,0.417 -0.19968,-0.02 -0.81121,-0.715 -0.34766,-0.577 -0.0392,-0.708 -0.27278,-0.523 -1.01267,-0.337 -0.32092,0.07 -0.31378,0.16 -0.48138,0.369 -0.009,0.105 0.0481,0.104 0.32091,0.314 -0.44928,0.659 -1.36568,1.045 -0.98058,0.538 -0.54734,0.113 -1.85596,-1.077 0.71493,-8.936 0.45819,-5.545"},"38061":{"name":"Mountrail, ND","path":"m 427.14351,66.066143 4.01859,0.225 -0.24781,3.98076 0.78445,0.04524 -0.49742,7.939 -0.0693,1.26315 0.5114,0.10185 0.0963,2.676 -8.00331,-0.513 -0.13728,2.04 -3.88844,-1.767 -0.0642,-0.07 -0.0321,-0.113 -0.066,-0.674 0.041,-0.322 0.15332,-0.603 0.0553,-0.112 0.55448,-0.667 0.33874,-0.209 0.25673,-0.233 0.23178,-0.314 0.20146,-0.408 0.009,-0.121 -0.0499,-0.07 -2.21611,-2.167 -1.15887,-0.854 -0.66501,-0.09 0.41719,-5.666 -0.8843,-0.06 0.27278,-3.946 10.03756,0.708"},"38053":{"name":"McKenzie, ND","path":"m 417.30028,75.025143 0.66501,0.09 1.15887,0.854 2.21611,2.168 0.0499,0.07 -0.009,0.121 -0.20146,0.408 -0.23178,0.314 -0.25673,0.233 -0.33874,0.209 -0.55448,0.667 -0.0553,0.112 -0.15332,0.603 -0.041,0.322 0.066,0.674 0.0321,0.113 0.0642,0.07 -0.2496,3.407 -7.12791,-0.531 -0.57765,7.876 -8.89652,-0.7 -5.92983,-0.514 0.13728,-1.535 1.16422,-13.612 1.85596,1.077 0.54734,-0.113 0.98058,-0.538 1.36568,-1.045 0.44928,-0.659 -0.32091,-0.314 -0.0481,-0.104 0.009,-0.105 0.48138,-0.369 0.31378,-0.16 0.32092,-0.06 1.01267,0.336 0.27278,0.523 0.0392,0.708 0.34766,0.577 0.81121,0.715 0.19968,0.02 2.24998,-0.417 1.06081,-0.289 0.72384,-0.265 0.11946,-0.129 0.0321,-0.128 -0.007,-0.1 -0.12837,-0.138 -0.23356,-0.103 -0.0321,-0.05 0.009,-0.04 0.27991,-0.385 0.40293,-0.419 0.19255,-0.138 1.57605,-0.135 3.53365,0.481 0.65253,0.346"},"38025":{"name":"Dunn, ND","path":"m 423.59916,83.824143 0.51347,-0.763 0.11232,-0.106 0.1141,-0.06 0.22464,0.04 0.85043,0.378 0.16224,0.103 0.0392,0.122 -0.007,0.144 -0.0642,0.168 -0.26564,3.175 0.0321,0.112 0.0642,0.1 0.76485,0.948 -0.37084,5.625 0.95562,0.06 -0.47424,7.256997 -6.00114,-0.402 -0.041,0.658 -8.0033,-0.545 0.5937,-7.947997 -1.04298,-0.08 0.57765,-7.876 7.12791,0.531 0.2496,-3.407 3.88844,1.767"},"38089":{"name":"Stark, ND","path":"m 426.25029,101.12514 0.76681,0.0378 -0.0501,0.67716 -0.37797,6.019 -0.13728,1.977 -13.17897,-0.877 -4.81197,-0.361 0.61866,-7.996 3.12537,0.234 8.0033,0.545 0.041,-0.658 6.00114,0.402"},"38033":{"name":"Golden Valley, ND","path":"m 402.85904,92.109143 -0.65075,7.963997 0.90926,0.07 -0.6347,7.992 -3.03801,-0.247 -0.16937,2.032 -3.8724,-0.328 0.19255,-2.3 1.33359,-15.699997 5.92983,0.514"},"38007":{"name":"Billings, ND","path":"m 402.85904,92.109143 8.89652,0.7 1.04298,0.08 -0.5937,7.947997 -3.12537,-0.234 -0.61866,7.996 -5.97796,-0.46 0.6347,-7.992 -0.90926,-0.07 0.65075,-7.963997"},"38011":{"name":"Bowman, ND","path":"m 411.61828,116.86614 -0.57052,7.675 -16.80177,-1.334 0.64183,-7.657 16.73046,1.316"},"38087":{"name":"Slope, ND","path":"m 402.48285,108.13814 5.97796,0.46 4.81197,0.361 -0.52951,7.973 -1.12499,-0.07 -16.73046,-1.316 0.51525,-5.955 3.8724,0.328 0.16937,-2.032 3.03801,0.247"},"38041":{"name":"Hettinger, ND","path":"m 426.45175,109.83614 0.72385,0.06 -0.45855,8.06184 0.7955,0.0712 -0.11232,1.655 -7.97121,-0.538 0.12837,-1.767 -6.81413,-0.442 0.52951,-7.973 13.17897,0.877"},"38001":{"name":"Adams, ND","path":"m 411.61828,116.86614 1.12499,0.07 6.81413,0.442 -0.12837,1.767 7.97121,0.538 -0.3851,5.971 -0.0321,0 -15.07595,-1.045 -0.85934,-0.06 0.57052,-7.675"},"38057":{"name":"Mercer, ND","path":"m 426.13975,88.188143 0.3441,0.177 4.45182,1.718 1.0198,0.305 0.22464,-0.04 0.36371,-0.184 0.77911,-0.483 0.54556,-0.176 3.99363,-0.337 0.28169,0 0.12837,0.06 0.86826,0.898 -0.0321,0.138 -0.13015,0.144 -0.58478,0.298 -0.1462,0.128 -0.27278,0.312 -0.0553,0.17 0.0232,0.16 1.24623,3.471 1.38172,1.205 -0.041,0.539 -7.96229,-0.465 -0.36193,5.937997 -5.23807,-0.322 0.0501,-0.67716 -0.76681,-0.0378 0.47424,-7.256997 -0.95562,-0.06 0.37084,-5.625"},"38037":{"name":"Grant, ND","path":"m 426.58903,107.85914 5.98688,0.361 -0.12123,1.992 6.65367,0.403 -0.33697,5.923 3.99185,0.215 0.25852,2.018 -1.52792,1.527 -1.63133,1.271 -1.50118,1.059 -3.42489,1.558 -1.2694,0.378 -0.0464,0 -1.5921,-0.33 -2.38013,-0.836 -1.05011,-0.353 -1.42273,0.121 0.22464,-3.48 0.11232,-1.654 -0.7955,-0.0722 0.45855,-8.06184 -0.72385,-0.06 0.13728,-1.977"},"38085":{"name":"Sioux, ND","path":"m 443.02175,118.77114 0.18363,-0.82 1.64024,-1.519 0.67393,-0.224 0.22464,0.201 0.62757,0.129 1.62419,0.103 0.40115,-0.127 1.7276,-0.677 0.13728,0.274 0.30487,0.804 0.11232,0.427 0.009,0.69 -0.2496,2.098 -0.066,0.216 -0.24782,0.506 -0.29774,0.305 -0.44215,0.66 -0.19255,0.458 -0.007,0.265 0.16046,1.43 0.0642,0.232 1.43878,2.79 -3.64776,-0.185 -0.36192,-0.02 -0.13015,0 -1.92728,-0.1 -1.45482,-0.08 -4.66042,-0.256 -1.63846,-0.09 -0.93244,-0.06 -2.0093,-0.112 -2.42827,-0.153 -2.30525,-0.136 -1.93619,-0.121 -0.25852,-0.02 -0.0392,0 -0.10341,0 0.16046,-2.491 1.42273,-0.121 1.05011,0.353 2.38013,0.836 1.5921,0.33 0.0464,0 1.2694,-0.378 3.42489,-1.558 1.50118,-1.059 1.63133,-1.272 1.52792,-1.526"},"38059":{"name":"Morton, ND","path":"m 426.967,101.84014 5.23807,0.322 13.07379,0.699 0.025,0.426 0.36192,1.501 0.96275,3.545 0.69889,1.381 0.78089,0.772 1.10895,0.562 0.92353,0.756 0.30665,0.538 0.44037,0.981 -0.49029,0.74 -0.14441,0.289 -0.24069,1.02 0.0161,0.201 0.0963,0.264 -1.7276,0.677 -0.40115,0.127 -1.62419,-0.103 -0.62757,-0.129 -0.22464,-0.201 -0.67393,0.224 -1.64024,1.519 -0.18363,0.82 -0.25852,-2.018 -3.99185,-0.215 0.33697,-5.923 -6.65367,-0.403 0.12123,-1.992 -5.98688,-0.361 0.37797,-6.019"},"38065":{"name":"Oliver, ND","path":"m 445.02926,98.867143 0.2496,3.993997 -13.07379,-0.699 0.36193,-5.938997 7.96229,0.466 0.041,-0.539 2.15371,-0.529 0.55447,-0.05 0.44928,0.119 0.36193,0.154 0.52238,0.401 0.27278,0.355 0.0571,0.128 0.0874,2.138"},"38075":{"name":"Renville, ND","path":"m 430.78234,60.352143 0.29061,-4.355 8.01757,0.474 -0.36906,6.342 0.68474,0.05191 -0.21762,3.932088 6.03501,0.353 -0.10519,1.97 -12.06111,-0.707 0.353,-5.923 -2.7474,-0.17 0.11945,-1.968"},"38101":{"name":"Ward, ND","path":"m 427.14351,66.066143 0.26386,-3.954 1.2443,0.04248 0.13921,-1.937478 1.99146,0.135 -0.11945,1.968 2.7474,0.17 -0.353,5.923 12.06111,0.707 -0.10519,1.983 0.42976,0.04694 -0.0588,6.157058 0.40115,1.801 0.19254,0 -0.21572,3.96 -14.02227,-0.779 -0.0963,-2.677 -0.5114,-0.10185 0.0692,-1.26315 0.49742,-7.939 -0.78445,-0.04524 0.24781,-3.98076 -4.01859,-0.225"},"38055":{"name":"McLean, ND","path":"m 445.76202,83.077143 6.01005,0.329 -0.18363,3.955 -1.36746,-0.07 -0.0802,1.166 -0.32805,6.743 -1.19096,-0.07 -0.20146,3.89 -3.39102,-0.161 -0.0874,-2.137 -0.0571,-0.129 -0.27278,-0.354 -0.52238,-0.402 -0.36193,-0.153 -0.44928,-0.119 -0.55447,0.05 -2.15371,0.529 -1.38172,-1.205 -1.24623,-3.471 -0.0232,-0.161 0.0553,-0.169 0.27278,-0.312 0.1462,-0.128 0.58478,-0.298 0.13015,-0.145 0.0321,-0.137 -0.86826,-0.898 -0.12837,-0.06 -0.28169,0 -3.99363,0.336 -0.54556,0.177 -0.77911,0.483 -0.36371,0.184 -0.22464,0.04 -1.0198,-0.305 -4.45182,-1.719 -0.3441,-0.176 -0.76485,-0.949 -0.0642,-0.1 -0.0321,-0.112 0.26564,-3.175 0.0642,-0.168 0.007,-0.144 -0.0392,-0.122 -0.16224,-0.103 -0.85043,-0.378 -0.22464,-0.04 -0.1141,0.06 -0.11232,0.105 -0.51347,0.763 0.13728,-2.039 8.00331,0.513 14.02227,0.779"},"38009":{"name":"Bottineau, ND","path":"m 439.09052,56.471143 20.10721,1.029 -0.2817,6.364 0.57052,0.03 -0.17829,3.944 -2.01642,-0.07 -2.00038,-0.09 0.0891,-1.994 -6.01184,-0.305 -4.04176,-0.201 -0.10341,1.977 -6.03501,-0.353 0.21762,-3.932088 -0.68474,-0.05191 0.36906,-6.342"},"38049":{"name":"McHenry, ND","path":"m 457.29184,67.760143 -0.16759,3.938 0.43259,0.0041 -0.18478,7.98391 0.4693,0.006 -0.0361,3.986955 -6.03323,-0.273 -6.01005,-0.329 0.21572,-3.96 -0.19254,0 -0.40115,-1.801 0.0588,-6.157058 -0.42976,-0.04694 0.21038,-3.953 0.10341,-1.977 4.04176,0.201 6.01184,0.305 -0.0891,1.994 2.00038,0.09"},"38083":{"name":"Sheridan, ND","path":"m 457.8053,83.679143 2.0093,0.1 -0.17651,3.961 0.57052,0.03 -0.33696,7.907 -1.26227,-0.05 -8.79668,-0.417 0.32805,-6.743 0.0802,-1.166 1.36746,0.07 0.18363,-3.954 6.03323,0.272"},"38015":{"name":"Burleigh, ND","path":"m 458.60938,95.621143 -0.36014,7.890997 0.62579,0.02 -0.44216,7.964 -9.21565,-0.451 -1.10895,-0.562 -0.78089,-0.772 -0.69889,-1.381 -0.96275,-3.545 -0.36192,-1.501 -0.025,-0.426 -0.2496,-3.992997 3.39102,0.16 0.20146,-3.89 1.19096,0.07 8.79668,0.417"},"38029":{"name":"Emmons, ND","path":"m 458.43287,111.49914 2.62795,0.12 -0.35538,8.00901 0.62103,0.035 -0.35301,7.82 -9.92523,-0.484 -0.19968,0 -1.43878,-2.79 -0.0642,-0.232 -0.16046,-1.429 0.007,-0.266 0.19255,-0.458 0.44215,-0.66 0.29774,-0.305 0.24782,-0.506 0.066,-0.216 0.2496,-2.098 -0.009,-0.69 -0.11232,-0.426 -0.30487,-0.804 -0.13728,-0.275 -0.0963,-0.264 -0.0161,-0.201 0.24069,-1.02 0.14441,-0.289 0.49029,-0.74 -0.44037,-0.98 -0.30665,-0.539 -0.92353,-0.756 9.21565,0.451"},"38051":{"name":"McIntosh, ND","path":"m 461.32647,119.66314 13.4268,0.481 0.54734,0.03 -0.29061,7.868 -11.43355,-0.435 -2.60299,-0.119 0.35301,-7.82"},"38047":{"name":"Logan, ND","path":"m 461.06082,111.61914 7.4007,0.313 6.55739,0.257 -0.26564,7.955 -13.4268,-0.481 -0.62103,-0.035 0.35538,-8.00901"},"38043":{"name":"Kidder, ND","path":"m 458.60938,95.621143 1.26227,0.05 8.67901,0.346 -0.29774,7.913997 0.54556,0.02 -0.33696,7.987 -7.4007,-0.313 -2.62795,-0.12 0.44216,-7.964 -0.62579,-0.02 0.36014,-7.890997"},"38103":{"name":"Wells, ND","path":"m 459.8146,83.775143 4.00967,0.163 8.01222,0.312 -0.12837,3.97 0.48138,0.02 -0.0642,1.945 -0.2086,5.946 -3.36606,-0.119 -8.67901,-0.346 0.33696,-7.907 -0.57052,-0.03 0.17651,-3.962"},"38069":{"name":"Pierce, ND","path":"m 459.30826,67.833143 10.06252,0.417 -0.13728,3.955 -5.47341,-0.216 -0.34409,7.962 0.5616,0.03 -0.15333,3.962 -4.00967,-0.162 -2.0093,-0.1 0.0361,-3.986955 -0.4693,-0.006 0.18478,-7.98391 -0.43259,-0.0041 0.16759,-3.938 2.01642,0.07"},"38079":{"name":"Rolette, ND","path":"m 459.30826,67.833143 0.17829,-3.944 -0.57052,-0.03 0.2817,-6.364 10.05895,0.402 -0.24782,6.388 0.51347,0.01 -0.15155,3.945 -10.06252,-0.417"},"38095":{"name":"Towner, ND","path":"m 469.25668,57.902143 8.05144,0.273 -0.15333,4.09 -0.0464,2.305 0.44928,0.02 -0.11945,3.953 -0.13728,3.952 -3.54435,-0.119 -4.52314,-0.169 0.13728,-3.955 0.15155,-3.945 -0.51347,-0.01 0.24782,-6.388"},"38005":{"name":"Benson, ND","path":"m 469.2335,72.205143 4.52314,0.169 -0.16046,4.901 0.11232,0.153 2.20261,1.290746 0.97982,2.284254 0.54734,-0.119 2.1481,-0.982356 0.8489,1.310356 1.92728,1.784 1.54397,0.07 -0.0321,1.566 -12.03794,-0.385 -8.01222,-0.312 0.15333,-3.962 -0.5616,-0.03 0.34409,-7.962 5.47341,0.216"},"38027":{"name":"Eddy, ND","path":"m 471.83649,84.250143 12.03794,0.385 0.28882,3.977 -0.0481,1.946 -11.9898,-0.37 0.0642,-1.945 -0.48138,-0.02 0.12837,-3.97"},"38031":{"name":"Foster, ND","path":"m 472.12532,90.188143 11.9898,0.37 -0.14442,5.954 -12.05398,-0.378 0.2086,-5.946"},"38093":{"name":"Stutsman, ND","path":"m 468.55066,96.015143 3.36606,0.119 12.05398,0.378 0.45159,0.0056 -0.002,1.972448 -0.15155,5.969999 0.44037,0 -0.19968,7.979 -9.49022,-0.257 -6.55739,-0.257 0.33696,-7.987 -0.54556,-0.02 0.29774,-7.913999"},"38045":{"name":"LaMoure, ND","path":"m 484.50913,112.44614 6.43616,0.162 -0.18542,7.978 -15.45926,-0.417 -0.54734,-0.03 0.26564,-7.955 9.49022,0.257"},"38021":{"name":"Dickey, ND","path":"m 475.30061,120.16914 15.45926,0.417 0.4582,0 -0.20146,7.947 -11.49773,-0.344 -4.50888,-0.161 0.29061,-7.868"},"38081":{"name":"Sargent, ND","path":"m 491.21807,120.59514 11.58687,0.209 0.33875,0 -0.0731,5.149 0.12837,1.423 0.33696,1.39 -12.04507,-0.217 -0.47424,-0.02 0.20146,-7.947"},"38073":{"name":"Ransom, ND","path":"m 490.94529,112.60814 5.59286,0.128 6.38089,0.113 -0.1141,7.955 -11.58687,-0.209 -0.4582,0 0.18542,-7.978"},"38003":{"name":"Barnes, ND","path":"m 492.3912,98.675143 4.00967,0.09 -0.1018,5.942977 0.38347,0.044 -0.14442,7.987 -5.59286,-0.128 -6.43616,-0.162 0.19968,-7.978 -0.44037,0 0.15155,-5.970997 7.97121,0.185"},"38039":{"name":"Griggs, ND","path":"m 492.22361,88.807143 0.16759,9.868 -7.97121,-0.185 0.002,-1.972448 -0.45159,-0.0056 0.19255,-7.9 8.06036,0.195"},"38091":{"name":"Steele, ND","path":"m 492.22361,88.807143 1.59923,0.03 6.40229,0.121 0.18542,9.89 -4.00968,-0.09 -4.00967,-0.09 -0.16759,-9.868"},"38063":{"name":"Nelson, ND","path":"m 487.69868,76.778143 6.03502,0.135 -0.0802,3.971 0.32805,0 0,0.03 -0.15868,7.914 -1.59923,-0.03 -8.06036,-0.194 -0.28882,-3.978 0.0321,-1.565 0.0713,-2.42 1.59924,0.04 0.11232,-3.954 2.00929,0.04"},"38071":{"name":"Ramsey, ND","path":"m 487.49722,68.830143 -0.0713,2.669 0.37796,1.301 -0.10519,3.978 -2.00929,-0.04 -0.11232,3.954 -1.59924,-0.04 -0.0713,2.419 -1.54397,-0.07 -1.92728,-1.784 -0.8489,-1.310356 -2.1481,0.982356 -0.54734,0.119 -0.97982,-2.284254 -2.20261,-1.290746 -0.11232,-0.153 0.16046,-4.901 3.54435,0.12 0.13728,-3.953 10.05895,0.289"},"38019":{"name":"Cavalier, ND","path":"m 477.30812,58.175143 16.07257,0.401 -0.12123,6.421 0.34587,0 -0.0802,3.977 -6.02788,-0.153 -10.05895,-0.289 0.11945,-3.953 -0.44928,-0.02 0.0464,-2.306 0.15333,-4.09"},"38067":{"name":"Pembina, ND","path":"m 493.38069,58.576143 11.04845,0.177 -0.0731,0.07 -0.0713,0.337 -0.0178,0.339 0.0892,0.481 1.10894,3.623 0.29774,0.884 0.67571,1.535 -1.12677,3.126 0.0731,0.04 -11.85965,-0.209 0.0802,-3.978 -0.34587,0 0.12123,-6.42"},"38099":{"name":"Walsh, ND","path":"m 487.49722,68.830143 6.02788,0.153 11.85965,0.209 0.12124,0.06 0.36014,0.442 0.0981,5.481 -0.50634,1.952 -11.72415,-0.218 -6.03502,-0.135 0.10519,-3.978 -0.37796,-1.301 0.0713,-2.669"},"38035":{"name":"Grand Forks, ND","path":"m 505.45785,77.131143 -0.009,0.467 0,0.06 0.36192,1.398 1.49583,5.391 2.02355,4.622 -9.10511,-0.104 -6.40229,-0.121 0.15868,-7.914 0,-0.03 -0.32805,0 0.0802,-3.971 11.72415,0.218"},"38097":{"name":"Traill, ND","path":"m 500.22513,88.960143 9.10511,0.103 0.53843,3.962 0.2817,5.978 -9.73982,-0.153 -0.18542,-9.89"},"31045":{"name":"Dawes, NE","path":"m 397.53895,191.53414 8.42941,0.651 3.48729,0.265 -0.36014,4.948 0.22465,1.344 -0.46712,6.643 -11.32122,-0.786 -0.59548,-0.05 0.61866,-8.013 -0.14441,-0.898 -0.0392,-1.771 0.16759,-2.335"},"31165":{"name":"Sioux, NE","path":"m 397.53895,191.53414 -0.16759,2.335 0.0392,1.771 0.14441,0.898 -0.61866,8.013 0.59548,0.05 -0.61866,7.987 0.71494,0.06 -0.15333,2.002 -11.03953,-0.854 1.94511,-23.013 9.1586,0.749"},"31147":{"name":"Richardson, NE","path":"m 523.07974,259.89114 7.98726,-0.03 4.29849,6.044 -0.55447,0 -7.84284,0.03 -3.89736,0 0.009,-6.042"},"31133":{"name":"Pawnee, NE","path":"m 515.17984,259.85214 6.91932,0.02 0.98058,0.02 -0.009,6.042 -3.99363,0 -3.92766,-0.02 0.0303,-6.051"},"31127":{"name":"Nemaha, NE","path":"m 522.09916,253.82414 6.2026,-0.02 0.22643,-0.491 0.65075,0.578 -0.37797,0.676 -0.19968,0.185 0.0963,0.408 1.13212,2.846 1.21414,1.182 0.0463,0.119 -0.005,0.04 0,0.03 -0.0178,0.418 0,0.06 -7.98726,0.03 -0.98058,-0.02 0,-6.051"},"31097":{"name":"Johnson, NE","path":"m 522.09916,253.82414 0,6.051 -6.91932,-0.02 0.025,-6.037 6.89436,0"},"31131":{"name":"Otoe, NE","path":"m 525.779,247.78914 1.5511,4.598 0.97166,1.414 -6.2026,0.02 -6.89436,0 0.0232,-6.049 10.55102,0.02"},"31025":{"name":"Cass, NE","path":"m 517.75965,241.73114 0.12837,0.199 0.2496,0.227 1.26941,0.724 0.15332,0.02 0.46533,-0.177 0.51347,-0.256 0.26565,-0.209 0.17828,-0.241 0.3851,-0.363 0.16938,-0.111 0.75415,-0.282 0.38688,0 2.36052,0.147 0.13015,0.02 0.3851,0.275 0.76485,3.358 -0.54021,2.732 -10.55102,-0.02 0.0321,-5.376 2.42596,-0.0355 0.0736,-0.62354"},"31153":{"name":"Sarpy, NE","path":"m 517.62416,238.37214 6.95854,-0.02 1.20522,0.724 -0.23356,2.619 -0.3851,-0.275 -0.13015,-0.02 -2.36052,-0.147 -0.38688,0 -0.75415,0.282 -0.16938,0.111 -0.3851,0.363 -0.17828,0.241 -0.26565,0.209 -0.51347,0.256 -0.46533,0.177 -0.15332,-0.02 -1.26941,-0.724 -0.2496,-0.227 -0.12837,-0.199 -0.13549,-3.359"},"31055":{"name":"Douglas, NE","path":"m 515.17984,233.65614 2.4354,0.02 6.71072,0 0.25674,4.677 -6.95854,0.02 -0.39048,-2.56592 -2.05384,-2.15008"},"31177":{"name":"Washington, NE","path":"m 515.663,226.93814 5.51976,0.04 2.39618,4.065 0.74702,2.635 -6.71072,0 -0.0336,-0.86666 -1.13956,-0.10066 -0.47422,-1.09868 -0.16046,-0.417 -0.15333,-0.555 0.009,-3.696"},"31021":{"name":"Burt, NE","path":"m 518.619,218.54114 2.25889,4.195 0.30487,4.243 -5.51976,-0.04 0.0363,-1.26506 -1.91723,-0.0929 0.0392,-6.34 4.863,0.0545 -0.0653,-0.75346"},"31173":{"name":"Thurston, NE","path":"m 510.94553,213.15814 6.47716,0.07 -0.21038,1.422 1.40669,3.889 0.0653,0.75346 -4.863,-0.0545 0.0214,-1.56323 -4.58374,-0.18977 0.0624,-4.026 1.6242,-0.303"},"31043":{"name":"Dakota, NE","path":"m 512.52158,207.47514 3.24661,0.829 0.57765,0.04 0.22464,0.09 0.17829,0.248 0.0713,0.265 0.007,0.355 -0.11945,0.319 0.19968,2.646 0.51525,0.965 -6.47716,-0.07 0.17325,-5.66223 1.4028,-0.0208"},"31051":{"name":"Dixon, NE","path":"m 506.16387,202.00514 3.52117,1.315 1.37281,0.869 0.18541,0.419 0.0963,0.385 -0.0642,0.271 -0.009,0.21 0.0499,0.209 1.20522,1.792 -1.4028,0.0208 -0.17325,5.66223 -1.6242,0.303 -3.32975,0.002 0.0439,-2.04111 0.12837,-9.417"},"31179":{"name":"Wayne, NE","path":"m 500.11281,211.33314 5.92269,0.09 -0.0439,2.04111 3.32975,-0.002 -0.0624,4.026 -3.3197,-0.04 -5.92983,-0.08 0.10341,-6.033"},"31139":{"name":"Pierce, NE","path":"m 492.09346,217.26314 0.15333,-8.05 5.90664,0.09 1.99057,-0.0217 -0.0312,2.0547 -0.10341,6.033 -7.91594,-0.103"},"31027":{"name":"Cedar, NE","path":"m 498.30498,199.30154 1.04476,0.2426 0.81063,-0.34897 0.81062,-0.17405 1.05,0.45096 1.05,0.1303 0.0324,0.828 0.96527,0.68225 2.09519,0.88751 -0.12837,9.417 -5.92269,-0.09 0.0312,-2.0547 -1.99057,0.0217 0.15155,-9.9986"},"31107":{"name":"Knox, NE","path":"m 484.46991,198.78814 2.36052,1.07 1.83279,1.582 0.36192,0.16 0.29774,0.05 0.27991,-0.01 0.85221,-0.128 0.22464,-0.14 0.47425,-0.431 0.353,-0.506 0.43219,-0.54489 0.19682,-0.62334 0.79832,-0.12645 0.51065,0.57968 0.56878,0.0513 0.50899,-0.68617 0.51858,0.13525 0.41893,0.67338 0.65847,-0.72603 0.62025,0.081 0.11689,0.48611 0.91491,-0.23824 0.53431,-0.18914 -0.15155,9.9986 -5.90664,-0.09 -7.86603,-0.153 0.0963,-7.492 -0.007,-2.78"},"31053":{"name":"Dodge, NE","path":"m 513.78207,225.58014 1.91723,0.0929 -0.0363,1.26506 -0.009,3.696 0.15333,0.555 0.16046,0.417 0.47422,1.09868 1.13956,0.10066 0.0336,0.86666 -2.4354,-0.02 -7.44883,-1.448 0,-0.02 0.057,-6.671 5.99401,0.07"},"31037":{"name":"Colfax, NE","path":"m 505.84295,225.49014 1.94511,0.02 -0.057,6.671 -0.24782,0 -0.23355,0.06 -2.57269,1.245 -1.79891,0.41 -1.13391,0 0.13015,-8.448 3.96867,0.05"},"31039":{"name":"Cuming, NE","path":"m 505.93923,217.44814 3.3197,0.04 4.58374,0.18977 -0.0214,1.56323 -0.0392,6.34 -5.99401,-0.07 -1.94511,-0.02 0.0963,-8.042"},"31167":{"name":"Stanton, NE","path":"m 505.93923,217.44814 -0.0963,8.042 -3.96867,-0.05 -1.9772,-0.03 0.11232,-8.046 5.92983,0.08"},"31119":{"name":"Madison, NE","path":"m 492.09346,217.26314 7.91594,0.103 -0.11232,8.046 -7.89811,-0.114 0.0392,-4.028 0.0553,-4.007"},"31003":{"name":"Antelope, NE","path":"m 492.09346,217.26314 -0.0553,4.007 -7.87494,-0.135 0.0161,-4.024 0.20146,-8.051 7.86603,0.153 -0.15333,8.05"},"31011":{"name":"Boone, NE","path":"m 484.16325,221.13514 7.87494,0.135 -0.0392,4.028 -0.082,4.997 -0.9467,0 -2.87755,0.637 -0.81121,0.328 -3.28761,-0.07 0.0731,-6.034 0.0963,-4.011"},"31141":{"name":"Platte, NE","path":"m 499.89708,225.41214 1.9772,0.03 -0.13015,8.448 -1.95937,-0.419 -3.97937,1.374 0.0941,-1.38226 -1.87698,-0.0887 0.0867,-3.01781 -2.19232,-0.0612 0.082,-4.997 7.89811,0.114"},"31155":{"name":"Saunders, NE","path":"m 507.73101,232.20814 7.44883,1.448 2.05384,2.15008 0.39048,2.56592 0.13549,3.359 -0.0736,0.62354 -2.42596,0.0355 0.009,-0.668 -7.67525,-0.08 0.13728,-9.433"},"31159":{"name":"Seward, NE","path":"m 507.55451,241.64114 -0.11946,8.063 -7.88385,-0.107 0.11232,-8.066 7.89099,0.11"},"31023":{"name":"Butler, NE","path":"m 499.66352,241.53114 0.12124,-8.06 1.95937,0.419 1.13391,0 1.79891,-0.41 2.57269,-1.245 0.23355,-0.06 0.24782,0 0,0.02 -0.13728,9.433 -0.0392,0 -7.89099,-0.11"},"31143":{"name":"Polk, NE","path":"m 495.80539,234.84514 3.97937,-1.374 -0.12124,8.06 -7.89811,-0.128 0.0232,-2.944 2.65516,-3.06972 1.36164,-0.54428"},"31185":{"name":"York, NE","path":"m 499.66352,241.53114 -0.11232,8.066 -7.90702,-0.145 -0.025,0 0.14619,-8.049 7.89811,0.128"},"31081":{"name":"Hamilton, NE","path":"m 491.76541,241.40314 -0.14619,8.049 -7.83394,-0.16 -0.0802,0 0.0963,-4.026 0.85221,-1.004 1.81496,-1.809 2.14658,-1.714 0.65075,-0.452 0.0963,0.149 0.025,0 0.37619,-0.135 0.89322,-0.426 0.21572,-0.17 0.27456,-0.31 0.49743,-0.668 0.14441,-0.268 -0.0232,2.944"},"31125":{"name":"Nance, NE","path":"m 483.99388,231.18014 3.28761,0.07 0.81121,-0.328 2.87755,-0.637 0.9467,0 2.19232,0.0612 -0.0867,3.01781 -0.0642,1.985 -2.45145,-0.02 -2.61903,0.272 -1.51901,0.321 -0.73989,0.309 -2.12696,-0.04 -0.35479,0 0.0963,-2.997 -0.21751,-0.01 -0.0874,0 0.0553,-2.007"},"31121":{"name":"Merrick, NE","path":"m 484.02597,233.18714 0.21751,0.01 -0.0963,2.997 0.35479,0 2.12696,0.04 0.73989,-0.309 1.51901,-0.321 2.61903,-0.272 2.45145,0.02 0.0642,-1.985 1.87697,0.0887 -0.0941,1.38226 -1.36164,0.54428 -2.65516,3.06972 -0.14441,0.267 -0.49743,0.669 -0.27456,0.31 -0.21572,0.17 -0.89322,0.426 -0.37619,0.135 -0.025,0 -0.0963,-0.15 -0.65075,0.453 -2.14658,1.714 -1.81496,1.809 -0.85221,1.004 0.025,-4.033 0.19968,-8.046"},"31079":{"name":"Hall, NE","path":"m 476.32932,241.03214 7.49697,0.201 -0.025,4.033 -0.0963,4.026 -7.60038,-0.216 0.22464,-8.044"},"31093":{"name":"Howard, NE","path":"m 476.176,232.97114 7.76261,0.216 0.0874,0 -0.19968,8.046 -7.49697,-0.201 -0.45819,-0.02 0.30487,-8.045"},"31163":{"name":"Sherman, NE","path":"m 476.04763,232.97114 0.12837,0 -0.30487,8.045 -7.91595,-0.259 0.34588,-8.026 7.74657,0.24"},"31015":{"name":"Boyd, NE","path":"m 468.69507,195.63314 12.67086,0.371 3.10398,2.784 0.007,2.78 -2.65113,-0.185 -1.80961,-0.337 -2.7474,-0.931 -1.5101,-0.522 -1.70442,-0.979 -0.41006,-0.419 -0.20146,-0.07 -0.26387,0 -0.19255,0.05 -2.90073,1.205 -1.45482,0.622 -0.12837,0.104 0.19255,-4.466"},"31089":{"name":"Holt, NE","path":"m 468.50252,200.09914 0.12837,-0.104 1.45482,-0.622 2.90073,-1.205 0.19255,-0.05 0.26387,0 0.20146,0.07 0.41006,0.419 1.70442,0.978 1.5101,0.523 2.7474,0.931 1.80961,0.336 2.65113,0.186 -0.0963,7.492 -0.20146,8.051 -7.8268,-0.203 -7.84284,-0.234 -0.19969,0 0.25674,-7.367 0.0713,-7.939 -0.1355,-1.262"},"31175":{"name":"Valley, NE","path":"m 468.42229,224.71114 7.72875,0.25 0.12123,0 -0.22464,8.01 -7.74657,-0.24 0.12123,-8.02"},"31077":{"name":"Greeley, NE","path":"m 484.06698,225.14614 -0.0731,6.034 -0.0553,2.007 -7.76261,-0.216 -0.12837,0 0.22464,-8.01 7.79471,0.185"},"31183":{"name":"Wheeler, NE","path":"m 484.1793,217.11114 -0.0161,4.024 -0.0963,4.011 -7.79471,-0.185 -0.12123,0 0.20146,-8.053 7.8268,0.203"},"31071":{"name":"Garfield, NE","path":"m 468.25292,224.70214 0.25674,-8.028 7.84284,0.234 -0.20146,8.053 -7.72875,-0.25 -0.16937,0"},"31115":{"name":"Loup, NE","path":"m 468.30997,216.66714 0.19969,0 -0.25674,8.028 -7.9302,-0.279 0.30487,-7.995 0.41719,0.02 7.26519,0.217"},"31149":{"name":"Rock, NE","path":"m 468.30997,216.66714 -7.26519,-0.217 0.28882,-8.059 -0.20859,0 0.24247,-6.853 1.26762,0.271 0.93244,0.105 0.33874,-0.05 0.5937,-0.219 3.68876,-1.339 0.14441,-0.07 0.16937,-0.144 0.1355,1.262 -0.0713,7.939 -0.25674,7.367"},"31103":{"name":"Keya Paha, NE","path":"m 452.88102,194.99814 11.12867,0.467 4.68538,0.168 -0.19255,4.466 -0.16937,0.144 -0.14441,0.07 -3.68876,1.339 -0.5937,0.219 -0.33874,0.05 -0.93244,-0.105 -1.26762,-0.271 -0.1462,0.06 -0.312,0 -1.23909,-0.218 -4.61942,-1.349 -0.96453,-0.392 -0.32092,-0.186 -1.04654,-0.932 0.16224,-3.518"},"31017":{"name":"Brown, NE","path":"m 461.36748,201.53814 -0.24247,6.853 0.20859,0 -0.28882,8.059 -0.41719,-0.02 -8.15663,-0.331 0.35301,-8.027 -0.10519,-9.554 1.04654,0.932 0.32092,0.186 0.96453,0.392 4.61942,1.349 1.23909,0.218 0.312,0 0.1462,-0.06"},"31009":{"name":"Blaine, NE","path":"m 450.77545,216.01614 1.69551,0.08 8.15663,0.331 -0.30487,7.995 -9.6275,-0.387 -0.24782,-0.02 0.32805,-8.004"},"31041":{"name":"Custer, NE","path":"m 460.32272,224.42314 7.9302,0.279 0.16937,0 -0.12123,8.02 -0.34588,8.026 -3.76007,-0.117 -13.75662,-0.557 -0.24247,0 0.13728,-2.685 0.15332,-2.312 0.0963,-2.926 -0.2496,-0.105 0.36192,-8.012 9.6275,0.387"},"31019":{"name":"Buffalo, NE","path":"m 464.19511,240.64014 3.76007,0.117 7.91595,0.259 0.45819,0.02 -0.22464,8.044 -0.057,0.216 -0.54734,0.06 -1.25336,0.25 -0.66501,0.313 -0.7078,0.136 -2.11448,-0.07 -2.46571,-0.209 -0.1462,-0.06 -4.11308,-0.378 0.16046,-8.702"},"31047":{"name":"Dawson, NE","path":"m 450.43849,240.08314 13.75662,0.557 -0.16046,8.702 -3.90627,-0.475 -5.84246,-0.579 -4.18618,-0.193 0.33875,-8.012"},"31137":{"name":"Phelps, NE","path":"m 460.12838,248.86714 3.90627,0.475 4.11308,0.378 -0.24068,7.174 -7.8589,-0.289 -0.20146,0 0.28169,-7.729"},"31099":{"name":"Kearney, NE","path":"m 476.04763,249.29214 -0.2086,7.859 -0.0571,0 -7.87493,-0.25 0.24068,-7.174 0.1462,0.06 2.46571,0.209 2.11448,0.07 0.7078,-0.136 0.66501,-0.313 1.25336,-0.25 0.54734,-0.06"},"31001":{"name":"Adams, NE","path":"m 476.04763,249.29214 0.057,-0.216 7.60038,0.216 0.0802,0 -0.19255,8.062 -7.7537,-0.203 0.2086,-7.859"},"31035":{"name":"Clay, NE","path":"m 491.61922,249.45214 0.025,0 -0.14442,8.07 -7.8268,-0.168 -0.0802,0 0.19255,-8.062 7.83394,0.16"},"31059":{"name":"Fillmore, NE","path":"m 499.5512,249.59714 -0.11945,8.06 -7.87672,-0.135 -0.0553,0 0.14442,-8.07 7.90702,0.145"},"31151":{"name":"Saline, NE","path":"m 499.5512,249.59714 7.88385,0.107 -0.0321,4.04 -0.0963,4.025 -7.87494,-0.112 0.11945,-8.06"},"31109":{"name":"Lancaster, NE","path":"m 507.59373,241.64114 7.67525,0.08 -0.009,0.668 -0.0321,5.376 -0.0232,6.049 -7.80184,-0.07 0.0321,-4.04 0.11946,-8.062 0.0392,0"},"31067":{"name":"Gage, NE","path":"m 515.2048,253.81514 -0.025,6.037 -0.0303,6.051 -5.97974,-0.05 -1.9362,-0.02 0.0731,-8.061 0.0963,-4.025 7.80184,0.07"},"31095":{"name":"Jefferson, NE","path":"m 499.43175,257.65714 7.87494,0.112 -0.0731,8.061 -7.93199,-0.105 0.13015,-8.068"},"31169":{"name":"Thayer, NE","path":"m 499.43175,257.65714 -0.13015,8.068 -7.91416,-0.127 0.16759,-8.076 7.87672,0.135"},"31129":{"name":"Nuckolls, NE","path":"m 491.49976,257.52214 0.0553,0 -0.16759,8.076 -1.92906,-0.04 -5.98688,-0.144 0.20146,-8.057 7.8268,0.168"},"31181":{"name":"Webster, NE","path":"m 475.83903,257.15114 7.7537,0.203 0.0802,0 -0.20146,8.057 -4.03285,-0.09 -3.88131,-0.105 0.22464,-8.067 0.0571,0"},"31061":{"name":"Franklin, NE","path":"m 475.78198,257.14414 -0.22464,8.067 -5.95479,-0.185 -1.95937,-0.06 0.26387,-8.076 7.87493,0.25"},"31083":{"name":"Harlan, NE","path":"m 460.04815,256.60514 7.8589,0.289 -0.26387,8.076 -7.81967,-0.281 -0.041,0 0.26564,-8.084"},"31073":{"name":"Gosper, NE","path":"m 460.12838,248.86714 -0.28169,7.729 -7.87494,-0.322 0.082,-2.022 1.98433,0.09 0.24782,-6.058 5.84246,0.579"},"31065":{"name":"Furnas, NE","path":"m 450.18175,256.22014 1.79,0.05 7.87494,0.322 0.20146,0 -0.26564,8.084 -9.60967,-0.385 -0.27278,-0.02 0.28169,-8.066"},"31145":{"name":"Red Willow, NE","path":"m 440.42589,255.76914 9.75586,0.451 -0.28169,8.066 -9.52944,-0.457 -0.34766,-0.03 0.40293,-8.035"},"31087":{"name":"Hitchcock, NE","path":"m 430.60584,255.23114 9.49913,0.531 0.32092,0 -0.40293,8.035 -9.88245,-0.529 0.46533,-8.044"},"31057":{"name":"Dundy, NE","path":"m 430.26888,255.21614 0.33696,0.01 -0.46533,8.044 -1.519,-0.08 -11.18573,-0.694 0.50634,-8.001 12.32676,0.716"},"31063":{"name":"Frontier, NE","path":"m 440.4972,247.64314 9.60254,0.452 4.18618,0.193 -0.24782,6.058 -1.98433,-0.09 -0.082,2.022 -1.79,-0.05 -9.75586,-0.451 -0.32092,0 0.39223,-8.119"},"31085":{"name":"Hayes, NE","path":"m 440.4972,247.64314 -0.39223,8.119 -9.49913,-0.531 -0.33696,-0.01 0.41006,-8.046 1.68659,0.1 8.13167,0.375"},"31029":{"name":"Chase, NE","path":"m 418.4645,246.44814 12.21444,0.722 -0.41006,8.046 -12.32676,-0.716 0.52238,-8.052"},"31135":{"name":"Perkins, NE","path":"m 418.90665,239.39914 0.007,-0.03 13.80654,0.82 -0.35479,7.08 -1.68659,-0.1 -12.21444,-0.722 0.0802,-1.207 0.36192,-5.842"},"31111":{"name":"Lincoln, NE","path":"m 442.41022,231.66314 7.92308,0.385 0.2496,0.105 -0.0963,2.926 -0.15332,2.312 -0.13728,2.685 0.24247,0 -0.33875,8.012 -9.60254,-0.452 -8.13167,-0.375 0.35479,-7.08 0.16046,-9.055 9.52944,0.53"},"31101":{"name":"Keith, NE","path":"m 420.63425,230.40814 9.89136,0.581 2.35517,0.144 -0.16046,9.055 -13.80654,-0.82 0.2496,-5.029 0.2075,-4.03953 1.26337,0.10853"},"31113":{"name":"Logan, NE","path":"m 442.83633,223.66714 7.61107,0.353 0.24782,0.02 -0.36192,8.012 -7.92308,-0.385 0.42611,-7.996"},"31117":{"name":"McPherson, NE","path":"m 430.99272,222.95214 4.37873,0.265 3.00414,0.209 2.23572,0.112 2.22502,0.129 -0.42611,7.996 -9.52944,-0.53 -2.35517,-0.144 0.46711,-8.037"},"31005":{"name":"Arthur, NE","path":"m 421.12454,222.38314 9.53835,0.553 0.32983,0.02 -0.46711,8.037 -9.89136,-0.581 0.49029,-8.025"},"31171":{"name":"Thomas, NE","path":"m 440.9554,215.49414 9.82005,0.522 -0.32805,8.004 -7.61107,-0.353 -2.22502,-0.129 0.34409,-8.044"},"31091":{"name":"Hooker, NE","path":"m 431.11218,214.87714 9.84322,0.617 -0.34409,8.044 -2.23572,-0.112 -3.00414,-0.209 -4.37873,-0.265 -0.32983,-0.02 0.44929,-8.059"},"31075":{"name":"Grant, NE","path":"m 420.13683,216.13014 0.99756,0.0773 0.15774,-2.02227 9.82005,0.692 -0.44929,8.059 -9.53835,-0.553 -1.40669,-0.08 0.41898,-6.171"},"31049":{"name":"Deuel, NE","path":"m 409.64107,233.69514 9.52231,0.644 -0.2496,5.029 -0.007,0.03 -9.80222,-0.656 0.53664,-5.048"},"31069":{"name":"Garden, NE","path":"m 420.13683,216.13014 -0.41898,6.171 1.40669,0.08 -0.49029,8.025 -1.26337,-0.10853 -0.2075,4.03953 -9.52231,-0.644 0.32864,-3.64362 -0.51641,-0.0367 0.0844,-1.37372 0.39223,-5.721 -0.37797,-1.336 -0.11054,-0.672 -0.025,-0.412 0.0571,-1.228 0.28883,-3.744 10.37452,0.602"},"31033":{"name":"Cheyenne, NE","path":"m 409.53767,228.64114 -0.0844,1.37372 0.51641,0.0367 -0.32864,3.64362 -0.53664,5.048 -0.55626,-0.03 -12.5514,-0.918 0.79516,-9.055 0.16755,0.0217 0.0589,-1.01073 12.51932,0.893"},"31123":{"name":"Morrill, NE","path":"m 409.41643,215.51014 0.34588,0.02 -0.28883,3.744 -0.0571,1.228 0.025,0.412 0.11054,0.672 0.37797,1.336 -0.39223,5.721 -12.51932,-0.893 0.44037,-6.032 0.66858,-6.999 11.28913,0.793"},"31105":{"name":"Kimball, NE","path":"m 396.79193,228.73714 -0.79516,9.055 -3.30188,-0.255 -8.22794,-0.674 0.77911,-9.033 11.54587,0.907"},"31007":{"name":"Banner, NE","path":"m 397.45872,221.71614 -0.44037,6.032 -0.0589,1.01073 -0.16755,-0.0217 -11.54587,-0.907 0.58657,-7.03 11.62609,0.916"},"31157":{"name":"Scotts Bluff, NE","path":"m 397.47477,214.65214 0.65253,0.06 -0.66858,6.999 -11.62609,-0.916 0.60261,-7.002 11.03953,0.854"},"31013":{"name":"Box Butte, NE","path":"m 409.41643,215.51014 -11.28913,-0.793 -0.65253,-0.06 0.15333,-2.002 -0.71494,-0.06 0.61866,-7.987 11.32122,0.786 0.40293,0.02 -0.50944,8.2476 0.79532,0.1174 -0.12542,1.735"},"31031":{"name":"Cherry, NE","path":"m 421.33313,193.26714 0,0 3.46234,0.226 4.17904,0.321 6.66081,0.346 5.37713,0.282 6.07424,0.281 3.26265,0.154 1.19809,0.06 1.33359,0.07 -0.16224,3.518 0.10519,9.554 -0.35301,8.027 -1.69551,-0.08 -9.82005,-0.522 -9.84322,-0.617 -9.82005,-0.692 -0.57765,-0.05 0.61449,-9.34013 -0.29654,-0.0317 0.24365,-7.20003 -0.14913,-0.004 0.20621,-4.29448"},"31161":{"name":"Sheridan, NE","path":"m 421.33313,193.26714 -0.20621,4.29448 0.14913,0.004 -0.24365,7.20003 0.29654,0.0317 -0.61449,9.34013 0.57765,0.05 -0.15774,2.02227 -0.99756,-0.0773 -10.37452,-0.602 -0.34588,-0.02 0.12542,-1.735 -0.79532,-0.1184 0.50944,-8.2466 -0.40293,-0.02 0.46712,-6.643 -0.22465,-1.344 0.36014,-4.948 11.87748,0.817"},"33007":{"name":"Coos, NH","path":"m 922.5264,90.736143 0.61865,1.767 3.39994,10.252997 0.24068,0.772 3.01484,9.586 -0.23534,1.181 -3.15541,0.6777 -0.34945,2.42076 0.20206,1.22582 -0.42315,0.24557 -0.59353,-1.55406 -0.47862,-0.26719 -0.54756,-0.74977 -0.44689,0.15617 -0.65075,-0.708 -0.48315,-0.128 -1.61946,0.50533 -0.51642,-1.01133 -1.76504,-0.298 -1.65094,-1.23 0.34409,0.03 0.51525,-0.378 0.041,-0.06 0.22464,-0.29 0.0945,-0.137 0.066,-0.104 0.79516,-1.398 0.0802,-0.137 0,0 0.18542,-0.515 -0.32106,-1.06649 0.53678,-0.93451 -0.41719,-0.673 -0.0713,-0.115 -0.40293,-0.499 -0.73811,-0.907 -0.60439,-0.596 -0.1355,-0.383 1.15498,-4.11309 -1.13178,-1.529907 0.38688,-0.795 -0.1355,-1.366 0.3851,-4.154 1.29258,-1.688 0.17829,-0.127 0.34409,0.177 0.14442,0.287 0.0731,0.08 0.51525,0.257 0.8433,0.06 0.70602,-0.147 0.10519,-0.09 0.3851,-1.526"},"33009":{"name":"Grafton, NH","path":"m 916.01001,114.97814 1.07685,-1.398 1.65094,1.23 1.76504,0.298 0.51642,1.01133 1.61946,-0.50533 0.48315,0.128 0.65075,0.708 0.78981,1.139 1.1553,1.76 0.6668,3.487 -3.10933,1.35 0.9057,2.074 0.36192,0.65 0.62303,1.21255 -1.86733,0.95167 0.20478,1.57789 -0.91985,1.57789 -1.22352,0.37752 -1.01042,-0.93852 -0.47424,1.003 -0.42611,1.213 -1.05546,0.08 -1.84527,0.07 -1.87201,-0.289 -1.99325,0.161 -0.36612,-0.42147 0.28888,-1.28623 -0.22848,-0.58191 0.4165,-0.84518 0.33092,-0.18948 0.57805,-1.00673 0.0553,-1.15913 -0.26783,-1.15912 0.62544,-1.27316 0.11229,-1.19714 -0.40087,-0.47492 0.32135,-1.69128 0.29371,-0.84564 -0.35248,-0.31348 0.0553,-1.15913 -0.27277,-0.217 -0.29953,-0.403 -0.52773,-1.84 0,-0.144 0.0553,-0.234 0.53843,-0.972 0.0499,-0.04 0.0838,-0.08 1.11252,-0.692 1.12499,-0.707"},"33017":{"name":"Strafford, NH","path":"m 931.80089,130.37414 0.4557,-1.06805 0.63087,1.26784 0.44305,-0.0229 0.38859,-0.59269 0.42836,0.006 0.23707,0.82303 0.35382,-0.63656 0.37154,-0.88595 0.27991,3.135 0.12302,0.513 0.15154,0.323 0.46712,0.649 0.29595,0.153 0.80586,0.401 1.94333,1.159 0.0499,0.06 0.624,2.507 -0.62065,0.0834 0.11432,0.90658 -1.06729,0.0234 -2.25372,0.72355 0.41006,-1.456 -4.4006,-1.79097 0.12123,-0.289 0.79516,-1.913 -0.79516,-1.784 -0.65074,-1.568 0.29774,-0.722"},"33015":{"name":"Rockingham, NH","path":"m 942.09874,139.06114 -0.69532,4.685 -0.59191,0.37101 -0.59191,-0.30101 -0.48851,0.03 -0.11232,0.06 -0.13193,0.06 -0.007,0 -1.54932,1.15 -0.22913,1.27601 -1.35227,0.073 -0.21751,0.227 -0.35774,0.71899 0.39716,1.05553 -0.9469,0.0475 -2.07171,-0.40557 -0.70376,-1.04552 -0.75995,0.0564 -0.92532,-2.2728 1.25427,-0.62921 -0.75507,-1.02234 0.7702,-6.541 4.4006,1.79097 -0.41006,1.456 2.25372,-0.72355 1.06729,-0.0234 -0.11432,-0.90658 0.62065,-0.0834 2.2482,0.901"},"33005":{"name":"Cheshire, NH","path":"m 913.19664,144.23614 0.47602,0.489 0.98771,-0.168 -0.13722,-0.8331 0.61143,-0.20422 2.76224,-1.12612 -0.14378,0.58779 0.0178,0.408 2.3201,-0.14235 0.30487,2.54 0.48547,1.40201 0.91639,-0.218 1.32756,2.99674 0.54031,-0.0288 0.61157,2.17009 -5.83176,1.263 -2.8936,0.618 -1.83814,-1.478 -0.59742,-0.87938 -0.37658,-0.55571 0.37153,-1.05354 -0.25933,-0.9314 1.01527,-1.0528 -0.45882,-1.28456 0.16662,-1.45306 -0.37836,-1.06555"},"33019":{"name":"Sullivan, NH","path":"m 912.68317,133.91014 1.99325,-0.161 1.87201,0.289 1.84527,-0.07 1.05546,-0.08 -0.58176,2.17214 -0.84754,0.003 -0.0126,0.4797 0.41229,0.28345 0.13396,0.42261 -0.41302,1.88855 0.75535,1.1579 0.37792,-0.15431 0.22349,1.01941 0.72385,0.653 -0.13015,1.437 -2.3201,0.14235 -0.0178,-0.408 0.14378,-0.58779 -2.76224,1.12612 -0.61143,0.20422 0.13722,0.8331 -0.98771,0.168 -0.47602,-0.489 -0.0642,-1.695 0.0731,-2.01 -0.40962,-0.26945 0.0655,-0.63055 -0.35096,0.0211 -0.44598,-3.68505 -0.14681,-1.20905 0.76546,-0.84795"},"33011":{"name":"Hillsborough, NH","path":"m 920.22115,141.81014 1.56054,-0.95955 1.33981,1.53268 2.88978,-1.41145 0.89081,1.86187 2.06359,-0.70345 1.18214,0.79499 1.11464,0.26587 0.75507,1.02234 -1.25427,0.62921 0.92532,2.2728 0.75995,-0.0564 0.70376,1.04552 2.07171,0.40557 -0.10698,0.242 -0.41541,0.988 -5.5465,1.278 -0.0713,0.02 -0.2496,0.06 -4.06494,0.909 -0.49208,0.11 -0.61157,-2.17009 -0.54031,0.0288 -1.32756,-2.99674 -0.91639,0.218 -0.48547,-1.40201 -0.30487,-2.54 0.13015,-1.437"},"33001":{"name":"Belknap, NH","path":"m 924.54282,126.91014 1.41382,0.885 4.08277,2.266 1.76148,0.313 -0.29774,0.722 0.65074,1.568 0.79516,1.784 -0.79516,1.913 -2.0831,-1.01929 -3.92873,-1.57164 -0.75416,0.62 -0.86466,-1.14333 -0.27856,0.19102 -0.75146,-0.48186 -0.0598,-0.37907 -0.84994,-0.35183 0.91985,-1.57789 -0.20478,-1.57789 1.86733,-0.95167 -0.62303,-1.21255"},"33013":{"name":"Merrimack, NH","path":"m 922.58345,132.23014 0.84994,0.35183 0.0598,0.37907 0.75146,0.48186 0.27856,-0.19102 0.86466,1.14333 0.75416,-0.62 3.92873,1.57164 2.0831,1.01929 -0.12123,0.289 -0.7702,6.541 -1.11464,-0.26537 -1.18214,-0.79449 -2.06359,0.70295 -0.89081,-1.86237 -2.88977,1.41145 -1.33982,-1.53268 -1.56054,0.95955 -0.72385,-0.653 -0.22349,-1.01941 -0.37792,0.15431 -0.75535,-1.1579 0.41302,-1.88855 -0.13396,-0.42261 -0.41229,-0.28345 0.0126,-0.4797 0.84754,-0.003 0.58176,-2.17214 0.42611,-1.212 0.47424,-1.004 1.01042,0.93852 1.22352,-0.37752"},"33003":{"name":"Carroll, NH","path":"m 929.80051,113.11414 3.28404,10.872 2.02534,5.279 -0.37154,0.88595 -0.35382,0.63666 -0.23707,-0.82293 -0.42835,-0.006 -0.3886,0.59269 -0.44305,0.0229 -0.63087,-1.26784 -0.4557,1.06805 -1.76148,-0.313 -4.08277,-2.266 -1.41382,-0.885 -0.36192,-0.65 -0.9057,-2.074 3.10933,-1.35 -0.6668,-3.487 -1.1553,-1.76 -0.78981,-1.139 0.44689,-0.15617 0.54756,0.74977 0.47862,0.26719 0.59353,1.55406 0.42315,-0.24557 -0.20206,-1.22582 0.34945,-2.42076 3.15541,-0.6777 0.23534,-1.181"},"34025":{"name":"Monmouth, NJ","path":"m 898.58306,212.13675 0.25882,0.14827 0.31288,-0.54635 0.76227,-0.009 0.9291,0.0802 0.91853,0.42381 0.894,0.0209 -0.25498,-0.98692 -0.19763,-0.0205 -0.0144,-0.16906 -0.28589,-0.17119 -0.007,-0.14852 0.0887,-0.10463 0.0553,-0.07 0.12123,0 0.23178,0.107 0.63942,0.83487 0.38462,1.55006 0.13015,0.535 0.0107,0.04 0.14441,1.075 0.0392,0.467 0.025,0.99 -0.0451,3.287 -0.66948,0.23552 -0.66947,-0.77422 -0.37395,0.80195 -0.57096,0.0877 -1.14409,0.11851 -0.14849,-0.60901 -0.71493,-0.5105 -2.44431,0.483 -2.00751,2.676 -0.89322,-1.196 -0.66501,-0.901 0.89143,-0.659 1.03407,-1.221 0,-0.06 -0.0945,-0.168 1.55883,-1.16582 1.85435,-3.13604 -0.0839,-1.34653"},"34029":{"name":"Ocean, NJ","path":"m 894.98106,221.98714 2.00751,-2.676 2.44431,-0.483 0.71493,0.5105 0.14849,0.60901 1.14409,-0.11851 0.57096,-0.0877 0.37395,-0.8019 0.66947,0.77427 0.66948,-0.23547 -0.009,0.426 0.0981,1.879 0.0303,0.523 0.1355,1.59 -0.69418,2.34521 -0.23724,1.41845 0.61508,0.62613 -0.22563,0.95645 -1.70135,3.18974 0.90965,1.21902 -0.52416,0.546 -2.1341,-0.967 0.24069,-0.415 0.0571,-0.562 -0.92531,-4.009 -4.04176,-5.804 -0.33696,-0.458"},"36085":{"name":"Richmond, NY","path":"m 899.51915,209.92631 -0.0713,0.03 -0.16224,0.226 -0.25316,0.225 -0.0731,0 -0.25852,0.272 -0.16224,0.1 -0.11945,0.191 -0.41185,0.168 -0.0945,-0.06 -0.12224,-0.12562 -0.0355,-0.15955 0.0819,-0.16807 -0.17284,-0.54233 0.21137,-0.35414 0.18179,-0.008 0.16217,-0.29212 0.005,-0.73473 -0.10127,-0.22746 -0.10155,-0.55605 0.22549,-0.30172 0.40369,-0.0943 0.31382,-0.0397 0.22354,-0.0578 0.17713,-0.05 0.53033,-0.2189 0.18721,-0.03 0.13728,0.137 0.12836,0.378 0.35123,0.401 -0.0464,0.25 -0.64183,1.261 -0.41184,0.411 -0.0802,-0.02"},"34013":{"name":"Essex, NJ","path":"m 895.47848,202.42014 2.79732,1.189 -0.12124,0.829 -0.15799,0.93904 0.28549,0.21333 0.16454,-0.32088 0.43423,-0.0449 0.11169,0.4691 0.12177,0.23728 -0.0705,0.37062 -0.21125,0.4815 -0.56608,-0.25869 -0.55242,0.2061 -0.48219,-0.36384 -0.94453,-0.0883 -0.37037,0.25341 -1.29995,-0.15669 -0.21138,-1.12195 0.3586,-0.88446 0.0736,-1.05862 -0.30638,-0.15615 -0.0855,-0.87792 1.03221,0.1441"},"34039":{"name":"Union, NJ","path":"m 894.61735,206.37514 1.29995,0.15669 0.37037,-0.25341 0.94453,0.0883 0.48219,0.36384 0.55242,-0.2061 0.56608,0.25869 -0.18618,0.66597 -0.35596,0.14095 -0.0802,0.03 -0.0392,0.06 -0.17593,0.23245 0.0558,0.23558 0.10728,0.515 0.0122,0.346 -0.60403,-0.0335 -0.58899,0.24606 -0.37138,-0.17138 -2.349,0.63641 -0.48316,0.12467 0.59526,-0.66065 0.10313,-1.02973 -0.75809,0.22792 -0.29331,-0.25054 1.19631,-1.71931"},"34017":{"name":"Hudson, NJ","path":"m 900.79856,203.52214 -0.16224,2.161 -0.21971,-0.0502 -0.44538,0.49233 0.18702,0.47435 -0.37271,0.22328 0.0787,0.26895 -1.21748,0.35729 0.28697,-0.54502 0.27173,-0.44118 0.01,-0.60244 -0.22256,-0.16673 -0.11169,-0.4691 -0.43423,0.0449 -0.16454,0.32088 -0.28549,-0.21333 0.15799,-0.93904 0.87972,0.0581 0.41494,-0.89884 0.61999,-0.57075 0.72935,0.49552"},"34003":{"name":"Bergen, NJ","path":"m 895.22174,196.86114 6.08137,1.819 0.0268,1.884 -0.0713,0.74685 -0.45998,2.21115 -0.72935,-0.49552 -0.61999,0.57075 -0.41494,0.89884 -0.87972,-0.0581 0.12124,-0.829 0.0802,-0.08 0.10519,-0.85 -0.025,-0.122 -0.69889,-1.228 -0.16625,-0.79481 -0.6048,-0.38378 -1.17302,0.18194 -0.94953,-0.73235 0.37797,-2.739"},"34023":{"name":"Middlesex, NJ","path":"m 898.17061,209.01114 0.016,0.129 -0.009,0.273 -0.0765,0.19457 -0.041,0.0942 -0.11232,0.006 -0.11945,0.01 -0.24247,0.28 -0.007,0.176 0.19968,0.457 -0.13517,0.73743 -0.0107,0.03 -0.0232,0.257 0.15075,0.23123 0.34331,0.0855 0.47108,0.17589 0.005,0 0.005,0 0.0839,1.34653 -1.85435,3.13604 -1.55883,1.16582 -0.1242,-0.54752 -1.2038,-0.11384 -1.39758,-0.51984 -0.20724,-1.0458 0.10519,-0.03 0.2086,-0.241 0.0992,-0.68607 1.8015,-2.34944 -0.68663,-0.41449 -0.43502,-0.353 -0.44928,-0.481 -0.025,-0.168 0.11232,-0.331 0.10519,-0.129 0.61687,-0.56769 0.48316,-0.12467 2.349,-0.63641 0.37138,0.17138 0.58899,-0.24606 0.60403,0.0335"},"34035":{"name":"Somerset, NJ","path":"m 893.42104,208.09445 0.29331,0.25054 0.75809,-0.22792 -0.10313,1.02973 -0.59526,0.66065 -0.61687,0.56769 -0.10519,0.129 -0.11232,0.331 0.025,0.168 0.44928,0.481 0.43502,0.353 0.68663,0.41449 -1.8015,2.34944 -0.0992,0.68607 -0.2086,0.241 -0.10519,0.03 -0.10162,-0.191 -0.51525,-0.06 -1.12677,0.644 -0.68997,-1.004 -0.10698,-0.144 -1.26296,-1.88379 0.48688,0.1322 0.31254,-1.03841 0.11945,-0.191 0.19255,-1.494 -0.47526,-0.42357 -0.16836,-1.39543 -0.12836,-0.24 -0.11232,-0.08 2.67608,-1.519 0.29944,0.35552 0.66377,0.68828 -0.12886,0.76087 0.27466,0.52433 0.89143,-0.90869"},"34027":{"name":"Morris, NJ","path":"m 890.61124,199.06114 0.43786,0.26633 0.11278,0.85553 0.62072,-0.52605 0.58008,0.46951 0.97992,0.0397 1.27148,0 0.19578,0.48473 0.29737,-0.12479 0.23641,0.91139 0.13484,0.99267 -1.03221,-0.1441 0.0855,0.87792 0.30638,0.15615 -0.0736,1.05862 -0.3586,0.88446 0.21138,1.12195 -1.19631,1.71931 -0.89143,0.90869 -0.27466,-0.52433 0.12886,-0.76087 -0.66377,-0.68828 -0.29944,-0.35552 -2.67608,1.519 -1.68753,-0.0777 -1.43071,-0.82834 0.99412,-1.36068 0.42861,-1.91132 0.49087,-0.42506 0.65049,0.50981 1.03812,-1.10911 -0.21598,-0.67588 1.59867,-3.25076"},"34031":{"name":"Passaic, NJ","path":"m 894.8206,196.74014 0.40114,0.121 -0.37797,2.739 0.94953,0.73235 1.17302,-0.18194 0.6048,0.38378 0.16625,0.79481 0.69889,1.228 0.025,0.122 -0.10519,0.85 -0.0802,0.08 -2.79732,-1.189 -0.13483,-0.99267 -0.23642,-0.91139 -0.29737,0.12479 -0.19578,-0.48473 -1.27148,0 -0.97992,-0.0397 -0.58008,-0.46951 -0.62072,0.52605 -0.11278,-0.85553 -0.43786,-0.26633 1.69373,-3.173 2.51563,0.852"},"34037":{"name":"Sussex, NJ","path":"m 892.30497,195.88814 -1.69373,3.173 -1.59867,3.25076 0.21598,0.67588 -1.03812,1.10911 -0.65049,-0.50981 -0.49087,0.42506 -4.35555,-3.432 -0.0963,-0.119 0.68462,-0.963 0.47425,-1.118 0.1034,-0.692 -0.0321,-0.378 -0.0713,-0.07 0.0321,-0.313 0.20859,-0.892 0.0874,-0.257 0.41006,-0.843 0.48138,-0.522 1.01445,-0.731 6.31493,2.209"},"34041":{"name":"Warren, NJ","path":"m 882.69352,200.58014 4.35555,3.432 -0.42861,1.91132 -0.99412,1.36068 -0.16581,0.44 -0.7488,1.439 -0.13729,0.185 -0.97879,0.983 -1.68838,1.884 -0.37618,0.644 -0.18721,-0.362 -0.1141,-0.209 -0.42432,-1.64 -0.17829,-1.387 0.29239,-0.686 0.1355,-0.04 0.25673,0.03 0.2603,-0.04 0.35123,-0.486 0.57765,-1.771 0.009,-0.135 -0.0571,-0.136 -1.63133,-1.922 1.87202,-3.496"},"34019":{"name":"Hunterdon, NJ","path":"m 885.62634,207.28414 1.43071,0.82834 1.68753,0.0777 0.11232,0.08 0.12836,0.24 0.16836,1.39543 0.47526,0.42357 -0.19255,1.494 -0.11945,0.191 -0.31254,1.03841 -0.48688,-0.1322 1.26296,1.88379 0.10698,0.144 -0.89593,0.30357 0.23084,0.7497 -1.1413,0.41594 0.17892,0.32694 0.20117,0.37885 -1.21057,0.435 -0.16759,0 -0.1141,-0.06 -1.67055,-1.013 -1.3015,-2.619 -2.4657,-1.005 0.37618,-0.644 1.68838,-1.884 0.97879,-0.983 0.13729,-0.185 0.7488,-1.439 0.16581,-0.44"},"34021":{"name":"Mercer, NJ","path":"m 889.8874,214.95014 0.68997,1.004 1.12677,-0.644 0.51525,0.06 0.10162,0.191 0.20724,1.0458 1.39758,0.51984 1.2038,0.11384 0.1242,0.54752 0.0945,0.168 0,0.06 -1.03407,1.221 -0.89143,0.659 0.66501,0.901 -2.09639,-0.58812 -0.27305,0.91812 -4.63546,-3.561 0.16759,0 1.21057,-0.435 -0.20117,-0.37885 -0.17892,-0.32694 1.1413,-0.41594 -0.23084,-0.7497 0.89593,-0.30357"},"34007":{"name":"Camden, NJ","path":"m 885.53185,228.35914 1.30862,-2.433 2.56172,1.69831 1.43954,2.37754 1.11468,-0.5756 1.70532,1.16675 -1.8007,3.288 -1.30348,-1.66198 -1.09375,-0.32094 -0.84346,-0.61673 -1.10513,-0.58261 -0.377,-1.31074 -0.93957,-0.685 -0.66679,-0.344"},"34015":{"name":"Gloucester, NJ","path":"m 884.84544,229.34014 0.68641,-0.981 0.66679,0.344 0.93957,0.685 0.377,1.31074 1.10513,0.58261 0.84346,0.61673 1.09375,0.32094 1.30348,1.66198 -1.37102,2.54 -1.59211,-0.925 -2.82265,-1.66076 -1.00606,0.0733 -2.05198,-0.49099 -1.77673,-1.09651 0.25633,-0.25515 0.14937,-0.48861 1.13843,-1.45171 2.06083,-0.78553"},"34033":{"name":"Salem, NJ","path":"m 881.24048,232.32114 1.77673,1.09651 2.05198,0.49099 1.00606,-0.0733 2.82265,1.66076 0.21038,2.007 0,0.476 -0.025,0.113 -3.18955,-1.696 -2.00155,2.68395 -0.54154,0.33577 0.13372,1.63228 -0.63182,-0.66038 -0.29071,-0.35126 -0.47304,-0.0906 -0.28745,-0.24847 -0.4015,-0.0954 -0.44741,-0.64426 0.33226,-0.0972 -0.28382,-1.22267 0.35318,-0.66558 -1.05705,-0.51142 -0.125,-0.56049 0.53344,-1.00702 -0.0634,-0.7124 0.26904,-0.57829 0.32934,-1.2816"},"34011":{"name":"Cumberland, NJ","path":"m 893.59755,240.26214 -0.41253,2.04404 0.23781,1.46596 -2.00974,-0.0115 -0.18233,-0.36716 -1.31127,0.35863 -0.43868,0.67415 -0.59078,-0.23209 -0.18288,-0.73052 -1.00628,-0.51342 -0.46855,-0.0986 0.15484,-0.33794 -0.25765,-0.28954 -0.6585,0.157 -0.078,0.29392 -0.54348,-0.30301 -0.52229,-0.78312 -0.64848,0.13037 -0.36992,-0.20624 -0.23596,-0.37709 -0.58844,-0.0899 -0.13372,-1.63228 0.54154,-0.33577 2.00155,-2.68395 3.18955,1.696 0.025,-0.113 0,-0.476 -0.21038,-2.007 1.59211,0.925 2.69185,1.41469 0.41569,2.42631"},"34009":{"name":"Cape May, NJ","path":"m 893.59755,240.26214 5.60356,-0.701 -0.73276,1.134 -0.21751,0.387 -0.24782,0.617 -0.39401,1.067 -0.43324,1.53 0,0.07 0.007,0.01 0.0232,0.03 -0.65075,2.323 -0.47246,1.148 -0.60439,1.038 -0.89144,0.497 -0.22464,0.06 -0.52951,0.06 -0.082,-0.04 -0.11233,-0.137 -0.025,-1.437 0.0321,-0.355 0.0891,-0.481 0.33875,-1.318 0.0392,-0.28 0.0988,-0.38014 0.009,-0.68186 -0.22705,-0.339 -0.3958,-0.289 -0.17472,-0.02 -0.23781,-1.46596 0.41253,-2.04404"},"34001":{"name":"Atlantic, NJ","path":"m 902.12145,234.20214 0.35675,0.79244 -1.05646,2.32557 -2.22063,2.24099 -5.60356,0.701 -0.41569,-2.42631 -2.69185,-1.41469 1.37102,-2.54 1.8007,-3.288 0.24247,0.128 0.98593,0.507 1.27297,1.255 1.59032,0.738 0.4261,0.128 0.7702,0.154 1.03763,-0.268 2.1341,0.967"},"34005":{"name":"Burlington, NJ","path":"m 891.7184,221.12114 0.27305,-0.91812 2.09639,0.58812 0.89322,1.196 0.33696,0.458 4.04176,5.804 0.92531,4.009 -0.0571,0.562 -0.24069,0.415 -1.03763,0.268 -0.7702,-0.154 -0.4261,-0.128 -1.59032,-0.738 -1.27297,-1.255 -0.98593,-0.507 -0.24247,-0.128 -1.70532,-1.16675 -1.11468,0.5756 -1.43954,-2.37754 -2.56172,-1.69831 1.10895,-1.616 1.88449,-1.5945 0.23559,-0.74286 0.70665,-0.0544 0.94225,-0.79725"},"35025":{"name":"Lea, NM","path":"m 388.91878,409.84314 -0.39402,4.195 -0.8843,9.868 -1.48692,20.056 -0.15154,1.993 -0.47603,-0.03 -1.09111,-0.09 -1.36746,-0.106 -1.00376,-0.07 -1.14104,-0.09 -7.6913,-0.603 0.98236,-12.004 -1.75256,-0.135 0.82012,-10.182 0.92353,0.07 0.81121,-9.902 0.8319,-0.028 0.36618,-3.90902 4.00076,0.307 8.70398,0.658"},"35015":{"name":"Eddy, NM","path":"m 352.48405,431.11214 0.18541,0.01 0.96454,-10.168 19.64722,1.689 -0.82012,10.182 1.75256,0.135 -0.98236,12.004 -4.98134,-0.408 -0.85934,-0.07 -15.94955,-1.43 0.54556,-5.794 -0.0731,0 0.57052,-6.14"},"35028":{"name":"Los Alamos, NM","path":"m 334.21141,349.21314 -0.0392,0.822 -0.24247,1.727 -0.52951,-0.05 0.45106,0.369 0.0392,0.06 -0.2086,1.929 -0.26565,-0.588 -0.27278,-0.321 -0.74702,-0.433 -0.56339,-0.273 -0.11232,0.103 -0.37797,0.03 -0.33696,-0.02 -0.18542,-0.1 -0.12123,-0.224 0.62044,-2.363 0.312,-0.625 1.62419,-0.17 0.6668,0.02 0.28882,0.102"},"35039":{"name":"Rio Arriba, NM","path":"m 315.54476,322.97814 7.61108,0.9 2.34447,0.451 4.58198,0.505 2.55485,0.274 8.51677,0.876 0.20146,1.59 -0.16937,2.491 -0.22464,4.951 0.10519,1.365 0.0642,1.439 -0.0161,0.466 -0.51346,2.242 -0.15333,0.321 -0.24069,0.195 -0.57943,0.231 -0.4582,0.03 -0.23177,0.06 -0.37084,0.442 -0.0642,0.176 3.52652,1.922 1.49582,2.459 0.18542,0.385 0.23356,0.385 3.56574,2.394 -3.5176,0.443 0.0713,-0.548 -6.46825,-0.667 0.0232,0.298 0.1765,0.03 0.025,0.09 -0.12837,1.261 -3.51938,-0.385 0.0392,-0.822 0.041,-0.159 0.0642,-0.644 -11.72415,-1.251 0.29774,-2.74 0.27991,-2.268 -6.45221,-0.747 -7.06195,-0.931 0.62579,-5.425 0.23356,-1.776 0.87539,-5.996 0.48137,-0.875 2.91856,-2.411 0.75415,-1.012"},"35045":{"name":"San Juan, NM","path":"m 298.20457,320.81014 16.24016,2.032 1.10003,0.136 -0.75415,1.012 -2.91856,2.411 -0.48137,0.875 -0.87539,5.996 -0.23356,1.776 -0.62579,5.425 -0.65966,5.037 -8.47754,-1.118 -17.5167,-2.323 3.17351,-22.867 12.02902,1.608"},"35031":{"name":"McKinely, NM","path":"m 283.00204,342.06914 17.5167,2.323 8.47754,1.118 5.83355,0.747 -1.93619,15.935 -5.05304,-0.61073 0.16145,-1.11794 -2.75755,-0.33953 -0.20084,1.1202 -13.58012,-1.785 -0.041,0.323 -1.02158,7.659 -10.70257,-1.464 3.30366,-23.908"},"35001":{"name":"Bernalillo, NM","path":"m 314.76565,364.41914 4.32346,0.52 3.7048,0.435 3.04514,0.353 4.43579,0.498 2.12161,0.29 -0.41897,4.026 -0.21573,1.993 1.75078,0.184 -0.20147,1.92 -1.48513,-0.135 -3.38388,-0.394 -0.009,-0.516 -0.14441,-0.231 -0.15155,-0.06 -4.7246,-0.594 -0.58835,0.538 -0.15154,0.218 -5.66596,-0.653 -0.54556,-2.087 -1.69551,-6.308"},"35061":{"name":"Valencia, NM","path":"m 316.46116,370.72714 0.54556,2.087 5.66596,0.653 0.15154,-0.218 0.58835,-0.538 4.7246,0.594 0.15155,0.06 0.14441,0.231 0.009,0.516 -0.97831,-0.10204 -0.17165,1.39604 -0.6347,4.587 -0.19968,2.026 0.98058,0.1 -0.19433,1.881 -1.50118,-0.515 -4.92607,-2.377 -1.92906,-1.303 -0.5206,-0.08 -5.49837,-0.603 1.0608,-8.711 2.53168,0.323"},"35006":{"name":"Cibola, NM","path":"m 314.76565,364.41914 1.69551,6.308 -2.53168,-0.323 -1.0608,8.711 -9.72199,-1.166 -1.27119,-0.184 -6.20974,-0.822 -4.46787,-0.529 -12.70473,-1.719 1.20522,-8.718 10.70257,1.464 1.02158,-7.659 0.041,-0.323 13.58012,1.785 0.20084,-1.1202 2.75755,0.33953 -0.16145,1.11794 5.05304,0.61073 1.34882,0.15028 0.52319,2.07672"},"35051":{"name":"Sierra, NM","path":"m 300.23704,403.23714 12.49436,1.471 2.09843,0.298 6.01897,0.708 2.72423,0.287 2.07348,0.13 -0.22529,2.03892 0.52302,0.0661 -0.74702,7.77 -11.05023,4.099 -0.11232,0.995 -7.8678,-0.94 -0.48138,4.003 -5.91378,-0.715 -2.04138,-0.651 -0.30487,-0.253 0.0481,-0.246 0.2086,-0.401 0.34588,-1.35 0.0963,-0.973 -0.0321,-0.344 -0.49098,-2.85326 0.09,-2.64575 -1.3453,-0.62647 0.61235,-3.29552 -0.0321,-0.182 -0.23355,-0.412 -0.16046,-0.05 -2.54594,-0.305 0.80408,-6.332 5.44666,0.707"},"35053":{"name":"Socorro, NM","path":"m 312.86868,379.11514 5.49837,0.603 0.5206,0.08 1.92906,1.303 4.92607,2.377 1.50118,0.515 -0.43324,4.138 9.24061,0.988 -0.65788,5.971 -0.40292,4.018 -2.41758,-0.267 -0.43323,4.036 -1.84171,-0.194 -0.16046,-0.07 -2.05743,-0.4 -1.99146,-0.226 -0.44215,4.147 -2.07348,-0.13 -2.72423,-0.287 -6.01897,-0.708 -2.09843,-0.298 -12.49436,-1.471 0.47425,-3.76 1.68837,-14.199 -0.1765,-0.03 0.66501,-5.512 0.25852,-1.792 9.72199,1.166"},"35003":{"name":"Catron, NM","path":"m 303.14669,377.94914 -0.25852,1.792 -0.66501,5.512 0.1765,0.03 -1.68837,14.199 -0.47425,3.76 -5.44666,-0.707 -0.80408,6.332 -8.53281,-1.093 -1.76148,-0.394 -1.95224,-0.299 -7.60216,-1.018 4.35555,-31.363 12.70473,1.719 4.46787,0.53 6.20974,0.821 1.27119,0.184"},"35017":{"name":"Grant, NM","path":"m 274.13761,406.05814 7.60216,1.018 1.95224,0.299 1.76148,0.394 8.53281,1.093 2.54594,0.305 0.16046,0.05 0.23355,0.412 0.0321,0.182 -0.61235,3.29552 1.3453,0.62647 -0.09,2.64575 0.49098,2.85326 0.0321,0.344 -0.0963,0.973 -0.34588,1.35 -0.2086,0.401 -0.0481,0.246 0.30487,0.253 2.04138,0.651 -6.04214,-0.731 -0.2496,1.991 -5.86743,-0.738 -1.30149,9.986 0.009,1.223 -0.22464,2.418 -0.17651,1.328 -5.93874,-0.772 0.71494,-7.224 1.0198,-7.733 -2.07783,-0.23744 0.25395,-2.02056 -3.95262,-0.537 0.51347,-3.971 -3.67985,-0.515 1.36568,-9.857"},"35023":{"name":"Hidalgo, NM","path":"m 272.77193,415.91514 3.67985,0.515 -0.51347,3.971 3.95262,0.537 -0.25395,2.02056 2.07783,0.23744 -1.0198,7.733 -0.71494,7.224 5.93874,0.772 -0.0642,1.856 -0.84508,6.484 -0.48851,3.8 -12.49613,-1.632 -0.19255,-0.03 -1.54218,-0.21 -2.13053,-0.298 3.49621,-24.959 1.11607,-8.021"},"35029":{"name":"Luna, NM","path":"m 305.68549,424.16314 -2.19471,18.811 -17.63615,-2.193 0.0642,-1.856 0.17651,-1.328 0.22464,-2.418 -0.009,-1.223 1.30149,-9.986 5.86743,0.738 0.2496,-1.991 6.04214,0.731 5.91378,0.715"},"35013":{"name":"Dona Ana, NM","path":"m 325.19722,416.00614 -0.24247,2.17 -0.68284,-0.07 -2.41044,21.92 -4.22718,-0.447 -0.79852,-0.0621 -0.007,0 0,0 -0.32589,0.14926 -0.0378,0.32313 0.3169,0.12626 -0.21057,1.21222 -0.43812,0.28139 0.10674,0.45615 0.003,0.29066 0.43546,0.46799 0.18542,0.249 1.51009,1.615 -14.8834,-1.711 2.19471,-18.811 0.48138,-4.003 7.8678,0.94 0.11232,-0.995 11.05023,-4.099"},"35055":{"name":"Taos, NM","path":"m 346.37772,326.52214 9.03202,0.915 -0.0731,1.415 -0.56161,3.657 -1.14995,1.084 -0.64183,0.241 -0.57943,0.267 -0.42433,0.305 -0.24247,1.678 -0.041,1.246 0.14619,2.314 -0.28169,4.475 -4.05068,5.4 -3.56574,-2.394 -0.23356,-0.385 -0.18542,-0.385 -1.49582,-2.459 -3.52652,-1.922 0.0642,-0.176 0.37084,-0.442 0.23177,-0.06 0.4582,-0.03 0.57943,-0.231 0.24069,-0.195 0.15333,-0.321 0.51346,-2.242 0.0161,-0.466 -0.0642,-1.439 -0.10519,-1.365 0.22464,-4.951 0.16937,-2.491 -0.20146,-1.59 5.22381,0.538"},"35049":{"name":"Santa Fe, NM","path":"m 334.17219,350.03514 3.51938,0.385 0.12837,-1.261 -0.025,-0.09 -0.1765,-0.03 -0.0232,-0.298 6.46825,0.667 -0.0713,0.548 -0.30666,2.474 -1.84705,19.111 -9.86105,-1.006 0.41897,-4.026 1.28545,-12.446 0.24782,-2.307 0.24247,-1.727"},"35035":{"name":"Otero, NM","path":"m 325.94424,408.23614 6.55562,0.73 5.19171,0.522 -0.16937,1.97 7.74657,0.77 -0.35301,3.978 -0.45324,4.05509 -0.53982,-0.0591 -1.10537,10.01902 3.93835,0.387 0.74703,0.03 4.98134,0.472 -0.57052,6.141 0.0731,0 -0.54556,5.794 -1.36746,-0.128 -20.88454,-2.131 -7.3276,-0.772 2.41044,-21.92 0.68284,0.07 0.24247,-2.17 0.74702,-7.77"},"35057":{"name":"Torrance, NM","path":"m 341.83853,371.54714 7.88207,0.777 -0.96454,10.004 -0.4261,-0.03 -0.5937,5.994 -0.20146,1.992 -11.48347,-1.164 -9.24061,-0.988 0.43324,-4.138 0.19433,-1.881 -0.98058,-0.1 0.19968,-2.026 0.6347,-4.587 0.17165,-1.39604 0.97831,0.10204 3.38388,0.394 1.48513,0.135 0.20147,-1.92 -1.75078,-0.184 0.21573,-1.993 9.86105,1.006"},"35027":{"name":"Lincoln, NM","path":"m 347.73626,388.29114 7.91416,0.755 -0.58656,5.947 -0.5937,6.075 0.0392,0 0.016,0.06 -0.82012,8.536 -0.93244,7.158 -1.9362,-0.08 -5.92091,-0.531 0.35301,-3.978 -7.74657,-0.77 0.16937,-1.97 -5.19171,-0.522 -6.55562,-0.73 -0.52302,-0.0661 0.22529,-2.03892 0.44215,-4.147 1.99146,0.226 2.05743,0.4 0.16046,0.07 1.84171,0.194 0.43323,-4.036 2.41758,0.267 0.40292,-4.018 0.65788,-5.971 11.48347,1.164 0.20146,-1.991"},"35007":{"name":"Colfax, NM","path":"m 356.59891,327.55114 2.80445,0.315 4.8708,0.448 13.16115,1.1 -1.54218,17.961 -7.84285,-0.692 -7.87493,-0.706 0.1034,-0.99 -8.71823,-0.868 0.28169,-4.475 -0.14619,-2.314 0.041,-1.246 0.24247,-1.678 0.42433,-0.305 0.57943,-0.267 0.64183,-0.241 1.14995,-1.084 0.56161,-3.657 0.0731,-1.415 1.18917,0.114"},"35033":{"name":"Mora, NM","path":"m 351.56052,344.11914 8.71823,0.868 -0.1034,0.99 7.87493,0.706 1.62566,6.39885 -0.96591,1.69434 -0.28178,2.10481 -7.08156,-0.556 -4.72282,-0.298 -1.82388,-0.995 -4.22005,-1.881 -6.89436,-0.715 0.30666,-2.474 3.5176,-0.443 4.05068,-5.4"},"35059":{"name":"Union, NM","path":"m 394.18894,330.66014 1.52614,0.113 -0.85043,11.547 -0.75594,0.449 -0.27991,3.705 -0.43502,6.074 -0.54734,7.298 -6.17051,-0.491 0.46711,-5.97 0.21572,-0.409 0.12124,-1.599 -7.8999,-0.62 0.17651,-2.033 -3.94549,-0.346 0.082,-1.003 1.54218,-17.961 16.75363,1.246"},"35021":{"name":"Harding, NM","path":"m 368.05028,346.68314 7.84285,0.692 -0.082,1.003 3.94549,0.346 -0.17651,2.033 7.8999,0.62 -0.12124,1.599 -0.21572,0.409 -0.46711,5.97 -0.23356,2.019 -0.47424,5.872 -0.19969,0.168 -4.5891,-0.36 0.066,-0.74 -1.62419,-0.137 -3.94549,-9.145 -0.60654,0.39763 -2.17474,-0.17263 -4.46609,-0.376 0.28178,-2.10481 0.96591,-1.69434 -1.62566,-6.39885"},"35047":{"name":"San Miguel, NM","path":"m 343.68558,352.43614 6.89436,0.715 4.22005,1.881 1.82388,0.995 4.72282,0.298 7.08156,0.556 4.46609,0.376 2.17474,0.17263 0.60654,-0.39763 3.94549,9.145 1.62419,0.137 -0.066,0.74 -0.27278,3.439 -4.09882,-0.369 0.041,-0.506 -5.20777,2.392 0.13015,-1.697 -21.66543,-2.008 -0.3851,4.019 -7.88207,-0.777 1.84705,-19.111"},"35037":{"name":"Quay, NM","path":"m 386.67593,359.35514 6.17051,0.491 -0.2086,2.694 -0.76307,10.139 -0.40114,5.286 -3.72798,-0.28 -0.23578,2.0508 -2.12296,-0.1993 -0.27207,2.01451 -2.08667,-0.16301 -0.2501,1.98534 -4.16963,-0.33734 -0.24439,1.96388 -0.53473,0.004 -3.94549,-0.328 -3.37497,-0.289 0.32983,-4.017 0.18364,-2.107 0.4261,-4.09 0.19255,-2.163 5.20777,-2.392 -0.041,0.506 4.09882,0.369 0.27278,-3.439 4.5891,0.36 0.19969,-0.168 0.47424,-5.872 0.23356,-2.019"},"35019":{"name":"Guadelupe, NM","path":"m 371.64098,372.01014 -0.19255,2.163 -0.4261,4.09 -0.18364,2.107 -3.93836,-0.333 -0.17026,1.98594 -1.97222,-0.15503 -0.1806,2.00409 -8.37235,-0.754 -0.55448,5.928 -7.91416,-0.755 0.5937,-5.994 0.4261,0.03 1.34964,-14.023 21.66543,2.008 -0.13015,1.697"},"35011":{"name":"De Baca, NM","path":"m 370.83869,380.37014 -0.32983,4.017 3.37497,0.289 -0.57051,6.716 -0.0499,1.239 -0.33697,4.081 -3.96153,-0.353 -0.18542,2.025 -4.13626,-0.371 -7.74835,-0.795 0.18541,-2.025 -2.01642,-0.2 0.58656,-5.947 0.55448,-5.928 8.37235,0.754 0.1806,-2.00409 1.97222,0.15503 0.17026,-1.98594 3.93836,0.333"},"35009":{"name":"Curry, NM","path":"m 391.47363,377.96514 -0.35301,4.766 -0.77198,10.021 -0.0161,0.241 -13.10588,-1.036 0.60261,-6.953 0.53473,-0.004 0.24439,-1.96388 4.16963,0.33734 0.2501,-1.98534 2.08667,0.16301 0.27207,-2.01451 2.12296,0.1993 0.23578,-2.0508 3.72798,0.28"},"35041":{"name":"Roosevelt, NM","path":"m 377.82932,385.00414 -0.60261,6.953 13.10588,1.036 -0.8843,11.009 -0.52951,5.841 -8.70398,-0.658 0.16938,-2.002 -3.96154,-0.289 0.33696,-3.755 -2.36943,-0.199 0.50633,-6.044 -1.97007,-0.184 0.33697,-4.081 0.0499,-1.239 0.57051,-6.716 3.94549,0.328"},"35005":{"name":"Chaves, NM","path":"m 372.92643,396.71214 1.97007,0.184 -0.50633,6.044 2.36943,0.199 -0.33696,3.755 3.96154,0.289 -0.16938,2.002 -4.00076,-0.307 -0.36618,3.90902 -0.8319,0.028 -0.81121,9.902 -0.92353,-0.07 -19.64722,-1.689 -0.96454,10.168 -0.18541,-0.01 -4.98134,-0.472 -0.74703,-0.03 -3.93835,-0.387 1.10538,-10.01902 0.53981,0.0591 0.45324,-4.05509 5.92091,0.531 1.9362,0.08 0.93244,-7.158 0.82012,-8.536 -0.016,-0.06 -0.0392,0 0.5937,-6.074 2.01642,0.2 -0.18541,2.025 7.74835,0.795 4.13626,0.371 0.18542,-2.025 3.96153,0.353"},"35043":{"name":"Sandoval, NM","path":"m 309.65594,340.47314 7.06195,0.931 6.45221,0.747 -0.27991,2.268 -0.29774,2.74 11.72415,1.251 -0.0642,0.644 -0.041,0.159 -0.28882,-0.102 -0.6668,-0.02 -1.62419,0.17 -0.312,0.625 -0.62044,2.363 0.12123,0.224 0.18542,0.1 0.33696,0.02 0.37797,-0.03 0.11232,-0.103 0.56339,0.273 0.74702,0.433 0.27278,0.321 0.26565,0.588 -1.28545,12.446 -2.12161,-0.29 -4.43579,-0.498 -3.04514,-0.353 -3.7048,-0.435 -4.32346,-0.52 -0.5232,-2.07672 -1.34881,-0.15028 1.93619,-15.935 -5.83355,-0.747 0.65966,-5.037 m 24.23456,11.667 -0.0392,-0.06 -0.45106,-0.369 0.52951,0.05 -0.0392,0.378"},"32007":{"name":"Elko, NV","path":"m 201.52132,187.39614 2.08061,0.328 2.51563,0.506 4.40369,0.997 3.61566,0.715 4.00076,0.788 -4.34664,22.589 -3.92945,20.07 -3.51938,-0.674 -10.52785,-2.22 -3.87239,-0.786 -3.91162,-0.844 -3.39102,-0.788 -5.35217,-1.123 -2.83833,-0.586 -0.0553,-10.136 0.009,-2.232 0.0464,-0.642 1.56714,-7.328 -7.22241,-1.585 -7.27232,-1.611 5.07761,-22.568 6.49321,1.487 1.92907,0.442 24.5002,5.201"},"32033":{"name":"White Pine, NV","path":"m 179.28715,226.95414 5.35217,1.123 3.39102,0.788 3.91162,0.844 3.87239,0.786 10.52785,2.22 3.51938,0.674 -0.93244,4.799 -1.59923,8.26 -3.82426,19.694 -16.63417,-3.286 -13.47494,-14.263 1.31755,-6.212 0.16759,-0.497 0.71671,-0.53 0.42611,-0.411 0.44215,-0.523 0.62578,-1.276 1.56715,-5.836 0.65074,-5.792 -0.0232,-0.562"},"32003":{"name":"Clark, NV","path":"m 162.45151,301.20214 2.33912,0.52 0.49742,-0.156 13.26812,2.738 2.89182,0.587 1.31754,0.49 12.69581,2.507 -0.72206,3.786 -0.0891,0.462 -0.73098,4.172 -0.44215,2.316 -0.77912,4.042 -2.33021,3.148 -0.2496,0.282 -0.0321,0.02 -0.0642,0.04 -0.016,0 -1.11608,-0.02 -0.36192,-0.04 -0.0963,-0.02 -0.23356,-0.178 -0.16046,-0.168 -0.4261,-0.676 -0.12837,-0.385 -0.0161,-0.192 -0.009,-0.05 -0.0321,-0.176 -0.22464,-0.563 -0.54556,-0.772 -0.2496,-0.234 -2.33913,-0.69 -1.05902,-0.217 -1.12678,0 -2.05743,0.483 -0.18363,0.1 -0.24961,0.225 -0.016,0.146 -0.23356,2.25 -0.49742,6.588 -0.22464,4.027 0.24069,2.844 0.16759,1.348 0.025,0.675 -0.12837,2.805 -0.0232,0.513 -0.0981,0.458 -0.16758,0.548 -1.72047,2.875 -2.51385,-3.742 -6.81591,-10.198 -0.47246,-0.7 -1.27119,-1.896 -3.68697,-5.537 -3.61566,-5.383 4.11308,-18.996"},"32017":{"name":"Lincoln, NV","path":"m 186.87148,262.85614 16.63417,3.286 -0.46711,2.38 -1.84705,9.658 -2.42649,12.367 -2.6119,13.757 -0.69176,3.584 -12.69581,-2.507 -1.31754,-0.49 -2.89182,-0.587 -13.26812,-2.738 -0.49742,0.156 -2.33912,-0.52 0.33696,-1.79 1.02871,-4.839 4.45361,-20.74 15.716,3.263 2.88469,-14.24"},"32009":{"name":"Esmeralda, NV","path":"m 138.95685,257.27414 6.74103,12.767 -5.28621,23.302 -9.2424,-13.876 -8.18872,-12.223 0.24069,0.121 1.11786,0.264 6.51639,-4.652 8.10136,-5.703"},"32023":{"name":"Nye, NV","path":"m 139.10126,243.02714 1.64737,-0.09 4.98134,0.06 3.04514,0.128 12.61559,2.871 12.00584,2.594 13.47494,14.263 -2.88469,14.24 -15.716,-3.263 -4.45361,20.74 -1.02871,4.839 -0.33696,1.79 -4.11308,18.996 -0.2086,-0.306 -2.63687,-3.953 -0.6347,-0.948 -4.91715,-7.385 -6.06711,-9.08 -1.14995,-1.744 -1.96829,-2.926 -0.34409,-0.513 5.28621,-23.302 -13.13797,-24.88 0.43324,-1.824 6.10811,-0.31"},"32011":{"name":"Eureka, NV","path":"m 170.79355,204.44514 7.22241,1.585 -1.56714,7.328 -0.0464,0.642 -0.009,2.232 0.0553,10.136 2.83833,0.586 0.0232,0.562 -0.65074,5.792 -1.56715,5.836 -0.62578,1.276 -0.44215,0.523 -0.42611,0.411 -0.71671,0.53 -0.16759,0.497 -1.31755,6.212 -12.00584,-2.594 0.32983,-1.198 0.98771,-4.122 1.7276,-7.651 1.67233,-7.6 -0.1034,-0.04 -0.0481,-0.03 1.71155,-7.297 2.68322,-12.432 0.44215,-1.181"},"32015":{"name":"Lander, NV","path":"m 163.52123,202.83414 7.27232,1.611 -0.44215,1.181 -2.68322,12.432 -1.71155,7.297 0.0481,0.03 0.1034,0.04 -1.67233,7.6 -1.7276,7.651 -0.98771,4.122 -0.32983,1.198 -12.61559,-2.871 -3.04514,-0.128 -4.98134,-0.06 -0.16937,-0.61 0.0963,-0.635 1.32761,-0.0585 0.38158,-1.74475 -0.0529,-2.75177 0.14263,-0.353 0.23355,-0.267 2.28208,-1.551 1.17313,-0.553 1.46195,-0.285 0.13015,0.03 0.12123,-0.04 0.23178,-0.224 0.16937,-0.362 0.50634,-2.018 1.34963,-6.654 -0.61866,-1.485 6.81413,-10.913 1.51009,-2.427 3.86526,0.86 1.81675,-8.064"},"32021":{"name":"Mineral, NV","path":"m 123.78462,239.33414 15.31664,3.693 -6.10811,0.31 -0.43324,1.824 6.39694,12.113 -8.10136,5.703 -6.51639,4.652 -1.11786,-0.264 -0.24069,-0.121 -9.81827,-14.772 4.33773,1.072 0.56338,-2.234 1.3746,-5.65 0.13549,-2.031 -1.51722,-0.37 0.50634,-2.067 0.98771,-1.196 1.1963,-1.384 3.03801,0.722"},"32005":{"name":"Douglas, NV","path":"m 102.5239,233.09314 2.09665,0.529 2.0093,0.838 0.0481,0.36 3.4552,0.861 4.10595,1.084 -0.50634,2.092 -0.68462,0 -0.92353,-0.227 -0.49029,0.562 -0.7381,1.547 -0.16938,0.664 0.0892,2.103 0.16046,0.74 0.36905,1.35 -0.19968,2.225 -0.29061,1.216 -3.43024,-5.135 -4.23432,-6.35 -0.90926,-3.447 0.24247,-1.012"},"32510":{"name":"Carson City, NV","path":"m 102.81272,231.89514 5.48768,-0.626 0.28882,1.061 0.49029,0.465 1.48692,0.371 0.009,0.119 -0.37084,2.307 -0.0713,0.09 -3.4552,-0.861 -0.0481,-0.36 -2.0093,-0.838 -2.09665,-0.529 0.28882,-1.198"},"32019":{"name":"Lyon NV","path":"m 119.36489,224.97714 1.92906,-1.214 0.47425,-0.186 -0.61866,1.698 -1.14995,2.533 -0.73098,2.922 1.64738,2.86 1.02871,1.64 0.81121,1.197 1.23018,2.066 -0.20147,0.841 -3.03801,-0.722 -1.1963,1.384 -0.98771,1.196 -0.50634,2.067 1.51722,0.37 -0.13549,2.031 -1.3746,5.65 -0.56338,2.234 -4.33773,-1.072 -2.30703,-3.435 0.29061,-1.216 0.19968,-2.225 -0.36905,-1.35 -0.16046,-0.74 -0.0892,-2.103 0.16938,-0.664 0.7381,-1.547 0.49029,-0.562 0.92353,0.227 0.68462,0 0.50634,-2.092 -4.10595,-1.084 0.0713,-0.09 0.37084,-2.307 -0.009,-0.119 -1.48692,-0.371 -0.49029,-0.465 -0.28882,-1.061 1.21413,-0.07 3.28583,-0.861 4.94212,-5.543 1.62241,0.184"},"32001":{"name":"Churchill, NV","path":"m 149.515,223.37814 0.61866,1.485 -1.34963,6.654 -0.50634,2.018 -0.16937,0.362 -0.23178,0.224 -0.12123,0.04 -0.13015,-0.03 -1.46195,0.285 -1.17313,0.553 -2.28208,1.551 -0.23355,0.267 -0.14263,0.353 0.0529,2.75177 -0.38158,1.74475 -1.32761,0.0585 -0.0963,0.635 0.16937,0.61 -1.64737,0.09 -15.31664,-3.693 0.20147,-0.841 -1.23018,-2.066 -0.81121,-1.197 -1.02871,-1.64 -1.64738,-2.86 0.73098,-2.922 1.14995,-2.533 0.61866,-1.698 -0.47425,0.186 -1.92906,1.214 0.43502,-1.07 0.52238,-2.417 -0.15333,-0.828 0.4582,-3.152 0.23356,-0.971 10.51715,2.621 6.05997,1.356 5.19885,1.222 6.87831,1.64"},"32027":{"name":"Pershing, NV","path":"m 156.32913,212.46514 -6.81413,10.913 -6.87831,-1.64 -5.19885,-1.222 -6.05997,-1.356 -10.51715,-2.621 -1.94511,-0.467 2.93995,-11.659 0.43502,0.1 2.53881,-9.924 8.76637,2.161 -0.57765,2.364 19.22825,4.53 -0.90748,3.914 5.64813,1.319 0.13728,0.06 -0.007,0.143 -0.78803,3.391"},"32029":{"name":"Storey, NV","path":"m 117.74248,224.79314 -4.94212,5.543 -3.28583,0.861 -1.21413,0.07 1.39064,-1.576 0.72206,-2.596 -0.21751,-0.633 0.0642,-1.132 2.685,-0.332 1.32646,0.136 1.78287,0.05 0.82903,-0.129 0.85935,-0.264"},"32031":{"name":"Washoe, NV","path":"m 129.81072,171.16314 0.58835,0.151 -0.81299,3.071 -1.50296,5.986 -0.60974,4.035 -0.61152,2.443 -0.42611,1.028 -0.41719,0.45 -1.10003,4.38 -0.42611,1.799 0.33697,0.08 -2.53881,9.924 -0.43502,-0.1 -2.93995,11.659 1.94511,0.467 -0.23356,0.971 -0.4582,3.152 0.15333,0.828 -0.52238,2.417 -0.43502,1.07 -1.62241,-0.184 -0.85935,0.264 -0.82903,0.129 -1.78287,-0.05 -1.32646,-0.136 -2.685,0.332 -0.0642,1.132 0.21751,0.633 -0.72206,2.596 -1.39064,1.576 -5.48768,0.626 0.85935,-3.383 0.77911,-2.884 1.64024,-6.212 0.35301,-1.31 1.73473,-6.508 1.12499,-4.277 0.009,-0.02 0.32983,-1.294 1.03585,-4.008 2.06456,-8.221 1.83279,-7.135 4.70143,-18.16 10.53319,2.683"},"32013":{"name":"Humboldt, NV","path":"m 130.39907,171.31414 9.02311,2.275 9.61858,2.211 19.42972,4.418 0.12836,0.05 -6.89436,30.632 -3.86526,-0.86 -1.51009,2.427 0.78803,-3.391 0.007,-0.143 -0.13728,-0.06 -5.64813,-1.319 0.90748,-3.914 -19.22825,-4.53 0.57765,-2.364 -8.76637,-2.161 -0.33697,-0.08 0.42611,-1.799 1.10003,-4.38 0.41719,-0.45 0.42611,-1.028 0.61152,-2.443 0.60974,-4.035 1.50296,-5.986 0.81299,-3.071"},"36019":{"name":"Clinton, NY","path":"m 888.65722,106.38814 -0.025,0.394 0.623,0.63939 0.16872,0.83409 -0.32883,1.07204 0.0389,0.96389 1.00415,0.71828 -0.11906,1.78838 0.0825,1.59369 0.13199,0.89134 0.28669,0.9659 0.26564,0.224 0.46711,0.273 -1.93619,0.69 0.0624,0.428 -0.30309,0.843 -1.11786,0.788 -1.42986,0.892 -1.24623,0.264 -2.51563,0.909 -0.56338,-1.64 -0.58657,-1.559 -1.22839,-2.852 -2.08953,-5.119 -0.40114,-1.077 2.39439,-0.691 3.94549,-1.004 4.41974,-1.23"},"36031":{"name":"Essex, NY","path":"m 882.76661,121.56014 2.51563,-0.909 1.24623,-0.264 1.42986,-0.892 1.11786,-0.788 0.30309,-0.843 -0.0624,-0.428 1.93619,-0.69 0.76486,0.924 0.22999,0.499 0.29774,0.804 0.009,0.01 0.025,0.25 -0.17599,1.38105 0.62531,2.37895 -0.67392,1.922 -0.009,1.902 0,0.749 0.0392,0.765 0,0 0.50652,0.36255 1.44567,4.24245 0.27991,0.507 -0.92174,0.338 -9.66672,3.703 -0.0161,-0.868 -0.0963,-0.337 -1.82566,-0.353 -0.59192,0.266 -0.19255,0.126 -0.15511,0.266 -2.58694,-2.106 1.06972,-1.299 -1.19809,-3.295 2.93639,-1.086 -2.18936,-5.874 3.58356,-1.373"},"36073":{"name":"Orleans, NY","path":"m 822.76591,164.99114 -1.09468,0.249 -5.69627,1.095 -0.89144,0.216 -0.98949,-5.522 7.70735,-1.309 0.96453,5.271"},"36037":{"name":"Genesee, NY","path":"m 822.76591,164.99114 1.50129,-0.26837 -0.44407,2.2094 0.82553,-0.12503 0.19073,1.206 -0.19434,2.98 -8.43654,1.478 -0.93065,-5.013 -0.19434,-0.907 0.89144,-0.216 5.69627,-1.095 1.09468,-0.249"},"36121":{"name":"Wyoming, NY","path":"m 816.20851,172.47114 8.43654,-1.478 0.82904,4.42 -0.30665,1.189 -0.61688,0.539 -0.13906,0.781 -0.10341,0.825 0.0232,0.07 0.41184,0.193 -4.47678,0.852 -2.53486,0.61664 -0.10736,-0.47964 -1.02158,-5.553 -0.41898,0.07 -0.33696,-1.985 0.36192,-0.07"},"36051":{"name":"Livingston, NY","path":"m 824.83939,168.01314 2.94708,-0.587 0.19255,0.16 0.0802,0.145 -0.0945,0.635 -0.016,0.05 -0.4261,0.1 -0.025,0.03 0.041,0.06 2.00217,-0.376 0.91461,-0.275 0.25851,0.209 0.15155,0.241 0.25673,0.595 0.19968,0.868 0,0.03 -0.58656,0.119 0.513,1.97742 -0.5023,0.16058 0.61865,2.025 1.64559,-0.289 0.37084,0.997 0.20859,1.084 -2.70945,0.61912 0.15205,1.10178 -0.98566,0.17094 0.15204,1.27419 -1.96115,0.298 -0.19255,-0.981 -3.30188,0.562 -0.41184,-0.193 -0.0232,-0.07 0.10341,-0.825 0.13906,-0.781 0.61688,-0.539 0.30665,-1.189 -0.82904,-4.419 0.19434,-2.981"},"36093":{"name":"Schenectady, NY","path":"m 887.60532,155.36514 0.63292,-0.1 2.21789,0.609 0.73811,0.532 0.19433,0.545 1.47087,1.246 0.11232,0.06 0.21751,-0.02 -5.8175,2.531 -0.13379,0.61639 -1.2065,0.16131 -0.3326,-0.75009 0.38254,-0.91261 -0.43012,-0.295 -0.0321,-0.06 0.0571,-0.307 2.38548,-2.587 -0.45642,-1.269"},"36057":{"name":"Montgomery, NY","path":"m 887.39851,154.76214 0.20681,0.603 0.45642,1.269 -2.38548,2.587 -0.0571,0.307 0.0321,0.06 -1.15709,0.61 -1.84883,0.651 -1.95938,-0.491 -1.50295,-0.06 -2.05744,-0.33 -0.89143,-4.163 3.88131,0.58 0.87539,-0.193 6.40763,-1.439"},"36035":{"name":"Fulton, NY","path":"m 875.7849,150.26214 3.19846,0.644 3.12229,-0.95368 0.47698,0.5408 1.63062,-0.26878 -0.0492,-0.85572 0.19363,-0.24854 0.90856,-0.28808 2.13231,5.93 -6.40763,1.439 -0.87539,0.193 -3.88131,-0.58 -0.35324,-0.99377 0.74184,-1.91364 -0.83788,-2.64459"},"36099":{"name":"Seneca, NY","path":"m 844.34042,163.27214 -0.10341,1.503 0.77198,3.897 0.0963,0.433 0.36014,1.093 0.082,0.17 0.1248,0.176 1.31933,1.632 1.821,1.32884 -1.96542,0.51016 -3.26265,0.796 -0.74325,-3.11594 -1.00288,-0.65617 -0.55199,-1.01689 -0.60261,-2.227 0.025,-0.112 0.0392,-0.05 0.19433,-0.1 -0.65075,-3.18 4.0489,-1.086"},"36069":{"name":"Ontario, NY","path":"m 840.29152,164.35814 0.65075,3.18 -0.19433,0.1 -0.0392,0.05 -0.025,0.112 0.60261,2.227 -5.59999,1.196 -0.2817,0.731 -0.0802,0.476 -0.11233,1.091 0.42611,2.067 -2.04852,0.385 -0.20859,-1.084 -0.37084,-0.997 -1.64559,0.289 -0.61865,-2.025 0.5023,-0.16058 -0.513,-1.97742 0.58656,-0.12 0,-0.03 -0.19968,-0.868 -0.25673,-0.595 -0.15155,-0.241 -0.25851,-0.209 1.61349,-0.297 -0.44928,-2.065 1.8738,-0.369 2.02534,-0.522 1.84705,-0.378 0.13728,0.618 2.78841,-0.577"},"36123":{"name":"Yates, NY","path":"m 841.28636,170.02214 0.55199,1.01689 1.00288,0.65617 0.74325,3.11594 0.20729,1.008 0.22091,1.01852 -1.2896,0.20691 -0.56816,-0.49197 -1.80813,0.27454 -0.65788,-0.128 -0.1141,-0.104 -0.2086,-1.037 -0.0553,-0.53 0.009,-0.192 -3.68163,0.747 -0.42611,-2.067 0.11233,-1.091 0.0802,-0.476 0.2817,-0.731 5.59999,-1.196"},"36097":{"name":"Schuyler, NY","path":"m 843.58448,174.81114 3.26265,-0.796 0.39402,1.543 0.50633,1.961 0.016,0.403 0.3958,2.016 1.20522,-0.208 0.15867,0.77 -0.30665,0.419 -0.73811,0.06 -0.85756,-0.207 -0.21038,-0.893 -1.75969,0.36 -2.04139,0.563 0.0392,0.202 -2.03068,0.562 -0.17829,0.03 -0.61866,-2.635 -0.47424,-2.131 1.80813,-0.27454 0.56816,0.49197 1.2896,-0.20691 -0.22091,-1.01852 -0.20729,-1.008"},"36109":{"name":"Tompkins, NY","path":"m 846.99155,172.17614 3.3928,-0.788 0.0642,0.185 3.15746,-0.779 1.23732,4.844 -0.51636,0.47913 0.27234,0.52121 0.65569,-0.085 0.26007,0.65973 -0.0657,0.56664 0.28334,0.38047 -0.79814,0.17215 -0.14655,-0.27002 -0.44655,0.13005 -1.58685,0.0137 0.2516,1.24708 -0.9818,0.24641 -0.33019,-0.42846 -0.98179,0.19987 -1.34785,0.259 -1.20522,0.208 -0.3958,-2.016 -0.016,-0.403 -0.50633,-1.961 -0.39402,-1.543 1.96542,-0.51016 -1.821,-1.32884"},"36011":{"name":"Cayuga, NY","path":"m 844.05873,154.03114 0.73097,2.635 0.18159,1.06844 0.67954,-0.17644 1.41203,-0.337 0.17116,0.651 0.47424,1.777 0.22464,0.972 -0.025,0.02 -0.29774,0 -0.0874,0.103 -0.009,0.122 0.56338,2.073 0.46685,-0.0983 0.9648,3.55331 1.51722,-0.403 1.15887,0.747 0.51346,0.532 0.0553,0.201 0.85221,3.311 -3.15746,0.779 -0.0642,-0.185 -3.3928,0.788 -1.31933,-1.632 -0.1248,-0.176 -0.082,-0.17 -0.36014,-1.092 -0.0963,-0.434 -0.77198,-3.897 0.10341,-1.503 -1.62241,-7.199 1.34072,-2.042"},"36067":{"name":"Onodaga, NY","path":"m 855.39778,157.18914 0.31913,0.314 0.47229,1.95589 0.71154,-0.35689 0.78624,2.186 1.20522,4.426 -6.13842,1.769 -0.0553,-0.201 -0.51346,-0.532 -1.15887,-0.747 -1.51722,0.403 -0.9648,-3.55331 -0.46685,0.0983 -0.56338,-2.074 0.009,-0.121 0.0874,-0.103 0.29774,0 0.025,-0.02 -0.22464,-0.972 -0.47424,-1.778 2.56668,-0.60376 0.74337,0.2921 0.27863,-0.6443 0.63598,0.39949 -0.0478,-1.0513 2.54807,0.49077 1.43878,0.435"},"36023":{"name":"Cortland, NY","path":"m 858.8922,165.71414 0.42611,1.496 1.92193,6.87 -4.37159,1.06 -2.02534,0.498 -1.23732,-4.844 -0.85221,-3.311 6.13842,-1.769"},"36017":{"name":"Chenango, NY","path":"m 859.31831,167.21014 6.41298,-1.825 1.11786,-0.152 2.14479,-0.611 0.16759,10.14 0.54021,2.702 -1.89697,0.408 -1.7276,0.371 -0.28922,-1.33739 -3.01266,0.79739 -0.24247,0.163 -0.20146,-0.33 -1.09112,-3.455 -1.92193,-6.87"},"36053":{"name":"Madison, NY","path":"m 855.39778,157.18914 1.91837,0.249 1.69907,-0.756 0.82547,0.09 0.39401,0.209 1.02872,0.587 0.51257,0.3395 0.63221,0.53888 0.27332,0.57875 0.6322,-0.0991 0.60261,2.04 0.0642,0.323 1.84584,-0.22001 0.25082,1.37501 3.06119,-0.867 -0.14442,3.045 -2.14479,0.612 -1.11786,0.152 -6.41298,1.825 -0.42611,-1.496 -1.20522,-4.426 -0.78624,-2.186 -0.71154,0.35639 -0.47229,-1.95639 -0.31913,-0.313"},"36065":{"name":"Oneida, NY","path":"m 867.65144,144.30914 1.97721,6.29 -0.36739,0.72788 -0.62301,0.40408 0.1609,0.91533 1.47311,0.25071 -0.90926,2.805 -0.65966,1.686 0.98236,3.867 -0.54734,0.321 -3.06119,0.867 -0.25082,-1.37501 -1.84584,0.22001 -0.0642,-0.323 -0.60261,-2.04 -0.6322,0.0991 -0.27332,-0.57875 -0.63221,-0.53888 -0.51257,-0.3395 -1.02872,-0.587 -0.39401,-0.208 -0.82547,-0.09 -1.69907,0.756 -0.4475,-3.769 -0.41898,-0.05 0.41363,-3.833 1.0091,0.1 3.87061,0.355 5.90843,-5.93"},"36049":{"name":"Lewis, NY","path":"m 859.2149,131.94914 5.04552,1.727 3.39102,10.633 -5.90843,5.93 -3.87061,-0.355 -1.36746,-4.869 -0.60057,-2.03202 -1.20157,0.29525 0.13995,-0.50967 -0.23567,-1.42191 1.32049,-0.50967 2.26993,-2.37277 0.75627,-0.18663 -0.34409,-0.82326 0.76033,-0.23543 -0.0909,-1.80589 -1.10182,-0.532 1.03763,-2.932"},"36043":{"name":"Herkimer, NY","path":"m 864.26042,133.67614 2.03923,0.68546 3.18458,-1.22346 4.25215,12.842 -0.74881,3.648 2.79733,0.634 0.83788,2.64459 -0.74184,1.91364 0.35324,0.99377 0.89143,4.163 -2.07347,-0.362 0.11232,1.519 -0.19968,0.234 -3.6014,-1.166 -0.39223,1.237 -1.14995,0.337 -0.1355,-0.521 -0.98236,-3.867 0.65966,-1.686 0.90926,-2.805 -1.47311,-0.25071 -0.1609,-0.91533 0.62301,-0.40408 0.36739,-0.72788 -1.97721,-6.29 -3.39102,-10.633"},"36077":{"name":"Otsego, NY","path":"m 879.18305,160.30714 -0.0892,0.907 0.0963,0.635 0.0802,0.307 1.03049,2.104 0.21573,0.547 -0.36192,1.535 -0.40828,1.219 -2.1537,0.621 -2.8936,2.603 -1.46374,1.382 -0.68997,0.804 -1.63311,1.237 -0.42432,0.169 -1.32646,0.385 -0.16759,-10.14 0.14442,-3.046 0.54734,-0.321 0.1355,0.521 1.14995,-0.337 0.39223,-1.237 3.6014,1.166 0.19968,-0.234 -0.11232,-1.519 2.07347,0.362 2.05744,0.33"},"36095":{"name":"Schoharie, NY","path":"m 885.6513,159.59214 0.43012,0.295 -0.38254,0.91261 0.3326,0.75009 1.2065,-0.16131 0.13379,-0.61639 0.32091,0.225 0.17651,1.141 -0.12837,1.182 -0.1141,2.161 -0.0143,2.597 0.0874,0.28 0.14441,-0.06 0.01,1.08287 -2.85167,0.83713 -2.81435,-0.82505 -2.44155,-1.83695 0.40828,-1.219 0.36192,-1.535 -0.21573,-0.547 -1.03049,-2.104 -0.0802,-0.307 -0.0963,-0.635 0.0892,-0.907 1.50295,0.06 1.95938,0.491 1.84883,-0.651 1.15709,-0.61"},"36001":{"name":"Albany, NY","path":"m 893.18927,158.24114 1.38155,-1.20058 0.29069,0.54538 0.47255,0.0362 -0.041,7.595 -7.44883,3.086 -0.14441,0.06 -0.0874,-0.279 0.0143,-2.598 0.1141,-2.161 0.12837,-1.182 -0.17651,-1.141 -0.32091,-0.225 5.8175,-2.531"},"36091":{"name":"Saratoga, NY","path":"m 884.32663,146.26914 4.35376,-1.648 0.2086,0.266 1.0305,1.599 0.32805,1.245 0.16402,0.09 1.08933,0.296 1.36568,-1.318 0.98236,-1.237 0.12837,0.201 1.32467,4.308 0.0731,0.433 0.0713,1.576 -0.0802,0.811 -0.2086,1.02 0.1765,3.712 -0.47255,-0.0362 -0.29069,-0.54539 -1.38155,1.20058 -0.21751,0.02 -0.11232,-0.06 -1.47087,-1.246 -0.19433,-0.546 -0.73811,-0.531 -2.21789,-0.61 -0.63292,0.1 -0.20681,-0.603 -2.13231,-5.93 -0.93957,-2.563"},"36113":{"name":"Warren, NY","path":"m 884.02889,137.49314 9.66672,-3.703 -0.041,1.871 -0.10341,1.39 -0.92352,2.25 -0.29952,0.797 -0.17473,0.835 -0.0178,0.153 0.0481,0.321 1.6652,4.154 -0.98236,1.237 -1.36568,1.318 -1.08933,-0.296 -0.16402,-0.09 -0.32805,-1.245 -1.0305,-1.599 -0.2086,-0.266 -4.35376,1.648 -2.75454,-7.827 2.4568,-0.949"},"36041":{"name":"Hamilton, NY","path":"m 878.43602,129.89314 1.19809,3.295 -1.06972,1.299 2.58694,2.106 0.15511,-0.266 0.19255,-0.126 0.59192,-0.266 1.82566,0.353 0.0963,0.337 0.0161,0.868 -2.4568,0.949 2.75454,7.827 0.93957,2.563 -0.90856,0.28808 -0.19363,0.24854 0.0492,0.85572 -1.63062,0.26878 -0.47698,-0.5408 -3.12229,0.95368 -3.19846,-0.644 -2.79733,-0.634 0.74881,-3.648 -4.25215,-12.842 4.99026,-1.824 3.96153,-1.421"},"36033":{"name":"Franklin, NY","path":"m 882.76661,121.56014 -3.58356,1.373 2.18936,5.874 -2.93639,1.086 -3.96153,1.421 -0.2193,-1.639 -0.58478,-1.743 -3.25374,-9.314 -2.04316,-6.074 -1.24445,0.28 -0.39223,-1.173 0.42432,-0.02 6.57523,-1.253 2.29633,-0.515 1.67947,-0.49 0.18542,-0.06 0.40114,1.077 2.08953,5.119 1.22839,2.852 0.58657,1.559 0.56338,1.64"},"36089":{"name":"St. Lawrence, NY","path":"m 866.73683,111.65114 0.39223,1.173 1.24445,-0.28 2.04316,6.074 3.25374,9.314 0.58478,1.743 0.2193,1.639 -4.99026,1.824 -3.18458,1.22346 -2.03923,-0.68546 -5.04552,-1.727 -1.19809,-0.457 -3.51938,-1.207 -2.84368,-1.075 0.50455,-1.72 0.46711,-1.15 0.85222,-1.398 2.5709,-3.987 0.74702,-1.035 5.87277,-6.67 0.29774,-0.209 2.15371,-1.244 0.40293,-0.06 1.21413,-0.08"},"36045":{"name":"Jefferson, NY","path":"m 851.65375,129.21014 2.84368,1.075 3.51938,1.207 1.19809,0.457 -1.03763,2.932 1.10182,0.532 0.0909,1.80589 -0.76033,0.23543 0.34409,0.82326 -0.75627,0.18663 -2.26993,2.37277 -1.32049,0.50967 0.23567,1.42191 -0.13995,0.50967 1.20157,-0.29525 0.60057,2.03202 -3.34288,0.385 -0.73811,0.337 0.15333,0.612 -2.93995,0.362 -1.0626,-2.717 -1.07544,-0.42424 0.41766,-0.63147 0.58942,-0.0423 0.88107,-0.57775 0.3212,-0.66228 0.0731,-0.128 -0.0339,-0.346 -0.35301,-0.916 -0.11232,-0.145 -0.13015,-0.04 -1.4049,-0.119 -0.99484,-0.419 -1.56001,-1.123 -0.24782,-0.644 -0.0107,-0.264 0.0339,-0.517 0.3851,-1.629 3.67449,-3.907 2.62617,-2.248"},"36075":{"name":"Oswego, NY","path":"m 849.63733,146.71114 2.93995,-0.362 -0.15333,-0.612 0.73811,-0.337 3.34288,-0.385 1.36746,4.869 -1.0091,-0.1 -0.41363,3.833 0.41898,0.05 0.4475,3.769 -1.91837,-0.249 -1.43878,-0.435 -2.54807,-0.49077 0.0478,1.0513 -0.63598,-0.39949 -0.27863,0.6443 -0.74337,-0.2921 -2.56668,0.60476 -0.17116,-0.651 -1.41203,0.337 -0.67954,0.17644 -0.18159,-1.06844 -0.73097,-2.635 0.77376,-0.868 2.02356,-2.138 0.10519,-0.06 0.66679,-0.209 0.44037,0.202 0.24247,-0.02 0.54556,-0.137 0.92531,-0.58 0.0963,-0.112 0.11945,-0.305 0.0571,-0.369 0.0321,-0.355 -0.0481,-0.594 -0.19255,-1.117 -0.20859,-0.658"},"36117":{"name":"Wayne, NY","path":"m 842.71801,156.07314 1.62241,7.199 -4.0489,1.086 -2.78841,0.577 -0.13728,-0.618 -1.84705,0.378 -2.02534,0.522 -1.14995,-5.497 0.97344,-0.272 2.77058,-0.708 0.51525,-0.112 0.76307,0 0.58657,0.112 1.24622,-0.227 0.0963,-0.03 2.39439,-1.405 0.38688,-0.29 0.64184,-0.722"},"36055":{"name":"Monroe, NY","path":"m 822.76591,164.99114 -0.96453,-5.271 0.68997,-0.1 2.65291,0.05 1.71155,0.41 0.78625,0.442 0.12123,0.06 1.41382,0.579 0.46711,0.08 0.27991,-0.03 2.41936,-1.494 1.14995,5.497 -1.8738,0.369 0.44928,2.065 -1.61349,0.297 -0.91461,0.275 -2.00217,0.376 -0.041,-0.06 0.025,-0.03 0.4261,-0.1 0.016,-0.05 0.0945,-0.634 -0.0802,-0.145 -0.19255,-0.16 -2.94708,0.586 -0.19073,-1.206 -0.82553,0.12503 0.44407,-2.2094 -1.50129,0.26837"},"36063":{"name":"Niagara, NY","path":"m 815.08352,166.55114 0.19434,0.907 -0.37976,0.202 -1.74364,0.57 -3.01103,0.87842 -0.7392,1.36032 -0.80804,0.12114 -1.15226,-1.18688 -1.36925,0.257 -0.53129,-0.104 -0.19077,-0.338 -0.77198,-3.882 3.65488,-1.961 3.11111,-1.51 1.37459,-0.538 0.93957,-0.298 0.10519,0 0.32805,0 0.98949,5.522"},"36029":{"name":"Erie, NY","path":"m 815.27786,167.45814 0.93065,5.013 -0.36192,0.07 0.33696,1.985 0.41898,-0.07 1.02158,5.553 -2.14479,0.981 -1.84884,0.989 -1.92371,1.277 -0.40828,0.168 -0.41006,0.105 -0.98771,-0.507 -2.1965,-1.237 -0.38418,-0.67809 -1.00289,0.18809 0.0321,-0.483 0.2086,-0.596 0.72206,-1.902 0.45107,-0.378 1.10894,-0.916 0.41185,-0.193 0.68818,-0.9 0.19434,-0.362 0,-0.184 -0.60261,-1.334 -0.94136,-1.704 -0.21751,-0.282 -0.25495,-0.16 -0.70958,-0.128 -0.72206,-0.305 -0.17651,-0.193 -0.13728,-0.499 -0.29774,-1.109 1.36925,-0.257 1.15226,1.18688 0.80804,-0.12114 0.7392,-1.36032 3.01103,-0.87842 1.74364,-0.57 0.37976,-0.202"},"36013":{"name":"Chautauqua, NY","path":"m 807.70422,181.77814 2.20363,12.263 -9.19248,1.629 -0.25673,0.05 -2.28207,0.394 -0.52951,-3.011 -0.44216,-2.549 -0.098,-0.61 0.6757,-0.465 1.08399,-0.917 1.46373,-1.376 1.35855,-1.355 0.33696,-0.467 0.28883,-0.637 0.74702,-0.964 1.64916,-1.3 1.60636,-1.173 1.00289,-0.18809 0.38418,0.67809"},"36009":{"name":"Cattaraugus, NY","path":"m 817.62411,180.00214 0.10736,0.47964 2.53486,-0.61664 2.24463,11.853 -4.83336,0.889 -4.64259,0.902 -0.7399,0.129 -2.38726,0.403 -2.20363,-12.263 2.1965,1.237 0.98771,0.507 0.41006,-0.105 0.40828,-0.168 1.92371,-1.277 1.84884,-0.989 2.14479,-0.981"},"36003":{"name":"Allegany, NY","path":"m 824.74311,179.01314 3.30188,-0.562 0.19255,0.981 1.96115,-0.298 1.63846,10.808 -7.63425,1.44 -1.69194,0.336 -2.24463,-11.853 4.47678,-0.852"},"36101":{"name":"Steuben, NY","path":"m 833.58971,175.96814 2.04852,-0.385 3.68163,-0.747 -0.009,0.192 0.0553,0.53 0.2086,1.037 0.1141,0.104 0.65788,0.128 0.47424,2.131 0.61866,2.635 0.17829,-0.03 2.03068,-0.562 1.26228,6.29 -10.73466,2.18 -2.33913,0.473 -1.63846,-10.808 -0.15204,-1.27419 0.98566,-0.17094 -0.15206,-1.10178 2.70946,-0.61912"},"36015":{"name":"Chemung, NY","path":"m 850.7124,179.47114 0.9984,6.445 -6.15625,1.23 -0.64361,0.143 -1.26228,-6.29 -0.0392,-0.202 2.04139,-0.563 1.75969,-0.36 0.21038,0.893 0.85756,0.207 0.73811,-0.06 0.30665,-0.419 -0.15867,-0.77 1.34785,-0.259"},"36107":{"name":"Tioga, NY","path":"m 856.86865,175.14014 0.13014,0.17 1.37995,2.956 0.041,0.144 0.18542,0.901 0.0464,0.738 -0.47425,0.13 1.06794,4.186 -0.68106,0.144 -6.85335,1.407 -0.9984,-6.445 0.98179,-0.19987 0.33019,0.42846 0.9818,-0.24641 -0.2516,-1.24708 1.58685,-0.0137 0.44655,-0.13005 0.14655,0.27002 0.79814,-0.17215 -0.28334,-0.38047 0.0657,-0.56664 -0.26007,-0.65973 -0.65569,0.085 -0.27234,-0.52121 0.51636,-0.47913 2.02534,-0.498"},"36007":{"name":"Broome, NY","path":"m 861.24024,174.08014 1.09112,3.455 0.20146,0.33 0.24247,-0.163 3.01266,-0.79739 0.28922,1.33739 1.7276,-0.371 1.89697,-0.408 1.95046,4.202 -2.05565,0.456 -10.35134,2.243 -1.06794,-4.186 0.47425,-0.13 -0.0464,-0.738 -0.18542,-0.901 -0.041,-0.144 -1.37995,-2.956 -0.13014,-0.17 4.37159,-1.06"},"36025":{"name":"Delaware, NY","path":"m 879.74643,167.56114 2.44155,1.83695 2.81435,0.82505 0.28704,0.07 -1.03584,3.745 1.58319,0.402 -4.66043,4.692 -5.23985,5.103 -1.96122,0.0389 -0.68278,-1.53493 -0.30487,-0.289 -1.01267,-0.713 -0.3227,-0.07 -1.95046,-4.202 -0.54021,-2.702 1.32646,-0.385 0.42432,-0.169 1.63311,-1.237 0.68997,-0.804 1.46374,-1.382 2.8936,-2.603 2.1537,-0.621"},"36105":{"name":"Sullivan, NY","path":"m 875.93644,184.23714 5.23985,-5.103 2.35518,0.715 3.79929,1.214 -0.34588,1.036 -0.65787,1.51 -0.33697,0.859 1.64559,0.765 1.86488,0.811 0.74703,1.109 -0.58657,0.523 -0.32091,0.692 -0.44216,1.157 -4.57127,1.292 -0.12124,0.1 -0.016,0.06 0.2086,0.87 0.22464,0.503 -0.75415,0.08 -1.35142,0.07 -0.29774,-0.137 -1.831,-0.95 -0.52239,-0.497 -0.7381,-0.723 -0.45998,-1.053 -2.73136,-4.901"},"36039":{"name":"Greene, NY","path":"m 895.29306,165.21714 0.0891,0 0.0571,0.04 0.13015,0.378 0.63292,3.199 0.0642,0.577 -0.041,0.314 -0.65075,1.631 -0.50633,1.6 -0.0713,0.337 -1.6545,-0.699 -0.74702,0.242 -0.14442,1.79 -2.64221,0.339 -1.29615,0.16 -2.67608,-0.682 -1.58319,-0.402 1.03584,-3.745 -0.28704,-0.07 2.85162,-0.84551 -0.12421,-1.03633 7.56332,-3.12416"},"36061":{"name":"New York, NY","path":"m 901.25781,201.41797 -0.45898,2.21094 -0.15137,2.16308 0.0459,0.2334 -0.003,0.1897 0.10306,0.004 0.12695,-0.1543 -0.0125,-0.16979 -0.0207,-0.10267 0.23242,-0.26465 0.26758,-0.15429 0.0918,-0.625 0.0234,-0.27149 0.34375,-0.81054 0.22852,-0.42188 -0.34961,-0.11719 -0.28125,-0.58789 0.17383,-1.08789 z"},"36111":{"name":"Ulster, NY","path":"m 894.94005,174.45814 0.33161,3.938 0.96702,0.43776 0.18755,2.4124 0.36192,0.738 0.36088,3.57684 -1.62242,0.603 -0.0191,-0.74495 -1.61347,0.31618 0.13683,0.60613 -0.30487,0.0605 -0.75896,0.20384 -1.2391,-0.69609 -1.48043,1.24641 -0.74703,-1.109 -1.86488,-0.811 -1.64559,-0.765 0.33697,-0.859 0.65787,-1.51 0.34588,-1.036 -3.79929,-1.214 -2.35518,-0.715 4.66043,-4.692 2.67608,0.682 1.29615,-0.16 2.64221,-0.339 0.14442,-1.79 0.74702,-0.242 1.6545,0.699 -0.0571,1.166"},"36005":{"name":"Bronx, NY","path":"m 901.32986,200.56414 2.44966,0.291 0.0865,0.31583 0.30677,0.0197 -0.035,0.26234 -0.14332,0.26209 -0.13036,0.012 -0.12312,-0.21047 -0.14711,-0.17795 -0.21742,0.12614 0.14562,0.61339 0.11504,-0.0101 0.1919,0.17217 0.20862,0.19963 -0.0435,0.0342 -0.32152,-0.0825 -0.2734,0.0707 -0.0692,0.13902 -0.23642,-0.13608 -0.095,0.24687 -0.26483,-0.0294 -0.0453,0.21174 -0.003,0.28395 -0.14147,0.0874 -0.17895,-0.0487 -0.0239,-0.22101 0.0732,-0.0652 -0.12182,-0.0739 -0.12106,0.1037 -0.0972,0.17723 -0.34928,-0.11812 -0.2821,-0.58834 0.1747,-1.0871 -0.35856,-0.0332 0.0713,-0.74685"},"36047":{"name":"Kings, NY","path":"m 900.90956,206.00866 0.20891,-0.58893 0.26912,-0.1541 0.09,-0.62431 0.2765,-0.0895 0.4227,0.30341 0.4052,0.45268 0.29663,0.24459 0.38708,-0.33446 0.4052,0.61553 0.007,0.25364 0.10662,0.27173 0.13022,-0.0768 0.37273,0.34163 -0.007,0.52257 -0.40004,0.62459 -0.98993,0.27517 -1.14331,0.46102 -0.55569,0.0626 -0.007,-0.23505 0.32263,-0.11176 0.004,-0.23236 -0.37477,-0.12707 -0.25937,0.009 -0.24136,-0.61254 0.31597,-0.72319 -0.19184,-0.33685 z"},"36087":{"name":"Rockland, NY","path":"m 898.09038,191.71814 0.55626,1.166 1.02693,1.406 0.91639,1.036 0.10519,0.264 0.60796,3.09 -6.08137,-1.819 -0.40114,-0.121 3.26978,-5.092 0,0.07"},"36059":{"name":"Nassau, NY","path":"m 907.92188,198.98438 -0.40626,0.1875 -0.33007,0.0566 -1.02344,0.57226 -0.35156,0.66406 0.45898,1.23828 -0.69726,-0.83398 -0.59571,-0.0586 -0.27734,0.22461 -0.0508,0.36718 0.20117,0.23438 0.4375,-0.01 -0.11328,0.35157 -0.81445,-0.20508 -0.0156,0.58203 0.43359,0.5918 1.06055,0.47461 0.0684,0.50195 -0.36719,0.19531 0.38477,1.53516 -0.19531,0.22265 0.002,0.28907 -0.32227,0.2871 0.0645,0.23438 0.22265,0.0625 0.12891,-0.0176 0.22266,0.3125 -0.16993,0.0117 -0.0527,0.23633 0.77539,-0.11328 1.33984,-0.32617 0.85352,-0.27149 0.002,-0.32226 -0.61523,0.14648 -0.23633,0.20898 -0.30469,0.0117 -0.85351,0.36524 -0.72461,0.0508 0.77148,-0.39063 0.24024,-0.0566 1.04492,-0.51758 0.60156,-0.1582 0.34766,0.1836 0.77228,-0.60845 0.27329,-0.19426 0.2255,-0.12893 -0.13947,-0.16677 -0.27614,-0.24727 0.69335,-0.2539 0.34375,-0.20313 -1.71289,-4.37695 -0.33203,-0.10938 -0.3125,-0.20117 -0.0976,-0.2168 -0.40625,0.16407 0.0469,-0.28907 z m 3.18912,5.73293 -0.24876,0.39429 -0.53993,0.31037 -0.47657,0.41992 -0.51367,0.44336 -0.26953,0.16601 -0.16602,0.2793 0.0664,0.0606 0.74219,-0.50586 0.56836,-0.22852 1.11353,-0.6404 z"},"36071":{"name":"Orange, NY","path":"m 897.14903,185.56114 -0.3392,2.57728 0.67794,0.93672 0.84269,0.74512 -0.24008,1.82788 -3.26978,5.092 -2.51563,-0.852 -6.31493,-2.209 -1.36746,-1.337 -0.22464,-0.503 -0.2086,-0.87 0.016,-0.06 0.12124,-0.1 4.57127,-1.292 0.44216,-1.157 0.32091,-0.692 0.58657,-0.523 1.48043,-1.24641 1.2391,0.69609 0.75896,-0.20384 0.30487,-0.0605 -0.13683,-0.60613 1.61347,-0.31618 0.0191,0.74495 1.62242,-0.603"},"36081":{"name":"Queens, NY","path":"m 902.07378,203.13775 0.28447,0.16514 0.0216,0.19712 0.12733,0.017 0.0592,-0.15468 0.15616,-0.02 0.42078,0.28102 0.063,-0.11059 -0.18951,-0.37484 0.11515,-0.22406 0.16979,-0.0359 0.14067,-0.19805 0.25803,0.0563 0.2232,-0.0551 0.14278,0.11851 0.15611,-0.19232 0.47818,0.40384 0.0765,-0.17028 1.06147,0.47448 0.0683,0.50096 -0.36877,0.19638 0.38609,1.53392 -0.1966,0.22286 0.002,0.28908 -0.32063,0.28747 0.0634,0.23449 0.22233,0.0623 0.12962,-0.0171 0.22717,0.31556 -0.30596,0.19338 -0.19903,0.002 -1.03444,0.66659 -0.96811,0.69417 -0.64919,0.44472 -0.0157,-0.32387 0.48567,-0.39458 0.5154,-0.45272 0.40004,-0.62459 0.007,-0.52257 -0.37273,-0.34163 -0.13022,0.0768 -0.10662,-0.27173 -0.007,-0.25364 -0.4052,-0.61553 -0.38708,0.33446 -0.29663,-0.24459 -0.4052,-0.45268 -0.4227,-0.30341 -0.2765,0.0895 0.0234,-0.27078 0.34558,-0.8111 0.2272,-0.42169"},"36103":{"name":"Suffolk, NY","path":"m 928.4765,187.7727 0.29512,0.14121 0.15585,-0.36379 0.33835,-0.25205 -0.51272,0.0444 z m -0.34191,0.55072 -0.701,0.0555 -0.74218,0.67773 -0.4375,0.082 -0.42774,1.26953 -0.71094,0.32227 -0.35742,0.80273 -0.70312,0.54102 -0.8125,1.34375 -1.77539,0.80469 -1.29297,0.50976 -1.98828,0.51367 -2.43946,0.60547 -1.36718,0.16992 -0.70508,0.37696 0.3457,0.83008 -1.0957,0.80859 -1.38086,-0.18945 -0.79492,0.16211 -0.65821,-0.27539 -0.39257,-0.11915 0.0977,0.81641 0.82617,-0.17969 0.0899,0.2461 -1.27149,0.23047 -0.16992,-0.44532 -0.92578,-0.0957 -0.15039,0.36328 1.05273,1.3711 1.71289,4.3789 0.92774,-0.39258 1.3457,-0.86328 0.54688,-0.82422 0.24218,0.17969 1.21094,-0.0332 0.0977,-0.63867 1.0664,-0.15235 0.76368,-0.70117 0.57226,-0.34961 0.75391,0.0137 0.23242,-0.48633 0.61328,-0.0957 0.16016,0.27735 0.51758,-0.19141 0.29101,-0.34375 0.3457,-0.19922 0.20118,-0.54688 0.65234,-0.0508 0.36914,-0.74218 0.56445,0.10351 0.51368,-0.32422 0.20312,0.11524 -1.41016,0.9707 0.0723,0.082 1.64062,-1.03906 1.81446,-1.23242 0.36498,-0.20438 0.25707,-0.20209 -0.0435,-0.10753 0.1174,-0.32553 -0.15302,-0.006 -0.25585,0.28806 -0.13314,-0.0433 0.0584,-0.54687 -0.12118,-0.13663 0.41997,-0.16553 0.52775,0.0189 0.084,0.31451 -0.44556,0.5439 0.0601,0.1078 1.14936,-0.81054 4.10742,-3.56641 1.82812,-1.51562 1.76172,-1.4668 0.2168,-0.49219 -0.89648,-0.0781 -0.78907,0.58984 -0.10547,0.69141 -0.27148,-0.18555 -0.50781,0.90234 -0.41407,0.1211 -0.37695,0.4082 -0.19141,0.39258 -0.25,0.002 -0.63085,-0.55859 -0.0781,-0.40821 -0.48437,-0.18164 -0.375,0.60157 -0.82422,-0.1211 -0.0274,0.8086 -0.22851,0.082 -0.11328,0.27344 -0.44336,0.0859 -0.4375,-0.66601 -0.31641,0.16211 0.34961,0.66211 -0.80664,0.27343 -0.33399,1.09375 -0.55273,0.47071 -0.17383,0.84179 -0.51758,0.4375 -1.26757,-0.0996 -0.75782,0.15039 0.0449,-0.38281 0.45703,-0.10547 0.375,-0.65625 0.0879,-0.52929 0.81836,-0.51758 0.0879,-0.48438 0.63281,0.32618 -0.31836,-0.73243 0.12891,-0.34179 0.78906,-0.15235 -0.0156,-0.3125 -0.61132,0.0273 0.36132,-0.77735 0.36914,-0.61328 0.2129,-0.48828 0.35937,-0.46875 0.49805,0.37695 0.52344,-0.51172 z m 2.00213,0.26056 0,0.56055 0.37695,0.18359 0.28516,-0.0137 0.31055,0.63282 0.16601,-0.12696 -0.10742,-0.99609 z m -3.1836,1.22266 -0.6914,1.0293 0.55664,0.48242 0.38476,-0.0156 0.34766,-0.34179 0.6836,0.32617 -0.0645,-0.58399 -0.27148,-0.49414 -0.64844,-0.11914 z m -5.38085,9.32617 -1.35743,0.97461 -0.48632,0.23242 -0.47461,0.34375 -0.24024,0.0488 -0.22461,0.24805 -0.41797,0.27734 -1.37109,1.20313 -1.42188,0.80468 -0.42773,0.28711 -0.44336,0.14649 -0.22461,0.28125 -0.64453,0.33008 -0.37891,0.0957 -0.21875,-0.0859 -0.28125,0.16602 0.0977,0.29297 0.84961,-0.19922 0.90234,-0.5957 0.5293,-0.29102 0.38477,-0.29297 1.38672,-0.74023 1.16992,-1.00977 1.13086,-0.81641 0.54101,-0.40429 1.72852,-1.1836 z m -7.64649,4.34961 -0.80273,0.49024 -1.03321,0.28906 -0.97851,0.45508 0.27539,0.79882 1.37109,-1.04492 0.27344,-0.22656 0.91797,-0.1543 0.43359,-0.27148 -0.10547,-0.21289 -0.14257,-0.0566 z"},"36119":{"name":"Westchester, NY","path":"m 898.09038,191.71814 7.07086,-2.748 0.2817,1.623 1.61143,1.48311 -2.26396,2.33389 -1.25158,1.278 1.79713,2.312 -1.55644,2.855 -2.44966,-0.291 -0.0268,-1.884 -0.60796,-3.09 -0.10519,-0.264 -0.91639,-1.036 -1.02693,-1.406 -0.55626,-1.166"},"36079":{"name":"Putnam, NY","path":"m 904.53367,185.29014 0.62757,3.68 -7.07086,2.748 0,-0.07 0.24008,-1.82788 -0.84269,-0.74512 0.5313,-1.303 5.70518,-2.266 0.80942,-0.216"},"36027":{"name":"Dutchess, NY","path":"m 902.41384,173.36514 1.57427,8.743 0.54556,3.182 -0.80942,0.216 -5.70518,2.266 -0.5313,1.303 -0.67794,-0.93672 0.3392,-2.57728 -0.36088,-3.57684 -0.36192,-0.738 -0.18755,-2.4124 -0.96702,-0.43776 -0.33161,-3.938 0.22642,-0.1 0.21573,0 2.72066,0.65 0.84686,0.234 3.19134,-0.113 0.11232,-1.736 0.16046,-0.04"},"36021":{"name":"Columbia, NY","path":"m 895.29306,165.21714 6.82839,-2.733 -0.25317,10.141 0.3851,0.779 -0.11232,1.736 -3.19134,0.113 -0.84686,-0.234 -2.72066,-0.651 -0.21573,0 -0.22642,0.1 0.0571,-1.166 0.0713,-0.337 0.50633,-1.6 0.65075,-1.631 0.041,-0.314 -0.0642,-0.577 -0.63292,-3.199 -0.13015,-0.378 -0.0571,-0.04 -0.0891,0"},"36083":{"name":"Rensselaer, NY","path":"m 895.15756,153.91014 5.88169,-1.478 0.44574,1.9647 -0.34887,1.0319 0.68757,1.53861 0.44574,-0.13121 -0.14798,5.648 -6.82839,2.733 0.041,-7.595 -0.1765,-3.712"},"36115":{"name":"Washington, NY","path":"m 894.61735,133.45214 0.59548,1.157 -0.31022,1.704 -0.0909,0.933 0.16224,1.342 0.0642,0.09 0.54556,0.226 -0.005,-1.532 1.07705,-0.15436 0.44863,0.90683 0.79749,0.26665 0.44493,1.12288 0.97345,4.525 1.71869,8.397 -5.88169,1.478 0.2086,-1.02 0.0802,-0.811 -0.0713,-1.576 -0.0731,-0.433 -1.32467,-4.308 -0.12837,-0.201 -1.6652,-4.154 -0.0481,-0.321 0.0178,-0.153 0.17473,-0.835 0.29952,-0.797 0.92352,-2.25 0.10341,-1.39 0.041,-1.871 0.92174,-0.338"},"39155":{"name":"Trumbull, OH","path":"m 787.33494,209.65314 0.0428,0.25 1.34072,8.123 -8.1798,1.312 -0.8023,-4.889 -0.59547,-3.51 8.19407,-1.286"},"39007":{"name":"Ashtabula, OH","path":"m 786.02631,201.66614 1.30863,7.987 -8.19407,1.286 -0.7809,-4.878 -0.49742,-3.197 7.68595,-4.115 0.47781,2.917"},"39087":{"name":"Lawrence, OH","path":"m 759.84843,275.96914 1.32645,-0.08 0.0856,1.52 1.62777,-0.15498 0.0509,0.64163 0.40633,0.0197 0.0732,1.37461 2.07219,-0.1802 0.30168,2.19523 1.33358,-0.135 -0.007,1.005 -0.007,0.05 -0.0802,1.648 -0.0321,0.167 -0.0321,0.153 -0.30947,0.47668 -0.82453,0.31568 -0.61454,-0.032 -1.491,0.81495 -1.03196,0.4411 -0.63191,-0.19913 -1.38298,-2.11527 -2.86685,-1.116 1.09111,-0.699 -0.42136,-1.03365 -0.13262,-0.87817 1.0668,-0.12298 -0.15483,-1.65557 0.66014,-0.1643 -0.075,-2.25533"},"39145":{"name":"Scioto, OH","path":"m 748.39706,273.64814 0.79264,0.37665 0.38762,0.74635 3.76721,-0.398 3.41598,-0.283 0.9574,-0.07 0.12462,2.11209 0.36742,-0.0461 1.63846,-0.114 0.075,2.25533 -0.66014,0.1643 0.15483,1.65557 -1.0668,0.12298 0.13261,0.87817 0.42137,1.03365 -1.09111,0.699 -0.0802,-0.04 -0.3851,-0.257 -0.0178,-0.03 -0.14442,-0.169 -0.11945,-0.255 -0.041,-0.09 -0.49921,-1.502 -0.16937,-0.724 0.0178,-0.278 -0.009,-0.01 0,-0.02 -0.0143,-0.163 -0.0339,-0.137 -0.007,-0.03 -0.009,-0.03 -0.0303,-0.06 -0.0481,-0.07 -0.0232,-0.04 -0.082,-0.09 -0.18364,-0.08 -0.0909,0 -0.0214,0 -0.48494,0.213 -1.48691,0.673 -0.31914,0.145 0,0 0,0 0,0 0,0 -1.32464,1.30901 -0.30431,1.21791 -1.70727,0.25222 -0.72337,0.63486 -1.07507,-9.513"},"39001":{"name":"Adams, OH","path":"m 748.39706,273.64814 1.07507,9.513 -1.01802,-0.763 -0.0428,-0.01 -0.60083,-0.282 -0.0481,-0.02 -1.9148,-0.46 -0.72028,-0.177 -0.025,0 -0.15154,-0.02 -0.21929,0.05 -1.39777,0.612 -0.18542,0.128 -0.13728,0.225 -0.0963,0.811 -1.02693,0.121 -0.57943,-8.887 0.96657,0.0121 3.98267,-1.4741 1.26643,-0.10226 0.87302,0.72826"},"39131":{"name":"Pike, OH","path":"m 746.38776,269.66814 10.03756,-0.697 0.33518,5.117 -3.41598,0.283 -3.76721,0.398 -0.38762,-0.74635 -0.79264,-0.37665 -0.87302,-0.72826 -1.26643,0.10226 0.13015,-3.354"},"39079":{"name":"Jackson, OH","path":"m 756.70523,268.01514 1.99325,-0.144 0.0431,0.39098 2.01435,-0.18398 0.10822,0.84332 1.99735,-0.14232 0.15154,2.387 0.1915,4.56043 -2.02964,0.16257 -1.32645,0.08 -1.63846,0.114 -0.36742,0.0461 -0.12462,-2.11209 -0.9574,0.07 -0.33518,-5.117 0.36583,-0.0263 -0.0859,-0.92975"},"39053":{"name":"Gallia, OH","path":"m 765.0134,271.05214 0.0267,0.338 4.04711,-0.353 0.0892,1.043 -0.35654,1.34384 -0.25498,0.35095 0.005,0 0.20486,0.71432 -0.0866,0.63721 -0.54204,0.58761 -0.51741,0.3752 -0.0418,0.46301 0.436,0.441 0.18931,0.57821 0.3162,0.42721 -0.1326,0.76881 0.58401,1.27002 -0.15439,0.65961 -0.48075,0.29264 -0.95936,-0.0768 -0.25965,0.24121 -1.33358,0.135 -0.30168,-2.19523 -2.07219,0.18019 -0.0732,-1.3746 -0.40633,-0.0197 -0.0509,-0.64163 -1.62777,0.15498 -0.0856,-1.52 2.02964,-0.16257 -0.1915,-4.56043 2.00038,-0.114"},"39105":{"name":"Meigs, OH","path":"m 765.37711,266.87414 9.16752,-0.795 0.25733,0.95418 0.0805,1.17027 -0.46937,0.40138 -0.63156,0.0762 0.0874,0.313 0.19255,0.252 0.61309,0.40438 0.32542,0.52738 -0.29838,1.00015 0.42065,0.30488 0.0589,0.53743 -0.58984,0.19985 -0.71903,-0.39442 -0.15641,0.35294 -0.20808,1.07641 -0.89662,0.36071 -0.59427,-0.3921 -0.0642,-0.178 0.43812,-0.81403 -0.79983,-1.16839 -0.65553,0.11682 -0.009,0 -0.53115,-0.74639 -0.34364,-0.0586 -0.31868,0.89485 -0.50144,0.49415 -0.0553,0.32 -0.0892,-1.043 -4.04711,0.353 -0.0267,-0.338 -0.23238,-4.1306 0.59609,-0.0474"},"39163":{"name":"Vinton, OH","path":"m 756.43958,264.30414 1.99503,-0.131 2.03961,-0.472 -0.0321,-0.612 3.96866,-0.296 0.13728,2.072 0.67393,-0.06 0.15511,2.066 -0.59609,0.0474 0.23238,4.1306 -2.00038,0.114 -0.15154,-2.387 -1.99735,0.14232 -0.10822,-0.84332 -2.01435,0.18398 -0.0431,-0.39098 -1.99325,0.144 -0.26565,-3.711"},"39167":{"name":"Washington, OH","path":"m 781.18047,255.07014 0.30462,-0.0481 0.0754,0.5631 4.02365,-0.419 0.0802,0.731 -1.09205,2.15619 -0.23267,0.42748 -0.70217,0.33358 -0.41144,0.61617 -0.16549,0.72393 -0.75571,-0.0273 -1.72165,1.51403 -0.51657,-0.1381 -0.50444,-0.93337 -0.31833,-0.31636 -0.20147,-0.02 -0.33743,0.0942 -0.46015,0.84476 -0.93392,0.84113 0.0478,1.72645 -1.60119,0.10916 -0.36444,0.236 -0.11075,0.64826 -0.0306,0.451 -0.39508,0.20072 -0.1355,-1.44 -1.69551,0.192 -0.15899,-0.67497 -0.25967,0.0129 -0.0415,-0.30586 -0.30999,0.0129 -0.30843,-3.045 0.38109,-0.0631 -0.12182,-0.98017 1.97859,-0.0927 -0.0922,-1.12808 -0.35849,0.0257 -0.0331,-1.24642 0.41068,-0.24058 1.83067,-0.0927 1.95162,-0.37039 -0.17181,-1.36798 0.28422,-0.0141 0.10272,0.31643 0.70734,-0.1068 0.0643,0.3507 0.29613,-0.0524 0.0543,0.29024 0.64051,-0.0854 0.0705,0.19966 1.28181,-0.15663 -0.0436,-0.25638"},"39009":{"name":"Athens, OH","path":"m 766.1063,258.50914 1.97007,-0.151 0.19749,2.1297 3.67313,-0.3467 0.30843,3.045 0.30999,-0.0129 0.0415,0.30586 0.25967,-0.0129 0.15899,0.67497 1.69551,-0.192 0.1355,1.44 -0.312,0.69 -9.16752,0.795 -0.15511,-2.066 -0.67393,0.06 -0.27277,-4.122 1.99324,-0.144 -0.16224,-2.09"},"39073":{"name":"Hocking, OH","path":"m 762.02531,256.79814 0.0832,1.38611 2.10638,-0.0834 0.12578,0.57683 1.76564,-0.16856 0.16224,2.09 -1.99324,0.144 0.13549,2.05 -3.96866,0.296 0.0321,0.612 -2.03961,0.472 -1.99503,0.131 -0.18363,-2.316 -0.12124,-2.001 0.005,-0.20643 1.98444,-0.12584 -0.0676,-1.08903 2.03623,-0.2545 -0.0996,-1.3852 2.03247,-0.128"},"39141":{"name":"Ross, OH","path":"m 746.91727,262.14814 4.53741,-0.392 0.3958,0.312 0.22464,0.242 4.18083,-0.322 0.18363,2.316 0.26565,3.711 0.0859,0.92975 -0.36583,0.0263 -10.03756,0.697 -0.07,-1.15393 -0.64501,-0.023 -0.07,-0.84723 -0.10829,-2.05486 1.42273,-3.441"},"39071":{"name":"Highland, OH","path":"m 741.67207,266.06314 3.82247,-0.474 0.10829,2.05486 0.07,0.84723 0.64501,0.023 0.07,1.15393 -0.13015,3.354 -3.98267,1.4741 -0.96657,-0.0121 -3.50334,0.433 -0.55269,-5.208 0.54904,-0.0489 0.0698,0.60282 0.49154,-0.0298 0.21701,-0.87745 3.09231,-3.29271"},"39015":{"name":"Brown, OH","path":"m 734.99344,269.83914 2.2589,-0.13 0.55269,5.208 3.50334,-0.433 0.57943,8.887 -1.39064,-0.69 -1.56714,-1.622 -0.11232,-0.09 -0.21751,-0.08 -0.60975,-0.08 -2.63686,0.281 -0.36014,-11.25"},"39025":{"name":"Clermont, OH","path":"m 734.75097,269.83914 0.24247,0 0.36014,11.25 -3.30188,-0.939 -0.16937,-1.054 -1.95224,-3.198 -0.0713,-3.552 0.4303,-0.69802 -0.71377,-0.074 0.70067,-1.526 4.475,-0.209"},"39061":{"name":"Hamilton, OH","path":"m 728.57154,269.75914 1.70443,0.289 -0.70067,1.526 0.71377,0.074 -0.4303,0.69802 0.0713,3.552 -3.48729,-1.286 -2.0093,0.733 -3.55148,-0.305 -0.52951,-4.598 2.90073,-0.337 1.29437,-0.235 3.34466,-0.152 0.67927,0.04"},"39027":{"name":"Clinton, OH","path":"m 739.7751,262.30114 1.66192,-0.0809 0.23505,3.84295 -3.09231,3.29271 -0.21701,0.87745 -0.49154,0.0298 -0.0698,-0.60282 -0.54904,0.0489 -2.2589,0.13 -0.24247,0 -0.39223,-7.277 5.41636,-0.261"},"39165":{"name":"Warren, OH","path":"m 731.93938,262.65414 2.41936,-0.09 0.39223,7.277 -4.475,0.209 -1.70443,-0.289 -0.3602,-5.73094 -0.55895,0.14163 -0.13274,-1.23169 4.41973,-0.284"},"39017":{"name":"Butler, OH","path":"m 725.53353,263.16814 1.98612,-0.23 0.13274,1.23169 0.55895,-0.14163 0.3602,5.73094 -0.67927,-0.04 -3.34466,0.152 -1.29437,0.235 -2.90073,0.337 -0.51346,-4.999 -0.12124,-1.043 5.91496,-0.71071 -0.0992,-0.52129"},"39135":{"name":"Preble, OH","path":"m 724.49055,255.63314 1.04298,7.535 0.0992,0.52129 -5.91496,0.71071 -0.41897,-3.666 -0.48851,-4.386 5.68022,-0.715"},"39113":{"name":"Montgomery, OH","path":"m 725.52818,255.47814 4.66756,-0.658 -0.14442,0.282 0.10341,0.362 0.13015,0.218 1.87023,-0.1 0.0428,0.674 -0.003,0.4517 -0.54757,-0.0189 0.29223,5.96217 -4.41973,0.284 -1.98612,0.23 -1.04298,-7.535 1.03763,-0.155"},"39057":{"name":"Greene, OH","path":"m 739.50054,257.12814 0.066,1.308 0.2086,3.865 -5.41636,0.261 -2.41936,0.09 -0.29223,-5.96217 0.54757,0.0189 0.003,-0.4517 1.24266,-0.06 0.75594,0.02 0.0551,0.39968 1.97203,-0.22768 0.0303,0.577 1.63071,-0.0138 0.10217,0.37143 1.51373,-0.20365"},"39047":{"name":"Fayette, OH","path":"m 739.5665,258.43614 7.0459,-0.433 0.30487,4.145 -1.42273,3.441 -3.82247,0.474 -0.23505,-3.84295 -1.66192,0.0809 -0.2086,-3.865"},"39129":{"name":"Pickaway, OH","path":"m 746.40381,255.27014 7.34364,-0.576 0.15333,2.296 0.26564,3.111 1.96829,-0.114 0.12124,2.001 -4.18083,0.322 -0.22464,-0.242 -0.3958,-0.312 -4.53741,0.392 -0.30487,-4.145 -0.20859,-2.733"},"39045":{"name":"Fairfield, OH","path":"m 754.0131,251.26914 5.56968,-0.571 0.14263,2.161 1.34899,-0.06 0.21836,2.02745 0.59527,-0.0665 0.13728,2.033 -2.03247,0.128 0.0996,1.3852 -2.03623,0.2545 0.0676,1.08903 -1.98444,0.12584 -0.005,0.20643 -1.96829,0.114 -0.26564,-3.111 -0.15333,-2.296 0.0664,-0.45816 0.34507,-0.0601 -0.16583,-2.12663 -0.32507,0.0363 -0.0862,-0.77313 0.43129,-0.0433"},"39127":{"name":"Perry, OH","path":"m 759.58278,250.69814 4.02572,-0.185 1.2813,-0.0561 0.18948,2.03653 1.64524,-0.16985 0.0985,1.05844 0.10724,1.0379 0.88221,-0.0147 0.2639,3.95278 -1.97007,0.151 -1.76564,0.16856 -0.12578,-0.57683 -2.10638,0.0834 -0.0832,-1.38611 -0.13728,-2.033 -0.59527,0.0665 -0.21836,-2.02745 -1.34899,0.06 -0.14263,-2.161"},"39111":{"name":"Monroe, OH","path":"m 781.03606,248.94814 1.92015,-0.234 4.08277,-0.362 1.2694,-0.144 0.23149,-0.046 -0.15898,0.3682 0.16258,0.75676 -0.62791,1.1185 0.7387,0.78355 0.0548,0.52195 -0.45062,0.20905 0.0735,1.30865 -0.35969,0.74303 -0.90124,0.14132 -1.40668,1.784 -0.0802,-0.731 -4.02365,0.419 -0.0754,-0.5631 -0.30462,0.0481 -0.32805,-2.321 -0.65788,0.09 -0.48494,-3.726 1.32646,-0.169"},"39121":{"name":"Noble, OH","path":"m 780.79715,247.02814 0.23891,1.92 -1.32646,0.169 0.48494,3.726 0.65788,-0.09 0.32805,2.321 0.0435,0.25638 -1.28181,0.15663 -0.0705,-0.19966 -0.64051,0.0854 -0.0543,-0.29024 -0.29613,0.0524 -0.0643,-0.3507 -0.70734,0.1068 -0.10272,-0.31643 -0.28422,0.0141 0.17181,1.36798 -1.95162,0.37039 -0.23855,-1.84361 -1.00768,0.0566 -0.26117,-1.9341 -0.98506,0.1471 -0.2389,-2.001 1.98433,-0.224 -0.16567,-1.35531 1.87245,-0.22256 -0.1073,-0.70082 1.56492,-0.18856 -0.19238,-0.60476 0.65075,-0.169 1.97898,-0.255"},"39115":{"name":"Morgan, OH","path":"m 766.82302,253.38214 6.62692,-0.633 0.98506,-0.1471 0.26117,1.9341 1.00768,-0.0566 0.23855,1.84361 -1.83067,0.0927 -0.41068,0.24058 0.0331,1.24642 0.35849,-0.0257 0.0922,1.12808 -1.97859,0.0927 0.12182,0.98017 -0.38109,0.0631 -3.67313,0.3467 -0.19749,-2.1297 -0.2639,-3.95278 -0.88221,0.0147 -0.10724,-1.0379"},"39119":{"name":"Muskingum, OH","path":"m 763.5675,244.58514 8.18872,-0.877 0.54734,5.085 0.64896,-0.08 0.25852,2.034 0.2389,2.001 -6.62692,0.633 -0.0985,-1.05844 -1.64524,0.16985 -0.18948,-2.03653 -1.2813,0.0561 -0.12018,-0.80672 0.63362,-0.17856 -0.55444,-4.94272"},"39013":{"name":"Belmont, OH","path":"m 786.10654,241.29714 3.10932,-0.451 0.24474,1.27116 -0.4838,0.77197 0.21775,0.31327 -0.0251,0.5696 -0.0787,0.54875 0.3009,0.95069 -0.32433,0.61574 0.32323,0.78321 -0.31317,0.25846 -0.61463,-0.0765 0.42373,0.8837 -0.34667,0.42593 -0.23149,0.046 -1.2694,0.144 -4.08277,0.362 -1.92015,0.234 -0.23891,-1.92 -0.6454,-5.032 5.95479,-0.699"},"39067":{"name":"Harrison, OH","path":"m 784.1222,235.39814 1.31754,-0.168 0.12837,0.997 -0.0553,0.144 0.5937,4.926 -5.95479,0.699 -2.00226,0.21936 -0.0944,-0.92536 -0.25674,-2.075 0.64362,-0.09 0.35301,-0.253 -0.34588,-2.79 5.67309,-0.685"},"39059":{"name":"Guernsey, OH","path":"m 773.13081,241.88414 4.92429,-0.594 0.0944,0.92536 2.00226,-0.21936 0.6454,5.032 -1.97898,0.254 -0.65075,0.17 0.19238,0.60476 -1.56492,0.18856 0.1073,0.70082 -1.87245,0.22256 0.16567,1.35531 -1.98433,0.224 -0.25852,-2.034 -0.64896,0.08 -0.54734,-5.085 0.62579,-0.08 0.14441,-0.1 -0.15155,-1.397 0.75594,-0.257"},"39031":{"name":"Coshocton, OH","path":"m 762.64575,237.94614 8.21903,-0.956 0.20147,1.704 1.66163,-0.192 0.40293,3.382 -0.75594,0.257 0.15155,1.397 -0.14441,0.1 -0.62579,0.08 -8.18872,0.877 -0.11974,-1.68193 -0.27428,0.0489 -0.52773,-5.006"},"39089":{"name":"Licking, OH","path":"m 753.44258,243.45814 4.81375,-0.394 0.0392,0.435 1.97007,-0.169 2.90786,-0.378 0.27428,-0.0489 0.11974,1.68193 0.55444,4.94272 -0.63362,0.17856 0.12018,0.80672 -4.02572,0.185 -5.56968,0.571 -0.0475,-0.66351 0.24913,-0.0565 -0.45124,-3.60302 -0.32091,-3.488"},"39041":{"name":"Delaware, OH","path":"m 744.36242,240.80714 3.95441,-0.305 0.0434,0.34092 1.51698,-0.0925 0.15171,1.20775 3.31564,-0.17918 0.0981,1.679 0.32091,3.488 -7.11186,0.579 -0.35301,-2.305 -1.3015,0.158 -0.44393,-2.988 -0.19077,-1.583"},"39049":{"name":"Franklin, OH","path":"m 753.76349,246.94614 0.45124,3.60302 -0.24913,0.0565 0.0475,0.66351 -0.43129,0.0433 0.0862,0.77313 0.32507,-0.0363 0.16583,2.12663 -0.34507,0.0601 -0.0664,0.45816 -7.34364,0.576 -0.36352,-2.64853 -0.86631,-2.76279 1.03059,-0.0889 -0.0664,-1.34583 0.5767,-0.10669 -0.0632,-0.79231 7.11186,-0.579"},"39097":{"name":"Madison, OH","path":"m 740.97319,249.03714 5.16497,-0.613 0.0664,1.34583 -1.03059,0.0889 0.86631,2.76279 0.36352,2.64853 0.20859,2.733 -7.0459,0.433 -0.066,-1.308 1.06874,-0.0914 0.51444,-5.6806 -0.11053,-2.319"},"39023":{"name":"Clark, OH","path":"m 731.94652,251.86314 9.1372,-0.507 -0.51444,5.6806 -1.06874,0.0914 -1.51373,0.20365 -0.10217,-0.37143 -1.63071,0.0138 -0.0303,-0.577 -1.97203,0.22768 -0.0551,-0.39968 -0.75594,-0.02 -1.24266,0.06 -0.0428,-0.674 -0.20859,-3.722"},"39021":{"name":"Champaign, OH","path":"m 739.79114,246.43214 0.89812,-0.0913 0.28393,2.69626 0.11053,2.319 -9.1372,0.507 -0.29774,-5.408 4.0275,-0.21 0.0446,0.40934 4.07029,-0.22234"},"39109":{"name":"Miami, OH","path":"m 724.62783,249.10814 7.13505,-0.577 0.18364,3.332 0.20859,3.722 -1.87023,0.1 -0.13015,-0.218 -0.10341,-0.362 0.14442,-0.282 -4.66756,0.658 -0.90035,-6.37"},"39149":{"name":"Shelby, OH","path":"m 724.16072,245.49114 -0.0796,-0.48789 1.63714,-0.28819 -0.30154,-2.32083 5.83088,-0.79409 0.40115,4.851 0.1141,2.076 -7.13505,0.577 -0.47602,-3.608 0.005,0 0.005,0"},"39037":{"name":"Darke, OH","path":"m 724.15181,245.50014 0.47602,3.608 0.90035,6.37 -1.03763,0.155 -5.68022,0.715 -0.2086,-2.034 -0.70958,-7.032 -0.11945,-0.977 6.37911,-0.805"},"39107":{"name":"Mercer, OH","path":"m 722.85744,237.94614 1.01209,7.57525 0.29119,-0.0302 -0.005,0 -0.005,0 -6.37911,0.805 -0.56874,-5.056 -0.42075,-3.583 5.96563,-0.69332 0.1086,0.97332"},"39011":{"name":"Auglaize, OH","path":"m 723.87368,237.81914 2.98809,-0.396 0.0856,0.669 2.00884,-0.121 0.0152,0.28642 3.90935,-0.63242 0.31022,2.437 -2.11701,0.3981 0.17368,1.1439 -5.83088,0.79409 0.30154,2.32083 -1.63714,0.28819 0.0796,0.48789 -0.29119,0.0302 -1.01209,-7.57525 1.01624,-0.127"},"39091":{"name":"Logan, OH","path":"m 733.19096,240.06214 0.72919,0.118 5.54116,-0.25 0.0392,0.121 0.2906,6.381 -4.07029,0.22234 -0.0446,-0.40934 -4.0275,0.21 -0.40115,-4.851 -0.17368,-1.1439 2.11701,-0.3981"},"39159":{"name":"Union, OH","path":"m 739.50054,240.05114 1.74364,-0.265 2.90811,-0.48962 0.21013,1.51062 0.19077,1.583 0.44393,2.988 1.3015,-0.158 0.35301,2.305 0.0632,0.79231 -0.5767,0.10669 -5.16497,0.613 -0.28393,-2.69626 -0.89812,0.0913 -0.2906,-6.381"},"39101":{"name":"Marion, OH","path":"m 750.25124,233.89714 0.16224,1.342 -1.67946,0.264 0.35361,3.51563 -0.85995,0.30837 0.0892,1.175 -3.95441,0.305 -0.21013,-1.51062 -2.90811,0.48962 -0.57586,-4.162 1.88844,-0.21125 -0.0453,-0.36667 3.40028,-0.50608 4.3395,-0.643"},"39117":{"name":"Morrow, OH","path":"m 750.25124,233.89714 2.22681,-0.458 1.61595,-0.15352 0.0692,0.8615 -0.35123,0.0643 0.1321,0.69268 0.40922,-0.0164 0.43175,1.99736 -0.45456,0.0538 0.0398,0.63064 0.30122,0.0555 0.37737,4.01601 -1.70442,0.138 -3.31564,0.17918 -0.15171,-1.20775 -1.51698,0.0925 -0.0434,-0.34092 -0.0892,-1.175 0.85995,-0.30837 -0.35361,-3.51563 1.67946,-0.264 -0.16224,-1.342"},"39083":{"name":"Knox, OH","path":"m 761.65448,235.47114 0.78375,-0.29912 0.20752,2.77412 0.52773,5.006 -2.90786,0.378 -1.97007,0.169 -0.0392,-0.435 -4.81375,0.394 -0.0981,-1.679 1.70442,-0.138 -0.37737,-4.01601 -0.30122,-0.0555 -0.0398,-0.63064 0.45456,-0.0538 4.91002,-0.819 1.95938,-0.595"},"39075":{"name":"Holmes, OH","path":"m 771.10547,231.71814 0.11232,0.765 -0.19433,0.192 0.51525,4.235 -0.67393,0.08 -8.21903,0.956 -0.20752,-2.77412 -0.78375,0.29912 -0.27321,-2.22639 1.55152,-0.30561 8.17268,-1.221"},"39157":{"name":"Tuscarawas, OH","path":"m 776.84988,231.22214 0.23355,1.949 0.98771,-0.11 0.72385,5.812 -0.35301,0.253 -0.64362,0.09 0.25674,2.075 -4.92429,0.594 -0.40293,-3.382 -1.66163,0.192 -0.20147,-1.704 0.67393,-0.08 -0.51525,-4.235 0.19433,-0.192 3.16532,-1.03799 2.46677,-0.22301"},"39019":{"name":"Carroll, OH","path":"m 780.52437,228.85814 2.74761,-0.55081 0.30095,1.8742 0.95051,-0.11777 0.236,1.00812 0.12604,0.98464 -1.12977,0.24849 0.33868,1.94763 -0.22426,0.0206 0.25207,1.12487 -5.67309,0.685 -0.37797,-3.022 -0.98771,0.11 -0.23355,-1.949 1.31754,-0.178 -0.20007,-1.6244 0.66215,-0.11182 -0.0199,-0.17678 1.9148,-0.273"},"39081":{"name":"Jefferson, OH","path":"m 784.75944,231.07188 1.80377,-0.32598 0.14407,0.39996 1.52979,-0.11968 0.0346,0.27293 0.51482,0.42386 0.3323,0.39093 0.22254,0.55556 0.44508,0.50746 0.0944,0.56215 -0.16628,0.65819 0.10813,0.50727 -0.21234,0.35525 0.57434,0.41453 -0.006,0.55114 0.39221,0.72188 -0.21112,0.81295 0.11901,0.39177 -0.64368,0.61943 -0.15419,0.6422 -0.12005,0.7105 -0.34479,0.722 -3.10932,0.451 -0.5937,-4.926 0.0553,-0.144 -0.12837,-0.997 -1.31754,0.168 -0.25207,-1.12487 0.22426,-0.0206 -0.33868,-1.94763 1.12977,-0.24849 -0.12604,-0.98464"},"39029":{"name":"Columbiana, OH","path":"m 789.57779,223.36214 0.20324,1.105 0.79516,4.857 -0.58478,0.4255 -0.31983,0.31565 -0.37471,-0.0685 -0.61222,0.38434 -0.44758,0.64502 -1.52979,0.11968 -0.14407,-0.39996 -1.80377,0.32598 -0.236,-1.00812 -0.95051,0.11777 -0.30095,-1.8742 -2.74761,0.55081 -0.62757,-4.011 3.12019,-0.52679 -0.099,-0.83372 1.19716,-0.056 0.13897,0.71754 5.32369,-0.78603"},"39151":{"name":"Stark, OH","path":"m 774.35564,223.71714 5.23629,-0.812 0.93244,5.953 -1.9148,0.273 0.0199,0.17678 -0.66215,0.11182 0.20007,1.6244 -1.31754,0.178 -2.46677,0.22301 -3.16532,1.03799 -0.93957,-6.406 3.89271,-0.52718 -0.35156,-1.72591 0.53627,-0.10691"},"39169":{"name":"Wayne, OH","path":"m 769.32795,224.48014 0.68949,-0.11251 0.26078,1.70951 0.82725,5.641 -8.17268,1.221 -1.15173,-7.416 7.54689,-1.043"},"39005":{"name":"Ashland, OH","path":"m 760.82544,223.99614 0.19854,1.60132 0.75708,-0.0743 1.15173,7.416 -1.55152,0.30561 0.27321,2.22639 -1.95938,0.595 -0.61152,-3.938 -0.79713,0.0421 -0.32073,-1.78412 -0.54795,-0.18899 -0.15094,-1.38001 -0.40827,-2.594 -0.25674,0.03 -0.298,-1.67078 1.70291,-0.23422 2.81871,-0.353"},"39139":{"name":"Richland, OH","path":"m 751.60444,226.90614 4.99738,-0.652 0.25674,-0.03 0.40827,2.594 0.15094,1.38001 0.54795,0.18899 0.32073,1.78412 0.79713,-0.0421 0.61152,3.938 -4.91002,0.819 -0.43175,-1.99736 -0.40922,0.0164 -0.1321,-0.69268 0.35123,-0.0643 -0.0692,-0.8615 -1.61595,0.15352 -0.87361,-6.533"},"39033":{"name":"Crawford, OH","path":"m 751.60444,226.90614 0.87361,6.533 -2.22681,0.458 -4.3395,0.643 -0.92888,-6.662 4.82801,-0.747 1.79357,-0.225"},"39175":{"name":"Wyandot, OH","path":"m 739.72696,228.61814 5.2559,-0.74 0.92888,6.662 -3.40028,0.50608 0.0453,0.36667 -1.88843,0.21125 -0.35658,0.03 -0.11978,-0.30748 -0.87506,0.11548 -0.36192,-2.678 -0.34053,0.04 -0.29759,-1.88232 0.66882,-0.15645 -0.2045,-0.96082 0.36889,-0.0437 -0.11374,-1.07794 0.69063,-0.0897"},"39065":{"name":"Hardin, OH","path":"m 732.36371,233.60114 6.25074,-0.772 0.34053,-0.04 0.36192,2.678 0.87506,-0.11548 0.11978,0.30748 0.35658,-0.03 0.57586,4.162 -1.74364,0.265 -0.0392,-0.121 -5.54116,0.25 -0.72919,-0.118 -0.82725,-6.461"},"39003":{"name":"Allen, OH","path":"m 732.06062,231.29414 0.30309,2.307 0.51703,4.024 -3.90935,0.63242 -0.0152,-0.28642 -2.00884,0.121 -0.0856,-0.669 -2.98809,0.396 -0.33173,-2.83037 0.99134,-0.23716 -0.18715,-1.05647 3.96078,-0.48729 -0.0279,-1.02157 1.83947,-0.26691 -0.0172,-0.36023 1.95937,-0.265"},"39063":{"name":"Hancock, OH","path":"m 731.32251,225.61214 7.85711,-0.997 0.54734,4.003 -0.69063,0.0897 0.11374,1.07794 -0.36889,0.0438 0.2045,0.96082 -0.66882,0.15645 0.29759,1.88232 -6.25074,0.772 -0.30309,-2.307 -0.73811,-5.682"},"39137":{"name":"Putnam, OH","path":"m 731.32251,225.61214 0.73811,5.682 -1.95937,0.265 0.0172,0.36023 -1.83947,0.26691 0.0279,1.02157 -3.96078,0.48729 -0.13196,-0.8291 -0.92579,0.17644 -0.31684,-2.24034 0.96136,-0.17734 -0.46038,-3.96866 1.92729,-0.251 5.92269,-0.793"},"39161":{"name":"Van Wert, OH","path":"m 716.05401,231.66314 6.91754,-0.861 0.31684,2.24034 0.92579,-0.17644 0.13196,0.8291 0.18715,1.05647 -0.99134,0.23716 0.33173,2.83037 -1.01624,0.127 -0.1086,-0.97332 -5.96563,0.69332 -0.542,-4.468 -0.1872,-1.535"},"39099":{"name":"Mahoning, OH","path":"m 788.74875,218.21114 0.82904,5.151 -5.32369,0.78603 -0.13898,-0.71754 -1.19715,0.056 0.099,0.83372 -3.12019,0.52679 -0.30487,-1.942 1.4066,-0.22808 -0.45989,-3.33892 8.1798,-1.312 0.0303,0.185"},"39133":{"name":"Portage, OH","path":"m 773.1219,215.47114 6.61444,-1.022 0.8023,4.889 0.45989,3.33892 -1.4066,0.22808 -5.23629,0.812 -1.24088,-8.246 0.007,0"},"39153":{"name":"Summit, OH","path":"m 773.11476,215.47114 1.24088,8.246 -0.53627,0.10691 0.35156,1.72591 -3.89271,0.52718 -0.26078,-1.70951 -0.68949,0.11251 -0.9467,-6.615 2.03247,-0.321 -0.52238,-0.941 -0.29061,-0.649 3.51403,-0.483"},"39103":{"name":"Medina, OH","path":"m 768.38125,217.86514 0.9467,6.615 -7.54689,1.043 -0.75708,0.0743 -0.19854,-1.60132 -0.21572,-1.686 1.42694,-0.31254 -0.24098,-1.3776 1.76857,-0.35274 -0.22088,-1.53836 1.76631,-0.31676 3.27157,-0.547"},"39077":{"name":"Huron, OH","path":"m 748.66984,220.43614 8.50785,-1.061 0.82904,4.974 -1.70291,0.23422 0.298,1.67078 -4.99738,0.652 -1.79357,0.225 -1.14103,-6.695"},"39147":{"name":"Seneca, OH","path":"m 748.80533,221.23314 1.00554,5.898 -4.82801,0.747 -5.2559,0.74 -0.54734,-4.003 -0.2496,-2.007 9.87531,-1.375"},"39143":{"name":"Sandusky, OH","path":"m 738.27214,216.94214 1.27832,-0.195 0.15154,1.006 4.59802,-0.619 0.30271,0.19642 0.31617,-0.15059 0.28516,0.004 0.28747,0.38781 0.24415,-0.10616 -0.1526,-0.32443 0.26772,-0.0627 0.34282,0.38811 0.43736,0.12945 0.36674,-0.19696 1.12302,-0.16312 0.68462,3.997 -9.87531,1.375 -0.65788,-5.666"},"39173":{"name":"Wood, OH","path":"m 737.89417,214.22314 0.37797,2.719 0.65788,5.666 0.2496,2.007 -7.85711,0.997 -0.76485,-5.657 0.49742,-0.06 1.6652,-1.422 0.46533,-0.867 2.08774,-2.991 2.62082,-0.387"},"39069":{"name":"Henry, OH","path":"m 730.34906,218.27514 0.2086,1.68 0.76485,5.657 -5.92269,0.793 -0.75772,-6.017 -1.92907,0.241 -0.16759,-1.323 7.80362,-1.031"},"39125":{"name":"Paulding, OH","path":"m 723.47253,226.65614 0.46038,3.96866 -0.96136,0.17734 -6.91754,0.861 -0.72384,-6.06 5.90486,-0.731 0.18483,1.02239 1.92253,-0.24139 0.13014,1.003"},"39039":{"name":"Defiance, OH","path":"m 722.71303,220.62914 1.92907,-0.241 0.75772,6.017 -1.92729,0.251 -0.13014,-1.003 -1.92253,0.24139 -0.18483,-1.02239 -5.90486,0.731 -0.0499,-0.425 -0.43324,-3.56 7.86602,-0.989"},"39055":{"name":"Geauga, OH","path":"m 772.341,210.40714 1.60815,-0.255 -0.24069,-1.626 3.04209,-0.5918 -0.22299,-1.71879 1.83245,-0.15441 0.7809,4.878 0.59547,3.51 -6.61444,1.022 -0.7809,-5.064"},"39085":{"name":"Lake, OH","path":"m 777.86255,202.86414 0.49742,3.197 -1.83245,0.15441 0.22299,1.71879 -3.04209,0.5918 0.24069,1.626 -1.60815,0.255 -1.67227,0.27473 -0.19796,-1.42073 0.6347,-1.086 0.78625,-0.916 0.52238,-0.564 1.00375,-0.916 3.67985,-2.434 0.76485,-0.481"},"39035":{"name":"Cuyahoga, OH","path":"m 770.47077,209.26114 0.19796,1.42073 1.67227,-0.27473 0.7809,5.064 -0.007,0 -3.51403,0.483 0.29061,0.649 0.52238,0.941 -2.03247,0.321 -3.27157,0.547 -0.24069,-1.738 -1.60636,0.227 -0.48138,-3.559 0.11767,0.105 0.082,0.05 0.36906,0.113 1.05367,0.03 1.07854,-0.47651 1.15362,0.0505 0.0981,-0.05 0.42611,-0.37 1.18026,-1.087 0.49742,-0.544 0.85188,-1.50814 0.61186,-0.19086 0.16937,-0.205"},"39093":{"name":"Lorain, OH","path":"m 762.78125,213.34214 0.48138,3.559 1.60636,-0.227 0.24069,1.738 -1.76631,0.31676 0.22088,1.53836 -1.76857,0.35274 0.24098,1.3776 -1.42694,0.31254 0.21572,1.686 -2.81871,0.353 -0.82904,-4.974 -0.57052,-3.303 1.34958,-0.36298 0.99604,-1.03353 2.6738,-1.54885 1.15466,0.21536"},"39043":{"name":"Erie, OH","path":"m 750.51689,215.41414 1.52792,1.31 1.0929,0.512 0.80407,0.251 0.25673,0.03 0.30488,-0.04 0.32983,-0.168 0.46711,-0.313 1.30684,-0.927 0.57052,3.303 -8.50785,1.061 -0.54913,-3.2 -1.03673,0.15059 0.42548,-0.35862 0.73576,-0.39099 0.0887,-0.41173 0.4801,-0.0397 0.59943,0.55397 0.53137,-0.41611 1.24495,0.0424 -0.71629,-0.63739 0.0434,-0.31436"},"39123":{"name":"Ottawa, OH","path":"m 742.03934,213.53514 1.84171,0.435 1.13056,1.08966 1.22417,0.43605 0.67003,-0.3658 0.50718,-0.57563 -0.12222,-0.65161 0.43099,-0.39379 0.74771,0.96015 1.45948,-0.0233 0.22999,0.66995 -2.52131,0.69032 -1.79359,0.51783 -0.12663,0.40182 -1.41739,0.40832 -4.59802,0.619 -0.15154,-1.006 -1.27832,0.195 -0.37797,-2.719 4.14517,-0.688"},"39095":{"name":"Lucas, OH","path":"m 731.68265,212.58614 5.21311,-0.884 -0.31781,0.53799 0.83573,0.44418 1.16214,-0.10227 0.3793,-0.45765 0.72724,0.49972 2.35698,0.91103 -4.14517,0.688 -2.62082,0.387 -2.08774,2.991 -0.46533,0.867 -1.6652,1.422 -0.49742,0.06 -0.2086,-1.68 -0.64361,-5.343 1.9772,-0.346"},"39051":{"name":"Fulton, OH","path":"m 721.60409,214.25814 8.10136,-1.326 0.64361,5.343 -7.80362,1.031 -0.0964,-0.54124 -0.60819,0.12403 -0.29523,-2.36184 -0.37199,0.0178 -0.21847,-2.18273 0.64897,-0.104"},"39171":{"name":"Williams, OH","path":"m 714.08394,215.41414 6.87118,-1.052 0.21847,2.18273 0.37199,-0.0178 0.29523,2.36184 0.60819,-0.12403 0.0964,0.54124 0.16759,1.323 -7.86602,0.989 -0.28882,-2.394 -0.47425,-3.81"},"40139":{"name":"Texas, OK","path":"m 422.03202,332.62114 8.89652,0.443 2.20898,0.112 -0.18542,3.455 -0.15155,0 -0.4261,8.062 -2.40331,-0.119 -9.86819,-0.563 -7.47914,-0.473 0.8023,-11.396 8.60591,0.474"},"40025":{"name":"Cimarron, OK","path":"m 395.71508,330.77314 2.30703,0.178 9.45099,0.779 5.69627,0.401 0.25674,0.02 -0.8023,11.396 -2.38726,-0.155 -15.3719,-1.068 0.85043,-11.547"},"40115":{"name":"Ottawa, OK","path":"m 548.45533,335.33714 0.0731,5.359 0.0392,2.291 -6.67734,0.0126 0.055,-6.23342 -0.57159,-0.002 -0.0213,-1.36493 7.10296,-0.06"},"40035":{"name":"Craig, OK","path":"m 540.15428,335.40114 1.19809,0 0.0214,1.36493 0.57159,0.002 -0.055,6.23342 0.0181,1.93477 -0.36204,0.006 -0.0407,1.80501 -5.91556,0.04 0.0486,-2.0077 -1.95982,7e-4 -0.0238,-7.76815 0.43038,0.007 -0.0287,-1.55324 6.09741,-0.06"},"40097":{"name":"Mayes, OK","path":"m 541.5057,346.74014 -0.0178,8.06 -1.97542,0.02 0.025,2.017 -1.65629,0 -4.29136,0.02 -0.016,-4.029 0.0499,-6.041 1.96651,-0.02 5.91556,-0.04"},"40041":{"name":"Delaware, OK","path":"m 548.56765,342.98714 0.0553,3.903 1.1339,7.803 -4.32168,0.07 -3.94727,0.04 0.0178,-8.06 0.0407,-1.80501 0.36204,-0.006 -0.0181,-1.93477 6.67734,-0.0126"},"40001":{"name":"Adair, OK","path":"m 545.43514,354.75914 4.32168,-0.07 0.21751,1.377 1.64024,10.709 -6.21152,0.09 -0.082,-6.078 0.15511,-2.481 -0.041,-3.552"},"40021":{"name":"Cherokee, OK","path":"m 541.48787,354.80014 3.94727,-0.04 0.041,3.552 -0.15511,2.481 0.082,6.078 -5.94765,0.06 -0.1395,-3.9651 -2.45458,-0.0449 -0.041,-0.06 -0.29774,-2.122 0.0731,-1.31 0.11233,-0.216 0.36905,-0.33 0.25673,-0.01 0.0731,-0.08 0.48138,-1.13 -0.007,-0.806 1.65629,0 -0.025,-2.017 1.97542,-0.02"},"40135":{"name":"Sequoyah, OK","path":"m 551.61457,366.77914 0.84152,5.554 -0.007,0.403 -1.20765,0.96187 -0.002,0.4939 0.39422,0.31543 -0.20069,0.37492 -0.37916,0.13696 -0.26734,-0.44368 -3.0039,-0.007 -0.01,-0.52299 -0.85222,-0.562 -0.37796,-0.105 -0.36014,0.04 -0.10341,0.05 -0.7078,0.697 -1.77574,-1.712 -0.61152,0 -0.9164,-0.24 -0.27456,-0.1 -0.28704,-0.264 -0.5723,-0.779 -1.41563,-1.35672 -0.0624,-2.79728 5.94765,-0.06 6.21152,-0.09"},"40061":{"name":"Haskell, OK","path":"m 540.9334,371.08014 0.5723,0.779 0.28704,0.264 0.27456,0.1 0.9164,0.24 0.61152,0 1.77574,1.712 0.0143,2.305 -1.39777,0.508 -0.71671,0 0.041,3.343 -7.88029,0.07 -0.0178,-2.362 -1.96829,0 -0.0178,-0.981 0.0678,-2.153 0.72167,-0.63082 0.74346,0.0188 0.51743,0.66207 0.004,0.34332 1.3329,0.0311 0.0115,0.57009 0.82867,-0.004 0.28107,-0.46603 0.27963,0.25383 0.62737,-0.7894 -0.23768,-0.27135 0.59191,-1.66284 1.43343,-1.687 0.30309,-0.2"},"40079":{"name":"Le Flore, OK","path":"m 552.44895,372.73614 -0.11232,10.341 -0.0481,4.747 -0.0392,5.121 -8.97853,0.135 -0.0952,-3.9502 -2.24213,-0.0428 -0.0392,-4.035 1.12286,-0.0417 0.0182,-1.63733 1.30863,-0.361 -0.0731,-6.027 0.71671,0 1.39777,-0.509 -0.0143,-2.305 0.7078,-0.697 0.10341,-0.05 0.36014,-0.04 0.37796,0.105 0.85222,0.562 0.01,0.52299 3.0039,0.007 0.26734,0.44368 0.37916,-0.13696 0.20069,-0.37492 -0.39422,-0.31543 0.002,-0.4939 1.20765,-0.96187"},"40077":{"name":"Latimer, OK","path":"m 543.31175,380.32714 0.0321,2.685 -1.30863,0.361 -0.0182,1.63733 -1.12286,0.0417 0.0392,4.035 -8.54886,0.06 0,-2.083 0.0874,-5.971 2.50255,-0.02 0.006,-0.66469 0.45076,-0.002 7.88029,-0.07"},"40121":{"name":"Pittsburg, OK","path":"m 533.49526,374.91114 -0.0678,2.154 0.0178,0.98 1.96829,0 0.0178,2.363 -0.45076,0.002 -0.006,0.66419 -2.50255,0.02 -0.0874,5.97 0,2.083 0.004,2.04422 -2.9525,-0.0122 -3.96154,0.02 0,-2.018 -3.94549,0 0,-2.007 0.0731,-6.535 0.5206,-0.964 0.90748,-1.237 0.16224,-0.1 0.36905,-0.06 0.67571,0.03 1.55733,-0.78293 2.14747,0.004 0.69176,-0.316 3.61387,-2.007 1.24801,-0.298"},"40029":{"name":"Coal, OK","path":"m 521.52864,387.16614 0,6.043 -1.42911,-0.007 -0.0153,0.69954 0.3917,0.20685 0.049,1.12797 -4.95103,-0.02 -2.00588,-0.0676 0.0126,-1.94844 0.0571,-4.035 1.98433,0 0.009,-2.015 5.89773,0.01"},"40005":{"name":"Atoka, OK","path":"m 521.52864,389.17414 3.94549,0 0,2.018 3.96154,-0.02 0.009,2.009 -2.01821,0.159 0.009,7.941 -4.01859,0 -7.86602,-0.02 0.0232,-6.044 4.95103,0.02 -0.049,-1.12797 -0.3917,-0.20685 0.0153,-0.69954 1.42911,0.007 0,-4.035"},"40127":{"name":"Pushmataha, OK","path":"m 532.38454,389.14414 8.54886,-0.06 2.24213,0.0428 0.0952,3.9502 -2.05387,0.01 0.0642,6.092 -1.17491,0 -0.80408,0.435 0.0239,1.58374 -0.10407,-0.003 -11.78655,0.07 -0.009,-7.941 2.01821,-0.158 -0.009,-2.01 2.95251,0.0122 -0.004,-2.04422"},"40089":{"name":"McCurtain, OK","path":"m 543.27074,393.08014 8.97853,-0.135 -0.0571,7.343 -0.0874,12.762 -4.97421,-1.431 -2.3623,-0.965 -3.26265,-2.612 -2.22681,-1.904 -0.0571,-4.926 0.10407,0.003 -0.0239,-1.58374 0.80408,-0.436 1.17491,0 -0.0642,-6.092 2.05387,-0.01"},"40023":{"name":"Choctaw, OK","path":"m 539.22184,401.21214 0.0571,4.926 -1.20522,-0.403 -0.13549,0 -0.0642,0.03 -0.016,0 -0.0107,0 -0.40828,0.619 -0.009,0.03 0,0.04 -0.007,0.02 0.007,0.02 0.0731,0.154 0,0.03 0.0321,0.2 -0.0321,0.232 -0.10341,0.233 -0.10697,0.104 -0.50634,0.33 -0.14976,0.02 -0.28169,0.03 -0.55448,0.07 -0.009,0 -1.28723,0.06 -0.71315,-0.06 -1.88093,-0.25 -0.0713,-0.06 -0.0749,-0.128 0,-0.02 -0.005,-0.118 0.0571,-0.162 0.005,-0.153 -0.20147,-0.514 -0.14441,-0.06 -0.61687,-0.03 -1.39064,0.722 -1.5921,0.829 -0.007,0 -1.58319,-0.16 -1.478,-1.165 -0.32983,-0.417 -0.041,-0.13 -0.007,-4.097 -1.01267,-0.724 4.01859,0 11.78655,-0.07"},"40013":{"name":"Bryan, OK","path":"m 523.4167,401.28514 1.01267,0.724 0.007,4.097 0.041,0.13 0.32983,0.417 1.478,1.164 1.58319,0.161 -1.63133,0.611 -0.92353,-0.169 -1.10003,-0.217 -0.25851,0.03 -0.41006,0.03 -2.13766,0.178 -0.96454,0.223 -0.16046,0.563 -0.11945,0.555 -0.009,0.06 -0.016,0.06 -0.0553,0.176 -0.0481,0.154 -0.009,0.02 -0.0232,0.03 -0.17828,0.185 -0.0232,0.03 -0.34588,0.148 -0.39401,0.105 -2.83655,0.701 -0.18363,-0.252 -0.82725,-1.125 0,0 -0.24961,-0.08 -0.22464,-0.03 -0.97344,0.186 -0.025,0 -0.17651,-0.122 -1.95224,-1.31 -0.0161,-0.06 -0.016,-0.111 -0.016,-0.283 0.0642,-0.369 0.37951,-1.78685 -0.34851,-0.99412 0.75161,-1.6736 -0.23526,-1.20443 2.15674,0.0671 0.0105,-1.01985 1.20775,-0.0173 7.86602,0.02"},"40095":{"name":"Marshall, OK","path":"m 505.59513,400.83414 4.92429,0.05 0.99662,0.246 0.72385,0.854 0,0.144 -0.0642,0.104 0.23526,1.20443 -0.75161,1.6736 0.34851,0.99412 -0.37951,1.78685 -1.9041,0.859 -0.0161,0 -0.92352,0.155 -1.79357,-0.549 -0.19255,-0.134 -0.312,-0.349 -0.96454,-1.983 0.002,-1.35353 -0.66925,-0.0119 0.033,-1.34957 0.0465,-2.33531 0.6613,-0.0127"},"40069":{"name":"Johnston, OK","path":"m 507.67574,393.14414 5.90487,0.06 -0.0126,1.94844 2.00588,0.0676 -0.0232,6.044 -1.20775,0.0173 -0.0105,1.01985 -2.15674,-0.0671 0.0642,-0.104 0,-0.144 -0.72385,-0.854 -0.99662,-0.246 -4.92429,-0.05 0.0392,-3.696 0.98771,0 0.0499,-4.001 1.00375,0"},"40123":{"name":"Pontotoc, OK","path":"m 514.06376,383.83314 1.5207,-0.009 0.0464,3.32773 -0.009,2.015 -1.98433,0 -0.0571,4.034 -5.90487,-0.06 0.0143,-2.016 -1.97542,-0.02 0.009,-1.004 0.0481,-5.038 0.0642,-2.539 2.88468,1.508 1.15082,0.68824 1.52081,-0.79174 1.32381,0.31049 0.65109,0.68048 0.69673,-1.09447"},"40049":{"name":"Garvin, OK","path":"m 505.77164,385.07014 -0.0481,5.038 -3.95441,-0.05 -0.97166,0.312 -0.0481,0.06 -0.0321,0.234 0.14263,0.321 0.29774,0.242 0.2496,0.722 0.22464,0.997 -0.7078,0.119 -3.1325,-0.05 -3.96154,-0.06 0.0772,-4.04416 -2.00628,-0.0208 0.0802,-4.019 13.7905,0.202"},"40099":{"name":"Murray, OK","path":"m 497.79151,393.01614 3.1325,0.05 0.7078,-0.119 -0.22464,-0.997 -0.2496,-0.722 -0.29774,-0.242 -0.14263,-0.321 0.0321,-0.234 0.0481,-0.06 0.97166,-0.312 3.95441,0.05 -0.009,1.004 1.97542,0.02 -0.0143,2.016 -1.00375,0 -0.0499,4.001 -0.98771,0 -1.8007,-0.02 -0.19968,-0.119 -0.0571,-0.113 0,-0.05 0.21751,-0.153 -0.041,-0.506 -0.0553,-0.06 -5.95479,-0.09 0.0481,-3.022"},"40085":{"name":"Love, OK","path":"m 493.69269,403.02914 11.19464,0.153 -0.033,1.34957 0.66925,0.0119 -0.002,1.35353 -0.18541,0.104 -2.85973,4.96 -0.0891,0.119 -0.19255,0.153 -0.27278,0.09 -0.30487,-0.04 -0.26565,-0.09 -1.13187,-1.87606 0.71938,-1.96862 -1.33812,-0.65128 -2.68027,2.38013 -1.10671,-0.30417 -0.16759,-0.112 -0.11232,-0.136 0,0 -0.0161,-0.04 -0.0499,-0.119 -0.37618,-1.719 -1.46374,0.394 0.0642,-4.002"},"40019":{"name":"Carter, OK","path":"m 493.82997,392.95214 3.96154,0.06 -0.0481,3.022 5.95479,0.09 0.0553,0.06 0.041,0.507 -0.21751,0.153 0,0.05 0.0571,0.113 0.19968,0.119 1.8007,0.02 -0.0392,3.696 -0.6613,0.0127 -0.0465,2.33531 -11.19464,-0.153 0.0499,-5.037 0.0874,-5.04"},"40067":{"name":"Jefferson, OK","path":"m 482.85284,397.75714 10.88977,0.235 -0.0499,5.037 -0.0642,4.002 -0.68284,-0.476 -1.9362,-1.292 -0.65074,0.82 -0.99663,1.036 -0.94849,0.747 -0.59369,0.176 -0.22643,-0.02 -1.67768,-0.765 -0.21037,-0.194 0.49028,-1.061 0.16938,-1.229 -0.007,0 -0.7078,-0.28 -0.65967,0.161 -0.0232,0 -0.41006,0 -0.80408,-0.241 -0.0321,0 -0.0481,-0.05 -0.32983,-0.66 0.65805,-0.70388 -0.1551,-1.06166 -1.00077,-0.63883 0.008,-3.53363"},"40137":{"name":"Stephens, OK","path":"m 491.90091,388.88714 2.00628,0.0208 -0.0772,4.04416 -0.0874,5.04 -10.88977,-0.235 0.0571,-5.023 0.0571,-3.97678 1.02686,-0.0232 7.90703,0.153"},"40033":{"name":"Cotton, OK","path":"m 473.05062,394.82414 1.94155,4.2e-4 1.17842,-0.81253 3.81362,-0.003 0.99662,-0.849 0.66679,-0.444 1.26228,0.02 -0.0571,5.023 -0.008,3.53388 1.00077,0.63908 0.1551,1.06191 -0.65805,0.70413 -1.14817,-1.889 -2.94173,-0.923 -0.72385,-0.162 -0.36905,0.208 -0.76307,0.965 -1.01267,0.909 -0.016,0.02 -0.007,0 -0.54021,-0.194 -0.89856,-1.446 -0.43324,-0.369 -0.41897,-0.277 -0.19255,-0.01 0.11945,-3.993 -0.98771,-0.02 0.041,-1.68"},"40031":{"name":"Comanche, OK","path":"m 474.13461,384.46714 9.88423,0.248 -0.025,4.019 -1.02686,0.0232 -0.0571,3.97678 -1.26228,-0.02 -0.66679,0.444 -0.99662,0.849 -3.81362,0.003 -1.17842,0.81253 -1.94155,-4.2e-4 0.0553,-1.749 -1.0929,-0.622 -1.98433,-0.06 0.0571,-2.016 0.17651,-6.035 3.87239,0.121"},"40141":{"name":"Tillman, OK","path":"m 470.08571,390.38114 -0.0571,2.016 1.98433,0.06 1.0929,0.622 -0.0553,1.749 -0.041,1.679 0.98771,0.02 -0.11945,3.994 -1.72047,0.53 -1.23731,-0.05 -1.74365,-0.426 -1.75078,-1.047 -0.26565,-0.133 -0.025,0 -1.74364,-0.138 -0.76307,0.01 -0.35301,0.02 -0.7078,-0.161 -0.3851,-0.119 -0.24069,-0.07 -0.009,-0.01 0,0 -0.32805,-1.783 0.0161,-0.499 0.0232,-0.531 0.29774,-0.09 0.0642,-0.126 0,-0.188 -0.2817,-0.795 -0.11945,-0.1 -0.25852,0.03 -0.1034,-0.348 -0.0321,-0.447 0.353,-1.553 0.75594,-1.575 0.42432,-0.595 0.41898,-0.09 0.79516,0.06 0.0891,0.1 0.1355,-0.02 0.0731,-0.05 0.0392,-0.545 -0.14263,-0.273 -0.24247,-0.298 1.2694,0.05 0.62757,0.772 -0.009,0.255 3.28761,0.1"},"40065":{"name":"Jackson, OK","path":"m 462.36232,384.85914 1.06081,-0.795 0.1765,-0.03 0.0731,0.03 0.39401,0.266 0.0874,0.146 -0.44642,3.21408 2.0617,0.0789 -0.85934,1.439 0.24247,0.298 0.14263,0.272 -0.0392,0.546 -0.0731,0.05 -0.1355,0.02 -0.0891,-0.1 -0.79516,-0.06 -0.41898,0.09 -0.42432,0.595 -0.75594,1.575 -0.353,1.552 0.0321,0.448 0.1034,0.348 0.25852,-0.03 0.11945,0.1 0.2817,0.795 0,0.187 -0.0642,0.127 -0.29774,0.09 0,-0.02 -0.89143,-1.551 -0.94136,-0.506 -0.82725,-0.45 -0.8112,1.453 -0.007,0.02 -0.025,0.04 -0.016,0 -0.14441,0.06 -0.63471,-0.06 -0.61865,-0.586 -0.46711,-0.273 -0.28883,-0.121 -0.90035,-0.105 -0.20859,-0.03 -0.10341,0.04 -0.73276,0.925 -0.73098,0 -0.16046,0 -0.57943,-0.137 -1.31754,-1.254 -0.47424,-0.561 -0.98058,-1.272 3.42311,0.138 0.18542,-5.03 2.6119,0.09 1.78466,-0.06 -0.0892,-0.208 -0.025,-0.507 0.0642,-0.176 0.62757,-0.997 2.91677,0.113 0.0802,-0.218"},"40055":{"name":"Greer, OK","path":"m 450.51871,379.59614 1.97542,0.09 0.0802,-2.01 6.18121,0.243 0.79338,0.08 0.74881,0.644 0.79516,1.173 -0.0802,0.522 -0.17651,0.626 0.24069,2.717 0.13728,0.193 1.14817,0.987 -0.0802,0.218 -2.91677,-0.112 -0.62757,0.996 -0.0642,0.177 0.025,0.506 0.0892,0.209 -1.78466,0.06 -2.6119,-0.09 0.0482,-0.57327 -1.23583,-0.0596 0.18206,-4.48509 -2.94708,-0.114 0.0802,-2.001"},"40075":{"name":"Kiowa, OK","path":"m 459.54895,377.99714 0.92531,-0.01 9.53835,0.314 3.29475,0.05 0.95562,0.507 -0.12837,5.61 -3.87239,-0.121 -0.17651,6.035 -3.28761,-0.1 0.009,-0.255 -0.62757,-0.772 -1.2694,-0.05 0.85934,-1.439 -2.0617,-0.0789 0.44642,-3.21408 -0.0874,-0.146 -0.39401,-0.266 -0.0731,-0.03 -0.1765,0.03 -1.06081,0.795 -1.14817,-0.987 -0.13728,-0.193 -0.24069,-2.717 0.17651,-0.626 0.0802,-0.522 -0.79516,-1.173 -0.74881,-0.644"},"40057":{"name":"Harmon, OK","path":"m 448.42919,379.50914 2.08952,0.09 -0.0802,2.001 2.94708,0.114 -0.18206,4.48559 1.23583,0.0599 -0.0482,0.57352 -0.18542,5.029 -3.42311,-0.137 -2.75453,-1.373 0.12836,-4.275 0.27278,-6.565"},"40101":{"name":"Muskogee, OK","path":"m 527.58683,361.95814 2.14658,-0.02 1.33811,1.31404 1.93235,-0.35523 2.79664,0.0152 1.06081,0 2.45458,0.0449 0.1395,3.9651 0.0624,2.79728 1.41563,1.35672 -0.30309,0.199 -1.43343,1.687 -0.59191,1.66384 0.23768,0.27122 -0.62737,0.78937 -0.27963,-0.25385 -0.28107,0.46596 -0.82868,0.003 -0.0115,-0.57034 -1.33291,-0.0313 -0.004,-0.34332 -0.0464,-5.994 -6.83909,0.04 -0.009,-4.026 -0.98771,0 -0.009,-3.031"},"40091":{"name":"McIntosh, OK","path":"m 528.59237,369.00614 6.83909,-0.04 0.0464,5.994 -0.51743,-0.66207 -0.74346,-0.0188 -0.72167,0.63082 -1.24801,0.298 -3.61387,2.007 -0.69176,0.316 -2.14747,-0.004 -1.55733,0.78293 -0.67571,-0.03 0.0499,-3.197 0,-2.018 1.96651,0 0,-0.644 0.27278,-1.373 0.7078,-2.041 2.03425,0"},"40063":{"name":"Hughes, OK","path":"m 515.0283,375.05514 8.58273,0.03 -0.0499,3.197 -0.36905,0.06 -0.16224,0.1 -0.90748,1.238 -0.5206,0.964 -0.0731,6.535 -5.89773,-0.01 -0.0465,-3.32773 -1.5207,0.009 0.0321,-4.752 0.91639,0.01 0.016,-4.037"},"40133":{"name":"Seminole, OK","path":"m 511.64441,372.47014 0.12124,0.12 0.11232,0.03 1.39063,0.09 0.0321,-0.03 0.025,-0.119 -0.066,-0.289 0.15333,-0.79 1.0929,-0.399 0.54555,-0.145 -0.0232,4.111 -0.016,4.037 -0.91639,-0.01 -0.0321,4.752 -0.69673,1.09422 -0.65109,-0.68061 -1.32381,-0.31061 -1.52081,0.79149 -1.15082,-0.68849 0.0784,-11.825 0.97345,-0.314 1.87201,0.57"},"40125":{"name":"Pottawatomie, OK","path":"m 502.02583,370.91614 9.61145,0.123 0.007,1.431 -1.87201,-0.57 -0.97345,0.314 -0.0784,11.825 -2.88468,-1.508 -1.53147,1.31364 -1.10216,-0.0601 -0.39383,-0.72553 -0.95191,0.176 0.13729,-10.29 0.0321,-2.029"},"40027":{"name":"Cleveland, OK","path":"m 492.13446,372.78414 9.85928,0.161 -0.13729,10.29 -1.0198,0.06 -2.3623,-0.632 -0.24069,-0.145 -0.0963,-0.09 -0.12124,-0.369 -0.15154,-1.302 -0.28348,-1.125 -0.88252,-1.488 -3.76899,-3.767 -0.81833,-0.667 0.0232,-0.931"},"40087":{"name":"McClain, OK","path":"m 492.11129,373.71514 0.81833,0.667 3.76899,3.767 0.88252,1.488 0.28348,1.125 0.15154,1.302 0.12124,0.369 0.0963,0.09 0.24069,0.144 2.3623,0.633 1.0198,-0.06 0.95191,-0.176 0.39383,0.72553 1.10216,0.0601 1.53147,-1.31364 -0.0642,2.539 -13.7905,-0.202 0.13015,-11.128 0,-0.03"},"40051":{"name":"Grady, OK","path":"m 484.21852,372.61514 1.59559,0.018 1.74596,1.02443 2.28588,0.22119 1.61281,0.11041 0.65253,-0.24 -0.13015,11.128 -0.0802,4.019 -7.90703,-0.153 0.025,-4.019 0.19968,-12.1"},"40015":{"name":"Caddo, OK","path":"m 480.27303,368.50014 0.0981,0 0.016,0.248 -0.0802,3.794 3.91161,0.07 -0.19968,12.1 -9.88423,-0.248 0.12837,-5.61 0.066,-0.09 0.0642,-2.373 -0.0321,-2.378 0.0963,-3.648 0.0624,-2.015 5.75332,0.152"},"40017":{"name":"Canadian, OK","path":"m 482.33938,364.52914 9.88423,0.188 -0.0892,8.067 -0.0232,0.931 0,0.03 -0.65253,0.24 -1.61281,-0.11041 -2.28588,-0.22119 -1.74596,-1.02443 -1.59559,-0.018 -3.91161,-0.07 0.0802,-3.794 -0.016,-0.248 -0.0981,0 0.0766,-4.00505 1.9898,0.034"},"40109":{"name":"Oklahoma, OK","path":"m 492.22361,364.71714 9.88423,0.173 -0.082,6.026 -0.0321,2.029 -9.85928,-0.161 0.0892,-8.067"},"40081":{"name":"Lincoln, OK","path":"m 511.77278,359.96014 -0.0321,6.998 -0.10341,4.081 -9.61145,-0.123 0.082,-6.026 0.0624,-5.028 9.60254,0.1"},"40107":{"name":"Okfuskee, OK","path":"m 519.68872,366.99014 -0.009,2.025 1.94512,0 0.007,4.058 1.97898,0 0,2.018 -8.58273,-0.03 0.0232,-4.111 -0.54555,0.145 -1.0929,0.399 -0.15333,0.79 0.066,0.289 -0.025,0.119 -0.0321,0.03 -1.39063,-0.09 -0.11232,-0.03 -0.12124,-0.12 -0.007,-1.431 0.10341,-4.081 7.94803,0.03"},"40111":{"name":"Okmulgee, OK","path":"m 527.58683,361.95814 0.009,3.031 0.98771,0 0.009,4.026 -2.03425,0 -0.7078,2.041 -0.27278,1.373 0,0.644 -1.96651,0 -1.97898,0 -0.007,-4.058 -1.94512,0 0.009,-2.025 0.007,-5.039 2.95065,0 3.94549,0.02 0.99484,-0.02"},"40145":{"name":"Wagoner, OK","path":"m 533.58976,356.86514 4.29136,-0.02 0.007,0.806 -0.48138,1.13 -0.0731,0.08 -0.25673,0.01 -0.36905,0.33 -0.11233,0.216 -0.0731,1.31 0.29774,2.122 0.041,0.06 -1.06081,0 -2.79664,-0.0152 -1.93235,0.35523 -1.33811,-1.31404 -2.14658,0.02 -0.99484,0.02 0.0133,-1.14346 0.9395,-0.0294 0.11513,-5.93016 2.63687,-0.02 0.88252,1.133 0.20146,0.361 -0.0802,0.315 -0.28882,0.04 0.0464,0.105 0.1141,0.07 2.41758,-0.02"},"40131":{"name":"Rogers, OK","path":"m 526.75245,344.79514 6.92645,-0.02 1.95982,-7e-4 -0.0486,2.0077 -1.96651,0.02 -0.0499,6.041 0.016,4.029 -2.41758,0.02 -0.1141,-0.07 -0.0464,-0.105 0.28882,-0.04 0.0802,-0.315 -0.20146,-0.361 -0.88252,-1.133 -2.63687,0.02 -1.06818,-0.0139 0.0766,-5.52951 0.46534,-0.002 0.0231,-0.47006 -0.44526,-0.0278 0.041,-4.034"},"40105":{"name":"Nowata, OK","path":"m 531.96556,335.46514 2.09131,0 0.0287,1.55324 -0.43039,-0.007 0.0238,7.76815 -6.92645,0.02 0.0373,-7.90566 0.38354,0.0121 -0.0286,-1.41144 4.82088,-0.03"},"40147":{"name":"Washington, OK","path":"m 523.91412,335.49914 3.23056,0 0.0286,1.41144 -0.38354,-0.0121 -0.0373,7.90566 -0.041,4.034 -3.47124,0 0.009,-13.33 0.66501,0"},"40143":{"name":"Tulsa, OK","path":"m 523.2402,348.82914 3.47124,0 0.44526,0.0278 -0.0231,0.47006 -0.46534,0.002 -0.0766,5.52951 1.06818,0.0139 -0.11513,5.93016 -0.9395,0.0294 -0.0133,1.14346 -3.94549,-0.02 0.0624,-5.061 -4.94033,-0.02 0,-2 0.54556,0 4.92607,0.04 0,-6.089"},"40037":{"name":"Creek, OK","path":"m 511.80665,354.89714 5.96192,-0.02 0,2 4.94033,0.02 -0.0624,5.061 -2.95065,0 -0.007,5.039 -7.94803,-0.03 0.0321,-6.998 0.0339,-5.063"},"40119":{"name":"Payne, OK","path":"m 506.22092,352.84614 1.96116,0.02 -0.025,2.035 3.64953,0 -0.0339,5.063 -9.60254,-0.1 -3.92945,-1.052 0.0571,-4.036 3.92944,0.05 0.025,-2.016 3.96867,0.04"},"40083":{"name":"Logan, OK","path":"m 492.36802,354.54914 3.96154,0.07 1.96829,0.152 -0.0571,4.036 3.92945,1.052 -0.0624,5.028 -9.88423,-0.173 0.14441,-10.168"},"40073":{"name":"Kingfisher, OK","path":"m 482.51588,354.34914 1.96116,0.04 7.89098,0.159 -0.14441,10.168 -9.88423,-0.188 0.0963,-4.016 0.025,-3.352 0.0553,-2.812"},"40011":{"name":"Blaine, OK","path":"m 474.65699,354.15014 7.85889,0.199 -0.0553,2.812 -0.025,3.352 -0.0963,4.016 -1.9898,-0.034 -0.0766,4.00505 -5.75332,-0.152 0,-6.035 0.13728,-8.163"},"40149":{"name":"Washita, OK","path":"m 474.45731,370.36314 -0.0963,3.648 0.0321,2.378 -0.0642,2.373 -0.066,0.09 -0.95562,-0.507 -3.29475,-0.05 -9.53835,-0.314 0.2086,-8.076 13.77445,0.456"},"40009":{"name":"Beckham, OK","path":"m 460.71495,368.90114 -0.0321,1.006 -0.2086,8.076 -0.92531,0.01 -0.79338,-0.08 -6.18121,-0.243 -0.0802,2.01 -1.97542,-0.09 -2.08952,-0.09 0.15333,-3.519 0.23177,-5.547 7.8999,0.332 0.0713,-2.018 3.92945,0.144"},"40039":{"name":"Custer, OK","path":"m 460.74704,361.87614 13.77267,0.437 0,6.035 -0.0624,2.015 -13.77445,-0.456 0.0321,-1.006 0.0321,-7.025"},"40043":{"name":"Dewey, OK","path":"m 468.7753,354.05314 5.88169,0.1 -0.13728,8.163 -13.77267,-0.437 0.0731,-4.651 0.1034,-3.503 7.85176,0.331"},"40129":{"name":"Roger Mills, OK","path":"m 460.82014,357.22514 -0.0731,4.651 -0.0321,7.025 -3.92945,-0.144 -0.0713,2.018 -7.8999,-0.332 0.19433,-4.546 0.24782,-6.06 1.2251,-0.027 0.51993,-2.01169 1.4837,-0.43465 -0.006,1.81413 0.49074,0.12025 0.44037,0.548 0.16046,0.128 0.90926,0.571 0.57765,0.208 0.92353,0.234 0.28169,0.03 1.08577,-0.451 0.0642,-0.06 0.88431,-1.398 0.312,-1.054 0.0481,-0.1 0.17828,-0.159 0.45642,-0.33 0.31378,-0.155 0.45107,-0.1 0.76307,0"},"40045":{"name":"Ellis, OK","path":"m 457.18843,343.65614 -0.29239,9.91164 4.02752,0.15436 -0.1034,3.503 -0.76307,0 -0.45107,0.1 -0.31378,0.155 -0.45642,0.33 -0.17828,0.159 -0.0481,0.1 -0.312,1.054 -0.88431,1.398 -0.0642,0.06 -1.08577,0.451 -0.28169,-0.03 -0.92353,-0.234 -0.57765,-0.208 -0.90926,-0.571 -0.16046,-0.128 -0.44037,-0.548 -0.49074,-0.12025 0.006,-1.81413 -1.4837,0.43465 -0.51993,2.01169 -1.2251,0.027 0.16938,-4.04 0.37796,-10.278 0.10341,-2.163 7.28124,0.3"},"40153":{"name":"Woodward, OK","path":"m 457.18843,343.65614 5.68022,0.151 0.18542,-5.192 0.016,0.33 0.41719,0.369 0.30487,0.113 1.60815,-0.07 0.24069,0.08 0.26564,0.155 3.07724,4.32 -0.0392,2.139 -0.16938,7.996 -7.85176,-0.331 -4.02752,-0.15436 0.29239,-9.91164"},"40093":{"name":"Major, OK","path":"m 484.62145,347.48514 -0.14441,6.905 -1.96116,-0.04 -7.85889,-0.199 -5.88169,-0.1 0.16938,-7.996 2.13766,0.08 0.41719,0.828 0.20859,0.24 0.27278,0.186 1.68838,0.907 1.00376,0.467 0.33696,0.114 0.41897,0.05 1.27832,-0.12 0.0392,-1.528 7.87494,0.2"},"40047":{"name":"Garfield, OK","path":"m 496.45792,344.69114 0.009,0 -0.13728,9.931 -3.96154,-0.07 -7.89098,-0.159 0.14441,-6.905 0.0713,-3.02 11.76515,0.226"},"40103":{"name":"Noble, OK","path":"m 503.87466,344.77914 0.10653,0.40063 0.23237,0.27407 1.78481,-0.42232 0.36378,0.72329 -0.67584,0.50687 -0.9641,-0.0697 0.005,0.61212 -0.41006,0 -0.041,4.019 1.96829,0.02 -0.0232,2.009 -3.96867,-0.04 -0.025,2.016 -3.92944,-0.05 -1.96829,-0.152 0.13728,-9.931 7.40782,0.09"},"40117":{"name":"Pawnee, OK","path":"m 506.22092,352.84614 0.0232,-2.009 -1.96829,-0.02 0.041,-4.019 0.41006,0 0.0802,0.481 0.42611,0.468 0.24782,0.135 0.53129,0.12 1.18655,-0.27819 0.67232,-1.1447 1.29541,-1.03794 0.81053,0.40388 0.28091,2.45597 0.86472,0.68278 1.12417,0.2792 0.92237,0.97105 -0.43962,1.12197 1.0017,0.48779 0.85757,-1.0112 0.64679,-0.0366 -0.0162,0.42463 2.00164,2.15422 2.00164,0.0787 -0.90863,1.32039 -0.54556,0 -5.96192,0.02 -3.64953,0 0.025,-2.035 -1.96116,-0.02"},"40113":{"name":"Osage, OK","path":"m 509.58698,335.44214 4.0899,0.02 9.57223,0.03 -0.009,13.33 0,6.089 -4.92607,-0.04 0.90863,-1.32039 -2.00164,-0.0787 -2.00164,-2.15422 0.0162,-0.42463 -0.64679,0.0366 -0.85757,1.0112 -1.0017,-0.48779 0.43962,-1.12197 -0.92237,-0.97105 -1.12417,-0.2792 -0.86472,-0.68278 -0.28091,-2.45597 -0.81053,-0.40388 -1.29541,1.03794 -0.67232,1.1447 -1.18655,0.27819 -0.53129,-0.12 -0.24782,-0.135 -0.42611,-0.468 -0.0802,-0.481 -0.005,-0.61212 0.9641,0.0697 0.67584,-0.50687 -0.36378,-0.72329 -1.78481,0.42232 -0.23237,-0.27407 -0.10653,-0.40063 0.0963,-1.157 0.98058,-1.061 2.69213,-1.277 0.36192,0.07 0.1355,-0.05 1.35855,-0.834 0.0874,-5.031"},"40071":{"name":"Kay, OK","path":"m 496.60234,335.29914 5.73727,0.07 7.24737,0.07 -0.0874,5.031 -1.35855,0.834 -0.1355,0.05 -0.36192,-0.07 -2.69213,1.277 -0.98058,1.061 -0.0963,1.157 -7.40782,-0.09 -0.009,0 0.14442,-9.392"},"40053":{"name":"Grant, OK","path":"m 490.40686,335.19214 6.19548,0.107 -0.14442,9.392 -11.76515,-0.226 -0.0945,0 0.17472,-8.068 -0.016,-1.303 5.64991,0.105"},"40003":{"name":"Alfalfa, OK","path":"m 480.4745,334.99314 4.28245,0.09 0.016,1.303 -0.17472,8.068 0.0945,0 -0.0713,3.02 -7.87494,-0.2 0.12124,-12.407 3.60675,0.115"},"40151":{"name":"Woods, OK","path":"m 460.26566,334.34014 8.29392,0.282 8.30817,0.256 -0.12124,12.407 -0.0392,1.528 -1.27832,0.12 -0.41897,-0.05 -0.33696,-0.114 -1.00376,-0.467 -1.68838,-0.907 -0.27278,-0.186 -0.20859,-0.24 -0.41719,-0.828 -2.13766,-0.08 0.0392,-2.139 -3.07724,-4.32 -0.26564,-0.155 -0.24069,-0.08 -1.60815,0.07 -0.30487,-0.113 -0.41719,-0.369 -0.016,-0.33 -2.78841,-4.275"},"40059":{"name":"Harper, OK","path":"m 450.30834,333.89814 8.40623,0.385 1.55109,0.06 2.78841,4.275 -0.18542,5.192 -5.68022,-0.151 -7.28124,-0.3 0.40115,-9.458"},"40007":{"name":"Beaver, OK","path":"m 433.13752,333.17614 5.682,0.241 9.90741,0.408 1.58141,0.07 -0.40115,9.458 -0.10341,2.163 -9.94841,-0.444 -7.48092,-0.376 0.4261,-8.063 0.15155,0 0.18542,-3.455"},"41007":{"name":"Clatsop, OR","path":"m 91.290036,61.438143 -2.34804,8.083 -1.943328,-0.474 -3.576437,-1.012 -0.04814,-0.02 0.01605,-0.233 -3.80821,-1.15 1.286782,-2.867791 -0.447508,-0.984692 1.305519,-0.510073 0.315328,-1.109888 0.0145,-0.698556 0.06418,-0.836 0.131678,-0.445666 -0.21482,-2.028013 0.271142,-0.228963 0.404106,0.111865 0.525212,1.055473 0.561363,0.550253 0.744433,-0.443385 1.075648,-0.01229 0.533929,0.801399 1.929793,0.219716 0.32925,-0.593389 0.714931,-0.256 0.08023,-0.234 1.035847,0.06 0.08914,0.06 0.04814,0.03 0.06418,0.105 0.233556,0.417 0.167589,0.538 -0.351225,1.029 0.673925,1.052 0.121235,0.04"},"41009":{"name":"Columbia, OR","path":"m 93.771791,61.541143 0.82012,-0.151 0.755937,0.314 2.594076,3.18 0.153327,0.605 0.449283,2.505 -0.144413,2.185 -0.119452,0.378 -0.418974,2.805 -2.619036,-0.619 -1.214135,-1.719 -5.086528,-1.503 2.34804,-8.083 2.481755,0.103"},"41015":{"name":"Curry, OR","path":"m 62.104455,133.42114 1.501177,0.585 -0.07131,0.03 -0.297739,0.225 -2.497801,2.539 -0.0089,0.112 0.09627,0.249 0,0.09 -0.07131,0.119 -1.519005,1.865 -0.329831,0.2 -0.625788,-0.04 -0.877172,-0.329 -0.0731,-0.06 -0.355557,-0.10626 -0.457962,1.81894 -0.949503,0.59009 0.09502,0.79489 1.404134,0.23034 0.682839,0.41 0.625787,0.915 0.160459,1.92 -0.08736,0.588 -0.41006,0.642 -0.3851,0.547 -1.116076,2.354 0.02318,0.627 0.09627,0.61 -6.332754,-1.993 -0.634702,-1.334 -0.747022,-2.266 0.169372,-4.91 0.570519,-1.895 0.474243,-1.269 0.119452,-0.275 0.934377,-0.87728 0.476269,-2.32247 -1.17813,-2.46159 0.02422,-0.58966 0.0089,-2.105 1.961157,-2.163 3.558608,1.102 0.04814,0.103 0.723845,1.89 -0.08023,1.286 -0.144413,0.217 -0.176504,0.619 -0.265647,1.116 -0.121236,1.631 0.06418,0.122 2.323079,0.24 1.244444,-0.659 0.251384,-0.184 0.256733,-0.779 1.317541,0.06 0.60261,0.178"},"41011":{"name":"Coos, OR","path":"m 62.104455,133.42114 -0.60261,-0.178 -1.317541,-0.06 -0.256733,0.779 -0.251384,0.183 -1.244444,0.66 -2.323079,-0.241 -0.06418,-0.121 0.121236,-1.631 0.265647,-1.116 0.176504,-0.619 0.144413,-0.217 0.08023,-1.286 -0.723845,-1.89 -0.04814,-0.103 -3.558608,-1.102 3.856197,-5.9146 -0.318369,-1.45974 1.576639,-0.45304 3.280492,-4.32214 0.20204,-1.03648 3.054056,0.941 2.394394,0.771 -0.601141,1.98729 0.902446,0.22221 -0.568454,1.92192 0.869759,0.28758 -1.142249,3.77321 0.949699,0.37379 -1.10003,3.785 -1.057831,-0.30209 -0.687588,1.99952 -0.770211,-0.25343 -1.133905,3.801 -0.103407,0.813"},"41033":{"name":"Josephine, OR","path":"m 70.918964,138.14414 -4.580193,15.493 -4.708559,-1.317 -4.974207,-1.375 -0.09627,-0.61 -0.02318,-0.627 1.116076,-2.354 0.3851,-0.547 0.41006,-0.642 0.08736,-0.588 -0.160459,-1.92 -0.625787,-0.915 -0.682839,-0.41 -1.404134,-0.23084 -0.09502,-0.79502 0.949503,-0.59021 0.457962,-1.81907 0.355557,0.10614 0.0731,0.06 0.877172,0.33 0.625788,0.04 0.329831,-0.199 1.519005,-1.865 0.07131,-0.12 0,-0.09 -0.09627,-0.249 0.0089,-0.113 2.497801,-2.538 0.297739,-0.225 0.07131,-0.03 -0.270996,0.981 2.594075,1.486 0.730977,0.403 0.595479,0.264 0.900349,-0.09 0.135498,-0.216 0.625787,0 1.486914,0.45 0.345877,0.273 0.169372,0.586"},"41029":{"name":"Jackson, OR","path":"m 88.114745,136.04014 -3.182423,11.031 -0.442152,1.351 -2.747402,9.571 -0.916396,-0.282 -0.52238,-0.169 -2.016426,-0.546 -2.208976,-0.547 -5.569686,-1.574 -0.426106,-0.122 -0.722062,-0.215 -1.752561,-0.637 -1.228398,-0.255 -0.04101,0 4.580193,-15.493 0.04814,-0.168 1.567142,-0.65 0.634702,0.199 1.688378,0.402 3.5907,0.563 2.458578,-1.391 2.355171,-1.068 1.508593,0.60318 1.433142,-1.13218 1.911237,0.538"},"41019":{"name":"Douglas, OR","path":"m 93.313593,126.86214 0.29774,0.137 0.281693,0.378 0.682839,1.769 0.08736,0.424 -0.0071,1.865 -2.868637,3.423 0.307737,0.82861 -3.538298,-1.22261 -0.442151,1.576 -1.911237,-0.538 -1.433142,1.13218 -1.508593,-0.60318 -2.355171,1.068 -2.458578,1.391 -3.5907,-0.563 -1.688378,-0.402 -0.634702,-0.199 -1.567142,0.651 -0.04814,0.167 -0.169372,-0.586 -0.345877,-0.273 -1.486914,-0.45 -0.625787,0 -0.135498,0.216 -0.900349,0.09 -0.595479,-0.264 -0.730977,-0.402 -2.594075,-1.487 0.270996,-0.981 -1.501177,-0.585 0.103407,-0.813 1.133905,-3.801 0.770211,0.25343 0.687588,-1.99952 1.057831,0.30209 1.10003,-3.785 -0.949699,-0.37379 1.142249,-3.77321 -0.86976,-0.28758 0.568455,-1.92192 -0.902446,-0.22221 0.601141,-1.98729 -2.394394,-0.771 -3.054056,-0.941 2.668956,-5.286 1.477999,0.481 1.727601,0.514 0.497421,0.07 2.080609,-1.279 1.96294,0.603 0.648964,0.403 0.418975,0.891 -0.08023,0.273 1.028716,1.785 0.79516,0.715 1.752561,1.246 3.342881,0.997 -1.126774,3.849 0.04992,1.599 1.686594,0.514 0.217511,0.05 0.03209,-0.04 1.78287,0.45 2.146576,0.626 -0.666794,2.387 3.879525,1.02 5.890602,1.695"},"41035":{"name":"Klamath, OR","path":"m 96.47997,123.56014 10.73466,2.942 -1.57427,5.793 -0.3851,0.916 -0.65075,1.865 -1.92194,6.846 -1.03584,3.88 5.40031,1.479 2.16262,0.635 -4.42865,16.77 -9.304795,-2.603 -13.733447,-4.09 2.747402,-9.571 0.442152,-1.351 3.182423,-11.031 0.442151,-1.576 3.538298,1.22261 -0.307737,-0.82861 2.868637,-3.423 0.0071,-1.865 -0.08736,-0.424 -0.682839,-1.769 -0.281693,-0.378 -0.29774,-0.137 0.292243,-1.80489 2.874134,-1.49711"},"41037":{"name":"Lake, OR","path":"m 107.21463,126.50214 5.51263,1.469 0.24069,0.07 10.32638,2.885 6.95855,1.831 -2.42072,9.95158 -0.48417,-0.27456 -1.60128,6.02802 -0.28801,-0.0769 -0.94132,3.49689 2.58695,0.65 1.30149,0.289 5.5679,1.4 -2.72422,10.959 -0.62757,2.788 -0.81121,3.199 -10.53319,-2.683 -4.74244,-1.198 -0.65074,-0.168 -6.0261,-1.599 -0.0232,0 -3.05406,-0.82 4.42865,-16.77 -2.16262,-0.635 -5.40031,-1.48 1.03584,-3.879 1.92194,-6.846 0.65075,-1.865 0.3851,-0.917 1.57427,-5.792"},"41025":{"name":"Harney, OR","path":"m 136.08821,125.93914 13.49098,3.342 0.49028,-1.961 2.44254,0.66 1.19809,0.41 5.76758,1.391 -1.39777,5.849 -0.24782,0.754 -0.65075,2.693 -1.47086,6.188 -2.27495,9.779 -0.99484,4.821 -2.19471,9.593 0.12123,0.443 -0.0891,0.82 -1.23731,5.079 -9.61858,-2.211 -9.02311,-2.275 -0.58835,-0.151 0.81121,-3.199 0.62757,-2.788 2.72422,-10.959 -5.5679,-1.4 -1.30149,-0.289 -2.58695,-0.65 0.94132,-3.49689 0.28801,0.0769 1.60128,-6.02802 0.48417,0.27456 2.42072,-9.95158 0.48315,-1.976 1.9362,0.505 1.51901,-5.825 1.89697,0.482"},"41045":{"name":"Malheur, OR","path":"m 160.55453,124.91014 0.62757,0.153 0.73098,-0.176 1.2694,-1.07 1.29437,-1.141 0.13728,-0.571 0.40114,-0.249 0.7078,-0.152 6.09029,1.391 0.83616,0.875 0.52951,0.779 -0.42432,1.946 4.63546,1.059 -0.041,0.121 -0.0232,0.194 0.0321,0.33 0.24069,0.408 2.00038,0.811 0.15333,-0.07 0.0874,0 0.63648,0.225 0.16759,0.105 0.85221,1.687 0.0161,0.03 0.0553,0.176 -0.0232,0.234 0,0.02 -0.009,0 -0.0321,0.06 -0.0232,0.05 -0.0232,0.04 -0.81299,0.997 -0.62579,2.555 -0.78089,1.478 -0.48138,0.804 -1.77574,4.307 -8.50963,37.886 -19.42972,-4.418 1.23731,-5.079 0.0891,-0.82 -0.12123,-0.442 2.19471,-9.594 0.99484,-4.821 2.27495,-9.779 1.47086,-6.188 0.65075,-2.692 0.24782,-0.755 1.39777,-5.849 1.07685,-4.871"},"41001":{"name":"Baker, OR","path":"m 164.10779,109.13514 0.65075,-0.617 1.478,-0.811 0.3227,-0.04 0.72206,0.9 0.82725,0.642 0.84915,0.24806 2.12529,-1.47341 0.94051,2.19377 3.06855,0.72358 0.4582,-1.946 4.70856,1.052 7.6503,1.762 -0.77912,0.706 -0.50812,0.467 -0.40114,0.836 0.016,0.465 0.0571,0.225 0.0963,0.225 0.0232,0.185 -0.016,0.02 -0.53842,0.931 -0.37619,0.403 -0.48316,0.513 -0.87539,0.942 -1.53505,0.522 -0.39401,0.09 -0.11232,0.05 -0.37797,0.338 -3.55861,4.892 -0.20146,0.403 -0.55448,3.784 -4.63546,-1.059 0.42432,-1.945 -0.52951,-0.78 -0.83616,-0.875 -6.09029,-1.391 -0.7078,0.152 -0.40114,0.25 -0.13728,0.57 -1.29437,1.141 -1.2694,1.07 -0.73098,0.176 -0.62757,-0.153 -4.24144,-0.988 0.10518,-0.524 2.15795,-1.72719 -0.031,-1.67781 1.46553,-0.45543 -0.33163,-0.61257 1.23018,-1.375 0.24782,-0.378 -0.39521,-1.39693 -2.18103,-1.1665 0.2465,-0.97923 1.83304,0.0864 0.54207,-0.30242 1.34857,0.27364 0.076,-2.21785 0.53688,-0.60485 0.82257,0.20171 0.15332,-0.925 0.041,-0.555 -0.0731,-0.451"},"41063":{"name":"Wallowa, OR","path":"m 173.82978,86.814143 5.84247,1.406 1.92015,0.466 8.81629,2.057 1.13212,3.528 0.0713,0.136 0.0481,0.09 0.73098,0.674 1.39955,1.287 0.58657,0.257 0.007,0 0.27456,0.353 0.312,0.396 0,0 0.10519,0.442 0.55448,2.907997 -0.0642,0.29 -0.38688,0.441 -1.54218,1.576 -2.78128,3.567 -0.54556,1.15 -2.40152,3.913 -7.6503,-1.761 0.42611,-1.911 -3.15759,-0.78461 0.27335,-1.0854 -0.53531,-0.10749 0.23574,-1.14182 -0.32845,-0.0887 -0.16759,-0.706 -0.43502,-1.101 -0.61865,-0.145 -0.2086,-0.627 0.27043,-1.36772 -0.56104,-0.23928 0.53385,-1.849782 -0.77275,-0.246215 0.59181,-2.303065 -0.59601,-2.243675 0.42611,-1.501956 0.60912,0.137001 0.46299,-1.906305 -3.53543,-0.82 0.65788,-3.151"},"41061":{"name":"Union, OR","path":"m 173.1719,89.964143 3.53543,0.82 -0.46299,1.906305 -0.60912,-0.137001 -0.42611,1.501956 0.59601,2.243675 -0.59181,2.303065 0.77275,0.246215 -0.53385,1.849782 0.56104,0.23928 -0.27043,1.36772 0.2086,0.627 0.61865,0.145 0.43502,1.102 0.16759,0.706 0.32845,0.0884 -0.23574,1.14157 0.53531,0.10724 -0.27335,1.08515 3.15759,0.78461 -0.42611,1.911 -4.70856,-1.052 -0.4582,1.946 -3.06855,-0.72358 -0.94051,-2.19377 -2.12529,1.47341 -0.84915,-0.24806 -0.82725,-0.642 -0.72206,-0.9 -0.3227,0.04 -1.478,0.811 -0.65075,0.617 -4.13804,-1.888 0.46533,-1.895 0.1765,-2.708 -1.71868,-0.411 0.37674,-1.32372 -0.69231,-0.19528 0.45998,-1.958997 1.44111,0.400957 0.21117,-0.571566 2.67592,0.824131 0.56497,-1.778349 3.54488,1.093588 0.30805,-0.955413 1.13228,0.315218 1.41649,-4.897653 0.63666,0.153588 0.57653,-1.99883 0.39836,0.07987 0.16659,-0.689147 0.82775,0.180523 0.23383,-0.947914"},"41023":{"name":"Grant, OR","path":"m 141.73634,102.76514 8.02826,1.984 10.20515,2.498 4.13804,1.888 0.0731,0.451 -0.041,0.555 -0.15332,0.925 -0.82257,-0.20171 -0.53688,0.60485 -0.076,2.21785 -1.34857,-0.27364 -0.54207,0.30242 -1.83304,-0.0864 -0.2465,0.97923 2.18103,1.1665 0.39521,1.39693 -0.24782,0.378 -1.23018,1.375 0.33163,0.61257 -1.46553,0.45543 0.0309,1.67781 -2.15795,1.72719 -0.10518,0.524 4.24144,0.988 -1.07685,4.871 -5.76758,-1.391 -1.19809,-0.41 -2.44254,-0.66 -0.49028,1.961 -13.49098,-3.342 2.00038,-7.763 2.98987,-11.516 -0.39016,-0.16219 1.04808,-3.73281"},"41069":{"name":"Wheeler, OR","path":"m 129.19385,97.750143 11.08767,2.899997 -0.37921,1.63716 1.83403,0.47784 -1.04808,3.73281 0.39016,0.16219 -2.98987,11.516 -3.50334,-0.9 0.38011,-1.76278 -2.25728,-0.64783 0.30111,-1.12539 -5.78541,-1.478 0.20146,-0.866 0.54556,-1.954 1.71869,-5.681 -0.94169,-2.80142 0.44605,-3.209577"},"41013":{"name":"Crook, OR","path":"m 127.9708,109.44214 -0.54556,1.954 -0.20146,0.866 5.78541,1.478 -0.30111,1.12539 2.25728,0.64783 -0.38011,1.76278 3.50334,0.9 -2.00038,7.763 -1.89697,-0.482 -1.51901,5.825 -1.9362,-0.505 -5.43953,-1.383 -0.34588,-0.121 0.50455,-1.928 -2.03488,-0.56102 0.60502,-1.88098 -5.91378,-1.551 0.4582,-1.929 -1.56714,-0.427 -2.16976,-0.657 1.02872,-3.857 -1.81675,-0.588 0.39402,-1.817 1.05368,-3.824 1.88092,0.522 0.51347,-1.927 2.55485,0.683 0.52238,-1.913 7.00668,1.824"},"41017":{"name":"Deschutes, OR","path":"m 103.85749,107.01514 11.63501,3.238 -1.05368,3.824 -0.39402,1.817 1.81675,0.588 -1.02872,3.857 2.16976,0.657 1.56714,0.427 -0.4582,1.929 5.91378,1.551 -0.60502,1.88098 2.03488,0.56102 -0.50455,1.928 0.34588,0.121 5.43953,1.383 -0.48315,1.976 -6.95855,-1.831 -10.32638,-2.885 -0.24069,-0.07 -5.51263,-1.469 -10.73466,-2.942 0.49029,-0.795 0.538426,-1.157 0.786246,-2.17 2.219678,-2.137 2.59585,-3.279 0.21573,-0.506 0.1355,-1.061 0.25138,-2.275 0.14442,-3.165"},"41031":{"name":"Jefferson, OR","path":"m 107.8422,97.767143 10.51002,2.891997 1.74543,0.514 9.59184,2.588 -1.71869,5.681 -7.00668,-1.824 -0.52238,1.913 -2.55485,-0.683 -0.51347,1.927 -1.88092,-0.522 -11.63501,-3.238 0.54752,-2.04113 1.07821,-0.97325 0.93625,-3.24462 0.94719,-1.811957 -0.63805,-0.416007 0.11908,-0.416007 0.99451,-0.345026"},"41043":{"name":"Linn, OR","path":"m 85.624075,93.234143 1.510091,0.731 0.110048,1.244221 1.96343,-0.802221 1.904105,-0.273 0.893464,-0.165725 0.578345,0.201487 0.205548,0.698547 1.370248,-0.05811 1.451427,1.410353 3.481094,0.830447 0.840681,1.917153 1.006374,-0.568153 1.73651,1.254 1.0929,0.354998 2.65113,0.747 -0.93625,3.24462 -1.07821,0.97325 -0.54752,2.04113 -0.14442,3.165 -3.64062,-1.004 -4.749562,-1.237 -0.144413,0.192 -0.0089,0.09 0.05705,0.08 -0.08914,0.135 -0.739891,0.298 -0.222858,-0.06 -1.864882,-0.844 -1.101814,-0.666 -0.600827,-0.482 -0.588347,-0.635 -0.369054,-0.338 -0.955619,-0.562 -1.672332,-0.419 -0.786245,0.467 -0.169373,0.474 -0.249602,0.812 -3.487293,-1.013 -0.60261,-0.241 0.226424,-0.666 0.103407,-1.006 -0.02496,-0.112 -0.09628,-0.122 -0.215728,-0.05 -0.04992,-0.04 -0.02318,-0.1 -0.10519,-1.245 1.479782,-4.395998 -0.536422,-0.811054 1.309429,0.0496 0.712406,-0.985533 1.600735,-0.07702 -0.764851,-1.808 0.281693,-0.627"},"41039":{"name":"Lane, OR","path":"m 67.223075,99.108143 5.407444,1.461997 2.836546,0.972 3.544346,0.941 2.708179,0.786 0.215728,0.05 0.09628,0.122 0.02496,0.112 -0.103407,1.006 -0.226424,0.666 0.60261,0.241 3.487293,1.013 0.249602,-0.811 0.169373,-0.475 0.786245,-0.467 1.672332,0.419 0.955619,0.562 0.369054,0.339 0.588347,0.634 0.600827,0.482 1.101814,0.666 1.864882,0.844 0.222858,0.06 0.739891,-0.298 0.08914,-0.135 -0.05705,-0.08 0.0089,-0.09 0.144413,-0.192 4.749563,1.237 3.64062,1.004 -0.25138,2.275 -0.1355,1.061 -0.21573,0.506 -2.59585,3.279 -2.219679,2.137 -0.786246,2.17 -0.538426,1.157 -0.49029,0.795 -2.874134,1.49711 -0.292243,1.80489 -5.890602,-1.695 -3.879525,-1.02 0.666794,-2.387 -2.146576,-0.626 -1.78287,-0.449 -0.03209,0.04 -0.217511,-0.05 -1.686594,-0.514 -0.04992,-1.599 1.126774,-3.849 -3.342881,-0.997 -1.752561,-1.246 -0.79516,-0.715 -1.028716,-1.785 0.08023,-0.273 -0.418975,-0.891 -0.648964,-0.403 -1.96294,-0.602 -2.080609,1.278 -0.497421,-0.07 -1.727601,-0.514 -1.477999,-0.481 3.455202,-8.903997"},"41003":{"name":"Benton, OR","path":"m 85.342382,93.861143 0.764851,1.808 -1.600735,0.07702 -0.712407,0.985533 -1.309428,-0.0496 0.536422,0.811054 -1.479782,4.396 0.10519,1.245 0.02318,0.1 0.04992,0.04 -2.708179,-0.786 -3.544346,-0.941 -2.836546,-0.972 0.212437,-0.669768 -0.747673,-0.152838 0.184271,-0.611158 1.240904,0.414397 0.619355,-1.450249 0.681509,-0.549004 1.60136,0.56762 1.399553,-4.675 0.417191,-1.713 7.102954,2.13"},"41041":{"name":"Lincoln, OR","path":"m 78.456938,84.041143 -2.018208,6.718 0.208595,0.497 1.592103,0.475 -0.417191,1.713 -1.399553,4.675 -1.60136,-0.56762 -0.681509,0.549004 -0.619355,1.450249 -1.240904,-0.414397 -0.184271,0.611158 0.747673,0.152838 -0.212437,0.669765 -5.407444,-1.461997 0.609741,-1.15 0.90035,-1.84 0.09628,-0.24 1.383507,-3.85 2.506715,-6.282 1.388856,-3.038 4.348419,1.333"},"41053":{"name":"Polk, OR","path":"m 78.456938,84.041143 0.231773,-0.706 10.190885,3.052 -0.210379,0.772 -0.404011,0.76829 0.677128,0.729678 -0.210951,0.555924 -0.519848,0.32425 -0.947223,-0.115142 -0.952002,1.270591 -0.627701,0.01135 -0.06782,0.802897 1.036326,0.240343 0.07102,0.703688 -0.778444,0.163118 -0.353709,0.472015 0.03209,0.145 -0.281693,0.627 -7.102954,-2.13 -1.592103,-0.475 -0.208595,-0.497 2.018208,-6.718"},"41071":{"name":"Yamhill, OR","path":"m 85.069603,76.656143 5.109705,1.528 0.941355,0.956 0.898567,1.052 0.982361,1.416 0.584782,0.344 -0.08023,1.358 -1.333586,-0.586 -1.775739,1.397 0.0089,0.33 -0.249602,0.851 -0.361923,0.725 -0.914612,0.36 -10.190885,-3.052 -0.946704,-0.29 0.932441,-3.069 4.997385,1.487 0.650747,-2.146 0.747023,-2.661"},"41047":{"name":"Marion, OR","path":"m 93.506143,83.310143 0.3227,-0.249 0.779114,0.224 0.57765,0.523 -0.545558,1.381 -0.19255,0.307 -0.242471,0.289 -0.142629,0.05 -0.249602,0.33 -0.176504,0.297 0.834383,1.93 1.254866,1.409257 0.938064,2.549743 1.536834,1.279 6.22578,1.688 4.18796,1.171 -0.77198,1.28 -0.99451,0.345026 -0.11908,0.416007 0.638,0.416006 -0.94718,1.811958 -2.65113,-0.748 -1.0929,-0.353997 -1.73651,-1.254 -1.006371,0.568153 -0.840684,-1.917153 -3.481094,-0.830447 -1.451427,-1.410353 -1.370248,0.05811 -0.205548,-0.698547 -0.578345,-0.201487 -0.893464,0.165725 -1.904105,0.273 -1.96343,0.802221 -0.110048,-1.244221 -1.510091,-0.731 -0.03209,-0.145 0.353709,-0.472015 0.778444,-0.163118 -0.07102,-0.703688 -1.036326,-0.240343 0.06782,-0.802897 0.627701,-0.01135 0.952002,-1.270591 0.947223,0.115142 0.519848,-0.32425 0.210951,-0.555924 -0.677128,-0.729678 0.404011,-0.76829 0.210379,-0.772 0.914612,-0.36 0.361923,-0.725 0.249602,-0.851 -0.0089,-0.33 1.775739,-1.397 1.333586,0.586"},"41005":{"name":"Clackamas, OR","path":"m 96.26246,79.951143 1.477999,0.442 -0.03209,-0.602 0.322699,0 12.776042,3.608 0.34708,1.518829 1.11929,0.766636 -0.1082,1.894926 -0.68224,0.865609 0.0644,0.806352 -1.16622,0.118648 -0.0874,0.59534 0.49934,1.486029 0.60793,0.780226 -0.38743,0.653544 -0.68821,-0.02412 -0.45294,0.500706 -0.69408,-0.203088 -0.92598,0.353365 -0.32983,1.583 0.025,0.06 0.66679,1.324 -4.18796,-1.171 -6.225779,-1.688 -1.536834,-1.279 -0.938064,-2.550243 -1.254866,-1.409757 -0.834383,-1.929 0.176504,-0.297 0.249602,-0.33 0.142629,-0.05 0.242471,-0.289 0.19255,-0.307 0.545558,-1.381 -0.57765,-0.523 -0.779114,-0.224 -0.3227,0.249 0.08023,-1.358 0.669022,-0.50025 0.546812,0.62 1.015281,0.009 0.444972,-2.129705"},"41059":{"name":"Umatilla, OR","path":"m 158.08882,83.037143 15.44501,3.703 0.29595,0.07 -0.65788,3.15 -0.23383,0.947914 -0.82775,-0.180523 -0.16659,0.689147 -0.39836,-0.07987 -0.57653,1.99883 -0.63666,-0.153588 -1.41649,4.897653 -1.13228,-0.314218 -0.30805,0.954913 -3.54488,-1.094088 -0.56497,1.778349 -2.67592,-0.824131 -0.21117,0.571566 -1.44111,-0.400957 -0.45998,1.96 0.69231,0.19528 -0.37674,1.32372 1.71868,0.41 -0.1765,2.708 -0.46533,1.895 -10.20515,-2.498 0.49212,-1.74647 0.50075,0.0468 2.29061,-9.961755 -1.71006,-0.498565 0.46619,-1.69303 -2.90786,-0.747 1.47086,-5.833 0.31201,-1.086 0.90926,0.05 2.41044,0.33 0.44215,0.226 0.41006,0.104 0.69889,0.05 0.57052,-0.09 1.17312,-0.339 0.3441,-0.152 0.45106,-0.378"},"41049":{"name":"Morrow, OR","path":"m 141.2621,83.239143 2.1858,0 1.53505,0.16 1.67055,0.159 0.71137,-0.732724 0.82502,-0.48268 0.87048,0.494761 0.71137,0.335643 0.90748,0.06 -0.31201,1.086 -1.47086,5.833 2.90786,0.747 -0.46619,1.69303 1.71006,0.498565 -2.29061,9.961752 -0.50075,-0.0468 -0.49212,1.74647 -8.02826,-1.984 -1.83403,-0.47784 0.37921,-1.63716 0.062,-0.27244 0.48356,0.0964 0.4992,-1.926997 -1.68601,-0.510748 0.46218,-1.790922 -2.1351,-0.69733 1.52614,-5.777 0.62044,-2.169 1.14817,-4.363"},"41021":{"name":"Gilliam, OR","path":"m 130.64689,82.233143 0.33696,-0.112 0.68462,0.168 0.44929,0.315 0.41719,0.786 0.19433,0.282 0.32805,0.216 1.25336,0.217 3.16637,0.193 0.83617,-0.635 0.51347,-0.128 2.41044,-0.296 0.025,0 -1.14817,4.363 -0.62044,2.169 -1.52614,5.777 2.1351,0.69733 -0.46218,1.790922 1.68601,0.510748 -0.4992,1.926997 -0.48356,-0.0964 -0.062,0.27244 -11.08767,-2.899997 -0.0499,-0.353 0.96263,-0.434368 -0.1336,-2.072632 -0.57051,-1.478 0.75415,-1.585 0.86113,-1.678 0.94472,-1.394146 0.98434,0.349146 0.58478,-0.297 0.19434,-0.04 0.15154,-0.241 -0.28169,-2.138 -1.13213,-1.952 -1.36746,-1.704 -0.44928,-0.498"},"41055":{"name":"Sherman, OR","path":"m 125.98647,83.278143 0.83616,-0.257 1.41382,-0.217 1.71869,-0.241 0.69175,-0.33 0.44928,0.498 1.36746,1.704 1.13213,1.952 0.28169,2.138 -0.15154,0.241 -0.19434,0.04 -0.58478,0.297 -0.98434,-0.349146 -0.94472,1.394146 -0.86113,1.678 -0.75415,1.585 0.57051,1.478 0.1336,2.072632 -0.96263,0.434368 -2.49067,-0.676 -0.83539,-0.33817 0.41076,-0.976931 -1.97574,-2.206342 -1.67915,-0.417738 -0.59438,-0.670852 0.4,-1.737547 1.23166,-0.03807 1.68557,-1.528353 0.93957,-1.664 0.28882,-0.579 0.0321,-0.152 -0.88189,-0.789579 0.31137,-2.344421"},"41065":{"name":"Wasco, OR","path":"m 118.15254,79.814143 1.10003,0.162 0.55447,0.113 1.97556,1.130964 0.25165,1.820526 2.14795,-0.90324 1.45839,0.68275 0.34588,0.458 -0.31137,2.344421 0.88189,0.789579 -0.0321,0.152 -0.28882,0.579 -0.93957,1.664 -1.68557,1.528353 -1.23166,0.03807 -0.4,1.737547 0.59438,0.670852 1.67915,0.417738 1.97574,2.206342 -0.41076,0.976931 0.83539,0.33817 2.49067,0.676 0.0499,0.353 -0.44605,3.209574 0.94169,2.80142 -9.59184,-2.588 -1.74543,-0.514 -10.51002,-2.891994 0.77198,-1.28 -0.66679,-1.324 -0.025,-0.06 0.32983,-1.583 0.92598,-0.353365 0.69407,0.203088 0.45295,-0.500706 0.68821,0.02412 0.38743,-0.653544 -0.60793,-0.780226 -0.49934,-1.486029 0.0874,-0.59534 1.16622,-0.118648 -0.0644,-0.806352 3.37497,0.925 0.19969,-0.692 1.37459,-5.109 0.68706,0.08787 1.03341,-3.849868"},"41027":{"name":"Hood River, OR","path":"m 110.38101,78.826143 0.45106,-0.403 0.68284,-0.353 0.94849,-0.06 1.10716,0.61 0.43502,0.105 1.32646,0.103 1.72582,0.03 1.09468,0.949 -1.03354,3.858339 -0.68693,-0.09634 -1.37459,5.109 -0.19969,0.692 -3.37497,-0.925 0.68224,-0.865609 0.1082,-1.894926 -1.11907,-0.766636 -0.34708,-1.518829 -0.81792,-2.063175 0.39182,-2.516825"},"41051":{"name":"Multnomah, OR","path":"m 97.861695,73.362143 -0.344094,0.579 -0.153327,0.417 0.01605,0.564 0.313785,0.401 0.818337,0.859 0.426106,0.323 4.458958,2.747 0.52416,0.257 0.0143,0 0.44215,0.112 0.0321,0 0.26564,0 5.70519,-0.795 -0.39182,2.516825 0.81792,2.063175 -12.776039,-3.608 -0.322699,0 0.03209,0.603 -1.477999,-0.443 0.290608,-2.218 -0.297739,-0.192 -0.90035,-1.655 -0.625787,-1.39 0.513467,-1.753 2.619036,0.619"},"41067":{"name":"Washington, OR","path":"m 95.242659,72.743143 -0.513467,1.753 0.625787,1.39 0.90035,1.655 0.297739,0.192 -0.290608,2.218 -0.444972,2.129705 -1.015281,-0.009 -0.546812,-0.62 -0.669022,0.50025 -0.584782,-0.344 -0.982361,-1.416 -0.898567,-1.052 -0.941355,-0.956 -5.109705,-1.528 -0.329831,-0.09 0.105189,-0.314 0.266457,0.04434 0.894141,-1.252007 2.399766,-1.014276 0.101707,-0.512401 -1.486801,-1.032796 -0.773611,-1.561086 0.335796,-0.504506 1.894251,0.65773 0.465329,-1.559 5.086528,1.503 1.214135,1.719"},"41057":{"name":"Tillamook, OR","path":"m 88.941996,69.521143 -0.465329,1.559 -1.894251,-0.65773 -0.335796,0.504506 0.773611,1.561086 1.486801,1.032796 -0.101707,0.512401 -2.399766,1.014276 -0.894141,1.252007 -0.266457,-0.04434 -0.105189,0.314 0.329831,0.09 -0.747023,2.66 -0.650747,2.146 -4.997385,-1.487 -0.932441,3.069 0.946704,0.29 -0.231773,0.706 -4.348419,-1.333 0.563386,-1.013 0.06418,-0.12 0.0071,-0.02 0.458198,-0.868 0.03209,-0.06 0.13015,-0.298 0.36014,-0.893 3.519385,-9.995 0.306654,-1.037 0.06418,-0.418 0,-0.153 -0.03209,-1.205 3.80821,1.15 -0.01605,0.233 0.04814,0.02 3.576437,1.012 1.943328,0.474"},"42101":{"name":"Philadelphia, PA","path":"m 887.94942,224.31014 -1.10895,1.616 -1.30862,2.433 -0.68641,0.981 -0.41942,-0.5625 -0.77813,0.10368 0.19551,-1.22868 -0.67564,-0.5625 0.82012,-1.109 -0.91461,-0.706 0.25579,-1.00666 2.22305,0.48532 1.2634,-2.29966 0.78437,0.36635 0.34954,1.48965"},"42017":{"name":"Bucks, PA","path":"m 881.53109,212.85914 2.4657,1.005 1.3015,2.619 1.67055,1.013 0.1141,0.06 4.63546,3.561 -0.94224,0.79725 -0.70666,0.0544 -0.23559,0.74286 -1.88449,1.5945 -0.34954,-1.48965 -0.78437,-0.36635 -9.39216,-4.582 1.95938,-3.236 1.96115,-2.139 0.18721,0.362"},"42059":{"name":"Greene, PA","path":"m 793.115,244.78514 3.54078,-1.945 0.26677,0.24835 1.85484,-0.27835 0.48336,0.31627 1.08716,-0.20701 0.22155,-0.49394 0.33541,0.32201 -0.003,0.23829 0.20575,0.24777 0.21524,-0.25508 0.13934,0.077 1.76699,0.92004 0.17223,1.79239 0.52911,1.10747 -0.26146,0.64403 0.79923,1.04272 -8.75033,1.462 -1.70264,0.274 -0.90035,-5.512"},"42051":{"name":"Fayette, PA","path":"m 803.55192,239.17414 2.28386,-0.426 2.19792,0.66254 1.82037,-1.727 0.75403,0.2113 1.8836,0.93422 0.35751,0.72046 1.10041,-0.15752 -0.44215,1.187 -0.8023,2.322 -0.13728,1.125 0.84555,0.83577 -0.24294,1.85623 0.37084,0.249 -1.46374,0.264 -4.97599,0.878 -2.63329,0.449 -0.79923,-1.04272 0.26146,-0.64403 -0.52911,-1.10747 -0.17223,-1.79239 -1.76699,-0.92004 0.49133,-0.9695 0.60033,0.33853 0.63667,-0.64249 0.47921,-0.31548 -0.41703,-1.03006 0.56401,-0.1217 0.10376,-0.73939 -0.36858,-0.40026"},"42125":{"name":"Washington, PA","path":"m 793.89233,232.56314 3.6014,2.805 4.70637,1.11194 -0.76089,0.49354 0.0824,0.46543 1.13648,0.35299 0.73338,-0.2489 0.0401,0.77641 -0.71713,0.20847 0.46855,0.62696 0.36892,0.0192 0.36858,0.40026 -0.10377,0.73939 -0.564,0.1217 0.41703,1.03006 -0.47921,0.31548 -0.63667,0.64249 -0.60033,-0.33853 -0.49133,0.9695 -0.13934,-0.077 -0.21524,0.25508 -0.20575,-0.24777 0.003,-0.23829 -0.3354,-0.32199 -0.22156,0.49395 -1.08716,0.20702 -0.48336,-0.31627 -1.85484,0.27835 -0.26677,-0.24835 -3.54078,1.945 -0.73633,-4.507 -0.88786,-5.474 -0.30488,-1.792 2.7064,-0.449"},"42003":{"name":"Allegheny, PA","path":"m 804.82928,229.74581 0.43541,2.17843 -0.93407,1.09344 0.0734,3.53446 -0.16046,0.408 -0.85221,0.578 -0.73338,0.2489 -1.13648,-0.35299 -0.0824,-0.46543 0.76089,-0.49354 -4.70637,-1.11194 -3.6014,-2.805 1.90767,-2.564 1.26762,-1.173 -0.29774,-1.374 7.81435,-1.20425 0.0613,0.87573 -1.19647,1.28146 0.10187,0.92645 0.64938,-0.0642 z"},"42007":{"name":"Beaver, PA","path":"m 789.78103,224.46714 6.12951,-1.105 0.85934,4.09 0.29774,1.374 -1.26762,1.173 -1.90767,2.564 -2.7064,0.449 -0.60974,-3.688 -0.79516,-4.857"},"42073":{"name":"Lawrence, PA","path":"m 796.13518,218.28414 -0.90347,1.82503 0.67883,3.25297 -6.12951,1.105 -0.20324,-1.105 -0.82904,-5.151 4.42152,-0.797 0.0714,0.25565 1.84877,-0.25565 1.04476,0.861"},"42019":{"name":"Butler, PA","path":"m 802.63731,214.79714 1.94333,11.442 -7.81076,1.213 -0.85934,-4.09 -0.67883,-3.25297 0.90347,-1.82503 1.25336,-2.612 5.16854,-0.916 0.0802,0.04"},"42005":{"name":"Armstrong, PA","path":"m 811.18439,216.11314 0.56517,3.175 0.55269,3.095 -2.03961,4.322 -0.97344,1.995 -0.73248,0.0892 -0.37706,0.19447 -1.11422,-0.67433 -0.23226,-0.52954 0.22846,-0.26626 -0.48259,0.0585 -0.21932,-0.26401 0.006,-0.50389 -0.38938,0.32543 -0.21168,-0.28668 -0.18535,-0.0958 -0.42972,-0.51637 -0.56135,0.0233 -8.8e-4,-0.001 -8.7e-4,-0.001 -8.8e-4,-0.001 -8.7e-4,-0.001 -8.7e-4,-0.001 -8.8e-4,-10e-4 -8.8e-4,-0.001 -8.7e-4,-0.001 -1.94333,-11.442 0.44037,1.551 0.0571,0.209 0.40114,0.939 0.68924,0.29325 0.56986,0.59711 -0.36329,0.53276 0.4479,0.34152 0.51226,-0.59164 0.36192,0.06 0.51525,0.04 0.32092,-0.1 1.23731,-0.444 1.84884,-0.745 1.50831,-1.367"},"42031":{"name":"Clarion, PA","path":"m 805.38649,209.25014 1.30685,-0.233 -0.19255,-1.131 0.7078,-0.13 2.57089,-0.33 0.36906,2.258 1.03585,6.429 -1.50831,1.367 -1.84884,0.745 -1.23731,0.444 -0.32092,0.1 -0.51525,-0.04 -0.36192,-0.06 -0.51226,0.59164 -0.4479,-0.34152 0.36329,-0.53276 -0.56986,-0.59711 -0.68924,-0.29325 -0.40114,-0.939 -0.0571,-0.209 -0.44037,-1.551 -0.0802,-0.04 0.44037,-1.968 0.28704,-0.603 0.3227,-0.483 -0.18211,-0.48033 0.96301,-0.25767 0.17828,-0.03 1.01089,-0.526 -0.19077,-1.157"},"42053":{"name":"Forest, PA","path":"m 803.84966,203.92314 9.36898,-1.654 0.62117,4.52301 -0.30187,0.0822 -0.0722,-0.40587 -1.32732,0.24136 0.10709,0.64786 -0.49576,0.13114 0.28864,1.65134 -1.88984,0.544 -0.36906,-2.258 -2.57089,0.33 -0.7078,0.13 0.19255,1.131 -1.30685,0.233 -0.22642,-1.228 -0.78462,0.19958 -0.0355,-1.61558 -0.49029,-2.683"},"42121":{"name":"Venango, PA","path":"m 803.84966,203.92314 0.49029,2.683 0.0355,1.61558 0.78462,-0.19958 0.22642,1.228 0.19077,1.157 -1.01089,0.526 -0.17828,0.03 -0.96301,0.25767 0.18211,0.48033 -0.3227,0.483 -0.28704,0.603 -0.44037,1.968 -5.16854,0.916 -1.23731,-7.263 0.61152,-0.653 1.83101,-2.394 3.59248,-0.972 -0.0321,-0.151 1.69551,-0.316"},"42085":{"name":"Mercer, PA","path":"m 787.37772,209.90314 6.32055,-0.68528 2.45296,-0.80872 1.23731,7.263 -1.25336,2.612 -1.04476,-0.861 -1.84877,0.25565 -0.0714,-0.25565 -4.42152,0.797 -0.0303,-0.185 -1.34072,-8.123"},"42039":{"name":"Crawford, PA","path":"m 801.26985,199.07914 0.8843,5.16 0.0321,0.151 -3.59248,0.972 -1.83101,2.394 -0.61152,0.653 -2.45296,0.80872 -6.32055,0.68528 -0.0428,-0.25 -1.30863,-7.987 10.23724,-1.744 3.81891,-0.686 1.18739,-0.157"},"42049":{"name":"Erie, PA","path":"m 800.71537,195.67014 0.55448,3.409 -1.18739,0.157 -3.81891,0.686 -10.23724,1.744 -0.47781,-2.917 2.95422,-1.863 2.65803,-2.2039 0.16985,-0.83144 0.38418,-0.43959 0.59542,-0.11077 0.0881,0.3557 3.08614,-2.525 1.62242,-1.189 0.098,0.61 0.44216,2.549 0.52951,3.011 2.28207,-0.394 0.25673,-0.05"},"42129":{"name":"Westmoreland, PA","path":"m 809.2892,228.70014 -0.11946,0.301 0.24069,0.749 0.0428,0.04 1.14639,0.458 4.2254,0.257 0.75347,0.83909 0.80196,-0.24399 0.41401,-1.16539 1.17376,0.37029 -0.93066,2.778 -0.77198,1.57775 -0.75629,2.6763 -0.78768,0.4792 -0.77198,1.57775 -1.10041,0.15752 -0.35751,-0.72046 -1.8836,-0.93422 -0.75403,-0.2113 -1.82037,1.727 -2.19792,-0.66254 -2.28386,0.426 -0.36892,-0.0192 -0.46855,-0.62696 0.71713,-0.20847 -0.0401,-0.77641 0.85221,-0.578 0.16046,-0.408 -0.0734,-3.53446 0.93407,-1.09344 -0.43541,-2.17843 -0.62866,-0.48273 -0.64894,0.065 -0.10098,-0.92489 1.19735,-1.27989 -0.0604,-0.87417 0.56135,-0.0233 0.42972,0.51637 0.18535,0.0958 0.21168,0.28668 0.38938,-0.32543 -0.006,0.50389 0.21932,0.26401 0.48259,-0.0585 -0.22846,0.26626 0.23226,0.52954 1.11422,0.67433 0.37706,-0.19447 0.73248,-0.0892"},"42063":{"name":"Indiana, PA","path":"m 811.74956,219.28814 6.99776,-1.134 0.80942,4.122 -1.58853,8.03 -1.17376,-0.37029 -0.41401,1.16539 -0.80196,0.24399 -0.75347,-0.83909 -4.2254,-0.257 -1.14639,-0.458 -0.0428,-0.04 -0.24069,-0.749 0.11946,-0.301 0.97344,-1.995 2.03961,-4.322 -0.55269,-3.095"},"42065":{"name":"Jefferson, PA","path":"m 810.14854,209.68414 1.88984,-0.544 0.33518,-0.355 1.8738,-0.547 4.19509,1.567 0.11783,0.79033 0.44377,-0.12233 0.12124,0.651 -0.9574,0.152 -0.28883,1.413 -0.009,0.05 0.0196,0.665 0.85756,4.75 -6.99776,1.134 -0.56517,-3.175 -1.03585,-6.429"},"42123":{"name":"Warren, PA","path":"m 809.90785,194.04114 2.38726,-0.403 0.24069,1.012 0.4582,2.557 -0.0464,0.239 -0.45998,0.1 0.73098,4.725 -9.36898,1.654 -1.69551,0.316 -0.8843,-5.16 -0.55448,-3.409 9.19248,-1.629"},"42083":{"name":"McKean, PA","path":"m 822.51096,191.71814 1.69194,-0.336 1.69551,8.669 -3.55861,1.044 -0.92771,0.23492 -0.14909,-0.61451 -3.27875,0.65059 -2.6119,0.534 -2.15371,0.369 -0.73098,-4.725 0.45998,-0.1 0.0464,-0.239 -0.4582,-2.557 -0.24069,-1.012 0.7399,-0.129 4.64259,-0.902 4.83336,-0.889"},"42023":{"name":"Cameron, PA","path":"m 822.3398,201.09514 3.55861,-1.044 3.08542,2.84775 1.13998,-0.27675 0.43981,2.78689 -1.07273,3.41711 -2.48888,0.152 -0.36549,-2.127 -0.39642,0.0729 -0.27037,-1.85985 -2.80267,0.523 -0.82726,-4.492"},"42047":{"name":"Elk, PA","path":"m 813.21864,202.26914 2.15371,-0.369 2.6119,-0.534 3.27875,-0.65059 0.14909,0.61451 0.92771,-0.23492 0.82726,4.492 2.80267,-0.523 0.27037,1.85985 0.39642,-0.0729 0.36549,2.127 -5.48233,0.611 -1.51009,0.307 0.0468,0.82587 -0.93107,0.40213 -0.12124,-0.651 -0.44377,0.12233 -0.11783,-0.79033 -4.19509,-1.567 -1.8738,0.547 -0.33518,0.355 -0.28864,-1.65134 0.49576,-0.13114 -0.10709,-0.64786 1.32732,-0.24136 0.0722,0.40587 0.30187,-0.0822 -0.62117,-4.52301"},"42033":{"name":"Clearfield, PA","path":"m 827.00201,208.97814 2.48888,-0.152 1.20701,1.26 -1.11023,1.31175 1.27782,1.41125 0.0232,0.549 -0.20681,1.43 -0.0909,0.103 -0.96275,0.396 -0.82012,0.722 -0.19255,0.216 -1.9362,4.024 0.0232,0.08 0.29952,0.369 0.24603,0.153 -7.6913,1.43 -0.80942,-4.122 -0.85756,-4.75 -0.0196,-0.665 0.009,-0.05 0.28883,-1.413 0.9574,-0.152 0.93107,-0.40213 -0.0468,-0.82587 1.51009,-0.307 5.48233,-0.611"},"42013":{"name":"Blair, PA","path":"m 827.00201,220.69314 4.17548,-0.931 -1.27654,1.205 -0.18541,0.346 -0.0642,0.266 0.97633,1.14705 -0.0439,1.38995 0.46755,0.619 0.4305,-0.76469 -10e-4,1.68769 0.53292,0.218 -0.2086,0.852 -1.13391,3.535 -0.11766,0.628 -0.17829,0.674 -2.97616,-0.74542 -0.0622,1.1972 -3.01089,-1.25478 0.65745,-1.09341 -0.29216,-1.7143 0.1096,-1.56821 0.80355,-1.02036 0.54788,-0.80122 -0.25563,-1.53169 0.58441,-0.0707 0.76702,-2.11607 -0.24603,-0.153"},"42021":{"name":"Cambria, PA","path":"m 819.55674,222.27614 7.6913,-1.43 -0.76702,2.11607 -0.58441,0.0707 0.25563,1.53169 -0.54788,0.80122 -0.80355,1.02036 -0.1096,1.56821 0.29216,1.7143 -0.65745,1.09341 -0.29774,2.033 -1.56714,0.289 -2.25177,0.338 -0.34409,-0.488 -0.60261,-0.251 -2.22502,0.401 0.93066,-2.778 1.58853,-8.03"},"42111":{"name":"Somerset, PA","path":"m 824.02818,232.79514 -0.66857,4.211 -0.40306,0.33882 1.077,5.99218 -0.40828,1.792 -10.08391,1.841 -0.37084,-0.249 0.24294,-1.85623 -0.84555,-0.83577 0.13728,-1.125 0.8023,-2.322 0.44215,-1.187 0.77198,-1.57775 0.78768,-0.4792 0.75629,-2.6763 0.77198,-1.57775 2.22502,-0.401 0.60261,0.251 0.34409,0.488 2.25177,-0.338 1.56714,-0.289"},"42009":{"name":"Bedford, PA","path":"m 824.32592,230.76214 3.01089,1.25478 0.0622,-1.1972 2.97616,0.74542 0.17829,-0.674 0.11766,-0.628 0.68098,1.61046 1.99511,1.01054 -0.22464,1.061 -0.8103,1.02061 0.41941,1.11768 -0.75015,5.06971 -0.48137,1.535 -0.48316,1.077 -7.39178,1.364 0.40828,-1.792 -1.077,-5.99218 0.40306,-0.33882 0.66857,-4.211 0.29774,-2.033"},"42057":{"name":"Fulton, PA","path":"m 833.34724,232.88414 1.12499,0.547 2.73314,0.207 1.23018,0.715 -0.1765,0.194 -0.0981,0.168 -0.41719,1.143 -0.0731,1.301 -0.37797,2.218 -0.21572,0.811 -0.77912,1.913 -0.41897,0.748 -4.20936,0.795 -0.65253,0.121 0.48316,-1.077 0.48137,-1.535 0.75015,-5.06971 -0.41941,-1.11768 0.8103,-1.02061 0.22464,-1.061"},"42061":{"name":"Huntingdon, PA","path":"m 831.17749,219.76214 3.12715,0.523 1.59529,-1.35694 2.28067,0.0709 0.42967,-0.451 -0.11945,0.531 -0.29295,0.70549 0.34987,-0.005 -1.65846,2.41917 -0.2152,0.97041 0.3756,1.1036 -1.11642,2.67938 1.31312,0.47602 0.44928,-0.07 1.13926,-0.335 0.13015,-0.267 1.34071,2.458 -1.08121,1.72746 -0.78902,3.40754 -1.23018,-0.715 -2.73314,-0.207 -1.12499,-0.547 -1.99511,-1.01054 -0.68098,-1.61046 1.13391,-3.535 0.2086,-0.852 -0.53292,-0.218 10e-4,-1.68769 -0.4305,0.76469 -0.46755,-0.619 0.0439,-1.38995 -0.97633,-1.14705 0.0642,-0.266 0.18541,-0.346 1.27654,-1.205"},"42055":{"name":"Franklin, PA","path":"m 840.30578,229.21814 0.42076,-0.697 0.1745,0.23313 0.0258,0.31035 -0.0922,0.28415 0.25316,0.0234 0.21383,0.75749 0.6202,-0.39612 0.20072,0.65262 -0.18542,0.287 0.46711,0.74 2.61191,2.981 0.68284,1.302 1.22126,5.061 -0.16759,0.03 -10.87372,2.058 0.41897,-0.748 0.77912,-1.913 0.21572,-0.811 0.37797,-2.218 0.0731,-1.301 0.41719,-1.143 0.0981,-0.168 0.1765,-0.194 0.78902,-3.40754 1.08121,-1.72746"},"42087":{"name":"Mifflin, PA","path":"m 843.48108,214.81814 0.29773,0.885 0.31231,2.46093 1.36538,-0.10593 -0.95562,0.65 -0.54556,0.411 -1.04655,0.9 -0.78798,0.8191 0.13308,0.68867 -1.7086,1.82878 0.14211,0.58801 -1.39263,1.85966 -0.32968,0.95678 -0.13015,0.267 -1.13926,0.335 -0.44928,0.07 -1.31312,-0.47602 1.11642,-2.67938 -0.3756,-1.1036 0.2152,-0.97041 1.65846,-2.41917 -0.34987,0.005 0.29295,-0.70549 0.11945,-0.531 4.87081,-3.73"},"42105":{"name":"Potter, PA","path":"m 834.17628,189.46914 2.20184,10.35 0.312,1.446 -6.56631,1.357 -1.13998,0.27675 -3.08542,-2.84775 -1.69551,-8.669 7.63425,-1.44 2.33913,-0.473"},"42035":{"name":"Clinton, PA","path":"m 836.69012,201.26514 0.17829,0.843 1.18917,1.147 2.04852,1.825 5.74619,4.035 0.33518,-0.07 0.12302,0.57 -3.07902,1.928 -2.73135,1.141 -1.58319,-1.678 -0.26387,-0.521 -1.47678,-0.31699 -1.64337,0.0744 -0.8871,-1.22803 -1.69016,0.19089 -0.39726,-1.46688 -0.41637,0.74257 -0.58161,0.21293 -0.0354,0.96921 -0.8271,0.42586 -1.20701,-1.26 1.07273,-3.41711 -0.43981,-2.78689 6.56631,-1.357"},"42027":{"name":"Centre, PA","path":"m 830.6979,210.08614 0.8271,-0.42586 0.0354,-0.96921 0.58161,-0.21293 0.41637,-0.74257 0.39726,1.46688 1.69016,-0.19089 0.8871,1.22803 1.64337,-0.0744 1.47678,0.31699 0.26387,0.521 1.58319,1.678 2.73135,-1.141 3.07902,-1.928 -0.78981,1.375 -0.86648,2.073 -1.17312,1.758 -4.87081,3.73 -0.42967,0.451 -2.28067,-0.0709 -1.59529,1.35694 -3.12715,-0.523 -4.17548,0.931 -0.29952,-0.369 -0.0232,-0.08 1.9362,-4.024 0.19255,-0.216 0.82012,-0.722 0.96275,-0.396 0.0909,-0.103 0.20681,-1.43 -0.0232,-0.549 -1.27782,-1.41125 1.11023,-1.31175"},"42119":{"name":"Union, PA","path":"m 846.18747,209.04214 2.71888,-0.988 0.0214,-1.453 1.11786,0 0.28134,1.07486 0.6884,0.52019 0.0804,1.90995 -0.0214,0.289 0.20146,0.408 0.56339,0.749 0.57587,0.428 0.45106,0.12 -0.57052,-0.03 -2.87725,0.96648 -0.21962,0.50541 -0.97342,-0.14789 -3.75829,1.89 -0.68819,0.415 -0.29773,-0.884 1.17312,-1.758 0.86648,-2.073 0.78981,-1.375 -0.12302,-0.57"},"42093":{"name":"Montour, PA","path":"m 852.65751,205.29114 0.81566,0.40088 0.81566,-0.34088 0.78803,1.9714 0.8843,0.0836 0.29193,1.42234 1.04166,0.52266 0.14441,0.296 0.0321,1.494 -0.51454,0.22064 -0.38424,-0.73483 0.0356,-0.57558 -0.83303,-0.1268 -0.44144,-0.25243 -0.51524,0 -1.16957,0.564 -0.95918,0.385 -0.0392,-0.05 0.16758,-2.395 -0.16045,-2.884"},"42117":{"name":"Tioga, PA","path":"m 845.55455,187.14614 2.74919,9.009 -0.0784,0.191 -1.15351,1.128 -3.86348,0.913 -6.83018,1.432 -2.20184,-10.35 10.73466,-2.18 0.64361,-0.143"},"42081":{"name":"Lycoming, PA","path":"m 848.30374,196.15514 1.05189,-0.07 1.90411,3.946 3.1432,1.77 0.79516,0.104 1.77395,0.04 -1.88476,3.3023 -0.79846,0.0977 -0.81566,0.34088 -0.81566,-0.40088 -2.61191,1.315 -1.11786,0 -0.0214,1.453 -2.71888,0.988 -0.33518,0.07 -5.74619,-4.035 -2.04852,-1.825 -1.18917,-1.147 -0.17829,-0.843 -0.312,-1.446 6.83018,-1.432 3.86348,-0.912 1.15351,-1.129 0.0784,-0.191"},"42131":{"name":"Wyoming, PA","path":"m 860.74995,192.25114 0.0553,0.19 4.11487,-0.891 2.47462,-0.49 -0.12124,0.174 -0.45106,1.553 -0.21573,1.254 0.60261,0.288 -0.66679,1.999 -0.24782,0.187 -2.47641,1.414 -4.55701,1.132 0.26743,-3.951 -0.0749,-2.49096 1.29616,-0.36804"},"42113":{"name":"Sullivan, PA","path":"m 849.35563,196.08714 10.17306,-0.977 -0.26743,3.951 -0.14442,1.657 -1.72418,0.47921 -0.42061,0.75079 -1.77395,-0.04 -0.79516,-0.104 -3.1432,-1.77 -1.90411,-3.946"},"42037":{"name":"Columbia, PA","path":"m 859.11684,200.71814 0.25139,1.847 0.11232,0.533 1.04298,1.51 0.76754,-0.34593 0.43439,2.4186 0.84124,1.80833 -0.53843,0.911 -0.44393,0.856 0.009,1.938 -1.10894,0.85 -0.82588,-1.03324 -1.46286,0.371 -0.72431,-1.24376 -0.0321,-1.494 -0.14441,-0.296 -1.04166,-0.52266 -0.29193,-1.42234 -0.8843,-0.0836 -0.78803,-1.9714 0.79846,-0.0977 1.88476,-3.3023 0.42061,-0.75079 1.72418,-0.47921"},"42097":{"name":"Northumberland, PA","path":"m 850.0456,206.60614 2.61191,-1.315 0.16045,2.884 -0.16758,2.395 0.0392,0.05 0.95918,-0.385 1.16957,-0.564 0.51524,0 0.44144,0.25243 0.83303,0.1268 -0.0356,0.57558 0.38424,0.73483 0.51454,-0.22064 0.72431,1.24376 1.46286,-0.371 0.82588,1.03324 -4.90111,3.801 -0.72207,0.225 -1.98611,1.318 -0.79695,0.313 -0.0802,0.03 -0.19968,-0.05 -0.27991,-0.303 0.12124,-0.274 0.1355,-0.161 0.64005,-1.141 0.13015,-0.296 0.0802,-0.306 0.0321,-0.401 -0.14442,-0.612 -0.30652,-1.04221 0.49194,-0.98079 0.16759,-1.061 -0.45106,-0.12 -0.57587,-0.428 -0.56339,-0.748 -0.20146,-0.409 0.0214,-0.289 -0.0804,-1.90995 -0.68839,-0.52019 -0.28134,-1.07486"},"42109":{"name":"Snyder, PA","path":"m 852.8661,212.10514 -0.16759,1.061 -0.49194,0.98079 0.30652,1.04221 0.14442,0.612 -0.0321,0.401 -0.0802,0.306 -0.13015,0.296 -0.64005,1.141 -0.1355,0.161 -1.21852,0.18027 -0.71567,-0.62384 -0.89116,0.12123 -0.3019,-0.28966 -0.66857,0.403 -2.38726,0.159 -1.36539,0.10593 -0.3123,-2.46093 0.68819,-0.416 3.75829,-1.89 0.97342,0.14789 0.21962,-0.50541 2.87725,-0.96648 0.57052,0.03"},"42067":{"name":"Juniata, PA","path":"m 851.63949,218.10614 -0.12124,0.274 -1.25613,0.88061 -2.56386,0.98121 0.16182,0.60049 -1.63873,1.19269 -2.44254,2.25 -1.29436,1.311 0.0548,0.62899 -0.79021,0.54851 -0.73544,1.1775 -0.28704,0.57 -0.42076,0.697 -1.34071,-2.458 0.32968,-0.95678 1.39262,-1.85966 -0.1421,-0.58801 1.7086,-1.82877 -0.13308,-0.68868 0.78798,-0.8191 1.04655,-0.9 0.54556,-0.411 0.95562,-0.65 2.38726,-0.159 0.66857,-0.403 0.3019,0.28966 0.89116,-0.12127 0.71567,0.62384 1.21852,-0.18027"},"42099":{"name":"Perry, PA","path":"m 853.50794,225.05014 -0.96989,0.651 -0.76306,0.289 -5.05032,1.85506 -0.26956,-0.48808 -1.33555,1.17636 -0.008,-0.41327 0.68422,-1.06783 -0.86801,0.50311 -1.67218,2.27975 -0.55009,0.0917 -0.38177,0.74623 -0.20146,-0.287 -0.20072,-0.65261 -0.62021,0.39611 -0.21382,-0.7575 -0.25316,-0.0234 0.0922,-0.28414 -0.0258,-0.31037 -0.1745,-0.23312 0.28704,-0.57 0.73543,-1.1775 0.79022,-0.54851 -0.0548,-0.62899 1.29436,-1.311 2.44254,-2.25 1.63873,-1.19269 -0.16182,-0.60049 2.56386,-0.98121 1.25613,-0.88061 -0.13906,1.043 -0.41164,0.55295 0.3441,0.63163 -0.007,0.61391 0.73181,0.40274 0.046,0.64129 -0.99826,1.31955 0.52244,1.23009 1.31326,-0.31289 0.58788,0.54773"},"42041":{"name":"Cumberland, PA","path":"m 853.50794,225.05014 0.0508,1.21101 1.36654,0.92499 -1.13366,0.56815 0.32328,1.20556 -1.90961,0.74458 -1.33248,2.00671 -0.43323,0.658 -0.62044,0.565 -1.20344,0.497 -1.96829,0.908 -0.94848,1.357 -0.68284,-1.302 -2.61191,-2.981 -0.46711,-0.74 0.18542,-0.287 0.20146,0.287 0.38177,-0.74623 0.55009,-0.0917 1.67218,-2.27975 0.86801,-0.50311 -0.68422,1.06783 0.008,0.41327 1.33555,-1.17636 0.26956,0.48808 5.05032,-1.85506 0.76306,-0.289 0.96989,-0.651"},"42001":{"name":"Adams, PA","path":"m 850.87285,231.71114 0.20147,0.02 0.65253,0.191 0.47944,0.63178 0.94864,0.0182 1.26227,1.603 0.0802,0.321 -0.40499,0.64023 0.53339,0.45977 -0.2817,1.036 0,0.1 0.49029,2.451 -3.73868,0.756 -4.17548,0.827 -1.22126,-5.061 0.94848,-1.357 1.96829,-0.908 1.20344,-0.497 0.62044,-0.565 0.43323,-0.658"},"42133":{"name":"York, PA","path":"m 854.92532,227.18614 0.57199,0.48225 1.34775,0.34734 0.30217,0.98817 0.60572,0.11124 1.03659,1.10194 0.58582,6e-5 1.12677,0.05 0.47246,-0.06 1.45295,1.82796 1.92458,0.75242 0.32071,0.9215 3.18009,2.56212 0.0481,0.185 -5.66596,1.188 -3.74224,0.779 -3.65845,0.763 -0.49029,-2.451 0,-0.1 0.2817,-1.036 -0.53338,-0.45977 0.40501,-0.64023 -0.0802,-0.321 -1.26227,-1.603 -0.94864,-0.0182 -0.47944,-0.63178 -0.65253,-0.191 -0.20147,-0.02 1.33248,-2.00671 1.90961,-0.74458 -0.32328,-1.20556 1.13366,-0.56815"},"42043":{"name":"Dauphin, PA","path":"m 855.5832,216.84514 3.309,1.746 -2.04851,2.326 3.15746,5.948 0.0285,-0.02 0.0285,-0.02 -1.35296,1.01929 -0.95229,1.26971 -0.60572,-0.11124 -0.30217,-0.98817 -1.34775,-0.34734 -0.57199,-0.48225 -1.36654,-0.92499 -0.0508,-1.21101 -0.58788,-0.54773 -1.31326,0.31289 -0.52244,-1.23009 0.99826,-1.31955 -0.046,-0.64129 -0.73181,-0.40274 0.007,-0.61391 -0.3441,-0.63163 0.41164,-0.55295 0.13906,-1.043 0.27991,0.303 0.19968,0.05 0.0802,-0.03 0.79695,-0.313 1.98611,-1.318 0.72207,-0.225"},"42075":{"name":"Lebanon, PA","path":"m 858.8922,218.59114 1.89698,1.011 5.77649,3.045 -2.36943,1.936 -2.12161,0.852 -2.01643,1.391 -0.0571,0.04 -3.15746,-5.948 2.04851,-2.326"},"42071":{"name":"Lancaster, PA","path":"m 866.56567,222.64714 5.60357,3.038 -1.05368,0.907 0.34647,1.37081 -0.45879,2.32519 0.0642,0.587 0.0874,0.403 0.22464,0.617 -0.17472,1.246 -0.27456,1.012 -0.22642,0.603 -1.01089,1.302 -1.67946,0.363 -0.11233,0.02 -0.0482,-0.185 -3.18009,-2.56212 -0.32071,-0.9215 -1.92458,-0.75242 -1.45295,-1.82796 -0.47246,0.06 -1.12677,-0.05 -0.58582,-6e-5 -1.03659,-1.10194 0.95229,-1.26971 1.35296,-1.01929 2.01643,-1.391 2.12161,-0.852 2.36943,-1.936"},"42011":{"name":"Berks, PA","path":"m 876.50696,217.39314 -1.83101,5.268 -2.50671,3.024 -5.60357,-3.038 -5.77649,-3.045 2.19471,-0.926 0.81834,-0.208 0.34587,-0.177 2.7581,-1.895 0.5587,-0.12965 0.22759,-1.53335 1.54218,-1.214 7.27233,3.874"},"42107":{"name":"Schuylkill, PA","path":"m 862.5667,208.48914 3.12193,0.63563 0.61496,-0.56563 2.32712,1.91299 2.58826,1.23401 -1.98434,1.81 -1.54218,1.214 -0.22759,1.53335 -0.5587,0.12965 -2.7581,1.895 -0.34587,0.177 -0.81834,0.208 -2.19471,0.926 -1.89698,-1.011 -3.309,-1.746 4.90111,-3.801 1.10894,-0.85 -0.009,-1.938 0.44393,-0.856 0.53843,-0.911"},"42025":{"name":"Carbon, PA","path":"m 866.30359,208.56214 4.00789,-3.118 -0.21751,-0.451 -0.67392,-0.548 -0.0802,-0.483 0.007,-0.199 0.0499,-0.104 0.92531,-1.102 0.0695,-0.06 0.41006,-0.146 0.35301,0.201 0.54734,0.193 2.69214,2.298 -1.01446,1.239 2.24464,2.587 -2.14658,1.114 -2.25889,1.721 -2.58826,-1.23401 -2.32712,-1.91299"},"42079":{"name":"Luzerne, PA","path":"m 859.26126,199.06114 4.55701,-1.132 2.47641,-1.414 0.24782,-0.187 0.1355,0.405 0.41897,0.456 1.01445,0.376 1.01802,0.213 1.30328,1.711 0.40828,1.589 0.14263,0.233 0.23534,0.123 0.55447,0.06 -0.61866,1.066 -0.35301,-0.201 -0.41006,0.146 -0.0695,0.06 -0.92531,1.102 -0.0499,0.104 -0.007,0.199 0.0802,0.483 0.67392,0.548 0.21751,0.451 -4.00789,3.118 -0.61496,0.56563 -3.12193,-0.63563 -0.84124,-1.80833 -0.43439,-2.4186 -0.76754,0.34593 -1.04298,-1.51 -0.11232,-0.533 -0.25139,-1.848 0.14442,-1.656"},"42069":{"name":"Lackawanna, PA","path":"m 867.39471,191.06014 4.32346,-0.933 2.25711,8.572 -0.27991,0.337 -0.67571,0.499 -1.24622,1.956 -0.55447,-0.06 -0.23534,-0.123 -0.14263,-0.233 -0.40828,-1.589 -1.30328,-1.711 -1.01802,-0.213 -1.01445,-0.376 -0.41897,-0.456 -0.1355,-0.405 0.66679,-1.999 -0.60261,-0.288 0.21573,-1.254 0.45106,-1.553 0.12124,-0.174"},"42015":{"name":"Bradford, PA","path":"m 851.7108,185.91614 6.85335,-1.407 2.1858,7.742 -1.29616,0.36804 0.0749,2.49096 -10.17306,0.977 -1.05189,0.07 -2.74919,-9.009 6.15625,-1.23"},"42115":{"name":"Susquehanna, PA","path":"m 859.24521,184.36514 10.35134,-2.243 2.12162,8.005 -4.32346,0.933 -2.47462,0.49 -4.11487,0.891 -0.0553,-0.19 -2.1858,-7.742 0.68106,-0.144"},"42127":{"name":"Wayne, PA","path":"m 869.59655,182.12214 2.05565,-0.456 0.3227,0.07 1.01267,0.713 0.30487,0.289 0.68278,1.53493 1.96122,-0.0389 2.73136,4.901 -1.25514,3.792 -1.20062,2.75228 -1.31965,0.19303 0.34683,0.69893 0.5849,0.10376 -0.37084,2.159 -2.43362,0.698 0.67571,-0.499 0.27991,-0.337 -2.25711,-8.572 -2.12162,-8.005"},"42103":{"name":"Pike, PA","path":"m 878.6678,189.13814 0.45998,1.053 0.7381,0.723 0.52239,0.497 1.831,0.95 0.29774,0.137 1.35142,-0.07 0.75415,-0.08 1.36746,1.337 -1.01445,0.731 -0.48138,0.522 -0.41006,0.843 -0.0874,0.257 -0.20859,0.892 -0.0321,0.313 0.0713,0.07 0.0321,0.378 -0.1034,0.692 -0.47425,1.118 -0.68462,0.963 -0.23355,0.328 -0.57765,0.362 -1.24979,-1.0284 -1.2498,-0.0166 -0.016,-2.432 -3.81713,1.163 0.37084,-2.159 -0.5849,-0.10376 -0.34683,-0.69893 1.31965,-0.19303 1.20062,-2.75228 1.25514,-3.792"},"42089":{"name":"Monroe, PA","path":"m 875.45328,198.83714 3.81713,-1.163 0.016,2.432 1.24979,0.0166 1.2498,1.0284 0.57765,-0.362 0.23355,-0.328 0.0963,0.119 -1.87202,3.496 -1.29927,1.1995 -0.81024,1.45688 -1.63386,1.53409 -1.45369,0.60753 -2.24464,-2.587 1.01446,-1.239 -2.69214,-2.298 -0.54734,-0.193 0.61866,-1.066 1.24622,-1.956 2.43362,-0.698"},"42095":{"name":"Northampton, PA","path":"m 880.8215,204.07614 1.63133,1.922 0.0571,0.136 -0.009,0.135 -0.57765,1.771 -0.35123,0.486 -0.2603,0.04 -0.25673,-0.03 -0.1355,0.04 -0.29239,0.686 0.17829,1.387 0.42432,1.64 0.1141,0.209 -1.96115,2.139 -1.42791,-0.70913 0.18962,-0.97215 -1.20034,-1.01308 -0.65287,0.55536 -0.57052,-0.353 -0.77767,-1.2408 -0.36336,0.5348 -0.57052,-0.353 -0.22643,-0.285 -0.30487,-0.812 2.14658,-1.114 1.45369,-0.60753 1.63386,-1.53409 0.81024,-1.45688 1.29927,-1.1995"},"42077":{"name":"Lehigh, PA","path":"m 873.47786,209.98814 0.30487,0.812 0.22643,0.285 0.57052,0.353 0.36336,-0.5348 0.77767,1.2408 0.57052,0.353 0.65287,-0.55536 1.20034,1.01308 -0.18962,0.97215 1.42791,0.70913 -1.95938,3.236 -0.91639,-0.479 -7.27233,-3.874 1.98434,-1.81 2.25889,-1.721"},"42045":{"name":"Delaware, PA","path":"m 881.29575,225.37814 1.87201,1.712 0.67564,0.5625 -0.19551,1.22868 0.77813,-0.10368 0.41942,0.5625 -2.06083,0.78553 -1.13843,1.45171 -0.18705,-0.0715 -0.18807,-0.0664 -0.18933,-0.0607 -0.19084,-0.0542 -0.19259,-0.0469 -0.19459,-0.039 -0.19681,-0.0303 -0.1993,-0.0209 -0.20201,-0.0107 -0.20497,1.6e-4 -0.20818,0.0118 -0.21162,0.0241 -0.21531,0.0372 -0.21925,0.051 -0.22341,0.0655 -0.22783,0.0807 -0.0761,-1.23185 2.9768,-4.83715"},"42091":{"name":"Montgomery, PA","path":"m 877.42335,217.87214 9.39216,4.582 -1.2634,2.29966 -2.22305,-0.48532 -0.25579,1.00666 0.91461,0.706 -0.82012,1.109 -1.87201,-1.712 -1.92015,-0.442 -1.6973,-1.342 -0.18185,-0.241 -0.0571,-0.07 -1.78287,-0.729 -0.98058,0.11 1.83101,-5.268 0.91639,0.479"},"42029":{"name":"Chester, PA","path":"m 874.67595,222.66114 0.98058,-0.11 1.78287,0.729 0.0571,0.07 0.18185,0.241 1.6973,1.342 1.92015,0.442 -2.9768,4.83908 0.0761,1.23379 -0.27807,0.1283 -0.26084,0.1396 -0.24395,0.1507 -0.22737,0.1615 -0.21114,0.1722 -0.1952,0.1826 -0.1797,0.1927 -0.1644,0.20271 -0.1495,0.21243 -0.135,0.22192 -0.1207,0.2312 -0.1068,0.24024 -0.0932,0.24906 -0.0799,0.25765 -0.067,0.26601 -0.0545,0.27415 -0.17142,0.0472 -5.9637,1.277 1.01089,-1.302 0.22642,-0.603 0.27456,-1.012 0.17472,-1.246 -0.22464,-0.617 -0.0874,-0.403 -0.0642,-0.587 0.45879,-2.32519 -0.34647,-1.37081 1.05368,-0.907 2.50671,-3.024"},"44003":{"name":"Kent, RI","path":"m 939.00829,173.4666 -0.15569,0.009 -0.13206,0.12285 -0.199,0.14648 -0.0573,0.4181 -0.19112,-0.0858 -0.24229,0.2134 -0.0652,0.33538 0.14348,0.29607 -5.05673,1.56128 -0.25495,-0.965 -0.4992,-1.897 5.43953,-1.606 0.0481,-0.03 0.12837,-0.29903 -0.0481,-0.14997 0.0826,-0.28302 0.19202,-0.0565 0.0367,-0.12461 0.0679,3.9e-4 0.22743,-0.16658 0.0243,-0.0728 0.25199,0.0986 0.0207,0.11495 0.0933,0.0724 0.0712,0.15024 0.11377,0.0315 -0.0464,0.0993 0.0816,0.19355 0.0177,0.13779 0.22572,0.10336 0.30589,-0.0621 0.0176,0.0486 -0.23348,0.17782 0.0949,0.42804 -0.0624,0.25097 0.0688,0.1607 -0.0231,0.19145 -0.27962,-0.11903 0.0194,-0.19122 -0.12883,-0.0152 -0.11071,-0.0109 -0.0761,-0.11922 -0.0862,0.0223 0.0263,0.14026 -0.66443,0.0658 0.13717,0.49663 0.10338,0.0497 0.24397,-0.12726 0.29475,0.0732 z"},"44007":{"name":"Providence, RI","path":"m 935.3898,165.81114 1.91912,-0.55872 0.18823,0.77572 0.54878,2.06945 0.66294,-0.32026 0.0296,0.21621 0.30268,0.63866 -0.005,0.3997 0.10639,0.14793 -0.0644,0.29768 0.149,0.22941 0.0893,0.29768 0.19594,0.16113 0.10331,0.17553 0.17467,0.015 -0.40978,0.69377 -0.085,0.062 -0.0277,-0.11442 -0.11493,-0.16343 -0.0687,0.005 -0.0663,-0.0647 0.003,-0.21655 -0.29031,-0.46272 -0.24104,-0.15362 -0.004,-0.14253 0.10062,-0.62552 -0.0582,-0.30642 -0.17354,-0.0898 -0.0547,0.20767 0.0276,0.26463 -0.0377,0.51737 -0.14485,-0.0153 -0.0465,0.0715 0.23827,0.33162 0.17096,0.0456 0.097,0.10471 -0.0416,0.10931 0.18595,0.52569 -0.252,-0.0986 -0.0243,0.0728 -0.22743,0.16658 -0.0679,-3.9e-4 -0.0367,0.12461 -0.19202,0.0565 -0.0826,0.28302 0.0481,0.14997 -0.12837,0.29903 -0.0481,0.03 -5.43953,1.606 -1.80962,-6.307 4.90111,-1.503"},"44001":{"name":"Newport, RI","path":"m 941.25036,173.06807 -0.10264,0.14351 0.009,0.1182 0.16545,0.0278 0.0889,-0.16321 z m 1.06214,-0.66963 0.0762,0.57226 0.19727,0.70118 0.21679,0.1289 -0.11523,0.41406 0.21484,0.46875 -0.15625,0.11914 0.0918,0.2793 0.23633,0.0469 0.13086,0.55078 0.13086,0.0703 -0.0703,0.25781 0.46485,0.48438 0.0645,0.54883 0.34766,-0.28711 0.10937,-0.3418 0.29883,-0.19141 -0.0449,-0.27148 0.23633,-0.17383 -0.72358,-2.19014 -0.27285,-0.23381 -0.004,-0.44478 -0.28244,-0.7133 -1.0471,-0.10339 z m -2.01009,2.75072 -0.15208,0.003 -0.11265,0.14043 -0.007,0.26755 0.0593,0.41926 -0.0167,0.3712 0.20602,0.32351 0.15154,0.0909 -0.006,0.20683 0.0907,0.0675 -0.10121,0.0382 -0.22773,0.0349 -0.006,0.10268 0.16779,0.31004 0.0301,0.22143 -0.009,0.24072 0.0623,0.10448 0.12459,-0.25486 -0.0199,-0.15084 0.0562,-0.0631 0.0339,-0.27413 0.27284,-0.1038 0.0256,-0.11865 -0.16651,-0.19331 -0.0285,-0.1402 0.0801,-0.24663 -0.17812,-0.0894 0.0214,-0.0829 -0.16184,-0.49453 0.0267,-0.29447 z m 0.52624,-0.34162 0.13799,-0.1054 0.11689,-0.23709 0.0604,-0.60878 -0.20651,-0.17869 -0.4909,-0.17777 -0.11474,-0.32166 -0.17302,-0.21526 -0.14848,0.16142 0.17323,0.24514 -0.12614,0.17025 0.0333,0.20542 0.17883,0.10003 0.27717,-0.0154 0.0735,0.33392 -0.0569,0.22236 0.14203,0.41666 z m 0.48475,0.62073 0.11558,0.66729 -0.22392,-0.0358 0.0101,0.17494 0.0936,0.0499 0.0388,0.15035 0.0648,0.25117 0.20311,0.3168 -0.28809,0.22916 -0.0917,-0.10675 -0.23102,0.39308 -0.0202,0.17598 0.20525,0.18126 0.13487,-0.1315 0.10467,0.0129 0.23707,-0.24525 0.27779,0.0624 0.009,-0.23744 0.0525,-0.18547 -0.0542,-0.17493 0.0242,-0.15775 0.17433,-0.11787 0.0611,0.0898 0.12956,-0.0367 0.008,-0.14677 0.13697,-0.0388 0.11736,0.003 0.18836,0.10842 0.0175,0.16543 0.0818,-0.003 0.0133,-0.26946 -0.16492,-0.14127 -0.002,-0.34898 0.0629,-0.2096 -0.002,-0.42553 -0.13936,-0.0773 -0.1802,-0.44801 -0.062,-0.43989 -0.25864,-0.22249 -0.0543,-0.67271 0.26822,-0.2251 -0.24618,-0.61838 -0.11679,0.26414 -0.31366,0.21181 -0.077,0.30949 -0.11509,0.15247 0.0102,0.4065 -0.0813,0.2846 0.0203,0.4464 z"},"44009":{"name":"Washington, RI","path":"m 933.05246,176.48314 5.05673,-1.56128 -0.14348,-0.29607 0.0652,-0.33543 0.24229,-0.2134 0.19112,0.0858 0.0573,-0.4181 0.19899,-0.14648 0.13207,-0.1229 0.15569,-0.009 0.13541,0.36216 0.11621,0.19633 -0.0999,0.0835 -0.0227,0.1129 0.14493,-0.015 0.0956,0.12549 -0.17773,0.22205 0.12595,0.0934 0.14741,-0.0437 0.0495,0.15561 -0.0522,0.11455 -0.39999,0.28261 -0.18277,0.005 -0.0603,0.1175 0.15273,0.16253 0.35709,0.26249 0.075,0.15115 0.2067,0.30473 0.156,0.46385 -0.0686,0.21588 0.0827,0.32677 0.10562,0.16834 0.0464,0.18165 -0.12931,0.0617 -0.0243,0.24892 0.14196,0.10434 -0.0539,0.28123 -0.29519,0.30905 0.22189,0.52815 -0.27199,0.68159 -0.017,0.29446 0.0577,0.23901 -0.0987,0.009 -0.14923,-0.11522 -0.31628,-0.065 -0.002,-0.12592 0.13205,-0.15904 0.0729,-0.19451 -0.0501,-0.13162 -0.0215,-0.12928 -0.0914,-0.0699 -0.0795,-0.25902 -0.18074,0.0623 0.0252,0.13086 -0.01,0.59451 -0.037,0.13305 0.0708,0.16536 -0.29175,0.17053 -0.13603,0.0131 -0.004,3.4e-4 -0.36538,0.15638 -0.36334,0.26146 -0.48575,0.20088 -0.24689,0.2183 -0.84588,0.59933 -0.13357,0.24389 -0.21481,0.10993 -0.17431,0.0396 -0.25356,0.14733 -0.25611,0.0412 -0.21971,0.10424 -0.78601,0.42379 -0.18317,0.1398 -0.16605,0.24557 -0.11394,-0.0985 -0.15628,0.0672 -0.18075,0.10869 -0.0477,-0.13467 0.40918,-0.15024 0.0825,-0.19005 -0.003,-0.17111 0.23405,-0.3037 -0.0406,-0.21847 -0.20028,-0.26774 -0.0393,-0.44768 -0.20975,-0.25828 -0.0488,-0.31509 0.274,-0.35605 0.26578,0.004 0.0783,-0.0701 -0.96081,-3.94252 m 6.09052,7.19275 0.13713,0.38174 -0.0177,0.30213 0.0721,0.18323 0.42043,0.47696 -0.18428,0.1652 -0.4646,0.17752 -0.32994,0.23528 -0.12135,-0.11806 -0.10017,-0.61957 0.16538,-0.28606 0.28329,0.0921 0.0931,-0.12312 -0.24046,-0.27568 0.0628,-0.18935 -0.16741,-0.47156 z"},"45077":{"name":"Pickens, SC","path":"m 769.98761,363.00314 0.59609,0.32756 2.95709,-0.86182 -0.0186,1.28671 0.83347,-0.13345 1.33002,2.917 0.20147,0.538 0.15332,0.779 -0.0909,0.113 -4.85184,3.71493 -1.08512,1.71007 -2.42014,-7.83348 -0.66779,-0.25052 0.32448,-1.182 0.32092,-0.506 2.41757,-0.619"},"45073":{"name":"Oconee, SC","path":"m 767.57004,363.62214 -0.32092,0.506 -0.32448,1.182 0.66779,0.25052 2.42014,7.83348 -2.37835,3.689 -1.16599,-0.163 -1.15174,-0.802 -4.77096,-2.933 -0.37084,-0.618 0.30666,-1.737 1.23553,-2.243 1.70442,-1.324 0.40293,-1.831 1.78465,-0.863 1.96116,-0.947"},"45013":{"name":"Beaufort, SC","path":"m 814.52192,411.52914 2.61341,0.2156 1.12259,1.7064 1.39018,0.23471 2.34583,1.68729 0.39951,1.16955 0.45478,0.0738 0.25465,0.37063 0.0981,0.192 0.0553,0.273 -0.041,0.346 -0.21751,1.18 -0.18363,0.202 -3.50191,2.15806 -0.0562,0.64539 -1.19141,2.14755 -1.10003,0.891 -0.53942,-0.0453 -0.59448,0.90428 -0.48138,-0.385 -2.30703,-1.848 -0.30309,-0.489 -0.16224,-0.522 0.0232,-0.123 0.24068,-1.011 -0.33924,-0.39945 1.35904,-0.48655 -0.12864,-0.99473 1.13418,-0.0803 0.26565,-0.3495 0.26565,-0.3495 0.0677,-0.3185 0.0678,-0.3185 -0.59137,-0.259 0.58437,-1.217 -0.79738,-1.362 0.0735,-1.362 -0.0963,-0.219 -0.33696,-0.496 -0.51346,-0.644 0.66679,-1.118"},"45049":{"name":"Hampton, SC","path":"m 814.52192,411.52914 -0.66679,1.118 -0.48316,0.997 -0.34588,-0.08 -0.5723,-0.209 -0.15868,-0.433 0.0642,-0.33 -0.0642,-0.332 -0.69888,-0.65 -0.79516,-0.516 -0.39401,0.355 -4.21828,5.055 -2.00929,-0.804 -0.82903,-3.359 0.3637,-0.175 0.82725,-0.556 0.80229,-1.357 0.15333,-1.095 0.0553,-0.848 0.32983,-0.919 0.25673,-0.353 0.21573,-0.201 2.1234,-1.87 3.3118,2.96702 2.73213,3.59498"},"45053":{"name":"Jasper, SC","path":"m 813.85513,412.64714 0.51346,0.644 0.33696,0.496 0.0963,0.219 -0.0735,1.362 0.79738,1.362 -0.58437,1.217 0.59137,0.259 -0.0678,0.3185 -0.0677,0.3185 -0.26565,0.3495 -0.26565,0.3495 -1.13418,0.0803 0.12864,0.99473 -1.35904,0.48655 0.33924,0.39945 -0.24068,1.011 -0.0232,0.123 0.16224,0.522 0.30309,0.489 2.30703,1.848 0.48138,0.385 0.009,1.077 -3.57465,-0.674 -1.08577,-0.419 -0.0892,-0.09 -0.2496,-0.997 -0.18185,-0.918 -0.0998,-0.449 -0.2496,-1.221 -2.03961,-4.138 -1.71155,-1.414 -0.36906,-0.137 4.21828,-5.055 0.39401,-0.355 0.79516,0.516 0.69888,0.65 0.0642,0.332 -0.0642,0.33 0.15868,0.433 0.5723,0.209 0.34588,0.08 0.48316,-0.997"},"45067":{"name":"Marion, SC","path":"m 832.84795,372.2802 0.47219,-0.22304 0.70103,-0.92002 0.99127,-0.444 0.57765,-0.113 3.15352,0.39491 0.74205,-0.77991 0.98236,0.619 0.21029,0.73401 -0.89313,1.44799 -0.68283,2.182 -0.54021,0.956 -0.79516,1.116 -0.0642,0.145 0.0802,0.693 1.76067,1.48823 0.24328,1.66777 1.02693,1.383 0.73098,0.86 -0.77554,0.23865 -0.96728,-0.35785 -0.26425,-0.82655 -0.66902,-0.31525 -0.22642,-0.412 0.16371,-0.65627 -3.67086,-2.18673 -0.53462,-0.75098 -0.28715,-1.43939 -0.56464,-1.59481 -1.2591,-1.40082 0.57808,-0.75397 -0.21981,-0.75397"},"45033":{"name":"Dillon, SC","path":"m 833.01028,363.51814 8.33313,6.073 -0.87539,1.223 -0.98236,-0.619 -0.74205,0.77991 -3.15352,-0.39491 -0.57765,0.113 -0.99127,0.444 -0.70103,0.92002 -0.47219,0.22304 -0.95115,-0.77698 -1.00814,-0.0361 2.12162,-7.949"},"45051":{"name":"Horry, SC","path":"m 840.46802,370.81414 0.87539,-1.223 9.3048,6.646 2.43362,1.737 -0.78625,0.305 -1.519,0.909 -0.71493,0.537 -0.96275,0.925 -0.0909,0.1 -0.37618,0.409 -0.17651,0.203 -0.27991,0.369 -0.38688,0.506 -0.1141,0.154 -1.13926,1.75 -0.67571,1.295 -0.24068,0.463 -1.78541,0.14364 -0.20891,-0.64461 -1.06107,-1.30503 -1.01847,-0.602 -0.73098,-0.86 -1.02693,-1.383 -0.24328,-1.66777 -1.76067,-1.48823 -0.0802,-0.693 0.0642,-0.145 0.79516,-1.116 0.54021,-0.956 0.68284,-2.182 0.89312,-1.44799 -0.21029,-0.73401"},"45019":{"name":"Charleston, SC","path":"m 838.70833,395.54114 0.83706,0.28191 1.36458,0.63359 1.32942,5.6e-4 -0.18283,0.91494 -0.53823,0.6299 -0.27054,1.78317 -1.38989,0.0779 -0.90406,0.43362 -0.21295,0.0286 -0.30485,-0.5867 -0.57616,0.0595 -0.77623,0.75686 -0.61644,1.37298 0.28742,0.36904 0.72591,9e-5 -0.0376,0.54576 -1.43507,0.96379 -0.5533,0.80553 -0.47313,0.4431 -0.004,0.38267 -2.4519,1.9173 0.0906,0.45393 -0.28725,1.11052 -1.41092,1.38872 -0.0729,0.38472 -0.64809,0.30532 -0.84176,0.39572 -0.20147,0.08 -0.16046,0.09 -0.62757,0.344 -1.46195,1.061 -0.74702,0.731 -0.009,0 -0.15154,-0.126 -1.18204,0.513 -0.2086,0.266 0.21751,0.192 0.025,0.06 -0.025,0.169 -0.14441,0.04 -0.36014,-0.09 -0.81477,-1.13 -1.13212,-2.523 -0.7078,-1.239 0.41897,-2.017 -0.0571,-1.1 2.25711,-0.09 2.4978,0.0554 -0.61324,-1.02419 0.91852,-0.73157 0.62745,0.0543 0.16374,-0.86191 -2.07113,-1.70273 0.37384,-0.21827 1.00028,0.34196 0.79654,-0.18196 0.48703,0.975 0.6996,0.98714 1.25264,-0.17714 -0.0138,0.85695 0.48791,0.25383 0.16774,0.63222 0.27991,0.129 0.40844,-0.28124 -0.16188,-0.83961 0.80593,-0.46129 0.17908,-0.49817 -0.079,-0.53504 1.21155,-0.94065 -0.15601,-0.80506 0.65522,-0.84194 1.10894,-2.395 0.47648,-0.68065 0.89365,-0.57635 0.89366,-0.0549 0.47648,-1.20212 0.65788,-0.345"},"45035":{"name":"Dorchester, SC","path":"m 821.26295,397.49314 0.32092,0.214 1.21413,1.353 -0.19255,0.49 -0.17829,0.209 0.62044,0.426 3.13251,1.999 -0.37384,0.21877 2.07113,1.70323 -0.16374,0.86091 -0.62745,-0.0543 -0.91852,0.73157 0.61324,1.02419 -2.4978,-0.0554 -2.25711,0.09 -0.72998,-2.82502 0.23072,-1.43398 -0.22285,-0.167 -0.0481,0 -2.32308,0.181 -1.28723,0.293 -0.60083,-0.09 -2.03601,-1.82411 -1.55651,-0.27489 4.8601,-4.386 0.0963,0.08 0.098,0.135 0.0446,0.187 0.0125,0.246 0.0535,0.17 0.22643,0.346 0.21037,0.112 0.9788,0.233 1.23018,-0.192"},"45015":{"name":"Berkeley, SC","path":"m 825.25658,391.21714 0.34588,-0.282 0.14263,-0.04 1.53683,-0.199 0.53843,0.05 1.39063,0.811 0.64184,0.49 0.27991,0.409 0.13906,0.114 1.99147,1.077 1.73473,0.568 4.71034,1.329 -0.65788,0.345 -0.47648,1.20212 -0.89366,0.0549 -0.89365,0.57635 -0.47648,0.68065 -1.10894,2.395 -0.65522,0.84194 0.15601,0.80506 -1.21155,0.94065 0.079,0.53504 -0.17908,0.49817 -0.80593,0.46129 0.16188,0.83961 -0.40844,0.28124 -0.27991,-0.129 -0.16774,-0.63222 -0.48791,-0.25383 0.0138,-0.85695 -1.25264,0.17714 -0.6996,-0.98714 -0.48702,-0.975 -0.79654,0.18196 -1.00029,-0.34196 -3.13251,-1.999 -0.62044,-0.426 0.17829,-0.209 0.19255,-0.49 -1.21413,-1.353 -0.32092,-0.214 0.129,-0.67303 0.86454,0.16222 0.86454,-0.75212 0.12901,-1.69125 -0.058,-1.73282 2.06456,-1.589"},"45043":{"name":"Georgetown, SC","path":"m 838.86879,382.22614 0.66902,0.31525 0.26425,0.82655 0.96728,0.35785 0.77554,-0.23865 1.01847,0.602 1.06107,1.30503 0.20891,0.64461 1.78541,-0.14364 -1.18918,2.284 -0.0553,0.145 -0.13015,0.337 -0.0374,0.1 -0.0107,0.04 -0.009,0.02 -0.38332,1.358 -0.0499,0.225 -0.0642,0.321 -0.016,0.07 -0.0642,1.212 -0.0178,0.637 -0.0214,1.05 -0.009,0.03 0.009,0 0.0481,0.289 0.007,0.07 0.28169,0.684 -0.16046,0.803 -0.11232,0.199 -0.78981,1.102 -0.78803,0.49 0.18283,-0.91494 -1.32942,-5.6e-4 -1.36458,-0.63359 -0.83706,-0.28191 -4.71034,-1.328 -0.12837,-0.321 0.009,-0.426 1.20522,-2.683 2.46575,-3.48935 -0.29422,-0.47265 0.22999,-2.184 0.24961,-0.636 0.7488,-1.574 0.11054,-0.1 0.27456,-0.102"},"45027":{"name":"Clarendon, SC","path":"m 825.89841,380.57014 0.79981,1.1369 1.28972,-0.0529 -0.4375,1.65474 -1.17352,1.19912 0.40365,0.88369 -1.52399,5.82545 -2.06456,1.589 -1.86489,0.611 -0.53842,0.105 -0.24782,-0.02 -0.59013,-0.19 -0.76842,-0.508 -0.60261,-0.578 -0.98236,-1.173 -1.03585,-1.824 0.87657,-1.80421 1.54591,-0.44899 -0.31691,-1.0028 2.36385,-0.94779 1.15554,-1.30021 3.71193,-3.15"},"45089":{"name":"Williamsburg, SC","path":"m 838.64237,381.81414 0.22642,0.412 -0.27456,0.102 -0.11054,0.1 -0.7488,1.574 -0.24961,0.637 -0.22999,2.184 0.29421,0.47215 -2.46574,3.48885 -1.20522,2.683 -0.009,0.427 0.12837,0.32 -1.73473,-0.568 -1.99147,-1.077 -0.13906,-0.114 -0.27991,-0.409 -0.64184,-0.49 -1.39063,-0.811 -0.53843,-0.05 -1.53683,0.2 -0.14263,0.04 -0.34588,0.281 1.52399,-5.82545 -0.40365,-0.88369 1.17352,-1.19912 0.4375,-1.65474 0.82369,-0.22639 0.82368,1.10339 0.80096,-0.29593 0.66099,0.54393 1.52247,-0.5449 2.92223,0.6449 0.98057,-0.344 0.15155,-0.258 0.90213,-0.692 0.1355,-0.06 0.37618,0.02 0.55448,0.265"},"45041":{"name":"Florence, SC","path":"m 830.40551,371.38514 0.48315,0.08 1.00814,0.0361 0.95115,0.77698 0.21981,0.75397 -0.57808,0.75397 1.2591,1.40082 0.56464,1.59481 0.28715,1.43939 0.53462,0.75098 3.67086,2.18673 -0.16371,0.65627 -0.55448,-0.265 -0.37618,-0.02 -0.1355,0.06 -0.90213,0.692 -0.15155,0.258 -0.98057,0.344 -2.92223,-0.6449 -1.52247,0.5449 -0.66099,-0.54393 -0.80096,0.29593 -0.82368,-1.10339 -0.82369,0.22639 -1.28972,0.0529 -0.79981,-1.1369 1.27702,-1.39345 -2.15241,-0.83355 -1.49404,-0.642 3.81712,-4.099 0.4987,-0.68909 1.2396,0.0518 0.0143,-0.51812 0.24224,-0.68909 0.87426,0.0127 0.19035,-0.38623"},"45069":{"name":"Marlboro, SC","path":"m 823.4327,360.81914 4.4447,-0.724 4.87793,3.247 0.25495,0.176 -2.12162,7.949 -0.48315,-0.08 0,-0.09 -0.56161,-1.421 -0.29595,-0.563 -0.7078,-0.282 -0.57377,-0.83821 0.40616,-0.80732 -0.79426,-0.38151 -0.7557,0.63451 -0.79449,-0.38447 -0.0517,-0.369 0.041,-0.113 0.40812,-2.5411 -3.29281,-3.4119"},"45031":{"name":"Darlington, SC","path":"m 826.31739,366.77214 -0.041,0.113 0.0517,0.369 0.79449,0.38447 0.7557,-0.63451 0.79426,0.38151 -0.40616,0.80732 0.57377,0.83821 0.7078,0.282 0.29595,0.563 0.56161,1.421 0,0.09 -0.19035,0.38573 -0.87426,-0.0132 -0.24224,0.68909 -0.0143,0.51812 -1.2396,-0.0518 -0.4987,0.68909 -3.81712,4.099 -0.0731,0.02 -1.54218,-1.094 -0.2817,-0.369 0.52239,-0.69 0.0963,-0.99 -0.76307,-1.237 -0.78624,-0.787 -0.63649,-0.192 -1.62954,-0.314 0,-0.05 4.03285,-3.641 3.12785,-0.66982 0.72137,-0.91318"},"45061":{"name":"Lee, SC","path":"m 818.43532,372.04414 1.62954,0.314 0.63649,0.193 0.78624,0.786 0.76307,1.237 -0.0963,0.99 -0.52239,0.69 0.2817,0.369 1.54218,1.094 0.0731,-0.02 1.49404,0.642 -0.33696,0.981 -0.97832,0.2081 -1.39825,1.3979 -0.62628,-0.98381 -0.98195,0.21061 -1.47186,-1.6091 -1.8568,0.2456 -1.43687,-0.3843 -0.32091,-1.319 0.24069,-0.273 0.45106,-1.214 -0.0802,-0.692 -0.0731,-0.298 0.5313,-0.729 1.75078,-1.84"},"45055":{"name":"Kershaw, SC","path":"m 815.26003,366.69214 1.92628,2.31337 1.24901,2.99063 -1.75078,1.89 -0.5313,0.729 0.0731,0.298 0.0802,0.692 -0.45106,1.214 -0.24069,0.273 -2.29099,1.991 -1.81674,1.015 -3.22878,-2.138 0.50633,-2.098 0.82229,-2.87359 -2.51066,-1.28841 2.39612,-2.34973 0.18806,1.23601 0.37701,-0.0388 0.42615,-0.77211 0.86305,0.59568 2.26063,-1.04991 -0.78263,-0.94309 2.4354,-1.678"},"45085":{"name":"Sumter, SC","path":"m 815.61482,377.09014 0.32091,1.319 1.43687,0.3843 1.8568,-0.2456 1.47186,1.6091 0.98195,-0.21061 0.62628,0.98381 1.39825,-1.3979 0.97832,-0.2081 0.33696,-0.981 2.15241,0.83355 -1.27702,1.39345 -3.71193,3.15 -1.15554,1.30021 -2.36385,0.94779 0.31691,1.0028 -1.54591,0.44899 -0.87657,1.80421 -1.98433,-2 0.17476,-1.34428 -0.80144,-2.72722 -0.65908,-1.7917 0.52457,-1.03793 -0.49217,-1.24187 2.29099,-1.991"},"45017":{"name":"Calhoun, SC","path":"m 806.71117,385.28714 0.98592,0.601 1.45928,0.6195 0.42713,-0.2146 1.09265,0.7131 1.44246,0.181 1.59536,-0.52911 0.86322,0.56911 1.98433,2 1.03585,1.824 -0.2086,0.506 -1.57795,-0.43599 -0.36537,2.26899 -0.79553,-0.24696 -0.84216,-1.0398 -2.80761,-1.43341 -2.48115,0.29217 -1.75078,-1.641 1.52435,-0.955 0.51525,-0.523 -0.26565,-0.176 -0.52238,-0.225 -0.97879,0.105 -0.29061,0.5926 -0.47246,-0.0199 -0.0392,-2.26073 0.0303,-0.28 0.44216,-0.289"},"45029":{"name":"Colleton, SC","path":"m 813.4522,400.56114 1.55651,0.27489 2.03601,1.82411 0.60083,0.09 1.28723,-0.293 2.32308,-0.182 0.0481,0 0.22285,0.168 -0.23072,1.43298 0.72998,2.82602 0.0571,1.1 -0.41897,2.017 0.7078,1.239 1.13212,2.523 0.81477,1.13 0.36014,0.09 0.14441,-0.04 0.025,-0.17 -0.025,-0.06 -0.21751,-0.192 0.2086,-0.266 1.18204,-0.513 0.15154,0.126 0.009,0 -1.39064,1.441 -0.11232,0 -0.68825,-0.28822 -0.43788,0.36281 -0.54089,0.0853 -0.14854,-0.41938 -0.69653,0.23062 -0.14795,0.25788 -2.34583,-1.68729 -1.39017,-0.23471 -1.1226,-1.7064 -2.61341,-0.2156 -2.73213,-3.59498 -3.3118,-2.96702 2.46237,-2.30356 0.83619,0.76117 0.33582,-0.69823 -0.37415,-0.79736 1.58561,-1.25602 0.12837,-0.112"},"45005":{"name":"Allendale, SC","path":"m 808.47799,404.96714 -2.1234,1.87 -0.21573,0.201 -0.25673,0.353 -0.32983,0.919 -0.0553,0.848 -0.15333,1.095 -0.80229,1.357 -0.82725,0.556 -0.3637,0.175 -3.65489,-6.453 -1.57605,-0.866 1.18204,-1.703 1.76861,0.271 1.76682,0.353 1.53505,-0.248 1.68125,-0.497 2.4247,1.769"},"45009":{"name":"Bamberg, SC","path":"m 813.32383,400.67314 -1.58561,1.25602 0.37415,0.79736 -0.33582,0.69823 -0.83619,-0.76117 -2.46237,2.30356 -2.4247,-1.769 -0.67571,-0.763 -0.0891,-0.332 -0.56339,-4.699 -0.15868,-0.813 -0.22642,-0.635 2.25711,0.998 2.07348,0.706 0.60261,0.209 1.92907,1.006 2.12161,1.798"},"45075":{"name":"Orangeburg, SC","path":"m 806.76822,389.31814 1.75078,1.641 2.48115,-0.29217 2.80761,1.43341 0.84216,1.0398 0.79553,0.24696 0.36537,-2.26899 1.57795,0.43599 0.2086,-0.506 0.98236,1.173 0.60261,0.578 0.76842,0.508 0.59013,0.19 0.24782,0.02 0.53842,-0.105 1.86489,-0.611 0.058,1.73282 -0.12901,1.69125 -0.86454,0.75212 -0.86454,-0.16222 -0.129,0.67303 -1.23018,0.192 -0.9788,-0.233 -0.21037,-0.112 -0.22643,-0.346 -0.0535,-0.17 -0.0125,-0.246 -0.0446,-0.187 -0.098,-0.135 -0.0963,-0.08 -4.8601,4.386 -0.12837,0.113 -2.12161,-1.799 -1.92907,-1.006 -0.60261,-0.208 -2.07348,-0.707 -2.25711,-0.998 -1.50742,-0.71342 -1.50741,4.2e-4 2.92747,-4.252 2.51563,-1.673"},"45011":{"name":"Barnwell, SC","path":"m 804.33995,395.95614 0.22642,0.635 0.15868,0.813 0.56339,4.699 0.0891,0.332 0.67571,0.763 -1.68125,0.497 -1.53505,0.248 -1.76682,-0.353 -1.76861,-0.271 -1.18204,1.703 -3.20739,-1.503 6.41299,-8.276 1.50742,-4.2e-4 1.50741,0.71342"},"45003":{"name":"Aiken, SC","path":"m 796.23146,386.99014 0.0802,0.119 0.78802,0.796 1.62359,0.56961 1.09532,1.3437 0.97698,0.0817 0.42789,0.06 1.18026,0.326 1.84884,0.717 -2.92747,4.252 -6.41299,8.276 -1.78822,-1.352 -1.248,-1.766 -0.45107,-1.742 -1.27475,-1.487 -0.90035,-0.852 -0.16224,-0.154 5.85138,-7.513 1.29258,-1.663"},"45063":{"name":"Lexington, SC","path":"m 799.46202,379.00114 0.90043,0.41737 -0.26297,0.52313 0.97976,1.02551 0.60958,-0.085 0.55447,0 0.69711,0.07 0.70066,0.408 1.71869,1.239 0.31379,0.33 0.70779,1.084 0.0642,0.129 0.26565,1.142 -0.44216,0.289 -0.0303,0.28 0.0392,2.26073 0.47246,0.0199 0.29061,-0.5926 0.97879,-0.105 0.52238,0.225 0.26565,0.176 -0.51525,0.523 -1.52435,0.955 -2.51563,1.673 -1.84884,-0.717 -1.18026,-0.326 -0.42789,-0.06 -0.97698,-0.0817 -1.09532,-1.3437 -1.62359,-0.56961 -0.78802,-0.796 -0.0802,-0.119 1.16778,-4.837 1.5626,-0.22428 -0.99426,-1.33159 0.47543,-1.08999 1.01901,-0.50614"},"45079":{"name":"Richland, SC","path":"m 808.78464,375.86014 -0.50633,2.098 3.22878,2.138 1.81674,-1.015 0.49217,1.24159 -0.52457,1.03821 0.65908,1.7917 0.80144,2.72722 -0.17476,1.34428 -0.86322,-0.56911 -1.59536,0.52911 -1.44246,-0.181 -1.09265,-0.7131 -0.42713,0.2146 -1.45928,-0.6195 -0.98592,-0.601 -0.26565,-1.143 -0.0642,-0.128 -0.70779,-1.084 -0.31379,-0.33 -1.71869,-1.239 -0.70066,-0.408 -0.69711,-0.07 -0.55447,0 -0.60958,0.085 -0.97976,-1.02551 0.26297,-0.52313 -0.90043,-0.41737 0.25673,-1.018 0.6347,0.05 2.07426,0.75823 0.0324,-0.99582 0.93137,0.16759 2.90608,-1.31 2.4871,-0.788"},"45039":{"name":"Fairfield, SC","path":"m 806.81457,369.74614 0.2817,1.952 2.51066,1.28841 -0.82229,2.87359 -2.4871,0.788 -2.90608,1.31 -0.93137,-0.16759 -0.0324,0.99582 -2.07426,-0.75823 -0.6347,-0.05 -2.8829,-5.522 -0.26743,-1.775 3.2466,-0.323 4.32346,-0.344 2.67609,-0.273"},"45071":{"name":"Newberry, SC","path":"m 796.83585,372.46114 2.8829,5.522 -0.25673,1.018 -1.01901,0.50614 -0.47543,1.08999 0.99426,1.33159 -1.5626,0.22428 -0.56339,0.144 -0.82725,-0.192 -0.54734,-0.202 -1.23018,-0.698 -1.43878,-0.603 -0.48851,-0.136 -2.11448,0.537 -0.36108,-0.21844 -0.26119,0.3809 0.17119,0.77054 -1.62954,-1.343 0.48138,-1.125 0.37599,-1.44431 1.12518,-1.09469 0.50099,-0.497 1.1553,-2.236 0.85399,-2 2.44788,1.414 0.65967,-0.874 0.28347,-0.139 0.55447,-0.153 0.24961,0 0.0392,0.02"},"45081":{"name":"Saluda, SC","path":"m 789.73824,381.93614 -0.17119,-0.77054 0.26119,-0.3809 0.36108,0.21844 2.11448,-0.537 0.48851,0.136 1.43878,0.603 1.23018,0.698 0.54734,0.202 0.82725,0.192 0.56339,-0.144 -1.16778,4.837 -1.29258,1.663 -3.64954,-0.659 -0.47246,-0.282 -0.24782,-0.216 -0.74167,-1.832 -0.7078,0.07 -1.37459,0.554 1.99324,-4.355"},"45037":{"name":"Edgefield, SC","path":"m 787.745,386.29114 1.37459,-0.554 0.7078,-0.07 0.74167,1.832 0.24782,0.216 0.47246,0.282 3.64954,0.659 -5.85138,7.513 -0.31201,-0.29 -1.85775,-0.786 0.40133,-1.20107 -0.5144,-0.42148 -0.51441,-0.42148 -0.5144,-0.42149 -0.5144,-0.42148 0.11217,-1.15637 0.68361,-1.62391 -0.87487,-1.0871 -0.0956,-0.89662 1.95937,-0.843 0.69889,-0.305"},"45065":{"name":"McCormick, SC","path":"m 787.04611,386.59614 -1.95937,0.843 0.0956,0.89662 0.87487,1.0871 -0.68361,1.62391 -0.11217,1.15637 0.5144,0.42148 0.5144,0.42149 0.51441,0.42148 0.5144,0.42148 -0.40133,1.20107 -2.20006,-1.921 -0.76307,-1.438 -1.18204,-0.972 -0.49742,-0.355 -1.64024,-0.827 -0.0874,0 -0.26743,0.103 -0.11945,-0.03 -2.84368,-1.694 -0.78803,-1.198 1.05368,-1.551 0.79337,-0.249 0.70067,0.305 0.2086,-0.01 1.21413,-0.121 0.92353,-0.291 0.92531,1.849 0.73097,-1.09911 0.73098,0.73011 0.91826,0.0139 0.25309,-0.33258 1.99325,-0.0933 0.0713,0.701"},"45047":{"name":"Greenwood, SC","path":"m 781.78308,376.70514 0.33874,0.353 1.61707,1.18 2.76345,1.439 1.60636,0.916 1.62954,1.343 -1.99324,4.355 -0.69889,0.305 -0.0713,-0.701 -1.99325,0.0933 -0.25309,0.33258 -0.91826,-0.0139 -0.73097,-0.73011 -0.73098,1.09911 -0.92531,-1.849 0.60974,-0.682 0.36014,-0.491 0.24247,-0.651 0.0802,-0.675 -0.0874,-0.651 -0.24247,-0.624 -0.40115,-0.531 -0.27456,-0.259 -0.36727,-0.264 -0.26565,-0.105 -0.71671,-1.423 1.42273,-1.766"},"45059":{"name":"Laurens, SC","path":"m 788.46884,371.39214 4.13269,0.804 -0.85399,2 -1.1553,2.236 -0.50099,0.497 -1.12518,1.09469 -0.37599,1.44431 -0.48138,1.125 -1.60636,-0.916 -2.76345,-1.439 -1.61707,-1.18 -0.33874,-0.353 -1.50831,-1.519 1.27654,-1.398 -0.2086,-1.166 0.57052,-2.667 0.46533,-2.122 1.59515,0.94419 0.38627,0.70194 2.58799,1.16164 1.52087,0.75123"},"45001":{"name":"Abbeville, SC","path":"m 780.27477,375.18614 1.50831,1.519 -1.42273,1.766 0.71671,1.423 0.26565,0.105 0.36727,0.264 0.27456,0.259 0.40115,0.531 0.24247,0.624 0.0874,0.651 -0.0802,0.675 -0.24247,0.651 -0.36014,0.491 -0.60974,0.682 -0.92353,0.291 -1.21413,0.121 -0.2086,0.01 -0.70067,-0.304 -0.79337,0.249 -1.05368,1.551 -3.34288,-4.122 7.08869,-7.441"},"45007":{"name":"Anderson, SC","path":"m 770.01257,373.39414 1.08512,-1.71007 4.85184,-3.71493 0.61732,0.39262 0.12943,0.75212 0.18571,2.47926 0.3227,0.74 0.5677,0.63514 0.25955,0.73786 2.24285,1.48 -7.08869,7.441 -0.7078,-1.841 -1.99147,-2.803 -0.62578,-0.966 0.007,-0.06 -0.19255,-0.146 -0.39402,-0.112 -0.67392,0.09 -0.74881,0.185 -0.016,0 -0.2086,0.105 2.37835,-3.688"},"45087":{"name":"Union, SC","path":"m 790.01102,363.71814 1.28545,0.17 2.51563,0.112 0.36192,0.105 0.22465,0.121 0.58834,0.448 -0.32983,0.467 0.88919,0.94085 -0.53524,0.81699 0.45566,0.3525 0.14601,0.66216 0.23891,0.69312 0.8737,0.42992 -0.0862,0.8944 -0.0708,0.75506 0.26743,1.775 -0.0392,-0.02 -0.24961,0 -0.55447,0.154 -0.28347,0.139 -0.65967,0.873 -2.44788,-1.413 -4.13269,-0.804 0.27991,-2.5 0.19433,-3.245 0.59548,-1.134 0.47246,-0.795"},"45025":{"name":"Chesterfield, SC","path":"m 816.13542,361.87614 7.29728,-1.057 3.29281,3.4119 -0.40812,2.5411 -0.72137,0.91318 -3.12785,0.66982 -4.03285,3.641 -1.24901,-2.99063 -1.92628,-2.31337 -3.59783,-4.152 4.47322,-0.664"},"45057":{"name":"Lancaster, SC","path":"m 804.3239,357.64414 1.49405,1.526 1.31754,1.327 0.12837,2.346 0.009,0.217 0.37797,0.07 4.01146,-0.592 3.59783,4.152 -2.4354,1.678 0.78263,0.94309 -2.26063,1.04991 -0.86305,-0.59568 -0.42615,0.77211 -0.37701,0.0388 -0.18806,-1.23601 -2.39612,2.34973 -0.2817,-1.952 -0.68997,-2.043 0.0232,-0.786 0.26565,-0.949 -0.40293,-1.157 -0.40115,-1.029 -0.20146,-0.313 0.52831,-0.88554 -0.12375,-2.00336 -1.36587,-1.58438 -0.12268,-1.35172"},"45023":{"name":"Chester, SC","path":"m 805.40789,363.46914 0.20146,0.313 0.40115,1.029 0.40293,1.157 -0.26565,0.949 -0.0232,0.786 0.68997,2.043 -2.67609,0.273 -4.32346,0.344 -3.2466,0.323 0.0708,-0.75506 0.0862,-0.8944 -0.87371,-0.42992 -0.2389,-0.69312 -0.14601,-0.66216 -0.45566,-0.3525 0.53524,-0.81699 -0.88919,-0.94085 10.75071,-1.672"},"45091":{"name":"York, SC","path":"m 796.23146,356.89714 5.30225,-0.483 0.4393,0.65798 -0.40924,1.41429 0.55086,0.36675 1.51172,-1.51652 0.69755,0.3075 0.12268,1.35172 1.36587,1.58438 0.12375,2.00336 -0.52831,0.88554 -10.75071,1.672 0.32983,-0.467 -0.34766,-0.649 -0.60261,-1.583 -0.0654,-2.32436 1.33605,-0.5891 -0.33655,-1.81154 0.53664,-0.749 0.72385,-0.07"},"45021":{"name":"Cherokee, SC","path":"m 788.04452,357.75614 7.46309,-0.788 -0.53664,0.749 0.33655,1.81154 -1.33605,0.5891 0.0654,2.32436 0.60261,1.583 0.34766,0.649 -0.58834,-0.448 -0.22465,-0.121 -0.36192,-0.105 -2.51563,-0.112 -1.28545,-0.17 -0.9467,-0.506 -1.00376,-2.079 -1.99325,-3.175 1.97721,-0.202"},"45083":{"name":"Spartanburg, SC","path":"m 784.30584,358.15014 1.76147,-0.192 1.99325,3.175 1.00376,2.079 0.9467,0.506 -0.47246,0.795 -0.59548,1.134 -0.19433,3.245 -0.27991,2.5 -1.52087,-0.75123 -2.58799,-1.16164 -0.38627,-0.70194 -1.59515,-0.94419 -1.64737,-1.31 -0.0713,-0.184 -0.41897,-3.6 -0.5313,-4.114 4.59624,-0.475"},"45045":{"name":"Greenville, SC","path":"m 777.11018,358.74414 2.59942,-0.119 0.5313,4.114 0.41897,3.6 0.0713,0.184 1.64737,1.31 -0.46533,2.122 -0.57052,2.667 0.2086,1.166 -1.27654,1.398 -2.24285,-1.48 -0.25955,-0.73786 -0.5677,-0.63514 -0.3227,-0.74 -0.18571,-2.47926 -0.12943,-0.75212 -0.61732,-0.39262 0.0909,-0.113 -0.15332,-0.779 -0.20147,-0.538 -1.33002,-2.917 -0.83347,0.13345 0.0186,-1.28671 -2.95709,0.86182 -0.59609,-0.32756 3.29474,-2.25 3.82783,-2.009"},"46105":{"name":"Perkins, SD","path":"m 411.9071,124.60514 15.07595,1.045 -0.67571,10.824 -0.62757,9.962 -15.54841,-1.084 0.28883,-3.977 0.29774,-3.978 0.69888,-7.939 0.12124,0 0.36905,-4.86"},"46063":{"name":"Harding, SD","path":"m 394.24599,123.20714 16.80177,1.334 0.85934,0.06 -0.36905,4.86 -0.12124,0 -0.69888,7.939 -0.29774,3.978 -17.5167,-1.389 1.23731,-15.326 0.10519,-1.453"},"46033":{"name":"Custer, SD","path":"m 390.01168,171.16314 11.22494,0.843 11.36937,0.868 -0.0464,0.337 -0.24247,0.869 -2.02534,2.499 -0.41623,0.70763 -1.26323,-0.50763 -0.64192,1.37645 -0.97336,0.0876 -0.21751,2.973 -17.49174,-1.413 0.0481,-0.58 0.67571,-8.06"},"46047":{"name":"Fall River, SD","path":"m 389.28783,179.80314 17.49174,1.413 -0.81121,10.969 -8.42941,-0.651 -9.1586,-0.749 0.90748,-10.982"},"46113":{"name":"Shannon, SD","path":"m 421.42941,177.04514 -0.32805,5.166 0.46533,0.02 -0.12837,2.001 -0.353,6.01 0.45641,0.03 -0.2086,2.986 -11.87748,-0.817 -3.48729,-0.265 0.81121,-10.969 0.21751,-2.973 0.97336,-0.0875 0.64192,-1.37645 1.26323,0.50763 0.41623,-0.70763 10.4708,0.731 0.66679,-0.265"},"46007":{"name":"Bennett, SD","path":"m 436.12739,185.13014 -0.49207,9.03 -6.66081,-0.346 -4.17904,-0.321 -3.46234,-0.226 0.2086,-2.986 -0.45641,-0.03 0.353,-6.01 14.68907,0.893"},"46095":{"name":"Mellette, SD","path":"m 439.42035,174.85214 0.1141,-0.122 0.37619,-0.09 4.07348,3.12322 1.55682,0.35277 1.78232,-0.8403 1.98579,0.96646 1.18013,-0.0824 0.63928,-0.11477 0.15332,0.275 1.79179,0.151 -0.0571,7.474 -16.88913,-0.818 0.49029,-8.92 0.23177,-0.522 0.13728,-0.195 1.23731,-0.698 0.82726,-0.138 0.27277,0.105 0.0963,0.09"},"46121":{"name":"Todd, SD","path":"m 436.12739,185.13014 16.88913,0.818 -0.1355,9.05 -1.33359,-0.07 -1.19809,-0.06 -3.26265,-0.154 -6.07424,-0.281 -5.37713,-0.282 0.49207,-9.03"},"46123":{"name":"Tripp, SD","path":"m 453.07357,178.47414 0.47424,0.459 1.8741,0.46584 1.21062,-0.45105 2.57962,0.61256 1.9812,-0.78063 1.27226,-0.58812 0.68474,0.0384 -0.20147,5.601 1.49583,0.06 -0.43502,11.574 -11.12867,-0.467 0.1355,-9.05 0.0571,-7.474"},"46053":{"name":"Gregory, SD","path":"m 468.36524,184.02814 -0.2169,0.87449 0.84464,0.69732 1.62746,0.0745 0.50353,0.67054 0.62422,0.99611 1.72982,2.52013 1.78998,0.40089 0.2557,1.8255 1.67275,0.7826 1.28825,1.39125 2.22686,0.4656 0.65424,1.27902 -12.67086,-0.371 -4.68538,-0.168 0.43502,-11.574 3.92053,0.137"},"46015":{"name":"Brule, SD","path":"m 474.84241,174.18314 1.9772,0.06 -0.0802,10.054 -8.36522,-0.273 0.0963,-0.114 0.1355,-0.239 0.0571,-0.21 -0.7025,-0.95933 0.0134,-1.26358 -0.45201,-0.54109 -0.82208,-0.22221 -0.59073,0.0702 -0.34783,-0.49658 0.32018,-0.37513 0.68454,-0.27392 0.0368,-1.63017 0.74527,-0.43586 0.62382,-0.77998 0.44163,-0.53708 -0.0967,-0.46984 -0.84804,-0.58529 0.0866,-0.97314 7.08691,0.192"},"46003":{"name":"Aurora, SD","path":"m 484.69277,174.39314 0.0571,2.008 -0.12124,8.124 -6.40407,-0.174 -1.48513,-0.05 0.0802,-10.054 7.87316,0.146"},"46035":{"name":"Davison, SD","path":"m 490.67251,176.54714 -0.11232,8.1 -2.49958,-0.03 -3.43203,-0.09 0.12124,-8.124 5.92269,0.146"},"46043":{"name":"Douglas, SD","path":"m 478.22451,184.35114 6.40407,0.174 3.43203,0.09 -0.0713,6.949 -9.16217,-4.168 -0.27278,-0.08 -0.43502,0 0.025,-1.334 0.0802,-1.645"},"46023":{"name":"Charles Mix, SD","path":"m 468.37416,184.02814 8.36522,0.273 1.48513,0.05 -0.0802,1.645 -0.025,1.334 0.43502,0 0.27278,0.08 9.16217,4.168 0.66547,0.24547 -0.18409,0.44153 -0.0785,0.67708 -0.22093,1.3714 -0.1229,1.66548 0.37764,0.89312 -0.43924,1.38326 -0.0167,0.6933 -0.89896,0.88936 -0.24068,0.03 -2.36052,-1.07 -3.10398,-2.784 -0.65424,-1.27902 -2.22686,-0.4656 -1.28825,-1.39125 -1.67275,-0.7826 -0.2557,-1.8255 -1.78998,-0.40089 -1.72982,-2.52013 -0.62422,-0.99611 -0.50353,-0.67054 -1.62746,-0.0746 -0.84464,-0.69732 0.2169,-0.87449 0.009,0"},"46009":{"name":"Bon Homme, SD","path":"m 488.47067,192.25114 7.62246,0.135 0.0255,6.7757 -0.65847,0.72603 -0.41893,-0.67338 -0.51858,-0.13525 -0.50899,0.68617 -0.56878,-0.0513 -0.51065,-0.57968 -0.79832,0.12645 -0.19682,0.62334 -0.43219,0.54489 -0.353,0.506 -0.47425,0.431 -0.22464,0.14 -0.85221,0.128 -0.27991,0.01 -0.29774,-0.05 -0.36192,-0.16 -1.83279,-1.582 0.24068,-0.03 0.89896,-0.88936 0.0167,-0.6933 0.43924,-1.38326 -0.37764,-0.89312 0.1229,-1.66548 0.22093,-1.3714 0.0785,-0.67708"},"46135":{"name":"Yankton, SD","path":"m 496.09313,192.38614 3.76294,0.05 4.21513,0.0254 0.0116,1.97335 -0.0142,6.68575 -0.96526,-0.68225 -0.0324,-0.828 -1.05,-0.1303 -1.05,-0.45096 -0.81062,0.17405 -0.81063,0.34897 -1.04476,-0.2426 -0.53431,0.18914 -0.91491,0.23824 -0.11689,-0.48611 -0.62025,-0.081 -0.0255,-6.7757"},"46067":{"name":"Hutchinson, SD","path":"m 488.06061,184.61514 2.49958,0.03 5.94587,0.103 3.42311,0.06 -0.0731,7.628 -3.76294,-0.05 -7.62246,-0.135 0.18409,-0.44153 -0.66547,-0.24547 0.0713,-6.949"},"46061":{"name":"Hanson, SD","path":"m 492.60158,176.60214 4.0168,0.1 -0.11232,8.051 -5.94587,-0.103 0.11232,-8.1 1.92907,0.06"},"46087":{"name":"McCook, SD","path":"m 500.57992,176.77214 3.97758,0.06 -0.1034,8.044 -4.52493,-0.07 -3.42311,-0.06 0.11232,-8.051 3.96154,0.07"},"46125":{"name":"Turner, SD","path":"m 504.4541,184.87114 3.41419,0.02 -0.0891,9.628 -3.69631,-0.0813 -0.0116,-1.97335 -4.21513,-0.0254 0.0731,-7.628 4.52493,0.07"},"46027":{"name":"Clay, SD","path":"m 507.77915,194.51514 1.98612,0.02 -0.0802,8.782 -3.52117,-1.315 -2.09519,-0.88751 0.0142,-6.68575 3.69631,0.0813"},"46127":{"name":"Union, SD","path":"m 515.63804,194.57714 -1.16422,4.019 -0.6757,1.801 -0.67393,3.084 0.44037,0.337 0.55447,0.515 0.43502,0.699 0.60975,1.606 0.60439,1.666 -3.24661,-0.829 -1.20522,-1.792 -0.0499,-0.209 0.009,-0.21 0.0642,-0.271 -0.0963,-0.385 -0.18541,-0.419 -1.37281,-0.869 0.0802,-8.782 5.87277,0.04"},"46083":{"name":"Lincoln, SD","path":"m 507.86829,184.88714 5.42527,0.04 0.0718,1.388 1.13892,1.28919 0.0458,1.68211 -1.02139,0.0616 0.052,1.13109 0.37083,0.836 1.19809,0 0.15868,0.08 0.64361,2.314 -0.0481,0.158 -0.26565,0.708 -5.87277,-0.04 -1.98612,-0.02 0.0891,-9.628"},"46099":{"name":"Minnehaha, SD","path":"m 508.54222,176.86814 7.20814,0.02 -0.0321,8.06 -2.42471,-0.02 -5.42527,-0.04 -3.41419,-0.02 0.1034,-8.044 3.98472,0.04"},"46085":{"name":"Lyman, SD","path":"m 464.33239,167.89314 0.6598,1.09929 -0.34931,0.8046 -0.0947,0.41711 0.29774,0.443 0.44215,0.442 0.46533,0.112 0.54734,0.07 0.36192,0.147 0.81121,0.747 0.36905,0.394 0.12124,0.32 -0.009,0.275 -0.0874,0.528 -0.11232,0.297 -0.0866,0.97414 0.84804,0.58529 0.0967,0.46984 -0.44163,0.53707 -0.62382,0.77999 -0.74527,0.43585 -0.0368,1.63018 -0.68454,0.27391 -0.32018,0.37514 0.34783,0.49658 0.59073,-0.0702 0.82208,0.22221 0.45201,0.54109 -0.0134,1.26358 0.7025,0.95933 -0.0571,0.21 -0.1355,0.239 -0.0963,0.114 -0.009,0 -3.92053,-0.137 -1.49583,-0.06 0.20147,-5.601 -0.68474,-0.0384 -1.27226,0.58812 -1.9812,0.78063 -2.57962,-0.61256 -1.21062,0.45105 -1.8741,-0.46584 -0.47424,-0.459 -1.79179,-0.151 0.10519,-2.468 -0.41897,-0.545 0.3227,-7.41 0.0321,-0.602 7.06373,0.297 0.0392,0.161 0.54556,1.084 0.57592,0.62163 1.26143,-0.20607 0.6818,-0.004 1.26562,0.79212 0.61892,-0.009 0.29774,-0.12 0.37975,-0.38111 -0.33853,-0.67001 -0.94963,-0.36611 -0.46943,-0.217 -0.0675,-0.40331 0.20803,-0.31836 0.4903,-0.3041 1.40668,0.635"},"46075":{"name":"Jones, SD","path":"m 451.2907,167.90014 -0.3227,7.41 0.41897,0.545 -0.10519,2.468 -0.15332,-0.275 -0.63928,0.11477 -1.18013,0.0824 -1.98579,-0.96646 -1.78232,0.8403 -1.55682,-0.35277 -4.07348,-3.12322 -0.37619,0.09 -0.1141,0.122 0.18542,-3.529 0.49029,-3.977 11.19464,0.554"},"46071":{"name":"Jackson, SD","path":"m 424.04131,170.42314 15.56446,0.9 -0.18542,3.529 -0.0963,-0.09 -0.27277,-0.106 -0.82726,0.138 -1.23731,0.699 -0.13728,0.194 -0.23177,0.522 -0.49029,8.92 -14.68907,-0.893 0.12837,-2.001 -0.46533,-0.02 0.32805,-5.166 0.69888,0.345 0.66858,0 0.0463,0 0.58835,-0.387 0.41719,-6.596 0.19255,0"},"46117":{"name":"Stanley, SD","path":"m 446.2113,153.75814 1.34072,0.796 0.0499,0.05 0.23356,0.706 0,0.314 -0.24247,0.955 -0.17651,0.46 -0.16046,0.248 -0.0642,0.515 0.0731,0.328 0.11232,0.193 0.18363,0.217 0.21038,0.147 0.23178,0.103 1.07685,0.266 0.32953,0.66825 -1.06942,0.38275 -0.11945,0.17 -0.0963,0.362 -0.025,0.256 0.0161,0.09 0.15332,0.208 0.46681,0.32522 1.22339,-0.31716 1.32332,0.53935 0.28123,1.95259 0.0642,0.06 0.35301,0.161 1.52613,0.442 0.58835,0.09 0.67393,0.01 0.2496,0.07 1.05189,0.355 1.77544,1.15859 0.99692,-0.005 0.22465,0.2 0.12123,0.314 -0.016,0.05 -0.78625,0.989 -7.06373,-0.297 -0.0321,0.602 -11.19464,-0.554 -1.96829,-0.1 0.21573,-4.034 0.6347,-7.962 0.35479,-1.302 1.83992,0.635 0.54556,-0.154 0.25851,-0.433 1.01267,-0.403 1.35677,-0.216 0.89908,0.57269 0.9658,-0.19469"},"46055":{"name":"Haakon, SD","path":"m 430.4123,157.34148 0.92077,0.26172 1.54607,0.18156 0.95141,-0.73453 0.21005,-0.72426 1.4874,-0.32904 0.22723,-0.6391 2.50849,-0.22869 0.64313,-0.625 0.42611,-0.555 -0.35479,1.302 -0.6347,7.962 -0.21573,4.035 1.96829,0.1 -0.49029,3.977 -15.56446,-0.9 0.50634,-8.035 0.1034,0 0.25048,-3.8505 1.2829,-0.27664 2.11395,0.1089 z"},"46103":{"name":"Pennington, SD","path":"m 390.58219,164.55714 9.8985,0.82 17.50956,1.286 -0.23397,-1.0805 0.82767,-1.0805 0.20218,-2.10518 0.7778,-0.627 0.37143,-1.68082 0.21751,-0.233 0.91545,-0.11187 0.44203,0.74797 0.59346,-0.0484 0.10555,-0.41431 0.8585,0.1312 1.22306,-1.48356 0.60261,-0.137 -0.24248,3.849 -0.1034,0 -0.50634,8.036 -0.19255,0 -0.41719,6.596 -0.58835,0.387 -0.0463,0 -0.66858,0 -0.69888,-0.345 -0.66679,0.265 -10.4708,-0.731 2.02534,-2.499 0.24247,-0.869 0.0464,-0.337 -11.36937,-0.868 -11.22494,-0.843 0.57051,-6.606"},"46081":{"name":"Lawrence, SD","path":"m 391.40053,154.69114 2.53168,-0.339 1.37459,-0.121 4.12913,0.346 -0.60975,6.324 -0.13728,1.663 1.99325,0.144 -0.20146,2.669 -9.8985,-0.82 0.0784,-0.898 0.73989,-8.968"},"46019":{"name":"Butte, SD","path":"m 410.42019,141.37514 -0.28883,3.977 -0.0232,0 -0.51524,7.055 -0.29774,2.926 -9.85927,-0.756 -4.12913,-0.346 -1.37459,0.121 -2.53168,0.339 0.80408,-9.788 0.69888,-4.917 17.5167,1.389"},"46093":{"name":"Meade, SD","path":"m 425.67977,146.43614 -0.7702,12.102 -0.016,0 -0.60261,0.138 -1.22306,1.48356 -0.8585,-0.1302 -0.10555,0.41431 -0.59346,0.0484 -0.44203,-0.74797 -0.91545,0.11087 -0.21751,0.234 -0.37143,1.67982 -0.7778,0.627 -0.20218,2.10518 -0.82767,1.0805 0.23397,1.0805 -17.50956,-1.285 0.20146,-2.669 -1.99325,-0.145 0.13728,-1.663 0.60975,-6.324 9.85927,0.756 0.29774,-2.926 0.51524,-7.055 0.0232,0 15.54841,1.084"},"46137":{"name":"Ziebach, SD","path":"m 426.30734,136.47414 8.54886,0.513 -1.07507,9.941 -0.0571,1.027 5.92269,0.323 -0.31378,5.673 -0.42611,0.555 -0.64313,0.625 -2.50849,0.22869 -0.22723,0.6391 -1.4874,0.32904 -0.21005,0.72426 -0.95141,0.73453 -1.54607,-0.18156 -0.92077,-0.26172 -2.11193,1.03004 -2.11193,-0.10927 -1.27887,0.27589 0.7702,-12.102 0.62757,-9.962"},"46041":{"name":"Dewey, SD","path":"m 453.08248,137.91914 0.14025,1.10988 0.86351,1.04412 -0.007,0.137 -0.16225,0.459 -0.44215,0.513 -0.0802,0.12 -0.0713,0.194 0.12837,0.61 0.71493,1.069 0.0321,0.257 -0.42611,1.744 -0.82012,1.92 0.64394,1.21349 -0.16803,0.4239 -0.97242,-0.37644 -0.97257,0.15105 -0.23356,0.401 -0.0232,0.435 0.0713,1.148 0.041,0.25 0.2817,0.884 -0.025,0.176 -0.15333,0.234 -0.27278,0.296 -1.90589,1.695 -0.30308,0.122 -0.6044,-0.138 -0.40827,-0.144 -0.47425,-0.522 -0.25851,-0.443 -0.12837,-0.151 -0.19255,-0.186 -0.29774,-0.119 -0.0713,0 -0.20147,0.128 -0.16046,0.289 -0.0642,0.177 -0.0571,0.233 0.009,0.234 0.0553,0.144 0.10519,0.105 -0.9658,0.19469 -0.89908,-0.57269 -1.35677,0.216 -1.01267,0.403 -0.25851,0.433 -0.54556,0.154 -1.83992,-0.635 0.31378,-5.673 -5.92269,-0.323 0.0571,-1.027 1.07507,-9.941 18.22628,0.932"},"46129":{"name":"Walworth, SD","path":"m 451.7792,135.05114 11.49951,0.529 0.15333,0 -0.33874,7.988 -8.92683,-0.402 -0.71493,-1.069 -0.12837,-0.61 0.0713,-0.194 0.0802,-0.12 0.44215,-0.513 0.16225,-0.458 0.007,-0.138 -0.86351,-1.04362 -0.14025,-1.10938 -0.46431,-0.71989 -1.22269,-0.0932 -0.59827,-0.55116 0.71995,-0.91886 0.26204,-0.58585"},"46107":{"name":"Potter, SD","path":"m 454.16647,143.17514 8.92683,0.402 2.19471,0.09 -0.28169,8.003 -1.65451,-0.07 -11.90065,-0.507 -0.11233,-0.353 -0.041,-0.249 -0.0713,-1.148 0.0232,-0.435 0.23356,-0.401 0.97257,-0.15105 0.97242,0.37644 0.16803,-0.4239 -0.64394,-1.21349 0.82012,-1.92 0.42611,-1.744 -0.0321,-0.257"},"46119":{"name":"Sully, SD","path":"m 463.35181,151.59614 -0.34587,8.044 -13.926,-0.586 -1.07685,-0.266 -0.23178,-0.103 -0.21038,-0.147 -0.18363,-0.217 -0.11232,-0.193 -0.0731,-0.328 0.0642,-0.515 0.16046,-0.248 0.17651,-0.46 0.24247,-0.955 0,-0.314 -0.23356,-0.706 -0.0499,-0.05 -1.34072,-0.795 -0.10519,-0.106 -0.0553,-0.144 -0.009,-0.234 0.0571,-0.233 0.0642,-0.177 0.16046,-0.289 0.20147,-0.128 0.0713,0 0.29774,0.12 0.19255,0.185 0.12837,0.152 0.25851,0.442 0.47425,0.522 0.40827,0.144 0.6044,0.138 0.30308,-0.121 1.90589,-1.696 0.27278,-0.296 0.15333,-0.233 0.025,-0.177 -0.16937,-0.531 11.90065,0.506"},"46065":{"name":"Hughes, SD","path":"m 463.00594,159.64014 -0.0802,7.618 -0.4903,0.3041 -0.20803,0.31836 0.0675,0.40331 0.46943,0.217 0.94963,0.36611 0.33853,0.67001 -0.37975,0.38111 -0.29774,0.12 -0.61892,0.009 -1.26562,-0.79212 -0.6818,0.004 -1.26143,0.20607 -0.57592,-0.62163 -0.54556,-1.084 -0.0392,-0.161 0.78625,-0.989 0.016,-0.05 -0.12123,-0.314 -0.22465,-0.2 -0.99692,0.005 -1.77544,-1.15859 -1.05189,-0.355 -0.2496,-0.07 -0.67393,-0.01 -0.58835,-0.09 -1.52613,-0.442 -0.35301,-0.161 -0.0642,-0.06 -0.28123,-1.95259 -1.32332,-0.53935 -1.22339,0.31716 -0.46681,-0.32522 -0.15332,-0.208 -0.0161,-0.09 0.025,-0.257 0.0963,-0.362 0.11945,-0.169 1.06942,-0.38325 -0.32953,-0.66875 13.926,0.586"},"46017":{"name":"Buffalo, SD","path":"m 464.33239,167.89314 4.56415,0.112 6.14555,0.152 -0.19968,6.026 -7.08691,-0.193 0.11232,-0.297 0.0874,-0.528 0.009,-0.275 -0.12124,-0.32 -0.36905,-0.394 -0.81121,-0.747 -0.36192,-0.147 -0.54734,-0.07 -0.46533,-0.112 -0.44215,-0.442 -0.29774,-0.443 0.0947,-0.41711 0.34931,-0.8046 -0.6598,-1.09929"},"46073":{"name":"Jerauld, SD","path":"m 475.04209,168.15714 3.72085,0.112 6.07602,0.161 -0.14619,5.963 -7.87316,-0.146 -1.9772,-0.06 0.19968,-6.026"},"46111":{"name":"Sanborn, SD","path":"m 484.83896,168.43014 7.87494,0.208 0.0713,0 -0.18363,7.964 -1.92907,-0.06 -5.92269,-0.146 -0.0571,-2.008 0.14619,-5.963"},"46097":{"name":"Miner, SD","path":"m 500.68511,168.77714 -0.10519,7.995 -3.96154,-0.07 -4.0168,-0.1 0.18363,-7.964 7.8999,0.139"},"46079":{"name":"Lake, SD","path":"m 500.68511,168.77714 3.95975,0.03 3.96332,0.05 -0.066,8.01 -3.98472,-0.04 -3.97758,-0.06 0.10519,-7.995"},"46101":{"name":"Moody, SD","path":"m 515.7985,168.88114 -0.0481,8.003 -7.20814,-0.02 0.066,-8.01 7.19032,0.02"},"46011":{"name":"Brookings, SD","path":"m 504.7661,160.81314 3.97758,0.02 7.10474,0.06 -0.0499,7.987 -7.19032,-0.02 -3.96332,-0.05 0.12124,-7.995"},"46057":{"name":"Hamlin, SD","path":"m 508.81678,154.83414 -0.0731,6.002 -3.97758,-0.02 -5.96905,-0.105 0.11232,-5.987 9.90741,0.113"},"46077":{"name":"Kingsburg, SD","path":"m 498.79705,160.70814 5.96905,0.105 -0.12124,7.995 -3.95975,-0.03 -7.8999,-0.139 -0.0713,0 0.16759,-8.042 5.91556,0.112"},"46005":{"name":"Beadle, SD","path":"m 490.88111,158.53814 2.05163,0.097 -0.0513,1.96096 -0.16759,8.042 -7.87494,-0.208 -6.07602,-0.161 0.20146,-10.077 11.91671,0.346"},"46069":{"name":"Hyde, SD","path":"m 465.00632,151.66914 4.25927,0.16 -0.29774,8.043 0.20147,0 -0.27278,8.124 -4.56415,-0.112 -1.40668,-0.635 0.0802,-7.618 0.34587,-8.044 1.65451,0.07"},"46059":{"name":"Hand, SD","path":"m 469.26559,151.82914 9.69881,0.305 0,6.058 -0.20146,10.077 -3.72085,-0.112 -6.14555,-0.152 0.27278,-8.124 -0.20147,0 0.29774,-8.043"},"46045":{"name":"Edmunds, SD","path":"m 463.43204,135.58914 15.85328,0.587 -0.19255,7.98 -13.80476,-0.49 -2.19471,-0.09 0.33874,-7.988"},"46049":{"name":"Faulk, SD","path":"m 479.09277,144.15614 0.0802,0 -0.2086,7.971 -9.69881,-0.305 -4.25927,-0.16 0.28169,-8.003 13.80476,0.49"},"46115":{"name":"Spink, SD","path":"m 491.11466,144.53214 -0.0481,2.009 -0.1462,5.666 0,0.328 0.0891,0 -0.12836,5.994 -11.91671,-0.345 0,-6.059 0.2086,-7.971 11.94166,0.369"},"46025":{"name":"Clark, SD","path":"m 498.98068,146.72714 -0.0713,7.994 -0.11232,5.987 -5.91556,-0.112 0.0512,-1.96096 -2.05163,-0.097 0.12836,-5.994 -0.0891,0 0,-0.328 0.1462,-5.666 7.91415,0.186"},"46029":{"name":"Codington, SD","path":"m 498.98068,146.72714 4.35556,0.06 5.56968,0.1 -0.0178,3.985 -0.0713,3.969 -9.90741,-0.113 0.0713,-7.994"},"46039":{"name":"Deuel, SD","path":"m 515.89477,150.89714 -0.007,3.962 -0.025,4.018 -0.0143,2.017 -7.10474,-0.06 0.0731,-6.002 0.0713,-3.969 7.00668,0.03"},"46051":{"name":"Grand, SD","path":"m 515.64695,142.86914 0.26565,1.326 -0.0178,6.702 -7.00668,-0.03 0.0178,-3.985 -5.56968,-0.1 0.0392,-3.361 3.55326,0.06 0.35011,-0.90393 8.36812,0.29693"},"46037":{"name":"Day, SD","path":"m 491.30721,136.52914 9.78618,0.201 0.12836,0.66 2.22681,0.05 -0.11232,9.346 -4.35556,-0.06 -7.91415,-0.186 0.24068,-10.012"},"46109":{"name":"Roberts, SD","path":"m 514.21709,128.88014 -0.0891,1.004 0,0.05 -0.009,0.03 -0.0713,0.61 -0.0571,0.497 -0.0392,0.209 -0.016,0.114 -0.016,0.05 -0.016,0.03 -0.025,0.06 -1.12499,1.671 -0.32805,0.33 -0.61866,0.337 -0.55625,0.362 -1.46909,1.18 -0.025,0.03 -0.0321,0.04 -0.025,0.02 -0.0553,0.128 -0.22464,0.771 0.0642,0.09 0.28883,0.369 1.12499,1.503 1.11345,2.46032 1.24885,0.15868 1.5511,0.756 0.52951,0.426 0.30665,0.706 -8.36812,-0.29693 -0.35011,0.90393 -3.55326,-0.06 0.0731,-5.985 0.0874,-8.663 10.68117,0.105"},"46091":{"name":"Marshall, SD","path":"m 503.53592,128.77514 -0.0874,8.663 -2.22681,-0.05 -0.12836,-0.66 -9.78618,-0.201 0.18364,-7.971 12.04507,0.217"},"46013":{"name":"Brown, SD","path":"m 479.51888,128.19714 11.49773,0.345 0.47424,0.02 -0.18364,7.971 -0.19255,8.003 -11.94166,-0.369 -0.0802,0 0.19255,-7.98 0.23356,-7.978"},"46089":{"name":"McPherson, SD","path":"m 463.57645,127.60214 11.43355,0.435 4.50888,0.16 -0.23356,7.979 -15.85328,-0.587 -0.15333,0 0.29774,-7.978"},"46021":{"name":"Campbell, SD","path":"m 460.97346,127.48314 2.60299,0.119 -0.29774,7.978 -11.49951,-0.529 0.25852,-0.908 0.1765,-0.338 0.32092,-0.209 0.69175,0.26213 0.41072,-0.29213 0.33994,-0.87602 -0.61162,-0.5579 -0.0535,-0.81326 -0.6539,-1.20341 0.49772,-1.02928 -0.38036,-0.28613 -0.5631,-0.20289 0.032,-0.73698 -0.82101,0.1283 -0.3755,-0.97943 9.92523,0.483"},"46031":{"name":"Corson, SD","path":"m 427.01514,125.65014 0.10341,0 0.0392,0 0.25852,0.02 1.93619,0.121 2.30525,0.136 2.42827,0.153 2.0093,0.112 0.93244,0.06 1.63846,0.09 4.66042,0.256 1.45482,0.08 1.92728,0.1 0.13015,0 0.36192,0.02 3.64776,0.185 0.19968,0 0.3755,0.97993 0.82101,-0.12805 -0.032,0.7371 0.5631,0.20302 0.38036,0.28613 -0.49772,1.02928 0.6539,1.20341 0.0535,0.81326 0.61162,0.5579 -0.33994,0.87602 -0.41072,0.29213 -0.69175,-0.26213 -0.32092,0.208 -0.1765,0.339 -0.25852,0.908 -0.26204,0.58572 -0.71995,0.91874 0.59827,0.55103 1.22269,0.0931 0.46431,0.71939 -18.22628,-0.932 -8.54886,-0.514 0.67571,-10.823 0.0321,0"},"47163":{"name":"Sullivan, TN","path":"m 782.02555,325.08314 -0.70884,0.875 -0.69418,0.21535 -0.19578,0.66977 -0.88474,1.09488 -1.56,1.52996 -0.50285,-0.0558 -1.26997,1.49821 -1.22193,-0.30377 -0.81347,0.72937 -0.8433,0.11 -0.28882,-0.08 -0.90927,-0.662 -0.63292,-0.128 -1.09468,0.346 -2.25711,0.444 -1.01267,0.159 -0.37636,-0.56038 1.17079,-1.17513 -0.0224,-2.16949 5.7141,-0.852 0.91461,-0.137 1.76861,-0.241 3.84743,-0.555 0.12837,-0.538 1.74543,-0.209"},"47091":{"name":"Johnson, TN","path":"m 782.02555,325.08314 3.26978,-0.442 -0.47424,0.63 -0.0874,4.713 0.0695,1.095 -0.38332,0.129 -0.0339,0 -0.28704,0.01 -0.48138,-0.154 -0.1141,-0.263 -0.0963,0.06 -0.0232,0.02 -0.9164,0.627 -0.84508,0.947 -0.1355,0.369 -0.19255,0.555 -0.3227,0.123 -0.61152,-0.523 -1.25336,-1.305 -0.27991,-0.553 1.42273,-2.403 0,-0.07 -0.7078,-0.706 0.88474,-1.09488 0.19578,-0.66977 0.69418,-0.21535 0.70884,-0.875"},"47109":{"name":"McNairy, TN","path":"m 665.35632,367.25414 0.3851,8.919 -7.57541,0.603 -0.35479,-5.832 1.25832,-0.30378 0.13945,-0.38822 0.20859,-0.884 0.0847,-0.15275 0.86578,0.006 2.4e-4,-0.31108 -0.45363,-0.0472 -0.0852,-0.47122 0.85813,-0.70233 0.73464,-0.38977 1.15538,-0.14945 2.7787,0.10422"},"47023":{"name":"Chester, TN","path":"m 660.32685,362.84314 0.91834,-0.23012 1.21926,1.65057 1.77566,0.54695 0.99329,-0.3257 0.0908,1.8913 0.0321,0.878 -2.7787,-0.10422 -1.15538,0.14945 -0.73464,0.38977 -0.85813,0.70233 0.0852,0.47122 0.45363,0.0472 -2.4e-4,0.31108 -0.86578,-0.006 -0.0847,0.15275 -0.20859,0.884 -0.13945,0.38822 -1.25832,0.30378 -0.38688,-1.72 -0.97345,-1.352 -0.0695,-1.002 0.65676,-0.0729 2.35975,-1.74838 0.94517,-1.74837 -0.0162,-0.4574"},"47069":{"name":"Hardeman, TN","path":"m 651.97054,367.11814 4.41082,-0.248 0.0695,1.002 0.97345,1.352 0.38688,1.72 0.35479,5.832 -0.68284,0.06 -3.62636,0.282 -3.37319,0.247 -0.40114,-9.312 -0.0247,-0.82926 1.91272,-0.10274"},"47047":{"name":"Fayette, TN","path":"m 644.68216,368.28914 5.40032,-0.238 0.40114,9.311 -2.88468,0.204 -5.44845,0.353 -0.11232,-3.095 -0.18542,-3.004 -0.0802,-2.702 1.00896,-0.76128 1.90068,-0.0677"},"47075":{"name":"Haywood, TN","path":"m 646.19939,358.56714 0.007,0.08 0.4584,0.25233 0.20146,0.209 0.46176,0.335 0.7916,0.371 0.38688,0 1.79158,0.70567 1.40669,0.537 0.26565,6.051 -1.91272,0.10324 0.0247,0.82976 -5.40032,0.238 -0.14139,-3.38558 -0.5206,-0.88088 0.14441,-0.07 0.41967,-0.46221 -0.11083,-1.8511 0.36391,-0.16915 0.16575,-1.02608 -0.007,-0.169 -0.23356,0 -0.016,-0.314 0.1034,-0.401 0.49921,-1.061 0.85043,0.06"},"47113":{"name":"Madison, TN","path":"m 660.09329,358.18914 0.23356,4.654 0.0162,0.4574 -0.94517,1.74837 -2.35975,1.74838 -0.65676,0.0729 -4.41082,0.248 -0.26565,-6.051 1.09475,0.26489 1.70849,-2.48498 -0.14142,-0.39891 3.86883,-0.153 1.85775,-0.106"},"47033":{"name":"Crockett, TN","path":"m 648.98779,354.14114 1.0305,0.659 0.19077,1.243 0.18542,0.46 0.35657,0.6071 2.88409,0.49145 0.73157,0.84645 0.14142,0.39891 -1.70849,2.48498 -1.09475,-0.26489 -1.40669,-0.537 -1.79158,-0.70567 -0.38688,0 -0.7916,-0.371 -0.46176,-0.335 -0.20146,-0.209 -0.4584,-0.25233 -0.007,-0.08 0.14441,-1.486 1.20588,-0.23048 0.17666,-0.735 1.26642,-1.34042 -0.005,-0.6341"},"47053":{"name":"Gibson, TN","path":"m 649.2784,349.35914 3.56784,-0.32393 -0.0164,-0.35907 0.69656,0.4413 1.16197,0.86261 0.77171,0.61723 1.21006,0.43286 1.34963,0.981 0.21573,6.292 -3.86883,0.153 -0.73157,-0.84645 -2.88409,-0.49145 -0.35657,-0.6071 -0.18542,-0.46 -0.19077,-1.243 -1.0305,-0.659 -0.0888,-0.59007 0.59736,-0.0856 -0.10897,-2.8907 -0.10898,-1.21568"},"47017":{"name":"Carroll, TN","path":"m 660.84745,349.74414 5.8964,-0.47615 0.005,0.70215 0.5158,6.2804 0.63771,0.002 0.0339,0.675 -7.22241,0.394 -0.27456,0.259 -0.24069,0.312 -0.10519,0.297 -1.85775,0.106 -0.21573,-6.292 0.84973,-0.17198 -0.15003,-1.20746 2.13515,-0.2434 -0.007,-0.63616"},"47183":{"name":"Weakley, TN","path":"m 654.97467,342.01514 5.48946,-0.396 0.38332,8.125 0.007,0.63616 -2.13515,0.2434 0.15003,1.20746 -0.84973,0.17198 -1.34963,-0.981 -1.21006,-0.43286 -0.77171,-0.61723 -1.16197,-0.86261 -0.69656,-0.4413 -0.1462,-4.314 0.0588,-0.07 0.34409,0.02 0.26387,0.07 0.25851,0.249 0.27991,0.03 1.24623,-0.506 -0.0642,-1.382 -0.29596,-0.731 0.19968,-0.02"},"47131":{"name":"Obion, TN","path":"m 654.63771,342.03814 0.13728,0 0.29596,0.731 0.0642,1.382 -1.24623,0.506 -0.27991,-0.03 -0.25851,-0.249 -0.26387,-0.06 -0.34409,-0.02 -0.0588,0.07 0.1462,4.314 0.0164,0.35907 -3.56784,0.32393 -6.04214,0.241 1.0429,-1.0286 0.35,-2.3078 0.6165,-1.5616 0.0302,-1.988 9.36185,-0.675"},"47095":{"name":"Lake, TN","path":"m 645.27586,342.71414 -0.0302,1.988 -0.6165,1.5616 -0.35,2.3078 -1.0429,1.0286 0.0584,0.4055 -2.71314,0.4055 -0.70839,-1.33342 1.54908,0.10591 1.05913,-0.64787 -0.37303,-0.77035 -1.08912,-0.80804 0.87453,-0.14623 0.80635,-0.26951 0.003,-1.26737 -0.69118,-0.94016 -0.26479,-1.25996 0.98949,-0.05 -0.0571,0.70638 0.47192,0.3608 0.63408,-0.33026 0.19546,-0.86002 1.29436,-0.184"},"47045":{"name":"Dyer, TN","path":"m 643.23626,349.60014 6.04214,-0.241 0.10898,1.21568 0.10897,2.8907 -0.59736,0.0855 0.0888,0.59007 0.005,0.6341 -1.26642,1.34042 -0.17666,0.735 -1.20588,0.23048 -0.22999,-0.409 -0.15333,-0.194 -0.91639,-0.827 -1.54219,0.08 -1.99266,0.4781 -0.69881,1.01816 0.22507,-1.03902 -0.45765,-0.43906 -0.89211,-0.45974 -0.0852,-0.56319 0.68122,-1.03568 0.14333,-1.20119 1.19693,-0.66454 0.14183,-0.83005 -1.18224,-0.58179 2.71314,-0.4055 -0.0584,-0.4055"},"47097":{"name":"Lauderdale, TN","path":"m 641.035,356.18601 2.4669,-0.45687 1.54219,-0.08 0.91639,0.827 0.15333,0.194 0.22999,0.409 -0.14441,1.486 -0.85043,-0.06 -0.49921,1.061 -0.1034,0.401 0.016,0.314 0.23356,0 0.007,0.169 -0.16575,1.02608 -0.36391,0.16915 0.11083,1.8511 -0.41967,0.46221 -0.14441,0.07 -0.9622,-0.37554 -1.48691,-0.795 -2.55307,0.256 -0.55448,0.2 -0.43502,0.323 -0.95561,0.882 -0.3548,0.426 -0.28791,0.23887 -0.56238,-0.76956 1.46509,-0.91437 0.28585,-0.72818 -0.54169,-0.7075 -0.93477,0.45107 -0.58307,-1.14195 0.69962,-0.62474 0.63755,0.0994 1.11935,-0.33327 0.4987,-0.58153 0.20906,-0.56085 1.24349,-0.18845 0.11767,-0.9926 -1.2014,-0.49515 0.21496,-0.66415 0.33517,-0.06 1.37704,0.24826 z"},"47167":{"name":"Tipton, TN","path":"m 641.57031,362.95703 -2.55273,0.25586 -0.55469,0.20117 -0.43555,0.32227 -0.95507,0.88086 -0.35352,0.42773 -0.28906,0.23242 0.25974,1.04501 -1.3141,-0.25856 -0.31257,-0.56062 -0.71,0.0594 -0.12156,1.07811 0.57793,0.64889 -0.26013,1.90576 5.75373,-0.65625 0.12696,0.0195 0.98047,0.41016 0.36328,0.25586 1.00824,-0.76084 1.89996,-0.0673 -0.14106,-3.38533 -0.52028,-0.88063 0,-0.002 -0.96171,-0.37662 z m -7.31031,6.26953 -0.77367,-0.59179 -0.35938,-0.98829 -0.51367,0.50391 -0.8418,0.28711 0.082,0.95508 0.33007,-0.0879 -0.002,-0.53125 0.58398,-0.2461 1.04688,0.89844 0.33594,-0.18555 z"},"47157":{"name":"Shelby, TN","path":"m 633.81231,369.32068 0.33666,-0.18554 6.15447,-0.701 0.12658,0.02 0.98058,0.41 0.36192,0.256 0.0802,2.702 0.18542,3.004 0.11232,3.095 -1.49405,0.11 -10.92899,0.669 -0.0321,-0.321 0.22464,-0.717 1.74222,-0.16275 0.58569,-1.81583 0.35021,-0.41971 1.05685,0.37181 0.59016,-0.46514 0.0595,-0.8249 -0.70142,-0.32742 0.54284,-0.86711 -0.15059,-0.62718 -0.53298,-0.566 -0.86517,0.0254 -0.26865,-0.41812 0.97029,-0.58638 0.14434,-0.75462 -0.1004,-0.41812 0.46921,-0.48046"},"47077":{"name":"Henderson, TN","path":"m 667.93614,356.92714 0.18541,4.809 -0.8219,1.934 0.10697,2.435 0.11946,-0.01 -2.20185,0.281 -0.0908,-1.8913 -0.99329,0.3257 -1.77566,-0.54695 -1.21926,-1.65057 -0.91834,0.23012 -0.23356,-4.654 0.10519,-0.297 0.24069,-0.312 0.27456,-0.259 7.22241,-0.394"},"47079":{"name":"Henry, TN","path":"m 660.96155,341.58714 7.97834,-0.554 -0.11571,1.159 1.54023,1.886 -1.89698,0.169 -0.025,0.03 -0.0731,0.763 0.041,0.362 0.40293,1.294 -1.44056,2.492 -0.624,0.779 -0.005,-0.70215 -5.8964,0.47615 -0.38332,-8.125 0.49742,-0.03"},"47005":{"name":"Benton, TN","path":"m 670.36441,344.07814 0.1765,0.153 0.74088,1.29039 0.0543,1.20961 0.7702,1.792 0.0752,0.91877 -1.22129,2.11992 0.0188,0.93513 -0.41971,0.34408 0.34291,0.82074 1.27715,-0.0372 0.22772,0.0989 -0.0191,0.63266 -0.12123,0.972 -0.0856,0.258 -0.29952,0.45 -0.0981,0.595 -0.97033,0.0845 -0.1814,-0.8 -0.81494,0.21604 -1.91464,0.12041 -0.63771,-0.002 -0.5158,-6.2804 0.624,-0.779 1.44056,-2.492 -0.40293,-1.294 -0.041,-0.362 0.0731,-0.763 0.025,-0.03 1.89698,-0.169"},"47039":{"name":"Decatur, TN","path":"m 667.90226,356.25214 1.91464,-0.12041 0.81494,-0.21604 0.1814,0.8 0.97033,-0.0845 -0.083,1.15422 -0.84132,0.96091 0.4227,1.0078 -0.26677,1.36472 1.31935,2.04703 -0.0869,0.6635 -0.43171,0.51574 -0.56305,0.49932 0.27425,0.64708 0.33845,0.24268 0.62455,0.0949 0.0579,0.18675 -0.26373,0.27864 -0.67723,0.18675 -0.71394,-0.75555 -1.06147,0.90104 -0.73749,-0.18506 -0.52308,0.25908 -0.42296,-0.51051 -0.62205,-0.097 -0.11946,0.01 -0.10697,-2.435 0.8219,-1.934 -0.18541,-4.809 -0.0339,-0.675"},"47071":{"name":"Hardin, TN","path":"m 665.32423,366.37614 2.20185,-0.281 0.62205,0.097 0.42296,0.51051 0.52308,-0.25908 0.73749,0.18506 1.06147,-0.90104 0.71394,0.75555 0.0339,0.393 0.3981,0.26868 -0.0932,1.25132 0.65255,0.0924 0.50453,6.83465 -3.99541,0.578 -3.05227,0.251 -0.31379,0.02 -0.3851,-8.919 -0.0321,-0.878"},"47099":{"name":"Lawrence, TN","path":"m 685.04277,364.08014 1.65629,0.114 -0.0392,0.617 -0.009,0.594 0.56161,6.163 0.10697,2.655 -7.14574,0.553 -0.24069,-9.163 0.75594,-0.07 1.55109,-0.642 -0.0749,-0.859 2.27494,-0.178 0.60261,0.217"},"47181":{"name":"Wayne, TN","path":"m 677.12861,363.89614 1.34703,0.0149 0.0552,0.84361 0.76205,-0.0339 0.64018,0.89236 0.24069,9.163 -7.07087,0.547 -0.50453,-6.83465 -0.65255,-0.0924 0.0932,-1.25132 -0.3981,-0.26868 -0.0339,-0.393 0.67721,-0.18675 0.26372,-0.27864 -0.0579,-0.18675 -0.62455,-0.0949 0.48219,-0.72079 2.013,-0.53143 1.2057,-0.53143 0.996,-0.2169 0.56614,0.16055"},"47101":{"name":"Lewis, TN","path":"m 683.76802,359.21314 -0.17115,0.977 0.0178,0.474 0.0642,0.289 0.27991,0.25 0.44928,0.08 0.50812,0.41 0.46355,0.932 -0.0624,0.834 -0.0553,0.273 -0.2193,0.346 -0.60261,-0.217 -2.27494,0.178 0.0749,0.859 -1.55109,0.642 -0.75594,0.07 -0.64018,-0.89236 -0.76205,0.0339 -0.0552,-0.84361 -1.34703,-0.0149 0.21127,-0.75125 0.27639,-0.0241 -0.034,-1.05333 0.44352,-0.0115 0.23587,-0.58726 -0.28796,-0.5776 0.71493,-0.475 -0.004,-0.28935 0.51371,-0.43732 0.34461,-0.0462 0.39745,0.58792 0.93615,-0.15837 0.88951,0.32937 0.75415,-0.392 1.24801,-0.795"},"47135":{"name":"Perry, TN","path":"m 676.4226,355.69214 0.0145,0.87408 -0.0752,1.56169 0.448,0.27619 0.0145,0.26123 -0.47876,0.0968 -0.0154,0.93387 0.82168,0.41072 0.82169,0.7844 0.28796,0.5776 -0.23587,0.58726 -0.44352,0.0115 0.034,1.05333 -0.27639,0.0241 -0.21127,0.75125 -0.56614,-0.16055 -0.996,0.2169 -1.2057,0.53143 -2.013,0.53143 -0.48219,0.72079 -0.33845,-0.24268 -0.27425,-0.64708 0.56305,-0.49932 0.43171,-0.51574 0.0869,-0.6635 -1.31935,-2.04703 0.26677,-1.36472 -0.4227,-1.0078 0.84132,-0.96091 0.083,-1.15422 0.0981,-0.595 2.2268,0.281 0.4582,-0.385 0.32805,-0.06 1.52792,-0.176"},"47081":{"name":"Hickman, TN","path":"m 685.61507,352.06714 0.0303,2.525 -0.0747,2.94905 -1.80261,1.67195 -1.24801,0.795 -0.75415,0.392 -0.88951,-0.32937 -0.93615,0.15837 -0.39745,-0.58792 -0.34461,0.0463 -0.51371,0.43732 0.004,0.28935 -0.71493,0.475 -0.82169,-0.7844 -0.82168,-0.41072 0.0154,-0.93388 0.47876,-0.0968 -0.0145,-0.26124 -0.448,-0.27618 0.0752,-1.56169 -0.0145,-0.87408 0.12859,-1.57812 0.16146,-0.21924 0.50123,-0.15349 0.7094,-0.44938 0.40256,-0.41649 0.70941,-0.022 0.54502,-0.56992 -0.1125,-0.44937 6.14733,0.233"},"47085":{"name":"Humphreys, TN","path":"m 678.49608,347.62414 0.97166,4.21 0.1125,0.44937 -0.54502,0.56992 -0.70941,0.022 -0.40256,0.41649 -0.7094,0.44938 -0.50119,0.15349 -0.16147,0.21924 -0.12859,1.57812 -1.52792,0.176 -0.32805,0.06 -0.4582,0.385 -2.2268,-0.281 0.29952,-0.45 0.0856,-0.258 0.12123,-0.972 0.0191,-0.63266 -0.22773,-0.0989 -1.27715,0.0372 -0.34292,-0.82073 0.41972,-0.34409 -0.0188,-0.93513 1.22128,-2.11992 -0.0752,-0.91877 -0.7702,-1.792 2.11983,0.07 0.65253,-0.346 0.74881,0 3.24482,0.738 0.39402,0.419"},"47083":{"name":"Houston, TN","path":"m 677.63495,343.29214 0.14053,0.61191 1.37134,0.0141 0.0263,1.97608 -0.67703,1.72992 -0.39402,-0.419 -3.24482,-0.738 -0.74881,0 -0.65253,0.346 -2.11983,-0.07 -0.0543,-1.20961 -0.74088,-1.29039 1.99147,0.339 0.36192,0.02 0.54021,-0.03 0.35835,-0.06 0.3958,-0.123 0.49742,-0.248 0.32805,-0.232 0.25138,-0.226 2.36944,-0.378"},"47161":{"name":"Stewart, TN","path":"m 675.23342,337.24114 0.96454,-0.111 1.43699,6.162 -2.36944,0.378 -0.25138,0.226 -0.32805,0.232 -0.49742,0.248 -0.3958,0.123 -0.35835,0.06 -0.54021,0.03 -0.36192,-0.02 -1.99147,-0.339 -0.1765,-0.153 -1.54023,-1.886 0.11571,-1.159 0.46397,-0.85576 -1.12363,-3.29824 1.07151,-0.06 2.98809,0.06 -0.007,0.708 2.90073,-0.339"},"47125":{"name":"Montgomery, TN","path":"m 685.78266,336.15714 0.30666,4.323 -2.75632,3.359 -4.18618,0.08 -1.37134,-0.0141 -0.14053,-0.61191 -1.43699,-6.162 5.56077,-0.579 4.02393,-0.394"},"47147":{"name":"Robertson, TN","path":"m 692.17782,335.39414 3.66558,0 -0.20471,1.221 -0.35424,0.62424 -0.42163,0.89376 -0.0173,0.79269 -0.489,0.72531 -0.40828,0.902 -1.06081,0.442 -0.47579,1.0308 -0.7136,0.15094 -0.95139,-0.58624 -0.71359,0.1985 -0.5787,-0.0935 -0.56311,0.48329 -0.59429,-0.67024 -0.5787,-0.0935 -1.62891,-0.93509 -0.30666,-4.323 0.98771,-0.114 5.40745,-0.649"},"47021":{"name":"Cheatham, TN","path":"m 686.08932,340.48014 1.62891,0.93509 0.5787,0.0935 0.59429,0.67024 0.56311,-0.48329 0.5787,0.0935 0.1558,1.41133 -0.85828,1.41134 -0.15135,3.1313 -0.68043,0.68429 -0.30567,1.38974 -2.36765,0.12 0.14263,-3.286 -0.25673,-0.861 -0.37084,-0.271 0.49921,-0.772 0.0321,-0.619 -0.0571,-0.13 -0.42433,-0.159 -0.95027,-0.121 -1.10716,0.121 2.75632,-3.359 2e-5,0 z m -0.13728,3.783 -0.0892,0.113 0.23178,-0.104 -0.0535,-0.05 -0.0321,0.06 -0.0571,-0.02"},"47043":{"name":"Dickson, TN","path":"m 679.14682,343.91814 4.18618,-0.08 1.10716,-0.121 0.95027,0.121 0.42433,0.159 0.0571,0.13 -0.0321,0.619 -0.49921,0.772 0.37084,0.271 0.25673,0.861 -0.14263,3.286 -0.21038,2.13 -6.14733,-0.233 -0.97166,-4.21 0.67703,-1.72992 -0.0263,-1.97608"},"47117":{"name":"Marshall, TN","path":"m 693.95712,357.14514 1.75791,-0.248 0.9164,0.472 -0.0161,4.518 0.0571,0.82 0.18364,0.466 0.90213,1.51 0.27813,0.03 0.0642,-0.03 -0.003,0.72483 -1.28232,0.52088 -1.09691,1.42941 -1.63461,0.0759 -0.34704,-1.12316 -1.19996,-0.0478 -0.56954,-1.99462 -0.68079,-0.14046 0.12084,-1.00535 1.11505,-1.09835 0.68539,-1.29365 0.43332,-3.29039 0.31614,-0.30226"},"47187":{"name":"Williamson, TN","path":"m 685.82545,349.93714 2.36765,-0.12 0.36906,1.277 0.24247,-0.03 1.67055,-1.63 2.64578,0.136 3.24482,1.26 0.0757,1.27672 0.20125,0.38183 0.13846,0.71152 0.10705,1.60643 -0.80354,0.0678 0.0286,0.61733 -0.66224,0.25623 0.26405,1.15112 -1.75791,0.248 -8.31174,-2.553 -0.0303,-2.525 0.21038,-2.13"},"47055":{"name":"Giles, TN","path":"m 686.69906,364.19414 1.23073,-0.68617 1.31462,0.21572 0.89514,0.42545 1.14683,-0.015 0.68079,0.14046 0.56954,1.99462 1.19996,0.0478 0.34704,1.12316 0.45998,6.274 -6.99242,0.49 -0.23177,0.02 -0.10697,-2.655 -0.56161,-6.163 0.009,-0.594 0.0392,-0.617"},"47119":{"name":"Maury, TN","path":"m 685.64538,354.59214 8.31174,2.553 -0.31614,0.30226 -0.43332,3.29039 -0.68539,1.29365 -1.11505,1.09835 -0.12084,1.00535 -1.14683,0.015 -0.89514,-0.42545 -1.31462,-0.21572 -1.23073,0.68617 -1.65629,-0.114 0.2193,-0.346 0.0553,-0.273 0.0624,-0.834 -0.46355,-0.932 -0.50812,-0.41 -0.44928,-0.08 -0.27991,-0.25 -0.0642,-0.289 -0.0178,-0.474 0.17115,-0.977 1.80261,-1.67195 0.0747,-2.94905"},"47103":{"name":"Lincoln, TN","path":"m 703.87879,369.63214 0.30844,3.134 -8.66653,0.854 -0.97701,0.09 -0.45998,-6.274 1.63461,-0.0759 1.09691,-1.42941 1.28232,-0.52088 0.003,-0.72483 0.37357,-0.19833 0.87993,0.23013 0.21856,0.86889 1.53729,0.51029 0.43834,0.55657 0.19545,0.545 0.43834,-0.12594 0.5656,1.3316 0.29953,1.10026 z"},"47127":{"name":"Moore, TN","path":"m 704.32808,362.95314 0.11232,1.828 -0.50983,2.16375 -0.0518,2.68725 -0.83166,-0.12817 -0.29953,-1.09987 -0.5656,-1.33122 -0.43835,0.12632 -0.19545,-0.54462 -0.43836,-0.55618 -1.53729,-0.50991 -0.21856,-0.86851 0.45743,-0.2732 0.42834,0.0387 0.50624,0.66189 0.81773,0.10658 0.20426,-0.57507 2.56007,-1.72572"},"47003":{"name":"Bedford, TN","path":"m 704.03925,357.87714 0.49244,3.62383 -0.20361,1.45217 -2.56007,1.72572 -0.20426,0.57507 -0.81773,-0.10658 -0.50624,-0.66189 -0.42834,-0.0387 -0.45743,0.2732 -0.87993,-0.23013 -0.37357,0.19833 -0.0642,0.03 -0.27813,-0.03 -0.90213,-1.51 -0.18364,-0.466 -0.0571,-0.82 0.0161,-4.518 0.0232,-0.376 0.26743,-0.05 1.46195,-0.03 1.23605,0.7403 2.06812,0.41527 0.482,-0.75482 0.79402,0.11625 1.07507,0.442"},"47149":{"name":"Rutherford, TN","path":"m 697.9668,347.58314 0.80229,0.539 2.94173,1.775 0.30488,0.12 1.22126,0.298 1.72582,-0.04 -0.39045,5.875 -0.66486,0.43862 0.13178,1.28838 -1.07507,-0.442 -0.79402,-0.11625 -0.482,0.75482 -2.06812,-0.41527 -1.23605,-0.7403 -1.46195,0.03 -0.26743,0.05 -0.0232,0.376 -0.9164,-0.472 -0.26405,-1.15112 0.66224,-0.25623 -0.0286,-0.61733 0.80354,-0.0678 -0.10705,-1.60643 -0.13846,-0.71152 -0.20125,-0.38183 -0.0757,-1.27672 1.60102,-3.245"},"47037":{"name":"Davidson, TN","path":"m 690.03303,341.78914 0.71359,-0.1985 0.95139,0.58624 0.7136,-0.15094 0.47579,-1.0308 0.82502,0.851 0.11795,0.70959 1.42604,0.81564 0.20039,0.84975 0.73069,0.17802 1.77931,3.184 -1.60102,3.245 -3.24482,-1.26 -2.64578,-0.136 -1.67055,1.63 -0.24247,0.03 -0.36906,-1.277 0.30567,-1.38974 0.68043,-0.68429 0.15135,-3.1313 0.85828,-1.41134 -0.1558,-1.41133"},"47165":{"name":"Sumner, TN","path":"m 698.59258,334.71814 3.79217,-0.135 -0.0357,2.58324 0.2932,0.29625 -0.3289,0.66951 0.086,0.85035 -0.60468,0.0754 0.20391,1.79369 -0.352,0.61451 -0.22642,0.838 -0.83295,0.0342 0.009,-0.77436 -0.35196,-0.20107 -0.30142,0.59065 -0.0656,0.69172 -0.47038,-0.10224 -0.38321,-0.65422 -1.36151,1.06088 -0.14914,0.4439 -0.38447,-0.77489 -0.33885,0.13494 0.13083,0.71141 -0.73345,0.92508 -0.73069,-0.17802 -0.20039,-0.84975 -1.42604,-0.81564 -0.11795,-0.70959 -0.82502,-0.851 1.06081,-0.442 0.40828,-0.902 0.489,-0.72531 0.0173,-0.79269 0.42162,-0.89376 0.35424,-0.62424 0.20471,-1.221 2.74918,-0.676"},"47189":{"name":"Wilson, TN","path":"m 704.44931,342.37514 1.91302,4.686 1.13212,2.797 -2.53167,0.417 -1.72582,0.04 -1.22126,-0.298 -0.30488,-0.12 -2.94173,-1.775 -0.80229,-0.539 -1.77931,-3.184 0.73345,-0.92508 -0.13083,-0.71141 0.33885,-0.13494 0.38447,0.77489 0.14914,-0.4439 1.36151,-1.06088 0.38321,0.65422 0.47038,0.10224 0.0656,-0.69172 0.30142,-0.59065 0.35196,0.20107 -0.009,0.77436 0.83295,-0.0342 0.22642,-0.838 0.35033,0.11363 0.0621,0.74251 0.44204,0.0874 0.10143,-0.94764 0.52066,-0.0829 0.42894,0.49358 0.25862,-0.16151 0.63858,0.6639"},"47015":{"name":"Cannon, TN","path":"m 707.49445,349.85814 2.48916,1.93226 0.18693,0.60674 -1.38931,2.08584 -0.008,2.24516 -1.14305,0.2671 -1.03683,-0.10467 -2.02056,-0.74043 0.39045,-5.875 2.53167,-0.417"},"47031":{"name":"Coffee, TN","path":"m 708.77277,356.72814 0.98012,1.7501 1.35188,1.1659 -0.0588,0.04 -0.0392,0.122 0.0642,1.711 0.21751,1.155 0.29596,0.266 -0.12837,0.745 -0.35122,1.241 -0.10519,0.209 -2.40866,-1.02 -2.27673,-0.21 -1.68837,0.593 -0.17651,0.186 -0.009,0.1 -0.11232,-1.828 0.20361,-1.45217 -0.49244,-3.62383 -0.13178,-1.28838 0.66486,-0.43862 2.02056,0.74043 1.03683,0.10467 1.14305,-0.2671"},"47051":{"name":"Franklin, TN","path":"m 704.4404,364.78114 0.009,-0.1 0.17651,-0.186 1.68837,-0.593 2.27673,0.21 2.40866,1.02 0.91639,1.422 0.74702,5.392 -8.33491,0.811 -0.14085,0 -0.30844,-3.134 0.0518,-2.68725 0.50983,-2.16375"},"47115":{"name":"Marion, TN","path":"m 711.91597,366.55614 0.84403,-0.61062 0.80925,0.45547 0.85788,0.0504 0.77879,-0.66159 -0.42161,-1.08525 2.72278,-0.98637 0.21751,0.323 1.59032,0.642 0.47603,0.119 0.75594,0.756 0.27991,0.403 0.27991,1.164 0.016,0.193 -0.15084,0.82629 0.7691,0.43099 -0.41748,1.04405 -0.4629,0.0434 -0.0717,0.5692 -0.82323,1.02405 -2.47462,0.257 -4.82802,0.435 -0.74702,-5.392"},"47153":{"name":"Sequatchie, TN","path":"m 719.36302,357.73114 -0.0681,0.86638 0.44563,0.18918 0.072,0.37599 3.7616,3.06145 -2.45145,5.094 -0.016,-0.193 -0.27991,-1.164 -0.27991,-0.403 -0.75594,-0.756 -0.47603,-0.119 -1.59032,-0.642 -0.21751,-0.323 0.17974,-0.61372 0.74872,-0.52389 0.17974,-0.98805 -0.43417,-0.0447 -0.0299,-0.31426 -0.62883,-0.23938 -0.0299,-1.25758 -1.42241,-0.80838 0.91461,-0.127 2.37835,-1.07"},"47061":{"name":"Grundy, TN","path":"m 716.07006,358.92814 1.42241,0.80838 0.0299,1.25758 0.62883,0.23938 0.0299,0.31426 0.43417,0.0447 -0.17974,0.98805 -0.74872,0.52389 -0.17974,0.61372 -2.72278,0.98637 0.42161,1.08525 -0.77879,0.66159 -0.85788,-0.0504 -0.80925,-0.45547 -0.84403,0.61062 -0.91639,-1.422 0.10519,-0.209 0.35122,-1.241 0.12837,-0.745 -0.29596,-0.266 -0.21751,-1.155 -0.0642,-1.711 0.0392,-0.122 0.0588,-0.04 0.83438,0.122 0.29061,0 1.14817,-0.378 0.9253,-0.2 1.76683,-0.267"},"47175":{"name":"Van Buren, TN","path":"m 721.62192,352.22814 -0.0392,0.121 0.40115,0.442 0,0.03 -0.1334,0.98577 -2.48742,3.92223 -2.37835,1.07 -1.12675,-2.83602 -0.37443,-3.10298 1.44551,-0.27792 1.08928,-0.63414 1.91135,0.44824 1.3359,-0.64785 0.35639,0.47767"},"47177":{"name":"Warren, TN","path":"m 714.31516,352.28946 1.16833,0.57268 0.37443,3.10298 1.12675,2.83602 -0.91461,0.127 -1.76683,0.267 -0.9253,0.2 -1.14817,0.378 -0.29061,0 -0.83438,-0.122 -1.35188,-1.1659 -0.98012,-1.7501 0.008,-2.24516 1.38931,-2.08584 1.69505,-0.55593 2.44957,0.44825"},"47185":{"name":"White, TN","path":"m 721.23503,347.92914 0.64754,1.40226 0.46889,0.37507 -0.18613,1.89353 -0.54341,0.62814 -0.35639,-0.47767 -1.3359,0.64785 -1.91135,-0.44824 -1.08928,0.63414 -1.44551,0.27792 -1.16833,-0.57268 0.26443,-0.66353 -0.48984,-2.46476 0.32072,-0.89994 -0.25343,-0.38209 0.007,-0.135 0.0802,-0.17 0.32983,-0.344 0.98236,-0.866 0.26387,-0.13 0.68284,-0.168 2.56376,0.401 0.90748,0.344 0.2817,0.22 0.0874,0.68719 0.89134,0.21081"},"47041":{"name":"DeKalb, TN","path":"m 710.87834,345.51914 0.81967,0.59 -0.0488,0.47553 0.4236,0.35307 0.4761,-0.45171 0.91347,0.33558 0.13737,0.67747 0.55725,0.38006 0.25343,0.38209 -0.32072,0.89994 0.48984,2.46476 -0.26443,0.66353 -2.44957,-0.44825 -1.69505,0.55593 -0.18693,-0.60674 -2.48916,-1.93226 -1.13212,-2.797 4.51601,-1.542"},"47141":{"name":"Putnam, TN","path":"m 711.11903,343.02114 2.67609,0.191 1.15886,-0.353 0.56874,-0.275 0.12123,-0.175 0.52952,-0.909 0,-0.531 0.69805,-0.0527 0.85304,1.41973 1.84901,0.29439 0.0139,0.41844 2.30008,0.76717 1.56715,0 0.36905,0.102 -0.85934,1.005 -1.53505,0.03 -0.18364,0.136 -0.0107,2.836 -0.89134,-0.21081 -0.0874,-0.68719 -0.2817,-0.22 -0.90748,-0.344 -2.56376,-0.401 -0.68284,0.168 -0.26387,0.13 -0.98236,0.866 -0.32983,0.344 -0.0802,0.17 -0.007,0.135 -0.55725,-0.38006 -0.13737,-0.67747 -0.91347,-0.33558 -0.47609,0.45171 -0.42361,-0.35307 0.0488,-0.47553 -0.81968,-0.59 0.24069,-2.498"},"47169":{"name":"Trousdale, TN","path":"m 707.20862,339.07414 -0.0522,0.68528 -1.31193,0.52975 -0.7987,1.1363 -0.59651,0.94967 -0.63858,-0.6639 -0.25862,0.16151 -0.42894,-0.49358 -0.52066,0.0829 -0.1014,0.94763 -0.44204,-0.0874 -0.0621,-0.74252 -0.35033,-0.11362 0.352,-0.61451 -0.20391,-1.79369 0.60468,-0.0754 -0.086,-0.85035 0.91275,0.08 0.3684,0.8265 0.39951,0.12664 3.21453,-0.0911"},"47111":{"name":"Macon, TN","path":"m 706.57093,334.40614 3.43915,-0.21 -0.16045,2.87 -0.0374,2.038 -2.60357,-0.03 -3.21453,0.0911 -0.39951,-0.12664 -0.3684,-0.8265 -0.91275,-0.08 0.32888,-0.66951 -0.29323,-0.29625 0.0357,-2.58324 4.18618,-0.177"},"47159":{"name":"Smith, TN","path":"m 707.20862,339.07414 2.60357,0.03 0.25268,3.24087 1.05416,0.67613 -0.24069,2.498 -4.51601,1.542 -1.91302,-4.686 0.59651,-0.94967 0.7987,-1.1363 1.31193,-0.52975 0.0522,-0.68528"},"47087":{"name":"Jackson, TN","path":"m 709.84963,337.06614 0.8112,-0.508 2.35517,0.371 1.23731,0.303 0.93245,0.684 0.72384,0.724 0.26387,2.329 0,0.531 -0.52952,0.909 -0.12123,0.175 -0.56874,0.275 -1.15886,0.353 -2.67609,-0.191 -1.05416,-0.67613 -0.25268,-3.24087 0.0374,-2.038"},"47133":{"name":"Overton, TN","path":"m 719.41294,335.26514 0.88446,0.23482 1.94704,1.16029 0.28462,0.90321 0.21606,0.21768 0.23534,2.36 0.31379,0.821 0.70601,1.592 -0.54555,1.262 -1.56715,0 -2.30008,-0.76717 -0.0139,-0.41844 -1.84901,-0.29439 -0.85304,-1.41973 -0.69805,0.0527 -0.26387,-2.329 1.07225,-2.3169 0.87584,0.0892 0.008,-0.38544 1.54694,-0.76191"},"47027":{"name":"Clay, TN","path":"m 719.3238,333.05614 0.0891,2.209 -1.54694,0.76191 -0.008,0.38544 -0.87584,-0.0892 -1.07225,2.3169 -0.72384,-0.724 -0.93245,-0.684 -1.23731,-0.303 -2.35517,-0.371 -0.8112,0.508 0.16045,-2.87 6.42012,-0.617 2.54059,-0.46 0.35301,-0.06"},"47137":{"name":"Pickett, TN","path":"m 724.9648,332.70214 3.35892,-0.154 1.18918,1.698 -0.9158,0.22232 -0.53876,-0.5489 -0.41879,-0.24042 -0.62445,-0.189 -0.78981,-0.122 -0.71315,0.03 -1.12678,0.353 -0.68997,0.683 0.0656,0.46247 -0.48281,0.22253 -0.19433,0.449 0.10484,2.1338 -0.44359,0.0772 -0.21606,-0.21768 -0.28462,-0.90321 -1.94704,-1.16029 -0.88446,-0.23482 -0.0891,-2.209 5.641,-0.354"},"47007":{"name":"Bledsoe, TN","path":"m 721.98384,352.82314 2.21611,-0.346 0.86825,0.09 0.88206,-0.34515 0.22291,0.55483 2.03823,-0.58868 -1.95224,3.408 -1.06972,1.374 -0.49742,1.92 0.5699,0.2624 -0.29712,0.4936 -0.20316,0.27427 -0.40546,-0.10145 -0.78202,2.39818 -3.7616,-3.06145 -0.072,-0.37599 -0.44563,-0.18918 0.0681,-0.86638 2.48742,-3.92223 0.1334,-0.98577"},"47049":{"name":"Fentress, TN","path":"m 729.5129,334.24614 1.65814,2.72923 -0.66865,0.74177 -1.72314,2.18671 -1.08845,-0.0347 -0.0999,1.27052 -0.54544,0.77748 0.26743,1.182 -2.22056,10e-4 -0.57541,0.70299 -0.69311,0.11453 -0.36905,-0.102 0.54555,-1.262 -0.70601,-1.592 -0.31379,-0.821 -0.23534,-2.36 0.44359,-0.0772 -0.10484,-2.1338 0.19433,-0.449 0.48281,-0.22253 -0.0656,-0.46247 0.68997,-0.683 1.12678,-0.353 0.71315,-0.03 0.78981,0.122 0.62445,0.189 0.41879,0.24042 0.53876,0.5489 0.9158,-0.22232"},"47035":{"name":"Cumberland, TN","path":"m 723.82376,343.91814 0.69311,-0.11453 0.57541,-0.70299 2.22056,-10e-4 1.207,1.3015 1.11874,0.33054 1.5895,1.56631 0.91277,2.00765 -1.63133,2.14 -2.29812,1.75 -2.03823,0.58868 -0.22291,-0.55483 -0.88206,0.34515 -0.86825,-0.09 -2.21611,0.346 0,-0.03 -0.40115,-0.442 0.0392,-0.121 0.54341,-0.62814 0.18613,-1.89353 -0.46889,-0.37507 -0.64754,-1.40226 0.0107,-2.836 0.18364,-0.136 1.53505,-0.03 0.85934,-1.005"},"47143":{"name":"Rhea, TN","path":"m 731.77893,351.98014 0.23177,0.36 0.0571,0.137 -0.0731,0.901 -0.38648,0.43544 -0.15312,-0.41564 -0.24921,-0.0313 -0.16684,0.4629 0.0116,1.17669 0.14216,0.35471 -0.0226,0.39589 -0.51674,0.31353 0.43042,0.54689 -0.15984,0.32725 -1.31291,-0.0297 -0.0775,0.51944 0.45787,0.40961 -0.15312,0.42172 -0.60611,0.46289 0.1203,0.49102 -0.32061,0.41015 -0.63633,-0.0428 -0.33605,-0.56399 -0.32232,0.0812 0.10351,0.70454 -0.52793,0.70454 -0.99446,-0.56424 -0.60156,0.2361 -0.16501,-0.47693 -0.58701,-0.0549 0.29712,-0.4936 -0.5699,-0.2624 0.49742,-1.92 1.06972,-1.374 1.95224,-3.408 2.29812,-1.75 0.31735,0.38375 0.66696,0.28386 -0.20705,0.84573 0.49215,0.0217"},"47121":{"name":"Meigs, TN","path":"m 733.98968,354.23714 -2.03781,3.59323 -1.59567,3.70377 -1.42987,1.623 -0.47613,-0.51548 -0.0317,-0.39808 -0.20635,-0.55814 -0.62834,-0.64546 -0.23544,0.21309 -0.25786,-0.0789 0.22235,-0.661 0.52793,-0.70454 -0.10351,-0.70454 0.32232,-0.0812 0.33605,0.56399 0.63633,0.0428 0.32061,-0.41015 -0.1203,-0.49102 0.60611,-0.46289 0.15312,-0.42172 -0.45787,-0.40961 0.0775,-0.51944 1.31291,0.0297 0.15984,-0.32725 -0.43042,-0.54689 0.51674,-0.31353 0.0226,-0.39589 -0.14216,-0.35471 -0.0116,-1.17669 0.16684,-0.4629 0.24921,0.0313 0.15312,0.41564 0.38648,-0.43544 0.0731,-0.901 -0.0571,-0.137 -0.23177,-0.36 0.62448,0.56425 0.48089,0.56425 0.76808,-0.61523 0.3373,1.74373"},"47065":{"name":"Hamilton, TN","path":"m 727.31284,360.51314 -0.22235,0.661 0.25786,0.0789 0.23544,-0.21309 0.62834,0.64546 0.20635,0.55814 0.0317,0.39808 0.47613,0.51548 -0.75593,2.096 -0.11232,0.419 -0.16581,1.348 0.66323,1.817 0.78175,0.40145 -0.16845,0.87655 -0.0285,0 -0.0285,0 -5.2969,0.665 -1.83101,0.25 -2.01821,0.217 0.82323,-1.02405 0.0717,-0.5692 0.4629,-0.0434 0.41748,-1.04405 -0.7691,-0.43099 0.15084,-0.82629 2.45145,-5.094 0.78202,-2.39818 0.40546,0.10145 0.20316,-0.27427 0.58701,0.0549 0.16501,0.47693 0.60156,-0.2361 0.99446,0.56424"},"47011":{"name":"Bradley, TN","path":"m 730.3562,361.53414 2.59923,1.26272 -0.22944,0.49127 0.51753,-0.023 0.30936,0.43004 0.19703,1.61441 -0.64231,1.92916 0.22701,0.10058 -0.43248,2.33385 -0.64005,0.08 -3.09328,0.362 0.16845,-0.87655 -0.78175,-0.40145 -0.66323,-1.817 0.16581,-1.348 0.11232,-0.419 0.75593,-2.096 1.42987,-1.623"},"47139":{"name":"Polk, TN","path":"m 737.28265,362.20614 3.98828,1.352 0.0695,5.079 -5.56791,0.685 -2.87042,0.351 0.43248,-2.33385 -0.22701,-0.10058 0.64231,-1.92916 -0.19703,-1.61441 0.50812,-0.442 0.87717,-0.346 2.01643,-0.209 0.32805,-0.492"},"47123":{"name":"Monroe, TN","path":"m 742.03934,354.04114 0.15333,0.253 1.9362,1.1 0.90926,-0.169 1.93798,1.037 0.0214,0.02 -0.0214,0.09 -0.31557,0.506 -0.75415,4.122 -0.43502,0.594 -0.70424,0.579 -1.98077,0.05 -1.51543,1.334 -3.98828,-1.352 1.4459,-1.219 -0.16759,-1.567 -1.90232,-3.327 -0.77376,-1.229 -0.025,-0.249 -0.0784,-0.121 0.61865,-0.804 0.5313,-0.305 0.41541,-0.191 0.55881,0.12988 0.18465,0.54765 0.5413,-0.21485 0.34453,-0.49771 0.35683,-0.055 2.60477,0.763 0.10162,0.166 z"},"47107":{"name":"McMinn, TN","path":"m 734.64043,354.16614 1.14104,0.328 0.0784,0.121 0.025,0.249 0.77376,1.229 1.90232,3.327 0.16759,1.567 -1.4459,1.219 -0.32805,0.492 -2.01643,0.209 -0.87717,0.346 -0.50812,0.442 -0.30936,-0.43004 -0.51753,0.023 0.22944,-0.49127 -2.59923,-1.26272 1.59567,-3.70377 2.03781,-3.59323 0.65075,-0.07"},"47145":{"name":"Roane, TN","path":"m 735.38567,353.46514 -0.74524,0.701 -0.65075,0.07 -0.3373,-1.74373 -0.76807,0.61523 -0.4809,-0.56425 -0.62448,-0.56425 -0.49215,-0.0217 0.20705,-0.84573 -0.66696,-0.28386 -0.31735,-0.38375 1.63133,-2.14 2.66895,-1.863 1.41917,-0.444 0.61152,-0.544 1.12499,-1.133 1.67947,3.03 0.19433,0.287 -0.34588,-0.103 0.0812,0.56814 -0.396,-0.088 -0.47553,-0.008 -0.15742,1.32366 -0.51227,0.23093 0.005,1.18526 -1.10874,0.46951 -1.22803,1.24491 -0.31557,1.004 z m 0,0 0,0"},"47129":{"name":"Morgan, TN","path":"m 735.82961,341.91014 -0.10025,0.65913 0.50578,0.20812 0.21453,0.46075 0.38365,0.01 0.44004,0.16478 0.15815,0.30572 0.53397,0.60275 -1.12499,1.133 -0.61152,0.544 -1.41917,0.444 -2.66895,1.863 -0.91277,-2.00765 -1.5895,-1.56631 -1.11874,-0.33054 -1.207,-1.3015 -0.26743,-1.182 0.54544,-0.77748 0.0999,-1.27052 1.08845,0.0347 1.72314,-2.18671 1.92015,2.112 0.85934,0.644 1.87915,0.704 0.66858,0.733"},"47151":{"name":"Scott, TN","path":"m 728.45922,332.54114 9.43495,-0.884 0.4056,0.77668 -0.025,1.17899 -1.15338,0.32812 -0.35799,1.1235 0.25241,0.93852 0.60386,0.62408 -0.3025,0.14314 0.40039,2.34432 -0.80193,0.38361 0.0158,1.03904 -0.57909,0.99656 -0.52272,0.37644 -0.66858,-0.733 -1.87915,-0.704 -0.85934,-0.644 -1.92015,-2.112 0.66865,-0.74177 -1.65814,-2.72923 -1.18918,-1.698 0.1355,0"},"47013":{"name":"Campbell, TN","path":"m 742.87729,331.08614 1.99147,3.703 0.0314,0.24243 0.22499,0.34567 -0.38155,0.24243 -0.31702,-0.17053 -0.44928,2.3 -0.20146,0.392 -0.27278,0.323 -0.39708,-0.625 -0.78609,1.72677 -0.39708,-0.0238 -2.41288,0.15303 0.01,1.30239 -1.17511,-0.60732 -0.43244,0.25913 -0.9806,-0.11221 -0.0158,-1.03904 0.80193,-0.38361 -0.40039,-2.34432 0.3025,-0.14314 -0.60386,-0.62408 -0.25241,-0.93852 0.35799,-1.1235 1.15338,-0.32812 0.025,-1.17899 -0.4056,-0.77668 0.62757,-0.07 4.35555,-0.5"},"47001":{"name":"Anderson, TN","path":"m 743.50308,338.46414 1.38885,1.783 -0.0481,0 -0.32092,0.297 -1.81758,2.92565 0.5848,0.69505 -1.43509,1.26736 -0.83733,0.1427 -1.04999,1.56624 -0.3227,0.21 -1.67947,-3.03 -0.53397,-0.60275 -0.15815,-0.30572 -0.44004,-0.16478 -0.38365,-0.01 -0.21453,-0.46075 -0.50578,-0.20812 0.10025,-0.65913 0.52272,-0.37644 0.57909,-0.99656 0.9806,0.11221 0.43244,-0.25913 1.17511,0.60732 -0.01,-1.30239 2.41288,-0.15303 0.39708,0.0238 0.78609,-1.72677 0.39708,0.625"},"47105":{"name":"Loudon, TN","path":"m 739.83928,347.63814 2.04852,1.881 0.34518,1.26494 -0.26941,0.99606 1.09422,1.20732 -1.01845,1.05368 -0.10162,-0.166 -2.60477,-0.763 -0.35683,0.055 -0.34453,0.49771 -0.5413,0.21485 -0.18465,-0.54765 -0.55881,-0.12988 -0.41541,0.191 -0.5313,0.305 -0.61865,0.804 -1.14104,-0.328 0.74524,-0.701 0.31557,-1.004 1.22803,-1.24491 1.10874,-0.46951 -0.005,-1.18526 0.51227,-0.23093 0.15742,-1.32366 0.47553,0.008 0.396,0.088 -0.0812,-0.56814 0.34588,0.103"},"47009":{"name":"Blount, TN","path":"m 748.47729,346.77214 1.56714,2.71 0.78624,1.18 0.64184,0.305 0.36192,2.787 -5.02056,3.18 -0.15333,-0.05 0.31557,-0.506 0.0214,-0.09 -0.0214,-0.02 -1.93798,-1.037 -0.90926,0.169 -1.9362,-1.1 -0.15333,-0.253 1.01845,-1.05368 -1.09422,-1.20732 0.26941,-0.99606 -0.34518,-1.26494 0.28169,-0.909 1.9849,-0.14614 0.60205,-1.14486 0.97879,0.07 1.15887,0.579 0.74579,0 0.8374,-1.198"},"47155":{"name":"Sevier, TN","path":"m 757.31675,345.40514 1.5725,4.009 0.0802,0.437 -0.66679,0.977 -3.18955,2.525 -0.22643,0.146 -2.62616,0.271 -0.33697,0 -0.0891,0 -0.36192,-2.787 -0.64184,-0.305 -0.78624,-1.18 -1.56714,-2.71 0.65446,-0.87921 0.68486,-0.0282 1.0192,-1.45671 -0.5917,-1.39591 1.02102,0.36 2.10263,1.15968 0.1951,0.47172 0.77362,0.23719 0.92997,-0.37259 2.0503,0.537"},"47093":{"name":"Knox, TN","path":"m 748.78394,340.25414 1.43699,1.768 -0.41567,-0.11229 -0.23063,0.20638 0.55062,0.61757 0.11888,0.27834 0.5917,1.39591 -1.0192,1.45671 -0.68486,0.0282 -0.65446,0.87921 -0.8374,1.198 -0.74579,0 -1.15887,-0.579 -0.97879,-0.07 -0.60205,1.14486 -1.9849,0.14614 -0.28169,0.909 -2.04852,-1.881 -0.19433,-0.287 0.3227,-0.21 1.04999,-1.56624 0.83733,-0.1427 1.43509,-1.26736 -0.5848,-0.69505 1.81758,-2.92565 0.32092,-0.297 0.0481,0 0.39726,0.35467 3.49475,-0.35467"},"47173":{"name":"Union, TN","path":"m 744.86876,334.78914 0.51346,-0.231 1.46876,-0.0265 1.24084,1.0537 0.0411,0.53879 0.54674,0.21731 0.20884,-0.56242 0.54438,0.18609 -0.0986,3.31822 -0.55032,0.97378 -3.49475,0.35467 -0.39726,-0.35467 -1.38885,-1.783 0.27278,-0.323 0.20146,-0.392 0.44928,-2.3 0.31702,0.17053 0.38155,-0.24243 -0.22499,-0.34567 -0.0314,-0.24243"},"47025":{"name":"Claiborne, TN","path":"m 748.51829,330.09914 3.70302,-0.41 1.06873,0.73004 0.86521,1.13709 0.60354,1.64589 -0.41408,0.51198 -0.89009,0.33676 -0.068,0.7985 -1.45008,0.59943 -0.42524,-0.0538 -0.673,0.0251 -0.63922,0.88098 -0.76621,-0.33896 -0.54438,-0.18609 -0.20884,0.56242 -0.54674,-0.21731 -0.0411,-0.53879 -1.24084,-1.0537 -1.46876,0.0265 -0.51346,0.231 -1.99147,-3.703 1.03585,-0.103 4.60515,-0.884"},"47067":{"name":"Hancock, TN","path":"m 763.88841,328.18614 -2.01642,1.469 -0.47425,-0.06 -0.45121,-0.22816 -0.30919,0.28422 -0.57872,0.472 -2.24061,2.51568 0.0446,0.55464 -1.53527,0.68162 -1.98255,-0.161 0.41408,-0.51198 -0.60354,-1.64589 -0.86521,-1.13709 -1.06873,-0.73004 8.86265,-1.118 2.80445,-0.385"},"47057":{"name":"Grainger, TN","path":"m 754.34471,333.71414 1.98255,0.161 0.78803,2.362 -0.30567,0.7875 -0.94211,-0.45942 -1.50064,1.78763 -0.76027,1.03429 -1.64181,0.23302 -1.74386,2.40198 -1.43699,-1.768 0.55032,-0.97378 0.0986,-3.31822 0.76621,0.33896 0.63922,-0.88098 0.673,-0.0251 0.42524,0.0538 1.45008,-0.59943 0.068,-0.7985 0.89009,-0.33676"},"47063":{"name":"Hamblen, TN","path":"m 760.41895,336.88814 -1.33537,1.613 -0.95562,2.371 -0.80258,-0.86896 -1.70089,-0.14061 -1.66447,0.0658 -0.35342,-0.5412 0.76027,-1.03429 1.50064,-1.78763 0.94211,0.45942 0.30567,-0.7875 0.82591,0.16275 0.71433,-1.33576 1.35199,1.34243 0.41143,0.48158"},"47089":{"name":"Jefferson, TN","path":"m 758.12796,340.87214 -0.81121,4.533 -2.0503,-0.537 -0.92997,0.37259 -0.77362,-0.23719 -0.1951,-0.47172 -2.10263,-1.15968 -1.02102,-0.36 -0.11888,-0.27834 -0.55062,-0.61757 0.23063,-0.20638 0.41567,0.11229 1.74387,-2.40198 1.6418,-0.23302 0.35342,0.5412 1.66447,-0.0658 1.70089,0.14061 0.80258,0.86896"},"47029":{"name":"Cocke, TN","path":"m 759.08358,338.50114 -0.0481,0.548 0.13015,0.146 0.72028,0.531 1.59923,0.858 2.04139,1.592 1.18739,1.069 -0.71136,3.625 -5.11327,2.544 -1.5725,-4.009 0.81121,-4.533 0.95562,-2.371"},"47171":{"name":"Unicoi, TN","path":"m 773.91706,334.74314 1.29585,0.0813 0.42463,0.70361 0.75592,1.09608 -3.2787,2.442 -1.30862,2.395 -0.49475,0.11705 -0.64185,0.6687 -1.0464,-0.65527 0.20401,-1.28048 -0.0392,-1.318 1.05189,-1.383 0.71493,-0.257 0.42611,-0.05 0.79516,-0.514 0.57765,-0.859 0.56339,-1.189"},"47073":{"name":"Hawkins, TN","path":"m 767.907,327.61514 0.0224,2.16949 -1.17079,1.17513 0.37636,0.56038 -0.32983,0.547 -1.92015,1.333 -0.88252,0.259 -0.33875,0.184 -0.93066,0.593 -0.41184,0.476 -0.34409,0.617 -0.42611,0.492 -0.77911,0.697 -0.20147,0.154 -0.15154,0.02 -0.41143,-0.48158 -1.35199,-1.34243 -0.71432,1.33576 -0.82592,-0.16275 -0.78803,-2.362 1.53527,-0.68162 -0.0445,-0.55464 2.24061,-2.51568 0.57872,-0.472 0.30919,-0.28422 0.45121,0.22816 0.47425,0.06 2.01642,-1.469 4.01859,-0.571"},"47059":{"name":"Greene, TN","path":"m 766.80519,332.06714 1.26405,-0.369 0.0535,0.16 0.41897,4.885 0.19255,1.27 1.05368,0.98 0.0392,1.318 -0.35122,-0.337 0,0 -0.27635,-0.175 -0.0874,0.01 -0.46711,0.337 -0.3227,0.233 -1.1553,1.141 -1.62241,1.519 -0.83082,0.21 -1.18739,-1.069 -2.04139,-1.592 -1.59923,-0.858 -0.72028,-0.531 -0.13015,-0.146 0.0481,-0.548 1.33537,-1.613 0.15154,-0.02 0.20147,-0.154 0.77911,-0.697 0.42611,-0.492 0.34409,-0.617 0.41184,-0.476 0.93066,-0.593 0.33875,-0.184 0.88252,-0.259 1.92015,-1.333"},"47179":{"name":"Washington, TN","path":"m 767.13502,331.52014 1.01267,-0.159 2.25711,-0.444 1.09468,-0.346 0.63292,0.128 0.90927,0.662 0.28882,0.08 0.8433,-0.11 -0.25673,3.407 -0.56339,1.189 -0.57765,0.859 -0.79516,0.514 -0.42611,0.05 -0.71493,0.257 -1.05189,1.383 -1.05368,-0.98 -0.19255,-1.27 -0.41897,-4.885 -0.0535,-0.16 -1.26405,0.369 0.32983,-0.547"},"47019":{"name":"Carter, TN","path":"m 779.54201,327.93814 0.7078,0.706 0,0.07 -1.42273,2.403 0.27991,0.553 1.25336,1.305 0.61152,0.523 0.3227,-0.123 -2.16084,4.041 -2.74027,-0.793 -0.75592,-1.09608 -0.42463,-0.70361 -1.29585,-0.0813 0.25673,-3.407 0.81347,-0.72937 1.22193,0.30377 1.26997,-1.49821 0.50285,0.0558 1.56,-1.52996"},"48037":{"name":"Bowie, TX","path":"m 552.10486,413.05014 0.15154,0.394 0.1462,0.335 0.12658,0.17 0.7809,0.499 0.27991,0.184 1.02872,0.561 1.84883,-0.938 0.0963,-0.09 0.27991,-0.03 1.06972,-0.155 1.84884,0.371 0.353,0.144 0.4582,0.378 0.13728,6.493 -0.16224,-0.362 -0.40114,-0.206 -1.7276,-0.277 -0.47425,0.107 -0.60083,0.209 -0.30665,0.545 0.0553,0.482 0.066,0.208 -0.041,0.07 -2.92228,-0.0387 -0.59562,-0.75683 -1.53295,0.12426 -0.84357,0.46894 -1.31372,0.16235 -0.64362,-0.126 -0.16046,-0.129 -0.0481,-0.221 -1.83101,-1.363 -0.0963,-8.638 4.97421,1.431"},"48387":{"name":"Red River, TX","path":"m 539.27889,406.13814 2.22681,1.904 3.26265,2.612 2.3623,0.965 0.0963,8.638 -1.19987,-0.788 -6.0582,-0.528 -2.1529,0.55729 -1.3023,-0.26829 -0.0392,-0.06 -0.11945,-11.337 0.28169,-0.03 0.14976,-0.02 0.50634,-0.329 0.10697,-0.104 0.10341,-0.233 0.0321,-0.232 -0.0321,-0.2 0,-0.03 -0.0731,-0.153 -0.007,-0.02 0.007,-0.02 0,-0.04 0.009,-0.03 0.40828,-0.619 0.0107,0 0.016,0 0.0642,-0.03 0.13549,0 1.20522,0.403"},"48107":{"name":"Crosby, TX","path":"m 417.59624,405.73514 9.91632,0.485 -0.49029,10.066 -9.89136,-0.497 0.46533,-10.054"},"48303":{"name":"Lubbock, TX","path":"m 407.67992,405.26314 9.91632,0.472 -0.46533,10.054 -9.90741,-0.483 0.45642,-10.043"},"48219":{"name":"Hockley, TX","path":"m 397.63523,404.58014 10.04469,0.683 -0.45642,10.043 -9.89136,-0.633 0.30309,-10.093"},"48079":{"name":"Cochran, TX","path":"m 389.44829,404.00214 8.18694,0.578 -0.30309,10.093 -8.80738,-0.635 0.39402,-4.195 0.52951,-5.841"},"48153":{"name":"Floyd, TX","path":"m 419.9835,394.72014 8.10671,0.443 -0.57765,11.057 -9.91632,-0.485 0.62757,-11.12 1.75969,0.105"},"48189":{"name":"Hale, TX","path":"m 408.3164,393.98814 1.74365,0.112 8.16376,0.515 -0.62757,11.12 -9.91632,-0.472 0.63648,-11.275"},"48279":{"name":"Lamb, TX","path":"m 398.43217,393.32814 1.68659,0.123 8.19764,0.537 -0.63648,11.275 -10.04469,-0.683 0.79694,-11.252"},"48017":{"name":"Bailey, TX","path":"m 398.43217,393.32814 -0.79694,11.252 -8.18694,-0.578 0.8843,-11.009 0.0161,-0.241 8.08353,0.576"},"48045":{"name":"Briscoe, TX","path":"m 420.56115,384.67614 7.14396,0.376 2.73314,0.146 -0.54734,10.052 -1.8007,-0.09 -8.10671,-0.443 0.57765,-10.044"},"48437":{"name":"Swisher, TX","path":"m 410.68583,384.05514 6.91932,0.443 2.956,0.178 -0.57765,10.044 -1.75969,-0.105 -8.16376,-0.515 0.62578,-10.045"},"48069":{"name":"Castro, TX","path":"m 407.48915,383.87214 3.19668,0.183 -0.62578,10.045 -1.74365,-0.112 -8.19764,-0.537 0.69176,-10.014 6.67863,0.435"},"48369":{"name":"Parmer, TX","path":"m 391.12062,382.73114 9.6899,0.706 -0.69176,10.014 -1.68659,-0.123 -8.08353,-0.576 0.77198,-10.021"},"48011":{"name":"Armstrong, TX","path":"m 418.32008,374.44714 10.00369,0.587 -0.61866,10.018 -7.14396,-0.376 -2.956,-0.178 0.71493,-10.051"},"48381":{"name":"Randall, TX","path":"m 408.17199,373.81114 10.14809,0.636 -0.71493,10.051 -6.91932,-0.443 -3.19668,-0.183 0.68284,-10.061"},"48117":{"name":"Deaf Smith, TX","path":"m 391.12062,382.73114 0.35301,-4.766 0.40114,-5.286 3.81,0.266 3.95975,0.199 8.52747,0.667 -0.68284,10.061 -6.67863,-0.435 -9.6899,-0.706"},"48065":{"name":"Carson, TX","path":"m 418.92269,364.34614 0,-0.09 9.95555,0.53 -0.009,0.144 -0.54556,10.102 -10.00369,-0.587 0.60261,-10.101"},"48375":{"name":"Potter, TX","path":"m 408.9101,363.72714 10.01259,0.619 -0.60261,10.101 -10.14809,-0.636 0.73811,-10.084"},"48359":{"name":"Oldham, TX","path":"m 408.92614,363.55814 -0.016,0.169 -0.73811,10.084 -8.52747,-0.667 -3.95975,-0.199 -3.81,-0.266 0.76307,-10.139 16.2883,1.018"},"48233":{"name":"Hutchinson, TX","path":"m 419.50034,354.28514 9.91633,0.562 -0.53843,9.941 -9.95555,-0.53 0.57765,-9.973"},"48341":{"name":"Moore, TX","path":"m 409.56084,353.67314 9.9395,0.612 -0.57765,9.973 0,0.09 -10.01259,-0.619 0.016,-0.169 0.6347,-9.885"},"48205":{"name":"Hartley, TX","path":"m 393.39378,352.54814 16.16706,1.125 -0.6347,9.885 -16.2883,-1.018 0.2086,-2.694 0.54734,-7.298"},"48195":{"name":"Hansford, TX","path":"m 429.97114,344.57914 -0.55447,10.212 0,0.06 -9.91633,-0.562 0.60261,-10.269 9.86819,0.563"},"48421":{"name":"Sherman, TX","path":"m 412.62381,343.54314 7.47914,0.473 -0.60261,10.269 -9.9395,-0.612 0.67571,-10.285 2.38726,0.155"},"48111":{"name":"Dallam, TX","path":"m 410.23655,343.38814 -0.67571,10.285 -16.16706,-1.125 0.43502,-6.074 0.27991,-3.705 0.75594,-0.449 15.3719,1.068"},"48229":{"name":"Hudspeth, TX","path":"m 350.07361,442.92614 -0.29596,3.237 -0.49207,6.253 -1.30863,15.17 -0.19255,1.357 -0.18542,0.669 -0.3851,3.943 -0.77414,0.49924 -0.12123,0.103 -0.42074,-1.52968 -1.28548,-0.41309 -0.88438,-1.28773 -2.13758,-1.71302 -0.83457,0.18026 -2.29983,-1.53306 0.34243,-0.61246 -3.37807,-2.80348 -0.30632,-1.78757 -1.04581,-1.13412 -1.16445,-0.64649 -0.18282,-0.56326 -0.96258,-0.39418 -0.34366,-0.91367 -1.30704,-1.93209 -0.85296,-0.61038 -0.56131,-1.20106 -0.9894,-0.36716 0.93066,-0.754 0.041,-1.52853 -0.61698,-0.11386 1.13045,-11.70761 20.88454,2.131"},"48141":{"name":"El Paso, TX","path":"m 329.18907,440.79514 -1.13045,11.70761 0.61698,0.11386 -0.041,1.52853 -0.93066,0.754 -0.5238,-0.31807 -1.15114,-0.24877 -0.65622,-0.61038 -0.4185,-0.0827 -0.8036,-0.73508 -0.25674,-0.208 -0.007,-0.02 -0.0731,-0.08 -0.025,-0.03 -0.15867,-0.257 -0.52416,-1.632 -0.69457,-0.49271 -0.0917,-0.7355 -0.36426,-1.00263 -0.46478,-1.53016 -0.64608,-0.36438 0.12338,-0.43531 -0.5292,-0.47231 -1.69143,-0.13568 -0.37313,-0.82532 -1.51009,-1.615 -0.18542,-0.249 -0.43546,-0.46799 -0.003,-0.29066 -0.10674,-0.45615 0.43812,-0.28139 0.21057,-1.21222 -0.3169,-0.12626 0.0378,-0.32313 0.32589,-0.14926 0,0 0.007,0 0.79852,0.0621 4.22718,0.447 7.3276,0.772"},"48305":{"name":"Lynn, TX","path":"m 417.13091,415.78914 -0.59548,9.996 -2.56198,-0.167 -7.38465,-0.412 0.6347,-9.9 9.90741,0.483"},"48445":{"name":"Terry, TX","path":"m 397.33214,414.67314 9.89136,0.633 -0.6347,9.9 -2.53881,-0.145 -7.4096,-0.497 0.69175,-9.891"},"48501":{"name":"Yoakum, TX","path":"m 397.33214,414.67314 -0.69175,9.891 -8.99993,-0.658 0.8843,-9.868 8.80738,0.635"},"48115":{"name":"Dawson, TX","path":"m 406.5888,425.20614 7.38465,0.412 -0.55448,10.051 -9.9181,-0.57 0.54912,-10.038 2.53881,0.145"},"48165":{"name":"Gaines, TX","path":"m 387.64046,423.90614 8.99993,0.658 7.4096,0.497 -0.54912,10.038 -0.15868,0 -16.44875,-1.134 0.74702,-10.05"},"48317":{"name":"Martin, TX","path":"m 403.34219,435.09014 0.15868,0 9.9181,0.571 -0.72384,10.069 -1.57606,-0.08 -8.43654,-0.533 0.65966,-10.036"},"48003":{"name":"Andrews, TX","path":"m 386.89344,433.95614 16.44875,1.134 -0.65966,10.036 -1.46195,-0.1 -9.93237,-0.659 -5.13467,-0.408 0.7399,-10.006"},"48329":{"name":"Midland, TX","path":"m 401.22058,445.03014 1.46195,0.1 8.43654,0.533 -0.60083,10.011 -9.97337,-0.633 0.67571,-10.007"},"48135":{"name":"Ector, TX","path":"m 401.22058,445.03014 -0.67571,10.007 -0.60261,-0.03 -8.75033,-0.621 -0.61865,-0.04 0.71493,-9.975 9.93237,0.66"},"48103":{"name":"Crane, TX","path":"m 391.19193,454.38214 8.75033,0.621 -0.52951,12.992 -1.72047,-0.136 -0.61866,-2.41 -0.1765,-0.444 -0.0553,-0.1 -0.25138,-0.24 -0.94671,-0.821 -0.25673,-0.201 -2.41044,-1.382 -0.2496,0 -2.12162,0.328 0.58656,-8.22"},"48377":{"name":"Presidio, TX","path":"m 368.73312,481.24714 -0.16046,2.498 -0.56338,6.935 -0.8433,11.508 -0.43502,5.352 -3.35001,-1.094 -3.56589,-2.99293 -0.47453,-1.76595 -1.03911,-0.87751 -1.77479,-0.62047 -1.13595,-1.08853 -1.97327,-1.81686 -0.39491,-2.0088 -2.25246,-4.39185 -0.25632,-2.82142 0.55476,-1.20503 -0.18294,-3.01081 -0.92218,-1.40703 -1.10648,-2.06675 -0.55503,-0.6808 -0.20393,-2.23345 -0.73463,-2.64057 -1.04476,-0.667 0.12123,-0.103 20.30905,7.02976 1.98433,0.163"},"48109":{"name":"Culberson, TX","path":"m 351.44107,443.05414 15.94955,1.43 -3.26265,20.394 -16.91409,8.677 0.3851,-3.943 0.18542,-0.669 0.19255,-1.357 1.30863,-15.17 0.49207,-6.253 0.29596,-3.237 1.36746,0.128"},"48475":{"name":"Ward, TX","path":"m 390.57328,454.34514 0.61865,0.04 -0.58656,8.221 -1.39777,0.09 -0.83617,-0.836 -0.55447,-0.492 -0.61865,-0.371 -1.23018,-0.513 -0.94683,-0.3856 -0.20312,0.4456 -0.72207,-0.02 -0.46533,-0.05 -0.99662,-0.224 -1.75156,-1.35085 -3.63271,-0.43215 -0.24782,-0.259 -0.22642,-0.403 -0.19255,-1.155 0.0481,-1.376 0.11232,-0.788 -0.11946,-0.487 -0.32269,-0.517 -1.53506,-0.342 5.51442,0.44 10.29251,0.765"},"48495":{"name":"Winkler, TX","path":"m 386.15354,443.96214 5.13467,0.408 -0.71493,9.975 -10.29251,-0.765 0.64183,-8.012 1.14104,0.09 1.00376,0.07 1.36746,0.106 1.09111,0.09 0.47603,0.03 0.15154,-1.993"},"48301":{"name":"Loving, TX","path":"m 368.24996,444.55714 4.98134,0.408 7.6913,0.603 -0.64183,8.012 -5.51442,-0.44 -0.41719,-0.917 0.14106,-0.42939 -1.10559,-0.96961 -0.19255,-0.04 -0.3851,0.08 -0.0161,0.05 -0.0481,0.04 -0.17829,0 -0.42432,-0.1 -0.15333,-0.202 -0.82482,-0.87348 -0.35468,-2.51898 -0.94236,0.18434 -0.47222,-0.52088 -1.14282,-2.377"},"48389":{"name":"Reeves, TX","path":"m 367.39062,444.48414 0.85934,0.07 1.14282,2.377 0.47222,0.52088 0.94236,-0.18434 0.35468,2.51898 0.82482,0.87348 0.15333,0.202 0.42432,0.1 0.17829,0 0.0481,-0.04 0.0161,-0.05 0.3851,-0.08 0.19255,0.04 1.10559,0.96961 -0.14106,0.42939 0.41719,0.917 1.53506,0.342 0.32269,0.517 0.11946,0.487 -0.11232,0.788 -0.0481,1.376 0.19255,1.155 0.22642,0.403 0.24782,0.259 3.63271,0.43215 1.75156,1.35085 0.99662,0.224 0.46533,0.05 0.72207,0.02 0.20312,-0.4456 0.94683,0.3856 -12.32498,13.002 -9.51518,-8.606 3.26265,-20.394"},"48243":{"name":"Jeff Davis, TX","path":"m 373.64315,473.48414 2.6743,2.532 -7.58433,5.231 -1.98433,-0.163 -20.30905,-7.02976 0.77414,-0.49924 16.91409,-8.677 9.51518,8.606"},"48043":{"name":"Brewster, TX","path":"m 376.31745,476.01614 16.24016,15.324 4.72639,4.394 -1.02871,0.66 -0.87762,1.48383 -1.6974,-0.64365 -3.58123,1.17582 -0.46533,0.282 -0.0481,0.03 -2.70105,4.404 -1.62241,3.76 -0.77178,2.54222 -0.90938,1.13832 -1.16086,0.15962 -0.72455,1.51848 -1.47855,0.78146 -0.38729,1.9189 -0.85221,0.226 -0.14441,0 -2.34626,-0.587 -1.11586,-1.38791 -0.86134,0.44891 -2.70179,-3.41803 -3.66305,-0.76097 -0.18364,-0.193 -0.80407,-0.827 -0.42611,-0.907 0.43502,-5.353 0.8433,-11.508 0.56338,-6.935 0.16046,-2.498 7.58433,-5.231"},"48443":{"name":"Terrell, TX","path":"m 408.95823,486.98614 -0.76306,11.706 -0.35301,-0.105 -0.1462,-0.05 -1.92015,-0.443 -1.21235,-0.192 -1.92907,0.135 -0.19255,0.104 -1.31041,-0.255 -3.84743,-2.156 -4.72639,-4.394 0.37084,-5.288 4.43578,0.281 0.48138,-7.21 3.98952,0.0981 0.14852,-1.14108 7.27945,0.514 0.28883,-0.03 1.08577,0.224 0.78803,0.635 0.12836,1.453 -0.63616,0.85152 -0.37266,0.99199 -0.74438,0.0627 -0.28067,1.00818 1.02038,1.65871 -1.11705,0.68293 -0.46533,0.854"},"48371":{"name":"Pecos, TX","path":"m 390.60537,462.60314 2.12162,-0.328 0.2496,0 2.41044,1.382 0.25673,0.201 0.94671,0.821 0.25138,0.24 0.0553,0.1 0.1765,0.444 0.61866,2.41 2.67609,1.214 3.87239,1.205 1.25514,0.393 1.99325,1.665 0.7888,3.43706 0.88175,2.22894 0.1034,0.592 -7.27945,-0.514 -0.14852,1.14008 -3.98952,-0.0971 -0.48138,7.21 -4.43578,-0.282 -0.37084,5.288 -16.24016,-15.323 -2.6743,-2.532 12.32498,-13.002 1.23018,0.513 0.61865,0.371 0.55447,0.492 0.83617,0.836 1.39777,-0.09"},"48461":{"name":"Upton, TX","path":"m 399.94226,455.00314 0.60261,0.03 9.97337,0.633 -0.81298,13.129 -10.29251,-0.804 0.52951,-12.992"},"48383":{"name":"Reagan, TX","path":"m 410.51824,455.67014 9.91454,0.593 -0.12836,2.17 -0.0392,0.635 -0.70779,10.319 -9.85214,-0.588 0.81298,-13.129"},"48173":{"name":"Glasscock, TX","path":"m 412.69513,445.73914 8.34918,0.489 -0.61153,10.035 -9.91454,-0.593 0.60083,-10.011 1.57606,0.08"},"48227":{"name":"Howard, TX","path":"m 423.33351,436.26514 -0.73097,10.05 -1.55823,-0.09 -8.34918,-0.489 0.72384,-10.07 9.91454,0.596"},"48033":{"name":"Borden, TX","path":"m 416.53543,425.78514 7.37752,0.362 -0.57052,10.036 -0.009,0.08 -9.91454,-0.596 0.55448,-10.051 2.56198,0.167"},"48169":{"name":"Garza, TX","path":"m 427.02227,416.28614 -0.52238,9.845 -2.58694,0.02 -7.37752,-0.362 0.59548,-9.996 9.89136,0.497"},"48415":{"name":"Scurry, TX","path":"m 426.49989,426.13114 7.33651,0.531 -0.58656,10.093 -9.90741,-0.572 0.57052,-10.036 2.58694,-0.02"},"48335":{"name":"Mitchell, TX","path":"m 423.34243,436.18314 9.90741,0.572 -0.58657,10.123 -3.02909,-0.185 -7.03164,-0.378 0.73097,-10.05 0.009,-0.08"},"48431":{"name":"Sterling, TX","path":"m 421.04431,446.22814 1.55823,0.09 7.03164,0.378 -0.5313,8.984 -0.68106,-0.248 -0.25138,3.286 -7.86602,-0.282 0.12836,-2.17 0.61153,-10.035"},"48235":{"name":"Irion, TX","path":"m 420.26519,459.06814 5.40745,0.314 5.8175,0.386 -0.41719,10.052 -5.37713,-0.176 -6.13842,-0.257 0.70779,-10.319"},"48105":{"name":"Crockett, TX","path":"m 397.69228,467.85914 1.72047,0.136 10.29251,0.804 9.85214,0.588 6.13842,0.257 -0.41719,8.647 -0.49743,9.593 -15.82297,-0.898 0.46533,-0.854 1.11705,-0.68293 -1.02038,-1.65871 0.28067,-1.00818 0.74438,-0.0627 0.37266,-0.99199 0.63616,-0.85152 -0.12836,-1.453 -0.78803,-0.635 -1.08577,-0.224 -0.28883,0.03 -0.1034,-0.592 -0.88174,-2.22894 -0.78881,-3.43706 -1.99325,-1.665 -1.25514,-0.392 -3.87239,-1.206 -2.67609,-1.214"},"48465":{"name":"Val Verde, TX","path":"m 408.95823,486.98614 15.82297,0.898 5.15785,0.248 -0.74703,15.229 -0.20146,4.21 -0.22464,1.72 -0.11232,0.555 -0.80229,1.895 -0.25852,0.378 -0.0802,0.02 -0.61865,-0.112 -4.71035,-4.22 -0.31132,-1.36361 -1.56467,-0.656 -0.39829,-0.66028 -1.26776,-0.53407 0.15349,-1.83045 -1.17997,-0.38361 -0.12986,-0.60436 -1.34091,-0.60295 -0.85325,-1.61767 -0.99663,-0.344 0.16325,-0.6561 -1.23734,0.19073 -0.48349,-1.07433 -1.40016,1.3557 -0.45641,-0.02 -2.685,-0.298 0.76306,-11.706"},"48505":{"name":"Zapata, TX","path":"m 452.15717,558.33114 1.75969,-1.18 0.72385,1.076 7.79471,0.346 -0.32983,11.008 -1.31181,2.74001 -3.35753,2.01799 -0.30487,-1.223 -0.36905,-1.494 0,-0.02 -0.61866,-2.275 -0.49742,-1.262 -1.05368,-1.487 -1.15708,-0.674 0.43391,-0.91779 -0.88255,-1.12546 -0.87782,-0.0228 -0.0802,-0.908 0.025,-0.09 0.0963,-0.08 0.36192,-0.532 0.14442,-1.863 -0.25674,-1.688 -0.20859,-0.332 -0.0178,0 -0.0161,0"},"48247":{"name":"Jim Hogg, TX","path":"m 465.71412,556.74114 3.39944,0.01 0.004,0.32151 0.70319,0.0333 0.03,-0.34915 0.83995,0.0402 -10e-4,0.33617 0.6842,0.009 -0.0668,1.7808 0.60974,0.699 -0.12842,1.97207 0.72968,0.0924 -0.0263,2.01293 0.87269,0.0516 -0.25852,6.191 -11.0003,-0.364 0.32983,-11.008 3.20193,0.14252 0.0768,-1.97452"},"48427":{"name":"Starr, TX","path":"m 462.10559,569.58114 11.0003,0.364 2.10557,0.06 -1.66163,3.542 -1.9469,3.76 -2.2161,4.5 -0.97345,0.138 -1.49404,-0.66 -2.03069,-2.0426 -2.355,-0.69643 -2.63704,-0.41897 -1.18204,-0.763 0.24952,-1.45652 -1.22597,-0.77229 -0.22877,-0.52219 -0.041,-0.158 -0.0321,-0.12 3.35753,-2.01799 1.31181,-2.74001"},"48489":{"name":"Willacy, TX","path":"m 495.90345,574.55714 0.6347,0.02 1.27654,4.306 -0.35301,0 -1.55823,-4.322 m -13.25207,-0.483 1.65392,0.36544 9.04152,0.0676 -0.25305,2.09999 -1.19075,0.15018 0.66888,2.03293 1.47271,0.80672 -0.8112,1.007 -1.77465,0.73318 -6.9425,-1.23 0.0321,-1.687 -0.95562,-0.306 -1.98433,-0.352 0.1765,-0.98 0.27278,-1.013 0.5937,-1.695"},"48215":{"name":"Hidalgo, TX","path":"m 475.21146,570.00914 6.9425,0.199 -0.12365,3.7799 0.62107,0.0861 -0.5937,1.695 -0.27278,1.013 -0.1765,0.98 1.98433,0.352 0.95562,0.306 -0.0321,1.687 -0.12837,6.518 -0.14441,-0.03 -0.41006,-0.06 -1.87201,0.02 -0.62579,0.01 -0.0802,0.103 -0.68462,0.273 -2.57981,-0.497 -1.51722,-0.298 -0.47425,-0.257 -0.29774,-0.2 -2.20897,-1.504 -1.05368,-1.259 -0.5616,-0.267 -0.0481,-0.02 -2.42827,-0.827 -0.0143,0 2.2161,-4.5 1.9469,-3.76 1.66163,-3.542"},"48047":{"name":"Brooks, TX","path":"m 471.30698,558.92614 5.99401,0.209 3.58357,0.114 1.48692,0.0544 -0.025,1.15763 -0.19255,9.747 -6.9425,-0.199 -2.10557,-0.06 0.25852,-6.19 -0.87269,-0.0516 0.0263,-2.01293 -0.72968,-0.0924 0.12842,-1.97207 -0.60974,-0.699"},"48261":{"name":"Kenedy, TX","path":"m 494.99419,559.12114 0.53129,0 -0.0642,0.219 -0.29061,1.318 -0.16759,1.117 -0.14441,1.364 -0.0642,1.206 0,1.262 0.12836,1.897 0.0963,0.779 0.016,0.08 0.24961,1.448 0.36192,1.638 0.6347,2.313 0.0321,0.09 0.0321,0.09 0.19255,0.629 -0.6347,-0.02 -1.35855,-5.033 0,-2.85 0.0161,-2.422 0.009,-0.955 0.0321,-1.421 0.0874,-1.093 0.0981,-0.555 0.20682,-1.107 m -12.64768,1.341 0.57099,-0.21143 0.1382,-0.54237 1.74206,0.0177 1.25835,-0.61875 1.26564,-0.1838 0.60372,0.37629 1.62205,-0.28563 -0.0481,0.179 0.007,0.401 0.082,0.144 0.12658,0.1 1.76861,0.337 0.46533,-0.04 0.21751,-0.09 0.13728,-0.1 0.0642,-0.104 0.312,-0.144 0.71493,-0.259 0.54734,-0.02 0.0339,0.144 -0.49207,3.213 -1.47897,0.28257 0.60358,2.34543 -1.90052,0.0209 0.48349,2.49319 -0.12197,1.96094 1.7155,1.029 0.50634,2.86 0.0553,0.739 -9.04152,-0.0676 -1.65392,-0.36544 -0.62107,-0.0856 0.12365,-3.7794 0.19255,-9.747"},"48273":{"name":"Kleberg, TX","path":"m 494.99419,559.12114 2.66895,-6.889 0.5313,0.13 -2.66896,6.764 -0.53129,0 m -11.54587,-8.367 1.29556,0.19909 0.76901,1.60191 0.1765,0 10.38165,0.121 -1.03585,3.623 -0.61865,1.487 -0.0642,0.13 -0.16937,0.192 -0.14441,0.09 -1.83101,0.938 -2.66004,-0.128 -1.62205,0.28563 -0.60372,-0.37629 -1.26564,0.1838 -1.25835,0.61875 -1.74206,-0.0177 -0.1382,0.54237 -0.57099,0.21143 0.025,-1.15813 -1.48692,-0.0549 0.15332,-8.543 2.41044,0.05"},"48249":{"name":"Jim Wells, TX","path":"m 477.66291,540.99114 7.18318,0.176 1.82809,0.29173 -0.12366,1.13827 -2.82942,2.468 -0.0321,2.474 -0.24069,3.215 -2.41044,-0.05 -0.15332,8.543 -3.58357,-0.114 0.36192,-18.144"},"48355":{"name":"Nueces, TX","path":"m 501.87428,546.45514 -3.67984,5.907 -0.5313,-0.13 4.10595,-6.067 0.10519,0.29 m -18.42596,4.299 0.24069,-3.215 0.0321,-2.474 2.82942,-2.468 -0.22465,0.54 0.20682,0.835 2.2968,0.37956 0.40425,1.02844 0.52951,0.248 1.05367,0.232 1.46196,0.121 0.1765,-0.596 3.28761,-0.07 1.41382,0.07 -0.36906,0.07 -1.3425,0.61 -0.38688,0.282 -0.271,0.545 -0.041,0.708 0.14441,0.371 0.35301,0.578 0.43502,0.378 0.61866,0.296 1.0198,0.795 -0.64362,1.464 -0.60261,1.205 -10.38165,-0.121 -0.1765,0 -0.76901,-1.60191 -1.29556,-0.19909"},"48409":{"name":"San Patricio, TX","path":"m 486.22782,538.45714 5.14494,1.0718 0.48893,-0.6988 1.79201,0.0421 1.05167,1.01795 1.96026,-0.22716 0.88341,1.28716 2.51741,3.995 -1.40948,1.17168 -1.50016,-0.73168 -1.41382,-0.07 -3.28761,0.07 -0.1765,0.596 -1.46196,-0.121 -1.05367,-0.232 -0.52951,-0.248 -0.40425,-1.02844 -2.2968,-0.37956 -0.20682,-0.835 0.22465,-0.54 0.12367,-1.13827 -1.8281,-0.29173 -0.16165,-1.42058 1.54338,-1.28942"},"48057":{"name":"Calhoun, TX","path":"m 506.34215,540.22114 0.27278,-1.054 4.58733,-3.143 0.24069,-0.111 1.06259,-0.458 1.5814,-0.33 0.24247,0.419 -1.93619,0.954 -0.28348,0.128 -0.0232,0.02 -1.478,0.911 -1.49404,1.076 -1.30328,1.021 -1.87915,1.633 -0.041,0.04 -0.0481,0.05 0.4992,-1.155 m 5.18281,-13.725 5.1828,0.899 0.007,0.772 -1.25336,0.586 -1.99324,0.811 -1.62242,-1.479 -0.18541,-0.535 -0.1355,-1.054 m -6.34167,4.676 -0.29596,-0.579 -0.49029,-1.246 1.56715,-1.093 3.05405,-1.045 1.08399,-0.602 -0.29774,0.267 1.06972,2.542 0.0553,0.06 0.89143,0.166 0.56339,0.386 2.35517,2.122 0.18364,0.184 0.16937,0.233 -0.0321,0.154 -3.82604,1.918 -0.1765,0.07 -1.478,0.417 -0.51525,-0.167 -0.14442,-0.138 -1.30149,-1.399 -2.4354,-2.256"},"48391":{"name":"Refugio, TX","path":"m 499.72058,530.05514 5.46271,1.117 2.4354,2.256 -0.44928,2.068 -6.76599,0.986 0.0321,0.467 0.45641,0.611 0.7809,0.468 0.44215,0.06 0.42432,0.01 -0.12658,0.346 -2.57981,1.945 -1.82388,0.884 -0.0642,0 -0.3958,-0.322 -0.88341,-1.28716 -1.96026,0.22716 -1.05167,-1.01795 -1.79201,-0.0421 3.44628,-5.064 4.41261,-3.711"},"48025":{"name":"Bee, TX","path":"m 487.24049,527.24314 1.60815,2.917 2.8694,0.69298 0.0313,1.07502 3.55861,1.839 -3.44628,5.063 -0.48893,0.6988 -5.14494,-1.0718 0.19255,-0.15 -5.47876,-11.073 1.71868,-0.586 1.84171,-0.635 0.26386,0.16 0.16046,0.28 0.71493,0.396 0.63649,0.264 0.96275,0.13"},"48297":{"name":"Live Oak, TX","path":"m 480.82929,524.38914 1.831,2.259 -1.71868,0.586 5.47876,11.073 -0.19255,0.15 -1.54338,1.28942 0.16165,1.42058 -7.18318,-0.176 -2.01821,-0.05 0.29774,-12.678 4.88685,-3.874"},"48311":{"name":"McMullen, TX","path":"m 466.51819,527.42714 9.44208,0.128 -0.31557,13.386 -9.56153,-0.246 0.43502,-13.268"},"48131":{"name":"Duval, TX","path":"m 466.08317,540.69514 9.56153,0.246 2.01821,0.05 -0.36192,18.144 -5.99401,-0.209 0.0668,-1.7808 -0.6842,-0.009 0.001,-0.33617 -0.83995,-0.0402 -0.03,0.34915 -0.70319,-0.0333 -0.004,-0.32151 -3.39944,-0.01 0.36905,-16.046"},"48479":{"name":"Webb, TX","path":"m 437.55725,536.45214 1.95224,0.06 14.64985,0.426 -0.041,3.977 11.96484,-0.224 -0.36905,16.046 -0.0768,1.97452 -3.20193,-0.14252 -7.79471,-0.345 -0.72385,-1.077 -1.75969,1.18 -0.34587,-0.03 -0.44037,-0.277 -0.041,-0.01 -0.13659,-0.42165 -0.0874,-0.1 -0.0321,-0.04 -0.016,-0.02 -0.0232,-0.09 0.0945,-0.128 0.0154,-1.01735 0.3227,-0.763 0.12124,-0.442 0.21572,-1.719 -0.59753,-0.36584 -0.13344,-1.66816 -0.42611,-0.747 -0.27456,-0.202 -0.90748,-0.659 -0.46533,-0.08 -0.86281,-0.0205 -1.43814,-0.90938 -1.55219,-2.14971 -0.53457,-0.0674 -0.63471,-0.754 -0.35671,-1.02034 0.13618,-1.02898 -0.65854,-0.6863 -0.0105,-1.12325 -1.20619,-0.5387 -0.333,-1.52936 -0.0527,-0.12855 -1.423,-1.82852 -0.0981,-0.08 -2.41757,-1.238"},"48283":{"name":"La Salle, TX","path":"m 466.53245,527.21814 -0.0143,0.209 -0.43502,13.268 -11.96484,0.224 0.041,-3.977 0.32091,-9.965 12.0522,0.241"},"48127":{"name":"Dimmit, TX","path":"m 439.94273,526.22914 14.27187,0.739 0.26565,0 -0.32091,9.965 -14.64985,-0.426 0.43324,-10.287"},"48323":{"name":"Maverick, TX","path":"m 440.4348,516.21814 -0.49207,10.011 -0.43324,10.287 -1.95224,-0.06 -0.0731,-0.08 -0.86647,-0.955 -0.64362,-0.828 0.098,-1.37007 -0.99371,-1.44058 0.51668,-2.27341 -1.34275,-1.02768 0.12134,-1.03817 -0.76389,-0.43827 -0.11865,-0.72163 -1.01563,-0.96593 -0.099,-1.42992 -0.64414,-1.89276 -0.98324,-1.69784 -0.93334,-1.27482 -0.60056,-3.27492 11.2196,0.476"},"48271":{"name":"Kinney, TX","path":"m 429.19202,503.36114 11.75625,0.564 -0.51347,12.293 -11.2196,-0.476 -2.32129,-3.719 0.61865,0.112 0.0802,-0.02 0.25852,-0.378 0.80229,-1.895 0.11232,-0.555 0.22464,-1.72 0.20146,-4.21"},"48137":{"name":"Edwards, TX","path":"m 441.52592,488.62414 7.1921,0.296 -0.26565,4.96 -1.75078,-0.06 -2.41935,-0.289 -1.18918,4.363 -0.21751,3.316 0.0321,2.797 -1.95937,-0.08 -11.75625,-0.564 0.74703,-15.229 11.58687,0.492"},"48385":{"name":"Real, TX","path":"m 448.45237,493.88014 1.35141,0.05 -0.14441,3.006 0.40115,0.811 1.32645,0.08 -0.2496,6.418 -8.22973,-0.241 -0.0321,-2.797 0.21751,-3.316 1.18918,-4.363 2.41935,0.289 1.75078,0.06"},"48463":{"name":"Uvalde, TX","path":"m 440.94827,503.92514 1.95937,0.08 8.22973,0.241 3.82426,0.135 -0.48138,12.281 -14.04545,-0.442 0.51347,-12.293"},"48507":{"name":"Zavala, TX","path":"m 454.48025,516.66014 -0.26565,10.308 -14.27187,-0.739 0.49207,-10.011 14.04545,0.442"},"48163":{"name":"Frio, TX","path":"m 466.75175,517.07714 -0.2193,10.141 -12.0522,-0.241 -0.26565,0 0.26565,-10.308 12.2715,0.417"},"48175":{"name":"Goliad, TX","path":"m 496.87512,522.91114 1.49404,0 0.58656,0.271 0.29061,0.588 0.3851,0.997 0.0891,5.295 -4.41261,3.712 -3.55861,-1.838 -0.0313,-1.07552 -2.8694,-0.69348 -1.60815,-2.917 4.18796,-3.25 3.21451,-2.512 0.12659,0 0.53129,0.201 0.89144,0.498 0.27456,0.242 0.40828,0.489"},"48469":{"name":"Victoria, TX","path":"m 503.58584,517.50514 0.75415,0.938 2.00216,0.884 0.1355,0.1 1.44591,2.86 2.29812,4.268 -0.11945,0.06 -1.08399,0.602 -3.05405,1.045 -1.56715,1.093 0.49029,1.246 0.29596,0.58 -5.46271,-1.118 -0.0891,-5.295 -0.3851,-0.997 -0.29061,-0.588 -0.58656,-0.271 -1.49404,0 6.71072,-5.406"},"48123":{"name":"DeWitt, TX","path":"m 498.36203,511.01014 5.22381,6.495 -6.71072,5.406 -0.40828,-0.489 -0.27456,-0.242 -0.89144,-0.498 -0.53129,-0.201 -0.12659,0 -3.21451,2.512 -3.56931,-4.497 2.90073,-2.298 7.60216,-6.188"},"48255":{"name":"Karnes, TX","path":"m 488.48671,514.58614 2.27316,2.612 -2.90073,2.298 3.56931,4.497 -4.18796,3.25 -0.96275,-0.13 -0.63649,-0.264 -0.71493,-0.396 -0.16046,-0.28 -0.26386,-0.16 -1.84171,0.635 -1.831,-2.259 -1.82388,-2.225 9.4813,-7.578"},"48493":{"name":"Wilson, TX","path":"m 486.30091,510.99414 -0.47591,0.59633 2.66171,2.99567 -9.4813,7.578 -4.2361,-5.417 5.68914,-7.377 0.12123,1.182 0.0713,0.289 0.16937,0.306 0.57765,-0.321 4.90289,0.168"},"48013":{"name":"Atascosa, TX","path":"m 466.86407,513.41314 7.90524,3.334 4.2361,5.417 1.82388,2.225 -4.88685,3.874 0.0178,-0.708 -9.44208,-0.128 0.0143,-0.209 0.2193,-10.141 0.11232,-3.664"},"48325":{"name":"Medina, TX","path":"m 467.1208,503.32914 -0.25673,10.084 -0.11232,3.664 -12.2715,-0.417 0.48138,-12.281 8.5649,0.378 0.13728,0.213 0.0161,0.11 -0.0642,0.25 -0.17472,0.264 0.007,0.46 0.11945,0.272 0.0802,0.07 0.0731,0.01 0.90035,-0.211 2.49958,-2.867"},"48019":{"name":"Bandera, TX","path":"m 451.38697,497.82614 6.16338,0.288 2.31417,0.296 1.05189,0.546 4.05068,2.218 2.72423,1.494 -0.57052,0.661 -2.49958,2.867 -0.90035,0.211 -0.0731,-0.01 -0.0802,-0.07 -0.11945,-0.272 -0.007,-0.46 0.17472,-0.264 0.0642,-0.25 -0.0161,-0.11 -0.13728,-0.213 -8.5649,-0.377 -3.82426,-0.136 0.2496,-6.418"},"48265":{"name":"Kerr, TX","path":"m 457.68585,489.33914 -0.0963,3.495 7.57719,0.162 -0.19968,8.178 -4.05068,-2.218 -1.05189,-0.546 -2.31417,-0.296 -6.16338,-0.288 -1.32645,-0.08 -0.40115,-0.811 0.14441,-3.006 -1.35141,-0.05 0.26565,-4.96 8.96783,0.419"},"48171":{"name":"Gillespie, TX","path":"m 457.82313,484.44514 6.72499,0.255 7.37751,0.186 -0.15332,8.285 -6.60554,-0.175 -7.57719,-0.162 0.23355,-8.389"},"48031":{"name":"Blanco, TX","path":"m 476.70729,485.33014 4.41082,1.478 -0.98058,1.583 -2.64399,7.247 -2.37835,2.241 -3.34288,-4.708 0.15332,-8.285 3.83453,0.0752 0.94713,0.36882"},"48259":{"name":"Kendall, TX","path":"m 465.16677,492.99614 6.60554,0.175 3.34288,4.708 -4.74957,4.291 -2.6743,0.498 -2.72423,-1.494 0.19968,-8.178"},"48029":{"name":"Bexar, TX","path":"m 470.36562,502.17014 1.82388,-0.224 0.16224,0 2.54594,0.33 1.23018,0.987 0.85221,2.532 0.19968,0.635 0.57052,0.442 0.97345,0.312 1.9041,1.278 0.0321,0.683 -0.20146,0.216 -5.68914,7.377 -7.90524,-3.334 0.25673,-10.084 0.57052,-0.661 2.6743,-0.497"},"48187":{"name":"Guadalupe, TX","path":"m 485.82667,499.94514 2.10786,2.84351 2.64171,2.01849 -4.27533,6.187 -4.90289,-0.168 -0.57765,0.321 -0.16937,-0.306 -0.0713,-0.289 -0.12123,-1.182 0.20146,-0.216 -0.0321,-0.683 -1.9041,-1.278 -0.97345,-0.312 -0.57052,-0.442 -0.19968,-0.635 6.31493,-3.48 2.53167,-2.379"},"48091":{"name":"Comal, TX","path":"m 477.49354,495.63814 5.22381,4.468 0.57765,2.218 -6.31493,3.48 -0.85221,-2.532 -1.23018,-0.987 -2.54594,-0.33 -0.16224,0 -1.82388,0.224 4.74957,-4.291 2.37835,-2.241"},"48209":{"name":"Hays, TX","path":"m 480.13753,488.39114 9.04807,7.802 -1.10182,0.987 -2.61903,2.163 -0.12837,0.61 0.18542,0.03 0.30487,-0.04 -2.53167,2.378 -0.57765,-2.218 -5.22381,-4.468 2.64399,-7.247"},"48055":{"name":"Caldwell, TX","path":"m 489.1856,496.19314 1.1963,-1.013 6.58236,6.596 -5.34326,3.38638 -1.04475,-0.35638 -2.64171,-2.01849 -2.10786,-2.84351 -0.30487,0.04 -0.18542,-0.03 0.12837,-0.61 2.61903,-2.163 1.10182,-0.987"},"48177":{"name":"Gonzales, TX","path":"m 496.92325,501.81714 3.97363,3.13693 -0.52556,0.50407 -1.23018,1.07 0.0161,1.678 -0.79516,2.804 -7.60216,6.188 -2.27316,-2.612 -2.66171,-2.99567 0.47591,-0.59633 4.27533,-6.187 1.04471,0.35587 5.3023,-3.34587"},"48285":{"name":"Lavaca, TX","path":"m 500.37132,505.45814 5.38249,-0.05 0.16937,0.05 0.37084,0.225 1.08398,1.012 4.61942,5.568 -1.97542,1.632 -5.68201,4.548 -5.97796,-7.433 0.79516,-2.804 -0.0161,-1.678 1.23018,-1.07"},"48239":{"name":"Jackson, TX","path":"m 510.022,513.89514 0.36192,0.369 6.63763,6.55 -0.31379,6.581 -5.1828,-0.899 -1.30328,0.06 -2.29812,-4.268 -1.44591,-2.86 -0.1355,-0.1 -2.00216,-0.884 5.68201,-4.548"},"48321":{"name":"Matagorda, TX","path":"m 517.02155,520.81414 6.94071,-4.193 1.83279,-1.899 0.47424,0.451 0.12124,0.121 -0.0217,2.77371 1.50741,0.81469 0.0244,1.7306 2.0567,0.67051 0.45736,1.14611 1.58472,1.42738 1.22126,0.112 -0.3851,0.257 -0.84508,0.539 -0.37618,0.224 -4.55702,2.653 -1.44591,0.731 -2.3623,1.029 -1.56714,0.724 -2.8936,1.478 -1.0198,0.684 -0.0731,0.05 -1.37459,0.962 -0.60261,0.452 -0.16759,0.265 -0.0481,-0.167 0.11945,-0.195 3.26979,-2.458 0.4992,-4.219 -0.0963,-0.103 -0.13549,-0.05 -0.41185,0.06 -0.92174,0.218 -0.3958,0.128 -0.32983,0.262 -0.3851,0.678 -0.007,-0.772 0.31379,-6.581"},"48481":{"name":"Wharton, TX","path":"m 521.4805,506.19614 1.62955,3.955 1.14995,2.137 1.43877,1.6 0.62579,0.08 -0.52951,0.754 -1.83279,1.899 -6.94071,4.193 -6.63763,-6.55 0.72206,-0.409 5.15963,-3.239 0.32983,-0.957 0.96275,-1.951 2.1858,-2.25 1.73651,0.738"},"48089":{"name":"Colorado, TX","path":"m 511.89401,497.91314 0.67571,1.244 0.81834,0.742 0.20146,0.182 1.26227,0.877 0.19968,0.1 0.3548,0.07 1.33595,0.0233 0.5842,1.87374 0.84442,1.64243 1.07573,0.25457 0.49742,0.538 -2.1858,2.25 -0.96275,1.951 -0.32983,0.957 -5.15963,3.239 -0.72206,0.409 -0.36192,-0.369 1.97542,-1.632 -4.61942,-5.568 -1.08398,-1.012 -0.37084,-0.225 -0.16937,-0.05 6.1402,-7.497"},"48021":{"name":"Bastrop, TX","path":"m 496.79489,487.62614 2.65112,1.526 2.32308,1.835 1.08577,4.787 -5.8906,6.002 -6.58236,-6.596 0.87718,-0.804 2.33021,-2.37 2.51384,-4.776 0.69176,0.396"},"48149":{"name":"Fayette, TX","path":"m 507.45823,493.30614 0.51525,0.451 0.65788,-0.135 0.66679,-0.236 0.29774,-0.151 0.76307,0.506 0.29061,0.843 0.18363,0.903 0.041,0.511 1.0198,1.915 -6.1402,7.497 -5.38249,0.05 0.52556,-0.50407 -3.97363,-3.13693 0.041,-0.04 5.8906,-6.002 4.60337,-2.468"},"48287":{"name":"Lee, TX","path":"m 500.36241,486.42114 3.81712,-2.25 2.29099,2.909 1.81496,2.099 2.24998,1.027 -3.07723,3.1 -4.60337,2.468 -1.08577,-4.787 -2.32308,-1.835 -2.65112,-1.526 3.56752,-1.205"},"48015":{"name":"Austin, TX","path":"m 510.87421,495.99814 0.71493,-0.458 5.84068,-0.697 0.36193,0.07 0.91639,0.399 0.98058,0.348 0.46533,0.03 0.21038,-0.249 1.41117,1.29273 -0.62652,4.42765 1.41117,0.73293 0.0452,1.40469 -0.1577,2.83385 -0.96729,0.0582 -1.73651,-0.738 -0.49742,-0.538 -1.07573,-0.25457 -0.84442,-1.64243 -0.5842,-1.87374 -1.33595,-0.0233 -0.3548,-0.07 -0.19968,-0.1 -1.26227,-0.877 -0.20146,-0.182 -0.81834,-0.742 -0.67571,-1.244 -1.0198,-1.915"},"48477":{"name":"Washington, TX","path":"m 517.3175,488.32714 0.21751,0.288 0.22464,0.161 0.14263,0.05 1.07864,-0.369 0.33875,-0.41 0.13549,-0.104 0.26565,0.03 0.55447,0.585 -0.0874,0.91 1.26204,0.61417 -0.0497,1.81183 -1.3909,0.34022 0.0102,1.29537 -0.56339,0.90256 0.90826,1.01285 -0.21038,0.25 -0.46533,-0.03 -0.98058,-0.348 -0.91639,-0.399 -0.36193,-0.07 -5.84068,0.697 -0.71493,0.458 -0.041,-0.512 -0.18363,-0.902 -0.29061,-0.843 -0.76307,-0.506 -0.29774,0.151 -0.66679,0.236 -0.65788,0.135 -0.51525,-0.451 3.07723,-3.1 2.93283,-0.722 0.57943,-0.163 3.00413,-1.093 0.17651,0.03 0.0891,0.07"},"48473":{"name":"Waller, TX","path":"m 521.40027,491.89414 5.74441,-0.474 0.0321,3.567 -1.06794,-0.264 -1.07685,-0.602 -0.40293,-0.38 -0.58656,-0.435 0.27456,0.886 2.41935,7.724 -4.13091,1.388 -0.0452,-1.40469 -1.41117,-0.73293 0.62652,-4.42765 -1.41117,-1.29273 -0.90826,-1.0131 0.56339,-0.90281 -0.0102,-1.29562 1.3909,-0.34047"},"48157":{"name":"Fort Bend, TX","path":"m 522.60549,503.30414 4.13091,-1.388 8.05858,4.74 -0.74703,3.238 -1.61462,0.0663 -0.0329,1.08188 -0.29934,0.79884 -0.64896,0.649 -0.68283,0.353 -0.0343,0.68927 -1.73253,-0.70927 -0.77198,-0.275 -0.48704,0.64303 -0.42044,-0.25603 -0.99841,1.038 -0.62579,-0.08 -1.43877,-1.6 -1.14995,-2.137 -1.62955,-3.955 0.96729,-0.0582 0.1577,-2.83385"},"48039":{"name":"Brazoria, TX","path":"m 534.79498,506.65614 1.7364,-0.42937 1.5491,0.18601 0.13106,0.77464 0.74644,-10e-4 -0.312,2.073 2.30525,3.865 1.30149,2.201 -1.45482,2.62 0.21751,0.17 -0.12124,0.248 -5.04552,4.412 -2.62795,1.196 -1.22126,-0.112 -1.58472,-1.42738 -0.45736,-1.14611 -2.0567,-0.67051 -0.0244,-1.7306 -1.50741,-0.81469 0.0217,-2.77371 -0.12124,-0.121 -0.47424,-0.451 0.52951,-0.754 0.99841,-1.038 0.42044,0.25603 0.48704,-0.64303 0.77198,0.275 1.73253,0.70927 0.0343,-0.68927 0.68283,-0.353 0.64896,-0.649 0.29934,-0.79884 0.0329,-1.08188 1.61462,-0.0663 0.74703,-3.238"},"48167":{"name":"Galveston, TX","path":"m 555.90416,506.98414 -0.59548,0.275 -1.78287,0.82 -0.13728,0.06 -0.0874,0.05 -1.60637,0.747 -0.2496,0.118 -0.72206,0.387 -0.13015,0.08 -0.41006,0.259 -0.24069,0.144 -0.0713,0.05 -0.23355,0.179 -0.16937,0.119 -0.0802,0.1 -0.0571,0.05 -0.14441,0.154 -0.0481,0.07 -0.17472,0.266 -0.082,0.121 -0.0963,0.232 -0.041,0.09 -0.60974,0.174 -0.34588,0.02 -0.0713,-0.06 -0.016,-0.269 0.32092,-0.409 1.68838,-1.807 0.17472,-0.127 1.53505,-0.731 1.02871,-0.355 0.25852,-0.03 0.19077,-0.08 -0.10341,-0.25 0,-0.33 3.10933,-0.112 m -12.9686,0.186 0.92353,1.044 3.29652,3.527 1.59745,0.474 -1.09289,0.957 -0.3441,0.266 -1.90589,1.309 -2.39617,1.647 -0.14442,0.1 -0.25673,0.203 -0.72206,0.553 -0.12837,0.105 -0.0731,0.06 -0.28882,0.273 -0.21573,0.201 -0.16937,0.234 -0.21751,-0.17 1.45482,-2.621 -1.30149,-2.2 -2.30525,-3.865 0.312,-2.073 0.96453,0.964 2.00038,-1.03 1.01267,0.05"},"48339":{"name":"Montgomery, TX","path":"m 526.61517,482.58014 4.58732,2.782 2.13053,0 1.29437,0 1.33358,0.09 0.73339,1.28314 0.96409,1.08127 1.19478,0.36034 0.96409,0.90825 1.40669,4.073 -2.00217,1.897 -1.30149,1.23 -0.58657,0.07 -0.35122,-0.08 -0.21216,-0.458 -0.57587,-0.539 -1.44769,-0.777 -2.51385,-1.334 -0.94135,0.819 -1.40669,0.666 -1.31754,0.266 -0.43502,0.04 -0.95562,0.05 -0.0321,-3.567 -0.52951,-8.84"},"48201":{"name":"Harris, TX","path":"m 527.17677,494.98714 0.95562,-0.05 0.43502,-0.04 1.31754,-0.266 1.40669,-0.666 0.94135,-0.819 2.51385,1.334 1.44769,0.777 0.57587,0.539 0.21216,0.458 0.35122,0.08 0.58657,-0.07 1.30149,-1.231 2.00217,-1.896 2.38726,6.47 1.58012,1.72011 -0.56032,3.05789 -1.69551,2.783 -1.01267,-0.05 -2.00038,1.03 -0.96453,-0.964 -0.74644,10e-4 -0.13106,-0.77464 -1.5491,-0.18601 -1.7364,0.42937 -8.05858,-4.74 -2.41935,-7.724 -0.27456,-0.886 0.58656,0.435 0.40293,0.38 1.07685,0.603 1.06794,0.263"},"48071":{"name":"Chambers, TX","path":"m 554.34593,499.34314 1.68659,0.01 0.2193,7.171 -0.0178,0.303 -0.32983,0.153 -3.10933,0.113 -4.18618,-0.667 0.50634,-0.947 0.28882,-1.592 0.007,-0.209 -0.0642,-0.451 -0.5937,-1.171 -0.21751,-0.242 -0.11232,-0.04 -1.02158,0.467 -0.47246,0.249 -2.29812,1.894 0.56032,-3.05789 -1.58012,-1.72011 10.73466,-0.266"},"48199":{"name":"Hardin, TX","path":"m 552.06385,484.74314 9.38503,-0.144 -0.4992,1.219 -0.17472,0.531 -0.21751,0.892 0.0571,0.321 0.36014,0.822 0.0642,0.02 0.20147,0.21 -0.36193,2.241 -0.20681,0.291 0.0713,1.858 -0.12836,-0.13 -1.47265,-0.491 -0.27813,0.04 -1.29615,0.419 -0.0481,0.06 -0.0161,0.256 0.0481,0.364 -0.0553,0.145 -0.26565,0.383 -0.14441,0.08 -2.0093,0.428 -0.31378,-0.06 -0.55447,-0.289 -3.01305,0.07 -2.82942,-8.637 3.876,-0.088 -0.17833,-0.81199"},"48291":{"name":"Liberty, TX","path":"m 546.0538,485.59314 2.31238,0.05 2.82942,8.636 3.01305,-0.06 0.13728,5.128 -10.73466,0.265 -2.38726,-6.47 -1.40669,-4.072 6.23648,-3.473"},"48245":{"name":"Jefferson, TX","path":"m 554.20865,494.21514 0.55447,0.289 0.31378,0.06 2.0093,-0.428 0.14441,-0.08 0.26565,-0.383 0.0553,-0.145 -0.0481,-0.364 0.0161,-0.256 0.0481,-0.06 1.29615,-0.419 0.27813,-0.04 1.47265,0.491 0.12836,0.13 0.0481,0.28 0.41719,1.446 0.0553,0.06 2.76702,1.801 1.66163,0.428 0.25674,0.112 0.30665,0.472 0.0731,0.186 0.0392,0.226 -0.0339,0.523 -0.10896,0.9742 -1.77216,1.43477 0.73544,1.76742 1.32396,0.94861 -1.85597,0.298 -0.49207,0 -0.91461,0 -1.10003,0.259 -1.51187,0.602 -4.40369,2.024 0.0178,-0.303 -0.2193,-7.171 -1.68659,-0.01 -0.13728,-5.128"},"48361":{"name":"Orange, TX","path":"m 568.6392,490.90614 -0.0143,4.441 -2.29098,3.194 0.0339,-0.523 -0.0392,-0.226 -0.0731,-0.186 -0.30665,-0.472 -0.25674,-0.112 -1.66163,-0.428 -2.76702,-1.801 -0.0553,-0.06 -0.41719,-1.446 -0.0481,-0.28 -0.0713,-1.858 4.28959,-0.114 3.67806,-0.127"},"48453":{"name":"Travis, TX","path":"m 481.11811,486.80814 1.59924,-4.517 1.83992,-0.06 0.77911,0.553 0.94136,1.358 0.35122,1.689 0.73276,0.618 0.62757,0.209 0.45642,-0.02 1.3425,-0.472 1.84883,-0.892 0.40115,0 1.26049,0.399 2.80445,1.548 -2.51384,4.776 -2.33021,2.37 -0.87718,0.804 -1.1963,1.012 -9.04807,-7.801 0.98058,-1.584"},"48263":{"name":"Kent, TX","path":"m 436.97069,416.76914 -0.50634,10.029 -2.62795,-0.136 -7.33651,-0.531 0.52238,-9.845 9.94842,0.483"},"48267":{"name":"Kimble, TX","path":"m 454.43211,479.47814 -0.18541,4.846 3.57643,0.121 -0.13728,4.894 -8.96783,-0.419 -7.1921,-0.296 0.4261,-9.636 12.48009,0.49"},"48435":{"name":"Sutton, TX","path":"m 441.95202,478.98814 -0.4261,9.636 -11.58687,-0.492 -5.15785,-0.248 0.49743,-9.593 16.67339,0.697"},"48413":{"name":"Schleicher, TX","path":"m 431.07295,469.82014 11.27309,0.491 -0.39402,8.677 -16.67339,-0.697 0.41719,-8.647 5.37713,0.176"},"48327":{"name":"Menard, TX","path":"m 442.34604,470.31114 10.06073,0.424 -0.10787,3.35282 2.30972,0.10418 -0.17651,5.286 -12.48009,-0.49 0.39402,-8.677"},"48319":{"name":"Mason, TX","path":"m 454.60862,474.19214 7.73052,0.264 -0.0166,0.47326 2.51436,0.0577 -0.28882,9.713 -6.72499,-0.255 -3.57643,-0.121 0.18541,-4.846 0.17651,-5.286"},"48299":{"name":"Llano, TX","path":"m 464.83694,474.98714 10.22298,0.289 1.30863,2.059 -1.14866,0.86179 -0.14841,2.28768 0.53262,2.3941 0.8518,0.45743 0.25138,1.994 -0.94713,-0.36882 -3.83453,-0.0752 -7.37751,-0.186 0.28882,-9.713"},"48053":{"name":"Burnet, TX","path":"m 485.64125,472.90614 1.57606,2.989 -2.67718,2.6359 -1.82278,3.7601 -1.59924,4.517 -4.41082,-1.478 -0.25138,-1.994 -0.85185,-0.45743 -0.53262,-2.3941 0.14841,-2.28768 1.14866,-0.86179 -1.30863,-2.059 0.18363,-2.482 10.3977,0.112"},"48491":{"name":"Williamson, TX","path":"m 487.21731,475.89514 3.4142,0.757 0.58656,0.145 6.05997,2.802 0.74725,0.32667 2.33712,6.49533 -3.56752,1.205 -0.69176,-0.396 -2.80445,-1.547 -1.26049,-0.4 -0.40115,0 -1.84883,0.892 -1.3425,0.472 -0.45642,0.02 -0.62757,-0.208 -0.73276,-0.619 -0.35122,-1.688 -0.94136,-1.359 -0.77911,-0.553 -1.83992,0.06 1.82278,-3.7606 2.67718,-2.6364"},"48051":{"name":"Burleson, TX","path":"m 510.98653,480.24114 1.05903,0.811 -0.11232,0.147 -0.56161,1.059 0,0.06 1.83279,0.437 1.6866,0.786 2.13053,3.038 0.29595,1.744 -0.0891,-0.07 -0.17651,-0.03 -3.00413,1.092 -0.57943,0.163 -2.93283,0.722 -2.24998,-1.027 -1.81496,-2.099 -2.29099,-2.909 6.807,-3.93"},"48407":{"name":"San Jacinto, TX","path":"m 536.52258,477.26714 0.334,-0.892 1.44826,-0.14916 0.0121,1.08891 0.73018,0.74225 1.43104,0.94353 0.43669,2.3903 1.47665,0.13701 0.38716,1.27604 -0.42996,0.58271 1.59483,0.15542 2.38719,0.79922 -0.4356,0.92302 0.15868,0.32875 -6.23648,3.473 -0.96409,-0.90825 -1.19478,-0.36034 -0.96409,-1.08127 -0.73339,-1.28314 0.56161,-8.166"},"48471":{"name":"Walker, TX","path":"m 534.3867,472.72314 0.84562,4.43962 1.29026,0.10438 -0.56161,8.166 -1.33358,-0.09 -1.29437,0 -2.13053,0 -4.58732,-2.782 -0.65075,-5.368 4.82801,-1.542 3.59427,-2.947"},"48185":{"name":"Grimes, TX","path":"m 519.93832,478.15214 6.0261,-0.94 0.65075,5.368 0.52951,8.84 -5.74441,0.474 0.0497,-1.81183 -1.26204,-0.61417 1.38886,-2.067 -0.70602,-0.49 -0.14619,-0.257 -0.22464,-0.415 -0.92353,-3.097 0.16759,-2.378 0.19433,-2.612"},"48041":{"name":"Brazos, TX","path":"m 519.93832,478.15214 -0.19433,2.612 -0.16759,2.378 0.92353,3.097 0.22464,0.415 0.14619,0.257 0.70602,0.49 -1.38886,2.067 0.0874,-0.91 -0.55447,-0.584 -0.26565,-0.03 -0.13549,0.104 -0.33875,0.41 -1.07864,0.369 -0.14263,-0.05 -0.22464,-0.161 -0.21751,-0.288 -0.29595,-1.744 -2.13053,-3.038 -1.6866,-0.786 -1.83279,-0.437 0,-0.06 0.56161,-1.059 0.11232,-0.147 2.18758,-1.107 0.53842,-0.939 0.39224,-0.91 0.44215,-0.841 0.53129,-0.829 0.24782,-0.323 0.3227,-0.28 0.58656,-0.403 0.80408,-0.531 0.41719,-0.2 1.42273,3.463"},"48313":{"name":"Madison, TX","path":"m 518.51559,474.68914 1.36568,-0.474 1.77574,-1.18 2.07348,-1.061 4.163,-0.06 2.44771,0.32687 -0.5536,1.54963 0.2801,0.93825 0.72473,0.93825 -4.82801,1.542 -6.0261,0.94 -1.42273,-3.463"},"48289":{"name":"Leon, TX","path":"m 528.3499,462.48414 0.20147,0.337 0.36192,0.811 0.87539,2.505 -0.44037,1.12 -0.082,-0.02 -0.16759,0.1 -0.44216,0.497 -0.98771,3.124 0.0232,0.299 0.20147,0.66 -4.163,0.06 -2.07348,1.061 -1.77574,1.18 -1.36568,0.474 -1.51187,-8.83 1.62419,-1.287 8.79133,-4.714 0.11633,0.32825 0.27087,-0.0967 -0.0382,-0.67621 0.32881,-0.17398 0.48335,0.94638 -0.1541,1.04296 -0.75291,0.65663 0.67651,0.59868"},"48395":{"name":"Robertson, TX","path":"m 511.541,468.96814 5.46272,-3.109 1.51187,8.83 -0.41719,0.2 -0.80408,0.531 -0.58656,0.403 -0.3227,0.28 -0.24782,0.323 -0.53129,0.829 -0.44215,0.841 -0.39224,0.91 -0.53842,0.939 -2.18758,1.107 -1.05903,-0.811 -0.94849,-2.385 -1.69551,-2.17 -1.14995,-3.359 -0.23355,-0.747 4.58197,-2.612"},"48331":{"name":"Milam, TX","path":"m 506.95903,471.58014 0.23355,0.747 1.14995,3.359 1.69551,2.17 0.94849,2.385 -6.807,3.93 -3.81712,2.25 -2.33712,-6.49533 -0.74725,-0.32667 1.15709,-3.136 3.75294,-2.175 4.77096,-2.708"},"48027":{"name":"Bell, TX","path":"m 495.43634,466.51714 1.35088,1.81191 1.38939,-0.84591 4.01146,6.805 -3.75294,2.175 -1.15709,3.136 -6.05997,-2.802 -0.58656,-0.145 -3.4142,-0.757 -1.57606,-2.989 0.10519,-0.788 9.6899,-5.601"},"48099":{"name":"Coryell, TX","path":"m 491.88486,460.29814 3.55148,6.219 -9.6899,5.601 -5.15962,-9.194 8.18159,-4.635 1.44047,-0.7617 1.67598,2.7707"},"48281":{"name":"Lampasas, TX","path":"m 478.77899,463.97814 1.80783,-1.054 5.15962,9.194 -0.10519,0.788 -10.3977,-0.112 -2.2892,-4.685 5.82464,-4.131"},"48333":{"name":"Mills, TX","path":"m 475.16333,457.72514 3.61566,6.253 -5.82464,4.131 -0.0499,-0.275 -0.74702,-1.631 -2.57982,-2.264 -0.89854,-0.33439 -3.52654,-0.50261 -0.50812,-0.666 0.0731,-0.41 1.01267,-0.637 3.21452,-2.152 0.44215,-1.759 1.79,-0.241 3.46429,-0.41543 0.52221,0.90343"},"48411":{"name":"San Saba, TX","path":"m 464.71749,462.02614 -0.0731,0.41 0.50812,0.666 3.52654,0.50261 0.89854,0.33439 2.57982,2.264 0.74702,1.631 0.0499,0.275 2.2892,4.685 -0.18363,2.482 -10.22298,-0.289 -2.51436,-0.0577 0.0166,-0.47326 0.42433,-11.956 0.97701,-0.79972 0.97701,0.32572"},"48307":{"name":"McCulloch, TX","path":"m 460.57054,462.28214 2.19293,0.218 -0.42433,11.956 -7.73052,-0.264 -2.30972,-0.10418 0.10787,-3.35282 0.37797,-9.303 1.26941,0.248 0.88786,0.74052 0.88787,-0.46652 2.2904,0.93516 1.48572,-0.83516 0.96454,0.233"},"48095":{"name":"Concho, TX","path":"m 450.51871,459.38914 2.26603,2.043 -0.37797,9.303 -10.06073,-0.424 0.57052,-11.314 7.60215,0.392"},"48451":{"name":"Tom Green, TX","path":"m 429.10288,455.67714 11.49238,0.617 -0.15694,2.56507 2.47824,0.13793 -0.57052,11.314 -11.27309,-0.491 0.41719,-10.052 -5.8175,-0.386 -5.40745,-0.314 0.0392,-0.635 7.86602,0.282 0.25138,-3.286 0.68106,0.248"},"48081":{"name":"Coke, TX","path":"m 429.63418,446.69314 3.02909,0.185 8.34918,0.457 -0.41719,8.959 -11.49238,-0.617 0.5313,-8.984"},"48399":{"name":"Runnels, TX","path":"m 442.62773,447.40114 8.49359,0.369 -0.60261,11.619 -7.60215,-0.392 -2.47824,-0.13793 0.15694,-2.56507 0.41719,-8.959 1.61528,0.07"},"48083":{"name":"Coleman, TX","path":"m 452.72769,447.85014 8.45437,0.348 -0.61152,14.084 -0.96454,-0.233 -1.48572,0.83516 -2.2904,-0.93516 -0.88787,0.46652 -0.88786,-0.74052 -1.26941,-0.248 -2.26603,-2.043 0.60261,-11.619 1.60637,0.08"},"48049":{"name":"Brown, TX","path":"m 462.68324,448.24414 3.77077,0.153 4.72282,8.84 -1.79,0.241 -0.44215,1.759 -3.21452,2.152 -1.01267,0.637 -0.97701,-0.32572 -0.97701,0.79972 -2.19293,-0.218 0.61152,-14.084 1.50118,0.05"},"48093":{"name":"Comanche, TX","path":"m 473.81191,444.38114 4.15587,7.486 1.50296,-0.858 0.80229,1.462 0.96632,1.767 -6.07602,3.487 -0.52221,-0.90343 -3.46429,0.41543 -4.72282,-8.84 7.3579,-4.016"},"48193":{"name":"Hamilton, TX","path":"m 480.27303,452.47114 4.00254,-2.227 4.49284,8.045 -8.18159,4.635 -1.80783,1.054 -3.61566,-6.253 6.07602,-3.487 -0.96632,-1.767"},"48035":{"name":"Bosque, TX","path":"m 491.93478,446.10814 2.68322,0.738 -0.21751,1.423 -0.13728,1.196 0.10519,0.974 1.4376,-0.33351 0.35728,0.74681 0.61562,0.30059 -1.07532,1.14606 1.10033,1.36677 1.7814,0.68569 -1.13076,1.64859 0.23355,0.36 0.64897,0.403 -6.45221,3.535 -1.67598,-2.7707 -1.44047,0.7617 -4.49284,-8.045 2.75632,-1.542 4.90289,-2.594"},"48145":{"name":"Falls, TX","path":"m 507.5866,462.00114 3.9544,6.967 -4.58197,2.612 -4.77096,2.708 -4.01146,-6.805 9.40999,-5.482"},"48309":{"name":"McLennan, TX","path":"m 505.06384,457.68614 2.52276,4.315 -9.40999,5.482 -1.38939,0.84591 -1.35088,-1.81191 -3.55148,-6.219 6.45221,-3.535 4.71747,-2.652 2.0093,3.575"},"48217":{"name":"Hill, TX","path":"m 494.618,446.84614 7.58433,-2.016 2.70578,4.95714 0.94376,-0.50514 3.39101,6.001 -4.17904,2.403 -2.0093,-3.575 -4.71747,2.652 -0.64897,-0.403 -0.23355,-0.36 1.13076,-1.64859 -1.7814,-0.68569 -1.10033,-1.36677 1.07532,-1.14606 -0.61562,-0.30059 -0.35728,-0.74681 -1.4376,0.33351 -0.10519,-0.974 0.13728,-1.196 0.21751,-1.423"},"48293":{"name":"Limestone, TX","path":"m 509.24288,455.28314 4.3306,0.458 5.05443,8.831 -1.62419,1.287 -5.46272,3.109 -3.9544,-6.967 -2.52276,-4.315 4.17904,-2.403"},"48161":{"name":"Freestone, TX","path":"m 522.23466,450.92914 -0.17472,1.075 1.72581,3.206 1.24623,1.255 0.65966,0.242 1.55823,1.838 0.16937,1.313 -8.79133,4.714 -5.05443,-8.831 8.62195,-4.965 0.0392,0.153"},"48349":{"name":"Navarro, TX","path":"m 505.85187,449.28214 9.97872,-5.804 1.82566,0.844 1.06081,0.966 0.68997,0.827 1.64737,1.994 0.90035,1.34 0.24068,1.327 -8.62195,4.965 -4.3306,-0.458 -3.39101,-6.001"},"48425":{"name":"Somervell, TX","path":"m 485.53785,445.30614 3.23479,-1.89389 3.20137,0.0449 -0.0392,2.651 -4.90289,2.594 -1.49404,-3.396"},"48139":{"name":"Ellis, TX","path":"m 502.26651,438.28014 0.94136,0.03 9.82005,0.163 1.48513,4.305 1.31754,0.697 -9.97872,5.804 -0.94376,0.50514 -2.70578,-4.95714 0.0642,-6.55"},"48251":{"name":"Johnson, TX","path":"m 492.03106,438.00014 1.28366,0.03 8.95179,0.255 -0.0642,6.55 -7.58433,2.016 -2.68322,-0.738 0.0392,-2.651 0.0571,-5.457"},"48221":{"name":"Hood, TX","path":"m 483.35205,437.75014 8.67901,0.25 -0.0571,5.457 -3.20137,-0.0449 -3.23479,1.89389 -2.24285,-6.461 0.0571,-1.095"},"48143":{"name":"Erath, TX","path":"m 483.295,438.84514 2.24285,6.461 1.49404,3.396 -2.75632,1.542 -4.00254,2.227 -0.80229,-1.462 -1.50296,0.858 -4.15587,-7.486 1.46177,-0.73757 0.16242,-5.02543 7.8589,0.227"},"48133":{"name":"Eastland, TX","path":"m 463.44809,438.22414 10.03577,0.298 1.95224,0.1 -0.16242,5.02543 -1.46177,0.73757 -7.3579,4.016 -3.77077,-0.153 0.41006,-10.03 0.35479,0.01"},"48059":{"name":"Callahan, TX","path":"m 453.48363,437.87814 9.60967,0.336 -0.41006,10.03 -1.50118,-0.05 -8.45437,-0.348 0.41897,-9.988 0.33697,0.02"},"48441":{"name":"Taylor, TX","path":"m 453.14666,437.86214 -0.41897,9.988 -1.60637,-0.08 -8.49359,-0.369 0.54556,-10.132 9.97337,0.593"},"48353":{"name":"Nolan, TX","path":"m 443.17329,437.26914 -0.54556,10.132 -1.61528,-0.07 -8.34918,-0.457 0.58657,-10.123 9.92345,0.514"},"48151":{"name":"Fisher, TX","path":"m 436.46435,426.79814 7.1921,0.401 -0.48316,10.07 -9.92345,-0.514 0.58656,-10.093 2.62795,0.136"},"48253":{"name":"Jones, TX","path":"m 443.65645,427.19914 2.98096,0.121 7.23132,0.362 -0.3851,10.196 -0.33697,-0.02 -9.97337,-0.593 0.48316,-10.07"},"48417":{"name":"Shackelford, TX","path":"m 453.86873,427.68214 2.70818,0.1 7.20101,0.248 -0.32983,10.196 -0.35479,-0.01 -9.60967,-0.336 0.3851,-10.196"},"48429":{"name":"Stephens, TX","path":"m 466.56633,428.12414 7.20636,0.264 -0.28883,10.134 -10.03577,-0.298 0.32983,-10.196 2.78841,0.1"},"48363":{"name":"Palo Pinto, TX","path":"m 476.66629,427.23314 7.11186,0.273 -0.4261,10.244 -0.0571,1.095 -7.8589,-0.227 -1.95224,-0.1 0.28883,-10.134 2.83496,0.14813 0.0586,-1.30313"},"48367":{"name":"Parker, TX","path":"m 483.77815,427.50614 2.57982,0.103 7.24736,0.289 -0.29061,10.127 -1.28366,-0.03 -8.67901,-0.25 0.4261,-10.244"},"48439":{"name":"Tarrant, TX","path":"m 493.60533,427.89814 2.79554,0.137 7.03164,0.216 -0.22464,10.062 -0.94136,-0.03 -8.95179,-0.255 0.29061,-10.127"},"48113":{"name":"Dallas, TX","path":"m 503.43251,428.25114 3.59962,-0.03 6.30066,0.167 -0.0642,3.89 -0.24068,6.198 -9.82005,-0.163 0.22464,-10.062"},"48397":{"name":"Rockwall, TX","path":"m 517.55284,428.42014 -0.0107,3.229 0.004,0.65247 -4.27725,-0.0235 0.0642,-3.89 4.22005,0.03"},"48257":{"name":"Kaufman, TX","path":"m 517.54214,431.64914 4.24502,0.08 0.007,11.097 -7.28124,-0.05 -1.48513,-4.305 0.24068,-6.198 4.27725,0.0235 -0.004,-0.65247"},"48379":{"name":"Rains, TX","path":"m 525.90024,428.47714 3.7737,0.0668 0.0185,0.36721 0.5937,5.537 -0.87338,-0.14811 -2.00684,-1.19439 -1.02596,0.20065 -1.85427,-1.54315 -0.78292,-0.78395 -0.0694,-0.70884 0.86938,-1.79786 1.35756,0.005"},"48467":{"name":"Van Zandt, TX","path":"m 524.52565,431.76314 1.85427,1.54315 1.02596,-0.20065 2.00684,1.19439 0.87338,0.14811 0.78803,0.765 0.0339,4.778 2.37657,2.532 0.43502,0.331 -12.1253,-0.03 -0.007,-11.097 2.73849,0.03"},"48213":{"name":"Henderson, TX","path":"m 521.79429,442.82814 12.1253,0.03 -0.17651,5.064 0.61688,1.171 -12.1253,1.84 -0.0392,-0.153 -0.24068,-1.327 -0.90035,-1.341 -1.64737,-1.993 -0.68997,-0.827 -1.06081,-0.966 -1.82566,-0.844 -1.31754,-0.697 7.28124,0.05"},"48001":{"name":"Anderson, TX","path":"m 534.35996,449.08914 -0.3441,3.127 0.31379,1.66 0.72384,2.605 1.3639,1.244 0.26565,0.06 0.44393,0.539 0.27278,0.57 0.27991,0.892 0.0571,0.226 -0.27278,0.385 -4.29315,0.669 -3.10041,0.545 -1.72047,0.876 -0.67651,-0.59868 0.75291,-0.65663 0.1541,-1.04296 -0.48335,-0.94638 -0.32881,0.17398 0.0382,0.67621 -0.27087,0.0967 -0.11633,-0.32825 -0.16937,-1.313 -1.55823,-1.838 -0.65966,-0.242 -1.24623,-1.255 -1.72581,-3.206 0.17472,-1.075 12.1253,-1.84"},"48225":{"name":"Houston, TX","path":"m 528.3499,462.48414 1.72047,-0.876 3.10041,-0.545 4.29315,-0.669 1.25336,0.483 0.82238,-0.40647 0.61204,0.75041 0.86444,0.75041 -0.35553,0.89765 2.12161,1.31 0.90035,0.894 -9.29588,7.65 -3.59427,2.947 -0.72474,-0.93825 -0.28009,-0.93825 0.5536,-1.54963 -2.44771,-0.32687 -0.20147,-0.66 -0.0232,-0.299 0.98771,-3.124 0.44216,-0.497 0.16759,-0.1 0.082,0.02 0.44037,-1.12 -0.87539,-2.505 -0.36192,-0.811 -0.20147,-0.337"},"48455":{"name":"Trinity, TX","path":"m 546.00566,470.57414 -6.95854,7.483 -0.73018,-0.74225 -0.0121,-1.08891 -1.44826,0.14916 -0.334,0.892 -1.29026,-0.10438 -0.84562,-4.43962 9.29588,-7.65 2.32308,5.501"},"48373":{"name":"Polk, TX","path":"m 551.55752,472.51214 -1.88093,1.117 2.38726,11.114 0.17833,0.81199 -3.876,0.088 -2.31238,-0.05 -0.15868,-0.32875 0.4356,-0.92302 -2.38719,-0.79922 -1.59483,-0.15542 0.42996,-0.58271 -0.38716,-1.27604 -1.47665,-0.13701 -0.43669,-2.3903 -1.43104,-0.94353 6.95854,-7.483 2.23216,0.935 1.71333,0.36 1.60637,0.643"},"48351":{"name":"Newton, TX","path":"m 570.4185,469.44214 0.91461,-0.24 0.0731,7.288 -0.35479,1.542 -2.8205,5.311 -0.22464,0.804 0,0 0.0571,0.06 0.55447,0.669 0.27991,1.433 -0.007,0.12 -0.0802,0.199 -0.75772,0.637 -0.0214,0.02 0.60796,3.61 -3.67806,0.127 0.29773,-9.761 0.0481,-6.447 -0.99841,-4.821 6.1099,-0.562"},"48241":{"name":"Jasper, TX","path":"m 561.80189,470.59914 2.50671,-0.595 0.99841,4.821 -0.0481,6.447 -0.29773,9.761 -4.28959,0.114 0.20681,-0.291 0.36193,-2.241 -0.20147,-0.21 -0.0642,-0.02 -0.36014,-0.822 -0.0571,-0.321 0.21751,-0.892 0.17472,-0.531 0.4992,-1.219 -0.29774,-0.484 -0.20681,-0.675 0.0535,-0.177 0.44393,-0.854 -0.0963,-0.922 -1.40491,-2.788 -0.17828,-0.152 -0.44394,-0.06 -0.11945,-0.02 -0.0463,-0.06 -1.32646,-3.867 0.1355,-0.77 -0.0713,-0.184 -0.23355,-0.242 -0.9164,-0.353 -1.16599,0.03 -1.95938,0.06 6.42903,-1.631 1.75791,-0.844"},"48457":{"name":"Tyler, TX","path":"m 553.61495,473.07414 1.95938,-0.06 1.16599,-0.03 0.9164,0.353 0.23355,0.242 0.0713,0.184 -0.1355,0.77 1.32646,3.867 0.0463,0.06 0.11945,0.02 0.44394,0.07 0.17828,0.151 1.40491,2.788 0.0963,0.922 -0.44393,0.854 -0.0535,0.177 0.20681,0.675 0.29774,0.484 -9.38503,0.144 -2.38726,-11.114 1.88093,-1.116 2.05743,0.561"},"48005":{"name":"Angelina, TX","path":"m 545.45119,461.83314 0.83438,0.924 3.63171,0.932 0.87717,-0.144 0.7702,0.322 1.03763,0.544 0.2496,0.268 3.26087,3.952 3.93123,2.812 -6.42903,1.631 -2.05743,-0.562 -1.60637,-0.643 -1.71333,-0.36 -2.23216,-0.935 -2.32308,-5.501 -0.90035,-0.894 2.66896,-2.346"},"48403":{"name":"Sabine, TX","path":"m 565.57979,460.11114 2.1127,2.219 1.8007,2.612 0.58656,2.557 0.1355,0.754 0.20325,1.189 -6.1099,0.562 -2.50671,0.595 -0.16759,-0.538 -0.0713,-3.206 0.016,-2.595 0.83438,-0.899 0.32805,-0.419 -0.0784,-2.369 2.91677,-0.462"},"48405":{"name":"San Augustine, TX","path":"m 562.66302,460.57314 0.0784,2.369 -0.32805,0.419 -0.83438,0.899 -0.016,2.595 0.0713,3.206 0.16759,0.538 -1.75791,0.844 -3.93123,-2.812 0.10519,-2.747 0.14441,-5.249 -1.36567,-1.526 -0.46533,-0.323 6.03501,0.644 2.09666,1.143"},"48419":{"name":"Shelby, TX","path":"m 552.21718,451.44214 9.64176,-0.312 2.74027,3.062 0.98058,5.919 -2.91677,0.462 -2.09666,-1.143 -6.03501,-0.644 -1.11786,-4.379 -1.19631,-2.965"},"48347":{"name":"Nacogdoches, TX","path":"m 543.97319,454.51314 9.4403,-0.106 1.11786,4.379 0.46533,0.323 1.36567,1.526 -0.14441,5.249 -0.10519,2.747 -3.26087,-3.952 -0.2496,-0.268 -1.03763,-0.544 -0.7702,-0.322 -0.87717,0.144 -3.63171,-0.932 -0.83438,-0.924 -1.06259,-1.046 -0.0945,-0.152 -0.48138,-1.309 -0.35657,-1.326 -0.2086,-2.059 0.72563,-1.428"},"48073":{"name":"Cherokee, TX","path":"m 533.74308,447.91814 9.21744,-0.132 -0.10349,6.7514 1.11616,-0.0244 -0.72563,1.428 0.2086,2.059 0.35657,1.326 0.48138,1.309 0.0945,0.152 1.06259,1.046 -2.66896,2.346 -2.12161,-1.31 0.35553,-0.89765 -0.86444,-0.75041 -0.61204,-0.75041 -0.82238,0.40647 -1.25336,-0.483 0.27278,-0.385 -0.0571,-0.226 -0.27991,-0.892 -0.27278,-0.57 -0.44393,-0.539 -0.26565,-0.06 -1.3639,-1.244 -0.72384,-2.605 -0.31379,-1.66 0.3441,-3.127 -0.61688,-1.171"},"48365":{"name":"Panola, TX","path":"m 561.1351,441.64014 0.0981,4.523 0.62579,4.967 -9.64176,0.312 -1.71869,0.04 -0.066,-2.458 0.37618,-2.846 0.42611,-1.062 0.61866,-1.091 0.58121,-1.407 0.0143,-0.875 0.55448,0.49 2.09665,0.9 0.16224,0.03 5.87278,-1.525"},"48401":{"name":"Rusk, TX","path":"m 550.75344,441.75814 1.69551,-0.01 -0.0143,0.875 -0.58121,1.407 -0.61866,1.091 -0.42611,1.062 -0.37618,2.846 0.066,2.458 1.71869,-0.04 1.19631,2.965 -9.4403,0.106 -1.11616,0.0244 0.10349,-6.7514 -0.0731,-5.335 3.41598,-0.07 3.2056,-0.03 0.95071,0.16302 0.29373,-0.75102"},"48183":{"name":"Gregg, TX","path":"m 542.81433,438.57714 0.31378,-0.03 2.90964,-1.246 1.14817,-1.597 0.14441,-0.06 0.90749,0.104 0.057,0.112 0.0713,4.598 0.025,0.69 1.14995,0.555 1.0198,0.133 0.19255,-0.07 -0.29373,0.75102 -0.95071,-0.16302 -3.2056,0.03 -3.41598,0.07 -0.0731,-3.874"},"48423":{"name":"Smith, TX","path":"m 531.07413,435.21314 1.74543,1.564 0.55269,0.242 5.55185,1.391 0.13907,-0.02 0.36905,-0.18 0.1765,-0.359 3.20561,0.722 0.0731,3.875 0.0731,5.334 -9.21744,0.132 0.17651,-5.064 -0.43502,-0.331 -2.37657,-2.532 -0.0339,-4.778"},"48499":{"name":"Wood, TX","path":"m 539.53741,427.62714 0.0232,2.562 0.0481,7.666 -0.1765,0.359 -0.36905,0.18 -0.13907,0.02 -5.55185,-1.391 -0.55269,-0.242 -1.74543,-1.564 -0.78803,-0.765 -0.5937,-5.537 6.84622,-0.09 2.58794,0.10808 0.41085,-1.30408"},"48203":{"name":"Harrison, TX","path":"m 548.24673,432.61514 3.79216,2.233 2.36409,-0.02 0.6347,-0.323 2.29099,-0.296 1.35498,-0.112 0.98236,0.12 1.31754,0.49 0.15155,6.935 -5.87278,1.525 -0.16224,-0.03 -2.09665,-0.9 -0.55448,-0.49 -1.69551,0.01 -0.19255,0.07 -1.0198,-0.133 -1.14995,-0.555 -0.025,-0.69 -0.0713,-4.598 -0.0481,-3.238"},"48459":{"name":"Upshur, TX","path":"m 539.56059,430.18914 8.30817,-0.146 0.28169,0.586 0.0963,1.986 0.0481,3.238 -0.057,-0.112 -0.90749,-0.104 -0.14441,0.06 -1.14817,1.597 -2.90964,1.246 -0.31378,0.03 -3.20561,-0.722 -0.0481,-7.666"},"48063":{"name":"Camp, TX","path":"m 539.53741,427.62714 0.49742,-0.492 1.63846,-0.893 0.4261,-0.08 0.34588,0 1.13212,0.02 0.25852,0.09 1.0198,1.262 1.07685,0.738 1.9362,1.783 -8.30817,0.146 -0.0232,-2.562"},"48315":{"name":"Marion, TX","path":"m 549.14708,430.60814 11.75624,-0.243 0.0802,4.34 -1.31754,-0.49 -0.98236,-0.12 -1.35498,0.112 -2.29099,0.296 -0.6347,0.323 -2.36409,0.02 -3.79216,-2.233 -0.0963,-1.986 0.99663,-0.02"},"48067":{"name":"Cass, TX","path":"m 549.05794,421.62014 0.0481,0.222 0.16046,0.128 0.64362,0.126 1.31372,-0.16235 0.84357,-0.46894 1.53295,-0.12426 0.59562,0.75683 2.92228,0.0387 0.041,-0.07 -0.066,-0.208 -0.0553,-0.482 0.30665,-0.545 0.60083,-0.209 0.47425,-0.107 1.7276,0.277 0.40114,0.207 0.16224,0.361 0.12124,5.811 0.0713,3.189 -11.75624,0.243 -0.0891,-8.988"},"48343":{"name":"Morris, TX","path":"m 546.02706,419.46914 1.19987,0.788 1.83101,1.363 0.0891,8.988 -0.99663,0.02 -0.28169,-0.586 -1.9362,-1.783 0.0945,-8.791"},"48449":{"name":"Titus, TX","path":"m 546.02706,419.46914 -0.0945,8.791 -1.07685,-0.738 -1.0198,-1.263 -0.25852,-0.09 -1.13212,-0.02 -0.34588,0 -0.4261,0.08 -1.63846,0.893 -0.066,-8.194 6.0582,0.528"},"48159":{"name":"Franklin, TX","path":"m 539.96886,418.94114 0.066,8.194 -0.49742,0.492 -0.41085,1.30408 -2.58794,-0.10808 -0.0642,-9.563 0.0392,-0.03 1.3023,0.26829 2.1529,-0.55729"},"48223":{"name":"Hopkins, TX","path":"m 525.90737,422.94214 1.57606,-0.935 0.85934,-1.003 1.6398,-0.0548 0.73855,-1.03118 0.4582,-0.193 0.98057,-0.03 4.31455,-0.433 0.0642,9.563 -6.84622,0.09 -0.0184,-0.36721 -3.7737,-0.0668 0.007,-5.535"},"48119":{"name":"Delta, TX","path":"m 525.98047,417.34914 1.48691,-0.692 0.35301,-0.1 2.65113,0.192 0.37083,0.06 2.09666,0.658 0.37084,0.161 1.93619,1.317 1.2284,0.225 0.0392,0.06 -0.0392,0.03 -4.31455,0.433 -0.98057,0.03 -0.4582,0.193 -0.73855,1.03118 -1.6398,0.0548 -0.85934,1.003 -1.57606,0.935 0.0499,-4.395 0.0232,-1.198"},"48231":{"name":"Hunt, TX","path":"m 525.95729,418.54714 -0.0499,4.395 -0.007,5.535 -1.35756,-0.005 -0.86938,1.79786 0.0694,0.70884 0.78292,0.78395 -2.73849,-0.03 -4.24502,-0.08 0.0107,-3.229 0.0624,-8.549 8.34205,-1.324"},"48085":{"name":"Collin, TX","path":"m 507.32095,418.57714 8.59165,0.232 -0.0499,1.3947 1.75258,-0.3327 -0.0624,8.549 -4.22005,-0.03 -6.30066,-0.167 0.28882,-9.644"},"48121":{"name":"Denton, TX","path":"m 496.84302,417.87814 8.39019,0.426 2.08774,0.273 -0.28882,9.644 -3.59962,0.03 -7.03164,-0.216 0.44215,-10.157"},"48497":{"name":"Wise, TX","path":"m 486.62896,417.62114 8.22973,0.152 1.98433,0.105 -0.44215,10.157 -2.79554,-0.137 -7.24736,-0.289 0.27099,-9.988"},"48237":{"name":"Jack, TX","path":"m 477.03712,416.64114 8.44367,0.192 -0.0338,0.76549 1.18197,0.0225 -0.27099,9.988 -2.57982,-0.103 -7.11186,-0.273 0.34587,-8.959 0.025,-1.633"},"48503":{"name":"Young, TX","path":"m 466.82306,417.95114 10.1891,0.323 -0.34587,8.959 -0.0586,1.30313 -2.83496,-0.14813 -7.20636,-0.264 0.25673,-10.173"},"48447":{"name":"Throckmorton, TX","path":"m 456.92278,417.58214 9.90028,0.369 -0.25673,10.173 -2.78841,-0.1 -7.20101,-0.248 0.34587,-10.198"},"48207":{"name":"Haskell, TX","path":"m 447.02251,417.23614 9.90027,0.346 -0.34587,10.198 -2.70818,-0.1 -7.23132,-0.362 0.3851,-10.084"},"48433":{"name":"Stonewall, TX","path":"m 436.97069,416.76914 10.05182,0.467 -0.3851,10.084 -2.98096,-0.121 -7.1921,-0.401 0.50634,-10.029"},"48125":{"name":"Dickens, TX","path":"m 427.51256,406.22014 9.91632,0.449 -0.45819,10.1 -9.94842,-0.483 0.49029,-10.066"},"48345":{"name":"Motley, TX","path":"m 428.09021,395.16314 1.8007,0.09 8.09245,0.374 -0.55448,11.045 -9.91632,-0.449 0.57765,-11.057"},"48191":{"name":"Hall, TX","path":"m 438.01545,385.58314 2.34625,0.12 -0.50633,10.021 -1.87201,-0.1 -8.09245,-0.374 0.54734,-10.052 7.5772,0.385"},"48129":{"name":"Donley, TX","path":"m 438.52891,375.52314 -0.51346,10.06 -7.5772,-0.385 -2.73314,-0.146 0.61866,-10.018 10.20514,0.489"},"48179":{"name":"Gray, TX","path":"m 428.86933,364.93214 10.11778,0.507 -0.4582,10.084 -10.20514,-0.489 0.54556,-10.102"},"48393":{"name":"Roberts, TX","path":"m 429.41667,354.84714 0,-0.06 9.9395,0.53 0.12123,0 -0.49029,10.111 -10.11778,-0.507 0.009,-0.144 0.53843,-9.941"},"48357":{"name":"Ochiltree, TX","path":"m 432.37445,344.69914 7.48092,0.376 -0.4992,10.246 -9.9395,-0.53 0.55447,-10.212 2.40331,0.12"},"48295":{"name":"Lipscomb, TX","path":"m 439.85537,345.07514 9.94841,0.444 -0.37796,10.278 -9.94842,-0.469 -0.12123,0 0.4992,-10.246"},"48211":{"name":"Hemphill, TX","path":"m 449.42582,355.79714 -0.16938,4.04 -0.24782,6.06 -10.02151,-0.458 0.49029,-10.111 9.94842,0.469"},"48483":{"name":"Wheeler, TX","path":"m 438.98711,365.43914 10.02151,0.458 -0.4261,10.093 -10.05361,-0.467 0.4582,-10.084"},"48087":{"name":"Collingsworth, TX","path":"m 438.52891,375.52314 10.05361,0.467 -0.15333,3.519 -0.27278,6.565 -7.79471,-0.371 -2.34625,-0.12 0.51346,-10.06"},"48075":{"name":"Childress, TX","path":"m 440.3617,385.70314 7.79471,0.371 -0.12836,4.275 -0.24961,5.769 -7.92307,-0.394 0.50633,-10.021"},"48101":{"name":"Cottle, TX","path":"m 437.98336,395.62414 1.87201,0.1 7.92307,0.394 -0.0802,2.018 -0.21037,-0.411 -0.52952,0.05 -0.18542,0.202 -0.41719,9.085 -8.92683,-0.392 0.55448,-11.045"},"48269":{"name":"King, TX","path":"m 437.42888,406.66914 8.92683,0.393 0.9895,0.05 -0.3227,10.125 -10.05182,-0.467 0.45819,-10.1"},"48275":{"name":"Knox, TX","path":"m 457.16347,409.85914 -0.24069,7.723 -9.90027,-0.346 0.3227,-10.125 3.05227,0.129 2.50926,0.92567 0.30845,-0.47099 2.66283,0.68632 0.96453,0.683 0.27278,0.497 0.0481,0.298"},"48155":{"name":"Foard, TX","path":"m 447.69821,398.13614 3.43916,2.659 4.00849,0.788 0.87657,0.788 1.13391,-0.187 0.21573,-0.225 0.0731,-0.225 -0.21751,5.804 -0.0642,2.321 -0.0481,-0.298 -0.27278,-0.497 -0.96453,-0.683 -2.66283,-0.68632 -0.30845,0.47099 -2.50926,-0.92567 -3.05227,-0.129 -0.9895,-0.05 0.41719,-9.086 0.18542,-0.201 0.52952,-0.05 0.21037,0.412"},"48197":{"name":"Hardeman, TX","path":"m 450.78258,391.72214 0.98058,1.271 0.47424,0.561 1.31754,1.254 0.57943,0.137 0.16046,0 0.73098,0 0.73276,-0.925 0.10341,-0.04 0.20859,0.03 0.90035,0.105 0.28883,0.121 0.46711,0.273 -0.2817,7.231 -0.0731,0.225 -0.21573,0.225 -1.13391,0.187 -0.87657,-0.788 -4.00849,-0.788 -3.43916,-2.658 0.0802,-2.019 0.24961,-5.769 2.75453,1.373"},"48009":{"name":"Archer, TX","path":"m 467.15289,407.87514 10.05895,0.24 -0.17472,8.526 -0.025,1.633 -10.1891,-0.323 0.32983,-10.076"},"48023":{"name":"Baylor, TX","path":"m 467.15289,407.87514 -0.32983,10.076 -9.90028,-0.369 0.24069,-7.723 0.0642,-2.321 9.92524,0.337"},"48487":{"name":"Wilbarger, TX","path":"m 462.64401,396.10014 -0.0232,0.532 -0.0161,0.499 0.32805,1.783 0,0 0.009,0.01 0.24069,0.07 0.3851,0.119 0.7078,0.161 0.35301,-0.02 0.76307,-0.01 1.74364,0.138 0.025,0 0.26565,0.133 -0.27278,8.351 -9.92524,-0.337 0.21751,-5.803 0.2817,-7.231 0.61865,0.586 0.63471,0.06 0.14441,-0.06 0.016,0 0.025,-0.04 0.007,-0.02 0.8112,-1.454 0.82725,0.45 0.94136,0.506 0.89143,1.551 0,0.02"},"48485":{"name":"Wichita, TX","path":"m 473.87788,400.51314 0.19255,0.01 0.41897,0.277 0.43324,0.369 0.89856,1.446 0.54021,0.194 0.007,0 0.016,-0.02 1.01267,-0.909 -0.18542,6.22 -10.05895,-0.241 0.27278,-8.351 1.75078,1.047 1.74365,0.426 1.23731,0.05 1.72047,-0.53"},"48077":{"name":"Clay, TX","path":"m 483.34313,403.69514 0.32983,0.66 0.0481,0.05 0.0321,0 0.80408,0.241 0.41006,0 0.0232,0 0.65967,-0.161 0.7078,0.28 0.007,0 -0.16938,1.229 -0.49028,1.061 -0.22465,9.771 -8.44367,-0.192 0.17472,-8.526 0.18542,-6.22 0.76307,-0.965 0.36905,-0.208 0.72385,0.162 2.94173,0.923 1.14817,1.888"},"48337":{"name":"Montague, TX","path":"m 495.09225,406.63714 -0.23356,11.136 -8.22973,-0.152 -1.18197,-0.0225 0.0338,-0.76549 0.22465,-9.771 0.21037,0.194 1.67768,0.765 0.22643,0.02 0.59369,-0.176 0.94849,-0.747 0.99663,-1.036 0.65074,-0.82 1.9362,1.292 0.68284,0.476 1.46374,-0.394"},"48097":{"name":"Cooke, TX","path":"m 505.33662,406.00114 -0.10341,12.303 -8.39019,-0.426 -1.98433,-0.105 0.23356,-11.136 0.37618,1.719 0.0499,0.119 0.0161,0.04 0,0 0.11232,0.136 0.16759,0.112 1.10671,0.30417 2.68027,-2.38013 1.33812,0.65128 -0.71938,1.96862 1.13187,1.87606 0.26565,0.09 0.30487,0.04 0.27278,-0.09 0.19255,-0.153 0.0891,-0.119 2.85973,-4.96"},"48147":{"name":"Fannin, TX","path":"m 526.2372,408.58914 -0.25673,8.76 -0.0232,1.198 -8.34205,1.324 -1.75258,0.3327 0.0499,-1.3947 0.12837,-7.617 0.18363,0.252 2.83655,-0.701 0.39401,-0.105 0.34588,-0.148 0.0232,-0.03 0.17828,-0.185 0.0232,-0.03 0.009,-0.02 0.0481,-0.154 0.0553,-0.176 0.016,-0.06 0.009,-0.06 0.11945,-0.555 0.16046,-0.563 0.96454,-0.223 2.13766,-0.178 0.41006,-0.03 0.25851,-0.03 1.10003,0.217 0.92353,0.169"},"48181":{"name":"Grayson, TX","path":"m 505.52203,405.89714 0.96454,1.983 0.312,0.349 0.19255,0.134 1.79357,0.549 0.92352,-0.155 0.0161,0 1.9041,-0.859 -0.0642,0.369 0.016,0.283 0.016,0.111 0.0161,0.06 1.95224,1.31 0.17651,0.122 0.025,0 0.97344,-0.186 0.22464,0.03 0.24961,0.08 0,0 0.82725,1.125 -0.12837,7.617 -8.59165,-0.232 -2.08774,-0.273 0.10341,-12.303 0.18541,-0.104"},"48277":{"name":"Lamar, TX","path":"m 536.35499,407.83314 0.11945,11.338 -1.2284,-0.225 -1.93619,-1.317 -0.37084,-0.161 -2.09666,-0.658 -0.37083,-0.06 -2.65113,-0.192 -0.35301,0.1 -1.48691,0.692 0.25673,-8.76 1.63133,-0.611 0.007,0 1.5921,-0.829 1.39064,-0.722 0.61687,0.03 0.14441,0.06 0.20147,0.513 -0.005,0.154 -0.0571,0.162 0.005,0.118 0,0.02 0.0749,0.128 0.0713,0.06 1.88093,0.25 0.71315,0.06 1.28723,-0.06 0.009,0 0.55448,-0.07"},"48007":{"name":"Aransas, TX","path":"m 497.54904,540.95014 0.3958,0.322 0.0642,0 1.82388,-0.884 2.57981,-1.945 0.12658,-0.346 -0.42432,-0.01 -0.44215,-0.06 -0.7809,-0.468 -0.45641,-0.611 -0.0321,-0.467 6.76599,-0.986 -0.16938,1.059 0.24069,0.387 0,0.128 -0.27278,0.594 -0.20146,0.153 -2.56199,1.73583 -0.57051,0 -0.90178,-0.0783 -0.46861,0.68944 -0.40714,2.05898 -1.79,2.715 -2.51741,-3.995 m 8.79311,-0.73 -0.4992,1.156 -3.96867,5.079 -0.10519,-0.291 4.57306,-5.944"},"48061":{"name":"Cameron, TX","path":"m 484.51626,580.10714 6.9425,1.23 1.77465,-0.73318 0.8112,-1.007 0.0981,0.05 0.0849,1.17343 0.47142,1.81195 -0.0267,1.7054 0.92436,1.8786 1.25813,1.20681 0.92783,0.88999 0.0499,0.06 -0.24247,0.786 -2.51223,0.065 -1.20446,0.98098 -0.0826,1.23103 -1.84884,-0.565 -0.2906,-0.177 -0.28705,-0.223 -1.19095,-0.941 -1.75078,-1.952 -0.0731,-0.259 -2.37835,-0.415 -1.58319,-0.275 0.12837,-6.518 m 12.94542,-1.229 0.35301,0 0.57052,2.395 0.17828,0.9 0.24069,1.696 0.36192,2.861 -0.0963,-0.02 -0.0571,0 -0.16759,-0.233 -0.18542,-1.549 0.0232,-0.708 -0.0963,-0.845 -0.20146,-1.3 -0.40115,-1.872 -0.24069,-0.731 -0.28169,-0.588"},"49037":{"name":"San Juan, UT","path":"m 290.67551,284.70714 -0.78803,8.01 -0.86112,6.237 -1.27654,9.094 -1.57427,11.154 -17.25283,-2.452 -5.95479,-0.9 -2.93995,-0.58 -4.60516,-0.697 -11.93274,-1.872 0.55447,0.05 1.32645,0.03 0.46283,-1.18938 0.92121,0.79695 0.28457,-0.50181 0.3355,0.21124 0.97214,-1.11298 0.38643,0.44042 0.53922,-0.22168 2.24544,0.21124 0.60974,-0.209 1.27832,-1.109 0.7543,-1.72505 0.72884,-0.9102 0.14312,-0.40083 -0.61997,-0.3294 0.32228,-0.38033 1.31543,0.81656 0.88252,-0.4058 0.30665,-0.484 -0.3131,-0.69519 0.29808,-0.23681 0.47635,0.17064 0.29808,-0.66972 -0.49136,-0.10948 -0.3584,-0.49212 0.71117,-0.46666 1.39874,0.16999 -0.53666,-0.46665 0.24715,-0.466 0.24715,-0.466 1.12823,-0.64178 0.65233,-1.14412 1.43661,-0.50596 0.64344,-1.19338 0.70521,-1.197 -0.52499,-0.73821 0.90273,-0.0243 0.79697,-1.6107 2.01317,0.26649 1.50545,-0.12066 0.0777,-1.12534 1.58319,-1.246 0.97764,0.34221 1.40071,-2.37021 1.63132,-0.756 0.52239,-0.547 0.18363,-1.155 -0.0232,-0.972 -0.55361,-1.71539 -0.77654,-1.19228 0.42975,-2.21933 -0.32804,-0.434 17.07454,2.452"},"49017":{"name":"Garfield, UT","path":"m 228.92225,283.30014 0.62757,0.05 6.77312,1.188 0.4261,0.128 0.86826,0.178 0.63292,0.1 1.93798,0.212 7.58433,1.284 5.06335,0.773 21.31064,3.284 -1.63132,0.756 -1.40071,2.37021 -0.97764,-0.34221 -1.58319,1.246 -0.0777,1.12534 -1.50545,0.12066 -2.01317,-0.26649 -0.79697,1.6107 -0.90273,0.0243 0.52499,0.73821 -0.70521,1.197 -0.64344,1.19338 -1.43661,0.50596 -0.65233,1.14412 -1.12823,0.64178 -21.34273,-3.43 -0.0892,0.06 -0.15332,0 -9.23875,-1.60737 0.0342,-0.16953 -5.56293,-0.9561 0.65075,-4.248 0.30487,-1.764 1.95011,0.38552 0.32483,-1.8857 1.41382,0.16418 0.0776,-0.2959 0.49708,0.0399 0.33039,-1.62703 -0.37072,-0.10201 0.87951,-3.81099"},"49029":{"name":"Morgan, UT","path":"m 259.6821,212.98014 1.52614,0.521 0.30977,0.86825 0.30977,0.86825 -0.34056,1.07518 0.96011,0.66132 -0.10519,0.419 -0.16937,0.321 -0.2086,0.265 -0.44928,0.392 -1.88093,0.312 -0.42685,0.92163 -2.42574,0.0594 -0.32983,0.2 -0.29774,0.276 -0.78624,0.777 -0.0339,0.147 0.0178,0.483 0.0553,0.119 0.0963,0.08 0.73098,0.933 0.50812,1.285 0.0553,0.346 -0.93958,1.414 -0.2496,0.112 -0.28882,0.06 -0.15333,-0.02 -1.34963,-0.657 -1.42986,-1.698 -1.1368,-2.16117 0.58773,0.0337 -0.74486,-2.0044 0.35257,-2.55311 -0.19968,-0.797 0.11232,-0.359 0.37619,-0.167 0.97344,-0.284 0.41006,0.05 0.4582,0.145 0.11945,0.33 0.29774,0.401 0.51347,0.226 0.4992,-0.04 0.9964,-0.88528 1.8241,0.35628 0.5937,-0.46 0.53843,-0.553 0.16937,-0.339 -0.0627,-0.74928 0.61719,-0.71972"},"49011":{"name":"Davis, UT","path":"m 251.44524,216.82814 -0.35257,2.55311 0.74486,2.0044 -0.58773,-0.0337 1.1368,2.16117 -0.2817,0.13 -0.47424,0.136 -1.63133,0.257 -0.78802,-0.136 -0.42433,-0.08 -0.45539,-0.89392 0.46969,-1.02608 0.0731,-0.403 -0.82012,-0.137 -2.61012,1.248 -2.34626,1.388 -2.70817,-7.6 4.36268,-0.699 1.0929,-0.139 2.67608,0.465 2.92391,0.805"},"49057":{"name":"Weber, UT","path":"m 258.38774,211.32414 0.29075,1.06986 1.00361,0.58614 -0.61719,0.71972 0.0627,0.74928 -0.16937,0.339 -0.53843,0.553 -0.5937,0.46 -1.8241,-0.35628 -0.9964,0.88528 -0.4992,0.04 -0.51347,-0.226 -0.29774,-0.401 -0.11945,-0.33 -0.4582,-0.145 -0.41006,-0.05 -0.97344,0.284 -0.37619,0.167 -0.11232,0.359 0.19968,0.797 -2.92391,-0.805 -2.67608,-0.465 -1.0929,0.139 -4.36268,0.699 5.3593,-5.174 3.54256,0.608 1.23018,-0.456 -0.0599,-1.21475 1.59496,0.0328 0.0963,0.522 0.0891,0.159 1.65451,0.964 0.28169,0.04 0.62804,-0.92371 3.58132,0.37471"},"49033":{"name":"Rich, UT","path":"m 268.3522,199.37314 -2.73136,17.143 -2.14198,1.37251 -1.96397,0.48249 0.44928,-0.392 0.2086,-0.265 0.16937,-0.321 0.10519,-0.419 -0.96011,-0.66132 0.34056,-1.07518 -0.30977,-0.86825 -0.30977,-0.86825 -1.52614,-0.521 -1.00361,-0.58614 -0.29075,-1.06986 1.8007,-2.762 0.50879,-2.1651 -0.0634,-1.56504 -0.73244,-3.54624 0.14973,-0.85848 0.50152,-0.0376 0.0617,-2.2215 7.73766,1.205"},"49005":{"name":"Cache, UT","path":"m 249.58036,196.38514 0.91818,0.146 10.116,1.637 -0.0617,2.2215 -0.50152,0.0376 -0.14973,0.85848 0.73244,3.54624 0.0634,1.56504 -0.50879,2.1651 -1.8007,2.762 -3.58132,-0.37471 -0.62804,0.92371 -0.28169,-0.04 -1.65451,-0.964 -0.0891,-0.159 -0.0963,-0.522 -0.6465,-0.85002 0.4889,0.017 0.30312,-0.40618 -0.4607,-0.42682 0.0491,-0.775 -0.24473,-0.26831 -0.0919,-0.33869 -0.96568,0.3774 -0.0108,-3.12981 -0.46549,-0.92637 0.89475,-1.48922 0.20147,-0.915 -0.16937,-1.328 -0.40115,-0.986 -0.51525,-0.676 -0.44215,-1.681"},"49003":{"name":"Box Elder, UT","path":"m 218.13767,190.73014 1.11786,0.282 1.3425,0.32 0.19968,0.04 1.42986,0.249 0.53129,0.09 5.58395,0.95 0.49029,0.08 6.7339,1.139 4.89398,0.828 4.33059,0.748 3.55148,0.614 0.009,0 1.2284,0.317 0.44215,1.681 0.51525,0.676 0.40115,0.986 0.16937,1.328 -0.20147,0.915 -0.89475,1.48922 0.46549,0.92637 0.0108,3.12981 0.96568,-0.3774 0.0919,0.33869 0.24473,0.26831 -0.0491,0.775 0.4607,0.42682 -0.30312,0.40618 -0.48892,-0.017 0.64649,0.85002 -1.59496,-0.0328 0.0599,1.21475 -1.23018,0.456 -3.54256,-0.608 -5.3593,5.174 -5.50551,0.826 -21.09313,-3.903 4.34664,-22.589"},"49009":{"name":"Daggett, UT","path":"m 298.784,227.33014 -1.07685,7.964 -1.28723,-0.185 0.0806,-0.61314 -0.63506,-0.16586 0.21037,-1.501 0.0784,-0.847 -0.71576,-0.13354 0.26826,-1.62446 -3.28048,-0.451 -0.28546,1.70843 -1.62938,0.81474 -0.54101,-0.21399 0.2641,-1.27255 -0.13846,-0.60163 -1.3737,0.1345 -1.30559,0.20889 -1.30558,-0.29803 -0.38969,0.47741 -1.12025,0.0152 -0.58834,0.02 -1.7276,-1.324 -0.37619,-0.154 0.61687,-4.202 0.0178,0 2.46571,0.353 2.3944,0.337 0.66857,0.1 8.01757,1.07 2.69391,0.392"},"49035":{"name":"Salt Lake, UT","path":"m 243.09784,223.99614 2.34626,-1.388 2.61012,-1.248 0.82012,0.137 -0.0731,0.403 -0.46969,1.02608 0.45539,0.89392 0.42433,0.08 0.78802,0.136 1.63133,-0.257 0.47424,-0.136 0.2817,-0.13 1.42986,1.698 -0.24877,1.13403 0.64189,1.15947 -0.4269,1.1213 0.82002,1.1722 -0.81833,0.62 -1.73652,0.787 -0.70201,0.0234 -1.03741,0.0607 -0.6461,0.58242 -1.16786,0.3961 -0.23654,-0.31629 -0.83283,0.41043 0.0802,0.42907 -1.0022,0.23717 -0.7338,-0.47917 -0.24931,-0.77732 -1.39306,0.30876 -0.69215,-0.81827 -0.29565,-1.10287 0.39156,-2.1601 0.0215,-2.23939 -0.45423,-1.76364"},"49043":{"name":"Summit UT","path":"m 265.62084,216.51614 -0.93244,5.801 9.29588,1.535 7.73053,1.109 0.8112,0.121 -0.61687,4.202 -2.86151,-0.403 -3.11086,-0.53889 -0.27066,0.57014 -3.27316,0.1103 -1.40674,-0.1602 -0.74816,0.37474 -1.07276,-0.24739 -1.77604,0.59114 -1.20801,-0.49084 -0.1753,0.933 -0.81751,0.31821 -0.4929,1.18379 -0.26386,0.225 -0.77912,0.137 -0.65298,0.0483 -0.59887,-0.43864 -0.76117,0.1294 -0.59888,0.45399 -1.31933,-0.747 -1.77573,-1.471 -0.5649,-1.27645 -0.67087,-0.0217 -0.52832,0.64817 -0.67181,0.88298 -0.90699,-0.29295 -0.82002,-1.1722 0.4269,-1.1213 -0.64189,-1.15947 0.24877,-1.13403 1.34963,0.657 0.15333,0.02 0.28882,-0.06 0.2496,-0.112 0.93958,-1.414 -0.0553,-0.346 -0.50812,-1.285 -0.73098,-0.933 -0.0963,-0.08 -0.0553,-0.119 -0.0178,-0.483 0.0339,-0.147 0.78624,-0.777 0.29774,-0.276 0.32983,-0.2 2.42574,-0.0594 0.42685,-0.92163 1.88093,-0.312 1.96397,-0.48249 2.14198,-1.37251"},"49051":{"name":"Wasatch, UT","path":"m 254.6027,229.79814 0.90699,0.29295 0.67181,-0.88298 0.52832,-0.64817 0.67087,0.0217 0.5649,1.27645 1.77573,1.471 1.31933,0.747 0.59888,-0.45399 0.76117,-0.1294 0.59887,0.43864 0.65298,-0.0482 0.77912,-0.137 0.26386,-0.225 0.49291,-1.18379 0.8175,-0.31821 -0.91639,5.649 -1.06794,8.006 -0.65967,4.191 -3.31079,-0.537 0.17272,-0.94744 -0.84619,-0.25458 0.11967,-0.34633 -0.71682,-0.88267 -0.39076,-1.11362 -0.49945,-0.0404 -0.11232,-0.241 -0.025,-0.192 0.73097,-1.567 -0.61791,-2.19713 0.30591,-0.56687 -0.19433,-0.417 -0.41719,-0.683 -0.0356,-0.03 -0.0357,-0.03 -2.57254,-0.52733 0.25324,-0.50016 -0.35519,-0.83871 -1.22465,-0.3768 -0.34409,-1.743 -0.5169,-0.38789 0.13529,-0.36926 0.49393,-0.17785 0.42611,-2.487 0.81833,-0.62"},"49049":{"name":"Utah, UT","path":"m 253.78437,230.41814 -0.42611,2.487 -0.49393,0.17785 -0.13529,0.36926 0.5169,0.38789 0.34409,1.743 1.22465,0.3768 0.35519,0.83871 -0.25324,0.50016 2.57254,0.52733 0.0356,0.03 0.0357,0.03 0.41719,0.683 0.19433,0.417 -0.30591,0.56687 0.61791,2.19713 -0.73097,1.567 0.025,0.192 0.11232,0.241 0.49945,0.0404 0.39076,1.11362 0.71682,0.88267 -0.11967,0.34633 0.84619,0.25458 -0.17272,0.94744 3.31079,0.537 0.52292,0.0953 -0.25014,1.97271 -6.74994,-1.08 -7.03176,-1.1544 -2.03441,-0.32888 0.62071,-0.79772 0.0178,-0.413 -0.72379,-0.80842 0.12836,-0.74858 -0.39401,-0.353 -1.7276,0.854 -1.17313,1.364 -0.0481,0.275 -0.15154,0.183 -1.06259,0.387 -0.46533,0.08 -0.46711,-0.147 -0.19077,-0.103 0.49742,-1.59 0.15333,-0.369 0.28882,-0.339 -0.86064,-1.19456 0.22416,-0.95944 -0.59903,-0.16293 -0.0339,-0.72807 -0.3227,-0.17 0.10261,-1.56338 0.42572,-0.13789 0.0879,-0.46975 -0.34649,-0.46976 0.17991,-0.59457 0.64059,-0.31816 -0.0833,-0.52876 -0.14914,-0.23919 0.0615,-0.39078 -0.41958,-1.00162 0.16033,-1.11304 0.42357,-0.59971 -0.23453,-1.25781 0.0155,-1.42893 0.33351,-0.20565 0.41897,-0.143 0.28883,0.09 0.69215,0.81827 1.39306,-0.30876 0.24931,0.77732 0.7338,0.47917 1.0022,-0.23717 -0.0802,-0.42907 0.83283,-0.41043 0.23654,0.31629 1.16786,-0.39609 0.6461,-0.58243 1.03741,-0.0607 0.70201,-0.0234 1.73652,-0.787"},"49045":{"name":"Tooele, UT","path":"m 213.79103,213.31914 21.09313,3.903 5.50551,-0.826 2.70817,7.6 0.45427,1.76364 -0.0215,2.23939 -0.39151,2.1601 0.29569,1.10287 -0.28883,-0.09 -0.41897,0.143 -0.33351,0.20565 -0.0155,1.42893 0.23453,1.25781 -0.42357,0.59971 -0.16033,1.11304 0.41958,1.00162 -0.0615,0.39078 0.14914,0.23919 0.0833,0.52876 -0.64059,0.31816 -0.17991,0.59457 0.34649,0.46976 -0.0879,0.46975 -0.42572,0.13789 -0.10261,1.56338 -1.12863,0.62251 -0.53479,0.70949 -1.425,-0.12554 -0.13323,0.76254 -6.57344,-1.141 -22.80469,-4.274 0.93244,-4.799 3.92945,-20.07"},"49023":{"name":"Juab, UT","path":"m 241.52892,241.63414 0.3227,0.17 0.0339,0.72807 0.59903,0.16293 -0.22416,0.95944 0.86064,1.19456 -0.28882,0.339 -0.15333,0.369 -0.49742,1.59 0.19077,0.103 0.46711,0.147 0.46533,-0.08 1.06259,-0.387 0.15154,-0.183 0.0481,-0.275 1.17313,-1.364 1.7276,-0.854 0.39401,0.353 -0.12836,0.74858 0.72379,0.80842 -0.0178,0.413 -0.62071,0.79772 2.03441,0.32888 -0.0505,0.39424 0.35272,0.0775 -0.0504,0.34624 0.69829,0.14466 -0.24979,0.96261 -0.78756,-0.20582 -1.48692,0.811 -0.87036,5.5231 -0.56769,-0.0963 -0.24854,1.61417 -3.05406,-0.485 -0.13274,0.48663 -0.76672,-0.11213 -0.11512,0.53946 -0.78433,-0.16496 -0.0891,0.504 -0.98057,-0.176 0.048,-0.20862 -2.13573,-0.49038 -0.009,-1.13561 0.28026,-1.50246 0.28025,-0.79805 -0.38766,-0.7224 0.49286,-0.44065 -0.0392,-0.224 -0.0969,-0.36883 -3.75116,-0.64 -1.18917,-0.178 -22.7726,-4.163 -4.05959,-0.546 1.59923,-8.26 22.80469,4.274 6.57344,1.141 0.13323,-0.76254 1.425,0.12554 0.53479,-0.70949 1.12863,-0.62251"},"49027":{"name":"Millard, UT","path":"m 207.32991,246.44814 4.05959,0.546 22.7726,4.163 1.18917,0.178 3.75116,0.64 0.0969,0.36883 0.0392,0.224 -0.49286,0.44065 0.38766,0.7224 -0.28025,0.79805 -0.28026,1.50246 0.009,1.13561 2.13573,0.49038 -0.048,0.20862 0.98057,0.176 -1.0198,6.158 -0.53153,1.13145 -0.66276,-0.0788 -0.18948,0.77302 -1.20486,-0.0838 -0.1179,0.47883 -0.26371,-0.0461 -0.13248,0.65381 -0.29288,-0.0315 -0.16164,0.56631 -0.29288,-0.0607 -0.11201,0.36015 -0.62237,-0.0773 -0.49113,2.21204 0.1942,0.0394 -0.15575,0.84136 -0.46197,-0.019 -0.17034,0.36016 -0.50652,0.005 -0.1274,0.31151 -0.56484,0.18027 -0.84191,-0.0676 -0.004,-0.27873 -1.3104,-0.169 -0.36014,0.112 -0.42611,0.612 -0.83617,1.558 -5.05443,-0.898 0.007,-0.05 -2.04139,-0.411 -19.85582,-3.607 0.46711,-2.38 3.82426,-19.694"},"49041":{"name":"Sevier, UT","path":"m 253.08548,266.57914 -0.27456,1.87 -1.06081,6.366 -0.1355,-0.03 -0.57943,3.712 -8.15485,-1.149 -5.20776,-0.884 0.0321,-0.192 -1.10894,-0.225 -6.91932,-1.148 0.30665,-1.416 0.83617,-1.558 0.42611,-0.612 0.36014,-0.112 1.3104,0.169 0.004,0.27873 0.84191,0.0676 0.56484,-0.18027 0.1274,-0.31151 0.50652,-0.005 0.17034,-0.36016 0.46197,0.019 0.15575,-0.84136 -0.1942,-0.0394 0.49113,-2.21204 0.62237,0.0773 0.11201,-0.36015 0.29288,0.0607 0.16164,-0.56631 0.29288,0.0315 0.13248,-0.65381 0.26371,0.0461 0.1179,-0.47883 1.20486,0.0838 0.18948,-0.77302 0.66276,0.0788 0.53153,-1.13145 2.70422,0.48 -0.0483,0.331 9.79922,1.568"},"49039":{"name":"Sanpete, UT","path":"m 256.88478,248.85714 -1.27654,7.917 -0.94135,-0.151 -1.58141,9.956 -9.79922,-1.568 0.0483,-0.331 -2.70422,-0.48 1.0198,-6.158 0.0891,-0.504 0.78433,0.16496 0.11512,-0.53946 0.76672,0.11213 0.13274,-0.48663 3.05406,0.485 0.24854,-1.61417 0.56769,0.0963 0.87036,-5.5231 1.48692,-0.811 0.78756,0.20582 0.24979,-0.96261 -0.69829,-0.14466 0.0504,-0.34624 -0.35272,-0.0775 0.0504,-0.39424 7.03176,1.1544"},"49007":{"name":"Carbon, UT","path":"m 256.88478,248.85714 6.74994,1.08 5.54651,0.899 0.22464,0.07 0.0945,0.09 9.55618,1.465 1.43699,0.218 0.11232,0.31 0.009,0.162 -0.0802,0.06 -0.0731,-0.01 -1.10003,0.633 -0.78803,0.685 -1.28545,2.487 -0.25673,0.727 -0.11232,1.036 0.007,1.269 -18.35286,-2.845 -0.25674,-1.63 -0.31239,-1.71654 -0.47837,0.19235 -0.68011,-2.38181 -0.18363,-0.232 -0.17829,-0.09 0.40115,-2.485"},"49013":{"name":"Duchesne, UT","path":"m 281.90914,229.28414 0.37619,0.154 -2.03961,13.972 -0.54021,3.953 -0.64896,5.104 -9.55618,-1.465 -0.0945,-0.09 -0.22464,-0.07 -5.54651,-0.899 0.25014,-1.97271 -0.52292,-0.0953 0.65967,-4.191 1.06794,-8.006 0.91639,-5.649 0.1753,-0.933 1.20801,0.49084 1.77604,-0.59114 1.07276,0.24739 0.74816,-0.37474 1.40674,0.1602 3.27316,-0.1103 0.27066,-0.57014 3.11086,0.53889 2.86151,0.403"},"49047":{"name":"Uintah, UT","path":"m 282.28533,229.43814 1.7276,1.324 0.58834,-0.02 1.12025,-0.0152 0.38969,-0.47741 1.30558,0.29803 1.30559,-0.20889 1.3737,-0.1345 0.13846,0.60163 -0.2641,1.27255 0.54101,0.21399 1.62938,-0.81474 0.28546,-1.70843 3.28048,0.451 -0.26826,1.62446 0.71576,0.13354 -0.0784,0.847 -0.21037,1.501 0.63506,0.16586 -0.0806,0.61314 1.28723,0.185 -1.40668,9.883 -1.79179,12.906 -0.51346,3.737 -1.08577,0.681 -16.00661,-2.289 0.0232,-0.168 -0.007,-1.269 0.11232,-1.036 0.25673,-0.727 1.28545,-2.487 0.78803,-0.685 1.10003,-0.633 0.0731,0.01 0.0802,-0.06 -0.009,-0.162 -0.11232,-0.31 -1.43699,-0.218 0.64896,-5.104 0.54021,-3.953 2.03961,-13.972"},"49019":{"name":"Grand, UT","path":"m 293.99522,261.82014 -1.19096,8.556 -0.60974,4.172 -0.12837,0.884 -0.69175,4.227 -0.69889,5.048 -17.07454,-2.452 0.6347,-0.499 0.24069,-0.843 -1.00314,-0.44646 0.45274,-0.48196 0.28408,0.36767 0.26632,-0.25375 0,-0.2715 -0.041,-0.209 -0.47424,0.136 -0.19805,-0.88392 -0.97301,-1.4461 0.73768,-1.19972 -0.25658,-1.27074 -0.80317,-1.19097 0.0346,-1.5846 0.36562,0.0321 0.61019,-3.29983 0.66041,-0.68851 0.11112,-1.23466 0.28169,-0.555 0.83347,-0.73972 0.11796,-1.41281 1.15411,-1.77447 0.25674,-1.001 0.009,-1.285 16.00661,2.289 1.08577,-0.681"},"49015":{"name":"Emery, UT","path":"m 256.48363,251.34214 0.17829,0.09 0.18363,0.232 0.68011,2.38181 0.47837,-0.19235 0.31239,1.71654 0.25674,1.63 18.35286,2.845 -0.0232,0.168 -0.009,1.285 -0.25674,1.001 -1.15411,1.77447 -0.11796,1.41281 -0.83347,0.73972 -0.28169,0.555 -0.11112,1.23466 -0.66041,0.68851 -0.61019,3.29983 -0.36562,-0.032 -0.0346,1.5846 0.80317,1.19097 0.25658,1.27074 -0.73768,1.19972 0.97301,1.4461 0.19805,0.88392 0.47424,-0.136 0.041,0.209 0,0.2715 -0.26632,0.25375 -0.28408,-0.36767 -0.45274,0.48196 1.00314,0.44646 -0.24069,0.843 -0.6347,0.499 -22.60501,-3.519 0.0392,-0.235 0.57943,-3.712 0.1355,0.03 1.06081,-6.366 0.27456,-1.871 1.58141,-9.955 0.94135,0.151 0.87539,-5.432"},"49055":{"name":"Wayne, UT","path":"m 242.88033,277.35214 8.15485,1.149 -0.0392,0.235 22.60501,3.519 0.32804,0.434 -0.42975,2.21933 0.77654,1.19228 0.55361,1.71539 0.0232,0.972 -0.18363,1.155 -0.52239,0.547 -21.31064,-3.284 -5.06335,-0.773 -7.58433,-1.284 0.32092,-1.892 0.62757,-4.386 0.56873,-0.666 1.17491,-0.853"},"49031":{"name":"Piute, UT","path":"m 229.6764,274.90314 6.91932,1.148 1.10894,0.225 -0.0321,0.192 5.20776,0.884 -1.17491,0.853 -0.56873,0.666 -0.62757,4.386 -0.32092,1.892 -1.93798,-0.212 -0.63292,-0.1 -0.86826,-0.178 -0.4261,-0.128 -6.77312,-1.188 0.43799,-0.69822 0.90005,-0.5134 0.32248,-0.35167 -0.0934,-0.58271 0.5174,-0.61 0.37797,-1.38005 -0.31725,-0.11432 -0.55161,-0.91686 -0.0541,-0.72474 -0.21772,-0.11992 -0.28307,0.27215 -0.26673,-0.1526 -0.10337,-0.47932 -0.60452,-1.11834 -0.0178,-0.201 0.0802,-0.754"},"49001":{"name":"Beaver, UT","path":"m 203.03854,268.52214 19.85582,3.607 2.04139,0.411 -0.007,0.05 5.05443,0.898 -0.30665,1.416 -0.0802,0.754 0.0178,0.201 0.60452,1.11834 0.10337,0.47932 0.26673,0.1526 0.28307,-0.27215 0.21772,0.11992 0.0541,0.72474 0.55161,0.91686 0.31725,0.11432 -0.37797,1.38005 -0.5174,0.61 0.0934,0.58271 -0.32248,0.35167 -0.90005,0.5134 -0.43799,0.69822 -0.62757,-0.05 -27.73076,-5.12 1.84705,-9.658"},"49021":{"name":"Iron, UT","path":"m 201.19149,278.18014 27.73076,5.12 -0.87951,3.81099 0.37072,0.10201 -0.33039,1.62703 -0.49708,-0.0399 -0.0776,0.2959 -1.41382,-0.16418 -0.32483,1.8857 -1.95011,-0.38552 -0.30487,1.764 -0.65075,4.248 -3.89865,-0.75206 -0.16094,1.05006 -2.64301,-0.55297 -0.14733,0.58143 -1.88283,-0.37993 0.0457,-0.15305 -1.90551,-0.28918 0.16991,-1.15865 -3.87464,-0.75333 0.31981,-1.91497 -2.09606,-0.48096 -0.0466,0.35217 -7.97886,-1.45456 2.42649,-12.367"},"49053":{"name":"Washington, UT","path":"m 198.765,290.54714 7.97886,1.45456 0.0466,-0.35217 2.09606,0.48096 -0.31981,1.91497 3.87464,0.75333 -0.16991,1.15865 1.90551,0.28918 -0.0456,0.15305 1.88282,0.37993 0.14733,-0.58143 2.64301,0.55297 -2.01643,11.394 -20.63493,-3.84 2.6119,-13.757"},"49025":{"name":"Kane, UT","path":"m 218.80446,296.75014 0.16094,-1.05006 3.89865,0.75206 5.56293,0.9561 -0.0342,0.16953 9.23875,1.60737 0.15332,0 0.0892,-0.06 21.34273,3.431 -0.24715,0.46587 -0.24715,0.46588 0.53666,0.46662 -1.39874,-0.17002 -0.71117,0.46663 0.3584,0.49208 0.49136,0.10936 -0.29808,0.6696 -0.47635,-0.17077 -0.29808,0.23668 0.3131,0.69507 -0.30665,0.484 -0.88252,0.40576 -1.31543,-0.81661 -0.32228,0.38034 0.61997,0.3294 -0.14312,0.40083 -0.72884,0.9102 -0.7543,1.72505 -1.27832,1.109 -0.60974,0.209 -2.24544,-0.21124 -0.53922,0.22168 -0.38643,-0.44042 -0.97214,1.11298 -0.3355,-0.21124 -0.28457,0.50181 -0.92121,-0.79695 -0.46283,1.18938 -1.32645,-0.03 -0.55447,-0.05 -20.25697,-3.414 -6.44508,-1.143 2.01643,-11.394"},"51131":{"name":"Northampton, VA","path":"m 885.37891,284.15234 -1.73829,0.51758 0,0.002 -0.0781,0.67187 -0.0586,0.52148 -0.0801,1.58399 -0.0859,2.44336 -0.008,0.33008 0.0566,0.67382 0.11133,0.72461 0.47461,1.13282 1.02734,1.5664 0.0273,0.50586 0.57618,-0.14648 0.13086,-0.0508 -0.26172,-0.91602 -0.31446,-3.71875 0.67578,-1.7832 1.14258,-0.4375 -0.56445,-0.47071 -0.006,-1.18945 -0.12109,-0.0801 -0.0723,-0.16797 0.0254,-0.0605 0.10547,-0.0703 0.14453,-0.24024 -0.0957,-0.93164 z m 3.51757,1.43164 -0.91601,0.40821 0.36864,0.41437 -0.13896,2.20198 -0.46082,1.36624 0.6577,-1.00191 0.58711,-2.84396 -0.01,-0.37696 z m -1.48326,4.77173 -0.0499,0.70197 0.15645,0.19035 0.13257,-0.24056 z m 0.47544,1.26148 -0.51953,-0.0566 -0.30859,0.59375 -0.41407,1.05664 -0.38671,1.21875 0.0488,-0.0195 0.14258,-0.12891 0.13086,-0.17383 0.0273,-0.0508 0.78906,-1.2207 0.006,-0.0195 0.20117,-0.35547 0.18164,-0.33789 z m -1.49414,-2.92383 -0.52539,0.19922 -0.25586,1.70312 0.29883,0.15039 -0.38672,1.41797 0.42383,1.6836 0.34961,-1.50196 0.008,-0.98047 0.4043,-0.36914 -0.64258,-0.54687 z"},"51027":{"name":"Buchanan, VA","path":"m 776.31323,304.29514 0.61561,0.23406 -0.0558,0.36194 -0.8112,0.731 -0.0481,0.153 0.12837,0.344 1.2983,0.74333 0.25279,1.45867 1.51188,1.317 0.007,0 0.2086,0.107 2.04316,0.738 -0.35657,0.988 -1.78287,1.15 -0.63873,0.96565 -1.44188,0.29635 -0.19968,0.152 -0.12123,0.378 -0.0321,0.314 0.007,0.52 -0.16045,0.275 -0.68284,0.49 -1.166,0.161 -0.1355,-0.03 -0.46006,-1.61968 -1.40037,-1.45756 -0.60597,-1.65211 -1.25445,-0.77665 5.28086,-6.347"},"51185":{"name":"Tazewell, VA","path":"m 787.68129,307.13211 3.01257,2.06603 -0.84897,0.62456 0.48528,0.9216 -1.25085,0.83793 1.38472,0.315 -0.0795,0.79609 -1.16718,0.87977 -1.02077,0.23132 -0.41416,0.44051 -0.5815,0.10582 0.48165,0.5914 -0.45564,0.48114 -0.1628,-0.48106 -0.52701,0.25705 -0.92307,0.53843 -1.0875,1.0317 -0.97788,0.61151 -0.6125,-0.88653 -1.25653,0.56976 -2.9939,-3.47735 0.63873,-0.96565 1.78287,-1.15 0.35657,-0.988 1.20344,0.715 2.10557,-0.417 0.0571,-0.03 0.78803,-0.724 0.0143,-0.02 1.31819,-1.39732 0.73081,-1.47971"},"51173":{"name":"Smyth, VA","path":"m 788.92704,316.10114 1.26929,1.33582 -0.008,0.29126 1.54304,2.37392 -1.84077,0.70569 -1.16702,0.82819 -1.64497,0.52325 0.31504,0.79887 -1.44591,0.952 -0.22642,0.146 -1.99325,-3.342 -2.96491,-2.821 0.91639,-0.829 1.25653,-0.56976 0.6125,0.88653 0.97788,-0.61151 1.0875,-1.0317 0.92307,-0.53843 0.52701,-0.25705 0.1628,0.48106 0.45564,-0.48114 1.24444,1.159"},"51520":{"name":"Bristol, VA","path":"m 776.30432,326.38514 -1.76861,0.241 0.54063,-0.43926 0.35363,-0.23238 0.74243,-0.46757 0.58196,-0.21826 0.27803,0.20265 -0.72805,0.91682"},"51191":{"name":"Washington, VA","path":"m 780.76328,317.89314 2.96491,2.821 1.99325,3.342 0.22642,-0.146 0.10303,0.54948 -0.75556,0.18152 -3.26978,0.442 -1.74543,0.209 -0.12837,0.538 -3.84743,0.555 0.72805,-0.91682 -0.27803,-0.20265 -0.58196,0.21826 -0.74243,0.46757 -0.35363,0.23238 -0.54063,0.43926 -0.91461,0.137 -1.0715,-2.514 2.4519,-1.82576 1.41606,-0.66946 -0.24612,-0.54902 0.21157,-0.54901 1.89581,-1.14655 0.11318,0.15429 0.64315,-0.15887 0.98041,-0.49613 0.74772,-1.11549"},"51167":{"name":"Russell, VA","path":"m 778.68577,313.58679 2.9939,3.47735 -0.91639,0.829 -0.74772,1.11549 -0.98041,0.49613 -0.64315,0.15887 -0.11318,-0.15429 -1.89581,1.14655 -0.21157,0.54901 0.24612,0.54902 -1.41606,0.66946 -2.4519,1.82576 -1.90233,-3.633 1.92807,-0.8883 -0.81912,-1.4817 2.997,-2.098 0.1355,0.03 1.166,-0.161 0.68284,-0.49 0.16045,-0.275 -0.007,-0.52 0.0321,-0.314 0.12123,-0.378 0.19968,-0.152 1.44188,-0.29635"},"51720":{"name":"Norton, VA","path":"m 766.80257,319.61219 0.0326,0.39466 -0.38481,0.0394 -0.0812,0.25284 0.18658,0.34511 -0.56566,0.19751 -0.21181,-0.56806 0.36521,-0.63317 z"},"51195":{"name":"Wise, VA","path":"m 766.93534,313.55214 0.32096,1.80083 1.24591,1.7712 0.0705,0.46611 0.30521,-0.003 2.03744,0.98785 0.18749,0.31137 0.27278,-0.128 0.38057,-0.51208 0.81912,1.4817 -1.92807,0.8883 -2.57174,0.37805 -1.39898,0.1616 -0.98308,1.61357 -1.09013,-0.24622 -0.30487,0.537 -0.17314,0.41077 -1.28617,-0.92163 -0.93508,-1.25014 0.0731,-1.742 0.78697,-0.72913 1.62489,-0.9805 -0.13475,-1.9525 2.47958,-2.20387 0.20147,-0.137 z m -0.79197,6.08735 -0.36521,0.63317 0.21181,0.56806 0.56566,-0.19751 -0.18658,-0.34511 0.0812,-0.25284 0.38481,-0.0394 -0.0326,-0.39466 z"},"51051":{"name":"Dickenson, VA","path":"m 771.03237,310.64214 1.25445,0.77665 0.60597,1.65211 1.40037,1.45756 0.46006,1.61968 -2.997,2.098 -0.38057,0.51208 -0.27278,0.128 -0.18749,-0.31137 -2.03744,-0.98785 -0.30521,0.003 -0.0705,-0.46611 -1.24591,-1.7712 -0.32096,-1.80083 0.70601,-0.507 2.71532,-1.531 0.6757,-0.872"},"51169":{"name":"Scott, VA","path":"m 764.12533,323.46891 0.17314,-0.41077 0.30487,-0.537 1.09013,0.24622 0.98308,-1.61357 1.39898,-0.1616 2.57174,-0.37805 1.90233,3.633 1.0715,2.514 -5.7141,0.852 -4.01859,0.571 -2.80445,0.385 0.41719,-1.969 0.71671,-0.65 1.35484,-0.7803 -0.31729,-0.43099 0.86992,-1.27194"},"51105":{"name":"Lee, VA","path":"m 764.12533,323.46891 -0.86993,1.27194 0.3173,0.43099 -1.35484,0.7803 -0.71671,0.65 -0.41719,1.969 -8.86265,1.118 -3.70302,0.41 3.70302,-1.987 1.10232,-0.35985 3.46434,-2.00421 1.10614,-0.0851 0.71417,-2.67215 1.7333,-0.0851 1.18453,-0.94749 0.37797,-0.661 0.93508,1.25014 1.28617,0.92163"},"51021":{"name":"Bland, VA","path":"m 790.69386,309.19814 2.09844,-1.27126 2.09844,-0.75374 -0.34005,0.57787 2.26603,1.76111 0.38869,-0.37086 0.30618,0.28913 -0.34004,0.34413 0.49868,0.37162 -1.18258,1.0145 0.41238,0.8495 -2.10557,0.998 -1.11118,0.81652 -0.40782,-0.23852 -0.89825,0.34892 -0.99873,-0.45492 -1.0091,0.837 -1.44234,1.784 -1.24444,-1.159 -0.48165,-0.5914 0.5815,-0.10582 0.41416,-0.44051 1.02077,-0.23132 1.16718,-0.87977 0.0795,-0.79609 -1.38472,-0.315 1.25085,-0.83793 -0.48528,-0.9216 0.84897,-0.62456"},"51077":{"name":"Grayson, VA","path":"m 795.26897,318.66836 2.39317,2.72903 -0.12302,0.161 -0.0681,0.24356 0.097,0.19041 0.24335,0.006 0.15894,0.14168 -0.005,0.35532 0.26702,-0.006 0.0414,-0.63785 1.86413,1.70344 -1.16599,0.121 -8.22795,0.997 -5.92269,0.596 0.47424,-0.63 0.75556,-0.18152 -0.10303,-0.54948 1.44591,-0.952 -0.31504,-0.79887 1.64497,-0.52325 1.16702,-0.82819 1.84077,-0.70569 2.92237,-0.51141 0.0208,-0.44143 0.59429,-0.48094"},"51640":{"name":"Galax, VA","path":"m 797.66214,321.39739 0.007,0 0.17006,-0.13619 0.0871,-0.32068 0.49884,-0.19788 0.29845,0.10563 -0.32341,0.63384 -0.0937,0.22328 -0.033,0.15331 -0.0414,0.63785 -0.26702,0.006 0.005,-0.35531 -0.15894,-0.14169 -0.24335,-0.005 -0.097,-0.19141 0.0681,-0.24356 0.12302,-0.161"},"51197":{"name":"Wythe, VA","path":"m 800.71537,315.95514 -5.4464,2.71322 -0.59429,0.48094 -0.0208,0.44143 -2.92237,0.51141 -1.54304,-2.37392 0.008,-0.29126 -1.26929,-1.33582 1.44234,-1.784 1.0091,-0.837 0.99873,0.45492 0.89825,-0.34892 0.40782,0.23852 1.11118,-0.81652 2.10557,-0.998 0.54113,0.97259 3.27421,2.97241"},"51071":{"name":"Giles, VA","path":"m 798.35307,304.75314 2.23394,-1.677 0.18542,-0.147 1.80783,-1.429 0.86112,1.237 1.16422,2.346 -1.1107,1.27599 -1.7419,0.83901 -1.02069,0.737 -1.17844,0.737 -0.95759,0.54771 -0.92605,0.92629 -0.49868,-0.37163 0.34004,-0.34412 -0.30618,-0.28913 -0.38869,0.37086 -2.26603,-1.76111 0.34005,-0.57787 1.2898,-0.64 0.91603,-0.95628 -0.78276,-0.69156 0.30493,-0.52892 -0.061,-0.64074 z"},"51750":{"name":"Radford, VA","path":"m 802.77285,310.84051 -0.11624,-0.0315 -0.19209,-0.22018 -0.11092,-0.17499 -0.0731,-0.264 0.066,-0.258 0.30294,-0.22027 0.31702,-0.21381 0.17651,-0.03 0.27645,0.16231 0.10949,-0.2104 0.18825,-0.12852 0.14417,0.1 0.11252,0.28584 -0.22174,0.28505 -0.60472,0.26706 0.0361,0.38859 -0.41062,0.26966"},"51155":{"name":"Pulaski, VA","path":"m 801.753,307.19814 -0.0357,0.98995 0.55939,0.51714 0.48837,-0.44681 0.74344,-0.27676 0.0952,0.30774 -0.60625,0.20148 -0.27825,0.33827 0.34999,0.42535 0.25661,-0.0745 0.186,0.03 0.205,0.034 -0.2167,0.20705 -0.0911,0.1518 -0.26599,-0.17714 -0.17651,0.03 -0.31702,0.21381 -0.30294,0.22027 -0.066,0.258 0.0731,0.264 0.11092,0.17499 0.19209,0.22018 0.11624,0.0315 0.15941,0.26146 0.37196,0.0383 0.0744,0.58029 0.47818,1.2446 -1.42095,1.471 -0.8853,1.3361 -0.83517,0.1829 -3.27421,-2.97241 -0.54113,-0.97259 -0.41238,-0.8495 1.18258,-1.0145 0.92605,-0.92629 0.95759,-0.54771 1.17844,-0.737 1.02069,-0.737"},"51610":{"name":"Falls Church, VA","path":"m 856.17541,259.0397 -0.16201,0.14077 -0.35053,-0.082 -0.29585,0.0509 -0.0985,-0.48275 0.28646,0.0454 0.62041,0.32861"},"51013":{"name":"Arlington, VA","path":"m 856.36053,257.44814 0.66857,0.546 0.80408,0.353 0.47246,0.918 0.0344,0.31187 -0.78669,0.0514 0.0224,0.30242 -0.66985,-0.39767 -0.73049,-0.49345 -0.62041,-0.32773 0.80553,-1.26488"},"51035":{"name":"Carroll, VA","path":"m 802.43584,314.43614 3.89736,4.596 0.11503,0.80065 -0.86563,0.44405 -0.11053,0.29143 -0.25673,0.123 -0.17413,-0.28259 -0.58894,0.0275 -0.2086,0.01 -0.098,0.05 -0.24604,0.922 -0.082,0.42 0.41184,1.067 -4.09169,0.643 -1.86413,-1.70344 0.033,-0.15431 0.0938,-0.22228 0.3234,-0.63384 -0.29845,-0.10563 -0.49884,0.19788 -0.0871,0.32068 -0.17005,0.13619 -0.007,0 -2.39318,-2.72903 5.4464,-2.71322 0.83517,-0.1829 0.8853,-1.3361"},"51089":{"name":"Henry, VA","path":"m 820.51593,320.55814 -5.64992,0.951 -0.47424,0.08 -0.20146,-1.535 -0.32984,-1.013 -0.13549,-0.24 -0.27278,-0.296 -0.47425,-0.878 -0.0148,-1.08728 -0.22407,-0.23872 0.19968,-0.234 0.6971,-0.265 0.4968,0.143 0.0676,-0.99569 3.71903,0.13929 0.23011,-0.20424 0.6192,0.10893 0.283,-0.64068 1.11144,-0.54882 0.31711,-0.4405 0.0358,7.1947 z m -4.09649,-2.44186 0.92899,0.1366 0.0624,0.331 0.57005,-0.0703 -0.0209,-0.22739 -0.32575,-0.33488 -0.008,-0.7313 -0.93779,-0.0432 -0.0947,0.26889 z"},"51141":{"name":"Patrick, VA","path":"m 809.80748,314.6897 2.95873,0.15683 0.86962,0.95561 -0.6971,0.265 -0.19968,0.234 0.22407,0.23872 0.0148,1.08728 0.47425,0.878 0.27278,0.296 0.13549,0.24 0.32984,1.013 0.20146,1.535 -7.02094,0.988 -3.14142,0.337 -0.41184,-1.067 0.082,-0.42 0.24604,-0.922 0.098,-0.05 0.2086,-0.01 0.58894,-0.0275 0.17413,0.28259 0.25673,-0.123 0.11053,-0.29143 0.86563,-0.44405 -0.11503,-0.80065 0.23602,-1.01632 0.96918,-0.18957 -0.0448,-1.34391 0.53918,-0.19618 0.2584,-0.53936 1.51626,-1.0571"},"51063":{"name":"Floyd, VA","path":"m 810.80998,308.55414 0.7972,2.01071 -0.39571,1.76638 -0.52506,0.14229 -0.87893,2.21618 -1.51626,1.0571 -0.2584,0.53936 -0.53918,0.19618 0.0448,1.34391 -0.96918,0.18957 -0.23602,1.01632 -3.89736,-4.596 1.42095,-1.471 1.26227,-0.399 0.54729,-0.65058 0.80235,0.0296 0.8112,-0.481 0.0481,-0.139 0.85399,-1.291 1.76683,-1.111 0.86112,-0.369"},"51121":{"name":"Montgomery, VA","path":"m 807.56873,303.98314 0.62935,1.171 1.05902,1.088 0.64362,2.296 0.0481,0.385 -1.76683,1.111 -0.85399,1.291 -0.0481,0.139 -0.8112,0.481 -0.80235,-0.0296 -0.54729,0.65058 -1.26227,0.399 -0.47818,-1.2446 -0.0744,-0.58029 -0.37196,-0.0383 -0.15941,-0.26146 0.41062,-0.26966 -0.0361,-0.38859 0.60472,-0.26706 0.22174,-0.28505 -0.11252,-0.28584 -0.14453,-0.1 -0.205,-0.0338 -0.186,-0.0305 -0.25663,0.0697 -0.34999,-0.42535 0.27825,-0.33827 0.60625,-0.20148 -0.0952,-0.30774 -0.74344,0.27676 -0.48837,0.44681 -0.55939,-0.51714 0.0357,-0.98995 1.7419,-0.83901 1.1107,-1.27599 1.74861,-1.47253 1.21452,0.37253"},"51775":{"name":"Salem, VA","path":"m 811.68059,303.86136 -0.0481,0.105 0.40924,0.25874 -0.0486,0.33545 0.2621,0.17565 -0.0841,0.38871 -0.32381,0.12239 0.15154,0.266 -0.36787,-0.10515 -0.44776,0.12566 -0.33236,-0.53127 -0.36786,-0.10515 -0.28432,0.009 0.59455,-0.31918 0.45259,-0.47204 0.43483,-0.2501"},"51067":{"name":"Franklin Co., VA","path":"m 815.44545,305.35614 1.27785,-0.24558 0.29068,0.674 0.91209,-0.0351 0.23901,0.75015 0.79668,-0.0271 1.05049,1.16263 0.69623,1.25584 -0.22836,4.47241 -0.31711,0.4405 -1.11144,0.54882 -0.283,0.64068 -0.6192,-0.10893 -0.23011,0.20424 -3.71903,-0.13929 -0.0676,0.99569 -0.4968,-0.143 -0.86962,-0.95561 -2.95873,-0.15683 0.87893,-2.21618 0.52506,-0.14229 0.39571,-1.76638 -0.7972,-2.01071 0.61048,-0.91121 0.78729,-0.38079 0.54254,-0.23802 0.56463,0.64602 0.40114,0.07 0.14441,-0.08 0.62936,-0.717 0.95562,-1.583"},"51019":{"name":"Bedford Co., VA","path":"m 821.21303,295.14414 0.22494,0.3451 0.34728,-0.2429 0.53687,0.30479 1.00031,1.52657 0.93265,0.31959 0.57901,-0.2429 0.49473,-0.11651 0.8887,0.75162 -0.47834,0.15616 -0.22557,0.15616 -0.24662,0.38789 -0.45728,-0.0756 0.13461,0.58425 0.41488,0.092 -0.17494,0.42905 0.49271,0.20508 -0.32883,1.02662 -2.03083,7.23095 -0.7776,-0.0197 -0.11279,0.14929 0.25115,0.30569 -0.017,0.20703 0.47351,0.26407 -0.34775,0.36843 -0.8839,-0.60691 -0.48058,-0.22637 -0.18398,0.42387 -0.52987,0.0436 -0.69623,-1.25584 -1.05049,-1.16263 -0.79668,0.0271 -0.23901,-0.75015 -0.91209,0.0351 -0.29068,-0.674 -1.27785,0.24558 -0.33697,-1.904 0.76797,-0.8778 0.0358,-0.3305 0.12519,-0.44546 -0.57222,-0.15708 -0.11513,-0.38564 0.39133,-0.26452 1.52792,-1.847 0.18364,-0.183 0.31557,-0.1 0.13549,0.04 0.25852,0.194 0.32983,0.335 0.60974,0.04 0.0874,-0.03 0.0892,-0.07 0.15201,-0.27181 -0.15456,-0.32291 0.35639,-0.55283 0.31807,-0.0546 0.51013,-0.9108 0.43348,-0.39125 0.48303,-0.56077 -0.40467,-0.86137 0.24053,-0.29861 0,-3e-5 -10e-6,-4e-5 0,-3e-5 -1e-5,-3e-5 0,-4e-5 0,-3e-5 -10e-6,-4e-5 0,-3e-5 0,-3e-5 0,-4e-5 -10e-6,-3e-5 0,-3e-5 0,-4e-5 0,-3e-5 -10e-6,-4e-5 0,-3e-5 0,-3e-5 -10e-6,-4e-5 0,-3e-5 0,-4e-5 -1e-5,-3e-5 0,-4e-5 -10e-6,-3e-5 0,-4e-5 0,-3e-5 -10e-6,-3e-5 0,-3e-5 -10e-6,-3e-5 0,-3e-5 0,-3e-5 -1e-5,-3e-5 z"},"51161":{"name":"Roanoke Co., VA","path":"m 810.42688,301.85932 4.37863,1.24636 0.30297,0.34646 0.33697,1.904 -0.95562,1.583 -0.62936,0.717 -0.14441,0.08 -0.40114,-0.07 -0.56464,-0.64602 -0.54253,0.23802 -0.78729,0.38079 -0.61048,0.91121 -0.86112,0.369 -0.0481,-0.385 -0.64362,-2.296 -1.05902,-1.088 -0.62935,-1.171 0.17115,-0.29 0.79516,-0.764 1.12499,-0.472 0.76685,-0.59782 -2e-5,0.002 z m 1.25371,2.00204 -0.43483,0.25014 -0.45259,0.47204 -0.59455,0.31918 0.28432,-0.009 0.36786,0.10515 0.33236,0.53127 0.44776,-0.12566 0.36787,0.10515 0.0571,0.105 0.47158,-0.28905 1.03023,0.67836 0.021,-0.34063 0.45539,0.0268 0.24012,-0.587 -0.16833,-0.74101 0.41756,-0.25049 -0.0892,-0.273 -0.0802,-0.07 -0.44215,-0.24 -0.76815,0.0374 -0.41389,-0.22144 -0.47771,0.4666 -0.53222,-0.0375 -0.0392,0.08"},"51005":{"name":"Alleghany, VA","path":"m 808.92014,289.39014 0.54062,0.17451 0.36686,-0.52051 1.19809,-0.06 0.041,0.02 0.90748,1.14 0.29645,0.23032 2.36686,-0.22033 1.32433,0.69189 0.43922,-0.83388 0.94195,-0.0292 -0.92595,2.57718 -2.68679,-0.425 -0.43145,0.514 0.0481,0.103 -0.0874,0.33 -0.21751,0.403 -0.61866,0.947 -1.39064,1.519 -0.32983,0.306 -0.36727,-0.1 -1.64024,1.637 -1.16421,-0.273 -0.3227,-0.216 -1.58497,-1.239 1.29467,-3.53605 2.00185,-3.13195 3e-5,-0.002 4e-5,-0.002 3e-5,-0.002 z m 1.49418,3.19496 0.098,0.69134 -0.13016,0.51516 0.32947,0.23465 0.29444,-0.1682 -0.0158,-0.56834 -0.23275,-0.42385 -0.13916,-0.35731 -0.20402,0.0766"},"51045":{"name":"Craig, VA","path":"m 810.70301,296.24514 -0.16759,0.241 0.1355,0.314 1.35142,1.646 -1.01267,2.554 -0.58279,0.85918 -0.76685,0.59782 -1.12499,0.472 -0.79516,0.764 -0.17115,0.29 -1.21452,-0.37253 -1.74861,1.47253 -1.16422,-2.346 0.86531,-0.79473 0.77148,-0.56734 0.0758,-0.28319 0.71269,-0.38118 0.35996,-0.37137 0.17587,-0.51549 -0.20625,-0.12356 -0.27483,0.33694 -0.48918,-0.13554 0.32403,-0.25313 -0.19841,-0.51441 0.61483,-0.583 1.03585,-1.254 0.3227,0.216 1.16421,0.273 1.64024,-1.637 0.36727,0.1"},"51023":{"name":"Botetourt, VA","path":"m 816.41711,292.54814 0.0106,0.34108 -0.0767,0.35564 0.3599,0.67582 0.1416,0.26831 -0.14949,0.64672 2.19555,1.23791 -0.0331,0.38475 1.59515,0.79777 -0.51013,0.9108 -0.31807,0.0546 -0.35639,0.55283 0.15456,0.32291 -0.15201,0.27181 -0.0892,0.07 -0.0874,0.03 -0.60974,-0.04 -0.32983,-0.335 -0.25852,-0.194 -0.13549,-0.04 -0.31557,0.1 -0.18364,0.183 -1.52792,1.847 -0.39133,0.26452 0.11512,0.38564 0.57223,0.15708 -0.12519,0.44546 -0.0358,0.3305 -0.76797,0.8778 -0.30297,-0.34646 -4.37863,-1.24636 0.58279,-0.85918 1.01267,-2.554 -1.35142,-1.646 -0.1355,-0.314 0.16759,-0.241 0.32983,-0.306 1.39064,-1.519 0.61866,-0.947 0.21751,-0.403 0.0874,-0.33 -0.0481,-0.103 0.43145,-0.514 2.68679,0.425"},"51009":{"name":"Amherst, VA","path":"m 825.17457,290.06414 0.52893,-0.18557 0.39576,0.19582 0.24289,0.30166 0.49109,-0.0885 0.31469,0.18199 0.27676,1.32989 1.3939,0.24804 0.23624,0.2605 0.33031,0.0606 1.55836,2.61336 0.61903,0.006 -0.51677,0.65026 0.007,0.43373 -0.39752,0.37143 -0.45981,-0.25156 0.24512,0.58287 -0.40902,0.27138 -0.29892,0.32494 -0.29737,0.72256 -0.48266,0.11431 9.8e-4,0.30656 -0.41676,-0.0101 0.22595,0.68129 -0.38755,0.009 -0.53952,-0.34901 -0.15684,0.27283 -0.92219,-0.97086 -0.53952,-0.34902 -0.88869,-0.75162 -0.49474,0.11651 -0.579,0.2429 -0.93267,-0.31958 -1.0003,-1.52658 -0.53687,-0.3048 -0.34728,0.24291 -0.22494,-0.3451 0.21038,0 0.39223,-0.323 0.56517,-0.563 0.29596,-0.402 0.37975,-1.782 0.23712,-0.796 0.17115,-0.378 0.39402,-0.65 0.17472,-0.193 0.73988,0.42341 0.40116,-0.42341"},"51163":{"name":"Rockbridge, VA","path":"m 818.53159,284.57714 2.90786,1.511 3.06832,1.478 0.57052,0.443 0.36268,0.87024 -0.26638,1.18476 -0.40116,0.42341 -0.73988,-0.42341 -0.17472,0.193 -0.39402,0.65 -0.17115,0.378 -0.23712,0.796 -0.37975,1.782 -0.29596,0.402 -0.56517,0.563 -0.39223,0.323 -0.21038,0 -0.24053,0.29861 0.40467,0.86137 -0.48303,0.56077 -0.43348,0.39125 -1.59515,-0.79777 0.0331,-0.38475 -2.19555,-1.23791 0.14949,-0.64672 -0.1416,-0.26831 -0.3599,-0.67582 0.0767,-0.35564 -0.0106,-0.34108 0.92595,-2.57718 -0.94195,0.0292 0.64198,-1.70565 1.29805,-2.27426 -0.34213,-0.0873 0.53263,-1.35575 -3e-5,-0.002 -2e-5,-0.002 -3e-5,-0.002 z m 2.34245,6.69855 -0.48778,-0.16244 -0.20743,0.16994 -0.0876,0.18664 0.0262,0.273 0.20041,0.15086 z m 0.86075,0.99356 0.17931,0.51002 -0.12825,0.31508 0.21114,0.17641 0.25622,-0.35667 0.3692,-0.58702 -0.0401,-0.70265 -0.2936,0.0204 -0.24129,0.35441 z"},"51017":{"name":"Bath, VA","path":"m 812.30225,281.45814 0.8843,0.412 0.83617,0.314 2.65112,0.07 0.95027,0.264 -0.21051,0.84254 0.90481,-0.57896 0.90481,0.0334 -0.69163,1.76104 -0.53263,1.35575 0.34213,0.0873 -1.29805,2.27426 -0.64198,1.70565 -0.43922,0.83388 -1.32433,-0.69189 -2.36686,0.22033 -0.29645,-0.23032 -0.90748,-1.14 -0.041,-0.02 -1.19809,0.06 -0.36686,0.52051 -0.54062,-0.17451 1.24444,-2.836 0.49043,-0.94408 -0.32339,-1.60392 1.32624,-1.60392 0.64439,-0.94408"},"51091":{"name":"Highland, VA","path":"m 820.21819,276.61414 -0.029,0.31827 0.34933,0.34462 -0.46881,0.44081 -0.85111,2.41721 0.15254,0.66057 -0.51447,0.7884 -0.66991,0.0423 -0.12586,0.46197 -0.43675,0.43088 -0.95027,-0.264 -2.65112,-0.07 -0.83617,-0.314 -0.8843,-0.412 -0.43324,-0.875 0,-0.03 0.009,-0.08 1.10003,-1.71 0.47425,-1.688 0.0891,-1.625 0.0303,-1.904 1.77752,0.426 0.36192,0.161 0.33697,0.337 1.09111,1.617 3.07902,0.522"},"51079":{"name":"Greene, VA","path":"m 834.72362,273.74614 0.35301,-1.336 0.55242,0.64232 0.38099,1.78961 2.10852,1.84236 0.75023,-0.17529 -1.09112,2.25 -5.57146,-1.157 1.5752,-1.63788 0.94221,-2.21812"},"51165":{"name":"Rockingham, VA","path":"m 823.27224,267.83914 0.82271,-1.90967 2.46312,1.27467 4.64973,2.876 -0.47246,2.291 1.41738,0.729 1.34072,0.542 0.27991,0.09 0.95027,0.02 -0.94221,2.21812 -1.5752,1.63788 0.20899,0.66062 -0.52951,0.0804 -0.59543,0.687 -0.30532,0.476 -2.89723,-1.72177 -0.33443,0.08 -6.28887,-3.04921 1.80783,-6.976 0,-0.003 z m 4.78055,6.07926 0.20325,0.29547 -0.007,0.18742 0.30699,-0.15856 0.0274,0.27954 0.206,0.0893 0.0158,0.42592 -0.44418,0.20786 -0.532,0.14932 -0.0417,0.47131 -0.40759,0.0981 -0.0856,-0.13608 0.17785,-0.53857 -0.15879,-0.27512 -0.17707,-0.10357 0.154,-0.47009 0.2027,-0.0331 0.20281,-0.73208 z"},"51015":{"name":"Augusta, VA","path":"m 820.21819,276.61414 1.24622,-1.799 6.28887,3.04921 0.33443,-0.08 2.89723,1.72177 -0.11232,0.644 -0.10341,1.164 0.2086,0.882 0,0.211 -0.24247,0.426 -0.67571,0.586 -0.1596,0.44522 -0.40792,0.20123 0.0118,0.67632 -0.25982,0.22062 -0.02,0.29046 0.26001,0.0483 -0.0645,0.29705 0.0653,0.34032 -0.38918,0.089 -0.0431,0.13231 -0.33362,0.0633 -0.82036,1.44781 -0.85281,-0.13137 -0.11731,-0.4126 -0.45261,0.0633 -0.24709,0.26882 -1.15067,0.55184 -0.57052,-0.443 -3.06832,-1.478 -2.90786,-1.511 0.69163,-1.76104 -0.90481,-0.0334 -0.90481,0.57896 0.21051,-0.84254 0.43675,-0.43088 0.12586,-0.46197 0.66991,-0.0423 0.51447,-0.7884 -0.15254,-0.66057 0.85111,-2.41721 0.46881,-0.44081 -0.34933,-0.34462 0.029,-0.31827 z m 4.81696,4.51041 -0.20468,0.34959 -0.0499,0.403 0.14278,0.39012 0.44563,0.2374 0.273,-0.19239 0.50025,0.14847 0.33697,-0.351 0.0928,-0.35861 0.002,-0.42939 -0.2173,-0.15616 0.19283,-0.2107 -0.46422,-0.23753 -0.2221,0.27815 z m 3.13007,2.58036 -0.0887,-0.32134 0.19231,-0.29134 0.0639,-0.33329 0.53842,-0.2383 0.60441,-0.084 0.11868,0.37542 0.18862,0.0624 -0.17014,0.37457 0.0782,0.28188 -0.41828,-0.0292 -0.51329,0.57391 -0.23291,-0.29447 z"},"51125":{"name":"Nelson, VA","path":"m 830.05963,283.41914 4.20241,5.90572 -0.25467,0.40689 0.49697,0.36734 0.33873,-0.14695 -0.0705,0.30748 -0.22541,0.47744 0.36047,0.44317 -0.0945,0.17979 -0.25408,0.0281 -0.38178,-0.38685 -0.20618,0.16382 0.10507,0.3873 -0.38976,0.2995 0.0492,0.71452 -1.39537,0.0282 -0.38177,0.53095 0.3844,0.41924 -0.3259,0.47509 0.32055,0.28354 0.0104,0.38706 -0.12671,0.43656 -0.0946,0.22345 -0.30968,-0.39617 -0.25478,0.0242 -0.61903,-0.006 -1.55836,-2.61336 -0.33031,-0.0606 -0.23624,-0.2605 -1.3939,-0.24804 -0.27676,-1.32989 -0.31469,-0.18199 -0.49109,0.0885 -0.24289,-0.30166 -0.39576,-0.19582 -0.52893,0.18557 0.26638,-1.18476 -0.36268,-0.87024 1.15067,-0.55184 0.24709,-0.26882 0.45261,-0.0633 0.11731,0.4126 0.85281,0.13137 0.82036,-1.44781 0.33362,-0.0633 0.043,-0.13231 0.38918,-0.089 -0.0653,-0.34032 0.0645,-0.29705 -0.26001,-0.0483 0.02,-0.29046 0.25982,-0.22062 -0.0118,-0.67632 0.40792,-0.20123 0.1596,-0.44522"},"51029":{"name":"Buckingham, VA","path":"m 842.19741,289.58314 0.0713,1.285 -1.19095,3.4 -1.45942,4.08107 -0.8831,0.16697 -0.78552,-0.15291 -0.7513,-0.90577 -0.20797,-0.12692 -0.20798,0.51164 -0.53229,-0.31265 -0.15712,-0.33544 -0.46862,-0.0551 -3.27619,-2.44855 -0.0104,-0.38706 -0.32055,-0.28354 0.3259,-0.47509 -0.3844,-0.41922 0.38177,-0.53095 1.39537,-0.0282 -0.0492,-0.71452 0.38975,-0.29951 -0.10506,-0.38729 0.20618,-0.16382 0.38178,0.38685 0.25408,-0.0281 0.0945,-0.17979 -0.36047,-0.44316 0.22541,-0.47745 0.0705,-0.30748 0.0571,-0.152 0.36193,-0.28349 0.8326,-0.24 0.43566,-0.30787 0.63406,0.10787 0.0892,-0.08 0.025,-0.09 -0.0499,-0.716 0.27121,0.0674 0.42537,0.57732 1.14869,0.37574 0.79296,-0.0748 0.75738,0.25716 0.5558,-0.0156 0.35422,0.19788 0.66322,0.005"},"51011":{"name":"Appomattox, VA","path":"m 837.19843,297.45747 -0.0492,1.11235 0.15155,0.26138 -0.4754,0.4361 -0.7383,1.81384 -0.28015,0.35297 -0.29988,0.0372 -0.1716,0.45164 -0.40842,0.10628 -0.4479,0.0175 -0.13213,0.20495 -0.21107,0.49111 -0.33972,-0.0863 -0.7278,-0.0873 -0.0182,-0.59133 -0.59652,-0.0987 -0.61794,0.22261 -0.0514,-0.63035 -0.45833,-0.26622 -1.89044,-3.12101 0.29737,-0.72256 0.29892,-0.32495 0.40901,-0.27137 -0.24512,-0.58287 0.45982,0.25156 0.39752,-0.37143 -0.007,-0.43373 0.51677,-0.65026 0.25478,-0.0242 0.30968,0.39617 0.0946,-0.22345 0.12671,-0.43656 3.27619,2.44855 0.46862,0.0551 0.15712,0.33544 0.53229,0.31265 0.20797,-0.51164 0.20798,0.12692"},"51031":{"name":"Campbell, VA","path":"m 828.37559,299.18556 0.38755,-0.009 -0.22595,-0.6813 0.41676,0.0101 -9.8e-4,-0.30656 0.48266,-0.11431 1.89044,3.12101 0.45833,0.26622 0.0514,0.63035 0.61794,-0.22261 0.59652,0.0987 0.0182,0.59133 0.7278,0.0873 -0.56347,4.39897 -1.31483,-0.37493 -0.49512,0.4897 -0.88814,-0.12789 -0.84322,-0.38598 -0.47624,0.0977 -0.22094,-0.29739 -0.36825,0.20414 -0.29589,0.25237 -0.21485,-0.0123 -0.21485,-0.18114 -0.21485,0.40977 -0.21485,-0.26556 -0.0306,-0.98621 -0.24431,-0.0394 -0.13577,0.15349 0.0391,0.28011 -0.18921,0.0248 -0.1289,-0.30079 -0.29171,-0.35507 -0.2676,0.16347 -0.0334,0.44318 -0.34694,0.0935 -0.65031,-0.26931 -0.37965,-0.22305 -0.0782,0.30755 -0.54223,0.18097 0.23062,0.34186 -0.50499,0.35391 0.05,0.66187 -0.64942,0.28802 2.03083,-7.23095 0.90391,0.27923 0.7218,-0.28935 0.28017,-0.57326 0.65872,-0.3209 0.46285,-0.66131"},"51083":{"name":"Halifax, VA","path":"m 829.69145,306.65591 0.84322,0.38636 0.88814,0.12789 0.49512,-0.4897 1.31483,0.37494 0.21787,0.19731 -0.0487,0.71818 1.47085,-0.40305 0.61251,0.61397 0.14276,-0.76643 0.28294,-0.10909 -0.16846,-0.26941 0.12962,-0.2103 0.21279,0.14978 0.0395,0.30593 0.47741,0.99431 -0.38393,0.3818 1.43446,1.18572 0.47743,0.26696 -0.32651,0.51579 0.41999,0.3818 -0.17255,0.57398 0.42082,0.38256 -0.42138,0.6314 1.03454,0.87823 0.71977,0.62279 1.42577,0.55491 0.0138,0.13403 -1.534,-0.47694 -0.73296,-0.62628 -0.80085,0.44629 0.0952,2.31743 -0.2986,0.22315 0.25209,0.72683 -1.11607,0.217 -6.1723,1.116 -1.45304,0.257 0.20769,-12.32823"},"51143":{"name":"Pittsylvania, VA","path":"m 823.91671,307.03221 0.50499,-0.35391 -0.23062,-0.34186 0.54223,-0.18097 0.0782,-0.30755 0.37965,0.22305 0.65031,0.26931 0.34694,-0.0935 0.0334,-0.44318 0.2676,-0.16349 0.29171,0.35507 0.1289,0.30079 0.18921,-0.0248 -0.0391,-0.28011 0.13577,-0.1535 0.24431,0.0395 0.0306,0.98621 0.21485,0.26556 0.21485,-0.40977 0.21485,0.18114 0.21485,0.0123 0.29589,-0.25237 0.36825,-0.20414 0.22094,0.29739 0.47624,-0.0977 -0.20769,12.32823 -2.24285,0.412 -0.16036,-0.39474 0.23909,-0.27032 0.46417,-0.14706 -0.0603,-0.27936 -0.44368,0.10154 -0.14502,-0.44981 -0.63465,-0.0726 -0.19816,-0.55503 -0.54453,-0.0646 -0.36074,1.00368 -0.2344,-0.16795 -1.03844,-0.0646 -0.32492,0.51459 0.45723,0.36286 0.63624,0.0356 -0.19063,0.46607 0.24109,0.38672 -0.73097,0.136 -3.69589,0.618 -0.0358,-7.1947 0.22836,-4.47241 0.52987,-0.0436 0.18398,-0.42387 0.48058,0.22637 0.8839,0.60691 0.34775,-0.36843 -0.47351,-0.26407 0.017,-0.20703 -0.25115,-0.30569 0.11279,-0.14929 0.77753,0.0213 0.64938,-0.28721 z"},"51690":{"name":"Martinsville, VA","path":"m 816.68791,317.17488 0.93779,0.0431 0.008,0.7313 0.32575,0.33488 0.0209,0.22739 -0.57005,0.0703 -0.0624,-0.331 -0.92899,-0.1366 0.17413,-0.67055 z"},"51590":{"name":"Danville, VA","path":"m 827.24091,319.39614 -2.29812,0.408 -0.24109,-0.38672 0.19063,-0.46607 -0.63624,-0.0356 -0.45723,-0.36286 0.32492,-0.51459 1.03844,0.0646 0.2344,0.16795 0.36074,-1.00368 0.54453,0.0646 0.19816,0.55503 0.63465,0.0726 0.14502,0.44981 0.44367,-0.10154 0.0603,0.27936 -0.46417,0.14706 -0.23909,0.27032 0.16036,0.39474"},"51680":{"name":"Lynchburg, VA","path":"m 828.37559,299.18556 -0.46285,0.66131 -0.65872,0.3209 -0.28017,0.57326 -0.7218,0.28935 -0.90391,-0.27923 0.32883,-1.02662 -0.49272,-0.20508 0.17495,-0.42905 -0.41488,-0.092 -0.13461,-0.58425 0.45728,0.0756 0.24663,-0.38788 0.22556,-0.15617 0.47834,-0.15616 0.53952,0.34902 0.92219,0.97086 0.15684,-0.27283 0.53952,0.34901"},"51770":{"name":"Roanoke, VA","path":"m 811.68059,303.86136 0.0392,-0.08 0.53222,0.0375 0.47771,-0.4666 0.41389,0.22144 0.76815,-0.0374 0.44215,0.24 0.0802,0.07 0.0892,0.273 -0.41756,0.25049 0.16833,0.74101 -0.24012,0.587 -0.45539,-0.0268 -0.0209,0.34063 -1.03022,-0.67835 -0.47159,0.28904 -0.0571,-0.105 -0.15154,-0.266 0.32381,-0.12239 0.0841,-0.38871 -0.2621,-0.17565 0.0486,-0.33545 -0.40923,-0.25874 0.0481,-0.105"},"51530":{"name":"Buena Vista, VA","path":"m 822.28865,291.64877 0.2936,-0.0204 0.0401,0.70265 -0.3692,0.58702 -0.25622,0.35667 -0.21114,-0.17641 0.12825,-0.31508 -0.17931,-0.51002 0.31265,-0.27007 z"},"51580":{"name":"Covington, VA","path":"m 810.61834,292.50855 0.13916,0.35731 0.23275,0.42385 0.0158,0.56834 -0.29444,0.1682 -0.32947,-0.23465 0.13016,-0.51516 -0.0979,-0.69134 z"},"51678":{"name":"Lexington, VA","path":"m 820.87404,291.27569 -0.55625,0.618 -0.20041,-0.15086 -0.0262,-0.273 0.0876,-0.18664 0.20743,-0.16994 0.48778,0.16244"},"51820":{"name":"Waynesboro, VA","path":"m 828.75919,284.08259 0.51329,-0.57391 0.41828,0.0292 -0.0782,-0.28188 0.17014,-0.37457 -0.18862,-0.0624 -0.11868,-0.37542 -0.60441,0.084 -0.53842,0.2383 -0.0639,0.33329 -0.19231,0.29134 0.0887,0.32134 0.36122,0.0762 z"},"51790":{"name":"Staunton, VA","path":"m 826.08518,280.71336 0.46422,0.23753 -0.19283,0.2107 0.2173,0.15616 -0.002,0.42939 -0.0928,0.35861 -0.33697,0.351 -0.50025,-0.14847 -0.273,0.19239 -0.44563,-0.2374 -0.14278,-0.39012 0.0499,-0.403 0.20468,-0.34959 0.82806,-0.12906 z"},"51540":{"name":"Charlottesville, VA","path":"m 836.49907,281.81229 0.10469,0.38112 0.19826,-0.0383 0.14059,0.36566 0.0703,0.33831 -0.28519,0.29534 -0.26566,-0.0172 -0.0801,0.20581 -0.31581,0.0146 -0.21751,0 -0.083,-0.22456 -0.0321,-0.192 0.0571,-0.28775 0.0643,-0.38187 0.30092,-0.31363 z"},"51660":{"name":"Harrisonburg, VA","path":"m 827.4926,274.41149 -0.2027,0.0331 -0.154,0.47009 0.17707,0.10357 0.15879,0.27512 -0.17785,0.53857 0.0856,0.13608 0.40759,-0.0981 0.0417,-0.47131 0.532,-0.14932 0.44418,-0.20786 -0.0158,-0.42592 -0.206,-0.0893 -0.0274,-0.27954 -0.30699,0.15856 0.007,-0.18742 -0.20325,-0.29547 -0.35719,-0.24299 z"},"51003":{"name":"Albermarle, VA","path":"m 832.20621,277.60214 5.57146,1.157 3.07367,0.633 -1.19452,3.225 -2.42826,5.57551 0.0499,0.716 -0.025,0.09 -0.0892,0.08 -0.63406,-0.10787 -0.43566,0.30787 -0.8326,0.24 -0.36193,0.28349 -0.0571,0.152 -0.33873,0.14695 -0.49697,-0.36734 0.25467,-0.40689 -4.20241,-5.90572 0.67571,-0.586 0.24247,-0.426 0,-0.211 -0.2086,-0.882 0.10341,-1.164 0.11232,-0.644 0.30532,-0.476 0.59543,-0.687 0.52951,-0.0804 -0.20899,-0.66062 4e-5,-5e-4 4e-5,-5e-4 4e-5,-5e-4 z m 3.64868,4.66134 -0.0643,0.38187 -0.0571,0.28775 0.0321,0.192 0.083,0.22456 0.21751,0 0.31581,-0.0146 0.0801,-0.20581 0.26566,0.0172 0.28519,-0.29535 -0.0703,-0.33831 -0.14059,-0.36566 -0.19826,0.0383 -0.10469,-0.38112 -0.34322,0.14556 z"},"51065":{"name":"Fluvanna, VA","path":"m 839.65682,282.61714 4.73887,1.485 -1.0198,3.898 -0.7747,0.7915 -0.40378,0.7915 -0.66322,-0.005 -0.35422,-0.19788 -0.5558,0.0156 -0.75738,-0.25716 -0.79296,0.0749 -1.14869,-0.37574 -0.42537,-0.57732 -0.27121,-0.0674 2.42826,-5.57551"},"51049":{"name":"Cumberland, VA","path":"m 842.60119,288.79164 0.7747,-0.7915 0.96095,0.44375 0.45755,0.28478 -0.31079,0.6822 0.82848,0.36427 -0.0974,4.61892 -0.97295,0.72838 -0.57879,1.7877 -1.62375,1.71657 -0.51753,0.16443 -0.56137,0.12059 -0.73672,-0.49315 -0.60521,-0.0694 1.45942,-4.08107 1.19095,-3.4 -0.0713,-1.285 z"},"51147":{"name":"Prince Edward, VA","path":"m 843.66293,296.91014 0.37975,1.625 0.61866,4.033 -0.74539,0.5206 -1.63676,0.31602 -0.13165,0.40369 -1.11071,0.43293 -0.30852,-0.14869 -0.29118,0.0247 -0.56854,-0.46072 -0.20451,-0.46071 -0.9499,-0.2527 -0.41253,0.33668 -1.10421,-0.55721 -0.0988,-0.3492 -0.5495,-0.15852 -0.27475,0.25011 -0.17074,-0.0966 -0.0166,-1.28734 0.7383,-1.81384 0.4754,-0.4361 -0.15155,-0.26138 0.0492,-1.11235 0.7513,0.90577 0.78552,0.15291 0.8831,-0.16697 0.60521,0.0694 0.73672,0.49314 0.56137,-0.12059 0.51753,-0.16443 1.62375,-1.71657"},"51037":{"name":"Charlotte, VA","path":"m 833.79623,302.65643 0.33972,0.0863 0.21107,-0.49111 0.13213,-0.20496 0.4479,-0.0175 0.40842,-0.10628 0.1716,-0.45164 0.29988,-0.0372 0.28015,-0.35297 0.0166,1.28734 0.17074,0.0966 0.27475,-0.25011 0.5495,0.15852 0.0988,0.3492 1.10421,0.55721 0.41253,-0.33668 0.9499,0.2527 0.20451,0.46071 0.56854,0.46072 0.29118,-0.0247 0.30852,0.14869 -0.0558,4.34695 -1.89614,4.8836 -1.03454,-0.87823 0.42138,-0.6314 -0.42082,-0.38256 0.17255,-0.57398 -0.41999,-0.3818 0.32651,-0.51579 -0.47743,-0.26696 -1.43446,-1.18572 0.38393,-0.3818 -0.47741,-0.99431 -0.0395,-0.30593 -0.21279,-0.14978 -0.12962,0.2103 0.16846,0.26941 -0.28294,0.10909 -0.14276,0.76643 -0.61251,-0.61397 -1.47085,0.40305 0.0487,-0.71818 -0.21787,-0.19731 0.56347,-4.39897"},"51117":{"name":"Mecklenburg, VA","path":"m 849.85216,309.52636 0.76396,5.49678 -4.99738,0.957 -2.3944,0.481 -4.99917,0.933 -0.25219,-0.72683 0.2986,-0.22315 -0.0952,-2.31359 0.80085,-0.44629 0.73296,0.62628 1.534,0.47694 -0.0138,-0.13403 -1.42577,-0.55491 -0.71977,-0.62279 1.89614,-4.88768 1.53221,0.49331 1.00414,-0.14133 0.34128,0.24726 0.173,-0.27164 1.68033,0.62561 2.6037,0.13014 0.0813,-0.29775 1.45512,0.15267"},"51570":{"name":"Colonial Heights, VA","path":"m 858.84732,297.13344 -0.0915,-0.56614 -0.38077,-0.29431 0.0537,-0.28936 0.36534,0.0188 0.27131,-0.17204 0.20102,0.0476 0.10726,-0.17115 -0.0589,-0.17823 0.0619,-0.0869 0.11656,0.0459 0.10094,0.19821 -0.0465,0.2416 -0.1402,0.14003 -0.0392,0.13 0.12251,0.49424 -0.32281,0.17393 -0.0956,0.14536 -0.0966,0.0303 -0.12837,0.09"},"51111":{"name":"Lunenburg, VA","path":"m 849.29858,303.98314 0.55358,5.54322 -1.45512,-0.15267 -0.0813,0.29776 -2.60371,-0.13015 -1.68033,-0.62561 -0.17299,0.27163 -0.34128,-0.24724 -1.00414,0.14132 -1.53221,-0.49307 0.0558,-4.34695 1.1107,-0.43292 0.13164,-0.4037 1.63676,-0.31602 0.74538,-0.5206 0.82391,0.84337 0.41162,-0.061 0.34513,0.21829 0.27863,0.51088 0.68893,-0.0578 0.978,0.43283 z"},"51670":{"name":"Hopewell, VA","path":"m 860.0051,295.13313 0.59123,-0.1699 0.21809,-0.0665 0.18685,-0.17815 0.15283,0.25217 0.36727,0.15265 -0.13563,0.35389 -0.54188,0.35389 -0.13491,0.32009 -0.18373,-0.11931 -0.22987,0.20219 -0.11657,-0.79594 -0.17368,-0.29607"},"51510":{"name":"Alexandria, VA","path":"m 858.34,259.68359 -0.78727,0.0527 0.0234,0.30078 -0.66992,-0.39649 -0.36761,0.45797 0.10905,0.6963 0.96418,-0.32514 0.83149,0.14548 -0.01,-0.10156 z"},"51139":{"name":"Page, VA","path":"m 834.71065,264.30369 2.09358,1.09245 -0.48769,0.72773 -0.0523,0.89098 0.34219,0.0747 -0.0874,0.60874 0.17398,0.44042 -0.26137,0.44042 -1.35498,3.831 -0.35301,1.336 -0.95027,-0.02 -0.27991,-0.09 -1.34072,-0.542 -1.41738,-0.729 0.47246,-2.291 0.56517,-2.032 0.4992,-1.316 0.74524,0.159 0.52951,-0.69 1.16373,-1.89745"},"51171":{"name":"Shenandoah, VA","path":"m 835.22639,260.04601 -0.24567,0.79205 0.77898,0.57156 -0.34943,1.51837 -0.69962,1.3757 -1.16373,1.89745 -0.52951,0.69 -0.74524,-0.159 -0.4992,1.316 -0.56517,2.032 -4.64973,-2.876 0.96914,-2.8846 0.38773,-0.38263 0.16213,-0.57755 0.47482,-0.19207 0.0905,0.55151 0.67694,-0.69487 0.21626,-0.77995 0.43149,-0.61665 0.42026,0.25996 0.57439,-1.39015 -0.29825,-0.14899 0.33335,-0.75587 1.79388,0.54158 -0.0173,-0.71741 0.60597,-0.94888 0.45135,-0.0764 0.6391,-0.30835 0.25257,0.46471 -0.27753,0.49784 0.68327,0.42053 0.098,0.57514"},"51043":{"name":"Clarke, VA","path":"m 838.98788,253.18173 4.16336,2.19341 -0.42343,0.80679 0.10826,0.6517 -0.3459,0.23079 -0.1951,0.53631 -0.83757,1.00155 -0.70065,0.84886 -1.05314,-0.49862 -0.66843,0.28405 -1.07156,-0.37375 0.12382,-0.55136 -0.22255,-0.28581 0.61611,-0.69709 -0.0997,-0.32764 0.60651,-3.81919"},"51840":{"name":"Winchester, VA","path":"m 837.12779,255.27286 0.39155,0.29869 -0.48139,1.21034 -0.4186,-0.15722 0.0523,-0.70644 -0.23353,-0.078 0.1107,-0.54431 0.30649,-0.0408 z"},"51069":{"name":"Frederick, VA","path":"m 832.74,249.8566 2.29526,1.18441 3.95262,2.14072 -0.60651,3.81919 0.0997,0.32764 -0.61611,0.69709 0.22255,0.28581 -0.12382,0.55136 -0.17143,0.45857 -2.5659,0.72462 -0.098,-0.57514 -0.68327,-0.42053 0.27753,-0.49784 -0.25257,-0.46471 -0.6391,0.30835 -0.45135,0.0764 -0.60597,0.94888 0.0173,0.71741 -1.79388,-0.54158 0.50308,-0.97514 0.53719,-0.34477 0.37023,-0.40441 0.0602,-0.45211 0.46564,-0.65484 -0.40511,-0.28764 -0.0341,-0.20332 -0.21958,-0.13586 0.42129,-1.14778 -0.40511,-0.10213 0.15146,-0.16959 0.13458,-0.55749 0.48961,-0.85345 0.18668,-0.86704 -0.42405,-0.0357 0.16539,-0.7579 -0.33981,-0.3889 z m 3.8088,5.43829 -0.1107,0.54431 0.23352,0.078 -0.0523,0.70644 0.4186,0.15722 0.48139,-1.21034 -0.39155,-0.29869 -0.2725,-0.0178 z"},"51187":{"name":"Warren, VA","path":"m 837.96372,258.86282 1.07156,0.37375 0.66843,-0.28405 1.05314,0.49862 -0.45682,1.22331 -0.35085,0.21712 -0.10598,0.40758 0.32438,0.61 -0.94085,0.28348 -0.19425,0.58239 -0.58064,0.96489 -0.13813,0.96488 -0.70032,0.63137 -0.80916,0.06 -2.09358,-1.09245 0.69962,-1.3757 0.34943,-1.51837 -0.77898,-0.57156 0.24567,-0.79205 2.5659,-0.72462 0.17143,-0.45857"},"51157":{"name":"Rappahannock, VA","path":"m 836.80423,265.39614 0.80916,-0.06 0.70032,-0.63137 0.13813,-0.96489 0.58064,-0.96488 0.7097,0.4426 0.0749,0.17355 0.4004,0.0754 0.55732,0.3445 0.38484,0.0495 0.26941,0.81906 0.16359,0.43426 0.49066,0.43426 0.76128,0.218 0.34766,-0.09 -1.62419,1.976 -1.83993,2.795 -1.01088,-0.06 -2.28564,-1.806 0.26137,-0.44042 -0.17398,-0.44042 0.0874,-0.60874 -0.34219,-0.0747 0.0523,-0.89098 0.48769,-0.72773"},"51113":{"name":"Madison, VA","path":"m 836.43161,268.57914 2.28564,1.806 2.99433,2.55175 -0.29299,0.89619 0.7075,0.65798 -0.24534,0.2411 0.20969,0.22598 -0.43372,0.79429 -0.49179,0.14383 -0.90119,1.15394 -0.51787,0.25956 -0.41334,-0.34445 -0.0533,-0.26315 -0.41049,-0.19302 -0.75023,0.17529 -2.10852,-1.84236 -0.38099,-1.78961 -0.55242,-0.64232 1.35498,-3.831"},"51109":{"name":"Louisa, VA","path":"m 840.85134,279.39214 1.8891,-0.70445 2.64474,0.21545 2.09368,-0.12405 1.90957,0.92306 0.14904,0.38224 1.04656,0.39375 -0.70602,6.718 -0.58525,-0.4446 -1.20498,0.0397 -0.41006,-0.7914 -0.82886,-1.03089 -0.97339,-0.0192 -0.36775,-0.42054 -1.11203,-0.42706 -4.73887,-1.485 1.19452,-3.225"},"51075":{"name":"Goochland, VA","path":"m 852.93742,287.16414 0.0544,0.83425 0.0171,1.07672 0.65122,0.8156 -0.50516,0.61043 -0.87547,-0.52845 -0.58249,-0.008 -0.64411,-0.34071 -0.68163,0.22692 -0.3561,-9.5e-4 -0.0824,-0.39193 -1.57993,-0.73374 -0.1801,-0.35937 -0.32659,-0.001 -0.4393,0.58503 0.0894,0.36515 0.2877,0.27477 -0.16752,0.48692 -0.58389,0 -0.51981,-0.30026 -1.00811,0.15548 -0.19255,-0.168 -0.82848,-0.36427 0.31079,-0.6822 -0.45755,-0.28478 -0.96095,-0.44375 1.0198,-3.898 1.11203,0.42706 0.36775,0.42054 0.97339,0.0192 0.82886,1.03089 0.41006,0.7914 1.20498,-0.0397 0.58525,0.4446 2.44362,0.13421 0.61579,-0.16421"},"51137":{"name":"Orange, VA","path":"m 838.86879,276.50914 0.41049,0.19302 0.0533,0.26315 0.41334,0.34445 0.51787,-0.25956 0.90119,-1.15394 0.49179,-0.14383 0.43372,-0.79429 0.83247,-0.29039 0.76676,-0.91461 1.35142,-0.892 0.95561,-0.331 0.41006,-0.10625 1.01785,0.20586 -0.13202,-0.58263 0.34435,0.058 0.84152,0.257 0.28348,0.146 -0.18815,0.76792 -3.18861,5.62708 -2.64474,-0.21545 -1.8891,0.70445 -3.07367,-0.633 1.09112,-2.25"},"51007":{"name":"Amelia, VA","path":"m 845.21467,294.39406 0.0974,0.37908 0.3958,-0.04 0.46355,-0.29 0.64718,-0.58 0.73811,-0.499 1.14638,-0.103 0.48316,0.07 0.0802,0.06 0.58656,0.481 0.36906,0.612 -0.32092,0.06 -0.0321,0.04 0.0891,0.779 0.0963,0.394 0.44206,0.15831 0.17777,0.35486 0.5169,-0.0958 0.41116,0.15903 -0.0863,0.56603 0.72324,0.27466 0.17211,0.29486 0.41417,0.069 0.52369,-0.86191 0.30296,0.25641 0.46724,-0.23641 0.41897,0.565 -0.10533,0.52095 -0.45289,0.2727 -0.91628,1.18295 -0.80044,0.1734 -8.22081,-0.866 -0.37975,-1.625 0.57879,-1.7877 0.97295,-0.72838"},"51145":{"name":"Powhatan, VA","path":"m 851.11883,293.10766 -0.0658,0.97773 -0.83087,0.39175 -0.36906,-0.612 -0.58656,-0.481 -0.0802,-0.06 -0.48316,-0.07 -1.14638,0.103 -0.73811,0.499 -0.64718,0.58 -0.46355,0.29 -0.3958,0.04 -0.0974,-0.37908 0.0974,-4.61892 0.19255,0.168 1.00811,-0.15548 0.51981,0.30026 0.58389,0 0.16752,-0.48692 -0.2877,-0.27477 -0.0894,-0.36515 0.4393,-0.58503 0.32659,10e-4 0.1801,0.35937 1.57993,0.73374 0.0824,0.39193 0.3561,9.5e-4 0.68163,-0.22692 0.64411,0.34071 0.58249,0.008 0.8754,0.52588 z"},"51135":{"name":"Nottoway, VA","path":"m 844.04268,298.53514 8.22081,0.866 -0.29785,0.66987 -0.54126,0.17534 -0.38166,0.41473 -0.41755,0.16449 0.71292,3.48937 -1.09876,0.35519 -0.94075,-0.68699 -1.11101,0.47153 -0.97801,-0.43283 -0.68893,0.0578 -0.27863,-0.51088 -0.34513,-0.21829 -0.41162,0.061 -0.82391,-0.84337 z"},"51025":{"name":"Brunswick, VA","path":"m 849.29858,303.98314 0.94075,0.68699 1.09876,-0.35519 2.27089,-0.0449 1.4362,1.16455 1.01226,0.2676 0.8433,4.108 -1.26227,4.234 -2.38548,0.456 -2.63687,0.523 -0.76396,-5.49678 -0.55358,-5.54322"},"51053":{"name":"Dinwiddie, VA","path":"m 854.53843,297.25114 0.58974,-0.3169 0.54008,0.5437 0.43292,0.0656 0.21777,0.28074 0.38328,-0.13302 0.34886,0.1983 0.34886,-0.33131 0.95384,-0.0521 0.12969,0.76381 0.51382,0.0596 0.0424,0.40301 0.4088,-0.22139 0.8112,4.041 -3.43202,3.393 -0.7702,-0.242 -1.01226,-0.2676 -1.4362,-1.16455 -2.27089,0.0449 -0.71292,-3.48937 0.41755,-0.16449 0.38166,-0.41473 0.54126,-0.17534 0.29785,-0.66987 0.80044,-0.1734 0.91628,-1.18295 0.45289,-0.2727 0.10533,-0.52095"},"51595":{"name":"Emporia, VA","path":"m 859.5898,309.88454 -0.21179,0.0554 -0.006,0.20964 -0.28602,0.0296 -0.003,0.10672 -0.25789,-0.0407 -0.2199,-0.484 -0.0232,-0.155 0.11945,-0.20214 0.59582,-0.12215 0.0304,-0.205 0.0891,-0.01 z"},"51081":{"name":"Greensville, VA","path":"m 860.97459,309.15014 -1.06016,1.03274 0.46982,-0.0215 0.36696,0.32561 0.61125,-0.13724 1.06124,0.46703 0.19982,0.55703 0.30268,0.42847 0.15853,0.30312 1.03128,0.26677 -8.47754,1.672 1.26227,-4.234 -0.8433,-4.108 0.7702,0.242 0.40269,0.0437 0.63113,0.3422 0.55068,-0.19256 0.5991,0.0173 0.61524,-0.41853 0.21425,3.3179 1.1339,0.1 0,-5e-4 0,-5e-4 0,-5e-4 0,-5e-4 0,-5e-4 0,-5e-4 0,-5e-4 z m -1.6471,-0.0754 -0.0304,0.205 -0.59582,0.12215 -0.11945,0.20214 0.0232,0.155 0.2199,0.484 0.25789,0.0407 0.003,-0.10672 0.28602,-0.0296 0.006,-0.20964 0.21179,-0.0554 -0.1733,-0.81743 z"},"51735":{"name":"Poquoson, VA","path":"m 877.67552,296.12768 -0.39575,-0.51556 0.001,-0.36671 0.0105,-0.26907 0.44847,-0.0702 0.0168,0.37263 0.31364,-0.10694 -0.11405,-0.43074 0.36785,-0.10755 0.12684,0.33804 0.50424,0.40971 0.0316,-0.22486 0.62014,0.36334 -0.10126,0.13731 -0.33645,0.16036 -0.20035,0.017 -0.26299,0.17137 -0.31471,-0.13729 -0.17747,-0.0655 -0.33034,0.12053 -0.002,0.003 -0.2061,0.20085"},"51620":{"name":"Franklin, VA","path":"m 869.87619,307.18899 0.71699,1.43015 -0.009,0.04 -0.6816,-0.32802 -0.34463,0.0137 0.0867,-0.31585 -0.23934,0.006 -0.0656,-0.22403 0.21563,-0.14982 -0.0539,-0.31703 0.37468,-0.15"},"51175":{"name":"Southampton, VA","path":"m 869.87619,307.18899 -0.37468,0.15 0.0539,0.31703 -0.21563,0.14982 0.0656,0.22403 0.23934,-0.006 -0.0867,0.31585 0.34463,-0.0137 0.6816,0.32802 0.009,-0.04 0.23355,0.06 -0.045,1.1785 -0.27684,0.61176 0.30004,0.37171 0.1252,0.18203 -4.45183,0.836 -2.3623,0.516 -1.03128,-0.26677 -0.15853,-0.30312 -0.30268,-0.42847 -0.19982,-0.55703 -1.06124,-0.46703 -0.61125,0.13724 -0.36696,-0.32561 -0.46982,0.0215 1.06016,-1.03274 7.46488,-7.096 1.61528,-1.551 0.007,0.81429 0.98403,0.9686 -0.5589,2.78577 -0.61033,2.11719"},"51650":{"name":"Hampton, VA","path":"m 877.67552,296.12768 0.28389,-0.0432 0.043,0.11068 0.45062,0.002 0.14092,0.19592 0.24671,0.0254 -0.034,0.20547 -0.3342,0.25968 0.0359,0.42909 0.13863,0.15152 0.0551,-0.15425 -0.0197,-0.13271 0.26448,-0.37985 -0.0433,-0.24482 0.13843,-0.0598 -0.0106,-0.26093 0.17001,-0.0588 0.12639,0.30102 0.13638,0.10464 -0.002,-0.14152 -0.0586,-0.28381 0.22865,-0.12286 0.0873,-0.17277 0.19702,0.0584 0.0972,0.41809 -0.12791,1.26028 0.0405,0.3655 -0.16201,0.32012 -0.2022,0.0858 -0.0236,-0.16106 0.19232,-0.27924 -0.025,-0.25806 -0.1016,0.0182 -0.0481,0.20178 -0.10076,0.16062 -0.29762,0.0244 -0.0979,-0.0128 -0.0876,0.28677 -0.3522,0.20886 -0.30221,0.20398 -0.20038,-0.19549 -0.17604,0.23047 -0.51865,-0.63914 -0.16572,0.10326 -0.31175,-0.29837 0.008,-0.53255 -0.13763,-0.31348 0.16474,-0.37805 0.61302,-0.22669 0.0813,-0.38177"},"51830":{"name":"Williamsburg, VA","path":"m 871.88355,294.20084 -0.28341,-0.0263 -0.32193,0.10714 -0.25691,-0.0757 -0.19968,-0.17 -0.0909,-0.185 -0.0302,-0.23963 0.17191,-0.10182 -0.24408,-0.46393 0.16083,-0.16209 0.29939,0.55453 0.34548,-0.0251 0.091,-0.28969 0.21494,0.0221 0.0609,0.47319 0.0348,0.21319 0.20905,0.0319 0.0298,0.23357 z"},"51700":{"name":"Newport News, VA","path":"m 873.63832,294.5012 0.35939,-0.0284 0.10461,-0.18345 2.47518,2.32004 0.4037,0.12672 -0.16473,0.37805 0.13762,0.31348 -0.008,0.53255 0.31176,0.29837 0.16571,-0.10326 0.51866,0.63914 0.17603,-0.23047 0.20038,0.19549 -0.24001,0.46003 -0.0998,0.40649 -0.34109,-0.10284 -0.3609,-0.53011 0.0135,-0.2841 -0.2311,-0.11532 -0.18441,-0.29164 -0.40317,-0.22995 -0.24243,0.0132 -0.67227,-0.31796 -0.1089,-0.2265 0.10511,-0.14571 -0.0247,-0.26655 -0.10607,0.0276 -0.14218,0.13758 -0.19282,-0.0329 10e-4,-0.132 -0.41034,-0.46973 -0.13044,0.0424 0.001,0.16328 0.44995,0.46577 -0.002,0.16699 -0.18641,0.0107 -0.16985,-0.059 -0.0727,-0.20257 -0.62844,-0.37894 -0.33298,-0.008 -0.15333,-0.146 0.15964,-1.13484 0.10614,-0.22396 0.30554,-0.17966 -0.3148,-0.41228 -0.0711,-0.2572"},"51740":{"name":"Portsmouth, VA","path":"m 878.49239,300.93969 0.36099,-0.0539 -0.009,-0.60333 0.57432,-0.067 0.10816,0.86592 0.27934,0.30322 -0.0726,0.24505 0.48107,-0.0347 0.0658,0.18383 0.30731,-0.022 0.14368,0.23236 0.13206,0.31734 0.12536,0.47221 -1.51833,0.58072 -0.55669,-0.58856 0.0443,-0.46836 0.0616,-0.25912 -0.29383,-0.36731 -0.52586,0.0536 0.20098,-0.34052 0.0917,-0.4498"},"51199":{"name":"York, VA","path":"m 870.78916,292.88356 -0.17542,-0.26967 -0.0806,-0.27643 -0.33785,0.0267 -0.0714,-0.42342 0.25014,-0.45099 0.51363,0.0886 0.55957,-0.28804 0.31991,0.0916 0.12162,0.30207 0.37863,0.24232 0.16943,0.36679 0.84205,0.60875 0.16831,0.007 0.0684,0.20988 0.59645,-0.006 0.30944,0.28714 0.38474,0.2463 0.27545,0.0881 0.24328,0.17837 0.49934,0.129 0.87248,-0.40786 0.11276,-0.20511 0.46645,-0.17625 0.014,0.25906 -0.29403,0.12234 -0.20797,0.18375 0.007,0.14377 0.2852,-0.11538 0.21095,0.18934 0.0431,0.29603 0.0339,0.23137 -0.19583,-0.0641 -0.22995,-0.16511 -0.3546,0.12061 0.0444,0.0991 0.34946,-0.11938 0.13758,0.13976 0.007,0.29598 -0.158,0.13184 -0.1013,0.27238 0.0425,0.13462 -0.29839,0.0352 0.0656,0.10614 0.35872,-0.0431 0.0253,-0.21545 0.2206,-0.0466 -10e-4,0.36671 0.39575,0.51556 -0.0813,0.38177 -0.61302,0.22669 -0.4037,-0.12672 -2.47518,-2.32004 -0.10461,0.18345 -0.35939,0.0284 -0.11509,-0.1522 -0.16056,-0.36009 -0.35545,0.23109 -0.47889,-0.0158 -0.25246,-0.18654 -0.10954,-0.29698 -0.13552,-0.0956 -0.23027,-0.006 -0.0606,-0.46915 -0.21494,-0.0221 -0.091,0.28969 -0.34548,0.0251 -0.29939,-0.55453"},"51095":{"name":"James City, VA","path":"m 869.60807,289.43374 0.73653,0.72985 0.52765,0.29728 0.57496,0.82952 -0.55957,0.28804 -0.51363,-0.0886 -0.25014,0.45099 0.0714,0.42342 0.33785,-0.0267 0.0806,0.27643 0.17542,0.26967 -0.16083,0.16209 0.24408,0.46393 -0.17191,0.10182 0.0302,0.23963 0.0909,0.185 0.19968,0.17 0.25691,0.0757 0.32193,-0.10714 0.28341,0.0263 0.19103,-0.10365 -0.0299,-0.23358 -0.20913,-0.0319 -0.035,-0.21322 0.23026,0.006 0.13552,0.0957 0.10954,0.29712 0.25246,0.18667 0.47889,0.0158 0.35545,-0.23105 0.16056,0.36012 0.11509,0.15224 0.0711,0.2572 0.3148,0.41228 -0.30554,0.17966 -0.10614,0.22396 -0.23668,-0.15261 -0.1091,-0.31579 -0.33646,-0.35907 -0.33097,-0.17082 -0.79047,0.0975 -0.1023,0.23771 -0.6097,0.13114 -0.26483,0.0459 -0.0361,0.0973 0.31669,0.1253 -0.0651,0.27747 -0.25821,0.0218 -0.38324,-0.36018 -0.4997,-0.44626 -0.4886,-0.0988 -0.8308,0.18009 0.008,-0.24925 -0.1521,-0.2915 -0.0902,-0.41234 0.17933,-0.0329 0.10172,-0.19162 -0.30192,-0.11485 -0.0656,-0.11346 0.12286,-0.12773 -0.24242,-0.15648 -0.25338,-0.74104 0.0256,-0.33187 -0.25569,0.0244 -0.1534,0.32197 -0.19989,0.15459 -0.0649,-0.11629 0.12105,-0.29298 0.0745,-0.48826 0.0707,-0.25416 -0.27363,8.3e-4 -0.0744,-0.18666 0.16777,-0.0265 0.0701,-0.003 -0.007,-0.35749 -0.007,-0.27999 0.36914,-0.48435 0.6907,-0.0733 1.01361,0.0881 0.14681,-0.71503"},"51181":{"name":"Surry, VA","path":"m 871.18806,296.55567 0.25646,0.0615 0.3132,-0.17265 0.1082,-0.59121 0.10191,-0.1799 -0.0534,-0.2153 0.13667,-0.18427 0.48747,0.35776 -0.0866,0.31351 0.13112,0.58211 -0.15453,1.85852 -2.37382,2.11744 -1.61528,1.551 -0.48316,-1.223 -0.20216,-0.82512 0.0745,-0.27063 -0.067,-0.1757 -0.27622,-0.0284 -0.25555,0.18967 -0.97081,-0.30222 -0.0738,0.2341 -0.49237,0.0285 -0.12249,-0.40614 -0.42765,0.0562 -0.29818,-0.23044 -0.57318,0.003 -0.21044,-0.13473 1.21797,-2.11369 0.75693,-0.37256 0.0911,-0.52051 0.10371,-0.14952 0.30957,-0.44584 0.27802,0.0242 0.39822,0.0712 0.93062,0.52843 0.50991,-0.2799 1.28103,-0.26255 0.0421,0.36757 0.33734,-0.0322 0.23517,0.30901 0.30268,0.0961 z"},"51183":{"name":"Sussex, VA","path":"m 864.06074,298.97514 0.21044,0.13473 0.57318,-0.003 0.29818,0.23044 0.42765,-0.0562 0.12249,0.40614 0.49237,-0.0285 0.0738,-0.2341 0.97081,0.30222 0.25555,-0.18967 0.27622,0.0284 0.067,0.1757 -0.0745,0.27063 0.20216,0.82512 0.48316,1.223 -7.46488,7.096 -1.1339,-0.1 -0.21425,-3.3179 -0.61524,0.41853 -0.5991,-0.0173 -0.55068,0.19256 -0.63113,-0.3422 -0.40269,-0.0437 3.43202,-3.393 3.80108,-3.576"},"51149":{"name":"Prince George, VA","path":"m 861.70192,295.01896 0.18734,-0.11813 -0.0163,-0.25341 0.25414,0.11564 0.20368,-0.0516 0.069,0.31292 0.21797,0.11974 0.21685,-0.0743 0.19031,-0.27806 0.21984,-0.007 0.0863,-0.12749 0.19739,-0.0115 0.23023,7.4e-4 0.30006,-0.1655 0.15153,-0.255 0.12113,0.11379 0.17417,0.64161 0.52365,0.22335 0.1734,-0.15782 0.12036,-0.35625 0.22691,-0.28669 0.20211,-0.17778 0.0531,-0.12878 0.26266,0.0733 -0.0419,0.30956 0.25598,0.28193 0.19549,0.53427 -0.19297,0.0801 -0.19889,0.20086 0.0412,0.39083 -0.0911,0.52051 -0.75693,0.37256 -1.21797,2.11369 -3.80108,3.576 -0.8112,-4.041 0.18582,-0.23202 0.46878,0.0766 0.28098,-0.15708 -0.0682,-0.31922 0.2465,-0.27185 -0.55166,-0.38409 -0.0308,-0.29426 -0.42106,-0.20573 -0.0955,-0.51474 0.19175,-0.22748 0.0962,-0.2119 -0.0837,-0.60056 0.14191,-0.0742 0.19543,0.0395 0.17367,0.29607 0.11658,0.79594 0.22987,-0.20219 0.18373,0.11931 0.13491,-0.32009 0.54188,-0.35389 0.13563,-0.35389 z"},"51730":{"name":"Petersburg, VA","path":"m 859.55892,296.71854 0.42109,0.20573 0.0308,0.29427 0.55164,0.38408 -0.24652,0.27185 0.0682,0.31921 -0.28103,0.15709 -0.46878,-0.0766 -0.18582,0.23202 -0.4088,0.22139 -0.0424,-0.40301 -0.51382,-0.0596 -0.12969,-0.76381 0.49354,-0.3727 0.12837,-0.09 0.0966,-0.0303 0.0958,-0.14212 z"},"51087":{"name":"Henrico, VA","path":"m 852.93742,287.16414 0.5939,-0.0933 0.89233,0.20517 0.89843,-0.56259 1.0663,0.25806 1.02695,1.7097 2.95693,0.71254 0.37797,0.03 1.21493,1.00829 -0.5135,2.0583 0.31734,0.31272 -0.26149,0.28425 -0.22043,-0.22942 -0.18246,-0.0112 0.0358,0.34941 -0.2822,0.0777 0.0815,0.35221 -0.12415,0.29979 -0.53211,-0.0233 -0.13629,-0.28716 0.14661,-0.68095 -0.2822,-0.0872 -0.2382,0.6901 -0.50208,0.0964 -0.27119,-0.21698 -0.2382,0.14584 -0.4691,-0.72825 -0.51857,-0.0356 0.009,-0.54683 -0.0338,-0.44746 -0.16435,-0.58735 0.0315,-0.40083 0.47912,0.0934 -0.0326,-0.78268 -0.52685,-0.30707 -0.14449,-0.51223 -0.37282,0.0213 -0.23294,-0.37964 -0.67124,0.23584 0.2,0.39873 -0.48179,0.11517 -0.67159,-0.23242 -0.0993,0.47157 0.33339,0.0628 -0.038,0.13098 -1.24088,0.43804 -0.96185,-0.0819 0.50516,-0.61043 -0.65122,-0.8156 -0.0171,-1.07672 -0.0544,-0.83425"},"51041":{"name":"Chesterfield, VA","path":"m 854.11678,290.58308 0.24523,0.42083 0.45614,-0.0775 0.28437,-0.22566 0.16314,0.23129 0.27504,-0.12308 0.29958,0.83885 0.34619,0.54042 0.42461,0.0908 0.4246,-0.15166 0.34563,-0.0422 0.40215,0.17672 -0.009,0.54683 0.51858,0.0356 0.46909,0.72825 0.2382,-0.14584 0.27119,0.21698 0.50208,-0.0964 0.2382,-0.6901 0.2822,0.0872 -0.14661,0.68095 0.13629,0.28715 0.53211,0.0233 0.12415,-0.2998 -0.0815,-0.3522 0.2822,-0.0777 0.20459,0.25721 -0.29019,0.64143 -0.18388,0.31868 -0.24642,0.11474 -0.0282,0.42503 -0.59123,0.1699 -0.19554,-0.0392 -0.14196,0.0743 0.0837,0.60062 -0.0963,0.21193 -0.19175,0.2275 0.0955,0.51476 -0.39079,0.14269 0.32273,-0.17214 -0.12258,-0.49245 0.0392,-0.13 0.1402,-0.14003 0.0465,-0.2416 -0.10094,-0.19821 -0.11656,-0.0459 -0.0619,0.0869 0.0589,0.17823 -0.10726,0.17115 -0.20102,-0.0476 -0.27131,0.17204 -0.36534,-0.0188 -0.0537,0.28936 0.38077,0.29431 0.0915,0.57166 -0.49354,0.3727 -0.95384,0.0521 -0.34886,0.33131 -0.34886,-0.1983 -0.38328,0.13302 -0.21777,-0.28074 -0.43292,-0.0656 -0.54008,-0.5437 -0.58974,0.3169 -0.41897,-0.565 -0.46724,0.23641 -0.30296,-0.25641 -0.52369,0.86191 -0.41417,-0.069 -0.17211,-0.29486 -0.72324,-0.27466 0.0863,-0.56603 -0.41116,-0.15903 -0.5169,0.0958 -0.17777,-0.35486 -0.44206,-0.15831 -0.0963,-0.394 -0.0891,-0.779 0.0321,-0.04 0.32092,-0.06 0.83087,-0.39175 0.0658,-0.97773 2.03614,-2.60952 z"},"51036":{"name":"Charles City, VA","path":"m 861.96516,290.44205 0.16349,0.20466 0.16554,-0.12394 0.39805,0.25065 0.19547,-0.10578 0.18901,0.24297 0.24067,0.16546 0.33756,0.21714 0.32463,-0.12517 0.26005,0.0686 0.0589,0.19997 0.62726,-0.12941 0.0783,0.27747 0.34954,0.0321 0.1558,-0.17462 0.44642,-0.11649 0.0331,0.23872 0.34065,0.006 0.16628,-0.1684 0.1017,0.10286 -0.0662,0.40641 0.14198,0.005 0.14198,-0.33129 0.16135,0.005 0.0645,0.24997 0.18073,0.18539 0.21903,-0.29902 -0.0746,0.48826 -0.12105,0.29298 0.0649,0.11629 0.19989,-0.15459 0.1534,-0.32197 0.25569,-0.0244 -0.0256,0.33187 0.25338,0.74104 -0.18859,0.21573 0.0537,0.18608 0.15547,0.087 -0.0459,0.24807 0.10448,0.49623 0.0852,0.10885 -0.0425,0.16483 -0.22366,0.0729 -0.0219,0.19452 -0.21588,0.04 -0.0588,0.30017 -0.43615,-0.0445 -0.36733,-0.22111 -0.55806,-0.45153 -0.24498,-0.58321 -0.44467,-0.21059 -0.32157,0.33143 -0.56188,0.68487 -0.21478,-0.13128 -0.0621,-0.62699 0.0677,-0.31913 -0.45887,0.33591 -0.2861,0.0564 -0.26615,0.20175 -0.95259,0.14918 -0.36304,-0.20423 -0.79804,0.24387 -0.21135,0.11249 -0.0954,-0.27308 -0.1185,-0.25466 0.29019,-0.64143 -0.20459,-0.25721 -0.0358,-0.34941 0.18246,0.0112 0.22043,0.22942 0.26149,-0.28425 -0.31734,-0.31272 0.5135,-2.0583"},"51127":{"name":"New Kent, VA","path":"m 862.13813,287.31271 0.45905,-0.14114 0.11633,0.1214 0.23084,-0.0504 4.6e-4,0.33382 0.33255,0.15059 0.19558,-0.23704 0.63878,0.13157 0.11793,0.25074 0.22032,0.35277 0.18849,-0.0882 0.37002,0.14873 0.17951,-0.19486 -0.0629,-0.34839 0.10196,-0.0531 0.15552,0.31711 -0.0205,0.13847 -0.11197,0.21321 0.0418,0.18622 0.67949,0.16378 0.0909,-0.63082 0.23817,-0.23615 0.32955,0.32524 0.26458,-0.0357 0.19868,-0.26423 -0.0516,-0.49462 0.10887,-0.10368 0.0776,0.60211 -0.2186,0.34349 0.0979,0.33664 0.26733,-0.0469 0.27673,0.0166 0.16819,-0.52976 0.22242,-0.19113 0.24754,0.35727 0.16257,0.16197 0.0345,0.55861 0.83225,0.27338 0.28909,0.27528 -0.14681,0.71504 -1.01362,-0.0881 -0.69069,0.0733 -0.36914,0.48433 0.007,0.27999 0.007,0.35749 -0.0701,0.003 -0.16778,0.0265 0.0744,0.18672 0.27359,-7.9e-4 -0.0707,0.25416 -0.21903,0.29902 -0.18073,-0.18539 -0.0645,-0.24997 -0.16135,-0.005 -0.14198,0.33129 -0.14198,-0.005 0.0662,-0.40641 -0.1017,-0.10286 -0.16628,0.1684 -0.34065,-0.006 -0.0331,-0.23872 -0.44642,0.11649 -0.1558,0.17462 -0.34954,-0.0321 -0.0783,-0.27747 -0.62726,0.12941 -0.0589,-0.19997 -0.26005,-0.0686 -0.32463,0.12517 -0.33756,-0.21714 -0.24067,-0.16546 -0.18901,-0.24297 -0.19547,0.10578 -0.39805,-0.25065 -0.16554,0.12394 -0.16349,-0.20466 -1.21493,-1.00829 0.38146,-0.61337 0.48986,-0.8196 0.53469,-0.0158 -0.0181,-0.67228"},"51760":{"name":"Richmond, VA","path":"m 857.78346,292.26189 -0.40215,-0.17672 -0.34563,0.0422 -0.4246,0.15163 -0.42461,-0.0908 -0.34619,-0.54042 -0.29958,-0.83885 -0.27504,0.12308 -0.16314,-0.23129 -0.28437,0.22566 -0.45614,0.0775 -0.24523,-0.42083 1.24088,-0.43804 0.038,-0.13098 -0.33339,-0.0628 0.0993,-0.47157 0.67159,0.23242 0.48179,-0.11517 -0.2,-0.39873 0.67124,-0.23584 0.23294,0.37964 0.37282,-0.0214 0.14449,0.51224 0.52685,0.30707 0.0326,0.78268 -0.47912,-0.0934 -0.0315,0.40083 0.16436,0.58735 0.0338,0.44746"},"51630":{"name":"Fredericksburg, VA","path":"m 853.58282,273.35914 -0.32982,0.32839 -0.70598,-0.0697 -0.18727,-0.52097 -0.33089,-0.0458 0.0627,-0.36036 0.38952,-0.13309 0.35722,0.15936 0.30744,-0.11335 0.21543,0.19153 0.19064,0.22966 0.031,0.3344"},"51600":{"name":"Fairfax, VA","path":"m 853.61061,259.78547 0.003,-0.11212 0.49827,-0.0764 0.0846,0.66683 -0.2555,0.0217 -0.014,0.10082 -0.54676,0.15328 -0.14346,-0.2347 -0.24277,-0.14533 0.089,-0.37654 z"},"51683":{"name":"Manassas, VA","path":"m 851.19034,262.54366 0.25994,0.0428 0.0118,0.611 -0.24962,0.26683 -0.23804,-0.0654 -0.39038,-0.11613 -0.13647,0.13777 0.31274,0.4698 -0.0771,0.17608 -0.41308,-0.22627 -0.0693,-0.48407 0.13538,-0.0957 0.0788,-0.0999 0.08,-0.27143 0.33937,-0.39075 0.0341,-0.1531 0.31723,0.025 z"},"51107":{"name":"Loudoun, VA","path":"m 844.21383,250.71514 0.68998,-0.08 1.0666,0.374 0.95554,-0.24477 0.66202,0.83411 1.58224,0.53266 -0.14874,0.87899 -0.55727,0.23701 -0.0731,0.193 -0.007,0.105 -0.0428,0.289 -0.0214,0.208 0.005,0.02 0.12302,0.392 0.10162,0.136 0.0107,0 0.11232,0.08 1.13926,0.765 0.0339,0.01 0.63292,0.04 0.86113,-0.04 0.83616,-0.09 -2.72941,5.66523 -0.34389,-0.78315 -0.7131,-0.14627 -0.64848,-0.60778 -0.74079,-0.37703 -5.54296,-0.50086 0.83757,-1.00155 0.1951,-0.53631 0.3459,-0.23079 -0.10826,-0.6517 0.42343,-0.80679 1.06259,-4.66"},"51061":{"name":"Fauquier, VA","path":"m 841.4575,258.60228 5.54296,0.50086 -0.2562,1.74332 -0.33003,-0.23192 0.0299,0.46034 -0.0624,0.49726 0.0571,0.248 3.7672,4.814 0.77062,0.86792 -1.36935,2.63308 0.11022,1.022 -0.79647,-0.16047 -0.66279,0.2038 -0.21892,0.22024 -0.20247,-0.17431 -0.4162,-0.27295 -0.12028,-0.5031 -0.66018,-0.56391 -0.42873,-0.72582 -0.626,-0.29839 -0.7082,-0.73404 -0.14926,-0.99707 -0.23276,-0.6461 -0.21892,-0.19075 -0.21415,0.14659 -0.21156,-0.20932 0.0281,-0.32304 -0.32202,-0.3062 -0.36448,0.0538 -0.34766,0.09 -0.76128,-0.218 -0.49066,-0.43426 -0.16359,-0.43426 -0.26941,-0.81906 -0.38484,-0.0495 -0.55732,-0.3445 -0.4004,-0.0754 -0.0749,-0.17355 -0.7097,-0.4426 0.19425,-0.58239 0.94085,-0.28348 -0.32437,-0.61 0.10597,-0.40758 0.35085,-0.21712 0.45682,-1.22331 0.70065,-0.84886"},"51047":{"name":"Culpeper, VA","path":"m 843.19225,265.67814 0.36448,-0.0538 0.32202,0.3062 -0.0281,0.32304 0.21156,0.20932 0.21415,-0.14659 0.21892,0.19075 0.23276,0.6461 0.14926,0.99707 0.7082,0.73404 0.626,0.29839 0.42873,0.72582 0.66018,0.56391 0.12028,0.5031 0.4162,0.27295 0.20247,0.17431 0.21892,-0.22024 0.66279,-0.2038 0.79647,0.16047 0.48138,0.9 -0.29675,0.22994 -0.10925,-0.40288 -0.67174,0.51119 -0.35925,0.11275 -0.28348,-0.146 -0.84152,-0.257 -0.34435,-0.058 0.13202,0.58263 -1.01785,-0.20586 -0.41006,0.10625 -0.95561,0.331 -1.35142,0.892 -0.76676,0.91461 -0.83247,0.29039 -0.20969,-0.22598 0.24534,-0.2411 -0.7075,-0.65798 0.29299,-0.89619 -2.99433,-2.55175 1.01088,0.06 1.83993,-2.795 1.62419,-1.976"},"51177":{"name":"Spotsylvania, VA","path":"m 850.19893,272.05714 0.37154,0.24846 0.0825,0.42034 0.13499,0.0695 0.35374,-0.44608 0.88717,0.70159 0.33089,0.0458 0.18727,0.52097 0.70598,0.0697 0.32982,-0.32839 1.52435,0.593 -3.64775,6.75 -0.87539,-0.224 -1.04656,-0.39375 -0.14904,-0.38224 -1.90957,-0.92306 -2.09368,0.12405 3.18861,-5.62708 0.18815,-0.76792 0.35925,-0.11275 0.67174,-0.51119 0.10925,0.40288 0.29675,-0.22994"},"51085":{"name":"Hanover, VA","path":"m 850.58403,280.47814 0.87539,0.224 0.35578,0.6262 0.68356,0.21599 0.16904,-0.16346 0.16903,0.0586 0.28871,0.57999 0.26403,0.13579 0.26893,-0.11094 1.03397,0.58006 0.56507,-0.32071 0.61444,0.61707 -0.12592,0.20988 0.17726,0.61787 0.25129,0.0503 -0.0942,0.32173 0.43638,0.0133 0.0415,0.50682 0.42404,0.075 0.53584,-0.37443 0.36178,-0.0423 0.1592,0.3285 -0.10231,0.35253 0.10353,0.11417 0.51526,-0.13503 0.0277,0.125 -0.28651,0.17918 0.0169,0.24418 0.28773,-0.24338 0.16403,0.0475 -0.0418,0.23169 0.22389,0.27151 0.16589,0.0224 0.12758,-0.26102 0.18121,-0.0235 0.19653,0.19865 0.11992,-0.0848 -0.1712,-0.27634 0.13524,-0.1078 0.12512,0.089 0.11172,0.1161 0.0581,0.22335 -0.15642,0.30763 0.18833,0.2157 0.16343,-0.0949 0.22472,-0.0872 0.0255,0.18093 0.1481,0.0813 0.0945,-0.11019 0.0179,-0.2098 0.21624,-0.0579 0.086,0.29449 -0.0902,0.2792 0.10897,0.18723 0.24687,-0.0656 0.21624,-0.32605 0.93351,0.015 -0.28311,0.99196 0.0181,0.67228 -0.53469,0.0158 -0.48986,0.8196 -0.38146,0.61337 -0.37797,-0.03 -2.95693,-0.71254 -1.02695,-1.7097 -1.0663,-0.25806 -0.89843,0.56259 -0.89233,-0.20517 -0.5939,0.0933 -0.61579,0.16421 -2.44362,-0.13421 0.70602,-6.718"},"51101":{"name":"King William, VA","path":"m 860.07526,281.40568 0.19255,-0.169 0.39122,0.23046 -0.0367,0.32325 0.40049,0.0206 0.64715,1.1529 0.40283,-0.0229 -0.0681,0.5601 0.50373,0.10043 -0.0344,0.48162 0.19957,0.0599 0.30047,-0.041 0.51348,0.50839 0.43501,-0.0858 0.27805,0.26175 0.44621,-0.0634 0.21079,0.32898 0.24441,0.0263 0.63681,-0.28765 0.25562,0.40745 0.009,0.41866 0.15472,0.0375 0.39016,-0.18675 0.51349,0.46351 -0.13678,0.3627 0.25563,0.0263 0.15179,-0.17219 0.30607,0.24091 0.29937,-0.01 -0.0751,0.31302 0.42443,-0.0148 0.0721,0.30017 0.21302,0.0553 0.16617,0.10849 0.14414,0.33272 -0.0801,0.32151 -0.16082,0.20705 -0.20249,0.0724 -0.14939,-0.29568 -0.21245,-0.16683 -0.36583,0.24831 -0.1203,0.26625 -0.17264,0.12161 -0.11205,-0.11433 0.20602,-0.37096 -0.0881,-0.39273 -0.23919,-0.32438 -0.45381,0.26573 0.19114,0.48338 -0.24357,0.0749 -0.13423,-0.29868 -0.20483,-0.0348 -0.52708,0.43331 -0.0731,0.39511 -0.19684,-0.0413 0.0781,-0.33377 -0.14905,-0.34681 -0.21161,-0.18557 -0.42386,0.17356 0.0899,0.25687 -0.35218,0.0111 0.007,-0.37765 -0.30303,-0.0278 -0.16676,0.13468 -0.63878,-0.13157 -0.19558,0.23704 -0.33255,-0.15059 -4.6e-4,-0.33382 -0.23084,0.0504 -0.11633,-0.1214 -0.45905,0.14114 0.28311,-0.99196 -0.93351,-0.015 -0.21623,0.32605 -0.24688,0.0656 -0.10897,-0.18723 0.0902,-0.27919 -0.086,-0.29449 -0.21623,0.0579 -0.0179,0.2098 -0.0945,0.11019 -0.1481,-0.0813 -0.0255,-0.18093 -0.22471,0.0872 -0.16343,0.0949 -0.18833,-0.2157 0.15642,-0.30763 -0.0581,-0.22335 -0.11172,-0.1161 -0.12512,-0.089 -0.13525,0.1078 0.17121,0.27634 -0.11992,0.0848 -0.19654,-0.19865 -0.18121,0.0235 -0.12758,0.26102 -0.16589,-0.0224 -0.22389,-0.27151 0.0418,-0.23169 -0.16403,-0.0475 -0.28772,0.24338 -0.0169,-0.24418 0.28651,-0.17918 -0.0277,-0.125 -0.51526,0.13503 -0.10353,-0.11417 0.10231,-0.35253 -0.1592,-0.3285 -0.36178,0.0423 0.56287,-0.79236 0.94002,-1.58781 -0.0261,-0.71372 0.55472,0.0155 0.11109,0.25563 0.41447,-0.11275"},"51097":{"name":"King and Queen, VA","path":"m 860.07526,281.40568 -0.20762,-1.07216 0.0225,-0.58271 0.54795,-0.32184 0.62114,-0.10229 0.3012,0.0787 0.3012,-0.34558 0.0597,0.64047 0.468,0.31879 0.21649,0.0235 0.25315,0.35352 0.16565,0.61598 -0.24992,0.18947 0.0344,0.17854 0.38922,0.0361 0.19237,0.42981 0.3236,0.11265 0.21424,-0.11701 0.35641,0.20015 0.43056,-0.0738 0.17843,0.9032 0.6177,-0.36736 0.64863,0.22036 0.51316,-0.50713 0.82203,-0.0545 0.12886,0.40992 0.62524,0.34659 0.3378,0.20678 0.28154,0.90282 1.18227,1.35713 0.90803,0.71924 0.22213,1.52327 0.0713,0.192 0.46711,0.491 0.0909,0.217 0,0.111 -0.0428,0.192 -0.14441,0.314 -0.80779,0.39918 -0.22348,-0.10495 -0.53732,-0.67188 -0.79013,-0.49609 -0.0641,-0.22041 -0.19793,-0.25848 0.0801,-0.32151 -0.14415,-0.33272 -0.16656,-0.10849 -0.21302,-0.0553 -0.0721,-0.30017 -0.42443,0.0148 0.0751,-0.31302 -0.29937,0.01 -0.30607,-0.24091 -0.15179,0.17219 -0.25562,-0.0263 0.13677,-0.36265 -0.51349,-0.46355 -0.39016,0.18671 -0.15472,-0.0375 -0.009,-0.4187 -0.25562,-0.40749 -0.63681,0.28761 -0.24441,-0.0263 -0.21078,-0.32902 -0.44622,0.0634 -0.27805,-0.26175 -0.43501,0.0858 -0.51348,-0.50839 -0.30047,0.041 -0.19957,-0.0599 0.0344,-0.48162 -0.50373,-0.10043 0.068,-0.5601 -0.40283,0.0229 -0.64715,-1.1529 -0.40049,-0.0206 0.0367,-0.32325 -0.39122,-0.23046 -0.19255,0.169"},"51119":{"name":"Middlesex, VA","path":"m 869.4501,282.4261 0.33181,0.22467 0.83741,-0.0548 0.15259,0.36988 0.26693,0.0232 0.28906,0.47015 0.22129,0.69496 0.20186,0.15821 -0.58403,-0.11207 -0.0718,0.19971 0.65353,0.0728 -0.0333,0.23853 0.49812,0.26377 0.55179,0.26433 1.8921,-0.36546 0.20336,0.53644 0.70956,0.11834 0.83267,-0.16693 0.22783,0.16278 0.73833,-0.0401 -0.16604,0.48948 -0.33584,-0.13888 0.0671,0.45599 -0.3568,-0.0894 -0.5119,0.1218 -0.61058,0.12547 -0.13218,0.38767 -0.31526,-0.0146 -0.1366,0.15205 -0.70076,-0.40305 -0.22839,0.17968 -0.47029,-0.27357 -0.21001,0.0704 -0.23532,-0.0693 -0.33493,-0.0804 -0.13572,0.20734 -0.33493,-0.20214 -0.40133,-0.33494 -0.30173,0.20735 -0.4456,-0.13574 -0.31279,-0.0318 -0.90803,-0.71924 -1.18227,-1.35713 -0.28154,-0.90282 1.0627,-0.70374"},"51073":{"name":"Gloucester, VA","path":"m 874.98924,287.20293 -0.0442,0.55841 0.15502,0.65802 0.16266,0.48511 -0.21378,0.34051 0.22099,0.0213 0.66425,0.10197 0.34837,0.79755 -0.58298,-0.14478 -0.5602,-0.23117 -0.57057,-0.24305 0.0292,0.25069 0.46309,0.16892 -0.0404,0.61441 0.63454,-0.0524 0.6645,0.26873 0.12576,0.49762 -0.60871,-0.10289 -0.28991,-0.0206 0.24794,0.31784 0.20602,0.13378 0.47745,-0.0904 0.65369,0.26363 -0.16202,0.72952 -0.46382,0.22623 -0.82764,0.36663 -0.60131,0.11623 -0.42861,-0.45578 -0.31441,-0.0852 -1.02883,-0.73731 -0.10432,-0.34308 -0.39725,-0.15217 -1.12535,-0.89077 -0.0735,-0.16135 -0.50126,-0.0192 -0.48804,-0.83835 0.80779,-0.39918 0.14441,-0.314 0.0428,-0.192 0,-0.111 -0.0909,-0.217 -0.46711,-0.491 -0.0713,-0.192 -0.22213,-1.52327 0.31279,0.0318 0.4456,0.13574 0.30173,-0.20734 0.40133,0.33494 0.33493,0.20213 0.13572,-0.20734 0.33493,0.0804 0.23532,0.0693 0.43005,0.34231 0.36383,-0.006 0.42578,0.1419 0.50799,0.17654"},"51103":{"name":"Lancaster, VA","path":"m 870.52236,281.07583 1.64032,-1.08897 0.47175,-0.066 0.40642,0.2327 0.42766,-0.0141 0.27832,-0.15409 0.34365,0.56462 0.409,0.35927 0.35299,-0.0421 0.23164,0.13525 0.17565,0.79798 -0.067,0.48061 0.35041,0.13002 0.69741,0.39936 0.0435,0.24379 -0.24678,0.11218 0.27638,0.25353 0.0615,0.39926 0.22882,-0.0438 0.3494,-0.28778 0.57238,0.52472 -0.085,0.21015 -0.22329,0.0953 -0.17956,-0.16133 -0.0964,-0.19332 -0.22605,0.32128 -0.62333,-0.0837 -0.13229,0.2806 -0.56248,-0.30339 -0.35047,0.0975 -0.154,-0.15945 -0.384,-0.0477 0.10157,-0.26432 0.25271,0.0117 0.0161,-0.23804 -0.24673,-0.0475 -0.14159,-0.19203 -0.12844,0.22856 -0.13502,0.39942 -0.17213,0.0245 -0.0341,-0.21869 -0.24442,-0.0478 0.005,-0.13983 0.16302,-0.18583 0.10388,-0.22526 -0.15242,-0.13326 -0.0473,-0.24498 0.26707,-0.17593 0.0634,-0.21535 0.14878,-0.18907 0.0502,-0.2285 -0.27838,0.0147 -0.12066,0.36952 -0.33095,0.0804 0.0402,0.2421 -0.11095,0.0384 -0.12408,-0.1785 -0.24895,-0.001 -0.17666,-0.19163 -0.10437,-0.40193 -0.30152,-0.001 0.0194,0.47788 0.21651,0.0507 0.0194,0.19529 0.24279,-0.008 0.27566,0.32672 -0.0924,0.0507 0.25594,0.26758 -0.154,0.18228 0.0497,0.36628 -0.154,0.0574 0.24031,0.22827 -0.30515,0.21514 -0.65489,-0.36385 -0.31167,-0.96162 -0.44617,-0.10539 -0.29887,-0.39031 -0.0396,-0.44393 -0.20587,-0.51191 -0.34769,0.0873 -0.66879,-0.24021 0.25913,-0.36089"},"51159":{"name":"Richmond Co., VA","path":"m 863.86295,275.73029 0.10032,-0.22832 0.32379,-0.40107 0.37901,0.0207 0.0293,0.27461 1.07309,0.87824 0.29996,-0.15262 0.84972,0.5331 -0.009,0.63321 0.23042,0.0692 0.43227,-0.0898 0.65316,0.18634 0.61635,-0.12659 0.52431,0.25078 0.43756,0.30323 0.91485,0.1873 0.58169,0.66325 0.0925,0.71968 0.77072,0.5293 -1.64032,1.08897 -0.24067,-0.062 -0.23111,-0.0262 -0.14578,0.35611 -0.4934,-0.25363 -8.7e-4,-0.15757 -0.11682,-0.13127 -0.15191,0.26094 -0.25052,0.0369 -0.33861,-0.22249 -0.16041,-0.05 -0.12217,-0.3239 -0.18072,-0.0572 -0.10215,-0.28517 -0.12137,-0.18486 0.31229,-0.20953 -0.11551,-0.0946 -0.18633,0.0588 -0.29917,0.29896 -0.18137,-0.5184 -0.75268,-0.43233 -0.21642,0.0537 -0.18497,-0.20652 -0.27082,0.0279 -0.35738,-0.32705 0.02,-0.28136 -0.0804,-0.19616 -0.16248,-0.149 -0.16062,0.18128 -0.15349,-0.18156 -0.34669,-0.0302 -0.14719,-0.4809 -0.23912,-0.46423 -0.15777,-0.41836 -0.62202,-0.54289 z"},"51057":{"name":"Essex, VA","path":"m 863.62709,276.43001 0.54029,0.90513 -0.15412,0.33982 0.26058,0.24205 -0.13129,0.37621 0.25193,0.17617 0.64259,-0.0179 -0.0934,0.39495 0.16016,0.11245 0.18999,0.062 0.52001,0.41159 0.52663,0.11117 0.004,0.21497 0.26973,0.20861 0.26605,-0.0529 0.4647,0.61802 0.27121,0.24997 0.072,0.21664 1.00769,0.94908 0.55078,0.0543 0.22452,0.26716 -0.0209,0.15657 -1.0627,0.70374 -0.3378,-0.20678 -0.62524,-0.34659 -0.12886,-0.40992 -0.82203,0.0545 -0.51316,0.50713 -0.64863,-0.22036 -0.6177,0.36736 -0.17843,-0.9032 -0.43056,0.0738 -0.35641,-0.20015 -0.21424,0.11701 -0.3236,-0.11265 -0.19237,-0.42981 -0.38922,-0.0361 -0.0344,-0.17854 0.24992,-0.18947 -0.16565,-0.61598 -0.25315,-0.35352 -0.21648,-0.0235 -0.46802,-0.31879 -0.0597,-0.64047 -0.22891,-0.42975 -0.072,-0.14531 -0.22559,-0.10986 -0.65093,0.16188 -0.14289,-0.15713 0.0428,-0.40402 -0.93781,-0.73484 0.33821,-0.66395 -0.0753,-0.45128 0.62177,-0.12046 -0.0281,-0.26224 0.0478,-0.4265 0.14307,-0.002 0.0766,0.28108 0.32151,-0.0393 0.0191,-0.24755 0.21768,0.0667 0.11612,0.74822 0.31832,0.0622 0.2578,0.28445 0.27136,0.0153 0.27066,-0.43538 0.32202,0.22124 z"},"51033":{"name":"Caroline, VA","path":"m 855.64879,273.63968 0.36088,0.30866 0.2835,0.15046 0.14162,-0.23644 0.10294,0.0344 0.0642,0.34392 0.2835,-0.12037 -0.0871,-0.42345 0.33849,-0.2171 0.55774,0.0666 0.033,0.26171 -0.34098,0.11983 -0.0186,0.18432 0.21783,0.14603 -0.15618,0.58453 0.4378,0.0924 0.0251,-0.32035 0.16696,-0.0688 0.17985,0.1504 0.2964,0.16608 0.26267,0.2533 0.12024,0.12178 0.19131,0.0186 0.34748,-0.2497 0.25032,0.18885 0.19716,0.37775 0.39808,0.17408 0.028,0.2617 -0.62178,0.11991 0.0753,0.45074 -0.33822,0.6634 0.9378,0.7343 -0.0429,0.40348 0.14288,0.15699 0.65093,-0.16202 0.22559,0.10973 0.072,0.14518 0.2289,0.4292 -0.3012,0.34558 -0.3012,-0.0787 -0.62114,0.10229 -0.54795,0.32184 -0.0225,0.58271 0.20762,1.07216 -0.41447,0.11275 -0.11109,-0.25563 -0.55472,-0.0155 0.0261,0.71372 -0.94002,1.58781 -0.46538,0.71437 -0.63333,0.45242 -0.42404,-0.075 -0.0415,-0.50682 -0.43638,-0.0133 0.0942,-0.32173 -0.25129,-0.0503 -0.17726,-0.61787 0.12592,-0.20988 -0.61444,-0.61707 -0.56507,0.32071 -1.03397,-0.58005 -0.26893,0.11091 -0.26403,-0.13578 -0.28872,-0.58 -0.16903,-0.0586 -0.16903,0.16346 -0.68355,-0.21599 -0.35579,-0.6262 3.64775,-6.75 0.54162,-0.31246"},"51059":{"name":"Fairfax Co., VA","path":"m 852.17613,255.35214 1.00644,0.4202 0.64609,0.20048 0.0221,0.69265 0.4,0.31474 0.38243,-0.002 0.2418,0.0599 0.84824,-0.0808 0.63731,0.49051 -0.80566,1.26535 -0.28633,-0.0468 0.0985,0.48275 0.29584,-0.0508 0.35054,0.082 0.162,-0.14077 0.73049,0.49345 -0.36779,0.45825 0.10887,0.69657 0.96403,-0.32431 0.83191,0.14448 -0.43324,2.004 -0.52377,0.31006 -0.23019,0.63032 -0.57715,0.0254 0.87291,0.80824 -0.64743,0.0716 0.0342,0.36513 -0.54558,0.17955 -0.2842,-0.31254 0.27983,-0.28704 -0.20778,-0.24396 -0.38142,0.2287 -0.41523,-0.38773 -1.13099,-0.60557 -0.27,0.23467 -0.13515,-0.004 -0.053,-0.31649 -0.62357,-0.0364 -0.0323,0.18143 -0.14063,0.12572 -0.22361,-0.18547 0.0461,-0.27884 -0.47257,-0.40331 -0.1925,0.17759 -0.19248,-0.36182 -0.006,-0.2166 -0.34809,-0.15435 -0.0358,-0.25974 -0.24325,-0.14563 -0.19138,0.15519 -0.33661,0.0826 -0.28474,0.0411 0.0161,-0.30124 -0.19286,-0.003 -0.31735,-0.60489 -0.57668,-0.003 z m 0.81811,4.80443 0.24277,0.14533 0.14346,0.2347 0.54676,-0.15328 0.014,-0.10082 0.2555,-0.0217 -0.0846,-0.66683 -0.49827,0.0764 -0.003,0.11212 -0.52734,-0.002 z"},"51179":{"name":"Stafford, VA","path":"m 850.19893,272.05714 -0.48138,-0.9 -0.11022,-1.022 1.36935,-2.63308 0.55562,-0.98098 0.69128,0.10425 1.61692,1.1017 1.2738,0.16011 0.0524,1.28067 0.33698,1.10543 -0.2279,-0.0284 -0.92027,-0.68009 -0.0978,0.0675 0.65457,0.66756 1.14068,0.58103 -0.27577,0.39685 -0.93124,0.14723 0.0103,0.13486 0.67098,0.12176 -0.10386,1.08915 0.2254,0.86896 -0.54162,0.31246 -1.52435,-0.593 -0.031,-0.3344 -0.19064,-0.22966 -0.21543,-0.19153 -0.30744,0.11335 -0.35722,-0.15936 -0.38952,0.13309 -0.0627,0.36036 -0.88717,-0.70159 -0.35374,0.44608 -0.13499,-0.0695 -0.0825,-0.42034 -0.37155,-0.24846"},"51099":{"name":"King George, VA","path":"m 855.52725,271.68157 1.30185,0.0265 0.71999,-0.41298 0.69534,-0.19945 0.27947,-0.63244 1.00851,-0.20581 0.38035,-0.84402 0.24877,-0.18421 0.69869,0.50282 0.18165,1.02283 -0.13526,0.32668 -0.57133,-0.0295 -0.17222,0.26953 -0.002,0.26637 0.21174,-0.14609 0.36584,-0.0407 0.43925,0.22365 0.38558,0.21399 -0.14565,0.21279 -0.36489,0.10961 0.009,0.23859 -0.33721,0.10639 0.32793,1.72982 -0.12279,0.35403 -0.15909,0.21941 -0.33286,-0.0773 -0.22219,0.22087 -0.2393,0.0504 -0.1544,-0.30823 -0.23084,0.21664 -0.25276,-0.16409 -0.37172,0.24007 -0.43146,-0.12518 -0.29639,-0.1661 -0.17985,-0.1504 -0.16696,0.0688 -0.0251,0.32035 -0.4378,-0.0924 0.15618,-0.58453 -0.21783,-0.14603 0.0186,-0.18433 0.34098,-0.11983 -0.033,-0.26171 -0.55774,-0.0666 -0.33849,0.2171 0.0871,0.42345 -0.28349,0.12037 -0.0643,-0.34392 -0.10294,-0.0344 -0.14162,0.23644 -0.2835,-0.15046 -0.36088,-0.30866 -0.2254,-0.86896 0.10386,-1.08915"},"51193":{"name":"Westmoreland, VA","path":"m 861.56393,271.83866 0.74772,0.28986 0.18255,1.08873 -0.54322,0.22819 0.0363,0.10238 0.35312,-0.0817 0.35986,-0.15597 0.70044,0.10304 -0.0415,0.49443 0.14551,0.007 0.15598,-0.379 0.48742,0.34096 0.95368,-0.0361 0.96211,-0.27977 0.5267,0.59394 0.33477,0.0263 0.17332,0.38212 0.22244,0.19018 0.20791,-0.13447 -0.11732,-0.33789 -0.0482,-0.81009 0.24738,0.0155 0.99007,0.6927 -0.21192,-0.62429 0.54642,-0.0481 0.37479,0.38161 -0.2839,0.37482 1.64568,0.49198 0.10494,0.24745 0.30491,0.27767 -0.27313,0.1304 -0.31974,-0.26007 -0.14355,0.34589 0.19501,0.16236 0.005,0.22401 -0.29495,0.32583 -0.29495,0.42707 -0.46983,0.22458 -0.12007,0.73081 -0.52431,-0.25078 -0.61635,0.12659 -0.65316,-0.18634 -0.43227,0.0898 -0.23042,-0.0692 0.009,-0.63321 -0.84972,-0.5331 -0.29995,0.15262 -1.0731,-0.87824 -0.0292,-0.27461 -0.37901,-0.0207 -0.32379,0.40107 -0.10032,0.22832 -0.29908,0.31377 -0.31997,-0.0615 -0.46638,-0.0125 -0.21434,-0.14385 -0.01,-0.20567 -0.27027,-0.0345 -0.19732,0.0902 -0.004,0.10808 -0.22037,0.22134 -0.15617,-0.13263 -0.25363,-0.0282 -0.0741,-0.55815 -0.12826,-0.54544 -0.31884,-0.15136 0.12279,-0.35403 -0.32793,-1.72982 0.33721,-0.10639 -0.009,-0.23859 0.36489,-0.10961 0.14565,-0.21279"},"51133":{"name":"Northumberland, VA","path":"m 870.54516,275.87581 1.67427,0.004 -0.43306,0.53123 0.24303,0.15166 0.57115,-0.1858 0.83805,0.32828 0.80784,0.0917 1.16442,0.35452 1.18818,0.48217 0.12362,0.5039 0.009,1.325 -0.27739,0.18083 -0.32918,-0.21215 -0.64364,-0.62965 -0.25581,0.16236 -0.4316,-0.0387 -0.60008,-0.21954 -0.43528,0.011 -0.0535,0.1363 0.53275,0.0909 0.24243,0.1725 0.76831,0.0968 0.20733,-0.0666 0.30243,0.34164 0.22056,0.65307 0.43724,0.0587 0.0471,0.21518 -0.25893,0.23523 0.23703,0.6495 -0.34394,0.17704 -0.0441,0.27273 0.37393,0.2658 0.0406,0.45569 -0.92471,-0.0739 -0.35041,-0.13002 0.067,-0.48061 -0.17564,-0.79797 -0.23165,-0.13526 -0.35299,0.0421 -0.40899,-0.35927 -0.34366,-0.56462 -0.27831,0.15409 -0.42766,0.0141 -0.40643,-0.2327 -0.47175,0.066 -0.77072,-0.5293 -0.0925,-0.71968 -0.58169,-0.66325 -0.91485,-0.1873 -0.43756,-0.30323 0.12007,-0.73081 0.46983,-0.22458 0.29495,-0.42707 0.29495,-0.32583"},"51115":{"name":"Mathews, VA","path":"m 874.98924,287.20293 0.48966,-0.11677 0.15287,-0.20267 0.12716,-0.0905 -0.0555,-0.1924 0.64028,-0.0439 0.12017,0.31614 0.44746,0.003 0.26584,0.12782 0.0122,0.15526 -0.381,0.0301 0.0331,0.12614 0.37202,0.0145 0.29293,-0.012 -0.006,-0.40802 -0.0711,-0.57386 0.43252,0.062 0.76733,0.73256 -0.21936,0.0917 -0.38146,-0.19974 -0.28722,0.12399 0.24544,0.23505 -0.17031,0.19261 -0.31812,0.009 0.16742,0.37937 0.27585,-0.2546 0.184,0.0788 0.47063,0.0165 0.029,-0.34063 0.28821,0.25022 -0.0133,0.46256 0.35624,0.79557 -0.24896,0.37493 -0.11067,0.51747 -0.007,0.83359 0.16678,0.12849 -0.14402,0.40693 -0.24891,-0.0796 0.089,-0.24621 -0.71424,-0.52559 -0.45307,-0.27844 -0.0861,-0.83301 -0.27011,-0.16029 -0.0243,-0.36201 -0.18999,0.0874 -0.0358,0.37811 0.19219,0.12708 0.2985,0.27756 -0.10734,0.1851 -0.22555,0.0244 -0.40493,-0.1477 -0.28777,-0.12248 -0.15166,-0.29627 3.9e-4,-0.47673 -0.47396,-0.0239 0.0666,0.29542 -0.40896,0.0367 -0.11326,-0.46037 -0.007,-0.006 -0.25709,-0.20458 -0.15502,-0.65802 0.0442,-0.55841"},"51710":{"name":"Norfolk, VA","path":"m 882.32329,299.72305 -0.1296,0.75227 0.24131,0.35045 0.29716,0.2991 -0.15359,0.74358 -0.64812,-0.13731 -0.46413,0.45013 -0.60322,0.1256 -0.13206,-0.31734 0.48793,-0.15022 0.0207,-0.20619 -0.32105,0.0342 -0.40243,-0.1109 -0.10292,-0.26452 -0.42213,-0.16563 0.18894,-0.23527 -0.0451,-0.35456 0.32302,-0.0879 0.37516,0.29448 0.0951,-0.20146 -0.30607,-0.20819 -0.40741,-0.10755 -0.30913,0.14165 -0.27862,-0.082 -0.21153,-1.21493 0.2076,-0.0215 0.0396,0.21332 0.41694,-0.0487 0.0565,0.21447 0.44796,-0.16893 -0.0472,-0.23451 -0.52757,0.0902 -0.0689,-0.18656 0.61064,-0.0867 0.83874,0.46432 0.49804,0.0527 0.38607,-0.0153 0.0492,0.37974"},"51093":{"name":"Isle of Wight, VA","path":"m 869.87619,307.18899 0.61033,-2.11719 0.5589,-2.78578 -0.984,-0.96859 -0.007,-0.81429 2.37382,-2.11744 0.15453,-1.85852 0.3971,0.591 0.0222,0.38738 -0.0643,0.54338 0.0814,0.47887 0.45199,0.24854 0.81217,-0.16386 0.41495,0.1572 -0.0231,0.35457 -0.43751,0.1755 -0.082,0.27173 0.4027,-0.17345 0.27339,-0.12173 0.44313,-0.12677 0.77629,0.59418 0.60543,0.10593 0.12142,0.38155 -0.40001,-0.002 0.20905,0.33053 -0.0172,0.25945 -0.41637,0.31 -0.0713,0.04 -5.2559,7.506 -0.23355,-0.06 -0.71699,-1.43015"},"51800":{"name":"Suffolk, VA","path":"m 878.49239,300.93969 -0.0917,0.4498 -0.20098,0.34052 -0.31112,1.43677 0.67046,6.12736 -0.90213,0.193 -6.85191,1.34851 -0.30011,-0.37625 0.27684,-0.61176 0.045,-1.1785 5.2559,-7.506 0.0713,-0.04 0.52037,-0.0764 0.26588,-0.23463 -0.0136,0.55094 -0.26872,0.18873 -0.2384,0.668 -0.25307,0.56499 -0.25228,0.0829 0.099,0.30229 0.26887,0.0722 -0.0971,-0.26506 0.35662,-0.17422 0.19074,-0.30356 -0.0806,-0.11792 0.11438,-0.1199 0.0229,-0.25304 0.24998,-0.0375 0.0563,-0.32278 0.52066,-0.27756 0.058,-0.3731 0.29687,-0.10477 0.52163,0.0409"},"51550":{"name":"Chesapeake, VA","path":"m 881.93045,301.73114 0.71061,1.32121 1.23627,0.11395 0.71082,0.65484 0.49066,0.098 0.33611,0.32985 -0.0348,0.3762 -0.8075,0.5153 0.60264,2.75662 -3.42133,0.722 -3.1949,0.675 -0.67046,-6.12736 0.31112,-1.43677 0.52586,-0.0536 0.29383,0.36731 -0.0616,0.25912 -0.0443,0.46837 0.55668,0.58857 1.51834,-0.58071 -0.12536,-0.4722 0.6032,-0.12559 z"},"51810":{"name":"Virginia Beach, VA","path":"m 889.092,307.059 -0.906,0.19401 -0.0581,-0.37546 0.3387,-0.12564 0.33947,-0.25978 0.0269,0.27585 z m -1.8727,-1.83429 0.32568,1.17472 0.028,0.53876 0.28798,0.38382 -0.58,0.12397 -0.23614,-0.49079 -0.69498,-0.46415 -0.0539,0.14114 0.35485,0.49183 0.21019,0.41197 -1.68603,0.36179 -0.60264,-2.75662 0.8075,-0.5153 0.0348,-0.3762 -0.33611,-0.32985 -0.49066,-0.098 -0.71082,-0.65484 -1.23627,-0.11395 -0.71061,-1.32121 0.64812,0.13731 0.15359,-0.74358 -0.29716,-0.2991 -0.24131,-0.35046 0.12975,-0.75259 0.23237,0.15114 0.37788,0.52197 0.31649,-0.19212 -0.54779,-0.48595 -0.0551,-0.36347 0.43163,-0.003 0.82128,0.17187 -0.26181,0.77602 0.21412,7.9e-4 -0.0897,0.43699 0.29417,-0.16197 -0.0833,-0.69169 0.25055,-0.0158 0.24245,0.17589 0.05,0.55651 0.20999,-0.0581 0.003,-0.25599 0.15866,-0.22679 -0.24789,-0.1266 -0.0721,-0.29759 -0.47245,0.0123 -0.0657,-0.24598 0.49782,-0.17645 0.26221,-0.39804 0.45609,-0.10784 0.5347,0.15034 0.13672,0.36498 0.78635,1.87876 0.60015,1.12298 0.62477,0.94994 0.73443,1.13188 0.68956,1.3525 0.23791,0.56336 0.16812,0.68258 -0.20373,0.0422 -0.16209,-0.2897 -0.0927,-0.45606 -0.19662,-0.38018 -0.10534,-0.27836 -0.49051,-0.72729 -0.27737,-0.30953 -0.0173,0.29473 -0.0827,0.27123 -0.37022,-0.35583 -0.0682,-0.47045 0.31133,-0.23362 -0.3354,-0.1859 -0.40397,0.18217 0.0412,0.58987 z"},"50009":{"name":"Essex, VT","path":"m 911.49221,100.69114 6.19726,-1.719997 -0.38688,0.795 1.13178,1.529907 -1.15498,4.11309 0.1355,0.383 0.60439,0.596 0.73811,0.907 0.40293,0.499 0.0713,0.114 0.41719,0.674 -0.53678,0.93451 0.32106,1.06649 -0.18542,0.515 0,0 -0.0802,0.137 -0.79516,1.398 -0.066,0.103 -0.0945,0.138 -0.22464,0.29 -0.041,0.06 -0.51525,0.378 -0.34409,-0.03 -1.07685,1.397 -1.80783,-1.478 0.48613,-0.4299 0.51912,-1.05679 -1.13056,-0.9578 0.68409,-1.71666 -1.32185,-0.49885 0.69888,-1.881 -1.92906,-0.738 -0.64362,-0.25 1.0353,-2.36582 -1.0103,-0.51818 -0.0981,-2.395"},"50019":{"name":"Orleans, VT","path":"m 911.59031,103.08614 1.0103,0.51818 -1.0353,2.36582 0.64362,0.25 -0.6972,1.82836 -1.8322,-0.70174 0.74876,1.43114 -1.03274,-0.28188 -1.01088,4.09412 -2.00929,-0.481 0.0714,-0.23833 -1.94801,-0.54659 0.4884,-2.12341 -2.9513,-0.68267 0.51941,-1.40181 -0.63625,-1.92589 0.11627,-0.17898 -0.78405,-1.71088 4.17142,-0.9058 0.69562,-0.0369 3.40546,-1.02171 1.96846,-0.64507 z"},"50003":{"name":"Bennington, VT","path":"m 906.71412,143.61814 -0.50812,-0.04 0.25673,1.32281 -0.16043,0.0192 0.40293,2.09 -2.1234,0.385 0.0802,0.481 0.78803,3.801 1.43343,-0.273 0.89856,4.251 -1.52792,0.321 -3.98471,0.861 -0.44574,0.13121 -0.68757,-1.53861 0.34887,-1.0319 -0.44574,-1.9647 -1.71869,-8.397 6.34702,-1.238 0.86221,-0.1631 0.18433,0.9841"},"50013":{"name":"Grand Isle, VT","path":"m 891.03556,105.74614 -0.17658,1.30994 -0.19075,0.26139 0.40438,0.60146 0.6311,0.063 0.0501,1.30995 0.1635,0.41725 -0.007,0.28972 -0.33108,0.23893 -0.26023,0.98992 0.19319,0.42313 0.60412,0.60734 0.22102,0.86776 -0.0579,0.18598 0.12805,0.61984 -0.24383,0.13949 -0.0269,0.35643 0.17454,0.57335 -0.19735,0.51138 -1.32848,0.96073 -0.26564,-0.224 -0.28669,-0.9659 -0.13199,-0.89134 -0.0825,-1.59369 0.11906,-1.78838 -1.00415,-0.71828 -0.0389,-0.96389 0.32883,-1.07204 -0.16872,-0.83409 -0.623,-0.63939 0.025,-0.394 2.37834,-0.642"},"50023":{"name":"Washington, VT","path":"m 905.86904,114.08614 3.80821,0.972 0.0642,0.05 0.12123,0.224 -0.025,0.369 -0.34595,1.38307 -0.60143,1.11254 0.19509,0.61661 -0.45115,1.75878 -0.91639,-0.169 0.13379,2.14916 -2.04779,-0.33484 -0.0423,0.27118 -0.46481,-0.0457 -0.18312,1.7853 -0.15317,-0.0378 -0.29848,1.92474 -1.01802,-0.137 -2.76336,-0.40764 -0.34017,0.11867 -0.71297,-1.92077 -0.30728,0.0967 0.27456,-2.795 -0.27456,-0.07 0.44381,-2.09568 0.52717,-0.0117 0.15205,-0.77234 -0.63987,-0.1263 0.27278,-1.212 0.74527,0.005 1.95399,0.58876 0.55884,-1.9896 1.89261,0.7196 0.44215,-2.025"},"50005":{"name":"Caledonia, VT","path":"m 912.20893,106.22014 1.92906,0.738 -0.69888,1.881 1.32185,0.49935 -0.68409,1.71678 1.13056,0.95793 -0.51912,1.05691 -0.48613,0.43003 1.80783,1.478 -1.12499,0.707 -1.11252,0.692 -0.0838,0.08 -0.0499,0.04 -0.53843,0.972 -0.0553,0.234 0,0.144 0.52773,1.84 0.29953,0.403 0.27277,0.217 -2.28207,-0.274 -2.10557,0.747 -1.12321,-0.207 0.45115,-1.75878 -0.19509,-0.61661 0.60143,-1.11254 0.34595,-1.38307 0.025,-0.369 -0.12123,-0.224 -0.0642,-0.05 -3.80821,-0.972 0.50634,-1.977 2.00929,0.481 1.01088,-4.09412 1.03274,0.28188 -0.74876,-1.43114 1.8322,0.70174 0.6972,-1.82836"},"50015":{"name":"Lamoille, VT","path":"m 902.03587,108.51814 2.9513,0.68267 -0.4884,2.12341 1.94801,0.54659 -0.0714,0.23833 -0.50634,1.977 -0.44215,2.025 -1.89261,-0.7196 -0.55884,1.9896 -1.95399,-0.58876 -0.74527,-0.005 -0.53973,-0.0417 0.29387,-1.24005 -0.46679,-0.13553 0.18967,-0.8024 -0.35217,0.0208 -1.70051,-1.44327 -0.32507,0.0572 -10e-4,-0.48685 0.41587,-0.0268 0.40517,-1.57805 0.92938,0.17642 -0.0129,-1.03576 0.17962,-0.0301 -0.013,-0.62923 0.0512,-0.51155 2.05564,-0.876 0.65075,0.314"},"50011":{"name":"Franklin, VT","path":"m 901.25125,103.30058 0.78405,1.71088 -0.11627,0.17898 0.63625,1.92589 -0.51941,1.40181 -0.65075,-0.314 -2.05564,0.876 -0.0512,0.51155 0.0129,0.62923 -0.17961,0.0301 0.0129,1.03576 -0.92938,-0.17642 -0.40517,1.57805 -0.41588,0.0268 10e-4,0.48685 -1.90106,0.008 -3.35759,-0.95233 -0.60412,-0.60734 -0.1932,-0.42313 0.26024,-0.98992 0.33108,-0.23892 0.007,-0.28973 -0.1635,-0.41725 -0.0501,-1.30995 -0.6311,-0.063 -0.40438,-0.60146 0.19075,-0.26139 0.17658,-1.30994 10.21569,-2.44556"},"50007":{"name":"Chittenden,VT","path":"m 892.1168,112.25818 3.35759,0.95233 1.90106,-0.008 0.32507,-0.0572 1.70051,1.44327 0.35217,-0.0208 -0.18967,0.8024 0.46679,0.13553 -0.29387,1.24005 0.53973,0.0417 -0.27278,1.212 0.63987,0.1263 -0.15205,0.77234 -0.52717,0.0117 -0.44381,2.09568 0.27456,0.07 -0.27456,2.795 -0.73097,-1.913 -0.30626,-1.06546 -0.76474,0.0182 0.11156,0.40962 -0.83666,0.30543 -0.0541,-0.0951 -3.04196,1.37628 -0.86826,0.1 -0.62531,-2.37895 0.17599,-1.38105 -0.025,-0.25 -0.009,-0.01 -0.29774,-0.804 -0.22999,-0.499 -0.76486,-0.924 -0.46711,-0.273 1.32848,-0.96073 0.19735,-0.51138 -0.17454,-0.57335 0.0269,-0.35643 0.24383,-0.13949 -0.12805,-0.61984 0.0579,-0.18598 -0.22102,-0.86776"},"50001":{"name":"Addison, VT","path":"m 893.02881,122.99714 0.86826,-0.1 3.04196,-1.37628 0.0541,0.0951 0.83666,-0.30543 -0.11156,-0.40962 0.76474,-0.0182 0.30626,1.06546 0.73097,1.913 0.30728,-0.0967 0.71297,1.92077 0.34017,-0.11867 2.76336,0.40764 -0.41897,1.711 -0.22906,0.73924 -0.10323,-0.0251 -0.34302,1.72538 -0.22312,-0.085 -0.1392,-0.67251 -1.3425,1.132 0.28347,0.611 0.15333,0.273 -0.84092,0.71269 -0.42135,-0.88169 -2.00038,0.586 -0.97167,0.369 0.58478,1.535 -2.41935,0.901 -0.59548,-1.157 -0.27991,-0.507 -1.44567,-4.24245 -0.50652,-0.36255 0,0 -0.0392,-0.765 0,-0.749 0.009,-1.902 0.67392,-1.922"},"50021":{"name":"Rutland, VT","path":"m 895.21283,134.60914 2.41935,-0.901 -0.58478,-1.535 0.97167,-0.369 2.00038,-0.586 0.42134,0.88169 0.84093,-0.71269 1.18382,-1.045 0.0785,0.39718 0.54004,0.12446 0.12046,-0.27414 0.66591,0.0825 0.28704,0.312 -0.23464,1.61227 0.2269,0.0179 -0.10877,0.64725 2.1989,0.31159 -0.37627,2.31243 -0.37628,0.0677 0.1967,2.10805 0.34624,0.0197 0.0945,0.37635 0.49309,-0.0223 0.34707,0.1642 0.0114,0.94041 -0.24033,1.48585 -0.82774,-0.17146 -0.41684,0.234 0.0867,0.54869 -0.18607,0.10813 0.27546,1.05218 -6.34702,1.238 -0.97345,-4.525 -0.44493,-1.12288 -0.79749,-0.26665 -0.44863,-0.90683 -1.07705,0.15436 0.005,1.532 -0.54556,-0.226 -0.0642,-0.09 -0.16224,-1.342 0.0909,-0.933 0.31022,-1.704"},"50025":{"name":"Windham, VT","path":"m 906.71412,143.61814 2.35339,0.199 2.08952,-0.843 1.97542,-0.433 0.0642,1.695 0.37836,1.06555 -0.16662,1.45306 0.45882,1.28456 -1.01527,1.0528 0.25933,0.9314 -0.37153,1.05354 0.37658,0.55571 0.59742,0.87938 1.83814,1.478 -7.76975,1.664 -0.89856,-4.251 -1.43343,0.273 -0.78803,-3.801 -0.0802,-0.481 2.1234,-0.385 -0.40293,-2.09 0.16043,-0.0192 -0.25673,-1.32281 0.50812,0.04"},"50027":{"name":"Windsor, VT","path":"m 903.22505,127.68914 0.0963,0.355 0.21751,0.346 1.31041,0.112 1.88628,0.225 4.82088,0.554 2.14657,0.298 -0.57805,1.00673 -0.33097,0.18948 -0.4165,0.84518 0.22848,0.58191 -0.28888,1.28623 0.36612,0.42147 -0.76546,0.84795 0.14681,1.20905 0.44598,3.68505 0.35096,-0.0211 -0.0655,0.63055 0.40962,0.26945 -0.0731,2.01 -1.97542,0.433 -2.08952,0.843 -2.35339,-0.199 -0.18433,-0.9841 -0.86221,0.1631 -0.27549,-1.05218 0.18605,-0.10813 -0.0867,-0.54869 0.41681,-0.234 0.82774,0.17146 0.24033,-1.48585 -0.0114,-0.94041 -0.34707,-0.1642 -0.49309,0.0222 -0.0945,-0.37635 -0.34624,-0.0197 -0.1967,-2.10805 0.37628,-0.0677 0.37627,-2.31243 -2.1989,-0.31159 0.10877,-0.64725 -0.2269,-0.0179 0.23464,-1.61227 -0.28704,-0.312 -0.66591,-0.0825 -0.12046,0.27414 -0.54004,-0.12446 -0.0785,-0.39718 -1.18382,1.045 -0.15333,-0.273 -0.28347,-0.611 1.3425,-1.132 0.1392,0.67251 0.22312,0.085 0.34302,-1.77334 0.10323,0.0251 0.22906,-0.69128"},"50017":{"name":"Orange, VT","path":"m 914.14512,120.30614 -0.0553,1.15913 0.35248,0.31348 -0.29371,0.84564 -0.32135,1.69128 0.40087,0.47492 -0.11229,1.19714 -0.62544,1.27316 0.26783,1.15913 -0.0553,1.15912 -2.14657,-0.298 -4.82088,-0.554 -1.88628,-0.225 -1.31041,-0.112 -0.21751,-0.346 -0.0963,-0.355 0.41897,-1.711 1.01802,0.137 0.29848,-1.92474 0.15317,0.0378 0.18312,-1.7853 0.46481,0.0457 0.0423,-0.27118 2.04779,0.33484 -0.13379,-2.14916 0.91639,0.169 1.12321,0.207 2.10557,-0.747 2.28207,0.274"},"53047":{"name":"Okanogan, WA","path":"m 146.86209,9.3671435 17.02819,4.4749995 8.45259,2.122 4.39656,1.086 -0.46712,1.984 -1.33082,5.521406 -0.53463,-0.118107 -0.87296,3.823741 0.34486,0.113988 -0.86563,3.814146 -0.12213,-0.02233 -1.90486,7.768153 -0.12123,0.112 -1.92015,-0.146 -0.0321,-0.441 0.41006,-0.458 0.28169,-0.41 0.0945,-0.265 -0.0562,-0.32058 -0.40664,-0.386278 -0.1767,-0.638125 0.0642,-1.032318 -0.21087,-0.315699 -0.24069,-0.376 -0.57725,-0.123152 -0.2816,-0.451647 -0.43551,0.0738 -0.35653,0.300535 -0.42222,-0.07176 -1.15105,0.250676 -0.35887,-0.410153 -0.40268,0.192088 -0.31507,0.356335 -0.26033,0.68483 -1.05198,-0.221468 -0.395,-0.70326 -0.58114,-0.133869 -0.3512,-0.232417 -0.47164,0.523123 -0.2855,0.06323 -0.31834,0.271277 -0.27455,0.0085 -0.88208,0.584724 -0.5317,-0.09417 -0.37839,-0.586907 0.1253,-0.499308 0.4699,-0.691381 -0.14328,-0.373836 -0.29659,0.08606 -0.38418,-0.07819 -0.14413,-0.537771 -0.43977,-0.176426 -0.11865,0.378946 -0.44715,-0.146645 -1.4361,0.421247 -0.16514,0.327308 0.27286,0.568203 -0.0675,0.457518 -0.39345,0.333746 -0.0568,0.176225 0.009,0.08 0.12659,0.257 -2.89238,-0.788165 0.0966,-0.440523 -0.19236,-0.423757 0.085,-0.474179 -0.747,-0.726288 0.31187,-0.373335 -0.72179,-0.675867 -0.36883,-0.04559 -0.54531,-0.978399 -0.34362,-0.49939 -0.50213,0.04686 -0.0483,-0.381726 -0.27523,-0.205249 0.002,-0.608625 0.45588,-0.457358 0.002,-0.633836 -0.52734,-0.154827 0.10293,-0.280881 -0.78728,-0.645689 -0.66122,-1.553285 -0.45954,0.06022 -0.56042,-0.519633 0.52369,-0.721322 0.0446,-0.620477 -1.01422,-0.570055 -0.006,-1.225542 0.66012,-0.309755 -0.32311,-0.334966 0.48364,-0.284543 -0.35063,-0.331355 0.17879,-0.583465 -0.79742,-0.105 0.29293,-0.589994 0.3103,-0.152288 -0.27398,-0.736576 -0.59966,0.259588 -0.18778,-0.209759 -0.1381,-1.011448 0.58029,-0.532523 0.25674,-0.07 0.40847,0.0628 0.33184,-0.646007 0.54256,0.139428 -0.0352,-0.495416 0.46286,-0.112277 -0.32077,-0.70135 -0.5315,-0.854605 0.52214,-1.678356 -0.30161,-0.490622 0.15815,-1.141961 0.34973,-0.241582 -0.0909,-0.50978 -0.35908,-0.145797 -0.76782,0.364088 -0.56768,-1.050785 0.49475,-0.3637785"},"53075":{"name":"Whitman, WA","path":"m 182.80653,59.275143 12.02189,2.789 -0.66857,2.941 -2.93995,13.081 -0.58657,2.596 -0.41678,-0.06399 -0.46,0.0801 -0.74818,-0.467446 -0.73378,0.0801 -0.25502,-0.22716 0.23488,-0.428886 -0.3703,-0.457704 0.16045,-0.957 -0.12658,-0.981 -1.55288,-2.869 -0.78625,-0.634 -0.7488,-0.458 -2.31417,-0.947 -0.40114,-0.153 -0.94849,-0.02 -0.20859,0.07 -1.89698,1.086 -0.51346,0.296 -3.83317,0.242 -0.13729,0 -0.68283,-0.112 -0.15333,-0.09 -0.49742,-0.869 0.44215,-3.423 3.14142,0.04 0.57943,-0.529 0.44215,-0.499 0.64183,-0.901 0.43502,-1.02 1.79001,-7.698 2.0913,0.49"},"53069":{"name":"Wahkiakum, WA","path":"m 86.652791,56.615143 0.657879,-2.096 3.415979,1.076 2.19293,0.635 2.153707,0.61 -1.301495,4.701 -2.481755,-0.103 -0.121235,-0.04 -0.673925,-1.052 0.351225,-1.029 -0.167589,-0.538 -0.233556,-0.417 -0.06418,-0.106 -0.04814,-0.02 -0.08914,-0.06 -1.035847,-0.06 -2.554853,-1.503"},"53003":{"name":"Asotin, WA","path":"m 187.88415,79.197143 0.3703,0.457704 -0.23488,0.428886 0.25502,0.22716 0.73378,-0.0801 0.74818,0.467446 0.46,-0.0801 0.41678,0.06399 -0.33696,1.004 0.50455,2.034 0.0232,0.08 0.15333,1.27 0.0981,1.975 -0.76485,2.108 0.0981,1.59 -8.81629,-2.058 0.64361,-2.77 0.93958,0.216 1.0198,-4.548 0.29213,-1.21349 0.32284,0.08546 0.10887,-0.423972 0.64058,0.169469 0.0904,-0.336469 1.9772,0.472 0.25674,-1.139"},"53023":{"name":"Garfield, WA","path":"m 179.06072,73.339143 1.89698,-1.086 0.20859,-0.07 0.94849,0.02 0.40114,0.153 2.31417,0.947 0.7488,0.458 0.78625,0.634 1.55288,2.869 0.12658,0.981 -0.16045,0.957 -0.25674,1.139 -1.9772,-0.472 -0.0904,0.336469 -0.64058,-0.169469 -0.10887,0.423972 -0.32284,-0.08546 -0.29213,1.21349 -1.0198,4.548 -0.93958,-0.216 -0.64361,2.77 -1.92015,-0.465 0.68314,-2.618211 -0.19921,-0.05323 1.14026,-4.94656 -0.92269,-0.203678 0.23786,-0.863081 -0.44792,-0.12455 0.0796,-0.322371 -0.38198,-0.12455 0.3038,-0.981772 -0.32923,-0.09817 0.19829,-0.704824 -1.95403,-0.449 0.48316,-1.978 0.49742,-1.413"},"53013":{"name":"Columbia, WA","path":"m 173.06671,72.656143 0.17651,0.158 0.49742,0.869 0.15333,0.09 0.68283,0.112 0.13729,0 3.83317,-0.242 0.51346,-0.296 -0.49742,1.413 -0.48316,1.978 1.95403,0.449 -0.19829,0.704824 0.32923,0.09817 -0.3038,0.981772 0.38198,0.12455 -0.0796,0.322371 0.44792,0.12455 -0.23786,0.863081 0.92269,0.203678 -1.14026,4.94656 0.19921,0.05323 -0.68314,2.618211 -5.84247,-1.406 -0.29595,-0.07 0.24781,-0.754 0.93245,-3.849 -1.95225,-0.458 0.48611,-1.937438 -1.96589,-0.473562 1.39955,-5.922 0.3851,-0.69"},"53071":{"name":"Walla Walla, WA","path":"m 173.06671,72.656143 -0.3851,0.69 -1.39955,5.922 1.96589,0.473562 -0.48611,1.937438 1.95225,0.458 -0.93245,3.849 -0.24781,0.754 -15.44501,-3.703 0.97478,-0.590098 0.24613,-1.395451 -0.2716,-0.590098 -0.0207,-0.659375 -0.71105,-1.272978 0.22465,-0.289 0.18363,-0.17 0.7078,-0.208 0.39401,-0.05 1.57428,0.1 1.18204,-0.644 0.64029,-0.0073 0.0455,-0.602117 0.60725,-0.767332 0.73942,0.09179 0.78756,-0.507741 0.51489,-0.306655 0.57848,-1.763604 0.11945,-0.202 0.47425,-0.387 0.84329,-0.495 1.40669,-0.646 0.33436,0.07647 0.38436,0.358012 0.66474,0.217822 0.56279,-0.342934 0.53729,0.07763 1.05189,0.393 0.20146,0.21"},"53021":{"name":"Franklin, WA","path":"m 156.2489,65.157143 2.77236,0.676 6.4112,1.647 8.25291,1.911 -0.44215,3.423 -0.17651,-0.158 -0.20146,-0.211 -1.05189,-0.392 -0.53729,-0.07763 -0.56279,0.342934 -0.66474,-0.217822 -0.38436,-0.358012 -0.33436,-0.07647 -1.40669,0.646 -0.84329,0.495 -0.47425,0.387 -0.11945,0.202 -0.57848,1.763604 -0.51489,0.306655 -0.78756,0.507741 -0.73942,-0.09179 -0.60725,0.767332 -0.0455,0.602117 -0.64029,0.0073 -1.18204,0.644 -1.57428,-0.1 -0.39401,0.05 -0.7078,0.208 -0.18363,0.169 -0.22465,0.289 -1.01267,-0.946 -0.36192,-0.195 -0.44928,-0.144 -0.47603,-0.298 -0.73811,-1.059 -0.025,-0.13 0.0892,-0.193 0.48076,-0.514026 -0.005,-1.568793 0.46402,-1.267431 0.31334,-1.11675 0,-0.731 -0.51525,-0.837 -0.68997,-0.971 -0.36192,-0.82 0.12717,-0.513071 -0.10028,-0.381386 -0.32775,-0.106043 -0.10028,-0.3335 0.0232,-0.28 1.263,0.360136 0.34515,-1.326136"},"53063":{"name":"Spokane, WA","path":"m 192.75316,43.140143 5.98688,1.4 -0.34588,1.517 -3.02909,13.621 -0.53665,2.386 -12.02189,-2.789 2.98096,-12.551 0.21573,0.33 0.14619,0.09 0.27605,-0.106691 0.067,-0.251456 0.38865,0.09437 0.97574,-0.532941 0.2278,-0.436433 0.24388,-0.243413 0.21975,0.102413 -0.089,0.385278 0.004,0.77424 0.4025,0.171429 0.45717,0.972868 0.5254,-0.05077 0.22053,0.228299 1.20585,-5.463193 1.478,0.353"},"53051":{"name":"Pend Oreille, WA","path":"m 203.65006,23.397143 -0.77911,3.384 -4.13091,17.759 -5.98688,-1.4 0.44216,-1.945 -0.96689,-0.228958 2.68735,-11.559042 -1.94511,-0.44 0.44216,-1.93 1.03515,0.239882 0.61446,-2.173592 0.8016,0.148975 0.44733,-1.799518 1.02569,0.140478 0.38318,-1.562225 5.92982,1.366"},"53065":{"name":"Stevens, WA","path":"m 197.72024,22.031143 -0.38318,1.562225 -1.02569,-0.140478 -0.44733,1.799518 -0.8016,-0.148975 -0.61446,2.173592 -1.03515,-0.239882 -0.44216,1.93 1.94511,0.44 -2.68735,11.559042 0.96689,0.228958 -0.44216,1.945 -1.478,-0.353 -1.20585,5.463193 -0.22053,-0.228298 -0.5254,0.05077 -0.45716,-0.972868 -0.40251,-0.17143 -0.004,-0.774239 0.089,-0.385279 -0.21976,-0.102413 -0.24388,0.243413 -0.2278,0.436433 -0.97574,0.532941 -0.38865,-0.09437 -0.067,0.251456 -0.27605,0.106691 -0.14619,-0.09 -0.21573,-0.33 -0.0516,-0.495768 -0.53725,-0.352931 -1.06574,0.346979 -0.78066,-0.456042 -0.46641,0.400989 -0.46641,0.358138 -0.38071,-0.127513 -0.334,-0.267852 -0.0963,-0.458 -0.36905,-1.198 -0.70067,-1.76 -0.0481,-0.05 -0.76306,0 -1.00376,0.401 -0.46533,0.25 -0.0183,-0.769004 0.33628,-1.097956 -0.43023,-1.38104 0.66679,-0.257 0.42085,-0.05448 0.20499,0.246919 0.83986,0.163657 0.13214,-0.294288 0.39233,0.03876 0.24022,-0.743181 -0.12977,-0.488577 0.10961,-0.498984 0.48014,0.11203 0.57381,-0.231426 0.26158,-1.44913 0.60503,-0.314688 0.32817,-0.540615 -0.0939,-2.063 0.15631,-2.507793 0.87911,-1.42361 0.42132,-0.06401 0.44912,-0.897994 0.31013,-0.731197 0.39352,-0.564399 0.27278,-2.307 -0.0392,-0.651 -0.34588,-1.551 -0.2086,-0.186 -0.0802,-0.85 0.19254,-1.286 0.17651,-0.772 0.22464,-0.288 0.28883,-0.266 11.45137,2.676"},"53043":{"name":"Lincoln, WA","path":"m 168.94472,39.901143 1.92015,0.146 0.23356,0.722 0.11945,0.202 1.0929,0.772 0.37975,0.02 0.16204,-0.292542 0.008,-0.397769 0.53831,-0.19368 0.46004,0.569464 1.12534,0.09984 0.51874,0.432489 -0.30589,0.900729 0.44959,0.310296 0.71188,-0.116542 0.14636,0.860982 0.61576,0.482181 0.61576,0.01255 0.52238,-1.118 0.46533,-0.25 1.00376,-0.401 0.76306,0 0.0481,0.05 0.70067,1.76 0.36905,1.198 0.0963,0.458 0.334,0.267852 0.38071,0.127514 0.46641,-0.358137 0.46641,-0.400988 0.78066,0.456042 1.06575,-0.346975 0.53724,0.352933 0.0516,0.495771 -2.98096,12.551 -2.0913,-0.49 -15.58764,-3.776 3.81713,-15.108"},"53001":{"name":"Adams, WA","path":"m 180.71523,58.785143 -1.79001,7.698 -0.43502,1.02 -0.64183,0.901 -0.44215,0.499 -0.57943,0.529 -3.14142,-0.04 -8.25291,-1.911 -6.4112,-1.647 -2.77236,-0.676 0.98771,-3.888 2.1127,0.529 3.81,0.974 1.96828,-7.763 15.58764,3.776"},"53025":{"name":"Grant, WA","path":"m 168.91263,39.460143 0.0321,0.441 -3.81713,15.108 -1.96828,7.763 -3.81,-0.974 -2.1127,-0.529 -0.98771,3.888 -0.34515,1.326136 -1.263,-0.360136 0.0802,-0.08 -0.0143,-0.151 -0.37975,-0.749 -0.17472,-0.216 -0.20147,-0.112 -0.12836,0.05 -0.64362,0.497 -0.48138,0.418 -0.4992,0.281 -0.41897,0.154 -0.53895,0.04789 -0.24626,-0.271821 -0.33006,-0.17605 -0.94061,0.171121 -1.18003,-0.140136 -0.54021,-0.177 -0.12659,-0.07 -0.51018,-0.278897 0.0425,-0.309746 -0.35757,-0.649778 -0.19755,-1.009811 0.12248,-0.549768 0.22284,-0.353834 0.6015,-0.401166 0.40083,-0.754157 -0.3965,-0.898483 0.45677,-2.12436 -0.29983,-1.087546 0.22915,-1.022672 -0.34435,-0.714171 0.31281,-0.852346 0.73223,-0.52307 -10e-4,-0.594068 0.31816,-1.513127 0.52491,-2.060116 0.33932,0.07544 0.10895,-0.34987 0.37476,0.102017 0.0912,-0.296707 0.30388,0.07544 0.0912,-0.332149 0.29969,0.06759 0.22882,-0.676692 0.28197,0.07645 0.11441,-0.351637 0.26504,0.07367 0.21527,-0.69543 5.22203,1.238 0.49882,-1.883154 0.32084,0.08646 0.0835,-0.293223 0.29711,0.0746 0.0954,-0.316954 0.29711,0.0746 0.10727,-0.316954 0.3219,0.08793 0.0609,-0.291754 0.36936,0.08793 0.0727,-0.32735 0.29817,0.07607 0.10833,-0.303618 0.8677,0.194717 0.0838,-0.323854 0.39232,0.07956 0.22211,-0.958845 0.34077,0.08529 0.3289,-1.255474 0.3289,0.08529 0.10346,-0.341857 0.34078,0.08529 0.20977,-0.669823 0.24537,0.05395 0.19408,-0.639602 0.31703,0.06156 0.51732,-1.847823 0.22736,0.05199 0.0855,-0.335277 0.72317,0.13456 0.0771,-0.301717 0.35069,0.0672 0.14094,-0.671114 0.3423,0.100759 0.10738,-0.343907 1.76441,0.48456"},"53005":{"name":"Benton, WA","path":"m 147.87654,65.601143 0.12659,0.07 0.54021,0.177 1.18003,0.140136 0.94061,-0.171121 0.33006,0.17605 0.24626,0.271821 0.53895,-0.04789 0.41897,-0.154 0.4992,-0.281 0.48138,-0.417 0.64362,-0.498 0.12836,-0.05 0.20147,0.112 0.17472,0.216 0.37975,0.749 0.0143,0.151 -0.0802,0.08 -0.0232,0.28 0.10028,0.3335 0.32775,0.106043 0.10028,0.381386 -0.12717,0.513071 0.36192,0.82 0.68997,0.972 0.51525,0.836 0,0.731 -0.31334,1.117 -0.46402,1.267681 0.005,1.569043 -0.48076,0.514276 -0.0892,0.192 0.025,0.13 0.73811,1.059 0.47603,0.298 0.44928,0.145 0.36192,0.194 1.01267,0.947 0.71105,1.273103 0.0207,0.6595 0.2716,0.590348 -0.24613,1.395701 -0.97478,0.590348 -0.45106,0.377 -0.3441,0.152 -1.17312,0.339 -0.57052,0.09 -0.69889,-0.05 -0.41006,-0.103 -0.44215,-0.227 -2.41044,-0.33 -0.90926,-0.05 -0.90748,-0.06 -0.71137,-0.335643 -0.87048,-0.494761 -0.82502,0.48268 -0.71137,0.732724 -1.67055,-0.159 -1.53505,-0.16 1.66341,-6.317 0.36193,-1.487 0.0392,-0.634 2.36408,-9.2"},"53039":{"name":"Klickitat, WA","path":"m 144.64598,78.689143 -1.19808,4.55 -2.21076,0 -2.41044,0.296 -0.51347,0.128 -0.83617,0.635 -3.16637,-0.193 -1.25336,-0.217 -0.32805,-0.216 -0.19433,-0.282 -0.41719,-0.786 -0.44929,-0.315 -0.68462,-0.168 -0.33696,0.112 -0.69175,0.33 -1.71869,0.241 -1.41382,0.217 -0.83616,0.257 -0.34588,-0.458 -1.45839,-0.68275 -2.14795,0.90324 -0.25165,-1.820526 -1.97556,-1.130964 -0.55447,-0.113 -1.10003,-0.162 -1.09468,-0.949 -0.0954,-0.860551 0.51434,-0.328449 -1.40668,-0.465 0.4992,-2.057 1.04476,-3.736 1.36568,0.369 1.52614,0.411 4.19509,1.132 1.28545,0.403 7.38464,2.016 11.27487,2.94"},"53011":{"name":"Clark, WA","path":"m 98.280669,70.557143 0.725448,-0.05003 0.06115,-1.097334 0.399726,-0.411032 0.762907,0.123697 0.12478,0.323869 0.23016,-0.191425 0.54268,0.146375 0.57754,-0.219746 0.31604,0.05921 0.71701,-0.46383 1.15289,0.285849 0.0719,0.338152 0.35091,-0.01054 1.02454,0.674265 0.57125,-0.232322 0.14875,-0.743595 0.47999,-0.569251 0.74152,-0.290301 0.61935,0.222981 -0.90926,3.239 -1.05189,3.463 -1.26228,4.467 -0.26564,0 -0.0321,0 -0.44215,-0.112 -0.0143,0 -0.52416,-0.257 -4.458962,-2.747 -0.426106,-0.323 -0.818337,-0.859 -0.313785,-0.401 -0.01605,-0.564 0.153327,-0.417 0.344094,-0.579 0.418974,-2.805"},"53059":{"name":"Skamania, WA","path":"m 121.07644,64.176143 -2.09665,7.611 -1.36568,-0.369 -1.04476,3.736 -0.4992,2.057 1.40668,0.465 -0.51434,0.328449 0.0954,0.860551 -1.72582,-0.03 -1.32646,-0.103 -0.43502,-0.105 -1.10716,-0.61 -0.94849,0.06 -0.68284,0.353 -0.45106,0.403 -5.70519,0.795 1.26228,-4.467 1.05189,-3.463 0.90926,-3.239 2.13588,-7.296 11.04131,3.02"},"53015":{"name":"Cowlitz, WA","path":"m 110.03513,61.156143 -2.13588,7.296 -0.61935,-0.222981 -0.74152,0.2903 -0.48,0.569251 -0.14874,0.743595 -0.57125,0.232322 -1.02455,-0.674265 -0.3509,0.01053 -0.072,-0.338154 -1.15288,-0.285851 -0.71702,0.463828 -0.31603,-0.0592 -0.57754,0.219746 -0.54268,-0.146375 -0.23016,0.191425 -0.12478,-0.323869 -0.762907,-0.123697 -0.399726,0.411032 -0.06115,1.097334 -0.725448,0.05003 0.119452,-0.378 0.144413,-2.185 -0.449283,-2.505 -0.153327,-0.605 -2.594076,-3.18 -0.755937,-0.314 -0.82012,0.151 1.301495,-4.701 1.945111,0.506 1.23018,0.355 9.023103,2.628 2.76345,0.827"},"53049":{"name":"Pierce, WA","path":"m 107.93945,36.408203 -0.002,0.0098 -0.29688,0.990234 -0.20117,1.259766 -0.79297,1.009765 0.0566,1.087891 0.33204,0.837891 0.65429,-1.431641 0.23047,-1.080078 0.63477,-1.330078 0.89999,-0.291645 1.05346,0.212452 -1.16655,0.981267 -0.2298,0.711898 -0.11622,0.461351 0.5176,0.204872 0.68416,0.56812 0.49563,-0.636596 -0.20858,-1.004688 0.61718,-0.261719 0.36719,-1.169922 z m 1.19869,3.724944 0.40932,1.182132 0.41449,-0.211507 z m 2.11232,0.428092 -0.68601,0.737588 -0.5664,0.636719 -0.64258,0.568359 -0.3125,0.611328 -0.59375,-0.01758 -0.53125,0.685547 -0.62109,0.292969 0.11914,1.414062 0.35609,0.709457 -0.29699,0.428111 0.36517,0.163527 0.10368,-0.166703 0.47778,0.303178 -0.001,0.919099 0.63746,0.645357 0.19327,1.22375 1.51636,0.950006 0.67595,0.567946 0.087,1.173638 1.45576,0.7174 2.41015,1.166016 3.07032,1.107422 0.24804,-0.240235 0.65039,-0.410156 0.20899,-0.103516 0.3125,-0.08008 4.64453,1.277344 0.003,-0.46569 -0.27536,-0.335277 0.14133,-0.188904 -0.0922,-0.177229 0.0829,-0.130524 -0.32048,-0.1937 0.15501,-0.283669 -0.12521,-0.143555 -0.1119,-0.346953 0.65874,-0.5688 0.5143,-0.148122 0.31992,-0.211133 0.0747,-0.666504 0.30474,-0.321335 0.58439,-0.172344 0.0473,-0.359163 0.31643,-0.12284 -0.0339,-0.30966 0.55345,-0.503037 0.0998,-0.672227 -0.28028,-0.03001 -0.17551,-0.197628 -0.47675,0.04475 -0.38519,-0.661466 -0.54233,-0.535751 -1.17091,-0.200508 -0.25947,-0.787182 -0.689,-0.284319 -0.80423,-0.116698 -0.20709,-0.284318 -0.73091,-0.556703 -0.96168,0.418039 -0.83335,-0.453413 -0.44112,0.155872 -0.28958,0.03041 -0.0858,-0.417309 -0.82896,-0.757703 -0.52739,0.05283 -0.40558,-0.685733 -0.47816,-1.903628 -2.753,-0.846764 -0.90039,-1.599609 -0.23633,0.417969 0.31055,0.527343 -0.39844,0.427735 -0.61133,0.158203 -0.49609,-0.943359 -0.36328,-0.8125 z m -2.7446,0.280558 -0.67774,0.05273 0.22657,0.613281 0.80078,0.01172 z m -0.8457,0.910156 -0.39454,0.451172 0.2793,0.837891 0.51172,-0.478516 -0.0488,-0.703125 z"},"53041":{"name":"Lewis, WA","path":"m 95.387071,47.207143 3.198469,0.915 -0.19255,0.643 3.51047,1.036 11.08232,3.208 2.41044,1.164 3.0701,1.109 0.24782,-0.241 0.65075,-0.41 0.20859,-0.103 0.31379,-0.08 4.64438,1.277 0.19341,0.916716 -0.19206,0.277194 0.19341,0.09322 0.684,0.347278 0.0976,0.3939 -0.41666,0.06929 0.0141,0.402789 -0.57286,-0.105325 -0.39764,0.770734 0.40833,0.332704 -0.0925,0.384673 -0.44294,0.428477 0.0126,0.393434 -0.46046,0.191941 0.10022,0.165659 -0.21517,0.410956 -0.38096,0.116311 -0.37219,0.633186 0.3199,0.422932 -0.14493,0.570806 0.22309,1.251257 -0.18073,0.499864 -1.83279,-0.508 -11.04131,-3.02 -2.76345,-0.827 -9.023103,-2.628 -1.23018,-0.355 -1.945111,-0.506 -2.153707,-0.61 0.634702,-2.08 0.442152,-1.616 -0.187971,-0.06767 1.578609,-5.259333"},"53067":{"name":"Thurston, WA","path":"m 99.838897,41.541143 1.920153,0.571 0.47297,-0.280385 0.64584,-0.240967 0.25298,-0.300189 0.34704,0.01657 0.3724,-0.269331 0.37165,-0.07482 0.15962,0.448855 -0.60067,1.223113 0.007,1.027394 0.37442,-0.07265 0.29686,-0.759782 0.2218,-1.029352 0.49222,-0.211477 0.0236,0.809093 0.12235,0.664108 0.31951,0.0707 0.26898,-1.353476 0.24952,0.829464 0.54481,0.995157 0.59466,0.355974 0.11945,1.414 0.35516,0.709316 -0.29667,0.427252 0.36481,0.162949 0.10499,-0.165922 0.47776,0.302932 -0.001,0.918853 0.63744,0.64511 0.19325,1.223627 1.51635,0.949883 0.67552,0.568954 0.0868,1.174142 1.45554,0.717904 -11.08232,-3.208 -3.51047,-1.036 0.19255,-0.643 1.23035,-4.348719 -0.650494,-0.186851 0.673501,-2.04543"},"53077":{"name":"Yakima, WA","path":"m 127.42879,49.404525 0.1803,0.374663 0.39861,-0.05085 0.10064,0.172629 0.33902,0.04599 0.21237,-0.207291 0.40619,0.0816 0.46578,0.62541 0.2274,0.156096 0.31484,0.536188 0.18074,0.05197 0.45419,0.837753 0.38857,0.732999 0.17364,0.04524 -0.10166,0.419563 0.68275,1.459662 5.98688,1.592 -0.56849,1.90846 1.92765,0.56222 -0.45886,1.88332 5.52868,1.512 2.70818,0.658 -0.12248,0.549643 0.19755,1.009686 0.35757,0.649653 -0.0425,0.309621 0.51018,0.278397 -2.36408,9.2 -0.0392,0.634 -0.36193,1.487 -0.46533,1.767 -11.27487,-2.94 -7.38464,-2.016 -1.28545,-0.403 -4.19509,-1.132 -1.52614,-0.411 2.09665,-7.611 1.83279,0.509 0.18073,-0.499864 -0.22309,-1.251257 0.14493,-0.570806 -0.3199,-0.422932 0.37219,-0.633186 0.38096,-0.116311 0.21517,-0.410956 -0.10022,-0.165659 0.46047,-0.191941 -0.0126,-0.393434 0.44295,-0.428477 0.0925,-0.384673 -0.40833,-0.332705 0.39764,-0.770733 0.57286,0.105325 -0.0141,-0.402789 0.41665,-0.06929 -0.0976,-0.3939 -0.684,-0.347278 -0.19341,-0.09322 0.19206,-0.277194 -0.19341,-0.916716 0.002,-0.464581 -0.27513,-0.335257 0.14138,-0.188899 -0.0921,-0.177224 0.083,-0.130519 -0.32046,-0.193697 0.15501,-0.283668 -0.12521,-0.143554 -0.11167,-0.346933 0.65896,-0.56878 0.51351,-0.147888 0.32027,-0.211379 0.0751,-0.66675 0.30483,-0.321397 0.58443,-0.172375 0.0473,-0.359193 0.31653,-0.122902 -0.0338,-0.309721 0.55379,-0.503283 0.0998,-0.671618"},"53037":{"name":"Kittitas, WA","path":"m 127.42879,49.404525 -0.0399,-0.206619 -0.22848,-0.185665 0.0334,-0.227572 0.16962,-0.238047 0.65272,-0.207015 0.77291,0.318856 0.2771,-0.267114 -0.12858,-0.522537 0.3372,-0.552586 -0.13815,-0.431548 -0.70012,-0.381047 0.29152,-0.320948 0.47787,-0.25125 -0.003,-0.641895 -0.1081,-0.206176 -1.17487,-0.206175 -0.063,-0.611846 0.3126,-0.401498 -0.30888,-0.522536 0.0367,-0.537562 0.63208,-0.255971 0.2865,-0.601544 0.67715,-0.105723 0.0611,-0.361146 0.21448,-0.242595 1.38642,-0.257619 0.10931,-0.302695 0.48493,-0.498017 0.27458,0.118002 0.39478,-0.212545 0.28961,-0.543092 0.8045,0.149907 0.29941,-0.520912 0.80497,0.02535 0.20873,1.344683 0.95611,0.860189 0.1274,0.744342 0.3466,0.328007 -0.0991,0.445294 0.48735,0.351465 -0.16946,0.539124 0.92835,0.467862 0.9518,0.162917 -0.0334,0.256746 0.52957,0.538234 0.27154,0.02217 0.0135,0.632063 0.43575,0.233289 0.17771,0.467862 1.28074,0.451273 0.0844,0.82659 0.3659,0.02904 0.47266,-0.438429 0.23808,0.570236 0.35537,0.382577 0.35537,0.171462 0.30487,0.52 0.41719,0.442 4.49283,1.141 0.0101,1.007656 1.08106,0.271344 -0.31816,1.513127 0.001,0.594068 -0.73223,0.52307 -0.31281,0.852346 0.34435,0.714171 -0.22915,1.023672 0.29983,1.087546 -0.45677,2.12336 0.3965,0.899483 -0.40083,0.753157 -0.6015,0.401666 -0.22284,0.354334 -2.70818,-0.658 -5.52868,-1.512 0.45886,-1.88332 -1.92765,-0.56222 0.56849,-1.90846 -5.98688,-1.592 -0.68275,-1.459662 0.10166,-0.419563 -0.17364,-0.04524 -0.38857,-0.732999 -0.45419,-0.837753 -0.18074,-0.05197 -0.31484,-0.536188 -0.2274,-0.156096 -0.46578,-0.62541 -0.40619,-0.0816 -0.21237,0.207292 -0.33902,-0.04599 -0.10064,-0.172629 -0.39861,0.05085 -0.1803,-0.374663"},"53017":{"name":"Douglas, WA","path":"m 168.91263,39.460143 -1.76441,-0.48456 -0.10738,0.343907 -0.3423,-0.100759 -0.14094,0.671114 -0.35069,-0.0672 -0.0771,0.301717 -0.72317,-0.13456 -0.0855,0.335277 -0.22736,-0.05199 -0.51732,1.847823 -0.31703,-0.06156 -0.19408,0.639602 -0.24537,-0.05395 -0.20977,0.669823 -0.34078,-0.08529 -0.10346,0.341857 -0.3289,-0.08529 -0.3289,1.255474 -0.34077,-0.08529 -0.22211,0.958845 -0.39232,-0.07956 -0.0838,0.323854 -0.8677,-0.194717 -0.10833,0.303618 -0.29817,-0.07607 -0.0727,0.32735 -0.36936,-0.08793 -0.0609,0.291754 -0.3219,-0.08793 -0.10727,0.316954 -0.29711,-0.0746 -0.0954,0.316954 -0.29711,-0.0746 -0.0835,0.293223 -0.32084,-0.08646 -0.49882,1.883154 -5.22203,-1.238 -0.21527,0.69543 -0.26504,-0.07367 -0.11441,0.351637 -0.28197,-0.07645 -0.22882,0.676692 -0.29969,-0.06759 -0.0912,0.332149 -0.30388,-0.07544 -0.0912,0.296707 -0.37476,-0.102017 -0.10895,0.34987 -0.33932,-0.07544 -0.52491,2.060116 -1.08106,-0.271344 -0.0101,-1.007656 0.16046,-0.312 0.19968,-0.547 0.22464,-0.676 -0.0143,-0.128 -0.50633,-0.779 -1.55288,-0.699 -0.23178,-0.128 -0.44215,-0.385 -0.0642,-0.193 -0.0481,-0.788 0,-0.556 0.11232,-0.328 0.48316,-1.004 0.38127,-0.507358 0.54487,-0.180143 0.5691,-0.692647 0.29818,-0.980301 0.67993,-0.571283 0.0783,-0.46087 -0.16713,-0.610844 0.12222,-0.425554 0.22465,-0.249 0.14441,-0.1 0.22464,-0.09 0.98058,-0.128 0.19255,0.09 0.20146,0.209 0.0802,0.128 0.10519,0.04 1.50118,-0.04 0.73595,-0.638147 0.19941,-0.605298 0.86736,-0.243953 0.15561,-0.868093 0.88646,-0.449108 0.11299,-0.215401 0,-0.177 -0.0571,-0.274 -0.12659,-0.257 -0.009,-0.08 0.0568,-0.176225 0.39345,-0.333746 0.0675,-0.457518 -0.27286,-0.568203 0.16514,-0.327308 1.4361,-0.421247 0.44715,0.146645 0.11865,-0.378946 0.43977,0.176426 0.14413,0.537771 0.38418,0.07819 0.29659,-0.08606 0.14328,0.373836 -0.4699,0.691381 -0.1253,0.499308 0.37839,0.586907 0.5317,0.09416 0.88208,-0.584724 0.27455,-0.0085 0.31834,-0.271277 0.2855,-0.06323 0.47164,-0.523122 0.3512,0.232415 0.58114,0.133867 0.395,0.703258 1.05198,0.221468 0.26033,-0.68483 0.31507,-0.356335 0.40268,-0.192088 0.35887,0.410153 1.15105,-0.250676 0.42222,0.07176 0.35653,-0.300535 0.43551,-0.0738 0.2816,0.451647 0.57725,0.123152 0.24069,0.376 0.21087,0.315699 -0.0642,1.032318 0.1767,0.638125 0.40664,0.386278 0.0562,0.32058 -0.0945,0.265 -0.28169,0.41 -0.41006,0.458"},"53019":{"name":"Ferry, WA","path":"m 176.73943,17.050143 9.52944,2.305 -0.28883,0.266 -0.22464,0.289 -0.17651,0.772 -0.19254,1.285 0.0802,0.85 0.2086,0.186 0.34588,1.551 0.0392,0.651 -0.27278,2.307 -0.39352,0.564462 -0.31013,0.731259 -0.44912,0.898056 -0.42132,0.06407 -0.87911,1.42386 -0.15631,2.508043 0.0939,2.06325 -0.32817,0.540365 -0.60503,0.314625 -0.26158,1.449068 -0.57381,0.231363 -0.48014,-0.112092 -0.10961,0.498734 0.12977,0.488327 -0.24022,0.743181 -0.39233,-0.03876 -0.13214,0.294288 -0.83986,-0.163657 -0.20499,-0.246919 -0.42085,0.05448 -0.66679,0.257 0.43023,1.38104 -0.33628,1.097956 0.0183,0.768004 -0.52238,1.118 -0.61576,-0.01255 -0.61576,-0.482181 -0.14636,-0.860982 -0.71188,0.116542 -0.44959,-0.310296 0.30589,-0.900729 -0.51874,-0.432489 -1.12534,-0.09984 -0.46004,-0.569464 -0.53831,0.19368 -0.008,0.397769 -0.16204,0.292542 -0.37975,-0.02 -1.0929,-0.772 -0.11945,-0.202 -0.23356,-0.722 0.12123,-0.112 1.90486,-7.768153 0.12213,0.02233 0.86563,-3.814146 -0.34486,-0.113988 0.87296,-3.823741 0.53463,0.118107 1.33082,-5.521406 0.46712,-1.984"},"53055":{"name":"San Juan, WA","path":"m 109.57422,6.421875 0.26562,0.4960938 0.57227,0.6933593 0.85937,0.5097657 L 111.0957,7.6972656 111.04688,7.3320312 110.44141,6.84375 110,6.4335938 Z m 3.71094,0.066406 -0.60157,0.056641 -0.45507,0.2402343 0.25,0.3613282 -0.10352,0.3808594 0.71094,-0.1523438 0.15039,-0.5 z m 1.23437,0.7304688 -0.39258,0.050781 -1.33593,0.8339844 -0.60938,0.4414063 0,0.3691406 0.47461,0.013672 0.22852,0.4902344 0.16796,-0.3046876 -0.002,-0.5039062 0.34375,0.1152344 -0.0742,0.4335937 0.0586,0.4765625 0.29882,0.4707034 0.70118,-0.101563 0.11132,-0.2363279 -0.0273,-0.5898437 -0.1543,-0.9492188 0.0508,-0.6269531 0.42187,0.1132813 -0.0742,1.078125 0.32422,0.6953124 0.082,0.6562498 0.41992,-0.01172 0.0137,-0.4804682 0.46874,-0.140625 0,-0.015625 0.51368,-0.1855469 0.26562,-0.1835938 -0.008,-0.029297 -1.10156,-1.1816406 -0.54493,-0.4921875 -0.25976,-0.1347656 z m -4.42773,0.875 -0.35352,0.2578125 -0.17773,0.2011719 -0.0312,0.1367187 0.27148,0.375 -0.17773,0.3476563 0.0996,0.7714846 0.0801,0.392578 0.0879,0.232422 0.24219,0.371094 0.98828,1.060546 0.43555,0.337891 0.58398,0.226563 0.12891,-0.341797 -0.57031,-0.199219 -0.0449,-0.658203 0.19336,-0.429688 0.39453,0.113281 0.33789,-0.287109 -0.25,-0.25 -0.36328,-0.103515 0.043,-0.451172 -0.47071,-0.7011722 -0.47265,-0.6113282 0.21289,-0.4414062 -0.77735,-0.2597656 z m 1.1875,0.3496094 0.002,0 0,-0.00391 z m 2.88476,1.9062496 -0.20117,0.101563 -0.21094,0.302734 -0.30859,-0.02344 -0.43359,0.767578 -0.32853,0.475077 -0.0543,0.601095 0.39844,0.265625 -0.0957,0.798828 0.23242,0.175781 0.13672,0.06055 0.94726,0.177734 0.16993,-0.107422 0.0859,-0.466796 0.0391,-0.658204 0.6914,-0.507812 -0.0508,-0.525391 -0.75976,-0.06836 -0.0254,0.615234 L 114.13086,13 l -0.0996,-0.154297 0.0801,-0.359375 -0.30664,-0.453125 0.28906,-0.322265 0.45117,-0.416016 -0.32617,-0.140625 0.0312,-0.345703 z m -1.08196,0.354131 0.15119,-0.332456 0.29283,0.06551 0.21873,-0.180596 -0.4539,-0.4292764 -0.42125,-0.2596374 -0.3625,-0.1957192 -0.27329,0.3662288 0.29109,0.1664702 0.0685,0.511495 z m 1.74212,-0.258428 -0.0566,0.386719 0.0469,0.761719 0.35157,0.01172 0.52343,-0.238281 -0.11718,-0.529297 -0.32032,-0.332032 z"},"53029":{"name":"Island, WA","path":"m 116.96336,15.176143 0.0802,-0.06 0.14441,-0.06 0.10341,0.07 0.0499,0.112 0.10341,0.282 -0.39911,0.818054 0.96249,1.108946 0.0713,0.266 -0.0321,0.224 -0.0321,0.05 -0.32983,0.2 -0.14442,0.03 -0.31378,-0.07 -0.0963,-0.04 -0.16046,-0.353 -0.11945,-0.106 -0.22642,-0.07 -0.31379,0 -0.15154,0.08 -0.53843,0.41 -0.40114,0.465 -0.81205,-0.135064 0.006,0.575319 0.92856,0.02778 0.64956,0.453968 0.15558,0.863772 0.0693,1.347576 -0.39749,0.412311 0.29967,0.680303 -0.22117,0.860238 0.0867,0.557606 0.50828,-0.450197 -0.0175,-0.792036 0.17448,-0.60258 0.41331,0.132853 0.27504,0.536735 0.21005,0.649705 0.40314,0.497703 0.49262,0.271585 -0.20379,0.764415 0.10148,0.666 -0.29466,0.662663 -0.61583,0.301558 -0.70108,-0.114221 -0.005,-0.384691 0.20057,-0.309475 -0.0892,-0.460235 -0.23255,-0.493764 -0.28116,-0.169856 -0.41857,0.133894 -0.3515,0.123429 -0.1785,-0.236533 0.17552,-0.357412 -0.16911,-0.451792 -0.37585,-0.194645 -0.14493,-0.536004 0.27122,-0.21657 -0.19951,-0.731346 0.69262,-0.855335 0.004,-0.957005 -0.4503,-0.297659 -0.59767,0.09731 -0.17893,-0.954095 -0.31175,-0.230013 -0.10207,-0.314262 -0.24864,-0.330116 0.27424,-0.599661 0.70435,-0.551494 0.20709,-0.379638 1.26316,-1.180355 0.22495,-0.381798 0.0909,-0.395661 0.12211,-0.05422 0.33874,0.144 m 1.39734,8.14171 -0.26943,-0.576678 -0.29681,-0.316395 -0.23696,-0.519592 -0.32454,0.06 -0.204,-0.344 -0.0708,-1.141094 0.16059,-0.197029 -0.14198,-0.386041 0.48039,-0.92333 0.52849,-0.08845 0.32105,0.226235 0.33521,-0.405404 0.69668,0.779102 -0.0561,0.560701 -0.19851,-0.0568 -0.12974,-0.24425 -0.2832,-0.08553 -0.0908,0.331721 -0.19142,0.520125 -0.51532,0.03546 -0.0399,0.578194 0.33089,0.867247 0.55025,1.204731 0.0772,0.716195 -0.37527,-0.06463 z"},"53061":{"name":"Snohomish, WA","path":"m 119.91223,18.528143 8.08353,2.273 3.86526,1.086 1.125,0.337 7.46487,2.048 -0.20249,0.424937 0.27187,0.685074 0.33309,0.700376 -0.2331,0.256613 0.37735,0.389761 0.23964,0.940639 -1.09166,0.129624 0.0866,0.772316 -1.29237,0.556095 -0.22122,-0.178408 -1.98096,0.403074 0.34496,0.953952 -0.452,0.341489 -0.16561,-0.01 -0.43789,0.45195 -0.008,0.208698 -0.27105,0.418227 -0.22222,0.463146 -0.0539,0.49375 0.26745,0.264217 -0.23753,0.63147 0.47363,0.549272 0.65725,0.166717 -0.50571,0.53397 -0.50571,0.335041 -4.53206,-1.246 -0.54734,-0.106 -1.94333,-0.497 -7.37751,-2.034 -4.8298,-1.414 0.009,-0.05 0.1765,-0.506 2.22502,-2.821 0.48316,-0.04 0.44928,0.06 0.36371,-0.169 0.0874,-0.106 0.26386,-0.875 -0.0143,-0.323 -0.61152,-0.642 -0.63471,-1.317 -0.14441,-0.667 -0.009,-0.04 0.16937,-0.563 0.16046,-0.498 0.0452,-1.208558 0.12651,-0.697516 0.37559,-0.856926"},"53033":{"name":"King, WA","path":"m 114.11535,38.405861 -0.4577,0.200691 -0.73555,0.133095 -0.55209,0.348151 -0.59836,0.08962 0.37782,-1.125794 0.44736,-1.025288 0.34061,-0.574125 0.35376,-0.378962 0.16946,-0.482549 0.23942,0.131592 -0.15109,0.553648 0.0393,1.253637 -0.12213,0.522392 z m 2.3621,-6.989271 -0.0862,-1.575448 4.8298,1.414 7.37751,2.034 1.94333,0.498 0.54734,0.105 4.53206,1.246 -2.2e-4,0.008 0.36192,1.036 -0.16937,0.353 0.231,0.346825 -0.0481,0.168438 -1.22621,0.286712 0.006,0.492025 -0.15868,1.368 -0.80497,-0.02535 -0.29941,0.520912 -0.8045,-0.149907 -0.28961,0.543092 -0.39478,0.212544 -0.27458,-0.118001 -0.48493,0.498017 -0.1093,0.302694 -1.38643,0.25762 -0.21448,0.242595 -0.0611,0.361146 -0.67716,0.105723 -0.2865,0.601544 -0.63208,0.255971 -0.0367,0.537561 0.30888,0.522537 -0.3126,0.401498 0.063,0.611846 1.17487,0.206175 0.1081,0.206175 0.003,0.641896 -0.47787,0.25125 -0.29152,0.320948 0.70012,0.381047 0.13815,0.431548 -0.3372,0.552586 0.12858,0.522537 -0.2771,0.267114 -0.77291,-0.318856 -0.65272,0.207015 -0.16962,0.238047 -0.0334,0.227572 0.22848,0.185665 0.0399,0.206619 -0.28044,-0.02992 -0.17567,-0.197537 -0.47706,0.04493 -0.38525,-0.66154 -0.5424,-0.535825 -1.17097,-0.200582 -0.25953,-0.787257 -0.68907,-0.284393 -0.8043,-0.116771 -0.20715,-0.284393 -0.73097,-0.556777 -0.96152,0.418711 -0.8326,-0.454679 -0.44226,0.156422 -0.28888,0.02994 -0.0862,-0.416139 -0.82917,-0.758516 -0.52649,0.05252 -0.40609,-0.683811 -0.47802,-1.904347 -2.75287,-0.84742 -0.90035,-1.6 1.35854,-0.105 0.50546,-1.23782 -0.33208,-1.126703 0.24567,-0.540417 -0.10461,-1.236679 0.10849,-1.06753 0.27111,-0.151729 0.35832,0.595978 0.39822,-0.280035 0.1769,-0.700122 -0.86273,-0.994387 -0.0243,-0.592969 z"},"53035":{"name":"Kitsap, WA","path":"m 114.36719,25.939453 0.13476,1.267578 -0.69726,0.589844 -1.27735,0.513672 -0.31445,0.488281 -1.10547,0.708984 -0.41406,1.083985 -0.74219,0.666015 -2.25195,0.123047 -0.18555,0.509766 -0.81445,0.05859 -1.05274,0.728515 -0.2246,0.248047 0.36328,0.09375 0.66601,0.134766 2.25,0.714844 -0.76367,2.539062 3.53125,1.126953 1.44531,-2.164062 -0.46973,-0.379883 0.24122,-0.858399 -0.27735,-0.378906 -0.32617,0.425782 -0.64648,0.193359 -0.54297,-0.02148 -0.43555,0.101563 -0.27734,-0.289063 0.53906,-0.392578 0.44727,-0.324218 0.0547,-0.601563 -0.36523,0.01563 -0.29883,-0.515625 0.66992,-0.914062 0.20313,0.701171 -0.0293,1.253907 0.67773,-0.244141 0.39454,-0.716797 -0.34766,-0.777343 0.32617,-0.826172 -0.60742,-0.800782 0.50781,-0.558593 0.51367,1.179687 0.49024,-0.140625 0.59765,-0.732422 0.58204,0.388672 0.5625,-0.02734 -0.24219,-0.824218 0.25976,-0.271485 -0.14062,-0.55664 0.30078,-1.285157 -0.0488,-0.611328 -0.23242,-0.378906 z m -0.81192,4.795382 0.53353,0.677626 -0.25897,1.494381 -0.0364,0.92067 -0.55463,0.0326 -0.18071,-0.734133 -0.50433,0.105239 0.34984,-1.447113 z"},"53045":{"name":"Mason, WA","path":"m 98.673828,28.855469 -0.585937,1.953125 -1.851563,5.677734 0.263672,0.111328 -1.121094,3.841797 4.460938,1.205078 1.919926,0.570313 0.32421,-0.677735 0.50391,-0.04102 0.0566,-0.402344 0.64453,-0.333984 0.70703,-0.228516 0.90235,0.25 -0.13477,-0.875 -0.0566,-0.648438 0.30078,-0.777343 0.70703,-0.226563 0.83204,-0.349609 0.80664,-1.169922 0.28748,0.673614 0.2965,-0.99002 0.76367,-2.552735 -2.25,-0.714843 -0.66601,-0.134766 -0.36328,-0.09375 -0.52149,0.785156 -1.86914,1.716797 0.63281,0.423828 0.70899,0.0332 1.40039,-0.201171 1.05859,-0.306641 0.74414,-0.183594 -0.16406,0.726563 -0.47852,0.201172 -1.11328,0.349609 -0.73633,-0.09375 -1.04101,0.376953 -1.03906,-0.349609 -0.50196,0.33789 -0.5,-0.75 0.49219,-0.941406 1.22461,-1.320313 0.82031,-0.644531 0.35742,-0.875 1.10547,-0.890625 0.0957,-0.06055 0.33007,-0.08008 z m 6.980682,9.771043 -0.58244,0.332038 0.13047,1.469355 0.0361,0.905495 0.80372,-0.612506 -0.14239,-1.21992 0.45451,-1.130493 z"},"53027":{"name":"Grays Harbor, WA","path":"m 85.454703,26.499143 4.529748,1.402591 -0.0387,0.341409 8.142367,2.458 -1.851915,5.68 0.263374,0.112131 -1.120771,3.840869 4.460091,1.205 -0.673501,2.04543 0.650494,0.186851 -1.23035,4.348719 -3.198469,-0.915 -3.583568,-1.109 -3.801079,-1.077 -3.647752,-1.175 0.0037,-2.578933 0.327045,0.159944 0.02408,0.0032 -0.183488,1.630967 0.429424,-0.253258 0.224973,0.614376 0.63281,-0.100051 -0.0069,-0.642539 0.131374,-0.382945 0.884363,-0.589695 1.766943,-0.06102 0.377969,-0.08 0.02318,0 0.776392,0.03009 0.177687,-0.484253 -0.787908,0.01017 -2.212584,-1.208566 0.07099,-0.895445 -0.524164,-0.417 -0.793385,-0.509675 -0.841231,0.06482 -0.296863,1.848471 -0.282026,-0.03 0.587633,-1.99029 0.469775,-1.730417 0.20563,-4.103368 -0.54312,-0.481673 -0.225099,-1.118869 0.0071,-0.282 0.137281,-1.116 0.538427,-2.644"},"53031":{"name":"Jefferson, WA","path":"m 83.951172,17.847656 0,0.0059 0.322266,0.167968 0.267578,0.322266 0.02148,0.0293 0.01758,0.01953 0.658203,1.246094 0.08789,0.162109 0.410156,1.816407 0.02344,0.199218 -0.07227,2.50586 -0.08789,1.085937 -0.0957,0.933594 -0.04883,0.271484 4.528934,1.403701 -0.0387,0.34044 8.142579,2.458984 0.585937,-1.953125 7.753905,2.320313 0.93946,-0.666016 0.86914,-0.626953 0.85547,-1.203125 0.37304,-1.769531 L 110,26.74223 l -0.18359,1.144531 0.23437,0.0098 0.32031,-1.478515 0.56836,0.04492 -0.14843,1.109375 -1.30274,2.480468 0.45899,0.05469 0.52343,-1.15625 0.27735,-0.0957 0.50976,-0.908203 0.97071,-0.611328 0.17382,-0.765626 0.82422,0.208985 0,-0.953125 -0.26172,-0.878906 -0.15234,-1.65625 -0.30583,-0.19336 -0.10042,-0.761718 -0.22461,-0.84375 0.28906,-0.546876 0.69727,-0.05664 0.082,-0.501953 -0.35352,-0.09961 -0.7871,-0.0293 -0.7129,0.888672 0.41993,1.06836 -0.6543,1.164062 -0.58984,-0.207031 0.20898,-0.492187 -0.0215,-0.558594 -0.53321,-0.501953 0.24219,-0.763672 -0.36133,-0.316407 -1.42969,5.070313 -10.296874,-3.101563 0.05664,-0.226562 -1.662109,-0.537109 -5.59961,-1.679688 -3.728515,-1.15625 -0.916016,-0.320312 z m 29.306638,4.949219 0.44336,0.841797 0.12891,-1.134766 0.1543,-0.892578 -0.62696,0.0625 z"},"53009":{"name":"Clallam, WA","path":"m 83.951743,17.740143 -0.167589,-0.442 -0.03209,-2.049 0.487144,-2.203021 0.467634,-0.675723 -0.305945,-1.439043 0.5712,-0.132394 L 85.407965,9.7339839 85.333316,9.4089967 85.773505,9.110395 85.960962,8.6291129 86.394681,8.315224 86.60239,7.5304859 86.137682,7.0192927 85.672215,6.2081435 l 0.151544,-0.04 0.95027,0.273 0.529512,0.467 0.490289,0.433 0.586564,0.596 0.185419,0.192 1.141037,1.366 4.564147,4.3299995 0.946704,0.594 1.631325,0.733 2.060232,0.68111 0.745693,0.126116 0.443089,0.356829 0.34433,0.435191 1.07496,0.0625 0.32158,0.466739 1.35178,0.643516 0.9437,0.448272 1.76616,0.442204 1.08968,-0.182106 1.00582,0.01907 0.54504,0.78956 -0.0117,1.367179 0.24485,1.143675 0.44807,-0.270752 0.13357,-1.123555 0.75235,-0.126547 -1.42986,5.07 -10.298308,-3.101411 0.05805,-0.227049 -1.662182,-0.53654 -5.599995,-1.679 -3.727981,-1.157 -0.916395,-0.321 -2.579813,-0.74"},"53057":{"name":"Skagit, WA","path":"m 146.3094,17.307143 -0.58029,0.532273 0.1381,1.011198 0.18778,0.209696 0.59966,-0.25965 0.27398,0.736514 -0.3103,0.152225 -0.29293,0.589744 -0.43945,-0.01399 -0.45361,0.226682 -0.45361,-0.02814 -0.29788,-0.339598 0.0985,-0.353754 -0.0572,-0.353754 -0.49608,-0.113086 -0.0143,0.272564 -0.22666,0.102681 -0.15587,-0.251244 -0.45317,0.173465 -0.40868,-0.175726 -0.30797,-0.05173 -0.0673,0.599491 -1.483,-0.221612 -0.53448,0.741062 0.3291,0.557021 -0.67606,0.726904 0.003,0.457922 0.14505,0.415451 -0.11086,0.404983 -0.37847,-0.05002 -0.22942,0.356431 0.79516,0.914 -7.46487,-2.048 -1.125,-0.337 -3.86526,-1.086 -8.08353,-2.273 -0.27456,-0.756 -0.82466,-0.772071 -0.85438,-0.744977 -0.10056,-0.918221 0.26151,-0.624568 -0.29502,-0.214796 -0.28873,0.346206 -0.34167,0.07504 -0.42301,-0.0015 -0.26416,-0.105324 -0.0517,-0.67557 0.25652,-0.189491 0.0997,-0.436039 -0.10147,-0.329578 -0.37605,-0.175646 0.0795,-0.319704 0.44896,0.08203 0.73813,-0.144371 0.38286,0.0625 0.11571,0.787662 0.42337,-0.230332 0.27086,1.178531 0.421,0.230538 0.38211,-0.33052 -0.0386,-0.78654 0.21772,-0.667373 -0.11535,-0.64043 -0.74558,-0.532977 0.21583,-0.260559 0.74769,0.624681 0.35272,0.408607 0.87035,-0.745193 -0.20146,-0.603 -0.43502,-0.594 0.33874,0.03 5.14358,1.438 12.8331,3.671 5.27943,1.413314 0.0668,-0.374826 2.18286,0.603512 m -29.0673,-5.010149 0.46882,-1.297569 0.60982,0.997449 0.0721,0.56227 z m -0.93592,-0.424527 0.0283,-0.550788 -0.11734,-0.553079 0.50054,-0.55496 0.36445,0.322365 -0.0183,0.406123 0.12063,0.33318 -0.22209,0.09179 -0.18684,0.311567 z"},"53007":{"name":"Chelan, WA","path":"m 146.32366,20.279143 0.79742,0.105 -0.17879,0.583465 0.35063,0.331355 -0.48364,0.284543 0.32311,0.334966 -0.66012,0.309755 0.006,1.225542 1.01422,0.570055 -0.0446,0.620477 -0.52365,0.721322 0.56042,0.519633 0.45958,-0.06022 0.66126,1.553285 0.78732,0.645689 -0.10293,0.280881 0.52734,0.154827 -0.002,0.633836 -0.45588,0.457358 -0.002,0.608625 0.27523,0.205249 0.0483,0.381726 0.50213,-0.04686 0.34362,0.49939 0.54531,0.978399 0.36883,0.04559 0.72178,0.675867 -0.31185,0.373335 0.74699,0.726288 -0.085,0.474179 0.19236,0.423757 -0.0966,0.440523 2.89238,0.788165 0.0571,0.274 0,0.177 -0.11299,0.215401 -0.88646,0.449108 -0.15561,0.868093 -0.86736,0.243953 -0.19941,0.605298 -0.73595,0.638147 -1.50118,0.04 -0.10519,-0.04 -0.0802,-0.128 -0.20146,-0.209 -0.19255,-0.09 -0.98058,0.128 -0.22464,0.09 -0.14441,0.1 -0.22465,0.249 -0.12222,0.425554 0.16713,0.610844 -0.0783,0.46087 -0.67993,0.571283 -0.29818,0.980301 -0.5691,0.692647 -0.54487,0.180143 -0.38127,0.507358 -0.48316,1.004 -0.11232,0.328 0,0.556 0.0481,0.788 0.0642,0.193 0.44215,0.385 0.23178,0.128 1.55288,0.699 0.50633,0.779 0.0143,0.128 -0.22464,0.676 -0.19968,0.547 -0.16046,0.312 -4.49283,-1.141 -0.41719,-0.442 -0.30487,-0.52 -0.35537,-0.171462 -0.35537,-0.382577 -0.23808,-0.570236 -0.47266,0.438429 -0.3659,-0.02904 -0.0844,-0.82659 -1.28074,-0.451273 -0.17771,-0.467862 -0.43575,-0.233289 -0.0135,-0.632063 -0.27154,-0.02217 -0.52957,-0.538234 0.0334,-0.256746 -0.9518,-0.162917 -0.92835,-0.467862 0.16946,-0.539124 -0.48735,-0.351465 0.0991,-0.445294 -0.3466,-0.328007 -0.1274,-0.744342 -0.95611,-0.860189 -0.20873,-1.344683 0.15868,-1.368 -0.006,-0.492025 1.22621,-0.286712 0.0481,-0.168438 -0.231,-0.346825 0.16937,-0.353 -0.36192,-1.036 0.50571,-0.335041 0.50571,-0.53397 -0.65725,-0.166717 -0.47363,-0.549272 0.23756,-0.63147 -0.26741,-0.264217 0.0539,-0.49375 0.22225,-0.463146 0.27105,-0.418227 0.008,-0.208698 0.43789,-0.45195 0.16561,0.01 0.452,-0.341489 -0.34496,-0.953952 1.98096,-0.403075 0.22122,0.178409 1.29237,-0.556095 -0.0866,-0.772316 1.09166,-0.129624 -0.23964,-0.940639 -0.37735,-0.389761 0.2331,-0.256613 -0.33309,-0.700376 -0.27187,-0.685074 0.20249,-0.424937 -0.79516,-0.914 0.22942,-0.356431 0.37847,0.05002 0.11086,-0.404983 -0.14505,-0.415451 -0.003,-0.457922 0.67606,-0.726904 -0.3291,-0.557021 0.53448,-0.741062 1.483,0.221612 0.0673,-0.599491 0.30797,0.05173 0.40868,0.175726 0.45317,-0.173465 0.15587,0.251244 0.22666,-0.102681 0.0143,-0.272564 0.49608,0.113086 0.0572,0.353754 -0.0985,0.353754 0.29788,0.339598 0.45361,0.02814 0.45361,-0.226682 0.43945,0.01399"},"55029":{"name":"Door, WI","path":"m 671.47461,133.53711 -0.01,0.25977 -0.18359,0.27343 -0.28125,0.0195 -0.11133,-0.1582 -0.33398,0.0312 -0.11914,0.13672 -0.50196,0.0391 -0.16797,-0.18945 -0.17382,0.004 -0.12305,0.68555 0.0273,0.41211 0.11719,0.0781 0.0176,0.20312 -0.0937,0.0176 0.0547,0.40625 0.42968,0.30469 0.54311,0.58649 0.002,-0.67438 0.4707,-0.26172 -0.0176,-0.69727 0.25977,-0.56445 0.29101,-0.4082 0.17774,-0.0117 -0.006,-0.39844 z m -2.08399,3.36328 -0.3457,-0.15039 -0.37695,0 -0.53125,0.34961 -0.19336,0.004 -0.15625,0.55078 -0.50977,0.19531 -0.0918,1.50977 -0.59571,0.24804 -0.4082,0.5918 -0.41602,-0.0234 -0.1289,-0.24219 -0.33984,0.1836 0.0586,0.86523 -0.24609,0.35156 0.0664,1.02149 -0.87109,0.91797 -0.52344,1.30273 -0.45898,1.27539 -0.0371,0.66992 0.32812,0.23047 0.0156,0.4375 -0.2793,0.26367 -0.2207,-0.18164 -0.0645,-0.43945 -0.23828,-0.16601 -0.5625,0.74609 -0.71679,-0.01 -0.56055,0.55274 -0.95703,0.22851 -0.38672,0.61133 -1.1875,2.16211 -0.1543,1.11524 0,0.01 5.91602,-0.48828 0.40039,-1.05273 0.32422,-0.7168 -0.10743,-0.88867 0.56055,-0.65821 0.19141,-0.38867 -0.0488,-0.31836 0.91016,-0.7207 0.0684,-0.30859 -0.25976,-0.36719 0.4668,-0.59961 0.29687,-0.0176 -0.30469,-0.40625 0.002,-0.65039 0.28125,-0.75195 0.39257,-0.19727 0.0957,-1.08203 0.65039,-0.0547 0.48242,-0.80078 0.0898,-0.33984 -0.26171,-0.39649 0.38867,-0.46289 -0.3125,-0.29492 -0.084,-1.34961 0.26758,-0.29492 0.4082,0.32227 0.23829,-0.125 0.0918,-0.33008 0.0488,-0.44141 -0.16406,-0.27734 0.14062,-0.46094 z"},"55061":{"name":"Kewaunee, WI","path":"m 658.30151,151.96514 5.91556,-0.489 -0.37808,1.09785 -0.52405,0.60515 -0.3851,1.262 -0.16937,0.956 -0.26296,3.37483 -0.33074,0.93217 -3.65667,0.328 -0.57052,-7.286 0.36193,-0.781"},"55093":{"name":"Pierce, WI","path":"m 576.08803,152.67314 10.1998,-0.282 0.10572,3.987 0.0464,3.30083 -2.80504,0.12217 -0.0571,-0.09 -0.15867,-0.137 -0.18542,-0.09 -0.28169,-0.06 -2.20898,-0.09 -0.69889,-0.08 -0.25851,-0.119 -1.18918,-1.182 -0.041,-0.225 -0.17651,-0.225 -1.69372,-1.438 -1.166,-0.674 0.56874,-2.717"},"55091":{"name":"Pepin, WI","path":"m 586.39355,156.37814 8.00098,-0.321 0.0963,2 -5.77828,0.25 -0.31379,0.16 -0.31976,0.19349 -0.34741,2.90248 -0.27447,0.54703 -0.0553,0.644 -2.46368,-1.004 -1.21258,-0.84785 -0.0907,-1.09715 2.80504,-0.12217 -0.0464,-3.30083"},"55011":{"name":"Buffalo, WI","path":"m 596.47693,157.97714 0.30203,8.13832 -0.58536,0.56193 -0.50279,0.17665 -0.30383,0.43586 0.2741,0.29826 -0.37263,0.4909 0.94503,0.29862 0.2295,0.95911 0.20198,0.29863 -0.31646,1.58976 -5.23687,-3.75676 -0.26016,-0.52827 -0.35445,-1.26378 -0.39218,-0.33969 0.0982,-0.35854 -0.0222,-0.51007 -0.92749,-0.84954 -1.85159,-0.86839 0.0553,-0.644 0.27447,-0.54703 0.34741,-2.90248 0.31976,-0.19349 0.31379,-0.16 5.77828,-0.25 1.98612,-0.08"},"55121":{"name":"Trempealeau, WI","path":"m 602.4228,157.66314 0.30859,8.07285 0.20147,0 0.1863,3.93722 -0.77377,-0.14367 -0.42147,0.80996 -0.37606,-2.4e-4 -0.34862,-0.42173 -0.28476,0.31111 -0.39654,-0.0739 -0.40473,0.64454 -0.11935,0.51025 0.22968,0.35755 0.0545,0.34105 -1.3426,-0.0291 -2.5868,-0.74896 0.31646,-1.58976 -0.20202,-0.29862 -0.22955,-0.95911 -0.94507,-0.29863 0.37262,-0.4909 -0.27411,-0.29826 0.30382,-0.43586 0.50279,-0.17665 0.58535,-0.56193 -0.30203,-8.13832 5.94587,-0.314"},"55053":{"name":"Jackson, WI","path":"m 602.4228,157.66314 3.9758,-0.193 0.0963,1.994 1.93189,-0.11105 0.15942,2.00605 5.99401,-0.337 1.97542,-0.169 0.21468,4.20784 0.16989,2.07735 -2.58632,0.0677 -5.27917,0.21116 -1.74187,0.112 -0.79516,0.298 -0.44393,0.426 0.1141,1.359 -3.0714,0.19421 -0.0173,-0.14514 -0.1863,-3.93622 -0.20147,0 -0.30859,-8.07285"},"55035":{"name":"Eau Claire, WI","path":"m 606.07768,151.46814 0.32092,6.002 -3.9758,0.193 -5.94587,0.314 -1.98612,0.08 -0.0963,-2 -0.18541,-3.971 11.86856,-0.619"},"55019":{"name":"Clark, WI","path":"m 605.84591,147.47414 9.88958,-0.619 0.45998,8.011 0.36014,5.987 -1.97542,0.169 -5.99401,0.337 -0.15942,-2.00605 -1.93189,0.11105 -0.0963,-1.994 -0.32092,-6.002 -0.23177,-3.994"},"55017":{"name":"Chippewa, WI","path":"m 595.52131,141.98614 9.97872,-0.499 0.57765,9.981 -11.86856,0.618 -0.27623,-6.0489 -0.27624,0.0172 -0.0573,-2.04229 1.96176,-0.0837 -0.0398,-1.94231"},"55033":{"name":"Dunn, WI","path":"m 593.59937,144.01214 0.0573,2.04229 0.27624,-0.0172 0.27623,6.0489 0.18541,3.971 -8.00098,0.321 -0.10572,-3.987 -0.33216,-6.00259 -0.37623,0.0124 -0.008,-2.08485 8.02839,-0.304"},"55109":{"name":"St. Croix, WI","path":"m 585.57098,144.31614 0.008,2.08485 0.37623,-0.0124 0.33216,6.00259 -10.1998,0.282 0.1248,-1.735 -0.34945,-1.615 -0.39936,-0.853 -0.0499,-0.755 0.33875,-3.03 9.81813,-0.369"},"55095":{"name":"Polk, WIO","path":"m 585.25733,134.43214 0.31365,9.884 -9.81813,0.369 0.24782,-2 0.19433,-0.176 0.0214,-0.02 0.42789,-0.53 0.60974,-1.558 -0.32091,-1.624 -0.79338,-1.501 -1.27119,-0.685 -0.32091,0.05 -0.77199,-0.13 -0.21751,-0.168 -0.0553,-0.451 -0.041,-0.61 -0.007,-0.151 0.0214,-0.364 5.74797,-0.16 -0.0553,-1.985 6.01718,-0.16 0.0713,1.968"},"55005":{"name":"Barron, WI","path":"m 587.25058,134.35214 7.91594,-0.298 0.35479,7.932 0.0398,1.94231 -1.96176,0.0837 -8.02839,0.304 -0.31365,-9.884 1.99325,-0.08"},"55107":{"name":"Rusk, WI","path":"m 609.04259,133.32314 0.33875,5.978 -4.01314,0.20068 0.13183,1.98532 -9.97872,0.499 -0.35479,-7.932 13.87607,-0.731"},"55119":{"name":"Taylor, WI","path":"m 619.65958,138.59314 0.3548,6.003 -2.49209,0.221 0.11906,1.929 -1.90589,0.112 -9.88958,0.619 -0.34588,-5.987 -0.13183,-1.98532 4.01314,-0.20068 3.56752,-0.183 2.16262,-0.211 3.2056,-0.248 1.3425,-0.07"},"55099":{"name":"Price, WI","path":"m 614.63546,125.10214 4.13269,-0.263 0.14441,1.943 0.48138,7.843 0.26564,3.968 -1.3425,0.07 -3.2056,0.248 -2.16262,0.211 -3.56752,0.183 -0.33875,-5.978 -0.40827,-7.875 6.00114,-0.346"},"55113":{"name":"Sawyer, WI","path":"m 594.43554,122.14614 10.01973,-0.451 0.16046,3.657 0.041,0.33 3.97759,-0.234 0.40827,7.875 -13.87607,0.731 -0.73098,-11.908"},"55129":{"name":"Washburn, WI","path":"m 586.46433,122.48314 7.97121,-0.337 0.73098,11.908 -7.91594,0.298 -0.36014,-7.891 -0.27457,0 -0.15154,-3.987"},"55013":{"name":"Burnett, WI","path":"m 582.55806,122.65314 3.90627,-0.17 0.15154,3.987 0.27457,0 0.36014,7.891 -1.99325,0.08 -0.0713,-1.968 -6.01718,0.16 0.0553,1.985 -5.74797,0.16 0.65432,-2 1.61349,-3.231 0.19968,-0.36 0.20147,-0.266 0.79872,-0.699 0.005,0 3.34288,-2.194 2.33913,-1.46 -0.0321,-0.901 -0.041,-0.996"},"55031":{"name":"Douglas, WI","path":"m 582.13374,111.05714 0.36014,0.25 0.44215,0.04 0.47603,-0.03 0.0784,-0.05 0.0731,-0.07 0.21573,-0.563 -0.016,-0.257 -0.016,-0.02 -0.0802,-0.09 0,-0.02 -0.0553,-0.145 0.016,-0.169 0.0892,-0.184 1.1232,-0.764 0.42789,-0.03 0.91462,0.894 0.22285,0.1 0.082,-0.06 0.44215,0.298 0.24069,0.137 0.1872,0.08 0.30309,0.05 1.93797,-0.321 0.46533,-0.13 3.72798,-1.567 0.21751,5.457 0.11946,1.962 0.30665,6.291 -7.97121,0.337 -3.90627,0.17 -0.21573,-5.964 -0.20859,-5.632"},"55007":{"name":"Bayfield, WI","path":"m 603.87762,111.84514 0.57765,9.85 -10.01973,0.451 -0.30665,-6.291 -0.11946,-1.961 -0.21751,-5.458 0.22643,0.02 0.40828,-0.09 1.71911,-0.86163 0.37774,-0.0221 0.52757,-0.77878 1.23323,-0.28498 0.44735,-0.73511 0.41345,0.0161 0.43726,0.47826 0.49053,-0.78671 0.1462,0.33228 0.50822,0.0377 0.13728,-0.09 -0.0322,-0.45946 0.32702,0.0229 0.27289,0.14022 0.29877,-0.38861 -0.0196,-0.24858 0.2865,-0.27969 0.24659,-0.11373 0.46711,-0.602 0.76135,0.28057 0.83786,-0.81457 0.24068,-0.04 0.28883,0.1 0.86113,0.665 0.52773,0.612 0.066,0.121 0,0.112 -0.30868,0.33701 -0.36524,1.18899 -0.47907,0.58172 -0.12134,0.34234 -0.41143,0.0302 0.0134,0.44375 -0.23165,0.22907 0.009,0.41948 0.49061,0.74773 -0.0394,0.35564 -0.44454,0.44176 -0.35279,0.15935 -0.006,0.009 -0.18994,0.29793 0.0184,0.38706 -0.20686,0.71554 -0.19337,0.0636 0.005,0.08 0.16224,0.184 0.23356,0.07"},"55003":{"name":"Ashland, WI","path":"m 611.76172,100.27734 -0.78711,0.0117 -0.21484,0.31055 -0.0996,0.44141 0.11914,0.40234 -0.0859,0.28711 -0.15039,0.20703 0.0884,0.2547 0.61672,-0.284 0.38086,-0.47265 0.006,-0.54102 z m -1.75274,2.82764 -0.26924,-0.18589 -1.66951,0.5602 -0.36059,0.6724 0.17192,0.28264 1.13736,-0.36024 0.50558,-0.011 0.002,-0.24291 0.25704,-0.2889 z m -3.30195,6.28564 -0.28125,0.625 0.0293,0.39649 -0.14453,0.24219 -0.375,0.27929 -1.70508,1.03907 -0.0644,0.0195 -0.13672,0 -0.15235,-0.041 0,0.006 0.57813,9.84961 0.16015,3.65625 0.041,0.33008 3.97852,-0.23438 6,-0.3457 -0.0859,-1.98437 -0.16992,-1.98438 -1.95118,0.10742 -0.12109,-1.95508 -2.01562,0.11133 -0.0977,-2.66015 -0.18359,-3.2793 -0.13086,-1.91992 -1.29297,-0.8418 z m 0.52547,-2.08566 -0.38228,7.1e-4 -0.72035,0.73675 -0.28527,0.004 -0.0398,-0.77593 0.86723,-0.43581 0.12728,-0.29022 1.05484,-0.742 0.39015,-0.62252 0.3905,-0.032 0.53097,0.54268 -0.35987,0.23927 -0.42627,0.0396 -0.88321,0.41193 -0.071,0.45878 0.49764,-0.0688 -0.0134,0.31827 z"},"55051":{"name":"Iron, WI","path":"m 611.99324,111.82914 1.81497,0.988 3.23056,3.97 1.47799,0.312 1.62242,0.337 0.47781,7.281 -1.84884,0.122 -4.13269,0.263 -0.0874,-1.984 -0.16938,-1.984 -1.95035,0.10675 -0.12134,-1.95575 -2.01643,0.112 -0.0981,-2.66 -0.18364,-3.279 -0.13015,-1.92 0.58246,-0.11943 1.01343,0.48808 0.51859,-0.0777"},"55125":{"name":"Vilas, WI","path":"m 620.13918,117.43614 11.52447,2.364 0.86647,0.177 0.67749,0.144 1.0929,0.369 1.13212,0.555 0.97345,0.474 0.14263,2.098 -1.83101,0.129 0.15155,1.993 -2.19591,0.14892 0.0689,0.90387 -2.09197,0.12658 -0.0207,-0.89937 -11.71705,0.763 -0.14441,-1.943 1.84884,-0.122 -0.47781,-7.281"},"55085":{"name":"Oneida, WI","path":"m 634.86925,125.73914 0.73989,9.859 -6.10811,0.378 -0.19255,-2.018 -3.94549,0.266 -5.96905,0.401 -0.48138,-7.843 11.71705,-0.763 0.0207,0.89937 2.09197,-0.12658 -0.0689,-0.90387 2.19591,-0.14892"},"55069":{"name":"Lincoln, WI","path":"m 629.50103,135.97614 0.53129,7.986 -10.01794,0.634 -0.3548,-6.003 -0.26564,-3.968 5.96905,-0.401 3.94549,-0.266 0.19255,2.018"},"55067":{"name":"Langlade, WI","path":"m 629.50103,135.97614 6.10811,-0.378 1.98433,-0.153 0.10519,1.984 4.01146,-0.305 0.26208,3.987 0.68284,-0.05 0.10697,2.007 -5.53046,0.403 0.16224,2.049 -3.92944,0.272 -0.15273,-2.02833 -3.2793,0.19633 -0.53129,-7.986"},"55073":{"name":"Marathon, WI","path":"m 620.01438,144.59614 10.01794,-0.634 3.2793,-0.19633 0.15273,2.02833 0.54826,8.09927 -5.05269,0.19423 -5.07493,0.3055 -7.68952,0.473 -0.45998,-8.011 1.90589,-0.112 -0.11906,-1.929 2.49209,-0.221"},"55141":{"name":"Wood, WI","path":"m 616.19547,154.86614 7.68952,-0.473 0.27278,3.985 1.92906,-0.121 0.23177,3.136 0.19434,2.924 -3.0141,0.31084 -6.72855,0.433 -0.21468,-4.20784 -0.36014,-5.987"},"55001":{"name":"Adams, WI","path":"m 628.60246,164.21914 0.41006,6.068 0.48851,7.818 -3.07367,0.241 -0.10703,-0.45136 -0.50163,-0.30479 -0.37761,-0.78958 -0.2987,-1.07144 -1.25299,-1.24105 -0.0128,-0.20382 -0.71338,-0.67822 -0.0144,-0.31744 -0.49917,-0.81351 0.24804,-0.25737 0.24804,-0.0206 -0.0225,-0.4603 -0.36077,-1.22695 -0.654,-0.21803 0.10136,-0.49988 -0.29323,-0.2293 -0.16921,-1.30036 0.18779,-0.59159 0.47974,-0.10046 0.11834,-0.92904 0.38278,-0.0211 0.19767,0.19925 0.18885,-0.0123 -0.0403,-0.49712 0.32106,-0.0387 -0.0211,-0.27854 -0.26791,0.0388 -0.0582,-0.15117 0.29443,-0.1688 -0.34024,-0.21287 0.006,-0.12407 0.24109,-0.11492 0.0824,-0.2207 -0.0211,-0.41076 3.0141,-0.31084 2.08952,-0.1"},"55057":{"name":"Juneau, WI","path":"m 616.77029,165.06098 6.72855,-0.433 0.0211,0.41076 -0.0824,0.2207 -0.24109,0.11492 -0.006,0.12407 0.34024,0.21287 -0.29443,0.1688 0.0582,0.15117 0.26791,-0.0388 0.0211,0.27854 -0.32107,0.0387 0.0403,0.49712 -0.18885,0.0123 -0.19767,-0.19925 -0.38278,0.0211 -0.11834,0.92904 -0.47974,0.10046 -0.18779,0.59159 0.16921,1.30036 0.29323,0.2293 -0.10136,0.49988 0.654,0.21803 0.36077,1.22695 0.0226,0.4603 -0.24804,0.0206 -0.24804,0.25737 0.49917,0.81351 0.0144,0.31744 0.71338,0.67822 0.0128,0.20382 1.25299,1.24105 0.29869,1.07144 0.37762,0.78958 0.50163,0.30479 0.10703,0.45136 -8.73785,0.547 -0.11945,-2.082 -0.62988,-9.67281 -0.16989,-2.07735"},"55081":{"name":"Monroe, WI","path":"m 606.20783,169.61214 -0.1141,-1.359 0.44393,-0.426 0.79516,-0.298 1.74187,-0.112 5.27917,-0.21116 2.58632,-0.0677 0.62988,9.67281 -9.90028,0.701 -0.25138,-4.677 -0.22464,-3.287 -0.98593,0.06"},"55063":{"name":"La Crosse, WI","path":"m 603.11916,169.66521 0.0173,0.14517 3.0714,-0.19417 0.98593,-0.06 0.22464,3.287 0.25138,4.677 -5.92982,0.296 -0.40293,-2.78 -2.40153,-3.054 1.3426,0.0291 -0.0545,-0.34105 -0.22968,-0.35755 0.11935,-0.51025 0.40473,-0.64454 0.39654,0.0739 0.28476,-0.31111 0.34862,0.42173 0.37606,2.4e-4 0.42147,-0.80996 0.77377,0.14367"},"55123":{"name":"Vernon, WI","path":"m 617.57006,176.81114 0.11945,2.082 0.14442,2.001 -5.9851,0.369 0.21751,2.999 -8.93753,0.472 -0.28882,-1.776 -1.10003,-5.15 5.92982,-0.296 9.90028,-0.701"},"55111":{"name":"Sauk, WI","path":"m 617.68951,178.89314 8.73785,-0.547 0.24435,0.89833 0.86237,0.10006 -0.23204,0.3962 0.10271,0.34469 1.98674,-0.0926 0.11232,0.1 0.39301,4.06037 -0.30487,0.274 -0.40293,0.2 -0.1765,0.06 -0.24069,-0.03 -0.15332,0.05 -0.6668,1.1 -0.041,0.314 0.12836,0.183 0.0195,0.57302 -0.27605,0.37562 -0.36884,0.24305 -0.19729,0.20622 -0.60358,0.0693 -0.40472,0.66581 -1.22298,0.58141 -1.64653,-0.0539 -0.50971,0.61825 -0.2223,0.13418 -0.0408,0.46697 -0.43408,-0.33475 -0.75174,0.0434 -0.43407,-0.19861 -0.75174,0.17956 0.0143,-0.06 -0.39551,-9.0535 -1.97898,0.145 -0.14442,-2.001"},"55103":{"name":"Richland, WI","path":"m 617.83393,180.89414 1.97898,-0.145 0.39551,9.0535 -0.0143,0.06 -1.02988,-0.66085 -0.45591,0.026 -0.24891,-0.25625 -0.82374,0.01 -0.60732,0.14149 -0.69029,0.0253 -0.79273,0.0596 -0.5402,-0.0999 -0.87248,0.0197 -0.5402,0.20578 -0.47285,0.54398 -0.47284,0.0921 -0.22032,0.0788 -0.36014,-5.785 -0.21751,-2.999 5.9851,-0.369"},"55023":{"name":"Crawford, WI","path":"m 603.12881,184.73414 8.93753,-0.472 0.36014,5.785 -0.55652,0.0302 -0.123,0.43499 -0.52624,0.37047 -0.0262,0.37046 -1.10691,0.43499 -0.42748,0.57861 -0.20167,0.0141 -0.16941,0.28828 -0.54039,0.0625 -0.60491,0.23989 -0.29845,-0.002 -0.10462,0.34056 -0.60646,0.54587 -0.37835,0.0896 -0.30991,0.45462 -0.42397,0.0212 -0.17306,0.31776 -0.46959,0.0212 -0.10462,-0.16127 -0.59172,-0.0184 -0.3222,0.32043 -0.35658,-2.186 0.43681,-1.696 1.28366,-2.162 0.0642,-0.287 -0.50456,-0.811 -0.38688,-0.491 -1.78465,-1.255 0.016,-1.182"},"55049":{"name":"Iowa, WI","path":"m 626.20807,188.42514 0.52059,8.033 0.066,1.006 -9.88423,0.633 -0.5723,-8.95 0.69029,-0.0253 0.60732,-0.14149 0.82374,-0.01 0.24891,0.25625 0.45591,-0.026 1.02988,0.66085 0.75174,-0.17956 0.43407,0.19861 0.75174,-0.0434 0.43408,0.33475 0.0408,-0.46697 0.2223,-0.13418 0.50971,-0.61825 1.64653,0.0539 1.22298,-0.58141"},"55043":{"name":"Grant, WI","path":"m 612.42648,190.04714 0.22032,-0.0788 0.47284,-0.0921 0.47285,-0.54398 0.5402,-0.20578 0.87248,-0.0197 0.5402,0.0999 0.79273,-0.0596 0.5723,8.95 0.42611,7.055 -3.61388,0.178 0.0642,-0.111 -0.0107,-0.13 -0.18363,-0.579 -1.06972,-1.945 -0.12124,-0.122 -0.19255,-0.09 -0.8433,-0.202 -2.17688,-0.417 -0.8843,-0.21 -0.46712,-0.216 -1.35676,-0.9 -0.2086,-0.434 -1.53505,-3.408 -0.37618,-1.758 0.3222,-0.32043 0.59172,0.0184 0.10462,0.16127 0.46959,-0.0212 0.17306,-0.31776 0.42397,-0.0212 0.30991,-0.45462 0.37835,-0.0897 0.60646,-0.54587 0.10462,-0.34056 0.29845,0.002 0.60491,-0.23989 0.54039,-0.0625 0.16941,-0.28828 0.20167,-0.0141 0.42748,-0.57861 1.10691,-0.43499 0.0262,-0.37046 0.52624,-0.37047 0.123,-0.43499 0.55652,-0.0302"},"55065":{"name":"Lafayette, WI","path":"m 616.9104,198.09714 9.88423,-0.633 0.47424,7.11 -1.50296,0.09 -8.4294,0.49 -0.42611,-7.054"},"55045":{"name":"Green, WI","path":"m 626.72866,196.45814 7.86604,-0.50908 0.0178,0.26108 0.60975,7.947 -0.60261,0.04 -7.35078,0.38 -0.47424,-7.11 -0.066,-1.006"},"55077":{"name":"Marquette, WI","path":"m 636.09051,169.77214 0.16537,2.66262 -0.50769,0.057 0.12588,1.41051 0.12218,0.11391 0.12217,-0.001 0.079,-0.11649 0.17977,-0.001 0.0358,1.02108 -0.6122,0.0275 -0.32024,-0.0377 -0.26141,0.14584 0.15648,2.6344 -5.87455,0.417 -0.48851,-7.818 7.07799,-0.515"},"55097":{"name":"Portage, WI","path":"m 623.88499,154.39314 5.07493,-0.3055 5.05269,-0.19423 0.72114,9.95673 -6.13129,0.369 -2.08952,0.1 -0.19434,-2.924 -0.23177,-3.136 -1.92906,0.121 -0.27278,-3.985"},"55135":{"name":"Waupaca, WI","path":"m 634.01261,153.89341 10.11508,-0.79427 0.14441,2.018 -2.13053,0.168 0.2086,2.811 0.34766,5.167 -2.41044,0.201 -5.55364,0.386 -0.72114,-9.95673"},"55137":{"name":"Waushara, WI","path":"m 640.28739,163.46414 0.45641,5.962 -4.65329,0.346 -7.07799,0.515 -0.41006,-6.068 6.13129,-0.369 5.55364,-0.386"},"55047":{"name":"Green Lake, WI","path":"m 640.7438,169.42614 0.15333,2.019 0.44928,6.026 -2.00038,0.16 -1.99503,0.177 -0.0143,-0.273 -1.96116,0.153 -0.15648,-2.6344 0.26141,-0.14584 0.32024,0.0377 0.6122,-0.0275 -0.0358,-1.02108 -0.17977,0.001 -0.079,0.11649 -0.12217,0.001 -0.12218,-0.11391 -0.12588,-1.41051 0.50769,-0.057 -0.16539,-2.66262 4.65329,-0.346"},"55021":{"name":"Columbia, WI","path":"m 635.37558,177.68814 1.96116,-0.153 0.0143,0.273 1.99503,-0.177 0.55626,8.021 -1.59923,0.168 -4.29316,0.337 -0.0232,-0.296 -5.94766,0.431 -0.12836,-0.183 0.041,-0.314 0.6668,-1.1 0.15332,-0.05 0.24069,0.03 0.1765,-0.06 0.40293,-0.2 0.30487,-0.274 -0.39301,-4.06037 -0.11232,-0.1 -1.98674,0.0926 -0.10271,-0.34469 0.23204,-0.3962 -0.86237,-0.10006 -0.24435,-0.89833 3.07367,-0.241 5.87455,-0.417"},"55025":{"name":"Dane, WI","path":"m 639.90229,185.65214 0.15154,1.999 0.51169,8.085 -5.95301,0.474 -0.0178,-0.26108 -7.86604,0.50908 -0.52059,-8.033 0.40472,-0.66581 0.60358,-0.0693 0.19729,-0.20622 0.36884,-0.24305 0.27605,-0.37562 -0.0195,-0.57302 5.94766,-0.431 0.0232,0.296 4.29316,-0.337 1.59923,-0.168"},"55105":{"name":"Rock, WI","path":"m 644.53775,195.53514 0.62579,8.044 -2.76345,0.184 -7.17783,0.394 -0.60975,-7.947 5.95301,-0.474 3.97223,-0.201"},"55059":{"name":"Kenosha, WI","path":"m 652.87089,200.25914 1.98433,-0.167 -0.1141,-1.35 3.11645,-0.266 3.30544,-0.256 0.43502,4.074 -6.73568,0.465 -1.75256,0.176 -0.2389,-2.676"},"55101":{"name":"Racine, WI","path":"m 656.38849,194.57714 4.05959,-0.337 0.53534,0.72622 0.73204,0.38161 -0.11364,1.97344 -0.43881,0.89873 -3.30544,0.256 -3.11645,0.266 0.1141,1.35 -1.98433,0.167 -0.44216,-5.327 3.95976,-0.355"},"55127":{"name":"Walworth, WI","path":"m 648.49216,195.23014 3.93657,-0.298 0.44216,5.327 0.2389,2.676 -6.78025,0.564 -1.166,0.08 -0.62579,-8.044 3.95441,-0.305"},"55027":{"name":"Dodge, WI","path":"m 641.34641,177.47114 2.00217,-0.145 6.04036,-0.419 0.13015,1.512 0.0392,0.498 0.29774,3.995 -0.28169,0.02 0.33161,4.033 -1.96115,0.121 -7.89099,0.562 -0.15154,-1.999 -0.55626,-8.021 2.00038,-0.16"},"55055":{"name":"Jefferson, WI","path":"m 640.05383,187.65114 7.89099,-0.562 0.54734,8.141 -3.95441,0.305 -3.97223,0.201 -0.51169,-8.085"},"55133":{"name":"Waukesha, WI","path":"m 655.81797,186.54414 0.57052,8.033 -3.95976,0.355 -3.93657,0.298 -0.54734,-8.141 1.96115,-0.121 5.912,-0.424"},"55079":{"name":"Milwaukee, WI","path":"m 658.67948,186.31014 0.4016,0.53088 -0.22242,0.61368 0.0598,0.62896 0.33152,0.37208 0.26611,0.70139 -0.55909,0.64382 0.30759,0.98842 0.46202,0.22503 0.41173,0.58965 -0.0478,1.03308 0.35751,1.60301 -4.05959,0.337 -0.57052,-8.033 2.86151,-0.234"},"55089":{"name":"Ozaukee, WI","path":"m 655.52914,178.45114 4.08278,-0.362 0.11232,1.157 -0.17651,0.747 -0.27456,0.637 -0.41006,0.715 -0.12658,0.28 -0.10519,0.322 -0.0571,0.257 0.0593,1.10632 -0.39804,1.68268 0.0588,0.328 0.30487,0.868 0.0802,0.121 -2.86151,0.234 -0.312,-4.026 0.37013,-0.0364 -0.34696,-4.03062"},"55131":{"name":"Washington, WI","path":"m 653.52876,178.60314 2.00038,-0.152 0.34696,4.03062 -0.37013,0.0364 0.312,4.026 -5.912,0.424 -0.33161,-4.033 0.28169,-0.02 -0.29774,-3.995 3.97045,-0.314"},"55139":{"name":"Winnebago, WI","path":"m 648.20868,162.80714 0.66679,8.083 -7.97834,0.555 -0.15333,-2.019 -0.45641,-5.962 2.41044,-0.201 5.51085,-0.456"},"55039":{"name":"Fond du Lac, WI","path":"m 652.85484,170.59214 0.67392,8.011 -3.97045,0.314 -0.0392,-0.498 -0.13015,-1.512 -6.04036,0.419 -2.00217,0.145 -0.44928,-6.026 7.97834,-0.555 -0.0874,-1.054 3.98597,-0.18661 0.0808,0.94261"},"55117":{"name":"Sheboygan, WI","path":"m 659.95601,169.94914 0.76485,2.845 0.11945,1.84 -0.0464,0.193 -1.18204,3.262 -4.08278,0.362 -2.00038,0.152 -0.67392,-8.011 1.98433,-0.169 5.11684,-0.474"},"55015":{"name":"Calumet, WI","path":"m 651.68171,162.58014 2.45858,-0.184 0.69888,8.027 -1.98433,0.169 -0.0808,-0.94261 -3.98597,0.18661 -0.57943,-7.029 3.47303,-0.227"},"55071":{"name":"Manitowoc, WI","path":"m 658.5101,160.03214 3.65667,-0.328 0.77198,2.193 0.0481,0.435 -0.0481,0.418 -0.0891,0.306 -0.28883,0.498 -0.353,0.385 -0.58657,0.346 -0.31378,0.249 -0.38689,0.433 -0.0225,1.34959 -0.4107,0.65141 -0.1355,0.715 0.0672,0.60609 -0.46296,1.65991 -5.11684,0.474 -0.69888,-8.027 2.54594,-0.201 -0.16938,-2 0.99841,-0.08 0.99484,-0.08"},"55009":{"name":"Brown, WI","path":"m 650.02696,152.68719 0.2165,-0.003 7.2e-4,0.19247 0.56587,-0.0336 0.90497,-0.20828 2.43817,-0.14464 -0.18993,0.28562 -0.0525,0.7934 0.28351,0.215 -0.13129,0.34126 -0.32084,0.62781 -0.21338,0.0247 -0.007,0.145 0.65788,0.579 0.58657,0.152 0.44215,-0.02 0.22464,-0.16 0.1765,-0.298 0.21751,-0.499 0.0214,-0.119 -0.0856,-0.161 0.0321,-0.08 0.51347,-0.596 0.89143,-0.722 0.73989,-0.249 0.57052,7.286 -0.99484,0.08 -0.99841,0.08 0.16938,2 -2.54594,0.201 -2.45858,0.184 -0.082,-1.325 -0.52392,-6.53997 -0.89703,0.063 -0.12015,-1.61195 -0.19208,0.0116 -0.0277,-0.48163 0.18812,-0.009"},"55087":{"name":"Outagamie, WI","path":"m 644.2721,155.11714 5.90665,-0.339 0.89703,-0.063 0.52392,6.53997 0.082,1.325 -3.47303,0.227 -5.51085,0.456 -0.34766,-5.167 -0.2086,-2.811 2.13053,-0.168"},"55115":{"name":"Shawano, WI","path":"m 637.39379,145.52214 0.15155,1.968 3.99362,-0.305 0.13729,1.992 4.02572,-0.289 3.91874,-0.248 0.14509,2.74894 0.26116,1.29811 -0.18812,0.009 0.0277,0.48163 0.19208,-0.0116 0.12015,1.61195 -5.90665,0.339 -0.14441,-2.018 -10.11508,0.79427 -0.54826,-8.09927 3.92944,-0.272"},"55078":{"name":"Menominee, WI","path":"m 637.39379,145.52214 -0.16224,-2.049 5.53046,-0.403 2.55307,-0.192 0.21038,3.558 0.17651,2.452 -4.02572,0.289 -0.13729,-1.992 -3.99362,0.305 -0.15155,-1.968"},"55083":{"name":"Oconto, WI","path":"m 645.74297,136.87168 1.9772,-0.1 0.3016,4.1719 1.9262,-0.15121 0.19146,1.94151 1.10013,-0.08 0.14458,1.9663 2.87349,-0.1327 0.0225,0.66944 3.016,-0.21145 0.0337,0.53413 -0.10519,0.02 -0.72206,0.20754 -0.0981,0.08 -0.27991,0.466 -0.12358,0.5179 0.42752,0.44734 -0.0324,0.39301 -0.40837,0.41336 -0.0757,0.47766 -0.36889,0.0874 -0.20372,0.40863 -0.45815,1.45656 -0.69287,0.85218 -0.041,0.781 0.006,0.39524 -2.43818,0.14464 -0.90497,0.20828 -0.56587,0.0336 -7.1e-4,-0.19247 -0.2165,0.003 -0.26116,-1.29811 -0.14509,-2.74894 -3.91874,0.248 -0.17651,-2.452 -0.21038,-3.558 -2.55307,0.192 -0.10697,-2.007 -0.68284,0.05 -0.26208,-3.987 4.03285,-0.25246"},"55041":{"name":"Forest, WI","path":"m 636.40608,121.51914 4.08099,1.045 0.20681,0.763 0.42789,5.906 4.02751,-0.305 0.59369,7.94354 -4.03285,0.25246 -4.01146,0.305 -0.10519,-1.984 -1.98433,0.153 -0.73989,-9.859 -0.15155,-1.993 1.83101,-0.129 -0.14263,-2.098"},"55037":{"name":"Florence, WI","path":"m 640.48707,122.56414 0.32983,0.586 2.81159,-0.298 4.67647,0.587 0.0356,0 0.39937,0.06 0.61152,0.296 0.37797,0.252 0.24782,0.158 0.47246,0.676 0.0499,0.07 0.0232,0.08 -0.22465,0.385 -0.25673,0.362 -0.11232,0.09 -0.28169,0.36 -0.009,0.02 -0.0232,0.08 0.1034,0.201 0.0161,0 0.6133,0.498 0.1355,0.03 0.21751,0.06 0.016,0 0.21751,-0.03 0.11054,1.551 -1.91302,0.04 -3.98293,0.225 -4.02751,0.304 -0.42789,-5.906 -0.20681,-0.763"},"55075":{"name":"Marinette, WI","path":"m 650.93469,127.11214 3.79929,1.021 0.30488,0.248 0.025,0.02 0.041,0.04 0.48138,0.594 0.16045,4.147 -1.57876,3.41468 2.29013,0.005 0.8147,-0.84765 0.93194,0.82209 -1.03528,3.44506 0.001,0.002 10e-4,0.002 10e-4,0.002 10e-4,0.002 0.001,0.002 10e-4,0.002 10e-4,0.002 10e-4,0.003 0.14263,0.472 0.0731,0.122 1.2694,1.342 0.0161,0 0.41719,0.07 0.73097,0.115 -0.37728,0.80767 -0.13486,0.41462 0.0939,1.65545 -0.71366,0.13723 -1.36593,0.30349 -0.0337,-0.53413 -3.016,0.21145 -0.0225,-0.66944 -2.87349,0.1327 -0.14458,-1.9663 -1.10013,0.08 -0.19146,-1.94151 -1.9262,0.15121 -0.3016,-4.1719 -1.9772,0.1 -0.59369,-7.94354 3.98293,-0.224 1.91302,-0.04 -0.11054,-1.551"},"54003":{"name":"Berkeley, WV","path":"m 837.63683,244.94514 0.49145,0.54089 0.83697,-0.31276 0.67437,-0.0282 0.8573,-0.31277 0.63373,-0.0892 0.0831,0.60581 -0.77054,0.32126 0.776,1.21163 0.51177,0.27666 -0.31449,1.06568 -0.15154,0.321 -0.94136,1.43 -0.33518,0.224 -0.10697,0.245 -0.82012,2.118 -0.0321,0.137 -0.0414,0.48259 -3.95262,-2.14072 0.66715,-5.02787 0.041,-0.103 1.89341,-0.965"},"54037":{"name":"Jefferson, WV","path":"m 841.73101,247.15846 0.49876,0.0152 0.21889,1.24743 1.15384,0.14987 -0.0704,1.78348 0.68169,0.36071 -1.06259,4.66 -4.16336,-2.19341 0.0414,-0.48259 0.0321,-0.137 0.82012,-2.118 0.10697,-0.245 0.33518,-0.224 0.94136,-1.43 0.15154,-0.321 0.3145,-1.06568"},"54011":{"name":"Cabell, WV","path":"m 768.34511,281.00578 2.9661,2.09737 0.20977,1.20591 0.27338,1.05749 -0.34975,-0.004 -0.12033,0.24825 -0.40124,0.0721 -0.0801,0.14089 -0.19477,0.33589 -1.06586,0.36855 -0.32025,0.38002 9.4e-4,0.32266 -0.26289,-0.01 0.0927,0.64385 -0.50378,0.56356 -0.1826,0.80444 -0.27653,0.0614 -0.62067,-0.45478 -0.10446,-0.69568 0.10203,-0.27123 0.45764,-0.29418 -0.32241,-0.21388 -0.41901,-0.35173 -0.31577,0.21037 -0.0404,0.29067 -0.13223,0.17596 -3.00672,-1.92312 1.491,-0.81495 0.61454,0.032 0.82453,-0.31568 0.30947,-0.47668 0.0321,-0.153 0.0321,-0.167 0.0802,-1.648 0.007,-0.05 0.007,-1.005 0.25965,-0.24121 0.95936,0.0768"},"54059":{"name":"Mingo, WV","path":"m 768.70648,295.75151 1.88529,-0.86662 -0.0749,0.298 0.74412,1.07352 0.71495,0.24858 0.13627,0.3218 -0.0781,0.1263 0.21239,0.43293 -0.48156,0.44908 0.27695,0.23927 0.0349,0.41679 0.30923,-0.0189 0.27695,0.27154 0.14784,0.6266 -0.17926,0.12033 0.0317,0.36599 0.16075,-0.0455 0.33022,0.33371 0.2576,0.69684 0.68527,-0.15045 0.0478,0.17233 0.38919,0.3134 0.0261,0.25692 0.41339,0.18429 0.13338,0.30849 0.11724,-0.0546 -0.028,-0.23215 0.13337,-0.27251 0.35125,-0.0223 0.11724,-0.24829 0.206,0.01 0.0772,-0.16822 0.43224,-0.0633 -0.0438,0.20297 0.33541,0.20298 0.18209,-0.18436 0.15789,-0.023 0.0772,-0.28926 0.10947,-0.031 0.16325,0.27912 0.23897,0.002 0.2067,-0.20742 0.0745,0.20648 0.2278,0.0935 0.27939,-0.0814 0.20833,1.00396 -0.25398,0.10303 0.007,0.26899 -0.20871,0.32804 -0.0665,0.50586 -0.29169,0.13837 0.0639,0.3399 -1.0516,0.79991 -0.61561,-0.23406 -0.47543,-0.21776 -1.06878,0.37538 -1.17466,-0.26062 -10e-4,0 -0.001,0 -10e-4,0 -10e-4,0 -1.16569,-1.00328 -0.54941,-1.04892 -0.61789,0.36623 -1.32546,-0.77503 -0.67214,-1.035 -0.0339,-0.113 0.007,-0.02 -2.09154,-2.56421 1.56635,-2.25142"},"54099":{"name":"Wayne, WV","path":"m 763.72788,285.76644 3.00673,1.92312 0.13222,-0.17596 0.0404,-0.29067 0.31577,-0.21037 0.41901,0.35173 0.32242,0.21388 -0.45765,0.29418 -0.10202,0.27123 0.10445,0.69568 0.62068,0.45478 0.27652,-0.0614 -0.12728,0.71035 0.0522,1.35683 0.47171,0.23463 -0.10433,0.36353 0.24036,0.23708 0.3743,0.031 0.0215,0.45077 0.24811,0.152 0.41254,0.0554 -0.0408,0.32326 0.26872,0.0387 0.0137,0.40192 -1.53073,2.16345 -1.56635,2.25142 -1.63644,-1.67679 0.46533,-0.804 0,-0.129 -0.007,-0.02 -0.025,-0.03 -1.21519,-0.44384 -0.90506,-1.44203 -0.53578,-0.22658 -0.33398,-0.62528 0,-0.02 -0.80496,-0.43682 0.0189,-0.50545 0,0 0.44929,-1.967 0.24776,-0.7956 -0.0405,-0.9397 -0.60486,-0.69952 -0.14853,-1.22791 0.63191,0.19913 1.03196,-0.4411"},"54109":{"name":"Wyoming, WV","path":"m 781.56735,297.57714 0.51891,0.17931 0.0861,0.26587 0.25125,-0.0501 0.25125,-0.28977 0.28454,-0.32306 0.21796,-0.0168 0.0128,-0.11367 0.44103,0.0457 0.16645,0.12132 0.27494,-0.0236 0.21211,-0.11705 0.52663,0.6808 0.29311,0.0817 2.19949,2.96985 0.0548,0.17703 0.27406,0.22468 0.23532,0.864 0.69285,0.29209 0.48971,0.0123 0.49328,0.34859 -0.27867,0.11295 -0.0975,0.13417 -0.22556,0.0701 -0.16304,0.36436 -0.003,0.30033 -0.29108,0.24699 -0.0653,0.1663 -0.23598,0.17698 0.26553,0.0916 0.24418,0.49709 -0.0973,0.20899 -0.25732,-0.10045 -0.45069,-0.2122 -0.87878,-0.16102 -0.18697,-0.25516 -0.25307,-0.12758 -0.58746,0.35879 -0.39975,-0.14877 -0.11097,-0.42235 -0.33748,-0.1086 -0.44389,0.37768 -0.48948,0.013 -0.19481,-0.22181 -0.514,-0.009 -0.69639,0.14298 -0.13402,-0.23701 -0.14921,-0.26741 -0.0732,-0.2218 -0.14501,0.004 -0.14501,0.12543 -0.0994,0.15583 -0.26661,-0.0722 -0.0842,-0.10256 -0.17541,0.019 -0.12982,0.15583 -0.2514,0.0494 0.0222,0.27742 -0.25141,0.0646 -0.0842,0.20143 -0.373,0.019 -0.12981,0.12543 -0.4794,-0.28495 -0.11461,0.12543 -0.20751,-0.045 -0.13151,0.16777 -0.16191,-0.0146 -0.13151,-0.18181 -0.2683,0.10698 -0.2987,-0.12101 0.0133,-0.44918 -0.22127,-0.0352 -0.0553,-0.26279 -0.28854,0.0255 -0.0639,-0.3399 0.29169,-0.13837 0.0665,-0.50586 0.20872,-0.32804 -0.007,-0.26899 0.25398,-0.10303 -0.20833,-1.00396 0.31834,-0.414 0.58201,-0.188 0.43715,-0.43683 0.32414,-0.17317 -1.28727,-0.984 0.1725,-0.163 0.15367,-0.12533 0.34131,0.0188 0.83099,-0.50859 0.69915,-0.16958 0.47315,-0.32025"},"54045":{"name":"Logan, WV","path":"m 774.89352,293.07902 -0.4582,0.499 -0.18602,0.38962 0.10495,0.14998 0.43901,0.17996 0.33039,-0.16521 0.53712,0.0849 -0.11574,0.32496 0.36157,0.14905 0.46652,-0.13582 0.24163,0.0591 0.78136,-0.0458 0.18166,0.16403 0.34657,-8.8e-4 0.54148,0.46389 0.0917,0.56884 -0.26654,0.43757 0.13825,0.28765 0.51307,0.22767 0.0483,0.31763 0.21322,0.0328 0.0183,0.1827 0.27319,0.13772 0.73172,-0.58026 0.49183,-0.0555 0.40188,0.55917 0.22197,0.0344 0.22464,0.232 -0.47315,0.32025 -0.69915,0.16958 -0.83099,0.50859 -0.34131,-0.0188 -0.15367,0.12533 -0.1725,0.163 1.28727,0.984 -0.32414,0.17317 -0.43715,0.43683 -0.58201,0.188 -0.31834,0.414 -0.27939,0.0814 -0.2278,-0.0935 -0.0745,-0.20648 -0.2067,0.20742 -0.23897,-0.002 -0.16325,-0.27911 -0.10947,0.031 -0.0772,0.28926 -0.15789,0.023 -0.18209,0.18435 -0.33541,-0.20297 0.0439,-0.20298 -0.43225,0.0633 -0.0772,0.16821 -0.206,-0.01 -0.11724,0.24829 -0.35124,0.0224 -0.13338,0.2725 0.028,0.23215 -0.11724,0.0546 -0.13338,-0.30849 -0.41339,-0.18429 -0.0261,-0.25692 -0.38919,-0.3134 -0.0478,-0.17233 -0.68527,0.15044 -0.2576,-0.69683 -0.33022,-0.33371 -0.16076,0.0455 -0.0317,-0.36599 0.17926,-0.12033 -0.14784,-0.6266 -0.27695,-0.27154 -0.30923,0.0189 -0.0349,-0.41679 -0.27695,-0.23927 0.48156,-0.44908 -0.21239,-0.43293 0.0781,-0.1263 -0.13627,-0.3218 -0.71495,-0.24858 -0.74412,-1.07352 0.0749,-0.298 2.38359,-1.29324 0.27917,0.004 0.7311,-0.35087 0.36709,0.0132 0.5408,-0.17846"},"54047":{"name":"McDowell, WV","path":"m 777.98044,303.72929 0.28854,-0.0255 0.0553,0.26279 0.22127,0.0352 -0.0133,0.44918 0.2987,0.12101 0.2683,-0.10698 0.13151,0.18181 0.16191,0.0146 0.13151,-0.16777 0.20751,0.045 0.11461,-0.12543 0.4794,0.28495 0.12981,-0.12543 0.373,-0.019 0.0842,-0.20143 0.25141,-0.0646 -0.0222,-0.27742 0.2514,-0.0494 0.12982,-0.15583 0.17541,-0.019 0.0842,0.10256 0.26661,0.0722 0.0994,-0.15583 0.14501,-0.12543 0.14501,-0.004 0.0732,0.2218 0.14921,0.26741 0.13402,0.23701 0.69639,-0.14298 0.514,0.009 0.19481,0.22181 0.48948,-0.013 0.44389,-0.37768 0.33748,0.1086 0.11097,0.42235 0.39975,0.14877 0.58746,-0.35879 0.25307,0.12758 0.18697,0.25516 0.87878,0.16102 0.45069,0.2122 -0.65775,1.95828 -0.73081,1.47971 -1.31819,1.39732 -0.0143,0.02 -0.78803,0.724 -0.0571,0.03 -2.10557,0.417 -1.20344,-0.715 -2.04316,-0.738 -0.2086,-0.107 -0.007,0 -1.51188,-1.317 -0.25279,-1.45867 -1.2983,-0.74333 -0.12837,-0.344 0.0481,-0.153 0.8112,-0.731 0.0558,-0.36194 1.0516,-0.79991"},"54055":{"name":"Mercer, WV","path":"m 791.53723,300.66169 5.00979,3.03845 0.0637,0.64462 -0.30226,0.53279 0.78543,0.69544 -0.91469,0.95821 -1.28846,0.64194 -2.09844,0.75374 -2.09844,1.27126 -3.01257,-2.06603 0.65775,-1.95828 0.25732,0.10045 0.0973,-0.20899 -0.24418,-0.49709 -0.26553,-0.0916 0.23598,-0.17698 0.0653,-0.16631 0.29108,-0.24698 0.003,-0.30033 0.16304,-0.36436 0.22556,-0.0701 0.0975,-0.13416 0.27867,-0.11296 0.24371,-0.12574 -0.0215,-0.35911 0.11397,-0.35763 -0.22549,-0.42128 0.15844,-0.36257 0.32817,-0.10797 0.19027,-0.2671 0.29635,-0.20344 0.48525,0.0773 0.42405,-0.11513"},"54063":{"name":"Monroe, WV","path":"m 798.72753,296.19886 2.92634,0.45091 0.66879,-0.18868 0.22956,0.13341 0.31741,-0.0569 0.80055,-0.81823 0.0105,0.28476 0.21551,0.0359 0.0691,0.22619 0.36423,-0.0176 0.11534,-0.45681 0.12998,0.041 -0.002,0.27522 0.29102,0.0849 0.75953,-0.13472 1.58497,1.239 -1.03585,1.254 -0.61483,0.583 0.19841,0.51441 -0.32403,0.25313 0.48918,0.13554 0.27483,-0.33694 0.20625,0.12356 -0.17587,0.51549 -0.35996,0.37137 -0.71269,0.38118 -0.0758,0.28319 -0.77148,0.56734 -0.86531,0.79473 -0.86112,-1.237 -1.80783,1.429 -0.18542,0.147 -2.23394,1.677 -1.78465,-1.021 0.7202,-2.55879 0.41859,-0.99384 1.04735,-3.21271 -0.027,-0.76794"},"54089":{"name":"Summers, WV","path":"m 796.59448,293.90705 0.68842,0.54544 0.21376,0.27423 1.05618,0.72477 0.17469,0.74737 0.027,0.76794 -1.04735,3.21271 -0.41859,0.99384 -0.7202,2.55879 -0.0214,-0.03 -5.00979,-3.03845 0.40718,-0.45039 0.0336,-0.83147 0.79694,-1.01657 0.48897,-0.42367 -0.13525,-0.23408 -0.027,-0.2127 0.29911,0.008 0.4058,-0.11163 0.31245,0.25517 0.29243,-0.0516 0.26676,0.27234 0.0474,0.29676 0.32025,-0.20568 0.014,-0.28926 -0.25273,-0.15588 -0.2794,-0.52268 -0.49282,-0.29593 0.40849,-0.47311 0.0319,-0.3349 -0.51928,-0.33399 -0.11913,-0.4407 -0.22464,-0.137 -0.14441,-0.03 2.23479,-1.46701 z"},"54081":{"name":"Raleigh, WV","path":"m 783.674,292.65364 0.0561,0.20099 0.62698,0.15419 0.14029,-0.20148 0.59891,0.0138 0.5259,-0.23506 0.4262,0.17817 0.0541,0.28449 0.53251,0.12502 0.0143,0.36421 0.16044,0.4971 -0.0256,0.32435 0.93116,0.0187 3.26991,-0.32679 -0.029,0.28591 -0.48167,0.15342 0.1163,0.18001 0.63455,-0.20536 0.22261,0.087 -0.21591,0.27303 0.15617,0.15342 0.32891,-0.0592 0.17775,0.0568 1.01241,-0.244 0.56061,0.2078 0.14441,0.03 0.22464,0.137 0.11913,0.4407 0.51928,0.33399 -0.0319,0.3349 -0.40848,0.47311 0.49281,0.29593 0.27941,0.52268 0.25273,0.15588 -0.014,0.28926 -0.32025,0.20568 -0.0474,-0.29676 -0.26676,-0.27234 -0.29243,0.0516 -0.31245,-0.25513 -0.4058,0.11167 -0.29911,-0.008 0.027,0.2127 0.13525,0.23408 -0.48897,0.42367 -0.79694,1.01657 -0.0336,0.83147 -0.40718,0.45039 -0.42405,0.11513 -0.48525,-0.0773 -0.29635,0.20344 -0.19027,0.2671 -0.32817,0.10797 -0.15844,0.36257 0.22549,0.42128 -0.11397,0.35763 0.0215,0.35911 -0.24371,0.12574 -0.49328,-0.34859 -0.48971,-0.0123 -0.69285,-0.29209 -0.23532,-0.864 -0.27406,-0.22468 -0.0548,-0.17703 -2.19949,-2.96985 -0.29311,-0.0817 -0.52663,-0.6808 -0.21211,0.11705 -0.27494,0.0236 -0.16645,-0.12132 -0.44103,-0.0457 -0.18051,-0.23454 0.0725,-0.39118 -0.28896,-0.12609 -0.26485,0.0788 -0.4938,-0.94545 0.18097,-0.60807 -0.11444,-0.1227 -0.0301,-0.41188 -0.27108,-0.11065 0.31934,-1.0746 0.36753,-0.23114 0.24704,-0.38779 0.41573,0.20264 0.0784,-0.195 0.44605,-0.0177"},"54005":{"name":"Boone, WV","path":"m 783.674,292.65364 -0.44605,0.0177 -0.0784,0.195 -0.41573,-0.20264 -0.24704,0.38779 -0.36753,0.23114 -0.31934,1.0746 0.27108,0.11065 0.0301,0.41188 0.11444,0.1227 -0.18097,0.60807 0.4938,0.94545 0.26485,-0.0788 0.28896,0.12609 -0.0725,0.39118 0.18051,0.23454 -0.0129,0.11367 -0.21796,0.0168 -0.28454,0.32306 -0.25125,0.28977 -0.25125,0.0501 -0.0861,-0.26587 -0.51891,-0.17931 -0.22464,-0.232 -0.22197,-0.0344 -0.40188,-0.55917 -0.49183,0.0555 -0.73172,0.58026 -0.27319,-0.13772 -0.0183,-0.1827 -0.21322,-0.0328 -0.0483,-0.31763 -0.51307,-0.22767 -0.13825,-0.28765 0.26654,-0.43757 -0.0917,-0.56884 -0.54148,-0.46389 -0.34657,8.8e-4 -0.18166,-0.16403 -0.78136,0.0459 -0.24163,-0.0591 -0.46652,0.13582 -0.36157,-0.14905 0.11574,-0.32496 -0.53712,-0.0849 -0.33039,0.16521 -0.43901,-0.17996 -0.10495,-0.14998 0.18602,-0.38962 0.4582,-0.499 0.26505,-0.13812 0.24297,-0.0507 -0.24788,-0.12428 -0.4344,-0.003 -0.42212,-0.11358 -0.18898,-0.70259 0.40004,-0.71486 -0.18223,-0.31063 0.30862,-0.7892 0.63993,0.10658 -0.12838,-0.25865 0.15385,-0.24639 -0.018,-0.36909 0.60788,-0.11141 0.24051,-0.71486 0.21419,0.20394 0.0607,0.25691 0.40799,0.14517 -0.21456,-0.23874 -0.0589,-0.31137 0.40799,-0.19724 -0.0382,-0.47738 0.55326,0.15554 0.16934,0.39419 0.24985,0.11152 0.23948,-0.32427 -0.0724,-0.16926 0.39449,-0.3249 0.2596,0.17314 0.66427,-0.16926 0.29136,0.96234 0.21256,0.13427 0.1503,-0.1355 0.29557,0.0201 0.46159,0.60119 0.29556,0.072 0.24369,-0.094 0.25407,0.15502 0.0492,0.32653 0.485,0.16052 0.005,0.21919 -0.25424,0.23993 0.0259,0.40595 0.31644,0.0636 0.0259,0.16731 0.3372,0.0117 0.19192,-0.16472 0.0882,0.11543 0.20778,0.0531 0.0418,0.19841 0.14014,0.22599 0.20239,0.13261 -0.11926,0.309 0.33729,0.23636 0.021,0.46818"},"54043":{"name":"Lincoln, WV","path":"m 771.79436,285.36655 0.25633,0.92807 -0.0234,1.02797 0.23364,0.0519 0.12036,0.13393 0.2727,-0.0419 0.0422,0.13772 0.15942,-0.0185 0.19458,0.0127 0.05,-0.15916 0.17505,-0.0615 1.06292,-1.25676 0.20426,-0.0155 0.23473,0.15716 0.68152,-0.0309 0.31582,-0.27474 0.40817,0.14127 0.0342,0.33334 0.12559,0.0997 0.0342,0.21144 0.14683,0.0839 0.0148,0.1753 -0.11728,0.12451 0.12652,0.14483 -0.097,0.1042 0.15699,0.1753 -0.24934,0.27689 0.12839,0.0819 0.15886,0.18344 -0.0646,0.092 -0.27795,-0.0908 0.0167,0.1936 -0.19668,-0.0705 -0.0748,0.0819 0.0824,0.23843 -0.24051,0.71486 -0.60788,0.11141 0.018,0.36909 -0.15385,0.24639 0.12838,0.25865 -0.63993,-0.10658 -0.30862,0.7892 0.18223,0.31063 -0.40004,0.71486 0.18898,0.70259 0.42212,0.11358 0.4344,0.003 0.24788,0.12428 -0.24297,0.0507 -0.26505,0.13812 -0.5408,0.17846 -0.36709,-0.0131 -0.7311,0.35086 -0.27917,-0.004 -2.38359,1.29324 -1.88529,0.86662 1.53073,-2.16345 -0.0137,-0.40192 -0.26872,-0.0387 0.0408,-0.32326 -0.41254,-0.0554 -0.24811,-0.152 -0.0215,-0.45077 -0.3743,-0.031 -0.24036,-0.23708 0.10433,-0.36353 -0.47171,-0.23463 -0.0522,-1.35683 0.12728,-0.71035 0.1826,-0.80444 0.50378,-0.56356 -0.0927,-0.64385 0.26289,0.01 -9.4e-4,-0.32266 0.32025,-0.38002 1.06586,-0.36855 0.19477,-0.33589 0.0801,-0.14089 0.40124,-0.0721 0.12033,-0.24825 0.34975,0.004"},"54079":{"name":"Putnam, WV","path":"m 777.18035,278.67538 -0.39632,0.67612 -0.30135,0.0657 -0.15823,0.41179 0.18233,0.70966 -0.0236,0.55889 0.20595,0.15078 0.0841,0.297 0.19887,0.0292 0.24706,0.8054 -2.86484,2.02976 -0.016,1.712 -1.06293,1.25677 -0.17504,0.0615 -0.05,0.15915 -0.19458,-0.0127 -0.15942,0.0185 -0.0422,-0.13771 -0.27271,0.0418 -0.12035,-0.13393 -0.23364,-0.0519 0.0234,-1.02797 -0.25633,-0.92807 -0.27338,-1.05749 -0.20977,-1.20591 -0.59746,-3.0274 1.83559,-1.45541 3.07186,-1.0653 0.38198,-0.12055 1.17717,1.24089"},"54053":{"name":"Mason, WV","path":"m 772.6112,273.61585 -0.025,0.05 0.1765,0.273 2.3666,2.51238 -0.36251,0.48314 0.85437,0.61567 -3.07186,1.0653 -1.83559,1.45541 0.59746,3.0274 -2.9661,-2.09737 0.48075,-0.29264 0.15439,-0.65961 -0.58401,-1.27002 0.1326,-0.76881 -0.3162,-0.42721 -0.18931,-0.57821 -0.436,-0.441 0.0418,-0.46301 0.51741,-0.3752 0.54204,-0.58761 0.0866,-0.63721 -0.20486,-0.71432 -0.005,0 0.25498,-0.35095 0.35654,-1.34384 0.0553,-0.32 0.50086,-0.50071 0.31926,-0.88829 0.34364,0.0586 0.53115,0.74639 0.009,0 0.65553,-0.11682 0.79983,1.16839 -0.43812,0.81403 0.0642,0.178 0.59427,0.3921"},"54035":{"name":"Jackson, WV","path":"m 777.90148,269.25231 0.92566,0.33025 -0.0274,0.36238 0.1439,0.23388 -0.37013,0.36238 0.32596,0.33025 0.22958,0.0947 0.13319,0.3838 0.30454,0.11608 -0.0142,0.3353 -0.35702,0.11495 0.40044,2.02423 0.15559,2.36701 -0.12954,0.86547 0.67134,1.31468 -0.23607,0.27586 -0.56137,0.64935 -0.97102,0.73369 -1.34451,-1.47114 -1.17717,-1.2409 -0.38198,0.12056 -0.85437,-0.61567 0.36251,-0.48314 -2.3666,-2.51238 -0.1765,-0.273 0.025,-0.05 0.89662,-0.36071 0.20808,-1.07641 0.15641,-0.35294 0.71903,0.39442 0.58984,-0.19985 -0.0589,-0.53743 -0.42066,-0.30488 0.29838,-1.00015 -0.32542,-0.52738 -0.61309,-0.40438 -0.19255,-0.252 -0.0874,-0.313 0.63156,-0.0762 0.46937,-0.40138 3.01899,1.04872"},"54039":{"name":"Kanawha, WV","path":"m 777.18035,278.67538 1.34451,1.47114 0.97102,-0.73369 0.56137,-0.64935 0.23607,-0.27586 0.42491,0.73978 0.64443,0.63215 0.22102,-0.1117 2.76153,-0.11169 0.76852,0.2703 0.83719,-0.34766 0.48138,0.02 -1.32634,1.47986 0.86647,2.55122 0.69256,2.03782 -0.002,0 -0.002,0 -0.002,0 -0.002,0 -1.09965,2.00214 -0.3033,0.0611 -0.15867,5.09925 -0.59891,-0.0138 -0.14029,0.20148 -0.62698,-0.15419 -0.0561,-0.20099 -0.021,-0.46818 -0.33728,-0.23637 0.11926,-0.30899 -0.2024,-0.13261 -0.14014,-0.22599 -0.0418,-0.19841 -0.20778,-0.0531 -0.0882,-0.11543 -0.19194,0.16473 -0.33719,-0.0117 -0.0259,-0.1673 -0.31644,-0.0636 -0.0259,-0.40595 0.25424,-0.23993 -0.005,-0.21919 -0.485,-0.16052 -0.0492,-0.32653 -0.25407,-0.15502 -0.24369,0.094 -0.29556,-0.072 -0.46159,-0.60119 -0.29557,-0.0201 -0.1503,0.1355 -0.21256,-0.13427 -0.29136,-0.96234 -0.66426,0.16926 -0.25961,-0.17315 -0.39449,0.32486 0.0724,0.16926 -0.23947,0.32427 -0.24986,-0.11151 -0.16935,-0.3942 -0.55324,-0.15554 0.0382,0.47738 -0.40798,0.19724 0.0589,0.31137 0.21457,0.23873 -0.408,-0.14516 -0.0607,-0.25691 -0.21419,-0.20394 -0.0824,-0.23843 0.0748,-0.0819 0.19668,0.0705 -0.0166,-0.1936 0.27795,0.0908 0.0646,-0.092 -0.15886,-0.18344 -0.12839,-0.0819 0.24934,-0.27689 -0.15699,-0.1753 0.097,-0.1042 -0.12652,-0.14483 0.11728,-0.12451 -0.0148,-0.1753 -0.14683,-0.0839 -0.0342,-0.21144 -0.12559,-0.0997 -0.0342,-0.33334 -0.40817,-0.14127 -0.31582,0.27474 -0.68152,0.0309 -0.23473,-0.15716 -0.20426,0.0155 0.016,-1.712 2.86484,-2.02976 -0.24706,-0.8054 -0.19887,-0.0292 -0.0841,-0.297 -0.20595,-0.15078 0.0236,-0.55889 -0.18233,-0.70966 0.15823,-0.41179 0.30135,-0.0657 0.39632,-0.67612"},"54019":{"name":"Fayette, WV","path":"m 793.52999,288.31948 -0.0875,0.61677 0.3959,0.35433 0.67213,0.0367 0.0368,-0.28102 0.50639,-0.0738 -0.0185,0.16097 -0.17257,0.10316 0.0423,0.22036 -0.25071,0.13247 0.11066,0.23013 0.55017,0.0446 0.0496,0.23334 0.27427,0.14543 -0.0187,0.40913 0.28404,0.10637 -0.55347,0.98217 1.35103,1.65607 -0.99914,0.0781 -2.23479,1.46351 -0.5606,-0.20779 -1.01242,0.24401 -0.17775,-0.0568 -0.32891,0.0592 -0.15617,-0.15342 0.21591,-0.27303 -0.22261,-0.087 -0.63455,0.20536 -0.1163,-0.18001 0.48167,-0.15342 0.029,-0.28591 -3.26991,0.32679 -0.93116,-0.0187 0.0256,-0.32435 -0.16044,-0.4971 -0.0143,-0.36421 -0.53251,-0.12502 -0.0541,-0.28449 -0.4262,-0.17817 -0.5259,0.23506 0.15867,-5.09925 0.3033,-0.061 1.09965,-2.00214 0.80047,0.29063 0.0806,0.2806 0.6397,0.0626 0.29045,-0.28958 0.82567,0.54171 0.18349,0.007 0.17396,0.1799 0.19196,-0.0213 -0.12533,-0.35034 0.24486,-0.017 -0.14831,-0.24351 0.29151,-0.0569 0.0849,-0.34347 0.11825,-0.0769 0.0516,0.10301 -0.0417,0.33624 0.27152,0.16298 0.0449,0.16298 0.0983,0.0564 0.0982,-0.0903 -0.035,-0.31682 0.39146,-0.0703 0.3315,0.12966 0.0516,0.26295 0.22469,-0.0471 0.18471,0.15281 0.0314,0.57264 0.24468,0.27943 0.34465,0.22612 0.26467,0.0195 -0.007,0.23146 0.2261,0.12482 0.0928,-0.25501 0.14971,-0.0742 -0.0102,0.47225 0.21136,0.2661"},"54015":{"name":"Clay, WV","path":"m 788.11088,277.21881 0.71666,-1.34064 1.05121,0.78604 0.0113,0.3203 0.19836,0.071 0.0746,0.29776 0.67721,0.19387 0.38632,0.33931 0.11621,0.46398 0.45904,0.23543 0.28243,0.58865 0.98391,0.11764 0.19255,0.339 -1.25473,1.67406 -5.34106,4.34556 -0.69256,-2.03782 -0.86647,-2.55122 1.32634,-1.47986 0.97662,-1.0785 0.70196,-1.28449"},"54087":{"name":"Roane, WV","path":"m 779.56674,271.46598 0.13612,-0.19455 0.3572,-0.0437 0.31437,-0.38642 0.76795,0.33019 1.34623,0.37303 0.55896,-0.40576 0.50691,-0.19766 0.30985,0.0718 0.17751,0.42904 0.30657,0.22356 -8e-5,0.58353 0.17324,0.13023 0.11991,-0.0964 0.31989,0.35688 -0.0134,0.99684 0.30656,0.0636 0.8166,1.00915 0.003,0.35587 0.19082,0.47894 -0.0758,0.47895 0.2554,0.15281 0.14874,0.57944 0.67078,0.22563 0.34996,-0.2041 0.49659,0.44201 -0.70196,1.28449 -0.97662,1.0785 -0.48138,-0.02 -0.83718,0.34766 -0.76853,-0.2703 -2.76153,0.1117 -0.22102,0.11169 -0.64443,-0.63215 -0.42491,-0.73978 -0.67134,-1.31468 0.12954,-0.86547 -0.15559,-2.36701 -0.40044,-2.02423 0.35702,-0.11495 0.0142,-0.3353"},"54013":{"name":"Calhoun, WV","path":"m 787.59398,268.21922 -0.003,0.35003 0.54051,0.34022 0.21699,0.83694 -0.0899,0.30912 0.38313,1.59311 -0.10344,0.7146 -0.31968,0.13342 0.0588,0.21452 -0.37375,0.41725 0.11606,0.25975 0.1566,0.03 0.0485,0.23271 0.21147,0.0616 0.1439,-0.12766 0.0956,0.20986 0.14966,-0.0199 0.24527,0.12238 0.39664,0.70108 -0.64005,1.28 -0.71666,1.34064 -0.49659,-0.44201 -0.34996,0.2041 -0.67078,-0.22563 -0.14874,-0.57945 -0.2554,-0.15281 0.0758,-0.47894 -0.19082,-0.47894 -0.003,-0.35587 -0.81659,-1.00916 -0.30657,-0.0636 0.0134,-0.99684 -0.31989,-0.35687 -0.11991,0.0964 -0.17324,-0.13023 8e-5,-0.58353 -0.30657,-0.22356 -0.17751,-0.42904 -0.30985,-0.0718 -0.009,-0.25146 0.15592,-0.0573 -0.10613,-0.22234 1.63116,-2.41579 0.17837,-0.24896 0.5919,-0.18004 0.15319,0.32352 0.35995,0.22506 0.64057,0.0971 0.33013,-0.12869 0.11351,0.13715"},"54105":{"name":"Wirt, WV","path":"m 785.22636,267.99415 -1.63116,2.41579 0.10613,0.22234 -0.15592,0.0573 0.009,0.25146 -0.50691,0.19766 -0.55896,0.40576 -1.34623,-0.37303 -0.76795,-0.33019 -0.31437,0.38642 -0.3572,0.0437 -0.13612,0.19455 -0.30454,-0.11608 -0.13319,-0.3838 -0.22958,-0.0947 -0.32596,-0.33025 0.37013,-0.36238 -0.1439,-0.23388 0.0274,-0.36238 -0.92566,-0.33025 0.39574,-0.68266 1.95822,-2.33196 0.36102,-0.006 1.57628,-1.3771 -0.28117,1.00766 0.699,0.19084 0.67622,0.74887 0.0349,0.54012 -0.16465,0.2461 0.3919,0.10959 0.0874,0.2986 0.40802,0.13596 0.198,-0.28408 0.60753,-0.0111 z"},"54107":{"name":"Wood, WV","path":"m 780.58321,261.64125 0.29676,0.13303 0.18791,0.0885 0.22303,-0.0872 -0.002,0.26477 0.1826,0.25598 0.4285,-0.0426 0.63928,-0.0514 0.12111,0.37016 0.29677,0.13303 -0.39667,0.34898 -0.0969,0.63158 -0.2254,0.41749 -0.0456,0.75147 -1.57628,1.3771 -0.36102,0.006 -1.95822,2.33196 -0.39574,0.68266 -3.01899,-1.04872 -0.0805,-1.17027 -0.25733,-0.95418 0.35419,-0.78091 0.37399,-0.15526 0.01,-0.40555 0.11075,-0.64801 0.36444,-0.23575 1.60119,-0.10891 -0.0478,-1.7262 0.93392,-0.84213 0.46015,-0.84476 0.33743,-0.0942 0.20147,0.02 0.31833,0.31636 0.50444,0.93337 0.51657,0.1381"},"54073":{"name":"Pleasants, WV","path":"m 786.76043,260.26987 -0.38097,0.059 -0.15871,0.42412 -0.24603,0.2495 -0.42066,-0.0839 -0.29804,0.22062 -0.21865,0.0619 -0.32185,0.27619 -0.21866,-0.0255 -0.40916,0.29207 -0.39329,-0.14452 -0.0281,0.18093 -0.43298,0.0142 -0.14488,0.47158 0.0319,0.40025 -0.16299,0.0391 -0.29677,-0.13303 -0.12111,-0.37016 -0.63928,0.0514 -0.4285,0.0426 -0.1826,-0.25598 0.002,-0.26477 -0.22303,0.0872 -0.18791,-0.0885 -0.29676,-0.13303 1.72165,-1.51403 0.75571,0.0273 0.16549,-0.72393 0.41144,-0.61617 0.70217,-0.33358 0.23267,-0.42748 0.41959,0.0142 0.23178,-0.28091 0.38418,-0.17397 0.51832,0.14797 0.63422,2.50927"},"54085":{"name":"Ritchie, WV","path":"m 786.76043,260.26987 0.23818,0.16935 0.15276,-0.17234 0.51581,0.0732 0.22749,-0.65285 -0.0288,-0.22574 0.0566,-0.32184 0.56675,0.13844 0.48133,0.38404 0.0435,0.36268 -0.10597,0.48013 0.20885,0.61942 -0.40951,0.54387 2.42024,3.56746 0.008,0.22064 -0.10354,0.15009 -0.20097,0.086 -0.0407,0.17042 -0.35285,-0.0237 -0.0406,0.24636 -0.0782,0.15009 -0.1373,-0.0777 -0.1779,0.27127 -0.20321,0.0519 -0.0214,0.19388 -0.36738,0.2867 -0.25768,0.0589 -0.18175,0.22763 -0.24591,0.0325 -0.11934,0.28558 -0.22904,0.007 -0.0265,0.14215 -0.12601,0.0373 -0.15133,0.26514 -0.17664,0.0289 -0.30321,0.17233 -0.11351,-0.13714 -0.33013,0.1287 -0.64057,-0.0971 -0.35995,-0.22506 -0.15319,-0.32352 -0.5919,0.18004 -0.17837,0.24896 -0.37652,-0.15701 -0.60753,0.011 -0.198,0.28402 -0.40802,-0.13601 -0.0874,-0.29859 -0.3919,-0.10957 0.16465,-0.24609 -0.0349,-0.54011 -0.67622,-0.74882 -0.699,-0.19074 0.28117,-1.00755 0.0456,-0.75147 0.2254,-0.41749 0.0969,-0.63158 0.39667,-0.34898 0.16299,-0.0391 -0.0319,-0.40025 0.14488,-0.47158 0.43298,-0.0142 0.0281,-0.18093 0.39329,0.14452 0.40916,-0.29207 0.21866,0.0255 0.32185,-0.27619 0.21865,-0.0619 0.29804,-0.22062 0.42066,0.0839 0.24603,-0.2495 0.15871,-0.42412 0.38097,-0.059"},"54021":{"name":"Gilmer, WV","path":"m 791.12778,265.23574 1.49859,0.0162 0.53089,1.99508 2.41632,1.99507 -0.35257,0.14689 -0.18185,0.20232 -0.082,0.21771 -0.24086,-0.0196 -0.1199,0.17047 -0.15446,-0.11466 -0.17174,-0.11465 -2.95587,3.14553 -1.84671,1.73703 -0.39664,-0.70108 -0.24527,-0.12238 -0.14966,0.0199 -0.0956,-0.20988 -0.1439,0.12766 -0.21147,-0.0616 -0.0485,-0.23271 -0.1566,-0.03 -0.11606,-0.25975 0.37375,-0.41725 -0.0588,-0.21452 0.31968,-0.13342 0.10344,-0.7146 -0.38313,-1.59311 0.0899,-0.30912 -0.21699,-0.83694 -0.54051,-0.34022 0.003,-0.35003 0.30321,-0.17233 0.17664,-0.0289 0.15133,-0.26514 0.12601,-0.0373 0.0265,-0.14215 0.22904,-0.007 0.11934,-0.28558 0.24591,-0.0325 0.18175,-0.22763 0.25768,-0.0589 0.36738,-0.2867 0.0214,-0.19388 0.20321,-0.0519 0.1779,-0.27127 0.1373,0.0777 0.0782,-0.15009 0.0406,-0.24636 0.35285,0.0237 0.0406,-0.17042 0.20097,-0.086 0.10354,-0.15009 -0.008,-0.22064"},"54007":{"name":"Braxton, WV","path":"m 795.57358,269.23714 0.42037,0.97049 0.50736,-0.21635 0.19696,0.24305 0.1597,-0.0239 0.16591,-0.20393 0.35216,0.11889 0.13487,0.17475 0.22179,0.0196 0.18453,0.21201 0.16592,0.063 -0.10104,0.39205 0.0169,0.31134 0.11625,0.1313 0.17832,-0.0984 0.18454,0.13751 -0.0265,0.18717 0.12246,0.13131 0.21156,-0.0582 0.0755,0.12634 -0.14648,0.27233 0.0961,0.26738 -0.0731,0.266 -0.61171,2.23689 -2.0708,3.1054 -1.20046,0.0227 -0.44207,0.30322 -0.83686,-0.65256 -1.49135,1.49795 -0.28243,-0.58865 -0.45904,-0.23542 -0.11621,-0.46398 -0.38632,-0.33932 -0.67721,-0.19387 -0.0746,-0.29776 -0.19836,-0.071 -0.0113,-0.3203 -1.05121,-0.78604 0.64005,-1.28 1.84671,-1.73703 2.95587,-3.14553 0.17174,0.11465 0.15446,0.11466 0.1199,-0.17047 0.24086,0.0196 0.082,-0.21771 0.18185,-0.20232 0.35257,-0.14689"},"54067":{"name":"Nicholas, WV","path":"m 796.05506,278.00314 -0.34766,0.676 0.90909,1.6429 -0.34537,0.39996 0.87775,1.11737 0.11059,-0.19361 3.68947,1.6684 -1.44591,1.849 -2.39617,2.908 -0.33697,0.348 -3.23989,-0.0967 -0.21136,-0.26611 0.0102,-0.47225 -0.14971,0.0742 -0.0928,0.255 -0.2261,-0.12482 0.007,-0.23146 -0.26467,-0.0195 -0.34465,-0.22613 -0.24468,-0.27944 -0.0314,-0.57265 -0.18471,-0.15283 -0.22469,0.0471 -0.0516,-0.26301 -0.3315,-0.12972 -0.39146,0.0702 0.035,0.31676 -0.0983,0.0902 -0.0983,-0.0564 -0.0449,-0.16304 -0.27152,-0.16304 0.0417,-0.33631 -0.0516,-0.10307 -0.11825,0.0769 -0.0849,0.34341 -0.29151,0.0569 0.14831,0.24345 -0.24486,0.0169 0.12533,0.35134 -0.19196,0.0213 -0.17396,-0.1799 -0.18349,-0.007 -0.82567,-0.54171 -0.29045,0.28958 -0.6397,-0.0626 -0.0806,-0.2806 -0.80047,-0.29063 0.007,0 5.34106,-4.34556 1.25473,-1.67406 -0.19255,-0.339 -0.98391,-0.11764 1.49135,-1.49795 0.83686,0.65256 0.44207,-0.30322 1.20046,-0.0227"},"54025":{"name":"Greenbrier, WV","path":"m 802.45902,284.03814 0.36371,2.564 2.00929,1.253 0.98593,0.06 0.74702,-0.102 1.02158,-0.637 2.57803,-0.618 -1.24444,2.836 -2.00185,3.13195 -1.29467,3.53605 -0.75953,0.13472 -0.29102,-0.0849 0.002,-0.27522 -0.12998,-0.041 -0.11534,0.45681 -0.36423,0.0176 -0.0691,-0.22619 -0.21551,-0.0359 -0.0105,-0.28476 -0.80055,0.81823 -0.31741,0.0569 -0.22956,-0.13341 -0.66878,0.18868 -2.92635,-0.45091 -0.17468,-0.74737 -1.05619,-0.72477 -0.21376,-0.27422 -0.68842,-0.54545 -0.89183,-0.43244 0.99914,-0.0781 -1.35103,-1.65607 0.55348,-0.98217 -0.28405,-0.10637 0.0187,-0.40913 -0.27427,-0.14543 -0.0496,-0.23334 -0.55017,-0.0446 -0.11066,-0.23013 0.25071,-0.13247 -0.0423,-0.22036 0.17257,-0.10317 0.0185,-0.16096 -0.50639,0.0738 -0.0368,0.28102 -0.67213,-0.0367 -0.3959,-0.35433 0.0875,-0.61677 3.23989,0.0967 0.33697,-0.348 2.39617,-2.908 1.44591,-1.849 1.51009,0.724"},"54101":{"name":"Webster, WV","path":"m 798.73757,272.66085 1.23791,0.009 0.37947,-0.19095 0.67243,0.26475 0.41202,0.65535 0.63987,-0.32115 2.34091,3.593 -0.56339,3.309 -1.29258,1.456 -0.42789,-0.151 0.3227,2.754 -1.51009,-0.724 -3.68948,-1.6684 -0.11058,0.19361 -0.87775,-1.11737 0.34537,-0.39996 -0.90909,-1.6429 0.34766,-0.676 2.0708,-3.1054 0.61171,-2.23689"},"54097":{"name":"Upshur, WV","path":"m 800.16982,263.78814 0.85882,-0.005 0.13272,-0.41022 0.24398,-0.002 0.27726,0.36902 0.84689,0.011 0.84689,1.15022 1.15161,-0.16001 0.3704,0.53982 -0.13412,0.9467 -0.23177,0.50727 -0.18753,1.3697 0.36582,1.1093 -0.12302,2.248 -1.9362,0.371 -0.5723,1.244 -0.63987,0.32115 -0.41203,-0.65535 -0.67242,-0.26475 -0.37947,0.19095 -0.45106,-0.885 -0.005,-2.506 0.016,-0.241 0.53438,-1.06278 -0.0903,-0.36177 0.36238,-0.40078 -0.45982,-0.8448 0.27982,-0.49944 0.008,-2.07343"},"54041":{"name":"Lewis, WV","path":"m 794.76237,263.19514 0.81435,0.12265 0.21283,0.18665 1.14306,-0.20743 0.34958,0.17651 2.88763,0.31462 -0.008,2.07343 -0.27982,0.49944 0.45982,0.8448 -0.36238,0.40078 0.0903,0.36177 -0.53438,1.06278 -0.016,0.241 0.005,2.506 0.45106,0.885 -1.23791,-0.009 0.0731,-0.266 -0.0961,-0.26738 0.14648,-0.27233 -0.0755,-0.12634 -0.21156,0.0582 -0.12246,-0.13131 0.0265,-0.18717 -0.18454,-0.13751 -0.17832,0.0984 -0.11625,-0.1313 -0.0169,-0.31134 0.10104,-0.39205 -0.16592,-0.063 -0.18453,-0.21201 -0.22179,-0.0196 -0.13487,-0.17475 -0.35216,-0.11889 -0.16591,0.20393 -0.1597,0.0239 -0.19696,-0.24305 -0.50736,0.21635 -0.42037,-0.97049 -2.41632,-1.99507 -0.53089,-1.99508 0.4308,0.0194 0.24114,-0.39442 0.12906,-0.39442 0.19803,-0.20476 0.0687,-0.25648 0.52564,-0.041 0.16354,-0.37718 0.25851,-0.0981 0.12057,-0.30498"},"54017":{"name":"Doddridge, WV","path":"m 793.30577,256.78214 0.34187,0.21057 0.0296,-0.16961 0.23325,-0.0474 0.17712,0.28685 0.0821,-0.12726 0.16662,-0.0229 0.058,0.16719 0.27895,-0.0254 -0.0195,0.65923 0.36626,0.92626 -0.36532,1.08108 -0.24664,0.0426 -0.24663,0.78437 0.37645,-0.002 -0.0686,0.53217 0.77702,0.41348 0.006,0.20579 -0.29114,-0.0316 0.0946,0.27997 0.65833,0.0871 0.0204,0.39865 -0.42467,0.19095 -0.0686,0.25029 -0.49884,0.0871 0.0204,0.23546 -0.12057,0.30498 -0.25851,0.0981 -0.16354,0.37718 -0.52564,0.041 -0.0687,0.25648 -0.19803,0.20476 -0.12906,0.39442 -0.24114,0.39442 -0.4308,-0.0194 -1.49859,-0.0163 -2.42024,-3.56746 0.40951,-0.54387 0.814,-1.19602 1.55037,-1.5274 0.21676,-0.74529 0.85496,-0.25437 0.75263,-0.61919"},"54095":{"name":"Tyler, WV","path":"m 787.07107,254.11314 1.05404,0.50084 0.5763,-0.56215 0.0269,0.29779 0.42104,0.21419 0.15827,0.42917 0.24187,-0.15606 0.25474,0.0858 0.18307,0.20523 0.0517,0.27689 0.33835,0.15746 0.57702,0.2118 0.49343,0.82092 0.35113,-0.0366 0.3715,-0.1724 0.0864,0.27566 0.45976,-0.13846 0.58925,0.25895 -0.75263,0.61919 -0.85496,0.25437 -0.21676,0.74529 -1.55038,1.5274 -0.81399,1.19602 -0.20884,-0.61942 0.10596,-0.48014 -0.0435,-0.36268 -0.48133,-0.38403 -0.56675,-0.13844 -0.0566,0.32184 0.0288,0.22573 -0.2275,0.65286 -0.51581,-0.0732 -0.15276,0.17234 -0.23818,-0.16935 -0.63422,-2.50927 -0.51832,-0.14797 -0.38418,0.17397 -0.23178,0.28091 -0.41959,-0.0142 1.09205,-2.15619 1.40668,-1.784"},"54033":{"name":"Harrison, WV","path":"m 795.4042,255.98514 4.05641,0.31669 1.3083,0.61326 0.48034,2.80489 0.7284,0.51716 -0.80985,1.84263 0.23754,1.29137 -0.24398,0.002 -0.13272,0.41022 -0.85882,0.005 -2.88763,-0.31462 -0.34958,-0.17651 -1.14306,0.20743 -0.21283,-0.18665 -0.81435,-0.12265 -0.0204,-0.23546 0.49884,-0.0871 0.0686,-0.25029 0.42467,-0.19095 -0.0204,-0.39865 -0.65833,-0.0871 -0.0946,-0.27997 0.29114,0.0316 -0.006,-0.20579 -0.77702,-0.41348 0.0686,-0.53217 -0.37645,0.002 0.24663,-0.78437 0.24664,-0.0426 0.36532,-1.08108 -0.36626,-0.92626 0.0195,-0.65923 0.37716,-0.18171 -0.004,-0.50054 0.28384,-0.1195 0.0739,-0.26725"},"54029":{"name":"Hancock, WV","path":"m 790.57619,229.32414 0.60974,3.688 0.30488,1.792 -1.88046,0.4556 0.21234,-0.35525 -0.10813,-0.50727 0.16628,-0.65819 -0.0944,-0.56215 -0.44508,-0.50746 -0.22254,-0.55556 -0.3323,-0.39093 -0.51482,-0.42386 -0.0346,-0.27293 0.44758,-0.64502 0.61222,-0.38434 0.37471,0.0685 0.31983,-0.31565 0.58478,-0.4255"},"54009":{"name":"Brooke, WV","path":"m 791.49081,234.80414 0.88786,5.474 -2.81802,-0.154 0.11983,-0.7105 0.15399,-0.6422 0.64346,-0.61943 -0.11922,-0.39177 0.2109,-0.81295 -0.39241,-0.72188 0.006,-0.55114 -0.57455,-0.41453 1.88046,-0.4556"},"54069":{"name":"Ohio, WV","path":"m 789.56065,240.12414 2.81802,0.154 0.53487,3.277 -3.74403,0.217 0.0251,-0.5696 -0.21775,-0.31327 0.4838,-0.77197 -0.24474,-1.27116 0.34479,-0.722"},"54051":{"name":"Marshall, WV","path":"m 792.91354,243.55514 1.10181,6.742 -5.36109,0.892 -0.7387,-0.78355 0.62791,-1.1185 -0.16258,-0.75676 0.15898,-0.3682 0.34666,-0.42593 -0.42372,-0.8837 0.61463,0.0765 0.31317,-0.25845 -0.32324,-0.78322 0.32434,-0.61574 -0.30091,-0.95069 0.0787,-0.54875 3.74403,-0.217"},"54103":{"name":"Wetzel, WV","path":"m 795.71799,250.02314 0.51906,0.9103 0.23509,0.9387 -0.16189,0.21595 -0.19029,-0.15323 -0.41747,0.35794 0.12209,0.15915 -0.19029,0.17335 -7.1e-4,0.37132 -0.2279,0.0305 -0.29889,0.14414 0.0987,0.21512 -0.24209,0.51331 0.085,0.37326 0.22701,0.23127 0.028,0.34895 0.32587,0.37131 -7.1e-4,0.37132 -0.23289,0.13076 0.008,0.25854 -0.0739,0.26725 -0.28384,0.1195 0.004,0.50054 -0.37716,0.18171 -0.27895,0.0254 -0.058,-0.16719 -0.16663,0.0229 -0.0821,0.12726 -0.17712,-0.28685 -0.23324,0.0474 -0.0296,0.16961 -0.34186,-0.21057 -0.58925,-0.25894 -0.45976,0.13846 -0.0864,-0.27567 -0.3715,0.17241 -0.35113,0.0366 -0.49343,-0.82092 -0.57702,-0.2118 -0.33835,-0.15746 -0.0517,-0.27689 -0.18307,-0.20523 -0.25474,-0.0858 -0.24187,0.15607 -0.15827,-0.42918 -0.42103,-0.21419 -0.0269,-0.29779 -0.5763,0.56215 -1.05404,-0.50084 0.90124,-0.14132 0.35969,-0.74303 -0.0735,-1.30865 0.45062,-0.20905 -0.0548,-0.52195 5.36109,-0.892 1.70264,-0.274"},"54049":{"name":"Marion, WV","path":"m 796.47214,251.87214 0.52748,0.0374 0.41388,0.40659 3.36784,-0.534 1.37281,1.054 0.87539,0.772 2.08952,1.15 -1.08754,0.98065 -0.19173,0.50029 -1.03561,0.5652 -0.19723,-0.25792 -0.32706,-0.2709 -0.19724,0.28736 -1.31374,0.35227 -1.3083,-0.61326 -4.05641,-0.31669 -0.008,-0.25854 0.23289,-0.13076 7.1e-4,-0.37132 -0.32587,-0.37131 -0.028,-0.34895 -0.22701,-0.23127 -0.085,-0.37326 0.24209,-0.51331 -0.0987,-0.21513 0.29889,-0.14412 0.2279,-0.0306 7.1e-4,-0.37132 0.19029,-0.17335 -0.12209,-0.15915 0.41747,-0.35794 0.19029,0.15323 0.16189,-0.21595"},"54001":{"name":"Barbour, WV","path":"m 808.23552,259.44014 -0.0499,2.36115 0.23711,0.30785 -0.34766,0.554 -0.0642,0.161 -0.21573,1.904 -0.0161,0.668 -0.0481,0.184 -3.19847,1.155 0.23177,-0.50727 0.13412,-0.9467 -0.3704,-0.53982 -1.15161,0.16001 -0.84689,-1.15022 -0.84689,-0.011 -0.27726,-0.36902 -0.23754,-1.29137 0.80985,-1.84263 0.30257,0.17618 2.18239,-0.65929 1.03361,-0.76373 0.19313,-0.49118 0.10175,-0.13871 0.48032,0.0832 0.20619,-0.32147 0.75325,0.3295 0.20041,0.70303 0.72336,0.0755 0.0809,0.20997"},"54091":{"name":"Taylor, WV","path":"m 805.11906,254.75814 0.83617,0.255 0.52238,3.109 -0.20619,0.32147 -0.48032,-0.0832 -0.10175,0.13871 -0.19313,0.49118 -1.03361,0.76373 -2.18239,0.65929 -0.30257,-0.17618 -0.7284,-0.51716 -0.48034,-2.80489 1.31374,-0.35227 0.19724,-0.28735 0.32706,0.27089 0.19723,0.25792 1.03561,-0.5652 0.19173,-0.50029 1.08754,-0.98065"},"54061":{"name":"Monongalia, WV","path":"m 807.10161,248.11214 0.0981,0.545 -0.15154,1.742 -1.36033,3.569 0.26743,1.045 -0.83617,-0.255 -2.08952,-1.15 -0.87539,-0.772 -1.37281,-1.054 -3.36784,0.534 -0.41388,-0.40659 -0.52748,-0.0374 -0.23509,-0.9387 -0.51906,-0.9103 8.75033,-1.462 2.63329,-0.449"},"54075":{"name":"Pocahontas, WV","path":"m 813.61206,271.85842 0.18994,0.16359 -0.127,0.516 0.306,0.324 -0.40934,0.68913 -0.0303,1.904 -0.0891,1.625 -0.47425,1.688 -1.10003,1.71 -0.009,0.08 0,0.03 0.43324,0.875 -0.64439,0.94408 -1.32624,1.60392 0.32339,1.60392 -0.49043,0.94408 -2.57803,0.618 -1.02158,0.637 -0.74702,0.102 -0.98593,-0.06 -2.00929,-1.253 -0.36371,-2.564 -0.3227,-2.754 0.42789,0.151 1.29258,-1.456 1.87177,-2.26341 1.68862,0.005 2.54772,-2.587 0.11946,-1.85 0.0571,-0.399 0.52951,-2.267 0.0963,-0.07 0.38689,0.07 0.51526,0.34254 -0.13366,0.74188 0.22979,0.062 0.31298,-0.15434 0.22979,0.0453 0.1466,0.29491 0.28688,-0.0184 -0.0126,-0.31785 0.22033,-0.31786 0.59845,0.22607 0.0642,0.336"},"54077":{"name":"Preston, WV","path":"m 812.0776,247.23414 1.88806,11.789 0.0339,0.258 -0.44215,-0.426 -3.34288,-0.715 -1.97899,1.3 -0.0809,-0.20997 -0.72336,-0.0755 -0.20041,-0.70303 -0.75325,-0.3295 -0.52238,-3.109 -0.26743,-1.045 1.36033,-3.569 0.15154,-1.742 -0.0981,-0.545 4.97599,-0.878"},"54083":{"name":"Randolph, WV","path":"m 817.18909,264.14114 0.16759,0.139 -0.27259,0.88544 -0.69427,0.0812 -0.32378,-0.1933 0,0.03 -0.39392,0.13991 0.29563,0.63461 -0.54787,0.39202 -0.65073,-0.003 0.1842,0.62914 -0.29549,0.62072 0.23694,0.10492 -0.0792,0.43769 0.53644,0.47098 -1.2569,2.88244 0.0912,0.27974 -0.57436,0.1799 -0.0642,-0.336 -0.59845,-0.22607 -0.22033,0.31786 0.0126,0.31785 -0.28688,0.0184 -0.1466,-0.29491 -0.22979,-0.0453 -0.31298,0.15434 -0.22979,-0.062 0.13366,-0.74188 -0.51526,-0.34254 -0.38689,-0.07 -0.0963,0.07 -0.52951,2.267 -0.0571,0.399 -0.11946,1.85 -2.54772,2.587 -1.68862,-0.005 -1.87177,2.26341 0.56339,-3.309 -2.34091,-3.593 0.5723,-1.244 1.9362,-0.371 0.12302,-2.248 -0.36582,-1.1093 0.18753,-1.3697 3.19847,-1.155 0.0481,-0.184 0.0161,-0.668 0.21573,-1.904 0.0642,-0.161 0.34766,-0.554 0.41574,0.10394 0.36054,0.23641 0.27223,0.402 -0.004,0.86565 5.26838,0.554 2.45323,-0.13"},"54071":{"name":"Pendleton, WV","path":"m 817.35668,264.28014 4.35734,2.611 1.55822,0.948 -1.80783,6.976 -1.24622,1.799 -3.07902,-0.522 -1.09111,-1.617 -0.33697,-0.337 -0.36192,-0.161 -1.77752,-0.426 0.40935,-0.6894 -0.306,-0.32373 0.127,-0.50599 -0.18995,-0.1736 0.57435,-0.1799 -0.0912,-0.27974 1.2569,-2.88244 -0.53644,-0.47098 0.0792,-0.43769 -0.23694,-0.10492 0.29549,-0.62072 -0.1842,-0.62914 0.65073,0.003 0.54787,-0.39202 -0.29563,-0.63461 0.39392,-0.13991 0,-0.03 0.32378,0.1933 0.69427,-0.0812 0.27259,-0.88544"},"54093":{"name":"Tucker, WV","path":"m 808.23552,259.44014 1.97899,-1.3 3.34288,0.715 0.44215,0.426 0.43603,0.30252 0.72042,-0.49377 0.36107,0.0972 0.41794,-0.55115 0.3042,0.13137 -0.0143,-0.23264 0.49161,-0.20134 0.41198,0.0717 0.42337,0.32192 -0.27054,0.20818 -0.0885,0.24229 0.048,0.20817 -0.15679,0.0831 -0.0961,0.41037 0.12006,0.27386 -0.24395,1.17252 0.92771,0.14873 0.007,0.621 -0.0392,0.656 -0.17829,0.781 -0.39223,0.609 -2.45323,0.13 -5.26838,-0.554 0.004,-0.86565 -0.27223,-0.402 -0.36054,-0.23641 -0.41574,-0.10394 -0.23711,-0.30785 0.0499,-2.36115"},"54023":{"name":"Grant, WV","path":"m 816.84322,255.56914 2.86786,-0.21543 2.94964,1.37943 -0.0981,0.241 -0.47246,1.874 0.0697,0.94018 -0.59381,1.83782 0.31379,0.30093 -0.0374,0.49607 1.03283,1.57227 -0.52827,0.79173 0.11284,0.52513 -0.74576,1.57887 -4.35734,-2.611 -0.16759,-0.139 0.39223,-0.609 0.17829,-0.781 0.0392,-0.656 -0.007,-0.621 -0.92771,-0.14873 0.24395,-1.17252 -0.12006,-0.27386 0.0961,-0.41037 0.15679,-0.0831 -0.048,-0.20817 0.0885,-0.24229 0.27054,-0.20818 -0.42337,-0.32192 -0.41198,-0.0717 -0.49161,0.20134 0.0143,0.23264 -0.3042,-0.13137 -0.41794,0.55115 -0.36107,-0.0972 -0.72042,0.49377 -0.43603,-0.30252 -0.0339,-0.258 0.5375,-0.20301 1.41583,-1.54356 0.92423,-1.70743"},"54031":{"name":"Hardy, WV","path":"m 822.66072,256.73314 1.57427,0.628 3.10576,0.59829 0.82506,-0.17642 0.33943,0.083 0.23577,0.30065 0.44308,-0.1347 0.33943,0.083 0.22054,-0.36177 0.64718,0.06 0.47425,0.291 0.6347,0.514 -0.50308,0.97514 -0.33335,0.75587 0.29825,0.14899 -0.57439,1.39015 -0.42026,-0.25996 -0.43149,0.61665 -0.21626,0.77995 -0.67694,0.69487 -0.0905,-0.55151 -0.47482,0.19207 -0.16213,0.57755 -0.38773,0.38263 -0.96914,2.8846 -2.46313,-1.27467 -0.8227,1.90967 -1.55822,-0.948 0.74576,-1.57887 -0.11284,-0.52513 0.52827,-0.79173 -1.03283,-1.57227 0.0374,-0.49607 -0.31379,-0.30093 0.59381,-1.83782 -0.0697,-0.94018 0.47246,-1.874 0.0981,-0.24"},"54057":{"name":"Mineral, WV","path":"m 827.01627,248.92314 -0.41602,0.90287 -0.3243,0.82948 -0.61783,0.64603 -0.26926,0.62768 -0.50775,1.58166 -0.2876,0.59099 -0.48941,0.13235 -0.52596,0.84488 0.006,0.53301 -0.56265,0.49631 -0.36084,0.62474 -2.94964,-1.37943 -2.86786,0.21543 3.26978,-3.945 1.89697,0.426 2.88469,-3.971 2.12161,0.844"},"54027":{"name":"Hampshire, WV","path":"m 827.01627,248.92314 3.35001,-0.184 2.32308,0.763 -0.0346,1.75706 0.33981,0.3889 -0.16539,0.7579 0.42405,0.0357 -0.18668,0.86704 -0.48961,0.85345 -0.13458,0.55749 -0.15146,0.16959 0.40511,0.10213 -0.42129,1.14778 0.21959,0.13585 0.0341,0.20332 0.40512,0.28765 -0.46564,0.65485 -0.0602,0.4521 -0.37023,0.40441 -0.53719,0.34477 -0.6347,-0.514 -0.47425,-0.291 -0.64718,-0.06 -0.22054,0.36177 -0.33943,-0.083 -0.44308,0.1347 -0.23577,-0.30065 -0.33943,-0.083 -0.82506,0.17642 -3.10576,-0.59829 -1.57427,-0.628 0.36085,-0.62474 0.56264,-0.49631 -0.006,-0.53301 0.52595,-0.84488 0.48941,-0.13235 0.2876,-0.59099 0.50775,-1.58166 0.26926,-0.62768 0.61783,-0.64603 0.3243,-0.82948 0.41602,-0.90287"},"54065":{"name":"Morgan, WV","path":"m 832.20621,245.58914 0.93244,0.185 0.20859,-0.03 0.62044,-1.143 0.45642,-0.722 0.12123,-0.137 0.10519,-0.04 0.59548,0.02 0.64896,0.07 0.64362,0.241 0.80229,0.581 0.29596,0.328 -1.89341,0.965 -0.041,0.103 -0.66715,5.02787 -2.29526,-1.18441 -2.37372,-1.11746 1.83993,-3.15"},"56021":{"name":"Laramie, WY","path":"m 364.82368,219.96002 10.69861,0.97312 -0.18363,2.028 10.23545,0.921 -0.32805,3.948 -0.77911,9.033 -15.30772,-1.296 -5.73015,-0.554 1.3946,-15.05312"},"56015":{"name":"Goshen, WY","path":"m 387.62441,199.74414 -1.18917,14.054 -0.60261,7.002 -0.25852,3.082 -10.23545,-0.921 0.18363,-2.028 1.97007,-22.03 2.88469,0.253 4.07207,0.308 3.17529,0.28"},"56039":{"name":"Teton, WY","path":"m 278.08109,138.27998 6.25787,0.981 -0.28882,1.904 4.73352,0.722 -0.20752,0.52107 0.64528,0.40262 0.31686,-0.13803 0.44524,0.35842 -0.11868,0.29831 0.26671,0.35245 -0.56984,1.99706 0.14083,0.33883 0.38699,0.1956 -0.0394,0.47986 0.37032,0.23058 -0.0929,1.04154 0.28614,0.21241 -0.0455,0.473 0.26245,0.11765 0.52304,0.30717 0.1677,0.49669 -0.18764,0.094 0.13076,1.20796 0.20183,0.28407 -0.34303,1.04212 0.0535,0.67505 0.95372,0.1065 -2.22654,15.33162 -0.38527,1.97648 -4.73352,-0.717 -0.29596,1.977 -3.86704,-0.602 -0.2086,1.285 -3.82155,-0.64184 0.15305,-1.3629 -1.81878,-0.32719 0.0754,-0.40807 -1.95999,-0.36476 2.30969,-14.96107 1.7686,-11.168 0.76106,-4.71916"},"56023":{"name":"Lincoln, WY","path":"m 273.24174,169.12821 1.95999,0.36476 -0.0754,0.40807 1.81878,0.32719 -0.15305,1.3629 3.82155,0.64184 -0.41602,2.69017 -1.34078,7.63314 -0.61465,-0.093 -0.24273,1.62907 0.55184,0.0741 -0.90935,5.97935 0.80522,0.19258 -0.63706,3.83953 5.73078,1.04344 2.4261,0.58078 -0.4992,3.332 -0.37797,3.393 -1.38886,9.152 -16.88377,-2.662 1.53505,-9.644 1.87379,-11.679 1.88628,-11.557 1.12947,-7.00893"},"56041":{"name":"Uinta, WY","path":"m 266.81715,209.01714 16.88377,2.662 -1.98611,13.282 -7.73053,-1.109 -9.29588,-1.535 0.93244,-5.801 1.19631,-7.499"},"56035":{"name":"Sublette, WY","path":"m 290.10382,168.31297 4.9213,0.79957 -0.33858,2.21741 0.28638,0.0771 0.23037,-0.12974 0.36617,0.0324 0.0977,0.1429 -0.0249,0.44454 -0.0926,0.41073 0.21174,0.58823 -0.25136,0.60771 0.0614,0.38795 -0.0569,0.1851 0.10254,0.33766 -0.13468,0.36324 -0.0502,0.34634 0.21751,0.901 0.35823,0.39381 0.0202,0.52525 0.5554,0.89141 0.17045,-5.2e-4 0.29251,1.02285 -0.32715,0.11215 0.11412,0.29053 -0.0455,0.59097 0.56943,0.11683 0.54198,0.60196 0.31859,0.25091 0.0314,0.31474 0.30263,0.13922 0.54239,0.56536 0.0637,0.19836 0.38282,-0.0889 0.55835,1.31532 -0.0838,0.4582 0.21933,0.39438 0.26721,0.0912 0.52251,0.98477 0.60229,0.36247 0.15551,0.18694 -0.54658,0.17098 -0.13171,0.39438 0.27072,0.13921 0.33495,-0.0809 0.78174,0.79673 0.22326,0.50952 0.12751,0.55738 0.91426,0.15369 -0.80674,5.97743 0.46978,0.0894 -0.53843,3.93587 -7.66634,-1.069 -4.18618,-0.658 -5.06157,-0.858 -2.4261,-0.58078 -5.73078,-1.04344 0.63706,-3.83953 -0.80522,-0.19258 0.90935,-5.97935 -0.55184,-0.0741 0.24274,-1.62907 0.61464,0.093 1.34078,-7.63314 0.41602,-2.69017 0.2086,-1.285 3.86704,0.602 0.29596,-1.977 4.73352,0.717 0.38532,-1.977"},"56029":{"name":"Park, WY","path":"m 299.36165,134.06314 8.54173,1.157 2.98988,0.548 0.32804,0.05 2.13053,0.289 4.99026,0.659 -0.39367,3.00481 0.44756,0.0779 -1.05697,7.76131 0.28883,0.0637 -1.04545,8.19233 0.37619,0.05 -0.33428,1.94641 -3.94663,-0.60449 -0.21301,2.06221 -2.05645,-0.26446 -0.19961,1.97695 -2.93992,-0.28662 -0.13515,1.91478 -3.09541,-0.35839 -0.6241,-0.0816 -0.14611,-0.49843 -0.31007,-0.38121 -0.40914,-0.096 0.021,-0.66376 -0.49516,-0.52613 0.021,-0.28527 -0.42635,-0.31968 -0.0307,-0.31969 -0.31996,-0.11953 -0.008,-0.24934 -0.17118,-0.20634 -0.45504,0.14635 -0.10236,0.23237 -0.283,-0.16333 -0.283,-0.46439 -0.23056,0.0519 -0.23916,0.22393 -0.21392,0.0919 -0.18473,-0.29459 -0.11591,-0.0279 -0.16752,0.49679 -0.63569,0.16356 -0.0963,0.15573 -0.0447,0.4482 -0.35437,0.41378 -0.0275,0.4482 0.0929,0.19015 -0.23393,0.12132 -0.77043,-0.0788 -0.58931,0.10917 -0.22803,0.35003 -0.65813,0.0576 -0.69378,-0.79603 -0.04,-0.34871 0.25244,0.0126 0.35566,-0.2799 -0.0887,-0.39406 0.20372,-0.34246 -0.22638,-0.0328 -0.26079,-0.30804 0.0606,-0.46666 -0.18031,-0.071 0.009,-0.2086 0.31861,-0.29462 -0.008,-0.2258 -0.35235,0.11828 -0.30074,0.0839 -0.54159,-0.10538 -0.43052,-0.32963 -0.72125,0.12256 -0.21965,-0.11943 -0.001,-0.36375 -0.22407,-0.82109 -0.32416,-0.0825 0.42547,-2.97543 -0.95372,-0.1065 -0.0535,-0.67505 0.34303,-1.04212 -0.20183,-0.28407 -0.13076,-1.20796 0.18764,-0.094 -0.1677,-0.49669 -0.52303,-0.30717 -0.26245,-0.11765 0.0455,-0.473 -0.28614,-0.21241 0.0929,-1.04154 -0.37033,-0.23058 0.0394,-0.47986 -0.38699,-0.1956 -0.14084,-0.33883 0.56985,-1.99706 -0.26671,-0.35245 0.11868,-0.29831 -0.44524,-0.35842 -0.31686,0.13803 -0.64528,-0.40262 0.20752,-0.52107 -4.73352,-0.722 0.28882,-1.904 -6.25787,-0.981 1.23219,-7.26384 2.70818,0.419 2.00038,0.408 0.70602,0.243 2.41935,0.378 0.041,0 5.34326,0.724 1.81496,0.09 1.35142,0.21 3.66379,0.571"},"56037":{"name":"Sweetwater, WY","path":"m 285.96695,195.80214 5.06157,0.858 4.18618,0.658 7.66634,1.069 25.56101,3.366 -0.56756,3.9303 0.39994,0.1027 -0.99663,7.975 -0.30487,1.904 -7.12078,-0.932 -0.78328,5.95438 0.24485,0.0626 -1.17313,9.105 -5.68914,-0.685 -13.66748,-1.84 -2.69391,-0.392 -8.01757,-1.07 -0.66857,-0.1 -2.3944,-0.337 -2.46571,-0.353 -0.0178,0 -0.8112,-0.121 1.98611,-13.282 1.38886,-9.152 0.37797,-3.393 0.4992,-3.332"},"56013":{"name":"Fremont, WY","path":"m 330.56902,173.14955 1.03703,0.16145 -0.0688,0.62028 0.38496,0.0679 -0.4582,3.955 -0.57211,3.92417 0.28807,0.0639 -1.01163,7.95678 -0.71841,-0.0911 -0.90635,7.94531 0.37984,0.04 -0.48137,3.959 -25.56101,-3.366 0.53843,-3.93587 -0.46978,-0.0894 0.80674,-5.97743 -0.91426,-0.15369 -0.12751,-0.55738 -0.22326,-0.50952 -0.78174,-0.79673 -0.33495,0.0809 -0.27072,-0.13921 0.13171,-0.39438 0.54658,-0.17098 -0.15551,-0.18694 -0.60229,-0.36247 -0.52251,-0.98477 -0.26721,-0.0912 -0.21933,-0.39438 0.0838,-0.4582 -0.55835,-1.31532 -0.38282,0.0889 -0.0637,-0.19836 -0.54239,-0.56536 -0.30263,-0.13922 -0.0314,-0.31474 -0.31859,-0.25091 -0.54198,-0.60196 -0.56943,-0.11683 0.0455,-0.59097 -0.11412,-0.29053 0.32715,-0.11215 -0.29251,-1.02285 -0.17045,5.2e-4 -0.5554,-0.89141 -0.0202,-0.52525 -0.35823,-0.39381 -0.21751,-0.901 0.0502,-0.34634 0.13468,-0.36324 -0.10254,-0.33766 0.057,-0.1851 -0.0614,-0.38795 0.25136,-0.60771 -0.21174,-0.58823 0.0926,-0.41073 0.0249,-0.44454 -0.0977,-0.1429 -0.36617,-0.0324 -0.23037,0.12974 -0.28638,-0.0771 0.33858,-2.21741 -4.92114,-0.79905 1.80108,-12.35619 0.32416,0.0835 0.22407,0.82009 0.001,0.36375 0.21965,0.12043 0.72125,-0.12356 0.43052,0.32963 0.54159,0.10538 0.30074,-0.0839 0.35235,-0.11828 0.008,0.2258 -0.31861,0.29462 -0.009,0.2086 0.18031,0.071 -0.0605,0.46666 0.26079,0.30804 0.22638,0.0328 -0.20372,0.34246 0.0887,0.39406 -0.35566,0.2799 -0.25244,-0.0126 0.04,0.34871 0.69378,0.79603 0.65813,-0.0576 0.22803,-0.35003 0.58931,-0.10917 0.77043,0.0788 0.23393,-0.12133 -0.0929,-0.19015 0.0275,-0.4482 0.35437,-0.41378 0.0447,-0.4482 0.0963,-0.15573 0.63569,-0.16356 0.16752,-0.49679 0.11591,0.0279 0.18473,0.29459 0.21392,-0.0919 0.23916,-0.22393 0.23056,-0.0519 0.283,0.46439 0.283,0.16333 0.10236,-0.23237 0.45504,-0.14635 0.17118,0.20634 0.008,0.24934 0.31996,0.11953 0.0306,0.31969 0.42635,0.31968 -0.021,0.28527 0.49516,0.52613 -0.021,0.66376 0.40914,0.096 0.31007,0.38121 0.14611,0.49843 0.0455,0.12089 0.27762,0.12089 0.0344,0.0767 0.16706,0.0656 -0.0213,0.37283 0.35455,0.20701 -0.0413,0.26733 0.32357,0.0352 0.27934,0.96382 0.21301,0.43317 0.29927,0.3065 -0.25567,1.72133 2.01821,0.31833 1.83881,0.27524 -0.007,0.44664 1.88757,0.25235 -0.031,0.59235 1.93614,0.30092 -0.1105,0.96613 1.90518,0.23757 -0.0819,0.76171 1.96412,0.25145 -0.0726,0.65886 1.90683,0.27146 -0.0355,0.28914 3.01365,0.41428 0.0356,-0.27 9.22187,1.14398 0.0892,-0.667"},"56017":{"name":"Hot Springs, WY","path":"m 316.6243,157.85655 0.93158,0.119 -0.23226,1.98469 0.98266,0.18762 -0.23471,1.95018 1.9684,0.28634 -0.20322,1.3656 1.96008,0.26849 -0.0523,0.60389 3.83879,0.58361 -0.21221,1.98033 3.86596,0.49493 -0.19798,1.93054 1.93106,0.21978 -0.40114,3.318 -0.0892,0.667 -9.22187,-1.14398 -0.0356,0.27 -3.01365,-0.41428 0.0355,-0.28914 -1.90683,-0.27146 0.0726,-0.65886 -1.96412,-0.25145 0.0819,-0.76171 -1.90518,-0.23757 0.1105,-0.96613 -1.93614,-0.30092 0.031,-0.59235 -1.88757,-0.25235 0.007,-0.44664 -1.83881,-0.27524 -2.01821,-0.31833 0.25567,-1.72133 -0.29927,-0.3065 -0.21301,-0.43317 -0.27934,-0.96382 -0.32357,-0.0352 0.0413,-0.26733 -0.35455,-0.20701 0.0213,-0.37283 -0.16706,-0.0656 -0.0344,-0.0767 -0.27762,-0.12089 -0.0454,-0.12089 0.6241,0.0816 3.09541,0.35839 0.13515,-1.91478 2.93992,0.28662 0.19961,-1.97695 2.05645,0.26446 0.21301,-2.06221 3.94663,0.60449"},"56043":{"name":"Washakie, WY","path":"m 316.6243,157.85655 0.33428,-1.94641 19.21399,2.443 3.58057,0.46928 0.29774,0.03 -0.83437,8.011 0.20992,0.0237 -0.72626,5.95277 0.0855,0.0307 -0.14855,1.31144 -7.03103,-0.873 -1.03703,-0.16145 0.40114,-3.318 -1.93106,-0.21978 0.19798,-1.93054 -3.86596,-0.49493 0.21221,-1.98033 -3.83879,-0.58361 0.0523,-0.60389 -1.96008,-0.26849 0.20322,-1.3656 -1.9684,-0.28634 0.23471,-1.95018 -0.98266,-0.18762 0.23226,-1.98469 -0.93158,-0.119"},"56003":{"name":"Big Horn, WY","path":"m 318.34209,136.76214 6.00292,0.813 5.7603,0.71258 0.0474,0.78957 -0.1531,0.65157 0.431,0.50964 -0.074,0.26845 -0.25473,0.62534 0.27688,0.37572 0.20534,0.55225 -0.0589,0.22845 0.19992,0.1127 -0.005,0.38788 -0.26018,0.031 0.0176,0.30409 0.6405,0.45602 0.4126,0.0306 0.19989,0.79028 -0.19514,0.41044 0.0935,0.24331 0.1847,-0.0757 0.71647,0.38006 -0.0736,0.2585 0.23028,0.31929 0.26066,-0.12133 0.0935,-0.13652 0.56453,0.0458 0.12393,-0.0606 0.15431,0.13697 0.1847,0.0458 0.39154,0.43081 0.35238,0.33941 -0.14901,0.5673 0.35238,0.17227 0.30679,-0.0252 0.0421,0.55236 0.77137,0.26369 0.22442,-0.11615 0.0573,0.2333 0.61944,0.2485 0.16365,0.78026 -0.0536,0.27343 0.13368,0.18493 0.45315,0.0164 0.13282,0.27267 -0.0978,0.24705 0.49159,0.54176 -0.0978,0.31111 -0.12344,0.0805 0.0559,0.17017 -0.085,0.36236 0.38908,0.0805 0.005,0.18298 0.28658,0.0933 0.0303,0.17017 0.29938,0.0933 0.31221,-0.0989 0.0246,-0.18534 0.25525,0.13499 -0.11634,0.25031 0.0887,0.46813 -0.10352,0.34 0.21681,0.12218 0.12712,-0.0957 0.15274,0.21187 -0.14638,0.38213 0.19737,0.0814 0.0216,0.15557 -0.16591,0.15168 -0.22841,0.0345 -0.0487,0.25713 0.14603,0.0438 0.0132,0.23128 0.24367,0.0867 -0.006,0.1883 0.20909,0.0696 -0.46024,3.61535 -3.58057,-0.46928 -19.21399,-2.443 -0.37619,-0.05 1.04545,-8.19233 -0.28883,-0.0637 1.05697,-7.76131 -0.44756,-0.0779 0.39367,-3.00481"},"56033":{"name":"Sheridan, WY","path":"m 356.43845,141.52814 3.66266,0.39692 -0.23085,2.68126 0.1479,0.0802 -0.83316,7.03928 -2.4417,-0.20967 -4.07386,-0.377 -0.009,0.1 -15.45965,-1.93935 -0.16364,-0.78026 -0.61945,-0.24849 -0.0573,-0.2333 -0.22441,0.11614 -0.77138,-0.26369 -0.0421,-0.55236 -0.30679,0.0252 -0.35238,-0.17228 0.14901,-0.56729 -0.35238,-0.33941 -0.39154,-0.43081 -0.1847,-0.0458 -0.15431,-0.13697 -0.12393,0.0606 -0.56453,-0.0458 -0.0935,0.13652 -0.26066,0.12133 -0.23028,-0.31929 0.0736,-0.2585 -0.71647,-0.38006 -0.1847,0.0757 -0.0935,-0.24331 0.19514,-0.41044 -0.19989,-0.79028 -0.4126,-0.0306 -0.6405,-0.45602 -0.0176,-0.30409 0.26018,-0.031 0.005,-0.38788 -0.19992,-0.1127 0.0589,-0.22845 -0.20534,-0.55225 -0.27688,-0.37572 0.25473,-0.62534 0.074,-0.26845 -0.43099,-0.50963 0.15309,-0.65158 -0.0474,-0.78957 4.60352,0.56442 7.65921,0.94 0.85935,0.176 3.10219,0.378 10.10887,1.182"},"56019":{"name":"Johnson, WY","path":"m 339.75314,158.82242 0.46024,-3.61535 -0.20911,-0.0696 0.006,-0.18831 -0.24368,-0.0867 -0.0132,-0.23128 -0.14603,-0.0438 0.0487,-0.25714 0.2284,-0.0345 0.16589,-0.15168 -0.0216,-0.15558 -0.19738,-0.0814 0.14636,-0.38214 -0.15274,-0.21187 -0.12712,0.0956 -0.21681,-0.12217 0.10352,-0.34 -0.0887,-0.46814 0.11633,-0.2503 -0.25525,-0.13499 -0.0246,0.18534 -0.3122,0.0989 -0.29939,-0.0933 -0.0303,-0.17017 -0.28658,-0.0933 -0.005,-0.18298 -0.38909,-0.0805 0.085,-0.36236 -0.0559,-0.17017 0.12344,-0.0805 0.0978,-0.31111 -0.49159,-0.54176 0.0978,-0.24705 -0.13282,-0.27267 -0.45315,-0.0164 -0.13368,-0.18493 0.0535,-0.27343 15.45965,1.93935 0.009,-0.1 4.07386,0.377 2.44159,0.21287 -0.0857,0.97996 -0.18307,-0.0148 -0.81788,8.09021 0.18773,0.0332 -0.73537,7.98528 -0.24962,0.003 -0.77078,7.47932 -0.7427,-0.0699 -8.43832,-0.852 -8.73548,-0.99814 0.0232,-0.176 0.14855,-1.31144 -0.0855,-0.0307 0.72626,-5.95277 -0.20992,-0.0237 0.83437,-8.011 -0.29774,-0.03"},"56025":{"name":"Natrona, WY","path":"m 331.60605,173.311 7.03103,0.873 -0.0232,0.176 8.73548,0.99814 8.43832,0.852 -0.0321,0.947 -0.5905,4.676 -1.12487,10.92903 -0.17269,-0.0168 -0.76888,7.90647 -9.60564,-1.07667 -5.05443,-0.624 -9.51518,-1.157 -0.37984,-0.04 0.90635,-7.94531 0.71841,0.0911 1.01163,-7.95778 -0.28807,-0.0629 0.57211,-3.92417 0.4582,-3.955 -0.38496,-0.0679 0.0688,-0.62028"},"56007":{"name":"Carbon, WY","path":"m 328.92342,197.79414 9.51518,1.157 5.05443,0.624 9.60564,1.07667 0.0392,0 -1.37769,14.20933 -0.77911,7.632 -0.16759,2.003 -2.38727,-0.227 -1.95224,-0.249 -0.69175,6.259 -0.27278,2.862 -9.18356,-1.115 -7.89277,-0.928 -10.29251,-1.243 1.17313,-9.105 -0.24485,-0.0626 0.78328,-5.95438 7.12078,0.932 0.30487,-1.904 0.99663,-7.975 -0.39994,-0.1027 0.56756,-3.9303 0.48137,-3.959"},"56001":{"name":"Albany, WY","path":"m 353.13789,200.65181 8.69452,0.99553 -0.066,0.561 -0.30558,-0.0614 -0.10349,0.67957 -0.6242,-0.0532 -0.187,1.62648 0.32568,0.0513 -0.0127,0.36084 3.58754,0.2852 0.0865,-0.71429 0.27172,0.0435 0.12015,-1.23634 0.3054,0.0267 0.097,-0.66803 0.28407,-0.002 0.058,-0.51948 0.74305,-0.0142 -0.73074,7.92787 0.14497,0.0465 -0.25039,3.19438 -0.49663,4.8243 -0.11965,-0.008 -0.13648,1.96217 -1.3946,15.05312 -15.68569,-1.607 -2.23393,-0.265 0.27278,-2.862 0.69175,-6.259 1.95224,0.249 2.38727,0.227 0.16759,-2.003 0.77911,-7.632 1.37769,-14.20933"},"56045":{"name":"Weston, WY","path":"m 384.98042,163.14414 5.68022,0.515 -0.0784,0.898 -0.57051,6.606 -0.67571,8.06 -14.30806,-1.175 -2.98096,-0.256 0.71869,-7.5556 -0.12722,-0.0132 0.40291,-4.05476 0.11149,0.008 0.36863,-4.05475 z"},"56011":{"name":"Crook, WY","path":"m 375.15572,143.29119 1.14569,0.10895 15.9032,1.503 -1.54397,18.756 -5.68022,-0.516 -11.483,-1.02149 1.10229,-13.92984 0.22653,-0.0313 0.2086,-2.20713 -0.20009,-0.0818 0.32099,-2.57136"},"56005":{"name":"Campbell, WY","path":"m 360.10111,141.92506 1.9302,0.10008 1.15709,0.06 11.96732,1.20105 -0.32099,2.57136 0.20009,0.0818 -0.2086,2.20713 -0.22653,0.0313 -1.10229,13.92984 -0.36259,4.05822 -0.10546,-0.004 -0.39687,4.05822 0.13024,0.0149 -0.71567,7.55734 -15.51667,-1.52095 0.77078,-7.47932 0.24962,-0.002 0.73537,-7.98578 -0.18773,-0.0322 0.81788,-8.09121 0.18307,0.0158 0.0862,-0.98416 0.83272,-7.03928 -0.1479,-0.0802 0.23083,-2.68126"},"56009":{"name":"Converse, WY","path":"m 356.5304,176.28506 15.51655,1.50708 2.98096,0.256 -0.2817,3.334 -0.99662,10.576 -0.16046,2.58 -0.36014,4.01 -3.11414,-0.314 -3.22165,-0.248 -0.4806,4.02684 -0.74305,0.0142 -0.058,0.51948 -0.28407,0.002 -0.097,0.66803 -0.3054,-0.0267 -0.12015,1.23634 -0.27172,-0.0435 -0.0865,0.71429 -3.58754,-0.2852 0.0127,-0.36084 -0.32568,-0.0513 0.187,-1.62648 0.6242,0.0532 0.10349,-0.67957 0.30558,0.0614 0.066,-0.561 -8.69452,-0.99553 -0.0392,0 0.76888,-7.90647 0.17269,0.0168 1.12487,-10.92903 0.5905,-4.676 0.0321,-0.947 0.7427,0.0699"},"56027":{"name":"Niobrara, WY","path":"m 389.33597,179.22314 -0.95562,11.562 -0.75594,8.959 -3.17529,-0.28 -4.07207,-0.308 -2.88469,-0.253 -4.26337,-0.355 0.36014,-4.01 0.16046,-2.58 0.99662,-10.576 0.2817,-3.334 14.30806,1.175"},"56031":{"name":"Platte, WY","path":"m 373.22899,198.54814 4.26337,0.355 -1.97007,22.03 -10.69861,-0.97312 0.13648,-1.96217 0.11965,0.008 0.49663,-4.8243 0.25039,-3.19438 -0.14497,-0.0465 0.73074,-7.92787 0.4806,-4.02684 3.22165,0.248 3.11414,0.314"},"11001":{"name":"Washington, DC","path":"m 856.36053,257.44814 0.98236,-1.599 0.91461,0.474 2.00166,1.20251 -1.82515,2.88049 -0.12837,-1.141 -0.47246,-0.918 -0.80408,-0.353 -0.66857,-0.546"}}})
Index: public/vendors/vmap/maps/jquery.vmap.usa.districts.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.usa.districts.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.usa.districts.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add USA District Map Data Points */
+jQuery.fn.vectorMap('addMap', 'usa_districts_en', {"width":"2583.2649","height":"1556.9987","paths":{"nv2":{"name":"NV-2","path":"M 245.89352,459.40969 L 206.53125,641.72388 C 270.05694,728.77235 333.62764,815.78798 397.15738,902.83344 C 397.64674,902.51273 398.13843,902.19577 398.62837,901.87642 L 402.10203,900.26367 L 405.66431,900.26367 L 404.76045,898.86354 C 404.25672,898.09469 403.78601,896.39704 403.78612,895.90931 L 407.22391,888.99199 L 404.91995,888.26533 L 406.19599,883.35615 L 408.94302,882.66493 L 408.94302,881.01674 L 412.34579,879.26216 L 411.63688,871.99582 L 408.67718,873.11238 L 403.30718,872.38572 L 402.59827,870.13496 L 400.71966,871.73001 L 389.60748,871.60592 L 388.77451,870.27674 L 383.61718,871.34011 C 382.40404,870.75993 380.42708,869.28427 380.42708,869.28427 L 382.28797,866.44862 L 374.96847,860.51147 L 370.83906,859.838 L 371.60114,853.75912 L 370.41372,853.75912 C 369.76747,853.75912 369.2439,853.59181 369.24401,853.38691 C 369.24401,853.18206 370.16461,847.75867 371.28213,841.33543 C 372.39965,834.91218 373.38763,829.57125 373.49748,829.46117 L 387.10857,831.10942 L 395.89906,839.84671 L 395.89906,842.04434 L 399.30183,847.34347 L 401.44629,847.98149 C 402.62182,848.33368 405.4374,848.79708 407.72015,849.00942 L 411.885,849.39932 L 412.98381,851.80961 L 410.67985,857.16189 L 418.22976,857.16189 L 420.71094,854.84018 L 420.16154,849.94869 L 422.04015,847.05991 L 432.63837,838.96058 L 435.01322,833.25384 C 434.37919,832.09792 433.78768,830.92408 433.32956,829.69159 C 433.32955,829.52009 433.58995,829.37258 433.91441,829.37258 L 437.76025,831.78288 L 440.05702,831.01992 L 440.77481,833.50071 L 444.39533,832.26052 L 446.29417,831.07522 L 449.56785,829.68904 L 451.77896,829.37258 C 452.70638,829.37258 454.30765,829.13728 455.34124,828.8409 L 457.21985,828.30922 L 460.9948,830.09919 L 465.47866,828.62823 L 513.66688,508.00553 C 430.50121,496.27262 313.56875,474.90448 245.89352,459.40969 z "},"il15":{"name":"IL-15","path":"M 1697.938,577.56744 L 1670.7158,581.00566 L 1673.0729,602.34388 L 1679.9848,601.12098 L 1679.8784,607.60751 L 1674.8984,608.86586 L 1671.4778,613.61556 L 1673.0374,616.41576 L 1673.0729,622.22883 L 1671.3184,623.68209 L 1672.1159,624.90494 L 1687.5701,623.6289 C 1688.0948,625.95089 1688.194,628.34332 1688.5094,630.70031 L 1666.4623,633.16375 L 1668.3764,647.32427 L 1686.7726,644.86078 L 1688.4563,657.81615 L 1680.7291,659.03899 L 1684.3978,660.81127 L 1682.6964,663.771 L 1677.4504,662.06962 L 1675.8908,664.05457 L 1676.5643,671.05503 L 1687.2511,669.84989 L 1687.2511,674.65279 L 1691.6287,673.90843 L 1692.3198,677.38209 L 1695.0491,677.38209 C 1696.6112,678.76475 1698.2468,680.30842 1698.9836,680.04051 L 1699.0368,681.45833 L 1704.4954,681.06843 L 1706.5335,697.90506 L 1731.3631,694.96308 L 1733.9683,714.7417 L 1743.2201,713.53462 L 1743.183,719.13649 L 1746.9953,721.12399 L 1747.7552,723.10752 L 1744.3177,724.98404 L 1745.6654,735.72546 L 1744.2284,738.97011 L 1741.5887,739.67642 L 1741.6955,742.65503 L 1739.9055,746.111 L 1736.8914,745.41979 L 1736.8914,747.8459 L 1733.2594,748.27318 L 1732.905,752.52664 L 1729.2364,753.60771 L 1730.0693,767.21879 L 1724.9982,768.56601 L 1725.8527,775.83235 C 1722.5927,776.04201 1719.0294,776.10428 1715.6075,777.28533 L 1716.3342,784.00229 L 1721.2788,784.00229 L 1721.3143,779.1285 C 1722.5207,778.64031 1727.5083,778.14566 1731.3454,777.65754 L 1732.1252,782.86803 L 1736.2014,782.92117 L 1736.8217,784.2681 L 1737.318,783.63008 L 1736.3964,779.46526 C 1736.3059,778.99738 1736.0213,778.16789 1735.7761,777.62209 L 1735.333,776.62961 L 1735.7584,775.63714 C 1735.9908,775.09128 1736.124,773.8369 1736.0596,772.85464 L 1735.9533,771.08236 L 1737.0875,770.37345 L 1735.4748,766.49219 L 1735.8115,765.60605 C 1735.9977,765.1207 1736.3575,764.71991 1736.6267,764.71991 L 1737.123,764.71991 L 1736.8749,760.48414 L 1738.1332,759.91701 C 1738.8291,759.60838 1739.5239,759.03501 1739.6751,758.64097 L 1739.9586,757.93206 L 1736.5913,756.17754 L 1736.5913,752.81021 L 1737.7256,752.81021 L 1737.7256,749.28335 L 1740.5612,749.81503 L 1740.5612,748.14909 L 1742.8297,748.73397 L 1742.8297,744.9413 L 1745.1869,743.27536 L 1746.6933,738.91556 L 1745.6477,736.98375 L 1746.9237,736.29259 C 1747.623,735.91828 1748.5121,735.28899 1748.9087,734.89246 L 1749.6353,734.18355 L 1749.5112,733.13793 C 1749.4456,732.57001 1749.5899,730.83397 1749.8302,729.27437 C 1750.0704,727.71476 1750.5077,725.88487 1750.7873,725.19813 L 1751.2835,723.93979 L 1754.6331,722.20295 L 1755.4129,717.61278 L 1754.5091,716.23041 C 1754.012,715.47176 1753.6052,714.45053 1753.6052,713.96189 L 1753.6052,713.07575 L 1751.9038,712.41998 L 1751.9038,709.69068 L 1753.2153,707.59939 L 1752.5063,705.72078 L 1749.7948,704.69286 L 1749.0681,700.13813 L 1748.058,699.39377 C 1747.5077,698.98686 1746.6134,697.95435 1746.073,697.10751 L 1745.0982,695.56566 L 1745.0982,693.40348 L 1745.9844,692.67682 C 1746.4693,692.27438 1747.0963,691.49588 1747.3845,690.95774 L 1747.9162,689.98295 L 1745.6299,687.09417 L 1746.0907,682.87615 L 1748.6605,680.94434 L 1735.5811,579.0384 L 1704.8853,583.80586 L 1698.7178,583.80586 L 1697.938,577.56744 z "},"mn6":{"name":"MN-6","path":"M 1426.9213,308.55346 L 1402.2689,309.90039 L 1405.3704,312.43475 L 1383.7132,313.85257 L 1384.5462,329.2891 L 1388.4452,332.8691 L 1385.7336,336.85673 L 1386.2299,341.12791 L 1402.5525,339.88732 L 1402.5525,342.77613 L 1408.0998,342.77613 C 1408.6296,349.28543 1409.0149,355.36118 1409.3606,361.31805 L 1430.2722,359.92787 L 1430.3418,353.55158 L 1431.352,353.55158 L 1432.0609,350.73366 L 1435.4283,348.0437 L 1433.7865,346.48409 C 1434.54,345.43124 1437.7262,344.37839 1440.621,343.32554 L 1444.9986,344.49524 L 1445.4239,345.77128 L 1448.7203,344.03445 L 1451.3433,345.2396 L 1452.6194,349.51078 L 1464.7175,348.67521 L 1465.7873,363.33455 C 1469.0123,362.89988 1471.5414,363.9962 1474.4184,364.32702 L 1473.7271,354.08326 C 1472.6345,353.59861 1471.9428,352.71291 1471.7776,351.30078 L 1474.4361,348.64237 L 1473.2664,346.51564 L 1472.8765,337.92009 L 1461.5339,338.38088 L 1461.5339,331.52217 L 1439.5754,332.95772 L 1439.4159,324.52168 L 1428.2505,324.57484 L 1426.9213,308.55346 z "},"pa12":{"name":"PA-12","path":"M 2074.6765,602.15928 L 2071.6284,588.33875 L 2073.254,588.29633 C 2078.1767,583.70627 2077.7965,585.68827 2080.2717,582.95652 L 2086.0952,582.71067 L 2088.3053,580.71052 L 2085.5331,578.32586 L 2086.7578,572.34725 L 2084.5248,570.69997 L 2080.2602,571.5109 C 2079.6866,572.76976 2078.7493,574.16733 2077.4925,574.41534 C 2077.538,572.43226 2077.1529,571.46905 2076.3372,570.0299 L 2076.9354,569.06187 L 2079.4773,569.06187 L 2080.7251,567.70076 L 2081.9489,570.0742 L 2085.8087,568.32523 L 2087.725,570.19613 L 2090.6167,570.09682 L 2091.5485,567.80727 L 2089.2529,563.88971 L 2095.1869,564.76127 L 2092.7481,565.71153 L 2092.7481,566.62756 L 2095.0166,567.4928 L 2094.7387,571.43145 L 2097.3622,571.8522 L 2097.6886,567.81719 L 2100.6372,565.37552 L 2100.7176,561.34323 L 2103.4874,559.87346 C 2104.2258,562.21953 2105.78,562.93392 2106.9263,564.46415 C 2106.9263,564.7427 2106.5259,565.12425 2106.0365,565.31205 L 2105.668,565.4722 C 2105.6236,567.64008 2105.3752,569.2188 2104.991,570.68414 L 2107.7696,570.88037 L 2109.6173,572.47865 L 2110.5746,571.09673 L 2112.1107,571.55338 L 2112.2227,570.24292 L 2111.2742,569.16044 L 2113.1166,566.49877 L 2112.0479,564.80839 L 2112.0305,560.69381 L 2113.4521,559.28778 L 2115.3446,560.07514 L 2117.6338,558.22441 L 2118.019,559.27452 C 2117.267,560.42392 2116.3563,561.6413 2116.6013,562.85868 L 2117.4519,567.41828 L 2123.5648,570.465 L 2124.3524,571.83184 L 2126.8044,571.19065 L 2129.191,565.64302 L 2130.9882,566.16927 C 2130.7102,563.2365 2131.2708,565.0628 2133.4857,556.48714 L 2124.4239,552.58362 L 2122.8059,556.01789 L 2117.163,556.01789 L 2117.9067,552.25412 L 2116.2006,551.99567 C 2114.8297,553.36701 2114.5919,554.37576 2114.1728,557.15215 L 2113.5727,557.56007 L 2111.9906,555.45077 C 2112.9751,553.33335 2113.2343,550.80801 2113.7203,548.46396 L 2109.0589,547.16643 L 2108.4179,546.2916 C 2108.0654,545.81043 2106.9552,544.9921 2105.9508,544.47308 L 2104.1245,543.52941 L 2102.2864,546.33461 L 2099.0943,543.97461 L 2097.8523,544.74226 L 2097.8523,542.47374 C 2099.0076,541.76801 2099.9364,540.33709 2100.6385,538.58889 L 2099.4937,534.44279 L 2101.8994,531.06423 L 2104.2267,531.04421 L 2102.9125,527.472 C 2104.1654,526.4772 2105.1011,526.57019 2108.167,526.5272 L 2107.387,532.19849 L 2110.8638,532.19849 L 2111.86,528.24021 L 2118.9381,528.17182 L 2112.5165,542.95644 L 2112.9081,545.52601 C 2114.2507,545.26394 2115.4974,546.43958 2116.7921,546.89637 L 2118.1679,545.7545 L 2118.937,546.99891 L 2120.4049,545.78063 L 2121.8022,547.86501 L 2121.8807,546.92389 L 2125.5881,550.5173 L 2126.9653,547.49467 C 2128.2876,547.36673 2129.3703,548.32906 2130.6447,549.26743 C 2131.2367,548.4602 2132.1187,548.0132 2132.9949,548.33438 L 2134.3546,545.40252 L 2136.6365,545.75686 L 2138.1674,538.00629 L 2133.0959,535.03413 L 2128.653,535.03413 C 2127.9209,535.93663 2127.128,536.92548 2126.1408,537.50597 L 2124.4983,535.0917 L 2126.4067,531.08964 L 2127.9101,532.33737 L 2129.6115,530.92535 C 2129.3602,529.48084 2129.9222,528.51076 2130.6876,527.40512 C 2133.0369,529.35315 2134.7084,530.11511 2136.9222,531.01262 L 2139.0369,529.68926 L 2139.7074,524.91501 L 2140.9059,523.99004 L 2143.2226,524.18335 L 2143.2226,526.5272 L 2140.5103,527.16001 L 2141.7985,529.4603 L 2145.7604,528.65164 L 2147.9291,529.28087 L 2147.7596,536.6454 L 2154.4498,537.93456 C 2155.2899,540.11322 2155.1989,541.7037 2155.1323,543.73532 L 2153.2392,545.82715 L 2152.7368,551.88488 L 2147.4955,553.46582 L 2146.5586,558.28641 L 2143.7974,558.72754 L 2142.0924,562.33848 L 2143.2005,564.40888 L 2140.2953,566.31241 L 2138.5577,565.64561 L 2132.3701,569.68316 L 2132.0026,572.2032 L 2130.2024,573.718 L 2131.4002,576.15529 L 2130.4967,578.11098 L 2125.0928,576.15098 L 2125.076,573.78968 C 2122.7374,573.09472 2120.2027,572.59588 2117.7661,572.46464 L 2116.1555,574.76407 L 2111.7227,573.16896 L 2112.4091,576.15098 L 2110.2366,579.83737 L 2112.4471,580.59931 L 2112.4226,582.46006 L 2111.2288,582.34533 L 2110.0841,585.2167 L 2108.3275,585.22958 L 2105.7471,590.85856 L 2103.24,587.76181 L 2099.8372,590.6008 L 2103.5236,593.99954 L 2103.5236,596.06877 L 2074.6765,602.15928 z "},"wa3":{"name":"WA-3","path":"M 191.0061,115.69425 L 186.94758,117.34247 L 186.91214,118.72485 L 183.93471,118.61851 L 183.26125,120.44396 L 179.39768,119.04386 L 178.0862,119.62871 L 177.48362,123.38594 L 178.81283,124.98099 L 175.87085,136.96158 L 137.14659,127.26722 L 136.73897,128.54326 L 136.75669,129.8193 L 139.59234,133.22208 L 140.77976,131.18396 L 142.39253,132.51317 L 144.20026,131.00673 L 146.32699,133.7892 L 145.99026,134.90574 L 142.39253,135.93366 L 142.39253,137.40465 L 140.03541,138.14901 L 140.31897,139.37188 C 140.48003,140.04429 140.78289,141.54688 140.99243,142.70376 L 141.38234,144.79505 L 138.13907,147.68386 L 136.20729,147.24079 L 135.79966,148.44594 L 134.45273,147.61297 L 134.45273,146.53188 C 134.45273,145.93276 134.85131,144.43622 135.33887,143.21772 L 136.22501,141.00237 L 135.87055,136.05772 L 134.55907,142.49109 L 133.26531,148.90673 L 130.07521,157.89217 L 130.50055,157.89217 C 130.73438,157.89217 131.08308,157.50937 131.26263,157.04148 L 131.58164,156.19079 L 133.83243,156.19079 L 134.93125,158.67198 C 135.53433,160.03537 136.30656,161.33058 136.65036,161.54307 L 137.27065,161.91524 L 141.32917,160.00118 L 142.53432,161.20633 L 145.42313,160.10752 L 147.05362,160.74554 L 146.38016,162.5001 L 150.29689,164.13059 L 154.85164,164.13059 L 156.69481,166.96623 L 156.03907,170.65257 L 156.78342,171.62732 C 157.18835,172.16092 158.238,172.86825 159.12283,173.20465 L 160.7356,173.82495 L 164.12065,172.63752 L 168.35639,172.63752 L 176.88105,183.00534 L 178.0862,190.50207 L 177.20006,204.68029 L 175.62273,208.34891 L 178.97233,211.85801 L 181.80798,213.27584 C 183.36758,214.05833 185.52934,215.37735 186.61085,216.20009 L 188.57808,217.68881 L 191.73273,217.35207 L 192.12263,218.39772 C 192.33309,218.96716 192.78039,219.62515 193.11511,219.86871 L 193.71768,220.31178 L 195.70263,219.99277 C 196.79435,219.81805 198.70841,219.60548 199.9561,219.51425 C 201.20378,219.42303 203.24544,219.15479 204.49313,218.9294 C 205.74081,218.70401 207.78247,218.21641 209.03016,217.84831 L 211.29867,217.19257 L 213.49629,215.17217 L 216.11926,215.17217 L 216.11926,211.43267 L 222.46402,210.93643 L 227.21372,206.16901 L 229.44679,197.02405 L 233.07996,197.66207 L 237.91827,177.15683 L 243.00471,178.29109 L 243.74907,177.08594 L 242.36669,170.45762 C 243.8777,168.97385 245.25093,167.03082 246.76194,164.07742 L 246.08847,161.45445 L 249.20768,158.99099 L 246.74421,157.25415 L 246.60243,154.3299 L 233.1154,151.45881 L 230.82917,153.92227 L 229.85441,153.92227 C 229.32074,153.92111 228.08685,153.44538 227.12511,152.85891 C 226.16337,152.27243 224.50452,151.61092 223.43877,151.38792 L 215.8357,149.22574 C 214.07981,147.62231 212.55355,146.52407 210.43025,145.3799 L 210.99738,144.31653 L 211.56451,143.25317 C 208.06208,141.39018 204.55964,139.57311 201.7461,136.83752 L 197.35085,137.15653 L 194.67471,133.80693 L 196.44699,129.99653 L 192.90243,128.27742 L 192.19352,126.04435 L 193.15055,125.38861 L 190.59847,123.79356 C 190.81744,121.69443 191.21532,120.01027 192.06946,118.08683 L 191.1656,117.62604 L 191.0061,115.69425 z "},"wa2":{"name":"WA-2","path":"M 224.64392,9.2158414 L 222.92481,9.9601978 C 221.98445,10.376454 221.22331,10.921849 221.22342,11.165346 C 221.22342,11.408844 221.86133,11.843619 222.64124,12.140099 L 224.05907,12.689505 L 224.05907,13.238911 C 224.05906,13.540864 223.54871,14.148768 222.92481,14.585841 L 221.79055,15.365643 L 224.05907,17.421485 L 224.05907,20.133069 L 225.91996,22.968712 L 225.31738,24.227029 C 224.98862,24.914709 224.57637,25.933482 224.3958,26.495544 L 224.07679,27.523465 L 225.19332,26.832277 L 225.19332,28.019702 L 226.36303,28.019702 L 225.19332,25.839801 L 226.68204,24.670098 C 227.50312,24.024249 228.37894,23.482673 228.63154,23.482673 C 228.88402,23.482672 229.81525,24.097043 230.68738,24.847326 L 232.26471,26.21198 L 230.29748,28.391881 L 230.29748,32.663069 L 232.53055,35.516435 L 231.3254,37.78495 L 228.86194,37.306435 L 228.68471,42.268811 L 227.33778,43.881583 L 225.19332,42.729603 L 225.19332,40.212969 L 223.20837,39.007821 L 221.75511,39.078712 C 220.95959,39.121167 220.00257,39.343713 219.62837,39.57495 C 219.25423,39.806188 218.95479,40.230534 218.95491,40.514257 L 218.95491,41.028217 L 220.53223,40.425643 L 221.34748,41.737128 L 220.72719,42.375148 C 220.3801,42.722276 220.08905,43.334305 220.08917,43.739801 L 220.08917,44.466435 L 223.26154,44.466435 L 223.93501,43.792969 C 224.30932,43.418666 224.64582,43.227257 224.66164,43.367623 C 224.67729,43.507989 224.77923,44.690207 224.89204,45.990593 L 225.08699,48.347722 L 229.09233,52.122672 L 230.22659,55.135543 L 228.02897,57.120494 L 225.86679,55.170989 L 225.19332,56.269801 L 223.01342,55.702672 L 221.91461,59.637127 L 222.53491,62.827226 L 226.32758,66.619899 L 226.32758,66.070494 C 226.32758,65.766586 226.05091,65.343633 225.70728,65.131187 C 225.36355,64.91874 224.71382,63.885324 224.27174,62.827226 L 223.47422,60.895444 L 225.97313,57.510395 L 227.9758,57.510395 L 229.07461,61.515741 L 228.06441,65.02485 L 229.25184,67.364256 C 229.90036,68.654644 230.82256,70.162202 231.30768,70.71386 L 232.19382,71.724058 L 231.14818,75.942077 L 227.46184,76.296533 L 227.46184,76.739602 C 227.46183,76.977388 228.12782,77.791127 228.95055,78.547325 L 230.45699,79.911978 L 231.40059,78.24977 L 235.64976,83.83356 L 238.80441,83.226137 L 240.77164,85.406038 L 238.23728,87.479602 L 238.18841,89.367914 C 244.76225,90.524873 249.38099,91.535196 254.68402,93.132049 C 254.12835,98.973855 252.69274,103.03549 251.18349,107.39253 L 253.5852,106.76198 L 256.95253,110.37742 L 256.95253,111.95475 L 259.25649,111.95475 L 263.47451,109.84574 L 268.82679,109.06594 L 271.69788,107.98485 L 271.69788,103.35921 L 274.9057,102.13633 L 274.05501,97.492968 L 275.84501,95.508018 L 273.47015,92.955938 L 273.39926,87.65683 L 276.50075,83.970493 L 276.14629,81.347523 L 277.65273,80.762671 C 278.47506,80.450019 279.87105,80.195543 280.77194,80.195543 L 282.42015,80.195543 L 285.30897,78.884058 L 284.82989,76.942578 C 284.82989,76.942578 287.5916,75.796376 287.71982,75.720262 C 286.10805,72.396962 284.83841,68.975911 284.74184,66.141385 L 282.88095,65.432474 L 284.75956,63.358909 L 284.03293,61.44485 L 285.98243,59.300395 L 285.90073,55.681776 L 289.9958,55.24188 L 291.13173,53.872936 L 296.36798,53.824058 L 296.72243,56.376137 L 300.44421,56.376137 L 301.60907,52.945943 L 299.35995,52.924488 L 298.24659,49.694652 L 305.14075,44.998118 L 302.65956,39.876237 L 304.00649,36.296237 L 302.88996,35.179702 L 302.88996,32.060494 L 304.36636,30.913364 L 303.73095,30.017525 L 301.11712,30.659837 L 299.93137,28.126039 L 300.35672,27.036368 L 224.64392,9.2158414 z M 209.13649,22.295247 L 208.00224,23.429504 L 209.49095,25.237227 L 210.62521,24.10297 L 209.13649,22.295247 z M 200.80679,22.348415 L 200.80679,23.021881 C 200.80679,23.394714 201.48573,24.408914 202.31323,25.272673 L 203.81966,26.849999 L 204.29818,26.548712 C 204.56239,26.385435 204.77669,26.00571 204.77669,25.698019 C 204.77669,25.39033 204.14222,24.514138 203.37659,23.748514 C 202.61097,22.982892 201.71774,22.348415 201.39164,22.348415 L 200.80679,22.348415 z M 223.49194,23.961188 L 222.07412,24.42198 L 221.70194,26.318316 L 223.49194,26.318316 L 223.49194,23.961188 z M 213.00006,24.049801 L 207.41738,28.303267 L 207.22243,30.908514 L 209.03016,32.025049 L 206.8857,31.706039 L 205.84006,29.756534 C 205.26363,28.680441 204.42828,27.579868 203.97917,27.328514 L 203.16392,26.885445 L 201.99422,27.062673 C 201.35387,27.16039 200.68304,27.399123 200.48778,27.594356 L 200.13332,27.948811 L 201.05491,29.437524 L 201.16125,34.222672 L 205.57422,38.511583 L 209.79224,40.40792 L 211.086,42.83594 L 214.70144,42.481484 L 214.75461,39.344554 L 217.20035,37.625445 L 216.6155,36.083564 L 217.82065,35.321484 L 217.11174,30.855346 L 217.64342,30.855346 C 217.93556,30.855346 218.66845,30.48793 219.27392,30.040098 L 220.37273,29.224851 L 215.32174,24.049801 L 213.00006,24.049801 z M 223.72233,28.19693 C 223.69723,28.201339 223.66808,28.215735 223.65144,28.232376 C 223.51834,28.365499 223.75492,29.010626 224.1654,29.66792 L 224.90976,30.873069 L 225.29966,29.685643 L 224.59075,28.83495 C 224.25316,28.428135 223.89806,28.166067 223.72233,28.19693 z M 220.51451,31.97188 L 218.95491,33.265643 L 218.95491,37.093762 L 221.09936,37.093762 L 221.54243,36.101286 C 221.78097,35.555426 221.90483,34.725999 221.826,34.258118 C 221.74716,33.790237 221.42302,33.092261 221.09936,32.698514 L 220.51451,31.97188 z M 223.26154,35.410098 L 222.81847,36.119009 C 222.575,36.502297 222.36245,36.987854 222.35768,37.200098 C 222.35292,37.412344 222.9319,37.672856 223.63372,37.78495 C 224.33554,37.897043 224.98667,37.93431 225.08699,37.873563 C 225.18731,37.812816 224.82566,37.244405 224.27174,36.597524 L 223.26154,35.410098 z M 219.59293,45.529801 L 218.90174,46.841286 C 218.51875,47.561803 217.11146,49.28167 215.76481,50.651682 C 214.41822,52.021695 213.15341,53.619194 212.96461,54.213959 L 212.62788,55.295048 L 213.6558,56.836929 C 214.22752,57.679439 214.85131,58.745414 215.03818,59.211781 L 215.37491,60.062474 L 217.53709,60.062474 L 217.43075,62.047424 C 217.37585,63.139147 217.22369,65.18081 217.07629,66.584454 L 216.81045,69.136533 L 218.44095,70.979701 L 218.10422,72.539305 L 221.50699,72.539305 L 221.57788,76.367424 L 223.70461,77.927028 L 226.32758,75.463563 L 226.32758,70.731583 L 225.12243,69.650493 C 224.45555,69.056284 223.54874,67.739979 223.11976,66.726236 L 222.33996,64.883068 L 221.11709,64.883068 L 220.8158,66.017325 C 220.65264,66.641167 220.33303,67.151583 220.08917,67.151583 L 219.6461,67.151583 L 219.8056,57.421781 L 217.44847,55.507722 L 217.90926,54.107623 L 219.46887,54.107623 L 220.65629,52.122672 L 222.30451,54.249405 L 225.19332,53.522771 L 225.19332,52.760692 C 225.19332,52.340817 224.61911,51.262133 223.91728,50.368118 L 222.64124,48.737623 L 222.64124,45.884256 L 219.59293,45.529801 z "},"fl18":{"name":"FL-18","path":"M 2270.6671,1438.4156 L 2270.4012,1438.4511 L 2270.5962,1439.798 C 2270.5961,1439.7979 2270.3389,1439.8111 2270.2772,1440.0993 C 2270.2154,1440.3873 2270.1365,1440.5933 2270.3835,1440.7373 C 2270.6304,1440.8813 2270.7734,1440.8614 2270.7734,1440.8614 L 2270.7911,1441.269 L 2268.7709,1442.6903 L 2269.4514,1443.9771 L 2268.8345,1444.3211 L 2268.1326,1443.1123 L 2267.5479,1443.4489 L 2266.13,1440.8614 L 2265.8465,1441.0031 L 2267.282,1443.6261 L 2266.9098,1443.8565 L 2266.8566,1446.834 L 2262.9931,1449.4924 L 2266.0059,1453.7104 L 2266.3604,1450.9279 L 2269.1251,1449.1202 L 2270.8265,1449.7759 L 2270.8265,1453.1433 L 2271.695,1453.6749 C 2271.5206,1449.6144 2271.6832,1445.5188 2271.181,1441.4817 L 2270.6671,1438.4156 z M 2263.1703,1461.7565 L 2262.7981,1463.9896 L 2260.6182,1463.9896 L 2260.6182,1466.0809 L 2263.4539,1467.3746 L 2263.4539,1470.9369 L 2260.2283,1470.2989 L 2263.1703,1479.2843 L 2263.9855,1477.6007 C 2264.432,1476.6695 2264.9986,1475.8992 2265.2616,1475.8993 C 2265.5246,1475.8992 2265.9737,1475.3076 2266.2541,1474.5701 L 2266.768,1473.2231 L 2263.2589,1466.0986 L 2264.5704,1462.6427 L 2263.1703,1461.7565 z M 2272.971,1462.3059 L 2271.9608,1462.9262 L 2271.9608,1465.691 L 2272.4925,1465.691 C 2272.7859,1465.6908 2273.1484,1465.488 2273.3077,1465.2302 L 2273.609,1464.7516 L 2272.971,1462.3059 z M 2272.1026,1470.1217 L 2269.9758,1470.5293 L 2269.4087,1474.4815 L 2267.4415,1478.0969 L 2264.9603,1478.4514 L 2264.4995,1479.8692 L 2266.8566,1479.8692 L 2266.8566,1482.8112 L 2268.1504,1482.3681 L 2269.7632,1478.1678 C 2270.6532,1475.8507 2271.5508,1473.0875 2271.7481,1472.0357 L 2272.1026,1470.1217 z M 2265.7933,1483.272 L 2265.3325,1483.9809 C 2265.0801,1484.3706 2264.8717,1485.3278 2264.8717,1486.1076 L 2264.8717,1487.5254 L 2263.5956,1487.7204 C 2262.8938,1487.82 2262.3196,1487.9907 2262.3196,1488.1103 C 2262.3196,1488.2299 2262.6133,1488.9818 2262.9754,1489.7762 C 2263.3373,1490.5707 2263.7958,1491.2118 2264.0033,1491.2118 C 2264.2107,1491.2116 2264.9203,1490.6375 2265.5629,1489.9357 C 2266.2052,1489.2337 2266.9319,1488.0217 2267.1756,1487.2419 C 2267.4193,1486.4619 2267.6356,1485.2498 2267.6719,1484.548 L 2267.7428,1483.272 L 2265.7933,1483.272 z M 2246.6172,1509.8738 L 2245.1994,1511.5752 L 2245.5716,1512.1778 C 2245.7728,1512.5033 2246.1899,1512.7627 2246.4932,1512.7627 C 2246.7965,1512.7627 2247.1917,1512.3654 2247.3793,1511.8765 L 2247.716,1510.9904 L 2246.6172,1509.8738 z M 2237.3659,1517.0693 L 2235.5228,1518.8947 L 2236.338,1520.2062 L 2238.5356,1518.239 L 2237.3659,1517.0693 z M 2231.6415,1521.181 L 2230.011,1522.5279 L 2230.3123,1523.0419 C 2230.4832,1523.3185 2230.8368,1523.5381 2231.0921,1523.5381 C 2231.3475,1523.5381 2231.8611,1523.1807 2232.2263,1522.7406 L 2232.8821,1521.9431 L 2231.6415,1521.181 z M 2219.7141,1521.1987 L 2216.6657,1521.5532 L 2216.6657,1522.652 C 2217.6917,1523.2119 2218.7397,1523.7164 2219.8381,1524.1052 C 2220.0201,1524.1098 2220.3323,1523.9476 2220.5293,1523.7508 L 2220.8838,1523.3963 L 2219.7141,1521.1987 z M 2213.0503,1522.2975 L 2211.8275,1523.0596 L 2212.4123,1523.9812 L 2210.64,1524.6724 L 2211.3489,1525.8066 L 2209.0273,1525.8066 L 2207.6094,1528.0751 L 2205.0042,1528.0751 L 2204.632,1529.0322 C 2204.4317,1529.5542 2203.7983,1530.5112 2203.2142,1531.1589 C 2202.6299,1531.8066 2201.7292,1532.7837 2201.2115,1533.3388 C 2200.6939,1533.8939 2199.5632,1534.6956 2198.6949,1535.1288 C 2197.8265,1535.5619 2196.3689,1536.097 2195.4516,1536.2985 L 2193.7679,1536.653 L 2192.4387,1538.2657 L 2193.1477,1540.1089 L 2194.1224,1539.6835 C 2194.6657,1539.4506 2196.2633,1538.878 2197.6669,1538.4075 C 2199.0706,1537.9371 2200.6018,1537.2387 2201.0697,1536.8656 C 2201.5376,1536.4925 2202.3445,1536.0372 2202.8597,1535.8554 C 2203.3747,1535.6737 2205.0974,1534.5877 2206.6879,1533.4451 L 2209.5766,1531.3716 L 2209.5766,1529.174 L 2211.9869,1530.4677 L 2214.5922,1529.2803 L 2215.2302,1530.9462 L 2217.0734,1530.0069 C 2218.0928,1529.4905 2219.3608,1528.6993 2219.8913,1528.2346 L 2220.8661,1527.3839 L 2219.1824,1524.8142 L 2215.1061,1524.1584 L 2213.0503,1522.2975 z M 2174.4501,1539.5417 L 2173.9362,1540.1798 C 2173.6509,1540.5375 2173.2474,1541.4097 2173.0323,1542.1116 L 2172.6424,1543.3876 L 2173.564,1543.3876 C 2174.0734,1543.3876 2174.981,1543.1257 2175.5844,1542.8027 L 2176.6832,1542.2179 L 2176.6832,1540.1266 L 2174.4501,1539.5417 z "},"fl17":{"name":"FL-17","path":"M 2267.6187,1432.1949 L 2262.2487,1434.4989 L 2265.7719,1440.8044 L 2266.13,1440.7123 L 2267.4947,1443.0058 C 2267.615,1443.0058 2267.8447,1442.8834 2268.115,1442.7045 L 2268.8593,1444.1223 L 2269.3024,1443.9274 L 2268.4694,1442.4564 C 2268.797,1442.206 2269.1535,1441.8963 2269.4974,1441.5526 L 2269.4087,1440.0284 L 2269.4087,1436.218 C 2269.3962,1436.2033 2269.3857,1436.1785 2269.3733,1436.1648 C 2268.9297,1435.6724 2268.5628,1434.9067 2268.558,1434.4635 C 2268.5533,1434.0201 2268.3341,1433.3229 2268.0795,1432.9216 L 2267.6187,1432.1949 z "},"ca20":{"name":"CA-20","path":"M 153.34521,756.8687 L 132.75135,770.74565 L 144.4661,789.15959 L 142.29092,799.43176 L 139.27333,799.29701 L 138.03273,800.16546 L 137.34154,803.74546 L 138.15679,804.43662 C 138.61146,804.81393 138.98976,805.43034 138.98976,805.8013 C 138.98976,806.17214 138.46712,807.02216 137.83778,807.69761 L 136.70352,808.9382 L 136.96937,812.35872 L 137.55422,812.42961 C 137.87776,812.46659 138.33047,812.46659 138.56441,812.42961 C 138.79836,812.39269 139.02464,812.67773 139.06065,813.06763 C 139.09661,813.45753 139.11197,814.35848 139.15399,814.70522 C 141.24528,817.39318 144.11165,819.79043 145.4763,822.4784 L 148.89679,823.45318 L 150.04877,827.38763 L 151.9652,827.43607 L 153.84144,830.34731 L 152.35273,832.73991 L 153.73511,834.13998 L 153.68666,835.74212 L 155.57828,836.17813 L 154.74531,841.22909 C 157.64476,843.32418 160.01746,846.04333 162.5256,848.58407 L 168.33867,849.77147 L 169.02986,852.3413 L 167.16897,857.21503 L 168.35639,858.40248 L 170.81986,857.091 L 171.49333,857.64038 C 171.86332,857.94345 173.31523,858.49175 174.71887,858.86328 L 177.27095,859.53674 L 179.2559,861.30902 L 179.2559,863.68387 L 184.25372,866.83852 L 185.60065,868.66394 C 186.34404,869.66765 187.43727,871.5863 188.02867,872.93516 L 189.10976,875.39859 C 193.22026,877.46033 197.08855,878.6986 201.58659,880.1306 L 203.23481,883.00169 L 208.09085,885.16387 L 209.296,887.78684 L 210.11125,887.78684 C 210.56353,887.78684 211.34019,887.39087 211.83035,886.9007 L 212.71649,886.01456 L 212.71649,885.14612 L 212.71649,884.29543 L 209.42006,883.03714 L 209.03016,881.01674 C 208.81822,879.90506 208.60098,877.64198 208.55164,875.98347 L 208.46303,872.9706 L 206.76164,872.01357 L 205.00709,873.32506 L 205.06026,880.1306 L 202.72085,880.46731 L 201.44481,877.68486 L 193.43412,875.69991 L 193.43412,871.83635 L 192.26441,869.63872 L 190.59729,869.63872 L 191.76818,866.23595 L 196.03936,866.23595 L 197.20907,867.40565 L 199.06996,866.69674 L 199.42441,864.62315 C 199.61582,863.48362 199.79124,862.2944 199.81431,861.98248 C 199.83734,861.67056 199.55596,860.69833 199.19402,859.82031 L 198.53828,858.22526 L 198.53828,853.26288 L 200.24675,846.33682 L 186.62857,843.37357 L 192.97332,813.40434 L 195.61402,814.06011 L 197.27996,806.12031 L 194.47976,806.12031 L 195.77352,800.44902 L 193.04422,800.44902 L 188.4363,803.7809 L 188.04639,803.391 C 187.83145,803.17776 186.98016,803.0011 186.15006,803.0011 C 185.32001,803.0011 184.51602,803.16245 184.36006,803.35555 L 184.07649,803.71001 L 175.46323,801.93773 L 178.65332,791.37496 L 184.236,791.37496 L 184.94491,788.57476 L 187.26659,787.33417 L 188.89709,788.6811 L 188.89709,790.80783 L 191.27194,790.80783 L 192.54798,794.2106 L 195.41907,794.15741 L 198.05386,789.31912 C 197.24215,787.52126 196.57578,786.45002 195.32809,784.94276 L 192.34593,786.31924 L 188.47529,784.7171 L 187.74511,782.77939 L 187.16026,780.61721 C 185.783,779.76493 185.56836,779.59088 183.17381,779.36839 L 181.54804,784.52807 L 183.79293,786.2708 L 183.79293,788.53932 L 178.68877,788.53932 L 178.68877,786.69728 L 164.56963,783.51195 L 163.30424,784.04363 L 161.64419,782.99206 L 156.57075,781.27298 L 158.18352,774.85734 L 156.09224,771.24189 L 155.596,759.70434 L 153.34521,756.8687 z "},"pa10":{"name":"PA-10","path":"M 2275.3459,409.67959 L 2206.617,427.27831 L 2211.278,441.15524 C 2209.893,442.25895 2208.3398,443.12544 2206.8296,444.06177 C 2206.8337,445.31137 2207.1213,446.55685 2207.4145,447.78355 L 2212.9794,446.43662 L 2214.5745,450.2293 L 2217.162,450.24702 L 2220.8838,456.44999 L 2220.4939,458.04504 L 2218.2608,455.65246 L 2216.0455,456.16643 L 2215.2479,453.93336 L 2209.0627,455.19167 L 2207.5031,459.87048 L 2202.8243,460.79207 L 2202.5407,462.40484 L 2201.0697,463.00742 L 2201.0697,465.8785 L 2199.3683,466.53425 L 2199.3683,468.05841 L 2206.9714,469.84841 L 2207.7335,472.18781 L 2210.2501,471.83336 L 2211.916,473.87147 L 2210.5514,474.73989 L 2210.6578,476.21088 L 2212.1465,475.04118 L 2215.0884,473.18029 L 2216.9493,472.55999 L 2216.9493,472.04603 C 2216.9493,471.7583 2217.4597,471.00392 2218.0836,470.38009 L 2219.2178,469.24583 L 2220.9192,469.24583 L 2220.9192,471.39029 L 2223.7549,473.25118 L 2223.7549,476.01593 L 2220.3521,477.78821 L 2220.3521,478.88702 L 2217.5873,478.88702 L 2217.2329,483.05187 L 2215.2479,483.65444 C 2214.1562,483.99268 2212.6888,484.6605 2211.9869,485.12543 L 2210.7109,485.9584 L 2210.7109,486.61415 C 2209.183,491.82085 2206.353,496.57201 2203.9585,501.41266 L 2206.2093,510.06137 L 2214.9644,509.37019 L 2217.2329,508.04098 L 2220.9192,508.20048 L 2222.9219,510.02593 L 2226.0234,508.94484 L 2226.0234,510.64623 L 2228.3273,510.64623 L 2228.9831,508.94484 L 2229.7451,508.94484 C 2230.1641,508.94484 2230.7009,508.62582 2230.9503,508.23593 C 2231.1997,507.84603 2232.5943,506.98158 2234.0341,506.30415 L 2236.6393,505.06355 L 2248.6199,495.01474 C 2248.2573,493.92763 2247.5702,492.96548 2246.9185,492.00187 L 2242.6296,493.3488 C 2241.6931,491.2571 2241.2182,490.51199 2240.0952,489.16623 L 2239.9889,485.23177 L 2236.8697,483.40633 L 2236.5152,480.87197 L 2233.6442,480.53524 L 2231.5883,474.75761 L 2233.4138,473.80058 C 2235.7495,470.24587 2237.3535,466.24292 2239.3509,462.49345 L 2244.5259,461.83771 L 2245.3589,468.20019 L 2249.1339,465.3291 L 2249.701,465.89623 L 2253.3696,461.27058 L 2255.7267,462.01494 L 2259.7675,457.42474 L 2263.4539,458.02732 L 2263.4539,460.7389 L 2264.5881,460.7389 L 2264.5881,456.9994 L 2265.7756,455.81197 L 2264.0033,454.3587 L 2267.4592,450.81415 L 2270.6316,444.57573 L 2273.3786,445.14286 L 2273.6622,444.50484 C 2273.6622,444.28366 2273.2752,443.67208 2272.7938,443.14019 L 2271.9077,442.16544 L 2273.5736,441.52742 L 2277.5966,446.43662 L 2273.095,449.8394 C 2273.7136,450.66199 2274.5314,451.23076 2275.4522,451.73573 L 2274.0875,453.36623 L 2271.9608,453.36623 L 2271.9785,454.07514 C 2271.9884,454.46504 2272.3439,455.23065 2272.7583,455.77652 C 2273.1727,456.32239 2273.7691,456.76899 2274.0875,456.769 L 2274.6547,456.769 L 2275.9484,461.87316 L 2278.1815,461.87316 L 2278.9613,460.02999 C 2279.385,459.01625 2280.2694,457.6087 2280.769,457.19435 L 2298.6158,450.76098 L 2298.6158,457.33613 L 2302.4085,457.33613 L 2303.4364,458.47039 C 2304.001,459.09423 2304.743,459.59577 2305.0847,459.58692 L 2305.7049,459.5692 L 2309.5685,453.189 L 2309.8521,446.47207 L 2310.5787,444.66435 C 2310.9776,443.67592 2311.6414,442.66298 2312.0497,442.41355 L 2312.7941,441.97049 L 2312.7941,440.46405 L 2315.1867,439.82603 L 2313.6448,438.17781 L 2312.1738,437.11445 L 2305.2796,437.41573 L 2303.6314,435.78524 L 2301.0439,436.44098 L 2297.4816,432.4888 C 2297.4807,432.27885 2296.7022,431.58847 2295.7625,430.96464 L 2294.0611,429.83039 L 2294.7523,426.65801 L 2293.4762,425.13385 L 2292.6078,420.1892 L 2290.1089,419.00177 L 2290.1089,417.56623 L 2288.6379,416.09524 L 2284.4376,415.599 L 2283.0552,416.50286 L 2280.6804,414.23435 L 2279.6879,411.96583 L 2277.6321,411.54049 C 2277.6321,411.3036 2277.1249,410.78018 2276.4978,410.38851 L 2275.3459,409.67959 z "},"ny14":{"name":"NY-14","path":"M 2358.1904,464.84616 L 2358.8492,465.17559 L 2358.5528,465.86738 L 2359.1787,465.96622 L 2360.3646,466.59213 L 2360.8588,465.86738 L 2361.6494,466.39447 L 2360.5623,467.54747 L 2359.4752,467.44864 L 2358.4539,469.82053 L 2357.8609,466.36153 L 2358.1904,464.84616 z "},"ny8":{"name":"NY-8","path":"M 2357.615,461.41237 L 2357.0478,466.25068 L 2357.0301,468.96227 L 2356.9947,472.15237 C 2356.9946,472.15235 2356.8938,472.60831 2356.9238,472.96761 C 2356.9536,473.32692 2357.0833,473.80058 2357.0833,473.80058 L 2357.3137,474.10187 L 2358.4834,474.8285 L 2358.8201,475.14751 L 2358.8378,476.17543 L 2358.9974,476.19316 L 2359.1746,475.99821 L 2359.4758,476.40583 C 2359.476,476.40584 2359.826,477.61098 2359.7063,477.61098 C 2359.5866,477.61097 2358.3416,477.69959 2358.3416,477.69959 L 2358.0935,477.43375 L 2357.9694,477.96543 L 2358.1644,478.4085 L 2361.6026,478.23128 L 2361.3368,477.59326 C 2361.4815,477.46261 2361.5671,477.32354 2361.5671,477.20336 C 2361.5671,476.96624 2361.1833,476.44427 2360.7164,476.05138 C 2360.71,476.046 2360.7051,476.03898 2360.6987,476.03365 L 2360.2734,474.97029 L 2357.4023,473.97781 L 2357.5795,472.04603 L 2357.7568,471.53207 L 2357.7745,471.51435 L 2357.7745,471.49662 L 2358.253,470.14969 L 2357.7745,466.67603 L 2358.1821,461.67821 L 2357.615,461.41237 z "},"ca49":{"name":"CA-49","path":"M 301.26539,1042.2656 L 297.45408,1037.3657 L 289.97831,1038.6444 L 289.4105,1036.4732 L 287.05737,1034.9878 L 284.70424,1033.5023 L 282.22095,1035.2417 L 280.01057,1035.2417 L 277.93629,1037.1189 L 277.93629,1034.6745 L 278.43877,1034.6745 L 283.47723,1029.4998 L 278.701,1024.1751 L 271.66073,1027.3527 L 267.43779,1025.0614 L 264.1832,1025.3893 L 258.11169,1012.4677 L 254.69905,1009.2799 L 255.92926,1005.751 L 258.47811,1005.751 L 260.3553,1003.6767 L 260.3553,1001.4072 L 266.71168,994.38322 L 265.30293,992.68574 L 267.39479,990.37424 L 269.80871,990.9801 L 272.89333,987.76051 L 272.10377,984.61482 L 275.95134,985.20611 L 278.29012,983.15441 L 280.04634,985.13425 L 281.77065,985.6179 L 281.19224,989.29465 L 282.50962,990.88199 L 279.07055,992.0809 C 279.33522,993.55538 279.59989,994.37465 280.30133,995.41233 L 278.53439,998.82928 C 276.64311,999.74428 274.27704,1000.5874 272.43415,1001.5978 L 276.92349,1005.9694 L 278.62229,1004.0561 L 281.62263,1004.9003 L 281.95877,1012.0752 L 303.45708,1016.1049 L 303.45708,1019.3633 L 308.25312,1024.0177 L 307.94449,1027.5854 L 305.54877,1032.4032 C 307.03532,1033.4515 308.37629,1034.3542 309.79004,1034.6745 L 309.78561,1035.9253 L 303.45708,1038.5865 L 303.45708,1041.3587 C 302.72705,1041.6845 302.0458,1042.1181 301.26539,1042.2656 z "},"nc3":{"name":"NC-3","path":"M 2338.6162,745.18942 L 2308.0267,753.14691 C 2308.0266,753.35386 2308.9185,754.24697 2309.728,754.77741 C 2310.5376,755.30784 2312.7264,756.25313 2314.6018,756.8687 C 2318.1522,757.40123 2319.9607,758.35418 2320.8579,759.52711 L 2322.7897,758.94229 L 2322.9138,760.4487 L 2324.4379,760.46645 L 2324.3848,761.42348 L 2328.0534,762.3982 L 2326.2988,764.11734 L 2330.889,764.86169 L 2331.8461,765.92506 C 2332.3766,766.5113 2333.1304,766.98843 2333.512,766.98843 C 2333.8933,766.98843 2334.4929,767.33086 2334.8412,767.75048 L 2335.4792,768.51259 L 2344.2697,768.33536 L 2348.3459,772.65971 L 2349.6929,772.65971 L 2348.8776,771.10011 C 2348.4282,770.24233 2347.589,769.02998 2347.0168,768.40625 C 2346.4444,767.78241 2345.2693,766.23239 2344.4115,764.96803 C 2343.5537,763.70356 2342.8519,762.49127 2342.8519,762.27417 C 2342.8519,762.05696 2342.4628,761.43754 2341.9835,760.89179 C 2341.5042,760.34593 2340.4834,759.09008 2339.715,758.10929 L 2338.3149,756.33701 L 2338.3149,754.08625 L 2333.8133,753.37734 L 2331.4739,750.8607 L 2331.8106,749.12387 L 2338.5984,749.12387 L 2339.715,751.67595 L 2341.0265,751.67595 L 2341.9835,753.71404 C 2342.5136,754.83112 2343.0752,755.61761 2343.2241,755.46863 C 2343.3731,755.31958 2342.4188,753.05867 2341.115,750.45305 C 2340.2966,748.79318 2339.5594,746.73297 2338.6162,745.18942 z M 2344.2697,756.69147 L 2343.8976,759.15496 L 2346.2547,760.8209 L 2346.2547,761.51206 C 2346.2547,761.89986 2346.5591,762.52535 2346.9281,762.89444 C 2347.2973,763.26358 2347.7076,763.44416 2347.8497,763.30209 C 2347.9918,763.15997 2347.2409,761.61488 2346.1838,759.86387 L 2344.2697,756.69147 z M 2350.8803,767.55556 L 2351.855,770.24942 C 2352.3891,771.73104 2353.1915,773.51744 2353.6451,774.21932 L 2354.4603,775.49536 L 2355.2401,775.49536 C 2355.6617,775.49536 2356.6567,776.0191 2357.4554,776.64731 C 2358.2541,777.27552 2359.0219,777.65073 2359.1746,777.498 C 2359.3273,777.34527 2358.2195,775.80909 2356.6934,774.07754 C 2355.1673,772.34586 2353.4005,770.17212 2352.7766,769.25694 C 2352.1528,768.34165 2351.463,767.58533 2351.2525,767.57325 L 2350.8803,767.55556 z M 2348.984,779.37662 L 2347.4776,779.74882 C 2346.6523,779.95594 2345.6577,780.39529 2345.2622,780.72355 L 2344.5356,781.32612 L 2345.723,782.74394 L 2344.376,785.70367 L 2341.6645,785.70367 L 2340.0517,781.87556 L 2338.2263,781.16664 L 2335.5855,781.82236 C 2334.1264,782.1792 2332.0339,782.92247 2330.9422,783.4706 C 2329.8505,784.01879 2327.8221,785.50376 2326.4406,786.78473 L 2324.3139,789.15959 L 2326.3166,792.34968 L 2325.0937,797.20572 L 2326.7419,803.0011 L 2304.7125,808.1584 L 2298.3323,812.71318 L 2288.5316,809.89523 L 2287.5568,812.34097 L 2289.2582,812.89041 L 2289.4,815.42473 L 2290.0558,815.65516 C 2290.4127,815.77414 2291.0118,816.18588 2291.4027,816.57674 C 2291.7934,816.96755 2292.6519,817.57716 2293.299,817.92367 L 2294.4687,818.54394 L 2296.8436,816.878 L 2299.3248,820.95424 L 2296.8968,823.50632 L 2301.1679,826.55463 L 2302.7984,823.13417 L 2307.7608,823.13417 L 2319.1743,826.02295 L 2320.3794,824.92414 C 2321.0402,824.32032 2322.2253,823.63664 2323.0024,823.39998 C 2323.7794,823.16326 2325.5586,822.8907 2326.9546,822.79741 L 2329.4889,822.63793 L 2330.6941,823.63041 L 2332.9449,823.06328 C 2334.1819,822.74795 2336.0889,822.37904 2337.1806,822.24803 C 2338.2723,822.11708 2340.0838,822.01188 2341.2037,822.01761 L 2343.2418,822.03536 L 2347.3535,818.27813 L 2346.68,815.6906 L 2349.0903,815.07028 L 2349.0903,810.72823 L 2350.2246,810.01932 L 2350.2246,807.21912 L 2351.9259,806.56335 L 2351.9259,804.98605 L 2354.2299,802.68209 L 2355.3465,803.35555 L 2357.5795,802.64664 L 2359.3873,798.83622 L 2358.0935,796.40823 L 2359.3695,794.86632 L 2357.0301,790.02803 L 2357.0301,787.54684 L 2351.855,780.88308 L 2348.984,779.37662 z M 2361.0709,779.78427 C 2360.9543,779.89248 2361.0576,780.44781 2361.3013,781.00711 C 2361.545,781.56641 2361.7135,782.40015 2361.6735,782.86803 L 2361.6026,783.71872 L 2361.9216,782.97437 L 2362.2583,782.23001 L 2363.0736,783.39971 C 2363.5258,784.04539 2364.1519,784.56942 2364.456,784.56942 L 2365.0053,784.56942 L 2363.1445,782.08823 C 2362.1209,780.71884 2361.1874,779.676 2361.0709,779.78427 z M 2357.6327,780.03239 L 2355.0451,780.12097 L 2355.7541,780.40454 C 2356.14,780.5605 2357.2247,781.3699 2358.1644,782.19457 L 2359.8657,783.68328 L 2359.8657,785.61503 C 2360.5752,785.83718 2361.3014,785.91538 2362.0279,785.95179 C 2362.1242,785.88697 2361.8336,784.95756 2361.3899,783.89595 L 2360.5924,781.96414 L 2357.6327,780.03239 z M 2368.9576,789.39001 L 2368.9576,790.2584 C 2368.9523,790.73484 2369.3439,791.70713 2369.8437,792.42058 L 2370.7653,793.71437 L 2371.3501,793.12949 L 2370.1627,791.25087 L 2368.9576,789.39001 z M 2373.6895,800.6085 C 2373.5414,800.75663 2373.6085,802.24863 2373.8313,803.92268 L 2374.2389,806.971 L 2374.4871,806.22664 C 2374.6243,805.81723 2374.557,804.32523 2374.3453,802.91246 C 2374.1334,801.49974 2373.8377,800.46036 2373.6895,800.6085 z M 2374.7352,808.10526 L 2374.7706,812.64229 L 2375.0187,811.36625 C 2375.1544,810.6608 2375.143,809.63991 2375.001,809.09773 L 2374.7352,808.10526 z M 2250.3213,812.78407 C 2246.8641,816.00632 2243.0707,819.01857 2239.0673,821.94671 C 2240.9342,822.41584 2242.1708,826.16207 2243.5335,828.52189 L 2247.3793,829.86882 L 2245.3235,839.86446 L 2245.5184,841.90256 C 2245.6217,843.02553 2245.8812,844.23725 2246.1033,844.59642 L 2246.5109,845.25219 L 2245.1817,845.76612 C 2244.4482,846.04498 2243.5056,846.68362 2243.0904,847.18394 C 2242.6751,847.68432 2242.0109,848.08783 2241.6194,848.08783 C 2241.2279,848.08783 2240.5693,848.48811 2240.1661,848.97397 L 2239.4395,849.86011 L 2242.3283,852.74889 L 2245.0399,853.24513 L 2247.7515,853.75912 L 2251.296,857.72902 L 2255.4077,857.69357 L 2256.5597,859.51899 L 2264.9249,860.63555 L 2269.5505,856.43523 L 2271.9608,861.02545 L 2271.2519,864.53456 L 2269.6923,864.53456 L 2269.6923,865.13714 C 2269.6923,865.46959 2269.9541,866.2351 2270.2772,866.83852 L 2270.862,867.93734 L 2272.5279,867.93734 L 2272.5279,870.1881 L 2269.6923,872.03127 L 2269.6923,874.24664 L 2270.9683,873.85674 C 2271.6701,873.63891 2272.4557,873.11403 2272.7051,872.68704 L 2273.1482,871.90724 L 2277.508,871.90724 L 2278.3055,877.29496 L 2287.2556,890.95919 L 2290.3925,892.18209 L 2295.4966,887.00704 C 2298.3039,884.16317 2301.494,880.8031 2302.5857,879.54572 L 2304.5707,877.25951 L 2307.7431,875.20367 C 2309.4894,874.07168 2312.6794,872.32935 2314.8322,871.32236 C 2316.9849,870.31536 2320.1526,868.98533 2321.8681,868.38038 L 2324.9873,867.28156 L 2332.3954,867.29932 L 2335.4792,868.46902 L 2335.4792,870.70209 L 2336.4717,871.32236 L 2337.0566,866.98031 L 2340.991,857.16189 L 2339.0061,857.16189 L 2338.3149,855.35417 L 2340.2644,852.05773 L 2341.6467,852.05773 L 2342.0012,850.78169 C 2342.1978,850.07987 2342.6326,848.92832 2342.976,848.22961 L 2343.5962,846.97127 L 2341.6113,844.75595 L 2342.2848,843.67483 L 2341.3809,843.32038 C 2340.8893,843.13175 2340.0582,842.99099 2339.5377,843.00137 L 2338.5984,843.01912 L 2339.8745,844.08248 C 2340.5763,844.66793 2341.1505,845.39431 2341.1505,845.69523 L 2341.1505,846.24466 L 2337.6946,846.93582 L 2335.4792,845.55345 L 2333.7247,841.84942 L 2332.6436,841.84942 L 2332.6436,845.89021 L 2326.5469,848.67265 L 2324.6861,847.96374 L 2323.9949,845.19899 L 2324.8278,844.24196 C 2325.2804,843.70869 2326.0798,842.3325 2326.6001,841.19364 L 2327.5394,839.12011 L 2327.5394,837.50731 C 2327.5441,836.61867 2327.9229,834.87362 2328.3724,833.62605 C 2328.8219,832.37837 2329.2094,830.7963 2329.2231,830.11694 L 2329.2408,828.89404 L 2327.3799,827.01543 L 2325.0405,827.31674 C 2323.7609,827.48064 2322.5456,827.61982 2322.3289,827.63575 L 2321.939,827.6712 L 2322.1517,834.03364 L 2312.1738,837.86176 C 2304.7212,834.15813 2300.4773,832.38563 2291.4204,829.60295 L 2291.5799,824.58744 L 2288.2657,823.09872 L 2288.8861,819.25285 L 2287.1315,818.57939 L 2285.0402,820.54664 L 2283.6047,819.21741 L 2281.7615,820.13899 L 2280.8754,823.7013 L 2277.7562,823.7013 L 2276.9941,818.8807 L 2274.4774,817.01978 C 2273.0918,815.99634 2271.6089,815.02179 2271.181,814.85761 L 2270.4012,814.55635 L 2269.7632,816.02731 L 2270.4189,816.82486 L 2267.1934,821.02513 L 2266.1832,821.291 C 2265.6215,821.43789 2265.1552,821.74209 2265.1552,821.94671 C 2265.1552,822.15133 2266.06,822.79106 2267.1579,823.38229 L 2269.1429,824.46335 L 2272.3507,821.39734 L 2273.8749,823.61265 C 2274.7182,824.8296 2275.3788,826.04893 2275.3281,826.32427 C 2275.2774,826.59955 2275.2557,827.12783 2275.2927,827.49397 C 2275.3296,827.85988 2276.027,828.9444 2276.8346,829.90427 L 2278.3055,831.6411 L 2280.5032,831.6411 L 2280.1842,828.57503 L 2283.3743,827.42308 L 2283.8882,828.25602 C 2284.177,828.71256 2284.4329,829.68927 2284.4376,830.4182 L 2284.4376,831.74744 L 2287.7518,832.98803 L 2286.1745,836.03635 L 2294.3624,840.13028 L 2297.8183,840.14803 L 2300.0337,842.18612 C 2301.2519,843.30189 2302.7337,844.46394 2303.3124,844.77364 L 2304.358,845.34077 L 2301.4515,849.1512 L 2301.4515,850.00189 C 2301.4515,850.47215 2301.6706,850.99346 2301.93,851.15384 L 2302.3908,851.43741 L 2303.8263,859.41265 L 2306.0949,858.20751 L 2305.3505,855.30097 L 2311.6421,855.93899 L 2313.0776,852.90842 L 2316.764,852.55397 C 2316.7626,855.19186 2316.9692,856.52245 2317.4729,858.86328 L 2314.0701,858.86328 L 2312.6523,860.56466 L 2313.4853,861.8584 L 2312.7764,863.68387 L 2302.6744,867.47654 L 2300.0691,866.98031 L 2300.6008,865.40295 L 2295.4966,860.56466 L 2292.3243,860.72414 L 2290.3216,862.47872 L 2286.139,861.50394 L 2286.139,857.091 L 2284.9516,854.85793 L 2286.3694,850.92347 L 2287.8404,850.92347 L 2287.8404,849.89555 C 2287.8404,849.3341 2288.1102,848.61554 2288.443,848.28275 L 2289.0455,847.68018 L 2281.5843,844.68506 L 2274.7787,844.64961 L 2274.0521,841.84942 L 2271.4646,841.84942 L 2270.7556,839.5809 L 2268.6289,839.5809 L 2268.2745,839.01377 C 2268.0817,838.70185 2267.7119,838.44664 2267.4592,838.44664 L 2266.9984,838.44664 L 2266.325,842.66466 L 2269.2315,845.71298 L 2268.5226,847.94605 L 2263.0463,848.65496 L 2261.6639,840.16572 L 2258.3497,841.88486 L 2258.3497,844.52553 L 2254.9647,845.67753 C 2254.9131,847.97594 2254.7426,850.15547 2254.0077,852.39444 L 2249.8428,848.44229 L 2249.8428,845.9611 L 2251.9873,845.39397 L 2250.7112,840.59107 L 2254.0962,837.87951 L 2254.9469,838.21622 C 2255.4148,838.40246 2256.0528,838.66062 2256.3648,838.78335 C 2256.6767,838.90613 2257.2747,838.78477 2257.694,838.51753 L 2258.456,838.03899 L 2256.6129,834.47674 C 2258.0412,834.39145 2259.0075,834.22204 2260.0156,833.5906 L 2258.2788,826.99773 L 2260.2106,825.57991 L 2257.0914,821.6277 C 2256.0193,821.98063 2255.4482,822.76814 2254.3267,822.93919 L 2250.4099,822.8683 C 2250.4099,822.66011 2251.0654,821.64568 2251.8632,820.59978 L 2253.3164,818.68572 L 2251.81,815.74374 L 2250.3213,812.78407 z M 2375.5504,813.20942 L 2375.1073,818.03001 L 2371.7754,819.76684 L 2371.7754,820.88335 L 2369.8082,821.82268 L 2367.8587,822.76196 L 2367.5574,823.50632 C 2367.3976,823.92299 2367.3718,824.26843 2367.4865,824.26843 C 2367.6014,824.26843 2369.0189,823.3752 2370.6412,822.28348 L 2373.5832,820.29852 L 2375.7453,820.29852 L 2375.5504,813.20942 z M 2365.1117,824.83555 L 2363.6939,826.53694 L 2364.2255,826.53694 C 2364.516,826.53694 2365.2504,826.16184 2365.856,825.70394 L 2366.9548,824.871 L 2365.1117,824.83555 z M 2362.3469,827.72434 C 2362.0664,827.71952 2360.7974,828.74545 2359.4049,830.11694 L 2356.7111,832.77536 L 2356.0199,832.77536 C 2355.6406,832.77536 2355.3287,832.99398 2355.3287,833.25384 C 2355.3287,833.51381 2355.5022,833.90581 2355.7186,834.12229 L 2356.1085,834.51219 L 2359.3873,831.26889 C 2361.1902,829.48476 2362.5374,827.89697 2362.3824,827.74209 C 2362.3727,827.73239 2362.3656,827.72468 2362.3469,827.72434 z M 2352.6348,836.74526 C 2352.4009,836.7465 2351.2138,838.6938 2349.9942,841.06961 C 2348.7745,843.44537 2346.9241,846.62657 2345.8825,848.14097 C 2344.8408,849.65537 2343.9925,851.08959 2344.0039,851.33107 C 2344.015,851.57255 2344.6632,851.00849 2345.4394,850.07278 C 2346.2155,849.13702 2347.7815,846.71249 2348.9131,844.68506 C 2350.0448,842.65757 2351.438,840.32021 2352.0146,839.49226 C 2352.5909,838.66431 2353.0602,837.70728 2353.0602,837.36553 C 2353.0602,837.02377 2352.8688,836.74384 2352.6348,836.74526 z "},"ca52":{"name":"CA-52","path":"M 283.95344,1065.9706 L 282.33443,1064.7324 L 280.6774,1064.7324 L 282.66513,1059.0202 L 278.93104,1055.9029 L 277.0856,1052.019 L 270.20312,1049.902 L 270.48303,1048.8946 L 274.14271,1047.2413 L 274.65801,1041.6316 L 278.42376,1038.7307 L 278.22705,1037.2919 L 280.26254,1035.8088 L 282.95941,1035.8088 L 284.84477,1033.9234 C 285.99417,1034.9765 286.92635,1035.5317 288.68004,1036.3358 L 289.04096,1037.7737 L 289.40182,1039.2116 C 291.97516,1039.1522 294.36177,1038.7817 296.9351,1038.0999 C 298.33472,1040.0879 299.23639,1041.4537 301.13396,1042.9438 C 302.28033,1042.3857 303.2522,1042.1535 304.16004,1041.2534 L 303.90492,1039.1077 L 310.26263,1036.237 L 310.26263,1034.1074 L 309.64315,1034.1074 C 309.30248,1034.1074 308.42587,1033.6371 307.69518,1033.0624 L 306.36668,1032.0174 L 308.37437,1028.716 L 309.04489,1023.7168 L 304.02421,1018.8372 L 304.02421,1016.1835 L 331.02549,1021.0296 L 327.81725,1041.7333 L 326.32123,1042.5971 L 324.89154,1051.6884 L 318.07012,1051.6884 L 318.66861,1053.9769 L 316.82624,1055.8192 L 316.93495,1065.8666 L 316.18436,1065.8666 C 315.77149,1065.8666 315.27905,1065.6163 315.08991,1065.3104 L 314.74618,1064.7541 L 312.64616,1064.8993 C 311.4912,1064.9792 310.29099,1065.1953 309.97906,1065.3795 L 304.02421,1065.7641 L 304.02421,1064.7656 C 301.65692,1063.6789 299.32248,1062.4924 296.77654,1061.9054 C 296.23992,1061.9102 294.98456,1062.365 294.63072,1062.5942 L 294.05602,1065.0159 L 286.39167,1064.016 L 283.95344,1065.9706 z "},"nd":{"name":"ND At-Large","path":"M 982.15351,305.34701 C 986.02951,237.61191 986.50321,182.94335 990.01381,118.2581 C 1086.4729,122.07516 1175.094,121.85443 1270.1279,119.73357 L 1271.4229,123.64287 C 1272.1351,125.79298 1272.9243,128.44539 1273.1768,129.53711 C 1273.4293,130.62883 1274.314,133.20094 1275.1429,135.2529 C 1275.9718,137.30485 1276.6499,139.24351 1276.6499,139.56101 L 1274.831,143.78439 L 1274.8297,145.87659 C 1274.8289,147.0273 1275.1268,151.2865 1275.4916,155.34147 C 1275.8564,159.39644 1276.1077,163.99018 1276.05,165.54978 C 1275.9923,167.10939 1275.9315,169.02345 1275.915,169.80325 L 1275.8849,171.22107 C 1276.6987,173.10389 1277.5339,174.97652 1278.4439,176.81484 C 1278.7544,177.39605 1279.1245,178.41688 1279.2666,179.08335 C 1279.4087,179.74983 1279.6475,181.16685 1279.7974,182.23228 L 1280.7702,185.01331 C 1281.1554,185.47744 1281.4874,186.26457 1281.5079,186.76249 C 1281.5285,187.26041 1282.0097,188.68864 1282.5773,189.93632 C 1283.145,191.184 1284.24,193.60848 1285.0109,195.32404 C 1285.7817,197.03961 1286.6456,198.95366 1286.9307,199.57751 C 1287.2158,200.20135 1287.5653,201.33105 1287.7075,202.08795 L 1289.1268,204.62495 L 1290.0118,217.95359 L 1291.8542,243.3029 L 1294.3692,247.21632 L 1293.1171,253.45473 L 1294.1633,258.4856 L 1293.6763,263.44575 L 1295.7783,267.86442 L 1297.0231,275.35861 L 1298.7837,278.43592 L 1302.4631,282.86607 L 1302.8269,286.43499 L 1304.5605,295.98939 L 1304.6416,301.51894 L 1304.7228,307.04849 C 1196.4871,309.80656 1087.3014,309.71443 982.15351,305.34701 z "},"nm3":{"name":"NM-3","path":"M 713.06579,847.18394 C 709.88159,884.54179 706.31361,920.13575 702.11312,957.54367 L 705.48044,957.54367 L 707.58948,960.94644 C 710.00624,960.82649 710.31828,960.28137 711.27582,959.61721 L 713.68611,962.0275 L 713.7747,966.0506 C 715.28485,965.49754 716.79857,964.94719 718.31173,964.40235 L 723.41589,964.38466 L 725.50717,965.97971 L 728.23648,964.73912 L 728.23648,962.98453 C 728.23648,962.01877 727.98547,960.33474 727.66935,959.24506 L 727.08453,957.26011 L 727.75799,954.1409 C 738.18137,954.42072 767.93549,957.47278 767.93549,957.47278 L 767.93549,954.65483 L 773.27007,954.99159 L 773.94354,957.82723 L 793.08413,959.38684 L 794.71463,964.91634 L 818.28591,966.93674 L 818.87074,968.88624 L 820.00499,968.88624 L 819.45562,966.77721 L 825.21549,966.01515 L 825.21549,965.57206 C 825.21549,965.33324 824.9731,964.88657 824.66611,964.57958 L 824.09898,964.0302 L 827.07641,959.82988 L 829.75252,960.50334 L 829.75252,959.38684 L 837.63918,958.62473 L 838.40123,953.46743 L 843.38136,954.31813 L 842.637,967.50387 L 847.33351,969.6306 L 847.33351,973.9904 L 845.06499,973.9904 L 845.06499,979.50216 L 889.54915,982.14288 L 889.99225,971.01298 L 949.52301,974.22077 L 947.30769,1012.5552 L 956.71846,1012.5552 L 955.37153,1045.4486 L 960.75925,1045.4486 L 960.01489,1061.8245 L 966.14701,1062.1789 L 965.91661,1071.9796 L 976.63881,1072.6708 L 976.63881,1078.3066 L 999.14681,1078.9092 L 1005.5624,895.72664 L 1007.8309,895.72664 L 1008.5753,865.79285 C 908.9196,862.19102 811.56555,854.8315 713.06579,847.18394 z "},"co4":{"name":"CO-4","path":"M 868.8844,608.72407 L 868.8844,611.94962 L 871.15291,614.37761 L 871.15291,616.13219 L 872.28717,616.13219 L 872.28717,617.6918 L 874.16578,619.2514 L 875.84948,622.93774 C 876.77889,624.96522 877.90957,628.02766 878.36611,629.74328 C 878.82242,631.45885 879.48046,634.06066 879.81938,635.52091 L 880.43965,638.17932 L 882.49549,638.711 L 882.49549,641.01496 L 884.88809,641.77702 L 884.25007,644.96711 L 886.05779,648.74209 L 889.40737,651.89675 L 890.22262,654.98051 L 913.08499,656.39833 L 910.81648,661.69741 L 911.54314,662.1582 C 911.94444,662.41284 912.42497,662.63187 912.6242,662.63675 C 912.82343,662.64151 913.1531,663.49646 913.35086,664.55081 L 913.70532,666.46486 L 922.88571,662.49496 L 925.57957,665.75595 L 924.39212,673.30585 L 981.99111,676.05286 L 978.69471,747.58196 L 962.67331,746.76672 L 960.59977,791.44585 L 962.15941,791.58763 L 963.34681,791.46355 L 964.55191,792.70414 L 967.86611,792.84592 C 969.22921,792.97937 971.00211,793.3332 971.81821,793.64348 C 973.42281,794.01636 974.84351,794.21945 976.67431,794.2106 L 980.04161,794.2106 L 980.04161,797.04625 L 983.21401,797.0285 L 982.22151,799.84645 L 983.21401,801.65417 L 985.64201,801.01615 L 986.40411,802.23899 L 983.40891,805.37595 L 984.15331,810.37377 L 986.49271,814.62724 L 988.37131,814.62724 L 989.39921,813.49298 C 989.96381,812.86914 990.68591,812.35872 990.99431,812.35872 L 991.54371,812.35872 L 990.94111,824.26843 L 1006.9802,824.28612 L 1005.1371,864.42823 L 1055.3811,866.23595 L 1060.5658,617.06024 C 992.94311,616.2121 933.53372,612.13513 868.8844,608.72407 z "},"az1":{"name":"AZ-1","path":"M 542.20054,827.51166 L 541.88153,827.81298 L 539.65044,834.63327 L 541.73975,835.38058 L 541.36757,839.86446 L 536.38748,839.95305 L 533.02015,846.58137 L 533.92559,852.97654 L 533.51639,855.17694 L 531.53144,856.59476 L 532.11629,858.43793 C 532.43995,859.44963 532.72813,861.30652 532.77203,862.54961 L 532.86064,864.80038 L 539.53858,867.79102 L 539.84342,870.86156 C 539.43463,871.58318 538.36176,872.851 537.45084,873.67951 L 535.7849,875.18592 L 539.38262,877.04684 L 539.43579,878.99635 L 540.09291,878.98926 L 542.12945,876.268 L 544.70142,879.2393 L 545.05391,879.84704 C 545.33826,879.99738 545.59877,880.20155 545.86916,880.41417 L 546.41856,880.87496 C 547.09133,881.49319 547.73362,882.22461 548.36807,882.8776 C 549.05775,883.58742 549.73213,884.19102 550.35302,884.4904 C 550.35637,884.49199 550.3674,884.48853 550.37074,884.4904 C 552.23489,884.88989 553.97204,885.76094 555.68757,886.63483 L 558.48777,887.98176 C 560.3424,888.75952 562.2195,889.22735 564.2654,888.83246 L 571.30057,880.98249 L 568.90859,878.30768 L 568.87332,875.46949 L 566.6048,872.5807 L 567.24282,870.93246 L 570.1848,869.58552 L 570.64559,870.31219 C 570.89252,870.71167 571.23507,872.05327 571.4254,873.30731 C 571.61567,874.5614 572.05168,876.29539 572.38242,877.15318 L 572.985,878.71278 L 577.94738,878.62414 L 577.94738,880.9813 L 581.88183,880.9813 L 585.88718,882.89535 L 585.97582,884.91575 C 586.02431,886.02761 586.01229,887.57785 585.94037,888.35397 C 585.86846,889.13008 585.51406,890.10776 585.16057,890.53384 C 584.80697,890.95992 583.92724,891.53749 583.21107,891.80988 L 581.91728,892.30612 L 580.00322,896.29377 L 577.87648,896.29377 L 578.67404,897.56981 L 584.09721,896.93179 L 585.46183,898.56229 L 589.28995,898.56229 L 589.28995,896.40011 C 591.1228,895.284 592.95077,894.15921 594.81945,893.10367 C 595.5168,892.71774 596.64221,891.99459 597.33609,891.50862 C 597.7079,891.2482 598.12564,890.85098 598.50579,890.4275 L 602.95423,891.22506 L 605.41767,889.48823 L 609.58255,889.48823 L 610.36235,882.08011 L 613.96005,880.57364 L 615.12975,881.61932 C 615.77367,882.20187 616.59929,882.68268 616.95522,882.68268 L 617.59324,882.68268 L 617.9477,880.76862 C 618.14557,879.71371 618.79176,878.0548 619.38322,877.08229 L 620.46433,875.31001 L 623.37087,875.31001 L 626.47232,877.61397 L 630.45998,878.25199 L 634.87292,876.40882 L 635.88314,878.21654 L 636.55661,877.66711 C 636.92133,877.3671 638.42071,876.93126 639.90619,876.71008 L 642.6178,876.32018 L 643.23807,875.31001 L 645.43569,875.31001 L 645.43569,878.50011 L 639.05549,887.46783 L 638.48836,891.70354 L 636.52116,893.49357 L 633.36651,892.28842 L 629.60928,894.8582 L 628.95351,897.48117 L 629.62698,898.56229 L 631.70057,898.56229 L 632.39173,900.33456 L 633.52599,899.62565 L 633.52599,897.55206 L 634.92612,896.64823 C 635.69497,896.1445 636.65172,895.73725 637.05285,895.74434 L 637.77945,895.76209 L 639.56948,899.41298 L 644.35463,899.76743 L 645.01034,901.45107 L 642.97225,902.93978 L 649.01569,904.33991 L 651.24876,904.32216 C 651.60571,903.96521 652.11011,903.66644 652.36532,903.66644 L 652.82611,903.66644 L 652.5248,908.3984 L 656.47701,908.48704 L 656.81371,910.24156 L 655.13008,914.28236 L 647.65107,918.00414 L 646.83582,919.59919 C 646.38234,920.47602 646.00282,921.43555 646.00282,921.74367 L 646.00282,922.3108 L 652.80836,921.22968 L 652.80836,917.22434 L 655.59087,914.44189 L 658.63918,914.44189 L 657.91252,925.60724 L 653.90718,925.69582 C 651.70416,925.73654 649.66335,925.90452 649.37015,926.08572 L 648.83846,926.42248 L 649.40559,927.48585 C 649.71836,928.07022 649.97272,928.84889 649.97272,929.22268 L 649.97272,929.91384 L 643.18493,928.49602 L 642.42282,930.48097 L 644.49641,932.00513 L 643.87609,932.64315 L 621.5277,930.33919 L 619.73767,932.11146 L 612.82579,931.34941 L 611.78018,930.35694 L 612.71945,929.29357 C 613.24235,928.71578 613.67648,927.68803 613.67648,927.50354 L 606.19747,926.77694 L 609.47621,891.79219 L 605.73668,891.79219 L 605.73668,896.25832 L 602.42255,897.97741 L 602.05035,900.54724 L 597.51332,901.13206 L 598.08044,904.76526 L 595.93602,905.50961 L 594.69542,903.87912 C 594.14071,903.03262 593.49186,901.69074 593.25985,900.88394 L 592.8345,899.41298 L 591.38124,902.33721 L 589.09503,904.05634 L 588.15569,902.49674 L 585.07193,903.20565 L 576.37008,898.8813 L 575.18262,897.00268 L 575.96242,891.47318 L 579.02849,891.11872 L 579.71965,888.9211 L 581.10203,888.9211 C 581.86079,888.9211 582.4844,888.76826 582.4844,888.58434 L 579.93233,886.17404 L 581.13747,884.93345 L 577.36255,882.00922 C 576.82945,882.12599 576.36259,882.24979 576.10421,882.36367 L 575.12948,882.80671 L 574.75728,881.83199 C 574.52016,881.8929 574.29042,881.97587 574.06612,882.08011 C 572.58132,882.76957 571.39443,884.62725 571.03549,885.96137 C 570.24446,889.2599 568.01304,891.36712 565.32876,892.12889 C 562.59648,893.08042 559.4669,891.94911 557.01678,890.39206 C 553.72116,890.17218 551.18077,888.46371 548.77569,886.56394 C 546.72283,884.94241 544.74861,883.18879 542.48411,882.02691 L 541.19035,882.94849 L 540.42827,890.05535 L 533.78223,890.05535 L 533.07332,887.78684 L 529.74144,887.78684 L 529.74144,883.90552 L 522.36876,883.12572 L 522.36876,880.41417 C 520.85382,880.40804 519.32938,880.37214 517.83173,880.55595 C 517.13028,886.78245 516.13495,893.58743 515.49233,899.82057 L 490.21965,916.51542 L 477.44154,1007.4864 L 506.77272,1011.474 L 529.20975,1021.6469 L 531.30104,1020.2114 L 531.93906,1018.6695 L 537.89391,1012.626 L 558.38144,1018.1378 L 562.81213,1018.7581 C 565.25209,1019.0926 568.36523,1019.3607 569.72401,1019.3607 L 572.1875,1019.3607 L 574.01292,1021.1861 L 573.51668,1021.8241 C 573.23907,1022.181 572.87322,1023.0538 572.70143,1023.7559 L 572.38242,1025.032 L 574.2079,1025.032 L 574.42057,1030.8982 L 575.67886,1030.8982 L 575.35985,1032.316 C 575.06801,1032.5262 574.76919,1033.303 574.68639,1034.0528 L 574.52691,1035.4175 L 575.3953,1036.3923 C 575.8777,1036.9253 576.38794,1037.8756 576.51186,1038.519 C 576.63549,1039.1623 577.18686,1040.4206 577.7347,1041.3015 C 578.28255,1042.1825 579.22313,1043.4705 579.84374,1044.1726 C 580.46412,1044.8744 581.19895,1045.4486 581.45648,1045.4486 C 581.71402,1045.4486 581.91728,1045.1682 581.91728,1044.8283 C 581.91728,1044.4884 582.49149,1043.7299 583.19332,1043.1447 C 583.89514,1042.5591 584.75071,1042.0739 585.08968,1042.0635 L 585.70995,1042.0458 C 587.03176,1046.6688 588.79564,1051.1923 589.76849,1055.9051 L 578.05371,1054.7708 L 577.27391,1064.4474 L 572.34698,1069.0199 L 572.985,1073.7873 L 571.10639,1076.6761 L 563.76916,1075.914 L 563.76916,1078.8383 L 562.6349,1079.5472 L 562.6349,1081.6562 L 559.03718,1082.4538 L 556.11292,1085.1831 L 553.84441,1084.8641 L 552.76332,1082.4006 L 543.3348,1081.6031 L 543.03351,1081.1068 C 542.86377,1080.8322 542.37126,1080.6106 541.95243,1080.6106 L 541.19035,1080.6106 L 540.41054,1087.3275 L 537.68124,1088.001 L 537.68124,1090.234 C 542.03079,1091.1982 546.45356,1091.7499 550.79609,1092.7507 L 550.05173,1097.6422 L 547.88955,1098.7942 L 547.88955,1099.8043 C 547.88955,1100.3548 547.65979,1101.0499 547.37559,1101.3462 L 546.86163,1101.8779 L 546.08183,1110.4557 C 572.36382,1114.2458 579.27548,1114.769 590.99134,1115.3649 L 590.99134,1112.4407 L 593.50797,1110.6684 L 596.13094,1110.6684 L 597.21206,1113.5395 L 598.93114,1114.1952 L 598.93114,1116.3397 L 613.49926,1117.8639 L 613.00302,1123.0389 L 684.56757,1130.5179 C 697.00918,996.02182 702.32148,945.63414 711.52394,847.0776 C 652.03055,840.80998 608.30152,835.86938 542.20054,827.51166 z "},"de":{"name":"DE At-Large","path":"M 2304.9429,542.38771 C 2298.6078,542.32568 2292.0756,548.15692 2293.937,554.56325 L 2317.402,626.34051 L 2346.8041,619.14506 C 2344.9492,614.13743 2342.5439,607.80442 2340.7606,602.80467 L 2339.9808,600.53615 L 2335.1956,600.5184 L 2327.0609,594.54586 L 2326.3697,591.4089 L 2325.0405,589.97338 C 2324.3082,589.18348 2322.9751,588.23734 2322.0808,587.86434 L 2320.4503,587.17318 L 2318.3413,580.42078 L 2318.9616,578.80804 L 2318.1641,577.76236 C 2317.7276,577.18616 2317.3587,576.27013 2317.3488,575.72427 L 2317.3311,574.7318 L 2315.5234,574.7318 L 2314.9385,572.46328 L 2314.3182,572.46328 C 2313.984,572.46323 2312.8706,571.88906 2311.837,571.18724 L 2309.9584,569.9112 L 2309.3381,568.01484 L 2305.4568,565.71088 L 2304.7125,562.73345 L 2305.8467,561.5992 L 2304.234,558.33821 L 2302.0186,557.64702 L 2302.0186,554.47464 L 2303.1529,553.02137 C 2303.7767,552.22829 2304.2978,551.37005 2304.3049,551.10731 C 2304.3119,550.84459 2304.775,550.01266 2305.3505,549.26415 L 2306.4139,547.89949 L 2305.829,545.73731 L 2307.2291,543.13207 L 2307.619,542.79533 C 2306.747,542.53066 2305.8479,542.39657 2304.9429,542.38771 z "},"nv3":{"name":"NV-3","path":"M 465.40953,829.11953 L 461.04973,830.62594 L 457.80649,829.27901 L 453.92518,829.65121 C 451.79476,829.85606 449.29587,830.3101 448.36023,830.66138 C 447.42446,831.01261 446.02071,831.73553 445.24102,832.27418 C 444.46122,832.81267 443.01997,833.4216 442.03322,833.62112 L 440.2255,833.97557 L 439.48115,831.60072 L 437.47844,832.22099 C 436.44503,831.37279 435.0209,830.5652 433.85029,829.93478 L 435.59983,833.30211 L 432.94141,839.2924 L 422.16597,847.53346 L 420.69501,850.29821 L 421.29758,854.7998 L 418.23151,857.72408 L 410.64617,857.72408 L 410.64617,858.04309 C 410.64617,858.21959 410.91192,858.88477 411.24874,859.51406 L 411.86907,860.66606 L 410.82339,861.81802 C 410.25269,862.45899 408.9445,863.3504 407.91686,863.78527 L 405.38286,864.74865 L 403.2558,859.9926 L 397.10597,859.9926 L 396.41481,858.89379 L 397.61996,856.64297 L 402.06835,855.43782 L 402.79501,853.1693 L 395.33369,842.12805 L 395.33369,839.84178 L 387.11033,831.67161 C 382.7435,831.16114 378.39619,830.2205 373.99547,830.11201 C 372.40793,837.71431 371.08435,845.38161 369.8129,853.04527 L 372.2055,853.18706 L 371.4434,859.28369 L 375.07659,860.01029 L 382.89231,866.39049 L 380.996,869.26158 C 381.82389,869.90397 382.64892,870.51057 383.67211,870.76804 L 388.81171,869.66923 L 389.94597,871.0693 L 400.82775,871.05161 L 402.61778,869.5629 L 403.84062,871.83141 L 408.66122,872.55802 C 409.7856,872.10879 410.91597,871.65968 412.09943,871.4592 L 413.03877,879.66488 L 409.51191,881.11814 L 409.51191,883.24488 C 408.73704,883.191 407.36681,883.73924 406.67515,884.06954 L 405.57745,887.90594 C 406.39148,888.03207 407.12557,888.33888 407.81052,888.72118 L 404.40775,895.70396 L 404.4255,896.69643 L 406.07369,899.86884 L 405.47112,900.82587 L 401.80253,900.82587 L 397.38953,903.14752 L 419.80887,933.63069 L 422.07738,931.36217 L 420.09243,929.92666 L 420.81904,928.04804 L 423.70788,928.04804 L 424.6826,925.49596 L 424.39904,911.83168 L 422.55587,908.26943 L 422.55587,903.32475 L 423.5661,902.24369 L 424.3459,896.41287 L 423.21164,895.72171 L 423.76102,884.87537 L 425.99409,880.87002 L 425.49785,880.21425 C 425.21939,879.85566 424.74096,878.54508 424.43448,877.29002 L 424.08003,873.32012 C 424.18909,872.39185 424.32503,870.47019 424.39904,869.06666 L 424.54082,866.51458 L 429.25508,865.89425 L 430.77924,864.68911 L 436.8416,864.52963 L 438.68545,866.53641 L 444.04947,866.81703 L 446.19508,869.05951 C 446.99064,870.10422 446.96639,871.76693 447.20827,872.54673 L 449.68946,875.65953 L 454.14596,875.49177 L 456.00036,871.34839 C 456.18088,870.7795 458.27233,867.55095 458.94075,866.83359 L 460.16359,865.5221 C 461.90885,853.38742 463.64829,841.25189 465.40953,829.11953 z "},"pa11":{"name":"PA-11","path":"M 2249.077,494.20087 L 2247.3577,491.28956 L 2242.8807,492.59958 L 2241.8262,490.27917 L 2240.6543,489.02134 L 2240.5419,485.05698 L 2237.4713,483.24308 L 2236.8272,480.02265 L 2234.2467,480.01111 L 2232.2355,475.22678 L 2234.3733,473.50067 L 2239.7867,463.10127 L 2244.0408,462.44166 C 2244.4195,464.49641 2244.2903,466.75882 2245.1513,468.68007 L 2249.1357,465.89348 L 2249.7289,466.48674 L 2253.418,461.89619 L 2255.9188,462.52387 L 2259.7675,457.97287 L 2262.8867,458.60398 L 2262.8867,461.3074 L 2265.1552,461.3074 L 2265.1552,456.99722 L 2266.3376,455.8149 L 2264.664,454.42596 L 2267.9909,451.494 L 2270.9263,444.86409 L 2273.5384,445.5197 L 2274.327,444.24385 L 2273.6415,443.41801 L 2272.9562,442.59215 L 2273.4861,442.59215 C 2273.7775,442.59215 2274.5957,443.37618 2275.3041,444.33442 L 2276.5922,446.07668 L 2272.2444,449.93759 L 2274.3543,452.16991 L 2271.3937,453.332 L 2271.3937,455.12054 L 2274.298,458.02485 L 2275.6521,462.15809 L 2278.4739,462.15809 C 2279.2172,460.51344 2279.941,458.86555 2281.1607,457.5226 L 2297.8557,451.65413 L 2298.0487,457.90463 L 2302.3022,457.92422 L 2304.9693,460.73611 L 2306.11,460.0311 L 2305.2981,462.72522 L 2301.4515,466.74295 L 2301.4515,468.68007 L 2302.8693,468.69265 L 2299.1546,471.62017 L 2297.4459,475.76918 L 2292.661,480.01443 L 2288.6911,482.02982 C 2286.5076,483.13829 2283.78,484.61696 2282.6298,485.31575 C 2281.4795,486.01455 2279.8904,487.28543 2279.0986,488.13994 L 2277.6587,489.69359 C 2272.7485,487.16652 2268.9323,485.34731 2264.0866,481.72629 L 2263.386,482.8597 L 2253.917,482.13185 L 2251.5442,486.783 L 2251.5442,492.32368 C 2250.7965,493.06789 2250.0032,493.72036 2249.077,494.20087 z "},"hi2":{"name":"HI-2","path":"M 694.18097,1347.0439 C 690.82119,1348.3348 688.068,1350.9419 684.48658,1351.7405 C 683.54549,1353.7499 682.70728,1355.9714 680.80025,1357.27 C 680.89723,1358.5008 680.61003,1359.9024 680.94033,1361.0296 C 682.62374,1362.816 684.88199,1363.8519 687.21589,1364.5009 C 688.49221,1365.6897 689.6132,1367.2158 690.98418,1368.1991 C 694.13152,1368.2448 697.196,1368.9315 700.25985,1369.5518 C 701.72151,1369.9554 702.48509,1368.3137 703.57835,1367.638 C 704.90344,1366.5015 706.22202,1365.3575 707.54394,1364.2173 C 707.38531,1362.763 706.9252,1361.2586 706.97103,1359.8297 C 707.97138,1357.7832 708.97169,1355.7366 709.97193,1353.69 C 708.74858,1352.5356 709.04677,1350.5035 708.11583,1349.481 C 706.87717,1348.7339 705.77841,1347.5979 704.21813,1347.7448 C 702.17799,1347.5171 700.13781,1347.2894 698.09767,1347.0617 C 697.43396,1348.222 696.66034,1348.8398 695.54559,1347.7706 C 695.0907,1347.5284 694.63586,1347.2861 694.18097,1347.0439 z M 664.42441,1360.4601 C 662.72966,1361.0942 661.64111,1362.5738 660.74748,1364.0024 C 659.08205,1364.955 657.07981,1365.4714 656.04627,1367.2181 C 655.22331,1368.0831 654.45587,1368.9748 654.45451,1370.2352 C 654.22012,1371.3625 653.76624,1372.521 654.65692,1373.484 C 655.41965,1375.5346 657.0092,1374.6177 657.42167,1373.092 C 658.19983,1371.9527 658.7728,1370.544 659.69495,1369.5829 C 661.15241,1369.1149 662.61084,1368.6501 664.06995,1368.1872 C 664.35556,1366.5813 664.38545,1364.865 664.82661,1363.3262 C 665.72761,1362.4193 666.49324,1361.5631 664.94866,1360.8931 C 664.77393,1360.7488 664.59914,1360.6044 664.42441,1360.4601 z M 786.1444,1380.2741 C 784.62705,1380.7336 782.71685,1380.4501 781.69307,1381.8727 C 779.96741,1382.811 780.53516,1384.9135 778.91726,1385.7939 C 777.884,1386.5962 776.97223,1387.7361 775.85368,1388.3203 C 773.4059,1388.3203 770.95812,1388.3203 768.51027,1388.3203 C 769.3021,1389.3088 770.50101,1390.1661 771.03836,1391.2367 C 771.07801,1392.3468 770.20049,1393.7254 771.31739,1394.5168 C 772.47348,1395.8354 773.77924,1397.3079 773.947,1399.0298 C 774.79213,1399.9593 776.03029,1400.7186 776.645,1401.7478 C 776.69576,1402.9486 777.097,1405.6271 778.58798,1405.2458 C 780.53647,1405.0549 783.07113,1404.3764 780.81873,1402.199 C 780.33014,1400.5848 783.24275,1400.0387 782.55771,1398.2005 C 782.0562,1395.2846 783.45344,1393.0535 786.65839,1393.1231 C 789.49971,1391.5695 791.60324,1392.722 792.19958,1395.8027 C 792.67546,1397.0718 793.17158,1398.3266 794.35745,1399.0957 C 796.70411,1401.181 799.13375,1403.6947 802.34302,1404.1999 C 801.59373,1403.1708 800.08358,1402.4248 800.4644,1400.9566 C 800.87716,1399.6811 799.63265,1399.1722 798.84865,1398.462 C 798.43964,1397.7545 799.62942,1396.2104 799.15921,1395.693 C 798.19096,1395.7902 796.53182,1395.1965 797.06163,1396.7918 C 797.06594,1399.271 795.33308,1398.1207 794.56065,1396.8366 C 793.84352,1395.77 791.18385,1393.6753 792.54235,1392.556 C 794.04797,1391.2122 792.30631,1390.0011 791.43929,1389.0061 C 789.76972,1387.1908 787.96131,1385.3672 787.42339,1382.8823 C 787.02697,1381.9987 786.57111,1381.1432 786.1444,1380.2741 z M 843.8143,1409.0205 C 841.98815,1409.7805 843.00115,1413.162 840.16131,1411.8556 C 837.18117,1411.535 834.14998,1411.3248 831.20312,1410.8521 C 830.07964,1410.3995 829.02937,1409.3934 827.76706,1409.9949 C 826.31657,1409.8738 827.04198,1411.6917 826.7473,1412.6005 C 825.71473,1413.8194 824.68692,1415.0424 823.66354,1416.2691 C 823.66972,1417.702 824.23861,1418.4784 825.73401,1418.0945 C 830.31738,1418.1324 834.92377,1418.0191 839.49284,1418.1508 C 842.6446,1419.1246 845.78054,1420.1519 848.95391,1421.0542 C 850.35846,1419.7046 852.59141,1420.0655 854.13633,1419.1456 C 855.81628,1417.5477 857.49067,1415.944 859.16222,1414.3373 C 858.14604,1413.6556 857.22815,1412.5793 856.14005,1412.1505 C 852.40812,1412.6353 848.5614,1413.6591 844.84222,1412.6182 C 844.49718,1411.4196 844.15458,1410.2204 843.8143,1409.0205 z M 864.97529,1421.2314 C 863.69307,1421.9372 862.17612,1422.3895 861.02224,1423.223 C 860.03248,1424.8744 859.46609,1426.7216 858.9673,1428.5687 C 860.58146,1428.886 859.43218,1430.1518 860.08613,1431.0247 C 861.34062,1432.403 862.00768,1434.4605 863.9138,1435.0597 C 865.6778,1435.9421 867.43482,1436.8381 869.19331,1437.7314 C 870.07911,1437.2258 870.93151,1435.2752 871.88678,1436.5571 C 873.11433,1437.0598 873.07712,1438.3043 873.24596,1439.4261 C 873.69155,1442.0957 874.10238,1444.7837 874.0848,1447.4966 C 875.04092,1448.1429 875.90143,1449.1416 876.93082,1449.5499 C 879.10808,1449.2122 881.39826,1449.2797 883.49896,1448.6491 C 885.16797,1448.0327 886.74549,1446.9542 888.46276,1446.6111 C 889.83748,1446.6076 891.29681,1446.8912 892.62134,1446.6845 C 893.94536,1445.5194 895.77997,1445.211 897.26409,1444.7631 C 898.65213,1443.3456 900.03411,1441.9222 901.41331,1440.4961 C 901.31407,1439.4566 901.59973,1438.2639 901.28361,1437.3107 C 900.41432,1436.5395 899.72117,1435.3742 898.76119,1434.8248 C 897.69232,1434.7108 896.30813,1435.2662 895.77747,1434.0096 C 895.34169,1432.278 893.73711,1434.4661 893.29112,1433.2822 C 892.72218,1432.5149 892.62758,1431.0041 891.35307,1431.4221 C 890.11866,1431.3689 889.40306,1429.9429 888.39147,1429.3002 C 887.33769,1428.5518 886.52511,1427.2888 885.3203,1426.8626 C 883.87361,1426.7226 882.38524,1426.2481 880.96781,1426.2744 C 878.14794,1427.661 875.21061,1428.8026 872.20618,1429.7206 C 871.3746,1427.2503 869.2532,1425.7313 868.51883,1423.2355 C 867.72853,1422.2927 866.22303,1422.014 865.15763,1421.3226 L 864.98885,1421.2382 L 864.97529,1421.2314 z M 840.11027,1427.8243 C 839.2821,1428.668 838.44904,1429.5068 837.61133,1430.3409 C 839.21098,1431.6646 840.80603,1432.9939 842.39648,1434.3286 C 842.49085,1435.9709 841.78387,1437.7981 842.91047,1439.2023 C 843.18031,1440.764 844.44824,1440.3554 845.6214,1440.1341 C 847.56013,1439.8032 849.61802,1439.3817 851.34214,1438.4716 C 852.02565,1437.3709 853.55122,1436.5845 853.18968,1435.1104 C 853.58066,1433.8066 852.58081,1433.0804 851.7211,1432.2946 C 850.05442,1430.7496 848.42245,1428.9184 846.35498,1427.9786 C 844.27362,1427.9173 842.19209,1427.8671 840.11027,1427.8243 z M 865.7374,1447.8688 C 863.39919,1449.3738 861.07056,1450.8951 858.80777,1452.5122 C 859.65307,1453.0999 860.19735,1454.8935 861.31374,1454.518 C 863.70969,1453.5341 866.52174,1454.2434 868.82116,1453.0615 C 868.66577,1451.3194 868.94911,1449.3691 867.88183,1447.8688 C 867.16702,1447.8688 866.45221,1447.8688 865.7374,1447.8688 z M 908.28975,1467.6474 C 907.55634,1468.5093 906.46138,1469.2215 905.95034,1470.1755 C 906.08345,1471.9878 905.67687,1473.9085 906.16903,1475.6486 C 907.15277,1478.3303 908.6974,1480.7479 910.48737,1482.9599 C 910.29375,1484.0905 911.01208,1485.6064 909.81084,1486.3114 C 908.40856,1487.8472 906.44669,1488.9835 905.86374,1491.0948 C 905.26508,1491.8142 905.19561,1493.8046 904.26875,1493.7244 C 903.05804,1492.7605 902.31113,1493.805 901.53853,1494.7384 C 900.13359,1496.3903 898.23824,1497.7211 897.63607,1499.8995 C 896.5098,1501.3725 897.43598,1503.0576 898.55827,1504.2645 C 900.20436,1504.9936 897.50409,1506.4139 899.36944,1506.6652 C 900.31989,1507.1395 901.57296,1507.3289 901.76006,1508.5711 C 902.80958,1511.1489 903.25087,1513.9185 903.8945,1516.6154 C 905.11156,1516.8137 905.70211,1517.4437 905.38321,1518.7004 C 905.5571,1520.4988 906.919,1521.8753 907.1974,1523.9275 C 908.24784,1525.4872 907.33601,1527.3097 907.25933,1529.0204 C 906.66663,1533.1536 906.17566,1537.3162 906.25166,1541.4982 C 907.90977,1542.0489 907.92769,1544.4 909.35056,1544.959 C 911.12641,1545.5566 913.19462,1545.5666 914.52816,1547.0454 C 915.67756,1548.4062 917.94114,1548.1219 918.87572,1549.538 C 919.60068,1550.2865 919.80847,1551.9798 921.11485,1551.6533 C 922.24735,1551.571 922.78647,1550.1125 923.67221,1549.4578 C 925.53301,1547.8387 926.14614,1545.3882 927.92165,1543.7059 C 928.43303,1542.7196 927.49312,1541.1729 928.7154,1540.4747 C 929.74275,1539.5316 930.59242,1538.1932 931.71307,1537.4751 C 932.95633,1537.778 933.79285,1537.0698 934.55161,1536.1683 C 935.36079,1535.5157 936.0237,1534.4995 936.92357,1534.0724 C 938.24418,1534.4382 938.97169,1533.3 939.84314,1532.5268 C 940.97848,1531.5879 941.9764,1530.2894 943.19737,1529.5748 C 945.9176,1529.5614 948.7212,1529.8373 951.38966,1529.6442 C 954.66369,1527.2812 958.37753,1525.6288 961.94921,1523.8226 C 965.02291,1520.9003 968.09651,1517.9781 971.17011,1515.0558 C 970.97031,1514.0442 971.76621,1512.3848 970.30751,1512.1925 C 968.18181,1511.163 965.79931,1510.5532 964.12531,1508.793 C 963.12501,1507.8382 961.72521,1507.0863 960.96021,1506.0234 C 960.86481,1504.6581 961.09641,1503.1801 960.81151,1501.8798 C 960.04262,1501.2721 959.75617,1499.5213 958.54847,1499.9905 C 957.03282,1500.2092 955.51484,1500.4104 953.99681,1500.6118 C 954.20948,1498.0597 954.42215,1495.5076 954.63482,1492.9555 C 950.76049,1488.5869 946.37624,1484.583 941.02045,1482.1141 C 935.77184,1479.5383 930.39019,1476.4377 924.36433,1476.491 C 921.82076,1474.5759 919.00831,1473.0738 916.15866,1471.6704 C 916.61457,1470.2077 914.86617,1470.1215 913.95434,1469.5128 C 912.16057,1468.6208 910.25768,1468.0039 908.28975,1467.6474 z "},"ak":{"name":"AK At-Large","path":"M 367.87794,1192.7957 C 365.21207,1196.1501 362.22304,1200.2146 357.85597,1201.094 C 356.02087,1200.8228 353.20897,1201.5157 351.95722,1200.6687 C 351.81292,1196.6151 345.58491,1203.1323 343.77759,1204.0512 C 341.51322,1206.0272 339.15344,1207.8362 336.15406,1208.4767 C 334.27329,1209.7948 333.41655,1205.0241 331.78965,1207.914 C 328.49467,1210.2843 326.60247,1214.0172 322.94027,1215.9269 C 323.75064,1218.7385 320.82949,1222.8879 318.66331,1225.0898 C 316.01205,1227.2568 312.95961,1229.6772 309.33086,1229.0001 C 306.48787,1229.2305 303.77877,1228.7483 301.18321,1227.5686 C 296.22759,1224.6255 298.33844,1231.0395 296.09154,1233.4837 C 295.7298,1235.7349 289.60037,1234.7227 293.63476,1237.3936 C 296.03976,1238.9619 296.07533,1243.1615 299.2609,1243.4815 C 302.07288,1245.8921 303.11826,1250.1595 305.75672,1252.8893 C 307.57365,1254.437 308.00698,1256.4877 307.77033,1258.7822 C 308.1343,1260.6856 307.15787,1263.369 308.48425,1264.7001 C 312.36462,1267.6755 317.1905,1268.0395 321.72086,1269.2108 C 322.08673,1270.0681 319.52598,1274.654 319.13608,1272.5618 C 318.51882,1270.349 317.646,1268.4833 315.01693,1269.2759 C 313.72877,1269.9811 315.31999,1274.9583 318.12026,1274.1346 C 320.31535,1273.4864 322.69475,1280.0868 321.59413,1279.4396 C 319.1433,1275.0456 317.3296,1279.9245 319.33601,1281.0755 C 321.32282,1280.5218 323.66618,1281.8329 324.02812,1283.5591 C 323.1973,1286.386 322.30082,1281.0356 320.20412,1283.6842 C 318.86531,1284.652 317.75054,1288.2987 316.13643,1285.8673 C 314.73792,1285.6268 312.72057,1285.6421 310.82573,1284.4303 C 308.54038,1284.1857 307.50858,1284.291 305.71176,1283.1578 C 302.82709,1283.9571 303.17836,1282.0285 303.79506,1279.8647 C 303.32819,1277.5691 305.87692,1275.9319 306.19607,1274.4879 C 304.59923,1272.6667 302.53286,1272.3752 300.24878,1272.833 C 296.33711,1273.136 292.31276,1272.9062 288.71922,1274.7388 C 286.90872,1275.9407 288.8298,1278.1763 290.42774,1278.873 C 288.31436,1279.9196 286.52051,1276.9677 284.50021,1276.2169 C 279.36435,1277.9932 274.43083,1280.4214 269.07837,1281.5527 C 266.92333,1283.3953 268.52383,1284.9601 270.09782,1286.5197 C 272.50009,1289.7443 276.53298,1290.7958 279.75003,1293.0052 C 278.803,1295.1891 276.18431,1294.7247 274.91308,1295.3048 C 275.43751,1297.7926 277.8026,1299.8002 276.62662,1302.4838 C 274.80939,1306.7108 280.65065,1307.8198 283.15993,1309.749 C 285.47811,1311.9797 287.29507,1313.0619 290.26677,1311.4927 C 293.07301,1310.1089 295.96315,1311.8666 298.81585,1312.2228 C 300.36851,1314.4737 300.97074,1317.5191 303.29098,1314.2846 C 302.86127,1316.8656 303.90846,1319.7533 306.29149,1315.7096 C 308.50904,1313.6965 311.06551,1311.5984 314.23779,1312.0102 C 316.539,1313.1433 318.10893,1309.1978 319.4014,1310.1867 C 320.70134,1311.9549 321.98406,1315.7381 318.7282,1315.8822 C 317.36588,1317.5291 313.87133,1314.028 314.47628,1317.0185 C 314.0104,1319.2128 316.9033,1318.5325 317.08635,1321.0869 C 318.4594,1323.8037 317.52304,1327.0948 317.91275,1330.0563 C 318.40898,1332.389 315.47934,1333.3089 314.33656,1334.9729 C 313.011,1337.0606 310.46894,1335.1858 308.51036,1335.2562 C 306.37429,1335.7734 305.82612,1330.9723 304.29588,1334.0819 C 301.7762,1336.5565 297.62874,1341.0887 294.34764,1340.4197 C 293.15422,1337.9085 289.66419,1333.2392 286.51029,1335.2032 C 284.3769,1335.9041 282.73402,1337.0824 282.07414,1339.3094 C 279.75641,1344.3102 276.10566,1347.9791 271.86144,1351.4155 C 270.7012,1352.993 267.63562,1353.9543 268.8217,1356.2906 C 270.28277,1359.3136 267.02568,1357.5143 265.38508,1357.3578 C 264.2518,1357.7819 267.23501,1362.0028 264.06736,1360.896 C 261.83046,1361.218 263.26256,1365.0539 265.80313,1363.6724 C 268.2459,1366.1691 263.16906,1363.8226 264.50171,1366.7958 C 264.35627,1368.9912 266.72437,1368.8691 266.11984,1371.8247 C 265.64501,1374.7044 270.14489,1371.2364 270.3145,1373.7794 C 271.45224,1375.7709 266.88704,1373.7543 268.82164,1376.8405 C 269.07242,1378.9181 270.29173,1381.522 267.29976,1381.8272 C 264.88903,1381.8457 264.18274,1385.3595 267.10455,1384.5601 C 271.37523,1384.1339 264.46956,1385.6072 268.2608,1388.0309 C 270.2581,1390.742 273.36133,1393.5606 273.52489,1397.0777 C 272.68443,1399.6748 274.92087,1400.2791 276.88431,1401.0729 C 281.31945,1401.4975 285.78788,1400.5311 290.09633,1399.4614 C 290.668,1393.9555 292.67853,1400.0451 293.02096,1402.6405 C 293.62899,1405.1057 294.20832,1407.5779 294.80313,1410.0464 C 292.54559,1410.7041 292.6461,1412.9436 291.39774,1413.8204 C 289.70293,1415.4547 293.30792,1419.6786 292.26536,1422.5204 C 292.69558,1424.4539 287.70126,1424.6249 290.11239,1426.4891 C 292.77883,1430.7062 296.36503,1424.118 299.68997,1424.1183 C 302.51876,1425.907 301.32696,1422.989 303.83197,1422.4436 C 306.58677,1420.664 307.1106,1421.1748 306.47824,1423.503 C 308.11918,1424.7726 309.20133,1427.4581 311.63485,1426.8347 C 313.02865,1424.0221 312.89846,1424.7103 313.43569,1426.8347 C 315.54861,1426.8613 315.04626,1430.4063 315.98152,1432.0006 C 316.19018,1434.1166 317.33925,1436.3415 319.66956,1435.7469 C 322.09966,1434.8014 320.73295,1432.547 320.41761,1430.6622 C 320.36152,1429.5143 322.32635,1424.6864 323.13073,1428.2228 C 324.31144,1435.0533 329.82807,1432.1338 334.25361,1430.386 C 335.46445,1429.3215 339.53829,1429.0835 337.64593,1431.1312 C 335.49152,1433.4135 332.18866,1434.8976 331.58447,1438.2439 C 330.67933,1440.383 333.81894,1441.4167 330.57536,1442.3123 C 329.62716,1445.6375 329.16644,1449.2495 327.92918,1452.4047 C 324.41548,1455.7822 319.79104,1457.8267 316.90528,1461.8853 C 316.24128,1463.4363 317.17281,1467.1643 314.47774,1465.3731 C 313.87418,1462.7399 310.61598,1467.0687 308.87122,1466.9745 C 305.11492,1467.8413 302.29017,1469.3594 299.23549,1471.5471 C 296.3984,1473.1615 295.49627,1476.3151 294.00059,1478.9999 C 294.69986,1479.9251 298.98496,1482.1191 295.82203,1481.6679 C 295.35138,1480.7893 292.51759,1479.094 291.57127,1480.9748 C 291.05496,1483.075 288.88856,1478.0183 292.26536,1479.5856 C 293.14123,1476.7663 289.81985,1477.6777 288.05926,1477.2025 C 285.1241,1476.3673 282.31803,1477.3051 279.504,1478.1338 C 274.6478,1480.958 270.84925,1485.4703 265.73806,1487.9147 C 264.07114,1487.3911 260.30064,1488.3338 262.28675,1490.2103 C 264.05512,1491.307 265.44308,1493.6453 267.47077,1493.8957 C 269.39423,1493.516 271.68746,1493.8193 273.3957,1493.0447 C 274.96052,1489.477 275.22457,1494.7982 276.73879,1491.6154 C 278.35411,1489.08 277.28212,1495.367 280.14084,1493.3358 C 278.67849,1490.9089 277.7396,1489.2821 280.67732,1486.926 C 279.94675,1484.289 284.3857,1482.8244 284.39926,1484.2069 C 281.60875,1486.5306 281.8788,1490.0221 285.88313,1489.0447 C 288.57781,1487.3675 292.67198,1487.5501 295.04172,1486.8513 C 295.07141,1484.9333 298.64959,1486.5494 299.28181,1483.9717 C 300.5629,1482.6661 302.52741,1484.4679 302.24734,1482.4137 C 304.4319,1485.5421 307.76152,1481.5509 310.76778,1482.362 C 312.90035,1482.3821 312.64413,1480.2511 315.51235,1481.4348 C 318.28258,1482.2279 317.12442,1478.4765 319.66088,1477.2364 C 321.53878,1475.1366 314.11589,1473.4519 320.39733,1473.2726 C 322.78059,1473.0943 326.26685,1473.8181 324.31265,1470.4393 C 325.40056,1468.5084 325.71475,1472.6294 328.35811,1471.2565 C 327.61566,1469.5902 329.66558,1467.2238 330.44038,1467.3527 C 330.53531,1470.5809 334.67462,1466.2165 336.21056,1465.7038 C 338.61305,1466.2752 340.03095,1465.1582 340.78668,1462.9057 C 342.3123,1461.3831 342.1738,1459.3559 341.89898,1457.9327 C 343.19366,1455.9426 346.33896,1458.6702 345.71039,1455.9865 C 347.97547,1456.5159 349.2843,1455.5838 349.68585,1453.3055 C 350.15388,1450.3618 353.80777,1454.9855 353.67716,1451.1109 C 356.71357,1451.462 355.5746,1448.325 356.81694,1447.6574 C 358.50776,1447.1504 362.33861,1448.7835 362.36858,1446.6157 C 365.50539,1447.1552 365.3821,1443.6657 367.27257,1441.7005 C 368.61529,1440.6845 364.74225,1438.5831 368.61541,1439.3283 C 367.56518,1436.0725 370.94418,1438.1462 372.21915,1436.5345 C 374.20624,1435.3776 374.52522,1433.2378 374.97068,1431.1728 C 372.84306,1429.8399 371.04364,1427.5939 368.29041,1428.0026 C 364.4384,1428.5217 368.12014,1423.8796 368.55034,1421.976 C 370.90672,1422.4472 371.67848,1421.7272 371.63755,1419.5611 C 372.82137,1417.6407 374.63594,1417.331 376.72872,1417.6918 C 378.98491,1418.2414 378.15097,1414.1882 379.67803,1413.6469 C 381.77799,1414.1037 382.0714,1411.2334 383.29978,1410.068 C 381.7067,1408.1139 383.59055,1406.8816 384.9698,1405.5565 C 387.2609,1404.6318 384.6035,1401.1395 387.00883,1400.7195 C 388.67578,1399.8499 387.85434,1397.3046 390.76156,1397.3166 C 392.49732,1396.5966 390.36775,1393.2296 393.43593,1393.3442 C 394.99736,1392.2502 398.44805,1392.3997 397.76724,1389.8298 C 399.22444,1388.5989 401.60646,1387.6366 403.73587,1387.9655 C 407.32029,1386.8267 406.92697,1390.2267 409.15319,1392.1231 C 409.66878,1392.9331 405.64512,1395.2327 405.15578,1392.8627 C 403.76333,1391.1292 401.25985,1392.4125 400.13149,1393.9304 C 398.35188,1396.5564 392.54117,1395.7982 394.50537,1399.9411 C 394.85022,1401.9597 395.46201,1404.0389 393.6027,1405.058 C 394.25513,1407.4296 392.3627,1408.8006 390.92049,1410.3485 C 389.49925,1411.7523 389.58765,1414.2177 389.41198,1416.0533 C 390.58899,1420.1777 393.97599,1417.9707 396.37906,1416.8571 C 396.16861,1420.3124 392.89088,1419.5785 392.21343,1421.2819 C 389.65735,1420.5091 386.73769,1424.3199 387.67147,1426.3079 C 390.16745,1428.335 392.65702,1427.0254 395.46807,1426.531 C 398.84396,1427.157 399.68363,1422.8442 402.56081,1421.976 C 403.79386,1421.2711 403.20888,1419.1211 405.92282,1420.718 C 406.97096,1419.2284 406.88477,1415.825 409.43469,1416.8325 C 412.29242,1417.6901 412.80806,1416.5266 411.77104,1413.9952 C 412.94767,1410.955 421.18442,1413.2978 424.66563,1412.2808 C 426.76379,1412.8475 429.89867,1412.111 427.73259,1409.8286 C 426.85147,1408.9087 422.58072,1406.9658 423.81844,1406.706 C 426.10376,1407.5655 427.08798,1404.7395 427.18951,1403.1514 C 427.06772,1399.3157 421.08693,1404.2886 423.50979,1401.5918 C 425.6995,1400.046 429.97627,1397.4367 425.13963,1396.7108 C 421.50284,1398.1765 423.39627,1394.2794 425.14101,1392.8242 C 425.07571,1394.8499 425.01806,1396.8175 427.93961,1395.9476 C 430.17275,1397.4455 429.91311,1390.7385 430.31518,1393.5184 C 430.59289,1396.838 432.93381,1393.6988 433.16698,1392.8242 C 436.87715,1393.303 439.06595,1395.4068 437.74257,1397.813 C 438.24314,1399.8547 442.92117,1396.1687 441.73359,1398.7456 C 440.66011,1401.1072 444.54377,1399.1342 444.66707,1398.5361 C 448.32158,1399.5813 442.74689,1402.3425 446.98266,1402.5632 C 448.93102,1401.835 452.21764,1407.4118 452.60046,1404.275 C 452.04608,1401.0674 456.02773,1402.6383 454.68273,1405.3178 C 457.33914,1404.8309 456.65572,1407.684 459.80327,1406.706 C 461.76957,1406.7072 462.71582,1409.171 464.24818,1410.2198 C 469.42386,1409.0472 474.48348,1406.4473 479.91363,1407.6342 C 482.46251,1408.3953 485.98059,1407.9491 488.04195,1409.6024 C 491.07244,1411.9744 494.91436,1412.5477 498.65178,1412.2587 C 501.42837,1412.1365 503.67011,1409.0565 504.99362,1406.8381 C 505.58403,1406.5501 505.81006,1410.4941 506.25721,1411.8202 C 504.14776,1411.6576 503.90849,1415.116 505.8979,1415.4459 C 510.44341,1417.8304 515.2651,1419.6785 520.10084,1421.2819 C 523.64496,1421.292 524.34993,1426.2205 527.35171,1427.595 C 529.62406,1429.2523 531.66184,1431.4501 534.66279,1431.5118 C 536.97489,1431.1334 537.99077,1434.8679 539.8466,1434.259 C 541.89897,1433.3239 537.52513,1431.09 541.48807,1431.8668 C 543.09994,1432.2881 546.04733,1429.9585 544.3876,1428.5232 C 544.43532,1426.2825 536.83774,1422.5762 540.8829,1422.9087 C 544.25448,1421.8269 544.66525,1425.748 545.70345,1428.0514 C 546.07526,1431.5991 550.09069,1426.0544 551.57354,1430.175 C 552.58985,1432.273 555.61144,1430.1867 554.63189,1428.1561 C 556.64699,1430.5008 558.51519,1434.398 559.60394,1437.6952 C 560.36991,1440.6026 563.02362,1443.0331 563.40292,1445.9159 C 563.16116,1447.7669 562.31043,1449.7589 564.17273,1451.0547 C 565.43172,1453.6622 566.80115,1449.267 568.11359,1448.4845 C 568.11024,1446.4889 569.64796,1445.312 570.69845,1444.0756 C 569.81883,1441.9707 569.69157,1439.3218 567.34774,1438.2719 C 564.15361,1437.2995 569.47447,1434.861 566.70933,1433.6805 C 563.59956,1430.4181 565.71434,1430.6646 567.65671,1433.2587 C 568.75297,1436.0945 571.14172,1433.7099 571.63223,1435.7482 C 570.69318,1437.4779 570.56376,1438.8547 572.54814,1440.6514 C 574.02982,1442.296 575.20985,1443.9973 573.9363,1446.1607 C 576.01273,1448.6221 580.64821,1446.3228 581.80969,1448.6671 C 581.47389,1451.8242 586.14828,1450.617 586.56008,1453.2101 C 590.20666,1452.2839 588.20532,1454.7173 589.00837,1456.7735 C 591.33433,1458.1162 587.72002,1460.6768 587.22492,1459.4147 C 587.37118,1455.0475 580.67362,1459.7859 584.80612,1461.9999 C 586.15089,1462.9594 589.19575,1459.0179 587.3933,1462.8967 C 586.88045,1464.7706 589.24583,1466.2955 590.81139,1464.8362 C 590.44933,1466.8246 593.13667,1469.4628 593.50099,1466.7444 C 596.06748,1465.064 594.30938,1470.4289 594.86482,1472.1466 C 596.25571,1474.5154 599.81518,1473.8546 598.99261,1470.2065 C 599.03708,1466.0744 599.40361,1467.0849 600.07039,1470.4615 C 599.58231,1473.0126 600.32418,1475.2723 600.39853,1477.9805 C 601.81408,1480.3091 603.46828,1479.1965 603.89465,1478.1979 C 602.94947,1481.8326 605.70719,1482.7384 608.81494,1483.7502 C 610.16709,1483.3742 608.63216,1478.4925 611.47982,1480.6169 C 611.68478,1482.919 612.43855,1484.5182 615.0406,1483.7502 C 617.62965,1484.204 615.90547,1480.3662 616.38084,1478.7169 C 616.40965,1471.7337 614.74478,1464.8554 613.80159,1457.9622 C 612.10684,1455.8032 608.26732,1454.1873 605.69987,1453.3076 C 604.03342,1454.7887 601.9701,1452.6473 600.11428,1452.4 C 598.33758,1451.5189 596.01071,1450.9661 594.74624,1451.5919 C 594.01441,1449.614 593.32859,1447.565 590.81139,1448.3515 C 590.57478,1446.3204 590.95158,1443.5229 588.08134,1444.7822 C 586.04983,1444.9739 589.52071,1441.2998 586.59019,1440.6007 C 580.84404,1434.4512 574.5682,1428.6645 569.66021,1421.8548 C 567.19019,1418.5489 562.85005,1417.6914 559.84391,1415.6971 C 558.9234,1413.8361 558.20694,1411.7673 555.93331,1411.2826 C 552.17987,1411.1406 549.92242,1408.536 550.46734,1404.7105 C 548.51099,1403.5341 546.55158,1402.363 544.58925,1401.1967 C 542.54861,1403.3716 538.20563,1404.4262 537.34486,1406.8802 C 539.36959,1409.6321 534.52931,1408.7611 536.09851,1411.3825 C 536.6423,1412.8566 536.76959,1416.1713 534.50269,1415.7292 C 532.63634,1416.4179 531.54703,1418.8355 529.96005,1420.1758 C 528.49497,1422.111 528.13579,1417.3053 527.18353,1416.2811 C 525.90083,1414.0041 522.99267,1413.0375 521.02713,1411.3109 C 518.42914,1409.6844 516.04177,1407.8357 514.49161,1405.1345 C 512.94,1404.4338 510.86807,1404.6349 509.90152,1402.5051 C 508.34765,1401.2531 511.37439,1398.4689 509.6976,1397.4605 C 508.0415,1396.3133 505.88108,1397.8377 504.0066,1397.8346 C 502.32155,1398.8836 501.07241,1402.0415 498.85391,1400.5098 C 496.09184,1398.3172 496.22594,1401.5597 493.87891,1400.9831 C 490.17434,1399.0532 492.10845,1393.2055 490.76993,1389.6555 C 483.33274,1334.0052 477.3169,1278.1564 469.45471,1222.5714 C 468.50721,1222.0914 466.59218,1225.6092 465.17703,1222.2202 C 461.55698,1220.5727 458.10739,1218.4921 454.72611,1216.3515 C 451.94163,1218.0126 452.36524,1215.4231 450.34466,1216.2213 C 447.2238,1218.1662 442.71247,1220.6148 439.11533,1218.7136 C 437.46053,1217.3675 435.73199,1216.2838 433.50881,1216.7317 C 430.60133,1216.5367 427.41351,1216.9816 424.67779,1216.3659 C 423.23836,1215.1394 422.13246,1212.7085 419.97682,1214.1367 C 419.14255,1212.7161 417.28663,1212.3312 415.53194,1211.7709 C 414.46905,1210.0547 411.71054,1211.3977 409.93229,1210.9723 C 407.92912,1212.6403 408.31335,1212.0009 406.18333,1210.8459 C 403.59562,1211.2334 400.93746,1213.1652 398.46133,1211.5145 C 399.18091,1209.0081 395.85672,1209.284 394.33637,1208.3398 C 395.50423,1205.7098 395.91122,1202.572 391.75003,1202.9044 C 388.84696,1202.4898 385.39406,1202.1168 383.13666,1203.8797 C 380.42786,1203.8718 380.17654,1202.4002 381.17412,1200.1705 C 379.56166,1199.0176 377.67401,1195.3607 376.46315,1198.8608 C 376.63956,1202.2809 369.43709,1203.8426 373.00435,1200.3057 C 375.01389,1200.0163 376.77975,1197.3565 374.88191,1196.2494 C 372.20657,1195.7645 370.5205,1193.5579 367.87794,1192.7957 z M 264.45833,1293.5691 C 262.5408,1295.1535 265.14516,1298.2254 266.41619,1295.9671 C 267.0476,1293.7733 266.55223,1293.2885 264.45833,1293.5691 z M 230.49123,1308.0366 C 228.69859,1309.0939 225.16737,1312.5056 226.81282,1314.6831 C 227.69941,1316.8967 229.16142,1317.7683 231.44141,1316.7857 C 233.79737,1315.5716 235.03757,1317.8391 236.54989,1319.2575 C 238.65225,1320.2192 235.99665,1323.7667 238.82033,1323.7621 C 241.6379,1323.7429 239.43027,1332.3017 243.1265,1327.3161 C 243.78923,1325.7097 246.50155,1324.8825 247.77844,1326.3215 C 248.99216,1328.3571 252.57877,1324.9951 250.70664,1323.8705 C 248.59953,1321.7939 245.18195,1321.7428 243.64507,1319.0107 C 241.65409,1317.1876 242.13917,1314.089 240.03499,1312.1577 C 237.60534,1312.2148 234.77863,1313.988 232.86221,1311.8269 C 231.27695,1310.8427 229.95858,1310.1249 230.49123,1308.0366 z M 301.28855,1331.05 C 300.98059,1335.2637 307.60762,1332.1469 303.71625,1331.05 C 302.90702,1331.05 302.09778,1331.05 301.28855,1331.05 z M 252.02975,1383.6057 C 250.5022,1386.1705 248.64364,1384.3462 246.71825,1383.8216 C 244.43958,1383.8455 244.72772,1386.8317 245.58919,1388.1011 C 247.99471,1390.6752 250.85716,1392.7941 253.54808,1394.9065 C 255.10107,1398.1108 255.99949,1394.8494 257.56295,1394.9065 C 259.70644,1394.9167 262.50232,1395.5895 261.56794,1392.4736 C 261.60355,1390.4867 261.61626,1388.4994 261.63858,1386.5123 C 259.39065,1386.3264 258.28502,1384.5337 257.1476,1383.6057 C 255.44165,1383.6057 253.7357,1383.6057 252.02975,1383.6057 z M 0.052913,1422.6701 C 0.134557,1424.7361 -0.671268,1427.3279 2.009148,1427.8378 C 3.815132,1428.1744 5.156646,1427.1588 5.503699,1428.5927 C 6.436405,1425.7752 1.912798,1423.4545 0.052913,1422.6701 z M 546.73659,1430.7606 C 546.76512,1433.6717 543.26621,1431.6184 541.97194,1432.7125 C 541.1011,1435.075 539.53334,1438.445 542.21076,1440.1227 C 544.78052,1442.9811 547.92129,1445.4596 550.12951,1448.5585 C 550.75492,1450.5139 552.5586,1452.4734 551.07467,1454.4682 C 552.55433,1456.4433 555.53603,1453.8966 554.3239,1451.9898 C 553.03683,1448.1542 556.34799,1450.0284 556.08514,1452.9933 C 558.14128,1454.4487 555.57693,1458.2118 558.24214,1459.1279 C 560.91319,1460.2303 562.2171,1462.2791 563.39775,1464.8001 C 564.12289,1466.8582 567.6807,1469.1155 567.1222,1465.5367 C 566.6875,1462.0305 566.7421,1458.3895 564.77744,1455.3069 C 561.7489,1449.6642 560.68798,1443.114 557.52441,1437.6035 C 558.17761,1436.3205 557.90346,1434.0014 556.32319,1433.0815 C 553.00106,1433.1469 549.87631,1431.6719 546.73659,1430.7606 z M 2.200258,1435.4891 C -1.704244,1436.315 6.662973,1442.3323 5.605643,1436.0314 C 4.473883,1435.8344 3.353747,1435.5287 2.200258,1435.4891 z M 383.88542,1437.0941 C 379.7073,1437.0569 380.03684,1440.7799 377.40011,1443.3687 C 376.48186,1445.0855 369.52904,1447.4542 373.30052,1448.3515 C 375.65232,1446.4409 377.7588,1447.877 379.94706,1448.3273 C 380.90506,1445.7797 384.19387,1448.6574 384.57951,1447.1357 C 384.70056,1445.6632 387.56371,1448.1415 387.21674,1444.9335 C 387.56749,1443.5829 384.84527,1441.5131 383.57631,1441.6836 C 380.56446,1441.8717 384.25773,1439.8189 383.88542,1438.5691 C 383.88542,1438.0775 383.88542,1437.5858 383.88542,1437.0941 z M 580.33493,1448.5033 C 577.37027,1448.6653 574.20608,1448.2459 571.36159,1448.7586 C 568.72393,1449.7274 571.32745,1451.6335 572.01595,1453.1872 C 571.5682,1452.3485 569.21717,1451.6076 567.90205,1453.6538 C 565.7215,1454.3366 566.93104,1457.2984 568.30874,1458.2853 C 569.42275,1459.5151 572.23809,1461.3978 572.33065,1462.2333 C 570.44596,1461.4255 569.03693,1464.7198 571.29008,1465.0965 C 569.75231,1468.1818 575.4283,1471.2999 573.70015,1467.1018 C 572.50328,1464.6121 577.4559,1466.6159 575.24387,1462.8639 C 573.7276,1460.7363 574.19956,1456.5308 576.2824,1460.3395 C 577.47927,1461.3065 581.86527,1459.6495 582.04142,1458.1048 C 584.0579,1457.695 586.2739,1457.6077 587.25452,1455.4934 C 586.71609,1452.3472 581.79376,1451.6008 580.33493,1448.5033 z M 372.62812,1449.436 C 371.63723,1453.0082 369.64511,1449.7096 367.92541,1450.8441 C 365.33311,1451.3359 367.86346,1455.2764 365.14279,1454.5983 C 362.32908,1454.1659 359.53635,1456.493 358.36132,1458.7651 C 356.84499,1462.391 360.28158,1461.6109 359.59222,1464.6664 C 359.13099,1466.9854 359.85477,1468.5423 362.25463,1469.021 C 364.14996,1469.3342 366.62223,1466.0404 364.10381,1470.3238 C 360.73405,1473.45 366.61958,1473.3336 367.45976,1470.9329 C 369.37654,1469.7943 369.82474,1467.683 370.63724,1466.3288 C 372.69485,1464.5723 376.58763,1466.2756 376.87683,1462.9922 C 378.87212,1463.1786 380.55806,1462.992 380.48359,1460.5087 C 381.95526,1460.2347 383.68969,1461.4583 383.51678,1458.7927 C 385.76719,1458.7762 385.93864,1455.9998 383.56006,1455.9865 C 380.31645,1455.9238 383.18073,1452.6 382.3335,1451.1157 C 380.77447,1449.0105 377.55475,1454.1621 378.33269,1449.7397 C 375.82892,1448.4915 375.04926,1452.3841 373.42437,1450.1022 C 373.15895,1449.8802 372.89354,1449.658 372.62812,1449.436 z M 578.03579,1461.4525 C 575.52557,1463.1652 579.11231,1464.9602 577.94584,1466.8241 C 575.34528,1469.254 577.99195,1472.3725 579.7927,1469.6948 C 580.08687,1467.8251 584.19844,1472.4368 580.48953,1471.4344 C 577.6595,1471.8523 579.88764,1474.7998 582.15853,1473.6021 C 582.26368,1474.7628 583.90495,1479.975 581.20258,1477.4166 C 577.64396,1475.6932 580.00112,1479.689 581.55284,1481.384 C 582.83597,1482.4778 585.92863,1481.4564 586.70118,1483.1489 C 587.32519,1485.2784 587.9927,1487.3831 590.03232,1488.5627 C 591.88292,1490.3707 593.90354,1492.4807 596.72983,1490.914 C 598.59415,1489.767 603.4642,1490.5985 602.46129,1487.3261 C 601.78759,1483.174 599.24771,1479.3067 597.00925,1476.0088 C 593.88783,1476.1575 595.73713,1473.1739 593.95396,1471.8545 C 591.77482,1469.7363 590.23717,1466.7177 587.04162,1466.0477 C 584.76931,1465.7954 584.32219,1463.5953 583.41501,1461.8863 C 581.62192,1461.7416 579.82882,1461.5971 578.03579,1461.4525 z M 41.698393,1465.5953 C 39.850866,1465.0081 37.388299,1468.2325 40.245139,1467.7861 C 42.316863,1468.3315 41.569145,1466.984 41.698393,1465.5953 z M 359.6356,1473.8376 C 358.40238,1475.0526 355.53756,1475.4113 356.12176,1477.6117 C 358.23751,1477.6345 359.8529,1476.8807 360.58358,1474.8024 C 360.29348,1474.4787 359.94938,1474.1588 359.6356,1473.8376 z M 360.9804,1474.727 C 359.75223,1478.0928 366.33442,1478.5596 365.71932,1475.7766 C 364.36414,1474.7096 362.61573,1474.7177 360.9804,1474.727 z M 61.436614,1478.2408 C 59.571172,1478.162 56.732931,1479.9445 59.224197,1481.2123 C 61.771914,1482.3857 63.291214,1480.1734 61.436614,1478.2408 z M 346.75153,1486.0493 C 345.26287,1487.0087 342.40959,1488.2161 343.95053,1490.1701 C 347.25258,1494.0152 350.84067,1486.8779 346.963,1486.1233 L 346.75153,1486.0493 z M 289.64083,1488.6088 C 288.13357,1491.1897 288.3645,1494.0263 291.62052,1494.4588 C 294.00884,1494.3156 292.43173,1491.3385 292.33165,1489.7588 C 292.50018,1487.8171 290.83532,1488.8766 289.64083,1488.6088 z M 257.01853,1489.086 C 254.08546,1489.8445 249.76457,1488.089 247.71358,1490.6016 C 246.30563,1491.9338 245.67963,1494.8216 243.288,1494.1615 C 241.43071,1494.0911 242.00419,1498.1354 243.6235,1498.873 C 245.46422,1500.7252 248.73144,1498.374 250.38128,1496.9379 C 252.27385,1497.1608 254.65271,1496.5153 256.26749,1497.2342 C 257.26015,1499.6384 261.97252,1496.2357 261.02312,1494.1062 C 260.62417,1491.4449 260.88703,1488.2388 257.01853,1489.086 z M 82.497954,1492.0793 C 83.682664,1493.928 83.282214,1499.1434 86.287354,1497.3072 C 87.300844,1495.7374 86.200614,1492.5999 84.774354,1492.0793 C 84.015554,1492.0793 83.256754,1492.0793 82.497954,1492.0793 z M 298.68571,1494.0964 C 297.03061,1494.467 293.72291,1494.7952 295.36445,1496.9585 C 297.06992,1498.6038 300.74108,1495.36 298.68571,1494.0964 z M 94.362574,1495.8968 C 94.150684,1498.7617 90.671574,1497.4785 90.978874,1499.7142 C 90.416934,1502.22 94.372394,1501.1864 94.709614,1499.2804 C 96.298494,1497.6272 96.032274,1497.2755 94.362574,1495.8968 z M 99.177834,1497.632 C 97.865964,1499.5829 97.693374,1500.5409 95.837514,1499.91 C 95.996254,1501.7538 94.940774,1504.7094 97.914954,1503.9753 C 100.27061,1505.1073 105.26088,1504.1385 102.93149,1501.5286 C 99.462494,1501.9456 102.51527,1498.7473 100.52927,1498.1372 C 100.08201,1497.9604 99.627754,1497.8018 99.177834,1497.632 z M 230.44785,1498.0007 C 228.93492,1498.6026 226.97007,1500.3382 227.96462,1501.7751 C 232.30476,1504.1049 233.99218,1501.3862 230.65478,1498.2766 L 230.44785,1498.0007 z M 105.55479,1498.2176 C 104.53,1501.9425 109.22918,1502.6731 107.98411,1498.6948 C 107.17433,1498.5357 106.36457,1498.3767 105.55479,1498.2176 z M 219.27732,1499.5841 C 217.77177,1500.6001 214.33639,1500.4402 215.34504,1503.0095 C 216.67491,1505.8607 213.40408,1505.3568 213.68012,1507.7655 C 211.54839,1508.2334 206.81564,1509.0555 205.42479,1508.6239 C 207.79671,1507.0326 206.56958,1505.5841 204.71604,1504.1754 C 203.37425,1503.7018 200.12527,1504.0402 199.43295,1505.6523 C 199.07026,1509.0897 195.62807,1507.6511 193.43461,1509.2491 C 192.50931,1511.3498 188.88321,1515.8222 193.75591,1513.6204 C 197.76637,1513.1308 198.85525,1509.3725 202.799,1509.5261 C 205.13214,1508.4878 206.90957,1513.0747 209.25637,1511.6873 C 212.50938,1510.1179 216.65104,1511.0467 219.87185,1509.9744 C 220.92921,1506.8898 224.45604,1508.6946 226.59646,1506.8376 C 228.66365,1504.4736 224.38957,1504.9835 226.11822,1503.3994 C 225.37407,1500.4926 223.98255,1501.238 222.40073,1503.1847 C 221.30724,1501.5166 222.73448,1499.7503 219.44931,1499.639 L 219.27732,1499.5841 z M 264.50171,1501.1024 C 264.00431,1503.7985 264.69275,1505.3087 267.62728,1504.5729 C 269.11211,1503.6482 265.86346,1500.8824 264.50171,1501.1024 z M 127.76571,1501.7098 C 128.69564,1504.8905 126.32985,1504.991 123.71287,1504.6676 C 119.72217,1502.3907 117.86512,1504.9895 121.64758,1507.2779 C 124.83604,1507.5871 128.65731,1508.1996 130.60715,1505.7442 C 132.94069,1506.1357 132.17817,1501.3884 130.20177,1501.9866 C 129.38975,1501.8943 128.57773,1501.802 127.76571,1501.7098 z M 238.12623,1502.4906 C 238.11417,1507.0643 243.64063,1502.7172 239.51442,1502.4906 C 239.05169,1502.4906 238.58897,1502.4905 238.12623,1502.4906 z M 131.93026,1508.7374 C 132.3142,1511.6049 134.92005,1512.7297 137.48299,1512.2079 C 137.03052,1509.712 134.37633,1508.1768 131.93026,1508.7374 z M 148.39324,1509.2147 C 145.163,1510.7393 145.27934,1513.1016 148.87151,1512.2079 C 151.25344,1513.3211 151.43124,1509.4523 149.21763,1509.5257 C 148.94283,1509.4219 148.66804,1509.3183 148.39324,1509.2147 z M 171.62361,1510.7112 C 169.48019,1510.3207 167.10906,1511.958 168.23741,1513.6586 C 170.52965,1513.6345 171.67377,1513.2284 171.62361,1510.7112 z M 179.82256,1510.8197 C 179.81049,1515.3934 185.33696,1511.0464 181.21075,1510.8197 C 180.74801,1510.8197 180.28529,1510.8197 179.82256,1510.8197 z "},"ca46":{"name":"CA-46","path":"M 218.67134,976.43614 L 217.25352,976.91463 L 217.27124,979.37812 L 219.11441,980.29971 C 220.12141,980.80332 221.13126,981.24982 221.36521,981.29218 L 221.79055,981.36308 L 224.69709,982.01879 L 225.51233,981.9479 L 227.9758,981.62889 L 227.6768,980.25173 L 230.04936,981.34532 L 231.96342,982.28466 L 232.58372,982.85179 C 233.55328,983.74836 234.71817,985.18819 235.17124,986.04189 C 235.62432,986.89547 236.77879,988.49041 237.74105,989.58644 L 239.4956,991.57139 L 240.59441,991.57139 C 241.20646,991.57139 242.20645,991.30944 242.80976,990.98651 L 243.90857,990.40169 L 244.18045,988.49035 L 238.9415,982.34529 L 235.57887,983.1176 C 234.13518,979.69509 233.80783,979.86081 234.41495,979.02401 L 233.59452,978.1381 L 230.91151,981.12125 L 230.19115,980.86684 L 227.56818,979.69713 L 225.0161,979.11226 L 225.51233,981.7135 L 224.80342,981.80612 L 221.79055,981.02631 L 221.79055,978.74011 L 218.67134,976.43614 z M 204.20956,993.71582 L 204.20956,994.03483 C 204.20956,994.20996 204.50331,995.01267 204.8653,995.80711 L 205.52105,997.24268 L 206.14134,997.26037 C 206.48117,997.26735 207.40193,997.76177 208.17946,998.35919 L 209.59728,999.4403 L 208.37441,1002.6835 L 209.49095,1005.2002 L 210.96194,1005.5015 C 211.76901,1005.662 213.31615,1006.2549 214.40016,1006.8307 L 216.36738,1007.894 L 217.82065,1007.3269 L 217.82065,1006.5649 C 217.82065,1006.1468 217.17393,1004.5923 216.38511,1003.1089 C 215.59635,1001.6254 214.53527,999.96541 214.02798,999.40486 C 213.52074,998.84436 212.84869,998.37694 212.53926,998.37694 C 212.22984,998.37694 210.90786,997.50129 209.59728,996.42743 L 207.22243,994.47793 L 204.20956,993.71582 z M 200.18649,1020.9912 L 198.82184,1021.4342 L 199.19402,1025.3155 L 199.7257,1025.8472 C 200.01131,1026.1436 200.23966,1026.9578 200.23966,1027.6372 C 200.23966,1028.3165 200.63455,1029.8288 201.1258,1031.0045 C 201.6171,1032.1804 202.7012,1033.9858 203.51837,1035.0099 L 204.98936,1036.8708 L 207.00976,1036.729 C 208.11873,1036.658 209.03016,1036.4579 209.03016,1036.2682 C 209.03016,1036.0786 207.76625,1034.1676 206.22996,1032.0325 L 203.44748,1028.1512 L 200.18649,1020.9912 z "},"ca24":{"name":"CA-24","path":"M 148.72119,878.99822 C 146.46963,880.43697 145.47859,881.3505 144.32998,883.15691 L 137.60526,882.41318 L 137.29013,883.44434 L 138.49528,886.64816 L 137.30048,889.26285 L 136.15588,888.11861 C 136.15588,887.62787 135.7546,887.21478 135.59201,887.21478 L 131.14036,890.13901 L 127.7231,888.38578 L 124.05342,892.23131 L 120.27627,897.28131 L 120.27627,898.07881 L 119.70914,899.7625 C 117.80977,902.59814 118.496,903.28267 119.53192,904.83121 L 120.63073,906.39082 L 123.67904,909.97082 L 123.67904,911.47722 L 139.27508,912.27478 L 152.53172,919.59425 L 168.05687,922.37676 L 177.13092,930.08613 L 175.28776,933.66613 L 176.70558,935.08396 C 177.48583,935.86415 178.12329,936.76379 178.1234,937.06891 L 178.1234,937.61834 L 180.23244,938.29181 L 181.47303,945.82396 L 186.29363,950.73319 L 186.94934,950.73319 C 187.30425,950.73319 188.96775,951.73117 190.65343,952.94851 L 194.19213,955.47904 L 194.17703,954.05447 L 203.2366,949.51029 L 209.29778,950.80408 L 210.07691,946.65111 L 212.32835,946.48489 L 211.81633,941.94372 L 206.47983,911.08732 L 201.3335,910.02781 L 201.24709,908.5543 L 189.18241,906.16039 L 189.05512,903.16788 L 187.23229,902.98158 L 187.53355,901.59245 L 182.66043,900.70178 L 182.66043,899.21307 L 175.57132,897.95478 C 173.06578,895.21634 171.24302,893.26576 168.21226,891.15763 L 165.58318,891.01261 L 161.05381,886.66795 C 159.10231,885.28319 158.01435,884.84957 157.85372,884.03046 L 155.5063,883.69121 L 153.31644,880.77826 L 151.55606,880.50814 L 150.72338,879.01239 L 148.72119,878.99822 z M 152.19501,996.10349 L 152.6735,998.65557 L 156.27125,1001.2076 L 159.95759,1001.2076 L 158.77013,998.63782 L 155.0838,996.10349 L 152.19501,996.10349 z "},"ca23":{"name":"CA-23","path":"M 98.96875,823.875 L 99.75,831.34375 L 101.625,832.90625 C 102.65978,833.77016 103.80191,834.46876 104.15625,834.46875 L 104.78125,834.46875 L 105.6875,836.59375 C 106.1847,837.76345 106.75982,839.37643 106.96875,840.15625 C 107.17762,840.93605 108.10746,842.89368 109.03125,844.53125 L 110.71875,847.53125 L 111.25,847.53125 C 111.54519,847.53125 112.821,848.1538 114.0625,848.9375 L 116.3125,850.375 L 116.3125,856.375 L 113.09375,861.4375 L 113.6875,862.84375 C 114.02693,863.61045 115.26779,865.17534 116.4375,866.3125 L 118.5625,868.375 L 118.5625,867.375 L 120.15625,867.375 L 124.25,870.96875 L 124.25,872.46875 C 124.25,873.29052 123.85065,875.27329 123.375,876.875 L 122.5,879.78125 L 120.75,881.5625 L 120.9375,882.3125 L 119.65625,885.15625 L 120.09375,885.46875 C 120.34414,885.65294 120.95022,886.52249 121.40625,887.40625 L 122.21875,889.03125 L 120.625,892.0625 L 119.03125,895.09375 C 118.1087,897.11063 117.1825,899.208 116.84375,901.4375 C 116.82215,902.74187 116.8594,903.53411 116.90625,904.0625 C 116.81012,904.19755 116.72294,904.32618 116.65625,904.5 L 116.34375,905.375 L 117,907.0625 L 119.21875,907.0625 L 122.5,910.375 L 123.25,914.90625 L 127.28125,915.28125 C 129.50734,915.48025 133.25423,915.91431 135.59375,916.25 L 139.84375,916.84375 L 142.34375,918.40625 L 145.3125,918.40625 L 148.59375,921.6875 L 149.1875,921.0625 L 151.96875,923.65625 L 156.65625,924.0625 L 160,926.4375 L 161.625,925.125 L 167.625,926.375 L 169.71875,928.34375 C 170.86764,929.42884 172.02246,930.3125 172.28125,930.3125 C 172.53997,930.31247 173.24316,930.98131 173.84375,931.78125 L 174.9375,933.21875 L 176.5625,930.125 L 168.0625,922.9375 L 152.53125,920.15625 L 139.28125,912.84375 L 123.59375,912.03125 L 123.0625,910.65625 C 122.7719,909.89187 121.48288,908.00487 120.1875,906.46875 C 119.49362,905.64577 118.82989,904.91848 118.3125,904.40625 C 117.64131,903.00997 119.65418,897.02997 120.21875,896.28125 C 120.47112,896.21401 121.12321,895.42386 121.6875,894.46875 C 122.2776,893.46978 123.86882,891.56851 125.21875,890.21875 L 127.65625,887.75 L 130.78125,889.40625 C 132.20064,888.53503 133.84506,887.90802 135,886.6875 C 134.99014,886.51088 135.05818,886.44897 134.3335,885.62646 C 135.0708,885.2526 133.43506,883.48128 132.65625,882.84375 C 132.54366,882.71221 132.44097,882.58156 132.34375,882.4375 C 132.32024,882.41912 132.30481,882.39343 132.28125,882.375 C 131.81585,882.011 131.3513,881.63959 131.03125,881.15625 C 130.695,880.64844 130.54133,880.01541 130.78125,879.25 C 130.87887,878.81674 130.90472,878.2365 130.78125,877.90625 C 130.71951,877.74112 130.64591,877.63509 130.53125,877.59375 C 130.41659,877.55241 130.21981,877.5809 129.90625,877.71875 L 129.84375,877.71875 L 129.78125,877.71875 C 129.34067,877.6951 128.70964,877.83461 128.09375,877.875 C 127.47786,877.91539 126.82374,877.84791 126.40625,877.3125 L 126.25,877.09375 L 126.46875,876.9375 C 126.68732,876.80087 126.77912,876.68709 126.8125,876.59375 C 126.84588,876.50041 126.83748,876.41026 126.78125,876.28125 C 126.66878,876.02324 126.35355,875.68433 126.03125,875.34375 L 126,875.34375 L 126,875.3125 C 125.32909,874.30727 125.41843,872.83213 126.09375,871.8125 C 126.09189,871.80408 126.09573,871.78969 126.09375,871.78125 C 126.00549,871.40506 125.79355,871.0098 125.59375,870.59375 C 125.38946,870.16837 125.18261,869.72439 125.1875,869.21875 L 125.1875,869.09375 L 125.28125,869.03125 C 125.48608,868.85071 125.55625,868.66904 125.5625,868.5 C 125.56875,868.33096 125.49463,868.15057 125.375,867.9375 C 125.13575,867.51135 124.68919,867.07567 124.40625,866.6875 C 124.09241,866.30288 123.80026,865.64996 123.75,865.03125 C 123.72487,864.7219 123.77339,864.40121 123.96875,864.15625 C 124.16411,863.91129 124.48859,863.80749 124.90625,863.84375 L 124.96875,863.84375 L 125.03125,863.875 C 125.37864,864.07174 125.5813,864.03619 125.71875,863.96875 C 125.8562,863.90131 125.96208,863.74683 126,863.53125 C 126.03792,863.31567 125.98761,863.05409 125.875,862.84375 C 125.76239,862.63341 125.58279,862.47162 125.3125,862.40625 L 125.28125,862.40625 L 125.25,862.40625 C 124.36054,861.91548 123.34343,862.03927 122.25,862.03125 C 122.23976,862.03163 122.22899,862.03095 122.21875,862.03125 C 120.93151,862.06853 119.66046,861.44184 118.75,860.625 L 118.71875,860.59375 L 118.6875,860.5625 C 118.07383,859.49148 118.32026,858.00142 118.8125,856.9375 C 118.86572,856.71304 118.84811,856.52089 118.75,856.3125 C 118.65189,856.10411 118.46501,855.88669 118.28125,855.65625 C 117.91373,855.19538 117.4499,854.68496 117.46875,853.96875 C 117.36327,852.61284 117.55149,851.39744 116.75,850.375 L 116.6875,850.3125 L 116.6875,850.21875 C 116.72548,849.64975 116.58684,849.18021 116.3125,848.90625 C 116.03816,848.63229 115.64729,848.51924 115.0625,848.6875 L 115,848.6875 L 114.96875,848.6875 C 113.83894,848.58467 112.50903,848.18299 111.84375,847.09375 C 111.83558,847.08038 111.82047,847.07609 111.8125,847.0625 C 111.10531,846.19235 110.36071,845.32699 110.125,844.125 C 110.11535,844.107 110.10375,844.08067 110.09375,844.0625 C 109.81609,843.55799 109.42027,843.00348 109.09375,842.40625 C 108.75547,841.78751 108.48577,841.12462 108.59375,840.4375 L 108.59375,840.375 L 108.65625,840.3125 C 108.8932,840.08138 109.20534,839.99593 109.5,839.96875 C 109.79466,839.94157 110.0863,839.97161 110.34375,839.96875 C 110.6012,839.96589 110.81706,839.91322 110.9375,839.84375 C 111.04074,839.78421 111.09448,839.67042 111.125,839.46875 C 110.93002,839.13731 110.62318,838.84049 110.375,838.46875 C 110.11407,838.07791 109.98744,837.55793 110.25,836.9375 C 110.25509,836.92222 110.27575,836.92128 110.28125,836.90625 C 110.48824,836.34091 110.96339,835.91569 111.21875,835.5625 C 111.34982,835.38121 111.41112,835.23974 111.40625,835.09375 C 111.40138,834.94776 111.31997,834.7808 111.0625,834.53125 L 111.0625,834.5 C 110.25029,833.46316 108.82188,832.72592 108.34375,831.21875 C 108.34089,831.20975 108.34654,831.19656 108.34375,831.1875 C 107.78782,829.99519 107.41314,828.69965 107.34375,827.375 L 107.34375,827.28125 L 107.375,827.21875 C 107.50883,827.00841 107.50578,826.89009 107.46875,826.75 C 107.43172,826.60991 107.34022,826.45198 107.1875,826.28125 C 107.01336,826.08657 106.78817,825.86983 106.59375,825.625 L 98.96875,823.875 z M 123.15625,938.8125 C 122.86288,938.8125 122.44787,939.08605 122.25,939.40625 C 122.05213,939.72649 121.58511,939.95151 121.21875,939.90625 C 120.85244,939.86106 119.83345,939.86933 118.9375,939.90625 L 117.3125,939.96875 L 118.71875,941.65625 L 121.28125,941.65625 L 122.46875,943.0625 L 125.9375,943.3125 L 125.9375,941.6875 L 123.6875,940.25 L 123.6875,938.8125 L 123.15625,938.8125 z M 145.21875,943.28125 L 145.21875,944.0625 C 145.21864,944.48895 145.5476,945.16897 145.9375,945.5625 L 146.65625,946.28125 L 146.65625,950.4375 L 151.75,952.9375 L 163.09375,952.71875 L 164.09375,951.71875 C 164.64052,951.17291 165.09375,950.57457 165.09375,950.375 C 165.09364,950.1755 164.63962,949.6644 164.09375,949.25 C 163.54778,948.83568 162.64942,948.47868 162.09375,948.46875 L 161.0625,948.46875 L 160.40625,950.15625 L 157.90625,950.15625 L 153.59375,946.1875 L 150.84375,946.1875 L 149.3125,945.125 C 148.46727,944.52747 147.20183,943.85956 146.5,943.65625 L 145.21875,943.28125 z M 127.59375,944.625 L 128.46875,945.59375 C 128.94548,946.12057 129.64107,947.42853 130,948.5 C 130.35898,949.57148 131.14357,951.04529 131.78125,951.75 L 132.96875,953.03125 L 133.84375,952.78125 C 134.33268,952.6496 135.75232,952.35758 137,952.125 C 138.24756,951.89239 139.81893,951.74762 140.46875,951.8125 L 141.625,951.9375 L 141.625,948.46875 L 139.6875,948.46875 L 138.46875,947 L 139.03125,944.78125 L 127.59375,944.625 z "},"mi4":{"name":"MI-4","path":"M 1788.1469,306.76346 L 1786.3568,309.31554 L 1784.7441,309.31554 L 1783.9111,311.28277 C 1783.4591,312.36447 1783.0959,313.74875 1783.0959,314.36653 L 1783.0959,315.50078 L 1780.278,318.53138 L 1779.9766,320.58722 C 1779.8019,321.71894 1779.3367,323.28107 1778.9487,324.06088 L 1778.2398,325.47871 L 1775.1561,325.83316 L 1775.1561,324.62801 L 1772.9762,324.62801 L 1772.2495,327.95989 L 1770.6368,329.2891 L 1768.7227,328.56247 L 1767.9075,329.89168 L 1768.4037,331.64623 C 1768.6818,332.61614 1768.9176,334.12894 1768.9176,335.01356 L 1768.9176,336.62633 C 1772.596,335.88245 1776.3469,335.2403 1780.1007,335.08445 L 1782.5287,350.94633 L 1804.0796,347.77395 L 1806.9153,369.87425 L 1797.15,371.32752 L 1805.4797,424.49583 L 1816.1134,422.70583 L 1818.0275,433.23316 L 1860.2608,427.03019 L 1862.1394,437.59296 L 1876.3531,435.14722 L 1877.5405,436.77771 L 1881.475,436.58276 L 1877.7178,417.1586 L 1884.0802,416.36108 L 1881.3687,408.84662 L 1876.8316,407.37563 L 1875.5378,404.52227 L 1876.2113,401.84613 L 1875.4138,399.34722 L 1869.2994,400.07385 L 1869.2994,397.20276 L 1863.9117,398.03573 L 1861.271,382.35108 L 1853.2249,383.69801 L 1852.5869,384.3892 L 1842.2013,386.1792 L 1838.6745,364.45108 L 1849.0778,362.71425 L 1845.3914,342.12039 L 1824.8685,345.31049 L 1821.2176,323.70643 L 1801.1199,326.89653 L 1801.8111,329.66128 L 1800.5528,330.44108 L 1799.5603,328.88148 L 1799.5249,330.01574 L 1797.5045,327.41049 L 1795.6081,328.13712 L 1795.236,329.34227 C 1795.027,330.00073 1794.4958,330.87991 1794.0663,331.3095 L 1793.2865,332.0893 L 1793.9422,333.15267 L 1793.2333,335.40346 L 1790.3267,335.40346 L 1790.8939,330.24613 L 1792.7016,328.26118 L 1792.4535,320.1796 L 1791.7269,320.78217 C 1791.3285,321.11283 1791.1035,321.488 1791.2306,321.61514 C 1791.3578,321.74227 1791.2587,322.79062 1791.0002,323.93682 L 1790.5217,326.01039 L 1791.7623,326.79019 L 1789.9014,331.45128 L 1789.9014,334.92494 L 1787.4734,334.55276 L 1785.9138,329.44861 L 1786.6404,324.91158 L 1787.5974,324.29128 L 1786.9594,322.05821 C 1786.6,320.82434 1786.376,319.29699 1786.4632,318.67316 C 1786.5503,318.04932 1786.8826,317.36894 1787.2075,317.16673 L 1787.7924,316.81227 L 1785.3644,312.87781 L 1785.3644,310.62702 L 1788.2,309.33326 L 1788.1469,306.76346 z M 1768.7227,312.66514 L 1765.7984,313.00187 L 1765.9757,316.84772 L 1769.2012,319.48841 L 1770.3355,319.13395 L 1769.9456,314.13613 L 1768.7227,312.66514 z M 1763.8844,320.02009 L 1762.5906,322.44811 C 1762.7564,323.12445 1763.1044,323.60065 1763.5477,324.06088 L 1765.9225,322.96207 L 1765.7984,320.39227 L 1763.8844,320.02009 z "},"wi8":{"name":"WI-8","path":"M 1590.6089,265.15039 L 1592.4697,283.83019 L 1587.72,284.64544 L 1589.4923,299.12494 L 1607.2505,296.82098 C 1608.9784,298.65225 1611.37,301.38152 1611.7313,302.54903 L 1614.6586,302.50999 L 1614.6586,300.56049 L 1611.0621,297.14101 L 1620.5177,296.24279 L 1622.1731,301.48207 L 1633.1435,300.61366 L 1635.6778,332.7096 L 1633.9942,333.98564 L 1633.6574,339.08979 L 1629.3685,339.44425 L 1635.0797,387.38015 L 1693.4718,380.77375 L 1692.692,375.15564 L 1707.3842,373.33019 L 1708.3235,372.40861 L 1709.4578,358.42534 C 1710.443,356.18651 1711.3639,353.92107 1712.2402,351.63752 C 1712.814,350.1198 1713.4545,347.6953 1713.658,346.24979 L 1714.0302,343.62682 L 1714.81,342.36851 C 1715.2441,341.67766 1715.6075,340.78739 1715.6075,340.38356 L 1715.6075,339.6392 L 1717.9824,338.16821 L 1717.3267,335.52752 L 1718.8154,334.28692 L 1718.3191,330.86643 L 1720.1446,328.06623 L 1720.1446,325.76227 L 1721.651,325.76227 L 1722.9802,323.21019 L 1722.6966,315.27039 L 1725.3374,314.89821 L 1725.0006,314.04752 C 1724.8208,313.57894 1724.6816,312.69633 1724.6816,312.09801 L 1724.6816,311.01692 L 1723.9727,311.01692 L 1719.5774,314.17158 L 1719.5774,318.26554 L 1715.0759,320.3391 L 1714.3138,325.47871 L 1711.2123,331.14999 L 1709.9186,336.57316 L 1710.4857,337.65425 C 1710.8041,338.24935 1711.0705,339.00547 1711.0705,339.33791 L 1711.0705,339.94049 L 1709.4223,339.94049 L 1708.3944,338.09732 L 1706.817,340.22405 L 1701.7129,342.01405 L 1697.8316,349.29811 L 1697.3708,351.85019 L 1696.8923,354.40227 L 1691.2388,358.72663 L 1690.0513,363.17504 L 1687.3574,363.86623 L 1683.6357,361.57999 L 1685.0889,359.82544 L 1685.5675,351.24762 C 1686.4174,349.65925 1687.3467,348.1018 1687.8182,346.35613 C 1687.8182,345.97546 1688.4624,344.70425 1689.2538,343.53821 L 1690.6893,341.4292 L 1690.0159,338.30999 L 1691.2033,336.07692 L 1693.6313,335.19078 C 1694.9605,334.70965 1696.552,334.24002 1697.1759,334.14514 L 1698.3101,333.96791 L 1698.8772,326.89653 L 1697.0518,326.89653 L 1691.9122,321.89871 L 1693.525,314.15385 L 1694.6238,313.05504 L 1694.6238,310.59158 L 1693.0642,309.29781 L 1691.2033,312.15118 L 1688.0487,312.15118 L 1686.9498,313.24999 L 1684.3269,312.5588 L 1684.7168,311.37138 C 1684.9347,310.71251 1685.0922,309.31001 1685.0535,308.26989 L 1684.9826,306.39128 L 1687.2334,303.50247 L 1686.4891,300.52504 L 1684.8054,299.28445 L 1685.6561,297.90207 L 1687.2511,298.50465 L 1687.2511,296.44881 L 1684.894,294.32207 L 1685.1598,292.92197 C 1685.3068,292.15323 1685.2992,291.18719 1685.1421,290.77752 L 1684.8586,290.03316 L 1683.3344,290.03316 L 1682.271,288.13683 L 1678.2302,288.29633 L 1676.458,286.54178 L 1673.3564,287.62286 L 1670.2372,285.81514 L 1670.2372,285.07079 C 1670.2372,284.65918 1670.6387,283.71944 1671.1234,282.9795 L 1671.9918,281.63257 L 1670.8044,280.88821 L 1670.8044,278.49564 L 1666.9054,277.44999 L 1661.7126,277.96395 L 1660.2239,276.95376 L 1653.6133,276.47524 L 1652.5145,275.37643 L 1651.1321,275.90811 C 1650.3684,276.19847 1649.3479,276.8061 1648.8813,277.27277 C 1648.4146,277.73944 1647.8194,278.12346 1647.5521,278.12346 C 1647.2847,278.12346 1646.6748,277.74245 1646.2052,277.27277 L 1645.3545,276.42207 L 1639.7541,276.4398 L 1626.8519,270.8394 L 1590.6089,265.15039 z M 1730.3529,302.36821 L 1727.9958,302.74039 C 1726.6998,302.94763 1725.4156,303.26269 1725.1424,303.43158 L 1724.6462,303.73286 L 1725.426,307.86227 L 1726.6134,308.85475 C 1727.268,309.40206 1727.9577,309.85457 1728.1553,309.86494 C 1728.3528,309.8753 1728.7099,309.30845 1728.9351,308.60663 C 1729.1844,307.88763 1729.2534,307.14477 1729.2541,306.39128 L 1729.1655,305.45197 L 1730.3529,304.70762 L 1730.3529,302.36821 z "},"mi1":{"name":"MI-1","path":"M 1640.7465,140.80742 L 1639.4705,141.19732 C 1638.7687,141.40937 1637.9591,141.8066 1637.6628,142.08346 C 1637.3665,142.36033 1636.6532,142.5797 1636.0855,142.5797 L 1635.0576,142.5797 L 1632.9308,143.96208 C 1631.7674,144.72591 1630.0834,146.12955 1629.1736,147.08128 C 1628.2639,148.03301 1627.3068,148.81812 1627.0469,148.81812 L 1626.5683,148.81812 L 1626.5683,150.44861 L 1625.2923,150.83851 C 1624.5905,151.05741 1622.9954,151.94163 1621.7477,152.78802 C 1620.5001,153.6344 1617.6117,155.54075 1615.3321,157.04148 L 1611.185,159.77079 L 1609.519,161.79118 C 1608.6014,162.90434 1607.8531,164.15141 1607.8531,164.55594 L 1607.8531,165.30029 L 1609.2178,165.81425 C 1609.9672,166.09922 1610.7499,166.59962 1610.9546,166.93079 C 1611.1592,167.26195 1611.6287,167.52589 1612.0002,167.51564 C 1612.3717,167.50539 1614.5602,166.42075 1616.874,165.10534 L 1621.092,162.71277 L 1621.5351,161.38356 L 1619.5147,161.01138 L 1622.3149,158.38841 L 1630.5382,154.3299 L 1635.0753,150.43089 L 1635.0753,147.84336 L 1640.7465,142.54425 L 1640.7465,140.80742 z M 1673.9945,182.15465 L 1663.1481,182.66861 L 1655.2083,185.29158 L 1654.6412,185.98277 C 1654.3293,186.35455 1652.3668,187.74307 1650.2814,189.06653 L 1646.4887,191.4591 L 1645.3368,193.92257 C 1644.7004,195.27629 1643.4109,197.27673 1642.4657,198.35326 L 1640.7465,200.30277 L 1636.8121,202.16366 L 1635.2348,204.27267 C 1634.3696,205.43124 1633.4871,206.46563 1633.2853,206.55891 C 1633.0834,206.65218 1632.0137,207.61471 1630.8927,208.70336 L 1628.8546,210.68831 L 1628.4824,212.21247 C 1628.2798,213.05803 1627.7772,214.42534 1627.3659,215.24306 L 1626.6215,216.73178 L 1620.7553,218.64584 L 1619.3729,218.11415 L 1616.2182,223.5196 L 1607.5695,229.35039 L 1604.4681,229.35039 L 1599.9133,231.17584 L 1597.1131,230.46693 L 1591.3178,232.68227 L 1590.2366,233.94059 C 1589.6358,234.6334 1589.125,235.34943 1589.1201,235.53564 C 1589.1152,235.72185 1587.7754,237.32926 1586.1427,239.11564 L 1583.183,242.37663 L 1579.5675,243.79445 C 1577.5795,244.57333 1575.0737,245.71461 1574.0026,246.34653 C 1572.9316,246.97845 1571.767,247.49851 1571.4151,247.49851 C 1571.0631,247.49851 1570.2004,248.02889 1569.501,248.68593 L 1568.2427,249.89108 L 1568.863,251.52158 L 1571.0961,249.50118 L 1572.9924,251.84059 L 1574.3925,251.3798 L 1574.3925,252.72673 L 1576.0939,252.07098 L 1577.0864,253.15207 C 1579.1023,255.72045 1580.2854,258.81244 1582.2083,261.44633 L 1583.183,262.63376 L 1627.419,269.81148 L 1638.7616,274.8093 L 1645.8862,275.11059 L 1647.4103,277.20187 L 1648.6509,274.88019 L 1653.4184,274.11811 L 1654.2336,275.4296 L 1660.5252,275.65999 L 1662.0139,276.86514 L 1667.118,276.51069 L 1671.9386,278.40702 L 1671.9386,280.26791 L 1673.7464,280.9591 L 1671.4247,284.91128 L 1673.7287,286.52405 L 1676.7238,284.96445 L 1679.0986,287.19752 L 1682.7141,287.19752 L 1683.7065,288.08366 C 1684.2524,288.57425 1685.4294,289.57109 1686.3118,290.28128 L 1687.9069,291.55732 L 1685.9751,293.4891 L 1688.3854,296.0589 L 1688.3854,297.90207 L 1686.5954,299.67435 L 1687.9423,299.67435 L 1687.3043,301.34029 L 1688.4917,302.08465 L 1687.8005,305.57603 L 1686.6308,306.30267 L 1686.1877,311.69039 L 1690.3703,310.92831 L 1692.6388,308.26989 L 1695.4534,310.47163 L 1695.6857,313.4784 L 1694.1343,315.20162 L 1693.086,321.45025 L 1697.7784,325.76227 L 1698.5937,325.76227 L 1698.5937,323.31653 L 1701.7129,318.08831 C 1703.4284,315.21332 1704.8321,312.58023 1704.8321,312.23979 C 1704.8321,311.89936 1705.5058,310.14322 1706.3386,308.34079 C 1707.1713,306.53835 1707.9191,304.55165 1707.9867,303.92781 C 1708.0543,303.30397 1708.3778,302.02792 1708.7134,301.09217 C 1709.0489,300.15641 1710.0203,297.25931 1710.8756,294.65881 L 1712.4352,289.94455 L 1717.2203,284.929 L 1716.6355,278.97415 L 1718.3191,276.74108 L 1720.1269,278.24752 L 1720.694,280.32108 C 1721.0095,281.45702 1721.2771,283.20636 1721.2788,284.22009 L 1721.2788,286.06326 L 1721.7396,286.06326 C 1721.9919,286.06326 1722.6938,285.68826 1723.2992,285.23029 C 1723.9047,284.77233 1724.8525,284.38953 1725.4083,284.3796 L 1726.4184,284.36187 L 1726.6843,283.65296 C 1726.8269,283.26306 1727.0025,282.43657 1727.0919,281.8098 C 1727.1813,281.18302 1727.6923,280.06533 1728.2085,279.32861 L 1729.13,277.98168 L 1728.0312,275.09287 L 1729.6794,273.44465 L 1732.3024,275.28782 L 1734.8899,275.28782 L 1734.9077,273.30287 L 1736.9812,270.62673 L 1739.4269,271.38881 L 1739.4269,272.52306 C 1739.4269,273.14372 1739.1379,274.78815 1738.7889,276.17395 L 1738.1509,278.69059 L 1737.5129,278.76148 C 1737.16,278.79842 1736.6835,278.79841 1736.4495,278.76148 L 1736.0242,278.69059 L 1736.0242,281.45534 L 1734.8899,282.16425 L 1734.8899,284.929 L 1733.1885,284.929 L 1733.1885,286.38227 L 1734.3228,287.35702 C 1734.9502,287.89422 1735.8552,288.33178 1736.3255,288.33178 L 1737.1762,288.33178 L 1736.4673,285.51385 L 1738.3459,284.78722 L 1738.0091,282.37692 L 1740.5612,282.02247 L 1740.5612,279.34633 L 1743.964,278.60197 L 1743.964,276.42207 L 1744.6729,276.35118 C 1745.0628,276.31422 1745.6852,276.32281 1746.0553,276.3689 L 1746.7287,276.45752 L 1747.4908,268.74811 L 1748.4124,267.61386 C 1748.925,266.997 1750.0739,266.03219 1750.9467,265.4694 L 1752.5241,264.4592 L 1753.4988,264.56554 C 1754.0296,264.63135 1755.1583,264.4043 1756.0155,264.05158 L 1757.5751,263.41356 L 1760.4462,263.96296 C 1762.0305,264.26343 1763.5434,264.62226 1763.7958,264.77821 L 1764.2566,265.06178 L 1764.8414,262.81098 L 1765.8871,262.49197 C 1766.4625,262.31167 1767.4012,261.89941 1767.9784,261.58811 L 1769.024,261.03871 L 1773.3661,261.76534 L 1775.5814,260.57791 L 1776.5916,258.43346 C 1777.1488,257.25297 1778.1959,255.33198 1778.931,254.16227 L 1780.278,252.03554 L 1783.5921,252.03554 L 1784.2479,250.9899 L 1786.6404,251.18485 C 1787.9616,251.2935 1790.4543,251.6238 1792.1699,251.9292 C 1793.8855,252.23459 1797.1421,252.79875 1799.4008,253.1698 L 1803.4948,253.84326 L 1806.2772,256.34217 C 1807.8075,257.71799 1809.3536,258.84109 1809.6978,258.84108 C 1810.0418,258.84108 1810.8096,259.33264 1811.4168,259.9399 C 1812.0241,260.54715 1813.3472,261.46413 1814.3411,261.97801 L 1816.1311,262.91732 L 1817.035,261.46405 L 1816.2552,259.9399 L 1815.4754,258.41574 L 1816.1489,257.74227 L 1814.8374,256.14722 L 1815.5463,254.30405 L 1817.0881,254.30405 L 1816.0248,251.48613 C 1816.3007,250.57937 1816.6738,249.77394 1817.3362,249.09356 L 1817.9034,248.72138 L 1820.1364,250.28098 L 1822.1568,249.1999 L 1823.9291,250.9899 L 1824.0532,253.45336 L 1824.5849,251.46841 L 1826.1976,251.46841 L 1826.1976,252.67356 L 1828.4661,251.96465 L 1828.4661,252.47861 C 1828.4661,252.76148 1829.0809,253.2712 1829.8308,253.61287 L 1831.1955,254.23316 L 1833.1804,252.03554 L 1835.7679,252.03554 L 1836.0692,251.57475 C 1836.229,251.31614 1837.7135,250.81177 1839.3657,250.45821 C 1841.0178,250.10467 1844.0197,249.64317 1846.0471,249.43029 C 1848.0746,249.21742 1850.4991,249.05852 1851.4349,249.09356 C 1852.3706,249.1286 1854.5621,249.20104 1856.3087,249.25306 L 1859.481,249.3594 L 1861.5368,248.20742 L 1865.3473,249.80247 L 1867.5803,248.61504 L 1868.0766,246.77188 C 1868.3498,245.76533 1868.4532,244.75503 1868.3247,244.52108 C 1868.1961,244.28714 1867.5907,244.09574 1866.9778,244.09574 L 1865.8612,244.09574 L 1864.7978,241.26009 L 1863.6281,241.26009 L 1863.6281,239.55871 L 1862.3521,239.47009 C 1861.6503,239.42306 1860.3104,239.44596 1859.3747,239.52326 L 1857.6733,239.66504 L 1856.9289,240.85247 L 1855.1744,240.51574 C 1854.207,240.32227 1853.4198,240.25131 1853.4198,240.37395 C 1853.4198,240.49661 1853.5671,240.9971 1853.7566,241.49049 L 1854.111,242.39435 L 1855.5643,242.39435 L 1855.9188,243.29821 C 1856.1081,243.7916 1856.2555,244.6678 1856.2555,245.24772 L 1856.2555,246.29336 L 1855.0503,247.03772 L 1852.959,245.14138 L 1852.2147,247.49851 L 1850.017,247.49851 L 1850.017,246.50603 L 1845.1079,245.26544 L 1842.0772,242.87287 L 1842.0772,240.92336 L 1843.4419,239.55871 L 1840.5176,239.55871 L 1839.0998,237.85732 L 1837.3453,237.85732 L 1835.3071,239.70049 L 1833.5703,239.02702 L 1833.5703,235.8192 L 1834.935,234.45455 L 1838.0364,234.45455 L 1838.5859,233.58613 L 1837.7883,230.55554 C 1837.3555,228.88684 1836.68,227.11878 1836.2819,226.63881 L 1835.5553,225.77039 L 1835.5553,216.59 L 1834.8463,216.64316 C 1834.4564,216.67436 1833.3912,216.73816 1832.4892,216.78495 L 1830.8588,216.87356 L 1830.1498,219.7092 L 1823.9646,219.7092 L 1823.0962,221.37514 C 1822.6202,222.29542 1822.2277,223.44385 1822.2277,223.92722 L 1822.2277,224.81336 L 1820.3314,224.81336 L 1818.3819,226.58564 L 1814.4297,223.11198 L 1812.5689,223.11198 L 1807.8723,226.51475 L 1806.8621,226.51475 C 1806.3034,226.51475 1805.7153,226.30262 1805.5506,226.03623 L 1805.2493,225.53999 L 1797.7703,225.96534 L 1797.0614,225.25643 C 1796.6719,224.86215 1796.1719,224.04761 1795.9449,223.44871 L 1795.5372,222.3499 L 1796.7601,221.60554 L 1796.1753,219.08891 C 1795.8578,217.71179 1795.598,215.3578 1795.5904,213.86069 L 1795.5727,211.1491 L 1797.3095,207.7995 L 1796.4766,207.7995 C 1796.019,207.7995 1795.4993,208.03075 1795.3246,208.31346 L 1795.0056,208.82742 L 1792.0281,209.1996 C 1790.3909,209.40637 1788.1575,209.84542 1787.0658,210.17435 L 1785.0808,210.77693 L 1783.1136,212.26564 C 1782.0269,213.08481 1779.98,214.4878 1778.5766,215.38485 L 1776.0245,217.01534 L 1772.3382,217.5293 C 1770.3055,217.81483 1766.2096,218.26954 1763.2463,218.52178 L 1757.8586,218.96485 L 1751.0531,222.04861 L 1748.2529,221.51693 L 1738.1332,230.48465 L 1735.9887,230.48465 L 1735.6166,231.47712 C 1735.4095,232.02298 1734.5227,233.23523 1733.6493,234.17098 C 1732.7759,235.10675 1732.0557,236.06378 1732.0543,236.29772 C 1732.0529,236.53166 1731.6715,236.72307 1731.2036,236.72306 L 1730.3529,236.72306 L 1730.3529,235.58881 L 1728.9351,235.87237 L 1728.9351,231.92019 L 1726.8261,231.51257 L 1725.8513,232.50504 L 1727.5172,235.71287 L 1727.5172,238.99158 L 1727.1273,238.99158 C 1726.9135,238.99158 1726.1603,238.46068 1725.4614,237.80415 L 1724.2031,236.599 L 1723.5473,237.00663 C 1723.1931,237.22557 1722.6803,238.01169 1722.3954,238.76118 L 1721.8814,240.12584 L 1719.1344,240.12584 L 1718.4609,238.37128 L 1717.7343,238.4599 C 1717.3402,238.51149 1716.7257,238.5323 1716.3696,238.49534 L 1715.7316,238.42445 L 1715.0404,235.6597 L 1712.7188,234.93306 L 1708.5184,238.14089 L 1701.7129,239.55871 L 1699.7279,239.20425 C 1698.6362,239.0097 1697.4176,238.58395 1697.0164,238.26495 L 1696.2897,237.68009 L 1696.3784,236.77623 C 1696.4258,236.27812 1696.432,235.29816 1696.3961,234.59633 L 1696.3252,233.32029 L 1693.5073,233.32029 L 1692.7984,232.18603 C 1692.4088,231.56219 1691.8124,231.05178 1691.4869,231.05178 L 1690.902,231.05178 L 1689.8918,229.35039 C 1689.3403,228.41688 1688.4253,227.40554 1687.8537,227.0996 L 1686.8081,226.55019 L 1686.4359,225.06148 C 1686.2314,224.24687 1685.6063,223.08632 1685.0358,222.47396 L 1683.9901,221.35742 L 1679.5949,221.07386 L 1679.2759,219.42564 L 1677.7694,218.71673 C 1676.9365,218.32683 1675.5855,218.00782 1674.7743,218.00782 L 1673.3033,218.00782 L 1672.0804,216.78495 L 1667.437,218.04326 L 1664.5483,217.31663 L 1661.1809,218.699 L 1659.3023,217.99009 L 1660.2416,216.96217 C 1660.7519,216.39825 1661.1632,215.75365 1661.1632,215.52663 L 1661.1632,215.10128 L 1657.8845,217.05079 L 1655.7046,219.79782 C 1654.5062,221.31077 1653.3393,222.54485 1653.0993,222.54485 C 1652.8593,222.54485 1652.6563,222.78624 1652.6563,223.07653 C 1652.6563,223.36682 1652.082,224.51074 1651.3802,225.61089 L 1650.1042,227.59584 L 1648.9699,227.649 L 1647.4635,224.24623 L 1648.261,215.65069 L 1649.8561,215.03039 L 1651.522,211.82257 L 1651.522,208.63247 L 1653.7905,207.23237 L 1653.7905,204.36128 L 1655.4919,203.70554 L 1655.4919,202.50039 C 1655.4967,201.83195 1655.688,200.98735 1655.9172,200.6395 C 1656.1464,200.29164 1656.853,199.84963 1657.4768,199.64703 L 1658.6111,199.27485 L 1662.0139,194.15297 L 1666.8877,190.32485 L 1665.7002,189.58049 L 1665.7002,187.43604 L 1670.255,186.19544 L 1671.4778,186.95752 L 1673.6932,185.89415 C 1674.9085,185.3121 1675.905,184.65255 1675.9085,184.44089 C 1675.9121,184.22922 1675.4756,183.63586 1674.9515,183.11168 L 1673.9945,182.15465 z M 1819.3921,258.84108 L 1819.3921,260.96782 L 1820.6681,261.85395 C 1821.37,262.34352 1822.1356,262.75918 1822.3695,262.77554 C 1822.6035,262.79189 1822.7949,262.46906 1822.7949,262.0489 C 1822.7949,261.62875 1822.3139,260.73553 1821.7315,260.06395 C 1821.149,259.39238 1820.3834,258.84108 1820.0301,258.84108 L 1819.3921,258.84108 z M 1823.7696,263.21861 L 1825.9673,265.27445 L 1828.1826,267.31257 L 1829.9372,267.33029 L 1831.6917,267.34801 L 1832.3297,265.94791 L 1832.9677,264.54782 L 1832.5424,264.2997 C 1832.314,264.15856 1830.2516,263.85281 1827.9522,263.62623 L 1823.7696,263.21861 z M 1816.4147,266.39098 L 1815.4222,266.40871 L 1815.4222,268.96079 L 1813.7208,269.33296 C 1812.7879,269.53786 1811.1929,269.65455 1810.1762,269.59881 C 1809.1596,269.54306 1808.095,269.53177 1807.8014,269.56336 L 1807.2697,269.61653 L 1809.3256,271.12296 L 1808.5103,273.69277 L 1806.419,275.78405 L 1804.3455,277.85762 L 1802.8745,282.37692 L 1804.6467,286.57722 L 1807.7483,289.46603 L 1813.0296,289.46603 L 1813.6499,291.06108 L 1812.6929,291.87633 C 1812.1681,292.32786 1810.8657,293.11736 1809.8041,293.63088 L 1807.8723,294.57019 L 1803.4416,294.57019 L 1802.201,295.20821 C 1800.0223,296.52812 1798.2942,298.44667 1796.4766,300.20603 L 1795.041,301.58841 L 1794.403,304.54811 L 1795.5904,308.39395 L 1796.7778,312.25752 L 1796.8842,318.01742 L 1796.9905,323.77732 L 1795.8086,327.64244 L 1797.8816,327.06229 L 1799.2945,329.04098 L 1799.2413,328.19029 L 1800.7047,329.89115 L 1801.5224,329.61358 L 1800.5875,326.6544 L 1821.5897,323.19247 L 1825.5065,344.58385 L 1845.84,341.60043 L 1849.574,363.02804 L 1839.2176,364.85219 L 1842.6798,385.70068 L 1852.5691,384.03474 L 1852.8704,383.55623 L 1861.6432,381.99662 L 1864.3902,397.55722 C 1867.3018,397.07345 1870.2158,396.60425 1873.1275,396.12167 L 1873.2693,391.10613 L 1875.0416,390.43266 L 1872.0465,386.49821 L 1871.692,373.96821 L 1872.7731,373.96821 L 1872.1174,372.92257 L 1873.4288,370.05148 L 1880.3584,367.97791 L 1880.4825,365.479 L 1881.918,363.75989 L 1883.903,363.75989 L 1884.541,359.82544 L 1883.903,353.71108 L 1885.2677,349.58168 L 1887.3589,348.44742 L 1889.1489,349.13861 L 1889.1489,347.43722 L 1892.3036,344.06989 L 1891.8428,338.45177 C 1891.5932,335.36797 1891.1502,331.77482 1890.8503,330.4588 L 1890.3009,328.06623 L 1891.0098,321.24296 L 1890.4073,320.53405 C 1890.0795,320.13747 1889.6336,318.78658 1889.4148,317.5389 C 1889.1959,316.29122 1888.6602,314.70292 1888.2273,314.01207 C 1887.7944,313.32122 1887.4475,312.36419 1887.4475,311.88534 L 1887.4475,311.01692 L 1884.7005,311.01692 L 1883.8498,310.16623 C 1883.382,309.69835 1882.7197,309.31553 1882.3966,309.31554 L 1881.8117,309.31554 L 1881.2269,308.199 C 1880.8992,307.58682 1880.5242,306.37459 1880.4116,305.50514 C 1880.2989,304.6357 1880.1503,303.6726 1880.0749,303.36069 C 1879.9994,303.04877 1879.967,302.41369 1880.004,301.94286 L 1880.0749,301.07445 L 1882.432,299.60346 L 1885.1436,301.37574 L 1887.3235,301.37574 L 1884.4524,295.24366 L 1881.7762,294.02079 L 1881.7762,292.30168 L 1881.3332,292.30168 C 1881.0885,292.30168 1880.4523,291.56261 1879.9154,290.65346 L 1878.9406,289.00524 L 1880.3584,288.45584 L 1875.272,283.90108 L 1874.1023,284.02514 C 1873.4601,284.09361 1872.6623,284.31601 1872.33,284.52138 L 1871.7275,284.89356 L 1870.0261,284.41504 C 1869.0893,284.1464 1867.7053,283.581 1866.96,283.17445 L 1865.6131,282.44782 L 1858.9848,281.63257 L 1855.8479,278.63742 L 1850.3006,278.88554 L 1848.422,280.03752 L 1845.48,278.10574 L 1845.48,276.08534 L 1841.2265,272.07999 L 1838.958,271.63692 C 1837.7103,271.39914 1836.1791,271.24576 1835.5553,271.28247 L 1831.3018,271.37108 L 1831.3018,272.45217 L 1830.5929,272.45217 C 1830.2019,272.45217 1828.0403,271.55895 1825.79,270.46722 C 1823.5396,269.3755 1821.4372,268.48228 1821.1112,268.48227 C 1820.7851,268.48227 1819.948,268.16327 1819.2503,267.77336 C 1818.5527,267.38346 1817.8467,266.91448 1817.6907,266.72772 C 1817.5347,266.54096 1816.9605,266.38617 1816.4147,266.39098 z M 1781.5008,273.10791 C 1780.8274,276.8664 1780.3384,280.66782 1780.6147,284.48593 L 1780.8982,284.929 L 1784.3364,284.929 L 1786.4632,282.37692 L 1786.4986,279.32861 L 1785.3644,278.6197 L 1785.3289,275.00425 L 1783.9465,273.26742 L 1781.5008,273.10791 z "},"ma10":{"name":"MA-10","path":"M 2467.4962,334.16286 L 2466.2024,336.71494 L 2465.0681,336.96306 C 2464.4443,337.09135 2463.4872,337.17884 2462.9414,337.17573 L 2461.9489,337.17573 C 2461.6852,338.76541 2461.3963,340.15316 2460.7792,341.64187 L 2462.5692,341.64187 L 2463.4317,338.91583 L 2465.3517,338.93029 L 2466.422,342.13488 L 2466.6648,346.49363 L 2467.9661,347.24332 C 2468.7944,346.74567 2470.7082,346.52566 2473.0257,346.35613 L 2474.8688,349.86524 L 2476.1626,349.56395 L 2476.836,351.35395 L 2476.1271,352.70088 L 2475.4182,354.03009 L 2478.6792,357.73415 C 2480.4744,359.76626 2482.272,361.56341 2482.6845,361.72177 L 2483.4467,362.00534 L 2487.0798,360.19762 L 2488.8875,361.33187 L 2489.2774,364.61059 L 2490.5712,365.40811 L 2489.2065,366.79049 L 2489.7914,367.51712 C 2490.1205,367.9137 2490.5346,369.07456 2490.6952,370.10465 C 2490.8559,371.13473 2491.1999,372.25078 2491.475,372.58583 L 2491.9713,373.20613 L 2491.7232,374.51762 C 2491.5842,375.23904 2491.0874,376.35743 2490.6067,377.01653 C 2490.1257,377.67563 2489.0969,379.16719 2488.3204,380.33068 C 2487.5439,381.49419 2486.9026,382.63316 2486.9026,382.84732 C 2486.9026,383.06147 2486.9939,383.11907 2487.1152,382.9891 C 2487.2367,382.85913 2488.2362,381.57828 2489.3306,380.13573 C 2490.4249,378.69319 2491.6106,376.96375 2491.9713,376.28989 L 2492.6271,375.06702 L 2499.0604,371.98326 L 2499.9288,368.49187 L 2502.7822,367.18039 L 2502.7822,365.60306 C 2504.1669,365.28872 2505.5422,364.89819 2506.9647,364.84098 C 2507.2414,364.89695 2508.0069,364.47883 2508.6661,363.90167 C 2509.3252,363.32453 2510.8921,362.19565 2512.1398,361.40276 C 2513.3875,360.60988 2515.3897,359.60253 2516.5882,359.16969 L 2518.7681,358.38989 L 2520.4873,360.64068 L 2520.0087,354.40227 L 2515.897,345.89534 L 2510.4207,339.08979 L 2506.4685,337.10484 L 2501.2226,337.10484 L 2499.9997,338.57583 L 2502.091,339.88732 L 2502.6758,337.67197 L 2506.1849,337.67197 L 2508.3471,339.83415 L 2509.0915,341.88999 L 2509.8181,343.94583 L 2511.5904,343.64455 L 2513.8412,345.91306 L 2514.5501,347.93346 C 2514.94,349.04063 2515.259,350.48782 2515.259,351.14128 L 2515.259,352.3287 L 2513.1323,353.94148 C 2511.9626,354.83501 2510.2748,355.94934 2509.375,356.40494 L 2507.7269,357.23791 C 2507.0881,358.26324 2506.4484,359.28795 2505.795,360.30395 L 2504.1114,359.24059 L 2500.2301,360.35712 L 2495.0019,360.35712 L 2491.156,357.7696 L 2490.7839,354.49088 L 2487.895,350.71593 L 2487.1684,350.71593 C 2486.7636,350.71593 2486.3508,350.97442 2486.2469,351.28306 L 2486.0519,351.83247 L 2484.0669,351.26534 C 2482.9752,350.95036 2481.5716,350.29292 2480.9477,349.81207 L 2479.8135,348.94366 L 2481.5148,347.59672 L 2481.9047,342.77613 L 2481.4263,342.77613 L 2476.1271,338.36316 L 2476.1271,337.10484 L 2474.5675,337.10484 L 2473.1497,335.40346 L 2468.2582,335.40346 L 2467.4962,334.16286 z M 2522.1,376.23672 L 2522.738,379.49771 L 2521.5329,381.76623 L 2518.396,383.04227 C 2516.6695,383.74294 2515.259,384.4845 2515.259,384.70821 C 2515.259,384.93191 2515.4504,385.31829 2515.6844,385.5589 L 2516.1097,386.00197 L 2524.0673,385.50573 L 2527.4346,383.89296 L 2527.8245,381.87257 C 2526.4456,380.24206 2525.0792,378.60119 2523.7305,376.94564 C 2523.4171,376.55572 2522.9235,376.23672 2522.6317,376.23672 L 2522.1,376.23672 z M 2495.0196,378.07989 L 2491.9713,381.90801 L 2489.9863,388.39455 L 2487.2748,389.03257 L 2486.8849,390.20227 L 2488.728,391.12385 C 2489.7478,391.6313 2490.7803,392.06093 2491.0143,392.08088 L 2491.4396,392.11633 L 2491.4396,389.83009 L 2495.1259,387.56158 L 2504.6076,384.63732 L 2503.8987,381.07504 L 2502.215,379.39138 L 2502.215,382.38653 L 2499.0958,381.55356 L 2497.7312,378.80653 L 2495.0196,378.07989 z M 2486.0519,383.04227 C 2485.8959,383.04227 2485.7683,383.16986 2485.7683,383.32583 C 2485.7683,383.48179 2485.8959,383.60939 2486.0519,383.6094 C 2486.2078,383.6094 2486.3354,383.48178 2486.3354,383.32583 C 2486.3354,383.16987 2486.2078,383.04226 2486.0519,383.04227 z M 2485.4847,383.89296 L 2484.4923,384.67276 C 2483.9464,385.10086 2483.4998,385.54746 2483.4998,385.66524 C 2483.4998,385.78301 2483.5948,385.8779 2483.7125,385.87791 C 2483.8302,385.87791 2484.2769,385.43129 2484.7049,384.88544 L 2485.4847,383.89296 z "},"ri1":{"name":"RI-1","path":"M 2450.3405,358.23039 C 2444.7047,359.84682 2439.2047,361.95571 2433.7166,364.00801 C 2433.8811,365.60998 2434.3771,367.17617 2434.8685,368.72227 L 2443.5704,365.60306 C 2444.0471,366.5622 2444.4195,367.56789 2444.7756,368.58049 L 2446.9909,368.65138 C 2448.2024,368.68804 2450.3971,369.06943 2451.8824,369.50207 L 2454.594,370.28187 L 2456.8271,373.96821 L 2459.5918,373.96821 L 2460.1057,372.55039 L 2461.6122,373.96821 L 2460.4425,373.96821 L 2460.9919,377.65455 L 2461.4881,376.18356 L 2463.1895,377.60138 L 2462.8528,374.25177 L 2461.2046,372.26682 L 2456.8625,371.09712 L 2456.3131,370.0692 C 2456.0107,369.5042 2455.6471,368.37546 2455.4978,367.55257 C 2455.3486,366.72965 2455.0609,365.78663 2454.8598,365.46128 L 2454.4876,364.8587 L 2452.7154,365.17771 L 2450.3405,358.23039 z M 2465.3517,375.6696 L 2465.3517,377.67227 L 2462.9946,379.14326 L 2463.668,380.93326 L 2462.4451,387.66791 L 2463.6148,389.08573 L 2462.2857,390.41494 L 2463.6857,390.41494 L 2464.2174,388.9794 L 2464.7669,387.54385 L 2466.4859,386.88811 L 2466.4859,385.80702 C 2466.4859,385.21315 2465.9478,383.57543 2465.2808,382.15613 L 2464.0579,379.56861 L 2465.2276,378.41663 L 2466.1315,379.72811 C 2466.6354,380.44764 2467.0531,381.45394 2467.0531,381.9789 C 2467.0531,382.50386 2467.6156,383.96956 2468.2937,385.23989 L 2469.5166,387.56158 L 2471.023,386.30326 L 2471.023,383.57395 L 2468.1873,377.97356 L 2468.1873,375.6696 L 2465.3517,375.6696 z M 2457.979,377.93811 L 2457.979,379.67494 L 2459.769,380.36613 L 2460.7792,383.04227 L 2461.9489,383.04227 L 2461.9489,379.53316 L 2459.6804,378.94831 L 2459.6804,377.93811 L 2457.979,377.93811 z M 2458.936,383.44989 C 2459.2017,385.61964 2459.3464,387.82616 2459.9994,389.9187 L 2460.3893,390.52128 L 2461.9135,388.99712 L 2460.4247,383.94613 L 2458.936,383.44989 z "},"fl16":{"name":"FL-16","path":"M 2212.944,1342.4114 L 2171.0296,1350.6348 L 2177.7997,1387.4095 L 2145.5265,1393.9492 L 2147.9014,1397.7064 L 2151.1624,1396.9798 L 2151.9245,1399.0002 L 2150.5953,1399.4433 L 2150.5953,1401.6054 L 2152.7574,1401.6054 C 2153.1104,1403.4611 2153.4983,1405.3131 2153.5018,1407.2058 L 2153.3423,1407.9856 L 2180.9544,1402.9878 C 2182.0129,1408.1591 2182.9089,1413.3692 2184.3217,1418.4598 L 2200.3785,1415.1102 L 2201.371,1420.8878 C 2203.9364,1420.6834 2206.3366,1419.9974 2208.7437,1419.0801 L 2206.6879,1408.8009 L 2209.3463,1407.2235 L 2208.3538,1403.874 L 2205.7308,1404.5474 C 2205.156,1402.5544 2204.2042,1400.6125 2203.994,1398.5394 L 2214.5568,1396.3949 L 2215.3543,1384.5738 L 2224.8714,1372.416 L 2220.3344,1351.893 L 2234.4949,1348.7561 L 2235.2038,1344.9989 L 2238.8547,1344.3254 L 2241.3181,1349.1106 L 2238.4648,1351.2905 L 2239.0673,1353.1514 C 2237.5374,1355.0776 2235.7769,1356.8606 2234.548,1358.9999 C 2234.5538,1359.1998 2235.2872,1362.9159 2236.1785,1367.2587 L 2237.7913,1375.1453 L 2238.8192,1375.9074 C 2239.3854,1376.3215 2240.2782,1376.6518 2240.8042,1376.6518 L 2241.7612,1376.6518 L 2243.2322,1378.4241 L 2247.2907,1377.786 L 2250.4099,1382.7484 L 2250.3036,1386.2398 L 2248.7085,1388.0829 L 2248.7085,1393.7188 L 2250.4453,1397.0684 L 2251.5442,1397.0684 L 2251.5442,1393.9847 C 2252.7645,1395.2698 2253.8453,1396.7636 2255.4077,1397.6355 L 2255.709,1397.6355 L 2256.4179,1394.6049 L 2255.3546,1392.6554 L 2257.2775,1391.3558 L 2256.5508,1390.3988 L 2259.165,1388.5083 L 2258.0484,1388.1007 L 2255.7149,1389.5874 L 2254.4211,1387.9037 L 2262.8336,1381.5787 L 2260.4764,1376.9885 C 2259.1868,1374.4636 2256.9433,1370.6117 2255.4786,1368.4284 C 2254.0141,1366.245 2252.6555,1363.948 2252.4657,1363.3243 C 2252.276,1362.7004 2251.5459,1361.552 2250.8352,1360.7722 C 2250.1246,1359.9924 2248.1002,1357.1165 2246.3337,1354.3742 C 2244.5672,1351.632 2243.0151,1349.0974 2242.8954,1348.7384 L 2242.6828,1348.0827 L 2239.7053,1343.1912 L 2238.4825,1342.4114 L 2213.8124,1347.4801 L 2212.944,1342.4114 z "},"fl25":{"name":"FL-25","path":"M 2199.7954,1415.7787 L 2184.4829,1418.8447 L 2185.759,1423.3528 L 2180.5662,1426.0225 L 2181.3106,1430.4532 L 2179.9438,1432.6118 L 2181.2021,1433.2627 L 2180.9384,1440.1653 L 2182.9942,1442.5224 L 2181.0625,1445.4643 L 2184.1108,1447.6797 L 2183.4905,1450.6571 L 2189.6403,1456.0449 L 2190.5087,1456.0449 C 2190.9803,1456.0449 2191.5248,1455.8014 2191.7138,1455.4954 L 2192.0506,1454.9461 L 2194.2659,1455.0878 C 2195.4824,1455.1692 2196.6644,1455.4127 2196.8889,1455.6372 C 2197.1135,1455.8617 2197.8731,1456.0448 2198.5903,1456.0449 L 2199.9018,1456.0449 L 2202.0462,1457.0196 C 2203.2265,1457.5562 2204.3183,1458.0937 2204.4742,1458.207 C 2204.6303,1458.3202 2204.7868,1459.0944 2204.8287,1459.9261 C 2204.8707,1460.7579 2205.0858,1461.9977 2205.3072,1462.6732 L 2205.7148,1463.896 L 2208.2669,1464.534 L 2210.9076,1467.352 L 2213.5483,1470.1876 L 2213.5483,1471.889 L 2215.8168,1473.1119 L 2215.8168,1474.8841 L 2220.3538,1480.0237 L 2220.3538,1481.5657 L 2221.9312,1481.5657 L 2222.2679,1482.4695 C 2222.4573,1482.9629 2222.6224,1483.7456 2222.6224,1484.2063 L 2222.6224,1485.0393 L 2221.5767,1484.3835 L 2220.7969,1490.6397 L 2221.6831,1491.9158 C 2222.1763,1492.6176 2222.9131,1493.5899 2223.3136,1494.0602 C 2223.7141,1494.5305 2224.6783,1495.3402 2225.458,1495.8679 L 2226.8758,1496.8249 L 2227.7265,1496.4882 C 2228.1944,1496.3005 2229.4038,1496.0285 2230.4204,1495.8857 L 2232.2635,1495.6198 L 2232.9016,1494.6096 L 2235.1701,1494.6096 L 2238.4488,1491.0119 L 2245.2189,1490.622 L 2245.8746,1491.6676 L 2248.1431,1491.0828 L 2248.1431,1489.789 L 2249.6851,1489.0801 C 2250.5246,1488.6902 2251.5245,1488.3711 2251.9181,1488.3712 L 2252.627,1488.3712 L 2253.8499,1483.8342 L 2254.8247,1483.8519 C 2255.3585,1483.8537 2256.5013,1484.2196 2257.359,1484.6671 L 2258.9186,1485.4824 L 2258.9186,1484.9507 C 2258.9186,1484.6582 2259.8117,1483.4299 2260.9035,1482.2214 L 2262.8885,1480.0237 L 2259.3085,1469.5319 L 2262.8885,1470.3117 L 2262.8885,1467.5824 L 2260.0528,1466.2886 L 2260.0528,1463.4175 L 2262.3214,1463.4175 L 2262.3214,1461.0427 L 2264.0227,1461.6807 L 2264.1312,1458.6635 L 2262.6162,1458.6635 L 2261.1871,1457.1082 L 2262.3214,1454.9992 L 2261.0094,1454.742 C 2259.9508,1452.7371 2259.3986,1450.9855 2258.9186,1448.619 L 2259.787,1446.9531 C 2260.263,1446.0327 2260.8634,1445.2694 2261.134,1445.2694 C 2261.4045,1445.2694 2261.7777,1444.8765 2261.9669,1444.3833 L 2262.3214,1443.4794 C 2261.2067,1442.145 2260.6344,1440.2683 2260.2068,1438.2831 L 2239.5122,1442.5933 L 2238.7678,1441.4059 C 2235.2933,1441.9979 2231.8559,1443.0517 2228.3291,1443.2313 L 2224.237,1427.0787 L 2203.2514,1431.4988 L 2199.7954,1415.7787 z "},"fl20":{"name":"FL-20","path":"M 2267.4894,1419.3063 L 2266.3781,1419.7181 L 2266.0591,1421.1359 L 2266.2364,1422.6955 L 2267.4238,1423.7412 L 2266.9275,1425.9565 L 2265.1907,1426.6477 L 2261.9651,1424.6273 L 2263.7729,1422.412 L 2263.1172,1421.2245 L 2261.8588,1421.8271 L 2262.6209,1422.9791 L 2261.2031,1423.4576 L 2260.7954,1422.412 L 2258.7139,1423.3525 L 2255.9749,1429.0403 L 2252.8734,1428.4377 C 2252.724,1428.587 2252.762,1429.5872 2252.962,1430.653 C 2253.1619,1431.7188 2253.5179,1432.8783 2253.7418,1433.2406 L 2254.1494,1433.914 L 2258.3851,1432.7443 L 2262.1069,1434.3039 L 2267.6187,1431.9114 L 2268.2745,1432.7089 C 2268.6737,1433.2548 2268.877,1434.2349 2268.877,1434.747 C 2268.8771,1435.2593 2269.2893,1435.6202 2269.4974,1435.8281 C 2269.4908,1436.192 2269.4645,1438.219 2269.5328,1439.993 C 2269.6073,1441.9302 2269.6745,1441.9602 2269.6746,1441.9602 L 2270.7025,1441.1804 L 2270.7025,1440.9677 C 2270.7025,1440.9677 2270.2737,1440.9431 2270.0999,1440.7196 C 2269.926,1440.496 2270.004,1440.3655 2270.1531,1439.993 C 2270.3021,1439.6204 2270.472,1439.6384 2270.4721,1439.6385 L 2270.2594,1438.2738 L 2270.5784,1438.1852 L 2269.9581,1435.8635 C 2269.7504,1433.3344 2269.2695,1430.8388 2268.8948,1428.3314 L 2268.2922,1428.1718 L 2260.8841,1431.2911 L 2260.317,1430.0859 L 2263.1172,1428.8453 L 2259.9271,1427.8351 L 2262.7804,1426.63 L 2263.3298,1427.4984 L 2264.34,1426.9313 L 2264.6768,1427.9592 L 2268.0086,1426.5946 L 2267.4894,1419.3063 z "},"fl22":{"name":"FL-22","path":"M 2263,1382.0164 L 2254.7875,1387.9766 L 2255.8508,1389.2526 L 2258.0307,1387.8703 L 2259.7144,1388.3665 L 2256.9496,1390.5819 L 2257.4636,1391.3439 L 2255.6027,1392.6909 L 2256.6483,1394.2682 L 2258.013,1393.2757 L 2257.2332,1392.4073 L 2262.1956,1387.7462 L 2264.0564,1390.511 L 2264.7122,1395.0835 L 2265.0135,1403.0587 L 2265.1552,1407.2767 L 2264.34,1407.4008 L 2264.2869,1405.9298 L 2264.5704,1405.9298 L 2264.34,1402.3498 L 2264.021,1402.332 L 2263.6311,1395.4734 L 2263.4921,1395.4902 L 2263.7729,1402.3144 L 2264.2514,1411.7074 L 2260.0511,1414.3658 L 2260.0688,1416.6344 L 2260.4233,1418.4066 L 2261.8943,1416.0849 L 2266.0059,1414.2595 L 2267.4238,1414.7734 L 2267.477,1416.2976 L 2266.449,1419.5586 L 2267.6542,1419.1332 L 2268.115,1426.7009 L 2264.5881,1428.1718 L 2264.3046,1427.1794 L 2263.188,1427.7465 L 2262.6918,1426.8249 L 2260.3701,1427.8883 L 2263.7552,1428.7922 L 2260.5119,1430.1214 L 2260.9372,1431.0429 L 2268.5935,1427.8883 L 2269.2138,1427.6934 L 2268.8948,1426.1338 C 2268.7181,1425.276 2268.2907,1420.8735 2267.9554,1416.3508 C 2267.6202,1411.8279 2267.139,1405.3201 2266.8744,1401.889 C 2266.6097,1398.4579 2266.0993,1394.3746 2265.7401,1392.8149 C 2265.3809,1391.2553 2264.8633,1388.9584 2264.5881,1387.7108 C 2264.3131,1386.4631 2263.924,1384.7156 2263.7374,1383.8295 L 2263,1382.0164 z "},"fl19":{"name":"FL-19","path":"M 2262.2842,1390.9009 L 2259.5017,1392.4959 L 2257.8889,1396.519 L 2260.0865,1399.9218 L 2258.775,1402.3675 L 2259.5194,1410.4845 L 2256.8458,1413.5694 L 2258.9371,1421.6043 L 2262.0538,1420.427 L 2261.8943,1420.0371 L 2263.8261,1418.956 L 2264.7122,1420.4979 L 2265.297,1420.1789 L 2265.2084,1419.9308 L 2264.8008,1420.0194 L 2264.6413,1419.4168 L 2265.2439,1417.8041 L 2266.13,1417.3433 L 2266.0059,1416.8116 L 2266.6617,1416.3685 L 2267.0871,1417.1837 L 2267.3529,1416.2621 L 2267.2288,1414.8798 L 2265.9882,1414.4722 L 2262.0183,1416.2445 L 2260.3701,1418.8674 L 2259.7783,1416.5732 L 2259.7499,1414.0822 L 2264.0742,1411.2821 L 2263.4007,1395.4911 L 2261.0613,1394.4454 L 2261.6816,1393.3112 C 2262.0168,1392.6847 2262.2842,1391.8889 2262.2842,1391.5389 L 2262.2842,1390.9009 z "},"fl12":{"name":"FL-12","path":"M 2166.209,1313.049 L 2164.5198,1313.5893 L 2163.1197,1318.7045 L 2160.5939,1319.3718 L 2159.7988,1316.1511 L 2158.8099,1316.2834 L 2155.6133,1319.4977 L 2153.1651,1315.969 L 2149.4128,1315.9452 L 2150.4712,1317.6349 L 2150.1943,1319.8211 L 2147.7822,1323.082 L 2140.4415,1326.5146 L 2138.8934,1330.2016 L 2139.2362,1331.8529 L 2136.3993,1334.4007 L 2137.569,1338.5301 L 2140.8477,1339.8948 L 2141.4149,1342.9076 L 2137.4982,1344.9457 L 2138.2248,1349.8372 L 2132.0572,1351.2196 L 2130.8698,1347.9054 C 2130.2172,1346.0897 2129.5205,1343.8064 2129.3279,1342.819 L 2128.9735,1341.0113 L 2130.3558,1338.8136 L 2125.4289,1332.5043 L 2122.7174,1333.869 C 2123.0201,1334.4703 2123.7094,1336.0118 2125.2517,1340.3555 C 2127.5415,1346.8044 2125.8994,1345.0194 2125.7125,1347.356 C 2125.5255,1349.6926 2124.9603,1351.6218 2123.7453,1355.3136 C 2123.0025,1357.5706 2121.9121,1358.8689 2121.1754,1359.5493 C 2144.0498,1355.1954 2168.2831,1350.5714 2193.7913,1345.5792 C 2192.6094,1344.6914 2192.5769,1343.4005 2192.1111,1342.1478 C 2191.1291,1341.8956 2191.1323,1341.7625 2190.8928,1340.3944 L 2186.2003,1335.2514 L 2181.7428,1334.8472 L 2180.4227,1331.2815 L 2179.1981,1331.1083 L 2179.0307,1329.3704 L 2175.5667,1327.2584 L 2173.583,1327.6312 L 2173.5486,1326.4425 L 2171.2979,1325.4385 L 2171.3455,1324.3616 L 2174.7812,1325.5197 L 2176.5212,1325.0192 L 2176.5035,1321.3329 L 2166.209,1313.049 z "},"fl11":{"name":"FL-11","path":"M 2122.097,1334.1703 L 2109.9684,1340.2527 L 2109.1772,1341.4189 L 2112.8989,1340.8163 L 2114.9725,1343.1203 L 2115.2738,1348.5789 L 2118.836,1348.9334 L 2118.836,1348.5257 C 2118.836,1348.2966 2118.4822,1347.7067 2118.0562,1347.2142 C 2117.6303,1346.7218 2117.1276,1345.5977 2116.922,1344.733 L 2116.5321,1343.1734 L 2118.4816,1342.4291 L 2118.9247,1343.7583 L 2121.5299,1343.7583 L 2122.097,1344.4672 C 2122.409,1344.8571 2122.8602,1345.7943 2123.0895,1346.5408 L 2123.4972,1347.8877 L 2121.9907,1352.5488 L 2119.9703,1354.0375 L 2119.9703,1355.5439 L 2118.4993,1356.1111 L 2117.1436,1360.3674 L 2120.502,1359.6734 C 2121.2384,1358.9884 2122.3172,1357.6943 2123.0541,1355.4553 C 2124.269,1351.7636 2124.8166,1349.8344 2125.0036,1347.4978 C 2125.1905,1345.1612 2126.8326,1346.9463 2124.5428,1340.4973 C 2123.1046,1336.4469 2122.4331,1334.8677 2122.097,1334.1703 z "},"tx25":{"name":"TX-25","path":"M 1323.3732,1358.4218 L 1309.2261,1343.2197 L 1292.8396,1357.35 C 1286.9121,1351.3716 1283.5141,1346.805 1278.2337,1340.2972 L 1282.3835,1335.8489 C 1283.4194,1332.3444 1284.6879,1328.8991 1285.5549,1325.348 C 1281.1043,1323.1237 1278.183,1321.076 1274.85,1317.793 L 1273.5415,1314.8854 L 1272.1411,1312.1416 C 1269.1643,1313.3975 1267.8933,1314.4182 1266.5635,1315.5565 L 1264.6113,1309.555 L 1255.099,1299.0229 L 1255.099,1280.8882 L 1259.961,1283.6056 L 1266.8186,1284.3494 L 1265.9113,1281.5771 C 1265.2672,1280.7583 1264.7402,1279.7672 1264.7402,1279.3747 L 1264.7402,1278.6612 L 1266.23,1278.0896 L 1269.2773,1278.6721 L 1269.2773,1283.4682 L 1271.4238,1285.4109 L 1276.2685,1284.8543 L 1279.2468,1282.6524 L 1282.4522,1281.9425 L 1286.4204,1286.5226 L 1291.2847,1288.9247 L 1294.8251,1281.9052 L 1296.0716,1283.7923 L 1294.5731,1287.0222 L 1296.7621,1287.924 L 1299.2452,1288.2964 L 1300.5865,1291.5346 L 1304.7228,1292.8785 L 1305.6561,1294.4664 L 1315.0536,1292.8074 L 1316.9508,1299.6313 C 1320.4541,1297.1631 1324.4924,1295.4437 1327.6419,1292.4936 L 1329.0102,1291.0309 L 1330.2962,1292.0982 C 1331.4642,1292.0292 1332.5915,1291.8515 1333.6801,1291.4556 L 1333.9956,1291.1401 L 1336.0579,1291.6794 C 1336.932,1293.6082 1337.512,1294.9487 1337.9743,1297.4658 L 1342.6277,1305.4785 C 1347.6159,1309.8686 1348.5452,1309.0234 1350.3568,1311.4135 L 1353.9014,1311.0008 L 1358.7773,1320.4577 L 1361.2946,1320.7695 L 1362.9573,1322.1484 L 1356.1739,1329.7973 L 1354.3543,1336.3419 L 1339.3661,1346.6265 L 1337.7768,1346.0166 L 1323.3732,1358.4218 z "},"tx20":{"name":"TX-20","path":"M 1230.0722,1344.457 L 1225.0503,1342.5339 L 1226.2242,1340.3404 L 1225.0907,1336.235 C 1225.8492,1334.9673 1226.167,1333.2383 1227.6371,1332.6431 L 1227.7291,1331.1262 L 1229.6328,1333.2442 L 1231.4301,1331.2688 L 1233.0444,1332.4415 L 1234.5368,1331.0604 L 1237.1456,1331.0048 L 1237.1644,1332.6483 L 1238.9378,1333.3332 L 1238.2617,1335.5258 L 1241.273,1336.3546 L 1241.7291,1335.855 L 1241.7639,1331.6875 L 1242.981,1331.6713 L 1245.4465,1334.3046 L 1242.9058,1338.6468 L 1238.9549,1339.4516 L 1239.1472,1339.9274 L 1240.5765,1340.2107 L 1236.1002,1340.3598 C 1233.0225,1342.1492 1231.4959,1342.9887 1230.0722,1344.457 z "},"tx22":{"name":"TX-22","path":"M 1426.9036,1313.5233 L 1425.2376,1316.093 L 1424.7237,1319.9389 C 1424.4425,1319.9389 1422.6961,1317.5112 1422.0475,1316.412 L 1420.3107,1315.0829 L 1411.4848,1319.3895 L 1409.8366,1318.0248 L 1408.9327,1319.4958 L 1409.4112,1321.3567 L 1407.9402,1323.2885 L 1397.9978,1324.0683 L 1393.5316,1319.3718 L 1387.3287,1319.3718 L 1386.9565,1317.44 L 1383.8372,1317.5818 C 1382.1232,1317.6615 1380.271,1317.8641 1379.7256,1318.0248 L 1378.7331,1318.3084 L 1378.0065,1322.8454 L 1377.2444,1323.6252 C 1376.8197,1324.0499 1376.4646,1324.6667 1376.4646,1324.9899 L 1376.4646,1325.5748 L 1378.999,1326.9217 L 1377.7229,1327.4888 C 1377.0275,1327.7991 1376.4646,1328.2385 1376.4646,1328.4635 C 1376.8805,1330.2515 1377.5723,1331.9569 1378.166,1333.6918 L 1378.166,1337.9629 L 1376.4646,1338.6187 L 1376.4646,1340.4796 L 1381.6928,1344.1482 L 1384.3512,1341.7025 L 1388.5515,1340.4087 L 1390.2706,1341.3303 L 1393.4607,1341.3303 L 1397.1471,1333.2664 L 1398.8662,1331.8841 L 1401.9854,1331.8486 L 1401.9854,1329.3851 L 1403.864,1327.3116 L 1407.9402,1327.347 L 1410.7759,1328.9775 L 1412.5659,1328.9952 L 1423.2527,1345.7964 L 1431.033,1340.6922 L 1426.1592,1333.0892 L 1414.6572,1326.1419 L 1415.7382,1323.6961 L 1418.5324,1327.4603 L 1420.3285,1327.347 L 1423.1818,1323.9088 L 1425.7339,1323.9088 L 1427.4885,1321.4276 L 1426.6378,1320.4883 C 1426.1761,1319.9783 1425.8127,1319.2125 1425.8225,1318.7692 L 1425.8402,1317.954 L 1428.6759,1314.7284 L 1430.8735,1315.4373 L 1431.2279,1314.5157 L 1429.6506,1313.5233 L 1426.9036,1313.5233 z "},"tx18":{"name":"TX-18","path":"M 1407.1179,1318.7973 C 1406.3225,1318.7926 1405.3772,1318.6012 1405.0173,1318.372 L 1404.363,1317.9553 L 1403.2911,1314.8361 C 1402.7016,1313.1205 1401.8477,1311.1362 1401.3934,1310.4263 L 1400.5675,1309.1358 L 1396.3997,1308.0099 L 1395.6352,1304.5293 L 1398.0874,1302.8117 L 1395.2613,1298.6162 L 1399.1314,1298.6162 L 1402.2994,1296.274 C 1404.8671,1296.6551 1407.4761,1296.8631 1409.9783,1297.5715 C 1410.261,1297.7463 1410.4923,1298.2222 1410.4923,1298.6294 L 1410.4923,1299.3695 L 1405.5022,1301.2753 L 1402.5525,1300.5349 L 1402.5525,1305.2695 L 1403.7267,1307.4634 L 1408.2571,1307.0013 L 1408.7909,1303.6324 L 1410.3721,1302.3201 L 1411.2829,1303.2309 C 1411.7838,1303.7318 1412.1937,1304.499 1412.1937,1304.9357 C 1412.1937,1305.3724 1411.5697,1307.1406 1410.8071,1308.8651 L 1409.4205,1312.0005 L 1405.1759,1312.4642 L 1405.9352,1314.4429 L 1408.1404,1314.2683 L 1409.7917,1317.5784 L 1408.5641,1318.806 L 1407.1179,1318.7973 z "},"tx17":{"name":"TX-17","path":"M 1308.2319,1143.5619 C 1290.8387,1143.5403 1275.3279,1143.7003 1257.9347,1144.3062 L 1257.9347,1146.8583 L 1268.7101,1172.7336 C 1266.6972,1174.5426 1264.2111,1175.7562 1262.0109,1177.3237 C 1265.4099,1184.6215 1270.6964,1190.9679 1274.5055,1198.0417 L 1278.6349,1195.8618 C 1284.7619,1205.3696 1290.2534,1215.4088 1297.421,1224.1827 L 1325.6889,1206.1233 L 1337.2441,1224.9094 C 1333.3366,1227.4419 1329.3526,1229.8534 1325.4584,1232.4061 C 1326.3481,1233.8493 1327.655,1235.0248 1328.8967,1236.2165 L 1328.365,1238.2724 L 1329.4815,1238.2724 L 1328.7903,1241.108 C 1329.4581,1243.4978 1330.0242,1244.183 1331.0943,1244.5108 L 1332.6539,1244.5108 L 1333.3097,1247.7718 L 1335.1528,1248.4807 L 1337.3327,1247.311 L 1337.3327,1242.8094 L 1343.1103,1242.8094 L 1346.5131,1240.3991 L 1350.9438,1242.2954 C 1349.6467,1246.2654 1347.567,1250.3471 1345.7865,1254.1165 L 1340.1329,1257.2712 L 1339.4772,1259.8233 L 1338.467,1259.8233 L 1338.467,1261.5247 L 1336.2693,1261.5247 L 1335.4718,1264.0413 L 1339.6012,1267.1959 L 1339.6012,1268.6492 C 1339.6012,1269.4495 1339.3448,1270.585 1339.0341,1271.1658 L 1338.467,1272.2115 L 1339.1759,1274.0546 L 1343.518,1276.27 L 1344.7231,1276.27 C 1345.3799,1276.27 1346.4163,1276.012 1347.0271,1275.6851 L 1348.1436,1275.0825 L 1351.2273,1276.7485 L 1354.9314,1275.5079 L 1356.3315,1277.2625 L 1360.0178,1275.7029 L 1360.9749,1274.2142 L 1364.0586,1279.7968 L 1366.2563,1280.3817 L 1366.2563,1281.445 C 1366.2563,1282.0367 1366.5782,1283.0407 1366.9652,1283.6604 C 1367.3521,1284.28 1367.7987,1284.7795 1367.9576,1284.7769 C 1372.5259,1284.3332 1377.1227,1283.8957 1381.6219,1282.9692 L 1381.2675,1279.4778 C 1381.0804,1277.5558 1380.6724,1273.562 1380.3636,1270.5987 C 1380.0548,1267.6355 1379.1622,1261.1277 1378.3786,1256.1369 C 1377.595,1251.1462 1376.8465,1246.6829 1376.7127,1246.2122 L 1376.4823,1245.3437 L 1378.804,1244.6348 C 1380.0835,1244.2355 1381.5031,1243.5308 1381.9586,1243.0752 L 1382.7916,1242.2423 L 1389.3313,1242.0296 L 1386.1235,1237.7761 L 1386.478,1235.8975 C 1386.6787,1234.8661 1387.0729,1233.8807 1387.3464,1233.6999 L 1387.8426,1233.3631 L 1387.2223,1231.7504 L 1370.3148,1231.4668 L 1366.7879,1233.1682 L 1363.8814,1235.4722 C 1362.2828,1236.7357 1360.0836,1238.1345 1358.9899,1238.5914 L 1357.005,1239.4243 L 1354.9137,1237.1913 L 1356.0479,1234.2138 L 1353.9567,1232.3175 L 1350.9615,1222.1092 L 1351.3869,1216.2784 L 1350.3767,1214.7365 C 1349.8213,1213.8899 1348.7494,1212.785 1348.0018,1212.273 C 1347.2543,1211.7611 1344.9682,1209.5339 1342.9154,1207.3284 C 1340.8625,1205.1229 1338.8838,1202.7621 1338.5201,1202.0825 L 1337.8644,1200.8419 L 1336.7124,1200.8419 C 1336.084,1200.8419 1334.8571,1200.4786 1333.9831,1200.0266 L 1332.4058,1199.1936 L 1330.5449,1196.3934 L 1332.2994,1192.1932 C 1327.9344,1186.1081 1325.7333,1182.6208 1319.4859,1172.5918 L 1317.2883,1173.6197 L 1308.9763,1160.558 L 1308.2319,1143.5619 z "},"la6":{"name":"LA-6","path":"M 1656.9806,1217.4835 C 1635.6909,1219.4761 1609.2337,1222.2955 1599.7893,1222.3928 L 1600.1437,1224.2359 C 1600.3403,1225.2496 1600.4836,1227.3049 1600.4627,1228.7907 L 1600.4273,1231.4845 L 1605.496,1231.3605 C 1605.1673,1230.5416 1604.8438,1229.4046 1604.4149,1228.6312 L 1602.1818,1228.6312 L 1602.1818,1227.0184 L 1605.6555,1226.2563 L 1607.9772,1228.3476 L 1607.4632,1234.4974 L 1604.2908,1237.014 L 1606.7188,1238.3078 L 1608.9165,1237.1381 L 1612.3015,1237.1381 L 1615.7397,1235.1532 L 1617.4766,1237.7938 C 1616.3822,1239.0647 1614.7227,1239.7089 1613.3294,1240.6118 L 1610.7065,1239.956 L 1607.7999,1244.369 L 1608.4202,1249.0478 L 1610.3697,1249.0478 C 1611.4411,1249.0478 1613.0002,1249.3012 1613.8257,1249.615 L 1615.3144,1250.1821 L 1614.8536,1251.5999 L 1611.823,1251.9544 L 1611.823,1252.3797 C 1611.823,1252.611 1612.8313,1253.5534 1614.0738,1254.471 L 1616.3423,1256.1369 L 1616.679,1257.1294 C 1616.8612,1257.6753 1617.2207,1258.1219 1617.4943,1258.1219 C 1617.7679,1258.1219 1618.9656,1259.0191 1620.1527,1260.1245 L 1622.3149,1262.1449 L 1627.0114,1261.4715 L 1629.6344,1261.7196 L 1627.1355,1263.8286 L 1627.1355,1265.2819 L 1623.7859,1267.7631 L 1622.2617,1267.2136 L 1621.6237,1269.3581 L 1613.6485,1269.0568 L 1612.9218,1270.4924 L 1614.8359,1273.2571 L 1614.6764,1276.2877 L 1619.6919,1276.27 L 1620.454,1278.6803 L 1625.9126,1278.0423 L 1626.462,1279.4955 L 1629.6875,1279.2651 L 1634.0296,1277.1561 L 1633.622,1274.1433 L 1634.579,1274.1078 L 1635.1462,1268.8264 L 1636.0677,1268.4897 C 1636.5679,1268.2978 1637.4476,1267.677 1638.0172,1267.1073 L 1639.0452,1266.0617 L 1640.463,1266.0617 L 1641.8808,1266.0617 L 1641.8808,1265.0869 L 1647.8357,1263.935 L 1652.5677,1264.6439 L 1653.7905,1266.2035 C 1654.4622,1267.0612 1655.2244,1267.7631 1655.4919,1267.7631 L 1655.9881,1267.7631 L 1656.3426,1265.335 L 1658.1503,1264.2008 L 1660.0289,1265.1223 C 1661.06,1265.6367 1662.2383,1266.0617 1662.6519,1266.0617 L 1663.414,1266.0617 L 1665.6825,1261.6132 L 1669.5461,1260.2132 L 1665.0976,1255.9243 C 1664.5435,1255.3783 1663.9456,1254.6133 1663.9457,1254.3469 C 1663.9457,1254.0805 1663.7684,1253.5932 1662.9887,1252.7519 L 1661.1632,1251.2631 L 1661.1632,1250.2707 C 1661.1632,1249.7253 1660.9317,1249.0251 1660.6493,1248.7288 L 1660.1353,1248.1971 L 1656.9806,1217.4835 z M 1599.2753,1219.5571 L 1597.7511,1219.9116 C 1596.9124,1220.1118 1596.0229,1220.3974 1595.7839,1220.5319 L 1595.3586,1220.78 L 1596.0497,1221.8788 L 1597.6448,1220.5496 L 1599.2398,1221.8788 L 1599.9842,1220.6914 L 1599.2753,1219.5571 z "},"tx16":{"name":"TX-16","path":"M 832.09079,1203.1118 L 828.66414,1200.3728 L 828.2832,1198.7648 C 828.0737,1197.8805 827.45468,1196.6465 826.90763,1196.0226 C 826.36058,1195.3988 825.74814,1194.2504 825.54669,1193.4706 C 825.34525,1192.6908 824.3589,1190.344 823.3548,1188.2557 L 821.52915,1184.4586 L 817.39195,1182.1208 L 814.77539,1182.4116 L 813.17682,1179.1524 L 811.09007,1178.6068 L 810.0761,1177.1064 C 809.51844,1176.2812 809.03071,1175.1531 808.9922,1174.5996 L 808.92228,1173.5931 L 809.90301,1172.987 L 809.90301,1167.8978 L 837.82111,1169.6512 L 836.4367,1176.4567 L 832.16945,1176.4567 L 830.91099,1191.4447 L 827.45378,1193.7818 L 828.72925,1197.4405 L 832.97324,1197.4405 L 834.32874,1200.4155 C 833.72004,1201.464 833.04498,1202.4007 832.09079,1203.1118 z "},"tx19":{"name":"TX-19","path":"M 1004.0206,978.91733 L 997.62261,1143.9695 L 1041.8586,1145.4227 L 1041.8586,1118.0942 L 1069.2759,1118.7387 L 1067.8402,1172.9108 C 1076.6951,1172.9726 1085.5508,1173.439 1094.4067,1173.3893 C 1095.2688,1155.1986 1094.9151,1136.9495 1095.9663,1118.7677 L 1123.1176,1119.3703 L 1122.5327,1146.3975 L 1136.5514,1146.3975 L 1138.3592,1149.1623 L 1137.1186,1151.4662 L 1128.7889,1155.4716 L 1125.1911,1155.4716 L 1122.3909,1157.297 L 1122.3909,1173.5488 L 1212.8614,1174.1192 C 1216.475,1172.0539 1228.258,1165.1433 1231.1556,1163.2696 L 1236.437,1159.8668 L 1235.8167,1147.195 C 1234.1868,1147.1096 1232.5548,1147.0269 1230.9429,1146.7874 L 1230.2163,1119.1753 L 1238.0852,1119.1753 L 1237.3408,1078.9978 L 1233.8317,1078.3243 L 1231.1556,1075.5064 L 1228.6049,1075.3238 L 1228.1508,1074.0558 L 1228.1291,1070.5113 C 1225.7993,1069.3966 1225.9353,1069.0127 1222.4182,1069.268 L 1220.5219,1065.2981 L 1210.6858,1065.2981 L 1211.4833,1119.5653 L 1177.4024,1120.3096 L 1177.4024,1147.5318 L 1149.0637,1147.5318 L 1148.7624,1120.026 L 1129.7636,1119.7247 L 1129.7636,1092.5203 L 1076.4535,1092.5203 L 1076.4535,1064.731 L 1103.1085,1064.731 L 1103.1085,1035.2403 L 1054.619,1034.4959 L 1054.9558,1007.451 L 1046.6615,1007.451 L 1047.0869,980.40605 L 1004.0206,978.91733 z "},"tx12":{"name":"TX-12","path":"M 1291.3953,1088.9934 L 1264.2794,1089.1175 L 1264.9174,1116.3397 L 1257.9347,1116.3397 L 1257.9347,1143.7391 C 1268.236,1143.3434 1278.3862,1143.1548 1288.5242,1143.0656 L 1295.826,1138.3868 L 1294.798,1136.1183 L 1296.5349,1130.0748 L 1298.2008,1128.6748 L 1298.2008,1121.8869 L 1296.2336,1116.3397 L 1291.3953,1116.3397 L 1291.3953,1088.9934 z "},"tx6":{"name":"TX-6","path":"M 1308.1079,1126.5126 L 1306.3356,1127.7709 L 1305.0064,1130.2698 L 1301.7454,1131.6344 C 1301.0464,1132.7673 1300.8922,1133.4846 1300.4693,1134.8245 L 1300.4693,1136.8272 L 1299.2996,1139.0249 L 1296.2513,1139.0249 L 1289.8534,1143.0833 L 1308.8877,1142.9593 L 1309.5079,1160.6643 L 1317.3946,1173.1412 L 1319.6277,1171.936 L 1332.8666,1192.1932 L 1331.112,1196.3934 L 1332.8134,1198.9633 L 1334.2489,1199.619 C 1335.039,1199.9789 1336.1676,1200.2748 1336.7656,1200.2748 L 1337.8644,1200.2748 L 1339.2468,1202.3306 C 1340.0148,1203.4608 1342.3681,1206.1405 1344.4572,1208.2854 C 1346.5463,1210.4303 1348.4586,1212.1845 1348.7107,1212.1845 C 1350.1051,1213.1251 1350.9066,1214.7393 1352.1135,1215.9062 L 1351.6704,1222.4637 L 1354.5061,1231.7858 L 1356.9518,1234.0898 L 1355.4986,1237.1381 L 1357.0227,1238.9458 L 1360.3014,1237.5635 L 1363.5093,1235.0823 C 1365.2764,1233.719 1367.0058,1232.6011 1367.3551,1232.6011 C 1368.5395,1231.9811 1369.5424,1231.6253 1370.5452,1230.9351 L 1387.7363,1231.0946 L 1388.4452,1233.9126 L 1387.3641,1234.586 L 1386.9742,1237.5103 L 1389.2782,1240.5409 C 1392.7815,1237.9112 1395.8073,1234.6949 1399.1497,1231.8744 L 1405.2641,1236.571 L 1407.5149,1236.571 L 1409.1454,1234.1252 L 1411.6089,1238.0597 L 1417.2093,1236.1102 L 1418.9461,1238.3787 L 1429.881,1225.2107 C 1429.561,1223.3804 1428.8151,1221.2962 1428.4809,1219.4685 L 1427.0631,1218.9191 L 1426.3188,1213.9922 L 1423.554,1213.301 L 1422.5615,1210.9793 L 1421.3564,1209.207 C 1420.5238,1208.4378 1418.7749,1207.3341 1417.4574,1206.7435 L 1415.0648,1205.6625 L 1415.0293,1202.6142 L 1413.0267,1201.9938 L 1411.9101,1199.6013 L 1404.5374,1199.2645 L 1387.5236,1202.6319 L 1386.6729,1203.394 C 1386.2044,1203.8161 1385.0748,1204.4516 1384.174,1204.794 L 1382.5435,1205.4144 L 1380.4345,1203.5003 L 1380.4345,1201.9761 L 1382.4194,1201.9761 L 1382.3308,1197.4037 L 1381.0016,1196.0744 L 1381.0016,1199.0696 L 1379.6901,1199.8849 L 1378.166,1197.7936 L 1378.166,1195.5782 L 1376.181,1194.0718 L 1373.6289,1194.0363 L 1373.6289,1190.3323 L 1368.0994,1188.3651 L 1367.3551,1183.7217 L 1365.122,1183.1368 L 1365.122,1182.4633 C 1365.122,1182.0942 1365.3697,1181.5421 1365.6714,1181.2405 L 1366.2208,1180.6911 L 1365.5651,1178.1567 L 1363.5447,1178.1567 L 1362.7649,1170.7841 L 1359.8938,1170.0574 L 1360.4609,1165.8217 L 1358.6178,1166.0698 L 1356.5974,1164.9532 L 1357.3063,1162.7025 L 1355.9948,1163.5 L 1353.7972,1160.6998 L 1350.9083,1159.9732 L 1350.3767,1158.573 L 1349.845,1157.173 L 1348.9234,1157.173 C 1348.418,1157.173 1347.3233,1156.8051 1346.4954,1156.3577 C 1345.6674,1155.9104 1344.266,1155.3962 1343.3762,1155.2057 L 1341.7457,1154.8513 L 1342.5077,1150.8105 L 1340.6114,1149.7294 L 1339.1404,1147.8153 L 1338.3429,1143.5973 L 1337.0491,1142.5694 L 1309.4725,1143.4732 L 1308.9054,1128.533 L 1308.1079,1126.5126 z "},"tx32":{"name":"TX-32","path":"M 1315.0011,1131.6587 L 1313.3878,1126.8329 L 1314.364,1122.8906 L 1320.0142,1120.3868 L 1319.8723,1118.0425 L 1328.2586,1118.0425 L 1328.2586,1120.311 L 1325.9901,1120.311 L 1325.9901,1125.7734 L 1322.996,1125.4151 L 1321.6136,1123.5247 L 1318.065,1123.5247 L 1315.7818,1125.5909 L 1315.7818,1128.2508 L 1319.1846,1128.2508 L 1319.1846,1129.8412 L 1315.0011,1131.6587 z "},"ga12":{"name":"GA-12","path":"M 2091.6467,1102.3028 C 2090.6951,1101.308 2089.5036,1100.285 2089.9125,1099.4503 C 2080.8227,1097.1796 2080.3424,1097.565 2078.8097,1097.6258 L 2074.3602,1095.3573 L 2071.5879,1095.3573 L 2068.0232,1093.0684 L 2065.8995,1083.9677 C 2064.2258,1084.8989 2062.6369,1084.633 2060.8339,1084.3775 C 2057.9447,1083.6954 2056.2005,1082.918 2055.3176,1082.0688 L 2055.3176,1080.7764 C 2057.4615,1080.0339 2058.9429,1078.894 2060.2575,1077.654 L 2061.9981,1073.5229 L 2061.4252,1069.2114 L 2055.0341,1063.2044 L 2048.7967,1062.3873 C 2042.6537,1058.3252 2035.5961,1056.8383 2027.2031,1052.1882 C 2025.5118,1046.4134 2024.6107,1040.6385 2024.0868,1034.8637 L 2026.8462,1035.7276 L 2030.5465,1035.0862 C 2031.43,1034.3187 2032.1945,1033.4305 2033.2816,1032.9731 C 2033.6144,1032.9731 2034.689,1032.3327 2035.6698,1031.5499 C 2036.6506,1030.7671 2037.6369,1029.9377 2037.8615,1029.7068 L 2041.8749,1024.9754 L 2044.9764,1023.3715 L 2045.259,1021.3745 L 2046.2544,1020.4963 L 2046.748,1019.869 L 2044.6719,1016.2429 L 2044.2586,1009.4393 L 2041.5248,1007.071 L 2041.6496,1005.9853 L 2042.8094,1005.3699 L 2044.1366,1006.8539 C 2047.9059,1006.7121 2052.2801,1007.5787 2056.5232,1008.2267 L 2058.2973,1012.0362 L 2067.2857,1021.117 L 2075.2208,1024.4147 L 2082.0917,1024.4006 C 2083.0671,1023.3512 2084.2469,1023.0173 2085.5564,1023.1374 L 2089.2945,1019.8991 L 2096.4345,1019.0098 L 2103.2587,1020.6731 L 2104.6467,1022.1977 L 2105.5311,1022.1977 C 2106.0176,1022.1977 2107.1871,1022.5967 2108.1302,1023.0844 L 2109.8448,1023.9711 L 2109.3292,1027.7975 L 2111.9956,1030.3024 L 2113.0707,1032.0857 L 2113.1648,1033.5403 L 2115.3092,1033.5403 L 2116.6783,1041.7636 L 2118.4064,1043.1235 L 2117.8725,1046.8156 L 2123.0094,1049.6457 L 2126.2087,1049.4018 L 2127.2012,1051.3815 C 2127.7471,1051.5666 2128.9195,1052.3579 2129.8068,1053.1399 L 2131.4198,1054.5616 L 2130.7693,1056.2567 L 2131.8918,1057.2178 C 2132.5092,1057.7464 2133.0143,1058.3956 2133.0143,1058.6605 C 2133.0143,1058.9254 2133.3789,1059.5067 2133.8245,1059.9523 C 2134.2701,1060.3978 2134.8671,1060.7625 2135.1513,1060.7625 L 2135.6679,1060.7625 L 2137.0447,1063.7842 L 2135.6898,1067.0553 L 2138.7403,1070.2393 L 2138.5895,1070.7468 C 2138.5066,1071.026 2138.7362,1072.0838 2139.0997,1073.0975 L 2139.7608,1074.9407 L 2141.0028,1075.5464 L 2135.9467,1081.4585 L 2128.3572,1081.2476 L 2123.3854,1078.9106 C 2120.0838,1079.0512 2119.1091,1078.4162 2118.2689,1077.7364 L 2118.2689,1076.0749 L 2114.0154,1076.1247 C 2110.8314,1077.713 2109.5605,1076.9489 2103.24,1079.8544 L 2108.588,1083.6379 L 2105.8591,1086.5028 L 2102.6677,1086.5028 L 2099.8187,1088.8132 L 2097.4658,1095.5244 C 2093.0054,1100.2082 2093.8263,1100.2445 2093.2721,1101.4909 L 2091.6467,1102.3028 z "},"ca50":{"name":"CA-50","path":"M 269.71293,1049.7704 L 266.87728,1049.0898 L 266.51483,1046.5842 L 269.92957,1046.5842 L 270.66054,1045.4015 L 266.79783,1040.6294 C 266.21836,1036.3323 265.78121,1032.0124 265.05629,1027.7359 L 264.5129,1025.8836 L 266.61408,1025.4713 L 268.35358,1026.1918 C 269.31032,1026.5881 270.39609,1027.2154 270.76643,1027.5857 L 271.43972,1028.259 L 278.61611,1024.839 C 279.94244,1026.316 281.74173,1027.8866 282.71177,1029.6319 L 278.56127,1034.1074 L 277.22075,1034.1074 L 277.92875,1038.3609 L 274.31722,1041.3439 L 273.68283,1046.8678 L 270.04419,1048.4698 L 269.71293,1049.7704 z "},"ca45":{"name":"CA-45","path":"M 282.52669,1011.3929 L 282.18976,1004.4104 L 278.83695,1003.5181 L 277.0856,1005.0969 L 273.35888,1001.761 L 279.20984,999.25893 L 281.00917,995.48566 C 280.47037,994.68544 279.99141,993.39619 279.63768,992.5046 L 283.04045,991.46177 L 283.04045,990.70006 C 283.04045,990.28112 282.76727,989.76945 282.43328,989.56308 L 281.82617,989.18781 L 282.45451,985.27093 L 280.38062,984.76721 L 276.62623,979.66305 L 278.3554,977.6781 L 278.16768,976.05288 C 283.36454,978.54949 285.62811,981.4313 287.00281,983.80939 L 285.72927,985.34392 L 286.89843,990.57086 L 291.96219,992.4374 L 291.54738,995.30633 L 295.81474,996.35212 L 296.36798,986.18503 L 301.24381,986.55134 L 303.52803,983.64736 L 307.89847,985.28778 L 309.68795,984.17728 L 316.18785,986.08913 L 317.08392,980.21475 L 377.18382,989.87137 L 377.2763,987.51035 L 421.41127,994.07578 C 420.95836,996.86537 420.08732,997.92267 417.54368,1000.8318 L 415.66942,1000.8535 L 414.92937,1002.3256 L 416.23314,1003.9338 L 415.86655,1006.6836 C 414.15547,1006.8894 415.01301,1008.708 415.21346,1016.4404 L 412.97851,1017.6726 L 411.80889,1025.1746 L 405.54025,1031.8389 C 357.94642,1025.0235 332.99278,1021.4184 282.52669,1011.3929 z "},"ca44":{"name":"CA-44","path":"M 254.40045,1008.3962 L 251.90406,1004.6219 L 253.61623,1000.5242 C 252.21889,999.44881 255.15536,997.17587 256.43815,997.81117 L 258.4844,994.2445 L 259.9031,994.1803 C 261.17323,991.49568 261.53098,989.49536 261.48956,986.46859 L 259.60004,986.12645 L 255.81342,979.55348 L 257.05828,978.0329 L 257.23454,976.16812 L 260.07174,975.97671 L 260.2061,973.42463 L 263.16934,973.42463 L 264.10912,970.41795 C 269.47858,971.01621 272.19324,972.11553 274.99663,973.51214 L 275.30476,972.85654 L 277.69696,973.77325 C 278.58815,976.14339 276.84898,975.53571 278.01313,977.55849 L 276.07838,979.68432 L 278.19372,982.51877 L 275.87158,984.79591 L 271.73164,984.23382 L 272.22905,987.85159 L 269.82006,990.41581 L 267.4143,989.81205 L 264.72588,992.67378 L 266.14455,994.38322 L 259.78817,1001.4072 L 259.78817,1003.8227 L 258.42707,1005.1838 L 255.76355,1005.1838 L 254.40045,1008.3962 z "},"ca42":{"name":"CA-42","path":"M 253.54976,998.29136 L 253.54976,995.6258 L 251.56481,995.18315 L 255.84759,992.57771 L 256.98628,990.45007 L 255.99998,988.88468 C 255.45752,988.02372 254.15817,986.53319 253.1125,985.57236 L 251.21132,983.82549 L 251.931,980.95809 L 247.87847,978.56707 L 247.31472,974.48845 L 241.56489,973.6415 L 241.64006,972.60116 C 241.64006,972.21501 241.12964,971.43713 240.5058,970.87256 C 239.88196,970.30798 239.37154,969.63043 239.37154,969.36683 C 239.37154,969.10328 239.15755,968.62451 239.44718,968.62451 L 243.7876,970.4011 C 245.16466,970.51782 245.37663,969.95812 245.96444,969.32316 C 248.04954,969.28272 249.5333,968.75365 251.24257,968.14949 L 254.1353,969.24507 L 256.32442,968.48182 L 257.98592,968.70482 L 258.84184,969.89766 L 258.95459,972.56509 L 259.78817,973.49156 L 259.78817,975.69315 L 256.95253,975.69315 L 256.91495,977.77377 L 255.34886,979.65868 L 259.26715,986.5219 L 260.92243,987.15709 C 261.03354,990.17438 260.61847,991.61319 259.67724,993.84127 L 258.06246,993.84127 L 256.51298,997.24206 C 255.07662,997.24206 254.49691,997.25697 253.54976,998.29136 z "},"ca41":{"name":"CA-41","path":"M 295.45904,995.75952 L 292.04861,994.85904 L 292.39807,991.95528 L 287.74138,990.39863 L 287.0923,988.97406 C 286.73529,988.19051 286.44322,987.10213 286.44322,986.55531 C 286.44322,986.00854 286.72378,985.28063 287.06667,984.93774 L 287.69017,984.31424 L 287.35159,983.26471 C 287.16541,982.68743 286.15546,981.3219 285.10724,980.23018 C 284.05907,979.13846 282.14552,977.62042 280.85496,976.85678 L 278.50853,975.46834 L 277.87828,973.48265 L 275.66778,972.78106 L 275.66778,971.72325 L 277.13301,971.72325 L 282.05983,966.7032 L 281.37468,964.9177 L 279.27823,964.9177 L 271.61417,957.29124 L 272.15963,954.4379 L 271.15786,952.56609 L 273.39926,951.97991 L 273.39926,951.10959 C 273.39926,950.63094 273.14502,950.08213 272.83423,949.8901 L 272.41106,949.20971 L 274.04817,946.10066 L 276.14264,947.99612 L 278.62155,945.5172 L 281.78018,946.14892 L 281.78018,937.82018 L 278.98689,935.81748 C 278.9929,935.26493 279.42166,933.30028 279.82409,931.74068 L 280.55575,928.90503 C 282.83604,927.57511 284.45406,926.62364 287.39662,925.76677 L 289.49097,930.41116 L 291.26382,928.25992 L 298.77566,924.65157 L 303.53166,924.65157 L 304.65951,924.04797 C 305.27984,923.71597 307.35961,923.19115 309.28121,922.88167 L 312.77501,922.31902 L 320.75451,918.56565 L 326.99293,917.13462 L 328.6997,915.6535 L 331.81619,915.25481 L 334.93273,914.85612 L 336.63411,914.01796 C 337.56988,913.557 338.97352,912.56577 339.75332,911.81529 C 340.53312,911.06475 342.58057,909.23474 344.30317,907.74858 L 347.43519,905.04649 L 349.40733,904.2562 C 350.49202,903.8215 352.47067,902.69773 353.80433,901.75885 L 356.2292,900.05179 L 358.39632,900.01663 L 360.56343,899.98147 L 361.35917,899.34867 C 361.79682,899.00062 362.92053,898.54028 363.85629,898.32574 C 364.79205,898.11113 366.57851,897.74108 367.82619,897.50346 C 369.07388,897.26577 370.73273,896.72779 371.51253,896.30789 C 376.06753,893.78525 379.88147,889.70697 384.82758,887.90418 L 419.65478,935.78283 L 418.52171,943.95918 L 420.85273,946.92254 L 420.85273,950.0194 L 425.27712,955.02834 L 425.72419,958.41342 C 425.97004,960.27519 426.20188,962.0537 426.23937,962.36563 C 426.27691,962.67755 426.70447,963.79541 427.18959,964.84976 L 428.07165,966.76683 L 427.06908,971.22877 L 427.72519,972.29038 L 429.92678,972.29038 L 429.92678,972.77533 C 429.92678,973.04205 431.45735,974.84399 433.32803,976.77971 C 435.19876,978.71538 436.98521,980.77723 437.29793,981.3616 C 437.6107,981.94603 437.86659,982.95132 437.86659,983.59569 L 437.86659,984.76721 L 436.38683,984.76721 L 434.20912,986.76191 L 432.0314,988.75662 L 430.55375,989.10659 C 429.74105,989.29908 428.69328,989.77671 428.2254,990.16798 C 427.75752,990.55924 426.48148,991.06489 425.38976,991.29157 C 424.29803,991.51825 422.7378,992.09151 421.92261,992.56551 L 420.44037,993.42726 L 376.61669,987.03572 C 376.69707,987.83106 376.58264,988.59504 376.3621,989.30424 L 316.64719,979.66305 L 315.89484,985.33434 L 309.68285,983.58367 L 307.78791,984.64414 L 303.17352,983.01013 L 300.72613,985.84305 L 295.80085,985.6179 L 295.45904,995.75952 z "},"ca37":{"name":"CA-37","path":"M 226.66193,969.98035 L 223.86769,975.70478 L 225.88451,977.80077 C 226.90914,978.85398 227.08688,979.33003 227.86385,979.65001 L 230.56332,980.86684 L 233.32808,977.81852 L 232.83661,977.15804 L 230.69335,977.77956 C 230.35713,975.49749 231.5022,976.02208 231.32191,973.66209 L 226.66193,969.98035 z "},"ca47":{"name":"CA-47","path":"M 244.68639,988.60741 L 239.22151,982.2749 L 240.97552,977.15974 L 244.57684,977.12265 L 245.77507,978.1922 C 244.97578,980.34723 243.94167,982.15626 243.90857,984.20008 L 245.06716,984.20008 L 246.32755,986.96631 L 244.68639,988.60741 z "},"ca43":{"name":"CA-43","path":"M 261.31454,972.85751 C 260.57904,972.85751 259.80706,972.68737 259.59915,972.4794 C 259.39118,972.27149 259.22105,971.55691 259.22105,970.89144 L 259.22105,969.68159 L 257.87436,968.24732 L 258.96884,966.41946 L 261.3674,965.8136 L 265.004,967.84023 L 271.10971,961.2667 L 274.99515,961.22292 L 279.11195,965.20739 L 281.16385,965.17819 L 281.7041,966.6348 L 279.1884,969.0561 C 278.0056,970.21111 276.7422,971.15612 276.38094,971.15612 L 275.47592,971.14154 L 274.87561,973.08458 L 273.05003,972.1106 C 272.15039,971.6151 270.06194,970.94243 268.40898,970.61576 C 266.75603,970.28909 265.02708,970.02186 264.5668,970.02186 L 263.73,970.02186 L 262.65189,972.85751 L 261.31454,972.85751 z "},"ca25":{"name":"CA-25","path":"M 230.86835,948.97827 L 229.44679,948.91844 L 226.82331,946.30142 L 228.24431,944.02604 L 226.74419,942.21855 L 225.34384,943.38082 L 223.92018,941.66543 L 218.61463,941.66543 L 217.53709,942.68705 L 212.41098,941.46824 L 208.93193,922.58075 C 222.21514,925.24059 220.12859,925.70075 229.06817,928.05434 L 230.54339,924.72161 C 232.09086,924.09743 232.99792,923.4454 235.26933,923.51731 L 235.8626,925.78582 L 238.6286,925.78582 L 240.5058,923.71155 C 240.46198,921.18165 240.34727,920.28218 241.22503,916.12178 L 268.94146,921.10701 C 272.41189,903.64416 275.45698,888.16631 278.28939,870.20721 L 279.63768,870.20721 L 279.63768,867.9387 L 277.76048,867.9387 L 279.32423,866.09553 L 280.08469,860.94929 L 261.9875,857.82821 L 262.62166,853.79592 L 264.36133,853.11679 L 264.17174,846.03335 C 263.28738,843.87316 262.93469,841.50029 262.33389,836.39812 L 263.92544,834.64705 L 261.9063,830.92612 L 261.80605,825.25364 L 263.1145,825.40404 L 263.83475,823.13474 L 261.41232,819.73276 L 262.70271,819.73276 L 262.34025,817.18068 L 259.78817,816.81823 C 259.8976,815.85978 259.93183,814.67573 258.83819,814.01803 L 258.59661,809.28511 L 256.76039,807.84109 L 258.6631,805.73863 L 256.63709,803.90516 L 256.38415,800.84862 L 255.11226,799.31612 L 257.08479,799.31612 L 255.45452,790.80919 L 256.84608,790.80919 L 257.61891,785.1902 C 256.77532,784.20623 256.18237,780.74096 255.91525,775.24548 L 248.74011,769.2583 L 246.64396,769.2583 L 246.05437,762.87964 L 247.38161,761.40113 L 245.99753,756.78147 L 244.04746,756.78147 L 242.63542,755.08009 L 243.99869,755.08009 L 243.29102,751.85806 L 245.04283,750.40417 L 245.04283,749.30206 C 245.04283,748.69592 244.77866,747.70633 244.45574,747.10302 L 243.86865,746.00603 L 241.07293,746.00603 L 241.07293,745.2404 C 241.07293,744.81937 240.29364,743.39899 239.34109,742.0841 L 237.60925,739.69337 L 236.26385,740.14186 L 234.38592,738.00821 L 233.52298,732.50422 L 231.33986,727.89205 L 229.54263,727.593 C 228.55419,727.42848 227.24474,727.35702 226.63287,727.43415 L 225.52033,727.57434 L 225.10928,725.58486 L 228.46554,723.65866 L 228.4952,721.50822 C 228.51154,720.32553 228.68502,719.09883 228.88068,718.7822 L 229.3367,717.57995 L 226.28333,715.5752 L 225.09686,711.51683 L 226.43142,709.02322 L 225.70975,705.1765 L 223.07833,702.33712 L 220.35815,702.33712 L 219.23847,699.87782 L 218.12815,699.2643 C 217.51752,698.92686 216.68809,698.34997 216.28498,697.98236 C 215.88192,697.61475 215.55214,697.04949 215.55214,696.72629 L 215.50201,695.86294 L 213.26922,694.9168 L 214.48089,692.65271 L 213.73092,687.65155 C 214.96203,686.58665 215.62241,685.91318 216.11926,684.42799 L 216.11926,683.05474 L 218.22806,683.05474 L 220.88495,677.67581 C 220.06241,674.17566 219.29,671.77824 219.3447,667.40085 L 221.70411,664.83284 L 384.23873,887.40255 L 383.16895,888.02072 C 382.58056,888.36072 380.16379,889.97533 377.7983,891.60878 C 375.43286,893.24228 372.73186,895.0103 371.79609,895.53784 C 370.86033,896.06533 369.07388,896.69303 367.82619,896.9327 C 366.57851,897.17237 364.79205,897.54401 363.85629,897.75861 C 362.92053,897.97315 361.79682,898.43349 361.35917,898.78154 L 360.56343,899.41434 L 356.2292,899.48466 C 353.24218,901.76214 350.42222,903.53839 347.43519,904.47937 C 340.20489,910.09139 338.2649,913.25313 334.93273,914.29875 L 328.41007,915.0921 L 326.9648,916.53737 L 320.75451,917.96994 L 312.74178,921.75723 C 308.11249,922.47725 306.1562,922.80749 303.53166,924.08444 L 298.77566,924.08444 L 290.81949,927.93587 L 289.48417,929.17861 L 287.56177,925.14724 C 284.98377,925.91184 282.15171,926.85429 280.09333,928.61041 L 278.28689,936.15509 L 281.19048,938.54622 L 281.21855,945.45498 L 278.43888,944.92364 L 276.03789,947.50073 L 273.99254,944.97485 L 272.05494,949.0381 L 270.69406,949.0381 L 268.96245,946.39534 L 262.89028,943.64403 L 262.45675,948.9642 L 257.93752,946.57727 L 254.48739,947.87951 L 252.87748,946.54347 L 245.44782,946.30131 L 242.91252,943.12176 L 241.49544,943.76743 C 240.71598,944.12257 239.16823,945.21219 238.05592,946.18879 L 236.03359,947.96441 L 234.16178,948.50126 C 233.13228,948.7965 231.6502,949.01116 230.86835,948.97827 z "},"ca22":{"name":"CA-22","path":"M 107.46875,825.84375 C 107.49909,825.87617 107.53277,825.90426 107.5625,825.9375 C 107.73608,826.13156 107.89806,826.35757 107.96875,826.625 C 108.02677,826.8445 107.95856,827.09577 107.84375,827.34375 C 107.90968,828.60231 108.27228,829.84879 108.8125,831 L 108.8125,831.03125 C 109.20446,832.30433 110.49694,833.01526 111.40625,834.15625 C 111.41572,834.16813 111.42812,834.17552 111.4375,834.1875 C 111.72689,834.47999 111.89651,834.77027 111.90625,835.0625 C 111.91641,835.36723 111.787,835.65094 111.625,835.875 C 111.301,836.32313 110.84816,836.70549 110.71875,837.09375 C 110.49623,837.59451 110.59787,837.86601 110.8125,838.1875 C 111.02713,838.50899 111.38039,838.84638 111.625,839.3125 L 111.65625,839.375 L 111.65625,839.4375 C 111.62892,839.83608 111.44601,840.13215 111.1875,840.28125 C 110.92899,840.43035 110.62753,840.4656 110.34375,840.46875 C 110.05997,840.4719 109.80179,840.44668 109.5625,840.46875 C 109.37505,840.48604 109.239,840.55271 109.125,840.625 C 109.07927,841.11225 109.23258,841.64122 109.53125,842.1875 C 109.84816,842.76715 110.25985,843.34186 110.5625,843.90625 L 110.59375,843.9375 L 110.59375,843.96875 C 110.78772,845.06576 111.48212,845.87314 112.21875,846.78125 L 112.21875,846.8125 L 112.25,846.8125 C 112.77299,847.70462 113.9112,848.08641 114.96875,848.1875 C 114.97867,848.18845 114.9901,848.1866 115,848.1875 C 115.67289,848.02334 116.27039,848.14592 116.65625,848.53125 C 117.01655,848.89106 117.12155,849.47349 117.125,850.0625 L 117.15625,850.0625 C 118.09642,851.26186 117.86887,852.65364 117.96875,853.9375 L 117.96875,853.96875 C 117.95591,854.45652 118.31357,854.87485 118.6875,855.34375 C 118.87446,855.5782 119.05627,855.815 119.1875,856.09375 C 119.31873,856.3725 119.39442,856.71702 119.3125,857.0625 L 119.28125,857.09375 C 118.83406,858.02903 118.67139,859.39297 119.125,860.25 C 119.96476,860.99614 121.10991,861.57264 122.21875,861.53125 C 123.24887,861.54164 124.38326,861.38737 125.4375,861.9375 C 125.45898,861.94871 125.47858,861.95693 125.5,861.96875 C 125.87392,862.08161 126.15333,862.32771 126.3125,862.625 C 126.4821,862.94178 126.55813,863.29452 126.5,863.625 C 126.44187,863.95548 126.25229,864.28304 125.9375,864.4375 C 125.64778,864.57966 125.27456,864.47922 124.875,864.28125 L 124.875,864.3125 C 124.56222,864.28535 124.42277,864.36967 124.34375,864.46875 C 124.26473,864.56783 124.23082,864.76386 124.25,865 C 124.28837,865.47228 124.58716,866.09883 124.8125,866.375 C 125.05175,866.70323 125.52122,867.16869 125.8125,867.6875 C 125.95814,867.94691 126.07368,868.22875 126.0625,868.53125 C 126.05368,868.76989 125.866,869.00408 125.6875,869.21875 C 125.68394,869.5872 125.83411,869.96451 126.03125,870.375 C 126.22839,870.78549 126.48792,871.20761 126.59375,871.6875 L 126.59375,871.8125 L 126.53125,871.90625 C 125.89265,872.71225 125.84065,874.18381 126.40625,875.03125 C 126.71226,875.352 127.07604,875.69466 127.25,876.09375 C 127.3398,876.29975 127.3644,876.54876 127.28125,876.78125 C 127.24198,876.89106 127.11548,876.96664 127.03125,877.0625 C 127.30333,877.27399 127.60135,877.40524 128.0625,877.375 C 128.62101,877.33838 129.25469,877.18881 129.8125,877.21875 C 130.13622,877.10005 130.44518,877.03762 130.6875,877.125 C 130.96504,877.22508 131.15497,877.46457 131.25,877.71875 C 131.44006,878.2271 131.36175,878.87903 131.25,879.375 C 131.04827,880.01858 131.16548,880.4642 131.4375,880.875 C 131.70952,881.2858 132.16908,881.65035 132.65625,882.03125 L 132.6875,882.0625 L 132.71875,882.09375 C 133.0459,882.6083 133.59995,883.04654 134.09375,883.5625 C 134.58755,884.07846 135.03184,884.69381 135.03125,885.53125 C 135.24003,885.79509 135.47379,886.06315 135.65625,886.3125 L 137.28125,888.5 L 138.03125,886.5 L 136.75,883.09375 L 137.4375,881.96875 L 144.09375,882.5625 L 145.09375,881.34375 C 145.65056,880.67147 146.689,879.82742 147.375,879.4375 L 148.625,878.71875 L 151.34375,878.71875 L 152,880.40625 L 153.625,880.40625 L 155.75,883.3125 L 158.28125,883.5 L 158.28125,883.96875 C 158.28125,884.22407 158.70415,884.60311 159.25,884.8125 C 159.79586,885.02188 161.47227,886.4099 162.96875,887.90625 L 165.6875,890.625 L 168.3125,890.625 L 170.53125,892.375 C 171.74382,893.33838 173.37646,894.8677 174.15625,895.78125 L 175.5625,897.4375 L 177.28125,897.65625 C 178.21701,897.76729 179.92403,898.05104 181.09375,898.28125 L 183.21875,898.6875 L 183.21875,900.09375 L 188.03125,901.1875 L 187.75,902.53125 L 189.46875,902.53125 L 189.46875,905.71875 L 201.9375,908.3125 L 201.9375,909.6875 L 206.71875,910.75 L 208.78125,921.78125 L 214.90625,923.21875 C 217.59529,923.74862 220.56423,924.53441 221.5,924.96875 C 222.43576,925.40305 224.22108,926.14157 225.46875,926.59375 C 226.71643,927.04592 228.32346,927.44681 228.53125,927.46875 C 229.04743,926.49119 229.39622,925.33902 229.90625,924.3125 L 231.34375,923.625 C 232.13727,923.25052 233.35166,922.93748 234.03125,922.9375 L 235.59375,923 L 236.1875,925.53125 L 238.5625,925.46875 L 239.9375,923.90625 C 239.78428,920.62983 240.04639,918.55028 240.65625,915.5 L 268.65625,920.5 C 272.08538,903.70511 275.22128,886.84519 278.03125,869.9375 L 279.4375,869.9375 L 279.3125,868.34375 L 276.96875,868.3125 L 278.9375,865.875 L 279.71875,861.28125 C 252.57187,856.86026 249.67003,855.97834 201.09375,846.5 C 200.26738,848.90496 199.75617,851.39026 199.09375,853.84375 L 199.125,858 L 200.75,861.1875 L 199.90625,866.8125 L 196.9375,868.375 L 195.625,866.8125 L 191.875,866.8125 L 191.28125,869.0625 L 192.8125,869.0625 L 194,871.28125 L 194,875.21875 L 202.09375,877.28125 L 203.28125,879.875 L 204.53125,879.75 L 204.375,872.875 C 205.13944,872.28751 206.43808,871.37722 206.75,871.375 C 207.57656,871.59805 208.3367,871.91294 209.03125,872.4375 C 209.13283,877.92612 209.34692,879.23213 210,882.625 L 213.28125,883.75 L 213.28125,886.5625 L 211.5,888.34375 L 208.71875,888.34375 L 207.5625,885.8125 L 203,883.59375 L 200.78125,880.46875 C 196.54155,879.37023 192.7967,878.13165 188.59375,876.1875 C 187.10708,872.65525 185.9996,870.25102 183.59375,867.34375 L 178.84375,864.09375 L 178.6875,861.375 C 177.12516,859.34735 174.0367,859.79788 170.5625,857.84375 L 168.25,859.09375 L 166.40625,857.34375 L 168.5,852.46875 L 167.84375,850.375 L 162.5,849.28125 L 154.1875,841.375 L 154.96875,836.8125 L 107.46875,825.84375 z "},"nc13":{"name":"NC-13","path":"M 2213.8301,776.54097 C 2189.4216,782.08823 2165.0689,787.63543 2138.9514,793.18268 L 2140.9541,804.34803 L 2146.6606,799.65873 L 2147.9216,802.34658 L 2151.3501,798.95305 L 2153.5372,802.87701 L 2152.4536,805.25946 L 2154.1185,807.76963 L 2158.4206,806.8527 L 2158.5351,809.94843 L 2152.7184,814.07536 L 2155.3095,816.86031 L 2154.636,817.6578 L 2157.259,817.99456 L 2157.3299,819.6782 L 2158.4642,819.58961 L 2160.3605,816.86031 L 2160.5378,818.86295 L 2162.0442,819.16427 L 2162.7176,819.16427 C 2163.0856,819.16427 2163.9537,819.56302 2164.6494,820.05041 L 2165.9077,820.93654 L 2166.5989,819.16427 L 2169.0269,819.09338 L 2166.7584,818.20724 L 2164.8621,819.37694 L 2162.6645,817.85278 C 2161.4533,817.01337 2160.1874,816.32862 2159.8643,816.32862 L 2159.2794,816.32862 C 2158.8019,815.31681 2158.3423,814.29762 2157.9679,813.24486 L 2160.2364,812.46506 L 2160.2364,810.79912 L 2163.7633,810.09021 L 2162.6863,806.34194 L 2175.4697,803.56721 C 2176.1425,806.22046 2176.6574,808.5348 2176.6832,811.25991 C 2175.3053,811.58936 2175.1144,811.923 2172.2348,810.72823 L 2171.5613,812.5005 L 2172.8551,814.06011 L 2176.9667,814.04236 L 2180.6354,808.42427 L 2179.572,802.52256 L 2202.0432,797.99018 L 2204.0117,806.79377 L 2207.3081,808.67239 L 2207.3081,810.25575 L 2211.6148,809.67087 L 2215.2327,812.52183 L 2217.6795,812.6306 L 2216.2581,817.49833 L 2212.9794,819.19971 L 2212.9794,820.42256 L 2209.4526,818.98704 L 2210.7109,821.36189 L 2214.0125,822.69674 L 2209.6475,824.49879 L 2208.6019,826.8205 L 2212.0578,829.37258 L 2216.2626,829.30328 C 2216.5773,827.23837 2217.3066,825.55354 2218.4912,824.28612 L 2225.1727,825.50902 L 2225.8284,826.55463 L 2234.0164,817.30335 L 2230.9149,814.06011 L 2228.9477,814.06011 L 2227.1454,812.33938 C 2226.2827,812.47776 2224.9812,811.46447 2223.5422,810.09021 L 2217.0202,808.74328 L 2216.2936,804.50751 L 2216.9671,799.59833 L 2214.8758,791.65853 L 2207.9993,792.58011 L 2206.741,784.68307 L 2212.8908,783.9314 L 2212.2351,777.65754 L 2213.8301,776.54097 z "},"nc12":{"name":"NC-12","path":"M 2132.9722,813.67015 L 2129.1153,817.12612 L 2133.5814,821.98216 C 2133.4164,823.39045 2133.2046,824.7675 2135.336,827.70664 L 2134.6448,828.80546 C 2133.2619,828.32663 2131.4372,828.82984 2129.0444,830.59543 L 2130.4578,836.73204 L 2128.4772,836.10724 L 2128.1579,836.70743 L 2130.1786,838.55519 L 2130.1786,839.29059 L 2128.8317,839.22644 L 2126.7758,841.28229 C 2126.3431,842.48097 2126.9489,844.21814 2128.3111,845.19241 C 2121.424,843.60542 2122.8722,842.77616 2114.3432,841.23124 L 2113.7243,855.99979 L 2114.9171,856.55467 L 2117.3873,863.38255 L 2111.1103,864.53042 C 2113.2227,865.75593 2114.939,866.46887 2115.9295,866.23595 L 2117.0792,868.11893 L 2117.1347,874.17575 L 2114.8661,874.17575 L 2114.8661,872.47436 C 2114.2781,871.97972 2112.8814,873.4057 2111.4102,875.00869 L 2113.1648,876.28473 L 2113.1648,878.71278 L 2109.1949,878.71278 L 2109.1949,882.22189 L 2106.9972,882.80671 L 2108.3265,884.9512 L 2111.4811,884.9512 L 2110.7722,887.78684 L 2114.2813,887.78684 L 2115.3092,885.23476 L 2114.0154,882.34592 L 2114.9725,880.67998 L 2120.3071,879.47483 L 2118.8892,877.96842 C 2119.5275,875.93731 2120.3658,874.17666 2120.0412,870.86156 L 2121.2286,867.68922 C 2120.1958,867.34401 2120.4659,864.65916 2120.502,862.39008 C 2120.7964,858.09062 2121.8499,855.84961 2122.9123,853.63503 L 2121.7958,852.51852 L 2119.35,853.83001 L 2117.1524,850.88803 L 2120.2716,847.62704 L 2126.4214,850.67536 L 2127.6974,852.11087 L 2129.5052,851.41971 L 2130.5331,846.40414 C 2131.7878,846.58392 2133.0057,846.54167 2134.1485,846.04968 L 2134.1485,842.52288 L 2139.4299,839.10236 L 2137.7108,836.85159 L 2134.7156,838.16308 L 2133.4042,836.99338 L 2133.4751,831.37523 L 2136.9775,830.17456 L 2137.6754,828.23833 L 2140.3338,828.23833 L 2143.5061,832.20823 C 2145.1232,832.64356 2148.2982,829.18401 2151.1978,826.41285 L 2150.4712,824.10889 L 2154.7956,824.80011 L 2156.8337,822.95694 L 2156.9578,825.68625 L 2158.1806,822.56704 L 2160.8568,822.56704 L 2161.9378,819.46553 L 2160.2364,819.16427 L 2160.201,817.39199 L 2158.5528,819.97951 L 2157.0286,820.03265 L 2157.0286,818.33127 L 2154.2816,818.1009 L 2153.874,818.57939 L 2151.3219,817.94137 L 2150.613,819.78454 L 2148.5572,818.68572 L 2146.9444,819.6782 C 2148.0241,820.0318 2148.9777,820.57438 2149.3901,821.92902 L 2147.1748,826.24226 L 2145.3782,826.33555 L 2144.9794,825.31846 L 2140.8389,825.26527 L 2137.8039,818.75662 L 2137.8039,816.34632 L 2133.2669,815.36711 L 2132.9722,813.67015 z "},"il12":{"name":"IL-12","path":"M 1688.7567,838.26573 C 1688.603,838.41942 1688.1626,837.9491 1687.7781,837.22051 C 1687.3935,836.49198 1686.4158,835.21514 1685.6054,834.38311 L 1684.1319,832.87024 L 1681.0127,833.4761 L 1681.0127,835.53591 L 1683.2812,836.25594 L 1683.2812,838.05669 L 1682.2887,837.22771 C 1681.7429,836.77186 1680.5779,836.09221 1679.6999,835.71745 L 1678.1035,835.03604 L 1678.8007,832.83933 L 1676.8047,830.72314 C 1675.7069,829.55928 1674.4181,827.78394 1673.9408,826.77803 C 1673.4635,825.77211 1673.0729,824.41338 1673.0729,823.75875 L 1673.0729,822.5684 L 1671.5104,822.5684 L 1670.0705,820.83344 L 1671.3472,818.03137 L 1673.5636,818.03137 L 1674.3149,815.66423 L 1673.6178,811.94869 L 1672.5012,810.93807 C 1671.887,810.38228 1670.6159,808.72984 1669.6766,807.26602 C 1668.7372,805.8022 1667.9687,804.30788 1667.9687,803.94531 L 1667.9687,803.28602 L 1668.786,803.28602 C 1669.2354,803.28602 1669.7726,803.01193 1669.9797,802.67693 L 1670.3561,802.06778 L 1667.9373,799.49307 L 1667.4615,795.73374 L 1666.7226,795.26507 C 1666.3162,795.00736 1665.5767,794.79254 1665.0792,794.78777 L 1664.1746,794.77909 L 1662.0891,792.47457 L 1659.7578,792.79414 L 1659.4618,789.64686 L 1658.099,789.12873 C 1657.3496,788.84381 1656.581,788.35931 1656.3912,788.05215 C 1656.2013,787.745 1655.2833,787.32617 1654.3511,787.12144 L 1652.6563,786.74918 L 1650.8731,784.53692 L 1649.0899,783.79829 L 1647.0867,786.27216 L 1644.7929,786.27216 L 1644.0471,783.92238 L 1645.9618,781.80659 L 1645.1506,780.49409 L 1642.2226,781.05379 L 1640.4921,779.76754 C 1639.5403,779.0601 1638.0903,778.32295 1637.2698,778.12944 L 1635.7779,777.77765 L 1635.2018,775.57453 L 1630.7558,774.37732 L 1628.4756,771.95959 C 1627.2216,770.62985 1625.5221,769.08964 1624.699,768.53686 L 1623.2025,767.53185 L 1621.9144,762.74806 L 1622.5626,758.01889 L 1625.4341,753.78754 L 1625.4373,752.02355 C 1625.439,751.0533 1625.6915,749.35571 1625.9984,748.25112 L 1626.5563,746.24269 L 1629.404,742.38287 L 1629.404,740.03439 L 1627.1277,735.78739 L 1631.1054,730.62663 L 1631.1054,726.75201 L 1625.7176,724.27621 L 1629.1204,722.8049 L 1633.2838,722.75375 L 1635.7998,738.63335 L 1650.7076,737.62988 L 1654.0255,764.72314 L 1681.0127,761.81616 L 1681.0127,767.55692 L 1702.4711,765.02089 L 1706.4774,796.90895 L 1697.5371,798.30811 L 1696.5379,794.02963 L 1689.9314,793.64484 L 1692.3708,817.84031 L 1697.9718,817.76561 L 1698.3659,821.43414 L 1694.7121,821.43414 L 1690.6539,826.17534 L 1690.6539,828.06949 L 1687.2511,832.76691 L 1687.2511,833.65066 C 1687.2511,834.13675 1687.6527,835.3111 1688.1436,836.26036 C 1688.6345,837.20962 1688.9104,838.11204 1688.7567,838.26573 z "},"ca17":{"name":"CA-17","path":"M 90.9375,738.34375 C 90.885403,738.35406 90.799072,738.36459 90.71875,738.46875 L 90.71875,738.5 L 90.6875,738.53125 C 90.531048,738.63951 90.414955,738.83095 90.3125,739.0625 C 90.210045,739.29405 90.100941,739.57255 89.84375,739.78125 L 89.8125,739.8125 L 89.78125,739.8125 C 89.568791,739.89147 89.506962,740.04257 89.4375,740.28125 C 89.368038,740.51993 89.344384,740.82069 89.125,741.09375 C 88.808428,741.46394 88.613602,742.07068 88.125,742.53125 C 88.112856,742.5427 88.106317,742.55125 88.09375,742.5625 C 88.08313,742.59648 88.045036,742.59406 88.03125,742.625 L 88.03125,742.65625 C 87.90425,742.92044 87.680835,743.12739 87.46875,743.1875 C 87.214248,743.25963 87.001415,743.27408 86.84375,743.34375 L 86.8125,743.34375 L 86.78125,743.34375 C 86.591188,743.37712 86.38904,743.34968 86.25,743.25 C 86.11096,743.15032 86.029559,742.99162 86,742.84375 C 85.940881,742.548 86.041499,742.23902 86.25,742 C 86.318731,741.91711 86.342933,741.8704 86.34375,741.8125 C 86.344567,741.7546 86.326857,741.68197 86.28125,741.59375 C 86.240847,741.51559 86.159673,741.40344 86.09375,741.3125 C 86.020751,741.48388 86.019734,741.64213 85.84375,741.78125 L 85.78125,741.84375 L 85.71875,741.84375 C 85.524416,741.8731 85.362808,741.89492 85.28125,741.9375 C 85.199692,741.98008 85.164741,741.98015 85.15625,742.15625 L 85.15625,742.1875 L 85.15625,742.21875 C 85.126584,742.34114 85.088916,742.44365 85.03125,742.53125 C 84.973584,742.61885 84.848857,742.68936 84.71875,742.6875 C 84.588643,742.68564 84.526938,742.64496 84.46875,742.59375 C 84.410562,742.54254 84.355257,742.49197 84.3125,742.4375 C 84.226986,742.32855 84.146473,742.20774 84.09375,742.15625 C 84.023313,742.22617 83.955129,742.31803 83.875,742.34375 C 83.739225,742.38733 83.649807,742.37646 83.5625,742.375 C 83.475193,742.37354 83.416215,742.37123 83.40625,742.375 C 83.396285,742.37877 83.394438,742.34615 83.375,742.40625 C 83.336374,742.55572 83.311867,742.68425 83.1875,742.78125 C 83.125317,742.82975 83.021355,742.85286 82.9375,742.84375 C 82.853645,742.83464 82.795264,742.7859 82.75,742.75 C 82.568943,742.60638 82.52517,742.44488 82.46875,742.28125 L 82.4375,742.25 C 82.376997,742.05027 82.30522,741.78462 82.1875,741.625 C 82.12864,741.54519 82.045926,741.5182 82,741.5 C 81.954074,741.4818 81.934149,741.46048 81.84375,741.5 L 81.84375,741.46875 C 81.666641,741.58633 81.485966,741.67951 81.3125,741.625 C 81.129601,741.56753 81.037569,741.4248 80.96875,741.3125 C 80.899931,741.2002 80.857865,741.09999 80.8125,741.03125 C 80.992689,741.50562 81.055024,742.02581 80.96875,742.53125 C 80.968648,742.54122 80.969015,742.55256 80.96875,742.5625 C 80.954247,743.10714 80.659878,743.5753 80.28125,743.9375 C 80.187488,744.21941 80.201841,744.57154 80.21875,744.9375 L 82.46875,744.375 L 84.625,745.53125 L 86.28125,744.125 L 89.125,746.8125 L 90.875,752.8125 L 91.09375,753.25 L 91.4375,757.3125 L 90.625,758.90625 C 90.17113,759.77328 89.197338,761.83187 88.46875,763.5 L 87.125,766.53125 L 85.75,767.625 C 84.99577,768.21827 84.037979,768.68751 83.59375,768.6875 L 82.78125,768.6875 L 83.40625,767.6875 L 81.65625,766.21875 L 79.15625,768.75 L 81.15625,769.875 L 81.15625,770.875 C 81.15625,771.42097 80.850322,772.14969 80.5,772.5 L 79.875,773.15625 L 79.59375,786.53125 L 81.9375,791 L 86.34375,795 L 89.5,801.3125 L 90.3125,806.1875 L 91.15625,806.84375 C 91.61642,807.21783 92.492252,807.98537 93.09375,808.53125 L 94.1875,809.53125 L 94.1875,816.75 L 95.3125,818.1875 C 95.93634,818.98057 96.458383,819.83104 96.46875,820.09375 C 96.47913,820.3565 96.978011,821.14316 97.5625,821.84375 L 98.625,823.125 L 153.15625,835.625 L 153.15625,835 C 153.15625,834.66579 152.80471,834.02346 152.34375,833.5625 L 151.5,832.71875 L 152.875,830.5 L 151.6875,828.09375 L 149.5625,827.90625 L 148.46875,823.59375 L 144.84375,822.59375 C 143.06944,819.26895 140.70403,817.78675 138.65625,814.71875 L 138.46875,813.125 L 136.5625,812.53125 L 136.34375,808.40625 L 138.71875,805.96875 L 136.625,803.625 L 137.25,799.6875 C 139.33445,798.35475 139.84788,799.07711 141.8125,799.0625 L 143.65625,789.3125 L 131.40625,769.84375 L 122.53125,762.34375 L 121.28125,757.34375 L 119.84375,757.34375 L 119.09375,755.40625 L 120.875,754.0625 L 111.09375,751.875 L 109.78125,749.96875 L 107.9375,749.96875 L 103.53125,754 L 101.6875,753.03125 L 102.0625,752.46875 L 101.59375,751.8125 C 101.14447,751.65342 100.04403,750.71789 99.15625,749.75 L 97.5625,748 L 97.21875,746.5625 C 97.214941,746.54641 97.22298,746.51672 97.21875,746.5 C 97.149802,746.52523 97.124431,746.55722 97.09375,746.625 L 97.0625,746.65625 L 97.0625,746.6875 C 96.661807,747.17748 96.154154,747.51794 95.8125,747.9375 C 95.667851,748.09968 95.531253,748.20254 95.34375,748.21875 C 95.156247,748.23496 94.987838,748.11337 94.90625,748 C 94.743074,747.77327 94.666047,747.50782 94.59375,747.34375 L 94.59375,747.3125 L 94.59375,747.25 C 94.591537,747.22709 94.596699,747.22984 94.59375,747.21875 C 94.597837,747.21978 94.518075,747.22525 94.40625,747.25 C 94.294425,747.27475 94.157364,747.32397 93.96875,747.25 C 93.874443,747.21301 93.794113,747.12997 93.75,747.03125 C 93.710128,746.94202 93.687191,746.85329 93.6875,746.75 C 93.687533,746.73901 93.68719,746.72998 93.6875,746.71875 C 93.648471,746.39788 93.727578,746.11349 93.9375,745.9375 C 94.088958,745.81052 94.296112,745.80932 94.5,745.8125 C 94.615679,745.64465 94.60239,745.46734 94.65625,745.28125 C 94.510662,745.32623 94.311718,745.42402 94.09375,745.5625 C 93.878741,745.6991 93.582976,745.81799 93.28125,745.75 C 93.278507,745.74938 93.283998,745.7819 93.28125,745.78125 C 93.253774,745.77851 93.244295,745.75681 93.21875,745.75 C 93.053054,745.70585 92.914335,745.6146 92.84375,745.5 C 92.762283,745.36773 92.725274,745.23019 92.6875,745.125 C 92.656239,745.03795 92.627426,745.01038 92.625,745 C 92.485813,745.10127 92.336671,745.19648 92.1875,745.15625 C 91.997069,745.1049 91.879681,745.00309 91.78125,744.875 C 91.584388,744.61883 91.410342,744.26089 91.34375,744.1875 C 91.200269,744.04811 91.117754,743.89363 91.125,743.71875 C 91.132647,743.53418 91.216863,743.37639 91.34375,743.28125 C 91.597524,743.09096 91.988442,743.048 92.28125,743.28125 L 92.3125,743.28125 L 92.3125,743.3125 C 92.400695,743.42001 92.450466,743.43574 92.46875,743.4375 C 92.487034,743.43926 92.528365,743.44256 92.5625,743.40625 C 92.630769,743.33362 92.676875,743.10011 92.625,742.9375 L 92.625,742.90625 C 92.582101,742.56524 92.266,742.21399 92.09375,741.71875 L 92.0625,741.71875 C 91.942341,741.51036 91.745969,741.25163 91.59375,740.96875 C 91.441531,740.68587 91.345085,740.31531 91.5,739.9375 L 91.53125,739.90625 L 91.5625,739.875 C 91.715761,739.72471 91.714954,739.6154 91.6875,739.46875 C 91.660046,739.3221 91.587472,739.1454 91.46875,738.9375 L 91.4375,738.90625 L 91.4375,738.84375 C 91.399754,738.64903 91.229669,738.45164 91.09375,738.375 C 91.02579,738.33668 90.989597,738.33344 90.9375,738.34375 z "},"ca19":{"name":"CA-19","path":"M 179.2559,787.97355 L 179.2559,786.37589 L 164.40439,782.86809 L 163.32662,783.53418 L 162.64254,782.97369 C 162.26631,782.6654 160.86085,782.11965 159.51937,781.76094 L 157.08026,781.10874 L 158.92677,774.19992 L 158.40076,773.85584 C 158.11147,773.66659 157.58137,772.95434 157.22278,772.27299 C 156.86418,771.5917 156.57075,770.71764 156.57075,770.33063 L 156.57075,769.62699 L 163.03857,775.37507 L 168.19156,775.95587 L 172.73392,773.75371 L 174.71887,776.18952 L 174.71887,778.6474 L 176.98738,780.58976 L 177.77293,783.23037 L 180.3301,776.78115 L 179.03863,772.57328 L 174.76407,770.39256 L 169.30035,770.39256 L 161.80535,763.20188 L 160.99475,758.40386 L 159.41297,757.79692 L 162.19996,753.12332 C 166.41347,752.76989 168.41941,752.17054 172.62995,752.71975 L 177.52803,753.40694 L 180.58768,752.42002 L 174.74229,745.77407 L 175.26762,744.25978 L 174.78959,743.28976 C 174.52673,742.75621 173.89285,741.0094 173.38096,739.40794 C 172.86912,737.80648 172.55378,735.45539 172.55417,734.56148 L 169.91864,721.05945 L 141.24983,728.39685 L 139.86745,727.767 C 139.1071,727.42059 138.37034,726.83827 138.23015,726.47298 L 137.97534,725.80887 L 139.10092,720.1162 C 142.09893,719.04643 143.96244,717.1516 145.92909,714.89578 L 141.07368,710.27692 L 139.0353,710.27692 L 137.67595,714.81395 L 136.40388,714.7624 L 130.99852,711.53419 L 130.07028,709.81295 L 133.22381,709.70979 L 134.19225,708.50623 L 142.47397,708.03563 L 145.43906,709.84261 L 150.13384,689.60508 L 159.50853,706.95751 L 160.44991,706.18248 C 160.9677,705.75616 162.09901,705.05315 162.96394,704.62021 C 163.82886,704.1872 165.27039,703.17737 166.16731,702.37613 L 167.79814,700.91929 L 168.19689,698.08365 L 171.03253,697.6849 L 172.60376,695.8993 C 173.4679,694.91726 176.70212,691.56167 179.79081,688.44246 C 182.87957,685.32326 186.60645,681.68654 188.07282,680.36088 L 190.73889,677.95058 L 197.54699,676.65554 L 202.73297,682.55839 C 206.42165,681.42612 207.91081,680.2939 212.46691,680.52472 L 211.74914,684.08045 L 213.83016,686.46489 L 213.22127,687.56438 L 213.72763,692.41236 L 212.44161,695.10055 L 215.18464,696.27718 C 214.96425,699.10993 217.90556,698.99747 219.05813,701.02172 L 219.70409,702.90424 L 222.72711,702.90424 L 225.30079,705.64382 C 227.12165,710.37123 224.0168,709.0577 224.75339,712.66986 L 226.04422,715.81879 L 228.66716,717.66655 L 228.31015,718.79133 C 228.11381,719.40996 227.93114,720.69088 227.9042,721.63775 L 227.85526,723.35939 L 224.6262,725.26681 L 225.18382,728.12225 C 227.7812,727.3214 229.17039,728.16246 231.14818,728.10512 L 233.1274,732.43038 L 234.0249,738.10184 L 216.56616,749.69236 L 216.01815,751.11018 C 215.71677,751.88999 215.44954,753.2389 215.42425,754.10786 L 215.37837,755.68765 L 214.89812,755.98449 C 214.63401,756.1477 214.41788,756.71994 214.41788,757.25604 L 214.41788,758.23077 L 210.96543,760.84903 L 209.12929,759.33355 L 208.65205,760.75137 L 207.04521,760.75137 L 206.96842,762.16919 L 206.35302,760.89315 C 206.01456,760.19133 205.52039,759.63475 205.25716,759.61711 C 204.87497,759.59154 204.80698,760.21748 204.82826,760.72041 C 203.17888,759.4928 202.72461,759.83455 202.23785,760.22218 C 201.80583,760.56626 202.52692,761.8972 203.35337,762.40796 L 201.09035,764.10804 L 199.1054,763.51057 C 199.00613,764.41701 199.34004,765.26833 198.80641,765.85553 C 198.55687,765.85553 197.88341,765.54094 197.4989,765.15637 L 196.79974,764.45727 L 196.12917,767.0216 L 194.22016,766.41568 L 191.09129,769.48714 L 191.22356,770.21221 C 191.48563,770.21221 191.31776,770.33585 190.59847,770.95969 C 189.87918,771.58353 189.07448,772.09395 188.81032,772.09395 L 188.32996,772.09395 C 188.23755,774.94275 187.7326,777.14695 186.8151,779.17069 L 182.81333,778.82593 L 180.8915,784.70144 L 183.2258,786.33648 L 183.2258,787.97355 L 179.2559,787.97355 z "},"ca21":{"name":"CA-21","path":"M 194.31441,766.8471 L 196.35767,767.39801 L 196.96585,765.30116 L 197.98963,765.93391 C 198.74636,766.3415 198.85106,766.27175 199.43332,765.40137 L 199.37172,763.91686 L 201.05646,764.5517 L 204.01233,762.50199 L 203.21351,761.89618 C 202.22274,761.14479 201.99174,758.80175 204.97479,761.13112 C 205.12511,759.75788 205.31357,759.75788 205.95978,760.9404 L 207.00891,762.60696 L 207.43983,761.3185 L 208.81782,761.16594 L 209.31372,760.00843 L 210.84463,761.30858 L 214.79428,758.46511 L 214.79428,757.52328 C 214.79428,757.00526 215.02396,756.43944 215.30469,756.26595 L 215.81511,755.95051 L 215.85325,753.62364 L 216.8069,749.99986 L 234.30066,738.41132 L 236.01645,740.59947 L 237.44786,740.17895 C 239.30554,742.64392 240.59103,744.76555 240.6177,746.29594 L 243.61396,746.38243 L 244.56172,748.08886 L 244.76558,750.21486 L 242.87145,751.76958 L 243.52137,754.74185 L 241.95832,754.74185 L 243.55143,756.9008 C 243.99703,757.34639 243.70161,757.23415 244.17715,757.23415 L 245.70923,757.19604 L 246.86289,761.37419 L 245.64754,762.60639 L 246.21776,769.62399 L 248.51439,769.63692 L 255.59547,775.59421 C 256.03421,781.4451 256.35851,784.53051 257.17871,785.28893 L 256.60994,790.52818 L 255.04126,790.62352 L 256.72257,799.01878 L 254.46823,799.00528 L 256.03268,800.86189 L 256.17987,803.90754 L 258.23751,805.83844 L 256.18883,807.87438 L 258.22931,809.47017 L 258.46036,814.34503 C 259.45555,814.95322 259.43924,815.49392 259.30156,817.01916 L 262.10184,817.50468 L 262.3256,819.28155 L 260.62306,819.25393 L 263.4753,823.15685 L 262.86632,824.95839 L 261.48956,824.78803 L 261.48956,831.03682 L 263.433,834.6796 L 261.97185,836.01531 C 263.37708,849.78207 263.91702,841.54549 263.77707,852.65452 L 262.19048,853.26339 L 261.47618,857.73038 C 236.3785,852.90797 213.93854,848.33283 187.29569,842.70691 L 193.48051,814.05149 L 196.09718,814.70822 L 197.80951,805.79818 L 194.95387,805.7764 L 196.46384,799.98692 L 193.1356,799.91484 L 188.72379,802.91887 L 185.22319,802.35781 L 183.81646,803.13959 C 181.26832,802.46153 178.67402,802.02825 176.07935,801.58906 L 179.24853,791.86989 L 184.54647,791.94345 L 185.15562,789.16662 L 187.04732,787.9385 L 188.53651,788.87908 L 188.54133,791.16892 L 190.84689,791.31553 L 192.12825,794.60816 L 195.60565,794.77909 L 198.59794,789.42529 C 197.90183,787.53249 196.89484,785.92139 195.47971,784.49149 L 192.29317,785.8399 L 188.88268,784.42718 L 188.53015,782.93938 C 188.33625,782.12107 187.81245,781.03031 187.36618,780.51541 L 186.55468,779.57925 C 187.86282,779.68876 188.56181,775.68648 188.76587,772.59795 C 189.89451,772.40071 191.13084,771.16703 191.82875,769.9468 L 191.58646,769.48487 L 194.31441,766.8471 z "},"ca18":{"name":"CA-18","path":"M 177.79265,782.25315 L 177.55451,780.60088 L 175.22898,778.48776 L 175.34977,776.11801 L 172.64783,773.29399 L 167.85848,775.36254 L 163.28889,774.84361 L 156.66205,768.91842 L 156.3758,759.70394 L 153.4975,756.04443 L 132.42598,769.82543 L 123.06993,762.13244 L 121.86276,756.78147 L 120.04373,756.81981 L 119.59379,755.57173 L 121.67731,754.04825 L 119.53158,751.67731 L 120.84164,751.67731 L 120.84164,749.92851 L 122.57995,747.0906 L 121.48597,745.71254 L 122.9689,744.08471 L 122.35581,741.1577 L 121.41024,741.09101 L 120.94849,739.48405 L 118.74678,739.80946 L 117.27877,738.04065 L 114.75788,739.69241 L 114.75788,735.24958 L 113.51644,733.75372 L 114.15174,731.32443 L 116.57803,730.97712 L 117.38108,725.33628 L 115.38042,723.47241 L 115.85046,719.44608 L 125.37867,713.15674 L 126.56357,703.34955 L 124.81154,700.39782 L 128.64204,699.40137 L 131.24698,688.58691 L 132.61019,690.45112 L 133.33169,694.96331 L 128.78144,704.01332 L 128.78144,705.82881 C 128.78144,706.82736 129.09904,708.55568 129.48724,709.66952 C 129.87544,710.78342 130.44965,711.88711 130.76328,712.12218 C 131.0769,712.35726 132.42502,713.18669 133.75902,713.96535 L 136.18457,715.38108 L 138.24308,715.38108 L 139.60243,710.84405 L 140.8251,710.84405 L 145.35703,714.95766 L 144.37816,715.9241 C 143.75472,716.62587 142.19251,717.81661 140.90654,718.57021 L 138.56856,719.94039 L 137.40821,725.80887 L 137.67947,726.5158 C 137.82868,726.90462 138.55188,727.61659 139.2866,728.09803 L 140.62241,728.97328 L 169.50945,721.74239 C 170.14735,725.77564 171.24009,729.73715 171.57635,733.81276 L 171.73679,736.08127 C 172.64634,739.14632 174.05229,741.57942 174.46865,744.75823 L 174.08125,746.0966 L 179.5001,751.88982 L 176.64575,752.65317 L 171.11141,751.73215 L 162.30471,752.14712 L 158.73972,758.26939 L 160.73511,759.06382 L 161.43538,763.35784 L 169.18647,770.95969 L 174.68042,770.95969 L 178.44133,772.75318 L 179.76291,776.98759 C 179.12629,778.74914 178.61989,780.56951 177.79265,782.25315 z "},"ca16":{"name":"CA-16","path":"M 105.93994,745.42364 L 102.61292,743.39253 L 99.192294,736.724 L 95.226974,734.68489 C 94.744124,732.24317 94.586374,730.51672 94.753724,727.94496 L 97.739884,724.3961 C 96.819994,723.54586 96.211274,723.24052 95.158304,721.94423 L 95.320854,721.03076 L 98.656194,721.07907 L 98.974294,719.13564 L 100.69749,719.14602 L 103.25859,722.41965 L 103.94762,728.36526 L 101.55927,731.72658 L 101.55927,733.48927 L 102.65626,734.07636 C 103.25958,734.39928 104.28041,734.66345 104.92478,734.66345 L 106.0963,734.66345 L 106.0963,736.1926 L 101.46174,738.49855 L 103.37551,740.83687 L 106.76167,740.86937 L 107.73955,742.20485 C 107.1814,743.30247 106.63285,744.4112 105.93994,745.42364 z "},"il16":{"name":"IL-16","path":"M 1680.8178,492.71078 C 1648.276,497.10563 1615.4663,498.26063 1582.9703,503.02543 L 1582.6159,503.36217 L 1583.7501,504.19514 L 1587.4365,507.11939 L 1590.3075,507.84603 L 1594.9155,512.01088 L 1594.3306,515.67949 L 1596.7941,518.53286 L 1604.7339,521.49256 L 1605.3719,522.30781 C 1605.7182,522.75824 1606.2925,523.12305 1606.6479,523.12306 C 1607.0035,523.12306 1607.3019,523.18685 1607.3214,523.26484 L 1607.9417,528.49306 L 1609.0405,529.82227 L 1608.4734,543.75236 L 1607.5319,544.78028 L 1607.3392,552.04662 L 1612.3901,552.04662 L 1612.3901,546.49939 L 1622.1199,545.13474 L 1621.3933,540.91672 L 1624.353,539.56979 L 1628.6242,539.56979 C 1629.8225,540.77597 1630.8958,542.17743 1632.4168,542.97256 L 1632.9485,542.97256 L 1632.4168,534.69603 L 1641.0301,533.40227 C 1647.5854,534.16442 1648.2216,533.89072 1668.465,531.02741 L 1669.2093,526.06504 L 1673.3564,525.28524 L 1674.9116,523.82578 L 1675.9817,525.32068 L 1678.6733,524.71811 L 1678.1948,513.62365 L 1695.3004,511.62098 L 1695.0669,506.78266 C 1691.0065,506.78692 1690.6366,506.44097 1688.7044,505.82563 L 1688.3145,508.25365 C 1686.5392,508.45991 1684.7525,508.9643 1682.9622,508.82078 C 1682.0019,503.48956 1681.6107,498.06918 1680.8178,492.71078 z "},"il17":{"name":"IL-17","path":"M 1624.2289,540.13692 L 1622.0313,541.32434 L 1622.7225,545.66642 L 1612.9572,547.0488 L 1612.9572,552.61375 L 1606.7188,552.61375 L 1606.9138,544.97524 L 1602.7312,548.66157 L 1603.4401,551.49722 L 1602.0932,553.10999 L 1602.873,558.19642 L 1599.6297,559.91553 L 1596.9536,563.3892 L 1592.5938,563.3892 L 1591.8494,564.27533 C 1591.4472,564.76485 1590.5342,565.72189 1589.8113,566.40207 C 1589.0884,567.08228 1587.6847,567.95002 1586.6921,568.31615 L 1584.8844,568.97187 L 1579.9574,569.06051 L 1576.7319,571.34672 L 1573.5418,570.73575 L 1571.0606,572.46328 L 1569.3947,582.29939 L 1572.8861,586.6415 L 1574.9419,586.6415 L 1577.9548,591.42665 L 1578.4156,601.67041 L 1574.3925,606.06566 L 1574.3925,606.77457 C 1574.3925,607.16509 1574.0307,607.77759 1573.595,608.13919 L 1572.8152,608.79497 L 1572.0176,618.87919 L 1569.5719,621.09457 L 1567.3211,621.50216 C 1566.0842,621.7234 1564.395,622.25973 1563.5639,622.68962 L 1562.0574,623.46942 L 1559.7358,627.38612 L 1561.7916,629.22929 L 1561.7384,638.2493 L 1558.6015,638.51693 L 1557.9812,641.45801 C 1557.6434,642.65493 1557.2045,645.48649 1557.0065,647.74962 L 1556.652,651.8613 L 1557.6622,655.68942 C 1558.2214,657.79341 1559.15,660.45392 1559.718,661.59107 C 1560.2861,662.72822 1561.1729,664.0916 1561.703,664.6217 L 1562.6778,665.57873 L 1561.3308,669.30051 L 1561.6321,670.08031 C 1561.8005,670.51042 1562.8334,671.43144 1563.9184,672.13615 L 1565.8856,673.42989 L 1565.8856,677.91378 C 1568.1104,679.57586 1570.4381,681.12395 1572.4253,683.07107 C 1572.6342,683.40914 1573.4025,683.91235 1574.1267,684.18764 L 1575.4382,684.70157 L 1576.9623,687.87397 L 1579.479,688.22843 L 1580.5246,689.75259 C 1581.1041,690.5895 1581.7347,691.70595 1581.9247,692.23378 L 1582.2792,693.1908 L 1583.5729,694.00605 L 1594.118,700.15583 L 1599.293,704.97642 L 1599.8778,707.59939 C 1600.2009,709.0408 1600.9038,711.14145 1601.4374,712.26051 L 1602.4122,714.2986 L 1601.1716,717.59503 L 1601.9514,718.62295 C 1602.3815,719.18367 1603.0074,720.65401 1603.3515,721.9017 L 1603.9895,724.17021 L 1606.9315,727.28942 L 1609.2709,727.25397 L 1610.3166,725.8007 C 1610.8962,725.00525 1611.5667,723.67324 1611.7875,722.84097 L 1612.1774,721.33457 L 1616.3069,720.98011 C 1616.5758,715.98847 1616.5594,713.75608 1615.6865,708.57417 L 1611.7736,708.3839 L 1611.7036,704.18635 L 1609.6608,702.01675 L 1608.8633,696.66447 L 1612.3901,696.66447 L 1613.5776,694.53774 L 1615.5093,696.69991 L 1625.7531,695.28209 L 1628.3938,717.61278 L 1644.8582,715.94684 L 1644.1671,720.34209 L 1648.6155,721.051 L 1648.9699,715.66328 L 1654.3576,714.6885 L 1654.8362,712.56177 L 1669.6701,711.26803 L 1669.6701,707.63484 L 1675.0578,706.48288 L 1680.5519,706.99682 L 1679.7544,698.45444 L 1684.9826,697.67464 L 1684.256,690.99318 L 1678.177,690.99318 L 1677.4681,684.18764 L 1672.9489,684.18764 L 1674.3489,699.50011 L 1668.465,700.22672 L 1667.8447,697.79873 L 1664.566,697.79873 L 1664.566,703.85991 L 1647.6939,704.60427 L 1645.1772,683.6914 L 1641.0301,683.33694 L 1640.6934,679.26071 L 1644.1493,675.55662 L 1644.1493,672.27793 L 1646.5596,670.38157 L 1647.3572,667.03199 L 1652.7626,664.26724 L 1663.7153,663.09754 L 1664.7964,662.06962 L 1666.799,662.08731 C 1667.9063,662.09208 1669.1285,662.28751 1669.5106,662.53041 L 1670.2018,662.97345 L 1671.3715,671.85259 L 1676.0326,671.14368 L 1675.2528,663.82414 L 1677.4327,661.48474 L 1682.4837,663.20387 C 1683.0741,662.51963 1683.4884,661.71335 1683.9015,660.89991 L 1679.9139,658.87952 L 1681.633,658.52506 L 1678.691,657.55028 L 1677.734,658.04652 C 1668.8151,660.34617 1661.1489,660.3511 1651.3093,663.31021 L 1649.413,664.74573 L 1646.2406,667.7586 L 1646.0457,670.04486 L 1643.3873,672.27793 L 1641.9163,672.27793 L 1640.1794,675.62751 L 1640.1794,684.01041 L 1604.539,687.78533 L 1603.3338,690.42605 L 1587.5605,690.42605 L 1586.7984,685.28645 L 1581.198,686.0308 L 1581.198,680.78486 L 1574.9596,680.78486 L 1574.9596,675.82249 L 1569.5896,676.15919 L 1567.6756,647.8914 L 1583.9628,646.6685 L 1583.3425,641.33397 L 1605.5137,639.9516 L 1606.2758,645.02031 L 1617.2107,644.34685 L 1618.8944,642.57457 C 1619.822,641.60166 1621.044,639.96856 1621.606,638.94137 L 1622.6339,637.06276 L 1623.3251,631.97635 L 1629.2799,626.60632 L 1630.6269,621.64395 L 1629.8648,616.13219 L 1624.3707,616.13219 L 1624.0163,611.3116 L 1613.3294,611.79009 L 1612.9041,606.63279 L 1623.2188,605.21497 L 1622.882,600.53615 L 1611.9471,600.89061 L 1610.5824,590.6114 L 1605.5846,590.6114 L 1605.5846,584.37299 L 1626.462,582.54751 C 1626.2277,579.23764 1626.3282,575.87802 1625.7531,572.60506 L 1620.897,573.13675 L 1620.897,578.54217 L 1610.2634,579.26883 L 1609.4481,574.97992 L 1599.5057,575.4584 L 1598.7081,569.43266 L 1603.2806,568.45794 L 1602.554,562.69801 L 1609.0405,559.82692 L 1609.714,556.53048 L 1612.78,554.93543 L 1614.6055,552.17068 L 1618.1677,550.20345 C 1620.1336,549.11789 1622.4496,548.06813 1623.3073,547.86405 L 1624.8669,547.49187 L 1624.8669,546.09177 L 1631.0877,542.74217 L 1628.6419,540.13692 L 1624.2289,540.13692 z "},"il18":{"name":"IL-18","path":"M 1657.6186,566.13622 C 1657.1568,566.90884 1656.0748,567.31846 1654.3931,567.35912 L 1650.3877,571.36447 L 1650.2992,575.08625 L 1626.9582,577.67378 L 1627.2418,583.23873 L 1606.1517,585.04645 L 1606.1517,590.04427 L 1610.9208,590.09004 L 1612.2677,600.3515 L 1623.2204,600.01479 L 1623.7401,605.41613 L 1613.2499,606.90767 L 1613.6158,611.41623 L 1624.3868,610.63643 L 1624.8669,615.56506 L 1630.3307,615.5193 L 1631.1586,621.62625 L 1629.7762,626.64222 L 1623.839,632.31351 L 1623.077,637.57675 C 1621.7986,639.93385 1619.826,642.291 1617.831,644.6481 L 1605.7087,645.35702 L 1605.0352,640.32375 L 1583.9628,641.86566 L 1584.6895,647.18249 L 1568.3136,648.35219 L 1569.8555,675.78704 L 1575.2432,675.39714 L 1575.5976,680.21774 L 1581.7652,680.21774 L 1581.7652,685.42823 L 1587.2947,684.66612 L 1588.0745,689.85892 L 1603.1388,689.85892 L 1604.3263,687.23595 L 1639.6123,683.42553 L 1639.6123,675.71615 L 1641.4378,672.02982 L 1643.3695,672.02982 L 1645.8507,669.83219 L 1645.8507,667.7409 L 1650.4409,663.16843 C 1660.5986,660.18851 1670.6938,659.42124 1677.2909,657.83385 L 1678.6733,657.0009 L 1682.2178,658.38328 L 1687.96,657.47939 L 1686.4004,645.26843 L 1668.0042,647.78506 L 1666.037,633.16375 L 1660.986,633.81952 L 1658.558,614.28902 L 1664.7255,613.33199 L 1666.5687,611.20526 L 1668.7131,611.2584 L 1668.2523,608.47596 L 1671.1411,608.36962 L 1670.5031,603.03504 L 1668.2168,602.71603 L 1664.9736,582.10447 L 1659.9935,582.10447 L 1657.6186,566.13622 z "},"oh12":{"name":"OH-12","path":"M 1958.242,611.97803 L 1956.0196,609.77309 L 1957.8016,606.774 C 1957.1021,604.45751 1956.1315,602.47987 1954.2522,601.63808 L 1952.5918,602.06893 L 1951.0996,600.02801 L 1947.8884,606.07371 L 1945.0635,605.42163 L 1945.0374,603.56814 L 1946.5706,602.04874 L 1945.0672,594.48512 L 1941.4,594.91324 L 1939.4978,583.361 C 1944.1262,582.51139 1949.2597,582.46999 1954.3688,582.3894 L 1954.7771,585.59747 L 1963.4428,584.70606 L 1963.4428,589.52989 L 1976.4822,587.60188 L 1977.0041,588.56316 L 1982.158,588.43822 L 1983.1743,597.42466 L 1980.056,600.76283 L 1974.6923,602.11339 L 1975.4639,608.93726 L 1965.1472,610.08161 C 1963.9661,609.21084 1962.6224,608.12229 1961.2307,607.62662 C 1960.4304,607.43425 1959.8158,608.05866 1960.1663,608.90584 L 1962.2683,612.38642 L 1958.242,611.97803 z "},"pa18":{"name":"PA-18","path":"M 2071.4808,587.77383 L 2065.1368,556.58502 L 2066.0403,556.57634 C 2066.5372,556.57157 2067.3172,556.33144 2067.7737,556.04273 L 2068.6036,555.5178 L 2066.7466,551.62357 L 2069.4627,550.38601 L 2070.0618,552.61088 C 2070.3913,553.83456 2070.8953,554.98059 2071.1817,555.15763 L 2071.7025,555.47952 L 2076.7479,548.65707 L 2087.9275,557.71205 L 2091.2121,557.02571 L 2090.6035,559.3529 L 2094.0284,560.54681 L 2095.3461,561.96869 C 2096.0709,562.75072 2096.8993,563.39057 2097.1872,563.39057 L 2097.7105,563.39057 L 2098.4233,559.82641 L 2100.3328,558.43014 L 2097.7537,557.61155 L 2100.1208,555.95358 L 2100.1208,553.30848 L 2096.1907,552.57119 L 2095.4702,551.4054 L 2096.0537,550.82184 L 2098.6132,552.1916 L 2099.9225,550.40095 L 2102.4211,551.05434 L 2101.694,553.34539 L 2104.7029,552.94623 C 2106.3579,552.7267 2107.918,552.41972 2108.1698,552.26407 L 2108.6277,551.98106 L 2108.6277,549.40623 C 2106.7476,548.44178 2104.6853,547.75151 2102.9564,546.52604 L 2104.1341,544.10154 L 2107.5518,545.86888 L 2108.188,547.52671 L 2113.1569,548.77791 L 2112.7995,551.12186 C 2112.603,552.41104 2112.2427,553.85684 2111.9989,554.33475 L 2111.5557,555.2037 L 2113.5763,557.88241 L 2114.2212,557.48381 C 2114.5759,557.26458 2114.8661,556.72947 2114.8661,556.29468 C 2114.8661,555.85988 2115.1623,554.85411 2115.5243,554.05963 L 2116.1824,552.61512 L 2117.2609,552.61512 L 2116.5161,556.58502 L 2123.0962,556.58502 L 2124.5381,553.32743 L 2132.8179,556.73561 L 2132.2068,559.44908 C 2131.8707,560.94149 2131.4045,562.35379 2131.1707,562.58752 C 2130.937,562.82125 2130.7457,563.59996 2130.7457,564.31798 L 2130.7457,565.62348 L 2129.0295,564.96489 L 2126.4923,570.68579 L 2124.5047,571.2249 L 2124.0806,570.53539 C 2123.8474,570.1562 2122.3806,569.22288 2120.821,568.46145 L 2117.9854,567.0769 L 2117.6411,565.09195 C 2117.4517,564.00023 2117.2061,562.8518 2117.0952,562.53987 C 2116.9844,562.22795 2117.2228,561.37859 2117.625,560.65239 L 2118.3563,559.33204 L 2117.705,557.63501 L 2115.3472,559.50271 L 2113.2468,558.85252 L 2111.4634,560.63594 L 2111.4807,564.80839 L 2112.5495,566.49877 L 2110.7906,569.18312 L 2111.4106,569.80305 C 2111.7515,570.14401 2112.0305,570.61915 2112.0305,570.85888 L 2112.0305,571.29477 L 2110.4438,570.68596 L 2109.661,571.95258 L 2107.9304,570.51633 L 2105.5085,570.47969 L 2105.7473,569.629 C 2105.8786,569.16112 2105.9997,568.14029 2106.0163,567.36049 L 2106.0466,565.94265 L 2107.7663,564.62414 L 2106.212,563.18374 C 2105.3572,562.39152 2104.6539,561.53975 2104.6491,561.29092 C 2104.6444,561.04208 2104.423,560.49541 2104.1573,560.0761 L 2103.6741,559.31371 L 2100.3071,561.05484 L 2100.1471,565.31197 L 2097.2507,567.64405 L 2097.0016,571.35642 L 2095.3002,571.00281 L 2095.6019,567.25903 L 2094.4585,566.96002 C 2093.8298,566.79561 2093.3153,566.46537 2093.3153,566.22621 C 2093.3153,565.98705 2093.5567,565.65118 2094.2119,565.47984 L 2095.4712,564.94168 L 2095.1212,564.47383 L 2089.4399,563.63884 L 2088.7412,564.04751 L 2091.157,567.95642 L 2090.5152,569.629 L 2087.7829,569.629 L 2087.0768,568.77831 C 2086.6885,568.31043 2086.0831,567.9292 2085.7314,567.93113 C 2085.3796,567.933 2084.3907,568.30033 2083.5338,568.7474 L 2081.9757,569.56015 L 2080.7333,567.23872 L 2079.4773,568.49474 L 2076.4228,568.49474 L 2075.7383,570.27831 L 2076.3034,571.33419 C 2076.6142,571.91493 2076.8685,572.91727 2076.8685,573.56164 L 2076.8685,574.73316 L 2077.6787,574.73316 C 2078.1243,574.73316 2078.8671,574.35488 2079.3295,573.89262 C 2079.7918,573.43029 2080.2566,572.8136 2080.3624,572.52215 L 2080.5549,571.99228 L 2084.5248,571.30634 L 2086.1808,572.39523 L 2084.9223,578.4195 L 2087.7636,580.73338 L 2086.1043,582.11054 L 2080.3176,582.45524 L 2079.2573,583.41476 C 2078.6741,583.94253 2077.9619,584.38472 2077.6746,584.39737 C 2077.3872,584.41008 2076.2685,585.1757 2075.1886,586.09876 L 2073.225,587.77712 L 2071.4808,587.77383 z "},"pa19":{"name":"PA-19","path":"M 2231.2339,528.74118 C 2231.1375,528.74248 2230.1631,529.43368 2228.6286,530.21217 C 2227.0942,530.99066 2225.4991,531.62998 2225.0841,531.62999 L 2224.322,531.62999 L 2224.3752,535.44038 L 2219.7141,539.07355 L 2214.0251,539.46345 L 2215.6556,543.18524 L 2218.6684,540.52682 C 2219.883,542.19923 2220.7896,543.9787 2221.5395,546.32217 L 2219.2001,548.67929 L 2220.3521,550.84147 L 2212.6427,554.58098 L 2210.6932,551.31999 L 2208.1057,550.66424 L 2207.7689,551.53266 L 2209.2222,554.10246 L 2211.7388,554.77593 L 2215.6733,570.54922 L 2271.057,556.74316 C 2267.9709,553.67657 2263.0333,550.61161 2261.8057,547.54504 L 2256.9319,546.269 L 2252.962,540.75722 L 2251.8809,541.8383 L 2246.9362,541.89147 L 2243.9411,538.13425 L 2243.0904,539.51662 L 2241.2295,535.59989 L 2236.7988,534.89098 L 2232.2086,531.48821 L 2231.2339,528.74118 z "},"oh16":{"name":"OH-16","path":"M 1980.0424,567.99028 L 1978.0474,557.71928 L 1975.9196,557.71928 L 1975.9196,554.88364 L 1973.4956,552.45962 C 1973.1234,550.90284 1972.7527,549.34088 1972.654,547.75187 C 1976.8895,547.00046 1981.2193,546.88433 1985.4507,546.1087 L 1984.8708,539.63395 L 1982.4633,539.2876 L 1981.1949,531.53007 L 1985.4889,530.49354 L 1984.8722,526.69327 L 1988.5812,525.95148 L 1990.7518,527.91582 L 1992.6936,525.34156 C 1995.7008,524.53647 1998.7521,523.87244 2001.7064,522.88907 L 2004.37,536.16839 L 2006.4727,536.16839 L 2006.8281,539.85473 C 2010.8421,539.91478 2014.4579,539.44395 2018.0289,538.91328 L 2017.3438,533.9155 L 2031.7506,531.16473 L 2034.9961,546.2657 L 2028.024,547.90789 L 2028.7334,552.44431 L 2020.458,553.74938 L 2010.5145,557.07777 L 2010.5145,554.8072 L 1983.7742,560.21283 L 1984.5209,566.64668 L 1980.0424,567.99028 z "},"pa16":{"name":"PA-16","path":"M 2271.5302,556.65397 L 2270.4695,555.3406 C 2269.8861,554.61824 2268.6431,553.54757 2267.7073,552.96132 C 2266.7716,552.37508 2265.2091,551.07048 2264.2352,550.06222 C 2263.2613,549.05395 2262.368,547.97966 2262.2502,547.6749 L 2262.036,547.1208 L 2257.0359,545.52601 L 2253.0219,539.85069 L 2251.6824,541.27255 L 2247.2193,541.27255 C 2246.1028,540.08958 2244.8415,538.9933 2244.1715,537.49337 C 2245.67,535.49972 2250.788,531.6446 2254.0962,528.72022 L 2260.9018,525.54307 L 2269.6923,517.11898 L 2269.6923,515.18463 L 2273.7021,515.18463 C 2272.1409,517.44969 2270.9933,519.3011 2270.2594,521.97983 L 2281.8855,527.8179 L 2278.881,530.06584 L 2280.5787,534.12891 L 2279.9561,536.20692 C 2279.6136,537.34983 2279.3335,538.81448 2279.3335,539.46171 L 2279.3335,540.63848 L 2280.4518,541.32967 L 2286.5981,538.13055 L 2293.2298,538.73952 L 2294.5442,540.70542 L 2296.3754,540.70542 L 2297.4886,537.77758 L 2298.822,538.22208 L 2299.0049,542.59026 C 2294.5478,544.85602 2292.4174,547.48373 2292.0451,551.45584 L 2271.5302,556.65397 z "},"oh17":{"name":"OH-17","path":"M 2043.532,500.63286 L 2030.6653,503.0786 L 2032.4907,512.68434 L 2015.2465,515.94533 L 2016.3807,523.69019 L 2013.8818,526.36632 L 2010.8158,525.78147 L 2009.2207,524.1687 L 2008.2991,525.65741 L 2010.0537,527.5892 L 2011.5069,527.02207 L 2014.4667,532.1085 L 2013.7755,535.58217 L 2015.7774,538.71746 L 2017.4441,538.43553 L 2016.6997,533.41999 L 2035.4681,529.69821 L 2033.7667,520.51781 L 2043.8687,518.49741 L 2044.3118,519.82662 C 2044.557,520.551 2044.6969,521.4892 2044.6131,521.91791 L 2044.4536,522.69771 L 2052.4465,521.31533 L 2054.396,525.39157 L 2057.2787,524.86279 C 2055.6159,517.92057 2054.4694,510.32794 2052.7655,503.39761 L 2044.5954,504.97494 L 2043.532,500.63286 z "},"pa17":{"name":"PA-17","path":"M 2243.2001,538.69552 L 2241.3556,535.12859 L 2239.5409,534.73002 C 2238.5428,534.51081 2236.8157,533.82893 2235.7029,533.21474 C 2234.5901,532.60055 2233.3555,531.78741 2232.9594,531.40775 C 2232.5632,531.02809 2232.1217,530.10789 2231.9782,529.36285 C 2231.8347,528.6178 2231.3627,527.65358 2230.9293,527.22012 L 2230.1411,526.43202 L 2221.701,528.83869 L 2219.6597,526.5831 L 2216.9493,528.35904 L 2216.9493,534.467 L 2215.8342,534.467 L 2212.9872,528.84891 L 2214.1925,525.67891 L 2210.0477,522.78583 L 2216.475,516.98668 L 2218.8151,519.31452 L 2218.0071,521.99017 L 2220.7071,521.91985 L 2220.9203,520.9624 L 2223.1877,521.55533 L 2223.1877,520.88478 C 2223.1877,520.51597 2222.9424,519.7558 2222.6425,519.1955 L 2222.0973,518.17679 L 2223.4932,516.86542 C 2224.261,516.14416 2224.8891,515.2666 2224.8891,514.91527 C 2224.8891,514.56395 2225.1378,513.94119 2225.5277,513.10164 L 2226.3069,511.22357 L 2228.2108,511.21473 L 2229.0615,510.36403 C 2229.5294,509.89615 2230.1937,509.51334 2230.5377,509.51334 L 2231.7767,507.91432 L 2236.9327,505.26902 L 2252.0658,492.78304 L 2252.1113,486.86667 L 2254.0923,482.71245 L 2263.386,483.42683 L 2264.0829,482.29925 C 2268.2387,485.15584 2273.0273,487.66084 2277.3237,490.16584 L 2268.2064,499.33661 L 2268.558,499.84303 L 2271.9046,501.57361 L 2280.4376,499.3717 L 2278.5415,504.54356 L 2280.7292,506.14326 L 2283.5869,505.54545 L 2284.2302,505.96979 C 2284.5841,506.20318 2284.9695,506.90455 2285.0867,507.52839 L 2285.2999,508.66265 L 2287.7337,509.01112 L 2288.435,511.80513 L 2287.7692,513.06953 C 2287.403,513.76495 2286.8227,514.52143 2286.4795,514.7506 C 2286.1362,514.97976 2285.3104,515.17117 2284.6442,515.17595 C 2283.9781,515.18072 2282.702,514.80339 2281.8086,514.33743 L 2280.1842,513.49023 L 2276.9904,513.48324 L 2274.5129,514.84983 L 2269.4341,514.90106 L 2268.9991,517.10841 L 2260.9018,524.98118 L 2257.7826,526.41239 C 2256.067,527.19956 2253.4282,528.75966 2251.9184,529.87927 C 2250.4087,530.99888 2248.0173,532.93278 2246.6042,534.17682 L 2244.0349,536.43872 L 2243.2001,538.69552 z "},"nj12":{"name":"NJ-12","path":"M 2328.1124,508.04012 L 2324.4202,504.55311 L 2321.301,503.82045 L 2321.301,502.22299 L 2318.3721,499.91915 L 2315.1672,500.56015 L 2314.6136,499.50724 C 2314.3091,498.92814 2313.8861,497.40342 2313.6734,496.11898 L 2313.3381,494.60354 L 2314.924,493.15539 L 2318.6803,487.35829 L 2320.9124,489.59037 L 2318.9725,492.55119 L 2319.6666,494.73841 L 2321.1274,495.88746 C 2321.9308,496.51944 2322.9421,497.03651 2323.3746,497.03651 L 2324.161,497.03651 L 2325.4529,494.20087 L 2326.7277,494.20087 L 2327.658,495.77574 C 2328.1697,496.64192 2329.0682,497.78493 2329.6548,498.31576 L 2330.7213,499.28091 L 2334.6285,497.18563 L 2334.7057,495.83503 C 2334.7482,495.0922 2335.1251,493.64958 2335.5435,492.6292 L 2336.3041,490.77397 L 2334.9903,488.67026 L 2336.7282,486.1891 L 2338.925,488.17713 L 2338.2484,491.25724 L 2339.3108,491.91385 L 2344.0419,489.38027 L 2346.6802,492.39807 L 2348.2912,490.787 L 2350.2863,492.24584 L 2349.5754,494.09851 L 2346.8937,494.77156 L 2347.2151,496.89651 L 2347.5366,499.02146 L 2348.0495,499.9473 L 2348.9288,499.43487 C 2349.074,499.03841 2349.9483,498.32332 2350.8718,497.84579 L 2352.5508,496.97753 L 2351.8066,494.63284 L 2353.3037,491.83558 L 2354.8552,491.03328 C 2355.7085,490.59201 2356.7849,490.23097 2357.2473,490.23097 L 2358.0879,490.23097 L 2358.4191,491.22344 C 2358.6012,491.7693 2359.2147,492.81802 2359.7825,493.55394 L 2360.8148,494.89196 L 2363.2302,490.79809 L 2364.3969,492.78986 L 2363.0502,497.03651 L 2361.7121,497.03651 L 2360.7773,501.44507 L 2359.5822,495.61869 C 2357.7582,495.40168 2355.9286,494.97472 2354.09,495.13376 L 2353.702,495.35591 L 2354.3534,499.36966 L 2351.8795,500.01657 L 2352.3329,501.28997 L 2356.1633,500.96583 L 2355.6042,501.47786 C 2355.2967,501.75949 2353.8017,502.40179 2352.2819,502.9052 L 2349.5186,503.82049 L 2346.4041,501.6027 L 2344.3692,503.85124 L 2342.2802,501.9607 L 2339.4491,503.25061 L 2339.4491,504.89529 L 2338.2509,506.65725 L 2333.8563,506.56793 L 2332.6436,509.51334 L 2328.1124,508.04012 z "},"ny16":{"name":"NY-16","path":"M 2359.8372,464.39949 L 2359.3202,463.57592 L 2359.062,461.50925 L 2359.6857,458.87836 L 2360.9341,458.94006 L 2361,461.16852 L 2362.9525,462.80078 L 2361.0461,464.59715 L 2359.8372,464.39949 z "},"mi12":{"name":"MI-12","path":"M 1914.1449,460.46932 L 1914.0948,459.46423 C 1914.0906,459.07433 1913.9467,458.23291 1913.7752,457.5944 L 1913.4634,456.43349 L 1916.4449,454.83784 L 1917.3933,456.37256 L 1922.1396,453.9471 L 1921.3267,451.24458 L 1928.8981,449.21578 L 1927.7434,444.72448 L 1933.0636,443.20639 L 1933.4991,443.89175 C 1933.7387,444.26869 1933.9386,444.88714 1933.9434,445.26606 L 1933.9521,445.95502 L 1935.0863,446.56206 C 1935.7102,446.89592 1936.2206,447.38555 1936.2206,447.65012 L 1936.2206,448.13115 L 1933.9658,448.72081 L 1932.7315,451.94978 L 1933.1279,456.16696 C 1924.7693,458.34153 1921.9323,459.33138 1914.1449,460.46932 z "},"ny17":{"name":"NY-17","path":"M 2346.8041,442.02365 C 2346.2692,442.02365 2345.0865,442.17929 2344.1811,442.36039 L 2342.5329,442.6794 C 2341.8183,443.86596 2341.1508,445.41839 2340.6188,446.61385 L 2358.1821,451.57623 L 2358.1821,456.21959 L 2358.1644,458.47039 L 2360.6278,458.47039 L 2362.7014,456.59177 L 2362.7014,455.06761 L 2361.5317,455.06761 C 2360.8873,455.06761 2359.8666,455.32957 2359.2632,455.65246 L 2359.0859,455.74108 L 2359.2632,451.87751 L 2359.4936,448.95326 L 2357.7745,448.58108 C 2356.8774,447.3226 2355.8135,445.68449 2354.9566,444.3985 L 2351.6424,445.85177 L 2349.0726,444.89474 L 2347.7788,442.02365 L 2346.8041,442.02365 z "},"ny19":{"name":"NY-19","path":"M 2361.3368,401.72207 L 2357.1364,402.89177 C 2357.69,405.01277 2358.3229,407.11714 2358.7315,409.27197 L 2358.7315,409.69732 L 2355.5002,409.69732 L 2350.7208,412.60385 L 2346.8218,411.31009 L 2346.8218,407.4288 L 2342.9428,407.4288 L 2345.0849,416.2193 L 2344.4115,422.67039 L 2336.5071,424.01732 L 2335.3552,427.3492 L 2332.3246,426.67573 L 2326.1925,431.24821 L 2322.4352,431.24821 L 2322.4352,428.97969 L 2322.0099,428.97969 L 2311.0572,432.4888 L 2311.4294,433.71167 C 2311.6379,434.3839 2312.1655,435.14222 2312.5991,435.39534 L 2313.3789,435.85613 L 2312.7232,436.93722 L 2313.7511,437.29167 C 2314.3167,437.49191 2315.2894,438.10106 2315.9133,438.6386 L 2317.0475,439.61336 L 2339.8922,446.4189 L 2342.3202,442.09454 C 2344.2038,441.75386 2346.179,441.68158 2347.956,440.94256 L 2351.4651,438.53227 L 2354.1059,441.01346 L 2355.3287,440.25138 L 2355.3287,438.17781 L 2359.9012,436.35237 L 2361.5671,437.20306 C 2362.4759,437.67301 2363.5257,438.05374 2363.9065,438.05375 C 2364.2874,438.05375 2365.0331,437.65583 2365.5725,437.16761 L 2366.5649,436.28148 L 2367.6815,437.45118 L 2371.4033,433.56989 L 2366.9548,428.69613 L 2361.3368,401.72207 z "},"ny18":{"name":"NY-18","path":"M 2359.8835,436.90177 L 2355.8958,438.56771 L 2355.8958,440.18049 L 2354.159,441.61603 L 2351.4651,439.0994 L 2348.5232,441.01346 L 2348.5232,441.98821 C 2348.5232,442.51656 2348.8422,443.33974 2349.2321,443.83138 C 2349.622,444.32299 2350.3238,444.85204 2350.7917,445.00108 L 2351.6424,445.26692 L 2353.2552,444.45167 C 2354.1419,444.00359 2354.9538,443.73998 2355.0629,443.8491 L 2358.1644,448.31524 L 2359.7786,448.48865 L 2359.2632,455.08534 C 2359.8665,454.76244 2360.9113,454.50047 2361.5849,454.50048 L 2362.8077,454.50048 L 2363.0632,455.78072 L 2364.0733,456.0772 L 2364.4028,455.15623 L 2367.1675,451.87751 L 2367.9119,448.90009 L 2362.5419,443.14019 C 2364.0734,441.23459 2365.7702,439.47181 2367.4511,437.6993 L 2366.5344,436.56831 L 2365.537,437.77019 L 2364.0129,438.62088 C 2363.5677,438.62088 2362.4656,438.22624 2361.5494,437.75247 L 2359.8835,436.90177 z "},"ny22":{"name":"NY-22","path":"M 2305.8875,436.17163 L 2304.2365,434.5207 L 2300.8844,435.19112 L 2300.8844,433.59453 L 2298.6158,432.87453 L 2298.6158,431.38003 L 2295.8167,429.54594 L 2296.3304,428.13037 L 2293.7089,419.62344 L 2291.5012,418.48918 L 2291.8934,416.50423 L 2290.0733,416.50423 L 2289.4204,414.80285 L 2286.7731,414.80285 L 2286.1027,413.71813 C 2285.2213,413.98571 2284.4407,414.35106 2283.7802,414.99524 L 2283.4063,415.55393 C 2282.4119,414.59302 2281.6741,413.43598 2281.0112,412.23053 L 2280.1369,410.54938 L 2278.1018,410.54124 L 2276.6563,408.56443 L 2275.8114,408.56443 L 2222.6206,422.25196 L 2222.6203,420.9377 L 2220.3721,413.70915 L 2220.9543,412.19203 L 2217.6368,398.21386 L 2216.9991,397.81977 C 2216.6484,397.60301 2216.1385,396.6483 2215.866,395.69818 L 2215.3706,393.97067 L 2219.2475,392.1219 L 2219.7998,393.57454 C 2220.1036,394.37349 2220.3521,395.24755 2220.3521,395.51688 L 2222.337,397.97001 L 2225.8801,410.54938 L 2224.4285,412.10368 C 2224.6623,414.13573 2226.3114,415.54295 2226.824,417.4117 L 2226.9822,418.48918 L 2227.9206,418.44193 L 2231.1275,418.20562 L 2231.1275,414.80285 L 2232.5802,414.80285 L 2233.8806,411.35775 L 2236.6751,412.05911 L 2237.4329,410.83295 C 2238.5591,410.84933 2239.7065,410.89495 2240.7687,410.5863 C 2240.7687,410.45065 2240.5133,409.66775 2240.201,408.84652 L 2239.6333,407.35339 L 2241.7428,408.02292 L 2243.1761,406.29592 L 2246.3475,406.29592 L 2248.8955,410.4187 C 2249.7569,409.40011 2250.3366,408.25374 2250.7796,407.00483 L 2251.1,405.72879 L 2260.4028,405.821 L 2261.881,404.03989 L 2262.8017,404.60894 L 2265.787,403.24879 L 2265.4388,399.29134 L 2269.3762,398.25863 L 2269.5815,398.8745 C 2269.6944,399.21323 2270.0941,399.49037 2270.4698,399.49037 L 2271.1527,399.49037 C 2273.1113,397.60169 2274.8744,395.4711 2277.0436,393.8201 L 2280.4677,398.75861 L 2280.4677,401.88024 L 2282.3422,401.16093 L 2286.0527,402.3855 L 2292.5815,409.94647 C 2298.1269,403.8508 2305.2663,398.08466 2309.9795,391.26701 L 2313.2675,388.13911 L 2319.9332,389.69413 L 2330.6586,387.95775 L 2331.0753,387.34387 L 2331.5093,383.65068 L 2333.6261,382.51778 L 2337.046,383.80865 L 2338.84,397.90574 L 2340.2998,399.66394 L 2340.9792,402.55458 L 2344.5724,416.18069 L 2343.7026,422.45909 L 2336.0972,423.48217 L 2334.9594,426.74604 L 2332.353,426.09189 L 2326.2003,430.68245 L 2323.0024,430.68245 L 2323.0024,428.41394 L 2322.3226,428.41394 L 2310.5198,432.05981 L 2311.2368,435.88234 C 2310.4323,435.76665 2309.6308,435.71483 2308.8242,435.76856 L 2305.8875,436.17163 z "},"ny20":{"name":"NY-20","path":"M 2350.5708,411.93125 L 2347.3889,410.8695 L 2347.3889,406.86305 L 2342.6634,406.81738 L 2340.8881,399.57218 L 2339.3331,397.88034 L 2337.56,383.26243 L 2333.4943,381.97895 L 2331.0157,383.58875 L 2330.6586,387.29711 L 2320.1317,389.12212 L 2313.1992,387.68923 C 2309.4213,390.28205 2305.1411,397.25928 2292.5944,409.16896 L 2286.3867,401.99802 L 2282.4653,400.70384 L 2280.9435,401.32721 L 2281.0349,398.73898 L 2277.1263,393.25196 C 2274.8759,394.76368 2272.9089,396.91319 2270.8901,398.94608 L 2270.3534,398.92324 L 2268.3485,390.45771 L 2272.9594,389.27715 L 2274.3669,385.87928 L 2275.8093,385.87928 L 2276.4549,384.19702 L 2278.2002,384.86516 C 2280.0064,381.17982 2282.5419,378.83198 2285.8075,377.39647 L 2281.0349,373.30162 L 2281.0349,369.00303 L 2284.4376,367.59356 C 2284.5927,366.16062 2284.4071,364.80338 2283.4335,363.62125 L 2285.005,356.09416 L 2287.3621,354.62209 L 2288.9464,355.93689 C 2289.7974,353.83686 2290.8224,351.82377 2292.87,350.71731 L 2293.4713,354.87769 L 2297.4296,362.41042 L 2295.6858,370.25098 L 2301.735,374.94807 L 2311.126,376.97649 L 2312.6244,374.9272 L 2315.0618,375.56459 L 2317.8894,374.25315 L 2318.0395,371.22543 L 2337.8488,362.00719 L 2337.2162,360.35849 L 2337.8691,358.65711 L 2339.8773,358.65711 L 2341.4219,356.80148 L 2343.6827,357.58161 L 2344.5533,351.85156 L 2342.4668,351.85156 L 2341.1452,348.95092 L 2341.8406,346.18028 L 2340.0275,346.18028 L 2336.6469,338.72434 L 2334.1772,339.09117 C 2333.8015,340.24257 2333.5687,341.53034 2330.9671,343.46448 L 2325.9174,339.20084 L 2325.2493,336.53909 C 2324.4724,336.52113 2323.7565,336.2854 2322.5565,337.77894 L 2319.6286,335.86052 L 2315.7373,335.75021 L 2298.0487,291.5178 L 2312.5105,284.99376 L 2312.8494,282.84181 L 2308.9349,281.51428 L 2306.4868,274.15186 L 2304.1854,275.51798 L 2302.8084,274.98136 L 2305.4343,272.6408 L 2301.6232,263.92927 L 2297.0254,266.18155 C 2294.8211,262.59408 2293.1158,258.4051 2291.9257,254.56811 L 2301.165,250.89382 L 2302.7122,253.86271 L 2308.7847,250.90353 L 2314.035,262.74731 L 2316.9051,263.09592 L 2319.0857,268.66738 L 2317.8941,269.40381 L 2319.7062,274.72206 L 2329.2192,274.72206 L 2329.943,277.60611 L 2333.2958,277.5577 L 2332.5903,287.48246 L 2333.5759,290.88523 L 2335.4903,291.0144 L 2335.9676,287.78019 L 2338.0811,286.87595 L 2339.489,289.46741 L 2341.8211,289.98411 L 2354.5665,339.75093 L 2355.8107,381.97851 L 2357.4978,384.55333 L 2361.1946,401.21668 L 2356.5021,402.65233 C 2357.0717,404.82496 2357.6785,406.98845 2358.2033,409.17246 L 2355.3791,409.13156 L 2350.5708,411.93125 z "},"ny25":{"name":"NY-25","path":"M 2198.1277,337.33524 L 2196.4795,342.8293 L 2195.5048,343.20148 C 2194.9752,343.40277 2194.0712,344.1789 2193.4844,344.92059 C 2192.8975,345.66228 2191.8767,346.51489 2191.2158,346.81692 C 2190.555,347.11894 2189.4344,347.68875 2188.7347,348.09296 C 2188.035,348.49716 2186.9707,349.27693 2186.3598,349.82979 L 2185.2433,350.83999 L 2181.3974,351.10583 C 2179.2769,351.24974 2177.0234,351.56871 2176.3996,351.81474 C 2175.7758,352.06079 2174.3589,352.55843 2173.245,352.91356 C 2172.1311,353.2687 2170.7546,353.55156 2170.1966,353.55158 L 2169.1865,353.55158 L 2162.5227,357.09613 L 2158.5882,360.92425 L 2156.8514,360.46346 L 2155.5045,362.35979 C 2155.8901,363.21235 2156.6178,364.7197 2157.2236,365.44356 L 2164.6317,363.38771 L 2166.1913,362.14712 C 2167.0509,361.47091 2168.0854,360.92424 2168.4776,360.92425 L 2169.1865,360.92425 L 2171.0828,368.38554 L 2175.2299,367.69435 C 2176.9268,366.95128 2179.9646,366.16708 2181.7873,365.88663 L 2181.7873,367.30445 C 2189.3449,365.80688 2193.4621,363.99619 2199.2974,362.34207 L 2198.1277,354.84534 L 2203.7281,353.64019 L 2203.9053,356.06821 L 2209.1513,357.75187 L 2210.2501,360.92425 L 2211.5616,360.92425 L 2214.2909,370.05148 L 2218.3671,368.82861 L 2223.7549,372.23138 L 2239.156,367.35762 L 2233.8214,350.1488 L 2231.1275,350.1488 L 2231.1275,347.40177 L 2229.373,345.54088 L 2224.4461,344.88514 L 2224.4638,343.66227 L 2218.4912,342.35078 L 2218.438,343.98128 L 2219.4305,343.94583 L 2219.909,344.95603 L 2219.0938,346.28524 L 2216.9493,345.71811 L 2216.9493,346.76375 L 2212.6958,346.09029 L 2207.2018,347.9689 L 2205.8726,346.14346 L 2201.0343,347.79168 L 2198.1277,337.33524 z "},"az8":{"name":"AZ-8","path":"M 593.17132,1188.335 L 593.89322,1182.0404 L 592.55383,1180.4266 C 591.78526,1180.5157 590.88891,1180.6743 590.2311,1180.425 C 590.2311,1180.2648 591.21524,1178.916 591.59198,1178.3127 L 589.20029,1174.2992 L 584.60632,1171.1457 L 581.48399,1173.6815 L 577.87938,1169.576 L 574.01678,1170.243 L 573.41244,1168.8005 L 574.08222,1164.14 L 571.68747,1159.446 C 572.15336,1155.1569 572.36677,1150.8305 573.05107,1146.5691 L 586.5569,1148.154 L 588.15569,1146.8271 L 588.15569,1144.3062 L 590.42421,1142.2532 L 590.42421,1140.7276 L 591.42615,1140.7276 L 592.0826,1138.2174 L 590.5192,1136.4741 L 591.07839,1133.5913 L 587.58856,1130.9168 L 587.58856,1129.5344 L 582.77846,1128.8892 L 580.82527,1130.6569 L 578.97881,1129.5436 L 579.62029,1124.8973 L 578.14542,1122.5434 L 575.53504,1123.2635 L 572.99833,1120.7094 L 574.10037,1114.7342 L 591.55846,1116.3127 L 591.55846,1113.1141 L 593.63274,1111.2369 L 595.55644,1111.2369 L 596.57574,1113.9178 L 598.36401,1114.6041 L 598.36401,1116.8179 L 612.82579,1118.3361 L 612.46271,1123.5726 L 684.40106,1131.0864 L 677.96222,1197.5873 L 593.17132,1188.335 z "},"ga8":{"name":"GA-8","path":"M 2004.8255,1013.8666 L 1996.3185,1015.8516 L 1987.6521,1014.5578 L 1986.1279,1016.6136 L 1986.1279,1020.938 L 1987.2482,1021.827 L 1992.459,1021.8162 L 1995.202,1025.6404 C 1994.2634,1025.4953 1993.195,1027.9795 1991.7618,1031.2963 L 1991.5749,1041.0966 L 1993.3413,1044.0799 L 1997.636,1043.371 L 2001.9327,1051.3698 C 2001.9429,1054.3482 2003.857,1056.6002 2004.7191,1059.3964 L 2000.9442,1059.4851 L 2002.2025,1064.1461 L 2016.558,1064.1993 L 2017.6922,1067.5666 L 2021.1304,1070.5086 L 2026.1283,1072.2277 L 2021.0418,1075.2051 L 2020.1556,1094.2217 L 2029.7968,1094.2217 C 2029.5547,1096.498 2030.2072,1096.7136 2026.9612,1105.9364 L 2026.9612,1117.474 L 2016.1857,1117.474 L 2015.1401,1130.2344 L 2017.5327,1132.8041 L 2018.0289,1139.592 L 2005.0027,1139.592 C 2004.1076,1142.5729 2004.3311,1151.4179 2004.276,1158.7857 C 2007.4437,1159.5025 2014.0904,1159.5745 2025.8269,1158.6971 L 2025.8269,1156.6767 L 2027.2093,1155.8792 L 2027.2093,1151.094 L 2028.6449,1147.0001 L 2031.9413,1146.9647 L 2032.8275,1144.9797 L 2033.4832,1133.07 L 2045.322,1132.5029 C 2046.3451,1127.202 2047.4022,1128.2177 2048.0513,1123.2161 C 2051.1986,1121.7337 2049.1994,1119.9501 2053.2441,1117.0841 L 2053.1909,1112.4761 L 2048.4412,1111.0938 L 2041.742,1106.734 L 2045.7828,1099.6094 L 2059.837,1084.8995 C 2058.3404,1084.2318 2057.2816,1084.3188 2054.8214,1082.1525 L 2054.8214,1080.4334 C 2058.596,1078.9478 2060.7881,1076.403 2061.2725,1073.5215 L 2060.9003,1069.6756 L 2054.6796,1063.7385 L 2048.2994,1062.9942 C 2044.4447,1059.992 2039.0977,1058.744 2026.6422,1052.7504 C 2024.7511,1046.9308 2023.8949,1040.7983 2023.4698,1034.7086 C 2021.5091,1034.2956 2018.8801,1033.9891 2016.0794,1033.7161 L 2015.6718,1028.9487 C 2014.4075,1027.8822 2013.3231,1025.8382 2012.3399,1023.366 L 2012.269,1016.9858 L 2004.8255,1013.8666 z "},"tx30":{"name":"TX-30","path":"M 1316.4254,1142.429 L 1315.7469,1140.2911 L 1318.1196,1134.2715 L 1319.5028,1132.9896 C 1320.2635,1132.2846 1320.886,1131.4554 1320.886,1131.147 C 1320.886,1130.8386 1320.6308,1130.4285 1320.3188,1130.2357 L 1319.7517,1129.8852 L 1319.7517,1127.6836 L 1316.3489,1127.6836 L 1316.3489,1125.554 L 1318.1108,1124.0918 L 1321.4734,1124.0918 L 1322.8709,1125.9052 L 1327.0684,1126.2325 L 1329.8404,1123.6284 L 1330.21,1124.2265 C 1330.2028,1126.1216 1329.5658,1127.2874 1329.0945,1128.8179 L 1331.7156,1128.8179 L 1333.1063,1130.3185 C 1333.8712,1131.1439 1334.4971,1132.0098 1334.4971,1132.2428 C 1334.4971,1132.4758 1334.1505,1132.7994 1333.727,1132.962 L 1332.957,1133.2574 L 1332.2382,1136.851 L 1335.5812,1141.7098 C 1329.1296,1142.1484 1324.8661,1142.355 1316.4254,1142.429 z "},"ca33":{"name":"CA-33","path":"M 224.85893,966.52013 L 219.6698,965.36727 C 220.44102,962.79778 220.17017,962.04554 220.72536,961.4331 C 222.38142,961.04841 223.98666,960.7146 224.95648,959.22436 L 226.73166,965.31384 L 224.85893,966.52013 z "},"nc8":{"name":"NC-8","path":"M 2191.0997,902.4457 L 2178.7605,894.45247 L 2138.9691,902.04071 L 2135.7828,895.10728 L 2133.169,894.1135 L 2132.4966,892.36158 L 2133.6357,891.65761 L 2135.3028,892.29733 L 2139.2412,890.41922 L 2139.9139,888.29981 L 2136.8845,884.90929 L 2137.644,881.02428 L 2136.8832,879.79333 L 2135.3365,881.07691 L 2123.4813,876.90874 L 2120.6951,870.77859 L 2121.7884,867.79521 C 2120.9169,865.69945 2121.0491,864.17727 2121.3083,862.72763 L 2164.085,853.15541 C 2167.3728,859.78475 2169.927,865.31374 2170.6043,868.02745 L 2173.2804,869.04488 L 2173.2804,870.66795 L 2178.8705,874.68407 L 2179.2352,877.86345 L 2186.427,877.86345 C 2188.3366,873.65632 2191.1524,869.65057 2194.5352,865.77079 C 2196.6688,866.81697 2199.0118,867.30459 2201.6368,867.04031 L 2201.6368,868.77419 L 2204.4593,874.5361 L 2208.3498,870.1657 L 2209.1101,871.39591 L 2214.1137,870.64555 L 2213.0798,872.4806 L 2214.3969,875.97015 L 2212.1287,877.63422 L 2208.8817,876.72919 L 2201.9204,887.75786 L 2193.697,889.14364 L 2195.5741,893.52839 L 2191.0997,902.4457 z "},"in8":{"name":"IN-8","path":"M 1741.012,611.55739 L 1749.6353,681.84823 L 1747.2782,683.51417 L 1746.9237,686.72196 L 1748.0048,688.08665 C 1748.5937,688.83537 1749.0681,689.77607 1749.0681,690.17793 C 1749.0681,690.57986 1748.4015,691.69988 1747.5794,692.67682 L 1746.073,694.46684 L 1747.3136,697.1784 L 1750.1492,699.02157 L 1750.8582,703.82447 L 1754.1723,705.08276 L 1754.1723,708.76909 L 1752.4178,710.7009 L 1753.1798,711.48071 C 1753.5967,711.9077 1754.524,713.38178 1755.2357,714.75939 L 1756.5294,717.27602 L 1755.7496,722.85872 L 1751.957,725.10949 L 1751.2658,727.28942 L 1751.9747,729.55793 L 1750.7695,729.55793 L 1750.7695,735.19377 L 1747.4199,737.67496 L 1747.9871,738.61424 L 1746.7465,743.22216 L 1743.964,745.65021 L 1743.964,749.35424 L 1740.0473,751.21516 L 1738.8598,750.4708 L 1738.8598,753.30645 L 1738.2927,753.6609 C 1737.9808,753.85361 1737.7256,754.36675 1737.7256,754.79516 L 1737.7256,755.57496 L 1739.9941,756.28387 L 1741.1461,758.46375 L 1739.7637,760.67912 L 1737.7256,761.2108 L 1738.4168,764.66672 L 1736.6622,766.43899 L 1738.3459,770.49754 L 1737.0344,772.07483 L 1737.7788,775.03457 L 1736.4495,776.62961 L 1737.8496,778.31325 L 1737.1939,780.03239 L 1738.4522,780.05008 C 1739.1442,780.05485 1740.0836,780.29094 1740.5435,780.58176 L 1741.3764,781.11345 L 1743.5386,778.79179 L 1742.3335,777.17899 C 1741.6715,776.28367 1741.1283,775.1975 1741.1283,774.78645 C 1741.1283,774.37528 1741.5289,773.477 1742.0145,772.78374 L 1742.9006,771.52546 L 1745.0096,771.52546 L 1747.3845,774.53833 L 1749.2099,773.65219 C 1750.2197,773.17007 1751.7315,772.47415 1752.5595,772.09259 L 1754.066,771.40137 L 1755.3774,772.19892 L 1755.023,775.77892 L 1757.1675,775.77892 L 1758.3903,773.84711 L 1755.8028,771.08236 L 1756.5649,766.98843 L 1758.7448,766.70486 L 1760.1626,769.54051 L 1762.4665,769.87721 L 1764.5578,767.55556 L 1767.8366,767.55556 L 1769.3784,768.33536 C 1770.2207,768.76371 1771.4768,769.28859 1772.1786,769.50506 L 1773.4547,769.89496 L 1773.4547,767.73278 C 1775.6572,764.54847 1777.7631,761.41786 1778.5943,758.99543 L 1780.6856,759.6512 L 1781.4654,754.5116 L 1783.663,754.5116 C 1783.7717,752.0667 1783.4824,750.71631 1782.9718,749.97457 L 1780.4197,749.97457 L 1777.9208,731.08209 L 1779.4095,730.10731 L 1784.1947,730.35543 L 1784.9036,729.62882 L 1786.4632,730.2314 L 1789.866,727.80335 L 1796.4057,727.0413 L 1789.4202,677.77659 L 1792.0505,675.5235 L 1790.6708,668.25257 L 1787.4911,669.03464 L 1788.8277,658.49234 L 1786.9136,658.43415 L 1784.6023,644.38229 L 1765.6748,647.01025 L 1764.806,641.67068 L 1759.6536,642.16924 L 1758.9116,635.9817 L 1754.6631,635.86538 L 1753.7847,629.05983 L 1750.3041,629.05983 L 1753.7469,623.50487 L 1758.6739,623.50487 L 1758.0359,626.76586 C 1759.6655,626.98006 1761.2612,627.53086 1762.8915,627.64655 L 1760.198,609.19524 L 1741.012,611.55739 z "},"ca8":{"name":"CA-8","path":"M 75.967584,688.72467 L 74.726994,688.74236 C 74.046214,688.74661 72.931894,688.88204 72.263534,689.06137 L 71.058384,689.39813 L 70.827984,690.99318 L 73.415514,691.36533 L 73.238284,693.17305 L 72.423034,693.03127 L 72.352144,693.81107 L 75.914424,693.82882 L 76.658774,690.90454 L 75.967584,688.72467 z "},"ca12":{"name":"CA-12","path":"M 70.898874,691.578 L 70.562144,693.79338 L 69.179764,700.7584 L 67.496104,701.27239 L 67.531554,704.03714 L 70.615314,702.26486 L 71.820464,701.80407 L 72.529374,701.80407 C 73.980934,703.32693 74.886504,703.96625 74.886504,703.96625 L 75.967584,704.07259 L 79.051354,708.13107 L 81.248974,707.70573 C 81.248974,707.70573 82.132084,707.22639 78.324714,704.79919 C 74.517354,702.37199 74.324444,702.0658 74.443434,698.4013 L 75.435904,698.3481 L 74.780164,696.11503 L 76.180264,694.39595 C 76.180264,694.3959 74.113164,694.38427 73.185114,694.36051 C 72.788544,694.3503 72.250714,694.23018 71.767294,694.11239 L 71.891354,692.37556 L 72.742044,692.51734 L 72.812934,691.84387 L 70.898874,691.578 z "},"oh8":{"name":"OH-8","path":"M 1887.507,663.27811 L 1888.1631,659.23533 L 1886.3133,659.23533 C 1886.3238,658.19142 1886.7042,657.05507 1887.4964,655.81572 L 1885.8178,655.17157 L 1886.5079,653.4175 L 1876.868,655.08327 L 1867.6905,593.49979 L 1871.5679,592.75503 L 1871.5679,590.05902 L 1876.1882,589.32022 L 1875.5356,586.59046 L 1881.8567,585.24296 L 1883.7897,597.23115 L 1885.1966,598.86346 L 1886.6123,607.75479 C 1901.8901,604.96463 1899.2383,606.63097 1905.5512,605.39537 C 1906.7933,612.30254 1906.9988,619.62434 1907.297,626.909 L 1906.1506,627.56857 L 1906.648,633.14741 C 1904.6006,633.1481 1902.9927,632.56288 1901.5281,631.78659 L 1902.7225,623.3501 L 1900.9865,622.46611 L 1886.7787,624.84096 L 1890.5443,645.69474 L 1895.9545,644.95067 C 1895.9045,646.02589 1896.7446,647.10111 1898.0596,648.17633 L 1899.2794,662.61361 L 1887.507,663.27811 z "},"va8":{"name":"VA-8","path":"M 2243.0372,628.61039 C 2242.8403,626.53277 2242.7809,624.82066 2241.8126,622.84473 L 2243.7066,620.75185 L 2242.663,618.20006 L 2239.9558,620.18427 L 2239.3509,617.55138 L 2234.5736,617.20469 L 2232.1176,618.51918 L 2231.6312,617.75169 C 2231.3637,617.32963 2231.1449,616.72904 2231.1449,616.41712 C 2231.1449,616.1052 2231.3566,615.51623 2231.6153,615.10824 L 2232.0857,614.36655 L 2236.2181,616.80469 L 2243.3208,616.47247 L 2247.2974,618.39997 L 2248.003,620.6606 C 2248.391,621.90392 2248.7085,623.44753 2248.7085,624.09082 L 2248.7085,625.26036 L 2244.8209,628.6912 L 2243.0372,628.61039 z "},"md8":{"name":"MD-8","path":"M 2243.1644,614.8494 L 2241.6682,613.29791 L 2236.7707,613.29791 L 2235.7143,610.51938 L 2231.1391,609.2874 L 2225.5853,610.02416 L 2223.1877,607.62662 L 2221.4863,607.62662 L 2221.4863,604.91235 L 2223.3214,603.43532 L 2223.1877,601.92999 L 2225.5285,599.39061 C 2226.8159,597.99389 2228.0616,596.85118 2228.2968,596.85118 L 2228.7244,596.85118 L 2230.0005,601.91932 L 2232.4556,603.23319 L 2233.8543,601.32032 L 2234.6313,602.57753 L 2236.1159,601.34539 L 2238.7838,604.66037 L 2242.4843,606.52883 L 2243.0093,605.14787 C 2243.2981,604.38832 2243.7936,603.6067 2244.1104,603.41087 L 2244.6864,603.05489 L 2247.6013,603.78648 L 2247.2303,605.84833 C 2247.0262,606.98236 2246.6249,608.20646 2246.3385,608.56862 L 2245.8178,609.227 L 2246.955,609.92985 L 2248.3082,609.59019 L 2250.4379,610.98703 C 2250.9753,611.80716 2251.5349,612.47501 2251.4362,612.77099 L 2251.2569,613.30914 L 2247.1119,610.81865 L 2246.1199,610.59594 L 2243.1644,614.8494 z "},"il8":{"name":"IL-8","path":"M 1693.4895,518.15916 L 1695.3829,517.23402 L 1694.5144,512.3437 L 1696.0182,512.07232 L 1695.6292,506.11057 L 1690.9374,506.0932 L 1688.2772,504.87208 L 1687.8182,507.68572 C 1686.3585,507.93934 1684.8807,508.3828 1683.4026,508.12241 L 1681.6474,492.64314 L 1711.2621,489.09671 C 1711.6794,490.70417 1711.5959,491.81099 1711.6376,493.54362 C 1710.4775,493.78254 1709.3034,494.00909 1708.2349,494.49257 L 1709.436,497.85349 L 1707.5232,499.25219 L 1705.5074,496.7628 L 1703.1307,498.91369 C 1703.0661,500.90133 1703.7941,502.80552 1704.5638,504.12562 L 1704.5068,515.15177 L 1702.908,514.22997 L 1701.7478,511.21473 L 1699.1608,511.21473 C 1699.1286,512.96554 1699.3468,514.59118 1700.3159,515.71617 L 1705.4902,518.74849 L 1703.9567,520.79799 L 1699.6298,521.13061 L 1699.5695,517.5281 C 1697.0652,517.84475 1695.8542,518.32828 1694.6849,519.85485 L 1696.8759,523.06034 C 1693.9948,522.26104 1693.909,521.04453 1693.4895,518.15916 z "},"mi8":{"name":"MI-8","path":"M 1859.6582,427.5087 L 1839.5075,430.80514 L 1842.8039,451.41672 L 1853.2071,449.96346 L 1856.9112,471.35484 C 1871.3946,469.01698 1883.9127,466.95295 1897.904,463.52138 L 1894.8202,447.28732 L 1903.5576,446.48979 C 1905.2299,445.46556 1906.7306,444.77106 1910.6998,444.239 L 1910.9657,439.06395 L 1914.1026,439.2589 L 1914.1026,437.59296 L 1919.6321,436.28148 L 1918.4978,431.83306 L 1893.4024,437.25623 L 1893.7746,442.99841 L 1883.2118,444.57573 L 1881.4927,437.04355 L 1877.257,437.43346 L 1876.3176,435.73207 L 1861.6077,438.23098 L 1859.6582,427.5087 z "},"nj8":{"name":"NJ-8","path":"M 2344.9507,471.51732 L 2342.9631,470.53541 L 2342.5978,471.2043 L 2342.0855,469.22085 L 2344.4201,467.25189 L 2344.7707,465.76677 L 2343.4832,463.36737 C 2342.7281,462.24124 2342.2615,461.62275 2341.4454,460.00026 C 2340.7338,458.34947 2339.3616,456.48997 2339.3616,456.48997 L 2340.4959,455.18072 L 2342.2036,456.6048 C 2345.2174,456.08909 2346.0925,456.13712 2347.0313,456.42704 L 2347.0726,458.23903 L 2348.1505,458.39134 C 2348.122,459.27366 2348.2576,460.55508 2349.0545,461.35202 L 2350.1128,462.42532 L 2349.6574,468.98776 L 2348.6515,468.05362 L 2347.6739,469.08335 L 2347.0578,468.03102 C 2346.7317,467.7454 2346.4238,467.34869 2346.0257,467.121 L 2345.3252,467.03561 L 2346.0171,470.39177 L 2344.9507,471.51732 z "},"ma8":{"name":"MA-8","path":"M 2458.9715,338.78873 C 2458.7375,338.79911 2458.5461,338.45209 2458.5461,338.01759 L 2458.5461,337.22757 L 2456.6397,336.13897 C 2456.9644,335.61149 2456.9302,335.05838 2456.8447,334.24897 L 2453.9066,334.98638 C 2454.77,333.51616 2455.3515,332.37914 2455.728,330.72951 L 2459.0909,331.4021 L 2460.3378,329.07231 L 2462.5589,331.08233 L 2460.8146,332.05842 L 2460.8146,334.8377 L 2461.9489,334.8377 L 2461.9489,336.64084 L 2460.6729,337.70535 C 2459.971,338.29083 2459.2054,338.77836 2458.9715,338.78873 z "},"mn8":{"name":"MN-8","path":"M 1394.8963,132.65495 L 1388.5161,133.55881 L 1392.3087,190.64386 L 1376.4646,191.4591 L 1376.4646,202.69534 L 1370.7933,202.69534 L 1370.7933,205.28287 L 1374.0897,207.23237 L 1377.5988,207.23237 L 1377.5988,212.72643 C 1372.3467,213.12796 1367.0318,213.48762 1361.1521,213.47079 L 1361.1521,218.50405 L 1362.2864,218.57495 L 1365.76,277.2196 L 1383.5537,276.4398 L 1383.9259,277.55633 L 1387.1337,277.55633 L 1389.6858,312.71831 L 1404.2716,311.99168 L 1400.6562,309.42187 L 1427.4707,307.96861 L 1428.7999,323.9191 L 1439.6994,323.77732 L 1440.0716,332.26653 L 1462.0656,330.72465 L 1462.101,337.81375 L 1472.8056,337.33524 L 1475.145,335.22623 L 1475.1804,332.85138 L 1476.8464,330.65375 L 1476.8464,328.17257 L 1472.9119,323.88366 L 1473.4259,323.05069 L 1471.6536,321.5797 L 1469.1192,321.47336 C 1467.7268,321.41468 1466.4134,321.19549 1466.195,320.97712 L 1465.8051,320.5695 L 1465.9291,311.63722 L 1469.4737,308.64207 L 1469.4737,306.55079 L 1470.6257,305.84187 L 1469.9345,304.72534 L 1470.9093,302.61633 C 1471.4425,301.46231 1472.6611,299.69561 1473.6208,298.68187 L 1475.3754,296.83871 L 1476.9172,296.83871 L 1480.1251,293.3296 L 1482.3936,294.03851 L 1483.6342,290.45851 L 1487.0547,291.13197 L 1487.0547,288.88118 L 1489.0396,287.1798 L 1486.4875,250.7595 L 1489.6599,251.39752 L 1490.9891,249.28851 L 1489.6068,248.79227 L 1493.0095,245.26544 L 1495.5794,245.22999 L 1494.1438,242.87287 L 1497.8301,239.48782 C 1499.8576,237.62015 1502.4097,235.39944 1503.5014,234.56089 C 1504.5931,233.72235 1507.0814,231.43322 1509.0309,229.47445 C 1510.9804,227.51568 1512.5749,225.72923 1512.5755,225.50455 C 1512.576,225.27988 1513.5477,224.2037 1514.7376,223.11198 C 1515.9275,222.02025 1517.5232,220.58967 1518.2822,219.9396 C 1519.0413,219.28953 1520.4751,217.75829 1521.4723,216.53683 C 1522.4694,215.31537 1524.1283,213.18546 1525.1586,211.80485 C 1526.1889,210.42423 1527.7391,208.3121 1528.5968,207.10831 C 1529.4546,205.90453 1530.1565,204.71823 1530.1565,204.46762 C 1530.1565,204.217 1530.9752,203.01144 1531.9819,201.79148 C 1532.9887,200.57152 1536.6253,196.75403 1540.0635,193.30227 L 1546.3196,187.02841 L 1551.3352,183.48386 C 1554.0913,181.53846 1557.6641,179.34934 1559.275,178.61009 C 1560.8858,177.87085 1563.7305,176.5863 1565.602,175.75673 C 1567.4735,174.92716 1569.5152,174.03976 1570.139,173.7895 C 1570.7629,173.53923 1572.9845,172.52684 1575.0837,171.53871 L 1578.9118,169.74871 L 1579.7802,168.20683 L 1586.0186,165.38891 L 1592.0089,159.52267 L 1594.1002,160.19613 L 1594.6673,158.74287 L 1584.654,158.79604 L 1582.5273,160.72782 L 1581.198,160.72782 C 1580.4696,160.72782 1578.9153,160.3061 1577.7421,159.78851 L 1575.6154,158.8492 L 1575.1014,156.88198 L 1572.3012,155.03881 L 1567.8705,154.84386 L 1564.1842,155.57049 C 1562.1567,155.96937 1559.3494,156.36576 1557.9458,156.43891 C 1556.5421,156.51206 1554.5324,156.76375 1553.4796,157.00604 L 1551.5656,157.44911 L 1550.7681,156.17307 L 1548.8363,156.97059 C 1547.7673,157.41007 1546.1026,157.9374 1545.1499,158.14029 L 1543.4308,158.49475 L 1540.861,153.35515 L 1539.2305,153.35515 L 1539.2305,149.40297 L 1536.8202,150.32455 C 1535.4946,150.8346 1534.1547,151.56207 1533.8428,151.93732 C 1533.5309,152.31258 1532.51,153.02473 1531.5743,153.51465 L 1529.8729,154.40079 L 1526.4347,157.80356 L 1522.9965,161.22406 L 1521.3305,161.57851 C 1520.413,161.77593 1518.9861,162.30085 1518.1582,162.74821 C 1517.3302,163.19558 1516.2727,163.56347 1515.801,163.56346 L 1514.9326,163.56346 L 1514.5073,162.28742 L 1509.7221,164.73316 L 1509.0487,161.38356 L 1503.4483,160.62148 L 1503.785,158.63653 L 1502.1722,155.62366 L 1500.4354,155.53505 C 1499.4743,155.48886 1498.2723,155.42506 1497.777,155.39326 C 1497.2815,155.36146 1496.4724,154.99369 1495.9693,154.57802 L 1495.0477,153.83366 L 1492.726,154.56029 L 1492.726,154.0995 C 1492.726,153.84052 1492.1517,153.37948 1491.4499,153.07158 L 1490.1739,152.50445 L 1489.8017,149.29663 L 1487.5155,147.01039 L 1485.1584,147.36485 C 1483.8625,147.56037 1482.0356,147.80006 1481.0998,147.89653 L 1479.3984,148.07376 L 1479.044,151.72465 L 1480.3732,153.33742 L 1479.7174,155.05653 L 1478.8491,155.05653 C 1478.3671,155.05653 1477.428,155.37555 1476.7755,155.76544 L 1475.5881,156.47435 L 1474.95,155.41099 C 1474.593,154.82566 1473.3325,152.91159 1472.1498,151.15752 L 1469.9877,147.96742 L 1470.5548,144.97227 L 1468.499,143.12911 L 1462.6327,144.38742 L 1459.8325,142.56198 L 1459.8325,141.85307 C 1459.8373,141.47036 1460.0286,140.87171 1460.2578,140.52386 C 1460.487,140.176 1461.2758,139.72041 1461.9947,139.49594 L 1463.3062,139.08831 L 1462.8277,137.75911 L 1459.1059,138.07812 C 1455.8159,136.73684 1452.3599,135.73835 1449.1988,134.10821 L 1449.057,133.7892 L 1435.0029,133.7892 L 1433.9041,134.78168 C 1433.3052,135.32364 1431.9817,136.05677 1430.9621,136.41218 L 1429.119,137.05019 L 1429.6506,139.14148 L 1428.9949,139.69089 C 1428.6262,139.99684 1426.3445,140.78684 1423.9439,141.44544 L 1419.5841,142.65059 L 1414.1786,142.29614 L 1414.0192,140.59475 C 1413.9285,139.65899 1413.5765,138.19154 1413.2394,137.33376 L 1412.619,135.77416 L 1396.5976,135.75643 L 1394.914,134.69307 L 1394.8963,132.65495 z "},"wa8":{"name":"WA-8","path":"M 246.09695,153.1863 L 245.89352,153.66945 L 233.13488,150.88861 L 230.50794,153.35652 L 229.69383,153.3544 C 229.24603,153.35323 228.09277,152.87244 227.13103,152.28597 C 226.1693,151.69949 224.51044,151.03718 223.4447,150.81417 C 222.37895,150.59116 220.23095,150.01376 218.67134,149.53106 L 215.8357,148.65344 L 214.70144,147.67308 C 214.0776,147.13387 212.98974,146.3949 212.28394,146.0309 L 211.0007,145.36909 L 212.15333,143.21531 L 209.79754,141.56524 L 211.00944,140.81625 L 210.96344,139.0048 C 210.93815,138.0085 211.15161,136.15656 211.43779,134.88939 L 211.95818,132.58543 L 214.57134,129.05093 L 213.90899,126.51809 L 215.02493,124.43295 L 217.43001,124.43295 L 221.10671,121.6286 L 221.63453,116.77672 L 225.25707,108.27921 L 226.89471,107.36273 L 226.89471,105.89351 L 224.6262,103.84052 L 224.6262,95.576328 C 226.04402,94.686475 227.46184,94.514187 228.87966,94.581091 L 230.92552,95.792954 L 233.98382,92.096393 L 234.60482,92.101508 L 237.3803,89.725948 C 242.93074,90.654139 248.50255,91.759546 253.89151,93.393569 C 254.00562,93.507704 253.70992,95.4979 253.23438,97.816226 C 252.75884,100.13456 251.97002,103.09639 251.4815,104.39808 L 250.32067,108.21018 L 253.304,107.2637 L 256.13978,110.029 L 256.28816,112.52325 L 259.26625,112.52325 L 263.8436,110.18804 L 265.98222,109.92577 L 264.3019,111.24065 C 263.50928,111.56917 262.521,112.24736 262.10575,112.74773 L 261.35067,113.65751 L 259.4572,113.65751 L 254.54569,118.66196 L 254.18942,123.99172 L 257.51966,125.24876 L 257.51966,126.14525 C 257.51966,126.63832 257.20065,127.36517 256.81075,127.76048 L 256.10184,128.47921 L 258.04601,129.91592 L 257.39801,133.90916 L 253.26619,133.79058 L 253.55923,138.51218 L 248.4456,143.62579 L 248.4456,145.34028 L 247.36255,145.68403 C 246.7669,145.87308 245.96855,146.40243 245.58852,146.86034 L 244.89759,147.69291 L 245.59895,150.19804 C 245.98472,151.57585 246.20885,152.92057 246.09695,153.1863 z "},"tx15":{"name":"TX-15","path":"M 1309.3839,1343.7583 L 1292.8485,1357.9365 L 1287.0887,1352.2475 L 1261.4261,1379.1684 L 1265.8745,1384.4675 L 1251.6963,1397.7773 L 1251.6963,1429.3947 L 1230.7125,1429.3947 L 1230.7125,1468.5266 L 1237.8371,1468.5266 C 1238.0103,1473.6785 1239.9546,1474.6358 1240.0347,1497.9641 L 1244.4719,1498.0212 L 1244.3269,1500.1848 L 1243.3843,1501.3315 C 1242.501,1502.2243 1240.9421,1504.0098 1239.9283,1505.2837 C 1238.9146,1506.5573 1238.0852,1507.8471 1238.0852,1508.1547 C 1238.0852,1508.4623 1237.3943,1509.2576 1236.5433,1509.927 C 1235.6924,1510.5964 1234.5495,1511.8147 1234.0089,1512.6386 L 1233.0165,1514.145 L 1234.3988,1515.0134 L 1241.4171,1515.0312 L 1242.1969,1517.4946 L 1242.1083,1525.3281 L 1242.6931,1526.8345 C 1243.0085,1527.664 1243.7593,1528.8101 1244.359,1529.3689 L 1245.4402,1530.3791 L 1245.7769,1531.921 C 1245.9626,1532.7701 1246.2284,1533.718 1246.3617,1534.03 C 1246.4951,1534.3419 1247.0588,1535.3627 1247.62,1536.2985 L 1248.6479,1537.9999 L 1251.076,1539.0987 L 1251.4127,1541.4027 L 1255.1345,1541.7571 L 1254.8155,1543.5648 L 1258.2182,1544.575 L 1265.8745,1544.5928 L 1265.8745,1545.1244 C 1265.8745,1545.4192 1266.1297,1545.6561 1266.4416,1545.6561 L 1267.0087,1545.6561 L 1267.0087,1544.4155 L 1270.5178,1544.6814 C 1272.4499,1544.8358 1274.3639,1544.8377 1274.7713,1544.6814 L 1275.5157,1544.3978 L 1275.5157,1540.7292 L 1277.7665,1538.6911 L 1284.3948,1539.3823 L 1288.5596,1538.2303 L 1291.5725,1535.6427 L 1290.7573,1534.3136 L 1288.0634,1534.3136 L 1287.447,1533.5777 C 1285.7424,1532.6336 1284.1775,1532.2021 1281.9136,1531.5843 L 1276.7208,1527.7916 L 1276.6499,1522.4039 C 1273.7755,1522.3947 1272.113,1522.4787 1268.5861,1521.6772 L 1269.3481,1515.8996 L 1269.7912,1515.616 C 1270.0337,1515.4541 1270.3914,1514.4853 1270.5887,1513.4716 L 1270.9432,1511.6284 L 1269.4545,1511.6284 C 1269.0948,1496.9449 1268.9582,1486.1666 1268.7101,1471.9294 L 1264.1731,1471.9294 L 1264.1731,1448.11 L 1270.4115,1448.11 L 1270.4115,1433.1165 L 1275.7638,1427.6934 L 1277.7842,1427.6934 L 1277.7842,1429.5897 L 1278.4931,1428.8808 C 1280.6114,1430.2108 1281.8238,1430.0078 1283.3846,1429.9441 L 1284.9087,1431.0429 C 1285.5511,1431.7325 1285.724,1432.6506 1285.724,1432.9039 L 1285.724,1433.3646 L 1287.2659,1433.3646 L 1286.8937,1431.6633 L 1288.5242,1431.6633 L 1289.6584,1433.8077 L 1293.3802,1434.3394 L 1294.9044,1432.1772 L 1296.2691,1433.3115 L 1298.8388,1432.6557 L 1298.2008,1431.0252 L 1299.9731,1427.6047 L 1298.6262,1425.992 L 1294.7803,1425.992 L 1297.3501,1422.0752 L 1299.8491,1420.941 C 1300.559,1419.647 1301.1954,1418.0909 1302.153,1417.0774 L 1304.3861,1416.3508 L 1304.9532,1417.3433 C 1305.5471,1418.2 1306.4834,1418.0257 1307.1685,1419.1687 L 1308.7813,1420.9233 C 1313.1795,1418.4145 1316.3871,1416.4678 1320.0885,1412.9835 L 1315.2856,1410.6618 L 1314.6121,1407.9856 L 1332.583,1404.3524 L 1332.1045,1401.0383 L 1333.8945,1398.309 L 1332.3349,1397.0152 L 1331.7855,1398.4862 L 1326.5572,1393.6656 L 1325.9901,1393.6656 L 1325.9901,1394.9239 L 1324.9976,1394.5163 C 1324.4518,1394.2883 1323.3013,1394.034 1322.4456,1393.9669 L 1320.886,1393.8429 L 1318.8301,1391.9819 L 1311.936,1390.7946 L 1310.6245,1387.6221 L 1311.2271,1377.0948 L 1310.3764,1375.8897 C 1309.9156,1375.2318 1309.5434,1374.2662 1309.5434,1373.7452 L 1309.5434,1372.8059 L 1308.0192,1372.2211 L 1307.2217,1372.735 C 1306.7822,1373.0133 1305.85,1373.2442 1305.1481,1373.249 L 1303.8721,1373.249 L 1303.8899,1371.2641 L 1321.0277,1356.2706 L 1309.3839,1343.7583 z "},"fl14":{"name":"FL-14","path":"M 2140.2983,1394.9239 L 2141.0604,1400.4712 L 2139.8198,1400.4712 L 2139.8198,1402.1726 L 2143.0453,1402.1726 L 2144.41,1405.1854 L 2141.3972,1408.3223 L 2142.939,1411.8315 L 2143.8252,1409.173 L 2146.9798,1409.6516 L 2148.4331,1407.897 C 2147.373,1405.524 2146.1554,1403.2032 2145.4911,1400.6839 L 2145.4911,1399.9041 L 2147.2279,1399.9041 L 2147.8659,1398.2381 L 2146.5722,1396.3772 C 2145.8643,1395.3524 2145.1566,1394.1191 2145.0766,1394.0101 L 2140.2983,1394.9239 z M 2180.0328,1403.9625 L 2154.4411,1408.6768 L 2153.9271,1410.006 L 2153.4309,1415.7837 L 2151.9954,1415.7837 L 2150.5776,1413.5151 L 2149.78,1413.5151 C 2149.3332,1413.5151 2148.7906,1413.7795 2148.5926,1414.1 L 2148.2382,1414.6848 L 2151.5346,1417.7686 L 2154.7247,1425.9565 L 2155.2209,1425.6552 L 2155.6994,1423.7944 L 2157.8084,1423.1386 C 2158.6137,1423.3721 2159.2028,1423.6858 2159.6693,1424.3437 L 2159.6693,1424.8577 L 2162.505,1424.8577 L 2162.505,1425.9742 L 2164.3481,1426.8072 C 2165.3619,1427.2612 2166.8732,1428.2505 2167.6978,1429.0048 C 2168.5222,1429.7591 2169.8334,1431.3715 2170.622,1432.5848 L 2172.0576,1434.7825 L 2176.311,1447.2593 C 2177.3375,1448.6975 2178.1259,1450.3992 2179.5188,1451.5128 L 2179.9442,1451.5128 L 2180.5822,1454.632 L 2184.9065,1459.5766 L 2185.2787,1457.0954 L 2188.717,1455.6421 L 2182.8507,1450.7152 L 2183.5596,1447.9328 L 2180.4581,1445.4516 C 2181.2086,1444.4806 2181.867,1443.467 2182.3545,1442.3501 L 2180.4581,1440.0639 L 2180.724,1433.471 L 2179.5188,1432.7266 L 2180.724,1430.4936 L 2179.9974,1425.6907 L 2185.2079,1423.1563 C 2183.223,1416.8527 2181.8237,1410.4013 2180.3341,1403.9625 C 2180.3211,1403.9485 2180.217,1403.9429 2180.0328,1403.9625 z M 2144.2328,1414.6671 L 2143.2226,1415.2874 C 2143.5628,1416.1011 2144.0772,1416.8182 2144.6582,1417.361 L 2144.2328,1414.6671 z M 2145.4911,1417.8218 C 2145.4162,1418.42 2145.5859,1418.8725 2145.8633,1419.3814 L 2146.2532,1419.7536 L 2146.838,1419.1687 L 2145.4911,1417.8218 z M 2150.1699,1426.7718 C 2150.0763,1426.7846 2150.0281,1426.8075 2150.0281,1426.8427 C 2150.0281,1426.9834 2150.9852,1427.6076 2152.1549,1428.225 L 2154.2816,1429.3416 L 2157.259,1429.3947 L 2158.6591,1427.7111 L 2156.7628,1426.9845 L 2155.5222,1428.2073 L 2154.6183,1427.7465 C 2154.1203,1427.4932 2152.885,1427.1233 2151.8713,1426.9313 C 2151.111,1426.7871 2150.4507,1426.7332 2150.1699,1426.7718 z "},"fl21":{"name":"FL-21","path":"M 2263.283,1458.3197 C 2262.79,1458.3197 2262.2321,1458.0697 2262.0433,1457.7643 L 2261.7,1457.2088 L 2262.2934,1456.1002 C 2262.6197,1455.4904 2262.8867,1454.8471 2262.8867,1454.6706 C 2262.8867,1454.4942 2262.5129,1454.3498 2262.056,1454.3498 L 2261.2253,1454.3498 L 2260.718,1453.3573 C 2260.4391,1452.8114 2260.0534,1451.534 2259.861,1450.5186 L 2259.5111,1448.6723 L 2260.1557,1447.2576 C 2260.5102,1446.4795 2261.0056,1445.8428 2261.2564,1445.8428 C 2261.5073,1445.8428 2261.9843,1445.335 2262.3165,1444.7144 L 2262.9205,1443.5859 C 2261.7615,1441.9337 2261.2893,1441.1242 2260.5673,1437.7864 L 2253.8127,1439.1603 L 2253.8127,1434.544 L 2258.4871,1433.2853 L 2262.1205,1434.5863 L 2266.7614,1443.3103 L 2266.6294,1446.619 L 2262.6239,1449.3876 L 2265.9211,1453.9813 L 2265.6863,1456.3347 L 2264.1795,1458.3197 L 2263.283,1458.3197 z "},"tx14":{"name":"TX-14","path":"M 1460.2224,1301.7376 C 1438.3038,1303.3609 1437.7859,1302.8337 1427.2935,1304.396 L 1431.4229,1306.9658 L 1430.1646,1313.5233 L 1431.5647,1314.1967 L 1430.838,1317.1033 L 1433.7446,1316.412 L 1433.7446,1314.1613 L 1436.1017,1310.8471 L 1440.7982,1308.5963 C 1442.0103,1309.9614 1442.618,1311.7657 1443.5098,1313.346 L 1442.8895,1318.7338 L 1440.5501,1323.2885 L 1438.5652,1324.405 L 1440.4083,1325.114 L 1444.8745,1323.6429 C 1447.3325,1322.8414 1449.7112,1321.9578 1450.1559,1321.6757 L 1450.9534,1321.1618 L 1454.7106,1324.0328 L 1454.0549,1325.114 L 1449.9077,1324.7595 L 1449.571,1327.152 L 1446.8063,1328.4104 L 1445.158,1327.7901 L 1443.4567,1330.9979 L 1439.983,1333.674 L 1439.983,1335.145 L 1442.2161,1334.5602 L 1442.8718,1332.4689 L 1444.9986,1330.7852 C 1450.4149,1327.2977 1456.3039,1324.5746 1461.7111,1321.1263 L 1460.2224,1301.7376 z M 1381.7992,1312.2118 C 1378.8297,1313.385 1375.0224,1315.5554 1372.8846,1315.7386 L 1372.2111,1318.2021 L 1370.3325,1319.1237 L 1371.9275,1321.2858 L 1371.9275,1323.7847 L 1367.5677,1324.5114 L 1367.231,1323.4835 L 1363.0307,1322.7568 L 1356.8986,1329.7928 L 1354.6301,1336.6692 L 1339.424,1347.1788 L 1337.6163,1346.6471 L 1323.438,1358.9999 L 1321.0986,1356.8023 L 1304.7228,1371.14 L 1304.3506,1372.6819 C 1305.5834,1372.5492 1306.708,1372.7135 1308.0547,1371.7071 L 1310.146,1372.6287 L 1310.3764,1374.5427 L 1311.9537,1376.3682 L 1311.1916,1387.4627 L 1312.5917,1390.3692 L 1319.1314,1391.4326 L 1320.7442,1392.8504 C 1321.29,1393.0889 1322.0591,1393.2314 1322.4456,1393.1694 C 1322.832,1393.1074 1323.6613,1393.3298 1324.2887,1393.6656 L 1325.423,1394.2682 L 1325.423,1393.0985 L 1326.9472,1393.0985 L 1331.6614,1397.8837 L 1332.2108,1396.4304 L 1334.8161,1398.6635 L 1337.6163,1399.0534 L 1337.8112,1400.4712 C 1337.9191,1401.251 1338.2674,1402.2042 1338.591,1402.5979 L 1339.1759,1403.3245 L 1339.8139,1402.8106 C 1340.1624,1402.5308 1341.2849,1402.1227 1342.2951,1401.9067 C 1343.3052,1401.6907 1344.2776,1401.2757 1344.4572,1400.9851 C 1344.6369,1400.6944 1346.675,1399.5265 1348.9943,1398.3799 L 1353.2123,1396.2886 L 1353.2123,1395.0835 L 1351.0856,1393.6656 C 1349.9233,1392.8858 1348.2629,1391.6098 1347.3992,1390.83 C 1346.5356,1390.0502 1345.4608,1389.0932 1345.0067,1388.7033 L 1344.1914,1387.9944 L 1341.9406,1387.9944 L 1341.1963,1385.6372 L 1341.8166,1385.0169 L 1338.8923,1381.1888 L 1339.5481,1380.3913 C 1339.9104,1379.9547 1340.8416,1379.4482 1341.6039,1379.257 L 1342.9863,1378.9025 L 1345.3434,1381.2597 L 1344.0673,1382.8193 L 1345.2016,1383.4219 C 1345.825,1383.7555 1346.7998,1384.0245 1347.3815,1384.0245 L 1348.4449,1384.0245 L 1349.8627,1387.9412 L 1352.5211,1386.2575 C 1353.9888,1385.3409 1355.8464,1384.3437 1356.6328,1384.0245 L 1358.0506,1383.4396 L 1359.1671,1381.0116 L 1364.5726,1379.3102 L 1365.3524,1380.09 L 1363.4206,1383.351 L 1364.1118,1385.1764 L 1362.7117,1386.8601 L 1363.4206,1386.8601 C 1363.8063,1386.8601 1365.0512,1386.3755 1366.1854,1385.779 C 1367.3196,1385.1824 1369.425,1384.1419 1370.8819,1383.475 L 1373.5403,1382.2699 L 1376.7304,1382.0395 L 1376.376,1385.7967 L 1379.956,1383.989 C 1381.9308,1382.9966 1386.999,1379.9918 1391.2099,1377.3252 C 1395.4209,1374.6585 1399.8314,1371.736 1401.0106,1370.821 L 1403.1551,1369.155 L 1408.2415,1367.2233 L 1417.2093,1358.3973 L 1426.1592,1349.5891 L 1430.9444,1346.0445 C 1433.5759,1344.0941 1436.9418,1341.4711 1438.4234,1340.2315 C 1439.905,1338.9918 1441.1172,1337.7224 1441.1172,1337.4136 L 1441.1172,1336.8641 L 1439.6994,1337.3604 L 1437.7145,1336.3502 L 1437.7145,1339.0441 L 1434.7548,1340.391 L 1433.1066,1339.0263 L 1433.1774,1331.1751 L 1430.8558,1330.5726 L 1431.5647,1327.3116 L 1428.1265,1327.3116 L 1425.2908,1324.4759 L 1423.5186,1324.4759 L 1420.417,1327.7901 L 1418.4349,1327.7264 L 1415.9332,1324.5291 L 1415.242,1326.2305 L 1426.2479,1332.6816 L 1431.6887,1340.6037 L 1423.1641,1346.3635 L 1412.6899,1329.7219 L 1410.7759,1329.5447 L 1407.9402,1327.9142 L 1403.9172,1327.8787 L 1402.5525,1329.2433 L 1402.517,1332.1676 L 1398.8662,1332.3803 L 1397.7142,1333.5146 L 1393.7798,1341.7025 C 1391.2562,1341.9361 1389.9663,1341.9698 1388.5515,1340.9758 L 1384.3158,1342.2696 L 1381.8877,1344.8039 C 1379.7326,1343.5345 1377.8546,1342.3442 1375.8974,1340.6391 L 1375.8974,1338.3174 L 1377.5988,1337.3781 L 1377.5988,1333.7449 L 1375.738,1328.2686 L 1377.6166,1326.9039 L 1376.4646,1326.3014 C 1375.9932,1325.9103 1375.8974,1325.1509 1375.8974,1324.7595 C 1375.8974,1324.368 1376.261,1323.7551 1376.695,1323.3948 L 1377.4748,1322.7391 L 1378.2192,1317.7944 C 1380.1595,1317.4789 1382.4166,1317.0842 1385.8222,1317.0855 L 1387.6122,1315.8981 L 1381.7992,1312.2118 z M 1373.3099,1386.8778 C 1372.9797,1386.8679 1372.214,1387.235 1371.6085,1387.693 L 1370.5097,1388.526 L 1371.1123,1388.5437 C 1371.4425,1388.5537 1372.2082,1388.1865 1372.8137,1387.7285 L 1373.9125,1386.8955 L 1373.3099,1386.8778 z M 1369.1982,1389.0577 L 1366.8766,1390.2274 C 1365.5987,1390.8793 1364.5549,1391.5488 1364.5549,1391.6984 C 1364.5549,1391.848 1364.6878,1391.9643 1364.8562,1391.9643 C 1365.0245,1391.9643 1366.196,1391.4401 1367.4614,1390.7946 C 1368.7269,1390.1489 1369.6378,1389.497 1369.4818,1389.3413 L 1369.1982,1389.0577 z M 1360.1951,1394.7999 C 1359.8831,1394.7999 1359.1646,1395.3103 1358.6,1395.9342 L 1357.5721,1397.0684 L 1358.1392,1397.0684 C 1358.4511,1397.0684 1359.1697,1396.5579 1359.7343,1395.9342 L 1360.7622,1394.7999 L 1360.1951,1394.7999 z M 1353.7794,1401.5877 L 1352.5034,1402.4029 C 1351.8016,1402.8527 1350.1427,1403.507 1348.8171,1403.8562 L 1346.4068,1404.4942 L 1346.4068,1405.5753 L 1344.3509,1405.5753 L 1340.7355,1408.8009 L 1340.7355,1410.1478 L 1339.7784,1410.52 C 1339.2564,1410.7203 1338.3632,1411.3504 1337.7935,1411.9201 L 1336.7656,1412.948 L 1335.1174,1412.948 C 1334.2071,1412.948 1333.1013,1413.0843 1332.6716,1413.2493 L 1331.8918,1413.5506 L 1332.3526,1417.4673 L 1330.4563,1418.2117 L 1329.8005,1417.5559 C 1329.4472,1417.2026 1328.969,1416.9179 1328.7194,1416.9179 L 1328.2586,1416.9179 L 1328.2586,1419.4877 L 1325.9901,1420.9055 L 1325.9901,1422.3942 L 1323.1899,1425.0172 L 1323.7925,1426.0097 L 1322.6228,1427.6402 C 1321.9793,1428.5439 1321.4531,1429.4394 1321.4531,1429.6251 C 1321.4531,1429.8109 1321.538,1429.9619 1321.6481,1429.9619 C 1321.758,1429.9619 1323.0162,1428.4943 1324.4305,1426.7009 C 1325.845,1424.9073 1329.1646,1421.3018 1331.8209,1418.6902 L 1336.6592,1413.9405 L 1346.7435,1406.426 L 1353.7263,1403.0233 L 1353.7794,1401.5877 z M 1332.1222,1405.0082 L 1315.0906,1408.411 L 1315.6046,1410.1301 C 1317.1536,1411.2544 1319.0954,1412.0132 1321.1695,1412.6999 L 1317.5364,1415.8722 C 1315.7379,1417.3213 1313.2138,1419.0308 1311.936,1419.6827 C 1310.658,1420.3346 1309.455,1421.1391 1309.2598,1421.4549 L 1308.9054,1422.0221 L 1314.364,1429.8378 L 1314.7716,1429.5897 C 1316.6271,1427.4101 1318.0275,1424.8844 1319.734,1422.5892 C 1319.9035,1422.4332 1320.0275,1421.0815 1319.9998,1419.594 L 1319.9467,1416.9002 L 1321.3113,1415.7659 L 1324.0052,1416.7584 L 1324.8913,1416.4217 C 1325.383,1416.2296 1327.3609,1414.6855 1329.2866,1413.0012 L 1332.7957,1409.9351 L 1332.7957,1407.9147 L 1331.5551,1407.1526 L 1332.1222,1405.0082 z "},"fl13":{"name":"FL-13","path":"M 2141.0657,1407.9913 L 2137.7489,1404.6528 C 2135.9247,1402.8167 2133.3667,1399.9127 2132.0647,1398.1996 C 2130.7626,1396.4865 2128.4463,1393.1708 2126.9175,1390.8314 C 2125.3886,1388.492 2123.0593,1385.4295 2121.7413,1384.0258 C 2120.4232,1382.6222 2118.1456,1380.2427 2116.6801,1378.7382 C 2115.2145,1377.2337 2113.5715,1375.7586 2113.0289,1375.4604 L 2112.0422,1374.9181 L 2110.3,1371.549 L 2111.4634,1371.549 L 2111.4634,1369.904 L 2112.1842,1369.4504 C 2112.5807,1369.201 2113.1842,1368.3589 2113.5253,1367.5791 C 2113.8664,1366.7993 2114.2143,1365.9061 2114.2985,1365.5941 C 2114.3826,1365.2822 2114.9276,1364.6935 2115.5095,1364.2859 L 2116.5675,1363.5449 L 2116.5675,1362.4762 C 2116.5675,1361.8885 2116.7631,1361.2867 2117.0022,1361.1389 L 2170.2486,1350.7343 L 2177.1831,1387.0742 L 2139.7107,1394.5133 L 2140.426,1399.9054 L 2139.2527,1399.9054 L 2139.2527,1402.7411 L 2142.6155,1402.7411 L 2143.9056,1405.1515 L 2141.0657,1407.9913 z "},"fl9":{"name":"FL-9","path":"M 2106.9263,1313.5764 L 2104.2325,1313.9663 C 2102.7509,1314.1833 2101.3195,1314.5854 2101.0424,1314.8524 L 2100.5284,1315.331 L 2100.298,1318.0603 C 2100.17,1319.561 2099.9535,1321.6828 2099.8195,1322.7746 C 2099.6855,1323.8663 2099.4047,1325.6527 2099.1992,1326.7445 C 2098.9937,1327.8362 2098.49,1329.2307 2098.065,1329.8459 C 2097.6399,1330.4612 2097.2852,1331.2907 2097.2852,1331.6891 L 2097.2852,1332.4157 L 2098.9865,1332.4157 L 2098.9865,1333.9399 L 2103.1691,1339.3099 L 2101.1842,1343.8115 C 2102.1057,1344.7577 2102.892,1344.771 2104.0907,1344.8394 L 2103.0451,1343.8292 L 2108.3442,1341.8797 L 2109.8506,1339.753 L 2125.5176,1331.9018 L 2130.9584,1338.8136 L 2129.5406,1340.9936 C 2130.2944,1345.0802 2130.9894,1346.8715 2132.4826,1350.6348 L 2137.6045,1349.2878 L 2136.8778,1344.5027 L 2138.6501,1343.776 C 2139.6206,1343.374 2140.538,1342.8495 2140.6882,1342.6063 C 2140.8385,1342.3632 2140.7944,1341.7492 2140.5996,1341.2417 L 2140.2452,1340.3201 L 2137.0374,1338.6542 L 2135.8677,1334.4361 L 2138.7387,1331.441 L 2137.4627,1324.086 L 2106.7491,1329.5801 L 2104.8528,1325.6456 L 2103.559,1325.4684 L 2103.6477,1318.3439 L 2106.9263,1315.1892 L 2106.9263,1313.5764 z "},"fl15":{"name":"FL-15","path":"M 2214.35,1346.8696 L 2213.3503,1341.8754 L 2194.4225,1345.4641 L 2193.4788,1344.6931 C 2192.9143,1343.9959 2192.48,1342.5193 2192.48,1342.0859 L 2191.5941,1341.6567 L 2191.4285,1340.9191 C 2191.4285,1340.6045 2190.7267,1339.5384 2189.8689,1338.5501 C 2189.0111,1337.5618 2187.8627,1336.2879 2187.3168,1335.7193 L 2186.3244,1334.6856 L 2182.0709,1334.4021 L 2180.8201,1330.964 L 2179.5188,1330.7157 L 2179.4708,1329.2979 L 2175.7143,1326.9639 L 2173.8475,1327.2773 L 2173.8475,1326.2551 L 2172.7133,1325.8951 C 2172.0894,1325.6971 2171.579,1325.3193 2171.579,1325.0555 L 2171.579,1324.5758 L 2174.8145,1325.7971 L 2176.7659,1325.1904 L 2176.7384,1321.0859 L 2166.2819,1312.7242 L 2164.2372,1313.2589 L 2162.753,1318.5138 L 2160.8441,1318.8814 L 2160.1135,1315.9704 L 2158.7328,1315.9704 L 2155.6703,1318.9439 L 2153.4017,1315.4032 L 2149.0152,1315.4032 L 2148.2309,1314.4928 L 2148.1336,1309.8147 L 2149.5004,1309.4346 L 2149.7446,1310.7925 L 2175.8325,1304.062 L 2204.1861,1298.3979 C 2204.7662,1296.8512 2205.3142,1296.0157 2206.848,1294.3882 L 2210.8348,1295.1361 L 2210.1332,1292.9257 L 2212.9794,1290.2519 L 2212.9843,1285.0619 L 2216.3509,1290.1366 L 2213.3934,1293.2236 L 2213.9565,1301.5086 L 2218.0949,1311.7169 L 2220.7749,1315.6868 C 2222.2488,1317.8703 2223.796,1320.0124 2224.213,1320.4472 C 2224.63,1320.8819 2226.8175,1323.6892 2229.0742,1326.6856 L 2233.1772,1332.1335 L 2238.4082,1341.8773 L 2214.35,1346.8696 z "},"tx9":{"name":"TX-9","path":"M 1397.9687,1323.4811 L 1393.6527,1318.806 L 1390.7299,1318.806 C 1389.1224,1318.806 1387.8071,1318.6993 1387.8071,1318.5688 L 1387.1365,1316.5838 L 1391.1164,1314.0153 L 1395.4126,1313.9974 L 1398.8955,1315.7606 L 1398.7709,1317.7446 L 1400.6895,1319.6366 L 1402.1624,1320.0063 L 1403.7917,1318.377 L 1408.7909,1319.9047 L 1408.7822,1320.6314 C 1408.7775,1321.0311 1408.5861,1321.6497 1408.3569,1322.0062 L 1407.9402,1322.6542 L 1397.9687,1323.4811 z "},"fl24":{"name":"FL-24","path":"M 2174.84,1249.0833 L 2172.7133,1250.2175 L 2172.7133,1253.0177 L 2169.8776,1253.0177 L 2169.8776,1256.1724 L 2175.5489,1261.7728 L 2175.5489,1270.581 L 2178.3314,1271.2722 L 2179.2352,1279.9563 L 2173.564,1281.8349 L 2173.2509,1288.1215 L 2171.8336,1287.8502 L 2167.8927,1284.8833 L 2165.8368,1285.9998 L 2164.2063,1284.6528 L 2164.9507,1280.0804 L 2156.9752,1281.533 L 2159.3897,1286.2033 C 2161.9414,1288.1093 2163.5087,1288.3583 2165.6242,1288.4455 L 2170.781,1287.6951 L 2172.0044,1289.314 L 2177.7997,1287.7012 L 2180.1923,1296.9348 L 2176.7775,1299.5218 L 2176.9822,1303.3677 L 2203.8569,1297.8681 C 2204.5826,1296.2991 2205.5441,1295.1546 2207.0246,1293.8687 L 2210.1438,1294.5067 L 2209.5412,1292.9471 L 2212.4123,1290.2532 L 2212.4123,1283.235 L 2207.1663,1278.1663 C 2204.2811,1275.38 2199.8787,1270.8383 2197.3834,1268.0643 C 2194.888,1265.2903 2192.1575,1262.2329 2191.3222,1261.2765 C 2190.4869,1260.3201 2188.5729,1258.1723 2187.0687,1256.4914 C 2185.5646,1254.8104 2184.0034,1252.9612 2183.5951,1252.3797 L 2182.8507,1251.3163 L 2180.4404,1252.6101 L 2178.4378,1250.1112 L 2174.84,1249.0833 z "},"tx31":{"name":"TX-31","path":"M 1236.2774,1146.9469 L 1237.0396,1160.3453 L 1233.1228,1162.8797 L 1244.6958,1182.0557 L 1248.3998,1179.8581 L 1253.8939,1188.5954 L 1238.1561,1198.662 L 1248.0986,1214.3998 L 1253.0964,1211.7237 L 1268.143,1235.9861 L 1268.143,1238.5559 L 1272.6446,1246.0881 L 1265.6441,1253.7266 L 1261.0362,1264.1299 L 1261.8691,1264.2008 L 1263.2693,1264.059 C 1264.0389,1263.9745 1264.9372,1263.7409 1265.2542,1263.545 L 1265.8213,1263.1906 L 1268.143,1265.4059 L 1268.143,1266.1857 L 1270.8369,1268.2948 L 1271.4926,1271.6089 L 1274.0978,1274.5154 L 1276.467,1274.5092 C 1279.9026,1273.6505 1277.2526,1274.6025 1286.4219,1270.6255 L 1288.9673,1272.2647 L 1290.9302,1272.1698 L 1299.4769,1276.2522 L 1308.8895,1272.5429 L 1337.3504,1254.5596 L 1339.7483,1256.9234 L 1345.3429,1253.639 C 1346.5978,1251.2453 1349.462,1246.1357 1350.4653,1242.3841 L 1346.7967,1241.108 L 1343.436,1243.3765 L 1337.8998,1243.3765 L 1337.8998,1247.7718 L 1335.1423,1249.009 C 1332.7733,1248.095 1332.5713,1247.2971 1332.2285,1245.3605 C 1330.9402,1245.1517 1330.356,1245.1943 1329.2689,1243.6778 L 1328.2232,1240.9662 L 1328.879,1238.9281 L 1327.7978,1238.2724 C 1329.0133,1235.4999 1326.1636,1234.7302 1324.8559,1232.5479 C 1328.466,1229.5869 1332.6708,1227.4198 1336.4643,1224.6967 L 1325.4053,1206.8144 C 1316.1036,1212.8457 1306.7218,1218.7509 1297.4565,1224.8385 C 1289.459,1214.51 1284.6831,1206.7591 1278.2982,1196.2694 L 1274.5764,1198.5556 L 1261.3374,1177.2883 L 1268.143,1172.769 L 1257.4739,1147.2482 L 1236.2774,1146.9469 z "},"tx13":{"name":"TX-13","path":"M 1149.6131,1146.966 L 1149.629,1119.4193 L 1130.3307,1119.1767 L 1130.3307,1091.9545 L 1076.7371,1091.9554 L 1077.0606,1065.2995 L 1103.6757,1065.2995 L 1103.6757,1034.6745 L 1055.1862,1033.9342 L 1055.509,1006.8852 L 1047.2464,1006.8854 L 1047.6454,979.83926 L 1003.8371,978.34521 L 1006.6967,896.68639 C 1058.4305,898.65297 1103.5417,898.60391 1155.8515,899.13077 L 1155.8515,1020.4963 L 1158.4603,1020.4963 L 1159.8833,1019.0785 C 1163.6187,1021.9674 1165.7384,1027.1128 1169.7484,1029.5704 L 1171.7407,1031.8389 L 1178.0757,1031.8389 L 1178.669,1029.5704 L 1181.3378,1029.5704 L 1185.3767,1031.8389 L 1188.1778,1031.8389 L 1188.1778,1027.3019 L 1188.7402,1027.3019 L 1190.7192,1029.5704 L 1193.282,1029.5704 L 1193.282,1030.2951 C 1193.6703,1031.6736 1194.9326,1032.5757 1195.8341,1033.6421 C 1197.0185,1036.2067 1196.8489,1039.1881 1197.9638,1041.8139 L 1207.1313,1042.5377 L 1208.5771,1041.1965 L 1210.7241,1042.6143 L 1214.9224,1045.0356 L 1217.039,1044.6631 L 1220.2605,1047.1196 L 1224.4559,1046.4388 L 1225.7472,1044.8829 L 1228.3764,1044.8829 L 1234.2809,1051.2689 C 1235.4523,1049.9283 1237.3443,1048.6609 1238.8163,1048.6393 L 1238.9568,1045.8061 L 1240.9218,1044.6389 L 1244.04,1046.4575 L 1251.2205,1047.2734 L 1252.9758,1044.7673 L 1253.9166,1046.2897 L 1252.2068,1048.8993 L 1254.6708,1054.524 L 1261.4588,1054.524 C 1260.8149,1056.8856 1260.6749,1058.8873 1260.8228,1061.3929 C 1262.8521,1061.4862 1264.4493,1062.4434 1265.8307,1063.8324 L 1270.1797,1061.1496 C 1270.6787,1059.3697 1271.0336,1058.5256 1272.9004,1057.3935 L 1274.3677,1057.4694 C 1274.7297,1056.4107 1275.119,1055.3761 1275.8134,1054.524 L 1279.4856,1056.2546 L 1279.4856,1059.6638 L 1281.3299,1060.3715 L 1285.0106,1059.0405 L 1286.7978,1059.7264 L 1287.1418,1064.4488 L 1292.323,1064.7861 L 1293.7114,1061.6088 L 1297.5529,1061.9822 L 1298.2008,1059.128 L 1299.3848,1058.3963 L 1300.9108,1059.6628 L 1301.4405,1062.4337 L 1299.1586,1063.9489 L 1302.2387,1070.4867 L 1300.1094,1076.2656 L 1306.0729,1079.4255 L 1307.2749,1088.7056 L 1263.6592,1088.5518 L 1264.3525,1115.7739 L 1257.3675,1115.7739 L 1257.3675,1146.3989 L 1231.4976,1146.2029 L 1230.8047,1119.7438 L 1238.6523,1119.7438 L 1237.8016,1078.6947 L 1234.0045,1077.7152 L 1231.5376,1075.0534 L 1228.7275,1074.6571 L 1228.7275,1070.1681 C 1226.9045,1069.0076 1225.4173,1068.351 1222.7543,1068.7023 L 1220.8612,1064.7324 L 1210.114,1064.7324 L 1210.9014,1119.0012 L 1176.8353,1119.7438 L 1176.8353,1146.966 L 1149.6131,1146.966 z "},"tx24":{"name":"TX-24","path":"M 1309.8377,1142.8304 L 1309.5434,1128.8917 L 1308.2439,1125.6814 L 1306.699,1126.6741 L 1304.0417,1124.933 L 1302.0832,1120.8058 L 1302.8292,1116.3908 L 1310.3941,1116.0575 L 1311.0514,1114.154 C 1312.7689,1113.2469 1314.97,1111.4934 1316.4053,1110.1027 L 1318.4599,1110.1027 L 1319.4681,1120.0274 L 1313.5816,1122.7655 L 1312.8681,1126.9888 L 1314.8548,1132.3356 C 1316.1996,1131.6259 1317.5217,1130.8687 1319.0093,1130.5228 C 1319.3808,1130.5209 1319.833,1130.7591 1320.0141,1131.0521 L 1320.3433,1131.5849 L 1317.557,1134.2056 L 1315.1797,1140.2911 L 1315.8583,1142.429 L 1309.8377,1142.8304 z "},"tx26":{"name":"TX-26","path":"M 1296.5394,1138.4591 L 1295.3252,1136.1906 L 1297.0966,1130.0661 L 1298.7679,1128.679 L 1298.7888,1122.2959 L 1296.783,1115.7836 L 1291.9624,1115.7739 L 1291.9624,1089.1189 L 1307.9944,1089.1189 L 1306.9197,1079.0766 L 1301.0365,1075.8661 L 1302.767,1070.9708 L 1305.3466,1070.9708 L 1306.7077,1069.6097 L 1306.7077,1065.3523 L 1311.9404,1060.1937 L 1311.4412,1056.7926 L 1312.8186,1056.7926 L 1314.2147,1089.0622 L 1319.4681,1089.4025 L 1319.7784,1108.9401 C 1315.7265,1108.8868 1316.0533,1110.4628 1310.6776,1113.668 L 1310.0667,1115.391 L 1302.2995,1115.7739 L 1301.538,1120.852 L 1303.4489,1124.8788 L 1306.2787,1127.1048 L 1304.3187,1130.0961 L 1301.1195,1131.3037 L 1300.5108,1132.6396 C 1300.1761,1133.3743 1299.9022,1134.5805 1299.9022,1135.3202 C 1299.9022,1136.0598 1299.7473,1137.0686 1299.558,1137.562 L 1299.2137,1138.4591 L 1296.5394,1138.4591 z "},"ga13":{"name":"GA-13","path":"M 1967.8104,1029.779 L 1967.4127,1025.8617 L 1961.7414,1021.3694 L 1961.7414,1020.7507 C 1961.7414,1020.4105 1960.5973,1018.938 1959.1988,1017.4786 L 1956.4361,1014.6049 L 1949.9886,1015.4855 L 1949.5481,1016.4903 L 1945.0111,1016.521 L 1936.6082,1019.5795 L 1933.385,1015.7185 L 1933.385,1013.8666 L 1936.5499,1010.0558 L 1934.0079,1005.0602 L 1934.1535,1001.2694 L 1938.6156,1000.6132 L 1937.8404,994.4084 L 1942.7816,994.4084 L 1944.7917,991.00562 L 1946.0356,990.99695 C 1946.7198,990.99218 1947.5627,990.80078 1947.9086,990.5716 C 1948.2546,990.34242 1948.88,989.1979 1949.2986,988.0282 L 1950.0596,985.90147 L 1951.4117,985.90147 L 1952.0646,987.60285 L 1954.3687,987.60285 L 1954.3687,990.94925 L 1956.1058,991.92137 L 1951.6893,995.47057 L 1951.0198,998.81822 L 1945.9728,1001.2614 L 1945.2529,1004.1297 L 1948.4139,1007.8907 L 1953.1696,1009.1537 L 1960.3236,1009.1522 L 1969.9648,1007.428 C 1973.5948,1007.8272 1976.9921,1009.0516 1980.0445,1011.0432 L 1981.05,1011.8501 L 1980.3005,1018.2278 L 1979.3577,1018.2278 C 1978.8392,1018.2278 1978.1087,1018.5341 1977.7344,1018.9084 L 1977.0539,1019.5889 L 1977.0539,1021.6501 L 1970.5319,1024.7704 L 1969.9648,1029.8438 L 1967.8104,1029.779 z "},"ca40":{"name":"CA-40","path":"M 244.13219,983.99064 C 244.32042,981.81037 245.25013,980.17381 246.10568,978.11711 L 244.81598,976.82741 L 240.62716,976.82741 L 239.14977,981.98675 L 235.69095,982.77908 L 234.35474,979.76162 C 235.78447,977.70697 238.28934,975.86238 241.28853,973.8324 L 247.02778,974.85193 L 247.6036,978.82274 L 251.43176,981.13106 L 250.7951,983.64991 L 244.13219,983.99064 z "},"ca39":{"name":"CA-39","path":"M 228.18379,967.04784 L 227.02005,969.75355 C 228.34418,970.90976 229.98946,972.60156 231.5558,973.42327 L 231.51448,975.44129 L 231.30768,975.86902 C 231.07175,976.24009 230.86938,976.74824 230.86461,977.00327 L 230.86461,977.46407 L 232.97362,976.80829 L 233.68253,977.65899 C 234.07669,978.1339 234.61912,978.52743 234.86996,978.52743 C 236.56663,976.52053 238.6791,975.29332 241.12941,973.59829 L 241.32105,972.34216 L 240.06273,970.99523 C 239.37134,970.25926 238.80441,969.36229 238.80441,968.99258 L 238.80441,968.31912 L 236.92111,968.13718 L 236.89513,968.83186 L 238.02231,969.87413 L 237.95372,974.8411 L 231.87481,974.90966 L 232.36269,970.7707 L 228.18379,967.04784 z "},"ga9":{"name":"GA-9","path":"M 1966.4701,975.69315 L 1965.7113,974.27533 C 1965.2939,973.49553 1964.7404,972.85751 1964.4812,972.85751 L 1964.0099,972.08332 C 1964.0099,971.65746 1963.5038,970.66567 1962.8852,969.87934 L 1961.7606,968.44955 L 1960.04,961.84375 L 1960.04,956.9779 L 1957.9983,956.9779 L 1956.5841,958.39572 L 1951.6483,958.7575 C 1948.9336,958.95644 1944.288,959.52845 1941.3248,960.0286 C 1938.3615,960.5287 1933.3105,961.22269 1930.1003,961.57074 L 1924.2635,962.20348 L 1921.952,960.60163 C 1920.6807,959.72059 1918.1002,957.62528 1916.2175,955.94544 L 1912.7944,952.89112 L 1900.2079,953.49902 C 1896.0069,954.28852 1891.8954,955.6447 1887.6597,956.22714 C 1885.8151,950.46761 1883.9284,944.72083 1882.0579,938.96981 C 1911.4505,934.58885 1937.7975,930.20784 1965.6673,925.25584 L 1965.9729,925.75026 C 1966.141,926.0222 1967.7459,927.09629 1969.5394,928.13708 C 1971.333,929.17788 1973.2834,930.22831 1973.8738,930.47138 C 1974.4642,930.71446 1976.4255,931.99271 1978.2324,933.31196 L 1981.5175,935.71058 L 1984.7101,940.70636 L 1985.3694,943.31265 C 1985.7321,944.74607 1986.3859,946.86895 1986.8223,948.03009 L 1987.6157,950.14134 L 1989.9497,952.63154 C 1991.2334,954.0011 1992.9501,955.60715 1993.7646,956.20043 L 1995.2455,957.27922 L 1994.385,959.7181 C 1993.9117,961.05947 1992.9847,962.91495 1992.3251,963.84135 C 1991.6654,964.76776 1991.2438,965.93286 1991.1661,966.4675 L 1990.934,967.68178 L 1981.0514,967.79713 L 1981.745,972.85751 L 1976.9003,972.85751 L 1974.2724,975.69315 L 1966.4701,975.69315 z "},"ca34":{"name":"CA-34","path":"M 232.23231,974.63999 L 232.70948,970.61922 L 228.43394,966.73427 L 228.31233,963.80982 C 227.10377,962.74322 227.72259,962.25447 228.20578,961.69278 L 231.1506,962.69014 L 234.98735,969.9018 L 233.71387,973.5549 L 234.3343,974.55889 L 232.23231,974.63999 z "},"ca38":{"name":"CA-38","path":"M 234.68166,974.57352 L 234.15493,973.5532 L 235.41863,969.86437 L 232.74364,964.75188 C 234.20453,965.61244 235.9445,965.5796 237.45703,966.21694 L 237.81398,966.57383 C 240.53807,964.93761 241.67981,964.51742 243.15853,964.71257 L 246.3694,968.29972 L 247.69926,967.19609 C 250.25532,967.22841 252.66487,965.22424 254.31254,963.71817 L 256.69875,965.20711 L 256.09181,968.19537 L 254.13275,968.93042 L 251.13473,967.74711 C 249.3887,968.56684 247.59872,969.04952 245.67688,968.88761 C 245.33578,969.80777 244.77491,970.01007 244.03821,970.15372 L 238.8982,968.00243 L 236.60915,967.81193 C 236.41584,968.97137 237.1016,969.55937 237.74341,970.14737 L 237.67016,974.55889 L 234.68166,974.57352 z "},"tn9":{"name":"TN-9","path":"M 1645.9384,967.25688 L 1646.5189,965.03703 L 1651.089,965.57262 L 1652.186,959.12403 L 1656.4298,959.13169 L 1657.1933,956.48722 L 1656.059,956.12721 C 1655.4352,955.92922 1654.9287,955.59297 1654.9334,955.38007 C 1654.9382,955.16717 1655.1296,954.71217 1655.3588,954.36894 C 1655.588,954.02571 1656.3709,953.43119 1657.0987,953.0477 L 1658.4219,952.35047 L 1660.3847,954.12678 L 1662.0053,952.98339 L 1661.0907,951.73831 C 1660.7681,951.13551 1660.617,950.52948 1660.755,950.3915 C 1660.893,950.25351 1661.7431,950.41736 1662.6441,950.75554 L 1664.2824,951.37047 L 1665.5814,952.75637 C 1666.2958,953.51859 1667.098,954.14226 1667.3639,954.14226 C 1667.6298,954.14226 1667.9942,953.75945 1668.1738,953.29157 L 1668.5002,952.44087 L 1671.3715,952.44087 L 1671.3694,952.86622 C 1671.3682,953.10016 1670.8615,954.12099 1670.2435,955.13473 L 1669.1197,956.9779 L 1667.7898,957.76581 L 1673.0849,961.00264 L 1678.7442,961.67293 L 1678.7442,963.78345 L 1645.9384,967.25688 z "},"nc9":{"name":"NC-9","path":"M 2110.7545,864.5877 L 2109.0422,864.92991 L 2107.5289,866.05872 L 2107.4935,871.97813 L 2091.029,874.77833 L 2091.8088,876.65694 L 2093.8824,877.01139 L 2093.8824,878.67734 L 2089.3454,881.26486 L 2089.3454,882.96625 L 2090.8873,883.67516 C 2091.866,884.08786 2092.8764,884.45241 2093.9533,884.38407 L 2096.1863,882.36367 L 2097.2852,884.59674 C 2096.9015,886.1843 2095.945,887.5263 2095.4243,889.04513 L 2106.1465,887.53872 L 2108.0783,890.0908 L 2107.4758,891.20731 L 2106.8732,892.34156 L 2107.6176,893.56446 L 2112.4913,888.77932 L 2122.8059,898.72176 C 2122.699,902.77463 2123.0371,903.40942 2123.4263,905.08427 L 2138.278,902.08909 L 2135.1764,895.15951 L 2132.9966,894.69872 L 2132.0218,892.30612 L 2133.5991,891.01238 L 2135.336,891.82763 L 2138.9691,889.71859 L 2139.4299,888.37166 L 2136.3461,885.03978 L 2137.0905,880.75087 L 2135.3714,881.77879 L 2123.2667,877.29496 L 2120.5906,872.1908 C 2120.4684,874.27608 2120.3924,876.01342 2119.4564,877.84434 L 2121.1932,879.7407 L 2115.1497,881.12308 L 2114.4408,882.23958 L 2115.6459,885.44743 L 2114.3168,888.35397 L 2110.2051,888.35397 L 2110.7368,885.51833 L 2107.9011,885.51833 L 2107.1568,884.52585 C 2106.7424,883.97999 2106.3869,883.21436 2106.377,882.82446 L 2106.3061,882.47001 L 2108.8227,881.81424 L 2108.6277,878.14565 L 2112.5976,878.14565 L 2112.5976,877.48988 C 2112.5976,877.12454 2112.626,876.8412 2112.1546,876.32018 L 2110.8785,874.92011 L 2113.6787,871.90724 L 2115.4333,871.90724 L 2115.4333,873.60862 L 2116.5675,873.60862 L 2116.6384,872.04902 C 2116.6744,871.19124 2116.7479,870.1066 2116.798,869.63872 C 2116.8478,869.17084 2116.6786,868.34141 2116.4257,867.79555 L 2115.965,866.80308 L 2115.0611,866.80308 C 2114.5686,866.80308 2113.1699,866.23499 2111.9419,865.54473 L 2110.7545,864.5877 z "},"ca15":{"name":"CA-15","path":"M 103.31778,753.59693 L 102.21333,752.99804 C 102.93362,752.21002 101.66912,751.08659 100.41707,749.83454 L 98.140624,747.55809 L 97.771414,746.07317 C 97.568334,745.25645 96.905244,743.69498 96.297844,742.60325 C 95.690454,741.51153 93.785584,739.01032 92.064804,737.045 L 88.936064,733.47174 L 90.822694,729.80571 L 90.090454,725.02226 L 89.626944,725.02226 C 89.372014,725.02226 88.762414,724.62125 88.272244,724.13108 C 87.782074,723.64091 87.381054,723.04599 87.381054,722.8091 C 87.381054,722.57215 88.019074,722.03684 88.798874,721.61949 L 90.216694,720.86067 L 90.312734,714.55698 C 91.337644,715.01227 92.293284,716.0863 93.755074,715.90794 L 98.792474,715.21746 L 98.440064,720.7688 L 95.141244,720.7688 L 94.716464,722.01489 L 96.820964,724.61387 L 94.186594,727.45638 C 94.109154,730.20196 94.223784,732.1792 94.818604,734.97276 L 98.917244,737.21553 L 102.44796,743.79405 L 105.1345,745.15533 L 107.66225,749.16873 L 103.31778,753.59693 z "},"ca14":{"name":"CA-14","path":"M 71.96875,702.34375 C 70.49866,702.85286 69.238643,703.74017 67.90625,704.53125 L 66.96875,703.96875 L 66.96875,706.40625 L 69.0625,706.96875 L 69.78125,717.71875 L 67.53125,723.59375 L 67.53125,726.59375 L 69.15625,727.9375 L 69.9375,731.53125 L 71.84375,733.25 L 72.84375,735.90625 C 73.39069,737.36422 74.587206,739.58361 75.5,740.84375 C 76.4128,742.10385 77.807202,743.54712 78.59375,744.0625 L 79.6875,744.78125 C 79.677715,744.45647 79.701178,744.11597 79.8125,743.78125 L 79.84375,743.71875 L 79.875,743.6875 C 80.219332,743.39728 80.464306,742.96762 80.46875,742.53125 L 80.46875,742.5 L 80.46875,742.46875 C 80.54607,742.04493 80.497509,741.62354 80.34375,741.21875 L 80.375,741.21875 C 80.299074,741.06732 80.194979,740.89809 80.21875,740.6875 C 80.225016,740.63199 80.235925,740.56512 80.28125,740.5 C 80.326575,740.43488 80.418026,740.39101 80.5,740.375 C 80.640001,740.34766 80.736813,740.40549 80.84375,740.46875 C 80.862042,740.47957 80.887563,740.45692 80.90625,740.46875 C 81.053105,740.52528 81.153504,740.65114 81.21875,740.75 C 81.294559,740.86487 81.328623,740.95557 81.375,741.03125 C 81.421377,741.10693 81.475859,741.12723 81.46875,741.125 C 81.461641,741.12277 81.475862,741.14602 81.59375,741.0625 L 81.625,741.0625 L 81.625,741.03125 C 81.814364,740.94846 82.02147,740.96546 82.1875,741.03125 C 82.35353,741.09704 82.468157,741.21583 82.5625,741.34375 C 82.751187,741.59959 82.872273,741.87843 82.9375,742.09375 C 82.950646,742.13188 82.948756,742.14944 82.96875,742.1875 C 83.034121,742.07227 83.114306,741.94572 83.21875,741.90625 C 83.354305,741.85502 83.474157,741.87353 83.5625,741.875 C 83.650843,741.87647 83.722205,741.88392 83.75,741.875 C 83.777795,741.86608 83.782891,741.84121 83.8125,741.78125 L 83.8125,741.75 L 83.875,741.6875 C 83.971868,741.62006 84.118474,741.62361 84.21875,741.65625 C 84.319026,741.68889 84.381797,741.72685 84.4375,741.78125 C 84.537875,741.87928 84.622078,742.0074 84.6875,742.09375 C 84.725173,741.82776 84.876097,741.59731 85.0625,741.5 C 85.234468,741.41023 85.402211,741.39732 85.5625,741.375 C 85.709112,741.23243 85.801559,740.9274 85.8125,740.8125 L 85.875,740.03125 L 86.28125,740.71875 C 86.378475,740.88663 86.581979,741.11043 86.71875,741.375 C 86.787136,741.50729 86.846164,741.64149 86.84375,741.8125 C 86.841336,741.98351 86.753337,742.15772 86.625,742.3125 L 86.625,742.34375 C 86.528514,742.45436 86.478109,742.64049 86.5,742.75 C 86.510945,742.80475 86.546016,742.83193 86.5625,742.84375 C 86.578984,742.85557 86.594673,742.86005 86.6875,742.84375 C 86.934783,742.75122 87.189153,742.73131 87.34375,742.6875 C 87.514018,742.63924 87.570022,742.62599 87.625,742.40625 L 87.65625,742.3125 L 87.71875,742.28125 C 88.147417,741.94737 88.293467,741.31511 88.75,740.78125 C 88.849511,740.65739 88.885514,740.411 88.96875,740.125 C 89.044803,739.86368 89.237919,739.5698 89.5625,739.40625 L 89.53125,739.375 C 89.66139,739.2694 89.768948,739.08343 89.875,738.84375 C 89.97068,738.62751 90.110623,738.38202 90.34375,738.1875 C 90.35352,738.17483 90.36486,738.1683 90.375,738.15625 C 90.388343,738.14609 90.392168,738.13474 90.40625,738.125 C 90.531772,737.9885 90.684673,737.87524 90.84375,737.84375 C 91.029422,737.807 91.194378,737.85327 91.34375,737.9375 C 91.621583,738.09416 91.795658,738.37372 91.875,738.6875 C 91.880972,738.71112 91.901604,738.72603 91.90625,738.75 C 92.016442,738.94255 92.14188,739.13132 92.1875,739.375 C 92.232182,739.61367 92.126842,739.89238 91.9375,740.125 L 91.96875,740.125 C 91.878169,740.34591 91.914995,740.53395 92.03125,740.75 C 92.147505,740.96605 92.346069,741.20179 92.5,741.46875 L 92.53125,741.46875 L 92.53125,741.5 C 92.640849,741.86212 93.005305,742.25524 93.09375,742.8125 C 93.095521,742.82366 93.092213,742.83244 93.09375,742.84375 C 93.18911,743.17958 93.125162,743.51711 92.90625,743.75 C 92.79317,743.8703 92.626425,743.9557 92.4375,743.9375 C 92.262373,743.92063 92.104923,743.80932 91.96875,743.65625 C 91.88305,743.58798 91.72875,743.63314 91.65625,743.6875 C 91.62,743.71468 91.625336,743.71064 91.625,743.71875 C 91.624664,743.72686 91.603741,743.76796 91.6875,743.84375 L 91.71875,743.84375 L 91.71875,743.875 C 91.909672,744.08541 92.017746,744.38227 92.15625,744.5625 C 92.225502,744.65262 92.308033,744.6863 92.3125,744.6875 C 92.316967,744.6887 92.298574,744.70871 92.375,744.625 L 92.375,744.59375 L 92.40625,744.59375 C 92.484645,744.53898 92.581399,744.50439 92.6875,744.5 C 92.793601,744.49561 92.904192,744.53372 92.96875,744.59375 C 93.097866,744.71381 93.115591,744.85553 93.15625,744.96875 C 93.196909,745.08197 93.244811,745.15959 93.28125,745.21875 C 93.317689,745.27791 93.319316,745.27881 93.34375,745.28125 L 93.375,745.28125 L 93.40625,745.3125 C 93.493028,745.34242 93.605755,745.2876 93.8125,745.15625 C 94.019245,745.0249 94.254345,744.82128 94.5625,744.75 L 94.625,744.75 C 94.648171,744.7071 94.67118,744.61749 94.6875,744.53125 C 94.69566,744.48813 94.711494,744.44495 94.71875,744.40625 C 94.722378,744.3869 94.712347,744.36706 94.71875,744.34375 C 94.725153,744.32044 94.714465,744.29405 94.78125,744.21875 C 94.789598,744.20934 94.812098,744.18782 94.8125,744.1875 C 94.812902,744.18718 94.87459,744.15645 94.875,744.15625 C 94.875819,744.15586 95.030396,744.12487 95.03125,744.125 C 95.032104,744.12513 95.124105,744.18683 95.125,744.1875 C 95.125895,744.18817 95.176422,744.20432 95.1875,744.21875 C 95.23181,744.27649 95.241766,744.31818 95.25,744.34375 C 95.263797,744.3866 95.268716,744.43966 95.28125,744.5 C 95.283676,744.51168 95.278601,744.51823 95.28125,744.53125 C 95.478803,745.14094 95.231268,745.7437 94.90625,746.1875 L 94.8125,746.3125 L 94.65625,746.28125 C 94.458399,746.23436 94.311352,746.26106 94.25,746.3125 C 94.188648,746.36394 94.154373,746.46514 94.1875,746.6875 L 94.1875,746.71875 C 94.1862,746.76592 94.184576,746.76707 94.1875,746.78125 C 94.192467,746.77624 94.225491,746.76926 94.3125,746.75 C 94.420226,746.72615 94.536306,746.67269 94.71875,746.71875 C 94.809972,746.74178 94.905213,746.81623 94.96875,746.90625 C 95.019141,746.97765 95.04741,747.06918 95.0625,747.15625 C 95.066436,747.17896 95.091474,747.19519 95.09375,747.21875 C 95.17502,747.41633 95.262201,747.60604 95.3125,747.6875 C 95.319274,747.68304 95.359635,747.66693 95.40625,747.625 C 95.416309,747.61265 95.427328,747.60591 95.4375,747.59375 C 95.824052,747.13152 96.294871,746.7976 96.625,746.40625 C 96.631965,746.39086 96.648319,746.38952 96.65625,746.375 C 96.747613,746.20774 96.886841,746.08409 97.03125,746.03125 C 96.742054,745.20407 96.212119,744.03494 95.6875,743.15625 C 95.0357,742.06453 93.727899,740.15489 92.78125,738.90625 C 91.8346,737.65766 90.482156,736.07591 89.78125,735.375 L 88.5,734.09375 L 88.5,733.21875 C 88.79554,731.88248 89.486231,730.76455 90.28125,729.65625 L 89.53125,725.65625 L 86.8125,723.875 L 86.8125,721.8125 L 89.53125,720.5625 L 89.9375,714.25 L 87.59375,714.25 L 84.3125,710.34375 L 83.3125,710.96875 L 81.65625,708.5625 L 79.03125,708.5625 L 71.96875,702.34375 z "},"ca9":{"name":"CA-9","path":"M 82.349544,684.87386 C 81.826364,686.02122 81.585464,687.36617 81.711524,689.16277 L 79.691124,689.69446 L 79.513904,692.15795 L 80.435484,691.57307 L 83.501554,693.98337 L 82.908764,694.68201 L 84.308834,696.66696 L 88.446174,696.65953 C 89.447884,698.23819 89.969714,699.61921 90.519774,701.48013 L 93.249074,701.39149 C 94.750724,701.33869 96.129524,701.15176 96.297394,700.98389 L 96.598654,700.68257 L 93.339414,696.6107 L 94.742444,696.21978 L 92.965514,694.33782 C 92.289324,693.75141 91.505894,693.25676 91.210934,693.25676 C 90.915964,693.25676 89.814714,692.85087 88.765184,692.35287 L 86.851124,691.44904 L 86.496674,690.22614 C 86.294604,689.55443 85.745564,688.21385 85.291524,687.23102 L 84.476274,685.44099 L 83.412914,685.15743 L 82.349544,684.87386 z "},"ca13":{"name":"CA-13","path":"M 80.416004,691.79068 L 79.547584,692.35781 C 79.547594,692.35781 80.938684,693.25194 81.426204,694.07694 C 81.913724,694.90195 82.968084,696.45179 82.968084,696.45179 L 83.960554,697.49741 L 85.591054,699.78368 L 86.105014,711.19714 L 87.646894,713.67833 L 90.553434,713.67833 L 91.085114,714.19226 C 91.381444,714.4739 92.144824,714.83306 92.768774,714.98981 C 93.392614,715.14651 94.413334,715.18281 95.037294,715.06071 C 95.661134,714.93855 96.684434,714.83448 97.323524,714.83028 L 98.493234,714.81259 L 99.166694,712.93397 C 99.541294,711.89811 99.857774,710.53292 99.857884,709.90335 L 99.857884,708.76909 L 97.039964,707.05001 L 97.022244,706.3411 L 98.776794,704.42704 L 98.776794,701.99899 L 96.827294,701.44962 L 90.269864,701.85721 C 89.761554,699.94202 89.515744,698.85188 88.407414,696.8992 L 84.294454,696.94106 L 82.666794,694.67952 L 83.216204,694.00605 L 80.416004,691.79068 z "},"oh15":{"name":"OH-15","path":"M 1928.2808,630.80761 L 1928.2808,627.47613 L 1930.9573,627.47613 L 1931.7595,611.67309 L 1930.3787,597.88579 L 1927.7137,598.3953 L 1926.2145,581.74003 L 1938.2159,579.0958 L 1940.9318,595.61733 L 1944.5562,595.02916 L 1945.9468,602.09718 L 1944.7275,603.31645 L 1944.7275,605.80228 L 1947.9514,606.58424 L 1951.1677,600.75558 L 1952.1844,602.5722 L 1954.0852,602.00144 C 1956.0261,603.41938 1956.7992,604.96707 1957.2005,606.55611 L 1955.6137,609.62462 L 1957.7554,612.26942 L 1962.3085,612.88011 L 1962.2912,616.41712 L 1961.429,618.10818 L 1960.4697,616.09159 L 1957.0825,614.39718 L 1955.503,616.14699 L 1956.7017,617.88133 L 1956.0294,619.99071 C 1952.6561,621.06162 1949.1106,620.97042 1945.6513,621.46031 L 1946.9313,628.5345 C 1940.4578,629.54881 1935.0751,629.92159 1928.2808,630.80761 z "},"pa9":{"name":"PA-9","path":"M 2152.5802,508.43088 C 2146.1779,514.09728 2151.1115,510.80788 2146.6253,514.5984 L 2146.6253,516.76058 L 2144.6758,517.52266 L 2143.3998,515.78583 C 2141.186,516.42555 2139.5119,516.92222 2137.569,516.88464 L 2136.7183,513.85405 L 2118.712,517.36316 L 2120.5374,525.46246 L 2112.9344,542.93712 L 2113.1648,545.24108 C 2114.3232,545.23901 2115.5139,545.72095 2116.6384,546.46395 L 2118.1626,545.18791 L 2118.9424,546.4285 L 2120.4488,545.18791 L 2121.6362,547.22603 L 2121.6717,546.16266 L 2125.4467,549.81355 L 2126.7582,546.94246 C 2128.5479,547.12372 2129.3222,547.54664 2130.604,548.6084 C 2130.9316,547.83021 2131.8596,547.65698 2132.6953,547.79316 L 2134.1131,544.95751 L 2136.3107,545.29425 L 2137.6045,538.15197 L 2133.0675,535.59989 L 2128.6545,535.59989 L 2126.1378,537.8684 L 2123.8693,535.12137 L 2126.2796,530.40712 L 2127.857,531.73632 L 2129.0444,530.99197 C 2128.9033,529.22451 2129.3758,528.23821 2130.6572,526.80939 C 2133.0992,528.81264 2134.5148,529.36823 2136.7538,530.38939 L 2138.6855,529.3083 L 2139.3945,524.84217 L 2140.8832,523.60157 L 2143.5061,523.97375 L 2143.5061,526.75623 L 2140.9895,527.37652 L 2141.982,528.95385 L 2145.5974,528.22722 L 2148.3267,528.9184 L 2148.3267,536.09613 L 2154.6183,537.37217 C 2155.6227,539.52991 2155.8126,541.30599 2155.6994,543.73464 L 2153.8562,545.77276 L 2153.1473,552.29474 L 2147.9723,553.74801 L 2146.9089,558.53316 L 2144.0733,559.1889 L 2142.6023,562.23721 L 2143.7897,564.45256 L 2140.3869,566.86286 L 2138.3843,566.22484 L 2132.7307,569.9289 L 2132.3762,572.37464 L 2130.8166,573.68613 L 2132.0041,576.2914 L 2130.7281,578.68395 L 2124.7732,576.43318 L 2124.5073,574.21781 C 2122.4892,573.44941 2120.4083,573.02809 2117.9499,572.83543 L 2116.4789,575.38751 L 2112.4913,574.05833 L 2112.9698,576.14962 L 2110.8785,579.71187 L 2112.5976,580.36764 L 2112.5976,582.6716 L 2111.4457,582.6716 L 2110.1519,585.50724 L 2108.6455,585.50724 L 2105.7566,591.53299 L 2103.24,588.39603 L 2100.4044,590.64685 L 2104.0907,593.81919 L 2104.0907,595.91048 C 2140.2229,588.20445 2177.0225,579.9187 2214.9112,570.72645 L 2211.278,554.95316 L 2209.0755,554.56208 L 2207.2825,551.75885 L 2207.9504,550.12277 L 2211.0831,550.89464 L 2212.7173,554.19176 L 2219.6786,550.59335 L 2218.6684,548.76791 L 2220.9192,545.91454 C 2220.2806,544.17109 2219.8244,542.60891 2218.4912,541.21801 L 2215.4251,544.14226 L 2213.5526,539.04604 L 2219.6609,538.57731 L 2223.7549,535.31632 L 2223.7549,531.12024 C 2226.1044,531.25895 2228.6154,529.3806 2231.0457,528.30908 L 2230.1155,526.97311 L 2221.6293,529.43236 L 2219.5014,527.18157 L 2217.3453,528.58167 L 2217.2732,534.89284 L 2215.6171,534.8665 L 2212.43,528.81207 L 2213.4225,525.69286 L 2209.2943,522.83274 L 2216.6657,516.28207 L 2219.3065,519.31266 L 2218.757,521.42167 L 2220.3521,521.42167 L 2220.3521,520.21652 L 2222.6206,520.92543 C 2222.6174,520.00976 2222.3721,519.13442 2221.5218,518.1784 L 2224.322,515.55543 L 2225.6983,512.03702 L 2225.5406,509.39094 L 2222.8701,510.46244 L 2220.9192,508.66128 L 2217.2671,508.55797 C 2216.3353,508.93054 2215.4036,509.82755 2214.2298,509.91773 L 2214.2096,511.90826 L 2208.7259,516.29979 L 2205.784,512.73751 L 2201.5128,516.65425 L 2201.176,519.68484 L 2196.6036,524.82444 L 2191.978,521.13811 L 2196.515,514.35029 L 2191.3399,511.70959 C 2189.6232,513.24002 2188.8344,513.68123 2183.6482,513.51732 L 2178.934,517.55811 L 2169.665,516.51246 L 2159.9529,519.47765 L 2158.7949,518.76453 L 2159.4885,515.42765 C 2158.454,515.41421 2157.7019,515.52179 2156.8691,515.75038 L 2155.6921,516.48779 L 2155.7812,521.08494 L 2153.2043,521.95942 L 2152.4422,521.17962 L 2152.0174,514.55072 L 2154.2548,511.89001 L 2154.2414,510.33878 L 2152.5802,508.43088 z "},"il14":{"name":"IL-14","path":"M 1610.8888,578.70306 L 1609.832,574.44959 L 1600.0742,574.82895 L 1599.3462,569.7287 L 1603.9509,568.95071 L 1603.2166,563.07338 L 1609.5208,560.46043 L 1610.2223,556.72121 L 1612.8972,555.50241 L 1614.7635,552.65406 L 1621.9321,548.64522 L 1625.4391,547.73651 C 1625.2346,546.25139 1626.9759,545.66305 1628.3366,544.78437 L 1630.3886,543.54106 L 1633.4979,543.54106 L 1633.0788,535.24234 L 1640.472,534.07819 L 1647.2685,534.45316 L 1668.99,531.52633 L 1669.728,526.60461 L 1671.5422,526.21685 C 1672.5401,526.00359 1673.6949,525.55597 1674.1086,525.22214 L 1674.8607,524.61518 L 1675.7002,525.9734 L 1679.2894,525.25554 L 1678.8094,514.05037 C 1683.8044,513.65475 1688.7586,512.70896 1693.7668,512.46521 L 1694.6779,516.90082 L 1692.9224,517.5745 L 1692.9224,518.62139 C 1692.9224,519.19718 1693.2128,520.30561 1693.5677,521.08456 L 1694.213,522.50084 L 1697.3142,523.58193 L 1698.1244,528.98502 C 1698.7537,529.89603 1699.3892,530.81078 1699.663,531.8605 L 1695.758,533.929 C 1696.29,540.84095 1697.8595,547.65396 1698.4914,554.56211 L 1683.4245,556.58502 L 1681.9542,545.87648 L 1655.4919,549.21235 L 1655.4919,552.04799 L 1634.4077,554.41067 L 1635.1866,561.12205 L 1629.9711,561.12205 L 1629.9711,566.22621 L 1625.2897,566.22621 L 1625.8268,571.81505 L 1620.3299,572.57109 L 1620.3299,577.97436 L 1610.8888,578.70306 z "},"pa14":{"name":"PA-14","path":"M 2097.5525,561.20238 L 2096.9692,562.90269 L 2094.4387,560.24591 L 2091.0765,559.09441 L 2091.8058,556.44324 L 2088.0568,557.15465 L 2079.9124,550.39272 L 2093.1278,548.95503 C 2093.8705,548.31411 2094.6089,547.76005 2095.5634,547.51096 L 2096.3044,547.51096 L 2097.6454,548.958 C 2098.3831,549.75388 2098.9865,550.64711 2098.9865,550.94295 C 2098.9865,551.2388 2098.8421,551.48086 2098.6657,551.48086 C 2098.4892,551.48086 2097.8697,551.22657 2097.289,550.91577 L 2096.2331,550.35067 L 2095.0531,551.36095 L 2095.9615,553.15634 L 2099.6112,553.64759 L 2099.699,555.75691 L 2096.9656,557.62772 L 2099.3143,558.56697 C 2098.2654,559.11468 2097.944,560.13971 2097.5525,561.20238 z "},"il13":{"name":"IL-13","path":"M 1703.1307,548.11716 L 1703.1307,546.37671 L 1698.0779,546.37671 L 1696.3007,534.35527 L 1698.1683,533.27069 C 1699.1821,532.84895 1700.7771,532.4689 1701.7129,532.42612 C 1702.6486,532.38335 1704.3973,532.14942 1705.5988,531.90627 L 1707.7834,531.46419 L 1710.7808,528.51215 L 1712.3238,538.92444 L 1716.7295,539.66878 L 1716.1685,540.71694 C 1715.86,541.29344 1715.6075,542.38878 1715.6075,543.15104 L 1715.7298,544.95254 L 1718.2085,546.1461 L 1703.1307,548.11716 z "},"oh13":{"name":"OH-13","path":"M 2007.5221,539.40698 L 2007.0706,535.44654 L 2004.8308,535.46573 L 2002.2106,522.27374 L 1991.8339,524.95741 L 1991.4948,526.02587 C 1991.3083,526.61352 1990.9489,527.09433 1990.6962,527.09433 C 1990.4435,527.09433 1989.9754,526.77532 1989.656,526.38542 L 1989.0754,525.67651 L 1988.9673,522.41184 L 1986.1527,519.7664 L 1984.143,520.24964 L 1981.7712,516.23306 L 1978.1881,516.89033 L 1978.1881,514.05037 L 1973.3675,514.04512 C 1974.652,512.90397 1975.8113,511.58543 1977.2572,510.6476 C 1977.4028,510.6476 1978.8841,509.74903 1980.5489,508.65079 L 1983.5758,506.65397 L 1985.4414,507.3391 L 1987.1024,516.24054 L 1991.2829,515.67195 L 1991.3087,516.61884 L 1993.475,516.69779 L 1993.9261,516.16455 L 1995.0582,517.47271 L 1996.4519,517.13405 L 1996.9034,515.18463 L 1998.1953,515.02045 L 2002.6617,512.86729 L 2004.8633,513.07746 C 2004.8273,514.93536 2005.1304,515.57453 2006.1827,516.83967 L 2005.9774,522.13514 L 2010.5949,521.39677 L 2011.6701,522.68595 C 2012.2614,523.395 2012.7537,524.29413 2012.7641,524.68403 L 2012.783,525.39294 C 2011.3344,525.58223 2010.6467,524.89915 2009.0171,523.48634 L 2007.6754,525.464 L 2009.8477,528.23122 L 2011.3652,527.66144 L 2013.9049,532.11825 L 2013.1931,535.6774 L 2015.5425,538.85507 C 2012.4586,539.36739 2010.565,539.38719 2007.5221,539.40698 z "},"oh9":{"name":"OH-9","path":"M 1974.3499,536.77016 L 1971.3368,523.45175 L 1948.7278,527.13168 L 1946.7353,518.54373 L 1941.8919,519.60221 L 1941.8919,518.02027 L 1924.659,520.97032 L 1923.7438,520.29368 L 1923.7438,518.5874 L 1919.9996,518.24419 L 1919.0954,511.78186 L 1910.6573,513.20615 L 1910.1847,516.20367 L 1905.8792,519.69096 L 1902.1339,519.72166 L 1900.9641,516.36614 L 1897.8148,516.99601 C 1897.6197,514.61502 1897.1094,512.23085 1897.1956,509.83873 C 1903.1512,508.60984 1909.0584,506.90535 1915.0951,506.09573 L 1915.804,506.11057 L 1915.804,507.19343 L 1919.9544,507.97206 L 1922.0065,506.69051 L 1927.3395,509.52611 L 1933.4995,510.2501 L 1935.0018,511.50332 C 1935.8281,512.19258 1937.3209,513.17525 1938.3191,513.68702 L 1940.1342,514.6175 L 1942.9451,514.6175 L 1943.8363,513.7263 C 1944.3265,513.23614 1944.7569,512.53432 1944.7929,512.16669 C 1944.8288,511.79907 1944.8127,511.05168 1944.7572,510.50582 C 1944.7017,509.95995 1944.8106,509.51334 1944.9992,509.51334 C 1945.1878,509.51334 1945.8984,510.03161 1946.5783,510.66505 L 1947.8145,511.81677 L 1950.9659,511.1246 L 1950.9659,513.51884 L 1951.9584,513.8859 C 1952.5043,514.08779 1954.0059,515.05 1955.2955,516.02415 L 1957.64,517.79533 L 1962.2077,519.3028 L 1964.8937,518.62866 L 1968.6165,515.30495 L 1972.8004,514.33394 L 1977.621,514.68272 L 1977.621,517.57937 L 1981.598,516.83328 L 1983.9918,520.89035 L 1986.0699,520.23077 L 1988.3964,522.5573 L 1988.3964,525.27159 L 1984.0537,526.24609 L 1984.6983,530.12296 L 1980.5639,531.05893 L 1981.1567,535.4791 L 1974.3499,536.77016 z "},"oh14":{"name":"OH-14","path":"M 2044.8435,465.3291 L 2043.9928,466.09118 C 2040.9955,468.33861 2037.5937,469.998 2034.4225,471.97514 L 2033.7667,471.3194 L 2033.7667,472.45365 L 2031.0729,474.19048 C 2029.5913,475.14067 2027.7886,476.09597 2027.0675,476.31722 C 2026.3463,476.53846 2024.1113,477.95346 2022.1052,479.47187 C 2020.0991,480.99028 2017.882,482.78332 2017.1782,483.44177 C 2016.4744,484.10022 2015.0945,485.01196 2014.1122,485.47989 L 2012.3222,486.33058 L 2010.0891,488.989 C 2008.8593,490.45 2007.4819,492.36379 2007.0231,493.24246 L 2006.1901,494.83751 L 2007.3421,500.43791 L 2009.3093,499.81761 L 2009.9119,501.97979 C 2010.2409,503.16454 2010.5128,504.46656 2010.5145,504.88633 C 2010.5162,505.30608 2010.0806,506.37574 2009.5574,507.26118 L 2008.6182,508.87395 L 2010.0891,510.64623 L 2011.7374,510.64623 L 2011.2766,512.06405 L 2005.4103,513.07425 L 2005.4103,514.01355 C 2005.4103,514.53114 2005.7134,515.25592 2006.0838,515.62632 L 2006.7572,516.29979 L 2006.4914,521.56345 L 2010.6031,520.78365 L 2013.3501,523.74335 L 2013.4037,525.8853 L 2015.8136,523.74335 L 2014.5553,515.50227 L 2031.7995,512.22355 L 2030.1158,502.56464 L 2043.8156,499.87078 L 2045.1625,504.42553 L 2052.6061,502.63553 L 2044.8435,465.3291 z "},"pa13":{"name":"PA-13","path":"M 2293.7952,508.12959 L 2291.8103,515.46682 C 2292.4249,516.04509 2293.1607,516.46908 2293.9193,516.86692 L 2294.8941,515.34276 L 2303.915,515.87444 L 2308.2748,517.73533 L 2307.5836,519.22405 L 2309.409,522.55593 C 2311.3054,520.99415 2312.5391,518.76624 2314.0524,516.8492 L 2315.7006,518.00118 L 2320.6807,520.28741 L 2321.9213,522.3787 L 2322.0985,521.47484 L 2323.2328,522.41415 L 2323.1442,523.37118 L 2324.1012,522.04197 L 2323.8176,521.72296 L 2323.7822,520.87227 L 2324.6683,518.86959 L 2321.5491,517.57583 L 2321.2124,518.37335 L 2322.2049,518.76326 L 2321.2833,519.61395 L 2320.0427,519.15316 L 2320.4503,518.08979 C 2320.6318,518.16494 2320.8225,518.2493 2320.8225,518.2493 L 2321.2301,517.41632 L 2304.996,510.57533 L 2304.7302,512.70207 L 2302.444,513.6591 L 2298.3323,512.18811 L 2293.7952,508.12959 z "},"il9":{"name":"IL-9","path":"M 1714.3697,521.95179 C 1713.9588,521.93068 1713.0484,521.63647 1712.3465,521.298 L 1711.2721,520.75683 L 1710.9326,519.04851 L 1708.5288,518.29815 L 1709.2567,516.93295 L 1715.8911,515.74669 L 1719.2907,513.7166 C 1720.4675,515.30041 1721.1964,517.18318 1722.0454,518.94521 L 1716.1345,518.48184 L 1714.4476,519.8818 L 1715.1169,521.99017 L 1714.3697,521.95179 z "},"pa15":{"name":"PA-15","path":"M 2293.2281,518.37523 C 2292.0632,517.76443 2290.8984,517.15291 2289.7127,516.58432 L 2291.9782,508.41399 L 2290.4195,506.53589 L 2290.7366,503.51243 L 2283.9276,500.25802 L 2285.1098,498.04899 L 2283.7942,496.75295 L 2282.1945,498.91999 L 2280.6222,499.05716 C 2279.7575,499.13259 2277.5187,499.59988 2275.6471,500.09556 L 2272.2444,500.9968 L 2269.0727,499.71281 L 2269.2407,499.01263 C 2269.3331,498.62753 2270.7188,497.19594 2272.3199,495.83132 C 2273.9211,494.46669 2276.4484,491.99318 2277.9362,490.33464 L 2280.6414,487.3191 L 2283.532,485.4771 C 2285.1218,484.464 2287.8796,482.92502 2289.6605,482.05715 C 2291.4414,481.18928 2293.483,479.96748 2294.1976,479.34203 C 2294.912,478.71657 2295.8839,477.91202 2296.3572,477.55414 C 2296.8305,477.19626 2297.6599,476.2106 2298.2004,475.36379 C 2298.7408,474.51698 2299.183,473.50428 2299.183,473.11333 L 2299.183,472.40252 C 2300.2796,471.49542 2301.2902,470.43765 2302.5794,469.81433 C 2302.7909,469.81433 2303.9067,470.75722 2305.0592,471.90965 L 2307.1545,474.00497 L 2305.326,475.02825 L 2306.016,477.77741 L 2304.8749,479.5988 L 2302.6111,481.44797 L 2303.307,486.82819 L 2304.5637,487.30923 L 2304.7533,489.66834 L 2304.6441,490.41189 C 2304.5841,490.82084 2303.6259,492.28727 2302.5149,493.67062 C 2301.4038,495.05398 2299.7236,497.33425 2298.7811,498.7379 C 2297.8386,500.14154 2296.5437,502.37895 2295.9035,503.70991 L 2294.7396,506.12985 L 2304.2871,510.21221 L 2304.2871,512.38458 L 2302.4428,513.0923 L 2298.3323,511.62576 L 2293.609,507.41011 L 2291.1587,515.44605 L 2293.6128,517.43329 L 2293.2281,518.37523 z "},"mi15":{"name":"MI-15","path":"M 1901.8033,507.62376 L 1897.6622,487.11176 L 1897.6559,478.27607 L 1894.8212,471.75969 L 1897.9394,469.96067 L 1904.8936,469.20615 C 1905.4279,473.29237 1906.2251,477.37225 1907.6798,481.23822 L 1913.0257,479.87355 C 1912.0316,475.29688 1911.6301,474.07858 1912.1176,472.36641 L 1915.804,471.28116 L 1915.804,468.25183 L 1917.5386,466.81221 L 1920.2972,469.40372 L 1919.2114,471.43249 L 1921.4753,476.71391 L 1921.4753,481.72403 L 1923.2047,481.72403 L 1923.7578,483.17878 C 1924.062,483.97888 1924.3109,484.96067 1924.3109,485.36052 C 1924.3109,485.76036 1923.8005,486.67603 1923.1766,487.39532 C 1922.5528,488.11462 1922.0424,489.05321 1922.0424,489.48109 L 1922.0424,490.25904 L 1919.2067,491.33715 L 1919.1204,492.34366 C 1919.0728,492.89724 1918.9747,493.60538 1918.9022,493.9173 C 1918.8298,494.22922 1918.741,494.80344 1918.705,495.19334 L 1918.6396,495.90225 L 1917.1565,495.90225 L 1916.1966,498.07777 C 1915.6688,499.2743 1915.2368,500.79049 1915.2368,501.44707 L 1915.2368,502.64086 L 1915.804,502.99136 C 1916.1159,503.18414 1916.3711,503.56481 1916.3711,503.83731 L 1916.3711,504.33275 L 1901.8033,507.62376 z "},"nj13":{"name":"NJ-13","path":"M 2354.9034,463.59227 L 2354.2653,466.81781 L 2354.8679,469.15722 L 2353.5387,469.86613 C 2352.8075,470.26359 2351.7455,470.63506 2351.1816,470.68138 L 2350.1537,470.76999 L 2348.7004,468.6787 L 2348.0092,469.36989 L 2349.7815,472.08147 L 2353.6451,472.08147 L 2352.9539,474.81078 L 2350.1537,475.75009 L 2350.5081,475.30702 L 2348.8599,475.8387 L 2348.47,477.50464 C 2348.2517,478.41919 2347.9408,481.02083 2347.7966,483.28227 L 2347.5484,487.39395 L 2347.9738,487.39395 C 2348.2103,487.39395 2348.5396,486.8114 2348.7181,486.10019 L 2349.0548,484.80642 L 2348.7181,483.56583 L 2348.3991,482.30751 L 2350.0828,481.65177 L 2349.0548,477.06157 L 2349.6574,476.44128 C 2349.7811,476.37944 2353.0586,474.98533 2353.2197,474.91712 C 2353.2236,474.91544 2353.3083,474.88167 2353.3083,474.88167 C 2353.5279,474.73401 2354.0254,473.98281 2354.4958,473.07395 L 2355.4528,471.23078 C 2355.716,468.97301 2355.9642,466.71344 2356.268,464.46068 L 2354.9034,463.59227 z "},"ny13":{"name":"NY-13","path":"M 2356.0376,473.57019 C 2356.0376,473.57019 2355.7229,473.85935 2355.8427,474.75761 C 2355.9624,475.65589 2356.3054,475.38956 2357.4732,475.8387 C 2358.6409,476.28783 2357.739,476.65396 2357.739,476.65395 L 2357.3846,477.36286 L 2357.9517,477.78821 L 2358.0935,477.00841 L 2358.3948,477.54009 L 2359.5645,477.48692 L 2359.3518,476.44128 L 2359.1214,476.2286 L 2358.9619,476.49444 L 2358.7492,476.26405 L 2358.6429,475.14751 L 2356.6225,473.71197 L 2356.0376,473.57019 z M 2355.0451,475.50197 L 2350.5613,477.06157 L 2350.8803,482.85692 L 2349.7638,482.85692 L 2350.3486,485.12543 L 2351.3588,485.12543 L 2351.3588,483.68989 L 2353.8754,482.57336 L 2355.1692,480.64157 C 2355.8787,479.5817 2356.463,478.41619 2356.463,478.05405 C 2356.463,477.69191 2356.144,476.98094 2355.7541,476.459 L 2355.0451,475.50197 z "},"mi14":{"name":"MI-14","path":"M 1924.0273,482.25589 L 1923.5153,481.1818 L 1922.0424,480.7483 L 1922.0424,476.71391 L 1919.7785,471.43249 L 1920.8643,469.40372 L 1919.4706,468.09445 C 1918.7041,467.37435 1918.1921,466.67003 1918.3329,466.5293 C 1918.4736,466.38856 1917.9723,465.05694 1917.2188,463.57014 L 1915.849,460.86686 L 1925.0315,458.7186 L 1926.9187,461.47827 L 1924.0273,462.31754 L 1921.4753,465.7985 L 1921.4753,468.3072 L 1923.3056,470.32974 L 1922.137,473.68197 L 1923.3054,478.28507 L 1925.6822,478.0377 L 1926.0599,479.83816 L 1924.0273,482.25589 z "},"mi13":{"name":"MI-13","path":"M 1923.8051,477.78317 L 1922.6866,473.73233 L 1923.8727,470.32974 L 1922.0424,468.3072 L 1922.0424,465.7985 L 1924.486,462.49332 L 1927.725,461.78192 L 1925.4882,458.64065 L 1933.9709,456.37709 L 1933.2327,460.45671 L 1931.35,463.09648 L 1925.7704,466.128 L 1924.2426,471.23215 L 1924.88,477.11889 L 1923.8051,477.78317 z "},"nj9":{"name":"NJ-9","path":"M 2348.5232,458.47039 L 2348.5232,459.23246 C 2348.5232,459.65262 2348.9827,460.54423 2349.5511,461.19969 L 2350.5968,462.38712 L 2350.1714,465.9494 C 2349.9405,467.90823 2349.8417,469.65887 2349.9587,469.84841 C 2350.0759,470.03796 2350.6403,470.14032 2351.1993,470.0788 C 2351.7584,470.01731 2352.6194,469.79527 2353.1134,469.58256 L 2353.9995,469.19266 L 2353.9995,466.65831 L 2354.3103,464.26161 L 2354.7316,463.01161 L 2355.3996,463.22009 L 2356.3921,463.62771 L 2357.1719,459.03751 L 2352.8653,459.03751 L 2350.8803,460.82751 L 2350.2423,459.65781 C 2349.8946,459.00809 2349.3735,458.47037 2349.0726,458.47039 L 2348.5232,458.47039 z "},"mi9":{"name":"MI-9","path":"M 1910.2109,461.09947 C 1908.8725,455.62807 1907.6842,451.47785 1906.9163,445.496 L 1911.2669,444.76097 L 1911.2669,442.35326 C 1911.2669,441.02902 1911.4281,439.7844 1911.6251,439.58742 L 1914.4768,439.7823 L 1914.7381,438.08042 L 1919.6162,436.93111 L 1922.4794,450.45858 L 1920.8716,450.9189 L 1921.5532,453.75531 L 1917.7889,455.60202 L 1916.5921,454.02021 L 1912.9724,456.31209 L 1913.657,460.5937 L 1910.2109,461.09947 z "},"ny24":{"name":"NY-24","path":"M 2264.0033,278.76148 L 2255.7976,282.14653 C 2254.2586,281.7372 2252.7149,281.32577 2251.1366,281.1895 L 2265.5983,321.5088 C 2260.3642,323.21019 2252.3711,324.08389 2249.896,326.61296 L 2251.0479,331.92979 L 2249.8073,334.2692 L 2246.3337,334.2692 C 2245.6487,337.14713 2242.6186,337.08218 2243.0372,339.17841 C 2241.9318,340.09669 2240.8118,341.00072 2240.1556,342.29713 C 2245.4506,345.41825 2245.9636,345.73442 2248.6376,349.08544 L 2250.6758,348.39425 L 2252.8379,354.54405 L 2257.2154,353.35663 L 2258.4206,357.43286 L 2266.6263,354.77445 L 2268.115,358.77979 L 2266.963,363.54722 C 2258.1248,366.22039 2263.5884,363.56849 2240.4497,371.57564 L 2239.3509,367.76524 L 2223.4004,372.83395 L 2218.0481,369.34257 L 2214.1669,370.54771 L 2211.0831,361.49138 L 2209.6653,361.49138 L 2208.9741,358.33672 L 2203.3382,356.33405 L 2203.2319,354.24276 L 2198.6949,355.18207 L 2199.9886,362.69653 L 2189.3727,366.17019 L 2190.9146,372.12504 L 2188.6283,372.72762 L 2191.2513,380.49019 L 2194.1047,380.95098 C 2194.3957,382.85844 2196.0812,384.52993 2197.6138,386.16148 L 2199.5633,393.07336 L 2208.1588,390.98207 L 2212.1996,406.52494 L 2218.8988,405.37296 L 2217.3215,398.72692 L 2216.3467,398.19524 L 2214.8403,393.55187 L 2219.4837,391.5492 C 2220.1022,392.7379 2220.5277,394.01339 2220.7952,395.34187 L 2222.7269,397.64583 L 2226.4487,410.54801 L 2224.8891,412.35573 C 2226.0033,414.9932 2227.3702,416.69671 2227.3349,418.11563 L 2230.7376,417.76118 L 2230.5604,414.23435 L 2232.1909,414.23435 L 2233.578,410.84274 L 2236.3561,411.53284 L 2237.1182,410.30997 L 2240.1661,410.26445 L 2238.8852,406.73761 L 2241.7789,407.41108 L 2243.179,405.72742 L 2246.7413,405.72742 L 2248.9212,409.75049 C 2249.7361,408.40252 2250.3234,407.32769 2250.4099,405.16029 L 2260.4055,405.2489 L 2261.8766,403.47662 L 2262.869,404.0792 L 2265.2616,402.80316 L 2264.8992,398.95732 L 2269.5505,397.68128 L 2267.8669,390.00732 L 2272.6058,388.77228 L 2273.8844,385.50385 L 2275.4887,385.49858 L 2276.2013,383.48975 L 2277.989,384.28003 C 2280.6462,379.27754 2281.6191,379.32822 2285.0048,377.19375 L 2280.4677,373.31247 L 2280.4677,368.54504 L 2283.8705,367.269 C 2284.0143,366.0671 2284.1125,365.32043 2282.9361,363.79986 L 2284.4731,355.92643 L 2287.3442,354.04781 L 2288.8506,355.28841 C 2289.3598,353.24495 2290.2332,352.02093 2291.8805,350.66033 L 2287.61,349.81207 L 2286.1568,339.19925 C 2285.0632,338.93378 2284.0606,337.98544 2283.2857,335.26168 C 2284.6437,334.18164 2284.4085,331.73588 2285.4478,330.24613 L 2283.0376,324.11405 L 2275.3636,322.7494 L 2276.9409,312.43475 L 2264.0033,278.76148 z "},"ny21":{"name":"NY-21","path":"M 2301.6401,374.25315 L 2296.1504,370.10929 L 2298.0007,362.39362 L 2294.0363,354.97077 L 2293.3802,350.31572 L 2288.1314,349.29948 L 2286.6839,339.31933 L 2298.171,339.94822 L 2296.9384,333.98701 L 2303.7872,329.5016 L 2306.7345,336.55593 L 2314.9061,334.95499 L 2315.4247,336.2076 L 2319.4338,336.26839 L 2322.4409,338.37464 C 2323.2963,337.84232 2323.6631,336.73722 2325.0071,336.77766 L 2325.5991,339.52525 L 2331.0052,344.0034 C 2332.6284,342.57648 2333.9038,341.84539 2334.5992,339.60668 L 2336.4738,339.37473 L 2339.6938,346.79967 L 2341.2325,346.84987 L 2340.5628,348.59505 L 2341.9455,352.41869 L 2343.9861,352.41869 L 2343.2713,356.98528 L 2341.3107,356.36298 L 2339.8773,358.08998 L 2337.6661,358.14796 L 2336.6078,360.28803 L 2337.1671,361.66831 L 2317.3636,370.85037 L 2317.3906,374.12015 L 2314.9995,375.08381 L 2312.4129,374.47991 L 2310.9538,376.47004 L 2301.6401,374.25315 z "},"ma9":{"name":"MA-9","path":"M 2468.7175,356.95572 C 2468.4259,356.95572 2467.6769,356.4453 2467.0531,355.82146 L 2465.9188,354.68721 L 2461.4382,354.68721 L 2460.3807,352.79765 L 2460.9139,348.73235 L 2457.48,345.46625 L 2454.0952,350.80361 L 2452.8349,348.44879 L 2450.5394,348.44879 L 2451.2846,347.24306 L 2449.2963,345.04602 L 2454.0091,345.04602 L 2454.0091,341.07612 L 2451.1978,341.07612 L 2452.4931,338.23331 L 2453.1093,338.29842 C 2453.4482,338.33423 2454.2998,338.17847 2455.0016,337.95229 L 2456.2776,337.54106 L 2456.2776,336.4002 L 2458.0134,337.42252 L 2458.4676,339.49122 L 2461.5559,337.45403 L 2461.2582,338.83973 C 2461.0945,339.60186 2460.7728,340.67204 2460.5433,341.2179 L 2460.1262,342.21037 L 2463.0616,342.21037 L 2463.7732,339.37473 L 2464.8126,339.37473 L 2465.4169,340.93434 C 2465.7492,341.79212 2466.0757,343.4688 2466.1424,344.66029 L 2466.2636,346.82664 L 2467.8496,347.80682 L 2468.3454,347.50038 C 2468.6181,347.33184 2469.6955,347.15376 2470.7397,347.10466 L 2472.6381,347.01537 L 2474.4136,350.02106 L 2472.1572,350.61112 L 2472.1572,355.84954 C 2471.0311,356.28902 2469.9096,356.74092 2468.7175,356.95572 z "},"wa9":{"name":"WA-9","path":"M 209.03016,141.43543 L 206.47808,139.94108 C 205.07443,139.11919 203.37611,137.95167 202.70401,137.34659 L 201.48196,136.24644 L 197.47928,136.5913 L 195.24717,133.75363 L 196.02192,132.35428 C 196.44807,131.58464 196.80575,130.66113 196.81681,130.30204 L 196.83689,129.64915 L 193.29172,127.83284 L 192.69687,126.438 L 193.89377,125.40671 L 191.1656,123.82592 L 191.16878,123.13696 C 191.17048,122.75804 191.43045,121.51721 191.74646,120.37958 L 192.32096,118.31115 L 195.30882,116.35345 L 196.28382,117.64608 L 197.39938,118.6109 L 199.0716,118.24311 L 199.86042,115.07533 L 201.64495,113.75809 L 202.09956,114.03904 C 202.34955,114.19356 203.19049,115.32804 203.96825,116.56012 C 204.74607,117.79219 206.39454,119.8124 207.63162,121.04948 L 209.88085,123.2987 L 212.12634,123.2987 L 214.48798,118.66951 L 212.75852,116.03004 L 214.43189,114.64127 L 213.15585,113.1038 L 218.67134,112.23969 L 218.95491,103.87744 L 220.41152,105.08633 L 224.56999,104.14845 L 225.44876,105.11952 C 225.93212,105.6536 226.32758,106.29756 226.32758,106.55054 C 226.32758,106.80351 225.95424,107.29383 225.49793,107.64014 L 224.66822,108.26979 L 221.06741,116.77672 L 220.54173,121.60165 L 217.36201,123.86583 L 215.04932,123.86583 L 213.31436,126.34286 L 213.99662,129.06121 L 211.39106,132.58543 L 210.88291,134.88939 C 210.60343,136.15656 210.32746,138.0647 210.26962,139.12967 L 210.16441,141.066 L 209.03016,141.43543 z "},"tx23":{"name":"TX-23","path":"M 838.25945,1169.5612 L 837.03661,1177.0225 L 832.72994,1177.0225 L 831.27668,1191.821 L 828.01569,1193.8414 L 829.14994,1196.872 L 833.11984,1196.872 L 834.96301,1200.4165 L 832.58816,1203.9433 C 832.58816,1204.1119 832.86776,1204.2447 833.20849,1204.2447 C 833.54916,1204.2447 834.47126,1204.7551 835.26433,1205.3789 L 836.7176,1206.5132 L 839.67727,1206.5486 L 842.79648,1209.2956 L 842.79648,1211.6528 L 843.78895,1212.0249 C 844.33481,1212.233 845.30324,1212.9269 845.95113,1213.5668 C 846.59896,1214.2067 848.06641,1216.0757 849.21212,1217.714 C 850.35778,1219.3522 851.30341,1220.9474 851.30341,1221.2585 C 851.30341,1221.5696 851.54478,1221.8256 851.83509,1221.8256 C 852.12535,1221.8256 853.27951,1222.3999 854.40492,1223.1017 C 855.53039,1223.8035 857.45829,1225.3237 858.69383,1226.469 L 860.9446,1228.5425 L 860.9446,1231.4136 L 863.92202,1234.4797 C 865.55961,1236.1645 867.60127,1237.9895 868.45905,1238.5382 L 870.01866,1239.5307 L 870.01866,1241.0726 L 871.17066,1242.1359 C 871.79972,1242.7221 873.01202,1243.5223 873.86453,1243.9259 C 874.71698,1244.3295 876.0444,1244.9255 876.8242,1245.2374 C 877.604,1245.5493 878.80376,1246.0516 879.50037,1246.3717 C 880.19691,1246.6917 881.27684,1247.4282 881.89291,1248.0021 C 882.50898,1248.5761 883.19997,1249.0478 883.41707,1249.0478 C 883.63411,1249.0478 884.67077,1250.0687 885.73878,1251.3163 L 887.68829,1253.5849 L 890.3644,1253.5849 L 891.88856,1258.9726 L 893.00512,1259.1675 C 893.61915,1259.2814 894.41795,1259.6205 894.7774,1259.9119 L 895.43311,1260.4435 L 896.35469,1264.2362 C 896.86698,1266.3287 897.32925,1269.1593 897.38262,1270.5101 L 897.48895,1272.9558 L 899.50935,1274.0369 L 899.50935,1275.8269 L 900.92717,1276.9435 L 902.34499,1278.06 L 902.34499,1280.5412 L 904.40083,1281.8172 L 905.67687,1286.1948 L 905.39331,1289.8811 C 905.23508,1291.9086 905.11207,1294.2692 905.10974,1295.127 C 905.10748,1295.9848 905.15148,1297.7735 905.21608,1299.0969 L 905.34017,1301.5072 L 907.16559,1304.9454 C 908.1732,1306.8447 909.3872,1309.0294 909.85945,1309.7837 C 910.3317,1310.5381 911.24749,1312.9403 911.89759,1315.136 L 913.08499,1319.1414 L 919.92598,1324.6177 L 919.92598,1326.0001 L 921.37925,1326.6558 C 922.17368,1327.0178 923.25832,1327.3104 923.78955,1327.3116 C 924.32072,1327.3127 925.56664,1327.8151 926.57205,1328.4281 L 928.39747,1329.5447 L 929.12413,1332.4157 L 930.16974,1332.4157 L 931.21542,1335.1982 L 932.81046,1336.1907 C 933.68214,1336.7379 935.45538,1338.1359 936.76261,1339.3099 L 939.13747,1341.4544 L 940.73252,1341.8088 C 941.60873,1342.0011 943.07152,1342.391 943.97581,1342.6772 C 944.8801,1342.9633 946.2838,1343.1901 947.09502,1343.1912 L 948.56598,1343.1912 L 952.25232,1345.4419 L 952.25232,1346.0623 C 952.25232,1346.3989 953.06864,1347.3513 954.06004,1348.189 C 955.05138,1349.0266 956.56221,1350.0182 957.42737,1350.3866 C 958.29252,1350.7552 960.16422,1351.2358 961.59221,1351.45 L 964.19751,1351.8399 L 966.02291,1353.8248 C 967.02731,1354.9197 968.50611,1356.5262 969.31941,1357.3871 C 970.13261,1358.248 971.36031,1359.2518 972.04871,1359.6202 L 973.30701,1360.2936 L 974.90201,1358.9645 L 976.67431,1360.719 C 977.64181,1361.6865 978.71871,1362.4891 979.08461,1362.509 C 979.45051,1362.5289 980.52741,1362.627 981.47721,1362.7217 C 982.42711,1362.8163 983.75801,1363.0612 984.41921,1363.2711 L 985.62431,1363.661 L 986.51051,1362.3672 C 987.00481,1361.6614 987.41431,1360.6547 987.41431,1360.1164 L 987.41431,1359.1239 L 988.76121,1357.6884 C 989.49881,1356.8926 990.32821,1356.239 990.60441,1356.2351 C 990.88051,1356.2313 991.67481,1355.3336 992.37671,1354.2502 C 993.07851,1353.1667 993.65271,1352.0632 993.65271,1351.7867 L 993.65271,1351.2728 L 998.18971,1350.5461 L 998.18971,1348.7916 L 1000.4582,1349.5005 L 1000.4582,1348.2953 L 998.75691,1348.2953 L 998.75691,1347.4978 C 998.75691,1347.0537 999.04711,1345.3948 999.41261,1343.8115 L 1000.0861,1340.9227 L 1001.8761,1340.9227 L 1003.223,1337.9984 L 1002.6027,1336.4033 L 1003.6307,1333.4082 C 1004.1935,1331.7679 1004.9501,1330.1801 1005.3143,1329.8637 L 1005.9878,1329.2788 L 1006.803,1325.5393 L 1008.5221,1326.195 L 1007.7955,1324.2987 L 1010.383,1321.5517 L 1011.5705,1317.3868 L 1013.2364,1317.3691 C 1014.1595,1317.3571 1015.6515,1317.0283 1016.5505,1316.6425 L 1018.181,1315.9336 L 1020.2192,1316.5893 L 1021.3002,1314.6752 L 1023.4979,1314.9765 C 1024.7071,1315.1481 1026.1361,1315.4699 1026.6703,1315.6854 L 1027.645,1316.0753 L 1028.9742,1310.794 L 1031.5972,1309.0571 L 1034.9822,1309.8015 L 1036.3291,1311.432 L 1039.5015,1311.432 L 1041.6105,1314.3385 L 1045.74,1315.2601 L 1046.2184,1314.8348 C 1046.4765,1314.6017 1047.6243,1314.2664 1048.7883,1314.0904 L 1050.915,1313.7714 L 1051.6062,1314.8879 L 1054.5305,1314.7993 C 1056.1395,1314.75 1058.4755,1314.9038 1059.7232,1315.136 C 1060.9709,1315.3682 1062.2821,1315.7858 1062.6297,1316.0576 L 1063.2501,1316.5538 L 1070.8354,1316.6602 L 1073.1394,1314.5866 L 1075.2129,1317.3336 L 1076.8788,1315.9513 L 1077.8004,1316.3057 C 1078.3078,1316.5005 1078.722,1316.8779 1078.722,1317.1564 L 1078.722,1317.6704 L 1080.7778,1317.6704 L 1082.0184,1319.992 C 1082.7001,1321.2692 1083.259,1322.6581 1083.259,1323.0758 L 1083.259,1323.8379 L 1086.3782,1324.1924 L 1086.715,1327.7192 L 1089.4798,1327.1875 L 1090.2418,1329.1902 L 1089.0367,1332.4157 L 1093.4851,1332.4157 L 1094.7611,1335.2159 L 1099.2982,1336.1198 L 1102.2578,1341.6847 L 1109.347,1346.1509 L 1109.347,1347.5155 L 1113.3701,1349.0928 L 1114.4689,1350.8829 C 1115.0788,1351.8697 1115.5854,1353.0838 1115.5854,1353.5767 L 1115.5854,1354.4806 L 1116.9323,1355.9161 C 1117.6699,1356.7119 1118.5304,1357.3694 1118.8464,1357.3694 C 1119.1623,1357.3694 1119.736,1357.7544 1120.1224,1358.2201 L 1120.8136,1359.0708 L 1120.9377,1360.6304 C 1121.0018,1361.4904 1121.3653,1363.239 1121.7352,1364.5294 C 1122.1051,1365.8199 1122.3543,1367.3512 1122.3023,1367.9322 C 1122.2504,1368.5132 1122.2529,1369.4422 1122.3023,1369.988 L 1122.3909,1370.9805 L 1124.6594,1370.9805 L 1124.6594,1371.7248 C 1124.6594,1372.1306 1124.9784,1373.1361 1125.3683,1373.9756 L 1126.0773,1375.5175 L 1127.4774,1375.5175 L 1127.8141,1377.0771 C 1128.0003,1377.9349 1128.4488,1379.2316 1128.8066,1379.9659 C 1129.1643,1380.7002 1129.4776,1381.9763 1129.5155,1382.8016 C 1129.5534,1383.6268 1129.627,1384.732 1129.675,1385.2473 L 1129.7636,1386.1866 L 1133.2905,1387.4095 L 1132.6347,1389.1286 L 1135.5235,1391.0249 L 1134.9209,1393.2757 L 1136.0375,1395.367 L 1138.306,1395.367 L 1138.9972,1397.1924 L 1137.4907,1398.114 L 1138.9617,1399.8863 L 1138.2705,1402.6688 L 1141.7442,1407.8261 L 1141.3897,1409.9883 L 1143.5519,1412.3809 L 1145.1115,1412.3809 L 1145.8027,1414.1886 L 1187.1677,1412.8239 L 1185.7675,1364.7421 L 1212.5289,1364.7421 L 1212.8479,1347.2142 L 1243.4552,1363.2888 L 1249.9594,1352.1589 L 1247.7264,1351.574 L 1247.7264,1350.2803 L 1244.3236,1348.7738 L 1244.359,1346.3104 L 1245.0502,1345.4243 C 1245.4302,1344.937 1246.2518,1344.3113 1246.8757,1344.0419 L 1248.0099,1343.5633 L 1245.4578,1343.1203 L 1245.4578,1340.196 L 1236.242,1340.9049 C 1232.9111,1342.7218 1232.168,1343.3667 1230.3403,1344.9103 L 1224.4741,1342.5532 L 1225.6615,1340.3378 L 1224.545,1336.297 L 1225.4666,1334.3475 C 1225.9744,1333.2825 1226.5947,1332.4157 1226.8489,1332.4157 L 1227.3097,1332.4157 L 1227.3097,1331.565 C 1227.3097,1331.0972 1227.4646,1330.7144 1227.6642,1330.7144 C 1228.4491,1331.2322 1229.0577,1331.9226 1229.6137,1332.6993 L 1230.3049,1331.5827 C 1231.9034,1329.3721 1234.0093,1327.6052 1235.923,1325.6811 L 1239.4853,1325.3266 L 1240.46,1322.491 L 1239.2549,1319.3718 L 1229.6137,1319.3718 L 1226.6186,1320.5592 C 1224.9695,1321.2076 1222.8086,1322.3561 1221.8157,1323.1113 C 1220.8227,1323.8664 1219.6767,1324.4759 1219.2636,1324.4759 C 1218.8504,1324.4759 1217.308,1325.114 1215.8431,1325.8938 L 1213.1847,1327.3116 L 1209.7819,1327.3116 L 1206.7513,1323.3417 L 1165.2091,1323.3417 L 1162.5153,1318.6274 L 1161.9304,1309.2344 L 1162.8697,1306.3987 C 1163.3803,1304.8377 1163.7913,1303.0366 1163.7913,1302.3934 L 1163.7913,1301.2237 L 1173.4325,1301.2237 L 1173.4325,1285.9112 L 1135.559,1285.9112 L 1134.8855,1283.5363 L 1127.0875,1277.9536 L 1124.0392,1270.7759 C 1119.8267,1267.9829 1117.2574,1266.1085 1111.6155,1265.3882 L 1111.6155,1259.8233 L 1105.3771,1259.8233 L 1105.3771,1236.7659 C 1079.1309,1236.3895 1055.4128,1236.1494 1029.0982,1234.8164 L 1027.6804,1232.9555 L 1027.6804,1228.0463 L 1022.9662,1223.9169 L 1019.333,1223.6865 L 1015.1327,1219.5571 L 1013.8921,1220.2128 C 1013.2092,1220.5723 1012.4663,1221.1457 1012.2439,1221.4889 L 1011.8363,1222.1092 L 1010.5425,1222.1978 C 1009.8292,1222.2467 1008.7061,1222.4651 1008.0436,1222.6763 L 1006.8384,1223.0485 L 1002.2305,1218.5292 L 1000.0683,1217.8203 C 998.88041,1217.4308 997.30541,1216.7346 996.57701,1216.2607 L 995.26551,1215.3922 L 994.32621,1216.8987 L 991.17151,1216.5265 C 989.43691,1216.3226 987.30901,1215.8302 986.43961,1215.4454 C 985.57001,1215.0606 984.57131,1214.3865 984.22421,1213.939 L 983.60391,1213.1237 L 980.96321,1212.9643 C 979.51411,1212.8789 978.01401,1212.6158 977.63131,1212.3794 L 976.94021,1211.954 L 973.51961,1212.2376 L 972.03091,1209.8273 L 971.72971,1206.6195 C 971.56361,1204.8498 971.35691,1202.7559 971.26891,1201.9761 C 971.18061,1201.1963 971.07871,1200.2393 971.03841,1199.8494 L 970.96761,1199.1405 L 967.72431,1199.1405 L 964.72911,1196.1453 L 964.72911,1194.0363 L 963.09861,1194.0363 L 962.38971,1191.7678 L 959.90855,1192.3881 L 956.22222,1189.3398 L 956.22222,1188.2055 C 956.22222,1187.5851 955.9238,1186.1016 955.5665,1184.9091 L 954.92848,1182.7469 L 953.47522,1183.314 L 950.55093,1180.8506 L 950.74591,1178.653 L 949.39898,1178.4757 L 949.48756,1176.8629 L 944.02895,1175.392 C 907.97539,1173.6481 875.3094,1171.9028 838.25945,1169.5612 z "},"tx21":{"name":"TX-21","path":"M 1239.503,1339.6404 L 1243.2237,1338.9391 L 1245.9229,1334.3975 L 1243.2437,1331.2828 L 1241.4879,1331.2828 L 1241.4879,1335.8199 L 1238.7776,1335.1795 L 1239.3481,1332.998 L 1237.518,1332.2957 L 1237.518,1330.7157 L 1234.3421,1330.7157 L 1232.981,1332.0768 L 1231.5722,1330.668 L 1236.2774,1326.4177 L 1239.4528,1325.9893 L 1241.2425,1322.6027 L 1239.5026,1318.8058 L 1229.153,1318.7667 C 1225.1667,1320.3137 1222.0317,1322.0498 1219.7481,1323.6914 L 1215.9672,1324.9756 C 1215.9672,1325.2 1215.1196,1325.6902 1214.0837,1326.0647 C 1213.0479,1326.4393 1211.7848,1326.7458 1211.2769,1326.7458 L 1210.3536,1326.7458 L 1207.3256,1322.7759 L 1165.7763,1322.7672 L 1163.1286,1318.1316 L 1162.5037,1309.8691 C 1163.3111,1307.0822 1164.1185,1304.7682 1164.3584,1301.7922 L 1173.9996,1301.7922 L 1173.9996,1285.9125 L 1193.8491,1285.9125 L 1193.8491,1295.7288 L 1233.1126,1294.9866 L 1232.2823,1272.3015 L 1242.2554,1272.3015 L 1256.9169,1276.5348 L 1259.0689,1273.8772 L 1259.0689,1271.8289 L 1257.902,1271.4399 L 1260.8559,1264.5937 C 1262.9071,1264.5618 1264.2016,1264.5298 1266.1582,1263.9304 L 1266.867,1264.6892 C 1267.2569,1265.1066 1267.5759,1265.7411 1267.5759,1266.0993 L 1267.5759,1266.7505 L 1270.3244,1268.9125 L 1271.0571,1272.2482 L 1273.3295,1275.1371 L 1275.3634,1275.1371 L 1274.531,1279.689 L 1271.4235,1282.5689 L 1273.423,1284.7783 L 1271.7216,1284.7783 L 1269.8444,1282.704 L 1269.8444,1278.099 L 1266.0268,1277.3828 L 1264.1731,1278.0941 L 1264.1731,1280.5916 C 1264.8776,1281.4193 1265.4437,1282.3031 1265.8564,1283.2958 L 1265.8745,1283.7982 L 1260.7774,1283.0996 L 1254.6451,1280.0521 L 1254.5319,1299.6168 C 1257.6065,1303.3852 1261.8337,1306.458 1264.1731,1310.7634 L 1265.9295,1316.5672 L 1262.7553,1321.2304 C 1252.8273,1326.2397 1250.6556,1327.5601 1246.5921,1330.2993 L 1246.5921,1332.9224 L 1249.7113,1334.4104 L 1250.0648,1337.4652 L 1248.8207,1339.7898 L 1239.503,1339.6404 z "},"fl5":{"name":"FL-5","path":"M 2138.8484,1329.7075 L 2137.7459,1323.5516 L 2107.0411,1329.1441 L 2105.0957,1325.0444 L 2104.0732,1325.0444 L 2104.0774,1318.5354 L 2107.4935,1315.2527 L 2107.4935,1313.0041 L 2101.2551,1313.7835 L 2101.1901,1311.8995 C 2101.1543,1310.8633 2101.0446,1308.8671 2100.9464,1307.4634 C 2100.8481,1306.0598 2100.4859,1302.9973 2100.1413,1300.6579 C 2099.7969,1298.3185 2099.5262,1295.5405 2099.54,1294.4845 L 2099.5651,1292.5645 L 2098.5265,1291.3003 L 2098.5328,1287.0161 L 2097.1463,1285.3454 L 2095.3002,1285.3139 L 2093.8309,1283.77 C 2093.0229,1282.9209 2092.1952,1281.7634 2091.9918,1281.1978 L 2091.6219,1280.1693 L 2090.4796,1280.8753 L 2090.4796,1277.3813 L 2089.2036,1276.8725 C 2088.5017,1276.5926 2087.4243,1276.2015 2086.8092,1276.0034 L 2085.6908,1275.6432 L 2087.1426,1274.746 L 2086.4073,1271.8164 L 2085.7496,1271.5758 C 2085.3879,1271.4434 2082.9036,1271.4546 2080.229,1271.6006 L 2075.3661,1271.8661 L 2074.068,1275.3051 L 2072.344,1273.8743 L 2072.8719,1273.0202 L 2070.5658,1270.9333 L 2071.1863,1268.4613 L 2070.4828,1267.8948 C 2070.096,1267.5832 2068.9646,1267.1541 2067.9686,1266.9413 L 2065.4135,1266.3792 L 2066.7816,1264.9288 C 2071.1282,1262.5895 2071.5787,1259.6185 2071.6776,1256.5903 L 2073.1065,1254.513 L 2072.5215,1250.1589 L 2074.8977,1246.4971 L 2079.1195,1246.0755 L 2083.3413,1245.6539 L 2084.3288,1246.6414 L 2089.3454,1245.6464 L 2089.3454,1247.4379 L 2095.0166,1246.1371 C 2095.1062,1248.8373 2093.5321,1250.0051 2093.3153,1252.3989 L 2098.5255,1254.7036 L 2100.4532,1253.6719 L 2105.2424,1257.2725 L 2106.3167,1260.3918 L 2107.8679,1259.2233 L 2110.8138,1266.9137 L 2111.5707,1272.8755 L 2108.0606,1273.5775 L 2108.0606,1276.8385 C 2111.1724,1276.8865 2113.7722,1277.4465 2115.7168,1278.6616 L 2133.6789,1275.2986 L 2135.3426,1282.9777 C 2136.9227,1283.5868 2138.4712,1284.294 2140.0953,1284.7783 L 2141.6701,1277.8031 L 2145.6649,1279.5887 L 2147.7559,1287.8975 L 2146.6497,1290.4496 L 2147.9732,1293.3546 L 2150.4834,1292.7246 C 2155.5784,1297.7121 2156.023,1302.6098 2156.9756,1308.5483 L 2150.0735,1310.2832 L 2149.6766,1308.9608 L 2147.7596,1309.6963 L 2147.7848,1314.5525 C 2148.7054,1315.6677 2149.5951,1316.7778 2150.0155,1318.172 C 2150.1784,1319.3291 2149.0354,1320.9885 2147.7006,1322.7217 L 2140.3193,1326.2092 L 2138.8484,1329.7075 z "},"tx2":{"name":"TX-2","path":"M 1462.4246,1321.0745 L 1460.8069,1301.1378 C 1445.6239,1302.0118 1437.4064,1302.5803 1425.7061,1303.9432 L 1430.7569,1307.462 L 1429.7747,1313.1347 L 1426.9524,1313.1347 L 1425.9174,1308.0838 L 1423.8765,1309.1648 L 1418.9992,1309.1648 L 1418.9992,1306.3292 L 1414.2006,1305.9493 L 1413.8864,1303.6154 C 1413.8816,1302.7686 1413.6902,1301.8019 1413.461,1301.4672 C 1413.2319,1301.1325 1412.5978,1300.694 1412.0519,1300.4925 L 1410.9372,1299.8819 L 1411.0594,1297.2988 L 1402.0297,1295.6676 L 1398.7365,1298.2867 L 1395.4499,1298.1883 L 1396.8854,1295.5455 C 1397.5069,1294.3272 1398.0155,1292.973 1398.0155,1292.5363 C 1398.0155,1292.0995 1397.3852,1290.8133 1396.6147,1289.678 C 1395.8443,1288.5428 1395.3977,1287.622 1395.6222,1287.632 C 1395.8468,1287.6419 1396.44,1287.9619 1396.9405,1288.343 C 1397.4409,1288.7243 1398.0416,1289.6385 1398.2753,1290.3747 L 1398.7001,1291.7132 L 1402.4822,1291.0994 L 1403.2459,1292.1778 L 1406.9719,1293.3495 L 1408.9667,1295.5537 L 1411.3696,1295.5537 L 1420.2876,1286.5831 L 1416.062,1276.1461 L 1416.5381,1275.717 C 1416.8,1275.481 1418.2738,1274.564 1419.8131,1273.6793 L 1422.6119,1272.0706 L 1422.137,1273.1785 C 1421.8758,1273.7878 1421.541,1275.1531 1421.3932,1276.2124 L 1421.1243,1278.1383 L 1422.4256,1283.9531 L 1423.6898,1284.7468 C 1424.3852,1285.1833 1425.7006,1285.6945 1426.613,1285.8828 L 1428.2721,1286.2253 L 1428.812,1287.9121 C 1429.1089,1288.8398 1429.8743,1290.1731 1430.5128,1290.8749 L 1431.6738,1292.151 L 1434.1534,1292.151 C 1435.6425,1291.1834 1437.0487,1290.0525 1438.6696,1289.3153 C 1438.8553,1289.3153 1439.3374,1289.7619 1439.7409,1290.3078 L 1440.4745,1291.3003 L 1444.3894,1287.0468 L 1446.1,1287.0468 L 1446.745,1288.7275 L 1460.6832,1288.4094 L 1464.086,1286.748 L 1464.086,1284.4947 L 1468.0559,1283.0952 L 1471.7729,1283.776 L 1474.4966,1286.5346 L 1474.0776,1289.3153 L 1476.3854,1289.3153 L 1476.9735,1291.5642 L 1480.3869,1293.267 L 1481.9565,1293.7537 L 1486.5121,1294.5233 L 1488.2104,1297.8074 L 1486.6423,1301.5603 L 1483.6519,1303.5197 L 1483.6519,1306.9319 L 1484.5026,1307.2584 C 1484.9705,1307.4379 1485.3533,1307.8323 1485.3533,1308.1349 C 1485.3533,1308.4374 1486.1304,1309.462 1487.0801,1310.4118 L 1488.8069,1312.1386 L 1488.4872,1312.4583 C 1488.3114,1312.6342 1486.1353,1312.8123 1483.6514,1312.8541 L 1479.1352,1312.93 C 1473.5614,1315.6365 1468.0468,1318.4693 1462.4246,1321.0745 z "},"tx29":{"name":"TX-29","path":"M 1424.7073,1317.4494 L 1424.387,1319.212 L 1423.2527,1317.4982 C 1422.6289,1316.5556 1421.7027,1315.5281 1421.1946,1315.2147 L 1420.2708,1314.645 L 1411.6436,1318.742 L 1410.8732,1317.9717 C 1410.4495,1317.5479 1409.7748,1316.4094 1409.3739,1315.4415 L 1408.645,1313.6818 L 1406.2388,1313.9854 L 1405.6717,1312.8512 L 1409.6416,1312.284 L 1411.183,1309.1648 C 1412.0308,1307.4493 1412.7326,1305.599 1412.7426,1305.0531 L 1412.7608,1304.0607 L 1410.4,1301.6999 L 1408.2878,1303.6114 L 1407.9402,1306.6127 L 1404.0892,1306.9805 L 1403.137,1305.4785 L 1403.1196,1301.2034 L 1405.9639,1301.9173 L 1410.1189,1299.9456 L 1413.0444,1301.7146 L 1413.9141,1306.3188 L 1418.3709,1307.0315 L 1418.7157,1309.4484 L 1423.4929,1309.7951 L 1425.6654,1308.6324 L 1426.3914,1313.1728 L 1425.7095,1314.4298 C 1425.3345,1315.1212 1424.8835,1316.48 1424.7073,1317.4494 z "},"la2":{"name":"LA-2","path":"M 1688.9544,1289.2215 L 1689.5926,1286.6791 L 1687.1102,1284.9426 L 1685.6571,1286.7926 L 1682.4098,1285.2831 L 1679.7404,1281.3875 L 1679.5437,1276.6623 L 1679.9506,1277.6892 C 1680.3042,1278.6249 1680.9826,1279.8372 1681.4582,1280.383 L 1682.3228,1281.3755 L 1683.8105,1281.3755 L 1685.7151,1279.4709 C 1686.7627,1278.4234 1687.8801,1277.4664 1688.1984,1277.3442 L 1688.777,1277.1221 L 1689.5412,1274.0028 L 1687.2511,1274.0028 L 1687.2511,1265.0001 L 1689.3778,1265.3267 C 1690.5475,1265.5064 1691.7913,1265.8775 1692.1417,1266.1516 L 1692.779,1266.65 L 1698.4476,1262.8353 L 1701.9964,1263.3561 L 1701.9964,1264.8074 L 1703.6255,1265.4325 L 1706.3604,1263.2812 L 1708.1255,1264.4055 L 1709.2713,1263.1697 L 1712.7816,1264.0792 L 1709.9363,1267.1478 L 1709.9363,1268.8222 L 1707.5716,1269.5728 L 1708.3151,1272.585 L 1706.8738,1271.1672 L 1703.078,1271.1672 L 1701.1458,1274.5628 L 1698.0935,1274.57 L 1697.3314,1275.803 L 1694.9664,1275.1846 L 1693.4895,1276.4103 L 1693.4895,1277.7387 L 1693.4895,1279.0671 L 1694.5865,1279.6542 C 1695.1898,1279.9771 1696.3293,1280.2413 1697.1186,1280.2413 L 1698.5538,1280.2413 L 1699.7679,1282.5098 L 1699.2502,1282.5098 C 1698.9655,1282.5098 1698.4041,1282.114 1698.0027,1281.6304 L 1697.2729,1280.7511 L 1694.4662,1281.092 L 1693.4212,1283.0485 C 1692.8465,1284.1246 1692.0082,1285.211 1691.5583,1285.4628 L 1690.7404,1285.9205 L 1691.2318,1289.8824 L 1688.9544,1289.2215 z "},"fl3":{"name":"FL-3","path":"M 2132.4294,1178.2276 L 2128.7962,1178.653 L 2128.8671,1180.1062 L 2126.1733,1181.1342 L 2128.8671,1186.2915 L 2128.495,1192.0336 L 2134.0954,1197.6872 L 2133.9536,1200.452 L 2135.0347,1201.3913 L 2135.1055,1205.9815 L 2136.7715,1209.6324 L 2136.9842,1210.4122 L 2131.8446,1214.6302 L 2132.5889,1219.6457 L 2128.9026,1223.4384 L 2126.2796,1224.0942 L 2125.9252,1227.1425 L 2122.6642,1228.0109 L 2120.4843,1230.3326 L 2116.3726,1232.0694 L 2115.1497,1231.6263 L 2110.8785,1233.7708 L 2108.7873,1232.6542 L 2105.863,1235.7203 L 2108.9467,1239.8497 L 2111.9419,1238.2901 L 2112.7217,1241.9587 L 2115.4156,1245.5564 L 2114.6889,1249.2073 L 2121.016,1247.8072 L 2122.7705,1251.1746 L 2133.5814,1249.0478 L 2133.5814,1254.152 L 2134.7156,1254.152 L 2134.7156,1256.4205 L 2137.5513,1256.4205 L 2137.5513,1259.2561 L 2142.6554,1259.2561 L 2143.2403,1261.3297 L 2144.4455,1261.7196 L 2145.1898,1259.0612 L 2149.461,1260.5322 L 2149.461,1261.6132 C 2149.461,1262.2116 2149.9427,1263.6461 2150.5421,1264.8033 C 2151.1416,1265.9606 2152.928,1268.5058 2154.512,1270.4569 C 2156.0961,1272.408 2157.4008,1274.2582 2157.4008,1274.5686 C 2157.06,1275.0385 2156.9436,1275.2162 2156.2665,1275.1357 L 2156.2665,1276.8371 L 2154.1221,1278.1663 L 2155.2564,1281.445 L 2158.0211,1286.5847 L 2161.3707,1289.0481 L 2164.0646,1290.0583 L 2165.3229,1295.8182 L 2167.0065,1295.446 L 2165.571,1288.8 L 2161.9733,1288.1443 L 2158.9073,1286.2302 L 2156.5324,1281.1969 L 2164.7735,1279.6019 L 2164.7735,1278.1841 C 2164.7735,1277.4058 2165.0605,1276.2069 2165.4115,1275.5256 C 2165.7624,1274.8443 2166.5608,1273.7289 2167.1838,1273.0445 L 2168.318,1271.8039 L 2167.5028,1265.2287 L 2164.3481,1261.2411 L 2163.5683,1256.6154 L 2158.6414,1254.2229 L 2154.3348,1246.354 L 2146.4481,1245.7868 L 2145.4202,1244.4399 C 2144.851,1243.6997 2143.9512,1241.8169 2143.4353,1240.2573 C 2142.9192,1238.6977 2142.2555,1237.1027 2141.9465,1236.7128 L 2141.3794,1236.0039 L 2138.2425,1236.0039 L 2137.6222,1233.5936 L 2139.4122,1230.8465 L 2143.3644,1229.1983 L 2148.3267,1229.1983 L 2147.033,1222.1092 L 2146.0405,1221.418 C 2145.4939,1221.0347 2144.1364,1219.3225 2143.0099,1217.6253 L 2140.9541,1214.5416 L 2140.9541,1210.6957 L 2137.2855,1208.693 L 2135.5486,1205.6093 L 2135.4778,1197.4746 L 2129.5229,1191.3779 L 2130.09,1186.5041 L 2132.0572,1186.4332 L 2135.4778,1186.575 L 2134.9638,1179.61 L 2132.6421,1180.1062 L 2132.4294,1178.2276 z "},"la4":{"name":"LA-4","path":"M 1533.0807,1102.4627 L 1466.0709,1106.8757 L 1469.7927,1168.8346 L 1475.466,1174.9484 L 1477.3071,1175.3211 L 1479.682,1180.1417 L 1482.5708,1182.871 L 1481.9328,1184.5546 L 1483.581,1187.0713 L 1483.3683,1188.1524 C 1483.2575,1188.7416 1483.124,1189.3433 1483.0671,1189.4993 C 1483.0101,1189.6553 1483.0061,1190.5133 1483.0671,1191.4134 L 1483.1911,1193.0616 L 1481.986,1193.8059 L 1484.2013,1197.4391 L 1486.9129,1197.4391 L 1488.3307,1199.1405 L 1487.7281,1201.4267 L 1488.7738,1202.1534 C 1489.3479,1202.5554 1489.8976,1203.2324 1489.9967,1203.6598 C 1490.0958,1204.0871 1490.6551,1204.9304 1491.2372,1205.5384 L 1492.2829,1206.655 L 1491.6803,1211.2097 L 1492.4424,1211.9895 C 1492.8645,1212.4115 1493.5955,1212.7516 1494.0552,1212.7516 L 1494.8881,1212.7516 L 1495.5085,1214.5416 C 1495.8508,1215.5239 1496.1287,1216.9275 1496.1287,1217.6608 L 1496.1287,1218.99 L 1496.6604,1218.99 C 1496.9539,1218.99 1497.3538,1218.7348 1497.5466,1218.4229 L 1497.901,1217.8557 L 1500.0986,1217.8557 L 1500.0986,1220.6914 L 1499.5209,1220.7379 L 1499.6267,1224.1442 L 1501.3372,1228.8368 L 1498.7163,1230.8997 L 1501.2329,1232.672 L 1501.2152,1233.629 C 1501.2053,1234.1571 1500.8543,1235.0441 1500.4354,1235.5962 L 1499.6733,1236.5887 L 1500.2404,1241.7106 L 1498.5213,1243.6601 L 1497.2098,1250.0225 L 1494.4273,1252.4506 L 1494.4273,1256.2964 L 1492.1588,1256.8813 L 1492.1588,1259.8233 L 1493.2931,1259.8233 L 1493.2931,1261.2233 C 1493.2931,1261.9885 1493.6067,1263.2835 1493.9843,1264.1122 L 1494.6578,1265.6186 L 1492.4424,1267.3377 L 1504.9192,1266.6288 L 1504.5293,1261.2304 L 1510.5905,1261.2411 L 1510.945,1266.2035 C 1515.2125,1265.5462 1519.0465,1265.4092 1522.6952,1265.4946 L 1524.3966,1263.7932 L 1527.2322,1263.7932 L 1527.6044,1262.7298 L 1542.6333,1261.436 L 1542.6333,1258.6536 L 1544.5013,1258.0687 C 1543.3158,1256.8171 1544.033,1255.6925 1544.6567,1254.5616 L 1542.6105,1254.3535 L 1543.6612,1251.5999 L 1544.441,1245.645 L 1541.8712,1245.645 L 1538.9115,1249.1896 C 1535.9925,1247.8048 1534.405,1245.5586 1533.5947,1242.8094 L 1530.6613,1242.2969 L 1530.1565,1234.8696 L 1538.2558,1234.8696 L 1536.3594,1214.7365 L 1535.3469,1210.2702 L 1533.3138,1209.617 L 1533.3549,1207.9439 C 1531.6118,1207.4117 1529.8687,1207.4807 1528.1256,1207.5486 C 1529.9474,1204.7943 1530.4901,1205.4123 1531.42,1205.0094 L 1530.7642,1203.308 L 1531.9598,1203.2751 C 1534.3506,1201.3191 1537.6638,1197.5182 1538.8686,1197.3411 L 1539.4855,1195.229 L 1541.3775,1195.7811 L 1541.8633,1198.7735 L 1542.6612,1198.957 L 1542.651,1201.7989 L 1546.6032,1201.9407 L 1567.6528,1195.0113 L 1567.5869,1194.4794 L 1564.9433,1194.783 L 1564.4405,1192.1341 L 1562.8385,1192.1044 L 1562.0981,1188.9219 C 1558.4182,1188.0567 1558.5418,1187.3921 1558.123,1186.6105 L 1559.3104,1182.2861 L 1557.7331,1181.4709 L 1559.4877,1177.7668 L 1557.3609,1176.4376 L 1544.9727,1177.182 L 1545.6285,1182.6938 L 1526.1334,1184.4306 L 1526.9841,1175.2502 L 1529.3058,1174.754 C 1529.902,1167.7448 1529.2298,1159.944 1526.86,1158.6439 L 1526.1866,1156.0387 L 1532.425,1156.0387 C 1532.6921,1153.6226 1533.0591,1151.5996 1534.339,1150.775 C 1533.9815,1145.696 1533.6479,1139.7282 1532.8681,1137.3235 L 1527.9588,1137.3235 L 1527.2854,1132.5029 L 1527.693,1122.8617 C 1528.6887,1121.4007 1529.3482,1119.8666 1529.0222,1118.112 L 1534.0555,1117.3499 L 1533.4529,1103.5793 L 1533.0807,1102.4627 z "},"fl2":{"name":"FL-2","path":"M 2064.9949,1266.3466 L 2064.9588,1263.9703 L 2063.8246,1262.9438 C 2063.2007,1262.3793 2062.6903,1261.6136 2062.6903,1261.2424 C 2062.6903,1260.8713 2062.2236,1260.1452 2061.6532,1259.629 L 2060.616,1258.6904 L 2056.9834,1258.6904 L 2056.3305,1256.989 L 2055.7311,1256.989 C 2055.4014,1256.989 2054.1748,1256.5668 2053.0053,1256.0508 L 2050.8791,1255.1128 L 2050.2947,1252.7899 C 2049.9733,1251.5123 2049.5478,1249.7028 2049.3492,1248.7688 C 2049.1506,1247.8348 2048.7221,1246.7502 2048.3971,1246.3585 L 2047.8061,1245.6464 L 2044.5422,1245.6464 L 2044.5422,1244.5655 L 2040.6986,1243.5042 L 2039.5572,1242.3628 C 2038.9294,1241.735 2038.2465,1240.6881 2038.0396,1240.0363 L 2037.6635,1238.8512 L 2032.3069,1233.4531 L 2028.358,1231.9753 C 2026.1861,1231.1625 2023.2607,1230.1819 2021.857,1229.7962 C 2020.4534,1229.4104 2017.6544,1228.2252 2015.6372,1227.1623 L 2011.9694,1225.2298 L 2008.8131,1225.2298 L 2008.8131,1226.364 L 2007.805,1226.364 C 2007.2506,1226.364 2006.2842,1226.7231 2005.6576,1227.162 L 2004.5183,1227.96 L 2000.0226,1227.8596 L 1999.2987,1226.7859 L 1998.0376,1227.5652 L 1998.0376,1230.4104 L 1995.8119,1229.704 L 1993.3662,1231.0128 L 1993.9717,1235.5263 L 1995.707,1236.8559 L 1996.4358,1239.8819 L 1994.3513,1240.9736 L 1992.5012,1240.6925 C 1991.4836,1240.5379 1990.5148,1240.1909 1990.3482,1239.9214 L 1990.0453,1239.4312 L 1989.079,1239.9009 C 1988.5476,1240.1593 1987.4269,1240.7283 1986.5885,1241.1654 C 1985.7502,1241.6024 1983.6238,1243.2361 1981.8633,1244.7957 C 1980.1028,1246.3553 1977.8941,1248.3372 1976.955,1249.1999 C 1976.0159,1250.0625 1974.0589,1251.5655 1972.6061,1252.5397 C 1971.1533,1253.5141 1969.6457,1254.7073 1969.2558,1255.1914 L 1968.5469,1256.0715 L 1968.5469,1255.3587 C 1968.5469,1254.9667 1968.7975,1254.1778 1969.1037,1253.6056 L 1969.6604,1252.5653 L 1967.836,1251.8653 L 1967.0573,1252.5116 C 1966.6289,1252.8671 1966.2784,1253.4527 1966.2784,1253.813 L 1966.2784,1254.4679 L 1962.759,1257.5561 L 1958.2388,1257.5561 L 1949.2096,1261.526 L 1946.996,1261.526 L 1946.9822,1259.6828 C 1946.9746,1258.6691 1946.7302,1256.8093 1946.4393,1255.55 L 1945.9103,1253.2603 L 1943.5995,1250.7573 C 1942.3285,1249.3806 1940.5949,1247.7967 1939.7471,1247.2376 L 1938.2056,1246.221 L 1934.2154,1246.2135 L 1932.1129,1244.7849 C 1930.9566,1243.9991 1929.7634,1242.8945 1929.4614,1242.3303 L 1928.9124,1241.3043 L 1922.8931,1239.9571 L 1921.1917,1238.8018 C 1920.2559,1238.1664 1917.8315,1236.8 1915.804,1235.7653 C 1913.7765,1234.7306 1910.5226,1233.3063 1908.5731,1232.6001 L 1905.0285,1231.3162 L 1904.206,1224.638 L 1905.6943,1222.6556 L 1909.6248,1222.0902 L 1911.1806,1220.1624 L 1930.2778,1217.4136 L 1929.3386,1209.3502 L 1932.3308,1208.9803 L 1930.3439,1195.1006 L 1927.7391,1195.7543 L 1927.0251,1192.9095 L 1920.9081,1194.0021 C 1920.8174,1191.2373 1921.9447,1188.8047 1923.657,1186.5317 L 1923.125,1185.1453 L 1924.8847,1183.6849 L 1949.8317,1179.5097 L 1949.8317,1180.9937 L 1951.5611,1180.9937 C 1956.943,1189.5851 1956.3819,1193.4765 1960.7149,1195.9307 L 2027.1456,1188.65 L 2027.9398,1191.5541 C 2026.4865,1193.6317 2024.562,1195.0812 2022.4913,1196.3357 L 2021.7806,1198.5747 L 2018.8109,1198.5747 L 2016.4693,1196.3971 L 2013.3858,1196.9987 C 2014.0073,1198.1478 2014.5944,1199.3114 2015.0515,1200.5315 L 2007.1426,1201.5537 L 2006.4464,1203.7475 L 2003.2949,1203.0553 L 2002.603,1206.5145 L 1995.5643,1207.0584 L 1994.9329,1205.1574 L 2003.1631,1210.6021 L 2005.9018,1209.9147 L 2006.596,1207.7276 L 2013.9558,1206.4559 L 2015.1119,1209.7723 L 2019.7851,1211.8796 L 2020.21,1210.6048 L 2022.2409,1211.1359 L 2038.3038,1208.1943 L 2038.3038,1211.1745 L 2050.8847,1208.7476 L 2052.2124,1201.657 C 2053.356,1200.6316 2054.0238,1199.015 2054.1834,1198.0475 L 2056.6672,1196.7182 L 2062.4067,1196.4733 L 2070.9137,1199.9444 L 2073.3435,1199.8702 L 2077.5381,1221.3419 L 2079.137,1220.7284 C 2078.9434,1222.5286 2076.2579,1224.9039 2074.0329,1227.1729 L 2074.0775,1231.3782 L 2071.8499,1232.0846 L 2072.1712,1246.0415 L 2073.9744,1247.108 L 2072.2015,1250.2772 L 2072.8429,1254.4369 L 2071.1972,1256.6387 C 2070.6709,1262.3404 2070.2062,1261.1996 2064.9949,1266.3466 z "},"ms4":{"name":"MS-4","path":"M 1760.4107,1128.7988 L 1726.6665,1133.1231 L 1726.3298,1139.0071 L 1722.6966,1139.9641 L 1722.8916,1144.5366 L 1721.5801,1144.5898 L 1722.9448,1148.0989 L 1724.912,1148.0989 L 1727.216,1145.1569 L 1730.3883,1145.9544 L 1731.434,1147.9394 L 1730.7428,1151.7675 L 1728.5452,1152.3346 L 1728.3679,1154.6209 C 1726.3602,1154.3118 1724.5289,1153.9439 1722.8739,1152.5473 L 1720.6045,1154.5219 L 1717.5925,1155.5247 L 1717.9824,1160.4517 L 1716.6709,1162.8797 L 1717.4153,1165.1837 L 1720.8526,1164.8275 L 1721.4029,1167.3813 L 1720.6763,1170.2524 L 1717.8584,1171.5461 L 1714.4434,1168.5259 L 1716.1328,1183.8034 L 1703.1307,1185.1395 L 1703.1307,1188.9322 L 1699.7457,1188.9322 L 1696.3075,1195.7377 L 1694.2157,1195.385 L 1693.0595,1197.0847 L 1694.6238,1197.5277 L 1694.6532,1203.6157 L 1693.4031,1203.5591 L 1691.1328,1208.2482 L 1695.758,1208.2146 C 1695.6003,1209.7666 1695.7952,1210.6721 1696.3429,1211.9009 L 1701.837,1211.5287 L 1702.5104,1214.1162 L 1702.0142,1214.7011 C 1701.7429,1215.0292 1701.5289,1215.9417 1701.5357,1216.7215 C 1701.5425,1217.5013 1701.1842,1219.543 1700.7382,1221.2585 C 1700.2921,1222.9741 1699.6709,1224.8881 1699.3558,1225.512 L 1698.7887,1226.6462 L 1698.576,1233.31 L 1699.0722,1233.948 C 1699.3475,1234.2996 1699.7313,1235.2525 1699.9229,1236.057 L 1700.2596,1237.5103 L 1704.0168,1242.26 L 1708.1817,1245.0779 L 1708.9615,1249.1896 L 1712.3289,1253.0177 L 1711.6376,1254.8254 L 1712.6124,1256.899 C 1713.1529,1258.0403 1713.9325,1259.3554 1714.3315,1259.8233 L 1715.0582,1260.674 L 1721.7574,1260.7271 L 1722.5017,1256.7395 L 1725.0184,1254.4887 C 1726.3953,1253.2513 1727.5172,1252.0407 1727.5172,1251.7948 C 1727.5172,1251.549 1726.8569,1251.0145 1726.0463,1250.5897 L 1724.5753,1249.8099 L 1726.4716,1247.9136 L 1728.4743,1247.9136 L 1730.3883,1250.0225 L 1729.6617,1251.8835 L 1730.3352,1251.8835 C 1730.7063,1251.8835 1733.4542,1250.6104 1736.4318,1249.0478 L 1741.8372,1246.1944 L 1748.0402,1244.4045 L 1751.8329,1244.8475 L 1752.3646,1242.8094 L 1753.4102,1243.1993 C 1753.985,1243.4118 1754.5835,1243.7223 1754.7394,1243.9082 C 1754.8954,1244.0941 1755.7181,1244.6987 1756.5649,1245.2374 L 1758.1067,1246.2122 L 1760.8361,1246.2122 L 1762.3071,1244.4576 L 1770.3355,1245.1665 L 1770.8671,1245.6982 C 1771.1635,1245.9844 1771.8892,1246.2122 1772.4799,1246.2122 L 1773.561,1246.2122 L 1774.1459,1243.9437 L 1775.2269,1243.9437 C 1775.8144,1243.9437 1776.2903,1243.7792 1776.2903,1243.5715 C 1771.3651,1211.9742 1765.6714,1180.4918 1760.4107,1148.9496 L 1760.4107,1128.7988 z "},"fl4":{"name":"FL-4","path":"M 2112.9344,1161.9936 L 2112.2432,1164.8292 L 2109.7443,1164.7406 L 2110.3312,1167.186 L 2109.3366,1167.3635 L 2109.9038,1172.769 L 2112.8281,1176.6857 L 2113.5724,1190.6867 L 2105.3667,1192.4058 L 2103.4121,1189.57 L 2103.0501,1185.0299 L 2100.3867,1181.9494 L 2100.8222,1180.0733 L 2027.5955,1188.6209 L 2028.4394,1191.9816 C 2026.6423,1193.8788 2024.8452,1195.4995 2023.0481,1196.4455 L 2021.9579,1199.0373 L 2018.8087,1199.1405 L 2016.363,1196.8365 L 2014.2088,1197.5297 L 2015.9631,1200.9936 L 2007.6928,1201.8698 L 2006.5129,1204.3864 L 2003.8153,1203.6421 L 2003.0709,1207.0094 L 1998.8883,1207.3639 L 2003.1241,1210.0045 L 2005.3826,1209.4789 L 2006.2079,1207.1689 L 2014.3426,1205.8751 L 2015.53,1209.2779 L 2019.3679,1211.2077 L 2019.7069,1209.7407 L 2022.176,1210.4831 L 2038.6051,1207.6474 L 2038.8709,1210.3413 L 2050.4793,1208.1082 L 2051.844,1201.5685 L 2053.439,1199.3549 C 2053.3104,1198.0602 2054.3956,1196.87 2056.4668,1196.2025 L 2062.6372,1195.8086 L 2070.6301,1199.1051 L 2073.8025,1199.0519 L 2077.737,1220.4078 L 2079.7042,1220.0711 L 2079.7042,1221.5635 L 2078.5522,1223.4913 L 2082.388,1228.3178 L 2086.7933,1228.6134 L 2089.2745,1225.9905 L 2089.6821,1222.9776 L 2092.1279,1220.6914 L 2098.3663,1220.6914 L 2101.2551,1219.3799 L 2101.2551,1217.8557 L 2103.3463,1217.8557 C 2104.8279,1215.7827 2105.1508,1214.2444 2104.8625,1212.9882 L 2106.6322,1212.9883 C 2108.1984,1210.7835 2109.1023,1209.0645 2108.6277,1208.3563 L 2110.2582,1206.9917 L 2110.6127,1204.5637 L 2114.9231,1203.8959 L 2113.4206,1196.1096 L 2124.6137,1179.3087 L 2125.9247,1180.8501 L 2128.5831,1179.8222 L 2128.5832,1178.4044 L 2132.6425,1177.9791 L 2132.8907,1179.7867 L 2135.0348,1179.2549 L 2135.9393,1186.7525 L 2130.3741,1186.7882 L 2130.02,1191.0938 L 2135.9748,1197.2615 L 2135.8683,1200.9656 L 2138.1716,1199.7431 L 2143.6479,1200.7887 L 2147.7596,1199.6544 L 2146.0071,1190.9918 L 2148.3267,1190.3146 C 2148.3267,1190.1392 2147.9593,1188.7993 2147.5115,1187.3371 C 2147.0636,1185.8749 2146.1431,1182.8285 2145.4734,1180.567 L 2144.2682,1176.4553 L 2142.3719,1176.4553 L 2142.2655,1174.8957 C 2142.2031,1174.038 2141.8363,1171.2544 2141.4681,1168.7105 L 2140.8123,1164.0849 L 2137.2677,1163.5532 L 2135.2119,1164.6165 L 2123.0718,1163.8722 C 2122.5138,1162.8351 2119.796,1162.77 2116.5321,1162.9506 C 2115.9622,1162.282 2114.7322,1161.98 2112.9344,1161.9936 z "},"nm2":{"name":"NM-2","path":"M 728.30737,954.70803 L 727.59846,956.9411 L 728.20104,959.08552 C 728.52884,960.26589 728.80191,962.04962 728.80361,963.05542 L 728.80361,964.8809 L 725.54262,966.56453 L 723.41589,964.95179 L 718.63074,964.91634 L 713.47344,966.67087 L 713.33421,962.11762 L 711.27582,960.29067 L 710.56691,960.71602 C 710.17655,960.95727 709.25117,961.2219 708.51106,961.3009 L 707.16413,961.44268 L 705.26777,958.1108 L 702.14856,958.1108 C 694.69638,1038.0385 686.78487,1117.9327 679.1444,1197.8467 L 722.31707,1201.409 L 724.92235,1173.9033 L 812.45509,1180.4429 L 811.32084,1179.929 C 810.69699,1179.6491 809.64764,1178.6952 808.99918,1177.8023 C 808.35061,1176.9092 807.66535,1175.5663 807.47502,1174.8249 L 807.13826,1173.4779 L 809.17641,1172.0955 L 809.38908,1166.8673 C 872.15826,1170.8323 901.51284,1172.632 995.17691,1176.2427 L 999.04041,1079.6358 L 976.07171,1078.732 L 976.07171,1073.2379 L 965.26081,1072.5113 L 966.02291,1062.4625 L 959.44776,1062.4625 L 960.12123,1046.0157 L 954.50314,1046.0157 L 956.34631,1013.1223 L 946.61648,1013.1223 L 948.93819,974.75245 L 890.66571,971.89912 L 888.53898,1009.4359 L 887.2275,1010.3221 L 886.30591,1031.4831 L 829.39806,1027.7967 L 830.16017,1016.5251 L 828.93727,1016.5251 C 828.26148,1016.5251 827.46132,1016.3045 827.16499,1016.0288 C 826.86867,1015.7531 823.75757,1014.3235 820.25311,1012.8564 L 813.89067,1010.1803 L 814.52869,998.09337 C 815.36469,994.77595 817.77346,994.15472 820.18222,992.63476 L 829.02591,993.41456 L 829.80571,989.30288 L 832.53502,989.30288 L 835.42381,985.5102 L 835.42381,983.31258 L 832.3046,981.52255 L 830.99311,981.98334 L 824.06354,980.19337 L 821.72413,981.45166 L 820.57212,984.76585 L 818.21502,984.76585 L 816.42499,983.15305 L 806.91544,981.59452 L 806.78381,966.35186 L 794.0943,965.37714 L 792.67648,959.81218 L 773.55511,958.33362 L 773.03965,955.27516 L 768.33293,955.10332 L 768.21905,957.82723 C 754.55551,956.94178 736.55501,954.63929 728.30737,954.70803 z "},"ms2":{"name":"MS-2","path":"M 1623.4643,1181.8634 L 1622.4608,1180.3123 L 1619.3643,1180.9316 L 1616.9271,1180.2943 L 1616.9271,1178.7252 L 1615.3487,1178.7252 L 1614.6173,1175.8109 L 1613.7251,1174.1936 L 1611.157,1172.4284 L 1612.1473,1168.2411 L 1614.0875,1167.8674 L 1613.4728,1169.4695 L 1615.2113,1170.9123 L 1617.0654,1170.2008 L 1616.421,1166.9789 L 1620.2778,1163.2408 L 1619.0906,1161.0225 L 1619.7352,1160.3744 C 1620.0898,1160.018 1621.181,1159.4542 1622.1602,1159.1215 L 1623.9404,1158.5165 L 1625.0475,1156.7614 L 1624.3354,1154.9058 L 1623.0416,1154.8971 C 1622.33,1154.8924 1621.3649,1154.6335 1620.897,1154.322 L 1620.0464,1153.7555 L 1624.918,1154.4918 L 1624.5874,1153.488 L 1626.145,1151.4495 L 1627.7026,1149.411 L 1627.7026,1147.1481 L 1624.7819,1145.8174 L 1623.6865,1146.4943 L 1624.3316,1148.5268 L 1623.0397,1148.8729 C 1622.3291,1149.0633 1621.1735,1149.2225 1620.4717,1149.2268 L 1619.1957,1149.2345 L 1619.1957,1145.7961 L 1620.1881,1145.489 C 1620.734,1145.32 1621.6238,1144.9453 1622.1654,1144.6561 C 1622.707,1144.367 1623.5152,1144.1304 1623.9613,1144.1304 L 1624.7724,1144.1304 L 1625.2923,1142.7126 L 1626.0437,1143.4215 C 1626.4571,1143.8114 1627.071,1144.1304 1627.4081,1144.1304 L 1628.021,1144.1304 L 1629.2703,1140.8208 L 1628.0429,1139.5933 L 1630.3624,1139.5933 L 1632.339,1137.4092 L 1631.9459,1135.3399 L 1626.954,1134.7727 L 1626.676,1132.8374 L 1628.2697,1131.5147 L 1628.2697,1129.3494 L 1626.496,1128.6688 L 1623.6777,1129.9529 L 1620.3299,1128.2216 L 1620.3299,1126.9129 C 1620.3299,1126.1931 1620.4914,1125.4427 1620.6888,1125.2453 L 1621.0476,1124.8864 L 1623.2479,1127.6836 L 1626.5683,1127.6836 L 1626.5683,1125.3572 L 1621.9751,1123.0207 L 1625.4341,1119.8311 L 1625.4341,1118.1813 L 1623.7471,1116.7813 L 1622.0313,1117.4397 L 1622.0313,1119.1476 L 1618.5289,1120.9587 L 1617.0423,1118.9256 L 1618.0853,1117.5997 C 1618.659,1116.8704 1619.7815,1115.7599 1620.5798,1115.1319 L 1622.0313,1113.9902 L 1622.0313,1112.3431 L 1620.5766,1111.79 C 1619.7765,1111.4858 1618.4298,1111.2369 1617.584,1111.2369 L 1616.0462,1111.2369 L 1616.1063,1106.7293 L 1620.7242,1102.4909 L 1618.2527,1096.208 L 1615.5093,1096.208 L 1615.5093,1101.2957 L 1613.4039,1101.7021 L 1612.2621,1100.5603 L 1613.5841,1098.1006 C 1614.3113,1096.7477 1615.2538,1095.2153 1615.6787,1094.6952 L 1616.4512,1093.7494 L 1616.0765,1091.1895 L 1612.7519,1089.3535 L 1612.2444,1087.8311 L 1616.2485,1088.5822 L 1618.1113,1086.7195 L 1617.3983,1081.9648 L 1619.1957,1080.4731 L 1619.1957,1077.2092 L 1616.4365,1077.2092 L 1615.6836,1079.5812 L 1614.8876,1078.0468 C 1614.4497,1077.2029 1614.0915,1076.0041 1614.0915,1075.3828 L 1614.0915,1074.2532 L 1617.4943,1069.9569 L 1617.4943,1066.922 L 1614.9422,1067.2844 L 1614.5982,1069.6956 L 1612.089,1072.0528 L 1610.5236,1071.0853 L 1614.0915,1069.2402 L 1614.0915,1066.2752 L 1613.099,1065.5218 C 1612.5532,1065.1075 1611.8037,1064.7603 1611.4336,1064.7504 L 1610.7606,1064.7324 L 1610.4052,1068.4094 L 1608.1366,1068.8341 L 1610.1216,1066.628 L 1610.1216,1063.638 L 1608.9873,1063.031 C 1608.3635,1062.6971 1607.8531,1062.2186 1607.8531,1061.9675 L 1607.8531,1061.5111 L 1610.15,1060.7531 C 1611.4133,1060.3361 1612.5858,1059.7704 1612.7555,1059.4958 L 1613.064,1058.9966 L 1612.4057,1056.3734 L 1607.0024,1054.1525 L 1609.5866,1052.7655 L 1612.5431,1055.0912 L 1615.5761,1055.0912 L 1617.6333,1053.5869 L 1616.8691,1051.1793 L 1614.7014,1050.4913 L 1612.5639,1051.6353 L 1611.2559,1050.3273 L 1611.2559,1047.9396 L 1614.2333,1048.0541 C 1615.8709,1048.1171 1617.6573,1048.0502 1618.2032,1047.9054 L 1619.1957,1047.642 L 1619.1957,1045.6547 L 1615.5948,1044.0322 L 1614.4106,1042.0943 L 1617.0001,1038.5916 L 1616.6436,1036.7599 L 1612.8364,1035.4788 L 1615.8311,1034.1143 L 1616.4814,1035.8088 L 1619.1957,1035.8088 L 1619.1957,1033.6072 L 1618.6285,1033.2567 C 1618.3166,1033.0639 1618.062,1032.7298 1618.0627,1032.5143 L 1618.064,1032.1225 L 1621.5317,1031.9983 L 1622.036,1031.4932 C 1622.3134,1031.2154 1622.7137,1029.9036 1622.9254,1028.5779 L 1623.3105,1026.1676 L 1619.9896,1026.1676 L 1618.644,1024.822 L 1620.4142,1022.866 L 1623.711,1024.7498 L 1625.7176,1023.5011 L 1626.0765,1020.4963 L 1620.5568,1020.4963 L 1619.8762,1019.8158 C 1619.5019,1019.4415 1619.1957,1018.8034 1619.1957,1018.3979 L 1619.1957,1017.6607 L 1621.4642,1019.9292 L 1623.6113,1019.9292 L 1623.9556,1019.0321 C 1624.1449,1018.5387 1624.2998,1017.5179 1624.2998,1016.7636 L 1624.2998,1015.3922 L 1627.1093,1015.3922 L 1628.9673,1012.5565 L 1627.1093,1009.7209 L 1629.8922,1009.7209 L 1630.2547,1012.273 L 1633.0903,1012.273 L 1632.7996,1008.303 L 1636.2161,1006.0345 L 1636.8707,1003.9941 L 1635.973,1002.6239 C 1635.4792,1001.8704 1635.0753,1000.9016 1635.0753,1000.4711 L 1635.0753,999.68836 L 1636.2095,998.66186 C 1636.8334,998.09729 1637.3438,997.3117 1637.3438,996.91607 C 1637.3438,996.5205 1636.7413,995.47539 1636.005,994.59368 L 1634.6663,992.99057 L 1634.1301,989.25427 L 1635.0506,989.28632 L 1635.0753,992.13988 L 1637.8286,992.13988 L 1640.2298,989.08714 L 1639.8959,986.75216 L 1635.3588,986.75216 L 1635.4155,986.04325 C 1635.4467,985.65335 1635.5105,984.39858 1635.5573,983.25485 L 1635.6424,981.17541 L 1636.4386,981.97166 L 1636.174,985.90147 L 1639.4734,985.90147 L 1640.8442,984.24976 L 1640.4239,983.56977 C 1640.1927,983.19575 1639.9028,981.97234 1639.7795,980.85107 L 1639.5554,978.81236 L 1637.9699,976.39026 L 1638.3185,976.04171 C 1638.5102,975.85002 1638.8797,975.69315 1639.1397,975.69315 L 1639.6123,975.69315 L 1639.6123,977.82277 L 1641.3881,979.29652 L 1644.6155,977.39 L 1647.2685,977.6781 L 1646.985,976.26028 L 1651.4319,976.26028 L 1651.7389,977.81988 C 1651.9078,978.67766 1652.1038,980.27271 1652.1744,981.36444 L 1652.3027,983.34939 L 1650.9925,985.75656 L 1651.9771,989.18945 L 1650.7078,990.45869 L 1653.5653,994.94065 L 1655.562,1010.5911 L 1658.7468,1012.4189 L 1659.5629,1018.951 L 1669.5237,1017.5955 C 1671.1985,1024.3951 1671.6365,1031.1946 1671.9386,1037.9942 L 1668.3616,1039.7787 L 1663.1481,1039.796 L 1661.6455,1040.7488 L 1662.4559,1048.9737 L 1694.544,1045.7787 L 1696.3006,1058.9725 L 1702.1415,1058.3675 L 1701.3624,1059.6282 L 1699.0028,1059.6282 L 1699.8673,1069.4247 L 1707.0741,1068.835 L 1709.6649,1090.1418 L 1702.4448,1090.9454 L 1703.2371,1098.4765 L 1704.9343,1100.3802 L 1704.5338,1101.6968 C 1704.3136,1102.4211 1703.5517,1103.7908 1702.8409,1104.7407 L 1701.5485,1106.468 L 1703.1903,1108.6699 C 1704.0933,1109.881 1704.8321,1111.2092 1704.8321,1111.6215 L 1704.8321,1112.3712 L 1704.3465,1112.3712 C 1704.0795,1112.3712 1702.6911,1111.4779 1701.2613,1110.3862 L 1698.6617,1108.4013 L 1695.0863,1108.4013 L 1692.0793,1110.7665 L 1690.9167,1107.9224 L 1685.8699,1111.7038 L 1684.288,1109.4454 L 1681.0127,1112.5834 L 1681.0127,1115.7739 L 1675.3892,1115.7739 L 1673.8516,1118.4678 C 1673.0058,1119.9494 1671.9347,1121.6083 1671.4712,1122.1541 C 1671.0077,1122.7 1670.4338,1123.1466 1670.1956,1123.1466 L 1667.2285,1119.0463 L 1662.0726,1119.753 L 1657.7081,1116.2456 L 1655.8757,1117.7589 L 1653.5069,1117.7589 L 1653.818,1124.3199 L 1664.847,1123.4078 L 1665.4781,1128.7304 L 1673.9236,1128.0862 L 1672.8432,1129.3027 C 1672.0449,1130.2525 1672.1801,1130.9789 1671.4127,1132.0136 C 1670.7662,1132.8354 1670.2372,1133.8563 1670.2372,1134.2821 C 1670.2372,1134.7079 1670.0444,1135.0563 1669.8085,1135.0563 C 1669.5728,1135.0563 1669.042,1135.8197 1668.6289,1136.7528 L 1667.878,1138.4493 L 1669.7092,1140.2806 L 1669.0531,1141.0712 C 1668.6922,1141.5061 1668.0454,1141.8619 1667.6157,1141.8619 L 1666.8345,1141.8619 L 1666.8345,1146.8991 L 1668.0529,1147.6521 L 1667.4461,1151.9905 L 1667.8581,1152.1721 C 1668.0847,1152.272 1669.0956,1153.4887 1670.1044,1154.8758 C 1671.1132,1156.2629 1671.9386,1157.7213 1671.9386,1158.1168 L 1671.9386,1158.8358 L 1674.3202,1160.1104 L 1673.7921,1162.8727 L 1674.8293,1163.5138 L 1673.7888,1164.8673 L 1673.859,1166.2946 L 1676.4757,1165.6048 L 1676.4757,1166.1408 C 1676.4757,1166.4355 1676.1566,1166.9308 1675.7667,1167.2415 L 1667.3731,1171.9197 L 1663.4986,1171.9197 L 1662.7408,1173.1459 L 1659.9452,1172.4442 L 1643.7556,1174.2599 L 1644.2734,1179.6482 L 1623.4643,1181.8634 z "},"tx4":{"name":"TX-4","path":"M 1382.4888,1129.385 C 1382.0592,1129.385 1381.4035,1129.0186 1381.0318,1128.5708 L 1380.3561,1127.7566 L 1377.0317,1127.0264 L 1377.0317,1125.8826 L 1372.6728,1126.619 L 1367.2843,1122.5059 L 1348.6753,1123.3093 L 1348.6753,1124.848 L 1337.8998,1125.2098 L 1337.8998,1122.0888 L 1335.549,1121.3426 L 1336.2948,1116.9278 L 1333.3628,1115.5919 L 1333.3628,1110.7093 L 1329.9744,1106.8501 L 1334.6029,1102.2683 L 1331.3473,1099.9982 L 1328.8657,1101.5957 L 1325.5131,1101.5957 L 1324.7866,1104.9037 L 1322.9947,1105.5914 L 1320.3517,1103.8596 L 1320.0353,1088.8353 L 1314.7813,1088.4951 L 1313.3692,1055.5157 L 1314.927,1056.035 L 1315.6379,1060.4087 L 1318.2847,1062.5519 L 1319.5932,1060.7625 L 1321.3742,1060.7625 L 1321.7367,1063.3145 L 1324.3543,1063.6856 L 1327.1244,1061.8706 L 1327.1244,1060.2768 C 1327.1244,1059.4002 1327.2923,1058.515 1327.4975,1058.3098 L 1327.8707,1057.9367 L 1329.3929,1059.2 L 1329.3929,1058.427 L 1330.601,1059.1737 L 1328.8832,1061.0719 L 1329.2798,1061.6261 C 1329.498,1061.9309 1330.2472,1062.4993 1330.9448,1062.8892 C 1331.6424,1063.2791 1332.7325,1063.5981 1333.3673,1063.5981 L 1334.5214,1063.5981 L 1335.852,1066.5186 L 1339.5756,1065.8201 L 1341.2732,1067.6865 C 1342.2068,1068.713 1342.9782,1069.88 1342.9874,1070.2797 L 1343.004,1071.0064 L 1344.7476,1071.6755 L 1346.9739,1069.6607 L 1346.9739,1066.4337 L 1347.8618,1066.4337 C 1348.3502,1066.4337 1349.2289,1066.6901 1349.8144,1067.0035 L 1350.879,1067.5732 L 1353.8066,1066.2393 L 1355.0052,1061.2822 L 1357.1822,1061.9732 L 1357.1822,1060.8943 L 1360.6652,1061.1683 L 1362.6283,1060.4935 C 1363.7079,1060.1223 1364.8814,1059.5285 1365.2361,1059.1739 L 1365.8808,1058.5291 L 1370.1336,1060.9193 L 1371.1724,1060.473 C 1371.7437,1060.2275 1372.8194,1060.0873 1373.5629,1060.1615 L 1374.9147,1060.2963 L 1374.3423,1057.3017 L 1377.4181,1057.9772 L 1378.872,1056.2254 L 1380.6287,1056.2254 L 1382.6607,1054.3865 L 1384.4044,1055.0556 L 1384.4044,1057.2179 L 1385.964,1057.5056 C 1386.8218,1057.6638 1389.3509,1057.8361 1391.5842,1057.8885 L 1395.6448,1057.9838 L 1396.3504,1056.8421 L 1398.079,1057.5054 L 1400.284,1055.1386 L 1400.284,1052.9615 L 1401.7399,1051.7533 L 1402.5715,1052.2793 C 1403.0289,1052.5686 1404.1201,1052.8092 1404.9963,1052.814 L 1406.5893,1052.8227 L 1406.0134,1053.7546 L 1407.1251,1054.7064 C 1407.7365,1055.2299 1408.4764,1055.6583 1408.7692,1055.6583 C 1409.0621,1055.6583 1409.5058,1056.0017 1409.7552,1056.4215 L 1410.2087,1057.1846 L 1413.7952,1057.8785 L 1415.2629,1059.3462 C 1416.0702,1060.1535 1416.7448,1060.9938 1416.7621,1061.2136 C 1416.7794,1061.4334 1417.5729,1062.2299 1418.5255,1062.9837 L 1420.2576,1064.3543 L 1422.0387,1064.2959 C 1423.0183,1064.2638 1424.394,1064.3537 1425.0959,1064.4957 L 1426.3719,1064.754 L 1426.3719,1066.4337 L 1428.0733,1066.4337 L 1428.0733,1067.7003 L 1430.9089,1067.1581 L 1430.9089,1068.2163 L 1432.185,1068.113 C 1432.8868,1068.0561 1433.7403,1068.0378 1434.0817,1068.0723 C 1434.4231,1068.1069 1435.4439,1068.7848 1436.3502,1069.5789 L 1437.998,1071.0225 L 1441.1172,1070.432 L 1441.1172,1071.9543 L 1445.4637,1074.8306 L 1450.7525,1074.5174 L 1452.4454,1073.1124 L 1454.305,1073.826 L 1455.7867,1072.5963 L 1458.7447,1074.5344 L 1461.3548,1073.3452 L 1462.5746,1074.0991 L 1464.8773,1114.6856 L 1431.7776,1116.7618 L 1430.6254,1115.264 L 1408.579,1116.3411 L 1408.2633,1112.526 L 1381.2076,1114.2933 L 1383.4675,1129.5034 L 1382.4888,1129.385 z "},"tx3":{"name":"TX-3","path":"M 1326.6056,1125.8816 L 1326.5572,1120.8781 L 1328.8258,1120.8781 L 1328.8258,1117.4753 L 1319.8935,1117.4753 L 1319.1846,1109.5355 L 1320.3188,1109.5355 L 1320.3188,1104.4052 L 1323.0784,1106.2133 L 1325.2925,1105.0284 L 1326.0117,1102.1628 L 1329.1761,1102.1628 L 1331.3311,1100.5871 L 1333.7839,1102.4373 L 1329.3289,1106.7608 L 1332.7957,1110.7093 L 1332.7957,1115.7983 L 1335.6313,1117.0902 C 1335.5719,1118.5114 1335.4484,1119.8045 1335.0688,1121.1617 L 1333.6761,1120.951 L 1330.9261,1121.3472 L 1326.6056,1125.8816 z "},"ar4":{"name":"AR-4","path":"M 1485.052,954.70803 L 1483.5988,957.04743 L 1481.4188,956.33852 L 1477.2895,958.30572 L 1475.0386,956.90565 C 1474.1718,957.85088 1473.2307,958.79606 1470.7143,959.74129 L 1468.623,957.41958 L 1468.0559,962.93139 L 1463.2885,963.28585 L 1462.9517,968.60268 L 1457.2766,968.66586 L 1458.1666,974.55753 L 1452.4598,974.55753 L 1452.4598,977.42624 L 1448.4899,979.27179 L 1448.4899,985.75832 C 1444.5531,987.66144 1442.0727,987.03998 1438.2816,988.7003 L 1440.7097,1068.5414 L 1442.5351,1068.4173 L 1442.2515,1071.0225 L 1445.672,1072.4581 L 1445.0695,1073.0607 L 1449.6242,1073.0607 L 1449.6242,1072.0328 L 1450.8116,1072.7771 L 1452.4421,1071.4125 L 1454.303,1072.1214 L 1455.898,1070.8099 L 1458.6273,1072.0505 L 1462.4378,1071.4302 L 1463.7493,1072.9898 L 1465.9205,1105.5643 C 1518.8454,1102.4524 1566.0142,1098.8511 1613.0636,1095.2496 L 1614.1801,1094.133 L 1615.3144,1092.9988 L 1614.9954,1092.2013 L 1614.6941,1091.386 L 1613.932,1091.386 C 1613.5132,1091.386 1612.615,1090.8728 1611.9293,1090.234 L 1610.671,1089.0643 L 1611.9293,1086.7249 L 1613.7194,1086.9908 C 1614.7029,1087.1409 1615.8391,1087.1511 1616.236,1087.0085 L 1616.9449,1086.7427 L 1616.2537,1081.4081 L 1618.0614,1079.9017 L 1618.026,1078.0585 L 1615.6865,1081.1777 L 1615.2081,1080.8942 C 1614.943,1080.7304 1614.3311,1079.798 1613.8434,1078.8206 L 1612.9572,1077.0306 L 1612.9572,1073.4506 L 1616.36,1070.1896 L 1616.2714,1067.8502 L 1615.9524,1068.7009 C 1615.7821,1069.1688 1614.9971,1070.2534 1614.1978,1071.1112 L 1612.7446,1072.6708 L 1611.7698,1072.6708 C 1611.2299,1072.6708 1610.3846,1072.5233 1609.8912,1072.334 L 1608.9873,1071.9796 L 1608.9873,1071.1998 C 1608.9873,1070.7653 1609.1787,1070.4034 1609.4127,1070.4023 C 1609.6466,1070.4011 1610.6563,1069.8998 1611.6635,1069.2857 L 1613.5067,1068.1692 L 1613.1877,1067.3362 C 1613.0141,1066.8839 1612.5009,1066.3737 1612.0534,1066.202 L 1611.2382,1065.9007 L 1611.9116,1068.5237 L 1608.4911,1069.9415 L 1607.3923,1069.268 L 1607.6936,1068.1338 C 1607.8566,1067.5102 1608.1781,1066.9995 1608.4202,1066.9995 C 1608.6624,1066.9995 1609.0308,1066.5578 1609.2355,1066.0247 L 1609.6077,1065.0677 L 1607.2683,1063.2954 L 1606.7897,1060.832 L 1611.8584,1058.9002 L 1611.4863,1057.6419 L 1605.4251,1054.3809 L 1609.0582,1051.5098 L 1613.5953,1054.0619 L 1616.3246,1053.3707 L 1615.722,1051.8111 L 1611.4863,1052.3782 L 1610.0507,1050.6237 L 1610.4052,1046.8664 L 1618.0614,1046.9728 L 1618.0614,1046.0157 L 1617.2816,1046.0157 C 1616.8557,1046.0157 1615.8349,1045.4925 1615.0131,1044.846 L 1613.5244,1043.6586 L 1613.5244,1041.0711 L 1615.7929,1037.8633 C 1614.68,1037.1954 1613.3907,1036.8875 1612.1065,1036.5872 L 1611.7344,1034.6732 L 1613.1522,1034.1415 C 1613.9244,1033.8478 1614.7198,1033.3383 1614.9245,1033.0072 C 1615.1292,1032.6761 1615.5204,1032.4047 1615.7929,1032.4047 C 1616.0654,1032.4047 1616.4456,1032.9151 1616.6436,1033.5389 L 1616.998,1034.6732 L 1618.0968,1034.6732 L 1617.4766,1033.5035 L 1616.8563,1032.3515 L 1617.2994,1031.0223 L 1619.1248,1030.9336 C 1620.1316,1030.883 1621.0316,1030.746 1621.1275,1030.6324 C 1621.5216,1029.5506 1621.7997,1028.4273 1622.0491,1027.3005 L 1619.2489,1027.3005 L 1617.9196,1025.8827 L 1610.5115,1026.2726 L 1609.7494,1027.0346 C 1609.3327,1027.4514 1608.9873,1028.0651 1608.9873,1028.3993 L 1608.9873,1029.0019 L 1607.41,1029.0019 L 1607.0556,1029.9057 C 1606.8662,1030.3991 1606.7188,1031.0062 1606.7188,1031.2704 C 1606.7188,1031.5345 1607.0378,1032.1081 1607.4277,1032.5287 C 1607.8176,1032.9493 1608.7049,1034.0863 1609.395,1035.0631 L 1610.6533,1036.8354 L 1609.0937,1038.1291 L 1608.3316,1036.8885 L 1606.1517,1037.5797 L 1605.4605,1035.772 L 1603.9364,1037.048 L 1602.7844,1036.3214 C 1601.1467,1037.459 1599.783,1038.0941 1598.9208,1037.8101 L 1597.9283,1037.4025 L 1599.2044,1036.534 C 1599.9062,1036.057 1600.4804,1035.4432 1600.4804,1035.1694 L 1600.4804,1034.6732 L 1598.8322,1034.6732 L 1597.1663,1036.4809 L 1594.6673,1033.9643 L 1593.1609,1027.4068 L 1590.219,1027.4423 C 1589.0423,1026.0788 1588.3157,1024.0689 1587.9327,1022.1046 L 1579.1245,1022.0191 L 1578.1852,1006.813 L 1543.2004,1008.5853 L 1543.2004,1011.2791 C 1540.5104,1011.7562 1537.6371,1012.1498 1533.5415,1011.988 L 1532.2477,1014.8237 L 1528.4551,1014.8237 L 1528.4551,1011.4209 L 1525.6194,1011.4209 L 1525.6194,1009.7195 L 1523.3155,1009.7195 L 1521.7543,1004.6154 L 1517.6796,1004.6154 L 1517.6311,1001.9585 L 1512.5755,1002.3468 L 1512.9638,993.45539 L 1492.017,995.15139 L 1491.4854,997.13634 L 1475.2868,998.37694 L 1473.8689,974.48664 L 1476.6145,972.33756 L 1482.3227,972.28902 L 1485.9913,967.18486 L 1494.8273,967.2334 L 1494.4273,960.98189 L 1492.1588,959.77674 L 1485.7191,961.30861 L 1485.0503,962.59951 L 1488.1003,958.96149 L 1487.2851,957.86268 C 1486.843,957.25812 1486.4875,956.30007 1486.4875,955.73595 L 1486.4875,954.70803 L 1485.052,954.70803 z "},"ga3":{"name":"GA-3","path":"M 1946.8864,1093.2794 L 1944.3296,1090.5015 L 1939.096,1090.5581 L 1936.7877,1089.079 L 1936.7877,1086.0888 L 1934.2871,1083.6928 C 1932.9117,1082.3749 1931.46,1080.6961 1931.0609,1079.9619 C 1930.6619,1079.2277 1930.2963,1078.1493 1930.2485,1077.5655 L 1930.1616,1076.504 L 1928.2808,1075.4514 L 1928.2808,1074.4325 C 1928.2808,1073.8721 1927.8927,1072.6356 1927.4184,1071.6847 C 1926.944,1070.7338 1926.1783,1069.6426 1925.717,1069.2596 L 1924.878,1068.5634 L 1924.878,1066.2752 L 1923.2486,1065.0159 L 1905.7994,1011.1805 L 1907.4563,1010.1453 C 1909.8353,1009.8023 1911.744,1009.204 1914.9751,1007.0859 L 1925.2214,1007.5268 L 1925.9724,1002.3353 C 1930.016,1002.0515 1932.7903,1001.5116 1933.8162,1001.0123 L 1933.6815,1005.2581 L 1936.2127,1010.153 L 1932.9796,1013.8856 L 1933.0065,1015.9213 L 1936.5937,1019.9022 L 1945.0838,1016.824 L 1949.7113,1016.6354 L 1950.2075,1015.6321 L 1956.364,1014.8797 L 1961.4438,1020.6441 L 1961.4977,1021.613 L 1967.1404,1026.0883 L 1967.5334,1030.0437 L 1970.2354,1030.0976 L 1970.8565,1024.937 L 1977.3245,1021.9619 L 1977.3313,1019.6372 C 1977.8355,1019.0425 1978.4959,1018.6351 1979.3595,1018.4715 L 1980.5241,1018.4984 L 1981.1186,1013.7936 L 1984.1012,1014.4414 C 1984.3751,1015.4675 1984.7646,1016.378 1985.7495,1016.6932 L 1985.8304,1021.0253 L 1987.2993,1022.1708 L 1992.3687,1022.1438 L 1994.8217,1025.4616 C 1993.8007,1026.2067 1992.9374,1027.4261 1991.4927,1031.349 L 1991.3767,1041.2612 L 1993.3051,1044.383 L 1997.5,1043.7053 L 2001.6291,1051.4629 C 2001.8627,1052.8892 2001.4672,1053.1933 2004.221,1059.115 L 2000.4273,1059.2767 L 2001.8601,1064.1263 L 1998.2811,1065.7699 C 1998.2273,1067.0604 1996.2774,1068.9127 1993.4887,1071.0135 L 1992.3627,1068.5429 C 1985.8464,1066.2652 1980.3662,1062.8996 1975.8829,1058.4873 L 1969.1982,1058.007 L 1966.1255,1060.3097 L 1957.4331,1060.5003 L 1957.4331,1063.0134 L 1962.6976,1070.611 L 1963.4857,1085.9997 C 1961.4659,1086.9524 1958.6457,1090.4208 1953.7671,1093.3175 L 1946.8864,1093.2794 z "},"sc2":{"name":"SC-2","path":"M 2151.7295,1074.9343 L 2150.8788,1076.0089 L 2145.924,1073.6174 L 2143.8976,1074.8829 C 2142.3521,1074.8558 2141.0982,1074.4955 2140.3589,1073.5472 L 2139.6864,1069.3418 L 2137.112,1066.9232 L 2138.35,1063.6433 L 2136.4354,1059.6282 L 2134.9992,1059.5802 C 2132.949,1057.2685 2132.4323,1055.4681 2132.4471,1053.8448 L 2127.9602,1050.6853 L 2126.6755,1048.1726 L 2123.7449,1048.7328 L 2119.3131,1046.4228 L 2120.0237,1042.4711 L 2117.7018,1041.4801 L 2116.2816,1032.5791 L 2114.2221,1032.5204 C 2113.8793,1030.2577 2112.4259,1028.9946 2110.9555,1027.7468 L 2111.651,1023.5658 C 2108.5049,1021.5709 2105.532,1021.8257 2103.7704,1019.5279 L 2097.1876,1018.1756 L 2094.368,1015.5803 L 2105.2082,1000.1106 L 2102.2746,999.05789 L 2098.7107,999.7292 L 2094.5799,997.69769 L 2093.3153,994.92216 C 2093.1984,991.96158 2093.5667,988.71 2094.6029,985.05764 L 2097.1781,981.648 L 2098.9282,974.43095 L 2097.3477,971.87303 L 2095.7672,970.87256 L 2098.6008,957.41374 L 2103.168,958.02834 L 2099.5314,954.27468 L 2100.6599,951.30662 L 2102.1976,951.30662 L 2104.0551,946.76959 L 2105.6532,946.76959 C 2107.3479,949.47252 2109.8214,947.07062 2109.8289,949.0381 L 2112.0305,949.0381 L 2112.0305,946.84603 C 2117.4639,944.88139 2122.0754,942.18129 2127.8116,940.43294 L 2126.7133,945.32125 L 2136.1993,951.30089 L 2137.0034,953.64199 L 2128.1561,956.9779 C 2127.8056,956.9779 2127.0569,957.48832 2126.4923,958.11216 L 2125.4658,959.24642 L 2123.6726,959.28969 L 2121.9002,957.60265 L 2121.9676,955.71116 C 2122.6821,955.80502 2123.5286,954.19336 2124.4723,952.33896 L 2122.3763,950.20015 L 2117.9242,951.13943 L 2116.6055,954.44528 L 2118.5004,958.59274 L 2120.0599,958.63602 C 2123.9319,963.82763 2120.403,961.27419 2124.9984,966.79689 L 2130.4035,968.86339 C 2131.4797,967.95247 2132.5355,968.68157 2134.4321,969.69055 L 2137.3495,969.98324 L 2133.2022,979.2246 L 2135.3009,983.38954 L 2134.241,986.13439 L 2132.4847,986.02391 L 2131.8582,987.99786 L 2128.8278,989.37859 L 2119.6867,990.42023 L 2118.1947,992.42345 C 2120.3327,1006.7324 2121.1729,1007.5436 2120.9315,1011.5129 L 2126.6425,1016.4493 L 2130.2525,1018.0068 L 2138.9627,1026.6214 L 2141.3084,1027.3942 C 2143.6703,1030.502 2145.9458,1033.6098 2146.7936,1035.5496 L 2151.9891,1036.7938 L 2153.4252,1035.6746 C 2155.9616,1037.2895 2157.0704,1038.7746 2158.5686,1040.6492 L 2161.1489,1040.9025 C 2165.1961,1042.3671 2163.2299,1042.6636 2167.5798,1045.1664 L 2167.6091,1046.9756 L 2168.6016,1047.828 C 2169.1474,1048.2968 2170.0407,1048.8387 2170.5865,1049.0323 L 2171.579,1049.3843 L 2171.579,1050.7353 C 2171.579,1051.4783 2171.2989,1052.89 2170.9564,1053.8723 C 2170.614,1054.8546 2170.1674,1055.6624 2169.9639,1055.6674 C 2169.7605,1055.6724 2168.73,1056.438 2167.674,1057.3688 C 2166.6181,1058.2995 2165.523,1059.0611 2165.2408,1059.0611 C 2164.9585,1059.0611 2163.9722,1059.6195 2163.0491,1060.302 L 2161.3707,1061.5429 L 2161.3707,1062.5405 C 2161.3707,1063.0892 2160.7427,1064.7193 2159.9751,1066.1629 L 2158.5795,1068.7876 L 2157.0086,1070.021 C 2156.1447,1070.6993 2155.251,1071.1937 2155.0227,1071.1196 C 2154.7943,1071.0455 2154.1513,1071.6317 2153.5938,1072.4222 C 2153.0363,1073.2128 2152.1974,1074.3432 2151.7295,1074.9343 z "},"ok2":{"name":"OK-2","path":"M 1344.1382,1070.5425 L 1344.091,1068.9858 L 1340.2401,1064.6265 L 1336.7808,1065.3863 L 1335.4493,1062.4638 C 1333.553,1063.0271 1331.8955,1062.5559 1330.4331,1061.2393 L 1332.0903,1059.3446 L 1331.8232,1053.9414 L 1329.96,1051.1213 L 1332.2285,1051.1213 L 1332.2285,1049.0796 L 1333.5066,1047.8015 C 1331.2449,1043.841 1329.5938,1042.4759 1327.8912,1040.8921 L 1313.5133,1041.3833 L 1313.5133,1031.8389 L 1315.7818,1031.8389 L 1315.7818,1021.2315 C 1322.2329,1020.8187 1328.4684,1020.6215 1334.6319,1020.4963 L 1333.8304,1009.8053 L 1339.0341,1009.0249 L 1339.0341,993.90819 L 1337.3495,995.02441 L 1335.2133,993.88119 L 1334.4971,994.59742 L 1333.7906,982.65664 L 1336.482,981.98244 L 1335.5295,960.38067 L 1333.7714,960.38067 L 1332.331,962.35054 L 1330.1227,960.35203 L 1328.6692,961.72364 L 1330.6033,964.2405 L 1326.5572,964.12577 L 1326.5572,949.60523 C 1333.5518,949.63098 1340.5464,949.41944 1347.541,948.86705 L 1347.541,935.54123 L 1373.9125,934.57632 L 1374.4796,938.51628 L 1377.2845,939.91107 C 1378.4684,938.55836 1380.6891,937.60439 1383.7529,936.97471 L 1385.3122,937.57303 L 1388.0907,936.03435 L 1392.7136,935.99414 C 1393.4467,935.10658 1394.3946,934.35349 1395.1256,933.52118 L 1395.234,931.82926 C 1393.8577,931.76915 1393.0729,931.1174 1392.4125,930.34146 L 1392.8934,925.87316 C 1395.0363,923.98338 1395.4499,921.56145 1395.747,919.10369 L 1378.4796,919.26384 L 1376.9698,916.14464 C 1375.7932,916.3648 1374.7925,915.88086 1374.0493,914.3668 L 1369.8381,914.96416 L 1367.155,911.33504 L 1367.1991,901.68285 L 1368.8083,893.99786 L 1373.7374,890.92193 L 1371.0769,887.80782 L 1364.5765,887.7882 L 1363.3325,866.80444 L 1364.5549,866.80444 L 1364.5549,863.40167 C 1383.1595,862.37743 1401.7563,861.35059 1420.7836,860.46729 L 1422.762,892.06963 L 1435.9887,960.09711 L 1439.6139,1069.2604 L 1438.9167,1069.9575 L 1435.2006,1066.4844 L 1432.0432,1066.8521 L 1427.1392,1064.0989 L 1420.8417,1063.4328 L 1417.3858,1060.0916 L 1415.0546,1056.9305 L 1411.0994,1056.2254 L 1410.1669,1054.8742 L 1406.6309,1052.1671 L 1401.0863,1050.8005 C 1400.0337,1051.7783 1398.9186,1052.4051 1399.1497,1054.524 L 1398.0155,1056.0682 L 1395.1798,1055.526 L 1395.1798,1056.8641 L 1385.6426,1056.1499 L 1384.9499,1053.3898 L 1381.7076,1053.3898 L 1380.2956,1055.0912 L 1378.3049,1055.0912 L 1377.0533,1056.5993 L 1373.6289,1056.0967 L 1374.1177,1059.5073 L 1369.9426,1059.9382 L 1365.7408,1057.6604 C 1363.255,1059.6552 1360.4476,1060.8866 1356.81,1060.146 L 1356.694,1061.2498 L 1354.4614,1060.5209 L 1353.3748,1065.3353 L 1350.7375,1066.4014 C 1349.1994,1065.5759 1347.6613,1065.5574 1346.1232,1065.583 L 1345.7741,1069.1849 L 1344.1382,1070.5425 z "},"ok4":{"name":"OK-4","path":"M 1293.0612,960.30842 L 1291.8029,960.75146 C 1291.1115,960.99505 1289.5237,961.2042 1288.2761,961.21226 L 1286.0075,961.23001 L 1286.2014,967.48498 L 1273.2472,967.75199 L 1273.2472,961.93892 L 1271.4749,962.29337 C 1270.5001,962.48835 1268.9688,962.64783 1268.0721,962.64783 L 1266.4416,962.64783 L 1266.4416,970.58763 L 1264.7934,970.58763 L 1263.6414,968.60268 L 1263.606,970.0205 L 1262.7907,970.0205 C 1262.3451,970.0205 1261.5796,969.62453 1261.0893,969.13436 L 1260.2032,968.24822 L 1260.2032,969.13436 C 1260.2032,969.62453 1260.0677,970.0205 1259.9019,970.0205 C 1259.7359,970.0205 1258.6823,969.63763 1257.5625,969.16981 C 1256.4427,968.70193 1254.9301,968.31912 1254.1952,968.31912 L 1252.8483,968.31912 L 1253.5926,1001.1948 L 1216.5343,1001.2126 L 1216.5343,1017.9429 L 1207.5666,1017.5707 L 1206.9994,1015.3908 L 1202.8523,1015.3908 L 1203.5967,1016.5959 L 1201.6295,1018.7758 L 1198.9533,1018.1024 L 1198.9533,1021.0621 L 1197.9077,1021.0621 L 1195.5511,1028.2 L 1196.3481,1029.2855 C 1196.8591,1030.0653 1197.1183,1030.7033 1196.9329,1030.7033 L 1198.4216,1032.5287 L 1198.014,1033.7338 C 1197.7907,1034.4028 1197.6485,1035.3395 1197.695,1035.8074 C 1197.7415,1036.2753 1197.8914,1037.2961 1198.0317,1038.0759 C 1198.1721,1038.8557 1198.3069,1039.8447 1198.333,1040.2736 L 1198.3862,1041.0534 L 1206.111,1041.5691 L 1208.0451,1040.2736 L 1209.3034,1040.6635 C 1210.0024,1040.8753 1211.0898,1041.4649 1211.7137,1041.975 C 1212.3375,1042.485 1213.4168,1043.2205 1214.1063,1043.6055 L 1215.3469,1044.2966 L 1217.0128,1043.6586 L 1220.0966,1045.679 L 1223.5703,1045.4132 L 1225.4134,1043.7472 L 1228.9225,1043.7472 L 1234.4875,1050.092 L 1235.3027,1049.2944 C 1235.7459,1048.856 1236.5468,1048.3314 1237.0927,1048.1247 L 1238.0852,1047.7526 L 1238.0852,1045.6258 L 1240.2119,1043.694 L 1241.7184,1044.0662 C 1242.5377,1044.2719 1243.3368,1044.6749 1243.5083,1044.9524 L 1244.6583,1045.6979 L 1250.4658,1046.5646 L 1252.9412,1043.6641 L 1253.9293,1043.7472 L 1255.1699,1046.0512 L 1253.4863,1049.4185 L 1255.0305,1053.3137 L 1262.4717,1053.5151 L 1261.3198,1060.7611 L 1262.135,1060.7611 C 1262.5835,1060.7611 1263.6941,1061.1888 1264.6162,1061.7181 L 1266.2998,1062.6928 L 1269.3304,1060.6902 L 1269.7026,1059.7332 C 1269.9023,1059.2055 1270.3302,1058.503 1270.6596,1058.1736 C 1270.989,1057.8442 1271.6822,1057.4129 1272.2015,1057.2165 L 1273.1586,1056.8621 L 1274.6827,1053.672 L 1276.9335,1053.3707 L 1280.6198,1055.6392 L 1280.6198,1059.0597 L 1281.0097,1059.0597 C 1281.2215,1059.0597 1282.2223,1058.7552 1283.2428,1058.3862 L 1285.1037,1057.7128 L 1287.9925,1059.042 L 1287.9925,1063.5967 L 1291.8561,1063.5967 L 1293.0967,1060.0522 L 1296.9602,1060.6725 L 1297.6337,1057.9963 L 1300.044,1057.2342 L 1302.0644,1059.3433 L 1302.8087,1062.9587 L 1300.5225,1064.1639 L 1301.4087,1066.2906 C 1301.8923,1067.4583 1302.5509,1068.7406 1302.8796,1069.1439 L 1303.4822,1069.8883 L 1305.2899,1069.5516 L 1305.6444,1064.1107 L 1307.2749,1063.4726 L 1307.2749,1061.8954 L 1308.9586,1061.8954 L 1310.7485,1059.1483 L 1310.0042,1055.2138 L 1311.4574,1054.3277 L 1311.8828,1055.6037 L 1314.7716,1054.2923 L 1316.3489,1056.4367 L 1316.3489,1057.5001 C 1316.3489,1058.0848 1316.6125,1059.062 1316.9338,1059.6623 L 1317.5186,1060.7433 L 1319.5745,1059.4673 L 1322.5873,1060.2117 L 1322.5873,1062.4625 L 1323.1899,1062.4625 C 1323.5224,1062.4625 1324.2588,1062.2137 1324.8204,1061.913 L 1325.8306,1061.3637 L 1326.575,1056.7912 L 1328.7549,1056.7912 L 1329.1093,1057.3583 C 1329.3021,1057.6702 1329.8427,1057.9254 1330.3145,1057.9254 L 1331.6815,1058.9226 L 1331.5545,1054.3173 L 1329.4588,1051.411 L 1329.9246,1050.5528 L 1331.7855,1050.5528 L 1331.6876,1048.9284 L 1332.9198,1047.8944 L 1331.5196,1045.679 C 1330.7468,1044.4624 1329.6034,1043.0059 1328.9853,1042.4534 L 1327.851,1041.461 L 1312.9462,1041.975 L 1312.9462,1031.2704 L 1315.2147,1031.2704 L 1315.2147,1020.6722 C 1321.7378,1020.2579 1326.8068,1019.9682 1334.0363,1019.9278 L 1333.2388,1009.2942 L 1338.467,1008.5144 L 1338.467,994.90327 L 1337.3504,995.59443 L 1335.0465,994.35384 L 1333.0792,997.80981 L 1331.6437,997.80981 L 1330.6646,994.77255 L 1326.9434,996.06016 L 1324.5712,993.76839 L 1322.8521,994.38265 L 1323.9875,995.52354 C 1324.4689,996.0554 1324.8559,996.63012 1324.8559,996.81733 C 1324.8559,997.00443 1324.4598,997.5677 1323.9697,998.05793 C 1323.4796,998.5481 1322.8305,998.94407 1322.5342,998.94407 L 1322.0025,998.94407 L 1320.7265,996.16156 L 1318.3339,995.82486 L 1318.6529,993.92849 L 1317.5186,993.21958 L 1314.4703,995.22228 L 1312.8044,992.70565 L 1310.6776,992.70565 L 1310.6776,994.38928 L 1307.5335,996.12555 L 1301.2137,994.61795 C 1300.8183,984.74345 1300.8383,976.94628 1299.7782,967.238 L 1294.6269,967.15055 L 1293.0612,960.30842 z "},"ca53":{"name":"CA-53","path":"M 269.37254,1064.7373 L 268.79611,1065.583 L 269.46464,1059.9118 L 267.44441,1055.9419 L 264.46523,1055.9757 L 264.60877,1045.5453 L 265.65501,1045.7335 L 266.934,1041.3592 L 268.46524,1043.3667 C 270.69683,1045.5582 269.78506,1045.9256 269.78506,1046.0826 L 266.06852,1046.3007 L 266.68352,1049.556 L 276.51847,1052.5195 L 276.93514,1053.0964 C 277.16432,1053.4137 277.35572,1053.812 277.36049,1053.9814 C 277.36525,1054.1509 276.53974,1054.5337 275.526,1054.8321 L 273.68283,1055.3747 L 273.33552,1057.8112 L 271.27866,1058.3491 L 270.61381,1061.1203 C 270.24818,1062.6445 269.68962,1064.2721 269.37254,1064.7373 z "},"az2":{"name":"AZ-2","path":"M 468.20797,817.16157 L 461.18975,866.14731 C 460.17306,867.43923 459.11474,868.69632 457.99966,869.90453 C 457.37581,870.56598 456.85964,871.36126 456.84768,871.65912 L 454.66777,876.44427 L 448.89015,876.44427 L 446.30263,873.21872 L 445.80639,869.70961 L 443.44926,867.67147 L 438.27421,867.19298 L 436.67916,865.66882 C 435.00092,865.68572 433.32403,865.62986 431.64589,865.65107 C 431.31522,865.65941 430.49641,866.57061 429.82045,866.62585 L 425.51381,867.51199 L 425.95688,872.08446 L 424.75174,873.51998 L 425.37203,875.98347 C 425.71543,877.33296 426.28785,878.98472 426.63035,879.66981 L 427.25065,880.9281 L 426.27589,882.98394 C 425.73775,884.11803 425.17041,885.98672 425.01758,887.13107 C 424.86479,888.27542 424.71779,890.4807 424.69857,892.04031 L 424.66312,894.87595 L 425.95688,898.06605 L 424.59223,900.54724 L 424.91124,902.60308 L 423.74154,904.00315 L 423.4757,907.91991 L 425.54926,911.09226 L 425.70876,926.49337 L 424.50362,928.90367 L 421.33124,929.18723 L 422.2351,930.07337 C 422.72527,930.56354 423.12124,931.27438 423.12124,931.65067 C 423.12124,932.02696 422.64107,932.74648 422.05787,933.24572 L 420.99451,934.14961 L 419.4349,943.70216 L 421.98698,946.28968 L 421.98698,949.44433 L 423.2453,951.09258 C 423.94049,951.99244 424.82033,953.04163 425.1948,953.43199 L 425.86827,954.1409 L 426.57718,957.40189 C 426.95943,959.19521 427.31112,961.04569 427.37471,961.51357 C 427.43828,961.98145 427.80549,963.12977 428.18995,964.06565 L 428.89886,965.76704 L 428.27857,971.15476 L 429.92678,971.15476 L 431.06104,972.28902 C 431.68488,972.91286 432.1953,973.56574 432.1953,973.74228 C 432.1953,973.91855 433.53514,975.41412 435.17273,977.05641 L 438.15015,980.03384 L 439.14263,981.87701 L 439.23124,983.04671 L 442.7049,984.44684 L 444.38857,986.71535 L 452.64738,987.88506 L 453.62213,989.46235 L 459.0453,989.92315 L 460.37451,991.74862 L 464.50391,991.07515 L 465.15966,992.13852 L 467.25094,992.13852 C 468.31222,993.43464 469.52993,994.645 470.19292,996.19701 C 470.19292,996.50496 469.5549,998.14311 468.7751,999.8479 L 467.35728,1002.9494 L 467.35728,1004.1014 C 467.35728,1004.7314 466.97338,1005.9809 466.50659,1006.8839 L 465.65589,1008.5144 L 466.68381,1011.2259 C 469.82121,1012.5588 473.27306,1013.4606 476.43134,1014.4869 L 473.59569,1036.2505 L 504.11431,1046.5829 L 504.22064,1052.7858 L 506.56005,1054.948 L 511.30975,1053.8847 L 517.93807,1054.6467 L 517.58361,1056.4367 C 517.2766,1058.0848 516.93019,1057.1986 516.75064,1058.8647 L 516.57342,1064.6424 L 521.14589,1065.2981 L 521.53579,1063.455 C 521.75255,1062.4412 522.16068,1061.3211 522.43965,1060.9738 L 522.95361,1060.3534 L 523.02451,1052.5377 L 524.8854,1047.2031 L 530.82252,1046.4588 L 532.5948,1043.7472 L 534.7747,1043.7472 L 535.04054,1042.7548 C 535.18754,1042.2089 535.23348,1040.7412 535.14688,1039.4938 L 534.98738,1037.2253 L 533.02015,1032.6882 L 533.00243,1029.2855 L 531.26559,1027.3005 L 531.92134,1025.0851 C 532.63835,1023.4139 532.69572,1022.4513 531.6555,1021.0621 L 529.44015,1022.3027 L 506.77272,1012.0412 L 476.90985,1007.77 L 489.75886,915.9306 C 498.09551,910.40841 506.51292,905.00787 514.83658,899.46612 L 517.2646,879.84704 L 522.93589,879.84704 L 522.93589,882.59404 L 530.30856,883.39159 L 530.30856,887.21971 L 533.64045,887.21971 L 534.34936,889.48823 L 539.89658,889.48823 L 540.65866,882.73582 L 542.28916,881.61932 C 547.48942,884.12546 550.97953,889.75183 557.08767,890.12625 C 562.15249,893.97478 569.23095,892.30674 570.76968,885.89047 C 571.15056,884.47367 572.3391,882.5764 573.94203,881.83199 C 574.31974,881.65652 574.72518,881.54842 575.11173,881.47753 L 575.3776,882.29278 L 577.38025,881.54842 L 581.66916,885.02209 L 581.52738,886.36902 L 582.28948,887.27285 C 582.70933,887.76529 583.05153,888.46711 583.05153,888.83246 L 583.05153,889.48823 L 580.28678,889.48823 L 579.57787,891.75674 L 576.52955,892.04031 L 576.05107,896.32922 C 576.00882,896.78644 576.22501,897.13942 576.44097,897.49892 L 577.11443,898.4205 L 585.46183,902.62077 L 588.33292,901.89417 L 589.21906,903.34743 L 590.37107,902.30176 C 591.00602,901.72715 591.68692,900.75758 591.87747,900.15733 L 592.21424,899.05852 L 594.11054,899.43067 L 594.23463,901.92961 L 596.16638,904.87159 L 597.51332,904.37535 L 597.28295,903.59555 L 596.94619,900.54724 L 601.48322,899.98011 L 601.85542,897.41028 L 605.16955,895.6912 L 605.16955,891.47318 L 610.09648,891.47318 L 606.80005,926.2807 L 614.81074,927.0605 L 614.79305,927.41496 C 614.78312,927.60858 614.4002,928.26265 613.94235,928.86823 C 613.48434,929.47375 613.10935,930.14744 613.10935,930.35694 L 613.10935,930.72909 L 619.61364,931.4912 L 620.90737,929.73661 L 642.74183,932.02288 L 641.4481,930.46327 L 642.15701,928.62011 L 643.22037,927.87575 L 649.3879,929.18723 L 648.07641,926.31615 L 649.15747,925.25278 L 657.34539,924.93377 L 658.07206,915.00902 L 655.73265,915.00902 L 653.37549,918.00414 L 653.37549,921.72592 L 645.43569,923.05516 L 645.43569,920.57397 L 647.40295,917.22434 L 654.49206,913.89245 C 655.11459,912.3438 655.83417,910.82548 656.21114,909.19595 L 653.03879,909.26684 L 651.51463,908.3275 L 652.15265,905.08427 C 649.93002,905.05988 647.74385,904.68886 645.57747,904.21582 L 642.60005,903.52466 L 642.60005,902.08909 L 643.45074,901.77008 C 643.91862,901.59053 644.30143,901.17017 644.30143,900.84849 L 644.30143,900.26367 L 639.23272,900.26367 C 638.57922,898.96171 637.91721,897.66424 637.19463,896.40011 L 634.09312,898.11919 L 634.09312,900.29912 L 632.23225,901.00803 L 631.59423,900.15733 C 631.24823,899.68418 630.3985,899.12136 629.69787,898.89899 L 628.42183,898.49139 C 628.30455,897.14237 628.82421,895.49055 629.53839,894.13159 L 633.4374,891.7213 L 636.37938,892.4479 L 638.06302,891.04783 L 638.06302,888.21219 C 638.41492,887.21506 642.21298,881.20837 644.86856,878.11021 L 644.86856,875.87714 L 644.05331,875.87714 C 643.60386,875.87714 643.0829,876.11476 642.90136,876.40882 L 642.58235,876.9405 L 637.21232,877.72031 L 635.7945,878.85456 L 634.25265,877.57852 L 630.6549,878.83681 L 625.4976,878.05701 L 623.31767,875.87714 L 621.22638,875.87714 L 619.45411,877.86209 L 618.21351,882.55859 L 616.3881,884.06506 L 614.3145,881.51298 C 613.17214,881.78753 612.0224,882.01823 611.08896,882.75357 C 610.98903,882.9152 610.62856,886.04575 610.18513,890.4984 L 605.15186,890.4984 L 603.50361,891.86308 L 598.98433,891.10097 L 589.85708,897.05582 L 589.85708,899.00533 L 585.40869,899.18255 L 583.56552,897.44572 L 578.42592,898.08374 L 577.09668,895.88612 L 579.43609,895.72664 L 581.27926,891.84533 L 584.43391,890.33892 C 585.12893,889.88147 585.34784,888.83625 585.51503,887.73364 L 585.23146,883.49793 L 582.02361,881.67246 L 577.38025,881.30031 L 577.38025,879.27991 L 572.87866,879.2976 L 571.97483,877.93298 L 571.37226,876.19615 C 571.0964,874.62072 570.76616,873.37774 570.73424,871.78315 L 569.98988,870.08176 L 567.56183,871.10968 L 567.18968,872.03127 L 569.44044,875.20367 L 569.44044,877.98612 L 571.76216,880.94585 L 564.40718,889.11602 C 559.21633,890.18007 555.0891,885.79633 550.28213,884.77397 C 548.40995,883.91641 546.51601,880.68497 544.48678,879.91793 L 544.48678,879.51028 L 542.07649,876.72783 L 540.3751,879.27991 L 538.81549,879.27991 L 538.81549,877.61397 L 535.41272,875.84169 L 535.41272,874.5479 L 539.47124,870.82612 L 539.09906,868.2209 L 532.00995,865.15483 L 532.00995,863.0104 C 532.00825,861.82443 531.73586,859.8866 531.40738,858.70374 L 530.8048,856.54156 L 533.07332,854.60981 L 533.2151,853.47555 L 532.50619,846.63456 L 535.5545,839.5809 L 536.19252,839.51001 L 540.80045,839.29734 L 541.1549,835.52236 L 538.7446,834.90209 L 539.15223,833.9805 C 539.3708,833.47565 539.84207,831.99459 540.19787,830.68407 C 540.55369,829.37349 541.03829,828.08894 541.27896,827.84843 L 541.72203,827.42308 L 468.20797,817.16157 z "},"az5":{"name":"AZ-5","path":"M 552.85193,1017.1631 L 553.41906,1023.6683 L 551.77199,1024.3386 L 550.57679,1027.1375 L 551.39866,1028.5233 L 548.62295,1030.8162 L 547.06883,1030.4208 L 547.56994,1043.0277 L 545.80273,1043.8792 C 546.24967,1044.9345 547.01318,1046.2178 547.37891,1047.2795 L 543.9551,1050.8363 L 543.8534,1054.9044 L 541.73542,1059.0586 L 535.78169,1061.4276 L 546.18817,1062.4625 L 546.18817,1059.1306 L 548.40351,1058.4394 L 548.74025,1052.5554 L 552.00124,1050.9958 L 560.38411,1050.9958 L 561.78421,1052.1655 L 589.32539,1055.5152 L 585.26691,1042.613 L 584.23899,1043.1624 C 583.67481,1043.4643 582.79338,1044.3511 582.27173,1045.1473 L 581.3147,1046.6006 L 575.57252,1039.2811 L 575.07629,1037.1898 L 573.92433,1036.1441 L 574.06612,1034.4251 C 574.14466,1033.4749 574.43345,1032.3692 574.72183,1031.9793 L 575.25351,1031.2704 L 573.99523,1031.2704 L 573.69391,1025.5991 L 571.74441,1025.5991 L 572.45332,1021.9128 L 573.64077,1021.133 L 571.87496,1019.9389 L 558.23965,1018.7936 L 552.85193,1017.1631 z "},"az4":{"name":"AZ-4","path":"M 535.74946,1060.6902 L 541.36757,1058.7761 L 542.98035,1055.3734 L 543.06896,1049.7907 L 542.28916,1049.5426 C 541.8603,1049.3993 541.03087,1048.7983 540.44599,1048.2134 C 539.86117,1047.6285 539.04289,1047.15 538.62054,1047.15 L 537.84074,1047.15 L 534.72153,1044.2612 L 532.9847,1044.5979 L 530.8048,1047.5222 L 530.82252,1055.7633 L 535.74946,1060.6902 z "},"az3":{"name":"AZ-3","path":"M 543.35252,1050.6414 L 543.34538,1049.1363 C 541.66141,1048.101 539.95777,1047.0984 538.1747,1046.242 C 537.35434,1045.868 536.49639,1045.2598 536.26807,1044.8904 L 535.85304,1044.2188 C 535.77797,1041.493 535.72117,1038.767 535.1688,1036.0924 L 533.45766,1031.5586 L 533.80446,1028.9119 L 532.03893,1026.961 L 533.22599,1022.6617 L 532.81437,1021.7208 C 532.58797,1021.2033 532.45146,1020.3721 532.51095,1019.8738 L 532.6191,1018.9677 L 538.06229,1013.3204 C 542.74473,1014.6218 547.49761,1015.6976 552.12283,1017.1935 L 552.83645,1023.4279 L 551.39617,1023.9806 L 550.04884,1027.2334 L 550.69843,1028.2845 L 548.53795,1030.2398 L 546.20212,1029.4984 L 546.7553,1034.7691 L 546.7553,1042.558 L 544.89597,1043.5985 L 546.72632,1047.2676 L 543.35252,1050.6414 z "},"ok3":{"name":"OK-3","path":"M 1353.0174,864.16236 C 1226.6314,868.53906 1124.3637,869.22415 1009.7095,865.56248 L 1008.9652,895.62031 C 1060.6952,896.90661 1103.3005,897.75509 1156.9858,898.17238 L 1156.9858,1019.3607 L 1157.5175,1019.3607 C 1157.8109,1019.3607 1158.2108,1019.1055 1158.4036,1018.7936 L 1158.758,1018.2264 L 1160.6721,1018.2619 L 1172.5464,1030.7033 L 1177.4024,1030.7033 L 1177.4024,1028.4348 L 1181.904,1028.4348 L 1186.4588,1030.7033 L 1186.9727,1030.7033 L 1187.3272,1026.5738 L 1189.3121,1026.5561 L 1191.6693,1028.4348 L 1193.796,1028.4348 L 1196.7911,1033.5389 L 1197.8899,1032.8655 L 1196.3481,1030.7033 L 1196.6848,1030.3665 L 1195.072,1028.3107 L 1197.3937,1020.495 L 1198.3153,1020.495 L 1198.5279,1017.4466 L 1201.6117,1018.1201 C 1201.8188,1017.9147 1202.6955,1017.2341 1203.1004,1016.6136 L 1202.0903,1014.9655 L 1207.3716,1014.7705 L 1208.0982,1017.0922 L 1215.9672,1017.0922 L 1215.9672,1000.6455 L 1253.0432,1000.6277 L 1252.2323,967.69289 L 1254.5142,967.66334 L 1259.6361,969.43562 L 1259.6361,967.75199 L 1260.1677,967.75199 C 1260.4612,967.75199 1260.8785,968.03096 1261.0893,968.37226 L 1263.228,969.4988 L 1263.2953,967.81658 L 1264.563,969.2407 C 1264.7277,969.66996 1265.082,970.0205 1265.3605,970.0205 L 1265.8745,970.0205 L 1265.8745,962.0807 C 1269.4437,962.20076 1270.8959,961.8606 1273.4067,961.33634 L 1272.7509,945.79344 C 1282.1164,945.32114 1290.5154,945.26301 1299.7427,945.06684 C 1300.3531,950.45207 1300.3652,955.33107 1300.4693,960.94644 L 1325.9901,960.20209 L 1325.9901,949.03674 C 1333.9972,949.11075 1339.9793,948.72459 1346.9739,948.29238 L 1346.9739,933.74054 L 1350.359,930.53417 L 1351.0679,926.98961 L 1354.3466,926.26295 L 1354.3466,921.81456 L 1340.7355,921.81456 L 1340.7355,916.30275 C 1345.7426,915.7384 1350.4736,915.63428 1355.4808,915.57615 C 1354.2202,898.46962 1354.4972,881.25057 1353.0174,864.16236 z "},"ga4":{"name":"GA-4","path":"M 1985.485,1015.9593 C 1985.2815,1015.9593 1984.971,1015.5841 1984.7951,1015.1255 L 1984.4751,1014.2917 L 1981.5909,1013.5678 L 1981.5909,1011.128 L 1980.3149,1010.2983 C 1979.613,1009.842 1978.0701,1009.0223 1976.8861,1008.4766 L 1974.7333,1007.4845 L 1969.3976,1006.8213 L 1964.2935,1007.8208 L 1964.5283,999.71451 L 1965.6791,996.6878 L 1963.9281,988.45355 L 1970.1879,986.37042 L 1974.4414,990.62383 L 1971.3225,992.72091 L 1979.2664,1001.5091 L 1983.3478,1000.01 L 1987.208,1001.284 L 1987.9409,1003.5934 L 1987.1229,1013.9292 L 1986.489,1014.9442 C 1986.1403,1015.5025 1985.6886,1015.9593 1985.485,1015.9593 z "},"ar2":{"name":"AR-2","path":"M 1535.2606,928.62011 C 1531.366,928.69587 1528.8425,928.62629 1525.1764,929.31127 L 1525.7612,933.72426 L 1516.5454,934.1812 L 1517.2897,945.06684 L 1515.4111,945.06684 L 1517.1283,968.41632 L 1511.0859,968.57251 L 1507.9853,969.61285 L 1508.322,971.86367 L 1506.8826,972.84032 L 1504.5648,971.52691 L 1505.2028,968.99258 L 1502.9697,969.5774 L 1502.2786,967.96466 C 1501.8982,967.07285 1501.0718,965.75995 1500.4531,965.05813 L 1499.3366,963.78209 L 1496.8376,963.78209 L 1494.9768,961.23001 L 1495.278,967.46842 L 1485.9736,967.80513 L 1482.8012,972.8207 L 1476.5628,972.89159 L 1474.4361,974.50433 L 1475.8184,997.68572 L 1491.0246,996.56921 L 1491.4815,994.68725 L 1513.5995,992.82639 L 1513.1426,1001.9215 L 1518.2467,1001.3544 L 1518.2467,1004.0482 L 1522.0926,1004.0482 L 1523.599,1009.1524 L 1526.1866,1009.1524 L 1526.1866,1010.8538 L 1529.0222,1010.8538 L 1529.0222,1014.2565 L 1531.8114,1014.1804 L 1533.4352,1011.4209 L 1536.2708,1011.4209 C 1537.8245,1011.4209 1539.8863,1011.2614 1540.861,1011.0664 L 1542.6333,1010.712 L 1542.6333,1008.1954 L 1561.4726,1006.9902 L 1560.6396,999.51119 L 1556.4748,999.51119 L 1557.5027,990.25991 L 1556.7052,975.30189 L 1553.9759,975.83357 L 1553.9759,971.88136 L 1558.7965,970.74711 L 1562.7487,972.41305 L 1567.2857,972.69661 C 1568.2315,972.55313 1570.3799,971.89838 1572.0708,971.24334 L 1575.1546,970.05595 L 1576.6079,970.4104 C 1577.4093,970.61145 1578.4035,971.10712 1578.8055,971.50921 L 1579.5321,972.23582 L 1580.9677,971.68644 L 1580.5246,967.89377 L 1587.1529,966.90129 L 1587.2592,963.78209 L 1586.3022,963.78209 L 1586.3022,962.0807 L 1586.8162,962.0807 C 1588.1628,961.09356 1588.8263,959.44769 1589.705,958.0576 L 1588.7834,956.67523 C 1588.2818,955.90966 1587.6249,955.27516 1587.3124,955.27516 L 1586.7453,955.27516 L 1587.277,952.43951 L 1586.444,952.43951 L 1586.444,949.56842 L 1589.3683,947.28216 L 1589.5986,945.72255 L 1584.4945,946.04156 L 1578.3978,945.77575 L 1578.3624,941.09694 C 1573.8608,940.87355 1571.3793,941.10924 1568.1009,941.82354 L 1568.8453,946.30743 L 1565.9565,947.72525 L 1566.559,952.79397 L 1545.7525,954.05226 L 1544.2815,932.46592 L 1535.6151,932.82037 L 1535.2606,928.62011 z "},"sc3":{"name":"SC-3","path":"M 2094.4771,1013.625 C 2094.306,1013.5888 2093.6555,1013.4513 2093.0317,1013.3194 C 2092.4078,1013.1874 2091.3,1012.9511 2090.5698,1012.7943 L 2089.2422,1012.509 L 2089.8807,1010.8453 L 2088.7791,1007.948 L 2086.7933,1008.2108 L 2083.8809,1006.7974 L 2084.2226,1001.1954 L 2081.9727,998.94543 L 2080.43,998.94543 L 2078.4223,997.05195 C 2077.3181,996.01059 2075.4717,994.71107 2074.3193,994.16425 L 2072.2241,993.16996 L 2070.063,993.7351 L 2067.9065,992.70701 L 2066.5745,990.61652 C 2065.8418,989.46672 2064.7938,987.68027 2064.2454,986.64662 C 2063.6971,985.61291 2063.0591,984.76658 2062.8276,984.7659 C 2062.5962,984.76517 2061.5319,984.01684 2060.4627,983.10303 L 2058.5186,981.44145 L 2055.9256,980.5113 C 2054.4995,979.99975 2052.3636,979.1726 2051.1792,978.67324 L 2049.0257,977.76527 L 2049.0995,976.40456 L 2045.3929,975.88183 L 2044.2586,974.00577 C 2043.6348,972.97394 2042.4225,971.38065 2041.5648,970.46502 C 2040.707,969.54944 2040.0052,968.68015 2040.0052,968.53321 C 2040.0052,968.38626 2039.3033,967.64837 2038.4455,966.89335 C 2037.5878,966.13839 2036.5921,965.51262 2036.2331,965.50275 L 2035.5802,965.48483 L 2034.4827,963.62482 C 2033.8791,962.60178 2033.1976,961.01682 2032.9681,960.10267 L 2032.551,958.44058 L 2031.4795,957.28393 C 2030.8902,956.64772 2029.667,955.35523 2028.7613,954.41165 C 2027.8555,953.46811 2026.54,951.57005 2025.8378,950.19374 C 2025.1357,948.81743 2024.2056,947.33575 2023.7709,946.90105 L 2022.9805,946.1107 L 2020.4414,946.45506 C 2019.0449,946.64442 2017.5114,946.94937 2017.0338,947.13266 L 2016.1654,947.46591 L 2014.4742,946.76539 C 2013.544,946.38008 2012.7774,945.90443 2012.7705,945.70832 C 2012.7636,945.5122 2011.6158,944.58614 2010.2197,943.65038 C 2008.8236,942.71462 2007.6807,941.75759 2007.6801,941.52365 L 2007.6788,941.0983 L 2003.9925,941.01538 L 2002.2911,939.93103 C 2001.3553,939.33459 2000.031,938.59987 1999.3482,938.29821 L 1998.1066,937.7498 L 1996.9565,935.60078 L 1998.1422,934.41508 L 1998.3946,930.76913 L 2000.2605,929.72487 L 2000.9995,925.78582 L 2002.5347,925.78582 L 2003.2118,924.50978 C 2003.5843,923.80796 2004.3289,922.92126 2004.8666,922.5393 L 2005.8443,921.84485 L 2006.5824,916.99533 L 2020.5746,909.57417 L 2022.82,910.82928 C 2024.0839,910.2174 2025.2456,909.41582 2025.5163,909.15863 L 2026.6438,909.11927 L 2030.5732,907.86036 L 2031.5057,911.47433 L 2034.0645,910.84584 L 2034.1574,912.93911 L 2040.7248,925.47521 L 2041.3778,930.60852 L 2044.8949,938.01363 L 2051.2458,941.33473 L 2054.5847,937.25305 L 2053.8833,933.74627 C 2054.7569,930.02976 2055.2948,926.24197 2056.1438,922.5224 L 2059.8609,923.8332 L 2061.1749,926.15054 L 2067.6697,927.89526 L 2070.2743,930.24346 L 2082.7966,931.34851 L 2084.2696,932.00745 C 2082.7721,934.98108 2081.2315,938.27831 2080.0214,939.09639 L 2079.1117,942.73146 L 2074.0329,948.18497 C 2074.2883,949.58958 2074.13,951.48294 2072.7483,954.82225 L 2076.216,957.54503 L 2077.1755,955.84364 L 2081.5313,955.67526 L 2083.6653,954.11492 C 2085.9258,954.61644 2090.394,956.73704 2094.8443,958.84444 L 2097.8523,958.26942 L 2095.2561,970.93035 L 2097.0123,972.29038 L 2098.4056,974.52135 L 2096.6026,981.648 L 2094.0357,985.05764 C 2093.0134,988.14809 2092.8972,991.5406 2092.7481,994.92216 L 2094.1059,997.90214 L 2098.5673,1000.1782 L 2102.4389,999.45187 L 2104.6091,1000.1406 C 2101.2097,1004.6101 2098.2159,1009.4287 2094.4771,1013.625 z "},"ga5":{"name":"GA-5","path":"M 1952.9509,1008.5487 L 1949.206,1007.4048 L 1946.0223,1003.8416 L 1946.5863,1001.6851 L 1951.7784,998.96408 L 1952.1002,996.18572 L 1957.2082,992.00014 L 1957.9639,988.43199 C 1959.6774,987.91857 1961.5245,987.53746 1963.2439,987.04434 L 1965.0588,996.26064 L 1963.8841,999.22899 L 1963.7303,1007.8365 C 1960.6466,1008.3689 1959.0377,1008.6063 1952.9509,1008.5487 z "},"ok5":{"name":"OK-5","path":"M 1322.609,998.3783 L 1320.9103,995.54265 L 1318.6531,995.54265 L 1319.2362,994.02298 L 1317.5591,992.63113 L 1314.589,994.57723 L 1312.8818,992.13988 L 1310.2577,992.13988 L 1310.1624,994.2285 L 1307.464,995.55904 L 1301.7747,994.3696 C 1301.2923,985.11945 1301.3374,975.86924 1300.3275,966.61909 L 1294.8675,966.61909 L 1293.1975,959.57978 L 1290.9202,960.43359 L 1285.3892,960.57208 L 1285.4404,966.90265 L 1273.9415,967.2245 L 1273.663,946.22106 L 1299.1628,945.50302 L 1299.9022,961.66913 L 1325.9901,960.84237 L 1325.9901,964.82316 L 1331.0943,964.82316 C 1331.1467,964.04937 1330.6328,963.43659 1330.2375,962.81264 L 1329.3808,961.5894 L 1330.0875,960.94519 L 1331.0994,961.80473 C 1331.4849,962.26921 1332.1245,962.64919 1332.5209,962.64919 L 1333.2414,962.64919 L 1333.5679,961.7985 C 1333.7474,961.33062 1334.1246,960.9478 1334.406,960.9478 L 1334.9176,960.9478 L 1335.7788,981.648 L 1333.3476,982.01244 L 1334.0488,994.12483 L 1332.9513,997.13061 L 1332.0516,997.23548 L 1331.0943,994.4084 L 1327.1036,995.73417 L 1324.7317,993.3401 L 1322.2769,994.21864 L 1324.3279,996.79709 C 1323.8509,997.46562 1323.3154,997.99446 1322.609,998.3783 z "},"ar3":{"name":"AR-3","path":"M 1526.1334,884.9512 L 1423.873,891.86308 L 1437.1297,959.97166 L 1438.2639,987.95595 C 1442.5157,986.40179 1444.8921,987.05109 1447.9228,985.26209 L 1447.9228,979.23634 L 1452.0168,977.1805 L 1451.9813,974.13218 L 1457.5108,973.93721 L 1456.8374,968.31912 L 1462.5972,968.31912 L 1462.9517,962.93139 L 1467.7723,962.57694 L 1468.3394,956.56889 L 1470.8915,959.12097 C 1473.4788,958.17313 1474.0299,957.21547 1474.95,956.26763 L 1477.2895,957.73859 L 1481.4543,955.75364 L 1483.3152,956.46255 L 1484.9279,954.33582 L 1486.9129,954.35357 C 1486.6079,955.96569 1487.4811,957.47357 1488.6675,958.96149 L 1487.3382,960.53879 L 1492.1057,959.19186 L 1495.5794,960.98189 L 1496.9617,963.21496 L 1499.3188,963.21496 C 1501.2698,964.82175 1502.1973,966.89341 1503.0406,968.99258 L 1505.8763,968.26592 L 1505.1496,971.58011 L 1507.0105,972.28902 L 1507.9321,971.72189 L 1507.6308,969.47107 L 1511.1045,968.14189 L 1516.2618,968.03555 L 1514.7022,944.49971 L 1516.7403,944.49971 L 1515.9782,934.25595 L 1509.1196,934.57496 L 1507.365,909.33773 L 1513.3376,909.76308 L 1513.6566,911.83661 L 1534.1264,910.86189 L 1534.1264,907.06922 L 1532.9921,907.06922 L 1532.8326,906.07674 L 1534.1972,905.36783 L 1533.5592,904.33991 L 1531.5034,904.88929 L 1530.0147,903.09931 L 1531.2553,901.59285 L 1530.4755,900.22823 C 1529.642,899.70227 1528.1922,899.07764 1527.0372,898.73951 L 1527.5867,896.66592 L 1525.6194,895.10632 L 1526.9487,894.62783 L 1526.7537,893.42268 L 1524.2725,894.64552 L 1524.0953,893.59991 C 1524.4237,892.6747 1525.3715,891.91786 1526.7005,891.24275 L 1526.1334,884.9512 z "},"ca30":{"name":"CA-30","path":"M 216.69178,962.63138 C 216.53287,962.62157 215.9603,962.0047 215.41937,961.26057 L 214.43591,959.90763 L 212.86729,959.5677 C 212.00458,959.38071 209.61957,959.02762 207.5673,958.78296 L 203.83588,958.33822 L 200.56168,959.21386 L 199.38381,958.10728 C 198.73598,957.4987 197.38746,956.71544 196.38716,956.36671 L 194.56837,955.73266 L 194.56837,954.36934 L 203.45284,950.03772 C 205.49324,950.46182 207.52296,950.94343 209.57534,951.30662 L 210.50174,947.05315 C 213.50522,946.7908 213.35391,946.7059 214.62224,947.40965 L 214.20876,948.10103 L 211.33395,948.43309 L 215.6604,953.90412 L 214.97733,954.76463 C 218.38991,956.04498 220.93491,957.32527 224.64324,959.09851 C 223.87235,960.31994 221.83955,960.87096 220.49685,961.10654 L 220.14783,961.80819 L 218.45124,960.29447 L 217.71596,961.47183 C 217.31154,962.11938 216.85069,962.64119 216.69178,962.63138 z "},"ca29":{"name":"CA-29","path":"M 234.12329,962.48654 L 233.63775,961.67866 L 233.41669,957.26147 L 226.65125,957.40211 L 226.44001,951.84193 L 229.42496,951.50035 L 229.52041,949.49634 L 231.06685,949.62077 L 231.14464,952.45902 L 233.46422,955.33567 C 234.2007,954.56148 234.65045,953.92136 235.6172,953.51292 C 236.90037,954.12167 238.03899,955.3237 239.14667,956.22028 L 239.06888,957.36032 L 235.32139,959.31702 L 236.7505,961.039 L 239.66306,960.53278 L 240.4451,961.7436 L 234.12329,962.48654 z "},"ca28":{"name":"CA-28","path":"M 224.05907,958.58509 L 215.42932,954.57231 L 217.06983,952.94862 L 220.11996,954.33832 L 221.37405,953.08422 L 220.8204,952.05364 C 220.57154,951.48679 220.32252,950.40187 220.3494,949.62207 C 220.37629,948.84227 220.73476,947.51927 221.06353,946.66149 L 221.76248,945.0682 L 222.85738,944.7142 C 223.27248,946.70635 224.32813,948.09168 225.4175,949.54438 L 223.58279,953.75043 L 224.35734,955.55265 L 226.42872,955.62451 L 226.32758,956.49006 C 226.32758,956.84553 225.88097,957.47544 225.33511,957.88985 C 224.78924,958.30419 224.21503,958.61707 224.05907,958.58509 z "},"sc5":{"name":"SC-5","path":"M 2083.4967,953.55987 L 2081.5998,955.27652 L 2076.9899,955.27652 L 2076.3046,957.06218 L 2073.395,954.96936 C 2074.3232,952.76164 2074.9964,950.57944 2074.6,948.50421 L 2079.5982,943.13786 C 2080.7459,936.89576 2080.7992,940.92345 2084.5536,932.17498 L 2088.7365,934.40221 L 2089.9187,937.06255 L 2092.4064,933.19088 L 2095.6873,932.04715 L 2094.5528,923.41432 L 2092.1353,921.16202 L 2091.4597,917.78386 L 2089.9125,918.37754 L 2089.9125,916.71176 L 2091.0467,916.71176 C 2090.4825,913.29635 2089.4671,913.54021 2088.7525,909.3227 L 2082.2562,909.53532 L 2080.752,910.68398 L 2079.9877,909.48155 L 2074.3164,908.28429 L 2065.6375,894.70116 L 2105.1606,888.7771 L 2106.935,890.55154 L 2106.0022,892.85306 L 2107.6536,895.23993 L 2112.5417,890.44259 L 2121.6717,899.32746 C 2121.1723,901.68541 2121.8072,904.1379 2122.3972,906.58665 L 2178.2914,895.68541 L 2214.3633,919.78044 L 2213.4045,922.26424 L 2210.1654,920.71581 L 2207.444,923.42957 L 2198.9337,922.29237 L 2196.2019,923.23726 L 2190.7752,929.45401 L 2181.3761,929.95626 C 2180.7732,932.52433 2179.0347,933.53093 2176.2933,933.1585 C 2173.674,936.33005 2171.0109,939.46599 2168.429,942.66805 C 2166.8092,942.30804 2166.3659,941.1224 2164.0093,940.84768 L 2158.8307,947.33671 L 2156.9683,947.33671 C 2155.826,949.89736 2155.6496,952.45794 2155.6994,955.01859 L 2152.101,957.14929 L 2149.3306,955.36703 L 2147.3493,955.98622 C 2146.3086,955.04076 2145.4801,953.48898 2145.3686,949.88879 L 2143.0249,947.33671 C 2141.4539,947.15393 2138.5959,948.57997 2135.4354,950.38395 L 2127.2844,945.09049 L 2128.6069,939.79634 C 2124.5466,940.25742 2117.1779,944.3277 2111.4634,946.49311 L 2111.4634,948.59234 L 2110.2231,948.53319 C 2109.4877,945.80309 2107.8497,949.54426 2106.1324,946.20246 L 2103.7419,946.20246 L 2101.7401,950.73949 L 2100.2318,950.73949 L 2098.9732,954.34983 L 2102.0074,957.51684 L 2097.9104,956.99231 L 2097.2182,958.11216 L 2094.8467,958.40894 C 2091.274,956.58199 2087.7199,954.73638 2083.4967,953.55987 z "},"ca27":{"name":"CA-27","path":"M 224.59058,955.27652 L 224.02351,953.79875 L 225.79862,949.55033 C 224.61279,947.83579 223.67093,946.77185 222.92424,944.40676 L 221.50699,944.8684 L 220.75719,946.40685 C 220.34477,947.25301 219.98368,948.63782 219.95464,949.4842 C 219.92566,950.33059 220.10317,951.48067 220.34919,952.03997 L 220.79643,953.05694 L 220.09399,953.75939 L 217.1266,952.40736 L 215.83058,953.62901 L 212.11683,948.75522 L 214.35096,948.47097 L 215.02902,947.3738 C 214.38287,946.84904 213.85057,946.38933 212.74902,946.43379 L 212.27735,941.77715 L 217.6822,943.09992 L 218.72848,942.11873 L 223.82385,942.15123 L 225.24764,943.93394 L 226.65287,942.58911 L 227.71699,943.96224 L 226.23803,946.33046 L 229.16322,949.38371 L 229.16322,951.2313 L 226.04402,951.59018 L 226.41305,955.27652 L 224.59058,955.27652 z "},"sc4":{"name":"SC-4","path":"M 2064.7816,894.61008 C 2052.64,897.07737 2047.7707,896.28799 2039.5267,899.39523 L 2038.8532,897.80018 C 2037.672,898.92003 2037.625,901.96551 2035.6099,900.75991 L 2025.8269,905.93496 L 2022.6368,909.19595 L 2021.3254,909.47951 L 2022.8318,910.45424 C 2023.8011,910.0311 2024.6549,909.45734 2025.4725,908.7706 L 2026.4827,908.7706 C 2026.9271,908.7706 2029.2244,908.01348 2030.7007,907.44137 L 2031.6223,911.02137 L 2034.3339,910.3479 L 2034.458,912.70506 L 2041.0863,925.32367 L 2041.7774,930.60506 L 2045.2688,937.69417 L 2051.2414,940.97285 L 2054.1479,937.4106 L 2053.4922,933.74196 L 2055.743,921.9209 L 2060.0673,923.46275 L 2061.4143,925.90849 L 2067.7768,927.50354 L 2070.4529,929.78981 L 2082.8234,930.94176 L 2089.2745,933.99008 L 2089.9302,936.27634 L 2092.3051,932.59001 L 2095.0521,931.89879 L 2094.1659,923.63998 L 2091.8443,921.77912 L 2091.0467,918.3409 L 2089.5049,919.10295 L 2089.4517,916.03694 L 2090.6214,916.16097 C 2089.8264,914.32086 2088.6748,912.31164 2088.2288,910.06434 L 2082.4335,910.09978 L 2080.7853,911.32268 L 2079.7042,910.08209 L 2073.7493,908.73516 L 2064.7816,894.61008 z "},"nc2":{"name":"NC-2","path":"M 2252.3949,893.23456 L 2248.298,891.03172 L 2247.7894,889.62757 C 2244.322,886.28128 2241.3686,882.60788 2236.9791,879.8484 L 2233.9632,874.30715 L 2233.9632,870.3461 C 2235.2123,869.32357 2236.5975,868.77742 2238.0304,868.39847 L 2236.7988,870.91397 L 2240.2684,873.69335 L 2241.873,872.36173 L 2242.3907,868.49329 L 2243.9368,868.28833 L 2242.3914,866.30979 C 2243.3157,864.89061 2243.6507,863.74875 2243.6044,861.42829 L 2240.5974,864.67113 L 2239.093,861.98385 L 2239.7408,857.31292 L 2236.8704,856.59249 L 2236.5499,852.56316 L 2230.6815,853.78918 L 2227.1359,850.9169 L 2224.6501,856.10198 L 2220.3937,856.68879 C 2218.8212,856.68142 2219.0385,855.51597 2213.0992,858.3342 L 2208.9055,862.36456 L 2210.2853,866.71551 C 2211.5791,866.04063 2213.0043,865.57627 2215.2112,866.36253 L 2216.1712,868.47344 L 2215.1843,870.05675 L 2209.3873,870.95537 L 2208.2441,869.55575 L 2204.6604,873.7892 L 2202.204,868.71487 L 2202.204,864.53592 L 2200.0884,864.53592 C 2198.5486,863.26079 2196.8106,862.21688 2194.7171,861.58759 C 2195.6615,861.10757 2195.9413,860.09593 2195.9655,858.87984 L 2192.188,857.30146 L 2185.6751,850.94287 L 2186.0388,849.79682 L 2186.4026,848.65071 C 2182.8476,847.19659 2178.9509,849.45087 2175.2033,849.63405 L 2171.5853,830.27024 L 2182.638,827.852 L 2183.6822,831.61552 L 2190.9036,829.49208 L 2197.9103,835.27129 L 2199.2014,833.98028 L 2201.0697,833.91097 L 2201.0697,838.76781 L 2216.6657,841.2347 L 2221.6858,833.17569 L 2216.8199,829.24889 C 2216.7201,828.11827 2217.5488,826.55906 2218.6418,824.87781 L 2224.8891,826.02255 L 2225.8462,827.40147 C 2228.5763,823.93977 2231.7913,820.88908 2234.5297,817.4428 L 2230.9699,813.55729 L 2228.9714,813.52672 L 2227.0946,811.94001 C 2226.1856,812.02151 2224.7206,810.71269 2223.3067,809.53193 L 2217.5663,808.20689 L 2216.8646,805.01208 L 2217.6044,799.03256 L 2216.3721,795.81303 L 2219.8584,788.50818 L 2224.4491,785.47019 L 2226.1179,787.82468 L 2225.3476,790.8933 L 2233.6796,790.56482 L 2235.381,791.62699 L 2244.9339,791.90903 C 2245.2058,792.63875 2245.8853,793.28273 2247.9017,793.64518 L 2256.2003,791.94345 L 2253.7432,811.22583 L 2251.7892,811.22583 L 2238.5002,822.09445 L 2239.9768,823.17063 L 2243.1821,829.058 L 2246.5379,830.35207 L 2244.6899,840.21427 L 2245.2807,845.23824 C 2242.0093,847.79973 2240.263,847.48401 2238.8981,850.01079 L 2242.1644,853.24195 L 2247.5686,854.33611 L 2248.7217,861.13315 L 2252.2169,871.31306 L 2252.1113,883.25117 L 2255.4471,883.25117 L 2256.1788,884.43511 C 2254.8721,886.32427 2253.6091,889.21941 2252.3949,893.23456 z "},"tn5":{"name":"TN-5","path":"M 1801.4586,886.11239 L 1801.0677,885.72153 C 1800.8527,885.50653 1800.6768,884.86278 1800.6768,884.29089 L 1800.6768,883.25117 L 1797.1527,883.25117 L 1798.53,877.15851 L 1796.7797,874.46068 L 1798.4083,872.25891 L 1798.4083,869.77767 L 1794.9255,868.33506 L 1795.5239,865.95085 L 1791.9825,859.514 L 1793.658,858.42103 L 1795.1529,859.69633 C 1796.1636,860.28467 1797.5009,861.04009 1798.1248,861.37498 C 1798.7486,861.70987 1799.7056,862.34238 1800.2515,862.78066 L 1801.216,863.47965 L 1804.6467,860.99426 L 1805.8872,862.09092 L 1807.3635,861.7068 L 1808.0113,863.39475 L 1810.8496,862.10152 L 1810.3544,861.30023 L 1811.6713,859.45666 L 1813.6292,863.1181 L 1817.7175,865.2961 L 1818.3808,867.9387 L 1822.0133,867.6988 L 1822.4025,863.46082 L 1823.3255,865.67018 L 1827.9768,860.84959 L 1829.8779,863.143 L 1830.7347,861.45018 L 1830.7347,860.06582 L 1831.5536,859.50311 L 1832.2818,861.71474 L 1834.85,861.55022 L 1835.4912,859.1482 L 1836.4651,862.55545 L 1837.6191,859.43177 L 1838.3358,859.43177 C 1838.73,859.43177 1839.2168,859.59601 1839.4176,859.79677 L 1839.7826,860.16177 L 1836.6895,865.66905 L 1834.7046,865.67018 L 1834.7046,866.40745 C 1834.7046,866.81295 1834.9834,867.42357 1835.3242,867.76436 L 1835.9439,868.38406 L 1834.7144,870.6815 L 1835.582,873.306 L 1834.8783,875.24343 C 1834.1195,875.55671 1833.1642,875.8785 1832.767,875.8785 L 1831.1529,876.6042 L 1830.2953,878.25528 C 1828.8274,877.45461 1827.3926,876.58826 1825.8816,875.8785 L 1825.7221,878.55217 L 1824.2663,878.19034 L 1824.0429,880.54262 L 1822.0758,882.46853 L 1822.1545,885.09927 L 1814.0044,881.92301 L 1806.2079,881.45122 L 1801.4586,886.11239 z "},"ks4":{"name":"KS-4","path":"M 1294.2309,792.34968 C 1285.698,792.92753 1277.0211,792.1403 1268.5152,793.14724 C 1268.1326,802.16719 1269.5496,811.25259 1268.9405,820.26308 L 1231.8468,821.43278 L 1232.5557,842.41654 L 1238.0852,842.41654 L 1238.0852,866.23595 C 1286.2051,864.87592 1328.0612,864.26019 1376.6418,861.61028 L 1375.7734,838.76565 L 1353.9567,839.38592 L 1352.6806,806.61654 L 1334.5502,807.41404 C 1334.3421,808.5762 1334.1091,809.71159 1333.4514,810.65734 L 1331.8209,809.80664 L 1331.0588,804.61384 L 1326.1142,805.3582 L 1325.3344,796.37278 L 1294.2309,797.7906 L 1294.2309,792.34968 z "},"co3":{"name":"CO-3","path":"M 736.45985,597.55873 L 712.88856,845.71298 C 820.71481,853.9347 893.64768,860.15724 1004.4636,864.39278 L 1006.3068,824.83555 L 990.32081,824.83555 L 990.97661,812.64229 L 988.19411,815.19437 L 986.33321,815.19437 L 983.56851,810.37377 L 982.80641,804.93285 L 984.25961,803.7809 C 985.06091,803.15059 985.71291,802.3924 985.71291,802.09721 L 985.71291,801.56553 L 982.96591,802.25674 L 981.67211,799.84645 L 982.38101,797.61338 L 979.47451,797.61338 L 979.47451,794.90176 C 970.03051,794.98825 974.87541,793.6458 964.00251,793.18268 L 963.18731,791.85345 L 962.40751,791.95978 C 961.97281,792.02069 961.26941,792.04984 960.84791,792.01298 L 960.06809,791.94209 L 961.13141,768.33536 C 947.25382,767.88063 932.4589,767.14331 918.93351,766.29721 L 918.10056,782.86803 C 904.16383,782.24339 891.35132,781.08447 876.29252,780.03239 L 874.28987,778.2778 C 873.18732,777.30972 872.28717,776.2548 872.28717,775.9384 C 872.28717,775.622 871.58535,774.53288 870.72757,773.51041 C 869.86978,772.48782 868.35453,770.67737 867.36024,769.48731 L 865.55252,767.32513 L 863.23086,769.41642 L 855.80499,768.81384 L 850.5768,763.05397 L 850.36413,756.76236 L 848.94631,755.20276 C 848.17246,754.3507 847.25025,752.96742 846.89047,752.11899 L 846.34103,750.0986 L 848.02472,749.97457 L 848.21965,748.20229 C 848.30029,747.46253 848.38854,745.93542 848.41463,744.79952 L 848.46777,742.72592 L 851.01984,741.99932 L 852.36678,740.29793 C 853.10512,739.35519 853.60351,738.4863 853.48334,738.36612 C 853.36322,738.246 852.58682,738.05329 851.74651,737.94078 C 850.90614,737.8282 850.03701,737.56052 849.83245,737.35595 L 849.46024,736.98375 L 846.35878,737.60407 L 843.93074,734.2013 L 843.93074,732.39358 L 841.21918,732.39358 L 840.72294,728.97305 L 842.28255,727.67932 L 841.71542,726.19061 L 842.53066,724.61325 C 842.98312,723.74583 843.36174,722.71694 843.36361,722.32704 L 843.36361,721.61813 L 845.49034,721.61813 L 846.89047,718.23305 L 846.28789,716.65575 L 847.51074,715.43286 L 846.05747,713.67833 L 847.47529,711.97694 L 850.16915,711.97694 L 850.16915,709.79701 L 817.54156,706.7487 L 820.324,672.27793 L 843.15093,673.25266 C 843.46819,663.65639 844.20211,657.63206 844.83463,648.17496 L 843.89529,647.51919 L 844.6574,641.08586 L 846.19925,642.36189 L 846.19925,644.48863 L 849.88559,645.99503 L 851.95918,643.33662 L 853.00479,643.99239 L 853.00479,646.04823 L 854.74163,647.5015 L 858.37482,647.39516 L 860.23569,649.0788 L 860.90915,647.32427 L 862.61054,647.32427 L 863.81569,649.59279 L 865.81839,649.59279 L 867.32479,648.17496 L 867.83878,649.55734 L 874.04175,647.23563 L 876.75331,649.00791 L 877.46222,646.75714 L 879.65984,645.58744 L 879.65984,640.89088 L 881.92836,640.96177 L 881.92836,638.81734 L 879.89027,638.81734 L 879.25225,636.12348 C 878.90607,634.64186 878.33877,632.28118 877.9939,630.87754 C 877.64909,629.4739 877.15716,627.81504 876.89509,627.1912 C 876.63302,626.56736 875.87959,624.94861 875.21146,623.59345 C 874.54327,622.2383 873.98856,620.83766 873.98856,620.47424 L 873.98856,619.80078 L 871.72004,618.40071 L 871.72004,616.69932 L 870.58578,616.69932 L 870.58578,614.60803 L 868.31727,612.55219 L 868.33502,608.63543 L 736.45985,597.55873 z "},"ks2":{"name":"KS-2","path":"M 1377.8824,674.83001 L 1366.9652,675.34395 L 1356.0479,675.84018 L 1356.1188,680.39496 L 1350.5716,680.28863 L 1351.0856,685.74724 L 1334.9666,686.52194 L 1335.7376,703.32823 L 1301.6036,704.7815 L 1302.3479,726.15516 L 1307.2749,726.15516 L 1307.2749,730.41997 L 1308.442,731.07336 L 1307.842,734.25444 L 1314.6475,733.63417 L 1314.6475,734.66209 L 1324.2887,734.66209 L 1324.2887,736.36348 L 1329.1448,736.36348 L 1328.7017,728.42368 L 1331.2006,728.42368 L 1333.2388,725.90704 L 1335.0465,727.41345 L 1335.7554,725.57028 L 1338.2011,725.8007 C 1339.5463,725.92638 1340.9048,726.19441 1341.214,726.38553 L 1341.7811,726.72229 L 1342.2065,725.4285 L 1344.7054,726.75773 L 1344.7054,728.33503 L 1343.2875,728.90216 C 1344.2694,729.12669 1345.0763,729.37435 1345.9637,729.75285 C 1346.3845,730.17361 1347.6737,730.84061 1348.8348,731.22387 L 1350.9438,731.91503 L 1354.9137,838.58843 L 1376.3405,838.14533 L 1377.3174,861.53298 L 1420.7141,859.51684 L 1415.1779,751.65746 L 1394.0456,752.81021 L 1394.0456,748.39721 L 1384.8829,746.99714 L 1383.66,744.30328 L 1380.2927,744.30328 C 1380.5542,742.98425 1380.8475,741.66993 1381.0016,740.33338 C 1381.0016,740.09677 1381.5333,739.76046 1382.1891,739.58902 L 1383.3942,739.27001 L 1380.2041,735.10513 L 1382.4194,733.47464 L 1386.9565,733.8114 L 1387.2932,737.28506 L 1391.777,738.47246 L 1391.777,736.80652 L 1394.6127,737.3382 L 1394.6127,735.79635 L 1396.6508,735.79635 L 1397.98,737.12553 L 1400.1068,735.21147 L 1399.8055,722.75239 L 1402.8893,722.75239 L 1402.8361,719.89899 L 1399.2915,717.75457 L 1398.5117,713.57199 L 1400.5675,711.90605 L 1397.4838,712.38454 L 1395.0026,708.7514 L 1391.777,707.54625 L 1391.777,705.72078 L 1388.197,702.53068 L 1388.9592,699.50011 L 1391.2099,699.50011 L 1391.2099,695.77833 L 1392.9822,693.2617 L 1394.6127,693.2617 L 1394.6127,691.70209 C 1394.6175,690.84431 1394.8576,689.78066 1395.1444,689.32724 L 1395.6761,688.49424 L 1398.4763,690.00071 L 1399.0966,689.6108 C 1399.4383,689.39966 1399.7169,688.9657 1399.7169,688.65378 L 1399.7169,688.08665 L 1398.5649,688.79556 L 1396.3141,688.08665 L 1396.3141,685.88902 L 1398.5826,685.88902 L 1398.5826,684.27622 L 1396.0305,683.90407 L 1395.6761,680.21774 L 1392.3442,680.92665 L 1392.3442,682.41536 L 1390.058,683.14196 L 1386.602,682.37991 L 1385.8222,680.5013 L 1382.9866,680.5013 L 1382.9866,678.25048 L 1380.8598,677.84288 L 1377.8824,674.83001 z "},"ut2":{"name":"UT-2","path":"M 613.00302,592.9685 L 601.81998,594.17365 L 603.48592,597.41695 L 602.67067,600.69563 L 600.63252,600.25259 L 600.63252,602.87556 L 601.87312,604.0984 L 601.25285,605.26811 C 600.912,605.90493 600.7282,607.09466 600.63252,607.90883 C 600.19277,612.14142 597.31839,620.24388 597.31839,620.24388 L 597.95641,621.90982 L 600.18948,621.32494 L 601.46552,622.68962 C 602.16933,623.449 603.04327,624.07199 603.39728,624.07199 L 604.0353,624.07199 L 604.0353,620.24388 L 607.89886,618.40071 L 610.11423,618.34751 L 614.27906,619.78308 L 615.76777,624.69226 L 618.76295,624.72771 L 620.42889,627.08487 L 619.63133,629.10526 L 620.87193,629.17615 C 621.74395,629.16078 623.25846,629.30171 624.22156,629.49516 L 625.95839,629.84962 L 627.92559,633.14605 L 627.23443,634.24487 L 628.98896,637.62989 L 628.98896,640.96177 C 628.39914,642.40556 627.71933,643.82072 627.28757,645.32157 L 629.36116,645.62288 L 630.14097,647.18249 C 630.56932,648.04027 631.40901,649.30378 632.00183,649.98269 L 633.08295,651.22328 L 632.32084,652.42843 L 634.09312,652.42843 L 634.09312,655.13999 L 644.30143,656.54011 L 644.30143,662.72533 L 625.67483,660.27959 L 623.03411,681.63556 L 620.48203,681.36969 L 613.05621,740.90051 L 555.26223,733.51008 L 555.26223,736.23939 L 556.0952,736.93061 C 556.5283,737.29005 557.22554,738.24629 557.69025,739.12823 L 559.79926,739.19912 L 559.74609,742.03476 L 560.8449,742.03476 L 562.56401,745.47298 C 561.9451,746.95115 561.40613,748.47581 560.36639,749.7087 L 559.76381,750.06315 L 560.08282,753.07602 L 558.55866,753.09377 L 555.93569,756.39021 C 522.69048,751.93683 511.26918,750.21826 479.23154,745.82744 L 468.49154,815.81463 C 559.55109,828.98694 617.36821,835.66737 711.71886,845.80156 C 723.47487,713.27039 726.01872,687.53835 735.21925,597.43464 C 721.62609,596.32528 707.92278,595.1566 692.17067,593.60652 L 690.91232,603.21226 L 689.8844,604.24018 L 684.28401,604.31108 L 678.52413,602.1312 L 674.64282,602.69833 L 673.50856,604.11615 C 670.65551,604.53441 667.79468,604.95352 664.91305,605.10863 C 663.19742,605.16835 662.19973,604.79739 661.22671,604.27563 L 658.8873,606.1188 L 656.72512,604.78962 L 651.78044,606.5087 L 648.80302,605.37444 L 648.12955,608.75952 L 646.26869,608.75952 L 644.35463,613.17246 L 640.18975,613.95226 L 638.96691,612.72942 L 636.82242,612.72942 L 636.21985,614.99794 C 632.17764,614.08673 629.00013,610.85653 625.55074,608.65318 L 624.91272,608.44051 L 624.73549,605.35675 L 624.29245,605.35675 C 624.04796,605.35646 623.11005,606.11086 622.21886,607.02269 C 621.32762,607.9344 620.5033,608.99703 620.37569,609.37979 L 620.14532,610.071 L 616.84889,608.97219 L 614.84619,605.39219 L 614.79305,599.11833 L 613.5879,599.11833 L 613.71193,597.27516 C 613.77885,596.26136 613.64002,594.87264 613.41067,594.1914 L 613.00302,592.9685 z "},"nc4":{"name":"NC-4","path":"M 2215.8902,840.65073 L 2201.6368,838.26471 L 2201.6368,833.34385 L 2199.0636,833.39636 L 2197.8501,834.76167 C 2195.5158,832.82963 2193.2603,830.79942 2190.8734,828.93317 L 2184.143,830.93258 L 2183.2072,827.77867 L 2185.1901,827.31158 L 2180.228,802.97314 L 2201.4232,798.49316 L 2203.4056,806.98467 L 2206.741,808.89833 L 2206.741,810.78749 L 2211.7012,810.04365 L 2215.1281,812.92721 L 2217.2118,813.03219 L 2216.0167,817.10361 L 2212.484,818.81622 L 2212.4326,819.7724 L 2208.5895,818.00222 L 2210.5916,821.88983 L 2212.5936,822.77977 L 2209.537,823.83554 L 2207.9125,826.97703 L 2211.7171,829.78358 L 2216.6485,829.67855 L 2221.0549,833.34005 C 2219.3341,835.76072 2218.0009,838.54464 2215.8902,840.65073 z "},"mo3":{"name":"MO-3","path":"M 1633.8415,800.45038 L 1620.3525,789.17995 C 1622.2303,786.84372 1624.3078,784.64978 1626.0012,782.17358 L 1621.1224,778.42373 L 1617.198,780.07946 C 1615.0395,780.9901 1612.9471,781.73513 1612.5482,781.73513 L 1611.823,781.73513 L 1611.823,777.88819 C 1610.66,777.51768 1609.4861,777.23378 1608.2784,777.1051 C 1608.0445,777.15625 1607.8531,776.93195 1607.8531,776.6067 C 1607.8531,776.2814 1606.7022,774.78486 1605.2955,773.281 L 1602.7379,770.54671 L 1603.4922,753.94583 L 1605.0174,753.94583 L 1605.0174,755.08009 L 1607.4183,755.08009 L 1606.8016,752.72196 L 1608.6572,753.43405 L 1610.4052,751.24783 L 1618.1537,750.502 L 1617.4906,751.57495 L 1618.2293,753.49989 L 1621.849,752.91246 L 1621.5576,755.83947 C 1621.3973,757.44927 1621.2742,760.50683 1621.2839,762.63401 L 1621.3017,766.50166 L 1623.5512,769.54187 L 1626.5299,771.00313 L 1628.4511,774.25556 L 1632.5232,776.48874 L 1633.934,775.97163 L 1635.0352,778.86779 L 1638.1945,779.61555 L 1641.8981,782.37321 L 1644.1493,781.65869 L 1644.1493,782.05976 C 1644.1493,782.28031 1643.7342,782.7643 1643.2268,783.13532 L 1642.3043,783.80986 C 1642.8569,784.90215 1643.4062,785.99064 1644.2511,786.88319 L 1644.7501,787.21065 L 1643.6238,788.64253 C 1643.0043,789.43005 1641.5614,792.2176 1640.4173,794.83705 C 1639.2732,797.45651 1638.2474,799.69984 1638.1377,799.82229 L 1636.1883,798.59247 C 1635.4627,799.29435 1634.7083,799.9483 1633.8415,800.45038 z "},"co5":{"name":"CO-5","path":"M 881.02821,698.74963 L 880.33331,701.2015 L 878.52559,701.2015 L 878.52559,701.75088 C 878.52559,702.04862 877.91689,702.87804 877.17866,703.59404 L 873.70499,706.18157 L 873.97086,707.74117 L 870.58578,709.22988 L 870.58578,710.7186 C 868.6424,710.6819 864.03641,709.02821 864.03641,709.02821 L 861.51173,709.01721 L 857.7368,710.80724 L 853.58967,710.13377 L 852.29588,708.55642 L 850.73628,709.85021 L 850.73628,712.54407 L 847.4044,712.54407 L 846.66004,713.73147 L 848.06992,715.35283 L 846.78226,716.61787 L 847.2912,718.46297 L 846.217,721.29912 C 845.81485,721.78362 845.19589,722.18526 844.83463,722.18526 L 844.17885,722.18526 L 842.30824,726.27494 L 842.88756,727.82292 L 841.20018,729.26881 L 841.804,731.89734 L 843.85984,731.98592 C 844.20982,732.3359 844.49786,733.03846 844.49786,733.54553 L 844.53456,734.1371 L 846.8037,736.92573 L 849.14123,736.36348 L 849.797,736.77107 C 850.15872,736.99702 850.96313,737.26533 851.58697,737.35595 C 852.21081,737.44658 853.04024,737.62097 853.43014,737.76355 C 853.82004,737.90607 854.13905,738.28565 854.13905,738.59655 L 850.61225,743.16902 L 849.03489,743.16902 C 848.96156,745.40572 849.15138,748.13956 848.34373,750.54169 L 846.87272,750.54169 L 848.19004,753.3859 L 850.93001,756.29363 L 851.19339,762.74233 L 856.02873,768.30541 L 863.08233,768.79984 L 864.47146,766.98843 L 866.33232,767.00612 L 876.4343,779.46526 L 917.48024,782.3009 L 918.2246,765.71239 L 960.97191,767.52011 L 962.86831,730.74533 L 898.39284,727.28942 L 899.49165,710.45278 L 896.54967,709.10585 L 897.27628,706.2879 L 896.07113,704.03714 L 893.21779,704.03714 L 889.86816,702.30031 L 889.90485,699.36746 L 881.02821,698.74963 z "},"va4":{"name":"VA-4","path":"M 2223.7549,699.99635 L 2222.5675,700.74071 L 2222.9042,704.32071 C 2220.5439,704.35485 2218.6231,704.15595 2216.9848,703.78902 L 2216.9493,716.01773 L 2214.0073,719.8813 L 2213.7592,724.2411 C 2214.8778,729.28134 2215.793,734.38998 2217.3924,739.27001 C 2218.7913,739.9078 2220.8449,740.09036 2221.5927,741.18407 L 2226.6259,742.61959 L 2229.5679,741.14863 L 2232.4036,759.89932 L 2233.2543,760.8386 L 2235.7532,759.33219 L 2235.0797,754.0685 C 2238.1092,749.87226 2241.0005,745.80532 2243.0018,742.63734 C 2244.6101,743.92948 2245.8479,744.76509 2247.6275,745.02988 L 2250.6226,755.98256 L 2247.9819,766.91754 L 2326.3343,747.2984 L 2324.4911,740.74097 L 2327.1495,739.03959 L 2321.9922,735.72546 L 2319.1034,735.72546 L 2317.0298,731.70236 L 2316.25,732.11001 L 2316.0374,733.52783 L 2314.4954,733.52783 L 2314.3891,735.19377 L 2310.4547,736.73563 L 2308.7887,735.61912 L 2309.2849,733.63417 L 2306.6797,730.69219 L 2305.4214,730.69219 L 2305.4214,731.82645 L 2303.8086,731.82645 L 2302.5326,727.98058 L 2301.5756,727.64387 C 2301.043,727.45995 2299.58,726.68792 2298.3323,725.92474 L 2296.0638,724.52467 L 2293.494,725.14493 L 2291.7572,723.70942 L 2292.3774,720.76744 L 2291.2609,719.06605 L 2291.2432,723.62078 L 2280.5032,734.30764 L 2278.1992,728.10467 L 2273.0774,728.01602 L 2270.4366,726.73998 L 2264.3046,726.54506 L 2261.8588,725.05635 L 2261.1322,721.75991 L 2258.3497,719.15464 L 2260.8663,716.46078 L 2259.4663,714.22771 L 2260.1752,711.12625 L 2258.1725,713.83781 L 2256.9319,712.26051 L 2253.0152,712.06553 L 2251.8455,710.20467 L 2250.9061,710.68315 L 2250.2859,708.57417 L 2247.3261,709.05266 L 2249.2756,711.44526 L 2244.6677,711.40981 L 2240.4851,714.63536 L 2234.9556,716.65575 L 2232.6162,719.34962 L 2230.525,719.34962 L 2229.3552,716.26585 C 2230.1673,715.57435 2231.0065,714.90832 2232.2441,714.81259 L 2232.9884,711.69338 L 2237.8622,704.63972 C 2235.2794,704.1703 2231.9854,703.80638 2231.9428,703.00922 L 2229.816,704.19662 L 2228.7704,702.74335 C 2227.3901,702.38356 2225.2085,701.88511 2223.7549,699.99635 z "},"mo2":{"name":"MO-2","path":"M 1622.0017,757.52242 L 1622.7042,752.17321 L 1618.4662,752.96827 L 1618.1971,751.63126 L 1619.2588,749.81044 L 1609.9322,750.66402 L 1608.3649,752.95647 L 1606.8517,752.06358 L 1606.1055,752.33989 L 1606.8213,754.59508 L 1605.4746,754.50564 L 1605.3541,753.32165 L 1603.5076,753.24236 L 1602.4654,743.54072 L 1605.4725,740.33474 L 1609.9048,740.33474 L 1611.854,738.10649 L 1611.3378,737.05271 L 1605.8681,736.59555 L 1602.8058,737.72634 L 1600.4987,735.63852 L 1601.1705,732.96207 C 1599.9697,732.93779 1598.7487,732.88817 1597.6448,733.28289 L 1598.7937,735.75058 L 1591.1228,735.51415 L 1590.2894,734.37989 L 1590.2721,729.40265 L 1582.9771,730.15007 L 1582.8578,726.76528 L 1579.0051,726.65741 L 1578.2723,723.32088 L 1575.1014,723.32088 C 1574.5022,720.03136 1574.3264,718.0121 1574.3925,714.90406 L 1577.9281,714.12749 L 1577.4104,708.73926 L 1598.7015,707.13378 L 1599.0759,709.13069 C 1599.2818,710.229 1599.8505,711.8055 1600.3397,712.63402 L 1601.2292,714.14043 L 1599.7938,717.60592 L 1600.9266,719.47092 C 1601.5497,720.49669 1602.2325,722.15463 1602.444,723.15533 L 1602.8286,724.97474 L 1606.7583,728.42504 L 1609.9673,728.42504 L 1612.9572,724.1106 L 1612.9572,722.18662 L 1616.6436,722.22683 L 1622.882,723.85596 C 1625.2342,725.20749 1627.8672,726.19344 1629.9663,727.9288 L 1626.4514,728.98717 C 1625.2634,728.33327 1624.1065,727.64637 1623.1656,726.6924 L 1620.2449,725.00786 L 1619.1957,725.65631 L 1618.5072,729.55929 L 1614.6039,729.55929 L 1612.9989,733.24563 L 1615.9479,735.8766 L 1613.4514,739.25328 L 1613.8203,741.18543 L 1618.5889,742.83822 L 1621.4014,740.19602 L 1624.2998,740.92348 L 1624.2998,741.97567 L 1627.7656,742.55284 L 1626.9411,743.69146 C 1626.5209,744.18469 1625.7547,745.678 1625.2385,747.00996 L 1624.2998,749.43177 L 1624.2998,751.09499 L 1624.2998,752.7582 L 1623.6417,754.20268 L 1622.9835,755.64721 L 1622.0017,757.52242 z "},"mo5":{"name":"MO-5","path":"M 1420.7006,755.14531 L 1420.7006,754.44842 C 1420.7006,754.06515 1421.0896,753.32176 1421.565,752.79648 L 1422.4293,751.84133 L 1421.7499,750.07069 L 1416.0856,749.15104 L 1414.9995,728.74932 L 1416.8576,727.16425 C 1417.8795,726.31486 1419.0427,725.61304 1419.4424,725.60465 L 1420.1691,725.58939 L 1420.4955,726.44009 C 1420.6751,726.90797 1421.0395,727.29078 1421.3055,727.29078 C 1421.5714,727.29078 1422.415,726.61561 1423.1803,725.79033 L 1424.5715,724.28993 L 1424.0108,722.47018 L 1425.7293,724.56873 L 1427.0154,723.7739 L 1427.6385,726.15652 L 1429.2075,726.15652 L 1429.2075,727.02979 C 1429.2075,727.51009 1428.6674,728.97753 1428.0072,730.29078 C 1427.347,731.60402 1426.4326,733.10481 1425.9752,733.62583 L 1424.6954,734.61388 C 1429.0672,735.8158 1433.6834,736.28436 1438.1774,737.11957 C 1438.8901,739.60479 1438.9509,740.82695 1438.8487,743.59737 L 1424.9101,744.5882 L 1425.5212,754.79652 L 1420.7006,755.14531 z "},"ky3":{"name":"KY-3","path":"M 1838.2491,754.13996 L 1837.8238,754.40101 L 1837.8238,742.46805 L 1839.2824,740.27916 C 1839.6549,738.97119 1838.8813,737.01273 1840.3998,736.35525 L 1844.6982,737.04261 L 1848.3157,732.92259 L 1848.3157,729.55929 L 1848.8423,729.55929 C 1849.1319,729.55929 1849.7517,729.94211 1850.2196,730.40999 L 1856.6444,733.46959 L 1857.9786,732.65916 L 1862.1944,731.53177 L 1865.4951,731.64565 L 1867.9362,735.30453 L 1872.2768,734.37989 L 1873.1728,735.84195 L 1867.7393,736.62424 L 1865.4006,734.55201 L 1861.3596,735.88567 C 1861.1333,738.79147 1860.876,740.76797 1860.123,743.20912 L 1854.2856,747.14028 L 1847.0375,747.14028 L 1838.6745,751.75677 L 1838.6745,752.81781 C 1838.6745,753.40138 1838.4831,753.99636 1838.2491,754.13996 z "},"ks3":{"name":"KS-3","path":"M 1394.6127,752.35361 L 1394.6127,747.85356 L 1385.1077,746.47249 L 1383.8616,743.73751 L 1380.8787,743.73751 L 1381.6587,740.62965 L 1382.3226,740.20731 C 1382.6878,739.97501 1383.3176,739.78105 1383.7222,739.77629 L 1384.4578,739.76761 L 1380.7585,735.16423 L 1382.528,733.86028 L 1386.601,734.09632 L 1386.9565,737.61229 L 1392.3442,739.20048 L 1392.3442,737.42265 L 1394.9991,738.07978 L 1395.1063,736.04878 L 1396.1546,736.00885 L 1398.0469,737.52836 L 1400.7111,735.51868 L 1400.4236,723.32088 L 1405.9553,723.32088 L 1408.2238,725.62932 L 1410.6586,724.32623 L 1411.627,726.05659 L 1414.1786,725.77586 L 1415.1453,751.00254 L 1394.6127,752.35361 z "},"va2":{"name":"VA-2","path":"M 2344.0925,648.54711 L 2328.3901,654.59061 L 2327.309,658.09972 L 2326.2811,658.41873 C 2325.7216,658.59624 2325.2709,658.96396 2325.2709,659.23397 C 2325.2709,659.50387 2324.7605,659.88657 2324.1366,660.08467 C 2323.5128,660.28265 2323.0024,660.65208 2323.0024,660.89991 L 2323.0024,661.34296 L 2325.6253,660.84672 L 2326.9191,662.40632 L 2325.395,666.89021 L 2324.0657,667.59912 C 2323.3294,667.98409 2322.4636,668.37501 2322.1517,668.48526 L 2321.5846,668.69793 L 2323.0733,670.50566 L 2321.9036,672.70328 L 2322.5061,673.30585 L 2321.9745,674.35147 C 2321.6778,674.92773 2321.0831,676.67318 2320.663,678.23279 L 2319.9009,681.06843 L 2320.0604,703.18645 L 2320.8225,704.60427 C 2321.2434,705.38804 2322.3434,707.08115 2323.2682,708.3615 L 2324.9519,710.7009 L 2328.2129,710.43503 L 2331.0485,705.66764 L 2331.403,702.61932 L 2330.9599,702.05219 C 2330.7213,701.74027 2330.407,700.77337 2330.251,699.90771 L 2329.9675,698.33041 L 2330.6586,697.92276 C 2331.0392,697.6967 2331.6513,696.92971 2332.0233,696.22137 L 2332.6968,694.94533 L 2332.0587,693.91741 L 2332.8562,691.45397 C 2333.2951,690.10517 2333.8265,687.34927 2334.0437,685.32189 C 2334.2607,683.29441 2334.4245,680.99754 2334.3981,680.21774 C 2334.3715,679.43793 2334.354,677.01335 2334.3627,674.83001 C 2334.3714,672.64657 2334.6454,669.19808 2334.9653,667.17378 L 2335.5501,663.50513 L 2338.0667,658.95041 L 2341.7354,658.9681 L 2341.9657,658.09972 C 2342.1016,657.62866 2342.4777,655.84527 2342.7987,654.12982 C 2343.1196,652.41425 2343.544,650.46407 2343.738,649.78771 L 2344.0925,648.54711 z M 2309.1255,715.36196 L 2306.981,718.23305 L 2307.1937,720.46612 L 2307.6462,721.39723 L 2308.2001,720.97824 L 2308.7547,721.61433 L 2307.3051,722.67877 L 2306.9467,723.26297 L 2307.6722,723.67397 L 2308.8774,722.16751 L 2310.561,722.22071 L 2310.561,716.79754 L 2309.1255,715.36196 z M 2325.1823,723.76256 L 2322.7011,726.10196 L 2319.0148,725.90704 C 2316.9931,725.79373 2314.5625,725.5164 2313.6093,725.30447 L 2311.8725,724.93226 L 2310.5964,726.47417 L 2311.518,727.98058 L 2315.5943,726.50962 L 2317.9869,728.68949 L 2317.4552,732.11001 L 2319.2806,735.22922 L 2321.9568,735.22922 L 2324.4556,736.70018 C 2325.8367,737.50953 2327.1114,738.41172 2327.2913,738.70288 L 2327.628,739.23457 L 2325.1114,741.27266 L 2326.8128,747.13892 C 2330.6393,746.2474 2334.4348,745.18567 2338.1908,744.03741 C 2338.2766,743.96005 2336.8504,741.63585 2335.0184,738.86236 C 2333.1865,736.08882 2330.5081,731.65183 2329.0813,729.0085 L 2326.4938,724.20566 L 2325.1823,723.76256 z "},"va3":{"name":"VA-3","path":"M 2262.3196,694.36051 L 2262.3196,696.25682 L 2257.499,701.67998 L 2251.2606,700.01404 L 2248.7085,700.65206 L 2248.7085,701.50276 C 2248.7085,701.96582 2248.1981,703.29851 2247.5743,704.46249 C 2246.9504,705.62646 2246.44,707.04962 2246.44,707.63484 L 2246.44,708.6982 L 2250.4985,707.93615 L 2251.1011,710.25781 L 2252.0404,709.69068 L 2253.1038,711.56929 L 2257.3395,711.83516 L 2258.2257,713.27068 L 2260.7246,709.9388 L 2260.0334,714.22771 L 2261.4335,716.46078 L 2258.9168,719.15464 L 2261.6993,721.75991 L 2262.4082,725.0386 L 2264.3046,725.96018 L 2270.1708,726.15516 L 2273.3786,727.48434 L 2278.341,727.60843 L 2280.5918,733.66962 L 2290.676,723.62078 L 2290.676,716.58486 L 2289.5418,715.87595 L 2289.5418,718.81793 L 2287.9467,719.4382 L 2284.5794,717.68368 L 2284.2073,716.74434 L 2283.073,716.19496 L 2279.3335,716.53167 L 2279.2449,715.80506 C 2279.1974,715.41147 2279.1164,714.84094 2279.0677,714.52902 C 2279.0189,714.2171 2278.7921,712.73877 2278.5537,711.23259 L 2278.217,708.98177 L 2276.4624,709.12355 L 2275.4345,706.42969 L 2275.7712,705.10051 C 2275.9507,704.36517 2276.4687,703.30685 2276.9409,702.7611 L 2277.8093,701.76863 L 2281.1944,701.76863 L 2282.6477,699.78368 L 2282.0451,699.07476 C 2281.7207,698.68401 2281.1503,698.36585 2280.769,698.36585 C 2280.3877,698.36585 2279.6135,697.8543 2279.0499,697.2316 L 2278.022,696.09734 L 2276.675,697.2316 L 2276.3029,696.8417 C 2275.9736,696.04539 2275.853,695.27455 2275.9307,694.39595 L 2274.7255,694.39595 L 2275.4168,696.57583 L 2274.8496,697.30249 L 2273.9457,696.68216 C 2273.7498,696.36514 2273.3876,696.09734 2273.1305,696.09734 C 2272.8734,696.09734 2272.5221,696.62953 2272.3507,697.28474 L 2272.0317,698.48989 L 2270.8265,697.72783 L 2270.8265,695.53021 L 2269.7277,695.53021 L 2270.3835,697.2316 L 2269.4442,697.2316 C 2268.9319,697.2316 2267.9258,696.84311 2267.1934,696.36315 C 2266.4608,695.88319 2265.6382,695.55806 2265.3679,695.63655 C 2265.0977,695.71481 2264.2975,695.45841 2263.5956,695.06942 L 2262.3196,694.36051 z M 2294.0079,713.1112 L 2294.7523,714.2986 L 2293.6358,715.66328 L 2294.1675,719.11919 L 2297.517,720.99781 C 2298.1791,720.70159 2298.6929,720.24052 2299.183,719.68632 L 2299.183,716.85068 L 2295.5498,713.1112 L 2294.0079,713.1112 z M 2306.4493,719.91674 C 2305.2298,720.78309 2304.5106,722.17721 2303.6137,723.35496 L 2305.5809,726.35008 L 2306.3253,725.26902 C 2306.7215,724.69571 2307.2669,724.21337 2307.5836,723.83345 L 2306.7861,723.30177 L 2307.3178,722.52196 L 2308.6115,721.63583 L 2308.2216,721.15734 C 2308.2216,721.15728 2307.8888,721.46359 2307.5481,721.77761 C 2307.1886,720.98845 2307.0526,720.43879 2306.4493,719.91674 z M 2315.5943,727.12988 L 2313.4853,727.7679 C 2312.3257,728.12134 2310.7382,728.47477 2309.9584,728.56546 L 2308.5406,728.74269 L 2308.8242,730.12506 L 2307.6013,730.12506 L 2309.6749,733.59872 L 2309.3204,735.26467 L 2310.5964,736.27483 L 2313.9283,735.12288 L 2313.9815,733.24427 L 2315.6829,733.20882 C 2315.6906,731.86717 2316.1894,731.56755 2317.3311,731.22387 L 2317.3311,728.56546 L 2315.5943,727.12988 z "},"in4":{"name":"IN-4","path":"M 1771.5938,580.279 L 1761.9703,581.43101 L 1762.7501,585.93259 C 1760.9811,586.4438 1759.22,586.55371 1757.451,586.6415 L 1763.5122,628.23682 L 1757.4687,627.33298 L 1758.1954,623.82388 L 1754.066,623.82388 L 1750.9291,628.69761 L 1754.066,628.60902 L 1754.8458,635.41457 L 1759.1879,635.41457 L 1759.9854,641.74157 L 1765.2667,641.29853 L 1766.0289,646.40269 L 1784.8859,643.95694 L 1787.1366,658.09972 L 1789.2811,658.09972 L 1788.0228,668.48526 L 1791.0357,667.72315 L 1792.2054,675.78704 L 1789.9014,677.78969 L 1795.1978,716.89276 L 1812.2498,714.15682 L 1813.5613,708.60962 L 1811.2396,696.27457 L 1797.4159,697.88731 L 1794.6157,675.98196 L 1809.4673,673.37675 L 1809.0774,668.41437 L 1822.9721,665.56097 L 1822.405,662.88486 L 1818.1161,663.75325 L 1816.3615,654.32474 L 1807.8546,655.79576 L 1805.8342,652.42843 L 1802.9099,653.84625 L 1802.9454,652.41068 C 1803.1079,650.8999 1804.021,649.49547 1804.9835,648.299 L 1804.0087,645.14434 C 1803.744,644.19644 1802.3086,643.88384 1801.244,641.35167 L 1801.244,639.88071 L 1803.3885,640.55417 L 1805.2139,638.7287 L 1800.6414,609.98236 L 1797.2741,609.23801 L 1797.2741,607.05813 L 1779.2323,609.32665 L 1777.8854,601.31596 L 1774.4471,601.68811 L 1773.5433,595.60922 L 1774.6421,594.47497 L 1773.5256,593.12803 L 1774.0218,590.04427 L 1776.2903,590.04427 L 1776.2903,587.20863 L 1771.6292,587.20863 L 1772.3559,583.30962 L 1771.5938,580.279 z "},"co2":{"name":"CO-2","path":"M 858.25958,709.79327 C 857.70884,709.91452 856.5751,709.93018 855.74017,709.82809 L 854.22208,709.64247 L 853.54396,708.82541 C 853.17102,708.37607 852.53561,708.0084 852.13193,708.0084 C 851.72824,708.0084 851.31288,708.26361 851.20887,708.57548 L 850.41687,709.23777 L 818.41647,706.2608 L 821.0155,672.91743 L 843.72118,673.81213 L 845.47355,647.6092 L 844.45414,646.94809 L 844.83179,641.68401 L 845.71436,642.65754 L 845.96219,644.77355 L 849.88559,646.6592 L 851.99808,644.07026 L 852.54417,644.57353 L 852.53289,646.26947 L 854.71463,648.07623 L 858.25181,647.93133 L 860.44688,649.59415 L 861.2302,647.76584 L 862.3517,647.8441 L 863.84455,650.16128 L 865.98183,650.16128 L 867.02949,648.89641 L 867.89572,650.08001 L 874.04465,647.79907 L 876.78427,649.59415 C 877.27643,648.79665 877.35668,647.82964 877.8498,647.09441 L 880.22697,645.55993 L 880.22697,641.58249 L 884.23067,641.90615 L 883.63411,645.56005 L 885.33527,648.96934 L 888.72976,652.1701 L 889.55488,655.63327 L 911.80305,657.1618 L 910.24027,661.74896 L 912.53096,663.4888 C 912.76938,664.73064 912.98966,665.98388 913.39646,667.17514 L 923.08477,663.20626 L 924.99736,666.44399 L 923.95186,672.86786 L 924.51445,678.23415 L 921.91093,682.70068 L 917.83464,683.49205 L 916.79055,682.06935 L 913.19932,681.28053 L 912.1101,683.14871 L 908.20462,683.00529 L 906.49286,680.78623 L 903.99222,680.78623 L 901.26404,683.73002 L 899.96572,699.56726 L 880.59022,698.27676 L 880.19136,700.0686 L 879.50025,700.13575 C 879.12016,700.17273 878.61774,700.17273 878.3838,700.13575 C 878.14986,700.09883 877.92653,700.32381 877.88757,700.63573 C 877.8486,700.94765 877.78049,701.39426 877.73631,701.62821 C 877.69208,701.86215 877.15688,702.62777 876.54687,703.32959 C 875.93693,704.03141 875.22115,704.60563 874.95625,704.60563 C 874.6914,704.60563 874.11009,704.97024 873.6645,705.41583 C 873.21891,705.86142 872.8543,706.45629 872.8543,706.73781 C 872.8543,707.01927 872.21628,707.59105 871.43648,708.0084 L 870.01866,708.76722 L 870.01866,710.27692 L 869.30974,710.26835 C 868.91984,710.2637 867.58,709.89206 866.33232,709.44256 L 864.0638,708.62533 L 859.87726,708.57553 L 859.56908,709.07421 C 859.39957,709.34847 858.81032,709.67208 858.25958,709.79327 z "},"ca4":{"name":"CA-4","path":"M 180.50642,445.10681 L 169.17343,493.64514 L 174.37865,494.85029 L 164.35283,540.25603 L 157.03823,538.63279 L 156.00538,543.94236 L 159.7996,545.53251 L 161.14971,548.41661 L 160.00904,548.58471 L 160.53669,551.85094 L 159.40815,552.18345 L 159.40815,554.18613 C 157.94841,554.7777 156.84022,554.76781 155.43825,554.52286 L 154.74709,556.10896 L 156.82471,557.43277 L 156.16491,559.41434 L 157.35316,561.66496 L 156.29674,563.65642 L 153.73687,565.86543 L 152.49627,573.68119 L 153.32927,574.63822 L 163.96194,593.99665 L 167.34795,592.2901 L 167.34795,593.1231 C 167.34795,593.58429 167.02418,594.67873 166.63904,595.55109 C 166.25396,596.42356 165.48562,597.47252 164.91996,597.8905 L 163.89204,598.65261 C 164.65435,600.39074 164.68565,599.70678 163.64392,607.54944 L 161.25132,607.37221 C 160.86142,607.43034 160.1727,607.51048 159.72716,607.54944 C 159.28157,607.5884 158.52218,608.02775 158.02578,608.52416 C 157.52948,609.02057 156.66898,609.51942 156.12947,609.62297 C 155.58985,609.72653 154.96317,609.82946 154.72934,609.8534 C 154.4954,609.87727 154.30388,610.28158 154.30399,610.75723 L 154.30399,611.62567 L 150.90122,612.29914 L 149.92069,614.76002 L 147.01677,625.66426 C 143.8047,625.86095 142.30117,626.29066 140.40934,627.18627 L 138.84974,632.09545 L 136.29766,631.45743 L 133.76173,642.80261 L 150.05053,647.72693 C 150.56532,652.04051 150.68751,656.42827 151.59244,660.68231 L 158.2739,661.32033 L 158.2739,660.59366 L 162.20835,660.34555 L 164.06927,661.16079 C 166.66554,662.36974 168.48205,664.64846 170.89091,666.12833 L 187.10887,665.98139 L 187.78234,665.14845 C 188.15562,664.69866 188.78928,664.3332 189.18241,664.3332 L 189.89132,664.3332 L 190.4762,662.15327 L 193.71944,662.52548 L 194.48155,661.88746 C 194.90394,661.54179 195.46818,660.68804 195.73984,659.9734 L 196.23607,658.66191 L 199.14261,658.66191 L 205.11521,655.57815 L 208.44709,651.48416 L 208.46479,651.46647 L 208.50023,651.44871 L 210.89283,649.81822 L 205.32788,642.16198 L 244.45976,459.19207 C 221.13962,454.83071 204.16029,450.80308 180.50642,445.10681 z "},"ca3":{"name":"CA-3","path":"M 127.56036,641.73664 L 125.2564,644.0406 L 126.70967,646.75221 L 127.43627,646.75221 C 127.83684,646.75221 128.8132,646.46229 129.6162,646.09644 L 131.08716,645.42297 L 132.4164,646.75221 L 134.79125,646.75221 L 135.97865,647.93961 L 135.46472,653.32733 L 136.36855,654.08944 C 136.86983,654.50542 137.29002,655.16403 137.29013,655.5604 L 137.29013,656.28706 L 135.58875,656.92508 L 135.58875,660.80634 L 134.17093,661.95835 L 128.94274,662.73815 L 128.25152,660.93043 L 126.62102,660.93043 L 127.18815,663.0926 L 125.36274,665.85736 L 120.94974,667.32832 L 116.73172,666.53082 L 119.63825,653.34508 L 119.07112,652.4235 L 115.45568,652.4235 L 112.28333,650.77525 L 108.08301,650.54488 L 104.68023,652.28171 L 103.26241,651.76772 L 103.26241,650.29676 C 102.43394,650.02749 101.57712,649.86081 100.72808,649.76508 L 98.654494,653.9299 L 99.363404,656.76555 L 105.03469,658.21881 L 107.63996,655.77307 L 114.87086,656.10983 L 115.2962,658.30746 L 112.70868,666.01683 L 115.59746,674.36429 L 119.23066,673.8326 L 120.24083,671.13874 L 122.29667,671.13874 L 124.90194,672.98191 L 125.53996,672.34389 C 125.88795,671.99584 126.4738,671.70587 126.8337,671.70587 C 127.19371,671.70587 128.1943,672.36833 129.06677,673.17683 L 130.66182,674.64785 L 137.36102,675.10864 L 139.16875,675.10864 C 140.16417,675.10518 142.16092,674.73536 143.61719,674.2934 L 146.27561,673.49584 L 148.63271,674.11617 L 148.63271,674.75419 L 149.89105,687.86904 L 159.63858,706.38931 L 160.24115,705.64495 C 160.56657,705.23089 161.57192,704.50009 162.49192,704.03221 C 163.41191,703.56433 164.87045,702.51417 165.71746,701.6928 L 167.24162,700.20409 L 167.63152,697.51023 L 170.20135,697.15577 C 176.07207,692.09409 180.63594,685.27097 187.00254,680.77993 L 190.56257,677.20101 L 197.68934,676.1897 L 202.7935,682.00277 L 205.34558,681.15208 C 206.74769,680.68125 208.53556,680.22738 209.31548,680.1596 C 210.09528,680.09178 211.2102,680.07567 211.79667,680.12416 L 212.86003,680.2128 L 212.25746,683.91683 L 214.19406,686.29957 L 215.55389,684.74983 L 215.55389,682.48132 L 218.10597,682.46357 L 220.40993,677.64297 L 219.63013,674.2402 C 219.19554,672.37701 218.83626,670.00959 218.85033,668.95881 L 218.88578,667.04475 L 221.34927,664.42178 L 211.19409,650.24357 L 210.68016,650.61577 L 208.46479,652.84884 C 207.05763,654.27613 205.91259,655.67207 205.91271,655.9326 L 205.91271,656.3934 L 205.11521,656.3934 C 204.67914,656.3934 203.21159,657.03516 201.85422,657.81122 L 199.39073,659.22904 L 196.27152,659.22904 L 196.27152,661.32033 L 194.10934,663.28753 L 190.84207,662.87647 L 190.60023,664.90033 L 188.62218,665.16898 L 187.65825,666.54852 L 170.48491,666.54852 C 169.22422,665.69397 167.72417,665.05481 166.78083,663.83696 C 166.78083,663.6079 165.79533,662.85231 164.5832,662.17102 L 162.36788,660.93043 L 159.40815,660.93043 L 159.40815,662.17102 C 156.61604,661.87849 153.76987,661.86517 151.02531,661.24944 L 149.57204,648.47129 L 127.56036,641.73664 z "},"oh2":{"name":"OH-2","path":"M 1909.9909,651.29417 L 1910.7885,655.4413 L 1905.5957,654.64375 L 1905.5957,652.42843 C 1904.4283,652.75946 1903.4593,653.89366 1902.6005,655.459 L 1903.9475,659.19853 L 1902.6714,661.60883 L 1899.6408,660.91761 L 1899.8712,662.92031 L 1895.3873,663.20387 L 1895.3873,665.45464 L 1898.0812,666.1281 L 1898.7192,670.02711 L 1896.8052,673.42989 L 1898.2762,674.36922 L 1899.1446,677.66566 L 1903.6107,678.03781 L 1906.1628,680.41266 L 1906.1628,681.91912 L 1910.0263,686.20803 L 1910.8239,690.39061 L 1912.1176,691.41853 L 1919.1713,692.18058 L 1922.6982,690.35516 L 1928.8657,691.13496 L 1930.8683,693.66929 L 1933.4558,694.50229 L 1934.4661,697.16071 L 1936.6105,697.39107 C 1937.7954,697.51437 1938.9641,697.65762 1939.198,697.71008 L 1939.6234,697.79873 L 1939.6234,694.41365 L 1944.1073,692.12744 L 1947.4923,692.12744 L 1948.2012,693.2617 L 1953.1813,693.2617 L 1955.9815,694.53774 L 1956.6018,696.94803 L 1958.4095,694.39595 L 1961.8123,694.39595 L 1963.8681,693.29714 L 1964.5239,689.94751 L 1966.8456,689.2209 L 1967.5368,686.45615 L 1969.0432,686.08394 C 1969.8665,685.88312 1971.1349,685.24238 1971.8788,684.66612 L 1973.2435,683.62051 L 1975.636,683.51417 L 1972.8004,682.71662 L 1972.4459,680.21774 C 1970.7721,680.2863 1969.1107,680.15081 1967.5899,678.99484 L 1965.3037,673.05774 L 1976.15,671.3386 L 1974.7854,657.74526 L 1948.2721,660.88216 L 1948.1303,669.72585 L 1937.6384,673.90843 L 1925.0553,675.68071 L 1923.0172,661.92784 L 1916.3888,662.61899 L 1915.1483,651.29417 L 1909.9909,651.29417 z "},"ne3":{"name":"NE-3","path":"M 973.80321,488.93583 C 972.04701,531.94628 970.29571,571.35562 968.53961,612.56989 C 1003.5264,614.57531 1027.3688,614.97406 1061.6373,615.90177 C 1061.4653,636.67581 1061.1706,656.91345 1060.7511,678.21503 C 1148.7496,679.14807 1208.0121,679.36784 1302.1176,676.70863 L 1300.9124,634.12078 L 1279.6273,634.72335 L 1278.2095,590.77088 L 1283.4555,590.68229 L 1282.7111,569.46811 L 1256.2333,570.07068 C 1256.1286,558.39298 1256.0166,555.94486 1255.4889,547.50959 L 1277.3234,547.50959 L 1276.4904,531.06286 L 1282.3212,530.37167 L 1282.3035,513.8186 L 1286.8582,513.48187 L 1286.8582,511.07157 L 1290.6155,511.67415 L 1292.1751,509.72464 L 1292.0865,505.52434 L 1290.1724,504.97494 L 1287.5849,505.63068 C 1286.4299,503.71484 1284.7311,503.10702 1282.6048,502.36969 L 1282.7643,500.43791 C 1278.0433,499.94989 1274.0549,500.78055 1256.6232,500.95187 L 1254.7623,499.95939 C 1253.0869,500.28896 1253.4626,502.52329 1252.8128,503.80524 L 1249.9641,506.42115 L 1245.2877,506.51919 L 1240.6373,502.17474 L 1238.2447,502.1393 C 1236.402,500.34589 1234.2885,499.79422 1233.1582,499.87078 C 1232.3195,498.4695 1230.6383,497.10484 1225.697,495.77682 L 1224.4564,492.78167 C 1138.7507,493.29459 1059.8681,492.37447 973.80321,488.93583 z "},"oh3":{"name":"OH-3","path":"M 1925.5783,675.11494 L 1923.5436,661.36445 L 1916.8639,661.97014 L 1915.7022,650.7284 L 1909.4171,650.7284 L 1910.0614,654.69831 L 1906.1628,654.00981 L 1906.1628,651.98403 L 1905.3492,651.67182 L 1903.3009,653.45232 L 1902.0661,655.54509 L 1903.3477,659.08907 L 1902.6386,660.93672 L 1899.6868,660.54994 L 1898.608,647.72574 C 1896.5629,646.35306 1896.7515,645.38651 1896.5216,644.34384 L 1891.0707,645.06693 L 1887.435,625.40889 L 1901.0675,622.87762 L 1902.2993,623.63899 L 1900.9448,631.9252 C 1902.8243,633.12757 1904.7037,633.54792 1906.5832,633.71454 L 1907.9813,643.42044 L 1933.3229,641.3507 L 1934.6736,651.44378 L 1944.7275,650.01632 L 1944.8651,655.77954 C 1945.7645,658.06779 1946.6638,657.99871 1947.5632,658.10108 L 1947.5632,669.28213 L 1937.6384,673.34708 L 1925.5783,675.11494 z "},"in5":{"name":"IN-5","path":"M 1829.1609,670.10169 L 1828.3457,659.80246 L 1826.2671,659.80246 L 1825.5017,654.69831 C 1823.8892,655.13641 1822.3474,655.46852 1821.0639,655.41311 L 1822.2746,662.48697 L 1818.4594,663.02875 L 1816.8738,653.69409 L 1808.0495,655.28704 L 1807.0782,653.89763 L 1816.4582,651.76438 L 1817.1167,649.14039 L 1820.6587,647.90563 C 1820.0961,644.42534 1819.6965,640.99937 1819.6299,637.68444 L 1813.0362,639.55478 L 1807.766,636.8663 L 1805.2139,637.16025 L 1801.0314,609.56342 L 1797.8412,608.76088 L 1797.8412,606.49237 L 1794.4639,606.71218 L 1793.2666,599.24219 L 1802.9454,597.86827 L 1798.9302,570.96765 L 1809.1838,569.36188 L 1809.1838,566.42244 L 1820.5263,564.44839 L 1820.5263,567.41527 L 1836.7656,564.71257 L 1840.1645,585.79217 C 1837.992,585.70307 1836.2215,586.09638 1835.0655,587.22712 L 1837.6515,603.53819 C 1831.2519,604.58851 1824.8092,605.42401 1818.4462,606.68201 L 1822.3807,633.71454 C 1827.1589,633.58773 1830.9739,632.22254 1835.9723,631.84801 L 1836.6802,635.8833 L 1835.7721,636.07595 L 1836.3134,640.82872 L 1834.5876,642.53498 L 1836.059,649.7006 L 1831.8689,648.90078 L 1831.8689,653.0103 L 1836.2523,652.30939 L 1838.7712,668.71909 L 1829.1609,670.10169 z "},"ca2":{"name":"CA-2","path":"M 173.74509,495.3505 L 168.40956,494.18177 L 180.03319,445.00347 L 87.391504,422.2699 L 84.988484,427.27831 L 82.914914,427.27831 L 82.188284,428.46573 L 80.203334,427.82771 L 78.732344,430.59247 L 77.420854,430.09623 L 77.190464,437.59296 L 72.919274,443.72504 L 74.148994,444.77668 L 73.646474,446.57127 L 74.744714,447.9785 L 75.365014,454.23464 L 73.202834,457.53736 L 79.724254,459.31479 L 79.919764,470.66365 L 80.799334,473.90177 L 79.080794,473.39953 L 78.360164,477.04385 L 76.192554,478.75753 L 78.324434,481.92418 L 75.034284,486.18299 L 72.188054,487.96821 L 69.906404,486.25969 L 67.088484,486.02386 L 68.098674,490.81444 L 67.549274,498.22256 L 56.188975,544.00048 L 83.978284,550.34524 L 83.978284,554.74048 L 81.497094,556.12189 L 80.697924,558.65593 L 80.646404,564.23989 L 81.762934,568.51108 L 80.308694,575.57733 L 86.813924,577.17754 C 86.626804,580.89824 85.388824,584.53246 84.261844,588.05932 C 83.726594,589.61893 82.878864,591.37884 82.365514,591.95833 L 81.426204,593.00395 L 81.621154,594.17365 C 81.727264,594.81428 82.184344,595.6939 82.631354,596.14091 C 83.078364,596.58792 83.828674,597.69813 84.297294,598.60434 L 85.147984,600.25259 L 86.122734,600.27028 C 86.660604,600.28021 87.590834,600.66296 88.196304,601.12098 L 89.295114,601.95398 L 91.669964,601.95398 L 92.981454,605.44533 L 92.626994,606.38467 C 92.434344,606.90773 92.091204,607.4693 91.864914,607.62526 C 91.638684,607.78122 91.379484,608.86206 91.280064,610.01781 L 90.702614,612.30918 L 93.584024,615.45873 L 93.074244,618.39458 L 95.754574,622.06833 L 92.875114,621.20091 L 91.740854,622.31741 L 92.786504,625.98605 C 94.127054,626.35083 95.531864,626.58772 96.685514,627.38612 C 96.838974,627.63447 97.358234,630.35879 97.855214,633.44731 L 98.759074,639.06546 L 99.219864,639.36672 C 99.469974,639.53413 99.973944,640.86269 100.3364,642.32645 C 100.6989,643.79027 100.99214,645.90566 100.99214,647.02296 L 100.99214,649.0611 L 103.82778,650.12447 L 103.82778,651.29417 L 104.82026,651.27642 C 105.36612,651.2665 106.28563,650.91289 106.85838,650.47892 L 107.90402,649.68137 C 111.41357,649.94112 112.85533,650.00072 115.63115,651.8613 L 119.58333,651.8613 L 120.20362,653.47404 C 119.28616,657.59837 118.3213,661.7125 117.43887,665.84454 C 118.28188,666.28293 119.99952,666.47774 120.93736,666.60245 L 125.14828,665.36605 L 126.53065,662.22909 L 125.82174,660.36823 L 127.64719,660.36823 L 127.64719,658.71999 L 126.90283,658.27694 C 126.48939,658.02752 125.9737,657.36364 125.76857,656.80593 L 125.3964,655.79576 L 126.38887,655.42355 C 126.92946,655.21887 127.69817,654.71203 128.10798,654.30704 L 128.85234,653.58038 L 129.34857,651.32962 L 126.93828,650.23081 L 127.48768,647.32427 L 126.22937,647.32427 L 124.70521,643.88605 L 127.41679,641.15675 L 133.17669,642.52137 L 136.13737,630.69419 L 138.65303,631.1611 L 139.6455,627.01397 C 142.03389,625.92503 143.48843,625.10292 146.61055,625.34803 L 150.21568,611.56391 L 153.7348,611.32833 L 153.88138,609.15974 L 157.08471,608.75952 L 160.17072,606.77457 L 163.34085,606.77457 C 163.60493,604.88626 163.87311,602.99823 164.08521,601.10328 C 164.1084,600.79136 163.91371,600.05857 163.65986,599.47279 L 163.19907,598.40942 L 164.35105,597.48784 C 164.98708,596.9819 165.82054,595.96555 166.19422,595.23702 C 166.5679,594.50843 166.73861,593.52973 166.58412,593.37513 L 163.54321,594.81683 L 153.27432,575.97239 L 151.65638,574.51975 L 153.06067,565.53559 L 155.91501,563.40692 L 156.84175,561.75645 L 155.596,559.13573 L 156.12768,557.64702 L 154.16045,556.21147 L 154.94026,553.78345 C 156.44003,554.03845 157.40619,554.22674 158.83927,553.74801 L 158.83927,551.47949 L 160.06214,551.47949 L 159.31778,548.07672 L 160.5761,548.07672 L 159.40639,545.8791 L 155.40105,544.44355 L 156.6062,537.99246 L 163.78392,539.67613 L 173.74509,495.3505 z "},"ca5":{"name":"CA-5","path":"M 131.59248,661.7172 L 129.38532,662.21667 L 128.74059,660.50531 L 128.1353,660.35434 L 128.1353,658.57798 L 126.51293,657.56956 L 125.9796,655.9313 L 127.65458,655.22023 L 129.09246,653.97578 L 129.89595,650.71179 L 127.48916,649.89302 L 127.86447,647.42811 L 130.90614,646.23663 C 131.94731,647.13417 133.40329,647.10332 134.54323,647.0922 L 135.46069,647.88454 L 134.91061,653.63227 L 136.6786,655.72759 L 135.01986,656.36408 L 135.01986,660.2307 L 134.31095,660.79335 C 133.92105,661.10278 132.69775,661.51848 131.59248,661.7172 z "},"md5":{"name":"MD-5","path":"M 2272.209,604.2978 L 2270.2594,604.91365 C 2269.1677,605.2664 2267.2962,606.24935 2266.0946,607.11127 L 2263.897,608.68863 L 2259.3776,606.33147 L 2258.8282,604.8782 L 2254.0574,604.06023 L 2253.4494,601.47821 L 2251.5271,601.83675 L 2250.7957,600.86605 L 2250.2981,600.92946 L 2250.4099,602.02487 C 2250.4052,602.76486 2250.0564,604.48677 2249.6479,605.85298 L 2248.9035,608.33417 L 2250.2504,608.92648 C 2250.9897,609.66585 2251.7226,611.02803 2251.8809,611.02803 L 2256.3293,608.21009 L 2257.3927,609.27345 L 2259.4308,608.19239 C 2260.8716,610.8436 2262.5326,613.40742 2263.4539,616.29167 L 2263.4539,617.19556 L 2255.2305,621.73259 L 2253.281,623.75298 C 2252.2061,624.86433 2251.107,625.77338 2250.853,625.77338 C 2250.6766,625.87654 2250.4515,625.98651 2250.1972,626.11008 L 2250.4277,627.82922 L 2246.9185,630.399 L 2247.6451,634.72335 L 2245.5362,636.26526 L 2243.0372,641.1213 L 2243.0372,642.55682 C 2243.0372,643.34637 2243.4518,645.26009 2243.9588,646.81028 L 2244.8804,649.62823 L 2247.078,650.81563 L 2249.7542,649.0611 L 2250.4808,646.75714 L 2252.1113,646.75714 L 2252.1113,646.11912 C 2252.1113,645.7658 2252.6625,645.00006 2253.3342,644.41774 C 2254.0058,643.8353 2254.7571,643.35437 2255.0001,643.35437 C 2255.2431,643.35437 2255.9378,644.05619 2256.542,644.91397 C 2257.1461,645.77176 2257.8001,647.02823 2258.013,647.71417 L 2258.4029,648.97246 L 2259.6612,649.34467 C 2260.347,649.54985 2261.2846,650.1577 2261.7525,650.70929 L 2262.6032,651.71952 L 2265.5983,652.41068 L 2266.2186,650.03583 L 2267.7073,650.53206 L 2268.0795,653.06645 L 2269.6391,653.66902 L 2273.9457,652.23345 L 2279.0499,652.49932 L 2281.5134,654.09437 L 2282.2754,656.48692 L 2284.0123,655.81345 L 2285.5719,657.10724 L 2285.5719,655.26407 L 2287.3087,655.26407 L 2287.9645,656.96546 L 2289.9317,656.96546 L 2290.9596,658.09972 C 2291.5242,658.72356 2292.2371,659.23397 2292.537,659.23397 L 2293.0686,659.23397 L 2291.6863,653.58038 L 2286.7061,648.61801 L 2286.7061,645.55199 L 2284.9516,643.77972 L 2285.6428,640.58962 L 2284.5972,639.5617 C 2284.0205,638.99553 2282.4563,637.78023 2281.1235,636.86784 C 2279.7906,635.95527 2278.2463,634.55163 2277.6853,633.74863 L 2276.6574,632.29536 L 2275.913,627.47477 L 2273.6622,623.78843 L 2273.6622,621.23635 L 2273.1128,621.23635 C 2272.8118,621.23635 2272.3095,620.7582 2271.9962,620.17298 L 2271.4291,619.10962 L 2272.5457,616.80566 C 2273.1599,615.53438 2273.6622,614.22602 2273.6622,613.89912 L 2273.6622,613.29655 L 2271.8722,613.29655 L 2272.2621,611.45338 C 2272.4789,610.43964 2272.9316,609.28411 2273.2546,608.88355 L 2273.8394,608.15695 L 2272.209,604.2978 z "},"md4":{"name":"MD-4","path":"M 2236.3912,593.96098 L 2236.6748,596.53081 C 2235.7521,597.93059 2235.5753,598.41243 2234.4949,599.11833 L 2233.9277,599.11833 L 2232.8112,596.1586 L 2229.3376,596.77893 C 2229.5401,598.49982 2230.1799,600.14308 2230.5781,601.82989 L 2232.4745,602.57424 L 2233.8746,600.53615 L 2234.7784,601.97167 L 2236.1785,600.85516 L 2238.9787,604.16929 L 2242.4701,605.90612 L 2243.1081,603.74395 L 2244.5614,602.5211 L 2248.1946,603.24771 L 2247.0958,608.26328 L 2246.5286,609.34434 L 2248.2105,609.10586 L 2250.7085,610.59361 L 2251.922,612.25479 L 2251.7959,613.61528 L 2253.8127,614.55484 L 2253.8127,615.21061 C 2253.8119,615.56711 2252.8968,617.37262 2251.7746,619.23365 L 2249.7364,622.61873 L 2250.1441,625.77338 C 2250.4309,625.67805 2250.7598,625.55277 2251.1011,625.33028 C 2252.8734,623.68209 2254.5059,621.36305 2256.4179,620.38566 L 2262.8867,616.98289 L 2262.869,616.13219 C 2262.8661,615.66431 2262.0397,613.81791 2261.0259,612.0382 L 2259.1827,608.81266 L 2257.5345,609.82289 L 2256.2939,608.79497 L 2252.0482,611.59908 L 2250.1816,609.26358 L 2248.3718,608.26328 L 2249.9137,602.9819 L 2249.5238,601.10328 L 2247.1844,601.42229 C 2245.1038,599.0923 2243.1586,597.08336 2240.8574,595.85734 C 2240.1805,595.12053 2240.2344,595.08111 2238.3584,595.11299 C 2237.4756,595.12847 2236.9441,594.68475 2236.3912,593.96098 z "},"ia5":{"name":"IA-5","path":"M 1384.6348,455.67019 L 1310.784,459.1793 L 1310.2523,461.9086 L 1314.0982,465.08098 L 1313.6374,471.12444 L 1311.741,472.17009 L 1313.0525,473.72969 L 1312.3613,474.84623 L 1315.9945,475.20068 L 1316.473,477.18563 C 1316.7299,478.27736 1317.2073,479.63913 1317.5364,480.21623 L 1318.139,481.26187 L 1317.3769,485.71029 L 1315.3742,486.79138 L 1315.8172,492.9589 L 1314.0804,494.67801 L 1314.7539,496.41484 L 1314.2931,497.14147 C 1314.0463,497.54083 1313.8218,498.33375 1313.7792,498.91375 C 1313.7364,499.49375 1313.4277,500.14402 1313.1057,500.3493 C 1312.7837,500.55458 1311.974,501.94154 1311.298,503.43306 L 1310.0574,506.14464 L 1310.4473,506.76494 L 1315.3033,511.42603 C 1315.9439,513.0806 1316.7817,514.69407 1317.0401,516.4593 C 1316.9684,516.69324 1317.1505,516.88463 1317.4477,516.88464 L 1317.9972,516.88464 L 1318.0503,520.85454 L 1321.4708,520.85454 L 1322.7469,523.63702 L 1321.0101,526.29543 L 1321.1873,529.73365 L 1322.162,530.72613 C 1322.7049,531.26906 1323.1545,532.03024 1323.1545,532.42751 L 1323.1545,533.15415 L 1325.423,535.20999 L 1325.423,537.79751 L 1324.2887,538.50642 L 1324.3242,540.42048 L 1325.299,541.59019 C 1325.8344,542.2292 1326.7203,542.92309 1327.2662,543.13207 L 1328.2586,543.50425 L 1328.2586,548.00583 L 1330.5272,548.71474 L 1330.5272,550.34524 L 1332.2285,550.34524 L 1332.2285,551.97573 L 1334.7806,552.33019 L 1334.8693,556.30009 L 1333.9299,557.5584 L 1335.0642,559.01167 C 1335.6896,559.80678 1336.1984,560.8199 1336.1984,561.28019 L 1336.1984,562.13088 L 1338.467,562.71573 L 1338.467,563.76137 C 1338.4624,564.33644 1338.1237,565.44503 1337.7226,566.22484 L 1336.996,567.64269 L 1338.6442,568.90098 L 1337.8821,570.88593 L 1336.1984,570.23021 L 1336.1984,570.74415 C 1336.1984,571.02782 1336.4902,571.43394 1336.8365,571.64804 L 1337.4568,572.03794 L 1336.8542,575.79516 L 1338.4493,577.12434 L 1337.8289,579.64098 C 1338.3729,580.20527 1339.0428,580.59392 1339.6721,580.75754 L 1339.8848,578.98526 L 1342.1533,578.98526 L 1342.5255,581.60823 L 1341.2671,583.11464 L 1342.1887,583.4514 C 1342.6901,583.64377 1343.7224,583.80586 1344.4927,583.80586 L 1345.8928,583.80586 L 1345.5561,592.54315 L 1348.3917,593.21662 L 1348.7462,595.60922 L 1346.6903,597.13338 L 1346.6903,600.53615 L 1350.0754,601.10328 L 1350.4653,603.08823 L 1348.5512,603.08823 L 1348.9588,604.08071 C 1349.1837,604.62657 1349.4643,606.82714 1349.5792,608.97219 L 1349.7918,612.8712 L 1351.6704,614.25358 L 1351.1033,617.26645 L 1352.6452,618.54249 L 1352.6452,621.11226 L 1350.9615,621.76803 L 1351.2097,622.49464 C 1351.3429,622.89639 1351.5659,624.18916 1351.7059,625.36573 L 1351.954,627.49246 L 1349.8095,628.64447 L 1349.8273,629.33563 C 1349.8384,629.71453 1350.4127,630.68347 1351.1033,631.48011 C 1351.7939,632.2767 1353.0654,633.35544 1353.9212,633.89041 C 1354.777,634.42527 1355.421,635.06244 1355.3568,635.29048 C 1355.2926,635.51852 1355.6097,636.29044 1356.0657,637.00962 L 1356.8986,638.3211 C 1391.536,637.22484 1424.3371,635.87457 1458.2197,632.77385 L 1455.5259,597.47009 L 1424.1388,599.96902 L 1422.2425,571.98474 L 1420.1335,571.43536 L 1419.3891,555.85702 L 1403.1374,556.28236 L 1402.393,534.97959 L 1391.9543,535.74167 L 1391.2099,519.15316 L 1388.4806,519.15316 L 1384.6348,455.67019 z "},"ia2":{"name":"IA-2","path":"M 1550.9453,518.49741 L 1530.1565,520.50009 L 1534.1264,569.62764 L 1529.0222,569.62764 L 1530.7236,591.58613 L 1498.8226,594.22685 L 1500.2227,610.30137 L 1457.4222,613.93457 L 1458.84,632.7384 C 1491.2135,630.24014 1515.4522,627.29816 1543.9802,623.91246 L 1547.4539,627.95325 L 1549.6161,628.32546 L 1549.7401,629.2116 C 1549.8119,629.70302 1550.5088,630.78759 1551.282,631.6219 L 1552.6821,633.14605 L 1554.543,633.14605 L 1554.543,634.81199 L 1557.0242,637.11595 L 1560.6042,637.11595 L 1560.4978,629.86731 L 1558.3002,627.43932 L 1560.6751,623.2213 L 1564.3437,620.66922 L 1568.0832,620.66922 L 1571.0961,618.0817 L 1571.61,608.5114 L 1572.4253,607.60751 C 1572.8802,607.10481 1573.2582,606.41858 1573.2582,606.1011 C 1573.2582,605.78357 1574.1409,604.61256 1575.2255,603.49583 L 1577.2104,601.47543 L 1576.8382,592.02922 L 1574.2862,587.77576 L 1572.5139,587.77576 L 1568.1186,583.16784 L 1570.7062,571.20494 L 1573.6481,569.69853 L 1576.0407,570.3188 L 1579.3903,567.92625 L 1582.4564,567.92625 C 1581.8689,564.92261 1581.5493,562.90081 1581.7652,559.98642 L 1576.218,559.98642 L 1574.2559,538.43489 L 1553.1252,540.0483 L 1550.9453,518.49741 z "},"oh4":{"name":"OH-4","path":"M 1922.964,540.10147 L 1902.8663,543.82325 L 1905.0994,558.46226 L 1901.2713,559.41929 L 1899.0737,561.08523 C 1897.1452,560.95855 1895.6433,561.25848 1894.6962,562.11316 L 1895.4228,564.39939 L 1884.6119,566.31345 L 1884.6119,569.06051 L 1882.2193,569.06051 L 1883.6372,577.56744 L 1881.2091,577.56744 L 1884.2397,597.13338 L 1885.6221,598.83477 L 1886.9867,607.05813 C 1893.8778,605.63407 1899.6644,605.49853 1906.0033,604.71873 L 1907.297,613.91682 C 1915.1664,612.85022 1923.121,612.51533 1930.9747,611.34704 L 1929.7873,598.48031 L 1927.1465,599.13603 C 1926.6857,593.14766 1926.0475,587.17483 1925.6224,581.18289 L 1938.5955,578.61306 L 1939.3576,582.72474 C 1943.2385,582.04135 1948.7446,581.84053 1954.8295,581.8918 L 1955.184,584.94011 L 1967.7849,583.68177 L 1965.6227,571.04546 C 1970.125,570.11747 1975.253,569.40328 1979.6946,568.20982 L 1977.621,558.51543 L 1975.3525,558.28504 L 1975.3525,555.39623 L 1972.6941,552.89731 L 1970.9927,542.38771 L 1957.4525,544.83345 L 1960.2527,562.44989 L 1933.3141,567.9617 L 1932.1976,563.40692 L 1933.4736,561.01434 L 1931.1873,558.5686 L 1929.3619,550.20345 L 1925.0021,550.91236 L 1922.964,540.10147 z "},"ia3":{"name":"IA-3","path":"M 1495.5616,507.08395 L 1474.5778,508.53722 L 1474.5778,513.39326 L 1475.9425,513.83632 L 1477.0236,529.09563 L 1487.9054,529.07791 L 1489.5182,550.69969 L 1441.5426,554.31514 L 1442.3756,569.84031 L 1443.9529,571.41761 L 1443.9529,575.60018 L 1458.397,574.60771 L 1465.3443,575.86605 L 1466.7976,596.84982 L 1456.3411,597.57642 L 1457.3868,613.2611 L 1499.6556,609.76969 L 1498.2378,593.67741 L 1530.1033,590.82407 C 1530.021,583.51656 1528.7093,576.35503 1528.4551,569.06051 L 1533.5592,569.06051 L 1529.4475,520.50009 L 1497.4225,523.12306 L 1496.7491,512.6489 L 1495.5616,512.259 L 1495.5616,507.08395 z "},"ne2":{"name":"NE-2","path":"M 1346.4516,610.11547 L 1346.2744,608.19375 L 1342.9684,608.19375 L 1342.3583,606.60386 L 1338.5773,605.89456 L 1336.8199,603.21243 L 1327.6802,602.40342 L 1325.4172,599.52649 L 1327.0521,597.29496 L 1323.7945,594.50429 L 1323.6305,592.06365 L 1321.0559,590.25383 L 1344.7564,588.94467 L 1344.5292,593.13904 L 1347.1733,593.76328 L 1347.6828,595.43336 L 1345.8023,596.44307 L 1345.6103,601.67177 L 1347.9855,602.01817 L 1348.7237,606.50825 L 1348.6061,609.69931 L 1347.5162,610.44162 L 1346.4516,610.11547 z "},"in2":{"name":"IN-2","path":"M 1779.8092,608.87941 L 1778.4494,600.76317 L 1774.8877,601.10464 L 1774.1659,596.00048 L 1775.3682,594.5361 L 1774.153,592.7856 L 1774.7212,590.61276 L 1776.8574,590.61276 L 1776.8574,586.64286 L 1772.269,586.64286 L 1772.9628,582.94473 L 1771.732,579.70744 L 1764.5641,580.47505 C 1762.4303,566.37432 1761.474,559.01791 1760.4107,546.84413 L 1755.9817,547.59242 C 1755.1472,542.5188 1754.741,539.6933 1754.4418,533.97737 L 1761.1901,528.51215 L 1798.6329,523.02291 L 1799.2295,523.78258 C 1799.5577,524.2004 1801.0384,525.11315 1802.52,525.81092 L 1805.2139,527.07959 C 1805.3578,528.91801 1804.9663,529.9 1804.0397,531.63136 L 1799.0656,531.63136 L 1798.3462,534.90645 C 1799.6375,543.73132 1800.6075,550.09397 1802.2199,558.8118 L 1801.0151,559.21338 L 1802.0947,564.80839 L 1804.5022,564.47801 L 1805.1077,566.79334 L 1808.6166,566.79334 L 1808.6166,568.84171 L 1798.3372,570.36479 L 1802.4851,597.27204 L 1792.6807,598.7062 L 1793.9688,606.85068 L 1779.8092,608.87941 z "},"md2":{"name":"MD-2","path":"M 2279.9538,564.43484 L 2278.6954,565.05514 L 2278.7663,566.56157 L 2273.3786,572.37464 L 2271.819,572.76454 C 2270.9583,572.97886 2270.1253,573.35549 2269.9758,573.59754 L 2269.71,574.04058 L 2271.3582,575.40526 L 2266.5199,579.94229 L 2264.1451,577.88645 L 2261.2562,579.4283 L 2259.4131,578.7017 L 2259.6257,577.0712 L 2260.5828,577.19523 L 2259.2358,575.75972 L 2256.9851,576.92942 C 2257.8746,577.86433 2258.4542,578.67748 2259.0764,579.37516 L 2256.8787,579.12704 L 2255.4786,578.55992 L 2254.9469,578.15226 C 2254.1671,577.54941 2252.9396,576.7341 2252.2176,576.34454 L 2250.9061,575.63563 L 2249.9137,577.23068 L 2248.8149,578.61306 L 2246.316,578.63081 L 2245.7311,580.2613 L 2246.2451,580.54487 C 2246.4827,580.92904 2246.743,581.63092 2246.8299,582.10447 C 2246.9169,582.5778 2246.7791,583.93896 2247.1489,584.6388 L 2247.8578,585.98573 L 2249.3465,584.72744 L 2250.5694,586.35794 L 2252.7316,585.24137 L 2252.6784,584.692 C 2252.6784,584.30941 2252.521,583.84329 2252.324,583.64632 L 2251.9695,583.27417 L 2249.701,584.49702 L 2248.7085,582.95516 L 2249.1693,578.94982 C 2249.6094,578.27335 2249.9166,577.78301 2250.5694,577.4788 L 2252.5721,578.20546 C 2254.0323,578.74015 2255.4857,579.19544 2255.7976,579.21563 L 2257.7826,579.60553 L 2259.4308,579.74731 C 2259.8268,580.14549 2260.258,580.50437 2260.8132,580.81068 L 2260.4764,583.4514 C 2261.1591,583.045 2261.6476,582.88484 2262.3196,582.99061 L 2262.6209,582.12217 C 2262.4909,581.99388 2262.3699,581.83809 2262.2133,581.64368 L 2261.7525,580.97021 L 2262.5677,579.78276 L 2265.8287,580.86388 C 2265.0149,581.71735 2264.7481,582.34136 2263.4539,582.52982 L 2263.064,583.18553 L 2262.7273,583.859 L 2262.6386,585.50724 C 2262.6813,586.59897 2262.5953,587.27833 2262.0892,587.33266 L 2262.1424,593.46474 L 2258.5978,593.57108 L 2257.2686,594.68764 L 2258.5624,596.76117 L 2257.1978,599.77405 L 2257.818,600.76652 L 2259.608,600.07536 L 2259.0409,595.85734 L 2263.1172,593.92553 L 2264.4286,595.71556 L 2268.558,595.71556 L 2268.558,595.32566 C 2268.558,595.10873 2267.9008,594.22543 2267.0871,593.37615 L 2265.5983,591.83424 L 2266.2895,590.71774 L 2270.543,591.12533 L 2271.8545,588.34289 L 2271.2342,583.73497 L 2273.5913,583.13239 L 2272.5634,580.43853 L 2273.7154,579.72962 L 2275.3636,580.36764 L 2275.3636,582.17536 L 2276.551,581.43101 L 2276.2143,578.98526 L 2278.1638,578.96751 L 2279.0145,577.85101 C 2279.4832,577.23051 2279.8729,576.37817 2279.8829,575.97239 L 2279.9006,575.24573 L 2284.03,571.47081 L 2283.197,570.12388 L 2281.6906,570.69101 L 2280.4855,569.25543 L 2281.5134,565.71088 L 2279.9538,564.43484 z "},"ia4":{"name":"IA-4","path":"M 1385.4323,455.42207 L 1389.03,518.51514 L 1391.5821,518.39108 L 1392.3442,535.17454 L 1402.9601,534.37702 C 1403.5802,541.31639 1403.0843,549.07772 1404.1121,555.9988 L 1419.9563,555.28989 L 1420.7006,570.86823 L 1422.9691,571.47081 L 1424.7592,599.13603 C 1443.169,597.59253 1451.7862,596.88878 1466.2127,596.1586 L 1464.7949,576.53952 L 1458.84,575.54704 L 1443.3858,576.45088 L 1443.3858,571.98474 L 1441.8085,570.40744 L 1440.9932,553.87207 L 1488.9156,550.13256 L 1487.4269,529.45009 L 1476.5628,529.64504 L 1475.3901,514.07021 L 1474.1879,513.76543 C 1473.8462,504.66022 1472.5839,495.57053 1472.5043,486.45464 L 1514.9149,482.82147 L 1514.1351,472.20553 L 1554.4544,468.53692 L 1554.419,465.55949 C 1555.0777,464.29436 1555.8322,463.06619 1556.2444,461.69593 C 1556.2463,461.44118 1556.9163,460.35653 1557.7331,459.28563 L 1558.7256,457.33613 L 1556.3685,454.07514 L 1551.4238,452.39147 L 1551.7428,448.42157 L 1550.0946,447.05692 L 1550.7149,443.15791 C 1495.7303,448.60829 1440.5887,452.23443 1385.4323,455.42207 z "},"oh5":{"name":"OH-5","path":"M 1855.2984,518.28474 L 1867.5803,592.87992 L 1871.0008,592.1887 L 1871.0008,589.58348 L 1875.5378,588.80368 L 1874.8821,586.18071 L 1881.8649,584.83378 L 1880.518,577.00031 L 1883.0346,577.00031 L 1881.6699,568.56427 L 1884.0448,568.36929 L 1884.0448,565.78177 L 1894.6607,563.90316 L 1893.7568,561.63464 L 1895.476,560.92573 C 1896.2058,560.73033 1897.265,560.57554 1897.8331,560.57127 L 1898.8787,560.55355 L 1900.5801,558.85217 L 1904.4437,557.85969 L 1901.8207,543.14979 L 1923.7083,539.17989 L 1925.516,550.22118 L 1929.9822,549.63632 L 1931.719,558.53316 L 1934.0407,561.01434 L 1932.7647,563.40692 L 1933.509,567.39457 L 1959.4729,562.25494 L 1956.7081,544.44355 L 1971.3471,541.73197 L 1972.4459,547.15514 L 1984.8519,545.57781 L 1984.3025,540.13692 L 1982.1226,539.97741 L 1981.5909,536.02524 L 1973.8815,537.38989 L 1971.2762,524.75355 L 1971.1168,523.99147 L 1948.2012,527.66009 L 1946.3403,519.15316 L 1941.3248,520.35831 L 1941.3248,518.58603 L 1924.7362,521.49256 L 1923.1443,520.53459 L 1923.1766,519.22405 L 1919.4903,518.86959 L 1918.5176,512.32471 L 1911.391,513.60593 L 1910.7176,516.60108 L 1905.5602,520.35831 L 1901.9594,520.23001 L 1900.5269,517.18593 L 1897.2305,517.52266 L 1896.4976,509.94986 L 1855.2984,518.28474 z "},"nj2":{"name":"NJ-2","path":"M 2342.6834,588.91138 L 2343.1268,583.949 C 2343.3706,581.21969 2343.5531,578.13996 2343.5323,577.10512 L 2343.4943,575.22367 L 2342.0458,573.47827 L 2336.0766,573.97326 L 2335.6881,572.80764 L 2333.7404,573.59533 C 2332.6693,574.02856 2331.5888,574.717 2331.3393,575.12521 C 2331.0899,575.53343 2330.6605,575.86742 2330.3851,575.86742 L 2329.8844,575.86742 L 2329.1515,573.55852 L 2323.3459,570.75781 L 2321.3641,571.38682 L 2319.4754,568.50433 L 2316.7745,569.18216 L 2316.0755,567.36049 L 2313.9926,567.36049 L 2312.4581,565.1697 L 2307.9195,563.75318 L 2308.2451,557.18566 L 2306.975,556.51688 C 2306.2765,556.14904 2305.5358,555.58819 2305.329,555.27053 L 2304.9531,554.69297 L 2306.481,552.33156 L 2307.2671,545.26188 L 2308.768,543.2575 L 2310.5899,545.80958 L 2312.187,545.80958 L 2312.7645,544.8171 C 2313.0822,544.27124 2313.7251,543.33479 2314.1933,542.73609 L 2315.0445,541.64756 L 2317.2024,543.60042 L 2319.9649,540.07064 L 2323.092,541.49545 L 2322.1517,545.49332 L 2326.6755,545.8624 L 2334.39,549.81856 L 2334.9473,549.47414 C 2335.2538,549.28471 2336.2665,547.62036 2337.1978,545.77558 L 2338.8909,542.42144 L 2336.0668,540.57095 C 2334.5134,539.55319 2333.124,538.42285 2332.9791,538.05908 L 2332.7156,537.39769 L 2336.4783,535.61217 L 2336.569,533.58927 L 2337.988,533.15354 L 2342.5683,534.03506 L 2345.0248,536.27635 L 2347.1994,535.58721 C 2348.3953,535.20817 2350.2349,534.53492 2351.2872,534.09109 L 2353.2006,533.28413 L 2353.781,533.86448 L 2352.939,535.15821 C 2352.4759,535.86977 2351.9179,537.41697 2351.6989,538.59644 L 2351.3007,540.74093 L 2354.9526,546.37671 L 2355.8779,546.37671 C 2356.3869,546.37671 2357.0619,546.11812 2357.3779,545.80207 L 2357.9525,545.22743 L 2360.5894,548.03424 L 2362.7739,546.86512 L 2364.3918,548.20787 L 2364.039,549.70259 C 2363.845,550.52468 2363.0181,552.47138 2362.2013,554.0286 L 2360.7164,556.8599 L 2359.6798,557.63624 C 2359.1096,558.06323 2357.537,560.13829 2356.1851,562.24749 L 2353.727,566.08239 L 2352.568,570.266 C 2351.9306,572.56695 2351.4521,574.83241 2351.5047,575.30029 C 2351.5573,575.76817 2351.146,577.68223 2350.5906,579.55375 C 2350.0352,581.42528 2349.1514,583.81204 2348.6266,584.85765 L 2347.6725,586.75873 L 2346.3199,587.83508 L 2344.9674,588.91138 L 2342.6834,588.91138 z "},"md3":{"name":"MD-3","path":"M 2250.3568,578.01048 L 2250.0554,578.29405 C 2249.8969,578.45262 2249.6481,579.52386 2249.5061,580.6689 L 2249.2579,582.74249 L 2249.9137,583.80586 L 2252.2708,582.54751 L 2253.2987,584.35523 L 2258.332,583.87675 L 2258.651,584.40843 C 2258.8311,584.69988 2259.2259,584.94011 2259.5194,584.94011 C 2259.813,584.94011 2260.0818,584.74871 2260.122,584.51477 C 2260.2405,583.30797 2260.3261,582.09296 2260.3879,580.88157 L 2259.4131,580.36764 C 2258.8729,580.07852 2257.8184,579.83596 2257.0737,579.83596 C 2256.3289,579.83596 2254.5091,579.4173 2253.0329,578.91437 L 2250.3568,578.01048 z M 2262.7981,580.29675 L 2262.2133,580.89932 L 2262.5855,581.5019 C 2262.6664,581.6329 2262.8035,581.7393 2262.9576,581.8386 C 2262.7964,582.26531 2262.5146,583.18553 2262.5146,583.18553 L 2262.5146,583.69952 L 2263.383,582.05127 C 2263.501,582.08485 2263.6245,582.10447 2263.7374,582.10447 C 2264.1685,582.10447 2264.6751,581.86219 2264.854,581.57279 L 2265.173,581.0588 L 2262.7981,580.29675 z M 2261.1677,587.20863 C 2260.987,587.20863 2260.1877,587.91045 2259.3954,588.76823 C 2258.6029,589.62601 2257.9348,590.26041 2257.7294,590.84177 L 2257.5522,592.36593 L 2254.752,591.71021 L 2253.8304,593.94328 L 2251.4201,594.82942 L 2251.3492,596.37127 L 2249.0275,597.98407 L 2252.8734,597.98407 L 2254.876,596.17635 L 2256.1698,596.97385 L 2254.0431,601.56407 L 2254.4861,603.58447 L 2258.9168,604.32883 L 2259.6257,605.53398 C 2259.8749,606.03191 2260.1279,606.33538 2263.8261,608.17464 L 2266.0591,606.54414 C 2267.4592,605.7348 2268.4871,605.04953 2270.2594,604.59464 L 2272.1558,604.0984 L 2272.014,603.72625 L 2270.6671,602.84011 L 2269.3201,601.95398 L 2263.9324,603.79714 L 2260.6891,599.96902 C 2260.9214,598.96248 2261.1508,597.95481 2261.4689,596.97385 L 2266.5731,597.93088 L 2268.239,596.28269 L 2263.4539,596.28269 L 2263.4539,595.432 C 2263.4539,594.96411 2263.3064,594.5813 2263.1349,594.5813 L 2259.6789,596.2118 L 2260.2106,599.88038 C 2259.4346,600.48437 2258.6281,601.00937 2257.7294,601.38685 C 2257.5104,601.38685 2257.1837,601.00772 2257.0028,600.53615 L 2256.6838,599.66771 L 2257.9952,596.76117 L 2256.7015,594.68764 L 2258.456,593.21662 L 2261.4512,593.16348 L 2261.4867,587.20863 L 2261.1677,587.20863 z "},"in3":{"name":"IN-3","path":"M 1838.1546,569.69048 L 1837.3866,563.90131 L 1821.0935,566.81495 C 1821.1005,565.85926 1821.1337,564.89027 1820.9517,563.96146 L 1805.5557,566.43134 L 1805.2139,563.82547 L 1802.4491,564.35399 L 1801.6877,559.84744 L 1802.8455,559.13185 L 1798.9031,534.8326 L 1799.5642,532.19849 L 1804.4647,532.19849 C 1805.2453,530.38682 1805.8209,528.91704 1805.781,526.76349 L 1799.3561,523.03593 L 1853.296,514.87172 L 1860.0379,554.60007 L 1856.2824,555.64422 L 1856.9694,560.49661 L 1849.3413,561.24889 L 1844.9129,564.02182 L 1844.9129,568.39504 L 1838.1546,569.69048 z "},"pa4":{"name":"PA-4","path":"M 2064.9804,556.01789 L 2055.5036,510.49027 L 2057.2119,510.04205 L 2057.5465,510.58343 C 2057.7305,510.88118 2058.5802,511.30027 2059.4347,511.51473 L 2060.9883,511.90467 L 2061.9315,515.46819 L 2073.7493,514.64802 L 2075.9579,516.32386 L 2073.6488,521.13948 L 2075.5146,527.66146 L 2079.0606,527.66146 L 2081.1455,536.16839 L 2098.5707,532.14116 L 2099.8629,538.54849 C 2099.2651,540.3011 2098.6099,541.53777 2097.2094,542.43048 L 2097.5114,545.21397 L 2099.1231,544.4449 C 2101.0638,545.83894 2102.9719,547.20553 2105.0832,548.36925 L 2108.0606,549.95975 L 2108.0606,552.04799 L 2102.4934,552.74663 L 2102.9595,550.77151 L 2099.2155,549.84053 L 2096.711,547.17314 L 2095.0517,547.11582 L 2092.6301,548.61654 L 2079.0607,549.8862 L 2076.6408,547.90611 L 2071.5638,555.09601 C 2070.5908,553.31258 2070.2484,552.21707 2069.5048,549.74573 L 2066.082,551.51573 L 2068.0776,555.44463 C 2066.8733,555.92235 2066.2995,556.05611 2064.9804,556.01789 z "},"il2":{"name":"IL-2","path":"M 1723.0567,553.74938 L 1722.3366,551.48086 L 1720.1446,551.48086 L 1720.1446,548.12368 L 1724.6108,541.06012 L 1723.9857,537.93494 L 1726.9472,535.1903 L 1727.6442,531.70546 L 1729.6392,533.61631 L 1731.6476,549.24088 L 1731.26,549.62854 C 1731.0468,549.84175 1729.6709,550.15434 1728.2023,550.32319 L 1725.1475,550.43777 L 1725.1734,553.74938 L 1723.0567,553.74938 z "},"nj3":{"name":"NJ-3","path":"M 2360.5358,547.41008 L 2357.9525,544.6603 L 2357.3779,545.23494 C 2357.0619,545.55099 2356.4077,545.80026 2355.9242,545.78887 L 2355.0451,545.76817 L 2351.8662,540.75009 L 2352.2652,538.60102 C 2352.4846,537.41903 2353.0464,535.86463 2353.5136,535.14679 L 2354.3631,533.84164 L 2353.2263,532.70479 L 2345.0248,535.70923 L 2342.5683,533.48016 L 2337.8378,532.76663 L 2336.0463,533.4541 L 2336.0375,535.3177 C 2334.8939,535.84696 2333.7691,536.43286 2332.542,536.73552 C 2332.2986,536.73552 2331.5787,535.71469 2330.9422,534.467 C 2330.3056,533.21932 2329.5986,532.20753 2329.3711,532.21859 L 2326.1597,533.78757 C 2325.2359,532.50065 2324.1703,531.28423 2323.5695,529.80899 L 2323.5695,529.34124 L 2326.2814,530.02188 L 2327.1344,529.71453 L 2326.916,528.99516 L 2322.5119,525.61029 L 2326.9488,520.41948 L 2331.665,522.7529 L 2333.1075,520.78023 C 2334.8025,521.63018 2336.4551,522.59739 2338.2827,523.12443 L 2338.8629,523.12443 L 2341.7139,517.49826 L 2340.3873,514.58673 L 2341.5823,513.3917 C 2345.2067,517.86585 2348.2817,522.82687 2352.1849,527.07391 L 2352.9195,527.68356 L 2359.2286,516.67922 C 2358.4949,515.64211 2357.6933,514.62106 2357.1333,513.4944 C 2360.2597,514.07769 2363.4681,514.40327 2366.498,515.38948 L 2368.8813,528.22254 L 2368.3733,531.34379 C 2367.426,536.13829 2366.2853,540.91466 2364.8122,545.57688 L 2360.5358,547.41008 z "},"il3":{"name":"IL-3","path":"M 1717.8622,539.24612 C 1716.0249,539.35851 1714.3372,538.81231 1713.8243,538.65778 L 1712.8917,538.3768 L 1711.5457,529.5458 L 1714.9283,530.04226 L 1715.669,527.70855 C 1717.5213,529.00658 1718.4883,530.028 1720.9214,532.63992 C 1720.3665,534.03157 1720.6275,534.74552 1720.446,535.80524 L 1721.7684,535.83167 C 1722.4349,536.00595 1722.6028,536.35168 1722.598,536.54924 L 1722.005,538.50238 L 1717.8622,539.24612 z "},"pa3":{"name":"PA-3","path":"M 2074.9899,440.51722 C 2074.916,440.44332 2072.3742,442.6728 2069.3364,445.46187 C 2066.2985,448.25094 2063.5651,450.53057 2063.2574,450.53058 C 2062.9498,450.53058 2062.6903,450.27536 2062.6903,449.96346 L 2062.6903,449.39633 L 2061.113,449.39633 L 2060.7585,450.30019 C 2060.5691,450.79358 2060.4218,451.6586 2060.4218,452.23197 L 2060.4218,453.27761 L 2057.1608,456.21959 C 2055.3673,457.83776 2052.1772,460.31557 2050.0717,461.73138 L 2046.2436,464.30118 L 2046.2436,465.25821 C 2046.2436,465.7832 2048.2852,475.98585 2050.7806,487.92563 C 2053.276,499.86539 2055.3176,509.75858 2055.3176,509.90187 C 2055.3176,510.04517 2055.86,509.98815 2056.5228,509.77781 L 2057.7279,509.38791 L 2058.0824,509.93732 C 2058.2774,510.23446 2059.2025,510.82618 2060.1382,511.26652 L 2061.8396,512.08177 L 2062.389,514.95286 L 2073.7493,514.06672 L 2076.5318,516.21118 L 2074.3164,521.10266 L 2076.0001,527.09296 L 2079.6156,527.09296 L 2081.4942,535.65306 L 2099.0574,531.36415 L 2099.5005,533.65038 L 2101.45,530.49573 L 2103.4881,530.49573 L 2102.3184,527.41197 L 2104.1084,526.13593 L 2108.7341,526.15365 L 2108.0606,531.7186 L 2110.595,531.61227 L 2111.4279,527.62464 L 2119.2791,527.66009 L 2119.9172,525.39157 C 2118.4713,519.3885 2116.9828,510.58501 2116.4966,508.94484 L 2113.7496,512.20583 L 2108.929,514.72246 L 2108.3087,514.24395 C 2107.8314,514.64009 2106.2538,515.72125 2105.9871,515.64405 C 2105.7202,515.56684 2104.9981,515.76624 2104.3743,516.08712 C 2103.7504,516.40798 2102.8572,516.6415 2102.3893,516.60108 L 2101.3259,516.53019 L 2098.9334,518.62147 L 2099.5537,515.85672 L 2098.8625,514.049 L 2097.1257,514.049 L 2092.3051,505.66613 L 2093.9533,504.01791 L 2094.3432,499.83534 L 2095.6192,498.29345 L 2095.123,496.87563 L 2093.5457,496.43256 L 2091.2063,498.73652 L 2089.0972,496.91108 C 2086.6484,497.26408 2085.4684,497.27649 2084.2412,498.24029 L 2085.4818,500.68603 C 2083.2906,501.51351 2080.5598,502.15383 2077.9142,502.54692 C 2076.7858,497.98035 2075.6575,494.1991 2074.5291,488.84722 L 2075.2912,488.26237 C 2075.7136,487.94036 2076.6192,486.78055 2077.2939,485.67484 C 2077.9686,484.56914 2079.0486,483.06079 2079.6865,482.32524 C 2080.3244,481.58966 2080.8384,480.63637 2080.8384,480.21623 L 2080.8384,479.45415 L 2084.4784,479.14874 L 2083.9399,477.04385 C 2083.7203,475.71819 2083.2708,474.12313 2082.9297,473.4993 C 2082.5885,472.87545 2082.2412,471.74061 2082.7566,471.26347 L 2081.9904,470.94722 L 2081.4055,470.16742 L 2081.4055,469.38761 L 2089.04,468.36376 L 2089.9657,472.18781 L 2094.9812,470.87633 L 2096.429,475.83323 L 2099.4828,475.37791 L 2096.4877,469.24583 L 2094.1441,469.88385 L 2092.8613,463.09472 L 2094.1019,461.78585 L 2093.637,458.96933 L 2097.7814,457.85009 C 2098.4781,460.1102 2099.3633,462.30883 2099.69,464.66382 L 2102.3184,464.0885 L 2103.0628,460.68573 L 2101.1678,457.16297 L 2107.1922,454.44732 C 2108.1943,455.86649 2108.7164,457.11116 2108.6277,458.96662 L 2110.9849,459.71098 L 2112.3141,457.99187 L 2115.0257,457.61969 L 2115.965,455.06761 L 2111.4634,455.77652 L 2110.3509,450.01662 L 2078.818,456.64494 C 2077.3032,451.3317 2076.3713,445.86678 2074.9899,440.51722 z "},"il4":{"name":"IL-4","path":"M 1719.4889,522.46731 L 1718.9926,523.12306 L 1717.4862,524.54088 L 1714.0125,526.1891 L 1710.6984,526.20682 C 1710.7082,528.14412 1710.894,528.31196 1711.5491,529.3792 L 1714.7006,529.77522 L 1715.5728,527.31421 L 1717.6102,528.77662 L 1720.9953,532.1085 L 1722.0514,530.46154 L 1724.0081,531.11603 L 1724.7702,529.80454 L 1717.7875,527.99682 L 1717.4685,528.31583 L 1715.4835,526.98662 L 1714.5796,529.5387 C 1713.878,529.45481 1713.1741,529.3916 1712.4706,529.32603 C 1712.3142,529.31625 1711.8667,529.05343 1711.6908,528.93613 C 1711.5149,528.81881 1711.1664,528.26261 1711.0883,527.9791 C 1711.01,527.69559 1711.0706,526.45495 1711.0705,526.45494 L 1713.977,526.45494 L 1717.3089,524.91306 L 1717.8584,524.50543 L 1720.2332,525.39157 C 1721.0201,525.02483 1721.7282,524.55986 1722.3954,524.0092 L 1719.4889,522.46731 z "},"pa2":{"name":"PA-2","path":"M 2314.141,517.48722 L 2310.1002,522.91038 L 2310.9509,525.19662 L 2314.3005,527.28791 L 2313.9283,527.85504 L 2315.9133,529.94632 L 2317.5261,527.5892 L 2317.4552,522.18375 L 2316.0196,520.44692 L 2316.3564,519.56078 C 2317.0623,520.41732 2318.8907,522.05969 2318.8907,522.05969 L 2318.8552,523.35345 L 2319.3692,523.40662 L 2319.316,521.9888 L 2320.5212,520.46464 L 2315.1158,518.08979 L 2314.141,517.48722 z "},"nj4":{"name":"NJ-4","path":"M 2352.6195,527.18767 L 2341.5518,512.83888 L 2339.8151,514.5756 L 2341.1308,517.46331 L 2338.656,522.5573 L 2338.1792,522.5573 C 2337.9171,522.5573 2336.6457,522.01813 2335.3539,521.35914 L 2333.0053,520.16098 L 2331.67,521.98719 C 2330.4425,521.58023 2329.2054,521.17633 2328.1065,520.51687 L 2329.551,518.06147 L 2329.9218,515.83416 L 2331.3675,515.73372 C 2331.9134,515.7238 2332.7586,515.40479 2333.2459,515.02481 C 2333.7331,514.64483 2334.3197,513.83401 2334.5496,513.22299 L 2334.9674,512.11203 L 2332.5,510.25087 L 2334.0785,506.96126 L 2338.4057,506.96126 C 2339.114,506.0695 2339.7406,505.16645 2340.0162,504.05544 L 2340.0162,503.35136 L 2342.4819,502.56879 L 2344.0011,504.64634 L 2346.447,502.20039 L 2349.513,504.38358 L 2356.5167,502.01838 L 2356.056,500.72285 L 2352.7318,501.04344 L 2352.515,500.25767 L 2354.8806,499.64573 L 2354.2911,495.25085 L 2359.2121,495.90225 L 2360.1493,501.73962 L 2365.4648,503.28819 L 2365.7439,504.27403 C 2365.8974,504.81625 2366.1919,507.32626 2366.3984,509.85184 L 2366.774,514.44381 L 2363.1781,513.9543 C 2361.2003,513.68507 2359.1378,513.32487 2358.5947,513.15385 L 2357.6074,512.8429 L 2356.4424,513.56287 L 2358.6664,516.68612 L 2352.6195,527.18767 z "},"il5":{"name":"IL-5","path":"M 1722.2376,519.34316 L 1716.2583,518.82561 L 1714.873,520.04944 L 1715.6093,522.03702 L 1714.794,522.3383 C 1713.7032,522.14815 1712.1461,521.48007 1711.2768,521.05678 L 1711.478,522.12943 L 1710.6357,523.46412 L 1710.7184,525.9654 L 1713.9611,525.95375 L 1716.4799,524.78178 C 1717.4781,524.28022 1718.06,523.73671 1718.5564,523.11061 L 1719.4603,522.05796 L 1722.6453,523.77385 L 1723.5314,522.74593 L 1722.2376,519.34316 z "},"pa5":{"name":"PA-5","path":"M 2196.5795,524.24343 L 2192.5409,521.13948 L 2197.1883,514.11434 L 2191.3389,511.15021 C 2190.5574,511.895 2189.5721,512.5742 2188.5709,512.96325 L 2183.6486,512.954 L 2178.8924,517.02516 L 2169.9098,515.87842 L 2160.0079,519.02562 L 2159.1393,518.54342 L 2159.8111,515.18463 L 2158.4642,515.19331 C 2157.7233,515.19809 2156.7402,515.4404 2156.2794,515.73179 L 2155.4416,516.26158 L 2155.4416,520.8613 L 2153.3454,521.52661 L 2152.8356,521.05229 L 2152.4209,514.6478 L 2154.5652,512.17543 L 2154.5652,510.20613 L 2152.5802,507.7909 L 2148.8013,511.56349 L 2148.3267,512.66748 L 2146.3958,514.33687 L 2146.3332,516.54618 L 2144.8485,516.9996 L 2143.5061,515.18851 L 2139.1496,516.40067 L 2137.8354,516.4267 L 2137.212,513.30565 L 2118.5551,516.88601 L 2116.737,507.90643 L 2113.4483,511.72359 L 2109.0614,514.10595 L 2108.4277,513.6815 C 2107.8956,514.16308 2106.2778,515.16708 2106.0049,515.0878 C 2105.7319,515.00852 2104.9981,515.21994 2104.3743,515.55762 L 2103.24,516.17159 L 2101.0456,515.82138 L 2099.4611,517.73671 L 2100.1167,515.66959 L 2098.9466,513.48324 L 2097.2941,513.48324 L 2092.8251,505.84658 L 2094.4657,504.16084 L 2094.8929,499.76907 L 2096.0197,498.64224 L 2095.4789,496.57425 L 2093.2311,495.98643 L 2091.0872,498.13026 L 2089.3073,496.35029 L 2087.1996,496.74415 C 2086.0404,496.96078 2084.7783,497.39718 2084.3949,497.71394 L 2083.6979,498.28987 L 2084.8572,500.45611 C 2082.6975,501.12049 2080.7861,501.5808 2078.1605,501.92031 L 2075.2999,489.4997 L 2081.4055,480.82516 L 2081.4055,480.02265 L 2085.2946,479.69024 L 2083.0803,471.81573 L 2083.7419,471.40683 L 2081.8803,470.04555 L 2088.6967,468.91824 L 2089.4179,472.7626 L 2094.5854,471.65721 L 2095.9328,476.33631 L 2100.1283,475.70269 L 2096.6707,468.61866 L 2094.4495,469.32364 L 2093.4142,463.29235 L 2094.463,462.02571 L 2094.1659,459.43392 L 2097.3445,458.55399 L 2097.9317,460.07247 C 2098.2547,460.90764 2098.6575,462.42039 2098.8269,463.43413 L 2099.135,465.2773 L 2102.8498,464.60577 L 2103.5926,460.64648 L 2101.8222,457.44327 L 2107.1173,455.02744 L 2107.5802,455.75713 C 2107.8349,456.15845 2108.0472,457.16096 2108.0519,457.98493 L 2108.0606,459.48305 L 2111.1353,460.25477 L 2112.4391,458.47176 L 2115.6064,458.04553 L 2116.5675,454.65094 L 2112.1636,455.14619 L 2111.1798,449.82902 C 2144.2089,442.36778 2173.9789,435.38934 2205.9217,427.44528 L 2210.7526,441.08163 L 2206.0638,443.81247 C 2206.3192,445.27182 2206.588,446.72914 2207.0061,448.1472 L 2212.6325,446.93908 L 2214.4196,450.79326 L 2217.002,450.81552 L 2220.4457,456.77037 L 2219.8924,456.77037 C 2219.5882,456.77037 2219.1999,456.40737 2219.0296,455.9637 L 2218.7201,455.15703 L 2216.3151,455.78593 L 2215.6827,453.3676 L 2208.5417,454.67375 L 2207.1607,459.60602 L 2202.204,460.30543 L 2202.204,461.91013 L 2200.5026,462.56301 L 2200.5026,465.72308 L 2198.8012,466.37596 L 2198.8012,468.56694 L 2206.683,470.43948 L 2207.4151,472.7461 L 2210.014,472.09381 L 2211.3331,473.68325 L 2210.1438,474.4183 L 2210.1438,476.61988 L 2210.7109,476.61988 C 2211.0228,476.61988 2211.7825,476.11534 2212.3992,475.49869 C 2213.0159,474.88204 2214.4195,474.00183 2215.5184,473.54268 L 2217.5164,472.70785 L 2217.5164,472.1523 C 2217.5164,471.84674 2217.9175,471.19569 2218.4076,470.70554 C 2218.8978,470.21537 2219.5358,469.81433 2219.8254,469.81433 L 2220.3521,469.81433 L 2220.3521,471.48957 L 2223.1877,473.34756 L 2223.1877,475.91514 L 2219.785,477.32461 L 2219.785,478.32126 L 2216.9493,478.32126 L 2216.9493,482.73206 L 2212.3998,484.29112 C 2212.0184,484.75075 2211.3547,485.12681 2210.925,485.12681 L 2210.1438,485.12681 L 2210.1438,486.02423 C 2210.1438,486.5178 2209.3764,488.75087 2208.4386,490.9866 C 2207.5008,493.22233 2205.9866,496.47024 2205.0737,498.20419 L 2203.4138,501.35683 L 2205.7457,510.64249 L 2213.8301,509.96062 L 2213.8301,511.68378 L 2208.7612,515.69498 L 2205.7905,512.13661 L 2200.9382,516.66274 L 2200.6098,519.65474 L 2196.5795,524.24343 z "},"wi2":{"name":"WI-2","path":"M 1648.5269,425.06296 C 1636.339,425.17041 1624.2301,427.07154 1612.1065,428.19989 L 1613.099,440.60583 L 1614.2156,442.00593 L 1613.4712,447.05692 L 1618.7172,447.83672 L 1619.9932,450.65464 L 1614.6941,454.78405 L 1619.3906,498.06306 L 1660.2593,494.19949 L 1656.1299,490.42454 L 1655.3501,487.11038 L 1652.479,484.02662 L 1654.3931,479.73771 L 1654.0741,472.94989 L 1669.103,471.42573 L 1669.103,463.73405 L 1663.1481,462.72385 L 1662.7937,457.61969 L 1661.7835,456.60949 L 1662.4215,453.45484 L 1659.7454,453.08266 L 1659.4087,450.72553 L 1651.3093,451.82435 L 1648.5269,425.06296 z "},"nj5":{"name":"NJ-5","path":"M 2307.5658,488.81833 L 2306.0238,490.93538 L 2305.2764,486.26106 L 2304.2871,486.26106 L 2303.7929,481.72455 L 2307.1282,479.17196 L 2307.3168,477.32655 C 2307.4205,476.31158 2307.6745,475.31202 2307.8812,475.1053 C 2308.0879,474.89858 2308.257,474.38131 2308.257,473.95581 L 2308.257,473.18216 L 2302.3965,467.5038 L 2306.5556,463.24453 L 2306.5556,461.44629 L 2307.7964,457.90576 L 2308.3681,457.5524 C 2308.6826,457.35805 2309.3246,456.27823 2309.7949,455.15281 L 2310.6498,453.10659 L 2311.1346,445.62992 C 2311.4123,444.36915 2311.7449,443.38296 2313.2857,443.16564 L 2314.0292,441.1571 L 2316.1974,440.43009 L 2356.7465,452.05197 L 2357.0867,458.47176 L 2352.632,458.47176 L 2351.1994,460.19791 L 2349.5931,457.90463 L 2347.3889,457.90463 L 2347.3889,456.29777 L 2346.68,456.04282 C 2346.2901,455.9026 2345.1438,455.91438 2344.1327,456.06899 L 2342.2943,456.3501 L 2340.5353,454.8902 L 2339.2223,456.20324 L 2333.3496,456.20324 L 2331.9138,454.47324 L 2329.8079,456.37904 L 2329.8079,454.00167 L 2328.7305,453.33583 L 2327.4995,455.63611 L 2324.7329,455.63611 L 2322.9775,459.03061 L 2321.6208,458.75532 L 2321.3191,460.45671 C 2321.1532,461.39247 2320.4542,463.21113 2319.7657,464.49817 L 2318.5139,466.83824 L 2319.1726,467.4969 L 2318.7613,468.51383 C 2318.535,469.07315 2318.2528,470.65797 2318.1341,472.03566 L 2317.9182,474.54056 L 2316.8283,475.722 C 2316.2289,476.37179 2315.3265,477.90278 2314.823,479.12421 L 2313.9076,481.34498 L 2311.5076,484.02313 C 2310.1877,485.49612 2308.4138,487.65396 2307.5658,488.81833 z "},"or2":{"name":"OR-2","path":"M 398.50635,345.89534 L 395.19015,342.74069 L 397.42867,340.93159 L 395.84408,338.06414 L 397.72814,333.16401 L 397.14103,331.14999 L 400.1589,329.7526 L 407.86193,316.17425 L 412.70025,314.70326 L 419.15134,307.63187 L 419.21997,301.68337 L 423.50614,298.30425 L 423.61611,296.9096 L 426.05595,295.55629 L 430.58843,286.26277 L 430.49529,283.65159 C 433.20961,280.34539 436.01633,277.08173 438.15015,273.35603 L 439.26669,271.15841 L 442.40362,268.83673 L 442.36817,265.93019 L 440.70223,263.73257 L 440.70223,259.19554 L 438.23876,256.57257 L 436.20065,256.57257 L 434.44609,253.20524 L 431.91174,253.1698 L 431.04332,250.05059 L 428.81025,247.21494 L 427.62282,241.49049 C 397.69726,235.79977 370.47298,230.8654 340.76352,224.74247 L 332.94778,227.73762 C 330.89099,227.37478 329.59055,227.01193 328.07401,226.00079 L 317.03273,225.77039 L 314.85334,224.27142 L 312.72609,224.24623 L 310.04996,227.0996 L 296.01352,226.65653 C 293.08722,227.65228 290.33672,228.12632 287.38253,228.21613 L 285.20263,230.18336 L 272.14493,229.70311 L 268.77362,225.27415 C 263.88213,226.50884 256.11855,227.61756 254.09916,228.97821 C 252.55449,227.21585 249.8761,226.83915 246.74421,226.63881 L 242.42177,229.33579 L 240.76417,226.58704 L 241.39402,224.51121 L 236.28882,220.56633 L 232.08748,220.61672 L 228.72016,218.00782 L 219.8056,217.97237 L 216.96996,216.34188 L 214.13431,216.34188 L 211.21006,218.91168 L 209.86313,225.66405 L 210.58976,226.23118 C 210.99095,226.5431 211.73842,227.81915 212.2557,229.06683 C 212.77304,230.31451 213.34725,232.03717 213.53174,232.89495 L 213.86847,234.45455 L 216.49144,236.03188 L 216.29649,242.41207 L 215.49644,243.57524 L 215.55214,246.27564 L 212.06075,247.03772 L 213.4254,252.03554 L 214.76858,252.7055 L 214.48094,255.98465 C 210.67149,255.63491 210.5421,258.00884 207.16926,257.74227 L 206.7262,262.24386 L 208.17946,262.24386 C 208.2601,263.56047 208.81895,264.64839 209.5857,265.34127 C 208.02902,266.85837 207.32478,268.33389 206.4958,270.18366 L 203.64243,270.18366 L 203.60085,271.30908 L 205.34382,272.0091 L 205.34382,273.62187 L 203.73105,274.24217 L 199.9561,288.33178 L 198.11293,288.7394 L 195.56085,302.63405 L 197.03184,303.55564 L 196.89006,309.58138 L 195.86214,309.91811 L 196.30521,312.43475 L 194.01897,316.12108 L 192.29986,316.41512 L 192.29986,318.67316 C 189.81578,321.07349 189.35452,322.63884 188.79075,324.16722 L 186.50451,323.56465 L 183.16699,326.39867 L 182.81818,331.50445 L 181.52441,332.79821 C 181.75749,336.43781 180.04994,336.72543 180.10659,340.18861 C 176.27339,341.03849 174.91007,342.35883 173.01748,342.209 L 170.64263,344.58385 L 171.79461,345.75356 C 171.54488,347.14532 170.70707,347.83141 169.98689,348.34108 L 173.01748,351.9388 L 173.20798,354.09391 L 174.25808,355.14663 L 174.57709,362.66108 L 172.33274,364.26579 L 166.81451,372.81623 L 158.3962,371.13257 L 157.65184,375.10247 L 153.05922,373.89732 L 148.80818,376.73296 L 144.82055,375.8291 L 142.10897,377.90266 L 138.76318,377.74693 C 135.44624,380.74933 134.75837,380.63966 133.53733,380.56367 L 131.33352,382.93593 L 127.69492,381.91139 L 123.39372,381.92573 L 121.69234,382.24474 L 116.09194,380.82692 L 111.43085,382.88276 L 109.26867,391.56692 L 106.62798,394.04811 L 98.333724,394.42029 L 96.986794,397.34455 L 97.713434,401.19039 L 99.255314,401.19039 L 100.4959,403.51207 L 98.085604,407.41108 L 98.688184,408.40356 L 105.6816,407.50605 L 100.97985,424.575 C 196.98885,449.10237 264.67057,463.6496 378.32108,484.65863 L 398.85877,371.98326 C 401.18543,369.92604 402.96225,368.08877 402.70461,364.32702 L 405.19396,363.88714 L 405.77836,361.20418 C 404.58201,360.11748 403.93551,358.70087 403.83886,356.95435 L 406.20189,356.95435 L 408.98073,352.49685 L 405.98013,350.71367 L 406.03512,347.68352 L 401.15183,346.37886 L 401.19498,344.78563 L 400.44881,344.65567 L 398.50635,345.89534 z "},"mi3":{"name":"MI-3","path":"M 1805.781,425.02752 L 1805.781,427.63276 L 1801.8111,429.5291 L 1801.8111,430.34435 C 1801.8111,430.79128 1802.0242,431.23286 1802.2896,431.33682 L 1802.7681,431.53177 L 1803.4416,442.02365 L 1797.7172,442.02365 L 1800.3224,458.43494 L 1810.6396,456.69079 L 1814.2879,478.16039 C 1821.1153,477.10549 1827.9234,475.9263 1834.7578,474.91712 L 1831.2945,453.52313 L 1842.0366,451.60647 L 1838.7224,430.9023 L 1817.405,433.97231 L 1815.7058,423.41474 L 1805.781,425.02752 z "},"wi5":{"name":"WI-5","path":"M 1669.7142,471.23682 L 1669.3865,463.29235 L 1663.4317,462.28213 L 1663.4317,457.40444 L 1662.8646,457.05394 C 1662.5526,456.86116 1662.2974,456.49797 1662.2974,456.24686 L 1662.2974,455.79029 L 1667.6202,455.06072 L 1668.7627,456.20324 L 1671.0879,456.18365 L 1673.7842,453.3415 L 1673.1945,449.48618 L 1678.4596,448.46668 L 1676.6584,426.87173 L 1702.57,423.69431 L 1702.9277,424.05199 C 1703.1244,424.24871 1703.2854,425.38018 1703.2854,426.56637 L 1703.2854,428.72307 L 1701.0157,433.23453 L 1700.24,443.10907 L 1701.9427,446.40186 L 1701.7554,451.09908 L 1701.3088,451.09908 C 1701.0632,451.09908 1700.3294,450.5663 1699.6783,449.91512 C 1699.027,449.26394 1698.1304,447.86029 1697.6856,446.79591 C 1697.241,445.73153 1696.7361,444.86067 1696.5638,444.86067 L 1694.0566,446.03484 L 1694.0566,448.94271 L 1695.9059,452.83969 L 1698.0265,453.97464 L 1698.0265,456.04596 L 1695.3879,457.65284 L 1694.5008,461.3074 L 1691.2774,461.3074 L 1690.3484,462.96734 L 1674.3704,465.06551 L 1674.9066,470.82386 L 1669.7142,471.23682 z "},"mi2":{"name":"MI-2","path":"M 1779.6399,335.61613 C 1774.4918,336.09561 1771.145,336.62807 1768.9176,337.19346 L 1768.9176,339.23158 L 1768.2087,339.79871 C 1767.8188,340.10581 1766.8359,340.51039 1766.0289,340.70257 C 1765.2217,340.89476 1763.9031,341.58464 1763.0869,342.22672 L 1761.5982,343.37871 L 1761.9172,344.35346 C 1762.0964,344.88784 1762.7152,346.34903 1763.2818,347.59672 L 1764.3097,349.86524 L 1764.3097,364.43336 L 1759.3473,379.69266 L 1757.6105,381.67762 C 1756.655,382.76583 1755.8737,383.84829 1755.8737,384.08791 C 1755.8737,384.32753 1756.6678,385.61116 1757.646,386.94128 L 1759.436,389.35158 L 1762.1121,398.60286 L 1761.3855,402.60821 L 1758.7093,407.25157 L 1758.7093,411.18603 L 1760.9601,414.92554 C 1762.2015,416.98378 1763.7551,420.01052 1764.3984,421.64247 C 1765.0417,423.27441 1766.2399,425.78832 1767.0745,427.22514 C 1767.9089,428.66196 1770.2299,432.36905 1772.2318,435.46623 L 1775.8827,441.10207 L 1779.0905,449.91029 L 1780.5615,458.02732 L 1782.0325,466.12662 L 1781.3768,469.65345 L 1781.7312,470.59276 C 1781.9268,471.10251 1782.3326,471.51433 1782.6351,471.51435 L 1800.6237,468.62553 L 1801.4744,463.6986 L 1803.7252,462.95425 L 1802.9454,458.73623 L 1799.7907,459.23246 L 1797.0614,441.42108 L 1802.839,441.45652 L 1802.2364,432.0989 C 1801.2424,431.8378 1801.3136,430.61283 1801.244,429.51138 L 1805.338,427.33148 L 1796.7069,370.74266 L 1806.2063,369.20078 L 1803.5125,348.4297 L 1782.1211,351.92108 L 1779.6399,335.61613 z "},"wi4":{"name":"WI-4","path":"M 1705.7769,463.57592 C 1705.5911,463.57592 1705.1594,463.05323 1704.8175,462.4144 L 1704.1959,461.25289 L 1702.3536,461.90832 L 1699.5992,459.03889 L 1698.6701,459.03889 L 1697.9807,456.86683 L 1698.475,456.36546 L 1698.4265,453.82848 L 1696.3252,452.52763 L 1694.5308,449.04242 L 1694.4569,446.44854 L 1695.2493,445.94685 C 1695.685,445.67093 1696.2053,445.44126 1696.4055,445.43648 C 1696.6056,445.43171 1696.922,446.03603 1697.1085,446.77942 L 1697.4478,448.13105 L 1700.8308,451.7526 L 1702.9901,451.06727 L 1703.5588,453.24204 L 1703.0699,454.01373 C 1702.801,454.43816 1702.577,455.24422 1702.5723,455.80498 L 1702.5636,456.82453 L 1705.4538,459.50313 L 1706.1148,463.57592 L 1705.7769,463.57592 z "},"ny27":{"name":"NY-27","path":"M 2112.875,386.84375 L 2110.3438,387.4375 L 2110.3438,390.28125 L 2108.7813,391.5625 L 2106.8438,390.84375 L 2107.5,388.28125 L 2105.6875,387.59375 L 2103.4375,389.15625 L 2104.0313,389.53125 C 2104.3571,389.7327 2105.135,391.04676 2105.75,392.4375 L 2106.875,394.96875 L 2107.8125,394.96875 L 2109.3438,400.09375 L 2108.2813,401.34375 C 2107.6975,402.02517 2106.5637,403.24716 2105.7813,404.0625 C 2104.9987,404.87786 2103.7928,405.84461 2103.0938,406.21875 L 2101.8125,406.90625 L 2101.8125,409.75 L 2101.0313,411 C 2100.6004,411.69085 2100.103,412.93178 2099.9063,413.78125 L 2099.2813,416.40625 L 2097.6563,417.5 C 2096.1523,418.50758 2093.7199,420.54345 2092.2188,422.03125 L 2089.4688,424.71875 L 2088.7188,427.1875 L 2082.5,433.59375 L 2076.0938,439.6875 L 2079.6563,455.5 L 2110.1563,448.90625 L 2102.8125,416.21875 L 2106.1875,415.875 L 2108.9688,419.1875 L 2112.5313,420.4375 C 2115.2312,419.04706 2117.609,417.09354 2120.25,415.59375 C 2123.1659,413.98273 2126.1238,412.44414 2129.0625,410.875 L 2125.75,396.21875 L 2124.7813,396.40625 L 2124.5313,396.46875 L 2124.4688,396.21875 L 2123.625,391.09375 L 2123.5938,390.875 L 2123.8125,390.8125 L 2124.625,390.5625 L 2123.8125,387.71875 L 2119.375,388.84375 L 2120.2188,391.875 L 2120.2813,392.09375 L 2120.0313,392.1875 L 2115,393.75 L 2114.7813,393.84375 L 2114.6875,393.59375 L 2112.875,386.84375 z "},"ny29":{"name":"NY-29","path":"M 2110.8236,448.7342 L 2103.5474,416.77931 L 2105.5659,416.46464 L 2108.4252,419.70687 L 2112.7705,421.11224 C 2119.803,416.18859 2123.6146,414.58965 2129.0366,411.32835 L 2130.5161,411.91407 C 2140.1423,409.32442 2147.5347,407.72179 2156.9012,405.70357 L 2157.4345,406.03322 C 2157.7279,406.21452 2157.9679,406.764 2157.9679,407.25429 L 2157.9679,408.14571 L 2164.0439,406.96264 L 2163.1106,403.15289 L 2165.5484,402.42561 L 2165.3406,399.61881 L 2172.7805,398.215 L 2171.4309,392.09828 L 2166.1337,392.80098 L 2165.0874,389.70199 L 2164.8661,384.53491 L 2164.2978,382.47651 L 2165.3406,382.47651 L 2165.3406,379.58454 C 2164.7614,378.43666 2164.1864,377.28064 2163.444,376.2381 C 2161.3047,376.701 2159.2411,377.68777 2157.0437,377.77141 L 2156.1085,371.70107 L 2151.2525,371.70107 L 2150.4527,367.74778 L 2152.9569,366.94733 L 2152.8638,363.88262 L 2154.3246,363.73703 L 2155.206,362.75973 L 2156.8449,366.18153 L 2164.6361,363.95168 C 2165.7799,363.07909 2166.8514,362.06892 2168.179,361.49275 L 2168.596,361.49275 L 2170.5649,369.00313 L 2173.1415,368.64997 C 2174.5586,368.45574 2175.999,368.07521 2176.3424,367.80437 C 2176.6858,367.53353 2177.9001,367.14393 2179.041,366.93858 L 2181.1151,366.56522 L 2181.3321,367.99531 L 2188.9497,366.23482 L 2190.3735,371.67725 L 2188.0299,372.35634 L 2190.9639,381.03057 L 2193.697,381.34225 L 2193.697,382.02416 C 2193.697,382.39922 2194.4591,383.49236 2195.3906,384.45339 L 2197.0842,386.20069 C 2197.8354,388.71908 2198.0855,391.47863 2199.3098,393.81909 L 2207.6134,391.70246 L 2211.9363,407.00028 L 2218.9941,405.92039 L 2220.3554,411.68364 L 2219.5265,413.41734 L 2222.0535,420.7665 L 2222.0535,422.09908 C 2170.2836,435.53236 2157.3039,438.23957 2110.8236,448.7342 z "},"ct4":{"name":"CT-4","path":"M 2369.195,447.03267 L 2368.6562,447.50328 L 2364.155,443.23884 L 2373.0742,433.44502 L 2368.2881,428.56834 L 2367.3579,424.44404 C 2367.9404,424.32747 2368.0383,424.59091 2368.3727,424.87474 C 2368.3727,425.11163 2368.8858,425.62588 2369.5128,426.01751 L 2370.653,426.72956 L 2374.9571,424.5338 L 2376.1331,426.39821 L 2378.8646,421.61713 L 2381.566,421.60839 L 2380.9575,417.07158 L 2381.427,416.7814 C 2381.6852,416.62181 2382.0643,415.72734 2382.2693,414.79371 L 2382.6422,413.09618 L 2384.4021,414.08106 L 2385.8056,418.16379 C 2384.9475,418.85294 2384.2188,419.60497 2383.6851,420.54747 L 2387.2112,422.83549 L 2386.7919,424.63224 C 2386.5614,425.62045 2385.7477,427.8923 2385.6542,429.51323 L 2386.0324,432.32325 L 2383.4718,435.78661 L 2381.4166,435.78661 L 2381.4166,436.94519 L 2378.6577,438.20226 L 2377.3133,441.44786 L 2375.4043,442.62765 C 2374.3545,443.27653 2373.0079,444.42722 2372.412,445.18474 L 2371.3287,446.56206 L 2370.5312,446.56206 C 2370.0926,446.56206 2369.4913,446.77383 2369.195,447.03267 z "},"mi5":{"name":"MI-5","path":"M 1883.593,444.13977 L 1878.4721,417.66448 L 1887.6746,416.39322 L 1885.6311,418.96069 L 1881.7744,408.45083 L 1877.2661,407.13893 L 1875.9441,404.54807 L 1876.6503,401.9402 L 1875.6636,398.76153 L 1869.7476,399.57286 L 1869.7816,397.1272 L 1873.4627,396.62032 L 1873.5646,391.46857 L 1875.3435,390.43876 L 1882.6269,391.6142 L 1885.9221,393.42 L 1886.7492,392.3435 C 1887.2041,391.75143 1888.337,389.67196 1889.2668,387.72245 L 1890.9572,384.1779 L 1893.6859,384.1779 L 1894.0704,386.49447 L 1909.2851,383.76573 L 1913.5748,404.36339 L 1902.6823,406.50508 L 1903.424,411.89764 L 1898.7441,412.8842 L 1903.0304,434.57032 L 1892.6119,436.97819 L 1893.2768,442.59215 L 1883.593,444.13977 z "},"ct3":{"name":"CT-3","path":"M 2387.1095,432.38384 L 2386.3674,429.42702 L 2387.7864,423.08631 L 2383.9687,420.62973 L 2386.4686,417.90453 L 2385.9363,417.0626 C 2385.6434,416.59953 2385.4,415.66772 2385.3952,414.99189 L 2385.3865,413.76311 L 2384.1421,413.3483 L 2385.447,408.50217 L 2390.1411,408.848 L 2391.0903,412.53433 L 2394.3343,412.53433 L 2395.0615,408.65843 L 2400.7997,407.90043 L 2398.5244,401.28696 L 2399.2377,400.57353 L 2401.1105,403.05627 L 2402.6377,402.1124 L 2407.7848,402.42892 L 2408.5991,403.74384 L 2402.3853,406.88888 L 2406.3534,416.43842 L 2408.2325,417.49001 L 2406.77,420.79396 L 2402.9169,420.34413 L 2398.2577,423.42726 L 2397.2399,421.60839 L 2395.4058,421.60839 L 2396.1303,422.33294 L 2393.3263,425.66532 L 2393.3263,427.27968 L 2391.8008,427.27968 L 2390.9063,428.27215 C 2390.4144,428.81802 2389.8368,429.96645 2389.6227,430.82423 L 2389.2335,432.38384 L 2387.1095,432.38384 z "},"ct5":{"name":"CT-5","path":"M 2370.522,426.1275 L 2367.2351,423.36129 L 2358.7315,383.22208 C 2363.5868,382.10946 2368.3988,380.78154 2373.2902,379.83581 L 2374.2039,394.95334 L 2375.7969,394.95334 L 2378.4048,392.3454 L 2380.2174,393.48877 L 2385.6701,391.23581 L 2386.029,388.1478 L 2384.8194,388.1478 L 2384.8194,385.31216 L 2385.9537,385.31216 L 2385.9537,383.65449 L 2392.0963,381.98174 L 2392.8896,391.84834 L 2395.4373,393.17488 L 2396.5995,397.75368 L 2391.2181,398.97815 L 2390.497,397.23714 C 2390.1004,396.27959 2389.5614,395.36358 2389.2993,395.20156 L 2388.8226,394.90699 C 2387.5162,395.56387 2386.2125,396.22631 2384.9369,396.94021 L 2386.7309,401.19176 L 2389.1564,401.19176 L 2390.2071,405.40354 L 2394.4245,405.54495 C 2395.5456,404.43047 2396.5374,403.12321 2397.9162,402.32602 L 2400.0315,407.33755 L 2394.5697,408.08874 L 2393.8289,412.03763 L 2391.4084,411.68364 L 2390.4583,407.9973 L 2384.8708,407.9973 L 2383.4816,412.86767 L 2382.0523,412.18675 L 2381.9802,413.59295 C 2381.9784,414.10243 2381.6333,415.17744 2381.2135,415.98185 L 2380.4504,417.4444 L 2380.9782,421.04126 L 2378.6536,421.04126 L 2376.0888,425.60469 L 2375.1243,423.88134 C 2373.6068,424.66535 2372.0888,425.45143 2370.522,426.1275 z "},"or4":{"name":"OR-4","path":"M 126.44204,256.98019 L 121.7455,274.24217 L 116.34006,272.91296 L 115.48937,278.17663 L 110.49154,277.46772 L 112.61828,279.75395 L 111.2359,281.15405 L 97.252634,278.30069 C 97.208794,278.36113 96.090734,281.72473 94.753724,285.7797 C 93.416774,289.83467 90.919984,296.59767 89.224224,300.80861 C 87.528394,305.01954 84.657994,311.54616 82.844024,315.30583 L 79.547584,322.1291 L 73.238284,330.58286 L 70.083624,332.37286 L 69.427884,336.25415 L 65.918774,343.16603 C 63.995644,346.96207 62.427394,350.22345 62.427394,350.43237 L 55.621847,359.20514 L 55.621847,365.46128 L 56.702936,365.46128 L 57.854916,369.60841 L 57.30551,370.49455 L 58.45749,371.20346 L 58.45749,377.65455 L 57.287787,379.35593 C 56.652716,380.29169 55.799983,381.86306 55.373728,382.84732 C 54.947417,383.83158 54.261616,386.12845 53.867292,387.95148 C 53.472911,389.77451 53.096279,392.15885 53.016599,393.25059 C 52.936861,394.34231 52.866649,395.74594 52.874817,396.36979 C 52.882984,396.99363 52.955095,399.5457 53.034322,402.04108 C 53.113606,404.53645 53.218272,406.99805 53.264718,407.51742 C 53.311166,408.03678 53.852378,409.05761 54.469866,409.78593 C 55.087356,410.51425 56.044387,411.69397 56.596599,412.39118 L 57.606797,413.6495 L 100.53293,424.48515 L 104.6671,408.08865 L 98.705904,408.95296 L 97.483034,407.46425 L 99.875604,403.58296 L 99.166694,401.75752 L 97.164024,401.75752 L 96.437394,397.20276 L 98.174224,393.83544 L 106.68115,393.48098 L 108.75471,391.26563 L 110.8499,382.39308 L 116.3755,380.13573 L 121.5864,381.69646 L 122.93293,381.28771 C 124.43616,381.22662 126.76845,381.35247 128.1257,381.55356 L 131.07383,382.43969 L 133.475,380.0462 L 135.08441,379.96485 L 138.56144,377.08629 L 141.94742,377.28759 L 144.37748,375.15564 L 148.63095,376.11266 L 152.88441,373.38336 L 157.24422,374.55306 L 158.11263,370.33504 L 166.4955,372.10732 L 171.84778,363.83078 L 174.16946,362.1294 L 173.99224,355.60742 L 172.76936,354.29593 L 172.45035,352.00969 L 169.31342,348.27019 C 170.65813,347.64655 171.03403,346.81935 171.28065,345.789 L 170.00461,344.53069 L 172.99976,341.64187 C 174.32791,342.18179 174.39245,341.14416 179.78758,339.97593 C 179.49955,336.6691 181.3738,336.51733 181.06362,332.56781 L 182.35738,331.27405 L 182.55233,326.22306 L 186.50451,323.05069 L 188.45402,323.56465 C 189.01026,321.2795 190.22019,319.7716 191.87451,318.58455 L 192.06946,315.90841 L 193.9658,315.62484 L 195.73808,312.84237 L 195.45451,309.47504 L 196.41154,309.19148 L 196.41154,303.64425 L 194.88738,302.75811 L 197.47491,288.38494 L 199.42441,287.76465 L 201.88788,277.94623 L 192.01629,275.23465 C 190.14943,274.28597 189.067,273.17326 188.3654,271.90277 L 184.37778,273.0193 L 182.03837,268.4291 L 172.99976,266.26692 L 168.87035,263.37811 L 165.89293,263.37811 L 161.69263,261.00326 C 157.48827,261.99877 154.85663,263.11313 151.05897,265.04405 L 150.6159,262.97049 L 146.89412,259.9399 L 145.22818,261.60584 L 145.88392,263.0591 C 146.2483,263.85881 146.75634,264.51238 147.01818,264.51237 L 147.49669,264.51237 L 147.49669,266.78089 L 142.39253,267.06445 L 142.39253,266.26692 L 136.43768,266.95811 L 135.64016,268.16326 L 137.00481,269.06712 L 134.77174,270.78623 C 133.36628,268.87559 132.44047,267.46046 132.25511,265.06178 C 134.04144,263.85024 135.10506,261.90757 136.11867,259.63861 L 126.44204,256.98019 z "},"ct2":{"name":"CT-2","path":"M 2408.6388,418.74468 L 2408.6388,417.92797 L 2408.6388,417.11127 L 2407.5947,416.55248 L 2406.5506,415.99369 L 2405.1013,412.7044 C 2404.3041,410.8953 2403.4977,408.89421 2403.3091,408.25754 L 2402.9663,407.09994 L 2406.1045,405.56081 L 2409.2427,404.02166 L 2408.6572,402.92756 L 2408.0717,401.83345 L 2408.0717,399.27756 L 2408.0717,396.72167 L 2407.547,396.39743 L 2407.0224,396.07319 L 2405.5215,396.75706 L 2404.0206,397.44093 L 2403.5032,396.62248 C 2403.2188,396.17234 2403.0775,395.54883 2403.1894,395.23691 L 2403.3929,394.66978 L 2404.0539,394.81922 C 2404.4174,394.90141 2405.2149,394.70103 2405.8261,394.37392 L 2406.9374,393.77918 L 2406.9374,391.53062 L 2406.9374,389.28206 L 2407.7881,389.28206 L 2408.6388,389.28206 L 2408.6388,388.73417 C 2408.6388,388.43283 2408.2088,387.2844 2407.6831,386.18209 L 2406.7274,384.1779 L 2405.9817,384.1779 L 2405.236,384.1779 L 2405.236,383.23008 L 2405.236,382.28226 L 2404.2564,381.19983 L 2403.2769,380.1174 L 2403.2769,375.88009 L 2399.3653,378.5345 L 2398.5874,377.27572 L 2394.5386,378.39365 L 2393.9291,376.80523 L 2391.0578,376.80523 L 2391.0578,374.58811 L 2432.1746,363.76889 L 2442.7048,397.94099 L 2440.8522,399.98806 L 2441.7594,401.28323 C 2442.2583,401.99557 2442.6665,403.00012 2442.6665,403.51557 L 2442.6665,404.45275 L 2440.8943,404.8072 C 2439.9195,405.00216 2438.5432,405.16166 2437.8357,405.16166 L 2436.5495,405.16166 L 2435.8928,406.87286 L 2434.3173,407.5443 C 2433.4507,407.9136 2432.3476,408.69063 2431.8658,409.27104 L 2430.9899,410.32634 L 2427.8179,409.12037 L 2427.2217,411.40008 L 2426.4654,411.40008 C 2426.0494,411.40008 2425.5049,411.72521 2425.2555,412.1226 C 2425.0061,412.51999 2424.1002,413.2915 2423.2424,413.83706 L 2421.6828,414.829 L 2421.6828,414.42396 L 2420.0175,416.22067 L 2419.9814,414.78124 L 2416.9002,415.55457 L 2414.7054,417.59927 L 2413.8213,417.05286 L 2413.0611,418.28295 L 2411.4646,417.67031 L 2408.6388,418.74468 z "},"mn2":{"name":"MN-2","path":"M 1433.7446,408.71094 L 1433.7446,405.81969 L 1422.9691,406.46257 L 1422.9691,404.79659 L 1426.2786,400.35807 L 1424.4325,397.23299 L 1425.8048,395.86075 L 1425.8408,392.40126 L 1427.4629,390.25874 L 1426.7793,385.27171 L 1429.3151,382.57248 L 1432.1168,381.86929 L 1431.7596,379.3573 L 1426.939,379.00852 L 1426.939,376.80523 L 1421.4322,376.80523 C 1421.0522,371.61147 1420.3086,366.42809 1420.2298,361.21852 L 1430.342,360.64206 L 1431.0447,366.04313 L 1441.6112,365.30038 L 1441.9679,370.28325 L 1451.9267,370.76386 L 1456.194,366.59691 L 1457.1907,366.59691 C 1457.7389,366.59691 1458.9306,366.2126 1459.8389,365.74289 L 1461.4904,364.88887 L 1462.6382,367.03356 L 1466.2823,367.87272 L 1467.3194,364.60743 L 1466.058,363.65819 C 1470.8681,363.87265 1471.3028,364.80636 1474.5546,365.02082 L 1474.3749,366.66179 C 1474.2761,367.56433 1474.0261,368.4719 1473.8194,368.67862 C 1473.6127,368.88534 1473.4436,369.79058 1473.4436,370.69027 L 1473.4436,372.32607 L 1477.1299,373.87668 L 1480.4613,377.37235 L 1481.9505,377.37235 L 1481.9505,379.61926 L 1484.8161,380.33847 L 1486.6589,382.42738 L 1495.5859,382.47651 L 1496.2505,384.03612 C 1496.6161,384.8939 1497.2639,386.0155 1497.6901,386.52857 L 1498.4651,387.46142 L 1491.4596,388.27451 L 1491.9923,393.81909 L 1486.5695,393.81909 L 1487.5098,404.56414 L 1433.7446,408.71094 z "},"ri2":{"name":"RI-2","path":"M 2446.317,403.61058 L 2444.0127,404.96339 L 2442.8011,399.77394 L 2444.0405,398.99169 L 2442.6994,393.42797 C 2440.7836,385.18307 2437.5015,377.32413 2435.398,369.1402 L 2443.3015,366.05508 L 2444.4583,369.37358 L 2449.1885,369.28271 L 2454.2927,370.71219 L 2455.5143,372.5818 C 2456.1861,373.61008 2456.8989,375.19363 2457.0981,376.10079 L 2457.4604,377.75016 L 2454.0091,377.24362 L 2454.0091,379.71731 L 2456.0484,379.07005 L 2457.5153,383.12656 L 2455.6459,384.49346 L 2458.5448,387.86423 L 2458.6126,388.99849 C 2458.6499,389.62233 2458.6271,390.38796 2458.5617,390.69988 C 2458.4965,391.0118 2458.3716,392.28784 2458.2842,393.53552 L 2457.979,397.22186 L 2455.9242,397.22186 L 2452.2728,399.73982 C 2450.2645,401.1247 2447.5844,402.86654 2446.317,403.61058 z "},"ny28":{"name":"NY-28","path":"M 2108.8758,390.80906 C 2108.5444,390.91796 2108.1025,390.83627 2107.8937,390.6275 L 2107.5141,390.24792 L 2108.1448,387.73499 L 2105.6614,387.08555 L 2104.4507,387.75846 C 2103.7848,388.12856 2103.0796,388.65153 2102.8835,388.92063 L 2102.5269,389.4099 L 2099.2701,387.83377 L 2099.6424,383.61077 L 2096.1509,383.61077 L 2096.1913,378.79018 L 2093.9428,372.2661 L 2095.5846,371.41705 C 2096.4877,370.95007 2098.3244,369.83341 2099.6661,368.93558 C 2101.0079,368.03776 2104.913,365.88077 2108.3442,364.14226 L 2114.5826,360.98135 L 2119.1196,359.87707 C 2121.615,359.26971 2125.4431,358.33376 2127.6265,357.79719 C 2129.81,357.26061 2133.6201,356.47584 2136.0935,356.05327 L 2140.5905,355.28495 L 2151.0932,355.12785 L 2152.775,356.32535 C 2153.6999,356.98398 2154.8346,357.52285 2155.2965,357.52285 C 2155.7584,357.52285 2156.9295,357.85636 2157.899,358.26398 L 2159.6616,359.00511 L 2158.9849,359.6818 C 2158.6127,360.05398 2158.1263,360.35849 2157.904,360.35849 L 2151.4718,356.38859 L 2148.1322,356.38859 L 2140.6705,359.47132 L 2132.7307,359.64055 C 2126.5941,360.74463 2123.6206,361.62596 2118.9987,363.08644 L 2111.3336,363.9073 C 2111.5074,366.19591 2111.993,367.99447 2112.6568,369.83757 L 2109.2598,371.24462 L 2104.9414,370.57886 L 2103.1184,371.62822 L 2102.5578,377.03776 L 2100.7801,378.1591 L 2103.4937,383.51408 L 2106.6696,384.21163 L 2108.164,386.64165 L 2109.8811,387.46786 L 2109.8794,390.12098 L 2108.8758,390.80906 z "},"ma5":{"name":"MA-5","path":"M 2450.8917,303.12534 L 2450.5372,306.47494 L 2447.3825,306.47494 L 2445.6457,308.45989 L 2446.0888,309.59415 C 2446.3415,310.21799 2446.5809,311.03367 2446.6027,311.40187 L 2446.7717,312.47606 L 2443.8635,312.49658 C 2443.2244,313.75181 2442.9986,315.05934 2442.1465,316.18248 L 2431.3966,319.14672 L 2432.9208,321.32663 L 2431.0422,324.62306 L 2428.561,324.62306 L 2427.8521,326.85613 L 2429.0886,331.74202 L 2427.8561,332.2298 L 2429.3762,337.24167 L 2431.0279,335.44303 L 2431.7865,335.39851 L 2432.5663,339.93554 L 2434.7285,339.93554 L 2435.2333,338.74175 L 2440.9669,336.42643 L 2441.1505,338.49181 C 2444.0508,337.82135 2444.7941,337.77829 2446.5759,338.82037 L 2447.3349,338.10464 L 2446.7445,334.76049 L 2444.795,333.34267 L 2446.585,329.90445 L 2445.9688,329.43638 C 2445.7079,329.15604 2445.4698,328.34119 2445.2736,327.6891 L 2444.9191,326.5194 L 2449.5447,324.42811 L 2448.9776,322.23049 L 2449.4738,321.3089 C 2449.7432,320.79899 2450.0031,321.14656 2450.1796,320.58092 L 2450.1314,318.31375 L 2452.1868,319.19899 L 2453.4437,318.26059 L 2449.4738,312.85514 L 2449.4738,310.58663 L 2452.7703,309.93088 L 2453.5678,305.16346 L 2450.8917,303.12534 z "},"ma3":{"name":"MA-3","path":"M 2422.3384,334.58509 L 2421.1706,334.7079 C 2420.5186,335.29797 2419.4161,336.98058 2419.416,337.29484 L 2415.9423,343.26742 L 2418.7792,347.97312 L 2420.4794,347.87534 L 2421.2415,349.11593 L 2423.3859,348.5488 L 2426.2039,349.86029 L 2425.5658,353.33395 L 2427.7219,355.05368 L 2429.6775,349.66534 C 2431.0779,348.64058 2432.3878,347.44316 2433.9841,346.74108 L 2438.9111,349.13365 L 2442.6506,348.53108 L 2444.671,351.08316 L 2446.288,350.87661 L 2448.0034,357.69987 L 2451.4588,356.86078 L 2453.4615,363.80811 L 2455.3755,363.47138 L 2457.6972,370.24148 L 2461.2772,370.96811 L 2465.2825,374.24682 C 2465.9198,371.9628 2466.3592,369.82722 2466.4522,367.24633 L 2462.7837,367.83118 L 2460.7987,363.68405 L 2461.3304,362.81563 L 2455.5705,357.23296 L 2453.4083,352.44781 L 2450.2182,353.08583 C 2449.0981,351.18078 2447.8604,349.32252 2447.2053,347.20187 L 2447.2053,346.45752 L 2444.9368,345.03969 L 2444.9368,343.48009 L 2441.7467,342.84207 C 2440.8524,341.16137 2440.5024,339.77753 2440.3998,337.20623 L 2435.7387,339.03167 L 2435.1716,340.50267 L 2432.0346,340.50267 L 2431.2903,335.8593 C 2430.6042,336.3522 2430.1697,337.09755 2429.5626,337.67619 L 2429.8144,338.87402 L 2428.9826,339.69412 L 2424.6736,341.26352 L 2422.3384,334.58509 z "},"ma4":{"name":"MA-4","path":"M 2454.2218,333.91474 L 2452.5736,334.02108 C 2449.7703,336.67452 2452.522,334.77572 2448.5682,338.87712 C 2448.5325,340.54089 2449.4544,341.07829 2450.2519,341.73049 C 2450.7921,342.17821 2450.3604,342.64576 2449.9683,342.77613 L 2445.3249,342.88247 L 2445.5022,345.0092 L 2447.7707,346.23207 L 2447.7707,347.08276 C 2447.7708,347.55585 2448.345,348.96533 2449.0467,350.20197 L 2450.4646,352.61227 L 2453.6901,352.13375 L 2455.8168,356.67078 L 2461.9489,362.69653 L 2461.2932,363.65356 L 2463.1718,367.28672 L 2467.0708,366.54237 C 2466.6802,369.87192 2466.3491,372.90396 2465.542,375.16243 L 2469.3216,375.10247 L 2469.3216,378.50524 L 2470.2077,378.50524 L 2472.3876,384.12336 L 2472.9725,383.66257 C 2473.2993,383.40787 2474.2195,383.05324 2475.0106,382.86504 L 2476.4461,382.52831 L 2479.0514,379.0192 L 2477.9703,377.65455 L 2478.0944,376.52029 C 2478.1682,375.89645 2478.4075,374.97352 2478.6261,374.46445 L 2479.0337,373.54286 L 2483.7834,372.72762 L 2482.3655,372.17821 L 2482.3655,370.56544 L 2484.3859,370.56544 L 2484.3505,367.44623 L 2485.7683,367.72979 L 2485.7683,367.19811 C 2485.7684,366.9046 2485.5132,366.50474 2485.2012,366.31197 C 2484.8894,366.11919 2484.6341,365.71933 2484.6341,365.42583 L 2484.6341,364.89415 L 2488.604,364.89415 L 2488.604,361.45593 L 2487.0502,360.76181 L 2483.4467,362.57247 C 2481.3153,361.73331 2479.8424,359.63162 2478.3425,357.98227 L 2474.7979,353.99465 L 2475.4537,352.93128 C 2475.8195,352.34566 2476.1272,351.52391 2476.1271,351.10583 L 2476.1271,350.34375 L 2472.7244,350.85771 L 2472.6121,356.14485 L 2468.3145,357.40915 L 2465.8657,355.25296 L 2460.9919,355.25296 L 2459.8576,352.70088 L 2460.3362,348.73098 L 2457.5182,346.09029 C 2456.3999,347.84451 2455.581,349.90741 2453.9914,351.28306 L 2452.5795,349.07065 L 2449.6878,348.90235 L 2450.6802,347.29824 L 2448.9227,345.48771 L 2449.0381,344.47752 L 2453.442,344.47752 L 2453.442,341.4292 L 2450.6772,341.39375 L 2452.3786,337.58336 L 2453.3711,338.09732 L 2456.0473,337.38841 C 2455.8902,335.92666 2456.5808,336.29577 2456.508,334.62366 L 2453.5129,335.33257 L 2454.2218,333.91474 z "},"ma2":{"name":"MA-2","path":"M 2391.7353,373.35204 L 2391.0026,370.43297 L 2391.3104,370.12515 C 2391.4798,369.95584 2392.5084,369.78641 2393.5963,369.74864 L 2396.083,369.64081 L 2396.178,368.17617 L 2394.6171,367.73299 L 2393.2356,364.40608 L 2393.8563,362.10386 L 2392.5831,360.91993 L 2393.0428,357.84732 L 2388.1097,357.41506 C 2387.976,358.23453 2387.5302,358.37567 2386.8628,358.59614 L 2384.854,354.81048 L 2388.5057,352.99646 L 2392.1824,353.50418 L 2391.4584,348.82026 L 2392.1341,349.01592 C 2392.441,349.01592 2392.8773,349.31526 2393.1034,349.68113 C 2393.3295,350.04699 2393.7441,351.38683 2394.0246,352.65855 C 2394.3052,353.93027 2394.5474,355.48119 2394.5629,356.10503 C 2394.5784,356.72887 2394.7976,358.46003 2395.0978,359.47377 L 2396.3478,360.91317 L 2402.0298,358.62458 L 2402.4899,359.34975 C 2402.7431,359.7486 2403.3063,360.24592 2403.311,360.50273 L 2404.9525,360.62652 L 2404.9673,360.06716 C 2404.9754,359.75951 2405.2306,359.09832 2405.5344,358.59785 C 2405.8382,358.09738 2407.1994,356.99185 2408.5593,356.14113 L 2411.0319,354.59434 L 2414.8636,357.82035 L 2413.9874,350.74059 L 2419.0151,348.2612 L 2420.0306,348.18681 L 2421.3591,349.63857 L 2423.338,348.9775 L 2425.6963,350.22045 L 2425.02,353.60207 L 2427.8885,355.72392 L 2430.2166,349.77646 C 2431.4365,348.90084 2432.5862,347.87936 2433.9948,347.33227 L 2439.1663,349.69368 L 2442.5699,349.01191 L 2444.4758,351.568 L 2445.9833,351.25445 L 2447.2697,357.89132 L 2433.3093,363.04614 L 2433.1262,361.92561 L 2391.7353,373.35204 z "},"mn3":{"name":"MN-3","path":"M 1440.819,343.73416 L 1436.531,345.46142 L 1434.7082,346.73688 L 1436.1017,348.00435 L 1432.3075,351.02122 L 1431.6613,354.1187 L 1430.9089,354.1187 L 1430.9089,358.88613 C 1430.9089,361.51195 1431.0603,364.0566 1431.2457,364.53969 L 1431.5824,365.42583 L 1442.2515,364.71692 L 1442.2809,369.89347 L 1451.7624,370.33839 L 1453.7713,368.4387 C 1454.3769,367.86552 1454.7375,367.49565 1455.1776,366.8233 L 1451.9104,366.59554 L 1448.9862,361.95217 L 1446.307,364.39642 L 1446.9303,354.04781 L 1451.3256,354.79217 L 1451.5914,348.12841 L 1451.0598,345.66494 L 1448.8976,344.45979 L 1445.3176,346.35613 L 1444.3428,344.74336 L 1440.819,343.73416 z "},"mn5":{"name":"MN-5","path":"M 1455.455,366.40059 L 1456.4475,364.18524 L 1455.26,362.74969 L 1454.5689,355.25296 L 1453.5941,355.25296 L 1453.5941,350.1488 L 1451.8927,350.1488 L 1451.8927,355.39474 L 1447.5152,354.70356 L 1446.7885,363.36999 L 1449.0854,361.31515 L 1452.1277,366.10437 L 1455.455,366.40059 z "},"mn4":{"name":"MN-4","path":"M 1465.3238,367.11926 C 1464.9549,367.09464 1464.2703,366.92671 1463.8024,366.74607 C 1463.3345,366.56544 1462.6187,365.94826 1462.2117,365.37454 L 1461.4717,364.33143 L 1459.8295,365.1806 C 1458.9264,365.64765 1457.8158,366.02978 1457.3617,366.02978 L 1456.5359,366.02978 L 1457.1307,363.75523 L 1455.8321,362.1905 L 1455.1315,354.68721 L 1454.1612,354.68721 L 1454.1612,350.21711 L 1454.5866,349.95528 C 1454.8205,349.81128 1457.0536,349.60783 1459.5489,349.50319 L 1464.086,349.31292 L 1465.0459,363.43256 L 1466.777,364.69838 L 1465.9945,367.16404 L 1465.3238,367.11926 z "},"nh2":{"name":"NH-2","path":"M 2389.9388,328.94111 L 2390.1367,327.02805 L 2388.1411,327.53754 L 2386.0661,325.12063 L 2385.6509,323.88253 C 2385.4225,323.20158 2385.1778,321.24079 2385.1072,319.52523 L 2384.9788,316.40602 L 2385.6827,315.55533 C 2386.0699,315.08744 2386.5717,314.09855 2386.7979,313.35779 L 2387.2093,312.01095 L 2385.7661,311.119 L 2385.9292,306.78165 L 2383.709,302.52218 L 2383.3316,291.04984 L 2381.3928,289.96482 L 2381.983,289.00991 L 2381.4601,285.69411 C 2381.1725,283.87041 2380.6759,281.36251 2380.3565,280.12098 L 2379.7758,277.86367 L 2381.2799,276.13988 L 2381.1899,267.5329 L 2383.6413,264.41652 L 2383.4663,255.53596 L 2384.9463,253.75274 L 2384.3572,252.21762 L 2385.3048,250.68438 L 2383.743,249.48483 L 2385.6507,241.63308 L 2384.2523,241.16694 L 2384.2523,239.14592 L 2381.9838,236.26197 L 2381.9838,233.3886 L 2380.7831,232.64655 L 2381.5534,229.13924 L 2382.7611,228.13011 C 2383.4253,227.57509 2384.2877,227.1125 2384.6776,227.10212 L 2385.3865,227.08325 L 2385.3865,225.94899 L 2388.0464,225.94899 L 2390.1057,223.67352 L 2389.3964,222.96421 L 2389.9635,221.90452 C 2390.2754,221.32169 2390.7875,220.84483 2391.1015,220.84483 C 2391.4155,220.84483 2392.1375,220.39822 2392.706,219.85236 C 2393.2745,219.3065 2394.0295,218.30244 2394.3837,217.62113 C 2394.7379,216.93981 2395.0277,215.98278 2395.0277,215.49439 L 2395.0277,214.60642 L 2397.2188,212.4153 L 2396.3411,209.21869 L 2397.5665,206.47313 L 2396.162,206.00496 L 2396.162,205.20153 C 2396.162,204.75965 2395.7154,203.93497 2395.1695,203.36893 C 2394.6236,202.80288 2393.3837,201.33144 2392.4139,200.09907 L 2390.6509,197.8584 L 2391.2243,196.44944 C 2391.5397,195.67451 2391.855,193.89204 2391.925,192.4884 L 2392.0523,189.93632 L 2393.3933,186.56726 L 2391.6249,185.27424 L 2391.6249,183.53569 L 2389.7958,182.83379 L 2391.1864,181.15826 L 2390.4656,177.31588 L 2391.7971,174.05672 L 2391.5415,167.26651 L 2390.2071,166.41785 L 2392.1921,166.40048 L 2392.1921,165.83335 C 2392.1921,165.52143 2392.2201,165.07481 2392.2544,164.84087 C 2392.2887,164.60693 2392.8093,163.72386 2393.4112,162.87848 L 2394.5057,161.34143 L 2396.7673,163.60305 L 2399.1099,163.3207 C 2400.3982,163.16541 2401.6441,162.8378 2401.8784,162.59268 C 2402.1126,162.34756 2402.3898,161.5955 2402.4941,160.92142 L 2402.684,159.69582 L 2423.9664,216.95881 L 2423.1356,218.29275 L 2423.2547,220.61959 L 2414.9458,222.97185 L 2414.746,233.60523 L 2412.3853,228.78463 L 2410.9472,228.78463 L 2409.7162,226.48435 L 2409.1775,226.81727 C 2408.8812,227.00037 2408.6388,227.48009 2408.6388,227.8833 L 2408.6388,228.61641 L 2412.0416,232.17709 L 2412.0416,233.74991 L 2413.7678,235.18251 L 2413.5502,238.70939 L 2416.0544,243.56888 C 2413.9292,245.55455 2410.8337,246.6134 2408.1785,247.84843 C 2410.1276,252.23751 2412.4814,256.78849 2413.1758,259.31577 L 2408.0873,261.25912 C 2408.6758,263.24512 2408.6169,264.94779 2408.6388,267.2171 L 2406.3703,267.81033 L 2406.3703,270.8294 L 2409.6646,268.48364 L 2415.312,268.48364 L 2416.0115,273.97195 L 2433.3089,279.91108 L 2431.6232,292.30305 L 2426.3574,292.30305 L 2425.7114,293.86265 C 2425.3561,294.72044 2425.0591,295.67746 2425.0515,295.98939 L 2425.0375,296.55651 L 2419.3752,299.06352 L 2422.882,306.01055 L 2424.258,305.52631 L 2427.4937,313.28681 C 2429.2513,313.32316 2430.8066,312.99525 2431.4309,312.30307 L 2429.5804,308.72449 L 2430.6632,306.78955 L 2432.0731,309.88404 L 2436.4281,309.88404 L 2437.0352,308.64262 L 2444.228,304.83609 L 2446.2719,306.24282 L 2444.3391,308.59997 L 2445.4741,311.58542 L 2442.7545,311.58542 L 2441.5375,315.27176 L 2389.9388,328.94111 z "},"or5":{"name":"OR-5","path":"M 97.489044,277.84769 L 99.083244,273.27724 C 99.960024,271.2646 100.83448,269.6179 101.02645,269.6179 L 101.37546,269.6179 L 101.52388,265.93156 L 103.30018,261.11097 C 104.27712,258.45964 105.43349,254.93808 105.86996,253.28528 C 106.30636,251.63248 106.66343,249.56263 106.66343,248.68561 L 106.66343,247.09103 L 108.17874,244.88516 C 109.01219,243.67193 110.54344,240.68122 111.58151,238.23914 L 113.46897,233.79898 L 113.46897,231.22895 L 115.64204,229.26234 L 116.75644,226.32963 C 117.36934,224.71663 118.2637,221.99327 118.74395,220.2777 C 119.22419,218.56214 119.91342,216.01006 120.27559,214.60642 C 120.63782,213.20277 121.24669,210.7783 121.62865,209.21869 C 122.01061,207.65909 122.73665,205.48982 123.24202,204.3981 C 123.74738,203.30638 124.85663,200.17563 125.70704,197.44089 L 127.25315,192.46864 L 125.90332,189.50618 L 126.47312,188.93637 C 137.46535,192.11608 139.69004,193.8392 151.46659,195.45027 L 150.89048,199.44213 L 145.22818,198.03345 L 145.22818,198.92802 C 145.22818,199.42003 145.65829,200.72447 146.1839,201.82678 L 147.40344,203.74694 C 148.89338,204.45785 150.19201,205.7147 151.20759,207.00844 L 148.63095,207.23374 L 148.63095,209.01157 L 146.36243,208.29156 L 146.36243,209.6913 L 145.67502,209.00387 L 144.38531,210.29357 C 143.67595,211.0029 143.27677,211.62089 143.0624,212.2963 L 139.23981,227.82301 L 125.36257,224.46987 L 123.42259,233.256 L 153.80469,241.17451 L 157.70501,239.23162 L 156.53083,236.72444 L 158.39285,236.72444 L 157.27311,232.47456 L 159.40639,233.3981 L 159.40639,230.48602 L 161.4581,230.48602 L 165.6052,232.34586 L 165.64481,229.99991 L 166.4955,229.14922 C 166.96338,228.68134 167.35431,227.96128 167.36423,227.54911 L 167.38227,226.79968 L 168.88907,228.78463 L 171.77008,228.78463 L 173.10233,223.23138 L 175.74242,220.75112 L 176.52722,224.32425 L 178.09079,224.92425 L 178.81802,228.80059 L 180.53682,229.76249 L 179.9647,231.33671 L 182.06545,234.83115 L 180.73009,238.369 L 182.83448,240.69434 L 185.26746,240.69434 L 186.37189,239.58989 L 189.6732,241.30262 L 191.02739,240.78297 L 192.01629,241.68109 L 195.70263,240.12395 L 195.70263,237.85869 L 198.56315,238.65097 L 200.975,241.26147 L 203.64368,241.26147 L 207.95233,245.70124 L 211.21201,246.08206 L 212.93308,252.32048 L 214.21122,252.89962 L 214.05551,255.55009 C 210.31413,255.65093 209.66265,257.57401 206.63432,257.5164 L 206.01887,262.81236 L 207.61233,262.81236 C 207.58127,263.89363 207.90672,264.69762 208.70754,265.46198 C 207.40972,266.62281 206.7061,267.90248 206.12132,269.65751 L 203.0753,269.6179 L 203.0753,271.65956 L 204.84534,272.36005 L 204.92463,273.27269 L 203.29507,273.92066 L 202.38933,277.37323 C 196.06995,275.64511 193.11657,275.12364 191.32752,273.8506 C 190.45868,273.28505 189.48497,272.4691 189.16381,272.03735 L 188.57984,271.25237 C 187.41646,271.72512 186.23809,272.14441 185.02405,272.45354 L 182.70098,268.00638 L 173.01748,265.66685 L 169.15607,262.81236 L 165.9121,262.89158 L 161.69754,260.43116 L 158.42521,261.44545 C 156.62548,262.0033 154.31573,262.92189 153.29252,263.48673 C 152.26931,264.05159 151.34415,264.51374 151.23668,264.51374 L 151.01612,262.7243 L 146.9486,259.4492 L 144.74028,261.37573 L 146.34466,264.73365 L 147.3265,264.94405 L 147.17916,266.5552 L 142.83063,266.66617 L 142.72082,265.86602 L 136.19963,266.6644 L 135.12637,268.48251 L 136.2752,269.19255 L 134.7735,270.12068 L 133.76617,268.59325 C 133.21214,267.75316 132.75713,266.65046 132.75509,266.14279 L 132.75135,265.21976 C 134.64748,263.82929 135.87017,262.12191 136.6571,259.14688 L 125.81854,256.33626 L 121.24311,273.64558 L 115.89849,272.35751 L 114.86655,277.53005 L 110.76762,276.88155 L 110.01178,277.62347 C 110.39949,278.59323 111.37515,279.16908 111.92604,279.99091 L 111.2526,280.71026 L 97.489044,277.84769 z "},"or3":{"name":"OR-3","path":"M 212.20797,246.5695 C 211.95174,246.56472 212.05012,246.10087 211.58224,245.7985 C 211.11435,245.49613 210.15704,245.24482 209.45488,245.24005 L 208.17822,245.23137 L 205.97668,242.96285 L 203.77514,240.69434 L 200.8711,240.69434 L 200.13004,239.65008 C 199.72244,239.07574 198.83154,238.31012 198.15019,237.9487 C 197.4689,237.58727 196.51187,237.29157 196.02346,237.29157 L 195.1355,237.29157 L 195.1355,239.87853 L 192.26905,241.16109 L 191.12931,240.17675 L 189.6732,240.73549 L 186.37189,239.02277 L 185.26746,240.12721 L 182.79756,240.12721 L 181.31004,238.33489 L 182.63258,234.83115 L 180.47137,231.3342 L 181.53593,229.43186 L 179.37488,228.74596 L 178.64317,224.84557 L 176.95739,224.01718 L 175.9209,220.30278 L 176.98738,219.64364 L 176.98738,216.92633 L 173.1435,216.20521 L 171.14386,211.77077 L 170.15111,211.77077 C 169.74014,210.76273 169.67151,210.05995 169.17167,209.26455 L 168.54658,207.89259 L 169.6932,203.73974 L 175.31277,205.09649 L 174.57703,209.01835 L 178.40521,212.97148 L 185.43142,216.43254 L 187.37151,218.57632 L 191.08915,218.57632 L 191.79665,220.80543 L 195.80948,221.55824 L 197.88279,220.93607 C 199.02311,220.59387 200.72172,220.32998 201.65748,220.34965 C 202.59325,220.36931 204.57695,220.19971 206.06577,219.97276 L 208.77262,219.56013 L 209.07666,219.06822 C 209.24385,218.79767 209.63613,218.57632 209.94839,218.57632 L 210.51609,218.57632 L 209.15345,226.13056 L 209.9425,226.76291 C 210.37646,227.1107 211.17816,228.23896 211.72402,229.27016 L 212.71649,231.14507 L 212.72517,232.37515 C 212.72993,233.05169 212.92134,233.88603 213.15052,234.22924 C 213.37969,234.57244 214.10857,235.13805 214.77024,235.48616 L 215.97323,236.11906 L 215.87069,241.91488 L 215.09003,242.94 L 214.99803,246.0607 L 212.20797,246.5695 z "},"me2":{"name":"ME-2","path":"M 2436.4836,245.76882 L 2435.4679,246.31238 C 2426.1569,216.42719 2413.2101,187.76367 2403.5418,158.03533 L 2403.5347,157.32642 L 2404.9839,157.32642 L 2406.8541,155.14229 L 2409.2059,155.75732 L 2409.2059,157.26798 L 2411.9768,160.25772 L 2413.9981,159.86844 L 2414.2534,152.82133 L 2413.2253,152.18594 L 2413.9273,150.35685 L 2412.0219,148.9636 L 2412.7301,147.1181 L 2413.4866,147.1181 C 2413.9027,147.1181 2414.4009,147.37331 2414.5937,147.68523 L 2414.9441,148.25236 C 2416.6589,148.21014 2418.423,148.40812 2420.0893,147.95547 L 2420.3861,147.65858 L 2419.8293,144.7455 L 2414.272,141.32607 L 2415.4977,135.19792 C 2416.7852,133.29378 2417.7563,131.06494 2419.499,129.53711 L 2419.9814,129.53711 L 2419.9814,127.97035 L 2423.9513,124.94236 L 2423.9513,122.12884 L 2422.2499,121.47596 L 2422.2499,120.08153 C 2422.2499,119.31459 2422.5111,118.1991 2422.8303,117.60265 C 2423.1495,117.00622 2424.0462,115.88263 2424.8231,115.10581 L 2426.2355,113.6934 L 2426.0616,110.98159 L 2425.8877,108.26979 L 2422.8792,107.91688 L 2423.4493,106.4312 L 2421.7025,105.76087 L 2422.3917,102.31493 L 2421.1156,102.31493 L 2421.1156,100.7349 L 2422.691,100.1304 L 2421.9331,96.360083 L 2419.572,95.308354 L 2420.4411,84.486178 L 2421.711,84.062895 L 2422.5695,82.007995 C 2423.0418,80.877804 2423.7024,79.78362 2424.0375,79.576482 L 2424.6469,79.199858 L 2421.7206,61.765232 L 2437.683,7.8880076 L 2439.4501,6.4924292 L 2445.3863,6.7537502 L 2445.9058,11.29078 L 2448.6214,16.878604 L 2456.2313,18.956993 L 2462.2325,13.124634 L 2467.0531,11.047524 L 2467.0531,8.171572 L 2468.7901,8.171572 L 2469.4429,6.4701859 L 2473.6418,6.4701859 L 2475.6439,5.0062515 L 2474.9342,3.4487544 L 2474.2246,1.8912568 L 2476.1158,0 L 2482.3933,0.11593585 L 2483.0883,0.64332471 C 2483.4706,0.93338835 2485.0594,1.6188122 2486.619,2.1664883 C 2488.1786,2.7141645 2490.3479,3.5875359 2491.4396,4.1073133 C 2492.5313,4.6270913 2494.573,5.9730772 2495.9766,7.0983932 L 2498.5287,9.1444223 L 2502.5169,9.874592 L 2526.0568,75.323204 L 2527.3878,76.145784 L 2526.0342,79.11658 L 2528.7927,81.673055 L 2527.783,83.306697 C 2528.8075,85.662272 2528.9942,88.511357 2530.1874,90.777319 L 2530.6024,91.192293 L 2535.0808,90.928045 L 2537.8935,92.770986 L 2545.5383,92.292738 L 2545.9785,90.97236 L 2548.0311,90.97236 L 2548.3754,91.869439 C 2548.5647,92.36283 2548.7196,93.274285 2548.7196,93.894899 L 2548.7196,95.023281 L 2547.8689,95.873974 C 2547.401,96.341856 2547.0182,97.071075 2547.0182,97.494471 L 2547.0182,98.264274 C 2548.4066,99.727671 2549.7339,101.26622 2551.4285,102.37529 L 2552.1525,102.60854 L 2552.297,107.13553 L 2551.409,109.18518 L 2558.0772,115.65114 L 2561.2132,117.04357 L 2563.4822,114.77449 L 2562.7749,111.95612 L 2568.0057,111.95612 L 2578.7285,123.2987 L 2579.3993,123.2987 C 2579.7683,123.2987 2580.4225,123.74531 2580.8531,124.29117 L 2583.265,128.25087 L 2582.1269,132.37276 L 2580.4788,132.37276 L 2580.4788,134.64127 L 2579.4907,134.64127 L 2578.7313,140.36586 L 2577.076,141.00104 L 2577.076,142.45062 L 2574.4747,144.15505 L 2572.539,142.73959 L 2572.539,139.74543 L 2572.0788,139.74543 C 2571.8257,139.74543 2571.0601,140.26579 2570.3774,140.90178 L 2569.1362,142.05813 L 2569.1362,143.79635 L 2570.9896,145.64964 L 2569.7034,146.07837 L 2569.7034,147.68523 L 2568.002,147.68523 L 2568.002,148.94994 L 2565.0298,147.00253 L 2562.8469,149.18547 L 2563.996,154.20721 L 2562.0797,155.65006 L 2560.6293,155.0935 L 2558.9279,155.74639 L 2558.9279,157.10353 C 2558.9279,157.84996 2558.7774,158.46068 2558.5935,158.46068 C 2558.4096,158.46068 2557.8353,157.97783 2557.3174,157.38769 L 2556.3758,156.31469 L 2552.0866,156.88756 L 2552.3729,157.8159 C 2552.5303,158.32649 2552.7764,159.71828 2552.9198,160.90877 L 2553.1805,163.07329 L 2554.5298,164.69909 L 2552.7251,164.69909 L 2553.469,166.68404 L 2551.7551,165.29321 L 2550.421,166.62733 L 2550.421,168.66899 L 2549.9673,168.66899 C 2549.7177,168.66899 2549.1726,168.34998 2548.7559,167.96008 L 2547.9982,167.25117 L 2548.5926,169.72371 L 2547.6895,173.48959 L 2546.8859,170.93751 L 2545.3359,170.93751 L 2542.4803,165.30216 L 2541.4883,165.66817 C 2540.9426,165.86947 2540.3087,166.308 2540.0796,166.64268 L 2539.6629,167.25117 L 2539.6455,165.83335 L 2537.9442,165.83335 L 2537.9442,167.49914 L 2536.2428,166.84625 L 2536.2428,169.48358 L 2537.7674,170.79368 C 2538.606,171.51424 2539.8493,172.24364 2540.5304,172.41458 L 2541.7686,172.72536 L 2543.1676,175.33938 L 2542.4008,177.75549 L 2539.0781,179.47374 L 2539.362,183.13077 L 2535.3921,182.8052 L 2533.8323,181.24694 L 2533.394,176.32523 L 2534.7124,173.81182 C 2534.1816,173.05864 2533.5808,172.48606 2532.7814,172.07176 L 2532.2945,172.07176 L 2531.5138,175.18226 L 2530.4769,172.07176 L 2529.9166,172.07176 C 2529.6084,172.07176 2528.9916,172.43635 2528.546,172.88195 C 2528.1004,173.32755 2527.7358,173.96341 2527.7358,174.29497 C 2527.7358,174.62652 2527.2254,175.21656 2526.6016,175.60615 L 2525.4673,176.31451 L 2525.4673,176.95934 C 2525.4673,177.314 2525.8238,177.90001 2526.2595,178.26159 L 2527.0516,178.91902 L 2526.4677,181.15186 L 2527.8643,182.83472 L 2528.6992,182.31879 L 2530.1951,185.11402 L 2529.6142,185.69496 L 2527.1859,184.83822 C 2525.8503,184.367 2524.1349,183.98147 2523.3738,183.98147 C 2522.6127,183.98147 2521.5148,183.72717 2520.9341,183.41637 L 2519.8782,182.85128 L 2518.0946,183.53569 L 2518.0946,185.11572 L 2516.6768,185.10751 L 2515.7325,182.13419 L 2514.7882,179.16087 L 2515.4051,175.35645 L 2513.0118,176.63731 L 2511.3345,179.728 L 2511.2891,178.31018 L 2510.6452,178.31018 C 2510.2911,178.31018 2509.3787,178.98204 2508.6176,179.8032 L 2507.234,181.29621 L 2507.8739,183.84593 L 2510.1548,184.44241 L 2510.1548,188.5185 L 2509.0206,188.5185 L 2509.0206,191.73223 L 2508.3117,191.80395 C 2507.9218,191.84339 2506.9392,192.03598 2506.1281,192.23192 L 2504.6534,192.58817 L 2496.5345,188.49955 L 2494.6763,192.39619 L 2492.1637,192.04444 C 2491.6471,191.89363 2491.3299,192.62278 2490.8179,193.19098 L 2487.4697,193.18426 L 2487.4697,185.68285 L 2489.8866,185.68285 L 2489.5351,183.55612 C 2489.3417,182.38642 2489.1808,180.98277 2489.1773,180.43691 L 2489.1711,179.44444 L 2487.0314,179.44444 L 2486.266,174.34028 L 2482.2587,174.52939 L 2483.7474,175.82278 L 2484.6341,176.16302 L 2484.6341,178.81037 L 2483.3702,179.59149 L 2483.9496,183.91181 L 2482.082,185.57331 L 2472.1572,186.38414 L 2471.8793,183.02853 L 2469.4404,183.40782 L 2468.7901,181.71295 L 2467.8934,181.71295 C 2467.4003,181.71295 2466.2438,182.10232 2465.3235,182.57821 L 2463.6503,183.44347 L 2463.6503,185.68285 L 2462.5624,185.68285 C 2461.9641,185.68285 2461.0709,185.83776 2460.5775,186.02709 L 2459.6804,186.37134 L 2459.3292,190.54045 C 2460.8844,190.49029 2461.7741,191.51177 2463.3292,194.47158 L 2464.4408,197.00569 C 2464.9418,198.53741 2465.3517,200.46127 2465.3517,201.28096 C 2465.3517,202.10063 2465.0716,203.29459 2464.7293,203.93419 L 2464.1069,205.0971 L 2465.5146,210.12488 L 2471.1408,209.93632 L 2470.6827,206.71384 L 2471.9473,205.99132 L 2475.0038,208.99755 L 2474.754,210.37481 C 2474.6166,211.1323 2474.3439,212.01148 2474.148,212.32854 L 2473.7917,212.90503 L 2469.8192,212.90503 L 2470.2284,215.59889 C 2470.4534,217.08052 2470.6605,219.10117 2470.6885,220.08923 C 2470.7165,221.07729 2470.9262,222.07221 2471.1544,222.30016 L 2471.5695,222.71461 L 2471.2005,224.1844 C 2470.9977,224.99279 2470.4902,225.99564 2470.0729,226.41296 L 2469.3141,227.17173 L 2465.8995,226.42177 C 2463.6148,225.10215 2461.0305,223.46141 2458.5893,222.44589 L 2457.8191,226.03947 L 2455.7105,226.35883 L 2454.2843,226.0862 C 2453.4999,225.93624 2452.7192,225.58882 2452.5494,225.31415 C 2452.3797,225.03947 2451.7752,224.81473 2451.2061,224.81473 L 2450.1715,224.81473 L 2449.6448,226.82886 L 2447.3515,227.00161 L 2445.8803,224.2525 L 2445.8803,220.74712 L 2443.1831,218.97985 L 2436.4188,226.97463 L 2434.1596,226.38383 L 2434.1683,227.15889 C 2434.173,227.58517 2434.3693,228.23632 2434.6042,228.60589 L 2435.0316,229.27783 C 2436.4072,229.49983 2437.6092,229.6763 2438.9213,229.74498 L 2442.4994,232.20836 L 2442.3682,234.89174 C 2442.296,236.3676 2442.0448,238.03802 2441.81,238.60377 L 2441.3832,239.63241 L 2442.5985,242.29979 L 2440.4123,243.17456 C 2439.2098,243.65568 2438.0625,244.31391 2437.8626,244.63729 C 2437.6627,244.96068 2437.0421,245.46987 2436.4836,245.76882 z "},"wa5":{"name":"WA-5","path":"M 300.67012,27.176996 L 300.2031,28.103065 L 301.22577,30.461944 L 303.78708,29.820931 L 304.58348,30.961682 L 303.13671,32.182308 L 303.13671,35.142011 L 304.36632,36.390465 L 303.01939,39.970465 L 305.53602,45.183206 L 298.55212,49.77316 L 299.6523,52.65123 L 302.11152,52.707767 L 300.74638,56.323212 L 303.45708,56.269801 C 302.484,59.0695 302.81685,59.976928 301.89707,62.19029 C 302.53442,65.069903 303.62484,65.97728 304.76857,67.311088 L 303.45708,69.402375 C 306.71654,72.424042 309.06984,75.179187 311.55639,78.547325 L 310.22718,81.471582 L 317.68283,89.816325 L 318.08101,90.963967 L 319.83293,92.796434 L 320.18738,95.738414 L 327.04623,97.422616 L 328.46432,94.40041 L 327.91505,92.025292 L 331.69771,90.617207 L 332.55788,90.970988 L 334.20609,89.606335 C 335.33156,92.017261 336.48367,90.936802 337.44922,92.681437 L 336.1556,95.561186 L 338.06966,97.475245 L 344.50424,93.577183 L 347.69312,94.49782 L 347.53321,96.315013 L 351.0959,96.766334 L 351.0959,94.515542 L 352.8859,93.02683 L 354.72906,94.196533 L 360.22312,92.58376 C 360.54502,93.43671 363.47879,92.024254 364.54694,96.022114 L 363.93571,98.653744 C 366.5456,101.11657 366.73018,102.06026 366.40837,103.32376 L 364.70698,104.72386 L 351.71619,168.91574 L 344.29035,167.60425 L 344.29035,172.08811 L 342.9257,174.28574 L 344.75114,178.1493 L 380.17851,185.4214 L 381.04738,188.80069 L 379.96629,190.80336 L 381.04738,192.75287 L 379.94857,194.80871 L 374.9153,192.87693 L 371.93788,194.24158 L 369.29718,192.50475 L 362.06122,196.37959 L 360.05855,200.93434 L 356.73174,204.85752 L 354.55184,204.29039 L 352.85045,208.36663 L 350.10342,208.36663 L 348.79193,209.94396 L 341.45471,210.40475 L 340.26728,211.6099 L 342.44718,215.45574 L 343.15609,220.18772 L 340.40906,223.44871 L 427.55193,240.37395 L 426.96708,236.15594 L 425.95688,236.15594 L 425.95688,234.52544 L 428.79253,231.4594 L 428.79253,230.6796 C 428.79252,230.25303 428.48341,229.4128 428.10134,228.80098 L 427.39243,227.68445 L 428.68619,226.39069 L 425.21253,218.00782 L 427.03797,214.32148 L 455.47958,58.649847 C 396.2571,48.144418 364.40154,41.395664 300.67012,27.176996 z "},"wa4":{"name":"WA-4","path":"M 273.1157,228.70571 L 268.87811,224.12165 C 263.52394,225.19138 257.56715,226.40016 254.06721,227.74803 L 252.62438,226.55058 L 246.30701,225.8081 L 242.72633,227.92327 L 241.66597,226.23256 L 242.33534,224.26734 L 236.61155,219.71058 L 232.65305,219.71058 L 229.28306,216.87493 L 220.03285,216.87493 L 216.68639,215.14442 L 216.73275,211.98764 L 222.64124,211.53527 L 227.77019,206.38305 L 229.81633,197.63811 L 233.5212,198.43575 L 238.471,177.88744 L 243.05788,178.87343 L 244.33114,177.15686 L 242.93419,170.46259 C 244.93164,168.44717 246.07686,166.62841 247.3532,164.02297 L 246.59869,161.64584 L 249.86342,159.002 L 247.33902,157.04285 L 245.50016,147.20402 L 249.01273,145.38759 L 249.01273,143.75887 L 254.18681,138.4351 L 253.7606,134.10321 L 257.74005,134.35771 L 258.69243,129.83361 L 256.72993,128.39861 L 258.08679,127.04175 L 258.08679,124.94108 L 254.77033,123.78496 L 255.11243,118.66798 L 259.45124,114.22464 L 261.51516,114.22464 C 262.49454,112.18778 264.40545,112.0014 266.66882,109.85125 C 268.71045,109.70721 270.38702,108.92116 272.26501,108.02182 L 272.26501,103.56015 L 275.53473,102.42031 L 274.62687,97.494341 L 276.42144,95.497503 L 273.90479,92.957311 L 273.82397,87.656614 L 277.06688,83.97186 L 276.74033,81.479602 C 278.56329,80.56459 280.67108,80.575303 282.52964,80.764044 L 285.96803,78.985988 L 285.33063,77.324958 L 288.25142,75.970247 C 286.91456,72.439434 285.61329,70.261614 285.30897,65.983099 L 283.55864,65.311426 L 285.3363,63.34709 L 284.60425,61.439423 L 286.40551,59.449084 L 286.15966,56.093947 L 290.12956,55.7469 L 291.26382,54.392561 L 296.03036,54.298657 L 296.36798,56.661076 L 302.91142,56.559923 L 302.52767,58.258199 C 302.4151,59.251304 302.15609,60.446658 301.95215,60.914539 C 301.74821,61.382421 301.64709,62.273431 301.7274,62.894567 C 301.80765,63.515704 302.35731,64.703532 302.94877,65.534194 L 304.41792,67.392425 L 302.99733,69.387408 C 306.4486,72.651052 308.68297,75.306235 311.20366,78.56988 L 309.8465,81.53349 L 317.3903,89.948557 L 317.71242,90.998913 L 319.55144,92.921128 L 319.90935,95.94317 L 327.19341,97.777905 L 328.87829,94.400455 L 328.31609,92.250572 C 330.82964,91.032312 332.01987,90.583571 332.49343,91.284242 L 334.19183,89.996292 C 335.23635,92.250703 336.81773,91.391247 337.11063,92.679282 L 335.71361,95.837553 L 338.07451,97.974097 L 344.57392,93.956013 L 347.42893,94.627579 L 347.26086,96.578184 L 351.37946,97.141961 L 351.39307,94.663688 L 353.01113,93.37106 L 354.69802,94.628429 L 360.21208,92.984204 C 360.91384,93.552291 361.72824,93.512796 362.5844,93.597282 L 364.17275,96.031631 L 363.50864,98.677689 C 365.49237,101.08616 366.29497,101.84823 366.1312,103.21874 L 364.48836,104.57523 L 351.40715,168.26065 L 343.8804,167.09319 L 343.94554,171.94619 L 342.42779,174.28334 L 344.48117,178.7308 L 379.88494,185.67069 L 380.73398,188.632 L 379.4124,190.78701 L 380.50747,192.83308 L 379.74,194.35459 L 374.925,192.30191 L 372.0931,193.59221 L 369.24401,191.92127 L 361.84135,196.09631 L 359.96352,200.30601 L 356.63697,204.35604 L 354.26146,203.92911 L 352.5926,207.80087 L 349.8224,207.80087 L 348.5184,209.37209 L 341.44059,209.84048 L 339.68719,211.59385 L 341.88987,215.45711 L 342.59991,220.26232 L 338.5387,224.75762 L 332.80328,226.80946 L 328.54011,225.13922 L 317.28499,224.81473 L 315.08322,223.14942 L 312.16172,223.11335 L 309.53404,225.9104 L 295.86488,225.50219 C 292.84862,226.49277 290.48134,227.34428 286.81611,227.08325 L 284.7483,229.10686 L 273.1157,228.70571 z "},"fl23":{"name":"FL-23","path":"M 2238.6065,1344.7508 L 2235.6823,1345.6546 L 2234.9911,1349.341 L 2221.1319,1352.3184 L 2225.3499,1372.3983 L 2215.9214,1384.5384 L 2215.1061,1396.8912 L 2204.437,1398.8938 L 2205.922,1403.9094 L 2208.8677,1403.2182 L 2209.6653,1407.4894 L 2207.3613,1409.2617 C 2208.084,1412.6014 2208.9096,1415.9201 2209.5589,1419.275 C 2206.6486,1420.4236 2204.1598,1420.8697 2201.39,1421.3626 L 2203.3914,1430.8835 L 2224.5853,1426.4401 L 2228.7704,1442.8817 L 2239.1167,1440.8437 L 2239.9231,1442.0476 L 2253.3835,1439.2309 C 2253.3278,1434.2373 2252.9443,1433.2718 2251.9518,1427.6225 L 2255.9394,1428.3668 L 2258.456,1423.2272 L 2260.8663,1422.0752 L 2261.3626,1423.3158 L 2262.4082,1422.9259 L 2261.6993,1421.774 L 2263.188,1421.0473 L 2263.897,1422.5715 L 2262.1601,1424.6627 L 2265.2261,1426.4882 L 2266.8566,1425.8502 L 2267.2643,1423.812 L 2266.0768,1422.7664 L 2265.9174,1421.1891 L 2266.1655,1419.8421 L 2267.0162,1417.2724 L 2266.6617,1416.4748 L 2266.1123,1416.8647 L 2266.2718,1417.4142 L 2265.3679,1417.9104 L 2264.7831,1419.4522 L 2264.8894,1419.9485 L 2265.2793,1419.8421 L 2265.4211,1420.3029 L 2264.6413,1420.6397 L 2263.7906,1419.0978 L 2262.0538,1420.0903 L 2262.1956,1420.4979 L 2258.7874,1421.8448 L 2256.5597,1413.5151 L 2258.9523,1410.4845 L 2258.2079,1402.3675 L 2259.5194,1399.9218 L 2257.5699,1396.2532 C 2257.9441,1395.3405 2259.3954,1392.301 2259.3954,1392.301 L 2262.4437,1390.6173 L 2262.4791,1391.4148 C 2262.4063,1392.9449 2261.4335,1394.3391 2261.4335,1394.3391 L 2263.7197,1395.2429 L 2264.0564,1402.208 L 2264.4818,1402.208 L 2264.6413,1406.107 L 2264.418,1406.1056 L 2264.4534,1407.2576 L 2264.9958,1407.1172 L 2264.4818,1395.3493 L 2263.8792,1390.5464 L 2262.1601,1388.0298 L 2257.499,1392.3718 L 2258.1902,1393.2403 L 2256.6483,1394.5872 L 2255.8508,1398.2027 L 2254.8938,1398.2027 L 2252.1113,1395.4202 L 2252.1113,1397.6355 L 2250.0554,1397.6355 L 2248.1414,1393.6302 L 2248.1882,1387.9437 L 2249.9833,1385.9639 L 2249.9365,1382.8181 L 2247.0932,1378.2531 L 2243.0651,1378.7925 L 2241.7131,1377.1556 L 2239.8294,1376.9708 L 2237.571,1375.5973 L 2233.9822,1358.9379 L 2238.5002,1353.1336 L 2237.9179,1351.3044 L 2240.6447,1348.9688 L 2238.6065,1344.7508 z "},"fl10":{"name":"FL-10","path":"M 2099.7841,1335.6767 L 2099.6423,1344.0419 L 2097.9055,1348.1181 L 2098.5789,1350.8474 L 2106.2529,1358.2201 L 2107.015,1364.1041 L 2107.8302,1363.8027 C 2108.2716,1363.6334 2108.6277,1363.2755 2108.6277,1363.0229 C 2108.6277,1362.7704 2108.3638,1362.4741 2108.0429,1362.3672 L 2107.458,1362.1722 L 2107.2099,1358.8049 L 2111.5343,1357.7239 L 2110.7899,1353.3641 L 2112.6331,1350.5461 L 2111.4102,1348.2599 L 2113.1072,1347.4513 L 2112.7439,1346.9048 L 2110.4532,1347.7637 L 2108.8758,1346.2041 L 2106.6251,1345.7255 C 2105.3852,1345.4655 2103.7989,1345.2302 2103.0982,1345.1938 L 2101.8222,1345.1229 L 2100.5993,1343.8823 L 2101.4855,1342.1455 C 2101.9798,1341.1894 2102.3908,1340.0874 2102.3893,1339.6821 C 2102.3878,1339.2766 2101.794,1338.2022 2101.0778,1337.3072 L 2099.7841,1335.6767 z "},"tx10":{"name":"TX-10","path":"M 1294.6386,1281.3742 L 1296.6235,1284.068 L 1295.2411,1286.6201 L 1296.0209,1287.1163 C 1296.443,1287.3838 1297.3349,1287.6078 1298.0059,1287.6126 L 1299.2287,1287.6126 L 1301.4972,1291.4761 L 1305.0064,1292.2382 L 1305.9457,1293.9396 L 1315.4628,1292.3623 L 1317.306,1298.388 L 1326.2737,1293.2839 L 1328.8081,1290.395 L 1329.836,1290.9445 C 1330.3986,1291.2455 1331.3518,1291.4594 1331.9627,1291.4052 C 1332.5736,1291.3511 1333.2304,1291.0902 1333.416,1290.8381 L 1333.7527,1290.3773 L 1336.5174,1291.0685 L 1337.1555,1292.6104 C 1337.504,1293.4517 1337.9436,1294.8666 1338.1479,1295.765 L 1338.5201,1297.3955 L 1343.4648,1305.8493 L 1345.3257,1307.2317 C 1346.3496,1307.9871 1347.4204,1308.5963 1347.7005,1308.5963 C 1347.9806,1308.5963 1348.8345,1309.0955 1349.5969,1309.6951 L 1350.9792,1310.7762 L 1354.3466,1310.3509 L 1359.2912,1320.1338 L 1361.7015,1320.3111 L 1363.846,1322.2606 L 1367.9576,1322.9163 L 1367.9576,1323.7138 L 1371.3604,1323.2176 L 1371.3604,1322.2783 C 1371.3604,1321.7593 1370.9615,1320.7586 1370.4743,1320.0629 L 1369.5881,1318.8047 L 1371.4491,1318.078 L 1372.4592,1315.4373 L 1374.0366,1315.0474 C 1374.9054,1314.8308 1377.0061,1313.9383 1378.6976,1313.0625 L 1381.7637,1311.4674 L 1388.0198,1315.2778 L 1390.6428,1314.0904 L 1390.6428,1313.5055 L 1387.7186,1308.6849 L 1388.9769,1306.3278 L 1387.7717,1306.3278 L 1386.6374,1303.3326 L 1388.5161,1301.2591 L 1392.2378,1300.0362 L 1392.9291,1297.2538 L 1395.5343,1297.2538 L 1396.4913,1295.2511 C 1397.017,1294.1487 1397.4495,1292.9365 1397.4483,1292.5572 C 1397.4471,1292.1778 1396.9215,1291.0064 1396.2786,1289.952 L 1395.1089,1288.0379 L 1394.2582,1289.2431 L 1391.2631,1290.4482 L 1390.3592,1291.9901 L 1382.1713,1293.5142 L 1381.4447,1283.554 L 1367.2842,1285.4149 L 1365.7246,1283.3591 L 1365.6891,1281.0728 L 1364.4663,1280.5235 C 1363.7899,1280.2156 1363.0413,1279.5735 1362.818,1279.1056 C 1362.5947,1278.6378 1362.0877,1277.5413 1361.6838,1276.6776 L 1360.9572,1275.118 L 1360.5495,1275.7738 C 1359.2382,1276.8524 1357.6106,1277.3178 1356.0125,1277.8473 L 1354.5238,1276.3763 L 1353.7263,1276.8726 C 1353.2857,1277.1514 1352.2816,1277.3995 1351.4932,1277.4043 L 1350.0576,1277.4043 L 1347.7537,1275.7915 L 1346.9384,1276.3054 C 1346.4899,1276.5892 1345.5436,1276.8324 1344.8295,1276.8371 L 1343.518,1276.8371 L 1339.0695,1274.5686 L 1337.8644,1272.3001 L 1338.4493,1271.2013 C 1338.7721,1270.598 1339.0341,1269.4725 1339.0341,1268.7023 L 1339.0341,1267.3023 L 1334.8161,1263.935 L 1336.1807,1260.9575 L 1337.9885,1260.9575 L 1338.0948,1259.4156 L 1339.1582,1259.1321 L 1339.5303,1257.2889 L 1337.2796,1255.1976 L 1309.2598,1273.0799 L 1299.4414,1276.9966 L 1290.6332,1272.6368 L 1288.3115,1272.814 L 1286.4683,1271.1481 L 1283.6859,1272.1583 C 1282.1546,1272.7076 1280.7758,1273.3016 1280.6198,1273.4875 C 1280.4639,1273.6734 1279.6344,1274.0043 1278.7767,1274.2142 L 1277.2171,1274.5863 L 1275.5157,1275.7029 L 1275.5157,1279.1233 L 1272.1306,1282.6502 C 1272.5846,1283.537 1273.3569,1284.0898 1274.1801,1284.6016 L 1276.5081,1284.0503 L 1278.895,1282.3907 L 1282.5871,1281.2678 L 1287.1418,1286.3365 C 1288.4203,1287.0129 1289.7113,1287.6609 1291.0586,1288.1797 L 1294.6386,1281.3742 z "},"tx11":{"name":"TX-11","path":"M 1194.4163,1295.1609 L 1194.4163,1285.3454 L 1136.0785,1285.3454 L 1135.3581,1283.0757 L 1127.5936,1277.8042 L 1124.5553,1270.6553 C 1118.9301,1266.5851 1117.093,1265.5168 1112.1826,1264.8774 L 1112.1826,1259.2575 L 1105.9442,1259.2575 L 1105.9442,1236.1901 C 1080.5179,1235.8447 1055.0916,1235.5861 1029.6654,1234.2549 L 1028.2476,1232.3856 L 1028.2476,1227.4983 C 1023.7748,1223.3262 1022.9472,1222.6563 1020.4042,1222.4867 L 1019.7554,1223.1355 C 1018.3582,1221.7388 1017.1331,1220.114 1015.4971,1218.9914 C 1013.7409,1219.3873 1012.8423,1220.212 1011.5149,1221.4656 L 1007.4614,1222.3952 L 1001.9047,1217.2935 L 997.72981,1216.1039 L 996.91661,1215.0215 L 994.21981,1215.0215 L 993.43361,1215.9413 C 990.33741,1215.7456 988.09901,1215.4784 985.14581,1214.282 L 983.98571,1212.0913 C 980.96851,1212.8089 978.32471,1211.3545 975.39401,1211.3358 C 974.55341,1211.3178 973.66021,1211.0977 973.40901,1210.8467 C 973.15801,1210.5956 972.88341,1209.8373 972.79891,1209.1613 L 971.81821,1198.8583 L 968.13191,1198.5029 L 965.36341,1195.9996 L 965.09751,1193.5838 L 963.63241,1193.3481 L 962.91361,1191.0831 L 959.90855,1191.6792 L 956.83608,1189.0281 C 956.76417,1186.6169 956.2901,1184.5074 955.5145,1182.0962 L 953.46115,1182.7479 L 951.11806,1180.7417 L 951.11806,1178.1581 L 949.9838,1178.1581 L 950.01732,1176.3991 L 947.37013,1175.5785 L 996.48831,1177.2059 L 997.80561,1144.8926 L 1042.4258,1146.134 L 1042.4258,1118.4415 L 1068.6974,1119.1767 L 1067.2559,1173.4679 C 1076.4926,1173.5278 1085.7308,1174.0341 1094.9685,1173.9671 C 1095.8277,1155.774 1095.4592,1137.5213 1096.5202,1119.3376 L 1122.5586,1119.9296 L 1121.9304,1146.966 L 1135.921,1146.966 C 1136.6772,1147.6244 1137.2752,1148.3473 1137.7034,1149.2345 C 1137.7034,1149.5019 1137.2609,1150.4653 1136.7201,1151.0061 L 1128.7804,1154.9102 L 1124.943,1155.0679 L 1121.8238,1157.2516 L 1121.8238,1174.0242 L 1213.0561,1174.7553 C 1219.5571,1171.0581 1225.743,1166.7607 1232.434,1163.4127 L 1244.3819,1182.7516 L 1248.5432,1180.5037 L 1253.1119,1188.37 L 1237.3928,1198.4355 L 1247.9994,1214.9748 L 1252.8996,1212.3366 L 1267.5759,1235.9815 L 1267.5834,1238.5573 L 1272.0608,1246.0663 L 1265.0238,1253.5531 L 1257.198,1271.8462 L 1258.6494,1272.5015 L 1258.6431,1273.7001 L 1256.6208,1275.7042 L 1242.3583,1271.7343 L 1231.7021,1271.7343 L 1232.5305,1294.4195 L 1194.4163,1295.1609 z "},"ga11":{"name":"GA-11","path":"M 1912.5075,953.44968 L 1900.5092,954.07001 L 1888.2805,957.08288 L 1905.6488,1010.7651 L 1907.4743,1009.6663 C 1910.5491,1009.3001 1912.4139,1008.44 1914.8824,1006.7598 L 1924.9489,1007.256 L 1925.7287,1002.0633 L 1931.0633,1001.5493 L 1933.9166,1000.6455 C 1935.2746,1000.5582 1936.623,1000.3796 1937.922,999.95423 L 1937.1954,993.83991 L 1942.2109,993.83991 L 1944.2313,990.43713 L 1947.3328,990.01179 C 1948.4118,988.64291 1948.9246,986.96665 1949.495,985.33298 L 1951.9762,985.33298 L 1952.6319,987.03436 L 1954.3687,987.03436 L 1954.3687,985.82921 L 1955.6271,986.60902 L 1955.2194,985.26209 C 1954.9997,984.52124 1954.2542,983.02193 1953.5535,981.9302 C 1952.8527,980.83848 1951.9622,978.9618 1951.5685,977.76532 L 1950.8419,975.60315 L 1944.1604,976.36525 L 1944.1604,973.13971 L 1940.1728,966.54684 L 1939.0562,961.15912 L 1923.4602,962.75416 C 1919.4212,959.7409 1916.1231,957.0805 1912.5075,953.44968 z "},"ca48":{"name":"CA-48","path":"M 249.52434,1003.804 L 247.25537,998.66186 C 245.42164,996.70147 243.56916,994.74816 241.35649,993.20864 L 239.70468,992.09457 C 244.02754,991.46307 244.21101,991.69917 244.34491,989.23352 L 246.86122,986.97226 L 245.56645,984.22486 L 250.78352,983.92032 C 253.35247,986.05107 255.15303,988.10743 256.63137,990.38689 C 255.71553,992.18735 254.82448,992.9219 250.83508,995.29249 L 253.17729,995.88667 L 253.35155,998.91667 C 252.44108,999.89531 252.52835,1000.0782 253.31425,1000.6422 L 251.68985,1004.4685 L 249.52434,1003.804 z "},"ca36":{"name":"CA-36","path":"M 218.49412,960.82235 L 217.18263,963.2504 L 219.62837,972.99793 L 219.14986,976.31206 L 222.09193,978.42705 L 222.10956,981.02631 C 222.67624,981.1529 224.76798,981.66433 224.76798,981.66433 L 225.24649,981.61119 L 224.59075,978.811 L 226.38075,979.2009 L 223.35962,975.92346 L 224.28588,974.12033 L 220.65024,972.29939 L 220.5641,968.9619 L 219.29623,968.43952 C 219.04315,964.41341 219.7776,965.24692 220.01827,962.36426 L 218.49412,960.82235 z "},"ca35":{"name":"CA-35","path":"M 224.37092,973.67445 L 220.93986,971.96694 L 220.89619,968.68401 L 219.52204,968.22594 L 219.54802,965.62684 L 224.91044,966.86086 L 226.58904,965.78842 C 226.7972,966.22114 227.42118,966.41997 228.14909,966.4109 L 224.37092,973.67445 z "},"ca11":{"name":"CA-11","path":"M 120.57639,753.54254 L 111.48402,751.47576 L 110.74295,750.44228 C 110.33536,749.87384 109.69734,749.40545 109.32513,749.40137 L 108.64838,749.39394 L 106.28572,745.7498 L 108.48799,742.01724 L 107.09166,740.33474 L 103.39954,740.33474 L 102.01643,738.66817 L 106.66343,736.55301 L 106.66343,734.09632 L 105.29199,734.09632 C 104.53771,734.09632 103.51688,733.94144 103.02348,733.75208 L 102.1264,733.40783 L 102.1264,731.47454 L 104.49887,728.41642 L 103.71033,722.13405 L 100.8913,718.78385 L 99.181304,718.78385 L 100.52545,708.77176 L 97.493864,706.78545 L 99.290754,704.79987 L 99.290754,701.66382 L 97.022244,701.07055 L 97.022244,700.5438 C 97.022244,700.25411 96.348044,699.34285 95.524054,698.51887 L 94.025814,697.02062 L 96.171544,696.26476 L 96.171544,692.41236 L 101.00252,692.06307 L 101.74358,693.9942 L 99.857884,695.37306 L 99.857884,698.28016 L 101.17759,699.88332 C 101.90346,700.76504 103.05076,702.64938 103.72723,704.07072 C 104.4037,705.49205 105.47858,707.21471 106.11592,707.89883 L 107.88318,709.34547 L 112.24528,707.4584 L 114.68988,704.02529 L 112.80016,692.31153 L 113.58387,691.51125 C 114.01489,691.0711 114.70679,689.88155 115.12136,688.86781 L 115.87507,687.02464 L 119.2669,685.74361 L 118.57506,682.58147 L 119.75627,682.18777 L 120.11078,678.86252 L 121.32694,678.3199 C 121.99581,678.02142 122.54303,677.59329 122.54303,677.36848 C 122.54303,677.14361 123.57577,675.84279 124.83797,674.47771 L 127.13297,671.99573 L 128.09896,673.15755 C 128.63031,673.79659 129.47152,674.91956 130.09236,675.1573 L 140.52362,675.76504 C 140.77174,675.82016 141.69315,675.56881 142.57124,675.20653 C 143.44932,674.84425 144.72536,674.55172 145.40688,674.55649 C 146.0884,674.56125 146.95628,674.76235 147.33557,675.00333 L 148.02514,675.44155 L 149.59932,689.00959 L 145.1815,709.24253 L 142.66016,707.59049 C 133.93144,707.94324 133.62924,707.64249 132.92386,709.18123 L 129.75054,709.34201 C 129.36076,707.41961 129.22677,706.00882 129.34857,704.01332 L 133.92649,694.90835 C 133.41279,692.51836 133.05591,689.35809 131.08537,687.75176 L 128.20519,698.88466 L 123.91553,699.88349 L 125.99344,703.34496 C 125.5272,706.6934 125.47942,709.74813 124.85737,713.07224 L 115.24344,719.19428 L 114.76193,723.9361 L 116.71045,725.87296 L 116.17134,730.5706 L 113.78526,730.86681 L 112.84687,733.93118 L 114.42698,735.68105 L 114.34241,740.29822 C 115.12968,740.42849 115.31859,740.05407 115.94789,739.60513 L 116.82365,739.02172 L 118.56712,740.46858 L 120.84164,739.87378 L 120.84164,741.469 L 121.84359,741.469 L 122.50004,743.97922 L 120.85713,745.79466 L 122.0131,746.95064 L 121.65026,747.89615 C 121.45068,748.41621 121.05953,748.84167 120.78096,748.84167 L 120.27451,748.84167 L 120.56685,751.18941 L 118.71477,751.34826 L 120.57639,753.54254 z "},"ca10":{"name":"CA-10","path":"M 108.22303,708.57343 C 107.98909,708.57457 107.32243,708.10028 106.74158,707.51942 C 106.16072,706.93857 105.03197,705.08185 104.23317,703.39339 L 102.78086,700.32341 L 100.42501,698.19141 L 100.42501,696.01766 L 102.18674,694.25593 L 101.84283,691.84524 L 95.604424,691.84524 C 95.614634,693.26935 95.661444,694.71139 95.402464,696.0991 L 93.034594,693.34518 L 90.932414,692.65141 C 89.776204,692.26979 88.493534,691.62094 88.082024,691.20943 C 87.670514,690.79792 87.052234,689.62419 86.708044,688.60115 C 86.363854,687.5781 85.820544,686.40732 85.500734,685.99939 C 85.180934,685.59145 84.005734,684.86116 82.889164,684.37649 L 80.859074,683.49529 L 81.709764,683.22726 C 82.177644,683.07981 84.166964,682.21511 86.130474,681.3056 C 88.093994,680.3961 89.833654,679.65197 89.996484,679.65197 L 94.470164,683.59436 L 99.254234,684.31229 L 99.909044,685.10134 C 100.26922,685.5353 100.80567,685.89038 101.1012,685.89038 L 106.66343,682.43311 L 106.66343,680.30615 L 105.23426,678.60766 C 104.44822,677.67348 103.28929,675.7432 102.65899,674.31818 L 101.25266,671.27185 L 97.445604,671.1646 L 95.887984,669.87189 L 95.887984,666.60801 L 96.409064,666.60801 C 96.695634,666.60801 97.772614,665.71478 98.802344,664.62306 L 100.6746,662.63811 L 105.44813,662.63811 L 107.23055,660.85568 L 107.23055,659.5248 C 107.23055,658.79275 107.38544,657.79018 107.5748,657.29678 L 107.91905,656.39969 L 114.60323,656.39969 L 114.60323,657.35196 C 114.60323,657.87564 114.04931,660.0241 113.37227,662.12622 L 112.14127,665.94827 L 113.14208,669.64555 C 113.69253,671.67905 114.43791,673.73863 114.79843,674.22233 L 115.45392,675.10178 L 119.72372,674.39678 L 120.39747,671.71217 L 121.32847,671.7302 C 121.84053,671.74013 122.70608,672.08727 123.25194,672.50161 C 123.7978,672.91601 124.24442,673.54592 124.24442,673.9014 L 124.24442,674.54781 L 123.18661,674.54781 L 122.47401,676.79296 L 119.14026,678.76226 L 119.14026,681.85356 L 117.93902,682.59593 L 118.28956,685.58504 L 115.10723,687.1168 L 114.53222,688.62928 C 114.21594,689.46114 113.56527,690.57475 113.08633,691.104 L 112.2155,692.06625 L 113.97842,703.75494 L 113.12574,705.05803 C 112.65678,705.77477 111.45753,706.85844 110.46075,707.46623 C 109.46396,708.07402 108.45697,708.57224 108.22303,708.57343 z "},"va11":{"name":"VA-11","path":"M 2226.247,638.8187 L 2217.3265,628.48295 L 2217.2528,625.04598 L 2222.9042,627.33474 L 2226.7218,630.95518 L 2226.8467,633.0666 L 2227.6772,633.14741 C 2227.9785,633.14741 2228.3827,632.89221 2228.5754,632.58029 L 2228.9259,632.01316 L 2233.0322,632.01316 L 2234.0099,630.09728 L 2229.4261,626.03069 L 2229.4261,624.16376 L 2232.3341,621.79197 L 2231.9317,619.0267 L 2234.5792,617.71374 L 2239.0673,617.83494 L 2239.869,620.8625 L 2242.4465,618.81482 L 2243.1474,620.64143 L 2241.2706,622.51823 L 2241.6689,623.43755 C 2241.888,623.9432 2242.2216,625.37441 2242.4104,626.61801 L 2242.7537,628.87909 L 2244.742,629.26134 L 2248.6811,625.64549 L 2248.7562,626.08774 C 2249.0419,626.26434 2249.2756,626.64897 2249.2756,626.94246 L 2249.2756,627.47613 L 2248.6576,627.47613 C 2248.3178,627.47613 2247.5606,628.05035 2246.9751,628.75217 L 2245.9106,630.02821 L 2245.8729,632.92056 L 2244.5732,634.22025 L 2241.3358,633.57276 L 2241.3358,635.34901 L 2239.9857,636.18342 L 2230.4009,636.5076 L 2228.3285,638.8187 L 2226.247,638.8187 z "},"va10":{"name":"VA-10","path":"M 2178.8631,597.39919 C 2179.5725,599.2258 2180.5983,601.07215 2179.8024,602.80467 L 2180.8657,603.56672 L 2178.6765,609.40185 L 2180.348,610.84445 L 2179.0935,613.50922 L 2180.5645,614.98018 L 2175.5135,623.50487 L 2178.9871,623.50487 C 2179.5743,622.5606 2179.8168,621.8915 2179.6439,620.90997 C 2179.884,620.44209 2181.1726,619.4888 2182.0178,619.07417 L 2184.8711,618.77286 L 2184.5166,620.74011 L 2186.4661,622.90229 L 2185.8104,624.60368 L 2186.9092,625.29484 L 2186.3421,626.21642 L 2188.0257,627.61655 L 2187.2991,632.29536 L 2185.899,635.23734 C 2187.7478,636.73655 2189.3568,637.14079 2190.8614,637.11595 L 2190.8614,638.25021 L 2192.616,638.25021 L 2194.7073,636.26526 L 2196.1782,630.15088 L 2203.5686,634.7588 L 2205.0219,632.0118 L 2207.8221,632.0118 L 2210.6578,635.06011 L 2212.7845,633.14605 C 2213.3262,633.57633 2213.8058,634.11012 2213.5465,635.87536 L 2220.228,632.61437 L 2216.7721,628.64447 L 2216.7012,624.23147 L 2223.0459,626.8013 L 2227.1576,630.91298 L 2227.1576,632.57892 L 2227.6893,632.57892 C 2227.9828,632.57892 2228.3827,632.32372 2228.5754,632.0118 L 2228.9299,631.44467 L 2232.758,631.44467 L 2233.4315,630.34586 L 2228.859,626.21642 L 2228.9653,624.07199 L 2231.6061,621.82117 C 2231.5697,619.58294 2231.0808,617.68391 2230.5073,615.84863 L 2232.1023,613.6687 L 2236.0899,616.13219 L 2242.4701,616.13219 C 2242.4841,615.40814 2241.8646,614.78963 2241.07,614.20038 L 2235.9836,614.14724 L 2234.5835,611.32929 L 2231.4111,610.46091 L 2224.836,611.18751 L 2222.5851,608.75952 L 2220.5825,608.70632 L 2220.3521,604.8782 L 2222.1421,603.08823 L 2221.7699,601.19187 C 2219.1392,600.8196 2217.8086,599.66726 2216.5063,598.49801 L 2209.7184,598.78157 L 2207.574,611.86098 L 2178.8631,597.39919 z "},"il11":{"name":"IL-11","path":"M 1718.904,546.4285 L 1702.5636,548.75019 L 1702.5636,546.94246 L 1697.9025,546.94246 L 1699.2671,555.20127 L 1683.104,557.11533 C 1682.2814,553.65105 1681.8977,550.09541 1681.2963,546.58801 L 1656.059,549.86672 L 1656.059,552.61375 C 1649.0872,553.19335 1642.136,554.10211 1635.1816,554.88226 L 1635.7842,561.68781 L 1630.5382,561.68781 L 1630.5382,566.79197 L 1625.8949,566.79197 L 1627.2241,577.00031 L 1649.8206,574.64316 L 1649.8206,571.20494 L 1654.3576,566.79197 L 1656.3038,566.69139 L 1657.9492,565.35596 L 1660.2359,581.68531 L 1665.399,581.82091 C 1666.1055,588.7253 1667.3524,595.54718 1668.5359,602.37932 L 1670.8044,602.5211 L 1671.5133,608.75952 L 1668.7362,608.97577 L 1669.1207,611.59516 L 1666.6927,611.59516 L 1664.8495,613.68645 L 1659.0364,614.66117 L 1661.2518,633.14605 L 1687.9423,630.18632 C 1687.6539,628.20052 1687.5249,626.17723 1687.0207,624.23147 L 1671.7792,625.29484 L 1670.8576,623.82388 L 1672.5058,621.9984 L 1672.5058,616.64612 L 1670.9107,613.54467 L 1674.6857,608.47596 L 1679.0277,607.25306 L 1679.3822,601.88308 L 1672.7184,603.05279 L 1670.1132,580.54487 L 1698.4519,576.78764 L 1699.2671,583.23873 L 1704.8144,583.23873 L 1735.5457,578.47127 L 1731.7885,550.29207 C 1729.6907,551.1505 1728.0218,551.13524 1725.8159,550.91236 L 1725.8159,554.31514 L 1722.5372,554.31514 L 1721.9523,552.04662 L 1719.5774,552.04662 L 1719.5774,550.11484 C 1719.5774,549.04863 1719.4249,547.77686 1719.2407,547.29692 L 1718.904,546.4285 z "},"il10":{"name":"IL-10","path":"M 1705.6828,518.42026 L 1703.2108,516.87788 C 1701.8512,516.02957 1700.5153,514.98254 1700.242,514.55115 C 1699.9689,514.11976 1699.7414,513.32019 1699.7366,512.77433 L 1699.7279,511.78186 L 1701.2473,511.78186 L 1702.5074,514.54751 L 1704.8946,515.62352 L 1704.9861,503.48809 L 1704.342,502.28453 C 1703.9877,501.62258 1703.6978,500.58503 1703.6978,499.97888 L 1703.6978,498.87678 L 1705.5062,497.37598 L 1707.4471,499.94908 L 1710.0107,497.87321 L 1708.8668,494.8645 L 1711.6221,493.92908 L 1711.3541,501.8571 L 1712.4276,504.12562 C 1713.0181,505.3733 1714.7654,507.99261 1716.3106,509.9463 L 1719.1201,513.49846 L 1715.7633,515.39572 L 1709.8051,516.51462 L 1707.0479,516.48598 L 1705.6828,518.42026 z "},"oh10":{"name":"OH-10","path":"M 1995.3158,516.88601 C 1995.008,516.88601 1994.5716,516.4394 1994.346,515.89354 L 1993.9356,514.90106 L 1993.4061,516.31889 L 1991.7992,516.31889 L 1991.7992,515.17122 L 1987.4261,515.87051 L 1986.0426,507.46262 L 1989.948,507.91856 L 1993.4443,506.11057 L 1996.6765,506.11057 L 1998.0068,507.44091 L 2000.8517,506.14474 L 2002.0475,508.37908 L 2003.8464,508.29847 L 2004.7236,509.79549 L 2007.3132,510.70134 L 2007.2864,512.2415 L 2005.8356,512.43884 C 2005.1338,512.48827 2004.1011,512.48916 2003.5407,512.44084 L 2002.5217,512.35297 L 2000.3022,513.48523 C 1999.0815,514.10798 1997.7196,514.6175 1997.2757,514.6175 L 1996.4686,514.6175 L 1995.8753,516.88601 L 1995.3158,516.88601 z "},"oh11":{"name":"OH-11","path":"M 2010.939,511.74038 L 2007.6788,512.15254 L 2007.6788,510.61953 L 2004.8141,509.53037 L 2004.1547,507.81195 L 2002.2804,507.81195 L 2000.8776,505.56578 L 1997.9564,506.89677 L 1996.7299,505.62213 L 1999.5684,502.74709 C 2000.9847,501.32184 2002.7541,499.19869 2003.5004,498.02898 L 2005.8472,495.21334 L 2007.1061,501.0344 L 2009.0585,500.49996 C 2009.406,502.16931 2010.3614,503.77786 2010.101,505.50799 L 2008.1251,508.83603 L 2009.8774,510.9676 L 2011.3017,511.04454 L 2010.939,511.74038 z "},"nj11":{"name":"NJ-11","path":"M 2331.7254,486.82819 C 2330.7748,486.82819 2329.8268,486.65805 2329.6189,486.45011 C 2329.4109,486.24216 2329.2408,485.62482 2329.2408,485.07824 C 2329.2408,484.53167 2329.587,483.36196 2330.0101,482.47891 C 2330.4332,481.59585 2331.1989,480.02323 2331.7115,478.98421 C 2332.2241,477.94519 2332.6436,476.76421 2332.6436,476.3598 C 2332.6436,475.95538 2332.2767,475.32002 2331.8283,474.94786 L 2331.013,474.27123 L 2324.825,478.2296 L 2322.3541,477.94642 C 2320.9951,477.79067 2319.173,477.39405 2318.3049,477.06503 L 2316.7267,476.46683 L 2318.4868,474.52191 L 2318.702,472.02634 C 2318.8203,470.65378 2319.0933,469.09638 2319.3086,468.56545 L 2319.7001,467.60013 L 2319.1009,466.63056 L 2321.4288,461.92351 L 2321.8681,459.30146 L 2323.013,459.6795 L 2324.9873,456.21042 L 2327.9332,456.20324 L 2329.1091,453.92576 L 2329.2408,456.77037 L 2330.0059,456.77037 L 2332.0528,454.91459 L 2332.7649,456.77037 L 2339.0405,456.77037 L 2339.7939,457.76285 C 2340.2083,458.30871 2340.5554,459.07654 2340.5653,459.46914 C 2340.5753,459.86175 2341.349,461.23988 2342.2848,462.53166 L 2343.9861,464.88036 L 2343.9861,466.9345 L 2341.6595,469.10202 L 2342.0219,470.54584 L 2342.0477,471.80837 L 2341.3594,473.1134 L 2340.0236,473.25306 L 2335.7493,479.71229 L 2333.04,481.06302 L 2331.6709,485.0454 L 2333.4538,486.82819 L 2331.7254,486.82819 z "},"nj10":{"name":"NJ-10","path":"M 2345.6344,467.45583 L 2346.3787,470.39781 L 2344.9964,472.06375 L 2343.0823,471.03583 L 2341.6999,473.23345 L 2343.1532,473.80058 C 2343.9593,474.10708 2344.8005,474.36295 2345.0141,474.36771 C 2345.6815,474.58248 2346.2846,474.87056 2346.8572,475.2893 L 2345.6166,478.56801 L 2346.2724,481.15553 L 2347.2471,481.15553 L 2347.6193,478.78068 C 2347.8288,477.4705 2348.2687,476.07133 2348.5941,475.6792 L 2350.8799,475.0338 L 2350.675,475.3935 L 2352.5426,474.64783 L 2353.1972,472.43688 L 2349.7044,472.42629 L 2348.3637,470.89405 C 2347.5144,469.92622 2346.8218,468.92241 2346.8218,468.66098 C 2346.8218,468.39954 2346.5614,468.01078 2346.237,467.81029 L 2345.6344,467.45583 z "},"mi10":{"name":"MI-10","path":"M 1913.9431,357.6987 L 1912.6139,358.319 C 1911.8804,358.65884 1911.2694,359.13069 1911.2669,359.36465 C 1911.2645,359.59859 1910.9398,359.78998 1910.5403,359.78999 L 1909.8137,359.78999 L 1908.5376,363.19276 L 1906.3046,363.19276 L 1904.9931,364.77009 L 1899.9244,366.04613 L 1899.9244,368.13742 L 1897.6559,371.02623 L 1898.223,372.55039 L 1895.3873,375.84682 L 1895.3873,378.50524 L 1894.3772,378.50524 C 1894.2566,380.06266 1894.1884,381.62328 1894.129,383.18405 L 1894.311,386.13625 L 1909.8137,383.16633 L 1914.1735,404.80481 L 1903.3094,407.0389 L 1903.9421,412.21583 L 1899.375,413.24187 L 1903.4158,434.45603 L 1918.69,431.02497 C 1919.7413,434.58234 1921.3484,442.7253 1922.8801,450.24514 L 1928.334,448.75831 L 1927.0934,444.3985 L 1933.1014,442.6085 L 1934.5192,444.50484 L 1934.5192,443.15791 L 1935.0332,443.15791 C 1935.3122,443.15791 1936.3551,442.39046 1937.3549,441.45652 L 1939.1626,439.75514 L 1940.669,440.12732 C 1941.4958,440.32456 1942.3669,440.58092 1942.6008,440.71217 C 1942.8347,440.84341 1943.0261,441.47762 1943.0261,442.11227 L 1943.0261,443.26425 L 1941.0412,443.77821 L 1939.7297,446.56068 L 1941.2007,446.56068 L 1941.7856,448.08484 L 1945.2947,447.57088 L 1945.2947,447.00375 C 1945.2947,446.69741 1945.765,445.77586 1946.3403,444.94791 L 1947.3859,443.44148 C 1947.4877,440.32277 1947.6147,437.20435 1947.6341,434.08385 L 1946.2871,424.3186 L 1948.0063,420.68544 L 1947.2796,418.9486 C 1946.8762,417.98927 1945.6195,415.86591 1944.4972,414.23435 C 1943.3748,412.60277 1942.459,411.037 1942.459,410.74296 C 1942.459,410.44893 1941.9671,409.11565 1941.3602,407.78326 C 1940.7532,406.45085 1939.5916,402.70895 1938.7904,399.47128 L 1937.3372,393.58732 L 1932.9596,384.46009 L 1932.2685,381.34088 C 1931.8872,379.62532 1931.0343,376.56281 1930.3721,374.53534 L 1929.1669,370.849 L 1922.2551,361.26098 L 1918.9232,359.31148 L 1916.0166,359.22286 L 1913.9431,357.6987 z "},"mi11":{"name":"MI-11","path":"M 1907.9326,480.64449 C 1905.9097,474.09767 1905.511,470.22847 1904.366,464.42786 L 1903.0983,462.90041 L 1898.8141,463.58548 C 1897.6508,458.42213 1896.3419,453.84125 1895.3873,447.84287 L 1903.6107,447.04965 L 1906.5865,445.5282 C 1907.2467,451.32141 1908.3019,455.3149 1909.8839,461.59097 L 1915.1956,460.69661 L 1918.0916,466.41156 L 1917.5554,466.41156 C 1917.2605,466.41156 1916.6182,466.8126 1916.128,467.30276 L 1915.2368,468.19397 L 1915.2368,470.85847 L 1911.5257,471.86945 L 1911.144,474.35136 L 1912.4486,479.36404 L 1907.9326,480.64449 z "},"ny23":{"name":"NY-23","path":"M 2311.9611,205.20892 L 2252.1999,222.15495 L 2250.1263,221.87138 L 2248.6908,223.20059 C 2247.8993,223.93283 2246.5593,224.83776 2245.7134,225.22098 L 2244.1715,225.9299 L 2244.1715,226.55019 C 2244.1715,226.88975 2243.251,228.03149 2242.1156,229.10227 C 2240.9803,230.17305 2239.8319,231.05178 2239.5636,231.05178 C 2239.2953,231.05178 2239.0673,231.30177 2239.0673,231.60118 C 2239.0673,231.9006 2237.7913,233.33246 2236.2317,234.79128 C 2234.6721,236.25011 2233.396,237.69677 2233.396,237.9991 C 2233.396,238.30143 2232.5666,239.58228 2231.5529,240.85247 C 2230.5391,242.12265 2229.1993,244.00213 2228.5754,245.03504 C 2227.9516,246.06796 2225.3188,250.63032 2222.7269,255.15475 L 2218.0127,263.37811 L 2217.1443,268.94306 L 2213.2098,274.4194 L 2209.1336,276.56386 L 2207.698,279.23999 L 2205.6067,279.89574 L 2205.6067,283.84791 L 2202.8774,286.57722 L 2199.9354,287.32158 L 2199.9178,288.26088 C 2199.904,288.77293 2199.5585,290.11085 2199.1556,291.23831 L 2198.429,293.27643 L 2199.7051,295.03098 L 2202.4698,295.42088 L 2202.8952,297.60079 L 2205.1991,299.4794 L 2210.7463,299.14267 L 2212.5895,302.98851 L 2209.0273,306.55079 L 2207.9816,305.91277 L 2206.1739,306.60395 L 2206.1739,308.00405 L 2209.0804,309.33326 L 2213.0149,317.84019 L 2214.2554,323.98999 L 2213.5465,326.61296 L 2210.5691,328.75742 L 2206.1384,329.00554 L 2204.7383,330.31702 C 2203.97,331.03884 2203.3382,331.84867 2203.3382,332.10702 C 2203.3382,332.36538 2202.3174,333.49644 2201.0697,334.62366 L 2198.4183,336.99859 L 2201.3146,347.38909 L 2206.1496,345.78912 L 2207.3725,347.60492 L 2212.662,345.73911 L 2216.6981,346.42234 L 2216.6981,345.44758 L 2218.9682,346.02595 L 2219.6047,344.97212 L 2219.2887,344.31957 L 2218.1513,344.30829 L 2218.1061,342.00292 L 2224.8891,343.43187 L 2224.8102,344.60649 L 2229.4535,345.22679 L 2231.4578,347.21487 L 2231.4803,349.83795 L 2234.1581,349.86524 L 2240.9459,371.02623 C 2249.8263,367.61914 2258.2729,365.29629 2266.6609,363.11984 L 2267.5663,358.7833 L 2266.4178,355.34933 L 2258.2788,357.99999 L 2257.0594,353.83865 L 2252.6417,355.16785 L 2250.2681,348.94366 L 2248.5136,349.61712 C 2246.7395,347.047 2243.6217,344.72572 2239.6033,342.57121 C 2240.3624,340.78211 2241.2829,340.09282 2242.4563,339.12284 C 2242.2954,337.09213 2245.9982,335.80117 2245.7822,333.98287 L 2249.6159,333.95167 L 2250.6326,331.73134 L 2249.2048,326.06356 C 2252.088,323.99205 2259.2768,322.60694 2264.9681,321.09703 L 2249.7719,279.96663 L 2255.7976,281.61485 L 2264.3808,278.29144 L 2277.508,312.48791 L 2275.9307,322.25316 L 2283.439,323.81586 L 2286.0504,330.19296 C 2284.5027,332.2901 2284.969,334.24339 2283.7809,335.51341 C 2284.2077,337.3216 2285.0301,338.30267 2286.356,338.78027 L 2297.6411,339.53286 L 2296.2942,333.96791 L 2304.0779,328.48515 L 2307.1393,336.11237 L 2314.7436,334.64138 L 2297.3502,291.21235 L 2312.2269,284.66316 L 2312.3583,283.1775 L 2308.576,281.8098 L 2306.5025,274.70296 L 2304.1946,275.98634 L 2301.9945,275.09072 L 2304.8188,272.48762 L 2301.4869,264.47692 L 2296.8081,266.85178 C 2294.5336,262.68132 2292.9818,259.49633 2291.1671,254.34041 L 2301.1679,250.31643 L 2302.9225,253.31158 C 2304.9896,252.3729 2306.9385,250.99391 2309.1609,250.47593 L 2314.2828,261.96029 L 2317.1893,262.31475 L 2319.6174,268.62405 L 2318.6071,269.90009 L 2319.9895,273.86999 L 2329.7016,274.189 L 2330.3928,276.9892 L 2331.3853,276.9892 L 2330.3042,272.16861 L 2328.3015,269.90009 L 2326.5803,263.87616 L 2324.5318,263.72862 L 2325.0051,251.75197 L 2326.7065,248.3492 L 2323.7113,242.44752 L 2324.2607,237.48514 L 2323.3568,235.8192 C 2322.8606,234.90973 2321.9741,233.59677 2321.3719,232.89495 C 2320.7696,232.19312 2319.9748,231.61891 2319.6174,231.61891 L 2318.9616,231.61891 L 2316.7817,226.69198 L 2316.2323,216.60772 L 2313.3966,214.53415 L 2314.017,208.4198 L 2311.9611,205.20892 z "},"tx28":{"name":"TX-28","path":"M 1248.4326,1539.4191 C 1248.1828,1539.4191 1247.5478,1538.9725 1247.0215,1538.4266 C 1246.4952,1537.8807 1245.5686,1536.9675 1244.9625,1536.3972 L 1243.8605,1535.3603 L 1242.816,1535.4972 C 1242.2415,1535.5726 1240.7507,1535.4251 1239.503,1535.1695 L 1237.2345,1534.7049 L 1235.9243,1532.9193 L 1232.0309,1534.7759 L 1227.0302,1529.2108 L 1225.0412,1529.2108 L 1225.0412,1527.5493 L 1222.9822,1526.4473 L 1218.8363,1527.3824 L 1217.4868,1525.7564 L 1215.9672,1526.3395 L 1215.9672,1525.2409 L 1213.1161,1525.2409 L 1210.863,1523.8338 L 1208.7401,1525.1596 L 1207.5532,1523.9728 L 1208.1722,1520.1586 L 1206.3562,1517.3871 L 1204.1492,1516.6866 L 1203.7527,1514.3 C 1203.5346,1512.9873 1203.0036,1511.2242 1202.5726,1510.3819 L 1201.7889,1508.8504 L 1201.7889,1505.5672 L 1199.5204,1503.5142 L 1199.5204,1502.6285 C 1199.5204,1502.1415 1199.103,1500.6498 1198.5927,1499.3137 L 1197.6649,1496.8844 L 1197.1748,1496.8135 C 1196.9053,1496.7746 1196.3658,1496.7107 1195.9759,1496.6718 L 1195.267,1496.6009 L 1194.8953,1493.3499 L 1191.5194,1492.0756 L 1192.053,1490.0351 L 1189.4656,1487.2432 L 1188.0491,1487.2432 L 1188.3908,1485.4001 C 1188.5787,1484.3863 1188.767,1481.898 1188.8092,1479.8706 L 1188.8858,1476.1842 L 1187.8564,1472.2565 L 1185.6258,1471.6472 L 1185.6258,1469.997 L 1182.7901,1469.3265 L 1184.5271,1468.6587 L 1186.0222,1462.8253 L 1184.72,1461.2563 L 1185.9093,1460.5213 L 1185.9093,1458.2135 L 1183.5191,1457.5884 L 1184.1642,1453.6127 L 1181.8622,1450.3799 L 1180.2944,1450.3799 L 1179.2126,1448.4468 L 1176.3807,1449.7371 L 1175.7987,1447.5117 L 1175.3245,1447.5951 C 1175.0637,1447.641 1174.4073,1447.6484 1173.8659,1447.6114 L 1172.8815,1447.5442 L 1169.879,1443.0072 L 1168.4048,1443.0072 L 1167.7444,1441.0222 L 1164.0917,1439.2261 L 1163.8387,1435.9339 L 1162.659,1435.5407 L 1163.2884,1433.0328 L 1160.9557,1430.9217 L 1160.9557,1427.6947 L 1158.1492,1427.6947 L 1157.2839,1426.0215 C 1156.808,1425.1012 1156.4186,1423.9801 1156.4186,1423.5301 L 1156.4186,1422.7119 L 1154.7685,1422.0787 L 1152.4257,1417.4864 L 1151.7283,1417.4537 C 1151.3448,1417.4358 1149.7748,1416.8269 1148.2396,1416.1009 L 1145.4483,1414.7808 L 1187.7449,1413.3875 L 1186.3444,1365.3106 L 1213.1315,1365.3106 L 1213.1315,1348.2967 L 1243.7727,1364.045 L 1251.0793,1351.7601 L 1248.4608,1351.3902 L 1248.1617,1350.177 L 1244.645,1348.5144 L 1244.9688,1346.2717 L 1249.4902,1343.4072 L 1246.025,1342.6254 L 1246.025,1340.3569 L 1249.3878,1340.3569 L 1250.6276,1338.0404 L 1250.2784,1333.843 L 1247.1592,1332.3552 L 1247.1592,1330.8665 C 1252.3842,1327.3551 1254.9592,1325.8098 1263.8598,1321.3581 L 1267.5345,1315.1702 C 1268.8922,1314.4633 1270.2114,1313.6607 1271.661,1313.1585 L 1274.3788,1318.3772 L 1277.008,1320.7183 C 1278.454,1322.006 1280.6465,1323.6138 1281.8801,1324.2913 C 1283.1138,1324.9687 1284.2555,1325.6554 1284.4173,1325.8172 L 1284.7114,1326.1114 L 1281.7332,1335.6674 C 1280.3796,1337.1346 1278.789,1338.4468 1277.7872,1340.187 L 1286.8338,1351.9721 L 1260.8485,1379.1411 L 1265.3008,1384.4589 L 1251.1291,1397.7547 L 1251.1291,1428.829 L 1230.1454,1428.829 L 1230.1454,1469.0951 L 1237.5361,1469.0951 C 1239.477,1480.8059 1239.2809,1486.2766 1239.2558,1498.5858 L 1243.7565,1498.5858 L 1243.7565,1500.0376 L 1239.7866,1503.7821 L 1237.518,1508.193 L 1234.2212,1510.6305 L 1232.1328,1514.5083 L 1233.8317,1515.5823 L 1240.8992,1515.5997 C 1242.3012,1517.7498 1241.4807,1523.49 1241.7715,1527.4352 L 1244.8706,1530.6696 L 1245.2421,1532.6341 C 1245.4464,1533.7145 1245.9135,1534.9813 1246.2801,1535.4492 C 1246.6467,1535.9171 1247.3831,1537.0017 1247.9167,1537.8595 L 1248.8868,1539.4191 L 1248.4326,1539.4191 z "},"tx7":{"name":"TX-7","path":"M 1401.6729,1319.3731 C 1401.2655,1319.3731 1400.5311,1318.9721 1400.0409,1318.482 L 1399.1497,1317.5907 L 1399.1426,1315.6868 L 1395.655,1313.7019 L 1391.2315,1313.7019 L 1388.3344,1308.5977 L 1389.6773,1305.9329 L 1388.0273,1305.9887 L 1387.0668,1303.3415 L 1388.6955,1301.5226 L 1392.551,1300.2304 L 1393.4419,1297.8223 L 1394.0273,1297.8223 C 1394.3493,1297.8223 1394.6127,1298.0418 1394.6127,1298.3103 L 1397.36,1302.8467 L 1395.0785,1304.3616 L 1395.9753,1308.3002 L 1400.1533,1309.2772 L 1401.5944,1311.4338 L 1402.6655,1314.6064 L 1403.7366,1317.7791 L 1403.0751,1318.5761 C 1402.7113,1319.0145 1402.0803,1319.3731 1401.6729,1319.3731 z "},"fl7":{"name":"FL-7","path":"M 2149.0711,1190.9171 L 2146.714,1191.502 C 2146.9058,1194.3466 2147.8657,1197.093 2148.3267,1199.9025 C 2146.7151,1200.6151 2144.965,1201.0103 2143.2403,1201.4267 L 2138.278,1200.3102 L 2135.9393,1201.5862 L 2136.0102,1205.6448 L 2137.2508,1207.8424 C 2138.6177,1208.8223 2139.7012,1209.4827 2141.2376,1210.1995 L 2141.8756,1214.9138 C 2143.9251,1217.7937 2144.7617,1219.7105 2147.6533,1222.1092 L 2149.3015,1229.7654 L 2143.3644,1229.7654 L 2139.5362,1231.3782 L 2138.1362,1233.6999 L 2138.8096,1235.4367 L 2139.8376,1235.4367 C 2140.4025,1235.4367 2141.2569,1235.5904 2141.7339,1235.7734 L 2142.6023,1236.1102 L 2143.772,1239.6016 C 2144.4226,1241.524 2145.331,1243.5698 2145.7747,1244.1563 L 2146.5722,1245.2197 L 2154.5652,1245.8045 L 2159.049,1253.9039 L 2164.1,1256.3496 L 2164.9153,1261.2411 L 2168.0699,1265.2287 L 2168.8675,1271.6975 L 2167.3964,1273.4698 L 2165.9077,1275.2243 L 2165.6596,1276.4649 C 2165.5226,1277.1427 2165.291,1279.283 2165.1457,1281.2324 L 2164.8798,1284.7769 L 2165.89,1285.4149 L 2167.8395,1284.3161 L 2171.579,1287.1872 L 2172.7133,1287.3999 L 2172.7133,1281.4627 L 2178.8099,1279.3715 L 2178.0833,1271.857 L 2174.9818,1271.0418 L 2174.9818,1261.7728 L 2169.3105,1256.1724 L 2169.3105,1252.4506 L 2172.1461,1252.4506 L 2172.1461,1249.7922 L 2174.9109,1248.5338 L 2178.6681,1249.615 L 2180.4936,1252.0429 L 2182.4077,1250.9619 L 2180.529,1248.1617 C 2179.4909,1246.6238 2178.1155,1244.5959 2177.463,1243.6601 C 2176.8106,1242.7243 2173.5873,1237.8754 2170.3207,1232.8847 C 2167.0541,1227.8939 2163.6129,1222.407 2162.6645,1220.6914 C 2161.716,1218.9758 2160.4935,1216.1685 2159.9529,1214.453 L 2158.9781,1211.3338 L 2157.3299,1210.0223 L 2153.2005,1200.4697 L 2149.0711,1190.9171 z "},"fl6":{"name":"FL-6","path":"M 2139.8259,1284.1761 L 2136.0196,1282.6359 L 2133.865,1274.6896 L 2116.284,1278.0639 C 2113.9439,1277.2119 2111.7101,1276.2326 2108.6277,1276.2714 L 2108.6277,1274.093 L 2112.1289,1273.324 L 2111.3314,1266.4529 L 2108.0346,1258.4896 L 2106.4678,1259.9984 L 2105.5085,1257.0538 L 2100.4669,1253.0975 L 2098.5484,1254.1242 L 2093.8939,1252.1684 C 2093.9937,1249.8944 2095.8896,1248.9531 2095.5838,1245.5202 L 2089.9125,1246.902 L 2089.9125,1245.0793 L 2084.5888,1246.1521 L 2083.3721,1245.0899 L 2074.5816,1245.9704 L 2074.2784,1246.7158 L 2072.7134,1245.7486 L 2072.5707,1232.603 L 2074.63,1231.9493 L 2074.6,1227.4344 L 2078.1874,1224.1577 L 2082.3142,1228.9467 L 2086.7933,1229.2271 L 2090.0099,1225.9823 L 2090.1815,1223.2257 L 2092.4646,1221.2959 L 2098.7604,1221.2599 L 2101.7598,1219.7705 L 2101.8222,1218.4242 L 2103.9086,1218.4242 C 2105.9298,1215.457 2105.4348,1214.5026 2105.225,1213.3201 L 2106.713,1213.3201 C 2108.6878,1212.0475 2109.0483,1210.2368 2109.1949,1208.3548 L 2110.8962,1206.9428 L 2110.8962,1204.9581 L 2115.4333,1204.2326 L 2113.8271,1196.0887 L 2124.6697,1179.7217 L 2128.5168,1186.3815 L 2127.8649,1192.0527 L 2133.5814,1197.6814 L 2133.5814,1200.7763 L 2134.7156,1201.4773 L 2134.7156,1206.0595 L 2136.6129,1210.0576 L 2131.2431,1214.7379 L 2131.9992,1219.3974 C 2130.0457,1222.1151 2127.9038,1223.5143 2125.6416,1224.0712 L 2125.4678,1226.8947 L 2121.9158,1227.9568 L 2120.2144,1229.9646 L 2116.6014,1231.6788 L 2114.9452,1231.1815 L 2110.8801,1233.2009 L 2108.6411,1232.0025 L 2105.3403,1235.6968 L 2108.7873,1240.4968 L 2111.4991,1239.0079 L 2112.4997,1242.5395 L 2114.7257,1245.3216 L 2113.9759,1249.8481 L 2120.7369,1248.3638 L 2122.3676,1251.0341 L 2118.836,1252.0489 C 2118.456,1255.0706 2119.4402,1258.2287 2120.5821,1261.4026 L 2125.6749,1262.685 L 2126.3335,1265.9779 L 2134.4464,1268.8987 L 2136.1728,1266.0484 L 2140.6705,1271.9467 L 2141.3022,1277.672 L 2139.8259,1284.1761 z "},"az7":{"name":"AZ-7","path":"M 439.00084,983.61384 L 439.00084,985.36842 L 436.99817,985.81146 C 436.29635,986.08108 435.73926,987.00521 434.87144,987.81416 L 430.97243,990.52572 L 430.33441,989.90545 L 427.55193,992.10308 L 425.47837,992.47523 C 424.34031,992.68007 423.10118,993.08631 422.73134,993.37911 L 422.05787,993.92849 L 421.29579,997.52624 L 417.78669,1001.2126 L 417.0955,1001.2126 C 416.70718,1001.2126 416.20622,1001.4938 415.99669,1001.8328 L 415.62451,1002.4532 L 416.82966,1003.6406 L 416.4752,1005.4128 C 416.28708,1006.3811 415.92612,1007.3032 415.67768,1007.4687 L 415.23461,1007.77 L 415.65995,1017.0744 L 413.85223,1018.1024 L 412.34579,1025.6523 L 409.36837,1028.5942 C 407.73079,1030.2182 406.11837,1032.0364 405.78837,1032.635 L 405.1858,1033.7338 L 401.26906,1033.5921 L 401.67669,1037.8987 L 399.70946,1039.8482 L 402.20837,1041.5851 L 400.9855,1049.0286 L 398.64609,1052.8213 L 399.49679,1053.4239 L 400.11708,1056.7026 L 408.37589,1057.9609 L 409.06708,1069.5338 L 404.97312,1072.9544 L 404.97312,1074.9748 L 401.85391,1076.1799 L 399.30183,1075.914 C 397.89819,1075.7685 396.36694,1075.4893 395.89906,1075.2938 L 395.04837,1074.9393 L 391.89372,1079.9371 L 389.21758,1081.6917 L 388.04787,1088.3909 L 570.34433,1186.1142 L 592.53324,1188.3651 L 593.2244,1182.4988 L 591.98381,1180.9924 L 589.85708,1180.9924 L 589.85708,1180.248 C 589.85708,1179.8425 590.13151,1179.2469 590.45965,1178.9188 L 591.04453,1178.334 L 588.43926,1174.3286 L 584.82381,1171.8297 L 581.49193,1174.2932 L 577.46889,1170.2524 L 573.51668,1170.855 L 572.73688,1168.4269 L 573.48124,1164.457 L 571.08869,1159.8845 C 571.58589,1155.2446 571.80855,1150.5648 572.54196,1145.9544 L 586.48975,1147.5672 L 587.58856,1146.8938 L 587.58856,1144.129 L 589.85708,1141.8605 L 589.85708,1140.2477 L 591.2749,1139.7869 L 591.48746,1138.5776 L 589.88209,1136.6177 L 590.51285,1134.027 L 587.02143,1131.4395 L 587.02143,1130.0748 L 582.99839,1129.614 L 580.9248,1131.2268 L 578.37272,1129.7074 L 578.93985,1125.077 L 577.57523,1123.1984 L 575.25351,1123.801 L 572.40018,1120.9476 L 573.41035,1114.6383 L 545.3985,1110.8783 L 546.25906,1101.3108 L 546.79074,1100.7791 C 547.08264,1100.4828 547.32243,1099.8136 547.32243,1099.2904 L 547.32243,1098.3334 L 549.50233,1096.7738 L 550.24668,1093.1229 L 537.11411,1090.7303 L 537.11411,1087.5402 L 539.89658,1086.849 L 540.65866,1080.0257 L 542.77156,1080.1135 L 544.30955,1081.0891 L 553.56084,1081.8866 L 553.56084,1082.5955 C 553.56084,1082.9849 553.94438,1083.6256 554.41153,1084.0134 L 555.26223,1084.7223 L 557.17629,1083.269 C 558.2261,1082.4682 559.70574,1081.6535 560.47272,1081.4613 L 561.87282,1081.1068 L 562.52856,1079.2637 C 562.89595,1078.2477 563.20203,1076.987 563.20203,1076.4635 L 563.16658,1075.8431 L 554.58876,1074.7798 L 555.35084,1068.8249 L 543.86648,1068.0097 L 544.61084,1063.0827 L 535.12916,1061.8599 L 535.05827,1060.7788 L 530.30856,1056.1886 L 530.4149,1046.9905 L 525.20441,1047.7171 L 525.20441,1048.426 C 525.20253,1048.8159 524.85742,1049.7927 524.44233,1050.5882 L 523.68025,1052.0237 L 523.66253,1055.5683 L 523.62708,1059.1128 L 522.56371,1062.5156 L 521.51807,1065.9361 C 519.77653,1065.6487 518.00208,1065.5042 516.28985,1065.0677 C 516.2197,1065.0007 516.13604,1063.6848 516.11262,1062.1435 C 516.08915,1060.602 516.1616,1058.9053 516.27213,1058.3685 C 516.38266,1057.8317 516.65773,1057.2207 516.8747,1057.0039 C 517.09169,1056.7869 517.2646,1056.2914 517.2646,1055.9051 L 517.2646,1055.1961 L 511.87688,1054.4518 L 506.27649,1055.7101 L 503.47629,1052.8922 C 503.36114,1050.9234 503.55301,1048.8972 503.08639,1046.9728 L 472.70956,1036.5163 L 475.95282,1014.8237 C 474.20253,1014.3541 469.05692,1012.6344 465.72678,1011.35 L 465.01787,1008.089 L 465.65589,1006.8839 C 466.01143,1006.2195 466.6519,1004.3519 467.07371,1002.7367 C 467.49554,1001.1213 468.22873,999.0428 468.70421,998.12882 L 469.57263,996.48057 L 467.69401,993.30822 C 466.46708,992.79458 465.22393,992.33503 463.93678,992.01443 L 460.65807,992.81199 L 458.24777,990.40169 L 453.21451,990.29535 L 452.57649,988.29265 L 451.31817,988.29265 C 450.62673,988.29458 448.69249,988.05077 447.01154,987.74327 L 443.9455,987.17614 L 441.57065,984.55317 L 439.00084,983.61384 z "},"az6":{"name":"AZ-6","path":"M 569.76995,1076.003 C 569.12087,1075.9635 566.9309,1075.7232 564.90342,1075.4691 C 562.87593,1075.215 559.86141,1074.8442 558.20449,1074.6451 L 555.1919,1074.2831 L 555.56638,1071.2862 L 555.9408,1068.2892 L 550.17928,1067.8807 L 544.41771,1067.4722 L 544.80483,1065.6769 L 545.19195,1063.8817 L 545.97362,1063.4281 L 546.7553,1062.9746 L 546.7553,1061.3396 L 546.7553,1059.7046 L 547.86091,1059.3537 L 548.96653,1059.0028 L 549.13695,1056.0593 L 549.30738,1053.1157 L 550.87639,1052.3666 L 552.44536,1051.6175 L 556.16328,1051.6175 L 559.88121,1051.6175 L 560.54911,1052.1629 L 561.21708,1052.7083 L 568.70794,1053.6162 C 572.8279,1054.1155 576.49757,1054.524 576.86274,1054.524 L 577.52674,1054.524 L 577.13666,1059.2029 L 576.74665,1063.8817 L 574.17569,1066.2783 L 571.60466,1068.675 L 572.00126,1071.0225 L 572.39785,1073.3699 L 571.67402,1074.7224 L 570.95014,1076.0749 L 569.76995,1076.003 z "},"ga7":{"name":"GA-7","path":"M 1981.8745,968.31912 L 1982.6757,973.48203 C 1981.0415,973.57793 1978.9931,973.5443 1977.358,973.61264 L 1974.7854,976.25892 L 1967.9798,976.25892 L 1967.9798,976.71971 C 1967.9798,976.97299 1968.7454,977.74695 1969.6812,978.43879 C 1970.617,979.13063 1971.3826,979.95501 1971.3826,980.26426 L 1971.3826,980.81364 L 1968.5469,982.10743 L 1968.5469,983.66704 L 1965.7113,984.7304 L 1965.7113,987.17614 L 1970.7446,985.77602 L 1975.7424,990.79159 L 1972.3396,993.0601 L 1979.4287,1000.7872 L 1983.7176,999.36941 L 1987.7762,1000.7163 L 1988.5382,1003.0912 L 1987.7407,1014.1148 L 1996.0172,1015.3199 C 1996.307,1015.3623 1997.3279,1015.144 1998.2857,1014.8414 C 1999.2437,1014.5387 2000.9921,1014.1389 2002.1848,1013.9552 L 2004.3647,1013.6185 L 2003.6735,1012.8033 C 2003.3004,1012.3538 2002.6618,1011.988 2002.238,1011.988 L 2001.4582,1011.988 L 1999.934,1005.466 L 2002.3265,1000.7163 L 2006.7927,995.89575 L 2007.4839,989.58644 L 2005.2863,987.65463 C 2004.073,986.58826 2002.8354,985.26606 2002.5392,984.71265 L 2002.0075,983.70248 L 2003.319,980.79595 L 2003.9039,980.79595 C 2005.4998,980.23789 2006.8513,979.18281 2008.2459,978.24387 L 2008.2459,974.61067 L 2003.319,971.29654 L 1996.4071,971.13701 L 1993.7842,968.33681 L 1981.8745,968.31912 z "},"ga6":{"name":"GA-6","path":"M 1956.5676,991.45536 C 1956.2362,991.56391 1955.2077,990.8538 1954.9932,990.63937 C 1954.7788,990.42488 1954.9358,989.66902 1954.9358,988.95965 L 1954.6865,986.58911 L 1956.0597,987.31379 L 1955.4783,983.36793 L 1954.1211,981.31702 C 1953.3746,980.18901 1952.4453,978.20298 1952.056,976.90363 L 1951.4313,974.99836 L 1944.7275,975.79285 L 1944.7275,972.76478 L 1940.7448,965.96922 C 1940.3726,964.36901 1939.9899,962.76624 1939.8114,961.13785 C 1946.007,959.83096 1950.9141,959.31379 1957.1512,958.96285 C 1957.6855,958.33357 1957.8229,957.87277 1958.562,957.54503 L 1959.4729,957.54503 L 1959.4867,959.95533 C 1959.4944,961.28099 1959.7622,963.51406 1960.082,964.9177 L 1960.6633,967.46978 L 1965.2407,975.20321 L 1970.4852,980.30039 C 1969.6597,980.84194 1968.8201,981.35894 1967.9064,981.72984 L 1967.9798,983.0939 L 1965.1442,984.17201 L 1965.1442,987.60285 C 1964.697,987.61232 1964.1679,987.85381 1963.8546,987.89248 L 1963.6879,986.35341 L 1957.4638,988.01498 L 1957.087,990.46838 L 1956.5676,991.45536 z "},"ca32":{"name":"CA-32","path":"M 246.52048,967.75335 L 243.12922,964.35058 L 242.07295,964.35058 C 241.49192,964.35058 240.29602,964.72324 239.41527,965.17864 L 237.81398,966.0067 L 237.41846,965.61125 C 237.20091,965.3937 236.72197,965.20524 236.35408,965.19236 C 235.98618,965.17949 234.85578,964.96455 233.84204,964.71473 L 232.52319,964.05073 L 231.99887,962.88767 L 231.99887,961.51493 L 232.45257,961.51493 C 232.70211,961.51493 233.17804,961.7867 233.51021,962.11887 L 234.1142,962.72286 L 241.28299,961.91181 L 245.90895,957.64774 L 247.87847,959.0879 L 247.87847,960.3091 C 247.87847,960.98075 248.17468,962.00465 248.53668,962.58431 L 249.19495,963.63832 C 248.34087,965.03521 247.49551,966.44169 246.52048,967.75335 z "},"ca31":{"name":"CA-31","path":"M 227.55638,966.05196 C 227.29641,966.05196 227.04086,965.73295 226.98846,965.34305 L 225.25936,958.97062 L 224.42613,958.714 L 226.18005,957.57934 L 233.13313,957.44465 L 233.45186,961.5797 L 231.75187,961.1404 L 231.7351,962.61346 L 228.02313,961.29392 C 227.20547,962.21454 226.82798,962.9986 228.02897,964.0103 L 228.22628,966.06716 L 227.55638,966.05196 z "},"tn7":{"name":"TN-7","path":"M 1679.1529,963.77744 L 1679.1313,961.42436 L 1673.055,960.55376 L 1668.4165,957.66821 L 1669.25,957.18127 C 1670.6083,955.34281 1671.9058,953.79438 1671.9127,952.15861 L 1668.0642,952.15861 C 1668.0345,952.78047 1667.7895,953.33053 1667.3455,953.81423 L 1664.2819,950.85603 C 1663.4774,949.4377 1663.4214,948.64321 1663.4317,947.90384 C 1662.1343,948.31064 1661.4059,947.17304 1660.5671,946.33494 L 1662.4412,945.61576 L 1663.9444,946.86328 L 1666.3203,945.97027 L 1667.2692,944.24705 C 1665.9862,943.17206 1664.3581,941.71953 1664.566,941.0983 L 1669.6701,941.0983 L 1669.4889,940.19985 L 1672.7864,939.50053 L 1673.391,940.47888 L 1677.6804,940.76772 C 1677.9783,939.53314 1680.2221,938.81062 1683.1292,938.26266 C 1688.0647,938.51741 1694.0259,937.57547 1699.7392,936.92287 L 1699.0907,934.85659 L 1717.4975,933.01983 L 1724.0436,928.3379 L 1726.3453,924.28055 C 1726.4966,919.33922 1726.296,914.44807 1725.421,909.65334 L 1725.9355,907.6862 L 1729.5022,906.57474 L 1746.1223,904.72561 L 1746.1223,903.10068 L 1751.1098,903.10068 L 1752.3658,901.84466 L 1753.6451,904.23493 L 1755.8641,904.23493 L 1757.2808,901.96642 C 1758.5514,901.84806 1760.3108,902.77696 1762.0849,903.73733 L 1764.3734,901.47693 L 1768.9176,900.73246 L 1768.9176,896.8765 L 1773.3995,894.20526 L 1773.4547,892.89236 L 1775.8042,892.89236 C 1776.7584,892.03588 1777.4912,891.13194 1777.4246,890.05672 L 1792.5982,890.05672 L 1793.9458,888.43291 L 1793.45,876.58072 L 1794.722,876.03412 L 1792.1779,873.26177 L 1793.531,871.9086 L 1791.3192,871.87253 L 1793.4178,870.2827 L 1792.6701,869.07295 L 1794.1144,869.07295 L 1792.3528,867.31145 L 1786.4986,867.17806 L 1786.4986,865.67018 L 1791.1544,861.01445 L 1789.1114,856.48389 L 1785.416,857.08357 L 1782.6334,854.89474 L 1780.7388,854.89474 L 1779.7644,861.70028 L 1780.2959,861.70028 C 1780.5882,861.70028 1780.8273,861.96349 1780.8273,862.28522 C 1780.8273,862.60689 1780.4727,863.00626 1780.0391,863.1726 L 1779.0029,863.61281 L 1776.543,860.76707 L 1773.0932,860.99937 L 1770.1714,863.48708 L 1766.6407,851.11845 L 1791.2177,847.3395 L 1793.3042,849.91625 L 1793.5522,858.10338 L 1791.3831,859.31619 L 1795.1491,866.04749 L 1794.5215,868.44747 L 1798.1167,870.04348 C 1798.1404,871.93968 1797.8303,872.81305 1796.4055,874.40555 L 1798.1557,877.15851 L 1796.7951,883.59786 L 1800.2072,883.65298 C 1800.1006,884.76484 1800.5271,885.76253 1801.4492,886.65394 L 1806.161,881.89647 L 1813.801,882.25467 L 1822.1921,885.47261 L 1822.2083,888.92246 L 1824.0594,892.4069 L 1823.3489,895.608 L 1820.1797,899.14064 L 1819.9592,901.96642 C 1817.0926,902.18896 1813.602,901.86553 1808.3962,900.04136 L 1808.3962,898.86672 L 1806.0924,898.72919 L 1805.7952,897.82173 C 1807.6329,896.42863 1809.5998,895.20057 1811.3765,893.73358 L 1811.4523,889.48959 C 1809.5402,889.8213 1807.4932,889.34429 1805.4368,888.81022 L 1803.1052,893.68464 L 1801.7916,892.78551 L 1801.7392,889.48959 L 1800.807,889.48959 L 1797.8981,891.79366 L 1798.5346,887.7882 L 1797.4282,887.7882 C 1796.7291,887.97649 1795.9861,888.52967 1795.0685,890.53917 L 1790.0378,893.58806 L 1784.9051,891.94378 L 1782.2968,893.39988 L 1784.5056,894.1046 L 1784.4506,896.5749 L 1783.117,897.80091 L 1776.4975,896.54875 L 1777.084,899.05586 C 1778.9881,901.18503 1781.5578,903.45627 1780.8648,904.35709 L 1779.5542,905.93632 L 1776.2264,905.93632 L 1773.0062,909.46187 L 1771.025,908.35314 L 1768.9176,908.90427 L 1768.8754,911.75631 C 1771.5155,913.32884 1774.6427,914.83173 1774.2605,916.83602 L 1772.3204,918.25464 L 1772.3204,920.54278 L 1770.6315,921.94443 L 1771.2531,922.95018 L 1775.1561,922.95018 L 1775.1561,924.39364 L 1779.106,926.52082 C 1780.2871,934.51802 1781.469,942.51731 1780.7819,946.00895 L 1781.9335,949.0381 L 1780.8273,949.0381 L 1780.8273,951.09848 L 1752.1873,954.19892 L 1750.1653,955.3093 C 1726.8413,958.07853 1703.7886,960.78957 1679.1529,963.77744 z "},"nc7":{"name":"NC-7","path":"M 2247.8342,939.75999 L 2191.7154,902.71083 L 2195.9475,893.30273 L 2194.2642,889.67124 L 2202.0886,888.27293 L 2209.2025,877.25089 L 2212.3074,878.21541 L 2215.0507,876.32698 L 2213.6508,872.86103 L 2216.5515,868.47775 L 2215.2723,865.67018 C 2213.0946,865.38735 2212.1192,865.19708 2210.404,866.0704 L 2209.4328,862.75111 L 2214.0784,858.4191 C 2221.6224,854.96585 2216.634,858.40316 2224.918,856.52228 L 2227.2811,851.49503 L 2230.7144,854.38392 L 2236.2317,853.1169 L 2236.2317,857.0403 L 2239.184,857.78125 L 2238.4547,861.66869 L 2240.2405,865.12211 L 2241.3059,864.55197 C 2241.8919,864.23835 2242.501,863.65988 2242.6595,863.26641 L 2242.9477,862.55097 L 2242.9925,863.29715 C 2243.0171,863.70758 2242.7643,864.55334 2242.4307,865.17661 L 2241.8243,866.30979 L 2243.1761,867.9387 L 2242.0479,867.9387 L 2241.3328,872.41062 L 2240.2118,873.10348 L 2237.3965,871.0579 L 2238.6867,867.7689 L 2237.0338,868.18154 C 2236.1248,868.40851 2234.9344,868.99668 2234.3885,869.4886 L 2233.396,870.38302 L 2233.396,874.15199 L 2236.3955,880.26773 L 2237.9034,881.15841 C 2238.7327,881.6483 2240.8013,883.4622 2242.5002,885.18922 L 2245.5893,888.3293 L 2247.3508,889.81081 L 2247.7162,891.26629 L 2252.2416,894.12314 L 2252.6739,893.64953 C 2252.9116,893.38905 2253.5492,891.77228 2254.0908,890.05672 C 2254.6323,888.34115 2255.4464,886.34622 2255.8998,885.62353 L 2256.7242,884.30955 L 2255.3752,882.68404 L 2252.6784,882.68404 L 2252.6784,871.46834 C 2251.605,867.92123 2250.7522,864.29002 2249.3188,860.8674 C 2249.0674,860.54566 2248.7239,859.19783 2248.5555,857.87216 L 2248.2493,855.46187 L 2248.7625,855.46187 C 2249.0447,855.46187 2249.2756,855.69887 2249.2756,855.9885 C 2249.2756,856.27813 2249.6767,856.91615 2250.1668,857.40632 L 2251.0581,858.29751 L 2254.8906,858.29751 L 2255.838,859.99044 L 2265.1041,861.23745 L 2269.2645,857.19683 L 2271.3678,861.32229 L 2270.7036,863.9688 L 2269.1251,863.9688 L 2269.1329,864.67771 C 2269.1372,865.06761 2269.2923,865.95238 2269.4777,866.64388 L 2269.8147,867.90115 L 2271.9608,868.58227 L 2271.9608,870.07677 L 2269.1251,871.93474 L 2269.1251,874.86719 L 2272.2444,874.11501 L 2273.5037,872.47573 L 2276.9652,872.47573 L 2277.7396,877.29632 L 2286.9897,891.65432 L 2289.1693,892.04167 L 2289.5547,893.21477 L 2286.9851,896.74617 C 2285.5718,898.68841 2283.5631,901.86978 2282.5212,903.81588 C 2281.4793,905.76193 2280.0904,909.01299 2279.4348,911.04048 L 2278.2428,914.72681 L 2277.371,922.38305 C 2276.8915,926.59398 2276.4989,930.86871 2276.4985,931.88246 L 2276.4978,933.72563 L 2274.3507,933.72563 L 2273.7493,932.15848 L 2269.4087,931.60904 L 2266.0059,932.13279 C 2264.1344,932.42083 2260.87,933.25797 2258.7517,933.99308 L 2254.9003,935.32958 L 2247.8342,939.75999 z "},"tn6":{"name":"TN-6","path":"M 1818.1989,929.75572 L 1816.9973,926.30889 L 1815.5653,928.26724 L 1812.657,925.12909 L 1811.9125,921.7393 L 1810.1299,921.31555 L 1810.1299,919.10147 L 1812.6862,917.50036 L 1814.6851,913.67592 L 1815.4478,902.18856 C 1817.0174,902.43929 1818.6198,902.42681 1820.2428,902.24998 L 1820.483,899.30108 L 1823.6451,895.81704 L 1824.3307,892.38898 L 1822.5401,888.85951 L 1822.3909,882.50199 L 1824.3959,880.58612 L 1824.4561,878.48888 L 1825.9769,878.82071 L 1826.0973,876.22966 L 1830.4398,878.64762 L 1831.2944,876.72709 L 1832.7461,876.07801 C 1833.3546,876.06049 1834.1818,875.7514 1835.0087,875.44289 L 1835.7755,873.35041 L 1834.9572,870.66341 L 1836.1476,868.30018 C 1835.1223,867.46458 1834.8173,866.67701 1834.9082,865.91581 L 1836.7081,865.91581 L 1839.9687,860.14913 C 1839.8458,859.61217 1839.2442,859.39434 1838.5694,859.22533 L 1837.4939,859.22834 L 1836.5083,861.98385 L 1835.4889,858.54086 L 1834.7121,861.35683 L 1832.4146,861.51058 L 1831.6467,859.18138 L 1830.503,859.97003 C 1830.5801,860.87329 1830.4337,861.7883 1829.8047,862.72871 L 1828.0244,860.49213 L 1823.4004,865.16765 L 1822.2728,862.65442 L 1821.7405,867.54931 L 1818.517,867.7592 L 1817.8979,865.16056 L 1813.7807,862.88155 L 1811.6717,859.01436 L 1810.1201,861.31475 L 1810.5418,862.06012 L 1808.1573,863.09842 L 1807.4868,861.35099 L 1805.8773,861.87722 L 1804.7266,860.72652 L 1801.2759,863.19018 C 1800.3751,862.24166 1798.2814,860.97362 1795.2939,859.46619 L 1793.9291,858.30522 L 1793.5877,849.39143 C 1792.9719,848.78665 1792.233,847.99613 1791.9299,847.25738 L 1817.4071,843.11434 L 1819.1197,843.96486 L 1822.0846,842.46276 L 1869.5245,837.89437 L 1881.7937,835.0914 L 1882.3434,840.83788 L 1884.0448,840.18501 L 1884.0448,841.28365 L 1886.1603,841.28365 L 1889.1497,843.63513 L 1891.8496,848.37276 L 1892.529,853.75345 L 1895.4608,859.53912 L 1894.248,863.01846 L 1894.8227,863.59319 L 1892.9275,865.68737 L 1888.495,866.39616 L 1888.8654,874.17966 L 1887.5421,874.17711 L 1885.3413,871.15579 L 1874.9221,869.64008 L 1869.2785,874.91903 L 1869.9127,876.91731 L 1868.793,877.60932 L 1870.4551,882.32029 L 1869.4867,882.96761 L 1869.583,886.12748 L 1860.7955,886.47541 L 1858.3999,888.63889 L 1855.0072,895.35438 L 1855.6877,899.61017 L 1851.8326,900.88241 C 1849.7076,900.31103 1847.581,899.72921 1845.3579,898.47132 L 1842.7163,899.13435 C 1844.2164,909.53838 1845.2632,910.79451 1844.9129,916.09881 C 1842.4845,918.56469 1840.0655,921.18953 1837.5402,922.00761 L 1837.5402,923.51731 L 1835.8277,923.51731 L 1834.0907,921.48858 L 1827.7668,921.81592 L 1828.2936,924.57188 L 1825.7759,925.20378 L 1821.6636,929.75572 L 1818.1989,929.75572 z "},"mo7":{"name":"MO-7","path":"M 1477.4135,811.22447 L 1477.4135,812.39417 C 1477.4135,813.03848 1477.1515,814.05937 1476.8287,814.66268 L 1476.2438,815.76149 L 1474.6665,815.76149 L 1473.4613,824.37476 L 1473.5499,829.28394 L 1468.942,829.15991 L 1469.1724,839.29734 L 1446.2214,840.59107 L 1446.2214,836.99338 L 1420.8424,837.5605 C 1420.8216,855.28781 1423.429,873.00219 1423.7489,890.72882 L 1501.162,885.48288 L 1499.6378,881.83199 L 1497.7415,881.44209 L 1498.3618,879.86473 L 1495.6325,877.13543 L 1496.2528,874.76057 L 1494.4273,874.05166 L 1494.4273,866.94486 C 1498.2082,866.21604 1501.3943,866.27083 1505.7699,866.23595 L 1505.0433,849.34612 L 1496.6959,849.5411 L 1496.6959,838.44664 L 1495.5616,838.44664 L 1494.8172,829.2485 L 1490.0498,829.90427 L 1489.3232,814.06011 L 1483.0316,814.06011 L 1478.1401,811.22447 L 1477.4135,811.22447 z "},"nc6":{"name":"NC-6","path":"M 2163.347,806.64309 L 2164.2418,810.56869 L 2160.8568,811.31305 L 2160.6085,813.00576 L 2158.4996,813.49298 L 2159.7048,815.74374 L 2164.9863,818.80981 L 2166.8114,817.56031 L 2170.2406,819.42135 L 2167.0952,819.7314 L 2166.0495,821.59226 L 2164.7203,820.67067 C 2163.9871,820.15708 2163.1713,819.7314 2162.9126,819.7314 L 2162.4518,819.7314 L 2161.2644,823.13417 L 2158.5528,823.13417 L 2156.8866,826.6785 L 2156.2665,824.12664 L 2154.7247,825.40268 L 2150.9852,824.65833 L 2151.6232,826.6342 C 2146.7,831.38306 2144.9658,832.72142 2143.3644,832.77536 L 2140.3338,828.80546 L 2138.083,828.80546 L 2137.445,830.45364 L 2133.865,831.6411 L 2133.865,837.02882 L 2134.8929,837.77318 L 2137.6931,836.49714 L 2139.9261,839.26189 L 2134.7156,842.48743 L 2134.7156,846.26236 C 2133.4278,846.49278 2132.45,847.12178 2130.8521,846.95357 L 2130.0723,851.5083 L 2127.7152,852.76664 C 2125.2694,851.17159 2128.3601,851.70254 2120.378,847.98149 L 2117.4891,850.88803 L 2119.545,853.15654 L 2121.9817,851.96915 L 2123.3731,853.31602 C 2121.9939,857.1261 2121.4119,859.12024 2121.2286,862.08882 L 2164.4722,852.74889 C 2167.2308,857.8028 2169.3251,861.79369 2171.1537,867.51199 L 2173.9005,868.57519 L 2173.8744,870.41881 L 2179.5188,874.38842 C 2179.469,875.31528 2179.5182,876.42771 2179.7847,877.30375 L 2186.2712,877.29496 C 2188.0438,872.83194 2190.6578,869.12184 2193.9806,865.10169 C 2195.9124,865.65702 2195.8953,866.47806 2201.5476,866.76763 L 2201.9204,865.13714 L 2200.1479,865.0574 C 2198.0094,863.42413 2197.0226,862.85382 2193.9983,861.75206 C 2195.1294,860.92201 2195.5075,860.4906 2195.5313,859.12903 L 2191.7827,857.66692 L 2184.8798,851.0741 L 2185.7927,848.92072 C 2182.1224,848.24895 2178.4408,850.12649 2174.7514,850.30315 L 2170.9764,829.91323 L 2184.623,826.92684 L 2180.8214,808.92062 L 2177.1085,814.62724 L 2172.412,814.62724 L 2171.0828,812.48275 L 2171.7208,810.01932 C 2173.8798,810.99977 2174.7986,811.44876 2176.2046,811.10049 C 2176.2465,808.63853 2175.7171,806.46779 2174.8932,804.15305 L 2163.347,806.64309 z M 2157.9502,807.55582 L 2142.2301,810.33833 C 2143.357,817.21079 2143.9581,820.82896 2145.6861,825.96981 L 2146.9621,825.96981 L 2148.8584,821.75179 C 2148.6349,821.05921 2148.175,820.37072 2146.3418,819.6782 L 2148.5749,818.13635 L 2150.5244,819.16427 L 2151.0206,817.40968 L 2153.7322,818.20724 L 2154.6538,817.03753 L 2151.7118,813.88288 L 2157.9679,809.84209 L 2157.9502,807.55582 z "},"mo6":{"name":"MO-6","path":"M 1514.4527,628.66216 C 1461.9547,634.11244 1409.044,637.91158 1355.4808,639.1009 L 1355.4808,641.58209 L 1356.5796,642.27325 L 1358.5646,639.9516 L 1360.6204,639.9516 L 1361.2762,641.67068 L 1359.5394,645.28612 L 1359.8052,645.74692 C 1359.9576,645.9935 1360.4664,646.19001 1360.9394,646.19001 L 1361.8079,646.19001 L 1361.4889,649.30922 L 1363.1016,654.71464 L 1364.679,655.40586 C 1365.5452,655.78923 1366.2882,656.3043 1366.3271,656.54011 C 1366.3661,656.77592 1366.43,657.25912 1366.4689,657.62117 L 1366.5398,658.27694 L 1370.5097,659.62387 L 1370.2262,663.16843 L 1372.4947,664.37358 L 1372.4947,666.03952 L 1374.072,666.03952 L 1374.6214,669.72585 L 1373.6644,671.56902 L 1374.0188,671.92348 C 1374.2158,672.12039 1374.9743,672.27793 1375.7025,672.27793 L 1377.0317,672.27793 L 1381.4093,676.77952 L 1384.5285,677.96692 L 1383.9081,679.57972 L 1386.921,679.36704 L 1386.9565,680.96209 L 1388.0907,681.40513 C 1388.7146,681.6486 1389.6371,681.86179 1390.1466,681.88368 L 1391.0859,681.91912 L 1391.6353,679.81008 L 1395.9774,678.99484 L 1397.3774,680.8912 L 1396.7572,682.4685 L 1399.7169,683.58506 L 1399.7169,686.27892 L 1397.1648,687.55496 L 1400.5675,687.30684 L 1400.9043,689.6817 L 1399.0611,691.20585 L 1395.747,689.96526 L 1395.747,693.86427 L 1392.9468,694.92764 L 1392.6632,696.22137 C 1392.5079,696.93425 1392.3074,698.15318 1392.2201,698.93298 L 1392.0606,700.3508 L 1389.5085,700.72295 L 1389.5085,702.30031 L 1392.9113,704.81694 L 1392.9113,706.85503 L 1395.6761,707.54625 L 1398.1927,711.21484 L 1400.6916,710.73635 L 1401.3651,712.50863 L 1399.6814,714.19226 L 1400.3903,717.0279 L 1404.2539,719.31417 L 1404.2539,722.18526 L 1406.2743,722.18526 L 1408.2415,724.48922 L 1409.3226,723.90434 C 1409.9216,723.5838 1410.8191,723.31952 1411.3075,723.31952 L 1412.1937,723.31952 L 1412.1937,724.98546 L 1415.7737,724.27655 L 1414.9815,728.44114 C 1416.5187,727.13573 1418.0876,725.65087 1419.4415,725.38421 L 1420.2909,725.35602 C 1420.5869,726.04383 1420.8311,726.88687 1421.3076,727.03302 C 1422.1434,726.67771 1423.2849,725.36691 1424.3621,724.25721 L 1423.7876,721.97951 L 1425.7817,724.29957 L 1427.1425,723.47139 L 1427.7598,726.03085 L 1429.4037,725.99495 L 1429.4037,727.11979 C 1427.9391,732.20433 1426.5319,733.55727 1425.1302,734.56103 L 1432.6281,735.88493 L 1432.6103,734.21899 L 1430.9089,733.56328 L 1430.9089,731.13523 C 1432.9534,732.04445 1435.6133,732.27692 1438.2816,732.49991 L 1438.2816,724.52467 L 1435.765,722.75239 L 1433.5142,722.75239 C 1434.5043,722.03168 1435.2544,721.09546 1434.9746,720.37476 L 1432.8301,720.94189 L 1431.7226,701.01457 L 1453.1783,699.7273 C 1453.7163,705.09676 1454.2759,709.27718 1454.7283,719.34962 L 1456.8374,719.34962 L 1458.9641,716.51397 L 1463.0935,716.51397 L 1464.5468,718.2685 L 1466.9216,717.93179 L 1466.5495,713.67833 L 1468.4458,712.95167 C 1468.9711,713.81444 1469.6021,714.60678 1471.4586,714.58216 L 1471.1751,717.15199 C 1472.7901,716.72313 1474.0608,716.13536 1474.5069,715.16704 L 1473.4436,713.19979 L 1474.2025,711.64676 L 1476.8479,711.57905 L 1477.5714,709.87766 L 1479.2744,709.70843 L 1480.7615,707.48653 L 1480.1073,704.60427 L 1481.6847,704.60427 L 1482.9671,706.89048 L 1485.9027,706.18157 L 1487.4462,710.02585 L 1492.4424,709.99199 L 1492.7291,712.7133 L 1494.9976,713.93615 L 1493.1366,715.65852 L 1497.8301,714.75939 L 1497.6987,716.79011 C 1496.324,718.3395 1495.0743,720.02064 1495.5616,721.49404 C 1494.1771,721.84442 1493.7683,722.50291 1493.8602,723.31952 L 1496.1287,723.31952 L 1496.1287,724.79048 L 1489.569,732.10701 L 1490.6347,748.78711 C 1496.5479,749.5689 1504.0547,748.62741 1511.1576,748.1314 L 1515.801,732.99615 C 1514.4463,731.81306 1513.1772,731.08737 1511.9552,730.5681 C 1513.2085,724.54054 1515.8507,718.49512 1517.1239,712.47772 L 1503.6191,708.49007 L 1502.757,685.88902 L 1495.154,685.88902 L 1492.0525,645.71147 L 1515.2693,643.10625 L 1514.4527,628.66216 z "},"co7":{"name":"CO-7","path":"M 924.642,673.8326 L 925.08407,678.20029 L 922.56846,683.04845 L 917.57461,684.04829 L 916.34479,682.46158 L 913.51748,681.88708 L 912.17849,683.97099 L 909.62982,685.40997 L 909.71942,690.10211 L 915.4692,695.61675 L 916.04325,695.43743 L 915.68346,693.98337 L 917.0921,693.29221 L 917.0921,686.36258 L 924.44707,686.73478 L 924.99645,685.31696 L 926.73328,685.31696 L 926.73328,686.45122 L 929.56893,686.45122 L 929.56893,683.61557 L 932.42232,683.61557 L 933.11348,680.24825 L 934.95665,679.68112 L 940.19771,681.12231 L 938.64299,682.71168 L 938.64299,685.24607 L 936.32133,685.99043 L 931.94378,685.24607 L 931.19942,686.45122 L 932.9717,686.45122 L 932.9717,688.71973 L 930.27784,688.77287 C 928.79621,688.79476 927.07362,689.00749 926.44972,689.25142 L 925.31546,689.69446 C 944.62892,691.04388 958.61096,691.58691 980.43331,692.26429 L 981.17761,676.84548 L 924.642,673.8326 z "},"co6":{"name":"CO-6","path":"M 904.08358,681.34706 L 901.85051,683.75736 L 900.53903,699.92052 L 890.43705,699.33564 L 890.43705,702.15359 L 891.87262,702.80931 C 892.66705,703.17131 893.95041,703.46508 894.70826,703.46508 L 896.07289,703.46508 L 897.86292,706.19439 L 897.1717,708.92369 L 900.04279,710.23518 L 899.01487,726.55782 C 925.52541,727.98818 938.58338,728.69074 963.63381,730.18098 L 962.76371,745.92884 L 978.05841,746.76178 L 980.77001,692.84911 L 925.66992,690.27934 L 926.32569,692.81366 L 924.74833,693.80614 L 926.04212,693.82389 L 926.69784,695.56072 L 925.58133,696.67723 C 924.96458,697.29398 924.20962,697.79379 923.89764,697.79379 L 923.33051,697.79379 L 923.33051,696.23419 L 919.94549,694.83406 L 918.2441,695.48983 L 918.88212,697.15577 L 914.89447,697.91782 L 914.2919,697.54567 C 913.95979,697.34032 913.68938,696.94968 913.68932,696.67723 C 913.89587,696.24859 914.02285,695.97915 914.92992,695.7734 L 909.15229,690.19069 L 909.15229,684.92706 L 911.70437,683.70416 L 907.71678,683.61557 L 906.29896,681.34706 L 904.08358,681.34706 z "},"va7":{"name":"VA-7","path":"M 2196.5504,631.00157 L 2195.1576,636.56601 L 2192.935,638.81734 L 2190.2943,638.81734 L 2190.2943,637.68308 C 2188.4703,637.93438 2187.1005,636.43829 2185.456,636.10573 L 2181.7999,642.92522 L 2179.4761,643.43439 C 2177.885,646.44636 2177.7694,648.56935 2177.8051,650.5167 L 2176.4472,652.16732 L 2176.116,658.08197 C 2179.5439,658.73575 2179.7487,659.55922 2180.2277,660.36823 L 2183.5131,660.39835 L 2183.5596,661.50249 L 2186.1826,661.50249 L 2187.1625,658.82405 L 2188.2013,658.0202 L 2189.8689,663.41655 C 2192.4788,666.13826 2195.0924,668.38976 2197.7024,669.35365 L 2195.8238,674.15655 L 2204.2421,675.92882 L 2201.2647,684.79021 L 2214.1314,688.31701 L 2211.7566,698.68486 L 2215.8859,700.65206 L 2215.2125,702.7788 L 2217.0025,703.43457 C 2219.0361,703.96319 2220.3488,703.88782 2222.4434,704.01939 L 2222.1421,700.58117 L 2223.7194,699.39377 C 2225.8307,701.16651 2227.4892,702.02814 2228.7172,702.03444 L 2229.8338,703.59404 L 2232.0314,702.42434 C 2232.5658,703.40922 2235.7155,703.83366 2238.6774,704.42704 L 2233.5733,711.69338 L 2232.6694,715.32652 C 2231.6015,715.22733 2230.7609,715.61712 2229.8515,716.38988 L 2230.8617,718.74704 L 2232.4213,718.78249 L 2234.8848,716.12407 L 2240.4851,714.06823 L 2244.6677,710.84269 L 2248.3364,710.84269 L 2246.8477,709.17674 L 2245.8552,709.21219 C 2245.4538,706.32414 2248.1161,703.79322 2248.4073,700.33305 L 2251.5087,699.53556 L 2257.499,701.11286 L 2261.6461,696.15048 L 2262.3728,692.83635 L 2260.7069,692.19833 L 2259.2181,693.82882 L 2258.013,691.91477 L 2255.7976,692.411 L 2255.0887,689.85892 L 2252.6253,691.77298 L 2251.9873,689.30949 L 2251.2606,690.00071 L 2249.701,688.15754 L 2250.5517,688.15754 L 2249.2225,686.56249 L 2252.8734,680.62533 L 2250.7644,679.08348 L 2243.1081,679.08348 L 2242.3992,680.21774 L 2237.3659,680.02276 L 2239.6877,677.77199 L 2238.9787,674.26288 L 2235.5228,671.3386 L 2236.852,668.85741 L 2233.9632,667.77635 L 2230.5781,668.44982 L 2229.7983,666.42942 L 2232.315,664.40902 L 2230.9326,662.2114 L 2227.069,663.82414 L 2224.8714,663.13298 C 2223.9831,662.02963 2223.6106,660.06726 2223.1877,658.1883 L 2226.1475,654.6615 L 2227.7248,655.97298 C 2227.9833,654.66961 2226.9533,653.47325 2224.1625,652.41068 L 2221.6104,654.07662 L 2216.6835,648.13952 L 2212.3591,644.91397 C 2212.8784,642.06999 2211.2376,640.40604 2209.2931,638.90593 L 2206.1916,639.52625 L 2202.8952,635.96395 L 2203.4446,635.09556 L 2196.5504,631.00157 z "},"ca6":{"name":"CA-6","path":"M 71.916024,686.41277 C 71.532014,686.3881 70.898874,686.23922 70.508974,686.0819 C 70.119074,685.92458 69.800064,685.5467 69.800064,685.24221 C 69.800064,684.93772 68.852794,683.55534 67.694994,682.1703 L 65.589984,679.65197 L 62.427394,679.65197 L 62.427394,677.52234 L 60.726005,676.11031 L 60.726005,674.02843 L 56.446679,669.52997 L 53.307621,668.74211 L 52.293368,669.66001 C 51.735484,670.16487 51.098258,670.57791 50.877248,670.57791 C 50.656238,670.57791 51.508008,669.05732 52.770097,667.1989 C 54.032128,665.34042 55.322006,663.14325 55.636422,662.31626 L 56.208031,660.81269 L 55.09436,656.77933 L 56.723608,655.549 L 54.543054,650.7284 L 52.696086,650.7284 L 53.468629,647.21096 L 52.051091,641.93791 L 50.735863,640.15696 C 50.01249,639.17747 48.710419,637.61083 47.842429,636.67564 C 46.974438,635.74044 45.959562,634.59013 45.587185,634.11936 C 45.214808,633.64864 44.492456,632.28033 43.981984,631.07876 C 43.471511,629.87712 42.581913,627.39826 42.005143,625.57023 L 40.956409,622.24658 L 38.410285,619.53633 L 39.680653,619.53633 C 40.379412,619.53633 41.408297,619.29161 41.967089,618.99256 L 42.983157,618.4488 L 47.331049,619.6493 L 48.812673,617.62312 L 52.689281,619.47173 L 53.40477,621.72601 L 57.039668,622.48477 L 62.301094,627.59267 L 64.535744,626.88336 L 65.827104,628.43934 C 66.679304,633.40234 68.046484,637.24957 69.928634,642.29843 L 72.460634,639.91973 L 76.495364,644.14903 L 81.122954,651.69508 L 82.160104,660.38559 L 83.623614,661.35322 C 84.098074,662.26306 83.972894,663.35626 83.974764,663.88743 C 83.976694,664.41866 83.685754,665.4953 83.328234,666.27998 L 82.678144,667.70671 L 81.622884,667.05451 L 79.389134,669.45216 L 76.602034,668.75266 L 76.247014,670.52777 C 76.051754,671.50409 75.669734,672.44025 75.398074,672.60812 L 74.904224,672.91334 L 74.904224,676.15466 L 76.322044,676.75048 L 74.337094,678.00695 L 74.337094,679.55743 L 72.919274,680.03348 L 73.769054,681.68592 C 74.236424,682.59474 74.874444,683.55183 75.186884,683.81282 L 75.754914,684.28739 L 73.293234,683.75168 L 72.614104,686.45751 L 71.916024,686.41277 z "},"ca7":{"name":"CA-7","path":"M 100.74612,685.32326 L 99.955094,683.78237 L 95.093384,683.00495 L 90.216244,679.00856 L 88.991364,679.39733 C 88.317614,679.61113 86.212254,680.52132 84.312774,681.41999 C 82.413234,682.31861 80.412464,683.05406 79.866594,683.05429 L 78.874124,683.05474 L 78.874124,681.35335 L 78.306994,681.35335 C 77.995074,681.35335 77.739864,681.15412 77.739864,680.91054 C 77.739864,680.66702 78.505494,680.17877 79.441254,679.82557 L 81.142634,679.18335 L 81.142634,677.61121 L 84.892044,678.04892 L 85.686364,677.09184 C 86.123224,676.56548 86.539494,675.73385 86.611404,675.24379 L 86.742184,674.35277 L 85.858994,672.6071 C 85.373194,671.647 84.584144,670.41486 84.105544,669.869 L 83.235344,668.87652 L 84.089324,668.87652 C 84.559024,668.87652 85.683184,669.11063 86.587524,669.39675 C 87.491874,669.68292 88.966804,670.07889 89.865194,670.27676 L 91.498574,670.63655 L 90.884774,668.28943 L 92.616844,666.55736 L 91.876434,663.41524 L 93.052344,662.82021 L 93.052344,660.7883 L 99.574324,661.78741 L 99.933084,657.42132 L 105.65484,658.81538 L 106.64607,657.25038 L 106.66343,660.28855 L 104.881,662.07098 L 100.91909,662.07098 L 95.321424,666.89157 L 95.320854,670.43902 L 96.871044,671.72561 L 100.78344,671.71217 L 103.30404,677.79366 L 106.0963,680.4168 L 106.0963,682.21233 C 104.31449,683.24944 102.59988,684.41755 100.74612,685.32326 z "},"in6":{"name":"IN-6","path":"M 1860.0659,555.00632 L 1856.6277,555.82157 L 1857.372,560.92573 L 1849.4322,561.68781 L 1845.4978,564.23989 L 1845.3028,568.81239 L 1838.1782,570.19477 L 1840.6772,586.35794 C 1838.8567,585.93917 1837.0982,586.1173 1835.4312,587.38586 L 1838.0188,603.92117 L 1819.144,607.16447 L 1822.9012,633.14605 C 1826.0302,633.38578 1829.5619,632.06942 1836.2642,631.44467 L 1836.9022,636.03484 L 1835.9806,636.35385 L 1836.53,640.99721 L 1834.8463,642.64546 L 1836.2819,650.00038 L 1832.2057,649.30922 L 1832.1525,652.67655 L 1836.53,652.03853 L 1839.0998,668.94605 L 1828.8738,670.32843 L 1828.0586,659.96058 L 1825.9673,659.99602 L 1825.3115,654.94506 C 1823.5866,655.50953 1822.2206,655.82513 1821.3948,655.76031 L 1823.2025,665.86229 L 1809.4142,668.68018 L 1809.7155,673.3413 L 1817.7793,672.20704 L 1819.8706,684.36486 L 1828.1117,682.61028 L 1825.8077,679.24295 L 1828.2535,676.9213 L 1831.16,680.55444 L 1837.877,678.81761 L 1838.4263,682.69892 L 1843.8495,681.72414 L 1859.3392,668.04216 L 1872.4718,666.26989 L 1873.0744,672.33107 L 1874.7403,674.31602 L 1874.3327,675.7516 L 1877.3101,675.94652 L 1878.8343,674.511 L 1860.0659,555.00632 z "},"in7":{"name":"IN-7","path":"M 1806.9488,653.52321 L 1805.9473,651.73375 L 1803.5125,653.03685 L 1803.5125,652.14623 C 1803.5125,651.6564 1803.9234,650.62842 1804.4257,649.86189 L 1805.3389,648.46817 L 1804.9487,646.90443 C 1804.734,646.04438 1804.2222,644.50814 1803.1847,643.53534 C 1802.2746,642.68193 1801.8111,641.44275 1801.8111,641.09158 L 1801.8111,640.45317 L 1803.4052,640.99869 L 1805.5747,638.94721 L 1805.3053,637.59626 L 1807.766,637.37224 L 1812.637,640.07812 L 1819.1085,638.19344 C 1819.2001,641.57274 1819.6139,644.46872 1820.1082,647.60636 L 1816.7029,648.70795 L 1815.9666,651.40119 C 1812.9539,652.16897 1809.8003,652.57418 1806.9488,653.52321 z "},"oh7":{"name":"OH-7","path":"M 1935.1628,650.7284 L 1933.834,640.49082 L 1908.5077,642.7886 L 1906.6798,627.85764 L 1908.0412,627.01619 L 1907.2813,614.50402 C 1915.9612,613.35218 1922.977,613.18636 1930.9174,612.03457 L 1930.3765,626.909 L 1927.7137,626.909 L 1927.7137,631.5155 L 1947.5535,629.05309 L 1946.4404,621.96029 C 1949.8686,621.73276 1953.0503,621.50528 1956.3553,620.53822 L 1957.2981,617.7805 L 1955.8913,616.08546 L 1957.0318,614.94502 L 1960.0182,616.30568 L 1961.3615,618.89507 L 1962.5182,617.12603 L 1962.814,611.90465 C 1960.0981,608.42928 1959.7603,606.76918 1964.9016,610.49624 L 1995.3256,606.88329 L 1996.1789,612.45209 L 2000.5911,611.8523 L 2000.8733,617.40007 L 2003.6292,616.8732 C 2004.2024,619.31225 2004.7287,622.15011 2004.9772,627.34926 L 1995.1774,628.57738 L 1995.2229,626.60842 L 1988.9636,627.45441 L 1988.9636,623.61415 L 1982.5869,624.28818 L 1983.2571,628.00889 L 1977.621,628.75653 L 1977.621,631.32466 C 1976.3835,631.90858 1974.6375,632.08575 1972.5793,632.01316 L 1972.8004,638.51642 L 1961.9642,640.0065 L 1961.7257,644.23954 L 1963.2454,644.55691 L 1963.0605,646.94152 C 1961.2769,647.9531 1959.4182,648.66474 1957.4702,649.01908 L 1951.4312,644.06527 C 1949.6874,644.71338 1947.9603,645.30319 1946.5389,644.82306 L 1944.8336,649.4104 L 1935.1628,650.7284 z "},"md6":{"name":"MD-6","path":"M 2129.7361,623.14565 L 2129.2774,623.42915 L 2123.4592,593.17323 C 2173.9353,581.37701 2221.6598,570.49795 2271.6772,557.78456 L 2276.5094,561.49749 L 2272.2261,564.07559 L 2271.0266,564.05839 L 2270.0109,563.48996 L 2266.8376,565.13093 L 2267.4039,566.18901 C 2267.7635,567.01593 2266.746,567.29113 2259.3607,569.64777 L 2260.7957,571.37689 L 2256.993,575.30029 L 2255.0139,575.30029 L 2254.3129,574.16603 L 2251.9578,574.16603 L 2250.6167,575.61306 C 2249.8791,576.40897 2249.2756,577.30219 2249.2756,577.59801 L 2248.8236,578.08273 L 2245.9493,578.13593 L 2245.1844,580.54606 L 2245.6704,580.90057 C 2245.9377,581.09561 2246.2354,581.76555 2246.3319,582.3894 C 2246.4284,583.01324 2246.5721,583.96505 2246.6512,584.50456 C 2246.7303,585.04407 2246.9634,585.6539 2247.1692,585.85971 L 2247.5434,586.23396 L 2246.9402,587.20999 L 2242.537,587.20999 L 2241.836,588.34425 L 2236.1961,588.34425 L 2235.5432,590.04563 L 2234.7866,590.04563 C 2234.3705,590.04563 2233.8469,590.34219 2233.6228,590.70464 L 2233.2156,591.36358 L 2235.8578,593.50313 L 2236.1738,596.46678 L 2235.6157,597.50967 C 2235.3087,598.08327 2234.8718,598.55256 2234.6448,598.55256 C 2234.4178,598.55256 2233.9796,597.97835 2233.671,597.27652 L 2233.1098,596.00048 L 2228.0083,596.3698 L 2223.4713,600.62774 L 2218.9343,599.09287 L 2217.2114,597.54744 L 2213.8301,597.73261 L 2211.4955,597.65571 C 2210.2114,597.6134 2208.9274,597.43447 2208.642,597.25809 L 2208.1231,596.93738 L 2207.8414,593.24021 L 2207.2217,592.49364 C 2206.881,592.08299 2206.2505,591.74702 2205.8209,591.74702 L 2205.0396,591.74702 L 2205.0396,587.65417 L 2202.3334,588.33336 L 2201.7045,585.92839 L 2199.9718,586.59335 L 2199.3014,585.5086 L 2201.0697,585.5086 L 2201.0697,582.10583 L 2197.0998,581.49991 L 2197.0998,583.37898 L 2195.312,581.8952 L 2194.9299,582.46721 C 2194.7197,582.78185 2194.0986,583.20498 2193.5496,583.40762 L 2192.5515,583.77591 L 2187.5921,580.28013 L 2183.0177,579.69208 L 2181.666,581.5387 L 2180.0859,581.5387 L 2180.0859,582.62657 C 2180.0859,583.22489 2179.9311,584.11812 2179.7417,584.61152 L 2179.3974,585.5086 L 2175.0628,585.5086 L 2173.3614,587.20999 L 2172.2596,588.79795 L 2173.5832,589.4785 L 2171.0119,590.30101 L 2172.6247,592.03058 L 2171.1221,594.08166 L 2161.4906,594.64919 L 2157.5163,592.51905 L 2155.299,592.41549 L 2154.0292,594.2991 L 2152.4917,597.41831 C 2151.646,599.13387 2150.7801,600.66512 2150.5676,600.82108 C 2149.901,601.71777 2149.7381,602.84204 2148.9974,603.65321 L 2145.2956,601.9212 L 2142.6554,603.62111 L 2142.6554,605.6453 L 2136.9285,612.86752 L 2136.2753,616.13355 L 2134.0424,616.13355 L 2133.4491,618.40207 L 2132.9596,618.40207 C 2132.6904,618.40207 2131.9582,619.4056 2131.3325,620.63213 C 2130.7068,621.8586 2129.9884,622.98974 2129.7361,623.14565 z "},"md7":{"name":"MD-7","path":"M 2251.5665,601.31601 L 2250.9623,600.3384 L 2247.3297,600.79817 L 2245.4515,598.80686 C 2244.4185,597.71168 2242.7509,596.31416 2241.7456,595.70127 L 2239.918,594.58692 L 2237.8724,594.58266 L 2235.9178,593.02306 C 2234.8428,592.16528 2233.9632,591.27205 2233.9632,591.03811 C 2233.9632,590.80417 2234.3147,590.61276 2234.7444,590.61276 L 2235.7736,590.63528 L 2236.4644,588.93389 L 2241.836,588.91138 L 2242.537,587.77712 L 2246.963,587.77712 C 2247.7958,586.66101 2248.178,585.92811 2249.3264,585.24024 L 2250.367,586.92393 C 2252.744,585.86408 2253.1827,584.80429 2254.3876,584.75869 L 2258.0661,584.51409 L 2259.6395,585.77657 L 2260.6619,584.71122 C 2260.4489,583.56284 2261.5478,583.24009 2261.8217,583.24009 L 2262.3196,583.24009 L 2262.3196,586.64286 L 2260.8407,586.64286 C 2258.9786,588.70074 2257.2744,589.54163 2257.2154,591.86997 L 2254.4569,591.17762 L 2253.7156,593.5134 L 2250.977,594.55459 L 2250.977,596.24412 L 2249.8428,596.85118 C 2249.2189,597.18505 2248.7085,597.70442 2248.7085,598.0054 L 2248.7085,598.55256 L 2252.8727,598.55256 L 2254.9539,596.66907 L 2255.611,597.3262 L 2253.7974,601.14797 L 2251.5665,601.31601 z "},"pa7":{"name":"PA-7","path":"M 2299.689,542.31124 L 2299.3489,537.79198 L 2297.3731,536.83634 L 2298.1424,534.41257 L 2296.6769,532.64672 L 2300.6008,529.39336 L 2302.6214,529.36285 L 2303.2742,527.66146 L 2304.0308,527.66146 C 2304.4469,527.66146 2304.955,527.39017 2305.1599,527.0586 L 2305.5325,526.45573 L 2303.5773,524.29519 L 2301.4991,525.40737 L 2300.2773,523.12443 L 2298.7917,523.12443 L 2296.7579,520.87719 L 2298.2114,519.12591 L 2300.2046,520.92981 L 2300.9487,519.72581 L 2304.5707,521.56663 L 2308.257,525.53551 L 2308.257,527.53945 L 2313.9283,531.86443 L 2313.9283,534.83518 L 2307.1635,538.9658 C 2307.742,539.70579 2308.3602,540.50087 2308.7518,541.29881 C 2305.3673,540.71335 2302.4583,540.96692 2299.689,542.31124 z "},"pa6":{"name":"PA-6","path":"M 2280.1927,540.70542 C 2280.0321,540.70542 2279.9006,540.16081 2279.9006,539.49518 C 2279.9006,538.82954 2280.1808,537.34983 2280.5232,536.20692 L 2281.1458,534.12891 L 2279.4996,530.18921 L 2282.8216,527.6995 L 2270.8265,521.75684 L 2270.8265,521.23817 C 2270.8265,520.95291 2271.5284,519.62576 2272.3861,518.28897 L 2273.9457,515.85843 L 2276.9564,514.05037 L 2280.1842,514.05736 L 2283.433,515.75176 L 2286.1932,515.75176 C 2287.2754,514.60785 2288.4182,513.5105 2288.9747,512.01953 L 2287.8685,508.37908 L 2285.5719,508.37908 L 2284.9894,505.76571 L 2283.3266,504.94886 L 2280.7513,505.55473 L 2279.1419,504.50739 L 2281.1314,499.29778 L 2282.0915,499.89113 L 2283.8444,497.3885 L 2284.5295,498.07362 L 2283.2817,500.40518 L 2290.1909,503.83583 L 2289.8391,506.52001 L 2291.4087,508.41117 C 2290.5934,511.31262 2289.6615,514.18527 2288.9747,517.12062 L 2293.4394,519.16825 L 2295.3005,516.01769 L 2304.0036,516.44105 L 2307.6784,517.95758 L 2307.0407,519.61929 L 2308.8533,523.12443 L 2309.882,523.12443 L 2310.6268,525.4712 L 2313.894,527.45809 L 2312.1689,529.92102 L 2308.8242,527.44815 L 2308.8242,525.34912 L 2304.5707,520.99039 L 2300.9487,519.15869 L 2300.2046,520.36268 L 2298.2328,518.57822 L 2295.8367,520.81379 L 2298.4568,523.63755 L 2300.0444,523.69156 L 2301.3693,526.14816 L 2303.5462,524.8789 L 2305.0163,526.66224 C 2304.4913,527.13034 2303.9123,527.27437 2303.1173,527.09433 L 2302.4644,528.79572 L 2300.6008,528.81259 L 2296.0927,532.62614 L 2297.4962,534.31724 L 2296.1525,540.13829 L 2294.7023,540.13829 L 2293.6207,538.20553 L 2286.4226,537.44669 C 2284.3511,538.53944 2282.3524,539.79348 2280.1927,540.70542 z "},"il6":{"name":"IL-6","path":"M 1700.863,532.10302 L 1698.732,529.07928 L 1697.9251,523.97512 L 1695.2951,519.9035 L 1695.674,519.29041 C 1695.8825,518.95322 1696.7522,518.50183 1697.6069,518.28732 L 1699.1608,517.89731 L 1699.2372,521.54704 L 1704.1907,521.30762 L 1707.2549,516.88601 L 1708.7664,516.88601 L 1708.1529,518.48493 L 1710.3906,519.19518 L 1711.1052,522.04234 L 1710.2983,523.3479 L 1710.5875,528.08928 L 1710.0188,528.79572 C 1709.7061,528.79572 1709.0042,529.2417 1708.4591,529.78679 L 1707.468,530.77787 C 1705.2472,531.48688 1703.122,531.9477 1700.863,532.10302 z "},"il7":{"name":"IL-7","path":"M 1723.6891,523.56613 L 1720.3572,526.01187 L 1717.4153,525.07256 L 1714.1011,526.70306 L 1711.2477,526.66761 L 1711.2477,527.46514 C 1711.2477,527.87063 1711.3697,528.3137 1711.744,528.68801 L 1712.4352,529.11335 L 1714.4378,529.36147 L 1715.3772,526.66761 L 1717.3089,527.9791 L 1717.7697,527.57147 L 1725.0361,529.41464 L 1725.2487,529.7691 L 1724.4335,531.48821 L 1725.2487,531.87811 L 1725.8513,529.32603 L 1725.1069,528.19177 C 1725.0848,527.80366 1725.042,527.37806 1724.9652,526.9689 C 1724.7652,525.90305 1724.3833,524.69905 1724.1322,524.29276 L 1723.6891,523.56613 z "},"mi6":{"name":"MI-6","path":"M 1810.2117,457.26524 L 1803.4593,458.57672 L 1804.186,463.46821 L 1801.8643,464.19484 L 1801.1199,469.17494 L 1781.9616,472.08147 L 1781.9439,480.87197 L 1781.0932,485.69256 C 1780.6272,488.34389 1779.8266,491.78919 1779.3209,493.3488 C 1778.8152,494.9084 1777.4347,498.09849 1776.2549,500.43791 L 1774.1104,504.69137 L 1772.6926,510.36266 C 1771.9133,513.48187 1771.0208,516.69407 1770.7077,517.50494 C 1770.3944,518.31583 1768.7919,520.61271 1767.1454,522.6091 C 1765.4988,524.6055 1763.8938,526.43844 1763.5654,526.66761 C 1763.2369,526.89678 1763.1164,527.08818 1763.2995,527.09296 C 1786.0148,523.75802 1808.7369,520.45175 1831.4259,516.93781 L 1827.7572,493.15385 L 1834.1729,491.38157 L 1831.8689,486.89771 L 1826.4812,486.54326 L 1824.7976,477.20537 L 1813.9158,478.69207 C 1812.6493,471.5604 1811.8479,464.31942 1810.2117,457.26524 z "},"mi7":{"name":"MI-7","path":"M 1852.64,450.69009 L 1832.1348,454.03969 L 1835.9097,475.36019 L 1825.4356,477.06157 L 1826.9774,486.25969 L 1832.2057,486.25969 L 1834.7755,491.54108 L 1828.1649,493.38425 L 1831.9576,516.83147 L 1854.5541,513.48187 L 1855.2984,517.11504 L 1900.8991,507.59791 L 1897.0887,486.4192 L 1897.0887,478.46167 L 1894.0936,471.92197 C 1895.2549,470.91291 1896.5006,470.10391 1897.9394,469.56484 L 1904.4968,468.60781 C 1904.0999,465.21591 1904.0667,465.0987 1902.76,463.34415 C 1887.4013,466.59919 1871.9813,469.67263 1856.4327,471.8688 C 1854.9169,464.86051 1854.1992,457.68853 1852.64,450.69009 z "},"nj6":{"name":"NJ-6","path":"M 2340.672,480.5884 C 2340.413,480.5884 2339.4159,481.7093 2338.4389,483.06959 L 2336.6489,485.53306 L 2339.4846,488.19147 L 2338.7934,491.3993 L 2343.9684,488.88266 L 2346.8395,491.57652 L 2348.0978,490.31821 L 2349.4448,490.9385 C 2350.1863,491.27637 2350.7917,491.74779 2350.7917,491.98415 C 2350.7917,492.22049 2350.6356,492.83151 2350.4372,493.3488 L 2350.0651,494.28811 L 2347.6016,495.22741 L 2348.0978,499.51633 L 2348.7358,498.64791 C 2349.0862,498.16877 2349.9486,497.59445 2350.6499,497.37187 L 2351.9259,496.96425 L 2351.2702,494.30583 L 2353.2374,491.31068 L 2354.8148,490.47771 C 2355.6888,490.02577 2356.7794,489.66245 2357.2428,489.66246 L 2358.0935,489.66246 L 2360.6278,494.18177 L 2361.6735,492.46266 C 2362.1822,491.62603 2362.8926,490.80245 2363.3572,490.51316 L 2364.6154,492.79939 L 2364.5091,494.19949 L 2364.4914,494.19949 L 2363.7471,497.60227 L 2362.1343,497.60227 L 2362.1343,498.31118 C 2362.13,498.70108 2361.9765,499.55847 2361.7976,500.22524 L 2361.4608,501.44811 C 2362.6692,501.88231 2363.8658,502.35623 2365.1117,502.67098 L 2365.537,502.70642 L 2365.537,498.45296 L 2365.537,494.19949 L 2364.3319,490.14098 L 2363.7116,488.52821 L 2361.6558,488.45732 C 2360.5195,488.42041 2358.8166,488.22568 2357.8808,488.01425 L 2356.1794,487.62435 L 2352.4931,489.64474 L 2352.4931,488.52821 L 2349.7283,488.52821 L 2349.0194,487.37623 L 2347.7611,488.15603 L 2344.0925,483.79623 L 2342.5861,484.7887 L 2341.0619,485.51099 L 2339.4491,485.30637 L 2339.4491,482.82147 L 2341.1505,482.16573 L 2341.1505,480.5884 L 2340.672,480.5884 z "},"nj7":{"name":"NJ-7","path":"M 2330.4572,498.75409 L 2326.78,493.63374 L 2324.8267,493.63374 L 2324.115,496.46938 L 2322.4868,496.46938 L 2321.0432,495.02578 C 2320.2492,494.2318 2319.5996,493.32959 2319.5996,493.02088 C 2319.5996,492.71216 2320.0192,491.81913 2320.5321,491.03637 L 2321.4647,489.61316 L 2318.2739,486.28272 L 2317.3122,488.39862 C 2316.7833,489.56237 2315.6772,491.2303 2314.8542,492.10513 L 2313.3579,493.69574 L 2310.8403,491.93235 L 2307.9168,491.93235 L 2306.5556,493.29346 L 2306.5556,490.98074 L 2308.1152,488.85696 C 2308.973,487.68888 2310.8574,485.38105 2312.3026,483.72845 L 2314.9304,480.72371 L 2316.3019,477.08611 L 2317.9955,477.97378 L 2324.8484,478.7818 L 2330.9677,474.86732 L 2331.5221,475.20994 C 2331.827,475.39838 2332.0764,475.89963 2332.0764,476.32382 C 2332.0764,476.74802 2331.7303,477.81759 2331.3071,478.70065 C 2330.884,479.58371 2330.1184,481.15632 2329.6057,482.19534 C 2329.0931,483.23436 2328.6737,484.52316 2328.6737,485.05934 L 2328.6737,486.03421 L 2330.0348,487.39532 L 2333.1438,487.39532 L 2333.7653,486.38958 L 2332.2453,485.12805 L 2333.4882,481.15691 L 2334.0941,481.15691 C 2334.4272,481.15691 2335.3364,480.45508 2336.1143,479.5973 C 2336.8923,478.73952 2338.206,476.97388 2339.0336,475.67365 L 2340.5382,473.3096 L 2345.9711,475.41266 C 2345.7142,476.38957 2345.4619,477.12069 2344.9469,478.00596 L 2345.0023,479.9045 L 2346.0402,481.46039 L 2347.4407,481.72142 L 2347.3889,483.95908 L 2347.3889,485.627 L 2346.3363,486.27753 L 2344.9192,484.09733 L 2343.8263,483.39969 L 2342.5084,484.26325 C 2341.7835,484.7382 2340.9262,485.12681 2340.6033,485.12681 L 2340.0162,485.12681 L 2340.0162,482.97965 L 2341.7176,482.32676 L 2341.7176,480.02265 L 2340.1509,480.02265 L 2338.7027,481.92138 C 2337.9061,482.96568 2336.6313,484.94354 2335.8698,486.31663 L 2334.4853,488.81314 L 2335.7388,490.76924 L 2334.9657,492.62683 C 2334.5404,493.64851 2334.1981,495.0309 2334.2049,495.6988 L 2334.2173,496.91317 L 2330.4572,498.75409 z "},"wi6":{"name":"WI-6","path":"M 1707.6323,373.96821 L 1693.33,375.6696 L 1694.2339,381.23455 C 1664.2654,384.91852 1636.0878,387.98905 1604.8689,390.93078 L 1605.2833,395.07603 C 1602.7206,397.39212 1601.8358,399.01229 1600.3032,401.75752 L 1602.873,406.29455 C 1603.8537,407.31221 1604.5098,408.56099 1605.1238,409.85682 L 1603.8832,412.58613 L 1604.6807,414.12801 C 1606.3877,416.85607 1608.9285,418.88752 1611.2559,421.05761 L 1611.2736,422.81217 L 1614.6409,427.40237 C 1626.7106,426.03052 1635.6584,424.82745 1649.0586,424.44266 L 1651.841,451.20405 L 1659.6568,450.15841 L 1660.0289,452.7991 L 1663.095,453.06494 L 1662.5988,455.26256 L 1667.8624,454.44732 L 1669.0321,455.7588 L 1670.8044,455.63474 L 1673.197,453.24217 L 1672.5058,448.95326 L 1677.9998,448.01395 L 1676.1921,426.48078 L 1702.8471,423.13118 L 1705.6119,415.65217 L 1705.3815,408.89979 L 1703.7333,406.40088 L 1703.0421,399.20544 L 1703.9814,395.23554 C 1704.4985,393.05209 1704.8883,390.45217 1704.8675,389.45791 L 1704.8321,387.65019 L 1709.8654,383.53851 L 1710.592,380.22435 L 1709.121,377.08742 L 1707.6323,373.96821 z "},"mn7":{"name":"MN-7","path":"M 1314.9361,414.4799 L 1312.2958,346.11956 L 1310.651,342.18309 L 1304.7228,339.43169 L 1301.4256,339.09117 L 1299.3879,335.29237 C 1298.2671,333.20304 1296.6435,330.62057 1295.7799,329.55354 L 1294.2095,327.6135 L 1294.903,325.80651 L 1302.706,319.42263 L 1306.1441,312.87913 L 1305.6581,294.85513 L 1304.0272,286.16365 L 1303.8721,282.79645 L 1299.8935,277.8722 L 1297.6976,273.30424 L 1296.9069,267.71078 L 1294.6582,263.89958 L 1295.2124,258.13213 L 1294.2372,253.79161 L 1295.791,246.37882 L 1294.4439,244.92518 C 1293.7029,244.12568 1293.0741,243.16568 1293.0466,242.79185 C 1293.019,242.41802 1292.9043,240.83612 1292.7916,239.27652 C 1292.6789,237.71691 1292.4187,234.39921 1292.2134,231.90384 C 1292.008,229.40848 1291.7434,226.21838 1291.6254,224.81473 C 1291.5073,223.41109 1291.247,220.98661 1291.0468,219.42701 C 1290.8466,217.86741 1290.5709,213.78977 1290.4342,210.36559 L 1290.1855,204.13982 L 1289.7027,203.55799 C 1289.4371,203.23798 1288.5255,200.93542 1287.6771,198.44119 C 1286.8286,195.94696 1285.7868,193.50331 1285.362,193.01087 C 1284.9373,192.51843 1284.5897,191.84578 1284.5897,191.5161 C 1284.5897,191.18641 1284.2085,190.18567 1283.7425,189.29224 C 1283.2765,188.3988 1282.8937,187.21221 1282.8919,186.65538 C 1282.8899,186.09854 1282.53,185.07771 1282.0921,184.38686 L 1281.296,183.13077 L 1280.4957,178.16541 L 1276.9859,171.308 L 1277.1906,167.86176 C 1277.3031,165.96633 1277.3803,163.77751 1277.3621,162.99771 C 1277.3438,162.2179 1277.0313,158.38978 1276.6676,154.49077 C 1276.3039,150.59177 1276.0126,146.70832 1276.0202,145.86091 L 1276.0342,144.32015 L 1277.7842,140.93601 L 1277.7842,137.72929 L 1277.0262,136.61063 C 1276.6093,135.99536 1275.8436,134.16797 1275.3248,132.54976 C 1274.8059,130.93155 1274.3821,129.27269 1274.3831,128.86342 C 1274.384,128.45415 1273.7134,126.53782 1272.893,124.60491 L 1271.3736,119.72216 C 1301.5675,118.83508 1331.1935,117.84476 1357.8516,116.31482 L 1356.4877,93.774231 L 1361.2193,94.530844 L 1363.896,93.09831 L 1365.5413,94.269862 C 1366.4462,94.914211 1367.5415,95.520511 1367.9753,95.617184 L 1368.7639,95.792954 C 1369.9771,100.14048 1370.8236,104.62393 1372.536,108.80856 L 1373.0618,109.34733 L 1373.0618,115.35889 L 1374.65,115.35889 L 1376.0214,121.07536 L 1376.2522,128.35954 L 1377.6932,129.69501 C 1378.4858,130.42952 1380.001,131.43369 1381.0604,131.9265 C 1382.1198,132.41931 1384.0512,132.99558 1385.3524,133.20711 L 1387.7183,133.5917 L 1391.6171,190.10063 L 1375.8974,190.91454 L 1375.8974,202.12959 L 1370.2262,202.12959 L 1370.2262,205.43985 L 1374.0464,207.80087 L 1377.0317,207.80087 L 1377.0317,212.16979 C 1371.7998,212.51501 1366.5742,212.86277 1360.585,212.90503 L 1360.585,219.14345 L 1361.894,219.14345 L 1365.2252,277.83853 L 1383.103,276.90008 L 1383.4811,277.95009 L 1386.5408,278.12483 L 1389.108,312.86927 L 1383.1426,313.28681 L 1383.9631,329.44998 L 1387.7976,332.87691 L 1385.1272,336.7215 L 1385.6928,341.70256 L 1401.9854,340.48738 L 1401.9854,343.34463 L 1407.5279,343.34463 L 1408.9225,361.82298 L 1419.5664,361.35746 L 1420.871,377.37235 L 1426.3719,377.37235 L 1426.3719,379.64087 L 1431.4761,379.64087 L 1431.4761,381.37033 C 1429.7495,381.68854 1428.0061,382.59512 1426.2122,385.27171 L 1426.9057,390.33177 L 1424.8211,392.90612 L 1387.7598,395.08628 L 1385.5809,393.11439 L 1383.6774,393.84481 L 1384.4653,406.29592 C 1380.3595,406.23286 1376.7763,406.48333 1373.6289,406.99533 L 1373.6289,411.88559 L 1314.9361,414.4799 z "},"ma6":{"name":"MA-6","path":"M 2454.578,299.65168 L 2454.3572,300.62354 L 2450.9625,302.64682 L 2454.1895,304.8743 L 2453.3374,310.37395 L 2450.041,311.10059 L 2450.041,312.85514 L 2454.0109,318.26059 L 2452.3272,319.66069 L 2450.6081,318.98722 L 2450.6449,320.87278 L 2449.8938,321.28309 L 2449.437,322.22625 L 2450.1473,324.55217 L 2445.5926,326.87385 L 2446.1951,329.16009 L 2446.9122,329.34406 C 2447.1767,329.34406 2447.4251,328.69714 2447.737,328.11445 L 2448.3041,327.05108 L 2451.1752,327.60049 L 2451.5297,325.81049 C 2451.7254,324.83177 2452.1036,323.91475 2452.3627,323.75465 L 2452.8235,323.45336 C 2455.4118,324.75903 2457.9707,326.1206 2460.5328,327.47643 C 2460.9012,326.67594 2461.2914,325.77362 2461.5076,325.33197 L 2462.1456,324.05593 L 2463.5812,324.05593 L 2464.2901,321.78742 L 2464.8218,321.78742 C 2465.1126,321.78742 2465.3535,321.5322 2465.3534,321.22029 L 2465.3534,320.65316 L 2463.7761,320.65316 L 2463.0849,318.86316 L 2463.4039,318.33148 C 2463.5793,318.0477 2464.0616,317.81751 2464.485,317.81752 C 2464.9085,317.81752 2465.3381,317.62114 2465.4421,317.37445 C 2465.546,317.12776 2466.8691,316.10693 2468.3663,315.10593 C 2469.8636,314.10494 2471.3311,313.28048 2471.6273,313.28049 L 2472.159,313.28049 L 2472.159,310.51573 L 2472.7261,310.16128 C 2473.038,309.9685 2473.2933,309.56933 2473.2932,309.25742 L 2473.2932,308.69029 L 2472.2831,309.31059 L 2470.9007,307.62692 L 2469.8905,308.24722 L 2469.8905,310.44484 L 2467.1257,310.44484 L 2466.4168,309.31059 L 2464.2192,309.31059 L 2464.2192,308.69029 C 2464.2192,308.34854 2463.6783,307.31911 2463.014,306.38633 C 2462.3499,305.45356 2461.2526,303.62664 2460.586,302.32781 L 2459.3809,299.95296 L 2454.578,299.65168 z "},"ma7":{"name":"MA-7","path":"M 2452.6462,324.05593 L 2451.6715,328.14989 L 2448.4105,327.67138 L 2445.3976,333.21861 L 2447.1876,334.54781 L 2447.8079,337.95059 L 2446.592,339.21058 L 2444.4583,338.25187 L 2440.9669,338.94306 C 2440.9705,340.18998 2441.3501,341.202 2442.2463,342.68382 L 2444.7015,343.12228 L 2444.7584,342.52715 L 2449.7866,342.53331 L 2450.1119,342.20405 L 2449.2257,341.31791 C 2448.7355,340.82775 2448.3396,340.06214 2448.3396,339.61653 L 2448.3396,338.80128 L 2449.4738,337.66702 C 2450.0977,337.04318 2450.6081,336.36996 2450.6081,336.16059 C 2450.6081,335.95121 2451.0312,335.31318 2451.5474,334.74276 L 2452.4867,333.69712 L 2454.3654,333.65745 C 2455.1419,332.21318 2455.2373,331.47362 2455.5675,330.17029 L 2458.8125,331.00032 C 2459.3643,329.93205 2459.8918,328.85339 2460.3911,327.75999 C 2457.7767,326.59341 2455.2549,325.23352 2452.6462,324.05593 z "},"wa6":{"name":"WA-6","path":"M 136.63263,25.095445 L 136.04778,25.680296 L 138.06818,29.100791 C 137.2441,30.644068 136.71575,32.458829 135.44521,33.690989 L 135.01986,33.690989 L 135.01986,35.959504 L 132.91085,38.068514 L 132.91085,40.850989 C 132.91442,42.376954 132.73325,45.146987 132.50323,47.018514 C 132.27326,48.890038 132.08866,50.548888 132.07788,50.70485 C 132.06711,50.860811 132.0764,51.945443 132.11333,53.115147 L 132.18422,55.24188 L 133.44253,56.500197 C 134.1363,57.193994 134.76247,58.113031 134.82491,58.538316 C 134.88729,58.9636 135.34364,59.749804 135.83511,60.29287 L 136.72125,61.285345 L 136.72125,63.784256 L 138.42263,66.389503 L 138.22768,72.574751 C 138.11675,75.983183 137.80066,80.436567 137.53649,82.464058 C 137.27233,84.491543 137.05429,87.583455 137.05798,89.340493 L 137.0757,92.548315 L 139.14927,95.702968 L 138.4758,108.83554 C 137.81891,111.4428 137.21122,114.06331 136.41996,116.63356 L 136.03006,117.64376 L 137.8555,116.93485 L 137.60739,116.54495 L 138.56441,111.38762 L 141.13422,111.38762 L 143.63313,113.40802 L 143.81036,116.49178 L 145.79531,116.49178 L 145.79531,117.62604 L 148.02838,117.62604 C 148.50548,118.46365 148.95075,119.29636 149.0563,120.23128 C 148.92614,120.36143 147.50474,120.54342 145.90164,120.63891 C 144.29854,120.7344 142.80305,120.99051 142.58748,121.20604 C 142.37198,121.42157 141.76131,121.59593 141.22283,121.59594 L 140.24808,121.59594 L 139.91135,122.44663 C 139.73179,122.91451 139.32922,123.29732 139.00748,123.29732 L 138.42263,123.29732 L 138.42263,120.53257 L 137.28838,119.82366 L 137.28838,126.55831 L 175.00243,136.16406 C 176.12429,135.14186 176.673,131.46173 178.2457,124.98099 L 176.91649,123.38594 L 177.6963,119.23881 L 179.36224,118.60079 L 183.15491,119.77049 L 183.75748,118.19317 L 186.62857,118.19317 L 186.62857,117.07663 L 191.38544,115.09794 L 191.66931,117.15952 L 192.60115,117.64376 L 195.31273,115.7297 L 196.30521,116.97029 C 196.85231,117.64596 197.58799,118.19316 197.9357,118.19317 L 198.57372,118.19317 L 199.24719,114.84356 L 201.87016,113.12445 L 203.32342,114.84356 C 204.125,115.79618 204.77669,116.77356 204.77669,117.00574 C 204.77669,117.23793 205.91263,118.61233 207.31105,120.07178 L 209.86313,122.7302 L 211.93669,122.7302 L 213.86847,118.6894 L 209.17194,112.23831 L 206.97431,111.40534 L 208.00224,109.98752 C 208.56539,109.21387 209.22156,108.57951 209.4555,108.5697 C 209.68944,108.5599 209.88085,108.21691 209.88085,107.80762 C 209.88085,107.39833 210.37448,106.04735 210.97966,104.79475 C 211.58484,103.54215 212.54188,102.14919 213.10639,101.71099 L 213.97481,101.03752 L 211.44045,98.839899 L 212.75194,95.951087 L 210.67837,92.38881 L 208.09085,92.016632 L 206.76164,93.806632 L 202.40184,92.441978 L 201.46253,93.629404 C 200.94684,94.278335 199.96058,95.090503 199.28263,95.437127 L 198.05976,96.075146 L 190.75798,94.409206 L 194.44431,91.343166 C 195.89452,90.14475 198.04073,88.679573 199.21174,88.082176 L 201.33847,87.001087 L 204.97164,87.284651 L 207.15154,80.284157 L 210.44798,78.919503 L 210.44798,76.668711 L 213.2659,77.377622 L 212.91144,75.534454 C 212.71856,74.516514 212.32619,73.379949 212.04303,73.01782 L 211.52907,72.362078 L 212.71649,71.617721 L 210.96194,69.845444 L 211.35184,68.002276 L 213.56719,68.214949 L 213.67352,63.128513 C 213.07832,63.397627 212.45683,63.580748 211.83035,63.74881 L 212.27342,65.450197 C 211.59953,65.796202 210.9106,65.912015 210.19986,65.946434 L 209.24283,62.153761 L 211.58224,61.409405 L 211.58224,59.77891 C 209.59382,59.632987 208.03456,60.08787 206.38946,61.143563 L 207.09837,64.883068 L 205.41471,64.883068 L 203.73105,62.490494 L 204.33362,60.913167 L 199.69026,60.913167 L 198.98134,58.077523 L 197.97115,58.077523 L 197.97115,57.421781 C 197.97115,57.058047 197.52277,56.325554 196.97867,55.809009 L 195.9862,54.869702 L 192.37075,57.014157 L 185.31709,55.631781 L 183.2258,53.540494 L 180.92184,53.540494 L 180.30154,51.927722 L 176.8456,52.016335 L 175.00243,49.730098 L 171.3161,49.056633 C 169.28861,48.691333 167.11935,48.172499 166.4955,47.904652 C 165.87166,47.636805 164.42463,47.011755 163.26996,46.504553 C 162.11523,45.997351 160.3757,44.912697 159.42412,44.111979 L 157.70501,42.658712 L 158.27214,41.719405 L 153.50471,37.625445 L 152.016,38.192573 L 149.00313,34.825247 L 148.25877,34.825247 C 147.84244,34.825247 147.49669,34.626158 147.49669,34.382177 C 145.63156,31.413 143.60901,29.175589 140.70887,27.027227 L 136.63263,25.095445 z "},"wa7":{"name":"WA-7","path":"M 224.64392,87.001087 C 222.50093,88.550573 220.34453,90.434796 218.95491,92.70782 C 218.95491,93.030136 219.64916,93.892767 220.49679,94.621879 L 222.03867,95.951087 L 220.49679,97.811978 L 218.38778,97.138513 L 218.38778,102.06544 L 220.21323,104.65297 L 224.05907,104.01495 L 224.05907,95.862473 L 226.9656,92.814156 L 225.06926,87.001087 L 224.64392,87.001087 z M 214.24065,101.23247 L 213.23045,102.04772 C 211.50106,104.18295 211.07847,105.51629 210.44798,107.02782 L 210.44798,108.92416 C 210.44798,109.96796 210.5939,110.82049 210.76699,110.82049 L 216.40283,108.3393 L 214.48877,107.91396 L 214.70144,101.65782 L 214.24065,101.23247 z "},"tx27":{"name":"TX-27","path":"M 1301.7808,1417.9635 L 1300.4516,1421.1714 L 1297.5425,1422.5572 L 1295.8969,1425.4248 L 1298.5907,1425.4248 L 1300.558,1427.587 L 1298.8211,1430.9189 L 1299.4414,1433.2583 L 1295.7905,1434.0558 L 1294.9213,1432.822 L 1293.7634,1434.9698 L 1289.1529,1434.1909 L 1288.0634,1431.9468 L 1287.9925,1433.9318 L 1285.3814,1433.9318 C 1285.837,1432.35 1284.7546,1431.4824 1283.3753,1430.4278 C 1282.9854,1430.4899 1281.7084,1430.8756 1280.6198,1430.3872 L 1278.6526,1429.5011 L 1277.5994,1430.3408 L 1277.3394,1428.1989 L 1275.7461,1428.2605 L 1270.9786,1433.1342 L 1270.9786,1448.6771 L 1264.4567,1448.6771 L 1264.7934,1471.2914 L 1268.9937,1471.6458 L 1269.8444,1511.0613 L 1271.6699,1511.0613 C 1270.7066,1516.7477 1269.4474,1514.9845 1269.138,1521.1278 C 1272.0674,1521.8899 1274.5974,1521.8535 1277.2171,1521.9962 L 1277.2171,1527.313 L 1281.7718,1530.9817 C 1283.7943,1531.618 1285.9361,1532.0329 1287.7267,1533.197 L 1288.0634,1533.7464 L 1291.2712,1533.7464 L 1292.0333,1535.7314 L 1288.6128,1538.7797 L 1284.3948,1539.9494 L 1277.8019,1539.2582 L 1276.0828,1540.6938 L 1276.0828,1544.3978 L 1277.8728,1545.089 L 1280.5135,1544.4332 L 1283.1719,1546.1169 L 1290.261,1546.8967 L 1290.2788,1547.2689 C 1290.286,1547.4722 1291.1567,1548.5981 1292.2105,1549.7678 L 1294.1246,1551.8945 L 1295.6842,1551.8945 L 1297.7046,1555.2973 L 1300.3984,1554.6239 L 1301.8695,1556.9987 L 1305.1481,1556.9987 L 1304.4924,1552.9756 L 1305.4672,1552.6566 C 1305.9961,1552.488 1307.445,1551.8683 1308.6927,1551.2742 L 1310.9612,1550.1932 L 1317.1819,1549.3247 L 1317.5895,1547.2689 L 1316.4376,1547.8715 C 1315.8064,1548.2093 1314.8798,1548.4918 1314.3817,1548.4918 L 1313.4778,1548.4918 L 1312.7689,1546.6309 L 1314.7716,1545.1599 L 1314.2931,1543.7598 L 1309.2598,1542.5369 L 1309.2421,1541.4027 C 1309.2305,1540.7784 1309.0008,1539.9366 1308.7459,1539.5241 C 1308.4908,1539.1115 1308.1793,1537.9625 1308.037,1536.972 C 1307.8946,1535.9813 1307.7767,1534.37 1307.7711,1533.392 L 1307.7534,1531.6019 L 1305.7153,1532.1336 L 1305.1481,1528.3587 L 1305.6444,1528.1637 C 1305.9177,1528.0597 1306.1406,1527.6131 1306.1406,1527.1713 L 1306.1406,1526.3738 L 1305.5558,1526.3738 C 1305.2341,1526.3738 1304.8315,1526.7565 1304.6519,1527.2244 L 1304.3152,1528.0751 L 1302.6138,1528.0751 L 1303.0037,1526.7991 C 1303.2212,1526.0973 1303.5196,1524.9871 1303.6772,1524.3356 L 1303.9607,1523.1482 L 1301.32,1523.2545 L 1301.6922,1521.6063 L 1300.0263,1520.3835 L 1301.1605,1513.8792 L 1299.7073,1512.1423 L 1299.2819,1509.7498 C 1299.0491,1508.4407 1298.6795,1506.3541 1298.4489,1505.1064 L 1298.0236,1502.8379 L 1294.7449,1498.0173 L 1293.1675,1498.0173 L 1292.4941,1495.9083 L 1293.6106,1492.9841 L 1292.7068,1487.295 L 1293.522,1486.9938 C 1293.9665,1486.8232 1294.967,1486.6747 1295.7551,1486.6747 L 1297.1906,1486.6747 L 1296.8184,1485.186 C 1296.6136,1484.3698 1296.2894,1482.9662 1296.1095,1482.0668 L 1295.7905,1480.4363 C 1296.6148,1480.4838 1297.4385,1480.4195 1298.2363,1480.2945 L 1299.6718,1470.7951 L 1299.1578,1470.7951 C 1298.8738,1470.7951 1297.7037,1471.3178 1296.5526,1471.9648 L 1294.4613,1473.1522 L 1287.7089,1472.213 L 1287.7089,1469.395 L 1288.7014,1469.2001 C 1289.2462,1469.0951 1290.3582,1468.4614 1291.1649,1467.7823 C 1291.9715,1467.1031 1293.2781,1465.9793 1294.0714,1465.2833 L 1295.507,1464.0073 L 1296.0032,1464.3263 C 1296.2759,1464.4948 1296.4994,1465.092 1296.4994,1465.6555 L 1296.4994,1466.6657 L 1295.3297,1468.1722 L 1294.1423,1469.6609 L 1294.6208,1469.6431 C 1294.8774,1469.6362 1295.7196,1469.1365 1296.4994,1468.5266 L 1297.9172,1467.4101 L 1299.8668,1467.3924 L 1300.7529,1465.691 C 1301.239,1464.751 1301.8629,1462.9006 1302.1353,1461.5793 C 1302.4075,1460.2579 1303.0489,1457.6721 1303.5531,1455.8371 C 1304.0572,1454.0022 1304.8012,1451.8329 1305.219,1451.0165 C 1305.6368,1450.2001 1306.2905,1448.6345 1306.6723,1447.5429 C 1307.0543,1446.4511 1307.5005,1445.1799 1307.6471,1444.7072 L 1307.9129,1443.8388 L 1302.7201,1442.3146 L 1300.4693,1439.4435 L 1300.4693,1436.413 L 1301.1782,1435.5091 C 1301.5681,1435.0087 1302.7804,1434.0676 1303.8721,1433.4178 L 1305.8571,1432.2304 L 1308.8345,1432.2304 L 1310.2523,1435.6332 L 1311.8297,1435.6332 L 1314.2931,1430.5645 C 1311.6019,1426.9303 1308.9149,1422.2063 1306.0107,1418.7307 C 1305.0323,1418.7074 1305.1561,1417.4557 1304.1388,1417.226 L 1301.7808,1417.9635 z M 1319.6631,1433.6482 L 1319.096,1435.066 L 1317.1996,1435.066 L 1317.0224,1438.0612 L 1318.3693,1436.4307 C 1319.1077,1435.5276 1319.6943,1434.5272 1319.6808,1434.2153 L 1319.6631,1433.6482 z M 1314.9311,1440.8968 C 1314.6796,1440.9646 1313.9927,1441.6675 1313.2829,1442.5982 L 1311.8119,1444.53 L 1311.8119,1446.9048 L 1309.8801,1448.8366 L 1309.6852,1450.0063 C 1309.5865,1450.6531 1309.0069,1452.0465 1308.3914,1453.0901 C 1307.7756,1454.1337 1307.2749,1455.3188 1307.2749,1455.7308 C 1307.2749,1456.1426 1306.9013,1456.7849 1306.4419,1457.1663 L 1305.6089,1457.8752 L 1305.2368,1459.9311 C 1305.0319,1461.0694 1304.5937,1462.3501 1304.262,1462.7667 L 1303.6594,1463.5288 L 1303.5354,1466.1695 C 1303.4741,1467.6243 1303.1838,1470.0145 1302.8796,1471.4863 L 1302.3302,1474.1625 L 1302.9505,1474.8005 L 1303.9253,1469.9799 C 1304.4619,1467.3295 1305.4732,1463.427 1306.1761,1461.3134 C 1306.8788,1459.1999 1308.7084,1454.6603 1310.2346,1451.2292 C 1311.7608,1447.7981 1313.5144,1444.1297 1314.1336,1443.0767 C 1314.7527,1442.0237 1315.1568,1441.0516 1315.0198,1440.9146 C 1315.0026,1440.8974 1314.967,1440.8871 1314.9311,1440.8968 z M 1302.3302,1476.1829 L 1302.3302,1481.287 L 1302.5784,1480.011 C 1302.7136,1479.3092 1302.7134,1478.1607 1302.5784,1477.4589 L 1302.3302,1476.1829 z M 1302.8265,1490.3611 L 1302.8619,1493.7639 L 1303.1277,1492.7536 C 1303.2715,1492.2018 1303.2653,1491.4362 1303.1101,1491.0522 L 1302.8265,1490.3611 z M 1303.6772,1494.8981 L 1302.9505,1497.7338 L 1303.8721,1498.3718 L 1304.3861,1504.3975 L 1306.1406,1506.3293 L 1306.1406,1507.3041 C 1306.1406,1507.8352 1306.6746,1509.8484 1307.3281,1511.7879 L 1308.5155,1515.3147 L 1309.1535,1515.7046 C 1309.5048,1515.9218 1309.8702,1516.0334 1309.9687,1515.935 L 1309.9687,1515.9173 C 1310.0672,1515.8189 1309.604,1514.3697 1308.9408,1512.6918 C 1308.2776,1511.0136 1307.1282,1507.7294 1306.3887,1505.39 C 1305.6492,1503.0506 1304.7457,1499.7329 1304.3683,1498.0173 L 1303.6772,1494.8981 z M 1310.1105,1516.5376 L 1310.1105,1518.0617 L 1310.8726,1517.2997 L 1310.1105,1516.5376 z M 1310.9612,1518.434 C 1310.8052,1518.434 1310.6776,1518.5615 1310.6776,1518.7175 C 1310.6776,1518.8735 1310.8052,1519.0011 1310.9612,1519.0011 C 1311.1172,1519.0011 1311.2448,1518.8735 1311.2448,1518.7175 C 1311.2448,1518.5615 1311.1172,1518.434 1310.9612,1518.434 z M 1311.5283,1520.1353 C 1311.3724,1520.1353 1311.2448,1520.2629 1311.2448,1520.4189 C 1311.2448,1520.5749 1311.3724,1520.7025 1311.5283,1520.7025 C 1311.6843,1520.7025 1311.8119,1520.5749 1311.8119,1520.4189 C 1311.8119,1520.2629 1311.6843,1520.1353 1311.5283,1520.1353 z M 1311.8119,1521.6417 L 1311.8119,1523.1659 L 1312.574,1522.4039 L 1311.8119,1521.6417 z M 1316.3489,1543.7598 L 1316.4376,1545.9397 L 1317.0401,1544.451 L 1316.3489,1543.7598 z "},"hi1":{"name":"HI-1","path":"M 794.73924,1407.5957 C 794.46946,1407.5303 794.26671,1407.3151 794.05574,1407.1456 C 793.55542,1406.7181 793.16767,1406.1706 792.62396,1405.7922 C 792.30291,1405.5659 791.95027,1405.3273 791.54234,1405.3259 C 791.02432,1405.2114 790.57833,1404.8707 790.2431,1404.4691 C 790.02617,1404.2077 789.80919,1403.9463 789.59221,1403.6849 C 788.89901,1404.1178 788.2058,1404.5508 787.5126,1404.9837 C 786.9867,1404.5473 786.46086,1404.1108 785.93502,1403.6744 C 784.82793,1403.9704 783.72084,1404.2665 782.61374,1404.5626 C 782.12743,1403.6254 781.64118,1402.6882 781.15503,1401.7509 C 781.88986,1400.9608 782.62475,1400.1707 783.35969,1399.3807 C 783.16494,1398.3833 782.97019,1397.3859 782.77549,1396.3885 C 783.17583,1395.6405 783.57616,1394.8925 783.97644,1394.1444 C 785.10514,1393.9578 786.23889,1393.7998 787.3618,1393.5797 C 788.15476,1393.414 788.95748,1393.2588 789.70881,1392.9473 C 789.89409,1392.8761 790.07943,1392.805 790.26471,1392.7339 C 791.0592,1394.5301 791.85375,1396.3263 792.64835,1398.1225 C 793.54787,1398.9672 794.43826,1399.8216 795.34454,1400.6589 C 796.48152,1401.6635 797.68752,1402.596 798.97875,1403.3946 C 799.81334,1403.8882 800.70509,1404.2859 801.6243,1404.5934 C 801.95368,1404.7034 802.29521,1404.7836 802.64439,1404.7773 C 802.86449,1404.8059 803.12169,1404.8234 803.28224,1404.9949 C 803.31542,1405.2233 803.08323,1405.4029 802.96686,1405.5853 C 802.39877,1406.2721 801.76642,1406.9149 801.04339,1407.4392 C 800.90869,1407.5387 800.7537,1407.6269 800.58112,1407.604 C 800.52265,1407.5901 800.34151,1407.6446 800.43259,1407.5473 C 800.63834,1407.2142 800.84415,1406.8812 801.05002,1406.5481 C 800.69092,1406.3261 800.33181,1406.1042 799.97265,1405.8823 C 798.47412,1406.3967 796.98694,1406.9459 795.47106,1407.4081 C 795.22901,1407.4761 794.98861,1407.5595 794.73924,1407.5957 z "},"la1":{"name":"LA-1","path":"M 1682.9504,1280.8084 C 1682.5849,1280.8084 1682.0336,1280.4894 1681.7254,1280.0995 C 1681.4172,1279.7096 1680.9393,1278.6887 1680.6635,1277.831 L 1680.162,1276.2714 L 1679.0277,1275.9878 L 1678.8574,1279.4032 C 1675.9155,1279.4984 1675.0739,1279.6205 1673.3977,1280.3889 L 1673.4584,1279.2278 L 1675.367,1277.8126 L 1673.5929,1275.1051 L 1674.1054,1274.0476 L 1678.7442,1273.336 L 1677.6486,1262.5643 L 1676.2478,1258.6904 L 1672.8705,1258.7173 L 1672.1696,1259.8516 L 1669.9241,1260.04 C 1667.84,1257.8985 1667.1612,1257.6465 1664.6216,1254.6436 C 1664.6198,1254.3288 1663.4884,1252.406 1662.8646,1252.0165 L 1661.7303,1251.3081 L 1661.7303,1250.292 C 1661.7303,1249.7333 1661.5041,1249.0336 1661.2277,1248.7373 L 1660.725,1248.1985 L 1657.8546,1217.5739 L 1700.6655,1212.9343 C 1700.7953,1213.0642 1700.6177,1214.2887 1700.2708,1215.6555 C 1699.9238,1217.0223 1699.4214,1219.5188 1699.1542,1221.2033 L 1698.6684,1224.266 L 1697.5618,1224.9499 L 1696.7608,1234.1321 L 1698.5937,1235.7265 C 1698.5937,1236.2165 1699.1093,1237.6282 1699.7394,1238.8634 L 1700.8852,1241.1094 L 1701.9964,1241.1094 L 1701.9964,1242.5662 L 1703.8396,1243.6492 C 1704.8534,1244.2448 1705.9783,1245.0236 1706.3394,1245.38 C 1706.7006,1245.7364 1707.2642,1246.999 1707.5919,1248.1858 L 1708.1877,1250.3437 L 1710.6335,1252.9472 L 1710.9966,1257.8151 L 1711.6007,1258.0164 C 1711.9329,1258.1272 1712.2048,1258.5226 1712.2048,1258.8952 C 1712.2048,1259.2677 1712.7181,1260.0121 1713.3455,1260.5493 L 1714.4863,1261.526 L 1717.5925,1261.6156 L 1716.7418,1261.9283 C 1716.2739,1262.1004 1715.4688,1262.6082 1714.9527,1263.0568 L 1714.0143,1263.8725 L 1709.3327,1262.4698 L 1708.0893,1263.7133 L 1706.1133,1262.4792 L 1703.5261,1264.8895 L 1702.4289,1264.5211 L 1702.5636,1262.8087 L 1698.365,1262.401 L 1692.8382,1266.1167 C 1690.6432,1265.1305 1689.633,1264.8443 1686.684,1264.612 L 1686.684,1274.57 L 1688.9169,1274.57 L 1688.5397,1275.5624 C 1688.3323,1276.1083 1687.1393,1277.512 1685.8887,1278.6817 C 1684.6382,1279.8514 1683.3159,1280.8084 1682.9504,1280.8084 z "},"al1":{"name":"AL-1","path":"M 1802.3782,1138.3336 L 1787.1898,1140.3718 L 1787.757,1141.8605 L 1792.1699,1141.1516 L 1791.9975,1143.5065 C 1789.8569,1144.0922 1789.48,1144.7125 1787.6506,1145.9899 L 1786.0733,1144.6784 L 1784.7441,1147.8862 L 1785.4438,1150.0199 L 1788.1227,1152.7386 L 1795.0056,1157.3856 L 1795.0056,1160.434 L 1791.656,1161.834 L 1789.3881,1164.9965 L 1785.1871,1159.4946 L 1783.0746,1160.677 L 1782.2791,1159.3331 L 1764.0793,1161.834 L 1777.0524,1241.5688 L 1780.8273,1240.9662 L 1780.8273,1242.1536 L 1784.1061,1240.913 L 1787.9164,1242.0296 L 1787.7747,1243.8728 L 1790.9825,1243.7664 L 1791.2661,1242.2954 C 1791.4218,1241.4847 1791.5201,1237.942 1791.4788,1234.4265 L 1791.4079,1228.0463 L 1792.6839,1226.7703 L 1792.0281,1223.5447 L 1793.8713,1222.8358 L 1793.8713,1222.0915 C 1793.8713,1221.6754 1794.1092,1221.1742 1794.403,1220.9926 L 1794.9347,1220.6736 L 1799.4894,1222.0915 L 1800.0211,1223.2257 C 1800.312,1223.8561 1800.8557,1225.3985 1801.2263,1226.6462 L 1801.8997,1228.9148 L 1800.7655,1231.8744 L 1802.6441,1237.1204 L 1804.3455,1237.8116 C 1805.2865,1238.1943 1806.754,1239.1615 1807.6065,1239.956 C 1808.4587,1240.7506 1809.8026,1241.9632 1810.5839,1242.6499 L 1812.0017,1243.8905 L 1811.3283,1245.6273 L 1809.1306,1246.2299 C 1807.915,1246.5572 1806.9153,1246.9366 1806.9153,1247.0806 C 1806.9153,1247.2245 1807.3669,1247.3464 1807.9255,1247.3464 C 1808.4839,1247.3464 1811.2768,1246.5871 1814.1285,1245.6627 C 1816.9801,1244.7384 1820.4412,1243.4574 1821.8201,1242.8094 L 1824.3368,1241.622 L 1823.8228,1238.9458 L 1825.9673,1238.2724 L 1826.6407,1235.7203 L 1827.3319,1233.1682 L 1828.1117,1233.1682 C 1828.5426,1233.1682 1829.1921,1232.8163 1829.5473,1232.3884 L 1830.1853,1231.6086 L 1826.9597,1230.9706 L 1825.1875,1226.4513 L 1825.985,1224.9094 C 1826.422,1224.067 1826.9067,1222.6409 1827.0661,1221.737 L 1827.3496,1220.0888 L 1826.1622,1217.8734 L 1820.9871,1215.9239 L 1812.1435,1207.3284 L 1814.1993,1201.8521 L 1813.8271,1198.3252 L 1860.8634,1191.9627 L 1859.3747,1181.2759 L 1855.7592,1181.7013 L 1855.0149,1177.306 L 1819.3921,1181.9671 L 1823.5215,1177.5364 C 1823.5215,1177.1792 1824.4778,1174.9844 1825.152,1173.7969 C 1825.8262,1172.6093 1827.323,1170.6139 1828.4839,1169.3662 C 1829.6449,1168.1186 1830.9202,1166.4941 1831.3018,1165.7508 C 1831.6834,1165.0073 1832.0963,1163.3484 1832.2234,1162.0645 C 1832.3505,1160.7803 1832.5181,1158.8842 1832.5956,1157.8464 L 1832.7374,1155.9501 L 1836.1578,1153.593 L 1836.1224,1150.7041 L 1839.0112,1150.3851 L 1843.9204,1147.4254 L 1842.9811,1142.9948 L 1812.5689,1147.1419 L 1811.984,1149.5167 L 1813.1005,1155.0817 L 1810.194,1155.4716 L 1811.4523,1164.3507 L 1808.8825,1166.8142 L 1809.2724,1168.0548 L 1812.1966,1168.3029 L 1812.5334,1169.8093 L 1810.318,1174.3818 L 1807.3406,1172.8576 C 1806.95,1173.9445 1806.0812,1174.5224 1805.2139,1175.2148 C 1804.6237,1176.4154 1804.5937,1177.3403 1805.2139,1179.0251 L 1803.7075,1179.1669 L 1802.3073,1177.6427 L 1802.1301,1179.5391 L 1800.5705,1181.1696 L 1803.4948,1184.3243 L 1800.3401,1183.3849 L 1798.5324,1186.5573 L 1799.9602,1187.9851 L 1793.2765,1189.6999 L 1794.1549,1186.3801 L 1791.0357,1186.0256 C 1790.651,1184.5327 1791.3766,1184.9909 1792.9329,1184.5051 C 1793.0221,1184.0605 1792.7539,1182.9718 1793.0175,1182.348 L 1795.5195,1178.6884 L 1794.8461,1176.9338 L 1791.9878,1179.2357 L 1793.905,1174.7056 L 1792.7725,1173.3222 L 1794.1095,1168.6219 L 1796.3334,1169.1047 L 1795.679,1167.6649 L 1797.4336,1163.3051 L 1800.2618,1163.9085 L 1800.9535,1162.8443 L 1803.9556,1162.8443 L 1804.6956,1160.7041 L 1799.4111,1159.6727 L 1801.2872,1150.236 L 1803.1183,1150.9977 L 1801.9646,1147.3174 L 1800.9959,1147.3592 L 1800.874,1148.9396 L 1798.3391,1146.9942 L 1798.4083,1144.2176 L 1799.8261,1143.6505 L 1797.1349,1142.5301 L 1798.2397,1140.7288 L 1799.6947,1141.4174 L 1800.5247,1140.1591 L 1802.3782,1140.1591 L 1802.3782,1138.3336 z "},"fl1":{"name":"FL-1","path":"M 1828.7497,1240.2459 C 1828.1259,1240.3436 1827.0055,1240.3003 1826.26,1240.1495 L 1824.9044,1239.8754 L 1827.5931,1238.535 L 1827.8429,1235.2839 L 1831.4986,1232.2321 L 1830.7703,1230.3339 L 1827.9446,1230.3339 L 1826.596,1225.8329 L 1827.1735,1225.106 C 1827.4912,1224.7062 1827.9296,1223.3898 1828.1478,1222.1807 L 1828.5444,1219.9824 L 1827.1932,1216.7202 L 1821.5254,1214.7379 L 1820.317,1213.385 C 1819.6523,1212.6409 1818.5014,1211.4924 1817.7593,1210.8329 C 1817.0172,1210.1734 1815.8129,1209.0791 1815.0831,1208.4011 L 1813.7561,1207.1685 L 1815.4819,1201.3575 L 1814.8441,1199.348 C 1854.0977,1194.0477 1886.9123,1189.6356 1923.7235,1183.8912 L 1922.6944,1185.1482 L 1923.1242,1186.7141 C 1921.0978,1188.9618 1920.4776,1190.9134 1920.3755,1194.5673 L 1926.5847,1193.5778 L 1927.2913,1196.3929 L 1929.8236,1195.7573 L 1931.8065,1208.783 L 1928.9321,1209.0604 L 1929.8869,1216.987 L 1910.9834,1219.7761 L 1909.23,1221.8894 L 1905.3602,1222.4993 L 1903.929,1224.3791 L 1904.6011,1231.3031 L 1892.8353,1228.405 L 1850.1882,1234.0596 L 1837.599,1238.2659 L 1834.9881,1238.1123 L 1832.436,1239.0902 C 1831.0324,1239.628 1829.3736,1240.1481 1828.7497,1240.2459 z "},"tx1":{"name":"TX-1","path":"M 1465.3266,1115.1877 L 1431.2634,1117.4031 L 1430.0582,1115.9321 L 1408.6846,1117.1195 L 1409.4998,1138.8476 L 1406.5986,1139.4168 C 1406.5236,1138.1733 1405.4312,1138.4538 1404.2539,1138.1742 C 1403.1622,1137.9462 1401.9216,1137.4809 1401.5069,1137.1462 L 1400.7625,1136.5437 L 1391.2454,1136.1892 L 1390.2352,1135.1258 C 1389.6771,1134.5443 1388.6657,1133.7786 1387.9844,1133.4245 C 1387.3031,1133.0702 1386.6651,1132.7867 1386.5666,1132.7864 L 1386.7792,1143.8454 L 1394.6127,1151.6435 L 1394.6127,1156.4463 L 1393.3367,1160.0972 L 1394.5596,1161.3023 L 1393.9392,1164.4039 L 1395.0558,1165.1128 L 1419.7081,1163.7835 L 1420.7006,1181.5595 L 1422.9691,1181.5595 L 1422.9691,1184.2534 L 1421.1614,1185.7598 L 1423.5363,1186.6282 L 1423.5363,1187.2308 C 1423.5363,1187.5625 1423.182,1187.9713 1422.7565,1188.1346 L 1421.9944,1188.4359 L 1423.4122,1195.2769 L 1424.6705,1197.5454 L 1426.1238,1198.5734 L 1427.5416,1202.2597 L 1421.0019,1208.1259 L 1422.083,1209.3134 C 1422.6733,1209.9657 1423.437,1211.0594 1423.7844,1211.7591 L 1424.4224,1213.0351 L 1426.8859,1213.3896 L 1427.6302,1218.3874 L 1428.924,1218.7773 L 1430.4304,1225.1752 L 1450.1559,1230.8643 L 1472.3093,1224.4663 L 1472.3093,1223.1371 C 1479.7601,1220.9313 1478.6322,1220.9879 1495.1008,1218.8305 L 1494.3565,1214.3998 L 1493.3994,1214.0453 C 1492.8708,1213.8558 1491.9677,1213.233 1491.3968,1212.6452 L 1490.3689,1211.5641 L 1491.1309,1207.0094 L 1486.4521,1201.8875 L 1486.7711,1198.8569 L 1483.9355,1198.467 L 1482.9962,1197.634 C 1482.4788,1197.172 1481.744,1196.0486 1481.3657,1195.1351 L 1480.6745,1193.4692 L 1482.0392,1191.821 L 1481.2948,1189.4461 L 1482.4645,1188.0283 L 1481.6493,1186.4332 C 1481.1942,1185.5562 1480.8163,1184.3483 1480.8163,1183.7571 L 1480.8163,1182.676 L 1478.4592,1180.7088 L 1476.8287,1176.7389 L 1472.522,1174.6831 L 1470.4307,1170.7841 L 1468.9774,1170.7841 L 1465.3266,1115.1877 z "},"ga1":{"name":"GA-1","path":"M 2105.8453,1191.2435 L 2104.1345,1188.6323 L 2103.5923,1184.2613 L 2101.1644,1181.9993 L 2101.8438,1179.2924 L 2049.7754,1184.9636 L 2049.6042,1179.7727 C 2042.7824,1173.0277 2041.1867,1169.0645 2034.8706,1162.3616 L 2027.5295,1157.4579 L 2027.5283,1151.3 L 2028.8905,1147.5331 L 2032.5111,1147.5331 L 2033.3617,1145.5482 L 2034.0503,1133.6385 L 2045.7651,1132.9028 C 2046.1453,1131.3477 2046.3582,1129.6887 2047.2518,1128.3657 C 2047.6577,1127.7649 2048.2798,1125.3008 2048.4137,1123.6193 C 2049.3142,1122.9089 2050.6528,1122.2236 2050.7806,1121.2974 C 2051.0569,1119.2945 2052.5868,1118.6117 2053.6162,1117.3883 L 2053.6162,1112.0516 L 2048.6029,1110.5714 L 2042.3752,1106.676 L 2046.1708,1100.0766 L 2060.4447,1084.9405 C 2062.869,1085.435 2064.6434,1085.4295 2065.607,1084.8004 L 2067.5817,1093.3724 L 2071.365,1095.9244 L 2074.0781,1095.9244 L 2078.5247,1098.1929 C 2081.5256,1097.6089 2085.4551,1098.8821 2089.2021,1099.7902 C 2089.2101,1100.1903 2089.621,1100.8813 2091.6348,1102.73 L 2093.6645,1101.7184 C 2093.7736,1099.9649 2095.8873,1097.8576 2097.8448,1095.7779 L 2100.2918,1089.0667 L 2103.1094,1086.8504 L 2105.9991,1086.8504 L 2109.0877,1083.425 L 2104.087,1079.8604 C 2108.4377,1077.6935 2111.1798,1077.8933 2114.0805,1076.6351 L 2117.7018,1076.6421 L 2117.7439,1077.7978 L 2118.7988,1078.8906 C 2119.4021,1079.2135 2120.5112,1079.3934 2121.3149,1079.3934 L 2123.2397,1079.4356 L 2128.2587,1081.7231 L 2135.8769,1082.0184 L 2141.5077,1075.7914 C 2143.6023,1075.8216 2144.9296,1075.4257 2146.0193,1074.8978 L 2150.5501,1077.2092 L 2155.1323,1077.2092 L 2155.1323,1079.5176 L 2153.2497,1082.3908 L 2150.725,1081.7572 L 2149.3341,1083.4331 L 2149.9925,1085.149 L 2151.8119,1085.149 L 2149.3857,1088.2333 L 2145.62,1087.9088 L 2145.8331,1091.671 L 2147.7138,1091.3482 L 2147.0278,1093.2478 C 2146.6505,1094.2925 2145.789,1095.8398 2145.1134,1096.686 C 2144.4378,1097.5323 2143.6722,1098.1873 2143.412,1098.1417 C 2143.1519,1098.096 2142.3648,1098.0888 2141.663,1098.1258 L 2140.3869,1098.1929 L 2140.3869,1099.9309 L 2142.939,1100.898 L 2144.2251,1099.8648 L 2145.0008,1103.9997 L 2144.2571,1108.4013 L 2143.5434,1108.4013 C 2143.1509,1108.4013 2142.0249,1108.8028 2141.0412,1109.2935 L 2139.2527,1110.1857 L 2139.2527,1111.9363 L 2140.5287,1111.6595 C 2141.2305,1111.5073 2142.2514,1111.1951 2142.7972,1110.9656 L 2143.7897,1110.5484 L 2143.7897,1111.4211 C 2143.7897,1111.9011 2143.0496,1114.3011 2142.145,1116.7545 L 2140.5002,1121.2153 L 2141.0863,1124.2809 L 2142.1478,1124.2809 L 2141.9,1131.1473 L 2139.9391,1132.1967 L 2138.7782,1135.527 L 2139.4867,1136.2355 L 2137.0146,1136.8821 L 2137.6854,1143.2998 L 2135.9169,1145.1929 C 2134.9443,1146.2341 2134.1485,1147.2852 2134.1485,1147.5288 L 2134.1485,1147.9715 L 2137.8349,1148.5346 L 2139.1197,1147.5046 L 2139.688,1151.2195 L 2139.0841,1154.6223 C 2138.752,1156.4938 2138.5095,1158.8717 2138.5452,1159.9065 L 2138.6102,1161.788 L 2139.9587,1163.4127 L 2139.4355,1163.4127 C 2139.1478,1163.4127 2138.6296,1163.13 2138.2841,1162.7844 L 2137.6557,1162.156 L 2133.8162,1163.4232 L 2124.7909,1162.9274 L 2120.967,1161.7511 L 2117.1864,1161.8932 L 2115.7168,1160.6874 L 2111.7522,1160.895 L 2111.1798,1163.6963 L 2108.9113,1163.6963 L 2109.0014,1166.2484 L 2108.0417,1166.2484 L 2108.6293,1173.2715 L 2111.6253,1177.2312 L 2112.5665,1190.054 L 2105.8453,1191.2435 z "},"ms1":{"name":"MS-1","path":"M 1708.8915,1078.9737 L 1707.5767,1068.1863 L 1700.2951,1068.8663 L 1699.5738,1060.1953 L 1701.2535,1060.1953 L 1703.4143,1057.7594 L 1696.9444,1058.4977 C 1696.0824,1054.077 1695.9099,1049.5453 1695.0538,1045.128 L 1662.8799,1048.5517 L 1662.0996,1041.025 L 1662.9315,1040.3458 L 1668.4973,1040.3458 L 1672.5058,1038.4344 C 1672.5553,1030.9196 1671.2582,1023.9819 1670.0883,1016.9898 C 1668.5212,1017.4516 1664.5516,1017.9133 1660.129,1018.3751 L 1659.326,1011.9483 L 1656.0607,1010.1865 L 1653.996,994.80357 L 1651.2402,990.66245 L 1652.3515,989.63402 L 1651.3579,985.78951 L 1653.0509,983.20863 L 1652.0196,975.69315 L 1646.832,975.69315 L 1649.8206,973.34229 L 1649.8206,970.0581 L 1646.7654,968.45727 L 1751.2836,956.34924 L 1754.2138,960.99102 L 1756.8258,962.18114 L 1758.4987,1062.1353 L 1741.1414,1064.292 L 1738.7289,1047.191 L 1722.2245,1049.0034 L 1720.8046,1047.0617 L 1718.4004,1048.3485 L 1716.2437,1047.664 L 1715.1199,1049.7638 L 1717.1303,1051.0193 L 1718.5103,1065.0159 L 1719.7452,1067.5233 L 1724.8137,1066.8286 L 1723.6435,1069.0151 L 1724.6537,1070.8202 L 1722.5075,1072.7626 L 1720.0721,1071.4592 L 1718.7045,1072.5942 L 1713.6226,1072.9557 L 1713.0555,1078.627 L 1708.8915,1078.9737 z "},"ca51":{"name":"CA-51","path":"M 331.8917,1021.2307 L 328.22425,1041.9477 L 326.79223,1042.9204 L 325.45283,1052.2492 L 318.87765,1052.2492 L 319.42709,1054.3582 L 317.55511,1056.1038 L 317.69026,1066.2857 L 315.608,1066.4533 L 313.95072,1065.4704 L 312.49746,1065.5768 C 311.70194,1065.6265 310.80322,1065.8115 310.49481,1066.0021 L 303.45884,1066.3566 L 303.53093,1064.9997 L 297.0964,1062.4221 C 296.19735,1062.3161 295.68276,1062.5224 295.04803,1062.9691 L 294.53343,1065.462 L 286.5769,1064.4101 L 284.66195,1066.1931 C 282.36689,1066.3868 283.3419,1066.1831 281.85921,1065.2233 L 280.20657,1065.2932 L 281.96115,1059.5156 L 277.1228,1055.0317 L 274.25611,1055.9312 L 273.78436,1058.3049 L 271.78271,1058.7923 L 269.67924,1065.8249 L 393.40194,1074.9344 L 394.58934,1073.7647 L 399.6226,1075.1116 L 403.84062,1074.3141 L 403.84062,1072.2228 L 408.09409,1068.8023 C 407.80463,1065.37 408.12847,1061.8905 407.839,1058.4582 L 399.37448,1057.3002 L 398.59468,1053.6671 L 397.33639,1052.8695 L 400.11338,1048.5127 L 400.68597,1041.9523 L 398.50058,1039.8178 L 400.54419,1037.2735 L 399.85303,1032.9669 L 404.69132,1032.9845 L 405.16927,1032.2313 C 380.72346,1029.1441 364.3213,1026.661 331.8917,1021.2307 z "},"ar1":{"name":"AR-1","path":"M 1643.0151,874.158 C 1610.5581,877.78524 1570.3273,881.41254 1526.6296,885.03978 L 1527.1081,891.68585 L 1525.7967,892.37701 C 1525.0764,892.76249 1524.4852,893.31198 1524.4852,893.58216 L 1524.4852,894.0607 C 1525.2938,893.59611 1526.1224,893.188 1527.0018,892.891 L 1527.3208,895.15951 L 1525.9739,895.15951 L 1528.0475,896.68367 L 1527.498,898.27872 L 1530.4989,899.51931 L 1531.8401,901.57516 L 1530.6172,903.04612 L 1531.4148,904.33991 L 1533.5238,903.79047 L 1534.9062,905.45642 L 1533.2757,906.48434 L 1534.6935,906.50209 L 1534.6935,911.44671 L 1513.178,912.45694 L 1512.859,910.18842 L 1507.879,909.83397 L 1509.5095,933.7774 L 1525.1764,932.9976 L 1524.5029,928.76189 C 1528.1321,928.03704 1531.9682,928.13992 1535.7568,928.05298 L 1536.1113,932.2178 L 1544.8309,931.95199 L 1546.2842,953.44968 L 1565.8501,952.26228 L 1565.5385,947.45065 L 1568.1009,945.95298 L 1567.4629,941.27417 C 1571.1645,940.44383 1574.9885,940.34867 1578.8586,940.52981 L 1579.2131,945.3504 L 1585.1325,945.68711 L 1590.4197,945.08618 C 1590.1605,946.32286 1590.3692,947.04833 1589.5277,948.00882 L 1586.7874,949.82278 L 1586.7089,951.7961 L 1587.72,952.42176 L 1587.4409,954.6537 L 1588.8543,956.12585 L 1590.108,957.79383 L 1589.2265,959.72354 L 1587.9649,961.85606 L 1586.6744,963.21496 L 1587.9325,963.34199 L 1587.8618,967.3073 L 1581.074,968.47859 L 1581.6943,972.28902 L 1578.7523,973.03337 L 1577.5117,971.34968 L 1574.8356,970.65852 L 1568.4376,973.52961 L 1561.898,972.87384 L 1558.6043,971.26404 L 1554.543,972.30671 L 1554.543,975.24869 L 1557.2368,974.57523 L 1558.0521,989.30288 L 1557.2368,998.94407 L 1561.2067,998.94407 L 1561.9866,1006.9902 L 1578.646,1006.1927 L 1579.5853,1021.5938 L 1588.3758,1021.5229 L 1589.7582,1026.2017 L 1590.8392,1027.1055 L 1593.3913,1027.0169 L 1595.0927,1033.8225 L 1597.1663,1035.896 L 1599.3107,1033.9643 L 1600.1792,1034.301 C 1600.6586,1034.485 1601.0475,1034.8831 1601.0475,1035.1871 C 1601.0475,1035.4911 1600.4824,1036.137 1599.7893,1036.6227 L 1598.5309,1037.5088 L 1599.3816,1037.5088 C 1599.8495,1037.5088 1600.7968,1037.1085 1601.4906,1036.6227 L 1602.7489,1035.7365 L 1603.9364,1036.4809 L 1605.5669,1035.1162 L 1606.2935,1036.9771 L 1608.3316,1036.3214 L 1609.0582,1037.5265 L 1610.1748,1036.8354 L 1606.1517,1031.9261 L 1606.1517,1029.5867 L 1607.286,1028.8778 C 1607.9098,1028.4882 1608.4202,1027.9495 1608.4202,1027.6904 C 1608.4202,1027.4312 1608.7898,1026.8599 1609.2355,1026.4144 L 1610.033,1025.5991 L 1617.4943,1024.9433 L 1619.3729,1022.1963 L 1621.8009,1022.1963 L 1623.0947,1023.4901 L 1624.8669,1022.7989 L 1624.8669,1021.6292 L 1620.578,1021.6292 L 1618.0614,1019.8569 L 1618.0614,1017.0922 L 1620.4186,1017.0922 L 1621.2693,1017.9429 C 1621.7371,1018.4108 1622.3276,1018.7936 1622.5984,1018.7936 L 1623.0947,1018.7936 L 1623.4491,1014.5401 L 1626.4797,1014.1856 L 1627.738,1012.6792 L 1626.0012,1010.9424 L 1626.0012,1008.5144 L 1630.8218,1008.8688 L 1631.1763,1011.4209 L 1632.0447,1011.4209 L 1631.5662,1008.1954 L 1635.8905,1004.1191 L 1633.941,1001.9746 L 1633.941,999.67067 L 1636.3513,996.60466 L 1633.4802,993.55634 L 1633.0903,988.45218 L 1635.926,988.45218 L 1635.8374,991.00426 L 1637.2729,991.00426 L 1638.159,989.74592 C 1638.6446,989.05266 1639.0452,988.30938 1639.0452,988.09773 L 1639.0452,987.70783 L 1635.0753,987.83186 L 1633.9588,986.71535 L 1634.6854,980.68961 L 1636.2804,980.08704 L 1637.4679,981.25674 C 1637.5764,982.59346 1637.6855,983.93024 1637.84,985.26209 L 1639.5768,984.09238 L 1638.035,981.64664 L 1638.4958,978.91733 L 1636.6349,976.86149 L 1638.2122,975.14235 L 1640.7465,975.12466 L 1640.7465,976.17027 C 1640.7465,976.74217 1640.8978,977.34939 1641.0833,977.53496 L 1641.42,977.87166 L 1644.9469,975.74493 L 1646.5774,977.10961 L 1645.8153,974.71701 L 1648.6864,972.83839 L 1648.6864,970.65852 L 1647.623,970.32176 C 1647.0403,970.13682 1646.1494,969.52205 1645.638,968.95714 L 1644.7165,967.94691 L 1645.4431,964.24288 L 1650.246,964.96948 L 1651.3093,958.14624 L 1655.6514,958.39436 L 1656.1477,956.97654 L 1654.3931,956.97654 L 1653.1348,954.61938 L 1655.0311,952.5104 L 1654.2867,951.30525 L 1650.9726,951.30525 L 1650.2814,948.5405 L 1651.0258,947.33535 L 1653.2057,947.33535 L 1653.8792,942.39067 L 1652.036,941.68176 L 1651.2207,943.64902 L 1649.2535,944.00347 L 1649.2535,939.92723 L 1651.6283,938.84612 L 1651.5929,937.12704 L 1653.8614,935.92189 L 1655.5096,937.28651 L 1654.8539,939.39555 L 1655.935,939.39555 L 1656.5021,937.16248 L 1654.8716,935.81555 L 1655.2083,931.17219 L 1659.3555,930.83542 L 1661.1455,933.36981 L 1662.0139,932.50136 L 1658.8061,929.73661 L 1659.1782,927.82255 C 1660.6046,926.99619 1662.2726,926.42906 1663.4317,925.23503 L 1663.4317,924.88057 L 1659.639,925.32367 L 1658.6997,923.33872 C 1658.1828,922.24938 1657.7604,920.95905 1657.7604,920.46763 L 1657.7604,919.58149 L 1660.5429,917.75602 L 1662.581,918.39404 C 1663.5227,917.93081 1664.5205,917.49934 1665.1508,916.7104 L 1666.2673,913.94565 L 1669.3865,913.5912 L 1669.3865,912.51008 L 1666.5509,911.83661 L 1666.5509,908.52248 L 1669.7233,907.40592 L 1671.9386,908.7883 L 1671.9386,907.03377 L 1667.9687,904.69436 L 1667.9687,902.93978 L 1635.3057,906.3603 L 1637.5565,899.53701 L 1641.3137,895.90387 L 1641.3137,893.84803 L 1643.724,891.41998 C 1645.0496,890.079 1646.5632,888.47953 1647.0913,887.85773 C 1647.6194,887.23576 1648.1,886.38671 1648.1547,885.97912 L 1648.1192,879.97107 L 1644.1493,879.22671 L 1644.1493,875.87714 L 1643.0151,875.87714 L 1643.0151,874.158 z "},"sc1":{"name":"SC-1","path":"M 2184.3367,1035.2762 L 2183.1998,1036.3123 L 2177.5339,1033.2447 L 2177.923,1027.8288 L 2176.5164,1026.134 L 2177.352,1023.5525 C 2179.8084,1023.221 2180.4453,1022.7792 2181.413,1021.5656 L 2178.2656,1018.3631 L 2176.289,1018.5869 L 2173.0993,1015.5025 C 2173.5617,1014.1724 2173.1831,1012.8889 2169.7887,1009.4549 L 2170.4999,1004.7123 L 2168.2613,1002.6267 L 2170.1362,998.83484 C 2171.1674,996.74928 2172.65,994.22669 2173.4308,993.22894 L 2174.8505,991.41492 L 2179.652,989.7842 L 2184.0558,995.76968 L 2184.0558,998.2448 L 2189.7046,1005.4674 L 2189.7271,1012.4686 L 2185.7572,1013.7787 L 2185.7572,1016.4623 C 2188.5496,1017.4951 2190.0159,1019.65 2191.3595,1021.9086 L 2192.4896,1019.3843 C 2193.1335,1018.2065 2193.171,1017.3043 2193.0981,1016.0162 L 2195.3984,1014.7851 L 2195.3984,1012.507 L 2198.2341,1009.4489 L 2198.1789,1007.459 C 2198.1789,1006.8801 2199.5758,1005.8945 2200.0026,1005.0666 C 2200.4294,1004.2386 2200.6469,1002.4577 2201.6989,1000.1653 L 2203.6117,995.99749 L 2206.2369,994.38815 L 2208.3795,995.04659 L 2209.5854,990.56848 L 2213.1786,989.08998 L 2214.631,982.79944 L 2212.9794,981.87519 L 2211.5616,979.66305 L 2210.1438,978.90423 L 2210.1438,976.72929 L 2213.6926,971.78762 L 2212.9632,969.88694 L 2215.4426,957.54503 L 2217.5973,956.77793 L 2217.6583,955.79028 L 2213.0523,951.84777 L 2211.8889,946.20053 L 2208.4424,945.04659 L 2207.6051,943.14626 L 2206.5947,942.37825 L 2206.5768,940.50758 L 2207.9192,940.13339 C 2208.3239,939.41206 2207.6459,938.70105 2208.2321,938.0142 L 2210.2903,936.04864 L 2209.6831,933.72676 L 2210.7109,931.65113 L 2211.537,928.4236 C 2211.9913,927.44071 2212.9095,925.15132 2213.5774,923.33617 L 2214.7918,920.03576 L 2246.4363,940.56854 C 2246.4384,940.74503 2245.3592,941.49693 2244.0381,942.23936 L 2241.6363,943.5893 L 2238.7183,946.57801 C 2237.1135,948.22178 2234.8667,950.97337 2233.7255,952.69268 C 2232.5843,954.41193 2230.7525,957.80211 2229.6547,960.22642 C 2228.557,962.65066 2227.1271,965.64085 2226.4771,966.87124 C 2225.8271,968.10162 2224.9518,970.39849 2224.5318,971.97539 L 2223.7683,974.84246 L 2223.7616,979.84209 L 2223.7549,984.84179 L 2224.7837,986.76424 L 2224.1876,989.88243 L 2217.9617,996.10836 L 2218.6198,997.82359 L 2217.9418,1001.2139 L 2214.6062,1001.2139 L 2212.3179,1002.4386 L 2210.1242,1000.4533 L 2206.9722,1003.4732 L 2205.5134,1007.5073 L 2206.8915,1009.1678 L 2208.4424,1007.8806 L 2208.4424,1008.7808 L 2208.4424,1009.6809 L 2207.2586,1010.3145 C 2206.6075,1010.6629 2205.3432,1011.7565 2204.4489,1012.7447 L 2202.8229,1014.5415 L 2202.1388,1017.3771 L 2199.8144,1019.0785 C 2198.536,1020.0143 2197.0509,1021.0183 2196.5141,1021.3096 L 2195.5381,1021.8394 L 2195.4411,1027.0183 L 2190.8438,1030.9882 L 2190.8614,1032.406 L 2189.9825,1032.406 C 2189.4991,1032.406 2188.2869,1032.8187 2187.2886,1033.3231 C 2186.2904,1033.8274 2184.9621,1034.7064 2184.3367,1035.2762 z "},"nm1":{"name":"NM-1","path":"M 830.17406,1027.1754 L 830.7142,1015.9593 L 829.19361,1015.9593 C 828.35732,1015.9593 827.48548,1015.7679 827.25619,1015.5339 C 827.0269,1015.3 824.11327,1013.9519 820.78145,1012.5381 L 814.72361,1009.9675 L 814.9322,1003.7476 L 815.14079,997.5276 L 815.63396,996.58583 C 815.90516,996.06782 817.01282,995.09661 818.09536,994.42757 L 820.06363,993.21107 L 829.75252,993.99723 L 830.44101,989.87137 L 832.87173,989.84715 L 835.99093,985.43665 L 835.99093,983.19626 L 832.38071,980.90223 L 831.0623,981.23315 C 830.43846,981.2801 829.15318,980.94357 827.38096,980.48533 L 824.1587,979.65205 L 821.30207,980.95367 L 820.17031,984.20008 L 818.40643,984.24256 L 816.6515,982.59726 L 807.50775,981.26706 L 807.42307,966.44907 L 817.84282,967.34036 L 818.56488,969.23344 L 820.69825,969.22822 L 820.06273,967.2739 L 826.39115,966.48321 L 824.72594,963.94179 L 827.20044,960.41164 L 830.26787,961.13354 L 830.23497,959.87911 L 838.14869,959.12613 L 838.91255,954.03246 L 842.74056,954.70939 L 842.10328,968.03691 L 846.76638,969.93764 L 846.76638,973.42463 L 844.49786,973.42463 L 844.49786,980.23018 L 889.20984,982.80874 L 888.01677,1008.8702 L 886.74918,1009.6794 L 885.70748,1030.7046 L 830.17406,1027.1754 z "},"ca26":{"name":"CA-26","path":"M 256.94675,968.32048 L 256.41376,968.32048 L 257.05484,965.11518 L 254.2209,963.25834 L 253.49792,964.12945 C 253.10031,964.60862 251.77612,965.51018 250.55532,966.13295 C 249.33452,966.75577 248.2124,967.1421 248.06177,966.99141 C 247.91108,966.84078 248.23678,966.03228 248.78554,965.19486 L 249.78323,963.67218 L 248.4456,961.5303 L 248.4456,958.81761 L 245.89352,957.11072 L 240.71344,961.76855 L 239.73213,960.26833 L 237.01924,960.73309 L 235.84092,959.45801 L 239.37154,957.5617 L 239.37154,956.05586 L 237.78092,954.53193 C 236.90606,953.69377 235.91648,953.008 235.58182,953.008 C 235.24721,953.008 234.63398,953.41701 234.21906,953.91694 L 233.46473,954.82582 L 231.43174,952.3152 L 231.43174,949.65661 L 235.45807,948.90125 L 237.84018,946.90927 C 239.1503,945.81369 240.81228,944.64784 241.53338,944.31857 L 242.84458,943.71985 L 245.35271,946.86537 L 252.87748,947.1106 L 254.48739,948.44664 L 257.93752,947.1444 L 262.81827,949.58986 L 263.19095,944.56391 L 268.91498,946.94273 L 270.31084,949.39913 L 271.84756,949.34225 L 272.83213,950.14429 L 272.83213,951.74143 L 270.47878,952.35688 L 271.5925,954.4379 L 271.05067,957.27213 L 274.67597,960.9478 L 270.88921,960.9478 L 264.9394,967.2397 L 261.3674,965.3925 L 258.68664,966.06535 L 258.08322,967.19291 C 257.75133,967.81307 257.2399,968.32048 256.94675,968.32048 z "},"ok1":{"name":"OK-1","path":"M 1363.9877,863.45345 L 1353.6376,863.96743 L 1356.1188,916.14327 L 1352.2021,916.14327 C 1350.0456,916.14327 1346.7112,916.31506 1344.794,916.51542 L 1341.3026,916.86988 L 1341.3026,921.24743 L 1354.9137,921.24743 L 1354.9137,926.77694 L 1351.6172,927.43265 L 1350.8552,930.85318 L 1349.207,932.25325 C 1348.2941,933.02137 1347.541,933.92384 1347.541,934.25595 L 1347.541,934.85852 L 1374.267,933.74196 C 1374.4901,933.9763 1374.7477,935.34058 1374.8518,936.27634 L 1375.0468,937.97773 L 1377.3153,939.30691 L 1377.5988,938.82842 C 1377.7623,938.5638 1379.1487,937.92533 1380.6649,937.4106 L 1383.4119,936.47127 L 1385.3614,936.98525 L 1388.0907,935.4611 L 1392.5392,935.42565 L 1394.6127,933.54704 L 1394.6127,932.02288 L 1394.0101,932.02288 C 1393.6759,932.02288 1393.0499,931.68288 1392.6277,931.26077 L 1391.8657,930.48097 L 1392.486,925.5009 L 1393.1594,924.93377 C 1393.5361,924.62185 1394.1397,923.49508 1394.5064,922.43483 C 1394.873,921.37453 1395.1798,920.32256 1395.1798,920.09542 L 1395.1798,919.68783 L 1378.1128,920.09542 L 1376.9077,916.7104 L 1376.1633,916.7104 C 1375.7541,916.7104 1374.998,916.30718 1374.4974,915.80651 L 1373.5935,914.88493 L 1369.8186,915.59384 L 1366.593,911.37582 L 1366.6639,901.68149 L 1368.1526,893.51127 L 1373.1504,890.71107 L 1370.7933,888.35397 L 1363.9877,888.35397 L 1362.7649,866.23595 L 1363.9877,866.23595 L 1363.9877,863.45345 z "},"ky1":{"name":"KY-1","path":"M 1757.9295,767.28969 L 1757.0434,770.63932 L 1759.2764,773.01417 L 1759.2764,775.42447 L 1757.4865,777.19674 L 1754.2964,777.19674 L 1753.6052,775.40672 L 1753.9596,773.98889 L 1754.3141,772.55338 L 1753.2507,773.08506 C 1752.664,773.37231 1751.33,774.03534 1750.291,774.55602 C 1749.2519,775.0767 1748.0104,775.49536 1747.5263,775.49536 L 1746.6401,775.49536 L 1743.9108,772.37615 L 1743.0956,773.47496 C 1742.6405,774.08048 1742.2626,774.86959 1742.2626,775.22949 C 1742.2626,775.58944 1742.773,776.3486 1743.3968,776.91318 L 1744.5311,777.9411 L 1744.4957,779.74882 L 1742.2626,782.42493 L 1738.4345,781.09575 L 1737.6901,785.03021 L 1734.9431,786.82018 L 1733.1176,790.68374 L 1735.333,794.81318 L 1739.4269,798.67674 L 1739.4269,800.78572 L 1738.7535,801.47694 L 1727.7036,804.68768 L 1725.4289,807.37882 L 1722.6435,806.70513 L 1720.1446,808.45971 L 1719.3291,815.72877 L 1719.8964,816.77166 C 1720.4471,817.62412 1721.4837,818.86114 1722.2004,819.53642 L 1723.4942,820.77701 L 1724.2386,823.71899 L 1723.4764,828.8586 L 1718.4255,829.93971 L 1714.172,827.12176 L 1708.483,826.0407 L 1702.4041,822.90374 L 1695.3859,822.44295 L 1691.859,826.8914 L 1691.1501,829.74473 L 1688.3854,832.95258 L 1688.3854,834.13998 C 1688.3901,834.79331 1688.5929,835.63051 1688.8285,836.0009 C 1689.0639,836.37129 1689.954,836.95022 1690.8134,837.27694 L 1692.3907,837.86176 L 1693.0465,839.59859 L 1692.2667,845.85476 L 1689.945,848.01694 L 1690.6184,849.78922 L 1693.4895,850.81714 L 1692.7984,852.62486 L 1690.0513,852.62486 L 1689.431,854.25536 L 1691.9831,857.71127 L 1691.3628,859.00506 C 1691.0199,859.71153 1690.5757,861.04848 1690.3703,861.98248 C 1690.165,862.91649 1689.7384,864.00112 1689.4133,864.39278 L 1688.8107,865.10169 L 1686.2055,865.10169 L 1683.4053,861.53939 L 1681.7393,862.17741 L 1681.0127,868.84117 L 1746.4452,861.14949 L 1747.5972,859.99753 L 1744.4071,849.78922 L 1756.4408,849.78922 L 1756.4408,851.56149 L 1817.7793,841.92031 L 1819.3035,842.50513 L 1821.4479,841.35318 L 1827.3673,840.7683 L 1869.0159,836.70981 L 1885.5158,833.34248 L 1889.9465,832.97028 L 1894.0642,832.4505 L 1894.9443,831.07397 L 1893.4702,826.7613 L 1893.8484,824.57297 L 1892.8676,822.72016 L 1889.2732,819.12859 L 1894.2531,813.82968 L 1894.2531,811.22447 L 1897.077,811.70573 L 1899.2155,808.65464 L 1895.4228,805.83674 L 1895.3873,801.19338 L 1905.3121,789.00011 L 1905.0817,788.34434 C 1904.9535,787.9854 1904.6982,786.54019 1904.5146,785.13655 L 1904.1778,782.58447 L 1899.8889,782.01734 L 1897.6559,778.61457 L 1897.6559,776.18652 L 1896.0431,775.56625 L 1895.6709,773.20909 L 1891.382,776.13338 L 1885.0727,776.34605 L 1885.8348,784.56942 L 1884.222,784.56942 L 1883.1409,785.75681 C 1882.5509,786.40879 1882.0728,787.23821 1882.0598,787.59998 C 1882.0468,787.96181 1881.8311,789.08518 1881.5813,790.09892 L 1880.53,791.79447 L 1879.7913,794.49417 L 1875.8214,795.77021 L 1875.1479,797.06394 C 1874.7824,797.77875 1873.5772,799.45983 1872.4541,800.80348 L 1870.416,803.24922 L 1865.4004,806.68744 L 1859.6051,806.68744 L 1856.6631,803.74546 L 1854.0933,804.91516 L 1853.2958,807.39635 L 1854.4123,808.10526 L 1857.6201,824.44565 L 1856.2378,825.33179 C 1855.4721,825.81266 1853.0623,827.9251 1850.9032,830.04605 L 1846.9865,833.90961 L 1845.1079,832.20823 L 1843.2469,832.20823 L 1842.7153,831.21575 C 1842.4231,830.66989 1842.1221,829.96807 1842.0418,829.65615 C 1841.9614,829.34423 1841.7769,828.64241 1841.6342,828.09654 L 1841.3861,827.10407 L 1840.2518,827.10407 L 1840.4999,825.40268 C 1840.6373,824.46692 1840.6198,823.7013 1840.4645,823.7013 C 1840.3092,823.7013 1839.7234,824.56719 1839.153,825.08345 L 1835.9806,824.26843 L 1834.6691,822.69107 L 1831.5322,825.68625 L 1831.9398,826.53694 L 1828.9447,829.93971 C 1827.2973,831.81124 1825.749,833.34248 1825.5065,833.34248 L 1825.0634,833.34248 L 1825.0634,831.6411 L 1815.9716,831.6411 L 1810.1408,821.71635 L 1811.5409,811.82704 L 1810.8143,809.52308 L 1811.8422,809.45219 C 1812.4091,809.41192 1813.5081,809.31131 1814.2879,809.23951 C 1815.0677,809.16766 1816.0953,808.95079 1816.5742,808.74328 L 1817.4426,808.37107 L 1819.7465,810.51555 L 1821.9442,809.27184 L 1816.3615,798.21595 L 1810.6016,797.09939 L 1800.3933,798.00328 L 1796.6715,794.52961 L 1792.8788,794.84862 L 1785.6687,792.70119 L 1787.562,789.30137 L 1782.8123,789.26592 C 1778.386,787.76621 1773.7638,786.63025 1769.6265,784.40988 L 1768.9176,783.86051 L 1768.9176,781.39701 L 1769.5911,780.70585 C 1769.9654,780.33149 1770.6908,780.03239 1771.2039,780.03239 L 1772.1432,780.03239 L 1774.2877,777.67523 L 1772.3027,776.55872 L 1771.7533,775.49536 L 1771.7178,770.67476 L 1769.5734,769.68229 C 1768.3875,769.13643 1766.9304,768.68981 1766.3479,768.68981 L 1765.3022,768.68981 L 1762.2362,771.61404 L 1758.5853,769.73543 L 1757.9295,767.28969 z M 1673.516,865.58018 L 1672.3285,866.74988 L 1674.2249,869.63872 L 1676.5465,869.63872 L 1676.1921,865.95238 L 1673.516,865.58018 z "},"ks1":{"name":"KS-1","path":"M 1355.4808,675.53892 C 1255.0691,680.62681 1160.3765,680.46194 1060.6802,679.34929 C 1059.5666,741.6321 1058.4885,799.92579 1056.5685,866.2005 C 1117.8383,866.87147 1175.5329,867.53405 1237.518,866.05872 L 1237.518,842.98367 L 1232.0063,842.98367 L 1231.2796,820.86565 L 1268.338,819.71364 C 1268.9967,810.70668 1267.5329,801.59785 1267.9303,792.58011 C 1276.8273,791.60408 1285.8771,792.3646 1294.798,791.78256 L 1294.798,797.20572 L 1325.8483,795.80565 L 1326.6459,804.41892 L 1331.5196,803.63912 L 1332.2994,809.50533 L 1333.3805,810.1611 L 1334.0717,806.68744 L 1352.7338,805.94308 L 1350.1994,732.41127 L 1349.012,732.05682 C 1348.3565,731.85475 1346.7313,731.04182 1345.3966,730.26684 L 1342.5964,728.79583 L 1344.2978,727.8211 L 1344.1914,726.77543 L 1342.5077,726.13741 L 1342.1356,727.16533 C 1339.527,726.44513 1338.1267,726.32621 1336.1275,726.36783 L 1335.2237,727.98058 L 1333.2565,726.6514 L 1331.307,728.9908 L 1329.2334,728.9908 L 1329.8005,736.93061 L 1323.7216,736.93061 L 1323.7216,735.22922 L 1314.0804,735.22922 L 1314.0804,734.37853 L 1307.1154,734.76843 L 1307.8066,731.31246 L 1306.7077,730.6213 L 1306.7077,726.72229 L 1304.2089,726.72229 L 1301.7277,726.72229 L 1301.32,704.32071 L 1335.206,702.83199 L 1334.3376,686.1017 L 1350.4653,685.19781 L 1350.0931,679.93417 L 1355.4808,680.00506 L 1355.4808,675.53892 z "},"nc1":{"name":"NC-1","path":"M 2306.8392,753.43048 L 2215.0884,776.25741 L 2212.8554,778.04744 L 2213.5111,784.44533 L 2207.2372,785.22513 L 2208.531,791.97754 L 2215.5138,790.98506 L 2216.2581,794.97266 L 2219.3419,788.45068 L 2224.5879,784.92387 L 2226.6614,787.58229 L 2225.8993,790.38249 L 2234.1581,790.02803 L 2235.7886,791.10909 L 2245.3766,791.35721 C 2245.5667,792.05569 2246.1182,792.69665 2247.5743,793.16493 L 2255.4255,791.37496 L 2256.7547,791.37496 L 2254.3976,811.64981 L 2251.8277,811.57892 L 2250.7644,812.71318 L 2253.8836,818.68572 L 2250.9239,822.56704 L 2254.6988,822.56704 L 2257.3041,821.07833 L 2260.8841,825.63305 L 2258.775,827.35219 L 2260.6182,833.9982 C 2259.4252,834.54894 2258.2515,835.06049 2257.4636,835.02612 L 2259.0055,838.358 L 2257.0028,839.42137 L 2254.1317,838.46434 L 2251.296,840.71516 L 2252.5012,845.74843 L 2250.2327,846.2978 L 2250.2681,848.22961 L 2253.7595,851.65008 C 2254.2483,849.81831 2254.4804,847.70133 2254.557,845.41166 L 2257.9067,844.18882 L 2257.7826,841.49496 L 2261.9829,839.5809 L 2263.5602,848.19417 L 2268.1859,847.39661 L 2268.7884,845.85476 L 2265.7933,842.70011 L 2266.4313,837.87951 C 2267.3613,837.97371 2268.5265,838.12088 2268.753,839.22644 L 2270.9152,839.22644 L 2271.7481,841.49496 L 2274.4243,841.49496 L 2275.1863,844.25971 L 2281.3893,844.25971 L 2289.7899,847.5207 C 2288.4823,848.53649 2287.8947,849.6404 2288.3012,851.34882 L 2286.7416,851.34882 L 2285.4833,854.78704 L 2286.7061,857.091 L 2286.7061,861.04315 L 2290.1798,861.80526 L 2292.1825,859.99753 L 2295.4966,860.01523 L 2301.5224,865.22572 L 2300.9198,866.80308 L 2302.6921,867.0512 L 2312.4042,863.31166 L 2312.7764,861.98248 L 2312.2447,860.52922 L 2313.9638,858.33159 L 2316.9057,858.29615 C 2316.3428,856.47226 2316.1343,854.5996 2316.3032,853.05021 L 2313.308,853.19199 L 2311.713,856.52387 L 2306.0594,855.88585 L 2306.662,858.22526 L 2303.6137,859.78486 L 2302.0186,851.8805 C 2301.1665,851.54272 2300.9089,850.46438 2300.973,849.02711 L 2303.7909,845.32308 C 2302.529,844.77835 2301.5624,844.45123 2297.8183,840.71516 L 2294.3624,840.69741 L 2285.4124,836.12493 L 2286.9543,833.30704 L 2283.8705,832.031 C 2284.257,830.27908 2283.8462,828.96612 2283.2325,827.75978 L 2280.5386,828.8586 L 2280.7513,831.92466 L 2277.9511,832.06645 L 2274.8142,827.91932 L 2274.8319,825.75714 L 2272.2621,822.03536 L 2269.0366,825.2609 L 2264.4286,821.87582 L 2265.297,821.07833 L 2266.8035,820.86565 L 2269.7809,816.94889 L 2269.2315,816.02731 L 2270.2594,814.09555 C 2272.1043,814.67737 2274.9341,816.88878 2277.5612,818.77437 L 2278.3055,823.13417 L 2280.5032,823.13417 L 2281.1589,819.85543 L 2283.7287,818.68572 L 2284.9693,819.92632 L 2287.1847,817.94137 L 2289.4709,819.16427 L 2288.8506,822.95694 L 2292.2356,824.35701 L 2292.1471,829.08902 C 2300.2575,831.48451 2306.3856,834.33734 2312.1383,837.27694 L 2321.6554,833.67919 L 2321.6554,830.50684 L 2320.344,826.8205 L 2307.4063,823.68355 L 2303.1883,823.7013 L 2301.3983,827.13951 L 2296.3119,823.54176 L 2298.7399,820.95424 L 2296.7372,817.56922 L 2294.5822,819.11634 C 2292.5526,818.04878 2290.6948,816.3622 2288.9747,815.67285 L 2288.9215,813.21282 L 2286.9638,812.59544 L 2288.2835,809.36355 L 2298.1558,811.94897 L 2304.3758,807.57357 L 2326.1518,802.51513 L 2324.3316,797.32981 L 2325.8203,792.29655 L 2323.9772,790.2584 L 2323.8354,788.87602 C 2323.751,788.10717 2323.5076,787.20305 2323.3037,786.87338 L 2322.9315,786.2708 L 2320.8934,786.2708 L 2318.4122,788.25575 C 2317.0426,789.34447 2315.6214,790.23764 2315.2576,790.2407 C 2314.8935,790.24371 2313.4595,790.73263 2312.0851,791.32176 L 2309.5863,792.38513 L 2307.6899,791.32176 L 2307.6899,789.49635 C 2307.6942,788.49809 2307.8454,787.14112 2308.0267,786.46572 L 2308.3634,785.22513 L 2311.1459,784.53397 L 2312.7764,786.16447 L 2314.0524,785.84546 C 2314.7597,785.66982 2316.0294,785.04858 2316.8703,784.46308 L 2318.4122,783.39971 L 2319.7414,779.71338 L 2321.1947,779.02216 C 2321.9983,778.64292 2322.954,778.331 2323.3214,778.331 C 2323.6889,778.331 2324.3154,777.94813 2324.7038,777.48031 L 2325.4127,776.62961 L 2328.0711,776.62961 L 2331.4562,773.31543 L 2335.3374,771.91536 L 2335.2488,770.44434 C 2335.204,769.6351 2334.9816,768.65437 2334.7349,768.26447 L 2334.2741,767.55556 L 2332.6436,767.55556 L 2330.4637,765.37563 L 2325.2178,764.57813 L 2327.0964,762.50454 L 2324.1366,761.76018 L 2324.1366,760.75001 L 2322.4352,760.75001 L 2322.4352,759.52711 L 2321.0174,760.0411 C 2319.0174,758.2327 2317.919,758.17286 2310.8091,756.15978 L 2306.8392,753.43048 z "},"nv1":{"name":"NV-1","path":"M 406.83586,863.67049 L 405.57933,864.03282 L 403.55167,859.71533 L 396.93481,859.37222 C 397.18101,858.59485 397.58089,857.88816 397.96761,857.17754 L 402.1879,855.97171 L 403.45775,853.18467 L 399.65136,847.88435 L 400.75266,848.34548 C 401.35836,848.5991 404.0867,849.08116 406.81561,849.41678 L 411.77725,850.02701 L 412.37256,851.90262 L 411.31334,854.39113 L 410.25411,856.87969 L 410.04841,858.25872 L 411.35633,860.76769 L 409.51015,862.28272 C 408.73035,862.84673 407.5269,863.47125 406.83586,863.67049 z "},"mo1":{"name":"MO-1","path":"M 1614.0915,740.80733 L 1613.9482,739.46936 L 1616.6416,735.70532 L 1613.5977,733.2834 L 1614.7918,730.06268 L 1619.1443,730.12642 L 1619.5178,728.13523 C 1619.7233,727.04005 1620.0726,726.03198 1620.2941,725.89508 L 1620.6969,725.64616 L 1626.2164,729.5703 L 1629.9711,728.86592 L 1629.9711,729.40827 C 1629.9711,729.70658 1629.5245,730.35696 1628.9786,730.85365 C 1628.4328,731.35029 1627.496,732.67204 1626.897,733.79092 L 1625.8078,735.82522 L 1627.0388,738.01541 C 1627.7158,739.21999 1628.2697,740.62233 1628.2697,741.13167 L 1628.2697,742.05773 L 1624.7456,741.6583 L 1624.7071,740.636 L 1620.8859,739.76761 L 1618.5752,742.30217 L 1614.0915,740.80733 z "},"va1":{"name":"VA-1","path":"M 2205.3232,632.57892 L 2203.4269,635.91081 L 2206.2448,638.94137 L 2209.2931,638.3388 C 2212.3697,640.09735 2213.434,642.11134 2213.0503,644.96711 L 2217.0202,647.82051 L 2221.6281,653.4918 L 2224.0562,651.89675 C 2225.6136,652.66453 2227.4168,652.80132 2228.3451,655.29952 L 2227.902,656.45147 L 2226.1475,655.22863 L 2223.6663,658.56051 C 2223.9007,659.95871 2224.3489,661.27257 2225.0663,662.61899 L 2227.069,663.25701 L 2231.0566,661.59107 L 2233.0061,664.5685 L 2230.3655,666.5889 L 2230.844,668.00672 L 2233.9809,667.33325 L 2237.4723,668.71563 L 2236.1077,671.30315 L 2239.4927,673.94387 L 2240.237,678.07325 L 2238.5711,679.49107 L 2242.1865,679.65061 L 2242.8778,678.51635 L 2250.853,678.51635 L 2253.4405,680.62533 L 2249.7896,686.56249 L 2251.3669,688.4588 L 2250.3036,688.4411 L 2251.296,689.48672 L 2252.2176,688.68922 L 2252.8202,691.04632 L 2255.0001,689.30949 L 2255.709,689.73484 L 2256.0812,692.09199 L 2257.9421,691.38308 L 2259.3422,693.27939 L 2260.7423,691.578 L 2262.8867,692.73001 L 2262.8867,694.27187 C 2265.738,696.20793 2264.9749,694.25854 2268.9657,696.85939 L 2269.9404,696.89484 L 2269.4087,695.24665 L 2271.057,695.24665 L 2271.1987,697.55061 L 2271.8545,698.08229 C 2272.0351,696.94741 2272.3793,695.98828 2273.1482,695.44157 L 2274.8142,696.82394 L 2274.5129,694.11239 L 2276.2143,694.11239 L 2276.5865,696.73536 L 2278.022,695.53021 C 2281.0598,699.29935 2280.5922,696.42469 2283.2502,699.62414 L 2281.4779,702.33575 L 2277.7739,702.33575 C 2276.8329,703.33929 2276.2247,704.78791 2275.7889,706.46513 L 2276.7814,708.6982 L 2278.6778,708.48553 L 2279.9538,715.8582 L 2283.2325,715.75186 L 2284.7389,715.87595 L 2286.7061,716.42533 L 2286.7061,715.00751 C 2288.1426,714.24432 2289.5767,713.49696 2291.2609,713.14665 L 2293.4762,715.34427 L 2294.0788,714.35179 L 2293.3877,712.82764 L 2296.0461,712.86308 L 2299.7501,716.74434 L 2299.7501,719.68632 L 2298.4209,721.01556 C 2300.1517,721.72095 2301.8003,722.89065 2303.6846,722.75239 C 2304.7567,720.69558 2305.6466,719.82918 2306.4671,719.36731 C 2306.7187,719.61878 2306.7288,719.77088 2306.9482,720.06255 L 2306.801,718.20305 L 2308.8677,715.2474 C 2308.4602,714.98443 2308.2147,714.85796 2307.7253,714.61761 L 2305.7758,713.66058 L 2305.2087,714.24546 C 2304.892,714.5622 2304.4303,714.81259 2304.1808,714.81259 L 2303.72,714.81259 L 2303.72,713.53655 C 2303.7152,712.83473 2303.4667,711.90265 2303.1883,711.46295 L 2302.6921,710.66546 L 2299.2007,712.10097 L 2297.4816,711.44526 L 2297.4816,709.67298 L 2298.4741,709.35397 C 2299.0199,709.17765 2300.2817,708.62833 2301.2743,708.13107 L 2303.082,707.22724 L 2300.7426,703.9485 L 2298.0487,702.72566 L 2298.0487,701.2015 L 2299.183,701.2015 L 2299.183,699.50011 L 2299.9982,699.50011 C 2300.4477,699.50011 2300.9752,699.75532 2301.1679,700.06724 L 2301.5224,700.63437 L 2303.5428,700.63437 L 2304.5707,701.76863 C 2305.1353,702.39247 2305.8931,702.90288 2306.2544,702.90288 L 2306.9101,702.90288 L 2307.1582,698.02909 L 2306.2366,695.79602 C 2305.7251,694.56184 2305.0332,693.23011 2304.7125,692.83635 L 2304.1453,692.10969 L 2302.6566,693.35028 L 2300.1223,692.97813 L 2299.7324,691.77298 L 2300.8667,690.44375 C 2301.4978,689.71606 2302.0186,689.01146 2302.0186,688.88414 C 2302.0186,688.75682 2300.8322,688.84325 2299.3779,689.06137 L 2296.7372,689.45127 L 2295.2663,687.46632 L 2293.4585,688.08665 C 2292.4593,688.43503 2291.1647,688.72467 2290.5875,688.72467 L 2289.5418,688.72467 L 2288.4075,687.59041 C 2287.7837,686.96657 2287.2733,686.25544 2287.2733,686.01305 C 2287.2733,685.77061 2286.5255,684.74977 2285.6073,683.74454 L 2283.9414,681.91912 L 2281.1589,681.91912 L 2280.5032,680.21774 L 2278.4296,680.21774 L 2274.1762,675.85793 L 2275.9661,674.36922 L 2279.1208,677.38209 L 2281.5311,677.38209 L 2281.8501,677.91378 C 2282.028,678.20165 2282.9705,678.60437 2283.9414,678.81761 L 2285.7137,679.20751 L 2287.4859,681.21021 C 2288.4609,682.31305 2289.395,683.73053 2289.5595,684.36486 L 2289.8608,685.51682 L 2290.552,685.74724 L 2291.2432,685.97761 L 2291.2432,684.18764 L 2292.0584,684.18764 C 2292.506,684.18764 2293.5907,684.47965 2294.4687,684.82566 C 2295.3468,685.17155 2296.8294,685.55776 2297.7651,685.69404 L 2299.4665,685.94216 L 2301.735,684.22308 L 2299.2539,684.18764 L 2298.5095,683.00018 L 2299.8742,681.36969 L 2297.9069,674.05021 L 2298.6158,672.20704 L 2299.6792,672.86276 L 2300.3172,671.83484 L 2299.6261,668.37892 L 2297.3576,667.47503 C 2296.1125,666.97693 2293.9154,666.42936 2292.4661,666.25219 L 2289.8253,665.93318 L 2286.7593,663.771 L 2284.4731,663.771 L 2283.2679,661.50249 L 2278.9081,659.28711 L 2278.2879,657.67437 L 2276.6928,657.95793 C 2275.8105,658.11718 2274.754,658.50924 2274.3534,658.82632 L 2273.6267,659.4112 L 2270.8797,657.94018 L 2267.3706,659.39345 L 2264.978,658.68454 C 2263.6686,658.2956 2262.029,657.75212 2261.3271,657.47939 L 2260.0511,656.98315 L 2260.0511,654.6615 L 2259.0586,654.30704 C 2258.5128,654.11348 2257.6195,653.57074 2257.0737,653.10189 L 2256.0812,652.2512 L 2256.0812,648.01543 L 2254.3798,647.35972 L 2254.3798,649.00791 L 2250.4099,650.67385 L 2250.4099,651.64863 L 2248.4073,652.60566 C 2247.3049,653.13127 2245.8453,653.56269 2245.164,653.56269 L 2243.9234,653.56269 L 2241.3181,650.53206 L 2240.0067,646.15457 L 2240.6801,641.77702 C 2241.0464,639.36978 2241.3379,637.06338 2241.3358,636.65516 L 2241.3358,635.91081 L 2239.9889,636.74375 L 2230.6136,637.06276 L 2228.2919,639.38447 L 2226.3069,639.41991 L 2220.5293,632.96883 L 2213.1389,636.7083 C 2213.1418,635.37067 2213.1881,633.895 2212.7845,633.69543 L 2210.6932,635.60949 L 2207.5208,632.57892 L 2205.3232,632.57892 z "},"co1":{"name":"CO-1","path":"M 915.16029,697.66052 L 914.17365,696.87283 L 914.45727,696.21825 C 915.08111,695.74691 916.52219,695.66995 916.40167,695.41401 C 915.75356,694.03736 916.55865,694.13502 916.94856,693.74512 L 917.65747,693.03621 L 917.65747,686.94439 L 924.55523,687.22592 L 925.22727,685.67975 L 926.3735,685.6261 L 926.34503,686.94967 L 930.01276,686.9436 L 930.09165,684.06746 L 932.62275,683.94593 L 933.42098,680.72322 L 935.06991,680.05253 C 936.59497,680.36995 937.2263,680.64898 938.73089,681.04903 L 939.54971,681.36543 L 938.42793,682.37214 C 938.14516,682.90354 938.45186,684.30327 938.26777,684.88866 L 936.47474,685.54784 L 931.99,684.73752 L 930.57371,686.44407 L 931.48826,686.79507 C 931.99125,686.98806 932.40281,687.37388 932.40281,687.65245 L 932.40281,688.1589 L 927.93962,688.1589 L 924.91144,689.31023 L 925.84862,692.52086 L 923.96292,694.08477 L 925.92864,694.16031 L 926.15254,695.32962 L 925.52496,696.17436 L 923.88465,697.46474 L 923.66166,695.74294 L 920.07326,694.39221 L 917.91301,695.21449 L 918.42059,696.83052 L 915.16029,697.66052 z "},"oh1":{"name":"OH-1","path":"M 1891.6786,676.97523 L 1889.6469,678.28706 L 1886.4891,676.81632 L 1883.8281,674.51781 L 1882.4404,674.51781 L 1880.1527,676.95748 L 1877.005,655.6415 L 1885.9153,653.96575 L 1885.1071,655.27343 L 1886.8596,655.94593 L 1886.3029,656.98622 C 1885.9967,657.55839 1885.7461,658.4261 1885.7461,658.91451 L 1885.7461,659.80246 L 1887.4989,659.80246 L 1886.9005,663.80378 L 1894.9941,663.25554 L 1894.8202,665.91793 L 1897.5111,666.59332 L 1898.3083,669.97936 L 1896.661,672.42749 C 1895.8046,673.69145 1895.5895,674.15717 1895.1228,675.31287 C 1894.9428,675.75846 1894.819,676.25243 1893.9612,676.27659 C 1893.4622,676.29009 1892.3507,676.48461 1891.6786,676.97523 z "},"ne1":{"name":"NE-1","path":"M 1292.5295,505.54207 L 1292.5295,510.06137 L 1290.6332,512.27672 L 1287.4254,511.6387 L 1287.4254,513.97811 L 1283.1719,514.33256 L 1282.8529,531.02741 L 1277.093,531.78949 L 1277.9614,548.059 L 1256.0738,548.07672 L 1256.8004,569.43266 L 1283.2782,568.91873 L 1284.0226,591.019 C 1282.4038,591.0575 1280.7391,590.87324 1279.1666,591.30256 L 1280.0527,634.12078 L 1301.4264,633.55365 L 1302.9151,676.93899 L 1376.4291,673.80209 L 1375.8266,672.82731 L 1374.7455,673.48308 L 1372.4947,672.77417 L 1372.4947,670.00942 L 1373.3454,670.00942 L 1373.3454,667.17378 L 1371.8921,667.17378 L 1371.5199,666.1813 C 1371.3163,665.63544 1370.671,664.84849 1370.0844,664.42672 L 1369.021,663.66467 L 1369.3755,660.22645 L 1365.4588,658.95041 C 1365.2692,657.97722 1365.0581,657.07026 1364.4131,656.36288 C 1364.1791,656.38126 1363.7963,656.37967 1363.5624,656.34513 C 1363.3285,656.3106 1362.5628,656.3237 1361.861,656.38058 L 1360.585,656.48692 L 1360.585,654.2184 L 1361.7724,653.8285 L 1359.9293,649.41556 L 1360.5141,647.20018 L 1358.3873,646.65081 L 1358.0329,643.63793 L 1360.1951,641.83021 L 1359.2558,640.32375 L 1358.3519,642.78724 L 1354.9137,642.78724 L 1354.5061,635.99939 L 1353.7794,635.1487 C 1353.3866,634.67537 1352.7751,634.28031 1352.4148,634.28031 L 1351.759,634.28031 L 1348.6753,630.75345 L 1348.6753,628.07734 L 1350.7843,626.96078 L 1349.893,621.44296 L 1352.0192,620.69338 L 1351.7465,618.79237 L 1350.3287,617.53584 L 1351.0963,614.68324 L 1349.0591,613.40374 L 1348.6753,610.39001 L 1347.6473,611.02803 L 1345.8396,610.33682 L 1345.8396,608.75952 L 1342.5609,608.75952 L 1341.9406,607.16447 L 1338.4315,606.40236 L 1336.7124,603.7617 L 1327.4788,602.94645 L 1324.6566,599.60635 L 1326.0433,597.41695 L 1323.1545,594.74078 L 1323.1545,592.82672 C 1322.1154,591.89657 1320.6889,591.07389 1320.0893,589.85667 L 1344.7555,588.17728 L 1344.9954,585.04645 L 1340.7709,584.33754 L 1340.0443,583.15009 L 1341.3026,581.87405 L 1341.2317,579.55239 L 1340.2038,582.10447 L 1339.4772,582.08672 C 1339.0772,582.07679 1338.3039,581.73896 1337.758,581.32467 L 1336.6648,579.95817 L 1337.37,577.67559 L 1335.525,576.2914 L 1336.1984,572.87088 L 1334.9401,571.34672 L 1335.5959,569.62764 L 1337.5454,569.62764 L 1335.4364,568.08573 C 1336.0756,566.66012 1336.8329,565.27903 1337.3327,563.79682 L 1335.0642,562.9284 L 1335.0642,561.01434 L 1333.8945,559.54335 L 1332.7248,558.05464 L 1333.0792,556.60137 C 1333.2676,555.80807 1333.555,554.7192 1333.7172,554.17335 L 1334.0008,553.18088 L 1331.6987,552.97942 L 1331.4972,551.47681 L 1329.9863,551.28365 L 1329.2334,549.21098 L 1327.2485,549.21098 L 1326.6104,546.76524 L 1327.7447,544.65623 L 1326.7699,544.28405 C 1326.2344,544.07856 1325.2826,543.39928 1324.6609,542.77761 L 1323.5267,541.64335 L 1323.1013,537.30127 L 1324.2887,537.30127 L 1324.2887,535.77712 L 1322.0202,533.72128 L 1322.6051,533.13642 L 1320.0707,530.44256 L 1319.7872,525.7283 L 1321.6835,523.6193 L 1320.4429,521.70524 L 1315.835,522.57365 L 1314.6121,520.28741 L 1310.2346,520.9786 L 1309.4194,518.30246 L 1305.9988,515.13009 L 1306.6369,511.21335 L 1301.6036,511.21335 L 1301.6036,509.0689 L 1296.8893,507.19029 C 1296.4259,507.75054 1295.8989,508.11438 1295.2411,508.37771 L 1293.6992,505.54207 L 1292.5295,505.54207 z "},"ca1":{"name":"CA-1","path":"M 57.394124,414.74831 L 55.480064,421.55385 L 51.829173,427.10108 L 52.821649,428.32395 C 53.366943,428.99735 54.07472,429.54681 54.381253,429.54682 C 54.687786,429.54682 55.059679,429.87083 55.214223,430.27346 C 55.368709,430.67609 55.527505,434.75943 55.568678,439.34751 L 55.639569,447.69494 L 54.593926,447.69494 L 55.143332,449.7685 L 52.591253,455.56385 C 51.190785,458.746 49.225514,462.61022 48.231451,464.1594 C 47.237331,465.70858 46.246842,466.9773 46.033827,466.97732 L 45.661649,466.97732 L 45.519867,468.71415 C 45.447104,469.66918 45.349304,470.6262 45.289471,470.84088 C 45.229582,471.05556 45.49823,471.81406 45.892045,472.52454 L 46.600956,473.81831 L 44.810956,477.34514 C 43.824946,479.28598 42.485331,481.63758 41.83353,482.57336 C 41.181786,483.50912 38.489541,486.69921 35.860956,489.66246 C 33.232371,492.62571 30.023869,496.45382 28.718679,498.16939 C 27.413546,499.88496 25.804829,502.35951 25.138679,503.66345 L 23.915808,506.03831 L 24.57155,513.8186 L 22.78155,517.29227 L 28.842738,526.80939 L 32.617689,530.44256 L 32.422738,535.03276 L 33.344322,535.03276 L 34.868481,538.57731 C 35.70681,540.52682 36.646059,542.57272 36.942045,543.11434 C 37.23803,543.65597 37.473728,544.74062 37.473728,545.52464 L 37.473728,546.94246 L 39.901748,549.37048 L 38.732045,555.73296 L 39.884025,557.91286 L 39.0865,567.64269 L 37.792738,569.34407 C 37.080481,570.27984 35.895891,572.1939 35.152045,573.59754 L 33.805114,576.14962 L 33.805114,582.6716 C 33.809311,586.25869 34.044924,591.69365 34.319075,594.74078 L 34.815312,600.27028 L 33.025312,602.50335 C 32.042081,603.72682 31.235313,604.98085 31.235313,605.30355 C 31.235313,605.62619 31.746863,606.72801 32.36957,607.74929 C 32.99222,608.77058 33.502636,609.92996 33.503827,610.31912 C 33.504962,610.70823 34.368586,612.23953 35.417887,613.7219 L 37.314223,616.41576 L 38.040857,619.41088 L 39.954916,618.98553 C 41.011987,618.74711 42.118371,618.39112 42.418382,618.20573 L 42.967787,617.86902 L 47.221253,619.05642 L 48.692243,617.03603 L 53.246995,619.09187 L 53.796401,621.18315 L 57.039668,621.94526 L 62.303334,627.03167 L 64.500954,626.32276 L 66.379574,628.41405 C 67.337204,633.4307 68.369144,636.58943 70.144244,641.45744 L 72.245804,639.33127 L 76.676504,643.63793 L 81.674324,651.63088 L 82.879474,660.03147 L 83.978284,660.72269 L 84.704914,666.02177 C 84.115274,666.58572 83.730144,667.25397 83.464324,667.95358 C 85.822184,668.76605 88.269134,669.30794 90.677494,669.95622 L 90.181254,667.86494 L 91.953524,666.09266 L 91.336654,663.10497 L 92.485214,662.56585 L 92.485214,660.2087 L 99.142124,661.18064 L 99.290754,659.76566 C 99.290754,658.74063 98.996894,657.08013 98.635014,656.07932 L 97.979274,654.25385 L 100.30095,649.57503 L 99.911054,643.17714 L 99.326204,640.32375 L 98.191944,639.63259 L 97.305804,633.979 L 96.401944,628.32546 L 95.639864,627.33298 L 92.396594,626.37595 L 90.890164,622.01615 L 92.999174,620.68692 L 95.037294,621.41358 L 92.343434,618.4716 L 93.052344,615.63595 L 90.181254,612.51675 L 91.475014,606.65048 L 92.024424,605.97702 L 91.262344,602.5211 L 88.798874,602.48566 L 86.601254,600.81972 L 84.509964,600.81972 L 83.925114,599.26011 C 83.600144,598.40233 82.879584,597.19009 82.312344,596.56625 C 81.745154,595.94241 81.109544,594.89736 80.912244,594.24454 L 80.557784,593.05714 L 82.932634,589.0518 C 83.393434,588.50594 84.087484,587.03849 84.456794,585.79081 C 84.826114,584.54312 85.359604,582.37386 85.661944,580.97021 C 85.964224,579.56657 86.292304,577.87658 86.299964,577.67378 L 79.494424,576.06098 L 81.142634,568.20982 L 79.813434,564.22217 L 80.167884,558.5686 L 81.302144,555.41395 C 81.709044,555.07043 82.680594,554.56217 83.411154,554.35058 L 83.411154,551.05415 L 55.178777,544.35494 L 66.928974,498.38207 C 67.217304,493.19072 67.435774,490.22816 66.237784,485.03682 L 70.438084,485.409 L 72.192634,487.30534 L 74.833334,485.55078 L 77.704424,481.9885 L 75.595414,478.78068 L 78.306994,476.05138 L 78.909564,472.84355 L 80.132444,473.21573 L 79.299474,470.66365 L 79.069074,459.74643 L 72.936994,458.11593 L 72.812934,456.59177 L 74.780164,454.18147 L 74.230754,448.54563 L 72.919274,446.95058 L 73.256004,444.96563 L 72.068574,444.22128 L 76.304324,437.84108 L 76.605604,429.54682 L 78.572834,429.77722 L 80.221054,426.83524 L 82.046504,427.79227 L 82.276894,426.71118 L 84.261844,426.67573 L 86.317684,423.84009 L 85.963234,421.92603 L 57.394124,414.74831 z "},"ut1":{"name":"UT-1","path":"M 514.62391,508.32454 C 508.67395,557.9951 498.61184,609.18248 492.0451,658.75543 C 518.91589,662.54357 543.23912,665.78096 570.98235,669.35365 L 573.32176,665.11793 L 575.50163,663.59378 C 576.69504,662.75244 578.91949,660.66779 580.44631,658.9681 L 583.21107,655.88434 L 585.26691,656.98315 L 586.45431,654.76784 L 586.45431,651.29417 L 587.58856,651.29417 L 587.58856,650.6916 C 587.58856,650.35739 587.20575,649.70615 586.73787,649.23833 L 585.88718,648.38764 L 585.88718,645.05576 L 584.84156,645.05576 L 583.93767,643.26573 C 583.44699,642.28204 583.05153,640.92513 583.05153,640.25286 L 583.05153,639.03001 L 584.66433,636.83239 L 584.04401,633.71318 L 585.42639,632.04724 L 584.32757,622.91999 L 585.16057,622.40605 L 584.77067,613.86368 L 586.36572,613.86368 C 587.31487,608.16863 587.305,605.16568 587.305,599.54368 C 587.81479,598.60389 588.12172,598.50436 589.28995,598.28533 L 591.57622,599.72091 L 593.95107,598.44487 L 602.22757,599.7918 L 602.98968,597.36375 C 602.31162,596.32318 601.57101,595.31278 601.19965,594.12051 L 601.19965,593.60652 L 612.82579,592.27734 L 614.16926,594.0085 L 614.20817,598.44487 L 615.41332,598.85246 L 615.76777,605.07318 L 617.06156,608.22784 L 619.63133,609.18487 L 620.32255,607.90883 C 620.70298,607.2032 621.40475,606.47915 621.88216,606.29603 L 622.75054,605.95932 L 622.75054,604.41741 L 625.30262,604.61239 L 625.58619,608.22784 C 629.81804,610.71504 631.92691,612.65609 635.33371,614.41306 C 635.54661,614.41997 635.88008,613.92033 636.07807,613.29655 L 636.43252,612.16229 L 638.96691,612.16229 L 640.11886,613.31424 L 643.89384,612.55219 L 645.71925,608.21009 L 647.70421,608.19239 L 648.62579,604.77187 L 652.15265,606.01246 L 656.86691,604.27563 L 658.97589,605.58711 L 661.15582,603.61992 L 664.11549,604.75417 L 672.94143,603.65536 L 674.11114,602.07801 L 678.45324,601.49318 L 684.53785,603.627 L 690.16797,603.54902 L 691.47945,593.53563 L 642.88361,588.05932 L 649.68916,525.71058 C 604.85162,520.49239 559.2975,514.81798 514.62391,508.32454 z "},"wv1":{"name":"WV-1","path":"M 2061.969,547.89421 C 2061.4316,548.15076 2060.8199,548.71572 2060.5281,549.37048 L 2058.7204,548.67929 L 2056.8595,551.53266 L 2058.2596,553.07454 C 2059.0276,553.91839 2060.0743,555.29378 2060.599,556.14058 L 2061.556,557.68246 L 2061.556,562.85751 L 2063.2574,566.93375 L 2063.2574,571.18724 L 2061.6624,572.51642 L 2061.2902,574.89127 C 2060.6467,581.23841 2060.9965,587.6473 2060.8649,594.01417 L 2058.6495,594.01417 L 2060.3863,596.49536 L 2059.0394,598.10811 L 2059.3584,601.759 L 2057.5507,603.26546 L 2061.2016,606.77457 L 2059.2875,607.85563 L 2059.2875,612.76487 L 2056.4342,613.93457 L 2050.7452,622.06929 L 2049.4869,626.25187 L 2047.3601,626.8013 L 2045.6587,630.87754 L 2043.7447,630.87754 L 2039.5621,634.97147 L 2037.3467,634.26256 L 2036.053,631.44467 L 2034.3693,631.44467 L 2030.8248,636.12348 L 2031.4805,640.51873 L 2025.8269,641.77702 L 2025.8269,644.59496 L 2023.6293,647.37741 L 2024.3914,649.20288 C 2024.809,650.20234 2025.1783,651.20201 2025.2067,651.43595 C 2025.235,651.66989 2025.2598,652.06711 2025.2598,652.32209 L 2025.2598,652.78288 L 2032.9338,655.28177 L 2037.7544,648.6712 L 2044.7686,642.67518 L 2043.851,646.19001 L 2045.4815,646.19001 L 2047.8032,648.74209 L 2048.5653,651.96764 C 2049.81,651.02377 2052.5225,650.56921 2055.2113,650.10672 L 2055.9556,651.29417 L 2058.3659,651.29417 L 2061.556,654.34249 L 2061.556,655.65397 C 2061.556,656.37094 2061.8612,658.06977 2062.2295,659.44665 L 2062.903,661.96328 L 2060.7419,665.70162 L 2065.2778,668.29028 L 2076.7622,655.42355 L 2078.6231,654.78553 L 2079.8459,653.56269 L 2073.1822,648.65345 L 2072.2252,643.49615 C 2074.244,640.72074 2075.6132,639.23702 2078.2863,637.11595 L 2079.9877,637.38177 C 2084.6241,637.91617 2089.2999,638.02353 2093.9533,638.3388 L 2095.3711,637.1514 L 2099.536,638.30335 L 2100.7943,640.64276 L 2104.2502,639.9516 L 2105.7921,641.22764 L 2105.7921,643.69107 L 2104.4275,645.05576 L 2105.3313,645.05576 C 2107.8234,644.46713 2110.1189,643.32108 2112.4558,642.291 L 2112.9521,635.37912 L 2115.5042,632.86249 L 2116.603,634.20942 C 2117.2078,634.94572 2117.7018,635.88642 2117.7018,636.30071 L 2117.7018,637.04506 L 2120.1121,637.36407 C 2121.4377,637.54255 2124.6916,637.74734 2127.343,637.80711 C 2129.9943,637.86683 2133.5482,637.74751 2135.2473,637.5413 L 2138.3488,637.16909 L 2138.9337,637.64764 C 2142.5869,639.88541 2146.4172,641.83957 2150.1699,643.90375 L 2150.613,643.62018 C 2150.86,643.46751 2151.2444,642.26809 2151.4637,640.94407 C 2151.683,639.62 2152.1026,638.05943 2152.403,637.4881 L 2152.9524,636.46018 L 2151.57,634.3689 C 2150.8101,633.22052 2150.0209,631.75517 2149.8154,631.10791 L 2149.4433,629.92051 L 2151.6409,616.98289 L 2153.1828,614.14724 C 2154.0378,612.58764 2155.1798,610.80118 2155.7172,610.17734 L 2156.6919,609.04308 L 2157.3831,606.77457 C 2157.7587,605.52689 2159.0574,602.52819 2160.2719,600.11081 L 2162.4873,595.71556 L 2155.7172,593.51794 C 2154.8555,597.18539 2151.8075,600.05852 2151.0383,603.81484 C 2150.6651,604.36456 2150.3203,604.71033 2149.5673,604.8782 L 2147.671,604.34652 L 2145.7747,603.83259 L 2144.3214,604.32883 L 2143.4707,606.38467 C 2142.9984,607.51484 2142.4268,608.57486 2142.1947,608.74177 C 2140.4961,610.66167 2139.0733,612.81404 2137.5513,614.87385 L 2137.5513,616.68157 L 2134.7156,617.39048 L 2134.7156,617.90447 C 2134.7156,618.18253 2134.3178,618.84732 2133.8295,619.39318 C 2133.3412,619.93904 2132.3789,621.27889 2131.6851,622.37061 L 2130.409,624.35556 L 2128.8671,625.29484 L 2122.0616,593.34071 L 2073.6075,603.67306 L 2061.969,547.89421 z "},"md1":{"name":"MD-1","path":"M 2291.8103,552.63147 C 2285.2483,554.08872 2278.7822,555.96485 2272.2444,557.52296 L 2274.9382,559.43702 C 2276.4198,560.48717 2277.6321,561.54226 2277.6321,561.79415 L 2277.6321,562.25494 L 2276.8523,562.25494 C 2276.428,562.25494 2275.1365,562.90643 2273.9812,563.69048 L 2271.8899,565.1083 L 2270.0467,564.08038 L 2267.477,565.25009 L 2268.4871,567.16415 L 2264.021,568.59972 L 2260.0688,569.82256 L 2261.3626,571.38217 L 2256.9851,575.86605 L 2255.0178,575.86605 L 2254.3089,574.7318 L 2252.1113,574.7318 L 2251.243,575.49907 C 2254.0282,576.77374 2254.8065,578.06561 2256.9176,578.84541 L 2258.1015,578.86991 L 2257.499,578.13457 C 2256.9327,577.5088 2256.5734,576.89942 2256.7015,576.78764 C 2256.8296,576.67586 2257.4746,576.29877 2258.137,575.95464 L 2259.3422,575.33437 L 2261.3626,577.56744 L 2260.0511,577.56744 L 2260.0511,578.7017 L 2260.9018,578.7017 C 2261.3739,578.7017 2262.2669,578.38654 2262.869,578.01048 L 2263.9501,577.33702 L 2265.0312,578.29405 C 2265.619,578.82607 2266.2896,579.26883 2266.5199,579.26883 C 2266.7502,579.26883 2267.7786,578.37327 2268.8061,577.28388 L 2270.6671,575.31662 L 2269.196,574.07603 L 2269.9936,572.85318 L 2273.2723,571.91385 L 2278.1992,566.7388 L 2278.1992,564.64751 L 2280.0424,563.9386 L 2281.7792,565.37415 L 2282.9667,565.1792 C 2283.6205,565.07225 2284.5849,564.60299 2285.1111,564.13355 L 2286.0681,563.28286 L 2286.6884,563.65504 L 2287.3087,564.04494 L 2286.5467,569.68078 L 2288.6025,571.16949 L 2286.1568,574.60771 L 2288.5139,575.22804 L 2287.7695,576.43318 L 2286.3517,576.43318 C 2285.5698,576.43318 2284.4384,576.69508 2283.835,577.01801 L 2282.7362,577.60289 L 2282.7362,579.83596 L 2280.9108,579.83596 L 2281.5665,582.45893 L 2280.0601,584.65655 L 2279.2449,592.31279 L 2280.4855,592.31279 L 2282.3641,596.24724 L 2283.9414,594.01417 L 2286.139,594.01417 L 2286.139,596.28269 L 2285.0048,596.28269 L 2285.0048,596.86751 C 2285.0048,597.19248 2285.4973,598.00687 2286.1036,598.65754 L 2287.2024,599.82724 L 2286.3871,600.64249 C 2285.9369,601.09273 2285.5719,601.69973 2285.5719,601.98942 L 2285.5719,602.5211 L 2281.1057,602.5211 L 2279.4221,600.14625 L 2278.6423,606.47325 L 2279.3867,610.46091 L 2280.4323,610.46091 L 2279.3689,607.66071 L 2280.4677,606.98724 L 2281.602,607.69615 L 2281.3184,605.07318 L 2283.3034,605.23266 L 2283.3034,604.22249 L 2285.8554,604.24018 L 2287.9467,610.95714 L 2287.2024,612.16229 L 2285.0756,612.16229 L 2284.3667,611.02803 L 2283.6578,611.73695 C 2283.273,612.12917 2282.9196,612.95627 2282.8603,613.58011 C 2282.8009,614.20396 2282.6762,615.47228 2282.5945,616.39801 L 2282.4527,618.0817 L 2285.2883,618.11714 L 2286.6707,616.41576 L 2289.6304,620.11979 L 2290.6583,619.48177 L 2292.9446,620.70467 L 2292.9446,622.93774 L 2291.2077,622.93774 L 2290.5343,624.69226 L 2287.5037,624.63912 L 2287.5746,625.91516 C 2287.6135,626.61698 2287.8355,627.62205 2288.0708,628.14823 L 2288.4962,629.10526 L 2290.1089,628.48494 L 2290.1089,631.33833 L 2286.7061,632.52573 L 2286.7061,633.00427 C 2286.7061,633.27122 2287.5994,634.35642 2288.6911,635.41457 L 2290.676,637.34632 L 2290.676,638.85279 L 2293.6889,639.98704 L 2293.0332,640.66051 C 2292.6705,641.02319 2292.3774,641.50978 2292.3774,641.75932 L 2292.3774,642.22011 L 2295.0713,642.22011 L 2296.5246,643.97464 L 2296.8613,643.4784 C 2297.0448,643.19977 2297.9107,642.78622 2298.7754,642.57457 L 2300.335,642.20236 L 2301.0084,643.9215 L 2301.611,643.9215 C 2301.943,643.9215 2302.6864,644.34248 2303.2592,644.86078 L 2304.2871,645.80011 L 2303.5782,641.93655 L 2302.7984,641.31622 C 2302.3691,640.96988 2302.0186,640.39566 2302.0186,640.04018 L 2302.0186,639.38447 L 2303.1529,639.38447 L 2303.1529,635.41457 L 2303.8086,635.41457 C 2304.174,635.41457 2304.9396,635.83759 2305.51,636.35385 L 2306.5556,637.29318 L 2306.5556,638.97682 L 2304.8011,640.27061 L 2307.6899,642.98216 L 2307.6899,641.08586 L 2309.9939,641.08586 L 2310.5964,642.66315 L 2312.5814,642.14922 L 2314.0701,643.9215 L 2312.6523,645.62288 L 2311.6952,645.62288 C 2311.172,645.62288 2310.5005,645.87832 2310.1888,646.19001 L 2309.6217,646.75714 L 2310.0825,650.70929 L 2311.9434,648.51167 L 2316.1968,647.76731 L 2316.1968,648.2813 C 2316.1968,648.56832 2315.8218,649.30622 2315.3639,649.9118 C 2314.9059,650.51726 2314.5231,651.4545 2314.5132,652.00308 L 2314.4954,653.01325 L 2316.7285,651.61318 L 2318.0046,652.88922 L 2315.8069,655.08685 L 2315.098,658.66685 L 2316.3741,661.50249 L 2318.4653,661.50249 L 2318.4653,659.34031 L 2322.2935,655.3881 L 2324.1898,654.96276 C 2325.2309,654.73409 2326.4764,654.31918 2326.9546,654.04117 C 2332.7647,651.33671 2338.8936,649.35306 2344.8014,646.88117 L 2345.1736,645.44566 C 2345.3851,644.65474 2345.7458,640.47114 2345.9711,636.15892 L 2346.3787,628.32546 L 2347.4952,626.94308 L 2346.7332,620.27932 L 2316.3386,627.54566 L 2291.8103,552.63147 z M 2268.558,593.92553 L 2269.196,595.57378 L 2266.5731,598.53345 L 2261.9829,597.59417 C 2261.6932,598.37341 2261.4643,599.16801 2261.2385,599.96902 L 2264.0564,603.19457 L 2269.2492,601.42229 L 2270.224,601.93622 C 2270.7613,602.22381 2271.5319,602.85872 2271.9431,603.35405 L 2272.7051,604.25794 L 2273.2723,604.06296 C 2273.5887,603.95747 2274.2231,603.32166 2274.6724,602.64513 L 2275.4877,601.42229 L 2272.4925,600.05761 L 2273.0242,598.63979 L 2271.7481,595.21932 L 2270.862,594.90031 C 2270.3767,594.72359 2269.6571,594.42636 2269.2669,594.24454 L 2268.558,593.92553 z M 2282.8071,596.56625 L 2282.7717,597.75365 C 2282.7519,598.40352 2282.9004,599.1054 2283.1084,599.31325 C 2283.3163,599.52122 2283.5827,599.60107 2283.6933,599.49048 C 2283.804,599.37978 2283.6553,598.6779 2283.3566,597.93088 L 2282.8071,596.56625 z M 2303.1529,647.60784 L 2303.1174,648.17496 C 2303.0941,648.48688 2303.1915,649.38011 2303.3478,650.15991 L 2303.6314,651.57774 L 2306.3784,651.73721 L 2304.9606,647.60784 L 2303.1529,647.60784 z M 2306.4848,652.32209 L 2305.8822,652.92467 L 2306.2544,653.52724 C 2306.4599,653.85986 2306.8647,654.12982 2307.1582,654.12982 C 2307.4518,654.12982 2307.6899,653.89162 2307.6899,653.59813 C 2307.6899,653.30464 2307.4199,652.89983 2307.0873,652.69424 L 2306.4848,652.32209 z M 2308.5583,656.50467 L 2307.6899,657.03635 L 2307.6899,658.38328 C 2307.6899,659.1244 2307.9352,660.38326 2308.2393,661.18348 L 2308.7887,662.63675 L 2309.9584,662.63675 L 2310.242,657.81615 L 2308.5583,656.50467 z "},"districtofcolumbia":{"name":"District-of-Columbia","path":"M 2249.2048,621.02249 L 2247.9999,617.47583 L 2243.5169,615.46287 L 2246.2857,611.4316 L 2252.5698,615.28286 C 2251.4688,617.07828 2250.6715,619.49317 2249.2048,621.02249 z "},"wy":{"name":"WY At-Large","path":"M 643.94925,587.01115 C 654.33076,505.04416 662.63931,422.82879 672.40924,340.79256 C 779.40952,352.72127 870.42291,360.08969 977.77311,364.99228 C 974.70261,447.58428 971.13141,530.16504 967.38221,612.73078 C 859.26419,608.72356 751.53492,598.03421 643.94925,587.01115 z "},"in1":{"name":"IN-1","path":"M 1741.0927,611.0294 C 1735.8861,573.88978 1735.4527,571.69017 1731.3917,536.55531 L 1732.7632,537.17059 C 1733.465,537.35148 1734.3171,537.87369 1734.6567,538.33107 L 1735.2743,539.16265 L 1743.6804,539.68396 C 1747.1139,537.95117 1750.4815,536.07899 1753.974,534.467 C 1754.2732,539.71326 1754.6679,543.52755 1755.4444,548.20102 L 1759.8436,547.49756 C 1760.5941,559.22835 1760.6763,557.95361 1763.8135,580.66277 L 1761.4,580.97157 L 1762.1064,585.38939 C 1760.4069,586.19097 1758.7074,585.84695 1757.0079,586.07573 L 1759.994,608.68126 L 1741.0927,611.0294 z "},"ia1":{"name":"IA-1","path":"M 1554.2594,469.15722 L 1514.7199,472.79039 L 1515.5174,483.35316 L 1473.1069,486.98633 C 1473.2251,493.98425 1473.6222,501.05096 1474.6487,507.97009 L 1496.1287,506.51682 L 1496.1287,511.69187 L 1497.263,512.06405 L 1498.0073,522.55593 L 1551.5301,517.93029 L 1553.4974,539.74702 L 1574.6761,537.95702 L 1576.7851,559.50791 L 1582.2351,559.48174 C 1582.2315,563.53966 1582.3579,565.27106 1582.9703,567.92625 L 1583.3602,567.92625 C 1583.575,567.92449 1584.6691,567.66997 1585.7883,567.35912 L 1587.8264,566.79197 L 1591.8849,562.25494 L 1596.3687,562.25494 L 1599.3462,558.35593 L 1601.4729,557.68246 L 1601.4374,555.28989 C 1601.4207,553.97265 1601.5752,551.62126 1601.7742,550.06167 L 1602.1287,547.22603 L 1607.3746,543.20296 L 1607.8531,530.3185 L 1606.6834,528.9184 L 1606.3289,525.00167 L 1603.7946,522.46731 L 1596.2269,519.68484 L 1593.0014,516.17573 L 1593.6926,512.70207 C 1592.3389,511.15846 1591.4108,509.72758 1589.4849,508.37771 C 1589.1457,508.37771 1587.365,507.97059 1586.8162,507.47385 C 1586.2673,506.97711 1584.9626,506.14769 1583.9273,505.63068 L 1581.3034,503.01431 L 1582.2617,501.05871 C 1580.8333,498.98284 1579.5839,496.77527 1578.0611,494.76662 L 1567.8705,493.01207 L 1561.9334,489.9992 L 1559.08,480.6593 L 1556.8115,479.95039 L 1556.8293,477.03273 L 1554.2594,469.15722 z "},"nj1":{"name":"NJ-1","path":"M 2334.4786,549.18483 L 2326.6887,545.29748 L 2322.8093,545.24245 L 2322.9824,544.14547 C 2323.3053,543.54214 2323.5695,542.65547 2323.5695,542.17509 L 2323.5695,541.30168 L 2319.9635,539.43694 L 2316.9905,543.07958 C 2316.451,542.33319 2315.8509,541.72009 2315.0663,541.27255 L 2311.9434,545.2347 L 2310.5012,545.24245 L 2309.2304,542.45327 L 2311.1427,539.53474 L 2317.3311,536.79794 L 2317.3311,535.57319 L 2320.2926,534.44724 L 2319.6189,529.64641 C 2320.623,528.57198 2321.4925,527.30952 2322.7515,526.5272 L 2326.6887,529.54595 L 2323.639,528.79155 L 2322.8943,529.99658 L 2325.9664,534.42972 C 2327.1073,533.81946 2328.2518,533.18767 2329.4902,532.86558 L 2332.8217,539.00009 L 2338.2821,542.50403 C 2337.033,544.72185 2336.1993,547.28609 2334.4786,549.18483 z "},"il1":{"name":"IL-1","path":"M 1719.8436,547.79504 C 1719.7102,547.79504 1719.5774,547.19045 1719.5774,546.79871 L 1719.0566,546.2285 L 1716.1747,544.58025 L 1716.1747,543.17268 C 1716.1747,542.39851 1716.4306,541.28701 1716.7433,540.70266 L 1717.3119,539.64022 L 1722.3104,538.89064 L 1722.9255,536.53868 L 1722.6358,536.06997 C 1722.4765,535.81218 1721.9784,535.60126 1721.5289,535.60126 L 1720.7117,535.60126 L 1720.7117,534.5932 C 1720.7117,534.03875 1721.0926,533.04132 1721.5581,532.37666 L 1722.4046,531.1682 L 1725.4118,532.18039 L 1726.0818,529.4163 L 1727.374,531.25187 L 1726.329,535.03656 L 1723.4281,537.9375 L 1724.017,540.98898 L 1719.8436,547.79504 z "},"pa1":{"name":"PA-1","path":"M 2316.4102,519.91545 L 2316.3032,520.39375 L 2317.8982,522.05969 L 2317.8982,527.69553 L 2316.0374,530.53118 L 2313.7688,528.20949 L 2312.4928,530.14128 L 2314.4954,531.70088 L 2314.4954,534.94415 L 2308.257,538.94949 L 2308.257,539.55207 C 2308.257,539.87849 2308.4923,540.13691 2308.7887,540.13692 C 2309.0852,540.13692 2309.5318,539.79962 2309.7812,539.37484 L 2310.242,538.59504 L 2315.8247,536.14929 L 2317.402,533.8985 L 2319.1566,533.8985 L 2318.7312,532.3389 C 2318.4979,531.48112 2318.3198,530.36729 2318.3413,529.85771 L 2318.3768,528.93613 L 2319.7059,527.5183 C 2320.4299,526.74014 2321.5278,525.36571 2322.1517,524.46999 L 2323.0024,523.45979 L 2323.1265,522.46731 L 2322.1517,521.72296 C 2322.1517,521.72296 2322.0434,522.39021 2321.9745,522.87494 L 2320.6098,520.85454 L 2319.5287,522.09514 L 2319.5287,523.60157 L 2318.6958,523.60157 L 2318.6958,522.1483 L 2316.4102,519.91545 z "},"sd":{"name":"SD At-Large","path":"M 1316.539,521.42304 L 1315.1049,519.02394 L 1311.1928,519.65878 L 1310.7122,518.41418 C 1310.4478,517.72965 1309.5489,516.58198 1308.7147,515.86379 L 1307.1978,514.558 L 1307.9633,511.07304 L 1306.4242,510.09784 L 1302.7378,510.08047 L 1302.7378,508.40743 L 1297.5229,506.03174 L 1295.7882,506.6974 L 1294.5145,505.1623 L 1289.8126,503.8321 L 1288.0802,504.49688 L 1286.9021,503.31878 L 1283.9945,502.14067 L 1283.8268,499.63605 L 1277.4885,499.19963 L 1272.3965,499.52543 L 1257.3499,499.90259 L 1255.0562,498.67506 L 1252.8331,499.38062 L 1252.1173,502.42423 L 1249.2155,505.54344 L 1245.711,505.54344 L 1241.2044,501.04372 L 1240.2099,501.02506 C 1239.6629,501.0148 1238.263,500.49599 1237.099,499.87215 C 1235.9351,499.24831 1234.5324,498.7379 1233.9819,498.7379 L 1232.981,498.7379 L 1232.981,497.63687 L 1226.7248,494.67719 L 1225.1016,491.53832 C 1134.1392,491.9561 1059.274,490.76414 973.94561,487.96245 C 978.98701,366.17459 979.98561,366.54126 982.39611,306.25514 C 1089.0576,309.71988 1198.3449,311.4341 1305.0064,307.45908 L 1305.0064,313.02351 L 1303.5885,315.11002 C 1302.8087,316.25761 1302.1707,317.4523 1302.1707,317.76489 C 1302.1707,318.07748 1301.2148,319.04806 1300.0464,319.92171 C 1298.878,320.79537 1296.8363,322.56668 1295.5093,323.85797 L 1293.0967,326.20575 L 1293.0967,328.33651 L 1297.4604,333.61718 L 1298.2132,335.50348 C 1298.6272,336.54095 1299.4492,338.0916 1300.0398,338.94938 L 1301.1137,340.50899 L 1304.4769,340.50899 L 1309.8851,343.24952 L 1311.3792,346.46384 C 1312.8369,383.5922 1314.2947,420.72055 1315.7525,457.8489 L 1309.4077,458.18819 L 1309.0363,462.37688 L 1312.931,465.7965 L 1312.2452,470.80025 L 1310.5272,470.66503 C 1310.3171,471.62643 1310.2436,472.5299 1310.555,473.46826 C 1310.7619,473.79801 1310.938,474.43157 1310.9462,474.87617 L 1310.9612,475.68455 L 1314.2668,476.57163 L 1315.2147,475.98581 L 1315.2613,476.44462 C 1315.287,476.69697 1315.431,477.6627 1315.5814,478.59069 C 1315.7317,479.51868 1316.0945,480.56678 1316.3875,480.9198 L 1316.9202,481.56165 L 1316.233,484.99756 L 1313.4021,486.28743 L 1313.7917,487.26672 C 1314.0061,487.80533 1314.2225,489.2249 1314.2727,490.42131 L 1314.364,492.59659 L 1312.9462,493.77262 L 1312.9462,498.77349 L 1311.3471,499.3871 L 1310.9844,500.83239 C 1310.7849,501.6273 1310.2514,502.6479 1309.7989,503.10038 L 1308.9763,503.92307 C 1308.9163,505.19096 1309.08,506.43188 1309.3337,507.67017 L 1314.6724,512.41698 L 1315.7818,515.26565 L 1315.7818,517.45314 L 1316.6892,517.45314 L 1316.6892,519.43809 C 1316.6892,520.52982 1316.6216,521.42304 1316.539,521.42304 z "},"wi1":{"name":"WI-1","path":"M 1660.7851,494.09888 L 1656.7189,490.37376 L 1655.5734,486.22537 L 1653.034,483.85727 L 1655.0261,479.61293 L 1654.5614,473.37444 L 1675.5614,471.2033 L 1674.9051,465.4553 L 1690.645,463.41088 L 1691.5583,461.97205 L 1694.7796,461.81989 L 1695.9033,457.97024 L 1697.4421,457.05925 L 1698.6336,459.60602 L 1699.2409,459.60602 C 1699.575,459.60602 1700.3623,460.25955 1700.9906,461.05831 L 1702.133,462.51061 L 1703.7618,461.8856 L 1710.2198,470.21362 L 1709.2662,480.87334 L 1710.9022,487.89119 L 1660.7851,494.09888 z "},"ny1":{"name":"NY-1","path":"M 2401.7316,459.53252 L 2400.7793,460.24536 L 2397.5643,456.5351 L 2399.877,453.61727 L 2396.6745,451.59712 L 2390.3855,452.90272 L 2388.725,450.53196 L 2386.7476,450.53196 L 2386.0671,449.8514 C 2385.6928,449.4771 2385.3865,448.97306 2385.3865,448.73132 L 2385.3865,448.2918 L 2388.6745,448.94939 L 2392.1921,446.34875 L 2392.1921,443.79335 L 2392.8668,443.37636 C 2393.2379,443.14701 2394.3225,442.89592 2395.2771,442.81838 C 2396.2317,442.74083 2398.2887,442.28432 2399.8483,441.80391 C 2401.4079,441.32349 2403.96,440.49386 2405.5196,439.96027 C 2407.0792,439.42668 2409.1209,438.43043 2410.0566,437.74639 C 2410.9924,437.06234 2412.4818,436.33117 2413.3665,436.12157 L 2414.9749,435.74049 L 2416.3491,434.20394 C 2417.1048,433.35885 2418.3589,432.01978 2419.1359,431.22823 C 2419.9128,430.43668 2420.5485,429.47796 2420.5485,429.09774 L 2420.5485,428.40643 L 2421.9663,427.17365 C 2422.7461,426.49562 2423.3842,425.65287 2423.3842,425.30085 C 2423.3842,424.94884 2423.7878,424.16543 2424.2811,423.55996 L 2425.1782,422.45909 L 2424.5949,424.33747 L 2425.5938,425.24144 C 2426.1432,425.73863 2426.8603,426.14542 2427.1875,426.14542 C 2427.5146,426.14542 2428.0674,426.48899 2428.4159,426.90892 L 2429.0496,427.67242 L 2433.2633,427.4166 L 2433.4751,426.78101 C 2433.5917,426.43144 2433.9871,426.14542 2434.354,426.14542 L 2435.021,426.14542 L 2436.4377,428.41394 L 2437.8933,428.41394 L 2440.3399,425.92108 C 2441.6855,424.55 2443.0785,422.8475 2443.4354,422.13773 L 2444.0844,420.84724 L 2446.6364,420.66369 L 2446.6364,421.13979 C 2446.6364,421.40165 2445.9538,422.18842 2445.1194,422.88818 C 2444.2851,423.58794 2442.1796,425.41861 2440.4406,426.95633 C 2438.7016,428.49406 2434.4554,432.3813 2431.0046,435.59466 L 2424.7303,441.43712 L 2416.2593,447.74709 C 2411.6001,451.21757 2406.6397,455.12864 2405.236,456.43836 C 2403.8324,457.74808 2402.2554,459.14045 2401.7316,459.53252 z "},"mn1":{"name":"MN-1","path":"M 1492.017,388.89078 L 1492.6728,394.38484 L 1487.161,394.38484 L 1488.1003,405.10712 L 1433.1774,409.13019 L 1433.1774,406.45405 L 1422.402,407.02118 L 1422.402,404.78811 L 1425.7162,400.35742 L 1423.873,397.23821 L 1425.2376,395.85583 L 1425.0238,393.48251 L 1387.5794,395.69633 L 1385.5556,393.74644 L 1384.2449,394.24535 L 1385.0601,406.86167 C 1381.4388,407.09207 1376.8196,406.75229 1374.1961,407.55286 L 1374.1961,412.44435 C 1354.4057,413.52067 1334.9716,414.24064 1314.8248,415.03187 L 1316.9693,457.90326 C 1397.7558,454.27231 1468.2237,449.90473 1550.0414,442.59078 L 1548.7831,440.23365 L 1549.4743,438.44365 L 1547.0108,435.82068 L 1546.8691,425.29336 L 1546.0006,423.73375 C 1545.5296,422.87496 1543.4995,420.15691 1541.4813,417.69029 L 1537.8127,413.20643 C 1535.8119,412.91227 1533.8139,412.60095 1531.8224,412.2494 C 1531.2343,412.13615 1530.3353,411.70164 1529.8374,411.29237 C 1529.3396,410.8831 1528.4885,410.15358 1527.9411,409.66187 C 1527.3938,409.17016 1526.5314,408.60389 1526.0093,408.40356 L 1525.0523,408.03138 L 1525.0523,406.82623 L 1517.1479,402.60821 L 1515.996,398.12435 L 1514.2237,397.13187 L 1514.8617,395.16464 L 1513.5679,394.01266 C 1512.8632,393.38477 1510.751,392.23647 1508.8714,391.44286 C 1506.9918,390.64925 1504.3743,389.80431 1503.0584,389.58197 L 1500.6658,389.19207 L 1500.0277,388.14643 L 1492.017,388.89078 z "},"ny26":{"name":"NY-26","path":"M 2148.125,356.96875 L 2140.6563,360.03125 L 2132.7188,360.21875 L 2128.1875,361.09375 C 2125.6921,361.5818 2122.6298,362.36216 2121.375,362.8125 C 2120.1202,363.26282 2117.4775,363.80172 2115.5,364.03125 L 2111.9063,364.46875 C 2112.1993,366.68727 2112.5613,367.87727 2113.25,369.9375 L 2109.625,371.8125 L 2104.9375,371.125 L 2103.6875,372 L 2102.9375,377.59375 L 2101.625,378.40625 L 2103.6875,383.03125 L 2107.3438,383.71875 L 2108.625,386.46875 L 2110.0625,387.03125 L 2113,386.28125 L 2113.25,386.21875 L 2113.3125,386.46875 L 2115.125,393.1875 L 2119.6563,391.78125 L 2118.8438,388.75 L 2118.7813,388.5 L 2119.0313,388.4375 L 2123.9375,387.15625 L 2124.1875,387.09375 L 2124.25,387.34375 L 2125.1563,390.6875 L 2125.2188,390.90625 L 2125,391 L 2124.1563,391.25 L 2124.9375,395.875 L 2125.875,395.6875 L 2126.125,395.65625 L 2126.1563,395.875 L 2129.5938,410.90625 L 2130.625,411.3125 L 2157.5313,405.03125 L 2158.8438,407.53125 L 2163.1563,406.71875 L 2162.4375,402.8125 L 2164.7813,402.1875 L 2164.7813,398.9375 L 2171.9688,397.71875 L 2170.8438,392.71875 L 2165.9375,393.40625 L 2164.6563,390.125 L 2164.5313,387.3125 C 2164.461,385.75289 2164.1968,383.88932 2163.9688,383.1875 L 2163.5625,381.90625 L 2164.7813,381.90625 L 2164.7813,379.59375 L 2163.0313,376.96875 L 2156.4375,378.6875 L 2155.5313,372.28125 L 2150.75,372.28125 L 2150.0313,367.25 L 2152.2813,366.53125 L 2152.2813,363.1875 L 2154,363.1875 L 2155.125,362.0625 C 2155.7488,361.43866 2156.2811,360.68853 2156.2813,360.40625 L 2156.2813,359.90625 L 2151.25,356.96875 L 2148.125,356.96875 z "},"ct1":{"name":"CT-1","path":"M 2390.5737,405.03631 L 2389.6019,400.9082 L 2387.0754,400.5441 L 2385.3754,397.25673 C 2386.5663,396.61875 2387.7612,395.96301 2389.0535,395.62043 L 2391.1086,399.53224 L 2397.2912,398.11431 L 2395.6511,392.50299 L 2393.4467,391.55057 L 2392.6359,381.30497 L 2385.5777,383.18303 L 2385.5076,384.85804 L 2384.2523,384.87963 L 2384.2523,388.71493 L 2385.3865,388.71493 L 2385.3865,390.88963 L 2380.1603,392.88556 L 2378.2974,391.70282 L 2377.0484,393.04452 C 2376.3615,393.78245 2375.5667,394.38621 2375.2821,394.38621 L 2374.7647,394.38621 L 2373.9261,379.6657 L 2386.7184,376.16512 L 2387.6798,377.8831 L 2393.467,377.1977 L 2394.471,378.99159 L 2398.0889,377.95397 L 2398.8471,379.1807 L 2400.5804,378.28438 L 2402.9307,376.63396 L 2402.7787,380.20199 L 2404.6689,382.04827 L 2404.6689,384.60141 L 2406.5093,384.54227 L 2408.4027,388.72515 L 2406.3703,388.78999 L 2406.3703,393.69773 L 2404.5665,394.3899 L 2403.6632,393.83157 L 2402.3217,395.44797 L 2403.6317,397.89588 L 2407.5046,396.53338 L 2407.5046,399.18897 L 2407.5046,401.84456 L 2402.4373,401.53294 C 2402.123,401.95704 2401.7182,402.13078 2401.2626,402.32602 L 2399.5197,399.33802 L 2394.177,404.8781 L 2390.5737,405.03631 z "},"ma1":{"name":"MA-1","path":"M 2357.5996,382.372 L 2356.9131,381.26129 L 2355.8958,338.9949 L 2430.9105,319.32679 L 2432.3971,321.35981 L 2430.6264,324.06226 L 2428.0441,324.06226 L 2427.3408,326.86448 L 2428.3564,331.38438 L 2427.2276,331.76064 L 2429.2218,338.86803 L 2428.7133,339.36481 L 2425.0961,340.6293 L 2424.7592,339.57667 L 2422.6448,334.27057 L 2421.8293,334.27057 L 2421.0139,334.27057 L 2419.9494,335.54661 C 2419.3639,336.24843 2418.8764,337.05551 2418.866,337.34013 L 2415.3541,343.30105 L 2418.2596,348.16523 L 2413.4594,350.47238 L 2413.5938,351.58731 C 2413.6677,352.20053 2413.8922,353.70403 2414.0928,354.92842 L 2414.4574,357.15459 L 2412.9401,355.63733 C 2412.1057,354.80284 2411.2229,354.12008 2410.9784,354.12008 L 2404.3853,358.45423 L 2404.5429,360.35849 L 2404.108,360.35849 C 2403.8687,360.35849 2403.3229,359.83339 2402.8949,359.19159 L 2402.1168,358.0247 L 2396.6086,360.46486 L 2395.4492,359.30544 L 2395.2586,357.1381 C 2395.1538,355.94607 2394.8389,353.8908 2394.5588,352.57084 L 2394.0495,350.17091 L 2392.6203,348.44879 L 2390.9129,348.44879 L 2391.6606,353.12486 L 2388.5322,352.52683 L 2384.2433,354.71483 L 2386.5438,359.22424 L 2387.066,359.22424 C 2387.3532,359.22424 2387.7444,358.9714 2387.9354,358.66238 L 2388.2826,358.10051 L 2392.7344,358.27495 L 2392.0654,360.94035 L 2393.3459,362.48324 L 2392.6343,364.33758 L 2394.5138,368.29829 L 2395.0543,368.29829 C 2395.3516,368.29829 2395.5948,368.5197 2395.5948,368.79031 L 2395.5948,369.28232 L 2391.1162,369.02961 L 2390.4917,370.65694 L 2391.2113,373.5242 L 2389.6499,374.48921 L 2389.64,376.42401 L 2388.2222,376.89975 C 2387.8264,375.56932 2387.2738,374.78937 2385.8386,375.05344 L 2357.5996,382.372 z "},"vt":{"name":"VT At-Large","path":"M 2354.8405,337.78477 L 2343.1354,290.32349 C 2342.5532,288.50185 2340.9561,288.86184 2339.9549,288.5741 L 2338.5162,285.36426 L 2334.9121,287.22802 L 2334.796,290.3181 L 2333.7841,286.3482 L 2334.4841,278.06244 L 2332.1989,275.57275 L 2331.3869,271.60285 L 2329.4205,269.33434 L 2327.4339,262.81236 L 2325.838,262.81236 L 2325.838,253.86855 L 2327.7205,248.03973 L 2325.0466,242.33095 L 2325.3475,237.43854 L 2324.5146,235.52189 C 2324.0566,234.46772 2323.0082,232.90341 2322.1849,232.04562 C 2321.3616,231.18784 2320.4741,230.48602 2320.2126,230.48602 C 2319.9511,230.48602 2319.4432,229.77626 2319.0839,228.90878 C 2318.7246,228.04129 2318.2944,226.31864 2318.128,225.08066 C 2317.9616,223.84268 2317.7684,221.34047 2317.6986,219.52021 L 2317.5717,216.21064 L 2314.779,214.10195 L 2315.1697,207.76527 C 2314.5071,206.79339 2313.8696,205.8076 2313.3612,204.75109 L 2389.9882,181.47666 L 2388.8198,183.04001 L 2390.4907,183.98147 L 2390.4907,184.83986 C 2390.4907,185.31197 2390.7975,186.18945 2391.1724,186.78981 L 2391.8541,187.88137 L 2390.4875,190.50345 L 2390.8569,194.82994 L 2390.1067,196.27607 C 2389.694,197.07145 2389.3564,197.91098 2389.3564,198.1417 L 2395.5948,205.78487 L 2395.5948,207.80087 L 2395.364,210.06939 L 2395.3113,212.94664 L 2393.8353,213.85858 L 2393.6558,215.22497 C 2393.5571,215.97649 2393.3,217.00586 2393.0845,217.51246 L 2392.6926,218.43355 L 2388.7927,220.53384 L 2388.079,224.33816 L 2387.1581,224.62961 C 2386.6516,224.7899 2385.5424,225.18041 2384.6931,225.4974 C 2383.8439,225.8144 2382.5678,226.62189 2381.8575,227.29184 L 2380.5659,228.50993 L 2379.3148,232.00678 L 2380.8495,234.10558 L 2380.8495,236.91869 L 2382.7041,238.96803 L 2382.8576,240.36591 C 2382.942,241.13474 2383.1801,242.03725 2383.3866,242.37148 L 2383.7622,242.97917 L 2382.5064,249.02846 L 2383.4708,253.45473 L 2381.978,256.29038 L 2382.6634,263.66305 L 2380.0082,267.0262 L 2379.9008,275.80016 L 2378.7758,277.27414 L 2378.9308,281.43317 L 2380.1301,282.94543 L 2380.9069,290.85377 L 2381.3035,291.15307 C 2381.5217,291.31767 2381.8089,291.83517 2381.9416,292.30305 L 2382.5208,302.6176 L 2384.3658,306.1977 L 2384.6836,311.82373 L 2385.8899,312.22584 L 2385.5537,313.18167 C 2385.3688,313.70738 2384.7368,314.67323 2384.1493,315.32799 L 2383.081,316.51849 L 2384.1382,319.29907 L 2383.5373,322.4427 L 2384.3122,323.96139 C 2384.7384,324.79667 2385.7287,326.1109 2386.5128,326.8819 L 2387.9386,328.28372 L 2389.3564,327.98244 C 2389.4262,328.39994 2389.3022,328.80161 2389.2147,329.1685 L 2354.8405,337.78477 z "},"nh1":{"name":"NH-1","path":"M 2424.0222,217.72425 L 2423.6855,218.66356 L 2424.288,221.05613 L 2415.4798,223.2892 L 2415.1076,235.00396 L 2412.1834,229.17316 L 2410.7655,229.13772 L 2409.5427,226.90465 C 2408.9513,227.38808 2408.9453,227.87615 2409.2059,228.4997 L 2412.6087,231.72524 L 2412.5201,233.51524 L 2414.3455,234.73811 L 2414.3278,238.70801 L 2416.5786,244.04257 C 2414.2461,245.8853 2411.3202,246.84811 2408.7097,248.24287 C 2410.8067,252.54681 2412.4541,255.27087 2413.8847,259.40821 L 2408.7275,261.69445 C 2409.2457,263.44337 2409.2591,265.77011 2409.1528,267.56069 L 2406.9374,268.18098 L 2406.9374,269.74059 L 2409.7376,267.91514 L 2415.976,267.91514 L 2416.7204,273.55098 L 2434.1774,279.54128 L 2432.3342,292.79791 L 2426.7869,292.9397 L 2425.4932,295.95257 L 2425.6704,297.15772 L 2420.0877,299.31989 L 2423.0651,305.38108 L 2424.5539,304.79623 L 2427.8503,312.71831 L 2428.9314,312.71831 C 2429.5208,312.71831 2430.1537,312.55938 2430.3492,312.36385 L 2430.7037,312.0094 L 2429.02,308.74841 L 2430.615,305.70009 L 2432.4937,309.31554 L 2435.7724,309.31554 L 2435.9496,308.8193 C 2436.0536,308.54576 2437.9389,307.42002 2440.1322,306.32039 L 2444.1198,304.31772 L 2446.7605,305.73554 L 2450.0924,305.66465 L 2450.5709,302.06692 C 2452.5253,301.15669 2454.1774,300.67298 2454.0623,298.82366 L 2458.8297,298.82366 L 2459.1133,292.01811 L 2459.6804,290.36989 C 2459.9916,289.46556 2460.2475,288.12572 2460.2475,287.39247 L 2460.2475,286.06326 L 2457.6954,286.04554 L 2453.1584,283.47574 L 2452.2368,277.64494 C 2449.3313,276.48122 2448.2546,275.39099 2446.1402,273.46237 L 2443.8894,273.58643 L 2441.5677,269.81148 L 2442.0108,267.45435 L 2440.6461,260.95009 L 2439.636,260.02851 C 2439.2209,259.53684 2437.5636,255.55174 2435.9496,251.18485 C 2434.3356,246.81795 2430.999,237.50287 2428.5238,230.48465 L 2424.0222,217.72425 z "},"me1":{"name":"ME-1","path":"M 2458.2626,284.92861 L 2454.2927,282.94543 L 2453.3518,276.96763 L 2451.1048,275.82131 C 2449.869,275.19084 2448.3581,274.17517 2447.7472,273.56427 L 2446.6364,272.45354 L 2444.4984,272.45354 L 2442.5645,269.50212 L 2443.1692,267.1896 L 2441.4153,260.26028 L 2440.6949,259.40958 C 2438.5772,255.05522 2437.1094,251.45887 2435.804,247.32107 L 2438.9769,244.78371 L 2442.5718,243.46067 L 2443.2355,241.73112 L 2442.216,239.90939 C 2442.9609,237.30515 2443.2185,235.02578 2443.1512,232.25912 L 2439.0725,229.14811 L 2435.2939,228.78463 L 2434.6539,227.02743 L 2436.811,227.70103 L 2443.3262,219.83425 L 2445.0832,220.9514 L 2445.4613,225.53098 L 2447.3794,227.65038 L 2449.9628,227.65038 L 2450.7088,225.29983 L 2455.7871,227.02604 L 2458.5461,225.97706 L 2458.5461,223.74741 L 2459.5185,223.14645 L 2462.5769,224.98149 C 2464.259,225.99076 2466.5809,227.10436 2467.7366,227.45615 L 2469.838,228.09578 L 2472.0835,225.50934 L 2472.0828,222.99173 C 2471.5426,219.86554 2470.9621,216.74598 2470.4566,213.61394 L 2473.7943,213.47216 L 2475.56,210.95127 L 2475.56,208.84788 L 2472.0404,205.32828 L 2470.1723,206.51156 L 2470.537,209.50226 L 2465.9643,209.50226 L 2464.6551,205.13249 L 2465.287,203.95189 L 2465.9188,202.77128 L 2465.9105,201.17439 C 2465.906,200.2961 2465.5219,198.48542 2465.0569,197.15064 C 2464.592,195.81587 2463.541,193.71041 2462.7213,192.47183 C 2461.9017,191.23326 2460.9936,190.21988 2460.7034,190.21988 L 2460.1757,190.21988 L 2460.5311,186.53355 L 2464.1473,186.18335 L 2464.501,183.73581 L 2467.6842,181.99652 L 2469.217,184.05521 L 2471.3065,183.6979 L 2471.6789,186.95647 L 2482.082,186.15611 L 2484.5147,183.89593 L 2483.9373,179.59149 L 2485.2012,178.81037 L 2485.2012,176.09803 L 2483.2162,174.9419 L 2485.636,174.90741 L 2485.978,176.18345 C 2486.1661,176.88527 2486.3234,178.03371 2486.3277,178.73553 L 2486.3354,180.01157 L 2488.604,180.01157 L 2488.604,180.79137 C 2488.604,181.22026 2488.7635,182.3687 2488.9584,183.34345 L 2489.3129,185.11572 L 2486.9026,185.11572 L 2486.9026,193.62266 L 2491.3727,193.62266 L 2492.0763,192.48424 L 2494.8064,193.16946 L 2496.7379,189.11902 L 2504.8922,193.3919 L 2507.9572,192.37025 L 2508.737,193.14988 L 2508.8263,202.16217 L 2510.1548,203.49069 L 2510.1548,202.12959 L 2511.8562,202.12959 L 2511.8562,202.69671 C 2511.8562,203.00864 2511.601,203.26384 2511.2891,203.26384 L 2510.722,203.26384 L 2510.722,205.46542 L 2510.2136,205.77962 C 2509.9339,205.95243 2509.1544,207.15063 2508.4811,208.44228 L 2507.257,210.79073 L 2507.8155,212.24604 L 2505.842,214.52148 L 2504.7671,213.03818 L 2501.1797,212.38605 L 2499.8636,213.97187 L 2498.1307,213.30688 L 2497.1282,214.88998 L 2497.0213,223.39691 L 2496.4492,221.97909 L 2494.8424,221.97909 L 2494.8424,222.54622 C 2494.8424,222.85814 2494.3377,223.61797 2493.721,224.23474 L 2492.5996,225.35614 L 2490.6926,224.62437 L 2491.4479,228.40082 L 2489.1947,226.36172 L 2488.9467,227.14783 L 2487.9532,231.30032 L 2484.6341,235.81363 L 2484.6341,233.88879 L 2483.6321,233.88879 L 2483.0167,231.53542 L 2480.6642,232.79444 L 2480.6642,232.40303 C 2480.6642,232.18775 2480.1537,232.47353 2479.5299,233.0381 C 2478.9061,233.60267 2478.3956,234.38054 2478.3956,234.76671 L 2478.3956,235.46882 C 2477.719,235.82485 2477.03,235.93372 2476.3137,235.96575 C 2476.1936,235.8457 2476.3728,235.01786 2476.7118,234.12609 L 2477.3283,232.50469 L 2476.5508,231.9207 C 2476.1232,231.59951 2475.5995,230.87393 2475.3871,230.30829 L 2475.0009,229.27987 L 2474.4298,229.63285 C 2474.1156,229.82699 2473.8586,230.37006 2473.8586,230.83967 L 2473.8586,231.69351 L 2470.4558,234.55675 L 2470.4558,236.03595 L 2468.7825,236.67808 L 2469.1711,241.26147 L 2468.1873,241.26147 L 2468.1873,243.53748 L 2471.023,246.00304 L 2471.023,247.94566 L 2472.9202,248.67371 L 2470.3825,250.45122 L 2469.8131,249.88182 L 2465.9188,253.77611 L 2465.9188,256.57394 L 2467.9168,258.57192 L 2467.7099,259.69966 C 2467.5961,260.31992 2467.1216,261.25794 2466.6554,261.78415 L 2465.8077,262.74088 L 2466.4896,263.84426 L 2465.7974,265.648 L 2465.1158,265.648 C 2464.7409,265.648 2463.9715,265.98631 2463.406,266.3998 L 2462.3779,267.15161 L 2461.4138,273.25034 L 2463.1572,275.17671 L 2462.5227,277.5329 C 2462.1738,278.8288 2461.9313,280.32155 2461.9839,280.85013 C 2462.0365,281.3787 2462.0501,282.51299 2462.0142,283.37077 L 2461.9489,284.93038 L 2458.2626,284.92861 z "},"or1":{"name":"OR-1","path":"M 131.59937,161.01138 L 132.46778,164.98128 L 132.41461,175.1896 L 131.04996,177.67079 L 128.60422,178.02524 L 128.42699,184.38772 L 126.74333,188.42851 C 141.07495,192.22942 134.74054,192.07781 151.90956,195.2092 L 151.25392,199.8596 L 145.60769,198.5201 C 145.87238,200.06789 146.34435,202.0688 147.5467,203.13495 C 148.85109,203.51245 150.53804,205.86656 152.03372,207.23237 L 148.89679,207.51594 L 148.96768,209.55405 L 146.92956,208.9692 L 146.52194,210.31613 L 145.65352,209.50089 L 143.65085,211.78712 L 139.43283,228.21613 L 125.66224,224.99059 L 123.81907,232.84178 C 135.91787,236.3009 142.58561,237.84661 153.66422,240.60435 C 154.80596,240.11238 156.09548,239.40524 157.26194,238.97386 L 155.79095,236.49267 L 157.97085,236.47495 L 157.42144,234.17098 L 156.64164,232.18603 L 157.66956,232.18603 L 158.99877,232.82405 L 158.9456,229.91752 L 160.3457,229.91752 C 160.92077,229.91944 162.11754,230.32368 163.02184,230.76821 L 165.37897,231.93792 L 165.3258,230.00613 C 166.28214,229.13755 167.11956,227.95719 167.31075,226.51475 C 168.12138,226.89729 168.69033,227.48061 169.18936,228.25158 L 171.26293,228.21613 L 172.45035,223.39554 C 173.45204,221.73271 175.2222,220.69774 176.61521,219.37247 L 176.65065,217.38752 L 172.80481,216.55455 L 170.81986,212.33653 L 170.32362,212.33653 L 169.82738,212.33653 L 167.91333,208.31346 L 169.20709,203.15613 L 176.43798,204.55623 L 176.42026,201.20663 C 176.41175,199.37168 176.48471,196.72774 176.57976,195.32267 C 176.67481,193.9176 176.93895,192.46222 177.16461,192.09712 L 177.57224,191.44138 L 177.04055,190.11217 C 176.74627,189.38698 176.3106,188.03507 176.08352,187.0993 C 175.85639,186.16354 175.72873,184.94571 175.79996,184.38772 L 175.92402,183.37752 L 167.77154,173.77178 L 163.99659,173.77178 L 161.30273,174.99465 L 156.69481,173.75406 L 154.76303,170.81208 L 155.43649,167.19663 L 153.84144,164.99901 L 149.25125,166.22188 L 148.09927,165.0699 L 147.47897,166.68267 L 145.0864,166.48772 C 143.76402,166.37985 141.4815,166.20295 140.01768,166.09782 L 137.35927,165.90287 L 137.97956,167.53336 L 136.2959,167.53336 L 134.32867,165.12307 C 133.24778,163.7974 132.19667,162.32996 131.98927,161.86208 L 131.59937,161.01138 z "},"wa1":{"name":"WA-1","path":"M 216.11926,74.843266 L 216.11926,78.458711 L 211.29867,80.674058 L 207.32877,84.697127 L 206.25427,84.560914 L 205.13128,87.673537 L 201.40936,87.461879 L 198.85728,88.879701 C 197.46033,89.66049 195.31363,91.151545 194.07214,92.193859 L 191.80362,94.090196 L 198.05976,95.508018 L 199.26491,94.852275 C 199.92992,94.496362 200.90703,93.686814 201.42709,93.044552 L 202.36639,91.874849 L 206.67303,93.186335 L 207.96679,91.43178 L 210.73154,91.821681 C 211.73407,93.278572 212.51334,94.994568 213.93936,96.075146 L 214.41788,96.075146 L 214.48877,95.082671 C 214.52898,94.53681 214.6325,93.45217 214.71917,92.672374 C 214.80582,91.892572 215.06482,90.680329 215.28629,89.978513 L 215.6762,88.702473 L 214.41788,88.702473 C 214.40141,87.554111 214.35547,86.384635 214.666,85.299701 L 217.96243,86.469404 L 217.30669,83.172968 L 218.03332,82.446335 L 217.74976,76.509206 L 216.11926,74.843266 z M 227.37322,77.643464 L 226.55798,78.742275 C 226.11522,79.347753 225.75767,80.113383 225.76045,80.443662 C 225.76329,80.773946 224.96248,81.719537 223.97045,82.534949 L 222.16273,84.005939 L 222.00322,86.079503 L 221.84372,88.135345 L 222.19818,88.135345 C 222.3944,88.135345 222.99431,87.729921 223.54511,87.231483 L 224.5553,86.327622 L 225.08699,86.646632 C 225.3811,86.828408 226.05501,88.280297 226.5757,89.872176 L 227.51501,92.778711 L 225.78653,94.568711 L 229.09233,93.806632 L 229.44679,94.37376 C 229.64029,94.686827 230.11935,94.940883 230.51016,94.940889 L 231.21907,94.940889 L 233.7357,91.538117 L 234.39144,91.538117 C 234.75191,91.538117 235.63671,90.975735 236.35867,90.297523 L 237.67016,89.074651 L 237.67016,87.142869 L 240.20451,85.459206 L 238.82214,83.793265 L 235.54342,84.27178 L 231.39249,78.82152 L 230.67516,80.482396 L 227.37322,77.643464 z "},"pa8":{"name":"PA-8","path":"M 2304.2871,491.93098 C 2299.8714,497.91221 2298.5125,499.9537 2295.3194,506.00286 L 2321.5137,517.13276 L 2320.9288,518.42652 L 2320.6275,518.32019 L 2320.2731,519.01137 L 2321.3187,519.43672 L 2321.9922,518.78098 L 2321.0529,518.46197 L 2321.6023,517.16821 L 2325.0405,518.67464 L 2324.5088,519.70256 C 2324.0165,520.6893 2323.7918,521.41494 2324.0126,521.31533 C 2324.2334,521.21574 2325.3811,520.50008 2326.5647,519.72029 L 2328.7269,518.30246 L 2329.3826,515.18326 L 2331.3144,515.18326 L 2333.955,512.38306 L 2332.874,511.97543 C 2332.2814,511.7539 2331.4561,511.10628 2331.0485,510.53989 L 2330.3042,509.51197 L 2328.1065,509.51197 L 2323.7113,505.54207 L 2321.9745,505.54207 L 2318.5894,501.32405 L 2315.0803,501.58989 L 2312.9536,499.46316 L 2312.156,494.19949 L 2308.895,492.49811 L 2308.1861,493.63237 L 2305.4214,493.63237 L 2305.4214,491.93098 L 2304.2871,491.93098 z "},"ny12":{"name":"NY-12","path":"M 2357.617,473.83418 L 2360.3418,474.88217 L 2360.5813,473.23533 L 2361.8389,472.12746 L 2359.8327,470.57046 L 2359.2938,469.76201 L 2359.1141,469.37277 L 2361.0903,467.6361 L 2364.1444,470.57046 L 2364.8331,468.59426 L 2363.3061,466.79772 L 2363.8151,466.4983 L 2363.0366,465.62997 L 2360.5214,467.66605 L 2359.5034,467.66605 L 2357.7667,471.94781 L 2357.617,473.83418 z "},"ny11":{"name":"NY-11","path":"M 2362.0785,472.15741 L 2360.7909,473.3551 L 2360.4915,474.82228 L 2360.8208,475.87026 L 2361.2101,476.40923 L 2361.8389,475.72055 L 2361.779,474.88217 L 2362.7671,474.85222 L 2362.8869,473.71441 L 2363.9947,473.65452 L 2362.0785,472.15741 z "},"ny10":{"name":"NY-10","path":"M 2361.1203,467.81576 L 2359.3237,469.40271 L 2359.8028,470.30098 L 2364.1744,473.68447 L 2363.0067,473.83418 L 2362.8869,474.97199 L 2361.9287,474.97199 L 2361.9587,476.49906 L 2362.7971,475.90021 L 2363.9947,476.97813 L 2367.0489,474.28332 C 2365.1625,471.34897 2363.9948,470.78006 2361.1203,467.81576 z "},"ny9":{"name":"NY-9","path":"M 2362.7971,476.07986 L 2361.8988,476.67871 L 2361.809,476.04992 L 2361.3897,476.49906 C 2361.3897,476.49906 2361.779,476.94819 2361.6293,477.5171 C 2361.4796,478.086 2361.809,478.44531 2361.809,478.44531 L 2362.1084,480.60116 L 2371.8396,474.52286 L 2367.0788,468.59426 L 2366.4799,467.78582 L 2368.8155,465.5102 L 2367.5579,464.5221 L 2365.5218,465.89945 L 2365.7014,466.37852 L 2363.6953,466.79772 L 2365.0128,468.38467 L 2364.2642,470.51058 C 2364.2642,470.51058 2364.8032,470.98966 2366.3602,472.81614 C 2367.1098,473.6954 2367.2585,474.31326 2367.2585,474.31326 L 2363.9348,477.21767 L 2362.7971,476.07986 z "},"ny5":{"name":"NY-5","path":"M 2369.0251,465.51019 L 2367.1986,467.21691 L 2369.1748,466.04916 C 2369.1748,466.04916 2369.7437,465.80962 2370.9114,463.89331 C 2372.0792,461.97699 2375.2531,459.94091 2375.2531,459.94091 L 2375.7321,459.61154 L 2370.7018,455.92863 L 2369.3245,455.56932 L 2368.2765,456.37777 L 2368.8454,457.06644 L 2365.8811,461.85723 L 2365.7314,462.48601 C 2365.7314,462.48601 2365.5218,463.23458 2365.3721,463.3244 C 2365.2224,463.41423 2363.2162,465.54014 2363.2162,465.54014 L 2363.9648,466.46835 L 2365.432,466.25876 L 2365.1625,465.89945 L 2367.468,464.22268 L 2369.0251,465.51019 z "},"ny6":{"name":"NY-6","path":"M 2371.9295,474.46297 L 2374.6542,473.29522 L 2373.187,472.42689 L 2372.7679,469.67219 L 2371.5701,467.12709 L 2371.5103,463.71365 C 2370.6297,464.20551 2370.9841,464.55167 2369.564,466.0791 L 2367.2884,467.33668 L 2366.7494,467.78582 L 2371.9295,474.46297 z "},"ny4":{"name":"NY-4","path":"M 2377.0197,472.42689 L 2374.8339,473.20539 L 2373.3367,472.36701 L 2372.9775,469.55242 L 2371.6899,467.0672 L 2371.6001,463.26452 C 2372.8377,461.89715 2374.225,460.91903 2375.8519,459.7912 L 2381.3613,465.95933 L 2380.3133,467.00732 L 2379.3252,466.25876 L 2378.427,467.21691 L 2380.3133,469.28294 C 2380.3133,469.28294 2378.0677,470.89983 2377.918,470.89983 C 2377.7682,470.89983 2376.4508,471.19925 2376.4508,471.19925 L 2377.0197,472.42689 z "},"ny3":{"name":"NY-3","path":"M 2377.1465,472.39376 L 2379.655,471.34856 L 2381.2228,470.19884 L 2382.93,469.85044 L 2389.4451,465.53027 L 2390.1767,466.57547 L 2394.8105,464.27603 L 2393.6607,463.3005 L 2395.1937,462.22046 L 2394.8802,460.79202 L 2391.3613,463.23082 L 2389.898,461.3843 L 2387.6683,462.32498 L 2387.8076,463.1263 L 2387.076,463.68374 L 2386.0307,463.19599 L 2386.3095,465.32123 L 2385.1597,466.15739 L 2382.0938,460.19974 C 2382.0938,460.19974 2378.784,459.78166 2378.6447,459.74682 C 2378.5053,459.71198 2377.1117,458.98034 2377.1117,458.98034 L 2379.6898,455.46149 L 2377.1117,451.5594 L 2374.9865,452.53492 L 2373.3489,452.7788 L 2371.3283,453.71949 L 2371.3283,454.79953 L 2370.2482,455.42665 L 2375.9968,459.50293 L 2381.6061,465.94835 L 2380.317,467.27227 L 2379.4112,466.61031 C 2379.4112,466.61031 2378.5402,466.88903 2378.6447,467.13291 C 2378.7492,467.37679 2380.4215,469.18848 2380.4215,469.18848 L 2378.0872,470.93048 L 2376.6936,471.27888 L 2377.1465,472.39376 z "},"ny2":{"name":"NY-2","path":"M 2394.8802,464.1715 L 2400.3849,460.37394 L 2397.1448,456.47185 L 2399.3048,453.78916 L 2396.5873,451.87296 L 2390.4206,453.26657 L 2388.6438,450.89744 L 2386.5882,450.89744 L 2384.7417,448.98123 L 2380.9441,448.56315 L 2380.526,449.74771 L 2379.446,450.33999 L 2376.6239,450.40968 L 2379.8989,455.28729 L 2377.5298,458.84098 L 2380.4563,459.81649 L 2382.1287,459.74682 L 2385.2294,465.80899 L 2386.1004,465.11219 L 2385.8217,462.84758 L 2387.0411,463.47471 L 2387.5637,462.98694 L 2387.2502,462.29014 L 2390.1767,461.2101 L 2391.3265,462.9521 L 2394.9847,460.54814 L 2395.3679,462.39466 L 2393.9395,463.3005 L 2394.8802,464.1715 z "},"ny15":{"name":"NY-15","path":"M 2358.1821,458.68306 L 2357.6681,461.28831 L 2358.3593,461.64276 L 2358.1821,464.65293 L 2359.0862,465.10371 C 2358.7705,465.49613 2359.0247,465.55986 2359.0859,465.70128 L 2360.4329,466.46336 L 2361.195,464.81514 L 2359.5822,464.44296 L 2359.1746,463.75177 L 2358.7492,461.44781 L 2359.3518,458.75395 L 2358.1821,458.68306 z "},"ny7":{"name":"NY-7","path":"M 2363.0907,462.93584 L 2361.3425,464.70369 L 2361.0086,465.82333 L 2361.7157,466.35368 L 2365.1533,463.30905 L 2365.5264,462.03227 L 2362.8354,460.20549 L 2363.3265,458.02514 C 2363.3265,458.02514 2364.1122,457.35728 2364.0925,457.27871 C 2364.0729,457.20014 2363.9943,456.25728 2363.9943,456.25728 L 2362.9729,455.88407 L 2362.8746,456.61086 L 2360.9889,458.41799 L 2361.0675,459.10549 L 2361.1461,461.10905 L 2363.1104,462.71977 L 2363.0907,462.93584 z "},"tx8":{"name":"TX-8","path":"M 1498.8226,1218.9722 L 1497.263,1220.266 L 1495.0122,1219.6635 L 1479.3984,1221.8256 L 1473.2132,1223.6334 L 1473.0005,1224.7499 L 1450.7939,1231.6441 L 1430.4304,1225.7955 L 1418.9815,1239.1231 L 1417.0143,1236.6419 L 1411.4493,1238.5559 L 1408.9859,1234.9936 L 1407.639,1237.1381 L 1404.9628,1237.1381 L 1399.1675,1232.4593 L 1390.5365,1240.1687 L 1389.544,1242.8094 L 1382.7739,1242.8094 L 1382.4372,1243.3411 C 1382.2565,1243.6332 1381.3056,1244.2712 1380.3281,1244.7589 C 1379.3506,1245.2465 1378.2553,1245.645 1377.8824,1245.645 L 1377.2089,1245.645 C 1379.0904,1255.6888 1380.258,1264.7213 1381.6042,1275.4193 L 1382.5258,1292.7167 L 1389.7921,1291.352 L 1390.5365,1290.6254 C 1390.9486,1290.2207 1391.586,1289.8811 1391.9366,1289.8811 C 1392.2871,1289.8811 1393.2556,1289.2178 1394.0988,1288.4101 L 1395.6229,1286.9391 L 1398.0687,1288.2506 L 1399.1675,1291.1394 L 1403.1196,1290.395 L 1403.1196,1291.4584 L 1405.2818,1292.3268 C 1406.4692,1292.802 1407.7778,1293.5868 1408.1883,1294.0814 L 1408.9327,1294.9852 L 1411.2367,1294.9852 L 1419.5664,1286.372 L 1415.1534,1275.8269 L 1423.2704,1271.1658 C 1422.8324,1273.4944 1421.3247,1275.6513 1421.6576,1278.1309 L 1422.8628,1283.8021 L 1425.4858,1285.2023 L 1428.6759,1285.9821 L 1429.4557,1287.9847 C 1429.7884,1288.9305 1430.5028,1290.1571 1431.0507,1290.6963 L 1432.0432,1291.6711 L 1434.0459,1291.7597 L 1438.7956,1288.1265 L 1440.6742,1290.4482 C 1441.8398,1289.3023 1442.6319,1287.7597 1444.0238,1286.7619 L 1446.4873,1286.7619 L 1447.1607,1288.1443 L 1460.6477,1287.9493 L 1463.5366,1286.6732 L 1463.5188,1283.9439 L 1467.8255,1282.6324 L 1471.8308,1283.0755 L 1475.2159,1286.4783 L 1474.5424,1288.605 L 1477.0236,1288.9949 L 1477.9806,1291.6534 L 1481.9505,1293.213 L 1487.1079,1293.9928 L 1489.0396,1296.5803 L 1489.8372,1293.6915 L 1491.2196,1292.2027 C 1491.976,1291.3904 1492.8746,1290.1855 1493.2222,1289.5089 L 1493.8425,1288.2683 L 1492.5133,1287.8252 L 1492.9032,1287.01 C 1493.1133,1286.5608 1493.599,1285.7579 1493.9843,1285.22 L 1494.6932,1284.2452 L 1493.1513,1280.5235 L 1493.364,1274.5686 L 1491.8753,1274.5332 L 1490.0675,1272.0165 L 1490.5815,1267.7985 L 1493.2222,1265.1578 L 1492.6905,1264.3425 C 1492.4039,1263.8895 1492.1635,1262.9681 1492.1588,1262.3045 L 1492.1588,1261.0993 L 1491.0069,1259.9296 L 1491.1487,1256.7041 L 1493.2931,1254.8254 L 1493.2931,1251.8303 L 1496.2174,1249.1187 L 1496.5364,1245.3615 L 1499.0707,1240.8776 L 1498.3618,1236.4292 L 1500.2759,1233.5227 L 1497.8301,1231.8922 L 1497.8301,1229.1983 L 1498.6454,1229.1983 C 1499.0948,1229.1983 1499.6244,1228.9395 1499.8151,1228.6312 L 1500.1518,1228.0818 L 1498.2555,1224.0587 L 1498.8226,1218.9722 z "},"tx5":{"name":"TX-5","path":"M 1407.5326,1113.1496 L 1381.7814,1114.7447 L 1384.0005,1129.9508 C 1379.5568,1129.7116 1381.398,1127.9215 1376.519,1127.383 L 1376.4646,1126.4948 L 1372.5479,1127.2392 L 1367.1881,1123.0826 L 1349.2424,1123.8896 L 1349.2424,1125.4138 L 1337.362,1125.7246 L 1337.3756,1122.4375 L 1333.6464,1121.4439 L 1330.5272,1122.0996 L 1330.598,1123.9073 C 1330.6329,1124.8967 1330.4728,1126.2715 1330.2436,1126.9734 L 1329.836,1128.2494 L 1331.9804,1128.2494 L 1333.5223,1130.0039 C 1334.3715,1130.9718 1335.0642,1132.0006 1335.0642,1132.2902 C 1335.0642,1132.5798 1334.7172,1132.957 1334.2844,1133.1231 L 1333.4869,1133.4245 L 1332.7957,1136.8804 L 1336.0781,1141.5811 L 1338.8049,1143.2161 L 1339.6073,1147.5617 L 1340.8418,1149.1268 L 1342.9199,1150.6545 L 1342.1763,1154.6031 C 1343.5564,1154.7706 1345.4207,1155.2683 1346.6359,1155.9278 C 1348.3352,1156.8501 1348.8316,1156.573 1350.1977,1156.8078 L 1351.1884,1159.5553 L 1354.1219,1160.3751 L 1356.0462,1162.8311 L 1357.9266,1162.1353 L 1357.1227,1164.7346 L 1358.5008,1165.6366 L 1360.8685,1165.3963 L 1360.5495,1169.5257 L 1363.332,1170.2169 L 1363.93,1177.8927 L 1365.8292,1177.8321 L 1366.5735,1180.774 L 1365.6828,1181.7459 L 1365.2946,1182.7001 L 1367.9399,1183.2609 L 1368.5882,1188.1587 L 1374.1354,1190.0019 L 1374.0889,1193.5978 L 1376.1042,1193.5335 L 1378.4376,1195.4347 L 1378.3536,1197.7476 L 1379.7388,1199.4834 L 1380.7345,1198.9691 L 1380.6981,1195.4741 L 1382.7499,1197.1612 L 1383.0929,1202.5433 L 1381.0016,1202.5433 L 1381.0016,1203.0395 C 1381.0016,1203.3131 1381.3419,1203.8237 1381.7637,1204.1738 L 1382.5435,1204.8118 C 1384.4514,1204.2842 1385.7267,1203.7039 1387.1602,1202.2801 L 1404.5374,1198.6974 L 1412.1987,1199.0727 L 1413.2752,1201.5122 L 1415.5965,1202.561 L 1415.5965,1205.3612 L 1420.7206,1207.8738 L 1426.9381,1202.1915 C 1425.8607,1197.6788 1424.1507,1199.4923 1422.8097,1195.4542 L 1421.3918,1188.2764 L 1422.1716,1187.9751 C 1422.6058,1187.8086 1423.0746,1187.2094 1423.0746,1186.9672 L 1420.3298,1185.8334 L 1422.402,1184.0229 L 1422.402,1182.1266 L 1420.1335,1182.1266 L 1419.017,1164.4216 L 1394.5418,1165.7153 L 1393.3544,1164.971 L 1394.0279,1161.4619 L 1392.7873,1159.7782 L 1394.081,1156.5526 L 1394.1519,1152.6536 L 1386.2475,1144.2885 L 1385.7868,1132.2193 L 1387.6477,1132.2193 L 1391.9366,1135.6221 L 1400.9398,1135.8524 C 1404.6984,1137.8617 1404.4922,1137.7801 1407.0895,1138.0146 L 1407.0895,1138.9894 L 1408.9504,1138.2805 L 1407.5326,1113.1496 z "},"fl8":{"name":"FL-8","path":"M 2133.0143,1249.5441 L 2119.4032,1252.5215 C 2119.2398,1254.9592 2120.0008,1257.7821 2120.9273,1260.674 L 2126.0847,1262.2513 L 2127.0772,1265.6718 L 2134.3966,1268.4188 L 2136.2044,1265.3882 L 2140.8832,1271.4494 L 2141.6453,1277.2979 L 2146.0582,1279.2829 L 2148.3622,1288.1797 L 2147.157,1290.4482 L 2148.3976,1292.7699 L 2150.3649,1292.1496 C 2152.0569,1294.0009 2153.6779,1294.7516 2155.5399,1299.2387 L 2157.3959,1308.5343 L 2176.6596,1303.5414 L 2176.4528,1299.3627 L 2179.5543,1296.8993 L 2177.6392,1288.4022 L 2171.8626,1289.8456 L 2170.6752,1288.286 L 2166.1988,1289.1477 L 2167.5457,1295.7455 L 2165.0234,1296.2974 L 2163.5853,1290.3578 L 2161.0712,1289.4075 L 2157.6932,1286.8514 L 2154.748,1281.7929 L 2153.3935,1278.0718 L 2155.9406,1276.4748 L 2155.8717,1274.7261 L 2156.9912,1274.4052 C 2151.9133,1268.4192 2148.4764,1263.4069 2148.8939,1260.993 L 2145.562,1259.8233 L 2144.8186,1262.2986 L 2142.7106,1261.6093 L 2142.1947,1259.8233 L 2136.9842,1259.8233 L 2136.9842,1256.9876 L 2134.1485,1256.9876 L 2134.1485,1254.7191 L 2133.0143,1254.7191 L 2133.0143,1249.5441 z "},"sc6":{"name":"SC-6","path":"M 2210.321,921.28288 L 2207.4145,923.8704 L 2199.4038,922.82473 L 2196.32,923.60453 L 2191.1273,929.70117 L 2181.7873,930.48097 C 2181.1204,932.61042 2179.7038,934.04685 2176.3996,933.74196 L 2168.5839,943.13503 C 2166.5569,942.5552 2166.0982,941.63304 2164.2241,941.16783 L 2158.925,947.90248 L 2157.454,947.90248 C 2156.4809,949.69744 2156.0177,952.05023 2156.2665,955.16882 L 2152.0485,957.65001 L 2149.2306,955.84228 L 2147.1393,956.55119 C 2145.5395,954.38652 2144.6392,952.18924 2144.8708,949.92288 L 2143.0453,947.90248 C 2142.0863,947.49869 2139.2496,948.96715 2136.3993,950.45456 L 2137.6222,953.89278 L 2128.1051,957.54367 C 2126.9927,957.99437 2126.2473,958.92463 2125.4644,959.81218 L 2123.7453,959.81218 L 2121.6717,957.93357 L 2121.6717,955.27516 C 2122.5997,955.63687 2123.2538,953.59662 2123.9934,952.26228 L 2122.3983,950.64948 L 2118.1803,951.44704 L 2117.0638,954.42446 L 2118.8183,958.1108 L 2120.2539,958.12849 C 2124.0865,963.07142 2121.3204,962.0304 2125.358,966.4405 L 2130.2495,968.33681 C 2131.6513,967.54073 2133.2793,968.55459 2134.8929,969.45337 L 2137.7152,969.65828 L 2133.7941,979.25404 L 2135.8853,983.48981 L 2134.3745,986.54918 L 2132.8149,986.46723 L 2132.3053,988.20407 L 2128.9912,989.92315 L 2119.7754,990.98651 L 2118.6366,992.50404 C 2120.3251,1002.8607 2121.8676,1008.892 2121.3529,1011.3033 L 2126.7406,1016.0884 L 2130.4976,1017.5707 L 2139.1109,1026.303 L 2141.4149,1027.0473 C 2144.4381,1030.4611 2145.8517,1032.8505 2147.2102,1035.2049 L 2151.8182,1036.4455 L 2153.36,1035.1694 C 2154.8523,1035.6196 2156.6537,1037.893 2158.7528,1040.3155 C 2162.605,1039.7406 2164.9212,1043.31 2167.875,1044.7928 L 2168.1762,1044.3498 C 2168.3367,1044.1023 2169.0217,1043.7285 2169.7004,1043.5168 L 2170.9233,1043.1269 L 2171.9512,1044.9524 L 2173.4222,1043.1801 L 2175.8325,1043.1801 L 2181.2911,1037.5088 L 2182.9216,1037.5088 L 2182.9216,1036.5518 L 2177.1243,1033.3823 L 2177.5547,1027.9723 L 2176.2078,1026.3595 L 2177.0858,1023.2484 C 2179.1459,1023.1441 2180.1359,1022.5292 2181.0411,1021.6551 L 2178.209,1018.6487 L 2176.0275,1018.7936 L 2172.7133,1015.4794 C 2173.5699,1014.024 2171.8486,1011.909 2169.407,1009.6098 L 2170.0965,1004.812 L 2167.8039,1002.7542 C 2171.6079,994.91206 2172.8714,993.43055 2174.8578,990.7207 L 2179.5543,989.28513 C 2180.0891,989.48022 2180.907,990.1471 2184.453,995.36083 L 2184.4955,997.96906 L 2190.2943,1005.8027 L 2190.2943,1012.6083 L 2186.1331,1014.0405 L 2186.1119,1016.3088 C 2188.4593,1017.3332 2190.2051,1019.2001 2191.2513,1021.2994 C 2192.3695,1019.3475 2192.9547,1017.3962 2192.6584,1015.8404 L 2195.1075,1014.6996 L 2195.0225,1012.381 L 2197.8582,1009.2054 L 2197.6882,1007.1597 C 2201.0492,1004.3151 2199.1411,1003.2553 2203.3733,995.82151 L 2206.2148,993.98969 L 2208.1002,994.54093 L 2209.0804,990.41938 L 2212.8445,988.89165 L 2214.1314,983.04671 C 2211.8772,982.37824 2212.6714,980.29126 2209.5766,978.93503 L 2209.5766,976.7374 L 2213.1212,971.79278 L 2212.3946,969.87872 L 2214.9112,957.38414 L 2217.2861,956.44486 L 2212.749,952.1382 L 2211.6325,946.62644 L 2208.1057,945.49219 C 2207.7551,943.84967 2207.1253,943.04531 2206.3688,942.6211 L 2206.2802,940.38803 L 2207.7689,939.99813 L 2207.574,938.06632 L 2209.8602,935.99278 L 2209.2222,933.60018 C 2211.3281,930.75223 2209.8853,930.04462 2213.4048,922.61206 L 2210.321,921.28288 z "},"la3":{"name":"LA-3","path":"M 1598.3005,1252.6455 L 1596.7764,1253.5849 C 1598.3741,1256.2702 1600.0921,1257.3383 1601.4552,1259.965 C 1596.0316,1260.3465 1590.9576,1260.381 1585.5047,1260.7625 L 1585.5047,1262.7475 L 1587.5251,1262.6589 C 1586.5998,1265.5109 1587.3761,1266.5755 1588.1277,1267.6744 L 1586.6744,1269.234 L 1587.9327,1272.0874 L 1586.6035,1272.7786 L 1586.639,1274.3736 L 1590.3253,1273.8774 C 1590.0517,1280.0941 1588.4341,1282.8289 1587.2592,1286.5669 L 1589.5809,1297.4487 L 1591.8671,1295.7119 L 1593.7458,1294.808 L 1595.9966,1297.0588 L 1595.394,1298.6007 C 1595.0686,1299.4566 1594.8091,1300.7831 1594.8091,1301.5427 L 1594.8091,1302.925 L 1595.4117,1302.925 C 1595.7444,1302.925 1596.9105,1302.2489 1597.9992,1301.4186 L 1599.9842,1299.9122 L 1608.7038,1299.8058 L 1608.881,1304.91 L 1607.6227,1306.4342 L 1612.8687,1305.6544 L 1614.8713,1312.0346 L 1615.7574,1311.6623 C 1616.2431,1311.456 1617.2383,1311.1617 1617.9551,1311.0066 L 1619.2489,1310.7231 L 1620.7198,1312.7435 L 1624.2644,1312.0346 L 1625.2037,1313.7359 L 1629.1027,1314.2144 L 1629.3154,1314.8524 C 1629.4306,1315.1979 1630.1279,1315.7027 1630.875,1315.9867 L 1632.2396,1316.5007 L 1632.2396,1318.5742 L 1633.5157,1319.868 L 1632.8245,1321.6757 L 1630.0952,1320.9845 L 1628.8014,1324.8835 L 1626.3734,1325.9647 L 1629.6875,1328.3218 L 1631.9561,1328.9421 C 1633.2037,1329.2876 1635.2088,1329.5783 1636.4222,1329.5801 L 1638.6376,1329.5801 L 1639.8959,1331.2637 L 1646.2584,1331.4587 L 1647.5166,1330.6789 L 1649.3244,1332.2562 C 1650.321,1333.1258 1651.8594,1334.5281 1652.7449,1335.3754 L 1654.3576,1336.9173 L 1654.3576,1338.6542 L 1657.4768,1338.5655 L 1656.059,1337.9984 L 1656.059,1336.0134 L 1658.8415,1333.4082 L 1663.1481,1332.9297 L 1664.2824,1331.7777 L 1664.2824,1327.5951 L 1668.4473,1327.2584 L 1669.0675,1325.6102 L 1667.9865,1325.6102 C 1667.3909,1325.6102 1666.7949,1325.4187 1666.6572,1325.1848 C 1666.5195,1324.9509 1666.6322,1324.1714 1666.9054,1323.448 L 1667.4016,1322.1365 L 1669.8119,1322.8986 L 1670.698,1321.4631 L 1672.4526,1322.1897 C 1673.4172,1322.5892 1674.2071,1322.9958 1674.2071,1323.0936 C 1674.2071,1323.1914 1673.9463,1323.9605 1673.6223,1324.8126 L 1673.0374,1326.3722 L 1673.7641,1326.833 C 1674.1661,1327.0881 1675.0531,1327.3068 1675.7491,1327.3116 L 1677.0251,1327.3116 L 1677.2732,1326.0355 C 1677.4155,1325.3337 1677.6942,1324.0576 1677.8758,1323.1999 L 1678.1948,1321.6403 L 1680.6228,1321.6403 L 1682.5192,1323.5898 C 1683.5644,1324.666 1684.4155,1325.8018 1684.4155,1326.1064 L 1684.4155,1326.6558 L 1682.6786,1327.028 L 1684.4864,1329.5801 L 1686.7194,1329.5801 L 1687.4106,1331.4055 L 1685.8687,1332.3625 L 1686.4713,1332.9651 L 1690.9374,1330.608 L 1693.6313,1327.985 C 1695.1129,1326.5449 1696.3252,1325.1647 1696.3252,1324.919 C 1696.3252,1324.6733 1696.0446,1324.4759 1695.7049,1324.4759 C 1695.365,1324.4759 1694.6066,1323.9017 1694.0212,1323.1999 C 1693.4357,1322.4981 1692.9505,1321.7324 1692.9401,1321.4985 L 1692.9224,1321.0732 L 1695.1909,1321.0732 L 1694.9073,1319.6908 L 1697.5303,1319.2831 L 1696.3252,1317.8476 L 1695.6163,1310.9712 L 1696.3429,1308.0292 L 1697.1227,1308.0292 C 1697.5464,1308.0292 1698.2054,1308.412 1698.5937,1308.8799 C 1698.982,1309.3478 1699.6235,1309.7306 1700.0292,1309.7306 L 1700.7736,1309.7306 L 1704.265,1306.2392 L 1706.2499,1306.6468 L 1706.1081,1309.447 L 1707.6677,1310.3509 L 1707.6677,1312.9207 L 1706.0904,1315.0651 L 1706.6044,1316.4298 L 1711.0351,1316.4475 L 1714.5442,1316.3766 L 1719.861,1318.7515 L 1726.6665,1320.0807 L 1731.0441,1324.7595 L 1732.1606,1327.8787 L 1733.9506,1327.8787 L 1736.0242,1329.7573 L 1736.0951,1332.1322 L 1737.1584,1329.4738 L 1739.3206,1328.9066 L 1739.8877,1326.7445 L 1740.4903,1326.7445 C 1740.8191,1326.7445 1741.4173,1327.1476 1741.8195,1327.6306 C 1742.2218,1328.1134 1743.0402,1329.0066 1743.645,1329.6155 C 1744.2496,1330.2244 1744.8876,1330.7037 1745.0628,1330.6966 C 1745.2379,1330.6895 1745.7894,1329.8601 1746.2857,1328.8534 L 1747.1895,1327.028 L 1748.4301,1326.9571 C 1749.1136,1326.9212 1749.7499,1326.7936 1749.8479,1326.6736 C 1749.946,1326.5534 1750.3969,1325.676 1750.8582,1324.7241 L 1751.7089,1323.0049 L 1750.0075,1321.4099 L 1752.8786,1320.2225 L 1752.2937,1318.9464 C 1751.9793,1318.2446 1751.5254,1317.6704 1751.2835,1317.6704 C 1751.0415,1317.6704 1750.4449,1318.0659 1749.9543,1318.5565 L 1749.0681,1319.4604 L 1747.0832,1319.0705 L 1747.0655,1316.3412 L 1746.2148,1316.0753 C 1745.7536,1315.9262 1744.8197,1315.1871 1744.1235,1314.4449 C 1743.4272,1313.7025 1742.5646,1312.5564 1742.2094,1311.8928 L 1741.5537,1310.6876 L 1740.9689,1311.7687 C 1740.6433,1312.3644 1740.1022,1313.0341 1739.7637,1313.2574 L 1739.1434,1313.665 L 1737.8496,1312.2649 C 1737.1352,1311.4957 1736.3227,1310.8649 1736.0419,1310.8649 C 1735.761,1310.8649 1735.3662,1311.12 1735.1735,1311.432 L 1734.819,1311.9991 L 1732.4974,1311.9991 L 1733.0645,1309.8192 L 1725.9576,1309.447 L 1724.5044,1311.0066 L 1722.4308,1308.3128 L 1722.4308,1307.3557 C 1722.4239,1306.8283 1722.1709,1306.2409 1721.8814,1306.062 L 1721.3675,1305.7429 L 1720.6408,1308.0292 L 1720.0382,1308.0292 C 1719.7143,1308.0292 1718.9503,1307.3912 1718.3368,1306.6114 L 1717.2203,1305.1936 L 1714.7568,1305.1581 L 1713.7644,1304.4138 C 1713.2185,1303.9993 1712.7719,1303.3691 1712.7719,1303.0136 C 1712.7719,1302.6581 1712.9633,1302.3592 1713.1972,1302.3579 L 1713.6226,1302.3579 L 1713.8176,1298.388 L 1712.7719,1298.388 L 1712.7719,1296.1195 L 1715.1645,1296.1195 L 1714.4556,1293.3193 L 1716.0329,1293.5497 C 1716.8949,1293.6839 1718.7409,1293.9234 1720.1446,1294.0814 L 1722.6966,1294.3649 L 1721.2788,1293.7801 C 1720.499,1293.452 1718.9678,1292.8003 1717.8761,1292.3268 C 1716.7843,1291.8534 1715.5083,1291.2645 1715.0404,1291.033 L 1714.1897,1290.6254 L 1713.8176,1288.0911 L 1722.8207,1288.6405 L 1726.5425,1290.5722 L 1725.7627,1288.5164 L 1727.7477,1284.8478 L 1729.4667,1285.025 C 1730.4193,1285.12 1731.6502,1285.3776 1732.1961,1285.6099 L 1733.1885,1286.0352 L 1733.1885,1283.4122 L 1731.9657,1284.6528 L 1729.8566,1284.1035 L 1729.2541,1282.5084 L 1727.5172,1282.5084 L 1727.5172,1281.4627 L 1734.8899,1279.017 L 1734.8899,1278.4853 C 1734.8899,1278.1988 1734.7831,1277.9714 1734.6418,1277.9714 C 1734.5005,1277.9714 1733.7255,1278.2789 1732.9227,1278.6449 L 1731.4517,1279.3006 L 1730.1402,1277.9891 L 1732.8164,1275.1357 L 1735.457,1275.1357 L 1735.457,1272.8672 L 1733.8443,1272.8672 L 1733.419,1270.8823 L 1731.0263,1276.1814 L 1728.5806,1277.4928 L 1726.9501,1276.1282 L 1726.9501,1274.0015 L 1724.912,1274.0015 L 1724.2208,1273.328 C 1723.8465,1272.9537 1723.5473,1272.3382 1723.5473,1271.9633 L 1723.5473,1271.2722 L 1727.2337,1268.915 L 1722.0764,1268.8973 L 1720.7117,1267.5326 L 1720.7117,1270.4569 L 1716.9368,1273.0445 L 1716.7595,1279.9563 L 1714.3492,1281.9413 L 1710.5743,1281.9413 L 1707.3842,1279.1765 L 1708.8197,1276.8371 L 1708.3766,1276.8548 C 1708.14,1276.8647 1707.458,1277.2476 1706.8525,1277.7055 L 1705.7537,1278.5385 L 1703.0776,1278.5385 L 1701.1458,1275.1357 L 1700.1356,1275.1357 C 1699.5788,1275.1338 1698.5184,1275.5371 1697.7784,1276.0219 L 1696.4315,1276.908 L 1695.2441,1275.6497 L 1693.9326,1276.7308 L 1694.0566,1278.9816 C 1695.5454,1279.5892 1697.0341,1279.8392 1698.5228,1279.6728 L 1700.0292,1282.5084 L 1699.533,1282.8629 C 1698.669,1282.9482 1697.8768,1282.1744 1697.1227,1281.1615 L 1694.9605,1281.4982 C 1694.2354,1282.8924 1693.4985,1284.29 1692.1249,1285.4681 L 1691.1324,1286.1239 L 1691.5578,1290.1647 L 1688.598,1289.3317 L 1689.2538,1286.7619 L 1687.1802,1285.4504 L 1685.5904,1287.2811 C 1682.551,1286.8171 1680.72,1283.8281 1679.4286,1281.7253 L 1679.3124,1279.7905 C 1676.8583,1279.7429 1674.753,1280.094 1673.0729,1280.9311 L 1673.0729,1279.2474 L 1674.792,1277.8119 L 1673.0906,1275.1889 L 1673.7109,1273.5761 L 1678.177,1272.8495 L 1677.2502,1262.6664 L 1675.9802,1259.0903 L 1673.0608,1259.0903 L 1672.269,1260.3904 C 1670.4268,1260.5234 1668.2903,1261.1272 1665.8952,1262.1449 L 1663.9988,1266.0971 L 1663.2752,1266.7114 L 1658.0908,1264.5899 L 1656.6262,1265.4591 L 1656.2608,1268.0583 L 1655.0244,1268.0927 L 1652.2309,1265.0692 L 1647.8357,1264.5021 L 1642.2176,1265.4414 L 1642.2176,1266.487 L 1639.1693,1266.5047 C 1638.1832,1267.5338 1636.9855,1268.6214 1635.5361,1269.11 L 1634.9689,1274.4268 L 1634.0473,1274.48 L 1634.4727,1277.5992 L 1629.6344,1279.7614 L 1626.3025,1280.2045 L 1625.7531,1278.4853 L 1620.135,1279.1056 L 1619.5147,1276.713 L 1614.1978,1276.5181 L 1614.4814,1273.2039 L 1612.4079,1270.6519 L 1613.294,1269.0391 L 1607.0378,1268.2061 C 1607.3563,1267.1133 1605.9913,1265.4528 1604.7162,1263.8286 L 1604.7162,1261.8437 L 1603.1388,1260.9752 L 1604.8402,1260.6385 C 1605.0312,1259.632 1603.8322,1257.6542 1602.4831,1255.5698 L 1598.3005,1252.6455 z M 1593.0723,1308.0292 L 1592.4166,1309.7306 L 1588.8366,1309.7306 L 1587.4542,1311.9637 L 1588.4821,1312.513 C 1589.047,1312.8154 1591.1379,1313.6218 1593.1432,1314.3031 C 1595.1485,1314.9842 1597.0278,1315.7472 1597.3081,1316.0045 L 1597.8043,1316.4829 L 1600.9235,1316.2526 L 1602.235,1312.6194 L 1604.5921,1311.875 L 1603.8123,1311.3788 C 1603.3812,1311.1057 1602.4854,1310.8873 1601.8096,1310.8825 C 1601.1339,1310.8778 1600.4958,1310.6734 1600.3918,1310.4395 C 1600.2879,1310.2056 1599.3395,1309.5675 1598.3005,1309.0217 L 1596.4219,1308.0292 L 1593.0723,1308.0292 z "},"la7":{"name":"LA-7","path":"M 1572.124,1315.3191 C 1571.0323,1315.282 1568.863,1315.0529 1567.3034,1314.81 C 1565.7438,1314.5671 1562.7859,1314.346 1560.7304,1314.3187 L 1556.9929,1314.269 L 1548.2137,1312.0236 L 1538.3798,1307.8593 L 1524.2016,1304.1121 L 1520.1284,1304.0607 L 1514.5604,1305.7498 L 1507.1625,1305.7621 L 1493.693,1308.5552 L 1489.7296,1311.1854 L 1488.1086,1309.5644 C 1487.217,1308.6728 1486.4875,1307.6997 1486.4875,1307.402 C 1486.4875,1307.1043 1486.1047,1306.7138 1485.6368,1306.5343 L 1484.7862,1306.2078 L 1484.7862,1304.858 L 1489.3313,1300.4198 L 1491.1074,1294.0899 L 1495.5616,1289.266 L 1495.5616,1287.6139 L 1493.6844,1287.6139 L 1495.7374,1285.3454 L 1494.8556,1285.3454 L 1496.1959,1283.7305 L 1493.9088,1279.2474 L 1494.6565,1278.4998 L 1494.3813,1274.4134 L 1491.5917,1272.2191 L 1491.5917,1268.3985 L 1492.2674,1267.7607 L 1505.5885,1267.0417 L 1505.3235,1264.2838 L 1505.0585,1261.526 L 1510.3069,1261.526 L 1510.3069,1266.6709 C 1514.5871,1266.2237 1518.8278,1265.8555 1522.8314,1265.9614 L 1524.4852,1264.3617 L 1527.7934,1264.3617 L 1528.1737,1263.2208 L 1543.0475,1261.7959 L 1542.9941,1258.9389 L 1544.7335,1258.3849 L 1550.8391,1258.9739 C 1550.8292,1256.9074 1551.7437,1255.6114 1552.8416,1254.4681 L 1552.2467,1252.0154 C 1554.424,1251.6778 1557.211,1252.2718 1560.2155,1252.4645 L 1563.2291,1250.607 L 1560.5673,1248.6857 L 1560.6305,1247.8305 L 1563.266,1246.9979 L 1562.4277,1245.7474 C 1563.7772,1244.7656 1566.1895,1244.6105 1568.3231,1244.2385 L 1568.5143,1243.1015 L 1572.0575,1244.0205 L 1574.1737,1242.888 L 1573.453,1238.4976 L 1571.4869,1237.9816 L 1571.5568,1234.4035 C 1579.1113,1233.4161 1585.546,1233.1286 1592.5406,1232.4911 L 1592.5406,1235.0863 L 1595.0963,1235.9772 C 1594.8922,1236.7623 1595.7546,1238.7394 1597.1324,1241.2925 C 1596.8476,1242.9241 1596.7423,1244.5793 1596.4819,1246.2135 C 1596.2703,1248.284 1596.6386,1250.3931 1597.8258,1252.5567 L 1596.3934,1253.442 C 1597.2988,1255.9188 1599.5719,1257.4822 1600.891,1259.6574 L 1585.1093,1260.4091 L 1585.1679,1263.2274 L 1587.0016,1263.2274 C 1586.0806,1265.0592 1586.667,1266.4603 1587.6916,1267.7361 L 1586.3899,1269.0378 L 1587.7067,1271.9278 L 1586.3022,1272.6409 L 1586.3022,1274.6554 L 1589.9885,1274.2885 C 1589.7225,1277.335 1589.134,1280.7919 1586.8379,1286.4222 C 1587.6019,1290.1436 1588.4182,1293.8547 1589.1378,1297.585 L 1585.2636,1299.0129 L 1580.0638,1303.5899 L 1580.0638,1304.3388 C 1580.0638,1304.7507 1580.6348,1306.1575 1581.3327,1307.465 L 1582.6016,1309.8424 L 1588.0036,1309.1257 L 1588.0036,1310.3272 L 1586.5488,1310.8803 C 1585.7487,1311.1844 1584.2073,1311.4333 1583.1235,1311.4333 L 1581.1528,1311.4333 L 1578.83,1312.7094 C 1577.5525,1313.4112 1575.9676,1314.3007 1575.3081,1314.686 L 1574.1089,1315.3865 L 1572.124,1315.3191 z "},"la5":{"name":"LA-5","path":"M 1612.9041,1096.4902 C 1587.2385,1098.5503 1561.9357,1100.6507 1533.5592,1102.4096 L 1533.8073,1103.278 L 1534.8176,1118.0411 L 1529.5893,1118.75 C 1529.7698,1119.7356 1529.5364,1121.0892 1528.3133,1123.3225 L 1527.8702,1132.5029 L 1528.5614,1136.7563 L 1533.4352,1136.7563 C 1534.3188,1142.1223 1534.5566,1145.3747 1534.853,1150.9168 C 1534.0609,1151.5737 1533.3488,1152.9907 1532.8681,1156.6058 L 1526.7891,1156.6058 C 1526.7658,1160.2778 1530.5001,1156.0232 1529.7134,1175.0198 L 1527.6044,1175.6047 L 1526.6296,1183.9521 L 1544.9727,1181.9849 L 1544.6182,1176.7389 L 1557.8572,1175.8173 L 1560.0725,1177.7136 L 1558.3711,1181.1164 L 1559.8067,1182.0203 L 1558.442,1186.6637 C 1559.1561,1187.8238 1560.7349,1188.2429 1562.536,1188.4714 L 1563.1917,1191.7678 L 1564.6804,1191.7678 L 1565.0349,1194.3199 L 1568.1541,1193.9477 L 1568.1541,1195.4542 L 1545.7525,1202.6496 L 1542.3497,1202.2597 L 1542.4206,1199.1405 L 1541.5699,1199.1405 L 1541.2155,1196.1099 L 1539.7267,1195.6136 L 1539.1652,1197.6539 C 1537.0806,1198.2527 1533.6456,1203.6073 1531.3262,1203.6775 L 1531.9819,1205.3789 C 1530.441,1205.4212 1529.5381,1206.1015 1528.9336,1207.0803 C 1530.8709,1207.1412 1532.701,1207.2481 1533.5592,1207.7715 L 1533.5592,1209.2779 L 1535.6505,1209.9336 L 1536.9089,1214.1694 L 1538.8229,1235.4367 L 1530.6704,1235.4367 L 1531.0071,1241.9055 L 1533.8428,1242.579 C 1534.8577,1245.9103 1536.7412,1247.5044 1538.8428,1248.6623 L 1541.5699,1245.0779 L 1544.9195,1245.0425 C 1544.4563,1249.0866 1543.9976,1253.1614 1543.0764,1254.152 L 1544.9195,1254.152 C 1543.9956,1256.2841 1543.9199,1257.6892 1545.1854,1257.9447 L 1550.5731,1258.6713 C 1550.6034,1257.1649 1550.9682,1255.6584 1552.3986,1254.152 L 1551.8314,1251.9366 C 1552.8463,1251.4763 1555.7177,1251.5465 1560.0194,1252.0252 L 1562.5891,1250.6429 L 1560.2143,1248.9769 L 1560.2143,1247.4882 L 1562.5891,1246.8502 L 1561.9334,1245.7691 C 1563.0187,1244.8287 1565.5304,1244.3162 1568.1541,1243.8373 L 1568.1541,1242.6853 L 1571.9645,1243.3942 L 1573.595,1242.774 L 1573.1519,1238.9458 L 1570.9897,1238.3787 L 1570.9897,1233.8239 L 1593.1077,1231.9631 L 1593.1077,1234.7987 L 1595.3763,1235.5076 C 1595.7485,1237.9119 1596.635,1239.6734 1597.6271,1241.3029 C 1596.8306,1245.3951 1596.4581,1249.2792 1598.141,1252.1316 L 1602.7844,1255.3394 C 1603.7991,1257.1107 1605.1796,1258.7449 1605.0174,1260.9575 L 1603.5996,1261.0461 L 1605.0174,1261.6132 L 1605.0174,1263.6336 L 1606.1517,1265.0869 C 1606.7755,1265.88 1607.286,1266.808 1607.286,1267.1427 L 1607.286,1267.7453 C 1612.9814,1268.9542 1617.08,1268.7437 1621.4287,1268.7555 L 1622.0845,1266.682 L 1623.6795,1267.3023 L 1626.5329,1265.211 L 1626.5683,1263.6336 L 1628.8014,1261.9677 L 1622.1022,1262.7829 L 1618.7881,1259.3802 C 1615.514,1258.5917 1618.5225,1258.0891 1611.2559,1252.486 L 1611.2559,1251.7239 L 1614.6586,1251.3163 L 1614.6586,1250.3239 C 1612.8841,1249.4698 1610.5254,1249.4944 1608.1366,1249.5618 L 1607.2151,1244.4753 L 1610.4052,1239.4066 L 1613.3294,1240.2219 L 1617.0512,1237.9002 L 1615.6865,1235.5785 L 1612.4256,1237.7052 L 1609.0405,1237.7052 L 1606.8252,1238.7332 L 1603.706,1237.0849 L 1607.2683,1234.2493 L 1607.5873,1228.454 L 1605.3896,1226.6817 L 1602.5717,1227.426 L 1602.4122,1228.3299 L 1604.6984,1228.1881 L 1605.8504,1231.6618 L 1600.1968,1231.7504 C 1600.2765,1226.8632 1599.9252,1223.8717 1599.2221,1222.4282 L 1597.5562,1221.0458 L 1596.7055,1222.4282 C 1595.9508,1222.2044 1595.3081,1221.1092 1594.8091,1220.5319 L 1599.2398,1219.0431 L 1600.5867,1220.6382 L 1599.8424,1221.8256 L 1600.2146,1221.8256 L 1603.8832,1219.4862 L 1603.8832,1217.9443 L 1599.9133,1215.4986 L 1599.931,1214.5416 C 1599.9409,1214.0212 1600.3238,1213.1089 1600.7817,1212.5035 C 1601.2396,1211.8979 1601.6147,1211.0475 1601.6147,1210.6249 L 1601.6147,1209.8627 L 1599.931,1208.9057 C 1599.0001,1208.3744 1598.0946,1207.5806 1597.9283,1207.1512 L 1597.6271,1206.3714 L 1598.8677,1204.8649 L 1604.7339,1204.5282 L 1605.0883,1202.0825 L 1604.0604,1201.3204 C 1603.4968,1200.8956 1602.7154,1200.0431 1602.3236,1199.4241 C 1601.9317,1198.8049 1601.4461,1197.9423 1601.2425,1197.51 L 1600.8703,1196.7124 L 1601.4374,1195.8086 C 1601.7545,1195.3051 1602.4249,1194.8085 1602.9262,1194.7098 L 1603.8477,1194.5326 L 1604.2022,1195.9681 C 1604.3999,1196.7558 1604.9129,1197.6901 1605.3365,1198.0417 L 1606.0986,1198.6797 L 1607.3746,1197.8822 L 1604.2908,1194.6566 L 1603.3515,1188.755 L 1603.9541,1187.7979 L 1606.4707,1187.7979 L 1607.7291,1186.9118 C 1608.4223,1186.4262 1608.9873,1185.7846 1608.9873,1185.4762 L 1608.9873,1184.9091 L 1604.9997,1185.6534 L 1603.3161,1184.2534 L 1603.3161,1181.6304 L 1604.4503,1180.9215 L 1605.7087,1181.8076 C 1606.4024,1182.2935 1607.4227,1182.6938 1607.9772,1182.6938 L 1608.9873,1182.6938 L 1608.9873,1176.3845 L 1610.1925,1174.1336 L 1610.5824,1168.2851 L 1611.5926,1167.5585 C 1612.1482,1167.1523 1612.9488,1166.8142 1613.3649,1166.8142 L 1614.1269,1166.8142 L 1614.6941,1168.3206 C 1615.007,1169.1436 1615.3907,1169.6796 1615.5448,1169.5257 C 1615.6987,1169.3717 1615.5997,1168.654 1615.3321,1167.9307 L 1614.8359,1166.6192 L 1618.4336,1163.4645 L 1618.4336,1160.0618 L 1619.9046,1158.3072 L 1620.8616,1158.3072 C 1621.3876,1158.3072 1622.312,1157.9362 1622.9174,1157.4742 L 1624.0163,1156.6235 L 1623.1656,1156.0564 C 1622.6977,1155.7434 1621.7327,1155.494 1621.0211,1155.4893 L 1619.7273,1155.4716 L 1619.0362,1153.6816 L 1619.9578,1152.7777 L 1623.396,1153.3625 C 1623.2909,1152.1358 1624.0862,1151.8481 1624.8669,1151.0231 L 1626.5683,1149.3218 L 1626.5683,1147.5318 L 1625.505,1147.5318 L 1625.1505,1150.013 L 1618.345,1150.0839 L 1618.345,1145.1037 L 1619.1957,1144.7138 C 1619.6635,1144.4944 1620.6249,1144.0109 1621.3224,1143.6505 C 1622.02,1143.2901 1622.9771,1142.9948 1623.4491,1142.9948 L 1624.2998,1142.9948 L 1624.2998,1141.8605 L 1626.338,1141.8605 L 1627.8267,1143.2783 L 1627.0291,1138.4577 L 1627.7912,1138.3868 C 1628.2085,1138.3499 1628.765,1138.3566 1629.0318,1138.4045 C 1629.2985,1138.4524 1629.8728,1138.1985 1630.3079,1137.8374 C 1630.7429,1137.4764 1631.1054,1136.9591 1631.1054,1136.6854 L 1631.1054,1136.1892 L 1629.723,1136.1892 C 1628.9635,1136.1892 1627.6874,1135.9439 1626.8873,1135.6398 L 1625.4341,1135.0904 L 1625.4341,1134.3637 C 1625.4359,1133.9661 1625.831,1132.8931 1626.3025,1131.9889 C 1626.7741,1131.0847 1627.0617,1130.2491 1626.9405,1130.128 C 1626.8193,1130.0068 1626.0686,1130.2092 1625.2746,1130.5711 L 1623.8213,1131.2268 L 1619.4792,1129.1001 L 1619.2843,1128.0722 C 1619.1786,1127.5016 1619.2543,1126.417 1619.4438,1125.6619 L 1619.7805,1124.2795 L 1620.4894,1124.2972 C 1620.8734,1124.3042 1621.8186,1124.8038 1622.5984,1125.4138 C 1623.3782,1126.0237 1624.3869,1126.5233 1624.8493,1126.5303 L 1625.6999,1126.548 L 1623.6087,1125.1302 C 1622.4611,1124.3504 1621.1389,1123.7124 1620.6667,1123.7124 L 1619.7982,1123.7124 L 1624.3707,1119.193 L 1623.6087,1117.9348 L 1622.2972,1120.5577 L 1617.9196,1122.2237 L 1616.36,1120.0969 L 1616.36,1117.474 L 1620.897,1113.061 L 1620.0109,1112.7243 C 1619.5152,1112.534 1618.2699,1112.3698 1617.2462,1112.3698 L 1615.3853,1112.3698 L 1614.6764,1107.2656 L 1615.9347,1104.5363 L 1618.026,1103.9692 L 1619.3552,1101.0804 L 1617.4411,1097.0573 L 1616.3423,1097.0573 L 1616.6436,1101.7184 L 1614.8359,1102.9058 L 1611.9471,1102.1792 L 1611.2736,1100.4069 L 1612.9041,1096.4902 z "},"wv2":{"name":"WV-2","path":"M 2052.1984,718.79786 L 2049.7949,713.98254 L 2047.4675,713.9201 L 2046.5966,712.55672 L 2047.0943,711.0274 L 2045.0385,709.33991 L 2044.1824,709.93267 L 2042.7434,708.29872 L 2040.7871,708.29872 L 2039.6603,705.57616 L 2036.2305,705.48587 C 2036.1012,706.30231 2036.5798,707.14835 2035.3574,707.64867 L 2033.7809,705.45632 L 2031.4271,708.29197 L 2032.1241,705.79564 L 2030.527,700.83598 L 2029.2909,700.95281 L 2028.1015,701.90383 L 2025.8362,701.60178 L 2022.166,705.75571 L 2020.0915,705.2132 L 2017.6595,693.73236 L 2009.2447,688.30964 L 2010.5145,687.52485 L 2010.4784,684.47256 L 2008.8131,682.2708 L 2008.8131,680.98807 C 2008.8131,680.28256 2008.5169,679.05529 2008.1549,678.26086 C 2007.7929,677.46637 2007.2825,676.81632 2007.0207,676.81632 L 2006.5446,676.81632 L 2006.5446,675.31264 L 2009.3395,672.68695 L 2008.9115,669.16009 L 2010.1705,664.05593 L 2012.3347,661.58784 L 2011.6302,660.44797 L 2012.955,659.62915 L 2014.3258,661.50385 L 2016.7267,661.50385 L 2018.4631,664.15382 L 2017.7682,667.6281 L 2020.2369,668.41165 L 2022.4242,666.4322 L 2022.4242,665.19682 C 2022.4242,664.51734 2022.578,663.80758 2022.766,663.61952 L 2023.1079,663.27766 L 2025.8674,664.32679 L 2026.521,662.62365 L 2025.0883,660.89742 L 2025.1833,657.55612 C 2024.167,656.80848 2023.1946,656.02516 2022.4242,655.04204 L 2024.1612,654.69831 L 2024.7771,653.09322 C 2027.5019,654.00306 2030.2066,654.97614 2032.9489,655.83256 L 2038.2849,648.74345 L 2044.1078,643.74563 L 2043.1734,646.59982 C 2045.3021,646.35363 2047.1958,648.25748 2048.1699,652.91565 C 2049.5479,651.58579 2052.2051,651.02342 2055.2171,650.67396 L 2055.9517,651.86266 L 2058.1447,651.86266 L 2060.9889,654.33574 L 2062.3307,661.59737 L 2060.1099,665.9329 L 2065.3924,668.85384 C 2069.1421,664.54451 2072.9373,660.2742 2076.6487,655.93181 C 2078.1287,655.51213 2079.429,654.99021 2080.2713,653.62893 L 2073.5106,648.35758 L 2072.7104,643.72947 L 2078.2863,637.85833 L 2093.9543,638.89787 L 2095.3885,637.70764 L 2099.1384,638.78309 L 2100.7787,641.12499 L 2104.9414,640.80365 L 2105.312,643.41817 L 2103.716,645.53765 C 2105.4794,645.85172 2109.119,644.42375 2113.1648,642.61846 L 2113.6755,635.53712 L 2115.5623,633.31891 C 2116.4485,634.6186 2117.5008,635.84717 2117.2806,637.62104 C 2124.3759,638.24312 2131.4712,638.855 2138.5665,637.70826 L 2150.2549,644.50627 L 2151.6277,643.07217 L 2153.3562,636.26662 L 2149.8772,630.12422 L 2152.0122,617.50107 C 2154.9975,612.19201 2156.1085,610.78803 2157.1597,609.50841 C 2157.4007,607.40085 2160.1127,601.91178 2163.4559,595.55909 L 2171.6521,595.2314 L 2174.5607,592.32277 L 2173.2515,590.74524 L 2175.0761,590.04501 L 2174.6219,588.68231 L 2176.3681,586.64286 L 2180.6531,586.64286 L 2183.2052,580.90057 L 2187.5809,581.44717 L 2192.0228,585.01673 L 2198.2341,583.6267 L 2198.2341,582.67296 L 2199.9354,582.67296 L 2199.9354,584.2979 L 2197.6669,585.01792 L 2200.9225,589.36695 L 2203.0547,589.77177 L 2203.4135,592.88128 L 2206.1069,592.88128 L 2206.9288,598.09313 L 2208.4359,598.67143 L 2206.5135,609.89514 L 2178.132,595.71692 L 2178.0053,600.30312 L 2178.9978,600.91653 L 2178.2632,603.23121 L 2179.7479,604.14876 L 2177.0212,609.97023 L 2178.5017,610.88517 L 2177.2503,613.50366 L 2178.8823,615.41597 L 2173.0742,625.42244 L 2174.3562,625.84977 L 2173.1392,628.52061 L 2171.7919,628.00361 L 2169.868,632.69797 L 2168.3569,632.11808 C 2166.4564,632.99854 2164.8698,637.43599 2163.4624,643.90494 L 2156.4486,640.52009 L 2154.7457,644.48999 L 2153.7463,650.59779 L 2154.6425,653.12957 L 2152.4375,653.3795 L 2150.7759,664.36774 L 2148.0678,670.14961 L 2140.1279,669.41167 L 2135.2515,663.83719 L 2130.1106,663.06623 L 2130.7494,661.40148 C 2130.104,660.58544 2129.8293,659.69533 2129.6824,658.68817 L 2127.3248,656.9172 L 2126.3955,659.42924 L 2125.6052,658.15059 L 2123.9402,658.78957 L 2123.9402,657.14263 L 2121.8343,655.23679 L 2120.7064,656.68326 C 2120.0981,660.57002 2119.1232,664.27348 2119.3803,668.59296 L 2113.0689,675.11494 L 2108.6982,675.11494 L 2104.8109,680.2191 L 2105.3206,672.56286 L 2098.3302,663.06759 L 2097.0964,664.30144 L 2094.5088,661.50941 L 2091.832,662.60164 L 2089.4147,662.22138 L 2088.1132,668.67043 L 2082.6415,677.24746 L 2078.2863,677.79666 L 2076.5147,676.26644 L 2071.9766,680.98886 L 2075.1671,681.35335 L 2075.4574,682.98164 L 2058.2547,699.78504 C 2057.2613,702.36468 2056.1436,704.44701 2054.7098,705.26486 L 2055.4841,718.21672 C 2054.2941,718.69481 2053.0684,719.27986 2052.1984,718.79786 z "},"ms3":{"name":"MS-3","path":"M 1720.6586,1047.7171 L 1718.5353,1048.7437 L 1716.3022,1048.0348 L 1715.5368,1049.6518 L 1717.5125,1050.8363 L 1718.9402,1064.9948 L 1719.9837,1067.1129 L 1725.2232,1066.5457 L 1724.0068,1069.0078 L 1725.2133,1070.8099 L 1722.5194,1073.1912 L 1720.0205,1071.8443 L 1718.9841,1072.9062 L 1713.9062,1073.2379 L 1713.4469,1078.9637 L 1708.8155,1079.3488 L 1710.0426,1090.6594 L 1703.0244,1091.4569 L 1703.6433,1098.3476 L 1705.5056,1100.3715 C 1704.9283,1102.0221 1704.4176,1103.6267 1702.1205,1106.4681 L 1705.3992,1110.8633 L 1705.3992,1112.9369 L 1703.8574,1112.9369 L 1698.6646,1108.967 L 1695.12,1108.967 L 1692.054,1111.3064 L 1690.8311,1108.4885 L 1685.9042,1112.1926 L 1684.3269,1109.995 L 1681.3494,1112.5647 L 1681.3494,1116.3397 L 1675.5186,1116.3397 C 1673.7227,1120.0393 1671.9268,1122.402 1670.1309,1123.9959 L 1667.1003,1119.4589 L 1662.1202,1120.3096 L 1657.7959,1116.8005 L 1655.9527,1118.2538 L 1654.0741,1118.3247 L 1654.3576,1123.8542 L 1665.0976,1122.9857 L 1665.8243,1128.0544 L 1675.0578,1127.5405 C 1671.5964,1130.6007 1674.0886,1129.596 1670.6271,1133.7789 C 1670.601,1134.4319 1670.5602,1135.0931 1669.6701,1135.7461 L 1668.3586,1138.2982 L 1670.2904,1140.6022 L 1667.4016,1142.8707 L 1667.2421,1146.3621 L 1668.3586,1147.5318 L 1667.8978,1151.5017 L 1669.103,1152.2283 C 1669.103,1152.63 1669.8634,1153.8422 1670.7867,1154.9222 C 1671.7097,1156.0021 1672.3158,1157.8625 1672.3285,1158.1831 L 1674.8984,1160.0972 L 1674.3667,1162.8088 L 1675.625,1163.2696 L 1674.9161,1164.014 C 1674.5262,1164.4272 1674.2071,1165.0017 1674.2071,1165.2723 L 1674.2071,1165.7508 L 1676.3871,1165.0596 L 1676.7592,1165.6976 L 1676.5997,1167.0445 L 1667.3485,1172.4146 L 1663.8216,1172.255 L 1663.0418,1173.7615 L 1659.3023,1173.1057 L 1644.4329,1174.8071 L 1644.8051,1180.1948 L 1623.0415,1182.2684 L 1622.1554,1180.8328 L 1619.0184,1181.6304 L 1615.8106,1180.3012 L 1616.4309,1179.291 L 1614.6586,1179.291 L 1614.6586,1178.4757 C 1614.4399,1177.1615 1613.9392,1175.9455 1613.3471,1174.754 L 1612.6205,1174.754 C 1612.225,1174.754 1611.498,1175.15 1611.0077,1175.6401 L 1610.1216,1176.5439 L 1610.1216,1183.1368 L 1607.2683,1183.8635 L 1606.1694,1183.2786 C 1605.5725,1182.9591 1604.7854,1182.6938 1604.4149,1182.6938 L 1603.7414,1182.6938 L 1605.2479,1184.5192 L 1610.1216,1183.9698 L 1610.1216,1186.575 L 1607.1265,1188.9322 L 1604.7339,1188.9322 L 1605.1415,1194.054 L 1608.438,1197.2973 L 1607.7291,1199.1405 L 1604.4326,1199.1405 L 1603.7768,1197.7227 C 1603.4216,1196.9429 1602.9221,1196.3049 1602.6603,1196.3049 C 1602.3985,1196.3049 1602.1818,1196.4392 1602.1818,1196.6061 C 1602.1818,1196.773 1602.6161,1197.6025 1603.1566,1198.4493 C 1603.6971,1199.2961 1604.5902,1200.328 1605.1415,1200.7355 L 1606.1517,1201.4799 L 1606.1517,1204.7763 L 1603.9541,1205.946 L 1599.3462,1205.946 L 1599.3462,1206.4068 C 1600.1672,1207.6906 1601.5614,1208.4591 1602.7489,1209.3843 L 1602.7489,1211.9363 L 1601.1362,1214.6833 C 1602.426,1215.5886 1603.7216,1216.4626 1605.0174,1217.3595 L 1605.0174,1219.8938 L 1602.938,1221.4968 C 1637.9065,1218.3513 1670.5543,1215.2058 1695.8289,1212.0604 C 1695.2189,1210.9675 1694.9236,1209.8746 1695.1909,1208.7817 L 1690.4655,1208.7817 L 1692.9401,1203.1104 L 1694.0566,1203.1104 L 1694.0566,1197.9708 L 1692.3907,1197.3328 L 1694.1098,1194.7275 L 1696.077,1195.2415 L 1699.3735,1188.3651 L 1702.5636,1188.3651 L 1702.5636,1184.6078 L 1715.5539,1183.3013 L 1713.8911,1167.6244 L 1717.911,1171.1258 L 1720.1446,1170.146 C 1721.4052,1167.6991 1720.9857,1166.484 1720.3927,1165.3963 L 1717.3621,1165.7153 L 1716.2744,1162.9284 L 1717.5859,1160.3033 L 1717.0608,1155.2766 C 1719.533,1154.534 1721.4413,1153.439 1722.9093,1152.0688 C 1724.1995,1153.1119 1725.9153,1153.8511 1728.0844,1154.2664 L 1728.0844,1151.9625 L 1730.2289,1151.3953 L 1730.8846,1148.1166 L 1730.2643,1146.5039 L 1727.2514,1145.7418 L 1724.9297,1148.666 L 1722.7453,1148.666 L 1721.1548,1144.129 L 1722.4308,1144.129 L 1721.7042,1139.6629 L 1725.5323,1138.6704 C 1725.7027,1136.7015 1725.6646,1134.7016 1725.9931,1132.751 L 1760.1271,1128.1608 C 1759.673,1106.3502 1759.7414,1084.4833 1758.5498,1062.6928 L 1740.6627,1064.8373 L 1738.1687,1047.8057 L 1722.1379,1049.5192 L 1720.6586,1047.7171 z "},"il19":{"name":"IL-19","path":"M 1664.9913,662.47721 L 1663.7153,663.66467 L 1652.9398,664.83437 L 1647.5698,667.26236 L 1646.8255,670.5588 L 1644.9114,672.15385 L 1644.7165,675.43259 L 1641.3669,679.36704 L 1641.4732,682.82295 L 1645.7089,683.05338 L 1648.2433,704.03714 L 1663.9988,703.29278 L 1663.9988,697.2316 L 1668.5359,697.2316 L 1668.9258,699.571 L 1673.7818,698.93298 L 1672.3817,683.62051 L 1678.0353,683.62051 C 1678.6677,686.28516 1678.7411,688.07944 1678.7442,690.42605 L 1684.8231,690.42605 L 1685.4257,698.13543 L 1680.481,698.91523 L 1681.0481,707.35127 C 1675.2419,707.27573 1675.5765,706.61463 1670.2372,708.09563 L 1670.2372,711.79972 L 1655.3856,713.1112 L 1654.8007,715.36196 L 1649.2535,716.08863 L 1649.2535,721.75991 L 1643.4759,721.051 L 1644.2557,716.47853 L 1628.0748,718.19761 L 1625.1683,696.20368 L 1615.1194,697.30249 L 1613.5244,695.24665 L 1612.337,697.2316 L 1609.4481,697.2316 L 1610.2279,702.05219 L 1612.0889,703.50546 L 1612.0889,708.00704 L 1616.2714,708.00704 C 1616.9558,711.92046 1617.44,716.15419 1617.2107,721.52949 L 1625.505,723.798 L 1629.3685,722.18526 L 1633.941,722.18526 L 1636.2095,738.22434 L 1651.3093,736.80652 L 1654.4994,763.88691 L 1681.5798,761.28169 L 1681.5798,767.04157 L 1702.9712,764.38315 L 1707.0829,797.45384 L 1697.0341,798.87167 L 1696.0062,794.49417 L 1690.6539,794.15741 L 1692.8692,817.17932 L 1698.3101,817.17932 L 1698.8772,821.04288 L 1705.9309,823.04553 L 1709.0856,825.24315 L 1714.7568,825.98751 L 1718.7091,828.80546 L 1719.6661,828.80546 C 1720.1901,828.80546 1721.0242,828.65483 1721.5092,828.46869 L 1722.3776,828.13199 L 1723.1043,824.26843 L 1722.4131,821.53912 L 1718.2305,817.23246 L 1718.2837,815.49563 C 1718.3115,814.54654 1718.5173,812.42116 1718.7445,810.76367 L 1719.1698,807.7508 L 1721.8637,805.97852 L 1725.0184,806.61654 L 1725.6918,805.53543 C 1726.0626,804.94164 1727.0813,804.10564 1727.9426,803.67456 C 1728.8039,803.24338 1731.3869,802.41526 1733.6848,801.8314 L 1737.8496,800.76803 L 1738.4522,799.22612 L 1734.3405,795.85879 L 1732.0366,790.6306 L 1733.4721,786.6607 L 1736.5382,784.39219 L 1735.9533,783.43516 L 1731.6112,783.43516 L 1730.8314,778.22466 L 1721.846,779.53615 L 1721.846,784.56942 L 1715.7316,784.56942 L 1715.1822,776.87773 C 1718.4352,775.75476 1721.9498,775.4725 1725.3728,775.49536 L 1724.593,768.15813 L 1729.7858,766.86434 L 1728.9351,753.18236 L 1732.5505,752.22533 L 1732.905,747.98962 L 1736.5913,747.63516 L 1736.5913,744.78177 L 1739.7991,745.49068 L 1741.1283,742.5487 L 1741.1283,739.32315 L 1743.9994,738.59655 L 1745.0982,735.70771 L 1743.964,724.59556 L 1747.3667,722.82328 C 1747.362,722.62717 1747.1706,722.1949 1746.9414,721.8485 C 1745.7452,720.74833 1744.2799,720.03244 1742.8297,719.31417 L 1742.8297,714.13912 L 1733.4544,715.4683 L 1730.6364,695.63655 L 1705.9663,698.50764 L 1703.9814,681.63556 L 1698.5937,682.02546 L 1698.5937,680.21774 C 1697.5157,680.14656 1696.273,679.10923 1695.0137,677.94922 L 1691.8768,677.94922 L 1691.1501,674.67048 L 1686.684,675.27305 L 1686.684,670.57655 L 1670.9462,672.29563 C 1669.8817,664.52217 1670.4078,663.13315 1669.0321,662.63675 L 1664.9913,662.47721 z "},"ga2":{"name":"GA-2","path":"M 1969.3445,1058.3508 L 1966.2784,1060.7611 L 1957.7715,1060.7611 L 1957.7715,1062.8524 L 1962.9997,1070.4909 L 1963.7972,1086.2819 C 1962.2604,1086.3828 1959.4513,1090.7065 1953.837,1093.6546 L 1946.7125,1093.6191 L 1944.1604,1090.8189 L 1939.0562,1090.8189 C 1939.244,1093.3483 1939.4454,1095.8883 1937.8157,1097.0041 L 1941.0412,1097.7662 L 1944.7275,1100.5132 L 1944.0456,1102.3657 C 1941.3756,1104.9178 1938.6673,1107.4727 1937.4081,1109.9241 L 1938.4182,1116.96 C 1938.1048,1120.6404 1937.1025,1124.3209 1935.5471,1128.0013 C 1936.8958,1130.5584 1938.1016,1133.2203 1937.922,1136.8981 L 1942.4945,1141.4706 L 1942.0514,1142.7112 L 1943.4338,1145.5468 L 1943.2743,1162.2062 L 1942.5122,1162.986 L 1944.249,1166.3534 L 1943.6287,1167.9307 L 1948.4848,1172.4854 L 1950.9659,1177.4301 L 1950.9659,1179.8936 C 1951.7596,1180.1231 1952.2618,1180.4352 1952.6673,1181.1164 C 1956.4073,1187.7378 1959.0061,1194.5116 1961.2882,1194.8009 C 1991.7952,1191.4414 2022.8708,1188.0345 2049.0792,1185.0332 L 2049.0792,1179.7518 C 2044.3702,1175.2825 2040.4131,1168.6811 2034.5111,1162.4721 L 2027.2448,1157.6338 L 2027.2271,1156.3045 L 2026.2168,1156.8362 L 2026.1991,1159.0161 C 2018.0759,1159.478 2010.4078,1160.3278 2003.7089,1159.3883 C 2003.7369,1151.5643 2003.4176,1142.0227 2004.4356,1139.0249 L 2017.5327,1139.1312 L 2017.2137,1133.0523 L 2014.6616,1130.5534 L 2015.7073,1116.9068 L 2026.3941,1116.9068 L 2026.3941,1105.9896 C 2027.3393,1102.2546 2029.2336,1097.9614 2029.2297,1094.7888 L 2019.5708,1094.7888 L 2020.6873,1074.9748 L 2025.0471,1072.334 L 2021.0063,1070.9162 L 2017.3909,1067.8325 L 2016.2212,1064.731 L 2001.9366,1064.5538 L 1998.5693,1066.0247 C 1997.7101,1068.5019 1995.8893,1069.7365 1993.3411,1071.7138 L 1991.9764,1068.9136 C 1985.8009,1066.8829 1980.4899,1063.4374 1975.8133,1058.9711 L 1969.3445,1058.3508 z "},"ga10":{"name":"GA-10","path":"M 2026.9419,1035.2081 C 2024.184,1034.2652 2020.4909,1033.7258 2016.4693,1033.2567 L 2016.1062,1028.7197 C 2014.4832,1027.0777 2013.4377,1025.2433 2012.783,1023.2786 L 2012.783,1016.6661 L 2004.8675,1013.4687 L 2002.7942,1011.4223 L 2002.084,1011.4223 L 2000.8597,1005.3853 C 2001.3552,1002.8669 2003.2569,999.80758 2007.2245,995.99715 L 2007.9691,989.1134 C 2004.0549,985.93816 2003.2794,984.82999 2002.6066,983.78937 L 2003.7115,981.44003 C 2004.9154,981.37181 2006.7628,979.7408 2008.7286,978.45354 L 2008.7073,974.27533 L 2003.187,970.58899 L 1996.8959,970.58899 L 1994.1466,967.84494 L 1991.6175,967.74002 C 1991.7991,964.12957 1993.2829,964.60743 1995.8872,957.27213 C 1993.3762,955.33601 1990.8309,952.88516 1988.2392,949.73833 C 1986.799,946.53865 1986.0018,943.33891 1985.2772,940.13923 L 1981.5547,934.85988 C 1974.8425,929.47284 1973.339,929.50659 1966.324,925.14922 C 1981.4951,922.71063 1993.085,920.08357 2005.3394,917.49145 L 2004.6962,920.70787 L 2002.2236,923.38863 C 2000.8637,924.86305 1999.7484,926.37019 1999.7451,926.73781 C 1999.7417,927.10542 1999.3965,927.74871 1998.9779,928.16731 C 1998.5593,928.58591 1997.9016,929.5173 1997.5164,930.2371 L 1996.816,931.54575 L 1997.3849,933.02828 L 1995.6335,935.52887 L 1996.8405,938.17798 L 1999.5658,939.75891 C 2001.0647,940.62838 2002.3762,941.54066 2002.4801,941.78617 L 2002.6692,942.23256 L 2006.3139,942.23256 L 2007.6178,943.22503 C 2008.335,943.77089 2009.5951,944.81259 2010.418,945.53988 C 2011.241,946.26717 2013.0223,947.367 2014.3766,947.98392 L 2016.8389,949.10565 L 2017.5329,948.52961 C 2017.9146,948.21281 2019.2453,947.79076 2020.4899,947.59175 L 2022.7529,947.22987 L 2024.3698,950.26072 C 2025.259,951.92768 2026.597,953.92959 2027.3431,954.70939 C 2028.0892,955.48919 2029.4568,956.96543 2030.3825,957.98994 L 2032.0654,959.85268 L 2032.0654,960.70638 C 2032.0654,961.17596 2032.5862,962.58108 2033.2228,963.82887 L 2034.3803,966.09767 L 2035.6331,966.62255 C 2036.3222,966.91122 2037.3326,967.5033 2037.8784,967.93829 C 2038.4243,968.37322 2038.8709,968.95339 2038.8709,969.22754 C 2038.8709,969.50175 2039.5151,970.36685 2040.3025,971.14999 C 2041.0898,971.93314 2042.3021,973.45123 2042.9964,974.52345 L 2044.2586,976.47301 L 2047.945,977.42698 L 2047.945,978.50577 L 2050.1909,979.65154 C 2051.4262,980.28173 2052.782,980.79731 2053.2039,980.79731 C 2053.6259,980.79731 2055.2949,981.43595 2056.9128,982.21649 C 2058.5309,982.99703 2059.8562,983.82646 2059.8582,984.05966 C 2059.8602,984.29286 2060.6258,984.91841 2061.5596,985.44975 L 2063.2574,986.41585 L 2063.2574,988.5613 L 2064.4568,989.64168 C 2065.1164,990.23592 2065.873,991.28908 2066.138,991.98211 L 2066.6199,993.2421 L 2070.7506,994.96798 L 2071.7145,994.37233 L 2075.4791,995.94526 L 2079.8628,1000.0797 L 2080.8043,1000.0797 C 2081.3221,1000.0797 2082.0102,1000.3441 2082.3334,1000.6672 L 2082.9209,1001.2548 L 2082.5091,1003.9282 C 2082.2827,1005.3986 2082.2142,1006.7967 2082.3571,1007.0351 C 2082.4999,1007.2735 2083.6563,1007.9988 2084.9267,1008.647 C 2086.1972,1009.2952 2087.5449,1010.1134 2087.9217,1010.4653 L 2088.6067,1011.1052 L 2088.1013,1013.0377 L 2089.8294,1013.9314 C 2090.7799,1014.4229 2091.953,1014.825 2092.4364,1014.825 L 2093.3153,1014.825 L 2093.3153,1016.5264 L 2095.4676,1018.6787 L 2089.081,1019.4767 L 2085.336,1022.7648 C 2084.0886,1022.6557 2082.9325,1022.8386 2082.0861,1024.0125 L 2075.3733,1024.0125 L 2067.7055,1020.7799 L 2058.9212,1012.0527 L 2056.9552,1007.6927 C 2052.2425,1007.0465 2046.8693,1006.1311 2044.2019,1006.3181 L 2042.917,1005.0332 L 2041.412,1005.8062 L 2041.2303,1007.0874 L 2043.9904,1009.5742 L 2044.3496,1016.5677 L 2046.23,1019.8016 C 2045.3353,1020.6136 2044.3436,1021.3771 2044.5422,1022.7357 L 2041.3078,1024.4083 L 2039.5053,1026.564 C 2038.514,1027.7496 2037.5191,1028.9087 2037.2944,1029.1396 C 2037.0698,1029.3706 2036.0835,1030.2 2035.1027,1030.9828 C 2034.1219,1031.7656 2033.1175,1032.406 2032.8707,1032.406 C 2032.6239,1032.406 2031.8952,1032.8975 2031.2512,1033.4983 L 2030.0804,1034.5904 L 2026.9419,1035.2081 z "},"nc5":{"name":"NC-5","path":"M 2138.4339,793.27127 C 2111.0674,798.07326 2081.3023,803.83472 2058.809,806.68744 L 2057.7634,809.80664 L 2058.8267,812.89041 L 2057.7811,817.76414 L 2058.809,820.86565 L 2059.8547,820.86565 L 2059.8547,822.62018 L 2054.0948,822.35437 L 2050.2844,826.51919 L 2051.3832,827.19265 L 2050.4439,830.50684 L 2052.1453,832.3677 L 2053.5631,831.94236 C 2055.7041,833.91534 2056.5687,835.11714 2056.9304,836.49714 C 2058.7078,836.38479 2062.8594,834.33757 2069.8503,833.92731 C 2078.6173,835.24032 2080.0833,835.95377 2082.5576,839.49226 C 2082.5518,841.93891 2082.7008,844.72725 2084.2589,850.88803 L 2085.4286,850.92347 C 2086.4107,849.84746 2090.7846,848.33595 2093.3861,847.62704 L 2094.2191,850.07278 C 2095.7012,850.29839 2096.6808,848.15901 2097.5687,844.7205 L 2103.8603,847.94605 L 2104.4452,850.12592 L 2107.5112,851.31338 L 2109.6025,854.6807 C 2110.8893,855.09805 2112.1833,855.49805 2113.4483,855.97444 L 2114.0154,840.62652 C 2121.8839,842.01984 2122.8635,843.36478 2127.3075,844.68506 C 2125.9478,843.56867 2126.0738,842.48284 2126.278,841.17096 L 2128.6784,839.01371 L 2129.9656,839.09924 L 2130.0729,841.67731 L 2129.9477,838.66918 L 2127.7922,836.80378 L 2128.4039,835.80263 L 2130.1964,836.30216 L 2128.7393,830.47888 C 2131.1183,828.37069 2133.054,827.85903 2134.6877,828.43416 L 2135.0896,827.72904 C 2133.0173,825.8016 2133.0559,823.87416 2133.0143,821.94671 L 2128.5836,817.21476 L 2132.9788,813.04988 L 2133.6346,815.10572 L 2138.1184,815.86783 L 2138.1184,818.86295 L 2141.0418,824.94745 L 2144.7568,824.91949 C 2143.507,821.13719 2142.6603,815.7539 2141.671,810.0175 L 2153.666,807.89729 L 2151.889,805.26961 L 2152.9701,802.85932 L 2151.3042,799.66922 L 2147.8659,803.10744 L 2146.5899,800.34268 L 2140.5465,805.49998 L 2138.4339,793.27127 z "},"nc10":{"name":"NC-10","path":"M 2050.1903,826.86003 L 2046.7044,838.16308 C 2045.2654,839.41796 2043.4696,840.31601 2041.1926,840.73285 L 2040.0406,838.58843 L 2036.6201,838.07444 L 2035.9644,840.14803 L 2035.1491,840.21892 C 2034.7023,840.25788 2034.0985,840.32174 2033.8022,840.3607 C 2033.5059,840.39966 2032.9337,840.7506 2032.5439,841.1405 C 2032.154,841.53041 2031.5615,841.84942 2031.2147,841.84942 L 2030.5766,841.84942 L 2028.1914,844.85378 L 2031.0135,843.58942 L 2031.8811,845.27555 L 2032.0654,846.38644 L 2034.947,846.40805 L 2036.512,848.40531 L 2038.8886,845.76612 L 2040.2639,850.1401 L 2042.9925,852.52726 L 2043.7175,857.14028 L 2044.7032,857.71325 L 2046.3134,855.74747 C 2046.8116,855.384 2047.1296,855.22106 2047.4848,855.31498 C 2048.1635,854.9358 2049.0613,853.67983 2049.9014,852.6548 L 2051.1816,853.05214 L 2051.1753,850.27604 L 2052.4077,849.62129 L 2051.7922,847.96482 L 2052.4523,847.97299 C 2053.3718,848.6718 2054.1749,849.95249 2054.9218,851.5138 L 2053.6418,855.57535 L 2052.0426,855.58998 L 2052.0184,857.08555 L 2058.8362,861.28015 L 2062.4426,869.51463 L 2061.5505,872.0924 L 2056.3379,874.0583 L 2054.0433,873.34621 C 2046.1123,876.66187 2045.5503,876.24118 2043.017,876.81988 L 2043.369,880.44337 L 2041.9227,880.17722 C 2042.0421,881.77233 2041.8602,883.60835 2042.7362,884.5981 L 2046.7134,884.16266 L 2047.8817,882.84879 L 2049.6801,883.51216 L 2052.5431,882.45679 L 2055.3917,883.70227 L 2058.4511,880.50411 C 2061.0039,881.15126 2062.7958,882.09621 2063.4746,883.47666 L 2062.8276,886.9594 L 2066.3884,892.20148 L 2066.3916,893.20195 L 2094.6295,889.14874 L 2096.7712,884.75622 L 2096.1332,883.09028 L 2094.0774,884.9512 C 2091.7142,884.78038 2090.2343,883.96178 2088.7782,883.12572 L 2088.7782,881.05219 L 2093.4543,878.32969 L 2093.4164,877.39727 L 2091.5185,876.99914 L 2090.5137,874.36931 L 2106.9727,871.53781 L 2106.9618,865.95238 L 2108.6687,864.49776 L 2116.8247,863.01698 L 2114.5471,856.89602 L 2109.4784,855.05285 L 2107.2099,851.56149 L 2104.197,850.2677 L 2103.6477,848.17642 L 2097.8346,845.23444 C 2097.119,847.06394 2096.8199,849.39937 2094.8572,850.25001 L 2093.971,850.42724 L 2093.2089,847.99919 C 2089.759,849.27636 2085.656,850.62726 2085.8717,851.4906 L 2083.8541,851.46741 C 2082.4603,847.13494 2082.1045,843.24512 2082.0654,839.71315 C 2080.414,836.191 2075.0134,834.93668 2070.063,834.3881 C 2063.4636,834.76439 2061.0825,836.06771 2056.5923,836.90751 C 2056.3313,835.26029 2055.0399,833.76023 2053.4922,832.29681 L 2052.1275,832.8108 L 2050.0717,830.55998 L 2050.8679,827.46261 L 2050.1903,826.86003 z "},"nc11":{"name":"NC-11","path":"M 2030.8848,843.88977 L 2028.1841,845.09265 L 2026.9612,849.59424 L 2022.371,853.72367 L 2019.0037,853.05021 L 2018.2948,848.56632 L 2016.6465,847.9283 L 2011.5069,853.0679 L 2011.2411,857.26823 L 2009.7524,858.20751 L 2007.0585,856.43523 L 2005.8356,857.64038 L 2006.2787,859.25318 C 2006.5254,860.13381 2006.6608,861.10343 2006.58,861.41536 C 2006.4992,861.72728 2006.3564,862.3653 2006.261,862.83318 C 2006.1655,863.30106 2005.4913,864.83372 2004.7546,866.23595 L 2003.4077,868.78803 L 1999.3491,868.43357 L 1995.2906,871.05654 L 1994.1386,873.51998 L 1991.5334,873.89219 L 1991.3207,875.00869 C 1991.2042,875.61955 1990.7258,876.70424 1990.2574,877.41899 L 1989.4067,878.71278 L 1988.042,878.71278 L 1986.6951,880.1483 L 1985.1709,881.26486 C 1984.3306,881.88473 1983.3038,882.78193 1982.9024,883.24981 C 1982.501,883.71769 1981.8483,884.55443 1981.4491,885.11067 L 1980.7225,886.1209 L 1977.621,886.38671 C 1975.9088,886.52645 1973.0087,886.99326 1971.1877,887.43238 L 1967.8735,888.22988 L 1964.2403,891.75674 L 1962.3085,891.75674 L 1962.3085,892.27067 C 1962.3085,892.55634 1961.1426,894.02378 1959.721,895.53166 L 1957.1335,898.27872 L 1957.7538,902.35496 L 1957.3639,902.74486 C 1957.1518,902.9568 1956.9085,903.63548 1956.8145,904.25127 L 1956.6372,905.36783 L 1957.1846,907.76412 L 1954.6523,910.29476 L 1949.4302,912.23695 L 1947.6341,910.47199 L 1945.1706,913.94565 L 1945.9859,927.34407 C 1965.4358,923.78845 1984.4551,920.41738 2005.1267,916.3382 L 2019.8721,908.48704 L 2022.1584,908.43384 L 2023.4166,907.33503 C 2024.116,906.73625 2024.6927,905.94517 2024.6927,905.5805 L 2024.6927,904.92473 L 2026.2168,904.53483 C 2027.0556,904.32431 2028.5044,903.60775 2029.4424,902.93978 C 2030.3805,902.27182 2032.05,901.26573 2033.1465,900.70671 C 2034.2429,900.14769 2035.4388,899.69654 2035.8049,899.69654 L 2036.4784,899.69654 L 2038.3215,896.8609 L 2040.0052,896.8609 L 2040.0052,897.92427 C 2044.7831,896.18318 2056.4114,895.15968 2066.0931,893.29859 C 2066.6677,892.51051 2064.2316,889.40639 2062.6194,886.93615 L 2063.2397,883.53337 C 2062.2393,882.05952 2060.2026,881.2141 2058.5171,880.84575 L 2055.3708,884.02961 L 2052.482,882.71813 L 2049.6641,883.78149 L 2047.8386,883.09028 L 2046.7346,884.45343 L 2042.6281,884.96889 C 2041.5469,883.77758 2041.7621,881.72208 2041.7065,879.84704 L 2043.1244,880.1306 L 2042.8408,876.49741 C 2045.9551,876.07949 2049.7713,874.79761 2054.0593,872.93516 L 2056.4696,873.69721 L 2061.5206,871.76545 L 2062.2295,869.53238 L 2058.685,861.37991 L 2051.9149,857.16189 L 2051.9149,855.4605 L 2053.5277,855.4605 L 2054.8214,851.52605 C 2054.1407,850.26226 2053.4101,849.0532 2052.3756,848.08783 L 2051.9503,848.08783 L 2052.5529,849.68288 L 2051.3477,850.42724 L 2051.3477,853.28057 L 2049.9477,852.81978 C 2046.1208,857.6668 2048.1396,853.51667 2044.7194,857.90625 L 2043.5497,857.17958 L 2042.8231,852.60711 L 2040.0406,850.17912 L 2038.7114,846.17377 L 2036.496,848.92077 L 2034.8479,846.67001 L 2031.7818,846.67001 L 2031.6046,845.37622 L 2030.8848,843.88977 z "},"al5":{"name":"AL-5","path":"M 1791.0838,993.94704 C 1790.1059,988.5389 1789.8665,983.29494 1788.15,977.72268 L 1758.1422,980.83638 L 1758.1422,961.07076 L 1755.3857,960.37892 L 1752.0866,955.49055 C 1794.7441,951.45293 1837.8639,945.10393 1880.9256,939.04563 L 1883.3136,946.78966 L 1881.7668,948.09638 L 1881.1534,952.82187 L 1878.8134,954.82718 L 1875.9003,961.5231 C 1871.0681,966.6044 1867.0958,970.92689 1867.2684,971.59219 L 1862.3403,974.23353 C 1861.035,972.80902 1861.1394,971.88204 1861.0457,970.88515 C 1857.4963,970.63623 1858.4387,968.7465 1857.7774,966.25063 L 1851.7168,967.08215 L 1849.4734,968.62508 L 1849.4254,972.85751 L 1846.4735,973.10846 L 1844.7362,975.75128 L 1844.2063,975.26599 L 1842.8164,976.23283 L 1839.4352,975.40193 C 1838.8202,971.99797 1837.9821,974.42227 1837.3392,970.7952 L 1834.7836,970.72232 L 1833.2405,973.10846 L 1832.0641,973.13636 L 1830.2671,970.3859 L 1827.0429,973.37036 C 1823.7857,974.04967 1819.7146,972.87804 1814.9715,970.58582 C 1815.9591,976.37376 1818.6087,979.67003 1820.7038,981.88506 L 1818.8823,984.08183 L 1817.6288,983.5214 L 1816.7006,979.13477 C 1815.0114,977.84104 1814.004,977.60091 1813.1237,977.55713 L 1813.1537,975.16595 L 1810.847,974.22134 L 1809.9282,974.33147 L 1811.3047,991.34227 L 1791.0838,993.94704 z "},"al2":{"name":"AL-2","path":"M 1888.1742,1078.2712 L 1861.4305,1082.4006 L 1860.6153,1085.1476 L 1846.0649,1087.5579 L 1846.7029,1090.1277 L 1835.6439,1091.6696 C 1836.704,1094.6146 1838.5101,1097.873 1837.3984,1098.9359 L 1840.5708,1104.7136 L 1842.0063,1104.9262 L 1841.3152,1106.7162 L 1844.2926,1109.5696 L 1842.5026,1111.6431 C 1842.8502,1112.8242 1842.772,1114.0065 1842.0418,1115.1877 L 1844.7002,1117.7043 L 1840.2518,1118.6791 L 1841.4747,1128.8697 L 1844.0267,1128.8697 C 1844.31,1130.5322 1844.73,1132.1932 1844.8597,1134.0093 L 1842.3608,1134.7182 C 1842.9309,1139.2621 1843.3895,1144.0487 1844.3989,1147.5672 L 1838.958,1150.8459 L 1836.4768,1150.9346 L 1836.6895,1154.0006 L 1833.2159,1156.3045 C 1832.7188,1172.5608 1828.9947,1165.0255 1823.8405,1177.8554 L 1820.4732,1181.3468 L 1855.5111,1176.6503 L 1856.096,1181.1696 L 1859.7646,1180.6379 L 1861.4128,1191.8742 C 1910.7149,1184.702 1936.3599,1180.7776 1949.814,1178.0858 L 1947.4214,1173.3361 L 1942.3881,1168.2851 L 1942.973,1166.0698 L 1941.2539,1162.7556 L 1942.2641,1161.4264 L 1942.0691,1144.9797 L 1940.35,1140.9744 L 1936.7877,1137.4121 L 1936.2384,1133.1586 L 1935.1395,1132.4674 L 1935.1395,1131.3509 C 1935.141,1130.7366 1934.9617,1129.0221 1934.7496,1127.5405 L 1934.3774,1124.8466 L 1935.5294,1124.8466 L 1935.9548,1123.287 C 1936.1896,1122.4293 1936.4293,1121.3446 1936.4865,1120.8767 C 1936.5437,1120.4089 1936.7606,1119.1328 1936.965,1118.0411 L 1937.3372,1116.0561 L 1936.7523,1114.2839 L 1930.7443,1115.294 L 1925.8351,1110.5266 L 1917.2218,1112.1039 L 1916.4243,1107.1593 C 1915.4285,1106.8085 1903.6495,1108.5841 1894.4658,1109.8709 L 1892.7112,1109.1797 L 1893.2606,1107.3365 L 1891.9491,1105.8833 L 1891.701,1107.9037 L 1886.8627,1108.6657 L 1889.716,1127.6291 L 1873.3934,1129.9508 L 1872.649,1124.8998 L 1867.1904,1125.5555 L 1865.4004,1114.0003 L 1867.598,1110.3849 L 1867.598,1106.0251 L 1873.677,1109.4633 L 1876.8139,1108.01 L 1875.3784,1099.8752 L 1876.1936,1099.4853 L 1877.2215,1100.974 L 1878.6748,1099.5562 C 1879.7007,1100.6856 1880.8759,1100.6831 1882.0421,1100.7614 L 1885.5335,1098.9536 L 1884.9487,1097.2346 L 1887.8374,1097.9789 L 1887.8197,1096.7915 L 1890.8503,1096.9864 C 1890.5217,1092.4041 1889.2125,1089.4435 1888.6527,1084.4564 C 1887.5411,1084.1711 1886.9254,1083.3804 1886.7386,1082.1702 C 1888.077,1081.1909 1888.0112,1079.6913 1888.1742,1078.2712 z "},"al4":{"name":"AL-4","path":"M 1775.2021,1074.9828 L 1772.9283,1073.4276 L 1773.5865,1069.3712 L 1771.2156,1067.3411 L 1772.8785,1065.5037 L 1770.3693,1063.1616 L 1770.3277,1060.2546 C 1771.0511,1060.4318 1772.5928,1058.2452 1774.3048,1055.5665 L 1772.3007,1054.101 L 1772.8245,1050.1491 L 1770.016,1050.1287 L 1768.9325,1052.1532 L 1766.7397,1051.5798 L 1768.0015,1055.6598 L 1766.9743,1057.4923 C 1765.4365,1057.884 1763.7908,1056.8195 1762.0311,1054.2148 C 1761.3383,1053.8643 1760.3958,1054.3935 1759.703,1054.8149 L 1758.1234,981.42268 L 1787.7236,978.32508 L 1790.6206,994.52426 L 1811.9336,991.84758 L 1810.4118,974.6941 L 1812.5865,975.24739 L 1812.5865,977.96166 C 1814.2198,978.18001 1815.492,978.68714 1816.4624,979.43575 L 1817.2668,983.72352 L 1818.9194,984.35769 L 1821.3305,981.94659 C 1818.2918,978.38474 1815.6752,974.80276 1815.389,971.10979 C 1818.9741,972.8511 1822.6719,974.29189 1827.0429,973.93749 L 1830.2839,970.87256 L 1832.0072,973.42463 L 1833.5304,973.42463 L 1834.8773,970.97906 L 1837.0792,971.15612 C 1837.6927,974.26279 1838.9036,972.52216 1839.1186,975.62884 L 1842.9279,976.6605 L 1844.1665,975.70302 L 1844.7592,976.29567 L 1846.5895,973.50239 L 1849.7335,973.14107 L 1849.7335,968.74463 L 1852.002,967.32 L 1857.3897,966.64081 C 1857.5346,969.72894 1858.5826,971.37208 1860.7925,971.15612 C 1860.6631,972.82229 1861.3345,973.81403 1862.3215,974.54001 L 1867.5267,971.79743 C 1867.5636,970.65427 1872.3212,965.86929 1876.3007,961.68467 L 1879.1321,954.99295 L 1881.2876,953.22748 L 1881.9234,948.48776 L 1883.4642,947.209 L 1890.0273,966.60928 L 1887.7131,968.67714 L 1887.4475,971.9535 C 1886.6661,976.2098 1886.2831,973.95887 1879.7913,984.19118 L 1877.9395,984.42143 L 1877.9063,985.90147 L 1875.982,985.90147 L 1877.651,994.58545 L 1880.216,992.82594 L 1879.5077,993.68775 L 1884.2661,1001.2916 L 1884.2661,1004.3366 L 1877.7945,1004.0916 L 1876.2378,1005.1336 L 1876.3263,1007.0066 L 1873.1891,1007.0509 L 1872.2704,1010.5091 C 1871.0943,1010.6561 1870.1327,1011.2677 1869.6624,1012.9437 L 1868.1063,1012.0295 L 1860.2701,1016.1614 L 1860.9011,1014.8675 L 1859.5413,1013.2205 L 1854.0308,1012.0994 L 1850.3145,1016.5635 L 1850.2536,1015.9578 C 1848.0997,1017.3907 1845.6863,1018.5669 1843.6481,1018.4947 L 1843.3437,1021.0634 L 1840.8221,1021.329 L 1834.1698,1017.6607 L 1828.052,1017.6607 L 1822.5445,1022.1977 L 1820.761,1022.1977 L 1820.6094,1029.0475 L 1819.2707,1029.0032 L 1819.9236,1030.7046 L 1818.2578,1030.7046 L 1818.2578,1032.9731 L 1815.4222,1032.9731 L 1815.4222,1034.1074 L 1813.4325,1034.6829 L 1813.3811,1037.6661 L 1814.2781,1038.4652 C 1813.5312,1039.299 1812.5525,1039.4378 1811.4523,1039.2116 L 1811.4523,1040.8773 L 1810.1935,1040.3573 L 1809.5296,1041.6571 L 1807.9167,1041.6571 L 1807.5087,1037.4662 C 1805.7837,1037.5334 1804.2386,1037.4533 1803.7961,1036.4711 L 1791.0357,1037.7388 L 1791.0357,1039.2472 L 1789.2252,1039.9419 L 1789.8703,1043.1677 L 1780.7571,1044.4061 L 1784.1915,1067.3279 C 1780.464,1069.0663 1778.0751,1072.1763 1775.2021,1074.9828 z "},"wv3":{"name":"WV-3","path":"M 2119.9349,668.5916 L 2113.2002,675.68071 L 2108.8227,675.68071 L 2104.3468,681.69357 L 2105.0202,672.6984 L 2098.3131,663.71781 L 2096.913,664.88751 L 2094.4318,662.03417 C 2092.9146,662.96863 2091.3209,663.20178 2089.6821,662.92031 L 2088.3883,669.15873 L 2083.0892,677.66566 L 2078.2863,678.37457 L 2076.5141,676.83266 L 2072.7746,680.69622 L 2075.433,681.06843 L 2075.8406,683.17741 L 2058.5609,699.9609 C 2056.8301,703.82662 2055.9713,704.84116 2054.9632,705.45496 L 2055.7253,718.2685 C 2054.4516,719.00911 2053.4899,719.45039 2052.2162,719.34962 L 2049.6818,714.24546 L 2047.5196,714.24546 L 2046.2259,712.68585 L 2046.8639,711.01991 L 2045.1625,709.61979 L 2044.0991,710.25781 L 2042.699,708.57417 L 2040.5546,708.57417 L 2039.3849,706.02209 L 2036.6024,705.86256 C 2036.6875,706.86785 2036.3004,707.66535 2035.2909,708.18427 L 2033.749,706.07523 L 2030.7007,709.51345 L 2031.5514,705.79167 L 2030.3285,701.2015 C 2029.6606,701.32462 2028.9865,701.45211 2028.5562,702.40665 L 2025.8978,702.05219 L 2022.1406,706.23476 L 2019.8189,705.29543 L 2017.1428,693.91741 L 2008.8663,688.51199 L 2006.58,688.28157 L 2005.4457,689.64625 L 2005.6939,697.88731 L 2004.5951,698.70256 C 2003.9895,699.14532 2003.0366,699.50011 2002.4861,699.50011 L 2001.4936,699.50011 L 1995.716,702.90288 L 1992.9158,702.90288 L 1993.2879,704.46249 C 1993.4917,705.32027 1993.977,706.4049 1994.369,706.87278 L 1995.078,707.72348 L 1995.8578,712.43773 L 1993.9259,713.5188 L 1995.202,714.31635 L 1995.202,717.57734 L 1994.6349,717.93179 C 1994.3229,718.1245 1994.0677,718.53233 1994.0677,718.83563 L 1994.0677,719.38506 L 1995.0602,719.73952 C 1995.6061,719.93784 1997.1373,721.27649 1998.463,722.69919 C 1999.7886,724.12183 2000.8733,725.43825 2000.8733,725.64117 C 2000.8733,725.84403 2001.6283,726.33766 2002.557,726.72229 L 2004.2584,727.41345 L 2004.0988,728.35278 C 2004.0191,728.86371 2003.7667,729.5889 2003.5317,729.96553 L 2003.1063,730.63899 L 2004.6837,731.45424 C 2005.5524,731.90346 2006.7487,732.81887 2007.3421,733.47464 L 2008.4232,734.66209 L 2007.413,734.66209 L 2008.8663,736.02672 C 2009.6706,736.77249 2011.1512,737.80767 2012.1627,738.33068 L 2014.0059,739.27001 L 2013.3501,740.98909 L 2016.3275,744.87041 L 2018.9683,744.87041 L 2019.9784,746.69582 L 2020.3329,745.79199 C 2020.5255,745.28997 2020.8848,744.87041 2021.1304,744.87041 C 2021.376,744.87041 2021.9214,745.63603 2022.3356,746.57179 L 2023.0799,748.27318 L 2023.6825,748.27318 C 2024.0118,748.27318 2024.559,748.65038 2024.9054,749.10612 L 2025.5434,749.93912 L 2028.379,749.93912 C 2029.9386,749.94417 2031.7826,749.93022 2032.473,749.90367 L 2033.7313,749.85048 L 2035.539,751.6582 L 2032.6148,754.79516 L 2036.0176,756.21298 L 2036.3366,757.77259 C 2036.5175,758.63207 2036.8722,759.715 2037.1164,760.18288 C 2037.3605,760.65076 2038.2522,761.37913 2039.1013,761.79563 L 2040.6432,762.55773 L 2041.2635,764.15278 L 2045.96,764.18823 L 2049.9299,767.591 L 2054.4669,766.93523 L 2057.1608,765.1807 L 2057.7102,763.01853 L 2058.3659,763.01853 C 2058.7227,763.01853 2059.7089,762.3754 2060.5636,761.58295 L 2062.1232,760.12969 L 2062.1232,758.41061 L 2063.9486,756.58513 L 2064.8702,757.22315 C 2065.3829,757.57653 2067.1837,758.66031 2068.8578,759.63345 L 2071.9061,761.40573 L 2074.8836,758.55239 L 2082.6461,755.07872 L 2083.5855,755.66355 L 2087.9098,751.56962 L 2085.8717,750.0809 L 2086.6338,746.00466 L 2087.4136,746.00466 C 2087.8392,746.00466 2089.0152,746.51616 2090.0366,747.13892 C 2091.0579,747.76157 2092.0843,748.27193 2092.3051,748.27318 C 2092.5258,748.27431 2094.7482,746.35912 2097.2497,744.01971 L 2101.8045,739.76625 L 2104.197,739.76625 L 2104.4983,740.90051 C 2104.6614,741.52435 2104.9802,742.03476 2105.2073,742.03476 C 2105.4342,742.03476 2107.0427,740.65834 2108.7873,738.9687 L 2111.9596,735.88493 L 2110.3291,735.26467 L 2110.3291,732.73028 L 2114.3877,728.56546 L 2110.9317,727.36031 L 2110.2405,724.56011 L 2111.4279,722.32704 L 2110.7899,721.70672 L 2111.4811,719.52684 C 2111.8649,718.33372 2112.384,716.85425 2112.6331,716.23041 C 2112.8822,715.60657 2113.2644,714.45813 2113.4838,713.67833 C 2113.7031,712.89853 2114.379,711.62249 2114.9725,710.84269 C 2115.566,710.06288 2116.9572,708.04487 2118.074,706.3588 L 2120.1121,703.29278 L 2120.6438,701.37873 C 2120.9346,700.32545 2121.2651,698.13248 2121.3881,696.50493 C 2121.511,694.87745 2121.7055,692.754 2121.8135,691.79068 L 2122.0084,690.03615 L 2126.3328,684.16989 L 2124.9859,682.53939 L 2125.3226,681.47602 C 2125.5079,680.89217 2126.108,679.93241 2126.6518,679.3316 L 2127.6265,678.23279 L 2129.0798,672.72097 L 2127.7861,671.16137 L 2128.1937,669.58407 C 2128.4162,668.72215 2128.6712,666.94415 2128.7608,665.61417 L 2128.9203,663.18612 L 2130.285,661.55563 C 2129.8597,660.96184 2129.4651,660.26076 2129.2799,658.82661 L 2127.6265,657.58573 L 2126.8113,659.8011 L 2126.2265,659.8011 L 2125.6416,658.70229 L 2123.7271,659.32256 L 2123.6317,657.29916 L 2121.9115,655.65851 L 2121.2252,656.61667 C 2120.5369,660.71157 2119.4817,664.95324 2119.9349,668.5916 z "},"oh18":{"name":"OH-18","path":"M 2042.8054,545.4183 C 2037.9303,546.17112 2033.1354,546.9155 2028.6499,548.16915 L 2029.2703,552.83023 L 2020.8089,554.14804 L 2009.9271,557.71791 L 2010.0309,555.39878 L 1984.4202,560.62951 L 1985.1355,567.09325 C 1980.6566,568.63579 1974.4729,570.12819 1966.2075,571.55939 L 1968.5051,584.09322 L 1963.9593,584.65655 L 1963.939,589.01635 L 1976.6285,587.10229 L 1977.3374,588.18335 L 1982.4416,588.05932 L 1983.7075,597.41819 L 1980.5275,601.22731 L 1975.2107,602.57424 L 1975.9196,608.83926 L 1995.6982,606.491 L 1996.4362,611.96981 L 2000.8923,611.31914 L 2001.1898,616.8829 L 2003.7798,616.22078 C 2004.6847,618.36169 2005.2021,622.59564 2005.5521,627.73304 L 1994.6349,629.07997 L 1994.7602,627.14816 L 1988.6053,628.01779 L 1988.48,624.10494 L 1983.1859,624.76315 L 1983.8531,628.29381 L 1978.1046,629.11541 L 1978.1046,631.72063 C 1976.3287,632.31504 1974.7259,632.76358 1973.1726,632.57892 L 1973.2878,638.87048 L 1962.2933,640.27696 L 1962.0984,643.9633 L 1963.5681,644.25571 L 1963.4428,647.28883 C 1961.7741,648.37896 1959.6552,649.01885 1957.4348,649.55734 L 1951.409,644.61266 C 1949.8317,645.56963 1948.3387,645.59975 1946.872,645.33932 L 1945.2238,649.87635 L 1945.4415,655.73882 C 1946.0517,656.62569 1946.4341,657.63683 1948.2138,657.88568 L 1948.1303,660.38593 L 1975.3525,657.0009 L 1976.6817,671.10823 L 1979.1097,670.41701 L 1979.5705,676.28328 L 1987.3863,675.68071 L 1988.3787,674.63503 L 1993.6601,674.54645 C 1993.2845,669.74276 1993.0378,664.14434 1992.2423,662.06962 L 1998.1085,662.06962 C 1997.4837,658.86347 1997.0523,655.04692 1996.7616,650.72704 L 1998.4807,650.6916 L 1998.0908,644.61266 L 2000.058,643.33662 L 2000.1467,644.47088 L 2001.5999,644.57721 L 2001.4404,639.52625 L 2005.9774,638.79959 L 2005.9774,632.72071 C 2010.4797,632.41491 2013.3098,631.89639 2016.1857,631.37378 L 2016.2212,628.8217 L 2021.5735,628.78625 L 2021.5026,626.14553 L 2020.1556,624.90494 L 2020.581,621.67939 L 2025.3307,621.23635 C 2025.7095,619.62434 2025.4017,618.11289 2025.0117,616.61068 L 2021.9811,616.69932 C 2022.0439,614.86738 2021.9786,613.40929 2021.2722,611.57741 L 2018.8265,612.25088 C 2018.344,610.0114 2017.8292,607.72394 2017.8871,606.34922 L 2023.2749,605.39219 L 2022.5483,601.67041 C 2024.4579,601.68011 2026.4352,601.60899 2027.7942,601.06784 L 2027.8119,599.18922 L 2030.9311,598.46256 L 2030.9311,596.95615 C 2033.0092,596.03032 2035.0296,595.47073 2036.8859,595.87504 L 2037.6481,594.84712 L 2035.4681,581.80316 C 2038.9457,580.97373 2042.2043,580.66946 2045.4638,580.38533 L 2045.4815,582.6716 L 2047.8209,582.6716 L 2048.583,587.8289 L 2053.2972,587.10229 L 2054.0593,589.47714 L 2056.0443,589.47714 C 2055.9952,587.59377 2055.7803,585.56639 2055.1758,583.23873 L 2052.9251,583.23873 C 2051.1915,576.47827 2049.5364,569.74486 2049.1147,563.53098 L 2045.4638,564.00949 L 2045.4283,555.25444 L 2047.4487,554.74048 L 2046.7398,550.22118 L 2043.7624,550.27434 L 2042.8054,545.4183 z "},"in9":{"name":"IN-9","path":"M 1781.9706,775.4577 L 1780.2311,772.09395 L 1776.7489,772.09395 L 1773.5541,769.94107 L 1773.5958,767.76528 C 1775.5732,765.07153 1777.6907,762.4316 1778.7282,759.37637 L 1780.8753,759.98541 L 1781.7177,754.79771 L 1783.863,754.76947 C 1783.9577,752.29543 1783.8268,750.53755 1782.943,749.71941 L 1780.6812,749.71941 L 1778.1916,731.21145 L 1779.4391,730.30439 L 1784.24,730.50555 L 1784.9646,729.83747 L 1786.4584,730.40409 L 1789.995,727.90124 L 1796.7058,727.14928 L 1795.2576,717.14774 L 1812.5202,714.33285 L 1813.8609,708.6086 L 1811.4572,695.8985 L 1797.7581,697.42045 L 1795.0637,676.2763 C 1803.2477,674.79485 1811.6289,673.2496 1817.6171,672.47853 L 1819.6096,684.59563 L 1828.5203,682.69269 L 1826.2536,679.27194 L 1828.1805,677.34506 L 1831.0677,680.88269 L 1837.5105,679.20031 L 1838.2323,683.04816 L 1843.8627,681.97867 L 1859.4732,668.36429 L 1872.1699,666.62831 L 1872.6672,672.43486 L 1874.4509,674.40586 L 1874.12,675.96563 L 1877.3078,676.33115 L 1878.9406,674.97605 L 1878.9406,677.78498 L 1877.5228,679.31481 C 1876.743,680.1562 1876.105,681.13977 1876.105,681.50047 C 1876.105,681.8611 1877.0099,683.08293 1878.1159,684.2156 L 1880.1269,686.27501 L 1878.1788,689.66928 L 1878.905,691.56167 L 1880.9077,691.56167 C 1882.0093,691.56167 1882.9105,691.69824 1882.9105,691.8652 C 1882.9105,692.0321 1882.5095,692.78066 1882.0195,693.52853 L 1881.1285,694.88839 L 1882.3833,697.23296 L 1878.5124,697.23296 L 1877.1003,698.93434 L 1874.005,698.93434 L 1867.1358,705.73989 L 1865.5053,705.73989 L 1863.3677,703.37785 L 1861.0876,703.67548 C 1859.8336,703.8391 1857.6651,704.17915 1856.2687,704.43113 L 1853.7297,704.8892 L 1852.6242,708.03557 L 1854.5541,711.30263 L 1854.5541,713.58776 L 1856.5193,717.01202 L 1855.3183,718.32328 C 1854.6577,719.0445 1853.9484,720.1922 1853.742,720.87383 L 1853.3667,722.11306 L 1848.3277,724.0375 L 1847.7577,726.08949 C 1847.4442,727.21807 1847.1863,729.07894 1847.1846,730.22471 L 1847.1814,732.30788 L 1844.3099,735.72058 L 1840.5733,735.11421 L 1838.6745,737.01301 L 1838.6745,739.24041 L 1836.6895,742.27999 L 1836.6895,752.95823 L 1835.5553,753.57107 C 1834.9314,753.90817 1833.7425,754.6312 1832.9132,755.17786 L 1831.4054,756.17175 L 1830.0193,754.50167 L 1824.1497,754.74729 L 1820.5263,752.1672 L 1820.5263,748.76709 L 1819.3522,746.57315 L 1816.5564,746.57315 L 1816.5564,748.84167 L 1814.2523,748.84167 L 1813.6773,750.34025 L 1810.318,749.84719 L 1810.318,752.18807 L 1812.2494,753.2689 L 1810.8028,755.01197 L 1808.3331,755.36365 L 1808.4903,761.33359 L 1809.8255,762.94247 L 1806.0646,763.30345 L 1805.7177,767.4706 L 1803.9879,768.90617 L 1804.773,764.72127 L 1801.3109,764.72127 L 1800.9604,765.2884 C 1800.7676,765.60032 1800.382,765.85553 1800.1035,765.85553 C 1799.825,765.85553 1798.7778,764.64329 1797.7765,763.16167 C 1796.7752,761.68005 1795.8817,760.37338 1795.7907,760.25791 C 1795.6999,760.1425 1794.9967,760.20585 1794.2281,760.39873 L 1792.8307,760.74944 L 1790.3967,764.68781 L 1786.3644,765.80114 L 1784.2301,767.73273 L 1784.2223,770.05512 C 1784.2181,771.33241 1784.0654,772.93409 1783.8829,773.6143 L 1783.5512,774.85116 L 1781.9706,775.4577 z "},"oh6":{"name":"OH-6","path":"M 1992.8745,701.76999 L 1991.7256,698.47435 L 1988.3512,697.07666 L 1987.665,696.11055 C 1987.2875,695.57921 1986.4403,694.85896 1985.7823,694.51006 L 1984.586,693.87561 L 1980.5843,694.52497 L 1978.1881,692.1288 L 1978.1881,691.22383 C 1978.1881,690.72612 1977.8316,689.64149 1977.3959,688.81354 C 1976.9602,687.98558 1976.386,686.28737 1976.1199,685.03969 L 1975.8363,683.2217 L 1973.084,682.40872 L 1972.6334,679.70205 C 1970.3261,679.79931 1968.8854,679.43033 1967.9085,678.19717 L 1965.7924,673.47089 C 1971.1688,672.66358 1975.8375,671.85633 1978.6892,671.04902 L 1979.0388,676.53276 L 1987.5457,676.15624 L 1988.6233,675.11494 L 1994.2351,675.11494 C 1993.7608,668.08521 1993.2865,663.01973 1992.8121,662.63811 L 1998.7277,662.63811 C 1998.1747,658.72299 1997.629,654.81876 1997.3372,651.29553 L 1998.9607,651.29553 L 1998.4789,644.63472 L 1999.739,643.85594 L 1999.739,645.05712 L 2002.0075,645.05712 L 2002.0075,640.05266 L 2006.5446,639.28613 L 2006.5446,633.27956 C 2009.6934,632.90105 2013.2109,632.39971 2016.7529,631.8902 L 2016.7529,629.17751 L 2021.857,629.17751 L 2021.857,626.00159 L 2020.4766,624.67122 L 2020.8562,621.98831 L 2025.5434,621.52128 C 2026.1432,619.72535 2025.8319,617.92948 2025.2382,616.13355 L 2022.4242,616.13355 C 2022.4495,614.31551 2022.4605,612.50217 2021.7027,610.94518 L 2019.1605,611.5832 C 2018.6529,609.31672 2018.428,607.68634 2018.4543,606.62116 L 2023.6685,605.8392 L 2022.9399,601.95534 C 2024.6584,601.94842 2026.3769,602.04421 2028.0955,601.26684 L 2028.0454,599.45821 L 2031.4481,598.77766 L 2031.4982,597.39023 C 2033.261,596.45186 2035.136,596.29896 2037.0306,596.28405 L 2038.2234,594.84683 L 2036.1267,582.24228 C 2039.0352,581.39023 2042.0701,581.17018 2045.1093,580.97157 L 2045.1093,583.24009 L 2047.3084,583.24009 L 2048.0898,588.45132 L 2053.1338,587.69494 L 2053.7486,590.04563 L 2056.4519,590.04563 C 2056.4844,587.58809 2056.232,585.1305 2055.7306,582.67296 L 2053.2562,582.67296 C 2051.4926,576.09313 2050.2372,569.51331 2049.4078,562.93346 L 2045.8838,563.50533 L 2045.7366,555.56733 L 2047.9382,554.9916 L 2046.8463,549.77948 L 2044.1038,549.77948 L 2043.3378,544.67131 L 2035.4664,546.1617 L 2032.2975,531.06185 L 2036.0353,530.42177 L 2034.4994,521.10756 L 2043.4906,519.26337 C 2044.3844,520.60691 2044.2286,521.95045 2043.7985,523.29399 L 2052.1736,521.79422 L 2054.1226,526.03826 L 2057.3359,525.39161 L 2061.71,546.4727 L 2060.6405,547.23233 C 2060.0524,547.67766 2059.1389,548.05013 2058.6108,548.06006 L 2057.6505,548.07809 L 2056.7676,549.33854 C 2056.282,550.03178 2055.8848,550.95513 2055.8848,551.3904 L 2055.8848,552.18182 L 2057.6059,554.24164 C 2058.5525,555.37454 2059.6065,556.64519 2059.9481,557.0653 L 2060.5691,557.82914 L 2059.9366,563.9577 L 2060.866,563.9577 L 2061.3248,565.5173 C 2061.5771,566.37508 2061.811,567.84254 2061.8445,568.77831 L 2061.9054,570.47969 L 2060.7762,571.2452 L 2060.6588,572.9412 C 2060.5943,573.87402 2060.235,575.56559 2059.8606,576.70024 L 2059.1797,578.76329 L 2059.8075,581.26455 L 2058.9284,582.68697 L 2060.265,589.19494 L 2059.1537,590.60669 L 2059.7485,592.88128 L 2058.1177,592.88128 L 2057.4592,594.59712 L 2058.8593,596.28405 L 2057.582,597.82307 L 2058.2675,601.25062 L 2057.019,602.02226 L 2057.019,604.61517 L 2059.3144,606.69245 L 2057.927,607.54983 L 2058.1826,611.88207 L 2055.6368,613.01435 L 2054.0372,615.28286 C 2053.1575,616.53054 2051.6869,618.69981 2050.7692,620.10345 L 2049.1008,622.65553 L 2049.0792,624.61434 L 2046.3583,626.39717 L 2044.9717,629.74464 L 2043.0633,629.74464 L 2041.1394,631.72959 C 2040.0813,632.82132 2039.0742,633.71296 2038.9014,633.71097 C 2038.7287,633.70899 2038.1526,632.94336 2037.6212,632.00958 L 2036.6551,630.31177 L 2033.7929,630.31177 L 2032.8244,631.87138 C 2032.2917,632.72916 2031.3615,633.99091 2030.7573,634.67532 L 2029.6587,635.91965 L 2030.3914,639.82524 L 2024.9762,640.80836 L 2024.6208,644.48999 L 2023.6694,644.48999 L 2022.4826,647.89424 L 2024.1961,651.99509 L 2023.594,653.56405 L 2021.2899,653.56405 L 2021.2899,656.26925 L 2024.2463,658.20634 L 2023.5782,661.54701 L 2024.419,661.86965 C 2024.8814,662.04716 2025.2598,662.41477 2025.2598,662.68665 L 2025.2598,663.18091 L 2022.343,661.8519 L 2021.8251,662.67038 C 2021.5403,663.12051 2021.3033,664.03177 2021.2986,664.69542 L 2021.2899,665.90199 L 2019.5885,667.31403 L 2019.5257,666.81921 C 2019.4912,666.5471 2019.5093,665.7513 2019.566,665.05073 L 2019.6691,663.77701 L 2017.2428,660.36959 L 2015.4244,660.36959 L 2013.4314,658.56595 L 2011.0816,659.31178 L 2011.0816,661.13096 L 2009.2795,663.12232 L 2008.0782,667.4587 L 2008.1837,672.14012 L 2005.4103,674.74551 L 2005.4103,677.13136 L 2007.6788,679.07372 L 2007.6788,682.22083 L 2009.8696,686.30836 L 2008.5862,687.59177 L 2005.5492,687.59177 L 2004.1196,689.31437 L 2004.7544,695.4651 L 2004.1405,697.81251 L 2002.6487,698.15517 C 2001.8281,698.34362 1999.8209,699.23401 1998.188,700.13388 L 1995.2192,701.76999 L 1992.8745,701.76999 z "},"wi3":{"name":"WI-3","path":"M 1520.6394,339.32019 C 1505.273,340.53002 1490.5766,341.85938 1474.5424,342.93564 L 1474.5911,346.13184 L 1475.7653,348.85504 L 1472.8233,352.34643 L 1475.0918,353.5693 L 1475.4108,367.44623 L 1474.4893,371.52247 L 1477.8743,372.92257 L 1479.2035,374.35811 C 1479.9362,375.14593 1481.1069,376.0188 1481.8087,376.28989 L 1483.0848,376.76841 L 1483.0848,379.07237 L 1484.9811,379.07237 L 1487.1256,381.02187 L 1496.4123,381.62445 L 1498.6808,386.01969 L 1502.6153,388.71356 L 1505.2914,388.71356 L 1512.859,391.69098 L 1516.0314,394.65068 L 1515.5352,396.58247 L 1516.953,397.13187 L 1517.6619,400.6587 L 1520.7988,403.61841 L 1525.6903,405.81603 L 1526.3106,407.4288 L 1527.8348,407.4288 L 1528.2778,408.17316 C 1528.5273,408.57871 1529.5448,409.47193 1530.5287,410.15811 L 1532.3186,411.3987 L 1538.9469,412.56841 L 1545.1854,420.13603 L 1548.4251,425.49211 L 1548.2869,435.30672 L 1550.5022,438.12464 L 1549.8819,439.77286 L 1551.8137,443.83138 L 1551.1757,446.24167 L 1552.9834,448.22662 L 1552.4871,451.54078 L 1557.3479,453.37089 L 1560.0098,457.54939 L 1558.8142,459.79959 C 1558.0849,460.87414 1557.3027,462.36205 1557.0774,463.09603 C 1556.852,463.83002 1556.4048,464.76634 1556.0671,465.18732 L 1555.4469,465.9494 L 1555.7836,470.64593 L 1557.9458,476.33494 L 1557.9458,479.33009 L 1559.9307,479.84405 L 1563.1031,488.84722 L 1567.8705,491.75375 L 1578.965,493.7387 C 1580.6513,496.24661 1582.3953,498.99817 1583.7679,501.57217 L 1618.6285,498.06306 L 1614.1093,454.78405 L 1619.536,450.55891 L 1618.5754,448.21237 L 1613.0247,447.45385 L 1613.8648,442.18325 L 1612.766,440.80087 L 1611.7149,427.76742 L 1614.1379,427.49201 L 1610.8155,422.87002 L 1610.8345,421.12978 C 1608.1402,418.79307 1605.4671,416.39288 1603.2806,412.53296 L 1604.709,409.89093 C 1604.238,408.70395 1603.447,407.5703 1602.5914,406.4474 L 1599.7184,401.77524 C 1601.1017,398.49957 1602.9058,396.54628 1604.7339,394.66841 L 1604.4037,390.99521 L 1586.2491,393.03791 L 1586.0541,392.7189 C 1584.3985,380.27701 1584.2116,367.60495 1582.1819,355.20757 L 1561.9766,356.97207 C 1561.5861,355.28753 1559.8057,353.71883 1558.0245,352.15018 L 1555.7836,352.41732 L 1555.9608,357.7696 L 1523.8826,361.03059 C 1523.0107,353.17672 1522.5423,343.19405 1520.6394,339.32019 z "},"wi7":{"name":"WI-7","path":"M 1565.8679,218.50405 L 1564.326,218.68128 L 1562.7664,218.85851 L 1562.5891,221.26881 L 1562.4119,223.6791 L 1563.5994,223.6791 L 1564.7867,223.6791 L 1564.9994,222.97019 C 1565.1186,222.5803 1565.3696,221.41677 1565.5489,220.38267 L 1565.8679,218.50405 z M 1560.3561,225.29188 L 1558.0521,226.46158 C 1556.7885,227.10624 1555.5806,227.90254 1555.376,228.23386 L 1555.0038,228.83643 L 1555.695,230.60871 L 1556.6697,230.18336 C 1557.213,229.95493 1558.2026,229.65503 1558.8673,229.5099 L 1560.0725,229.24405 L 1561.5612,226.49702 L 1560.3561,225.29188 z M 1546.0715,227.61356 L 1543.6967,229.98841 L 1541.8358,229.63396 L 1540.6129,230.85683 C 1539.9409,231.52879 1539.2447,232.48454 1539.0533,232.98356 L 1538.6988,233.88742 L 1537.0861,233.88742 L 1536.4303,235.58881 L 1535.3847,235.58881 C 1534.8134,235.58881 1534.0861,235.85941 1533.7542,236.19138 L 1533.1516,236.79396 L 1531.397,235.05712 L 1530.7413,236.77623 L 1526.8246,238.40673 L 1525.903,239.96633 L 1522.2167,241.75633 C 1520.1938,242.73661 1518.1148,243.52861 1517.591,243.52861 L 1516.634,243.52861 L 1506.6206,248.65049 L 1503.2178,248.7391 C 1501.3463,248.79297 1499.2127,248.67608 1498.4681,248.47326 C 1497.7236,248.27043 1496.6741,247.71024 1496.1465,247.23267 L 1495.1895,246.36425 L 1493.2931,246.36425 L 1493.2931,248.06564 L 1491.5208,248.06564 L 1492.2475,249.23534 L 1490.741,252.60267 L 1487.6218,252.60267 L 1490.298,287.48108 L 1488.6852,288.79257 L 1487.799,292.01811 L 1484.3254,291.75227 L 1483.1025,295.2791 L 1480.1073,294.69425 L 1479.5757,296.75009 L 1477.8566,297.459 C 1476.909,297.85147 1475.3949,298.80588 1474.4893,299.56801 L 1472.841,300.95039 L 1472.0612,302.77583 C 1471.64,303.78401 1471.1268,305.66995 1470.9093,306.95841 L 1470.5194,309.29781 L 1467.3824,311.92079 L 1467.152,320.48088 L 1472.0258,320.16187 L 1474.0107,321.63286 L 1474.0107,323.31653 L 1477.9806,327.41049 L 1477.9452,331.14999 L 1476.2792,333.34762 L 1476.2792,335.79336 L 1474.1525,337.72514 L 1474.5778,342.36851 L 1520.9761,338.73534 C 1522.2563,342.31449 1523.4582,346.73417 1524.5384,360.32167 L 1555.7481,357.36197 L 1555.3937,352.13375 L 1558.2293,351.81474 C 1559.8718,353.2536 1561.9023,354.58162 1562.1992,356.40494 L 1582.6867,354.80989 C 1584.4217,367.44 1585.0094,379.4583 1586.5149,392.47078 L 1634.4904,387.47296 L 1628.766,338.98346 L 1633.2853,338.54039 L 1633.7283,333.45395 L 1635.4297,332.28425 L 1632.7359,301.12762 L 1621.925,301.92514 L 1620.1881,296.71465 L 1612.3015,297.60079 L 1615.3498,300.57821 L 1614.9245,302.79356 L 1611.2913,302.93534 C 1610.3748,301.06112 1608.737,299.26045 1606.8252,297.47673 L 1588.9961,299.62118 L 1587.0111,284.25554 L 1592.0976,283.38712 L 1590.0063,265.06178 L 1581.198,263.59079 L 1581.1803,262.61603 C 1581.1733,262.25951 1580.6737,261.32228 1580.0638,260.54247 L 1578.9473,259.12465 L 1578.9295,257.1397 L 1578.5042,257.1397 C 1578.2702,257.13772 1577.6517,256.39219 1577.1395,255.49148 L 1576.218,253.86098 L 1571.5568,253.06346 L 1571.5568,251.50386 L 1568.5085,252.65584 L 1567.5869,250.9899 L 1565.4602,250.26326 C 1564.2929,249.86612 1562.8921,249.6168 1562.3588,249.69613 L 1561.4017,249.83792 L 1558.1053,247.74663 C 1556.2994,246.59707 1554.7354,245.4307 1554.6316,245.1591 C 1554.5276,244.88751 1554.1125,244.66287 1553.6923,244.66287 L 1552.9125,244.66287 L 1552.558,247.1795 L 1550.5731,248.49098 C 1549.4814,249.21403 1548.1452,250.17807 1547.5957,250.63544 C 1547.0462,251.09281 1546.2338,251.46842 1545.7879,251.46841 C 1545.342,251.46841 1544.8323,251.25035 1544.6714,250.9899 L 1544.3879,250.5291 L 1545.7348,246.08069 L 1548.021,244.18435 L 1545.9475,240.6398 L 1546.6209,239.82455 L 1547.3121,238.99158 L 1546.8867,238.99158 C 1546.65,238.99158 1547.092,238.3432 1547.8792,237.55603 L 1549.3148,236.13821 L 1550.6263,230.94544 L 1550.0768,230.2897 C 1549.7766,229.93095 1548.7571,229.1807 1547.8083,228.62376 L 1546.0715,227.61356 z M 1557.4318,231.42396 L 1554.5962,234.18871 C 1553.0321,235.70597 1551.3531,237.1641 1550.8744,237.43197 L 1550.006,237.91049 L 1550.006,240.69296 L 1551.6719,240.69296 L 1552.8062,238.54851 L 1555.7481,237.82188 L 1555.0924,235.78376 L 1556.3862,235.18118 C 1557.0916,234.84287 1558.158,234.40282 1558.761,234.20643 L 1559.8598,233.85197 L 1557.4318,231.42396 z "},"al7":{"name":"AL-7","path":"M 1838.1605,1027.8676 L 1835.9984,1033.2554 L 1832.4715,1034.2301 L 1828.0231,1030.7033 L 1826.0204,1030.6324 L 1825.0279,1031.6249 L 1825.0279,1033.1667 L 1829.1042,1034.6554 L 1828.7497,1037.7924 L 1825.0811,1037.881 C 1825.3148,1038.5365 1825.8426,1039.1926 1827.4205,1039.8482 L 1824.7621,1042.6307 L 1826.1976,1044.9524 C 1825.1074,1046.6163 1824.0026,1048.2691 1820.5087,1048.8514 C 1817.7182,1051.8624 1816.5422,1052.4212 1815.8298,1052.2542 L 1813.6322,1055.5152 L 1813.579,1058.4039 L 1807.8014,1061.1155 L 1805.6924,1057.7837 C 1804.5467,1057.6689 1803.746,1058.5645 1802.9631,1059.5382 L 1799.9325,1060.1585 L 1796.7956,1062.4625 L 1794.5802,1059.3964 L 1793.0738,1059.3964 C 1793.1793,1060.3233 1793.4777,1061.4051 1794.4384,1063.0651 C 1793.8123,1062.3895 1790.4682,1065.5712 1787.2075,1068.4882 L 1784.4251,1068.6477 L 1784.1415,1067.992 C 1782.2424,1068.5565 1778.3612,1072.4006 1775.1738,1075.5419 L 1772.3204,1073.681 L 1772.9939,1069.5338 L 1770.6013,1067.3894 L 1772.3382,1065.4754 L 1770.0519,1063.4195 L 1770.0519,1059.6268 C 1770.984,1060.263 1772.3494,1057.5657 1773.6319,1055.5152 L 1771.8242,1054.5049 L 1772.4622,1050.5528 L 1770.3178,1050.5528 L 1768.9354,1052.7858 L 1767.2694,1052.1478 L 1768.3151,1055.7987 L 1767.1808,1057.9254 C 1764.7677,1058.0868 1762.9751,1057.0182 1761.7931,1054.7176 C 1760.9968,1054.7909 1760.3505,1055.0236 1759.7018,1055.5328 L 1761.7399,1148.5597 L 1763.9553,1161.1606 L 1782.3869,1158.7503 L 1783.1845,1160.0086 L 1785.3112,1158.8744 L 1789.3343,1163.9785 L 1791.0711,1161.7277 L 1794.4384,1159.9732 L 1794.4384,1157.7755 L 1787.8456,1152.9372 L 1785.0454,1150.0661 L 1784.2124,1147.5318 L 1786.0024,1144.0581 L 1787.6506,1145.4227 C 1789.0463,1144.1494 1790.3275,1143.5812 1791.6028,1143.0302 L 1791.6028,1141.7542 L 1787.2253,1142.4985 L 1786.5873,1140.0882 L 1802.9454,1137.802 L 1802.9454,1140.7262 L 1800.7477,1140.7262 L 1800.0034,1141.9314 L 1798.4438,1141.3465 L 1797.7349,1142.4985 L 1800.8009,1143.7746 L 1798.9755,1144.767 L 1798.9755,1146.8229 L 1800.6768,1148.2407 L 1800.6768,1146.9647 L 1802.2719,1146.9647 L 1803.7429,1151.7144 L 1801.5984,1150.9168 L 1799.8085,1159.2288 L 1805.2139,1160.3276 L 1804.2214,1163.181 L 1801.1731,1163.2342 L 1800.4642,1164.3684 L 1797.8412,1163.8544 L 1796.2285,1167.6649 L 1797.2209,1169.5435 L 1794.5625,1169.1713 L 1793.446,1173.5311 L 1794.5448,1174.6299 L 1793.1269,1177.7845 L 1794.9347,1176.3845 L 1796.0867,1178.5466 L 1793.1801,1183.1191 C 1793.2734,1183.6985 1793.3456,1184.2776 1793.3042,1184.8736 L 1791.3192,1185.4053 L 1794.6689,1185.7598 L 1793.7473,1189.0917 L 1799.2059,1187.7979 L 1797.9475,1186.5396 L 1800.1806,1182.7647 L 1802.0947,1183.4558 L 1799.9857,1181.0455 L 1801.8111,1179.2201 L 1801.8111,1177.0225 L 1802.396,1177.0225 C 1803.3123,1177.5506 1803.5182,1178.8705 1804.7708,1178.7239 C 1804.0918,1177.5762 1804.5502,1176.2356 1804.8417,1174.9666 C 1806.3036,1174.4105 1806.7467,1173.4186 1807.3584,1172.255 L 1810.194,1173.7615 L 1812.0549,1169.5966 L 1811.3814,1168.5155 L 1809.1483,1168.5155 L 1808.5103,1166.8673 L 1810.9384,1164.2798 L 1809.8572,1155.188 L 1812.4271,1154.8513 L 1811.3637,1149.0736 L 1811.984,1146.6102 L 1842.8216,1142.4276 L 1841.9,1134.5764 L 1844.4875,1133.7435 L 1843.6546,1129.3837 L 1841.1557,1129.3837 L 1839.8087,1118.1651 L 1843.8318,1117.4208 L 1841.3152,1115.3827 C 1842.5393,1114.0694 1842.2095,1112.8907 1842.0063,1111.6963 L 1843.8495,1109.6582 L 1840.9607,1106.7694 L 1841.7228,1105.1389 L 1840.3936,1104.9971 L 1836.9908,1099.0423 C 1838.2216,1098.0115 1836.6208,1094.8977 1835.0945,1091.8291 L 1830.5043,1092.414 L 1828.8738,1081.7449 L 1813.1537,1084.0134 L 1813.1537,1081.6031 L 1807.5887,1082.1348 L 1806.9507,1073.3797 C 1808.7176,1073.5022 1810.6214,1073.2849 1812.0194,1072.5467 L 1811.3105,1068.1515 L 1812.8347,1064.9791 L 1816.9109,1064.4474 L 1816.5919,1060.0876 L 1819.0731,1057.3051 L 1821.3593,1058.014 L 1822.0151,1056.3126 L 1825.0634,1056.2241 L 1825.0634,1054.3454 C 1827.5055,1051.0685 1829.2829,1048.0108 1829.0333,1045.5904 L 1832.9146,1042.6307 L 1834.6337,1037.5088 L 1836.849,1037.5088 C 1838.1057,1035.9086 1838.8903,1034.5079 1838.6745,1033.5212 L 1841.4924,1030.8273 L 1839.8087,1029.4272 L 1839.8087,1027.8676 L 1838.1605,1027.8676 z "},"al6":{"name":"AL-6","path":"M 1830.8673,1091.9888 L 1829.4539,1081.1791 L 1813.7208,1083.4476 L 1813.7208,1081.0696 L 1808.0147,1081.6115 L 1807.3335,1073.9553 C 1808.5543,1074.2079 1810.4949,1073.7406 1812.6074,1073.1015 L 1811.7455,1068.1365 L 1813.1124,1065.451 L 1817.4396,1064.7591 L 1817.041,1060.4789 L 1819.3481,1058.0215 L 1821.6468,1058.6226 L 1822.3491,1056.7926 L 1825.3327,1056.6809 L 1825.4444,1054.4909 C 1827.9899,1051.5419 1829.6172,1048.627 1829.4887,1045.777 L 1833.2393,1043.0457 L 1835.0677,1037.9656 L 1836.777,1037.9656 C 1838.379,1036.4454 1838.9753,1035.0593 1839.0927,1033.737 L 1841.9885,1030.8502 L 1840.1525,1029.3651 L 1840.1525,1027.5997 L 1837.8882,1027.5252 L 1835.7814,1033.0086 L 1832.486,1033.7901 L 1828.1241,1030.3236 L 1825.8574,1030.1375 L 1824.4962,1031.4986 L 1824.5335,1033.3762 L 1828.7023,1034.8853 L 1828.4897,1037.4313 L 1824.4962,1037.582 C 1825.3524,1039.3978 1826.1257,1039.7644 1826.8837,1039.8626 L 1824.3651,1042.5321 L 1825.8541,1044.8752 C 1825.1224,1046.6044 1823.5686,1047.9943 1820.4692,1048.4904 C 1818.6975,1050.1843 1817.3738,1052.0979 1815.8125,1051.8931 L 1813.1537,1055.5086 L 1813.1537,1058.2679 L 1807.8861,1060.7147 L 1805.7411,1057.3597 C 1804.7116,1057.5307 1803.657,1057.5716 1802.867,1058.9881 L 1799.5958,1059.7066 L 1796.8286,1061.8833 L 1794.9794,1059.0611 L 1792.737,1059.0611 C 1792.9712,1060.8416 1793.4028,1062.0543 1794.034,1062.6932 C 1792.6633,1062.8993 1789.6609,1065.825 1787.0279,1068.1351 L 1784.906,1068.3027 L 1781.1193,1044.8645 L 1790.321,1043.5873 L 1789.6516,1040.1535 L 1791.4114,1039.6255 L 1791.4114,1038.0003 L 1803.6047,1036.8344 C 1803.9147,1037.4813 1805.1881,1037.9972 1807.1988,1037.7937 L 1807.5508,1042.0472 L 1809.684,1042.0472 L 1810.3544,1040.9625 L 1812.0194,1041.6014 L 1812.0194,1039.7787 C 1813.2867,1039.7513 1814.4019,1039.4706 1814.9101,1038.1783 L 1813.7208,1037.4433 L 1813.7208,1035.1355 L 1815.9893,1034.5422 L 1815.9893,1033.5403 L 1818.825,1033.5403 L 1818.825,1031.2718 L 1820.6477,1031.2718 L 1819.9948,1029.5704 L 1820.9138,1029.5704 L 1821.1471,1022.7967 L 1822.2695,1022.7648 L 1828.052,1018.2278 L 1834.2622,1018.2278 L 1840.8238,1021.7251 L 1843.4951,1021.347 L 1843.8575,1018.7949 C 1846.3299,1018.7498 1848.111,1017.5195 1850.017,1016.5034 L 1850.1296,1017.1316 L 1854.2705,1012.6085 L 1859.2292,1013.5637 L 1860.3437,1014.91 L 1859.792,1016.7497 L 1868.1391,1012.4735 L 1869.5051,1013.2191 L 1868.9937,1015.0407 L 1870.6216,1016.8538 L 1866.2794,1021.2855 L 1866.2636,1023.6913 L 1865.548,1023.46 L 1864.7029,1022.5627 L 1862.7102,1022.4793 L 1865.7441,1025.5686 L 1865.1166,1028.6694 L 1862.8377,1029.066 L 1865.1132,1031.5346 C 1864.2312,1032.752 1863.5072,1034.0881 1862.9653,1035.5606 L 1861.9351,1035.5606 L 1861.3318,1034.6629 L 1860.8114,1035.038 L 1858.8434,1040.8632 L 1856.8226,1042.3204 L 1859.2844,1044.446 L 1857.9408,1045.8025 L 1858.6128,1048.3651 L 1854.2902,1053.0193 L 1854.2638,1055.2791 L 1852.5961,1055.286 L 1852.529,1056.3707 L 1855.0609,1059.5076 L 1853.2809,1061.3296 L 1868.9202,1059.0221 L 1872.3635,1060.8746 L 1871.501,1061.8967 L 1868.9456,1061.8967 L 1865.3243,1067.5032 L 1866.5782,1070.2551 L 1863.6012,1074.7535 L 1864.3582,1081.4497 L 1861.1174,1082.0711 L 1860.4662,1084.8299 L 1845.4975,1087.2524 L 1846.0818,1089.6501 L 1830.8673,1091.9888 z "},"al3":{"name":"AL-3","path":"M 1890.1946,967.09622 L 1888.1919,968.90394 C 1888.4215,971.94891 1887.4769,974.34293 1885.6044,976.7374 L 1879.9154,984.57087 L 1878.3735,984.76585 L 1878.0722,986.46723 L 1876.6012,986.46723 L 1877.9481,993.92849 L 1880.6243,992.40433 L 1879.9863,993.89305 L 1884.6119,1001.2835 L 1884.6119,1004.5976 L 1878.019,1004.4204 L 1876.6721,1005.2534 L 1876.6721,1007.451 L 1873.4111,1007.4332 L 1872.4364,1010.8006 C 1871.1568,1010.9953 1869.9784,1011.6969 1869.3349,1015.0718 L 1871.0894,1017.0035 L 1866.4638,1021.5051 L 1866.4638,1023.8977 C 1864.1586,1023.3536 1865.2624,1022.6988 1863.4332,1022.7635 L 1866.003,1025.5105 L 1865.2586,1028.931 L 1863.4332,1029.2855 L 1865.5245,1031.3944 C 1864.4404,1032.8655 1863.6807,1034.3364 1863.0964,1035.8074 L 1861.7673,1035.772 L 1861.2178,1035.0985 L 1859.0025,1041.142 L 1857.3188,1042.3649 L 1859.6582,1044.4916 L 1858.3822,1046.0157 L 1859.038,1048.4615 L 1854.5541,1053.1403 L 1854.5541,1055.6569 L 1852.8527,1055.6569 L 1852.8527,1056.3304 L 1855.4934,1059.5027 L 1854.2883,1060.8497 L 1869.1045,1058.5635 L 1872.8085,1060.8142 L 1871.3907,1062.2675 L 1869.1045,1062.2675 L 1865.7372,1067.5843 L 1867.0663,1070.3845 L 1864.1067,1074.8507 L 1864.7978,1081.3726 L 1888.6527,1077.6686 C 1888.5739,1079.6627 1888.2395,1081.7332 1887.1817,1082.2588 C 1887.4788,1083.2014 1887.7473,1083.9805 1888.954,1084.0134 C 1889.6783,1090.6786 1891.1296,1093.0236 1891.1339,1097.3409 L 1888.0147,1097.1282 L 1888.0147,1098.2093 L 1885.1613,1097.5004 L 1885.7639,1099.06 L 1882.0598,1100.9386 C 1880.5464,1101.1027 1879.5272,1100.6627 1878.7634,1099.9107 L 1877.1506,1101.2399 L 1875.8037,1099.8752 L 1877.1152,1108.1163 L 1873.4997,1109.7468 L 1867.8107,1106.3795 L 1867.8816,1110.4734 L 1865.7549,1114.0889 L 1867.5626,1125.2011 L 1872.9503,1124.5985 L 1873.6238,1129.5609 L 1889.4325,1127.2569 L 1886.5083,1108.4353 L 1891.3643,1107.691 L 1891.701,1105.3516 L 1893.6328,1107.3011 L 1892.9948,1108.967 L 1894.7139,1109.6051 L 1916.5306,1106.6453 L 1917.5408,1111.6431 L 1926.03,1110.1544 L 1930.8329,1114.7447 L 1936.7346,1113.7522 L 1935.8485,1109.8177 L 1936.7877,1108.2581 C 1937.3081,1107.3986 1938.7823,1105.7408 1940.0487,1104.5718 L 1942.3527,1102.4451 L 1942.7426,1100.336 L 1940.7576,1099.2726 C 1939.6708,1098.6831 1938.3309,1098.1916 1937.7802,1098.1916 L 1936.7877,1098.1916 L 1936.7877,1095.4268 L 1937.8688,1094.7534 L 1937.5144,1090.9075 L 1935.6535,1089.0466 L 1935.6535,1086.335 L 1930.6202,1082.1348 L 1929.9645,1079.4763 L 1928.8479,1079.4763 L 1928.8302,1078.4839 C 1928.8203,1077.938 1928.4374,1076.9979 1927.9795,1076.3926 L 1927.1465,1075.2938 L 1927.1465,1073.2379 L 1926.0123,1073.2379 L 1926.0123,1071.1466 L 1923.7438,1069.0908 L 1923.7438,1066.9995 L 1922.6804,1066.9995 L 1890.1946,967.09622 z "},"tn8":{"name":"TN-8","path":"M 1745.5413,850.92347 L 1748.696,860.40513 L 1746.9237,862.30149 L 1680.9241,869.88684 L 1678.4606,873.11238 L 1676.4757,872.35028 L 1676.4757,870.77298 L 1675.0578,870.77298 L 1675.0578,875.02644 L 1677.0782,877.98612 L 1675.944,880.9813 L 1671.9386,880.9813 L 1671.9386,882.20414 L 1676.4757,883.99417 L 1676.4757,886.01456 L 1675.8022,886.43991 C 1675.4351,886.66676 1673.5848,886.98509 1671.6905,887.16651 L 1668.2523,887.50328 L 1674.2071,891.17186 L 1674.2071,894.62783 L 1670.3436,896.91404 L 1670.0778,899.28889 C 1669.9293,900.60168 1669.6416,902.19191 1669.4397,902.81575 L 1669.0675,903.95001 L 1673.0729,906.51978 L 1673.0729,909.37318 L 1671.3538,910.02889 L 1669.7233,908.68196 L 1667.4016,909.40862 L 1667.4016,910.95047 L 1670.8044,911.69483 L 1670.8044,913.64434 L 1669.4397,915.00902 L 1666.9586,915.00902 L 1666.2496,917.79146 L 1662.3152,919.67008 L 1660.7024,919.04981 L 1658.8238,920.43219 L 1659.4618,922.09813 C 1659.8116,923.01824 1660.3923,923.96489 1660.7556,924.18941 L 1661.4291,924.59701 L 1663.3608,922.84248 L 1664.566,923.58684 L 1664.566,926.33384 L 1660.0289,928.6378 L 1660.0289,929.18723 C 1660.0289,929.4856 1660.6867,930.15476 1661.4822,930.67595 L 1662.9178,931.63298 L 1662.581,933.99008 L 1660.8087,934.32684 L 1657.7427,931.4912 L 1656.1654,932.11146 L 1655.5982,934.27364 L 1657.8491,937.14473 L 1656.8211,940.24624 L 1654.0741,940.24624 L 1654.0564,937.49919 L 1652.6563,937.03839 L 1652.6563,938.84612 L 1650.3877,940.77793 L 1650.4586,943.08189 L 1650.9726,941.80585 C 1651.2547,941.10403 1651.6451,940.52981 1651.841,940.52981 C 1653.1241,941.06285 1654.3253,941.76105 1655.5096,942.49701 L 1655.1374,943.3477 C 1654.9332,943.82267 1654.6068,945.10937 1654.4108,946.2011 L 1654.0564,948.18605 L 1651.522,948.5582 L 1651.522,950.10011 L 1655.1906,950.45456 L 1656.3958,952.9003 L 1658.4516,951.84493 L 1660.3592,953.67517 L 1661.5062,952.91964 L 1660.6555,951.60816 C 1659.7221,949.37515 1661.6316,949.89622 1663.9519,950.8152 L 1663.1299,948.59251 L 1663.1074,948.14113 C 1662.1499,948.45288 1661.2475,947.51723 1660.1365,946.24306 L 1662.552,945.26482 L 1664.0248,946.51024 L 1666.1545,945.70781 L 1666.9763,944.28704 C 1665.4804,942.93597 1664.1212,941.65743 1664.2469,941.16783 L 1664.2117,940.81967 L 1669.2962,940.85829 L 1669.1609,939.9447 L 1672.9426,939.06826 L 1673.7497,940.18482 L 1677.2891,940.32513 C 1677.4304,939.11562 1680.3129,938.41459 1682.9976,937.69417 C 1687.9301,938.00467 1693.5525,937.0608 1699.019,936.40037 L 1698.5051,934.43318 L 1717.5925,932.46592 L 1723.7423,927.76941 L 1725.7804,924.10077 C 1725.922,919.23322 1725.9259,914.38529 1724.9098,909.68317 L 1725.5323,907.45787 L 1729.3312,906.2842 L 1745.8868,904.5291 L 1745.8838,902.84666 L 1750.9337,902.68945 L 1752.4178,901.38018 L 1753.9419,903.82592 L 1755.5901,903.91456 L 1756.9193,901.68149 C 1758.1532,901.56041 1759.8017,902.11177 1762.0412,903.16391 L 1764.1502,901.00803 L 1768.386,900.47634 L 1768.3505,896.70137 L 1773.0648,894.02526 L 1773.1002,892.58968 L 1775.6346,892.51879 C 1776.3058,891.69804 1777.3052,891.02248 1777.0701,889.55912 L 1792.613,889.48823 L 1793.5877,888.26533 L 1793.1624,876.40882 L 1794.1903,875.96572 L 1791.6914,873.16552 L 1792.8079,872.22625 L 1790.7521,872.08446 L 1793.0206,870.22354 L 1792.1699,868.71714 L 1793.3396,868.71714 L 1792.294,867.56513 L 1786.2505,867.47654 L 1786.2505,865.56248 L 1790.6635,861.09635 L 1788.8558,856.94922 L 1785.3289,857.51635 L 1782.5819,855.31872 L 1781.0755,855.28328 L 1780.2425,861.32671 C 1781.9036,862.09744 1781.7413,862.98069 1778.8778,864.00288 L 1776.503,861.25582 L 1773.2597,861.34446 L 1769.7152,864.46367 L 1765.9934,851.15384 L 1755.3774,852.85523 L 1755.3065,850.92347 L 1745.5413,850.92347 z "},"tn4":{"name":"TN-4","path":"M 1781.1894,951.02209 L 1781.1638,949.32235 L 1782.2657,949.24697 L 1781.1311,946.00623 C 1782.1646,942.461 1780.3939,933.70368 1779.4341,926.04324 L 1775.5181,924.18505 L 1775.4412,922.61376 L 1771.7276,922.58813 L 1771.1463,921.93343 L 1772.7337,920.78732 L 1772.7337,918.3726 L 1774.5889,917.14 C 1775.0857,914.11692 1771.9762,912.93191 1769.3822,911.55282 L 1769.3822,909.25419 L 1770.9539,908.77145 L 1773.0089,910.01108 L 1776.3972,906.50345 L 1779.5173,906.50345 C 1783.683,903.54644 1779.8909,901.60198 1777.5221,898.9979 L 1776.9515,896.96945 L 1783.1818,898.06406 L 1784.7972,896.72337 L 1784.7972,893.991 L 1782.9717,893.29048 L 1784.8768,892.26529 L 1790.1706,894.06535 L 1795.3198,890.90888 C 1796.2336,888.63107 1797.2641,888.26357 1798.1108,888.20152 L 1797.4233,892.57159 L 1800.8486,889.92854 L 1801.449,889.92854 L 1801.449,892.89622 L 1803.1498,894.12915 L 1805.6046,889.1475 C 1807.4417,889.80758 1809.2788,890.19572 1811.1159,889.90291 L 1810.9877,893.48875 L 1805.2881,897.69946 L 1805.9024,898.97697 L 1808.0495,899.13077 L 1808.0495,900.2905 C 1810.4579,901.2967 1812.7418,901.74201 1815.0159,902.1437 L 1814.3564,913.59256 L 1812.4825,917.32092 L 1809.7509,919.11072 L 1809.7509,921.28441 L 1811.4523,921.93729 C 1811.8309,923.85787 1812.1475,925.79223 1813.7208,927.44728 L 1815.8155,928.56838 L 1816.9798,927.40418 L 1817.7123,930.32285 L 1821.6797,930.32285 L 1826.1601,925.52636 L 1828.8607,924.80849 L 1828.3395,922.21269 L 1833.9404,921.79182 L 1835.7445,923.97413 L 1837.9088,923.95213 L 1837.8868,922.10658 C 1839.5584,921.69064 1841.9193,919.80965 1845.3552,916.21802 C 1845.5981,909.97802 1843.8573,905.93377 1843.1396,899.47156 L 1845.372,898.95514 C 1847.0904,900.01964 1849.4119,900.74919 1851.872,901.40167 L 1856.2502,899.91682 L 1855.4424,895.41376 L 1858.848,888.72453 L 1860.9079,886.82357 L 1869.9318,886.50836 L 1869.8325,883.14591 L 1870.9068,882.3128 L 1869.1246,877.73817 L 1870.4248,877.03947 L 1869.6129,875.12422 L 1875.1024,869.96278 L 1885.1856,871.48285 L 1887.1859,874.39069 L 1889.1887,874.43516 L 1888.8653,866.67088 L 1893.1217,865.94961 L 1895.2728,863.52076 L 1894.6608,862.86573 L 1895.9373,859.42706 L 1893.164,853.8874 L 1892.1856,848.2468 L 1889.3981,843.46783 L 1886.4861,841.18315 L 1884.2996,841.04778 L 1884.2649,839.7934 L 1882.8204,840.25533 L 1882.1945,835.04189 C 1903.318,833.31458 1924.4415,830.42342 1944.9577,827.12743 C 1946.4823,830.90349 1948.6823,834.10062 1951.1473,837.07062 L 1950.9659,838.01319 L 1948.6873,837.4173 L 1948.8234,844.93176 L 1944.9213,846.97161 C 1945.4604,847.71954 1945.5067,848.55707 1944.5652,849.57416 L 1937.0207,849.30461 L 1937.6534,853.83171 C 1936.7352,853.78532 1935.6345,853.31335 1934.3115,852.32258 L 1929.5425,852.88875 L 1929.644,854.7639 L 1926.8935,857.79242 C 1930.3108,859.86953 1933.5148,862.33677 1934.657,865.08298 L 1930.0924,870.51652 C 1931.2596,871.80198 1931.9947,873.12668 1931.6836,874.54654 L 1928.8479,877.21046 L 1928.8479,879.89224 C 1926.9059,881.82739 1925.0504,883.77696 1923.9061,885.84505 L 1921.8295,885.2009 L 1921.374,886.83718 C 1919.5729,885.58235 1917.6807,884.16328 1916.528,884.07566 L 1916.5866,881.70161 C 1915.4381,881.88762 1914.2896,880.86804 1913.1411,879.87091 C 1911.3107,881.90861 1909.3368,884.37726 1908.2802,884.09358 C 1906.205,888.76253 1903.6275,893.54308 1900.3387,898.48175 L 1901.2417,900.53396 L 1899.1814,902.53355 L 1901.113,904.66788 L 1899.6122,906.53708 L 1898.6679,905.92673 C 1896.8364,912.96769 1893.6252,920.3153 1890.6335,927.61408 L 1890.2578,929.61683 L 1892.4212,930.18255 C 1892.6662,932.34058 1890.5868,933.16235 1890.1935,934.93412 L 1889.3581,936.62394 C 1853.3702,941.5714 1817.1773,946.61533 1781.1894,951.02209 z "},"tn3":{"name":"TN-3","path":"M 1971.1699,822.15939 L 1960.9261,823.75444 L 1960.1463,825.01278 L 1945.9327,827.01543 C 1946.3727,830.77118 1949.7588,833.70465 1951.604,836.83384 L 1951.1609,838.44664 L 1949.1582,838.03899 L 1949.2646,845.30533 L 1945.6491,847.0776 C 1945.7398,847.95036 1945.7187,849.03533 1944.7807,850.05503 L 1937.4612,849.71833 L 1938.0638,854.32625 C 1936.5579,854.1835 1935.2994,853.6462 1934.2357,852.76664 L 1929.9822,853.31602 L 1929.9822,854.89338 L 1927.501,857.67582 C 1930.129,860.14022 1933.8536,861.54404 1935.1572,865.15483 L 1930.6557,870.52486 C 1931.5,871.82336 1932.4073,873.10643 1932.2507,874.5479 L 1929.1315,877.25951 L 1929.1315,880.18374 C 1927.1626,881.85258 1925.6608,883.7689 1924.1337,886.17404 L 1922.1133,885.64236 L 1921.4753,887.3083 C 1919.3609,885.92382 1917.5209,884.54077 1916.1407,884.33087 L 1916.1762,882.11555 C 1914.6199,881.64291 1913.9938,880.98941 1913.1279,880.37872 C 1911.6296,882.31841 1910.1245,884.30932 1908.6263,884.38407 C 1906.5616,889.08449 1903.8991,893.79092 1900.9523,898.49139 L 1901.6612,900.70671 L 1899.8003,902.58533 L 1901.5372,904.51714 L 1899.499,907.01602 L 1898.8964,906.41344 C 1896.1774,917.22553 1891.1903,927.31673 1890.9035,929.06315 L 1893.2606,929.68347 L 1892.4808,932.87357 L 1891.7542,933.4407 C 1891.3488,933.75381 1890.8246,934.58324 1890.6022,935.28387 L 1889.9287,936.50671 C 1908.2555,933.87053 1926.578,930.75898 1944.9048,927.53899 L 1944.0364,914.35325 L 1941.9273,914.88493 L 1940.669,913.36077 L 1934.4306,911.55305 C 1932.6069,912.72848 1930.5066,913.80325 1925.7819,913.96335 L 1924.4881,915.5407 L 1921.3689,914.03424 L 1922.0069,912.97087 C 1919.4915,912.45966 1917.0555,911.31157 1914.6875,909.62129 L 1923.5279,890.28311 C 1924.7493,890.28272 1926.4949,889.01547 1928.5555,886.98713 L 1928.5167,885.00263 L 1932.4345,880.47729 L 1934.241,879.66323 L 1934.241,876.73299 L 1935.932,876.0766 L 1935.9161,872.76269 L 1938.2484,872.04318 C 1938.7963,871.54734 1939.4749,868.36977 1940.3009,866.68143 L 1942.2012,864.84972 L 1944.4224,864.79714 L 1947.8272,861.23217 L 1945.3459,859.89522 L 1951.2785,851.08023 L 1953.745,852.30999 C 1954.2203,851.58276 1958.4564,851.1269 1961.9148,850.68982 L 1965.7822,854.32625 L 1964.2403,854.85793 L 1964.7366,856.18711 L 1974.1651,860.47602 L 1976.9298,862.90407 L 1981.7504,861.61028 L 1982.4416,862.54961 L 1986.1279,862.72684 L 1986.1279,856.93147 L 1987.2799,856.55932 C 1985.5252,855.55675 1982.5879,854.99648 1980.5984,854.09582 L 1980.1022,855.4605 L 1975.9196,855.4605 L 1975.9196,852.69575 L 1974.9626,852.48308 L 1975.0867,846.40414 L 1977.1957,844.41919 L 1976.3982,843.46216 L 1979.411,839.66949 L 1983.4873,840.07714 L 1983.8594,838.34031 C 1982.9303,837.19408 1982.9409,836.04831 1982.8669,834.90209 L 1980.882,832.73991 L 1976.5399,831.67654 C 1976.6668,829.10439 1975.4994,826.75194 1974.041,824.17978 L 1971.1699,822.15939 z "},"tn2":{"name":"TN-2","path":"M 1921.6892,913.95648 L 1922.3942,912.80907 C 1919.4628,912.29973 1917.5004,910.82622 1915.1745,909.45201 L 1923.865,890.54172 C 1925.8877,889.82918 1927.4531,888.52864 1928.8479,887.00885 L 1928.8479,884.95256 L 1932.8178,880.53689 L 1934.5192,879.88401 L 1934.5192,876.97714 L 1936.2206,876.32426 L 1936.2206,872.93669 L 1938.4609,872.35084 L 1940.521,866.7572 L 1942.378,865.10305 L 1944.505,865.10305 L 1948.2631,861.22571 L 1945.9116,859.75713 L 1951.5102,851.43985 L 1953.825,852.67868 C 1954.3082,851.62677 1958.4895,851.27799 1961.8876,850.91196 L 1965.158,854.22847 L 1963.8059,854.67917 L 1964.5245,856.552 L 1974.0335,860.84335 L 1973.914,864.77973 L 1972.4446,865.34675 L 1970.2349,864.16411 L 1969.4338,864.57988 C 1968.4492,865.30246 1968.1922,866.1591 1967.8868,867.25219 L 1962.3129,868.80277 C 1964.7265,873.30044 1967.5338,877.17926 1970.8394,880.27516 L 1971.7682,886.16389 L 1966.9172,887.50736 L 1965.3218,889.00186 C 1964.4443,889.82385 1963.1734,890.66315 1962.4977,890.86686 L 1961.2691,891.23731 L 1960.1363,894.48673 L 1957.9734,895.17324 L 1955.4471,899.66813 L 1956.6403,901.89757 L 1955.3693,902.6831 L 1956.0256,907.47182 L 1953.2258,909.90622 L 1952.2377,909.9149 C 1951.6942,909.91966 1950.8814,910.15649 1950.4315,910.44119 L 1949.6134,910.95875 L 1948.1967,909.05553 L 1947.1711,909.67149 C 1946.6069,910.01023 1945.6349,911.07462 1945.0111,912.03681 L 1943.9485,914.00129 L 1942.0368,914.53303 L 1940.8869,913.17946 L 1934.42,911.22837 C 1932.0768,912.63144 1929.4244,913.69572 1925.7518,913.64275 L 1924.466,915.24937 L 1921.6892,913.95648 z "},"tn1":{"name":"TN-1","path":"M 1972.7713,886.08681 L 1972.0804,886.08681 L 1971.3106,879.9257 C 1968.0686,876.73628 1965.2041,873.17783 1963.1195,869.12422 L 1968.0885,867.72659 C 1968.5499,865.89352 1969.3351,865.03142 1970.2249,864.48346 L 1972.4347,865.6661 L 1974.2182,864.98169 L 1974.2182,860.93545 L 1976.8398,863.2782 L 1981.5428,861.97057 L 1981.8745,862.79427 L 1986.3712,862.95658 L 1986.3712,857.16257 L 1987.77,856.62363 C 1985.7208,855.22951 1982.8715,854.74978 1980.4223,853.81282 L 1979.9474,855.29479 L 1976.1629,855.23762 L 1976.1629,852.63059 L 1975.2076,852.30676 L 1975.4588,846.47826 L 1977.6235,844.31081 L 1976.9127,843.60008 L 1979.6988,840.28896 L 1983.744,840.65192 L 1984.3718,838.25115 C 1983.4494,837.19386 1983.2191,836.02126 1983.2625,834.80301 L 1980.9277,832.3178 L 1977.0539,831.34857 C 1976.7689,828.76184 1976.3885,826.18311 1974.201,823.75495 L 1971.8555,822.11209 C 1996.6471,817.75416 2021.4798,813.40995 2045.3288,808.73783 L 2046.4883,806.85077 L 2058.5021,805.19078 L 2056.8493,807.93347 L 2056.5302,810.31247 L 2057.6646,812.43222 L 2056.4329,818.17582 L 2057.725,819.73276 L 2056.8801,819.73276 L 2058.2006,821.32384 L 2056.7355,821.84798 L 2054.7505,820.82709 L 2053.758,821.359 C 2053.2122,821.65152 2052.0378,822.70825 2051.1483,823.70725 L 2049.531,825.52365 L 2045.6918,836.9239 L 2044.7967,837.91297 C 2044.3044,838.45696 2043.4346,839.02421 2042.8638,839.17342 L 2041.826,839.44485 L 2040.6734,836.91523 L 2036.5406,837.16612 L 2034.3258,839.54353 L 2032.8142,838.96352 L 2032.0868,839.84002 C 2031.6867,840.32208 2031.0716,840.72503 2030.7199,840.7354 C 2030.3682,840.74578 2029.5267,841.21673 2028.8498,841.78193 L 2027.6193,842.80962 L 2026.9605,845.30765 C 2026.5982,846.68152 2025.95,848.35512 2025.5201,849.02671 C 2025.0902,849.69831 2023.9834,850.78555 2023.0604,851.44274 L 2021.3823,852.63762 L 2019.55,850.80534 L 2020.1959,848.77031 L 2017.2184,846.42824 L 2015.9573,847.25455 C 2015.2637,847.70905 2014.1744,848.657 2013.5367,849.36109 C 2012.899,850.06518 2011.8164,851.09753 2011.1309,851.65513 L 2009.8844,852.66893 L 2010.5402,854.73492 L 2009.8654,856.49342 L 2006.3068,855.47281 L 2005.1267,856.65238 L 2005.0508,862.80471 L 2004.4313,864.09566 C 2004.0905,864.80571 2003.669,865.83323 2003.4946,866.37909 L 2003.1774,867.37157 L 1998.5001,867.37157 L 1997.0581,868.50583 C 1996.265,869.12967 1995.2954,869.64008 1994.9034,869.64008 L 1994.1907,869.64008 L 1993.4987,872.39707 L 1991.0644,872.75929 L 1990.6468,873.60998 C 1990.4172,874.07786 1989.9014,875.1625 1989.5006,876.02028 L 1988.7719,877.57988 L 1986.6894,877.57988 L 1983.8473,880.48245 C 1982.2842,882.07886 1980.7864,883.77599 1980.519,884.25385 L 1980.0327,885.12275 L 1977.1272,885.22501 C 1975.5291,885.28121 1974.0508,885.49814 1973.8418,885.70701 C 1973.6329,885.91588 1973.1512,886.08681 1972.7713,886.08681 z "},"ky2":{"name":"KY-2","path":"M 1878.5861,726.93496 C 1874.1123,726.9619 1869.5918,727.29084 1865.0637,727.69701 L 1863.5927,731.25932 L 1865.8258,731.38335 L 1868.0057,735.05199 L 1872.4009,733.95318 L 1873.4997,736.07991 L 1867.474,736.87741 L 1865.3295,734.96335 L 1861.7318,736.13305 C 1861.6329,738.56121 1861.1807,740.98898 1860.4558,743.41714 L 1854.1431,747.67667 L 1847.0751,747.70605 L 1839.0389,752.07028 C 1839.4859,754.08886 1838.392,754.70056 1837.0617,755.09642 C 1836.2344,755.10067 1834.981,755.24506 1834.2792,755.43318 L 1833.0032,755.78763 L 1833.0032,758.4815 L 1831.4259,758.4815 L 1829.6004,755.6813 L 1823.6101,755.84077 C 1822.3975,755.06931 1821.1717,754.3182 1819.977,753.51912 C 1819.8339,753.41165 1819.5787,752.14468 1819.4098,750.70117 L 1819.1085,748.0782 L 1817.8325,747.65285 L 1817.2299,749.97457 L 1815.2627,749.97457 L 1813.7917,751.95952 L 1811.4523,750.54169 L 1811.4523,751.07338 C 1811.4523,751.37242 1811.8562,751.85692 1812.3562,752.13674 L 1813.2778,752.63298 L 1812.8701,754.79516 L 1809.1306,756.49655 L 1809.8041,760.98038 L 1811.0092,762.43365 L 1810.3535,764.15278 L 1806.9153,764.15278 L 1806.9153,768.49483 L 1804.186,769.96585 L 1802.8213,769.11516 L 1803.4416,765.28704 L 1802.9808,765.28704 C 1802.7267,765.28704 1802.1994,765.66985 1801.8111,766.13773 L 1801.1022,766.98843 L 1798.9755,766.98843 L 1797.3095,764.68447 C 1796.3911,763.41648 1795.5519,762.12292 1795.4487,761.81338 L 1795.2714,761.24625 L 1793.3574,761.99061 L 1791.2129,765.62375 L 1786.6404,766.98843 L 1785.5061,768.40625 L 1784.9745,775.10546 L 1783.9289,775.86751 C 1783.3529,776.2886 1782.5649,776.62961 1782.1743,776.62961 L 1781.4654,776.62961 L 1779.445,773.22684 L 1776.1485,773.22684 L 1771.9997,770.83407 L 1772.0351,774.60905 C 1771.9052,775.62625 1772.7916,776.59508 1774.6572,777.51728 L 1772.1609,780.35009 C 1770.9976,780.32945 1769.9575,780.55505 1769.2668,781.47947 L 1769.2897,783.71912 C 1771.3947,785.45601 1777.6389,787.19295 1782.7945,788.92984 L 1788.076,789.03556 L 1786.1256,792.50939 L 1792.9143,794.60119 L 1796.707,794.28218 L 1800.411,797.68478 L 1810.6193,796.78089 L 1816.5744,797.9507 L 1822.281,809.45145 L 1819.6407,810.99381 L 1817.4601,808.81371 C 1815.9762,809.27071 1814.3206,809.69339 1811.2038,809.82377 L 1811.8949,811.84587 L 1810.4769,821.66304 L 1816.1841,831.34041 L 1825.4529,831.35816 L 1825.4529,833.12998 L 1831.6392,826.40202 L 1831.1792,825.70638 L 1834.8469,822.19529 C 1835.5244,823.32682 1836.473,824.35406 1838.976,824.78361 L 1840.3227,823.04553 C 1841.106,823.40622 1840.8634,824.99027 1840.429,826.80275 L 1841.581,826.74961 C 1842.0147,828.58507 1842.3675,830.49958 1843.371,831.76513 L 1845.1256,831.80058 L 1846.951,833.51971 C 1850.2158,830.19832 1853.4427,826.81228 1857.0353,824.39246 L 1854.0578,808.30018 L 1852.7818,807.48493 L 1853.6857,804.61384 L 1856.8758,803.17833 L 1859.6051,806.12031 L 1865.4004,806.12031 L 1870.3628,802.71753 C 1872.696,799.98658 1874.932,797.30894 1875.5201,795.57523 L 1879.6141,794.17516 L 1880.3939,791.12684 L 1881.28,789.77991 L 1881.794,787.21008 L 1883.9207,784.39219 L 1885.6753,784.39219 L 1884.6651,776.09793 L 1883.265,757.01048 L 1881.8826,754.68882 L 1878.5685,755.11417 L 1877.381,753.59001 L 1875.5733,755.00783 L 1874.2441,750.22268 C 1876.1692,748.61125 1874.6146,748.66427 1878.657,744.12605 L 1878.657,740.15615 L 1880.0394,740.1384 L 1879.8267,729.62882 L 1880.5002,726.93496 C 1879.863,726.92526 1879.2252,726.93111 1878.5861,726.93496 z "},"ky5":{"name":"KY-5","path":"M 1894.7155,832.33657 L 1895.4167,830.92204 L 1893.7911,826.59496 L 1894.2798,824.60609 C 1894.0794,823.24266 1891.7533,820.9594 1889.8234,819.18423 L 1894.6906,814.27828 L 1894.8202,811.66064 L 1897.044,812.24218 L 1899.665,808.69553 L 1895.7276,805.5445 L 1895.7276,801.38853 L 1909.9573,784.11186 C 1910.643,784.64439 1911.3924,784.92501 1912.2186,785.12923 C 1912.8886,783.37709 1913.454,779.94891 1913.9513,775.43331 L 1917.562,775.08351 C 1917.4355,773.26836 1918.0695,772.04977 1918.6295,770.83532 L 1922.2009,771.81118 L 1925.904,770.49283 L 1926.617,768.24649 C 1928.2877,767.72955 1929.9556,767.199 1931.7948,767.52448 L 1936.0877,765.38243 L 1939.5958,766.95134 L 1940.7251,761.78797 L 1941.7668,760.58242 L 1942.9706,761.51643 L 1942.133,758.66116 L 1945.5664,754.85318 L 1946.9879,754.85159 L 1949.2646,748.21822 C 1947.4505,746.57877 1945.7311,744.87375 1942.8302,743.98676 L 1942.6907,742.38491 L 1941.229,741.80139 L 1941.3814,737.52331 C 1943.062,737.2284 1944.5022,736.72723 1945.5782,735.91414 C 1945.5106,733.50458 1944.6105,731.26159 1943.2487,729.11087 L 1945.1001,727.75707 L 1945.0678,726.05597 L 1950.1395,720.48053 L 1950.1313,714.87701 L 1951.8608,712.91344 L 1951.4359,712.07018 L 1953.7994,710.57614 L 1958.3349,715.10948 L 1960.5263,719.98338 C 1962.2791,721.56142 1964.0088,722.72386 1965.6757,722.75375 L 1965.4087,725.07535 L 1963.8498,726.05756 L 1964.5263,729.61725 L 1967.6962,732.08211 C 1969.0749,731.94078 1970.1803,731.95127 1970.7826,732.24125 L 1977.1179,731.00536 C 1977.3331,729.21607 1979.74,726.26864 1981.8396,723.57818 L 1979.5439,719.84222 L 1980.6566,718.53505 C 1981.7981,718.72288 1982.8893,718.06836 1984.3756,716.35988 L 1983.7363,715.62959 L 1984.7235,714.4587 L 1987.1809,714.52222 L 1989.9351,712.2313 L 1993.9583,712.1164 L 1992.8347,714.11882 L 1994.0677,714.88087 L 1994.0677,717.08246 L 1992.3663,717.08246 L 1992.3663,717.84638 C 1992.3663,718.26651 1992.8429,719.15974 1993.4253,719.83134 C 1994.0078,720.50287 1994.63,721.05236 1994.8082,721.05236 C 1994.9863,721.05236 1995.8794,721.75418 1996.7928,722.61197 C 1997.7062,723.46975 1998.8998,724.87339 1999.4451,725.73117 L 2000.4366,727.29078 L 2001.8862,727.29078 L 2002.4971,728.88277 L 2001.8593,731.32182 L 2002.9259,732.28372 C 2003.5125,732.81274 2004.3115,733.27115 2004.7014,733.30234 C 2005.0913,733.33354 2005.6767,733.39734 2006.0023,733.44413 L 2006.5943,733.52919 L 2006.262,734.97605 L 2008.6554,738.0187 L 2011.6269,739.37261 L 2011.9958,740.56261 C 2012.1987,741.21708 2012.8341,742.41939 2013.4078,743.23441 L 2014.4508,744.71626 L 2013.8593,745.30778 L 2017.4503,746.55954 L 2018.4623,745.93411 L 2019.1428,747.70741 L 2021.1164,747.70741 L 2022.2607,748.69989 C 2022.8901,749.24575 2023.4396,749.88377 2023.4817,750.11771 C 2023.5239,750.35165 2023.5584,750.80983 2023.5584,751.13588 L 2023.5584,751.72869 L 2027.3985,751.00833 L 2028.1909,752.29061 L 2030.364,751.60086 L 2030.364,751.98107 C 2030.364,752.19017 2027.6741,755.84406 2024.3865,760.10088 C 2021.099,764.35763 2017.8707,768.5423 2017.2126,769.40008 C 2016.5546,770.25787 2015.7868,770.95969 2015.5066,770.95969 C 2015.2263,770.95969 2013.6694,771.81889 2012.0468,772.86904 L 2009.0966,774.77839 L 2005.1958,778.54033 C 2003.0503,780.60938 2001.0694,782.30226 2000.7938,782.30226 L 2000.2928,782.30226 L 2001.001,786.73159 L 1998.9273,790.24206 L 1997.1869,790.27768 L 1995.0965,793.14735 L 1995.7907,795.91335 L 1995.0907,798.70266 L 1993.129,799.86006 C 1992.0501,800.49666 1990.0546,801.29767 1988.6948,801.6401 L 1986.2222,802.2627 L 1985.3244,805.00766 C 1984.8306,806.51735 1984.4265,808.09097 1984.4265,808.50452 L 1984.4265,809.25636 L 1975.636,813.37014 L 1971.2266,816.89711 L 1970.3121,816.9574 C 1969.8091,816.99058 1968.9726,817.05438 1968.4531,817.09918 C 1967.9336,817.14398 1966.111,818.07391 1964.4029,819.16563 L 1961.2973,821.15058 L 1959.5658,824.00386 C 1932.507,827.66286 1898.1678,832.50109 1894.7155,832.33657 z "},"va9":{"name":"VA-9","path":"M 1961.4578,822.66362 L 1967.6962,818.43171 L 1972.7194,817.46067 L 1974.8463,815.17775 L 1979.3402,812.9182 C 1981.812,811.6755 1984.2227,810.6587 1984.6975,810.6587 L 1985.5608,810.6587 L 1985.6448,809.94979 C 1985.691,809.55989 1985.7664,808.85806 1985.8124,808.39018 C 1985.8584,807.9223 1986.2133,806.45486 1986.601,805.12919 L 1987.3059,802.7189 L 1990.1355,802.7189 L 1995.7284,799.88478 L 1997.0308,797.45123 L 1996.4738,793.29826 L 1997.1764,792.33726 C 1997.5629,791.80876 1998.1215,791.37632 1998.4178,791.37632 C 1998.7142,791.37632 1999.7456,790.60491 2000.7099,789.66206 L 2002.4633,787.94786 L 2001.8702,783.52618 L 2005.7048,779.93677 C 2007.8137,777.96265 2010.2053,775.76883 2011.0194,775.06162 C 2011.8334,774.35441 2013.591,773.24363 2014.9251,772.59325 L 2017.3509,771.41073 L 2018.895,769.35823 C 2019.7443,768.22942 2023.0842,763.85317 2026.3171,759.63333 C 2029.5499,755.4135 2032.421,751.87581 2032.6973,751.77185 L 2033.1996,751.58277 L 2033.1996,752.01073 C 2033.1996,752.24614 2032.7858,752.8959 2032.2801,753.45469 L 2031.3606,754.47071 L 2032.0297,756.21434 L 2034.1422,756.21434 L 2034.761,757.49038 C 2035.1014,758.1922 2035.5205,759.42146 2035.6923,760.22201 L 2036.0046,761.67761 L 2037.5795,762.49053 C 2038.4458,762.93765 2039.4879,763.75007 2039.8955,764.29593 L 2040.6366,765.2884 L 2045.6201,765.2884 L 2046.0736,766.00293 C 2046.323,766.39595 2047.4306,767.19078 2048.5349,767.76925 L 2050.5427,768.82099 L 2056.7416,767.53412 L 2057.812,765.94134 C 2058.4008,765.06529 2059.7307,763.76742 2060.7672,763.05715 L 2062.6519,761.76574 L 2063.0311,760.54964 C 2063.2397,759.88077 2063.6649,759.16999 2063.9762,758.97008 L 2064.542,758.60655 L 2067.8233,760.52968 C 2069.6279,761.58738 2071.4637,762.45276 2071.9027,762.45276 L 2072.7009,762.45276 L 2075.2985,759.68767 L 2078.4939,758.17167 C 2080.2512,757.33782 2082.2339,756.59466 2082.8998,756.52014 L 2084.1105,756.38465 L 2089.3917,751.50133 L 2087.2123,749.12523 L 2087.9434,747.13733 L 2092.0233,749.90963 L 2093.3781,748.99876 C 2094.1234,748.49782 2096.432,746.46999 2098.5086,744.49247 L 2102.284,740.89705 L 2104.0549,741.57658 L 2103.8071,742.7088 L 2105.6759,743.94196 L 2113.7319,735.78954 L 2113.7319,734.09632 L 2112.0305,734.09632 L 2112.0305,732.67482 L 2115.4333,729.46317 L 2115.4333,727.29078 L 2112.6376,727.29078 L 2111.4234,725.02226 L 2112.685,722.66511 L 2112.1084,721.16261 L 2112.941,717.87236 L 2114.3685,720.48937 C 2117.4766,719.81699 2120.5691,718.90051 2123.4103,717.45977 L 2123.5973,715.16778 L 2124.7479,715.08606 L 2124.9125,717.54252 L 2127.8026,714.15336 L 2127.1584,708.49472 L 2135.1079,707.90519 L 2137.3551,709.47914 L 2139.4626,707.26093 L 2140.7937,707.7017 C 2140.4664,709.88463 2140.0125,712.04228 2139.0571,714.09959 L 2131.7429,713.39613 C 2130.4547,716.68502 2129.5238,719.83309 2124.1919,724.71494 L 2124.1778,726.36233 L 2127.7523,730.14536 C 2126.4862,734.01965 2125.8485,736.36626 2125.9744,737.89955 C 2125.146,738.12747 2124.5261,738.62808 2124.5167,739.92697 L 2130.7457,741.58214 C 2131.4209,742.30784 2130.1638,743.72912 2129.3473,744.99183 L 2126.516,745.84048 L 2121.3837,751.26688 C 2121.7671,752.69446 2122.0101,754.2624 2122.7462,755.33728 L 2126.4402,754.29915 L 2127.1918,755.31187 L 2126.2985,756.74126 C 2127.5543,760.18583 2126.8617,762.77506 2128.2125,764.7228 L 2126.8186,766.27339 L 2127.5043,767.89838 L 2125.312,770.50236 L 2125.312,772.99494 L 2123.41,774.71578 L 2131.896,774.69202 L 2135.0293,778.21962 L 2137.9188,777.12103 L 2140.8672,782.51153 L 2144.5706,784.18876 C 2144.4734,786.10452 2143.872,788.01796 2140.9665,790.37058 L 2141.529,791.28065 C 2113.9239,796.34998 2085.8438,802.05258 2059.729,805.13469 L 2058.9271,803.8371 L 2045.7098,805.79982 L 2044.2586,807.77428 C 2021.3631,812.02145 2007.0141,814.96808 1961.4578,822.66362 z "},"va5":{"name":"VA-5","path":"M 2142.0566,791.21673 L 2141.5337,790.37058 C 2143.8116,788.55962 2145.0604,786.46402 2144.924,783.98527 L 2141.1847,782.20216 L 2138.0775,776.67459 L 2135.1727,777.86845 L 2132.0809,774.36246 L 2124.0878,774.43953 L 2125.6416,773.00135 L 2125.6416,770.54551 L 2127.7407,767.84048 L 2127.1779,766.40383 L 2128.517,764.79024 C 2127.3139,763.33912 2127.9033,761.30977 2126.6423,756.77495 L 2127.5047,755.32089 L 2130.7742,754.11614 L 2133.4893,755.86255 L 2135.3412,754.10156 C 2136.181,752.34295 2136.2669,750.17096 2138.5593,749.20894 L 2137.2815,746.78265 L 2137.2815,742.87706 C 2138.7375,741.00786 2140.9678,740.46648 2142.9252,740.05117 L 2142.9714,737.62562 L 2145.1433,733.92284 C 2146.6294,733.85881 2148.0304,734.92836 2149.1966,735.7617 L 2149.3641,736.77175 C 2153.1063,735.4555 2156.3686,734.13925 2157.9558,732.82301 L 2160.9192,734.73026 L 2157.9281,738.56082 L 2158.9425,741.78404 L 2162.49,743.11809 L 2164.7748,735.38813 L 2167.4632,735.90206 C 2169.7631,733.85977 2172.5136,730.91609 2173.6683,731.16432 L 2173.5199,727.50192 L 2174.7663,727.94388 L 2177.7719,723.60444 L 2177.4953,722.79793 L 2179.2818,722.20097 L 2180.2354,719.68088 C 2177.5268,717.0836 2175.1956,714.31238 2172.8811,711.18971 L 2169.2064,710.79465 L 2167.0578,706.29426 L 2165.7658,706.92144 C 2164.7722,706.01001 2163.9151,705.78072 2163.0492,705.50737 L 2162.5024,701.2049 L 2166.0541,698.75292 C 2167.3352,699.83925 2168.7428,699.91355 2170.1526,699.96981 L 2170.2502,698.03544 L 2173.8237,693.70542 L 2172.6543,692.672 C 2173.7811,690.02861 2175.5607,687.53024 2177.8724,685.15017 L 2177.0811,683.3383 L 2177.3237,676.53276 L 2178.9884,674.80438 C 2179.904,673.85376 2180.6531,672.87586 2180.6531,672.63131 C 2180.6531,672.38671 2181.5463,671.09655 2182.638,669.76425 L 2184.623,667.34187 L 2184.623,666.44127 C 2184.623,665.94594 2184.8432,665.40462 2185.1123,665.23828 C 2185.3815,665.07194 2185.9295,663.71701 2186.3302,662.22739 C 2186.7309,660.73772 2187.2577,659.29505 2187.5009,659.02141 L 2187.9432,658.52393 L 2189.2649,663.4888 C 2191.827,665.8729 2194.3753,668.3952 2197.0645,669.50887 L 2195.3444,674.40041 L 2203.7169,676.25254 L 2200.7102,684.954 L 2213.4618,688.65792 L 2211.1453,698.88937 L 2215.2564,700.84988 L 2214.6026,702.90986 L 2216.6291,703.69153 L 2216.6291,715.87573 L 2213.435,719.88776 L 2213.3178,724.17157 C 2214.4045,729.54665 2215.6124,734.80064 2217.0929,739.78202 C 2220.4489,740.56806 2221.0875,741.05868 2221.4638,741.52083 L 2226.7092,743.06467 L 2229.2215,741.74031 L 2231.8316,759.90068 L 2233.265,761.43051 L 2236.3502,759.40898 L 2235.6442,754.08682 L 2243.1314,743.16216 C 2244.3461,744.32517 2245.7285,745.19486 2247.4683,745.4389 L 2250.082,756.2807 L 2247.2907,767.18295 C 2214.6432,775.30996 2178.8294,783.28617 2142.0566,791.21673 z "},"va6":{"name":"VA-6","path":"M 2122.8213,754.99655 C 2122.4126,754.35626 2122.0565,752.92579 2121.7103,751.34991 L 2126.6336,746.06336 L 2129.5518,745.33092 C 2130.5125,743.95223 2131.6182,742.54938 2131.1166,741.41438 L 2124.7433,739.74912 C 2124.7849,738.79351 2125.4158,738.32892 2126.2087,737.9993 C 2125.9866,736.59969 2126.9466,733.48065 2128.0949,730.08757 L 2124.5073,726.3861 L 2124.5171,724.7387 C 2128.1751,721.67552 2130.8452,718.09479 2131.8574,713.64578 L 2139.2224,714.40034 C 2140.2175,712.3065 2140.7051,709.98428 2141.0753,707.60914 L 2139.3592,706.95065 L 2137.3668,709.15224 L 2134.96,707.57523 L 2126.7138,708.16527 L 2127.4426,713.99813 L 2125.1122,716.7989 L 2125.0745,714.81395 L 2123.3138,714.96758 L 2123.0622,717.20655 C 2120.6047,718.4848 2117.5673,719.34882 2114.4317,720.14269 L 2113.0842,717.57354 L 2113.9751,716.21368 C 2114.4652,715.46581 2114.8661,714.49585 2114.8661,714.05825 L 2114.8661,713.26262 L 2117.9848,708.57633 L 2121.1035,703.89003 L 2121.7043,701.55397 C 2122.0347,700.26914 2122.5373,698.47871 2122.8211,697.57522 L 2123.3373,695.93247 L 2122.5642,694.68156 L 2122.8927,691.54925 L 2124.3156,689.00341 C 2125.0982,687.60317 2125.931,686.45751 2126.1662,686.45751 C 2126.4014,686.45751 2126.8757,685.83889 2127.2201,685.08274 L 2127.8465,683.70802 L 2126.2386,682.37351 L 2127.0624,680.78044 C 2127.5155,679.90423 2128.1683,679.09329 2128.5131,678.97839 L 2129.1399,678.7694 L 2129.4113,676.80039 C 2129.5607,675.71746 2129.6838,674.00195 2129.6849,672.98821 C 2129.6861,671.97446 2129.687,670.69842 2129.6868,670.15256 C 2129.6867,669.6067 2129.6648,668.04205 2129.6383,666.67561 L 2129.59,664.19108 L 2134.4321,664.91105 L 2139.5362,670.54348 L 2148.6954,671.29158 L 2151.2591,666.94641 L 2151.8303,663.79981 C 2152.1445,662.06916 2152.618,659.50472 2152.8824,658.10108 C 2153.1469,656.69743 2153.3785,655.22999 2153.3971,654.84009 L 2153.4309,654.13118 L 2155.2816,654.13118 L 2154.6726,649.59012 L 2155.305,647.46543 C 2155.6529,646.2968 2156.1526,645.18971 2156.4155,645.00517 C 2156.6784,644.82062 2156.8498,644.43781 2156.7965,644.15448 C 2156.743,643.87114 2156.7295,643.1683 2156.7665,642.59266 L 2156.8337,641.54608 L 2163.1899,645.13328 L 2164.5362,644.61663 L 2166.5716,635.98306 L 2167.6091,634.31729 L 2169.3828,634.9979 L 2170.3392,633.65885 C 2170.8651,632.92238 2171.4335,631.80417 2171.6023,631.17398 L 2171.9091,630.02821 L 2174.2054,629.69315 L 2175.5694,625.921 L 2175.2149,624.99721 L 2175.3016,624.07336 L 2178.8719,624.03661 C 2179.8437,623.15812 2180.2418,622.08012 2180.0859,620.80947 C 2181.365,619.34968 2182.9426,619.1268 2184.56,619.0689 L 2184.2108,620.77579 L 2186.189,622.89685 L 2185.5338,624.60413 L 2186.5451,625.34117 L 2185.9719,626.26854 L 2187.6461,627.6884 L 2186.9599,632.15755 L 2181.6148,642.64381 L 2179.3083,643.1193 C 2177.9669,645.40256 2177.5703,647.88828 2177.6783,650.4821 L 2176.176,652.00382 L 2175.7332,658.37086 C 2178.3341,658.84611 2179.5995,659.63198 2179.9719,660.62548 L 2183.2328,660.68384 L 2183.2328,661.8181 L 2186.1644,661.8181 C 2185.5134,665.38414 2184.3566,664.53447 2184.3282,667.2057 C 2178.7243,674.24411 2180.7653,673.09307 2176.99,676.37714 L 2176.8641,683.37721 L 2177.4798,685.08291 C 2175.2031,687.18457 2173.6351,689.97915 2172.2745,692.69156 L 2173.3971,693.77858 L 2169.9749,697.97839 L 2169.8776,699.50147 C 2168.5862,699.70462 2167.3454,699.04766 2166.1046,698.39001 L 2162.133,701.11172 L 2162.7885,705.77057 C 2163.8448,706.08493 2164.8243,706.5067 2165.6223,707.18278 L 2167.0107,706.82656 L 2169.0286,711.12761 L 2172.7093,711.48275 C 2175.0675,714.54694 2177.4772,717.43096 2180.0417,719.77326 L 2179.2217,721.98994 L 2177.2398,722.72216 L 2177.5317,723.53293 L 2174.6982,727.67796 L 2173.2804,727.19624 L 2173.3885,730.86862 C 2172.2783,731.11759 2170.313,732.4804 2167.4395,735.5818 L 2164.675,735.02704 L 2162.2018,742.60325 L 2159.2459,741.55174 L 2158.3007,738.63863 L 2161.3707,734.63453 L 2157.8648,732.31248 C 2156.7733,733.63462 2153.0109,734.95683 2149.461,736.27897 L 2149.461,735.87705 C 2148.7546,734.71013 2147.1938,733.97042 2145.036,733.52919 L 2142.6554,737.56392 L 2142.6554,739.746 C 2140.5381,740.24077 2138.4413,740.78283 2136.9842,742.80095 L 2136.9842,746.64773 L 2138.2473,749.00801 C 2137.032,749.71692 2135.8779,750.69272 2135.2248,753.85509 L 2133.5233,755.4845 L 2130.8371,753.80302 L 2127.4675,754.97772 L 2126.4465,753.95677 L 2122.8213,754.99655 z "},"ky6":{"name":"KY-6","path":"M 1905.5236,788.80887 C 1905.0212,787.6914 1904.7261,784.95705 1904.4045,782.42981 L 1899.9995,781.79162 L 1897.9265,778.48327 L 1897.9265,776.0706 L 1896.3099,775.43184 L 1895.7876,772.67463 L 1891.3058,775.889 L 1885.0649,776.09067 L 1883.6745,757.06504 L 1882.0598,754.44144 L 1878.6677,754.92367 L 1877.4167,753.28393 L 1875.7052,754.66194 L 1874.4383,750.31042 C 1875.8661,749.31942 1875.5424,747.81761 1878.9406,744.21759 L 1878.9406,740.33474 L 1880.1515,740.33474 L 1880.0222,729.84286 L 1880.7742,726.72365 L 1879.1368,726.70442 L 1882.8193,723.65838 L 1883.4056,724.70484 L 1890.949,724.44946 L 1893.7357,727.81299 L 1895.2433,725.77439 L 1898.7179,726.55005 L 1899.4915,724.69996 L 1901.3108,725.31218 L 1902.1912,724.00637 L 1905.9034,723.59951 L 1905.8264,725.84279 C 1908.0801,725.37712 1909.2377,724.84294 1909.8547,724.27496 L 1910.7042,725.09191 L 1917.1443,718.47862 L 1921.5935,723.49357 L 1924.2532,724.22437 L 1925.4071,726.53877 L 1928.4969,725.86315 L 1929.8714,726.62423 L 1929.1107,727.75191 L 1929.9986,729.76335 L 1934.4968,730.48258 L 1941.0346,737.51532 L 1940.7992,742.08768 L 1942.459,742.72462 L 1942.459,744.16705 C 1944.7241,744.619 1946.8098,746.56482 1948.9286,748.23575 L 1946.7889,754.51296 L 1945.4122,754.51296 L 1941.8449,758.57581 L 1942.5999,761.03494 L 1941.7569,760.23823 L 1940.3833,761.61176 L 1939.4484,766.58491 L 1936.1991,765.10312 L 1931.7191,767.23978 C 1930.351,767.00192 1928.7234,767.11008 1926.4363,768.0975 L 1925.7258,770.33619 L 1922.1913,771.52024 L 1918.6567,770.53933 C 1917.9315,771.63593 1917.2215,772.75051 1917.2987,774.79989 L 1913.6717,775.15088 C 1913.2189,778.72357 1912.7901,782.64696 1912.0497,784.78232 C 1911.3349,784.70882 1910.7727,784.3399 1909.9559,783.65509 L 1905.5236,788.80887 z "},"ky4":{"name":"KY-4","path":"M 1941.1932,737.12831 L 1934.6836,730.16612 L 1930.0522,729.42551 L 1929.4114,727.75554 L 1930.1275,726.59684 L 1928.6178,725.6638 L 1925.5497,726.27738 L 1924.3408,724.0185 L 1921.7588,723.26927 L 1917.2218,717.86408 L 1910.6704,724.61478 L 1909.9535,723.89787 C 1909.0967,724.68057 1907.6577,725.09934 1906.1628,725.48323 L 1906.1628,723.28912 L 1902.0881,723.70709 L 1901.2515,725.06066 L 1899.3668,724.33746 L 1898.6267,726.22928 L 1895.1563,725.53523 L 1893.8176,727.32747 L 1891.1139,724.11423 L 1883.5008,724.3843 L 1882.8324,723.30273 L 1878.6822,726.72365 C 1874.2436,726.83929 1869.8242,726.94126 1864.8336,727.45122 L 1863.3629,731.10324 C 1860.9961,731.40672 1858.7454,731.94231 1856.7024,732.89327 C 1853.9201,731.37876 1850.8118,730.30841 1848.3157,728.33759 C 1848.3157,728.11436 1848.5643,727.27768 1848.8683,726.4782 L 1849.4209,725.0247 L 1854.1182,723.14518 L 1854.8705,721.34472 C 1855.2842,720.35445 1856.0203,719.2143 1856.5062,718.81101 L 1857.3897,718.07783 L 1857.3897,715.59789 L 1855.7244,713.39613 L 1855.7064,712.34756 C 1855.6964,711.77091 1855.2756,710.42936 1854.7713,709.36645 L 1853.8542,707.4339 L 1855.161,705.85933 L 1856.9842,705.54298 C 1857.9871,705.36893 1859.6527,705.05559 1860.6856,704.8466 L 1862.5636,704.46663 L 1864.8066,706.87415 L 1867.6397,706.87415 L 1874.6871,700.01966 L 1876.105,699.72628 C 1876.8848,699.56499 1877.9659,699.19318 1878.5075,698.90009 L 1879.4924,698.36722 L 1883.4517,698.36722 L 1883.4332,696.24048 C 1883.4231,695.07078 1883.4927,693.34813 1883.588,692.41236 L 1883.7612,690.71098 L 1879.5077,690.35896 L 1879.5077,689.93447 C 1879.5077,689.70098 1879.8824,689.01458 1880.3404,688.40906 C 1880.7983,687.80359 1881.1812,686.93617 1881.1911,686.48145 L 1881.2091,685.65463 L 1877.2254,681.57499 L 1883.291,675.05743 L 1884.0264,675.94351 C 1884.4308,676.43079 1885.9292,677.34597 1887.3561,677.97718 L 1889.9506,679.12477 L 1893.0729,676.81632 L 1895.3109,676.81632 L 1896.0309,674.54781 L 1897.0671,674.54781 L 1897.4397,676.10741 C 1897.6446,676.9652 1898.0635,677.98603 1898.3706,678.37593 L 1898.929,679.08484 L 1903.1513,679.08484 L 1904.0899,680.12195 C 1904.6062,680.69237 1905.0285,681.44251 1905.0285,681.78885 C 1905.0285,682.13525 1906.0494,683.59811 1907.297,685.03969 L 1909.5656,687.66073 L 1909.5656,690.9684 L 1912.1176,692.56424 L 1919.7699,693.29425 L 1923.0989,691.57273 L 1928.363,692.29423 L 1930.1126,694.96444 L 1932.2788,694.96444 L 1933.317,697.695 L 1934.9105,698 C 1935.787,698.1677 1937.3336,698.4668 1938.3473,698.66467 L 1940.1905,699.02446 L 1940.2558,698.27052 C 1940.2917,697.85584 1940.2764,697.07405 1940.2217,696.53323 L 1940.1223,695.54995 L 1945.2968,693.03598 L 1949.0615,694.39731 L 1953.7205,694.39731 L 1954.47,695.22833 C 1954.8822,695.68538 1955.5485,696.451 1955.9507,696.92971 C 1956.3529,697.40843 1956.9181,697.80009 1957.2067,697.80009 C 1957.4954,697.80009 1958.0048,697.28967 1958.3386,696.66583 L 1958.9457,695.53157 L 1962.6233,695.53157 L 1965.1442,693.76587 L 1965.1442,691.74916 L 1968.5469,688.71729 L 1968.5469,687.02464 L 1970.9353,687.02464 L 1974.3142,684.1814 L 1974.7707,684.46349 C 1975.0217,684.61865 1975.359,685.57739 1975.5201,686.59402 C 1975.6812,687.61066 1976.2559,689.67245 1976.7972,691.1758 L 1977.7814,693.90919 L 1980.4786,695.67642 L 1984.4082,695.03874 L 1989.0709,698.93434 L 1990.577,698.93434 L 1991.1476,700.77751 C 1991.4614,701.79125 1991.8924,703.51391 1992.1054,704.60563 C 1992.3183,705.69735 1992.8119,706.97339 1993.2023,707.44127 C 1993.5926,707.90916 1994.0539,709.05759 1994.2274,709.99335 L 1994.5428,711.69474 L 1989.6428,711.82966 L 1987.0483,714.24682 L 1984.5654,714.24682 L 1983.3022,715.76899 L 1983.9944,716.46134 C 1982.5772,718.06172 1981.4452,718.64348 1980.5955,718.21672 L 1979.2871,719.79334 L 1981.4727,723.60444 C 1978.8016,726.9805 1977.0012,729.59463 1976.9183,730.70597 L 1970.9969,731.95116 C 1970.1183,731.70485 1969.0039,731.69425 1967.8025,731.7707 L 1964.8606,729.46628 L 1964.1488,726.13514 L 1965.5996,725.30583 L 1965.9949,722.49814 C 1964.3333,722.3474 1962.6718,721.43829 1961.0103,719.90943 L 1958.6222,714.99758 L 1953.8315,710.12691 L 1951.2324,711.94728 L 1951.566,712.8586 L 1949.8752,714.7122 L 1949.8317,720.22118 L 1944.7275,726.05597 L 1944.8187,727.46704 L 1942.7426,728.91589 C 1944.0072,731.12899 1945.0547,733.36025 1945.3532,735.65389 C 1944.0372,736.53384 1942.6709,737.13727 1941.1932,737.12831 z "},"mo8":{"name":"MO-8","path":"M 1636.815,905.34225 L 1637.3504,903.93407 C 1637.6448,903.15954 1638.3089,901.70764 1638.826,900.70756 C 1639.3431,899.70754 1640.3696,898.41472 1641.1071,897.83466 L 1642.4479,896.77991 L 1642.4479,894.50488 L 1644.9209,892.13899 C 1646.281,890.83777 1647.549,889.32654 1647.7387,888.78068 C 1647.9284,888.23481 1648.3192,887.7882 1648.6071,887.7882 L 1649.1305,887.7882 L 1649.6809,885.23612 L 1648.9699,879.06548 L 1645.2431,878.10408 L 1645.7707,877.25044 C 1645.1408,875.89659 1644.5105,874.54285 1643.8668,873.19547 C 1596.5297,877.51909 1549.4509,882.48867 1501.5719,885.45764 L 1500.4318,881.55194 L 1498.3808,880.90099 L 1499.0673,879.79027 L 1496.2028,877.13554 L 1496.8657,874.60081 L 1494.9945,873.55361 L 1494.9945,867.49293 C 1498.3101,866.63634 1502.4925,866.81981 1506.5091,866.80444 L 1505.7397,850.52246 C 1510.0963,849.9986 1513.7051,849.724 1516.2904,849.79058 L 1515.7996,837.26503 L 1514.7155,836.62922 L 1514.2269,823.87631 C 1521.4042,823.5053 1528.7385,823.22842 1535.2136,822.43603 L 1535.2119,814.34503 C 1536.8155,813.70185 1541.505,813.96631 1545.4689,814.01729 L 1543.7109,788.40434 L 1546.4074,787.97355 L 1546.4074,786.08314 C 1547.1,786.43697 1548.5187,785.90739 1549.8303,785.22961 L 1562.3983,783.88484 C 1562.6632,781.4531 1562.1797,779.66285 1561.7351,777.83919 C 1563.1972,777.62572 1564.9351,777.48207 1566.4019,777.55863 L 1568.3944,800.01074 L 1579.0254,799.21875 C 1579.6438,800.79883 1579.8897,802.50305 1579.4966,804.42028 L 1587.3598,804.07603 L 1587.8136,801.2075 L 1589.8161,800.63759 L 1587.3786,772.24095 L 1602.2578,770.81093 C 1604.711,773.35989 1607.7567,776.20518 1607.9742,777.63638 L 1611.2559,778.46467 L 1611.2559,782.30226 C 1614.1987,781.91452 1617.5505,780.7088 1621.1681,778.97163 C 1622.5702,780.01452 1623.9756,781.05299 1625.373,782.10224 C 1623.8603,784.7032 1621.5694,786.79772 1619.7096,789.15845 L 1633.9623,801.17404 L 1636.1883,799.1596 L 1638.3389,800.62914 C 1640.6572,795.48982 1643.0079,790.10731 1645,787.41419 L 1647.6538,787.40642 L 1649.6698,784.91678 L 1652.5027,787.97355 L 1654.3073,787.97355 L 1658.6111,790.9001 L 1658.6111,793.27416 L 1660.2316,793.71034 C 1661.1229,793.95018 1662.2714,794.52077 1662.7837,794.97821 L 1663.7153,795.80991 L 1666.5509,796.19692 L 1666.2001,798.25792 L 1668.4976,802.15177 L 1666.8345,802.15177 L 1666.8345,803.34211 C 1666.8345,803.99675 1667.2197,805.34419 1667.6905,806.33638 C 1668.1613,807.32857 1669.565,809.37279 1670.8097,810.87908 L 1673.0729,813.61786 L 1673.0729,816.64843 L 1669.7213,817.91352 L 1668.959,820.95067 L 1670.2129,823.70266 L 1671.9386,823.70266 L 1671.9386,824.6184 C 1671.9386,825.12201 1672.627,826.79884 1673.4683,828.34461 L 1674.998,831.15513 L 1677.0428,832.24951 L 1677.0428,835.04523 L 1679.3113,837.31375 L 1680.8738,837.31375 L 1681.5798,838.16444 C 1681.9681,838.63232 1682.6284,839.01513 1683.0471,839.01513 L 1683.8084,839.01513 L 1685.0286,836.73516 L 1681.9813,833.91097 L 1682.5729,833.91097 C 1682.8983,833.91097 1683.9564,834.60582 1684.9243,835.4551 L 1686.684,836.99922 L 1686.684,837.65414 C 1686.684,838.01438 1687.0875,838.644 1687.5807,839.05336 L 1688.4775,839.7976 L 1690.7876,838.35488 L 1691.9091,839.47638 L 1691.106,845.31576 L 1688.9525,846.66065 L 1688.9525,849.65169 L 1689.6614,850.22721 C 1690.0513,850.54378 1690.8807,850.92824 1691.5046,851.08159 L 1692.6388,851.36039 L 1689.7465,851.49196 L 1689.0659,852.17252 L 1688.3854,852.85307 L 1688.3854,855.1052 L 1690.8657,857.74541 L 1689.5196,859.09149 L 1689.5196,860.43315 C 1689.5196,861.17109 1689.2554,862.26849 1688.9325,862.8718 L 1688.3454,863.9688 L 1686.7612,863.9688 L 1684.3382,860.56602 L 1681.7187,860.56602 L 1680.5725,861.98385 L 1680.1626,865.10305 C 1679.9371,866.81862 1679.4111,869.05169 1678.9938,870.06543 L 1678.2349,871.9086 L 1677.1247,871.9086 L 1677.7526,865.82529 L 1677.2516,865.51564 C 1676.976,865.34539 1675.8024,865.02814 1674.6434,864.81075 L 1672.5363,864.41541 L 1671.2022,867.34349 L 1674.2788,871.99259 L 1673.5516,875.3036 L 1675.8451,878.21938 L 1675.2441,879.78573 L 1671.0973,880.13196 L 1670.6849,882.30548 L 1673.3564,884.36019 L 1675.3414,884.38543 L 1675.3414,885.4683 L 1673.4982,885.77387 C 1672.4845,885.94191 1670.6342,886.14489 1669.3865,886.22491 L 1667.118,886.37038 L 1667.118,888.07177 L 1673.0729,891.98807 L 1673.0729,893.91455 L 1669.103,896.25685 L 1669.0943,898.40275 C 1669.0895,899.58295 1668.8981,900.82082 1668.669,901.15355 L 1668.2523,901.75851 L 1636.815,905.34225 z "},"mo4":{"name":"MO-4","path":"M 1452.9029,699.94315 L 1432.0432,701.36097 L 1433.1243,720.69655 L 1435.1624,720.20031 C 1435.4035,721.47414 1434.6545,722.02425 1433.9218,722.59285 L 1435.9422,722.59285 L 1438.4943,724.48922 L 1438.5469,732.70646 C 1433.4883,732.43214 1432.6049,731.97084 1431.0374,731.37065 L 1431.0923,733.44033 L 1432.8668,734.13262 L 1432.8668,735.87331 L 1438.3536,736.67415 C 1439.4249,739.17757 1439.2924,741.58843 1439.1234,743.99641 L 1425.4625,745.01219 L 1426.1182,755.2914 L 1420.1335,755.64585 C 1420.0861,754.20971 1420.2414,752.96481 1422.102,751.81484 L 1421.5683,750.56846 L 1416.0572,749.59572 L 1420.7006,836.88704 L 1446.7885,836.3908 L 1446.7885,840.07714 L 1468.6407,838.94288 L 1468.5395,828.81425 L 1473.1815,828.81425 C 1472.7018,825.07755 1473.188,820.37509 1474.1525,815.19437 L 1476.1552,815.19437 C 1476.8916,813.80853 1476.9972,812.26498 1476.8464,810.65734 L 1478.3896,810.65734 L 1482.943,813.43978 L 1489.6068,813.77654 L 1490.4574,829.2308 L 1495.3844,828.68137 L 1496.087,837.98324 L 1497.0846,838.07965 L 1497.5466,848.93852 L 1505.7699,848.77899 L 1505.7699,849.94869 C 1509.5864,849.45234 1512.6214,849.34663 1515.6947,849.22209 L 1515.3048,837.59595 L 1514.4364,837.02882 L 1513.8515,823.43543 C 1527.3506,822.55819 1529.7347,822.75306 1534.6935,821.87582 L 1534.6935,814.18414 C 1536.4799,813.71807 1538.0087,813.2156 1545.0613,813.49298 L 1543.1827,788.53932 L 1525.1055,789.28367 L 1525.7258,792.33199 L 1517.6619,793.09404 L 1513.1426,792.36744 L 1513.1426,788.6811 L 1511.3881,787.22783 L 1512.0261,785.56189 L 1510.8209,784.10862 L 1514.6136,781.5211 L 1514.5782,780.40454 L 1512.8236,780.2982 L 1512.859,778.13602 L 1510.431,778.11833 C 1509.7591,775.78459 1509.746,772.52502 1509.4031,769.34553 L 1512.0615,769.38097 L 1512.4337,764.04645 L 1523.3509,763.58565 L 1523.3509,768.74295 L 1529.3944,768.51259 L 1530.5996,769.25694 L 1533.6479,768.17582 L 1533.0984,766.24407 C 1534.6895,765.67547 1536.0582,764.93797 1537.157,763.97556 C 1534.6351,762.13023 1533.7368,760.70283 1533.6656,759.73978 L 1536.9266,760.46645 L 1541.2155,759.29674 L 1541.8712,757.38268 L 1540.542,755.82308 L 1540.8788,753.97991 L 1536.9266,754.28117 L 1532.1414,752.40256 L 1530.759,749.691 C 1528.7964,749.51434 1527.7138,748.93757 1526.8246,748.27318 L 1522.7661,748.1314 L 1524.8928,745.80969 C 1523.4595,744.80836 1521.8445,743.54537 1520.9938,743.61206 L 1522.518,740.35107 L 1521.3837,738.86236 L 1519.3988,738.86236 L 1518.619,736.66474 L 1517.4138,736.5584 C 1517.5997,734.29317 1516.9159,733.83612 1516.1555,733.56328 L 1511.4767,748.68078 C 1504.4637,749.06784 1497.2913,750.26408 1490.2802,749.40744 L 1489.1637,731.91503 L 1495.8275,724.56011 L 1495.7743,723.72711 L 1493.559,723.63853 C 1493.2919,722.04807 1494.1691,721.54854 1495.3135,721.29912 C 1494.9274,720.36903 1495.4605,718.93743 1497.4225,716.72665 L 1497.5111,715.0784 L 1492.5133,716.05318 L 1494.3742,713.9087 L 1492.5133,712.86308 L 1492.1588,710.34645 L 1487.2319,710.3287 L 1485.6546,706.50058 L 1482.8544,707.08546 L 1481.4897,704.83464 L 1480.4441,704.88783 L 1481.0644,707.47536 L 1479.2921,710.02744 L 1477.7679,710.09833 L 1477.0945,711.87061 L 1474.2766,711.9415 L 1473.674,713.12889 L 1474.9855,715.14929 C 1474.0867,716.65439 1472.5667,717.12999 1470.8915,717.36467 L 1471.1574,714.81259 C 1469.8308,714.76262 1468.7782,714.3683 1468.304,713.25298 L 1466.9216,713.82011 L 1467.2584,718.28625 L 1464.2632,718.62295 L 1462.8808,716.83298 L 1459.0881,716.86843 L 1456.8374,719.8813 L 1454.303,719.91674 C 1454.0663,713.21289 1453.8344,706.50806 1452.9029,699.94315 z "},"mo9":{"name":"MO-9","path":"M 1580.0638,803.90726 C 1580.2991,802.147 1579.7422,800.38669 1579.3323,798.62644 L 1568.9419,799.40545 L 1566.8811,777.29259 C 1565.4929,777.03001 1563.648,777.02122 1561.0396,777.43658 C 1562.1182,780.18052 1562.1223,781.92637 1561.9157,783.38514 L 1549.7573,784.66396 C 1548.4887,785.64322 1547.2372,786.22855 1546.0361,785.6553 L 1546.087,787.59153 C 1545.5803,788.19643 1533.2136,788.52332 1524.7526,788.94181 L 1525.285,792.01037 L 1517.7641,792.70187 L 1513.4806,791.8936 L 1513.4806,788.50138 L 1511.9567,787.22471 L 1512.595,785.56127 L 1511.4649,784.19948 L 1514.844,781.70116 L 1514.844,780.03375 L 1513.1426,780.03375 L 1513.1426,777.76523 L 1510.8385,777.76523 C 1510.1058,775.59982 1509.9566,772.72142 1509.8218,769.82543 L 1512.3606,769.82543 L 1512.859,764.43771 L 1523.0384,763.98264 L 1522.962,769.11408 L 1529.3052,768.95143 L 1530.4555,769.66233 L 1534.0223,768.31602 L 1533.4831,766.42357 C 1535.2189,765.70314 1536.7777,764.89419 1537.5718,763.70294 C 1536.0345,762.74693 1534.7496,761.58431 1533.9572,760.01881 L 1537.0045,760.78364 L 1541.4306,759.59182 L 1542.1598,757.29416 L 1540.8629,755.73138 L 1541.2155,753.66226 L 1537.2456,753.99001 L 1532.4457,752.15852 L 1531.0392,749.50714 C 1529.3519,749.21558 1527.957,748.75337 1527.0828,747.98746 L 1523.3464,747.91107 L 1525.2991,745.87604 C 1523.6506,744.63976 1522.2173,743.65465 1521.3793,743.36389 L 1522.8173,740.20782 L 1521.5106,738.63335 L 1519.4575,738.63335 L 1518.7374,736.36484 L 1517.6796,736.36484 L 1517.6796,734.24077 C 1515.3523,731.8227 1513.7514,730.85751 1512.368,730.32724 L 1512.3853,729.50145 L 1517.6796,712.15213 L 1504.1496,708.35566 L 1503.3255,685.32326 L 1495.7157,685.32326 C 1494.8897,672.51227 1493.8695,659.50722 1492.6113,646.26425 L 1515.897,643.62597 C 1516.0023,638.66331 1515.3344,633.70785 1515.1471,628.74774 L 1543.1929,625.11914 L 1543.9373,625.87229 C 1544.3467,626.28652 1544.8369,627.03575 1545.0266,627.53726 L 1545.3714,628.44909 L 1548.9469,629.16419 L 1548.2879,630.23044 L 1552.138,634.43298 L 1553.2706,633.73298 L 1553.9475,637.11732 L 1554.5525,637.11732 C 1554.8853,637.11732 1555.6534,637.57924 1556.2594,638.14382 L 1557.3612,639.17038 L 1556.7939,641.12124 C 1556.4818,642.19425 1556.0765,645.24143 1555.8932,647.89276 L 1555.56,652.71335 L 1557.89,660.9961 L 1559.164,663.09317 C 1559.8646,664.24654 1560.6949,665.36498 1561.0088,665.57867 L 1561.5797,665.9671 L 1560.0531,668.81958 L 1561.3723,671.99573 L 1564.7513,673.92794 L 1564.7513,678.46933 L 1566.8195,680.05315 C 1567.9569,680.92421 1569.8382,682.46634 1570.9999,683.48009 C 1572.1616,684.49383 1573.3968,685.32326 1573.7447,685.32326 L 1574.3773,685.32326 L 1576.0008,689.20882 L 1579.0871,689.57672 L 1580.0679,691.41359 C 1580.6073,692.42388 1581.3924,693.6647 1581.8126,694.17092 C 1582.2328,694.67719 1583.6483,695.63706 1584.9583,696.304 C 1586.2682,696.97089 1588.9477,698.52527 1590.9127,699.75821 C 1592.8777,700.99115 1595.3248,702.86432 1596.3507,703.92071 L 1598.216,705.84152 L 1598.4821,706.62767 L 1576.9446,708.29197 L 1577.3227,713.68916 L 1573.8254,714.3886 C 1573.634,717.55505 1574.1027,720.72156 1574.5409,723.88801 L 1577.7051,723.88801 L 1578.4525,727.29078 L 1582.3323,727.29078 L 1582.3323,730.78384 L 1589.705,729.99428 L 1589.7223,734.37989 L 1590.751,736.00556 L 1599.3462,736.32871 L 1598.1019,733.5825 C 1599.1399,733.27189 1599.7101,733.30127 1600.7189,733.28612 L 1600.1458,735.63058 L 1602.6457,737.96187 L 1605.9897,737.01341 L 1611.4785,737.6647 L 1609.8612,739.97019 L 1605.4631,739.92964 L 1602.0739,743.41345 L 1603.0327,753.25716 L 1602.2215,770.33573 L 1586.8331,771.79938 L 1589.469,800.37983 L 1587.5325,800.88616 L 1587.1529,803.56959 L 1580.0638,803.90726 z "},"id2":{"name":"ID-2","path":"M 550.81381,280.23247 L 549.04153,280.92366 L 549.67955,282.5896 L 546.32995,284.32643 L 545.69193,286.77217 L 543.91965,286.09871 L 543.91965,287.64059 L 542.11193,288.33178 L 541.08401,287.69376 L 541.08401,289.04069 L 538.44332,288.52673 L 537.04322,291.66366 L 533.16193,292.95742 L 532.5948,292.58524 C 532.27676,292.3887 532.00487,291.9288 531.99223,291.55732 C 531.97952,291.18583 531.21389,289.99657 530.29084,288.91663 L 528.60718,286.9494 L 528.60718,285.42524 L 527.52609,286.09871 L 524.31827,284.99989 C 523.18304,285.04689 520.95954,287.22279 518.94827,289.14702 L 518.62926,289.14702 L 518.62926,288.01277 L 516.44936,288.08366 L 515.12015,286.20504 L 513.54282,286.80762 L 513.54282,290.9193 L 514.94292,290.90158 L 514.23401,292.089 C 516.80516,294.50276 517.88336,297.27668 519.10777,300.01108 L 520.66738,300.08197 L 514.21629,306.55079 C 512.82462,312.54428 511.85601,318.54591 510.99074,324.5394 C 507.45379,327.65597 504.04964,330.87388 499.86084,333.52484 L 496.015,332.7096 C 496.14887,331.70356 495.48674,330.56096 494.40223,329.35999 L 491.37163,330.70692 L 490.21965,335.13762 L 487.72074,337.40613 L 484.51292,337.97326 L 483.00649,339.51514 L 482.91787,343.20148 L 484.63698,343.76861 L 485.34589,346.28524 L 483.94579,351.07039 L 480.75569,354.86306 C 482.56026,356.325 484.13165,357.67116 484.1053,358.26583 L 485.91302,358.23039 L 485.275,363.63583 C 487.71811,366.85489 487.00801,364.94969 491.21213,368.01336 L 489.79431,369.98059 L 490.36144,371.55791 L 492.02738,371.59336 L 488.74866,373.2593 L 488.44738,375.12019 L 489.67025,376.59118 L 490.57411,376.04177 L 491.19441,379.19643 C 490.42346,380.15874 488.3186,380.05932 486.37381,380.08257 L 486.37381,378.55841 L 483.99896,377.3887 L 484.1053,371.2389 L 482.58114,370.0692 L 481.695,370.95534 L 482.4748,371.00851 C 481.21071,374.54533 478.90228,377.0665 476.48451,379.49771 C 473.40395,379.81097 470.37502,380.08026 466.96738,380.72059 C 465.95437,381.91617 465.11185,383.96839 464.29124,386.12603 L 461.77461,385.62979 C 460.27138,387.96694 459.26168,389.89596 458.83263,391.35425 C 455.28029,393.26829 453.56473,393.55328 452.13342,393.58732 L 449.49272,395.96217 L 442.43906,395.34187 L 436.82094,386.87039 L 431.89401,388.02237 C 431.19977,390.30695 430.68339,392.57405 430.81292,394.81019 L 432.24847,395.37732 L 440.95035,408.95296 C 440.2526,414.29578 439.07861,419.55311 437.83114,424.79712 C 433.43304,424.07084 428.86775,423.36547 425.21253,422.54633 L 425.54926,423.5388 L 428.03045,424.549 L 427.35698,427.08336 L 429.52159,428.46334 L 429.68224,429.8138 C 432.5647,431.37736 433.68918,433.85654 437.01114,435.38347 L 437.12592,432.75575 L 439.26079,432.12963 L 439.18046,433.27922 L 441.47024,433.3714 L 441.39699,434.34258 L 444.55282,434.71491 C 444.55247,435.66501 444.66617,436.59756 445.91516,437.35545 L 452.5501,437.56643 C 452.98376,438.17602 453.76705,438.66907 455.94371,438.69767 L 457.455,440.04813 L 460.04253,440.08476 C 459.10796,447.07871 458.83264,442.24291 458.11782,449.96935 C 464.57641,450.96642 471.40793,451.93685 476.57787,453.02596 L 469.46629,500.04801 C 529.72814,509.92453 600.00749,518.23181 650.25628,523.97375 L 667.69549,372.51494 L 664.70037,371.15029 L 664.02691,367.78296 L 660.78361,364.61059 L 660.74817,360.97742 L 658.78097,359.87861 L 659.56077,359.08108 L 657.89483,355.85554 L 655.7149,354.68583 L 654.97054,355.87326 L 654.03126,355.78465 C 653.51302,355.7338 652.66919,355.71328 652.15265,355.7492 L 651.21331,355.82009 L 651.78044,358.01771 L 648.66124,362.11167 L 651.23107,365.56762 L 649.91958,366.8791 L 646.48136,364.89415 L 644.85087,364.89415 C 643.96065,364.89415 642.5849,364.64895 641.7848,364.34474 L 640.33153,363.79534 L 640.33153,364.20296 C 640.33153,364.43122 639.32352,364.93165 638.08077,365.3195 C 636.83802,365.70736 635.42632,366.0284 634.96156,366.02841 L 634.12856,366.02841 L 632.40948,362.73197 L 630.84988,363.01554 C 629.98625,363.17886 627.95049,363.40158 626.33054,363.49405 C 624.7106,363.58652 623.12587,363.80213 622.82143,363.99029 L 622.27206,364.34474 L 620.57067,362.62564 L 617.66414,362.62564 L 616.95522,361.49138 C 616.56561,360.86754 615.97438,360.35711 615.64374,360.35712 C 615.31305,360.35712 614.35619,360.67835 613.5347,361.06603 L 612.04599,361.77494 L 611.39027,365.30177 L 609.36988,367.12722 L 605.75443,364.9296 L 604.21252,365.51445 L 602.75926,363.75989 L 600.06539,363.75989 L 600.06539,362.74969 L 597.93866,362.39524 C 596.76896,362.20144 595.3208,362.03408 594.71312,362.02306 L 593.59661,362.00534 L 590.70777,364.18524 L 590.70777,368.11969 L 589.14817,369.99831 L 587.62401,369.99831 L 586.95054,368.72227 C 586.57675,368.02045 585.26884,366.55299 584.04401,365.46128 L 581.81094,363.47633 L 581.42104,357.75187 L 579.52473,352.96672 L 581.04889,351.12356 L 580.85391,349.65257 C 580.74837,348.83815 580.51607,347.90863 580.32223,347.59672 C 580.12844,347.2848 579.90641,346.69937 579.84374,346.28524 C 579.78096,345.87111 579.32788,344.66866 578.83351,343.62682 L 577.92968,341.73049 L 574.47371,338.82395 L 572.82552,339.65692 C 571.92594,340.1221 570.80995,340.5076 570.32658,340.50762 L 569.44044,340.50762 L 569.44044,337.95554 L 565.5946,334.8895 L 565.31104,333.02861 C 565.15168,331.9995 564.84471,330.57576 564.61985,329.87395 L 564.21223,328.59791 L 567.17193,328.59791 L 567.26057,327.03831 C 567.30906,326.18053 567.30538,324.90077 567.24282,324.18494 L 567.11876,322.87346 L 564.8148,320.5695 L 565.4351,318.95673 L 563.30837,318.95673 L 562.68807,317.16673 C 562.34564,316.18441 562.06777,315.04901 562.06777,314.63237 C 562.06777,314.21572 561.2676,312.57912 560.29549,310.9992 L 558.54094,308.12811 L 559.23213,307.4192 L 557.40668,304.63673 L 558.06243,300.59593 L 557.58391,299.99336 C 557.32405,299.66171 556.99406,298.68859 556.83955,297.83118 L 556.55599,296.27158 L 557.30035,295.2791 C 557.71497,294.73287 558.07022,293.84 558.08015,293.29415 L 558.09787,292.30168 L 555.26223,292.30168 L 555.26223,291.41554 C 555.26223,290.93217 555.63555,289.82325 556.0952,288.93435 L 556.92817,287.32158 L 556.23698,286.75445 C 555.8553,286.44472 555.0511,286.08667 554.44698,285.97465 L 553.34817,285.7797 L 552.85193,283.79475 C 552.5754,282.7035 551.99675,281.46254 551.57589,281.02999 L 550.81381,280.23247 z "},"id1":{"name":"ID-1","path":"M 379.5567,484.73578 L 400.00144,372.55176 L 401.16446,371.53323 C 401.80412,370.97304 402.66757,369.85924 403.08317,369.05811 C 403.49881,368.25698 403.83886,367.01997 403.83886,366.30919 L 403.83886,365.01688 L 405.43329,364.40504 L 406.22211,360.81352 L 405.59764,360.18901 C 405.25413,359.84554 404.97312,359.10514 404.97312,358.54368 L 404.97312,357.52285 L 406.61677,357.52285 L 409.60367,353.60681 L 409.21995,351.568 L 406.67451,350.44834 L 406.67451,347.27893 L 405.9656,347.01977 C 405.5757,346.87723 404.74627,346.68645 404.12243,346.59582 C 403.49859,346.50518 402.66502,346.22937 402.27002,345.9829 L 401.55186,345.53477 L 402.20939,344.47088 L 400.42163,343.78487 L 398.60472,345.29279 L 396.40335,342.57421 L 398.16758,341.58688 L 398.16758,339.03445 L 396.84407,337.71097 L 398.87949,333.19731 L 398.20319,331.43493 L 398.69421,331.43493 C 398.96422,331.43493 399.97706,330.74008 400.94492,329.89082 C 401.91273,329.04156 402.70461,328.14326 402.70461,327.89459 C 402.70461,327.64594 403.39798,326.36293 404.24544,325.04346 C 405.0929,323.724 406.24831,321.87881 406.81306,320.94305 C 407.37775,320.00729 407.99359,318.78203 408.18154,318.22027 L 408.52329,317.19887 L 410.1628,316.87097 C 411.06448,316.69063 411.93962,316.32084 412.10749,316.0492 L 412.41272,315.55533 L 414.61431,314.08414 L 416.92774,311.84231 C 418.20009,310.6093 419.51311,309.10156 419.8455,308.49178 L 420.44989,307.38307 L 420.62655,301.81605 L 424.26571,298.82503 L 424.2555,297.44712 L 426.54131,296.22379 L 427.62118,293.83807 L 431.62817,286.45821 L 431.62817,284.43755 L 434.88916,280.27398 C 436.68271,277.98401 438.65399,275.1284 439.26978,273.92819 L 440.38934,271.74598 L 441.7031,270.88519 C 442.42562,270.41176 443.27223,269.54709 443.58449,268.96372 L 444.15213,267.90304 L 441.83649,262.66817 L 441.79877,258.55889 L 439.71764,256.06599 L 436.64964,255.29596 L 435.62614,252.60404 L 434.76139,252.53315 C 434.28579,252.49416 433.58817,252.43036 433.21103,252.39137 L 432.52537,252.32048 L 431.81322,248.83851 L 429.2261,245.3392 L 429.93489,244.19229 L 429.31718,242.5851 C 428.97741,241.70114 428.59851,239.99013 428.47516,238.78285 L 428.25086,236.5878 L 426.95225,235.02305 L 428.09309,235.02305 L 428.45191,234.03058 C 428.64921,233.48471 429.17596,232.41005 429.62246,231.64243 L 430.43425,230.24676 L 429.31077,228.89308 L 428.96476,221.92445 L 428.31149,221.27122 C 427.95221,220.91194 427.65827,220.17987 427.65827,219.64441 L 427.65827,218.67084 L 426.43168,218.26198 L 428.17441,214.88998 L 456.76479,58.841168 L 495.52208,65.664123 L 485.08895,126.67716 L 489.75886,136.34032 L 491.15508,136.34266 L 491.48452,137.65526 C 491.66572,138.37719 491.76797,139.20662 491.71171,139.49843 C 491.65551,139.79024 491.63974,140.60321 491.67666,141.30503 L 491.74381,142.58107 L 493.4452,142.58107 L 493.4452,144.23827 L 495.81149,146.44282 L 494.49887,148.89555 L 496.43051,151.84362 L 493.4452,154.01825 L 493.4452,154.79163 C 493.4452,155.21699 494.06303,156.72695 494.8181,158.1471 L 496.19101,160.72919 L 492.87807,160.72919 L 492.87807,162.91538 L 494.18428,163.94902 C 494.90266,164.51752 495.66029,165.42927 495.86786,165.97513 L 496.24523,166.96761 L 497.73014,166.96761 L 499.68361,169.24909 L 499.68361,170.26847 C 499.68361,170.82912 500.00262,171.69311 500.39253,172.18843 C 500.78243,172.68376 502.37543,173.75337 503.93254,174.56534 C 505.48971,175.37732 507.05708,176.04167 507.41562,176.04167 L 508.06759,176.04167 L 508.75665,178.78718 L 508.07287,180.56913 L 509.89193,181.26718 L 509.89193,182.8073 L 512.07906,183.97781 L 513.38136,186.6735 C 514.09764,188.15613 515.13679,189.97783 515.6906,190.72171 L 516.69748,192.07424 L 516.69748,195.32404 L 518.19736,195.32404 L 521.0241,199.64153 L 520.02278,202.64559 L 521.93088,206.66662 L 523.23017,206.66662 L 524.64692,208.93513 L 526.33866,208.93513 L 526.33866,209.95596 C 526.33866,210.51742 526.07512,211.24037 525.75293,211.56251 L 525.1672,212.14824 L 525.93475,214.14843 L 529.45787,213.44647 L 529.6469,212.89219 C 529.75091,212.58733 530.18028,212.3379 530.6012,212.3379 L 531.36637,212.3379 L 532.13132,214.74802 L 530.76873,215.59016 L 532.60623,219.14345 L 536.05443,219.14345 L 538.32442,220.35832 L 541.04408,218.57632 L 543.85273,218.57632 L 544.43268,219.51469 L 541.94247,227.65038 L 539.91414,227.65038 L 539.26126,229.35176 L 539.69494,230.34424 C 539.93348,230.8901 540.0642,231.71246 539.98537,232.1717 C 539.90659,232.63095 539.35591,233.34724 538.76167,233.76347 L 537.68124,234.52024 L 537.68124,238.35888 L 536.54698,239.05989 L 536.54698,241.26147 L 534.80998,241.26147 L 534.1516,242.9773 L 535.46155,244.55574 L 534.73869,247.43599 L 531.15926,247.78345 L 530.80974,250.80529 L 533.14421,251.54622 L 533.14421,253.59941 L 531.3924,255.05329 L 531.76665,256.80609 C 531.97252,257.77013 532.43048,258.91698 532.78436,259.35463 L 533.42777,260.15037 L 533.53434,262.19027 C 533.59292,263.31222 533.72052,264.74059 533.8179,265.36444 L 533.9949,266.49869 L 529.26493,266.84305 L 528.27966,268.37225 C 527.73777,269.21332 526.95173,270.10555 526.53296,270.35499 L 525.77153,270.80852 L 525.77153,271.55189 C 525.77153,271.96074 526.3664,273.17186 527.09351,274.24326 L 528.41543,276.19126 L 527.33953,278.60248 L 524.56145,279.29973 L 524.68673,280.55545 C 524.75569,281.2461 524.61748,282.51299 524.37963,283.37077 L 523.9472,284.93038 C 522.33319,285.45821 520.6447,287.25234 518.96599,288.88024 L 518.96599,287.76602 L 516.53896,287.76602 L 515.1601,285.88034 L 513.2947,286.59616 L 513.2947,291.16879 L 514.49588,291.16879 L 513.92643,292.09023 C 515.43098,293.31474 517.09194,295.65641 519.06717,300.24285 L 520.20222,300.24285 L 513.89371,306.34939 C 512.61633,312.30115 511.41419,318.25291 510.53755,324.20467 C 507.36194,327.43532 503.80276,330.42993 499.75105,333.12144 L 496.28084,332.4274 C 496.3887,331.2884 495.41644,330.1494 494.62392,329.0104 L 491.18417,330.43517 L 489.99995,334.83309 L 487.69536,336.98014 L 484.50787,337.61765 L 482.66975,339.45575 L 482.66975,343.38023 L 484.32798,344.01654 L 484.99702,346.12451 L 483.7393,350.79538 L 480.40124,355.02282 C 482.00457,356.2147 483.76329,357.40012 483.80401,358.65711 L 485.63419,358.65711 L 484.8621,363.80581 C 487.41549,366.90947 488.30033,366.01873 490.92956,368.16172 L 489.45573,369.85591 L 490.16379,371.70107 L 491.46025,371.71779 L 488.63464,373.14738 L 488.24741,375.15833 L 489.60381,376.79274 L 490.47985,376.25132 L 491.02458,379.10081 C 490.43356,379.73152 488.70323,379.89616 486.6396,379.92443 L 486.63965,378.54652 L 484.19417,377.2566 L 484.37114,371.27282 L 482.62166,369.8209 L 481.30864,371.13394 L 482.12571,371.13394 C 481.14307,373.80142 479.29987,376.50077 476.49712,379.23566 L 466.80994,380.3515 C 465.78198,382.12182 464.76643,383.8957 464.20025,385.79797 L 461.80021,385.26021 C 460.11162,387.73198 459.22556,389.57957 458.74744,391.10986 C 456.22939,392.38432 453.78516,393.50444 451.99739,393.25196 L 449.34104,395.75356 L 442.61981,395.10415 L 436.99706,386.56266 L 431.69832,387.69765 C 430.68268,390.04619 430.50966,392.50708 430.49391,394.98894 L 432.15089,395.6248 L 440.69724,408.95026 C 439.92668,414.11345 438.84123,419.33963 437.74022,424.56891 L 424.67478,422.21769 L 425.17958,423.59334 L 427.61687,424.69517 L 426.9869,427.20498 L 429.35966,428.68678 L 429.35966,430.11532 L 429.83332,430.11532 C 432.92878,432.01917 433.82478,434.2011 437.29946,435.75101 L 437.29946,432.9712 L 439.00084,432.41944 L 439.00084,433.5181 L 441.26936,433.5181 L 441.26936,434.57702 L 444.38857,434.93592 C 444.13628,435.86745 444.68588,436.75679 445.71259,437.62102 L 452.32837,437.77156 C 452.92265,438.61607 454.25234,438.97029 456.05883,439.00666 L 457.37581,440.32364 L 459.78815,440.32364 C 459.24086,446.21283 458.34847,442.4295 457.70963,450.28601 C 463.83423,451.3181 470.07285,451.84521 476.11182,453.31646 L 468.91161,499.87215 C 439.12664,495.69455 409.34167,490.0223 379.5567,484.73578 z "},"ut3":{"name":"UT-3","path":"M 588.22658,599.11833 L 587.94302,600.11081 C 587.78632,600.65661 587.68061,603.01734 587.6949,605.35675 C 587.70919,607.69615 587.55442,610.44973 587.3582,611.47108 L 586.79107,614.59028 L 585.40869,614.32447 L 585.86948,622.88454 L 584.9479,623.45167 L 585.97582,632.41763 L 584.57569,633.92041 L 585.30235,637.18685 L 583.50064,639.64308 L 584.87701,644.48863 L 586.45431,644.48863 L 586.4952,648.31493 L 587.88149,649.55581 L 588.15569,651.8393 L 587.02143,651.93219 L 587.03584,654.89947 L 585.40869,657.63892 L 583.45919,656.55781 L 579.27661,660.74038 C 577.28474,662.72579 574.59054,664.88445 573.69391,665.43694 L 571.49629,669.99167 L 491.92104,659.44665 C 488.15505,691.71037 484.22819,709.44273 479.33787,745.11853 L 555.13817,755.87622 L 556.94589,754.0685 C 557.9417,753.07273 558.95579,752.24308 559.21441,752.24308 L 559.69292,752.24308 L 559.07262,749.86823 L 559.65747,749.49602 C 559.97914,749.29401 560.62485,748.21034 561.09302,747.08573 L 561.94371,745.04764 C 560.25293,741.25309 560.15863,743.25108 559.49797,742.19424 L 559.32074,739.60672 L 557.0345,739.44724 L 556.83955,738.34843 L 554.6951,736.32803 L 554.6951,732.87206 L 612.45364,740.04981 L 620.05668,680.71397 L 622.75054,680.96209 C 623.50947,673.85024 624.20659,667.85785 625.26718,659.92513 L 643.7343,662.1582 L 643.7343,657.10724 L 633.52599,655.70711 L 633.52599,653.13734 L 631.73602,652.67655 L 632.48037,651.22328 L 631.31067,649.87635 C 630.8767,649.35005 630.24532,648.34868 629.82196,647.5015 L 629.00671,646.01279 L 626.77364,645.80011 C 626.93896,644.43691 627.24407,643.76401 627.89015,642.32645 L 628.42183,641.44031 L 628.42183,637.82487 L 626.72044,634.56388 L 627.32302,633.02197 L 625.58619,630.23952 L 623.03411,629.76098 L 619.41866,629.74328 L 618.65661,628.52038 L 619.8972,627.26209 L 618.03629,625.20625 L 615.41332,625.20625 L 613.85371,620.17298 L 610.66361,618.96784 L 607.95206,618.96784 L 604.60242,620.70467 L 604.60242,624.63912 L 601.76678,624.63912 L 601.76678,624.12513 C 601.76678,623.8355 601.3703,623.19686 600.88064,622.70731 L 599.97681,621.80348 L 597.81463,622.47694 L 596.75126,620.26157 C 597.61438,617.63582 598.41375,614.99 599.19701,612.33952 C 599.67237,610.72133 600.06528,608.72833 600.06539,607.90883 C 600.06539,607.08904 600.34493,605.90493 600.68572,605.26811 L 601.30599,604.0984 L 600.06539,602.87556 L 600.06539,600.30573 L 593.75609,599.11833 L 591.43443,600.35893 L 590.81411,599.7386 C 590.47338,599.39781 589.75948,599.11833 589.21906,599.11833 L 588.22658,599.11833 z "},"mt":{"name":"MT At-Large","path":"M 496.43964,65.833717 L 485.86765,126.40377 C 486.58853,128.79194 488.64768,130.78942 489.67025,133.13346 C 490.11056,135.26253 493.12192,136.03467 492.87807,138.27307 C 492.56925,140.24412 492.91587,141.83972 494.98708,142.49109 C 493.95672,144.24402 496.53697,144.66263 496.86569,146.05336 C 496.33707,147.78324 496.10943,149.46362 497.37965,150.92713 C 497.83178,153.34133 496.10214,153.95945 494.56173,154.96792 C 495.44172,156.84053 496.77298,158.69671 497.37965,160.58604 C 497.75249,162.98505 493.58008,161.09639 494.27817,162.25198 C 496.27373,163.61572 496.42046,166.14655 498.70886,166.20415 C 500.47769,167.44824 500.57718,169.54335 500.95965,171.48554 C 503.1458,172.6595 505.25249,174.0626 507.65886,174.74653 C 509.18319,175.01632 509.55205,177.40856 509.89193,178.62782 C 508.33371,180.83586 512.0467,179.16074 511.02619,181.71158 C 511.96974,182.87003 513.94418,183.46899 514.16312,185.39792 C 514.68642,188.07606 517.68891,189.52835 517.30005,192.22118 C 516.66719,195.53504 519.97706,193.88671 520.38381,196.45693 C 520.50244,198.69894 523.3907,197.49834 522.15609,199.71792 C 521.32067,202.04566 521.37317,204.49199 523.60936,205.86772 C 524.43623,207.52365 526.20631,207.53201 527.18936,208.4198 C 529.47352,209.94181 525.02813,213.70744 528.89074,212.28336 C 528.86941,210.80485 531.48788,210.71597 532.31124,212.1593 C 533.66791,212.98556 533.51925,216.24216 532.08084,215.88108 C 532.80517,218.74959 535.47719,217.74523 537.66351,218.55722 C 539.22876,220.12191 539.54347,216.64124 541.43847,217.56475 C 544.12359,216.62017 546.92244,218.97573 544.9653,221.80049 C 543.65818,223.78803 544.42059,228.15454 541.75748,228.67693 C 539.53093,228.57299 541.41946,231.55208 541.17262,232.93039 C 540.09251,234.44506 538.0229,235.47784 538.56738,237.91049 C 537.79972,239.63968 538.03816,242.75241 535.41272,242.48296 C 536.3079,243.75718 536.81162,245.08835 536.13936,246.59465 C 536.37541,248.37991 533.80627,249.23786 532.64797,248.04792 C 530.68898,249.66909 533.66805,250.31951 534.27847,251.59247 C 534.90113,253.5287 533.52295,254.67589 532.78975,255.88138 C 533.03361,258.31553 535.65519,259.6388 534.79243,262.22613 C 534.72143,264.09064 536.43766,267.52427 533.79995,268.11009 C 531.2702,267.88004 529.19286,267.3326 528.35906,270.28999 C 526.17603,271.36125 527.66399,272.87066 528.57173,274.31306 C 529.84657,275.86402 529.18813,279.67504 527.13619,279.82485 C 524.17586,279.05812 527.50993,282.01898 525.77153,282.94405 C 524.06045,284.43416 527.99959,283.88169 528.89074,284.43277 C 530.0813,286.19797 532.07761,291.02871 533.85312,291.45098 C 536.64867,291.29504 536.90945,288.28062 537.69896,287.28613 C 539.29934,286.9244 541.77995,288.05477 542.76767,286.64811 C 543.7898,284.99156 545.40483,285.69838 545.47926,283.51118 C 546.71344,282.57479 549.10982,282.30557 548.45668,280.26791 C 548.36393,278.67038 551.80842,278.37586 552.39114,280.07296 C 554.12027,281.09659 553.61853,283.42473 554.39381,284.84039 C 555.96551,285.1853 557.9996,285.01588 557.97381,287.14435 C 558.76074,288.44597 555.39825,290.79162 557.08767,291.18514 C 560.41108,290.78078 558.34444,294.99067 558.23965,296.9096 C 557.13888,298.5452 559.86044,299.83294 559.16124,301.34029 C 558.01061,302.86054 558.25194,304.30577 559.51569,305.68237 C 560.76967,307.77075 559.62755,309.40163 561.78421,311.35366 C 564.34901,312.64352 562.71069,316.28216 564.4249,317.5389 C 566.85066,317.78712 566.39913,319.006 566.48074,320.53405 C 568.30063,321.69293 568.53497,323.73274 568.80243,325.69138 C 568.01582,326.98445 568.60694,330.10564 566.55163,329.73217 C 564.53531,329.32306 566.73425,333.54275 567.18968,334.6591 C 568.28583,335.93462 570.93869,336.43582 570.5747,338.43405 C 570.49559,340.31748 573.43093,337.68614 574.65094,337.6188 C 576.43983,339.16819 579.22472,340.58068 580.07411,342.52801 C 580.14585,344.18783 581.8072,347.10227 582.07681,349.70573 C 583.31525,351.61428 580.8665,352.33295 581.13747,353.67564 C 582.26992,355.83803 582.82451,358.14133 582.73252,360.58752 C 582.30899,363.06597 584.63904,364.66961 586.5252,365.76257 C 588.3733,365.51842 587.48898,369.84897 589.20136,368.36781 C 591.21518,367.53441 587.21471,365.49001 589.36084,364.3093 C 590.37328,362.11638 592.67662,361.47811 594.67767,360.48118 C 597.13118,360.55147 599.77622,362.64618 602.58203,362.59019 C 603.94926,363.39289 605.0931,363.89041 606.83549,364.0789 C 608.3841,365.45832 609.78893,366.1081 610.66361,363.77762 C 610.81135,361.86415 610.66622,360.67543 612.7372,360.53435 C 613.48763,358.70667 615.60948,359.21883 617.09701,359.3292 C 617.61491,361.39863 619.10561,361.8314 621.06691,361.49138 C 622.25039,363.73337 624.34554,362.53498 627.14579,362.2889 C 630.56813,361.95489 634.07037,360.70855 635.12104,364.98276 C 637.43345,364.43086 639.61224,362.85933 642.05067,363.2991 C 644.38208,363.70203 647.19521,362.9278 648.83846,365.03593 C 647.38769,363.079 647.75349,360.89996 649.60057,358.83296 C 651.22965,357.81397 648.96142,354.43166 651.49688,354.86306 C 654.02253,355.19341 654.54996,354.10268 655.66176,352.34643 C 657.36899,354.01514 659.48035,355.38419 660.23423,357.7696 C 660.78837,359.38038 662.3697,360.9268 662.21918,362.57247 C 661.20266,364.31684 663.9153,365.36573 664.68262,366.77276 C 665.92815,368.29355 664.47658,371.10335 667.69549,371.11484 C 668.38875,371.34652 668.03583,370.85476 668.12084,370.4591 C 668.76629,359.94508 670.07823,349.45096 671.54136,339.0189 C 776.67999,350.32401 845.12607,357.79797 977.91641,363.6759 C 982.01571,280.38435 985.32071,204.41362 988.54851,117.76782 C 770.22397,107.9288 665.88584,91.520201 496.43964,65.833717 z "}}})
Index: public/vendors/vmap/maps/jquery.vmap.usa.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.usa.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.usa.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add USA Map Data Points */
+jQuery.fn.vectorMap('addMap', 'usa_en', {"width":959,"height":593,"paths":{"hi":{"path":"m244.66,512.25c-2.48,3.8 2.23,4.04 4.74,5.38 3.06,0.16 3.51,-4.28 2.66,-6.56 -2.72,-0.77 -5.01,-0.19 -7.41,1.19z m-9.31,3.97c-4.02,5.11 3.64,0.48 0.63,-0.09l-0.5,0.07 -0.14,0.02z m39.69,7.97c-0.62,2.09 1.91,6.73 4.39,6.2 2.41,-1.46 3.73,1.73 6.48,0.56 1.23,-1.48 -3.77,-3.2 -3.7,-6.08 -0.95,-3.8 -3.28,-3.2 -5.96,-1.28 -0.41,0.2 -0.81,0.4 -1.22,0.6z m19.94,10.03c3.58,0.95 7.91,2.99 11.25,0.47 -1.05,-1.63 -5.06,-0.59 -7.1,-0.86 -1.44,0.01 -3.54,-1.63 -4.15,0.39z m12.13,4.38c2.33,2.45 3.64,6.83 7.24,7.4 2.36,-0.69 6.84,-0.66 7.32,-3.43 -2.09,-2.51 -5.77,-3.35 -8.88,-4.29 -2.53,-1.2 -4.11,-3.25 -5.68,0.33z m-7.06,1c-0.29,3.69 5.55,3.98 3.67,0.55 -0.27,-1.25 -3.83,-1.74 -3.67,-0.55z m23.66,14.69c0.27,2.45 3.18,3.93 0.47,6.15 -0.65,2.42 -5.54,2.87 -2.52,5.53 2.36,1.46 2.01,4.85 2.92,7.14 -0.72,2.69 -1.43,6.78 1.72,8.06 2.8,2.95 4.5,-1.93 6.19,-3.68 1.27,-1.69 3.85,-4.1 5.94,-2.59 3.04,-0.81 6.3,-2.42 7.78,-5.22 -2.79,-1.31 -4.88,-3.19 -5.57,-6.29 -2.4,-5.33 -8.95,-6.26 -13.58,-8.98 -1.29,-0.52 -2.26,-1.62 -3.34,-0.11z","name":"Hawaii"},"ak":{"path":"m107.84,436.56c-2.27,0.55 -4.87,0.32 -6.84,-0.34 -2.41,1.22 -5.63,4.03 -8.25,1.88 -3.1,0.93 -3.51,3.84 -5.22,5.97 -1.82,2.52 -4.21,3.65 -7.31,3.14 -2.5,-0.94 -5.49,-1.15 -7.5,0.98 2.03,4.34 6.39,8.13 5.82,13.23 -1.85,2.94 6.31,2.99 2.68,5.02 0.15,2.8 3.07,5.68 2.91,7.88 -2.35,2.21 -5.24,-0.38 -7.71,-1.06 -3.24,-0.64 -2.73,-3.35 -0.82,-5.22 -1.57,-1.51 -7.35,-1.81 -6.51,1.12 -2.01,0.04 -3.81,-1.66 -6.27,-0.77 -3.72,-0.44 -5.97,0.65 -2.94,4.05 3.68,1.45 1.06,4.72 1.17,7.57 0.76,2.63 3.66,4.89 6.67,4.17 3.2,-0.06 5.87,3.59 9.21,1.65 2.16,-1.3 5.33,-0.99 4.79,1.89 -2.53,2.07 -1.36,6.13 -2.78,8.75 -1.96,1.88 -4.53,1.59 -6.59,0.16 -1.52,1.37 -4.7,3.68 -6.28,2.22 0.72,-3.71 -4.77,-3.63 -5.51,-0.61 -1.21,3.97 -6.27,4.46 -8.31,7.63 -0.7,2.42 -1.55,6.7 1.74,6.3 1.26,1.11 -1.2,4.8 -2.77,5.52 1.62,2.19 2.65,4.59 2.72,7.34 1.71,1.55 6.35,1.98 7.5,-0.16 2.45,-0.95 1.79,4.1 2.08,5.97 2.47,2.95 -4.02,1.28 -1.61,4.56 -0.85,2.93 -1.76,5.02 2,2.72 2.76,-0.47 5.11,-0.69 5.66,2.09 2.59,-3.91 2.26,2.78 3.25,4.66 0.59,-0.75 1.3,-5.69 3.94,-3.06 -0.17,4.52 5.33,-0.45 5.78,-0.04 0.54,2.92 -1.63,4.24 -2.86,6.41 -1.51,2.24 -2.07,5.63 -4.21,7.17 -3.87,-0.42 -3.37,4.1 -5.5,5.02 -2.65,-0.72 -5.73,0.71 -8.44,1.41 -1.35,2.41 -3.61,4.2 -5.78,1.81 -2.56,0.05 -5.63,0.68 -7.63,2.33 -2.48,2.43 -6.32,3.11 -9.66,2.29 -2.78,-1.91 -7.11,3.41 -3.11,2.31 2.5,-1.91 4.66,0.64 7.25,0.63 2.21,-1.15 4.17,-2.75 6.84,-2.06 2.32,-3.35 5.1,-0.32 7.92,-1.16 2.31,-0.39 7.01,-3.91 5.26,0.66 0.09,-2.91 3.42,-2.73 5.54,-2.04 4.21,0.96 0.29,-3.16 2.08,-3.43 3.47,-2.05 7.52,-2.41 11.2,-3.72 5.48,-3.19 11.62,-5.7 16.21,-10.1 4.27,-2.97 -2.78,-3.48 -1.21,-6.32 1.68,-2.43 4.58,-3.81 7.47,-4.5 1.5,-3.07 3.53,-6.11 5.88,-8.52 2.49,-1.32 4.83,-3.39 7.83,-2.32 2.67,0.71 3.74,5.32 -0.52,3.66 -1.27,-1.88 -5.56,-0.09 -5.25,2.41 -0.21,2.44 -2.56,4.22 -3.06,6.66 4.79,0.85 0.24,3.54 -1.38,3.8 1.67,1.91 5.66,0.6 7.57,-1.14 1.25,-1.85 3.43,-3.8 5.41,-4.22 1.81,2.8 5.1,-1.16 5.74,2.72 0.71,2.78 6.02,-4.86 3.34,-3.1 -3.03,3.11 -3.78,2.86 -1.94,-1.24 1.43,-4.85 -1.76,6.17 -1.45,0.81 -0.81,-3.19 -0.93,-6.03 3.05,-6.4 2.7,-0.86 5.37,-0.87 5.79,2.52 0.42,3.48 3.8,2.84 5.95,4.76 2.41,2.2 4.76,1.95 7.8,1.78 4.34,-0.47 8.01,4.04 12.28,3.17 2.49,-0.42 5.1,-5.2 4.29,-0.23 -2.26,2.83 -0.02,4.12 2.5,5.41 3.13,1.35 5.87,3.14 7.94,5.85 1.31,3.02 6.05,0.28 6.18,2.43 -3.83,1.25 -1.23,3.54 0.21,5.47 1.81,1.95 0.33,5.72 3.64,5.82 1.14,1.28 3.49,7.44 4.01,5.38 -0.35,-2.32 -0.7,-7.86 1.61,-3.76 0.37,1.42 1.04,8.7 2.07,4.74 1.07,-4.88 3.18,0.18 2.22,2.93 3.33,1.69 -1.23,3.33 0.69,4.88 0.69,-3.24 1.31,-0.36 2.16,1.56 1.05,1 1.54,3.94 3.13,3.72 -1.68,-1.72 -2.94,-6.23 0.4,-3 2.42,2.79 4.05,2.12 2.74,-1.66 -2.65,-2.66 0.28,-4.96 2.58,-2.29 3.12,-0.05 2.84,5.21 5.28,4.53 3.31,-3.17 1.5,-7.87 0.69,-11.7 -3.3,-1.55 -7.04,-2.54 -10.22,-4.06 -1.5,-5.33 -6.29,-8.69 -8.4,-13.77 -0.44,-3.33 -4.71,-2.62 -5.75,-5.23 -2.32,-1.72 -2.7,-4.4 -4.56,-6.35 -1.65,-1.53 -5.22,0.95 -5.51,2.94 0.59,3.09 -3.23,3.04 -5.06,4.72 0.05,-4.27 -4.3,-6.15 -6.7,-9.1 -1.33,-1.99 -1.32,-5.36 -4.45,-2.34 -2.37,0.24 -6.38,-0.31 -5.34,-3.62 0.1,-27.7 0.2,-55.4 0.31,-83.09 -2.75,-1.88 -5.88,-4.17 -9.15,-4.4 -2.52,1.72 -5.07,1.09 -7.39,-0.62 -2.72,0.23 -5.12,-0.65 -7.7,-2.89 -3.08,-2.74 -8.58,0.17 -10.98,-3.65 1.13,-3.56 -3.22,-4.83 -5,-2.09 -2.09,0.26 -0.65,-4.31 -3.64,-4.93 -2.57,-2.85 -4.01,-1.28 -5.86,1.21z M36.38,480.63c-0.67,3.11 4.27,1.31 4.72,4.66 0.24,3.82 5.37,3.9 2.34,-0.08 -0.1,-3.22 -3.92,-1.83 -5.06,-4.43 -0.76,-2.02 -0.9,-1.86 -2,-0.16z m-17.16,23.16c2.57,4.06 1.45,1.37 0.13,-1.28 -0.36,0.01 0,1 -0.13,1.28z m21.84,14.81c1.27,1.79 4.99,5.58 6.22,2.03 2.26,-3.3 -3.27,-2.89 -5.23,-3.68 -1.83,-0.9 -0.88,0.54 -0.99,1.65z m91.72,18.78c0.06,3.21 2.81,-1.98 0,0z m-31.47,14.69c-3.2,2.91 -7.24,4.67 -10.56,7.38 0.22,2.75 0.99,7.64 4.67,5.15 2.5,-1.44 4.98,-2.9 7.45,-4.37 -1.84,-3.31 -0.81,-3.15 -4.55,-3.48 -4.15,0.09 1.06,-3.73 2.64,-1.62 3.74,-1.04 3.95,-2.36 1.5,-3.66 0.7,-1.08 -1,0.61 -1.16,0.59z M55.75,570.75c1.42,2.83 3.53,-1.99 0,0z m-35.78,0.34c0.53,2.46 -4.04,4.84 1.05,3.59 4.2,0.47 3.46,-4.35 0.01,-3.84 -0.35,0.08 -0.7,0.16 -1.06,0.24z m62.19,0.69c1.57,2.91 1.31,-2.03 0,0z M58.63,573.13c3.23,0.49 0.99,-3.05 0,0z m-49,0.09c-4.84,2.56 -0.44,1.81 2.29,0.58 2.89,0.16 5.05,-0.48 0.84,-1.46 -1.04,0.29 -2.08,0.58 -3.13,0.88z m7.25,1.38c1.28,0.21 -2.23,-0.59 0,0z","name":"Alaska"},"fl":{"path":"m748.38,439.94c1.69,2.92 1.5,6.12 1.16,9.34 -4.12,0.54 -2.15,-4.69 -5.56,-3.99 -6.18,-0.07 -12.34,1.13 -18.54,1.19 -10.09,0.29 -20.37,2.14 -30.33,0.64 -2.57,-1.57 -2.84,-6.15 -6.5,-5.33 -9.12,-0.12 -18.18,1.79 -27.26,2.55 -5.82,0.63 -11.62,1.37 -17.43,2.12 -1.42,3.25 2.6,4.37 4.06,6.34 0.8,2.28 -1.56,8.42 2.19,7.1 4.11,-1.2 8.08,-2.93 12.48,-2.72 3.34,-0.82 6.63,-0.73 9.89,0.45 4.09,0.8 7.77,3.09 11.41,4.98 1.77,1.94 5.5,1.87 5.97,5 -0.14,3.27 4.32,-0.94 6.5,0.53 3.19,-0.8 5.24,-3.68 7.69,-5.5 4.86,1.69 0.62,-2.9 3.27,-3.97 3.13,-0.83 6.62,-1.39 9.35,0.79 3.04,0.57 5.43,2 6.57,4.99 3.68,0.02 2.88,4.13 5.48,5.3 2.96,0.49 2.98,4.52 6.3,4.3 2.91,0.36 5.45,1.15 5.84,4.45 2.05,2.11 3.92,4.26 3.09,7.41 0.18,3.68 0.12,7.33 -1.44,10.75 0.39,3.68 1.37,7.94 3.28,10.78 2.25,-3.46 0.17,-3.87 -1.74,-6.03 2.19,-1.76 4.86,-0.22 7.3,0.16 0.82,3.15 -2.16,5.6 -3.48,8.19 -3.3,2.21 1.65,4.09 2.73,6.3 3.11,3.34 4.35,7.94 7.53,11.26 0.78,2.29 2.51,7.47 4.63,3.09 2.54,-0.24 3.88,3.44 5.28,5.41 -0.02,2.26 1.93,7.04 3.59,6.44 2.88,-0.8 6.04,0.65 8.28,2.59 2.56,3.3 4.58,6.98 4.56,11.27 1.37,2.73 4.55,0.44 5.81,-1.14 3.74,0.45 7.26,-1.25 9.22,-4.47 -1.01,-2.36 -0.57,-4.83 -0.32,-7.17 -0.04,-2.18 4.33,-3.19 2.25,-6.51 -0.98,-6.33 -0.19,-12.96 -1.87,-19.25 -2.46,-6.93 -7.54,-12.74 -10.4,-19.56 -1.51,-2.41 -4.24,-3.92 -4.62,-7.04 -0.94,-2.28 -2.67,-4.95 -0.07,-6.71 -0.39,-3.56 -4.86,-5.42 -6.84,-8.41 -5.38,-5.57 -8.29,-12.94 -12.35,-19.44 -2.15,-5.53 -4.29,-11.07 -5.91,-16.78 -3.43,0.07 -7.3,-1.03 -10.46,-0.35l-0.34,0.37 -0.26,0.29z m52.91,109.22c-1.9,4.58 0.72,0.38 0.66,-1.91 -0.22,0.64 -0.44,1.27 -0.66,1.91z m-4.69,9.91c2.56,-1.97 3.68,-6.84 1.04,-1.68 -0.35,0.56 -0.69,1.12 -1.04,1.68z m-2.25,2.22c1.46,-1.22 2.04,-2.07 0.18,-0.18l-0.18,0.18z m-5.72,4.16c-5.23,3.69 4.03,-2.14 0.33,-0.19l-0.33,0.19z m-10.72,3.22c-3.41,3.16 5.71,-0.32 4.1,-0.81 -1.8,-0.56 -2.56,-0.71 -4.1,0.81z m-4.59,3.16c0.08,0.16 0.4,-0.3 0,0z","name":"Florida"},"nh":{"path":"m862.56,94c-1.4,-0.41 -3.87,-0.72 -3.05,3 0.22,3.63 -0.73,7.84 2.23,10.59 0.33,2.78 0.08,5.36 -2.17,7.29 -0.19,2.83 -5.98,2.58 -3.35,5.32 1.16,7.35 -0.56,15.03 -0.62,22.51 1.2,1.95 0.98,4.39 0.76,6.75 -1.07,3.79 4.84,-0.05 6.89,0.06 3.93,-1.29 8.46,-1.74 12.04,-3.54 0.77,-3.1 4.37,-2.75 5.94,-4.96 2.59,-3.52 -3.01,-2.73 -2,-6.59 -3.83,0.01 -4.27,-2.46 -4.66,-5.62 -3.84,-11.98 -7.32,-24.45 -11.49,-36.1 -0.18,0.43 -0.35,0.85 -0.53,1.28z","name":"New Hampshire"},"mi":{"path":"M697.86,177.24L694.63,168.99L692.36,159.94L689.94,156.71L687.35,154.93L685.74,156.06L681.86,157.84L679.92,162.85L677.17,166.57L676.04,167.21L674.58,166.57C674.58,166.57 671.99,165.11 672.16,164.47C672.32,163.82 672.64,159.45 672.64,159.45L676.04,158.16L676.84,154.77L677.49,152.18L679.92,150.56L679.59,140.54L677.98,138.28L676.68,137.47L675.87,135.37L676.68,134.56L678.3,134.88L678.46,133.27L676.04,131L674.74,128.42L672.16,128.42L667.63,126.96L662.13,123.57L659.38,123.57L658.74,124.21L657.77,123.73L654.7,121.46L651.79,123.24L648.88,125.51L649.2,129.06L650.17,129.39L652.27,129.87L652.76,130.68L650.17,131.49L647.58,131.81L646.13,133.59L645.81,135.69L646.13,137.31L646.45,142.8L642.9,144.9L642.25,144.74L642.25,140.54L643.54,138.12L644.19,135.69L643.38,134.88L641.44,135.69L640.47,139.89L637.72,141.02L635.94,142.96L635.78,143.93L636.43,144.74L635.78,147.33L633.52,147.81L633.52,148.95L634.33,151.37L633.2,157.51L631.58,161.56L632.23,166.24L632.71,167.38L631.9,169.8L631.58,170.61L631.26,173.36L634.81,179.34L637.72,185.8L639.18,190.65L638.37,195.34L637.4,201.32L634.97,206.5L634.65,209.25L631.39,212.33L635.8,212.17L657.22,209.91L664.5,208.92L664.59,210.58L671.45,209.37L681.74,207.87L685.6,207.41L685.74,206.82L685.9,205.37L688,201.65L690,199.91L689.78,194.86L691.37,193.26L692.46,192.92L692.69,189.36L694.22,186.33L695.27,186.94L695.44,187.58L696.24,187.74L698.18,186.77L697.86,177.24z M581.62,82.06L583.45,80L585.62,79.2L590.99,75.31L593.28,74.74L593.74,75.2L588.59,80.34L585.28,82.29L583.22,83.2L581.62,82.06z M667.79,114.19L668.44,116.69L671.67,116.85L672.97,115.64C672.97,115.64 672.89,114.19 672.56,114.03C672.24,113.86 670.95,112.17 670.95,112.17L668.76,112.41L667.15,112.57L666.82,113.7L667.79,114.19z M567.49,111.21L568.21,110.63L570.96,109.82L574.51,107.56L574.51,106.59L575.16,105.94L581.14,104.97L583.57,103.03L587.93,100.93L588.09,99.64L590.03,96.73L591.81,95.92L593.1,94.14L595.37,91.88L599.73,89.46L604.42,88.97L605.55,90.1L605.23,91.07L601.51,92.04L600.06,95.11L597.79,95.92L597.31,98.35L594.88,101.58L594.56,104.17L595.37,104.65L596.34,103.52L599.89,100.61L601.19,101.9L603.45,101.9L606.68,102.87L608.14,104L609.59,107.08L612.34,109.82L616.22,109.66L617.68,108.69L619.29,109.99L620.91,110.47L622.2,109.66L623.33,109.66L624.95,108.69L628.99,105.14L632.39,104L639.02,103.68L643.54,101.74L646.13,100.45L647.58,100.61L647.58,106.27L648.07,106.59L650.98,107.4L652.92,106.91L659.06,105.3L660.19,104.17L661.65,104.65L661.65,111.6L664.88,114.67L666.17,115.32L667.47,116.29L666.17,116.61L665.37,116.29L661.65,115.81L659.55,116.45L657.28,116.29L654.05,117.75L652.27,117.75L646.45,116.45L641.28,116.61L639.34,119.2L632.39,119.85L629.96,120.66L628.83,123.73L627.54,124.86L627.05,124.7L625.6,123.08L621.07,125.51L620.42,125.51L619.29,123.89L618.48,124.05L616.54,128.42L615.57,132.46L612.39,139.46L611.22,138.42L609.85,137.39L607.9,127.1L604.36,125.73L602.31,123.45L590.19,120.7L587.33,119.67L579.1,117.5L571.21,116.36L567.49,111.21z","name":"Michigan"},"vt":{"path":"m833.16,106.59c0.19,6 4.65,11.21 3.72,17.28 -2.48,4.23 4.52,7.29 2.22,11.58 0.9,1.59 4.66,1.96 4.06,5.25 1.08,4.21 2.86,8.34 1.84,12.76 3.35,-0.51 7.06,-1.17 10.13,-1.97 -0.21,-2.13 1.51,-5.75 -0.53,-7.81 0.2,-7.64 1.01,-15.26 1.13,-22.91 -3.25,-2.41 0.32,-3.79 2.12,-5.18 1.96,-2.28 3.9,-5.07 2.6,-8.1 -2.62,-1.63 -1.02,-5.94 -2.39,-7.22 -8.3,2.1 -16.59,4.21 -24.89,6.31z","name":"Vermont"},"me":{"path":"m889.88,40.22c-2.16,1.31 -3.69,2.74 -4.84,4.69 -2.29,0.6 -4.99,-1.37 -4.88,-3.94 -2.97,-0.82 -3.33,3.68 -4.37,5.71 -1.09,4.29 -3.27,8.39 -3.97,12.69 -0.06,3.04 1,6.63 -1.35,9.09 0.08,2.92 -0.75,6.18 2,8.16 -1.37,5.7 -6.23,10.36 -5.41,16.56 -4.27,-2.21 -1.74,2.47 -1.09,4.73 3.51,11.08 7.19,22.16 10.25,33.35 0.21,3.01 5.81,1.35 4.53,5.7 2.9,2 2.06,-3.92 2.66,-5.87 -1.01,-3.29 2.7,-4.63 0.66,-7.62 0.94,-1.05 2.92,-5.9 4.61,-3.46 2.03,1.03 5.28,-1.89 6.74,-3.19 -0.98,-4.02 4.21,-1.75 4.73,-5.32 -1.11,-2.61 0.74,-5.45 -0.57,-7.44 -2.42,-1.59 3.53,-4.63 3.31,-0.78 2.27,0.48 2.15,2.8 3.66,3.93 1.94,-2.82 -2.15,-3.81 0.35,-6.03 2.43,-0.81 3.1,-3.96 6,-3.31 -0.17,1.46 1.03,3.34 2.26,1.38 2.94,-2.9 5.24,-7.08 9.37,-8.34 1.17,-2.61 3.34,-5.74 0.71,-8.24 -0.55,-1.64 -3.68,-4.84 -4.15,-2.58 -0.75,2.6 -4.66,-0.65 -4.92,-2.22 0.1,-2.8 0.29,-7.17 -3.8,-5.81 -3.96,1.36 -3.64,-3.04 -4.69,-5.61C905.22,58.3 902.75,50.15 900.28,42c-2.86,-1.25 -5.71,-2.92 -8.81,-3.38 -0.53,0.53 -1.06,1.06 -1.59,1.59z m20.47,61c-2.81,1.7 1.87,5.16 1.13,1.22 1.48,-0.9 0.13,-2.4 -1.13,-1.22z m-7.81,7.81c3.16,6.67 2.63,-3.59 0,0z","name":"Maine"},"ri":{"path":"m871,164.28c1.15,4.66 2.29,9.31 3.44,13.97 2.56,-0.49 4.66,-2.29 5.84,-4.56 4.17,0.76 4,-2.64 1.51,-4.97 -1.79,-1.94 -3.16,-5.31 -5.74,-5.92 -1.68,0.49 -3.37,0.99 -5.05,1.48z","name":"Rhode Island"},"ny":{"path":"m825.56,108.66c-2.7,1.12 -5.45,1.68 -8.33,1.43 -5.07,0.72 -10.17,2.73 -12.92,7.31 -2.84,3.43 -4.89,7.49 -7.18,11.2 -1.65,2.36 -5.82,3.73 -5.55,6.84 -0.17,3.56 5.77,0.73 4.43,4.38 -2.69,2.3 0.8,4.23 0.56,6.59 0.5,3.47 -4.26,1.99 -5.36,4 -1.62,2.71 -3.35,6.62 -7.22,6.05 -3.04,-0.43 -5.35,2.05 -7.98,2.63 -2.5,-0.75 -4.7,-2.05 -7.59,-1.31 -5.31,0.21 -10.62,1.98 -15.23,4.53 -0.29,1.77 0.61,6.25 3.17,6.14 1.55,2.48 2.09,4.96 -0.63,6.72 -1.51,1.76 -1.8,4.25 -4.16,5.3 -1.93,1.14 -2.68,3.51 -4.8,4.54 0.33,3.07 -0.22,7.29 4.08,5.12 22.14,-4.26 44.26,-8.68 66.23,-13.74 0.98,3.85 5.67,1.32 6.44,4 0.64,2.93 1.36,7.4 5.33,6.88 3.14,1.9 6.9,3.68 10.69,4.22 2.71,0.47 7.18,1.43 6.44,5.06 -0.33,1.97 -1.62,7.56 1.97,5.93 5.3,-1.65 10.96,-2.84 15.06,-6.85 3.23,-2.49 6.76,-4.64 9.35,-7.86 -2.99,-2.44 -4.65,0.46 -6.81,2.42 -2.91,1.56 -6.01,3.51 -9.16,4.32 -2.6,-0.63 -4.83,-0.86 -6.18,2.07 -1.03,2.04 -4.86,2.98 -3.98,-0.15 4.26,-1.87 -2.17,-3.97 -0.33,-6.21 1.19,-3.13 0.56,-6.87 0.42,-10.21 -1.43,-7.38 -3.69,-14.76 -2.54,-22.36 -0.08,-4.46 1.55,-8.97 -0.51,-13.21 -1.22,-2.56 -0.47,-6.83 -4.05,-7.34 -2.99,-0.66 0.75,-4.31 -1.57,-6.2 -1.7,-2.43 -3.17,-4.91 -1.54,-7.81 0.38,-5.77 -3.83,-10.57 -3.55,-16.35 -2.32,0.65 -4.65,1.29 -6.97,1.94z","name":"New York"},"pa":{"path":"m798.88,181.63c-17.5,3.38 -34.87,7.42 -52.47,10.28 -0.61,-2 0.48,-8.42 -2.41,-4.31 -2.18,2.73 -5.48,3.74 -8.09,5.97 1.52,9.75 2.63,19.57 5.44,29.05 1.14,6.09 2.27,12.17 3.41,18.26 8.85,-1.42 17.79,-2.25 26.51,-4.41 16.39,-3.45 33.03,-6.46 49.33,-9.87 2.48,-3.07 8.03,-1.69 8.97,-6.19 0.64,-2.36 4.86,-3.99 4.33,-5.9 -2.3,-1.89 -5.94,-2.77 -6.39,-6.13 -3.14,1.09 -4.42,-3.94 -3.12,-5.32 3.86,-1.1 -0.49,-3.68 0.55,-5.96 2.52,-1.88 1.12,-5.15 2.81,-7.07 3.87,-2.7 -2.98,-1.1 -3.72,-3.99 -1.35,-2.18 -0.28,-7.24 -4.16,-5.92 -2.34,-1.13 -3.87,-3.75 -7.09,-1.7 -4.64,1.07 -9.28,2.15 -13.92,3.22z","name":"Pennsylvania"},"nj":{"path":"m827.84,191.34c1.03,2.99 -1.82,4.8 -2.06,7.47 2.86,1.63 0.49,4.87 -0.92,5.73 -0.41,3.86 4.01,1.68 4.16,5.14 1.37,2.19 4.72,3.02 6.26,4.94 -0.15,2.61 -3.85,3.5 -4.69,6.06 -0.26,3.07 -4.09,3.19 -4.18,5.96 -0.99,2.38 -0.74,5.09 1.7,6.47 2.85,2.76 6.86,3.99 10.73,4.38 0.48,1.55 -1.84,7.18 1.1,3.59 1.5,-2.42 0.59,-5.95 3.11,-8.01 2.5,-4.08 5.03,-8.84 4.88,-13.61 -1.35,-4.07 0.8,-9.01 -1.81,-12.82 -1.1,1.32 -6.17,1.23 -4.13,-0.8 2.39,-1.39 3.37,-3.62 2.39,-6.31 0.21,-2.31 1.58,-5.42 -1.69,-6.19 -4.35,-1.15 -8.82,-2.13 -12.88,-4.26 -0.66,0.75 -1.31,1.5 -1.97,2.25z","name":"New Jersey"},"de":{"path":"m824.88,225.34c-3.72,0.25 -3.47,3.52 -1.91,6.13 3.35,6.89 3.86,14.58 6.03,21.81 3.45,0.11 6.81,-0.49 10.16,-1.25 -1.2,-2.17 -0.68,-6.38 -3.32,-6.38 -2.9,-1.2 -4.17,-3.69 -4.9,-6.58 -0.91,-3.11 -3.62,-4.96 -5.48,-7.35 -1.85,-1.82 0.94,-5.5 -0.26,-6.47l-0.33,0.09z","name":"Delaware"},"md":{"path":"m813.59,229.19c-17.31,3.18 -34.53,6.83 -51.78,10.28 0.74,3.02 1.31,6.08 1.78,9.16 2.14,-1.9 3.29,-5.35 6.59,-5.34 2.14,-1.85 2.67,-5.25 5.77,-3.55 3.46,0.18 5.43,-5.35 9.01,-3.85 2.63,1.63 5.66,2.79 7.34,5.59 4.19,0.11 3.68,3.73 5.74,4.96 2.73,1.11 5.02,1.18 6.38,-0.53 4.29,1.38 2.24,3.74 1.44,6.9 0.09,2.97 -3.7,4.92 -1.66,7.97 3.1,1.31 6.4,1.2 9.63,1.4 2.17,1.58 6.83,1.03 3.79,-2.1 0.41,-2.74 -3.08,-3.35 -3.32,-6.04 -1.7,-2.67 -1.42,-5.47 -0.36,-8.32 1.68,-2.42 -2.83,-3.82 -0.4,-5.41 1.25,-1.53 0.43,-4.16 2.98,-4.7 1.62,-3.02 5.1,-1.45 2.35,1.02 -2.54,2.98 -0.81,4.5 0.57,6.3 1.41,3.55 -0.68,5.07 -1.53,7.31 -0.22,-0.81 3.62,-1.01 3.22,1.79 -3.15,1.64 -1.45,6.12 1.09,7.31 2.98,0.99 5.58,-1.8 6.98,2.14 1.5,3.75 4.92,0.81 7.41,-0.02 2.74,-1.21 3.47,-4.93 2.78,-7.7 -1.13,-1.58 -4.82,0.92 -7.13,0.4 -3.86,1.26 -4.9,-1.25 -5.28,-4.64 -1.68,-5.97 -2.14,-12.33 -5.16,-17.9 -0.04,-4.32 -2.71,-4.2 -6.07,-2.91 -0.73,0.16 -1.45,0.31 -2.18,0.47z m10.94,32.59c1.32,0.99 0.59,4.97 2.06,4.63 -0.48,-1.31 -0.36,-4.99 -2.06,-4.63z","name":"Maryland"},"va":{"path":"m792.88,242.88c-0.16,1.46 0.24,5.89 -2.4,4.29 -2.58,-0.67 -6.42,-3.2 -8.23,-2.73 0.7,3.72 -1.46,6.77 -2.99,9.94 -3.05,1.14 -2.29,5.83 -5.84,5.58 -1.62,1.74 -1.47,5.31 -2.45,7.73 -3.09,1.14 -5.37,-0.48 -7.28,-1.75 0.11,6.5 -3.72,11.95 -5.91,17.84 -1.69,1.73 1.19,3.8 -0.74,5.77 -1.35,3.56 -3.79,2.72 -6.19,4.19 -2.72,1.1 -4.9,0.5 -5.4,4.61 -2.07,1.14 -4.83,2.63 -6.91,0.47 -2.38,1.51 -5.02,3.21 -7.81,1.6 -2.69,-0.01 -3.9,-6.55 -6.07,-2.94 -3.27,4.09 -7.89,7.48 -10.21,12.09 0.43,3.25 -4.46,3.32 -6.42,5.15 -4.27,1.95 3.62,-0.11 5.16,-0.07 5.56,-0.79 11.14,-1.37 16.76,-1.36 1.95,-2.65 4.98,-1.81 7.77,-1.65 7.86,-0.32 15.65,-2.12 23.48,-2.99 12.85,-1.4 25.44,-4.27 38.04,-7.05 11.65,-2.52 23.3,-5.03 34.96,-7.55 -1.64,-2.66 -2.75,-6.67 -6.42,-4.14 -1.99,2.03 -6.61,-1.82 -2.7,-2.48 2.65,-1.62 -1.75,-4.07 -1.8,-5.97 -2.73,-0.62 -2.88,-5.12 0.54,-3.6 -0.17,-1.37 -1.24,-3.62 -1.62,-5.68 1.47,-3.51 -0.84,-4.97 -3.72,-5.16 0.31,-3.42 -2.9,-2.93 -5.22,-3.97 -3.33,0.21 -7.06,-0.25 -9.91,-1.66 -1.22,-2.41 -0.91,-5.12 1.25,-6.88 1.39,-2.83 -0.28,-5.7 -3.3,-6.27 -2.65,-0.83 -6.97,-0.29 -5.73,-4.3 -0.83,-0.3 -2.05,-1.06 -2.69,-1.06z m39.16,21.59c0.44,4.71 -3.15,8.7 -2.62,13.48 -0.34,4.11 2.64,5.72 3.48,0.92 1.71,-3.04 -0.23,-6.47 0.8,-9.73 0.4,-2.53 3.66,-3.88 3.52,-6.73 -1.73,0.69 -3.46,1.38 -5.19,2.06z","name":"Virginia"},"wv":{"path":"m739.75,223.25c-1.6,2.23 1.3,5.02 0.25,7.75 -0.18,4.04 -0.63,8.11 -0.84,12.13 -1.94,3.58 -4.43,7.35 -8.16,9.13 -3.15,-1.33 -3.92,3.25 -5.76,4.98 -1.56,2.28 2.64,4.93 -0.3,6.69 -2.57,3.58 -2.6,-4.8 -4.46,-0.71 -1.32,2.59 0.02,6.02 -1.35,8.33 -1.82,1.54 -0.53,5.19 -4.16,4.81 -2.23,0.13 -1.45,6.19 1,6.81 2.24,1.47 2.49,4.74 5.5,5.92 1.92,1.96 2.28,5.18 5.39,6.05 1.64,2.19 3.07,4.96 6.25,4.88 2.63,0.5 4.77,-3.86 7.22,-1.35 1.49,0.81 3.93,-0.57 4.58,-1.83 0.43,-4.57 3.42,-2.71 6.03,-4.39 2.39,-0.94 4.82,-0.98 5.62,-4.44 -1.26,-2.59 0.3,-5 1.56,-7.64 2.23,-4.81 4.72,-9.61 4.67,-15.05 2.65,-2.31 3.72,3.56 7.05,1.41 1.64,-1.77 1.12,-5.67 2.6,-7.59 3.47,0.39 2.97,-3.96 5.76,-5.21 2.29,-3.11 3.52,-6.8 3.06,-10.7 1.06,-1.29 5.1,1.62 7.23,2.15 3.3,3.35 4.34,-1.98 2.85,-4.05 -2,-2.28 -5.12,-3.7 -7.62,-4.75 -3.31,0.98 -5.44,5.47 -9.38,3.97 -1.86,-0.23 -2.38,3.98 -4.86,3.88 -2.89,0.71 -3.79,4.38 -6.03,6.22 -1.1,-0.06 -0.99,-4.82 -1.62,-6.64 -0.01,-3.93 -1.77,-5.3 -5.48,-3.82 -4.21,0.6 -8.41,1.23 -12.61,1.91 -1.17,-6.45 -2.29,-12.92 -3.44,-19.38l-0.35,0.35 -0.18,0.18z","name":"West Virginia"},"oh":{"path":"m729.5,197.78c-4.85,2.06 -7.38,6.9 -11.47,9.97 -4.08,0.86 -8.09,1.75 -11.72,3.88 -3.41,1.61 -4.39,-4.09 -7.67,-2.63 -3.13,1.35 -5.49,-1.1 -8.11,-2.41 -8.6,1.15 -17.15,2.64 -25.66,4.38 1.45,17.83 4.12,35.53 5.87,53.33 -0.69,3.82 4.06,2.26 6.23,1.48 2.74,0.41 4.83,2.16 5.48,4.94 1.26,2.48 5.82,-0.87 6.96,2.54 2.19,1.53 4.46,-2.33 7.03,-0.58 2.52,0.04 5.62,1.51 6.84,-1.56 1.49,-0.55 5.37,-3.85 5.41,-0.71 0.38,2.53 3.82,3.57 5.77,4.7 3.53,0.63 2.32,-3.91 4.21,-5.51 -0.11,-2.74 0.21,-5.73 1.39,-8.13 2.53,-2.81 3.8,4.53 4.98,0.39 -2.02,-2.27 -0.99,-5.41 0.93,-7.41 1.07,-4.06 4.05,-2.41 6.5,-4.39 2.93,-3.16 6.59,-6.57 5.97,-11.27 0.44,-4.71 1.18,-9.75 -0.53,-14.23 1.47,-2.48 2.58,-4.29 0.96,-7.33 -2.04,-7.53 -2.56,-15.37 -3.93,-23.04 -1.81,1.2 -3.63,2.4 -5.44,3.59z","name":"Ohio"},"in":{"path":"m658.66,210.31c-9.12,0.93 -18.35,1.98 -27.41,2.68 -2.6,0.39 -4.21,5.08 -6.89,2.98 -3.83,-2.84 -2.64,1.83 -2.41,4.45 1.1,14.81 2.73,29.61 3.44,44.42 -0.76,3.69 -1.39,7.89 1.36,10.91 0.1,2.99 1.4,6.28 -1.14,8.65 -1.83,2.73 -2.55,6.09 -5.02,8.42 0.09,2.08 -2.02,8.2 1.63,5.16 3.49,-0.6 7.25,-1.53 10.69,-1.34 2.36,4.08 2.67,-0.62 5.26,-1.29 2.03,-2.62 4.78,2.05 5.34,1.04 -1.26,-3.41 3.05,-3.77 5.1,-5.22 1.09,0.63 6.05,3.38 5.3,-0.64 -0.46,-2.47 2.02,-4.71 3.65,-6.34 3.11,-1.39 4.33,-3.9 4.16,-7.23 1.83,-1 4.93,-1.01 6.97,-2.47 4.23,-1.03 0.26,-3.48 1.22,-5.92 -0.83,-12.56 -2.8,-25.13 -4.08,-37.69 -0.85,-6.99 -1.44,-14.01 -2.14,-21.02 -1.68,0.16 -3.35,0.31 -5.03,0.47z","name":"Indiana"},"il":{"path":"m569.75,200.44c-0.29,2.58 4.2,1.83 3.73,5.07 2.07,2.09 5.71,4.21 4.38,7.77 -0.31,3.04 -2.61,5.44 -3.08,8.4 -2.38,2.71 -6.06,2.98 -9.31,3.94 -1.61,2.47 -1.05,4.91 1.28,6.47 0.63,3.25 -1.08,5.07 -2.74,7.38 1.41,3.63 -2.39,2.86 -3.56,5.02 1.08,3.12 -2.11,3.8 -2.53,6.64 0.19,3.95 1.33,8.21 3.28,11.58 3.68,3.96 7.38,7.9 12.21,10.47 -0.61,2.88 -0.64,6.7 3.43,5.71 2.05,0 6.18,0.38 6.26,2.68 -0.19,4.39 -3.6,8.24 -3.28,12.53 1.6,3.83 5.33,6.26 8.59,8.42 3.37,-0.29 5.36,1.27 5.9,4.6 1.01,2.64 3.84,4.73 1.73,7.67 0.55,1.74 2.58,7.7 4.31,4.05 1.21,-2.98 5.41,-4.78 8.07,-2.46 3.1,2.46 5.94,0.47 3.13,-2.8 -0.98,-3.39 2.61,-4.96 5.37,-5.33 1.01,-1.55 -1.6,-4.46 1.4,-5.97 1.8,-3.97 -0.56,-9.39 3.32,-12.49 1.43,-2.97 3.23,-5.97 4.4,-8.97 0.13,-3 -0.7,-5.7 -2.34,-8.16 -0.45,-4.59 1.31,-9.09 0.02,-13.65 -1.16,-15 -2.22,-30.05 -3.67,-45.01 -1.02,-3.1 -1.61,-6.46 -4.04,-8.77 -2.27,-1.83 -0.51,-5.93 -1.97,-7.32 -14.76,0.83 -29.52,1.67 -44.28,2.5z","name":"Illinois"},"ct":{"path":"m865.78,165.41c-6.91,1.54 -13.81,3.08 -20.72,4.63 2.17,6.2 2.74,12.83 2.44,19.34 -2.62,4.3 2.61,2.38 3.97,-0.21 2.09,-1.89 4.19,-3.71 5.99,-5.88 2.06,1.35 4.78,-1.86 7.44,-1.46 2.98,-0.68 5.69,-2.24 8.56,-3.26 -1.15,-4.67 -2.29,-9.33 -3.44,-14 -1.42,0.28 -2.83,0.56 -4.25,0.84z","name":"Connecticut"},"wi":{"path":"m559.53,104.97c-4.06,2.75 -8.71,4.92 -13.53,5.84 -2.88,-1.08 -5.54,-1.12 -5.57,2.68 -0.48,3.34 0.51,7.03 -0.47,10.17 -2.02,3.26 -6.91,4.03 -7.36,8.38 -2.63,2.78 2.21,3.06 2.23,5.53 1.79,2.9 -2.13,4.74 -1.33,7.65 0.29,2.93 -0.4,6.49 1.14,8.93 1.33,3.48 5.88,0.21 6.64,3.93 1.56,2.26 5.47,1.03 6.19,4.78 2.15,5.1 9.7,4.85 11.21,10.39 0.68,3.38 0.35,7.34 1.94,10.32 3.26,1.05 1.94,4.34 0.25,6.21 -0.79,3.96 2.53,8.34 6.75,8.25 2.28,1.6 4.86,1.65 7.83,1.19 13.03,-0.77 26.07,-1.53 39.1,-2.3 -0.02,-4.45 -1.98,-8.61 -1.86,-13.13 -1.7,-2.04 -0.86,-4.17 -0.04,-6.39 0.32,-2.84 3.07,-4.93 1.51,-7.87 -1.05,-2.94 -0.88,-6.21 1.73,-8.27 -0.2,-2.83 -0.5,-5.03 -0.16,-7.93 -1.14,-4.2 2.64,-7.5 3.69,-11.36 0.92,-1.13 3.15,-8.34 0.73,-4.93 -2.65,3.81 -4.99,8.01 -8.18,11.29 -0.86,2.06 -3.21,4.55 -5.21,4.5 -2.57,-1.26 0.28,-4.49 0.9,-6.41 0.47,-2.94 3.2,-4.25 4.09,-6.85 -3.31,-1.29 -2.77,-5.03 -3.54,-7.92 0.02,-3.09 -1.23,-5.08 -4.29,-5.57 -2.14,-3.67 -7.04,-2.78 -10.59,-4.12 -7.13,-1.87 -14.21,-4.39 -21.67,-4.99 -2.48,-0.54 -2.84,-5.51 -5.51,-4.73 -1.71,-1.54 -3.85,-0.7 -5.82,0.13 -2.8,-1.32 0.68,-4.59 1.5,-6.38 2.18,-1.34 -1.53,-2.14 -2.31,-1z","name":"Wisconsin"},"nc":{"path":"m830.06,295.97c-18.3,3.8 -36.53,8 -54.86,11.65 -12.74,1.51 -25.38,4.07 -38.18,4.94 -3.32,-0.82 -1.17,3.72 -2.5,5.53 -2.62,1.34 -3.49,4.59 -5.03,6.38 -3.24,-1.36 -5.07,1.46 -6.34,3.97 -1.09,-0.57 -2.96,0.03 -3.41,-1.41 -2.02,1.96 -4.37,3.73 -4.31,6.81 -3.66,1.1 -6.31,3.82 -9.28,5.96 -2.64,0.94 -5.76,2.16 -7.4,4.35 0.73,4.06 -2.98,3.3 -5.1,5.29 -1.98,4.69 2.74,2.66 5.58,2.5 6.41,-1.19 13.32,-0.49 19.18,-3.73 5.04,-1.9 9.41,-5.9 15.06,-5.67 6.5,-0.64 13.15,-0.6 19.62,-0.69 2.99,0.53 3.36,4.79 5.58,5.01 5.37,-0.81 10.87,-1.67 16.25,-1.79 5.38,1.36 9.61,5.45 14.52,7.93 3.59,2.64 6.93,5.66 10.43,8.44 3.15,-0.86 6.32,-1.58 9.59,-1.72 1.06,-4.55 2.04,-9.29 5.39,-12.78 4.2,-4.27 9.23,-8.29 15.33,-9.29 2.91,1.95 3.69,-2.9 5.27,-4.53 2.72,-5 -2.44,3.91 -2.46,-1.22 -3.87,0.7 -5.43,-0.26 -3.29,-4 2.77,-4.25 -2.73,-2.51 -2.12,-6.02 -1.42,-3.76 2.84,2.19 5.06,0.81 2.81,0.12 5.1,-1.87 5.59,-4.6 0.45,-2.9 4.59,-2.7 3.28,-6.48 -4.02,-2.43 4.25,-0.66 0.4,-3.93 -3.52,-3.44 -5.24,-8.33 -7.23,-12.76 -1.54,0.35 -3.08,0.71 -4.63,1.06z m17.13,23.72c1.55,2.61 -4.64,4.26 -0.52,2.69 1.38,-1.92 0.21,-5.22 0.24,-7.62 -0.74,-2.05 0.37,4.57 0.28,4.94z","name":"North Carolina"},"dc":{"path":"m803.44,248.16c2.67,3.43 3.85,-1.02 0.55,-0.75l-0.29,0.4 -0.25,0.35z","name":"District of Columbia"},"ma":{"path":"m877.59,144.41c-1.04,3.1 -4.01,3.5 -6.79,4.13 -8.62,2.32 -17.17,4.6 -25.96,6.12 -0.11,4.77 -1.17,9.59 -0.03,14.31 10.66,-2.6 21.54,-4.29 32,-7.44 3.57,2.81 6.01,6.73 8.28,10.59 2.13,-0.78 0.01,-5.15 3.77,-5.38 2.93,-3.28 1.83,4.78 3.17,2.62 2.13,-3.09 6.1,-3.9 9.41,-5.21 -0.11,-3.41 -2.21,-8.55 -6.38,-7.53 1.64,-0.1 4.89,0.87 4.91,3.82 0.85,2.24 -2.55,3.71 -4.35,4.24 -3.37,0.51 -4.99,-1.76 -6.32,-4.47 -1.38,-2.05 -3.58,-6.56 -6.3,-3.6 -1.89,-1.72 -3.13,-4.04 -1.33,-6.3 2.3,-2.34 1.23,-6.2 -1.28,-7.16 -0.93,0.41 -1.86,0.82 -2.79,1.24z M902.25,172.69c-1.6,2.76 3.05,-2.44 0.08,-0.32l-0.08,0.32z m-11.28,1.28c1.59,0.78 6.09,-2.26 1.78,-2.03 -0.59,0.68 -1.19,1.35 -1.78,2.03z","name":"Massachusetts"},"tn":{"path":"m730.41,314.34c-8.87,-0.11 -17.76,1.5 -26.57,2.73c-10.24,2.86 -20.99,2.66 -31.48,4.02c-16.34,1.45 -32.65,3.29 -48.96,4.95c-4.57,-1.71 -0.43,5.74 -5.06,4.14c-6.97,0.06 -13.87,1.23 -20.84,0.71c-0.95,4.26 -1.37,9.04 -3.6,12.76c1.03276,2.6246 -1.94104,7.30425 -2.59092,9.90471c-2.52529,1.78965 -2.61104,1.92035 -0.46104,4.90035c3.07759,1.94598 -1.38459,5.12506 1.90081,3.86506c33.91,-3.26 65.53115,-6.30012 99.44115,-9.56012c-0.23,-2.54 0.72,-5.31 3.53,-5.69c3.11,-0.4 0.99,-5.41 4.88,-5.81c2.77,-2.02 6.49,-2.19 8.62,-5.18c1.76,-2.26 6.31,-1.64 5.78,-5.38c1.19,-1.77 3.1,-3.84 5.03,-4.85c1.04,-0.39 0.28,1.78 1.72,1.19c2.38,0.56 2.2,-4.36 5.22,-3.86c3.3,1.27 2.68,-2.92 4.96,-4.18c2.05,-0.94 3.81,-6.68 0.92,-6.59c-0.81,0.64 -1.63,1.27 -2.44,1.91l0,0.02z","name":"Tennessee"},"ar":{"path":"m509.47,335.31c1.73,4.9 1.5,10.02 1.53,15.12c2.15,12.21 1.13,24.64 1.47,36.97c0.02,3.71 0.04,7.42 0.06,11.13c2.06,3.2 5.05,-1.45 7.69,1.47c1.53,1.76 -0.88,7.54 2.97,6.49c17.61,-0.36 35.23,-0.72 52.84,-1.08c1.97,-2.6 0.41,-5.9 -1.28,-8.22c3.3,-1.61 -1.59,-3.96 0.84,-6.53c0.75,-2.77 0.62,-6.34 3.78,-7.69c-1.88,-3.07 2.08,-5.24 3.19,-7.88c3.77,-0.38 1.58,-3.3 2.64,-5.42c1.12,-2.67 2.56,-5.28 4.85,-6.58c1.2,-4.12 0.21,-2.67 -1.53,-5.61c-2.76,-3.32 1.95,-3.50023 2.36,-6.84c0.17988,-0.90552 3.08012,-6.46012 1.22,-6.75c-2.65,0.85 -5.34,-0.18 -8.02,-0.33c-0.09,-3.38 4.4,-3.88 4.22,-7.3c0.58,-3.87 -3.58,-3.68 -6.34,-3.26c-24.17,0.77 -48.34,1.54 -72.5,2.31l0.01,0z","name":"Arkansas"},"mo":{"path":"m490.44,245.63c-2.39,-0.46 -0.19,4.05 0.07,5.6 2.45,3.32 4.51,7.86 8.55,9.22 2.81,-0.24 3.61,2.67 2.79,4.84 -3.22,1.64 -1.72,5.03 0.19,7.07 0.9,2.55 4.61,3.05 4.89,5.61 2.1,12.97 1.12,26.14 1.51,39.22 0,5.72 0.08,11.44 0.72,17.13 24.99,-0.94 49.98,-1.8 74.97,-2.51 3.02,-1.12 4.35,1.72 5.31,3.98 0.52,3.48 -2.86,4.46 -4.14,6.86 2.37,0.64 5.57,0.65 8.21,-0.08 1.46,-3.59 1.87,-7.45 2.38,-11.22 0.84,-2.83 5.27,-2.89 4.61,-6.03 1.37,-2.94 0.14,-4.6 -2.22,-4.28 -2.15,-1.81 -2.84,-5.03 -2.86,-7.6 1.45,-2.84 -2.08,-5.07 -2.44,-7.89 -0.66,-3.24 -5.34,-0.87 -6.89,-3.66 -2.64,-2.34 -6.24,-3.94 -6.91,-7.76 -0.94,-3.21 1.52,-6.47 2.17,-9.64 2.2,-3.53 -1.34,-4.7 -4.33,-4.5 -2.66,0.39 -5.34,-1.15 -4.81,-4.1 0.86,-4.07 -4.71,-4.05 -6.43,-6.93 -2.7,-3.4 -6.72,-6.05 -7.25,-10.67 -1.1,-3.16 -2.12,-6.86 -0.62,-10.06 -2.3,-1.34 -2.28,-5.77 -5.37,-4.89 -20.69,0.77 -41.38,1.53 -62.06,2.3z","name":"Missouri"},"ga":{"path":"m672.78,356c-0.74,7.06 4.28,12.69 5.29,19.4 1.36,6.57 3.44,12.96 5.03,19.44 0.94,4.88 2.17,9.95 5.53,13.75 -0.85,3.5 3.37,3.17 2.59,6.44 -1.89,4.45 -3.57,9.65 -0.84,14.13 0.05,2.63 0.94,5.4 -0.38,7.88 2.95,0.94 1.45,4.01 3.07,6.01 1.35,2.67 3.68,4.75 6.83,4 12.35,-0.01 24.69,-1.31 37.03,-1.92 3.32,-0.58 6.67,-0.74 10.04,-0.59 -0.78,4.24 3.04,4.15 2.09,-0.09 -0.9,-2.14 -2.94,-6.23 0.59,-6.62 3.2,0.5 6.42,0.91 9.66,1.02 -0.84,-3.8 -0.8,-7.57 0.5,-11.27 0.2,-3.54 2.62,-6.73 2.21,-10.21 -0.72,-2.93 3.26,-5.26 2.85,-8.05 -2.19,1.37 -5.29,-0.71 -5.34,-3.19 -0.56,-3.12 -2.71,-5.83 -6.03,-6.06 -1.33,-3.9 -2.62,-8.17 -4.99,-11.43 -3.12,-1.07 -6.13,-2.99 -7.17,-6.29 -2.06,-2.33 -5.23,-3.21 -6.66,-6.16 -2.08,-2.2 -5.24,-2.83 -7.66,-4.19 -0.76,-2.53 -3.21,-4.09 -3.94,-6.67 -1.36,-2.63 -2.97,-4.65 -6.15,-3.77 -2.33,-1.57 -7.15,-3.38 -5.31,-6.97 2.02,-2.01 3.76,-4.11 -0.8,-3.11 -12.68,1.51 -25.37,3.01 -38.05,4.52z","name":"Georgia"},"sc":{"path":"m737.03,343.19c-4.26,0.4 -8.64,0.43 -12.24,3.07 -3.2,1.75 -6.48,3.19 -9.88,4.49 2.21,3.31 -4.28,2.74 -2.34,6.44 2.27,2.24 5.2,4.13 8.5,3.28 2.53,3.15 3.83,6.94 6.53,9.88 0.91,2.76 5.13,2.06 6.85,4.46 2.18,1.38 2.96,4.25 5.62,5.01 2.99,1.95 3.36,6.38 7.26,7.24 3.61,0.62 3.77,4.77 5.34,7.38 0.38,3.35 2.02,4.84 4.79,5.96 3.36,1.79 1.76,7.23 5.67,8.16 3.63,-1.38 5.8,-4.63 8.38,-7.34 -2.35,-3.93 0.29,-3.32 3.01,-4.44 1.95,-2.4 5.02,-3.3 6.25,-6.28 2.17,-2 3.86,-4.52 5.4,-6.9 2.81,-0.17 3.42,-3.58 4.92,-5.03 -0.28,-4.13 1.3,-7.89 3.12,-11.47 1.03,-2.11 7.03,-4.5 3.47,-6.34 -5.97,-5.35 -12.78,-9.5 -19.71,-13.47 -4.45,-2.68 -9.74,-0.07 -14.57,-0.06 -2.57,-0.23 -6.63,2.48 -7.32,-1.28 -1.66,-4.5 -6.93,-2.82 -10.63,-2.96 -2.8,0.07 -5.61,0.14 -8.41,0.21z","name":"South Carolina"},"ky":{"path":"m675,267.5c-2.76,-0.77 -6,1.11 -3.38,3.78 1.52,3.15 -3.12,4.12 -5.19,5.27 -2.94,0.53 -4.71,1.29 -4.3,4.82 -1.15,2.66 -5.3,3.24 -6.32,6.32 -2.16,1.4 0.74,6.22 -2.84,5.92 -3.06,0.61 -4.36,-2.79 -7.09,0.11 -2.26,0.51 -1.1,6.98 -3.85,3.1 -2.27,-2.54 -5.57,0.14 -6.16,2.81 -1.91,1.07 -3.4,-3.73 -6.02,-1.91 -3.32,0.61 -7.48,0.47 -9.92,2.91 0.08,2.65 -3.39,3.78 -1.7,6.05 2.34,2.66 -2.23,2.68 -3.86,3.3 -3.57,1.35 -0.68,4.35 -0.76,6.72 0.33,3.45 -3.76,1.44 -5.49,0.72 -2.5,-2.29 -6.26,-0.38 -7.13,2.53 2.86,2.28 -0.04,4.76 0.41,7.66 -3.47,2.04 -3.19,2.73 0.94,2.35 5.84,0.01 11.64,-0.95 17.5,-0.76 -0.7,-3.74 0.98,-4.99 4.56,-4.19 24.33,-3.01 48.82,-4.7 73.16,-7.43 4.3,-0.7 8.2,-2.38 11.75,-4.88 3.3,-0.8 4.04,-2.71 5.12,-5.35 3.46,-4.09 7.13,-8.06 10.79,-12 -3.27,-1.24 -3.03,-5.51 -6.21,-6.95 -2.6,-1.25 -2.07,-4.66 -5.16,-5.36 -2.38,-2.64 0.8,-7.28 -3.02,-8.87 -3.02,-0.01 -2.37,-4.65 -4.57,-3.51 -2.95,0.61 -3.67,4.78 -7.02,3.29 -2.69,-0.23 -5.51,-1.19 -7.82,0.71 -3,0.83 -3.99,-3.61 -7.44,-2.06 -3.51,0.82 -2.17,-5.19 -5.65,-5.26C677.17,266.43 676.21,267.17 675,267.5z","name":"Kentucky"},"al":{"path":"m628.53,359.63c-0.2,14.37 0.12,28.75 -0.54,43.12 -0.04,9.01 -0.88,18.1 -0.07,27.07 1.55,10 2.94,20.01 3.85,30.09 3.07,1.09 3.69,-1.92 4.4,-4.18 -0.3,-3.89 4.27,-3.02 4.89,-0.04 0.72,2.06 4.08,5.27 0.77,6.65 -0.15,0.92 6.17,-0.9 5.88,-2.89 -0.44,-3.01 0.64,-6.86 -2.87,-8.19 -2.29,-0.88 -3.03,-5.59 -0.32,-5.67 14.08,-1.86 28.21,-3.59 42.35,-4.8 2.7,1.07 6.76,-0.25 2.97,-2.5 -1.8,-2 0.95,-5.03 -0.27,-7.65 -0.31,-3.1 -2.63,-5.9 -1.31,-9.15 0.01,-2.92 2.49,-5.36 1.93,-8.3 -3.52,-0.45 -1.34,-5.11 -4.26,-6.7 -3.48,-5.82 -3.36,-13.04 -5.96,-19.21 -2.02,-8.09 -3.34,-16.41 -7.25,-23.88 -0.51,-2.39 -1.08,-4.85 -0.72,-7.31 -14.49,1.18 -28.98,2.35 -43.47,3.53z","name":"Alabama"},"la":{"path":"m521.09,407.28c0.1,7.53 -0.24,15.32 1.67,22.61 2.08,2.49 2.82,5.51 3.15,8.67 1.87,2.78 5.27,4.95 4.59,8.72 1.61,2.18 -0.21,5.69 0.08,8.38 0.42,2.64 -4.36,4.89 -2.01,7.12 1.07,2.26 -0.92,5.31 -0.53,7.95 0.38,3.22 -2.37,5.7 -1.55,8.93 5.18,-2.4 10.98,-0.86 16.47,-1.09 5.72,1.7 11.56,4.87 17.56,4.26 2.93,-2.25 5.94,0.36 8.98,0.93 1.08,-3.4 -4.22,-0.81 -5.8,-2.2 -1.91,-0.36 -2.89,-2.3 -1.17,-3.4 2.08,-1.1 4.08,-1.09 5.66,0.04 2.15,-1.39 5.6,-0.24 6.26,2.38 -0.33,3.62 3.42,1.7 5.28,3.15 3.83,1.5 -1.41,4.07 0.83,5.37 2.88,0.97 5.73,2.94 8.62,3.29 3.51,-0.05 2.81,-4.53 6.47,-4.17 1.83,-2.9 4.44,-0.25 4.39,2.31 1.53,1.64 4,-3.68 1.98,-3.66 0.22,-3.37 2.17,-3.21 4.31,-5.41 1.59,0.95 0.91,2.82 1.41,4.16 3.33,0.39 7.44,1.09 9.34,4.06 2.79,0.08 5.17,1.1 5.56,-2.56 -2.68,-0.27 -4.15,-3.88 -7.35,-3.19 -2.31,0.06 -6.3,-1.62 -6.15,-3.77 1.62,-3.62 2.23,-1.74 2.03,-4.38 2.88,1.09 5.69,-2.27 3.22,-4.47 0.46,-4.62 -3.73,-0.15 -3.34,2.19 -1.36,1.21 -6.35,-0.96 -4.6,-3.27 1.71,-1.84 4.2,-4.5 2.19,-6.95 -0.13,-3.26 -2.69,-5.21 -4.47,-7.38 0.52,-2.7 2.26,-7.35 -2.36,-5.46 -10.43,1.28 -20.97,0.69 -31.45,1.12 -1.61,-3.72 -0.02,-7.76 0.16,-11.59 2.66,-4.86 5.46,-9.65 8.25,-14.44 -2.04,-2.82 3.52,-4.45 -0.74,-6.48 -0.53,-2.15 -1.29,-4.65 -2.32,-6.83 -0.08,-3.1 0.9,-7.3 -3.62,-5.79 -17,0.28 -34,0.57 -51,0.85z","name":"Louisiana"},"ms":{"path":"m591.03,363.5c-1.45,1.74 -4.03,3.15 -4.63,6.03 -1.4,2.22 1.43,5.74 -2.69,6.07 -1.48,1.97 -4.77,4.42 -3.4,7.17 -1.36,1.83 -3.59,3.95 -3.48,7.01 -2.16,2.66 1.55,5.28 -0.27,7.12 -0.45,1.84 2.25,4.42 1.35,7.03 -1.92,2.71 -1.63,6.55 -0.61,9.53 1.6,2.4 0.78,5.54 3.73,6.94 -0.95,2.53 -1.41,3.75 -1.87,6.31 -2.55,4.96 -6.07,9.62 -7.89,14.84 0.01,2.98 -1.44,6.14 -0.14,8.97 11.4,-0.36 22.87,0.25 34.19,-1.5 2.75,2.21 -2.19,6.39 1.33,8.15 2.82,1.62 2.28,5.18 3.89,7.63 2.07,-1.86 2.51,-6.19 5.82,-4.07 3.21,-0.67 6.85,-3.02 9.89,-0.64 3.62,0.73 6.01,-0.27 4.42,-4.26 -0.81,-10.1 -2.99,-20.07 -3.84,-30.15 0.14,-21.99 1.48,-43.98 0.64,-65.97 -12.15,1.26 -24.29,2.52 -36.44,3.78z","name":"Mississippi"},"ia":{"path":"m476.25,181.16c-3.42,-0.05 -2.16,5.68 0.72,6.29 0.54,2.07 -0.75,5.06 -1.41,7.35 -2.13,2.82 -0.93,5.45 1.04,7.92 1.22,4.34 2.24,8.85 4.05,13.06 0.6,3.22 1.29,6.38 3.41,9 0.02,3.49 1.27,6.69 2.3,9.91 -0.04,3.54 0.03,7.05 2.08,10.09 22.2,-1.02 44.44,-1.75 66.66,-2.63 0.77,1.43 3.25,7.11 4.37,4.25 -0.96,-2.5 1.19,-4.52 3.57,-4.72 -0.88,-2.62 1.19,-4.59 2.5,-6.28 1.27,-2.92 -1.39,-4.02 -2.41,-6.31 0.69,-2.9 1.79,-5.3 5.13,-5.46 2.88,-0.83 6.57,-1.81 6.65,-5.41 1.76,-3.04 3.73,-8.01 -0.26,-10.18 -2.74,-1.06 -1.75,-5.27 -5.21,-5.14 -0.64,-1.97 -0.85,-4.76 -4.19,-4.21 -2.75,-0.8 -4.55,-3.47 -5.37,-6 -1.36,-2.89 2.01,-4.72 1.65,-7.28 -3.82,-0.4 -1.19,-6.5 -5.03,-5.47 -26.75,0.41 -53.5,0.81 -80.25,1.22z","name":"Iowa"},"mn":{"path":"m497.03,53.84c-0.69,2.52 0.93,7.42 -1.31,8.34 -9.65,-0.01 -19.29,-0.02 -28.94,-0.03 1.16,2.87 2.18,5.76 0.97,8.81 0.05,5.74 -0.79,11.86 2.51,16.95 2.04,3.78 0.64,8.47 1.5,12.6 0.82,6.84 1.76,13.67 3.55,20.32 0.05,3.83 0.88,7.8 0.03,11.53 -1.57,1.74 -4.91,3.29 -2.22,5.78 1.89,1.83 5.05,2.94 4.58,6.1 0.28,11.9 0.25,23.83 0.42,35.75 26.72,-0.38 53.44,-0.75 80.16,-1.13 -0.15,-3.62 -0.46,-7.93 -4.36,-9.47 -3.02,-1.66 -6.24,-3.1 -7.63,-6.5 -0.72,-3.61 -5.32,-1.16 -6.05,-4.61 -1.56,-2.09 -5.29,-0.37 -6.57,-3.78 -1.66,-2.1 -0.52,-5.5 -1.1,-8.1 -1.34,-2.93 1.65,-4.99 1.47,-7.54 -0.2,-3.22 -5.36,-3.85 -2.24,-7.43 0.41,-4.47 5.39,-5.33 7.61,-8.59 0.24,-3.87 -0.73,-8.14 0.52,-11.77 1.76,-3.14 5.17,-5.1 8.28,-6.26 1.92,-2.08 3.66,-4.57 6.13,-5.81 2.54,-4.97 6.04,-9.99 11.81,-11.4 4.55,-1.98 9.12,-3.92 13.6,-6.04 0.73,-3.15 -3.7,-0.18 -5.06,0.03 -0.82,-3.87 -4.2,-3.09 -7.28,-2.87 -2.25,-0.87 -5.34,2.83 -6,-0.66 -1.13,-3.5 -4.51,0.72 -5.88,2.13 -2.33,1.63 -6.22,1.16 -8.06,-0.56 0.94,-3.05 -4.61,-0.39 -4.53,-3.96 -0.16,-2.3 -3.48,1.3 -5.77,-1.2 -3.04,-0.91 -5.5,-3.22 -8.29,-4.38 -2.49,0.4 -5.86,-2.38 -6.7,1.5 -1.17,0.79 -7.15,1.83 -5.93,-1.54 -2.99,0.03 -6.03,-0.05 -7.53,-1.75 -2.6,0.59 -5.72,-0.41 -5.9,-3.43 -0.88,-3.28 -1.44,-6.61 -1.88,-9.98 -1.23,-0.6 -2.54,-1.02 -3.91,-1.06z","name":"Minnesota"},"ok":{"path":"m363.31,330.03c17.51,1.12 35.04,1.73 52.56,2.47 -1.37,13.62 -2.89,27.23 -2.83,40.93 -0.92,3.93 3.48,5.78 6.14,7.66 0.56,-5.56 2.96,1.46 4.25,-1.31 0.93,-1.5 5.57,1.68 3.39,4.42 1.59,0.66 4.76,0.51 6.73,1.82 2.79,-0.99 5.16,3.32 7.03,1.26 1.82,-1.93 5.59,-0.31 6.5,2.02 2.44,0.79 1.71,5.84 4.76,3.05 1.39,-1.65 6.25,-1.17 6.69,1.21 1.28,1.5 5.69,3.72 7.39,1.92 0.33,-2.75 3.38,-5.95 4.59,-1.83 3.59,0.38 6.96,2 10.46,3 2.28,-1.86 2.44,-4.68 6.53,-3.41 2.53,1.92 3.8,-1.41 6.31,-1.16 0.85,2.42 5.2,2.41 6.19,-0.5 3.2,-0.2 3.66,3.71 6.55,4.35 1.86,0.4 6.31,3.63 5.36,0.18 -0.32,-12.27 0.1,-24.59 -0.7,-36.82 -1.15,-6.03 -1.01,-12.18 -1.43,-18.25 -1.32,-5.29 -2.05,-10.73 -2.07,-16.18 -20.01,0.66 -40.04,-0.04 -60.06,-0.22 -27.85,-1.32 -55.73,-2.3 -83.53,-4.56 -0.27,3.31 -0.54,6.63 -0.81,9.94z","name":"Oklahoma"},"tx":{"path":"m359.47,330.97c2.34,-0.11 -0.86,-1.81 0,0z m0.72,18.31c-1.64,20.84 -2.52,41.75 -4.68,62.55 -0.51,4.33 -0.99,8.66 -1.51,12.98 -17.84,-0.87 -35.67,-1.93 -53.42,-3.89 -4.16,-0.41 -8.32,-0.76 -12.48,-1.11 -0.67,3.74 2.27,3.68 4.04,6.12 2.26,1.83 1.13,6.03 4.65,6.5 3.52,0.48 2.9,4.6 5.45,6.34 3.38,3.15 5.5,7.91 10.27,9.06 1.91,1.27 4,3.22 4.53,5.46 0.69,3.96 4.53,7.02 3.47,11.33 -0.88,5.15 2.22,9.63 5.93,12.88 2.18,2.95 5.14,4.76 8.63,5.78 1.88,1.95 3.01,3.88 5.72,4.88 2.59,0.18 5.38,4.34 7.35,1.18 2.59,-3.14 5.48,-6.41 6.05,-10.55 1.26,-2.82 3.58,-4.32 6.5,-5.06 2.72,-1.59 5.32,-2.13 7.47,0.62 4.91,0.57 10.2,0.53 14.79,2.22 2.83,1.43 2.56,4.53 5.17,6.33 1.73,2.05 4.83,3.37 5.81,5.82 1.37,2.07 2.66,4.26 2.69,7.03 1.62,4.34 4.17,8.51 5.31,12.94 -0.24,2.77 4.65,2.49 4.95,5.51 2.24,4.08 4.37,9.17 9.21,10.49 3.28,2 0.03,5.04 0.91,7.5 3.28,0.87 -0.01,4.68 0.94,6.67 2.53,1.36 4.37,3.2 4.22,6.44 0.39,3.34 2.13,6.83 5.69,7.54 3.01,1.93 6.69,2.13 9.87,3.4 2.28,1.79 5.15,4.09 8.16,2.83 3.46,0.46 6.77,1.29 9.37,3.75 1.43,2.54 6.51,-0.91 4.31,-2.89 -2.04,-3.39 -1.3,-7.79 -2.83,-11.46 -0.63,-3.07 -2.39,-5.95 -0.99,-9.1 1.17,-4.9 2.87,-9.76 4.04,-14.71 -3.37,-1.01 -2.07,-5.47 1.21,-4.71 3.99,0.42 3.65,-6.43 7.81,-6.05 5.25,-1.56 9.07,-6 14.16,-8.05 6.91,-2.81 13.62,-6.46 18.72,-12.05 2.58,-2.98 7.09,-3.95 8.69,-7.75 5,-2.22 9.8,-4.93 15.22,-6 -0.97,-2.64 0.52,-4.86 1.32,-7.22 0.39,-2.99 0.19,-6.07 1.18,-8.94 -3.15,-2.27 0.38,-4.91 1.38,-7.41 -0.2,-2.8 1.42,-6.25 0.09,-8.66 0.3,-2.93 -1.49,-5.14 -3.35,-7.29 -2.46,-2.64 -1.11,-6.91 -3.87,-9.52 -2.53,-4.57 -1.59,-10.19 -2.25,-15.22 0.02,-5 0.19,-10 -0.5,-14.97 -2.63,-2.31 -5.52,2.33 -7.52,-1.37 -3.1,-2.07 -7.66,-2.1 -9.73,-5.68 -2.31,-2.48 -3.82,2.84 -7.18,0.96 -1.91,-2.73 -3.59,0.03 -5.98,0.18 -2.27,-1.15 -6.07,-1.48 -6.09,1.76 -2.76,2.37 -5.95,-0.93 -8.94,-1.28 -3,1.38 -5.23,-3.83 -6.3,-1.87 -0.15,2.66 -2.52,5.1 -5.13,3.34 -3.23,-0.15 -4.91,-2.49 -6.57,-3.89 -2.95,-1.74 -4.3,2.32 -6.94,0.88 -1.48,-1.39 -1.87,-3.6 -3.92,-5.65 -3.06,-2.83 -5.03,3.17 -7.13,0.23 -2.05,-2.11 -5.57,-0.83 -7.94,-2.69 -3.56,0.59 -5.54,-0.24 -4.13,-4.11 -1.89,-1.85 -2.28,1.21 -4.77,-0.14 -0.59,-0.41 -3.45,1.78 -5,-1.11 -1.9,-1.9 -5.13,-3.22 -4.18,-6.45 0.03,-10.58 0.25,-21.15 1.66,-31.65 0.3,-2.99 0.6,-5.98 0.89,-8.98 -17.65,-0.63 -35.3,-1.27 -52.94,-2.22 -0.52,6.07 -1.04,12.15 -1.56,18.22z M466.53,518.63c-5.2,7.17 2.93,-3.27 0,0z","name":"Texas"},"nm":{"path":"m242.72,428.78c4.82,0.63 9.65,1.25 14.47,1.88 0.43,-3.33 0.85,-6.67 1.28,-10 9.7,0.89 19.4,1.86 29.09,2.78 -0.9,-3.14 -1.39,-5.98 2.84,-4.5 18.29,1.28 36.48,3.79 54.81,4.49 2.45,-0.6 7.66,2.13 7.99,-1.01 3.06,-22.93 3.75,-46.09 5.59,-69.14 0.54,-7.79 1.39,-15.56 2.02,-23.34 3.21,0.65 1.17,-4.81 2.07,-6.86 1.79,-4.38 -2.87,-3.37 -5.73,-3.85 -32.35,-3.3 -64.71,-6.59 -97.06,-9.89 -5.79,39.81 -11.58,79.63 -17.38,119.44z","name":"New Mexico"},"ks":{"path":"m380.53,320.34c25.06,1.17 50.11,2.71 75.19,3.35 17.22,0.07 34.44,0.63 51.66,0.18 -0.25,-12.69 0.23,-25.42 -0.47,-38.08 -0.61,-2.83 -0.17,-6.27 -1.38,-8.74 -3.04,-2.03 -6.02,-5.19 -6.68,-8.77 -0.43,-2.51 4.3,-4.59 1.29,-6.64 -3.02,0.54 -4.05,-3.34 -7.17,-2.43 -36.21,-0.82 -72.43,-1.33 -108.63,-2.5 -1.27,21.21 -2.54,42.42 -3.81,63.63z","name":"Kansas"},"ne":{"path":"m353.38,230.59c10.76,0.96 21.27,2.72 32.03,3.66 -0.37,7.11 -0.71,14.23 -1.06,21.34 36.49,1.29 73,1.84 109.5,2.56 -0.31,-1.17 -3.13,-4.05 -4.03,-6.15 -1.99,-2.11 -0.36,-5.13 -2.45,-7.34 -2.42,-3.19 -1.66,-7.14 -2.2,-10.79 -1.66,-2.86 -1.45,-6.25 -2.29,-9.26 -2.94,-2.85 -2.34,-7.01 -3.95,-10.49 -1.13,-3.1 -2.18,-6.19 -2.62,-9.47 -3.51,1.32 -2.89,-3.07 -4.85,-4.29 -2.4,-1.68 -5.57,-1.85 -7.72,-3.93 -3.79,0.07 -7.65,1.04 -11.13,1.94 -2.52,-2.2 -6.03,-3.13 -7.91,-6.06 -13.61,0.96 -27.23,-0.49 -40.83,-1.11 -15.5,-1.05 -31.02,-1.79 -46.51,-2.86 -1.67,14.08 -2.83,28.17 -4,42.25z","name":"Nebraska"},"sd":{"path":"m357.44,187.41c25.68,1.58 51.37,3.15 77.06,4.26 3.58,-0.01 7.34,-0.51 10.81,-0.23 1.8,2.9 5.24,3.85 7.69,6 3.55,-1.45 7.52,-1.89 11.25,-1.91 2.45,2.67 7.26,2.29 9.15,5.33 1.32,4.76 3.27,1.86 0.18,-1.15 -1.53,-2.17 1.46,-4.6 1.56,-6.99 1.2,-2.87 1.38,-5.28 -1.58,-6.75 -0.5,-2.04 -0.73,-6.65 2.41,-5.84 2.62,-0.28 0.39,-5.28 1.06,-7.5 -0.32,-9.7 0.19,-19.47 -0.64,-29.13 -0.24,-3.58 -6.26,-4.19 -5.42,-8.4 1.09,-1.22 5.81,-4.38 2.75,-5.4 -27.23,-0.89 -54.5,-1.01 -81.67,-3.15 -9.79,-0.62 -19.57,-1.24 -29.36,-1.86 -1.75,20.91 -3.5,41.81 -5.25,62.72z","name":"South Dakota"},"nd":{"path":"m362.88,123.72c26.46,1.49 52.89,3.7 79.4,3.91 10.84,0.26 21.67,0.52 32.51,0.78 0.01,-5.53 -1.38,-10.82 -2.5,-16.17 -1.27,-7.42 -2.05,-14.89 -2.13,-22.42 -2.61,-4.16 -4.11,-9 -3.48,-13.94 -0.44,-3.25 0.67,-6.57 0.3,-9.7 -0.15,-4.01 -2.83,-4.61 -6.31,-4.12 -25.15,-0.47 -50.33,-1.05 -75.41,-3.06 -5.17,-0.49 -10.33,-0.98 -15.5,-1.47 -2.29,22.06 -4.58,44.13 -6.88,66.19z","name":"North Dakota"},"wy":{"path":"m240.16,217.84c37.4,4.49 74.29,8.23 111.69,12.72 2.5,-29.2 5.5,-57.65 8,-86.84 -35.26,-4.45 -70.52,-8.9 -105.78,-13.34 -4.64,29.16 -9.27,58.31 -13.91,87.47z","name":"Wyoming"},"mt":{"path":"m192.59,52.19c0.84,2.76 3.25,5.4 3.2,8.23 -1.5,2.79 -1,5.49 0.52,8.15 3.4,0.39 4.18,3.44 5.26,6.16 1.43,3.34 2.55,6.88 5.37,9.34 0.88,2.21 5.27,1.18 4.34,4.72 -2.23,6.21 -5.45,12.23 -7.06,18.56 0.02,3.34 3.4,5.25 5.73,2.22 1.61,-2.43 5.63,-3.04 4.69,0.97 -0.5,5.3 1.81,10.35 2.59,15.53 1.9,2 5.27,3.44 5.68,6.31 -0.71,1.91 -0.39,8.78 2.32,5.14 1.85,-1.89 4.93,-0.29 6.85,0.86 3.28,-1.63 7.26,-1.21 10.34,0.69 3.69,0.41 1.52,-5 5.95,-4.08 2.71,-0.42 2.01,6.69 3.21,4.1 0.56,-3.26 1.09,-6.54 1.68,-9.8 35.57,4.49 71.15,8.96 106.72,13.44 2.9,-28.44 5.79,-56.88 8.69,-85.31 -28.84,-2.29 -57.55,-5.91 -86.19,-9.99 -26.71,-4.12 -53.36,-8.71 -79.73,-14.68 -3.05,-0.61 -6.99,-2.59 -6.53,2.19 -1.21,5.75 -2.42,11.51 -3.62,17.26z","name":"Montana"},"co":{"path":"m260.17,308.53c39.89,4.09 79.51,8.26 119.39,11.91 1.61,-28.46 3.23,-56.92 4.84,-85.38 -37.47,-4.17 -74.94,-8.33 -112.41,-12.5 -4.03,28.98 -7.8,56.99 -11.83,85.97z","name":"Colorado"},"id":{"path":"m169.84,91.72c0.52,3.07 2.27,5.25 4.94,6.78 0.4,3.02 -0.61,5.46 -3.03,7.31 -2.3,2.7 -4.38,5.97 -6.09,8.83 0.39,2.93 -2.57,3.54 -4.23,4.8 -1.77,2.31 -4.28,4.3 -3.93,7.5 -0.64,2.43 4.69,0.57 4.09,4.34 -5.19,11.17 -6.78,23.51 -10.13,35.32 -0.79,3.16 -1.22,4.91 -2.01,8.08 56.92,12.84 62.26,13.45 93.58,19.41 2.75,-17.6 5.5,-35.21 8.25,-52.81 -2.66,-0.84 -0.58,-6.52 -4.23,-4.97 -1.24,1.7 -1.62,4.95 -5.17,3.47 -3.11,-1.99 -6.81,-1.34 -10.13,-0.56 -2.53,-1.76 -5.91,-2.01 -7.69,0.88 -1.75,-0.05 -3.29,-3.39 -2.79,-5.36 1.91,-3.98 -2.85,-5.89 -5.05,-8.27 -0.98,-5.88 -3.48,-11.64 -2.5,-17.69 -1.86,-0.01 -4.25,2.69 -6.47,3.63 -2.21,0.18 -4.52,-3.09 -4.1,-5.31 1.19,-5.37 4.07,-10.37 5.88,-15.6 1.95,-2.64 1.12,-5.57 -2.41,-5.62 -1.55,-3.37 -4.92,-5.66 -5.61,-9.53 -1.31,-2.63 -1.42,-6.47 -5.06,-6.76 -0.99,-1.85 -3.18,-4.47 -1.91,-6.73 2.09,-2.98 -0.34,-5.7 -1.53,-8.5 -2.13,-3.05 0.55,-6.68 0.67,-10.01 0.9,-4.35 1.8,-8.69 2.69,-13.04 -4.18,-0.78 -8.35,-1.56 -12.53,-2.34 -4.5,20.92 -9,41.83 -13.5,62.75z","name":"Idaho"},"ut":{"path":"m176.34,297.78c27.57,3.92 55.15,7.83 82.72,11.75 4.04,-29.08 8.08,-58.17 12.13,-87.25 -10.83,-1.14 -21.65,-2.33 -32.47,-3.59 1.43,-7.93 2.82,-15.85 3.84,-23.84 -15.27,-2.85 -30.54,-5.71 -45.81,-8.56 -6.8,37.17 -13.6,74.33 -20.41,111.5z","name":"Utah"},"az":{"path":"m173.19,314.66c-2.49,-0.06 -3.05,4.43 -6.38,2.94 -0.74,-2.87 -3.59,-2.82 -5.59,-4.22 -3.74,0.74 -2.37,4.58 -2.68,7.41 -0.52,5.04 -0.42,10.21 -0.89,15.22 -2.19,2.33 -2.44,5.78 -0.24,8.19 2.32,2.62 0.58,7.52 4.09,9.09 0.98,3.59 -2.89,4.83 -5.41,6.09 -3.29,2.46 -3.28,6.86 -3.88,10.47 -1.25,2.44 -4.81,2.39 -4.92,4.97 0.47,2.18 6.18,0.38 3.42,4.54 -0.65,2.75 -3.14,3.45 -5.62,3.78 -3.6,1.45 -2.69,4.7 0.77,5.44 14.69,7.84 28.52,17.13 43.01,25.32 5.79,3.19 11.27,7.21 17.27,9.88 11.71,2.83 23.75,3.45 35.68,4.87 5.71,-39.38 11.42,-78.75 17.13,-118.13 -27.58,-3.93 -55.17,-7.85 -82.75,-11.78 -1,5.31 -2,10.63 -3,15.94z","name":"Arizona"},"nv":{"path":"m84.84,232.41c22.96,34.61 45.92,69.23 68.88,103.84 3.66,2.65 3.19,-3.47 3.27,-5.71 0.37,-5.43 0.36,-11.24 1.08,-16.44 2.05,-2.03 4.26,-2 6.08,-0.39 2.62,-0.16 3.86,5.9 6.03,1.27 2.74,-0.82 2.66,-3.64 3.13,-6.41 7.5,-40.87 15,-81.75 22.51,-122.62 -30.72,-6.81 -61.44,-13.63 -92.16,-20.44 -6.27,22.3 -12.54,44.6 -18.81,66.91z","name":"Nevada"},"or":{"path":"M67.16,62.81C64.24,70.42 62.73,78.57 58.5,85.63c-2.86,8.53 -5.96,16.93 -10.17,24.89 -3.06,6.61 -8,12.31 -11.32,18.7 -1.03,6.5 -0.64,13.05 -0.36,19.6 37.23,8.7 74.46,16.69 111.69,25.39 3.45,-13.15 6.51,-25.75 10.19,-38.81 1.2,-2.48 3.15,-6.06 -1.1,-5.42 -2.58,-1.78 -0.23,-4.45 -0.38,-6.91 2.3,-2.82 4.36,-5.82 7.47,-7.75 1.75,-5.08 5.43,-9.19 9.03,-13.06 1.66,-3.48 -2.46,-3.92 -3.39,-6.47 -0.25,-3.79 -3.56,-4.26 -6.62,-4.99 -7.63,-2.2 -15.38,-4.2 -23.21,-5.54 -4.9,0.03 -9.79,0.06 -14.69,0.09 -0.95,-2.84 -4.67,1.86 -7.11,0.5 -2.61,0.82 -4.42,-2.63 -6.57,-1.28 -2.61,-0.06 -5.23,0.11 -7.15,-1.87 -3.09,-1.53 -6.33,-1.81 -9.5,-3.1 -1.87,3.03 -5.69,1.22 -8.53,1.31 -1.65,-1.64 -5.79,-3.02 -6.03,-4.81 1.1,-2.44 0.78,-5.93 0.53,-8.59 -0.42,-3.92 -4.72,-2.63 -6.25,-4.49C74.59,58.67 69.45,62.45 67.16,62.81z","name":"Oregon"},"wa":{"path":"m101.38,8.72c0.05,2.75 2.93,5.39 3.25,8.16 -1.92,2.33 -1.78,5.19 -1.32,7.71 -1.81,2.64 1.63,4.82 0.67,7.42 -3.6,1.52 -2.43,-3.7 -4.86,-4.99 -3.34,-2.24 1.47,-3.87 1.17,-5.42 -2.5,-1.11 -2.24,3.88 -3.69,4.17C92.33,26.39 88.86,23.04 84.76,22.57 79.82,20.66 75.28,17.69 72.25,13.25c-3.13,-0.98 -1.96,4.97 -3.25,6.95 -0.63,2.8 2.59,5.06 1.41,8.21 0.52,3.86 -1.29,7.55 0.18,11.29 -1.06,2.88 4.75,5.54 2.94,6.39 -3.45,-1.05 -6.2,3.2 -2.25,4.34 1.57,0.97 -0.61,6.32 -3.3,5.43 -1.83,2.15 1.28,6.86 4.14,4.17 3.77,-1.55 2.75,3.51 5.83,3.13 2.81,-0.24 4.26,3.31 4.54,5.61 0.04,2.48 -0.15,6.02 -0.26,7.78 2.63,1.76 5.01,4.26 8.46,3.62 3.2,0.66 4.7,-3.26 7.97,-0.5 3.01,0.48 6.37,1.55 8.79,3.66 3.03,0.92 6.02,-1.78 8.19,1.05 3.44,1.3 6.67,0.03 9.84,-1.4 0.99,1.78 4.42,1.32 7,1.3 5.35,-0.19 10.68,-0.16 15.82,1.55 6.99,1.44 13.78,3.45 20.65,5.4 4.47,-20.85 8.94,-41.71 13.41,-62.56 -19.81,-3.93 -39.37,-9.21 -58.73,-14.66 -7.27,-1.53 -14.4,-3.52 -21.46,-5.87L101.75,8.45 101.38,8.72z M95.5,15.16C94.05,13.72 92.15,14.26 94.72,17.63 94.39,13.84 99.19,18.11 98.98,14.18 98.24,12.75 96.05,14.08 95.5,15.16z m2.31,1.91c-3.13,3.04 1.36,2.18 0.16,-0.25l-0.16,0.25z","name":"Washington"},"ca":{"path":"m35.06,153.94c-0.1,4.04 0.4,8.21 -1.99,11.75 -1.86,3.68 -2.55,8.24 -6.48,10.38 -1.19,2.11 -3.49,3.38 -3.59,6.45 -1.94,3.49 2.49,5.65 2.91,8.98 1.54,3.39 2.34,6.94 1.63,10.65 0,2.92 -2.79,5.01 -2.24,8.14 0.05,2.97 -2.24,5.87 0.04,8.54 2.58,5 6.38,9.93 6.71,15.69 -0.54,2.77 -0.99,5.37 1.81,7.17 1.6,1.95 4.49,3.66 2.79,6.46 -1.73,3.87 -1.14,8.04 -1.09,12.16 1.68,2.67 2.83,6.76 6.66,6.53 1.48,2.33 0.97,4.84 -0.22,7.13 -2.5,1.53 -4.36,2.73 -3.66,6.08 0.27,3.49 4.27,5.34 4.36,9.01 1.46,6.2 4.13,11.92 7.59,17.25 0.71,2.57 2.16,4.34 2.9,6.41 -0.24,3.33 -1.93,6.49 -2.41,9.87 -1.66,2.61 1.19,5.52 3.99,5.12 4.03,0.15 7.27,3.31 11.01,4.04 3,-0.55 4.74,2.9 6.07,5.11 1.54,2.71 2.37,6 5.76,6.88 2.51,1.14 6.19,0.05 7.17,3.45 2.41,2.72 -2.39,5.05 1.41,5.17 2.73,1.87 5.56,-1.74 7.56,-0.74 2.13,2.06 4.05,4.2 4.93,7.05 4.3,4.9 1.44,11.77 2.79,17.52 14.73,1.94 29.44,4.72 44.27,5.38 2.78,1.19 6.19,-4.43 2.84,-4.65 -3.13,0.64 -2.83,-4.02 -1.36,-4.66 3.15,-0.88 4.92,-3.83 4.65,-7.04 0.47,-3.98 3.27,-7.43 7.22,-8.4 3.43,-2.04 -0.33,-3.58 -0.79,-5.79 -0.23,-3.65 -1.95,-6.81 -3.62,-9.89 2.02,-3.66 -2.22,-3.32 -3.16,-6.24 -22.6,-34.1 -45.2,-68.19 -67.81,-102.29 6.27,-22.44 12.54,-44.88 18.81,-67.31 -22.04,-5.16 -44.08,-10.31 -66.13,-15.47 -0.45,1.38 -0.9,2.75 -1.34,4.13z m24.13,184.72c-0.27,3.05 7.99,3.06 4.7,2.07 -1.63,-0.35 -3.17,-2.46 -4.7,-2.07z m-5.16,0.38c0.33,3.71 5.81,0.51 1.31,-0.04 -0.44,0.01 -0.88,0.02 -1.31,0.04z M79.69,357.5c-0.2,1.58 4.42,6 3.16,2.37C82.22,358.91 80.8,357.6 79.69,357.5z M77.75,369.13c-0.14,1.55 3.2,3.89 1.32,1.26C78.6,369.72 77.39,366.55 77.75,369.13z","name":"California"}}});
Index: public/vendors/vmap/maps/jquery.vmap.world.js
===================================================================
--- public/vendors/vmap/maps/jquery.vmap.world.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ public/vendors/vmap/maps/jquery.vmap.world.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,2 @@
+/** Add World Map Data Points */
+jQuery.fn.vectorMap('addMap', 'world_en', {"width":950,"height":550,"paths":{"id":{"path":"M781.68,324.4l-2.31,8.68l-12.53,4.23l-3.75-4.4l-1.82,0.5l3.4,13.12l5.09,0.57l6.79,2.57v2.57l3.11-0.57l4.53-6.27v-5.13l2.55-5.13l2.83,0.57l-3.4-7.13l-0.52-4.59L781.68,324.4L781.68,324.4M722.48,317.57l-0.28,2.28l6.79,11.41h1.98l14.15,23.67l5.66,0.57l2.83-8.27l-4.53-2.85l-0.85-4.56L722.48,317.57L722.48,317.57M789.53,349.11l2.26,2.77l-1.47,4.16v0.79h3.34l1.18-10.4l1.08,0.3l1.96,9.5l1.87,0.5l1.77-4.06l-1.77-6.14l-1.47-2.67l4.62-3.37l-1.08-1.49l-4.42,2.87h-1.18l-2.16-3.17l0.69-1.39l3.64-1.78l5.5,1.68l1.67-0.1l4.13-3.86l-1.67-1.68l-3.83,2.97h-2.46l-3.73-1.78l-2.65,0.1l-2.95,4.75l-1.87,8.22L789.53,349.11L789.53,349.11M814.19,330.5l-1.87,4.55l2.95,3.86h0.98l1.28-2.57l0.69-0.89l-1.28-1.39l-1.87-0.69L814.19,330.5L814.19,330.5M819.99,345.45l-4.03,0.89l-1.18,1.29l0.98,1.68l2.65-0.99l1.67-0.99l2.46,1.98l1.08-0.89l-1.96-2.38L819.99,345.45L819.99,345.45M753.17,358.32l-2.75,1.88l0.59,1.58l8.75,1.98l4.42,0.79l1.87,1.98l5.01,0.4l2.36,1.98l2.16-0.5l1.97-1.78l-3.64-1.68l-3.14-2.67l-8.16-1.98L753.17,358.32L753.17,358.32M781.77,366.93l-2.16,1.19l1.28,1.39l3.14-1.19L781.77,366.93L781.77,366.93M785.5,366.04l0.39,1.88l2.26,0.59l0.88-1.09l-0.98-1.49L785.5,366.04L785.5,366.04M790.91,370.99l-2.75,0.4l2.46,2.08h1.96L790.91,370.99L790.91,370.99M791.69,367.72l-0.59,1.19l4.42,0.69l3.44-1.98l-1.96-0.59l-3.14,0.89l-1.18-0.99L791.69,367.72L791.69,367.72M831.93,339.34l-4.17,0.47l-2.68,1.96l1.11,2.24l4.54,0.84v0.84l-2.87,2.33l1.39,4.85l1.39,0.09l1.2-4.76h2.22l0.93,4.66l10.83,8.96l0.28,7l3.7,4.01l1.67-0.09l0.37-24.72l-6.29-4.38l-5.93,4.01l-2.13,1.31l-3.52-2.24l-0.09-7.09L831.93,339.34L831.93,339.34z","name":"Indonesia"},"pg":{"path":"M852.76,348.29l-0.37,24.44l3.52-0.19l4.63-5.41l3.89,0.19l2.5,2.24l0.83,6.9l7.96,4.2l2.04-0.75v-2.52l-6.39-5.32l-3.15-7.28l2.5-1.21l-1.85-4.01l-3.7-0.09l-0.93-4.29l-9.81-6.62L852.76,348.29L852.76,348.29M880.48,349l-0.88,1.25l4.81,4.26l0.66,2.5l1.31-0.15l0.15-2.57l-1.46-1.32L880.48,349L880.48,349M882.89,355.03l-0.95,0.22l-0.58,2.57l-1.82,1.18l-5.47,0.96l0.22,2.06l5.76-0.29l3.65-2.28l-0.22-3.97L882.89,355.03L882.89,355.03M889.38,359.51l1.24,3.45l2.19,2.13l0.66-0.59l-0.22-2.28l-2.48-3.01L889.38,359.51L889.38,359.51z","name":"Papua New Guinea"},"mx":{"path":"M137.49,225.43l4.83,15.21l-2.25,1.26l0.25,3.02l4.25,3.27v6.05l5.25,5.04l-2.25-14.86l-3-9.83l0.75-6.8l2.5,0.25l1,2.27l-1,5.79l13,25.44v9.07l10.5,12.34l11.5,5.29l4.75-2.77l6.75,5.54l4-4.03l-1.75-4.54l5.75-1.76l1.75,1.01l1.75-1.76h2.75l5-8.82l-2.5-2.27l-9.75,2.27l-2.25,6.55l-5.75,1.01l-6.75-2.77l-3-9.57l2.27-12.07l-4.64-2.89l-2.21-11.59l-1.85-0.79l-3.38,3.43l-3.88-2.07l-1.52-7.73l-15.37-1.61l-7.94-5.97L137.49,225.43L137.49,225.43z","name":"Mexico"},"ee":{"path":"M517.77,143.66l-5.6-0.2l-3.55,2.17l-0.05,1.61l2.3,2.17l7.15,1.21L517.77,143.66L517.77,143.66M506.76,147.64l-1.55-0.05l-0.9,0.91l0.65,0.96l1.55,0.1l0.8-1.16L506.76,147.64L506.76,147.64z","name":"Estonia"},"dz":{"path":"M473.88,227.49l-4.08-1.37l-16.98,3.19l-3.7,2.81l2.26,11.67l-6.75,0.27l-4.06,6.53l-9.67,2.32l0.03,4.75l31.85,24.35l5.43,0.46l18.11-14.15l-1.81-2.28l-3.4-0.46l-2.04-3.42v-14.15l-1.36-1.37l0.23-3.65l-3.62-3.65l-0.45-3.88l1.58-1.14l-0.68-4.11L473.88,227.49L473.88,227.49z","name":"Algeria"},"ma":{"path":"M448.29,232.28h-11.55l-2.26,5.02l-5.21,2.51l-4.3,11.64l-8.38,5.02l-11.77,19.39l11.55-0.23l0.45-5.7h2.94v-7.76h10.19l0.23-10.04l9.74-2.28l4.08-6.62l6.34-0.23L448.29,232.28L448.29,232.28z","name":"Morocco"},"mr":{"path":"M404.9,276.66l2.18,2.85l-0.45,12.32l3.17-2.28l2.26-0.46l3.17,1.14l3.62,5.02l3.4-2.28l16.53-0.23l-4.08-27.61l4.38-0.02l-8.16-6.25l0.01,4.06l-10.33,0.01l-0.05,7.75l-2.97-0.01l-0.38,5.72L404.9,276.66L404.9,276.66z","name":"Mauritania"},"sn":{"path":"M412.03,289.84L410.12,290.31L406.18,293.18L405.28,294.78L405,296.37L406.43,297.40L411.28,297.34L414.40,296.5L414.75,298.03L414.46,300.06L414.53,300.09L406.78,300.21L408.03,303.21L408.71,301.37L418,302.15L418.06,302.21L419.03,302.25L422,302.37L422.12,300.62L418.53,296.31L414.53,290.87L412.03,289.84z","name":"Senegal"},"gm":{"path":"M406.89,298.34l-0.13,1.11l6.92-0.1l0.35-1.03l-0.15-1.04l-1.99,0.81L406.89,298.34L406.89,298.34z","name":"Gambia"},"gw":{"path":"M408.6,304.53l1.4,2.77l3.93-3.38l0.04-1.04l-4.63-0.67L408.6,304.53L408.6,304.53z","name":"Guinea-Bissau"},"gn":{"path":"M410.42,307.94l3.04,4.68l3.96-3.44l4.06-0.18l3.38,4.49l2.87,1.89l1.08-2.1l0.96-0.54l-0.07-4.62l-1.91-5.48l-5.86,0.65l-7.25-0.58l-0.04,1.86L410.42,307.94L410.42,307.94z","name":"Guinea"},"sl":{"path":"M413.93,313.13l5.65,5.46l4.03-4.89l-2.52-3.95l-3.47,0.35L413.93,313.13L413.93,313.13z","name":"Sierra Leone"},"lr":{"path":"M420.17,319.19l10.98,7.34l-0.26-5.56l-3.32-3.91l-3.24-2.87L420.17,319.19L420.17,319.19z","name":"Liberia"},"ci":{"path":"M432.07,326.75l4.28-3.03l5.32-0.93l5.43,1.17l-2.77-4.19l-0.81-2.56l0.81-7.57l-4.85,0.23l-2.2-2.1l-4.62,0.12l-2.2,0.35l0.23,5.12l-1.16,0.47l-1.39,2.56l3.58,4.19L432.07,326.75L432.07,326.75z","name":"Cote d'Ivoire"},"ml":{"path":"M419.46,295.84l3.08-2.11l17.12-0.1l-3.96-27.54l4.52-0.13l21.87,16.69l2.94,0.42l-1.11,9.28l-13.75,1.25l-10.61,7.92l-1.93,5.42l-7.37,0.31l-1.88-5.41l-5.65,0.4l0.22-1.77L419.46,295.84L419.46,295.84z","name":"Mali"},"bf":{"path":"M450.59,294.28l3.64-0.29l5.97,8.44l-5.54,4.18l-4.01-1.03l-5.39,0.07l-0.87,3.16l-4.52,0.22l-1.24-1.69l1.6-5.14L450.59,294.28L450.59,294.28z","name":"Burkina Faso"},"ne":{"path":"M460.89,302l2.55-0.06l2.3-3.45l3.86-0.69l4.11,2.51l8.77,0.25l6.78-2.76l2.55-2.19l0.19-2.88l4.73-4.77l1.25-10.53l-3.11-6.52l-7.96-1.94l-18.42,14.36l-2.61-0.25l-1.12,9.97l-9.4,0.94L460.89,302L460.89,302z","name":"Niger"},"gh":{"path":"M444.34,317.05l1.12,2.63l2.92,4.58l1.62-0.06l4.42-2.51l-0.31-14.29l-3.42-1l-4.79,0.13L444.34,317.05L444.34,317.05z","name":"Ghana"},"tg":{"path":"M455.22,321.25l2.68-1.57l-0.06-10.35l-1.74-2.82l-1.12,0.94L455.22,321.25L455.22,321.25z","name":"Togo"},"bj":{"path":"M458.71,319.49h2.12l0.12-6.02l2.68-3.89l-0.12-6.77l-2.43-0.06l-4.17,3.26l1.74,3.32L458.71,319.49L458.71,319.49z","name":"Benin"},"ng":{"path":"M461.57,319.37l3.92,0.19l4.73,5.27l2.3,0.63l1.8-0.88l2.74-0.38l0.93-3.82l3.73-2.45l4.04-0.19l7.4-13.61l-0.12-3.07l-3.42-2.63l-6.84,3.01l-9.15-0.13l-4.36-2.76l-3.11,0.69l-1.62,2.82l-0.12,7.96l-2.61,3.7L461.57,319.37L461.57,319.37z","name":"Nigeria"},"tn":{"path":"M474.91,227.33l5.53-2.23l1.82,1.18l0.07,1.44l-0.85,1.11l0.13,1.97l0.85,0.46v3.54l-0.98,1.64l0.13,1.05l3.71,1.31l-2.99,4.65l-1.17-0.07l-0.2,3.74l-1.3,0.2l-1.11-0.98l0.26-3.8l-3.64-3.54l-0.46-3.08l1.76-1.38L474.91,227.33L474.91,227.33z","name":"Tunisia"},"ly":{"path":"M480.05,248.03l1.56-0.26l0.46-3.6h0.78l3.19-5.24l7.87,2.29l2.15,3.34l7.74,3.54l4.03-1.7l-0.39-1.7l-1.76-1.7l0.2-1.18l2.86-2.42h5.66l2.15,2.88l4.55,0.66l0.59,36.89l-3.38-0.13l-20.42-10.62l-2.21,1.25l-8.39-2.1l-2.28-3.01l-3.32-0.46l-1.69-3.01L480.05,248.03L480.05,248.03z","name":"Libya"},"eg":{"path":"M521.93,243.06l2.67,0.07l5.2,1.44l2.47,0.07l3.06-2.56h1.43l2.6,1.44h3.29l0.59-0.04l2.08,5.98l0.59,1.93l0.55,2.89l-0.98,0.72l-1.69-0.85l-1.95-6.36l-1.76-0.13l-0.13,2.16l1.17,3.74l9.37,11.6l0.2,4.98l-2.73,3.15L522.32,273L521.93,243.06L521.93,243.06z","name":"Egypt"},"td":{"path":"M492.79,296l0.13-2.95l4.74-4.61l1.27-11.32l-3.16-6.04l2.21-1.13l21.4,11.15l-0.13,10.94l-3.77,3.21v5.64l2.47,4.78h-4.36l-7.22,7.14l-0.19,2.16l-5.33-0.07l-0.07,0.98l-3.04-0.4l-2.08-3.93l-1.56-0.77l0.2-1.2l1.96-1.5v-7.02l-2.71-0.42l-3.27-2.43L492.79,296L492.79,296L492.79,296z","name":"Chad"},"sd":{"path":"M520.15,292.43l0.18-11.83l2.46,0.07l-0.28-6.57l25.8,0.23l3.69-3.72l7.96,12.73l-4.36,5.14v7.85l-6.86,14.75l-2.36,1.04l0.75,4.11h2.94l3.99,5.79l-3.2,0.41l-0.82,1.49l-0.08,2.15l-9.6-0.17l-0.98-1.49l-6.71-0.38l-12.32-12.68l1.23-0.74l0.33-2.98l-2.95-1.74l-2.69-5.31l0.15-4.94L520.15,292.43L520.15,292.43z","name":"Sudan"},"cm":{"path":"M477.82,324.28l3.22,2.96l-0.23,4.58l17.66-0.41l1.44-1.62l-5.06-5.45l-0.75-1.97l3.22-6.03l-2.19-4l-1.84-0.99v-2.03l2.13-1.39l0.12-6.32l-1.69-0.19l-0.03,3.32l-7.42,13.85l-4.54,0.23l-3.11,2.14L477.82,324.28L477.82,324.28z","name":"Cameroon"},"er":{"path":"M556.71,294.7l-0.25-5.89l3.96-4.62l1.07,0.82l1.95,6.52l9.36,6.97l-1.7,2.09l-6.85-5.89H556.71L556.71,294.7z","name":"Eritrea"},"dj":{"path":"M571.48,301.54l-0.57,3.36l3.96-0.06l0.06-4.94l-1.45-0.89L571.48,301.54L571.48,301.54z","name":"Djibouti"},"et":{"path":"M549.49,311.76l7.28-16.2l7.23,0.04l6.41,5.57l-0.45,4.59h4.97l0.51,2.76l8.04,4.81l4.96,0.25l-9.43,10.13l-12.95,3.99h-3.21l-5.72-4.88l-2.26-0.95l-4.38-6.45l-2.89,0.04l-0.34-2.96L549.49,311.76L549.49,311.76z","name":"Ethiopia"},"so":{"path":"M575.74,305.04l4.08,2.78l1.21-0.06l10.13-3.48l1.15,3.71l-0.81,3.13l-2.19,1.74l-5.47-0.35l-7.83-4.81L575.74,305.04L575.74,305.04M591.97,304.05l4.37-1.68l1.55,0.93l-0.17,3.88l-4.03,11.48l-21.81,23.36l-2.53-1.74l-0.17-9.86l3.28-3.77l6.96-2.15l10.21-10.78l2.67-2.38l0.75-3.48L591.97,304.05L591.97,304.05z","name":"Somalia"},"ye":{"path":"M599.62,299.65l2.13,2.38l2.88-1.74l1.04-0.35l-1.32-1.28l-2.53,0.75L599.62,299.65L599.62,299.65M571.99,289.23l1.44,4.28v4.18l3.46,3.14l24.38-9.93l0.23-2.73l-3.91-7.02l-9.81,3.13l-5.63,5.54l-6.53-3.86L571.99,289.23L571.99,289.23z","name":"Yemen"},"cf":{"path":"M495.66,324.05l4.66,5.04l1.84-2.38l2.93,0.12l0.63-2.32l2.88-1.8l5.98,4.12l3.45-3.42l13.39,0.59L519,311.18l1.67-1.04l0.23-2.26l-2.82-1.33h-4.14l-6.67,6.61l-0.23,2.72l-5.29-0.17l-0.17,1.16l-3.45-0.35l-3.11,5.91L495.66,324.05L495.66,324.05z","name":"Central African Republic"},"st":{"path":"M470.74,337.15l1.15-0.58l0.86,0.7l-0.86,1.33l-1.04-0.41L470.74,337.15L470.74,337.15M473.05,333.5l1.73-0.29l0.58,1.1l-0.86,0.93l-0.86-0.12L473.05,333.5L473.05,333.5z","name":"Sao Tome and Principe"},"gq":{"path":"M476.84,327.41l-0.46,1.97l1.38,0.75l1.32-0.99l-0.46-2.03L476.84,327.41L476.84,327.41M480.99,332.69l-0.06,1.39l4.54,0.23l-0.06-1.57L480.99,332.69L480.99,332.69z","name":"Equatorial Guinea"},"ga":{"path":"M486.39,332.63l-0.12,2.49l-5.64-0.12l-3.45,6.67l8.11,8.87l2.01-1.68l-0.06-1.74l-1.38-0.64v-1.22l3.11-1.97l2.76,2.09l3.05,0.06l-0.06-10.49l-4.83-0.23l-0.06-2.2L486.39,332.63L486.39,332.63z","name":"Gabon"},"cg":{"path":"M491,332.52l-0.06,1.45l4.78,0.12l0.17,12.41l-4.37-0.12l-2.53-1.97l-1.96,1.1l-0.09,0.55l1.01,0.49l0.29,2.55l-2.7,2.32l0.58,1.22l2.99-2.32h1.44l0.46,1.39l1.9,0.81l6.1-5.16l-0.12-3.77l1.27-3.07l3.91-2.9l1.05-9.81l-2.78,0.01l-3.22,4.41L491,332.52L491,332.52z","name":"Congo"},"ao":{"path":"M486.55,353.23l1.74,2.26l2.25-2.13l-0.66-2.21l-0.56-0.04L486.55,353.23L486.55,353.23M488.62,356.71l3.41,12.73l-0.08,4.02l-4.99,5.36l-0.75,8.71l19.2,0.17l6.24,2.26l5.15-0.67l-3-3.76l0.01-10.74l5.9-0.25v-4.19l-4.79-0.2l-0.96-9.92l-2.02,0.03l-1.09-0.98l-1.19,0.06l-1.58,3.06H502l-1.41-1.42l0.42-2.01l-1.66-2.43L488.62,356.71L488.62,356.71z","name":"Angola"},"cd":{"path":"M489.38,355.71l10.31-0.18l2.09,2.97l-0.08,2.19l0.77,0.7h5.12l1.47-2.89h2.09l0.85,0.86l2.87-0.08l0.85,10.08l4.96,0.16v0.78l13.33,6.01l0.62,1.17h2.79l-0.31-4.22l-5.04-2.42l0.31-3.2l2.17-5.08l4.96-0.16l-4.26-14.14l0.08-6.01l6.74-10.54l0.08-1.48l-1.01-0.55l0.04-2.86l-1.23-0.11l-1.24-1.58l-20.35-0.92l-3.73,3.63l-6.11-4.02l-2.15,1.32l-1.56,13.13l-3.86,2.98l-1.16,2.64l0.21,3.91l-6.96,5.69l-1.85-0.84l0.25,1.09L489.38,355.71L489.38,355.71z","name":"Congo"},"rw":{"path":"M537.82,339.9l2.81,2.59l-0.12,2.77l-4.36,0.09v-3.06L537.82,339.9L537.82,339.9z","name":"Rwanda"},"bi":{"path":"M536.21,346.21l4.27-0.09l-1.11,3.74l-1.08,0.94h-1.32l-0.94-2.53L536.21,346.21L536.21,346.21z","name":"Burundi"},"ug":{"path":"M538.3,339.09l3.03,2.84l1.9-1.21l5.14-0.84l0.88,0.09l0.33-1.95l2.9-6.1l-2.44-5.08l-7.91,0.05l-0.05,2.09l1.06,1.02l-0.16,2.09L538.3,339.09L538.3,339.09z","name":"Uganda"},"ke":{"path":"M550.83,326.52l2.66,5.19l-3.19,6.69l-0.42,2.03l15.93,9.85l4.94-7.76l-2.5-2.03l-0.05-10.22l3.13-3.42l-4.99,1.66l-3.77,0.05l-5.9-4.98l-1.86-0.8l-3.45,0.32l-0.61,1.02L550.83,326.52L550.83,326.52z","name":"Kenya"},"tz":{"path":"M550.57,371.42l17.47-2.14l-3.93-7.6l-0.21-7.28l1.27-3.48l-16.62-10.44l-5.21,0.86l-1.81,1.34l-0.16,3.05l-1.17,4.23l-1.22,1.45l-1.75,0.16l3.35,11.61l5.47,2.57l3.77,0.11L550.57,371.42L550.57,371.42z","name":"Tanzania"},"zm":{"path":"M514.55,384.7l3.17,4.4l4.91,0.3l1.74,0.96l5.14,0.06l4.43-6.21l12.38-5.54l1.08-4.88l-1.44-6.99l-6.46-3.68l-4.31,0.3l-2.15,4.76l0.06,2.17l5.08,2.47l0.3,5.37l-4.37,0.24l-1.08-1.81l-12.14-5.18l-0.36,3.98l-5.74,0.18L514.55,384.7L514.55,384.7z","name":"Zambia"},"mw":{"path":"M547.16,379.4l3.11,3.25l-0.06,4.16l0.6,1.75l4.13-4.46l-0.48-5.67l-2.21-1.69l-1.97-9.95l-3.41-0.12l1.55,7.17L547.16,379.4L547.16,379.4z","name":"Malawi"},"mz":{"path":"M541.17,413.28l2.69,2.23l6.34-3.86l1.02-5.73v-9.46l10.17-8.32l1.74,0.06l6.16-5.91l-0.96-12.18L552,372.17l0.48,3.68l2.81,2.17l0.66,6.63l-5.5,5.37l-1.32-3.01l0.24-3.98l-3.17-3.44l-7.78,3.62l7.24,3.68l0.24,10.73l-4.79,7.11L541.17,413.28L541.17,413.28z","name":"Mozambique"},"zw":{"path":"M524.66,392.3l8.97,10.13l6.88,1.75l4.61-7.23l-0.36-9.58l-7.48-3.86l-2.81,1.27l-4.19,6.39l-5.8-0.06L524.66,392.3L524.66,392.3z","name":"Zimbabwe"},"na":{"path":"M496.55,421.96l3.35,0.24l1.97,1.99l4.67,0.06l1.14-13.26v-8.68l2.99-0.6l1.14-9.1l7.6-0.24l2.69-2.23l-4.55-0.18l-6.16,0.84l-6.64-2.41h-18.66l0.48,5.3l6.22,9.16l-1.08,4.7l0.06,2.47L496.55,421.96L496.55,421.96z","name":"Namibia"},"bw":{"path":"M508.51,411.23l2.15,0.66l-0.3,6.15l2.21,0.3l5.08-4.58l6.1,0.66l1.62-4.1l7.72-7.05l-9.27-10.67l-0.12-1.75l-1.02-0.3l-2.81,2.59l-7.3,0.18l-1.02,9.1l-2.87,0.66L508.51,411.23L508.51,411.23z","name":"Botswana"},"sz":{"path":"M540.87,414l-2.51,0.42l-1.08,2.95l1.92,1.75h2.33l1.97-2.83L540.87,414L540.87,414z","name":"Swaziland"},"ls":{"path":"M527.41,425.39l3.05-2.35l1.44,0.06l1.74,2.17l-0.18,2.17l-2.93,1.08v0.84l-3.23-0.18l-0.78-2.35L527.41,425.39L527.41,425.39z","name":"Lesotho"},"za":{"path":"M534.16,403.63l-7.9,7.3l-1.88,4.51l-6.26-0.78l-5.21,4.63l-3.46-0.34l0.28-6.4l-1.23-0.43l-0.86,13.09l-6.14-0.06l-1.85-2.18l-2.71-0.03l2.47,7.09l4.41,4.17l-3.15,3.67l2.04,4.6l4.72,1.8l3.76-3.2l10.77,0.06l0.77-0.96l4.78-0.84l16.17-16.1l-0.06-5.07l-1.73,2.24h-2.59l-3.15-2.64l1.6-3.98l2.75-0.56l-0.25-8.18L534.16,403.63L534.16,403.63z M530.37,422.13l1.51-0.06l2.45,2.66l-0.07,3.08l-2.87,1.45l-0.18,1.02l-4.38,0.05l-1.37-3.3l1.25-2.42L530.37,422.13L530.37,422.13z","name":"South Africa"},"gl":{"path":"M321.13,50.07l-1.36,2.17l2.45,2.45l-1.09,2.45l3.54,4.62l4.35-1.36l5.71-0.54l6.53,7.07l4.35,11.69l-3.53,7.34l4.89-0.82l2.72,1.63l0.27,3.54l-5.98,0.27l3.26,3.26l4.08,0.82l-8.97,11.96l-1.09,7.34l1.9,5.98l-1.36,3.54l2.45,7.61l4.62,5.17l1.36-0.27l2.99-0.82l0.27,4.35l1.9,2.72l3.53-0.27l2.72-10.06l8.16-10.06l12.24-4.89l7.61-9.52l3.53,1.63h7.34l5.98-5.98l7.34-2.99l0.82-4.62l-4.62-4.08l-4.08-1.36l-2.18-5.71l5.17-2.99l8.16,4.35l2.72-2.99l-4.35-2.45l9.25-12.51l-1.63-5.44l-4.35-0.27l1.63-4.89l5.44-2.45l11.15-9.79l-3.26-3.53l-12.51,1.09l-6.53,6.53l3.81-8.43l-4.35-1.09l-2.45,4.35l-3.53-2.99l-9.79,1.09l2.72-4.35l16.04-0.54l-4.08-5.44l-17.4-3.26l-7.07,1.09l0.27,3.54l-7.34-2.45l0.27-2.45l-5.17,1.09l-1.09,2.72l5.44,1.9l-5.71,4.08l-4.08-4.62l-5.71-1.63l-0.82,4.35h-5.71l-2.18-4.62l-8.97-1.36l-4.89,2.45l-0.27,3.26l-6.25-0.82l-3.81,1.63l0.27,3.81v1.9l-7.07,1.36l-3.26-2.17l-2.18,3.53l3.26,3.54l6.8-0.82l0.54,2.18l-5.17,2.45L321.13,50.07L321.13,50.07M342.89,92.49l1.63,2.45l-0.82,2.99h-1.63l-2.18-2.45l0.54-1.9L342.89,92.49L342.89,92.49M410.87,85.69l4.62,1.36l-0.27,3.81l-4.89-2.45l-1.09-1.36L410.87,85.69L410.87,85.69z","name":"Greenland"},"au":{"path":"M761.17,427.98l-0.35,25.38l-3.9,2.86l-0.35,2.5l5.32,3.57l13.13-2.5h6.74l2.48-3.58l14.9-2.86l10.64,3.22l-0.71,4.29l1.42,4.29l8.16-1.43l0.35,2.14l-5.32,3.93l1.77,1.43l3.9-1.43l-1.06,11.8l7.45,5.72l4.26-1.43l2.13,2.14l12.42-1.79l11.71-18.95l4.26-1.07l8.51-15.73l2.13-13.58l-5.32-6.79l2.13-1.43l-4.26-13.23l-4.61-3.22l0.71-17.87l-4.26-3.22l-1.06-10.01h-2.13l-7.1,23.59l-3.9,0.36l-8.87-8.94l4.97-13.23l-9.22-1.79l-10.29,2.86l-2.84,8.22l-4.61,1.07l-0.35-5.72l-18.8,11.44l0.35,4.29l-2.84,3.93h-7.1l-15.26,6.43L761.17,427.98L761.17,427.98M825.74,496.26l-1.77,7.15l0.35,5l5.32-0.36l6.03-9.29L825.74,496.26L825.74,496.26z","name":"Australia"},"nz":{"path":"M913.02,481.96l1.06,11.8l-1.42,5.36l-5.32,3.93l0.35,4.65v5l1.42,1.79l14.55-12.51v-2.86h-3.55l-4.97-16.8L913.02,481.96L913.02,481.96M902.38,507.7l2.84,5.36l-7.81,7.51l-0.71,3.93l-5.32,0.71l-8.87,8.22l-8.16-3.93l-0.71-2.86l14.9-6.43L902.38,507.7L902.38,507.7z","name":"New Zealand"},"nc":{"path":"M906.64,420.47l-0.35,1.79l4.61,6.43l2.48,1.07l0.35-2.5L906.64,420.47L906.64,420.47z","name":"New Caledonia"},"my":{"path":"M764.14,332.92l3.02,3.49l11.58-4.01l2.29-8.84l5.16-0.37l4.72-3.42l-6.12-4.46l-1.4-2.45l-3.02,5.57l1.11,3.2l-1.84,2.67l-3.47-0.89l-8.41,6.17l0.22,3.57L764.14,332.92L764.14,332.92M732.71,315.45l2.01,4.51l0.45,5.86l2.69,4.17l6.49,3.94l2.46,0.23l-0.45-4.06l-2.13-5.18l-3.12-6.63l-0.26,1.16l-3.76-0.17l-2.7-3.88L732.71,315.45L732.71,315.45z","name":"Malaysia"},"bn":{"path":"M779.77,319.25l-2.88,3.49l2.36,0.74l1.33-1.86L779.77,319.25L779.77,319.25z","name":"Brunei Darussalam"},"tl":{"path":"M806.14,368.42l-5.11,4.26l0.49,1.09l2.16-0.4l2.55-2.38l5.01-0.69l-0.98-1.68L806.14,368.42L806.14,368.42z","name":"Timor-Leste"},"sb":{"path":"M895.43,364.65l0.15,2.28l1.39,1.32l1.31-0.81l-1.17-2.43L895.43,364.65L895.43,364.65M897.18,370.31l-1.17,1.25l1.24,2.28l1.46,0.44l-0.07-1.54L897.18,370.31L897.18,370.31M900.03,368.99l1.02,2.5l1.97,2.35l1.09-1.76l-1.46-2.5L900.03,368.99L900.03,368.99M905.14,372.74l0.58,3.09l1.39,1.91l1.17-2.42L905.14,372.74L905.14,372.74M906.74,379.65l-0.51,0.88l1.68,2.21l1.17,0.07l-0.73-2.87L906.74,379.65L906.74,379.65M903.02,384.05l-1.75,0.81l1.53,2.13l1.31-0.74L903.02,384.05L903.02,384.05z","name":"Solomon Islands"},"vu":{"path":"M920.87,397.22l-1.24,1.66l0.52,1.87l0.62,0.42l1.13-1.46L920.87,397.22L920.87,397.22M921.49,402.31l0.1,1.35l1.34,0.42l0.93-0.52l-0.93-1.46L921.49,402.31L921.49,402.31M923.45,414.37l-0.62,0.94l0.93,1.04l1.55-0.52L923.45,414.37L923.45,414.37z","name":"Vanuatu"},"fj":{"path":"M948.62,412.29l-1.24,1.66l-0.1,1.87l1.44,1.46L948.62,412.29L948.62,412.29z","name":"Fiji"},"ph":{"path":"M789.37,297.53l-0.86,1.64l-0.48,2.02l-4.78,6.07l0.29,1.25l2.01-0.29l6.21-6.94L789.37,297.53L789.37,297.53M797.11,295.22l-0.1,5.01l1.82,1.83l0.67,3.56l1.82,0.39l0.86-2.22l-1.43-1.06l-0.38-6.26L797.11,295.22L797.11,295.22M802.28,297.15l-0.1,4.43l1.05,1.73l1.82-2.12l-0.48-3.85L802.28,297.15L802.28,297.15M803.42,293.29l1.82,2.41l0.86,2.31h1.63l-0.29-3.95l-1.82-1.25L803.42,293.29L803.42,293.29M806.96,302.35l0.38,2.89l-3.35,2.7l-2.77,0.29l-2.96,3.18l0.1,1.45l2.77-0.87l1.91-1.25l1.63,4.14l2.87,2.02l1.15-0.39l1.05-1.25l-2.29-2.31l1.34-1.06l1.53,1.25l1.05-1.73l-1.05-2.12l-0.19-4.72L806.96,302.35L806.96,302.35M791.38,272.97l-2.58,1.83l-0.29,5.78l4.02,7.8l1.34,1.06l1.72-1.16l2.96,0.48l0.57,2.6l2.2,0.19l1.05-1.44l-1.34-1.83l-1.63-1.54l-3.44-0.38l-1.82-2.99l2.1-3.18l0.19-2.79l-1.43-3.56L791.38,272.97L791.38,272.97M792.72,290.21l0.76,2.7l1.34,0.87l0.96-1.25l-1.53-2.12L792.72,290.21L792.72,290.21z","name":"Philippines"},"cn":{"path":"M759.83,270.17l-2.39,0.67l-1.72,2.12l1.43,2.79l2.1,0.19l2.39-2.12l0.57-2.79L759.83,270.17L759.83,270.17M670.4,170.07l-3.46,8.7l-4.77-0.25l-5.03,11.01l4.27,5.44l-8.8,12.15l-4.52-0.76l-3.02,3.8l0.75,2.28l3.52,0.25l1.76,4.05l3.52,0.76l10.81,13.93v7.09l5.28,3.29l5.78-1.01l7.29,4.3l8.8,2.53l4.27-0.51l4.78-0.51l10.05-6.58l3.27,0.51l1.25,2.97l2.77,0.83l3.77,5.57l-2.51,5.57l1.51,3.8l4.27,1.52l0.75,4.56l5.03,0.51l0.75-2.28l7.29-3.8l4.52,0.25l5.28,5.82l3.52-1.52l2.26,0.25l1.01,2.79l1.76,0.25l2.51-3.54l10.05-3.8l9.05-10.89l3.02-10.38l-0.25-6.84l-3.77-0.76l2.26-2.53l-0.5-4.05l-9.55-9.62v-4.81l2.76-3.54l2.76-1.27l0.25-2.79h-7.04l-1.26,3.8l-3.27-0.76l-4.02-4.3l2.51-6.58l3.52-3.8l3.27,0.25l-0.5,5.82l1.76,1.52l4.27-4.3l1.51-0.25l-0.5-3.29l4.02-4.81l3.02,0.25l1.76-5.57l2.06-1.09l0.21-3.47l-2-2.1l-0.17-5.48l3.85-0.25l-0.25-14.13l-2.7,1.62l-1.01,3.62l-4.51-0.01l-13.07-7.35l-9.44-11.38l-9.58-0.1l-2.44,2.12l3.1,7.1l-1.08,6.66l-3.86,1.6l-2.17-0.17l-0.16,6.59l2.26,0.51l4.02-1.77l5.28,2.53v2.53l-3.77,0.25l-3.02,6.58l-2.76,0.25l-9.8,12.91l-10.3,4.56l-7.04,0.51l-4.77-3.29l-6.79,3.55l-7.29-2.28l-1.76-4.81l-12.31-0.76l-6.53-10.63h-2.76l-2.22-4.93L670.4,170.07z","name":"China"},"tw":{"path":"M787.46,248.31l-3.54,2.7l-0.19,5.2l3.06,3.56l0.76-0.67L787.46,248.31L787.46,248.31z","name":"Taiwan"},"jp":{"path":"M803.23,216.42l-1.63,1.64l0.67,2.31l1.43,0.1l0.96,5.01l1.15,1.25l2.01-1.83l0.86-3.28l-2.49-3.56L803.23,216.42L803.23,216.42M812.03,213.15l-2.77,2.6l-0.1,2.99l0.67,0.87l3.73-3.18l-0.29-3.18L812.03,213.15L812.03,213.15M808.2,206.98l-4.88,5.59l0.86,1.35l2.39,0.29l4.49-3.47l3.16-0.58l2.87,3.37l2.2-0.77l0.86-3.28l4.11-0.1l4.02-4.82l-2.1-8l-0.96-4.24l2.1-1.73l-4.78-7.22l-1.24,0.1l-2.58,2.89v2.41l1.15,1.35l0.38,6.36l-2.96,3.66l-1.72-1.06l-1.34,2.99l-0.29,2.79l1.05,1.64l-0.67,1.25l-2.2-1.83h-1.53l-1.34,0.77L808.2,206.98L808.2,206.98M816.43,163.44l-1.53,1.35l0.77,2.89l1.34,1.35l-0.1,4.43l-1.72,0.67l-1.34,2.99l3.92,5.39l2.58-0.87l0.48-1.35l-2.77-2.5l1.72-2.22l1.82,0.29l1.43,1.54l0.1-3.18l3.92-3.18l2.2-0.58l-1.82-3.08l-0.86-1.35l-1.43,0.96l-1.24,1.54l-2.68-0.58l-2.77-1.83L816.43,163.44L816.43,163.44z","name":"Japan"},"ru":{"path":"M506.61,151.72l-1.5-0.15l-2.7,3.23v1.51l0.9,0.35l1.75,0.05l2.9-2.37l0.4-0.81L506.61,151.72L506.61,151.72M830.86,160.45l-2.68,3.76l0.19,1.83l1.34-0.58l3.15-3.95L830.86,160.45L830.86,160.45M834.4,154.96l-0.96,2.6l0.1,1.73l1.63-1.06l1.53-3.08V154L834.4,154.96L834.4,154.96M840.04,132.03l-1.24,1.54l0.1,2.41l1.15-0.1l1.91-3.37L840.04,132.03L840.04,132.03M837.75,137.91v4.24l1.34,0.48l0.96-1.54v-3.27L837.75,137.91L837.75,137.91M798.64,122.59l-0.09,6.17l7.74,11.95l2.77,10.4l4.88,9.25l1.91,0.67l1.63-1.35l0.76-2.22l-6.98-7.61l0.19-3.95l1.53-0.67l0.38-2.31l-13.67-19.36L798.64,122.59L798.64,122.59M852.57,103.42l-1.91,0.19l1.15,1.64l2.39,1.64l0.67-0.77L852.57,103.42L852.57,103.42M856.29,104.58l0.29,1.64l2.96,0.87l0.29-1.16L856.29,104.58L856.29,104.58M547.82,38.79l1.72,0.69l-1.21,2.08v2.95l-2.58,1.56H543l-1.55-1.91l0.17-2.08l1.21-1.56h2.41L547.82,38.79L547.82,38.79M554.36,36.88v2.08l1.72,1.39l2.41-0.17l2.07-1.91v-1.39h-1.89l-1.55,0.52l-1.21-1.39L554.36,36.88L554.36,36.88M564.18,37.06l1.21,2.6l2.41,0.17l1.72-0.69l-0.86-2.43l-2.24-0.52L564.18,37.06L564.18,37.06M573.99,33.59l-1.89-0.35l-1.72,1.74l0.86,1.56l0.52,2.43l2.24-1.73l0.52-1.91L573.99,33.59L573.99,33.59M584.49,51.98l-0.52,2.43l-3.96,3.47l-8.44,1.91l-6.89,11.45l-1.21,3.3l6.89,1.74l1.03-4.16l2.07-6.42l5.34-2.78l4.48-3.47l3.27-1.39h1.72v-4.68L584.49,51.98L584.49,51.98M562.28,77.31l4.65,0.52l1.55,5.38l3.96,4.16l-1.38,2.78h-2.41l-2.24-2.6l-4.99-0.17l-2.07-2.78v-1.91l3.1-0.87L562.28,77.31L562.28,77.31M634.95,18.15l-2.24-1.39h-2.58l-0.52,1.56l-2.75,1.56l-2.07,0.69l-0.34,2.08l4.82,0.35L634.95,18.15L634.95,18.15M640.28,18.67l-1.21,2.6l-2.41-0.17l-3.79,2.78l-1.03,3.47h2.41l1.38-2.26l3.27,2.43l3.1-1.39l2.24-1.91l-0.86-2.95l-1.21-2.08L640.28,18.67L640.28,18.67M645.28,20.58l1.21,4.86l1.89,4.51l2.07-3.64l3.96-0.87v-2.6l-2.58-1.91L645.28,20.58L645.28,20.58M739.76,12.8l2.69,2.26l1.91-0.79l0.56-3.17L741,8.39l-2.58,1.7l-6.28,0.57v2.83l-6.62,0.11v4.63l7.74,5.76l2.02-1.47l-0.45-4.07l4.94-1.24l-1.01-1.92l-1.79-1.81L739.76,12.8L739.76,12.8M746.94,10.09l1.79,3.39l6.96-0.79l1.91-2.49l-0.45-2.15l-1.91-0.79l-1.79,1.36l-5.16,1.13L746.94,10.09L746.94,10.09M746.49,23.31l-3.48-0.9L741,24.56l-0.9,2.94l4.71-0.45l3.59-1.81L746.49,23.31L746.49,23.31M836.68,3.76l-2.92-0.9L830.4,4.1l-1.68,2.49l2.13,2.83l5.61-2.49l1.12-1.24L836.68,3.76L836.68,3.76M817.97,72.93l1.76,6.08l3.52,1.01l3.52-5.57l-2.01-3.8l0.75-3.29h5.28l-1.26,2.53l0.5,9.12l-7.54,18.74l0.75,4.05l-0.25,6.84l14.07,20.51l2.76,0.76l0.25-16.71l2.76-2.53l-3.02-6.58l2.51-2.79l-5.53-7.34l-3.02,0.25l-1-12.15l7.79-2.03l0.5-3.55l4.02-1.01l2.26,2.03l2.76-11.14l4.77-8.1l3.77-2.03l3.27,0.25v-3.8l-5.28-1.01l-7.29-6.08l3.52-4.05l-3.02-6.84l2.51-2.53l3.02,4.05l7.54,2.79l8.29,0.76l1.01-3.54l-4.27-4.3l4.77-6.58l-10.81-3.8l-2.76,5.57l-3.52-4.56l-19.85-6.84l-18.85,3.29l-2.76,1.52v1.52l4.02,2.03l-0.5,4.81l-7.29-3.04l-16.08,6.33l-2.76-5.82h-11.06l-5.03,5.32l-17.84-4.05l-16.33,3.29l-2.01,5.06l2.51,0.76l-0.25,3.8l-15.83,1.77l1.01,5.06l-14.58-2.53l3.52-6.58l-14.83-0.76l1.26,6.84l-4.77,2.28l-4.02-3.8l-16.33,2.79l-6.28,5.82l-0.25,3.54l-4.02,0.25l-0.5-4.05l12.82-11.14v-7.6l-8.29-2.28l-10.81,3.54l-4.52-4.56h-2.01l-2.51,5.06l2.01,2.28l-14.33,7.85l-12.31,9.37l-7.54,10.38v4.3l8.04,3.29l-4.02,3.04l-8.54-3.04l-3.52,3.04l-5.28-6.08l-1.01,2.28l5.78,18.23l1.51,0.51l4.02-2.03l2.01,1.52v3.29l-3.77-1.52l-2.26,1.77l1.51,3.29l-1.26,8.61l-7.79,0.76l-0.5-2.79l4.52-2.79l1.01-7.6l-5.03-6.58l-1.76-11.39l-8.04-1.27l-0.75,4.05l1.51,2.03l-3.27,2.79l1.26,7.6l4.77,2.03l1.01,5.57l-4.78-3.04l-12.31-2.28l-1.51,4.05l-9.8,3.54l-1.51-2.53l-12.82,7.09l-0.25,4.81l-5.03,0.76l1.51-3.54v-3.54l-5.03-1.77l-3.27,1.27l2.76,5.32l2.01,3.54v2.79l-3.77-0.76l-0.75-0.76l-3.77,4.05l2.01,3.54l-8.54-0.25l2.76,3.55l-0.75,1.52h-4.52l-3.27-2.28l-0.75-6.33l-5.28-2.03v-2.53l11.06,2.28l6.03,0.51l2.51-3.8l-2.26-4.05l-16.08-6.33l-5.55,1.38l-1.9,1.63l0.59,3.75l2.36,0.41l-0.55,5.9l7.28,17.1l-5.26,8.34l-0.36,1.88l2.67,1.88l-2.41,1.59l-1.6,0.03l0.3,7.35l2.21,3.13l0.03,3.04l2.83,0.26l4.33,1.65l4.58,6.3l0.05,1.66l-1.49,2.55l3.42-0.19l3.33,0.96l4.5,6.37l11.08,1.01l-0.48,7.58l-3.82,3.27l0.79,1.28l-3.77,4.05l-1,3.8l2.26,3.29l7.29,2.53l3.02-1.77l19.35,7.34l0.75-2.03l-4.02-3.8v-4.81l-2.51-0.76l0.5-4.05l4.02-4.81l-7.21-5.4l0.5-7.51l7.71-5.07l9.05,0.51l1.51,2.79l9.3,0.51l6.79-3.8l-3.52-3.8l0.75-7.09l17.59-8.61l13.53,6.1l4.52-4.05l13.32,12.66l10.05-1.01l3.52,3.54l9.55,1.01l6.28-8.61l8.04,3.55l4.27,0.76l4.27-3.8l-3.77-2.53l3.27-5.06l9.3,3.04l2.01,4.05l4.02,0.25l2.51-1.77l6.79-0.25l0.75,1.77l7.79,0.51l5.28-5.57l10.81,1.27l3.27-1.27l1-6.08l-3.27-7.34l3.27-2.79h10.3l9.8,11.65l12.56,7.09h3.77l0.5-3.04l4.52-2.79l0.5,16.46l-4.02,0.25v4.05l2.26,2.79l-0.42,3.62l1.67,0.69l1.01-2.53l1.51,0.51l1,1.01l4.52-1.01l4.52-13.17l0.5-16.46l-5.78-13.17l-7.29-8.86l-3.52,0.51v2.79l-8.54-3.29l3.27-7.09l2.76-18.74l11.56-3.54l5.53-3.54h6.03L805.86,96l1.51,2.53l5.28-5.57l3.02,0.25l-0.5-3.29l-4.78-1.01l3.27-11.9L817.97,72.93L817.97,72.93z","name":"Russian Federation"},"us":{"path":"M69.17,53.35l3.46,6.47l2.22-0.5v-2.24L69.17,53.35L69.17,53.35M49.66,110.26l-0.17,3.01l2.16-0.5v-1.34L49.66,110.26L49.66,110.26M46.34,111.6l-4.32,2.18l0.67,2.34l1.66-1.34l3.32-1.51L46.34,111.6L46.34,111.6M28.39,114.44l-2.99-0.67l-0.5,1.34l0.33,2.51L28.39,114.44L28.39,114.44M22.07,114.28l-2.83-1.17l-1,1.84l1.83,1.84L22.07,114.28L22.07,114.28M12.27,111.6l-1.33-1.84l-1.33,0.5v2.51l1.5,1L12.27,111.6L12.27,111.6M1.47,99.71l1.66,1.17l-0.5,1.34H1.47V99.71L1.47,99.71M10,248.7l-0.14,2.33l2.04,1.37l1.22-1.09L10,248.7L10,248.7M15.29,252.13l-1.9,1.37l1.63,2.05l1.9-1.64L15.29,252.13L15.29,252.13M19.1,255.41l-1.63,2.19l0.54,1.37l2.31-1.09L19.1,255.41L19.1,255.41M21.81,259.65l-0.95,5.47l0.95,2.05l3.12-0.96l1.63-2.74l-3.4-3.15L21.81,259.65L21.81,259.65M271.05,281.06l-2.64-0.89l-2.12,1.33l1.06,1.24l3.61,0.53L271.05,281.06L271.05,281.06M93.11,44.89l-8.39,1.99l1.73,9.45l9.13,2.49l0.49,1.99L82.5,65.04l-7.65,12.68l2.71,13.43L82,94.13l3.46-3.23l0.99,1.99l-4.2,4.97l-16.29,7.46l-10.37,2.49l-0.25,3.73l23.94-6.96l9.87-2.74l9.13-11.19l10.12-6.71l-5.18,8.7l5.68,0.75l9.63-4.23l1.73,6.96l6.66,1.49l6.91,6.71l0.49,4.97l-0.99,1.24l1.23,4.72h1.73l0.25-7.96h1.97l0.49,19.64l4.94-4.23l-3.46-20.39h-5.18l-5.68-7.21l27.89-47.25l-27.64-21.63l-30.85,5.97l-1.23,9.45l6.66,3.98l-2.47,6.47L93.11,44.89L93.11,44.89M148.76,158.34l-1,4.02l-3.49-2.26h-1.74l-1,4.27l-12.21,27.36l3.24,23.84l3.99,2.01l0.75,6.53h8.22l7.97,6.02l15.69,1.51l1.74,8.03l2.49,1.76l3.49-3.51l2.74,1.25l2.49,11.54l4.23,2.76l3.49-6.53l10.71-7.78l6.97,3.26l5.98,0.5l0.25-3.76l12.45,0.25l2.49,2.76l0.5,6.27l-1.49,3.51l1.74,6.02h3.74l3.74-5.77l-1.49-2.76l-1.49-6.02l2.24-6.78l10.21-8.78l7.72-2.26l-1-7.28l10.71-11.55l10.71-1.76L272.8,199l10.46-6.02v-8.03l-1-0.5l-3.74,1.25l-0.5,4.92l-12.43,0.15l-9.74,6.47l-15.29,5l-2.44-2.99l6.94-10.5l-3.43-3.27l-2.33-4.44l-4.83-3.88l-5.25-0.44l-9.92-6.77L148.76,158.34L148.76,158.34z","name":"United States of America"},"mu":{"path":"M613.01,398.99l-1.52,1.99l0.3,2.15l3.2-2.61L613.01,398.99L613.01,398.99z","name":"Mauritius"},"re":{"path":"M607.38,402.37l-2.28,0.15l-0.15,1.99l1.52,0.31l2.28-1.07L607.38,402.37L607.38,402.37z","name":"Reunion"},"mg":{"path":"M592.3,372.92l-2.13,5.06l-3.65,6.44l-6.39,0.46l-2.74,3.22l0.46,9.82l-3.96,4.6l0.46,7.82l3.35,3.83l3.96-0.46l3.96-2.92l-0.91-4.6l9.13-15.8l-1.83-1.99l1.83-3.83l1.98,0.61l0.61-1.53l-1.83-7.82l-1.07-3.22L592.3,372.92L592.3,372.92z","name":"Madagascar"},"km":{"path":"M577.69,371.23l0.46,1.53l1.98,0.31l0.76-1.99L577.69,371.23L577.69,371.23M580.58,374.3l0.76,1.69h1.22l0.61-2.15L580.58,374.3L580.58,374.3z","name":"Comoros"},"sc":{"path":"M602.35,358.34l-0.61,1.23l1.67,1.38l1.22-1.38L602.35,358.34L602.35,358.34M610.88,349.14l-1.83,1.23l1.37,2.15h1.83L610.88,349.14L610.88,349.14M611.64,354.51l-1.22,1.38l0.91,1.38l1.67,0.31l0.15-2.92L611.64,354.51L611.64,354.51z","name":"Seychelles"},"mv":{"path":"M656.4,320.76l0.3,2.61l1.67,0.61l0.3-2.3L656.4,320.76L656.4,320.76M658.53,326.28l-0.15,3.22l1.22,0.61l1.07-2.15L658.53,326.28L658.53,326.28M658.84,332.57l-1.07,1.07l1.22,1.07l1.52-1.07L658.84,332.57L658.84,332.57z","name":"Maldives"},"pt":{"path":"M372.64,217.02l-1.36,1.37l2.44,1.37l0.27-1.91L372.64,217.02L372.64,217.02M379.97,216.2l-1.63,1.09l1.36,1.09l2.17-0.55L379.97,216.2L379.97,216.2M381.05,220.03l-0.81,2.19l1.08,1.37l1.36-1.09L381.05,220.03L381.05,220.03M387.56,224.4l-0.54,1.37l0.81,0.82l2.17-1.37L387.56,224.4L387.56,224.4M408.18,236.42l-1.08,1.37l1.08,1.37l1.63-0.82L408.18,236.42L408.18,236.42M430.93,211.24l-0.62,8.65l-1.77,1.6l0.18,0.98l1.24,2.05l-0.8,2.5l1.33,0.45l3.1-0.36l-0.18-2.5l2.03-11.59l-0.44-1.6L430.93,211.24L430.93,211.24z","name":"Portugal"},"es":{"path":"M415.62,253.73l-1.75,1.01l0.81,0.82L415.62,253.73L415.62,253.73M409.54,253.92l-2.17,0.55l1.08,1.64h1.63L409.54,253.92L409.54,253.92M404.38,252.28l-1.36,1.37l1.9,1.64l1.08-2.46L404.38,252.28L404.38,252.28M448.36,205h-12.74l-2.57-1.16l-1.24,0.09l-1.5,3.12l0.53,3.21l4.87,0.45l0.62,2.05l-2.12,11.95l0.09,2.14l3.45,1.87l3.98,0.27l7.96-1.96l3.89-4.9l0.09-4.99l6.9-6.24l0.35-2.76l-6.28-0.09L448.36,205L448.36,205M461.1,217.21l-1.59,0.54l0.35,1.43h2.3l0.97-1.07L461.1,217.21L461.1,217.21z","name":"Spain"},"cv":{"path":"M387.56,290.54l-1.9,1.09l1.36,1.09l1.63-0.82L387.56,290.54L387.56,290.54M392.23,292.74l-1.24,1.1l0.88,1.63l2.12-0.95L392.23,292.74L392.23,292.74M389.52,295.83l-1.59,0.95l1.71,2.29l1.35-0.71L389.52,295.83L389.52,295.83z","name":"Cape Verde"},"pf":{"path":"M27.25,402.68l-1.9-0.14l-0.14,1.78l1.49,0.96l1.77-1.09L27.25,402.68L27.25,402.68M33.77,404.6l-2.72,1.78l2.04,2.46l1.77-0.41l0.95-1.23L33.77,404.6L33.77,404.6z","name":"French Polynesia"},"kn":{"path":"M276.6,283.37l-1.5,0.62l0.53,1.33l1.76-1.15l-0.35-0.36L276.6,283.37L276.6,283.37z","name":"Saint Kitts and Nevis"},"ag":{"path":"M279.07,284.88l-0.88,1.87l1.06,1.42l1.32-1.15L279.07,284.88L279.07,284.88z","name":"Antigua and Barbuda"},"dm":{"path":"M282.07,290.03l-1.06,0.98l0.79,1.6l1.5-0.44L282.07,290.03L282.07,290.03z","name":"Dominica"},"lc":{"path":"M281.98,294.03l-0.71,1.51l1.15,1.24l1.5-0.8L281.98,294.03L281.98,294.03z","name":"Saint Lucia"},"bb":{"path":"M282.07,297.85l-1.23,0.89l0.97,1.78l1.59-0.89L282.07,297.85L282.07,297.85z","name":"Barbados"},"gd":{"path":"M280.57,301.31l-1.15,1.15l0.44,0.71h1.41l0.44-1.16L280.57,301.31L280.57,301.31z","name":"Grenada"},"tt":{"path":"M282.24,304.78l-1.06,0.98l-1.15,0.18v1.42l2.12,1.95l0.88-1.42l0.53-1.6l-0.18-1.33L282.24,304.78L282.24,304.78z","name":"Trinidad and Tobago"},"do":{"path":"M263.11,280.44l-5.29-3.46l-2.5-0.85l-0.84,6l0.88,1.69l1.15-1.33l3.35-0.89l2.91,0.62L263.11,280.44L263.11,280.44z","name":"Dominican Republic"},"ht":{"path":"M250.86,275.38l3.44,0.36l-0.41,4.22l-0.34,2.22l-4.01-0.22l-0.71,1.07l-1.23-0.09l-0.44-2.31l4.23-0.35l-0.26-2.4l-1.94-0.8L250.86,275.38L250.86,275.38z","name":"Haiti"},"fk":{"path":"M307.95,508.18l-2.63-0.29l-2.62,1.76l1.9,2.06L307.95,508.18L307.95,508.18M310.57,506.86l-0.87,2.79l-2.48,2.2l0.15,0.73l4.23-1.62l1.75-2.2L310.57,506.86L310.57,506.86z","name":"Falkland Islands"},"is":{"path":"M406.36,117.31l-1.96-1.11l-2.64,1.67l-2.27,2.1l0.06,1.17l2.94,0.37l-0.18,2.1l-1.04,1.05l0.25,0.68l2.94,0.19v3.4l4.23,0.74l2.51,1.42l2.82,0.12l4.84-2.41l3.74-4.94l0.06-3.34l-2.27-1.92l-1.9-1.61l-0.86,0.62l-1.29,1.67l-1.47-0.19l-1.47-1.61l-1.9,0.18l-2.76,2.29l-1.66,1.79l-0.92-0.8l-0.06-1.98l0.92-0.62L406.36,117.31L406.36,117.31z","name":"Iceland"},"no":{"path":"M488.26,53.96l-1.65-1.66l-3.66,1.78h-6.72L475.17,58l3.77,3.33l1.65-0.24l2.36-4.04l2,1.43l-1.42,2.85l-0.71,4.16l1.65,2.61l3.54-5.94l4.6-5.59l-1.77-1.54L488.26,53.96L488.26,53.96M490.26,46.83l-2.95,2.73l1.77,2.73h3.18l1.3,1.78l3.89,2.02l4.48-2.61l3.07-2.61l-1.06-2.14l-3.07-1.78l-2.24,2.02l-1.53-1.9l-1.18,0.12l-1.53,3.33l-2.24-2.26l-0.24-1.54L490.26,46.83L490.26,46.83M496.98,59.07l-2.36,2.14l-2,1.54l0.94,1.66l1.89,0.59l3.07-1.43l1.42-1.78l-1.3-2.14L496.98,59.07L496.98,59.07M515.46,102.14l2.02-1.48L517.3,99l-1.28-0.74l0.18-2.03h1.1v-1.11l-4.77-1.29l-7.15,0.74l-0.73,3.14L503,97.16l-1.1-1.85l-3.49,0.18L498.04,99l-1.65,0.74l-0.92-1.85l-7.34,5.91l1.47,1.66l-2.75,1.29l-6.24,12.38l-2.2,1.48l0.18,1.11l2.2,1.11l-0.55,2.4l-3.67-0.19l-1.1-1.29l-2.38,2.77l-1.47,1.11l-0.37,2.59l-1.28,0.74l-3.3,0.74l-1.65,5.18l1.1,8.5l1.28,3.88l1.47,1.48l3.3-0.18l4.77-4.62l1.83-3.14l0.55,4.62l3.12-5.54l0.18-15.53l2.54-1.6l0.76-8.57l7.7-11.09l3.67-1.29l1.65-2.03l5.5,1.29l2.75,1.66l0.92-4.62l4.59-2.77L515.46,102.14L515.46,102.14z","name":"Norway"},"lk":{"path":"M680.54,308.05l0.25,2.72l0.25,1.98l-1.47,0.25l0.74,4.45l2.21,1.24l3.43-1.98l-0.98-4.69l0.25-1.73l-3.19-2.96L680.54,308.05L680.54,308.05z","name":"Sri Lanka"},"cu":{"path":"M220.85,266.92v1.27l5.32,0.1l2.51-1.46l0.39,1.07l5.22,1.27l4.64,4.19l-1.06,1.46l0.19,1.66l3.87,0.97l3.87-1.75l1.74-1.75l-2.51-1.27l-12.95-7.6l-4.54-0.49L220.85,266.92L220.85,266.92z","name":"Cuba"},"bs":{"path":"M239.61,259.13l-1.26-0.39l-0.1,2.43l1.55,1.56l1.06-1.56L239.61,259.13L239.61,259.13M242.12,262.93l-1.74,0.97l1.64,2.34l0.87-1.17L242.12,262.93L242.12,262.93M247.73,264.68l-1.84-0.1l0.19,1.17l1.35,1.95l1.16-1.27L247.73,264.68L247.73,264.68M246.86,262.35l-3-1.27l-0.58-3.02l1.16-0.49l1.16,2.34l1.16,0.88L246.86,262.35L246.86,262.35M243.96,256.21l-1.55-0.39l-0.29-1.95l-1.64-0.58l1.06-1.07l1.93,0.68l1.45,0.88L243.96,256.21L243.96,256.21z","name":"Bahamas"},"jm":{"path":"M238.93,279.59l-3.48,0.88v0.97l2.03,1.17h2.13l1.35-1.56L238.93,279.59L238.93,279.59z","name":"Jamaica"},"ec":{"path":"M230.2,335.85l-4.73,2.94l-0.34,4.36l-0.95,1.43l2.98,2.86l-1.29,1.41l0.3,3.6l5.33,1.27l8.07-9.55l-0.02-3.33l-3.87-0.25L230.2,335.85L230.2,335.85z","name":"Ecuador"},"ca":{"path":"M203.73,35.89l0.22,4.02l-7.98,8.27l2,6.7l5.76-1.56l3.33-4.92l8.42-3.13l6.87-0.45l-5.32-5.81l-2.66,2.01l-2-0.67l-1.11-2.46l-2.44-2.46L203.73,35.89L203.73,35.89M214.15,24.05l-1.77,3.13l8.65,3.13l3.1-4.69l1.33,3.13h2.22l4.21-4.69l-5.1-1.34l-2-1.56l-2.66,2.68L214.15,24.05L214.15,24.05M229.23,30.31l-6.87,2.9v2.23l8.87,3.35l-2,2.23l1.33,2.9l5.54-2.46h4.66l2.22,3.57l3.77-3.8l-0.89-3.58l-3.1,1.12l-0.44-4.47l1.55-2.68h-1.55l-2.44,1.56l-1.11,0.89l0.67,3.13l-1.77,1.34l-2.66-0.22l-0.67-4.02L229.23,30.31L229.23,30.31M238.32,23.38l-0.67,2.23l4.21,2.01l3.1-1.79l-0.22-1.34L238.32,23.38L238.32,23.38M241.64,19.58l-3.1,1.12l0.22,1.56l6.87-0.45l-0.22-1.56L241.64,19.58L241.64,19.58M256.5,23.38l-0.44,1.56l-1.11,1.56v2.23l4.21-0.67l4.43,3.8h1.55v-3.8l-4.43-4.92L256.5,23.38L256.5,23.38M267.81,27.85l1.77,2.01l-1.55,2.68l1.11,2.9l4.88-2.68v-2.01l-2.88-3.35L267.81,27.85L267.81,27.85M274.24,22.71l0.22,3.57h5.99l1.55,1.34l-0.22,1.56l-5.32,0.67l3.77,5.14l5.1,0.89l7.09-3.13l-10.2-15.42l-3.1,2.01l0.22,2.68l-3.55-1.34L274.24,22.71L274.24,22.71M222.58,47.96l-8.42,2.23l-4.88,4.25l0.44,4.69l8.87,2.68l-2,4.47l-6.43-4.02l-1.77,3.35l4.21,2.9l-0.22,4.69l6.43,1.79l7.76-0.45l1.33-2.46l5.76,6.48l3.99-1.34l0.67-4.47l2.88,2.01l0.44-4.47l-3.55-2.23l0.22-14.07l-3.1-2.46L231.89,56L222.58,47.96L222.58,47.96M249.63,57.79l-2.88-1.34l-1.55,2.01l3.1,4.92l0.22,4.69l6.65-4.02v-5.81l2.44-2.46l-2.44-1.79h-3.99L249.63,57.79L249.63,57.79M263.82,55.78l-4.66,3.8l1.11,4.69h2.88l1.33-2.46l2,2.01l2-0.22l5.32-4.47L263.82,55.78L263.82,55.78M263.37,48.4l-1.11,2.23l4.88,1.79l1.33-2.01L263.37,48.4L263.37,48.4M260.49,39.91l-4.88,0.67l-2.88,2.68l5.32,0.22l-1.55,4.02l1.11,1.79l1.55-0.22l3.77-6.03L260.49,39.91L260.49,39.91M268.92,38.35l-2.66,0.89l0.44,3.57l4.43,2.9l0.22,2.23l-1.33,1.34l0.67,4.47l17.07,5.58l4.66,1.56l4.66-4.02l-5.54-4.47l-5.1,1.34l-7.09-0.67l-2.66-2.68l-0.67-7.37l-4.43-2.23L268.92,38.35L268.92,38.35M282.88,61.59L278,61.14l-5.76,2.23l-3.1,4.24l0.89,11.62l9.53,0.45l9.09,4.47l6.43,7.37l4.88-0.22l-1.33,6.92l-4.43,7.37l-4.88,2.23l-3.55-0.67l-1.77-1.56l-2.66,3.57l1.11,3.57l3.77,0.22l4.66-2.23l3.99,10.28l9.98,6.48l6.87-8.71l-5.76-9.38l3.33-3.8l4.66,7.82l8.42-7.37l-1.55-3.35l-5.76,1.79l-3.99-10.95l3.77-6.25l-7.54-8.04l-4.21,2.9l-3.99-8.71l-8.42,1.12l-2.22-10.5l-6.87,4.69l-0.67,5.81h-3.77l0.44-5.14L282.88,61.59L282.88,61.59M292.86,65.61l-1.77,1.79l1.55,2.46l7.32,0.89l-4.66-4.92L292.86,65.61L292.86,65.61M285.77,40.36v2.01l-4.88,1.12l1.33,2.23l5.54,2.23l6.21,0.67l4.43,3.13l4.43-2.46l-3.1-3.13h3.99l2.44-2.68l5.99-0.89v-1.34l-3.33-2.23l0.44-2.46l9.31,1.56l13.75-5.36l-5.1-1.56l1.33-1.79h10.64l1.77-1.79l-21.51-7.6l-5.1-1.79l-5.54,4.02l-6.21-5.14l-3.33-0.22l-0.67,4.25l-4.21-3.8l-4.88,1.56l0.89,2.46l7.32,1.56l-0.44,3.57l3.99,2.46l9.76-2.46l0.22,3.35l-7.98,3.8l-4.88-3.8l-4.43,0.45l4.43,6.26l-2.22,1.12l-3.33-2.9l-2.44,1.56l2.22,4.24h3.77l-0.89,4.02l-3.1-0.45l-3.99-4.25L285.77,40.36L285.77,40.36M266.01,101.85l-4.23,5.32l-0.26,5.86l3.7-2.13h4.49l3.17,2.93l2.91-2.4L266.01,101.85L266.01,101.85M317.52,171.05l-10.57,10.12l1.06,2.4l12.94,4.79l1.85-3.19l-1.06-5.32l-4.23,0.53l-2.38-2.66l3.96-3.99L317.52,171.05L317.52,171.05M158.22,48.66l1.99,3.01l1,4.02l4.98,1.25l3.49-3.76l2.99,1.51l8.47,0.75l5.98-2.51l1,8.28h3.49V57.7l3.49,0.25l8.72,10.29l5.73,3.51l-2.99,4.77l1.25,1.25L219,80.03l0.25,5.02l2.99,0.5l0.75-7.53l4.73-1.25l3.49,5.27l7.47,3.51l3.74,0.75l2.49-3.01l0.25-4.77l4.48-2.76l1.49,4.02l-3.99,7.03l0.5,3.51l2.24-3.51l4.48-4.02l0.25-5.27l-2.49-4.02l0.75-3.26l5.98-3.01l2.74,2.01l0.5,17.57l4.23-3.76l2.49,1.51l-3.49,6.02l4.48,1l6.48-10.04l5.48,5.77l-2.24,10.29l-5.48,3.01l-5.23-2.51l-9.46,2.01l1,3.26l-2.49,4.02l-7.72,1.76l-8.72,6.78l-7.72,10.29l-1,3.26l5.23,2.01l1.99,5.02l7.22,7.28l11.46,5.02l-2.49,11.54l-0.25,3.26l2.99,2.01l3.99-5.27l0.5-10.04l6.23-0.25l2.99-5.77l0.5-8.78l7.97-15.56l9.96,3.51l5.23,7.28l-2.24,7.28l3.99,2.26l9.71-6.53l2.74,17.82l8.97,10.79l0.25,5.52l-9.96,2.51l-4.73,5.02l-9.96-2.26l-4.98-0.25l-8.72,6.78l5.23-1.25l6.48-1.25l1.25,1.51l-1.74,5.52l0.25,5.02l2.99,2.01l2.99-0.75l1.5-2.26h1.99l-3.24,6.02l-6.23,0.25l-2.74,4.02h-3.49l-1-3.01l4.98-5.02l-5.98,2.01l-0.27-8.53l-1.72-1l-5.23,2.26l-0.5,4.27h-11.96l-10.21,7.03l-13.7,4.52l-1.49-2.01l6.9-10.3l-3.92-3.77l-2.49-4.78l-5.07-3.87l-5.44-0.45l-9.75-6.83l-70.71-11.62l-1.17-4.79l-6.48-6.02v-5.02l1-4.52l-0.5-2.51l-2.49-2.51l-0.5-4.02l6.48-4.52l-3.99-21.58l-5.48-0.25l-4.98-6.53L158.22,48.66L158.22,48.66M133.83,128.41l-1.7,3.26l0.59,2.31l1.11,0.69l-0.26,0.94l-1.19,0.34l0.34,3.43l1.28,1.29l1.02-1.11l-1.28-3.34l0.76-2.66l1.87-2.49l-1.36-2.31L133.83,128.41L133.83,128.41M139.45,147.95l-1.53,0.6l2.81,3.26l0.68,3.86l2.81,3l2.38-0.43v-3.94l-2.89-1.8L139.45,147.95L139.45,147.95z","name":"Canada"},"gt":{"path":"M194.88,291.52l5.93,4.34l5.98-7.43l-1.02-1.54l-2.04-0.07v-4.35l-1.53-0.93l-4.63,1.38l1.77,4.08L194.88,291.52L194.88,291.52z","name":"Guatemala"},"hn":{"path":"M207.55,288.78l9.24-0.35l2.74,3.26l-1.71-0.39l-3.29,0.14l-4.3,4.04l-1.84,4.09l-1.21-0.64l-0.01-4.48l-2.66-1.78L207.55,288.78L207.55,288.78z","name":"Honduras"},"sv":{"path":"M201.65,296.27l4.7,2.34l-0.07-3.71l-2.41-1.47L201.65,296.27L201.65,296.27z","name":"El Salvador"},"ni":{"path":"M217.74,292.11l2.19,0.44l0.07,4.49l-2.55,7.28l-6.87-0.68l-1.53-3.51l2.04-4.26l3.87-3.6L217.74,292.11L217.74,292.11z","name":"Nicaragua"},"cr":{"path":"M217.38,304.98l1.39,2.72l1.13,1.5l-1.52,4.51l-2.9-2.04l-4.74-4.34v-2.87L217.38,304.98L217.38,304.98z","name":"Costa Rica"},"pa":{"path":"M220.59,309.61l-1.46,4.56l4.82,1.25l2.99,0.59l0.51-3.53l3.21-1.62l2.85,1.47l1.12,1.79l1.36-0.16l1.07-3.25l-3.56-1.47l-2.7-1.47l-2.7,1.84l-3.21,1.62l-3.28-1.32L220.59,309.61L220.59,309.61z","name":"Panama"},"co":{"path":"M253.73,299.78l-2.06-0.21l-13.62,11.23l-1.44,3.95l-1.86,0.21l0.83,8.73l-4.75,11.65l5.16,4.37l6.61,0.42l4.54,6.66l6.6,0.21l-0.21,4.99H256l2.68-9.15l-2.48-3.12l0.62-5.82l5.16-0.42l-0.62-13.52l-11.56-3.74l-2.68-7.28L253.73,299.78L253.73,299.78z","name":"Colombia"},"ve":{"path":"M250.46,305.92l0.44,2.59l3.25,1.03l0.74-4.77l3.43-3.55l3.43,4.02l7.89,2.15l6.68-1.4l4.55,5.61l3.43,2.15l-3.76,5.73l1.26,4.34l-2.15,2.66l-2.23,1.87l-4.83-2.43l-1.11,1.12v3.46l3.53,1.68l-2.6,2.81l-2.6,2.81l-3.43-0.28l-3.45-3.79l-0.73-14.26l-11.78-4.02l-2.14-6.27L250.46,305.92L250.46,305.92z","name":"Venezuela"},"gy":{"path":"M285.05,314.13l7.22,6.54l-2.87,3.32l-0.23,1.97l3.77,3.89l-0.09,3.74l-6.56,2.5l-3.93-5.31l0.84-6.38l-1.68-4.75L285.05,314.13L285.05,314.13z","name":"Guyana"},"sr":{"path":"M293.13,321.14l2.04,1.87l3.16-1.96l2.88,0.09l-0.37,1.12l-1.21,2.52l-0.19,6.27l-5.75,2.34l0.28-4.02l-3.71-3.46l0.19-1.78L293.13,321.14L293.13,321.14z","name":"Suriname"},"gf":{"path":"M302.13,321.8l5.85,3.65l-3.06,6.08l-1.11,1.4l-3.25-1.87l0.09-6.55L302.13,321.8L302.13,321.8z","name":"French Guiana"},"pe":{"path":"M225.03,349.52l-1.94,1.96l0.13,3.13l16.94,30.88l17.59,11.34l2.72-4.56l0.65-10.03l-1.42-6.25l-4.79-8.08l-2.85,0.91l-1.29,1.43l-5.69-6.52l1.42-7.69l6.6-4.3l-0.52-4.04l-6.72-0.26l-3.49-5.86l-1.94-0.65l0.13,3.52l-8.66,10.29l-6.47-1.56L225.03,349.52L225.03,349.52z","name":"Peru"},"bo":{"path":"M258.71,372.79l8.23-3.59l2.72,0.26l1.81,7.56l12.54,4.17l2.07,6.39l5.17,0.65l2.2,5.47l-1.55,4.95l-8.41,0.65l-3.1,7.95l-6.6-0.13l-2.07-0.39l-3.81,3.7l-1.88-0.18l-6.47-14.99l1.79-2.68l0.63-10.6l-1.6-6.31L258.71,372.79L258.71,372.79z","name":"Bolivia"},"py":{"path":"M291.76,399.51l2.2,2.4l-0.26,5.08l6.34-0.39l4.79,6.13l-0.39,5.47l-3.1,4.69l-6.34,0.26l-0.26-2.61l1.81-4.3l-6.21-3.91h-5.17l-3.88-4.17l2.82-8.06L291.76,399.51L291.76,399.51z","name":"Paraguay"},"uy":{"path":"M300.36,431.93l-2.05,2.19l0.85,11.78l6.44,1.87l8.19-8.21L300.36,431.93L300.36,431.93z","name":"Uruguay"},"ar":{"path":"M305.47,418.2l1.94,1.82l-7.37,10.95l-2.59,2.87l0.9,12.51l5.69,6.91l-4.78,8.34l-3.62,1.56h-4.14l1.16,6.51l-6.47,2.22l1.55,5.47l-3.88,12.38l4.79,3.91l-2.59,6.38l-4.4,6.91l2.33,4.82l-5.69,0.91l-4.66-5.73l-0.78-17.85l-7.24-30.32l2.19-10.6l-4.66-13.55l3.1-17.59l2.85-3.39l-0.7-2.57l3.66-3.34l8.16,0.56l4.56,4.87l5.27,0.09l5.4,3.3l-1.59,3.72l0.38,3.76l7.65-0.36L305.47,418.2L305.47,418.2M288.92,518.79l0.26,5.73l4.4-0.39l3.75-2.48l-6.34-1.3L288.92,518.79L288.92,518.79z","name":"Argentina"},"cl":{"path":"M285.04,514.1l-4.27,9.38l7.37,0.78l0.13-6.25L285.04,514.1L285.04,514.1M283.59,512.63l-3.21,3.55l-0.39,4.17l-6.21-3.52l-6.6-9.51l-1.94-3.39l2.72-3.52l-0.26-4.43l-3.1-1.3l-2.46-1.82l0.52-2.48l3.23-0.91l0.65-14.33l-5.04-2.87l-3.29-74.59l0.85-1.48l6.44,14.85l2.06,0.04l0.67,2.37l-2.74,3.32l-3.15,17.87l4.48,13.76l-2.07,10.42l7.3,30.64l0.77,17.92l5.23,6.05L283.59,512.63L283.59,512.63M262.28,475.14l-1.29,1.95l0.65,3.39l1.29,0.13l0.65-4.3L262.28,475.14L262.28,475.14z","name":"Chile"},"br":{"path":"M314.24,438.85l6.25-12.02l0.23-10.1l11.66-7.52h6.53l5.13-8.69l0.93-16.68l-2.1-4.46l12.36-11.28l0.47-12.45l-16.79-8.22l-20.28-6.34l-9.56-0.94l2.57-5.4l-0.7-8.22l-2.09-0.69l-3.09,6.14l-1.62,2.03l-4.16-1.84l-13.99,4.93l-4.66-5.87l0.75-6.13l-4.4,4.48l-4.86-2.62l-0.49,0.69l0.01,2.13l4.19,2.25l-6.29,6.63l-3.97-0.04l-4.02-4.09l-4.55,0.14l-0.56,4.86l2.61,3.17l-3.08,9.87l-3.6,0.28l-5.73,3.62l-1.4,7.11l4.97,5.32l0.91-1.03l3.49-0.94l2.98,5.02l8.53-3.66l3.31,0.19l2.28,8.07l12.17,3.86l2.1,6.44l5.18,0.62l2.47,6.15l-1.67,5.47l2.18,2.86l-0.32,4.26l5.84-0.55l5.35,6.76l-0.42,4.75l3.17,2.68l-7.6,11.51L314.24,438.85L314.24,438.85z","name":"Brazil"},"bz":{"path":"M204.56,282.4l-0.05,3.65h0.84l2.86-5.34h-1.94L204.56,282.4L204.56,282.4z","name":"Belize"},"mn":{"path":"M673.8,170.17l5.82-7.72l6.99,3.23l4.75,1.27l5.82-5.34l-3.95-2.91l2.6-3.67l7.76,2.74l2.69,4.41l4.86,0.13l2.54-1.89l5.23-0.21l1.14,1.94l8.69,0.44l5.5-5.61l7.61,0.8l-0.44,7.64l3.33,0.76l4.09-1.86l4.33,2.14l-0.1,1.08l-3.14,0.09l-3.27,6.86l-2.54,0.25l-9.88,12.91l-10.09,4.45l-6.31,0.49l-5.24-3.38l-6.7,3.58l-6.6-2.05l-1.87-4.79l-12.5-0.88l-6.4-10.85l-3.11-0.2L673.8,170.17L673.8,170.17z","name":"Mongolia"},"kp":{"path":"M778.28,194.27l1.84,0.77l0.56,6.44l3.65,0.21l3.44-4.03l-1.19-1.06l0.14-4.32l3.16-3.82l-1.61-2.9l1.05-1.2l0.58-3l-1.83-0.83l-1.56,0.79l-1.93,5.86l-3.12-0.27l-3.61,4.26L778.28,194.27L778.28,194.27z","name":"North Korea"},"kr":{"path":"M788.34,198.2l6.18,5.04l1.05,4.88l-0.21,2.62l-3.02,3.4l-2.6,0.14l-2.95-6.37l-1.12-3.04l1.19-0.92l-0.28-1.27l-1.47-0.66L788.34,198.2L788.34,198.2z","name":"South Korea"},"kz":{"path":"M576.69,188.62l4.1-1.75l4.58-0.16l0.32,7h-2.68l-2.05,3.34l2.68,4.45l3.95,2.23l0.36,2.55l1.45-0.48l1.34-1.59l2.21,0.48l1.11,2.23h2.84v-2.86l-1.74-5.09l-0.79-4.13l5.05-2.23l6.79,1.11l4.26,4.29l9.63-0.95l5.37,7.63l6.31,0.32l1.74-2.86l2.21-0.48l0.32-3.18l3.31-0.16l1.74,2.07l1.74-4.13l14.99,2.07l2.52-3.34l-4.26-5.25l5.68-12.4l4.58,0.32l3.16-7.63l-6.31-0.64l-3.63-3.5l-10,1.16l-12.88-12.45l-4.54,4.03l-13.77-6.25l-16.89,8.27l-0.47,5.88l3.95,4.61l-7.7,4.35l-9.99-0.22l-2.09-3.07l-7.83-0.43l-7.42,4.77l-0.16,6.52L576.69,188.62L576.69,188.62z","name":"Kazakhstan"},"tm":{"path":"M593.85,207.59l-0.62,2.63h-4.15v3.56l4.46,2.94l-1.38,4.03v1.86l1.85,0.31l2.46-3.25l5.54-1.24l11.84,4.49l0.15,3.25l6.61,0.62l7.38-7.75l-0.92-2.48l-4.92-1.08l-13.84-8.99l-0.62-3.25h-5.23l-2.31,4.34h-2.31L593.85,207.59L593.85,207.59z","name":"Turkmenistan"},"uz":{"path":"M628.92,219.06l3.08,0.16v-5.27l-2.92-1.7l4.92-6.2h2l2,2.33l5.23-2.01l-7.23-2.48l-0.28-1.5l-1.72,0.42l-1.69,2.94l-7.29-0.24l-5.35-7.57l-9.4,0.93l-4.48-4.44l-6.2-1.05l-4.5,1.83l2.61,8.68l0.03,2.92l1.9,0.04l2.33-4.44l6.2,0.08l0.92,3.41l13.29,8.82l5.14,1.18L628.92,219.06L628.92,219.06z","name":"Uzbekistan"},"tj":{"path":"M630.19,211.84l4.11-5.1h1.55l0.54,1.14l-1.9,1.38v1.14l1.25,0.9l6.01,0.36l1.96-0.84l0.89,0.18l0.6,1.92l3.57,0.36l1.79,3.78l-0.54,1.14l-0.71,0.06l-0.71-1.44l-1.55-0.12l-2.68,0.36l-0.18,2.52l-2.68-0.18l0.12-3.18l-1.96-1.92l-2.98,2.46l0.06,1.62l-2.62,0.9h-1.55l0.12-5.58L630.19,211.84L630.19,211.84z","name":"Tajikistan"},"kg":{"path":"M636.81,199.21l-0.31,2.53l0.25,1.56l8.7,2.92l-7.64,3.08l-0.87-0.72l-1.65,1.06l0.08,0.58l0.88,0.4l5.36,0.14l2.72-0.82l3.49-4.4l4.37,0.76l5.27-7.3l-14.1-1.92l-1.95,4.73l-2.46-2.64L636.81,199.21L636.81,199.21z","name":"Kyrgyz Republic"},"af":{"path":"M614.12,227.05l1.59,12.46l3.96,0.87l0.37,2.24l-2.84,2.37l5.29,4.27l10.28-3.7l0.82-4.38l6.47-4.04l2.48-9.36l1.85-1.99l-1.92-3.34l6.26-3.87l-0.8-1.12l-2.89,0.18l-0.26,2.66l-3.88-0.04l-0.07-3.55l-1.25-1.49l-2.1,1.91l0.06,1.75l-3.17,1.2l-5.85-0.37l-7.6,7.96L614.12,227.05L614.12,227.05z","name":"Afghanistan"},"pk":{"path":"M623.13,249.84l2.6,3.86l-0.25,1.99l-3.46,1.37l-0.25,3.24h3.96l1.36-1.12h7.54l6.8,5.98l0.87-2.87h5.07l0.12-3.61l-5.19-4.98l1.11-2.74l5.32-0.37l7.17-14.95l-3.96-3.11l-1.48-5.23l9.64-0.87l-5.69-8.1l-3.03-0.82l-1.24,1.5l-0.93,0.07l-5.69,3.61l1.86,3.12l-2.1,2.24l-2.6,9.59l-6.43,4.11l-0.87,4.49L623.13,249.84L623.13,249.84z","name":"Pakistan"},"in":{"path":"M670.98,313.01l4.58-2.24l2.72-9.84l-0.12-12.08l15.58-16.82v-3.99l3.21-1.25l-0.12-4.61l-3.46-6.73l1.98-3.61l4.33,3.99l5.56,0.25v2.24l-1.73,1.87l0.37,1l2.97,0.12l0.62,3.36h0.87l2.23-3.99l1.11-10.46l3.71-2.62l0.12-3.61l-1.48-2.87l-2.35-0.12l-9.2,6.08l0.58,3.91l-6.46-0.02l-2.28-2.79l-1.24,0.16l0.42,3.88l-13.97-1l-8.66-3.86l-0.46-4.75l-5.77-3.58l-0.07-7.37l-3.96-4.53l-9.1,0.87l0.99,3.96l4.46,3.61l-7.71,15.78l-5.16,0.39l-0.85,1.9l5.08,4.7l-0.25,4.75l-5.19-0.08l-0.56,2.36l4.31-0.19l0.12,1.87l-3.09,1.62l1.98,3.74l3.83,1.25l2.35-1.74l1.11-3.11l1.36-0.62l1.61,1.62l-0.49,3.99l-1.11,1.87l0.25,3.24L670.98,313.01L670.98,313.01z","name":"India"},"np":{"path":"M671.19,242.56l0.46,4.27l8.08,3.66l12.95,0.96l-0.49-3.13l-8.65-2.38l-7.34-4.37L671.19,242.56L671.19,242.56z","name":"Nepal"},"bt":{"path":"M695.4,248.08l1.55,2.12l5.24,0.04l-0.53-2.9L695.4,248.08L695.4,248.08z","name":"Bhutan"},"bd":{"path":"M695.57,253.11l-1.31,2.37l3.4,6.46l0.1,5.04l0.62,1.35l3.99,0.07l2.26-2.17l1.64,0.99l0.33,3.07l1.31-0.82l0.08-3.92l-1.1-0.13l-0.69-3.33l-2.78-0.1l-0.69-1.85l1.7-2.27l0.03-1.12h-4.94L695.57,253.11L695.57,253.11z","name":"Bangladesh"},"mm":{"path":"M729.44,303.65l-2.77-4.44l2.01-2.82l-1.9-3.49l-1.79-0.34l-0.34-5.86l-2.68-5.19l-0.78,1.24l-1.79,3.04l-2.24,0.34l-1.12-1.47l-0.56-3.95l-1.68-3.16l-6.84-6.45l1.68-1.11l0.31-4.67l2.5-4.2l1.08-10.45l3.62-2.47l0.12-3.81l2.17,0.72l3.42,4.95l-2.54,5.44l1.71,4.27l4.23,1.66l0.77,4.65l5.68,0.88l-1.57,2.71l-7.16,2.82l-0.78,4.62l5.26,6.76l0.22,3.61l-1.23,1.24l0.11,1.13l3.92,5.75l0.11,5.97L729.44,303.65L729.44,303.65z","name":"Myanmar"},"th":{"path":"M730.03,270.47l3.24,4.17v5.07l1.12,0.56l5.15-2.48l1.01,0.34l6.15,7.1l-0.22,4.85l-2.01-0.34l-1.79-1.13l-1.34,0.11l-2.35,3.94l0.45,2.14l1.9,1.01l-0.11,2.37l-1.34,0.68l-4.59-3.16v-2.82l-1.9-0.11l-0.78,1.24l-0.4,12.62l2.97,5.42l5.26,5.07l-0.22,1.47l-2.8-0.11l-2.57-3.83h-2.69l-3.36-2.71l-1.01-2.82l1.45-2.37l0.5-2.14l1.58-2.8l-0.07-6.44l-3.86-5.58l-0.16-0.68l1.25-1.26l-0.29-4.43l-5.14-6.51l0.6-3.75L730.03,270.47L730.03,270.47z","name":"Thailand"},"kh":{"path":"M740.48,299.47l4.09,4.37l7.61-5.64l0.67-8.9l-3.93,2.71l-2.04-1.14l-2.77-0.37l-1.55-1.09l-0.75,0.04l-2.03,3.33l0.33,1.54l2.06,1.15l-0.25,3.13L740.48,299.47L740.48,299.47z","name":"Cambodia"},"la":{"path":"M735.47,262.93l-2.42,1.23l-2.01,5.86l3.36,4.28l-0.56,4.73l0.56,0.23l5.59-2.71l7.5,8.38l-0.18,5.28l1.63,0.88l4.03-3.27l-0.33-2.59l-11.63-11.05l0.11-1.69l1.45-1.01l-1.01-2.82l-4.81-0.79L735.47,262.93L735.47,262.93z","name":"Lao People's Democratic Republic"},"vn":{"path":"M745.06,304.45l1.19,1.87l0.22,2.14l3.13,0.34l3.8-5.07l3.58-1.01l1.9-5.18l-0.89-8.34l-3.69-5.07l-3.89-3.11l-4.95-8.5l3.55-5.94l-5.08-5.83l-4.07-0.18l-3.66,1.97l1.09,4.71l4.88,0.86l1.31,3.63l-1.72,1.12l0.11,0.9l11.45,11.2l0.45,3.29l-0.69,10.4L745.06,304.45L745.06,304.45z","name":"Vietnam"},"ge":{"path":"M555.46,204.16l3.27,4.27l4.08,1.88l2.51-0.01l4.31-1.17l1.08-1.69l-12.75-4.77L555.46,204.16L555.46,204.16z","name":"Georgia"},"am":{"path":"M569.72,209.89l4.8,6.26l-1.41,1.65l-3.4-0.59l-4.22-3.78l0.23-2.48L569.72,209.89L569.72,209.89z","name":"Armenia"},"az":{"path":"M571.41,207.72l-1.01,1.72l4.71,6.18l1.64-0.53l2.7,2.83l1.17-4.96l2.93,0.47l-0.12-1.42l-4.82-4.22l-0.92,2.48L571.41,207.72L571.41,207.72z","name":"Azerbaijan"},"ir":{"path":"M569.65,217.95l-1.22,1.27l0.12,2.01l1.52,2.13l5.39,5.9l-0.82,2.36h-0.94l-0.47,2.36l3.05,3.9l2.81,0.24l5.63,7.79l3.16,0.24l2.46,1.77l0.12,3.54l9.73,5.67h3.63l2.23-1.89l2.81-0.12l1.64,3.78l10.51,1.46l0.31-3.86l3.48-1.26l0.16-1.38l-2.77-3.78l-6.17-4.96l3.24-2.95l-0.23-1.3l-4.06-0.63l-1.72-13.7l-0.2-3.15l-11.01-4.21l-4.88,1.1l-2.73,3.35l-2.42-0.16l-0.7,0.59l-5.39-0.35l-6.8-4.96l-2.53-2.77l-1.16,0.28l-2.09,2.39L569.65,217.95L569.65,217.95z","name":"Iran"},"tr":{"path":"M558.7,209.19l-2.23,2.36l-8.2-0.24l-4.92-2.95l-4.8-0.12l-5.51,3.9l-5.16,0.24l-0.47,2.95h-5.86l-2.34,2.13v1.18l1.41,1.18v1.3l-0.59,1.54l0.59,1.3l1.88-0.94l1.88,2.01l-0.47,1.42l-0.7,0.95l1.05,1.18l5.16,1.06l3.63-1.54v-2.24l1.76,0.35l4.22,2.48l4.57-0.71l1.99-1.89l1.29,0.47v2.13h1.76l1.52-2.95l13.36-1.42l5.83-0.71l-1.54-2.02l-0.03-2.73l1.17-1.4l-4.26-3.42l0.23-2.95h-2.34L558.7,209.19L558.7,209.19M523.02,209.7l-0.16,3.55l3.1-0.95l1.42-0.95l-0.42-1.54l-1.47-1.17L523.02,209.7L523.02,209.7z","name":"Turkey"},"om":{"path":"M598.38,280.84l7.39-4.26l1.31-6.25l-1.62-0.93l0.67-6.7l1.41-0.82l1.51,2.37l8.99,4.7v2.61l-10.89,16.03l-5.01,0.17L598.38,280.84L598.38,280.84z","name":"Oman"},"ae":{"path":"M594.01,264.94l0.87,3.48l9.86,0.87l0.69-7.14l1.9-1.04l0.52-2.61l-3.11,0.87l-3.46,5.23L594.01,264.94L594.01,264.94z","name":"United Arab Emirates"},"qa":{"path":"M592.63,259.02l-0.52,4.01l1.54,1.17l1.4-0.13l0.52-5.05l-1.21-0.87L592.63,259.02L592.63,259.02z","name":"Qatar"},"kw":{"path":"M583.29,247.17l-2.25-1.22l-1.56,1.57l0.17,3.14l3.63,1.39L583.29,247.17L583.29,247.17z","name":"Kuwait"},"sa":{"path":"M584,253.24l7.01,9.77l2.26,1.8l1.01,4.38l10.79,0.85l1.22,0.64l-1.21,5.4l-7.09,4.18l-10.37,3.14l-5.53,5.4l-6.57-3.83l-3.98,3.48L566,279.4l-3.8-1.74l-1.38-2.09v-4.53l-13.83-16.72l-0.52-2.96h3.98l4.84-4.18l0.17-2.09l-1.38-1.39l2.77-2.26l5.88,0.35l10.03,8.36l5.92-0.27l0.38,1.46L584,253.24L584,253.24z","name":"Saudi Arabia"},"sy":{"path":"M546.67,229.13l-0.35,2.54l2.82,1.18l-0.12,7.04l2.82-0.06l2.82-2.13l1.06-0.18l6.4-5.09l1.29-7.39l-12.79,1.3l-1.35,2.96L546.67,229.13L546.67,229.13z","name":"Syrian Arab Republic"},"iq":{"path":"M564.31,225.03l-1.56,7.71l-6.46,5.38l0.41,2.54l6.31,0.43l10.05,8.18l5.62-0.16l0.15-1.89l2.06-2.21l2.88,1.63l0.38-0.36l-5.57-7.41l-2.64-0.16l-3.51-4.51l0.7-3.32l1.07-0.14l0.37-1.47l-4.78-5.03L564.31,225.03L564.31,225.03z","name":"Iraq"},"jo":{"path":"M548.9,240.78l-2.46,8.58l-0.11,1.31h3.87l4.33-3.82l0.11-1.45l-1.77-1.81l3.17-2.63l-0.46-2.44l-0.87,0.2l-2.64,1.89L548.9,240.78L548.9,240.78z","name":"Jordan"},"lb":{"path":"M546.2,232.44l0.06,1.95l-0.82,2.96l2.82,0.24l0.18-4.2L546.2,232.44L546.2,232.44z","name":"Lebanon"},"il":{"path":"M545.32,238.06l-1.58,5.03l2.05,6.03l2.35-8.81v-1.89L545.32,238.06L545.32,238.06z","name":"Israel"},"cy":{"path":"M543.21,229.84l1.23,0.89l-3.81,3.61l-1.82-0.06l-1.35-0.95l0.18-1.77l2.76-0.18L543.21,229.84L543.21,229.84z","name":"Cyprus"},"gb":{"path":"M446.12,149.08l-1.83,2.77l0.73,1.11h4.22v1.85l-1.1,1.48l0.73,3.88l2.38,4.62l1.83,4.25l2.93,1.11l1.28,2.22l-0.18,2.03l-1.83,1.11l-0.18,0.92l1.28,0.74l-1.1,1.48l-2.57,1.11l-4.95-0.55l-7.71,3.51l-2.57-1.29l7.34-4.25l-0.92-0.55l-3.85-0.37l2.38-3.51l0.37-2.96l3.12-0.37l-0.55-5.73l-3.67-0.18l-1.1-1.29l0.18-4.25l-2.2,0.18l2.2-7.39l4.04-2.96L446.12,149.08L446.12,149.08M438.42,161.47l-3.3,0.37l-0.18,2.96l2.2,1.48l2.38-0.55l0.92-1.66L438.42,161.47L438.42,161.47z","name":"United Kingdom"},"ie":{"path":"M439.51,166.55l-0.91,6l-8.07,2.96h-2.57l-1.83-1.29v-1.11l4.04-2.59l-1.1-2.22l0.18-3.14l3.49,0.18l1.6-3.76l-0.21,3.34l2.71,2.15L439.51,166.55L439.51,166.55z","name":"Ireland"},"se":{"path":"M497.72,104.58l1.96,1.81h3.67l2.02,3.88l0.55,6.65l-4.95,3.51v3.51l-3.49,4.81l-2.02,0.18l-2.75,4.62l0.18,4.44l4.77,3.51l-0.37,2.03l-1.83,2.77l-2.75,2.4l0.18,7.95l-4.22,1.48l-1.47,3.14h-2.02l-1.1-5.54l-4.59-7.04l3.77-6.31l0.26-15.59l2.6-1.43l0.63-8.92l7.41-10.61L497.72,104.58L497.72,104.58M498.49,150.17l-2.11,1.67l1.06,2.45l1.87-1.82L498.49,150.17L498.49,150.17z","name":"Sweden"},"fi":{"path":"M506.79,116.94l2.07,0.91l1.28,2.4l-1.28,1.66l-6.42,7.02l-1.1,3.7l1.47,5.36l4.95,3.7l6.6-3.14l5.32-0.74l4.95-7.95l-3.67-8.69l-3.49-8.32l0.55-5.36l-2.2-0.37l-0.57-3.91l-2.96-4.83l-3.28,2.27l-1.29,5.27l-3.48-2.09l-4.84-1.18l-1.08,1.26l1.86,1.68l3.39-0.06l2.73,4.41L506.79,116.94L506.79,116.94z","name":"Finland"},"lv":{"path":"M518.07,151.37l-6.85-1.11l0.15,3.83l6.35,3.88l2.6-0.76l-0.15-2.92L518.07,151.37L518.07,151.37z","name":"Latvia"},"lt":{"path":"M510.81,154.7l-2.15-0.05l-2.95,2.82h-2.5l0.15,3.53l-1.5,2.77l5.4,0.05l1.55-0.2l1.55,1.87l3.55-0.15l3.4-4.33l-0.2-2.57L510.81,154.7L510.81,154.7z","name":"Lithuania"},"by":{"path":"M510.66,166.29l1.5,2.47l-0.6,1.97l0.1,1.56l0.55,1.87l3.1-1.76l3.85,0.1l2.7,1.11h6.85l2-4.79l1.2-1.81v-1.21l-4.3-6.05l-3.8-1.51l-3.1-0.35l-2.7,0.86l0.1,2.72l-3.75,4.74L510.66,166.29L510.66,166.29z","name":"Belarus"},"pl":{"path":"M511.46,174.76l0.85,1.56l0.2,1.66l-0.7,1.61l-1.6,3.08l-1.35,0.61l-1.75-0.76l-1.05,0.05l-2.55,0.96l-2.9-0.86l-4.7-3.33l-4.6-2.47l-1.85-2.82l-0.35-6.65l3.6-3.13l4.7-1.56l1.75-0.2l-0.7,1.41l0.45,0.55l7.91,0.15l1.7-0.05l2.8,4.29l-0.7,1.76l0.3,2.07L511.46,174.76L511.46,174.76z","name":"Poland"},"it":{"path":"M477.56,213.38l-2.65,1.34l0.35,5.17l2.12,0.36l1.59-1.52v-4.9L477.56,213.38L477.56,213.38M472.27,196.98l-0.62,1.57l0.17,1.71l2.39,2.79l3.76-0.13l8.3,9.64l5.18,1.5l3.06,2.89l0.73,6.59l1.64-0.96l1.42-3.59l-0.35-2.58l2.43-0.22l0.35-1.46l-6.85-3.28l-6.5-6.39l-2.59-3.82l-0.63-3.63l3.31-0.79l-0.85-2.39l-2.03-1.71l-1.75-0.08l-2.44,0.67l-2.3,3.22l-1.39,0.92l-2.15-1.32L472.27,196.98L472.27,196.98M492.44,223.02l-1.45-0.78l-4.95,0.78l0.17,1.34l4.45,2.24l0.67,0.73l1.17,0.17L492.44,223.02L492.44,223.02z","name":"Italy"},"fr":{"path":"M477.83,206.96l-1.95,1.96l-0.18,1.78l1.59,0.98l0.62-0.09l0.35-2.59L477.83,206.96L477.83,206.96M460.4,178.7l-2.21,0.54l-4.42,4.81l-1.33,0.09l-1.77-1.25l-1.15,0.27l-0.88,2.76l-6.46,0.18l0.18,1.43l4.42,2.94l5.13,4.1l-0.09,4.9l-2.74,4.81l5.93,2.85l6.02,0.18l1.86-2.14l3.8,0.09l1.06,0.98l3.8-0.27l1.95-2.5l-2.48-2.94l-0.18-1.87l0.53-2.05l-1.24-1.78l-2.12,0.62l-0.27-1.6l4.69-5.17v-3.12l-3.1-1.78l-1.59-0.27L460.4,178.7L460.4,178.7z","name":"France"},"nl":{"path":"M470.09,168.27l-4.53,2.23l0.96,0.87l0.1,2.23l-0.96-0.19l-1.06-1.65l-2.53,4.01l3.89,0.81l1.45,1.53l0.77,0.02l0.51-3.46l2.45-1.03L470.09,168.27L470.09,168.27z","name":"Netherlands"},"be":{"path":"M461.61,176.52l-0.64,1.6l6.88,4.54l1.98,0.47l0.07-2.15l-1.73-1.94h-1.06l-1.45-1.65L461.61,176.52L461.61,176.52z","name":"Belgium"},"de":{"path":"M471.14,167.88l3.57-0.58v-2.52l2.99-0.49l1.64,1.65l1.73,0.19l2.7-1.17l2.41,0.68l2.12,1.84l0.29,6.89l2.12,2.82l-2.79,0.39l-4.63,2.91l0.39,0.97l4.14,3.88l-0.29,1.94l-3.85,1.94l-3.57,0.1l-0.87,1.84h-1.83l-0.87-1.94l-3.18-0.78l-0.1-3.2l-2.7-1.84l0.29-2.33l-1.83-2.52l0.48-3.3l2.5-1.17L471.14,167.88L471.14,167.88z","name":"Germany"},"dk":{"path":"M476.77,151.5l-4.15,4.59l-0.15,2.99l1.89,4.93l2.96-0.56l-0.37-4.03l2.04-2.28l-0.04-1.79l-1.44-3.73L476.77,151.5L476.77,151.5M481.44,159.64l-0.93-0.04l-1.22,1.12l0.15,1.75l2.89,0.08l0.15-1.98L481.44,159.64L481.44,159.64z","name":"Denmark"},"ch":{"path":"M472.91,189.38l-4.36,4.64l0.09,0.47l1.79-0.56l1.61,2.24l2.72-0.96l1.88,1.46l0.77-0.44l2.32-3.64l-0.59-0.56l-2.29-0.06l-1.11-2.27L472.91,189.38L472.91,189.38z","name":"Switzerland"},"cz":{"path":"M488.43,184.87h2.97h1.46l2.37,1.69l4.39-3.65l-4.26-3.04l-4.22-2.04l-2.89,0.52l-3.92,2.52L488.43,184.87L488.43,184.87z","name":"Czech Republic"},"sk":{"path":"M495.84,187.13l0.69,0.61l0.09,1.04l7.63-0.17l5.64-2.43l-0.09-2.47l-1.08,0.48l-1.55-0.83l-0.95-0.04l-2.5,1l-3.4-0.82L495.84,187.13L495.84,187.13z","name":"Slovakia"},"at":{"path":"M480.63,190.12l-0.65,1.35l0.56,0.96l2.33-0.48h1.98l2.15,1.82l4.57-0.83l3.36-2l0.86-1.35l-0.13-1.74l-3.02-2.26l-4.05,0.04l-0.34,2.3l-4.26,2.08L480.63,190.12L480.63,190.12z","name":"Austria"},"hu":{"path":"M496.74,189.6l-1.16,1.82l0.09,2.78l1.85,0.95l5.69,0.17l7.93-6.68l0.04-1.48l-0.86-0.43l-5.73,2.6L496.74,189.6L496.74,189.6z","name":"Hungary"},"si":{"path":"M494.8,191.99l-2.54,1.52l-4.74,1.04l0.95,2.74l3.32,0.04l3.06-2.56L494.8,191.99L494.8,191.99z","name":"Slovenia"},"hr":{"path":"M495.62,195.16l-3.53,2.91h-3.58l-0.43,2.52l1.64,0.43l0.82-1.22l1.29,1.13l1.03,3.6l7.07,3.3l0.7-0.8l-7.17-7.4l0.73-1.35l6.81-0.26l0.69-2.17l-4.44,0.13L495.62,195.16L495.62,195.16z","name":"Croatia"},"ba":{"path":"M494.8,198.94l-0.37,0.61l6.71,6.92l2.46-3.62l-0.09-1.43l-2.15-2.61L494.8,198.94L494.8,198.94z","name":"Bosnia and Herzegovina"},"mt":{"path":"M492.61,230.47l-1.67,0.34l0.06,1.85l1.5,0.5l0.67-0.56L492.61,230.47L492.61,230.47z","name":"Malta"},"ua":{"path":"M515.57,173.15l-2.9,1.63l0.72,3.08l-2.68,5.65l0.02,2.49l1.26,0.8l8.08,0.4l2.26-1.87l2.42,0.81l3.47,4.63l-2.54,4.56l3.02,0.88l3.95-4.55l2.26,0.41l2.1,1.46l-1.85,2.44l2.5,3.9h2.66l1.37-2.6l2.82-0.57l0.08-2.11l-5.24-0.81l0.16-2.27h5.08l5.48-4.39l2.42-2.11l0.4-6.66l-10.8-0.97l-4.43-6.25l-3.06-1.05l-3.71,0.16l-1.67,4.13l-7.6,0.1l-2.47-1.14L515.57,173.15L515.57,173.15z","name":"Ukraine"},"md":{"path":"M520.75,187.71l3.1,4.77l-0.26,2.7l1.11,0.05l2.63-4.45l-3.16-3.92l-1.79-0.74L520.75,187.71L520.75,187.71z","name":"Moldova"},"ro":{"path":"M512.18,187.6l-0.26,1.48l-5.79,4.82l4.84,7.1l3.1,2.17h5.58l1.84-1.54l2.47-0.32l1.84,1.11l3.26-3.71l-0.63-1.86l-3.31-0.85l-2.26-0.11l0.11-3.18l-3-4.72L512.18,187.6L512.18,187.6z","name":"Romania"},"rs":{"path":"M505.55,194.54l-2.05,1.54h-1l-0.68,2.12l2.42,2.81l0.16,2.23l-3,4.24l0.42,1.27l1.74,0.32l1.37-1.86l0.74-0.05l1.26,1.22l3.84-1.17l-0.32-5.46L505.55,194.54L505.55,194.54z","name":"Serbia"},"bg":{"path":"M511.44,202.39l0.16,4.98l1.68,3.5l6.31,0.11l2.84-2.01l2.79-1.11l-0.68-3.18l0.63-1.7l-1.42-0.74l-1.95,0.16l-1.53,1.54l-6.42,0.05L511.44,202.39L511.44,202.39z","name":"Bulgaria"},"al":{"path":"M504.02,209.76v4.61l1.32,2.49l0.95-0.11l1.63-2.97l-0.95-1.33l-0.37-3.29l-1.26-1.17L504.02,209.76L504.02,209.76z","name":"Albania"},"mk":{"path":"M510.92,208.01l-3.37,1.11l0.16,2.86l0.79,1.01l4-1.86L510.92,208.01L510.92,208.01z","name":"Macedonia"},"gr":{"path":"M506.71,217.6l-0.11,1.33l4.63,2.33l2.21,0.85l-1.16,1.22l-2.58,0.26l-0.37,1.17l0.89,2.01l2.89,1.54l1.26,0.11l0.16-3.45l1.89-2.28l-5.16-6.1l0.68-2.07l1.21-0.05l1.84,1.48l1.16-0.58l0.37-2.07l5.42,0.05l0.21-3.18l-2.26,1.59l-6.63-0.16l-4.31,2.23L506.71,217.6L506.71,217.6M516.76,230.59l1.63,0.05l0.68,1.01h2.37l1.58-0.58l0.53,0.64l-1.05,1.38l-4.63,0.16l-0.84-1.11l-0.89-0.53L516.76,230.59L516.76,230.59z","name":"Greece"}}});
Index: resources/assets/css/app.css
===================================================================
--- resources/assets/css/app.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/css/app.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,12315 @@
+@charset "UTF-8";
+
+.m-0 {
+  margin: 0px !important;
+}
+
+.m-5 {
+  margin: 5px !important;
+}
+
+.m-10 {
+  margin: 10px !important;
+}
+
+.m-15 {
+  margin: 15px !important;
+}
+
+.m-20 {
+  margin: 20px !important;
+}
+
+.m-25 {
+  margin: 25px !important;
+}
+
+.m-30 {
+  margin: 30px !important;
+}
+
+.m-35 {
+  margin: 35px !important;
+}
+
+.m-40 {
+  margin: 40px !important;
+}
+
+.m-45 {
+  margin: 45px !important;
+}
+
+.m-50 {
+  margin: 50px !important;
+}
+
+.m-t-b-0 {
+  margin-top: 0px !important;
+  margin-bottom: 0px !important;
+}
+
+.m-t-b-5 {
+  margin-top: 5px !important;
+  margin-bottom: 5px !important;
+}
+
+.m-t-b-10 {
+  margin-top: 10px !important;
+  margin-bottom: 10px !important;
+}
+
+.m-t-b-15 {
+  margin-top: 15px !important;
+  margin-bottom: 15px !important;
+}
+
+.m-t-b-20 {
+  margin-top: 20px !important;
+  margin-bottom: 20px !important;
+}
+
+.m-t-b-25 {
+  margin-top: 25px !important;
+  margin-bottom: 25px !important;
+}
+
+.m-t-b-30 {
+  margin-top: 30px !important;
+  margin-bottom: 30px !important;
+}
+
+.m-t-b-35 {
+  margin-top: 35px !important;
+  margin-bottom: 35px !important;
+}
+
+.m-t-b-40 {
+  margin-top: 40px !important;
+  margin-bottom: 40px !important;
+}
+
+.m-t-b-45 {
+  margin-top: 45px !important;
+  margin-bottom: 45px !important;
+}
+
+.m-t-b-50 {
+  margin-top: 50px !important;
+  margin-bottom: 50px !important;
+}
+
+.m-l-r-0 {
+  margin-left: 0px !important;
+  margin-right: 0px !important;
+}
+
+.m-l-r-5 {
+  margin-left: 5px !important;
+  margin-right: 5px !important;
+}
+
+.m-l-r-10 {
+  margin-left: 10px !important;
+  margin-right: 10px !important;
+}
+
+.m-l-r-15 {
+  margin-left: 15px !important;
+  margin-right: 15px !important;
+}
+
+.m-l-r-20 {
+  margin-left: 20px !important;
+  margin-right: 20px !important;
+}
+
+.m-l-r-25 {
+  margin-left: 25px !important;
+  margin-right: 25px !important;
+}
+
+.m-l-r-30 {
+  margin-left: 30px !important;
+  margin-right: 30px !important;
+}
+
+.m-l-r-35 {
+  margin-left: 35px !important;
+  margin-right: 35px !important;
+}
+
+.m-l-r-40 {
+  margin-left: 40px !important;
+  margin-right: 40px !important;
+}
+
+.m-l-r-45 {
+  margin-left: 45px !important;
+  margin-right: 45px !important;
+}
+
+.m-l-r-50 {
+  margin-left: 50px !important;
+  margin-right: 50px !important;
+}
+
+.m-t-0 {
+  margin-top: 0px !important;
+}
+
+.m-t-5 {
+  margin-top: 5px !important;
+}
+
+.m-t-10 {
+  margin-top: 10px !important;
+}
+
+.m-t-15 {
+  margin-top: 15px !important;
+}
+
+.m-t-20 {
+  margin-top: 20px !important;
+}
+
+.m-t-25 {
+  margin-top: 25px !important;
+}
+
+.m-t-30 {
+  margin-top: 30px !important;
+}
+
+.m-t-35 {
+  margin-top: 35px !important;
+}
+
+.m-t-40 {
+  margin-top: 40px !important;
+}
+
+.m-t-45 {
+  margin-top: 45px !important;
+}
+
+.m-t-50 {
+  margin-top: 50px !important;
+}
+
+.m-r-0 {
+  margin-right: 0px !important;
+}
+
+.m-r-5 {
+  margin-right: 5px !important;
+}
+
+.m-r-10 {
+  margin-right: 10px !important;
+}
+
+.m-r-15 {
+  margin-right: 15px !important;
+}
+
+.m-r-20 {
+  margin-right: 20px !important;
+}
+
+.m-r-25 {
+  margin-right: 25px !important;
+}
+
+.m-r-30 {
+  margin-right: 30px !important;
+}
+
+.m-r-35 {
+  margin-right: 35px !important;
+}
+
+.m-r-40 {
+  margin-right: 40px !important;
+}
+
+.m-r-45 {
+  margin-right: 45px !important;
+}
+
+.m-r-50 {
+  margin-right: 50px !important;
+}
+
+.m-b-0 {
+  margin-bottom: 0px !important;
+}
+
+.m-b-5 {
+  margin-bottom: 5px !important;
+}
+
+.m-b-10 {
+  margin-bottom: 10px !important;
+}
+
+.m-b-15 {
+  margin-bottom: 15px !important;
+}
+
+.m-b-20 {
+  margin-bottom: 20px !important;
+}
+
+.m-b-25 {
+  margin-bottom: 25px !important;
+}
+
+.m-b-30 {
+  margin-bottom: 30px !important;
+}
+
+.m-b-35 {
+  margin-bottom: 35px !important;
+}
+
+.m-b-40 {
+  margin-bottom: 40px !important;
+}
+
+.m-b-45 {
+  margin-bottom: 45px !important;
+}
+
+.m-b-50 {
+  margin-bottom: 50px !important;
+}
+
+.m-l-0 {
+  margin-left: 0px !important;
+}
+
+.m-l-5 {
+  margin-left: 5px !important;
+}
+
+.m-l-10 {
+  margin-left: 10px !important;
+}
+
+.m-l-15 {
+  margin-left: 15px !important;
+}
+
+.m-l-20 {
+  margin-left: 20px !important;
+}
+
+.m-l-25 {
+  margin-left: 25px !important;
+}
+
+.m-l-30 {
+  margin-left: 30px !important;
+}
+
+.m-l-35 {
+  margin-left: 35px !important;
+}
+
+.m-l-40 {
+  margin-left: 40px !important;
+}
+
+.m-l-45 {
+  margin-left: 45px !important;
+}
+
+.m-l-50 {
+  margin-left: 50px !important;
+}
+
+.m-t-0-minus {
+  margin-top: 0px !important;
+}
+
+.m-t-10-minus {
+  margin-top: -10px !important;
+}
+
+.m-t-20-minus {
+  margin-top: -20px !important;
+}
+
+.m-t-30-minus {
+  margin-top: -30px !important;
+}
+
+.m-t-40-minus {
+  margin-top: -40px !important;
+}
+
+.m-t-50-minus {
+  margin-top: -50px !important;
+}
+
+.m-t-60-minus {
+  margin-top: -60px !important;
+}
+
+.m-t-70-minus {
+  margin-top: -70px !important;
+}
+
+.m-t-80-minus {
+  margin-top: -80px !important;
+}
+
+.m-t-90-minus {
+  margin-top: -90px !important;
+}
+
+.m-t-100-minus {
+  margin-top: -100px !important;
+}
+
+.m-t-110-minus {
+  margin-top: -110px !important;
+}
+
+.m-t-120-minus {
+  margin-top: -120px !important;
+}
+
+.m-t-130-minus {
+  margin-top: -130px !important;
+}
+
+.m-t-140-minus {
+  margin-top: -140px !important;
+}
+
+.m-t-150-minus {
+  margin-top: -150px !important;
+}
+
+.m-t-160-minus {
+  margin-top: -160px !important;
+}
+
+.m-t-170-minus {
+  margin-top: -170px !important;
+}
+
+.m-t-180-minus {
+  margin-top: -180px !important;
+}
+
+.m-t-190-minus {
+  margin-top: -190px !important;
+}
+
+.m-t-200-minus {
+  margin-top: -200px !important;
+}
+
+.m-t-210-minus {
+  margin-top: -210px !important;
+}
+
+.m-t-220-minus {
+  margin-top: -220px !important;
+}
+
+.m-t-230-minus {
+  margin-top: -230px !important;
+}
+
+.m-t-240-minus {
+  margin-top: -240px !important;
+}
+
+.m-t-250-minus {
+  margin-top: -250px !important;
+}
+
+.m-t-260-minus {
+  margin-top: -260px !important;
+}
+
+.m-t-270-minus {
+  margin-top: -270px !important;
+}
+
+.m-t-280-minus {
+  margin-top: -280px !important;
+}
+
+.m-t-290-minus {
+  margin-top: -290px !important;
+}
+
+.m-t-300-minus {
+  margin-top: -300px !important;
+}
+
+.m-t-310-minus {
+  margin-top: -310px !important;
+}
+
+.m-t-320-minus {
+  margin-top: -320px !important;
+}
+
+.m-t-330-minus {
+  margin-top: -330px !important;
+}
+
+.m-t-340-minus {
+  margin-top: -340px !important;
+}
+
+.m-t-350-minus {
+  margin-top: -350px !important;
+}
+
+.m-t-360-minus {
+  margin-top: -360px !important;
+}
+
+.m-t-370-minus {
+  margin-top: -370px !important;
+}
+
+.m-t-380-minus {
+  margin-top: -380px !important;
+}
+
+.m-t-390-minus {
+  margin-top: -390px !important;
+}
+
+.m-t-400-minus {
+  margin-top: -400px !important;
+}
+
+.m-t-410-minus {
+  margin-top: -410px !important;
+}
+
+.m-t-420-minus {
+  margin-top: -420px !important;
+}
+
+.m-t-430-minus {
+  margin-top: -430px !important;
+}
+
+.m-t-440-minus {
+  margin-top: -440px !important;
+}
+
+.m-t-450-minus {
+  margin-top: -450px !important;
+}
+
+.m-t-460-minus {
+  margin-top: -460px !important;
+}
+
+.m-t-470-minus {
+  margin-top: -470px !important;
+}
+
+.m-t-480-minus {
+  margin-top: -480px !important;
+}
+
+.m-t-490-minus {
+  margin-top: -490px !important;
+}
+
+.m-t-500-minus {
+  margin-top: -500px !important;
+}
+
+.m-t-510-minus {
+  margin-top: -510px !important;
+}
+
+.m-t-520-minus {
+  margin-top: -520px !important;
+}
+
+.m-t-530-minus {
+  margin-top: -530px !important;
+}
+
+.m-t-540-minus {
+  margin-top: -540px !important;
+}
+
+.m-t-550-minus {
+  margin-top: -550px !important;
+}
+
+.m-t-560-minus {
+  margin-top: -560px !important;
+}
+
+.m-t-570-minus {
+  margin-top: -570px !important;
+}
+
+.m-t-580-minus {
+  margin-top: -580px !important;
+}
+
+.m-t-590-minus {
+  margin-top: -590px !important;
+}
+
+.m-t-600-minus {
+  margin-top: -600px !important;
+}
+
+.m-t-610-minus {
+  margin-top: -610px !important;
+}
+
+.m-t-620-minus {
+  margin-top: -620px !important;
+}
+
+.m-t-630-minus {
+  margin-top: -630px !important;
+}
+
+.m-t-640-minus {
+  margin-top: -640px !important;
+}
+
+.m-t-650-minus {
+  margin-top: -650px !important;
+}
+
+.m-t-660-minus {
+  margin-top: -660px !important;
+}
+
+.m-t-670-minus {
+  margin-top: -670px !important;
+}
+
+.m-t-680-minus {
+  margin-top: -680px !important;
+}
+
+.m-t-690-minus {
+  margin-top: -690px !important;
+}
+
+.m-t-700-minus {
+  margin-top: -700px !important;
+}
+
+.m-t-710-minus {
+  margin-top: -710px !important;
+}
+
+.m-t-720-minus {
+  margin-top: -720px !important;
+}
+
+.m-t-730-minus {
+  margin-top: -730px !important;
+}
+
+.m-t-740-minus {
+  margin-top: -740px !important;
+}
+
+.m-t-750-minus {
+  margin-top: -750px !important;
+}
+
+.m-t-760-minus {
+  margin-top: -760px !important;
+}
+
+.m-t-770-minus {
+  margin-top: -770px !important;
+}
+
+.m-t-780-minus {
+  margin-top: -780px !important;
+}
+
+.m-t-790-minus {
+  margin-top: -790px !important;
+}
+
+.m-t-800-minus {
+  margin-top: -800px !important;
+}
+
+.m-t-810-minus {
+  margin-top: -810px !important;
+}
+
+.m-t-820-minus {
+  margin-top: -820px !important;
+}
+
+.m-t-830-minus {
+  margin-top: -830px !important;
+}
+
+.m-t-840-minus {
+  margin-top: -840px !important;
+}
+
+.m-t-850-minus {
+  margin-top: -850px !important;
+}
+
+.m-t-860-minus {
+  margin-top: -860px !important;
+}
+
+.m-t-870-minus {
+  margin-top: -870px !important;
+}
+
+.m-t-880-minus {
+  margin-top: -880px !important;
+}
+
+.m-t-890-minus {
+  margin-top: -890px !important;
+}
+
+.m-t-900-minus {
+  margin-top: -900px !important;
+}
+
+.m-t-910-minus {
+  margin-top: -910px !important;
+}
+
+.m-t-920-minus {
+  margin-top: -920px !important;
+}
+
+.m-t-930-minus {
+  margin-top: -930px !important;
+}
+
+.m-t-940-minus {
+  margin-top: -940px !important;
+}
+
+.m-t-950-minus {
+  margin-top: -950px !important;
+}
+
+.m-t-960-minus {
+  margin-top: -960px !important;
+}
+
+.m-t-970-minus {
+  margin-top: -970px !important;
+}
+
+.m-t-980-minus {
+  margin-top: -980px !important;
+}
+
+.m-t-990-minus {
+  margin-top: -990px !important;
+}
+
+.m-t-1000-minus {
+  margin-top: -1000px !important;
+}
+
+.m-r-0-minus {
+  margin-right: 0px !important;
+}
+
+.m-r-10-minus {
+  margin-right: -10px !important;
+}
+
+.m-r-20-minus {
+  margin-right: -20px !important;
+}
+
+.m-r-30-minus {
+  margin-right: -30px !important;
+}
+
+.m-r-40-minus {
+  margin-right: -40px !important;
+}
+
+.m-r-50-minus {
+  margin-right: -50px !important;
+}
+
+.m-r-60-minus {
+  margin-right: -60px !important;
+}
+
+.m-r-70-minus {
+  margin-right: -70px !important;
+}
+
+.m-r-80-minus {
+  margin-right: -80px !important;
+}
+
+.m-r-90-minus {
+  margin-right: -90px !important;
+}
+
+.m-r-100-minus {
+  margin-right: -100px !important;
+}
+
+.m-r-110-minus {
+  margin-right: -110px !important;
+}
+
+.m-r-120-minus {
+  margin-right: -120px !important;
+}
+
+.m-r-130-minus {
+  margin-right: -130px !important;
+}
+
+.m-r-140-minus {
+  margin-right: -140px !important;
+}
+
+.m-r-150-minus {
+  margin-right: -150px !important;
+}
+
+.m-r-160-minus {
+  margin-right: -160px !important;
+}
+
+.m-r-170-minus {
+  margin-right: -170px !important;
+}
+
+.m-r-180-minus {
+  margin-right: -180px !important;
+}
+
+.m-r-190-minus {
+  margin-right: -190px !important;
+}
+
+.m-r-200-minus {
+  margin-right: -200px !important;
+}
+
+.m-r-210-minus {
+  margin-right: -210px !important;
+}
+
+.m-r-220-minus {
+  margin-right: -220px !important;
+}
+
+.m-r-230-minus {
+  margin-right: -230px !important;
+}
+
+.m-r-240-minus {
+  margin-right: -240px !important;
+}
+
+.m-r-250-minus {
+  margin-right: -250px !important;
+}
+
+.m-r-260-minus {
+  margin-right: -260px !important;
+}
+
+.m-r-270-minus {
+  margin-right: -270px !important;
+}
+
+.m-r-280-minus {
+  margin-right: -280px !important;
+}
+
+.m-r-290-minus {
+  margin-right: -290px !important;
+}
+
+.m-r-300-minus {
+  margin-right: -300px !important;
+}
+
+.m-r-310-minus {
+  margin-right: -310px !important;
+}
+
+.m-r-320-minus {
+  margin-right: -320px !important;
+}
+
+.m-r-330-minus {
+  margin-right: -330px !important;
+}
+
+.m-r-340-minus {
+  margin-right: -340px !important;
+}
+
+.m-r-350-minus {
+  margin-right: -350px !important;
+}
+
+.m-r-360-minus {
+  margin-right: -360px !important;
+}
+
+.m-r-370-minus {
+  margin-right: -370px !important;
+}
+
+.m-r-380-minus {
+  margin-right: -380px !important;
+}
+
+.m-r-390-minus {
+  margin-right: -390px !important;
+}
+
+.m-r-400-minus {
+  margin-right: -400px !important;
+}
+
+.m-r-410-minus {
+  margin-right: -410px !important;
+}
+
+.m-r-420-minus {
+  margin-right: -420px !important;
+}
+
+.m-r-430-minus {
+  margin-right: -430px !important;
+}
+
+.m-r-440-minus {
+  margin-right: -440px !important;
+}
+
+.m-r-450-minus {
+  margin-right: -450px !important;
+}
+
+.m-r-460-minus {
+  margin-right: -460px !important;
+}
+
+.m-r-470-minus {
+  margin-right: -470px !important;
+}
+
+.m-r-480-minus {
+  margin-right: -480px !important;
+}
+
+.m-r-490-minus {
+  margin-right: -490px !important;
+}
+
+.m-r-500-minus {
+  margin-right: -500px !important;
+}
+
+.m-r-510-minus {
+  margin-right: -510px !important;
+}
+
+.m-r-520-minus {
+  margin-right: -520px !important;
+}
+
+.m-r-530-minus {
+  margin-right: -530px !important;
+}
+
+.m-r-540-minus {
+  margin-right: -540px !important;
+}
+
+.m-r-550-minus {
+  margin-right: -550px !important;
+}
+
+.m-r-560-minus {
+  margin-right: -560px !important;
+}
+
+.m-r-570-minus {
+  margin-right: -570px !important;
+}
+
+.m-r-580-minus {
+  margin-right: -580px !important;
+}
+
+.m-r-590-minus {
+  margin-right: -590px !important;
+}
+
+.m-r-600-minus {
+  margin-right: -600px !important;
+}
+
+.m-r-610-minus {
+  margin-right: -610px !important;
+}
+
+.m-r-620-minus {
+  margin-right: -620px !important;
+}
+
+.m-r-630-minus {
+  margin-right: -630px !important;
+}
+
+.m-r-640-minus {
+  margin-right: -640px !important;
+}
+
+.m-r-650-minus {
+  margin-right: -650px !important;
+}
+
+.m-r-660-minus {
+  margin-right: -660px !important;
+}
+
+.m-r-670-minus {
+  margin-right: -670px !important;
+}
+
+.m-r-680-minus {
+  margin-right: -680px !important;
+}
+
+.m-r-690-minus {
+  margin-right: -690px !important;
+}
+
+.m-r-700-minus {
+  margin-right: -700px !important;
+}
+
+.m-r-710-minus {
+  margin-right: -710px !important;
+}
+
+.m-r-720-minus {
+  margin-right: -720px !important;
+}
+
+.m-r-730-minus {
+  margin-right: -730px !important;
+}
+
+.m-r-740-minus {
+  margin-right: -740px !important;
+}
+
+.m-r-750-minus {
+  margin-right: -750px !important;
+}
+
+.m-r-760-minus {
+  margin-right: -760px !important;
+}
+
+.m-r-770-minus {
+  margin-right: -770px !important;
+}
+
+.m-r-780-minus {
+  margin-right: -780px !important;
+}
+
+.m-r-790-minus {
+  margin-right: -790px !important;
+}
+
+.m-r-800-minus {
+  margin-right: -800px !important;
+}
+
+.m-r-810-minus {
+  margin-right: -810px !important;
+}
+
+.m-r-820-minus {
+  margin-right: -820px !important;
+}
+
+.m-r-830-minus {
+  margin-right: -830px !important;
+}
+
+.m-r-840-minus {
+  margin-right: -840px !important;
+}
+
+.m-r-850-minus {
+  margin-right: -850px !important;
+}
+
+.m-r-860-minus {
+  margin-right: -860px !important;
+}
+
+.m-r-870-minus {
+  margin-right: -870px !important;
+}
+
+.m-r-880-minus {
+  margin-right: -880px !important;
+}
+
+.m-r-890-minus {
+  margin-right: -890px !important;
+}
+
+.m-r-900-minus {
+  margin-right: -900px !important;
+}
+
+.m-r-910-minus {
+  margin-right: -910px !important;
+}
+
+.m-r-920-minus {
+  margin-right: -920px !important;
+}
+
+.m-r-930-minus {
+  margin-right: -930px !important;
+}
+
+.m-r-940-minus {
+  margin-right: -940px !important;
+}
+
+.m-r-950-minus {
+  margin-right: -950px !important;
+}
+
+.m-r-960-minus {
+  margin-right: -960px !important;
+}
+
+.m-r-970-minus {
+  margin-right: -970px !important;
+}
+
+.m-r-980-minus {
+  margin-right: -980px !important;
+}
+
+.m-r-990-minus {
+  margin-right: -990px !important;
+}
+
+.m-r-1000-minus {
+  margin-right: -1000px !important;
+}
+
+.m-b-0-minus {
+  margin-bottom: 0px !important;
+}
+
+.m-b-10-minus {
+  margin-bottom: -10px !important;
+}
+
+.m-b-20-minus {
+  margin-bottom: -20px !important;
+}
+
+.m-b-30-minus {
+  margin-bottom: -30px !important;
+}
+
+.m-b-40-minus {
+  margin-bottom: -40px !important;
+}
+
+.m-b-50-minus {
+  margin-bottom: -50px !important;
+}
+
+.m-b-60-minus {
+  margin-bottom: -60px !important;
+}
+
+.m-b-70-minus {
+  margin-bottom: -70px !important;
+}
+
+.m-b-80-minus {
+  margin-bottom: -80px !important;
+}
+
+.m-b-90-minus {
+  margin-bottom: -90px !important;
+}
+
+.m-b-100-minus {
+  margin-bottom: -100px !important;
+}
+
+.m-b-110-minus {
+  margin-bottom: -110px !important;
+}
+
+.m-b-120-minus {
+  margin-bottom: -120px !important;
+}
+
+.m-b-130-minus {
+  margin-bottom: -130px !important;
+}
+
+.m-b-140-minus {
+  margin-bottom: -140px !important;
+}
+
+.m-b-150-minus {
+  margin-bottom: -150px !important;
+}
+
+.m-b-160-minus {
+  margin-bottom: -160px !important;
+}
+
+.m-b-170-minus {
+  margin-bottom: -170px !important;
+}
+
+.m-b-180-minus {
+  margin-bottom: -180px !important;
+}
+
+.m-b-190-minus {
+  margin-bottom: -190px !important;
+}
+
+.m-b-200-minus {
+  margin-bottom: -200px !important;
+}
+
+.m-b-210-minus {
+  margin-bottom: -210px !important;
+}
+
+.m-b-220-minus {
+  margin-bottom: -220px !important;
+}
+
+.m-b-230-minus {
+  margin-bottom: -230px !important;
+}
+
+.m-b-240-minus {
+  margin-bottom: -240px !important;
+}
+
+.m-b-250-minus {
+  margin-bottom: -250px !important;
+}
+
+.m-b-260-minus {
+  margin-bottom: -260px !important;
+}
+
+.m-b-270-minus {
+  margin-bottom: -270px !important;
+}
+
+.m-b-280-minus {
+  margin-bottom: -280px !important;
+}
+
+.m-b-290-minus {
+  margin-bottom: -290px !important;
+}
+
+.m-b-300-minus {
+  margin-bottom: -300px !important;
+}
+
+.m-b-310-minus {
+  margin-bottom: -310px !important;
+}
+
+.m-b-320-minus {
+  margin-bottom: -320px !important;
+}
+
+.m-b-330-minus {
+  margin-bottom: -330px !important;
+}
+
+.m-b-340-minus {
+  margin-bottom: -340px !important;
+}
+
+.m-b-350-minus {
+  margin-bottom: -350px !important;
+}
+
+.m-b-360-minus {
+  margin-bottom: -360px !important;
+}
+
+.m-b-370-minus {
+  margin-bottom: -370px !important;
+}
+
+.m-b-380-minus {
+  margin-bottom: -380px !important;
+}
+
+.m-b-390-minus {
+  margin-bottom: -390px !important;
+}
+
+.m-b-400-minus {
+  margin-bottom: -400px !important;
+}
+
+.m-b-410-minus {
+  margin-bottom: -410px !important;
+}
+
+.m-b-420-minus {
+  margin-bottom: -420px !important;
+}
+
+.m-b-430-minus {
+  margin-bottom: -430px !important;
+}
+
+.m-b-440-minus {
+  margin-bottom: -440px !important;
+}
+
+.m-b-450-minus {
+  margin-bottom: -450px !important;
+}
+
+.m-b-460-minus {
+  margin-bottom: -460px !important;
+}
+
+.m-b-470-minus {
+  margin-bottom: -470px !important;
+}
+
+.m-b-480-minus {
+  margin-bottom: -480px !important;
+}
+
+.m-b-490-minus {
+  margin-bottom: -490px !important;
+}
+
+.m-b-500-minus {
+  margin-bottom: -500px !important;
+}
+
+.m-b-510-minus {
+  margin-bottom: -510px !important;
+}
+
+.m-b-520-minus {
+  margin-bottom: -520px !important;
+}
+
+.m-b-530-minus {
+  margin-bottom: -530px !important;
+}
+
+.m-b-540-minus {
+  margin-bottom: -540px !important;
+}
+
+.m-b-550-minus {
+  margin-bottom: -550px !important;
+}
+
+.m-b-560-minus {
+  margin-bottom: -560px !important;
+}
+
+.m-b-570-minus {
+  margin-bottom: -570px !important;
+}
+
+.m-b-580-minus {
+  margin-bottom: -580px !important;
+}
+
+.m-b-590-minus {
+  margin-bottom: -590px !important;
+}
+
+.m-b-600-minus {
+  margin-bottom: -600px !important;
+}
+
+.m-b-610-minus {
+  margin-bottom: -610px !important;
+}
+
+.m-b-620-minus {
+  margin-bottom: -620px !important;
+}
+
+.m-b-630-minus {
+  margin-bottom: -630px !important;
+}
+
+.m-b-640-minus {
+  margin-bottom: -640px !important;
+}
+
+.m-b-650-minus {
+  margin-bottom: -650px !important;
+}
+
+.m-b-660-minus {
+  margin-bottom: -660px !important;
+}
+
+.m-b-670-minus {
+  margin-bottom: -670px !important;
+}
+
+.m-b-680-minus {
+  margin-bottom: -680px !important;
+}
+
+.m-b-690-minus {
+  margin-bottom: -690px !important;
+}
+
+.m-b-700-minus {
+  margin-bottom: -700px !important;
+}
+
+.m-b-710-minus {
+  margin-bottom: -710px !important;
+}
+
+.m-b-720-minus {
+  margin-bottom: -720px !important;
+}
+
+.m-b-730-minus {
+  margin-bottom: -730px !important;
+}
+
+.m-b-740-minus {
+  margin-bottom: -740px !important;
+}
+
+.m-b-750-minus {
+  margin-bottom: -750px !important;
+}
+
+.m-b-760-minus {
+  margin-bottom: -760px !important;
+}
+
+.m-b-770-minus {
+  margin-bottom: -770px !important;
+}
+
+.m-b-780-minus {
+  margin-bottom: -780px !important;
+}
+
+.m-b-790-minus {
+  margin-bottom: -790px !important;
+}
+
+.m-b-800-minus {
+  margin-bottom: -800px !important;
+}
+
+.m-b-810-minus {
+  margin-bottom: -810px !important;
+}
+
+.m-b-820-minus {
+  margin-bottom: -820px !important;
+}
+
+.m-b-830-minus {
+  margin-bottom: -830px !important;
+}
+
+.m-b-840-minus {
+  margin-bottom: -840px !important;
+}
+
+.m-b-850-minus {
+  margin-bottom: -850px !important;
+}
+
+.m-b-860-minus {
+  margin-bottom: -860px !important;
+}
+
+.m-b-870-minus {
+  margin-bottom: -870px !important;
+}
+
+.m-b-880-minus {
+  margin-bottom: -880px !important;
+}
+
+.m-b-890-minus {
+  margin-bottom: -890px !important;
+}
+
+.m-b-900-minus {
+  margin-bottom: -900px !important;
+}
+
+.m-b-910-minus {
+  margin-bottom: -910px !important;
+}
+
+.m-b-920-minus {
+  margin-bottom: -920px !important;
+}
+
+.m-b-930-minus {
+  margin-bottom: -930px !important;
+}
+
+.m-b-940-minus {
+  margin-bottom: -940px !important;
+}
+
+.m-b-950-minus {
+  margin-bottom: -950px !important;
+}
+
+.m-b-960-minus {
+  margin-bottom: -960px !important;
+}
+
+.m-b-970-minus {
+  margin-bottom: -970px !important;
+}
+
+.m-b-980-minus {
+  margin-bottom: -980px !important;
+}
+
+.m-b-990-minus {
+  margin-bottom: -990px !important;
+}
+
+.m-b-1000-minus {
+  margin-bottom: -1000px !important;
+}
+
+.m-l-0-minus {
+  margin-left: 0px !important;
+}
+
+.m-l-10-minus {
+  margin-left: -10px !important;
+}
+
+.m-l-20-minus {
+  margin-left: -20px !important;
+}
+
+.m-l-30-minus {
+  margin-left: -30px !important;
+}
+
+.m-l-40-minus {
+  margin-left: -40px !important;
+}
+
+.m-l-50-minus {
+  margin-left: -50px !important;
+}
+
+.m-l-60-minus {
+  margin-left: -60px !important;
+}
+
+.m-l-70-minus {
+  margin-left: -70px !important;
+}
+
+.m-l-80-minus {
+  margin-left: -80px !important;
+}
+
+.m-l-90-minus {
+  margin-left: -90px !important;
+}
+
+.m-l-100-minus {
+  margin-left: -100px !important;
+}
+
+.m-l-110-minus {
+  margin-left: -110px !important;
+}
+
+.m-l-120-minus {
+  margin-left: -120px !important;
+}
+
+.m-l-130-minus {
+  margin-left: -130px !important;
+}
+
+.m-l-140-minus {
+  margin-left: -140px !important;
+}
+
+.m-l-150-minus {
+  margin-left: -150px !important;
+}
+
+.m-l-160-minus {
+  margin-left: -160px !important;
+}
+
+.m-l-170-minus {
+  margin-left: -170px !important;
+}
+
+.m-l-180-minus {
+  margin-left: -180px !important;
+}
+
+.m-l-190-minus {
+  margin-left: -190px !important;
+}
+
+.m-l-200-minus {
+  margin-left: -200px !important;
+}
+
+.m-l-210-minus {
+  margin-left: -210px !important;
+}
+
+.m-l-220-minus {
+  margin-left: -220px !important;
+}
+
+.m-l-230-minus {
+  margin-left: -230px !important;
+}
+
+.m-l-240-minus {
+  margin-left: -240px !important;
+}
+
+.m-l-250-minus {
+  margin-left: -250px !important;
+}
+
+.m-l-260-minus {
+  margin-left: -260px !important;
+}
+
+.m-l-270-minus {
+  margin-left: -270px !important;
+}
+
+.m-l-280-minus {
+  margin-left: -280px !important;
+}
+
+.m-l-290-minus {
+  margin-left: -290px !important;
+}
+
+.m-l-300-minus {
+  margin-left: -300px !important;
+}
+
+.m-l-310-minus {
+  margin-left: -310px !important;
+}
+
+.m-l-320-minus {
+  margin-left: -320px !important;
+}
+
+.m-l-330-minus {
+  margin-left: -330px !important;
+}
+
+.m-l-340-minus {
+  margin-left: -340px !important;
+}
+
+.m-l-350-minus {
+  margin-left: -350px !important;
+}
+
+.m-l-360-minus {
+  margin-left: -360px !important;
+}
+
+.m-l-370-minus {
+  margin-left: -370px !important;
+}
+
+.m-l-380-minus {
+  margin-left: -380px !important;
+}
+
+.m-l-390-minus {
+  margin-left: -390px !important;
+}
+
+.m-l-400-minus {
+  margin-left: -400px !important;
+}
+
+.m-l-410-minus {
+  margin-left: -410px !important;
+}
+
+.m-l-420-minus {
+  margin-left: -420px !important;
+}
+
+.m-l-430-minus {
+  margin-left: -430px !important;
+}
+
+.m-l-440-minus {
+  margin-left: -440px !important;
+}
+
+.m-l-450-minus {
+  margin-left: -450px !important;
+}
+
+.m-l-460-minus {
+  margin-left: -460px !important;
+}
+
+.m-l-470-minus {
+  margin-left: -470px !important;
+}
+
+.m-l-480-minus {
+  margin-left: -480px !important;
+}
+
+.m-l-490-minus {
+  margin-left: -490px !important;
+}
+
+.m-l-500-minus {
+  margin-left: -500px !important;
+}
+
+.m-l-510-minus {
+  margin-left: -510px !important;
+}
+
+.m-l-520-minus {
+  margin-left: -520px !important;
+}
+
+.m-l-530-minus {
+  margin-left: -530px !important;
+}
+
+.m-l-540-minus {
+  margin-left: -540px !important;
+}
+
+.m-l-550-minus {
+  margin-left: -550px !important;
+}
+
+.m-l-560-minus {
+  margin-left: -560px !important;
+}
+
+.m-l-570-minus {
+  margin-left: -570px !important;
+}
+
+.m-l-580-minus {
+  margin-left: -580px !important;
+}
+
+.m-l-590-minus {
+  margin-left: -590px !important;
+}
+
+.m-l-600-minus {
+  margin-left: -600px !important;
+}
+
+.m-l-610-minus {
+  margin-left: -610px !important;
+}
+
+.m-l-620-minus {
+  margin-left: -620px !important;
+}
+
+.m-l-630-minus {
+  margin-left: -630px !important;
+}
+
+.m-l-640-minus {
+  margin-left: -640px !important;
+}
+
+.m-l-650-minus {
+  margin-left: -650px !important;
+}
+
+.m-l-660-minus {
+  margin-left: -660px !important;
+}
+
+.m-l-670-minus {
+  margin-left: -670px !important;
+}
+
+.m-l-680-minus {
+  margin-left: -680px !important;
+}
+
+.m-l-690-minus {
+  margin-left: -690px !important;
+}
+
+.m-l-700-minus {
+  margin-left: -700px !important;
+}
+
+.m-l-710-minus {
+  margin-left: -710px !important;
+}
+
+.m-l-720-minus {
+  margin-left: -720px !important;
+}
+
+.m-l-730-minus {
+  margin-left: -730px !important;
+}
+
+.m-l-740-minus {
+  margin-left: -740px !important;
+}
+
+.m-l-750-minus {
+  margin-left: -750px !important;
+}
+
+.m-l-760-minus {
+  margin-left: -760px !important;
+}
+
+.m-l-770-minus {
+  margin-left: -770px !important;
+}
+
+.m-l-780-minus {
+  margin-left: -780px !important;
+}
+
+.m-l-790-minus {
+  margin-left: -790px !important;
+}
+
+.m-l-800-minus {
+  margin-left: -800px !important;
+}
+
+.m-l-810-minus {
+  margin-left: -810px !important;
+}
+
+.m-l-820-minus {
+  margin-left: -820px !important;
+}
+
+.m-l-830-minus {
+  margin-left: -830px !important;
+}
+
+.m-l-840-minus {
+  margin-left: -840px !important;
+}
+
+.m-l-850-minus {
+  margin-left: -850px !important;
+}
+
+.m-l-860-minus {
+  margin-left: -860px !important;
+}
+
+.m-l-870-minus {
+  margin-left: -870px !important;
+}
+
+.m-l-880-minus {
+  margin-left: -880px !important;
+}
+
+.m-l-890-minus {
+  margin-left: -890px !important;
+}
+
+.m-l-900-minus {
+  margin-left: -900px !important;
+}
+
+.m-l-910-minus {
+  margin-left: -910px !important;
+}
+
+.m-l-920-minus {
+  margin-left: -920px !important;
+}
+
+.m-l-930-minus {
+  margin-left: -930px !important;
+}
+
+.m-l-940-minus {
+  margin-left: -940px !important;
+}
+
+.m-l-950-minus {
+  margin-left: -950px !important;
+}
+
+.m-l-960-minus {
+  margin-left: -960px !important;
+}
+
+.m-l-970-minus {
+  margin-left: -970px !important;
+}
+
+.m-l-980-minus {
+  margin-left: -980px !important;
+}
+
+.m-l-990-minus {
+  margin-left: -990px !important;
+}
+
+.m-l-1000-minus {
+  margin-left: -1000px !important;
+}
+
+.p-t-b-0 {
+  padding-top: 0px !important;
+  padding-bottom: 0px !important;
+}
+
+.p-t-b-5 {
+  padding-top: 5px !important;
+  padding-bottom: 5px !important;
+}
+
+.p-t-b-10 {
+  padding-top: 10px !important;
+  padding-bottom: 10px !important;
+}
+
+.p-t-b-15 {
+  padding-top: 15px !important;
+  padding-bottom: 15px !important;
+}
+
+.p-t-b-20 {
+  padding-top: 20px !important;
+  padding-bottom: 20px !important;
+}
+
+.p-t-b-25 {
+  padding-top: 25px !important;
+  padding-bottom: 25px !important;
+}
+
+.p-t-b-30 {
+  padding-top: 30px !important;
+  padding-bottom: 30px !important;
+}
+
+.p-t-b-35 {
+  padding-top: 35px !important;
+  padding-bottom: 35px !important;
+}
+
+.p-t-b-40 {
+  padding-top: 40px !important;
+  padding-bottom: 40px !important;
+}
+
+.p-t-b-45 {
+  padding-top: 45px !important;
+  padding-bottom: 45px !important;
+}
+
+.p-t-b-50 {
+  padding-top: 50px !important;
+  padding-bottom: 50px !important;
+}
+
+.p-l-r-0 {
+  padding-left: 0px !important;
+  padding-right: 0px !important;
+}
+
+.p-l-r-5 {
+  padding-left: 5px !important;
+  padding-right: 5px !important;
+}
+
+.p-l-r-10 {
+  padding-left: 10px !important;
+  padding-right: 10px !important;
+}
+
+.p-l-r-15 {
+  padding-left: 15px !important;
+  padding-right: 15px !important;
+}
+
+.p-l-r-20 {
+  padding-left: 20px !important;
+  padding-right: 20px !important;
+}
+
+.p-l-r-25 {
+  padding-left: 25px !important;
+  padding-right: 25px !important;
+}
+
+.p-l-r-30 {
+  padding-left: 30px !important;
+  padding-right: 30px !important;
+}
+
+.p-l-r-35 {
+  padding-left: 35px !important;
+  padding-right: 35px !important;
+}
+
+.p-l-r-40 {
+  padding-left: 40px !important;
+  padding-right: 40px !important;
+}
+
+.p-l-r-45 {
+  padding-left: 45px !important;
+  padding-right: 45px !important;
+}
+
+.p-l-r-50 {
+  padding-left: 50px !important;
+  padding-right: 50px !important;
+}
+
+.p-0 {
+  padding: 0px !important;
+}
+
+.p-5 {
+  padding: 5px !important;
+}
+
+.p-10 {
+  padding: 10px !important;
+}
+
+.p-15 {
+  padding: 15px !important;
+}
+
+.p-20 {
+  padding: 20px !important;
+}
+
+.p-25 {
+  padding: 25px !important;
+}
+
+.p-30 {
+  padding: 30px !important;
+}
+
+.p-35 {
+  padding: 35px !important;
+}
+
+.p-40 {
+  padding: 40px !important;
+}
+
+.p-45 {
+  padding: 45px !important;
+}
+
+.p-50 {
+  padding: 50px !important;
+}
+
+.p-t-0 {
+  padding-top: 0px !important;
+}
+
+.p-t-5 {
+  padding-top: 5px !important;
+}
+
+.p-t-10 {
+  padding-top: 10px !important;
+}
+
+.p-t-15 {
+  padding-top: 15px !important;
+}
+
+.p-t-20 {
+  padding-top: 20px !important;
+}
+
+.p-t-25 {
+  padding-top: 25px !important;
+}
+
+.p-t-30 {
+  padding-top: 30px !important;
+}
+
+.p-t-35 {
+  padding-top: 35px !important;
+}
+
+.p-t-40 {
+  padding-top: 40px !important;
+}
+
+.p-t-45 {
+  padding-top: 45px !important;
+}
+
+.p-t-50 {
+  padding-top: 50px !important;
+}
+
+.p-t-55 {
+  padding-top: 55px !important;
+}
+
+.p-t-60 {
+  padding-top: 60px !important;
+}
+
+.p-t-65 {
+  padding-top: 65px !important;
+}
+
+.p-t-70 {
+  padding-top: 70px !important;
+}
+
+.p-t-75 {
+  padding-top: 75px !important;
+}
+
+.p-t-80 {
+  padding-top: 80px !important;
+}
+
+.p-t-85 {
+  padding-top: 85px !important;
+}
+
+.p-t-90 {
+  padding-top: 90px !important;
+}
+
+.p-t-95 {
+  padding-top: 95px !important;
+}
+
+.p-t-100 {
+  padding-top: 100px !important;
+}
+
+.p-t-105 {
+  padding-top: 105px !important;
+}
+
+.p-t-110 {
+  padding-top: 110px !important;
+}
+
+.p-t-115 {
+  padding-top: 115px !important;
+}
+
+.p-t-120 {
+  padding-top: 120px !important;
+}
+
+.p-t-125 {
+  padding-top: 125px !important;
+}
+
+.p-t-130 {
+  padding-top: 130px !important;
+}
+
+.p-t-135 {
+  padding-top: 135px !important;
+}
+
+.p-t-140 {
+  padding-top: 140px !important;
+}
+
+.p-t-145 {
+  padding-top: 145px !important;
+}
+
+.p-t-150 {
+  padding-top: 150px !important;
+}
+
+.p-r-0 {
+  padding-right: 0px !important;
+}
+
+.p-r-5 {
+  padding-right: 5px !important;
+}
+
+.p-r-10 {
+  padding-right: 10px !important;
+}
+
+.p-r-15 {
+  padding-right: 15px !important;
+}
+
+.p-r-20 {
+  padding-right: 20px !important;
+}
+
+.p-r-25 {
+  padding-right: 25px !important;
+}
+
+.p-r-30 {
+  padding-right: 30px !important;
+}
+
+.p-r-35 {
+  padding-right: 35px !important;
+}
+
+.p-r-40 {
+  padding-right: 40px !important;
+}
+
+.p-r-45 {
+  padding-right: 45px !important;
+}
+
+.p-r-50 {
+  padding-right: 50px !important;
+}
+
+.p-r-55 {
+  padding-right: 55px !important;
+}
+
+.p-r-60 {
+  padding-right: 60px !important;
+}
+
+.p-r-65 {
+  padding-right: 65px !important;
+}
+
+.p-r-70 {
+  padding-right: 70px !important;
+}
+
+.p-r-75 {
+  padding-right: 75px !important;
+}
+
+.p-r-80 {
+  padding-right: 80px !important;
+}
+
+.p-r-85 {
+  padding-right: 85px !important;
+}
+
+.p-r-90 {
+  padding-right: 90px !important;
+}
+
+.p-r-95 {
+  padding-right: 95px !important;
+}
+
+.p-r-100 {
+  padding-right: 100px !important;
+}
+
+.p-r-105 {
+  padding-right: 105px !important;
+}
+
+.p-r-110 {
+  padding-right: 110px !important;
+}
+
+.p-r-115 {
+  padding-right: 115px !important;
+}
+
+.p-r-120 {
+  padding-right: 120px !important;
+}
+
+.p-r-125 {
+  padding-right: 125px !important;
+}
+
+.p-r-130 {
+  padding-right: 130px !important;
+}
+
+.p-r-135 {
+  padding-right: 135px !important;
+}
+
+.p-r-140 {
+  padding-right: 140px !important;
+}
+
+.p-r-145 {
+  padding-right: 145px !important;
+}
+
+.p-r-150 {
+  padding-right: 150px !important;
+}
+
+.p-b-0 {
+  padding-bottom: 0px !important;
+}
+
+.p-b-5 {
+  padding-bottom: 5px !important;
+}
+
+.p-b-10 {
+  padding-bottom: 10px !important;
+}
+
+.p-b-15 {
+  padding-bottom: 15px !important;
+}
+
+.p-b-20 {
+  padding-bottom: 20px !important;
+}
+
+.p-b-25 {
+  padding-bottom: 25px !important;
+}
+
+.p-b-30 {
+  padding-bottom: 30px !important;
+}
+
+.p-b-35 {
+  padding-bottom: 35px !important;
+}
+
+.p-b-40 {
+  padding-bottom: 40px !important;
+}
+
+.p-b-45 {
+  padding-bottom: 45px !important;
+}
+
+.p-b-50 {
+  padding-bottom: 50px !important;
+}
+
+.p-b-55 {
+  padding-bottom: 55px !important;
+}
+
+.p-b-60 {
+  padding-bottom: 60px !important;
+}
+
+.p-b-65 {
+  padding-bottom: 65px !important;
+}
+
+.p-b-70 {
+  padding-bottom: 70px !important;
+}
+
+.p-b-75 {
+  padding-bottom: 75px !important;
+}
+
+.p-b-80 {
+  padding-bottom: 80px !important;
+}
+
+.p-b-85 {
+  padding-bottom: 85px !important;
+}
+
+.p-b-90 {
+  padding-bottom: 90px !important;
+}
+
+.p-b-95 {
+  padding-bottom: 95px !important;
+}
+
+.p-b-100 {
+  padding-bottom: 100px !important;
+}
+
+.p-b-105 {
+  padding-bottom: 105px !important;
+}
+
+.p-b-110 {
+  padding-bottom: 110px !important;
+}
+
+.p-b-115 {
+  padding-bottom: 115px !important;
+}
+
+.p-b-120 {
+  padding-bottom: 120px !important;
+}
+
+.p-b-125 {
+  padding-bottom: 125px !important;
+}
+
+.p-b-130 {
+  padding-bottom: 130px !important;
+}
+
+.p-b-135 {
+  padding-bottom: 135px !important;
+}
+
+.p-b-140 {
+  padding-bottom: 140px !important;
+}
+
+.p-b-145 {
+  padding-bottom: 145px !important;
+}
+
+.p-b-150 {
+  padding-bottom: 150px !important;
+}
+
+.p-l-0 {
+  padding-left: 0px !important;
+}
+
+.p-l-5 {
+  padding-left: 5px !important;
+}
+
+.p-l-10 {
+  padding-left: 10px !important;
+}
+
+.p-l-15 {
+  padding-left: 15px !important;
+}
+
+.p-l-20 {
+  padding-left: 20px !important;
+}
+
+.p-l-25 {
+  padding-left: 25px !important;
+}
+
+.p-l-30 {
+  padding-left: 30px !important;
+}
+
+.p-l-35 {
+  padding-left: 35px !important;
+}
+
+.p-l-40 {
+  padding-left: 40px !important;
+}
+
+.p-l-45 {
+  padding-left: 45px !important;
+}
+
+.p-l-50 {
+  padding-left: 50px !important;
+}
+
+.p-l-55 {
+  padding-left: 55px !important;
+}
+
+.p-l-60 {
+  padding-left: 60px !important;
+}
+
+.p-l-65 {
+  padding-left: 65px !important;
+}
+
+.p-l-70 {
+  padding-left: 70px !important;
+}
+
+.p-l-75 {
+  padding-left: 75px !important;
+}
+
+.p-l-80 {
+  padding-left: 80px !important;
+}
+
+.p-l-85 {
+  padding-left: 85px !important;
+}
+
+.p-l-90 {
+  padding-left: 90px !important;
+}
+
+.p-l-95 {
+  padding-left: 95px !important;
+}
+
+.p-l-100 {
+  padding-left: 100px !important;
+}
+
+.p-l-105 {
+  padding-left: 105px !important;
+}
+
+.p-l-110 {
+  padding-left: 110px !important;
+}
+
+.p-l-115 {
+  padding-left: 115px !important;
+}
+
+.p-l-120 {
+  padding-left: 120px !important;
+}
+
+.p-l-125 {
+  padding-left: 125px !important;
+}
+
+.p-l-130 {
+  padding-left: 130px !important;
+}
+
+.p-l-135 {
+  padding-left: 135px !important;
+}
+
+.p-l-140 {
+  padding-left: 140px !important;
+}
+
+.p-l-145 {
+  padding-left: 145px !important;
+}
+
+.p-l-150 {
+  padding-left: 150px !important;
+}
+
+.opacity-0 {
+  opacity: 0 !important;
+}
+
+.opacity-1 {
+  opacity: 0.1 !important;
+}
+
+.opacity-2 {
+  opacity: 0.2 !important;
+}
+
+.opacity-3 {
+  opacity: 0.3 !important;
+}
+
+.opacity-4 {
+  opacity: 0.4 !important;
+}
+
+.opacity-5 {
+  opacity: 0.5 !important;
+}
+
+.opacity-6 {
+  opacity: 0.6 !important;
+}
+
+.opacity-7 {
+  opacity: 0.7 !important;
+}
+
+.opacity-8 {
+  opacity: 0.8 !important;
+}
+
+.opacity-9 {
+  opacity: 0.9 !important;
+}
+
+.font-size-10 {
+  font-size: 10px !important;
+}
+
+.font-size-11 {
+  font-size: 11px !important;
+}
+
+.font-size-12 {
+  font-size: 12px !important;
+}
+
+.font-size-13 {
+  font-size: 13px !important;
+}
+
+.font-size-14 {
+  font-size: 14px !important;
+}
+
+.font-size-15 {
+  font-size: 15px !important;
+}
+
+.font-size-16 {
+  font-size: 16px !important;
+}
+
+.font-size-17 {
+  font-size: 17px !important;
+}
+
+.font-size-18 {
+  font-size: 18px !important;
+}
+
+.font-size-19 {
+  font-size: 19px !important;
+}
+
+.font-size-20 {
+  font-size: 20px !important;
+}
+
+.font-size-21 {
+  font-size: 21px !important;
+}
+
+.font-size-22 {
+  font-size: 22px !important;
+}
+
+.font-size-23 {
+  font-size: 23px !important;
+}
+
+.font-size-24 {
+  font-size: 24px !important;
+}
+
+.font-size-25 {
+  font-size: 25px !important;
+}
+
+.font-size-26 {
+  font-size: 26px !important;
+}
+
+.font-size-27 {
+  font-size: 27px !important;
+}
+
+.font-size-28 {
+  font-size: 28px !important;
+}
+
+.font-size-29 {
+  font-size: 29px !important;
+}
+
+.font-size-30 {
+  font-size: 30px !important;
+}
+
+.font-size-31 {
+  font-size: 31px !important;
+}
+
+.font-size-32 {
+  font-size: 32px !important;
+}
+
+.font-size-33 {
+  font-size: 33px !important;
+}
+
+.font-size-34 {
+  font-size: 34px !important;
+}
+
+.font-size-35 {
+  font-size: 35px !important;
+}
+
+.font-size-36 {
+  font-size: 36px !important;
+}
+
+.font-size-37 {
+  font-size: 37px !important;
+}
+
+.font-size-38 {
+  font-size: 38px !important;
+}
+
+.font-size-39 {
+  font-size: 39px !important;
+}
+
+.font-size-40 {
+  font-size: 40px !important;
+}
+
+.font-size-41 {
+  font-size: 41px !important;
+}
+
+.font-size-42 {
+  font-size: 42px !important;
+}
+
+.font-size-43 {
+  font-size: 43px !important;
+}
+
+.font-size-44 {
+  font-size: 44px !important;
+}
+
+.font-size-45 {
+  font-size: 45px !important;
+}
+
+.font-size-46 {
+  font-size: 46px !important;
+}
+
+.font-size-47 {
+  font-size: 47px !important;
+}
+
+.font-size-48 {
+  font-size: 48px !important;
+}
+
+.font-size-49 {
+  font-size: 49px !important;
+}
+
+.font-size-50 {
+  font-size: 50px !important;
+}
+
+.line-height-0 {
+  line-height: 0px !important;
+}
+
+.line-height-1 {
+  line-height: 1px !important;
+}
+
+.line-height-2 {
+  line-height: 2px !important;
+}
+
+.line-height-3 {
+  line-height: 3px !important;
+}
+
+.line-height-4 {
+  line-height: 4px !important;
+}
+
+.line-height-5 {
+  line-height: 5px !important;
+}
+
+.line-height-6 {
+  line-height: 6px !important;
+}
+
+.line-height-7 {
+  line-height: 7px !important;
+}
+
+.line-height-8 {
+  line-height: 8px !important;
+}
+
+.line-height-9 {
+  line-height: 9px !important;
+}
+
+.line-height-10 {
+  line-height: 10px !important;
+}
+
+.line-height-11 {
+  line-height: 11px !important;
+}
+
+.line-height-12 {
+  line-height: 12px !important;
+}
+
+.line-height-13 {
+  line-height: 13px !important;
+}
+
+.line-height-14 {
+  line-height: 14px !important;
+}
+
+.line-height-15 {
+  line-height: 15px !important;
+}
+
+.line-height-16 {
+  line-height: 16px !important;
+}
+
+.line-height-17 {
+  line-height: 17px !important;
+}
+
+.line-height-18 {
+  line-height: 18px !important;
+}
+
+.line-height-19 {
+  line-height: 19px !important;
+}
+
+.line-height-20 {
+  line-height: 20px !important;
+}
+
+.line-height-21 {
+  line-height: 21px !important;
+}
+
+.line-height-22 {
+  line-height: 22px !important;
+}
+
+.line-height-23 {
+  line-height: 23px !important;
+}
+
+.line-height-24 {
+  line-height: 24px !important;
+}
+
+.line-height-25 {
+  line-height: 25px !important;
+}
+
+.line-height-26 {
+  line-height: 26px !important;
+}
+
+.line-height-27 {
+  line-height: 27px !important;
+}
+
+.line-height-28 {
+  line-height: 28px !important;
+}
+
+.line-height-29 {
+  line-height: 29px !important;
+}
+
+.line-height-30 {
+  line-height: 30px !important;
+}
+
+.line-height-31 {
+  line-height: 31px !important;
+}
+
+.line-height-32 {
+  line-height: 32px !important;
+}
+
+.line-height-33 {
+  line-height: 33px !important;
+}
+
+.line-height-34 {
+  line-height: 34px !important;
+}
+
+.line-height-35 {
+  line-height: 35px !important;
+}
+
+.line-height-36 {
+  line-height: 36px !important;
+}
+
+.line-height-37 {
+  line-height: 37px !important;
+}
+
+.line-height-38 {
+  line-height: 38px !important;
+}
+
+.line-height-39 {
+  line-height: 39px !important;
+}
+
+.line-height-40 {
+  line-height: 40px !important;
+}
+
+.line-height-41 {
+  line-height: 41px !important;
+}
+
+.line-height-42 {
+  line-height: 42px !important;
+}
+
+.line-height-43 {
+  line-height: 43px !important;
+}
+
+.line-height-44 {
+  line-height: 44px !important;
+}
+
+.line-height-45 {
+  line-height: 45px !important;
+}
+
+.line-height-46 {
+  line-height: 46px !important;
+}
+
+.line-height-47 {
+  line-height: 47px !important;
+}
+
+.line-height-48 {
+  line-height: 48px !important;
+}
+
+.line-height-49 {
+  line-height: 49px !important;
+}
+
+.line-height-50 {
+  line-height: 50px !important;
+}
+
+.width-10 {
+  width: 10px !important;
+}
+
+.width-11 {
+  width: 11px !important;
+}
+
+.width-12 {
+  width: 12px !important;
+}
+
+.width-13 {
+  width: 13px !important;
+}
+
+.width-14 {
+  width: 14px !important;
+}
+
+.width-15 {
+  width: 15px !important;
+}
+
+.width-16 {
+  width: 16px !important;
+}
+
+.width-17 {
+  width: 17px !important;
+}
+
+.width-18 {
+  width: 18px !important;
+}
+
+.width-19 {
+  width: 19px !important;
+}
+
+.width-20 {
+  width: 20px !important;
+}
+
+.width-21 {
+  width: 21px !important;
+}
+
+.width-22 {
+  width: 22px !important;
+}
+
+.width-23 {
+  width: 23px !important;
+}
+
+.width-24 {
+  width: 24px !important;
+}
+
+.width-25 {
+  width: 25px !important;
+}
+
+.width-26 {
+  width: 26px !important;
+}
+
+.width-27 {
+  width: 27px !important;
+}
+
+.width-28 {
+  width: 28px !important;
+}
+
+.width-29 {
+  width: 29px !important;
+}
+
+.width-30 {
+  width: 30px !important;
+}
+
+.width-31 {
+  width: 31px !important;
+}
+
+.width-32 {
+  width: 32px !important;
+}
+
+.width-33 {
+  width: 33px !important;
+}
+
+.width-34 {
+  width: 34px !important;
+}
+
+.width-35 {
+  width: 35px !important;
+}
+
+.width-36 {
+  width: 36px !important;
+}
+
+.width-37 {
+  width: 37px !important;
+}
+
+.width-38 {
+  width: 38px !important;
+}
+
+.width-39 {
+  width: 39px !important;
+}
+
+.width-40 {
+  width: 40px !important;
+}
+
+.width-41 {
+  width: 41px !important;
+}
+
+.width-42 {
+  width: 42px !important;
+}
+
+.width-43 {
+  width: 43px !important;
+}
+
+.width-44 {
+  width: 44px !important;
+}
+
+.width-45 {
+  width: 45px !important;
+}
+
+.width-46 {
+  width: 46px !important;
+}
+
+.width-47 {
+  width: 47px !important;
+}
+
+.width-48 {
+  width: 48px !important;
+}
+
+.width-49 {
+  width: 49px !important;
+}
+
+.width-50 {
+  width: 50px !important;
+}
+
+.height-10 {
+  height: 10px !important;
+}
+
+.height-11 {
+  height: 11px !important;
+}
+
+.height-12 {
+  height: 12px !important;
+}
+
+.height-13 {
+  height: 13px !important;
+}
+
+.height-14 {
+  height: 14px !important;
+}
+
+.height-15 {
+  height: 15px !important;
+}
+
+.height-16 {
+  height: 16px !important;
+}
+
+.height-17 {
+  height: 17px !important;
+}
+
+.height-18 {
+  height: 18px !important;
+}
+
+.height-19 {
+  height: 19px !important;
+}
+
+.height-20 {
+  height: 20px !important;
+}
+
+.height-21 {
+  height: 21px !important;
+}
+
+.height-22 {
+  height: 22px !important;
+}
+
+.height-23 {
+  height: 23px !important;
+}
+
+.height-24 {
+  height: 24px !important;
+}
+
+.height-25 {
+  height: 25px !important;
+}
+
+.height-26 {
+  height: 26px !important;
+}
+
+.height-27 {
+  height: 27px !important;
+}
+
+.height-28 {
+  height: 28px !important;
+}
+
+.height-29 {
+  height: 29px !important;
+}
+
+.height-30 {
+  height: 30px !important;
+}
+
+.height-31 {
+  height: 31px !important;
+}
+
+.height-32 {
+  height: 32px !important;
+}
+
+.height-33 {
+  height: 33px !important;
+}
+
+.height-34 {
+  height: 34px !important;
+}
+
+.height-35 {
+  height: 35px !important;
+}
+
+.height-36 {
+  height: 36px !important;
+}
+
+.height-37 {
+  height: 37px !important;
+}
+
+.height-38 {
+  height: 38px !important;
+}
+
+.height-39 {
+  height: 39px !important;
+}
+
+.height-40 {
+  height: 40px !important;
+}
+
+.height-41 {
+  height: 41px !important;
+}
+
+.height-42 {
+  height: 42px !important;
+}
+
+.height-43 {
+  height: 43px !important;
+}
+
+.height-44 {
+  height: 44px !important;
+}
+
+.height-45 {
+  height: 45px !important;
+}
+
+.height-46 {
+  height: 46px !important;
+}
+
+.height-47 {
+  height: 47px !important;
+}
+
+.height-48 {
+  height: 48px !important;
+}
+
+.height-49 {
+  height: 49px !important;
+}
+
+.height-50 {
+  height: 50px !important;
+}
+
+.h-100-vh {
+  height: 100vh;
+}
+
+body {
+  font-family: "Inter", sans-serif;
+  position: relative;
+  background-color: #f8fafb;
+  font-size: 15px;
+  color: #505050;
+}
+
+body.no-scroll {
+  overflow: hidden;
+}
+
+* {
+  min-width: 0;
+  min-height: 0;
+}
+
+.preloader {
+  position: fixed;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  z-index: 1001;
+  background: white;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  /* Safari */
+}
+
+.preloader .preloader-icon {
+  border: 5px solid #eeeeee;
+  border-radius: 50%;
+  border-top: 5px solid #3498db;
+  width: 50px;
+  height: 50px;
+  -webkit-animation: spin 0.5s linear infinite;
+          animation: spin 0.5s linear infinite;
+}
+
+@-webkit-keyframes spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+  }
+
+  100% {
+    -webkit-transform: rotate(360deg);
+  }
+}
+
+@keyframes spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+            transform: rotate(0deg);
+  }
+
+  100% {
+    -webkit-transform: rotate(360deg);
+            transform: rotate(360deg);
+  }
+}
+
+.preloader svg path {
+  fill: #0081ff;
+}
+
+.icon-block {
+  width: 40px;
+  height: 40px;
+  line-height: 40px;
+  display: -webkit-inline-box;
+  display: inline-flex;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  background: #e1e1e1;
+  border-radius: 3px;
+  text-align: center;
+  color: black;
+  font-size: 18px;
+}
+
+.icon-block.icon-block-outline-white {
+  border: 2px solid white;
+  background: none;
+  color: white !important;
+}
+
+.icon-block.icon-block-outline-primary {
+  border: 2px solid #0081ff;
+  color: #0081ff !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-success {
+  border: 2px solid #28c76f;
+  color: #28c76f !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-danger {
+  border: 2px solid #ea5455;
+  color: #ea5455 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-info {
+  border: 2px solid #33b5e5;
+  color: #33b5e5 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-warning {
+  border: 2px solid #ff9f43;
+  color: #ff9f43 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-dark {
+  border: 2px solid #293134;
+  color: #293134 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-secondary {
+  border: 2px solid #aa66cc;
+  color: #aa66cc !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-facebook {
+  border: 2px solid #3b5998;
+  color: #3b5998 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-twitter {
+  border: 2px solid #55acee;
+  color: #55acee !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-linkedin {
+  border: 2px solid #0077b5;
+  color: #0077b5 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-whatsapp {
+  border: 2px solid #43d854;
+  color: #43d854 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-instagram {
+  border: 2px solid #3f729b;
+  color: #3f729b !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-dribbble {
+  border: 2px solid #ea4c89;
+  color: #ea4c89 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-google {
+  border: 2px solid #db4437;
+  color: #db4437 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-youtube {
+  border: 2px solid #cd201f;
+  color: #cd201f !important;
+  background: none;
+}
+
+.icon-block.icon-block-xl {
+  width: 70px;
+  height: 70px;
+  line-height: 70px;
+  font-size: 28px;
+}
+
+.icon-block.icon-block-lg {
+  width: 50px;
+  height: 50px;
+  line-height: 50px;
+  font-size: 22px;
+}
+
+.icon-block.icon-block-sm {
+  width: 30px;
+  height: 30px;
+  line-height: 30px;
+  font-size: 14px;
+}
+
+.icon-block.icon-block-xs {
+  width: 20px;
+  height: 20px;
+  line-height: 20px;
+  font-size: 12px;
+}
+
+.icon-block.icon-block-floating {
+  border-radius: 50%;
+}
+
+body.error-page img {
+  width: 50%;
+  display: table;
+  margin: 50px auto;
+}
+
+body.error-page .display-1 {
+  font-size: 10em;
+}
+
+.error-page {
+  text-align: center;
+  height: calc(100vh - 120px);
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.error-page .error-page-item {
+  font-size: 14rem;
+  line-height: 14rem;
+  margin-left: -2rem;
+  text-shadow: -5px 1px 0px white;
+}
+
+.error-page .error-page-item:nth-child(2) {
+  -webkit-transform: translate(0, 10px);
+          transform: translate(0, 10px);
+  display: inline-block;
+}
+
+.form-control,
+.swal-modal input.swal-content__input,
+.custom-select {
+  font-size: 0.875rem;
+  border-color: #e1e1e1;
+  border-radius: 0.5rem;
+}
+
+.form-control:focus,
+.swal-modal input.swal-content__input:focus,
+.custom-select:focus {
+  box-shadow: none;
+  border-color: rgba(0, 129, 255, 0.8);
+}
+
+.form-control:not(.form-control-lg):not(.form-control-sm),
+.swal-modal input.swal-content__input:not(.form-control-lg):not(.form-control-sm) {
+  height: calc(1.5em + .75rem + 3px);
+}
+
+.form-rounded {
+  border-radius: 50px;
+}
+
+.form-control-lg {
+  font-size: 1.1rem;
+}
+
+.form-control-sm {
+  font-size: 0.8rem;
+}
+
+.input-group-text {
+  border: none;
+}
+
+textarea {
+  min-height: 100px;
+  max-height: 500px;
+}
+
+.custom-file-input:focus ~ .custom-file-label {
+  border-color: #339aff;
+  box-shadow: none;
+}
+
+.custom-control-input {
+  right: 0;
+}
+
+.custom-control-label {
+  line-height: 25px;
+}
+
+/* Checkboxes and Radios */
+
+.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #0081ff;
+  background-color: #0081ff;
+}
+
+.custom-checkbox .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.3);
+}
+
+.custom-checkbox .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #5caeff;
+  background-color: #5caeff;
+}
+
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #aa66cc;
+  background-color: #aa66cc;
+}
+
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #d0abe3;
+  background-color: #d0abe3;
+}
+
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #28c76f;
+  background-color: #28c76f;
+}
+
+.custom-checkbox.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #6ae19f;
+  background-color: #6ae19f;
+}
+
+.custom-checkbox.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #ea5455;
+  background-color: #ea5455;
+}
+
+.custom-checkbox.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #f4a6a6;
+  background-color: #f4a6a6;
+}
+
+.custom-checkbox.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #ff9f43;
+  background-color: #ff9f43;
+}
+
+.custom-checkbox.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #ffce9f;
+  background-color: #ffce9f;
+}
+
+.custom-checkbox.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #33b5e5;
+  background-color: #33b5e5;
+}
+
+.custom-checkbox.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #84d3ef;
+  background-color: #84d3ef;
+}
+
+.custom-checkbox.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #293134;
+  background-color: #293134;
+}
+
+.custom-checkbox.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #516167;
+  background-color: #516167;
+}
+
+.custom-checkbox.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.3);
+}
+
+.custom-checkbox.custom-range-danger::before {
+  background-color: #ea5455;
+}
+
+.custom-checkbox.custom-range-danger::-webkit-slider-thumb:active {
+  background-color: #f4a6a6;
+}
+
+.custom-range::-webkit-slider-thumb {
+  background-color: #0081ff;
+}
+
+.custom-range::-webkit-slider-thumb:active {
+  background-color: #5caeff;
+}
+
+.custom-range.custom-range-danger::-webkit-slider-thumb {
+  background-color: #ea5455;
+}
+
+.custom-range.custom-range-danger::-webkit-slider-thumb:active {
+  background-color: #f4a6a6;
+}
+
+.custom-range.custom-range-warning::-webkit-slider-thumb {
+  background-color: #ff9f43;
+}
+
+.custom-range.custom-range-warning::-webkit-slider-thumb:active {
+  background-color: #ffce9f;
+}
+
+.custom-range.custom-range-success::-webkit-slider-thumb {
+  background-color: #28c76f;
+}
+
+.custom-range.custom-range-success::-webkit-slider-thumb:active {
+  background-color: #6ae19f;
+}
+
+.custom-range.custom-range-secondary::-webkit-slider-thumb {
+  background-color: #aa66cc;
+}
+
+.custom-range.custom-range-secondary::-webkit-slider-thumb:active {
+  background-color: #d0abe3;
+}
+
+.custom-range.custom-range-info::-webkit-slider-thumb {
+  background-color: #33b5e5;
+}
+
+.custom-range.custom-range-info::-webkit-slider-thumb:active {
+  background-color: #84d3ef;
+}
+
+.custom-range.custom-range-light::-webkit-slider-thumb {
+  background-color: #afb8bd;
+}
+
+.custom-range.custom-range-light::-webkit-slider-thumb:active {
+  background-color: #e1e5e6;
+}
+
+.custom-range.custom-range-dark::-webkit-slider-thumb {
+  background-color: #293134;
+}
+
+.custom-range.custom-range-dark::-webkit-slider-thumb:active {
+  background-color: #516167;
+}
+
+.wizard > .content {
+  min-height: auto;
+  margin: 0;
+  margin-bottom: 15px;
+  background: none;
+  padding: 0 !important;
+}
+
+.wizard .wizard-index {
+  background-color: rgba(0, 0, 0, 0.4);
+  height: 30px;
+  width: 30px;
+  border-radius: 50%;
+  display: -webkit-inline-box;
+  display: inline-flex;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  color: #fff;
+  margin-right: 0.5rem;
+}
+
+.wizard .current .wizard-index {
+  background-color: rgba(255, 255, 255, 0.2);
+}
+
+.wizard > .actions > ul > li {
+  margin: 0;
+  margin-left: 10px;
+}
+
+.wizard > .content > .body {
+  float: none;
+  position: static;
+  width: auto;
+  height: auto;
+}
+
+.wizard > .steps {
+  margin-bottom: 1.5rem;
+}
+
+.wizard > .steps a,
+.wizard > .steps .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps button.btn,
+.wizard > .steps a:hover,
+.wizard > .steps a:active {
+  margin: 0;
+  margin-right: 10px;
+}
+
+.wizard > .steps .current a,
+.wizard > .steps .current .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps .current button.btn,
+.wizard > .steps .current a:hover,
+.wizard > .steps .current a:active {
+  background: #0081ff;
+}
+
+.wizard > .steps .error a,
+.wizard > .steps .error .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps .error button.btn,
+.wizard > .steps .error a:hover,
+.wizard > .steps .error a:active {
+  background: #ea5455;
+}
+
+.wizard > .steps .done a,
+.wizard > .steps .done .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps .done button.btn,
+.wizard > .steps .done a:hover,
+.wizard > .steps .done a:active {
+  background-color: #28c76f;
+  color: white;
+}
+
+.wizard > .actions a,
+.wizard > .actions .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .actions button.btn,
+.wizard > .actions a:hover,
+.wizard > .actions a:active {
+  background-color: #28c76f;
+  color: white;
+}
+
+.page-header {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: start;
+          align-items: flex-start;
+  height: 55px;
+}
+
+.page-header h1,
+.page-header h2,
+.page-header h3,
+.page-header h4,
+.page-header h5 {
+  margin: 0;
+}
+
+.page-header .breadcrumb {
+  background: none;
+  padding: 0;
+  margin: 0;
+}
+
+.page-header .breadcrumb a:hover,
+.page-header .breadcrumb .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .page-header .breadcrumb button.btn:hover {
+  text-decoration: underline;
+}
+
+.page-header .breadcrumb li.breadcrumb-item {
+  font-size: 14px !important;
+}
+
+.page-header .breadcrumb li.breadcrumb-item:first-child:before {
+  font-size: 12px;
+  font-family: themify;
+  content: "\E69B";
+  display: inline-block;
+  margin-right: 8px;
+}
+
+.page-header .breadcrumb li.breadcrumb-item + .breadcrumb-item::before {
+  font-size: 10px;
+}
+
+.page-header .breadcrumb li.breadcrumb-item.active {
+  color: #0081ff;
+  font-weight: 600;
+}
+
+.mfp-with-zoom .mfp-container,
+.mfp-with-zoom.mfp-bg {
+  opacity: 0;
+  -webkit-backface-visibility: hidden;
+  /* ideally, transition speed should match zoom duration */
+  -webkit-transition: all 0.3s ease-out;
+  transition: all 0.3s ease-out;
+}
+
+.mfp-with-zoom.mfp-ready .mfp-container {
+  opacity: 1;
+}
+
+.mfp-with-zoom.mfp-ready.mfp-bg {
+  opacity: 0.8;
+}
+
+.mfp-with-zoom.mfp-removing .mfp-container,
+.mfp-with-zoom.mfp-removing.mfp-bg {
+  opacity: 0;
+}
+
+.card,
+.app-block .app-content .app-action,
+.chat-block {
+  margin-bottom: 1.875rem;
+  position: relative;
+  background-color: white;
+  border-radius: 0.5rem;
+  border: none;
+  box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+}
+
+.card.bg-primary .card-header,
+.app-block .app-content .bg-primary.app-action .card-header,
+.bg-primary.chat-block .card-header,
+.card.bg-secondary .card-header,
+.app-block .app-content .bg-secondary.app-action .card-header,
+.bg-secondary.chat-block .card-header,
+.card.bg-success .card-header,
+.app-block .app-content .bg-success.app-action .card-header,
+.bg-success.chat-block .card-header,
+.card.bg-danger .card-header,
+.app-block .app-content .bg-danger.app-action .card-header,
+.bg-danger.chat-block .card-header,
+.card.bg-warning .card-header,
+.app-block .app-content .bg-warning.app-action .card-header,
+.bg-warning.chat-block .card-header,
+.card.bg-info .card-header,
+.app-block .app-content .bg-info.app-action .card-header,
+.bg-info.chat-block .card-header,
+.card.bg-dark .card-header,
+.app-block .app-content .bg-dark.app-action .card-header,
+.bg-dark.chat-block .card-header {
+  border-bottom: 1px solid rgba(235, 235, 235, 0.4);
+}
+
+.card .card-header,
+.app-block .app-content .app-action .card-header,
+.chat-block .card-header,
+.card .card-footer,
+.app-block .app-content .app-action .card-footer,
+.chat-block .card-footer {
+  border: none;
+  background: none;
+  font-size: 13px;
+  font-weight: 600;
+  padding: 10px 20px;
+}
+
+.card .card-header,
+.app-block .app-content .app-action .card-header,
+.chat-block .card-header {
+  margin-bottom: 0;
+  border-bottom: 1px solid #ebebeb;
+}
+
+.card .card-footer,
+.app-block .app-content .app-action .card-footer,
+.chat-block .card-footer {
+  border-top: 1px solid #ebebeb;
+}
+
+.card .card-body,
+.app-block .app-content .app-action .card-body,
+.chat-block .card-body {
+  padding: 1.5rem;
+}
+
+.card .card-body h1.card-title,
+.app-block .app-content .app-action .card-body h1.card-title,
+.chat-block .card-body h1.card-title,
+.card .card-body h2.card-title,
+.app-block .app-content .app-action .card-body h2.card-title,
+.chat-block .card-body h2.card-title,
+.card .card-body h3.card-title,
+.app-block .app-content .app-action .card-body h3.card-title,
+.chat-block .card-body h3.card-title,
+.card .card-body h4.card-title,
+.app-block .app-content .app-action .card-body h4.card-title,
+.chat-block .card-body h4.card-title,
+.card .card-body h5.card-title,
+.app-block .app-content .app-action .card-body h5.card-title,
+.chat-block .card-body h5.card-title,
+.card .card-body h6.card-title,
+.app-block .app-content .app-action .card-body h6.card-title,
+.chat-block .card-body h6.card-title {
+  margin-bottom: 2rem;
+  font-size: 1rem;
+  font-weight: 600;
+}
+
+.card .card-body h1.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h1.card-title .dropdown *,
+.chat-block .card-body h1.card-title .dropdown *,
+.card .card-body h2.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h2.card-title .dropdown *,
+.chat-block .card-body h2.card-title .dropdown *,
+.card .card-body h3.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h3.card-title .dropdown *,
+.chat-block .card-body h3.card-title .dropdown *,
+.card .card-body h4.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h4.card-title .dropdown *,
+.chat-block .card-body h4.card-title .dropdown *,
+.card .card-body h5.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h5.card-title .dropdown *,
+.chat-block .card-body h5.card-title .dropdown *,
+.card .card-body h6.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h6.card-title .dropdown *,
+.chat-block .card-body h6.card-title .dropdown * {
+  letter-spacing: normal;
+  text-transform: none;
+}
+
+.card .card-scroll,
+.app-block .app-content .app-action .card-scroll,
+.chat-block .card-scroll {
+  height: 300px;
+  overflow: auto;
+}
+
+.card.purple,
+.app-block .app-content .purple.app-action,
+.purple.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #8a8ded, #9c9dc6);
+}
+
+.card.blue,
+.app-block .app-content .blue.app-action,
+.blue.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #6bc5e7, #bcd7ff);
+}
+
+.card.green,
+.app-block .app-content .green.app-action,
+.green.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #77df75, #b5e7a0);
+}
+
+.card.orange,
+.app-block .app-content .orange.app-action,
+.orange.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #ffc033, #ffc49d);
+}
+
+.card > .table-responsive .table td,
+.app-block .app-content .app-action > .table-responsive .table td,
+.chat-block > .table-responsive .table td,
+.card > .table-responsive .table th,
+.app-block .app-content .app-action > .table-responsive .table th,
+.chat-block > .table-responsive .table th {
+  padding: 0.75rem 1.5rem;
+}
+
+.card-group,
+.card-columns {
+  margin-bottom: 30px;
+}
+
+.bg-primary {
+  background: #0081ff !important;
+  color: white !important;
+}
+
+.bg-primary-bright {
+  background: rgba(0, 129, 255, 0.3) !important;
+}
+
+.bg-primary-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-primary-bright.bg-hover:hover {
+  background: rgba(11, 91, 182, 0.3) !important;
+}
+
+.bg-primary-gradient {
+  background: linear-gradient(230deg, #0081ff, #4da7ff) !important;
+  color: white !important;
+}
+
+.bg-info {
+  background: #33b5e5 !important;
+  color: white !important;
+}
+
+.bg-info.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-info.bg-hover:hover {
+  background: #60c5eb !important;
+}
+
+.bg-info-bright {
+  background: rgba(51, 181, 229, 0.3) !important;
+}
+
+.bg-info-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-info-bright.bg-hover:hover {
+  background: rgba(29, 173, 226, 0.3) !important;
+}
+
+.bg-info-gradient {
+  background: linear-gradient(230deg, #33b5e5, #77ceee) !important;
+  color: white !important;
+}
+
+.bg-secondary {
+  background: #aa66cc !important;
+  color: white !important;
+}
+
+.bg-secondary.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-secondary.bg-hover:hover {
+  background: #bf8cd9 !important;
+}
+
+.bg-secondary-bright {
+  background: rgba(170, 102, 204, 0.3) !important;
+}
+
+.bg-secondary-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-secondary-bright.bg-hover:hover {
+  background: rgba(159, 83, 198, 0.3) !important;
+}
+
+.bg-secondary-gradient {
+  background: linear-gradient(230deg, #aa66cc, #ca9fdf) !important;
+  color: white !important;
+}
+
+.bg-success {
+  background: #28c76f !important;
+  color: white !important;
+}
+
+.bg-success.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-success.bg-hover:hover {
+  background: #48da89 !important;
+}
+
+.bg-success-bright {
+  background: rgba(40, 199, 111, 0.3) !important;
+}
+
+.bg-success-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-success-bright.bg-hover:hover {
+  background: rgba(36, 178, 99, 0.3) !important;
+}
+
+.bg-success-gradient {
+  background: linear-gradient(230deg, #28c76f, #5dde97) !important;
+  color: white !important;
+}
+
+.bg-danger {
+  background: #ea5455 !important;
+  color: white !important;
+}
+
+.bg-danger.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-danger.bg-hover:hover {
+  background: #f08182 !important;
+}
+
+.bg-danger-bright {
+  background: rgba(234, 84, 85, 0.3) !important;
+}
+
+.bg-danger-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-danger-bright.bg-hover:hover {
+  background: rgba(231, 61, 62, 0.3) !important;
+}
+
+.bg-danger-gradient {
+  background: linear-gradient(230deg, #ea5455, #f29899) !important;
+  color: white !important;
+}
+
+.bg-warning {
+  background: #ff9f43 !important;
+  color: white !important;
+}
+
+.bg-warning.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-warning.bg-hover:hover {
+  background: #ffb976 !important;
+}
+
+.bg-warning-bright {
+  background: rgba(255, 159, 67, 0.3) !important;
+}
+
+.bg-warning-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-warning-bright.bg-hover:hover {
+  background: rgba(255, 146, 42, 0.3) !important;
+}
+
+.bg-warning-gradient {
+  background: linear-gradient(230deg, #ff9f43, #ffc690) !important;
+  color: white !important;
+}
+
+.bg-light {
+  background: #afb8bd !important;
+}
+
+.bg-dark {
+  background: #293134 !important;
+  color: white !important;
+}
+
+.bg-dark.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-dark.bg-hover:hover {
+  background: #3f4c51 !important;
+}
+
+.bg-dark-bright {
+  background: #d4d5d8 !important;
+}
+
+.bg-dark-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-dark-bright.bg-hover:hover {
+  background: #c7c8cc !important;
+}
+
+.bg-dark-gradient {
+  background: linear-gradient(230deg, #293134, #4b595f) !important;
+  color: white !important;
+}
+
+.bg-facebook {
+  background: #3b5998 !important;
+  color: white !important;
+}
+
+.bg-twitter {
+  background: #55acee !important;
+  color: white !important;
+}
+
+.bg-linkedin {
+  background: #0077b5 !important;
+  color: white !important;
+}
+
+.bg-whatsapp {
+  background: #43d854 !important;
+  color: white !important;
+}
+
+.bg-instagram {
+  background: #3f729b !important;
+  color: white !important;
+}
+
+.bg-dribbble {
+  background: #ea4c89 !important;
+  color: white !important;
+}
+
+.bg-google {
+  background: #db4437 !important;
+  color: white !important;
+}
+
+.bg-youtube {
+  background: #cd201f !important;
+  color: white !important;
+}
+
+.text-primary {
+  color: #0081ff !important;
+}
+
+.text-secondary {
+  color: #aa66cc !important;
+}
+
+.text-info {
+  color: #33b5e5 !important;
+}
+
+.text-success,
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active.task-list .app-list-title {
+  color: #28c76f !important;
+}
+
+.text-danger {
+  color: #ea5455 !important;
+}
+
+.text-warning {
+  color: #ff9f43 !important;
+}
+
+.text-light {
+  color: #afb8bd !important;
+}
+
+.text-facebook {
+  color: #3b5998 !important;
+}
+
+.text-twitter {
+  color: #55acee !important;
+}
+
+.text-google {
+  color: #db4437 !important;
+}
+
+.text-linkedin {
+  color: #0077b5 !important;
+}
+
+.text-instagram {
+  color: #3f729b !important;
+}
+
+.text-whatsapp {
+  color: #43d854 !important;
+}
+
+.text-dribbble {
+  color: #ea4c89 !important;
+}
+
+.colorpicker.dropdown-menu {
+  visibility: visible;
+  opacity: 1;
+  height: auto;
+}
+
+.colorpicker-2x .colorpicker-saturation {
+  width: 200px;
+  height: 200px;
+}
+
+.colorpicker-2x .colorpicker-hue,
+.colorpicker-2x .colorpicker-alpha {
+  width: 30px;
+  height: 200px;
+}
+
+.colorpicker-2x .colorpicker-color,
+.colorpicker-2x .colorpicker-color div {
+  height: 30px;
+}
+
+.colorpicker.colorpicker-hidden {
+  display: none !important;
+}
+
+ul:not(.list-unstyled) {
+  margin: 0;
+  padding: 0;
+}
+
+ul:not(.list-unstyled) li {
+  list-style-type: none;
+}
+
+ul:not(.list-unstyled) li a .icon,
+ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn .icon,
+.header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn .icon {
+  color: #d1d1d1;
+  font-size: 14px;
+  vertical-align: middle;
+}
+
+ul:not(.list-unstyled) li a:hover,
+ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn:hover,
+ul:not(.list-unstyled) li a:focus,
+ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn:focus {
+  text-decoration: underline;
+}
+
+ul li a:hover,
+ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append ul li button.btn:hover,
+ul li a:focus,
+ul li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append ul li button.btn:focus {
+  text-decoration: none !important;
+}
+
+ul.list-unstyled li {
+  margin-bottom: 10px;
+}
+
+ul.list-unstyled li ul {
+  margin-left: 30px !important;
+  margin-top: 10px !important;
+  margin-bottom: 10px !important;
+}
+
+ul.list-unstyled li ul li {
+  list-style-type: disc !important;
+}
+
+ul.links a,
+ul.links .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append ul.links button.btn {
+  display: block;
+  padding: 3px 5px;
+  color: #2e2e2e;
+}
+
+ul.links a.active,
+ul.links .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append ul.links button.active.btn {
+  color: #0081ff;
+  font-weight: 500;
+}
+
+.list-group.list-group-sm .list-group-item {
+  padding: 0.4rem 1rem;
+}
+
+.text-uppercase {
+  letter-spacing: 0.5px;
+}
+
+.bg-none {
+  background-color: inherit !important;
+}
+
+h1 {
+  font-size: 29px;
+}
+
+h2 {
+  font-size: 26px;
+}
+
+h3 {
+  font-size: 23px;
+}
+
+h4 {
+  font-size: 20px;
+}
+
+h5 {
+  font-size: 17px;
+}
+
+h6 {
+  font-size: 14px;
+}
+
+ul.list-inline li {
+  margin-bottom: 0.5rem;
+}
+
+hr {
+  border-color: #e6e6e6;
+}
+
+.right-0 {
+  right: 0;
+}
+
+.left-0 {
+  left: 0;
+}
+
+.top-0 {
+  top: 0;
+}
+
+.bottom-0 {
+  bottom: 0;
+}
+
+.cursor-pointer {
+  cursor: pointer;
+}
+
+p {
+  line-height: 1.5rem;
+}
+
+a,
+.header form .input-group .input-group-append button.btn {
+  color: #666666;
+  text-decoration: none;
+  -webkit-transition: color 0.2s;
+  transition: color 0.2s;
+}
+
+a:hover,
+.header form .input-group .input-group-append button.btn:hover {
+  color: black;
+  text-decoration: none;
+}
+
+a.link-1,
+.header form .input-group .input-group-append button.link-1.btn {
+  color: #0081ff;
+}
+
+a.link-1:hover,
+.header form .input-group .input-group-append button.link-1.btn:hover,
+a.link-1:focus,
+.header form .input-group .input-group-append button.link-1.btn:focus {
+  color: rgba(0, 129, 255, 0.8);
+}
+
+a.link-2,
+.header form .input-group .input-group-append button.link-2.btn {
+  color: black;
+}
+
+a.link-2:hover,
+.header form .input-group .input-group-append button.link-2.btn:hover,
+a.link-2:focus,
+.header form .input-group .input-group-append button.link-2.btn:focus {
+  color: #0081ff;
+}
+
+a.link-3,
+.header form .input-group .input-group-append button.link-3.btn {
+  color: white;
+}
+
+a.link-3:hover,
+.header form .input-group .input-group-append button.link-3.btn:hover,
+a.link-3:focus,
+.header form .input-group .input-group-append button.link-3.btn:focus {
+  color: #0081ff;
+}
+
+a:not(.active.list-group-item),
+.header form .input-group .input-group-append button.btn:not(.active.list-group-item),
+a:not(.btn):hover,
+.header form .input-group .input-group-append button.btn:not(.btn):hover,
+a:not(.btn):active,
+.header form .input-group .input-group-append button.btn:not(.btn):active,
+a:not(.btn):focus,
+.header form .input-group .input-group-append button.btn:not(.btn):focus {
+  text-decoration: none !important;
+  color: black;
+  outline: none;
+}
+
+a.btn:hover,
+.header form .input-group .input-group-append button.btn:hover,
+a.btn:active,
+.header form .input-group .input-group-append button.btn:active,
+a.btn:focus,
+.header form .input-group .input-group-append button.btn:focus {
+  text-decoration: none !important;
+}
+
+.page-link {
+  color: #0081ff;
+}
+
+.page-link:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.3);
+}
+
+.btn {
+  font-size: 14px;
+  width: auto;
+  display: -webkit-inline-box;
+  display: inline-flex;
+  font-weight: 600;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 10px 15px;
+  line-height: 14px;
+  border-radius: 0.5rem;
+}
+
+.btn svg {
+  width: 14px !important;
+  height: 14px !important;
+}
+
+.btn[data-toggle=dropdown] {
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.btn.btn-sm {
+  padding: 5px 10px;
+  font-size: 13px;
+}
+
+.btn.btn-lg {
+  padding: 15px 20px;
+  font-size: 17px;
+}
+
+.btn.btn-block {
+  width: 100%;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.btn.btn-square {
+  border-radius: 0;
+}
+
+.btn.btn-rounded {
+  border-radius: 50px;
+  padding: 10px 20px;
+}
+
+.btn.btn-rounded.btn-sm {
+  padding: 5px 15px;
+  font-size: 13px;
+}
+
+.btn.btn-rounded.btn-lg {
+  padding: 20px 30px;
+  font-size: 17px;
+}
+
+.btn.btn-floating {
+  height: 35px;
+  width: 35px;
+  padding: 0;
+  -webkit-box-pack: center;
+          justify-content: center;
+  border-radius: 50%;
+}
+
+.btn.btn-floating.btn-sm {
+  height: 30px;
+  width: 30px;
+}
+
+.btn.btn-floating.btn-lg {
+  height: 50px;
+  width: 50px;
+}
+
+.btn.btn-uppercase {
+  text-transform: uppercase;
+  font-size: 12px;
+  letter-spacing: 1px;
+  -webkit-box-align: center;
+          align-items: center;
+  font-weight: 600;
+}
+
+.btn.btn-uppercase.btn-sm {
+  font-size: 11px;
+}
+
+.btn.btn-uppercase.btn-lg {
+  font-size: 14px;
+}
+
+.btn.btn-shadow {
+  box-shadow: 0px 3px 4px 1px rgba(0, 0, 0, 0.3);
+}
+
+.btn.btn-shadow:focus,
+.btn.btn-shadow:active {
+  box-shadow: 0px 4px 6px 1px rgba(0, 0, 0, 0.3) !important;
+}
+
+.btn.btn-primary,
+a.btn[href="#next"],
+.header form .input-group .input-group-append button.btn[href="#next"],
+a.btn[href="#previous"],
+.header form .input-group .input-group-append button.btn[href="#previous"] {
+  background: #0081ff;
+  border-color: #0081ff;
+}
+
+.btn.btn-primary:not(:disabled):not(.disabled):hover,
+a.btn[href="#next"]:not(:disabled):not(.disabled):hover,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):hover,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):hover,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):hover,
+.btn.btn-primary:not(:disabled):not(.disabled):focus,
+a.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):focus,
+.btn.btn-primary:not(:disabled):not(.disabled):active,
+a.btn[href="#next"]:not(:disabled):not(.disabled):active,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):active,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):active,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):active {
+  background: #0067cc;
+  border-color: #0067cc;
+}
+
+.btn.btn-primary:not(:disabled):not(.disabled):focus,
+a.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.4) !important;
+}
+
+.btn.btn-primary.btn-pulse:not(:disabled):not(.disabled),
+a.btn.btn-pulse[href="#next"]:not(:disabled):not(.disabled),
+.header form .input-group .input-group-append button.btn.btn-pulse[href="#next"]:not(:disabled):not(.disabled),
+a.btn.btn-pulse[href="#previous"]:not(:disabled):not(.disabled),
+.header form .input-group .input-group-append button.btn.btn-pulse[href="#previous"]:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-primary:hover,
+a.btn[href="#next"]:hover,
+.header form .input-group .input-group-append button.btn[href="#next"]:hover,
+a.btn[href="#previous"]:hover,
+.header form .input-group .input-group-append button.btn[href="#previous"]:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-primary {
+  background: linear-gradient(20deg, #4da7ff, #0067cc);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #0081ff, #0067cc);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.5);
+}
+
+.btn.btn-gradient-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-primary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-primary {
+  background: rgba(0, 129, 255, 0.3);
+  border-color: transparent;
+  color: #0053a3;
+}
+
+.btn.btn-light-primary:not(:disabled):not(.disabled):hover,
+.btn.btn-light-primary:not(:disabled):not(.disabled):focus,
+.btn.btn-light-primary:not(:disabled):not(.disabled):active {
+  background: rgba(0, 129, 255, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.2);
+}
+
+.btn.btn-light-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-primary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-primary {
+  background: none;
+  border-color: #0081ff;
+  color: #0074e6;
+  border-width: 1px;
+}
+
+.btn.btn-outline-primary:not(:disabled):not(.disabled):hover {
+  background: #0081ff;
+  border-color: #0081ff;
+  color: white;
+}
+
+.btn.btn-outline-primary:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-primary:not(:disabled):not(.disabled):active {
+  background: #0062c2;
+  border-color: #0062c2;
+  color: white;
+}
+
+.btn.btn-outline-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.4);
+}
+
+.btn.btn-outline-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-primary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-secondary {
+  background: #aa66cc;
+  border-color: #aa66cc;
+}
+
+.btn.btn-secondary:not(:disabled):not(.disabled):hover,
+.btn.btn-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-secondary:not(:disabled):not(.disabled):active {
+  background: #9540bf;
+  border-color: #9540bf;
+}
+
+.btn.btn-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.4) !important;
+}
+
+.btn.btn-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-secondary {
+  background: linear-gradient(20deg, #ca9fdf, #9540bf);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #aa66cc, #9540bf);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.5);
+}
+
+.btn.btn-gradient-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-secondary {
+  background: rgba(170, 102, 204, 0.3);
+  border-color: transparent;
+  color: #7d36a1;
+}
+
+.btn.btn-light-secondary:not(:disabled):not(.disabled):hover,
+.btn.btn-light-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-light-secondary:not(:disabled):not(.disabled):active {
+  background: rgba(170, 102, 204, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.2);
+}
+
+.btn.btn-light-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-secondary {
+  background: none;
+  border-color: #aa66cc;
+  color: #9f53c6;
+  border-width: 1px;
+}
+
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):hover {
+  background: #aa66cc;
+  border-color: #aa66cc;
+  color: white;
+}
+
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):active {
+  background: #8f3db8;
+  border-color: #8f3db8;
+  color: white;
+}
+
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.4);
+}
+
+.btn.btn-outline-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-success {
+  background: #28c76f;
+  border-color: #28c76f;
+}
+
+.btn.btn-success:not(:disabled):not(.disabled):hover,
+.btn.btn-success:not(:disabled):not(.disabled):focus,
+.btn.btn-success:not(:disabled):not(.disabled):active {
+  background: #1f9d57;
+  border-color: #1f9d57;
+}
+
+.btn.btn-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.4) !important;
+}
+
+.btn.btn-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-success {
+  background: linear-gradient(20deg, #5dde97, #1f9d57);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-success:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-success:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-success:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #28c76f, #1f9d57);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.5);
+}
+
+.btn.btn-gradient-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-success {
+  background: rgba(40, 199, 111, 0.3);
+  border-color: transparent;
+  color: #197b44;
+}
+
+.btn.btn-light-success:not(:disabled):not(.disabled):hover,
+.btn.btn-light-success:not(:disabled):not(.disabled):focus,
+.btn.btn-light-success:not(:disabled):not(.disabled):active {
+  background: rgba(40, 199, 111, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.2);
+}
+
+.btn.btn-light-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-success {
+  background: none;
+  border-color: #28c76f;
+  color: #24b263;
+  border-width: 1px;
+}
+
+.btn.btn-outline-success:not(:disabled):not(.disabled):hover {
+  background: #28c76f;
+  border-color: #28c76f;
+  color: white;
+}
+
+.btn.btn-outline-success:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-success:not(:disabled):not(.disabled):active {
+  background: #1e9453;
+  border-color: #1e9453;
+  color: white;
+}
+
+.btn.btn-outline-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.4);
+}
+
+.btn.btn-outline-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-danger {
+  background: #ea5455;
+  border-color: #ea5455;
+}
+
+.btn.btn-danger:not(:disabled):not(.disabled):hover,
+.btn.btn-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-danger:not(:disabled):not(.disabled):active {
+  background: #e42728;
+  border-color: #e42728;
+}
+
+.btn.btn-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.4) !important;
+}
+
+.btn.btn-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-danger {
+  background: linear-gradient(20deg, #f29899, #e42728);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #ea5455, #e42728);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.5);
+}
+
+.btn.btn-gradient-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-danger {
+  background: rgba(234, 84, 85, 0.3);
+  border-color: transparent;
+  color: #c9191a;
+}
+
+.btn.btn-light-danger:not(:disabled):not(.disabled):hover,
+.btn.btn-light-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-light-danger:not(:disabled):not(.disabled):active {
+  background: rgba(234, 84, 85, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.2);
+}
+
+.btn.btn-light-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-danger {
+  background: none;
+  border-color: #ea5455;
+  color: #e73d3e;
+  border-width: 1px;
+}
+
+.btn.btn-outline-danger:not(:disabled):not(.disabled):hover {
+  background: #ea5455;
+  border-color: #ea5455;
+  color: white;
+}
+
+.btn.btn-outline-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-danger:not(:disabled):not(.disabled):active {
+  background: #e31d1f;
+  border-color: #e31d1f;
+  color: white;
+}
+
+.btn.btn-outline-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.4);
+}
+
+.btn.btn-outline-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-warning {
+  background: #ff9f43;
+  border-color: #ff9f43;
+}
+
+.btn.btn-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-warning:not(:disabled):not(.disabled):active {
+  background: #ff8510;
+  border-color: #ff8510;
+}
+
+.btn.btn-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.4) !important;
+}
+
+.btn.btn-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-warning {
+  background: linear-gradient(20deg, #ffc690, #ff8510);
+  border-color: transparent;
+  color: white;
+  color: #212529;
+}
+
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #ff9f43, #ff8510);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.5);
+}
+
+.btn.btn-gradient-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-warning {
+  background: rgba(255, 159, 67, 0.3);
+  border-color: transparent;
+  color: #e67100;
+}
+
+.btn.btn-light-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-light-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-light-warning:not(:disabled):not(.disabled):active {
+  background: rgba(255, 159, 67, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.2);
+}
+
+.btn.btn-light-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-warning {
+  background: none;
+  border-color: #ff9f43;
+  color: #ff922a;
+  border-width: 1px;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):hover {
+  background: #ff9f43;
+  border-color: #ff9f43;
+  color: white;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-warning:not(:disabled):not(.disabled):active {
+  background: #ff8006;
+  border-color: #ff8006;
+  color: white;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.4);
+}
+
+.btn.btn-outline-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-outline-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-warning:not(:disabled):not(.disabled):active {
+  color: #212529;
+}
+
+.btn.btn-info {
+  background: #33b5e5;
+  border-color: #33b5e5;
+}
+
+.btn.btn-info:not(:disabled):not(.disabled):hover,
+.btn.btn-info:not(:disabled):not(.disabled):focus,
+.btn.btn-info:not(:disabled):not(.disabled):active {
+  background: #1a9bcb;
+  border-color: #1a9bcb;
+}
+
+.btn.btn-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.4) !important;
+}
+
+.btn.btn-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-info {
+  background: linear-gradient(20deg, #77ceee, #1a9bcb);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-info:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-info:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-info:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #33b5e5, #1a9bcb);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.5);
+}
+
+.btn.btn-gradient-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-info {
+  background: rgba(51, 181, 229, 0.3);
+  border-color: transparent;
+  color: #1580a7;
+}
+
+.btn.btn-light-info:not(:disabled):not(.disabled):hover,
+.btn.btn-light-info:not(:disabled):not(.disabled):focus,
+.btn.btn-light-info:not(:disabled):not(.disabled):active {
+  background: rgba(51, 181, 229, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.2);
+}
+
+.btn.btn-light-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-info {
+  background: none;
+  border-color: #33b5e5;
+  color: #1dade2;
+  border-width: 1px;
+}
+
+.btn.btn-outline-info:not(:disabled):not(.disabled):hover {
+  background: #33b5e5;
+  border-color: #33b5e5;
+  color: white;
+}
+
+.btn.btn-outline-info:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-info:not(:disabled):not(.disabled):active {
+  background: #1994c2;
+  border-color: #1994c2;
+  color: white;
+}
+
+.btn.btn-outline-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.4);
+}
+
+.btn.btn-outline-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light,
+.fc .btn.fc-state-default {
+  background: #afb8bd;
+  border-color: #afb8bd;
+}
+
+.btn.btn-light:not(:disabled):not(.disabled):hover,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):hover,
+.btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):focus,
+.btn.btn-light:not(:disabled):not(.disabled):active,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):active {
+  background: #939fa6;
+  border-color: #939fa6;
+}
+
+.btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.4) !important;
+}
+
+.btn.btn-light.btn-pulse:not(:disabled):not(.disabled),
+.fc .btn.btn-pulse.fc-state-default:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light:hover,
+.fc .btn.fc-state-default:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-light {
+  background: linear-gradient(20deg, #d9dde0, #939fa6);
+  border-color: transparent;
+  color: white;
+  color: inherit;
+}
+
+.btn.btn-gradient-light:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-light:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-light:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #afb8bd, #939fa6);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-light:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.5);
+}
+
+.btn.btn-gradient-light.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-light:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-light {
+  background: none;
+  border-color: #afb8bd;
+  color: #a1acb1;
+  border-width: 1px;
+  color: #212529;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):hover {
+  background: #afb8bd;
+  border-color: #afb8bd;
+  color: white;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-light:not(:disabled):not(.disabled):active {
+  background: #8d9aa1;
+  border-color: #8d9aa1;
+  color: white;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.4);
+}
+
+.btn.btn-outline-light.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-light:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):hover,
+.btn.btn-outline-light:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-light:not(:disabled):not(.disabled):active {
+  color: #212529;
+}
+
+.btn.btn-dark {
+  background: #293134;
+  border-color: #293134;
+}
+
+.btn.btn-dark:not(:disabled):not(.disabled):hover,
+.btn.btn-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-dark:not(:disabled):not(.disabled):active {
+  background: #131617;
+  border-color: #131617;
+}
+
+.btn.btn-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.4) !important;
+}
+
+.btn.btn-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-dark {
+  background: linear-gradient(20deg, #4b595f, #131617);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #293134, #131617);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.5);
+}
+
+.btn.btn-gradient-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-dark {
+  background: rgba(41, 49, 52, 0.3);
+  border-color: transparent;
+  color: #010101;
+}
+
+.btn.btn-light-dark:not(:disabled):not(.disabled):hover,
+.btn.btn-light-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-light-dark:not(:disabled):not(.disabled):active {
+  background: rgba(41, 49, 52, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.2);
+}
+
+.btn.btn-light-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-dark {
+  background: none;
+  border-color: #293134;
+  color: #1e2426;
+  border-width: 1px;
+}
+
+.btn.btn-outline-dark:not(:disabled):not(.disabled):hover {
+  background: #293134;
+  border-color: #293134;
+  color: white;
+}
+
+.btn.btn-outline-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-dark:not(:disabled):not(.disabled):active {
+  background: #0e1112;
+  border-color: #0e1112;
+  color: white;
+}
+
+.btn.btn-outline-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.4);
+}
+
+.btn.btn-outline-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-facebook {
+  background: #3b5998;
+  border-color: #3b5998;
+  color: white;
+}
+
+.btn.btn-facebook:not(:disabled):not(.disabled):hover,
+.btn.btn-facebook:not(:disabled):not(.disabled):focus,
+.btn.btn-facebook:not(:disabled):not(.disabled):active {
+  background: #2d4373;
+  border-color: #2d4373;
+}
+
+.btn.btn-facebook:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(59, 89, 152, 0.4) !important;
+}
+
+.btn.btn-facebook.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(59, 89, 152, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-facebook:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-facebook {
+  background: none;
+  border-color: #3b5998;
+  color: #344e86;
+  border-width: 1px;
+}
+
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):hover {
+  background: #3b5998;
+  border-color: #3b5998;
+  color: white;
+}
+
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):active {
+  background: #2a3f6c;
+  border-color: #2a3f6c;
+  color: white;
+}
+
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(59, 89, 152, 0.4);
+}
+
+.btn.btn-outline-facebook.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(59, 89, 152, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-facebook:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-google {
+  background: #db4437;
+  border-color: #db4437;
+  color: white;
+}
+
+.btn.btn-google:not(:disabled):not(.disabled):hover,
+.btn.btn-google:not(:disabled):not(.disabled):focus,
+.btn.btn-google:not(:disabled):not(.disabled):active {
+  background: #bd2e22;
+  border-color: #bd2e22;
+}
+
+.btn.btn-google:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(219, 68, 55, 0.4) !important;
+}
+
+.btn.btn-google.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(219, 68, 55, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-google:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-google {
+  background: none;
+  border-color: #db4437;
+  color: #d33426;
+  border-width: 1px;
+}
+
+.btn.btn-outline-google:not(:disabled):not(.disabled):hover {
+  background: #db4437;
+  border-color: #db4437;
+  color: white;
+}
+
+.btn.btn-outline-google:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-google:not(:disabled):not(.disabled):active {
+  background: #b42c20;
+  border-color: #b42c20;
+  color: white;
+}
+
+.btn.btn-outline-google:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(219, 68, 55, 0.4);
+}
+
+.btn.btn-outline-google.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(219, 68, 55, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-google:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-twitter {
+  background: #55acee;
+  border-color: #55acee;
+  color: white;
+}
+
+.btn.btn-twitter:not(:disabled):not(.disabled):hover,
+.btn.btn-twitter:not(:disabled):not(.disabled):focus,
+.btn.btn-twitter:not(:disabled):not(.disabled):active {
+  background: #2795e9;
+  border-color: #2795e9;
+}
+
+.btn.btn-twitter:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(85, 172, 238, 0.4) !important;
+}
+
+.btn.btn-twitter.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(85, 172, 238, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-twitter:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-twitter {
+  background: none;
+  border-color: #55acee;
+  color: #3ea1ec;
+  border-width: 1px;
+}
+
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):hover {
+  background: #55acee;
+  border-color: #55acee;
+  color: white;
+}
+
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):active {
+  background: #1d91e8;
+  border-color: #1d91e8;
+  color: white;
+}
+
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(85, 172, 238, 0.4);
+}
+
+.btn.btn-outline-twitter.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(85, 172, 238, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-twitter:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-linkedin {
+  background: #0077b5;
+  border-color: #0077b5;
+  color: white;
+}
+
+.btn.btn-linkedin:not(:disabled):not(.disabled):hover,
+.btn.btn-linkedin:not(:disabled):not(.disabled):focus,
+.btn.btn-linkedin:not(:disabled):not(.disabled):active {
+  background: #005582;
+  border-color: #005582;
+}
+
+.btn.btn-linkedin:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 119, 181, 0.4) !important;
+}
+
+.btn.btn-linkedin.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 119, 181, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-linkedin:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-linkedin {
+  background: none;
+  border-color: #0077b5;
+  color: #00669c;
+  border-width: 1px;
+}
+
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):hover {
+  background: #0077b5;
+  border-color: #0077b5;
+  color: white;
+}
+
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):active {
+  background: #004f78;
+  border-color: #004f78;
+  color: white;
+}
+
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 119, 181, 0.4);
+}
+
+.btn.btn-outline-linkedin.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 119, 181, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-linkedin:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-whatsapp {
+  background: #43d854;
+  border-color: #43d854;
+  color: white;
+}
+
+.btn.btn-whatsapp:not(:disabled):not(.disabled):hover,
+.btn.btn-whatsapp:not(:disabled):not(.disabled):focus,
+.btn.btn-whatsapp:not(:disabled):not(.disabled):active {
+  background: #28c039;
+  border-color: #28c039;
+}
+
+.btn.btn-whatsapp:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(67, 216, 84, 0.4) !important;
+}
+
+.btn.btn-whatsapp.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(67, 216, 84, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-whatsapp:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-whatsapp {
+  background: none;
+  border-color: #43d854;
+  color: #2ed441;
+  border-width: 1px;
+}
+
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):hover {
+  background: #43d854;
+  border-color: #43d854;
+  color: white;
+}
+
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):active {
+  background: #26b837;
+  border-color: #26b837;
+  color: white;
+}
+
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(67, 216, 84, 0.4);
+}
+
+.btn.btn-outline-whatsapp.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(67, 216, 84, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-whatsapp:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-instagram {
+  background: #3f729b;
+  border-color: #3f729b;
+  color: white;
+}
+
+.btn.btn-instagram:not(:disabled):not(.disabled):hover,
+.btn.btn-instagram:not(:disabled):not(.disabled):focus,
+.btn.btn-instagram:not(:disabled):not(.disabled):active {
+  background: #305777;
+  border-color: #305777;
+}
+
+.btn.btn-instagram:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(63, 114, 155, 0.4) !important;
+}
+
+.btn.btn-instagram.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(63, 114, 155, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-instagram:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-instagram {
+  background: none;
+  border-color: #3f729b;
+  color: #386589;
+  border-width: 1px;
+}
+
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):hover {
+  background: #3f729b;
+  border-color: #3f729b;
+  color: white;
+}
+
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):active {
+  background: #2d526f;
+  border-color: #2d526f;
+  color: white;
+}
+
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(63, 114, 155, 0.4);
+}
+
+.btn.btn-outline-instagram.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(63, 114, 155, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-instagram:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-dribbble {
+  background: #ea4c89;
+  border-color: #ea4c89;
+  color: white;
+}
+
+.btn.btn-dribbble:not(:disabled):not(.disabled):hover,
+.btn.btn-dribbble:not(:disabled):not(.disabled):focus,
+.btn.btn-dribbble:not(:disabled):not(.disabled):active {
+  background: #e51e6b;
+  border-color: #e51e6b;
+}
+
+.btn.btn-dribbble:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 76, 137, 0.4) !important;
+}
+
+.btn.btn-dribbble.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 76, 137, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-dribbble:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-dribbble {
+  background: none;
+  border-color: #ea4c89;
+  color: #e7357a;
+  border-width: 1px;
+}
+
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):hover {
+  background: #ea4c89;
+  border-color: #ea4c89;
+  color: white;
+}
+
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):active {
+  background: #df1a66;
+  border-color: #df1a66;
+  color: white;
+}
+
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 76, 137, 0.4);
+}
+
+.btn.btn-outline-dribbble.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 76, 137, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-dribbble:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-youtube {
+  background: #cd201f;
+  border-color: #cd201f;
+  color: white;
+}
+
+.btn.btn-youtube:not(:disabled):not(.disabled):hover,
+.btn.btn-youtube:not(:disabled):not(.disabled):focus,
+.btn.btn-youtube:not(:disabled):not(.disabled):active {
+  background: #a11918;
+  border-color: #a11918;
+}
+
+.btn.btn-youtube:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(205, 32, 31, 0.4) !important;
+}
+
+.btn.btn-youtube.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(205, 32, 31, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-youtube:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-youtube {
+  background: none;
+  border-color: #cd201f;
+  color: #b71d1c;
+  border-width: 1px;
+}
+
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):hover {
+  background: #cd201f;
+  border-color: #cd201f;
+  color: white;
+}
+
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):active {
+  background: #981817;
+  border-color: #981817;
+  color: white;
+}
+
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(205, 32, 31, 0.4);
+}
+
+.btn.btn-outline-youtube.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(205, 32, 31, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-youtube:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-github {
+  background: #00405d;
+  border-color: #00405d;
+  color: white;
+}
+
+.btn.btn-github:not(:disabled):not(.disabled):hover,
+.btn.btn-github:not(:disabled):not(.disabled):focus,
+.btn.btn-github:not(:disabled):not(.disabled):active {
+  background: #001d2a;
+  border-color: #001d2a;
+}
+
+.btn.btn-github:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 64, 93, 0.4) !important;
+}
+
+.btn.btn-github.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 64, 93, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-github:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-github {
+  background: none;
+  border-color: #00405d;
+  color: #002e44;
+  border-width: 1px;
+}
+
+.btn.btn-outline-github:not(:disabled):not(.disabled):hover {
+  background: #00405d;
+  border-color: #00405d;
+  color: white;
+}
+
+.btn.btn-outline-github:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-github:not(:disabled):not(.disabled):active {
+  background: #001620;
+  border-color: #001620;
+  color: white;
+}
+
+.btn.btn-outline-github:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 64, 93, 0.4);
+}
+
+.btn.btn-outline-github.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 64, 93, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-github:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-behance {
+  background: #1769ff;
+  border-color: #1769ff;
+  color: white;
+}
+
+.btn.btn-behance:not(:disabled):not(.disabled):hover,
+.btn.btn-behance:not(:disabled):not(.disabled):focus,
+.btn.btn-behance:not(:disabled):not(.disabled):active {
+  background: #0050e3;
+  border-color: #0050e3;
+}
+
+.btn.btn-behance:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(23, 105, 255, 0.4) !important;
+}
+
+.btn.btn-behance.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(23, 105, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-behance:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-behance {
+  background: none;
+  border-color: #1769ff;
+  color: #0059fd;
+  border-width: 1px;
+}
+
+.btn.btn-outline-behance:not(:disabled):not(.disabled):hover {
+  background: #1769ff;
+  border-color: #1769ff;
+  color: white;
+}
+
+.btn.btn-outline-behance:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-behance:not(:disabled):not(.disabled):active {
+  background: #004dd9;
+  border-color: #004dd9;
+  color: white;
+}
+
+.btn.btn-outline-behance:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(23, 105, 255, 0.4);
+}
+
+.btn.btn-outline-behance.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(23, 105, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-behance:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-skype {
+  background: #00aff0;
+  border-color: #00aff0;
+  color: white;
+}
+
+.btn.btn-skype:not(:disabled):not(.disabled):hover,
+.btn.btn-skype:not(:disabled):not(.disabled):focus,
+.btn.btn-skype:not(:disabled):not(.disabled):active {
+  background: #008abd;
+  border-color: #008abd;
+}
+
+.btn.btn-skype:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 175, 240, 0.4) !important;
+}
+
+.btn.btn-skype.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 175, 240, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-skype:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-skype {
+  background: none;
+  border-color: #00aff0;
+  color: #009cd7;
+  border-width: 1px;
+}
+
+.btn.btn-outline-skype:not(:disabled):not(.disabled):hover {
+  background: #00aff0;
+  border-color: #00aff0;
+  color: white;
+}
+
+.btn.btn-outline-skype:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-skype:not(:disabled):not(.disabled):active {
+  background: #0082b3;
+  border-color: #0082b3;
+  color: white;
+}
+
+.btn.btn-outline-skype:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 175, 240, 0.4);
+}
+
+.btn.btn-outline-skype.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 175, 240, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-skype:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-yahoo {
+  background: #410093;
+  border-color: #410093;
+  color: white;
+}
+
+.btn.btn-yahoo:not(:disabled):not(.disabled):hover,
+.btn.btn-yahoo:not(:disabled):not(.disabled):focus,
+.btn.btn-yahoo:not(:disabled):not(.disabled):active {
+  background: #2a0060;
+  border-color: #2a0060;
+}
+
+.btn.btn-yahoo:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(65, 0, 147, 0.4) !important;
+}
+
+.btn.btn-yahoo.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(65, 0, 147, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-yahoo:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-yahoo {
+  background: none;
+  border-color: #410093;
+  color: #36007a;
+  border-width: 1px;
+}
+
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):hover {
+  background: #410093;
+  border-color: #410093;
+  color: white;
+}
+
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):active {
+  background: #260056;
+  border-color: #260056;
+  color: white;
+}
+
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(65, 0, 147, 0.4);
+}
+
+.btn.btn-outline-yahoo.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(65, 0, 147, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-yahoo:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-apple,
+.btn.btn-google-play {
+  border-radius: 7px;
+}
+
+.btn.btn-apple img,
+.btn.btn-google-play img {
+  width: 35px;
+  margin-right: 10px;
+}
+
+.btn.btn-apple i,
+.btn.btn-google-play i {
+  font-size: 40px;
+  margin-right: 10px;
+}
+
+.btn.btn-apple > span,
+.btn.btn-google-play > span {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  text-align: left;
+}
+
+.btn.btn-apple > span span:nth-child(2),
+.btn.btn-google-play > span span:nth-child(2) {
+  font-size: 20px;
+  font-weight: 600;
+  margin-top: 5px;
+}
+
+.btn.btn-apple:hover,
+.btn.btn-apple:active,
+.btn.btn-apple:focus,
+.btn.btn-google-play:hover,
+.btn.btn-google-play:active,
+.btn.btn-google-play:focus {
+  background: #040507;
+  color: white;
+}
+
+.btn.btn-apple {
+  border: 1px solid #040507;
+  color: #040507;
+}
+
+.btn.btn-google-play {
+  background: #040507;
+  color: white;
+}
+
+.btn.btn-google-play > span span:nth-child(1) {
+  text-transform: uppercase;
+  font-size: 12px;
+}
+
+@-webkit-keyframes pulse {
+  to {
+    box-shadow: 0 0 0 10px rgba(232, 76, 61, 0);
+  }
+}
+
+@keyframes pulse {
+  to {
+    box-shadow: 0 0 0 10px rgba(232, 76, 61, 0);
+  }
+}
+
+.progress .progress-bar.progress-bar-striped {
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent) !important;
+  background-size: 1rem 1rem !important;
+}
+
+.progress .progress-bar:not(.progress-bar-striped) {
+  background: #0081ff;
+}
+
+.dropdown {
+  display: inline;
+}
+
+.dropdown-menu {
+  margin-top: -10px;
+  visibility: hidden;
+  opacity: 0;
+  height: 0;
+  display: block !important;
+  -webkit-transition: margin-top 0.3s, opacity 0.3s;
+  transition: margin-top 0.3s, opacity 0.3s;
+  border-top: 1px solid #eee !important;
+}
+
+.dropdown-menu ul.list-group {
+  max-height: 300px;
+}
+
+.dropdown-menu.show {
+  margin-top: 0;
+  visibility: visible;
+  opacity: 1;
+  height: auto;
+}
+
+.dropdown-header {
+  font-size: inherit;
+  padding: 10px 20px;
+  border-bottom: 1px solid #f0f0f0;
+}
+
+.dropdown-body {
+  padding: 10px 20px;
+}
+
+.dropdown-menu {
+  border-radius: 0.5rem;
+  font-size: 14px;
+  border: none;
+  box-shadow: 0px 5px 10px -1px rgba(0, 0, 0, 0.15);
+  overflow: hidden;
+}
+
+.dropdown-menu.dropdown-menu-big {
+  padding: 0;
+  width: 300px;
+}
+
+.dropdown-menu .dropdown-menu-body {
+  max-height: 400px;
+  overflow: auto;
+}
+
+.dropdown-menu .dropdown-menu-title {
+  background-color: #0081ff;
+  padding: 15px 20px;
+  color: white;
+  background-size: cover !important;
+  background-position: center !important;
+}
+
+.dropdown-menu .dropdown-menu-footer {
+  padding: 10px 20px;
+}
+
+.dropdown-menu ul li.dropdown-menu-title {
+  background: red;
+  margin: 5px 0;
+  padding: 0px 20px 5px;
+  border-bottom: 1px solid #ebebeb;
+}
+
+.dropdown-menu ul li.dropdown-menu-title:first-child {
+  margin-top: 0;
+}
+
+.dropdown-menu .dropdown-item:hover,
+.dropdown-menu .dropdown-item:focus,
+.dropdown-menu .dropdown-item:active {
+  background: #f5f5f5;
+  text-decoration: none;
+  color: #0081ff;
+}
+
+table .dropdown {
+  line-height: initial;
+}
+
+.badge {
+  padding: 5px 10px;
+  font-size: 11px;
+}
+
+.badge.badge-success {
+  background: #28c76f;
+}
+
+.badge.badge-danger {
+  background: #ea5455;
+}
+
+.badge.badge-secondary {
+  background: #aa66cc;
+}
+
+.badge.badge-info {
+  background: #33b5e5;
+}
+
+.badge.badge-warning {
+  background: #ff9f43;
+}
+
+.badge.badge-dark {
+  background: #293134;
+}
+
+.badge.badge-primary {
+  background: #0081ff;
+}
+
+.badge.badge-light {
+  background: #afb8bd;
+}
+
+.btn {
+  position: relative;
+}
+
+.btn .badge {
+  padding: 2px 6px;
+  right: 7px;
+  top: -7px;
+  position: absolute;
+}
+
+.collapse .card,
+.collapse .app-block .app-content .app-action,
+.app-block .app-content .collapse .app-action,
+.collapse .chat-block {
+  border: 1px solid #e1e1e1;
+  box-shadow: none;
+}
+
+.media > img,
+.media > a > img,
+.header form .input-group .input-group-append .media > button.btn > img {
+  width: 80px;
+}
+
+.accordion .card,
+.accordion .app-block .app-content .app-action,
+.app-block .app-content .accordion .app-action,
+.accordion .chat-block {
+  margin-bottom: 0;
+  border: 1px solid #ebebeb;
+}
+
+.accordion .card .card-header,
+.accordion .app-block .app-content .app-action .card-header,
+.app-block .app-content .accordion .app-action .card-header,
+.accordion .chat-block .card-header {
+  display: -webkit-box;
+  display: flex;
+  height: 50px;
+  padding: 0 10px;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.accordion .card .card-header button,
+.accordion .app-block .app-content .app-action .card-header button,
+.app-block .app-content .accordion .app-action .card-header button,
+.accordion .chat-block .card-header button {
+  display: block;
+}
+
+.accordion.custom-accordion {
+  border: 1px solid #ebebeb;
+  border-radius: 5px;
+  overflow: hidden;
+}
+
+.accordion.custom-accordion .accordion-row a.accordion-header,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn {
+  color: #293134;
+  border-bottom: 1px solid #ebebeb;
+  border-top: 1px solid #ebebeb;
+  padding: 10px 20px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  margin-top: -1px;
+}
+
+.accordion.custom-accordion .accordion-row a.accordion-header .accordion-status-icon.open,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.open,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn .accordion-status-icon.open {
+  display: none;
+}
+
+.accordion.custom-accordion .accordion-row a.accordion-header:hover,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn:hover,
+.accordion.custom-accordion .accordion-row a.accordion-header:focus,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn:focus {
+  color: #0081ff;
+}
+
+.accordion.custom-accordion .accordion-row .accordion-body {
+  display: none;
+  padding: 10px 20px;
+}
+
+.accordion.custom-accordion .accordion-row.open a.accordion-header,
+.accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn {
+  background: white;
+}
+
+.accordion.custom-accordion .accordion-row.open a.accordion-header .accordion-status-icon.open,
+.accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.open,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn .accordion-status-icon.open {
+  display: block;
+}
+
+.accordion.custom-accordion .accordion-row.open a.accordion-header .accordion-status-icon.close,
+.accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.close,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn .accordion-status-icon.close {
+  display: none;
+}
+
+.accordion.custom-accordion .accordion-row.open .accordion-body {
+  display: block;
+}
+
+.accordion.custom-accordion .accordion-row:first-child a.accordion-header,
+.accordion.custom-accordion .accordion-row:first-child .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row:first-child button.accordion-header.btn {
+  border-top: none;
+}
+
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #0081ff;
+}
+
+.accordion.custom-accordion.accordion-primary .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-primary .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row.open button.accordion-header.btn {
+  background: #0081ff;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #28c76f;
+}
+
+.accordion.custom-accordion.accordion-success .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-success .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row.open button.accordion-header.btn {
+  background: #28c76f;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #ea5455;
+}
+
+.accordion.custom-accordion.accordion-danger .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-danger .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row.open button.accordion-header.btn {
+  background: #ea5455;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #aa66cc;
+}
+
+.accordion.custom-accordion.accordion-secondary .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-secondary .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row.open button.accordion-header.btn {
+  background: #aa66cc;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-light .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-light .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row.open button.accordion-header.btn {
+  background: #afb8bd;
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #ff9f43;
+}
+
+.accordion.custom-accordion.accordion-warning .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-warning .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row.open button.accordion-header.btn {
+  background: #ff9f43;
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #33b5e5;
+}
+
+.accordion.custom-accordion.accordion-info .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-info .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row.open button.accordion-header.btn {
+  background: #33b5e5;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-dark .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-dark .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row.open button.accordion-header.btn {
+  background: #293134;
+  color: white;
+}
+
+.nicescroll-cursors {
+  border: none !important;
+}
+
+body:not(.dark) .nicescroll-cursors {
+  background-color: rgba(41, 49, 52, 0.4) !important;
+  width: 3px !important;
+}
+
+.isotope-item {
+  z-index: 2;
+}
+
+.isotope-hidden.isotope-item {
+  pointer-events: none;
+  z-index: 1;
+}
+
+.isotope,
+.isotope .isotope-item {
+  -webkit-transition-duration: 0.8s;
+          transition-duration: 0.8s;
+}
+
+.isotope {
+  -webkit-transition-property: height, width;
+  transition-property: height, width;
+}
+
+.isotope .isotope-item {
+  -webkit-transition-property: opacity, -webkit-transform;
+  transition-property: opacity, -webkit-transform;
+  transition-property: transform, opacity;
+  transition-property: transform, opacity, -webkit-transform;
+}
+
+.gallery-container img {
+  width: 100%;
+}
+
+.daterangepicker td.active {
+  background: #0081ff;
+}
+
+.daterangepicker td.active:hover {
+  background: #0081ff;
+}
+
+.daterangepicker .ranges li.active {
+  background: #0081ff;
+}
+
+.alert {
+  border-color: transparent !important;
+}
+
+.alert .close {
+  height: 100%;
+  width: 44px;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 0;
+  display: -webkit-box;
+  display: flex;
+}
+
+.alert .close > * {
+  font-size: initial;
+  text-shadow: none;
+  line-height: 0;
+}
+
+.alert.alert-primary {
+  background: rgba(0, 129, 255, 0.3) !important;
+}
+
+.alert.alert-primary.alert-with-border {
+  border-left: 3px solid #0081ff !important;
+}
+
+.alert.alert-secondary {
+  background: rgba(170, 102, 204, 0.3) !important;
+}
+
+.alert.alert-secondary.alert-with-border {
+  border-left: 3px solid #aa66cc !important;
+}
+
+.alert.alert-success {
+  background: rgba(40, 199, 111, 0.3) !important;
+}
+
+.alert.alert-success.alert-with-border {
+  border-left: 3px solid #28c76f !important;
+}
+
+.alert.alert-danger {
+  background: rgba(234, 84, 85, 0.3) !important;
+}
+
+.alert.alert-danger.alert-with-border {
+  border-left: 3px solid #ea5455 !important;
+}
+
+.alert.alert-warning {
+  background: rgba(255, 159, 67, 0.3) !important;
+}
+
+.alert.alert-warning.alert-with-border {
+  border-left: 3px solid #ff9f43 !important;
+}
+
+.alert.alert-info {
+  background: rgba(51, 181, 229, 0.3) !important;
+}
+
+.alert.alert-info.alert-with-border {
+  border-left: 3px solid #33b5e5 !important;
+}
+
+.alert.alert-dark {
+  background: #d4d5d8 !important;
+  color: #293134 !important;
+}
+
+.alert.alert-dark.alert-with-border {
+  border-left: 3px solid #293134 !important;
+}
+
+.breadcrumb {
+  background: none;
+  padding: 0;
+  margin-bottom: 30px;
+}
+
+.breadcrumb .breadcrumb-item + .breadcrumb-item::before {
+  font-family: "themify";
+  content: "\E649";
+  font-size: 10px;
+  margin-right: 0;
+}
+
+.breadcrumb .breadcrumb-item:before {
+  font-family: "themify";
+  content: "\E69B";
+  margin-right: 0.5rem;
+}
+
+.breadcrumb .breadcrumb-item.active {
+  color: #0081ff;
+}
+
+.notify .alert {
+  border: none;
+  box-shadow: 0 2px 10px 0 rgba(24, 28, 33, 0.04);
+}
+
+.notify .alert .alert-heading {
+  font-size: 16px;
+  font-weight: 600;
+}
+
+.notify.open {
+  -webkit-transform: translate(0);
+          transform: translate(0);
+}
+
+.pagination .page-item.active .page-link {
+  background: #0081ff;
+  border-color: transparent;
+}
+
+.pagination .page-item .page-link:hover,
+.pagination .page-item .page-link:focus {
+  text-decoration: none;
+}
+
+.pagination.pagination-rounded .page-item {
+  margin: 0 5px;
+}
+
+.pagination.pagination-rounded .page-item .page-link {
+  border-radius: 50%;
+  padding: 0;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  height: 40px;
+  width: 40px;
+}
+
+.pagination.pagination-rounded.pagination-sm .page-link {
+  height: 30px;
+  width: 30px;
+}
+
+.pagination.pagination-rounded.pagination-lg .page-link {
+  height: 60px;
+  width: 60px;
+}
+
+.tourStep {
+  border: none;
+}
+
+.tourStep.right {
+  margin-left: 10px;
+}
+
+.tourStep.left {
+  margin-right: 10px;
+}
+
+.tourStep.top {
+  margin-top: -10px;
+}
+
+.tourStep.bottom {
+  margin-top: 10px;
+}
+
+.tourStep .popover-navigation {
+  border-top: 1px solid #ddd;
+  padding: 0.5rem 0.75rem;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.tourStep .popover-navigation span {
+  font-size: 12px;
+  color: #9b9b9b;
+}
+
+.tourStep .popover-navigation .popover-navigation-buttons {
+  margin-left: auto;
+}
+
+.tourStep .popover-navigation .popover-navigation-buttons .btn {
+  margin-left: 5px;
+}
+
+.swal-modal {
+  border-radius: 0.5rem;
+}
+
+.swal-modal .swal-title {
+  font-size: 20px;
+}
+
+.swal-modal .swal-text {
+  text-align: center;
+}
+
+.swal-modal .swal-button {
+  padding: 0.375rem 0.75rem;
+}
+
+.swal-modal .swal-button.swal-button--confirm {
+  background: #0081ff;
+}
+
+.swal-modal .swal-button.swal-button--danger {
+  background: #ea5455;
+}
+
+.swal-modal .swal-button.swal-button--cancel {
+  background: #afb8bd;
+}
+
+.swal-modal .swal-icon--error {
+  border-color: #f4a6a6;
+}
+
+.swal-modal .swal-icon--error .swal-icon--error__line {
+  background: #f4a6a6;
+}
+
+.irs .irs-single,
+.irs .irs-to,
+.irs .irs-from {
+  background: #0081ff;
+}
+
+.irs .irs-single:before,
+.irs .irs-to:before,
+.irs .irs-from:before {
+  border-top-color: #0081ff;
+}
+
+.irs .irs-handle {
+  border-color: #0081ff;
+}
+
+.irs .irs-bar {
+  background: #0081ff;
+}
+
+.select2 {
+  width: 100% !important;
+}
+
+.select2.select2-container .select2-selection {
+  border: 1px solid #ced4da;
+}
+
+.select2.select2-container .select2-selection .select2-selection__placeholder {
+  line-height: calc(2.25rem + 2px);
+}
+
+.select2.select2-container .select2-selection .select2-selection__arrow {
+  height: calc(2.25rem + 2px);
+  width: 30px;
+}
+
+.select2.select2-container .select2-selection .select2-selection__choice {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  border: none;
+}
+
+.select2.select2-container .select2-selection .select2-selection__choice .select2-selection__choice__remove {
+  font-size: 16px;
+  padding: 0 5px 0 3px;
+}
+
+.select2.select2-container .select2-selection.select2-container--focus {
+  border-color: red;
+}
+
+.select2-container--default .select2-results__option--highlighted[aria-selected] {
+  background-color: #0081ff;
+  color: white;
+}
+
+.select2-container--default.select2-container--focus .select2-selection--multiple {
+  border-color: rgba(0, 129, 255, 0.8);
+}
+
+.select2-container--default .select2-search--dropdown .select2-search__field {
+  height: calc(2.25rem + 2px);
+  padding: 0.375rem 0.75rem;
+}
+
+body.modal-open .modal.fade .modal-dialog {
+  -webkit-transform: translate(0, 0) scale(0.9);
+          transform: translate(0, 0) scale(0.9);
+}
+
+body.modal-open .modal.show .modal-dialog {
+  -webkit-transform: translate(0, 0) scale(1);
+          transform: translate(0, 0) scale(1);
+}
+
+.modal .modal-dialog .modal-content {
+  border: none;
+  box-shadow: none;
+  border-radius: 0.5rem;
+}
+
+.modal .modal-dialog .modal-content .modal-header {
+  height: 60px;
+  padding: 0 20px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  background-color: #ebebeb;
+  border-bottom: none;
+}
+
+.modal .modal-dialog .modal-content .modal-header .modal-title {
+  font-size: 17px;
+  font-weight: 600;
+}
+
+.modal .modal-dialog .modal-content .modal-header button.close {
+  background-color: white;
+  text-shadow: none;
+  opacity: 1;
+  margin: 0;
+  font-size: 23px;
+  padding: 0;
+  width: 30px;
+  height: 30px;
+  display: -webkit-box;
+  display: flex;
+  border-radius: 50%;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.modal .modal-dialog .modal-content .modal-header button.close:hover {
+  color: #646464;
+}
+
+.modal .modal-dialog .modal-content .modal-header button.close > * {
+  font-size: initial;
+}
+
+.modal .modal-dialog .modal-content .modal-body {
+  padding: 1.5rem;
+}
+
+.modal .modal-dialog .modal-content .modal-footer {
+  height: 60px;
+}
+
+.wickedpicker {
+  border: none;
+  box-shadow: 0 2px 15px 0 rgba(69, 65, 78, 0.18);
+  width: auto;
+  border-radius: 0;
+  height: auto;
+}
+
+.wickedpicker .wickedpicker__controls {
+  padding: 10px 15px;
+}
+
+.wickedpicker .wickedpicker__controls__control {
+  width: 40px;
+}
+
+.wickedpicker .wickedpicker__controls__control .wickedpicker__controls__control-up:before {
+  content: "\F077";
+  font: normal normal normal 14px/1 FontAwesome;
+}
+
+.wickedpicker .wickedpicker__controls__control .wickedpicker__controls__control-down:after {
+  content: "\F078";
+  font: normal normal normal 14px/1 FontAwesome;
+}
+
+.wickedpicker .wickedpicker__controls__control .hover-state {
+  color: #0081ff;
+}
+
+.wickedpicker .wickedpicker__title {
+  display: none;
+}
+
+.clearable-picker {
+  position: relative;
+}
+
+.clearable-picker [data-clear-picker] {
+  cursor: pointer;
+  font-size: 20px;
+  position: absolute;
+  right: 10px;
+  top: 50%;
+  height: 17px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  width: 17px;
+  color: #646464;
+  margin-top: -8.5px;
+  bottom: 0;
+}
+
+.avatar {
+  display: inline-block;
+  margin-bottom: 0;
+  height: 3rem;
+  width: 3rem;
+  border-radius: 50%;
+}
+
+.avatar .avatar-title {
+  background: #d7d7d7;
+  width: 100%;
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  text-transform: uppercase;
+  font-size: 19px;
+}
+
+.avatar > a,
+.header form .input-group .input-group-append .avatar > button.btn {
+  width: 100%;
+  height: 100%;
+  display: block;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+  color: #0081ff;
+}
+
+.avatar > a:hover,
+.header form .input-group .input-group-append .avatar > button.btn:hover,
+.avatar > a:focus,
+.header form .input-group .input-group-append .avatar > button.btn:focus {
+  color: #646464;
+}
+
+.avatar > a > img,
+.header form .input-group .input-group-append .avatar > button.btn > img,
+.avatar > img {
+  width: 100%;
+  height: 100%;
+  -o-object-fit: cover;
+     object-fit: cover;
+}
+
+.avatar.avatar-sm {
+  height: 2rem;
+  width: 2rem;
+}
+
+.avatar.avatar-sm .avatar-title {
+  font-size: 14px;
+}
+
+.avatar.avatar-sm.avatar-state-primary:before,
+.avatar.avatar-sm.avatar-state-success:before,
+.avatar.avatar-sm.avatar-state-danger:before,
+.avatar.avatar-sm.avatar-state-warning:before,
+.avatar.avatar-sm.avatar-state-info:before,
+.avatar.avatar-sm.avatar-state-secondary:before,
+.avatar.avatar-sm.avatar-state-light:before,
+.avatar.avatar-sm.avatar-state-dark:before {
+  width: 0.8rem;
+  height: 0.8rem;
+}
+
+.avatar.avatar-lg {
+  height: 4.5rem;
+  width: 4.5rem;
+}
+
+.avatar.avatar-lg .avatar-title {
+  font-size: 29px;
+}
+
+.avatar.avatar-lg.avatar-state-primary:before,
+.avatar.avatar-lg.avatar-state-success:before,
+.avatar.avatar-lg.avatar-state-danger:before,
+.avatar.avatar-lg.avatar-state-warning:before,
+.avatar.avatar-lg.avatar-state-info:before,
+.avatar.avatar-lg.avatar-state-secondary:before,
+.avatar.avatar-lg.avatar-state-light:before,
+.avatar.avatar-lg.avatar-state-dark:before {
+  width: 1.3rem;
+  height: 1.3rem;
+  right: 4px;
+}
+
+.avatar.avatar-xl {
+  height: 5.8rem;
+  width: 5.8rem;
+}
+
+.avatar.avatar-xl .avatar-title {
+  font-size: 39px;
+}
+
+.avatar.avatar-xl.avatar-state-primary:before,
+.avatar.avatar-xl.avatar-state-success:before,
+.avatar.avatar-xl.avatar-state-danger:before,
+.avatar.avatar-xl.avatar-state-warning:before,
+.avatar.avatar-xl.avatar-state-info:before,
+.avatar.avatar-xl.avatar-state-secondary:before,
+.avatar.avatar-xl.avatar-state-light:before,
+.avatar.avatar-xl.avatar-state-dark:before {
+  width: 1.6rem;
+  height: 1.6rem;
+  top: 3px;
+  right: 3px;
+}
+
+.avatar.avatar-state-primary,
+.avatar.avatar-state-success,
+.avatar.avatar-state-danger,
+.avatar.avatar-state-warning,
+.avatar.avatar-state-info,
+.avatar.avatar-state-secondary,
+.avatar.avatar-state-light,
+.avatar.avatar-state-dark {
+  position: relative;
+}
+
+.avatar.avatar-state-primary:before,
+.avatar.avatar-state-success:before,
+.avatar.avatar-state-danger:before,
+.avatar.avatar-state-warning:before,
+.avatar.avatar-state-info:before,
+.avatar.avatar-state-secondary:before,
+.avatar.avatar-state-light:before,
+.avatar.avatar-state-dark:before {
+  content: "";
+  position: absolute;
+  display: block;
+  width: 1rem;
+  height: 1rem;
+  border-radius: 50%;
+  top: 0px;
+  right: 0px;
+  border: 3px solid white;
+}
+
+.avatar.avatar-state-primary:before {
+  background: #0081ff;
+}
+
+.avatar.avatar-state-success:before {
+  background: #28c76f;
+}
+
+.avatar.avatar-state-danger:before {
+  background: #ea5455;
+}
+
+.avatar.avatar-state-warning:before {
+  background: #ff9f43;
+}
+
+.avatar.avatar-state-info:before {
+  background: #33b5e5;
+}
+
+.avatar.avatar-state-secondary:before {
+  background: #aa66cc;
+}
+
+.avatar.avatar-state-light:before {
+  background: #afb8bd;
+}
+
+.avatar.avatar-state-dark:before {
+  background: #293134;
+}
+
+.avatar-group {
+  display: -webkit-inline-box;
+  display: inline-flex;
+}
+
+.avatar-group .avatar {
+  margin-right: -1rem;
+  border: 2px solid white;
+}
+
+.avatar-group .avatar:last-child {
+  margin-right: 0;
+}
+
+.avatar-group .avatar:hover {
+  position: relative;
+  z-index: 1;
+}
+
+.dropzone {
+  border-width: 1px;
+  border-color: #0081ff;
+}
+
+body.form-membership {
+  background-attachment: fixed;
+  background-size: cover;
+  padding: 3rem 0;
+}
+
+body.form-membership .form-wrapper {
+  background-color: white;
+  box-shadow: 0 3px 10px rgba(62, 85, 120, 0.045);
+  padding: 3rem;
+  border-radius: 0.5rem;
+  width: 430px;
+  margin: 50px auto;
+  text-align: center;
+}
+
+body.form-membership .form-wrapper #logo {
+  margin: 1rem 0 3rem;
+}
+
+body.form-membership .form-wrapper #logo img:not(.logo) {
+  display: none;
+}
+
+body.form-membership .form-wrapper h5 {
+  text-align: center;
+  margin-bottom: 2rem;
+}
+
+body.form-membership .form-wrapper form .form-control,
+body.form-membership .form-wrapper form .swal-modal input.swal-content__input,
+.swal-modal body.form-membership .form-wrapper form input.swal-content__input {
+  margin-bottom: 1.5rem;
+}
+
+body.form-membership .form-wrapper hr {
+  margin: 2rem 0;
+}
+
+.user-page {
+  height: 100vh;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  overflow: auto;
+}
+
+.user-page .card,
+.user-page .app-block .app-content .app-action,
+.app-block .app-content .user-page .app-action,
+.user-page .chat-block {
+  width: 500px;
+}
+
+.user-page .card .card-body,
+.user-page .app-block .app-content .app-action .card-body,
+.app-block .app-content .user-page .app-action .card-body,
+.user-page .chat-block .card-body {
+  padding: 50px;
+}
+
+.chat-app {
+  overflow: hidden;
+  padding-bottom: 30px;
+}
+
+.chat-app .content-footer {
+  display: none;
+}
+
+.chat-app.horizontal-navigation .chat-block {
+  height: calc(100vh - 190px);
+}
+
+.chat-app.horizontal-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-top: 160px;
+}
+
+.chat-block {
+  height: calc(100vh - 135px);
+  border-radius: 0.5rem;
+  overflow: hidden;
+  margin-bottom: 0;
+}
+
+.chat-block .chat-sidebar {
+  padding: 1.5rem;
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  background-color: #f8fafb;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-header form {
+  margin: 1.5rem 0;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-content {
+  -webkit-box-flex: 1;
+          flex: 1;
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  overflow: auto;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item {
+  background: white;
+  border-radius: 0.5rem;
+  border: 1px solid transparent;
+  margin-bottom: 1rem;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item.active {
+  color: black;
+  border-color: #0081ff;
+}
+
+.chat-block .chat-content {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  height: 100%;
+}
+
+.chat-block .chat-content .mobile-chat-close-btn {
+  display: none;
+}
+
+.chat-block .chat-content .chat-header {
+  padding: 1.5rem;
+}
+
+.chat-block .chat-content .messages {
+  padding: 1.5rem;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  -webkit-box-align: start;
+          align-items: flex-start;
+  -webkit-box-flex: 1;
+          flex: 1;
+  overflow-x: hidden;
+}
+
+.chat-block .chat-content .messages .message-item {
+  margin-bottom: 20px;
+  padding-left: 10px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  position: relative;
+}
+
+.chat-block .chat-content .messages .message-item .time {
+  margin-left: 1rem;
+}
+
+.chat-block .chat-content .messages .message-item img {
+  max-width: 30%;
+  border-radius: 0.5rem;
+}
+
+.chat-block .chat-content .messages .message-item:not(.message-media):not(.message-item-divider):before {
+  content: "";
+  border: 10px solid transparent;
+  border-right-color: #f0f0f0;
+  position: absolute;
+  top: 8px;
+  left: -10px;
+  z-index: 1;
+}
+
+.chat-block .chat-content .messages .message-item .message-item-content {
+  max-width: 75%;
+  background-color: #f0f0f0;
+  padding: 7px 15px;
+  line-height: 1.5rem;
+  border-radius: 0.5rem;
+  position: relative;
+  z-index: 2;
+}
+
+.chat-block .chat-content .messages .message-item.me {
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: reverse;
+          flex-direction: row-reverse;
+  margin-left: auto;
+  padding-left: 0px;
+  padding-right: 10px;
+}
+
+.chat-block .chat-content .messages .message-item.me .time {
+  margin-left: 0;
+  margin-right: 1rem;
+}
+
+.chat-block .chat-content .messages .message-item.me:not(.message-item-divider):before {
+  left: auto;
+  right: -10px;
+  border-left-color: #0081ff;
+  border-right-color: transparent;
+}
+
+.chat-block .chat-content .messages .message-item.me .message-item-content {
+  background-color: #0081ff;
+  color: rgba(255, 255, 255, 0.9);
+}
+
+.chat-block .chat-content .messages .message-item.message-item-divider {
+  width: 100%;
+  display: -webkit-box;
+  display: flex;
+}
+
+.chat-block .chat-content .messages .message-item.message-item-divider span {
+  padding: 0 10px;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.chat-block .chat-content .messages .message-item.message-item-divider:before,
+.chat-block .chat-content .messages .message-item.message-item-divider:after {
+  content: "";
+  display: block;
+  height: 1px;
+  background-color: #f0f0f0;
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.chat-block .chat-content .chat-footer {
+  padding: 1.5rem;
+}
+
+.chat-block .chat-content .chat-footer .chat-footer-buttons button {
+  margin-left: 0.5rem;
+}
+
+.table:not(.table-bordered) thead th {
+  border-top: none;
+  border-bottom-width: 1px;
+  font-weight: 500;
+  text-transform: uppercase;
+  font-size: 11px;
+  letter-spacing: 0.5px;
+}
+
+.table:not(.table-bordered) td {
+  vertical-align: middle;
+  line-height: 1;
+  white-space: nowrap;
+}
+
+.table .dropdown-menu {
+  margin-top: 0;
+}
+
+.table.table-lg td {
+  padding: 1.3rem 0.75rem;
+}
+
+.table tr.tr-selected {
+  background-color: whitesmoke;
+}
+
+.table.table-striped tbody tr:nth-of-type(odd) {
+  background-color: rgba(0, 0, 0, 0.03);
+}
+
+.table-responsive-stack tr {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+  flex-direction: row;
+}
+
+.table-responsive-stack td,
+.table-responsive-stack th {
+  display: block;
+  -webkit-box-flex: 1;
+          flex: 1 1 auto;
+}
+
+.timeline .timeline-item {
+  padding-bottom: 20px;
+  position: relative;
+  display: -webkit-box;
+  display: flex;
+}
+
+.timeline .timeline-item > div:last-child {
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.timeline .timeline-item::before {
+  content: "";
+  display: block;
+  position: absolute;
+  width: 1px;
+  bottom: 0px;
+  top: 32px;
+  left: 15px;
+  background: #e1e1e1;
+}
+
+.timeline .timeline-item:last-child {
+  padding-bottom: 0;
+  bottom: 0;
+}
+
+.timeline .timeline-item:last-child::before {
+  display: none;
+}
+
+#external-events .fc-event {
+  border: none;
+  background: none;
+  color: #646464;
+  font-size: 14px;
+  cursor: move;
+}
+
+#external-events .fc-event i {
+  margin-right: 10px;
+}
+
+.fc .fc-center h2 {
+  font-weight: 400;
+  font-size: 19px;
+  color: #828282;
+}
+
+.fc .fc-event {
+  background: #0081ff;
+  color: white !important;
+  border: none;
+  border-radius: 0;
+  margin: 0 3px;
+  padding: 0px 4px;
+  font-size: 11px;
+  line-height: normal;
+}
+
+.fc .fc-event:hover {
+  background: #0151ac;
+}
+
+.fc .fc-event.bg-danger:hover {
+  background: #eb3030 !important;
+}
+
+.fc .fc-event.bg-success:hover {
+  background: #00b43d !important;
+}
+
+.fc .fc-event.bg-info:hover {
+  background: #1fa1d1 !important;
+}
+
+.fc .fc-event.bg-warning:hover {
+  background: #eba71f !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-danger:hover td {
+  background: #ea5455 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-danger .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-success:hover td {
+  background: #28c76f !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-success .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-info:hover td {
+  background: #33b5e5 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-info .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-warning:hover td {
+  background: #ff9f43 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-warning .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-primary:hover td {
+  background: #0081ff !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-primary .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-secondary:hover td {
+  background: #aa66cc !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-secondary .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-dark:hover td {
+  background: #293134 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-dark .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-state-default {
+  background-image: none;
+  border: none;
+  box-shadow: none;
+  text-shadow: none;
+}
+
+.fc .fc-state-default.fc-state-active {
+  background: #0081ff;
+  color: white;
+}
+
+.fc .fc-event-dot {
+  background: #cdcdcd !important;
+}
+
+.fc-toolbar .fc-state-active,
+.fc-toolbar .ui-state-active {
+  z-index: 2;
+}
+
+.list-group .list-group-item.list-group-item-primary {
+  background: #0081ff !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-primary-bright {
+  background: rgba(0, 129, 255, 0.3) !important;
+  color: #0081ff !important;
+}
+
+.list-group .list-group-item.list-group-item-secondary {
+  background: #aa66cc !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-secondary-bright {
+  background: rgba(170, 102, 204, 0.3) !important;
+  color: #aa66cc !important;
+}
+
+.list-group .list-group-item.list-group-item-success {
+  background: #28c76f !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-success-bright {
+  background: rgba(40, 199, 111, 0.3) !important;
+  color: #28c76f !important;
+}
+
+.list-group .list-group-item.list-group-item-danger {
+  background: #ea5455 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-danger-bright {
+  background: rgba(234, 84, 85, 0.3) !important;
+  color: #ea5455 !important;
+}
+
+.list-group .list-group-item.list-group-item-warning {
+  background: #ff9f43 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-warning-bright {
+  background: rgba(255, 159, 67, 0.3) !important;
+  color: #ff9f43 !important;
+}
+
+.list-group .list-group-item.list-group-item-info {
+  background: #33b5e5 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-info-bright {
+  background: rgba(51, 181, 229, 0.3) !important;
+  color: #33b5e5 !important;
+}
+
+.list-group .list-group-item.list-group-item-light {
+  background: #afb8bd !important;
+}
+
+.list-group .list-group-item.list-group-item-dark {
+  background: #293134 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-dark-bright {
+  background: #d4d5d8 !important;
+  color: #293134 !important;
+}
+
+.nav-pills .nav-link.active,
+.nav-pills .show > .nav-link {
+  background-color: #0081ff;
+}
+
+.toast-title {
+  font-weight: bold;
+}
+
+.toast-message {
+  -ms-word-wrap: break-word;
+  word-wrap: break-word;
+}
+
+.toast-message a,
+.toast-message .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .toast-message button.btn,
+.toast-message label {
+  color: #ffffff;
+}
+
+.toast-message a:hover,
+.toast-message .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .toast-message button.btn:hover {
+  color: #cccccc;
+  text-decoration: none;
+}
+
+.toast-close-button {
+  position: relative;
+  right: -0.3em;
+  top: -0.3em;
+  float: right;
+  font-size: 20px;
+  font-weight: bold;
+  color: #ffffff;
+  opacity: 0.8;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  filter: alpha(opacity=80);
+}
+
+.toast-close-button:hover,
+.toast-close-button:focus {
+  color: #000000;
+  text-decoration: none;
+  cursor: pointer;
+  opacity: 0.4;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
+  filter: alpha(opacity=40);
+}
+
+/*Additional properties for button version
+ iOS requires the button element instead of an anchor tag.
+ If you want the anchor version, it requires `href="#"`.*/
+
+button.toast-close-button {
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+  -webkit-appearance: none;
+}
+
+.toast-top-center {
+  top: 30px;
+  right: 0;
+  width: 100%;
+}
+
+.toast-bottom-center {
+  bottom: 0;
+  right: 0;
+  width: 100%;
+}
+
+.toast-top-full-width {
+  top: 30px;
+  right: 0;
+  width: 100%;
+}
+
+.toast-bottom-full-width {
+  bottom: 0;
+  right: 0;
+  width: 100%;
+}
+
+.toast-top-left {
+  top: 30px;
+  left: 33px;
+}
+
+.toast-top-right {
+  top: 33px;
+  right: 33px;
+}
+
+.toast-bottom-right {
+  right: 33px;
+  bottom: 33px;
+}
+
+.toast-bottom-left {
+  bottom: 33px;
+  left: 33px;
+}
+
+#toast-container {
+  position: fixed;
+  z-index: 999999;
+  pointer-events: none;
+  /*overrides*/
+}
+
+#toast-container * {
+  box-sizing: border-box;
+}
+
+#toast-container > div {
+  position: relative;
+  overflow: hidden;
+  margin: 0 0 6px;
+  padding: 15px 15px 15px 50px;
+  width: 300px;
+  border-radius: 0.25rem;
+  background-position: 15px center;
+  background-repeat: no-repeat;
+  color: #ffffff;
+  opacity: 1;
+}
+
+#toast-container > div:hover {
+  cursor: pointer;
+}
+
+#toast-container > .toast-info {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container > .toast-error {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container > .toast-success {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
+}
+
+#toast-container > .toast-warning {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container.toast-top-center > div,
+#toast-container.toast-bottom-center > div {
+  width: 300px;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+#toast-container.toast-top-full-width > div,
+#toast-container.toast-bottom-full-width > div {
+  width: 96%;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.toast {
+  background-color: #293134;
+  border: none;
+  box-shadow: none;
+}
+
+.toast-success {
+  background-color: #28c76f;
+}
+
+.toast-error {
+  background-color: #ea5455;
+}
+
+.toast-info {
+  background-color: #33b5e5;
+}
+
+.toast-warning {
+  background-color: #ff9f43;
+}
+
+.toast-progress {
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  height: 2px;
+  background-color: #000000;
+  opacity: 0.2;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=20);
+  filter: alpha(opacity=20);
+}
+
+/*Responsive Design*/
+
+@media all and (max-width: 240px) {
+  #toast-container > div {
+    padding: 8px 8px 8px 50px;
+    width: 11em;
+  }
+
+  #toast-container .toast-close-button {
+    right: -0.2em;
+    top: -0.2em;
+  }
+}
+
+@media all and (min-width: 241px) and (max-width: 480px) {
+  #toast-container > div {
+    padding: 8px 8px 8px 50px;
+    width: 18em;
+  }
+
+  #toast-container .toast-close-button {
+    right: -0.2em;
+    top: -0.2em;
+  }
+}
+
+@media all and (min-width: 481px) and (max-width: 768px) {
+  #toast-container > div {
+    padding: 15px 15px 15px 50px;
+    width: 25em;
+  }
+}
+
+.dd-handle {
+  font-weight: normal;
+}
+
+.dd-handle:hover {
+  color: #0081ff;
+}
+
+.dd3-content {
+  font-weight: normal;
+}
+
+.slick-next {
+  right: 5px;
+}
+
+.slick-prev {
+  left: 5px;
+}
+
+.slick-prev,
+.slick-next {
+  width: 30px;
+  height: 30px;
+  z-index: 1;
+}
+
+.slick-prev:before,
+.slick-next:before {
+  font-size: 30px;
+}
+
+.slick-slide-item > * {
+  padding: 10px;
+}
+
+.slick-center {
+  -webkit-transition: -webkit-transform 0.3s;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+  -webkit-transform: scale(1.2);
+          transform: scale(1.2);
+}
+
+/* the slides */
+
+.slick-slide {
+  margin: 0 10px;
+}
+
+/* the parent */
+
+.slick-list {
+  margin: 0 -10px;
+}
+
+.stretch-layout {
+  overflow: hidden;
+}
+
+.stretch-layout .app-block {
+  height: calc(100vh - 135px);
+}
+
+.stretch-layout .content-footer {
+  display: none;
+}
+
+.stretch-layout:not(.chat-app).right-navigation.small-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-left: 30px !important;
+  padding-right: 110px !important;
+}
+
+.stretch-layout.hidden-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-right: 30px !important;
+  padding-left: 30px !important;
+}
+
+.stretch-layout.horizontal-navigation .app-block {
+  height: calc(100vh - 190px);
+}
+
+.app-block .app-sidebar {
+  height: 100%;
+}
+
+.app-block .app-sidebar > .card,
+.app-block .app-content .app-sidebar > .app-action,
+.app-block .app-sidebar > .chat-block {
+  height: 100%;
+  margin-bottom: 0;
+}
+
+.app-block .app-sidebar > .card .card-body,
+.app-block .app-content .app-sidebar > .app-action .card-body,
+.app-block .app-sidebar > .chat-block .card-body {
+  -webkit-box-flex: 0;
+          flex: none;
+}
+
+.app-block .app-sidebar .app-sidebar-menu {
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.app-block .app-sidebar .app-sidebar-menu .list-group .list-group-item.active {
+  background: none;
+  color: #0081ff;
+}
+
+.app-block .app-sidebar-menu-button {
+  display: none;
+}
+
+.app-block .app-content {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  height: 100%;
+}
+
+.app-block .app-content .app-content-overlay {
+  display: none;
+  position: absolute;
+  right: 1rem;
+  border-radius: 8px;
+  left: 1rem;
+  top: 0;
+  bottom: 0;
+  background-color: rgba(0, 0, 0, 0.25);
+  z-index: 8;
+}
+
+.app-block .app-content .app-content-overlay.show {
+  display: block;
+}
+
+.app-block .app-content .app-action {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  padding: 1.5rem;
+}
+
+.app-block .app-content .app-action .action-left,
+.app-block .app-content .app-action .action-right {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.app-block .app-content .app-action .action-right {
+  margin-left: 1rem;
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+}
+
+.app-block .app-content .app-action .action-right form {
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.app-block .app-content .app-content-body {
+  margin-bottom: 0;
+  -webkit-box-flex: 1;
+          flex: 1;
+  padding: 0;
+  height: 100%;
+  position: static;
+  overflow: hidden;
+}
+
+.app-block .app-content .app-content-body .app-lists {
+  height: 100%;
+  overflow: auto;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item {
+  padding-top: 15px;
+  padding-bottom: 15px;
+  background: none;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item:hover {
+  cursor: pointer;
+  background-color: #fafafa;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active {
+  background-color: #ebebeb;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .avatar {
+  border-color: #ebebeb;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .app-list-title {
+  color: black;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active.task-list .app-list-title {
+  text-decoration: line-through;
+}
+
+.app-block .app-content .app-content-body .app-detail {
+  margin-bottom: 0;
+  position: absolute;
+  right: 0.9rem;
+  top: 0.5rem;
+  bottom: 0;
+  left: 0.9rem;
+  z-index: 2;
+  opacity: 0;
+  visibility: hidden;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+
+.app-block .app-content .app-content-body .app-detail.show {
+  opacity: 1;
+  visibility: visible;
+  top: 0;
+}
+
+.app-block .app-content .app-content-body .app-detail .card-header {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 1.5rem;
+  border-bottom: 1px solid #ebebeb;
+}
+
+.app-block .app-content .app-content-body .app-detail .card-header .app-detail-action-left {
+  display: -webkit-box;
+  display: flex;
+}
+
+.app-block .app-content .app-content-body .app-detail .card-header .app-detail-action-right {
+  margin-left: auto;
+}
+
+#compose .ql-toolbar.ql-snow,
+.app-block .ql-toolbar.ql-snow {
+  border: none;
+  padding: 0;
+}
+
+#compose .ql-editor,
+.app-block .ql-editor {
+  min-height: 70px;
+}
+
+.app-sortable-handle {
+  cursor: move;
+}
+
+.app-file-list {
+  border: 1px solid #ebebeb;
+}
+
+.app-file-list .app-file-icon {
+  background-color: #f5f5f5;
+  padding: 2rem;
+  text-align: center;
+  font-size: 2rem;
+  border-bottom: 1px solid #ebebeb;
+  border-top-right-radius: 8px;
+  border-top-left-radius: 8px;
+}
+
+.app-file-list:hover {
+  border-color: #d7d7d7;
+}
+
+body:not(.stretch-layout) .app-block .app-content .app-content-body {
+  overflow: visible;
+}
+
+.demo-icon-list {
+  height: 100px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  font-size: 25px;
+}
+
+@media (max-width: 768px) {
+  .theme-switcher {
+    display: none;
+  }
+}
+
+@media (min-width: 768px) {
+  .theme-switcher {
+    opacity: 0;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    position: fixed;
+    right: -250px;
+    top: 50%;
+    -webkit-transform: translate(0, -50%);
+            transform: translate(0, -50%);
+    -webkit-user-select: none;
+       -moz-user-select: none;
+        -ms-user-select: none;
+            user-select: none;
+    z-index: 9999;
+    -webkit-transition: right 0.3s;
+    transition: right 0.3s;
+  }
+
+  .theme-switcher.open {
+    right: 0;
+  }
+
+  .theme-switcher .theme-switcher-button {
+    background-color: #0081ff;
+    color: white;
+    padding: 12px 15px;
+    border-top-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    cursor: pointer;
+  }
+
+  .theme-switcher .theme-switcher-button i {
+    font-size: 22px;
+    -webkit-animation-name: spin;
+            animation-name: spin;
+    -webkit-animation-duration: 3000ms;
+            animation-duration: 3000ms;
+    -webkit-animation-iteration-count: infinite;
+            animation-iteration-count: infinite;
+    -webkit-animation-timing-function: linear;
+            animation-timing-function: linear;
+  }
+
+  .theme-switcher .theme-switcher-panel {
+    width: 250px;
+  }
+
+  .theme-switcher .theme-switcher-panel .card,
+  .theme-switcher .theme-switcher-panel .chat-block,
+  .theme-switcher .theme-switcher-panel .app-block .app-content .app-action,
+  .app-block .app-content .theme-switcher .theme-switcher-panel .app-action {
+    margin-bottom: 0;
+    border: 1px solid #0081ff;
+    border-right: none;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+
+@-webkit-keyframes spin {
+    from {
+      -webkit-transform: rotate(0deg);
+              transform: rotate(0deg);
+    }
+
+    to {
+      -webkit-transform: rotate(360deg);
+              transform: rotate(360deg);
+    }
+}
+
+@keyframes spin {
+    from {
+      -webkit-transform: rotate(0deg);
+              transform: rotate(0deg);
+    }
+
+    to {
+      -webkit-transform: rotate(360deg);
+              transform: rotate(360deg);
+    }
+}
+}
+
+@media (min-width: 1200px) {
+  body.boxed-layout {
+    background-color: white;
+  }
+
+  body.boxed-layout .layout-wrapper {
+    background-color: #f8fafb;
+    box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+    margin: 0 120px;
+  }
+
+  body.boxed-layout .layout-wrapper .header {
+    margin: 0 120px;
+  }
+
+  body.boxed-layout .layout-wrapper .navigation {
+    left: 120px;
+  }
+
+  body.boxed-layout.right-navigation .navigation {
+    left: auto;
+    right: 120px;
+  }
+
+  body.boxed-layout.horizontal-navigation .horizontal-navigation {
+    left: 120px;
+    right: 120px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation {
+    width: 80px;
+    -webkit-transition: width 0.3s;
+    transition: width 0.3s;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-tab {
+    border-right-color: transparent;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn {
+    padding: 12px 0;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li {
+    position: relative;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li:hover > a .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li:hover > button.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li:hover > button.btn .nav-link-icon {
+    stroke: #0081ff;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn {
+    border-radius: 4px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a span:not(.badge):not(.avatar-title),
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn span:not(.badge):not(.avatar-title),
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn span:not(.badge):not(.avatar-title) {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a .badge,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .badge,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn .badge {
+    position: absolute;
+    right: 20px;
+    top: 12px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+    margin: 0 !important;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul li.open > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn + ul li.open > a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn + ul li.open > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul li.open > button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn + ul li.open > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn + ul li.open > button.btn {
+    background: none;
+    color: #0081ff;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > ul {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li:not(.navigation-divider) {
+    padding: 0 15px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn {
+    display: block;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a .sub-menu-arrow,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn .sub-menu-arrow {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn {
+    padding-left: 53px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li button.btn {
+    padding-left: 65px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a.active,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.active.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.active.btn {
+    border-radius: 5px;
+    background-color: #0081ff;
+    position: static;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a.active .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.active.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.active.btn .nav-link-icon {
+    stroke: white;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover {
+    width: 320px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover .navigation-menu-tab {
+    border-right-color: #e6e6e6;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover .navigation-menu-body {
+    display: -webkit-box;
+    display: flex;
+    height: calc(100vh - 75px);
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a > span,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn > span,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn > span,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a .sub-menu-arrow,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn .sub-menu-arrow {
+    display: inherit !important;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn .nav-link-icon {
+    margin-right: 0.8rem !important;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li.open > ul {
+    display: block;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 110px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .content-footer {
+    margin-left: 80px;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .header .navigation-toggler {
+    display: block;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .navigation {
+    z-index: 1000;
+    left: -80%;
+    top: 0;
+    bottom: 0;
+    opacity: 0;
+    -webkit-transition: left 0.3s;
+    transition: left 0.3s;
+    position: fixed !important;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .navigation.open {
+    left: 0;
+    opacity: 1;
+  }
+
+  body.hidden-navigation:not(.small-navigation).right-navigation .navigation {
+    left: auto;
+    right: -80%;
+    -webkit-transition: right 0.3s;
+    transition: right 0.3s;
+  }
+
+  body.hidden-navigation:not(.small-navigation).right-navigation .navigation.open {
+    right: 0;
+    opacity: 1;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .content-footer {
+    margin-left: 0;
+  }
+
+  body.right-navigation .navigation {
+    left: auto;
+    right: 0;
+    -webkit-box-orient: horizontal;
+    -webkit-box-direction: reverse;
+            flex-direction: row-reverse;
+  }
+
+  body.right-navigation .navigation .navigation-menu-tab {
+    border-right: none;
+    border-left: 1px solid #e6e6e6;
+  }
+
+  body.right-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+    padding-right: 350px;
+  }
+
+  body.right-navigation .content-footer {
+    margin-left: 0;
+    margin-right: 320px;
+  }
+
+  body.right-navigation.small-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px !important;
+    padding-right: 110px;
+  }
+
+  body.right-navigation.small-navigation .content-footer {
+    margin-left: 0 !important;
+    margin-right: 80px;
+  }
+
+  body.right-navigation.hidden-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px !important;
+    padding-right: 30px;
+  }
+
+  body.horizontal-navigation .header {
+    box-shadow: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation {
+    border-top: 1px solid #e6e6e6;
+    box-shadow: 0px 5px 10px -10px rgba(0, 0, 0, 0.4);
+    position: fixed;
+    top: 75px;
+    background-color: white;
+    height: 55px;
+    right: 0;
+    left: 0;
+    padding: 0 30px;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    z-index: 997;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul {
+    height: 100%;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li {
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    margin-right: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn {
+    border-radius: 100px;
+    text-transform: uppercase;
+    letter-spacing: 1px;
+    font-size: 12px;
+    padding: 10px 15px !important;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a .sub-menu-arrow,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn .sub-menu-arrow {
+    display: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a .badge,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn .badge,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn .badge {
+    margin-left: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a + ul,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn + ul {
+    border-top: 1px solid #e6e6e6;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li:hover > a,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li:hover > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li:hover > button.btn {
+    color: #0081ff !important;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li {
+    position: relative;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn {
+    padding: 10px 25px;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-pack: justify;
+            justify-content: space-between;
+    -webkit-box-align: center;
+            align-items: center;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .nav-icon,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .nav-icon,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .nav-icon {
+    margin-right: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li.open > a,
+  body.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li:hover > ul {
+    display: block;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul {
+    display: none;
+    position: absolute;
+    top: 54px;
+    width: 220px;
+    background-color: white;
+    padding: 10px 0;
+    border-bottom-left-radius: 0.25rem;
+    border-bottom-right-radius: 0.25rem;
+    box-shadow: 0px 5px 9px -5px rgba(0, 0, 0, 0.3);
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li {
+    position: relative;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li:hover > a,
+  body.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li:hover > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li:hover > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    color: black;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li a.active,
+  body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.active.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li.open > a,
+  body.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li.open > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul {
+    left: 220px;
+    top: -12px;
+    border-left: 1px solid #f2f2f2;
+    box-shadow: 3px 0px 10px -5px rgba(0, 0, 0, 0.3);
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul:before {
+    display: none;
+  }
+
+  body.horizontal-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+    padding-top: 160px;
+  }
+
+  body.horizontal-navigation .content-footer {
+    margin-left: 0;
+  }
+
+  body.sticky-header .header {
+    position: -webkit-sticky !important;
+    position: sticky !important;
+    top: 0;
+  }
+}
+
+@media (max-width: 1200px) {
+  body.horizontal-navigation .horizontal-navigation {
+    position: fixed;
+    left: 0;
+    top: 0;
+    bottom: 0;
+    height: auto;
+    width: 320px;
+    background-color: white;
+    z-index: 1000;
+    overflow: auto;
+    padding: 15px 0;
+    display: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn {
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    padding: 15px 30px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .nav-icon,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .nav-icon,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .nav-icon {
+    margin-right: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a.active,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.active.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .badge,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .badge,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .badge,
+  body.horizontal-navigation .horizontal-navigation ul li a .sub-menu-arrow,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .sub-menu-arrow {
+    margin-left: auto;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .sub-menu-arrow,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .sub-menu-arrow {
+    -webkit-transform: rotate(90deg);
+            transform: rotate(90deg);
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul {
+    display: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    padding-left: 60px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li ul li button.btn {
+    padding-left: 80px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li button.btn {
+    padding-left: 100px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li.open > a,
+  body.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li.open > ul {
+    display: block !important;
+  }
+
+  body.horizontal-navigation .horizontal-navigation.open {
+    display: block;
+  }
+}
+
+body.semi-dark:not(.dark) .nicescroll-cursors {
+  background-color: rgba(255, 255, 255, 0.3) !important;
+}
+
+body.semi-dark:not(.dark) .navigation {
+  background-color: #313852;
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a:not(.active):hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):hover,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn:not(.active):hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a:not(.active):focus,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):focus,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn:not(.active):focus {
+  color: #0081ff;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body .avatar {
+  border-color: #313852;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body .list-group-item {
+  background: none;
+  border-color: #454c66;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo {
+  border-color: #454c66;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo img {
+  display: block;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo img:not(.logo-light) {
+  display: none;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.navigation-divider {
+  color: #dbdbdb;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a .nav-link-icon,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+  stroke: rgba(199, 199, 199, 0.5);
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.active.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a.active:after,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn:after,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.active.btn:after {
+  background-color: #0081ff;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a:hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn:hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a:focus,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn:focus {
+  background: none;
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li a.active,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn + ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li button.active.btn,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn + ul li button.active.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.open > a,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.open > button.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .dropdown-divider {
+  color: #0081ff;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li ul {
+  background-color: #313852 !important;
+  border-left-color: #454c66 !important;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li ul ul {
+  border-left-color: #454c66 !important;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.navigation-divider:after {
+  background-color: #454c66 !important;
+}
+
+body.semi-dark:not(.dark) .navigation .avatar:before {
+  border-color: #2c2f42;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation {
+  background-color: #313852;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li > a + ul,
+body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li > button.btn + ul {
+  border-top: 1px solid #444e72;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li > a + ul ul,
+body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul ul,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li > button.btn + ul ul {
+  border-left: 1px solid #444e72;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li.open > a,
+body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li.open > button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li.open > button.btn {
+  color: #1a8eff;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li a,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li a.active,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.active.btn {
+  color: #1a8eff;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li a:not(.active):hover,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:not(.active):hover,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn:not(.active):hover,
+body.semi-dark:not(.dark) .horizontal-navigation ul li a:not(.active):focus,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:not(.active):focus,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn:not(.active):focus {
+  color: #1a8eff;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li ul {
+  background-color: #313852;
+}
+
+body.semi-dark:not(.dark).right-navigation .navigation .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+
+body.semi-dark:not(.dark).small-navigation .navigation:hover .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+
+body.semi-dark:not(.dark).small-navigation.right-navigation .navigation:hover .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+
+body.header-dark:not(.dark) .header {
+  background-color: #313852;
+  color: #c7c7c7;
+  border-bottom-color: #444e72;
+}
+
+body.header-dark:not(.dark) .header .header-logo a img,
+body.header-dark:not(.dark) .header .header-logo form .input-group .input-group-append button.btn img,
+body.header-dark:not(.dark) .header form .input-group .input-group-append .header-logo button.btn img {
+  display: block;
+}
+
+body.header-dark:not(.dark) .header .header-logo a img:not(.logo-light),
+body.header-dark:not(.dark) .header .header-logo form .input-group .input-group-append button.btn img:not(.logo-light),
+body.header-dark:not(.dark) .header form .input-group .input-group-append .header-logo button.btn img:not(.logo-light) {
+  display: none;
+}
+
+body.header-dark:not(.dark) .header .navigation-toggler a,
+body.header-dark:not(.dark) .header .navigation-toggler form .input-group .input-group-append button.btn,
+body.header-dark:not(.dark) .header form .input-group .input-group-append .navigation-toggler button.btn {
+  color: #c7c7c7;
+}
+
+body.header-dark:not(.dark) .header .navigation-toggler a:hover,
+body.header-dark:not(.dark) .header .navigation-toggler form .input-group .input-group-append button.btn:hover,
+body.header-dark:not(.dark) .header form .input-group .input-group-append .navigation-toggler button.btn:hover {
+  color: white;
+}
+
+body.header-dark:not(.dark) .header a.nav-link,
+body.header-dark:not(.dark) .header form .input-group .input-group-append button.nav-link.btn {
+  color: #c7c7c7;
+}
+
+body.header-dark:not(.dark) .header a.nav-link:hover,
+body.header-dark:not(.dark) .header form .input-group .input-group-append button.nav-link.btn:hover {
+  color: white;
+}
+
+body.header-dark:not(.dark) .header .dropdown-menu {
+  border-top: none !important;
+}
+
+*:focus {
+  outline: none;
+}
+
+.sticky {
+  position: -webkit-sticky !important;
+  position: sticky !important;
+  top: 0;
+}
+
+.lead {
+  line-height: 2.2rem;
+}
+
+.layout-wrapper {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  min-height: 100vh;
+}
+
+.layout-wrapper .content-wrapper {
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+}
+
+.layout-wrapper .content-wrapper .content-body {
+  width: 0;
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+}
+
+.layout-wrapper .content-wrapper .content-body .content {
+  -webkit-box-flex: 1;
+          flex: 1;
+  padding: 30px;
+  padding-top: 105px;
+  padding-left: 350px;
+  padding-bottom: 0;
+}
+
+svg.feather {
+  width: 20px;
+  height: 20px;
+}
+
+.demo-code-preview {
+  border: 1px solid #ebebeb;
+  padding: 20px 10px;
+  margin-top: 2rem;
+  position: relative;
+  background-color: white;
+  border-radius: 8px;
+}
+
+.demo-code-preview + * {
+  margin-top: 1.5rem;
+}
+
+.demo-code-preview:before {
+  content: attr(data-label);
+  display: block;
+  position: absolute;
+  top: -9px;
+  left: 20px;
+  letter-spacing: 1px;
+  background-color: inherit;
+  font-size: 11px;
+  padding: 0 5px;
+}
+
+.demo-code-preview pre {
+  overflow-x: hidden;
+  background: none;
+  padding-top: 0;
+  padding-bottom: 0;
+  max-height: 300px;
+}
+
+.demo-code-preview:hover pre {
+  overflow-x: auto;
+}
+
+code[class*=language-],
+pre[class*=language-] {
+  font-size: 0.93em;
+  margin: 0;
+}
+
+.text-divider {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.text-divider:after {
+  content: "";
+  display: block;
+  height: 1px;
+  background-color: #f0f0f0;
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.text-divider span {
+  margin-right: 1rem;
+}
+
+.row-xs {
+  margin-left: -0.5rem;
+  margin-right: -0.5rem;
+}
+
+.row-xs > div {
+  padding-left: 0.5rem;
+  padding-right: 0.5rem;
+}
+
+.overlay {
+  position: fixed;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: 999;
+  opacity: 0;
+  background: rgba(0, 0, 0, 0.3);
+  -webkit-transition: opacity 0.5s;
+  transition: opacity 0.5s;
+}
+
+.overlay.show {
+  opacity: 1;
+}
+
+.tooltip {
+  pointer-events: none;
+  font-family: inherit;
+  font-size: 0.835rem !important;
+}
+
+.tooltip .arrow {
+  display: none;
+}
+
+.tooltip .tooltip-inner {
+  background: rgba(0, 0, 0, 0.7);
+}
+
+.file-manager-items {
+  display: -webkit-box;
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.file-manager-items .file-manager-item {
+  margin-right: 20px;
+  margin-bottom: 20px;
+}
+
+.file-manager-items .file-manager-item span {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  width: 135px;
+  height: 115px;
+  font-size: 8.5em;
+  border: 1px solid #e1e1e1;
+  border-radius: 5px;
+  background-size: cover !important;
+  background-position: center !important;
+}
+
+.file-manager-items .file-manager-item.folder span {
+  color: #cea65b;
+}
+
+.file-manager-items .file-manager-item.image span:before {
+  display: none;
+}
+
+.small,
+.page-header .breadcrumb li.breadcrumb-item,
+.chat-block .chat-content .messages .message-item.message-item-divider span,
+small {
+  font-size: 12px;
+}
+
+.list-group .list-group-item {
+  padding: 0.75rem 1.5rem;
+}
+
+.list-group .list-group-item.active {
+  z-index: auto;
+  background: #0081ff;
+}
+
+.bring-forward {
+  position: relative;
+  z-index: 1;
+}
+
+.table-email-list table.table .dropdown [data-toggle=dropdown]:after {
+  display: none;
+}
+
+.table-email-list table.table .email-subject {
+  max-width: 80%;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.table-email-list table.table .email-subject a,
+.table-email-list table.table .email-subject .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .table-email-list table.table .email-subject button.btn {
+  display: inline-block;
+}
+
+.table-email-list table.table td,
+.table-email-list table.table .table th {
+  padding: 0.8rem;
+}
+
+.table-email-list a,
+.table-email-list .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .table-email-list button.btn {
+  color: #646464;
+}
+
+.table-email-list a:hover,
+.table-email-list .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .table-email-list button.btn:hover,
+.table-email-list a:focus,
+.table-email-list .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append .table-email-list button.btn:focus {
+  color: #0081ff;
+}
+
+.read-mail-body img {
+  max-width: 50%;
+}
+
+.bootstrap-tagsinput {
+  box-shadow: none;
+  width: 100%;
+  border: 1px solid #ced4da;
+  min-height: calc(2.25rem + 2px);
+}
+
+.bootstrap-tagsinput.focus {
+  border-color: #3383de;
+}
+
+.bootstrap-tagsinput .tag {
+  display: -webkit-inline-box;
+  display: inline-flex;
+  color: black;
+  border-radius: 3px;
+  font-size: 13px;
+  padding: 0 8px;
+  margin: 2px 1px;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  -webkit-box-align: center;
+          align-items: center;
+  background: #e1e1e1;
+}
+
+.list-group .list-group-item.active {
+  background: #0081ff;
+  border-color: transparent;
+}
+
+.list-group-flush .list-group-item:first-child {
+  border-top: 0;
+}
+
+.badge {
+  font-weight: 500;
+}
+
+.nav-pills .nav-link.active {
+  background: #0081ff;
+}
+
+.nav-tabs .nav-link.active {
+  color: #0081ff;
+}
+
+.text-muted,
+.chat-block .chat-content .messages .message-item.message-item-divider span,
+.demo-code-preview:before {
+  color: #a7abc3 !important;
+}
+
+.min-width-0 {
+  min-width: 0;
+}
+
+.list-group-item {
+  border-color: #e6e6e6;
+}
+
+.jqstooltip {
+  box-sizing: content-box;
+}
+
+.hide-show-toggler .hide-show-toggler-item {
+  display: none;
+}
+
+.hide-show-toggler:hover .hide-show-toggler-item,
+.hide-show-toggler:focus .hide-show-toggler-item {
+  display: block;
+}
+
+.tooltip {
+  font-size: 14px;
+}
+
+.jqvmap-zoomin,
+.jqvmap-zoomout {
+  box-sizing: initial;
+}
+
+.apexcharts-canvas {
+  margin: auto;
+}
+
+[data-backround-image] {
+  position: relative;
+  background-size: cover !important;
+  background-position: center !important;
+}
+
+[data-backround-image]:after {
+  content: "";
+  display: block;
+  background: rgba(255, 255, 255, 0.6);
+  position: absolute;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+}
+
+[data-backround-image] > * {
+  position: relative;
+  z-index: 1;
+}
+
+.dropdown-menu [data-backround-image]:after {
+  border-radius: 0;
+}
+
+.jqvmap-region {
+  fill: rgba(170, 102, 204, 0.3);
+}
+
+.jqvmap-region:hover {
+  fill: #aa66cc;
+}
+
+.a-0 {
+  top: 0px;
+  right: 0px;
+  bottom: 0px;
+  left: 0px;
+}
+
+.font-weight-800 {
+  font-weight: 800;
+}
+
+.circle canvas {
+  vertical-align: top;
+}
+
+.todo-item {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  margin-bottom: 10px;
+}
+
+.todo-item input[type=checkbox]:checked + label {
+  text-decoration: line-through;
+  color: #00961f;
+}
+
+.border-radius-1 {
+  border-radius: 5px;
+}
+
+.rounded {
+  border-radius: 0.5rem !important;
+}
+
+.nav-tabs .nav-link {
+  border-top-left-radius: 0.5rem;
+  border-top-right-radius: 0.5rem;
+}
+
+.nav-pills .nav-link {
+  border-radius: 0.5rem;
+}
+
+.apexcharts-legend.position-top.center {
+  -webkit-box-pack: end !important;
+          justify-content: flex-end !important;
+}
+
+.image-hover {
+  position: relative;
+}
+
+.image-hover .image-hover-body {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: end;
+          align-items: flex-end;
+  opacity: 0;
+  visibility: hidden;
+  position: absolute;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, 0.5);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  color: white;
+  padding: 20px 30px;
+}
+
+.image-hover:hover .image-hover-body {
+  opacity: 1;
+  visibility: visible;
+}
+
+.nav-analiytics-style .nav-link {
+  padding: 0.5rem 1.5rem;
+}
+
+.daterangepicker {
+  font-family: "Inter";
+}
+
+.header {
+  background-color: white;
+  z-index: 999;
+  display: -webkit-box;
+  display: flex;
+  height: 75px;
+  box-shadow: 0px 5px 10px -10px rgba(0, 0, 0, 0.4);
+  position: fixed;
+  right: 0;
+  left: 0;
+  top: 0;
+}
+
+.header .avatar {
+  border-color: transparent;
+}
+
+.header .avatar.avatar-state-success:before {
+  border-color: #0081ff;
+}
+
+.header .header-left {
+  width: 320px;
+  padding-left: 30px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.header .header-left .navigation-toggler {
+  display: none;
+  margin-right: 15px;
+}
+
+.header .header-left .navigation-toggler a,
+.header .header-left .navigation-toggler form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .header-left .navigation-toggler button.btn {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.header .header-left .navigation-toggler a svg,
+.header .header-left .navigation-toggler form .input-group .input-group-append button.btn svg,
+.header form .input-group .input-group-append .header-left .navigation-toggler button.btn svg {
+  height: 30px;
+  width: 30px;
+}
+
+.header .header-logo a,
+.header .header-logo form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .header-logo button.btn {
+  height: 75px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.header .header-logo a img:not(.logo),
+.header .header-logo form .input-group .input-group-append button.btn img:not(.logo),
+.header form .input-group .input-group-append .header-logo button.btn img:not(.logo) {
+  display: none;
+}
+
+.header .header-body {
+  padding: 0 30px;
+  position: relative;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-flex: 1;
+          flex: auto;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+}
+
+.header .header-body .page-title h1,
+.header .header-body .page-title h2,
+.header .header-body .page-title h3,
+.header .header-body .page-title h4,
+.header .header-body .page-title h5,
+.header .header-body .page-title h6 {
+  margin-bottom: 0;
+  line-height: inherit;
+}
+
+.header form .input-group {
+  position: relative;
+}
+
+.header form .input-group .form-control,
+.header form .input-group .swal-modal input.swal-content__input,
+.swal-modal .header form .input-group input.swal-content__input {
+  border: none;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+
+.header form .input-group .form-control:focus,
+.header form .input-group .swal-modal input.swal-content__input:focus,
+.swal-modal .header form .input-group input.swal-content__input:focus {
+  background-color: rgba(255, 255, 255, 0.2);
+}
+
+.header form .input-group .input-group-append {
+  position: absolute;
+  right: 0;
+}
+
+.header form .input-group .input-group-append button.btn {
+  position: relative;
+  z-index: 9;
+  border-top-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  background-color: inherit;
+  border: none;
+}
+
+.header form .input-group .input-group-append button.btn:hover {
+  opacity: 0.7;
+}
+
+.header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append button.btn:active,
+.header form .input-group .input-group-append button.btn:hover {
+  background-color: inherit;
+  box-shadow: none !important;
+}
+
+.header .header-toggler {
+  display: none;
+}
+
+.header [data-toggle=fullscreen] .minimize {
+  display: none;
+}
+
+.header .active-fullscreen .minimize {
+  display: block;
+}
+
+.header .active-fullscreen .maximize {
+  display: none;
+}
+
+.header ul.navbar-nav {
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+          flex-direction: row;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn {
+  line-height: 100%;
+  padding: 10px 15px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link.nav-link-notify,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.nav-link-notify.btn,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.nav-link-notify.btn {
+  position: relative;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link.nav-link-notify:before,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.nav-link-notify.btn:before,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.nav-link-notify.btn:before {
+  content: "";
+  position: absolute;
+  width: 6px;
+  height: 6px;
+  right: 0;
+  border-radius: 50%;
+  top: 3px;
+  background: #ea5455;
+  -webkit-animation: notify-pulse 1s infinite;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link:hover,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn:hover,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn:hover,
+.header ul.navbar-nav li.nav-item a.nav-link:focus,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn:focus,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn:focus {
+  outline: none;
+}
+
+.header ul.navbar-nav + form.search {
+  margin-left: 1.5rem;
+}
+
+.header .dropdown-menu {
+  position: absolute;
+}
+
+@-webkit-keyframes notify-pulse {
+  0% {
+    box-shadow: 0 0 0 0px rgba(234, 84, 85, 0.7);
+  }
+
+  100% {
+    box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
+  }
+}
+
+@keyframes notify-pulse {
+  0% {
+    box-shadow: 0 0 0 0px rgba(234, 84, 85, 0.7);
+  }
+
+  100% {
+    box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
+  }
+}
+
+.navigation {
+  background-color: white;
+  z-index: 998;
+  width: 320px;
+  box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+  position: fixed;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+          flex-direction: row;
+  left: 0;
+  bottom: 0;
+  top: 75px;
+}
+
+.navigation .navigation-menu-tab {
+  border-right: 1px solid #e6e6e6;
+  width: 80px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  margin-right: 0;
+  padding: 10px;
+}
+
+.navigation .navigation-menu-tab .avatar {
+  border: none;
+}
+
+.navigation .navigation-menu-tab ul li {
+  margin-bottom: 5px;
+}
+
+.navigation .navigation-menu-tab ul li a,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn {
+  display: -webkit-box;
+  display: flex;
+  height: 50px;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  border-radius: 0.5rem;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+
+.navigation .navigation-menu-tab ul li a:hover,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn:hover {
+  color: #0081ff;
+}
+
+.navigation .navigation-menu-tab ul li a.active,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+  background-color: #0081ff;
+  box-shadow: 0px 5px 20px -14px #0081ff;
+}
+
+.navigation .navigation-menu-tab ul li a svg,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn svg,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn svg {
+  width: 23px;
+  height: 23px;
+}
+
+.navigation .navigation-menu-body {
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  overflow: auto;
+}
+
+.navigation .navigation-menu-body .navigation-menu-group > div {
+  display: none;
+}
+
+.navigation .navigation-menu-body .navigation-menu-group > div.open {
+  display: block;
+}
+
+.navigation .navigation-menu-body ul li.navigation-divider {
+  padding: 10px 30px;
+  text-transform: uppercase;
+  font-size: 12px;
+  letter-spacing: 0.5px;
+  margin-top: 10px;
+  margin-bottom: 10px;
+  color: #a7abc3;
+}
+
+.navigation .navigation-menu-body ul li > a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 10px 30px;
+  color: #505050;
+  font-size: 14px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+
+.navigation .navigation-menu-body ul li > a .nav-link-icon,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .nav-link-icon,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .nav-link-icon {
+  margin-right: 0.8rem;
+  stroke: rgba(0, 0, 0, 0.3);
+  -webkit-transition: stroke 0.3s;
+  transition: stroke 0.3s;
+  width: 20px;
+  height: 20px;
+}
+
+.navigation .navigation-menu-body ul li > a:hover,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn:hover,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn:hover {
+  color: #0081ff;
+}
+
+.navigation .navigation-menu-body ul li > a:hover .nav-link-icon,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn:hover .nav-link-icon,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn:hover .nav-link-icon {
+  stroke: #0081ff;
+}
+
+.navigation .navigation-menu-body ul li > a.active,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.active.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.active.btn {
+  position: relative;
+  color: #0081ff;
+  font-weight: 600;
+  background: rgba(0, 129, 255, 0.15);
+  border-radius: 0.5rem;
+  margin: 0 1rem;
+}
+
+.navigation .navigation-menu-body ul li > a.active:before,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.active.btn:before,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.active.btn:before {
+  content: "";
+  display: block;
+  border: 6px solid transparent;
+  border-left-color: #0081ff;
+  margin-left: -12px;
+  margin-right: 5px;
+}
+
+.navigation .navigation-menu-body ul li > a .sub-menu-arrow,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .sub-menu-arrow,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .sub-menu-arrow {
+  margin-left: auto;
+  font-size: 14px;
+  -webkit-transition: -webkit-transform 0.3s;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+}
+
+.navigation .navigation-menu-body ul li > a .sub-menu-arrow.rotate-in,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .sub-menu-arrow.rotate-in,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .sub-menu-arrow.rotate-in {
+  -webkit-transform: rotate(540deg);
+          transform: rotate(540deg);
+}
+
+.navigation .navigation-menu-body ul li > a .badge,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .badge,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .badge {
+  margin-left: auto;
+  padding: 3px 7px;
+}
+
+.navigation .navigation-menu-body ul li > a + ul,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul {
+  display: none;
+}
+
+.navigation .navigation-menu-body ul li > a + ul li,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li {
+  margin: 0;
+}
+
+.navigation .navigation-menu-body ul li > a + ul li a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li a,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li a,
+.navigation .navigation-menu-body ul li > a + ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > a + ul li button.btn,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li button.btn {
+  padding-left: 50px;
+}
+
+.navigation .navigation-menu-body ul li > a + ul ul,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul {
+  border-left: none;
+}
+
+.navigation .navigation-menu-body ul li > a + ul ul li a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul li a,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul li a,
+.navigation .navigation-menu-body ul li > a + ul ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > a + ul ul li button.btn,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul li button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul li button.btn {
+  padding-left: 70px;
+}
+
+.navigation .navigation-menu-body ul li.open > a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > button.btn {
+  color: #0081ff;
+  font-weight: 600;
+}
+
+.navigation .navigation-menu-body ul li.open > a .nav-link-icon,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn .nav-link-icon,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > button.btn .nav-link-icon {
+  stroke: #0081ff;
+}
+
+.navigation .navigation-menu-body ul li.open > ul {
+  display: block;
+}
+
+.navigation .navigation-menu-body ul li.open > ul a.active,
+.navigation .navigation-menu-body ul li.open > ul .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > ul button.active.btn {
+  background-color: inherit;
+}
+
+footer.content-footer {
+  padding: 15px 30px;
+  background-color: white;
+  box-shadow: 0 0 10px -8px black;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  margin-left: 320px;
+}
+
+footer.content-footer * {
+  text-transform: uppercase;
+  letter-spacing: 0.5px;
+  font-size: 12px;
+}
+
+footer.content-footer .nav a,
+footer.content-footer .nav .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append footer.content-footer .nav button.btn {
+  padding: 5px 0;
+  margin-left: 15px;
+}
+
+footer.content-footer .nav a:hover,
+footer.content-footer .nav .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append footer.content-footer .nav button.btn:hover {
+  background: none !important;
+}
+
+.sidebar-group {
+  background-color: rgba(0, 0, 0, 0.35);
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  top: 0;
+  left: 0;
+  opacity: 0;
+  z-index: 1000;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  visibility: hidden;
+}
+
+.sidebar-group.show {
+  opacity: 1;
+  visibility: visible;
+}
+
+.sidebar-group .card,
+.sidebar-group .chat-block,
+.sidebar-group .app-block .app-content .app-action,
+.app-block .app-content .sidebar-group .app-action {
+  box-shadow: none;
+}
+
+.sidebar-group .sidebar {
+  width: 330px;
+  box-shadow: 0 0 25px rgba(0, 0, 0, 0.25);
+  background-color: white;
+  z-index: 1000;
+  -webkit-transition: all 0.2s;
+  transition: all 0.2s;
+  visibility: hidden;
+  opacity: 0;
+  margin-right: -100px;
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  top: 0;
+}
+
+.sidebar-group .sidebar.show {
+  visibility: visible;
+  opacity: 1;
+  margin-right: 0px;
+}
+
+.sidebar-group .sidebar > header {
+  background-color: #ebebeb;
+  padding: 1.5rem;
+  font-size: 16px;
+  line-height: 0;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.sidebar-group .sidebar > header i {
+  margin-right: 10px;
+}
+
+.sidebar-group .sidebar .tab-content {
+  height: calc(100% - 50px);
+}
+
+.sidebar-group .sidebar .tab-content .tab-pane.active {
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+}
+
+.sidebar-group .sidebar .tab-content .tab-pane.active .tab-pane-body {
+  -webkit-box-flex: 1;
+          flex: 1;
+  overflow: auto;
+}
+
+.sidebar-group .sidebar .tab-content .tab-pane.active .tab-pane-footer {
+  padding: 20px 0;
+}
+
+body.dark {
+  background-color: #182139;
+  color: #c7c7c7;
+}
+
+body.dark a:not(.btn):not(.link-1),
+body.dark .header form .input-group .input-group-append button.btn:not(.btn):not(.link-1),
+.header form .input-group .input-group-append body.dark button.btn:not(.btn):not(.link-1) {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark a:not(.btn):not(.link-1):hover,
+body.dark .header form .input-group .input-group-append button.btn:not(.btn):not(.link-1):hover,
+.header form .input-group .input-group-append body.dark button.btn:not(.btn):not(.link-1):hover {
+  color: rgba(255, 255, 255, 0.8);
+}
+
+body.dark .header {
+  background-color: #313852;
+  border-bottom-color: #454c66;
+}
+
+body.dark .header .header-logo {
+  border-bottom-color: #454c66;
+}
+
+body.dark .header .header-logo img {
+  display: block;
+}
+
+body.dark .header .header-logo img:not(.logo-light) {
+  display: none;
+}
+
+body.dark .header ul li a,
+body.dark .header ul li form .input-group .input-group-append button.btn,
+body.dark .header form .input-group .input-group-append ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.dark .header ul li a:hover,
+body.dark .header ul li form .input-group .input-group-append button.btn:hover,
+body.dark .header form .input-group .input-group-append ul li button.btn:hover,
+body.dark .header ul li a:focus,
+body.dark .header ul li form .input-group .input-group-append button.btn:focus,
+body.dark .header form .input-group .input-group-append ul li button.btn:focus {
+  color: white;
+}
+
+body.dark .header .avatar {
+  border-color: transparent;
+}
+
+body.dark .text-divider:after {
+  background-color: #454c66;
+}
+
+body.dark input::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input::-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input::placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark .border {
+  border-color: #454c66 !important;
+}
+
+body.dark .border-right {
+  border-left-color: #454c66 !important;
+  border-right-color: #454c66 !important;
+}
+
+body.dark .border-left {
+  border-left-color: #454c66 !important;
+  border-right-color: #454c66 !important;
+}
+
+body.dark .border-bottom {
+  border-bottom-color: #454c66 !important;
+}
+
+body.dark .border-top {
+  border-top-color: #454c66 !important;
+}
+
+body.dark .preloader {
+  background: #04071a;
+}
+
+body.dark .preloader .preloader-icon {
+  border-color: #313852;
+}
+
+body.dark .nav-tabs .nav-link:hover,
+body.dark .nav-tabs .nav-link:focus {
+  background-color: #313852 !important;
+  border-bottom-color: #313852 !important;
+}
+
+body.dark .nav-tabs .nav-link.active {
+  background: #313852 !important;
+  border-bottom-color: #313852 !important;
+}
+
+body.dark .sidebar header {
+  background-color: #2c2f42;
+}
+
+body.dark .navigation {
+  background-color: #313852;
+}
+
+body.dark .navigation .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+
+body.dark .navigation .navigation-menu-tab ul li a,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.dark .navigation .navigation-menu-tab ul li a.active,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-tab ul li a:not(.active):hover,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):hover,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn:not(.active):hover,
+body.dark .navigation .navigation-menu-tab ul li a:not(.active):focus,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):focus,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn:not(.active):focus {
+  color: #0081ff;
+}
+
+body.dark .navigation .navigation-menu-body ul li.navigation-divider {
+  color: #dbdbdb;
+}
+
+body.dark .navigation .navigation-menu-body ul li a,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.dark .navigation .navigation-menu-body ul li a .nav-link-icon,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+  stroke: rgba(199, 199, 199, 0.5);
+}
+
+body.dark .navigation .navigation-menu-body ul li a:hover,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn:hover,
+body.dark .navigation .navigation-menu-body ul li a:focus,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn:focus {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-body ul li a.active,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.active.btn {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-body ul li a + ul li a.active,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li a.active,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn + ul li a.active,
+body.dark .navigation .navigation-menu-body ul li a + ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li a + ul li button.active.btn,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn + ul li button.active.btn {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-body ul li.open > a,
+body.dark .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li.open > button.btn {
+  color: white;
+  background-color: #454c66;
+}
+
+body.dark .navigation .navigation-menu-body ul li .dropdown-divider {
+  color: #0081ff;
+}
+
+body.dark.boxed-layout {
+  background-color: #04071a;
+}
+
+body.dark.boxed-layout .layout-wrapper .content-wrapper .content-body .content {
+  background-color: #182139;
+}
+
+body.dark.right-navigation .navigation .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+
+body.dark.right-navigation.small-navigation .navigation .navigation-menu-tab {
+  border-left-color: transparent;
+}
+
+body.dark.right-navigation.small-navigation .navigation:hover .navigation-menu-tab {
+  border-left-color: #444e72 !important;
+}
+
+body.dark.small-navigation .navigation:hover .navigation-menu-tab {
+  border-right-color: #444e72 !important;
+}
+
+body.dark .custom-accordion .accordion-row .accordion-header .close {
+  text-shadow: none;
+  color: inherit;
+}
+
+body.dark #vmap_usa_en,
+body.dark #vmap_canada_en,
+body.dark #vmap_world_en {
+  background-color: inherit !important;
+}
+
+body.dark .table {
+  color: #c7c7c7;
+}
+
+body.dark .table .thead-light th {
+  background-color: #59607a;
+  color: inherit;
+}
+
+body.dark .table .thead-dark th,
+body.dark .table-dark,
+body.dark .table-dark th,
+body.dark .table-dark td {
+  background-color: #04071a;
+}
+
+body.dark .mark,
+body.dark mark {
+  background-color: #59607a;
+  color: inherit;
+}
+
+body.dark .page-header {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+body.dark .page-header .breadcrumb li a,
+body.dark .page-header .breadcrumb li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .page-header .breadcrumb li button.btn {
+  color: #b3b3b3;
+}
+
+body.dark .page-header .breadcrumb li a:hover,
+body.dark .page-header .breadcrumb li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append body.dark .page-header .breadcrumb li button.btn:hover {
+  color: #c7c7c7;
+}
+
+body.dark .breadcrumb li.breadcrumb-item.active {
+  color: #339aff;
+}
+
+body.dark [data-backround-image]:after {
+  background-color: rgba(0, 0, 0, 0.6);
+}
+
+body.dark .layout-alert {
+  border-color: #59607a;
+}
+
+body.dark .alert {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+body.dark .alert hr {
+  border-color: rgba(255, 255, 255, 0.1);
+}
+
+body.dark .alert .close:hover,
+body.dark .alert .close:focus {
+  opacity: 0.2;
+  color: inherit;
+}
+
+body.dark .form-control,
+body.dark .swal-modal input.swal-content__input,
+.swal-modal body.dark input.swal-content__input {
+  background: #313852;
+  border-color: #454c66 !important;
+  color: #c3c3c3;
+}
+
+body.dark .form-control:focus,
+body.dark .swal-modal input.swal-content__input:focus,
+.swal-modal body.dark input.swal-content__input:focus {
+  border-color: #0081ff !important;
+}
+
+body.dark .timeline .timeline-item::before {
+  background: #59607a;
+}
+
+body.dark .dropdown-menu {
+  border-top: 1px solid #454c66 !important;
+  color: #c7c7c7;
+}
+
+body.dark .custom-select {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+  color: inherit;
+}
+
+body.dark .custom-file-label {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+  color: inherit;
+}
+
+body.dark .custom-file-label::after {
+  background-color: #454c66;
+  color: inherit;
+}
+
+body.dark .custom-range::-webkit-slider-runnable-track {
+  background-color: #454c66;
+}
+
+body.dark .custom-control-label::before {
+  background-color: inherit;
+  border-color: #59607a;
+}
+
+body.dark .custom-control-input:disabled ~ .custom-control-label::before {
+  background-color: #454c66;
+}
+
+body.dark .form-control-plaintext {
+  color: inherit;
+}
+
+body.dark .wizard > .content {
+  background-color: #454c66;
+}
+
+body.dark .wizard > .steps .disabled a,
+body.dark .wizard > .steps .disabled .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .wizard > .steps .disabled button.btn,
+body.dark .wizard > .steps .disabled a:hover,
+body.dark .wizard > .steps .disabled a:active {
+  background-color: #454c66;
+}
+
+body.dark .wizard > .actions .disabled a,
+body.dark .wizard > .actions .disabled .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .wizard > .actions .disabled button.btn,
+body.dark .wizard > .actions .disabled a:hover,
+body.dark .wizard > .actions .disabled a:active {
+  background: #4f5670 !important;
+  border-color: #4f5670 !important;
+}
+
+body.dark .wizard > .actions .disabled a:not(:disabled):not(.disabled):focus,
+body.dark .wizard > .actions .disabled .header form .input-group .input-group-append button.btn:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append body.dark .wizard > .actions .disabled button.btn:not(:disabled):not(.disabled):focus,
+body.dark .wizard > .actions .disabled a:hover:not(:disabled):not(.disabled):focus,
+body.dark .wizard > .actions .disabled a:active:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(4, 7, 26, 0.5);
+  outline: none;
+  color: inherit;
+}
+
+body.dark .pricing-table {
+  border-color: #59607a;
+}
+
+body.dark hr {
+  border-color: #454c66;
+}
+
+body.dark .dropdown-menu {
+  border: none;
+  background-color: #3b425c;
+}
+
+body.dark .dropdown-menu .dropdown-item {
+  color: #c3c3c3;
+}
+
+body.dark .dropdown-menu .dropdown-item:hover,
+body.dark .dropdown-menu .dropdown-item:focus {
+  background: #313852;
+}
+
+body.dark .bg-light {
+  background: #59607a !important;
+}
+
+body.dark .list-group-item {
+  background: none;
+  border-color: rgba(155, 155, 155, 0.1);
+}
+
+body.dark a.list-group-item,
+body.dark .header form .input-group .input-group-append button.list-group-item.btn,
+.header form .input-group .input-group-append body.dark button.list-group-item.btn {
+  color: #c7c7c7;
+}
+
+body.dark a.list-group-item:hover,
+body.dark .header form .input-group .input-group-append button.list-group-item.btn:hover,
+.header form .input-group .input-group-append body.dark button.list-group-item.btn:hover {
+  color: white;
+}
+
+body.dark .card,
+body.dark .chat-block,
+body.dark .app-block .app-content .app-action,
+.app-block .app-content body.dark .app-action {
+  background: #313852;
+  border-color: #444e72;
+}
+
+body.dark .card .card-header,
+body.dark .chat-block .card-header,
+body.dark .app-block .app-content .app-action .card-header,
+.app-block .app-content body.dark .app-action .card-header {
+  border-bottom-color: #2c2f42 !important;
+}
+
+body.dark .card .card-footer,
+body.dark .chat-block .card-footer,
+body.dark .app-block .app-content .app-action .card-footer,
+.app-block .app-content body.dark .app-action .card-footer {
+  border-top-color: #2c2f42;
+}
+
+body.dark .accordion .card,
+body.dark .accordion .chat-block,
+body.dark .accordion .app-block .app-content .app-action,
+.app-block .app-content body.dark .accordion .app-action,
+body.dark .accordion.custom-accordion {
+  border-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .accordion.custom-accordion .accordion-row a.accordion-header,
+body.dark .accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append body.dark .accordion.custom-accordion .accordion-row button.accordion-header.btn {
+  border-bottom-color: rgba(240, 240, 240, 0.12);
+  border-top-color: rgba(240, 240, 240, 0.12);
+  color: inherit;
+  background-color: #454c66;
+}
+
+body.dark .morris-hover.morris-default-style {
+  background-color: #454c66;
+  border-color: #59607a;
+}
+
+body.dark .apexcharts-yaxis .apexcharts-yaxis-texts-g text {
+  fill: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .apexcharts-grid .apexcharts-gridlines-horizontal line,
+body.dark .apexcharts-grid .apexcharts-gridlines-vertical line {
+  stroke: rgba(255, 255, 255, 0.1);
+}
+
+body.dark .apexcharts-toolbar > div > svg {
+  fill: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .apexcharts-menu {
+  border: none;
+  background-color: #454c66;
+}
+
+body.dark .apexcharts-menu .apexcharts-menu-item:hover {
+  background-color: #59607a;
+}
+
+body.dark .apexcharts-xaxis .apexcharts-xaxis-texts-g text {
+  fill: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .apexcharts-tooltip.light .apexcharts-tooltip-title {
+  background-color: #59607a !important;
+  border-color: #3b425c !important;
+}
+
+body.dark .apexcharts-xaxistooltip {
+  border-color: #3b425c !important;
+  background-color: #454c66 !important;
+  color: rgba(255, 255, 255, 0.4);
+}
+
+body.dark .apexcharts-xaxistooltip-bottom:after,
+body.dark apexcharts-xaxistooltip-bottom:before {
+  border-bottom-color: #454c66 !important;
+}
+
+body.dark .apexcharts-tooltip {
+  border-color: #3b425c !important;
+  background-color: #454c66 !important;
+}
+
+body.dark .apexcharts-title-text,
+body.dark .apexcharts-subtitle-text {
+  fill: rgba(255, 255, 255, 0.4);
+}
+
+body.dark .apexcharts-legend-text {
+  color: rgba(255, 255, 255, 0.4) !important;
+}
+
+body.dark .apexcharts-yaxis-title text,
+body.dark .apexcharts-xaxis-title text {
+  fill: rgba(255, 255, 255, 0.4);
+}
+
+body.dark .demo-code-preview {
+  background-color: #313852;
+  border-color: #4f5670 !important;
+}
+
+body.dark .demo-code-preview * {
+  text-shadow: none;
+}
+
+body.dark .demo-code-preview code[class*=language-],
+body.dark .demo-code-preview pre[class*=language-] {
+  color: white;
+}
+
+body.dark .demo-code-preview code[class*=language-] .token.operator,
+body.dark .demo-code-preview pre[class*=language-] .token.operator {
+  background: none;
+}
+
+body.dark .demo-code-preview .token.tag {
+  color: #e156a3;
+}
+
+body.dark .avatar {
+  border-color: #313852;
+}
+
+body.dark .avatar:before {
+  border-color: #313852;
+}
+
+body.dark .avatar .avatar-title {
+  background-color: #59607a;
+}
+
+body.dark .tourBg {
+  opacity: 0.7 !important;
+}
+
+body.dark .dd-handle,
+body.dark .dd3-content {
+  background-color: #454c66;
+  border-color: #313852;
+  color: inherit;
+}
+
+body.dark .dd3-handle:before {
+  color: inherit;
+}
+
+body.dark .dd-item button {
+  color: inherit;
+}
+
+body.dark .list-group-item-action {
+  color: inherit;
+}
+
+body.dark .list-group-item-action.active {
+  color: white;
+}
+
+body.dark .img-thumbnail {
+  border-color: #59607a;
+  background-color: #313852;
+}
+
+body.dark .progress {
+  background-color: #59607a;
+}
+
+body.dark .jstree-default .jstree-clicked {
+  color: #04071a;
+}
+
+body.dark .select2-container--default .select2-selection--single,
+body.dark .select2-container--default .select2-selection--multiple {
+  background-color: inherit;
+}
+
+body.dark .select2-container--default .select2-selection--multiple .select2-selection__choice {
+  background: #454c66;
+  color: #c3c3c3;
+}
+
+body.dark .select2.select2-container .select2-selection {
+  border-color: #59607a;
+}
+
+body.dark .select2-container--default .select2-selection--single .select2-selection__placeholder {
+  color: #646464;
+}
+
+body.dark .select2-container .select2-search--inline .select2-search__field {
+  color: inherit;
+}
+
+body.dark .select2-dropdown {
+  background-color: #313852;
+  border-color: #59607a;
+}
+
+body.dark .select2-container--default .select2-search--dropdown .select2-search__field {
+  background-color: #313852;
+  border-color: #59607a;
+  color: inherit;
+}
+
+body.dark .select2-container--default .select2-selection--single .select2-selection__rendered {
+  color: inherit;
+}
+
+body.dark .select2-container--default .select2-results__option[aria-selected=true] {
+  background-color: #04071a;
+  color: inherit;
+}
+
+body.dark .irs--round .irs-line {
+  background-color: #59607a;
+}
+
+body.dark .irs--round .irs-min,
+body.dark .irs--round .irs-max {
+  color: inherit;
+  background-color: #59607a;
+}
+
+body.dark .daterangepicker {
+  background-color: #3b425c;
+  border-color: #3b425c;
+}
+
+body.dark .daterangepicker select {
+  background-color: inherit;
+  color: inherit;
+  border-color: #59607a;
+}
+
+body.dark .daterangepicker:after,
+body.dark .daterangepicker:before {
+  border-bottom-color: #3b425c;
+}
+
+body.dark .daterangepicker .calendar-table {
+  background-color: #3b425c;
+  border-color: #3b425c;
+}
+
+body.dark .daterangepicker td.in-range {
+  background-color: #59607a;
+  color: inherit;
+}
+
+body.dark .daterangepicker td.end-date {
+  color: white;
+  background-color: #0081ff;
+}
+
+body.dark .daterangepicker .drp-buttons {
+  border-top-color: #3b425c;
+}
+
+body.dark .daterangepicker .drp-buttons .btn.btn-default {
+  color: inherit;
+}
+
+body.dark .daterangepicker td.off,
+body.dark .daterangepicker td.off.end-date,
+body.dark .daterangepicker td.off.start-date {
+  background-color: inherit;
+  color: #636a84;
+}
+
+body.dark .daterangepicker td.off.in-range {
+  background-color: #59607a;
+  color: #8b92ac;
+}
+
+body.dark .daterangepicker td.available:hover,
+body.dark .daterangepicker th.available:hover {
+  background-color: #0081ff;
+  color: white;
+}
+
+body.dark .daterangepicker td.available:hover span,
+body.dark .daterangepicker th.available:hover span {
+  border-color: white;
+}
+
+body.dark .daterangepicker .calendar-table .next span,
+body.dark .daterangepicker .calendar-table .prev span {
+  border-color: #6d748e;
+}
+
+body.dark .daterangepicker .ranges li:hover {
+  background-color: #454c66;
+}
+
+body.dark .popover.clockpicker-popover {
+  overflow: hidden;
+  border: 1px solid #59607a;
+}
+
+body.dark .popover.clockpicker-popover .popover-title {
+  background-color: #313852;
+  color: inherit;
+}
+
+body.dark .popover.clockpicker-popover .popover-content {
+  background-color: #313852;
+}
+
+body.dark .popover.clockpicker-popover .clockpicker-plate {
+  border-color: #59607a;
+  background-color: #313852;
+}
+
+body.dark .popover.clockpicker-popover .clockpicker-plate .clockpicker-tick {
+  color: inherit;
+}
+
+body.dark .popover.clockpicker-popover .clockpicker-plate .clockpicker-canvas-bg {
+  fill: #59607a;
+}
+
+body.dark .nav-tabs .nav-item.show .nav-link,
+body.dark .nav-tabs .nav-link.active {
+  background-color: #59607a;
+  color: inherit;
+  border-color: #59607a;
+}
+
+body.dark .nav-tabs .nav-link:focus,
+body.dark .nav-tabs .nav-link:hover {
+  border-color: #3b425c;
+  background-color: #3b425c;
+}
+
+body.dark .nav-tabs {
+  border-bottom-color: #59607a;
+}
+
+body.dark .figure-caption {
+  color: inherit;
+}
+
+body.dark .btn-link {
+  color: inherit;
+}
+
+body.dark .text-muted,
+body.dark .chat-block .chat-content .messages .message-item.message-item-divider span,
+.chat-block .chat-content .messages .message-item.message-item-divider body.dark span,
+body.dark .demo-code-preview:before {
+  color: #9f9f9f !important;
+}
+
+body.dark .table td,
+body.dark .table th {
+  border-color: rgba(155, 155, 155, 0.2);
+}
+
+body.dark .border-bottom {
+  border-bottom-color: rgba(155, 155, 155, 0.2) !important;
+}
+
+body.dark .sidebar {
+  background: #313852;
+}
+
+body.dark .nicescroll-cursors {
+  background-color: rgba(255, 255, 255, 0.15) !important;
+}
+
+body.dark .chat-block .chat-content .messages .message-item:not(.me):before {
+  border-right-color: #454c66;
+}
+
+body.dark .chat-block .chat-content .messages .message-item:not(.me) .message-item-content {
+  background-color: #454c66;
+}
+
+body.dark .chat-block .chat-content .messages .message-item.message-item-divider:before,
+body.dark .chat-block .chat-content .messages .message-item.message-item-divider:after {
+  background-color: #454c66;
+}
+
+body.dark .chat-block .chat-sidebar {
+  background-color: #3b4362;
+}
+
+body.dark .chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item {
+  background-color: #313852;
+}
+
+body.dark .chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item.active {
+  color: white;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li:hover {
+  background-color: #3b425c;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active {
+  background-color: #454c66;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .avatar {
+  border-color: #454c66;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .app-list-title {
+  color: #c7c7c7;
+}
+
+body.dark .app-block .app-content .app-content-body .app-detail .card-header {
+  border-bottom-color: #454c66 !important;
+}
+
+body.dark .app-file-list {
+  border-color: #454c66;
+}
+
+body.dark .app-file-list .app-file-icon {
+  background-color: #454c66;
+  border-bottom-color: #454c66;
+}
+
+body.dark .ql-container.ql-snow {
+  border-color: #454c66;
+}
+
+body.dark .ql-editor.ql-blank::before {
+  color: #c7c7c7;
+}
+
+body.dark .ql-snow .ql-stroke,
+body.dark .ql-fill {
+  stroke: #c7c7c7;
+}
+
+body.dark .text-black-50 {
+  color: rgba(247, 247, 247, 0.43) !important;
+}
+
+body.dark .table-email-list a,
+body.dark .table-email-list .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .table-email-list button.btn {
+  color: inherit;
+}
+
+body.dark .table-hover tbody tr:hover {
+  color: inherit;
+}
+
+body.dark .input-group-text {
+  background: #454c66;
+  color: inherit;
+}
+
+body.dark .dropdown-divider {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .btn.btn-light,
+.fc body.dark .btn.fc-state-default,
+body.dark .fc .fc-state-default {
+  background: #454c66;
+  border-color: transparent;
+  color: inherit;
+}
+
+body.dark .btn.btn-light:not(:disabled):not(.disabled):hover,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):hover,
+body.dark .btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):focus,
+body.dark .btn.btn-light:not(:disabled):not(.disabled):active,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):active,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):hover,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):focus,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):active {
+  background: #4f5670;
+  border-color: #4f5670;
+  color: inherit;
+}
+
+body.dark .btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):focus,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(4, 7, 26, 0.5);
+  outline: none;
+  color: inherit;
+}
+
+body.dark .btn.btn-outline-light {
+  border: 1px solid rgba(255, 255, 255, 0.1);
+  color: #c7c7c7;
+}
+
+body.dark .btn.btn-outline-light:hover {
+  background: none !important;
+  color: #d6d6d6 !important;
+  border: 1px solid rgba(255, 255, 255, 0.1) !important;
+}
+
+body.dark .fc-unthemed .fc-content,
+body.dark .fc-unthemed .fc-divider,
+body.dark .fc-unthemed .fc-list-heading td,
+body.dark .fc-unthemed .fc-list-view,
+body.dark .fc-unthemed .fc-popover,
+body.dark .fc-unthemed .fc-row,
+body.dark .fc-unthemed tbody,
+body.dark .fc-unthemed td,
+body.dark .fc-unthemed th,
+body.dark .fc-unthemed thead {
+  border-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .fc-unthemed .fc-list-item:hover td {
+  background: #454c66;
+}
+
+body.dark .fc-unthemed .fc-divider,
+body.dark .fc-unthemed .fc-list-heading td,
+body.dark .fc-unthemed .fc-popover .fc-header {
+  background: #454c66;
+}
+
+body.dark .fc-unthemed td.fc-today,
+body.dark .fc-unthemed .fc-list-empty {
+  background: #454c66;
+}
+
+body.dark #external-events .fc-event {
+  color: inherit;
+}
+
+body.dark .bootstrap-tagsinput {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .bootstrap-tagsinput .tag {
+  background: #454c66;
+  color: #c3c3c3;
+}
+
+body.dark .bootstrap-tagsinput input {
+  color: #c3c3c3;
+}
+
+body.dark .dropzone {
+  background-color: #313852;
+  border-color: #454c66;
+}
+
+body.dark .modal-content {
+  background-color: #313852;
+}
+
+body.dark .modal-content .modal-header {
+  border-bottom-color: rgba(240, 240, 240, 0.12);
+  background-color: #454c66 !important;
+}
+
+body.dark .modal-content .modal-header .close {
+  text-shadow: none;
+  opacity: 1;
+  color: inherit;
+  background-color: #313852 !important;
+}
+
+body.dark .modal-content .modal-footer {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .swal-modal {
+  background-color: #313852;
+}
+
+body.dark .swal-modal .swal-icon--success__hide-corners {
+  background-color: inherit;
+}
+
+body.dark .swal-modal .swal-icon--success:before,
+body.dark .swal-modal .swal-icon--success:after {
+  background-color: inherit;
+}
+
+body.dark .swal-modal .swal-title,
+body.dark .swal-modal .swal-text {
+  color: inherit;
+}
+
+body.dark .popover {
+  background-color: #454c66;
+}
+
+body.dark .popover .popover-header {
+  background-color: #59607a;
+  border-color: transparent;
+}
+
+body.dark .popover .popover-body {
+  color: inherit;
+}
+
+body.dark .popover .popover-navigation {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .bs-popover-auto[x-placement^=top] > .arrow::after,
+body.dark .bs-popover-top > .arrow::after {
+  border-top-color: #454c66;
+}
+
+body.dark .bs-popover-auto[x-placement^=right] > .arrow::after,
+body.dark .bs-popover-right > .arrow::after {
+  border-right-color: #454c66;
+}
+
+body.dark .bs-popover-auto[x-placement^=bottom] > .arrow::after,
+body.dark .bs-popover-bottom > .arrow::after {
+  border-bottom-color: #454c66;
+}
+
+body.dark .bs-popover-auto[x-placement^=left] > .arrow::after,
+body.dark .bs-popover-left > .arrow::after {
+  border-left-color: #454c66;
+}
+
+body.dark ul.links a,
+body.dark ul.links .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark ul.links button.btn {
+  color: inherit;
+}
+
+body.dark .page-link {
+  background-color: inherit;
+  color: inherit;
+  border-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .page-item.disabled .page-link {
+  background-color: #272e48;
+  border-color: rgba(240, 240, 240, 0.12);
+  color: inherit;
+}
+
+body.dark .nav a.nav-link:not(.active),
+body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active),
+.header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active) {
+  color: #c7c7c7;
+}
+
+body.dark .nav a.nav-link:not(.active):hover,
+body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active):hover,
+.header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active):hover,
+body.dark .nav a.nav-link:not(.active):active,
+body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active):active,
+.header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active):active {
+  background-color: #3b425c;
+}
+
+body.dark.form-membership .form-wrapper {
+  background-color: #313852;
+}
+
+body.dark.form-membership .form-wrapper #logo img {
+  display: block;
+}
+
+body.dark.form-membership .form-wrapper #logo img:not(.logo-light) {
+  display: none;
+}
+
+body.dark .content-footer {
+  background-color: #313852;
+}
+
+body.dark .irs--round .irs-handle {
+  background-color: #313852;
+}
+
+body.dark .table tr.tr-selected {
+  background-color: #3b4362;
+}
+
+body.dark.hidden-navigation .navigation {
+  background-color: #313852;
+}
+
+body.dark.small-navigation .navigation-menu-body ul li.open > a,
+body.dark.small-navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append body.dark.small-navigation .navigation-menu-body ul li.open > button.btn {
+  background-color: #454c66;
+}
+
+body.dark.small-navigation .navigation-menu-body ul li ul {
+  background-color: #313852 !important;
+  border-left-color: #454c66 !important;
+}
+
+body.dark.small-navigation .navigation-menu-body ul li.navigation-divider:after {
+  background-color: #454c66 !important;
+}
+
+@media (min-width: 1200px) {
+  body.dark.horizontal-navigation .horizontal-navigation {
+    background-color: #313852;
+    border-top-color: #444e72;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a.active,
+  body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.active.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.active.btn {
+    background: rgba(0, 0, 0, 0.25);
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a:hover,
+  body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.btn:hover,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.btn:hover {
+    background: rgba(0, 0, 0, 0.1);
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a + ul,
+  body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.btn + ul,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.btn + ul {
+    border-top-color: #444e72;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul {
+    background-color: #3b425c;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul:before {
+    border-bottom-color: #3b425c;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    color: #c7c7c7;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a:hover,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn:hover,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.btn:hover {
+    background: none;
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a.active,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.active.btn {
+    background: none;
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li ul {
+    border-left-color: #444e72;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li.open > a,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li.open > button.btn {
+    background: none;
+    color: #339aff;
+  }
+
+  body.dark.navigation-toggle-one.navigation-show .navigation .navigation-menu-body {
+    background-color: #313852;
+  }
+}
+
+@media (max-width: 1200px) {
+  body.dark .chat-block .chat-content.mobile-open {
+    background-color: #313852;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation {
+    background-color: #3b425c;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li a:hover,
+  body.dark.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:hover,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li button.btn:hover {
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li a.active,
+  body.dark.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li button.active.btn {
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li.open > a,
+  body.dark.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #339aff;
+  }
+}
+
+@media (max-width: 1200px) {
+  .header .header-toggler {
+    display: block;
+  }
+
+  .chat-app .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 0 !important;
+  }
+
+  .chat-block {
+    position: relative;
+  }
+
+  .chat-block .chat-content {
+    display: none;
+  }
+
+  .chat-block .chat-content .chat-header {
+    padding: 0.5rem 1.5rem;
+  }
+
+  .chat-block .chat-content .mobile-chat-close-btn {
+    display: block;
+  }
+
+  .chat-block .chat-content.chat-mobile-open {
+    display: -webkit-box;
+    display: flex;
+    background-color: white;
+    position: absolute;
+    right: 0;
+    left: 0;
+    max-width: 100%;
+    z-index: 2;
+    bottom: 0;
+  }
+
+  .chat-block .chat-sidebar {
+    -webkit-box-flex: 1;
+            flex: 1;
+    border-right: none;
+    max-width: 100% !important;
+  }
+
+  .header {
+    margin: 0;
+  }
+
+  .header .header-left .navigation-toggler {
+    display: block !important;
+  }
+
+  .header div:nth-child(2) ul.navbar-nav:first-child {
+    display: none;
+    background: #e6e6e6;
+    position: fixed;
+    left: 0;
+    right: 0;
+    top: 75px;
+  }
+
+  .header div:nth-child(2) ul.navbar-nav:first-child li a,
+  .header div:nth-child(2) ul.navbar-nav:first-child li form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append div:nth-child(2) ul.navbar-nav:first-child li button.btn {
+    color: black;
+  }
+
+  .header div:nth-child(2) ul.navbar-nav:first-child.open {
+    display: -webkit-box;
+    display: flex;
+    flex-wrap: wrap;
+  }
+
+  .header .header-search .input-group {
+    background-color: white;
+  }
+
+  .header .header-search .input-group .btn {
+    color: black;
+  }
+
+  .header .header-search .input-group input.form-control:focus,
+  .header .header-search .input-group .swal-modal input.swal-content__input:focus,
+  .swal-modal .header .header-search .input-group input.swal-content__input:focus {
+    color: black;
+  }
+
+  .header .header-search .input-group input.form-control::-webkit-input-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input::-webkit-input-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input::-webkit-input-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control::-moz-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input::-moz-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input::-moz-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control:-ms-input-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input:-ms-input-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input:-ms-input-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control::-ms-input-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input::-ms-input-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input::-ms-input-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control::placeholder,
+  .header .header-search .input-group .swal-modal input.swal-content__input::placeholder,
+  .swal-modal .header .header-search .input-group input.swal-content__input::placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .navigation-toggler a,
+  .header .navigation-toggler form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append .navigation-toggler button.btn,
+  .header .navbar-toggler a,
+  .header .navbar-toggler form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append .navbar-toggler button.btn {
+    background: none !important;
+  }
+
+  .header .navigation-toggler {
+    display: none !important;
+  }
+
+  .header .navigation-toggler.mobile-toggler {
+    display: block !important;
+  }
+
+  .header .navigation-toggler a:hover,
+  .header .navigation-toggler form .input-group .input-group-append button.btn:hover,
+  .header form .input-group .input-group-append .navigation-toggler button.btn:hover {
+    background: none !important;
+  }
+
+  .header .dropdown {
+    position: static;
+  }
+
+  .header .dropdown-menu {
+    right: 1rem !important;
+    top: auto !important;
+    left: 1rem !important;
+    margin-top: 10px;
+    width: auto !important;
+    -webkit-transform: inherit !important;
+            transform: inherit !important;
+  }
+
+  .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+  }
+
+  .content-footer {
+    margin-left: 0 !important;
+  }
+
+  .navigation {
+    background-color: white;
+    z-index: 1000;
+    box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.15);
+    left: -80%;
+    top: 0;
+    bottom: 0;
+    opacity: 0;
+    -webkit-transition: left 0.2s;
+    transition: left 0.2s;
+    position: fixed !important;
+  }
+
+  .navigation.open {
+    left: 0;
+    opacity: 1;
+  }
+
+  .navigation header.navigation-header {
+    padding-top: 20px;
+  }
+
+  .navigation .navigation-icon-menu {
+    margin: 0;
+    border-radius: 0;
+  }
+
+  .navigation .navigation-menu-body {
+    padding: 15px 0;
+  }
+
+  .page-header {
+    padding: 0;
+    margin-top: 0;
+    margin-right: 0;
+    margin-left: 0;
+  }
+
+  .user-page {
+    padding: 20px;
+    height: auto;
+  }
+
+  .user-page .card,
+  .user-page .chat-block,
+  .user-page .app-block .app-content .app-action,
+  .app-block .app-content .user-page .app-action {
+    width: auto;
+  }
+
+  .user-page .card .card-body,
+  .user-page .chat-block .card-body,
+  .user-page .app-block .app-content .app-action .card-body,
+  .app-block .app-content .user-page .app-action .card-body {
+    padding: 30px;
+  }
+}
+
+@media (max-width: 992px) {
+  .app-block {
+    position: relative;
+  }
+
+  .app-block .app-sidebar-menu-button {
+    display: -webkit-inline-box;
+    display: inline-flex;
+    margin-right: 1rem;
+  }
+
+  .app-block .app-sidebar {
+    display: none;
+    position: absolute;
+    left: 0;
+    z-index: 9;
+    -webkit-box-flex: 0;
+            flex: 0 0 35%;
+    max-width: 35%;
+    bottom: 0;
+  }
+
+  .app-block .app-sidebar .app-sidebar-menu {
+    overflow: auto;
+  }
+
+  .app-block .app-sidebar.show {
+    display: block;
+  }
+
+  .app-block .app-sidebar > .card,
+  .app-block .app-sidebar > .chat-block,
+  .app-block .app-content .app-sidebar > .app-action {
+    box-shadow: 3px 0px 15px -10px black;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+
+  .app-block .app-content {
+    -webkit-box-flex: 0;
+            flex: 0 0 100%;
+    max-width: 100%;
+  }
+
+  .app-block .app-content .app-action {
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: reverse;
+            flex-direction: column-reverse;
+  }
+
+  .app-block .app-content .app-action .action-right {
+    margin-left: 0;
+    margin-bottom: 1rem;
+  }
+
+  .app-block .app-content .app-detail .card-header {
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+            flex-direction: column;
+    -webkit-box-align: stretch !important;
+            align-items: stretch !important;
+  }
+
+  .app-block .app-content .app-detail .card-header .app-detail-action-right {
+    margin-left: 0 !important;
+    margin-top: 1rem;
+  }
+
+  .card,
+  .chat-block,
+  .app-block .app-content .app-action {
+    margin-bottom: 1rem;
+  }
+
+  .card .card-body,
+  .chat-block .card-body,
+  .app-block .app-content .app-action .card-body {
+    padding: 1.2rem;
+  }
+}
+
+@media (max-width: 768px) {
+  body.form-membership .form-wrapper {
+    width: 90%;
+    margin: 30px auto;
+  }
+
+  body.horizontal-navigation .horizontal-navigation.open {
+    width: 80%;
+  }
+
+  .app-block .app-content .app-action .action-right form {
+    margin-right: 0 !important;
+  }
+
+  .app-block .app-content .app-action .action-right .app-pager {
+    display: none !important;
+  }
+
+  .app-block .app-sidebar {
+    -webkit-box-flex: 0;
+            flex: 0 0 70%;
+    max-width: 70%;
+  }
+
+  .chat-block .chat-sidebar.border-right {
+    border-right: none !important;
+  }
+
+  .toast-top-right {
+    top: 1rem;
+    right: 1rem;
+  }
+
+  .toast-top-left {
+    top: 1rem;
+    left: 1rem;
+  }
+
+  .header .header-left {
+    width: auto;
+  }
+
+  .header .page-title {
+    display: none;
+  }
+
+  footer {
+    padding: 15px 20px;
+  }
+
+  footer .nav {
+    display: none;
+  }
+
+  .table-responsive-stack tr {
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    flex-direction: column;
+    border-bottom: 3px solid #ccc;
+    display: block;
+  }
+
+  /*  IE9 FIX   */
+
+  .table-responsive-stack td {
+    float: left \9;
+    width: 100%;
+  }
+
+  .sidebar > ul.nav {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  .sidebar > ul.nav li.nav-item {
+    border: none;
+  }
+
+  .user-page {
+    padding: 20px;
+    height: auto;
+  }
+
+  .user-page .card,
+  .user-page .chat-block,
+  .user-page .app-block .app-content .app-action,
+  .app-block .app-content .user-page .app-action {
+    width: 100%;
+  }
+
+  .user-page .card .card-body,
+  .user-page .chat-block .card-body,
+  .user-page .app-block .app-content .app-action .card-body,
+  .app-block .app-content .user-page .app-action .card-body {
+    padding: 30px;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div {
+    float: none !important;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div .fc-button-group {
+    float: none !important;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div.fc-left {
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-pack: center;
+            justify-content: center;
+    margin-bottom: 15px;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div.fc-right {
+    margin-bottom: 5px;
+  }
+}
+
+@media (max-width: 414px) {
+  .nav {
+    display: block;
+    border: none;
+  }
+
+  .nav li.nav-item {
+    margin-bottom: 0;
+  }
+
+  .nav li.nav-item:last-child {
+    border: none;
+  }
+
+  .nav li.nav-item a.nav-link,
+  .nav li.nav-item .header form .input-group .input-group-append button.nav-link.btn,
+  .header form .input-group .input-group-append .nav li.nav-item button.nav-link.btn {
+    border: none;
+  }
+
+  body:not(.semi-dark):not(.dark) .nav li.nav-item {
+    border-bottom: 1px solid #ebebeb;
+  }
+
+  .navigation header.navigation-header .nav {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  body.dark .nav li.nav-item {
+    border-bottom-color: #6d748e;
+  }
+
+  .wizard > .steps > ul > li {
+    float: none;
+    width: 100%;
+    margin-bottom: 10px;
+  }
+
+  .wizard > .content {
+    background: none;
+  }
+
+  .wizard > .content > .body {
+    position: static;
+    padding: 0;
+  }
+
+  .dataTables_wrapper .dataTables_filter {
+    display: block;
+  }
+
+  .navigation {
+    width: 75%;
+  }
+
+  .page-header .breadcrumb {
+    display: none;
+  }
+}
+
+@media (max-width: 375px) {
+  nav.navbar .navbar-menu {
+    padding-left: 0;
+  }
+
+  .navigation {
+    width: 85%;
+  }
+}
+
+@media (max-width: 544px) {
+  .text-xs-center {
+    text-align: center !important;
+  }
+
+  .text-xs-left {
+    text-align: left !important;
+  }
+
+  .text-xs-right {
+    text-align: right !important;
+  }
+}
+
+@media print {
+  .page-header {
+    display: none;
+  }
+}
+
Index: resources/assets/css/app.min.css
===================================================================
--- resources/assets/css/app.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/css/app.min.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,12315 @@
+@charset "UTF-8";
+
+.m-0 {
+  margin: 0px !important;
+}
+
+.m-5 {
+  margin: 5px !important;
+}
+
+.m-10 {
+  margin: 10px !important;
+}
+
+.m-15 {
+  margin: 15px !important;
+}
+
+.m-20 {
+  margin: 20px !important;
+}
+
+.m-25 {
+  margin: 25px !important;
+}
+
+.m-30 {
+  margin: 30px !important;
+}
+
+.m-35 {
+  margin: 35px !important;
+}
+
+.m-40 {
+  margin: 40px !important;
+}
+
+.m-45 {
+  margin: 45px !important;
+}
+
+.m-50 {
+  margin: 50px !important;
+}
+
+.m-t-b-0 {
+  margin-top: 0px !important;
+  margin-bottom: 0px !important;
+}
+
+.m-t-b-5 {
+  margin-top: 5px !important;
+  margin-bottom: 5px !important;
+}
+
+.m-t-b-10 {
+  margin-top: 10px !important;
+  margin-bottom: 10px !important;
+}
+
+.m-t-b-15 {
+  margin-top: 15px !important;
+  margin-bottom: 15px !important;
+}
+
+.m-t-b-20 {
+  margin-top: 20px !important;
+  margin-bottom: 20px !important;
+}
+
+.m-t-b-25 {
+  margin-top: 25px !important;
+  margin-bottom: 25px !important;
+}
+
+.m-t-b-30 {
+  margin-top: 30px !important;
+  margin-bottom: 30px !important;
+}
+
+.m-t-b-35 {
+  margin-top: 35px !important;
+  margin-bottom: 35px !important;
+}
+
+.m-t-b-40 {
+  margin-top: 40px !important;
+  margin-bottom: 40px !important;
+}
+
+.m-t-b-45 {
+  margin-top: 45px !important;
+  margin-bottom: 45px !important;
+}
+
+.m-t-b-50 {
+  margin-top: 50px !important;
+  margin-bottom: 50px !important;
+}
+
+.m-l-r-0 {
+  margin-left: 0px !important;
+  margin-right: 0px !important;
+}
+
+.m-l-r-5 {
+  margin-left: 5px !important;
+  margin-right: 5px !important;
+}
+
+.m-l-r-10 {
+  margin-left: 10px !important;
+  margin-right: 10px !important;
+}
+
+.m-l-r-15 {
+  margin-left: 15px !important;
+  margin-right: 15px !important;
+}
+
+.m-l-r-20 {
+  margin-left: 20px !important;
+  margin-right: 20px !important;
+}
+
+.m-l-r-25 {
+  margin-left: 25px !important;
+  margin-right: 25px !important;
+}
+
+.m-l-r-30 {
+  margin-left: 30px !important;
+  margin-right: 30px !important;
+}
+
+.m-l-r-35 {
+  margin-left: 35px !important;
+  margin-right: 35px !important;
+}
+
+.m-l-r-40 {
+  margin-left: 40px !important;
+  margin-right: 40px !important;
+}
+
+.m-l-r-45 {
+  margin-left: 45px !important;
+  margin-right: 45px !important;
+}
+
+.m-l-r-50 {
+  margin-left: 50px !important;
+  margin-right: 50px !important;
+}
+
+.m-t-0 {
+  margin-top: 0px !important;
+}
+
+.m-t-5 {
+  margin-top: 5px !important;
+}
+
+.m-t-10 {
+  margin-top: 10px !important;
+}
+
+.m-t-15 {
+  margin-top: 15px !important;
+}
+
+.m-t-20 {
+  margin-top: 20px !important;
+}
+
+.m-t-25 {
+  margin-top: 25px !important;
+}
+
+.m-t-30 {
+  margin-top: 30px !important;
+}
+
+.m-t-35 {
+  margin-top: 35px !important;
+}
+
+.m-t-40 {
+  margin-top: 40px !important;
+}
+
+.m-t-45 {
+  margin-top: 45px !important;
+}
+
+.m-t-50 {
+  margin-top: 50px !important;
+}
+
+.m-r-0 {
+  margin-right: 0px !important;
+}
+
+.m-r-5 {
+  margin-right: 5px !important;
+}
+
+.m-r-10 {
+  margin-right: 10px !important;
+}
+
+.m-r-15 {
+  margin-right: 15px !important;
+}
+
+.m-r-20 {
+  margin-right: 20px !important;
+}
+
+.m-r-25 {
+  margin-right: 25px !important;
+}
+
+.m-r-30 {
+  margin-right: 30px !important;
+}
+
+.m-r-35 {
+  margin-right: 35px !important;
+}
+
+.m-r-40 {
+  margin-right: 40px !important;
+}
+
+.m-r-45 {
+  margin-right: 45px !important;
+}
+
+.m-r-50 {
+  margin-right: 50px !important;
+}
+
+.m-b-0 {
+  margin-bottom: 0px !important;
+}
+
+.m-b-5 {
+  margin-bottom: 5px !important;
+}
+
+.m-b-10 {
+  margin-bottom: 10px !important;
+}
+
+.m-b-15 {
+  margin-bottom: 15px !important;
+}
+
+.m-b-20 {
+  margin-bottom: 20px !important;
+}
+
+.m-b-25 {
+  margin-bottom: 25px !important;
+}
+
+.m-b-30 {
+  margin-bottom: 30px !important;
+}
+
+.m-b-35 {
+  margin-bottom: 35px !important;
+}
+
+.m-b-40 {
+  margin-bottom: 40px !important;
+}
+
+.m-b-45 {
+  margin-bottom: 45px !important;
+}
+
+.m-b-50 {
+  margin-bottom: 50px !important;
+}
+
+.m-l-0 {
+  margin-left: 0px !important;
+}
+
+.m-l-5 {
+  margin-left: 5px !important;
+}
+
+.m-l-10 {
+  margin-left: 10px !important;
+}
+
+.m-l-15 {
+  margin-left: 15px !important;
+}
+
+.m-l-20 {
+  margin-left: 20px !important;
+}
+
+.m-l-25 {
+  margin-left: 25px !important;
+}
+
+.m-l-30 {
+  margin-left: 30px !important;
+}
+
+.m-l-35 {
+  margin-left: 35px !important;
+}
+
+.m-l-40 {
+  margin-left: 40px !important;
+}
+
+.m-l-45 {
+  margin-left: 45px !important;
+}
+
+.m-l-50 {
+  margin-left: 50px !important;
+}
+
+.m-t-0-minus {
+  margin-top: 0px !important;
+}
+
+.m-t-10-minus {
+  margin-top: -10px !important;
+}
+
+.m-t-20-minus {
+  margin-top: -20px !important;
+}
+
+.m-t-30-minus {
+  margin-top: -30px !important;
+}
+
+.m-t-40-minus {
+  margin-top: -40px !important;
+}
+
+.m-t-50-minus {
+  margin-top: -50px !important;
+}
+
+.m-t-60-minus {
+  margin-top: -60px !important;
+}
+
+.m-t-70-minus {
+  margin-top: -70px !important;
+}
+
+.m-t-80-minus {
+  margin-top: -80px !important;
+}
+
+.m-t-90-minus {
+  margin-top: -90px !important;
+}
+
+.m-t-100-minus {
+  margin-top: -100px !important;
+}
+
+.m-t-110-minus {
+  margin-top: -110px !important;
+}
+
+.m-t-120-minus {
+  margin-top: -120px !important;
+}
+
+.m-t-130-minus {
+  margin-top: -130px !important;
+}
+
+.m-t-140-minus {
+  margin-top: -140px !important;
+}
+
+.m-t-150-minus {
+  margin-top: -150px !important;
+}
+
+.m-t-160-minus {
+  margin-top: -160px !important;
+}
+
+.m-t-170-minus {
+  margin-top: -170px !important;
+}
+
+.m-t-180-minus {
+  margin-top: -180px !important;
+}
+
+.m-t-190-minus {
+  margin-top: -190px !important;
+}
+
+.m-t-200-minus {
+  margin-top: -200px !important;
+}
+
+.m-t-210-minus {
+  margin-top: -210px !important;
+}
+
+.m-t-220-minus {
+  margin-top: -220px !important;
+}
+
+.m-t-230-minus {
+  margin-top: -230px !important;
+}
+
+.m-t-240-minus {
+  margin-top: -240px !important;
+}
+
+.m-t-250-minus {
+  margin-top: -250px !important;
+}
+
+.m-t-260-minus {
+  margin-top: -260px !important;
+}
+
+.m-t-270-minus {
+  margin-top: -270px !important;
+}
+
+.m-t-280-minus {
+  margin-top: -280px !important;
+}
+
+.m-t-290-minus {
+  margin-top: -290px !important;
+}
+
+.m-t-300-minus {
+  margin-top: -300px !important;
+}
+
+.m-t-310-minus {
+  margin-top: -310px !important;
+}
+
+.m-t-320-minus {
+  margin-top: -320px !important;
+}
+
+.m-t-330-minus {
+  margin-top: -330px !important;
+}
+
+.m-t-340-minus {
+  margin-top: -340px !important;
+}
+
+.m-t-350-minus {
+  margin-top: -350px !important;
+}
+
+.m-t-360-minus {
+  margin-top: -360px !important;
+}
+
+.m-t-370-minus {
+  margin-top: -370px !important;
+}
+
+.m-t-380-minus {
+  margin-top: -380px !important;
+}
+
+.m-t-390-minus {
+  margin-top: -390px !important;
+}
+
+.m-t-400-minus {
+  margin-top: -400px !important;
+}
+
+.m-t-410-minus {
+  margin-top: -410px !important;
+}
+
+.m-t-420-minus {
+  margin-top: -420px !important;
+}
+
+.m-t-430-minus {
+  margin-top: -430px !important;
+}
+
+.m-t-440-minus {
+  margin-top: -440px !important;
+}
+
+.m-t-450-minus {
+  margin-top: -450px !important;
+}
+
+.m-t-460-minus {
+  margin-top: -460px !important;
+}
+
+.m-t-470-minus {
+  margin-top: -470px !important;
+}
+
+.m-t-480-minus {
+  margin-top: -480px !important;
+}
+
+.m-t-490-minus {
+  margin-top: -490px !important;
+}
+
+.m-t-500-minus {
+  margin-top: -500px !important;
+}
+
+.m-t-510-minus {
+  margin-top: -510px !important;
+}
+
+.m-t-520-minus {
+  margin-top: -520px !important;
+}
+
+.m-t-530-minus {
+  margin-top: -530px !important;
+}
+
+.m-t-540-minus {
+  margin-top: -540px !important;
+}
+
+.m-t-550-minus {
+  margin-top: -550px !important;
+}
+
+.m-t-560-minus {
+  margin-top: -560px !important;
+}
+
+.m-t-570-minus {
+  margin-top: -570px !important;
+}
+
+.m-t-580-minus {
+  margin-top: -580px !important;
+}
+
+.m-t-590-minus {
+  margin-top: -590px !important;
+}
+
+.m-t-600-minus {
+  margin-top: -600px !important;
+}
+
+.m-t-610-minus {
+  margin-top: -610px !important;
+}
+
+.m-t-620-minus {
+  margin-top: -620px !important;
+}
+
+.m-t-630-minus {
+  margin-top: -630px !important;
+}
+
+.m-t-640-minus {
+  margin-top: -640px !important;
+}
+
+.m-t-650-minus {
+  margin-top: -650px !important;
+}
+
+.m-t-660-minus {
+  margin-top: -660px !important;
+}
+
+.m-t-670-minus {
+  margin-top: -670px !important;
+}
+
+.m-t-680-minus {
+  margin-top: -680px !important;
+}
+
+.m-t-690-minus {
+  margin-top: -690px !important;
+}
+
+.m-t-700-minus {
+  margin-top: -700px !important;
+}
+
+.m-t-710-minus {
+  margin-top: -710px !important;
+}
+
+.m-t-720-minus {
+  margin-top: -720px !important;
+}
+
+.m-t-730-minus {
+  margin-top: -730px !important;
+}
+
+.m-t-740-minus {
+  margin-top: -740px !important;
+}
+
+.m-t-750-minus {
+  margin-top: -750px !important;
+}
+
+.m-t-760-minus {
+  margin-top: -760px !important;
+}
+
+.m-t-770-minus {
+  margin-top: -770px !important;
+}
+
+.m-t-780-minus {
+  margin-top: -780px !important;
+}
+
+.m-t-790-minus {
+  margin-top: -790px !important;
+}
+
+.m-t-800-minus {
+  margin-top: -800px !important;
+}
+
+.m-t-810-minus {
+  margin-top: -810px !important;
+}
+
+.m-t-820-minus {
+  margin-top: -820px !important;
+}
+
+.m-t-830-minus {
+  margin-top: -830px !important;
+}
+
+.m-t-840-minus {
+  margin-top: -840px !important;
+}
+
+.m-t-850-minus {
+  margin-top: -850px !important;
+}
+
+.m-t-860-minus {
+  margin-top: -860px !important;
+}
+
+.m-t-870-minus {
+  margin-top: -870px !important;
+}
+
+.m-t-880-minus {
+  margin-top: -880px !important;
+}
+
+.m-t-890-minus {
+  margin-top: -890px !important;
+}
+
+.m-t-900-minus {
+  margin-top: -900px !important;
+}
+
+.m-t-910-minus {
+  margin-top: -910px !important;
+}
+
+.m-t-920-minus {
+  margin-top: -920px !important;
+}
+
+.m-t-930-minus {
+  margin-top: -930px !important;
+}
+
+.m-t-940-minus {
+  margin-top: -940px !important;
+}
+
+.m-t-950-minus {
+  margin-top: -950px !important;
+}
+
+.m-t-960-minus {
+  margin-top: -960px !important;
+}
+
+.m-t-970-minus {
+  margin-top: -970px !important;
+}
+
+.m-t-980-minus {
+  margin-top: -980px !important;
+}
+
+.m-t-990-minus {
+  margin-top: -990px !important;
+}
+
+.m-t-1000-minus {
+  margin-top: -1000px !important;
+}
+
+.m-r-0-minus {
+  margin-right: 0px !important;
+}
+
+.m-r-10-minus {
+  margin-right: -10px !important;
+}
+
+.m-r-20-minus {
+  margin-right: -20px !important;
+}
+
+.m-r-30-minus {
+  margin-right: -30px !important;
+}
+
+.m-r-40-minus {
+  margin-right: -40px !important;
+}
+
+.m-r-50-minus {
+  margin-right: -50px !important;
+}
+
+.m-r-60-minus {
+  margin-right: -60px !important;
+}
+
+.m-r-70-minus {
+  margin-right: -70px !important;
+}
+
+.m-r-80-minus {
+  margin-right: -80px !important;
+}
+
+.m-r-90-minus {
+  margin-right: -90px !important;
+}
+
+.m-r-100-minus {
+  margin-right: -100px !important;
+}
+
+.m-r-110-minus {
+  margin-right: -110px !important;
+}
+
+.m-r-120-minus {
+  margin-right: -120px !important;
+}
+
+.m-r-130-minus {
+  margin-right: -130px !important;
+}
+
+.m-r-140-minus {
+  margin-right: -140px !important;
+}
+
+.m-r-150-minus {
+  margin-right: -150px !important;
+}
+
+.m-r-160-minus {
+  margin-right: -160px !important;
+}
+
+.m-r-170-minus {
+  margin-right: -170px !important;
+}
+
+.m-r-180-minus {
+  margin-right: -180px !important;
+}
+
+.m-r-190-minus {
+  margin-right: -190px !important;
+}
+
+.m-r-200-minus {
+  margin-right: -200px !important;
+}
+
+.m-r-210-minus {
+  margin-right: -210px !important;
+}
+
+.m-r-220-minus {
+  margin-right: -220px !important;
+}
+
+.m-r-230-minus {
+  margin-right: -230px !important;
+}
+
+.m-r-240-minus {
+  margin-right: -240px !important;
+}
+
+.m-r-250-minus {
+  margin-right: -250px !important;
+}
+
+.m-r-260-minus {
+  margin-right: -260px !important;
+}
+
+.m-r-270-minus {
+  margin-right: -270px !important;
+}
+
+.m-r-280-minus {
+  margin-right: -280px !important;
+}
+
+.m-r-290-minus {
+  margin-right: -290px !important;
+}
+
+.m-r-300-minus {
+  margin-right: -300px !important;
+}
+
+.m-r-310-minus {
+  margin-right: -310px !important;
+}
+
+.m-r-320-minus {
+  margin-right: -320px !important;
+}
+
+.m-r-330-minus {
+  margin-right: -330px !important;
+}
+
+.m-r-340-minus {
+  margin-right: -340px !important;
+}
+
+.m-r-350-minus {
+  margin-right: -350px !important;
+}
+
+.m-r-360-minus {
+  margin-right: -360px !important;
+}
+
+.m-r-370-minus {
+  margin-right: -370px !important;
+}
+
+.m-r-380-minus {
+  margin-right: -380px !important;
+}
+
+.m-r-390-minus {
+  margin-right: -390px !important;
+}
+
+.m-r-400-minus {
+  margin-right: -400px !important;
+}
+
+.m-r-410-minus {
+  margin-right: -410px !important;
+}
+
+.m-r-420-minus {
+  margin-right: -420px !important;
+}
+
+.m-r-430-minus {
+  margin-right: -430px !important;
+}
+
+.m-r-440-minus {
+  margin-right: -440px !important;
+}
+
+.m-r-450-minus {
+  margin-right: -450px !important;
+}
+
+.m-r-460-minus {
+  margin-right: -460px !important;
+}
+
+.m-r-470-minus {
+  margin-right: -470px !important;
+}
+
+.m-r-480-minus {
+  margin-right: -480px !important;
+}
+
+.m-r-490-minus {
+  margin-right: -490px !important;
+}
+
+.m-r-500-minus {
+  margin-right: -500px !important;
+}
+
+.m-r-510-minus {
+  margin-right: -510px !important;
+}
+
+.m-r-520-minus {
+  margin-right: -520px !important;
+}
+
+.m-r-530-minus {
+  margin-right: -530px !important;
+}
+
+.m-r-540-minus {
+  margin-right: -540px !important;
+}
+
+.m-r-550-minus {
+  margin-right: -550px !important;
+}
+
+.m-r-560-minus {
+  margin-right: -560px !important;
+}
+
+.m-r-570-minus {
+  margin-right: -570px !important;
+}
+
+.m-r-580-minus {
+  margin-right: -580px !important;
+}
+
+.m-r-590-minus {
+  margin-right: -590px !important;
+}
+
+.m-r-600-minus {
+  margin-right: -600px !important;
+}
+
+.m-r-610-minus {
+  margin-right: -610px !important;
+}
+
+.m-r-620-minus {
+  margin-right: -620px !important;
+}
+
+.m-r-630-minus {
+  margin-right: -630px !important;
+}
+
+.m-r-640-minus {
+  margin-right: -640px !important;
+}
+
+.m-r-650-minus {
+  margin-right: -650px !important;
+}
+
+.m-r-660-minus {
+  margin-right: -660px !important;
+}
+
+.m-r-670-minus {
+  margin-right: -670px !important;
+}
+
+.m-r-680-minus {
+  margin-right: -680px !important;
+}
+
+.m-r-690-minus {
+  margin-right: -690px !important;
+}
+
+.m-r-700-minus {
+  margin-right: -700px !important;
+}
+
+.m-r-710-minus {
+  margin-right: -710px !important;
+}
+
+.m-r-720-minus {
+  margin-right: -720px !important;
+}
+
+.m-r-730-minus {
+  margin-right: -730px !important;
+}
+
+.m-r-740-minus {
+  margin-right: -740px !important;
+}
+
+.m-r-750-minus {
+  margin-right: -750px !important;
+}
+
+.m-r-760-minus {
+  margin-right: -760px !important;
+}
+
+.m-r-770-minus {
+  margin-right: -770px !important;
+}
+
+.m-r-780-minus {
+  margin-right: -780px !important;
+}
+
+.m-r-790-minus {
+  margin-right: -790px !important;
+}
+
+.m-r-800-minus {
+  margin-right: -800px !important;
+}
+
+.m-r-810-minus {
+  margin-right: -810px !important;
+}
+
+.m-r-820-minus {
+  margin-right: -820px !important;
+}
+
+.m-r-830-minus {
+  margin-right: -830px !important;
+}
+
+.m-r-840-minus {
+  margin-right: -840px !important;
+}
+
+.m-r-850-minus {
+  margin-right: -850px !important;
+}
+
+.m-r-860-minus {
+  margin-right: -860px !important;
+}
+
+.m-r-870-minus {
+  margin-right: -870px !important;
+}
+
+.m-r-880-minus {
+  margin-right: -880px !important;
+}
+
+.m-r-890-minus {
+  margin-right: -890px !important;
+}
+
+.m-r-900-minus {
+  margin-right: -900px !important;
+}
+
+.m-r-910-minus {
+  margin-right: -910px !important;
+}
+
+.m-r-920-minus {
+  margin-right: -920px !important;
+}
+
+.m-r-930-minus {
+  margin-right: -930px !important;
+}
+
+.m-r-940-minus {
+  margin-right: -940px !important;
+}
+
+.m-r-950-minus {
+  margin-right: -950px !important;
+}
+
+.m-r-960-minus {
+  margin-right: -960px !important;
+}
+
+.m-r-970-minus {
+  margin-right: -970px !important;
+}
+
+.m-r-980-minus {
+  margin-right: -980px !important;
+}
+
+.m-r-990-minus {
+  margin-right: -990px !important;
+}
+
+.m-r-1000-minus {
+  margin-right: -1000px !important;
+}
+
+.m-b-0-minus {
+  margin-bottom: 0px !important;
+}
+
+.m-b-10-minus {
+  margin-bottom: -10px !important;
+}
+
+.m-b-20-minus {
+  margin-bottom: -20px !important;
+}
+
+.m-b-30-minus {
+  margin-bottom: -30px !important;
+}
+
+.m-b-40-minus {
+  margin-bottom: -40px !important;
+}
+
+.m-b-50-minus {
+  margin-bottom: -50px !important;
+}
+
+.m-b-60-minus {
+  margin-bottom: -60px !important;
+}
+
+.m-b-70-minus {
+  margin-bottom: -70px !important;
+}
+
+.m-b-80-minus {
+  margin-bottom: -80px !important;
+}
+
+.m-b-90-minus {
+  margin-bottom: -90px !important;
+}
+
+.m-b-100-minus {
+  margin-bottom: -100px !important;
+}
+
+.m-b-110-minus {
+  margin-bottom: -110px !important;
+}
+
+.m-b-120-minus {
+  margin-bottom: -120px !important;
+}
+
+.m-b-130-minus {
+  margin-bottom: -130px !important;
+}
+
+.m-b-140-minus {
+  margin-bottom: -140px !important;
+}
+
+.m-b-150-minus {
+  margin-bottom: -150px !important;
+}
+
+.m-b-160-minus {
+  margin-bottom: -160px !important;
+}
+
+.m-b-170-minus {
+  margin-bottom: -170px !important;
+}
+
+.m-b-180-minus {
+  margin-bottom: -180px !important;
+}
+
+.m-b-190-minus {
+  margin-bottom: -190px !important;
+}
+
+.m-b-200-minus {
+  margin-bottom: -200px !important;
+}
+
+.m-b-210-minus {
+  margin-bottom: -210px !important;
+}
+
+.m-b-220-minus {
+  margin-bottom: -220px !important;
+}
+
+.m-b-230-minus {
+  margin-bottom: -230px !important;
+}
+
+.m-b-240-minus {
+  margin-bottom: -240px !important;
+}
+
+.m-b-250-minus {
+  margin-bottom: -250px !important;
+}
+
+.m-b-260-minus {
+  margin-bottom: -260px !important;
+}
+
+.m-b-270-minus {
+  margin-bottom: -270px !important;
+}
+
+.m-b-280-minus {
+  margin-bottom: -280px !important;
+}
+
+.m-b-290-minus {
+  margin-bottom: -290px !important;
+}
+
+.m-b-300-minus {
+  margin-bottom: -300px !important;
+}
+
+.m-b-310-minus {
+  margin-bottom: -310px !important;
+}
+
+.m-b-320-minus {
+  margin-bottom: -320px !important;
+}
+
+.m-b-330-minus {
+  margin-bottom: -330px !important;
+}
+
+.m-b-340-minus {
+  margin-bottom: -340px !important;
+}
+
+.m-b-350-minus {
+  margin-bottom: -350px !important;
+}
+
+.m-b-360-minus {
+  margin-bottom: -360px !important;
+}
+
+.m-b-370-minus {
+  margin-bottom: -370px !important;
+}
+
+.m-b-380-minus {
+  margin-bottom: -380px !important;
+}
+
+.m-b-390-minus {
+  margin-bottom: -390px !important;
+}
+
+.m-b-400-minus {
+  margin-bottom: -400px !important;
+}
+
+.m-b-410-minus {
+  margin-bottom: -410px !important;
+}
+
+.m-b-420-minus {
+  margin-bottom: -420px !important;
+}
+
+.m-b-430-minus {
+  margin-bottom: -430px !important;
+}
+
+.m-b-440-minus {
+  margin-bottom: -440px !important;
+}
+
+.m-b-450-minus {
+  margin-bottom: -450px !important;
+}
+
+.m-b-460-minus {
+  margin-bottom: -460px !important;
+}
+
+.m-b-470-minus {
+  margin-bottom: -470px !important;
+}
+
+.m-b-480-minus {
+  margin-bottom: -480px !important;
+}
+
+.m-b-490-minus {
+  margin-bottom: -490px !important;
+}
+
+.m-b-500-minus {
+  margin-bottom: -500px !important;
+}
+
+.m-b-510-minus {
+  margin-bottom: -510px !important;
+}
+
+.m-b-520-minus {
+  margin-bottom: -520px !important;
+}
+
+.m-b-530-minus {
+  margin-bottom: -530px !important;
+}
+
+.m-b-540-minus {
+  margin-bottom: -540px !important;
+}
+
+.m-b-550-minus {
+  margin-bottom: -550px !important;
+}
+
+.m-b-560-minus {
+  margin-bottom: -560px !important;
+}
+
+.m-b-570-minus {
+  margin-bottom: -570px !important;
+}
+
+.m-b-580-minus {
+  margin-bottom: -580px !important;
+}
+
+.m-b-590-minus {
+  margin-bottom: -590px !important;
+}
+
+.m-b-600-minus {
+  margin-bottom: -600px !important;
+}
+
+.m-b-610-minus {
+  margin-bottom: -610px !important;
+}
+
+.m-b-620-minus {
+  margin-bottom: -620px !important;
+}
+
+.m-b-630-minus {
+  margin-bottom: -630px !important;
+}
+
+.m-b-640-minus {
+  margin-bottom: -640px !important;
+}
+
+.m-b-650-minus {
+  margin-bottom: -650px !important;
+}
+
+.m-b-660-minus {
+  margin-bottom: -660px !important;
+}
+
+.m-b-670-minus {
+  margin-bottom: -670px !important;
+}
+
+.m-b-680-minus {
+  margin-bottom: -680px !important;
+}
+
+.m-b-690-minus {
+  margin-bottom: -690px !important;
+}
+
+.m-b-700-minus {
+  margin-bottom: -700px !important;
+}
+
+.m-b-710-minus {
+  margin-bottom: -710px !important;
+}
+
+.m-b-720-minus {
+  margin-bottom: -720px !important;
+}
+
+.m-b-730-minus {
+  margin-bottom: -730px !important;
+}
+
+.m-b-740-minus {
+  margin-bottom: -740px !important;
+}
+
+.m-b-750-minus {
+  margin-bottom: -750px !important;
+}
+
+.m-b-760-minus {
+  margin-bottom: -760px !important;
+}
+
+.m-b-770-minus {
+  margin-bottom: -770px !important;
+}
+
+.m-b-780-minus {
+  margin-bottom: -780px !important;
+}
+
+.m-b-790-minus {
+  margin-bottom: -790px !important;
+}
+
+.m-b-800-minus {
+  margin-bottom: -800px !important;
+}
+
+.m-b-810-minus {
+  margin-bottom: -810px !important;
+}
+
+.m-b-820-minus {
+  margin-bottom: -820px !important;
+}
+
+.m-b-830-minus {
+  margin-bottom: -830px !important;
+}
+
+.m-b-840-minus {
+  margin-bottom: -840px !important;
+}
+
+.m-b-850-minus {
+  margin-bottom: -850px !important;
+}
+
+.m-b-860-minus {
+  margin-bottom: -860px !important;
+}
+
+.m-b-870-minus {
+  margin-bottom: -870px !important;
+}
+
+.m-b-880-minus {
+  margin-bottom: -880px !important;
+}
+
+.m-b-890-minus {
+  margin-bottom: -890px !important;
+}
+
+.m-b-900-minus {
+  margin-bottom: -900px !important;
+}
+
+.m-b-910-minus {
+  margin-bottom: -910px !important;
+}
+
+.m-b-920-minus {
+  margin-bottom: -920px !important;
+}
+
+.m-b-930-minus {
+  margin-bottom: -930px !important;
+}
+
+.m-b-940-minus {
+  margin-bottom: -940px !important;
+}
+
+.m-b-950-minus {
+  margin-bottom: -950px !important;
+}
+
+.m-b-960-minus {
+  margin-bottom: -960px !important;
+}
+
+.m-b-970-minus {
+  margin-bottom: -970px !important;
+}
+
+.m-b-980-minus {
+  margin-bottom: -980px !important;
+}
+
+.m-b-990-minus {
+  margin-bottom: -990px !important;
+}
+
+.m-b-1000-minus {
+  margin-bottom: -1000px !important;
+}
+
+.m-l-0-minus {
+  margin-left: 0px !important;
+}
+
+.m-l-10-minus {
+  margin-left: -10px !important;
+}
+
+.m-l-20-minus {
+  margin-left: -20px !important;
+}
+
+.m-l-30-minus {
+  margin-left: -30px !important;
+}
+
+.m-l-40-minus {
+  margin-left: -40px !important;
+}
+
+.m-l-50-minus {
+  margin-left: -50px !important;
+}
+
+.m-l-60-minus {
+  margin-left: -60px !important;
+}
+
+.m-l-70-minus {
+  margin-left: -70px !important;
+}
+
+.m-l-80-minus {
+  margin-left: -80px !important;
+}
+
+.m-l-90-minus {
+  margin-left: -90px !important;
+}
+
+.m-l-100-minus {
+  margin-left: -100px !important;
+}
+
+.m-l-110-minus {
+  margin-left: -110px !important;
+}
+
+.m-l-120-minus {
+  margin-left: -120px !important;
+}
+
+.m-l-130-minus {
+  margin-left: -130px !important;
+}
+
+.m-l-140-minus {
+  margin-left: -140px !important;
+}
+
+.m-l-150-minus {
+  margin-left: -150px !important;
+}
+
+.m-l-160-minus {
+  margin-left: -160px !important;
+}
+
+.m-l-170-minus {
+  margin-left: -170px !important;
+}
+
+.m-l-180-minus {
+  margin-left: -180px !important;
+}
+
+.m-l-190-minus {
+  margin-left: -190px !important;
+}
+
+.m-l-200-minus {
+  margin-left: -200px !important;
+}
+
+.m-l-210-minus {
+  margin-left: -210px !important;
+}
+
+.m-l-220-minus {
+  margin-left: -220px !important;
+}
+
+.m-l-230-minus {
+  margin-left: -230px !important;
+}
+
+.m-l-240-minus {
+  margin-left: -240px !important;
+}
+
+.m-l-250-minus {
+  margin-left: -250px !important;
+}
+
+.m-l-260-minus {
+  margin-left: -260px !important;
+}
+
+.m-l-270-minus {
+  margin-left: -270px !important;
+}
+
+.m-l-280-minus {
+  margin-left: -280px !important;
+}
+
+.m-l-290-minus {
+  margin-left: -290px !important;
+}
+
+.m-l-300-minus {
+  margin-left: -300px !important;
+}
+
+.m-l-310-minus {
+  margin-left: -310px !important;
+}
+
+.m-l-320-minus {
+  margin-left: -320px !important;
+}
+
+.m-l-330-minus {
+  margin-left: -330px !important;
+}
+
+.m-l-340-minus {
+  margin-left: -340px !important;
+}
+
+.m-l-350-minus {
+  margin-left: -350px !important;
+}
+
+.m-l-360-minus {
+  margin-left: -360px !important;
+}
+
+.m-l-370-minus {
+  margin-left: -370px !important;
+}
+
+.m-l-380-minus {
+  margin-left: -380px !important;
+}
+
+.m-l-390-minus {
+  margin-left: -390px !important;
+}
+
+.m-l-400-minus {
+  margin-left: -400px !important;
+}
+
+.m-l-410-minus {
+  margin-left: -410px !important;
+}
+
+.m-l-420-minus {
+  margin-left: -420px !important;
+}
+
+.m-l-430-minus {
+  margin-left: -430px !important;
+}
+
+.m-l-440-minus {
+  margin-left: -440px !important;
+}
+
+.m-l-450-minus {
+  margin-left: -450px !important;
+}
+
+.m-l-460-minus {
+  margin-left: -460px !important;
+}
+
+.m-l-470-minus {
+  margin-left: -470px !important;
+}
+
+.m-l-480-minus {
+  margin-left: -480px !important;
+}
+
+.m-l-490-minus {
+  margin-left: -490px !important;
+}
+
+.m-l-500-minus {
+  margin-left: -500px !important;
+}
+
+.m-l-510-minus {
+  margin-left: -510px !important;
+}
+
+.m-l-520-minus {
+  margin-left: -520px !important;
+}
+
+.m-l-530-minus {
+  margin-left: -530px !important;
+}
+
+.m-l-540-minus {
+  margin-left: -540px !important;
+}
+
+.m-l-550-minus {
+  margin-left: -550px !important;
+}
+
+.m-l-560-minus {
+  margin-left: -560px !important;
+}
+
+.m-l-570-minus {
+  margin-left: -570px !important;
+}
+
+.m-l-580-minus {
+  margin-left: -580px !important;
+}
+
+.m-l-590-minus {
+  margin-left: -590px !important;
+}
+
+.m-l-600-minus {
+  margin-left: -600px !important;
+}
+
+.m-l-610-minus {
+  margin-left: -610px !important;
+}
+
+.m-l-620-minus {
+  margin-left: -620px !important;
+}
+
+.m-l-630-minus {
+  margin-left: -630px !important;
+}
+
+.m-l-640-minus {
+  margin-left: -640px !important;
+}
+
+.m-l-650-minus {
+  margin-left: -650px !important;
+}
+
+.m-l-660-minus {
+  margin-left: -660px !important;
+}
+
+.m-l-670-minus {
+  margin-left: -670px !important;
+}
+
+.m-l-680-minus {
+  margin-left: -680px !important;
+}
+
+.m-l-690-minus {
+  margin-left: -690px !important;
+}
+
+.m-l-700-minus {
+  margin-left: -700px !important;
+}
+
+.m-l-710-minus {
+  margin-left: -710px !important;
+}
+
+.m-l-720-minus {
+  margin-left: -720px !important;
+}
+
+.m-l-730-minus {
+  margin-left: -730px !important;
+}
+
+.m-l-740-minus {
+  margin-left: -740px !important;
+}
+
+.m-l-750-minus {
+  margin-left: -750px !important;
+}
+
+.m-l-760-minus {
+  margin-left: -760px !important;
+}
+
+.m-l-770-minus {
+  margin-left: -770px !important;
+}
+
+.m-l-780-minus {
+  margin-left: -780px !important;
+}
+
+.m-l-790-minus {
+  margin-left: -790px !important;
+}
+
+.m-l-800-minus {
+  margin-left: -800px !important;
+}
+
+.m-l-810-minus {
+  margin-left: -810px !important;
+}
+
+.m-l-820-minus {
+  margin-left: -820px !important;
+}
+
+.m-l-830-minus {
+  margin-left: -830px !important;
+}
+
+.m-l-840-minus {
+  margin-left: -840px !important;
+}
+
+.m-l-850-minus {
+  margin-left: -850px !important;
+}
+
+.m-l-860-minus {
+  margin-left: -860px !important;
+}
+
+.m-l-870-minus {
+  margin-left: -870px !important;
+}
+
+.m-l-880-minus {
+  margin-left: -880px !important;
+}
+
+.m-l-890-minus {
+  margin-left: -890px !important;
+}
+
+.m-l-900-minus {
+  margin-left: -900px !important;
+}
+
+.m-l-910-minus {
+  margin-left: -910px !important;
+}
+
+.m-l-920-minus {
+  margin-left: -920px !important;
+}
+
+.m-l-930-minus {
+  margin-left: -930px !important;
+}
+
+.m-l-940-minus {
+  margin-left: -940px !important;
+}
+
+.m-l-950-minus {
+  margin-left: -950px !important;
+}
+
+.m-l-960-minus {
+  margin-left: -960px !important;
+}
+
+.m-l-970-minus {
+  margin-left: -970px !important;
+}
+
+.m-l-980-minus {
+  margin-left: -980px !important;
+}
+
+.m-l-990-minus {
+  margin-left: -990px !important;
+}
+
+.m-l-1000-minus {
+  margin-left: -1000px !important;
+}
+
+.p-t-b-0 {
+  padding-top: 0px !important;
+  padding-bottom: 0px !important;
+}
+
+.p-t-b-5 {
+  padding-top: 5px !important;
+  padding-bottom: 5px !important;
+}
+
+.p-t-b-10 {
+  padding-top: 10px !important;
+  padding-bottom: 10px !important;
+}
+
+.p-t-b-15 {
+  padding-top: 15px !important;
+  padding-bottom: 15px !important;
+}
+
+.p-t-b-20 {
+  padding-top: 20px !important;
+  padding-bottom: 20px !important;
+}
+
+.p-t-b-25 {
+  padding-top: 25px !important;
+  padding-bottom: 25px !important;
+}
+
+.p-t-b-30 {
+  padding-top: 30px !important;
+  padding-bottom: 30px !important;
+}
+
+.p-t-b-35 {
+  padding-top: 35px !important;
+  padding-bottom: 35px !important;
+}
+
+.p-t-b-40 {
+  padding-top: 40px !important;
+  padding-bottom: 40px !important;
+}
+
+.p-t-b-45 {
+  padding-top: 45px !important;
+  padding-bottom: 45px !important;
+}
+
+.p-t-b-50 {
+  padding-top: 50px !important;
+  padding-bottom: 50px !important;
+}
+
+.p-l-r-0 {
+  padding-left: 0px !important;
+  padding-right: 0px !important;
+}
+
+.p-l-r-5 {
+  padding-left: 5px !important;
+  padding-right: 5px !important;
+}
+
+.p-l-r-10 {
+  padding-left: 10px !important;
+  padding-right: 10px !important;
+}
+
+.p-l-r-15 {
+  padding-left: 15px !important;
+  padding-right: 15px !important;
+}
+
+.p-l-r-20 {
+  padding-left: 20px !important;
+  padding-right: 20px !important;
+}
+
+.p-l-r-25 {
+  padding-left: 25px !important;
+  padding-right: 25px !important;
+}
+
+.p-l-r-30 {
+  padding-left: 30px !important;
+  padding-right: 30px !important;
+}
+
+.p-l-r-35 {
+  padding-left: 35px !important;
+  padding-right: 35px !important;
+}
+
+.p-l-r-40 {
+  padding-left: 40px !important;
+  padding-right: 40px !important;
+}
+
+.p-l-r-45 {
+  padding-left: 45px !important;
+  padding-right: 45px !important;
+}
+
+.p-l-r-50 {
+  padding-left: 50px !important;
+  padding-right: 50px !important;
+}
+
+.p-0 {
+  padding: 0px !important;
+}
+
+.p-5 {
+  padding: 5px !important;
+}
+
+.p-10 {
+  padding: 10px !important;
+}
+
+.p-15 {
+  padding: 15px !important;
+}
+
+.p-20 {
+  padding: 20px !important;
+}
+
+.p-25 {
+  padding: 25px !important;
+}
+
+.p-30 {
+  padding: 30px !important;
+}
+
+.p-35 {
+  padding: 35px !important;
+}
+
+.p-40 {
+  padding: 40px !important;
+}
+
+.p-45 {
+  padding: 45px !important;
+}
+
+.p-50 {
+  padding: 50px !important;
+}
+
+.p-t-0 {
+  padding-top: 0px !important;
+}
+
+.p-t-5 {
+  padding-top: 5px !important;
+}
+
+.p-t-10 {
+  padding-top: 10px !important;
+}
+
+.p-t-15 {
+  padding-top: 15px !important;
+}
+
+.p-t-20 {
+  padding-top: 20px !important;
+}
+
+.p-t-25 {
+  padding-top: 25px !important;
+}
+
+.p-t-30 {
+  padding-top: 30px !important;
+}
+
+.p-t-35 {
+  padding-top: 35px !important;
+}
+
+.p-t-40 {
+  padding-top: 40px !important;
+}
+
+.p-t-45 {
+  padding-top: 45px !important;
+}
+
+.p-t-50 {
+  padding-top: 50px !important;
+}
+
+.p-t-55 {
+  padding-top: 55px !important;
+}
+
+.p-t-60 {
+  padding-top: 60px !important;
+}
+
+.p-t-65 {
+  padding-top: 65px !important;
+}
+
+.p-t-70 {
+  padding-top: 70px !important;
+}
+
+.p-t-75 {
+  padding-top: 75px !important;
+}
+
+.p-t-80 {
+  padding-top: 80px !important;
+}
+
+.p-t-85 {
+  padding-top: 85px !important;
+}
+
+.p-t-90 {
+  padding-top: 90px !important;
+}
+
+.p-t-95 {
+  padding-top: 95px !important;
+}
+
+.p-t-100 {
+  padding-top: 100px !important;
+}
+
+.p-t-105 {
+  padding-top: 105px !important;
+}
+
+.p-t-110 {
+  padding-top: 110px !important;
+}
+
+.p-t-115 {
+  padding-top: 115px !important;
+}
+
+.p-t-120 {
+  padding-top: 120px !important;
+}
+
+.p-t-125 {
+  padding-top: 125px !important;
+}
+
+.p-t-130 {
+  padding-top: 130px !important;
+}
+
+.p-t-135 {
+  padding-top: 135px !important;
+}
+
+.p-t-140 {
+  padding-top: 140px !important;
+}
+
+.p-t-145 {
+  padding-top: 145px !important;
+}
+
+.p-t-150 {
+  padding-top: 150px !important;
+}
+
+.p-r-0 {
+  padding-right: 0px !important;
+}
+
+.p-r-5 {
+  padding-right: 5px !important;
+}
+
+.p-r-10 {
+  padding-right: 10px !important;
+}
+
+.p-r-15 {
+  padding-right: 15px !important;
+}
+
+.p-r-20 {
+  padding-right: 20px !important;
+}
+
+.p-r-25 {
+  padding-right: 25px !important;
+}
+
+.p-r-30 {
+  padding-right: 30px !important;
+}
+
+.p-r-35 {
+  padding-right: 35px !important;
+}
+
+.p-r-40 {
+  padding-right: 40px !important;
+}
+
+.p-r-45 {
+  padding-right: 45px !important;
+}
+
+.p-r-50 {
+  padding-right: 50px !important;
+}
+
+.p-r-55 {
+  padding-right: 55px !important;
+}
+
+.p-r-60 {
+  padding-right: 60px !important;
+}
+
+.p-r-65 {
+  padding-right: 65px !important;
+}
+
+.p-r-70 {
+  padding-right: 70px !important;
+}
+
+.p-r-75 {
+  padding-right: 75px !important;
+}
+
+.p-r-80 {
+  padding-right: 80px !important;
+}
+
+.p-r-85 {
+  padding-right: 85px !important;
+}
+
+.p-r-90 {
+  padding-right: 90px !important;
+}
+
+.p-r-95 {
+  padding-right: 95px !important;
+}
+
+.p-r-100 {
+  padding-right: 100px !important;
+}
+
+.p-r-105 {
+  padding-right: 105px !important;
+}
+
+.p-r-110 {
+  padding-right: 110px !important;
+}
+
+.p-r-115 {
+  padding-right: 115px !important;
+}
+
+.p-r-120 {
+  padding-right: 120px !important;
+}
+
+.p-r-125 {
+  padding-right: 125px !important;
+}
+
+.p-r-130 {
+  padding-right: 130px !important;
+}
+
+.p-r-135 {
+  padding-right: 135px !important;
+}
+
+.p-r-140 {
+  padding-right: 140px !important;
+}
+
+.p-r-145 {
+  padding-right: 145px !important;
+}
+
+.p-r-150 {
+  padding-right: 150px !important;
+}
+
+.p-b-0 {
+  padding-bottom: 0px !important;
+}
+
+.p-b-5 {
+  padding-bottom: 5px !important;
+}
+
+.p-b-10 {
+  padding-bottom: 10px !important;
+}
+
+.p-b-15 {
+  padding-bottom: 15px !important;
+}
+
+.p-b-20 {
+  padding-bottom: 20px !important;
+}
+
+.p-b-25 {
+  padding-bottom: 25px !important;
+}
+
+.p-b-30 {
+  padding-bottom: 30px !important;
+}
+
+.p-b-35 {
+  padding-bottom: 35px !important;
+}
+
+.p-b-40 {
+  padding-bottom: 40px !important;
+}
+
+.p-b-45 {
+  padding-bottom: 45px !important;
+}
+
+.p-b-50 {
+  padding-bottom: 50px !important;
+}
+
+.p-b-55 {
+  padding-bottom: 55px !important;
+}
+
+.p-b-60 {
+  padding-bottom: 60px !important;
+}
+
+.p-b-65 {
+  padding-bottom: 65px !important;
+}
+
+.p-b-70 {
+  padding-bottom: 70px !important;
+}
+
+.p-b-75 {
+  padding-bottom: 75px !important;
+}
+
+.p-b-80 {
+  padding-bottom: 80px !important;
+}
+
+.p-b-85 {
+  padding-bottom: 85px !important;
+}
+
+.p-b-90 {
+  padding-bottom: 90px !important;
+}
+
+.p-b-95 {
+  padding-bottom: 95px !important;
+}
+
+.p-b-100 {
+  padding-bottom: 100px !important;
+}
+
+.p-b-105 {
+  padding-bottom: 105px !important;
+}
+
+.p-b-110 {
+  padding-bottom: 110px !important;
+}
+
+.p-b-115 {
+  padding-bottom: 115px !important;
+}
+
+.p-b-120 {
+  padding-bottom: 120px !important;
+}
+
+.p-b-125 {
+  padding-bottom: 125px !important;
+}
+
+.p-b-130 {
+  padding-bottom: 130px !important;
+}
+
+.p-b-135 {
+  padding-bottom: 135px !important;
+}
+
+.p-b-140 {
+  padding-bottom: 140px !important;
+}
+
+.p-b-145 {
+  padding-bottom: 145px !important;
+}
+
+.p-b-150 {
+  padding-bottom: 150px !important;
+}
+
+.p-l-0 {
+  padding-left: 0px !important;
+}
+
+.p-l-5 {
+  padding-left: 5px !important;
+}
+
+.p-l-10 {
+  padding-left: 10px !important;
+}
+
+.p-l-15 {
+  padding-left: 15px !important;
+}
+
+.p-l-20 {
+  padding-left: 20px !important;
+}
+
+.p-l-25 {
+  padding-left: 25px !important;
+}
+
+.p-l-30 {
+  padding-left: 30px !important;
+}
+
+.p-l-35 {
+  padding-left: 35px !important;
+}
+
+.p-l-40 {
+  padding-left: 40px !important;
+}
+
+.p-l-45 {
+  padding-left: 45px !important;
+}
+
+.p-l-50 {
+  padding-left: 50px !important;
+}
+
+.p-l-55 {
+  padding-left: 55px !important;
+}
+
+.p-l-60 {
+  padding-left: 60px !important;
+}
+
+.p-l-65 {
+  padding-left: 65px !important;
+}
+
+.p-l-70 {
+  padding-left: 70px !important;
+}
+
+.p-l-75 {
+  padding-left: 75px !important;
+}
+
+.p-l-80 {
+  padding-left: 80px !important;
+}
+
+.p-l-85 {
+  padding-left: 85px !important;
+}
+
+.p-l-90 {
+  padding-left: 90px !important;
+}
+
+.p-l-95 {
+  padding-left: 95px !important;
+}
+
+.p-l-100 {
+  padding-left: 100px !important;
+}
+
+.p-l-105 {
+  padding-left: 105px !important;
+}
+
+.p-l-110 {
+  padding-left: 110px !important;
+}
+
+.p-l-115 {
+  padding-left: 115px !important;
+}
+
+.p-l-120 {
+  padding-left: 120px !important;
+}
+
+.p-l-125 {
+  padding-left: 125px !important;
+}
+
+.p-l-130 {
+  padding-left: 130px !important;
+}
+
+.p-l-135 {
+  padding-left: 135px !important;
+}
+
+.p-l-140 {
+  padding-left: 140px !important;
+}
+
+.p-l-145 {
+  padding-left: 145px !important;
+}
+
+.p-l-150 {
+  padding-left: 150px !important;
+}
+
+.opacity-0 {
+  opacity: 0 !important;
+}
+
+.opacity-1 {
+  opacity: 0.1 !important;
+}
+
+.opacity-2 {
+  opacity: 0.2 !important;
+}
+
+.opacity-3 {
+  opacity: 0.3 !important;
+}
+
+.opacity-4 {
+  opacity: 0.4 !important;
+}
+
+.opacity-5 {
+  opacity: 0.5 !important;
+}
+
+.opacity-6 {
+  opacity: 0.6 !important;
+}
+
+.opacity-7 {
+  opacity: 0.7 !important;
+}
+
+.opacity-8 {
+  opacity: 0.8 !important;
+}
+
+.opacity-9 {
+  opacity: 0.9 !important;
+}
+
+.font-size-10 {
+  font-size: 10px !important;
+}
+
+.font-size-11 {
+  font-size: 11px !important;
+}
+
+.font-size-12 {
+  font-size: 12px !important;
+}
+
+.font-size-13 {
+  font-size: 13px !important;
+}
+
+.font-size-14 {
+  font-size: 14px !important;
+}
+
+.font-size-15 {
+  font-size: 15px !important;
+}
+
+.font-size-16 {
+  font-size: 16px !important;
+}
+
+.font-size-17 {
+  font-size: 17px !important;
+}
+
+.font-size-18 {
+  font-size: 18px !important;
+}
+
+.font-size-19 {
+  font-size: 19px !important;
+}
+
+.font-size-20 {
+  font-size: 20px !important;
+}
+
+.font-size-21 {
+  font-size: 21px !important;
+}
+
+.font-size-22 {
+  font-size: 22px !important;
+}
+
+.font-size-23 {
+  font-size: 23px !important;
+}
+
+.font-size-24 {
+  font-size: 24px !important;
+}
+
+.font-size-25 {
+  font-size: 25px !important;
+}
+
+.font-size-26 {
+  font-size: 26px !important;
+}
+
+.font-size-27 {
+  font-size: 27px !important;
+}
+
+.font-size-28 {
+  font-size: 28px !important;
+}
+
+.font-size-29 {
+  font-size: 29px !important;
+}
+
+.font-size-30 {
+  font-size: 30px !important;
+}
+
+.font-size-31 {
+  font-size: 31px !important;
+}
+
+.font-size-32 {
+  font-size: 32px !important;
+}
+
+.font-size-33 {
+  font-size: 33px !important;
+}
+
+.font-size-34 {
+  font-size: 34px !important;
+}
+
+.font-size-35 {
+  font-size: 35px !important;
+}
+
+.font-size-36 {
+  font-size: 36px !important;
+}
+
+.font-size-37 {
+  font-size: 37px !important;
+}
+
+.font-size-38 {
+  font-size: 38px !important;
+}
+
+.font-size-39 {
+  font-size: 39px !important;
+}
+
+.font-size-40 {
+  font-size: 40px !important;
+}
+
+.font-size-41 {
+  font-size: 41px !important;
+}
+
+.font-size-42 {
+  font-size: 42px !important;
+}
+
+.font-size-43 {
+  font-size: 43px !important;
+}
+
+.font-size-44 {
+  font-size: 44px !important;
+}
+
+.font-size-45 {
+  font-size: 45px !important;
+}
+
+.font-size-46 {
+  font-size: 46px !important;
+}
+
+.font-size-47 {
+  font-size: 47px !important;
+}
+
+.font-size-48 {
+  font-size: 48px !important;
+}
+
+.font-size-49 {
+  font-size: 49px !important;
+}
+
+.font-size-50 {
+  font-size: 50px !important;
+}
+
+.line-height-0 {
+  line-height: 0px !important;
+}
+
+.line-height-1 {
+  line-height: 1px !important;
+}
+
+.line-height-2 {
+  line-height: 2px !important;
+}
+
+.line-height-3 {
+  line-height: 3px !important;
+}
+
+.line-height-4 {
+  line-height: 4px !important;
+}
+
+.line-height-5 {
+  line-height: 5px !important;
+}
+
+.line-height-6 {
+  line-height: 6px !important;
+}
+
+.line-height-7 {
+  line-height: 7px !important;
+}
+
+.line-height-8 {
+  line-height: 8px !important;
+}
+
+.line-height-9 {
+  line-height: 9px !important;
+}
+
+.line-height-10 {
+  line-height: 10px !important;
+}
+
+.line-height-11 {
+  line-height: 11px !important;
+}
+
+.line-height-12 {
+  line-height: 12px !important;
+}
+
+.line-height-13 {
+  line-height: 13px !important;
+}
+
+.line-height-14 {
+  line-height: 14px !important;
+}
+
+.line-height-15 {
+  line-height: 15px !important;
+}
+
+.line-height-16 {
+  line-height: 16px !important;
+}
+
+.line-height-17 {
+  line-height: 17px !important;
+}
+
+.line-height-18 {
+  line-height: 18px !important;
+}
+
+.line-height-19 {
+  line-height: 19px !important;
+}
+
+.line-height-20 {
+  line-height: 20px !important;
+}
+
+.line-height-21 {
+  line-height: 21px !important;
+}
+
+.line-height-22 {
+  line-height: 22px !important;
+}
+
+.line-height-23 {
+  line-height: 23px !important;
+}
+
+.line-height-24 {
+  line-height: 24px !important;
+}
+
+.line-height-25 {
+  line-height: 25px !important;
+}
+
+.line-height-26 {
+  line-height: 26px !important;
+}
+
+.line-height-27 {
+  line-height: 27px !important;
+}
+
+.line-height-28 {
+  line-height: 28px !important;
+}
+
+.line-height-29 {
+  line-height: 29px !important;
+}
+
+.line-height-30 {
+  line-height: 30px !important;
+}
+
+.line-height-31 {
+  line-height: 31px !important;
+}
+
+.line-height-32 {
+  line-height: 32px !important;
+}
+
+.line-height-33 {
+  line-height: 33px !important;
+}
+
+.line-height-34 {
+  line-height: 34px !important;
+}
+
+.line-height-35 {
+  line-height: 35px !important;
+}
+
+.line-height-36 {
+  line-height: 36px !important;
+}
+
+.line-height-37 {
+  line-height: 37px !important;
+}
+
+.line-height-38 {
+  line-height: 38px !important;
+}
+
+.line-height-39 {
+  line-height: 39px !important;
+}
+
+.line-height-40 {
+  line-height: 40px !important;
+}
+
+.line-height-41 {
+  line-height: 41px !important;
+}
+
+.line-height-42 {
+  line-height: 42px !important;
+}
+
+.line-height-43 {
+  line-height: 43px !important;
+}
+
+.line-height-44 {
+  line-height: 44px !important;
+}
+
+.line-height-45 {
+  line-height: 45px !important;
+}
+
+.line-height-46 {
+  line-height: 46px !important;
+}
+
+.line-height-47 {
+  line-height: 47px !important;
+}
+
+.line-height-48 {
+  line-height: 48px !important;
+}
+
+.line-height-49 {
+  line-height: 49px !important;
+}
+
+.line-height-50 {
+  line-height: 50px !important;
+}
+
+.width-10 {
+  width: 10px !important;
+}
+
+.width-11 {
+  width: 11px !important;
+}
+
+.width-12 {
+  width: 12px !important;
+}
+
+.width-13 {
+  width: 13px !important;
+}
+
+.width-14 {
+  width: 14px !important;
+}
+
+.width-15 {
+  width: 15px !important;
+}
+
+.width-16 {
+  width: 16px !important;
+}
+
+.width-17 {
+  width: 17px !important;
+}
+
+.width-18 {
+  width: 18px !important;
+}
+
+.width-19 {
+  width: 19px !important;
+}
+
+.width-20 {
+  width: 20px !important;
+}
+
+.width-21 {
+  width: 21px !important;
+}
+
+.width-22 {
+  width: 22px !important;
+}
+
+.width-23 {
+  width: 23px !important;
+}
+
+.width-24 {
+  width: 24px !important;
+}
+
+.width-25 {
+  width: 25px !important;
+}
+
+.width-26 {
+  width: 26px !important;
+}
+
+.width-27 {
+  width: 27px !important;
+}
+
+.width-28 {
+  width: 28px !important;
+}
+
+.width-29 {
+  width: 29px !important;
+}
+
+.width-30 {
+  width: 30px !important;
+}
+
+.width-31 {
+  width: 31px !important;
+}
+
+.width-32 {
+  width: 32px !important;
+}
+
+.width-33 {
+  width: 33px !important;
+}
+
+.width-34 {
+  width: 34px !important;
+}
+
+.width-35 {
+  width: 35px !important;
+}
+
+.width-36 {
+  width: 36px !important;
+}
+
+.width-37 {
+  width: 37px !important;
+}
+
+.width-38 {
+  width: 38px !important;
+}
+
+.width-39 {
+  width: 39px !important;
+}
+
+.width-40 {
+  width: 40px !important;
+}
+
+.width-41 {
+  width: 41px !important;
+}
+
+.width-42 {
+  width: 42px !important;
+}
+
+.width-43 {
+  width: 43px !important;
+}
+
+.width-44 {
+  width: 44px !important;
+}
+
+.width-45 {
+  width: 45px !important;
+}
+
+.width-46 {
+  width: 46px !important;
+}
+
+.width-47 {
+  width: 47px !important;
+}
+
+.width-48 {
+  width: 48px !important;
+}
+
+.width-49 {
+  width: 49px !important;
+}
+
+.width-50 {
+  width: 50px !important;
+}
+
+.height-10 {
+  height: 10px !important;
+}
+
+.height-11 {
+  height: 11px !important;
+}
+
+.height-12 {
+  height: 12px !important;
+}
+
+.height-13 {
+  height: 13px !important;
+}
+
+.height-14 {
+  height: 14px !important;
+}
+
+.height-15 {
+  height: 15px !important;
+}
+
+.height-16 {
+  height: 16px !important;
+}
+
+.height-17 {
+  height: 17px !important;
+}
+
+.height-18 {
+  height: 18px !important;
+}
+
+.height-19 {
+  height: 19px !important;
+}
+
+.height-20 {
+  height: 20px !important;
+}
+
+.height-21 {
+  height: 21px !important;
+}
+
+.height-22 {
+  height: 22px !important;
+}
+
+.height-23 {
+  height: 23px !important;
+}
+
+.height-24 {
+  height: 24px !important;
+}
+
+.height-25 {
+  height: 25px !important;
+}
+
+.height-26 {
+  height: 26px !important;
+}
+
+.height-27 {
+  height: 27px !important;
+}
+
+.height-28 {
+  height: 28px !important;
+}
+
+.height-29 {
+  height: 29px !important;
+}
+
+.height-30 {
+  height: 30px !important;
+}
+
+.height-31 {
+  height: 31px !important;
+}
+
+.height-32 {
+  height: 32px !important;
+}
+
+.height-33 {
+  height: 33px !important;
+}
+
+.height-34 {
+  height: 34px !important;
+}
+
+.height-35 {
+  height: 35px !important;
+}
+
+.height-36 {
+  height: 36px !important;
+}
+
+.height-37 {
+  height: 37px !important;
+}
+
+.height-38 {
+  height: 38px !important;
+}
+
+.height-39 {
+  height: 39px !important;
+}
+
+.height-40 {
+  height: 40px !important;
+}
+
+.height-41 {
+  height: 41px !important;
+}
+
+.height-42 {
+  height: 42px !important;
+}
+
+.height-43 {
+  height: 43px !important;
+}
+
+.height-44 {
+  height: 44px !important;
+}
+
+.height-45 {
+  height: 45px !important;
+}
+
+.height-46 {
+  height: 46px !important;
+}
+
+.height-47 {
+  height: 47px !important;
+}
+
+.height-48 {
+  height: 48px !important;
+}
+
+.height-49 {
+  height: 49px !important;
+}
+
+.height-50 {
+  height: 50px !important;
+}
+
+.h-100-vh {
+  height: 100vh;
+}
+
+body {
+  font-family: "Inter", sans-serif;
+  position: relative;
+  background-color: #f8fafb;
+  font-size: 15px;
+  color: #505050;
+}
+
+body.no-scroll {
+  overflow: hidden;
+}
+
+* {
+  min-width: 0;
+  min-height: 0;
+}
+
+.preloader {
+  position: fixed;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  z-index: 1001;
+  background: white;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  /* Safari */
+}
+
+.preloader .preloader-icon {
+  border: 5px solid #eeeeee;
+  border-radius: 50%;
+  border-top: 5px solid #3498db;
+  width: 50px;
+  height: 50px;
+  -webkit-animation: spin 0.5s linear infinite;
+          animation: spin 0.5s linear infinite;
+}
+
+@-webkit-keyframes spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+  }
+
+  100% {
+    -webkit-transform: rotate(360deg);
+  }
+}
+
+@keyframes spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+            transform: rotate(0deg);
+  }
+
+  100% {
+    -webkit-transform: rotate(360deg);
+            transform: rotate(360deg);
+  }
+}
+
+.preloader svg path {
+  fill: #0081ff;
+}
+
+.icon-block {
+  width: 40px;
+  height: 40px;
+  line-height: 40px;
+  display: -webkit-inline-box;
+  display: inline-flex;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  background: #e1e1e1;
+  border-radius: 3px;
+  text-align: center;
+  color: black;
+  font-size: 18px;
+}
+
+.icon-block.icon-block-outline-white {
+  border: 2px solid white;
+  background: none;
+  color: white !important;
+}
+
+.icon-block.icon-block-outline-primary {
+  border: 2px solid #0081ff;
+  color: #0081ff !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-success {
+  border: 2px solid #28c76f;
+  color: #28c76f !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-danger {
+  border: 2px solid #ea5455;
+  color: #ea5455 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-info {
+  border: 2px solid #33b5e5;
+  color: #33b5e5 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-warning {
+  border: 2px solid #ff9f43;
+  color: #ff9f43 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-dark {
+  border: 2px solid #293134;
+  color: #293134 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-secondary {
+  border: 2px solid #aa66cc;
+  color: #aa66cc !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-facebook {
+  border: 2px solid #3b5998;
+  color: #3b5998 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-twitter {
+  border: 2px solid #55acee;
+  color: #55acee !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-linkedin {
+  border: 2px solid #0077b5;
+  color: #0077b5 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-whatsapp {
+  border: 2px solid #43d854;
+  color: #43d854 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-instagram {
+  border: 2px solid #3f729b;
+  color: #3f729b !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-dribbble {
+  border: 2px solid #ea4c89;
+  color: #ea4c89 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-google {
+  border: 2px solid #db4437;
+  color: #db4437 !important;
+  background: none;
+}
+
+.icon-block.icon-block-outline-youtube {
+  border: 2px solid #cd201f;
+  color: #cd201f !important;
+  background: none;
+}
+
+.icon-block.icon-block-xl {
+  width: 70px;
+  height: 70px;
+  line-height: 70px;
+  font-size: 28px;
+}
+
+.icon-block.icon-block-lg {
+  width: 50px;
+  height: 50px;
+  line-height: 50px;
+  font-size: 22px;
+}
+
+.icon-block.icon-block-sm {
+  width: 30px;
+  height: 30px;
+  line-height: 30px;
+  font-size: 14px;
+}
+
+.icon-block.icon-block-xs {
+  width: 20px;
+  height: 20px;
+  line-height: 20px;
+  font-size: 12px;
+}
+
+.icon-block.icon-block-floating {
+  border-radius: 50%;
+}
+
+body.error-page img {
+  width: 50%;
+  display: table;
+  margin: 50px auto;
+}
+
+body.error-page .display-1 {
+  font-size: 10em;
+}
+
+.error-page {
+  text-align: center;
+  height: calc(100vh - 120px);
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.error-page .error-page-item {
+  font-size: 14rem;
+  line-height: 14rem;
+  margin-left: -2rem;
+  text-shadow: -5px 1px 0px white;
+}
+
+.error-page .error-page-item:nth-child(2) {
+  -webkit-transform: translate(0, 10px);
+          transform: translate(0, 10px);
+  display: inline-block;
+}
+
+.form-control,
+.swal-modal input.swal-content__input,
+.custom-select {
+  font-size: 0.875rem;
+  border-color: #e1e1e1;
+  border-radius: 0.5rem;
+}
+
+.form-control:focus,
+.swal-modal input.swal-content__input:focus,
+.custom-select:focus {
+  box-shadow: none;
+  border-color: rgba(0, 129, 255, 0.8);
+}
+
+.form-control:not(.form-control-lg):not(.form-control-sm),
+.swal-modal input.swal-content__input:not(.form-control-lg):not(.form-control-sm) {
+  height: calc(1.5em + .75rem + 3px);
+}
+
+.form-rounded {
+  border-radius: 50px;
+}
+
+.form-control-lg {
+  font-size: 1.1rem;
+}
+
+.form-control-sm {
+  font-size: 0.8rem;
+}
+
+.input-group-text {
+  border: none;
+}
+
+textarea {
+  min-height: 100px;
+  max-height: 500px;
+}
+
+.custom-file-input:focus ~ .custom-file-label {
+  border-color: #339aff;
+  box-shadow: none;
+}
+
+.custom-control-input {
+  right: 0;
+}
+
+.custom-control-label {
+  line-height: 25px;
+}
+
+/* Checkboxes and Radios */
+
+.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #0081ff;
+  background-color: #0081ff;
+}
+
+.custom-checkbox .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.3);
+}
+
+.custom-checkbox .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #5caeff;
+  background-color: #5caeff;
+}
+
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #aa66cc;
+  background-color: #aa66cc;
+}
+
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-secondary .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #d0abe3;
+  background-color: #d0abe3;
+}
+
+.custom-checkbox.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-secondary .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-success .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #28c76f;
+  background-color: #28c76f;
+}
+
+.custom-checkbox.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-success .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #6ae19f;
+  background-color: #6ae19f;
+}
+
+.custom-checkbox.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-success .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-danger .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #ea5455;
+  background-color: #ea5455;
+}
+
+.custom-checkbox.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-danger .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #f4a6a6;
+  background-color: #f4a6a6;
+}
+
+.custom-checkbox.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-danger .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-warning .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #ff9f43;
+  background-color: #ff9f43;
+}
+
+.custom-checkbox.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-warning .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #ffce9f;
+  background-color: #ffce9f;
+}
+
+.custom-checkbox.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-warning .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-info .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #33b5e5;
+  background-color: #33b5e5;
+}
+
+.custom-checkbox.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-info .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #84d3ef;
+  background-color: #84d3ef;
+}
+
+.custom-checkbox.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-info .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.3);
+}
+
+.custom-checkbox.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-dark .custom-control-input:checked ~ .custom-control-label::before {
+  border-color: #293134;
+  background-color: #293134;
+}
+
+.custom-checkbox.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-dark .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+  border-color: #516167;
+  background-color: #516167;
+}
+
+.custom-checkbox.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before,
+.custom-radio.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before,
+.custom-switch.custom-checkbox-dark .custom-control-input:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.3);
+}
+
+.custom-checkbox.custom-range-danger::before {
+  background-color: #ea5455;
+}
+
+.custom-checkbox.custom-range-danger::-webkit-slider-thumb:active {
+  background-color: #f4a6a6;
+}
+
+.custom-range::-webkit-slider-thumb {
+  background-color: #0081ff;
+}
+
+.custom-range::-webkit-slider-thumb:active {
+  background-color: #5caeff;
+}
+
+.custom-range.custom-range-danger::-webkit-slider-thumb {
+  background-color: #ea5455;
+}
+
+.custom-range.custom-range-danger::-webkit-slider-thumb:active {
+  background-color: #f4a6a6;
+}
+
+.custom-range.custom-range-warning::-webkit-slider-thumb {
+  background-color: #ff9f43;
+}
+
+.custom-range.custom-range-warning::-webkit-slider-thumb:active {
+  background-color: #ffce9f;
+}
+
+.custom-range.custom-range-success::-webkit-slider-thumb {
+  background-color: #28c76f;
+}
+
+.custom-range.custom-range-success::-webkit-slider-thumb:active {
+  background-color: #6ae19f;
+}
+
+.custom-range.custom-range-secondary::-webkit-slider-thumb {
+  background-color: #aa66cc;
+}
+
+.custom-range.custom-range-secondary::-webkit-slider-thumb:active {
+  background-color: #d0abe3;
+}
+
+.custom-range.custom-range-info::-webkit-slider-thumb {
+  background-color: #33b5e5;
+}
+
+.custom-range.custom-range-info::-webkit-slider-thumb:active {
+  background-color: #84d3ef;
+}
+
+.custom-range.custom-range-light::-webkit-slider-thumb {
+  background-color: #afb8bd;
+}
+
+.custom-range.custom-range-light::-webkit-slider-thumb:active {
+  background-color: #e1e5e6;
+}
+
+.custom-range.custom-range-dark::-webkit-slider-thumb {
+  background-color: #293134;
+}
+
+.custom-range.custom-range-dark::-webkit-slider-thumb:active {
+  background-color: #516167;
+}
+
+.wizard > .content {
+  min-height: auto;
+  margin: 0;
+  margin-bottom: 15px;
+  background: none;
+  padding: 0 !important;
+}
+
+.wizard .wizard-index {
+  background-color: rgba(0, 0, 0, 0.4);
+  height: 30px;
+  width: 30px;
+  border-radius: 50%;
+  display: -webkit-inline-box;
+  display: inline-flex;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  color: #fff;
+  margin-right: 0.5rem;
+}
+
+.wizard .current .wizard-index {
+  background-color: rgba(255, 255, 255, 0.2);
+}
+
+.wizard > .actions > ul > li {
+  margin: 0;
+  margin-left: 10px;
+}
+
+.wizard > .content > .body {
+  float: none;
+  position: static;
+  width: auto;
+  height: auto;
+}
+
+.wizard > .steps {
+  margin-bottom: 1.5rem;
+}
+
+.wizard > .steps a,
+.wizard > .steps .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps button.btn,
+.wizard > .steps a:hover,
+.wizard > .steps a:active {
+  margin: 0;
+  margin-right: 10px;
+}
+
+.wizard > .steps .current a,
+.wizard > .steps .current .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps .current button.btn,
+.wizard > .steps .current a:hover,
+.wizard > .steps .current a:active {
+  background: #0081ff;
+}
+
+.wizard > .steps .error a,
+.wizard > .steps .error .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps .error button.btn,
+.wizard > .steps .error a:hover,
+.wizard > .steps .error a:active {
+  background: #ea5455;
+}
+
+.wizard > .steps .done a,
+.wizard > .steps .done .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .steps .done button.btn,
+.wizard > .steps .done a:hover,
+.wizard > .steps .done a:active {
+  background-color: #28c76f;
+  color: white;
+}
+
+.wizard > .actions a,
+.wizard > .actions .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .wizard > .actions button.btn,
+.wizard > .actions a:hover,
+.wizard > .actions a:active {
+  background-color: #28c76f;
+  color: white;
+}
+
+.page-header {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: start;
+          align-items: flex-start;
+  height: 55px;
+}
+
+.page-header h1,
+.page-header h2,
+.page-header h3,
+.page-header h4,
+.page-header h5 {
+  margin: 0;
+}
+
+.page-header .breadcrumb {
+  background: none;
+  padding: 0;
+  margin: 0;
+}
+
+.page-header .breadcrumb a:hover,
+.page-header .breadcrumb .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .page-header .breadcrumb button.btn:hover {
+  text-decoration: underline;
+}
+
+.page-header .breadcrumb li.breadcrumb-item {
+  font-size: 14px !important;
+}
+
+.page-header .breadcrumb li.breadcrumb-item:first-child:before {
+  font-size: 12px;
+  font-family: themify;
+  content: "\E69B";
+  display: inline-block;
+  margin-right: 8px;
+}
+
+.page-header .breadcrumb li.breadcrumb-item + .breadcrumb-item::before {
+  font-size: 10px;
+}
+
+.page-header .breadcrumb li.breadcrumb-item.active {
+  color: #0081ff;
+  font-weight: 600;
+}
+
+.mfp-with-zoom .mfp-container,
+.mfp-with-zoom.mfp-bg {
+  opacity: 0;
+  -webkit-backface-visibility: hidden;
+  /* ideally, transition speed should match zoom duration */
+  -webkit-transition: all 0.3s ease-out;
+  transition: all 0.3s ease-out;
+}
+
+.mfp-with-zoom.mfp-ready .mfp-container {
+  opacity: 1;
+}
+
+.mfp-with-zoom.mfp-ready.mfp-bg {
+  opacity: 0.8;
+}
+
+.mfp-with-zoom.mfp-removing .mfp-container,
+.mfp-with-zoom.mfp-removing.mfp-bg {
+  opacity: 0;
+}
+
+.card,
+.app-block .app-content .app-action,
+.chat-block {
+  margin-bottom: 1.875rem;
+  position: relative;
+  background-color: white;
+  border-radius: 0.5rem;
+  border: none;
+  box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+}
+
+.card.bg-primary .card-header,
+.app-block .app-content .bg-primary.app-action .card-header,
+.bg-primary.chat-block .card-header,
+.card.bg-secondary .card-header,
+.app-block .app-content .bg-secondary.app-action .card-header,
+.bg-secondary.chat-block .card-header,
+.card.bg-success .card-header,
+.app-block .app-content .bg-success.app-action .card-header,
+.bg-success.chat-block .card-header,
+.card.bg-danger .card-header,
+.app-block .app-content .bg-danger.app-action .card-header,
+.bg-danger.chat-block .card-header,
+.card.bg-warning .card-header,
+.app-block .app-content .bg-warning.app-action .card-header,
+.bg-warning.chat-block .card-header,
+.card.bg-info .card-header,
+.app-block .app-content .bg-info.app-action .card-header,
+.bg-info.chat-block .card-header,
+.card.bg-dark .card-header,
+.app-block .app-content .bg-dark.app-action .card-header,
+.bg-dark.chat-block .card-header {
+  border-bottom: 1px solid rgba(235, 235, 235, 0.4);
+}
+
+.card .card-header,
+.app-block .app-content .app-action .card-header,
+.chat-block .card-header,
+.card .card-footer,
+.app-block .app-content .app-action .card-footer,
+.chat-block .card-footer {
+  border: none;
+  background: none;
+  font-size: 13px;
+  font-weight: 600;
+  padding: 10px 20px;
+}
+
+.card .card-header,
+.app-block .app-content .app-action .card-header,
+.chat-block .card-header {
+  margin-bottom: 0;
+  border-bottom: 1px solid #ebebeb;
+}
+
+.card .card-footer,
+.app-block .app-content .app-action .card-footer,
+.chat-block .card-footer {
+  border-top: 1px solid #ebebeb;
+}
+
+.card .card-body,
+.app-block .app-content .app-action .card-body,
+.chat-block .card-body {
+  padding: 1.5rem;
+}
+
+.card .card-body h1.card-title,
+.app-block .app-content .app-action .card-body h1.card-title,
+.chat-block .card-body h1.card-title,
+.card .card-body h2.card-title,
+.app-block .app-content .app-action .card-body h2.card-title,
+.chat-block .card-body h2.card-title,
+.card .card-body h3.card-title,
+.app-block .app-content .app-action .card-body h3.card-title,
+.chat-block .card-body h3.card-title,
+.card .card-body h4.card-title,
+.app-block .app-content .app-action .card-body h4.card-title,
+.chat-block .card-body h4.card-title,
+.card .card-body h5.card-title,
+.app-block .app-content .app-action .card-body h5.card-title,
+.chat-block .card-body h5.card-title,
+.card .card-body h6.card-title,
+.app-block .app-content .app-action .card-body h6.card-title,
+.chat-block .card-body h6.card-title {
+  margin-bottom: 2rem;
+  font-size: 1rem;
+  font-weight: 600;
+}
+
+.card .card-body h1.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h1.card-title .dropdown *,
+.chat-block .card-body h1.card-title .dropdown *,
+.card .card-body h2.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h2.card-title .dropdown *,
+.chat-block .card-body h2.card-title .dropdown *,
+.card .card-body h3.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h3.card-title .dropdown *,
+.chat-block .card-body h3.card-title .dropdown *,
+.card .card-body h4.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h4.card-title .dropdown *,
+.chat-block .card-body h4.card-title .dropdown *,
+.card .card-body h5.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h5.card-title .dropdown *,
+.chat-block .card-body h5.card-title .dropdown *,
+.card .card-body h6.card-title .dropdown *,
+.app-block .app-content .app-action .card-body h6.card-title .dropdown *,
+.chat-block .card-body h6.card-title .dropdown * {
+  letter-spacing: normal;
+  text-transform: none;
+}
+
+.card .card-scroll,
+.app-block .app-content .app-action .card-scroll,
+.chat-block .card-scroll {
+  height: 300px;
+  overflow: auto;
+}
+
+.card.purple,
+.app-block .app-content .purple.app-action,
+.purple.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #8a8ded, #9c9dc6);
+}
+
+.card.blue,
+.app-block .app-content .blue.app-action,
+.blue.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #6bc5e7, #bcd7ff);
+}
+
+.card.green,
+.app-block .app-content .green.app-action,
+.green.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #77df75, #b5e7a0);
+}
+
+.card.orange,
+.app-block .app-content .orange.app-action,
+.orange.chat-block {
+  height: 120px;
+  background: linear-gradient(200deg, #ffc033, #ffc49d);
+}
+
+.card > .table-responsive .table td,
+.app-block .app-content .app-action > .table-responsive .table td,
+.chat-block > .table-responsive .table td,
+.card > .table-responsive .table th,
+.app-block .app-content .app-action > .table-responsive .table th,
+.chat-block > .table-responsive .table th {
+  padding: 0.75rem 1.5rem;
+}
+
+.card-group,
+.card-columns {
+  margin-bottom: 30px;
+}
+
+.bg-primary {
+  background: #0081ff !important;
+  color: white !important;
+}
+
+.bg-primary-bright {
+  background: rgba(0, 129, 255, 0.3) !important;
+}
+
+.bg-primary-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-primary-bright.bg-hover:hover {
+  background: rgba(11, 91, 182, 0.3) !important;
+}
+
+.bg-primary-gradient {
+  background: linear-gradient(230deg, #0081ff, #4da7ff) !important;
+  color: white !important;
+}
+
+.bg-info {
+  background: #33b5e5 !important;
+  color: white !important;
+}
+
+.bg-info.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-info.bg-hover:hover {
+  background: #60c5eb !important;
+}
+
+.bg-info-bright {
+  background: rgba(51, 181, 229, 0.3) !important;
+}
+
+.bg-info-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-info-bright.bg-hover:hover {
+  background: rgba(29, 173, 226, 0.3) !important;
+}
+
+.bg-info-gradient {
+  background: linear-gradient(230deg, #33b5e5, #77ceee) !important;
+  color: white !important;
+}
+
+.bg-secondary {
+  background: #aa66cc !important;
+  color: white !important;
+}
+
+.bg-secondary.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-secondary.bg-hover:hover {
+  background: #bf8cd9 !important;
+}
+
+.bg-secondary-bright {
+  background: rgba(170, 102, 204, 0.3) !important;
+}
+
+.bg-secondary-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-secondary-bright.bg-hover:hover {
+  background: rgba(159, 83, 198, 0.3) !important;
+}
+
+.bg-secondary-gradient {
+  background: linear-gradient(230deg, #aa66cc, #ca9fdf) !important;
+  color: white !important;
+}
+
+.bg-success {
+  background: #28c76f !important;
+  color: white !important;
+}
+
+.bg-success.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-success.bg-hover:hover {
+  background: #48da89 !important;
+}
+
+.bg-success-bright {
+  background: rgba(40, 199, 111, 0.3) !important;
+}
+
+.bg-success-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-success-bright.bg-hover:hover {
+  background: rgba(36, 178, 99, 0.3) !important;
+}
+
+.bg-success-gradient {
+  background: linear-gradient(230deg, #28c76f, #5dde97) !important;
+  color: white !important;
+}
+
+.bg-danger {
+  background: #ea5455 !important;
+  color: white !important;
+}
+
+.bg-danger.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-danger.bg-hover:hover {
+  background: #f08182 !important;
+}
+
+.bg-danger-bright {
+  background: rgba(234, 84, 85, 0.3) !important;
+}
+
+.bg-danger-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-danger-bright.bg-hover:hover {
+  background: rgba(231, 61, 62, 0.3) !important;
+}
+
+.bg-danger-gradient {
+  background: linear-gradient(230deg, #ea5455, #f29899) !important;
+  color: white !important;
+}
+
+.bg-warning {
+  background: #ff9f43 !important;
+  color: white !important;
+}
+
+.bg-warning.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-warning.bg-hover:hover {
+  background: #ffb976 !important;
+}
+
+.bg-warning-bright {
+  background: rgba(255, 159, 67, 0.3) !important;
+}
+
+.bg-warning-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-warning-bright.bg-hover:hover {
+  background: rgba(255, 146, 42, 0.3) !important;
+}
+
+.bg-warning-gradient {
+  background: linear-gradient(230deg, #ff9f43, #ffc690) !important;
+  color: white !important;
+}
+
+.bg-light {
+  background: #afb8bd !important;
+}
+
+.bg-dark {
+  background: #293134 !important;
+  color: white !important;
+}
+
+.bg-dark.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-dark.bg-hover:hover {
+  background: #3f4c51 !important;
+}
+
+.bg-dark-bright {
+  background: #d4d5d8 !important;
+}
+
+.bg-dark-bright.bg-hover {
+  -webkit-transition: background 0.2s;
+  transition: background 0.2s;
+}
+
+.bg-dark-bright.bg-hover:hover {
+  background: #c7c8cc !important;
+}
+
+.bg-dark-gradient {
+  background: linear-gradient(230deg, #293134, #4b595f) !important;
+  color: white !important;
+}
+
+.bg-facebook {
+  background: #3b5998 !important;
+  color: white !important;
+}
+
+.bg-twitter {
+  background: #55acee !important;
+  color: white !important;
+}
+
+.bg-linkedin {
+  background: #0077b5 !important;
+  color: white !important;
+}
+
+.bg-whatsapp {
+  background: #43d854 !important;
+  color: white !important;
+}
+
+.bg-instagram {
+  background: #3f729b !important;
+  color: white !important;
+}
+
+.bg-dribbble {
+  background: #ea4c89 !important;
+  color: white !important;
+}
+
+.bg-google {
+  background: #db4437 !important;
+  color: white !important;
+}
+
+.bg-youtube {
+  background: #cd201f !important;
+  color: white !important;
+}
+
+.text-primary {
+  color: #0081ff !important;
+}
+
+.text-secondary {
+  color: #aa66cc !important;
+}
+
+.text-info {
+  color: #33b5e5 !important;
+}
+
+.text-success,
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active.task-list .app-list-title {
+  color: #28c76f !important;
+}
+
+.text-danger {
+  color: #ea5455 !important;
+}
+
+.text-warning {
+  color: #ff9f43 !important;
+}
+
+.text-light {
+  color: #afb8bd !important;
+}
+
+.text-facebook {
+  color: #3b5998 !important;
+}
+
+.text-twitter {
+  color: #55acee !important;
+}
+
+.text-google {
+  color: #db4437 !important;
+}
+
+.text-linkedin {
+  color: #0077b5 !important;
+}
+
+.text-instagram {
+  color: #3f729b !important;
+}
+
+.text-whatsapp {
+  color: #43d854 !important;
+}
+
+.text-dribbble {
+  color: #ea4c89 !important;
+}
+
+.colorpicker.dropdown-menu {
+  visibility: visible;
+  opacity: 1;
+  height: auto;
+}
+
+.colorpicker-2x .colorpicker-saturation {
+  width: 200px;
+  height: 200px;
+}
+
+.colorpicker-2x .colorpicker-hue,
+.colorpicker-2x .colorpicker-alpha {
+  width: 30px;
+  height: 200px;
+}
+
+.colorpicker-2x .colorpicker-color,
+.colorpicker-2x .colorpicker-color div {
+  height: 30px;
+}
+
+.colorpicker.colorpicker-hidden {
+  display: none !important;
+}
+
+ul:not(.list-unstyled) {
+  margin: 0;
+  padding: 0;
+}
+
+ul:not(.list-unstyled) li {
+  list-style-type: none;
+}
+
+ul:not(.list-unstyled) li a .icon,
+ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn .icon,
+.header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn .icon {
+  color: #d1d1d1;
+  font-size: 14px;
+  vertical-align: middle;
+}
+
+ul:not(.list-unstyled) li a:hover,
+ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn:hover,
+ul:not(.list-unstyled) li a:focus,
+ul:not(.list-unstyled) li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append ul:not(.list-unstyled) li button.btn:focus {
+  text-decoration: underline;
+}
+
+ul li a:hover,
+ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append ul li button.btn:hover,
+ul li a:focus,
+ul li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append ul li button.btn:focus {
+  text-decoration: none !important;
+}
+
+ul.list-unstyled li {
+  margin-bottom: 10px;
+}
+
+ul.list-unstyled li ul {
+  margin-left: 30px !important;
+  margin-top: 10px !important;
+  margin-bottom: 10px !important;
+}
+
+ul.list-unstyled li ul li {
+  list-style-type: disc !important;
+}
+
+ul.links a,
+ul.links .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append ul.links button.btn {
+  display: block;
+  padding: 3px 5px;
+  color: #2e2e2e;
+}
+
+ul.links a.active,
+ul.links .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append ul.links button.active.btn {
+  color: #0081ff;
+  font-weight: 500;
+}
+
+.list-group.list-group-sm .list-group-item {
+  padding: 0.4rem 1rem;
+}
+
+.text-uppercase {
+  letter-spacing: 0.5px;
+}
+
+.bg-none {
+  background-color: inherit !important;
+}
+
+h1 {
+  font-size: 29px;
+}
+
+h2 {
+  font-size: 26px;
+}
+
+h3 {
+  font-size: 23px;
+}
+
+h4 {
+  font-size: 20px;
+}
+
+h5 {
+  font-size: 17px;
+}
+
+h6 {
+  font-size: 14px;
+}
+
+ul.list-inline li {
+  margin-bottom: 0.5rem;
+}
+
+hr {
+  border-color: #e6e6e6;
+}
+
+.right-0 {
+  right: 0;
+}
+
+.left-0 {
+  left: 0;
+}
+
+.top-0 {
+  top: 0;
+}
+
+.bottom-0 {
+  bottom: 0;
+}
+
+.cursor-pointer {
+  cursor: pointer;
+}
+
+p {
+  line-height: 1.5rem;
+}
+
+a,
+.header form .input-group .input-group-append button.btn {
+  color: #666666;
+  text-decoration: none;
+  -webkit-transition: color 0.2s;
+  transition: color 0.2s;
+}
+
+a:hover,
+.header form .input-group .input-group-append button.btn:hover {
+  color: black;
+  text-decoration: none;
+}
+
+a.link-1,
+.header form .input-group .input-group-append button.link-1.btn {
+  color: #0081ff;
+}
+
+a.link-1:hover,
+.header form .input-group .input-group-append button.link-1.btn:hover,
+a.link-1:focus,
+.header form .input-group .input-group-append button.link-1.btn:focus {
+  color: rgba(0, 129, 255, 0.8);
+}
+
+a.link-2,
+.header form .input-group .input-group-append button.link-2.btn {
+  color: black;
+}
+
+a.link-2:hover,
+.header form .input-group .input-group-append button.link-2.btn:hover,
+a.link-2:focus,
+.header form .input-group .input-group-append button.link-2.btn:focus {
+  color: #0081ff;
+}
+
+a.link-3,
+.header form .input-group .input-group-append button.link-3.btn {
+  color: white;
+}
+
+a.link-3:hover,
+.header form .input-group .input-group-append button.link-3.btn:hover,
+a.link-3:focus,
+.header form .input-group .input-group-append button.link-3.btn:focus {
+  color: #0081ff;
+}
+
+a:not(.active.list-group-item),
+.header form .input-group .input-group-append button.btn:not(.active.list-group-item),
+a:not(.btn):hover,
+.header form .input-group .input-group-append button.btn:not(.btn):hover,
+a:not(.btn):active,
+.header form .input-group .input-group-append button.btn:not(.btn):active,
+a:not(.btn):focus,
+.header form .input-group .input-group-append button.btn:not(.btn):focus {
+  text-decoration: none !important;
+  color: black;
+  outline: none;
+}
+
+a.btn:hover,
+.header form .input-group .input-group-append button.btn:hover,
+a.btn:active,
+.header form .input-group .input-group-append button.btn:active,
+a.btn:focus,
+.header form .input-group .input-group-append button.btn:focus {
+  text-decoration: none !important;
+}
+
+.page-link {
+  color: #0081ff;
+}
+
+.page-link:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.3);
+}
+
+.btn {
+  font-size: 14px;
+  width: auto;
+  display: -webkit-inline-box;
+  display: inline-flex;
+  font-weight: 600;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 10px 15px;
+  line-height: 14px;
+  border-radius: 0.5rem;
+}
+
+.btn svg {
+  width: 14px !important;
+  height: 14px !important;
+}
+
+.btn[data-toggle=dropdown] {
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.btn.btn-sm {
+  padding: 5px 10px;
+  font-size: 13px;
+}
+
+.btn.btn-lg {
+  padding: 15px 20px;
+  font-size: 17px;
+}
+
+.btn.btn-block {
+  width: 100%;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.btn.btn-square {
+  border-radius: 0;
+}
+
+.btn.btn-rounded {
+  border-radius: 50px;
+  padding: 10px 20px;
+}
+
+.btn.btn-rounded.btn-sm {
+  padding: 5px 15px;
+  font-size: 13px;
+}
+
+.btn.btn-rounded.btn-lg {
+  padding: 20px 30px;
+  font-size: 17px;
+}
+
+.btn.btn-floating {
+  height: 35px;
+  width: 35px;
+  padding: 0;
+  -webkit-box-pack: center;
+          justify-content: center;
+  border-radius: 50%;
+}
+
+.btn.btn-floating.btn-sm {
+  height: 30px;
+  width: 30px;
+}
+
+.btn.btn-floating.btn-lg {
+  height: 50px;
+  width: 50px;
+}
+
+.btn.btn-uppercase {
+  text-transform: uppercase;
+  font-size: 12px;
+  letter-spacing: 1px;
+  -webkit-box-align: center;
+          align-items: center;
+  font-weight: 600;
+}
+
+.btn.btn-uppercase.btn-sm {
+  font-size: 11px;
+}
+
+.btn.btn-uppercase.btn-lg {
+  font-size: 14px;
+}
+
+.btn.btn-shadow {
+  box-shadow: 0px 3px 4px 1px rgba(0, 0, 0, 0.3);
+}
+
+.btn.btn-shadow:focus,
+.btn.btn-shadow:active {
+  box-shadow: 0px 4px 6px 1px rgba(0, 0, 0, 0.3) !important;
+}
+
+.btn.btn-primary,
+a.btn[href="#next"],
+.header form .input-group .input-group-append button.btn[href="#next"],
+a.btn[href="#previous"],
+.header form .input-group .input-group-append button.btn[href="#previous"] {
+  background: #0081ff;
+  border-color: #0081ff;
+}
+
+.btn.btn-primary:not(:disabled):not(.disabled):hover,
+a.btn[href="#next"]:not(:disabled):not(.disabled):hover,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):hover,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):hover,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):hover,
+.btn.btn-primary:not(:disabled):not(.disabled):focus,
+a.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):focus,
+.btn.btn-primary:not(:disabled):not(.disabled):active,
+a.btn[href="#next"]:not(:disabled):not(.disabled):active,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):active,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):active,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):active {
+  background: #0067cc;
+  border-color: #0067cc;
+}
+
+.btn.btn-primary:not(:disabled):not(.disabled):focus,
+a.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#next"]:not(:disabled):not(.disabled):focus,
+a.btn[href="#previous"]:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append button.btn[href="#previous"]:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.4) !important;
+}
+
+.btn.btn-primary.btn-pulse:not(:disabled):not(.disabled),
+a.btn.btn-pulse[href="#next"]:not(:disabled):not(.disabled),
+.header form .input-group .input-group-append button.btn.btn-pulse[href="#next"]:not(:disabled):not(.disabled),
+a.btn.btn-pulse[href="#previous"]:not(:disabled):not(.disabled),
+.header form .input-group .input-group-append button.btn.btn-pulse[href="#previous"]:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-primary:hover,
+a.btn[href="#next"]:hover,
+.header form .input-group .input-group-append button.btn[href="#next"]:hover,
+a.btn[href="#previous"]:hover,
+.header form .input-group .input-group-append button.btn[href="#previous"]:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-primary {
+  background: linear-gradient(20deg, #4da7ff, #0067cc);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #0081ff, #0067cc);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.5);
+}
+
+.btn.btn-gradient-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-primary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-primary {
+  background: rgba(0, 129, 255, 0.3);
+  border-color: transparent;
+  color: #0053a3;
+}
+
+.btn.btn-light-primary:not(:disabled):not(.disabled):hover,
+.btn.btn-light-primary:not(:disabled):not(.disabled):focus,
+.btn.btn-light-primary:not(:disabled):not(.disabled):active {
+  background: rgba(0, 129, 255, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.2);
+}
+
+.btn.btn-light-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-primary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-primary {
+  background: none;
+  border-color: #0081ff;
+  color: #0074e6;
+  border-width: 1px;
+}
+
+.btn.btn-outline-primary:not(:disabled):not(.disabled):hover {
+  background: #0081ff;
+  border-color: #0081ff;
+  color: white;
+}
+
+.btn.btn-outline-primary:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-primary:not(:disabled):not(.disabled):active {
+  background: #0062c2;
+  border-color: #0062c2;
+  color: white;
+}
+
+.btn.btn-outline-primary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 129, 255, 0.4);
+}
+
+.btn.btn-outline-primary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 129, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-primary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-secondary {
+  background: #aa66cc;
+  border-color: #aa66cc;
+}
+
+.btn.btn-secondary:not(:disabled):not(.disabled):hover,
+.btn.btn-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-secondary:not(:disabled):not(.disabled):active {
+  background: #9540bf;
+  border-color: #9540bf;
+}
+
+.btn.btn-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.4) !important;
+}
+
+.btn.btn-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-secondary {
+  background: linear-gradient(20deg, #ca9fdf, #9540bf);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #aa66cc, #9540bf);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.5);
+}
+
+.btn.btn-gradient-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-secondary {
+  background: rgba(170, 102, 204, 0.3);
+  border-color: transparent;
+  color: #7d36a1;
+}
+
+.btn.btn-light-secondary:not(:disabled):not(.disabled):hover,
+.btn.btn-light-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-light-secondary:not(:disabled):not(.disabled):active {
+  background: rgba(170, 102, 204, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.2);
+}
+
+.btn.btn-light-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-secondary {
+  background: none;
+  border-color: #aa66cc;
+  color: #9f53c6;
+  border-width: 1px;
+}
+
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):hover {
+  background: #aa66cc;
+  border-color: #aa66cc;
+  color: white;
+}
+
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):active {
+  background: #8f3db8;
+  border-color: #8f3db8;
+  color: white;
+}
+
+.btn.btn-outline-secondary:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(170, 102, 204, 0.4);
+}
+
+.btn.btn-outline-secondary.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(170, 102, 204, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-secondary:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-success {
+  background: #28c76f;
+  border-color: #28c76f;
+}
+
+.btn.btn-success:not(:disabled):not(.disabled):hover,
+.btn.btn-success:not(:disabled):not(.disabled):focus,
+.btn.btn-success:not(:disabled):not(.disabled):active {
+  background: #1f9d57;
+  border-color: #1f9d57;
+}
+
+.btn.btn-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.4) !important;
+}
+
+.btn.btn-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-success {
+  background: linear-gradient(20deg, #5dde97, #1f9d57);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-success:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-success:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-success:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #28c76f, #1f9d57);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.5);
+}
+
+.btn.btn-gradient-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-success {
+  background: rgba(40, 199, 111, 0.3);
+  border-color: transparent;
+  color: #197b44;
+}
+
+.btn.btn-light-success:not(:disabled):not(.disabled):hover,
+.btn.btn-light-success:not(:disabled):not(.disabled):focus,
+.btn.btn-light-success:not(:disabled):not(.disabled):active {
+  background: rgba(40, 199, 111, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.2);
+}
+
+.btn.btn-light-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-success {
+  background: none;
+  border-color: #28c76f;
+  color: #24b263;
+  border-width: 1px;
+}
+
+.btn.btn-outline-success:not(:disabled):not(.disabled):hover {
+  background: #28c76f;
+  border-color: #28c76f;
+  color: white;
+}
+
+.btn.btn-outline-success:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-success:not(:disabled):not(.disabled):active {
+  background: #1e9453;
+  border-color: #1e9453;
+  color: white;
+}
+
+.btn.btn-outline-success:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(40, 199, 111, 0.4);
+}
+
+.btn.btn-outline-success.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(40, 199, 111, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-success:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-danger {
+  background: #ea5455;
+  border-color: #ea5455;
+}
+
+.btn.btn-danger:not(:disabled):not(.disabled):hover,
+.btn.btn-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-danger:not(:disabled):not(.disabled):active {
+  background: #e42728;
+  border-color: #e42728;
+}
+
+.btn.btn-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.4) !important;
+}
+
+.btn.btn-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-danger {
+  background: linear-gradient(20deg, #f29899, #e42728);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #ea5455, #e42728);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.5);
+}
+
+.btn.btn-gradient-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-danger {
+  background: rgba(234, 84, 85, 0.3);
+  border-color: transparent;
+  color: #c9191a;
+}
+
+.btn.btn-light-danger:not(:disabled):not(.disabled):hover,
+.btn.btn-light-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-light-danger:not(:disabled):not(.disabled):active {
+  background: rgba(234, 84, 85, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.2);
+}
+
+.btn.btn-light-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-danger {
+  background: none;
+  border-color: #ea5455;
+  color: #e73d3e;
+  border-width: 1px;
+}
+
+.btn.btn-outline-danger:not(:disabled):not(.disabled):hover {
+  background: #ea5455;
+  border-color: #ea5455;
+  color: white;
+}
+
+.btn.btn-outline-danger:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-danger:not(:disabled):not(.disabled):active {
+  background: #e31d1f;
+  border-color: #e31d1f;
+  color: white;
+}
+
+.btn.btn-outline-danger:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 84, 85, 0.4);
+}
+
+.btn.btn-outline-danger.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 84, 85, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-danger:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-warning {
+  background: #ff9f43;
+  border-color: #ff9f43;
+}
+
+.btn.btn-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-warning:not(:disabled):not(.disabled):active {
+  background: #ff8510;
+  border-color: #ff8510;
+}
+
+.btn.btn-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.4) !important;
+}
+
+.btn.btn-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-warning {
+  background: linear-gradient(20deg, #ffc690, #ff8510);
+  border-color: transparent;
+  color: white;
+  color: #212529;
+}
+
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #ff9f43, #ff8510);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.5);
+}
+
+.btn.btn-gradient-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-warning {
+  background: rgba(255, 159, 67, 0.3);
+  border-color: transparent;
+  color: #e67100;
+}
+
+.btn.btn-light-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-light-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-light-warning:not(:disabled):not(.disabled):active {
+  background: rgba(255, 159, 67, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.2);
+}
+
+.btn.btn-light-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-warning {
+  background: none;
+  border-color: #ff9f43;
+  color: #ff922a;
+  border-width: 1px;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):hover {
+  background: #ff9f43;
+  border-color: #ff9f43;
+  color: white;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-warning:not(:disabled):not(.disabled):active {
+  background: #ff8006;
+  border-color: #ff8006;
+  color: white;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(255, 159, 67, 0.4);
+}
+
+.btn.btn-outline-warning.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(255, 159, 67, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-warning:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-warning:not(:disabled):not(.disabled):hover,
+.btn.btn-outline-warning:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-warning:not(:disabled):not(.disabled):active {
+  color: #212529;
+}
+
+.btn.btn-info {
+  background: #33b5e5;
+  border-color: #33b5e5;
+}
+
+.btn.btn-info:not(:disabled):not(.disabled):hover,
+.btn.btn-info:not(:disabled):not(.disabled):focus,
+.btn.btn-info:not(:disabled):not(.disabled):active {
+  background: #1a9bcb;
+  border-color: #1a9bcb;
+}
+
+.btn.btn-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.4) !important;
+}
+
+.btn.btn-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-info {
+  background: linear-gradient(20deg, #77ceee, #1a9bcb);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-info:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-info:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-info:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #33b5e5, #1a9bcb);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.5);
+}
+
+.btn.btn-gradient-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-info {
+  background: rgba(51, 181, 229, 0.3);
+  border-color: transparent;
+  color: #1580a7;
+}
+
+.btn.btn-light-info:not(:disabled):not(.disabled):hover,
+.btn.btn-light-info:not(:disabled):not(.disabled):focus,
+.btn.btn-light-info:not(:disabled):not(.disabled):active {
+  background: rgba(51, 181, 229, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.2);
+}
+
+.btn.btn-light-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-info {
+  background: none;
+  border-color: #33b5e5;
+  color: #1dade2;
+  border-width: 1px;
+}
+
+.btn.btn-outline-info:not(:disabled):not(.disabled):hover {
+  background: #33b5e5;
+  border-color: #33b5e5;
+  color: white;
+}
+
+.btn.btn-outline-info:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-info:not(:disabled):not(.disabled):active {
+  background: #1994c2;
+  border-color: #1994c2;
+  color: white;
+}
+
+.btn.btn-outline-info:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(51, 181, 229, 0.4);
+}
+
+.btn.btn-outline-info.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(51, 181, 229, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-info:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light,
+.fc .btn.fc-state-default {
+  background: #afb8bd;
+  border-color: #afb8bd;
+}
+
+.btn.btn-light:not(:disabled):not(.disabled):hover,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):hover,
+.btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):focus,
+.btn.btn-light:not(:disabled):not(.disabled):active,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):active {
+  background: #939fa6;
+  border-color: #939fa6;
+}
+
+.btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc .btn.fc-state-default:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.4) !important;
+}
+
+.btn.btn-light.btn-pulse:not(:disabled):not(.disabled),
+.fc .btn.btn-pulse.fc-state-default:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light:hover,
+.fc .btn.fc-state-default:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-light {
+  background: linear-gradient(20deg, #d9dde0, #939fa6);
+  border-color: transparent;
+  color: white;
+  color: inherit;
+}
+
+.btn.btn-gradient-light:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-light:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-light:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #afb8bd, #939fa6);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-light:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.5);
+}
+
+.btn.btn-gradient-light.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-light:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-light {
+  background: none;
+  border-color: #afb8bd;
+  color: #a1acb1;
+  border-width: 1px;
+  color: #212529;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):hover {
+  background: #afb8bd;
+  border-color: #afb8bd;
+  color: white;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-light:not(:disabled):not(.disabled):active {
+  background: #8d9aa1;
+  border-color: #8d9aa1;
+  color: white;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(175, 184, 189, 0.4);
+}
+
+.btn.btn-outline-light.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(175, 184, 189, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-light:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-light:not(:disabled):not(.disabled):hover,
+.btn.btn-outline-light:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-light:not(:disabled):not(.disabled):active {
+  color: #212529;
+}
+
+.btn.btn-dark {
+  background: #293134;
+  border-color: #293134;
+}
+
+.btn.btn-dark:not(:disabled):not(.disabled):hover,
+.btn.btn-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-dark:not(:disabled):not(.disabled):active {
+  background: #131617;
+  border-color: #131617;
+}
+
+.btn.btn-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.4) !important;
+}
+
+.btn.btn-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-gradient-dark {
+  background: linear-gradient(20deg, #4b595f, #131617);
+  border-color: transparent;
+  color: white;
+}
+
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):hover,
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):active {
+  background: linear-gradient(20deg, #293134, #131617);
+  border-color: transparent;
+}
+
+.btn.btn-gradient-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.5);
+}
+
+.btn.btn-gradient-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-gradient-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-light-dark {
+  background: rgba(41, 49, 52, 0.3);
+  border-color: transparent;
+  color: #010101;
+}
+
+.btn.btn-light-dark:not(:disabled):not(.disabled):hover,
+.btn.btn-light-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-light-dark:not(:disabled):not(.disabled):active {
+  background: rgba(41, 49, 52, 0.5);
+  border-color: transparent;
+}
+
+.btn.btn-light-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.2);
+}
+
+.btn.btn-light-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-light-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-dark {
+  background: none;
+  border-color: #293134;
+  color: #1e2426;
+  border-width: 1px;
+}
+
+.btn.btn-outline-dark:not(:disabled):not(.disabled):hover {
+  background: #293134;
+  border-color: #293134;
+  color: white;
+}
+
+.btn.btn-outline-dark:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-dark:not(:disabled):not(.disabled):active {
+  background: #0e1112;
+  border-color: #0e1112;
+  color: white;
+}
+
+.btn.btn-outline-dark:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(41, 49, 52, 0.4);
+}
+
+.btn.btn-outline-dark.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(41, 49, 52, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-dark:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-facebook {
+  background: #3b5998;
+  border-color: #3b5998;
+  color: white;
+}
+
+.btn.btn-facebook:not(:disabled):not(.disabled):hover,
+.btn.btn-facebook:not(:disabled):not(.disabled):focus,
+.btn.btn-facebook:not(:disabled):not(.disabled):active {
+  background: #2d4373;
+  border-color: #2d4373;
+}
+
+.btn.btn-facebook:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(59, 89, 152, 0.4) !important;
+}
+
+.btn.btn-facebook.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(59, 89, 152, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-facebook:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-facebook {
+  background: none;
+  border-color: #3b5998;
+  color: #344e86;
+  border-width: 1px;
+}
+
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):hover {
+  background: #3b5998;
+  border-color: #3b5998;
+  color: white;
+}
+
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):active {
+  background: #2a3f6c;
+  border-color: #2a3f6c;
+  color: white;
+}
+
+.btn.btn-outline-facebook:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(59, 89, 152, 0.4);
+}
+
+.btn.btn-outline-facebook.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(59, 89, 152, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-facebook:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-google {
+  background: #db4437;
+  border-color: #db4437;
+  color: white;
+}
+
+.btn.btn-google:not(:disabled):not(.disabled):hover,
+.btn.btn-google:not(:disabled):not(.disabled):focus,
+.btn.btn-google:not(:disabled):not(.disabled):active {
+  background: #bd2e22;
+  border-color: #bd2e22;
+}
+
+.btn.btn-google:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(219, 68, 55, 0.4) !important;
+}
+
+.btn.btn-google.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(219, 68, 55, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-google:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-google {
+  background: none;
+  border-color: #db4437;
+  color: #d33426;
+  border-width: 1px;
+}
+
+.btn.btn-outline-google:not(:disabled):not(.disabled):hover {
+  background: #db4437;
+  border-color: #db4437;
+  color: white;
+}
+
+.btn.btn-outline-google:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-google:not(:disabled):not(.disabled):active {
+  background: #b42c20;
+  border-color: #b42c20;
+  color: white;
+}
+
+.btn.btn-outline-google:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(219, 68, 55, 0.4);
+}
+
+.btn.btn-outline-google.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(219, 68, 55, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-google:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-twitter {
+  background: #55acee;
+  border-color: #55acee;
+  color: white;
+}
+
+.btn.btn-twitter:not(:disabled):not(.disabled):hover,
+.btn.btn-twitter:not(:disabled):not(.disabled):focus,
+.btn.btn-twitter:not(:disabled):not(.disabled):active {
+  background: #2795e9;
+  border-color: #2795e9;
+}
+
+.btn.btn-twitter:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(85, 172, 238, 0.4) !important;
+}
+
+.btn.btn-twitter.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(85, 172, 238, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-twitter:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-twitter {
+  background: none;
+  border-color: #55acee;
+  color: #3ea1ec;
+  border-width: 1px;
+}
+
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):hover {
+  background: #55acee;
+  border-color: #55acee;
+  color: white;
+}
+
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):active {
+  background: #1d91e8;
+  border-color: #1d91e8;
+  color: white;
+}
+
+.btn.btn-outline-twitter:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(85, 172, 238, 0.4);
+}
+
+.btn.btn-outline-twitter.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(85, 172, 238, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-twitter:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-linkedin {
+  background: #0077b5;
+  border-color: #0077b5;
+  color: white;
+}
+
+.btn.btn-linkedin:not(:disabled):not(.disabled):hover,
+.btn.btn-linkedin:not(:disabled):not(.disabled):focus,
+.btn.btn-linkedin:not(:disabled):not(.disabled):active {
+  background: #005582;
+  border-color: #005582;
+}
+
+.btn.btn-linkedin:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 119, 181, 0.4) !important;
+}
+
+.btn.btn-linkedin.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 119, 181, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-linkedin:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-linkedin {
+  background: none;
+  border-color: #0077b5;
+  color: #00669c;
+  border-width: 1px;
+}
+
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):hover {
+  background: #0077b5;
+  border-color: #0077b5;
+  color: white;
+}
+
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):active {
+  background: #004f78;
+  border-color: #004f78;
+  color: white;
+}
+
+.btn.btn-outline-linkedin:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 119, 181, 0.4);
+}
+
+.btn.btn-outline-linkedin.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 119, 181, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-linkedin:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-whatsapp {
+  background: #43d854;
+  border-color: #43d854;
+  color: white;
+}
+
+.btn.btn-whatsapp:not(:disabled):not(.disabled):hover,
+.btn.btn-whatsapp:not(:disabled):not(.disabled):focus,
+.btn.btn-whatsapp:not(:disabled):not(.disabled):active {
+  background: #28c039;
+  border-color: #28c039;
+}
+
+.btn.btn-whatsapp:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(67, 216, 84, 0.4) !important;
+}
+
+.btn.btn-whatsapp.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(67, 216, 84, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-whatsapp:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-whatsapp {
+  background: none;
+  border-color: #43d854;
+  color: #2ed441;
+  border-width: 1px;
+}
+
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):hover {
+  background: #43d854;
+  border-color: #43d854;
+  color: white;
+}
+
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):active {
+  background: #26b837;
+  border-color: #26b837;
+  color: white;
+}
+
+.btn.btn-outline-whatsapp:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(67, 216, 84, 0.4);
+}
+
+.btn.btn-outline-whatsapp.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(67, 216, 84, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-whatsapp:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-instagram {
+  background: #3f729b;
+  border-color: #3f729b;
+  color: white;
+}
+
+.btn.btn-instagram:not(:disabled):not(.disabled):hover,
+.btn.btn-instagram:not(:disabled):not(.disabled):focus,
+.btn.btn-instagram:not(:disabled):not(.disabled):active {
+  background: #305777;
+  border-color: #305777;
+}
+
+.btn.btn-instagram:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(63, 114, 155, 0.4) !important;
+}
+
+.btn.btn-instagram.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(63, 114, 155, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-instagram:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-instagram {
+  background: none;
+  border-color: #3f729b;
+  color: #386589;
+  border-width: 1px;
+}
+
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):hover {
+  background: #3f729b;
+  border-color: #3f729b;
+  color: white;
+}
+
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):active {
+  background: #2d526f;
+  border-color: #2d526f;
+  color: white;
+}
+
+.btn.btn-outline-instagram:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(63, 114, 155, 0.4);
+}
+
+.btn.btn-outline-instagram.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(63, 114, 155, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-instagram:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-dribbble {
+  background: #ea4c89;
+  border-color: #ea4c89;
+  color: white;
+}
+
+.btn.btn-dribbble:not(:disabled):not(.disabled):hover,
+.btn.btn-dribbble:not(:disabled):not(.disabled):focus,
+.btn.btn-dribbble:not(:disabled):not(.disabled):active {
+  background: #e51e6b;
+  border-color: #e51e6b;
+}
+
+.btn.btn-dribbble:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 76, 137, 0.4) !important;
+}
+
+.btn.btn-dribbble.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 76, 137, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-dribbble:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-dribbble {
+  background: none;
+  border-color: #ea4c89;
+  color: #e7357a;
+  border-width: 1px;
+}
+
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):hover {
+  background: #ea4c89;
+  border-color: #ea4c89;
+  color: white;
+}
+
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):active {
+  background: #df1a66;
+  border-color: #df1a66;
+  color: white;
+}
+
+.btn.btn-outline-dribbble:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(234, 76, 137, 0.4);
+}
+
+.btn.btn-outline-dribbble.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(234, 76, 137, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-dribbble:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-youtube {
+  background: #cd201f;
+  border-color: #cd201f;
+  color: white;
+}
+
+.btn.btn-youtube:not(:disabled):not(.disabled):hover,
+.btn.btn-youtube:not(:disabled):not(.disabled):focus,
+.btn.btn-youtube:not(:disabled):not(.disabled):active {
+  background: #a11918;
+  border-color: #a11918;
+}
+
+.btn.btn-youtube:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(205, 32, 31, 0.4) !important;
+}
+
+.btn.btn-youtube.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(205, 32, 31, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-youtube:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-youtube {
+  background: none;
+  border-color: #cd201f;
+  color: #b71d1c;
+  border-width: 1px;
+}
+
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):hover {
+  background: #cd201f;
+  border-color: #cd201f;
+  color: white;
+}
+
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):active {
+  background: #981817;
+  border-color: #981817;
+  color: white;
+}
+
+.btn.btn-outline-youtube:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(205, 32, 31, 0.4);
+}
+
+.btn.btn-outline-youtube.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(205, 32, 31, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-youtube:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-github {
+  background: #00405d;
+  border-color: #00405d;
+  color: white;
+}
+
+.btn.btn-github:not(:disabled):not(.disabled):hover,
+.btn.btn-github:not(:disabled):not(.disabled):focus,
+.btn.btn-github:not(:disabled):not(.disabled):active {
+  background: #001d2a;
+  border-color: #001d2a;
+}
+
+.btn.btn-github:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 64, 93, 0.4) !important;
+}
+
+.btn.btn-github.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 64, 93, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-github:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-github {
+  background: none;
+  border-color: #00405d;
+  color: #002e44;
+  border-width: 1px;
+}
+
+.btn.btn-outline-github:not(:disabled):not(.disabled):hover {
+  background: #00405d;
+  border-color: #00405d;
+  color: white;
+}
+
+.btn.btn-outline-github:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-github:not(:disabled):not(.disabled):active {
+  background: #001620;
+  border-color: #001620;
+  color: white;
+}
+
+.btn.btn-outline-github:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 64, 93, 0.4);
+}
+
+.btn.btn-outline-github.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 64, 93, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-github:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-behance {
+  background: #1769ff;
+  border-color: #1769ff;
+  color: white;
+}
+
+.btn.btn-behance:not(:disabled):not(.disabled):hover,
+.btn.btn-behance:not(:disabled):not(.disabled):focus,
+.btn.btn-behance:not(:disabled):not(.disabled):active {
+  background: #0050e3;
+  border-color: #0050e3;
+}
+
+.btn.btn-behance:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(23, 105, 255, 0.4) !important;
+}
+
+.btn.btn-behance.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(23, 105, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-behance:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-behance {
+  background: none;
+  border-color: #1769ff;
+  color: #0059fd;
+  border-width: 1px;
+}
+
+.btn.btn-outline-behance:not(:disabled):not(.disabled):hover {
+  background: #1769ff;
+  border-color: #1769ff;
+  color: white;
+}
+
+.btn.btn-outline-behance:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-behance:not(:disabled):not(.disabled):active {
+  background: #004dd9;
+  border-color: #004dd9;
+  color: white;
+}
+
+.btn.btn-outline-behance:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(23, 105, 255, 0.4);
+}
+
+.btn.btn-outline-behance.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(23, 105, 255, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-behance:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-skype {
+  background: #00aff0;
+  border-color: #00aff0;
+  color: white;
+}
+
+.btn.btn-skype:not(:disabled):not(.disabled):hover,
+.btn.btn-skype:not(:disabled):not(.disabled):focus,
+.btn.btn-skype:not(:disabled):not(.disabled):active {
+  background: #008abd;
+  border-color: #008abd;
+}
+
+.btn.btn-skype:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 175, 240, 0.4) !important;
+}
+
+.btn.btn-skype.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 175, 240, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-skype:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-skype {
+  background: none;
+  border-color: #00aff0;
+  color: #009cd7;
+  border-width: 1px;
+}
+
+.btn.btn-outline-skype:not(:disabled):not(.disabled):hover {
+  background: #00aff0;
+  border-color: #00aff0;
+  color: white;
+}
+
+.btn.btn-outline-skype:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-skype:not(:disabled):not(.disabled):active {
+  background: #0082b3;
+  border-color: #0082b3;
+  color: white;
+}
+
+.btn.btn-outline-skype:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(0, 175, 240, 0.4);
+}
+
+.btn.btn-outline-skype.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(0, 175, 240, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-skype:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-yahoo {
+  background: #410093;
+  border-color: #410093;
+  color: white;
+}
+
+.btn.btn-yahoo:not(:disabled):not(.disabled):hover,
+.btn.btn-yahoo:not(:disabled):not(.disabled):focus,
+.btn.btn-yahoo:not(:disabled):not(.disabled):active {
+  background: #2a0060;
+  border-color: #2a0060;
+}
+
+.btn.btn-yahoo:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(65, 0, 147, 0.4) !important;
+}
+
+.btn.btn-yahoo.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(65, 0, 147, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-yahoo:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-outline-yahoo {
+  background: none;
+  border-color: #410093;
+  color: #36007a;
+  border-width: 1px;
+}
+
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):hover {
+  background: #410093;
+  border-color: #410093;
+  color: white;
+}
+
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):focus,
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):active {
+  background: #260056;
+  border-color: #260056;
+  color: white;
+}
+
+.btn.btn-outline-yahoo:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(65, 0, 147, 0.4);
+}
+
+.btn.btn-outline-yahoo.btn-pulse:not(:disabled):not(.disabled) {
+  box-shadow: 0 0 0 0 rgba(65, 0, 147, 0.9) !important;
+  -webkit-animation: pulse 1.5s infinite !important;
+}
+
+.btn.btn-outline-yahoo:hover {
+  -webkit-animation: none;
+}
+
+.btn.btn-apple,
+.btn.btn-google-play {
+  border-radius: 7px;
+}
+
+.btn.btn-apple img,
+.btn.btn-google-play img {
+  width: 35px;
+  margin-right: 10px;
+}
+
+.btn.btn-apple i,
+.btn.btn-google-play i {
+  font-size: 40px;
+  margin-right: 10px;
+}
+
+.btn.btn-apple > span,
+.btn.btn-google-play > span {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  text-align: left;
+}
+
+.btn.btn-apple > span span:nth-child(2),
+.btn.btn-google-play > span span:nth-child(2) {
+  font-size: 20px;
+  font-weight: 600;
+  margin-top: 5px;
+}
+
+.btn.btn-apple:hover,
+.btn.btn-apple:active,
+.btn.btn-apple:focus,
+.btn.btn-google-play:hover,
+.btn.btn-google-play:active,
+.btn.btn-google-play:focus {
+  background: #040507;
+  color: white;
+}
+
+.btn.btn-apple {
+  border: 1px solid #040507;
+  color: #040507;
+}
+
+.btn.btn-google-play {
+  background: #040507;
+  color: white;
+}
+
+.btn.btn-google-play > span span:nth-child(1) {
+  text-transform: uppercase;
+  font-size: 12px;
+}
+
+@-webkit-keyframes pulse {
+  to {
+    box-shadow: 0 0 0 10px rgba(232, 76, 61, 0);
+  }
+}
+
+@keyframes pulse {
+  to {
+    box-shadow: 0 0 0 10px rgba(232, 76, 61, 0);
+  }
+}
+
+.progress .progress-bar.progress-bar-striped {
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent) !important;
+  background-size: 1rem 1rem !important;
+}
+
+.progress .progress-bar:not(.progress-bar-striped) {
+  background: #0081ff;
+}
+
+.dropdown {
+  display: inline;
+}
+
+.dropdown-menu {
+  margin-top: -10px;
+  visibility: hidden;
+  opacity: 0;
+  height: 0;
+  display: block !important;
+  -webkit-transition: margin-top 0.3s, opacity 0.3s;
+  transition: margin-top 0.3s, opacity 0.3s;
+  border-top: 1px solid #eee !important;
+}
+
+.dropdown-menu ul.list-group {
+  max-height: 300px;
+}
+
+.dropdown-menu.show {
+  margin-top: 0;
+  visibility: visible;
+  opacity: 1;
+  height: auto;
+}
+
+.dropdown-header {
+  font-size: inherit;
+  padding: 10px 20px;
+  border-bottom: 1px solid #f0f0f0;
+}
+
+.dropdown-body {
+  padding: 10px 20px;
+}
+
+.dropdown-menu {
+  border-radius: 0.5rem;
+  font-size: 14px;
+  border: none;
+  box-shadow: 0px 5px 10px -1px rgba(0, 0, 0, 0.15);
+  overflow: hidden;
+}
+
+.dropdown-menu.dropdown-menu-big {
+  padding: 0;
+  width: 300px;
+}
+
+.dropdown-menu .dropdown-menu-body {
+  max-height: 400px;
+  overflow: auto;
+}
+
+.dropdown-menu .dropdown-menu-title {
+  background-color: #0081ff;
+  padding: 15px 20px;
+  color: white;
+  background-size: cover !important;
+  background-position: center !important;
+}
+
+.dropdown-menu .dropdown-menu-footer {
+  padding: 10px 20px;
+}
+
+.dropdown-menu ul li.dropdown-menu-title {
+  background: red;
+  margin: 5px 0;
+  padding: 0px 20px 5px;
+  border-bottom: 1px solid #ebebeb;
+}
+
+.dropdown-menu ul li.dropdown-menu-title:first-child {
+  margin-top: 0;
+}
+
+.dropdown-menu .dropdown-item:hover,
+.dropdown-menu .dropdown-item:focus,
+.dropdown-menu .dropdown-item:active {
+  background: #f5f5f5;
+  text-decoration: none;
+  color: #0081ff;
+}
+
+table .dropdown {
+  line-height: initial;
+}
+
+.badge {
+  padding: 5px 10px;
+  font-size: 11px;
+}
+
+.badge.badge-success {
+  background: #28c76f;
+}
+
+.badge.badge-danger {
+  background: #ea5455;
+}
+
+.badge.badge-secondary {
+  background: #aa66cc;
+}
+
+.badge.badge-info {
+  background: #33b5e5;
+}
+
+.badge.badge-warning {
+  background: #ff9f43;
+}
+
+.badge.badge-dark {
+  background: #293134;
+}
+
+.badge.badge-primary {
+  background: #0081ff;
+}
+
+.badge.badge-light {
+  background: #afb8bd;
+}
+
+.btn {
+  position: relative;
+}
+
+.btn .badge {
+  padding: 2px 6px;
+  right: 7px;
+  top: -7px;
+  position: absolute;
+}
+
+.collapse .card,
+.collapse .app-block .app-content .app-action,
+.app-block .app-content .collapse .app-action,
+.collapse .chat-block {
+  border: 1px solid #e1e1e1;
+  box-shadow: none;
+}
+
+.media > img,
+.media > a > img,
+.header form .input-group .input-group-append .media > button.btn > img {
+  width: 80px;
+}
+
+.accordion .card,
+.accordion .app-block .app-content .app-action,
+.app-block .app-content .accordion .app-action,
+.accordion .chat-block {
+  margin-bottom: 0;
+  border: 1px solid #ebebeb;
+}
+
+.accordion .card .card-header,
+.accordion .app-block .app-content .app-action .card-header,
+.app-block .app-content .accordion .app-action .card-header,
+.accordion .chat-block .card-header {
+  display: -webkit-box;
+  display: flex;
+  height: 50px;
+  padding: 0 10px;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.accordion .card .card-header button,
+.accordion .app-block .app-content .app-action .card-header button,
+.app-block .app-content .accordion .app-action .card-header button,
+.accordion .chat-block .card-header button {
+  display: block;
+}
+
+.accordion.custom-accordion {
+  border: 1px solid #ebebeb;
+  border-radius: 5px;
+  overflow: hidden;
+}
+
+.accordion.custom-accordion .accordion-row a.accordion-header,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn {
+  color: #293134;
+  border-bottom: 1px solid #ebebeb;
+  border-top: 1px solid #ebebeb;
+  padding: 10px 20px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  margin-top: -1px;
+}
+
+.accordion.custom-accordion .accordion-row a.accordion-header .accordion-status-icon.open,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.open,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn .accordion-status-icon.open {
+  display: none;
+}
+
+.accordion.custom-accordion .accordion-row a.accordion-header:hover,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn:hover,
+.accordion.custom-accordion .accordion-row a.accordion-header:focus,
+.accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row button.accordion-header.btn:focus {
+  color: #0081ff;
+}
+
+.accordion.custom-accordion .accordion-row .accordion-body {
+  display: none;
+  padding: 10px 20px;
+}
+
+.accordion.custom-accordion .accordion-row.open a.accordion-header,
+.accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn {
+  background: white;
+}
+
+.accordion.custom-accordion .accordion-row.open a.accordion-header .accordion-status-icon.open,
+.accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.open,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn .accordion-status-icon.open {
+  display: block;
+}
+
+.accordion.custom-accordion .accordion-row.open a.accordion-header .accordion-status-icon.close,
+.accordion.custom-accordion .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn .accordion-status-icon.close,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row.open button.accordion-header.btn .accordion-status-icon.close {
+  display: none;
+}
+
+.accordion.custom-accordion .accordion-row.open .accordion-body {
+  display: block;
+}
+
+.accordion.custom-accordion .accordion-row:first-child a.accordion-header,
+.accordion.custom-accordion .accordion-row:first-child .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion .accordion-row:first-child button.accordion-header.btn {
+  border-top: none;
+}
+
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-primary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #0081ff;
+}
+
+.accordion.custom-accordion.accordion-primary .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-primary .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-primary .accordion-row.open button.accordion-header.btn {
+  background: #0081ff;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-success .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #28c76f;
+}
+
+.accordion.custom-accordion.accordion-success .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-success .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-success .accordion-row.open button.accordion-header.btn {
+  background: #28c76f;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-danger .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #ea5455;
+}
+
+.accordion.custom-accordion.accordion-danger .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-danger .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-danger .accordion-row.open button.accordion-header.btn {
+  background: #ea5455;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #aa66cc;
+}
+
+.accordion.custom-accordion.accordion-secondary .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-secondary .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-secondary .accordion-row.open button.accordion-header.btn {
+  background: #aa66cc;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-light .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-light .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-light .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-light .accordion-row.open button.accordion-header.btn {
+  background: #afb8bd;
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-warning .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #ff9f43;
+}
+
+.accordion.custom-accordion.accordion-warning .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-warning .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-warning .accordion-row.open button.accordion-header.btn {
+  background: #ff9f43;
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-info .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #33b5e5;
+}
+
+.accordion.custom-accordion.accordion-info .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-info .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-info .accordion-row.open button.accordion-header.btn {
+  background: #33b5e5;
+  color: white;
+}
+
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) a.accordion-header:hover,
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:hover,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row:not(.open) button.accordion-header.btn:hover,
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) a.accordion-header:focus,
+.accordion.custom-accordion.accordion-dark .accordion-row:not(.open) .header form .input-group .input-group-append button.accordion-header.btn:focus,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row:not(.open) button.accordion-header.btn:focus {
+  color: #293134;
+}
+
+.accordion.custom-accordion.accordion-dark .accordion-row.open a.accordion-header,
+.accordion.custom-accordion.accordion-dark .accordion-row.open .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append .accordion.custom-accordion.accordion-dark .accordion-row.open button.accordion-header.btn {
+  background: #293134;
+  color: white;
+}
+
+.nicescroll-cursors {
+  border: none !important;
+}
+
+body:not(.dark) .nicescroll-cursors {
+  background-color: rgba(41, 49, 52, 0.4) !important;
+  width: 3px !important;
+}
+
+.isotope-item {
+  z-index: 2;
+}
+
+.isotope-hidden.isotope-item {
+  pointer-events: none;
+  z-index: 1;
+}
+
+.isotope,
+.isotope .isotope-item {
+  -webkit-transition-duration: 0.8s;
+          transition-duration: 0.8s;
+}
+
+.isotope {
+  -webkit-transition-property: height, width;
+  transition-property: height, width;
+}
+
+.isotope .isotope-item {
+  -webkit-transition-property: opacity, -webkit-transform;
+  transition-property: opacity, -webkit-transform;
+  transition-property: transform, opacity;
+  transition-property: transform, opacity, -webkit-transform;
+}
+
+.gallery-container img {
+  width: 100%;
+}
+
+.daterangepicker td.active {
+  background: #0081ff;
+}
+
+.daterangepicker td.active:hover {
+  background: #0081ff;
+}
+
+.daterangepicker .ranges li.active {
+  background: #0081ff;
+}
+
+.alert {
+  border-color: transparent !important;
+}
+
+.alert .close {
+  height: 100%;
+  width: 44px;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 0;
+  display: -webkit-box;
+  display: flex;
+}
+
+.alert .close > * {
+  font-size: initial;
+  text-shadow: none;
+  line-height: 0;
+}
+
+.alert.alert-primary {
+  background: rgba(0, 129, 255, 0.3) !important;
+}
+
+.alert.alert-primary.alert-with-border {
+  border-left: 3px solid #0081ff !important;
+}
+
+.alert.alert-secondary {
+  background: rgba(170, 102, 204, 0.3) !important;
+}
+
+.alert.alert-secondary.alert-with-border {
+  border-left: 3px solid #aa66cc !important;
+}
+
+.alert.alert-success {
+  background: rgba(40, 199, 111, 0.3) !important;
+}
+
+.alert.alert-success.alert-with-border {
+  border-left: 3px solid #28c76f !important;
+}
+
+.alert.alert-danger {
+  background: rgba(234, 84, 85, 0.3) !important;
+}
+
+.alert.alert-danger.alert-with-border {
+  border-left: 3px solid #ea5455 !important;
+}
+
+.alert.alert-warning {
+  background: rgba(255, 159, 67, 0.3) !important;
+}
+
+.alert.alert-warning.alert-with-border {
+  border-left: 3px solid #ff9f43 !important;
+}
+
+.alert.alert-info {
+  background: rgba(51, 181, 229, 0.3) !important;
+}
+
+.alert.alert-info.alert-with-border {
+  border-left: 3px solid #33b5e5 !important;
+}
+
+.alert.alert-dark {
+  background: #d4d5d8 !important;
+  color: #293134 !important;
+}
+
+.alert.alert-dark.alert-with-border {
+  border-left: 3px solid #293134 !important;
+}
+
+.breadcrumb {
+  background: none;
+  padding: 0;
+  margin-bottom: 30px;
+}
+
+.breadcrumb .breadcrumb-item + .breadcrumb-item::before {
+  font-family: "themify";
+  content: "\E649";
+  font-size: 10px;
+  margin-right: 0;
+}
+
+.breadcrumb .breadcrumb-item:before {
+  font-family: "themify";
+  content: "\E69B";
+  margin-right: 0.5rem;
+}
+
+.breadcrumb .breadcrumb-item.active {
+  color: #0081ff;
+}
+
+.notify .alert {
+  border: none;
+  box-shadow: 0 2px 10px 0 rgba(24, 28, 33, 0.04);
+}
+
+.notify .alert .alert-heading {
+  font-size: 16px;
+  font-weight: 600;
+}
+
+.notify.open {
+  -webkit-transform: translate(0);
+          transform: translate(0);
+}
+
+.pagination .page-item.active .page-link {
+  background: #0081ff;
+  border-color: transparent;
+}
+
+.pagination .page-item .page-link:hover,
+.pagination .page-item .page-link:focus {
+  text-decoration: none;
+}
+
+.pagination.pagination-rounded .page-item {
+  margin: 0 5px;
+}
+
+.pagination.pagination-rounded .page-item .page-link {
+  border-radius: 50%;
+  padding: 0;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  height: 40px;
+  width: 40px;
+}
+
+.pagination.pagination-rounded.pagination-sm .page-link {
+  height: 30px;
+  width: 30px;
+}
+
+.pagination.pagination-rounded.pagination-lg .page-link {
+  height: 60px;
+  width: 60px;
+}
+
+.tourStep {
+  border: none;
+}
+
+.tourStep.right {
+  margin-left: 10px;
+}
+
+.tourStep.left {
+  margin-right: 10px;
+}
+
+.tourStep.top {
+  margin-top: -10px;
+}
+
+.tourStep.bottom {
+  margin-top: 10px;
+}
+
+.tourStep .popover-navigation {
+  border-top: 1px solid #ddd;
+  padding: 0.5rem 0.75rem;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.tourStep .popover-navigation span {
+  font-size: 12px;
+  color: #9b9b9b;
+}
+
+.tourStep .popover-navigation .popover-navigation-buttons {
+  margin-left: auto;
+}
+
+.tourStep .popover-navigation .popover-navigation-buttons .btn {
+  margin-left: 5px;
+}
+
+.swal-modal {
+  border-radius: 0.5rem;
+}
+
+.swal-modal .swal-title {
+  font-size: 20px;
+}
+
+.swal-modal .swal-text {
+  text-align: center;
+}
+
+.swal-modal .swal-button {
+  padding: 0.375rem 0.75rem;
+}
+
+.swal-modal .swal-button.swal-button--confirm {
+  background: #0081ff;
+}
+
+.swal-modal .swal-button.swal-button--danger {
+  background: #ea5455;
+}
+
+.swal-modal .swal-button.swal-button--cancel {
+  background: #afb8bd;
+}
+
+.swal-modal .swal-icon--error {
+  border-color: #f4a6a6;
+}
+
+.swal-modal .swal-icon--error .swal-icon--error__line {
+  background: #f4a6a6;
+}
+
+.irs .irs-single,
+.irs .irs-to,
+.irs .irs-from {
+  background: #0081ff;
+}
+
+.irs .irs-single:before,
+.irs .irs-to:before,
+.irs .irs-from:before {
+  border-top-color: #0081ff;
+}
+
+.irs .irs-handle {
+  border-color: #0081ff;
+}
+
+.irs .irs-bar {
+  background: #0081ff;
+}
+
+.select2 {
+  width: 100% !important;
+}
+
+.select2.select2-container .select2-selection {
+  border: 1px solid #ced4da;
+}
+
+.select2.select2-container .select2-selection .select2-selection__placeholder {
+  line-height: calc(2.25rem + 2px);
+}
+
+.select2.select2-container .select2-selection .select2-selection__arrow {
+  height: calc(2.25rem + 2px);
+  width: 30px;
+}
+
+.select2.select2-container .select2-selection .select2-selection__choice {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  border: none;
+}
+
+.select2.select2-container .select2-selection .select2-selection__choice .select2-selection__choice__remove {
+  font-size: 16px;
+  padding: 0 5px 0 3px;
+}
+
+.select2.select2-container .select2-selection.select2-container--focus {
+  border-color: red;
+}
+
+.select2-container--default .select2-results__option--highlighted[aria-selected] {
+  background-color: #0081ff;
+  color: white;
+}
+
+.select2-container--default.select2-container--focus .select2-selection--multiple {
+  border-color: rgba(0, 129, 255, 0.8);
+}
+
+.select2-container--default .select2-search--dropdown .select2-search__field {
+  height: calc(2.25rem + 2px);
+  padding: 0.375rem 0.75rem;
+}
+
+body.modal-open .modal.fade .modal-dialog {
+  -webkit-transform: translate(0, 0) scale(0.9);
+          transform: translate(0, 0) scale(0.9);
+}
+
+body.modal-open .modal.show .modal-dialog {
+  -webkit-transform: translate(0, 0) scale(1);
+          transform: translate(0, 0) scale(1);
+}
+
+.modal .modal-dialog .modal-content {
+  border: none;
+  box-shadow: none;
+  border-radius: 0.5rem;
+}
+
+.modal .modal-dialog .modal-content .modal-header {
+  height: 60px;
+  padding: 0 20px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  background-color: #ebebeb;
+  border-bottom: none;
+}
+
+.modal .modal-dialog .modal-content .modal-header .modal-title {
+  font-size: 17px;
+  font-weight: 600;
+}
+
+.modal .modal-dialog .modal-content .modal-header button.close {
+  background-color: white;
+  text-shadow: none;
+  opacity: 1;
+  margin: 0;
+  font-size: 23px;
+  padding: 0;
+  width: 30px;
+  height: 30px;
+  display: -webkit-box;
+  display: flex;
+  border-radius: 50%;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.modal .modal-dialog .modal-content .modal-header button.close:hover {
+  color: #646464;
+}
+
+.modal .modal-dialog .modal-content .modal-header button.close > * {
+  font-size: initial;
+}
+
+.modal .modal-dialog .modal-content .modal-body {
+  padding: 1.5rem;
+}
+
+.modal .modal-dialog .modal-content .modal-footer {
+  height: 60px;
+}
+
+.wickedpicker {
+  border: none;
+  box-shadow: 0 2px 15px 0 rgba(69, 65, 78, 0.18);
+  width: auto;
+  border-radius: 0;
+  height: auto;
+}
+
+.wickedpicker .wickedpicker__controls {
+  padding: 10px 15px;
+}
+
+.wickedpicker .wickedpicker__controls__control {
+  width: 40px;
+}
+
+.wickedpicker .wickedpicker__controls__control .wickedpicker__controls__control-up:before {
+  content: "\F077";
+  font: normal normal normal 14px/1 FontAwesome;
+}
+
+.wickedpicker .wickedpicker__controls__control .wickedpicker__controls__control-down:after {
+  content: "\F078";
+  font: normal normal normal 14px/1 FontAwesome;
+}
+
+.wickedpicker .wickedpicker__controls__control .hover-state {
+  color: #0081ff;
+}
+
+.wickedpicker .wickedpicker__title {
+  display: none;
+}
+
+.clearable-picker {
+  position: relative;
+}
+
+.clearable-picker [data-clear-picker] {
+  cursor: pointer;
+  font-size: 20px;
+  position: absolute;
+  right: 10px;
+  top: 50%;
+  height: 17px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  width: 17px;
+  color: #646464;
+  margin-top: -8.5px;
+  bottom: 0;
+}
+
+.avatar {
+  display: inline-block;
+  margin-bottom: 0;
+  height: 3rem;
+  width: 3rem;
+  border-radius: 50%;
+}
+
+.avatar .avatar-title {
+  background: #d7d7d7;
+  width: 100%;
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  text-transform: uppercase;
+  font-size: 19px;
+}
+
+.avatar > a,
+.header form .input-group .input-group-append .avatar > button.btn {
+  width: 100%;
+  height: 100%;
+  display: block;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+  color: #0081ff;
+}
+
+.avatar > a:hover,
+.header form .input-group .input-group-append .avatar > button.btn:hover,
+.avatar > a:focus,
+.header form .input-group .input-group-append .avatar > button.btn:focus {
+  color: #646464;
+}
+
+.avatar > a > img,
+.header form .input-group .input-group-append .avatar > button.btn > img,
+.avatar > img {
+  width: 100%;
+  height: 100%;
+  -o-object-fit: cover;
+     object-fit: cover;
+}
+
+.avatar.avatar-sm {
+  height: 2rem;
+  width: 2rem;
+}
+
+.avatar.avatar-sm .avatar-title {
+  font-size: 14px;
+}
+
+.avatar.avatar-sm.avatar-state-primary:before,
+.avatar.avatar-sm.avatar-state-success:before,
+.avatar.avatar-sm.avatar-state-danger:before,
+.avatar.avatar-sm.avatar-state-warning:before,
+.avatar.avatar-sm.avatar-state-info:before,
+.avatar.avatar-sm.avatar-state-secondary:before,
+.avatar.avatar-sm.avatar-state-light:before,
+.avatar.avatar-sm.avatar-state-dark:before {
+  width: 0.8rem;
+  height: 0.8rem;
+}
+
+.avatar.avatar-lg {
+  height: 4.5rem;
+  width: 4.5rem;
+}
+
+.avatar.avatar-lg .avatar-title {
+  font-size: 29px;
+}
+
+.avatar.avatar-lg.avatar-state-primary:before,
+.avatar.avatar-lg.avatar-state-success:before,
+.avatar.avatar-lg.avatar-state-danger:before,
+.avatar.avatar-lg.avatar-state-warning:before,
+.avatar.avatar-lg.avatar-state-info:before,
+.avatar.avatar-lg.avatar-state-secondary:before,
+.avatar.avatar-lg.avatar-state-light:before,
+.avatar.avatar-lg.avatar-state-dark:before {
+  width: 1.3rem;
+  height: 1.3rem;
+  right: 4px;
+}
+
+.avatar.avatar-xl {
+  height: 5.8rem;
+  width: 5.8rem;
+}
+
+.avatar.avatar-xl .avatar-title {
+  font-size: 39px;
+}
+
+.avatar.avatar-xl.avatar-state-primary:before,
+.avatar.avatar-xl.avatar-state-success:before,
+.avatar.avatar-xl.avatar-state-danger:before,
+.avatar.avatar-xl.avatar-state-warning:before,
+.avatar.avatar-xl.avatar-state-info:before,
+.avatar.avatar-xl.avatar-state-secondary:before,
+.avatar.avatar-xl.avatar-state-light:before,
+.avatar.avatar-xl.avatar-state-dark:before {
+  width: 1.6rem;
+  height: 1.6rem;
+  top: 3px;
+  right: 3px;
+}
+
+.avatar.avatar-state-primary,
+.avatar.avatar-state-success,
+.avatar.avatar-state-danger,
+.avatar.avatar-state-warning,
+.avatar.avatar-state-info,
+.avatar.avatar-state-secondary,
+.avatar.avatar-state-light,
+.avatar.avatar-state-dark {
+  position: relative;
+}
+
+.avatar.avatar-state-primary:before,
+.avatar.avatar-state-success:before,
+.avatar.avatar-state-danger:before,
+.avatar.avatar-state-warning:before,
+.avatar.avatar-state-info:before,
+.avatar.avatar-state-secondary:before,
+.avatar.avatar-state-light:before,
+.avatar.avatar-state-dark:before {
+  content: "";
+  position: absolute;
+  display: block;
+  width: 1rem;
+  height: 1rem;
+  border-radius: 50%;
+  top: 0px;
+  right: 0px;
+  border: 3px solid white;
+}
+
+.avatar.avatar-state-primary:before {
+  background: #0081ff;
+}
+
+.avatar.avatar-state-success:before {
+  background: #28c76f;
+}
+
+.avatar.avatar-state-danger:before {
+  background: #ea5455;
+}
+
+.avatar.avatar-state-warning:before {
+  background: #ff9f43;
+}
+
+.avatar.avatar-state-info:before {
+  background: #33b5e5;
+}
+
+.avatar.avatar-state-secondary:before {
+  background: #aa66cc;
+}
+
+.avatar.avatar-state-light:before {
+  background: #afb8bd;
+}
+
+.avatar.avatar-state-dark:before {
+  background: #293134;
+}
+
+.avatar-group {
+  display: -webkit-inline-box;
+  display: inline-flex;
+}
+
+.avatar-group .avatar {
+  margin-right: -1rem;
+  border: 2px solid white;
+}
+
+.avatar-group .avatar:last-child {
+  margin-right: 0;
+}
+
+.avatar-group .avatar:hover {
+  position: relative;
+  z-index: 1;
+}
+
+.dropzone {
+  border-width: 1px;
+  border-color: #0081ff;
+}
+
+body.form-membership {
+  background-attachment: fixed;
+  background-size: cover;
+  padding: 3rem 0;
+}
+
+body.form-membership .form-wrapper {
+  background-color: white;
+  box-shadow: 0 3px 10px rgba(62, 85, 120, 0.045);
+  padding: 3rem;
+  border-radius: 0.5rem;
+  width: 430px;
+  margin: 50px auto;
+  text-align: center;
+}
+
+body.form-membership .form-wrapper #logo {
+  margin: 1rem 0 3rem;
+}
+
+body.form-membership .form-wrapper #logo img:not(.logo) {
+  display: none;
+}
+
+body.form-membership .form-wrapper h5 {
+  text-align: center;
+  margin-bottom: 2rem;
+}
+
+body.form-membership .form-wrapper form .form-control,
+body.form-membership .form-wrapper form .swal-modal input.swal-content__input,
+.swal-modal body.form-membership .form-wrapper form input.swal-content__input {
+  margin-bottom: 1.5rem;
+}
+
+body.form-membership .form-wrapper hr {
+  margin: 2rem 0;
+}
+
+.user-page {
+  height: 100vh;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  overflow: auto;
+}
+
+.user-page .card,
+.user-page .app-block .app-content .app-action,
+.app-block .app-content .user-page .app-action,
+.user-page .chat-block {
+  width: 500px;
+}
+
+.user-page .card .card-body,
+.user-page .app-block .app-content .app-action .card-body,
+.app-block .app-content .user-page .app-action .card-body,
+.user-page .chat-block .card-body {
+  padding: 50px;
+}
+
+.chat-app {
+  overflow: hidden;
+  padding-bottom: 30px;
+}
+
+.chat-app .content-footer {
+  display: none;
+}
+
+.chat-app.horizontal-navigation .chat-block {
+  height: calc(100vh - 190px);
+}
+
+.chat-app.horizontal-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-top: 160px;
+}
+
+.chat-block {
+  height: calc(100vh - 135px);
+  border-radius: 0.5rem;
+  overflow: hidden;
+  margin-bottom: 0;
+}
+
+.chat-block .chat-sidebar {
+  padding: 1.5rem;
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  background-color: #f8fafb;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-header form {
+  margin: 1.5rem 0;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-content {
+  -webkit-box-flex: 1;
+          flex: 1;
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  overflow: auto;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item {
+  background: white;
+  border-radius: 0.5rem;
+  border: 1px solid transparent;
+  margin-bottom: 1rem;
+}
+
+.chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item.active {
+  color: black;
+  border-color: #0081ff;
+}
+
+.chat-block .chat-content {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  height: 100%;
+}
+
+.chat-block .chat-content .mobile-chat-close-btn {
+  display: none;
+}
+
+.chat-block .chat-content .chat-header {
+  padding: 1.5rem;
+}
+
+.chat-block .chat-content .messages {
+  padding: 1.5rem;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  -webkit-box-align: start;
+          align-items: flex-start;
+  -webkit-box-flex: 1;
+          flex: 1;
+  overflow-x: hidden;
+}
+
+.chat-block .chat-content .messages .message-item {
+  margin-bottom: 20px;
+  padding-left: 10px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  position: relative;
+}
+
+.chat-block .chat-content .messages .message-item .time {
+  margin-left: 1rem;
+}
+
+.chat-block .chat-content .messages .message-item img {
+  max-width: 30%;
+  border-radius: 0.5rem;
+}
+
+.chat-block .chat-content .messages .message-item:not(.message-media):not(.message-item-divider):before {
+  content: "";
+  border: 10px solid transparent;
+  border-right-color: #f0f0f0;
+  position: absolute;
+  top: 8px;
+  left: -10px;
+  z-index: 1;
+}
+
+.chat-block .chat-content .messages .message-item .message-item-content {
+  max-width: 75%;
+  background-color: #f0f0f0;
+  padding: 7px 15px;
+  line-height: 1.5rem;
+  border-radius: 0.5rem;
+  position: relative;
+  z-index: 2;
+}
+
+.chat-block .chat-content .messages .message-item.me {
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: reverse;
+          flex-direction: row-reverse;
+  margin-left: auto;
+  padding-left: 0px;
+  padding-right: 10px;
+}
+
+.chat-block .chat-content .messages .message-item.me .time {
+  margin-left: 0;
+  margin-right: 1rem;
+}
+
+.chat-block .chat-content .messages .message-item.me:not(.message-item-divider):before {
+  left: auto;
+  right: -10px;
+  border-left-color: #0081ff;
+  border-right-color: transparent;
+}
+
+.chat-block .chat-content .messages .message-item.me .message-item-content {
+  background-color: #0081ff;
+  color: rgba(255, 255, 255, 0.9);
+}
+
+.chat-block .chat-content .messages .message-item.message-item-divider {
+  width: 100%;
+  display: -webkit-box;
+  display: flex;
+}
+
+.chat-block .chat-content .messages .message-item.message-item-divider span {
+  padding: 0 10px;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.chat-block .chat-content .messages .message-item.message-item-divider:before,
+.chat-block .chat-content .messages .message-item.message-item-divider:after {
+  content: "";
+  display: block;
+  height: 1px;
+  background-color: #f0f0f0;
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.chat-block .chat-content .chat-footer {
+  padding: 1.5rem;
+}
+
+.chat-block .chat-content .chat-footer .chat-footer-buttons button {
+  margin-left: 0.5rem;
+}
+
+.table:not(.table-bordered) thead th {
+  border-top: none;
+  border-bottom-width: 1px;
+  font-weight: 500;
+  text-transform: uppercase;
+  font-size: 11px;
+  letter-spacing: 0.5px;
+}
+
+.table:not(.table-bordered) td {
+  vertical-align: middle;
+  line-height: 1;
+  white-space: nowrap;
+}
+
+.table .dropdown-menu {
+  margin-top: 0;
+}
+
+.table.table-lg td {
+  padding: 1.3rem 0.75rem;
+}
+
+.table tr.tr-selected {
+  background-color: whitesmoke;
+}
+
+.table.table-striped tbody tr:nth-of-type(odd) {
+  background-color: rgba(0, 0, 0, 0.03);
+}
+
+.table-responsive-stack tr {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+  flex-direction: row;
+}
+
+.table-responsive-stack td,
+.table-responsive-stack th {
+  display: block;
+  -webkit-box-flex: 1;
+          flex: 1 1 auto;
+}
+
+.timeline .timeline-item {
+  padding-bottom: 20px;
+  position: relative;
+  display: -webkit-box;
+  display: flex;
+}
+
+.timeline .timeline-item > div:last-child {
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.timeline .timeline-item::before {
+  content: "";
+  display: block;
+  position: absolute;
+  width: 1px;
+  bottom: 0px;
+  top: 32px;
+  left: 15px;
+  background: #e1e1e1;
+}
+
+.timeline .timeline-item:last-child {
+  padding-bottom: 0;
+  bottom: 0;
+}
+
+.timeline .timeline-item:last-child::before {
+  display: none;
+}
+
+#external-events .fc-event {
+  border: none;
+  background: none;
+  color: #646464;
+  font-size: 14px;
+  cursor: move;
+}
+
+#external-events .fc-event i {
+  margin-right: 10px;
+}
+
+.fc .fc-center h2 {
+  font-weight: 400;
+  font-size: 19px;
+  color: #828282;
+}
+
+.fc .fc-event {
+  background: #0081ff;
+  color: white !important;
+  border: none;
+  border-radius: 0;
+  margin: 0 3px;
+  padding: 0px 4px;
+  font-size: 11px;
+  line-height: normal;
+}
+
+.fc .fc-event:hover {
+  background: #0151ac;
+}
+
+.fc .fc-event.bg-danger:hover {
+  background: #eb3030 !important;
+}
+
+.fc .fc-event.bg-success:hover {
+  background: #00b43d !important;
+}
+
+.fc .fc-event.bg-info:hover {
+  background: #1fa1d1 !important;
+}
+
+.fc .fc-event.bg-warning:hover {
+  background: #eba71f !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-danger:hover td {
+  background: #ea5455 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-danger .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-success:hover td {
+  background: #28c76f !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-success .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-info:hover td {
+  background: #33b5e5 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-info .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-warning:hover td {
+  background: #ff9f43 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-warning .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-primary:hover td {
+  background: #0081ff !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-primary .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-secondary:hover td {
+  background: #aa66cc !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-secondary .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-dark:hover td {
+  background: #293134 !important;
+}
+
+.fc .fc-list-table .fc-list-item.bg-dark .fc-event-dot {
+  background: white !important;
+}
+
+.fc .fc-state-default {
+  background-image: none;
+  border: none;
+  box-shadow: none;
+  text-shadow: none;
+}
+
+.fc .fc-state-default.fc-state-active {
+  background: #0081ff;
+  color: white;
+}
+
+.fc .fc-event-dot {
+  background: #cdcdcd !important;
+}
+
+.fc-toolbar .fc-state-active,
+.fc-toolbar .ui-state-active {
+  z-index: 2;
+}
+
+.list-group .list-group-item.list-group-item-primary {
+  background: #0081ff !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-primary-bright {
+  background: rgba(0, 129, 255, 0.3) !important;
+  color: #0081ff !important;
+}
+
+.list-group .list-group-item.list-group-item-secondary {
+  background: #aa66cc !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-secondary-bright {
+  background: rgba(170, 102, 204, 0.3) !important;
+  color: #aa66cc !important;
+}
+
+.list-group .list-group-item.list-group-item-success {
+  background: #28c76f !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-success-bright {
+  background: rgba(40, 199, 111, 0.3) !important;
+  color: #28c76f !important;
+}
+
+.list-group .list-group-item.list-group-item-danger {
+  background: #ea5455 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-danger-bright {
+  background: rgba(234, 84, 85, 0.3) !important;
+  color: #ea5455 !important;
+}
+
+.list-group .list-group-item.list-group-item-warning {
+  background: #ff9f43 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-warning-bright {
+  background: rgba(255, 159, 67, 0.3) !important;
+  color: #ff9f43 !important;
+}
+
+.list-group .list-group-item.list-group-item-info {
+  background: #33b5e5 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-info-bright {
+  background: rgba(51, 181, 229, 0.3) !important;
+  color: #33b5e5 !important;
+}
+
+.list-group .list-group-item.list-group-item-light {
+  background: #afb8bd !important;
+}
+
+.list-group .list-group-item.list-group-item-dark {
+  background: #293134 !important;
+  color: white !important;
+}
+
+.list-group .list-group-item.list-group-item-dark-bright {
+  background: #d4d5d8 !important;
+  color: #293134 !important;
+}
+
+.nav-pills .nav-link.active,
+.nav-pills .show > .nav-link {
+  background-color: #0081ff;
+}
+
+.toast-title {
+  font-weight: bold;
+}
+
+.toast-message {
+  -ms-word-wrap: break-word;
+  word-wrap: break-word;
+}
+
+.toast-message a,
+.toast-message .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .toast-message button.btn,
+.toast-message label {
+  color: #ffffff;
+}
+
+.toast-message a:hover,
+.toast-message .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .toast-message button.btn:hover {
+  color: #cccccc;
+  text-decoration: none;
+}
+
+.toast-close-button {
+  position: relative;
+  right: -0.3em;
+  top: -0.3em;
+  float: right;
+  font-size: 20px;
+  font-weight: bold;
+  color: #ffffff;
+  opacity: 0.8;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  filter: alpha(opacity=80);
+}
+
+.toast-close-button:hover,
+.toast-close-button:focus {
+  color: #000000;
+  text-decoration: none;
+  cursor: pointer;
+  opacity: 0.4;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
+  filter: alpha(opacity=40);
+}
+
+/*Additional properties for button version
+ iOS requires the button element instead of an anchor tag.
+ If you want the anchor version, it requires `href="#"`.*/
+
+button.toast-close-button {
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+  -webkit-appearance: none;
+}
+
+.toast-top-center {
+  top: 30px;
+  right: 0;
+  width: 100%;
+}
+
+.toast-bottom-center {
+  bottom: 0;
+  right: 0;
+  width: 100%;
+}
+
+.toast-top-full-width {
+  top: 30px;
+  right: 0;
+  width: 100%;
+}
+
+.toast-bottom-full-width {
+  bottom: 0;
+  right: 0;
+  width: 100%;
+}
+
+.toast-top-left {
+  top: 30px;
+  left: 33px;
+}
+
+.toast-top-right {
+  top: 33px;
+  right: 33px;
+}
+
+.toast-bottom-right {
+  right: 33px;
+  bottom: 33px;
+}
+
+.toast-bottom-left {
+  bottom: 33px;
+  left: 33px;
+}
+
+#toast-container {
+  position: fixed;
+  z-index: 999999;
+  pointer-events: none;
+  /*overrides*/
+}
+
+#toast-container * {
+  box-sizing: border-box;
+}
+
+#toast-container > div {
+  position: relative;
+  overflow: hidden;
+  margin: 0 0 6px;
+  padding: 15px 15px 15px 50px;
+  width: 300px;
+  border-radius: 0.25rem;
+  background-position: 15px center;
+  background-repeat: no-repeat;
+  color: #ffffff;
+  opacity: 1;
+}
+
+#toast-container > div:hover {
+  cursor: pointer;
+}
+
+#toast-container > .toast-info {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container > .toast-error {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container > .toast-success {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
+}
+
+#toast-container > .toast-warning {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container.toast-top-center > div,
+#toast-container.toast-bottom-center > div {
+  width: 300px;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+#toast-container.toast-top-full-width > div,
+#toast-container.toast-bottom-full-width > div {
+  width: 96%;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.toast {
+  background-color: #293134;
+  border: none;
+  box-shadow: none;
+}
+
+.toast-success {
+  background-color: #28c76f;
+}
+
+.toast-error {
+  background-color: #ea5455;
+}
+
+.toast-info {
+  background-color: #33b5e5;
+}
+
+.toast-warning {
+  background-color: #ff9f43;
+}
+
+.toast-progress {
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  height: 2px;
+  background-color: #000000;
+  opacity: 0.2;
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=20);
+  filter: alpha(opacity=20);
+}
+
+/*Responsive Design*/
+
+@media all and (max-width: 240px) {
+  #toast-container > div {
+    padding: 8px 8px 8px 50px;
+    width: 11em;
+  }
+
+  #toast-container .toast-close-button {
+    right: -0.2em;
+    top: -0.2em;
+  }
+}
+
+@media all and (min-width: 241px) and (max-width: 480px) {
+  #toast-container > div {
+    padding: 8px 8px 8px 50px;
+    width: 18em;
+  }
+
+  #toast-container .toast-close-button {
+    right: -0.2em;
+    top: -0.2em;
+  }
+}
+
+@media all and (min-width: 481px) and (max-width: 768px) {
+  #toast-container > div {
+    padding: 15px 15px 15px 50px;
+    width: 25em;
+  }
+}
+
+.dd-handle {
+  font-weight: normal;
+}
+
+.dd-handle:hover {
+  color: #0081ff;
+}
+
+.dd3-content {
+  font-weight: normal;
+}
+
+.slick-next {
+  right: 5px;
+}
+
+.slick-prev {
+  left: 5px;
+}
+
+.slick-prev,
+.slick-next {
+  width: 30px;
+  height: 30px;
+  z-index: 1;
+}
+
+.slick-prev:before,
+.slick-next:before {
+  font-size: 30px;
+}
+
+.slick-slide-item > * {
+  padding: 10px;
+}
+
+.slick-center {
+  -webkit-transition: -webkit-transform 0.3s;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+  -webkit-transform: scale(1.2);
+          transform: scale(1.2);
+}
+
+/* the slides */
+
+.slick-slide {
+  margin: 0 10px;
+}
+
+/* the parent */
+
+.slick-list {
+  margin: 0 -10px;
+}
+
+.stretch-layout {
+  overflow: hidden;
+}
+
+.stretch-layout .app-block {
+  height: calc(100vh - 135px);
+}
+
+.stretch-layout .content-footer {
+  display: none;
+}
+
+.stretch-layout:not(.chat-app).right-navigation.small-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-left: 30px !important;
+  padding-right: 110px !important;
+}
+
+.stretch-layout.hidden-navigation .layout-wrapper .content-wrapper .content-body .content {
+  padding-right: 30px !important;
+  padding-left: 30px !important;
+}
+
+.stretch-layout.horizontal-navigation .app-block {
+  height: calc(100vh - 190px);
+}
+
+.app-block .app-sidebar {
+  height: 100%;
+}
+
+.app-block .app-sidebar > .card,
+.app-block .app-content .app-sidebar > .app-action,
+.app-block .app-sidebar > .chat-block {
+  height: 100%;
+  margin-bottom: 0;
+}
+
+.app-block .app-sidebar > .card .card-body,
+.app-block .app-content .app-sidebar > .app-action .card-body,
+.app-block .app-sidebar > .chat-block .card-body {
+  -webkit-box-flex: 0;
+          flex: none;
+}
+
+.app-block .app-sidebar .app-sidebar-menu {
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.app-block .app-sidebar .app-sidebar-menu .list-group .list-group-item.active {
+  background: none;
+  color: #0081ff;
+}
+
+.app-block .app-sidebar-menu-button {
+  display: none;
+}
+
+.app-block .app-content {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  height: 100%;
+}
+
+.app-block .app-content .app-content-overlay {
+  display: none;
+  position: absolute;
+  right: 1rem;
+  border-radius: 8px;
+  left: 1rem;
+  top: 0;
+  bottom: 0;
+  background-color: rgba(0, 0, 0, 0.25);
+  z-index: 8;
+}
+
+.app-block .app-content .app-content-overlay.show {
+  display: block;
+}
+
+.app-block .app-content .app-action {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  padding: 1.5rem;
+}
+
+.app-block .app-content .app-action .action-left,
+.app-block .app-content .app-action .action-right {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.app-block .app-content .app-action .action-right {
+  margin-left: 1rem;
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+}
+
+.app-block .app-content .app-action .action-right form {
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.app-block .app-content .app-content-body {
+  margin-bottom: 0;
+  -webkit-box-flex: 1;
+          flex: 1;
+  padding: 0;
+  height: 100%;
+  position: static;
+  overflow: hidden;
+}
+
+.app-block .app-content .app-content-body .app-lists {
+  height: 100%;
+  overflow: auto;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item {
+  padding-top: 15px;
+  padding-bottom: 15px;
+  background: none;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item:hover {
+  cursor: pointer;
+  background-color: #fafafa;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active {
+  background-color: #ebebeb;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .avatar {
+  border-color: #ebebeb;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .app-list-title {
+  color: black;
+}
+
+.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active.task-list .app-list-title {
+  text-decoration: line-through;
+}
+
+.app-block .app-content .app-content-body .app-detail {
+  margin-bottom: 0;
+  position: absolute;
+  right: 0.9rem;
+  top: 0.5rem;
+  bottom: 0;
+  left: 0.9rem;
+  z-index: 2;
+  opacity: 0;
+  visibility: hidden;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+
+.app-block .app-content .app-content-body .app-detail.show {
+  opacity: 1;
+  visibility: visible;
+  top: 0;
+}
+
+.app-block .app-content .app-content-body .app-detail .card-header {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 1.5rem;
+  border-bottom: 1px solid #ebebeb;
+}
+
+.app-block .app-content .app-content-body .app-detail .card-header .app-detail-action-left {
+  display: -webkit-box;
+  display: flex;
+}
+
+.app-block .app-content .app-content-body .app-detail .card-header .app-detail-action-right {
+  margin-left: auto;
+}
+
+#compose .ql-toolbar.ql-snow,
+.app-block .ql-toolbar.ql-snow {
+  border: none;
+  padding: 0;
+}
+
+#compose .ql-editor,
+.app-block .ql-editor {
+  min-height: 70px;
+}
+
+.app-sortable-handle {
+  cursor: move;
+}
+
+.app-file-list {
+  border: 1px solid #ebebeb;
+}
+
+.app-file-list .app-file-icon {
+  background-color: #f5f5f5;
+  padding: 2rem;
+  text-align: center;
+  font-size: 2rem;
+  border-bottom: 1px solid #ebebeb;
+  border-top-right-radius: 8px;
+  border-top-left-radius: 8px;
+}
+
+.app-file-list:hover {
+  border-color: #d7d7d7;
+}
+
+body:not(.stretch-layout) .app-block .app-content .app-content-body {
+  overflow: visible;
+}
+
+.demo-icon-list {
+  height: 100px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+  font-size: 25px;
+}
+
+@media (max-width: 768px) {
+  .theme-switcher {
+    display: none;
+  }
+}
+
+@media (min-width: 768px) {
+  .theme-switcher {
+    opacity: 0;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    position: fixed;
+    right: -250px;
+    top: 50%;
+    -webkit-transform: translate(0, -50%);
+            transform: translate(0, -50%);
+    -webkit-user-select: none;
+       -moz-user-select: none;
+        -ms-user-select: none;
+            user-select: none;
+    z-index: 9999;
+    -webkit-transition: right 0.3s;
+    transition: right 0.3s;
+  }
+
+  .theme-switcher.open {
+    right: 0;
+  }
+
+  .theme-switcher .theme-switcher-button {
+    background-color: #0081ff;
+    color: white;
+    padding: 12px 15px;
+    border-top-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    cursor: pointer;
+  }
+
+  .theme-switcher .theme-switcher-button i {
+    font-size: 22px;
+    -webkit-animation-name: spin;
+            animation-name: spin;
+    -webkit-animation-duration: 3000ms;
+            animation-duration: 3000ms;
+    -webkit-animation-iteration-count: infinite;
+            animation-iteration-count: infinite;
+    -webkit-animation-timing-function: linear;
+            animation-timing-function: linear;
+  }
+
+  .theme-switcher .theme-switcher-panel {
+    width: 250px;
+  }
+
+  .theme-switcher .theme-switcher-panel .card,
+  .theme-switcher .theme-switcher-panel .chat-block,
+  .theme-switcher .theme-switcher-panel .app-block .app-content .app-action,
+  .app-block .app-content .theme-switcher .theme-switcher-panel .app-action {
+    margin-bottom: 0;
+    border: 1px solid #0081ff;
+    border-right: none;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+
+@-webkit-keyframes spin {
+    from {
+      -webkit-transform: rotate(0deg);
+              transform: rotate(0deg);
+    }
+
+    to {
+      -webkit-transform: rotate(360deg);
+              transform: rotate(360deg);
+    }
+}
+
+@keyframes spin {
+    from {
+      -webkit-transform: rotate(0deg);
+              transform: rotate(0deg);
+    }
+
+    to {
+      -webkit-transform: rotate(360deg);
+              transform: rotate(360deg);
+    }
+}
+}
+
+@media (min-width: 1200px) {
+  body.boxed-layout {
+    background-color: white;
+  }
+
+  body.boxed-layout .layout-wrapper {
+    background-color: #f8fafb;
+    box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+    margin: 0 120px;
+  }
+
+  body.boxed-layout .layout-wrapper .header {
+    margin: 0 120px;
+  }
+
+  body.boxed-layout .layout-wrapper .navigation {
+    left: 120px;
+  }
+
+  body.boxed-layout.right-navigation .navigation {
+    left: auto;
+    right: 120px;
+  }
+
+  body.boxed-layout.horizontal-navigation .horizontal-navigation {
+    left: 120px;
+    right: 120px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation {
+    width: 80px;
+    -webkit-transition: width 0.3s;
+    transition: width 0.3s;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-tab {
+    border-right-color: transparent;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn {
+    padding: 12px 0;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li {
+    position: relative;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li:hover > a .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li:hover > button.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li:hover > button.btn .nav-link-icon {
+    stroke: #0081ff;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn {
+    border-radius: 4px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a span:not(.badge):not(.avatar-title),
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn span:not(.badge):not(.avatar-title),
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn span:not(.badge):not(.avatar-title) {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a .badge,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .badge,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn .badge {
+    position: absolute;
+    right: 20px;
+    top: 12px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li a .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+    margin: 0 !important;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul li.open > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn + ul li.open > a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn + ul li.open > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > a + ul li.open > button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn + ul li.open > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > button.btn + ul li.open > button.btn {
+    background: none;
+    color: #0081ff;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body ul li.open > ul {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li:not(.navigation-divider) {
+    padding: 0 15px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn {
+    display: block;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a .sub-menu-arrow,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn .sub-menu-arrow {
+    display: none;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn {
+    padding-left: 53px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li a,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li a + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li a + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li a + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li .header form .input-group .input-group-append button.btn + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a + ul li button.btn + ul li button.btn,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.btn + ul li button.btn + ul li button.btn {
+    padding-left: 65px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a.active,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.active.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.active.btn {
+    border-radius: 5px;
+    background-color: #0081ff;
+    position: static;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > a.active .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .header form .input-group .input-group-append .navigation-menu-body > ul > li > button.active.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation .navigation-menu-body > ul > li > button.active.btn .nav-link-icon {
+    stroke: white;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover {
+    width: 320px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover .navigation-menu-tab {
+    border-right-color: #e6e6e6;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover .navigation-menu-body {
+    display: -webkit-box;
+    display: flex;
+    height: calc(100vh - 75px);
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a > span,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn > span,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn > span,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a .sub-menu-arrow,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn .sub-menu-arrow {
+    display: inherit !important;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li a .nav-link-icon,
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+  .header form .input-group .input-group-append body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li button.btn .nav-link-icon {
+    margin-right: 0.8rem !important;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .navigation:hover ul li.open > ul {
+    display: block;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 110px;
+  }
+
+  body.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) .content-footer {
+    margin-left: 80px;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .header .navigation-toggler {
+    display: block;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .navigation {
+    z-index: 1000;
+    left: -80%;
+    top: 0;
+    bottom: 0;
+    opacity: 0;
+    -webkit-transition: left 0.3s;
+    transition: left 0.3s;
+    position: fixed !important;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .navigation.open {
+    left: 0;
+    opacity: 1;
+  }
+
+  body.hidden-navigation:not(.small-navigation).right-navigation .navigation {
+    left: auto;
+    right: -80%;
+    -webkit-transition: right 0.3s;
+    transition: right 0.3s;
+  }
+
+  body.hidden-navigation:not(.small-navigation).right-navigation .navigation.open {
+    right: 0;
+    opacity: 1;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+  }
+
+  body.hidden-navigation:not(.small-navigation) .content-footer {
+    margin-left: 0;
+  }
+
+  body.right-navigation .navigation {
+    left: auto;
+    right: 0;
+    -webkit-box-orient: horizontal;
+    -webkit-box-direction: reverse;
+            flex-direction: row-reverse;
+  }
+
+  body.right-navigation .navigation .navigation-menu-tab {
+    border-right: none;
+    border-left: 1px solid #e6e6e6;
+  }
+
+  body.right-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+    padding-right: 350px;
+  }
+
+  body.right-navigation .content-footer {
+    margin-left: 0;
+    margin-right: 320px;
+  }
+
+  body.right-navigation.small-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px !important;
+    padding-right: 110px;
+  }
+
+  body.right-navigation.small-navigation .content-footer {
+    margin-left: 0 !important;
+    margin-right: 80px;
+  }
+
+  body.right-navigation.hidden-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px !important;
+    padding-right: 30px;
+  }
+
+  body.horizontal-navigation .header {
+    box-shadow: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation {
+    border-top: 1px solid #e6e6e6;
+    box-shadow: 0px 5px 10px -10px rgba(0, 0, 0, 0.4);
+    position: fixed;
+    top: 75px;
+    background-color: white;
+    height: 55px;
+    right: 0;
+    left: 0;
+    padding: 0 30px;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    z-index: 997;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul {
+    height: 100%;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li {
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    margin-right: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn {
+    border-radius: 100px;
+    text-transform: uppercase;
+    letter-spacing: 1px;
+    font-size: 12px;
+    padding: 10px 15px !important;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a .sub-menu-arrow,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn .sub-menu-arrow {
+    display: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a .badge,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn .badge,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn .badge {
+    margin-left: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li > a + ul,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li > button.btn + ul {
+    border-top: 1px solid #e6e6e6;
+  }
+
+  body.horizontal-navigation .horizontal-navigation > ul > li:hover > a,
+  body.horizontal-navigation .header form .input-group .input-group-append .horizontal-navigation > ul > li:hover > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation > ul > li:hover > button.btn {
+    color: #0081ff !important;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li {
+    position: relative;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn {
+    padding: 10px 25px;
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-pack: justify;
+            justify-content: space-between;
+    -webkit-box-align: center;
+            align-items: center;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .nav-icon,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .nav-icon,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .nav-icon {
+    margin-right: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li.open > a,
+  body.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li:hover > ul {
+    display: block;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul {
+    display: none;
+    position: absolute;
+    top: 54px;
+    width: 220px;
+    background-color: white;
+    padding: 10px 0;
+    border-bottom-left-radius: 0.25rem;
+    border-bottom-right-radius: 0.25rem;
+    box-shadow: 0px 5px 9px -5px rgba(0, 0, 0, 0.3);
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li {
+    position: relative;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li:hover > a,
+  body.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li:hover > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li:hover > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    color: black;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li a.active,
+  body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.active.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li.open > a,
+  body.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li.open > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul {
+    left: 220px;
+    top: -12px;
+    border-left: 1px solid #f2f2f2;
+    box-shadow: 3px 0px 10px -5px rgba(0, 0, 0, 0.3);
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul:before {
+    display: none;
+  }
+
+  body.horizontal-navigation .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+    padding-top: 160px;
+  }
+
+  body.horizontal-navigation .content-footer {
+    margin-left: 0;
+  }
+
+  body.sticky-header .header {
+    position: -webkit-sticky !important;
+    position: sticky !important;
+    top: 0;
+  }
+}
+
+@media (max-width: 1200px) {
+  body.horizontal-navigation .horizontal-navigation {
+    position: fixed;
+    left: 0;
+    top: 0;
+    bottom: 0;
+    height: auto;
+    width: 320px;
+    background-color: white;
+    z-index: 1000;
+    overflow: auto;
+    padding: 15px 0;
+    display: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn {
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-align: center;
+            align-items: center;
+    padding: 15px 30px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .nav-icon,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .nav-icon,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .nav-icon {
+    margin-right: 0.5rem;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a.active,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.active.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .badge,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .badge,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .badge,
+  body.horizontal-navigation .horizontal-navigation ul li a .sub-menu-arrow,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .sub-menu-arrow {
+    margin-left: auto;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li a .sub-menu-arrow,
+  body.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn .sub-menu-arrow,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li button.btn .sub-menu-arrow {
+    -webkit-transform: rotate(90deg);
+            transform: rotate(90deg);
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul {
+    display: none;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    padding-left: 60px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li ul li button.btn {
+    padding-left: 80px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li a,
+  body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li ul li ul li ul li button.btn {
+    padding-left: 100px;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li.open > a,
+  body.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #0081ff;
+  }
+
+  body.horizontal-navigation .horizontal-navigation ul li.open > ul {
+    display: block !important;
+  }
+
+  body.horizontal-navigation .horizontal-navigation.open {
+    display: block;
+  }
+}
+
+body.semi-dark:not(.dark) .nicescroll-cursors {
+  background-color: rgba(255, 255, 255, 0.3) !important;
+}
+
+body.semi-dark:not(.dark) .navigation {
+  background-color: #313852;
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a:not(.active):hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):hover,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn:not(.active):hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li a:not(.active):focus,
+body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):focus,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-tab ul li button.btn:not(.active):focus {
+  color: #0081ff;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body .avatar {
+  border-color: #313852;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body .list-group-item {
+  background: none;
+  border-color: #454c66;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo {
+  border-color: #454c66;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo img {
+  display: block;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body #navigation-logo img:not(.logo-light) {
+  display: none;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.navigation-divider {
+  color: #dbdbdb;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a .nav-link-icon,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+  stroke: rgba(199, 199, 199, 0.5);
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.active.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a.active:after,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn:after,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.active.btn:after {
+  background-color: #0081ff;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a:hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn:hover,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a:focus,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn:focus {
+  background: none;
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li a.active,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn + ul li a.active,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li a + ul li button.active.btn,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li button.btn + ul li button.active.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.open > a,
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.open > button.btn {
+  color: white;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li .dropdown-divider {
+  color: #0081ff;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li ul {
+  background-color: #313852 !important;
+  border-left-color: #454c66 !important;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li ul ul {
+  border-left-color: #454c66 !important;
+}
+
+body.semi-dark:not(.dark) .navigation .navigation-menu-body ul li.navigation-divider:after {
+  background-color: #454c66 !important;
+}
+
+body.semi-dark:not(.dark) .navigation .avatar:before {
+  border-color: #2c2f42;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation {
+  background-color: #313852;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li > a + ul,
+body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li > button.btn + ul {
+  border-top: 1px solid #444e72;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li > a + ul ul,
+body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li > button.btn + ul ul,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li > button.btn + ul ul {
+  border-left: 1px solid #444e72;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation > ul > li.open > a,
+body.semi-dark:not(.dark) .header form .input-group .input-group-append .horizontal-navigation > ul > li.open > button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation > ul > li.open > button.btn {
+  color: #1a8eff;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li a,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li a.active,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.active.btn {
+  color: #1a8eff;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li a:not(.active):hover,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:not(.active):hover,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn:not(.active):hover,
+body.semi-dark:not(.dark) .horizontal-navigation ul li a:not(.active):focus,
+body.semi-dark:not(.dark) .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:not(.active):focus,
+.header form .input-group .input-group-append body.semi-dark:not(.dark) .horizontal-navigation ul li button.btn:not(.active):focus {
+  color: #1a8eff;
+}
+
+body.semi-dark:not(.dark) .horizontal-navigation ul li ul {
+  background-color: #313852;
+}
+
+body.semi-dark:not(.dark).right-navigation .navigation .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+
+body.semi-dark:not(.dark).small-navigation .navigation:hover .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+
+body.semi-dark:not(.dark).small-navigation.right-navigation .navigation:hover .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+
+body.header-dark:not(.dark) .header {
+  background-color: #313852;
+  color: #c7c7c7;
+  border-bottom-color: #444e72;
+}
+
+body.header-dark:not(.dark) .header .header-logo a img,
+body.header-dark:not(.dark) .header .header-logo form .input-group .input-group-append button.btn img,
+body.header-dark:not(.dark) .header form .input-group .input-group-append .header-logo button.btn img {
+  display: block;
+}
+
+body.header-dark:not(.dark) .header .header-logo a img:not(.logo-light),
+body.header-dark:not(.dark) .header .header-logo form .input-group .input-group-append button.btn img:not(.logo-light),
+body.header-dark:not(.dark) .header form .input-group .input-group-append .header-logo button.btn img:not(.logo-light) {
+  display: none;
+}
+
+body.header-dark:not(.dark) .header .navigation-toggler a,
+body.header-dark:not(.dark) .header .navigation-toggler form .input-group .input-group-append button.btn,
+body.header-dark:not(.dark) .header form .input-group .input-group-append .navigation-toggler button.btn {
+  color: #c7c7c7;
+}
+
+body.header-dark:not(.dark) .header .navigation-toggler a:hover,
+body.header-dark:not(.dark) .header .navigation-toggler form .input-group .input-group-append button.btn:hover,
+body.header-dark:not(.dark) .header form .input-group .input-group-append .navigation-toggler button.btn:hover {
+  color: white;
+}
+
+body.header-dark:not(.dark) .header a.nav-link,
+body.header-dark:not(.dark) .header form .input-group .input-group-append button.nav-link.btn {
+  color: #c7c7c7;
+}
+
+body.header-dark:not(.dark) .header a.nav-link:hover,
+body.header-dark:not(.dark) .header form .input-group .input-group-append button.nav-link.btn:hover {
+  color: white;
+}
+
+body.header-dark:not(.dark) .header .dropdown-menu {
+  border-top: none !important;
+}
+
+*:focus {
+  outline: none;
+}
+
+.sticky {
+  position: -webkit-sticky !important;
+  position: sticky !important;
+  top: 0;
+}
+
+.lead {
+  line-height: 2.2rem;
+}
+
+.layout-wrapper {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  min-height: 100vh;
+}
+
+.layout-wrapper .content-wrapper {
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+}
+
+.layout-wrapper .content-wrapper .content-body {
+  width: 0;
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+}
+
+.layout-wrapper .content-wrapper .content-body .content {
+  -webkit-box-flex: 1;
+          flex: 1;
+  padding: 30px;
+  padding-top: 105px;
+  padding-left: 350px;
+  padding-bottom: 0;
+}
+
+svg.feather {
+  width: 20px;
+  height: 20px;
+}
+
+.demo-code-preview {
+  border: 1px solid #ebebeb;
+  padding: 20px 10px;
+  margin-top: 2rem;
+  position: relative;
+  background-color: white;
+  border-radius: 8px;
+}
+
+.demo-code-preview + * {
+  margin-top: 1.5rem;
+}
+
+.demo-code-preview:before {
+  content: attr(data-label);
+  display: block;
+  position: absolute;
+  top: -9px;
+  left: 20px;
+  letter-spacing: 1px;
+  background-color: inherit;
+  font-size: 11px;
+  padding: 0 5px;
+}
+
+.demo-code-preview pre {
+  overflow-x: hidden;
+  background: none;
+  padding-top: 0;
+  padding-bottom: 0;
+  max-height: 300px;
+}
+
+.demo-code-preview:hover pre {
+  overflow-x: auto;
+}
+
+code[class*=language-],
+pre[class*=language-] {
+  font-size: 0.93em;
+  margin: 0;
+}
+
+.text-divider {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.text-divider:after {
+  content: "";
+  display: block;
+  height: 1px;
+  background-color: #f0f0f0;
+  -webkit-box-flex: 1;
+          flex: 1;
+}
+
+.text-divider span {
+  margin-right: 1rem;
+}
+
+.row-xs {
+  margin-left: -0.5rem;
+  margin-right: -0.5rem;
+}
+
+.row-xs > div {
+  padding-left: 0.5rem;
+  padding-right: 0.5rem;
+}
+
+.overlay {
+  position: fixed;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: 999;
+  opacity: 0;
+  background: rgba(0, 0, 0, 0.3);
+  -webkit-transition: opacity 0.5s;
+  transition: opacity 0.5s;
+}
+
+.overlay.show {
+  opacity: 1;
+}
+
+.tooltip {
+  pointer-events: none;
+  font-family: inherit;
+  font-size: 0.835rem !important;
+}
+
+.tooltip .arrow {
+  display: none;
+}
+
+.tooltip .tooltip-inner {
+  background: rgba(0, 0, 0, 0.7);
+}
+
+.file-manager-items {
+  display: -webkit-box;
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.file-manager-items .file-manager-item {
+  margin-right: 20px;
+  margin-bottom: 20px;
+}
+
+.file-manager-items .file-manager-item span {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  width: 135px;
+  height: 115px;
+  font-size: 8.5em;
+  border: 1px solid #e1e1e1;
+  border-radius: 5px;
+  background-size: cover !important;
+  background-position: center !important;
+}
+
+.file-manager-items .file-manager-item.folder span {
+  color: #cea65b;
+}
+
+.file-manager-items .file-manager-item.image span:before {
+  display: none;
+}
+
+.small,
+.page-header .breadcrumb li.breadcrumb-item,
+.chat-block .chat-content .messages .message-item.message-item-divider span,
+small {
+  font-size: 12px;
+}
+
+.list-group .list-group-item {
+  padding: 0.75rem 1.5rem;
+}
+
+.list-group .list-group-item.active {
+  z-index: auto;
+  background: #0081ff;
+}
+
+.bring-forward {
+  position: relative;
+  z-index: 1;
+}
+
+.table-email-list table.table .dropdown [data-toggle=dropdown]:after {
+  display: none;
+}
+
+.table-email-list table.table .email-subject {
+  max-width: 80%;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.table-email-list table.table .email-subject a,
+.table-email-list table.table .email-subject .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .table-email-list table.table .email-subject button.btn {
+  display: inline-block;
+}
+
+.table-email-list table.table td,
+.table-email-list table.table .table th {
+  padding: 0.8rem;
+}
+
+.table-email-list a,
+.table-email-list .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .table-email-list button.btn {
+  color: #646464;
+}
+
+.table-email-list a:hover,
+.table-email-list .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .table-email-list button.btn:hover,
+.table-email-list a:focus,
+.table-email-list .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append .table-email-list button.btn:focus {
+  color: #0081ff;
+}
+
+.read-mail-body img {
+  max-width: 50%;
+}
+
+.bootstrap-tagsinput {
+  box-shadow: none;
+  width: 100%;
+  border: 1px solid #ced4da;
+  min-height: calc(2.25rem + 2px);
+}
+
+.bootstrap-tagsinput.focus {
+  border-color: #3383de;
+}
+
+.bootstrap-tagsinput .tag {
+  display: -webkit-inline-box;
+  display: inline-flex;
+  color: black;
+  border-radius: 3px;
+  font-size: 13px;
+  padding: 0 8px;
+  margin: 2px 1px;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  -webkit-box-align: center;
+          align-items: center;
+  background: #e1e1e1;
+}
+
+.list-group .list-group-item.active {
+  background: #0081ff;
+  border-color: transparent;
+}
+
+.list-group-flush .list-group-item:first-child {
+  border-top: 0;
+}
+
+.badge {
+  font-weight: 500;
+}
+
+.nav-pills .nav-link.active {
+  background: #0081ff;
+}
+
+.nav-tabs .nav-link.active {
+  color: #0081ff;
+}
+
+.text-muted,
+.chat-block .chat-content .messages .message-item.message-item-divider span,
+.demo-code-preview:before {
+  color: #a7abc3 !important;
+}
+
+.min-width-0 {
+  min-width: 0;
+}
+
+.list-group-item {
+  border-color: #e6e6e6;
+}
+
+.jqstooltip {
+  box-sizing: content-box;
+}
+
+.hide-show-toggler .hide-show-toggler-item {
+  display: none;
+}
+
+.hide-show-toggler:hover .hide-show-toggler-item,
+.hide-show-toggler:focus .hide-show-toggler-item {
+  display: block;
+}
+
+.tooltip {
+  font-size: 14px;
+}
+
+.jqvmap-zoomin,
+.jqvmap-zoomout {
+  box-sizing: initial;
+}
+
+.apexcharts-canvas {
+  margin: auto;
+}
+
+[data-backround-image] {
+  position: relative;
+  background-size: cover !important;
+  background-position: center !important;
+}
+
+[data-backround-image]:after {
+  content: "";
+  display: block;
+  background: rgba(255, 255, 255, 0.6);
+  position: absolute;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+}
+
+[data-backround-image] > * {
+  position: relative;
+  z-index: 1;
+}
+
+.dropdown-menu [data-backround-image]:after {
+  border-radius: 0;
+}
+
+.jqvmap-region {
+  fill: rgba(170, 102, 204, 0.3);
+}
+
+.jqvmap-region:hover {
+  fill: #aa66cc;
+}
+
+.a-0 {
+  top: 0px;
+  right: 0px;
+  bottom: 0px;
+  left: 0px;
+}
+
+.font-weight-800 {
+  font-weight: 800;
+}
+
+.circle canvas {
+  vertical-align: top;
+}
+
+.todo-item {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  margin-bottom: 10px;
+}
+
+.todo-item input[type=checkbox]:checked + label {
+  text-decoration: line-through;
+  color: #00961f;
+}
+
+.border-radius-1 {
+  border-radius: 5px;
+}
+
+.rounded {
+  border-radius: 0.5rem !important;
+}
+
+.nav-tabs .nav-link {
+  border-top-left-radius: 0.5rem;
+  border-top-right-radius: 0.5rem;
+}
+
+.nav-pills .nav-link {
+  border-radius: 0.5rem;
+}
+
+.apexcharts-legend.position-top.center {
+  -webkit-box-pack: end !important;
+          justify-content: flex-end !important;
+}
+
+.image-hover {
+  position: relative;
+}
+
+.image-hover .image-hover-body {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: end;
+          align-items: flex-end;
+  opacity: 0;
+  visibility: hidden;
+  position: absolute;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, 0.5);
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  color: white;
+  padding: 20px 30px;
+}
+
+.image-hover:hover .image-hover-body {
+  opacity: 1;
+  visibility: visible;
+}
+
+.nav-analiytics-style .nav-link {
+  padding: 0.5rem 1.5rem;
+}
+
+.daterangepicker {
+  font-family: "Inter";
+}
+
+.header {
+  background-color: white;
+  z-index: 999;
+  display: -webkit-box;
+  display: flex;
+  height: 75px;
+  box-shadow: 0px 5px 10px -10px rgba(0, 0, 0, 0.4);
+  position: fixed;
+  right: 0;
+  left: 0;
+  top: 0;
+}
+
+.header .avatar {
+  border-color: transparent;
+}
+
+.header .avatar.avatar-state-success:before {
+  border-color: #0081ff;
+}
+
+.header .header-left {
+  width: 320px;
+  padding-left: 30px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.header .header-left .navigation-toggler {
+  display: none;
+  margin-right: 15px;
+}
+
+.header .header-left .navigation-toggler a,
+.header .header-left .navigation-toggler form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .header-left .navigation-toggler button.btn {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.header .header-left .navigation-toggler a svg,
+.header .header-left .navigation-toggler form .input-group .input-group-append button.btn svg,
+.header form .input-group .input-group-append .header-left .navigation-toggler button.btn svg {
+  height: 30px;
+  width: 30px;
+}
+
+.header .header-logo a,
+.header .header-logo form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .header-logo button.btn {
+  height: 75px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.header .header-logo a img:not(.logo),
+.header .header-logo form .input-group .input-group-append button.btn img:not(.logo),
+.header form .input-group .input-group-append .header-logo button.btn img:not(.logo) {
+  display: none;
+}
+
+.header .header-body {
+  padding: 0 30px;
+  position: relative;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-flex: 1;
+          flex: auto;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+}
+
+.header .header-body .page-title h1,
+.header .header-body .page-title h2,
+.header .header-body .page-title h3,
+.header .header-body .page-title h4,
+.header .header-body .page-title h5,
+.header .header-body .page-title h6 {
+  margin-bottom: 0;
+  line-height: inherit;
+}
+
+.header form .input-group {
+  position: relative;
+}
+
+.header form .input-group .form-control,
+.header form .input-group .swal-modal input.swal-content__input,
+.swal-modal .header form .input-group input.swal-content__input {
+  border: none;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+
+.header form .input-group .form-control:focus,
+.header form .input-group .swal-modal input.swal-content__input:focus,
+.swal-modal .header form .input-group input.swal-content__input:focus {
+  background-color: rgba(255, 255, 255, 0.2);
+}
+
+.header form .input-group .input-group-append {
+  position: absolute;
+  right: 0;
+}
+
+.header form .input-group .input-group-append button.btn {
+  position: relative;
+  z-index: 9;
+  border-top-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  background-color: inherit;
+  border: none;
+}
+
+.header form .input-group .input-group-append button.btn:hover {
+  opacity: 0.7;
+}
+
+.header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append button.btn:active,
+.header form .input-group .input-group-append button.btn:hover {
+  background-color: inherit;
+  box-shadow: none !important;
+}
+
+.header .header-toggler {
+  display: none;
+}
+
+.header [data-toggle=fullscreen] .minimize {
+  display: none;
+}
+
+.header .active-fullscreen .minimize {
+  display: block;
+}
+
+.header .active-fullscreen .maximize {
+  display: none;
+}
+
+.header ul.navbar-nav {
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+          flex-direction: row;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn {
+  line-height: 100%;
+  padding: 10px 15px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+          justify-content: center;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link.nav-link-notify,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.nav-link-notify.btn,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.nav-link-notify.btn {
+  position: relative;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link.nav-link-notify:before,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.nav-link-notify.btn:before,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.nav-link-notify.btn:before {
+  content: "";
+  position: absolute;
+  width: 6px;
+  height: 6px;
+  right: 0;
+  border-radius: 50%;
+  top: 3px;
+  background: #ea5455;
+  -webkit-animation: notify-pulse 1s infinite;
+}
+
+.header ul.navbar-nav li.nav-item a.nav-link:hover,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn:hover,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn:hover,
+.header ul.navbar-nav li.nav-item a.nav-link:focus,
+.header ul.navbar-nav li.nav-item form .input-group .input-group-append button.nav-link.btn:focus,
+.header form .input-group .input-group-append ul.navbar-nav li.nav-item button.nav-link.btn:focus {
+  outline: none;
+}
+
+.header ul.navbar-nav + form.search {
+  margin-left: 1.5rem;
+}
+
+.header .dropdown-menu {
+  position: absolute;
+}
+
+@-webkit-keyframes notify-pulse {
+  0% {
+    box-shadow: 0 0 0 0px rgba(234, 84, 85, 0.7);
+  }
+
+  100% {
+    box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
+  }
+}
+
+@keyframes notify-pulse {
+  0% {
+    box-shadow: 0 0 0 0px rgba(234, 84, 85, 0.7);
+  }
+
+  100% {
+    box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
+  }
+}
+
+.navigation {
+  background-color: white;
+  z-index: 998;
+  width: 320px;
+  box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.1);
+  position: fixed;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: horizontal;
+  -webkit-box-direction: normal;
+          flex-direction: row;
+  left: 0;
+  bottom: 0;
+  top: 75px;
+}
+
+.navigation .navigation-menu-tab {
+  border-right: 1px solid #e6e6e6;
+  width: 80px;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  margin-right: 0;
+  padding: 10px;
+}
+
+.navigation .navigation-menu-tab .avatar {
+  border: none;
+}
+
+.navigation .navigation-menu-tab ul li {
+  margin-bottom: 5px;
+}
+
+.navigation .navigation-menu-tab ul li a,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn {
+  display: -webkit-box;
+  display: flex;
+  height: 50px;
+  -webkit-box-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+          align-items: center;
+  border-radius: 0.5rem;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+
+.navigation .navigation-menu-tab ul li a:hover,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn:hover {
+  color: #0081ff;
+}
+
+.navigation .navigation-menu-tab ul li a.active,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+  background-color: #0081ff;
+  box-shadow: 0px 5px 20px -14px #0081ff;
+}
+
+.navigation .navigation-menu-tab ul li a svg,
+.navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn svg,
+.header form .input-group .input-group-append .navigation .navigation-menu-tab ul li button.btn svg {
+  width: 23px;
+  height: 23px;
+}
+
+.navigation .navigation-menu-body {
+  -webkit-box-flex: 1;
+          flex: 1;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+  overflow: auto;
+}
+
+.navigation .navigation-menu-body .navigation-menu-group > div {
+  display: none;
+}
+
+.navigation .navigation-menu-body .navigation-menu-group > div.open {
+  display: block;
+}
+
+.navigation .navigation-menu-body ul li.navigation-divider {
+  padding: 10px 30px;
+  text-transform: uppercase;
+  font-size: 12px;
+  letter-spacing: 0.5px;
+  margin-top: 10px;
+  margin-bottom: 10px;
+  color: #a7abc3;
+}
+
+.navigation .navigation-menu-body ul li > a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn {
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  padding: 10px 30px;
+  color: #505050;
+  font-size: 14px;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+}
+
+.navigation .navigation-menu-body ul li > a .nav-link-icon,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .nav-link-icon,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .nav-link-icon {
+  margin-right: 0.8rem;
+  stroke: rgba(0, 0, 0, 0.3);
+  -webkit-transition: stroke 0.3s;
+  transition: stroke 0.3s;
+  width: 20px;
+  height: 20px;
+}
+
+.navigation .navigation-menu-body ul li > a:hover,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn:hover,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn:hover {
+  color: #0081ff;
+}
+
+.navigation .navigation-menu-body ul li > a:hover .nav-link-icon,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn:hover .nav-link-icon,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn:hover .nav-link-icon {
+  stroke: #0081ff;
+}
+
+.navigation .navigation-menu-body ul li > a.active,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.active.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.active.btn {
+  position: relative;
+  color: #0081ff;
+  font-weight: 600;
+  background: rgba(0, 129, 255, 0.15);
+  border-radius: 0.5rem;
+  margin: 0 1rem;
+}
+
+.navigation .navigation-menu-body ul li > a.active:before,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.active.btn:before,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.active.btn:before {
+  content: "";
+  display: block;
+  border: 6px solid transparent;
+  border-left-color: #0081ff;
+  margin-left: -12px;
+  margin-right: 5px;
+}
+
+.navigation .navigation-menu-body ul li > a .sub-menu-arrow,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .sub-menu-arrow,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .sub-menu-arrow {
+  margin-left: auto;
+  font-size: 14px;
+  -webkit-transition: -webkit-transform 0.3s;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+}
+
+.navigation .navigation-menu-body ul li > a .sub-menu-arrow.rotate-in,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .sub-menu-arrow.rotate-in,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .sub-menu-arrow.rotate-in {
+  -webkit-transform: rotate(540deg);
+          transform: rotate(540deg);
+}
+
+.navigation .navigation-menu-body ul li > a .badge,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn .badge,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn .badge {
+  margin-left: auto;
+  padding: 3px 7px;
+}
+
+.navigation .navigation-menu-body ul li > a + ul,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul {
+  display: none;
+}
+
+.navigation .navigation-menu-body ul li > a + ul li,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li {
+  margin: 0;
+}
+
+.navigation .navigation-menu-body ul li > a + ul li a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li a,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li a,
+.navigation .navigation-menu-body ul li > a + ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > a + ul li button.btn,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul li button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul li button.btn {
+  padding-left: 50px;
+}
+
+.navigation .navigation-menu-body ul li > a + ul ul,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul {
+  border-left: none;
+}
+
+.navigation .navigation-menu-body ul li > a + ul ul li a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul li a,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul li a,
+.navigation .navigation-menu-body ul li > a + ul ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > a + ul ul li button.btn,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li > button.btn + ul ul li button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li > button.btn + ul ul li button.btn {
+  padding-left: 70px;
+}
+
+.navigation .navigation-menu-body ul li.open > a,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > button.btn {
+  color: #0081ff;
+  font-weight: 600;
+}
+
+.navigation .navigation-menu-body ul li.open > a .nav-link-icon,
+.navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn .nav-link-icon,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > button.btn .nav-link-icon {
+  stroke: #0081ff;
+}
+
+.navigation .navigation-menu-body ul li.open > ul {
+  display: block;
+}
+
+.navigation .navigation-menu-body ul li.open > ul a.active,
+.navigation .navigation-menu-body ul li.open > ul .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append .navigation .navigation-menu-body ul li.open > ul button.active.btn {
+  background-color: inherit;
+}
+
+footer.content-footer {
+  padding: 15px 30px;
+  background-color: white;
+  box-shadow: 0 0 10px -8px black;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+  -webkit-box-pack: justify;
+          justify-content: space-between;
+  margin-left: 320px;
+}
+
+footer.content-footer * {
+  text-transform: uppercase;
+  letter-spacing: 0.5px;
+  font-size: 12px;
+}
+
+footer.content-footer .nav a,
+footer.content-footer .nav .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append footer.content-footer .nav button.btn {
+  padding: 5px 0;
+  margin-left: 15px;
+}
+
+footer.content-footer .nav a:hover,
+footer.content-footer .nav .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append footer.content-footer .nav button.btn:hover {
+  background: none !important;
+}
+
+.sidebar-group {
+  background-color: rgba(0, 0, 0, 0.35);
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  top: 0;
+  left: 0;
+  opacity: 0;
+  z-index: 1000;
+  -webkit-transition: all 0.3s;
+  transition: all 0.3s;
+  visibility: hidden;
+}
+
+.sidebar-group.show {
+  opacity: 1;
+  visibility: visible;
+}
+
+.sidebar-group .card,
+.sidebar-group .chat-block,
+.sidebar-group .app-block .app-content .app-action,
+.app-block .app-content .sidebar-group .app-action {
+  box-shadow: none;
+}
+
+.sidebar-group .sidebar {
+  width: 330px;
+  box-shadow: 0 0 25px rgba(0, 0, 0, 0.25);
+  background-color: white;
+  z-index: 1000;
+  -webkit-transition: all 0.2s;
+  transition: all 0.2s;
+  visibility: hidden;
+  opacity: 0;
+  margin-right: -100px;
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  top: 0;
+}
+
+.sidebar-group .sidebar.show {
+  visibility: visible;
+  opacity: 1;
+  margin-right: 0px;
+}
+
+.sidebar-group .sidebar > header {
+  background-color: #ebebeb;
+  padding: 1.5rem;
+  font-size: 16px;
+  line-height: 0;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-align: center;
+          align-items: center;
+}
+
+.sidebar-group .sidebar > header i {
+  margin-right: 10px;
+}
+
+.sidebar-group .sidebar .tab-content {
+  height: calc(100% - 50px);
+}
+
+.sidebar-group .sidebar .tab-content .tab-pane.active {
+  height: 100%;
+  display: -webkit-box;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+          flex-direction: column;
+}
+
+.sidebar-group .sidebar .tab-content .tab-pane.active .tab-pane-body {
+  -webkit-box-flex: 1;
+          flex: 1;
+  overflow: auto;
+}
+
+.sidebar-group .sidebar .tab-content .tab-pane.active .tab-pane-footer {
+  padding: 20px 0;
+}
+
+body.dark {
+  background-color: #182139;
+  color: #c7c7c7;
+}
+
+body.dark a:not(.btn):not(.link-1),
+body.dark .header form .input-group .input-group-append button.btn:not(.btn):not(.link-1),
+.header form .input-group .input-group-append body.dark button.btn:not(.btn):not(.link-1) {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark a:not(.btn):not(.link-1):hover,
+body.dark .header form .input-group .input-group-append button.btn:not(.btn):not(.link-1):hover,
+.header form .input-group .input-group-append body.dark button.btn:not(.btn):not(.link-1):hover {
+  color: rgba(255, 255, 255, 0.8);
+}
+
+body.dark .header {
+  background-color: #313852;
+  border-bottom-color: #454c66;
+}
+
+body.dark .header .header-logo {
+  border-bottom-color: #454c66;
+}
+
+body.dark .header .header-logo img {
+  display: block;
+}
+
+body.dark .header .header-logo img:not(.logo-light) {
+  display: none;
+}
+
+body.dark .header ul li a,
+body.dark .header ul li form .input-group .input-group-append button.btn,
+body.dark .header form .input-group .input-group-append ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.dark .header ul li a:hover,
+body.dark .header ul li form .input-group .input-group-append button.btn:hover,
+body.dark .header form .input-group .input-group-append ul li button.btn:hover,
+body.dark .header ul li a:focus,
+body.dark .header ul li form .input-group .input-group-append button.btn:focus,
+body.dark .header form .input-group .input-group-append ul li button.btn:focus {
+  color: white;
+}
+
+body.dark .header .avatar {
+  border-color: transparent;
+}
+
+body.dark .text-divider:after {
+  background-color: #454c66;
+}
+
+body.dark input::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input::-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark input::placeholder {
+  color: rgba(255, 255, 255, 0.5);
+}
+
+body.dark .border {
+  border-color: #454c66 !important;
+}
+
+body.dark .border-right {
+  border-left-color: #454c66 !important;
+  border-right-color: #454c66 !important;
+}
+
+body.dark .border-left {
+  border-left-color: #454c66 !important;
+  border-right-color: #454c66 !important;
+}
+
+body.dark .border-bottom {
+  border-bottom-color: #454c66 !important;
+}
+
+body.dark .border-top {
+  border-top-color: #454c66 !important;
+}
+
+body.dark .preloader {
+  background: #04071a;
+}
+
+body.dark .preloader .preloader-icon {
+  border-color: #313852;
+}
+
+body.dark .nav-tabs .nav-link:hover,
+body.dark .nav-tabs .nav-link:focus {
+  background-color: #313852 !important;
+  border-bottom-color: #313852 !important;
+}
+
+body.dark .nav-tabs .nav-link.active {
+  background: #313852 !important;
+  border-bottom-color: #313852 !important;
+}
+
+body.dark .sidebar header {
+  background-color: #2c2f42;
+}
+
+body.dark .navigation {
+  background-color: #313852;
+}
+
+body.dark .navigation .navigation-menu-tab {
+  border-right-color: #444e72;
+}
+
+body.dark .navigation .navigation-menu-tab ul li a,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.dark .navigation .navigation-menu-tab ul li a.active,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.active.btn {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-tab ul li a:not(.active):hover,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):hover,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn:not(.active):hover,
+body.dark .navigation .navigation-menu-tab ul li a:not(.active):focus,
+body.dark .navigation .navigation-menu-tab ul li .header form .input-group .input-group-append button.btn:not(.active):focus,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-tab ul li button.btn:not(.active):focus {
+  color: #0081ff;
+}
+
+body.dark .navigation .navigation-menu-body ul li.navigation-divider {
+  color: #dbdbdb;
+}
+
+body.dark .navigation .navigation-menu-body ul li a,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn {
+  color: #c7c7c7;
+}
+
+body.dark .navigation .navigation-menu-body ul li a .nav-link-icon,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn .nav-link-icon,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn .nav-link-icon {
+  stroke: rgba(199, 199, 199, 0.5);
+}
+
+body.dark .navigation .navigation-menu-body ul li a:hover,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn:hover,
+body.dark .navigation .navigation-menu-body ul li a:focus,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn:focus,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn:focus {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-body ul li a.active,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.active.btn {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-body ul li a + ul li a.active,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li a.active,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn + ul li a.active,
+body.dark .navigation .navigation-menu-body ul li a + ul li .header form .input-group .input-group-append button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li a + ul li button.active.btn,
+body.dark .navigation .navigation-menu-body ul li .header form .input-group .input-group-append button.btn + ul li button.active.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li button.btn + ul li button.active.btn {
+  color: white;
+}
+
+body.dark .navigation .navigation-menu-body ul li.open > a,
+body.dark .navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append body.dark .navigation .navigation-menu-body ul li.open > button.btn {
+  color: white;
+  background-color: #454c66;
+}
+
+body.dark .navigation .navigation-menu-body ul li .dropdown-divider {
+  color: #0081ff;
+}
+
+body.dark.boxed-layout {
+  background-color: #04071a;
+}
+
+body.dark.boxed-layout .layout-wrapper .content-wrapper .content-body .content {
+  background-color: #182139;
+}
+
+body.dark.right-navigation .navigation .navigation-menu-tab {
+  border-left-color: #444e72;
+}
+
+body.dark.right-navigation.small-navigation .navigation .navigation-menu-tab {
+  border-left-color: transparent;
+}
+
+body.dark.right-navigation.small-navigation .navigation:hover .navigation-menu-tab {
+  border-left-color: #444e72 !important;
+}
+
+body.dark.small-navigation .navigation:hover .navigation-menu-tab {
+  border-right-color: #444e72 !important;
+}
+
+body.dark .custom-accordion .accordion-row .accordion-header .close {
+  text-shadow: none;
+  color: inherit;
+}
+
+body.dark #vmap_usa_en,
+body.dark #vmap_canada_en,
+body.dark #vmap_world_en {
+  background-color: inherit !important;
+}
+
+body.dark .table {
+  color: #c7c7c7;
+}
+
+body.dark .table .thead-light th {
+  background-color: #59607a;
+  color: inherit;
+}
+
+body.dark .table .thead-dark th,
+body.dark .table-dark,
+body.dark .table-dark th,
+body.dark .table-dark td {
+  background-color: #04071a;
+}
+
+body.dark .mark,
+body.dark mark {
+  background-color: #59607a;
+  color: inherit;
+}
+
+body.dark .page-header {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+body.dark .page-header .breadcrumb li a,
+body.dark .page-header .breadcrumb li .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .page-header .breadcrumb li button.btn {
+  color: #b3b3b3;
+}
+
+body.dark .page-header .breadcrumb li a:hover,
+body.dark .page-header .breadcrumb li .header form .input-group .input-group-append button.btn:hover,
+.header form .input-group .input-group-append body.dark .page-header .breadcrumb li button.btn:hover {
+  color: #c7c7c7;
+}
+
+body.dark .breadcrumb li.breadcrumb-item.active {
+  color: #339aff;
+}
+
+body.dark [data-backround-image]:after {
+  background-color: rgba(0, 0, 0, 0.6);
+}
+
+body.dark .layout-alert {
+  border-color: #59607a;
+}
+
+body.dark .alert {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+body.dark .alert hr {
+  border-color: rgba(255, 255, 255, 0.1);
+}
+
+body.dark .alert .close:hover,
+body.dark .alert .close:focus {
+  opacity: 0.2;
+  color: inherit;
+}
+
+body.dark .form-control,
+body.dark .swal-modal input.swal-content__input,
+.swal-modal body.dark input.swal-content__input {
+  background: #313852;
+  border-color: #454c66 !important;
+  color: #c3c3c3;
+}
+
+body.dark .form-control:focus,
+body.dark .swal-modal input.swal-content__input:focus,
+.swal-modal body.dark input.swal-content__input:focus {
+  border-color: #0081ff !important;
+}
+
+body.dark .timeline .timeline-item::before {
+  background: #59607a;
+}
+
+body.dark .dropdown-menu {
+  border-top: 1px solid #454c66 !important;
+  color: #c7c7c7;
+}
+
+body.dark .custom-select {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+  color: inherit;
+}
+
+body.dark .custom-file-label {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+  color: inherit;
+}
+
+body.dark .custom-file-label::after {
+  background-color: #454c66;
+  color: inherit;
+}
+
+body.dark .custom-range::-webkit-slider-runnable-track {
+  background-color: #454c66;
+}
+
+body.dark .custom-control-label::before {
+  background-color: inherit;
+  border-color: #59607a;
+}
+
+body.dark .custom-control-input:disabled ~ .custom-control-label::before {
+  background-color: #454c66;
+}
+
+body.dark .form-control-plaintext {
+  color: inherit;
+}
+
+body.dark .wizard > .content {
+  background-color: #454c66;
+}
+
+body.dark .wizard > .steps .disabled a,
+body.dark .wizard > .steps .disabled .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .wizard > .steps .disabled button.btn,
+body.dark .wizard > .steps .disabled a:hover,
+body.dark .wizard > .steps .disabled a:active {
+  background-color: #454c66;
+}
+
+body.dark .wizard > .actions .disabled a,
+body.dark .wizard > .actions .disabled .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .wizard > .actions .disabled button.btn,
+body.dark .wizard > .actions .disabled a:hover,
+body.dark .wizard > .actions .disabled a:active {
+  background: #4f5670 !important;
+  border-color: #4f5670 !important;
+}
+
+body.dark .wizard > .actions .disabled a:not(:disabled):not(.disabled):focus,
+body.dark .wizard > .actions .disabled .header form .input-group .input-group-append button.btn:not(:disabled):not(.disabled):focus,
+.header form .input-group .input-group-append body.dark .wizard > .actions .disabled button.btn:not(:disabled):not(.disabled):focus,
+body.dark .wizard > .actions .disabled a:hover:not(:disabled):not(.disabled):focus,
+body.dark .wizard > .actions .disabled a:active:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(4, 7, 26, 0.5);
+  outline: none;
+  color: inherit;
+}
+
+body.dark .pricing-table {
+  border-color: #59607a;
+}
+
+body.dark hr {
+  border-color: #454c66;
+}
+
+body.dark .dropdown-menu {
+  border: none;
+  background-color: #3b425c;
+}
+
+body.dark .dropdown-menu .dropdown-item {
+  color: #c3c3c3;
+}
+
+body.dark .dropdown-menu .dropdown-item:hover,
+body.dark .dropdown-menu .dropdown-item:focus {
+  background: #313852;
+}
+
+body.dark .bg-light {
+  background: #59607a !important;
+}
+
+body.dark .list-group-item {
+  background: none;
+  border-color: rgba(155, 155, 155, 0.1);
+}
+
+body.dark a.list-group-item,
+body.dark .header form .input-group .input-group-append button.list-group-item.btn,
+.header form .input-group .input-group-append body.dark button.list-group-item.btn {
+  color: #c7c7c7;
+}
+
+body.dark a.list-group-item:hover,
+body.dark .header form .input-group .input-group-append button.list-group-item.btn:hover,
+.header form .input-group .input-group-append body.dark button.list-group-item.btn:hover {
+  color: white;
+}
+
+body.dark .card,
+body.dark .chat-block,
+body.dark .app-block .app-content .app-action,
+.app-block .app-content body.dark .app-action {
+  background: #313852;
+  border-color: #444e72;
+}
+
+body.dark .card .card-header,
+body.dark .chat-block .card-header,
+body.dark .app-block .app-content .app-action .card-header,
+.app-block .app-content body.dark .app-action .card-header {
+  border-bottom-color: #2c2f42 !important;
+}
+
+body.dark .card .card-footer,
+body.dark .chat-block .card-footer,
+body.dark .app-block .app-content .app-action .card-footer,
+.app-block .app-content body.dark .app-action .card-footer {
+  border-top-color: #2c2f42;
+}
+
+body.dark .accordion .card,
+body.dark .accordion .chat-block,
+body.dark .accordion .app-block .app-content .app-action,
+.app-block .app-content body.dark .accordion .app-action,
+body.dark .accordion.custom-accordion {
+  border-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .accordion.custom-accordion .accordion-row a.accordion-header,
+body.dark .accordion.custom-accordion .accordion-row .header form .input-group .input-group-append button.accordion-header.btn,
+.header form .input-group .input-group-append body.dark .accordion.custom-accordion .accordion-row button.accordion-header.btn {
+  border-bottom-color: rgba(240, 240, 240, 0.12);
+  border-top-color: rgba(240, 240, 240, 0.12);
+  color: inherit;
+  background-color: #454c66;
+}
+
+body.dark .morris-hover.morris-default-style {
+  background-color: #454c66;
+  border-color: #59607a;
+}
+
+body.dark .apexcharts-yaxis .apexcharts-yaxis-texts-g text {
+  fill: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .apexcharts-grid .apexcharts-gridlines-horizontal line,
+body.dark .apexcharts-grid .apexcharts-gridlines-vertical line {
+  stroke: rgba(255, 255, 255, 0.1);
+}
+
+body.dark .apexcharts-toolbar > div > svg {
+  fill: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .apexcharts-menu {
+  border: none;
+  background-color: #454c66;
+}
+
+body.dark .apexcharts-menu .apexcharts-menu-item:hover {
+  background-color: #59607a;
+}
+
+body.dark .apexcharts-xaxis .apexcharts-xaxis-texts-g text {
+  fill: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .apexcharts-tooltip.light .apexcharts-tooltip-title {
+  background-color: #59607a !important;
+  border-color: #3b425c !important;
+}
+
+body.dark .apexcharts-xaxistooltip {
+  border-color: #3b425c !important;
+  background-color: #454c66 !important;
+  color: rgba(255, 255, 255, 0.4);
+}
+
+body.dark .apexcharts-xaxistooltip-bottom:after,
+body.dark apexcharts-xaxistooltip-bottom:before {
+  border-bottom-color: #454c66 !important;
+}
+
+body.dark .apexcharts-tooltip {
+  border-color: #3b425c !important;
+  background-color: #454c66 !important;
+}
+
+body.dark .apexcharts-title-text,
+body.dark .apexcharts-subtitle-text {
+  fill: rgba(255, 255, 255, 0.4);
+}
+
+body.dark .apexcharts-legend-text {
+  color: rgba(255, 255, 255, 0.4) !important;
+}
+
+body.dark .apexcharts-yaxis-title text,
+body.dark .apexcharts-xaxis-title text {
+  fill: rgba(255, 255, 255, 0.4);
+}
+
+body.dark .demo-code-preview {
+  background-color: #313852;
+  border-color: #4f5670 !important;
+}
+
+body.dark .demo-code-preview * {
+  text-shadow: none;
+}
+
+body.dark .demo-code-preview code[class*=language-],
+body.dark .demo-code-preview pre[class*=language-] {
+  color: white;
+}
+
+body.dark .demo-code-preview code[class*=language-] .token.operator,
+body.dark .demo-code-preview pre[class*=language-] .token.operator {
+  background: none;
+}
+
+body.dark .demo-code-preview .token.tag {
+  color: #e156a3;
+}
+
+body.dark .avatar {
+  border-color: #313852;
+}
+
+body.dark .avatar:before {
+  border-color: #313852;
+}
+
+body.dark .avatar .avatar-title {
+  background-color: #59607a;
+}
+
+body.dark .tourBg {
+  opacity: 0.7 !important;
+}
+
+body.dark .dd-handle,
+body.dark .dd3-content {
+  background-color: #454c66;
+  border-color: #313852;
+  color: inherit;
+}
+
+body.dark .dd3-handle:before {
+  color: inherit;
+}
+
+body.dark .dd-item button {
+  color: inherit;
+}
+
+body.dark .list-group-item-action {
+  color: inherit;
+}
+
+body.dark .list-group-item-action.active {
+  color: white;
+}
+
+body.dark .img-thumbnail {
+  border-color: #59607a;
+  background-color: #313852;
+}
+
+body.dark .progress {
+  background-color: #59607a;
+}
+
+body.dark .jstree-default .jstree-clicked {
+  color: #04071a;
+}
+
+body.dark .select2-container--default .select2-selection--single,
+body.dark .select2-container--default .select2-selection--multiple {
+  background-color: inherit;
+}
+
+body.dark .select2-container--default .select2-selection--multiple .select2-selection__choice {
+  background: #454c66;
+  color: #c3c3c3;
+}
+
+body.dark .select2.select2-container .select2-selection {
+  border-color: #59607a;
+}
+
+body.dark .select2-container--default .select2-selection--single .select2-selection__placeholder {
+  color: #646464;
+}
+
+body.dark .select2-container .select2-search--inline .select2-search__field {
+  color: inherit;
+}
+
+body.dark .select2-dropdown {
+  background-color: #313852;
+  border-color: #59607a;
+}
+
+body.dark .select2-container--default .select2-search--dropdown .select2-search__field {
+  background-color: #313852;
+  border-color: #59607a;
+  color: inherit;
+}
+
+body.dark .select2-container--default .select2-selection--single .select2-selection__rendered {
+  color: inherit;
+}
+
+body.dark .select2-container--default .select2-results__option[aria-selected=true] {
+  background-color: #04071a;
+  color: inherit;
+}
+
+body.dark .irs--round .irs-line {
+  background-color: #59607a;
+}
+
+body.dark .irs--round .irs-min,
+body.dark .irs--round .irs-max {
+  color: inherit;
+  background-color: #59607a;
+}
+
+body.dark .daterangepicker {
+  background-color: #3b425c;
+  border-color: #3b425c;
+}
+
+body.dark .daterangepicker select {
+  background-color: inherit;
+  color: inherit;
+  border-color: #59607a;
+}
+
+body.dark .daterangepicker:after,
+body.dark .daterangepicker:before {
+  border-bottom-color: #3b425c;
+}
+
+body.dark .daterangepicker .calendar-table {
+  background-color: #3b425c;
+  border-color: #3b425c;
+}
+
+body.dark .daterangepicker td.in-range {
+  background-color: #59607a;
+  color: inherit;
+}
+
+body.dark .daterangepicker td.end-date {
+  color: white;
+  background-color: #0081ff;
+}
+
+body.dark .daterangepicker .drp-buttons {
+  border-top-color: #3b425c;
+}
+
+body.dark .daterangepicker .drp-buttons .btn.btn-default {
+  color: inherit;
+}
+
+body.dark .daterangepicker td.off,
+body.dark .daterangepicker td.off.end-date,
+body.dark .daterangepicker td.off.start-date {
+  background-color: inherit;
+  color: #636a84;
+}
+
+body.dark .daterangepicker td.off.in-range {
+  background-color: #59607a;
+  color: #8b92ac;
+}
+
+body.dark .daterangepicker td.available:hover,
+body.dark .daterangepicker th.available:hover {
+  background-color: #0081ff;
+  color: white;
+}
+
+body.dark .daterangepicker td.available:hover span,
+body.dark .daterangepicker th.available:hover span {
+  border-color: white;
+}
+
+body.dark .daterangepicker .calendar-table .next span,
+body.dark .daterangepicker .calendar-table .prev span {
+  border-color: #6d748e;
+}
+
+body.dark .daterangepicker .ranges li:hover {
+  background-color: #454c66;
+}
+
+body.dark .popover.clockpicker-popover {
+  overflow: hidden;
+  border: 1px solid #59607a;
+}
+
+body.dark .popover.clockpicker-popover .popover-title {
+  background-color: #313852;
+  color: inherit;
+}
+
+body.dark .popover.clockpicker-popover .popover-content {
+  background-color: #313852;
+}
+
+body.dark .popover.clockpicker-popover .clockpicker-plate {
+  border-color: #59607a;
+  background-color: #313852;
+}
+
+body.dark .popover.clockpicker-popover .clockpicker-plate .clockpicker-tick {
+  color: inherit;
+}
+
+body.dark .popover.clockpicker-popover .clockpicker-plate .clockpicker-canvas-bg {
+  fill: #59607a;
+}
+
+body.dark .nav-tabs .nav-item.show .nav-link,
+body.dark .nav-tabs .nav-link.active {
+  background-color: #59607a;
+  color: inherit;
+  border-color: #59607a;
+}
+
+body.dark .nav-tabs .nav-link:focus,
+body.dark .nav-tabs .nav-link:hover {
+  border-color: #3b425c;
+  background-color: #3b425c;
+}
+
+body.dark .nav-tabs {
+  border-bottom-color: #59607a;
+}
+
+body.dark .figure-caption {
+  color: inherit;
+}
+
+body.dark .btn-link {
+  color: inherit;
+}
+
+body.dark .text-muted,
+body.dark .chat-block .chat-content .messages .message-item.message-item-divider span,
+.chat-block .chat-content .messages .message-item.message-item-divider body.dark span,
+body.dark .demo-code-preview:before {
+  color: #9f9f9f !important;
+}
+
+body.dark .table td,
+body.dark .table th {
+  border-color: rgba(155, 155, 155, 0.2);
+}
+
+body.dark .border-bottom {
+  border-bottom-color: rgba(155, 155, 155, 0.2) !important;
+}
+
+body.dark .sidebar {
+  background: #313852;
+}
+
+body.dark .nicescroll-cursors {
+  background-color: rgba(255, 255, 255, 0.15) !important;
+}
+
+body.dark .chat-block .chat-content .messages .message-item:not(.me):before {
+  border-right-color: #454c66;
+}
+
+body.dark .chat-block .chat-content .messages .message-item:not(.me) .message-item-content {
+  background-color: #454c66;
+}
+
+body.dark .chat-block .chat-content .messages .message-item.message-item-divider:before,
+body.dark .chat-block .chat-content .messages .message-item.message-item-divider:after {
+  background-color: #454c66;
+}
+
+body.dark .chat-block .chat-sidebar {
+  background-color: #3b4362;
+}
+
+body.dark .chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item {
+  background-color: #313852;
+}
+
+body.dark .chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item.active {
+  color: white;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li:hover {
+  background-color: #3b425c;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active {
+  background-color: #454c66;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .avatar {
+  border-color: #454c66;
+}
+
+body.dark .app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item.active .app-list-title {
+  color: #c7c7c7;
+}
+
+body.dark .app-block .app-content .app-content-body .app-detail .card-header {
+  border-bottom-color: #454c66 !important;
+}
+
+body.dark .app-file-list {
+  border-color: #454c66;
+}
+
+body.dark .app-file-list .app-file-icon {
+  background-color: #454c66;
+  border-bottom-color: #454c66;
+}
+
+body.dark .ql-container.ql-snow {
+  border-color: #454c66;
+}
+
+body.dark .ql-editor.ql-blank::before {
+  color: #c7c7c7;
+}
+
+body.dark .ql-snow .ql-stroke,
+body.dark .ql-fill {
+  stroke: #c7c7c7;
+}
+
+body.dark .text-black-50 {
+  color: rgba(247, 247, 247, 0.43) !important;
+}
+
+body.dark .table-email-list a,
+body.dark .table-email-list .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark .table-email-list button.btn {
+  color: inherit;
+}
+
+body.dark .table-hover tbody tr:hover {
+  color: inherit;
+}
+
+body.dark .input-group-text {
+  background: #454c66;
+  color: inherit;
+}
+
+body.dark .dropdown-divider {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .btn.btn-light,
+.fc body.dark .btn.fc-state-default,
+body.dark .fc .fc-state-default {
+  background: #454c66;
+  border-color: transparent;
+  color: inherit;
+}
+
+body.dark .btn.btn-light:not(:disabled):not(.disabled):hover,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):hover,
+body.dark .btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):focus,
+body.dark .btn.btn-light:not(:disabled):not(.disabled):active,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):active,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):hover,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):focus,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):active {
+  background: #4f5670;
+  border-color: #4f5670;
+  color: inherit;
+}
+
+body.dark .btn.btn-light:not(:disabled):not(.disabled):focus,
+.fc body.dark .btn.fc-state-default:not(:disabled):not(.disabled):focus,
+body.dark .fc .fc-state-default:not(:disabled):not(.disabled):focus {
+  box-shadow: 0 0 0 0.2rem rgba(4, 7, 26, 0.5);
+  outline: none;
+  color: inherit;
+}
+
+body.dark .btn.btn-outline-light {
+  border: 1px solid rgba(255, 255, 255, 0.1);
+  color: #c7c7c7;
+}
+
+body.dark .btn.btn-outline-light:hover {
+  background: none !important;
+  color: #d6d6d6 !important;
+  border: 1px solid rgba(255, 255, 255, 0.1) !important;
+}
+
+body.dark .fc-unthemed .fc-content,
+body.dark .fc-unthemed .fc-divider,
+body.dark .fc-unthemed .fc-list-heading td,
+body.dark .fc-unthemed .fc-list-view,
+body.dark .fc-unthemed .fc-popover,
+body.dark .fc-unthemed .fc-row,
+body.dark .fc-unthemed tbody,
+body.dark .fc-unthemed td,
+body.dark .fc-unthemed th,
+body.dark .fc-unthemed thead {
+  border-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .fc-unthemed .fc-list-item:hover td {
+  background: #454c66;
+}
+
+body.dark .fc-unthemed .fc-divider,
+body.dark .fc-unthemed .fc-list-heading td,
+body.dark .fc-unthemed .fc-popover .fc-header {
+  background: #454c66;
+}
+
+body.dark .fc-unthemed td.fc-today,
+body.dark .fc-unthemed .fc-list-empty {
+  background: #454c66;
+}
+
+body.dark #external-events .fc-event {
+  color: inherit;
+}
+
+body.dark .bootstrap-tagsinput {
+  background-color: inherit;
+  border-color: rgba(255, 255, 255, 0.2);
+}
+
+body.dark .bootstrap-tagsinput .tag {
+  background: #454c66;
+  color: #c3c3c3;
+}
+
+body.dark .bootstrap-tagsinput input {
+  color: #c3c3c3;
+}
+
+body.dark .dropzone {
+  background-color: #313852;
+  border-color: #454c66;
+}
+
+body.dark .modal-content {
+  background-color: #313852;
+}
+
+body.dark .modal-content .modal-header {
+  border-bottom-color: rgba(240, 240, 240, 0.12);
+  background-color: #454c66 !important;
+}
+
+body.dark .modal-content .modal-header .close {
+  text-shadow: none;
+  opacity: 1;
+  color: inherit;
+  background-color: #313852 !important;
+}
+
+body.dark .modal-content .modal-footer {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .swal-modal {
+  background-color: #313852;
+}
+
+body.dark .swal-modal .swal-icon--success__hide-corners {
+  background-color: inherit;
+}
+
+body.dark .swal-modal .swal-icon--success:before,
+body.dark .swal-modal .swal-icon--success:after {
+  background-color: inherit;
+}
+
+body.dark .swal-modal .swal-title,
+body.dark .swal-modal .swal-text {
+  color: inherit;
+}
+
+body.dark .popover {
+  background-color: #454c66;
+}
+
+body.dark .popover .popover-header {
+  background-color: #59607a;
+  border-color: transparent;
+}
+
+body.dark .popover .popover-body {
+  color: inherit;
+}
+
+body.dark .popover .popover-navigation {
+  border-top-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .bs-popover-auto[x-placement^=top] > .arrow::after,
+body.dark .bs-popover-top > .arrow::after {
+  border-top-color: #454c66;
+}
+
+body.dark .bs-popover-auto[x-placement^=right] > .arrow::after,
+body.dark .bs-popover-right > .arrow::after {
+  border-right-color: #454c66;
+}
+
+body.dark .bs-popover-auto[x-placement^=bottom] > .arrow::after,
+body.dark .bs-popover-bottom > .arrow::after {
+  border-bottom-color: #454c66;
+}
+
+body.dark .bs-popover-auto[x-placement^=left] > .arrow::after,
+body.dark .bs-popover-left > .arrow::after {
+  border-left-color: #454c66;
+}
+
+body.dark ul.links a,
+body.dark ul.links .header form .input-group .input-group-append button.btn,
+.header form .input-group .input-group-append body.dark ul.links button.btn {
+  color: inherit;
+}
+
+body.dark .page-link {
+  background-color: inherit;
+  color: inherit;
+  border-color: rgba(240, 240, 240, 0.12);
+}
+
+body.dark .page-item.disabled .page-link {
+  background-color: #272e48;
+  border-color: rgba(240, 240, 240, 0.12);
+  color: inherit;
+}
+
+body.dark .nav a.nav-link:not(.active),
+body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active),
+.header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active) {
+  color: #c7c7c7;
+}
+
+body.dark .nav a.nav-link:not(.active):hover,
+body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active):hover,
+.header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active):hover,
+body.dark .nav a.nav-link:not(.active):active,
+body.dark .nav .header form .input-group .input-group-append button.nav-link.btn:not(.active):active,
+.header form .input-group .input-group-append body.dark .nav button.nav-link.btn:not(.active):active {
+  background-color: #3b425c;
+}
+
+body.dark.form-membership .form-wrapper {
+  background-color: #313852;
+}
+
+body.dark.form-membership .form-wrapper #logo img {
+  display: block;
+}
+
+body.dark.form-membership .form-wrapper #logo img:not(.logo-light) {
+  display: none;
+}
+
+body.dark .content-footer {
+  background-color: #313852;
+}
+
+body.dark .irs--round .irs-handle {
+  background-color: #313852;
+}
+
+body.dark .table tr.tr-selected {
+  background-color: #3b4362;
+}
+
+body.dark.hidden-navigation .navigation {
+  background-color: #313852;
+}
+
+body.dark.small-navigation .navigation-menu-body ul li.open > a,
+body.dark.small-navigation .navigation-menu-body ul .header form .input-group .input-group-append li.open > button.btn,
+.header form .input-group .input-group-append body.dark.small-navigation .navigation-menu-body ul li.open > button.btn {
+  background-color: #454c66;
+}
+
+body.dark.small-navigation .navigation-menu-body ul li ul {
+  background-color: #313852 !important;
+  border-left-color: #454c66 !important;
+}
+
+body.dark.small-navigation .navigation-menu-body ul li.navigation-divider:after {
+  background-color: #454c66 !important;
+}
+
+@media (min-width: 1200px) {
+  body.dark.horizontal-navigation .horizontal-navigation {
+    background-color: #313852;
+    border-top-color: #444e72;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a.active,
+  body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.active.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.active.btn {
+    background: rgba(0, 0, 0, 0.25);
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a:hover,
+  body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.btn:hover,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.btn:hover {
+    background: rgba(0, 0, 0, 0.1);
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul > li > a + ul,
+  body.dark.horizontal-navigation .horizontal-navigation .header form .input-group .input-group-append ul > li > button.btn + ul,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul > li > button.btn + ul {
+    border-top-color: #444e72;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul {
+    background-color: #3b425c;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul:before {
+    border-bottom-color: #3b425c;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.btn {
+    color: #c7c7c7;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a:hover,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.btn:hover,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.btn:hover {
+    background: none;
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li a.active,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li button.active.btn {
+    background: none;
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li ul {
+    border-left-color: #444e72;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul li.open > a,
+  body.dark.horizontal-navigation .horizontal-navigation ul li ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li ul li.open > button.btn {
+    background: none;
+    color: #339aff;
+  }
+
+  body.dark.navigation-toggle-one.navigation-show .navigation .navigation-menu-body {
+    background-color: #313852;
+  }
+}
+
+@media (max-width: 1200px) {
+  body.dark .chat-block .chat-content.mobile-open {
+    background-color: #313852;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation {
+    background-color: #3b425c;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li a:hover,
+  body.dark.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.btn:hover,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li button.btn:hover {
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li a.active,
+  body.dark.horizontal-navigation .horizontal-navigation ul li .header form .input-group .input-group-append button.active.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li button.active.btn {
+    color: #339aff;
+  }
+
+  body.dark.horizontal-navigation .horizontal-navigation ul li.open > a,
+  body.dark.horizontal-navigation .horizontal-navigation ul .header form .input-group .input-group-append li.open > button.btn,
+  .header form .input-group .input-group-append body.dark.horizontal-navigation .horizontal-navigation ul li.open > button.btn {
+    color: #339aff;
+  }
+}
+
+@media (max-width: 1200px) {
+  .header .header-toggler {
+    display: block;
+  }
+
+  .chat-app .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 0 !important;
+  }
+
+  .chat-block {
+    position: relative;
+  }
+
+  .chat-block .chat-content {
+    display: none;
+  }
+
+  .chat-block .chat-content .chat-header {
+    padding: 0.5rem 1.5rem;
+  }
+
+  .chat-block .chat-content .mobile-chat-close-btn {
+    display: block;
+  }
+
+  .chat-block .chat-content.chat-mobile-open {
+    display: -webkit-box;
+    display: flex;
+    background-color: white;
+    position: absolute;
+    right: 0;
+    left: 0;
+    max-width: 100%;
+    z-index: 2;
+    bottom: 0;
+  }
+
+  .chat-block .chat-sidebar {
+    -webkit-box-flex: 1;
+            flex: 1;
+    border-right: none;
+    max-width: 100% !important;
+  }
+
+  .header {
+    margin: 0;
+  }
+
+  .header .header-left .navigation-toggler {
+    display: block !important;
+  }
+
+  .header div:nth-child(2) ul.navbar-nav:first-child {
+    display: none;
+    background: #e6e6e6;
+    position: fixed;
+    left: 0;
+    right: 0;
+    top: 75px;
+  }
+
+  .header div:nth-child(2) ul.navbar-nav:first-child li a,
+  .header div:nth-child(2) ul.navbar-nav:first-child li form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append div:nth-child(2) ul.navbar-nav:first-child li button.btn {
+    color: black;
+  }
+
+  .header div:nth-child(2) ul.navbar-nav:first-child.open {
+    display: -webkit-box;
+    display: flex;
+    flex-wrap: wrap;
+  }
+
+  .header .header-search .input-group {
+    background-color: white;
+  }
+
+  .header .header-search .input-group .btn {
+    color: black;
+  }
+
+  .header .header-search .input-group input.form-control:focus,
+  .header .header-search .input-group .swal-modal input.swal-content__input:focus,
+  .swal-modal .header .header-search .input-group input.swal-content__input:focus {
+    color: black;
+  }
+
+  .header .header-search .input-group input.form-control::-webkit-input-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input::-webkit-input-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input::-webkit-input-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control::-moz-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input::-moz-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input::-moz-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control:-ms-input-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input:-ms-input-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input:-ms-input-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control::-ms-input-placeholder, .header .header-search .input-group .swal-modal input.swal-content__input::-ms-input-placeholder, .swal-modal .header .header-search .input-group input.swal-content__input::-ms-input-placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .header-search .input-group input.form-control::placeholder,
+  .header .header-search .input-group .swal-modal input.swal-content__input::placeholder,
+  .swal-modal .header .header-search .input-group input.swal-content__input::placeholder {
+    color: #9b9b9b;
+  }
+
+  .header .navigation-toggler a,
+  .header .navigation-toggler form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append .navigation-toggler button.btn,
+  .header .navbar-toggler a,
+  .header .navbar-toggler form .input-group .input-group-append button.btn,
+  .header form .input-group .input-group-append .navbar-toggler button.btn {
+    background: none !important;
+  }
+
+  .header .navigation-toggler {
+    display: none !important;
+  }
+
+  .header .navigation-toggler.mobile-toggler {
+    display: block !important;
+  }
+
+  .header .navigation-toggler a:hover,
+  .header .navigation-toggler form .input-group .input-group-append button.btn:hover,
+  .header form .input-group .input-group-append .navigation-toggler button.btn:hover {
+    background: none !important;
+  }
+
+  .header .dropdown {
+    position: static;
+  }
+
+  .header .dropdown-menu {
+    right: 1rem !important;
+    top: auto !important;
+    left: 1rem !important;
+    margin-top: 10px;
+    width: auto !important;
+    -webkit-transform: inherit !important;
+            transform: inherit !important;
+  }
+
+  .layout-wrapper .content-wrapper .content-body .content {
+    padding-left: 30px;
+  }
+
+  .content-footer {
+    margin-left: 0 !important;
+  }
+
+  .navigation {
+    background-color: white;
+    z-index: 1000;
+    box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.15);
+    left: -80%;
+    top: 0;
+    bottom: 0;
+    opacity: 0;
+    -webkit-transition: left 0.2s;
+    transition: left 0.2s;
+    position: fixed !important;
+  }
+
+  .navigation.open {
+    left: 0;
+    opacity: 1;
+  }
+
+  .navigation header.navigation-header {
+    padding-top: 20px;
+  }
+
+  .navigation .navigation-icon-menu {
+    margin: 0;
+    border-radius: 0;
+  }
+
+  .navigation .navigation-menu-body {
+    padding: 15px 0;
+  }
+
+  .page-header {
+    padding: 0;
+    margin-top: 0;
+    margin-right: 0;
+    margin-left: 0;
+  }
+
+  .user-page {
+    padding: 20px;
+    height: auto;
+  }
+
+  .user-page .card,
+  .user-page .chat-block,
+  .user-page .app-block .app-content .app-action,
+  .app-block .app-content .user-page .app-action {
+    width: auto;
+  }
+
+  .user-page .card .card-body,
+  .user-page .chat-block .card-body,
+  .user-page .app-block .app-content .app-action .card-body,
+  .app-block .app-content .user-page .app-action .card-body {
+    padding: 30px;
+  }
+}
+
+@media (max-width: 992px) {
+  .app-block {
+    position: relative;
+  }
+
+  .app-block .app-sidebar-menu-button {
+    display: -webkit-inline-box;
+    display: inline-flex;
+    margin-right: 1rem;
+  }
+
+  .app-block .app-sidebar {
+    display: none;
+    position: absolute;
+    left: 0;
+    z-index: 9;
+    -webkit-box-flex: 0;
+            flex: 0 0 35%;
+    max-width: 35%;
+    bottom: 0;
+  }
+
+  .app-block .app-sidebar .app-sidebar-menu {
+    overflow: auto;
+  }
+
+  .app-block .app-sidebar.show {
+    display: block;
+  }
+
+  .app-block .app-sidebar > .card,
+  .app-block .app-sidebar > .chat-block,
+  .app-block .app-content .app-sidebar > .app-action {
+    box-shadow: 3px 0px 15px -10px black;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+
+  .app-block .app-content {
+    -webkit-box-flex: 0;
+            flex: 0 0 100%;
+    max-width: 100%;
+  }
+
+  .app-block .app-content .app-action {
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: reverse;
+            flex-direction: column-reverse;
+  }
+
+  .app-block .app-content .app-action .action-right {
+    margin-left: 0;
+    margin-bottom: 1rem;
+  }
+
+  .app-block .app-content .app-detail .card-header {
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+            flex-direction: column;
+    -webkit-box-align: stretch !important;
+            align-items: stretch !important;
+  }
+
+  .app-block .app-content .app-detail .card-header .app-detail-action-right {
+    margin-left: 0 !important;
+    margin-top: 1rem;
+  }
+
+  .card,
+  .chat-block,
+  .app-block .app-content .app-action {
+    margin-bottom: 1rem;
+  }
+
+  .card .card-body,
+  .chat-block .card-body,
+  .app-block .app-content .app-action .card-body {
+    padding: 1.2rem;
+  }
+}
+
+@media (max-width: 768px) {
+  body.form-membership .form-wrapper {
+    width: 90%;
+    margin: 30px auto;
+  }
+
+  body.horizontal-navigation .horizontal-navigation.open {
+    width: 80%;
+  }
+
+  .app-block .app-content .app-action .action-right form {
+    margin-right: 0 !important;
+  }
+
+  .app-block .app-content .app-action .action-right .app-pager {
+    display: none !important;
+  }
+
+  .app-block .app-sidebar {
+    -webkit-box-flex: 0;
+            flex: 0 0 70%;
+    max-width: 70%;
+  }
+
+  .chat-block .chat-sidebar.border-right {
+    border-right: none !important;
+  }
+
+  .toast-top-right {
+    top: 1rem;
+    right: 1rem;
+  }
+
+  .toast-top-left {
+    top: 1rem;
+    left: 1rem;
+  }
+
+  .header .header-left {
+    width: auto;
+  }
+
+  .header .page-title {
+    display: none;
+  }
+
+  footer {
+    padding: 15px 20px;
+  }
+
+  footer .nav {
+    display: none;
+  }
+
+  .table-responsive-stack tr {
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    flex-direction: column;
+    border-bottom: 3px solid #ccc;
+    display: block;
+  }
+
+  /*  IE9 FIX   */
+
+  .table-responsive-stack td {
+    float: left \9;
+    width: 100%;
+  }
+
+  .sidebar > ul.nav {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  .sidebar > ul.nav li.nav-item {
+    border: none;
+  }
+
+  .user-page {
+    padding: 20px;
+    height: auto;
+  }
+
+  .user-page .card,
+  .user-page .chat-block,
+  .user-page .app-block .app-content .app-action,
+  .app-block .app-content .user-page .app-action {
+    width: 100%;
+  }
+
+  .user-page .card .card-body,
+  .user-page .chat-block .card-body,
+  .user-page .app-block .app-content .app-action .card-body,
+  .app-block .app-content .user-page .app-action .card-body {
+    padding: 30px;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div {
+    float: none !important;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div .fc-button-group {
+    float: none !important;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div.fc-left {
+    display: -webkit-box;
+    display: flex;
+    -webkit-box-pack: center;
+            justify-content: center;
+    margin-bottom: 15px;
+  }
+
+  .fc .fc-toolbar.fc-header-toolbar > div.fc-right {
+    margin-bottom: 5px;
+  }
+}
+
+@media (max-width: 414px) {
+  .nav {
+    display: block;
+    border: none;
+  }
+
+  .nav li.nav-item {
+    margin-bottom: 0;
+  }
+
+  .nav li.nav-item:last-child {
+    border: none;
+  }
+
+  .nav li.nav-item a.nav-link,
+  .nav li.nav-item .header form .input-group .input-group-append button.nav-link.btn,
+  .header form .input-group .input-group-append .nav li.nav-item button.nav-link.btn {
+    border: none;
+  }
+
+  body:not(.semi-dark):not(.dark) .nav li.nav-item {
+    border-bottom: 1px solid #ebebeb;
+  }
+
+  .navigation header.navigation-header .nav {
+    display: -webkit-box;
+    display: flex;
+  }
+
+  body.dark .nav li.nav-item {
+    border-bottom-color: #6d748e;
+  }
+
+  .wizard > .steps > ul > li {
+    float: none;
+    width: 100%;
+    margin-bottom: 10px;
+  }
+
+  .wizard > .content {
+    background: none;
+  }
+
+  .wizard > .content > .body {
+    position: static;
+    padding: 0;
+  }
+
+  .dataTables_wrapper .dataTables_filter {
+    display: block;
+  }
+
+  .navigation {
+    width: 75%;
+  }
+
+  .page-header .breadcrumb {
+    display: none;
+  }
+}
+
+@media (max-width: 375px) {
+  nav.navbar .navbar-menu {
+    padding-left: 0;
+  }
+
+  .navigation {
+    width: 85%;
+  }
+}
+
+@media (max-width: 544px) {
+  .text-xs-center {
+    text-align: center !important;
+  }
+
+  .text-xs-left {
+    text-align: left !important;
+  }
+
+  .text-xs-right {
+    text-align: right !important;
+  }
+}
+
+@media print {
+  .page-header {
+    display: none;
+  }
+}
+
Index: resources/assets/css/custom.css
===================================================================
--- resources/assets/css/custom.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/css/custom.css	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,118 @@
+.layout-builder {
+    position: fixed;
+    width: 400px;
+    background: white;
+    z-index: 1000;
+    right: -400px;
+    top: 0;
+    bottom: 0;
+    box-shadow: 8px 0 10px 3px rgba(0, 0, 0, 0.50);
+    overflow: auto;
+    transition: right .2s;
+}
+
+.layout-builder.show {
+    right: 0;
+}
+
+.layout-builder .layout-builder-toggle.shw i {
+    -webkit-animation: spin 2s linear infinite;
+    -moz-animation: spin 2s linear infinite;
+    animation: spin 2s linear infinite;
+}
+
+@-webkit-keyframes spin {
+    100% {
+	  -webkit-transform: rotate(360deg);
+    }
+}
+
+@-moz-keyframes spin {
+    100% {
+	  -moz-transform: rotate(360deg);
+    }
+}
+
+@keyframes spin {
+    100% {
+	  transform: rotate(360deg);
+    }
+}
+
+.layout-builder .layout-builder-toggle.hdn {
+    display: none;
+}
+
+.layout-builder.show .layout-builder-toggle.hdn {
+    display: flex;
+}
+
+.layout-builder .layout-builder-toggle {
+    cursor: pointer;
+    width: 50px;
+    height: 50px;
+    color: white;
+    background: black;
+    position: fixed;
+    top: 50%;
+    margin-left: -50px;
+    display: flex;
+    font-size: 23px;
+    justify-content: center;
+    align-items: center;
+    margin-top: -25px;
+}
+
+.layout-builder .layout-builder-body {
+    padding: 30px;
+}
+
+.layout-builder .layout-builder-body .custom-control input[type="checkbox"]:checked + label {
+    color: black;
+}
+
+.layout-builder .layout-colors {
+    display: flex;
+    flex-wrap: wrap;
+    margin-left: -10px;
+}
+
+.layout-builder .layout-colors .layout-color-item {
+    width: 40px;
+    height: 40px;
+    background: red;
+    margin: 10px;
+    border-radius: 3px;
+    overflow: hidden;
+    border: 5px solid transparent;
+    cursor: pointer;
+}
+
+.layout-builder .layout-colors .layout-color-item.active {
+    box-shadow: 0px 0px 0px 1px black
+}
+
+.layout-builder .layout-colors .layout-color-item span {
+    display: block;
+    height: 45%;
+}
+
+.layout-builder .layout-colors .layout-color-item span:first-child {
+    background: black;
+    transform: rotate(15deg);
+    width: 110%;
+    height: 70%;
+    margin-top: -5px;
+}
+
+.layout-alert {
+    border: 1px solid #ddd;
+    border-radius: 5px;
+    padding: 5px 10px;
+}
+
+@media (max-width: 992px) {
+    .layout-builder {
+	  display: none;
+    }
+}
Index: resources/assets/js/app.js
===================================================================
--- resources/assets/js/app.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/app.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,685 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./public/assets/sass/app.scss":
+/*!*************************************!*\
+  !*** ./public/assets/sass/app.scss ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+// removed by extract-text-webpack-plugin
+
+/***/ }),
+
+/***/ "./resources/js/app.js":
+/*!*****************************!*\
+  !*** ./resources/js/app.js ***!
+  \*****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+(function ($) {
+  var wind_ = $(window),
+      body_ = $('body');
+  feather.replace({
+    'stroke-width': 1.5
+  });
+  $(document).on('click', '[data-toggle="fullscreen"]', function () {
+    $(this).toggleClass('active-fullscreen');
+
+    if (document.fullscreenEnabled) {
+      if ($(this).hasClass("active-fullscreen")) {
+        document.documentElement.requestFullscreen();
+      } else {
+        document.exitFullscreen();
+      }
+    } else {
+      alert("Your browser does not support fullscreen.");
+    }
+
+    return false;
+  });
+  $(document).on('click', '.overlay', function () {
+    $.removeOverlay();
+
+    if (body_.hasClass('horizontal-navigation')) {
+      $('.horizontal-navigation').removeClass('open');
+    } else {
+      $('.navigation').removeClass('open');
+    }
+
+    body_.removeClass('navigation-show');
+  });
+  $(document).on('click', '[data-sidebar-target]', function () {
+    var target = $(this).data('sidebar-target');
+    $('body').addClass('no-scroll');
+    $('.sidebar-group').addClass('show');
+    $('.sidebar-group .sidebar').removeClass('show');
+    $('.sidebar-group .sidebar' + target).addClass('show');
+    return false;
+  });
+  $(document).on('click', '.sidebar-group', function (e) {
+    if ($(e.target).is($('.sidebar-group'))) {
+      $('.sidebar-group').removeClass('show');
+      $('body').removeClass('no-scroll');
+      $('.sidebar-group .sidebar').removeClass('show');
+    }
+  }); // Active pages, automatically show on the menu
+
+  $('.navigation .navigation-menu-body .navigation-menu-group ul li a.active').closest('ul').parent('li').addClass('open').closest('ul').parent('li').addClass('open');
+  $('.navigation .navigation-menu-body .navigation-menu-group ul li a.active').closest('div').addClass('open');
+  $('.navigation .navigation-menu-tab [data-nav-target="#' + $('.navigation .navigation-menu-body .navigation-menu-group ul li a.active').closest('div').attr('id') + '"]').addClass('active');
+  $('body.horizontal-navigation .horizontal-navigation ul li a.active').closest('ul').parent('li').addClass('open').closest('ul').parent('li').addClass('open');
+  /*------------- create/remove overlay -------------*/
+
+  $.createOverlay = function () {
+    if ($('.overlay').length < 1) {
+      body_.addClass('no-scroll').append('<div class="overlay"></div>');
+      $('.overlay').addClass('show');
+    }
+  };
+
+  $.removeOverlay = function () {
+    body_.removeClass('no-scroll');
+    $('.overlay').remove();
+  };
+  /*------------- create/remove overlay -------------*/
+
+
+  $('[data-backround-image]').each(function (e) {
+    $(this).css("background", 'url(' + $(this).data('backround-image') + ')');
+  });
+  /*------------- page loader -------------*/
+
+  wind_.on('load', function () {
+    $('.preloader').fadeOut(400, function () {
+      setTimeout(function () {
+        toastr.options = {
+          timeOut: 2000,
+          progressBar: true,
+          showMethod: "slideDown",
+          hideMethod: "slideUp",
+          showDuration: 200,
+          hideDuration: 200,
+          positionClass: "toast-top-center"
+        };
+        //toastr.success('Welcome');
+        $('.theme-switcher').removeClass('open');
+      }, 500); // $('.theme-switcher').css('opacity', 1);
+    });
+  });
+  /*------------- page loader -------------*/
+
+  /*------------- side menu (sub menü arrow) -------------*/
+
+  wind_.on('load', function () {
+    setTimeout(function () {
+      $('.navigation .navigation-menu-body ul li a').each(function () {
+        var $this = $(this);
+
+        if ($this.next('ul').length) {
+          $this.append('<i class="sub-menu-arrow ti-angle-up"></i>');
+        }
+      });
+      $('.navigation .navigation-menu-body ul li.open>a>.sub-menu-arrow').removeClass('ti-plus').addClass('ti-minus').addClass('rotate-in');
+      $('body.horizontal-navigation .horizontal-navigation ul li a').each(function () {
+        var $this = $(this);
+
+        if ($this.next('ul').length) {
+          $this.append('<i class="sub-menu-arrow ti-angle-right"></i>');
+        }
+      });
+    }, 200);
+  });
+  /*------------- side menu (sub menü arrow) -------------*/
+
+  $(document).on('click', '[data-action="navigation-toggler"]', function () {
+    if (body_.hasClass('horizontal-navigation')) {
+      $('.horizontal-navigation').toggleClass('open');
+    } else {
+      $('.navigation').toggleClass('open');
+    }
+
+    $.createOverlay();
+  });
+  $(document).on('click', '[data-nav-target]', function () {
+    var $this = $(this),
+        target = $this.data('nav-target');
+
+    if (body_.hasClass('navigation-toggle-one')) {
+      body_.addClass('navigation-show');
+    }
+
+    if (body_.hasClass('horizontal-navigation')) {
+      $('.navigation .navigation-menu-body').show();
+    }
+
+    $('.navigation .navigation-menu-body .navigation-menu-group > div').removeClass('open');
+    $('.navigation .navigation-menu-body .navigation-menu-group ' + target).addClass('open');
+    $('[data-nav-target]').removeClass('active');
+    $this.addClass('active');
+    $this.tooltip('hide');
+    return false;
+  });
+  var c = $('.header .header-left .header-logo').clone();
+  $('.navigation .navigation-header').append(c.addClass('navigation-logo').removeClass('header-logo'));
+  $(document).on('click', '.navigation-toggler a', function () {
+    if (wind_.width() < 1200) {
+      $.createOverlay();
+      body_.addClass('navigation-show');
+    } else {
+      if (!body_.hasClass('navigation-toggle-one') && !body_.hasClass('navigation-toggle-two')) {
+        body_.addClass('navigation-toggle-one');
+      } else if (body_.hasClass('navigation-toggle-one') && !body_.hasClass('navigation-toggle-two')) {
+        body_.addClass('navigation-toggle-two');
+        body_.removeClass('navigation-toggle-one');
+      } else if (!body_.hasClass('navigation-toggle-one') && body_.hasClass('navigation-toggle-two')) {
+        body_.removeClass('navigation-toggle-two');
+        body_.removeClass('navigation-toggle-one');
+      }
+    }
+
+    return false;
+  });
+  $(document).on('click', '.header-toggler a', function () {
+    $('.header ul.navbar-nav').toggleClass('open');
+    return false;
+  });
+  $(document).on('click', '*', function (e) {
+    if (!$(e.target).is($('.navigation, .navigation *, .navigation-toggler *')) && body_.hasClass('navigation-toggle-one')) {
+      body_.removeClass('navigation-show');
+    }
+  });
+  $(document).on('click', '*', function (e) {
+    if (!$(e.target).is('.header ul.navbar-nav, .header ul.navbar-nav *, .header-toggler, .header-toggler *')) {
+      $('.header ul.navbar-nav').removeClass('open');
+    }
+  });
+  /*------------- form validation -------------*/
+
+  window.addEventListener('load', function () {
+    // Fetch all the forms we want to apply custom Bootstrap validation styles to
+    var forms = document.getElementsByClassName('needs-validation'); // Loop over them and prevent submission
+
+    Array.prototype.filter.call(forms, function (form) {
+      form.addEventListener('submit', function (event) {
+        if (form.checkValidity() === false) {
+          event.preventDefault();
+          event.stopPropagation();
+        }
+
+        form.classList.add('was-validated');
+      }, false);
+    });
+  }, false);
+  /*------------- form validation -------------*/
+
+  /*------------- responsive html table -------------*/
+
+  var table_responsive_stack = $(".table-responsive-stack");
+  table_responsive_stack.find("th").each(function (i) {
+    $(".table-responsive-stack td:nth-child(" + (i + 1) + ")").prepend('<span class="table-responsive-stack-thead">' + $(this).text() + ":</span> ");
+    $(".table-responsive-stack-thead").hide();
+  });
+  table_responsive_stack.each(function () {
+    var thCount = $(this).find("th").length,
+        rowGrow = 100 / thCount + "%";
+    $(this).find("th, td").css("flex-basis", rowGrow);
+  });
+
+  function flexTable() {
+    if (wind_.width() < 768) {
+      $(".table-responsive-stack").each(function (i) {
+        $(this).find(".table-responsive-stack-thead").show();
+        $(this).find("thead").hide();
+      }); // window is less than 768px
+    } else {
+      $(".table-responsive-stack").each(function (i) {
+        $(this).find(".table-responsive-stack-thead").hide();
+        $(this).find("thead").show();
+      });
+    }
+  }
+
+  flexTable();
+
+  window.onresize = function (event) {
+    flexTable();
+  };
+  /*------------- responsive html table -------------*/
+
+  /*------------- header search -------------*/
+
+
+  $(document).on('click', '[data-toggle="search"], [data-toggle="search"] *', function () {
+    $('.header .header-body .header-search').show().find('.form-control').focus();
+    return false;
+  });
+  $(document).on('click', '.close-header-search, .close-header-search svg', function () {
+    $('.header .header-body .header-search').hide();
+    return false;
+  });
+  $(document).on('click', '*', function (e) {
+    if (!$(e.target).is($('.header, .header *, [data-toggle="search"], [data-toggle="search"] *'))) {
+      $('.header .header-body .header-search').hide();
+    }
+  });
+  /*------------- header search -------------*/
+
+  /*------------- custom accordion -------------*/
+
+  $(document).on('click', '.accordion.custom-accordion .accordion-row a.accordion-header', function () {
+    var $this = $(this);
+    $this.closest('.accordion.custom-accordion').find('.accordion-row').not($this.parent()).removeClass('open');
+    $this.parent('.accordion-row').toggleClass('open');
+    return false;
+  });
+  /*------------- custom accordion -------------*/
+
+  /*------------- responsive table dropdown -------------*/
+
+  var dropdownMenu,
+      table_responsive = $('.table-responsive');
+  table_responsive.on('show.bs.dropdown', function (e) {
+    dropdownMenu = $(e.target).find('.dropdown-menu');
+    body_.append(dropdownMenu.detach());
+    var eOffset = $(e.target).offset();
+    dropdownMenu.css({
+      'display': 'block',
+      'top': eOffset.top + $(e.target).outerHeight(),
+      'left': eOffset.left,
+      'width': '184px',
+      'font-size': '14px'
+    });
+    dropdownMenu.addClass("mobPosDropdown");
+  });
+  table_responsive.on('hide.bs.dropdown', function (e) {
+    $(e.target).append(dropdownMenu.detach());
+    dropdownMenu.hide();
+  });
+  /*------------- responsive table dropdown -------------*/
+
+  /*------------- chat -------------*/
+
+  $(document).on('click', '.chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item', function () {
+    $('.chat-block .chat-content').addClass('chat-mobile-open');
+    return false;
+  });
+  $(document).on('click', '.chat-block .chat-content .mobile-chat-close-btn a', function () {
+    $('.chat-block .chat-content').removeClass('chat-mobile-open');
+    return false;
+  });
+  /*------------- chat -------------*/
+
+  /*------------- aside menu toggle -------------*/
+
+  $(document).on('click', '.navigation ul li a', function () {
+    var $this = $(this);
+
+    if ($this.next('ul').length) {
+      var sub_menu_arrow = $this.find('.sub-menu-arrow');
+      sub_menu_arrow.toggleClass('rotate-in');
+      $this.next('ul').toggle(200);
+      $this.parent('li').siblings().find('ul').not($this.parent('li').find('ul')).slideUp(200);
+      $this.next('ul').find('li ul').slideUp(200);
+      $this.next('ul').find('li>a').find('.sub-menu-arrow').removeClass('ti-minus').addClass('ti-plus');
+      $this.next('ul').find('li>a').find('.sub-menu-arrow').removeClass('rotate-in');
+      $this.parent('li').siblings().not($this.parent('li').find('ul')).find('>a').find('.sub-menu-arrow').removeClass('ti-minus').addClass('ti-plus');
+      $this.parent('li').siblings().not($this.parent('li').find('ul')).find('>a').find('.sub-menu-arrow').removeClass('rotate-in');
+
+      if (sub_menu_arrow.hasClass('rotate-in')) {
+        setTimeout(function () {
+          sub_menu_arrow.removeClass('ti-plus').addClass('ti-minus');
+        }, 200);
+      } else {
+        sub_menu_arrow.removeClass('ti-minus').addClass('ti-plus');
+      }
+
+      if (!body_.hasClass('horizontal-side-menu') && wind_.width() >= 1200) {
+        setTimeout(function (e) {
+          $('.navigation .navigation-menu-body').getNiceScroll().resize();
+        }, 300);
+      }
+
+      return false;
+    }
+  });
+  $(document).on('click', '.horizontal-navigation ul li a', function () {
+    var $this = $(this);
+
+    if ($this.next('ul').length) {
+      $this.next('ul').toggle(200);
+      $this.parent('li').siblings().find('ul').not($this.parent('li').find('ul')).slideUp(200);
+      $this.next('ul').find('li ul').slideUp(200);
+      return false;
+    }
+  });
+  /*------------- aside menu toggle -------------*/
+
+  /*------------- other -------------*/
+
+  $(document).on('click', '.dropdown-menu', function (e) {
+    e.stopPropagation();
+  });
+  $('#exampleModal').on('show.bs.modal', function (event) {
+    var button = $(event.relatedTarget),
+        recipient = button.data('whatever'),
+        modal = $(this);
+    modal.find('.modal-title').text('New message to ' + recipient);
+    modal.find('.modal-body input').val(recipient);
+  });
+  $('[data-toggle="tooltip"]').tooltip({
+    container: 'body'
+  });
+  $('[data-toggle="popover"]').popover();
+  $('.carousel').carousel();
+
+  if (wind_.width() >= 992) {
+    $('.card-scroll').niceScroll();
+    $('.table-responsive').niceScroll();
+    $('.sidebar-group .sidebar').niceScroll();
+    $('.app-block .app-content .app-lists').niceScroll();
+    $('.app-block .app-sidebar .app-sidebar-menu').niceScroll();
+    $('.chat-block .chat-sidebar .chat-sidebar-content').niceScroll();
+    var chat_messages = $('.chat-block .chat-content .messages');
+
+    if (chat_messages.length) {
+      chat_messages.niceScroll({
+        horizrailenabled: false
+      });
+      chat_messages.getNiceScroll(0).doScrollTop(chat_messages.get(0).scrollHeight, -1);
+    }
+  }
+
+  if (!body_.hasClass('small-navigation') && !body_.hasClass('horizontal-navigation') && wind_.width() >= 992) {
+    $('.navigation .navigation-menu-body').niceScroll();
+  }
+
+  $('.dropdown-menu ul.list-group').niceScroll();
+  /* Theme Switcher */
+
+  /* var path = window.location.pathname;
+  var page = path.split("/").pop();
+   var theme_switcher_html = '<div class="theme-switcher open"> \n\
+      <div class="theme-switcher-button"> \n\
+          <i class="fa fa-cog"></i> \n\
+      </div> \n\
+      <div class="theme-switcher-panel"> \n\
+          <div class="card"> \n\
+              <div class="card-body"> \n\
+                  <h6 class="card-title">Theme Switcher</h6> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" id="dark"> \n\
+                          <label class="custom-control-label" for="dark">Dark</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" id="semi-dark"> \n\
+                          <label class="custom-control-label" for="semi-dark">Semi dark</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" id="shadow-layout"> \n\
+                          <label class="custom-control-label" for="shadow-layout">Shadow layout</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="sticky-navigation"> \n\
+                          <label class="custom-control-label" for="sticky-navigation">Sticky navigation</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="small-navigation"> \n\
+                          <label class="custom-control-label" for="small-navigation">Small navigation</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" id="hidden-navigation"> \n\
+                          <label class="custom-control-label" for="hidden-navigation">Hidden navigation</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="sticky-header"> \n\
+                          <label class="custom-control-label" for="sticky-header">Sticky header</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" id="light-header"> \n\
+                          <label class="custom-control-label" for="light-header">Light header</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="sticky-footer"> \n\
+                          <label class="custom-control-label" for="sticky-footer">Sticky footer</label> \n\
+                      </div> \n\
+                  </div> \n\
+              </div> \n\
+          </div> \n\
+      </div> \n\
+  </div>';
+   $('body').append(theme_switcher_html);
+   $(document).on('click', '.theme-switcher input[type="checkbox"]', function () {
+      var id = $(this).attr('id');
+      if (id === 'sticky-navigation') {
+          if ($(this).prop('checked')) {
+              $('.navigation').niceScroll().resize();
+          } else {
+              $('.navigation').niceScroll().remove();
+          }
+          if ($('body').hasClass('small-navigation')) {
+              $('.navigation .navigation-menu-body > ul > li').each(function () {
+                  if ($(this).find('> a').next('ul').length) {
+                      // Dropdown add header title
+                      $(this).find('.dropdown-divider').remove();
+                  } else {
+                      // Add tooltip
+                      $(this).find('> a').tooltip('dispose');
+                  }
+              });
+              $('body').removeClass('small-navigation');
+              $('.theme-switcher input[type="checkbox"][id="small-navigation"]').prop('checked', false);
+          }
+          if ($('body').hasClass('hidden-navigation')) {CUSTOMİZABLE
+              $('body').removeClass('hidden-navigation');
+              $('.theme-switcher input[type="checkbox"][id="hidden-navigation"]').prop('checked', false);
+          }
+      }
+      if (id === 'small-navigation') {
+          if ($(this).prop('checked')) {
+              $('.navigation .navigation-menu-body > ul > li').each(function () {
+                  if ($(this).find('> a').next('ul').length) {
+                      // Dropdown add header title
+                      $(this).find('> a').next('ul').prepend('<li class="dropdown-divider">' + $(this).find('> a > span:not(.badge)').text() + '</li>')
+                  } else {
+                      // Add tooltip
+                      $(this).find('> a').attr('title', $(this).find('> a > span:not(.badge)').text());
+                      $(this).find('> a').tooltip({
+                          placement: "right"
+                      });
+                  }
+              });
+          } else {
+              $('.navigation .navigation-menu-body > ul > li').each(function () {
+                  if ($(this).find('> a').next('ul').length) {
+                      // Dropdown add header title
+                      $(this).find('.dropdown-divider').remove();
+                  } else {
+                      // Add tooltip
+                      $(this).find('> a').tooltip('dispose');
+                  }
+              });
+          }
+          if ($('body').hasClass('sticky-navigation')) {
+              $('body').removeClass('sticky-navigation');
+              $('.navigation').niceScroll().remove();
+              $('.theme-switcher input[type="checkbox"][id="sticky-navigation"]').prop('checked', false);
+          }
+          if ($('body').hasClass('hidden-navigation')) {
+              $('body').removeClass('hidden-navigation');
+              $('.theme-switcher input[type="checkbox"][id="hidden-navigation"]').prop('checked', false);
+          }
+      }
+      if (id === 'hidden-navigation') {
+          setTimeout(function () {
+              $('.navigation').niceScroll().resize();
+              $('.app-block .app-content .app-lists').niceScroll().resize();
+              $('.app-block .app-sidebar .app-sidebar-menu').niceScroll().resize();
+              $('.chat-block .chat-sidebar .chat-sidebar-content .tab-content .tab-pane').niceScroll().resize();
+          }, 200);
+          if (!$(this).prop('checked')) {
+              $.removeOverlay();
+              $('.navigation').removeClass('open');
+          }
+          if (page != 'chat.html' && page != 'inbox.html' && page != 'app-todo.html') {
+              if ($('body').hasClass('sticky-navigation')) {
+                  $('body').removeClass('sticky-navigation');
+                  $('.theme-switcher input[type="checkbox"][id="sticky-navigation"]').prop('checked', false);
+              }
+          }
+          if ($('body').hasClass('small-navigation')) {
+              $('.navigation .navigation-menu-body > ul > li').each(function () {
+                  if ($(this).find('> a').next('ul').length) {
+                      // Dropdown add header title
+                      $(this).find('.dropdown-divider').remove();
+                  } else {
+                      // Add tooltip
+                      $(this).find('> a').tooltip('dispose');
+                  }
+              });
+              $('body').removeClass('small-navigation');
+              $('.theme-switcher input[type="checkbox"][id="small-navigation"]').prop('checked', false);
+          }
+      }
+      if (id === 'dark') {
+          if ($('body').hasClass('semi-dark')) {
+              $('body').removeClass('semi-dark');
+              $('.theme-switcher input[type="checkbox"][id="semi-dark"]').prop('checked', false);
+          }
+      }
+      if (id === 'semi-dark') {
+          if ($('body').hasClass('dark')) {
+              $('body').removeClass('dark');
+              $('.theme-switcher input[type="checkbox"][id="dark"]').prop('checked', false);
+          }
+      }
+      $('body').toggleClass(id);
+  });
+   $(document).on('click', '.theme-switcher .theme-switcher-button', function () {
+      $('.theme-switcher').toggleClass('open');
+  }); */
+})(jQuery);
+
+/***/ }),
+
+/***/ 0:
+/*!*****************************************************************!*\
+  !*** multi ./resources/js/app.js ./public/assets/sass/app.scss ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(/**/"./resources/js/app.js");
+module.exports = __webpack_require__(/**/"./public/assets/sass/app.scss");
+
+
+/***/ })
+
+/******/ });
Index: resources/assets/js/app.min.js
===================================================================
--- resources/assets/js/app.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/app.min.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,685 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./public/assets/sass/app.scss":
+/*!*************************************!*\
+  !*** ./public/assets/sass/app.scss ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+// removed by extract-text-webpack-plugin
+
+/***/ }),
+
+/***/ "./resources/js/app.js":
+/*!*****************************!*\
+  !*** ./resources/js/app.js ***!
+  \*****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+(function ($) {
+  var wind_ = $(window),
+      body_ = $('body');
+  feather.replace({
+    'stroke-width': 1.5
+  });
+  $(document).on('click', '[data-toggle="fullscreen"]', function () {
+    $(this).toggleClass('active-fullscreen');
+
+    if (document.fullscreenEnabled) {
+      if ($(this).hasClass("active-fullscreen")) {
+        document.documentElement.requestFullscreen();
+      } else {
+        document.exitFullscreen();
+      }
+    } else {
+      alert("Your browser does not support fullscreen.");
+    }
+
+    return false;
+  });
+  $(document).on('click', '.overlay', function () {
+    $.removeOverlay();
+
+    if (body_.hasClass('horizontal-navigation')) {
+      $('.horizontal-navigation').removeClass('open');
+    } else {
+      $('.navigation').removeClass('open');
+    }
+
+    body_.removeClass('navigation-show');
+  });
+  $(document).on('click', '[data-sidebar-target]', function () {
+    var target = $(this).data('sidebar-target');
+    $('body').addClass('no-scroll');
+    $('.sidebar-group').addClass('show');
+    $('.sidebar-group .sidebar').removeClass('show');
+    $('.sidebar-group .sidebar' + target).addClass('show');
+    return false;
+  });
+  $(document).on('click', '.sidebar-group', function (e) {
+    if ($(e.target).is($('.sidebar-group'))) {
+      $('.sidebar-group').removeClass('show');
+      $('body').removeClass('no-scroll');
+      $('.sidebar-group .sidebar').removeClass('show');
+    }
+  }); // Active pages, automatically show on the menu
+
+  $('.navigation .navigation-menu-body .navigation-menu-group ul li a.active').closest('ul').parent('li').addClass('open').closest('ul').parent('li').addClass('open');
+  $('.navigation .navigation-menu-body .navigation-menu-group ul li a.active').closest('div').addClass('open');
+  $('.navigation .navigation-menu-tab [data-nav-target="#' + $('.navigation .navigation-menu-body .navigation-menu-group ul li a.active').closest('div').attr('id') + '"]').addClass('active');
+  $('body.horizontal-navigation .horizontal-navigation ul li a.active').closest('ul').parent('li').addClass('open').closest('ul').parent('li').addClass('open');
+  /*------------- create/remove overlay -------------*/
+
+  $.createOverlay = function () {
+    if ($('.overlay').length < 1) {
+      body_.addClass('no-scroll').append('<div class="overlay"></div>');
+      $('.overlay').addClass('show');
+    }
+  };
+
+  $.removeOverlay = function () {
+    body_.removeClass('no-scroll');
+    $('.overlay').remove();
+  };
+  /*------------- create/remove overlay -------------*/
+
+
+  $('[data-backround-image]').each(function (e) {
+    $(this).css("background", 'url(' + $(this).data('backround-image') + ')');
+  });
+  /*------------- page loader -------------*/
+
+  wind_.on('load', function () {
+    $('.preloader').fadeOut(400, function () {
+      setTimeout(function () {
+        toastr.options = {
+          timeOut: 2000,
+          progressBar: true,
+          showMethod: "slideDown",
+          hideMethod: "slideUp",
+          showDuration: 200,
+          hideDuration: 200,
+          positionClass: "toast-top-center"
+        };
+        //toastr.success('Welcome Roxana Roussell.');
+        $('.theme-switcher').removeClass('open');
+      }, 500); // $('.theme-switcher').css('opacity', 1);
+    });
+  });
+  /*------------- page loader -------------*/
+
+  /*------------- side menu (sub menü arrow) -------------*/
+
+  wind_.on('load', function () {
+    setTimeout(function () {
+      $('.navigation .navigation-menu-body ul li a').each(function () {
+        var $this = $(this);
+
+        if ($this.next('ul').length) {
+          $this.append('<i class="sub-menu-arrow ti-angle-up"></i>');
+        }
+      });
+      $('.navigation .navigation-menu-body ul li.open>a>.sub-menu-arrow').removeClass('ti-plus').addClass('ti-minus').addClass('rotate-in');
+      $('body.horizontal-navigation .horizontal-navigation ul li a').each(function () {
+        var $this = $(this);
+
+        if ($this.next('ul').length) {
+          $this.append('<i class="sub-menu-arrow ti-angle-right"></i>');
+        }
+      });
+    }, 200);
+  });
+  /*------------- side menu (sub menü arrow) -------------*/
+
+  $(document).on('click', '[data-action="navigation-toggler"]', function () {
+    if (body_.hasClass('horizontal-navigation')) {
+      $('.horizontal-navigation').toggleClass('open');
+    } else {
+      $('.navigation').toggleClass('open');
+    }
+
+    $.createOverlay();
+  });
+  $(document).on('click', '[data-nav-target]', function () {
+    var $this = $(this),
+        target = $this.data('nav-target');
+
+    if (body_.hasClass('navigation-toggle-one')) {
+      body_.addClass('navigation-show');
+    }
+
+    if (body_.hasClass('horizontal-navigation')) {
+      $('.navigation .navigation-menu-body').show();
+    }
+
+    $('.navigation .navigation-menu-body .navigation-menu-group > div').removeClass('open');
+    $('.navigation .navigation-menu-body .navigation-menu-group ' + target).addClass('open');
+    $('[data-nav-target]').removeClass('active');
+    $this.addClass('active');
+    $this.tooltip('hide');
+    return false;
+  });
+  var c = $('.header .header-left .header-logo').clone();
+  $('.navigation .navigation-header').append(c.addClass('navigation-logo').removeClass('header-logo'));
+  $(document).on('click', '.navigation-toggler a', function () {
+    if (wind_.width() < 1200) {
+      $.createOverlay();
+      body_.addClass('navigation-show');
+    } else {
+      if (!body_.hasClass('navigation-toggle-one') && !body_.hasClass('navigation-toggle-two')) {
+        body_.addClass('navigation-toggle-one');
+      } else if (body_.hasClass('navigation-toggle-one') && !body_.hasClass('navigation-toggle-two')) {
+        body_.addClass('navigation-toggle-two');
+        body_.removeClass('navigation-toggle-one');
+      } else if (!body_.hasClass('navigation-toggle-one') && body_.hasClass('navigation-toggle-two')) {
+        body_.removeClass('navigation-toggle-two');
+        body_.removeClass('navigation-toggle-one');
+      }
+    }
+
+    return false;
+  });
+  $(document).on('click', '.header-toggler a', function () {
+    $('.header ul.navbar-nav').toggleClass('open');
+    return false;
+  });
+  $(document).on('click', '*', function (e) {
+    if (!$(e.target).is($('.navigation, .navigation *, .navigation-toggler *')) && body_.hasClass('navigation-toggle-one')) {
+      body_.removeClass('navigation-show');
+    }
+  });
+  $(document).on('click', '*', function (e) {
+    if (!$(e.target).is('.header ul.navbar-nav, .header ul.navbar-nav *, .header-toggler, .header-toggler *')) {
+      $('.header ul.navbar-nav').removeClass('open');
+    }
+  });
+  /*------------- form validation -------------*/
+
+  window.addEventListener('load', function () {
+    // Fetch all the forms we want to apply custom Bootstrap validation styles to
+    var forms = document.getElementsByClassName('needs-validation'); // Loop over them and prevent submission
+
+    Array.prototype.filter.call(forms, function (form) {
+      form.addEventListener('submit', function (event) {
+        if (form.checkValidity() === false) {
+          event.preventDefault();
+          event.stopPropagation();
+        }
+
+        form.classList.add('was-validated');
+      }, false);
+    });
+  }, false);
+  /*------------- form validation -------------*/
+
+  /*------------- responsive html table -------------*/
+
+  var table_responsive_stack = $(".table-responsive-stack");
+  table_responsive_stack.find("th").each(function (i) {
+    $(".table-responsive-stack td:nth-child(" + (i + 1) + ")").prepend('<span class="table-responsive-stack-thead">' + $(this).text() + ":</span> ");
+    $(".table-responsive-stack-thead").hide();
+  });
+  table_responsive_stack.each(function () {
+    var thCount = $(this).find("th").length,
+        rowGrow = 100 / thCount + "%";
+    $(this).find("th, td").css("flex-basis", rowGrow);
+  });
+
+  function flexTable() {
+    if (wind_.width() < 768) {
+      $(".table-responsive-stack").each(function (i) {
+        $(this).find(".table-responsive-stack-thead").show();
+        $(this).find("thead").hide();
+      }); // window is less than 768px
+    } else {
+      $(".table-responsive-stack").each(function (i) {
+        $(this).find(".table-responsive-stack-thead").hide();
+        $(this).find("thead").show();
+      });
+    }
+  }
+
+  flexTable();
+
+  window.onresize = function (event) {
+    flexTable();
+  };
+  /*------------- responsive html table -------------*/
+
+  /*------------- header search -------------*/
+
+
+  $(document).on('click', '[data-toggle="search"], [data-toggle="search"] *', function () {
+    $('.header .header-body .header-search').show().find('.form-control').focus();
+    return false;
+  });
+  $(document).on('click', '.close-header-search, .close-header-search svg', function () {
+    $('.header .header-body .header-search').hide();
+    return false;
+  });
+  $(document).on('click', '*', function (e) {
+    if (!$(e.target).is($('.header, .header *, [data-toggle="search"], [data-toggle="search"] *'))) {
+      $('.header .header-body .header-search').hide();
+    }
+  });
+  /*------------- header search -------------*/
+
+  /*------------- custom accordion -------------*/
+
+  $(document).on('click', '.accordion.custom-accordion .accordion-row a.accordion-header', function () {
+    var $this = $(this);
+    $this.closest('.accordion.custom-accordion').find('.accordion-row').not($this.parent()).removeClass('open');
+    $this.parent('.accordion-row').toggleClass('open');
+    return false;
+  });
+  /*------------- custom accordion -------------*/
+
+  /*------------- responsive table dropdown -------------*/
+
+  var dropdownMenu,
+      table_responsive = $('.table-responsive');
+  table_responsive.on('show.bs.dropdown', function (e) {
+    dropdownMenu = $(e.target).find('.dropdown-menu');
+    body_.append(dropdownMenu.detach());
+    var eOffset = $(e.target).offset();
+    dropdownMenu.css({
+      'display': 'block',
+      'top': eOffset.top + $(e.target).outerHeight(),
+      'left': eOffset.left,
+      'width': '184px',
+      'font-size': '14px'
+    });
+    dropdownMenu.addClass("mobPosDropdown");
+  });
+  table_responsive.on('hide.bs.dropdown', function (e) {
+    $(e.target).append(dropdownMenu.detach());
+    dropdownMenu.hide();
+  });
+  /*------------- responsive table dropdown -------------*/
+
+  /*------------- chat -------------*/
+
+  $(document).on('click', '.chat-block .chat-sidebar .chat-sidebar-content .list-group .list-group-item', function () {
+    $('.chat-block .chat-content').addClass('chat-mobile-open');
+    return false;
+  });
+  $(document).on('click', '.chat-block .chat-content .mobile-chat-close-btn a', function () {
+    $('.chat-block .chat-content').removeClass('chat-mobile-open');
+    return false;
+  });
+  /*------------- chat -------------*/
+
+  /*------------- aside menu toggle -------------*/
+
+  $(document).on('click', '.navigation ul li a', function () {
+    var $this = $(this);
+
+    if ($this.next('ul').length) {
+      var sub_menu_arrow = $this.find('.sub-menu-arrow');
+      sub_menu_arrow.toggleClass('rotate-in');
+      $this.next('ul').toggle(200);
+      $this.parent('li').siblings().find('ul').not($this.parent('li').find('ul')).slideUp(200);
+      $this.next('ul').find('li ul').slideUp(200);
+      $this.next('ul').find('li>a').find('.sub-menu-arrow').removeClass('ti-minus').addClass('ti-plus');
+      $this.next('ul').find('li>a').find('.sub-menu-arrow').removeClass('rotate-in');
+      $this.parent('li').siblings().not($this.parent('li').find('ul')).find('>a').find('.sub-menu-arrow').removeClass('ti-minus').addClass('ti-plus');
+      $this.parent('li').siblings().not($this.parent('li').find('ul')).find('>a').find('.sub-menu-arrow').removeClass('rotate-in');
+
+      if (sub_menu_arrow.hasClass('rotate-in')) {
+        setTimeout(function () {
+          sub_menu_arrow.removeClass('ti-plus').addClass('ti-minus');
+        }, 200);
+      } else {
+        sub_menu_arrow.removeClass('ti-minus').addClass('ti-plus');
+      }
+
+      if (!body_.hasClass('horizontal-side-menu') && wind_.width() >= 1200) {
+        setTimeout(function (e) {
+          $('.navigation .navigation-menu-body').getNiceScroll().resize();
+        }, 300);
+      }
+
+      return false;
+    }
+  });
+  $(document).on('click', '.horizontal-navigation ul li a', function () {
+    var $this = $(this);
+
+    if ($this.next('ul').length) {
+      $this.next('ul').toggle(200);
+      $this.parent('li').siblings().find('ul').not($this.parent('li').find('ul')).slideUp(200);
+      $this.next('ul').find('li ul').slideUp(200);
+      return false;
+    }
+  });
+  /*------------- aside menu toggle -------------*/
+
+  /*------------- other -------------*/
+
+  $(document).on('click', '.dropdown-menu', function (e) {
+    e.stopPropagation();
+  });
+  $('#exampleModal').on('show.bs.modal', function (event) {
+    var button = $(event.relatedTarget),
+        recipient = button.data('whatever'),
+        modal = $(this);
+    modal.find('.modal-title').text('New message to ' + recipient);
+    modal.find('.modal-body input').val(recipient);
+  });
+  $('[data-toggle="tooltip"]').tooltip({
+    container: 'body'
+  });
+  $('[data-toggle="popover"]').popover();
+  $('.carousel').carousel();
+
+  if (wind_.width() >= 992) {
+    $('.card-scroll').niceScroll();
+    $('.table-responsive').niceScroll();
+    $('.sidebar-group .sidebar').niceScroll();
+    $('.app-block .app-content .app-lists').niceScroll();
+    $('.app-block .app-sidebar .app-sidebar-menu').niceScroll();
+    $('.chat-block .chat-sidebar .chat-sidebar-content').niceScroll();
+    var chat_messages = $('.chat-block .chat-content .messages');
+
+    if (chat_messages.length) {
+      chat_messages.niceScroll({
+        horizrailenabled: false
+      });
+      chat_messages.getNiceScroll(0).doScrollTop(chat_messages.get(0).scrollHeight, -1);
+    }
+  }
+
+  if (!body_.hasClass('small-navigation') && !body_.hasClass('horizontal-navigation') && wind_.width() >= 992) {
+    $('.navigation .navigation-menu-body').niceScroll();
+  }
+
+  $('.dropdown-menu ul.list-group').niceScroll();
+  /* Theme Switcher */
+
+  /* var path = window.location.pathname;
+  var page = path.split("/").pop();
+   var theme_switcher_html = '<div class="theme-switcher open"> \n\
+      <div class="theme-switcher-button"> \n\
+          <i class="fa fa-cog"></i> \n\
+      </div> \n\
+      <div class="theme-switcher-panel"> \n\
+          <div class="card"> \n\
+              <div class="card-body"> \n\
+                  <h6 class="card-title">Theme Switcher</h6> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" id="dark"> \n\
+                          <label class="custom-control-label" for="dark">Dark</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" id="semi-dark"> \n\
+                          <label class="custom-control-label" for="semi-dark">Semi dark</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" id="shadow-layout"> \n\
+                          <label class="custom-control-label" for="shadow-layout">Shadow layout</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="sticky-navigation"> \n\
+                          <label class="custom-control-label" for="sticky-navigation">Sticky navigation</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="small-navigation"> \n\
+                          <label class="custom-control-label" for="small-navigation">Small navigation</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" id="hidden-navigation"> \n\
+                          <label class="custom-control-label" for="hidden-navigation">Hidden navigation</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="sticky-header"> \n\
+                          <label class="custom-control-label" for="sticky-header">Sticky header</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" id="light-header"> \n\
+                          <label class="custom-control-label" for="light-header">Light header</label> \n\
+                      </div> \n\
+                  </div> \n\
+                  <div class="form-group mb-2"> \n\
+                      <div class="custom-control custom-switch"> \n\
+                          <input type="checkbox" class="custom-control-input" ' + (page === 'chat.html' || page === 'inbox.html' || page === 'app-todo.html' ? 'disabled' : '') + ' id="sticky-footer"> \n\
+                          <label class="custom-control-label" for="sticky-footer">Sticky footer</label> \n\
+                      </div> \n\
+                  </div> \n\
+              </div> \n\
+          </div> \n\
+      </div> \n\
+  </div>';
+   $('body').append(theme_switcher_html);
+   $(document).on('click', '.theme-switcher input[type="checkbox"]', function () {
+      var id = $(this).attr('id');
+      if (id === 'sticky-navigation') {
+          if ($(this).prop('checked')) {
+              $('.navigation').niceScroll().resize();
+          } else {
+              $('.navigation').niceScroll().remove();
+          }
+          if ($('body').hasClass('small-navigation')) {
+              $('.navigation .navigation-menu-body > ul > li').each(function () {
+                  if ($(this).find('> a').next('ul').length) {
+                      // Dropdown add header title
+                      $(this).find('.dropdown-divider').remove();
+                  } else {
+                      // Add tooltip
+                      $(this).find('> a').tooltip('dispose');
+                  }
+              });
+              $('body').removeClass('small-navigation');
+              $('.theme-switcher input[type="checkbox"][id="small-navigation"]').prop('checked', false);
+          }
+          if ($('body').hasClass('hidden-navigation')) {CUSTOMİZABLE
+              $('body').removeClass('hidden-navigation');
+              $('.theme-switcher input[type="checkbox"][id="hidden-navigation"]').prop('checked', false);
+          }
+      }
+      if (id === 'small-navigation') {
+          if ($(this).prop('checked')) {
+              $('.navigation .navigation-menu-body > ul > li').each(function () {
+                  if ($(this).find('> a').next('ul').length) {
+                      // Dropdown add header title
+                      $(this).find('> a').next('ul').prepend('<li class="dropdown-divider">' + $(this).find('> a > span:not(.badge)').text() + '</li>')
+                  } else {
+                      // Add tooltip
+                      $(this).find('> a').attr('title', $(this).find('> a > span:not(.badge)').text());
+                      $(this).find('> a').tooltip({
+                          placement: "right"
+                      });
+                  }
+              });
+          } else {
+              $('.navigation .navigation-menu-body > ul > li').each(function () {
+                  if ($(this).find('> a').next('ul').length) {
+                      // Dropdown add header title
+                      $(this).find('.dropdown-divider').remove();
+                  } else {
+                      // Add tooltip
+                      $(this).find('> a').tooltip('dispose');
+                  }
+              });
+          }
+          if ($('body').hasClass('sticky-navigation')) {
+              $('body').removeClass('sticky-navigation');
+              $('.navigation').niceScroll().remove();
+              $('.theme-switcher input[type="checkbox"][id="sticky-navigation"]').prop('checked', false);
+          }
+          if ($('body').hasClass('hidden-navigation')) {
+              $('body').removeClass('hidden-navigation');
+              $('.theme-switcher input[type="checkbox"][id="hidden-navigation"]').prop('checked', false);
+          }
+      }
+      if (id === 'hidden-navigation') {
+          setTimeout(function () {
+              $('.navigation').niceScroll().resize();
+              $('.app-block .app-content .app-lists').niceScroll().resize();
+              $('.app-block .app-sidebar .app-sidebar-menu').niceScroll().resize();
+              $('.chat-block .chat-sidebar .chat-sidebar-content .tab-content .tab-pane').niceScroll().resize();
+          }, 200);
+          if (!$(this).prop('checked')) {
+              $.removeOverlay();
+              $('.navigation').removeClass('open');
+          }
+          if (page != 'chat.html' && page != 'inbox.html' && page != 'app-todo.html') {
+              if ($('body').hasClass('sticky-navigation')) {
+                  $('body').removeClass('sticky-navigation');
+                  $('.theme-switcher input[type="checkbox"][id="sticky-navigation"]').prop('checked', false);
+              }
+          }
+          if ($('body').hasClass('small-navigation')) {
+              $('.navigation .navigation-menu-body > ul > li').each(function () {
+                  if ($(this).find('> a').next('ul').length) {
+                      // Dropdown add header title
+                      $(this).find('.dropdown-divider').remove();
+                  } else {
+                      // Add tooltip
+                      $(this).find('> a').tooltip('dispose');
+                  }
+              });
+              $('body').removeClass('small-navigation');
+              $('.theme-switcher input[type="checkbox"][id="small-navigation"]').prop('checked', false);
+          }
+      }
+      if (id === 'dark') {
+          if ($('body').hasClass('semi-dark')) {
+              $('body').removeClass('semi-dark');
+              $('.theme-switcher input[type="checkbox"][id="semi-dark"]').prop('checked', false);
+          }
+      }
+      if (id === 'semi-dark') {
+          if ($('body').hasClass('dark')) {
+              $('body').removeClass('dark');
+              $('.theme-switcher input[type="checkbox"][id="dark"]').prop('checked', false);
+          }
+      }
+      $('body').toggleClass(id);
+  });
+   $(document).on('click', '.theme-switcher .theme-switcher-button', function () {
+      $('.theme-switcher').toggleClass('open');
+  }); */
+})(jQuery);
+
+/***/ }),
+
+/***/ 0:
+/*!*****************************************************************!*\
+  !*** multi ./resources/js/app.js ./public/assets/sass/app.scss ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(/**/"./resources/js/app.js");
+module.exports = __webpack_require__(/**/"./public/assets/sass/app.scss");
+
+
+/***/ })
+
+/******/ });
Index: resources/assets/js/custom.js
===================================================================
--- resources/assets/js/custom.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/custom.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,131 @@
+'use strict';
+
+(function ($) {
+
+    $(document).on('click', '.layout-builder .layout-builder-toggle', function () {
+        $('.layout-builder').toggleClass('show');
+    });
+
+    $(window).on('load', function () {
+        setTimeout(function () {
+            $('.layout-builder').removeClass('show');
+        }, 500);
+    });
+
+    $('.body').append(`
+    <div class="layout-builder show">
+        <div class="layout-builder-toggle shw">
+            <i class="ti-settings"></i>
+        </div>
+        <div class="layout-builder-toggle hdn">
+            <i class="ti-close"></i>
+        </div>
+        <div class="layout-builder-body">
+            <h5>Customizer</h5>
+            <div class="mb-3">
+                <p>Layout</p>
+                <div class="custom-control custom-radio">
+                  <input type="radio" class="custom-control-input" name="layout" id="horizontal-side-menu" data-layout="horizontal-side-menu">
+                  <label class="custom-control-label" for="horizontal-side-menu">Horizontal Menu</label>
+                </div>
+                <div class="custom-control custom-radio">
+                  <input type="radio" class="custom-control-input" name="layout" id="icon-side-menu" data-layout="icon-side-menu">
+                  <label class="custom-control-label" for="icon-side-menu">Icon Menu</label>
+                </div>
+                <div class="custom-control custom-radio">
+                  <input type="radio" class="custom-control-input" name="layout" id="hidden-side-menu" data-layout="hidden-side-menu">
+                  <label class="custom-control-label" for="hidden-side-menu">Hidden Menu</label>
+                </div>
+                <div class="custom-control custom-radio">
+                  <input type="radio" class="custom-control-input" name="layout" id="layout-container-1" data-layout="layout-container icon-side-menu">
+                  <label class="custom-control-label" for="layout-container-1">Container Layout 1</label>
+                </div>
+                <div class="custom-control custom-radio">
+                  <input type="radio" class="custom-control-input" name="layout" id="layout-container-2" data-layout="layout-container horizontal-side-menu">
+                  <label class="custom-control-label" for="layout-container-2">Container Layout 2</label>
+                </div>
+                <div class="custom-control custom-radio">
+                  <input type="radio" class="custom-control-input" name="layout" id="layout-container-3" data-layout="layout-container hidden-side-menu">
+                  <label class="custom-control-label" for="layout-container-3">Container Layout 3</label>
+                </div>
+                <div class="custom-control custom-radio">
+                  <input type="radio" class="custom-control-input" name="layout" id="dark-1" data-layout="dark">
+                  <label class="custom-control-label" for="dark-1">Dark Layout 1</label>
+                </div>
+                <div class="custom-control custom-radio">
+                  <input type="radio" class="custom-control-input" name="layout" id="dark-2" data-layout="layout-container dark icon-side-menu">
+                  <label class="custom-control-label" for="dark-2">Dark Layout 2</label>
+                </div>
+                <div class="custom-control custom-radio">
+                  <input type="radio" class="custom-control-input" name="layout" id="dark-3" data-layout="layout-container dark horizontal-side-menu">
+                  <label class="custom-control-label" for="dark-3">Dark Layout 3</label>
+                </div>
+                <div class="custom-control custom-radio">
+                  <input type="radio" class="custom-control-input" name="layout" id="dark-4" data-layout="layout-container dark hidden-side-menu">
+                  <label class="custom-control-label" for="dark-4">Dark Layout 4</label>
+                </div>
+            </div>
+            <button id="btn-layout-builder-reset" class="btn btn-danger btn-uppercase">Reset</button>
+            <div class="layout-alert mt-3">
+                <i class="fa fa-warning m-r-5 text-warning"></i>Some theme options can not be displayed in case of combined when they are not relevant each other. For that reason, you are adviced to try all theme options seperately.
+            </div>
+        </div>
+    </div>`);
+
+    var site_layout = localStorage.getItem('site_layout');
+    $('body').addClass(site_layout);
+
+    $('.layout-builder .layout-builder-body input[type="radio"][data-layout="' + $('body').attr('class') + '"]').prop('checked', true);
+
+    $('.layout-builder .layout-builder-body input[type="radio"]').click(function () {
+        var class_names = '';
+
+        $('.layout-builder .layout-builder-body input[type="radio"]:checked').each(function () {
+            class_names += ' ' + $(this).data('layout');
+        });
+
+        localStorage.setItem('site_layout', class_names);
+
+        window.location.href = (window.location.href).replace('#', '');
+    });
+
+    $(document).on('click', '#btn-layout-builder', function () {
+
+    });
+
+    $(document).on('click', '#btn-layout-builder-reset', function () {
+        localStorage.removeItem('site_layout');
+        localStorage.removeItem('site_layout_dark');
+
+        window.location.href = (window.location.href).replace('#', '');
+    });
+
+    $(window).on('load', function () {
+        if ($('body').hasClass('horizontal-side-menu') && $(window).width() > 768) {
+            if ($('body').hasClass('layout-container')) {
+                $('.side-menu .side-menu-body').wrap('<div class="container"></div>');
+            } else {
+                $('.side-menu .side-menu-body').wrap('<div class="container"></div>');
+            }
+            setTimeout(function () {
+                $('.side-menu .side-menu-body > ul').append('<li><a href="#"><span>Other</span></a><ul></ul></li>');
+            }, 100);
+            $('.side-menu .side-menu-body > ul > li').each(function () {
+                var index = $(this).index(),
+                    $this = $(this);
+                if (index > 7) {
+                    setTimeout(function () {
+                        $('.side-menu .side-menu-body > ul > li:last-child > ul').append($this.clone());
+                        $this.addClass('d-none');
+                    }, 100);
+                }
+            });
+        }
+    });
+
+    $(document).on('click', '[data-attr="layout-builder-toggle"]', function () {
+        $('.layout-builder').toggleClass('show');
+        return false;
+    });
+
+})(jQuery);
Index: resources/assets/js/examples/charts/apex.js
===================================================================
--- resources/assets/js/examples/charts/apex.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/charts/apex.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,614 @@
+'use strict';
+$(document).ready(function () {
+
+    apex_chart_one();
+
+    apex_chart_two();
+
+    apex_chart_three();
+
+    apex_chart_four();
+
+    apex_chart_five();
+
+    apex_chart_six();
+
+    apex_chart_seven();
+
+    apex_chart_eight();
+
+    apex_chart_nine();
+
+    function apex_chart_one() {
+        var lastDate = 0;
+        var data = []
+        var TICKINTERVAL = 86400000
+        let XAXISRANGE = 777600000
+
+        function getDayWiseTimeSeries(baseval, count, yrange) {
+            var i = 0;
+            while (i < count) {
+                var x = baseval;
+                var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
+
+                data.push({
+                    x, y
+                });
+                lastDate = baseval
+                baseval += TICKINTERVAL;
+                i++;
+            }
+        }
+
+        getDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 10, {
+            min: 10,
+            max: 90
+        });
+
+        function getNewSeries(baseval, yrange) {
+            var newDate = baseval + TICKINTERVAL;
+            lastDate = newDate;
+
+            for (var i = 0; i < data.length - 10; i++) {
+                // IMPORTANT
+                // we reset the x and y of the data which is out of drawing area
+                // to prevent memory leaks
+                data[i].x = newDate - XAXISRANGE - TICKINTERVAL
+                data[i].y = 0
+            }
+
+            data.push({
+                x: newDate,
+                y: Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min
+            })
+
+        }
+
+        var options = {
+            chart: {
+                height: 350,
+                type: 'line',
+                animations: {
+                    enabled: true,
+                    easing: 'linear',
+                    dynamicAnimation: {
+                        speed: 1000
+                    }
+                },
+                toolbar: {
+                    show: false
+                },
+                zoom: {
+                    enabled: false
+                }
+            },
+            dataLabels: {
+                enabled: false
+            },
+            stroke: {
+                curve: 'smooth'
+            },
+            series: [{
+                data: data
+            }],
+            title: {
+                text: 'Dynamic Updating Chart',
+                align: 'left'
+            },
+            markers: {
+                size: 0
+            },
+            xaxis: {
+                type: 'datetime',
+                range: XAXISRANGE,
+            },
+            yaxis: {
+                max: 100
+            },
+            legend: {
+                show: false
+            },
+        };
+
+        var chart = new ApexCharts(
+            document.querySelector("#apex_chart_one"),
+            options
+        );
+
+        chart.render();
+
+        window.setInterval(function () {
+            getNewSeries(lastDate, {
+                min: 10,
+                max: 90
+            })
+            chart.updateSeries([{
+                data: data
+            }])
+        }, 1000)
+    }
+
+    function apex_chart_two() {
+        var ts2 = 1484418600000;
+        var dates = [];
+        var spikes = [5, -5, 3, -3, 8, -8]
+        for (var i = 0; i < 120; i++) {
+            ts2 = ts2 + 86400000;
+            var innerArr = [ts2, dataSeries[1][i].value];
+            dates.push(innerArr)
+        }
+
+        var options = {
+            chart: {
+                type: 'area',
+                stacked: false,
+                height: 350,
+                zoom: {
+                    type: 'x',
+                    enabled: true
+                },
+                toolbar: {
+                    autoSelected: 'zoom'
+                }
+            },
+            dataLabels: {
+                enabled: false
+            },
+            series: [{
+                name: 'XYZ MOTORS',
+                data: dates
+            }],
+            markers: {
+                size: 0,
+            },
+            title: {
+                text: 'Stock Price Movement',
+                align: 'left'
+            },
+            fill: {
+                type: 'gradient',
+                gradient: {
+                    shadeIntensity: 1,
+                    inverseColors: false,
+                    opacityFrom: 0.5,
+                    opacityTo: 0,
+                    stops: [0, 90, 100]
+                },
+            },
+            yaxis: {
+                min: 20000000,
+                max: 250000000,
+                labels: {
+                    formatter: function (val) {
+                        return (val / 1000000).toFixed(0);
+                    },
+                },
+                title: {
+                    text: 'Price'
+                },
+            },
+            xaxis: {
+                type: 'datetime',
+            },
+
+            tooltip: {
+                shared: false,
+                y: {
+                    formatter: function (val) {
+                        return (val / 1000000).toFixed(0)
+                    }
+                }
+            }
+        }
+
+        var chart = new ApexCharts(
+            document.querySelector("#apex_chart_two"),
+            options
+        );
+
+        chart.render();
+    }
+
+    function apex_chart_three() {
+        var options = {
+            chart: {
+                height: 350,
+                type: 'area',
+            },
+            dataLabels: {
+                enabled: false
+            },
+            stroke: {
+                curve: 'smooth'
+            },
+            series: [{
+                name: 'series1',
+                data: [31, 40, 28, 51, 42, 109, 100]
+            }, {
+                name: 'series2',
+                data: [11, 32, 45, 32, 34, 52, 41]
+            }],
+
+            xaxis: {
+                type: 'datetime',
+                categories: ["2018-09-19T00:00:00", "2018-09-19T01:30:00", "2018-09-19T02:30:00", "2018-09-19T03:30:00", "2018-09-19T04:30:00", "2018-09-19T05:30:00", "2018-09-19T06:30:00"],
+            },
+            tooltip: {
+                x: {
+                    format: 'dd/MM/yy HH:mm'
+                },
+            }
+        }
+
+        var chart = new ApexCharts(
+            document.querySelector("#apex_chart_three"),
+            options
+        );
+
+        chart.render();
+    }
+
+    function apex_chart_four() {
+        var options = {
+            chart: {
+                height: 350,
+                type: 'bar',
+            },
+            plotOptions: {
+                bar: {
+                    horizontal: false,
+                    columnWidth: '55%',
+                    endingShape: 'rounded'
+                },
+            },
+            dataLabels: {
+                enabled: false
+            },
+            stroke: {
+                show: true,
+                width: 2,
+                colors: ['transparent']
+            },
+            series: [{
+                name: 'Net Profit',
+                data: [44, 55, 57, 56, 61, 58, 63, 60, 66]
+            }, {
+                name: 'Revenue',
+                data: [76, 85, 101, 98, 87, 105, 91, 114, 94]
+            }, {
+                name: 'Free Cash Flow',
+                data: [35, 41, 36, 26, 45, 48, 52, 53, 41]
+            }],
+            xaxis: {
+                categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'],
+            },
+            yaxis: {
+                title: {
+                    text: '$ (thousands)'
+                }
+            },
+            fill: {
+                opacity: 1
+
+            },
+            tooltip: {
+                y: {
+                    formatter: function (val) {
+                        return "$ " + val + " thousands"
+                    }
+                }
+            }
+        }
+
+        var chart = new ApexCharts(
+            document.querySelector("#apex_chart_four"),
+            options
+        );
+
+        chart.render();
+    }
+
+    function apex_chart_five() {
+        var options = {
+            chart: {
+                height: 350,
+                type: 'bar',
+                stacked: true,
+                stackType: '100%'
+            },
+            responsive: [{
+                breakpoint: 480,
+                options: {
+                    legend: {
+                        position: 'bottom',
+                        offsetX: -10,
+                        offsetY: 0
+                    }
+                }
+            }],
+            series: [{
+                name: 'PRODUCT A',
+                data: [44, 55, 41, 67, 22, 43, 21, 49]
+            },{
+                name: 'PRODUCT B',
+                data: [13, 23, 20, 8, 13, 27, 33, 12]
+            },{
+                name: 'PRODUCT C',
+                data: [11, 17, 15, 15, 21, 14, 15, 13]
+            }],
+            xaxis: {
+                categories: ['2011 Q1', '2011 Q2', '2011 Q3', '2011 Q4', '2012 Q1', '2012 Q2', '2012 Q3', '2012 Q4'],
+            },
+            fill: {
+                opacity: 1
+            },
+
+            legend: {
+                position: 'right',
+                offsetX: 0,
+                offsetY: 50
+            },
+        }
+
+        var chart = new ApexCharts(
+            document.querySelector("#apex_chart_five"),
+            options
+        );
+
+        chart.render();
+    }
+
+    function apex_chart_six() {
+        var options = {
+            chart: {
+                height: 380,
+                type: 'bar'
+            },
+            plotOptions: {
+                bar: {
+                    barHeight: '100%',
+                    distributed: true,
+                    horizontal: true,
+                    dataLabels: {
+                        position: 'bottom'
+                    },
+                }
+            },
+            colors: ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B', '#2b908f', '#f9a3a4', '#90ee7e', '#f48024', '#69d2e7'],
+            dataLabels: {
+                enabled: true,
+                textAnchor: 'start',
+                style: {
+                    colors: ['#fff']
+                },
+                formatter: function(val, opt) {
+                    return opt.w.globals.labels[opt.dataPointIndex] + ":  " + val
+                },
+                offsetX: 0,
+                dropShadow: {
+                    enabled: true
+                }
+            },
+            series: [{
+                data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380]
+            }],
+            stroke: {
+                width: 1,
+                colors: ['#fff']
+            },
+            xaxis: {
+                categories: ['South Korea', 'Canada', 'United Kingdom', 'Netherlands', 'Italy', 'France', 'Japan', 'United States', 'China', 'India'],
+            },
+            yaxis: {
+                labels: {
+                    show: false
+                }
+            },
+            title: {
+                text: 'Custom DataLabels',
+                align: 'center',
+                floating: true
+            },
+            subtitle: {
+                text: 'Category Names as DataLabels inside bars',
+                align: 'center',
+            },
+            tooltip: {
+                theme: 'dark',
+                x: {
+                    show: false
+                },
+                y: {
+                    title: {
+                        formatter: function() {
+                            return ''
+                        }
+                    }
+                }
+            }
+        }
+
+        var chart = new ApexCharts(
+            document.querySelector("#apex_chart_six"),
+            options
+        );
+
+        chart.render();
+    }
+
+    function apex_chart_seven() {
+        var options = {
+            chart: {
+                width: 380,
+                type: 'pie',
+            },
+            labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],
+            series: [44, 55, 13, 43, 22],
+            responsive: [{
+                breakpoint: 480,
+                options: {
+                    chart: {
+                        width: 200
+                    },
+                    legend: {
+                        position: 'bottom'
+                    }
+                }
+            }]
+        }
+
+        var chart = new ApexCharts(
+            document.querySelector("#apex_chart_seven"),
+            options
+        );
+
+        chart.render();
+    }
+
+    function apex_chart_eight() {
+        function generateData(baseval, count, yrange) {
+            var i = 0;
+            var series = [];
+            while (i < count) {
+                var x = Math.floor(Math.random() * (750 - 1 + 1)) + 1;;
+                var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
+                var z = Math.floor(Math.random() * (75 - 15 + 1)) + 15;
+
+                series.push([x, y, z]);
+                baseval += 86400000;
+                i++;
+            }
+            return series;
+        }
+
+
+        var options = {
+            chart: {
+                height: 350,
+                type: 'bubble',
+            },
+            dataLabels: {
+                enabled: false
+            },
+            series: [{
+                name: 'Bubble1',
+                data: generateData(new Date('11 Feb 2017 GMT').getTime(), 20, {
+                    min: 10,
+                    max: 60
+                })
+            },
+                {
+                    name: 'Bubble2',
+                    data: generateData(new Date('11 Feb 2017 GMT').getTime(), 20, {
+                        min: 10,
+                        max: 60
+                    })
+                },
+                {
+                    name: 'Bubble3',
+                    data: generateData(new Date('11 Feb 2017 GMT').getTime(), 20, {
+                        min: 10,
+                        max: 60
+                    })
+                },
+                {
+                    name: 'Bubble4',
+                    data: generateData(new Date('11 Feb 2017 GMT').getTime(), 20, {
+                        min: 10,
+                        max: 60
+                    })
+                }
+            ],
+            fill: {
+                opacity: 0.8
+            },
+            title: {
+                text: 'Simple Bubble Chart'
+            },
+            xaxis: {
+                tickAmount: 12,
+                type: 'category',
+            },
+            yaxis: {
+                max: 70
+            }
+        }
+
+        var chart = new ApexCharts(
+            document.querySelector("#apex_chart_eight"),
+            options
+        );
+
+        chart.render();
+    }
+
+    function apex_chart_nine() {
+        var options = {
+            chart: {
+                height: 350,
+                type: 'radar',
+                dropShadow: {
+                    enabled: true,
+                    blur: 1,
+                    left: 1,
+                    top: 1
+                }
+            },
+            series: [{
+                name: 'Series 1',
+                data: [80, 50, 30, 40, 100, 20],
+            }, {
+                name: 'Series 2',
+                data: [20, 30, 40, 80, 20, 80],
+            }, {
+                name: 'Series 3',
+                data: [44, 76, 78, 13, 43, 10],
+            }],
+            title: {
+                text: 'Radar Chart - Multi Series'
+            },
+            stroke: {
+                width: 0
+            },
+            fill: {
+                opacity: 0.4
+            },
+            markers: {
+                size: 0
+            },
+            labels: ['2011', '2012', '2013', '2014', '2015', '2016']
+        }
+
+        var chart = new ApexCharts(
+            document.querySelector("#apex_chart_nine"),
+            options
+        );
+
+        chart.render();
+
+        function update() {
+
+            function randomSeries() {
+                var arr = []
+                for(var i = 0; i < 6; i++) {
+                    arr.push(Math.floor(Math.random() * 100))
+                }
+
+                return arr
+            }
+
+
+            chart.updateSeries([{
+                name: 'Series 1',
+                data: randomSeries(),
+            }, {
+                name: 'Series 2',
+                data: randomSeries(),
+            }, {
+                name: 'Series 3',
+                data: randomSeries(),
+            }])
+        }
+    }
+
+});
Index: resources/assets/js/examples/charts/chartjs.js
===================================================================
--- resources/assets/js/examples/charts/chartjs.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/charts/chartjs.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,228 @@
+'use strict';
+$(document).ready(function () {
+
+    var colors = {
+        primary: $('.colors .bg-primary').css('background-color'),
+        primaryLight: $('.colors .bg-primary-bright').css('background-color'),
+        secondary: $('.colors .bg-secondary').css('background-color'),
+        secondaryLight: $('.colors .bg-secondary-bright').css('background-color'),
+        info: $('.colors .bg-info').css('background-color'),
+        infoLight: $('.colors .bg-info-bright').css('background-color'),
+        success: $('.colors .bg-success').css('background-color'),
+        successLight: $('.colors .bg-success-bright').css('background-color'),
+        danger: $('.colors .bg-danger').css('background-color'),
+        dangerLight: $('.colors .bg-danger-bright').css('background-color'),
+        warning: $('.colors .bg-warning').css('background-color'),
+        warningLight: $('.colors .bg-warning-bright').css('background-color'),
+    };
+
+    chartjs_one();
+
+    chartjs_two();
+
+    chartjs_three();
+
+    chartjs_four();
+
+    chartjs_five();
+
+    chartjs_six();
+
+    function chartjs_one() {
+        var element = document.getElementById("chartjs_one");
+        element.height = 100;
+        new Chart(element, {
+            type: 'bar',
+            data: {
+                labels: ["Africa", "Asia", "Europe", "Latin America", "North America"],
+                datasets: [
+                    {
+                        label: "Population (millions)",
+                        backgroundColor: [
+                            colors.primary,
+                            colors.secondary,
+                            colors.success,
+                            colors.warning,
+                            colors.info
+                        ],
+                        data: [2478,3267,1734,2084,3000]
+                    }
+                ]
+            },
+            options: {
+                legend: { display: false },
+                title: {
+                    display: true,
+                    text: 'Predicted world population (millions) in 2050'
+                }
+            }
+        });
+    }
+
+    function chartjs_two() {
+        var element = document.getElementById("chartjs_two");
+        element.height = 100;
+        new Chart(element, {
+            type: 'line',
+            data: {
+                labels: ["January", "February", "March", "April", "May", "June", "July"],
+                datasets: [{
+                    data: [65, 0, 80, 81, 56, 85, 40],
+                    label: "Africa",
+                    borderColor: colors.primary,
+                    backgroundColor: colors.primaryLight,
+                }, {
+                    data: [25, 55, 20, 31, 96, 35, 80],
+                    label: "Asia",
+                    borderColor: colors.success,
+                    backgroundColor: colors.successLight,
+                }
+                ]
+            },
+            options: {
+                title: {
+                    display: true,
+                    text: 'World population per region (in millions)'
+                }
+            }
+        });
+    }
+
+    function chartjs_three() {
+        var element = document.getElementById("chartjs_three");
+        element.height = 100;
+        new Chart(element, {
+            type: 'pie',
+            data: {
+                labels: ["Africa", "Asia", "Europe", "Latin America", "North America"],
+                datasets: [{
+                    label: "Population (millions)",
+                    borderWidth: 5,
+                    backgroundColor: [
+                        colors.primary,
+                        colors.secondary,
+                        colors.success,
+                        colors.warning,
+                        colors.info
+                    ],
+                    data: [2478,3267,734,1784,933]
+                }]
+            },
+            options: {
+                title: {
+                    display: true,
+                    text: 'Predicted world population (millions) in 2050'
+                }
+            }
+        });
+    }
+
+    function chartjs_four() {
+        var element = document.getElementById("chartjs_four");
+        element.height = 100;
+        new Chart(element, {
+            type: 'radar',
+            data: {
+                labels: ["Africa", "Asia", "Europe", "Latin America", "North America"],
+                datasets: [
+                    {
+                        label: "1950",
+                        fill: true,
+                        backgroundColor: colors.primaryLight,
+                        borderColor: colors.primary,
+                        pointBorderColor: "#fff",
+                        data: [8.77,55.61,21.69,6.62,6.82]
+                    }, {
+                        label: "2050",
+                        fill: true,
+                        backgroundColor: colors.successLight,
+                        borderColor: colors.success,
+                        pointBorderColor: "#fff",
+                        data: [25.48,54.16,7.61,8.06,4.45]
+                    }
+                ]
+            },
+            options: {
+                title: {
+                    display: true,
+                    text: 'Distribution in % of world population'
+                }
+            }
+        });
+    }
+
+    function chartjs_five() {
+        var element = document.getElementById("chartjs_five");
+        element.height = 100;
+        new Chart(element, {
+            type: 'horizontalBar',
+            data: {
+                labels: ["Africa", "Asia", "Europe", "Latin America", "North America"],
+                datasets: [
+                    {
+                        label: "Population (millions)",
+                        backgroundColor: [
+                            colors.primary,
+                            colors.secondary,
+                            colors.success,
+                            colors.warning,
+                            colors.info
+                        ],
+                        data: [2478,5267,734,784,433]
+                    }
+                ]
+            },
+            options: {
+                legend: { display: false },
+                title: {
+                    display: true,
+                    text: 'Predicted world population (millions) in 2050'
+                }
+            }
+        });
+    }
+
+    function chartjs_six() {
+        var element = document.getElementById("chartjs_six");
+        element.height = 100;
+        new Chart(element, {
+            type: 'bar',
+            data: {
+                labels: ["1900", "1950", "1999", "2050"],
+                datasets: [{
+                    label: "Europe",
+                    type: "line",
+                    borderColor: colors.warning,
+                    data: [408,547,675,734],
+                    fill: false
+                }, {
+                    label: "Africa",
+                    type: "line",
+                    borderColor: colors.success,
+                    data: [133,221,783,2478],
+                    fill: false
+                }, {
+                    label: "Europe",
+                    type: "bar",
+                    backgroundColor: colors.secondary,
+                    data: [408,547,675,734],
+                }, {
+                    label: "Africa",
+                    type: "bar",
+                    backgroundColor: colors.primary,
+                    backgroundColorHover: "#3e95cd",
+                    data: [133,221,783,2478]
+                }
+                ]
+            },
+            options: {
+                title: {
+                    display: true,
+                    text: 'Population growth (millions): Europe & Africa'
+                },
+                legend: { display: false }
+            }
+        });
+    }
+
+});
Index: resources/assets/js/examples/charts/justgage.js
===================================================================
--- resources/assets/js/examples/charts/justgage.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/charts/justgage.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,243 @@
+'use strict';
+$(document).ready(function () {
+
+    var colors = {
+        primary: $('.colors .bg-primary').css('background-color'),
+        primaryLight: $('.colors .bg-primary-bright').css('background-color'),
+        secondary: $('.colors .bg-secondary').css('background-color'),
+        secondaryLight: $('.colors .bg-secondary-bright').css('background-color'),
+        info: $('.colors .bg-info').css('background-color'),
+        infoLight: $('.colors .bg-info-bright').css('background-color'),
+        success: $('.colors .bg-success').css('background-color'),
+        successLight: $('.colors .bg-success-bright').css('background-color'),
+        danger: $('.colors .bg-danger').css('background-color'),
+        dangerLight: $('.colors .bg-danger-bright').css('background-color'),
+        warning: $('.colors .bg-warning').css('background-color'),
+        warningLight: $('.colors .bg-warning-bright').css('background-color'),
+    };
+
+    var valueFontColor = "black";
+
+    if($('body').hasClass('dark')){
+        valueFontColor = "white";
+    }
+
+    function init() {
+        new JustGage({
+            id: "justgage_one",
+            value: 90,
+            min: 0,
+            max: 100,
+            counter: true,
+            donut: true,
+            gaugeWidthScale: 0.3,
+            valueFontColor: valueFontColor,
+            levelColors: [colors.primary],
+            label: "Users",
+        });
+
+        // Delete the extra added element when the page is resized.
+        $('#justgage_one > svg + svg').remove();
+
+        new JustGage({
+            id: "justgage_two",
+            value: 46,
+            min: 0,
+            max: 100,
+            counter: true,
+            donut: true,
+            gaugeWidthScale: 0.3,
+            valueFontColor: valueFontColor,
+            levelColors: [colors.success],
+            label: "Customers",
+        });
+
+        // Delete the extra added element when the page is resized.
+        $('#justgage_two > svg + svg').remove();
+
+        new JustGage({
+            id: "justgage_three",
+            value: 10,
+            min: 0,
+            max: 100,
+            counter: true,
+            donut: true,
+            gaugeWidthScale: 0.3,
+            valueFontColor: valueFontColor,
+            levelColors: [colors.info],
+            label: "Visitor",
+        });
+
+        // Delete the extra added element when the page is resized.
+        $('#justgage_three > svg + svg').remove();
+
+        new JustGage({
+            id: 'justgage_four',
+            value: 155,
+            min: 0,
+            max: 250,
+            symbol: 'mph',
+            pointer: true,
+            gaugeWidthScale: 0.3,
+            pointerOptions: {
+                color: colors.primary,
+                stroke: colors.primary
+            },
+            counter: true,
+            relativeGaugeSize: true,
+            valueFontColor: valueFontColor,
+            levelColors: [colors.warning],
+            donut: true
+        });
+
+        // Delete the extra added element when the page is resized.
+        $('#justgage_four > svg + svg').remove();
+
+        new JustGage({
+            id: 'justgage_five',
+            value: 25,
+            min: 0,
+            max: 100,
+            symbol: '%',
+            pointer: true,
+            pointerOptions: {
+                toplength: -15,
+                bottomlength: 10,
+                bottomwidth: 12,
+                color: colors.primary,
+                stroke: colors.primary,
+                stroke_width: 3,
+                stroke_linecap: 'round'
+            },
+            gaugeWidthScale: 0.3,
+            counter: true,
+            relativeGaugeSize: true,
+            valueFontColor: valueFontColor,
+            levelColors: [colors.danger],
+            donut: true,
+        });
+
+        // Delete the extra added element when the page is resized.
+        $('#justgage_five > svg + svg').remove();
+
+        new JustGage({
+            id: 'justgage_six',
+            value: 86,
+            min: 0,
+            max: 100,
+            symbol: 'kWh',
+            pointer: true,
+            gaugeWidthScale: 0.3,
+            pointerOptions: {
+                toplength: 10,
+                bottomlength: 10,
+                bottomwidth: 8,
+                color: colors.primary
+            },
+            counter: true,
+            relativeGaugeSize: true,
+            valueFontColor: valueFontColor,
+            levelColors: [colors.secondary],
+            donut: true
+        });
+
+        // Delete the extra added element when the page is resized.
+        $('#justgage_six > svg + svg').remove();
+
+        var justgage_seven = new JustGage({
+            id: "justgage_seven",
+            value: 275,
+            min: 0,
+            max: 500,
+            label: "Visitors On Site",
+            valueFontColor: valueFontColor,
+            levelColors: [colors.info],
+        });
+
+        // Delete the extra added element when the page is resized.
+        $('#justgage_seven > svg + svg').remove();
+
+        var justgage_eight = new JustGage({
+            id: "justgage_eight",
+            value: 120,
+            min: 0,
+            max: 500,
+            label: "Memory Usage",
+            pointer: true,
+            pointerOptions: {
+                toplength: -15,
+                bottomlength: 10,
+                bottomwidth: 12,
+                color: colors.primary,
+                stroke: colors.primary,
+                stroke_width: 3,
+                stroke_linecap: 'round'
+            },
+            valueFontColor: valueFontColor
+        });
+
+        // Delete the extra added element when the page is resized.
+        $('#justgage_eight > svg + svg').remove();
+
+        var justgage_nine = new JustGage({
+            id: 'justgage_nine',
+            value: 25,
+            min: 0,
+            max: 100,
+            symbol: '%',
+            pointer: true,
+            pointerOptions: {
+                toplength: -15,
+                bottomlength: 10,
+                bottomwidth: 12,
+                color: colors.primary,
+                stroke: colors.primary,
+                stroke_width: 3,
+                stroke_linecap: 'round'
+            },
+            gaugeWidthScale: 0.3,
+            counter: true,
+            relativeGaugeSize: true,
+            valueFontColor: valueFontColor
+        });
+
+        // Delete the extra added element when the page is resized.
+        $('#justgage_nine > svg + svg').remove();
+
+        var justgage_ten = new JustGage({
+            id: 'justgage_ten',
+            value: 70,
+            min: 0,
+            max: 100,
+            symbol: 'Kg',
+            pointerOptions: {
+                toplength: 8,
+                bottomlength: -20,
+                bottomwidth: 6,
+                color: '#8e8e93'
+            },
+            gaugeWidthScale: 0.3,
+            counter: true,
+            relativeGaugeSize: true,
+            valueFontColor: valueFontColor,
+            levelColors: [colors.success],
+        });
+
+        // Delete the extra added element when the page is resized.
+        $('#justgage_ten > svg + svg').remove();
+
+        setInterval(function () {
+            justgage_seven.refresh(getRandomInt(0, 500));
+            justgage_eight.refresh(getRandomInt(0, 500));
+            justgage_nine.refresh(getRandomInt(0, 100));
+            justgage_ten.refresh(getRandomInt(0, 100));
+        }, 2000);
+    }
+
+    init();
+
+    $(window).on('resize', function () {
+        init();
+    });
+
+});
Index: resources/assets/js/examples/charts/morsis.js
===================================================================
--- resources/assets/js/examples/charts/morsis.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/charts/morsis.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,49 @@
+'use strict';
+$(document).ready(function () {
+
+    var data = [
+            { y: '2014', a: 50, b: 90},
+            { y: '2015', a: 65,  b: 75},
+            { y: '2016', a: 50,  b: 50},
+            { y: '2017', a: 75,  b: 60},
+            { y: '2018', a: 80,  b: 65},
+            { y: '2019', a: 90,  b: 70},
+            { y: '2020', a: 100, b: 75},
+            { y: '2021', a: 115, b: 75},
+            { y: '2022', a: 120, b: 85},
+            { y: '2023', a: 145, b: 85},
+            { y: '2024', a: 160, b: 95}
+        ],
+        config = {
+            data: data,
+            xkey: 'y',
+            ykeys: ['a', 'b'],
+            labels: ['Total Income', 'Total Outcome'],
+            fillOpacity: 0.6,
+            hideHover: 'auto',
+            behaveLikeLine: true,
+            resize: true,
+            pointFillColors:['#ffffff'],
+            pointStrokeColors: ['black'],
+            lineColors:['gray','red']
+        };
+    config.element = 'area-chart';
+    Morris.Area(config);
+    config.element = 'line-chart';
+    Morris.Line(config);
+    config.element = 'bar-chart';
+    Morris.Bar(config);
+    config.element = 'stacked';
+    config.stacked = true;
+    Morris.Bar(config);
+    Morris.Donut({
+        element: 'pie-chart',
+        data: [
+            {label: "Friends", value: 30},
+            {label: "Allies", value: 15},
+            {label: "Enemies", value: 45},
+            {label: "Neutral", value: 10}
+        ]
+    });
+
+});
Index: resources/assets/js/examples/charts/peity.js
===================================================================
--- resources/assets/js/examples/charts/peity.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/charts/peity.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,151 @@
+'use strict';
+$(document).ready(function () {
+
+    var colors = {
+        primary: $('.colors .bg-primary').css('background-color'),
+        primaryLight: $('.colors .bg-primary-bright').css('background-color'),
+        secondary: $('.colors .bg-secondary').css('background-color'),
+        secondaryLight: $('.colors .bg-secondary-bright').css('background-color'),
+        info: $('.colors .bg-info').css('background-color'),
+        infoLight: $('.colors .bg-info-bright').css('background-color'),
+        success: $('.colors .bg-success').css('background-color'),
+        successLight: $('.colors .bg-success-bright').css('background-color'),
+        danger: $('.colors .bg-danger').css('background-color'),
+        dangerLight: $('.colors .bg-danger-bright').css('background-color'),
+        warning: $('.colors .bg-warning').css('background-color'),
+        warningLight: $('.colors .bg-warning-bright').css('background-color'),
+    };
+
+    $("span.pie").peity("pie");
+
+    $(".pie-1").peity("pie", {
+        "fill": [colors.primary, colors.primaryLight],
+        "radius": 30
+    });
+
+    $(".pie-2").peity("pie", {
+        "fill": [colors.secondary, colors.secondaryLight],
+        "radius": 30
+    });
+
+    $(".pie-3").peity("pie", {
+        "fill": [colors.success, colors.successLight],
+        "radius": 30
+    });
+
+    $(".pie-4").peity("pie", {
+        "fill": [colors.danger, colors.dangerLight],
+        "radius": 30
+    });
+
+    $(".pie-5").peity("pie", {
+        "fill": [colors.warning, colors.warningLight],
+        "radius": 30
+    });
+
+    $(".pie-6").peity("pie", {
+        "fill": [colors.primary, colors.primaryLight],
+        "radius": 30,
+        "innerRadius": 20
+    });
+
+    $(".pie-7").peity("pie", {
+        "fill": [colors.secondary, colors.secondaryLight],
+        "radius": 30,
+        "innerRadius": 20
+    });
+
+    $(".pie-8").peity("pie", {
+        "fill": [colors.success, colors.successLight],
+        "radius": 30,
+        "innerRadius": 20
+    });
+
+    $(".pie-9").peity("pie", {
+        "fill": [colors.danger, colors.dangerLight],
+        "radius": 30,
+        "innerRadius": 20
+    });
+
+    $(".pie-10").peity("pie", {
+        "fill": [colors.warning, colors.warningLight],
+        "radius": 30,
+        "innerRadius": 20
+    });
+
+    $(".line-1").peity("line", {
+        "fill": colors.primaryLight,
+        "stroke": colors.primary,
+        "height": 80,
+        "width": 100
+    });
+
+    $(".line-2").peity("line", {
+        "fill": colors.secondaryLight,
+        "stroke": colors.secondary,
+        "height": 80,
+        "width": 100
+    });
+
+    $(".line-3").peity("line", {
+        "fill": colors.secondaryLight,
+        "stroke": colors.success,
+        "height": 80,
+        "width": 100
+    });
+
+    $(".line-4").peity("line", {
+        "fill": colors.dangerLight,
+        "stroke": colors.danger,
+        "height": 80,
+        "width": 100
+    });
+
+    $(".line-5").peity("line", {
+        "fill": colors.warningLight,
+        "stroke": colors.warning,
+        "height": 80,
+        "width": 100
+    });
+
+    $(".bar-1").peity("bar", {
+        "fill": [colors.primary, colors.primaryLight],
+        "height": 50,
+        "width": 100
+    });
+
+    $(".bar-2").peity("bar", {
+        "fill": [colors.secondary, colors.secondaryLight],
+        "height": 50,
+        "width": 100
+    });
+
+    $(".bar-3").peity("bar", {
+        "fill": [colors.success, colors.successLight],
+        "height": 50,
+        "width": 100
+    });
+
+    $(".bar-4").peity("bar", {
+        "fill": [colors.danger, colors.dangerLight],
+        "height": 50,
+        "width": 100
+    });
+
+    $(".bar-5").peity("bar", {
+        "fill": [colors.warning, colors.warningLight],
+        "height": 50,
+        "width": 100
+    });
+
+    $('.peity [data-title]').mousemove(function (e) {
+        $('#peity-tooltip').html($(this).data('title')).css({left: e.pageX + 8, top: e.pageY + 8});
+    }).hover(
+        function () {
+            $('#peity-tooltip').addClass('show');
+        }, function () {
+            $('#peity-tooltip').removeClass('show');
+        }
+    );
+
+});
Index: resources/assets/js/examples/ckeditor.js
===================================================================
--- resources/assets/js/examples/ckeditor.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/ckeditor.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,77 @@
+'use strict';
+$(document).ready(function () {
+
+    if($('#editor-demo1').length) {
+        CKEDITOR.replace('editor-demo1');
+    }
+
+    if($('#editor-demo2').length) {
+        CKEDITOR.replace('editor-demo2', {
+            // Define the toolbar groups as it is a more accessible solution.
+            toolbarGroups: [{
+                "name": "basicstyles",
+                "groups": ["basicstyles"]
+            },
+                {
+                    "name": "links",
+                    "groups": ["links"]
+                },
+                {
+                    "name": "paragraph",
+                    "groups": ["list", "blocks"]
+                },
+                {
+                    "name": "insert",
+                    "groups": ["insert"]
+                }
+            ],
+            // Remove the redundant buttons from toolbar groups defined above.
+            removeButtons: 'Underline,Strike,Subscript,Superscript,Anchor,Styles,Specialchar'
+        });
+    }
+
+    if($('#editor-demo3').length) {
+        CKEDITOR.replace('editor-demo3', {
+            uiColor: '#CCEAEE'
+        });
+    }
+
+    if($('#email-compose-editor').length) {
+        CKEDITOR.replace('email-compose-editor', {
+            toolbarGroups: [{
+                "name": "basicstyles",
+                "groups": ["basicstyles"]
+            },
+                {
+                    "name": "links",
+                    "groups": ["links"]
+                },
+                {
+                    "name": "paragraph",
+                    "groups": ["list", "blocks"]
+                },
+                {
+                    "name": "insert",
+                    "groups": ["insert"]
+                }
+            ],
+            removeButtons: 'Underline,Strike,Subscript,Superscript,Anchor,Styles,Specialchar'
+        });
+    }
+
+});
+
+if($('#editor-demo4').length) {
+    CKEDITOR.disableAutoInline = true;
+    CKEDITOR.inline('editor-demo4');
+}
+
+if($('#editor-demo5').length) {
+    CKEDITOR.disableAutoInline = true;
+    CKEDITOR.inline('editor-demo5');
+}
+
+if($('#editor-demo6').length) {
+    CKEDITOR.disableAutoInline = true;
+    CKEDITOR.inline('editor-demo6');
+}
Index: resources/assets/js/examples/clockpicker.js
===================================================================
--- resources/assets/js/examples/clockpicker.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/clockpicker.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,30 @@
+'use strict';
+$(document).ready(function () {
+
+    $('.clockpicker-demo').clockpicker({
+        donetext: 'Done'
+    });
+
+    $('.clockpicker-autoclose-demo').clockpicker({
+        autoclose: true
+    });
+
+    var input = $('.clockpicker-minutes-demo').clockpicker({
+        placement: 'bottom',
+        align: 'left',
+        autoclose: true,
+        'default': 'now'
+    });
+
+    $(document).on('click', '#check-minutes', function (e) {
+        e.stopPropagation();
+        input.clockpicker('show')
+            .clockpicker('toggleView', 'minutes');
+    });
+
+    $('.create-event-demo').clockpicker({
+        donetext: 'Done',
+        autoclose: true
+    });
+
+});
Index: resources/assets/js/examples/colorpicker.js
===================================================================
--- resources/assets/js/examples/colorpicker.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/colorpicker.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,45 @@
+'use strict';
+$(document).ready(function () {
+
+    $('.sample-selector').colorpicker();
+
+    $('.sample-selector-2').colorpicker().on('changeColor', function (e) {
+        $('.main-content')[0].style.backgroundColor = e.color.toString('rgba');
+    });
+
+    $('.sample-selector-3').colorpicker({
+        color: "transparent",
+        format: "hex"
+    });
+
+    $('.sample-selector-4').colorpicker({
+        horizontal: true
+    });
+
+    $('.sample-selector-5').colorpicker({
+        colorSelectors: {
+            'black': '#000000',
+            'white': '#ffffff',
+            'red': '#FF0000',
+            'default': '#777777',
+            'primary': '#337ab7',
+            'success': '#5cb85c',
+            'info': '#5bc0de',
+            'warning': '#f0ad4e',
+            'danger': '#d9534f'
+        }
+    });
+
+    $('.sample-selector-rgb').colorpicker({
+        format: 'rgb'
+    });
+
+    $('.sample-selector-hex').colorpicker({
+        format: 'hex'
+    });
+
+    $('.sample-selector-rgba').colorpicker({
+        format: 'rgba'
+    });
+
+});
Index: resources/assets/js/examples/dashboard.js
===================================================================
--- resources/assets/js/examples/dashboard.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/dashboard.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1841 @@
+'use strict';
+$(document).ready(function () {
+
+    var colors = {
+        primary: $('.colors .bg-primary').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(','),
+        primaryLight: $('.colors .bg-primary-bright').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(','),
+        secondary: $('.colors .bg-secondary').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(','),
+        secondaryLight: $('.colors .bg-secondary-bright').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(','),
+        info: $('.colors .bg-info').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(','),
+        infoLight: $('.colors .bg-info-bright').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(','),
+        success: $('.colors .bg-success').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(','),
+        successLight: $('.colors .bg-success-bright').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(','),
+        danger: $('.colors .bg-danger').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(','),
+        dangerLight: $('.colors .bg-danger-bright').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(','),
+        warning: $('.colors .bg-warning').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(','),
+        warningLight: $('.colors .bg-warning-bright').css('background-color').replace('rgb', '').replace(')', '').replace('(', '').split(',')
+    };
+
+    var rgbToHex = function (rgb) {
+        var hex = Number(rgb).toString(16);
+        if (hex.length < 2) {
+            hex = "0" + hex;
+        }
+        return hex;
+    };
+
+    var fullColorHex = function (r, g, b) {
+        var red = rgbToHex(r);
+        var green = rgbToHex(g);
+        var blue = rgbToHex(b);
+        return red + green + blue;
+    };
+
+    colors.primary = '#' + fullColorHex(colors.primary[0], colors.primary[1], colors.primary[2]);
+    colors.secondary = '#' + fullColorHex(colors.secondary[0], colors.secondary[1], colors.secondary[2]);
+    colors.info = '#' + fullColorHex(colors.info[0], colors.info[1], colors.info[2]);
+    colors.success = '#' + fullColorHex(colors.success[0], colors.success[1], colors.success[2]);
+    colors.danger = '#' + fullColorHex(colors.danger[0], colors.danger[1], colors.danger[2]);
+    colors.warning = '#' + fullColorHex(colors.warning[0], colors.warning[1], colors.warning[2]);
+
+    /**
+     *  Slick slide example
+     **/
+
+    if ($('.slick-single-item').length) {
+        $('.slick-single-item').slick({
+            autoplay: true,
+            autoplaySpeed: 3000,
+            infinite: true,
+            slidesToShow: 4,
+            slidesToScroll: 4,
+            prevArrow: '.slick-single-arrows a:eq(0)',
+            nextArrow: '.slick-single-arrows a:eq(1)',
+            responsive: [
+                {
+                    breakpoint: 1300,
+                    settings: {
+                        slidesToShow: 3,
+                        slidesToScroll: 3,
+                    }
+                },
+                {
+                    breakpoint: 992,
+                    settings: {
+                        slidesToShow: 3,
+                        slidesToScroll: 3,
+                    }
+                },
+                {
+                    breakpoint: 768,
+                    settings: {
+                        slidesToShow: 2,
+                        slidesToScroll: 2
+                    }
+                },
+                {
+                    breakpoint: 540,
+                    settings: {
+                        slidesToShow: 1,
+                        slidesToScroll: 1
+                    }
+                }
+            ]
+        });
+    }
+
+    if ($('.reportrange').length > 0) {
+        var start = moment().subtract(29, 'days');
+        var end = moment();
+
+        function cb(start, end) {
+            $('.reportrange .text').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
+        }
+
+        $('.reportrange').daterangepicker({
+            startDate: start,
+            endDate: end,
+            ranges: {
+                'Today': [moment(), moment()],
+                'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
+                'Last 7 Days': [moment().subtract(6, 'days'), moment()],
+                'Last 30 Days': [moment().subtract(29, 'days'), moment()],
+                'This Month': [moment().startOf('month'), moment().endOf('month')],
+                'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
+            }
+        }, cb);
+
+        cb(start, end);
+    }
+
+    var chartColors = {
+        primary: {
+            base: '#3f51b5',
+            light: '#c0c5e4'
+        },
+        danger: {
+            base: '#f2125e',
+            light: '#fcd0df'
+        },
+        success: {
+            base: '#0acf97',
+            light: '#cef5ea'
+        },
+        warning: {
+            base: '#ff8300',
+            light: '#ffe6cc'
+        },
+        info: {
+            base: '#00bcd4',
+            light: '#e1efff'
+        },
+        dark: '#37474f',
+        facebook: '#3b5998',
+        twitter: '#55acee',
+        linkedin: '#0077b5',
+        instagram: '#517fa4',
+        whatsapp: '#25D366',
+        dribbble: '#ea4c89',
+        google: '#DB4437',
+        borderColor: '#e8e8e8',
+        fontColor: '#999'
+    };
+
+    if ($('body').hasClass('dark')) {
+        chartColors.borderColor = 'rgba(255, 255, 255, .1)';
+        chartColors.fontColor = 'rgba(255, 255, 255, .4)';
+    }
+
+    /// Chartssssss
+
+    chart_demo_1();
+
+    chart_demo_2();
+
+    chart_demo_3();
+
+    chart_demo_4();
+
+    chart_demo_5();
+
+    chart_demo_6();
+
+    chart_demo_7();
+
+    chart_demo_8();
+
+    chart_demo_9();
+
+    chart_demo_10();
+
+    function chart_demo_1() {
+        if ($('#chart_demo_1').length) {
+            var element = document.getElementById("chart_demo_1");
+            element.height = 146;
+            new Chart(element, {
+                type: 'bar',
+                data: {
+                    labels: ["2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019"],
+                    datasets: [
+                        {
+                            label: "Total Sales",
+                            backgroundColor: colors.primary,
+                            data: [133, 221, 783, 978, 214, 421, 211, 577]
+                        }, {
+                            label: "Average",
+                            backgroundColor: colors.info,
+                            data: [408, 947, 675, 734, 325, 672, 632, 213]
+                        }
+                    ]
+                },
+                options: {
+                    legend: {
+                        display: false
+                    },
+                    scales: {
+                        xAxes: [{
+                            ticks: {
+                                fontSize: 11,
+                                fontColor: chartColors.fontColor
+                            },
+                            gridLines: {
+                                display: false,
+                            }
+                        }],
+                        yAxes: [{
+                            ticks: {
+                                fontSize: 11,
+                                fontColor: chartColors.fontColor
+                            },
+                            gridLines: {
+                                color: chartColors.borderColor
+                            }
+                        }],
+                    }
+                }
+            })
+        }
+    }
+
+    function chart_demo_2() {
+        if ($('#chart_demo_2').length) {
+            var ctx = document.getElementById('chart_demo_2').getContext('2d');
+            new Chart(ctx, {
+                type: 'line',
+                data: {
+                    labels: ["Jun 2016", "Jul 2016", "Aug 2016", "Sep 2016", "Oct 2016", "Nov 2016", "Dec 2016", "Jan 2017", "Feb 2017", "Mar 2017", "Apr 2017", "May 2017"],
+                    datasets: [{
+                        label: "Rainfall",
+                        backgroundColor: chartColors.primary.light,
+                        borderColor: chartColors.primary.base,
+                        data: [26.4, 39.8, 66.8, 66.4, 40.6, 55.2, 77.4, 69.8, 57.8, 76, 110.8, 142.6],
+                    }]
+                },
+                options: {
+                    legend: {
+                        display: false,
+                        labels: {
+                            fontColor: chartColors.fontColor
+                        }
+                    },
+                    title: {
+                        display: true,
+                        text: 'Precipitation in Toronto',
+                        fontColor: chartColors.fontColor,
+                    },
+                    scales: {
+                        yAxes: [{
+                            gridLines: {
+                                color: chartColors.borderColor
+                            },
+                            ticks: {
+                                fontColor: chartColors.fontColor,
+                                beginAtZero: true
+                            },
+                            scaleLabel: {
+                                display: true,
+                                labelString: 'Precipitation in mm',
+                                fontColor: chartColors.fontColor,
+                            }
+                        }],
+                        xAxes: [{
+                            gridLines: {
+                                color: chartColors.borderColor
+                            },
+                            ticks: {
+                                fontColor: chartColors.fontColor,
+                                beginAtZero: true
+                            }
+                        }]
+                    }
+                }
+            });
+        }
+    }
+
+    function chart_demo_3() {
+        if ($('#chart_demo_3').length) {
+            var element = document.getElementById("chart_demo_3"),
+                ctx = element.getContext("2d");
+
+
+            new Chart(ctx, {
+                type: 'line',
+                data: {
+                    labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+                    datasets: [{
+                        label: 'Success',
+                        borderColor: colors.success,
+                        data: [-10, 30, -20, 0, 25, 44, 30, 15, 20, 10, 5, -5],
+                        pointRadius: 5,
+                        pointHoverRadius: 7,
+                        borderDash: [2, 2],
+                        fill: false
+                    }, {
+                        label: 'Return',
+                        fill: false,
+                        borderDash: [2, 2],
+                        borderColor: colors.danger,
+                        data: [20, 0, 22, 39, -10, 19, -7, 0, 15, 0, -10, 5],
+                        pointRadius: 5,
+                        pointHoverRadius: 7
+                    }]
+                },
+                options: {
+                    responsive: true,
+                    legend: {
+                        display: false,
+                        labels: {
+                            fontColor: chartColors.fontColor
+                        }
+                    },
+                    title: {
+                        display: false,
+                        fontColor: chartColors.fontColor
+                    },
+                    scales: {
+                        xAxes: [{
+                            gridLines: {
+                                display: false,
+                                color: chartColors.borderColor
+                            },
+                            ticks: {
+                                fontColor: chartColors.fontColor,
+                                display: false
+                            }
+                        }],
+                        yAxes: [{
+                            gridLines: {
+                                color: chartColors.borderColor
+                            },
+                            ticks: {
+                                fontColor: chartColors.fontColor,
+                                min: -50,
+                                max: 50
+                            }
+                        }],
+                    }
+                }
+            });
+
+        }
+    }
+
+    function chart_demo_4() {
+        if ($('#chart_demo_4').length) {
+            var ctx = document.getElementById("chart_demo_4").getContext("2d");
+            var densityData = {
+                backgroundColor: chartColors.primary.light,
+                data: [10, 20, 40, 60, 80, 40, 60, 80, 40, 80, 20, 59]
+            };
+            new Chart(ctx, {
+                type: 'bar',
+                data: {
+                    labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+                    datasets: [densityData]
+                },
+                options: {
+                    scaleFontColor: "#FFFFFF",
+                    legend: {
+                        display: false,
+                        labels: {
+                            fontColor: chartColors.fontColor
+                        }
+                    },
+                    scales: {
+                        xAxes: [{
+                            gridLines: {
+                                color: chartColors.borderColor
+                            },
+                            ticks: {
+                                fontColor: chartColors.fontColor
+                            }
+                        }],
+                        yAxes: [{
+                            gridLines: {
+                                color: chartColors.borderColor
+                            },
+                            ticks: {
+                                fontColor: chartColors.fontColor,
+                                min: 0,
+                                max: 100,
+                                beginAtZero: true
+                            }
+                        }]
+                    }
+                }
+            });
+        }
+    }
+
+    function chart_demo_5() {
+        if ($('#chart_demo_5').length) {
+            var ctx = document.getElementById('chart_demo_5').getContext('2d');
+            window.myBar = new Chart(ctx, {
+                type: 'bar',
+                data: {
+                    labels: ['January', 'February', 'March', 'April', 'May'],
+                    datasets: [
+                        {
+                            label: 'Dataset 1',
+                            backgroundColor: [
+                                chartColors.info.base,
+                                chartColors.success.base,
+                                chartColors.danger.base,
+                                chartColors.dark,
+                                chartColors.warning.base,
+                            ],
+                            yAxisID: 'y-axis-1',
+                            data: [33, 56, -40, 25, 45]
+                        },
+                        {
+                            label: 'Dataset 2',
+                            backgroundColor: chartColors.info.base,
+                            yAxisID: 'y-axis-2',
+                            data: [23, 86, -40, 5, 45]
+                        }
+                    ]
+                },
+                options: {
+                    legend: {
+                        labels: {
+                            fontColor: chartColors.fontColor
+                        }
+                    },
+                    responsive: true,
+                    title: {
+                        display: true,
+                        text: 'Chart.js Bar Chart - Multi Axis',
+                        fontColor: chartColors.fontColor
+                    },
+                    tooltips: {
+                        mode: 'index',
+                        intersect: true
+                    },
+                    scales: {
+                        xAxes: [{
+                            gridLines: {
+                                color: chartColors.borderColor
+                            },
+                            ticks: {
+                                fontColor: chartColors.fontColor
+                            }
+                        }],
+                        yAxes: [
+                            {
+                                type: 'linear',
+                                display: true,
+                                position: 'left',
+                                id: 'y-axis-1',
+                            },
+                            {
+                                gridLines: {
+                                    color: chartColors.borderColor
+                                },
+                                ticks: {
+                                    fontColor: chartColors.fontColor
+                                }
+                            },
+                            {
+                                type: 'linear',
+                                display: true,
+                                position: 'right',
+                                id: 'y-axis-2',
+                                gridLines: {
+                                    drawOnChartArea: false
+                                },
+                                ticks: {
+                                    fontColor: chartColors.fontColor
+                                }
+                            }
+                        ],
+                    }
+                }
+            });
+        }
+    }
+
+    function chart_demo_6() {
+        if ($('#chart_demo_6').length) {
+            var ctx = document.getElementById("chart_demo_6").getContext("2d");
+            var speedData = {
+                labels: ["0s", "10s", "20s", "30s", "40s", "50s", "60s"],
+                datasets: [{
+                    label: "Car Speed (mph)",
+                    borderColor: chartColors.primary.base,
+                    backgroundColor: 'rgba(0, 0, 0, 0',
+                    data: [0, 59, 75, 20, 20, 55, 40]
+                }]
+            };
+            var chartOptions = {
+                legend: {
+                    scaleFontColor: "#FFFFFF",
+                    position: 'top',
+                    labels: {
+                        fontColor: chartColors.fontColor
+                    }
+                },
+                scales: {
+                    xAxes: [{
+                        gridLines: {
+                            color: chartColors.borderColor
+                        },
+                        ticks: {
+                            fontColor: chartColors.fontColor
+                        }
+                    }],
+                    yAxes: [{
+                        gridLines: {
+                            color: chartColors.borderColor
+                        },
+                        ticks: {
+                            fontColor: chartColors.fontColor
+                        }
+                    }]
+                }
+            };
+            new Chart(ctx, {
+                type: 'line',
+                data: speedData,
+                options: chartOptions
+            });
+        }
+    }
+
+    function chart_demo_7() {
+        if ($('#chart_demo_7').length) {
+            var config = {
+                type: 'pie',
+                data: {
+                    datasets: [{
+                        borderWidth: 3,
+                        borderColor: $('body').hasClass('dark') ? "#313852" : "rgba(255, 255, 255, 1)",
+                        data: [
+                            1242,
+                            742,
+                            442,
+                            1742
+                        ],
+                        backgroundColor: [
+                            colors.danger,
+                            colors.info,
+                            colors.warning,
+                            colors.success
+                        ],
+                        label: 'Dataset 1'
+                    }],
+                    labels: [
+                        'Organic Search',
+                        'Email',
+                        'Refferal',
+                        'Social Media',
+                    ]
+                },
+                options: {
+                    responsive: true,
+                    legend: {
+                        display: false
+                    }
+                }
+            };
+
+            var ctx = document.getElementById('chart_demo_7').getContext('2d');
+            new Chart(ctx, config);
+        }
+    }
+
+    function chart_demo_8() {
+        if ($('#chart_demo_8').length) {
+            new Chart(document.getElementById("chart_demo_8"), {
+                type: 'radar',
+                data: {
+                    labels: ["Africa", "Asia", "Europe", "Latin America", "North America"],
+                    datasets: [
+                        {
+                            label: "1950",
+                            fill: true,
+                            backgroundColor: "rgba(179,181,198,0.2)",
+                            borderColor: "rgba(179,181,198,1)",
+                            pointBorderColor: "#fff",
+                            pointBackgroundColor: "rgba(179,181,198,1)",
+                            data: [-8.77, -55.61, 21.69, 6.62, 6.82]
+                        }, {
+                            label: "2050",
+                            fill: true,
+                            backgroundColor: "rgba(255,99,132,0.2)",
+                            borderColor: "rgba(255,99,132,1)",
+                            pointBorderColor: "#fff",
+                            pointBackgroundColor: "rgba(255,99,132,1)",
+                            data: [-25.48, 54.16, 7.61, 8.06, 4.45]
+                        }
+                    ]
+                },
+                options: {
+                    legend: {
+                        labels: {
+                            fontColor: chartColors.fontColor
+                        }
+                    },
+                    scale: {
+                        gridLines: {
+                            color: chartColors.borderColor
+                        }
+                    },
+                    title: {
+                        display: true,
+                        text: 'Distribution in % of world population',
+                        fontColor: chartColors.fontColor
+                    }
+                }
+            });
+        }
+    }
+
+    function chart_demo_9() {
+        if ($('#chart_demo_9').length) {
+            new Chart(document.getElementById("chart_demo_9"), {
+                type: 'horizontalBar',
+                data: {
+                    labels: ["Africa", "Asia", "Europe", "Latin America", "North America"],
+                    datasets: [
+                        {
+                            label: "Population (millions)",
+                            backgroundColor: colors.primary,
+                            data: [2478, 2267, 734, 1284, 1933]
+                        }
+                    ]
+                },
+                options: {
+                    legend: {
+                        display: false
+                    },
+                    scales: {
+                        xAxes: [{
+                            gridLines: {
+                                color: chartColors.borderColor
+                            },
+                            ticks: {
+                                fontColor: chartColors.fontColor,
+                                display: false
+                            }
+                        }],
+                        yAxes: [{
+                            gridLines: {
+                                color: chartColors.borderColor,
+                                display: false
+                            },
+                            ticks: {
+                                fontColor: chartColors.fontColor
+                            },
+                            barPercentage: 0.5
+                        }]
+                    }
+                }
+            });
+        }
+    }
+
+    function chart_demo_10() {
+        if ($('#chart_demo_10').length) {
+            var element = document.getElementById("chart_demo_10");
+            new Chart(element, {
+                type: 'bar',
+                data: {
+                    labels: ["1900", "1950", "1999", "2050"],
+                    datasets: [
+                        {
+                            label: "Europe",
+                            type: "line",
+                            borderColor: "#8e5ea2",
+                            data: [408, 547, 675, 734],
+                            fill: false
+                        },
+                        {
+                            label: "Africa",
+                            type: "line",
+                            borderColor: "#3e95cd",
+                            data: [133, 221, 783, 2478],
+                            fill: false
+                        },
+                        {
+                            label: "Europe",
+                            type: "bar",
+                            backgroundColor: chartColors.primary.base,
+                            data: [408, 547, 675, 734],
+                        },
+                        {
+                            label: "Africa",
+                            type: "bar",
+                            backgroundColor: chartColors.primary.light,
+                            data: [133, 221, 783, 2478]
+                        }
+                    ]
+                },
+                options: {
+                    title: {
+                        display: true,
+                        text: 'Population growth (millions): Europe & Africa',
+                        fontColor: chartColors.fontColor
+                    },
+                    legend: {
+                        display: true,
+                        labels: {
+                            fontColor: chartColors.fontColor
+                        }
+                    },
+                    scales: {
+                        xAxes: [{
+                            gridLines: {
+                                color: chartColors.borderColor
+                            },
+                            ticks: {
+                                fontColor: chartColors.fontColor
+                            }
+                        }],
+                        yAxes: [{
+                            gridLines: {
+                                color: chartColors.borderColor
+                            },
+                            ticks: {
+                                fontColor: chartColors.fontColor
+                            }
+                        }]
+                    }
+                }
+            });
+        }
+    }
+
+    if ($('#circle-1').length) {
+        $('#circle-1').circleProgress({
+            startAngle: 1.55,
+            value: 0.65,
+            size: 90,
+            thickness: 10,
+            fill: {
+                color: colors.primary
+            }
+        });
+    }
+
+    if ($('#sales-circle-graphic').length) {
+        $('#sales-circle-graphic').circleProgress({
+            startAngle: 1.55,
+            value: 0.65,
+            size: 180,
+            thickness: 30,
+            fill: {
+                color: colors.primary
+            }
+        });
+    }
+
+    if ($('#circle-2').length) {
+        $('#circle-2').circleProgress({
+            startAngle: 1.55,
+            value: 0.35,
+            size: 90,
+            thickness: 10,
+            fill: {
+                color: colors.warning
+            }
+        });
+    }
+
+    ////////////////////////////////////////////
+
+    if ($(".dashboard-pie-1").length) {
+        $(".dashboard-pie-1").peity("pie", {
+            fill: [colors.primaryLight, colors.primary],
+            radius: 30
+        });
+    }
+
+    if ($(".dashboard-pie-2").length) {
+        $(".dashboard-pie-2").peity("pie", {
+            fill: [colors.successLight, colors.success],
+            radius: 30
+        });
+    }
+
+    if ($(".dashboard-pie-3").length) {
+        $(".dashboard-pie-3").peity("pie", {
+            fill: [colors.warningLight, colors.warning],
+            radius: 30
+        });
+    }
+
+    if ($(".dashboard-pie-4").length) {
+        $(".dashboard-pie-4").peity("pie", {
+            fill: [colors.infoLight, colors.info],
+            radius: 30
+        });
+    }
+
+    ////////////////////////////////////////////
+
+    function bar_chart() {
+        if ($('#chart-ticket-status').length > 0) {
+            var dataSource = [
+                {country: "USA", hydro: 59.8, oil: 937.6, gas: 582, coal: 564.3, nuclear: 187.9},
+                {country: "China", hydro: 74.2, oil: 308.6, gas: 35.1, coal: 956.9, nuclear: 11.3},
+                {country: "Russia", hydro: 40, oil: 128.5, gas: 361.8, coal: 105, nuclear: 32.4},
+                {country: "Japan", hydro: 22.6, oil: 241.5, gas: 64.9, coal: 120.8, nuclear: 64.8},
+                {country: "India", hydro: 19, oil: 119.3, gas: 28.9, coal: 204.8, nuclear: 3.8},
+                {country: "Germany", hydro: 6.1, oil: 123.6, gas: 77.3, coal: 85.7, nuclear: 37.8}
+            ];
+
+            // Return with commas in between
+            var numberWithCommas = function (x) {
+                return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
+            };
+
+            var dataPack1 = [40, 47, 44, 38, 27, 40, 47, 44, 38, 27, 40, 27];
+            var dataPack2 = [10, 12, 7, 5, 4, 10, 12, 7, 5, 4, 10, 12];
+            var dataPack3 = [17, 11, 22, 18, 12, 17, 11, 22, 18, 12, 17, 11];
+            var dates = ["Jan", "Jan", "Jan", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"];
+
+            var bar_ctx = document.getElementById('chart-ticket-status');
+
+            bar_ctx.height = 115;
+
+            new Chart(bar_ctx, {
+                    type: 'bar',
+                    data: {
+                        labels: dates,
+                        datasets: [
+                            {
+                                label: 'New Tickets',
+                                data: dataPack1,
+                                backgroundColor: colors.primary,
+                                hoverBorderWidth: 0
+                            },
+                            {
+                                label: 'Solved Tickets',
+                                data: dataPack2,
+                                backgroundColor: colors.success,
+                                hoverBorderWidth: 0
+                            },
+                            {
+                                label: 'Pending Tickets',
+                                data: dataPack3,
+                                backgroundColor: colors.info,
+                                hoverBorderWidth: 0
+                            },
+                        ]
+                    },
+                    options: {
+                        legend: {
+                            display: false
+                        },
+                        animation: {
+                            duration: 10,
+                        },
+                        tooltips: {
+                            mode: 'label',
+                            callbacks: {
+                                label: function (tooltipItem, data) {
+                                    return data.datasets[tooltipItem.datasetIndex].label + ": " + numberWithCommas(tooltipItem.yLabel);
+                                }
+                            }
+                        },
+                        scales: {
+                            xAxes: [{
+                                stacked: true,
+                                gridLines: {display: false},
+                                ticks: {
+                                    fontSize: 11,
+                                    fontColor: chartColors.fontColor
+                                }
+                            }],
+                            yAxes: [{
+                                stacked: true,
+                                ticks: {
+                                    callback: function (value) {
+                                        return numberWithCommas(value);
+                                    },
+                                    fontSize: 11,
+                                    fontColor: chartColors.fontColor
+                                },
+                            }],
+                        }
+                    },
+                    plugins: [{
+                        beforeInit: function (chart) {
+                            chart.data.labels.forEach(function (value, index, array) {
+                                var a = [];
+                                a.push(value.slice(0, 5));
+                                var i = 1;
+                                while (value.length > (i * 5)) {
+                                    a.push(value.slice(i * 5, (i + 1) * 5));
+                                    i++;
+                                }
+                                array[index] = a;
+                            })
+                        }
+                    }]
+                }
+            );
+        }
+    }
+
+    bar_chart();
+
+    function online_users() {
+        if ($('#online-users').length > 0) {
+            var lastDate = 0;
+            var data = []
+            var TICKINTERVAL = 86400000
+            let XAXISRANGE = 777600000
+
+            function getDayWiseTimeSeries(baseval, count, yrange) {
+                var i = 0;
+                while (i < count) {
+                    var x = baseval;
+                    var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
+
+                    data.push({
+                        x, y
+                    });
+                    lastDate = baseval
+                    baseval += TICKINTERVAL;
+                    i++;
+                }
+            }
+
+            getDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 10, {
+                min: 10,
+                max: 90
+            })
+
+            function getNewSeries(baseval, yrange) {
+                var newDate = baseval + TICKINTERVAL;
+                lastDate = newDate
+
+                for (var i = 0; i < data.length - 10; i++) {
+                    // IMPORTANT
+                    // we reset the x and y of the data which is out of drawing area
+                    // to prevent memory leaks
+                    data[i].x = newDate - XAXISRANGE - TICKINTERVAL
+                    data[i].y = 0
+                }
+
+                data.push({
+                    x: newDate,
+                    y: Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min
+                })
+            }
+
+            function resetData() {
+                // Alternatively, you can also reset the data at certain intervals to prevent creating a huge series
+                data = data.slice(data.length - 10, data.length);
+            }
+
+            var options = {
+                series: [{
+                    data: data.slice()
+                }],
+                chart: {
+                    id: 'realtime',
+                    height: 330,
+                    type: 'line',
+                    fontFamily: 'Inter',
+                    toolbar: {
+                        show: false
+                    },
+                    zoom: {
+                        enabled: false
+                    }
+                },
+                dataLabels: {
+                    enabled: false
+                },
+                stroke: {
+                    curve: 'smooth',
+                    width: 3,
+                    colors: ['#ffffff'],
+                },
+                xaxis: {
+                    labels: {
+                        show: false,
+                    },
+                    type: 'datetime',
+                    range: XAXISRANGE,
+                    axisBorder: {
+                        show: false,
+                    }
+                },
+                yaxis: {
+                    show: false,
+                    max: 100
+                },
+                grid: {
+                    show: false,
+                }
+            };
+
+            var chart = new ApexCharts(document.querySelector("#online-users"), options);
+            chart.render();
+
+            window.setInterval(function () {
+                getNewSeries(lastDate, {
+                    min: 10,
+                    max: 90
+                });
+
+                chart.updateSeries([{
+                    data: data
+                }])
+            }, 1000)
+        }
+    }
+
+    online_users();
+
+    function customerGrowth() {
+        if ($('#customer-growth').length > 0) {
+            var options = {
+                chart: {
+                    height: 350,
+                    type: 'area',
+                    offsetX: -20,
+                    offsetY: -10,
+                    width: '103%',
+                    fontFamily: 'Inter',
+                    toolbar: {
+                        show: false,
+                    }
+                },
+                dataLabels: {
+                    enabled: false
+                },
+                colors: [colors.primary],
+                stroke: {
+                    curve: 'smooth',
+                    width: 2,
+                },
+                series: [{
+                    name: 'Sales',
+                    data: [80, 40, 60, 90, 50, 100, 90, 80, 45, 75, 50, 100]
+                }],
+                fill: {
+                    type: 'gradient',
+                    gradient: {
+                        opacityFrom: 0.6,
+                        opacityTo: 0,
+                    }
+                },
+                xaxis: {
+                    categories: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+                }
+            };
+
+            var chart = new ApexCharts(
+                document.querySelector("#customer-growth"),
+                options
+            );
+
+            chart.render();
+        }
+    }
+
+    customerGrowth();
+
+    function device_session_chart() {
+        if ($('#device_session_chart').length) {
+
+            var data = [
+                {
+                    name: "Mobile",
+                    data: [90, 152, 138, 145, 120, 123, 140]
+                },
+                {
+                    name: "Tablet",
+                    data: [125, 90, 128, 135, 150, 123, 180]
+                },
+                {
+                    name: "Desktop",
+                    data: [50, 200, 138, 135, 100, 123, 90]
+                }
+            ];
+
+            var options = {
+                chart: {
+                    type: 'area',
+                    fontFamily: 'Inter',
+                    height: 300,
+                    offsetX: -18,
+                    width: '103%',
+                    stacked: true,
+                    events: {
+                        selection: function (chart, e) {
+                            // console.log(new Date(e.xaxis.min))
+                        }
+                    },
+                    toolbar: {
+                        show: false,
+                    }
+
+                },
+                colors: [colors.primary, colors.secondary, colors.success],
+                dataLabels: {
+                    enabled: false
+                },
+                stroke: {
+                    curve: 'smooth',
+                    width: 1
+                },
+                series: data,
+                fill: {
+                    type: 'gradient',
+                    gradient: {
+                        opacityFrom: .6,
+                        opacityTo: 0,
+                    }
+                },
+                legend: {
+                    show: false
+                },
+                xaxis: {
+                    categories: [
+                        "01 Jan",
+                        "02 Jan",
+                        "03 Jan",
+                        "04 Jan",
+                        "05 Jan",
+                        "06 Jan",
+                        "07 Jan"
+                    ]
+                }
+            };
+
+            var chart = new ApexCharts(
+                document.querySelector("#device_session_chart"),
+                options
+            );
+
+            chart.render();
+
+            /*
+              // this function will generate output in this format
+              // data = [
+                  [timestamp, 23],
+                  [timestamp, 33],
+                  [timestamp, 12]
+                  ...
+              ]
+              */
+            function generateDayWiseTimeSeries(baseval, count, yrange) {
+                var i = 0;
+                var series = [];
+                while (i < count) {
+                    var x = baseval;
+                    var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
+
+                    series.push([x, y]);
+                    baseval += 86400000;
+                    i++;
+                }
+                return series;
+            }
+        }
+    }
+
+    device_session_chart();
+
+    function analytics_tab1() {
+        if ($('#analytics-tab-1').length) {
+            var options = {
+                series: [{
+                    name: 'Users',
+                    data: [20, 25, 15, 12, 25, 20, 22]
+                }],
+                chart: {
+                    height: 280,
+                    type: 'line',
+                    offsetX: -20,
+                    offsetY: 20,
+                    width: '102%',
+                    fontFamily: 'Inter',
+                    toolbar: {
+                        show: false,
+                    }
+                },
+                stroke: {
+                    width: 3,
+                    curve: 'smooth'
+                },
+                xaxis: {
+                    type: 'datetime',
+                    categories: [
+                        "01 Jan",
+                        "02 Jan",
+                        "03 Jan",
+                        "04 Jan",
+                        "05 Jan",
+                        "06 Jan",
+                        "07 Jan"
+                    ]
+                },
+                fill: {
+                    type: 'gradient',
+                    gradient: {
+                        shade: 'dark',
+                        gradientToColors: [colors.secondary],
+                        shadeIntensity: 1,
+                        type: 'horizontal',
+                        opacityFrom: 1,
+                        opacityTo: 1,
+                        stops: [0, 100, 100, 100]
+                    },
+                }
+            };
+
+            var chart = new ApexCharts(document.querySelector("#analytics-tab-1"), options);
+            chart.render();
+        }
+    }
+
+    analytics_tab1();
+
+    function analytics_tab2() {
+        if ($('#analytics-tab-2').length) {
+            var options = {
+                series: [{
+                    name: 'Conversations',
+                    data: [10, 35, 10, 22, 25, 10, 30]
+                }],
+                chart: {
+                    height: 280,
+                    type: 'line',
+                    offsetX: -20,
+                    offsetY: 20,
+                    width: '102%',
+                    fontFamily: 'Inter',
+                    toolbar: {
+                        show: false,
+                    }
+                },
+                stroke: {
+                    width: 3,
+                    curve: 'smooth'
+                },
+                xaxis: {
+                    type: 'datetime',
+                    categories: [
+                        "01 Jan",
+                        "02 Jan",
+                        "03 Jan",
+                        "04 Jan",
+                        "05 Jan",
+                        "06 Jan",
+                        "07 Jan"
+                    ]
+                },
+                fill: {
+                    type: 'gradient',
+                    gradient: {
+                        shade: 'dark',
+                        gradientToColors: [colors.secondary],
+                        shadeIntensity: 1,
+                        type: 'horizontal',
+                        opacityFrom: 1,
+                        opacityTo: 1,
+                        stops: [0, 100, 100, 100]
+                    },
+                }
+            };
+
+            var chart = new ApexCharts(document.querySelector("#analytics-tab-2"), options);
+            chart.render();
+        }
+    }
+
+    analytics_tab2();
+
+    function analytics_tab3() {
+        if ($('#analytics-tab-3').length) {
+            var options = {
+                series: [{
+                    name: 'Bounce Rate',
+                    data: [20.5, 30.6, 25.6, 22.6, 25.1, 15.5, 18.0]
+                }],
+                chart: {
+                    height: 280,
+                    type: 'line',
+                    offsetX: -20,
+                    offsetY: 20,
+                    width: '102%',
+                    fontFamily: 'Inter',
+                    toolbar: {
+                        show: false,
+                    }
+                },
+                stroke: {
+                    width: 3,
+                    curve: 'smooth'
+                },
+                xaxis: {
+                    type: 'datetime',
+                    categories: [
+                        "01 Jan",
+                        "02 Jan",
+                        "03 Jan",
+                        "04 Jan",
+                        "05 Jan",
+                        "06 Jan",
+                        "07 Jan"
+                    ]
+                },
+                fill: {
+                    type: 'gradient',
+                    gradient: {
+                        shade: 'dark',
+                        gradientToColors: [colors.secondary],
+                        shadeIntensity: 1,
+                        type: 'horizontal',
+                        opacityFrom: 1,
+                        opacityTo: 1,
+                        stops: [0, 100, 100, 100]
+                    },
+                },
+                tooltip: {
+                    y: {
+                        formatter: function (val) {
+                            return "%" + val
+                        }
+                    }
+                }
+            };
+
+            var chart = new ApexCharts(document.querySelector("#analytics-tab-3"), options);
+            chart.render();
+        }
+    }
+
+    analytics_tab3();
+
+    function analytics_tab4() {
+        if ($('#analytics-tab-4').length) {
+            var options = {
+                series: [{
+                    name: 'Session Duration',
+                    data: [25, 30, 25, 32, 25, 30, 18]
+                }],
+                chart: {
+                    height: 280,
+                    type: 'line',
+                    offsetX: -20,
+                    offsetY: 20,
+                    width: '102%',
+                    fontFamily: 'Inter',
+                    toolbar: {
+                        show: false,
+                    }
+                },
+                stroke: {
+                    width: 3,
+                    curve: 'smooth'
+                },
+                xaxis: {
+                    type: 'datetime',
+                    categories: [
+                        "01 Jan 2020 18:50",
+                        "02 Jan 2020 18:50",
+                        "03 Jan 2020 18:50",
+                        "04 Jan 2020 18:50",
+                        "05 Jan 2020 18:50",
+                        "06 Jan 2020 18:50",
+                        "07 Jan 2020 18:50"
+                    ]
+                },
+                fill: {
+                    type: 'gradient',
+                    gradient: {
+                        shade: 'dark',
+                        gradientToColors: [colors.secondary],
+                        shadeIntensity: 1,
+                        type: 'horizontal',
+                        opacityFrom: 1,
+                        opacityTo: 1,
+                        stops: [0, 100, 100, 100]
+                    },
+                }
+            };
+
+            var chart = new ApexCharts(document.querySelector("#analytics-tab-4"), options);
+            chart.render();
+        }
+    }
+
+    analytics_tab4();
+
+    function chart1() {
+        if ($('#chart1').length) {
+            var options = {
+                chart: {
+                    type: 'bar',
+                    toolbar: {
+                        show: false
+                    }
+                },
+                plotOptions: {
+                    bar: {
+                        horizontal: false,
+                        columnWidth: '55%',
+                        backgroundBarColors: ['red']
+                    },
+                },
+                dataLabels: {
+                    enabled: false
+                },
+                stroke: {
+                    show: true,
+                    width: 1,
+                    colors: ['transparent']
+                },
+                colors: [colors.secondary, colors.info, colors.warning],
+                series: [{
+                    name: 'Net Profit',
+                    data: [44, 55, 57, 56, 61, 58, 63, 60, 66]
+                }, {
+                    name: 'Revenue',
+                    data: [76, 85, 101, 98, 87, 105, 91, 114, 94]
+                }, {
+                    name: 'Free Cash Flow',
+                    data: [35, 41, 36, 26, 45, 48, 52, 53, 41]
+                }],
+                xaxis: {
+                    categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'],
+                },
+                legend: {
+                    position: 'bottom',
+                    offsetY: -10
+                },
+                tooltip: {
+                    y: {
+                        formatter: function (val) {
+                            return "$ " + val + " thousands"
+                        }
+                    }
+                }
+            };
+
+            var chart = new ApexCharts(
+                document.querySelector("#chart1"),
+                options
+            );
+
+            chart.render();
+        }
+    }
+
+    chart1();
+
+    function widget_chart1() {
+        if ($('#widget-chart1').length) {
+            var ctx = document.getElementById("widget-chart1");
+            ctx.height = 50;
+            new Chart(ctx.getContext('2d'), {
+                type: 'line',
+                data: {
+                    labels: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sst", "Sun"],
+                    datasets: [{
+                        label: 'data-2',
+                        data: [5, 15, 5, 20, 5, 15, 5],
+                        backgroundColor: "rgba(0,0,255,0)",
+                        borderWidth: 1,
+                        borderColor: colors.success,
+                        pointBorder: false,
+                    }]
+                },
+                options: {
+                    elements: {
+                        point: {
+                            radius: 0
+                        }
+                    },
+                    tooltips: {
+                        enabled: false
+                    },
+                    legend: {
+                        display: false
+                    },
+                    scales: {
+                        yAxes: [{
+                            display: false,
+                        }],
+                        xAxes: [{
+                            display: false
+                        }]
+                    },
+                }
+            });
+        }
+    }
+
+    widget_chart1();
+
+    function widget_chart2() {
+        if ($('#widget-chart2').length) {
+            var ctx = document.getElementById("widget-chart2");
+            ctx.height = 50;
+            var barChart = new Chart(ctx.getContext('2d'), {
+                type: 'line',
+                data: {
+                    labels: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sst", "Sun"],
+                    datasets: [{
+                        label: 'data-2',
+                        data: [5, 10, 10, 10, 5, 15, 10],
+                        backgroundColor: "rgba(0,0,255,0)",
+                        borderColor: colors.warning,
+                        borderWidth: 1,
+                        pointBorder: false,
+                    }]
+                },
+                options: {
+                    elements: {
+                        point: {
+                            radius: 0
+                        }
+                    },
+                    tooltips: {
+                        enabled: false
+                    },
+                    legend: {
+                        display: false
+                    },
+                    scales: {
+                        yAxes: [{
+                            display: false
+                        }],
+                        xAxes: [{
+                            display: false
+                        }]
+                    },
+                }
+            });
+        }
+    }
+
+    widget_chart2();
+
+    function widget_chart3() {
+        if ($('#widget-chart3').length) {
+            var ctx = document.getElementById("widget-chart3");
+            ctx.height = 50;
+            var barChart = new Chart(ctx.getContext('2d'), {
+                type: 'line',
+                data: {
+                    labels: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sst", "Sun"],
+                    datasets: [{
+                        label: 'data-2',
+                        data: [10, 5, 15, 5, 15, 5, 15],
+                        backgroundColor: "rgba(0,0,255,0)",
+                        borderColor: colors.danger,
+                        borderWidth: 1,
+                        pointBorder: false,
+                    }]
+                },
+                options: {
+                    elements: {
+                        point: {
+                            radius: 0
+                        }
+                    },
+                    tooltips: {
+                        enabled: false
+                    },
+                    legend: {
+                        display: false
+                    },
+                    scales: {
+                        yAxes: [{
+                            display: false
+                        }],
+                        xAxes: [{
+                            display: false
+                        }]
+                    },
+                }
+            });
+        }
+    }
+
+    widget_chart3();
+
+    function contactsStatuses() {
+        if ($('#contacts-statuses').length) {
+            var chart = new ApexCharts(
+                document.querySelector("#contacts-statuses"), {
+                    chart: {
+                        width: "100%",
+                        type: 'donut',
+                    },
+                    dataLabels: {
+                        enabled: false
+                    },
+                    stroke: {
+                        width: 3,
+                        colors: $('body').hasClass('dark') ? "#313852" : "rgba(255, 255, 255, 1)",
+                    },
+                    series: [44, 55, 13, 33],
+                    labels: ['New Contact', 'NR1', 'NR2', 'NR3'],
+                    colors: [colors.warning, colors.info, colors.success, colors.danger],
+                    legend: {
+                        position: 'bottom',
+                    }
+                }
+            );
+
+            chart.render();
+        }
+    }
+
+    contactsStatuses();
+
+    function revenue() {
+        if ($('#revenue').length) {
+            var ts2 = 1484418600000;
+            var dates = [];
+            for (var i = 0; i < 120; i++) {
+                ts2 = ts2 + 86400000;
+                var innerArr = [ts2, dataSeries[1][i].value];
+                dates.push(innerArr)
+            }
+
+            var options = {
+                chart: {
+                    type: 'area',
+                    fontFamily: "Inter",
+                    offsetX: -18,
+                    stacked: false,
+                    height: 390,
+                    width: '103%',
+                    toolbar: {
+                        show: false
+                    }
+                },
+                dataLabels: {
+                    enabled: false
+                },
+                series: [{
+                    name: 'Number of orders',
+                    data: dates
+                }],
+                stroke: {
+                    colors: [colors.primary],
+                    width: 2
+                },
+                fill: {
+                    type: 'gradient',
+                    gradient: {
+                        opacityFrom: 0.6,
+                        opacityTo: 0,
+                    }
+                },
+                yaxis: {
+                    labels: {
+                        formatter: function (val) {
+                            return (val / 1000000).toFixed(0);
+                        },
+                    }
+                },
+                xaxis: {
+                    type: 'datetime',
+                },
+
+                tooltip: {
+                    shared: false,
+                    y: {
+                        formatter: function (val) {
+                            return (val / 1000000).toFixed(0)
+                        }
+                    }
+                }
+            };
+
+            var chart = new ApexCharts(
+                document.querySelector("#revenue"),
+                options
+            );
+
+            chart.render();
+        }
+    }
+
+    revenue();
+
+    function hotProducts() {
+        if ($('#hot-products').length) {
+            var options = {
+                series: [44, 55, 13, 36, 30],
+                chart: {
+                    type: 'donut',
+                    fontFamily: "Inter",
+                    offsetY: 30,
+                    height: 250,
+                },
+                colors: [colors.primary, colors.secondary, colors.success, colors.warning, colors.danger],
+                labels: ['Iphone', 'Samsung', 'Huawei', 'General Mobile', 'Xiaomi'],
+                dataLabels: {
+                    enabled: false,
+
+                },
+                stroke: {
+                    colors: $('body').hasClass('dark') ? "#313852" : "#ffffff",
+                },
+                legend: {
+                    show: false
+                }
+            };
+
+            var chart = new ApexCharts(document.querySelector("#hot-products"), options);
+            chart.render();
+        }
+    }
+
+    hotProducts();
+
+    function activityChart() {
+        if ($('#ecommerce-activity-chart').length) {
+            var options = {
+                chart: {
+                    type: 'bar',
+                    fontFamily: "Inter",
+                    offsetX: -18,
+                    height: 312,
+                    width: '103%',
+                    toolbar: {
+                        show: false
+                    }
+                },
+                series: [{
+                    name: 'Comments',
+                    data: [44, 55, 57, 56, 61, 58, 63, 60, 66]
+                }, {
+                    name: 'Product View',
+                    data: [76, 85, 101, 98, 87, 105, 91, 114, 94]
+                }],
+                colors: [colors.secondary, colors.info],
+                plotOptions: {
+                    bar: {
+                        horizontal: false,
+                        columnWidth: '50%',
+                        endingShape: 'rounded'
+                    },
+                },
+                dataLabels: {
+                    enabled: false
+                },
+                stroke: {
+                    show: true,
+                    width: 8,
+                    colors: ['transparent']
+                },
+                xaxis: {
+                    categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'],
+                },
+                fill: {
+                    opacity: 1
+                },
+                legend: {
+                    position: "top",
+                }
+            };
+
+            var chart = new ApexCharts(
+                document.querySelector("#ecommerce-activity-chart"),
+                options
+            );
+
+            chart.render();
+        }
+    }
+
+    activityChart();
+
+    function projectTasks() {
+        if ($('#project-tasks').length) {
+            var options = {
+                colors: [colors.primary, colors.success, colors.info, colors.warning],
+                chart: {
+                    height: 350,
+                    type: 'bar',
+                    stacked: true,
+                    offsetY: -30,
+                    fontFamily: 'Inter',
+                    toolbar: {
+                        show: false
+                    },
+                    zoom: {
+                        enabled: false
+                    }
+                },
+                plotOptions: {
+                    bar: {
+                        horizontal: false,
+                    },
+                },
+                series: [{
+                    name: 'Project A',
+                    data: [44, 55, 41, 67, 22, 43]
+                }, {
+                    name: 'Project B',
+                    data: [13, 23, 20, 8, 13, 27]
+                }, {
+                    name: 'Project C',
+                    data: [11, 17, 15, 15, 21, 14]
+                }, {
+                    name: 'Project D',
+                    data: [21, 7, 25, 13, 22, 8]
+                }],
+                xaxis: {
+                    type: 'datetime',
+                    categories: ['01/01/2011 GMT', '01/02/2011 GMT', '01/03/2011 GMT', '01/04/2011 GMT', '01/05/2011 GMT', '01/06/2011 GMT'],
+                },
+                legend: {
+                    position: 'bottom',
+                    offsetY: -10
+                },
+                fill: {
+                    opacity: 1
+                },
+            };
+
+            var chart = new ApexCharts(
+                document.querySelector("#project-tasks"),
+                options
+            );
+
+            chart.render();
+        }
+    }
+
+    setInterval(function () {
+        $('#online-users-text').text(Math.round(Math.random() * 100));
+    }, 2000);
+
+    projectTasks();
+
+});
Index: resources/assets/js/examples/datatable.js
===================================================================
--- resources/assets/js/examples/datatable.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/datatable.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,13 @@
+'use strict';
+$(document).ready(function () {
+
+    $('#example1').DataTable({
+        responsive: true
+    });
+
+    $('#example2').DataTable({
+        "scrollY": "400px",
+        "scrollCollapse": true
+    });
+
+});
Index: resources/assets/js/examples/datepicker.js
===================================================================
--- resources/assets/js/examples/datepicker.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/datepicker.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,49 @@
+'use strict';
+$(document).ready(function () {
+
+    $('input[name="single-date-picker"]').daterangepicker({
+        singleDatePicker: true,
+        showDropdowns: true
+    });
+
+    $('input[name="simple-date-range-picker"]').daterangepicker();
+
+    $('input[name="simple-date-range-picker-callback"]').daterangepicker({
+        opens: 'left'
+    }, function (start, end, label) {
+        swal("A new date selection was made", start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD'), "success")
+    });
+
+    $('input[name="datetimes"]').daterangepicker({
+        timePicker: true,
+        startDate: moment().startOf('hour'),
+        endDate: moment().startOf('hour').add(32, 'hour'),
+        locale: {
+            format: 'M/DD hh:mm A'
+        }
+    });
+
+    /**
+     * datefilter
+     */
+    var datefilter = $('input[name="datefilter"]');
+    datefilter.daterangepicker({
+        autoUpdateInput: false,
+        locale: {
+            cancelLabel: 'Clear'
+        }
+    });
+
+    datefilter.on('apply.daterangepicker', function(ev, picker) {
+        $(this).val(picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY'));
+    });
+
+    $('input.create-event-datepicker').daterangepicker({
+        singleDatePicker: true,
+        showDropdowns: true,
+        autoUpdateInput: false
+    }).on('apply.daterangepicker', function(ev, picker) {
+        $(this).val(picker.startDate.format('MM/DD/YYYY'));
+    });
+
+});
Index: resources/assets/js/examples/dropzone.js
===================================================================
--- resources/assets/js/examples/dropzone.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/dropzone.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+'use strict';
+$(document).ready(function () {
+
+    new Dropzone("#my-awesome-dropzone", {});
+
+});
Index: resources/assets/js/examples/form-validator.js
===================================================================
--- resources/assets/js/examples/form-validator.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/form-validator.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,17 @@
+(function () {
+    'use strict';
+    window.addEventListener('load', function () {
+        // Fetch all the forms we want to apply custom Bootstrap validation styles to
+        var forms = document.getElementsByClassName('needs-validation');
+        // Loop over them and prevent submission
+        var validation = Array.prototype.filter.call(forms, function (form) {
+            form.addEventListener('submit', function (event) {
+                if (form.checkValidity() === false) {
+                    event.preventDefault();
+                    event.stopPropagation();
+                }
+                form.classList.add('was-validated');
+            }, false);
+        });
+    }, false);
+})();
Index: resources/assets/js/examples/form-wizard.js
===================================================================
--- resources/assets/js/examples/form-wizard.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/form-wizard.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,46 @@
+'use strict';
+$(document).ready(function () {
+
+    $('#wizard1').steps({
+        headerTag: 'h3',
+        bodyTag: 'section',
+        autoFocus: true,
+        titleTemplate: '<span class="wizard-index">#index#</span> #title#'
+    });
+
+    $('#wizard2').steps({
+        headerTag: 'h3',
+        bodyTag: 'section',
+        autoFocus: true,
+        titleTemplate: '<span class="wizard-index">#index#</span> #title#',
+        onStepChanging: function (event, currentIndex, newIndex) {
+            if (currentIndex < newIndex) {
+                var form = document.getElementById('form1'),
+                    form2 = document.getElementById('form2');
+
+                if (currentIndex === 0) {
+                    if (form.checkValidity() === false) {
+                        event.preventDefault();
+                        event.stopPropagation();
+                        form.classList.add('was-validated');
+                    } else {
+                        return true;
+                    }
+                } else if (currentIndex === 1) {
+                    if (form2.checkValidity() === false) {
+                        event.preventDefault();
+                        event.stopPropagation();
+                        form2.classList.add('was-validated');
+                    } else {
+                        return true;
+                    }
+                } else {
+                    return true;
+                }
+            } else {
+                return true;
+            }
+        }
+    });
+
+});
Index: resources/assets/js/examples/fullcalendar.js
===================================================================
--- resources/assets/js/examples/fullcalendar.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/fullcalendar.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,120 @@
+'use strict';
+$(document).ready(function () {
+
+    var events = [
+        {
+            title: 'Travel',
+            start: '2019-10-30:00:00',
+            constraint: 'businessHours',
+            className: 'bg-danger',
+            icon: "camera",
+            description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras eu pellentesque nibh. In nisl nulla, convallis ac nulla eget, pellentesque pellentesque magna.',
+        },
+        {
+            title: 'Team Assing',
+            start: '2019-10-15:00:00',
+            constraint: 'availableForMeeting',
+            className: 'bg-primary',
+            description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras eu pellentesque nibh. In nisl nulla, convallis ac nulla eget, pellentesque pellentesque magna.',
+        },
+        {
+            title: 'Friend',
+            start: '2019-10-10:00:00',
+            end: '2019-10-11:00:00',
+            className: 'bg-info',
+            icon: "user-o",
+            description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras eu pellentesque nibh. In nisl nulla, convallis ac nulla eget, pellentesque pellentesque magna.',
+        },
+        {
+            title: 'Holidays',
+            start: '2019-10-10:00:00',
+            end: '2019-10-12:00:00',
+            className: 'bg-success',
+            description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras eu pellentesque nibh. In nisl nulla, convallis ac nulla eget, pellentesque pellentesque magna.',
+        },
+        {
+            title: 'Company',
+            start: '2019-10-03:00:00',
+            className: 'bg-warning',
+            icon: "building-o",
+            description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras eu pellentesque nibh. In nisl nulla, convallis ac nulla eget, pellentesque pellentesque magna.',
+        },
+        {
+            id: 'availableForMeeting',
+            start: '2019-03-13T10:00:00',
+            end: '2019-03-13T16:00:00',
+            rendering: 'background',
+            description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras eu pellentesque nibh. In nisl nulla, convallis ac nulla eget, pellentesque pellentesque magna.',
+        },
+        {
+            start: '2019-03-24',
+            end: '2019-03-29',
+            overlap: false,
+            rendering: 'background',
+            color: '#ff9f89',
+            description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras eu pellentesque nibh. In nisl nulla, convallis ac nulla eget, pellentesque pellentesque magna.',
+        },
+        {
+            start: '2019-03-06',
+            end: '2019-03-29',
+            overlap: false,
+            rendering: 'background',
+            color: '#ff9f89',
+            description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras eu pellentesque nibh. In nisl nulla, convallis ac nulla eget, pellentesque pellentesque magna.',
+        }
+    ];
+
+    $('#external-events .fc-event').each(function () {
+
+        // store data so the calendar knows to render an event upon drop
+        $(this).data('event', {
+            title: $.trim($(this).text()), // use the element's text as the event title
+            stick: true, // maintain when user navigates (see docs on the renderEvent method),
+            color: $(this).find('i').css("color"),
+            icon: $(this).find('i').data('icon')
+        });
+
+        // make the event draggable using jQuery UI
+        $(this).draggable({
+            zIndex: 999,
+            revert: true,      // will cause the event to go back to its
+            revertDuration: 0  //  original position after the drag
+        });
+
+    });
+
+    $('#calendar-demo').fullCalendar({
+        header: {
+            left: 'prev,next today',
+            center: 'title',
+            right: 'month,agendaWeek,agendaDay,listMonth'
+        },
+        editable: true,
+        droppable: true,
+        drop: function () {
+            // is the "remove after drop" checkbox checked?
+            if ($('#drop-remove').is(':checked')) {
+                // if so, remove the element from the "Draggable Events" list
+                $(this).remove();
+            }
+        },
+        weekNumbers: true,
+        eventLimit: true, // allow "more" link when too many events
+        events: events,
+        eventRender: function (event, element) {
+            if (event.icon) {
+                element.find(".fc-title").prepend("<i class='mr-1 fa fa-" + event.icon + "'></i>");
+            }
+        },
+        dayClick: function () {
+            $('#createEventModal').modal();
+        },
+        eventClick: function (event, jsEvent, view) {
+            var modal = $('#viewEventModal');
+            modal.find('.event-icon').html("<i class='fa fa-" + event.icon + "'></i>");
+            modal.find('.event-title').html(event.title);
+            modal.find('.event-body').html(event.description);
+            modal.modal();
+        },
+    });
+});
Index: resources/assets/js/examples/input-mask.js
===================================================================
--- resources/assets/js/examples/input-mask.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/input-mask.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,14 @@
+'use strict';
+$(document).ready(function () {
+
+    $('[data-input-mask="phone"]').mask('(000) 000-0000');
+
+    $('[data-input-mask="money"]').mask('#.##0,00', {reverse: true});
+
+    $('[data-input-mask="date"]').mask('0000/00/00');
+
+    $('[data-input-mask="time"]').mask('00:00:00');
+
+    $('[data-input-mask="ip_address"]').mask('099.099.099.099');
+
+});
Index: resources/assets/js/examples/lightbox.js
===================================================================
--- resources/assets/js/examples/lightbox.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/lightbox.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,37 @@
+'use strict';
+$(document).ready(function () {
+
+    $('.image-popup').magnificPopup({
+        type: 'image',
+        zoom: {
+            enabled: true,
+            duration: 300,
+            easing: 'ease-in-out',
+            opener: function(openerElement) {
+                return openerElement.is('img') ? openerElement : openerElement.find('img');
+            }
+        }
+    });
+
+    var magnificPopupGalleryConfig = {
+        type: 'image',
+        gallery: {
+            enabled: true
+        },
+        zoom: {
+            enabled: true,
+            duration: 300,
+            easing: 'ease-in-out',
+            opener: function(openerElement) {
+                return openerElement.is('img') ? openerElement : openerElement.find('img');
+            }
+        }
+    };
+
+    $('.image-popup-gallery-item').magnificPopup(magnificPopupGalleryConfig);
+
+    $('.chat-app-wrapper .chat-app .chat-body .chat-body-messages .message-items .message-item:not(.outgoing-message).message-item-media ul a').magnificPopup(magnificPopupGalleryConfig);
+
+    $('.chat-app-wrapper .chat-app .chat-body .chat-body-messages .message-items .message-item.outgoing-message.message-item-media ul a').magnificPopup(magnificPopupGalleryConfig);
+
+});
Index: resources/assets/js/examples/pages/analytics-dashboard.js
===================================================================
--- resources/assets/js/examples/pages/analytics-dashboard.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/analytics-dashboard.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,23 @@
+$(function () {
+    var start = moment().subtract(29, 'days');
+    var end = moment();
+
+    function cb(start, end) {
+        $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
+    }
+
+    $('#reportrange').daterangepicker({
+        startDate: start,
+        endDate: end,
+        ranges: {
+            'Today': [moment(), moment()],
+            'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
+            'Last 7 Days': [moment().subtract(6, 'days'), moment()],
+            'Last 30 Days': [moment().subtract(29, 'days'), moment()],
+            'This Month': [moment().startOf('month'), moment().endOf('month')],
+            'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
+        }
+    }, cb);
+
+    cb(start, end);
+});
Index: resources/assets/js/examples/pages/calendar.js
===================================================================
--- resources/assets/js/examples/pages/calendar.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/calendar.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,42 @@
+$(function () {
+    $(document).on('click', '.app-block .app-content .app-action .action-left input[type="checkbox"]', function () {
+        $('.app-lists ul li input[type="checkbox"]').prop('checked', $(this).prop('checked'));
+        if ($(this).prop('checked')) {
+            $('.app-lists ul li input[type="checkbox"]').closest('li').addClass('active');
+        } else {
+            $('.app-lists ul li input[type="checkbox"]').closest('li').removeClass('active');
+        }
+    });
+
+    $(document).on('click', '.app-lists ul li input[type="checkbox"]', function () {
+        if ($(this).prop('checked')) {
+            $(this).closest('li').addClass('active');
+        } else {
+            $(this).closest('li').removeClass('active');
+        }
+    });
+
+    $(document).on('click', '.app-block .app-content .app-content-body .app-lists ul.list-group li.list-group-item', function (e) {
+        if (!$(e.target).is('.custom-control, .custom-control *, a, a *')) {
+            $('.app-detail').addClass('show').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function () {
+                $('.app-block .app-content .app-content-body .app-detail .app-detail-article').niceScroll().resize();
+            });
+        }
+    });
+
+    $(document).on('click', 'a.app-detail-close-button', function () {
+        $('.app-detail').removeClass('show');
+        return false;
+    });
+
+    $(document).on('click', '.app-sidebar-menu-button', function () {
+        $('.app-block .app-sidebar, .app-content-overlay').addClass('show');
+        // $('.app-block .app-sidebar .app-sidebar-menu').niceScroll().resize();
+        return false;
+    });
+
+    $(document).on('click', '.app-content-overlay', function () {
+        $('.app-block .app-sidebar, .app-content-overlay').removeClass('show');
+        return false;
+    });
+});
Index: resources/assets/js/examples/pages/customers.js
===================================================================
--- resources/assets/js/examples/pages/customers.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/customers.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,12 @@
+$(function () {
+    $(document).ready(function () {
+        $('#myTable').DataTable({
+            'columnDefs': [
+                {
+                    "orderable": false,
+                    "targets": 5
+                }
+            ]
+        });
+    });
+});
Index: resources/assets/js/examples/pages/ecommerce-dashboard.js
===================================================================
--- resources/assets/js/examples/pages/ecommerce-dashboard.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/ecommerce-dashboard.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,32 @@
+$(function () {
+    $('#recent-orders').DataTable({
+        lengthMenu: [5, 10],
+        "columnDefs": [{
+            "targets": 6,
+            "orderable": false
+        }]
+    });
+
+    var start = moment().subtract(29, 'days');
+    var end = moment();
+
+    function cb(start, end) {
+        $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
+    }
+
+    $('#reportrange').daterangepicker({
+        startDate: start,
+        endDate: end,
+        opens: 'left',
+        ranges: {
+            'Today': [moment(), moment()],
+            'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
+            'Last 7 Days': [moment().subtract(6, 'days'), moment()],
+            'Last 30 Days': [moment().subtract(29, 'days'), moment()],
+            'This Month': [moment().startOf('month'), moment().endOf('month')],
+            'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
+        }
+    }, cb);
+
+    cb(start, end);
+});
Index: resources/assets/js/examples/pages/gallery.js
===================================================================
--- resources/assets/js/examples/pages/gallery.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/gallery.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,49 @@
+$(function () {
+
+    $(window).on('load', function () {
+        var $container = $('.gallery-container');
+
+        $container.isotope({
+            filter: '*',
+            animationOptions: {
+                duration: 750,
+                easing: 'linear',
+                queue: false
+            }
+        });
+
+        $('.gallery-filter a').click(function () {
+            var $this = $(this);
+
+            $('.gallery-filter .active').removeClass('active');
+            $this.addClass('active');
+
+            var selector = $this.attr('data-filter');
+            $container.isotope({
+                filter: selector,
+                animationOptions: {
+                    duration: 300,
+                    easing: 'linear',
+                    queue: false
+                }
+            });
+            return false;
+        });
+    });
+
+    $('.image-popup-gallery-item').magnificPopup({
+        type: 'image',
+        gallery: {
+            enabled: true
+        },
+        zoom: {
+            enabled: true,
+            duration: 300,
+            easing: 'ease-in-out',
+            opener: function (openerElement) {
+                return openerElement.is('img') ? openerElement : openerElement.find('img');
+            }
+        }
+    });
+
+});
Index: resources/assets/js/examples/pages/orders.js
===================================================================
--- resources/assets/js/examples/pages/orders.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/orders.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,55 @@
+$(function () {
+    var table = $('#orders').DataTable({
+        'columnDefs': [
+            {
+                'targets': 0,
+                'className': 'dt-body-center',
+                'render': function (data, type, full, meta) {
+                    return '<div class="custom-control custom-checkbox">' +
+                        '<input type="checkbox" class="custom-control-input" id="customCheck' + meta.row + '">' +
+                        '<label class="custom-control-label" for="customCheck' + meta.row + '"></label>' +
+                        '</div>';
+                }
+            },
+            {
+                "orderable": false,
+                "targets": [0, 7]
+            }
+        ],
+        'order': [1, 'asc']
+    });
+
+    $('#orders-select-all').on('click', function () {
+        // Check/uncheck all checkboxes in the table
+        var rows = table.rows({'search': 'applied'}).nodes();
+        $('input[type="checkbox"]', rows)
+            .prop('checked', this.checked);
+        if (this.checked) {
+            $('input[type="checkbox"]', rows).closest('tr').addClass('tr-selected');
+        } else {
+            $('input[type="checkbox"]', rows).closest('tr').removeClass('tr-selected');
+        }
+    });
+
+    // Handle click on checkbox to set state of "Select all" control
+    $('#orders tbody').on('change', 'input[type="checkbox"]', function () {
+        // If checkbox is not checked
+        if (!this.checked) {
+            var el = $('#orders-select-all').get(0);
+            // If "Select all" control is checked and has 'indeterminate' property
+            if (el && el.checked && ('indeterminate' in el)) {
+                // Set visual state of "Select all" control
+                // as 'indeterminate'
+                el.indeterminate = true;
+            }
+        }
+    });
+
+    $('.custom-control-input').click(function () {
+        if ($(this).prop('checked')) {
+            $(this).closest('td').closest('tr').addClass('tr-selected');
+        } else {
+            $(this).closest('td').closest('tr').removeClass('tr-selected');
+        }
+    });
+});
Index: resources/assets/js/examples/pages/product-detail.js
===================================================================
--- resources/assets/js/examples/pages/product-detail.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/product-detail.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,17 @@
+$(document).ready(function () {
+    $('.slider-for').slick({
+        slidesToShow: 1,
+        slidesToScroll: 1,
+        arrows: false,
+        fade: true,
+        asNavFor: '.slider-nav'
+    });
+
+    $('.slider-nav').slick({
+        slidesToShow: 4,
+        slidesToScroll: 1,
+        asNavFor: '.slider-for',
+        centerMode: true,
+        focusOnSelect: true
+    });
+});
Index: resources/assets/js/examples/pages/product-grid.js
===================================================================
--- resources/assets/js/examples/pages/product-grid.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/product-grid.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+$(function () {
+    // Add to cart example
+    $(document).on('click', '.add-to-card', function () {
+        $(this)
+            .removeClass('btn-primary')
+            .addClass('btn-success')
+            .text('View Cart');
+    });
+
+    // Range slider example
+    $("#rangeSlider-example").ionRangeSlider({
+        type: "double",
+        min: 10,
+        max: 5000,
+        from: 2000,
+        to: 4000,
+        skin: "round",
+        prefix: '$'
+    });
+});
Index: resources/assets/js/examples/pages/product-list.js
===================================================================
--- resources/assets/js/examples/pages/product-list.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/product-list.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,20 @@
+$(function () {
+    // Add to cart example
+    $(document).on('click', '.add-to-card', function () {
+        $(this)
+            .removeClass('btn-primary')
+            .addClass('btn-success')
+            .text('View Cart');
+    });
+
+    // Range slider example
+    $("#rangeSlider-example").ionRangeSlider({
+        type: "double",
+        min: 10,
+        max: 5000,
+        from: 2000,
+        to: 4000,
+        skin: "round",
+        prefix: '$'
+    });
+})
Index: resources/assets/js/examples/pages/project-grid.js
===================================================================
--- resources/assets/js/examples/pages/project-grid.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/project-grid.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,9 @@
+$(function () {
+    $('.single-datepicker').daterangepicker({
+        opens: 'left'
+    });
+
+    $('.select2').select2({
+        placeholder: 'Select'
+    });
+});
Index: resources/assets/js/examples/pages/project-list.js
===================================================================
--- resources/assets/js/examples/pages/project-list.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/project-list.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,55 @@
+$(document).ready(function () {
+    var table = $('#project-list').DataTable({
+        'columnDefs': [
+            {
+                'targets': 0,
+                'className': 'dt-body-center',
+                'render': function (data, type, full, meta) {
+                    return '<div class="custom-control custom-checkbox">' +
+                        '<input type="checkbox" class="custom-control-input" id="customCheck' + meta.row + '">' +
+                        '<label class="custom-control-label" for="customCheck' + meta.row + '"></label>' +
+                        '</div>';
+                }
+            },
+            {
+                "orderable": false,
+                "targets": [0, 7]
+            }
+        ],
+        'order': [1, 'asc']
+    });
+
+    $(document).on('click', '#projects-select-all', function () {
+        // Check/uncheck all checkboxes in the table
+        var rows = table.rows({'search': 'applied'}).nodes();
+        $('input[type="checkbox"]', rows)
+            .prop('checked', this.checked);
+        if (this.checked) {
+            $('input[type="checkbox"]', rows).closest('tr').addClass('tr-selected');
+        } else {
+            $('input[type="checkbox"]', rows).closest('tr').removeClass('tr-selected');
+        }
+    });
+
+    // Handle click on checkbox to set state of "Select all" control
+    $('#projects tbody').on('change', 'input[type="checkbox"]', function () {
+        // If checkbox is not checked
+        if (!this.checked) {
+            var el = $('#projects-select-all').get(0);
+            // If "Select all" control is checked and has 'indeterminate' property
+            if (el && el.checked && ('indeterminate' in el)) {
+                // Set visual state of "Select all" control
+                // as 'indeterminate'
+                el.indeterminate = true;
+            }
+        }
+    });
+
+    $(document).on('click', '.custom-control-input', function () {
+        if ($(this).prop('checked')) {
+            $(this).closest('td').closest('tr').addClass('tr-selected');
+        } else {
+            $(this).closest('td').closest('tr').removeClass('tr-selected');
+        }
+    });
+});
Index: resources/assets/js/examples/pages/projects-dashboard.js
===================================================================
--- resources/assets/js/examples/pages/projects-dashboard.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/projects-dashboard.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,10 @@
+$(function () {
+    $('.slick-js').slick({
+        speed: 500,
+        arrows: false,
+        slidesToShow: 1,
+        slidesToScroll: 1,
+        autoplay: true,
+        autoplaySpeed: 2000
+    });
+});
Index: resources/assets/js/examples/pages/user-list.js
===================================================================
--- resources/assets/js/examples/pages/user-list.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/pages/user-list.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,55 @@
+$(document).ready(function () {
+    var table = $('#user-list').DataTable({
+        'columnDefs': [
+            {
+                'targets': 0,
+                'className': 'dt-body-center',
+                'render': function (data, type, full, meta) {
+                    return '<div class="custom-control custom-checkbox">' +
+                        '<input type="checkbox" class="custom-control-input" id="customCheck' + meta.row + '">' +
+                        '<label class="custom-control-label" for="customCheck' + meta.row + '"></label>' +
+                        '</div>';
+                }
+            },
+            {
+                "orderable": false,
+                "targets": [0, 8]
+            }
+        ],
+        'order': [1, 'asc']
+    });
+
+    $(document).on('click', '#user-list-select-all', function () {
+        // Check/uncheck all checkboxes in the table
+        var rows = table.rows({'search': 'applied'}).nodes();
+        $('input[type="checkbox"]', rows)
+            .prop('checked', this.checked);
+        if (this.checked) {
+            $('input[type="checkbox"]', rows).closest('tr').addClass('tr-selected');
+        } else {
+            $('input[type="checkbox"]', rows).closest('tr').removeClass('tr-selected');
+        }
+    });
+
+    // Handle click on checkbox to set state of "Select all" control
+    $('#user-list tbody').on('change', 'input[type="checkbox"]', function () {
+        // If checkbox is not checked
+        if (!this.checked) {
+            var el = $('#user-list-select-all').get(0);
+            // If "Select all" control is checked and has 'indeterminate' property
+            if (el && el.checked && ('indeterminate' in el)) {
+                // Set visual state of "Select all" control
+                // as 'indeterminate'
+                el.indeterminate = true;
+            }
+        }
+    });
+
+    $(document).on('click', '.custom-control-input', function () {
+        if ($(this).prop('checked')) {
+            $(this).closest('td').closest('tr').addClass('tr-selected');
+        } else {
+            $(this).closest('td').closest('tr').removeClass('tr-selected');
+        }
+    });
+});
Index: resources/assets/js/examples/range-slider.js
===================================================================
--- resources/assets/js/examples/range-slider.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/range-slider.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,66 @@
+'use strict';
+$(document).ready(function () {
+
+    $("#demo_1").ionRangeSlider({
+        min: 100,
+        max: 1000,
+        from: 550,
+        skin: "round"
+    });
+
+    $("#demo_2").ionRangeSlider({
+        type: "double",
+        grid: true,
+        min: 0,
+        max: 1000,
+        from: 200,
+        to: 800,
+        prefix: "$",
+        skin: "round"
+    });
+
+    $("#demo_3").ionRangeSlider({
+        type: "double",
+        grid: true,
+        min: -1000,
+        max: 1000,
+        from: -500,
+        to: 500,
+        step: 250,
+        skin: "round"
+    });
+
+    $("#demo_4").ionRangeSlider({
+        type: "double",
+        grid: true,
+        min: -12.8,
+        max: 12.8,
+        from: -3.2,
+        to: 3.2,
+        step: 0.1,
+        skin: "round"
+    });
+
+    $("#demo_5").ionRangeSlider({
+        grid: true,
+        from: new Date().getMonth(),
+        values: [
+            "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+            "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
+        ],
+        skin: "round"
+    });
+
+    $("#demo_6").ionRangeSlider({
+        min: 0,
+        max: 10000,
+        from: 777,
+        step: 1,            // default 1 (set step)
+        grid: true,         // default false (enable grid)
+        grid_num: 4,        // default 4 (set number of grid cells)
+        grid_snap: false,    // default false (snap grid to step)
+        skin: "round"
+    });
+
+
+});
Index: resources/assets/js/examples/select2.js
===================================================================
--- resources/assets/js/examples/select2.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/select2.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,8 @@
+'use strict';
+$(document).ready(function () {
+
+    $('.js-example-basic-single').select2({
+        placeholder: 'Select'
+    });
+
+});
Index: resources/assets/js/examples/slick.js
===================================================================
--- resources/assets/js/examples/slick.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/slick.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,70 @@
+'use strict';
+$(document).ready(function () {
+
+    $('.slick-single').slick();
+
+    $('.slick-multiple').slick({
+        infinite: true,
+        slidesToShow: 4,
+        slidesToScroll: 4
+    });
+
+    $('.slick-autoplay').slick({
+        slidesToShow: 3,
+        slidesToScroll: 1,
+        autoplay: true,
+        autoplaySpeed: 2000,
+    });
+
+    $('.slick-center-mode').slick({
+        centerMode: true,
+        centerPadding: '60px',
+        slidesToShow: 3,
+        responsive: [
+            {
+                breakpoint: 768,
+                settings: {
+                    arrows: false,
+                    centerMode: true,
+                    centerPadding: '40px',
+                    slidesToShow: 3
+                }
+            },
+            {
+                breakpoint: 480,
+                settings: {
+                    arrows: false,
+                    centerMode: true,
+                    centerPadding: '40px',
+                    slidesToShow: 1
+                }
+            }
+        ]
+    });
+
+    $('.slick-fade-effect').slick({
+        dots: true,
+        infinite: true,
+        speed: 500,
+        fade: true,
+        cssEase: 'linear'
+    });
+
+    $('.slider-for').slick({
+        slidesToShow: 1,
+        slidesToScroll: 1,
+        arrows: false,
+        fade: true,
+        asNavFor: '.slider-nav'
+    });
+
+    $('.slider-nav').slick({
+        slidesToShow: 4,
+        slidesToScroll: 1,
+        asNavFor: '.slider-for',
+        centerMode: true,
+        focusOnSelect: true
+    });
+
+
+});
Index: resources/assets/js/examples/sweet-alert.js
===================================================================
--- resources/assets/js/examples/sweet-alert.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/sweet-alert.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,85 @@
+'use strict';
+$(document).ready(function () {
+    $('.sweet-basic').on('click', function () {
+        swal('Hello world!');
+    });
+    $('.sweet-success').on('click', function () {
+        swal("Good job!", "You clicked the button!", "success");
+    });
+    $('.sweet-warning').on('click', function () {
+        swal("Good job!", "You clicked the button!", "warning");
+    });
+    $('.sweet-error').on('click', function () {
+        swal("Good job!", "You clicked the button!", "error");
+    });
+    $('.sweet-info').on('click', function () {
+        swal("Good job!", "You clicked the button!", "info");
+    });
+
+    $('.sweet-multiple').on('click', function () {
+        swal({
+            title: "Are you sure?",
+            text: "Once deleted, you will not be able to recover this imaginary file!",
+            icon: "warning",
+            buttons: true,
+            dangerMode: true,
+        })
+            .then((willDelete) => {
+                if (willDelete) {
+                    swal("Poof! Your imaginary file has been deleted!", {
+                        icon: "success",
+                    });
+                } else {
+                    swal("Your imaginary file is safe!", {
+                        icon: "error",
+                    });
+                }
+            });
+    });
+    $('.sweet-prompt').on('click', function () {
+        swal("Write something here:", {
+            content: "input",
+        })
+            .then((value) => {
+                swal(`You typed: ${value}`);
+            });
+    });
+    $('.sweet-ajax').on('click', function () {
+        swal({
+            text: 'Search for a movie. e.g. "La La Land".',
+            content: "input",
+            button: {
+                text: "Search!",
+                closeModal: false,
+            },
+        })
+            .then(name => {
+                if (!name) throw null;
+                return fetch(`https://itunes.apple.com/search?term=${name}&entity=movie`);
+            })
+            .then(results => {
+                return results.json();
+            })
+            .then(json => {
+                const movie = json.results[0];
+                if (!movie) {
+                    return swal("No movie was found!");
+                }
+                const name = movie.trackName;
+                const imageURL = movie.artworkUrl100;
+                swal({
+                    title: "Top result:",
+                    text: name,
+                    icon: imageURL,
+                });
+            })
+            .catch(err => {
+                if (err) {
+                    swal("Oh noes!", "The AJAX request failed!", "error");
+                } else {
+                    swal.stopLoading();
+                    swal.close();
+                }
+            });
+    });
+});
Index: resources/assets/js/examples/tagsinput.js
===================================================================
--- resources/assets/js/examples/tagsinput.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/tagsinput.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+'use strict';
+$(document).ready(function () {
+
+    $("input.tagsinput").tagsinput('items');
+
+});
Index: resources/assets/js/examples/toast.js
===================================================================
--- resources/assets/js/examples/toast.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/toast.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,35 @@
+'use strict';
+$(document).ready(function () {
+
+    var doc = $(document);
+
+    toastr.options = {
+        timeOut: 3000,
+        progressBar: true,
+        showMethod: "slideDown",
+        hideMethod: "slideUp",
+        showDuration: 200,
+        hideDuration: 200
+    };
+
+    doc.on('click', '.toastr-examples a.btn-success', function () {
+        toastr.success('Successfully completed');
+        return false;
+    });
+
+    doc.on('click', '.toastr-examples a.btn-danger', function () {
+        toastr.error('Something went wrong');
+        return false;
+    });
+
+    doc.on('click', '.toastr-examples a.btn-info', function () {
+        toastr.info('This is an informational message');
+        return false;
+    });
+
+    doc.on('click', '.toastr-examples a.btn-warning', function () {
+        toastr.warning('You are currently not authorized');
+        return false;
+    });
+
+});
Index: resources/assets/js/examples/tour.js
===================================================================
--- resources/assets/js/examples/tour.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/tour.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,18 @@
+'use strict';
+$(document).ready(function () {
+
+    $(document).on('click', 'a.tour', function () {
+        var enjoyhint_instance = new EnjoyHint({});
+
+        enjoyhint_instance.set([
+            {
+                'next .header': 'Quick toolbar.',
+            },
+            {
+                'next .navigation': 'Navigation to navigate the page.',
+            }
+        ]);
+        enjoyhint_instance.run();
+    });
+
+});
Index: resources/assets/js/examples/treeview.js
===================================================================
--- resources/assets/js/examples/treeview.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/treeview.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,49 @@
+'use strict';
+$(document).ready(function () {
+
+    $('#jstree_demo1').jstree({'core' : {
+            'data' : [
+                {
+                    "text" : "Same but with checkboxes",
+                    "children" : [
+                        { "text" : "initially selected", "state" : { "selected" : true } },
+                        { "text" : "custom icon URL", "icon" : "//jstree.com/tree-icon.png" },
+                        { "text" : "initially open", "state" : { "opened" : true }, "children" : [ "Another node" ] },
+                        { "text" : "custom icon class", "icon" : "glyphicon glyphicon-leaf" }
+                    ]
+                },
+                "And wholerow selection"
+            ]
+        }});
+
+    $('#jstree_demo2').jstree({'plugins':["wholerow"], 'core' : {
+            'data' : [
+                {
+                    "text" : "Same but with checkboxes",
+                    "children" : [
+                        { "text" : "initially selected", "state" : { "selected" : true } },
+                        { "text" : "custom icon URL", "icon" : "//jstree.com/tree-icon.png" },
+                        { "text" : "initially open", "state" : { "opened" : true }, "children" : [ "Another node" ] },
+                        { "text" : "custom icon class", "icon" : "glyphicon glyphicon-leaf" }
+                    ]
+                },
+                "And wholerow selection"
+            ]
+        }});
+
+    $('#jstree_demo3').jstree({'plugins':["wholerow", "checkbox"], 'core' : {
+            'data' : [
+                {
+                    "text" : "Same but with checkboxes",
+                    "children" : [
+                        { "text" : "initially selected", "state" : { "selected" : true } },
+                        { "text" : "custom icon URL", "icon" : "//jstree.com/tree-icon.png" },
+                        { "text" : "initially open", "state" : { "opened" : true }, "children" : [ "Another node" ] },
+                        { "text" : "custom icon class", "icon" : "glyphicon glyphicon-leaf" }
+                    ]
+                },
+                "And wholerow selection"
+            ]
+        }});
+
+});
Index: resources/assets/js/examples/vmap.js
===================================================================
--- resources/assets/js/examples/vmap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/js/examples/vmap.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,35 @@
+'use strict';
+$(document).ready(function () {
+
+    function vmap_init(item) {
+        if ($('#vmap_' + item).length > 0) {
+            $('#vmap_' + item).vectorMap({
+                map: item,
+                backgroundColor: '#fff',
+                color: '#ffffff',
+                hoverOpacity: 0.7,
+                borderColor: '#fff',
+                selectedColor: '#666666',
+                enableZoom: false,
+                showTooltip: true,
+                scaleColors: ['#C8EEFF', '#006491'],
+                normalizeFunction: 'polynomial',
+                onRegionClick: function (element, code, region) {
+                    var message = 'You clicked "'
+                        + region
+                        + '" which has the code: '
+                        + code.toUpperCase();
+
+                    alert(message);
+                }
+            });
+        }
+    }
+
+    vmap_init('world_en');
+
+    vmap_init('canada_en');
+
+    vmap_init('usa_en');
+
+});
Index: resources/assets/sass/app.scss
===================================================================
--- resources/assets/sass/app.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/app.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,65 @@
+// Vars
+@import "core/vars";
+// Mixins
+@import "core/mixins";
+// Components
+@import "components/body";
+@import "components/preloader";
+@import "components/icon-block";
+@import "components/error";
+@import "components/form";
+@import "components/form-wizard";
+@import "components/page-header";
+@import "components/lightbox";
+@import "components/card";
+@import "components/color";
+@import "components/colorpicker";
+@import "components/typography";
+@import "components/button";
+@import "components/progress";
+@import "components/dropdown";
+@import "components/badge";
+@import "components/collapse";
+@import "components/media-object";
+@import "components/accordion";
+@import "components/scrollbar";
+@import "components/gallery";
+@import "components/datepicker";
+@import "components/alert";
+@import "components/breadcrumb";
+@import "components/notification";
+@import "components/pagination";
+@import "components/tour";
+@import "components/sweet-alert";
+@import "components/range-slider";
+@import "components/select2";
+@import "components/modal";
+@import "components/timepicker";
+@import "components/avatar";
+@import "components/file-upload";
+@import "components/authentication";
+@import "components/chat";
+@import "components/table";
+@import "components/pricing-table";
+@import "components/timeline";
+@import "components/calendar";
+@import "components/list-group";
+@import "components/toastr";
+@import "components/nestable";
+@import "components/slick";
+@import "components/webapp";
+@import "components/demo";
+@import "layouts";
+@import "other";
+// Header
+@import "components/header";
+// Navigation
+@import "components/navigation";
+// Footer
+@import "components/footer";
+// Aside
+@import "components/aside";
+// Dark Theme
+@import "dark";
+// Responsive
+@import "responsive";
Index: resources/assets/sass/components/accordion.scss
===================================================================
--- resources/assets/sass/components/accordion.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/accordion.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,229 @@
+.accordion {
+  .card {
+    margin-bottom: 0;
+    border: 1px solid #ebebeb;
+
+    .card-header {
+      display: flex;
+      height: 50px;
+      padding: 0 10px;
+      align-items: center;
+
+      button {
+        display: block;
+      }
+    }
+  }
+
+  &.custom-accordion {
+    border: 1px solid #ebebeb;
+    border-radius: 5px;
+    overflow: hidden;
+
+    .accordion-row {
+      a.accordion-header {
+        color: $color-dark;
+        border-bottom: 1px solid #ebebeb;
+        border-top: 1px solid #ebebeb;
+        padding: 10px 20px;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        margin-top: -1px;
+
+        .accordion-status-icon {
+          &.open {
+            display: none;
+          }
+        }
+
+        &:hover, &:focus {
+          color: $color-primary;
+        }
+      }
+
+      .accordion-body {
+        display: none;
+        padding: 10px 20px;
+      }
+
+      &.open {
+        a.accordion-header {
+          background: white;
+
+          .accordion-status-icon {
+            &.open {
+              display: block;
+            }
+
+            &.close {
+              display: none;
+            }
+          }
+        }
+
+        .accordion-body {
+          display: block;
+        }
+      }
+
+      &:first-child {
+        a.accordion-header {
+          border-top: none;
+        }
+      }
+    }
+
+    &.accordion-primary {
+      .accordion-row {
+        &:not(.open) {
+          a.accordion-header {
+            &:hover, &:focus {
+              color: $color-primary;
+            }
+          }
+        }
+
+        &.open {
+          a.accordion-header {
+            background: $color-primary;
+            color: white;
+          }
+        }
+      }
+    }
+
+    &.accordion-success {
+      .accordion-row {
+        &:not(.open) {
+          a.accordion-header {
+            &:hover, &:focus {
+              color: $color-success;
+            }
+          }
+        }
+
+        &.open {
+          a.accordion-header {
+            background: $color-success;
+            color: white;
+          }
+        }
+      }
+    }
+
+    &.accordion-danger {
+      .accordion-row {
+        &:not(.open) {
+          a.accordion-header {
+            &:hover, &:focus {
+              color: $color-danger;
+            }
+          }
+        }
+
+        &.open {
+          a.accordion-header {
+            background: $color-danger;
+            color: white;
+          }
+        }
+      }
+    }
+
+    &.accordion-secondary {
+      .accordion-row {
+        &:not(.open) {
+          a.accordion-header {
+            &:hover, &:focus {
+              color: $color-secondary;
+            }
+          }
+        }
+
+        &.open {
+          a.accordion-header {
+            background: $color-secondary;
+            color: white;
+          }
+        }
+      }
+    }
+
+    &.accordion-light {
+      .accordion-row {
+        &:not(.open) {
+          a.accordion-header {
+            &:hover, &:focus {
+              color: $color-dark;
+            }
+          }
+        }
+
+        &.open {
+          a.accordion-header {
+            background: $color-light;
+            color: $color-dark;
+          }
+        }
+      }
+    }
+
+    &.accordion-warning {
+      .accordion-row {
+        &:not(.open) {
+          a.accordion-header {
+            &:hover, &:focus {
+              color: $color-warning;
+            }
+          }
+        }
+
+        &.open {
+          a.accordion-header {
+            background: $color-warning;
+            color: $color-dark;
+          }
+        }
+      }
+    }
+
+    &.accordion-info {
+      .accordion-row {
+        &:not(.open) {
+          a.accordion-header {
+            &:hover, &:focus {
+              color: $color-info;
+            }
+          }
+        }
+
+        &.open {
+          a.accordion-header {
+            background: $color-info;
+            color: white;
+          }
+        }
+      }
+    }
+
+    &.accordion-dark {
+      .accordion-row {
+        &:not(.open) {
+          a.accordion-header {
+            &:hover, &:focus {
+              color: $color-dark;
+            }
+          }
+        }
+
+        &.open {
+          a.accordion-header {
+            background: $color-dark;
+            color: white;
+          }
+        }
+      }
+    }
+  }
+}
Index: resources/assets/sass/components/alert.scss
===================================================================
--- resources/assets/sass/components/alert.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/alert.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,69 @@
+.alert {
+
+   border-color: transparent !important;
+
+   .close {
+      height: 100%;
+      width: 44px;
+      justify-content: center;
+      align-items: center;
+      padding: 0;
+      display: flex;
+      & > * {
+         font-size: initial;
+         text-shadow: none;
+         line-height: 0;
+      }
+   }
+
+   &.alert-primary {
+      background: $color-primary-bright !important;
+      &.alert-with-border {
+         border-left: 3px solid $color-primary !important;
+      }
+   }
+
+   &.alert-secondary {
+      background: $color-secondary-bright !important;
+      &.alert-with-border {
+         border-left: 3px solid $color-secondary !important;
+      }
+   }
+
+   &.alert-success {
+      background: $color-success-bright !important;
+      &.alert-with-border {
+         border-left: 3px solid $color-success !important;
+      }
+   }
+
+   &.alert-danger {
+      background: $color-danger-bright !important;
+      &.alert-with-border {
+         border-left: 3px solid $color-danger !important;
+      }
+   }
+
+   &.alert-warning {
+      background: $color-warning-bright !important;
+      &.alert-with-border {
+         border-left: 3px solid $color-warning !important;
+      }
+   }
+
+   &.alert-info {
+      background: $color-info-bright !important;
+      &.alert-with-border {
+         border-left: 3px solid $color-info !important;
+      }
+   }
+
+   &.alert-dark {
+      background: $color-dark-bright !important;
+      color: $color-dark !important;
+      &.alert-with-border {
+         border-left: 3px solid $color-dark !important;
+      }
+   }
+
+}
Index: resources/assets/sass/components/aside.scss
===================================================================
--- resources/assets/sass/components/aside.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/aside.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,74 @@
+.sidebar-group {
+    background-color: rgba(0, 0, 0, 0.35);
+    position: fixed;
+    right: 0;
+    bottom: 0;
+    top: 0;
+    left: 0;
+    opacity: 0;
+    z-index: 1000;
+    transition: all .3s;
+    visibility: hidden;
+
+    &.show {
+        opacity: 1;
+        visibility: visible;
+    }
+
+    .card {
+        box-shadow: none;
+    }
+
+    .sidebar {
+        width: $sidebar-width;
+        box-shadow: 0 0 25px rgba(0, 0, 0, 0.25);
+        background-color: white;
+        z-index: 1000;
+        transition: all .2s;
+        visibility: hidden;
+        opacity: 0;
+        margin-right: -100px;
+        position: fixed;
+        right: 0;
+        bottom: 0;
+        top: 0;
+
+        &.show {
+            visibility: visible;
+            opacity: 1;
+            margin-right: 0px;
+        }
+
+        & > header {
+            background-color: #ebebeb;
+            padding: 1.5rem;
+            font-size: 16px;
+            line-height: 0;
+            display: flex;
+            align-items: center;
+
+            i {
+                margin-right: 10px;
+            }
+        }
+
+        .tab-content {
+            height: calc(100% - 50px);
+
+            .tab-pane.active {
+                height: 100%;
+                display: flex;
+                flex-direction: column;
+
+                .tab-pane-body {
+                    flex: 1;
+                    overflow: auto;
+                }
+
+                .tab-pane-footer {
+                    padding: 20px 0;
+                }
+            }
+        }
+    }
+}
Index: resources/assets/sass/components/authentication.scss
===================================================================
--- resources/assets/sass/components/authentication.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/authentication.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,58 @@
+body.form-membership {
+   background-attachment: fixed;
+   background-size: cover;
+   padding: 3rem 0;
+
+
+   .form-wrapper {
+      background-color: white;
+      box-shadow: 0 3px 10px rgba(62,85,120,.045);
+      padding: 3rem;
+      border-radius: .5rem;
+      width: 430px;
+      margin: 50px auto;
+      text-align: center;
+
+      #logo {
+         margin: 1rem 0 3rem;
+         img:not(.logo) {
+            display: none;
+         }
+      }
+
+      h5 {
+         text-align: center;
+         margin-bottom: 2rem;
+      }
+
+      form {
+         .form-control {
+            margin-bottom: 1.5rem;
+         }
+      }
+
+      hr {
+         margin: 2rem 0;
+      }
+   }
+}
+
+.user-page {
+
+   height: 100vh;
+   display: flex;
+   align-items: center;
+   justify-content: center;
+   overflow: auto;
+
+   .card {
+      width: 500px;
+      .card-title {
+
+      }
+      .card-body {
+         padding: 50px;
+      }
+   }
+
+}
Index: resources/assets/sass/components/avatar.scss
===================================================================
--- resources/assets/sass/components/avatar.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/avatar.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,153 @@
+.avatar {
+	display: inline-block;
+	margin-bottom: 0;
+	height: $default-avatar-size;
+	width: $default-avatar-size;
+	border-radius: 50%;
+
+	.avatar-title {
+		background: #d7d7d7;
+		width: 100%;
+		height: 100%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		text-transform: uppercase;
+		font-size: $default-font-size + 5;
+	}
+
+	& > a {
+		width: 100%;
+		height: 100%;
+		display: block;
+		transition: color .3s;
+		color: $color-primary;
+
+		&:hover, &:focus {
+			color: $default-text-color;
+		}
+	}
+
+	& > a > img, & > img {
+		width: 100%;
+		height: 100%;
+		object-fit: cover;
+	}
+
+	&.avatar-sm {
+		height: $default-avatar-size - 1;
+		width: $default-avatar-size - 1;
+
+		.avatar-title {
+			font-size: $default-font-size
+		}
+
+		&.avatar-state-primary, &.avatar-state-success, &.avatar-state-danger, &.avatar-state-warning, &.avatar-state-info, &.avatar-state-secondary, &.avatar-state-light, &.avatar-state-dark {
+			&:before {
+				width: .8rem;
+				height: .8rem;
+			}
+		}
+	}
+
+	&.avatar-lg {
+		height: $default-avatar-size + 1.5;
+		width: $default-avatar-size + 1.5;
+
+		.avatar-title {
+			font-size: $default-font-size + 15
+		}
+
+		&.avatar-state-primary, &.avatar-state-success, &.avatar-state-danger, &.avatar-state-warning, &.avatar-state-info, &.avatar-state-secondary, &.avatar-state-light, &.avatar-state-dark {
+			&:before {
+				width: 1.3rem;
+				height: 1.3rem;
+				right: 4px;
+			}
+		}
+	}
+
+	&.avatar-xl {
+		height: $default-avatar-size + 2.8;
+		width: $default-avatar-size + 2.8;
+
+		.avatar-title {
+			font-size: $default-font-size + 25
+		}
+
+		&.avatar-state-primary, &.avatar-state-success, &.avatar-state-danger, &.avatar-state-warning, &.avatar-state-info, &.avatar-state-secondary, &.avatar-state-light, &.avatar-state-dark {
+			&:before {
+				width: 1.6rem;
+				height: 1.6rem;
+				top: 3px;
+				right: 3px;
+			}
+		}
+	}
+
+	&.avatar-state-primary, &.avatar-state-success, &.avatar-state-danger, &.avatar-state-warning, &.avatar-state-info, &.avatar-state-secondary, &.avatar-state-light, &.avatar-state-dark {
+		position: relative;
+
+		&:before {
+			content: "";
+			position: absolute;
+			display: block;
+			width: 1rem;
+			height: 1rem;
+			border-radius: 50%;
+			top: 0px;
+			right: 0px;
+			border: 3px solid white;
+		}
+	}
+
+	&.avatar-state-primary:before {
+		background: $color-primary;
+	}
+
+	&.avatar-state-success:before {
+		background: $color-success;
+	}
+
+	&.avatar-state-danger:before {
+		background: $color-danger;
+	}
+
+	&.avatar-state-warning:before {
+		background: $color-warning;
+	}
+
+	&.avatar-state-info:before {
+		background: $color-info;
+	}
+
+	&.avatar-state-secondary:before {
+		background: $color-secondary;
+	}
+
+	&.avatar-state-light:before {
+		background: $color-light;
+	}
+
+	&.avatar-state-dark:before {
+		background: $color-dark;
+	}
+}
+
+.avatar-group {
+	display: inline-flex;
+
+	.avatar {
+		margin-right: -1rem;
+        border: 2px solid white;
+
+		&:last-child {
+			margin-right: 0;
+		}
+
+		&:hover {
+			position: relative;
+			z-index: 1;
+		}
+	}
+}
Index: resources/assets/sass/components/badge.scss
===================================================================
--- resources/assets/sass/components/badge.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/badge.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,38 @@
+.badge {
+   padding: 5px 10px;
+   font-size: $default-font-size - 3;
+   &.badge-success {
+      background: $color-success;
+   }
+   &.badge-danger {
+      background: $color-danger;
+   }
+   &.badge-secondary {
+      background: $color-secondary;
+   }
+   &.badge-info {
+      background: $color-info;
+   }
+   &.badge-warning {
+      background: $color-warning;
+   }
+   &.badge-dark {
+      background: $color-dark;
+   }
+   &.badge-primary {
+      background: $color-primary;
+   }
+   &.badge-light {
+      background: $color-light;
+   }
+}
+
+.btn {
+   position: relative;
+   .badge {
+      padding: 2px 6px;
+      right: 7px;
+      top: -7px;
+      position: absolute;
+   }
+}
Index: resources/assets/sass/components/body.scss
===================================================================
--- resources/assets/sass/components/body.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/body.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+body {
+    font-family: 'Inter', sans-serif;
+    position: relative;
+    background-color: #f8fafb;
+    font-size: 15px;
+    color: #505050;
+
+    &.no-scroll {
+        overflow: hidden;
+    }
+}
Index: resources/assets/sass/components/breadcrumb.scss
===================================================================
--- resources/assets/sass/components/breadcrumb.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/breadcrumb.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,24 @@
+.breadcrumb {
+    background: none;
+    padding: 0;
+    margin-bottom: 30px;
+
+    .breadcrumb-item {
+        & + .breadcrumb-item::before {
+            font-family: 'themify';
+            content: "\e649";
+            font-size: 10px;
+            margin-right: 0;
+        }
+
+        &:before {
+            font-family: 'themify';
+            content: "\e69b";
+            margin-right: .5rem
+        }
+
+        &.active {
+            color: $color-primary
+        }
+    }
+}
Index: resources/assets/sass/components/button.scss
===================================================================
--- resources/assets/sass/components/button.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/button.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,546 @@
+@mixin btn($color) {
+	background: $color;
+	border-color: $color;
+
+	&:not(:disabled):not(.disabled):hover,
+	&:not(:disabled):not(.disabled):focus,
+	&:not(:disabled):not(.disabled):active {
+		background: darken($color, 10%);
+		border-color: darken($color, 10%);
+	}
+
+	&:not(:disabled):not(.disabled):focus {
+		box-shadow: 0 0 0 0.2rem rgba($color, 0.4) !important;
+	}
+	@include btn-pulse($color);
+}
+
+@mixin btn-gradient($color) {
+	background: linear-gradient(20deg, lighten($color, 15%), darken($color, 10%));
+	border-color: transparent;
+	color: white;
+
+	&:not(:disabled):not(.disabled):hover,
+	&:not(:disabled):not(.disabled):focus,
+	&:not(:disabled):not(.disabled):active {
+		background: linear-gradient(20deg, $color, darken($color, 10%));
+		border-color: transparent;
+	}
+
+	&:not(:disabled):not(.disabled):focus {
+		box-shadow: 0 0 0 0.2rem rgba($color, 0.5);
+	}
+	@include btn-pulse($color);
+}
+
+@mixin btn-outline($color) {
+	background: none;
+	border-color: $color;
+	color: darken($color, 5%);
+	border-width: 1px;
+
+	&:not(:disabled):not(.disabled):hover {
+		background: $color;
+		border-color: $color;
+		color: white;
+	}
+
+	&:not(:disabled):not(.disabled):focus,
+	&:not(:disabled):not(.disabled):active {
+		background: darken($color, 12%);
+		border-color: darken($color, 12%);
+		color: white;
+	}
+	&:not(:disabled):not(.disabled):focus {
+		box-shadow: 0 0 0 0.2rem rgba($color, 0.4);
+	}
+	@include btn-pulse($color);
+}
+
+@mixin btn-light($color) {
+	background: rgba($color, 0.3);
+	border-color: transparent;
+	color: darken($color, 18%);
+
+	&:not(:disabled):not(.disabled):hover,
+	&:not(:disabled):not(.disabled):focus,
+	&:not(:disabled):not(.disabled):active {
+		background: rgba($color, 0.5);
+		border-color: transparent;
+	}
+
+	&:not(:disabled):not(.disabled):focus {
+		box-shadow: 0 0 0 0.2rem rgba($color, 0.2);
+	}
+	@include btn-pulse(rgba($color, 0.3));
+}
+
+@mixin btn-pulse($color) {
+	&.btn-pulse:not(:disabled):not(.disabled) {
+		box-shadow: 0 0 0 0 rgba($color, 0.9) !important;
+		-webkit-animation: pulse 1.5s infinite !important;
+	}
+	&:hover {
+		-webkit-animation: none;
+	}
+}
+
+a {
+	color: lighten(black, 40%);
+	text-decoration: none;
+	transition: color .2s;
+
+	&:hover {
+		color: black;
+		text-decoration: none;
+	}
+
+	&.link-1 {
+		color: $color-primary;
+
+		&:hover, &:focus {
+			color: rgba($color-primary, .8);
+		}
+	}
+
+	&.link-2 {
+		color: black;
+
+		&:hover, &:focus {
+			color: $color-primary
+		}
+	}
+
+	&.link-3 {
+		color: white;
+
+		&:hover, &:focus {
+			color: $color-primary
+		}
+	}
+
+	&:not(.active.list-group-item), &:not(.btn):hover, &:not(.btn):active, &:not(.btn):focus {
+		text-decoration: none !important;
+		color: black;
+		outline: none;
+	}
+
+	&.btn {
+		&:hover, &:active, &:focus {
+			text-decoration: none !important;
+		}
+	}
+
+	&[href="#next"], &[href="#previous"] {
+		@extend .btn-primary
+	}
+}
+
+.page-link {
+	color: $color-primary;
+
+	&:not(:disabled):not(.disabled):focus {
+		box-shadow: 0 0 0 0.2rem rgba($color-primary, .3);
+	}
+}
+
+.btn {
+	font-size: $default-font-size;
+	width: auto;
+	display: inline-flex;
+	font-weight: 600;
+	align-items: center;
+	padding: 10px 15px;
+	line-height: $default-font-size;
+	border-radius: .5rem;
+
+	svg {
+		width: 14px !important;
+		height: 14px !important;
+	}
+
+	&[data-toggle="dropdown"] {
+		align-items: center;
+	}
+
+	&.btn-sm {
+		padding: 5px 10px;
+		font-size: $default-font-size - 1;
+	}
+
+	&.btn-lg {
+		padding: 15px 20px;
+		font-size: $default-font-size + 3;
+	}
+
+	&.btn-block {
+		width: 100%;
+		justify-content: center;
+	}
+
+	&.btn-square {
+		border-radius: 0;
+	}
+
+	&.btn-rounded {
+		border-radius: 50px;
+		padding: 10px 20px;
+
+		&.btn-sm {
+			padding: 5px 15px;
+			font-size: $default-font-size - 1;
+		}
+
+		&.btn-lg {
+			padding: 20px 30px;
+			font-size: $default-font-size + 3;
+		}
+	}
+
+	&.btn-floating {
+		height: 35px;
+		width: 35px;
+		padding: 0;
+		justify-content: center;
+		border-radius: 50%;
+
+		&.btn-sm {
+			height: 30px;
+			width: 30px;
+		}
+
+		&.btn-lg {
+			height: 50px;
+			width: 50px;
+		}
+	}
+
+	&.btn-uppercase {
+		text-transform: uppercase;
+		font-size: $default-font-size - 2;
+		letter-spacing: 1px;
+		align-items: center;
+		font-weight: 600;
+
+		&.btn-sm {
+			font-size: $default-font-size - 3;
+		}
+
+		&.btn-lg {
+			font-size: $default-font-size;
+		}
+	}
+
+	&.btn-shadow {
+		box-shadow: 0px 3px 4px 1px rgba(black, 0.3);
+
+		&:focus,
+		&:active {
+			box-shadow: 0px 4px 6px 1px rgba(black, 0.3) !important;
+		}
+	}
+
+	&.btn-primary {
+		@include btn($color-primary);
+	}
+
+	&.btn-gradient-primary {
+		@include btn-gradient($color-primary);
+	}
+
+	&.btn-light-primary {
+		@include btn-light($color-primary);
+	}
+
+	&.btn-outline-primary {
+		@include btn-outline($color-primary);
+	}
+
+	&.btn-secondary {
+		@include btn($color-secondary);
+	}
+
+	&.btn-gradient-secondary {
+		@include btn-gradient($color-secondary);
+	}
+
+	&.btn-light-secondary {
+		@include btn-light($color-secondary);
+	}
+
+	&.btn-outline-secondary {
+		@include btn-outline($color-secondary);
+	}
+
+	&.btn-success {
+		@include btn($color-success);
+	}
+
+	&.btn-gradient-success {
+		@include btn-gradient($color-success);
+	}
+
+	&.btn-light-success {
+		@include btn-light($color-success);
+	}
+
+	&.btn-outline-success {
+		@include btn-outline($color-success);
+	}
+
+	&.btn-danger {
+		@include btn($color-danger);
+	}
+
+	&.btn-gradient-danger {
+		@include btn-gradient($color-danger);
+	}
+
+	&.btn-light-danger {
+		@include btn-light($color-danger);
+	}
+
+	&.btn-outline-danger {
+		@include btn-outline($color-danger);
+	}
+
+	&.btn-warning {
+		@include btn($color-warning);
+	}
+
+	&.btn-gradient-warning {
+		@include btn-gradient($color-warning);
+		color: #212529;
+	}
+
+	&.btn-light-warning {
+		@include btn-light($color-warning);
+	}
+
+	&.btn-outline-warning {
+		@include btn-outline($color-warning);
+
+		&:not(:disabled):not(.disabled):hover,
+		&:not(:disabled):not(.disabled):focus,
+		&:not(:disabled):not(.disabled):active {
+			color: #212529;
+		}
+	}
+
+	&.btn-info {
+		@include btn($color-info);
+	}
+
+	&.btn-gradient-info {
+		@include btn-gradient($color-info);
+	}
+
+	&.btn-light-info {
+		@include btn-light($color-info);
+	}
+
+	&.btn-outline-info {
+		@include btn-outline($color-info);
+	}
+
+	&.btn-light {
+		@include btn($color-light);
+	}
+
+	&.btn-gradient-light {
+		@include btn-gradient($color-light);
+		color: inherit;
+	}
+
+	&.btn-outline-light {
+		@include btn-outline($color-light);
+		color: #212529;
+
+		&:not(:disabled):not(.disabled):hover,
+		&:not(:disabled):not(.disabled):focus,
+		&:not(:disabled):not(.disabled):active {
+			color: #212529;
+		}
+	}
+
+	&.btn-dark {
+		@include btn($color-dark);
+	}
+
+	&.btn-gradient-dark {
+		@include btn-gradient($color-dark);
+	}
+
+	&.btn-light-dark {
+		@include btn-light($color-dark);
+	}
+
+	&.btn-outline-dark {
+		@include btn-outline($color-dark);
+	}
+
+	&.btn-facebook {
+		@include btn($color-facebook);
+		color: white;
+	}
+
+	&.btn-outline-facebook {
+		@include btn-outline($color-facebook);
+	}
+
+	&.btn-google {
+		@include btn($color-google);
+		color: white;
+	}
+
+	&.btn-outline-google {
+		@include btn-outline($color-google);
+	}
+
+	&.btn-twitter {
+		@include btn($color-twitter);
+		color: white;
+	}
+
+	&.btn-outline-twitter {
+		@include btn-outline($color-twitter);
+	}
+
+	&.btn-linkedin {
+		@include btn($color-linkedin);
+		color: white;
+	}
+
+	&.btn-outline-linkedin {
+		@include btn-outline($color-linkedin);
+	}
+
+	&.btn-whatsapp {
+		@include btn($color-whatsapp);
+		color: white;
+	}
+
+	&.btn-outline-whatsapp {
+		@include btn-outline($color-whatsapp);
+	}
+
+	&.btn-instagram {
+		@include btn($color-instagram);
+		color: white;
+	}
+
+	&.btn-outline-instagram {
+		@include btn-outline($color-instagram);
+	}
+
+	&.btn-dribbble {
+		@include btn($color-dribbble);
+		color: white;
+	}
+
+	&.btn-outline-dribbble {
+		@include btn-outline($color-dribbble);
+	}
+
+	&.btn-youtube {
+		@include btn($color-youtube);
+		color: white;
+	}
+
+	&.btn-outline-youtube {
+		@include btn-outline($color-youtube);
+	}
+
+	&.btn-github {
+		@include btn($color-github);
+		color: white;
+	}
+
+	&.btn-outline-github {
+		@include btn-outline($color-github);
+	}
+
+	&.btn-behance {
+		@include btn($color-behance);
+		color: white;
+	}
+
+	&.btn-outline-behance {
+		@include btn-outline($color-behance);
+	}
+
+	&.btn-skype {
+		@include btn($color-skype);
+		color: white;
+	}
+
+	&.btn-outline-skype {
+		@include btn-outline($color-skype);
+	}
+
+	&.btn-yahoo {
+		@include btn($color-yahoo);
+		color: white;
+	}
+
+	&.btn-outline-yahoo {
+		@include btn-outline($color-yahoo);
+	}
+
+	&.btn-apple,
+	&.btn-google-play {
+		border-radius: 7px;
+
+		img {
+			width: 35px;
+			margin-right: 10px;
+		}
+
+		i {
+			font-size: 40px;
+			margin-right: 10px;
+		}
+
+		& > span {
+			display: flex;
+			flex-direction: column;
+			text-align: left;
+
+			& span:nth-child(2) {
+				font-size: 20px;
+				font-weight: 600;
+				margin-top: 5px;
+			}
+		}
+
+		&:hover,
+		&:active,
+		&:focus {
+			background: #040507;
+			color: white;
+		}
+	}
+
+	&.btn-apple {
+		border: 1px solid #040507;
+		color: #040507;
+	}
+
+	&.btn-google-play {
+		background: #040507;
+		color: white;
+
+		& > span {
+			& span:nth-child(1) {
+				text-transform: uppercase;
+				font-size: $default-font-size - 2;
+			}
+		}
+	}
+}
+
+@keyframes pulse {
+	to {
+		box-shadow: 0 0 0 10px rgba(232, 76, 61, 0);
+	}
+}
Index: resources/assets/sass/components/calendar.scss
===================================================================
--- resources/assets/sass/components/calendar.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/calendar.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,133 @@
+#external-events {
+   .fc-event {
+      border: none;
+      background: none;
+      color: $default-text-color;
+      font-size: $default-font-size;
+      cursor: move;
+      i {
+         margin-right: 10px;
+      }
+   }
+}
+
+.fc {
+   .fc-center {
+      h2 {
+         font-weight: 400;
+         font-size: $default-font-size + 5;
+         color: #828282
+      }
+   }
+   .fc-event {
+      background: $color-primary;
+      color:white !important;
+      border: none;
+      border-radius: 0;
+      margin: 0 3px;
+      padding: 0px 4px;
+      font-size: 11px;
+      line-height: normal;
+      &:hover {
+         background: #0151ac;
+      }
+      &.bg-danger {
+         &:hover {
+            background: #eb3030 !important;
+         }
+      }
+      &.bg-success {
+         &:hover {
+            background: #00b43d !important;
+         }
+      }
+      &.bg-info {
+         &:hover {
+            background: #1fa1d1 !important;
+         }
+      }
+      &.bg-warning {
+         &:hover {
+            background: #eba71f !important;
+         }
+      }
+   }
+   .fc-list-table {
+      .fc-list-item {
+         &.bg-danger {
+            &:hover td {
+               background: $color-danger!important;
+            }
+            .fc-event-dot {
+               background: white!important;
+            }
+         }
+         &.bg-success {
+            &:hover td {
+               background: $color-success!important;
+            }
+            .fc-event-dot {
+               background: white!important;
+            }
+         }
+         &.bg-info {
+            &:hover td {
+               background: $color-info!important;
+            }
+            .fc-event-dot {
+               background: white!important;
+            }
+         }
+         &.bg-warning {
+            &:hover td {
+               background: $color-warning!important;
+            }
+            .fc-event-dot {
+               background: white!important;
+            }
+         }
+         &.bg-primary {
+            &:hover td {
+               background: $color-primary!important;
+            }
+            .fc-event-dot {
+               background: white!important;
+            }
+         }
+         &.bg-secondary {
+            &:hover td {
+               background: $color-secondary!important;
+            }
+            .fc-event-dot {
+               background: white!important;
+            }
+         }
+         &.bg-dark {
+            &:hover td {
+               background: $color-dark!important;
+            }
+            .fc-event-dot {
+               background: white!important;
+            }
+         }
+      }
+   }
+   .fc-state-default {
+      @extend .btn-light;
+      background-image: none;
+      border: none;
+      box-shadow: none;
+      text-shadow: none;
+      &.fc-state-active {
+         background: $color-primary;
+         color: white;
+      }
+   }
+   .fc-event-dot {
+      background: #cdcdcd !important;
+   }
+}
+
+.fc-toolbar .fc-state-active, .fc-toolbar .ui-state-active {
+   z-index: 2;
+}
Index: resources/assets/sass/components/card.scss
===================================================================
--- resources/assets/sass/components/card.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/card.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,79 @@
+.card {
+    margin-bottom: 1.875rem;
+    position: relative;
+    background-color: white;
+    border-radius: $default-border-radius;
+    border: none;
+    box-shadow: 0 4px 25px 0 rgba(0,0,0,.1);
+
+    &.bg-primary .card-header, &.bg-secondary .card-header, &.bg-success .card-header, &.bg-danger .card-header, &.bg-warning .card-header, &.bg-info .card-header, &.bg-dark .card-header {
+        border-bottom: 1px solid rgba(235, 235, 235, 0.40);
+    }
+
+    .card-header, .card-footer {
+        border: none;
+        background: none;
+        font-size: $default-font-size - 1;
+        font-weight: 600;
+        padding: 10px 20px;
+    }
+
+    .card-header {
+        margin-bottom: 0;
+        border-bottom: $border-style;
+    }
+
+    .card-footer {
+        border-top: 1px solid #ebebeb;
+    }
+
+    .card-body {
+        padding: 1.5rem;
+
+        h1.card-title, h2.card-title, h3.card-title, h4.card-title, h5.card-title, h6.card-title {
+            margin-bottom: 2rem;
+            font-size: 1rem;
+            font-weight: 600;
+
+            .dropdown {
+                & * {
+                    letter-spacing: normal;
+                    text-transform: none;
+                }
+            }
+        }
+    }
+
+    .card-scroll {
+        height: 300px;
+        overflow: auto;
+    }
+
+    &.purple {
+        height: 120px;
+        background: linear-gradient(200deg, #8a8ded, #9c9dc6);
+    }
+
+    &.blue {
+        height: 120px;
+        background: linear-gradient(200deg, #6bc5e7, #bcd7ff);
+    }
+
+    &.green {
+        height: 120px;
+        background: linear-gradient(200deg, #77df75, #b5e7a0);
+    }
+
+    &.orange {
+        height: 120px;
+        background: linear-gradient(200deg, #ffc033, #ffc49d);
+    }
+
+    & > .table-responsive .table td, & > .table-responsive .table th {
+        padding: .75rem 1.5rem;
+    }
+}
+
+.card-group, .card-columns {
+    margin-bottom: 30px;
+}
Index: resources/assets/sass/components/chat.scss
===================================================================
--- resources/assets/sass/components/chat.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/chat.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,177 @@
+.chat-app {
+    overflow: hidden;
+    padding-bottom: 30px;
+
+    .content-footer {
+        display: none;
+    }
+
+    &.horizontal-navigation {
+        .chat-block {
+            height: calc(100vh - #{$header-height + 60px + $header-height - 20px});
+        }
+
+        .layout-wrapper .content-wrapper .content-body .content {
+            padding-top: $header-height + 30px + $header-height - 20px;
+        }
+    }
+}
+
+.chat-block {
+    height: calc(100vh - #{$header-height + 60px});
+    @extend .card;
+    border-radius: $default-border-radius;
+    overflow: hidden;
+    margin-bottom: 0;
+
+    .chat-sidebar {
+        padding: 1.5rem;
+        height: 100%;
+        display: flex;
+        flex-direction: column;
+        background-color: #f8fafb;
+
+        .chat-sidebar-header {
+            form {
+                margin: 1.5rem 0;
+            }
+        }
+
+        .chat-sidebar-content {
+            flex: 1;
+            height: 100%;
+            display: flex;
+            flex-direction: column;
+            overflow: auto;
+
+            .list-group {
+                .list-group-item {
+                    background: white;
+                    border-radius: $default-border-radius;
+                    border: 1px solid transparent;
+                    margin-bottom: 1rem;
+
+                    &.active {
+                        color: black;
+                        border-color: $color-primary
+                    }
+                }
+            }
+        }
+    }
+
+    .chat-content {
+        display: flex;
+        flex-direction: column;
+        height: 100%;
+
+        .mobile-chat-close-btn {
+            display: none;
+        }
+
+        .chat-header {
+            padding: 1.5rem;
+        }
+
+        .messages {
+            padding: 1.5rem;
+            display: flex;
+            flex-direction: column;
+            align-items: flex-start;
+            flex: 1;
+            overflow-x: hidden;
+
+            .message-item {
+                margin-bottom: 20px;
+                padding-left: 10px;
+                display: flex;
+                align-items: center;
+                position: relative;
+
+                .time {
+                    margin-left: 1rem;
+                }
+
+                img {
+                    max-width: 30%;
+                    border-radius: .50rem;
+                }
+
+                &:not(.message-media):not(.message-item-divider):before {
+                    content: '';
+                    border: 10px solid transparent;
+                    border-right-color: #f0f0f0;
+                    position: absolute;
+                    top: 8px;
+                    left: -10px;
+                    z-index: 1;
+                }
+
+                .message-item-content {
+                    max-width: 75%;
+                    background-color: #f0f0f0;
+                    padding: 7px 15px;
+                    line-height: 1.5rem;
+                    border-radius: .50rem;
+                    position: relative;
+                    z-index: 2;
+                }
+
+                &.me {
+                    flex-direction: row-reverse;
+                    margin-left: auto;
+                    padding-left: 0px;
+                    padding-right: 10px;
+
+                    .time {
+                        margin-left: 0;
+                        margin-right: 1rem;
+                    }
+
+                    &:not(.message-item-divider):before {
+                        left: auto;
+                        right: -10px;
+                        border-left-color: $color-primary;
+                        border-right-color: transparent;
+
+                    }
+
+                    .message-item-content {
+                        background-color: $color-primary;
+                        color: rgba(white, .9);
+                    }
+                }
+
+                &.message-item-divider {
+                    width: 100%;
+                    display: flex;
+
+                    span {
+                        @extend .small;
+                        @extend .text-muted;
+                        padding: 0 10px;
+                        user-select: none;
+                    }
+
+                    &:before, &:after {
+                        content: '';
+                        display: block;
+                        height: 1px;
+                        background-color: #f0f0f0;
+                        flex: 1;
+                    }
+                }
+            }
+        }
+
+        .chat-footer {
+            padding: 1.5rem;
+
+            .chat-footer-buttons {
+                button {
+                    margin-left: .5rem;
+                }
+            }
+        }
+    }
+}
Index: resources/assets/sass/components/collapse.scss
===================================================================
--- resources/assets/sass/components/collapse.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/collapse.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,6 @@
+.collapse {
+   .card {
+      border: 1px solid #e1e1e1;
+      box-shadow: none;
+   }
+}
Index: resources/assets/sass/components/color.scss
===================================================================
--- resources/assets/sass/components/color.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/color.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,277 @@
+.bg-primary {
+   background: $color-primary !important;
+   color: white !important;
+}
+
+.bg-primary-bright {
+   background: $color-primary-bright !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: rgba(11,91,182,.3) !important;
+      }
+   }
+}
+
+.bg-primary-gradient {
+   background: linear-gradient(230deg, $color-primary, lighten($color-primary, 15%)) !important;
+   color: white !important;
+}
+
+.bg-info {
+   background: $color-info !important;
+   color: white !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: lighten($color-info, 10%) !important;
+      }
+   }
+}
+
+.bg-info-bright {
+   background: $color-info-bright !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: darken($color-info-bright, 5%) !important;
+      }
+   }
+}
+
+.bg-info-gradient {
+   background: linear-gradient(230deg, $color-info, lighten($color-info, 15%)) !important;
+   color: white !important;
+}
+
+.bg-secondary {
+   background: $color-secondary !important;
+   color: white !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: lighten($color-secondary, 10%) !important;
+      }
+   }
+}
+
+.bg-secondary-bright {
+   background: $color-secondary-bright !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: darken($color-secondary-bright, 5%) !important;
+      }
+   }
+}
+
+.bg-secondary-gradient {
+   background: linear-gradient(230deg, $color-secondary, lighten($color-secondary, 15%)) !important;
+   color: white !important;
+}
+
+.bg-success {
+   background: $color-success !important;
+   color: white !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: lighten($color-success, 10%) !important;
+      }
+   }
+}
+
+.bg-success-bright {
+   background: $color-success-bright !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: darken($color-success-bright, 5%) !important;
+      }
+   }
+}
+
+.bg-success-gradient {
+   background: linear-gradient(230deg, $color-success, lighten($color-success, 15%)) !important;
+   color: white !important;
+}
+
+.bg-danger {
+   background: $color-danger !important;
+   color: white !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: lighten($color-danger, 10%) !important;
+      }
+   }
+}
+
+.bg-danger-bright {
+   background: $color-danger-bright !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: darken($color-danger-bright, 5%) !important;
+      }
+   }
+}
+
+.bg-danger-gradient {
+   background: linear-gradient(230deg, $color-danger, lighten($color-danger, 15%)) !important;
+   color: white !important;
+}
+
+.bg-warning {
+   background: $color-warning !important;
+   color: white !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: lighten($color-warning, 10%) !important;
+      }
+   }
+}
+
+.bg-warning-bright {
+   background: $color-warning-bright !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: darken($color-warning-bright, 5%) !important;
+      }
+   }
+}
+
+.bg-warning-gradient {
+   background: linear-gradient(230deg, $color-warning, lighten($color-warning, 15%)) !important;
+   color: white !important;
+}
+
+.bg-light {
+   background: $color-light !important;
+}
+
+.bg-dark {
+   background: $color-dark !important;
+   color: white !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: lighten($color-dark, 10%) !important;
+      }
+   }
+}
+
+.bg-dark-bright {
+   background: $color-dark-bright !important;
+   &.bg-hover {
+      transition: background .2s;
+      &:hover {
+         background: darken($color-dark-bright, 5%) !important;
+      }
+   }
+}
+
+.bg-dark-gradient {
+   background: linear-gradient(230deg, $color-dark, lighten($color-dark, 15%)) !important;
+   color: white !important;
+}
+
+.bg-facebook {
+   background: $color-facebook !important;
+   color: white !important;
+}
+
+.bg-twitter {
+   background: $color-twitter !important;
+   color: white !important;
+}
+
+.bg-linkedin {
+   background: $color-linkedin !important;
+   color: white !important;
+}
+
+.bg-whatsapp {
+   background: $color-whatsapp !important;
+   color: white !important;
+}
+
+.bg-instagram {
+   background: $color-instagram !important;
+   color: white !important;
+}
+
+.bg-dribbble {
+   background: $color-dribbble !important;
+   color: white !important;
+}
+
+.bg-google {
+   background: $color-google !important;
+   color: white !important;
+}
+
+.bg-youtube {
+   background: $color-youtube !important;
+   color: white !important;
+}
+
+// texts
+
+.text-primary {
+   color: $color-primary !important;
+}
+
+.text-secondary {
+   color: $color-secondary !important;
+}
+
+.text-info {
+   color: $color-info !important;
+}
+
+.text-success {
+   color: $color-success !important;
+}
+
+.text-danger {
+   color: $color-danger !important;
+}
+
+.text-warning {
+   color: $color-warning !important;
+}
+
+.text-light {
+   color: $color-light!important;
+}
+
+.text-facebook {
+   color: $color-facebook!important;
+}
+
+.text-twitter {
+   color: $color-twitter!important;
+}
+
+.text-google {
+   color: $color-google!important;
+}
+
+.text-linkedin {
+   color: $color-linkedin!important;
+}
+
+.text-instagram {
+   color: $color-instagram!important;
+}
+
+.text-whatsapp {
+   color: $color-whatsapp!important;
+}
+
+.text-dribbble {
+   color: $color-dribbble!important;
+}
Index: resources/assets/sass/components/colorpicker.scss
===================================================================
--- resources/assets/sass/components/colorpicker.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/colorpicker.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,27 @@
+.colorpicker {
+   &.dropdown-menu {
+      visibility: visible;
+      opacity: 1;
+      height: auto;
+   }
+}
+
+.colorpicker-2x .colorpicker-saturation {
+   width: 200px;
+   height: 200px;
+}
+
+.colorpicker-2x .colorpicker-hue,
+.colorpicker-2x .colorpicker-alpha {
+   width: 30px;
+   height: 200px;
+}
+
+.colorpicker-2x .colorpicker-color,
+.colorpicker-2x .colorpicker-color div {
+   height: 30px;
+}
+
+.colorpicker.colorpicker-hidden {
+   display: none !important;
+}
Index: resources/assets/sass/components/datepicker.scss
===================================================================
--- resources/assets/sass/components/datepicker.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/datepicker.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,12 @@
+.daterangepicker {
+   td.active {
+      background: $color-primary;
+      &:hover {
+         background: $color-primary;
+      }
+   }
+}
+
+.daterangepicker .ranges li.active {
+   background: $color-primary;
+}
Index: resources/assets/sass/components/demo.scss
===================================================================
--- resources/assets/sass/components/demo.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/demo.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,70 @@
+.demo-icon-list {
+	height: 100px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	font-size: 25px
+}
+
+@media (max-width: 768px) {
+	.theme-switcher {
+		display: none;
+	}
+}
+
+@media (min-width: 768px) {
+	.theme-switcher {
+		opacity: 0;
+		display: flex;
+		align-items: center;
+		position: fixed;
+		right: -250px;
+		top: 50%;
+		transform: translate(0, -50%);
+		user-select: none;
+		z-index: 9999;
+		transition: right .3s;
+
+		&.open {
+			right: 0;
+		}
+
+		.theme-switcher-button {
+			background-color: $color-primary;
+			color: white;
+			padding: 12px 15px;
+			border-top-left-radius: 5px;
+			border-bottom-left-radius: 5px;
+			cursor: pointer;
+
+			i {
+				font-size: 22px;
+				animation-name: spin;
+				animation-duration: 3000ms;
+				animation-iteration-count: infinite;
+				animation-timing-function: linear;
+			}
+		}
+
+		.theme-switcher-panel {
+			width: 250px;
+
+			.card {
+				margin-bottom: 0;
+				border: 1px solid $color-primary;
+				border-right: none;
+				border-top-right-radius: 0;
+				border-bottom-right-radius: 0;
+			}
+		}
+	}
+
+	@keyframes spin {
+		from {
+			transform: rotate(0deg);
+		}
+		to {
+			transform: rotate(360deg);
+		}
+	}
+}
Index: resources/assets/sass/components/dropdown.scss
===================================================================
--- resources/assets/sass/components/dropdown.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/dropdown.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,94 @@
+.dropdown {
+	display: inline;
+}
+
+.dropdown-menu {
+	margin-top: -10px;
+	visibility: hidden;
+	opacity: 0;
+	height: 0;
+	display: block !important;
+	transition: margin-top .3s, opacity .3s;
+	border-top: 1px solid #eee !important;
+
+	ul.list-group {
+		max-height: 300px;
+	}
+
+	&.show {
+		margin-top: 0;
+		visibility: visible;
+		opacity: 1;
+		height: auto;
+	}
+}
+
+.dropdown-header {
+	font-size: inherit;
+	padding: 10px 20px;
+	border-bottom: 1px solid #f0f0f0;
+}
+
+.dropdown-body {
+	padding: 10px 20px;
+}
+
+.dropdown-menu {
+	border-radius: .5rem;
+	font-size: 14px;
+	border: none;
+	box-shadow: 0px 5px 10px -1px rgba(0, 0, 0, 0.15);
+	overflow: hidden;
+
+	&.dropdown-menu-big {
+		padding: 0;
+		width: 300px;
+	}
+
+	.dropdown-menu-body {
+		max-height: 400px;
+		overflow: auto;
+	}
+
+	.dropdown-menu-title {
+		background-color: $color-primary;
+		padding: 15px 20px;
+		color: white;
+		background-size: cover !important;
+		background-position: center !important;
+	}
+
+	.dropdown-menu-footer {
+		padding: 10px 20px;
+	}
+
+	ul {
+		li {
+			&.dropdown-menu-title {
+				background: red;
+
+				&:first-child {
+					margin-top: 0;
+				}
+
+				margin: 5px 0;
+				padding: 0px 20px 5px;
+				border-bottom: 1px solid #ebebeb
+			}
+		}
+	}
+
+	.dropdown-item {
+		&:hover, &:focus, &:active {
+			background: #f5f5f5;
+			text-decoration: none;
+			color: $color-primary
+		}
+	}
+}
+
+table {
+	.dropdown {
+		line-height: initial;
+	}
+}
Index: resources/assets/sass/components/error.scss
===================================================================
--- resources/assets/sass/components/error.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/error.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,31 @@
+body.error-page {
+	img {
+		width: 50%;
+		display: table;
+		margin: 50px auto;
+	}
+
+	.display-1 {
+		font-size: 10em
+	}
+}
+
+.error-page {
+	text-align: center;
+	height: calc(100vh - 120px);
+	display: flex;
+	align-items: center;
+	justify-content: center;
+
+	.error-page-item {
+		font-size: 14rem;
+		line-height: 14rem;
+		margin-left: -2rem;
+		text-shadow: -5px 1px 0px white;
+
+		&:nth-child(2) {
+			transform: translate(0, 10px);
+			display: inline-block;
+		}
+	}
+}
Index: resources/assets/sass/components/file-upload.scss
===================================================================
--- resources/assets/sass/components/file-upload.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/file-upload.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,4 @@
+.dropzone {
+   border-width: 1px;
+   border-color: $color-primary;
+}
Index: resources/assets/sass/components/footer.scss
===================================================================
--- resources/assets/sass/components/footer.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/footer.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,27 @@
+footer.content-footer {
+    padding: 15px 30px;
+    background-color: white;
+    box-shadow: 0 0 10px -8px rgba(0, 0, 0, 1.501961);
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-left: $navigation-width;
+
+    & * {
+        text-transform: uppercase;
+        letter-spacing: .5px;
+        font-size: 12px;
+    }
+
+    .nav {
+        a {
+            padding: 5px 0;
+            margin-left: 15px;
+
+            &:hover {
+                background: none !important;
+            }
+        }
+    }
+
+}
Index: resources/assets/sass/components/form-wizard.scss
===================================================================
--- resources/assets/sass/components/form-wizard.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/form-wizard.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,66 @@
+.wizard > .content {
+    min-height: auto;
+    margin: 0;
+    margin-bottom: 15px;
+    background: none;
+    padding: 0 !important;
+}
+
+.wizard {
+    .wizard-index {
+        background-color: rgba(black, .4);
+        height: 30px;
+        width: 30px;
+        border-radius: 50%;
+        display: inline-flex;
+        justify-content: center;
+        align-items: center;
+        color: #fff;
+        margin-right: 0.5rem;
+    }
+
+    .current {
+        .wizard-index {
+            background-color: rgba(white, .2);
+        }
+    }
+}
+
+.wizard > .actions > ul > li {
+    margin: 0;
+    margin-left: 10px;
+}
+
+.wizard > .content > .body {
+    float: none;
+    position: static;
+    width: auto;
+    height: auto;
+}
+
+.wizard > .steps {
+    margin-bottom: 1.5rem;
+}
+
+.wizard > .steps a, .wizard > .steps a:hover, .wizard > .steps a:active {
+    margin: 0;
+    margin-right: 10px;
+}
+
+.wizard > .steps .current a, .wizard > .steps .current a:hover, .wizard > .steps .current a:active {
+    background: $color-primary;
+}
+
+.wizard > .steps .error a, .wizard > .steps .error a:hover, .wizard > .steps .error a:active {
+    background: $color-danger;
+}
+
+.wizard > .steps .done a, .wizard > .steps .done a:hover, .wizard > .steps .done a:active {
+    background-color: $color-success;
+    color: white;
+}
+
+.wizard > .actions a, .wizard > .actions a:hover, .wizard > .actions a:active {
+    background-color: $color-success;
+    color: white;
+}
Index: resources/assets/sass/components/form.scss
===================================================================
--- resources/assets/sass/components/form.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/form.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,254 @@
+.form-control, .custom-select {
+	font-size: .875rem;
+	border-color: #e1e1e1;
+	border-radius: .50rem;
+
+	&:focus {
+		box-shadow: none;
+		border-color: rgba($color-primary, .8);
+	}
+}
+
+.form-control:not(.form-control-lg):not(.form-control-sm) {
+	height: calc(1.5em + .75rem + 3px)
+}
+
+.form-rounded {
+	border-radius: 50px;
+}
+
+.form-control-lg {
+	font-size: 1.10rem;
+}
+
+.form-control-sm {
+	font-size: .800rem;
+}
+
+.input-group-text {
+	border: none;
+}
+
+textarea {
+	min-height: 100px;
+	max-height: 500px
+}
+
+.custom-file-input:focus ~ .custom-file-label {
+	border-color: lighten($color-primary, 10%);
+	box-shadow: none;
+}
+
+.custom-control-input {
+	right: 0;
+}
+
+.custom-control-label {
+	line-height: 25px;
+}
+
+/* Checkboxes and Radios */
+.custom-checkbox, .custom-radio, .custom-switch {
+
+	.custom-control-input:checked ~ .custom-control-label::before {
+		border-color: $color-primary;
+		background-color: $color-primary;
+	}
+
+	.custom-control-input:focus ~ .custom-control-label::before {
+		box-shadow: 0 0 0 0.2rem rgba($color-primary, .30)
+	}
+
+	& .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+		border-color: lighten($color-primary, 18%);
+		background-color: lighten($color-primary, 18%);
+	}
+
+	&.custom-checkbox-secondary {
+		.custom-control-input:checked ~ .custom-control-label::before {
+			border-color: $color-secondary;
+			background-color: $color-secondary;
+		}
+
+		.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+			border-color: lighten($color-secondary, 18%);
+			background-color: lighten($color-secondary, 18%);
+		}
+
+		.custom-control-input:focus ~ .custom-control-label::before {
+			box-shadow: 0 0 0 0.2rem rgba($color-secondary, .30)
+		}
+	}
+
+	&.custom-checkbox-success {
+		.custom-control-input:checked ~ .custom-control-label::before {
+			border-color: $color-success;
+			background-color: $color-success;
+		}
+
+		.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+			border-color: lighten($color-success, 18%);
+			background-color: lighten($color-success, 18%);
+		}
+
+		.custom-control-input:focus ~ .custom-control-label::before {
+			box-shadow: 0 0 0 0.2rem rgba($color-success, .30)
+		}
+	}
+
+	&.custom-checkbox-danger {
+		.custom-control-input:checked ~ .custom-control-label::before {
+			border-color: $color-danger;
+			background-color: $color-danger;
+		}
+
+		.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+			border-color: lighten($color-danger, 18%);
+			background-color: lighten($color-danger, 18%);
+		}
+
+		.custom-control-input:focus ~ .custom-control-label::before {
+			box-shadow: 0 0 0 0.2rem rgba($color-danger, .30)
+		}
+	}
+
+	&.custom-checkbox-warning {
+		.custom-control-input:checked ~ .custom-control-label::before {
+			border-color: $color-warning;
+			background-color: $color-warning;
+		}
+
+		.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+			border-color: lighten($color-warning, 18%);
+			background-color: lighten($color-warning, 18%);
+		}
+
+		.custom-control-input:focus ~ .custom-control-label::before {
+			box-shadow: 0 0 0 0.2rem rgba($color-warning, .30)
+		}
+	}
+
+	&.custom-checkbox-info {
+		.custom-control-input:checked ~ .custom-control-label::before {
+			border-color: $color-info;
+			background-color: $color-info;
+		}
+
+		.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+			border-color: lighten($color-info, 18%);
+			background-color: lighten($color-info, 18%);
+		}
+
+		.custom-control-input:focus ~ .custom-control-label::before {
+			box-shadow: 0 0 0 0.2rem rgba($color-info, .30)
+		}
+	}
+
+	&.custom-checkbox-dark {
+		.custom-control-input:checked ~ .custom-control-label::before {
+			border-color: $color-dark;
+			background-color: $color-dark;
+		}
+
+		.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+			border-color: lighten($color-dark, 18%);
+			background-color: lighten($color-dark, 18%);
+		}
+
+		.custom-control-input:focus ~ .custom-control-label::before {
+			box-shadow: 0 0 0 0.2rem rgba($color-dark, .30)
+		}
+	}
+}
+
+.custom-checkbox {
+	&.custom-range-danger {
+		&::before {
+			background-color: $color-danger;
+		}
+
+		&::-webkit-slider-thumb:active {
+			background-color: lighten($color-danger, 18%);
+		}
+	}
+}
+
+.custom-range {
+	&::-webkit-slider-thumb {
+		background-color: $color-primary;
+	}
+
+	&::-webkit-slider-thumb:active {
+		background-color: lighten($color-primary, 18%);
+	}
+
+	&.custom-range-danger {
+		&::-webkit-slider-thumb {
+			background-color: $color-danger;
+		}
+
+		&::-webkit-slider-thumb:active {
+			background-color: lighten($color-danger, 18%);
+		}
+	}
+
+	&.custom-range-warning {
+		&::-webkit-slider-thumb {
+			background-color: $color-warning;
+		}
+
+		&::-webkit-slider-thumb:active {
+			background-color: lighten($color-warning, 18%);
+		}
+	}
+
+	&.custom-range-success {
+		&::-webkit-slider-thumb {
+			background-color: $color-success;
+		}
+
+		&::-webkit-slider-thumb:active {
+			background-color: lighten($color-success, 18%);
+		}
+	}
+
+	&.custom-range-secondary {
+		&::-webkit-slider-thumb {
+			background-color: $color-secondary;
+		}
+
+		&::-webkit-slider-thumb:active {
+			background-color: lighten($color-secondary, 18%);
+		}
+	}
+
+	&.custom-range-info {
+		&::-webkit-slider-thumb {
+			background-color: $color-info;
+		}
+
+		&::-webkit-slider-thumb:active {
+			background-color: lighten($color-info, 18%);
+		}
+	}
+
+	&.custom-range-light {
+		&::-webkit-slider-thumb {
+			background-color: $color-light;
+		}
+
+		&::-webkit-slider-thumb:active {
+			background-color: lighten($color-light, 18%);
+		}
+	}
+
+	&.custom-range-dark {
+		&::-webkit-slider-thumb {
+			background-color: $color-dark;
+		}
+
+		&::-webkit-slider-thumb:active {
+			background-color: lighten($color-dark, 18%);
+		}
+	}
+}
Index: resources/assets/sass/components/gallery.scss
===================================================================
--- resources/assets/sass/components/gallery.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/gallery.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,27 @@
+.isotope-item {
+    z-index: 2;
+}
+
+.isotope-hidden.isotope-item {
+    pointer-events: none;
+    z-index: 1;
+}
+
+.isotope,
+.isotope .isotope-item {
+    transition-duration: 0.8s;
+}
+
+.isotope {
+    transition-property: height, width;
+}
+
+.isotope .isotope-item {
+    transition-property: transform, opacity;
+}
+
+.gallery-container {
+    img {
+        width: 100%
+    }
+}
Index: resources/assets/sass/components/header.scss
===================================================================
--- resources/assets/sass/components/header.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/header.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,187 @@
+.header {
+    background-color: white;
+    z-index: 999;
+    display: flex;
+    height: $header-height;
+    box-shadow: 0px 5px 10px -10px rgba(0, 0, 0, 0.40);
+    position: fixed;
+    right: 0;
+    left: 0;
+    top: 0;
+
+    .avatar {
+        border-color: transparent;
+
+        &.avatar-state-success {
+            &:before {
+                border-color: $color-primary
+            }
+        }
+    }
+
+    .header-left {
+        width: $navigation-width;
+        padding-left: 30px;
+        display: flex;
+        align-items: center;
+
+        .navigation-toggler {
+            display: none;
+            margin-right: 15px;
+
+            a {
+                display: flex;
+                align-items: center;
+                justify-content: center;
+
+                svg {
+                    height: 30px;
+                    width: 30px;
+                }
+            }
+        }
+    }
+
+    .header-logo {
+        a {
+            height: $header-height;
+            display: flex;
+            align-items: center;
+
+            img:not(.logo) {
+                display: none;
+            }
+        }
+    }
+
+    .header-body {
+        padding: 0 30px;
+        position: relative;
+
+        .page-title {
+            h1, h2, h3, h4, h5, h6 {
+                margin-bottom: 0;
+                line-height: inherit;
+            }
+        }
+
+        display: flex;
+        align-items: center;
+        flex: auto;
+        justify-content: space-between;
+    }
+
+    form {
+        .input-group {
+            position: relative;
+
+            .form-control {
+                border: none;
+                background-color: rgba(white, .1);
+
+                &:focus {
+                    background-color: rgba(white, .2);
+                }
+            }
+
+            .input-group-append {
+                position: absolute;
+                right: 0;
+
+                button.btn {
+                    position: relative;
+                    z-index: 9;
+                    border-top-right-radius: 5px;
+                    border-bottom-right-radius: 5px;
+                    background-color: inherit;
+                    border: none;
+                    @extend a;
+
+                    &:hover {
+                        opacity: .7;
+                    }
+
+                    &:focus, &:active, &:hover {
+                        background-color: inherit;
+                        box-shadow: none !important;
+                    }
+                }
+            }
+        }
+    }
+
+    .header-toggler {
+        display: none;
+    }
+
+    [data-toggle="fullscreen"] {
+        .minimize {
+            display: none;
+        }
+    }
+
+    .active-fullscreen {
+        .minimize {
+            display: block;
+        }
+
+        .maximize {
+            display: none;
+        }
+    }
+
+    ul.navbar-nav {
+        flex-direction: row;
+        align-items: center;
+
+        li.nav-item {
+
+
+            a.nav-link {
+                line-height: 100%;
+                padding: 10px 15px;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+
+                &.nav-link-notify {
+                    position: relative;
+
+                    &:before {
+                        content: '';
+                        position: absolute;
+                        width: 6px;
+                        height: 6px;
+                        right: 0;
+                        border-radius: 50%;
+                        top: 3px;
+                        background: $color-danger;
+                        -webkit-animation: notify-pulse 1s infinite
+                    }
+                }
+
+                &:hover, &:focus {
+                    outline: none;
+                }
+            }
+        }
+
+        & + form.search {
+            margin-left: 1.5rem;
+        }
+    }
+
+    .dropdown-menu {
+        position: absolute;
+    }
+}
+
+@keyframes notify-pulse {
+    0% {
+        box-shadow: 0 0 0 0px rgba($color-danger, .7);
+    }
+    100% {
+        box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
+    }
+}
+
Index: resources/assets/sass/components/icon-block.scss
===================================================================
--- resources/assets/sass/components/icon-block.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/icon-block.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,141 @@
+.icon-block {
+  width: 40px;
+  height: 40px;
+  line-height: 40px;
+  display: inline-flex;
+  justify-content: center;
+  align-items: center;
+  background: #e1e1e1;
+  border-radius: 3px;
+  text-align: center;
+  color: black;
+  font-size: $default-font-size + 4;
+
+  &.icon-block-outline-white {
+    border: 2px solid white;
+    background: none;
+    color: white !important;
+  }
+
+  &.icon-block-outline-primary {
+    border: 2px solid $color-primary;
+    color: $color-primary !important;
+    background: none;
+  }
+
+  &.icon-block-outline-success {
+    border: 2px solid $color-success;
+    color: $color-success !important;
+    background: none;
+  }
+
+  &.icon-block-outline-danger {
+    border: 2px solid $color-danger;
+    color: $color-danger !important;
+    background: none;
+  }
+
+  &.icon-block-outline-info {
+    border: 2px solid $color-info;
+    color: $color-info !important;
+    background: none;
+  }
+
+  &.icon-block-outline-warning {
+    border: 2px solid $color-warning;
+    color: $color-warning !important;
+    background: none;
+  }
+
+  &.icon-block-outline-dark {
+    border: 2px solid $color-dark;
+    color: $color-dark !important;
+    background: none;
+  }
+
+  &.icon-block-outline-secondary {
+    border: 2px solid $color-secondary;
+    color: $color-secondary !important;
+    background: none;
+  }
+
+  &.icon-block-outline-facebook {
+    border: 2px solid $color-facebook;
+    color: $color-facebook !important;
+    background: none;
+  }
+
+  &.icon-block-outline-twitter {
+    border: 2px solid $color-twitter;
+    color: $color-twitter !important;
+    background: none;
+  }
+
+  &.icon-block-outline-linkedin {
+    border: 2px solid $color-linkedin;
+    color: $color-linkedin !important;
+    background: none;
+  }
+
+  &.icon-block-outline-whatsapp {
+    border: 2px solid $color-whatsapp;
+    color: $color-whatsapp !important;
+    background: none;
+  }
+
+  &.icon-block-outline-instagram {
+    border: 2px solid $color-instagram;
+    color: $color-instagram !important;
+    background: none;
+  }
+
+  &.icon-block-outline-dribbble {
+    border: 2px solid $color-dribbble;
+    color: $color-dribbble !important;
+    background: none;
+  }
+
+  &.icon-block-outline-google {
+    border: 2px solid $color-google;
+    color: $color-google !important;
+    background: none;
+  }
+
+  &.icon-block-outline-youtube {
+    border: 2px solid $color-youtube;
+    color: $color-youtube !important;
+    background: none;
+  }
+
+  &.icon-block-xl {
+    width: 70px;
+    height: 70px;
+    line-height: 70px;
+    font-size: $default-font-size + 14;
+  }
+
+  &.icon-block-lg {
+    width: 50px;
+    height: 50px;
+    line-height: 50px;
+    font-size: $default-font-size + 8;
+  }
+
+  &.icon-block-sm {
+    width: 30px;
+    height: 30px;
+    line-height: 30px;
+    font-size: $default-font-size;
+  }
+
+  &.icon-block-xs {
+    width: 20px;
+    height: 20px;
+    line-height: 20px;
+    font-size: $default-font-size - 2;
+  }
+
+  &.icon-block-floating {
+    border-radius: 50%;
+  }
+}
Index: resources/assets/sass/components/lightbox.scss
===================================================================
--- resources/assets/sass/components/lightbox.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/lightbox.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,23 @@
+.mfp-with-zoom .mfp-container,
+.mfp-with-zoom.mfp-bg {
+	opacity: 0;
+	-webkit-backface-visibility: hidden;
+	/* ideally, transition speed should match zoom duration */
+	-webkit-transition: all 0.3s ease-out;
+	-moz-transition: all 0.3s ease-out;
+	-o-transition: all 0.3s ease-out;
+	transition: all 0.3s ease-out;
+}
+
+.mfp-with-zoom.mfp-ready .mfp-container {
+	opacity: 1;
+}
+
+.mfp-with-zoom.mfp-ready.mfp-bg {
+	opacity: 0.8;
+}
+
+.mfp-with-zoom.mfp-removing .mfp-container,
+.mfp-with-zoom.mfp-removing.mfp-bg {
+	opacity: 0;
+}
Index: resources/assets/sass/components/list-group.scss
===================================================================
--- resources/assets/sass/components/list-group.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/list-group.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,81 @@
+.list-group {
+	.list-group-item {
+		&.list-group-item-primary {
+			background: $color-primary !important;
+			color: white !important;
+		}
+
+		&.list-group-item-primary-bright {
+			background: $color-primary-bright !important;
+			color: $color-primary !important;
+		}
+
+		&.list-group-item-secondary {
+			background: $color-secondary !important;
+			color: white !important;
+		}
+
+		&.list-group-item-secondary-bright {
+			background: $color-secondary-bright !important;
+			color: $color-secondary !important;
+		}
+
+		&.list-group-item-success {
+			background: $color-success !important;
+			color: white !important;
+		}
+
+		&.list-group-item-success-bright {
+			background: $color-success-bright !important;
+			color: $color-success !important;
+		}
+
+		&.list-group-item-danger {
+			background: $color-danger !important;
+			color: white !important;
+		}
+
+		&.list-group-item-danger-bright {
+			background: $color-danger-bright !important;
+			color: $color-danger !important;
+		}
+
+		&.list-group-item-warning {
+			background: $color-warning !important;
+			color: white !important;
+		}
+
+		&.list-group-item-warning-bright {
+			background: $color-warning-bright !important;
+			color: $color-warning !important;
+		}
+
+		&.list-group-item-info {
+			background: $color-info !important;
+			color: white !important;
+		}
+
+		&.list-group-item-info-bright {
+			background: $color-info-bright !important;
+			color: $color-info !important;
+		}
+
+		&.list-group-item-light {
+			background: $color-light !important;
+		}
+
+		&.list-group-item-dark {
+			background: $color-dark !important;
+			color: white !important;
+		}
+
+		&.list-group-item-dark-bright {
+			background: $color-dark-bright !important;
+			color: $color-dark !important;
+		}
+	}
+}
+
+.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
+	background-color: $color-primary;
+}
Index: resources/assets/sass/components/media-object.scss
===================================================================
--- resources/assets/sass/components/media-object.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/media-object.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,5 @@
+.media {
+	& > img, & > a > img {
+		width: 80px;
+	}
+}
Index: resources/assets/sass/components/modal.scss
===================================================================
--- resources/assets/sass/components/modal.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/modal.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,64 @@
+body.modal-open {
+	.modal.fade .modal-dialog {
+		transform: translate(0, 0) scale(.9);
+	}
+
+	.modal.show .modal-dialog {
+		transform: translate(0, 0) scale(1);
+	}
+}
+
+.modal {
+	.modal-dialog {
+		.modal-content {
+			border: none;
+			box-shadow: none;
+			border-radius: .5rem;
+
+			.modal-header {
+				height: 60px;
+				padding: 0 20px;
+				display: flex;
+				align-items: center;
+				background-color: #ebebeb;
+				border-bottom: none;
+
+				.modal-title {
+					font-size: $default-font-size + 3;
+					font-weight: 600;
+				}
+
+				button.close {
+					background-color: white;
+					text-shadow: none;
+					opacity: 1;
+					margin: 0;
+					font-size: 23px;
+					padding: 0;
+					width: 30px;
+					height: 30px;
+					display: flex;
+					border-radius: 50%;
+					align-items: center;
+					justify-content: center;
+
+					&:hover {
+						color: #646464;
+					}
+
+					& > * {
+						font-size: initial;
+					}
+				}
+			}
+
+			.modal-body {
+				padding: 1.5rem;
+			}
+
+			.modal-footer {
+				height: 60px;
+			}
+		}
+	}
+}
Index: resources/assets/sass/components/navigation.scss
===================================================================
--- resources/assets/sass/components/navigation.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/navigation.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,188 @@
+.navigation {
+    background-color: white;
+    z-index: 998;
+    width: $navigation-width;
+    box-shadow: 0 4px 25px 0 rgba(0,0,0,.1);
+    position: fixed;
+    display: flex;
+    flex-direction: row;
+    left: 0;
+    bottom:0;
+    top: $header-height;
+
+    .navigation-menu-tab {
+        border-right: 1px solid $border-style-color;
+        width: $navigation-tab-width;
+        display: flex;
+        flex-direction: column;
+        margin-right: 0;
+        padding: 10px;
+
+        .avatar {
+            border: none;
+        }
+
+        ul {
+            li {
+                margin-bottom: 5px;
+
+                a {
+                    display: flex;
+                    height: 50px;
+                    justify-content: center;
+                    align-items: center;
+                    border-radius: $default-border-radius;
+                    transition: all .3s;
+
+                    &:hover {
+                        color: $color-primary
+                    }
+
+                    &.active {
+                        color: white;
+                        background-color: $color-primary;
+                        box-shadow: 0px 5px 20px -14px $color-primary;
+                    }
+
+                    svg {
+                        width: 23px;
+                        height: 23px;
+                    }
+                }
+            }
+        }
+    }
+
+    .navigation-menu-body {
+        flex: 1;
+        display: flex;
+        flex-direction: column;
+        overflow: auto;
+
+        .navigation-menu-group {
+
+            & > div {
+                display: none;
+
+                &.open {
+                    display: block;
+                }
+            }
+        }
+
+        ul {
+            li {
+
+                &.navigation-divider {
+                    padding: 10px 30px;
+                    text-transform: uppercase;
+                    font-size: 12px;
+                    letter-spacing: .5px;
+                    margin-top: 10px;
+                    margin-bottom: 10px;
+                    color: #a7abc3;
+                }
+
+                & > a {
+                    display: flex;
+                    align-items: center;
+                    padding: 10px 30px;
+                    color: #505050;
+                    font-size: 14px;
+                    transition: all .3s;
+
+                    .nav-link-icon {
+                        margin-right: .8rem;
+                        stroke: rgba(black, .3);
+                        transition: stroke .3s;
+                        width: 20px;
+                        height: 20px;
+                    }
+
+                    &:hover {
+                        color: $color-primary;
+
+                        .nav-link-icon {
+                            stroke: $color-primary;
+                        }
+                    }
+
+                    &.active {
+                        position: relative;
+                        color: $color-primary;
+                        font-weight: 600;
+                        background: rgba($color-primary, .15);
+                        border-radius: $default-border-radius;
+                        margin: 0 1rem;
+
+                        &:before {
+                            content: '';
+                            // position: absolute;
+                            display: block;
+                            border: 6px solid transparent;
+                            border-left-color: $color-primary;
+                            margin-left: -12px;
+                            margin-right: 5px;
+                        }
+                    }
+
+                    .sub-menu-arrow {
+                        margin-left: auto;
+                        font-size: 14px;
+                        transition: transform .3s;
+
+                        &.rotate-in {
+                            transform: rotate(540deg);
+                        }
+                    }
+
+                    .badge {
+                        margin-left: auto;
+                        padding: 3px 7px;
+                    }
+
+                    & + ul {
+                        display: none;
+
+                        li {
+                            margin: 0;
+
+                            a {
+                                padding-left: 50px;
+                            }
+                        }
+
+                        ul {
+                            border-left: none;
+
+                            li {
+                                a {
+                                    padding-left: 70px;
+                                }
+                            }
+                        }
+                    }
+                }
+
+                &.open {
+                    & > a {
+                        color: $color-primary;
+                        font-weight: 600;
+
+                        .nav-link-icon {
+                            stroke: $color-primary;
+                        }
+                    }
+
+                    & > ul {
+                        display: block;
+
+                        a.active {
+                            background-color: inherit;
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
Index: resources/assets/sass/components/nestable.scss
===================================================================
--- resources/assets/sass/components/nestable.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/nestable.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+.dd-handle {
+  font-weight: normal;
+
+  &:hover {
+    color: $color-primary
+  }
+}
+
+.dd3-content {
+  font-weight: normal;
+}
Index: resources/assets/sass/components/notification.scss
===================================================================
--- resources/assets/sass/components/notification.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/notification.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,13 @@
+.notify {
+   .alert {
+      border: none;
+      box-shadow: 0 2px 10px 0 rgba(24,28,33,.04);
+      .alert-heading {
+         font-size: 16px;
+         font-weight: 600;
+      }
+   }
+   &.open {
+      transform: translate(0);
+   }
+}
Index: resources/assets/sass/components/page-header.scss
===================================================================
--- resources/assets/sass/components/page-header.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/page-header.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,44 @@
+.page-header {
+    display: flex;
+    align-items: flex-start;
+    height: 55px;
+
+    h1, h2, h3, h4, h5 {
+        margin: 0;
+    }
+
+    .breadcrumb {
+        background: none;
+        padding: 0;
+        margin: 0;
+
+        a {
+            &:hover {
+                text-decoration: underline;
+            }
+        }
+
+        li.breadcrumb-item {
+            font-size: 14px !important;
+
+            &:first-child:before {
+                font-size: 12px;
+                font-family: themify;
+                content: "\e69b";
+                display: inline-block;
+                margin-right: 8px;
+            }
+
+            @extend .small;
+
+            & + .breadcrumb-item::before {
+                font-size: 10px;
+            }
+
+            &.active {
+                color: $color-primary;
+                font-weight: 600;
+            }
+        }
+    }
+}
Index: resources/assets/sass/components/pagination.scss
===================================================================
--- resources/assets/sass/components/pagination.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/pagination.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,41 @@
+.pagination {
+   .page-item {
+      &.active {
+         .page-link {
+            background: $color-primary;
+            border-color: transparent;
+         }
+      }
+      .page-link {
+         &:hover, &:focus {
+            text-decoration: none;
+         }
+      }
+   }
+   &.pagination-rounded {
+      .page-item {
+         margin: 0 5px;
+         .page-link {
+            border-radius: 50%;
+            padding: 0;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            height: 40px;
+            width: 40px;
+         }
+      }
+      &.pagination-sm {
+         .page-link {
+            height: 30px;
+            width: 30px;
+         }
+      }
+      &.pagination-lg {
+         .page-link {
+            height: 60px;
+            width: 60px;
+         }
+      }
+   }
+}
Index: resources/assets/sass/components/preloader.scss
===================================================================
--- resources/assets/sass/components/preloader.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/preloader.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,39 @@
+.preloader {
+	position: fixed;
+	right: 0;
+	left: 0;
+	top: 0;
+	bottom: 0;
+	z-index: 1001;
+	background: white;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	flex-direction: column;
+
+	.preloader-icon {
+		border: 5px solid #eeeeee;
+		border-radius: 50%;
+		border-top: 5px solid #3498db;
+		width: 50px;
+		height: 50px;
+		animation: spin .5s linear infinite;
+	}
+
+	/* Safari */
+	@-webkit-keyframes spin {
+		0% { -webkit-transform: rotate(0deg); }
+		100% { -webkit-transform: rotate(360deg); }
+	}
+
+	@keyframes spin {
+		0% { transform: rotate(0deg); }
+		100% { transform: rotate(360deg); }
+	}
+
+	svg {
+		path {
+			fill: $color-primary;
+		}
+	}
+}
Index: resources/assets/sass/components/pricing-table.scss
===================================================================
--- resources/assets/sass/components/pricing-table.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/pricing-table.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,3 @@
+.pricing-table {
+
+}
Index: resources/assets/sass/components/progress.scss
===================================================================
--- resources/assets/sass/components/progress.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/progress.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,11 @@
+.progress {
+   .progress-bar {
+      &.progress-bar-striped {
+         background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent) !important;
+         background-size: 1rem 1rem !important;
+      }
+      &:not(.progress-bar-striped) {
+         background: $color-primary;
+      }
+   }
+}
Index: resources/assets/sass/components/range-slider.scss
===================================================================
--- resources/assets/sass/components/range-slider.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/range-slider.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,14 @@
+.irs {
+   .irs-single, .irs-to, .irs-from {
+      background: $color-primary;
+      &:before {
+         border-top-color: $color-primary;
+      }
+   }
+   .irs-handle {
+      border-color: $color-primary
+   }
+   .irs-bar {
+      background: $color-primary;
+   }
+}
Index: resources/assets/sass/components/scrollbar.scss
===================================================================
--- resources/assets/sass/components/scrollbar.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/scrollbar.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,10 @@
+.nicescroll-cursors {
+    border: none !important;
+}
+
+body:not(.dark) {
+    .nicescroll-cursors {
+        background-color: rgba($color-dark, .40) !important;
+        width: 3px !important;
+    }
+}
Index: resources/assets/sass/components/select2.scss
===================================================================
--- resources/assets/sass/components/select2.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/select2.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,47 @@
+.select2 {
+	width: 100% !important;
+}
+
+.select2.select2-container {
+	.select2-selection {
+		border: 1px solid #ced4da;
+
+		.select2-selection__placeholder {
+			line-height: calc(2.25rem + 2px);
+		}
+
+		.select2-selection__arrow {
+			height: calc(2.25rem + 2px);
+			width: 30px;
+		}
+
+		.select2-selection__choice {
+			display: flex;
+			align-items: center;
+			border: none;
+
+			.select2-selection__choice__remove {
+				font-size: $default-font-size + 2;
+				padding: 0 5px 0 3px;
+			}
+		}
+
+		&.select2-container--focus {
+			border-color: red;
+		}
+	}
+}
+
+.select2-container--default .select2-results__option--highlighted[aria-selected] {
+	background-color: $color-primary;
+	color: white;
+}
+
+.select2-container--default.select2-container--focus .select2-selection--multiple {
+	border-color: rgba($color-primary, 0.8);
+}
+
+.select2-container--default .select2-search--dropdown .select2-search__field {
+	height: calc(2.25rem + 2px);
+	padding: .375rem .75rem;
+}
Index: resources/assets/sass/components/slick.scss
===================================================================
--- resources/assets/sass/components/slick.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/slick.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,35 @@
+.slick-next {
+  right: 5px;
+}
+
+.slick-prev {
+  left: 5px;
+}
+
+.slick-prev, .slick-next {
+  width: 30px;
+  height: 30px;
+  z-index: 1;
+}
+
+.slick-prev:before, .slick-next:before {
+  font-size: 30px;
+}
+
+.slick-slide-item > * {
+  padding: 10px;
+}
+
+.slick-center {
+  transition: transform .3s;
+  transform: scale(1.20);
+}
+
+/* the slides */
+.slick-slide {
+  margin: 0 10px;
+}
+/* the parent */
+.slick-list {
+  margin: 0 -10px;
+}
Index: resources/assets/sass/components/sweet-alert.scss
===================================================================
--- resources/assets/sass/components/sweet-alert.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/sweet-alert.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,39 @@
+.swal-modal {
+	border-radius: .50rem;
+
+	.swal-title {
+		font-size: $default-font-size + 6;
+	}
+
+	.swal-text {
+		text-align: center;
+	}
+
+	.swal-button {
+		padding: .375rem .75rem;
+
+		&.swal-button--confirm {
+			background: $color-primary;
+		}
+
+		&.swal-button--danger {
+			background: $color-danger;
+		}
+
+		&.swal-button--cancel {
+			background: $color-light;
+		}
+	}
+
+	.swal-icon--error {
+		border-color: lighten($color-danger, 18%);
+
+		.swal-icon--error__line {
+			background: lighten($color-danger, 18%);
+		}
+	}
+
+	input.swal-content__input {
+		@extend .form-control
+	}
+}
Index: resources/assets/sass/components/table.scss
===================================================================
--- resources/assets/sass/components/table.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/table.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,55 @@
+.table {
+    &:not(.table-bordered) {
+        thead th {
+            border-top: none;
+            border-bottom-width: 1px;
+            font-weight: 500;
+            text-transform: uppercase;
+            font-size: 11px;
+            letter-spacing: .5px;
+        }
+
+        td {
+            vertical-align: middle;
+            line-height: 1;
+            white-space: nowrap;
+        }
+    }
+
+    .dropdown-menu {
+        margin-top: 0;
+    }
+
+    &.table-lg {
+        td {
+            padding: 1.3rem .75rem;
+        }
+    }
+
+    tr {
+        &.tr-selected {
+            background-color: darken(white, 4%);
+        }
+    }
+
+    &.table-striped tbody tr:nth-of-type(odd) {
+        background-color: rgba(0, 0, 0, .03);
+    }
+}
+
+.table-responsive-stack tr {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-orient: horizontal;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: row;
+    flex-direction: row;
+}
+
+.table-responsive-stack td,
+.table-responsive-stack th {
+    display: block;
+    -ms-flex: 1 1 auto;
+    flex: 1 1 auto;
+}
Index: resources/assets/sass/components/timeline.scss
===================================================================
--- resources/assets/sass/components/timeline.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/timeline.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,31 @@
+.timeline {
+	.timeline-item {
+		padding-bottom: 20px;
+		position: relative;
+		display: flex;
+
+		& > div:last-child {
+			flex: 1;
+		}
+
+		&::before {
+			content: "";
+			display: block;
+			position: absolute;
+			width: 1px;
+			bottom: 0px;
+			top: 32px;
+			left: 15px;
+			background: #e1e1e1;
+		}
+
+		&:last-child {
+			&::before {
+				display: none;
+			}
+
+			padding-bottom: 0;
+			bottom: 0;
+		}
+	}
+}
Index: resources/assets/sass/components/timepicker.scss
===================================================================
--- resources/assets/sass/components/timepicker.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/timepicker.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,46 @@
+.wickedpicker {
+   border: none;
+   box-shadow: 0 2px 15px 0 rgba(69, 65, 78, .18);
+   width: auto;
+   border-radius: 0;
+   height: auto;
+   .wickedpicker__controls {
+      padding: 10px 15px;
+   }
+   .wickedpicker__controls__control {
+      width: 40px;
+      .wickedpicker__controls__control-up:before {
+         content: "\f077";
+         font: normal normal normal 14px/1 FontAwesome;
+      }
+      .wickedpicker__controls__control-down:after {
+         content: "\f078";
+         font: normal normal normal 14px/1 FontAwesome;
+      }
+      .hover-state {
+         color: $color-primary;
+      }
+   }
+   .wickedpicker__title {
+      display: none;
+   }
+}
+
+.clearable-picker {
+   position: relative;
+   [data-clear-picker] {
+      cursor: pointer;
+      font-size: $default-font-size + 6;
+      position: absolute;
+      right: 10px;
+      top: 50%;
+      height: 17px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      width: 17px;
+      color: $default-text-color;
+      margin-top: -(17px / 2);
+      bottom: 0;
+   }
+}
Index: resources/assets/sass/components/toastr.scss
===================================================================
--- resources/assets/sass/components/toastr.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/toastr.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,220 @@
+.toast-title {
+	font-weight: bold;
+}
+
+.toast-message {
+	-ms-word-wrap: break-word;
+	word-wrap: break-word;
+}
+
+.toast-message a,
+.toast-message label {
+	color: #ffffff;
+}
+
+.toast-message a:hover {
+	color: #cccccc;
+	text-decoration: none;
+}
+
+.toast-close-button {
+	position: relative;
+	right: -0.3em;
+	top: -0.3em;
+	float: right;
+	font-size: 20px;
+	font-weight: bold;
+	color: #ffffff;
+	opacity: 0.8;
+	-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+	filter: alpha(opacity=80);
+}
+
+.toast-close-button:hover,
+.toast-close-button:focus {
+	color: #000000;
+	text-decoration: none;
+	cursor: pointer;
+	opacity: 0.4;
+	-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
+	filter: alpha(opacity=40);
+}
+
+/*Additional properties for button version
+ iOS requires the button element instead of an anchor tag.
+ If you want the anchor version, it requires `href="#"`.*/
+button.toast-close-button {
+	padding: 0;
+	cursor: pointer;
+	background: transparent;
+	border: 0;
+	-webkit-appearance: none;
+}
+
+.toast-top-center {
+	top: 30px;
+	right: 0;
+	width: 100%;
+}
+
+.toast-bottom-center {
+	bottom: 0;
+	right: 0;
+	width: 100%;
+}
+
+.toast-top-full-width {
+	top: 30px;
+	right: 0;
+	width: 100%;
+}
+
+.toast-bottom-full-width {
+	bottom: 0;
+	right: 0;
+	width: 100%;
+}
+
+.toast-top-left {
+	top: 30px;
+	left: 33px;
+}
+
+.toast-top-right {
+	top: 33px;
+	right: 33px;
+}
+
+.toast-bottom-right {
+	right: 33px;
+	bottom: 33px;
+}
+
+.toast-bottom-left {
+	bottom: 33px;
+	left: 33px;
+}
+
+#toast-container {
+	position: fixed;
+	z-index: 999999;
+	pointer-events: none;
+	/*overrides*/
+
+}
+
+#toast-container * {
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+#toast-container > div {
+	position: relative;
+	overflow: hidden;
+	margin: 0 0 6px;
+	padding: 15px 15px 15px 50px;
+	width: 300px;
+	border-radius: .25rem;
+	background-position: 15px center;
+	background-repeat: no-repeat;
+	color: #ffffff;
+	opacity: 1;
+
+	&:hover {
+		cursor: pointer;
+	}
+}
+
+#toast-container > .toast-info {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container > .toast-error {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container > .toast-success {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
+}
+
+#toast-container > .toast-warning {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
+}
+
+#toast-container.toast-top-center > div,
+#toast-container.toast-bottom-center > div {
+	width: 300px;
+	margin-left: auto;
+	margin-right: auto;
+}
+
+#toast-container.toast-top-full-width > div,
+#toast-container.toast-bottom-full-width > div {
+	width: 96%;
+	margin-left: auto;
+	margin-right: auto;
+}
+
+.toast {
+	background-color: $color-dark;
+	border: none;
+	box-shadow: none;
+}
+
+.toast-success {
+	background-color: $color-success;
+}
+
+.toast-error {
+	background-color: $color-danger;
+}
+
+.toast-info {
+	background-color: $color-info;
+}
+
+.toast-warning {
+	background-color: $color-warning;
+}
+
+.toast-progress {
+	position: absolute;
+	left: 0;
+	bottom: 0;
+	height: 2px;
+	background-color: #000000;
+	opacity: 0.2;
+	-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=20);
+	filter: alpha(opacity=20);
+}
+
+/*Responsive Design*/
+@media all and (max-width: 240px) {
+	#toast-container > div {
+		padding: 8px 8px 8px 50px;
+		width: 11em;
+	}
+	#toast-container .toast-close-button {
+		right: -0.2em;
+		top: -0.2em;
+	}
+}
+
+@media all and (min-width: 241px) and (max-width: 480px) {
+	#toast-container > div {
+		padding: 8px 8px 8px 50px;
+		width: 18em;
+	}
+	#toast-container .toast-close-button {
+		right: -0.2em;
+		top: -0.2em;
+	}
+}
+
+@media all and (min-width: 481px) and (max-width: 768px) {
+	#toast-container > div {
+		padding: 15px 15px 15px 50px;
+		width: 25em;
+	}
+}
Index: resources/assets/sass/components/tour.scss
===================================================================
--- resources/assets/sass/components/tour.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/tour.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,39 @@
+.tourStep {
+	border: none;
+
+	&.right {
+		margin-left: 10px;
+	}
+
+	&.left {
+		margin-right: 10px;
+	}
+
+	&.top {
+		margin-top: -10px;
+	}
+
+	&.bottom {
+		margin-top: 10px;
+	}
+
+	.popover-navigation {
+		border-top: 1px solid #ddd;
+		padding: .5rem .75rem;
+		display: flex;
+		align-items: center;
+
+		span {
+			font-size: $default-font-size - 2;
+			color: #9b9b9b
+		}
+
+		.popover-navigation-buttons {
+			margin-left: auto;
+
+			.btn {
+				margin-left: 5px;
+			}
+		}
+	}
+}
Index: resources/assets/sass/components/typography.scss
===================================================================
--- resources/assets/sass/components/typography.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/typography.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,133 @@
+ul {
+	&:not(.list-unstyled) {
+		margin: 0;
+		padding: 0;
+
+		li {
+			list-style-type: none;
+
+			a {
+				.icon {
+					color: darken(white, 18%);
+					font-size: $default-font-size;
+					vertical-align: middle;
+				}
+
+				&:hover, &:focus {
+					text-decoration: underline;
+				}
+			}
+		}
+	}
+
+	li {
+		a {
+			&:hover, &:focus {
+				text-decoration: none !important;
+			}
+		}
+	}
+
+	&.list-unstyled {
+		li {
+			margin-bottom: 10px;
+
+			ul {
+				margin-left: 30px !important;
+				margin-top: 10px !important;
+				margin-bottom: 10px !important;
+
+				li {
+					list-style-type: disc !important;
+				}
+			}
+		}
+	}
+
+	&.links {
+		a {
+			display: block;
+			padding: 3px 5px;
+			color: lighten(black, 18%);
+
+			&.active {
+				color: $color-primary;
+				font-weight: 500;
+			}
+		}
+	}
+}
+
+.list-group.list-group-sm {
+	.list-group-item {
+		padding: .40rem 1rem;
+	}
+}
+
+.text-uppercase {
+	letter-spacing: .5px;
+}
+
+.bg-none {
+	background-color: inherit !important;
+}
+
+$heading-min-font-size: 13px;
+
+h1 {
+	font-size: $default-font-size + 15
+}
+
+h2 {
+	font-size: $default-font-size + 12
+}
+
+h3 {
+	font-size: $default-font-size + 9
+}
+
+h4 {
+	font-size: $default-font-size + 6
+}
+
+h5 {
+	font-size: $default-font-size + 3
+}
+
+h6 {
+	font-size: $default-font-size
+}
+
+ul.list-inline {
+	li {
+		margin-bottom: .5rem;
+	}
+}
+
+hr {
+	border-color: $border-style-color
+}
+
+.right-0 {
+	right: 0;
+}
+
+.left-0 {
+	left: 0
+}
+
+.top-0 {
+	top: 0;
+}
+
+.bottom-0 {
+	bottom: 0;
+}
+
+.cursor-pointer {
+	cursor: pointer
+}
+
+p {
+	line-height: 1.5rem;
+}
Index: resources/assets/sass/components/webapp.scss
===================================================================
--- resources/assets/sass/components/webapp.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/components/webapp.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,232 @@
+.stretch-layout {
+    overflow: hidden;
+
+    .app-block {
+        height: calc(100vh - #{$header-height + 30px + 30px});
+    }
+
+    .content-footer {
+        display: none;
+    }
+
+    &:not(.chat-app).right-navigation {
+        &.small-navigation {
+            .layout-wrapper .content-wrapper .content-body .content {
+                padding-left: 30px !important;
+                padding-right: $navigation-tab-width + 30px !important;
+            }
+        }
+    }
+
+    &.hidden-navigation {
+        .layout-wrapper .content-wrapper .content-body .content {
+            padding-right: 30px !important;
+            padding-left: 30px !important;
+        }
+    }
+}
+
+.stretch-layout {
+    &.horizontal-navigation {
+        .app-block {
+            height: calc(100vh - #{$header-height + 30px + 30px + $header-height - 20px});
+        }
+    }
+}
+
+.app-block {
+    .app-sidebar {
+        height: 100%;
+
+        & > .card {
+            height: 100%;
+            margin-bottom: 0;
+
+            .card-body {
+                flex: none;
+            }
+        }
+
+        .app-sidebar-menu {
+            flex: 1;
+
+            .list-group {
+                .list-group-item.active {
+                    background: none;
+                    color: $color-primary;
+                }
+            }
+        }
+    }
+
+    .app-sidebar-menu-button {
+        display: none;
+    }
+
+    .app-content {
+        display: flex;
+        flex-direction: column;
+        height: 100%;
+
+        .app-content-overlay {
+            display: none;
+            position: absolute;
+            right: 1rem;
+            border-radius: 8px;
+            left: 1rem;
+            top: 0;
+            bottom: 0;
+            background-color: rgba(0, 0, 0, 0.25);
+            z-index: 8;
+
+            &.show {
+                display: block;
+            }
+        }
+
+        .app-action {
+            display: flex;
+            justify-content: space-between;
+            @extend .card;
+            padding: 1.5rem;
+
+            .action-left, .action-right {
+                display: flex;
+                align-items: center;
+            }
+
+            .action-right {
+                margin-left: 1rem;
+                flex: 1;
+                display: flex;
+                justify-content: space-between;
+
+                form {
+                    flex: 1;
+                }
+            }
+        }
+
+        .app-content-body {
+            margin-bottom: 0;
+            flex: 1;
+            padding: 0;
+            height: 100%;
+            position: static;
+            overflow: hidden;
+
+            .app-lists {
+                height: 100%;
+                overflow: auto;
+
+
+                ul.list-group {
+                    li.list-group-item {
+                        padding-top: 15px;
+                        padding-bottom: 15px;
+                        background: none;
+                        display: flex;
+                        align-items: center;
+
+                        &:hover {
+                            cursor: pointer;
+                            background-color: #fafafa;
+                        }
+
+                        &.active {
+                            background-color: #ebebeb;
+
+                            .avatar {
+                                border-color: #ebebeb
+                            }
+
+                            .app-list-title {
+                                color: black;
+                            }
+
+                            &.task-list {
+                                .app-list-title {
+                                    text-decoration: line-through;
+                                    @extend .text-success
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            .app-detail {
+                margin-bottom: 0;
+                position: absolute;
+                right: .90rem;
+                top: .50rem;
+                bottom: 0;
+                left: .90rem;
+                z-index: 2;
+                opacity: 0;
+                visibility: hidden;
+                transition: all .3s;
+
+                &.show {
+                    opacity: 1;
+                    visibility: visible;
+                    top: 0;
+                }
+
+                .card-header {
+                    display: flex;
+                    align-items: center;
+                    padding: 1.5rem;
+                    border-bottom: $border-style;
+
+                    .app-detail-action-left {
+                        display: flex;
+                    }
+
+                    .app-detail-action-right {
+                        margin-left: auto;
+                    }
+                }
+            }
+        }
+    }
+}
+
+#compose, .app-block {
+    .ql-toolbar.ql-snow {
+        border: none;
+        padding: 0;
+    }
+
+    .ql-editor {
+        min-height: 70px;
+    }
+}
+
+.app-sortable-handle {
+    cursor: move;
+}
+
+.app-file-list {
+    border: $border-style;
+
+    .app-file-icon {
+        background-color: #f5f5f5;
+        padding: 2rem;
+        text-align: center;
+        font-size: 2rem;
+        border-bottom: $border-style;
+        border-top-right-radius: 8px;
+        border-top-left-radius: 8px;
+    }
+
+    &:hover {
+        border-color: #d7d7d7;
+    }
+}
+
+body:not(.stretch-layout) {
+    .app-block .app-content .app-content-body {
+        overflow: visible;
+    }
+}
Index: resources/assets/sass/core/mixins.scss
===================================================================
--- resources/assets/sass/core/mixins.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/core/mixins.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,145 @@
+@for $i from 0 through 10 {
+	.m-#{5 * $i} {
+		margin: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 10 {
+	.m-t-b-#{5 * $i} {
+		margin-top: 5px * $i !important;
+		margin-bottom: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 10 {
+	.m-l-r-#{5 * $i} {
+		margin-left: 5px * $i !important;
+		margin-right: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 10 {
+	.m-t-#{5 * $i} {
+		margin-top: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 10 {
+	.m-r-#{5 * $i} {
+		margin-right: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 10 {
+	.m-b-#{5 * $i} {
+		margin-bottom: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 10 {
+	.m-l-#{5 * $i} {
+		margin-left: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 100 {
+	.m-t-#{10 * $i}-minus {
+		margin-top: -10px * $i !important;
+	}
+}
+
+@for $i from 0 through 100 {
+	.m-r-#{10 * $i}-minus {
+		margin-right: -10px * $i !important;
+	}
+}
+
+@for $i from 0 through 100 {
+	.m-b-#{10 * $i}-minus {
+		margin-bottom: -10px * $i !important;
+	}
+}
+
+@for $i from 0 through 100 {
+	.m-l-#{10 * $i}-minus {
+		margin-left: -10px * $i !important;
+	}
+}
+
+@for $i from 0 through 10 {
+	.p-t-b-#{5 * $i} {
+		padding-top: 5px * $i !important;
+		padding-bottom: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 10 {
+	.p-l-r-#{5 * $i} {
+		padding-left: 5px * $i !important;
+		padding-right: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 10 {
+	.p-#{5 * $i} {
+		padding: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 30 {
+	.p-t-#{5 * $i} {
+		padding-top: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 30 {
+	.p-r-#{5 * $i} {
+		padding-right: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 30 {
+	.p-b-#{5 * $i} {
+		padding-bottom: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 30 {
+	.p-l-#{5 * $i} {
+		padding-left: 5px * $i !important;
+	}
+}
+
+@for $i from 0 through 9 {
+	.opacity-#{$i} {
+		opacity: $i / 10 !important;
+	}
+}
+
+@for $i from 10 through 50 {
+	.font-size-#{$i} {
+		font-size: 1px * $i !important;
+	}
+}
+
+@for $i from 0 through 50 {
+	.line-height-#{$i} {
+		line-height: 1px * $i !important;
+	}
+}
+
+@for $i from 10 through 50 {
+	.width-#{$i * 1} {
+		width: #{$i}px !important;
+	}
+}
+
+@for $i from 10 through 50 {
+	.height-#{$i * 1} {
+		height: #{$i}px !important;
+	}
+}
+
+.h-100-vh {
+	height: 100vh;
+}
Index: resources/assets/sass/core/vars.scss
===================================================================
--- resources/assets/sass/core/vars.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/core/vars.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,57 @@
+$header-height: 75px;
+$navigation-width: 320px;
+$navigation-tab-width: 80px;
+$small-navigation-width: 65px;
+$sidebar-width: 330px;
+
+$default-font-size: 14px;
+$default-border-radius: .50rem;
+
+$border-style: 1px solid #ebebeb;
+$border-style-color: darken(white, 10%);
+$dark-border-style: 1px solid rgba(white, .1);
+
+$body-bg-color: #182139;
+$body-bg-color-dark: #04071a;
+$default-dark-text-color: #c7c7c7;
+
+$body-bg-color-dark-light: #313852;
+
+$default-text-color: #646464;
+$default-text-color-dark: #b9b9b9;
+
+$default-avatar-size: 3rem;
+
+$element-focus-outline-opacity: .40;
+
+$color-primary: #0081ff;
+$color-secondary: #aa66cc;
+$color-success: #28c76f;
+$color-info: #33b5e5;
+$color-light: #afb8bd;
+$color-danger: #ea5455;
+$color-warning: #ff9f43;
+$color-dark: #293134;
+
+$color-primary-bright: rgba($color-primary, .3);
+$color-secondary-bright: rgba($color-secondary, .3);
+$color-success-bright: rgba($color-success, .3);
+$color-info-bright: rgba($color-info, .3);
+$color-danger-bright: rgba($color-danger, .3);
+$color-warning-bright: rgba($color-warning, .3);
+$color-dark-bright: #d4d5d8;
+
+$color-facebook: #3b5998;
+$color-twitter: #55acee;
+$color-google: #db4437;
+$color-pinterest: #bd081c;
+$color-linkedin: #0077b5;
+$color-tumblr: #35465c;
+$color-instagram: #3f729b;
+$color-dribbble: #ea4c89;
+$color-youtube: #cd201f;
+$color-whatsapp: #43d854;
+$color-github: #00405d;
+$color-behance: #1769ff;
+$color-skype: #00aff0;
+$color-yahoo: #410093;
Index: resources/assets/sass/dark.scss
===================================================================
--- resources/assets/sass/dark.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/dark.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,1190 @@
+body.dark {
+    background-color: $body-bg-color;
+    color: $default-dark-text-color;
+
+    a:not(.btn):not(.link-1) {
+        color: rgba(white, .5);
+
+        &:hover {
+            color: rgba(white, .8);
+        }
+    }
+
+    .header {
+        background-color: $body-bg-color-dark-light;
+        border-bottom-color: #454c66;
+
+        .header-logo {
+            border-bottom-color: #454c66;
+
+            img {
+                display: block;
+
+                &:not(.logo-light) {
+                    display: none;
+                }
+            }
+        }
+
+        ul {
+            li {
+                a {
+                    color: $default-dark-text-color;
+
+                    &:hover, &:focus {
+                        color: white;
+                    }
+                }
+            }
+        }
+
+        .avatar {
+            border-color: transparent;
+        }
+    }
+
+    .text-divider:after {
+        background-color: #454c66;
+    }
+
+    input::placeholder {
+        color: rgba(white, .5);
+    }
+
+    .border {
+        border-color: #454c66 !important;
+    }
+
+    .border-right {
+        border-left-color: #454c66 !important;
+        border-right-color: #454c66 !important;
+    }
+
+    .border-left {
+        border-left-color: #454c66 !important;
+        border-right-color: #454c66 !important;
+    }
+
+    .border-bottom {
+        border-bottom-color: #454c66 !important;
+    }
+
+    .border-top {
+        border-top-color: #454c66 !important;
+    }
+
+    .preloader {
+        background: $body-bg-color-dark;
+
+        .preloader-icon {
+            border-color: $body-bg-color-dark-light
+        }
+    }
+
+    .nav-tabs {
+        .nav-link {
+            &:hover, &:focus {
+                background-color: $body-bg-color-dark-light !important;
+                border-bottom-color: $body-bg-color-dark-light !important;
+            }
+
+            &.active {
+                background: $body-bg-color-dark-light !important;
+                border-bottom-color: $body-bg-color-dark-light !important;
+            }
+        }
+    }
+
+    .sidebar {
+        header {
+            background-color: #2c2f42;
+        }
+    }
+
+    .navigation {
+        background-color: $body-bg-color-dark-light;
+
+        .navigation-menu-tab {
+            border-right-color: lighten($body-bg-color-dark-light, 10%);
+
+            ul {
+                li {
+                    a {
+                        color: $default-dark-text-color;
+
+                        &.active {
+                            color: white;
+                        }
+
+                        &:not(.active):hover, &:not(.active):focus {
+                            color: $color-primary;
+                        }
+                    }
+                }
+            }
+        }
+
+        .navigation-menu-body {
+
+            ul {
+                li {
+                    &.navigation-divider {
+                        color: #dbdbdb
+                    }
+
+                    a {
+                        color: $default-dark-text-color;
+
+                        .nav-link-icon {
+                            stroke: rgba($default-dark-text-color, .5);
+                        }
+
+                        &:hover, &:focus {
+                            color: white;
+                        }
+
+                        &.active {
+                            color: white;
+                        }
+
+                        & + ul {
+                            li {
+                                a.active {
+                                    color: white
+                                }
+                            }
+                        }
+                    }
+
+                    &.open {
+                        & > a {
+                            color: white;
+                            background-color: #454c66;
+                        }
+                    }
+
+                    .dropdown-divider {
+                        color: $color-primary
+                    }
+                }
+            }
+        }
+    }
+
+    &.boxed-layout {
+        background-color: $body-bg-color-dark;
+
+        .layout-wrapper .content-wrapper .content-body .content {
+            background-color: $body-bg-color;
+        }
+    }
+
+    &.right-navigation {
+        .navigation {
+            .navigation-menu-tab {
+                border-left-color: lighten($body-bg-color-dark-light, 10%)
+            }
+        }
+
+        &.small-navigation {
+            .navigation {
+                .navigation-menu-tab {
+                    border-left-color: transparent;
+                }
+
+                &:hover {
+                    .navigation-menu-tab {
+                        border-left-color: lighten($body-bg-color-dark-light, 10%) !important;
+                    }
+                }
+            }
+        }
+    }
+
+    &.small-navigation {
+        .navigation {
+            &:hover {
+                .navigation-menu-tab {
+                    border-right-color: lighten($body-bg-color-dark-light, 10%) !important;
+                }
+            }
+        }
+    }
+
+    .custom-accordion {
+        .accordion-row {
+            .accordion-header {
+                .close {
+                    text-shadow: none;
+                    color: inherit;
+                }
+            }
+        }
+    }
+
+    #vmap_usa_en, #vmap_canada_en, #vmap_world_en {
+        background-color: inherit !important;
+    }
+
+    .table {
+        color: $default-dark-text-color;
+    }
+
+    .table .thead-light th {
+        background-color: #59607a;
+        color: inherit;
+    }
+
+    .table .thead-dark th, .table-dark, .table-dark th, .table-dark td {
+        background-color: $body-bg-color-dark
+    }
+
+    .mark, mark {
+        background-color: #59607a;
+        color: inherit;
+    }
+
+    .page-header {
+        color: rgba(white, .6);
+
+        .breadcrumb li a {
+            color: #b3b3b3;
+
+            &:hover {
+                color: $default-dark-text-color
+            }
+        }
+    }
+
+    .breadcrumb li.breadcrumb-item.active {
+        color: lighten($color-primary, 10%)
+    }
+
+    [data-backround-image]:after {
+        background-color: rgba(0, 0, 0, 0.60);
+    }
+
+    .layout-alert {
+        border-color: #59607a;
+    }
+
+    .alert {
+        color: rgba(white, .6);
+
+        hr {
+            border-color: rgba(white, .1);
+        }
+
+        .close {
+            &:hover, &:focus {
+                opacity: .2;
+                color: inherit;
+            }
+        }
+    }
+
+    .form-control {
+        background: $body-bg-color-dark-light;
+        border-color: #454c66 !important;
+        color: #c3c3c3;
+
+        &:focus {
+            border-color: $color-primary !important;
+        }
+    }
+
+    .timeline .timeline-item::before {
+        background: #59607a;
+    }
+
+    .dropdown-menu {
+        border-top: 1px solid #454c66 !important;
+        color: $default-dark-text-color;
+    }
+
+    .custom-select {
+        background-color: inherit;
+        border-color: rgba(white, .2);
+        color: inherit;
+    }
+
+    .custom-file-label {
+        background-color: inherit;
+        border-color: rgba(white, .2);
+        color: inherit;
+
+        &::after {
+            background-color: #454c66;
+            color: inherit;
+        }
+    }
+
+    .custom-range::-webkit-slider-runnable-track {
+        background-color: #454c66;
+    }
+
+    .custom-control-label::before {
+        background-color: inherit;
+        border-color: #59607a;
+    }
+
+    .custom-control-input:disabled ~ .custom-control-label::before {
+        background-color: #454c66;
+    }
+
+    .form-control-plaintext {
+        color: inherit;
+    }
+
+    .wizard > .content {
+        background-color: #454c66;
+    }
+
+    .wizard > .steps .disabled a, .wizard > .steps .disabled a:hover, .wizard > .steps .disabled a:active {
+        background-color: #454c66;
+    }
+
+    .wizard > .actions .disabled a, .wizard > .actions .disabled a:hover, .wizard > .actions .disabled a:active {
+        background: #4f5670 !important;
+        border-color: #4f5670 !important;
+
+        &:not(:disabled):not(.disabled):focus {
+            box-shadow: 0 0 0 0.2rem rgba($body-bg-color-dark, .5);
+            outline: none;
+            color: inherit;
+        }
+    }
+
+    .pricing-table {
+        border-color: #59607a;
+    }
+
+    hr {
+        border-color: #454c66;
+    }
+
+    .dropdown-menu {
+        border: none;
+        background-color: #3b425c;
+
+        .dropdown-item {
+            color: #c3c3c3;
+
+            &:hover, &:focus {
+                background: $body-bg-color-dark-light;
+            }
+        }
+    }
+
+
+    .bg-light {
+        background: #59607a !important;
+    }
+
+    .list-group-item {
+        background: none;
+        border-color: rgba(#9b9b9b, .1)
+    }
+
+    a.list-group-item {
+        color: $default-dark-text-color;
+
+        &:hover {
+            color: white;
+        }
+    }
+
+    .card {
+        background: $body-bg-color-dark-light;
+        border-color: lighten($body-bg-color-dark-light, 10%);
+
+        .card-header {
+            border-bottom-color: #2c2f42 !important;
+        }
+
+        .card-footer {
+            border-top-color: #2c2f42
+        }
+    }
+
+    .accordion .card, .accordion.custom-accordion {
+        border-color: rgba(240, 240, 240, 0.12)
+    }
+
+    .accordion.custom-accordion .accordion-row a.accordion-header {
+        border-bottom-color: rgba(240, 240, 240, 0.12);
+        border-top-color: rgba(240, 240, 240, 0.12);
+        color: inherit;
+        background-color: #454c66;
+    }
+
+    .morris-hover.morris-default-style {
+        background-color: #454c66;
+        border-color: #59607a;
+    }
+
+    .apexcharts-yaxis {
+        .apexcharts-yaxis-texts-g {
+            text {
+                fill: rgba(white, .2);
+            }
+        }
+    }
+
+    .apexcharts-grid {
+        .apexcharts-gridlines-horizontal, .apexcharts-gridlines-vertical {
+            line {
+                stroke: rgba(white, .1);
+            }
+        }
+    }
+
+    .apexcharts-toolbar {
+        & > div > svg {
+            fill: rgba(white, .2);
+        }
+    }
+
+    .apexcharts-menu {
+        border: none;
+        background-color: #454c66;
+
+        .apexcharts-menu-item {
+            &:hover {
+                background-color: #59607a;
+            }
+        }
+    }
+
+    .apexcharts-xaxis {
+        .apexcharts-xaxis-texts-g {
+            text {
+                fill: rgba(white, .2);
+            }
+        }
+    }
+
+    .apexcharts-tooltip.light .apexcharts-tooltip-title {
+        background-color: #59607a !important;
+        border-color: #3b425c !important;
+    }
+
+    .apexcharts-xaxistooltip {
+        border-color: #3b425c !important;
+        background-color: #454c66 !important;
+        color: rgba(white, .4);
+    }
+
+    .apexcharts-xaxistooltip-bottom:after, apexcharts-xaxistooltip-bottom:before {
+        border-bottom-color: #454c66 !important;
+    }
+
+    .apexcharts-tooltip {
+        border-color: #3b425c !important;
+        background-color: #454c66 !important;
+    }
+
+    .apexcharts-title-text, .apexcharts-subtitle-text {
+        fill: rgba(white, .4);
+    }
+
+    .apexcharts-legend-text {
+        color: rgba(white, .4) !important;
+    }
+
+    .apexcharts-yaxis-title, .apexcharts-xaxis-title {
+        text {
+            fill: rgba(white, .4);
+        }
+    }
+
+    .demo-code-preview {
+        background-color: $body-bg-color-dark-light;
+        border-color: #4f5670 !important;
+
+        * {
+            text-shadow: none;
+        }
+
+        code[class*="language-"], pre[class*="language-"] {
+            color: white;
+
+            .token.operator {
+                background: none;
+            }
+        }
+
+        .token.tag {
+            color: #e156a3;
+        }
+    }
+
+    .avatar {
+        border-color: $body-bg-color-dark-light;
+
+        &:before {
+            border-color: $body-bg-color-dark-light
+        }
+
+        .avatar-title {
+            background-color: #59607a;
+        }
+    }
+
+    .tourBg {
+        opacity: .7 !important;
+    }
+
+    .dd-handle, .dd3-content {
+        background-color: #454c66;
+        border-color: $body-bg-color-dark-light;
+        color: inherit;
+    }
+
+    .dd3-handle:before {
+        color: inherit;
+    }
+
+    .dd-item {
+        button {
+            color: inherit;
+        }
+    }
+
+    .list-group-item-action {
+        color: inherit;
+
+        &.active {
+            color: white;
+        }
+    }
+
+    .img-thumbnail {
+        border-color: #59607a;
+        background-color: $body-bg-color-dark-light;
+    }
+
+    .progress {
+        background-color: #59607a;
+    }
+
+    .jstree-default .jstree-clicked {
+        color: $body-bg-color-dark
+    }
+
+    .select2-container--default .select2-selection--single, .select2-container--default .select2-selection--multiple {
+        background-color: inherit;
+    }
+
+    .select2-container--default .select2-selection--multiple .select2-selection__choice {
+        background: #454c66;
+        color: #c3c3c3;
+    }
+
+    .select2.select2-container .select2-selection {
+        border-color: #59607a;
+    }
+
+    .select2-container--default .select2-selection--single .select2-selection__placeholder {
+        color: $default-text-color;
+    }
+
+    .select2-container .select2-search--inline .select2-search__field {
+        color: inherit;
+    }
+
+    .select2-dropdown {
+        background-color: $body-bg-color-dark-light;
+        border-color: #59607a;
+    }
+
+    .select2-container--default .select2-search--dropdown .select2-search__field {
+        background-color: $body-bg-color-dark-light;
+        border-color: #59607a;
+        color: inherit;
+    }
+
+    .select2-container--default .select2-selection--single .select2-selection__rendered {
+        color: inherit;
+    }
+
+    .select2-container--default .select2-results__option[aria-selected=true] {
+        background-color: $body-bg-color-dark;
+        color: inherit;
+    }
+
+    .irs--round .irs-line {
+        background-color: #59607a;
+    }
+
+    .irs--round .irs-min, .irs--round .irs-max {
+        color: inherit;
+        background-color: #59607a;
+    }
+
+    .daterangepicker {
+        background-color: #3b425c;
+        border-color: #3b425c;
+
+        select {
+            background-color: inherit;
+            color: inherit;
+            border-color: #59607a;
+        }
+
+        &:after, &:before {
+            border-bottom-color: #3b425c;
+        }
+
+        .calendar-table {
+            background-color: #3b425c;
+            border-color: #3b425c;
+        }
+
+        td.in-range {
+            background-color: #59607a;
+            color: inherit;
+        }
+
+        td.end-date {
+            color: white;
+            background-color: $color-primary;
+        }
+
+        .drp-buttons {
+            border-top-color: #3b425c;
+
+            .btn.btn-default {
+                color: inherit;
+            }
+        }
+    }
+
+    .daterangepicker td.off, .daterangepicker td.off.end-date, .daterangepicker td.off.start-date {
+        background-color: inherit;
+        color: #636a84
+    }
+
+    .daterangepicker td.off.in-range {
+        background-color: #59607a;
+        color: #8b92ac
+    }
+
+    .daterangepicker td.available:hover, .daterangepicker th.available:hover {
+        background-color: $color-primary;
+        color: white;
+
+        span {
+            border-color: white;
+        }
+    }
+
+    .daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span {
+        border-color: #6d748e;
+    }
+
+    .daterangepicker .ranges li:hover {
+        background-color: #454c66;
+    }
+
+    .popover.clockpicker-popover {
+        overflow: hidden;
+        border: 1px solid #59607a;
+
+        .popover-title {
+            background-color: $body-bg-color-dark-light;
+            color: inherit;
+        }
+
+        .popover-content {
+            background-color: $body-bg-color-dark-light;
+        }
+
+        .clockpicker-plate {
+            border-color: #59607a;
+            background-color: $body-bg-color-dark-light;
+
+            .clockpicker-tick {
+                color: inherit;
+            }
+
+            .clockpicker-canvas-bg {
+                fill: #59607a
+            }
+        }
+    }
+
+    .nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active {
+        background-color: #59607a;
+        color: inherit;
+        border-color: #59607a
+    }
+
+    .nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {
+        border-color: #3b425c;
+        background-color: #3b425c;
+    }
+
+    .nav-tabs {
+        border-bottom-color: #59607a
+    }
+
+    .figure-caption {
+        color: inherit;
+    }
+
+    .btn-link {
+        color: inherit;
+    }
+
+    .text-muted {
+        color: #9f9f9f !important;
+    }
+
+    .table td, .table th {
+        border-color: rgba(#9b9b9b, .2)
+    }
+
+    .border-bottom {
+        border-bottom-color: rgba(#9b9b9b, .2) !important;
+    }
+
+    .sidebar {
+        background: $body-bg-color-dark-light;
+    }
+
+    .nicescroll-cursors {
+        background-color: rgba(255, 255, 255, 0.15) !important;
+    }
+
+    .chat-block {
+        .chat-content {
+            .messages {
+                .message-item {
+                    &:not(.me) {
+                        &:before {
+                            border-right-color: #454c66
+                        }
+
+                        .message-item-content {
+
+                            background-color: #454c66;
+                        }
+                    }
+
+                    &.message-item-divider {
+                        &:before, &:after {
+                            background-color: #454c66;
+                        }
+                    }
+                }
+            }
+        }
+
+        .chat-sidebar {
+            background-color: lighten($body-bg-color-dark-light, 5%);
+
+            .chat-sidebar-content .list-group .list-group-item {
+                background-color: $body-bg-color-dark-light;
+
+                &.active {
+                    color: white;
+                }
+            }
+        }
+    }
+
+    .app-block {
+        .app-content {
+            .app-content-body {
+                .app-lists {
+                    ul.list-group {
+                        li {
+                            &:hover {
+                                background-color: #3b425c;
+                            }
+
+                            &.list-group-item.active {
+                                background-color: #454c66;
+
+                                .avatar {
+                                    border-color: #454c66;
+                                }
+
+                                .app-list-title {
+                                    color: $default-dark-text-color
+                                }
+                            }
+                        }
+                    }
+                }
+
+                .app-detail {
+                    .card-header {
+                        border-bottom-color: #454c66 !important;
+                    }
+                }
+            }
+        }
+    }
+
+    .app-file-list {
+        border-color: #454c66;
+
+        .app-file-icon {
+            background-color: #454c66;
+            border-bottom-color: #454c66;
+        }
+    }
+
+    .ql-container.ql-snow {
+        border-color: #454c66
+    }
+
+    .ql-editor.ql-blank::before {
+        color: $default-dark-text-color
+    }
+
+    .ql-snow .ql-stroke, .ql-fill {
+        stroke: $default-dark-text-color
+    }
+
+    .text-black-50 {
+        color: rgba(247, 247, 247, 0.43) !important;
+    }
+
+    .table-email-list a {
+        color: inherit;
+    }
+
+    .table-hover tbody tr:hover {
+        color: inherit;
+    }
+
+    .input-group-text {
+        background: #454c66;
+        color: inherit;
+    }
+
+    .dropdown-divider {
+        border-top-color: rgba(240, 240, 240, 0.12)
+    }
+
+    .btn.btn-light, .fc .fc-state-default {
+        background: #454c66;
+        border-color: transparent;
+        color: inherit;
+
+        &:not(:disabled):not(.disabled):hover, &:not(:disabled):not(.disabled):focus, &:not(:disabled):not(.disabled):active {
+            background: #4f5670;
+            border-color: #4f5670;
+            color: inherit;
+        }
+
+        &:not(:disabled):not(.disabled):focus {
+            box-shadow: 0 0 0 0.2rem rgba($body-bg-color-dark, .5);
+            outline: none;
+            color: inherit;
+        }
+    }
+
+    .btn.btn-outline-light {
+        border: $dark-border-style;
+        color: $default-dark-text-color;
+
+        &:hover {
+            background: none !important;
+            color: #d6d6d6 !important;
+            border: $dark-border-style !important;
+        }
+    }
+
+    .fc-unthemed .fc-content, .fc-unthemed .fc-divider, .fc-unthemed .fc-list-heading td, .fc-unthemed .fc-list-view, .fc-unthemed .fc-popover, .fc-unthemed .fc-row, .fc-unthemed tbody, .fc-unthemed td, .fc-unthemed th, .fc-unthemed thead {
+        border-color: rgba(240, 240, 240, 0.12)
+    }
+
+    .fc-unthemed .fc-list-item:hover td {
+        background: #454c66;
+    }
+
+    .fc-unthemed .fc-divider, .fc-unthemed .fc-list-heading td, .fc-unthemed .fc-popover .fc-header {
+        background: #454c66;
+    }
+
+    .fc-unthemed td.fc-today, .fc-unthemed .fc-list-empty {
+        background: #454c66;
+    }
+
+    #external-events .fc-event {
+        color: inherit;
+    }
+
+    .bootstrap-tagsinput {
+        background-color: inherit;
+        border-color: rgba(white, .2);
+
+        .tag {
+            background: #454c66;
+            color: #c3c3c3;
+        }
+
+        input {
+            color: #c3c3c3;
+        }
+    }
+
+    .dropzone {
+        background-color: $body-bg-color-dark-light;
+        border-color: #454c66
+    }
+
+    .modal-content {
+        background-color: $body-bg-color-dark-light;
+
+        .modal-header {
+            border-bottom-color: rgba(240, 240, 240, 0.12);
+            background-color: #454c66 !important;
+
+            .close {
+                text-shadow: none;
+                opacity: 1;
+                color: inherit;
+                background-color: $body-bg-color-dark-light !important;
+            }
+        }
+
+        .modal-footer {
+            border-top-color: rgba(240, 240, 240, 0.12);
+        }
+    }
+
+    .swal-modal {
+        background-color: $body-bg-color-dark-light;
+
+        .swal-icon--success__hide-corners {
+            background-color: inherit;
+        }
+
+        .swal-icon--success:before, .swal-icon--success:after {
+            background-color: inherit;
+        }
+
+        .swal-title, .swal-text {
+            color: inherit;
+        }
+    }
+
+    .popover {
+        background-color: #454c66;
+
+        .popover-header {
+            background-color: #59607a;
+            border-color: transparent;
+        }
+
+        .popover-body {
+            color: inherit;
+        }
+
+        .popover-navigation {
+            border-top-color: rgba(240, 240, 240, 0.12);
+        }
+    }
+
+    .bs-popover-auto[x-placement^=top] > .arrow::after, .bs-popover-top > .arrow::after {
+        border-top-color: #454c66;
+    }
+
+    .bs-popover-auto[x-placement^=right] > .arrow::after, .bs-popover-right > .arrow::after {
+        border-right-color: #454c66;
+    }
+
+    .bs-popover-auto[x-placement^=bottom] > .arrow::after, .bs-popover-bottom > .arrow::after {
+        border-bottom-color: #454c66;
+    }
+
+    .bs-popover-auto[x-placement^=left] > .arrow::after, .bs-popover-left > .arrow::after {
+        border-left-color: #454c66;
+    }
+
+    ul.links a {
+        color: inherit;
+    }
+
+    .page-link {
+        background-color: inherit;
+        color: inherit;
+        border-color: rgba(240, 240, 240, 0.12)
+    }
+
+    .page-item.disabled .page-link {
+        background-color: #272e48;
+        border-color: rgba(240, 240, 240, 0.12);
+        color: inherit;
+    }
+
+    .nav {
+        a.nav-link {
+            &:not(.active) {
+                color: $default-dark-text-color;
+
+                &:hover, &:active {
+                    background-color: #3b425c;
+                }
+            }
+        }
+    }
+
+    &.form-membership .form-wrapper {
+        background-color: $body-bg-color-dark-light;
+
+        #logo {
+            img {
+                display: block;
+
+                &:not(.logo-light) {
+                    display: none;
+                }
+            }
+        }
+    }
+
+    .content-footer {
+        background-color: $body-bg-color-dark-light;
+    }
+
+    .irs--round .irs-handle {
+        background-color: $body-bg-color-dark-light;
+    }
+
+    .table tr.tr-selected {
+        background-color: lighten($body-bg-color-dark-light, 5%);
+    }
+}
+
+body.dark.hidden-navigation {
+    .navigation {
+        background-color: $body-bg-color-dark-light
+    }
+}
+
+body.dark.small-navigation {
+    .navigation-menu-body ul li {
+        &.open {
+            & > a {
+                background-color: #454c66;
+            }
+        }
+
+        ul {
+            background-color: $body-bg-color-dark-light !important;
+            border-left-color: #454c66 !important;
+        }
+
+        &.navigation-divider {
+            &:after {
+                background-color: #454c66 !important;
+            }
+        }
+    }
+}
+
+@media (min-width: 1200px) {
+    body.dark.horizontal-navigation {
+        .horizontal-navigation {
+            background-color: $body-bg-color-dark-light;
+            border-top-color: lighten($body-bg-color-dark-light, 10%);
+
+            ul {
+                & > li {
+                    & > a {
+                        &.active {
+                            background: rgba(black, .25);
+                        }
+
+                        &:hover {
+                            background: rgba(black, .1);
+                        }
+
+                        & + ul {
+                            border-top-color: lighten($body-bg-color-dark-light, 10%)
+                        }
+                    }
+                }
+
+                li {
+                    ul {
+                        background-color: #3b425c;
+
+                        &:before {
+                            border-bottom-color: #3b425c
+                        }
+
+                        li {
+                            a {
+                                color: $default-dark-text-color;
+
+                                &:hover {
+                                    background: none;
+                                    color: lighten($color-primary, 10%)
+                                }
+
+                                &.active {
+                                    background: none;
+                                    color: lighten($color-primary, 10%)
+                                }
+                            }
+
+                            ul {
+                                border-left-color: lighten($body-bg-color-dark-light, 10%)
+                            }
+
+                            &.open {
+                                & > a {
+                                    background: none;
+                                    color: lighten($color-primary, 10%)
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    body.dark.navigation-toggle-one.navigation-show .navigation .navigation-menu-body {
+        background-color: $body-bg-color-dark-light;
+    }
+}
+
+@media (max-width: 1200px) {
+    body.dark {
+        .chat-block .chat-content.mobile-open {
+            background-color: $body-bg-color-dark-light;
+        }
+    }
+    body.dark.horizontal-navigation {
+        .horizontal-navigation {
+            background-color: #3b425c;
+
+            ul {
+                li {
+                    a {
+                        &:hover {
+                            color: lighten($color-primary, 10%)
+                        }
+
+                        &.active {
+                            color: lighten($color-primary, 10%)
+                        }
+                    }
+
+                    &.open {
+                        & > a {
+                            color: lighten($color-primary, 10%)
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
Index: resources/assets/sass/layouts.scss
===================================================================
--- resources/assets/sass/layouts.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/layouts.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,750 @@
+@media (min-width: 1200px) {
+    body {
+
+        &.boxed-layout {
+            background-color: white;
+
+            .layout-wrapper {
+                background-color: #f8fafb;
+                box-shadow: 0 4px 25px 0 rgba(0, 0, 0, .1);
+                margin: 0 120px;
+
+                .header {
+                    margin: 0 120px;
+                }
+
+                .navigation {
+                    left: 120px
+                }
+            }
+
+            &.right-navigation {
+                .navigation {
+                    left: auto;
+                    right: 120px
+                }
+            }
+
+            &.horizontal-navigation {
+                .horizontal-navigation {
+                    left: 120px;
+                    right: 120px;
+                }
+            }
+        }
+
+        &.small-navigation:not(.hidden-navigation):not(.horizontal-navigation) {
+
+            .navigation {
+                width: $navigation-tab-width;
+                transition: width .3s;
+
+                .navigation-menu-tab {
+                    border-right-color: transparent;
+                }
+
+                .navigation-menu-body {
+                    display: none;
+
+                    & > ul > li > a {
+                        padding: 12px 0;
+                    }
+
+                    ul {
+
+                        li {
+                            position: relative;
+
+                            &:hover > a {
+
+                                .nav-link-icon {
+                                    stroke: $color-primary;
+                                }
+                            }
+
+                            &.open > a {
+                                border-radius: 4px;
+                            }
+
+                            a {
+                                span:not(.badge):not(.avatar-title) {
+                                    display: none;
+                                }
+
+                                .badge {
+                                    position: absolute;
+                                    right: 20px;
+                                    top: 12px;
+                                }
+
+                                .nav-link-icon {
+                                    margin: 0 !important;
+                                }
+                            }
+
+                            &.open {
+                                & > a {
+                                    & + ul {
+                                        li.open > a {
+                                            background: none;
+                                            color: $color-primary
+                                        }
+                                    }
+                                }
+
+                                & > ul {
+                                    display: none;
+                                }
+                            }
+                        }
+                    }
+
+                    & > ul {
+                        & > li {
+                            &:not(.navigation-divider) {
+                                padding: 0 15px;
+                            }
+
+                            & > a {
+                                display: block;
+
+                                .sub-menu-arrow {
+                                    display: none;
+                                }
+
+                                & + ul {
+                                    li {
+                                        a {
+                                            padding-left: 53px;
+
+                                            & + ul {
+                                                li {
+                                                    a {
+                                                        padding-left: 65px;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+
+                                &.active {
+                                    border-radius: 5px;
+                                    background-color: $color-primary;
+                                    position: static;
+
+                                    .nav-link-icon {
+                                        stroke: white;
+                                    }
+                                }
+                            }
+                        }
+                    }
+
+                }
+
+                &:hover {
+                    width: $navigation-width;
+
+                    .navigation-menu-tab {
+                        border-right-color: $border-style-color;
+                    }
+
+                    .navigation-menu-body {
+                        display: flex;
+                        height: calc(100vh - #{$header-height});
+                    }
+
+                    ul {
+
+                        li {
+                            a {
+                                display: flex;
+
+                                & > span, .sub-menu-arrow {
+                                    display: inherit !important;
+                                }
+
+                                .nav-link-icon {
+                                    margin-right: .8rem !important;
+                                }
+                            }
+
+                            &.open {
+                                & > ul {
+                                    display: block;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            .layout-wrapper .content-wrapper .content-body .content {
+                padding-left: $navigation-tab-width + 30px;
+            }
+
+            .content-footer {
+                margin-left: $navigation-tab-width;
+            }
+        }
+
+        &.hidden-navigation:not(.small-navigation) {
+
+            .header {
+                .navigation-toggler {
+                    display: block;
+                }
+            }
+
+            .navigation {
+                z-index: 1000;
+                left: -80%;
+                top: 0;
+                bottom: 0;
+                opacity: 0;
+                transition: left .3s;
+                position: fixed !important;
+
+                &.open {
+                    left: 0;
+                    opacity: 1;
+                }
+            }
+
+            &.right-navigation {
+                .navigation {
+                    left: auto;
+                    right: -80%;
+                    transition: right .3s;
+
+                    &.open {
+                        right: 0;
+                        opacity: 1;
+                    }
+                }
+            }
+
+            .layout-wrapper .content-wrapper .content-body .content {
+                padding-left: 30px;
+            }
+
+            .content-footer {
+                margin-left: 0;
+            }
+        }
+
+        &.right-navigation {
+            .navigation {
+                left: auto;
+                right: 0;
+                flex-direction: row-reverse;
+
+                .navigation-menu-tab {
+                    border-right: none;
+                    border-left: 1px solid $border-style-color;
+                }
+            }
+
+            .layout-wrapper .content-wrapper .content-body .content {
+                padding-left: 30px;
+                padding-right: $navigation-width + 30px;
+            }
+
+            .content-footer {
+                margin-left: 0;
+                margin-right: $navigation-width;
+            }
+
+            &.small-navigation {
+                .layout-wrapper .content-wrapper .content-body .content {
+                    padding-left: 30px !important;
+                    padding-right: $navigation-tab-width + 30px;
+                }
+
+                .content-footer {
+                    margin-left: 0 !important;
+                    margin-right: $navigation-tab-width;
+                }
+            }
+
+            &.hidden-navigation {
+                .layout-wrapper .content-wrapper .content-body .content {
+                    padding-left: 30px !important;
+                    padding-right: 30px;
+                }
+            }
+        }
+
+        &.horizontal-navigation {
+
+            .header {
+                box-shadow: none;
+            }
+
+            .horizontal-navigation {
+                border-top: 1px solid $border-style-color;
+                box-shadow: 0px 5px 10px -10px rgba(0, 0, 0, 0.40);
+                position: fixed;
+                top: $header-height;
+                background-color: white;
+                height: $header-height - 20px;
+                right: 0;
+                left: 0;
+                padding: 0 30px;
+                display: flex;
+                align-items: center;
+                z-index: 997;
+
+                & > ul {
+                    height: 100%;
+
+                    & > li {
+                        display: flex;
+                        align-items: center;
+                        margin-right: .5rem;
+
+                        & > a {
+                            border-radius: 100px;
+                            text-transform: uppercase;
+                            letter-spacing: 1px;
+                            font-size: 12px;
+                            padding: 10px 15px !important;
+                            display: flex;
+                            align-items: center;
+
+                            .sub-menu-arrow {
+                                display: none;
+                            }
+
+                            .badge {
+                                margin-left: .5rem;
+                            }
+
+                            & + ul {
+                                border-top: 1px solid $border-style-color;
+                            }
+                        }
+
+                        &:hover {
+                            & > a {
+                                color: $color-primary !important;
+                            }
+                        }
+                    }
+                }
+
+                ul {
+                    display: flex;
+
+                    li {
+                        position: relative;
+
+                        a {
+                            padding: 10px 25px;
+                            display: flex;
+                            justify-content: space-between;
+                            align-items: center;
+
+                            .nav-icon {
+                                margin-right: .5rem;
+                            }
+                        }
+
+                        &.open {
+                            & > a {
+                                color: $color-primary
+                            }
+                        }
+
+                        &:hover {
+                            & > ul {
+                                display: block;
+                            }
+                        }
+
+                        ul {
+                            display: none;
+                            position: absolute;
+                            top: $header-height - 20px - 1px;
+                            width: 220px;
+                            background-color: white;
+                            padding: 10px 0;
+                            border-bottom-left-radius: .25rem;
+                            border-bottom-right-radius: .25rem;
+                            box-shadow: 0px 5px 9px -5px rgba(0, 0, 0, 0.30);
+
+                            li {
+                                position: relative;
+
+                                &:hover > a {
+                                    color: $color-primary
+                                }
+
+                                a {
+                                    color: black;
+
+                                    &.active {
+                                        color: $color-primary
+                                    }
+                                }
+
+                                &.open {
+                                    & > a {
+                                        color: $color-primary;
+                                    }
+                                }
+
+                                ul {
+                                    left: 220px;
+                                    top: -12px;
+                                    border-left: 1px solid darken(white, 5%);
+                                    box-shadow: 3px 0px 10px -5px rgba(0, 0, 0, 0.3);
+
+                                    &:before {
+                                        display: none;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            .layout-wrapper .content-wrapper .content-body .content {
+                padding-left: 30px;
+                padding-top: $header-height + ($header-height - 20px) + 30px;
+            }
+
+            .content-footer {
+                margin-left: 0;
+            }
+
+        }
+
+        &.sticky-header {
+            .header {
+                position: sticky !important;
+                top: 0;
+            }
+        }
+    }
+
+}
+
+@media (max-width: 1200px) {
+    body {
+        &.horizontal-navigation {
+            .horizontal-navigation {
+                position: fixed;
+                left: 0;
+                top: 0;
+                bottom: 0;
+                height: auto;
+                width: $navigation-width;
+                background-color: white;
+                z-index: 1000;
+                overflow: auto;
+                padding: 15px 0;
+                display: none;
+
+                ul {
+
+                    li {
+                        a {
+                            display: flex;
+                            align-items: center;
+                            padding: 15px 30px;
+
+                            .nav-icon {
+                                margin-right: .5rem;
+                            }
+
+                            &.active {
+                                color: $color-primary;
+                            }
+
+                            .badge, .sub-menu-arrow {
+                                margin-left: auto;
+                            }
+
+                            .sub-menu-arrow {
+                                transform: rotate(90deg);
+                            }
+                        }
+
+                        ul {
+                            display: none;
+
+                            li {
+                                a {
+                                    padding-left: 60px;
+                                }
+
+                                ul {
+                                    li {
+                                        a {
+                                            padding-left: 80px;
+                                        }
+
+                                        ul {
+                                            li {
+                                                a {
+                                                    padding-left: 100px;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+
+                        &.open {
+                            & > a {
+                                color: $color-primary;
+                            }
+
+                            & > ul {
+                                display: block !important;
+                            }
+                        }
+                    }
+                }
+
+                &.open {
+                    display: block;
+                }
+            }
+        }
+    }
+}
+
+body.semi-dark:not(.dark) {
+
+    .nicescroll-cursors {
+        background-color: rgba(255, 255, 255, 0.30) !important;
+    }
+
+    .navigation {
+        background-color: $body-bg-color-dark-light;
+        color: $default-dark-text-color;
+
+        .navigation-menu-tab {
+            border-right-color: lighten($body-bg-color-dark-light, 10%);
+
+            ul {
+                li {
+                    a {
+                        color: $default-dark-text-color;
+
+                        &.active {
+                            color: white;
+                        }
+
+                        &:not(.active):hover, &:not(.active):focus {
+                            color: $color-primary;
+                        }
+                    }
+                }
+            }
+        }
+
+        .navigation-menu-body {
+
+            .avatar {
+                border-color: $body-bg-color-dark-light;
+            }
+
+            .list-group-item {
+                background: none;
+                border-color: #454c66;
+            }
+
+            #navigation-logo {
+                border-color: #454c66;
+
+                img {
+                    display: block;
+
+                    &:not(.logo-light) {
+                        display: none;
+                    }
+                }
+            }
+
+            ul {
+                li {
+                    &.navigation-divider {
+                        color: #dbdbdb
+                    }
+
+                    a {
+                        color: $default-dark-text-color;
+
+                        .nav-link-icon {
+                            stroke: rgba($default-dark-text-color, .5);
+                        }
+
+                        &.active {
+                            color: white;
+
+                            &:after {
+                                background-color: $color-primary;
+                            }
+                        }
+
+                        &:hover, &:focus {
+                            background: none;
+                            color: white;
+                        }
+
+                        & + ul {
+                            li {
+                                a.active {
+                                    color: white
+                                }
+                            }
+                        }
+                    }
+
+                    &.open {
+                        & > a {
+                            color: white;
+                        }
+                    }
+
+                    .dropdown-divider {
+                        color: $color-primary
+                    }
+
+                    ul {
+                        background-color: $body-bg-color-dark-light !important;
+                        border-left-color: #454c66 !important;
+
+                        ul {
+                            border-left-color: #454c66 !important;
+                        }
+                    }
+
+                    &.navigation-divider {
+                        &:after {
+                            background-color: #454c66 !important;
+                        }
+                    }
+                }
+            }
+        }
+
+        .avatar:before {
+            border-color: #2c2f42;
+        }
+    }
+
+    .horizontal-navigation {
+        background-color: $body-bg-color-dark-light;
+
+        & > ul {
+            & > li {
+                & > a {
+                    & + ul {
+                        border-top: 1px solid lighten($body-bg-color-dark-light, 10%);
+                        ul {
+                            border-left: 1px solid lighten($body-bg-color-dark-light, 10%);
+                        }
+                    }
+                }
+                &.open > a {
+                    color: lighten($color-primary, 5%);
+                }
+            }
+        }
+
+        ul {
+            li {
+                a {
+                    color: $default-dark-text-color;
+
+                    &.active {
+                        color: lighten($color-primary, 5%);
+                    }
+
+                    &:not(.active):hover, &:not(.active):focus {
+                        color: lighten($color-primary, 5%);
+                    }
+                }
+                ul {
+                    background-color: $body-bg-color-dark-light;
+                }
+            }
+        }
+
+    }
+
+    &.right-navigation {
+        .navigation {
+            .navigation-menu-tab {
+                border-left-color: lighten($body-bg-color-dark-light, 10%);
+            }
+        }
+    }
+
+    &.small-navigation {
+        .navigation:hover {
+            .navigation-menu-tab {
+                border-right-color: lighten($body-bg-color-dark-light, 10%);
+            }
+        }
+
+        &.right-navigation {
+            .navigation:hover {
+                .navigation-menu-tab {
+                    border-left-color: lighten($body-bg-color-dark-light, 10%);
+                }
+            }
+        }
+    }
+}
+
+body.header-dark:not(.dark) {
+
+    .header {
+        background-color: $body-bg-color-dark-light;
+        color: $default-dark-text-color;
+        border-bottom-color: lighten($body-bg-color-dark-light, 10%);
+
+        .header-logo {
+            a {
+                img {
+                    display: block;
+
+                    &:not(.logo-light) {
+                        display: none;
+                    }
+                }
+            }
+        }
+
+        .navigation-toggler {
+            a {
+                color: $default-dark-text-color;
+
+                &:hover {
+                    color: white;
+                }
+            }
+        }
+
+        a.nav-link {
+            color: $default-dark-text-color;
+
+            &:hover {
+                color: white;
+            }
+        }
+
+        .dropdown-menu {
+            border-top: none !important;
+        }
+    }
+
+}
Index: resources/assets/sass/other.scss
===================================================================
--- resources/assets/sass/other.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/other.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,453 @@
+*:focus {
+    outline: none;
+}
+
+.sticky {
+    position: sticky !important;
+    top: 0;
+}
+
+.lead {
+    line-height: 2.2rem;
+}
+
+.layout-wrapper {
+    display: flex;
+    flex-direction: column;
+    min-height: 100vh;
+
+    .content-wrapper {
+        flex: 1;
+        display: flex;
+
+        .content-body {
+            width: 0;
+            flex: 1;
+            display: flex;
+            flex-direction: column;
+
+            .content {
+                flex: 1;
+                padding: 30px;
+                padding-top: $header-height + 30;
+                padding-left: $navigation-width + 30;
+                padding-bottom: 0;
+            }
+        }
+    }
+}
+
+svg.feather {
+    width: 20px;
+    height: 20px;
+}
+
+.demo-code-preview {
+    border: $border-style;
+    padding: 20px 10px;
+    margin-top: 2rem;
+    position: relative;
+    background-color: white;
+    border-radius: 8px;
+
+    & + * {
+        margin-top: 1.5rem;
+    }
+
+    &:before {
+        content: attr(data-label);
+        display: block;
+        position: absolute;
+        top: -9px;
+        left: 20px;
+        @extend .text-muted;
+        letter-spacing: 1px;
+        background-color: inherit;
+        font-size: 11px;
+        padding: 0 5px;
+    }
+
+    pre {
+        overflow-x: hidden;
+        background: none;
+        padding-top: 0;
+        padding-bottom: 0;
+        max-height: 300px;
+    }
+
+    &:hover {
+        pre {
+            overflow-x: auto;
+        }
+    }
+}
+
+code[class*="language-"], pre[class*="language-"] {
+    font-size: .93em;
+    margin: 0
+}
+
+.text-divider {
+    display: flex;
+    align-items: center;
+
+    &:after {
+        content: '';
+        display: block;
+        height: 1px;
+        background-color: #f0f0f0;
+        flex: 1;
+    }
+
+    span {
+        margin-right: 1rem;
+    }
+}
+
+.row-xs {
+    margin-left: -.5rem;
+    margin-right: -.5rem;
+
+    & > div {
+        padding-left: .5rem;
+        padding-right: .5rem;
+    }
+}
+
+.overlay {
+    position: fixed;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0;
+    z-index: 999;
+    opacity: 0;
+    background: rgba(0, 0, 0, 0.30);
+    transition: opacity .5s;
+
+    &.show {
+        opacity: 1;
+    }
+}
+
+.tooltip {
+    pointer-events: none;
+    font-family: inherit;
+    font-size: .835rem !important;
+
+    .arrow {
+        display: none;
+    }
+
+    .tooltip-inner {
+        background: rgba(0, 0, 0, 0.70);
+    }
+}
+
+.file-manager-items {
+    display: flex;
+    flex-wrap: wrap;
+
+    .file-manager-item {
+        margin-right: 20px;
+        margin-bottom: 20px;
+
+        span {
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            width: 135px;
+            height: 115px;
+            font-size: 8.5em;
+            border: 1px solid #e1e1e1;
+            border-radius: 5px;
+            background-size: cover !important;
+            background-position: center !important;
+        }
+
+        &.folder span {
+            color: #cea65b
+        }
+
+        &.image span {
+            &:before {
+                display: none;
+            }
+        }
+    }
+}
+
+.small, small {
+    font-size: 12px;
+}
+
+.list-group {
+    .list-group-item {
+        padding: .75rem 1.5rem;
+
+        &.active {
+            z-index: auto;
+            background: $color-primary;
+        }
+    }
+}
+
+.bring-forward {
+    position: relative;
+    z-index: 1;
+}
+
+.table-email-list {
+    table.table {
+        .dropdown {
+            [data-toggle="dropdown"] {
+                &:after {
+                    display: none;
+                }
+            }
+        }
+
+        .email-subject {
+            max-width: 80%;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+
+            a {
+                display: inline-block;
+            }
+        }
+
+        td, .table th {
+            padding: .80rem;
+        }
+    }
+
+    a {
+        color: $default-text-color;
+
+        &:hover, &:focus {
+            color: $color-primary
+        }
+    }
+}
+
+.read-mail-body {
+    img {
+        max-width: 50%;
+    }
+}
+
+.bootstrap-tagsinput {
+    box-shadow: none;
+    width: 100%;
+    border: 1px solid #ced4da;
+    min-height: calc(2.25rem + 2px);
+
+    &.focus {
+        border-color: #3383de;
+    }
+
+    .tag {
+        display: inline-flex;
+        color: black;
+        border-radius: 3px;
+        font-size: 13px;
+        padding: 0 8px;
+        margin: 2px 1px;
+        justify-content: space-between;
+        align-items: center;
+        background: #e1e1e1;
+    }
+}
+
+.list-group {
+    .list-group-item {
+        &.active {
+            background: $color-primary;
+            border-color: transparent;
+        }
+    }
+}
+
+.list-group-flush .list-group-item:first-child {
+    border-top: 0;
+}
+
+.badge {
+    font-weight: 500;
+}
+
+.nav-pills .nav-link.active {
+    background: $color-primary;
+}
+
+.nav-tabs .nav-link.active {
+    color: $color-primary
+}
+
+.text-muted {
+    color: #a7abc3 !important;
+}
+
+.min-width-0 {
+    min-width: 0
+}
+
+.list-group-item {
+    border-color: $border-style-color
+}
+
+.jqstooltip {
+    -webkit-box-sizing: content-box;
+    -moz-box-sizing: content-box;
+    box-sizing: content-box;
+}
+
+.hide-show-toggler {
+    .hide-show-toggler-item {
+        display: none;
+    }
+
+    &:hover, &:focus {
+        .hide-show-toggler-item {
+            display: block;
+        }
+    }
+}
+
+.tooltip {
+    font-size: $default-font-size;
+}
+
+.jqvmap-zoomin, .jqvmap-zoomout {
+    box-sizing: initial;
+}
+
+.apexcharts-canvas {
+    margin: auto;
+}
+
+[data-backround-image] {
+    position: relative;
+    background-size: cover !important;
+    background-position: center !important;
+
+    &:after {
+        content: '';
+        display: block;
+        background: rgba(white, .6);
+        position: absolute;
+        right: 0;
+        left: 0;
+        top: 0;
+        bottom: 0;
+    }
+
+    & > * {
+        position: relative;
+        z-index: 1;
+    }
+}
+
+.dropdown-menu {
+    [data-backround-image]:after {
+        border-radius: 0;
+    }
+}
+
+.jqvmap-region {
+    fill: $color-secondary-bright;
+
+    &:hover {
+
+        fill: $color-secondary;
+    }
+}
+
+.a-0 {
+    top: 0px;
+    right: 0px;
+    bottom: 0px;
+    left: 0px;
+}
+
+.font-weight-800 {
+    font-weight: 800;
+}
+
+.circle canvas {
+    vertical-align: top;
+}
+
+.todo-item {
+    user-select: none;
+    margin-bottom: 10px;
+
+    input[type="checkbox"]:checked {
+        & + label {
+            text-decoration: line-through;
+            color: #00961f
+        }
+    }
+}
+
+.border-radius-1 {
+    border-radius: 5px;
+}
+
+.rounded {
+    border-radius: .50rem !important;
+}
+
+.nav-tabs .nav-link {
+    border-top-left-radius: .50rem;
+    border-top-right-radius: .50rem;
+}
+
+.nav-pills .nav-link {
+    border-radius: .50rem;
+}
+
+.apexcharts-legend.position-top.center {
+    justify-content: flex-end !important;
+}
+
+.image-hover {
+    position: relative;
+
+    .image-hover-body {
+        display: flex;
+        align-items: flex-end;
+        opacity: 0;
+        visibility: hidden;
+        position: absolute;
+        right: 0;
+        left: 0;
+        top: 0;
+        bottom: 0;
+        background: rgba(black, .5);
+        transition: all .3s;
+        color: white;
+        padding: 20px 30px;
+    }
+
+    &:hover {
+        .image-hover-body {
+            opacity: 1;
+            visibility: visible;
+        }
+    }
+}
+
+.nav-analiytics-style {
+
+    .nav-link {
+        // border-radius: 0 !important;
+        padding: .5rem 1.5rem;
+    }
+}
+
+.daterangepicker {
+    font-family: 'Inter';
+}
Index: resources/assets/sass/responsive.scss
===================================================================
--- resources/assets/sass/responsive.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/assets/sass/responsive.scss	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,482 @@
+@media (max-width: 1200px) {
+    .header .header-toggler {
+        display: block;
+    }
+
+    .chat-app .layout-wrapper .content-wrapper .content-body .content {
+        padding-left: 0 !important;
+    }
+
+    .chat-block {
+        position: relative;
+
+        .chat-content {
+            display: none;
+
+            .chat-header {
+                padding: .5rem 1.5rem;
+            }
+
+            .mobile-chat-close-btn {
+                display: block;
+            }
+
+            &.chat-mobile-open {
+                display: flex;
+                background-color: white;
+                position: absolute;
+                right: 0;
+                left: 0;
+                max-width: 100%;
+                z-index: 2;
+                bottom: 0;
+            }
+        }
+
+        .chat-sidebar {
+            flex: 1;
+            border-right: none;
+            max-width: 100% !important;
+        }
+    }
+
+    .header {
+        margin: 0;
+
+        .header-left {
+            .navigation-toggler {
+                display: block !important;
+            }
+        }
+
+        div:nth-child(2) {
+
+            ul.navbar-nav:first-child {
+                display: none;
+                background: darken(white, 10%);
+                position: fixed;
+                left: 0;
+                right: 0;
+                top: $header-height;
+
+                li {
+                    a {
+                        color: black;
+                    }
+                }
+
+                &.open {
+                    display: flex;
+                    flex-wrap: wrap;
+                }
+            }
+        }
+
+        .header-search .input-group {
+            background-color: white;
+
+            .btn {
+                color: black
+            }
+
+            input.form-control {
+                &:focus {
+                    color: black;
+                }
+
+                &::placeholder {
+                    color: #9b9b9b
+                }
+            }
+        }
+
+        .navigation-toggler, .navbar-toggler {
+            a {
+                background: none !important;
+            }
+        }
+
+        .navigation-toggler {
+            display: none !important;
+
+            &.mobile-toggler {
+                display: block !important;
+            }
+        }
+
+        .navigation-toggler a:hover {
+            background: none !important;
+        }
+
+        .dropdown {
+            position: static;
+        }
+
+        .dropdown-menu {
+            right: 1rem !important;
+            top: auto !important;
+            left: 1rem !important;
+            margin-top: 10px;
+            width: auto !important;
+            transform: inherit !important;
+        }
+    }
+
+    .layout-wrapper .content-wrapper .content-body .content {
+        padding-left: 30px;
+    }
+
+    .content-footer {
+        margin-left: 0 !important;
+    }
+
+    .navigation {
+        background-color: white;
+        z-index: 1000;
+        box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .15);
+        left: -80%;
+        top: 0;
+        bottom: 0;
+        opacity: 0;
+        transition: left .2s;
+        position: fixed !important;
+
+        &.open {
+            left: 0;
+            opacity: 1;
+        }
+
+        header.navigation-header {
+            padding-top: 20px;
+        }
+
+        .navigation-icon-menu {
+            margin: 0;
+            border-radius: 0;
+        }
+
+        .navigation-menu-body {
+            padding: 15px 0;
+        }
+    }
+
+    .page-header {
+        padding: 0;
+        margin-top: 0;
+        margin-right: 0;
+        margin-left: 0;
+    }
+
+    .user-page {
+        padding: 20px;
+        height: auto;
+
+        .card {
+            width: auto;
+
+            .card-body {
+                padding: 30px;
+            }
+        }
+    }
+}
+
+@media (max-width: 992px) {
+
+    .app-block {
+        position: relative;
+
+        .app-sidebar-menu-button {
+            display: inline-flex;
+            margin-right: 1rem;
+        }
+
+        .app-sidebar {
+            display: none;
+            position: absolute;
+            left: 0;
+            z-index: 9;
+            flex: 0 0 35%;
+            max-width: 35%;
+            bottom: 0;
+
+            .app-sidebar-menu {
+                overflow: auto;
+            }
+
+            &.show {
+                display: block;
+            }
+
+            & > .card {
+                box-shadow: 3px 0px 15px -10px black;
+                border-top-right-radius: 0;
+                border-bottom-right-radius: 0;
+            }
+        }
+
+        .app-content {
+            flex: 0 0 100%;
+            max-width: 100%;
+
+            .app-action {
+                flex-direction: column-reverse;
+
+                .action-right {
+                    margin-left: 0;
+                    margin-bottom: 1rem;
+                }
+            }
+
+            .app-detail .card-header {
+                flex-direction: column;
+                align-items: stretch !important;
+
+                .app-detail-action-right {
+                    margin-left: 0 !important;
+                    margin-top: 1rem;
+                }
+            }
+        }
+    }
+
+    .card {
+        margin-bottom: 1rem;
+
+        .card-body {
+            padding: 1.2rem;
+        }
+    }
+
+}
+
+@media (max-width: 768px) {
+
+    body.form-membership .form-wrapper {
+        width: 90%;
+        margin: 30px auto;
+    }
+
+    body.horizontal-navigation {
+        .horizontal-navigation.open {
+            width: 80%;
+        }
+    }
+
+    .app-block .app-content .app-action .action-right {
+        form {
+            margin-right: 0 !important;
+        }
+
+        .app-pager {
+            display: none !important;
+        }
+    }
+
+    .app-block {
+        .app-sidebar {
+            flex: 0 0 70%;
+            max-width: 70%;
+        }
+    }
+
+    .chat-block {
+        .chat-sidebar {
+            &.border-right {
+                border-right: none !important;
+            }
+        }
+    }
+
+    .toast-top-right {
+        top: 1rem;
+        right: 1rem;
+    }
+
+    .toast-top-left {
+        top: 1rem;
+        left: 1rem;
+    }
+
+    .header {
+        .header-left {
+            width: auto;
+        }
+
+        .page-title {
+            display: none;
+        }
+    }
+
+    footer {
+        padding: 15px 20px;
+
+        .nav {
+            display: none;
+        }
+    }
+
+    .table-responsive-stack tr {
+        -webkit-box-orient: vertical;
+        -webkit-box-direction: normal;
+        -ms-flex-direction: column;
+        flex-direction: column;
+        border-bottom: 3px solid #ccc;
+        display: block;
+    }
+    /*  IE9 FIX   */
+    .table-responsive-stack td {
+        float: left \9
+    ;
+        width: 100%;
+    }
+
+    .sidebar {
+        & > ul.nav {
+            display: flex;
+
+            li.nav-item {
+                border: none;
+            }
+        }
+    }
+
+    .user-page {
+        padding: 20px;
+        height: auto;
+
+        .card {
+            width: 100%;
+
+            .card-body {
+                padding: 30px;
+            }
+        }
+    }
+
+    .fc {
+        .fc-toolbar {
+            &.fc-header-toolbar {
+                & > div {
+                    float: none !important;
+
+                    .fc-button-group {
+                        float: none !important;
+                    }
+
+                    &.fc-left {
+                        display: flex;
+                        justify-content: center;
+                        margin-bottom: 15px;
+                    }
+
+                    &.fc-right {
+                        margin-bottom: 5px;
+                    }
+                }
+            }
+        }
+    }
+}
+
+@media (max-width: 414px) {
+
+    .nav {
+        display: block;
+        border: none;
+
+        li.nav-item {
+            margin-bottom: 0;
+
+            &:last-child {
+                border: none;
+            }
+
+            a.nav-link {
+                border: none;
+            }
+        }
+    }
+
+    body:not(.semi-dark):not(.dark) {
+        .nav {
+            li.nav-item {
+                border-bottom: 1px solid #ebebeb;
+            }
+        }
+    }
+
+    .navigation header.navigation-header .nav {
+        display: flex;
+    }
+
+    body.dark {
+        .nav {
+            li.nav-item {
+                border-bottom-color: #6d748e;
+            }
+        }
+    }
+
+    .wizard > .steps > ul > li {
+        float: none;
+        width: 100%;
+        margin-bottom: 10px;
+    }
+
+    .wizard > .content {
+        background: none;
+    }
+
+    .wizard > .content > .body {
+        position: static;
+        padding: 0;
+    }
+
+    .dataTables_wrapper {
+        .dataTables_filter {
+            display: block;
+        }
+    }
+
+    .navigation {
+        width: 75%;
+    }
+
+    .page-header {
+        .breadcrumb {
+            display: none;
+        }
+    }
+}
+
+@media (max-width: 375px) {
+    nav.navbar {
+        .navbar-menu {
+            padding-left: 0;
+        }
+    }
+
+    .navigation {
+        width: 85%;
+    }
+
+}
+
+@media (max-width: 544px) {
+    .text-xs-center {
+        text-align: center !important;
+    }
+    .text-xs-left {
+        text-align: left !important;
+    }
+    .text-xs-right {
+        text-align: right !important;
+    }
+}
+
+@media print {
+    .page-header {
+        display: none;
+    }
+}
Index: sources/js/app.js
===================================================================
--- resources/js/app.js	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ 	(revision )
@@ -1,1 +1,0 @@
-require('./bootstrap');
Index: sources/js/bootstrap.js
===================================================================
--- resources/js/bootstrap.js	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ 	(revision )
@@ -1,28 +1,0 @@
-window._ = require('lodash');
-
-/**
- * We'll load the axios HTTP library which allows us to easily issue requests
- * to our Laravel back-end. This library automatically handles sending the
- * CSRF token as a header based on the value of the "XSRF" token cookie.
- */
-
-window.axios = require('axios');
-
-window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
-
-/**
- * Echo exposes an expressive API for subscribing to channels and listening
- * for events that are broadcast by Laravel. Echo and event broadcasting
- * allows your team to easily build robust real-time web applications.
- */
-
-// import Echo from 'laravel-echo';
-
-// window.Pusher = require('pusher-js');
-
-// window.Echo = new Echo({
-//     broadcaster: 'pusher',
-//     key: process.env.MIX_PUSHER_APP_KEY,
-//     cluster: process.env.MIX_PUSHER_APP_CLUSTER,
-//     forceTLS: true
-// });
Index: resources/views/auth/create_password.blade.php
===================================================================
--- resources/views/auth/create_password.blade.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/views/auth/create_password.blade.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,42 @@
+@extends('layouts.auth')
+
+@section("title", "Create password | TechBlog")
+
+@section('content')
+
+    <!-- logo -->
+    <div id="logo">
+        <img class="logo" src="{{ url('assets/media/images/logo.png') }}" alt="image">
+        <img class="logo-dark" src="{{ url('assets/media/images/logo-dark.png') }}" alt="image">
+    </div>
+    <!-- ./ logo -->
+
+    <h5>Create password</h5>
+
+    <!-- form -->
+    <form action="{{ route("auth.create-password", ["id" => $id, "token" => $token]) }}" method="post">
+        @csrf
+        @if ($errors->any())
+            <div class="alert alert-danger">
+                <ul class="m-0 pl-2">
+                    @foreach ($errors->all() as $error)
+                        <li>{{ $error }}</li>
+                    @endforeach
+                </ul>
+            </div>
+        @endif
+        <div class="form-group">
+            <input id="password" type="password" name="password" class="form-control" placeholder="Password" autocomplete="off" required autofocus>
+        </div>
+        <div class="form-group">
+            <input id="password" type="password" name="password_confirmation" class="form-control" placeholder="Confirm password" autocomplete="off" required autofocus>
+        </div>
+        <div class="form-group">
+            <input type="text" id="security_code" class="form-control" name="security_code" autocomplete="off" placeholder="Security code" required>
+        </div>
+        <input type="submit" value="Create Password" class="btn btn-primary btn-block">
+        <hr>
+     </form>
+    <!-- ./ form -->
+
+@endsection
Index: resources/views/auth/forgot.blade.php
===================================================================
--- resources/views/auth/forgot.blade.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/views/auth/forgot.blade.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,45 @@
+@extends('layouts.auth')
+
+@section("title", "Forgot | TechBlog")
+
+@section('content')
+
+    <!-- logo -->
+    <div id="logo">
+        <img class="logo" src="{{ url('assets/media/images/logo.png') }}" alt="image">
+    </div>
+    <!-- ./ logo -->
+
+    <h5>Reset password</h5>
+
+    <!-- form -->
+    <form action="{{ route("auth.forgot") }}" method="post">
+        @csrf
+        @if ($errors->any())
+            <div class="alert alert-danger">
+                <ul class="m-0 pl-2">
+                    @foreach ($errors->all() as $error)
+                        <li>{{ $error }}</li>
+                    @endforeach
+                </ul>
+            </div>
+        @endif
+
+        @if(Session::has('forgotInfo'))
+            <div class="alert alert-success fade show" role="alert">
+                <strong> {{ Session::get('forgotInfo') }} </strong>
+                <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+                </button>
+            </div>
+        @endif
+        <div class="form-group">
+            <input type="email" name="email" class="form-control" id="" aria-describedby="emailHelp" placeholder="Username" required autofocus>
+        </div>
+        <button type="submit" class="btn btn-primary btn-block">Submit</button>
+        <hr>
+        <p class="text-muted">Take a different action.</p>
+        <a href="{{ route("auth.loginShow") }}" class="btn btn-sm btn-outline-light ml-1">Login!</a>
+    </form>
+    <!-- ./ form -->
+
+@endsection
Index: resources/views/auth/login.blade.php
===================================================================
--- resources/views/auth/login.blade.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/views/auth/login.blade.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,65 @@
+@extends('layouts.auth')
+
+@section("title", "Login | SaveSpace")
+
+@section('content')
+
+    <!-- logo -->
+    <div id="logo">
+        <img class="logo" src="{{ url('assets/media/images/logo.png') }}" alt="image">
+     </div>
+    <!-- ./ logo -->
+
+    <h5>Sign in</h5>
+
+    <!-- form -->
+    <form action="{{ route("auth.login") }}" method="post" accept-charset="utf-8">
+        @csrf
+        @if(Session::has('isActiveError'))
+            <div class="alert alert-danger alert-dismissible fade show" role="alert">
+                <strong> {{ Session::get('isActiveError') }} </strong>
+                <button type="button" class="close" data-dismiss="alert" aria-label="Close"></button>
+            </div>
+        @endif
+
+        @if(Session::has('loginError'))
+            <div class="alert alert-error fade show" role="alert">
+                <strong> {{ Session::get('loginError') }} </strong>
+                <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+                </button>
+            </div>
+        @endif
+        <div class="form-group">
+            <input id="username" type="text" tabindex="1" class="form-control{{ Session::has('usernameError') ? ' is-invalid' : '' }}" value="{{ old('username') }}" name="username" placeholder="Username" autocomplete="off" required autofocus>
+            @if(Session::has('usernameError'))
+                <span class="invalid-feedback" role="alert">
+                    <strong>{{ Session::get('usernameError') }}</strong>
+                </span>
+            @endif
+        </div>
+
+        <div class="form-group">
+            <input id="password" type="password" tabindex="2" class="form-control{{ Session::has('passwordError') ? ' is-invalid' : '' }}" name="password" autocomplete="off" placeholder="Password" required>
+            @if(Session::has('passwordError'))
+                <span class="invalid-feedback" role="alert">
+                    <strong>{{ Session::get('passwordError') }}</strong>
+                </span>
+            @endif
+        </div>
+
+        <div class="form-group d-flex justify-content-between">
+            <div class="custom-control custom-checkbox">
+                <input type="checkbox" class="custom-control-input" name="remember" id="remember" checked="" {{ old('remember') ? 'checked' : '' }}>
+
+                <label class="custom-control-label" for="customCheck1">Remember me</label>
+            </div>
+            <a href="/auth/forgot">Reset password</a>
+        </div>
+        <input type="submit" value="Sign in" class="btn btn-primary btn-block">
+        <hr>
+        <p class="text-muted">Don't have an account?</p>
+        <a href="#" class="btn btn-outline-light btn-sm">Register now!</a>
+    </form>
+    <!-- ./ form -->
+
+@endsection
Index: resources/views/auth/verify_new_email.blade.php
===================================================================
--- resources/views/auth/verify_new_email.blade.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/views/auth/verify_new_email.blade.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,35 @@
+@extends('layouts.auth')
+
+@section("title", "Verify | TechBlog")
+
+@section('content')
+
+    <!-- logo -->
+    <div id="logo">
+        <img class="logo" src="{{ url('assets/media/images/logo.png') }}" alt="image">
+    </div>
+    <!-- ./ logo -->
+
+    <h5>Verify your new e-mail address</h5>
+
+    <!-- form -->
+    <form action="{{ route("auth.verify", ["id" => $id, "token" => $token]) }}" method="post">
+        @csrf
+        @if ($errors->any())
+            <div class="alert alert-danger">
+                <ul class="m-0 pl-2">
+                    @foreach ($errors->all() as $error)
+                        <li>{{ $error }}</li>
+                    @endforeach
+                </ul>
+            </div>
+        @endif
+        <div class="form-group">
+            <input type="text" class="form-control" name="security_code" autocomplete="off" placeholder="Security code" autofocus required>
+        </div>
+        <input type="submit" value="Verify" class="btn btn-primary btn-block">
+        <hr>
+        </form>
+    <!-- ./ form -->
+
+@endsection
Index: resources/views/layouts/auth.blade.php
===================================================================
--- resources/views/layouts/auth.blade.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
+++ resources/views/layouts/auth.blade.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -0,0 +1,39 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>SaveSpace</title>
+
+    <!-- Favicon -->
+    <link rel="shortcut icon" href="{{ url('assets/media/images/favicon.png') }}"/>
+
+    <!-- Plugin styles -->
+    <link rel="stylesheet" href="{{ url('vendors/bundle.css') }}" type="text/css">
+
+    <!-- App styles -->
+    <link rel="stylesheet" href="{{ url('assets/css/app.min.css') }}" type="text/css">
+</head>
+<body class="form-membership">
+
+<!-- begin::preloader-->
+<div class="preloader">
+    <div class="preloader-icon"></div>
+</div>
+<!-- end::preloader -->
+
+<div class="form-wrapper">
+
+    @yield('content')
+
+</div>
+
+<!-- Plugin scripts -->
+<script src="{{ url('vendors/bundle.js') }}"></script>
+
+<!-- App scripts -->
+<script src="{{ url('assets/js/app.js') }}"></script>
+
+</body>
+</html>
Index: sources/views/welcome.blade.php
===================================================================
--- resources/views/welcome.blade.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ 	(revision )
@@ -1,132 +1,0 @@
-<!DOCTYPE html>
-<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
-    <head>
-        <meta charset="utf-8">
-        <meta name="viewport" content="width=device-width, initial-scale=1">
-
-        <title>Laravel</title>
-
-        <!-- Fonts -->
-        <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
-
-        <!-- Styles -->
-        <style>
-            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-t{border-top-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.dark\:text-gray-500{--tw-text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--tw-text-opacity))}}}
-        </style>
-
-        <style>
-            body {
-                font-family: 'Nunito', sans-serif;
-            }
-        </style>
-    </head>
-    <body class="antialiased">
-        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center py-4 sm:pt-0">
-            @if (Route::has('login'))
-                <div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
-                    @auth
-                        <a href="{{ url('/home') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Home</a>
-                    @else
-                        <a href="{{ route('login') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Log in</a>
-
-                        @if (Route::has('register'))
-                            <a href="{{ route('register') }}" class="ml-4 text-sm text-gray-700 dark:text-gray-500 underline">Register</a>
-                        @endif
-                    @endauth
-                </div>
-            @endif
-
-            <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
-                <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
-                    <svg viewBox="0 0 651 192" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-16 w-auto text-gray-700 sm:h-20">
-                        <g clip-path="url(#clip0)" fill="#EF3B2D">
-                            <path d="M248.032 44.676h-16.466v100.23h47.394v-14.748h-30.928V44.676zM337.091 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.431 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162-.001 2.863-.479 5.584-1.432 8.161zM463.954 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.432 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162 0 2.863-.479 5.584-1.432 8.161zM650.772 44.676h-15.606v100.23h15.606V44.676zM365.013 144.906h15.607V93.538h26.776V78.182h-42.383v66.724zM542.133 78.182l-19.616 51.096-19.616-51.096h-15.808l25.617 66.724h19.614l25.617-66.724h-15.808zM591.98 76.466c-19.112 0-34.239 15.706-34.239 35.079 0 21.416 14.641 35.079 36.239 35.079 12.088 0 19.806-4.622 29.234-14.688l-10.544-8.158c-.006.008-7.958 10.449-19.832 10.449-13.802 0-19.612-11.127-19.612-16.884h51.777c2.72-22.043-11.772-40.877-33.023-40.877zm-18.713 29.28c.12-1.284 1.917-16.884 18.589-16.884 16.671 0 18.697 15.598 18.813 16.884h-37.402zM184.068 43.892c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002-35.648-20.524a2.971 2.971 0 00-2.964 0l-35.647 20.522-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v38.979l-29.706 17.103V24.493a3 3 0 00-.103-.776c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002L40.098 1.396a2.971 2.971 0 00-2.964 0L1.487 21.919l-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v122.09c0 1.063.568 2.044 1.489 2.575l71.293 41.045c.156.089.324.143.49.202.078.028.15.074.23.095a2.98 2.98 0 001.524 0c.069-.018.132-.059.2-.083.176-.061.354-.119.519-.214l71.293-41.045a2.971 2.971 0 001.489-2.575v-38.979l34.158-19.666a2.971 2.971 0 001.489-2.575V44.666a3.075 3.075 0 00-.106-.774zM74.255 143.167l-29.648-16.779 31.136-17.926.001-.001 34.164-19.669 29.674 17.084-21.772 12.428-43.555 24.863zm68.329-76.259v33.841l-12.475-7.182-17.231-9.92V49.806l12.475 7.182 17.231 9.92zm2.97-39.335l29.693 17.095-29.693 17.095-29.693-17.095 29.693-17.095zM54.06 114.089l-12.475 7.182V46.733l17.231-9.92 12.475-7.182v74.537l-17.231 9.921zM38.614 7.398l29.693 17.095-29.693 17.095L8.921 24.493 38.614 7.398zM5.938 29.632l12.475 7.182 17.231 9.92v79.676l.001.005-.001.006c0 .114.032.221.045.333.017.146.021.294.059.434l.002.007c.032.117.094.222.14.334.051.124.088.255.156.371a.036.036 0 00.004.009c.061.105.149.191.222.288.081.105.149.22.244.314l.008.01c.084.083.19.142.284.215.106.083.202.178.32.247l.013.005.011.008 34.139 19.321v34.175L5.939 144.867V29.632h-.001zm136.646 115.235l-65.352 37.625V148.31l48.399-27.628 16.953-9.677v33.862zm35.646-61.22l-29.706 17.102V66.908l17.231-9.92 12.475-7.182v33.841z"/>
-                        </g>
-                    </svg>
-                </div>
-
-                <div class="mt-8 bg-white dark:bg-gray-800 overflow-hidden shadow sm:rounded-lg">
-                    <div class="grid grid-cols-1 md:grid-cols-2">
-                        <div class="p-6">
-                            <div class="flex items-center">
-                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path></svg>
-                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel.com/docs" class="underline text-gray-900 dark:text-white">Documentation</a></div>
-                            </div>
-
-                            <div class="ml-12">
-                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
-                                    Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end.
-                                </div>
-                            </div>
-                        </div>
-
-                        <div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-t-0 md:border-l">
-                            <div class="flex items-center">
-                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"></path><path d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"></path></svg>
-                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laracasts.com" class="underline text-gray-900 dark:text-white">Laracasts</a></div>
-                            </div>
-
-                            <div class="ml-12">
-                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
-                                    Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process.
-                                </div>
-                            </div>
-                        </div>
-
-                        <div class="p-6 border-t border-gray-200 dark:border-gray-700">
-                            <div class="flex items-center">
-                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"></path></svg>
-                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel-news.com/" class="underline text-gray-900 dark:text-white">Laravel News</a></div>
-                            </div>
-
-                            <div class="ml-12">
-                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
-                                    Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials.
-                                </div>
-                            </div>
-                        </div>
-
-                        <div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-l">
-                            <div class="flex items-center">
-                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
-                                <div class="ml-4 text-lg leading-7 font-semibold text-gray-900 dark:text-white">Vibrant Ecosystem</div>
-                            </div>
-
-                            <div class="ml-12">
-                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
-                                    Laravel's robust library of first-party tools and libraries, such as <a href="https://forge.laravel.com" class="underline">Forge</a>, <a href="https://vapor.laravel.com" class="underline">Vapor</a>, <a href="https://nova.laravel.com" class="underline">Nova</a>, and <a href="https://envoyer.io" class="underline">Envoyer</a> help you take your projects to the next level. Pair them with powerful open source libraries like <a href="https://laravel.com/docs/billing" class="underline">Cashier</a>, <a href="https://laravel.com/docs/dusk" class="underline">Dusk</a>, <a href="https://laravel.com/docs/broadcasting" class="underline">Echo</a>, <a href="https://laravel.com/docs/horizon" class="underline">Horizon</a>, <a href="https://laravel.com/docs/sanctum" class="underline">Sanctum</a>, <a href="https://laravel.com/docs/telescope" class="underline">Telescope</a>, and more.
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-
-                <div class="flex justify-center mt-4 sm:items-center sm:justify-between">
-                    <div class="text-center text-sm text-gray-500 sm:text-left">
-                        <div class="flex items-center">
-                            <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor" class="-mt-px w-5 h-5 text-gray-400">
-                                <path d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
-                            </svg>
-
-                            <a href="https://laravel.bigcartel.com" class="ml-1 underline">
-                                Shop
-                            </a>
-
-                            <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="ml-4 -mt-px w-5 h-5 text-gray-400">
-                                <path d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"></path>
-                            </svg>
-
-                            <a href="https://github.com/sponsors/taylorotwell" class="ml-1 underline">
-                                Sponsor
-                            </a>
-                        </div>
-                    </div>
-
-                    <div class="ml-4 text-center text-sm text-gray-500 sm:text-right sm:ml-0">
-                        Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }})
-                    </div>
-                </div>
-            </div>
-        </div>
-    </body>
-</html>
Index: routes/web.php
===================================================================
--- routes/web.php	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ routes/web.php	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -14,5 +14,25 @@
 */
 
-Route::get('/', function () {
-    return view('welcome');
+////////////////////
+// Auth Routes
+////////////////////
+Route::prefix('auth')->group(function () {
+
+    Route::get('/login', "Auth\LoginController@showLogin")->name("auth.loginShow");
+    Route::post('/login', "Auth\LoginController@login")->name("auth.login");
+    Route::post('/logout', "Auth\LoginController@logout")->name("auth.logout");
+
+    Route::get('/forgot', "Auth\ForgotPasswordController@showForgotPassword")->name("auth.forgotShow");
+    Route::post('/forgot', "Auth\ForgotPasswordController@forgotPassword")->name("auth.forgot");
+
+    Route::group(['middleware' => "createPassword"], function () {
+        Route::get('/create-password/{id}/{token}', "Auth\CreatePasswordController@showCreatePassword")->name("auth.create-password-show");
+        Route::post('/create-password/{id}/{token}', "Auth\CreatePasswordController@createPassword")->name("auth.create-password");
+    });
+
+    Route::group(['middleware' => "checkVerifyNewEmail"], function () {
+        Route::get('/verify/{id}/{token}', "Auth\VerifyNewEmailController@create")->name("auth.verifyShow");
+        Route::post('/verify/{id}/{token}', "Auth\VerifyNewEmailController@verify")->name("auth.verify");
+    });
+
 });
Index: webpack.mix.js
===================================================================
--- webpack.mix.js	(revision 2fc88eca8e50b236d520d00f243f96eef97ae67f)
+++ webpack.mix.js	(revision 7304c7f4e9d471fa8974c193daec4fdd86dabe58)
@@ -12,6 +12,11 @@
  */
 
-mix.js('resources/js/app.js', 'public/js')
-    .postCss('resources/css/app.css', 'public/css', [
-        //
-    ]);
+mix.js('resources/assets/js/app.js', 'public/assets/js')
+    .sass('resources/assets/sass/app.scss', 'public/assets/css');
+
+mix.styles([
+    'resources/assets/css/app.css'
+],  'public/assets/css/app.min.css');
+
+mix.copy(['resources/assets/media/images'
+],  'public/assets/media/images');
